diff --git a/.gitattributes b/.gitattributes index 4e3ed25..85f26af 100644 --- a/.gitattributes +++ b/.gitattributes @@ -41,3 +41,8 @@ *.win filter=lfs diff=lfs merge=lfs -text *.win2 filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text +*.ddt filter=lfs diff=lfs merge=lfs -text +*.i64 filter=lfs diff=lfs merge=lfs -text +*.h1024 filter=lfs diff=lfs merge=lfs -text +*.cdf filter=lfs diff=lfs merge=lfs -text +*.meta filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..82eac75 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# 运行产物(编译/运行/调试生成,不入库) +build-artifacts/*.log +build-artifacts/*.txt +build-artifacts/*.bin +build-artifacts/*.bmp +build-artifacts/*.png +build-artifacts/*.rgb +build-artifacts/*.exe +build-artifacts/*.dll +build-artifacts/demo3_* +build-artifacts/tsdk_* +build-artifacts/official_* +build-artifacts/type1_* + +# 但保留核心数据文件(git add -f 或下面白名单) +!build-artifacts/mag160c_official.ddt +!build-artifacts/mag160c_official_nuc_gain.bin +!build-artifacts/mag160c_official_nuc_thr.bin +!build-artifacts/mag160c_demo3.exe +!build-artifacts/tsdk_pair2.exe +!build-artifacts/tsdk_pair2_fixed.exe +!build-artifacts/tsdk_pair3.exe +!build-artifacts/libusb-1.0.dll +!build-artifacts/libusb0.dll + +# 临时/系统 +*.tmp +Thumbs.db +Desktop.ini +.vscode/ +.idea/ + +# Python +__pycache__/ +*.pyc diff --git a/README.md b/README.md index 2a0f7bf..d604850 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,64 @@ # MAG160C 热像仪逆向工程 -本仓库记录 MAG160C 热像仪的 USB 协议、官方 Windows/Android SDK 逆向结果、纯 C SDK、官方渲染管线分析、抓帧数据和 demo3 实机调试过程。 +MAG160C 热像仪(160×120,USB VID 0x833C)的 USB 协议、官方 SDK 逆向、纯 C SDK +和**官方渲染管线逐像素复刻**(demo3 v5)的完整工程。 ## 从这里开始 -新接手者先阅读: +新接手者按顺序阅读: -1. `交接_完整逆向工程说明_20260811.md` -2. `analysis/handoff_20260813.md` -3. `analysis/handoff_20260811_full.md` -4. `analysis/protocol_spec.md` -5. `csdk/tools/mag160c_demo3.c` +1. `analysis/reverse_20260813_full.md` — 官方管线 Ghidra 全量逆向 + 鬼影根因(最新) +2. `analysis/session_state.md` — 当前会话状态与恢复点(心跳锚点) +3. `交接_完整逆向工程说明_20260811.md` — 项目总交接(目录/环境/历史/失败路线) +4. `analysis/protocol_spec.md` — USB 协议/帧/命令/温度规格 +5. `csdk/README.md` — **C SDK 完整使用文档**(构建/API/工具/测试) +6. `csdk/tools/mag160c_demo3.c` — 主程序(官方管线复刻) -完整交接文档包含目录说明、环境部署、官方管线结论、当前源码状态、已失败方案、剩余问题和给下一位 AI 的接手提示词。 +## 当前状态(2026-08-13) -## 当前硬件 +- demo3 v5 已完整复刻官方渲染管线:DDT 校准表加载 → 快门驱动端点选择与 + Q12 插值 → ref=FFC 窗口 4×type1 帧均值 → NUC 查表 → 盲元补偿 → + 窗口 → LUT1024 重建 → 灰度 → 2x 升采样 → 官方调色板 +- 逐像素验证:NUC+盲元 0/19200、插值 0 误差、2x 0/76800、窗口一致 +- 同静态场景 gray 直方图与官方相关性 0.92(跨会话) +- 原"鬼影"问题的根因已定位并复刻官方行为(见 reverse_20260813_full.md §7) -- 设备:MAG160C 热像仪 -- 分辨率:160×120 -- USB VID:`0x833C` -- 常见 PID:`0x0001` -- 原始帧:19200 个小端 `uint16` -- 实时帧端点:`0x81` -- 命令端点:`0x03`,响应端点:`0x82` +## 硬件 -## 当前演示程序 +- 设备:MAG160C 热像仪,分辨率 160×120,15 fps +- USB VID:`0x833C`,常见 PID:`0x0001` +- 帧:19200 个小端 `uint16`;端点:命令 `0x03`/响应 `0x82`/实时帧 `0x81` -- 源码:`csdk/tools/mag160c_demo3.c` -- 程序:`build-artifacts/mag160c_demo3.exe` -- 运行目录:`build-artifacts` -- 官方 NUC 表:`build-artifacts/mag160c_official_nuc_gain.bin`、`build-artifacts/mag160c_official_nuc_thr.bin` +## 快速入口 -编译和启动命令见完整交接文档。不要在没有阅读交接文档的情况下继续调窗口、调色板或显示层去鬼影。 +```powershell +# 编译 demo3(官方管线复刻) +gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" ` + -o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c ` + csdk\src\mag160c_display.c csdk\src\mag160c_error.c ` + csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32 + +# 启动 +Start-Process "build-artifacts\mag160c_demo3.exe" -WorkingDirectory "build-artifacts" +``` + +详细用法见 `csdk/README.md`。 + +## 仓库结构 + +| 路径 | 用途 | +|---|---| +| `csdk/` | 纯 C SDK + 工具(见 `csdk/README.md`)| +| `analysis/` | 逆向证据:反编译导出(`ida/`)、协议规格、交接文档、抓帧数据 | +| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK | +| `build-artifacts/` | 运行目录(demo3 exe、DDT 表、官方抓帧工具)| +| `docs/` `vendor-docs/` `app/` | 历史资料与模块文档 | +| `tools/resume_rev.ps1` | 会话恢复脚本(心跳配套)| + +历史文档(早期 findings/progress/task_plan、根目录抓帧残留)已归档到 +`analysis/history/`;早期探索工具源码在 `csdk/tools/legacy/`。 ## 仓库说明 -仓库包含官方 SDK、第三方依赖、二进制样本和抓帧数据。部分内容可能受原厂许可限制,仅用于本项目的互操作性研究和设备调试。大型文件使用 Git LFS。 +仓库包含官方 SDK、第三方依赖、二进制样本和抓帧数据。部分内容可能受原厂 +许可限制,仅用于本项目的互操作性研究和设备调试。大型文件使用 Git LFS。 diff --git a/findings.md b/analysis/history/findings_20260810.md similarity index 100% rename from findings.md rename to analysis/history/findings_20260810.md diff --git a/frame_stats.txt b/analysis/history/frame_stats_20260811.txt similarity index 100% rename from frame_stats.txt rename to analysis/history/frame_stats_20260811.txt diff --git a/progress.md b/analysis/history/progress_20260810.md similarity index 100% rename from progress.md rename to analysis/history/progress_20260810.md diff --git a/task_plan.md b/analysis/history/task_plan_20260714.md similarity index 100% rename from task_plan.md rename to analysis/history/task_plan_20260714.md diff --git a/analysis/ida/Core160043865.ddt b/analysis/ida/Core160043865.ddt new file mode 100644 index 0000000..1289070 Binary files /dev/null and b/analysis/ida/Core160043865.ddt differ diff --git a/analysis/ida/CoreSDKLib.dll b/analysis/ida/CoreSDKLib.dll new file mode 100644 index 0000000..e76df6b --- /dev/null +++ b/analysis/ida/CoreSDKLib.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad837211fa4ef876b0b5a675c9207610b0c6d6fba2053db82e6678e37bfb22d6 +size 490496 diff --git a/analysis/ida/CoreSDKLib.dll.i64 b/analysis/ida/CoreSDKLib.dll.i64 new file mode 100644 index 0000000..614c726 Binary files /dev/null and b/analysis/ida/CoreSDKLib.dll.i64 differ diff --git a/analysis/ida/README.md b/analysis/ida/README.md new file mode 100644 index 0000000..dfa62fe --- /dev/null +++ b/analysis/ida/README.md @@ -0,0 +1,51 @@ +# IDA / Ghidra 逆向工具链(2026-08-13 部署) + +## 已安装工具 + +| 工具 | 位置 | 用途 | +|---|---|---| +| IDA Free 8.4 | `C:\Program Files\IDA Freeware 8.4\ida64.exe` | x86/x64 交互分析,F5 反编译(GUI 内),不支持批处理 | +| Ghidra 12.1.2 | `C:\Tools\ghidra_12.1.2_PUBLIC` | ARM64/任意架构批处理反编译,headless 自动建库 | +| Java | `C:\Program Files\Zulu\zulu-21` | Ghidra 需要,不在 PATH,需设 `JAVA_HOME` | + +## 限制说明 + +- IDA Free 8.4 只支持 x86/x64(官方页面确认),不支持 ARM;不支持批处理模式(`-A` 直接报 "does not support the batch mode")。 +- IDA Free 的 IDC 是半残的:`get_func`/`get_first_func`/`decompile()` 文本导出不可用(`decompile` 返回不透明对象,无法转文本)。可用的迭代 API 是 `get_next_func(ea)` / `get_prev_func(ea)`,配 `get_func_attr(ea, FUNCATTR_START/END)`。 +- IDA Free 反编译器(hexx64/hexarm64)已注册,但只能在 GUI 里按 F5 查看,无法脚本导出伪代码。伪代码批量导出请用 Ghidra。 + +## 目录内容 + +- `CoreSDKLib.dll.i64` / `ThermalSDK.dll.i64` / `libthermalSDK.so.i64`:IDA 数据库(GUI 打开 .i64 即可,分析已跑完)。 +- `export/coresdk_keyfuncs_disasm.txt`:CoreSDKLib.dll 12 个关键函数反汇编 + xrefs(NUC 0x180017200、盲元 0x180017330、温度端点 0x180016ae0、阈值插值 0x180016dd0、gain/off 插值 0x180016f10、表重建 0x18000c760、ref 推送 0x18000c620、平滑器 0x1800011a0、temporal 0x18001e920、FFC 0x18000a1d2/0x180002f50、温度 0x180010780)。 +- `export/thermalsdk_dll/`:ThermalSDK.dll 全量(368 函数)。 +- `export/thermalsdk_so/`:libthermalSDK.so 全量(5150 函数,带完整符号:`MAG_Initialize`、`MAG_NewChannel`、`ThermalController::*` 等)。 +- `export/ghidra_dump/`:Ghidra 伪代码全量导出。 + - `all_functions_decomp_libcoresdk_arm64.so_00100000.txt`(21.6MB,7117 函数):ARM64 全量 C 伪代码,含 JNI(`Java_cn_com_magnity_coresdk_MagDevice_*`)和温度函数(`ConvertInnerTemp2mC`、`GetTemperatureProbe`、`GetLineTemperatureInfo` 等)。 + - `all_functions_decomp_libmagcore.so_00100000.txt`(937KB,841 函数)。 + +## 使用方式 + +### IDA GUI(交互分析 x86/x64) + +```powershell +Start-Process "C:\Program Files\IDA Freeware 8.4\ida64.exe" -ArgumentList '"C:\Project\MAG160C\analysis\ida\CoreSDKLib.dll.i64"' +``` + +打开 .i64 后:F5 看伪代码,按地址跳转 `G`,交叉引用 `X`。 +要重新对某个函数导出反汇编文本:Alt+F7 运行 `export_core_disasm.idc`(会重写 export/coresdk_keyfuncs_disasm.txt)。 +新 DLL 建库:File→Open 选 .dll,默认选项,等 Idle 后 Alt+F7 运行 `export_all.idc`(全量导出到 export/),Ctrl+W 保存。 + +### Ghidra headless(批处理任意架构) + +```powershell +$env:JAVA_HOME = "C:\Program Files\Zulu\zulu-21" +& "C:\Tools\ghidra_12.1.2_PUBLIC\support\analyzeHeadless.bat" "C:\Tools\ghidra_proj" mag160c -import "文件路径" -overwrite +& "C:\Tools\ghidra_12.1.2_PUBLIC\support\analyzeHeadless.bat" "C:\Tools\ghidra_proj" mag160c -process "文件名" -noanalysis -scriptPath "C:\Tools\ghidra_12.1.2_PUBLIC\scripts" -postScript ExportAllDecomp +``` + +导出脚本:`C:\Tools\ghidra_12.1.2_PUBLIC\scripts\ExportAllDecomp.java`(全函数伪代码 + 函数表,按程序名+基址命名输出到 export/ghidra_dump/)。 + +## 与旧 objdump 反汇编的关系 + +`analysis/disasm/` 下旧的 `coresdk_windows_disasm.txt`(193k 行 objdump 输出)仍有效,与本目录 IDA 导出相互印证。地址基址一致:Windows DLL 0x180000000,ARM64 .so 0x100000。 diff --git a/analysis/ida/ThermalSDK.dll b/analysis/ida/ThermalSDK.dll new file mode 100644 index 0000000..ccf2e99 --- /dev/null +++ b/analysis/ida/ThermalSDK.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9e0de8f55826cc9ce4e5fec50e8327cb187ebaa2cc512d32910e242cdea4244 +size 90112 diff --git a/analysis/ida/ThermalSDK.dll.i64 b/analysis/ida/ThermalSDK.dll.i64 new file mode 100644 index 0000000..fdb3104 Binary files /dev/null and b/analysis/ida/ThermalSDK.dll.i64 differ diff --git a/analysis/ida/export/coresdk_keyfuncs_disasm.txt b/analysis/ida/export/coresdk_keyfuncs_disasm.txt new file mode 100644 index 0000000..bf919ea --- /dev/null +++ b/analysis/ida/export/coresdk_keyfuncs_disasm.txt @@ -0,0 +1,1461 @@ +### FUNC 180017200 - 180017329 (297 bytes) name=sub_180017200 +180017200: mov [rsp+arg_8], rbx +180017205: mov [rsp+arg_10], rbp +18001720A: mov [rsp+arg_18], rsi +18001720F: push rdi +180017210: push r13 +180017212: push r14 +180017214: push r15 +180017216: mov rbp, [rcx+41858h] +18001721D: mov rsi, rdx +180017220: xor edx, edx +180017222: cmp [rcx+41F0Ch], edx +180017228: jz short loc_180017233 +18001722A: mov rdi, [rcx+41EF0h] +180017231: jmp short loc_180017236 +180017233: mov rdi, rdx +180017236: mov ebx, [rcx+47938h] +18001723C: mov r10d, [rcx+41554h] +180017243: mov r13, [rcx+41870h] +18001724A: mov r14d, [rcx+11Ch] +180017251: mov r11, [rcx+270h] +180017258: sub r10d, 1 +18001725C: test ebx, ebx +18001725E: lea r15d, [rbx+rbx] +180017262: jz loc_180017312 +180017268: mov [rsp+20h+arg_0], r12 +18001726D: mov r12d, r10d +180017270: add r12, r12 +180017273: nop +180017274: xchg ax, ax +180017278: xchg ax, ax +18001727C: xchg ax, ax +180017280: movzx eax, word ptr [rdi] +180017283: movzx r8d, word ptr [rsi] +180017287: add rdi, 2 +18001728B: sub r8d, eax +18001728E: add rsi, 2 +180017292: sar r8d, 1 +180017295: test r10d, r10d +180017298: jz short loc_1800172B4 +18001729A: mov rcx, rbp +18001729D: xchg ax, ax +1800172A0: movsx eax, word ptr [rcx] +1800172A3: cmp r8d, eax +1800172A6: jle short loc_1800172B4 +1800172A8: add edx, 1 +1800172AB: add rcx, 2 +1800172AF: cmp edx, r10d +1800172B2: jb short loc_1800172A0 +1800172B4: imul edx, r15d +1800172B8: mov ecx, r14d +1800172BB: add rbp, r12 +1800172BE: movzx r9d, word ptr [r13+rdx*2+0] +1800172C4: movzx eax, word ptr [r13+rdx*2+2] +1800172CA: lea rdx, [r13+rdx*2+0] +1800172CF: imul r9d, r8d +1800172D3: sar r9d, cl +1800172D6: add r13, 4 +1800172DA: add r9d, eax +1800172DD: cmp r9d, 0FFFFh +1800172E4: jle short loc_1800172F0 +1800172E6: xor edx, edx +1800172E8: mov r9d, 0FFFFh +1800172EE: jmp short loc_1800172FC +1800172F0: test r9d, r9d +1800172F3: mov edx, 0 +1800172F8: cmovs r9d, edx +1800172FC: mov [r11], r9w +180017300: add r11, 2 +180017304: add ebx, 0FFFFFFFFh +180017307: jnz loc_180017280 +18001730D: mov r12, [rsp+20h+arg_0] +180017312: mov rbx, [rsp+20h+arg_8] +180017317: mov rbp, [rsp+20h+arg_10] +18001731C: mov rsi, [rsp+20h+arg_18] +180017321: pop r15 +180017323: pop r14 +180017325: pop r13 +180017327: pop rdi +180017328: retn + + data refs from: + 180066084 + 180066098 + 1800DD044 + code refs from: + 18000C9A2 (func 18000C950) + 18000C9FA (func 18000C950) + +================================================================== + +### FUNC 180017330 - 18001759C (620 bytes) name=sub_180017330 +180017330: push rbx +180017332: mov eax, [rcx+41840h] +180017338: mov r9, [rcx+41878h] +18001733F: xor r11d, r11d +180017342: mov ebx, [rcx+rax*4+41654h] +180017349: mov r10, rdx +18001734C: test ebx, ebx +18001734E: jz loc_180017581 +180017354: mov [rsp+8+arg_0], rdi +180017359: lea rdi, __ImageBase +180017360: mov eax, [r9+4] +180017364: add eax, 0FFFFFFFDh; switch 6 cases +180017367: cmp eax, 5 +18001736A: ja def_18001737A; jumptable 000000018001737A default case +180017370: mov ecx, ds:(jpt_18001737A - 180000000h)[rdi+rax*4] +180017377: add rcx, rdi +18001737A: jmp rcx; switch jump +18001737C: mov eax, [r9+20h]; jumptable 000000018001737A case 8 +180017380: movzx edx, word ptr [r10+rax*2] +180017385: mov eax, [r9+1Ch] +180017389: movzx ecx, word ptr [r10+rax*2] +18001738E: mov eax, [r9+18h] +180017392: add edx, ecx +180017394: movzx ecx, word ptr [r10+rax*2] +180017399: mov eax, [r9+14h] +18001739D: add edx, ecx +18001739F: movzx ecx, word ptr [r10+rax*2] +1800173A4: mov eax, [r9+10h] +1800173A8: add edx, ecx +1800173AA: movzx ecx, word ptr [r10+rax*2] +1800173AF: mov eax, [r9+0Ch] +1800173B3: add edx, ecx +1800173B5: movzx ecx, word ptr [r10+rax*2] +1800173BA: mov eax, [r9+8] +1800173BE: add edx, ecx +1800173C0: movzx ecx, word ptr [r10+rax*2] +1800173C5: mov eax, [r9+24h] +1800173C9: add edx, ecx +1800173CB: movzx ecx, word ptr [r10+rax*2] +1800173D0: mov eax, [r9] +1800173D3: add edx, ecx +1800173D5: sar edx, 3 +1800173D8: mov [r10+rax*2], dx +1800173DD: jmp loc_18001756B +1800173E2: mov eax, [r9+20h]; jumptable 000000018001737A case 7 +1800173E6: movzx r8d, word ptr [r10+rax*2] +1800173EB: mov eax, [r9+1Ch] +1800173EF: movzx ecx, word ptr [r10+rax*2] +1800173F4: mov eax, [r9+18h] +1800173F8: add r8d, ecx +1800173FB: movzx ecx, word ptr [r10+rax*2] +180017400: mov eax, [r9+14h] +180017404: add r8d, ecx +180017407: movzx ecx, word ptr [r10+rax*2] +18001740C: mov eax, [r9+10h] +180017410: add r8d, ecx +180017413: movzx ecx, word ptr [r10+rax*2] +180017418: mov eax, [r9+0Ch] +18001741C: add r8d, ecx +18001741F: movzx ecx, word ptr [r10+rax*2] +180017424: mov eax, [r9+8] +180017428: add r8d, ecx +18001742B: movzx ecx, word ptr [r10+rax*2] +180017430: mov eax, 92492493h +180017435: add r8d, ecx +180017438: imul r8d +18001743B: add edx, r8d +18001743E: sar edx, 2 +180017441: mov eax, edx +180017443: shr eax, 1Fh +180017446: add edx, eax +180017448: mov eax, [r9] +18001744B: mov [r10+rax*2], dx +180017450: jmp loc_18001756B +180017455: mov eax, [r9+1Ch]; jumptable 000000018001737A case 6 +180017459: movzx edx, word ptr [r10+rax*2] +18001745E: mov eax, [r9+18h] +180017462: movzx ecx, word ptr [r10+rax*2] +180017467: mov eax, [r9+14h] +18001746B: add edx, ecx +18001746D: movzx ecx, word ptr [r10+rax*2] +180017472: mov eax, [r9+10h] +180017476: add edx, ecx +180017478: movzx ecx, word ptr [r10+rax*2] +18001747D: mov eax, [r9+0Ch] +180017481: add edx, ecx +180017483: movzx ecx, word ptr [r10+rax*2] +180017488: mov eax, [r9+8] +18001748C: add edx, ecx +18001748E: movzx ecx, word ptr [r10+rax*2] +180017493: mov eax, 2AAAAAABh +180017498: add edx, ecx +18001749A: imul edx +18001749C: mov eax, edx +18001749E: shr eax, 1Fh +1800174A1: add edx, eax +1800174A3: mov eax, [r9] +1800174A6: mov [r10+rax*2], dx +1800174AB: jmp loc_18001756B +1800174B0: mov eax, [r9+18h]; jumptable 000000018001737A case 5 +1800174B4: movzx edx, word ptr [r10+rax*2] +1800174B9: mov eax, [r9+14h] +1800174BD: movzx ecx, word ptr [r10+rax*2] +1800174C2: mov eax, [r9+10h] +1800174C6: add edx, ecx +1800174C8: movzx ecx, word ptr [r10+rax*2] +1800174CD: mov eax, [r9+0Ch] +1800174D1: add edx, ecx +1800174D3: movzx ecx, word ptr [r10+rax*2] +1800174D8: mov eax, [r9+8] +1800174DC: add edx, ecx +1800174DE: movzx ecx, word ptr [r10+rax*2] +1800174E3: mov eax, 66666667h +1800174E8: add edx, ecx +1800174EA: imul edx +1800174EC: sar edx, 1 +1800174EE: mov eax, edx +1800174F0: shr eax, 1Fh +1800174F3: add edx, eax +1800174F5: mov eax, [r9] +1800174F8: mov [r10+rax*2], dx +1800174FD: jmp short loc_18001756B +1800174FF: mov eax, [r9+14h]; jumptable 000000018001737A case 4 +180017503: movzx edx, word ptr [r10+rax*2] +180017508: mov eax, [r9+10h] +18001750C: movzx ecx, word ptr [r10+rax*2] +180017511: mov eax, [r9+0Ch] +180017515: add edx, ecx +180017517: movzx ecx, word ptr [r10+rax*2] +18001751C: mov eax, [r9+8] +180017520: add edx, ecx +180017522: movzx ecx, word ptr [r10+rax*2] +180017527: mov eax, [r9] +18001752A: add edx, ecx +18001752C: sar edx, 2 +18001752F: mov [r10+rax*2], dx +180017534: jmp short loc_18001756B +180017536: mov eax, [r9+10h]; jumptable 000000018001737A case 3 +18001753A: movzx edx, word ptr [r10+rax*2] +18001753F: mov eax, [r9+0Ch] +180017543: movzx ecx, word ptr [r10+rax*2] +180017548: mov eax, [r9+8] +18001754C: add edx, ecx +18001754E: movzx ecx, word ptr [r10+rax*2] +180017553: mov eax, 55555556h +180017558: add edx, ecx +18001755A: imul edx +18001755C: mov eax, edx +18001755E: shr eax, 1Fh +180017561: add edx, eax +180017563: mov eax, [r9] +180017566: mov [r10+rax*2], dx +18001756B: add r11d, 1 +18001756F: add r9, 28h ; '(' +180017573: cmp r11d, ebx +180017576: jb loc_180017360 +18001757C: mov rdi, [rsp+8+arg_0]; jumptable 000000018001737A default case +180017581: pop rbx +180017582: retn +180017583: align 4 +180017584: dd offset loc_180017536 - 180000000h; jump table for switch statement + + data refs from: + 180065AB8 + 180065AC8 + 180065ADC + 1800DD068 + code refs from: + 18000C9B1 (func 18000C950) + 18000CA09 (func 18000C950) + +================================================================== + +### FUNC 180016AE0 - 180016D5E (638 bytes) name=sub_180016AE0 +180016AE0: mov rax, rsp +180016AE3: push r12 +180016AE5: push r13 +180016AE7: push r14 +180016AE9: sub rsp, 60h +180016AED: mov [rsp+78h+var_58], 0FFFFFFFFFFFFFFFEh +180016AF6: mov [rax+8], rbx +180016AFA: mov [rax+10h], rsi +180016AFE: mov [rax+18h], rdi +180016B02: mov rbx, rcx +180016B05: xor r14d, r14d +180016B08: mov [rcx+41348h], r14d +180016B0F: mov edi, r14d +180016B12: cmp dword ptr [rcx+41558h], 2 +180016B19: jz short loc_180016B3D +180016B1B: mov edx, [rcx+54h] +180016B1E: add rcx, 41568h +180016B25: cmp edx, [rcx] +180016B27: jle short loc_180016B3D +180016B29: add edi, 1 +180016B2C: add rcx, 4 +180016B30: mov eax, [rbx+41558h] +180016B36: sub eax, 2 +180016B39: cmp edi, eax +180016B3B: jb short loc_180016B25 +180016B3D: mov [rbx+41840h], edi +180016B43: mov eax, [rbx+41554h] +180016B49: lea ecx, [rax+rax*2-1] +180016B4D: imul ecx, [rbx+47938h] +180016B54: mov eax, [rbx+41560h] +180016B5A: lea r13d, [rax+rcx*2] +180016B5E: add r13d, [rbx+4155Ch] +180016B65: mov eax, [rbx+41840h] +180016B6B: add eax, 1 +180016B6E: cmp edi, eax +180016B70: ja loc_180016CC6 +180016B76: mov esi, edi +180016B78: cmp dword ptr [rbx+rsi*4+416B8h], 0 +180016B80: jnz loc_180016CBE +180016B86: lea rcx, [rsp+78h+var_38]; this +180016B8B: call ??0CFile@@QEAA@XZ; CFile::CFile(void) +180016B90: nop +180016B91: lea rdx, [rbx+4134Ch]; wchar_t * +180016B98: xor r9d, r9d; struct CFileException * +180016B9B: lea r8d, [r9+40h]; unsigned int +180016B9F: lea rcx, [rsp+78h+var_38]; this +180016BA4: call ?Open@CFile@@UEAAHPEB_WIPEAVCFileException@@@Z; CFile::Open(wchar_t const *,uint,CFileException *) +180016BA9: test eax, eax +180016BAB: jnz short loc_180016BBC +180016BAD: lea rcx, [rsp+78h+var_38]; this +180016BB2: call ??1CFile@@UEAA@XZ; CFile::~CFile(void) +180016BB7: jmp loc_180016D43 +180016BBC: lea rcx, [rsp+78h+var_48]; this +180016BC1: call ??0AFX_EXCEPTION_LINK@@QEAA@XZ; AFX_EXCEPTION_LINK::AFX_EXCEPTION_LINK(void) +180016BC6: nop +180016BC7: mov edx, [rbx+rsi*4+41708h]; __int64 +180016BCE: xor r8d, r8d; unsigned int +180016BD1: lea rcx, [rsp+78h+var_38]; this +180016BD6: call ?Seek@CFile@@UEAA_K_JI@Z; CFile::Seek(__int64,uint) +180016BDB: mov edx, [rbx+rsi*4+41758h] +180016BE2: add rdx, [rbx+416A0h]; void * +180016BE9: mov r8d, r13d; unsigned int +180016BEC: lea rcx, [rsp+78h+var_38]; this +180016BF1: call ?Read@CFile@@UEAAIPEAXI@Z; CFile::Read(void *,uint) +180016BF6: mov r12d, 1 +180016BFC: cmp eax, r13d +180016BFF: cmovnz r12d, r14d +180016C03: cmp dword ptr [rbx+rsi*4+41654h], 0 +180016C0B: jbe short loc_180016C6F +180016C0D: mov eax, [rbx+41558h] +180016C13: sub eax, 2 +180016C16: cmp edi, eax +180016C18: ja short loc_180016C6F +180016C1A: mov edx, [rbx+rsi*4+417A8h]; __int64 +180016C21: xor r8d, r8d; unsigned int +180016C24: lea rcx, [rsp+78h+var_38]; this +180016C29: call ?Seek@CFile@@UEAA_K_JI@Z; CFile::Seek(__int64,uint) +180016C2E: mov eax, [rbx+rsi*4+41654h] +180016C35: lea r8d, [rax+rax*4] +180016C39: shl r8d, 3; unsigned int +180016C3D: mov edx, [rbx+rsi*4+417F4h] +180016C44: add rdx, [rbx+416B0h]; void * +180016C4B: lea rcx, [rsp+78h+var_38]; this +180016C50: call ?Read@CFile@@UEAAIPEAXI@Z; CFile::Read(void *,uint) +180016C55: mov ecx, [rbx+rsi*4+41654h] +180016C5C: lea edx, [rcx+rcx*4] +180016C5F: lea ecx, [rdx+rdx] +180016C62: shl rcx, 2 +180016C66: mov eax, eax +180016C68: cmp rax, rcx +180016C6B: cmovnz r12d, r14d +180016C6F: call ?AfxTryCleanup@@YAXXZ; AfxTryCleanup(void) +180016C74: lea rcx, [rsp+78h+var_38]; this +180016C79: call ?Close@CFile@@UEAAXXZ; CFile::Close(void) +180016C7E: test r12d, r12d +180016C81: jz short loc_180016C9A +180016C83: mov dword ptr [rbx+rsi*4+416B8h], 1 +180016C8E: lea rcx, [rsp+78h+var_38]; this +180016C93: call ??1CFile@@UEAA@XZ; CFile::~CFile(void) +180016C98: jmp short loc_180016CBE +180016C9A: lea rcx, [rsp+78h+var_38]; this +180016C9F: call ??1CFile@@UEAA@XZ; CFile::~CFile(void) +180016CA4: jmp loc_180016D43 +180016CA9: call ?AfxTryCleanup@@YAXXZ; AfxTryCleanup(void) +180016CAE: nop +180016CAF: lea rcx, [rsp+78h+var_38]; this +180016CB4: call ??1CFile@@UEAA@XZ; CFile::~CFile(void) +180016CB9: jmp loc_180016D43 +180016CBE: add edi, 1 +180016CC1: jmp loc_180016B65 +180016CC6: mov r9d, [rbx+41840h] +180016CCD: mov r8, [rbx+416A0h] +180016CD4: mov ecx, [rbx+r9*4+41758h] +180016CDC: add rcx, r8 +180016CDF: mov [rbx+41848h], rcx +180016CE6: mov edx, [rbx+41554h] +180016CEC: sub edx, 1 +180016CEF: imul edx, [rbx+47938h] +180016CF6: mov eax, [rbx+4155Ch] +180016CFC: shr rax, 1 +180016CFF: add rdx, rax +180016D02: lea rax, [rcx+rdx*2] +180016D06: mov [rbx+41860h], rax +180016D0D: lea eax, [r9+1] +180016D11: mov ecx, [rbx+rax*4+41758h] +180016D18: add rcx, r8 +180016D1B: mov [rbx+41850h], rcx +180016D22: lea rax, [rcx+rdx*2] +180016D26: mov [rbx+41868h], rax +180016D2D: mov eax, [rbx+r9*4+417F4h] +180016D35: add rax, [rbx+416B0h] +180016D3C: mov [rbx+41878h], rax +180016D43: lea r11, [rsp+78h+var_18] +180016D48: mov rbx, [r11+20h] +180016D4C: mov rsi, [r11+28h] +180016D50: mov rdi, [r11+30h] +180016D54: mov rsp, r11 +180016D57: pop r14 +180016D59: pop r13 +180016D5B: pop r12 +180016D5D: retn + + data refs from: + 180066134 + 1800DCFE4 + code refs from: + 18000C7A3 (func 18000C760) + +================================================================== + +### FUNC 180016DD0 - 180016F0C (316 bytes) name=sub_180016DD0 +180016DD0: mov [rsp+arg_0], rbx +180016DD5: mov [rsp+arg_8], rsi +180016DDA: mov [rsp+arg_10], rdi +180016DDF: mov edi, [rcx+54h] +180016DE2: xor esi, esi +180016DE4: mov r10, r8 +180016DE7: cmp edi, [rcx+41564h] +180016DED: mov r11, rdx +180016DF0: mov rbx, rcx +180016DF3: jl short loc_180016E07 +180016DF5: mov eax, [rcx+41558h] +180016DFB: sub eax, 1 +180016DFE: cmp edi, [rcx+rax*4+41564h] +180016E05: jle short loc_180016E0C +180016E07: mov esi, 1 +180016E0C: mov ecx, [rcx+41840h] +180016E12: mov r8d, [rbx+rcx*4+41564h] +180016E1A: add ecx, 1 +180016E1D: mov ecx, [rbx+rcx*4+41564h] +180016E24: sub edi, r8d +180016E27: sub ecx, r8d +180016E2A: shl edi, 0Ch +180016E2D: mov eax, edi +180016E2F: cdq +180016E30: idiv ecx +180016E32: cmp eax, 4000h +180016E37: mov r8d, eax +180016E3A: jl short loc_180016E44 +180016E3C: mov r8d, 3FFFh +180016E42: jmp short loc_180016E54 +180016E44: mov eax, 0FFFFC001h +180016E49: cmp r8d, 0FFFFC000h +180016E50: cmovle r8d, eax +180016E54: test esi, esi +180016E56: mov edx, [rsp+arg_20] +180016E5A: jnz short loc_180016EAA +180016E5C: test edx, edx +180016E5E: jz loc_180016EFC +180016E64: xchg ax, ax +180016E68: xchg ax, ax +180016E6C: xchg ax, ax +180016E70: movsx ecx, word ptr [r11] +180016E74: movsx eax, word ptr [r10] +180016E78: add r9, 2 +180016E7C: sub eax, ecx +180016E7E: add r11, 2 +180016E82: add r10, 2 +180016E86: imul eax, r8d +180016E8A: sar eax, 0Ch +180016E8D: add ax, cx +180016E90: add edx, 0FFFFFFFFh +180016E93: mov [r9-2], ax +180016E98: jnz short loc_180016E70 +180016E9A: mov rbx, [rsp+arg_0] +180016E9F: mov rsi, [rsp+arg_8] +180016EA4: mov rdi, [rsp+arg_10] +180016EA9: retn +180016EAA: test edx, edx +180016EAC: jz short loc_180016EFC +180016EAE: mov ebx, 0FFFF8000h +180016EB3: nop +180016EB4: xchg ax, ax +180016EB8: xchg ax, ax +180016EBC: xchg ax, ax +180016EC0: movsx eax, word ptr [r11] +180016EC4: movsx ecx, word ptr [r10] +180016EC8: add r11, 2 +180016ECC: sub ecx, eax +180016ECE: add r10, 2 +180016ED2: imul ecx, r8d +180016ED6: sar ecx, 0Ch +180016ED9: add ecx, eax +180016EDB: cmp ecx, 7FFFh +180016EE1: jle short loc_180016EEA +180016EE3: mov ecx, 7FFFh +180016EE8: jmp short loc_180016EEF +180016EEA: cmp ecx, ebx +180016EEC: cmovl ecx, ebx +180016EEF: mov [r9], cx +180016EF3: add r9, 2 +180016EF7: add edx, 0FFFFFFFFh +180016EFA: jnz short loc_180016EC0 +180016EFC: mov rbx, [rsp+arg_0] +180016F01: mov rsi, [rsp+arg_8] +180016F06: mov rdi, [rsp+arg_10] +180016F0B: retn + + data refs from: + 1800DD014 + code refs from: + 18000C8AE (func 18000C760) + +================================================================== + +### FUNC 180016F10 - 180017031 (289 bytes) name=sub_180016F10 +180016F10: mov [rsp+arg_0], rbx +180016F15: mov [rsp+arg_8], rbp +180016F1A: mov [rsp+arg_10], rsi +180016F1F: mov [rsp+arg_18], rdi +180016F24: mov edi, [rcx+54h] +180016F27: xor ebp, ebp +180016F29: mov r10, r8 +180016F2C: cmp edi, [rcx+41564h] +180016F32: mov r11, rdx +180016F35: mov rbx, rcx +180016F38: mov esi, ebp +180016F3A: jl short loc_180016F4E +180016F3C: mov eax, [rcx+41558h] +180016F42: sub eax, 1 +180016F45: cmp edi, [rcx+rax*4+41564h] +180016F4C: jle short loc_180016F53 +180016F4E: mov esi, 1 +180016F53: mov ecx, [rcx+41840h] +180016F59: mov r8d, [rbx+rcx*4+41564h] +180016F61: add ecx, 1 +180016F64: mov ecx, [rbx+rcx*4+41564h] +180016F6B: sub edi, r8d +180016F6E: sub ecx, r8d +180016F71: shl edi, 0Ch +180016F74: mov eax, edi +180016F76: cdq +180016F77: idiv ecx +180016F79: cmp eax, 4000h +180016F7E: mov r8d, eax +180016F81: jl short loc_180016F8B +180016F83: mov r8d, 3FFFh +180016F89: jmp short loc_180016F9B +180016F8B: mov eax, 0FFFFC001h +180016F90: cmp r8d, 0FFFFC000h +180016F97: cmovle r8d, eax +180016F9B: test esi, esi +180016F9D: mov edx, [rsp+arg_20] +180016FA1: jnz short loc_180016FDC +180016FA3: test edx, edx +180016FA5: jz short loc_18001701C +180016FA7: xchg ax, ax +180016FAA: xchg ax, ax +180016FAD: xchg ax, ax +180016FB0: movzx ecx, word ptr [r11] +180016FB4: movzx eax, word ptr [r10] +180016FB8: add r9, 2 +180016FBC: sub eax, ecx +180016FBE: add r11, 2 +180016FC2: add r10, 2 +180016FC6: imul eax, r8d +180016FCA: sar eax, 0Ch +180016FCD: add ax, cx +180016FD0: add edx, 0FFFFFFFFh +180016FD3: mov [r9-2], ax +180016FD8: jnz short loc_180016FB0 +180016FDA: jmp short loc_18001701C +180016FDC: test edx, edx +180016FDE: jz short loc_18001701C +180016FE0: movzx eax, word ptr [r11] +180016FE4: movzx ecx, word ptr [r10] +180016FE8: add r11, 2 +180016FEC: sub ecx, eax +180016FEE: add r10, 2 +180016FF2: imul ecx, r8d +180016FF6: sar ecx, 0Ch +180016FF9: add ecx, eax +180016FFB: cmp ecx, 0FFFFh +180017001: jle short loc_18001700A +180017003: mov ecx, 0FFFFh +180017008: jmp short loc_18001700F +18001700A: test ecx, ecx +18001700C: cmovs ecx, ebp +18001700F: mov [r9], cx +180017013: add r9, 2 +180017017: add edx, 0FFFFFFFFh +18001701A: jnz short loc_180016FE0 +18001701C: mov rbx, [rsp+arg_0] +180017021: mov rbp, [rsp+arg_8] +180017026: mov rsi, [rsp+arg_10] +18001702B: mov rdi, [rsp+arg_18] +180017030: retn + + data refs from: + 1800DD020 + code refs from: + 18000C900 (func 18000C760) + +================================================================== + +### FUNC 18000C760 - 18000C948 (488 bytes) name=sub_18000C760 +18000C760: mov [rsp+arg_18], rbx +18000C765: push rsi +18000C766: push rdi +18000C767: push r12 +18000C769: sub rsp, 30h +18000C76D: mov rdi, rcx +18000C770: add rcx, 238h; lpCriticalSection +18000C777: mov r12d, r8d +18000C77A: mov ebx, edx +18000C77C: call cs:EnterCriticalSection +18000C782: cmp dword ptr [rdi+228h], 0 +18000C789: jz loc_18000C92D +18000C78F: cmp dword ptr [rdi+41340h], 0 +18000C796: jz loc_18000C92D +18000C79C: test ebx, ebx +18000C79E: jnz short loc_18000C7CD +18000C7A0: mov rcx, rdi +18000C7A3: call sub_180016AE0 +18000C7A8: cmp [rdi+41340h], ebx +18000C7AE: jz loc_18000C92D +18000C7B4: cmp [rdi+41344h], ebx +18000C7BA: jz loc_18000C92D +18000C7C0: mov rcx, rdi +18000C7C3: call sub_18000FFB0 +18000C7C8: jmp loc_18000C92D +18000C7CD: mov [rsp+48h+arg_0], rbp +18000C7D2: xor ebp, ebp +18000C7D4: cmp ebx, 1 +18000C7D7: mov [rsp+48h+arg_8], r13 +18000C7DC: mov [rsp+48h+arg_10], r14 +18000C7E1: jnz short loc_18000C847 +18000C7E3: cmp r12d, ebx +18000C7E6: jbe short loc_18000C850 +18000C7E8: mov eax, [rdi+41554h] +18000C7EE: mov r13d, [rdi+47938h] +18000C7F5: lea ecx, [r12-1] +18000C7FA: lea r8d, [rax-1] +18000C7FE: xor edx, edx +18000C800: mov ebx, ebp +18000C802: mov r14d, ebp +18000C805: mov cs:dword_18009A43C, ebp +18000C80B: mov cs:dword_18009A438, ebx +18000C811: imul r8d, r13d +18000C815: imul r13d, eax +18000C819: add r13d, r13d +18000C81C: mov cs:dword_18009A440, r8d +18000C823: lea eax, [r13+r8+0] +18000C828: mov cs:dword_18009A444, r13d +18000C82F: lea eax, [rax+r12-2] +18000C834: div ecx +18000C836: lea r12d, [rax+7] +18000C83A: and r12d, 0FFFFFFF8h +18000C83E: mov cs:dword_18009A448, r12d +18000C845: jmp short loc_18000C872 +18000C847: cmp ebx, 1 +18000C84A: jl loc_18000C91E +18000C850: mov r8d, cs:dword_18009A440 +18000C857: mov r13d, cs:dword_18009A444 +18000C85E: mov r12d, cs:dword_18009A448 +18000C865: mov ebx, cs:dword_18009A438 +18000C86B: mov r14d, cs:dword_18009A43C +18000C872: cmp ebx, r8d +18000C875: jge short loc_18000C8BB +18000C877: mov rax, [rdi+41858h] +18000C87E: movsxd rcx, ebx +18000C881: mov ebp, r8d +18000C884: lea r9, [rax+rcx*2] +18000C888: mov rax, [rdi+41850h] +18000C88F: sub ebp, ebx +18000C891: lea r8, [rax+rcx*2] +18000C895: mov rax, [rdi+41848h] +18000C89C: cmp r12d, ebp +18000C89F: lea rdx, [rax+rcx*2] +18000C8A3: cmovl ebp, r12d +18000C8A7: mov rcx, rdi +18000C8AA: mov [rsp+48h+var_28], ebp +18000C8AE: call sub_180016DD0 +18000C8B3: add ebx, ebp +18000C8B5: mov cs:dword_18009A438, ebx +18000C8BB: cmp ebp, r12d +18000C8BE: jge short loc_18000C91E +18000C8C0: cmp r14d, r13d +18000C8C3: jge short loc_18000C91E +18000C8C5: mov rax, [rdi+41870h] +18000C8CC: movsxd rdx, r14d +18000C8CF: sub r12d, ebp +18000C8D2: lea r9, [rax+rdx*2] +18000C8D6: mov rax, [rdi+41868h] +18000C8DD: mov ebx, r13d +18000C8E0: lea r8, [rax+rdx*2] +18000C8E4: mov rax, [rdi+41860h] +18000C8EB: sub ebx, r14d +18000C8EE: cmp r12d, ebx +18000C8F1: lea rdx, [rax+rdx*2] +18000C8F5: mov rcx, rdi +18000C8F8: cmovl ebx, r12d +18000C8FC: mov [rsp+48h+var_28], ebx +18000C900: call sub_180016F10 +18000C905: add r14d, ebx +18000C908: cmp r14d, r13d +18000C90B: mov cs:dword_18009A43C, r14d +18000C912: jnz short loc_18000C91E +18000C914: mov dword ptr [rdi+41348h], 1 +18000C91E: mov r13, [rsp+48h+arg_8] +18000C923: mov rbp, [rsp+48h+arg_0] +18000C928: mov r14, [rsp+48h+arg_10] +18000C92D: lea rcx, [rdi+238h] +18000C934: mov rbx, [rsp+48h+arg_18] +18000C939: add rsp, 30h +18000C93D: pop r12 +18000C93F: pop rdi +18000C940: pop rsi +18000C941: jmp cs:LeaveCriticalSection + + data refs from: + 180066228 + 180066244 + 1800DCAEC + code refs from: + 18000A071 (func 180009EE0) + 18000A127 (func 180009EE0) + 18000A14E (func 180009EE0) + +================================================================== + +### FUNC 18000C620 - 18000C755 (309 bytes) name=sub_18000C620 +18000C620: mov [rsp+arg_0], rbx +18000C625: mov [rsp+arg_8], rbp +18000C62A: mov [rsp+arg_10], rsi +18000C62F: push rdi +18000C630: sub rsp, 20h +18000C634: mov rbx, rcx +18000C637: add rcx, 238h; lpCriticalSection +18000C63E: mov edi, r8d +18000C641: mov rbp, rdx +18000C644: call cs:EnterCriticalSection +18000C64A: cmp dword ptr [rbx+228h], 0 +18000C651: jnz short loc_18000C667 +18000C653: lea rcx, [rbx+238h]; lpCriticalSection +18000C65A: call cs:LeaveCriticalSection +18000C660: xor eax, eax +18000C662: jmp loc_18000C740 +18000C667: test edi, edi +18000C669: jz loc_18000C712 +18000C66F: xor edi, edi +18000C671: mov [rbx+22Ch], edi +18000C677: mov [rbx+41FFCh], edi +18000C67D: mov [rbx+42004h], edi +18000C683: cmp [rbx+41F0Ch], edi +18000C689: jz short loc_18000C691 +18000C68B: mov [rbx+41F00h], edi +18000C691: cmp [rbx+41F3Ch], edi +18000C697: jz short loc_18000C69F +18000C699: mov [rbx+41F30h], edi +18000C69F: cmp dword ptr [rbx+41FE0h], 1 +18000C6A6: jbe short loc_18000C6DD +18000C6A8: cmp [rbx+41F7Ch], edi +18000C6AE: jz short loc_18000C6DD +18000C6B0: mov r8d, [rbx+41F74h] +18000C6B7: mov rax, [rbx+41F50h] +18000C6BE: mov rcx, [rbx+41F58h]; void * +18000C6C5: shl r8, 2; Size +18000C6C9: xor edx, edx; Val +18000C6CB: mov [rbx+41F70h], edi +18000C6D1: mov [rbx+41F68h], rax +18000C6D8: call memset +18000C6DD: cmp [rbx+41FBCh], edi +18000C6E3: jz short loc_18000C712 +18000C6E5: mov r8d, [rbx+41FB4h] +18000C6EC: mov rax, [rbx+41F90h] +18000C6F3: mov rcx, [rbx+41F98h]; void * +18000C6FA: shl r8, 2; Size +18000C6FE: xor edx, edx; Val +18000C700: mov [rbx+41FB0h], edi +18000C706: mov [rbx+41FA8h], rax +18000C70D: call memset +18000C712: lea rcx, [rbx+41EE0h] +18000C719: mov rdx, rbp +18000C71C: call sub_1800011A0 +18000C721: test eax, eax +18000C723: mov edi, eax +18000C725: jz short loc_18000C731 +18000C727: mov dword ptr [rbx+22Ch], 1 +18000C731: lea rcx, [rbx+238h]; lpCriticalSection +18000C738: call cs:LeaveCriticalSection +18000C73E: mov eax, edi +18000C740: mov rbx, [rsp+28h+arg_0] +18000C745: mov rbp, [rsp+28h+arg_8] +18000C74A: mov rsi, [rsp+28h+arg_10] +18000C74F: add rsp, 20h +18000C753: pop rdi +18000C754: retn + + data refs from: + 1800DCAE0 + code refs from: + 18000A0FA (func 180009EE0) + +================================================================== + +### FUNC 1800011A0 - 180001389 (489 bytes) name=sub_1800011A0 +1800011A0: push rbx +1800011A2: sub rsp, 20h +1800011A6: cmp dword ptr [rcx+2Ch], 0 +1800011AA: mov r9, rdx +1800011AD: mov rbx, rcx +1800011B0: jz loc_180001381 +1800011B6: add dword ptr [rcx+20h], 1 +1800011BA: mov eax, [rbx+28h] +1800011BD: mov ecx, [rcx+20h] +1800011C0: cmp eax, 1 +1800011C3: jnz short loc_1800011DA +1800011C5: mov r8d, [rbx+24h] +1800011C9: mov rcx, [rbx+10h]; void * +1800011CD: add r8, r8; Size +1800011D0: call memmove +1800011D5: jmp loc_180001367 +1800011DA: cmp eax, 2 +1800011DD: jnz short loc_180001255 +1800011DF: cmp ecx, 1 +1800011E2: jz short loc_1800011C5 +1800011E4: mov r8d, [rbx+24h] +1800011E8: mov rdx, [rbx+10h] +1800011EC: shr r8d, 2 +1800011F0: jz loc_180001367 +1800011F6: xchg ax, ax +1800011FA: xchg ax, ax +1800011FD: xchg ax, ax +180001200: movzx eax, word ptr [rdx] +180001203: movzx ecx, word ptr [r9] +180001207: add rdx, 8 +18000120B: add ecx, eax +18000120D: add r9, 8 +180001211: sar ecx, 1 +180001213: mov [rdx-8], cx +180001217: movzx eax, word ptr [rdx-6] +18000121B: movzx ecx, word ptr [r9-6] +180001220: add ecx, eax +180001222: sar ecx, 1 +180001224: mov [rdx-6], cx +180001228: movzx eax, word ptr [rdx-4] +18000122C: movzx ecx, word ptr [r9-4] +180001231: add ecx, eax +180001233: sar ecx, 1 +180001235: mov [rdx-4], cx +180001239: movzx ecx, word ptr [r9-2] +18000123E: movzx eax, word ptr [rdx-2] +180001242: add ecx, eax +180001244: sar ecx, 1 +180001246: add r8d, 0FFFFFFFFh +18000124A: mov [rdx-2], cx +18000124E: jnz short loc_180001200 +180001250: jmp loc_180001367 +180001255: cmp ecx, 1 +180001258: mov r8, [rbx+18h] +18000125C: jnz short loc_1800012A5 +18000125E: mov ecx, [rbx+24h] +180001261: shr ecx, 2 +180001264: jz loc_180001367 +18000126A: xchg ax, ax +18000126D: xchg ax, ax +180001270: movzx eax, word ptr [r9] +180001274: add r8, 10h +180001278: add r9, 8 +18000127C: add ecx, 0FFFFFFFFh +18000127F: mov [r8-10h], eax +180001283: movzx eax, word ptr [r9-6] +180001288: mov [r8-0Ch], eax +18000128C: movzx eax, word ptr [r9-4] +180001291: mov [r8-8], eax +180001295: movzx eax, word ptr [r9-2] +18000129A: mov [r8-4], eax +18000129E: jnz short loc_180001270 +1800012A0: jmp loc_180001367 +1800012A5: cmp ecx, eax +1800012A7: jz short loc_1800012F2 +1800012A9: mov ecx, [rbx+24h] +1800012AC: shr ecx, 2 +1800012AF: jz loc_180001367 +1800012B5: xchg ax, ax +1800012B9: xchg ax, ax +1800012BC: xchg ax, ax +1800012C0: movzx eax, word ptr [r9] +1800012C4: add r8, 10h +1800012C8: add r9, 8 +1800012CC: add [r8-10h], eax +1800012D0: movzx eax, word ptr [r9-6] +1800012D5: add [r8-0Ch], eax +1800012D9: movzx eax, word ptr [r9-4] +1800012DE: add [r8-8], eax +1800012E2: movzx eax, word ptr [r9-2] +1800012E7: add [r8-4], eax +1800012EB: add ecx, 0FFFFFFFFh +1800012EE: jnz short loc_1800012C0 +1800012F0: jmp short loc_180001367 +1800012F2: cmp eax, 4 +1800012F5: mov r10, [rbx+10h] +1800012F9: jnz short loc_180001300 +1800012FB: lea ecx, [rax-2] +1800012FE: jmp short loc_18000132B +180001300: cmp eax, 8 +180001303: jnz short loc_18000130A +180001305: lea ecx, [rax-5] +180001308: jmp short loc_18000132B +18000130A: cmp eax, 10h +18000130D: jnz short loc_180001314 +18000130F: lea ecx, [rax-0Ch] +180001312: jmp short loc_18000132B +180001314: cmp eax, 20h ; ' ' +180001317: jnz short loc_18000131E +180001319: lea ecx, [rax-1Bh] +18000131C: jmp short loc_18000132B +18000131E: xor ecx, ecx +180001320: mov edx, 6 +180001325: cmp eax, 40h ; '@' +180001328: cmovz ecx, edx +18000132B: mov r11d, [rbx+24h] +18000132F: test r11d, r11d +180001332: jz short loc_180001367 +180001334: xchg ax, ax +180001338: xchg ax, ax +18000133C: xchg ax, ax +180001340: movzx edx, word ptr [r9] +180001344: add r8, 4 +180001348: add r9, 2 +18000134C: add edx, [r8-4] +180001350: add r10, 2 +180001354: mov eax, edx +180001356: shr eax, cl +180001358: add r11d, 0FFFFFFFFh +18000135C: mov [r10-2], ax +180001361: mov [r8-4], edx +180001365: jnz short loc_180001340 +180001367: mov eax, [rbx+28h] +18000136A: cmp [rbx+20h], eax +18000136D: jnz short loc_180001381 +18000136F: mov dword ptr [rbx+20h], 0 +180001376: mov eax, 1 +18000137B: add rsp, 20h +18000137F: pop rbx +180001380: retn +180001381: xor eax, eax +180001383: add rsp, 20h +180001387: pop rbx +180001388: retn + + data refs from: + 1800DC024 + code refs from: + 18000C71C (func 18000C620) + 18000C96D (func 18000C950) + 18000C9BF (func 18000C950) + +================================================================== + +### FUNC 18001E920 - 18001E9EE (206 bytes) name=sub_18001E920 +18001E920: push rbx +18001E922: sub rsp, 20h +18001E926: cmp dword ptr [rcx+3Ch], 0 +18001E92A: mov r10d, r8d +18001E92D: mov rbx, rcx +18001E930: jnz short loc_18001E93A +18001E932: xor eax, eax +18001E934: add rsp, 20h +18001E938: pop rbx +18001E939: retn +18001E93A: mov eax, [rcx+38h] +18001E93D: add dword ptr [rcx+30h], 1 +18001E941: cmp [rcx+30h], eax +18001E944: jbe short loc_18001E99E +18001E946: cmp eax, 1 +18001E949: jnz short loc_18001E932 +18001E94B: mov r8d, [rcx+34h] +18001E94F: mov r11, [rcx+10h] +18001E953: test r8d, r8d +18001E956: jz short loc_18001E9AE +18001E958: xchg ax, ax +18001E95C: xchg ax, ax +18001E960: movzx eax, word ptr [r11] +18001E964: movzx r9d, word ptr [rdx] +18001E968: add r11, 2 +18001E96C: mov ecx, r9d +18001E96F: mov [r11-2], r9w +18001E974: sub ecx, eax +18001E976: cmp ecx, r10d +18001E979: jg short loc_18001E992 +18001E97B: mov eax, ecx +18001E97D: neg eax +18001E97F: cmp eax, r10d +18001E982: jg short loc_18001E992 +18001E984: test ecx, ecx +18001E986: jz short loc_18001E992 +18001E988: sar ecx, 1 +18001E98A: sub r9w, cx +18001E98E: mov [rdx], r9w +18001E992: add rdx, 2; Src +18001E996: add r8d, 0FFFFFFFFh +18001E99A: jnz short loc_18001E960 +18001E99C: jmp short loc_18001E9AE +18001E99E: mov r8d, [rcx+34h] +18001E9A2: mov rcx, [rcx+28h]; void * +18001E9A6: add r8, r8; Size +18001E9A9: call memmove +18001E9AE: mov r8d, [rbx+30h] +18001E9B2: mov ecx, [rbx+38h] +18001E9B5: xor edx, edx +18001E9B7: mov eax, r8d +18001E9BA: div ecx +18001E9BC: test edx, edx +18001E9BE: jnz short loc_18001E9D6 +18001E9C0: mov rax, [rbx+10h] +18001E9C4: mov [rbx+28h], rax +18001E9C8: xor eax, eax +18001E9CA: cmp r8d, ecx +18001E9CD: setnb al +18001E9D0: add rsp, 20h +18001E9D4: pop rbx +18001E9D5: retn +18001E9D6: mov eax, [rbx+34h] +18001E9D9: add rax, rax +18001E9DC: add [rbx+28h], rax +18001E9E0: xor eax, eax +18001E9E2: cmp r8d, ecx +18001E9E5: setnb al +18001E9E8: add rsp, 20h +18001E9EC: pop rbx +18001E9ED: retn + + data refs from: + 1800DD77C + 1800DD788 + code refs from: + 18000CB84 (func 18000CA30) + +================================================================== + +### FUNC 180009EE0 - 18000A410 (1328 bytes) name=sub_180009EE0 +180009EE0: push rbx +180009EE2: push rbp +180009EE3: push rdi +180009EE4: push r13 +180009EE6: push r14 +180009EE8: sub rsp, 70h +180009EEC: mov ebx, ecx +180009EEE: lea r14, __ImageBase +180009EF5: mov rdi, rdx +180009EF8: mov ebp, ecx +180009EFA: imul rbx, 4A8h +180009F01: cmp dword ptr [rbx+r14+73778h], 0 +180009F0A: jz loc_18000A3E8 +180009F10: mov edx, [rdx+0Ch] +180009F13: test dl, 3 +180009F16: jz short loc_180009F3A +180009F18: mov eax, [rbx+r14+737B8h] +180009F20: cmp [rdi+14h], eax +180009F23: jnz loc_18000A3E8 +180009F29: mov eax, [rbx+r14+737BCh] +180009F31: cmp [rdi+18h], eax +180009F34: jnz loc_18000A3E8 +180009F3A: test dl, 4 +180009F3D: jz short loc_180009F61 +180009F3F: mov eax, [rbx+r14+737F8h] +180009F47: cmp [rdi+14h], eax +180009F4A: jnz loc_18000A3E8 +180009F50: mov eax, [rbx+r14+737FCh] +180009F58: cmp [rdi+18h], eax +180009F5B: jnz loc_18000A3E8 +180009F61: xor ecx, ecx; Time +180009F63: mov [rsp+98h+arg_0], rsi +180009F6B: mov [rsp+98h+arg_10], r12 +180009F73: call _time64 +180009F78: add dword ptr [rbx+r14+73BF0h], 1 +180009F81: mov rsi, [rbx+r14+73758h] +180009F89: xor r12d, r12d +180009F8C: mov [rbx+r14+73810h], rax +180009F94: mov eax, [rbx+r14+73BF0h] +180009F9C: mov [rbx+r14+73818h], r12 +180009FA4: mov [rbx+r14+73820h], r12 +180009FAC: mov [rbx+r14+73828h], r12d +180009FB4: movzx r8d, byte ptr [rsi+2D47h] +180009FBC: cmp r8d, 1 +180009FC0: jz short loc_180009FD9 +180009FC2: cmp r8d, 2 +180009FC6: jz short loc_180009FD9 +180009FC8: cmp r8d, 4 +180009FCC: jnz short loc_180009FE2 +180009FCE: cmp eax, 8 +180009FD1: jb loc_18000A3D8 +180009FD7: jmp short loc_180009FE2 +180009FD9: cmp eax, 14h +180009FDC: jb loc_18000A3D8 +180009FE2: movsx eax, word ptr [rsi+2D86h] +180009FE9: add [rdi+28h], eax +180009FEC: movsx eax, word ptr [rsi+2D86h] +180009FF3: add [rdi+2Ch], eax +180009FF6: mov eax, [rdi+28h] +180009FF9: mov rcx, [rbx+r14+73750h] +18000A001: mov [rcx+60h], eax +18000A004: mov eax, [rdi+2Ch] +18000A007: mov rcx, [rbx+r14+73750h] +18000A00F: mov [rcx+5Ch], eax +18000A012: mov eax, [rdi+28h] +18000A015: mov edx, [rbx+r14+73BECh] +18000A01D: test edx, edx +18000A01F: mov [rbx+r14+73800h], eax +18000A027: mov eax, [rdi+2Ch] +18000A02A: mov [rbx+r14+73804h], eax +18000A032: jns short loc_18000A040 +18000A034: mov ecx, ebp +18000A036: call sub_180002F50 +18000A03B: jmp loc_18000A3D8 +18000A040: add edx, 1 +18000A043: mov [rbx+r14+73BECh], edx +18000A04B: mov ecx, [rsi+2D88h] +18000A051: cmp edx, ecx +18000A053: ja short loc_18000A07B +18000A055: mov r8d, [rsi+2D8Ch] +18000A05C: add edx, 0FFFFFFFFh +18000A05F: add r8d, ecx +18000A062: mov rcx, [rbx+r14+73750h] +18000A06A: add r8d, [rsi+2D78h] +18000A071: call sub_18000C760 +18000A076: jmp loc_18000A3D8 +18000A07B: mov r9d, [rsi+2D78h] +18000A082: lea eax, [r9+rcx] +18000A086: cmp edx, eax +18000A088: ja loc_18000A131 +18000A08E: cmp edx, eax +18000A090: jnz short loc_18000A0D6 +18000A092: mov rcx, [rbx+r14+73758h] +18000A09A: cmp [rcx+14h], r12d +18000A09E: jnz short loc_18000A0AD +18000A0A0: mov ecx, 0E4AE0005h; dwErrCode +18000A0A5: call cs:SetLastError +18000A0AB: jmp short loc_18000A0D6 +18000A0AD: lea rdx, [rsp+98h+arg_8] +18000A0B5: mov r8d, 8 +18000A0BB: mov [rsp+98h+arg_8], 6BB6B672h +18000A0C6: mov [rsp+98h+arg_C], 1 +18000A0D1: call sub_18001C670 +18000A0D6: mov eax, [rsi+2D88h] +18000A0DC: mov rcx, [rbx+r14+73750h] +18000A0E4: lea rdx, [rdi+4Ch] +18000A0E8: add eax, 1 +18000A0EB: cmp [rbx+r14+73BECh], eax +18000A0F3: setz r12b +18000A0F7: mov r8d, r12d +18000A0FA: call sub_18000C620 +18000A0FF: mov r8d, [rsi+2D8Ch] +18000A106: mov edx, [rbx+r14+73BECh] +18000A10E: add r8d, [rsi+2D78h] +18000A115: mov rcx, [rbx+r14+73750h] +18000A11D: sub edx, 1 +18000A120: add r8d, [rsi+2D88h] +18000A127: call sub_18000C760 +18000A12C: jmp loc_18000A3D8 +18000A131: add r9d, [rsi+2D8Ch] +18000A138: add r9d, ecx +18000A13B: cmp edx, r9d +18000A13E: ja short loc_18000A158 +18000A140: mov rcx, [rbx+r14+73750h] +18000A148: add edx, 0FFFFFFFFh +18000A14B: mov r8d, r9d +18000A14E: call sub_18000C760 +18000A153: jmp loc_18000A3D8 +18000A158: cmp r8d, 6; switch 7 cases +18000A15C: mov r10d, r12d +18000A15F: ja short def_18000A16C; jumptable 000000018000A16C default case +18000A161: mov ecx, ds:(jpt_18000A16C - 180000000h)[r14+r8*4] +18000A169: add rcx, r14 +18000A16C: jmp rcx; switch jump +18000A16E: cmp [rbx+r14+73BF4h], r10d; jumptable 000000018000A16C cases 0,3,5,6 +18000A176: jnz short loc_18000A18D +18000A178: cmp edx, 4Bh ; 'K' +18000A17B: jnz short loc_18000A18D +18000A17D: mov dword ptr [rbx+r14+73BF4h], 1 +18000A189: lea r10d, [rdx-4Ah] +18000A18D: mov r8d, 1Eh +18000A193: jmp short loc_18000A1C5 +18000A195: mov ecx, [rbx+r14+73BF4h]; jumptable 000000018000A16C cases 1,2,4 +18000A19D: cmp ecx, 5 +18000A1A0: jnb short loc_18000A1BF +18000A1A2: mov eax, 82h +18000A1A7: sub eax, r9d +18000A1AA: cmp edx, eax +18000A1AC: jnz short loc_18000A1BF +18000A1AE: lea eax, [rcx+1] +18000A1B1: mov r10d, 1 +18000A1B7: mov [rbx+r14+73BF4h], eax +18000A1BF: mov r8d, 64h ; 'd' +18000A1C5: test r10d, r10d +18000A1C8: jnz short loc_18000A203 +18000A1CA: jmp short loc_18000A1D2 +18000A1CC: mov r8d, 64h ; 'd'; jumptable 000000018000A16C default case +18000A1D2: mov eax, [rsi+2D90h] +18000A1D8: lea ecx, [r9+rax] +18000A1DC: cmp edx, ecx +18000A1DE: jnb short loc_18000A203 +18000A1E0: lea eax, [r8+r9] +18000A1E4: cmp edx, eax +18000A1E6: jb short loc_18000A20A +18000A1E8: mov rax, [rbx+r14+73750h] +18000A1F0: mov eax, [rax+54h] +18000A1F3: sub eax, [rdi+2Ch] +18000A1F6: cdq +18000A1F7: xor eax, edx +18000A1F9: sub eax, edx +18000A1FB: cmp eax, [rsi+2D94h] +18000A201: jbe short loc_18000A20A +18000A203: mov ecx, ebp +18000A205: call sub_180002F50 +18000A20A: mov rcx, [rbx+r14+73750h] +18000A212: lea rdx, [rdi+4Ch] +18000A216: mov r9d, 1 +18000A21C: xor r8d, r8d +18000A21F: mov dword ptr [rsp+98h+var_70], 1 +18000A227: mov [rsp+98h+var_78], r12d +18000A22C: call sub_18000CA30 +18000A231: test al, 1 +18000A233: jz loc_18000A3D8 +18000A239: mov rax, [rbx+r14+73768h] +18000A241: mov ecx, [rax+44h] +18000A244: test ecx, ecx +18000A246: jz loc_18000A32E +18000A24C: add dword ptr [rbx+r14+73BA4h], 1 +18000A255: mov eax, [rbx+r14+73BA4h] +18000A25D: cmp eax, [rbx+r14+73BA8h] +18000A265: jl loc_18000A32E +18000A26B: xor eax, eax +18000A26D: lea rcx, [rsp+98h+var_60] +18000A272: mov [rbx+r14+73BA4h], r12d +18000A27A: mov [rsp+98h+var_68], rax +18000A27F: mov [rsp+98h+var_60], rax +18000A284: mov [rsp+98h+var_58], rax +18000A289: mov [rsp+98h+var_50], rax +18000A28E: mov [rsp+98h+var_48], rax +18000A293: mov [rsp+98h+var_40], rax +18000A298: mov [rsp+98h+var_38], rax +18000A29D: mov [rsp+98h+var_30], rax +18000A2A2: mov eax, [rbx+r14+73800h] +18000A2AA: mov dword ptr [rsp+98h+var_68], 40h ; '@' +18000A2B2: mov dword ptr [rsp+98h+var_68+4], 10100h +18000A2BA: mov [rcx], eax +18000A2BC: mov eax, [rbx+r14+73804h] +18000A2C4: mov [rcx+4], eax +18000A2C7: mov eax, [rbx+r14+73808h] +18000A2CF: mov [rcx+8], eax +18000A2D2: mov eax, [rbx+r14+7380Ch] +18000A2DA: mov [rcx+0Ch], eax +18000A2DD: xor ecx, ecx; Time +18000A2DF: call _time64 +18000A2E4: mov [rsp+98h+var_50], rax +18000A2E9: call cs:GetTickCount +18000A2EF: mov r9, [rbx+r14+73750h] +18000A2F7: mov rcx, [rbx+r14+73768h] +18000A2FF: mov dword ptr [rsp+98h+var_48], eax +18000A303: mov eax, [rdi+38h] +18000A306: mov dword ptr [rsp+98h+var_48+4], eax +18000A30A: mov eax, [rdi+18h] +18000A30D: mov r9, [r9+270h] +18000A314: imul eax, [rdi+14h] +18000A318: add eax, eax +18000A31A: lea rdx, [rsp+98h+var_68] +18000A31F: mov r8d, 40h ; '@' +18000A325: mov [rsp+98h+var_78], eax +18000A329: call sub_18001B1B0 +18000A32E: mov rax, [rbx+r14+73760h] +18000A336: cmp [rax+44h], r12d +18000A33A: jz short loc_18000A3A6 +18000A33C: mov rcx, [rbx+r14+73750h] +18000A344: call sub_1800110A0 +18000A349: mov r9, [rbx+r14+73750h] +18000A351: add r9, 6C8h +18000A358: test rax, rax +18000A35B: mov r11, rax +18000A35E: jz short loc_18000A3A6 +18000A360: test r9, r9 +18000A363: jz short loc_18000A3A6 +18000A365: movzx eax, word ptr [r9+0Eh] +18000A36A: mov rcx, [rbx+r14+73760h] +18000A372: imul eax, [r9+8] +18000A377: imul eax, [r9+4] +18000A37C: cdq +18000A37D: and edx, 7 +18000A380: add eax, edx +18000A382: sar eax, 3 +18000A385: cdq +18000A386: xor eax, edx +18000A388: sub eax, edx +18000A38A: mov rdx, r11 +18000A38D: mov r8d, eax +18000A390: call sub_180001CD0 +18000A395: test eax, eax +18000A397: jnz short loc_18000A3A6 +18000A399: mov rcx, [rbx+r14+73760h] +18000A3A1: call sub_180001C50 +18000A3A6: mov r10, [rbx+r14+73790h] +18000A3AE: test r10, r10 +18000A3B1: jz short loc_18000A3D8 +18000A3B3: mov rax, [rbx+r14+73770h] +18000A3BB: mov r9d, [rdi+44h] +18000A3BF: mov r8d, [rdi+38h] +18000A3C3: mov edx, [rdi+28h] +18000A3C6: mov [rsp+98h+var_70], rax +18000A3CB: mov ecx, ebp +18000A3CD: mov [rsp+98h+var_78], 2 +18000A3D5: call r10 +18000A3D8: mov rsi, [rsp+98h+arg_0] +18000A3E0: mov r12, [rsp+98h+arg_10] +18000A3E8: add rsp, 70h +18000A3EC: pop r14 +18000A3EE: pop r13 +18000A3F0: pop rdi +18000A3F1: pop rbp +18000A3F2: pop rbx +18000A3F3: retn +18000A3F4: dd offset loc_18000A16E - 180000000h; jump table for switch statement + + data refs from: + 18001D30C + 180068330 + 180068340 + 180068358 + 1800DC8B8 + +================================================================== + +### FUNC 180002F50 - 180002FEB (155 bytes) name=sub_180002F50 +180002F50: mov [rsp+arg_0], rbx +180002F55: push rdi +180002F56: sub rsp, 20h +180002F5A: mov ebx, ecx +180002F5C: lea rdi, qword_180073750 +180002F63: imul rbx, 4A8h +180002F6A: mov rcx, [rbx+rdi+8] +180002F6F: cmp dword ptr [rcx+14h], 0 +180002F73: jnz short loc_180002F8D +180002F75: mov ecx, 0E4AE0005h; dwErrCode +180002F7A: call cs:SetLastError +180002F80: xor eax, eax +180002F82: mov rbx, [rsp+28h+arg_0] +180002F87: add rsp, 20h +180002F8B: pop rdi +180002F8C: retn +180002F8D: lea rdx, [rsp+28h+arg_8] +180002F92: mov r8d, 8 +180002F98: mov [rsp+28h+arg_8], 6BB6B672h +180002FA0: mov [rsp+28h+arg_C], 0 +180002FA8: call sub_18001C670 +180002FAD: test eax, eax +180002FAF: jnz short loc_180002FBC +180002FB1: mov rbx, [rsp+28h+arg_0] +180002FB6: add rsp, 20h +180002FBA: pop rdi +180002FBB: retn +180002FBC: mov rcx, [rbx+rdi] +180002FC0: mov eax, [rcx+60h] +180002FC3: mov [rcx+58h], eax +180002FC6: mov rcx, [rbx+rdi] +180002FCA: mov eax, [rcx+5Ch] +180002FCD: mov [rcx+54h], eax +180002FD0: mov dword ptr [rbx+rdi+49Ch], 0 +180002FDB: mov rbx, [rsp+28h+arg_0] +180002FE0: mov eax, 1 +180002FE5: add rsp, 20h +180002FE9: pop rdi +180002FEA: retn + + data refs from: + 1800DC300 + code refs from: + 180009DD9 (func 180009B50) + 18000A036 (func 180009EE0) + 18000A205 (func 180009EE0) + +================================================================== + +### FUNC 180010780 - 180010891 (273 bytes) name=sub_180010780 +180010780: mov [rsp+arg_8], rbx +180010785: mov [rsp+arg_10], rbp +18001078A: push rdi +18001078B: push r12 +18001078D: push r13 +18001078F: sub rsp, 20h +180010793: mov r13d, [rcx+47938h] +18001079A: movzx r9d, word ptr [rdx] +18001079E: xor r11d, r11d +1800107A1: test r13d, r13d +1800107A4: mov r12, rcx +1800107A7: mov ebp, r11d +1800107AA: movzx r10d, r9w +1800107AE: mov rbx, r11 +1800107B1: mov rdi, r11 +1800107B4: mov r8d, r11d +1800107B7: jz short loc_18001080C +1800107B9: mov [rsp+38h+arg_0], rsi +1800107BE: mov esi, [rcx+47938h] +1800107C4: xchg ax, ax +1800107C8: xchg ax, ax +1800107CC: xchg ax, ax +1800107D0: movzx ecx, word ptr [rdx] +1800107D3: add rdx, 2 +1800107D7: mov eax, ecx +1800107D9: add rbx, rcx +1800107DC: imul eax, eax +1800107DF: add rdi, rax +1800107E2: cmp r10w, cx +1800107E6: jnb short loc_1800107F1 +1800107E8: mov r10w, cx +1800107EC: mov ebp, r8d +1800107EF: jmp short loc_1800107FE +1800107F1: cmp cx, r9w +1800107F5: jnb short loc_1800107FE +1800107F7: mov r9w, cx +1800107FB: mov r11d, r8d +1800107FE: add r8d, 1 +180010802: cmp r8d, esi +180010805: jb short loc_1800107D0 +180010807: mov rsi, [rsp+38h+arg_0] +18001080C: movzx eax, r10w +180010810: cvtsi2sd xmm1, r13 +180010815: cvtsi2sd xmm2, rbx +18001081A: mov [r12+42010h], eax +180010822: movzx eax, r9w +180010826: lea ecx, [r13-1] +18001082A: mov [r12+42014h], eax +180010832: mov rax, rbx +180010835: mov [r12+42020h], ebp +18001083D: mulsd xmm2, xmm2 +180010841: divsd xmm2, xmm1 +180010845: cqo +180010847: mov [r12+42024h], r11d +18001084F: cvtsi2sd xmm1, rcx +180010854: cvtsi2sd xmm0, rdi +180010859: idiv r13 +18001085C: subsd xmm0, xmm2 +180010860: divsd xmm0, xmm1; X +180010864: mov [r12+42018h], eax +18001086C: call sqrt +180010871: mov rbx, [rsp+38h+arg_8] +180010876: mov rbp, [rsp+38h+arg_10] +18001087B: cvttsd2si eax, xmm0 +18001087F: mov [r12+4201Ch], eax +180010887: add rsp, 20h +18001088B: pop r13 +18001088D: pop r12 +18001088F: pop rdi +180010890: retn + + data refs from: + 180065BF8 + 180065C0C + 1800DCC30 + code refs from: + 18000CBFE (func 18000CA30) + 18000CC9F (func 18000CA30) + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/all_functions_decomp_libcoresdk_arm64.so_00100000.txt b/analysis/ida/export/ghidra_dump/all_functions_decomp_libcoresdk_arm64.so_00100000.txt new file mode 100644 index 0000000..bf2d00d --- /dev/null +++ b/analysis/ida/export/ghidra_dump/all_functions_decomp_libcoresdk_arm64.so_00100000.txt @@ -0,0 +1,627168 @@ +### FUNC 0015cc10 (20 bytes) name=FUN_0015cc10 + +void FUN_0015cc10(void) + +{ + (*(code *)PTR_004ff440)(); + return; +} + + +================================================================== + +### FUNC 0015cc30 (16 bytes) name=cvCvtSeqToArray + +void cvCvtSeqToArray(void) + +{ + (*(code *)PTR_cvCvtSeqToArray_004ff448)(); + return; +} + + +================================================================== + +### FUNC 0015cc40 (16 bytes) name=transpose + +void __thiscall cv::MatOp::transpose(MatOp *this,MatExpr *param_1,MatExpr *param_2) + +{ + (*(code *)PTR_transpose_004ff450)(); + return; +} + + +================================================================== + +### FUNC 0015cc50 (16 bytes) name=strerror + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strerror(int __errnum) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strerror_004ff458)(__errnum); + return pcVar1; +} + + +================================================================== + +### FUNC 0015cc60 (16 bytes) name=memcpy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memcpy(void *__dest,void *__src,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memcpy_004ff460)(); + return pvVar1; +} + + +================================================================== + +### FUNC 0015cc70 (16 bytes) name=cvTypeOf + +void cvTypeOf(void) + +{ + (*(code *)PTR_cvTypeOf_004ff468)(); + return; +} + + +================================================================== + +### FUNC 0015cc80 (16 bytes) name=GetRgnTemperatureInfo + +void __thiscall +CFunctions::GetRgnTemperatureInfo + (CFunctions *this,uint *param_1,uint param_2,int *param_3,int param_4) + +{ + (*(code *)PTR_GetRgnTemperatureInfo_004ff470)(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015cc90 (16 bytes) name=~Device + +void __thiscall cv::ocl::Device::~Device(Device *this) + +{ + (*(code *)PTR__Device_004ff478)(); + return; +} + + +================================================================== + +### FUNC 0015cca0 (16 bytes) name=putText + +void cv::putText(void) + +{ + (*(code *)PTR_putText_004ff480)(); + return; +} + + +================================================================== + +### FUNC 0015ccb0 (16 bytes) name=GetRaw + +void __thiscall FStream::GetRaw(FStream *this) + +{ + (*(code *)PTR_GetRaw_004ff488)(); + return; +} + + +================================================================== + +### FUNC 0015ccc0 (16 bytes) name=fopen + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +FILE * fopen(char *__filename,char *__modes) + +{ + FILE *pFVar1; + + pFVar1 = (FILE *)(*(code *)PTR_fopen_004ff490)(); + return pFVar1; +} + + +================================================================== + +### FUNC 0015ccd0 (16 bytes) name=LoadDDT + +void __thiscall +CMagDevice::LoadDDT(CMagDevice *this,OutputPara *param_1,char *param_2, + _func_void_uint_uint_uint_void_ptr *param_3,void *param_4) + +{ + (*(code *)PTR_LoadDDT_004ff498)(); + return; +} + + +================================================================== + +### FUNC 0015cce0 (16 bytes) name=gettimeofday + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int gettimeofday(timeval *__tv,__timezone_ptr_t __tz) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_gettimeofday_004ff4a0)((int)__tv); + return iVar1; +} + + +================================================================== + +### FUNC 0015ccf0 (16 bytes) name=ApplyNewEffect + +void __thiscall CFunctions::ApplyNewEffect(CFunctions *this,int param_1) + +{ + (*(code *)PTR_ApplyNewEffect_004ff4a8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015cd00 (16 bytes) name=filter2D + +void cv::filter2D(void) + +{ + (*(code *)PTR_filter2D_004ff4b0)(); + return; +} + + +================================================================== + +### FUNC 0015cd10 (16 bytes) name=_M_emplace_back_aux + +void __thiscall +std::vector>::_M_emplace_back_aux + (vector> *this,JRect *param_1) + +{ + (*(code *)PTR__M_emplace_back_aux_004ff4b8)(); + return; +} + + +================================================================== + +### FUNC 0015cd20 (16 bytes) name=MapTemperature + +void CFunctions::MapTemperature(int param_1) + +{ + (*(code *)PTR_MapTemperature_004ff4c0)(param_1); + return; +} + + +================================================================== + +### FUNC 0015cd30 (16 bytes) name=~MatOp + +void __thiscall cv::MatOp::~MatOp(MatOp *this) + +{ + (*(code *)PTR__MatOp_004ff4c8)(); + return; +} + + +================================================================== + +### FUNC 0015cd40 (16 bytes) name=cos + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double cos(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_cos_004ff4d0)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015cd50 (16 bytes) name=create + +void cv::cuda::HostMem::create(int param_1,int param_2,int param_3) + +{ + (*(code *)PTR_create_004ff4d8)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015cd60 (16 bytes) name=writev + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t writev(int __fd,iovec *__iovec,int __count) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_writev_004ff4e0)(__fd,__iovec,__count); + return sVar1; +} + + +================================================================== + +### FUNC 0015cd70 (16 bytes) name=_Unwind_GetRegionStart + +void _Unwind_GetRegionStart(void) + +{ + (*(code *)PTR__Unwind_GetRegionStart_004ff4e8)(); + return; +} + + +================================================================== + +### FUNC 0015cd80 (16 bytes) name=cvReleaseSparseMat + +void cvReleaseSparseMat(void) + +{ + (*(code *)PTR_cvReleaseSparseMat_004ff4f0)(); + return; +} + + +================================================================== + +### FUNC 0015cd90 (16 bytes) name=cvGetRootFileNode + +void cvGetRootFileNode(void) + +{ + (*(code *)PTR_cvGetRootFileNode_004ff4f8)(); + return; +} + + +================================================================== + +### FUNC 0015cda0 (16 bytes) name=memchr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memchr(void *__s,int __c,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memchr_004ff500)(__s,__c); + return pvVar1; +} + + +================================================================== + +### FUNC 0015cdb0 (16 bytes) name=get_unexpected + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::get_unexpected(void) + +{ + (*(code *)PTR_get_unexpected_004ff508)(); + return; +} + + +================================================================== + +### FUNC 0015cdc0 (16 bytes) name=pow + +void cv::pow(_InputArray *param_1,double param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_pow_004ff510)(); + return; +} + + +================================================================== + +### FUNC 0015cdd0 (16 bytes) name=Read + +void __thiscall FStream::Read(FStream *this,void *param_1,ulong param_2,ulong param_3) + +{ + (*(code *)PTR_Read_004ff518)(); + return; +} + + +================================================================== + +### FUNC 0015cde0 (16 bytes) name=MAG_IsProcessingImage + +void MAG_IsProcessingImage(void) + +{ + (*(code *)PTR_MAG_IsProcessingImage_004ff520)(); + return; +} + + +================================================================== + +### FUNC 0015cdf0 (16 bytes) name=libusb_handle_events_completed + +void libusb_handle_events_completed(void) + +{ + (*(code *)PTR_libusb_handle_events_completed_004ff528)(); + return; +} + + +================================================================== + +### FUNC 0015ce00 (16 bytes) name=gzclose + +void gzclose(void) + +{ + (*(code *)PTR_gzclose_004ff530)(); + return; +} + + +================================================================== + +### FUNC 0015ce10 (16 bytes) name=empty + +void __thiscall cv::_InputArray::empty(_InputArray *this) + +{ + (*(code *)PTR_empty_004ff538)(); + return; +} + + +================================================================== + +### FUNC 0015ce20 (16 bytes) name=cvCreateData + +void cvCreateData(void) + +{ + (*(code *)PTR_cvCreateData_004ff540)(); + return; +} + + +================================================================== + +### FUNC 0015ce30 (16 bytes) name=__uninit_copy + +KeyPoint * +std::__uninitialized_copy::__uninit_copy + (KeyPoint *param_1,KeyPoint *param_2,KeyPoint *param_3) + +{ + KeyPoint *pKVar1; + + pKVar1 = (KeyPoint *)(*(code *)PTR___uninit_copy_004ff548)(); + return pKVar1; +} + + +================================================================== + +### FUNC 0015ce40 (16 bytes) name=cvCreateSet + +void cvCreateSet(void) + +{ + (*(code *)PTR_cvCreateSet_004ff550)(); + return; +} + + +================================================================== + +### FUNC 0015ce50 (16 bytes) name=Logging + +void __thiscall mag::Logging::Logging(Logging *this,int param_1) + +{ + (*(code *)PTR_Logging_004ff558)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015ce60 (16 bytes) name=asprintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int asprintf(char **__ptr,char *__fmt,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_asprintf_004ff560)((int)__ptr); + return iVar1; +} + + +================================================================== + +### FUNC 0015ce70 (16 bytes) name=SaveDDT2Buffer + +void CMagDevice::SaveDDT2Buffer(void *param_1,uint param_2) + +{ + (*(code *)PTR_SaveDDT2Buffer_004ff568)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015ce80 (16 bytes) name=opendir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +DIR * opendir(char *__name) + +{ + DIR *pDVar1; + + pDVar1 = (DIR *)(*(code *)PTR_opendir_004ff570)(); + return pDVar1; +} + + +================================================================== + +### FUNC 0015ce90 (16 bytes) name=GetLocalTime + +void GetLocalTime(_SYSTEMTIME *param_1) + +{ + (*(code *)PTR_GetLocalTime_004ff578)(); + return; +} + + +================================================================== + +### FUNC 0015cea0 (16 bytes) name=GetTemperatureData_Raw + +void CMagDevice::GetTemperatureData_Raw(int *param_1,uint param_2,int param_3) + +{ + (*(code *)PTR_GetTemperatureData_Raw_004ff580)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015ceb0 (16 bytes) name=libusb_lock_events + +void libusb_lock_events(void) + +{ + (*(code *)PTR_libusb_lock_events_004ff588)(); + return; +} + + +================================================================== + +### FUNC 0015cec0 (16 bytes) name=Restart + +void __thiscall CAccumulator::Restart(CAccumulator *this) + +{ + (*(code *)PTR_Restart_004ff590)(); + return; +} + + +================================================================== + +### FUNC 0015ced0 (16 bytes) name=zeros + +void __thiscall cv::Mat::zeros(Mat *this,int param_1,int param_2,int param_3) + +{ + (*(code *)PTR_zeros_004ff598)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015cee0 (16 bytes) name=cvRelease + +void cvRelease(void) + +{ + (*(code *)PTR_cvRelease_004ff5a0)(); + return; +} + + +================================================================== + +### FUNC 0015cef0 (16 bytes) name=__ctype_get_mb_cur_max + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t __ctype_get_mb_cur_max(void) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR___ctype_get_mb_cur_max_004ff5a8)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015cf00 (16 bytes) name=sepFilter2D + +void cv::sepFilter2D(void) + +{ + (*(code *)PTR_sepFilter2D_004ff5b0)(); + return; +} + + +================================================================== + +### FUNC 0015cf10 (16 bytes) name=cvTreeToNodeSeq + +void cvTreeToNodeSeq(void) + +{ + (*(code *)PTR_cvTreeToNodeSeq_004ff5b8)(); + return; +} + + +================================================================== + +### FUNC 0015cf20 (16 bytes) name=~PlatformInfo + +void __thiscall cv::ocl::PlatformInfo::~PlatformInfo(PlatformInfo *this) + +{ + (*(code *)PTR__PlatformInfo_004ff5c0)(); + return; +} + + +================================================================== + +### FUNC 0015cf30 (16 bytes) name=sin + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double sin(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_sin_004ff5c8)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015cf40 (16 bytes) name=logf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float logf(float __x) + +{ + float fVar1; + + fVar1 = (float)(*(code *)PTR_logf_004ff5d0)(); + return fVar1; +} + + +================================================================== + +### FUNC 0015cf50 (16 bytes) name=dot + +void __thiscall cv::Mat::dot(Mat *this,_InputArray *param_1) + +{ + (*(code *)PTR_dot_004ff5d8)(); + return; +} + + +================================================================== + +### FUNC 0015cf60 (16 bytes) name=~OFStream + +void __thiscall OFStream::~OFStream(OFStream *this) + +{ + (*(code *)PTR__OFStream_004ff5e0)(); + return; +} + + +================================================================== + +### FUNC 0015cf70 (16 bytes) name=create + +void __thiscall cv::ocl::Kernel::create(Kernel *this,char *param_1,Program *param_2) + +{ + (*(code *)PTR_create_004ff5e8)(); + return; +} + + +================================================================== + +### FUNC 0015cf80 (16 bytes) name=fitEllipse + +void __thiscall cv::fitEllipse(cv *this,_InputArray *param_1) + +{ + (*(code *)PTR_fitEllipse_004ff5f0)(); + return; +} + + +================================================================== + +### FUNC 0015cf90 (16 bytes) name=swap + +void __thiscall +std::__exception_ptr::exception_ptr::swap(exception_ptr *this,exception_ptr *param_1) + +{ + (*(code *)PTR_swap_004ff5f8)(); + return; +} + + +================================================================== + +### FUNC 0015cfa0 (16 bytes) name=cvCreateStructuringElementEx + +void cvCreateStructuringElementEx(void) + +{ + (*(code *)PTR_cvCreateStructuringElementEx_004ff600)(); + return; +} + + +================================================================== + +### FUNC 0015cfb0 (16 bytes) name=strncpy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strncpy(char *__dest,char *__src,size_t __n) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strncpy_004ff608)(); + return pcVar1; +} + + +================================================================== + +### FUNC 0015cfc0 (16 bytes) name=MAG_Free + +void MAG_Free(void) + +{ + (*(code *)PTR_MAG_Free_004ff610)(); + return; +} + + +================================================================== + +### FUNC 0015cfd0 (16 bytes) name=usbi_handle_transfer_completion + +void usbi_handle_transfer_completion(void) + +{ + (*(code *)PTR_usbi_handle_transfer_completion_004ff618)(); + return; +} + + +================================================================== + +### FUNC 0015cfe0 (16 bytes) name=MAG_GetTemperatureProbe2 + +void MAG_GetTemperatureProbe2(void) + +{ + (*(code *)PTR_MAG_GetTemperatureProbe2_004ff620)(); + return; +} + + +================================================================== + +### FUNC 0015cff0 (16 bytes) name=fixedType + +void __thiscall cv::_OutputArray::fixedType(_OutputArray *this) + +{ + (*(code *)PTR_fixedType_004ff628)(); + return; +} + + +================================================================== + +### FUNC 0015d000 (16 bytes) name=cvGetSeqElem + +void cvGetSeqElem(void) + +{ + (*(code *)PTR_cvGetSeqElem_004ff630)(); + return; +} + + +================================================================== + +### FUNC 0015d010 (16 bytes) name=Exception + +void __thiscall +cv::Exception::Exception + (Exception *this,int param_1,String *param_2,String *param_3,String *param_4,int param_5) + +{ + (*(code *)PTR_Exception_004ff638)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015d020 (16 bytes) name=_Unwind_RaiseException + +void _Unwind_RaiseException(void) + +{ + (*(code *)PTR__Unwind_RaiseException_004ff640)(); + return; +} + + +================================================================== + +### FUNC 0015d030 (16 bytes) name=SetEXLevel + +void CMagDevice::SetEXLevel(void) + +{ + (*(code *)PTR_SetEXLevel_004ff648)(); + return; +} + + +================================================================== + +### FUNC 0015d040 (16 bytes) name=libusb_open + +void libusb_open(void) + +{ + (*(code *)PTR_libusb_open_004ff650)(); + return; +} + + +================================================================== + +### FUNC 0015d050 (16 bytes) name=usleep + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int usleep(__useconds_t __useconds) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_usleep_004ff658)(__useconds); + return iVar1; +} + + +================================================================== + +### FUNC 0015d060 (16 bytes) name=~Logging + +void __thiscall mag::Logging::~Logging(Logging *this) + +{ + (*(code *)PTR__Logging_004ff660)(); + return; +} + + +================================================================== + +### FUNC 0015d070 (16 bytes) name=cvSetImageCOI + +void cvSetImageCOI(void) + +{ + (*(code *)PTR_cvSetImageCOI_004ff668)(); + return; +} + + +================================================================== + +### FUNC 0015d080 (16 bytes) name=compilerAvailable + +void __thiscall cv::ocl::Device::compilerAvailable(Device *this) + +{ + (*(code *)PTR_compilerAvailable_004ff670)(); + return; +} + + +================================================================== + +### FUNC 0015d090 (16 bytes) name=towlower + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t towlower(wint_t __wc) + +{ + wint_t wVar1; + + wVar1 = (*(code *)PTR_towlower_004ff678)(__wc); + return wVar1; +} + + +================================================================== + +### FUNC 0015d0a0 (16 bytes) name=cvSetImageROI + +void cvSetImageROI(void) + +{ + (*(code *)PTR_cvSetImageROI_004ff680)(); + return; +} + + +================================================================== + +### FUNC 0015d0b0 (16 bytes) name=PushFrame + +void __thiscall CFunctions::PushFrame(void) + +{ + (*(code *)PTR_PushFrame_004ff688)(); + return; +} + + +================================================================== + +### FUNC 0015d0c0 (16 bytes) name=setVisible + +void __thiscall MDTHelper::setVisible(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_setVisible_004ff690)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d0d0 (16 bytes) name=subtract + +void __thiscall cv::MatOp::subtract(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + (*(code *)PTR_subtract_004ff698)(); + return; +} + + +================================================================== + +### FUNC 0015d0e0 (16 bytes) name=~TLSDataContainer + +void __thiscall cv::TLSDataContainer::~TLSDataContainer(TLSDataContainer *this) + +{ + (*(code *)PTR__TLSDataContainer_004ff6a0)(); + return; +} + + +================================================================== + +### FUNC 0015d0f0 (16 bytes) name=mbrtowc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t mbrtowc(wchar_t *__pwc,char *__s,size_t __n,mbstate_t *__p) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_mbrtowc_004ff6a8)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015d100 (16 bytes) name=GetJstring + +void GetJstring(_JNIEnv *param_1,char *param_2,_jobject *param_3,char *param_4,ulong param_5) + +{ + (*(code *)PTR_GetJstring_004ff6b0)(); + return; +} + + +================================================================== + +### FUNC 0015d110 (16 bytes) name=reshape + +void cv::UMat::reshape(int param_1,int param_2) + +{ + (*(code *)PTR_reshape_004ff6b8)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d120 (16 bytes) name=getOGlBuffer + +void cv::_InputArray::getOGlBuffer(void) + +{ + (*(code *)PTR_getOGlBuffer_004ff6c0)(); + return; +} + + +================================================================== + +### FUNC 0015d130 (16 bytes) name=_Unwind_SetIP + +void _Unwind_SetIP(void) + +{ + (*(code *)PTR__Unwind_SetIP_004ff6c8)(); + return; +} + + +================================================================== + +### FUNC 0015d140 (16 bytes) name=copySize + +void __thiscall cv::Mat::copySize(Mat *this,Mat *param_1) + +{ + (*(code *)PTR_copySize_004ff6d0)(); + return; +} + + +================================================================== + +### FUNC 0015d150 (16 bytes) name=dims + +void __thiscall cv::_InputArray::dims(_InputArray *this,int param_1) + +{ + (*(code *)PTR_dims_004ff6d8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015d160 (16 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 0015d170 (16 bytes) name=btowc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t btowc(int __c) + +{ + wint_t wVar1; + + wVar1 = (*(code *)PTR_btowc_004ff6e8)(__c); + return wVar1; +} + + +================================================================== + +### FUNC 0015d180 (16 bytes) name=cvFindGraphEdgeByPtr + +void cvFindGraphEdgeByPtr(void) + +{ + (*(code *)PTR_cvFindGraphEdgeByPtr_004ff6f0)(); + return; +} + + +================================================================== + +### FUNC 0015d190 (16 bytes) name=getMat + +void cv::UMat::getMat(int param_1) + +{ + (*(code *)PTR_getMat_004ff6f8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015d1a0 (16 bytes) name=patchNaNs + +void cv::patchNaNs(_InputOutputArray *param_1,double param_2) + +{ + (*(code *)PTR_patchNaNs_004ff700)(); + return; +} + + +================================================================== + +### FUNC 0015d1b0 (16 bytes) name=getMat_ + +void cv::_InputArray::getMat_(int param_1) + +{ + (*(code *)PTR_getMat__004ff708)(param_1); + return; +} + + +================================================================== + +### FUNC 0015d1c0 (16 bytes) name=operator= + +void __thiscall cv::ocl::ProgramSource::operator=(ProgramSource *this,ProgramSource *param_1) + +{ + (*(code *)PTR_operator__004ff710)(); + return; +} + + +================================================================== + +### FUNC 0015d1d0 (16 bytes) name=removeNode + +void __thiscall cv::SparseMat::removeNode(SparseMat *this,ulong param_1,ulong param_2,ulong param_3) + +{ + (*(code *)PTR_removeNode_004ff718)(); + return; +} + + +================================================================== + +### FUNC 0015d1e0 (16 bytes) name=cvGetFileNode + +void cvGetFileNode(void) + +{ + (*(code *)PTR_cvGetFileNode_004ff720)(); + return; +} + + +================================================================== + +### FUNC 0015d1f0 (16 bytes) name=~MatExpr + +void __thiscall cv::MatExpr::~MatExpr(MatExpr *this) + +{ + (*(code *)PTR__MatExpr_004ff728)(); + return; +} + + +================================================================== + +### FUNC 0015d200 (16 bytes) name=getwc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t getwc(__FILE *__stream) + +{ + wint_t wVar1; + + wVar1 = (*(code *)PTR_getwc_004ff730)((int)__stream); + return wVar1; +} + + +================================================================== + +### FUNC 0015d210 (16 bytes) name=LinkCamera + +void CNetComm::LinkCamera + (uint param_1,char *param_2,char *param_3,uint param_4,uint param_5,char *param_6, + char *param_7) + +{ + (*(code *)PTR_LinkCamera_004ff738)(param_1,param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### FUNC 0015d220 (16 bytes) name=GetTemperatureProbe + +void CMagDevice::GetTemperatureProbe(uint param_1,uint param_2,uint param_3) + +{ + (*(code *)PTR_GetTemperatureProbe_004ff740)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d230 (16 bytes) name=pthread_mutex_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_destroy(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_destroy_004ff748)((int)__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 0015d240 (16 bytes) name=_Unwind_GetLanguageSpecificData + +void _Unwind_GetLanguageSpecificData(void) + +{ + (*(code *)PTR__Unwind_GetLanguageSpecificData_004ff750)(); + return; +} + + +================================================================== + +### FUNC 0015d250 (16 bytes) name=ResizeBMP_2X + +void __thiscall CFunctions::ResizeBMP_2X(CFunctions *this) + +{ + (*(code *)PTR_ResizeBMP_2X_004ff758)(); + return; +} + + +================================================================== + +### FUNC 0015d260 (16 bytes) name=resetColorArray + +void cv::ogl::Arrays::resetColorArray(void) + +{ + (*(code *)PTR_resetColorArray_004ff760)(); + return; +} + + +================================================================== + +### FUNC 0015d270 (16 bytes) name=CvMatND + +void __thiscall CvMatND::CvMatND(CvMatND *this,Mat *param_1) + +{ + (*(code *)PTR_CvMatND_004ff768)(); + return; +} + + +================================================================== + +### FUNC 0015d280 (16 bytes) name=getUMat + +void cv::Mat::getUMat(void) + +{ + (*(code *)PTR_getUMat_004ff770)(); + return; +} + + +================================================================== + +### FUNC 0015d290 (16 bytes) name=GetEXLevel + +void __thiscall CMagDevice::GetEXLevel(CMagDevice *this) + +{ + (*(code *)PTR_GetEXLevel_004ff778)(); + return; +} + + +================================================================== + +### FUNC 0015d2a0 (16 bytes) name=swap + +void cv::swap(Mat *param_1,Mat *param_2) + +{ + (*(code *)PTR_swap_004ff780)(); + return; +} + + +================================================================== + +### FUNC 0015d2b0 (16 bytes) name=MAG_SetDetectParameter + +void MAG_SetDetectParameter(void) + +{ + (*(code *)PTR_MAG_SetDetectParameter_004ff788)(); + return; +} + + +================================================================== + +### FUNC 0015d2c0 (16 bytes) name=erode + +void cv::erode(void) + +{ + (*(code *)PTR_erode_004ff790)(); + return; +} + + +================================================================== + +### FUNC 0015d2d0 (16 bytes) name=close + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int close(int __fd) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_close_004ff798)(__fd); + return iVar1; +} + + +================================================================== + +### FUNC 0015d2e0 (16 bytes) name=SetAutoEnlargePara + +void CMagDevice::SetAutoEnlargePara(uint param_1,int param_2,int param_3) + +{ + (*(code *)PTR_SetAutoEnlargePara_004ff7a0)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d2f0 (16 bytes) name=split + +void cv::split(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_split_004ff7a8)(); + return; +} + + +================================================================== + +### FUNC 0015d300 (16 bytes) name=MAG_DelChannel + +void MAG_DelChannel(void) + +{ + (*(code *)PTR_MAG_DelChannel_004ff7b0)(); + return; +} + + +================================================================== + +### FUNC 0015d310 (16 bytes) name=operator.new[] + +void * operator_new__(ulong param_1) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_operator_new___004ff7b8)(); + return pvVar1; +} + + +================================================================== + +### FUNC 0015d320 (16 bytes) name=DoSomething + +void __thiscall CFunctions::DoSomething(CFunctions *this,int param_1,uint param_2) + +{ + (*(code *)PTR_DoSomething_004ff7c0)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d330 (16 bytes) name=CalTaoAtm + +void __thiscall CFunctions::CalTaoAtm(CFunctions *this,struct_FixPara *param_1) + +{ + (*(code *)PTR_CalTaoAtm_004ff7c8)(); + return; +} + + +================================================================== + +### FUNC 0015d340 (16 bytes) name=cvDrawContours + +void cvDrawContours(void) + +{ + (*(code *)PTR_cvDrawContours_004ff7d0)(); + return; +} + + +================================================================== + +### FUNC 0015d350 (16 bytes) name=MAG_NewChannel + +void MAG_NewChannel(void) + +{ + (*(code *)PTR_MAG_NewChannel_004ff7d8)(); + return; +} + + +================================================================== + +### FUNC 0015d360 (16 bytes) name=setJpg + +void __thiscall MDTHelper::setJpg(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_setJpg_004ff7e0)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d370 (16 bytes) name=PlatformInfo + +void __thiscall cv::ocl::PlatformInfo::PlatformInfo(PlatformInfo *this,void *param_1) + +{ + (*(code *)PTR_PlatformInfo_004ff7e8)(); + return; +} + + +================================================================== + +### FUNC 0015d380 (16 bytes) name=create + +void __thiscall cv::Mat::create(Mat *this,int param_1,int *param_2,int param_3) + +{ + (*(code *)PTR_create_004ff7f0)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d390 (16 bytes) name=vconcat + +void cv::vconcat(Mat *param_1,ulong param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_vconcat_004ff7f8)(); + return; +} + + +================================================================== + +### FUNC 0015d3a0 (16 bytes) name=getProg + +void cv::ocl::Context::getProg(ProgramSource *param_1,String *param_2,String *param_3) + +{ + (*(code *)PTR_getProg_004ff800)(); + return; +} + + +================================================================== + +### FUNC 0015d3b0 (16 bytes) name=morphologyEx + +void cv::morphologyEx(void) + +{ + (*(code *)PTR_morphologyEx_004ff808)(); + return; +} + + +================================================================== + +### FUNC 0015d3c0 (16 bytes) name=pthread_mutexattr_settype + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_settype(pthread_mutexattr_t *__attr,int __kind) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutexattr_settype_004ff810)((int)__attr,__kind); + return iVar1; +} + + +================================================================== + +### FUNC 0015d3d0 (16 bytes) name=wmemmove + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemmove(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + wchar_t *pwVar1; + + pwVar1 = (wchar_t *)(*(code *)PTR_wmemmove_004ff818)(); + return pwVar1; +} + + +================================================================== + +### FUNC 0015d3e0 (16 bytes) name=SetSubsectionEnlargePara + +void CMagDevice::SetSubsectionEnlargePara(int param_1,int param_2,uchar param_3,uchar param_4) + +{ + (*(code *)PTR_SetSubsectionEnlargePara_004ff820)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015d3f0 (16 bytes) name=unlock + +void __thiscall cv::Mutex::unlock(Mutex *this) + +{ + (*(code *)PTR_unlock_004ff828)(); + return; +} + + +================================================================== + +### FUNC 0015d400 (16 bytes) name=set + +void __thiscall cv::ocl::Device::set(Device *this,void *param_1) + +{ + (*(code *)PTR_set_004ff830)(); + return; +} + + +================================================================== + +### FUNC 0015d410 (16 bytes) name=subtract + +void cv::subtract(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4,int param_5) + +{ + (*(code *)PTR_subtract_004ff838)(); + return; +} + + +================================================================== + +### FUNC 0015d420 (16 bytes) name=reshape + +void cv::Mat::reshape(int param_1,int param_2) + +{ + (*(code *)PTR_reshape_004ff840)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d430 (16 bytes) name=getenv + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * getenv(char *__name) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_getenv_004ff848)(); + return pcVar1; +} + + +================================================================== + +### FUNC 0015d440 (16 bytes) name=GetFrameStatisticalData + +void __thiscall CMagDevice::GetFrameStatisticalData(CMagDevice *this) + +{ + (*(code *)PTR_GetFrameStatisticalData_004ff850)(); + return; +} + + +================================================================== + +### FUNC 0015d450 (16 bytes) name=polarToCart + +void cv::polarToCart(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,bool param_5) + +{ + (*(code *)PTR_polarToCart_004ff858)(); + return; +} + + +================================================================== + +### FUNC 0015d460 (16 bytes) name=getVisible + +void __thiscall MDTHelper::getVisible(MDTHelper *this,uchar **param_1) + +{ + (*(code *)PTR_getVisible_004ff860)(); + return; +} + + +================================================================== + +### FUNC 0015d470 (16 bytes) name=TLSDataContainer + +void __thiscall cv::TLSDataContainer::TLSDataContainer(TLSDataContainer *this) + +{ + (*(code *)PTR_TLSDataContainer_004ff868)(); + return; +} + + +================================================================== + +### FUNC 0015d480 (16 bytes) name=strftime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strftime(char *__s,size_t __maxsize,char *__format,tm *__tp) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_strftime_004ff870)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015d490 (16 bytes) name=gzgets + +void gzgets(void) + +{ + (*(code *)PTR_gzgets_004ff878)(); + return; +} + + +================================================================== + +### FUNC 0015d4a0 (16 bytes) name=exp + +void cv::exp(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_exp_004ff880)(); + return; +} + + +================================================================== + +### FUNC 0015d4b0 (16 bytes) name=pthread_join + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_join(pthread_t __th,void **__thread_return) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_join_004ff888)((int)__th); + return iVar1; +} + + +================================================================== + +### FUNC 0015d4c0 (16 bytes) name=usbi_parse_descriptor + +void usbi_parse_descriptor(void) + +{ + (*(code *)PTR_usbi_parse_descriptor_004ff890)(); + return; +} + + +================================================================== + +### FUNC 0015d4d0 (16 bytes) name=set + +void __thiscall cv::ocl::Kernel::set(Kernel *this,int param_1,KernelArg *param_2) + +{ + (*(code *)PTR_set_004ff898)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015d4e0 (16 bytes) name=create + +void __thiscall cv::ocl::Queue::create(Queue *this,Context *param_1,Device *param_2) + +{ + (*(code *)PTR_create_004ff8a0)(); + return; +} + + +================================================================== + +### FUNC 0015d4f0 (16 bytes) name=Mat + +void __thiscall cv::Mat::Mat(Mat *this,Mat *param_1,Range *param_2,Range *param_3) + +{ + (*(code *)PTR_Mat_004ff8a8)(); + return; +} + + +================================================================== + +### FUNC 0015d500 (16 bytes) name=cvPow + +void cvPow(void) + +{ + (*(code *)PTR_cvPow_004ff8b0)(); + return; +} + + +================================================================== + +### FUNC 0015d510 (16 bytes) name=Write + +void __thiscall MStream::Write(MStream *this,__sFILE *param_1) + +{ + (*(code *)PTR_Write_004ff8b8)(); + return; +} + + +================================================================== + +### FUNC 0015d520 (16 bytes) name=min + +void cv::min(Mat *param_1,Mat *param_2,Mat *param_3) + +{ + (*(code *)PTR_min_004ff8c0)(); + return; +} + + +================================================================== + +### FUNC 0015d530 (16 bytes) name=__cxa_end_catch + +void __cxa_end_catch(void) + +{ + (*(code *)PTR___cxa_end_catch_004ff8c8)(); + return; +} + + +================================================================== + +### FUNC 0015d540 (16 bytes) name=MAG_FixTemperature2 + +void MAG_FixTemperature2(void) + +{ + (*(code *)PTR_MAG_FixTemperature2_004ff8d0)(); + return; +} + + +================================================================== + +### FUNC 0015d550 (16 bytes) name=multiply + +void cv::multiply(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,double param_4, + int param_5) + +{ + (*(code *)PTR_multiply_004ff8d8)(); + return; +} + + +================================================================== + +### FUNC 0015d560 (16 bytes) name=writeScalar + +void cv::writeScalar(FileStorage *param_1,float param_2) + +{ + (*(code *)PTR_writeScalar_004ff8e0)(); + return; +} + + +================================================================== + +### FUNC 0015d570 (16 bytes) name=operator+= + +void __thiscall cv::FileNodeIterator::operator+=(FileNodeIterator *this,int param_1) + +{ + (*(code *)PTR_operator___004ff8e8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015d580 (16 bytes) name=GetTickCount + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void GetTickCount(void) + +{ + (*(code *)PTR_GetTickCount_004ff8f0)(); + return; +} + + +================================================================== + +### FUNC 0015d590 (16 bytes) name=newOutputObjects + +void newOutputObjects(_JNIEnv *param_1,int param_2,int param_3,int param_4,int param_5,int param_6, + _jobject *param_7) + +{ + (*(code *)PTR_newOutputObjects_004ff8f8)(param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 0015d5a0 (16 bytes) name=usbi_handle_transfer_cancellation + +void usbi_handle_transfer_cancellation(void) + +{ + (*(code *)PTR_usbi_handle_transfer_cancellation_004ff900)(); + return; +} + + +================================================================== + +### FUNC 0015d5b0 (16 bytes) name=release + +void __thiscall cv::_OutputArray::release(_OutputArray *this) + +{ + (*(code *)PTR_release_004ff908)(); + return; +} + + +================================================================== + +### FUNC 0015d5c0 (16 bytes) name=fcntl + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fcntl(int __fd,int __cmd,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fcntl_004ff910)(__fd,__cmd); + return iVar1; +} + + +================================================================== + +### FUNC 0015d5d0 (16 bytes) name=cvSeqPop + +void cvSeqPop(void) + +{ + (*(code *)PTR_cvSeqPop_004ff918)(); + return; +} + + +================================================================== + +### FUNC 0015d5e0 (16 bytes) name=Init + +void CNetComm::Init(void *param_1) + +{ + (*(code *)PTR_Init_004ff920)(); + return; +} + + +================================================================== + +### FUNC 0015d5f0 (16 bytes) name=mulTransposed + +void cv::mulTransposed(_InputArray *param_1,_OutputArray *param_2,bool param_3,_InputArray *param_4, + double param_5,int param_6) + +{ + (*(code *)PTR_mulTransposed_004ff928)(param_1,param_2,param_3,param_4,param_6); + return; +} + + +================================================================== + +### FUNC 0015d600 (16 bytes) name=__cxa_allocate_exception + +void __cxa_allocate_exception(void) + +{ + (*(code *)PTR___cxa_allocate_exception_004ff930)(); + return; +} + + +================================================================== + +### FUNC 0015d610 (16 bytes) name=MAG_SetDetectMaskPoints + +void MAG_SetDetectMaskPoints(void) + +{ + (*(code *)PTR_MAG_SetDetectMaskPoints_004ff938)(); + return; +} + + +================================================================== + +### FUNC 0015d620 (16 bytes) name=Mat + +void __thiscall cv::Mat::Mat(Mat *this,Mat *param_1,Range *param_2) + +{ + (*(code *)PTR_Mat_004ff940)(); + return; +} + + +================================================================== + +### FUNC 0015d630 (16 bytes) name=~Exception + +void __thiscall cv::Exception::~Exception(Exception *this) + +{ + (*(code *)PTR__Exception_004ff948)(); + return; +} + + +================================================================== + +### FUNC 0015d640 (16 bytes) name=exception_ptr + +void __thiscall +std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this,void *param_1) + +{ + (*(code *)PTR_exception_ptr_004ff950)(); + return; +} + + +================================================================== + +### FUNC 0015d650 (16 bytes) name=operator++ + +void __thiscall cv::SparseMatConstIterator::operator++(SparseMatConstIterator *this) + +{ + (*(code *)PTR_operator___004ff958)(); + return; +} + + +================================================================== + +### FUNC 0015d660 (16 bytes) name=pthread_mutex_trylock + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_trylock(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_trylock_004ff960)((int)__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 0015d670 (16 bytes) name=wcslen + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcslen(wchar_t *__s) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_wcslen_004ff968)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015d680 (16 bytes) name=setText + +void __thiscall MDTHelper::setText(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_setText_004ff970)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d690 (16 bytes) name=push_back + +void __thiscall +std::vector>::push_back + (vector> *this,string *param_1) + +{ + (*(code *)PTR_push_back_004ff978)(); + return; +} + + +================================================================== + +### FUNC 0015d6a0 (16 bytes) name=size + +void __thiscall cv::FileNode::size(FileNode *this) + +{ + (*(code *)PTR_size_004ff980)(); + return; +} + + +================================================================== + +### FUNC 0015d6b0 (16 bytes) name=adaptiveThreshold + +void cv::adaptiveThreshold + (_InputArray *param_1,_OutputArray *param_2,double param_3,int param_4,int param_5, + int param_6,double param_7) + +{ + (*(code *)PTR_adaptiveThreshold_004ff988)(param_1,param_2,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 0015d6c0 (16 bytes) name=seek + +void __thiscall cv::MatConstIterator::seek(MatConstIterator *this,long param_1,bool param_2) + +{ + (*(code *)PTR_seek_004ff990)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d6d0 (16 bytes) name=integral + +void cv::integral(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3,int param_4, + int param_5) + +{ + (*(code *)PTR_integral_004ff998)(); + return; +} + + +================================================================== + +### FUNC 0015d6e0 (16 bytes) name=get_new_handler + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::get_new_handler(void) + +{ + (*(code *)PTR_get_new_handler_004ff9a0)(); + return; +} + + +================================================================== + +### FUNC 0015d6f0 (16 bytes) name=__android_log_write + +void __android_log_write(void) + +{ + (*(code *)PTR___android_log_write_004ff9a8)(); + return; +} + + +================================================================== + +### FUNC 0015d700 (16 bytes) name=CAccumulator + +void __thiscall CAccumulator::CAccumulator(CAccumulator *this) + +{ + (*(code *)PTR_CAccumulator_004ff9b0)(); + return; +} + + +================================================================== + +### FUNC 0015d710 (16 bytes) name=GetChannelIndex + +void __thiscall CMagDevice::GetChannelIndex(CMagDevice *this) + +{ + (*(code *)PTR_GetChannelIndex_004ff9b8)(); + return; +} + + +================================================================== + +### FUNC 0015d720 (16 bytes) name=Device + +void __thiscall cv::ocl::Device::Device(Device *this) + +{ + (*(code *)PTR_Device_004ff9c0)(); + return; +} + + +================================================================== + +### FUNC 0015d730 (16 bytes) name=waitForMsecs + +void __thiscall Condition::waitForMsecs(Condition *this,int param_1) + +{ + (*(code *)PTR_waitForMsecs_004ff9c8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015d740 (16 bytes) name=operator== + +void std::__exception_ptr::operator==(exception_ptr *param_1,exception_ptr *param_2) + +{ + (*(code *)PTR_operator___004ff9d0)(); + return; +} + + +================================================================== + +### FUNC 0015d750 (16 bytes) name=usbi_clear_event + +void usbi_clear_event(void) + +{ + (*(code *)PTR_usbi_clear_event_004ff9d8)(); + return; +} + + +================================================================== + +### FUNC 0015d760 (16 bytes) name=_M_emplace_back_aux + +void __thiscall +std::vector>::_M_emplace_back_aux + (vector> *this,MStream *param_1) + +{ + (*(code *)PTR__M_emplace_back_aux_004ff9e0)(); + return; +} + + +================================================================== + +### FUNC 0015d770 (16 bytes) name=cvInitSparseMatIterator + +void cvInitSparseMatIterator(void) + +{ + (*(code *)PTR_cvInitSparseMatIterator_004ff9e8)(); + return; +} + + +================================================================== + +### FUNC 0015d780 (16 bytes) name=cvCreateMemStorage + +void cvCreateMemStorage(void) + +{ + (*(code *)PTR_cvCreateMemStorage_004ff9f0)(); + return; +} + + +================================================================== + +### FUNC 0015d790 (16 bytes) name=~bad_alloc + +void __thiscall std::bad_alloc::~bad_alloc(bad_alloc *this) + +{ + (*(code *)PTR__bad_alloc_004ff9f8)(); + return; +} + + +================================================================== + +### FUNC 0015d7a0 (16 bytes) name=PushFrame + +void __thiscall CAccumulator::PushFrame(CAccumulator *this,ushort *param_1) + +{ + (*(code *)PTR_PushFrame_004ffa00)(); + return; +} + + +================================================================== + +### FUNC 0015d7b0 (16 bytes) name=cvSetAdd + +void cvSetAdd(void) + +{ + (*(code *)PTR_cvSetAdd_004ffa08)(); + return; +} + + +================================================================== + +### FUNC 0015d7c0 (16 bytes) name=cvGetElemType + +void cvGetElemType(void) + +{ + (*(code *)PTR_cvGetElemType_004ffa10)(); + return; +} + + +================================================================== + +### FUNC 0015d7d0 (16 bytes) name=CVideoFunctions + +void __thiscall CVideoFunctions::CVideoFunctions(CVideoFunctions *this) + +{ + (*(code *)PTR_CVideoFunctions_004ffa18)(); + return; +} + + +================================================================== + +### FUNC 0015d7e0 (16 bytes) name=Program + +void __thiscall cv::ocl::Program::Program(Program *this) + +{ + (*(code *)PTR_Program_004ffa20)(); + return; +} + + +================================================================== + +### FUNC 0015d7f0 (16 bytes) name=libusb_wrap_fd + +void libusb_wrap_fd(void) + +{ + (*(code *)PTR_libusb_wrap_fd_004ffa28)(); + return; +} + + +================================================================== + +### FUNC 0015d800 (16 bytes) name=backProject + +void cv::PCA::backProject(_InputArray *param_1) + +{ + (*(code *)PTR_backProject_004ffa30)(); + return; +} + + +================================================================== + +### FUNC 0015d810 (16 bytes) name=Program + +void __thiscall +cv::ocl::Program::Program(Program *this,ProgramSource *param_1,String *param_2,String *param_3) + +{ + (*(code *)PTR_Program_004ffa38)(); + return; +} + + +================================================================== + +### FUNC 0015d820 (16 bytes) name=toJString + +void toJString(_JNIEnv *param_1,char *param_2) + +{ + (*(code *)PTR_toJString_004ffa40)(); + return; +} + + +================================================================== + +### FUNC 0015d830 (16 bytes) name=open + +void __thiscall cv::FileStorage::open(FileStorage *this,String *param_1,int param_2,String *param_3) + +{ + (*(code *)PTR_open_004ffa48)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d840 (16 bytes) name=cvMemStorageAllocString + +void cvMemStorageAllocString(void) + +{ + (*(code *)PTR_cvMemStorageAllocString_004ffa50)(); + return; +} + + +================================================================== + +### FUNC 0015d850 (16 bytes) name=preferredVectorWidthFloat + +void __thiscall cv::ocl::Device::preferredVectorWidthFloat(Device *this) + +{ + (*(code *)PTR_preferredVectorWidthFloat_004ffa58)(); + return; +} + + +================================================================== + +### FUNC 0015d860 (16 bytes) name=cvRawDataToScalar + +void cvRawDataToScalar(void) + +{ + (*(code *)PTR_cvRawDataToScalar_004ffa60)(); + return; +} + + +================================================================== + +### FUNC 0015d870 (16 bytes) name=cvSeqSlice + +void cvSeqSlice(void) + +{ + (*(code *)PTR_cvSeqSlice_004ffa68)(); + return; +} + + +================================================================== + +### FUNC 0015d880 (16 bytes) name=InterpolateShort + +void __thiscall +CFunctions::InterpolateShort + (CFunctions *this,short *param_1,short *param_2,short *param_3,uint param_4) + +{ + (*(code *)PTR_InterpolateShort_004ffa70)(); + return; +} + + +================================================================== + +### FUNC 0015d890 (16 bytes) name=clock_gettime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int clock_gettime(clockid_t __clock_id,timespec *__tp) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_clock_gettime_004ffa78)(__clock_id); + return iVar1; +} + + +================================================================== + +### FUNC 0015d8a0 (16 bytes) name=checkRange + +void cv::checkRange(_InputArray *param_1,bool param_2,Point_ *param_3,double param_4,double param_5) + +{ + (*(code *)PTR_checkRange_004ffa80)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d8b0 (16 bytes) name=~MDTHelper + +void __thiscall MDTHelper::~MDTHelper(MDTHelper *this) + +{ + (*(code *)PTR__MDTHelper_004ffa88)(); + return; +} + + +================================================================== + +### FUNC 0015d8c0 (16 bytes) name=cvSeqPopFront + +void cvSeqPopFront(void) + +{ + (*(code *)PTR_cvSeqPopFront_004ffa90)(); + return; +} + + +================================================================== + +### FUNC 0015d8d0 (16 bytes) name=readlink + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t readlink(char *__path,char *__buf,size_t __len) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_readlink_004ffa98)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015d8e0 (16 bytes) name=GetLineTemperatureInfo + +void CMagDevice::GetLineTemperatureInfo + (int *param_1,uint param_2,int *param_3,uint param_4,uint param_5,uint param_6, + uint param_7) + +{ + (*(code *)PTR_GetLineTemperatureInfo_004ffaa0) + (param_1,param_2,param_3,param_4,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 0015d8f0 (16 bytes) name=sscanf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int sscanf(char *__s,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_sscanf_004ffaa8)((int)__s); + return iVar1; +} + + +================================================================== + +### FUNC 0015d900 (16 bytes) name=calcCovarMatrix + +void cv::calcCovarMatrix(Mat *param_1,int param_2,Mat *param_3,Mat *param_4,int param_5,int param_6) + +{ + (*(code *)PTR_calcCovarMatrix_004ffab0)(param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 0015d910 (16 bytes) name=free + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void free(void *__ptr) + +{ + (*(code *)PTR_free_004ffab8)(); + return; +} + + +================================================================== + +### FUNC 0015d920 (16 bytes) name=points + +void __thiscall cv::RotatedRect::points(RotatedRect *this,Point_ *param_1) + +{ + (*(code *)PTR_points_004ffac0)(); + return; +} + + +================================================================== + +### FUNC 0015d930 (16 bytes) name=sqrt + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double sqrt(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_sqrt_004ffac8)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015d940 (16 bytes) name=cross + +void cv::Mat::cross(_InputArray *param_1) + +{ + (*(code *)PTR_cross_004ffad0)(); + return; +} + + +================================================================== + +### FUNC 0015d950 (16 bytes) name=usbi_hotplug_deregister_all + +void usbi_hotplug_deregister_all(void) + +{ + (*(code *)PTR_usbi_hotplug_deregister_all_004ffad8)(); + return; +} + + +================================================================== + +### FUNC 0015d960 (16 bytes) name=fread + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fread(void *__ptr,size_t __size,size_t __n,FILE *__stream) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_fread_004ffae0)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015d970 (16 bytes) name=completeSymm + +void cv::completeSymm(_InputOutputArray *param_1,bool param_2) + +{ + (*(code *)PTR_completeSymm_004ffae8)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015d980 (16 bytes) name=resizeHashTab + +void __thiscall cv::SparseMat::resizeHashTab(SparseMat *this,ulong param_1) + +{ + (*(code *)PTR_resizeHashTab_004ffaf0)(); + return; +} + + +================================================================== + +### FUNC 0015d990 (16 bytes) name=~CSmoother + +void __thiscall CSmoother::~CSmoother(CSmoother *this) + +{ + (*(code *)PTR__CSmoother_004ffaf8)(); + return; +} + + +================================================================== + +### FUNC 0015d9a0 (16 bytes) name=strchr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strchr(char *__s,int __c) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strchr_004ffb00)(__s,__c); + return pcVar1; +} + + +================================================================== + +### FUNC 0015d9b0 (16 bytes) name=cvSliceLength + +void cvSliceLength(void) + +{ + (*(code *)PTR_cvSliceLength_004ffb08)(); + return; +} + + +================================================================== + +### FUNC 0015d9c0 (16 bytes) name=kind + +void __thiscall cv::_InputArray::kind(_InputArray *this) + +{ + (*(code *)PTR_kind_004ffb10)(); + return; +} + + +================================================================== + +### FUNC 0015d9d0 (16 bytes) name=setLabel + +void __thiscall MDTHelper::setLabel(MDTHelper *this,ROI *param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_setLabel_004ffb18)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015d9e0 (16 bytes) name=usbi_add_pollfd + +void usbi_add_pollfd(void) + +{ + (*(code *)PTR_usbi_add_pollfd_004ffb20)(); + return; +} + + +================================================================== + +### FUNC 0015d9f0 (16 bytes) name=operator= + +void __thiscall cv::Mat::operator=(Mat *this,Mat *param_1) + +{ + (*(code *)PTR_operator__004ffb28)(); + return; +} + + +================================================================== + +### FUNC 0015da00 (16 bytes) name=StopReceiveImg_UnProtected + +void __thiscall CNetComm::StopReceiveImg_UnProtected(CNetComm *this,int param_1) + +{ + (*(code *)PTR_StopReceiveImg_UnProtected_004ffb30)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015da10 (16 bytes) name=strtold + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double strtold(char *__nptr,char **__endptr) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_strtold_004ffb38)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015da20 (16 bytes) name=cvErrorStr + +void cvErrorStr(void) + +{ + (*(code *)PTR_cvErrorStr_004ffb40)(); + return; +} + + +================================================================== + +### FUNC 0015da30 (16 bytes) name=calloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * calloc(size_t __nmemb,size_t __size) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_calloc_004ffb48)(); + return pvVar1; +} + + +================================================================== + +### FUNC 0015da40 (16 bytes) name=pthread_key_delete + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_delete(pthread_key_t __key) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_key_delete_004ffb50)(__key); + return iVar1; +} + + +================================================================== + +### FUNC 0015da50 (16 bytes) name=mkdir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int mkdir(char *__path,__mode_t __mode) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_mkdir_004ffb58)((int)__path,__mode); + return iVar1; +} + + +================================================================== + +### FUNC 0015da60 (16 bytes) name=getDefault + +void cv::ocl::Platform::getDefault(void) + +{ + (*(code *)PTR_getDefault_004ffb60)(); + return; +} + + +================================================================== + +### FUNC 0015da70 (16 bytes) name=~MatOp + +void __thiscall cv::MatOp::~MatOp(MatOp *this) + +{ + (*(code *)PTR__MatOp_004ffb68)(); + return; +} + + +================================================================== + +### FUNC 0015da80 (16 bytes) name=strcmp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strcmp(char *__s1,char *__s2) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_strcmp_004ffb70)((int)__s1); + return iVar1; +} + + +================================================================== + +### FUNC 0015da90 (16 bytes) name=CMagDevice + +void __thiscall CMagDevice::CMagDevice(CMagDevice *this) + +{ + (*(code *)PTR_CMagDevice_004ffb78)(); + return; +} + + +================================================================== + +### FUNC 0015daa0 (16 bytes) name=UMat + +void __thiscall cv::UMat::UMat(UMat *this,UMat *param_1,Range *param_2) + +{ + (*(code *)PTR_UMat_004ffb80)(); + return; +} + + +================================================================== + +### FUNC 0015dab0 (16 bytes) name=CorrectTemperature + +void CFunctions::CorrectTemperature(int param_1,float param_2,uint param_3) + +{ + (*(code *)PTR_CorrectTemperature_004ffb88)(param_1,param_3); + return; +} + + +================================================================== + +### FUNC 0015dac0 (16 bytes) name=AndroidBitmap_lockPixels + +void AndroidBitmap_lockPixels(void) + +{ + (*(code *)PTR_AndroidBitmap_lockPixels_004ffb90)(); + return; +} + + +================================================================== + +### FUNC 0015dad0 (16 bytes) name=cvFindNextContour + +void cvFindNextContour(void) + +{ + (*(code *)PTR_cvFindNextContour_004ffb98)(); + return; +} + + +================================================================== + +### FUNC 0015dae0 (16 bytes) name=malloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * malloc(size_t __size) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_malloc_004ffba0)(); + return pvVar1; +} + + +================================================================== + +### FUNC 0015daf0 (16 bytes) name=copyFrom + +void cv::ogl::Buffer::copyFrom(void) + +{ + (*(code *)PTR_copyFrom_004ffba8)(); + return; +} + + +================================================================== + +### FUNC 0015db00 (16 bytes) name=cvWriteRawData + +void cvWriteRawData(void) + +{ + (*(code *)PTR_cvWriteRawData_004ffbb0)(); + return; +} + + +================================================================== + +### FUNC 0015db10 (16 bytes) name=~ParallelLoopBody + +void __thiscall cv::ParallelLoopBody::~ParallelLoopBody(ParallelLoopBody *this) + +{ + (*(code *)PTR__ParallelLoopBody_004ffbb8)(); + return; +} + + +================================================================== + +### FUNC 0015db20 (16 bytes) name=read + +void cv::read(FileNode *param_1,float *param_2,float param_3) + +{ + (*(code *)PTR_read_004ffbc0)(); + return; +} + + +================================================================== + +### FUNC 0015db30 (16 bytes) name=fastMalloc + +void cv::fastMalloc(ulong param_1) + +{ + (*(code *)PTR_fastMalloc_004ffbc8)(); + return; +} + + +================================================================== + +### FUNC 0015db40 (16 bytes) name=read + +void cv::read(FileNode *param_1,String *param_2,String *param_3) + +{ + (*(code *)PTR_read_004ffbd0)(); + return; +} + + +================================================================== + +### FUNC 0015db50 (16 bytes) name=cvStartWriteStruct + +void cvStartWriteStruct(void) + +{ + (*(code *)PTR_cvStartWriteStruct_004ffbd8)(); + return; +} + + +================================================================== + +### FUNC 0015db60 (16 bytes) name=strxfrm + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strxfrm(char *__dest,char *__src,size_t __n) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_strxfrm_004ffbe0)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015db70 (16 bytes) name=contourArea + +void cv::contourArea(_InputArray *param_1,bool param_2) + +{ + (*(code *)PTR_contourArea_004ffbe8)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015db80 (16 bytes) name=MatExpr + +void __thiscall cv::MatExpr::MatExpr(MatExpr *this,Mat *param_1) + +{ + (*(code *)PTR_MatExpr_004ffbf0)(); + return; +} + + +================================================================== + +### FUNC 0015db90 (16 bytes) name=setTo + +void __thiscall +cv::_OutputArray::setTo(_OutputArray *this,_InputArray *param_1,_InputArray *param_2) + +{ + (*(code *)PTR_setTo_004ffbf8)(); + return; +} + + +================================================================== + +### FUNC 0015dba0 (16 bytes) name=cvFindType + +void cvFindType(void) + +{ + (*(code *)PTR_cvFindType_004ffc00)(); + return; +} + + +================================================================== + +### FUNC 0015dbb0 (16 bytes) name=wmemset + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemset(wchar_t *__s,wchar_t __c,size_t __n) + +{ + wchar_t *pwVar1; + + pwVar1 = (wchar_t *)(*(code *)PTR_wmemset_004ffc08)(__s,__c); + return pwVar1; +} + + +================================================================== + +### FUNC 0015dbc0 (16 bytes) name=nanosleep + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int nanosleep(timespec *__requested_time,timespec *__remaining) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_nanosleep_004ffc10)((int)__requested_time); + return iVar1; +} + + +================================================================== + +### FUNC 0015dbd0 (16 bytes) name=Queue + +void __thiscall cv::ocl::Queue::Queue(Queue *this) + +{ + (*(code *)PTR_Queue_004ffc18)(); + return; +} + + +================================================================== + +### FUNC 0015dbe0 (16 bytes) name=FindStrayRadius + +void __thiscall +CFunctions::FindStrayRadius + (CFunctions *this,uint param_1,float param_2,float *param_3,uint *param_4) + +{ + (*(code *)PTR_FindStrayRadius_004ffc20)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015dbf0 (16 bytes) name=cvMakeSeqHeaderForArray + +void cvMakeSeqHeaderForArray(void) + +{ + (*(code *)PTR_cvMakeSeqHeaderForArray_004ffc28)(); + return; +} + + +================================================================== + +### FUNC 0015dc00 (16 bytes) name=_Unwind_GetTextRelBase + +void _Unwind_GetTextRelBase(void) + +{ + (*(code *)PTR__Unwind_GetTextRelBase_004ffc30)(); + return; +} + + +================================================================== + +### FUNC 0015dc10 (16 bytes) name=MAG_IsChannelAvailable + +void MAG_IsChannelAvailable(void) + +{ + (*(code *)PTR_MAG_IsChannelAvailable_004ffc38)(); + return; +} + + +================================================================== + +### FUNC 0015dc20 (16 bytes) name=IsothermalPalette + +void __thiscall CFunctions::IsothermalPalette(CFunctions *this) + +{ + (*(code *)PTR_IsothermalPalette_004ffc40)(); + return; +} + + +================================================================== + +### FUNC 0015dc30 (16 bytes) name=getGpuMatRef + +void __thiscall cv::_OutputArray::getGpuMatRef(_OutputArray *this) + +{ + (*(code *)PTR_getGpuMatRef_004ffc48)(); + return; +} + + +================================================================== + +### FUNC 0015dc40 (16 bytes) name=_M_get + +void __thiscall std::__exception_ptr::exception_ptr::_M_get(exception_ptr *this) + +{ + (*(code *)PTR__M_get_004ffc50)(); + return; +} + + +================================================================== + +### FUNC 0015dc50 (16 bytes) name=haveOpenCL + +void cv::ocl::haveOpenCL(void) + +{ + (*(code *)PTR_haveOpenCL_004ffc58)(); + return; +} + + +================================================================== + +### FUNC 0015dc60 (16 bytes) name=pthread_cond_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_destroy(pthread_cond_t *__cond) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_destroy_004ffc60)((int)__cond); + return iVar1; +} + + +================================================================== + +### FUNC 0015dc70 (16 bytes) name=isxdigit + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int isxdigit(int param_1) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_isxdigit_004ffc68)(param_1); + return iVar1; +} + + +================================================================== + +### FUNC 0015dc80 (16 bytes) name=convertTo + +void __thiscall +cv::UMat::convertTo(UMat *this,_OutputArray *param_1,int param_2,double param_3,double param_4) + +{ + (*(code *)PTR_convertTo_004ffc70)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015dc90 (16 bytes) name=operator() + +void __thiscall +cv::PCA::operator()(PCA *this,_InputArray *param_1,_InputArray *param_2,int param_3,int param_4) + +{ + (*(code *)PTR_operator___004ffc78)(); + return; +} + + +================================================================== + +### FUNC 0015dca0 (16 bytes) name=~PCA + +void __thiscall cv::PCA::~PCA(PCA *this) + +{ + (*(code *)PTR__PCA_004ffc80)(); + return; +} + + +================================================================== + +### FUNC 0015dcb0 (16 bytes) name=phase + +void cv::phase(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,bool param_4) + +{ + (*(code *)PTR_phase_004ffc88)(); + return; +} + + +================================================================== + +### FUNC 0015dcc0 (16 bytes) name=sprintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int sprintf(char *__s,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_sprintf_004ffc90)((int)__s); + return iVar1; +} + + +================================================================== + +### FUNC 0015dcd0 (16 bytes) name=cvSeqSort + +void cvSeqSort(void) + +{ + (*(code *)PTR_cvSeqSort_004ffc98)(); + return; +} + + +================================================================== + +### FUNC 0015dce0 (16 bytes) name=driverVersion + +void cv::ocl::Device::driverVersion(void) + +{ + (*(code *)PTR_driverVersion_004ffca0)(); + return; +} + + +================================================================== + +### FUNC 0015dcf0 (16 bytes) name=libusb_release_interface + +void libusb_release_interface(void) + +{ + (*(code *)PTR_libusb_release_interface_004ffca8)(); + return; +} + + +================================================================== + +### FUNC 0015dd00 (16 bytes) name=preferredVectorWidthShort + +void __thiscall cv::ocl::Device::preferredVectorWidthShort(Device *this) + +{ + (*(code *)PTR_preferredVectorWidthShort_004ffcb0)(); + return; +} + + +================================================================== + +### FUNC 0015dd10 (16 bytes) name=format + +void cv::format(char *param_1,...) + +{ + (*(code *)PTR_format_004ffcb8)(); + return; +} + + +================================================================== + +### FUNC 0015dd20 (16 bytes) name=usbi_io_exit + +void usbi_io_exit(void) + +{ + (*(code *)PTR_usbi_io_exit_004ffcc0)(); + return; +} + + +================================================================== + +### FUNC 0015dd30 (16 bytes) name=resetMatMaskPoints + +void __thiscall +ImageProc::resetMatMaskPoints(ImageProc *this,Mat *param_1,uint *param_2,int param_3) + +{ + (*(code *)PTR_resetMatMaskPoints_004ffcc8)(); + return; +} + + +================================================================== + +### FUNC 0015dd40 (16 bytes) name=hconcat + +void cv::hconcat(Mat *param_1,ulong param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_hconcat_004ffcd0)(); + return; +} + + +================================================================== + +### FUNC 0015dd50 (16 bytes) name=~bad_exception + +void __thiscall std::bad_exception::~bad_exception(bad_exception *this) + +{ + (*(code *)PTR__bad_exception_004ffcd8)(); + return; +} + + +================================================================== + +### FUNC 0015dd60 (16 bytes) name=log10 + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double log10(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_log10_004ffce0)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015dd70 (16 bytes) name=~Program + +void __thiscall cv::ocl::Program::~Program(Program *this) + +{ + (*(code *)PTR__Program_004ffce8)(); + return; +} + + +================================================================== + +### FUNC 0015dd80 (16 bytes) name=FileNodeIterator + +void __thiscall +cv::FileNodeIterator::FileNodeIterator + (FileNodeIterator *this,CvFileStorage *param_1,CvFileNode *param_2,ulong param_3) + +{ + (*(code *)PTR_FileNodeIterator_004ffcf0)(); + return; +} + + +================================================================== + +### FUNC 0015dd90 (16 bytes) name=minMaxLoc + +void cv::minMaxLoc(_InputArray *param_1,double *param_2,double *param_3,Point_ *param_4, + Point_ *param_5,_InputArray *param_6) + +{ + (*(code *)PTR_minMaxLoc_004ffcf8)(); + return; +} + + +================================================================== + +### FUNC 0015dda0 (16 bytes) name=checkOptimalVectorWidth + +void cv::ocl::checkOptimalVectorWidth(void) + +{ + (*(code *)PTR_checkOptimalVectorWidth_004ffd00)(); + return; +} + + +================================================================== + +### FUNC 0015ddb0 (16 bytes) name=release + +void cv::ogl::Buffer::release(void) + +{ + (*(code *)PTR_release_004ffd08)(); + return; +} + + +================================================================== + +### FUNC 0015ddc0 (16 bytes) name=cvGraphAddEdgeByPtr + +void cvGraphAddEdgeByPtr(void) + +{ + (*(code *)PTR_cvGraphAddEdgeByPtr_004ffd10)(); + return; +} + + +================================================================== + +### FUNC 0015ddd0 (16 bytes) name=MStream + +void __thiscall MStream::MStream(MStream *this,ulong param_1) + +{ + (*(code *)PTR_MStream_004ffd18)(); + return; +} + + +================================================================== + +### FUNC 0015dde0 (16 bytes) name=GaussianBlur + +void cv::GaussianBlur(void) + +{ + (*(code *)PTR_GaussianBlur_004ffd20)(); + return; +} + + +================================================================== + +### FUNC 0015ddf0 (16 bytes) name=MAG_SaveDDT + +void MAG_SaveDDT(void) + +{ + (*(code *)PTR_MAG_SaveDDT_004ffd28)(); + return; +} + + +================================================================== + +### FUNC 0015de00 (16 bytes) name=SaveMGT + +void SaveMGT(uint param_1,char *param_2) + +{ + (*(code *)PTR_SaveMGT_004ffd30)(param_1); + return; +} + + +================================================================== + +### FUNC 0015de10 (16 bytes) name=Mat + +void __thiscall +cv::Mat::Mat(Mat *this,int param_1,int *param_2,int param_3,void *param_4,ulong *param_5) + +{ + (*(code *)PTR_Mat_004ffd38)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015de20 (16 bytes) name=LoadDDT + +void LoadDDT(uint param_1,OutputPara *param_2,void *param_3,uint param_4, + _func_void_uint_uint_uint_void_ptr *param_5,void *param_6) + +{ + (*(code *)PTR_LoadDDT_004ffd40)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015de30 (16 bytes) name=HistDeRedundance + +void __thiscall CFunctions::HistDeRedundance(CFunctions *this) + +{ + (*(code *)PTR_HistDeRedundance_004ffd48)(); + return; +} + + +================================================================== + +### FUNC 0015de40 (16 bytes) name=cvCreateMatHeader + +void cvCreateMatHeader(void) + +{ + (*(code *)PTR_cvCreateMatHeader_004ffd50)(); + return; +} + + +================================================================== + +### FUNC 0015de50 (16 bytes) name=usbi_alloc_device + +void usbi_alloc_device(void) + +{ + (*(code *)PTR_usbi_alloc_device_004ffd58)(); + return; +} + + +================================================================== + +### FUNC 0015de60 (16 bytes) name=isOpened + +void __thiscall cv::FileStorage::isOpened(FileStorage *this) + +{ + (*(code *)PTR_isOpened_004ffd60)(); + return; +} + + +================================================================== + +### FUNC 0015de70 (16 bytes) name=_M_insert_aux + +void __thiscall std::vector>::_M_insert_aux(void) + +{ + (*(code *)PTR__M_insert_aux_004ffd68)(); + return; +} + + +================================================================== + +### FUNC 0015de80 (16 bytes) name=cvReadRawData + +void cvReadRawData(void) + +{ + (*(code *)PTR_cvReadRawData_004ffd70)(); + return; +} + + +================================================================== + +### FUNC 0015de90 (16 bytes) name=Hdr + +void __thiscall cv::SparseMat::Hdr::Hdr(Hdr *this,int param_1,int *param_2,int param_3) + +{ + (*(code *)PTR_Hdr_004ffd78)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015dea0 (16 bytes) name=__deregister_frame_info_bases + +void __deregister_frame_info_bases(void) + +{ + (*(code *)PTR___deregister_frame_info_bases_004ffd80)(); + return; +} + + +================================================================== + +### FUNC 0015deb0 (16 bytes) name=ReadPara + +void __thiscall +CNetComm::ReadPara(CNetComm *this,BasePara1 *param_1,BasePara2 *param_2,uint param_3) + +{ + (*(code *)PTR_ReadPara_004ffd88)(); + return; +} + + +================================================================== + +### FUNC 0015dec0 (16 bytes) name=_Unwind_Resume_or_Rethrow + +void _Unwind_Resume_or_Rethrow(void) + +{ + (*(code *)PTR__Unwind_Resume_or_Rethrow_004ffd90)(); + return; +} + + +================================================================== + +### FUNC 0015ded0 (16 bytes) name=toChars + +void toChars(_JNIEnv *param_1,_jstring *param_2,char *param_3,int param_4) + +{ + (*(code *)PTR_toChars_004ffd98)(); + return; +} + + +================================================================== + +### FUNC 0015dee0 (16 bytes) name=pthread_setspecific + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_setspecific(pthread_key_t __key,void *__pointer) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_setspecific_004ffda0)(__key); + return iVar1; +} + + +================================================================== + +### FUNC 0015def0 (16 bytes) name=GetOutputBMPdata + +void CMagDevice::GetOutputBMPdata(uchar **param_1,tagBITMAPINFO **param_2) + +{ + (*(code *)PTR_GetOutputBMPdata_004ffda8)(); + return; +} + + +================================================================== + +### FUNC 0015df00 (16 bytes) name=meanStdDev + +void cv::meanStdDev(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + (*(code *)PTR_meanStdDev_004ffdb0)(); + return; +} + + +================================================================== + +### FUNC 0015df10 (16 bytes) name=mulSpectrums + +void cv::mulSpectrums(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4, + bool param_5) + +{ + (*(code *)PTR_mulSpectrums_004ffdb8)(); + return; +} + + +================================================================== + +### FUNC 0015df20 (16 bytes) name=cvRestoreMemStoragePos + +void cvRestoreMemStoragePos(void) + +{ + (*(code *)PTR_cvRestoreMemStoragePos_004ffdc0)(); + return; +} + + +================================================================== + +### FUNC 0015df30 (16 bytes) name=~__foreign_exception + +void __thiscall __cxxabiv1::__foreign_exception::~__foreign_exception(__foreign_exception *this) + +{ + (*(code *)PTR____foreign_exception_004ffdc8)(); + return; +} + + +================================================================== + +### FUNC 0015df40 (16 bytes) name=__cxa_get_globals_fast + +void __cxa_get_globals_fast(void) + +{ + (*(code *)PTR___cxa_get_globals_fast_004ffdd0)(); + return; +} + + +================================================================== + +### FUNC 0015df50 (16 bytes) name=integral + +void cv::integral(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,int param_5,int param_6) + +{ + (*(code *)PTR_integral_004ffdd8)(); + return; +} + + +================================================================== + +### FUNC 0015df60 (16 bytes) name=libusb_get_active_config_descriptor + +void libusb_get_active_config_descriptor(void) + +{ + (*(code *)PTR_libusb_get_active_config_descriptor_004ffde0)(); + return; +} + + +================================================================== + +### FUNC 0015df70 (16 bytes) name=create + +void cv::ogl::Buffer::create(void) + +{ + (*(code *)PTR_create_004ffde8)(); + return; +} + + +================================================================== + +### FUNC 0015df80 (16 bytes) name=copyTo + +void __thiscall cv::UMat::copyTo(UMat *this,_OutputArray *param_1) + +{ + (*(code *)PTR_copyTo_004ffdf0)(); + return; +} + + +================================================================== + +### FUNC 0015df90 (16 bytes) name=__cxa_guard_release + +void __cxa_guard_release(void) + +{ + (*(code *)PTR___cxa_guard_release_004ffdf8)(); + return; +} + + +================================================================== + +### FUNC 0015dfa0 (16 bytes) name=libusb_close + +void libusb_close(void) + +{ + (*(code *)PTR_libusb_close_004ffe00)(); + return; +} + + +================================================================== + +### FUNC 0015dfb0 (16 bytes) name=read + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t read(int __fd,void *__buf,size_t __nbytes) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_read_004ffe08)(__fd); + return sVar1; +} + + +================================================================== + +### FUNC 0015dfc0 (16 bytes) name=discovered_devs_append + +void discovered_devs_append(void) + +{ + (*(code *)PTR_discovered_devs_append_004ffe10)(); + return; +} + + +================================================================== + +### FUNC 0015dfd0 (16 bytes) name=memmove + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memmove(void *__dest,void *__src,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memmove_004ffe18)(); + return pvVar1; +} + + +================================================================== + +### FUNC 0015dfe0 (16 bytes) name=edgeImage + +void edgeImage(uchar *param_1,int param_2,int param_3,uchar *param_4) + +{ + (*(code *)PTR_edgeImage_004ffe20)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015dff0 (16 bytes) name=cvAlloc + +void cv::cvAlloc(ulong param_1) + +{ + (*(code *)PTR_cvAlloc_004ffe28)(); + return; +} + + +================================================================== + +### FUNC 0015e000 (16 bytes) name=setTo + +void __thiscall cv::Mat::setTo(Mat *this,_InputArray *param_1,_InputArray *param_2) + +{ + (*(code *)PTR_setTo_004ffe30)(); + return; +} + + +================================================================== + +### FUNC 0015e010 (16 bytes) name=ptr + +void __thiscall cv::ocl::Device::ptr(Device *this) + +{ + (*(code *)PTR_ptr_004ffe38)(); + return; +} + + +================================================================== + +### FUNC 0015e020 (16 bytes) name=get_terminate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::get_terminate(void) + +{ + (*(code *)PTR_get_terminate_004ffe40)(); + return; +} + + +================================================================== + +### FUNC 0015e030 (16 bytes) name=sort + +void cv::sort(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_sort_004ffe48)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015e040 (16 bytes) name=MAG_LoadDDT + +void MAG_LoadDDT(void) + +{ + (*(code *)PTR_MAG_LoadDDT_004ffe50)(); + return; +} + + +================================================================== + +### FUNC 0015e050 (16 bytes) name=create + +void __thiscall +cv::ocl::Program::create(Program *this,ProgramSource *param_1,String *param_2,String *param_3) + +{ + (*(code *)PTR_create_004ffe58)(); + return; +} + + +================================================================== + +### FUNC 0015e060 (16 bytes) name=pthread_once + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_once(pthread_once_t *__once_control,__init_routine *__init_routine) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_once_004ffe60)((int)__once_control); + return iVar1; +} + + +================================================================== + +### FUNC 0015e070 (16 bytes) name=createMorphologyFilter + +void __thiscall cv::createMorphologyFilter(void) + +{ + (*(code *)PTR_createMorphologyFilter_004ffe68)(); + return; +} + + +================================================================== + +### FUNC 0015e080 (16 bytes) name=SetImageTransform + +void CMagDevice::SetImageTransform(int param_1,int param_2) + +{ + (*(code *)PTR_SetImageTransform_004ffe70)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015e090 (16 bytes) name=__google_potentially_blocking_region_end + +void __google_potentially_blocking_region_end(void) + +{ + (*(code *)PTR___google_potentially_blocking_region_end_004ffe78)(); + return; +} + + +================================================================== + +### FUNC 0015e0a0 (16 bytes) name=~bad_array_length + +void __thiscall std::bad_array_length::~bad_array_length(bad_array_length *this) + +{ + (*(code *)PTR__bad_array_length_004ffe80)(); + return; +} + + +================================================================== + +### FUNC 0015e0b0 (16 bytes) name=usbi_pipe + +void usbi_pipe(void) + +{ + (*(code *)PTR_usbi_pipe_004ffe88)(); + return; +} + + +================================================================== + +### FUNC 0015e0c0 (16 bytes) name=PushBaselineRaw + +void __thiscall CFunctions::PushBaselineRaw(CFunctions *this,ushort *param_1,int param_2) + +{ + (*(code *)PTR_PushBaselineRaw_004ffe90)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015e0d0 (16 bytes) name=FilterE2X + +void __thiscall CFunctions::FilterE2X(CFunctions *this) + +{ + (*(code *)PTR_FilterE2X_004ffe98)(); + return; +} + + +================================================================== + +### FUNC 0015e0e0 (16 bytes) name=NAryMatIterator + +void __thiscall +cv::NAryMatIterator::NAryMatIterator + (NAryMatIterator *this,Mat **param_1,uchar **param_2,int param_3) + +{ + (*(code *)PTR_NAryMatIterator_004ffea0)(); + return; +} + + +================================================================== + +### FUNC 0015e0f0 (16 bytes) name=cvClearSet + +void cvClearSet(void) + +{ + (*(code *)PTR_cvClearSet_004ffea8)(); + return; +} + + +================================================================== + +### FUNC 0015e100 (16 bytes) name=cvPtr2D + +void cvPtr2D(void) + +{ + (*(code *)PTR_cvPtr2D_004ffeb0)(); + return; +} + + +================================================================== + +### FUNC 0015e110 (16 bytes) name=exception_ptr + +void __thiscall +std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this,exception_ptr *param_1) + +{ + (*(code *)PTR_exception_ptr_004ffeb8)(); + return; +} + + +================================================================== + +### FUNC 0015e120 (16 bytes) name=medianBlur + +void cv::medianBlur(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_medianBlur_004ffec0)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015e130 (16 bytes) name=cvGetFileNodeByName + +void cvGetFileNodeByName(void) + +{ + (*(code *)PTR_cvGetFileNodeByName_004ffec8)(); + return; +} + + +================================================================== + +### FUNC 0015e140 (16 bytes) name=feof + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int feof(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_feof_004ffed0)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 0015e150 (16 bytes) name=~bad_typeid + +void __thiscall std::bad_typeid::~bad_typeid(bad_typeid *this) + +{ + (*(code *)PTR__bad_typeid_004ffed8)(); + return; +} + + +================================================================== + +### FUNC 0015e160 (16 bytes) name=strlen + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strlen(char *__s) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_strlen_004ffee0)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015e170 (16 bytes) name=addWeighted + +void cv::addWeighted(_InputArray *param_1,double param_2,_InputArray *param_3,double param_4, + double param_5,_OutputArray *param_6,int param_7) + +{ + (*(code *)PTR_addWeighted_004ffee8)(); + return; +} + + +================================================================== + +### FUNC 0015e180 (16 bytes) name=wcscoll + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int wcscoll(wchar_t *__s1,wchar_t *__s2) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_wcscoll_004ffef0)((int)__s1); + return iVar1; +} + + +================================================================== + +### FUNC 0015e190 (16 bytes) name=MAG_IsPause + +void MAG_IsPause(void) + +{ + (*(code *)PTR_MAG_IsPause_004ffef8)(); + return; +} + + +================================================================== + +### FUNC 0015e1a0 (16 bytes) name=MAG_LockFrame + +void MAG_LockFrame(void) + +{ + (*(code *)PTR_MAG_LockFrame_004fff00)(); + return; +} + + +================================================================== + +### FUNC 0015e1b0 (16 bytes) name=~UMatData + +void __thiscall cv::UMatData::~UMatData(UMatData *this) + +{ + (*(code *)PTR__UMatData_004fff08)(); + return; +} + + +================================================================== + +### FUNC 0015e1c0 (16 bytes) name=cvBoundingRect + +void cvBoundingRect(void) + +{ + (*(code *)PTR_cvBoundingRect_004fff10)(); + return; +} + + +================================================================== + +### FUNC 0015e1d0 (16 bytes) name=deviceVersionMajor + +void __thiscall cv::ocl::Device::deviceVersionMajor(Device *this) + +{ + (*(code *)PTR_deviceVersionMajor_004fff18)(); + return; +} + + +================================================================== + +### FUNC 0015e1e0 (16 bytes) name=atan2 + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double atan2(double __y,double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_atan2_004fff20)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015e1f0 (16 bytes) name=access + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int access(char *__name,int __type) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_access_004fff28)((int)__name,__type); + return iVar1; +} + + +================================================================== + +### FUNC 0015e200 (16 bytes) name=_M_fill_insert + +void __thiscall std::vector>::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_004fff30)(); + return; +} + + +================================================================== + +### FUNC 0015e210 (16 bytes) name=cvReleaseFileStorage + +void cvReleaseFileStorage(void) + +{ + (*(code *)PTR_cvReleaseFileStorage_004fff38)(); + return; +} + + +================================================================== + +### FUNC 0015e220 (16 bytes) name=ptr + +void __thiscall cv::ocl::Image2D::ptr(Image2D *this) + +{ + (*(code *)PTR_ptr_004fff40)(); + return; +} + + +================================================================== + +### FUNC 0015e230 (16 bytes) name=getTickCount + +void cv::getTickCount(void) + +{ + (*(code *)PTR_getTickCount_004fff48)(); + return; +} + + +================================================================== + +### FUNC 0015e240 (16 bytes) name=gettid + +void gettid(void) + +{ + (*(code *)PTR_gettid_004fff50)(); + return; +} + + +================================================================== + +### FUNC 0015e250 (16 bytes) name=total + +void __thiscall cv::_InputArray::total(_InputArray *this,int param_1) + +{ + (*(code *)PTR_total_004fff58)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015e260 (16 bytes) name=norm + +void cv::norm(_InputArray *param_1,int param_2,_InputArray *param_3) + +{ + (*(code *)PTR_norm_004fff60)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015e270 (16 bytes) name=operator/ + +void __thiscall cv::operator/(cv *this,double param_1,Mat *param_2) + +{ + (*(code *)PTR_operator__004fff68)(); + return; +} + + +================================================================== + +### FUNC 0015e280 (16 bytes) name=SetEX + +void __thiscall CFunctions::SetEX(void) + +{ + (*(code *)PTR_SetEX_004fff70)(); + return; +} + + +================================================================== + +### FUNC 0015e290 (16 bytes) name=~MStream + +void __thiscall MStream::~MStream(MStream *this) + +{ + (*(code *)PTR__MStream_004fff78)(); + return; +} + + +================================================================== + +### FUNC 0015e2a0 (16 bytes) name=MAG_LinkCamera + +void MAG_LinkCamera(void) + +{ + (*(code *)PTR_MAG_LinkCamera_004fff80)(); + return; +} + + +================================================================== + +### FUNC 0015e2b0 (16 bytes) name=usbi_get_tid + +void usbi_get_tid(void) + +{ + (*(code *)PTR_usbi_get_tid_004fff88)(); + return; +} + + +================================================================== + +### FUNC 0015e2c0 (16 bytes) name=cartToPolar + +void cv::cartToPolar(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,bool param_5) + +{ + (*(code *)PTR_cartToPolar_004fff90)(); + return; +} + + +================================================================== + +### FUNC 0015e2d0 (16 bytes) name=strstr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strstr(char *__haystack,char *__needle) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strstr_004fff98)(); + return pcVar1; +} + + +================================================================== + +### FUNC 0015e2e0 (16 bytes) name=Mutex + +void __thiscall cv::Mutex::Mutex(Mutex *this) + +{ + (*(code *)PTR_Mutex_004fffa0)(); + return; +} + + +================================================================== + +### FUNC 0015e2f0 (16 bytes) name=libusb_set_auto_detach_kernel_driver + +void libusb_set_auto_detach_kernel_driver(void) + +{ + (*(code *)PTR_libusb_set_auto_detach_kernel_driver_004fffa8)(); + return; +} + + +================================================================== + +### FUNC 0015e300 (16 bytes) name=reduce + +void cv::reduce(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,int param_5) + +{ + (*(code *)PTR_reduce_004fffb0)(param_1,param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### FUNC 0015e310 (16 bytes) name=pthread_mutexattr_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutexattr_destroy_004fffb8)((int)__attr); + return iVar1; +} + + +================================================================== + +### FUNC 0015e320 (16 bytes) name=BlindCompensation + +void __thiscall CFunctions::BlindCompensation(CFunctions *this,ushort *param_1) + +{ + (*(code *)PTR_BlindCompensation_004fffc0)(); + return; +} + + +================================================================== + +### FUNC 0015e330 (16 bytes) name=ResizeBMP + +void __thiscall CFunctions::ResizeBMP(CFunctions *this) + +{ + (*(code *)PTR_ResizeBMP_004fffc8)(); + return; +} + + +================================================================== + +### FUNC 0015e340 (16 bytes) name=usbi_log + +void usbi_log(void) + +{ + (*(code *)PTR_usbi_log_004fffd0)(); + return; +} + + +================================================================== + +### FUNC 0015e350 (16 bytes) name=Sleep + +void Sleep(int param_1) + +{ + (*(code *)PTR_Sleep_004fffd8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015e360 (16 bytes) name=MAG_SetAutoEnlargePara + +void MAG_SetAutoEnlargePara(void) + +{ + (*(code *)PTR_MAG_SetAutoEnlargePara_004fffe0)(); + return; +} + + +================================================================== + +### FUNC 0015e370 (16 bytes) name=FilterDetailEnhancement + +void __thiscall CFunctions::FilterDetailEnhancement(CFunctions *this,uint param_1) + +{ + (*(code *)PTR_FilterDetailEnhancement_004fffe8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015e380 (16 bytes) name=fclose + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fclose(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fclose_004ffff0)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 0015e390 (16 bytes) name=SetIsothermalPara + +void CMagDevice::SetIsothermalPara(int param_1,int param_2) + +{ + (*(code *)PTR_SetIsothermalPara_004ffff8)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015e3a0 (16 bytes) name=vendorID + +void __thiscall cv::ocl::Device::vendorID(Device *this) + +{ + (*(code *)PTR_vendorID_00500000)(); + return; +} + + +================================================================== + +### FUNC 0015e3b0 (16 bytes) name=Seek + +void __thiscall FStream::Seek(void) + +{ + (*(code *)PTR_Seek_00500008)(); + return; +} + + +================================================================== + +### FUNC 0015e3c0 (16 bytes) name=GetJfloat + +void GetJfloat(_JNIEnv *param_1,char *param_2,_jobject *param_3) + +{ + (*(code *)PTR_GetJfloat_00500010)(); + return; +} + + +================================================================== + +### FUNC 0015e3d0 (16 bytes) name=_M_addref + +void __thiscall std::__exception_ptr::exception_ptr::_M_addref(exception_ptr *this) + +{ + (*(code *)PTR__M_addref_00500018)(); + return; +} + + +================================================================== + +### FUNC 0015e3e0 (16 bytes) name=_Unwind_GetCFA + +void _Unwind_GetCFA(void) + +{ + (*(code *)PTR__Unwind_GetCFA_00500020)(); + return; +} + + +================================================================== + +### FUNC 0015e3f0 (16 bytes) name=~bad_cast + +void __thiscall std::bad_cast::~bad_cast(bad_cast *this) + +{ + (*(code *)PTR__bad_cast_00500028)(); + return; +} + + +================================================================== + +### FUNC 0015e400 (16 bytes) name=realloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * realloc(void *__ptr,size_t __size) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_realloc_00500030)(); + return pvVar1; +} + + +================================================================== + +### FUNC 0015e410 (16 bytes) name=libusb_free_config_descriptor + +void libusb_free_config_descriptor(void) + +{ + (*(code *)PTR_libusb_free_config_descriptor_00500038)(); + return; +} + + +================================================================== + +### FUNC 0015e420 (16 bytes) name=release + +void cv::cuda::HostMem::release(void) + +{ + (*(code *)PTR_release_00500040)(); + return; +} + + +================================================================== + +### FUNC 0015e430 (16 bytes) name=lock + +void __thiscall cv::Mutex::lock(Mutex *this) + +{ + (*(code *)PTR_lock_00500048)(); + return; +} + + +================================================================== + +### FUNC 0015e440 (16 bytes) name=SearchInnerTemp + +void __thiscall CFunctions::SearchInnerTemp(CFunctions *this,int param_1) + +{ + (*(code *)PTR_SearchInnerTemp_00500050)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015e450 (16 bytes) name=cvFindContours + +void cvFindContours(void) + +{ + (*(code *)PTR_cvFindContours_00500058)(); + return; +} + + +================================================================== + +### FUNC 0015e460 (16 bytes) name=max + +void cv::max(Mat *param_1,Mat *param_2,Mat *param_3) + +{ + (*(code *)PTR_max_00500060)(); + return; +} + + +================================================================== + +### FUNC 0015e470 (16 bytes) name=ReviseTemperature + +void __thiscall +CFunctions::ReviseTemperature(CFunctions *this,ushort param_1,uint param_2,int param_3) + +{ + (*(code *)PTR_ReviseTemperature_00500068)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015e480 (16 bytes) name=resetTexCoordArray + +void cv::ogl::Arrays::resetTexCoordArray(void) + +{ + (*(code *)PTR_resetTexCoordArray_00500070)(); + return; +} + + +================================================================== + +### FUNC 0015e490 (16 bytes) name=copyTo + +void __thiscall cv::SparseMat::copyTo(SparseMat *this,SparseMat *param_1) + +{ + (*(code *)PTR_copyTo_00500078)(); + return; +} + + +================================================================== + +### FUNC 0015e4a0 (16 bytes) name=setTo + +void cv::cuda::GpuMat::setTo(void) + +{ + (*(code *)PTR_setTo_00500080)(); + return; +} + + +================================================================== + +### FUNC 0015e4b0 (16 bytes) name=project + +void cv::PCA::project(_InputArray *param_1) + +{ + (*(code *)PTR_project_00500088)(); + return; +} + + +================================================================== + +### FUNC 0015e4c0 (16 bytes) name=iswctype + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int iswctype(wint_t __wc,wctype_t __desc) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_iswctype_00500090)(__wc); + return iVar1; +} + + +================================================================== + +### FUNC 0015e4d0 (16 bytes) name=~vector + +void __thiscall +std::vector>::~vector(vector> *this) + +{ + (*(code *)PTR__vector_00500098)(); + return; +} + + +================================================================== + +### FUNC 0015e4e0 (16 bytes) name=gzeof + +void gzeof(void) + +{ + (*(code *)PTR_gzeof_005000a0)(); + return; +} + + +================================================================== + +### FUNC 0015e4f0 (16 bytes) name=sortIdx + +void cv::sortIdx(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_sortIdx_005000a8)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015e500 (16 bytes) name=MAG_IsLinked + +void MAG_IsLinked(void) + +{ + (*(code *)PTR_MAG_IsLinked_005000b0)(); + return; +} + + +================================================================== + +### FUNC 0015e510 (16 bytes) name=strtod + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double strtod(char *__nptr,char **__endptr) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_strtod_005000b8)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015e520 (16 bytes) name=scalarToRawData + +void cv::scalarToRawData(Scalar_ *param_1,void *param_2,int param_3,int param_4) + +{ + (*(code *)PTR_scalarToRawData_005000c0)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015e530 (16 bytes) name=next + +void __thiscall cv::RNG_MT19937::next(RNG_MT19937 *this) + +{ + (*(code *)PTR_next_005000c8)(); + return; +} + + +================================================================== + +### FUNC 0015e540 (16 bytes) name=libusb_get_config_descriptor + +void libusb_get_config_descriptor(void) + +{ + (*(code *)PTR_libusb_get_config_descriptor_005000d0)(); + return; +} + + +================================================================== + +### FUNC 0015e550 (16 bytes) name=TransferCaliFile + +void __thiscall CNetComm::TransferCaliFile(CNetComm *this) + +{ + (*(code *)PTR_TransferCaliFile_005000d8)(); + return; +} + + +================================================================== + +### FUNC 0015e560 (16 bytes) name=MAG_PrepareProcessImage + +void MAG_PrepareProcessImage(void) + +{ + (*(code *)PTR_MAG_PrepareProcessImage_005000e0)(); + return; +} + + +================================================================== + +### FUNC 0015e570 (16 bytes) name=cvGraphAddVtx + +void cvGraphAddVtx(void) + +{ + (*(code *)PTR_cvGraphAddVtx_005000e8)(); + return; +} + + +================================================================== + +### FUNC 0015e580 (16 bytes) name=cvEndFindContours + +void cvEndFindContours(void) + +{ + (*(code *)PTR_cvEndFindContours_005000f0)(); + return; +} + + +================================================================== + +### FUNC 0015e590 (16 bytes) name=imageSupport + +void __thiscall cv::ocl::Device::imageSupport(Device *this) + +{ + (*(code *)PTR_imageSupport_005000f8)(); + return; +} + + +================================================================== + +### FUNC 0015e5a0 (16 bytes) name=usbi_remove_pollfd + +void usbi_remove_pollfd(void) + +{ + (*(code *)PTR_usbi_remove_pollfd_00500100)(); + return; +} + + +================================================================== + +### FUNC 0015e5b0 (16 bytes) name=Sobel + +void cv::Sobel(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,int param_5, + int param_6,double param_7,double param_8,int param_9) + +{ + (*(code *)PTR_Sobel_00500108)(param_1,param_2,param_3,param_4,param_5,param_6,param_9); + return; +} + + +================================================================== + +### FUNC 0015e5c0 (16 bytes) name=mul + +void cv::Mat::mul(_InputArray *param_1,double param_2) + +{ + (*(code *)PTR_mul_00500110)(); + return; +} + + +================================================================== + +### FUNC 0015e5d0 (16 bytes) name=cvReleaseMemStorage + +void cvReleaseMemStorage(void) + +{ + (*(code *)PTR_cvReleaseMemStorage_00500118)(); + return; +} + + +================================================================== + +### FUNC 0015e5e0 (16 bytes) name=wcsftime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcsftime(wchar_t *__s,size_t __maxsize,wchar_t *__format,tm *__tp) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_wcsftime_00500120)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015e5f0 (16 bytes) name=cvSeqPushFront + +void cvSeqPushFront(void) + +{ + (*(code *)PTR_cvSeqPushFront_00500128)(); + return; +} + + +================================================================== + +### FUNC 0015e600 (16 bytes) name=operator.cast.to.double + +double __thiscall cv::RNG_MT19937::operator_cast_to_double(RNG_MT19937 *this) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_operator_cast_to_double_00500130)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015e610 (16 bytes) name=dilate + +void cv::dilate(void) + +{ + (*(code *)PTR_dilate_00500138)(); + return; +} + + +================================================================== + +### FUNC 0015e620 (16 bytes) name=writeScalar + +void cv::writeScalar(FileStorage *param_1,int param_2) + +{ + (*(code *)PTR_writeScalar_00500140)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015e630 (16 bytes) name=cvGetSize + +void cvGetSize(void) + +{ + (*(code *)PTR_cvGetSize_00500148)(); + return; +} + + +================================================================== + +### FUNC 0015e640 (16 bytes) name=CopyState + +void __thiscall CFunctions::CopyState(CFunctions *this) + +{ + (*(code *)PTR_CopyState_00500150)(); + return; +} + + +================================================================== + +### FUNC 0015e650 (16 bytes) name=SaveRGB24 + +void __thiscall CVideoFunctions::SaveRGB24(CVideoFunctions *this,char *param_1) + +{ + (*(code *)PTR_SaveRGB24_00500158)(); + return; +} + + +================================================================== + +### FUNC 0015e660 (16 bytes) name=__register_frame_info_table_bases + +void __register_frame_info_table_bases(void) + +{ + (*(code *)PTR___register_frame_info_table_bases_00500160)(); + return; +} + + +================================================================== + +### FUNC 0015e670 (16 bytes) name=GetCamInfo + +void __thiscall CMagDevice::GetCamInfo(CMagDevice *this) + +{ + (*(code *)PTR_GetCamInfo_00500168)(); + return; +} + + +================================================================== + +### FUNC 0015e680 (16 bytes) name=GetTemperature + +void __thiscall CFunctions::GetTemperature(CFunctions *this,uint param_1,uint param_2,int param_3) + +{ + (*(code *)PTR_GetTemperature_00500170)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015e690 (16 bytes) name=EnumCameras + +void __thiscall CNetComm::EnumCameras(CNetComm *this) + +{ + (*(code *)PTR_EnumCameras_00500178)(); + return; +} + + +================================================================== + +### FUNC 0015e6a0 (16 bytes) name=cvGetFileNodeName + +void cvGetFileNodeName(void) + +{ + (*(code *)PTR_cvGetFileNodeName_00500180)(); + return; +} + + +================================================================== + +### FUNC 0015e6b0 (16 bytes) name=DoPrepareInBackground + +void __thiscall CNetComm::DoPrepareInBackground(CNetComm *this) + +{ + (*(code *)PTR_DoPrepareInBackground_00500188)(); + return; +} + + +================================================================== + +### FUNC 0015e6c0 (16 bytes) name=Fmt + +void MStream::Fmt(char *param_1,...) + +{ + (*(code *)PTR_Fmt_00500190)(); + return; +} + + +================================================================== + +### FUNC 0015e6d0 (16 bytes) name=cvReleaseStructuringElement + +void cvReleaseStructuringElement(void) + +{ + (*(code *)PTR_cvReleaseStructuringElement_00500198)(); + return; +} + + +================================================================== + +### FUNC 0015e6e0 (16 bytes) name=save + +void __thiscall MDTHelper::save(MDTHelper *this,char *param_1) + +{ + (*(code *)PTR_save_005001a0)(); + return; +} + + +================================================================== + +### FUNC 0015e6f0 (16 bytes) name=GetLength + +void __thiscall IFStream::GetLength(IFStream *this) + +{ + (*(code *)PTR_GetLength_005001a8)(); + return; +} + + +================================================================== + +### FUNC 0015e700 (16 bytes) name=Condition + +void __thiscall Condition::Condition(Condition *this) + +{ + (*(code *)PTR_Condition_005001b0)(); + return; +} + + +================================================================== + +### FUNC 0015e710 (16 bytes) name=getStdAllocator + +void cv::Mat::getStdAllocator(void) + +{ + (*(code *)PTR_getStdAllocator_005001b8)(); + return; +} + + +================================================================== + +### FUNC 0015e720 (16 bytes) name=munmap + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int munmap(void *__addr,size_t __len) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_munmap_005001c0)((int)__addr); + return iVar1; +} + + +================================================================== + +### FUNC 0015e730 (16 bytes) name=fprintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fprintf(FILE *__stream,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fprintf_005001c8)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 0015e740 (16 bytes) name=__cxa_free_dependent_exception + +void __cxa_free_dependent_exception(void) + +{ + (*(code *)PTR___cxa_free_dependent_exception_005001d0)(); + return; +} + + +================================================================== + +### FUNC 0015e750 (16 bytes) name=wctype + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wctype_t wctype(char *__property) + +{ + wctype_t wVar1; + + wVar1 = (*(code *)PTR_wctype_005001d8)(); + return wVar1; +} + + +================================================================== + +### FUNC 0015e760 (16 bytes) name=~CAccumulator + +void __thiscall CAccumulator::~CAccumulator(CAccumulator *this) + +{ + (*(code *)PTR__CAccumulator_005001e0)(); + return; +} + + +================================================================== + +### FUNC 0015e770 (16 bytes) name=MAG_LoadBufferedDDT + +void MAG_LoadBufferedDDT(uint param_1,OutputPara *param_2,void *param_3,uint param_4, + _func_void_uint_uint_uint_void_ptr *param_5,void *param_6) + +{ + (*(code *)PTR_MAG_LoadBufferedDDT_005001e8)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015e780 (16 bytes) name=getDefault + +void cv::ocl::Context::getDefault(bool param_1) + +{ + (*(code *)PTR_getDefault_005001f0)(param_1); + return; +} + + +================================================================== + +### FUNC 0015e790 (16 bytes) name=MAG_Resume + +void MAG_Resume(void) + +{ + (*(code *)PTR_MAG_Resume_005001f8)(); + return; +} + + +================================================================== + +### FUNC 0015e7a0 (16 bytes) name=getMatVector + +void __thiscall cv::_InputArray::getMatVector(_InputArray *this,vector *param_1) + +{ + (*(code *)PTR_getMatVector_00500200)(); + return; +} + + +================================================================== + +### FUNC 0015e7b0 (16 bytes) name=__sfp_handle_exceptions + +void __sfp_handle_exceptions(void) + +{ + (*(code *)PTR___sfp_handle_exceptions_00500208)(); + return; +} + + +================================================================== + +### FUNC 0015e7c0 (16 bytes) name=GetOutputColorBardata + +void CMagDevice::GetOutputColorBardata(uchar **param_1,tagBITMAPINFO **param_2) + +{ + (*(code *)PTR_GetOutputColorBardata_00500210)(); + return; +} + + +================================================================== + +### FUNC 0015e7d0 (16 bytes) name=release + +void cv::cuda::GpuMat::release(void) + +{ + (*(code *)PTR_release_00500218)(); + return; +} + + +================================================================== + +### FUNC 0015e7e0 (16 bytes) name=_M_fill_insert + +void __thiscall +std:: +vector>,std::allocator>>> +::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_00500220)(); + return; +} + + +================================================================== + +### FUNC 0015e7f0 (16 bytes) name=putc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int putc(int __c,FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_putc_00500228)(__c); + return iVar1; +} + + +================================================================== + +### FUNC 0015e800 (16 bytes) name=Device + +void __thiscall cv::ocl::Device::Device(Device *this,void *param_1) + +{ + (*(code *)PTR_Device_00500230)(); + return; +} + + +================================================================== + +### FUNC 0015e810 (16 bytes) name=operator() + +void __thiscall +cv::PCA::operator()(PCA *this,_InputArray *param_1,_InputArray *param_2,int param_3,double param_4) + +{ + (*(code *)PTR_operator___00500238)(); + return; +} + + +================================================================== + +### FUNC 0015e820 (16 bytes) name=pow + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double pow(double __x,double __y) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_pow_00500240)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015e830 (16 bytes) name=GetCaliFileName + +void __thiscall CNetComm::GetCaliFileName(CNetComm *this,char *param_1,int param_2) + +{ + (*(code *)PTR_GetCaliFileName_00500248)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015e840 (16 bytes) name=strncmp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strncmp(char *__s1,char *__s2,size_t __n) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_strncmp_00500250)((int)__s1); + return iVar1; +} + + +================================================================== + +### FUNC 0015e850 (16 bytes) name=error + +void cv::error(Exception *param_1) + +{ + (*(code *)PTR_error_00500258)(); + return; +} + + +================================================================== + +### FUNC 0015e860 (16 bytes) name=fputc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fputc(int __c,FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fputc_00500260)(__c); + return iVar1; +} + + +================================================================== + +### FUNC 0015e870 (16 bytes) name=lrintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long lrintf(float __x) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_lrintf_00500268)(); + return lVar1; +} + + +================================================================== + +### FUNC 0015e880 (16 bytes) name=Write + +void __thiscall OFStream::Write(OFStream *this,void *param_1,ulong param_2,ulong param_3) + +{ + (*(code *)PTR_Write_00500270)(); + return; +} + + +================================================================== + +### FUNC 0015e890 (16 bytes) name=~ParallelLoopBody + +void __thiscall cv::ParallelLoopBody::~ParallelLoopBody(ParallelLoopBody *this) + +{ + (*(code *)PTR__ParallelLoopBody_00500278)(); + return; +} + + +================================================================== + +### FUNC 0015e8a0 (16 bytes) name=cvFree_ + +void cv::cvFree_(void *param_1) + +{ + (*(code *)PTR_cvFree__00500280)(); + return; +} + + +================================================================== + +### FUNC 0015e8b0 (16 bytes) name=ptr + +void __thiscall cv::ocl::Program::ptr(Program *this) + +{ + (*(code *)PTR_ptr_00500288)(); + return; +} + + +================================================================== + +### FUNC 0015e8c0 (16 bytes) name=SaveDDT + +void CMagDevice::SaveDDT(char *param_1) + +{ + (*(code *)PTR_SaveDDT_00500290)(); + return; +} + + +================================================================== + +### FUNC 0015e8d0 (16 bytes) name=cvFlushSeqWriter + +void cvFlushSeqWriter(void) + +{ + (*(code *)PTR_cvFlushSeqWriter_00500298)(); + return; +} + + +================================================================== + +### FUNC 0015e8e0 (16 bytes) name=cvSeqInsertSlice + +void cvSeqInsertSlice(void) + +{ + (*(code *)PTR_cvSeqInsertSlice_005002a0)(); + return; +} + + +================================================================== + +### FUNC 0015e8f0 (16 bytes) name=__getf2 + +void __getf2(void) + +{ + (*(code *)PTR___getf2_005002a8)(); + return; +} + + +================================================================== + +### FUNC 0015e900 (16 bytes) name=InterpolateUShort + +void __thiscall +CFunctions::InterpolateUShort + (CFunctions *this,ushort *param_1,ushort *param_2,ushort *param_3,uint param_4) + +{ + (*(code *)PTR_InterpolateUShort_005002b0)(); + return; +} + + +================================================================== + +### FUNC 0015e910 (16 bytes) name=free + +void __thiscall MDTHelper::free(MDTHelper *this) + +{ + (*(code *)PTR_free_005002b8)(); + return; +} + + +================================================================== + +### FUNC 0015e920 (16 bytes) name=StopReceiveImg + +void __thiscall CNetComm::StopReceiveImg(CNetComm *this,int param_1) + +{ + (*(code *)PTR_StopReceiveImg_005002c0)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015e930 (16 bytes) name=setUseOpenCL + +void cv::ocl::setUseOpenCL(bool param_1) + +{ + (*(code *)PTR_setUseOpenCL_005002c8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015e940 (16 bytes) name=wmemcpy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemcpy(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + wchar_t *pwVar1; + + pwVar1 = (wchar_t *)(*(code *)PTR_wmemcpy_005002d0)(); + return pwVar1; +} + + +================================================================== + +### FUNC 0015e950 (16 bytes) name=bilateralFilter + +void cv::bilateralFilter(_InputArray *param_1,_OutputArray *param_2,int param_3,double param_4, + double param_5,int param_6) + +{ + (*(code *)PTR_bilateralFilter_005002d8)(param_1,param_2,param_3,param_6); + return; +} + + +================================================================== + +### FUNC 0015e960 (16 bytes) name=log + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double log(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_log_005002e0)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015e970 (16 bytes) name=__cxa_bad_cast + +void __cxa_bad_cast(void) + +{ + (*(code *)PTR___cxa_bad_cast_005002e8)(); + return; +} + + +================================================================== + +### FUNC 0015e980 (16 bytes) name=MAG_SetFixPara + +void MAG_SetFixPara(void) + +{ + (*(code *)PTR_MAG_SetFixPara_005002f0)(); + return; +} + + +================================================================== + +### FUNC 0015e990 (16 bytes) name=MAG_FindDetectTarget + +void MAG_FindDetectTarget(void) + +{ + (*(code *)PTR_MAG_FindDetectTarget_005002f8)(); + return; +} + + +================================================================== + +### FUNC 0015e9a0 (16 bytes) name=getPrefix + +void __thiscall cv::ocl::Program::getPrefix(Program *this,String *param_1) + +{ + (*(code *)PTR_getPrefix_00500300)(); + return; +} + + +================================================================== + +### FUNC 0015e9b0 (16 bytes) name=MAG_RevisedTemp2Gray + +void MAG_RevisedTemp2Gray(void) + +{ + (*(code *)PTR_MAG_RevisedTemp2Gray_00500308)(); + return; +} + + +================================================================== + +### FUNC 0015e9c0 (16 bytes) name=exp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double exp(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_exp_00500310)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015e9d0 (16 bytes) name=operator= + +void __thiscall cv::Mat::operator=(Mat *this,Scalar_ *param_1) + +{ + (*(code *)PTR_operator__00500318)(); + return; +} + + +================================================================== + +### FUNC 0015e9e0 (16 bytes) name=snprintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int snprintf(char *__s,size_t __maxlen,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_snprintf_00500320)((int)__s); + return iVar1; +} + + +================================================================== + +### FUNC 0015e9f0 (16 bytes) name=source + +void __thiscall cv::ocl::ProgramSource::source(ProgramSource *this) + +{ + (*(code *)PTR_source_00500328)(); + return; +} + + +================================================================== + +### FUNC 0015ea00 (16 bytes) name=mixChannels + +void cv::mixChannels(_InputArray *param_1,_InputOutputArray *param_2,int *param_3,ulong param_4) + +{ + (*(code *)PTR_mixChannels_00500330)(); + return; +} + + +================================================================== + +### FUNC 0015ea10 (16 bytes) name=~CVideoFunctions + +void __thiscall CVideoFunctions::~CVideoFunctions(CVideoFunctions *this) + +{ + (*(code *)PTR__CVideoFunctions_00500338)(); + return; +} + + +================================================================== + +### FUNC 0015ea20 (16 bytes) name=cvSeqPopMulti + +void cvSeqPopMulti(void) + +{ + (*(code *)PTR_cvSeqPopMulti_00500340)(); + return; +} + + +================================================================== + +### FUNC 0015ea30 (16 bytes) name=GetLength + +void __thiscall OFStream::GetLength(OFStream *this) + +{ + (*(code *)PTR_GetLength_00500348)(); + return; +} + + +================================================================== + +### FUNC 0015ea40 (16 bytes) name=getc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int getc(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_getc_00500350)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 0015ea50 (16 bytes) name=cvSetData + +void cvSetData(void) + +{ + (*(code *)PTR_cvSetData_00500358)(); + return; +} + + +================================================================== + +### FUNC 0015ea60 (16 bytes) name=_Unwind_GetIPInfo + +void _Unwind_GetIPInfo(void) + +{ + (*(code *)PTR__Unwind_GetIPInfo_00500360)(); + return; +} + + +================================================================== + +### FUNC 0015ea70 (16 bytes) name=MatExpr + +void __thiscall +cv::MatExpr::MatExpr + (MatExpr *this,MatOp *param_1,int param_2,Mat *param_3,Mat *param_4,Mat *param_5, + double param_6,double param_7,Scalar_ *param_8) + +{ + (*(code *)PTR_MatExpr_00500368)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015ea80 (16 bytes) name=cvCloneGraph + +void cvCloneGraph(void) + +{ + (*(code *)PTR_cvCloneGraph_00500370)(); + return; +} + + +================================================================== + +### FUNC 0015ea90 (16 bytes) name=Resume + +void __thiscall CMagDevice::Resume(CMagDevice *this) + +{ + (*(code *)PTR_Resume_00500378)(); + return; +} + + +================================================================== + +### FUNC 0015eaa0 (16 bytes) name=MAG_GetRectTemperatureInfo + +void MAG_GetRectTemperatureInfo(void) + +{ + (*(code *)PTR_MAG_GetRectTemperatureInfo_00500380)(); + return; +} + + +================================================================== + +### FUNC 0015eab0 (16 bytes) name=type + +void __thiscall cv::_InputArray::type(_InputArray *this,int param_1) + +{ + (*(code *)PTR_type_00500388)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015eac0 (16 bytes) name=cvStartReadSeq + +void cvStartReadSeq(void) + +{ + (*(code *)PTR_cvStartReadSeq_00500390)(); + return; +} + + +================================================================== + +### FUNC 0015ead0 (16 bytes) name=Reset + +void __thiscall CFunctions::Reset(CFunctions *this,struct_IntrinsicPara *param_1) + +{ + (*(code *)PTR_Reset_00500398)(); + return; +} + + +================================================================== + +### FUNC 0015eae0 (16 bytes) name=GrayEnlarge + +void __thiscall CFunctions::GrayEnlarge(CFunctions *this) + +{ + (*(code *)PTR_GrayEnlarge_005003a0)(); + return; +} + + +================================================================== + +### FUNC 0015eaf0 (16 bytes) name=setAutoRelease + +void cv::ogl::Buffer::setAutoRelease(bool param_1) + +{ + (*(code *)PTR_setAutoRelease_005003a8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015eb00 (16 bytes) name=ReadRemoteData + +void ReadRemoteData(uint param_1,uint param_2) + +{ + (*(code *)PTR_ReadRemoteData_005003b0)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015eb10 (16 bytes) name=PrepareProcessImage + +void CMagDevice::PrepareProcessImage(_func_void_uint_int_int_void_ptr *param_1,void *param_2) + +{ + (*(code *)PTR_PrepareProcessImage_005003b8)(); + return; +} + + +================================================================== + +### FUNC 0015eb20 (16 bytes) name=cvChangeSeqBlock + +void cvChangeSeqBlock(void) + +{ + (*(code *)PTR_cvChangeSeqBlock_005003c0)(); + return; +} + + +================================================================== + +### FUNC 0015eb30 (16 bytes) name=getMatRef + +void __thiscall cv::_OutputArray::getMatRef(_OutputArray *this,int param_1) + +{ + (*(code *)PTR_getMatRef_005003c8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015eb40 (16 bytes) name=pthread_attr_setdetachstate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_setdetachstate(pthread_attr_t *__attr,int __detachstate) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_attr_setdetachstate_005003d0)((int)__attr,__detachstate); + return iVar1; +} + + +================================================================== + +### FUNC 0015eb50 (16 bytes) name=strtol + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long strtol(char *__nptr,char **__endptr,int __base) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_strtol_005003d8)(__nptr,__endptr,__base); + return lVar1; +} + + +================================================================== + +### FUNC 0015eb60 (16 bytes) name=ellipse + +void cv::ellipse(void) + +{ + (*(code *)PTR_ellipse_005003e0)(); + return; +} + + +================================================================== + +### FUNC 0015eb70 (16 bytes) name=NewObject + +void _JNIEnv::NewObject(_jclass *param_1,_jmethodID *param_2,...) + +{ + (*(code *)PTR_NewObject_005003e8)(); + return; +} + + +================================================================== + +### FUNC 0015eb80 (16 bytes) name=boxFilter + +void cv::boxFilter(void) + +{ + (*(code *)PTR_boxFilter_005003f0)(); + return; +} + + +================================================================== + +### FUNC 0015eb90 (16 bytes) name=Null + +void cv::cuda::Stream::Null(void) + +{ + (*(code *)PTR_Null_005003f8)(); + return; +} + + +================================================================== + +### FUNC 0015eba0 (16 bytes) name=~__vmi_class_type_info + +void __thiscall +__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__vmi_class_type_info *this) + +{ + (*(code *)PTR____vmi_class_type_info_00500400)(); + return; +} + + +================================================================== + +### FUNC 0015ebb0 (16 bytes) name=LoadBufferedDDT + +void __thiscall +CMagDevice::LoadBufferedDDT + (CMagDevice *this,OutputPara *param_1,void *param_2,uint param_3, + _func_void_uint_uint_uint_void_ptr *param_4,void *param_5) + +{ + (*(code *)PTR_LoadBufferedDDT_00500408)(); + return; +} + + +================================================================== + +### FUNC 0015ebc0 (16 bytes) name=cvReleaseImage + +void cvReleaseImage(void) + +{ + (*(code *)PTR_cvReleaseImage_00500410)(); + return; +} + + +================================================================== + +### FUNC 0015ebd0 (16 bytes) name=deallocate + +void __thiscall cv::UMat::deallocate(UMat *this) + +{ + (*(code *)PTR_deallocate_00500418)(); + return; +} + + +================================================================== + +### FUNC 0015ebe0 (16 bytes) name=cvCopy + +void cvCopy(void) + +{ + (*(code *)PTR_cvCopy_00500420)(); + return; +} + + +================================================================== + +### FUNC 0015ebf0 (16 bytes) name=GetRectTemperatureInfo + +void CMagDevice::GetRectTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,int *param_5) + +{ + (*(code *)PTR_GetRectTemperatureInfo_00500428)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015ec00 (16 bytes) name=~bad_alloc + +void __thiscall std::bad_alloc::~bad_alloc(bad_alloc *this) + +{ + (*(code *)PTR__bad_alloc_00500430)(); + return; +} + + +================================================================== + +### FUNC 0015ec10 (16 bytes) name=getData + +void __thiscall cv::TLSDataContainer::getData(TLSDataContainer *this) + +{ + (*(code *)PTR_getData_00500438)(); + return; +} + + +================================================================== + +### FUNC 0015ec20 (16 bytes) name=cvCreateMatNDHeader + +void cvCreateMatNDHeader(void) + +{ + (*(code *)PTR_cvCreateMatNDHeader_00500440)(); + return; +} + + +================================================================== + +### FUNC 0015ec30 (16 bytes) name=FileNodeIterator + +void __thiscall +cv::FileNodeIterator::FileNodeIterator(FileNodeIterator *this,FileNodeIterator *param_1) + +{ + (*(code *)PTR_FileNodeIterator_00500448)(); + return; +} + + +================================================================== + +### FUNC 0015ec40 (16 bytes) name=unlock + +void __thiscall cv::UMatData::unlock(UMatData *this) + +{ + (*(code *)PTR_unlock_00500450)(); + return; +} + + +================================================================== + +### FUNC 0015ec50 (16 bytes) name=~__class_type_info + +void __thiscall __cxxabiv1::__class_type_info::~__class_type_info(__class_type_info *this) + +{ + (*(code *)PTR____class_type_info_00500458)(); + return; +} + + +================================================================== + +### FUNC 0015ec60 (16 bytes) name=cvCreateSeq + +void cvCreateSeq(void) + +{ + (*(code *)PTR_cvCreateSeq_00500460)(); + return; +} + + +================================================================== + +### FUNC 0015ec70 (16 bytes) name=__android_log_print + +void __android_log_print(void) + +{ + (*(code *)PTR___android_log_print_00500468)(); + return; +} + + +================================================================== + +### FUNC 0015ec80 (16 bytes) name=~Condition + +void __thiscall Condition::~Condition(Condition *this) + +{ + (*(code *)PTR__Condition_00500470)(); + return; +} + + +================================================================== + +### FUNC 0015ec90 (16 bytes) name=Image2D + +void __thiscall cv::ocl::Image2D::Image2D(Image2D *this,Image2D *param_1) + +{ + (*(code *)PTR_Image2D_00500478)(); + return; +} + + +================================================================== + +### FUNC 0015eca0 (16 bytes) name=MAG_SetColorPalette + +void MAG_SetColorPalette(void) + +{ + (*(code *)PTR_MAG_SetColorPalette_00500480)(); + return; +} + + +================================================================== + +### FUNC 0015ecb0 (16 bytes) name=Get + +void __thiscall MStream::Get(MStream *this) + +{ + (*(code *)PTR_Get_00500488)(); + return; +} + + +================================================================== + +### FUNC 0015ecc0 (16 bytes) name=ftell + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long ftell(FILE *__stream) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_ftell_00500490)(); + return lVar1; +} + + +================================================================== + +### FUNC 0015ecd0 (16 bytes) name=getUMat + +void cv::_InputArray::getUMat(int param_1) + +{ + (*(code *)PTR_getUMat_00500498)(param_1); + return; +} + + +================================================================== + +### FUNC 0015ece0 (16 bytes) name=GetJint + +void GetJint(_JNIEnv *param_1,char *param_2,_jobject *param_3) + +{ + (*(code *)PTR_GetJint_005004a0)(); + return; +} + + +================================================================== + +### FUNC 0015ecf0 (16 bytes) name=remove + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int remove(char *__filename) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_remove_005004a8)((int)__filename); + return iVar1; +} + + +================================================================== + +### FUNC 0015ed00 (16 bytes) name=load + +void __thiscall MDTHelper::load(MDTHelper *this,char *param_1) + +{ + (*(code *)PTR_load_005004b0)(); + return; +} + + +================================================================== + +### FUNC 0015ed10 (16 bytes) name=SendCmd + +void __thiscall CNetComm::SendCmd(CNetComm *this,char *param_1,uint param_2) + +{ + (*(code *)PTR_SendCmd_005004b8)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015ed20 (16 bytes) name=fill + +void __thiscall +cv::RNG::fill(RNG *this,_InputOutputArray *param_1,int param_2,_InputArray *param_3, + _InputArray *param_4,bool param_5) + +{ + (*(code *)PTR_fill_005004c0)(this,param_1,param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### FUNC 0015ed30 (16 bytes) name=diag + +void cv::UMat::diag(int param_1) + +{ + (*(code *)PTR_diag_005004c8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015ed40 (16 bytes) name=towupper + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t towupper(wint_t __wc) + +{ + wint_t wVar1; + + wVar1 = (*(code *)PTR_towupper_005004d0)(__wc); + return wVar1; +} + + +================================================================== + +### FUNC 0015ed50 (16 bytes) name=GetTemperaturemC + +void __thiscall +CFunctions::GetTemperaturemC(CFunctions *this,int *param_1,uint param_2,int param_3,int param_4) + +{ + (*(code *)PTR_GetTemperaturemC_005004d8)(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015ed60 (16 bytes) name=cvGetHashedKey + +void cvGetHashedKey(void) + +{ + (*(code *)PTR_cvGetHashedKey_005004e0)(); + return; +} + + +================================================================== + +### FUNC 0015ed70 (16 bytes) name=pthread_mutex_unlock + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_unlock(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_unlock_005004e8)((int)__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 0015ed80 (16 bytes) name=Platform + +void __thiscall cv::ocl::Platform::Platform(Platform *this) + +{ + (*(code *)PTR_Platform_005004f0)(); + return; +} + + +================================================================== + +### FUNC 0015ed90 (16 bytes) name=libusb_has_capability + +void libusb_has_capability(void) + +{ + (*(code *)PTR_libusb_has_capability_005004f8)(); + return; +} + + +================================================================== + +### FUNC 0015eda0 (16 bytes) name=MAG_SetImageTransform + +void MAG_SetImageTransform(void) + +{ + (*(code *)PTR_MAG_SetImageTransform_00500500)(); + return; +} + + +================================================================== + +### FUNC 0015edb0 (16 bytes) name=Mahalanobis + +void cv::Mahalanobis(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3) + +{ + (*(code *)PTR_Mahalanobis_00500508)(); + return; +} + + +================================================================== + +### FUNC 0015edc0 (16 bytes) name=needed + +void __thiscall cv::_OutputArray::needed(_OutputArray *this) + +{ + (*(code *)PTR_needed_00500510)(); + return; +} + + +================================================================== + +### FUNC 0015edd0 (16 bytes) name=locateROI + +void __thiscall cv::Mat::locateROI(Mat *this,Size_ *param_1,Point_ *param_2) + +{ + (*(code *)PTR_locateROI_00500518)(); + return; +} + + +================================================================== + +### FUNC 0015ede0 (16 bytes) name=__dynamic_cast + +void __dynamic_cast(void) + +{ + (*(code *)PTR___dynamic_cast_00500520)(); + return; +} + + +================================================================== + +### FUNC 0015edf0 (16 bytes) name=sum + +void __thiscall cv::sum(cv *this,_InputArray *param_1) + +{ + (*(code *)PTR_sum_00500528)(); + return; +} + + +================================================================== + +### FUNC 0015ee00 (16 bytes) name=cvInitTreeNodeIterator + +void cvInitTreeNodeIterator(void) + +{ + (*(code *)PTR_cvInitTreeNodeIterator_00500530)(); + return; +} + + +================================================================== + +### FUNC 0015ee10 (16 bytes) name=MAG_GetLineTemperatureInfo + +void MAG_GetLineTemperatureInfo(void) + +{ + (*(code *)PTR_MAG_GetLineTemperatureInfo_00500538)(); + return; +} + + +================================================================== + +### FUNC 0015ee20 (16 bytes) name=operator= + +void __thiscall cv::MatExpr::operator=(MatExpr *this,MatExpr *param_1) + +{ + (*(code *)PTR_operator__00500540)(); + return; +} + + +================================================================== + +### FUNC 0015ee30 (16 bytes) name=noArray + +void cv::noArray(void) + +{ + (*(code *)PTR_noArray_00500548)(); + return; +} + + +================================================================== + +### FUNC 0015ee40 (16 bytes) name=dlsym + +void dlsym(void) + +{ + (*(code *)PTR_dlsym_00500550)(); + return; +} + + +================================================================== + +### FUNC 0015ee50 (16 bytes) name=strcoll + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strcoll(char *__s1,char *__s2) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_strcoll_00500558)((int)__s1); + return iVar1; +} + + +================================================================== + +### FUNC 0015ee60 (16 bytes) name=IFStream + +void __thiscall IFStream::IFStream(IFStream *this,char *param_1) + +{ + (*(code *)PTR_IFStream_00500560)(); + return; +} + + +================================================================== + +### FUNC 0015ee70 (16 bytes) name=linux_get_device_address + +void linux_get_device_address(void) + +{ + (*(code *)PTR_linux_get_device_address_00500568)(); + return; +} + + +================================================================== + +### FUNC 0015ee80 (16 bytes) name=ndoffset + +void __thiscall cv::UMat::ndoffset(UMat *this,ulong *param_1) + +{ + (*(code *)PTR_ndoffset_00500570)(); + return; +} + + +================================================================== + +### FUNC 0015ee90 (16 bytes) name=Write + +void __thiscall OFStream::Write(OFStream *this,char *param_1) + +{ + (*(code *)PTR_Write_00500578)(); + return; +} + + +================================================================== + +### FUNC 0015eea0 (16 bytes) name=setTo + +void __thiscall cv::UMat::setTo(UMat *this,_InputArray *param_1,_InputArray *param_2) + +{ + (*(code *)PTR_setTo_00500580)(); + return; +} + + +================================================================== + +### FUNC 0015eeb0 (16 bytes) name=create + +void cv::ocl::Kernel::create(char *param_1,ProgramSource *param_2,String *param_3,String *param_4) + +{ + (*(code *)PTR_create_00500588)(); + return; +} + + +================================================================== + +### FUNC 0015eec0 (16 bytes) name=libusb_get_bus_number + +void libusb_get_bus_number(void) + +{ + (*(code *)PTR_libusb_get_bus_number_00500590)(); + return; +} + + +================================================================== + +### FUNC 0015eed0 (16 bytes) name=MAG_GetCamInfo + +void MAG_GetCamInfo(void) + +{ + (*(code *)PTR_MAG_GetCamInfo_00500598)(); + return; +} + + +================================================================== + +### FUNC 0015eee0 (16 bytes) name=~OFStream + +void __thiscall OFStream::~OFStream(OFStream *this) + +{ + (*(code *)PTR__OFStream_005005a0)(); + return; +} + + +================================================================== + +### FUNC 0015eef0 (16 bytes) name=clear + +void __thiscall cv::_OutputArray::clear(_OutputArray *this) + +{ + (*(code *)PTR_clear_005005a8)(); + return; +} + + +================================================================== + +### FUNC 0015ef00 (16 bytes) name=__cxa_get_globals + +void __cxa_get_globals(void) + +{ + (*(code *)PTR___cxa_get_globals_005005b0)(); + return; +} + + +================================================================== + +### FUNC 0015ef10 (16 bytes) name=operator<< + +void cv::operator<<(FileStorage *param_1,String *param_2) + +{ + (*(code *)PTR_operator<<_005005b8)(); + return; +} + + +================================================================== + +### FUNC 0015ef20 (16 bytes) name=cvCreateImage + +void cvCreateImage(void) + +{ + (*(code *)PTR_cvCreateImage_005005c0)(); + return; +} + + +================================================================== + +### FUNC 0015ef30 (16 bytes) name=GetTemperatureProbe + +void CMagDevice::GetTemperatureProbe(uint param_1,uint param_2) + +{ + (*(code *)PTR_GetTemperatureProbe_005005c8)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015ef40 (16 bytes) name=pthread_cond_wait + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_wait(pthread_cond_t *__cond,pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_wait_005005d0)((int)__cond); + return iVar1; +} + + +================================================================== + +### FUNC 0015ef50 (16 bytes) name=MAG_SaveDDT2Buffer + +void MAG_SaveDDT2Buffer(void) + +{ + (*(code *)PTR_MAG_SaveDDT2Buffer_005005d8)(); + return; +} + + +================================================================== + +### FUNC 0015ef60 (16 bytes) name=createGpuMatHeader + +void __thiscall cv::cuda::HostMem::createGpuMatHeader(HostMem *this) + +{ + (*(code *)PTR_createGpuMatHeader_005005e0)(); + return; +} + + +================================================================== + +### FUNC 0015ef70 (16 bytes) name=size + +void cv::_InputArray::size(int param_1) + +{ + (*(code *)PTR_size_005005e8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015ef80 (16 bytes) name=operator() + +void __thiscall +cv::DefaultDeleter::operator()(DefaultDeleter *this,CvSparseMat *param_1) + +{ + (*(code *)PTR_operator___005005f0)(); + return; +} + + +================================================================== + +### FUNC 0015ef90 (16 bytes) name=backProject + +void __thiscall cv::PCA::backProject(PCA *this,_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_backProject_005005f8)(); + return; +} + + +================================================================== + +### FUNC 0015efa0 (16 bytes) name=determinant + +void cv::determinant(_InputArray *param_1) + +{ + (*(code *)PTR_determinant_00500600)(); + return; +} + + +================================================================== + +### FUNC 0015efb0 (16 bytes) name=fillPoly + +void cv::fillPoly(void) + +{ + (*(code *)PTR_fillPoly_00500608)(); + return; +} + + +================================================================== + +### FUNC 0015efc0 (16 bytes) name=IsLinked + +void __thiscall CMagDevice::IsLinked(CMagDevice *this) + +{ + (*(code *)PTR_IsLinked_00500610)(); + return; +} + + +================================================================== + +### FUNC 0015efd0 (16 bytes) name=_M_insert_aux + +void __thiscall std::vector>::_M_insert_aux(void) + +{ + (*(code *)PTR__M_insert_aux_00500618)(); + return; +} + + +================================================================== + +### FUNC 0015efe0 (16 bytes) name=~Queue + +void __thiscall cv::ocl::Queue::~Queue(Queue *this) + +{ + (*(code *)PTR__Queue_00500620)(); + return; +} + + +================================================================== + +### FUNC 0015eff0 (16 bytes) name=PlatformInfo + +void __thiscall cv::ocl::PlatformInfo::PlatformInfo(PlatformInfo *this,PlatformInfo *param_1) + +{ + (*(code *)PTR_PlatformInfo_00500628)(); + return; +} + + +================================================================== + +### FUNC 0015f000 (16 bytes) name=deviceVersionMinor + +void __thiscall cv::ocl::Device::deviceVersionMinor(Device *this) + +{ + (*(code *)PTR_deviceVersionMinor_00500630)(); + return; +} + + +================================================================== + +### FUNC 0015f010 (16 bytes) name=putwc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t putwc(wchar_t __wc,__FILE *__stream) + +{ + wint_t wVar1; + + wVar1 = (*(code *)PTR_putwc_00500638)(__wc); + return wVar1; +} + + +================================================================== + +### FUNC 0015f020 (16 bytes) name=size + +void cv::MatExpr::size(void) + +{ + (*(code *)PTR_size_00500640)(); + return; +} + + +================================================================== + +### FUNC 0015f030 (16 bytes) name=StartProcessImage + +void StartProcessImage(void) + +{ + (*(code *)PTR_StartProcessImage_00500648)(); + return; +} + + +================================================================== + +### FUNC 0015f040 (16 bytes) name=max + +void cv::max(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_max_00500650)(); + return; +} + + +================================================================== + +### FUNC 0015f050 (16 bytes) name=cvCreateMatND + +void cvCreateMatND(void) + +{ + (*(code *)PTR_cvCreateMatND_00500658)(); + return; +} + + +================================================================== + +### FUNC 0015f060 (16 bytes) name=MAG_ProbeDDT + +void MAG_ProbeDDT(void) + +{ + (*(code *)PTR_MAG_ProbeDDT_00500660)(); + return; +} + + +================================================================== + +### FUNC 0015f070 (16 bytes) name=absdiff + +void cv::absdiff(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_absdiff_00500668)(); + return; +} + + +================================================================== + +### FUNC 0015f080 (16 bytes) name=cvCreateGraph + +void cvCreateGraph(void) + +{ + (*(code *)PTR_cvCreateGraph_00500670)(); + return; +} + + +================================================================== + +### FUNC 0015f090 (16 bytes) name=convertTo + +void __thiscall +cv::Mat::convertTo(Mat *this,_OutputArray *param_1,int param_2,double param_3,double param_4) + +{ + (*(code *)PTR_convertTo_00500678)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015f0a0 (16 bytes) name=t + +void cv::Mat::t(void) + +{ + (*(code *)PTR_t_00500680)(); + return; +} + + +================================================================== + +### FUNC 0015f0b0 (16 bytes) name=getTickFrequency + +void cv::getTickFrequency(void) + +{ + (*(code *)PTR_getTickFrequency_00500688)(); + return; +} + + +================================================================== + +### FUNC 0015f0c0 (16 bytes) name=handle + +void __thiscall cv::UMat::handle(UMat *this,int param_1) + +{ + (*(code *)PTR_handle_00500690)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015f0d0 (16 bytes) name=create + +void __thiscall cv::UMat::create(void) + +{ + (*(code *)PTR_create_00500698)(); + return; +} + + +================================================================== + +### FUNC 0015f0e0 (16 bytes) name=GetOffset + +void GetOffset(char *param_1,ushort *param_2,int param_3,int param_4,int *param_5,int *param_6) + +{ + (*(code *)PTR_GetOffset_005006a0)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015f0f0 (16 bytes) name=repeat + +void cv::repeat(_InputArray *param_1,int param_2,int param_3,_OutputArray *param_4) + +{ + (*(code *)PTR_repeat_005006a8)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015f100 (16 bytes) name=gzputs + +void gzputs(void) + +{ + (*(code *)PTR_gzputs_005006b0)(); + return; +} + + +================================================================== + +### FUNC 0015f110 (16 bytes) name=libusb_get_device_list + +void libusb_get_device_list(void) + +{ + (*(code *)PTR_libusb_get_device_list_005006b8)(); + return; +} + + +================================================================== + +### FUNC 0015f120 (16 bytes) name=wctob + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int wctob(wint_t __c) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_wctob_005006c0)(__c); + return iVar1; +} + + +================================================================== + +### FUNC 0015f130 (16 bytes) name=dct + +void cv::dct(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_dct_005006c8)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015f140 (16 bytes) name=diag + +void cv::Mat::diag(int param_1) + +{ + (*(code *)PTR_diag_005006d0)(param_1); + return; +} + + +================================================================== + +### FUNC 0015f150 (16 bytes) name=minMaxIdx + +void cv::minMaxIdx(_InputArray *param_1,double *param_2,double *param_3,int *param_4,int *param_5, + _InputArray *param_6) + +{ + (*(code *)PTR_minMaxIdx_005006d8)(); + return; +} + + +================================================================== + +### FUNC 0015f160 (16 bytes) name=UMat + +void __thiscall cv::UMat::UMat(UMat *this,UMat *param_1,Range *param_2,Range *param_3) + +{ + (*(code *)PTR_UMat_005006e0)(); + return; +} + + +================================================================== + +### FUNC 0015f170 (16 bytes) name=circle + +void cv::circle(void) + +{ + (*(code *)PTR_circle_005006e8)(); + return; +} + + +================================================================== + +### FUNC 0015f180 (16 bytes) name=cvGraphRemoveEdgeByPtr + +void cvGraphRemoveEdgeByPtr(void) + +{ + (*(code *)PTR_cvGraphRemoveEdgeByPtr_005006f0)(); + return; +} + + +================================================================== + +### FUNC 0015f190 (16 bytes) name=setUseOptimized + +void cv::setUseOptimized(bool param_1) + +{ + (*(code *)PTR_setUseOptimized_005006f8)(param_1); + return; +} + + +================================================================== + +### FUNC 0015f1a0 (16 bytes) name=cvCreateChildMemStorage + +void cvCreateChildMemStorage(void) + +{ + (*(code *)PTR_cvCreateChildMemStorage_00500700)(); + return; +} + + +================================================================== + +### FUNC 0015f1b0 (16 bytes) name=eye + +void __thiscall cv::UMat::eye(void) + +{ + (*(code *)PTR_eye_00500708)(); + return; +} + + +================================================================== + +### FUNC 0015f1c0 (16 bytes) name=transform + +void cv::transform(_InputArray *param_1,_OutputArray *param_2,_InputArray *param_3) + +{ + (*(code *)PTR_transform_00500710)(); + return; +} + + +================================================================== + +### FUNC 0015f1d0 (16 bytes) name=ndevices + +void __thiscall cv::ocl::Context::ndevices(Context *this) + +{ + (*(code *)PTR_ndevices_00500718)(); + return; +} + + +================================================================== + +### FUNC 0015f1e0 (16 bytes) name=poll + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int poll(pollfd *__fds,nfds_t __nfds,int __timeout) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_poll_00500720)((int)__fds,__nfds,__timeout); + return iVar1; +} + + +================================================================== + +### FUNC 0015f1f0 (16 bytes) name=pthread_cond_timedwait + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_timedwait(pthread_cond_t *__cond,pthread_mutex_t *__mutex,timespec *__abstime) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_timedwait_00500728)((int)__cond); + return iVar1; +} + + +================================================================== + +### FUNC 0015f200 (16 bytes) name=cvWriteReal + +void cvWriteReal(void) + +{ + (*(code *)PTR_cvWriteReal_00500730)(); + return; +} + + +================================================================== + +### FUNC 0015f210 (16 bytes) name=clipLine + +void cv::clipLine(void) + +{ + (*(code *)PTR_clipLine_00500738)(); + return; +} + + +================================================================== + +### FUNC 0015f220 (16 bytes) name=MD5Transform + +void md5::MD5Transform(uint *param_1,uchar *param_2) + +{ + (*(code *)PTR_MD5Transform_00500740)(); + return; +} + + +================================================================== + +### FUNC 0015f230 (16 bytes) name=mixChannels + +void cv::mixChannels(Mat *param_1,ulong param_2,Mat *param_3,ulong param_4,int *param_5, + ulong param_6) + +{ + (*(code *)PTR_mixChannels_00500748)(); + return; +} + + +================================================================== + +### FUNC 0015f240 (16 bytes) name=pthread_create + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_create(pthread_t *__newthread,pthread_attr_t *__attr,__start_routine *__start_routine, + void *__arg) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_create_00500750)((int)__newthread); + return iVar1; +} + + +================================================================== + +### FUNC 0015f250 (16 bytes) name=log + +void cv::log(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_log_00500758)(); + return; +} + + +================================================================== + +### FUNC 0015f260 (16 bytes) name=ResizeBMP_2to3 + +void __thiscall CFunctions::ResizeBMP_2to3(CFunctions *this) + +{ + (*(code *)PTR_ResizeBMP_2to3_00500760)(); + return; +} + + +================================================================== + +### FUNC 0015f270 (16 bytes) name=cvNextTreeNode + +void cvNextTreeNode(void) + +{ + (*(code *)PTR_cvNextTreeNode_00500768)(); + return; +} + + +================================================================== + +### FUNC 0015f280 (16 bytes) name=add + +void __thiscall cv::MatOp::add(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + (*(code *)PTR_add_00500770)(); + return; +} + + +================================================================== + +### FUNC 0015f290 (16 bytes) name=~MatExpr + +void __thiscall cv::MatExpr::~MatExpr(MatExpr *this) + +{ + (*(code *)PTR__MatExpr_00500778)(); + return; +} + + +================================================================== + +### FUNC 0015f2a0 (16 bytes) name=imageFromBufferSupport + +void __thiscall cv::ocl::Device::imageFromBufferSupport(Device *this) + +{ + (*(code *)PTR_imageFromBufferSupport_00500780)(); + return; +} + + +================================================================== + +### FUNC 0015f2b0 (16 bytes) name=cvScalarToRawData + +void cvScalarToRawData(void) + +{ + (*(code *)PTR_cvScalarToRawData_00500788)(); + return; +} + + +================================================================== + +### FUNC 0015f2c0 (16 bytes) name=operator* + +void __thiscall cv::operator*(cv *this,Mat *param_1,double param_2) + +{ + (*(code *)PTR_operator__00500790)(); + return; +} + + +================================================================== + +### FUNC 0015f2d0 (16 bytes) name=pthread_cond_broadcast + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_broadcast(pthread_cond_t *__cond) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_broadcast_00500798)((int)__cond); + return iVar1; +} + + +================================================================== + +### FUNC 0015f2e0 (16 bytes) name=fwrite + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fwrite(void *__ptr,size_t __size,size_t __n,FILE *__s) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_fwrite_005007a0)(); + return sVar1; +} + + +================================================================== + +### FUNC 0015f2f0 (16 bytes) name=cvCreateMat + +void cvCreateMat(void) + +{ + (*(code *)PTR_cvCreateMat_005007a8)(); + return; +} + + +================================================================== + +### FUNC 0015f300 (16 bytes) name=MatExpr + +void __thiscall cv::MatExpr::MatExpr(MatExpr *this) + +{ + (*(code *)PTR_MatExpr_005007b0)(); + return; +} + + +================================================================== + +### FUNC 0015f310 (16 bytes) name=defaultAllocator + +void cv::cuda::GpuMat::defaultAllocator(void) + +{ + (*(code *)PTR_defaultAllocator_005007b8)(); + return; +} + + +================================================================== + +### FUNC 0015f320 (16 bytes) name=_M_fill_insert + +void __thiscall std::vector>::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_005007c0)(); + return; +} + + +================================================================== + +### FUNC 0015f330 (16 bytes) name=~SVD + +void __thiscall cv::SVD::~SVD(SVD *this) + +{ + (*(code *)PTR__SVD_005007c8)(); + return; +} + + +================================================================== + +### FUNC 0015f340 (16 bytes) name=SaveBMP + +void __thiscall CFunctions::SaveBMP(void) + +{ + (*(code *)PTR_SaveBMP_005007d0)(); + return; +} + + +================================================================== + +### FUNC 0015f350 (16 bytes) name=CallObjectMethod + +void _JNIEnv::CallObjectMethod(_jobject *param_1,_jmethodID *param_2,...) + +{ + (*(code *)PTR_CallObjectMethod_005007d8)(); + return; +} + + +================================================================== + +### FUNC 0015f360 (16 bytes) name=cvEndWriteStruct + +void cvEndWriteStruct(void) + +{ + (*(code *)PTR_cvEndWriteStruct_005007e0)(); + return; +} + + +================================================================== + +### FUNC 0015f370 (16 bytes) name=EstimateUnderArmTempFromForeheadRect + +void CMagDevice::EstimateUnderArmTempFromForeheadRect + (uint param_1,uint param_2,uint param_3,uint param_4) + +{ + (*(code *)PTR_EstimateUnderArmTempFromForeheadRect_005007e8)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015f380 (16 bytes) name=available + +void __thiscall cv::ocl::Device::available(Device *this) + +{ + (*(code *)PTR_available_005007f0)(); + return; +} + + +================================================================== + +### FUNC 0015f390 (16 bytes) name=cvOpenFileStorage + +void cvOpenFileStorage(void) + +{ + (*(code *)PTR_cvOpenFileStorage_005007f8)(); + return; +} + + +================================================================== + +### FUNC 0015f3a0 (16 bytes) name=GenerateVolatileLens + +void __thiscall CFunctions::GenerateVolatileLens(CFunctions *this) + +{ + (*(code *)PTR_GenerateVolatileLens_00500800)(); + return; +} + + +================================================================== + +### FUNC 0015f3b0 (16 bytes) name=GetSTDFrame + +void __thiscall CSmoother::GetSTDFrame(CSmoother *this) + +{ + (*(code *)PTR_GetSTDFrame_00500808)(); + return; +} + + +================================================================== + +### FUNC 0015f3c0 (16 bytes) name=mmap + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * mmap(void *__addr,size_t __len,int __prot,int __flags,int __fd,__off_t __offset) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_mmap_00500810)(__addr,__len,__prot,__flags,__fd); + return pvVar1; +} + + +================================================================== + +### FUNC 0015f3d0 (16 bytes) name=line + +void cv::line(void) + +{ + (*(code *)PTR_line_00500818)(); + return; +} + + +================================================================== + +### FUNC 0015f3e0 (16 bytes) name=reshape + +void cv::cuda::HostMem::reshape(int param_1,int param_2) + +{ + (*(code *)PTR_reshape_00500820)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015f3f0 (16 bytes) name=libusb_alloc_transfer + +void libusb_alloc_transfer(void) + +{ + (*(code *)PTR_libusb_alloc_transfer_00500828)(); + return; +} + + +================================================================== + +### FUNC 0015f400 (16 bytes) name=LocalMap7x7_Simple + +void __thiscall +CFunctions::LocalMap7x7_Simple(CFunctions *this,int *param_1,ushort *param_2,uint param_3) + +{ + (*(code *)PTR_LocalMap7x7_Simple_00500830)(); + return; +} + + +================================================================== + +### FUNC 0015f410 (16 bytes) name=strcpy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strcpy(char *__dest,char *__src) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strcpy_00500838)(); + return pcVar1; +} + + +================================================================== + +### FUNC 0015f420 (16 bytes) name=fileno + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fileno(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fileno_00500840)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 0015f430 (16 bytes) name=newBitmap + +void newBitmap(_JNIEnv *param_1,_jobject **param_2,int param_3,int param_4) + +{ + (*(code *)PTR_newBitmap_00500848)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015f440 (16 bytes) name=findTarget + +void ImageProc::findTarget + (uint param_1,uchar *param_2,int param_3,int param_4,int param_5,uint *param_6, + int param_7) + +{ + (*(code *)PTR_findTarget_00500850)(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 0015f450 (16 bytes) name=operator= + +void __thiscall cv::ocl::PlatformInfo::operator=(PlatformInfo *this,PlatformInfo *param_1) + +{ + (*(code *)PTR_operator__00500858)(); + return; +} + + +================================================================== + +### FUNC 0015f460 (16 bytes) name=GetRemoteInfo + +void __thiscall CMagDevice::GetRemoteInfo(CMagDevice *this) + +{ + (*(code *)PTR_GetRemoteInfo_00500860)(); + return; +} + + +================================================================== + +### FUNC 0015f470 (16 bytes) name=vsnprintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int vsnprintf(char *__s,size_t __maxlen,char *__format,__gnuc_va_list __arg) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_vsnprintf_00500868)((int)__s); + return iVar1; +} + + +================================================================== + +### FUNC 0015f480 (16 bytes) name=Program + +void __thiscall cv::ocl::Program::Program(Program *this,Program *param_1) + +{ + (*(code *)PTR_Program_00500870)(); + return; +} + + +================================================================== + +### FUNC 0015f490 (16 bytes) name=operator.delete[] + +void operator_delete__(void *param_1) + +{ + (*(code *)PTR_operator_delete___00500878)(); + return; +} + + +================================================================== + +### FUNC 0015f4a0 (16 bytes) name=_M_insert_aux + +void __thiscall std::vector>::_M_insert_aux(void) + +{ + (*(code *)PTR__M_insert_aux_00500880)(); + return; +} + + +================================================================== + +### FUNC 0015f4b0 (16 bytes) name=Mirror + +void __thiscall CFunctions::Mirror(CFunctions *this,uint param_1) + +{ + (*(code *)PTR_Mirror_00500888)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015f4c0 (16 bytes) name=newNode + +void __thiscall cv::SparseMat::newNode(SparseMat *this,int *param_1,ulong param_2) + +{ + (*(code *)PTR_newNode_00500890)(); + return; +} + + +================================================================== + +### FUNC 0015f4d0 (16 bytes) name=libusb_error_name + +void libusb_error_name(void) + +{ + (*(code *)PTR_libusb_error_name_00500898)(); + return; +} + + +================================================================== + +### FUNC 0015f4e0 (16 bytes) name=normalize + +void cv::normalize(_InputArray *param_1,_InputOutputArray *param_2,double param_3,double param_4, + int param_5,int param_6,_InputArray *param_7) + +{ + (*(code *)PTR_normalize_005008a0)(param_1,param_2,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 0015f4f0 (16 bytes) name=cvCreateSeqBlock + +void cvCreateSeqBlock(void) + +{ + (*(code *)PTR_cvCreateSeqBlock_005008a8)(); + return; +} + + +================================================================== + +### FUNC 0015f500 (16 bytes) name=libusb_bulk_transfer + +void libusb_bulk_transfer(void) + +{ + (*(code *)PTR_libusb_bulk_transfer_005008b0)(); + return; +} + + +================================================================== + +### FUNC 0015f510 (16 bytes) name=_S_select>const,void> + +void std::allocator_traits>>:: + _S_select>const,void>(allocator_conflict *param_1,...) + +{ + (*(code *)PTR__S_select>const,void>_005008b8)(); + return; +} + + +================================================================== + +### FUNC 0015f520 (16 bytes) name=MAG_TriggerFFC + +void MAG_TriggerFFC(void) + +{ + (*(code *)PTR_MAG_TriggerFFC_005008c0)(); + return; +} + + +================================================================== + +### FUNC 0015f530 (16 bytes) name=ProgramSource + +void __thiscall cv::ocl::ProgramSource::ProgramSource(ProgramSource *this) + +{ + (*(code *)PTR_ProgramSource_005008c8)(); + return; +} + + +================================================================== + +### FUNC 0015f540 (16 bytes) name=clear + +void __thiscall cv::SparseMat::Hdr::clear(Hdr *this) + +{ + (*(code *)PTR_clear_005008d0)(); + return; +} + + +================================================================== + +### FUNC 0015f550 (16 bytes) name=operator() + +void __thiscall cv::SVD::operator()(SVD *this,_InputArray *param_1,int param_2) + +{ + (*(code *)PTR_operator___005008d8)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015f560 (16 bytes) name=lrint + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long lrint(double __x) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_lrint_005008e0)(); + return lVar1; +} + + +================================================================== + +### FUNC 0015f570 (16 bytes) name=~CFunctions + +void __thiscall CFunctions::~CFunctions(CFunctions *this) + +{ + (*(code *)PTR__CFunctions_005008e8)(); + return; +} + + +================================================================== + +### FUNC 0015f580 (16 bytes) name=wmemcmp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int wmemcmp(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_wmemcmp_005008f0)((int)__s1); + return iVar1; +} + + +================================================================== + +### FUNC 0015f590 (16 bytes) name=FixTemperature + +void CMagDevice::FixTemperature(int param_1,float param_2,uint param_3,uint param_4) + +{ + (*(code *)PTR_FixTemperature_005008f8)(param_1,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015f5a0 (16 bytes) name=MAG_SetStorageDir + +void MAG_SetStorageDir(void) + +{ + (*(code *)PTR_MAG_SetStorageDir_00500900)(); + return; +} + + +================================================================== + +### FUNC 0015f5b0 (16 bytes) name=countNonZero + +void cv::countNonZero(_InputArray *param_1) + +{ + (*(code *)PTR_countNonZero_00500908)(); + return; +} + + +================================================================== + +### FUNC 0015f5c0 (16 bytes) name=operator++ + +void __thiscall cv::FileNodeIterator::operator++(FileNodeIterator *this) + +{ + (*(code *)PTR_operator___00500910)(); + return; +} + + +================================================================== + +### FUNC 0015f5d0 (16 bytes) name=cvUnregisterType + +void cvUnregisterType(void) + +{ + (*(code *)PTR_cvUnregisterType_00500918)(); + return; +} + + +================================================================== + +### FUNC 0015f5e0 (16 bytes) name=fixedSize + +void __thiscall cv::_OutputArray::fixedSize(_OutputArray *this) + +{ + (*(code *)PTR_fixedSize_00500920)(); + return; +} + + +================================================================== + +### FUNC 0015f5f0 (16 bytes) name=UseMask + +void __thiscall CFunctions::UseMask(CFunctions *this,int param_1) + +{ + (*(code *)PTR_UseMask_00500928)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015f600 (16 bytes) name=reshape + +void cv::cuda::GpuMat::reshape(int param_1,int param_2) + +{ + (*(code *)PTR_reshape_00500930)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015f610 (16 bytes) name=getDDT + +void __thiscall MDTHelper::getDDT(MDTHelper *this,uchar **param_1) + +{ + (*(code *)PTR_getDDT_00500938)(); + return; +} + + +================================================================== + +### FUNC 0015f620 (16 bytes) name=SetFixPara + +void __thiscall CMagDevice::SetFixPara(CMagDevice *this,struct_FixPara *param_1) + +{ + (*(code *)PTR_SetFixPara_00500940)(); + return; +} + + +================================================================== + +### FUNC 0015f630 (16 bytes) name=Split + +void MStream::Split(char param_1) + +{ + (*(code *)PTR_Split_00500948)(param_1); + return; +} + + +================================================================== + +### FUNC 0015f640 (16 bytes) name=copyToSparseMat + +void __thiscall CvSparseMat::copyToSparseMat(CvSparseMat *this,SparseMat *param_1) + +{ + (*(code *)PTR_copyToSparseMat_00500950)(); + return; +} + + +================================================================== + +### FUNC 0015f650 (16 bytes) name=LinkCamera + +void CMagDevice::LinkCamera(uint param_1) + +{ + (*(code *)PTR_LinkCamera_00500958)(param_1); + return; +} + + +================================================================== + +### FUNC 0015f660 (16 bytes) name=resetVertexArray + +void __thiscall cv::ogl::Arrays::resetVertexArray(Arrays *this) + +{ + (*(code *)PTR_resetVertexArray_00500960)(); + return; +} + + +================================================================== + +### FUNC 0015f670 (16 bytes) name=_Unwind_Find_FDE + +void _Unwind_Find_FDE(void) + +{ + (*(code *)PTR__Unwind_Find_FDE_00500968)(); + return; +} + + +================================================================== + +### FUNC 0015f680 (16 bytes) name=drawContours + +void cv::drawContours(void) + +{ + (*(code *)PTR_drawContours_00500970)(); + return; +} + + +================================================================== + +### FUNC 0015f690 (16 bytes) name=compute + +void cv::SVD::compute(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,int param_5) + +{ + (*(code *)PTR_compute_00500978)(); + return; +} + + +================================================================== + +### FUNC 0015f6a0 (16 bytes) name=borderInterpolate + +void cv::borderInterpolate(int param_1,int param_2,int param_3) + +{ + (*(code *)PTR_borderInterpolate_00500980)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015f6b0 (16 bytes) name=LoadCalibrationTable + +void __thiscall CFunctions::LoadCalibrationTable(CFunctions *this,char *param_1) + +{ + (*(code *)PTR_LoadCalibrationTable_00500988)(); + return; +} + + +================================================================== + +### FUNC 0015f6c0 (16 bytes) name=setFilterPara + +void __thiscall ImageProc::setFilterPara(ImageProc *this,FilterPara *param_1) + +{ + (*(code *)PTR_setFilterPara_00500990)(); + return; +} + + +================================================================== + +### FUNC 0015f6d0 (16 bytes) name=syscall + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long syscall(long __sysno,...) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_syscall_00500998)(); + return lVar1; +} + + +================================================================== + +### FUNC 0015f6e0 (16 bytes) name=memset + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memset(void *__s,int __c,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memset_005009a0)(__s,__c); + return pvVar1; +} + + +================================================================== + +### FUNC 0015f6f0 (16 bytes) name=MAG_GetRgnTemperatureInfo + +void MAG_GetRgnTemperatureInfo(void) + +{ + (*(code *)PTR_MAG_GetRgnTemperatureInfo_005009a8)(); + return; +} + + +================================================================== + +### FUNC 0015f700 (16 bytes) name=pthread_mutex_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_init(pthread_mutex_t *__mutex,pthread_mutexattr_t *__mutexattr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_init_005009b0)((int)__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 0015f710 (16 bytes) name=fdopen + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +FILE * fdopen(int __fd,char *__modes) + +{ + FILE *pFVar1; + + pFVar1 = (FILE *)(*(code *)PTR_fdopen_005009b8)(__fd); + return pFVar1; +} + + +================================================================== + +### FUNC 0015f720 (16 bytes) name=setIdentity + +void cv::setIdentity(_InputOutputArray *param_1,Scalar_ *param_2) + +{ + (*(code *)PTR_setIdentity_005009c0)(); + return; +} + + +================================================================== + +### FUNC 0015f730 (16 bytes) name=divide + +void __thiscall cv::MatOp::divide(MatOp *this,double param_1,MatExpr *param_2,MatExpr *param_3) + +{ + (*(code *)PTR_divide_005009c8)(); + return; +} + + +================================================================== + +### FUNC 0015f740 (16 bytes) name=__register_frame_info_table + +void __register_frame_info_table(void) + +{ + (*(code *)PTR___register_frame_info_table_005009d0)(); + return; +} + + +================================================================== + +### FUNC 0015f750 (16 bytes) name=cvGetSeqReaderPos + +void cvGetSeqReaderPos(void) + +{ + (*(code *)PTR_cvGetSeqReaderPos_005009d8)(); + return; +} + + +================================================================== + +### FUNC 0015f760 (16 bytes) name=usbi_log_v + +void usbi_log_v(void) + +{ + (*(code *)PTR_usbi_log_v_005009e0)(); + return; +} + + +================================================================== + +### FUNC 0015f770 (16 bytes) name=dlopen + +void dlopen(void) + +{ + (*(code *)PTR_dlopen_005009e8)(); + return; +} + + +================================================================== + +### FUNC 0015f780 (16 bytes) name=getStructuringElement + +void __thiscall cv::getStructuringElement(void) + +{ + (*(code *)PTR_getStructuringElement_005009f0)(); + return; +} + + +================================================================== + +### FUNC 0015f790 (16 bytes) name=merge + +void cv::merge(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_merge_005009f8)(); + return; +} + + +================================================================== + +### FUNC 0015f7a0 (16 bytes) name=solvePoly + +void cv::solvePoly(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_solvePoly_00500a00)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015f7b0 (16 bytes) name=pthread_cond_signal + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_signal(pthread_cond_t *__cond) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_signal_00500a08)((int)__cond); + return iVar1; +} + + +================================================================== + +### FUNC 0015f7c0 (16 bytes) name=MAG_GetOutputColorBardata + +void MAG_GetOutputColorBardata(void) + +{ + (*(code *)PTR_MAG_GetOutputColorBardata_00500a10)(); + return; +} + + +================================================================== + +### FUNC 0015f7d0 (16 bytes) name=name + +void cv::ocl::Device::name(void) + +{ + (*(code *)PTR_name_00500a18)(); + return; +} + + +================================================================== + +### FUNC 0015f7e0 (16 bytes) name=operator= + +void __thiscall cv::ocl::Device::operator=(Device *this,Device *param_1) + +{ + (*(code *)PTR_operator__00500a20)(); + return; +} + + +================================================================== + +### FUNC 0015f7f0 (16 bytes) name=MAG_GetTemperatureData + +void MAG_GetTemperatureData(void) + +{ + (*(code *)PTR_MAG_GetTemperatureData_00500a28)(); + return; +} + + +================================================================== + +### FUNC 0015f800 (16 bytes) name=cvWriteString + +void cvWriteString(void) + +{ + (*(code *)PTR_cvWriteString_00500a30)(); + return; +} + + +================================================================== + +### FUNC 0015f810 (16 bytes) name=compare + +void cv::compare(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4) + +{ + (*(code *)PTR_compare_00500a38)(); + return; +} + + +================================================================== + +### FUNC 0015f820 (16 bytes) name=write + +void cv::write(FileStorage *param_1,String *param_2,Mat *param_3) + +{ + (*(code *)PTR_write_00500a40)(); + return; +} + + +================================================================== + +### FUNC 0015f830 (16 bytes) name=SearchSeparateLine + +void __thiscall CFunctions::SearchSeparateLine(CFunctions *this) + +{ + (*(code *)PTR_SearchSeparateLine_00500a48)(); + return; +} + + +================================================================== + +### FUNC 0015f840 (16 bytes) name=cvClearMemStorage + +void cvClearMemStorage(void) + +{ + (*(code *)PTR_cvClearMemStorage_00500a50)(); + return; +} + + +================================================================== + +### FUNC 0015f850 (16 bytes) name=GetYUV420 + +void GetYUV420(uchar *param_1,int param_2,int param_3,tagRGBQUAD *param_4,uint *param_5, + uint *param_6) + +{ + (*(code *)PTR_GetYUV420_00500a58)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015f860 (16 bytes) name=cvError + +void cvError(void) + +{ + (*(code *)PTR_cvError_00500a60)(); + return; +} + + +================================================================== + +### FUNC 0015f870 (16 bytes) name=__google_potentially_blocking_region_begin + +void __google_potentially_blocking_region_begin(void) + +{ + (*(code *)PTR___google_potentially_blocking_region_begin_00500a68)(); + return; +} + + +================================================================== + +### FUNC 0015f880 (16 bytes) name=gzrewind + +void gzrewind(void) + +{ + (*(code *)PTR_gzrewind_00500a70)(); + return; +} + + +================================================================== + +### FUNC 0015f890 (16 bytes) name=ptr + +void __thiscall cv::ocl::Context::ptr(Context *this) + +{ + (*(code *)PTR_ptr_00500a78)(); + return; +} + + +================================================================== + +### FUNC 0015f8a0 (16 bytes) name=batchDistance + +void cv::batchDistance(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4, + _OutputArray *param_5,int param_6,int param_7,_InputArray *param_8,int param_9 + ,bool param_10) + +{ + (*(code *)PTR_batchDistance_00500a80)(); + return; +} + + +================================================================== + +### FUNC 0015f8b0 (16 bytes) name=operator<< + +void __thiscall MStream::operator<<(MStream *this,char *param_1) + +{ + (*(code *)PTR_operator<<_00500a88)(); + return; +} + + +================================================================== + +### FUNC 0015f8c0 (16 bytes) name=canCreateAlias + +void cv::ocl::Image2D::canCreateAlias(UMat *param_1) + +{ + (*(code *)PTR_canCreateAlias_00500a90)(); + return; +} + + +================================================================== + +### FUNC 0015f8d0 (16 bytes) name=__deregister_frame_info + +void __deregister_frame_info(void) + +{ + (*(code *)PTR___deregister_frame_info_00500a98)(); + return; +} + + +================================================================== + +### FUNC 0015f8e0 (16 bytes) name=operator= + +void __thiscall cv::UMat::operator=(UMat *this,Scalar_ *param_1) + +{ + (*(code *)PTR_operator__00500aa0)(); + return; +} + + +================================================================== + +### FUNC 0015f8f0 (16 bytes) name=__lttf2 + +void __lttf2(void) + +{ + (*(code *)PTR___lttf2_00500aa8)(); + return; +} + + +================================================================== + +### FUNC 0015f900 (16 bytes) name=Calibration + +void __thiscall CFunctions::Calibration(CFunctions *this,ushort *param_1) + +{ + (*(code *)PTR_Calibration_00500ab0)(); + return; +} + + +================================================================== + +### FUNC 0015f910 (16 bytes) name=stat + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int stat(char *__file,stat *__buf) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_stat_00500ab8)((int)__file); + return iVar1; +} + + +================================================================== + +### FUNC 0015f920 (16 bytes) name=ReleaseMemory + +void __thiscall CFunctions::ReleaseMemory(CFunctions *this) + +{ + (*(code *)PTR_ReleaseMemory_00500ac0)(); + return; +} + + +================================================================== + +### FUNC 0015f930 (16 bytes) name=CFunctions + +void __thiscall CFunctions::CFunctions(CFunctions *this) + +{ + (*(code *)PTR_CFunctions_00500ac8)(); + return; +} + + +================================================================== + +### FUNC 0015f940 (16 bytes) name=integral + +void cv::integral(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_integral_00500ad0)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015f950 (16 bytes) name=MutexLock + +void __thiscall MutexLock::MutexLock(MutexLock *this) + +{ + (*(code *)PTR_MutexLock_00500ad8)(); + return; +} + + +================================================================== + +### FUNC 0015f960 (16 bytes) name=~Mutex + +void __thiscall cv::Mutex::~Mutex(Mutex *this) + +{ + (*(code *)PTR__Mutex_00500ae0)(); + return; +} + + +================================================================== + +### FUNC 0015f970 (16 bytes) name=pthread_getspecific + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * pthread_getspecific(pthread_key_t __key) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_pthread_getspecific_00500ae8)(__key); + return pvVar1; +} + + +================================================================== + +### FUNC 0015f980 (16 bytes) name=LineIterator + +void __thiscall cv::LineIterator::LineIterator(void) + +{ + (*(code *)PTR_LineIterator_00500af0)(); + return; +} + + +================================================================== + +### FUNC 0015f990 (16 bytes) name=wmemchr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemchr(wchar_t *__s,wchar_t __c,size_t __n) + +{ + wchar_t *pwVar1; + + pwVar1 = (wchar_t *)(*(code *)PTR_wmemchr_00500af8)(__s,__c); + return pwVar1; +} + + +================================================================== + +### FUNC 0015f9a0 (16 bytes) name=libusb_set_configuration + +void libusb_set_configuration(void) + +{ + (*(code *)PTR_libusb_set_configuration_00500b00)(); + return; +} + + +================================================================== + +### FUNC 0015f9b0 (16 bytes) name=error + +void cv::error(int param_1,String *param_2,char *param_3,char *param_4,int param_5) + +{ + (*(code *)PTR_error_00500b08)(param_1); + return; +} + + +================================================================== + +### FUNC 0015f9c0 (16 bytes) name=getThreadNum + +void cv::getThreadNum(void) + +{ + (*(code *)PTR_getThreadNum_00500b10)(); + return; +} + + +================================================================== + +### FUNC 0015f9d0 (16 bytes) name=cvSetSeqBlockSize + +void cvSetSeqBlockSize(void) + +{ + (*(code *)PTR_cvSetSeqBlockSize_00500b18)(); + return; +} + + +================================================================== + +### FUNC 0015f9e0 (16 bytes) name=__register_frame_info + +void __register_frame_info(void) + +{ + (*(code *)PTR___register_frame_info_00500b20)(); + return; +} + + +================================================================== + +### FUNC 0015f9f0 (16 bytes) name=divide + +void cv::divide(double param_1,_InputArray *param_2,_OutputArray *param_3,int param_4) + +{ + (*(code *)PTR_divide_00500b28)(param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015fa00 (16 bytes) name=bitwise_or + +void cv::bitwise_or(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + (*(code *)PTR_bitwise_or_00500b30)(); + return; +} + + +================================================================== + +### FUNC 0015fa10 (16 bytes) name=ReleaseMemory + +void __thiscall CVideoFunctions::ReleaseMemory(CVideoFunctions *this) + +{ + (*(code *)PTR_ReleaseMemory_00500b38)(); + return; +} + + +================================================================== + +### FUNC 0015fa20 (16 bytes) name=exception_ptr + +void __thiscall std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this) + +{ + (*(code *)PTR_exception_ptr_00500b40)(); + return; +} + + +================================================================== + +### FUNC 0015fa30 (16 bytes) name=cvRegisterType + +void cvRegisterType(void) + +{ + (*(code *)PTR_cvRegisterType_00500b48)(); + return; +} + + +================================================================== + +### FUNC 0015fa40 (16 bytes) name=channels + +void __thiscall cv::_InputArray::channels(_InputArray *this,int param_1) + +{ + (*(code *)PTR_channels_00500b50)(this,param_1); + return; +} + + +================================================================== + +### FUNC 0015fa50 (16 bytes) name=split + +void cv::split(Mat *param_1,Mat *param_2) + +{ + (*(code *)PTR_split_00500b58)(); + return; +} + + +================================================================== + +### FUNC 0015fa60 (16 bytes) name=~bad_array_new_length + +void __thiscall std::bad_array_new_length::~bad_array_new_length(bad_array_new_length *this) + +{ + (*(code *)PTR__bad_array_new_length_00500b60)(); + return; +} + + +================================================================== + +### FUNC 0015fa70 (16 bytes) name=MAG_Pause + +void MAG_Pause(void) + +{ + (*(code *)PTR_MAG_Pause_00500b68)(); + return; +} + + +================================================================== + +### FUNC 0015fa80 (16 bytes) name=cvPtr1D + +void cvPtr1D(void) + +{ + (*(code *)PTR_cvPtr1D_00500b70)(); + return; +} + + +================================================================== + +### FUNC 0015fa90 (16 bytes) name=acos + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double acos(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_acos_00500b78)(); + return dVar1; +} + + +================================================================== + +### FUNC 0015faa0 (16 bytes) name=cvCreateSparseMat + +void cvCreateSparseMat(SparseMat *param_1) + +{ + (*(code *)PTR_cvCreateSparseMat_00500b80)(); + return; +} + + +================================================================== + +### FUNC 0015fab0 (16 bytes) name=wait + +void __thiscall Condition::wait(Condition *this) + +{ + (*(code *)PTR_wait_00500b88)(); + return; +} + + +================================================================== + +### FUNC 0015fac0 (16 bytes) name=usbi_handle_disconnect + +void usbi_handle_disconnect(void) + +{ + (*(code *)PTR_usbi_handle_disconnect_00500b90)(); + return; +} + + +================================================================== + +### FUNC 0015fad0 (16 bytes) name=cvStartReadChainPoints + +void cvStartReadChainPoints(void) + +{ + (*(code *)PTR_cvStartReadChainPoints_00500b98)(); + return; +} + + +================================================================== + +### FUNC 0015fae0 (16 bytes) name=PushFrameAve + +void __thiscall CSmoother::PushFrameAve(CSmoother *this,ushort *param_1,uint param_2) + +{ + (*(code *)PTR_PushFrameAve_00500ba0)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015faf0 (16 bytes) name=__cxa_begin_catch + +void __cxa_begin_catch(void) + +{ + (*(code *)PTR___cxa_begin_catch_00500ba8)(); + return; +} + + +================================================================== + +### FUNC 0015fb00 (16 bytes) name=randShuffle + +void cv::randShuffle(_InputOutputArray *param_1,double param_2,RNG *param_3) + +{ + (*(code *)PTR_randShuffle_00500bb0)(); + return; +} + + +================================================================== + +### FUNC 0015fb10 (16 bytes) name=OFStream + +void __thiscall OFStream::OFStream(OFStream *this,char *param_1,bool param_2) + +{ + (*(code *)PTR_OFStream_00500bb8)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015fb20 (16 bytes) name=getStdAllocator + +void cv::UMat::getStdAllocator(void) + +{ + (*(code *)PTR_getStdAllocator_00500bc0)(); + return; +} + + +================================================================== + +### FUNC 0015fb30 (16 bytes) name=cvInitImageHeader + +void cvInitImageHeader(void) + +{ + (*(code *)PTR_cvInitImageHeader_00500bc8)(); + return; +} + + +================================================================== + +### FUNC 0015fb40 (16 bytes) name=DecodeCmd + +void __thiscall CNetComm::DecodeCmd(void) + +{ + (*(code *)PTR_DecodeCmd_00500bd0)(); + return; +} + + +================================================================== + +### FUNC 0015fb50 (16 bytes) name=__cxa_rethrow + +void __cxa_rethrow(void) + +{ + (*(code *)PTR___cxa_rethrow_00500bd8)(); + return; +} + + +================================================================== + +### FUNC 0015fb60 (16 bytes) name=ioctl + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int ioctl(int __fd,ulong __request,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_ioctl_00500be0)(__fd); + return iVar1; +} + + +================================================================== + +### FUNC 0015fb70 (16 bytes) name=eigen + +void cv::eigen(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_eigen_00500be8)(); + return; +} + + +================================================================== + +### FUNC 0015fb80 (16 bytes) name=GetRgnTemperatureInfo + +void CMagDevice::GetRgnTemperatureInfo(uint *param_1,uint param_2,int *param_3) + +{ + (*(code *)PTR_GetRgnTemperatureInfo_00500bf0)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015fb90 (16 bytes) name=boundingRect + +void __thiscall cv::boundingRect(cv *this,_InputArray *param_1) + +{ + (*(code *)PTR_boundingRect_00500bf8)(); + return; +} + + +================================================================== + +### FUNC 0015fba0 (16 bytes) name=~CMagDevice + +void __thiscall CMagDevice::~CMagDevice(CMagDevice *this) + +{ + (*(code *)PTR__CMagDevice_00500c00)(); + return; +} + + +================================================================== + +### FUNC 0015fbb0 (16 bytes) name=MAG_GetTemperatureProbe + +void MAG_GetTemperatureProbe(void) + +{ + (*(code *)PTR_MAG_GetTemperatureProbe_00500c08)(); + return; +} + + +================================================================== + +### FUNC 0015fbc0 (16 bytes) name=_M_insert_aux + +void __thiscall std::vector>::_M_insert_aux(void) + +{ + (*(code *)PTR__M_insert_aux_00500c10)(); + return; +} + + +================================================================== + +### FUNC 0015fbd0 (16 bytes) name=abort + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void abort(void) + +{ + (*(code *)PTR_abort_00500c18)(); + return; +} + + +================================================================== + +### FUNC 0015fbe0 (16 bytes) name=WriteStructContext + +void __thiscall +cv::internal::WriteStructContext::WriteStructContext + (WriteStructContext *this,FileStorage *param_1,String *param_2,int param_3,String *param_4 + ) + +{ + (*(code *)PTR_WriteStructContext_00500c20)(); + return; +} + + +================================================================== + +### FUNC 0015fbf0 (16 bytes) name=__cxa_throw + +void __cxa_throw(void) + +{ + (*(code *)PTR___cxa_throw_00500c28)(); + return; +} + + +================================================================== + +### FUNC 0015fc00 (16 bytes) name=DisLink + +void __thiscall CNetComm::DisLink(CNetComm *this,int param_1,int param_2) + +{ + (*(code *)PTR_DisLink_00500c30)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015fc10 (16 bytes) name=solve + +void cv::solve(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4) + +{ + (*(code *)PTR_solve_00500c38)(); + return; +} + + +================================================================== + +### FUNC 0015fc20 (16 bytes) name=checkHardwareSupport + +void cv::checkHardwareSupport(int param_1) + +{ + (*(code *)PTR_checkHardwareSupport_00500c40)(param_1); + return; +} + + +================================================================== + +### FUNC 0015fc30 (16 bytes) name=type + +void __thiscall cv::FileNode::type(FileNode *this) + +{ + (*(code *)PTR_type_00500c48)(); + return; +} + + +================================================================== + +### FUNC 0015fc40 (16 bytes) name=lock + +void __thiscall cv::UMatData::lock(UMatData *this) + +{ + (*(code *)PTR_lock_00500c50)(); + return; +} + + +================================================================== + +### FUNC 0015fc50 (16 bytes) name=operator() + +void __thiscall +cv::DefaultDeleter::operator() + (DefaultDeleter *this,CvMemStorage *param_1) + +{ + (*(code *)PTR_operator___00500c58)(); + return; +} + + +================================================================== + +### FUNC 0015fc60 (16 bytes) name=__cxa_atexit + +void __cxa_atexit(void) + +{ + (*(code *)PTR___cxa_atexit_00500c60)(); + return; +} + + +================================================================== + +### FUNC 0015fc70 (16 bytes) name=merge + +void cv::merge(Mat *param_1,ulong param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_merge_00500c68)(); + return; +} + + +================================================================== + +### FUNC 0015fc80 (16 bytes) name=Reset + +void __thiscall CSmoother::Reset(CSmoother *this,uint param_1,uint param_2,int param_3,uint param_4) + +{ + (*(code *)PTR_Reset_00500c70)(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015fc90 (16 bytes) name=usbi_disconnect_device + +void usbi_disconnect_device(void) + +{ + (*(code *)PTR_usbi_disconnect_device_00500c78)(); + return; +} + + +================================================================== + +### FUNC 0015fca0 (16 bytes) name=__register_frame_info_bases + +void __register_frame_info_bases(void) + +{ + (*(code *)PTR___register_frame_info_bases_00500c80)(); + return; +} + + +================================================================== + +### FUNC 0015fcb0 (16 bytes) name=theRNG + +void cv::theRNG(void) + +{ + (*(code *)PTR_theRNG_00500c88)(); + return; +} + + +================================================================== + +### FUNC 0015fcc0 (16 bytes) name=copyTo + +void __thiscall cv::Mat::copyTo(Mat *this,_OutputArray *param_1,_InputArray *param_2) + +{ + (*(code *)PTR_copyTo_00500c90)(); + return; +} + + +================================================================== + +### FUNC 0015fcd0 (16 bytes) name=getDerivKernels + +void cv::getDerivKernels(_OutputArray *param_1,_OutputArray *param_2,int param_3,int param_4, + int param_5,bool param_6,int param_7) + +{ + (*(code *)PTR_getDerivKernels_00500c98)(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 0015fce0 (16 bytes) name=MAG_SaveBMP + +void MAG_SaveBMP(void) + +{ + (*(code *)PTR_MAG_SaveBMP_00500ca0)(); + return; +} + + +================================================================== + +### FUNC 0015fcf0 (16 bytes) name=read + +void cv::read(FileNode *param_1,Mat *param_2,Mat *param_3) + +{ + (*(code *)PTR_read_00500ca8)(); + return; +} + + +================================================================== + +### FUNC 0015fd00 (16 bytes) name=cvReshape + +void cvReshape(void) + +{ + (*(code *)PTR_cvReshape_00500cb0)(); + return; +} + + +================================================================== + +### FUNC 0015fd10 (16 bytes) name=formatMessage + +void __thiscall cv::Exception::formatMessage(Exception *this) + +{ + (*(code *)PTR_formatMessage_00500cb8)(); + return; +} + + +================================================================== + +### FUNC 0015fd20 (16 bytes) name=libusb_handle_events_timeout + +void libusb_handle_events_timeout(void) + +{ + (*(code *)PTR_libusb_handle_events_timeout_00500cc0)(); + return; +} + + +================================================================== + +### FUNC 0015fd30 (16 bytes) name=~__si_class_type_info + +void __thiscall __cxxabiv1::__si_class_type_info::~__si_class_type_info(__si_class_type_info *this) + +{ + (*(code *)PTR____si_class_type_info_00500cc8)(); + return; +} + + +================================================================== + +### FUNC 0015fd40 (16 bytes) name=redirectError + +void cv::redirectError(_func_int_int_char_ptr_char_ptr_char_ptr_int_void_ptr *param_1,void *param_2, + void **param_3) + +{ + (*(code *)PTR_redirectError_00500cd0)(); + return; +} + + +================================================================== + +### FUNC 0015fd50 (16 bytes) name=KernelArg + +void __thiscall +cv::ocl::KernelArg::KernelArg + (KernelArg *this,int param_1,UMat *param_2,int param_3,int param_4,void *param_5, + ulong param_6) + +{ + (*(code *)PTR_KernelArg_00500cd8)(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0015fd60 (16 bytes) name=atoi + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int atoi(char *__nptr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_atoi_00500ce0)((int)__nptr); + return iVar1; +} + + +================================================================== + +### FUNC 0015fd70 (16 bytes) name=SetInnertempUnit + +void __thiscall CFunctions::SetInnertempUnit(CFunctions *this,uint param_1,int param_2) + +{ + (*(code *)PTR_SetInnertempUnit_00500ce8)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015fd80 (16 bytes) name=preferredVectorWidthDouble + +void __thiscall cv::ocl::Device::preferredVectorWidthDouble(Device *this) + +{ + (*(code *)PTR_preferredVectorWidthDouble_00500cf0)(); + return; +} + + +================================================================== + +### FUNC 0015fd90 (16 bytes) name=_M_release + +void __thiscall std::__exception_ptr::exception_ptr::_M_release(exception_ptr *this) + +{ + (*(code *)PTR__M_release_00500cf8)(); + return; +} + + +================================================================== + +### FUNC 0015fda0 (16 bytes) name=hostUnifiedMemory + +void __thiscall cv::ocl::Device::hostUnifiedMemory(Device *this) + +{ + (*(code *)PTR_hostUnifiedMemory_00500d00)(); + return; +} + + +================================================================== + +### FUNC 0015fdb0 (16 bytes) name=kmeans + +void __thiscall cv::kmeans(void) + +{ + (*(code *)PTR_kmeans_00500d08)(); + return; +} + + +================================================================== + +### FUNC 0015fdc0 (16 bytes) name=LUT + +void cv::LUT(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_LUT_00500d10)(); + return; +} + + +================================================================== + +### FUNC 0015fdd0 (16 bytes) name=~CNetComm + +void __thiscall CNetComm::~CNetComm(CNetComm *this) + +{ + (*(code *)PTR__CNetComm_00500d18)(); + return; +} + + +================================================================== + +### FUNC 0015fde0 (16 bytes) name=project + +void __thiscall cv::PCA::project(PCA *this,_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_project_00500d20)(); + return; +} + + +================================================================== + +### FUNC 0015fdf0 (16 bytes) name=MAG_GetRemoteInfo + +void MAG_GetRemoteInfo(void) + +{ + (*(code *)PTR_MAG_GetRemoteInfo_00500d28)(); + return; +} + + +================================================================== + +### FUNC 0015fe00 (16 bytes) name=__terminate + +void __cxxabiv1::__terminate(_func_void *param_1) + +{ + (*(code *)PTR___terminate_00500d30)(); + return; +} + + +================================================================== + +### FUNC 0015fe10 (16 bytes) name=usbi_connect_device + +void usbi_connect_device(void) + +{ + (*(code *)PTR_usbi_connect_device_00500d38)(); + return; +} + + +================================================================== + +### FUNC 0015fe20 (16 bytes) name=trace + +void __thiscall cv::trace(cv *this,_InputArray *param_1) + +{ + (*(code *)PTR_trace_00500d40)(); + return; +} + + +================================================================== + +### FUNC 0015fe30 (16 bytes) name=LocalMap7x7 + +void __thiscall CFunctions::LocalMap7x7(CFunctions *this,int *param_1,ushort *param_2,uint param_3) + +{ + (*(code *)PTR_LocalMap7x7_00500d48)(); + return; +} + + +================================================================== + +### FUNC 0015fe40 (16 bytes) name=Restart + +void __thiscall CSmoother::Restart(CSmoother *this) + +{ + (*(code *)PTR_Restart_00500d50)(); + return; +} + + +================================================================== + +### FUNC 0015fe50 (16 bytes) name=predictOptimalVectorWidth + +void cv::ocl::predictOptimalVectorWidth(void) + +{ + (*(code *)PTR_predictOptimalVectorWidth_00500d58)(); + return; +} + + +================================================================== + +### FUNC 0015fe60 (16 bytes) name=fseek + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fseek(FILE *__stream,long __off,int __whence) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fseek_00500d60)((int)__stream,__off,__whence); + return iVar1; +} + + +================================================================== + +### FUNC 0015fe70 (16 bytes) name=MAG_EstimateUnderArmTempFromForeheadRect + +void MAG_EstimateUnderArmTempFromForeheadRect(void) + +{ + (*(code *)PTR_MAG_EstimateUnderArmTempFromForeheadRect_00500d68)(); + return; +} + + +================================================================== + +### FUNC 0015fe80 (16 bytes) name=raw8bitToMat + +void __thiscall +ImageProc::raw8bitToMat(ImageProc *this,uchar *param_1,int param_2,int param_3,Mat *param_4) + +{ + (*(code *)PTR_raw8bitToMat_00500d70)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015fe90 (16 bytes) name=dEnerge2dTemp + +void __thiscall CFunctions::dEnerge2dTemp(CFunctions *this,int param_1,int param_2) + +{ + (*(code *)PTR_dEnerge2dTemp_00500d78)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0015fea0 (16 bytes) name=usbi_hotplug_match + +void usbi_hotplug_match(void) + +{ + (*(code *)PTR_usbi_hotplug_match_00500d80)(); + return; +} + + +================================================================== + +### FUNC 0015feb0 (16 bytes) name=getNumThreads + +void cv::getNumThreads(void) + +{ + (*(code *)PTR_getNumThreads_00500d88)(); + return; +} + + +================================================================== + +### FUNC 0015fec0 (16 bytes) name=cubeRoot + +void cv::cubeRoot(float param_1) + +{ + (*(code *)PTR_cubeRoot_00500d90)(); + return; +} + + +================================================================== + +### FUNC 0015fed0 (16 bytes) name=Laplacian + +void cv::Laplacian(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,double param_5 + ,double param_6,int param_7) + +{ + (*(code *)PTR_Laplacian_00500d98)(param_1,param_2,param_3,param_4,param_7); + return; +} + + +================================================================== + +### FUNC 0015fee0 (16 bytes) name=_Unwind_Resume + +void _Unwind_Resume(void) + +{ + (*(code *)PTR__Unwind_Resume_00500da0)(); + return; +} + + +================================================================== + +### FUNC 0015fef0 (16 bytes) name=MAG_GetEXLevel + +void MAG_GetEXLevel(void) + +{ + (*(code *)PTR_MAG_GetEXLevel_00500da8)(); + return; +} + + +================================================================== + +### FUNC 0015ff00 (16 bytes) name=type + +void __thiscall cv::MatExpr::type(MatExpr *this) + +{ + (*(code *)PTR_type_00500db0)(); + return; +} + + +================================================================== + +### FUNC 0015ff10 (16 bytes) name=sqrtf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float sqrtf(float __x) + +{ + float fVar1; + + fVar1 = (float)(*(code *)PTR_sqrtf_00500db8)(); + return fVar1; +} + + +================================================================== + +### FUNC 0015ff20 (16 bytes) name=__cxa_current_exception_type + +void __cxa_current_exception_type(void) + +{ + (*(code *)PTR___cxa_current_exception_type_00500dc0)(); + return; +} + + +================================================================== + +### FUNC 0015ff30 (16 bytes) name=setvbuf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int setvbuf(FILE *__stream,char *__buf,int __modes,size_t __n) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_setvbuf_00500dc8)((int)__stream,__buf,__modes); + return iVar1; +} + + +================================================================== + +### FUNC 0015ff40 (16 bytes) name=GetLineTemperatureInfo3 + +void __thiscall +CFunctions::GetLineTemperatureInfo3 + (CFunctions *this,int *param_1,uint param_2,int *param_3,uint param_4,uint param_5, + uint param_6,uint param_7,int param_8) + +{ + (*(code *)PTR_GetLineTemperatureInfo3_00500dd0) + (this,param_1,param_2,param_3,param_4,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 0015ff50 (16 bytes) name=getDefault + +void cv::ocl::Queue::getDefault(void) + +{ + (*(code *)PTR_getDefault_00500dd8)(); + return; +} + + +================================================================== + +### FUNC 0015ff60 (16 bytes) name=~UMat + +void __thiscall cv::UMat::~UMat(UMat *this) + +{ + (*(code *)PTR__UMat_00500de0)(); + return; +} + + +================================================================== + +### FUNC 0015ff70 (16 bytes) name=libusb_get_device + +void libusb_get_device(void) + +{ + (*(code *)PTR_libusb_get_device_00500de8)(); + return; +} + + +================================================================== + +### FUNC 0015ff80 (16 bytes) name=resetNormalArray + +void cv::ogl::Arrays::resetNormalArray(void) + +{ + (*(code *)PTR_resetNormalArray_00500df0)(); + return; +} + + +================================================================== + +### FUNC 0015ff90 (16 bytes) name=read + +void cv::read(FileNode *param_1,int *param_2,int param_3) + +{ + (*(code *)PTR_read_00500df8)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0015ffa0 (16 bytes) name=~FileStorage + +void __thiscall cv::FileStorage::~FileStorage(FileStorage *this) + +{ + (*(code *)PTR__FileStorage_00500e00)(); + return; +} + + +================================================================== + +### FUNC 0015ffb0 (16 bytes) name=linux_device_disconnected + +void linux_device_disconnected(void) + +{ + (*(code *)PTR_linux_device_disconnected_00500e08)(); + return; +} + + +================================================================== + +### FUNC 0015ffc0 (16 bytes) name=cvInsertNodeIntoTree + +void cvInsertNodeIntoTree(void) + +{ + (*(code *)PTR_cvInsertNodeIntoTree_00500e10)(); + return; +} + + +================================================================== + +### FUNC 0015ffd0 (16 bytes) name=transpose + +void cv::transpose(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_transpose_00500e18)(); + return; +} + + +================================================================== + +### FUNC 0015ffe0 (16 bytes) name=RefreshCaliFileNeeded + +void __thiscall CNetComm::RefreshCaliFileNeeded(CNetComm *this) + +{ + (*(code *)PTR_RefreshCaliFileNeeded_00500e20)(); + return; +} + + +================================================================== + +### FUNC 0015fff0 (16 bytes) name=StartProcessImage + +void CMagDevice::StartProcessImage + (_func_void_uint_uint_uint_void_ptr *param_1,int param_2,int param_3,void *param_4) + +{ + (*(code *)PTR_StartProcessImage_00500e28)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160000 (16 bytes) name=operator-- + +void __thiscall cv::FileNodeIterator::operator--(FileNodeIterator *this) + +{ + (*(code *)PTR_operator___00500e30)(); + return; +} + + +================================================================== + +### FUNC 00160010 (16 bytes) name=__convert_to_v + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::__convert_to_v(char *param_1,double *param_2,_Ios_Iostate *param_3,int **param_4) + +{ + (*(code *)PTR___convert_to_v_00500e38)(); + return; +} + + +================================================================== + +### FUNC 00160020 (16 bytes) name=gzopen + +void gzopen(void) + +{ + (*(code *)PTR_gzopen_00500e40)(); + return; +} + + +================================================================== + +### FUNC 00160030 (16 bytes) name=libusb_exit + +void libusb_exit(void) + +{ + (*(code *)PTR_libusb_exit_00500e48)(); + return; +} + + +================================================================== + +### FUNC 00160040 (16 bytes) name=printf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int printf(char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_printf_00500e50)((int)__format); + return iVar1; +} + + +================================================================== + +### FUNC 00160050 (16 bytes) name=AndroidBitmap_unlockPixels + +void AndroidBitmap_unlockPixels(void) + +{ + (*(code *)PTR_AndroidBitmap_unlockPixels_00500e58)(); + return; +} + + +================================================================== + +### FUNC 00160060 (16 bytes) name=~__forced_unwind + +void __thiscall __cxxabiv1::__forced_unwind::~__forced_unwind(__forced_unwind *this) + +{ + (*(code *)PTR____forced_unwind_00500e60)(); + return; +} + + +================================================================== + +### FUNC 00160070 (16 bytes) name=_M_fill_insert + +void __thiscall std::vector>::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_00500e68)(); + return; +} + + +================================================================== + +### FUNC 00160080 (16 bytes) name=create + +void __thiscall +cv::_OutputArray::create + (_OutputArray *this,int param_1,int *param_2,int param_3,int param_4,bool param_5, + int param_6) + +{ + (*(code *)PTR_create_00500e70)(this,param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 00160090 (16 bytes) name=add + +void cv::add(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,_InputArray *param_4, + int param_5) + +{ + (*(code *)PTR_add_00500e78)(); + return; +} + + +================================================================== + +### FUNC 001600a0 (16 bytes) name=divide + +void cv::divide(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,double param_4, + int param_5) + +{ + (*(code *)PTR_divide_00500e80)(); + return; +} + + +================================================================== + +### FUNC 001600b0 (16 bytes) name=Mat + +void __thiscall cv::Mat::Mat(void) + +{ + (*(code *)PTR_Mat_00500e88)(); + return; +} + + +================================================================== + +### FUNC 001600c0 (16 bytes) name=fastFree + +void cv::fastFree(void *param_1) + +{ + (*(code *)PTR_fastFree_00500e90)(); + return; +} + + +================================================================== + +### FUNC 001600d0 (16 bytes) name=libusb_free_transfer + +void libusb_free_transfer(void) + +{ + (*(code *)PTR_libusb_free_transfer_00500e98)(); + return; +} + + +================================================================== + +### FUNC 001600e0 (16 bytes) name=useOpenCL + +void cv::ocl::useOpenCL(void) + +{ + (*(code *)PTR_useOpenCL_00500ea0)(); + return; +} + + +================================================================== + +### FUNC 001600f0 (16 bytes) name=lpos + +void __thiscall cv::MatConstIterator::lpos(MatConstIterator *this) + +{ + (*(code *)PTR_lpos_00500ea8)(); + return; +} + + +================================================================== + +### FUNC 00160100 (16 bytes) name=IsProcessingImage + +void __thiscall CMagDevice::IsProcessingImage(CMagDevice *this) + +{ + (*(code *)PTR_IsProcessingImage_00500eb0)(); + return; +} + + +================================================================== + +### FUNC 00160110 (16 bytes) name=MAG_StartProcessImage + +void MAG_StartProcessImage(void) + +{ + (*(code *)PTR_MAG_StartProcessImage_00500eb8)(); + return; +} + + +================================================================== + +### FUNC 00160120 (16 bytes) name=memcmp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int memcmp(void *__s1,void *__s2,size_t __n) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_memcmp_00500ec0)((int)__s1); + return iVar1; +} + + +================================================================== + +### FUNC 00160130 (16 bytes) name=write + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t write(int __fd,void *__buf,size_t __n) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_write_00500ec8)(__fd); + return sVar1; +} + + +================================================================== + +### FUNC 00160140 (16 bytes) name=libusb_init + +void libusb_init(void) + +{ + (*(code *)PTR_libusb_init_00500ed0)(); + return; +} + + +================================================================== + +### FUNC 00160150 (16 bytes) name=MAG_Initialize + +void MAG_Initialize(void) + +{ + (*(code *)PTR_MAG_Initialize_00500ed8)(); + return; +} + + +================================================================== + +### FUNC 00160160 (16 bytes) name=cvReleaseMat + +void cvReleaseMat(void) + +{ + (*(code *)PTR_cvReleaseMat_00500ee0)(); + return; +} + + +================================================================== + +### FUNC 00160170 (16 bytes) name=MAG_GetFrameStatisticalData + +void MAG_GetFrameStatisticalData(void) + +{ + (*(code *)PTR_MAG_GetFrameStatisticalData_00500ee8)(); + return; +} + + +================================================================== + +### FUNC 00160180 (16 bytes) name=getLabel + +void __thiscall MDTHelper::getLabel(MDTHelper *this,ROI **param_1) + +{ + (*(code *)PTR_getLabel_00500ef0)(); + return; +} + + +================================================================== + +### FUNC 00160190 (16 bytes) name=cvRead + +void cvRead(void) + +{ + (*(code *)PTR_cvRead_00500ef8)(); + return; +} + + +================================================================== + +### FUNC 001601a0 (16 bytes) name=libusb_get_device_descriptor + +void libusb_get_device_descriptor(void) + +{ + (*(code *)PTR_libusb_get_device_descriptor_00500f00)(); + return; +} + + +================================================================== + +### FUNC 001601b0 (16 bytes) name=typeToStr + +void cv::ocl::typeToStr(int param_1) + +{ + (*(code *)PTR_typeToStr_00500f08)(param_1); + return; +} + + +================================================================== + +### FUNC 001601c0 (16 bytes) name=__errno + +void __errno(void) + +{ + (*(code *)PTR___errno_00500f10)(); + return; +} + + +================================================================== + +### FUNC 001601d0 (16 bytes) name=SearchInnerGray + +void __thiscall CFunctions::SearchInnerGray(CFunctions *this,int param_1) + +{ + (*(code *)PTR_SearchInnerGray_00500f18)(this,param_1); + return; +} + + +================================================================== + +### FUNC 001601e0 (16 bytes) name=cvClearSeq + +void cvClearSeq(void) + +{ + (*(code *)PTR_cvClearSeq_00500f20)(); + return; +} + + +================================================================== + +### FUNC 001601f0 (16 bytes) name=~TLSDataContainer + +void __thiscall cv::TLSDataContainer::~TLSDataContainer(TLSDataContainer *this) + +{ + (*(code *)PTR__TLSDataContainer_00500f28)(); + return; +} + + +================================================================== + +### FUNC 00160200 (16 bytes) name=~exception + +void __thiscall std::exception::~exception(exception *this) + +{ + (*(code *)PTR__exception_00500f30)(); + return; +} + + +================================================================== + +### FUNC 00160210 (16 bytes) name=init + +void __thiscall +cv::NAryMatIterator::init + (NAryMatIterator *this,Mat **param_1,Mat *param_2,uchar **param_3,int param_4) + +{ + (*(code *)PTR_init_00500f38)(); + return; +} + + +================================================================== + +### FUNC 00160220 (16 bytes) name=cvStartFindContours + +void cvStartFindContours(void) + +{ + (*(code *)PTR_cvStartFindContours_00500f40)(); + return; +} + + +================================================================== + +### FUNC 00160230 (16 bytes) name=GetCurrentCameraInnerTemperature + +void __thiscall CMagDevice::GetCurrentCameraInnerTemperature(CMagDevice *this,uint param_1) + +{ + (*(code *)PTR_GetCurrentCameraInnerTemperature_00500f48)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160240 (16 bytes) name=cvReleaseData + +void cvReleaseData(void) + +{ + (*(code *)PTR_cvReleaseData_00500f50)(); + return; +} + + +================================================================== + +### FUNC 00160250 (16 bytes) name=_M_erase + +void __thiscall +std:: +_Rb_tree,std::_Select1st>,std::less,std::allocator>> +::_M_erase(_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *this,_Rb_tree_node *param_1) + +{ + (*(code *)PTR__M_erase_00500f58)(); + return; +} + + +================================================================== + +### FUNC 00160260 (16 bytes) name=preferredVectorWidthInt + +void __thiscall cv::ocl::Device::preferredVectorWidthInt(Device *this) + +{ + (*(code *)PTR_preferredVectorWidthInt_00500f60)(); + return; +} + + +================================================================== + +### FUNC 00160270 (16 bytes) name=device + +void __thiscall cv::ocl::Context::device(Context *this,ulong param_1) + +{ + (*(code *)PTR_device_00500f68)(); + return; +} + + +================================================================== + +### FUNC 00160280 (16 bytes) name=tolower + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int tolower(int __c) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_tolower_00500f70)(__c); + return iVar1; +} + + +================================================================== + +### FUNC 00160290 (16 bytes) name=preferredVectorWidthChar + +void __thiscall cv::ocl::Device::preferredVectorWidthChar(Device *this) + +{ + (*(code *)PTR_preferredVectorWidthChar_00500f78)(); + return; +} + + +================================================================== + +### FUNC 001602a0 (16 bytes) name=calcCovarMatrix + +void cv::calcCovarMatrix(_InputArray *param_1,_OutputArray *param_2,_InputOutputArray *param_3, + int param_4,int param_5) + +{ + (*(code *)PTR_calcCovarMatrix_00500f80)(); + return; +} + + +================================================================== + +### FUNC 001602b0 (16 bytes) name=libusb_free_device_list + +void libusb_free_device_list(void) + +{ + (*(code *)PTR_libusb_free_device_list_00500f88)(); + return; +} + + +================================================================== + +### FUNC 001602c0 (16 bytes) name=cvGetErrStatus + +void cvGetErrStatus(void) + +{ + (*(code *)PTR_cvGetErrStatus_00500f90)(); + return; +} + + +================================================================== + +### FUNC 001602d0 (16 bytes) name=norm + +void cv::norm(SparseMat *param_1,int param_2) + +{ + (*(code *)PTR_norm_00500f98)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 001602e0 (16 bytes) name=StartReceiveImg + +void __thiscall CNetComm::StartReceiveImg(void) + +{ + (*(code *)PTR_StartReceiveImg_00500fa0)(); + return; +} + + +================================================================== + +### FUNC 001602f0 (16 bytes) name=convertTo + +void __thiscall +cv::SparseMat::convertTo(SparseMat *this,SparseMat *param_1,int param_2,double param_3) + +{ + (*(code *)PTR_convertTo_00500fa8)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00160300 (16 bytes) name=MAG_ProbeBufferedDDT + +void MAG_ProbeBufferedDDT(void) + +{ + (*(code *)PTR_MAG_ProbeBufferedDDT_00500fb0)(); + return; +} + + +================================================================== + +### FUNC 00160310 (16 bytes) name=GetEllipseTemperatureInfo + +void CMagDevice::GetEllipseTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,int *param_5) + +{ + (*(code *)PTR_GetEllipseTemperatureInfo_00500fb8)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00160320 (16 bytes) name=pthread_mutexattr_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_init(pthread_mutexattr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutexattr_init_00500fc0)((int)__attr); + return iVar1; +} + + +================================================================== + +### FUNC 00160330 (16 bytes) name=seed + +void __thiscall cv::RNG_MT19937::seed(RNG_MT19937 *this,uint param_1) + +{ + (*(code *)PTR_seed_00500fc8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160340 (16 bytes) name=libusb_claim_interface + +void libusb_claim_interface(void) + +{ + (*(code *)PTR_libusb_claim_interface_00500fd0)(); + return; +} + + +================================================================== + +### FUNC 00160350 (16 bytes) name=wcrtomb + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcrtomb(char *__s,wchar_t __wc,mbstate_t *__ps) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_wcrtomb_00500fd8)(__s,__wc); + return sVar1; +} + + +================================================================== + +### FUNC 00160360 (16 bytes) name=getHostMemRef + +void __thiscall cv::_OutputArray::getHostMemRef(_OutputArray *this) + +{ + (*(code *)PTR_getHostMemRef_00500fe0)(); + return; +} + + +================================================================== + +### FUNC 00160370 (16 bytes) name=SetColorPalette + +void __thiscall CFunctions::SetColorPalette(void) + +{ + (*(code *)PTR_SetColorPalette_00500fe8)(); + return; +} + + +================================================================== + +### FUNC 00160380 (16 bytes) name=create + +void __thiscall cv::SparseMat::create(SparseMat *this,int param_1,int *param_2,int param_3) + +{ + (*(code *)PTR_create_00500ff0)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160390 (16 bytes) name=fastAtan2 + +void cv::fastAtan2(float param_1,float param_2) + +{ + (*(code *)PTR_fastAtan2_00500ff8)(); + return; +} + + +================================================================== + +### FUNC 001603a0 (16 bytes) name=ungetc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int ungetc(int __c,FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_ungetc_00501000)(__c); + return iVar1; +} + + +================================================================== + +### FUNC 001603b0 (16 bytes) name=sqrt + +void cv::sqrt(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_sqrt_00501008)(); + return; +} + + +================================================================== + +### FUNC 001603c0 (16 bytes) name=cvInitMatNDHeader + +void cvInitMatNDHeader(void) + +{ + (*(code *)PTR_cvInitMatNDHeader_00501010)(); + return; +} + + +================================================================== + +### FUNC 001603d0 (16 bytes) name=cvCreateSparseMat + +void cvCreateSparseMat(void) + +{ + (*(code *)PTR_cvCreateSparseMat_00501018)(); + return; +} + + +================================================================== + +### FUNC 001603e0 (16 bytes) name=usbi_hotplug_notification + +void usbi_hotplug_notification(void) + +{ + (*(code *)PTR_usbi_hotplug_notification_00501020)(); + return; +} + + +================================================================== + +### FUNC 001603f0 (16 bytes) name=create + +void cv::cuda::GpuMat::create(int param_1,int param_2,int param_3) + +{ + (*(code *)PTR_create_00501028)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160400 (16 bytes) name=Available + +void __thiscall MStream::Available(MStream *this) + +{ + (*(code *)PTR_Available_00501030)(); + return; +} + + +================================================================== + +### FUNC 00160410 (16 bytes) name=CSmoother + +void __thiscall CSmoother::CSmoother(CSmoother *this) + +{ + (*(code *)PTR_CSmoother_00501038)(); + return; +} + + +================================================================== + +### FUNC 00160420 (16 bytes) name=~recursive_init_error + +void __thiscall __gnu_cxx::recursive_init_error::~recursive_init_error(recursive_init_error *this) + +{ + (*(code *)PTR__recursive_init_error_00501040)(); + return; +} + + +================================================================== + +### FUNC 00160430 (16 bytes) name=pthread_mutex_lock + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_lock(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_lock_00501048)((int)__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 00160440 (16 bytes) name=__do_upcast + +void __thiscall +__cxxabiv1::__class_type_info::__do_upcast + (__class_type_info *this,__class_type_info *param_1,void *param_2,__upcast_result *param_3 + ) + +{ + (*(code *)PTR___do_upcast_00501050)(); + return; +} + + +================================================================== + +### FUNC 00160450 (16 bytes) name=step + +void __thiscall cv::_InputArray::step(_InputArray *this,int param_1) + +{ + (*(code *)PTR_step_00501058)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160460 (16 bytes) name=scaleAdd + +void cv::scaleAdd(_InputArray *param_1,double param_2,_InputArray *param_3,_OutputArray *param_4) + +{ + (*(code *)PTR_scaleAdd_00501060)(); + return; +} + + +================================================================== + +### FUNC 00160470 (16 bytes) name=CvType + +void __thiscall +CvType::CvType(CvType *this,char *param_1,_func_int_void_ptr *param_2, + _func_void_void_ptr_ptr *param_3, + _func_void_ptr_CvFileStorage_ptr_CvFileNode_ptr *param_4, + _func_void_CvFileStorage_ptr_char_ptr_void_ptr_CvAttrList *param_5, + _func_void_ptr_void_ptr *param_6) + +{ + (*(code *)PTR_CvType_00501068)(); + return; +} + + +================================================================== + +### FUNC 00160480 (16 bytes) name=polylines + +void cv::polylines(Mat *param_1,Point_ **param_2,int *param_3,int param_4,bool param_5, + Scalar_ *param_6,int param_7,int param_8,int param_9) + +{ + (*(code *)PTR_polylines_00501070)(); + return; +} + + +================================================================== + +### FUNC 00160490 (16 bytes) name=toupper + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int toupper(int __c) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_toupper_00501078)(__c); + return iVar1; +} + + +================================================================== + +### FUNC 001604a0 (16 bytes) name=cvSetSeqReaderPos + +void cvSetSeqReaderPos(void) + +{ + (*(code *)PTR_cvSetSeqReaderPos_00501080)(); + return; +} + + +================================================================== + +### FUNC 001604b0 (16 bytes) name=MAG_FixTemperature + +void MAG_FixTemperature(void) + +{ + (*(code *)PTR_MAG_FixTemperature_00501088)(); + return; +} + + +================================================================== + +### FUNC 001604c0 (16 bytes) name=cvStartAppendToSeq + +void cvStartAppendToSeq(void) + +{ + (*(code *)PTR_cvStartAppendToSeq_00501090)(); + return; +} + + +================================================================== + +### FUNC 001604d0 (16 bytes) name=fillConvexPoly + +void cv::fillConvexPoly(Mat *param_1,Point_ *param_2,int param_3,Scalar_ *param_4,int param_5, + int param_6) + +{ + (*(code *)PTR_fillConvexPoly_00501098)(param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 001604e0 (16 bytes) name=operator.new + +void * operator_new(ulong param_1) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_operator_new_005010a0)(); + return pvVar1; +} + + +================================================================== + +### FUNC 001604f0 (16 bytes) name=pthread_attr_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_destroy(pthread_attr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_attr_destroy_005010a8)((int)__attr); + return iVar1; +} + + +================================================================== + +### FUNC 00160500 (16 bytes) name=create + +void __thiscall +cv::_OutputArray::create + (_OutputArray *this,int param_1,int param_2,int param_3,int param_4,bool param_5, + int param_6) + +{ + (*(code *)PTR_create_005010b0)(this,param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 00160510 (16 bytes) name=MAG_GetCurrentCameraInnerTemperature + +void MAG_GetCurrentCameraInnerTemperature(void) + +{ + (*(code *)PTR_MAG_GetCurrentCameraInnerTemperature_005010b8)(); + return; +} + + +================================================================== + +### FUNC 00160520 (16 bytes) name=cvReleaseImageHeader + +void cvReleaseImageHeader(void) + +{ + (*(code *)PTR_cvReleaseImageHeader_005010c0)(); + return; +} + + +================================================================== + +### FUNC 00160530 (16 bytes) name=repeat + +void __thiscall cv::repeat(cv *this,Mat *param_1,int param_2,int param_3) + +{ + (*(code *)PTR_repeat_005010c8)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160540 (16 bytes) name=MAG_SetSubsectionEnlargePara + +void MAG_SetSubsectionEnlargePara(void) + +{ + (*(code *)PTR_MAG_SetSubsectionEnlargePara_005010d0)(); + return; +} + + +================================================================== + +### FUNC 00160550 (16 bytes) name=magnitude + +void cv::magnitude(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_magnitude_005010d8)(); + return; +} + + +================================================================== + +### FUNC 00160560 (16 bytes) name=MAG_UnLockFrame + +void MAG_UnLockFrame(void) + +{ + (*(code *)PTR_MAG_UnLockFrame_005010e0)(); + return; +} + + +================================================================== + +### FUNC 00160570 (16 bytes) name=readdir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +dirent * readdir(DIR *__dirp) + +{ + dirent *pdVar1; + + pdVar1 = (dirent *)(*(code *)PTR_readdir_005010e8)(); + return pdVar1; +} + + +================================================================== + +### FUNC 00160580 (16 bytes) name=isContinuous + +void __thiscall cv::_InputArray::isContinuous(_InputArray *this,int param_1) + +{ + (*(code *)PTR_isContinuous_005010f0)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160590 (16 bytes) name=GetEX + +void __thiscall CFunctions::GetEX(CFunctions *this) + +{ + (*(code *)PTR_GetEX_005010f8)(); + return; +} + + +================================================================== + +### FUNC 001605a0 (16 bytes) name=ptr + +void __thiscall cv::ocl::Kernel::ptr(Kernel *this) + +{ + (*(code *)PTR_ptr_00501100)(); + return; +} + + +================================================================== + +### FUNC 001605b0 (16 bytes) name=_Unwind_SetGR + +void _Unwind_SetGR(void) + +{ + (*(code *)PTR__Unwind_SetGR_00501108)(); + return; +} + + +================================================================== + +### FUNC 001605c0 (16 bytes) name=cvSaveMemStoragePos + +void cvSaveMemStoragePos(void) + +{ + (*(code *)PTR_cvSaveMemStoragePos_00501110)(); + return; +} + + +================================================================== + +### FUNC 001605d0 (16 bytes) name=imagePitchAlignment + +void __thiscall cv::ocl::Device::imagePitchAlignment(Device *this) + +{ + (*(code *)PTR_imagePitchAlignment_00501118)(); + return; +} + + +================================================================== + +### FUNC 001605e0 (16 bytes) name=GetFixPara + +void CMagDevice::GetFixPara(struct_FixPara *param_1) + +{ + (*(code *)PTR_GetFixPara_00501120)(); + return; +} + + +================================================================== + +### FUNC 001605f0 (16 bytes) name=finish + +void __thiscall cv::ocl::Queue::finish(Queue *this) + +{ + (*(code *)PTR_finish_00501128)(); + return; +} + + +================================================================== + +### FUNC 00160600 (16 bytes) name=usbi_cond_timedwait + +void usbi_cond_timedwait(void) + +{ + (*(code *)PTR_usbi_cond_timedwait_00501130)(); + return; +} + + +================================================================== + +### FUNC 00160610 (16 bytes) name=release + +void __thiscall cv::Mat::release(Mat *this) + +{ + (*(code *)PTR_release_00501138)(); + return; +} + + +================================================================== + +### FUNC 00160620 (16 bytes) name=locateROI + +void __thiscall cv::UMat::locateROI(UMat *this,Size_ *param_1,Point_ *param_2) + +{ + (*(code *)PTR_locateROI_00501140)(); + return; +} + + +================================================================== + +### FUNC 00160630 (16 bytes) name=usbi_device_cache_descriptor + +void usbi_device_cache_descriptor(void) + +{ + (*(code *)PTR_usbi_device_cache_descriptor_00501148)(); + return; +} + + +================================================================== + +### FUNC 00160640 (16 bytes) name=rectangle + +void cv::rectangle(void) + +{ + (*(code *)PTR_rectangle_00501150)(); + return; +} + + +================================================================== + +### FUNC 00160650 (16 bytes) name=~exception_ptr + +void __thiscall std::__exception_ptr::exception_ptr::~exception_ptr(exception_ptr *this) + +{ + (*(code *)PTR__exception_ptr_00501158)(); + return; +} + + +================================================================== + +### FUNC 00160660 (16 bytes) name=flip + +void cv::flip(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_flip_00501160)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160670 (16 bytes) name=deallocate + +void __thiscall cv::Mat::deallocate(Mat *this) + +{ + (*(code *)PTR_deallocate_00501168)(); + return; +} + + +================================================================== + +### FUNC 00160680 (16 bytes) name=minEnclosingCircle + +void cv::minEnclosingCircle(_InputArray *param_1,Point_ *param_2,float *param_3) + +{ + (*(code *)PTR_minEnclosingCircle_00501170)(); + return; +} + + +================================================================== + +### FUNC 00160690 (16 bytes) name=push_back + +void __thiscall cv::Mat::push_back(Mat *this,Mat *param_1) + +{ + (*(code *)PTR_push_back_00501178)(); + return; +} + + +================================================================== + +### FUNC 001606a0 (16 bytes) name=__cxa_finalize + +void __cxa_finalize(void) + +{ + (*(code *)PTR___cxa_finalize_00501180)(); + return; +} + + +================================================================== + +### FUNC 001606b0 (16 bytes) name=cvarrToMat + +void __thiscall +cv::cvarrToMat(cv *this,void *param_1,bool param_2,bool param_3,int param_4,AutoBuffer *param_5) + +{ + (*(code *)PTR_cvarrToMat_00501188)(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 001606c0 (16 bytes) name=min + +void cv::min(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + (*(code *)PTR_min_00501190)(); + return; +} + + +================================================================== + +### FUNC 001606d0 (16 bytes) name=write + +void cv::write(FileStorage *param_1,String *param_2,String *param_3) + +{ + (*(code *)PTR_write_00501198)(); + return; +} + + +================================================================== + +### FUNC 001606e0 (16 bytes) name=libusb_unlock_events + +void libusb_unlock_events(void) + +{ + (*(code *)PTR_libusb_unlock_events_005011a0)(); + return; +} + + +================================================================== + +### FUNC 001606f0 (16 bytes) name=SetColorPalette + +void CMagDevice::SetColorPalette(void) + +{ + (*(code *)PTR_SetColorPalette_005011a8)(); + return; +} + + +================================================================== + +### FUNC 00160700 (16 bytes) name=SparseMatConstIterator + +void __thiscall +cv::SparseMatConstIterator::SparseMatConstIterator(SparseMatConstIterator *this,SparseMat *param_1) + +{ + (*(code *)PTR_SparseMatConstIterator_005011b0)(); + return; +} + + +================================================================== + +### FUNC 00160710 (16 bytes) name=__unexpected + +void __cxxabiv1::__unexpected(_func_void *param_1) + +{ + (*(code *)PTR___unexpected_005011b8)(); + return; +} + + +================================================================== + +### FUNC 00160720 (16 bytes) name=threshold + +void cv::threshold(_InputArray *param_1,_OutputArray *param_2,double param_3,double param_4, + int param_5) + +{ + (*(code *)PTR_threshold_005011c0)(param_1,param_2,param_5); + return; +} + + +================================================================== + +### FUNC 00160730 (16 bytes) name=__cxa_allocate_dependent_exception + +void __cxa_allocate_dependent_exception(void) + +{ + (*(code *)PTR___cxa_allocate_dependent_exception_005011c8)(); + return; +} + + +================================================================== + +### FUNC 00160740 (16 bytes) name=SelectCaliCurve + +void __thiscall CFunctions::SelectCaliCurve(CFunctions *this) + +{ + (*(code *)PTR_SelectCaliCurve_005011d0)(); + return; +} + + +================================================================== + +### FUNC 00160750 (16 bytes) name=operator.cast.to.float + +float __thiscall cv::RNG_MT19937::operator_cast_to_float(RNG_MT19937 *this) + +{ + float fVar1; + + fVar1 = (float)(*(code *)PTR_operator_cast_to_float_005011d8)(); + return fVar1; +} + + +================================================================== + +### FUNC 00160760 (16 bytes) name=sizend + +void __thiscall cv::_InputArray::sizend(_InputArray *this,int *param_1,int param_2) + +{ + (*(code *)PTR_sizend_005011e0)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00160770 (16 bytes) name=ConvertResponse2Temperature + +void __thiscall CFunctions::ConvertResponse2Temperature(CFunctions *this,ushort *param_1) + +{ + (*(code *)PTR_ConvertResponse2Temperature_005011e8)(); + return; +} + + +================================================================== + +### FUNC 00160780 (16 bytes) name=findContours + +void cv::findContours(void) + +{ + (*(code *)PTR_findContours_005011f0)(); + return; +} + + +================================================================== + +### FUNC 00160790 (16 bytes) name=~exception + +void __thiscall std::exception::~exception(exception *this) + +{ + (*(code *)PTR__exception_005011f8)(); + return; +} + + +================================================================== + +### FUNC 001607a0 (16 bytes) name=~WriteStructContext + +void __thiscall cv::internal::WriteStructContext::~WriteStructContext(WriteStructContext *this) + +{ + (*(code *)PTR__WriteStructContext_00501200)(); + return; +} + + +================================================================== + +### FUNC 001607b0 (16 bytes) name=multiply + +void __thiscall cv::MatOp::multiply(MatOp *this,MatExpr *param_1,double param_2,MatExpr *param_3) + +{ + (*(code *)PTR_multiply_00501208)(); + return; +} + + +================================================================== + +### FUNC 001607c0 (16 bytes) name=copyTo + +void __thiscall cv::_InputArray::copyTo(_InputArray *this,_OutputArray *param_1) + +{ + (*(code *)PTR_copyTo_00501210)(); + return; +} + + +================================================================== + +### FUNC 001607d0 (16 bytes) name=localtime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime(time_t *__timer) + +{ + tm *ptVar1; + + ptVar1 = (tm *)(*(code *)PTR_localtime_00501218)(); + return ptVar1; +} + + +================================================================== + +### FUNC 001607e0 (16 bytes) name=fflush + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fflush(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fflush_00501220)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 001607f0 (16 bytes) name=libusb_control_transfer + +void libusb_control_transfer(void) + +{ + (*(code *)PTR_libusb_control_transfer_00501228)(); + return; +} + + +================================================================== + +### FUNC 00160800 (16 bytes) name=cvPtrND + +void cvPtrND(void) + +{ + (*(code *)PTR_cvPtrND_00501230)(); + return; +} + + +================================================================== + +### FUNC 00160810 (16 bytes) name=FilterDetailEnhancement_Simple + +void __thiscall CFunctions::FilterDetailEnhancement_Simple(CFunctions *this,uint param_1) + +{ + (*(code *)PTR_FilterDetailEnhancement_Simple_00501238)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160820 (16 bytes) name=SaveBMP + +void CMagDevice::SaveBMP(uint param_1,char *param_2) + +{ + (*(code *)PTR_SaveBMP_00501240)(param_1); + return; +} + + +================================================================== + +### FUNC 00160830 (16 bytes) name=GetEllipseTemperatureInfo + +void __thiscall +CFunctions::GetEllipseTemperatureInfo + (CFunctions *this,uint param_1,uint param_2,uint param_3,uint param_4,int *param_5, + int param_6) + +{ + (*(code *)PTR_GetEllipseTemperatureInfo_00501248) + (this,param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 00160840 (16 bytes) name=cvSeqRemoveSlice + +void cvSeqRemoveSlice(void) + +{ + (*(code *)PTR_cvSeqRemoveSlice_00501250)(); + return; +} + + +================================================================== + +### FUNC 00160850 (16 bytes) name=__cxa_guard_abort + +void __cxa_guard_abort(void) + +{ + (*(code *)PTR___cxa_guard_abort_00501258)(); + return; +} + + +================================================================== + +### FUNC 00160860 (16 bytes) name=pthread_key_create + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_create(pthread_key_t *__key,__destr_function *__destr_function) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_key_create_00501260)((int)__key); + return iVar1; +} + + +================================================================== + +### FUNC 00160870 (16 bytes) name=copySize + +void __thiscall cv::UMat::copySize(UMat *this,UMat *param_1) + +{ + (*(code *)PTR_copySize_00501268)(); + return; +} + + +================================================================== + +### FUNC 00160880 (16 bytes) name=CNetComm + +void __thiscall CNetComm::CNetComm(CNetComm *this) + +{ + (*(code *)PTR_CNetComm_00501270)(); + return; +} + + +================================================================== + +### FUNC 00160890 (16 bytes) name=PCA + +void __thiscall cv::PCA::PCA(PCA *this) + +{ + (*(code *)PTR_PCA_00501278)(); + return; +} + + +================================================================== + +### FUNC 001608a0 (16 bytes) name=getOptimalDFTSize + +void cv::getOptimalDFTSize(int param_1) + +{ + (*(code *)PTR_getOptimalDFTSize_00501280)(param_1); + return; +} + + +================================================================== + +### FUNC 001608b0 (16 bytes) name=operator[] + +void cv::FileNode::operator[](char *param_1) + +{ + (*(code *)PTR_operator___00501288)(); + return; +} + + +================================================================== + +### FUNC 001608c0 (16 bytes) name=MAG_DisLinkCamera + +void MAG_DisLinkCamera(void) + +{ + (*(code *)PTR_MAG_DisLinkCamera_00501290)(); + return; +} + + +================================================================== + +### FUNC 001608d0 (16 bytes) name=MAG_WillStartImmediately + +void MAG_WillStartImmediately(void) + +{ + (*(code *)PTR_MAG_WillStartImmediately_00501298)(); + return; +} + + +================================================================== + +### FUNC 001608e0 (16 bytes) name=cvInitNArrayIterator + +void cvInitNArrayIterator(void) + +{ + (*(code *)PTR_cvInitNArrayIterator_005012a0)(); + return; +} + + +================================================================== + +### FUNC 001608f0 (16 bytes) name=Context + +void __thiscall cv::ocl::Context::Context(Context *this) + +{ + (*(code *)PTR_Context_005012a8)(); + return; +} + + +================================================================== + +### FUNC 00160900 (16 bytes) name=GetRectTemperatureInfo + +void __thiscall +CFunctions::GetRectTemperatureInfo + (CFunctions *this,uint param_1,uint param_2,uint param_3,uint param_4,int *param_5, + int param_6) + +{ + (*(code *)PTR_GetRectTemperatureInfo_005012b0) + (this,param_1,param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 00160910 (16 bytes) name=linux_enumerate_device + +void linux_enumerate_device(void) + +{ + (*(code *)PTR_linux_enumerate_device_005012b8)(); + return; +} + + +================================================================== + +### FUNC 00160920 (16 bytes) name=ResizeBMP_3to5 + +void __thiscall CFunctions::ResizeBMP_3to5(CFunctions *this) + +{ + (*(code *)PTR_ResizeBMP_3to5_005012c0)(); + return; +} + + +================================================================== + +### FUNC 00160930 (16 bytes) name=abs + +void __thiscall cv::MatOp::abs(MatOp *this,MatExpr *param_1,MatExpr *param_2) + +{ + (*(code *)PTR_abs_005012c8)(); + return; +} + + +================================================================== + +### FUNC 00160940 (16 bytes) name=LinkCamera_UnProtected + +void __thiscall CNetComm::LinkCamera_UnProtected(CNetComm *this,struct_ReConnPara *param_1) + +{ + (*(code *)PTR_LinkCamera_UnProtected_005012d0)(); + return; +} + + +================================================================== + +### FUNC 00160950 (16 bytes) name=setUseIPP + +void cv::ipp::setUseIPP(bool param_1) + +{ + (*(code *)PTR_setUseIPP_005012d8)(param_1); + return; +} + + +================================================================== + +### FUNC 00160960 (16 bytes) name=getDefaultObjectName + +void __thiscall cv::FileStorage::getDefaultObjectName(FileStorage *this,String *param_1) + +{ + (*(code *)PTR_getDefaultObjectName_005012e0)(); + return; +} + + +================================================================== + +### FUNC 00160970 (16 bytes) name=operator() + +void __thiscall +cv::DefaultDeleter::operator() + (DefaultDeleter *this,CvFileStorage *param_1) + +{ + (*(code *)PTR_operator___005012e8)(); + return; +} + + +================================================================== + +### FUNC 00160980 (16 bytes) name=setNumThreads + +void cv::setNumThreads(int param_1) + +{ + (*(code *)PTR_setNumThreads_005012f0)(param_1); + return; +} + + +================================================================== + +### FUNC 00160990 (16 bytes) name=cvThreshold + +void cvThreshold(void) + +{ + (*(code *)PTR_cvThreshold_005012f8)(); + return; +} + + +================================================================== + +### FUNC 001609a0 (16 bytes) name=setAudio + +void __thiscall MDTHelper::setAudio(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_setAudio_00501300)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 001609b0 (16 bytes) name=Stream + +void __thiscall cv::cuda::Stream::Stream(Stream *this) + +{ + (*(code *)PTR_Stream_00501308)(); + return; +} + + +================================================================== + +### FUNC 001609c0 (16 bytes) name=pipe + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pipe(int *__pipedes) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pipe_00501310)((int)__pipedes); + return iVar1; +} + + +================================================================== + +### FUNC 001609d0 (16 bytes) name=usbi_io_init + +void usbi_io_init(void) + +{ + (*(code *)PTR_usbi_io_init_00501318)(); + return; +} + + +================================================================== + +### FUNC 001609e0 (16 bytes) name=libusb_submit_transfer + +void libusb_submit_transfer(void) + +{ + (*(code *)PTR_libusb_submit_transfer_00501320)(); + return; +} + + +================================================================== + +### FUNC 001609f0 (16 bytes) name=operator++ + +void __thiscall cv::NAryMatIterator::operator++(NAryMatIterator *this) + +{ + (*(code *)PTR_operator___00501328)(); + return; +} + + +================================================================== + +### FUNC 00160a00 (16 bytes) name=CallStaticObjectMethod + +void _JNIEnv::CallStaticObjectMethod(_jclass *param_1,_jmethodID *param_2,...) + +{ + (*(code *)PTR_CallStaticObjectMethod_00501330)(); + return; +} + + +================================================================== + +### FUNC 00160a10 (16 bytes) name=checkVector + +void __thiscall cv::Mat::checkVector(Mat *this,int param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_checkVector_00501338)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160a20 (16 bytes) name=adjustROI + +void __thiscall cv::Mat::adjustROI(Mat *this,int param_1,int param_2,int param_3,int param_4) + +{ + (*(code *)PTR_adjustROI_00501340)(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00160a30 (16 bytes) name=lseek + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +__off_t lseek(int __fd,__off_t __offset,int __whence) + +{ + __off_t _Var1; + + _Var1 = (*(code *)PTR_lseek_00501348)(__fd,__offset,__whence); + return _Var1; +} + + +================================================================== + +### FUNC 00160a40 (16 bytes) name=MAG_GetDetectSuggestedParameter + +void MAG_GetDetectSuggestedParameter(void) + +{ + (*(code *)PTR_MAG_GetDetectSuggestedParameter_00501350)(); + return; +} + + +================================================================== + +### FUNC 00160a50 (16 bytes) name=Unlock + +void __thiscall CMagDevice::Unlock(CMagDevice *this) + +{ + (*(code *)PTR_Unlock_00501358)(); + return; +} + + +================================================================== + +### FUNC 00160a60 (16 bytes) name=usbi_get_device_by_session_id + +void usbi_get_device_by_session_id(void) + +{ + (*(code *)PTR_usbi_get_device_by_session_id_00501360)(); + return; +} + + +================================================================== + +### FUNC 00160a70 (16 bytes) name=atan + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double atan(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_atan_00501368)(); + return dVar1; +} + + +================================================================== + +### FUNC 00160a80 (16 bytes) name=Device + +void __thiscall cv::ocl::Device::Device(Device *this,Device *param_1) + +{ + (*(code *)PTR_Device_00501370)(); + return; +} + + +================================================================== + +### FUNC 00160a90 (16 bytes) name=clear + +void __thiscall cv::SparseMat::clear(SparseMat *this) + +{ + (*(code *)PTR_clear_00501378)(); + return; +} + + +================================================================== + +### FUNC 00160aa0 (16 bytes) name=DeInit + +void __thiscall CNetComm::DeInit(CNetComm *this) + +{ + (*(code *)PTR_DeInit_00501380)(); + return; +} + + +================================================================== + +### FUNC 00160ab0 (16 bytes) name=time + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +time_t time(time_t *__timer) + +{ + time_t tVar1; + + tVar1 = (*(code *)PTR_time_00501388)(); + return tVar1; +} + + +================================================================== + +### FUNC 00160ac0 (16 bytes) name=gemm + +void cv::gemm(_InputArray *param_1,_InputArray *param_2,double param_3,_InputArray *param_4, + double param_5,_OutputArray *param_6,int param_7) + +{ + (*(code *)PTR_gemm_00501390)(); + return; +} + + +================================================================== + +### FUNC 00160ad0 (16 bytes) name=MAG_GetFixPara + +void MAG_GetFixPara(void) + +{ + (*(code *)PTR_MAG_GetFixPara_00501398)(); + return; +} + + +================================================================== + +### FUNC 00160ae0 (16 bytes) name=pthread_attr_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_init(pthread_attr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_attr_init_005013a0)((int)__attr); + return iVar1; +} + + +================================================================== + +### FUNC 00160af0 (16 bytes) name=MAG_GetTemperatureData_Raw + +void MAG_GetTemperatureData_Raw(void) + +{ + (*(code *)PTR_MAG_GetTemperatureData_Raw_005013a8)(); + return; +} + + +================================================================== + +### FUNC 00160b00 (16 bytes) name=uname + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int uname(utsname *__name) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_uname_005013b0)((int)__name); + return iVar1; +} + + +================================================================== + +### FUNC 00160b10 (16 bytes) name=reserve + +void __thiscall cv::Mat::reserve(Mat *this,ulong param_1) + +{ + (*(code *)PTR_reserve_005013b8)(); + return; +} + + +================================================================== + +### FUNC 00160b20 (16 bytes) name=_M_fill_insert + +void __thiscall std::vector>::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_005013c0)(); + return; +} + + +================================================================== + +### FUNC 00160b30 (16 bytes) name=__stack_chk_fail + +void __stack_chk_fail(void) + +{ + (*(code *)PTR___stack_chk_fail_005013c8)(); + return; +} + + +================================================================== + +### FUNC 00160b40 (16 bytes) name=~ProgramSource + +void __thiscall cv::ocl::ProgramSource::~ProgramSource(ProgramSource *this) + +{ + (*(code *)PTR__ProgramSource_005013d0)(); + return; +} + + +================================================================== + +### FUNC 00160b50 (16 bytes) name=wcsxfrm + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcsxfrm(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_wcsxfrm_005013d8)(); + return sVar1; +} + + +================================================================== + +### FUNC 00160b60 (16 bytes) name=bitwise_xor + +void cv::bitwise_xor(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + (*(code *)PTR_bitwise_xor_005013e0)(); + return; +} + + +================================================================== + +### FUNC 00160b70 (16 bytes) name=cvInitMatHeader + +void cvInitMatHeader(void) + +{ + (*(code *)PTR_cvInitMatHeader_005013e8)(); + return; +} + + +================================================================== + +### FUNC 00160b80 (16 bytes) name=SubSectionEnlarge + +void __thiscall CFunctions::SubSectionEnlarge(CFunctions *this) + +{ + (*(code *)PTR_SubSectionEnlarge_005013f0)(); + return; +} + + +================================================================== + +### FUNC 00160b90 (16 bytes) name=FilterE4X + +void __thiscall CFunctions::FilterE4X(CFunctions *this) + +{ + (*(code *)PTR_FilterE4X_005013f8)(); + return; +} + + +================================================================== + +### FUNC 00160ba0 (16 bytes) name=unexpected + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::unexpected(void) + +{ + (*(code *)PTR_unexpected_00501400)(); + return; +} + + +================================================================== + +### FUNC 00160bb0 (16 bytes) name=operator== + +void __thiscall cv::MatSize::operator==(MatSize *this,MatSize *param_1) + +{ + (*(code *)PTR_operator___00501408)(); + return; +} + + +================================================================== + +### FUNC 00160bc0 (16 bytes) name=getJpg + +void __thiscall MDTHelper::getJpg(MDTHelper *this,uchar **param_1) + +{ + (*(code *)PTR_getJpg_00501410)(); + return; +} + + +================================================================== + +### FUNC 00160bd0 (16 bytes) name=matmul + +void __thiscall cv::MatOp::matmul(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + (*(code *)PTR_matmul_00501418)(); + return; +} + + +================================================================== + +### FUNC 00160be0 (16 bytes) name=IsPause + +void __thiscall CMagDevice::IsPause(CMagDevice *this) + +{ + (*(code *)PTR_IsPause_00501420)(); + return; +} + + +================================================================== + +### FUNC 00160bf0 (16 bytes) name=getDefault + +void cv::ocl::Device::getDefault(void) + +{ + (*(code *)PTR_getDefault_00501428)(); + return; +} + + +================================================================== + +### FUNC 00160c00 (16 bytes) name=_M_fill_insert + +void __thiscall std::vector>::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_00501430)(); + return; +} + + +================================================================== + +### FUNC 00160c10 (16 bytes) name=_M_insert_aux + +void __thiscall +std::vector>::_M_insert_aux(void) + +{ + (*(code *)PTR__M_insert_aux_00501438)(); + return; +} + + +================================================================== + +### FUNC 00160c20 (16 bytes) name=cvMemStorageAlloc + +void cvMemStorageAlloc(void) + +{ + (*(code *)PTR_cvMemStorageAlloc_00501440)(); + return; +} + + +================================================================== + +### FUNC 00160c30 (16 bytes) name=strtof + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float strtof(char *__nptr,char **__endptr) + +{ + float fVar1; + + fVar1 = (float)(*(code *)PTR_strtof_00501448)(); + return fVar1; +} + + +================================================================== + +### FUNC 00160c40 (16 bytes) name=GetCurrentPos + +void __thiscall FStream::GetCurrentPos(FStream *this) + +{ + (*(code *)PTR_GetCurrentPos_00501450)(); + return; +} + + +================================================================== + +### FUNC 00160c50 (16 bytes) name=Reset + +void __thiscall CAccumulator::Reset(CAccumulator *this,uint param_1,uint param_2,uint param_3) + +{ + (*(code *)PTR_Reset_00501458)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160c60 (16 bytes) name=GetCaliFile + +void __thiscall CNetComm::GetCaliFile(CNetComm *this,char *param_1) + +{ + (*(code *)PTR_GetCaliFile_00501460)(); + return; +} + + +================================================================== + +### FUNC 00160c70 (16 bytes) name=perspectiveTransform + +void cv::perspectiveTransform(_InputArray *param_1,_OutputArray *param_2,_InputArray *param_3) + +{ + (*(code *)PTR_perspectiveTransform_00501468)(); + return; +} + + +================================================================== + +### FUNC 00160c80 (16 bytes) name=bitwise_and + +void cv::bitwise_and(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + (*(code *)PTR_bitwise_and_00501470)(); + return; +} + + +================================================================== + +### FUNC 00160c90 (16 bytes) name=Lock + +void __thiscall CMagDevice::Lock(CMagDevice *this) + +{ + (*(code *)PTR_Lock_00501478)(); + return; +} + + +================================================================== + +### FUNC 00160ca0 (16 bytes) name=getAudio + +void __thiscall MDTHelper::getAudio(MDTHelper *this,uchar **param_1) + +{ + (*(code *)PTR_getAudio_00501480)(); + return; +} + + +================================================================== + +### FUNC 00160cb0 (16 bytes) name=fputs + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fputs(char *__s,FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fputs_00501488)((int)__s); + return iVar1; +} + + +================================================================== + +### FUNC 00160cc0 (16 bytes) name=cvCreateImageHeader + +void cvCreateImageHeader(void) + +{ + (*(code *)PTR_cvCreateImageHeader_00501490)(); + return; +} + + +================================================================== + +### FUNC 00160cd0 (16 bytes) name=SetShutterState + +void CNetComm::SetShutterState(int param_1,uint *param_2) + +{ + (*(code *)PTR_SetShutterState_00501498)(param_1); + return; +} + + +================================================================== + +### FUNC 00160ce0 (16 bytes) name=cvStartWriteSeq + +void cvStartWriteSeq(void) + +{ + (*(code *)PTR_cvStartWriteSeq_005014a0)(); + return; +} + + +================================================================== + +### FUNC 00160cf0 (16 bytes) name=copyTo + +void __thiscall cv::Mat::copyTo(Mat *this,_OutputArray *param_1) + +{ + (*(code *)PTR_copyTo_005014a8)(); + return; +} + + +================================================================== + +### FUNC 00160d00 (16 bytes) name=MAG_StopProcessImage + +void MAG_StopProcessImage(void) + +{ + (*(code *)PTR_MAG_StopProcessImage_005014b0)(); + return; +} + + +================================================================== + +### FUNC 00160d10 (16 bytes) name=__cxa_demangle + +void __cxa_demangle(void) + +{ + (*(code *)PTR___cxa_demangle_005014b8)(); + return; +} + + +================================================================== + +### FUNC 00160d20 (16 bytes) name=rewind + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void rewind(FILE *__stream) + +{ + (*(code *)PTR_rewind_005014c0)(); + return; +} + + +================================================================== + +### FUNC 00160d30 (16 bytes) name=cvAttrValue + +void cvAttrValue(void) + +{ + (*(code *)PTR_cvAttrValue_005014c8)(); + return; +} + + +================================================================== + +### FUNC 00160d40 (16 bytes) name=create + +void __thiscall cv::_OutputArray::create(void) + +{ + (*(code *)PTR_create_005014d0)(); + return; +} + + +================================================================== + +### FUNC 00160d50 (16 bytes) name=fgets + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * fgets(char *__s,int __n,FILE *__stream) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_fgets_005014d8)(__s,__n); + return pcVar1; +} + + +================================================================== + +### FUNC 00160d60 (16 bytes) name=MAG_SetDetailEnhancement + +void MAG_SetDetailEnhancement(void) + +{ + (*(code *)PTR_MAG_SetDetailEnhancement_005014e0)(); + return; +} + + +================================================================== + +### FUNC 00160d70 (16 bytes) name=libusb_handle_events_timeout_completed + +void libusb_handle_events_timeout_completed(void) + +{ + (*(code *)PTR_libusb_handle_events_timeout_completed_005014e8)(); + return; +} + + +================================================================== + +### FUNC 00160d80 (16 bytes) name=MAG_SetEXLevel + +void MAG_SetEXLevel(void) + +{ + (*(code *)PTR_MAG_SetEXLevel_005014f0)(); + return; +} + + +================================================================== + +### FUNC 00160d90 (16 bytes) name=TriggerFFC + +void __thiscall CMagDevice::TriggerFFC(CMagDevice *this) + +{ + (*(code *)PTR_TriggerFFC_005014f8)(); + return; +} + + +================================================================== + +### FUNC 00160da0 (16 bytes) name=ungetwc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t ungetwc(wint_t __wc,__FILE *__stream) + +{ + wint_t wVar1; + + wVar1 = (*(code *)PTR_ungetwc_00501500)(__wc); + return wVar1; +} + + +================================================================== + +### FUNC 00160db0 (16 bytes) name=bitwise_not + +void cv::bitwise_not(_InputArray *param_1,_OutputArray *param_2,_InputArray *param_3) + +{ + (*(code *)PTR_bitwise_not_00501508)(); + return; +} + + +================================================================== + +### FUNC 00160dc0 (16 bytes) name=depth + +void __thiscall cv::_InputArray::depth(_InputArray *this,int param_1) + +{ + (*(code *)PTR_depth_00501510)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160dd0 (16 bytes) name=SetDetailEnhancement + +void CMagDevice::SetDetailEnhancement(int param_1,int param_2) + +{ + (*(code *)PTR_SetDetailEnhancement_00501518)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00160de0 (16 bytes) name=set + +void __thiscall cv::ocl::Kernel::set(Kernel *this,int param_1,void *param_2,ulong param_3) + +{ + (*(code *)PTR_set_00501520)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00160df0 (16 bytes) name=cvGetImageCOI + +void cvGetImageCOI(void) + +{ + (*(code *)PTR_cvGetImageCOI_00501528)(); + return; +} + + +================================================================== + +### FUNC 00160e00 (16 bytes) name=matchTemplate + +void cv::matchTemplate(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4, + _InputArray *param_5) + +{ + (*(code *)PTR_matchTemplate_00501530)(); + return; +} + + +================================================================== + +### FUNC 00160e10 (16 bytes) name=pthread_cond_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_init(pthread_cond_t *__cond,pthread_condattr_t *__cond_attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_init_00501538)((int)__cond); + return iVar1; +} + + +================================================================== + +### FUNC 00160e20 (16 bytes) name=cvGetMat + +void cvGetMat(void) + +{ + (*(code *)PTR_cvGetMat_00501540)(); + return; +} + + +================================================================== + +### FUNC 00160e30 (16 bytes) name=MatOp + +void __thiscall cv::MatOp::MatOp(MatOp *this) + +{ + (*(code *)PTR_MatOp_00501548)(); + return; +} + + +================================================================== + +### FUNC 00160e40 (16 bytes) name=cvPtr3D + +void cvPtr3D(void) + +{ + (*(code *)PTR_cvPtr3D_00501550)(); + return; +} + + +================================================================== + +### FUNC 00160e50 (16 bytes) name=StopProcessImage + +void __thiscall CMagDevice::StopProcessImage(CMagDevice *this) + +{ + (*(code *)PTR_StopProcessImage_00501558)(); + return; +} + + +================================================================== + +### FUNC 00160e60 (16 bytes) name=sameSize + +void __thiscall cv::_InputArray::sameSize(_InputArray *this,_InputArray *param_1) + +{ + (*(code *)PTR_sameSize_00501560)(); + return; +} + + +================================================================== + +### FUNC 00160e70 (16 bytes) name=MAG_GetOutputBMPdata + +void MAG_GetOutputBMPdata(void) + +{ + (*(code *)PTR_MAG_GetOutputBMPdata_00501568)(); + return; +} + + +================================================================== + +### FUNC 00160e80 (16 bytes) name=libusb_ref_device + +void libusb_ref_device(void) + +{ + (*(code *)PTR_libusb_ref_device_00501570)(); + return; +} + + +================================================================== + +### FUNC 00160e90 (16 bytes) name=setDDT + +void __thiscall MDTHelper::setDDT(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + (*(code *)PTR_setDDT_00501578)(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160ea0 (16 bytes) name=libusb_unref_device + +void libusb_unref_device(void) + +{ + (*(code *)PTR_libusb_unref_device_00501580)(); + return; +} + + +================================================================== + +### FUNC 00160eb0 (16 bytes) name=MAG_SetIsothermalPara + +void MAG_SetIsothermalPara(void) + +{ + (*(code *)PTR_MAG_SetIsothermalPara_00501588)(); + return; +} + + +================================================================== + +### FUNC 00160ec0 (16 bytes) name=extractImageCOI + +void cv::extractImageCOI(void *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_extractImageCOI_00501590)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160ed0 (16 bytes) name=invert + +void cv::invert(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + (*(code *)PTR_invert_00501598)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00160ee0 (16 bytes) name=MAG_IsInitialized + +void MAG_IsInitialized(void) + +{ + (*(code *)PTR_MAG_IsInitialized_005015a0)(); + return; +} + + +================================================================== + +### FUNC 00160ef0 (16 bytes) name=NAryMatIterator + +void __thiscall +cv::NAryMatIterator::NAryMatIterator(NAryMatIterator *this,Mat **param_1,Mat *param_2,int param_3) + +{ + (*(code *)PTR_NAryMatIterator_005015a8)(); + return; +} + + +================================================================== + +### FUNC 00160f00 (16 bytes) name=Buffer + +void __thiscall cv::ogl::Buffer::Buffer(Buffer *this) + +{ + (*(code *)PTR_Buffer_005015b0)(); + return; +} + + +================================================================== + +### FUNC 00160f10 (16 bytes) name=delGlobalObject + +void delGlobalObject(_JNIEnv *param_1,_jobject **param_2) + +{ + (*(code *)PTR_delGlobalObject_005015b8)(); + return; +} + + +================================================================== + +### FUNC 00160f20 (16 bytes) name=Canny + +void cv::Canny(_InputArray *param_1,_OutputArray *param_2,double param_3,double param_4,int param_5, + bool param_6) + +{ + (*(code *)PTR_Canny_005015c0)(param_1,param_2,param_5,param_6); + return; +} + + +================================================================== + +### FUNC 00160f30 (16 bytes) name=Pause + +void __thiscall CMagDevice::Pause(CMagDevice *this) + +{ + (*(code *)PTR_Pause_005015c8)(); + return; +} + + +================================================================== + +### FUNC 00160f40 (16 bytes) name=SetLensParameter + +void __thiscall CFunctions::SetLensParameter(CFunctions *this,void *param_1,uint param_2) + +{ + (*(code *)PTR_SetLensParameter_005015d0)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00160f50 (16 bytes) name=copyTo + +void __thiscall cv::UMat::copyTo(UMat *this,_OutputArray *param_1,_InputArray *param_2) + +{ + (*(code *)PTR_copyTo_005015d8)(); + return; +} + + +================================================================== + +### FUNC 00160f60 (16 bytes) name=terminate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::terminate(void) + +{ + (*(code *)PTR_terminate_005015e0)(); + return; +} + + +================================================================== + +### FUNC 00160f70 (16 bytes) name=deallocate + +void __thiscall cv::String::deallocate(String *this) + +{ + (*(code *)PTR_deallocate_005015e8)(); + return; +} + + +================================================================== + +### FUNC 00160f80 (16 bytes) name=mean + +void __thiscall cv::mean(cv *this,_InputArray *param_1,_InputArray *param_2) + +{ + (*(code *)PTR_mean_005015f0)(); + return; +} + + +================================================================== + +### FUNC 00160f90 (16 bytes) name=mkstemp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int mkstemp(char *__template) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_mkstemp_005015f8)((int)__template); + return iVar1; +} + + +================================================================== + +### FUNC 00160fa0 (16 bytes) name=_M_fill_insert + +void __thiscall std::vector>::_M_fill_insert(void) + +{ + (*(code *)PTR__M_fill_insert_00501600)(); + return; +} + + +================================================================== + +### FUNC 00160fb0 (16 bytes) name=usbi_sanitize_device + +void usbi_sanitize_device(void) + +{ + (*(code *)PTR_usbi_sanitize_device_00501608)(); + return; +} + + +================================================================== + +### FUNC 00160fc0 (16 bytes) name=AndroidBitmap_getInfo + +void AndroidBitmap_getInfo(void) + +{ + (*(code *)PTR_AndroidBitmap_getInfo_00501610)(); + return; +} + + +================================================================== + +### FUNC 00160fd0 (16 bytes) name=~MutexLock + +void __thiscall MutexLock::~MutexLock(MutexLock *this) + +{ + (*(code *)PTR__MutexLock_00501618)(); + return; +} + + +================================================================== + +### FUNC 00160fe0 (16 bytes) name=StartReceiveImg_UnProtected + +void __thiscall CNetComm::StartReceiveImg_UnProtected(CNetComm *this,struct_RePlayPara *param_1) + +{ + (*(code *)PTR_StartReceiveImg_UnProtected_00501620)(); + return; +} + + +================================================================== + +### FUNC 00160ff0 (16 bytes) name=~Image2D + +void __thiscall cv::ocl::Image2D::~Image2D(Image2D *this) + +{ + (*(code *)PTR__Image2D_00501628)(); + return; +} + + +================================================================== + +### FUNC 00161000 (16 bytes) name=setlocale + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * setlocale(int __category,char *__locale) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_setlocale_00501630)(__category); + return pcVar1; +} + + +================================================================== + +### FUNC 00161010 (16 bytes) name=SaveDDT + +void SaveDDT(uint param_1,uchar *param_2,char *param_3) + +{ + (*(code *)PTR_SaveDDT_00501638)(param_1); + return; +} + + +================================================================== + +### FUNC 00161020 (16 bytes) name=cvWrite + +void cvWrite(void) + +{ + (*(code *)PTR_cvWrite_00501640)(); + return; +} + + +================================================================== + +### FUNC 00161030 (16 bytes) name=cvSeqPushMulti + +void cvSeqPushMulti(void) + +{ + (*(code *)PTR_cvSeqPushMulti_00501648)(); + return; +} + + +================================================================== + +### FUNC 00161040 (16 bytes) name=cvEndWriteSeq + +void cvEndWriteSeq(void) + +{ + (*(code *)PTR_cvEndWriteSeq_00501650)(); + return; +} + + +================================================================== + +### FUNC 00161050 (16 bytes) name=CallVoidMethod + +void _JNIEnv::CallVoidMethod(_jobject *param_1,_jmethodID *param_2,...) + +{ + (*(code *)PTR_CallVoidMethod_00501658)(); + return; +} + + +================================================================== + +### FUNC 00161060 (16 bytes) name=cvSeqRemove + +void cvSeqRemove(void) + +{ + (*(code *)PTR_cvSeqRemove_00501660)(); + return; +} + + +================================================================== + +### FUNC 00161070 (16 bytes) name=ptr + +void __thiscall cv::ocl::Queue::ptr(Queue *this) + +{ + (*(code *)PTR_ptr_00501668)(); + return; +} + + +================================================================== + +### FUNC 00161080 (16 bytes) name=create + +void __thiscall cv::ocl::Context::create(Context *this,int param_1) + +{ + (*(code *)PTR_create_00501670)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00161090 (16 bytes) name=createSameSize + +void __thiscall +cv::_OutputArray::createSameSize(_OutputArray *this,_InputArray *param_1,int param_2) + +{ + (*(code *)PTR_createSameSize_00501678)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 001610a0 (16 bytes) name=~__class_type_info + +void __thiscall __cxxabiv1::__class_type_info::~__class_type_info(__class_type_info *this) + +{ + (*(code *)PTR____class_type_info_00501680)(); + return; +} + + +================================================================== + +### FUNC 001610b0 (16 bytes) name=__convert_to_v + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::__convert_to_v(char *param_1,float *param_2,_Ios_Iostate *param_3,int **param_4) + +{ + (*(code *)PTR___convert_to_v_00501688)(); + return; +} + + +================================================================== + +### FUNC 001610c0 (16 bytes) name=parallel_for_ + +void cv::parallel_for_(Range *param_1,ParallelLoopBody *param_2,double param_3) + +{ + (*(code *)PTR_parallel_for__00501690)(); + return; +} + + +================================================================== + +### FUNC 001610d0 (16 bytes) name=FixTemperature + +void CMagDevice::FixTemperature(int param_1,float param_2,uint param_3) + +{ + (*(code *)PTR_FixTemperature_00501698)(param_1,param_3); + return; +} + + +================================================================== + +### FUNC 001610e0 (16 bytes) name=rectangle + +void cv::rectangle(void) + +{ + (*(code *)PTR_rectangle_005016a0)(); + return; +} + + +================================================================== + +### FUNC 001610f0 (16 bytes) name=libusb_get_next_timeout + +void libusb_get_next_timeout(void) + +{ + (*(code *)PTR_libusb_get_next_timeout_005016a8)(); + return; +} + + +================================================================== + +### FUNC 00161100 (16 bytes) name=dl_iterate_phdr + +void dl_iterate_phdr(void) + +{ + (*(code *)PTR_dl_iterate_phdr_005016b0)(); + return; +} + + +================================================================== + +### FUNC 00161110 (16 bytes) name=cvWriteInt + +void cvWriteInt(void) + +{ + (*(code *)PTR_cvWriteInt_005016b8)(); + return; +} + + +================================================================== + +### FUNC 00161120 (16 bytes) name=uncaught_exception + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::uncaught_exception(void) + +{ + (*(code *)PTR_uncaught_exception_005016c0)(); + return; +} + + +================================================================== + +### FUNC 00161130 (16 bytes) name=operator- + +void __thiscall cv::operator-(cv *this,Mat *param_1,Mat *param_2) + +{ + (*(code *)PTR_operator__005016c8)(); + return; +} + + +================================================================== + +### FUNC 00161140 (16 bytes) name=cvStartReadRawData + +void cvStartReadRawData(void) + +{ + (*(code *)PTR_cvStartReadRawData_005016d0)(); + return; +} + + +================================================================== + +### FUNC 00161150 (16 bytes) name=backSubst + +void cv::SVD::backSubst(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _InputArray *param_4,_OutputArray *param_5) + +{ + (*(code *)PTR_backSubst_005016d8)(); + return; +} + + +================================================================== + +### FUNC 00161160 (16 bytes) name=__cxa_call_unexpected + +void __cxa_call_unexpected(void) + +{ + (*(code *)PTR___cxa_call_unexpected_005016e0)(); + return; +} + + +================================================================== + +### FUNC 00161170 (16 bytes) name=getText + +void __thiscall MDTHelper::getText(MDTHelper *this,uchar **param_1) + +{ + (*(code *)PTR_getText_005016e8)(); + return; +} + + +================================================================== + +### FUNC 00161180 (16 bytes) name=libusb_get_device_address + +void libusb_get_device_address(void) + +{ + (*(code *)PTR_libusb_get_device_address_005016f0)(); + return; +} + + +================================================================== + +### FUNC 00161190 (16 bytes) name=MDTHelper + +void __thiscall MDTHelper::MDTHelper(MDTHelper *this) + +{ + (*(code *)PTR_MDTHelper_005016f8)(); + return; +} + + +================================================================== + +### FUNC 001611a0 (16 bytes) name=ones + +void __thiscall cv::UMat::ones(void) + +{ + (*(code *)PTR_ones_00501700)(); + return; +} + + +================================================================== + +### FUNC 001611b0 (16 bytes) name=cvPointSeqFromMat + +void cvPointSeqFromMat(void) + +{ + (*(code *)PTR_cvPointSeqFromMat_00501708)(); + return; +} + + +================================================================== + +### FUNC 001611c0 (16 bytes) name=vsprintf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int vsprintf(char *__s,char *__format,__gnuc_va_list __arg) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_vsprintf_00501710)((int)__s); + return iVar1; +} + + +================================================================== + +### FUNC 001611d0 (16 bytes) name=newGlobalObject + +void newGlobalObject(_JNIEnv *param_1,_jobject *param_2) + +{ + (*(code *)PTR_newGlobalObject_00501718)(); + return; +} + + +================================================================== + +### FUNC 001611e0 (16 bytes) name=GetTemperatureData + +void CMagDevice::GetTemperatureData(int *param_1,uint param_2,int param_3) + +{ + (*(code *)PTR_GetTemperatureData_00501720)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 001611f0 (16 bytes) name=FileStorage + +void __thiscall cv::FileStorage::FileStorage(FileStorage *this,CvFileStorage *param_1,bool param_2) + +{ + (*(code *)PTR_FileStorage_00501728)(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00161200 (16 bytes) name=UMatData + +void __thiscall cv::UMatData::UMatData(UMatData *this,MatAllocator *param_1) + +{ + (*(code *)PTR_UMatData_00501730)(); + return; +} + + +================================================================== + +### FUNC 00161210 (16 bytes) name=solveCubic + +void cv::solveCubic(_InputArray *param_1,_OutputArray *param_2) + +{ + (*(code *)PTR_solveCubic_00501738)(); + return; +} + + +================================================================== + +### FUNC 00161220 (16 bytes) name=~vector + +void __thiscall +std::vector>::~vector + (vector> *this) + +{ + (*(code *)PTR__vector_00501740)(); + return; +} + + +================================================================== + +### FUNC 00161230 (16 bytes) name=open + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int open(char *__file,int __oflag,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_open_00501748)((int)__file,__oflag); + return iVar1; +} + + +================================================================== + +### FUNC 00161240 (16 bytes) name=cvWriteComment + +void cvWriteComment(void) + +{ + (*(code *)PTR_cvWriteComment_00501750)(); + return; +} + + +================================================================== + +### FUNC 00161250 (16 bytes) name=locateROI + +void __thiscall cv::cuda::GpuMat::locateROI(GpuMat *this,Size_ *param_1,Point_ *param_2) + +{ + (*(code *)PTR_locateROI_00501758)(); + return; +} + + +================================================================== + +### FUNC 00161260 (16 bytes) name=cvNextNArraySlice + +void cvNextNArraySlice(void) + +{ + (*(code *)PTR_cvNextNArraySlice_00501760)(); + return; +} + + +================================================================== + +### FUNC 00161270 (16 bytes) name=cvReadRawDataSlice + +void cvReadRawDataSlice(void) + +{ + (*(code *)PTR_cvReadRawDataSlice_00501768)(); + return; +} + + +================================================================== + +### FUNC 00161280 (16 bytes) name=cvSeqPush + +void cvSeqPush(void) + +{ + (*(code *)PTR_cvSeqPush_00501770)(); + return; +} + + +================================================================== + +### FUNC 00161290 (16 bytes) name=inRange + +void cv::inRange(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _OutputArray *param_4) + +{ + (*(code *)PTR_inRange_00501778)(); + return; +} + + +================================================================== + +### FUNC 001612a0 (16 bytes) name=ptr + +void __thiscall cv::ocl::Platform::ptr(Platform *this) + +{ + (*(code *)PTR_ptr_00501780)(); + return; +} + + +================================================================== + +### FUNC 001612b0 (16 bytes) name=Mat + +void __thiscall cv::Mat::Mat(Mat *this,Mat *param_1,Rect_ *param_2) + +{ + (*(code *)PTR_Mat_00501788)(); + return; +} + + +================================================================== + +### FUNC 001612c0 (16 bytes) name=hash + +void __thiscall cv::ocl::ProgramSource::hash(ProgramSource *this) + +{ + (*(code *)PTR_hash_00501790)(); + return; +} + + +================================================================== + +### FUNC 001612d0 (16 bytes) name=ellipse2Poly + +void cv::ellipse2Poly(void) + +{ + (*(code *)PTR_ellipse2Poly_00501798)(); + return; +} + + +================================================================== + +### FUNC 001612e0 (16 bytes) name=fscanf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fscanf(FILE *__stream,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fscanf_005017a0)((int)__stream); + return iVar1; +} + + +================================================================== + +### FUNC 001612f0 (16 bytes) name=threshold_ + +void __thiscall +ImageProc::threshold_(ImageProc *this,Mat *param_1,Mat *param_2,int param_3,int param_4) + +{ + (*(code *)PTR_threshold__005017a8)(); + return; +} + + +================================================================== + +### FUNC 00161300 (16 bytes) name=strdup + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strdup(char *__s) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strdup_005017b0)(); + return pcVar1; +} + + +================================================================== + +### FUNC 00161310 (16 bytes) name=~vector + +void __thiscall +std::vector>::~vector + (vector> *this) + +{ + (*(code *)PTR__vector_005017b8)(); + return; +} + + +================================================================== + +### FUNC 00161320 (16 bytes) name=__convert_to_v + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::__convert_to_v + (char *param_1,longdouble *param_2,_Ios_Iostate *param_3,int **param_4) + +{ + (*(code *)PTR___convert_to_v_005017c0)(); + return; +} + + +================================================================== + +### FUNC 00161330 (16 bytes) name=__cxa_free_exception + +void __cxa_free_exception(void) + +{ + (*(code *)PTR___cxa_free_exception_005017c8)(); + return; +} + + +================================================================== + +### FUNC 00161340 (16 bytes) name=resize + +void __thiscall cv::Mat::resize(Mat *this,ulong param_1) + +{ + (*(code *)PTR_resize_005017d0)(); + return; +} + + +================================================================== + +### FUNC 00161350 (16 bytes) name=MAG_GetEllipseTemperatureInfo + +void MAG_GetEllipseTemperatureInfo(void) + +{ + (*(code *)PTR_MAG_GetEllipseTemperatureInfo_005017d8)(); + return; +} + + +================================================================== + +### FUNC 00161360 (16 bytes) name=strrchr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strrchr(char *__s,int __c) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strrchr_005017e0)(__s,__c); + return pcVar1; +} + + +================================================================== + +### FUNC 00161370 (16 bytes) name=localtime_r + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime_r(time_t *__timer,tm *__tp) + +{ + tm *ptVar1; + + ptVar1 = (tm *)(*(code *)PTR_localtime_r_005017e8)(); + return ptVar1; +} + + +================================================================== + +### FUNC 00161380 (16 bytes) name=libusb_cancel_transfer + +void libusb_cancel_transfer(void) + +{ + (*(code *)PTR_libusb_cancel_transfer_005017f0)(); + return; +} + + +================================================================== + +### FUNC 00161390 (16 bytes) name=closedir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int closedir(DIR *__dirp) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_closedir_005017f8)((int)__dirp); + return iVar1; +} + + +================================================================== + +### FUNC 001613a0 (16 bytes) name=_Unwind_DeleteException + +void _Unwind_DeleteException(void) + +{ + (*(code *)PTR__Unwind_DeleteException_00501800)(); + return; +} + + +================================================================== + +### FUNC 001613b0 (16 bytes) name=cvGetDims + +void cvGetDims(void) + +{ + (*(code *)PTR_cvGetDims_00501808)(); + return; +} + + +================================================================== + +### FUNC 001613c0 (16 bytes) name=MAG_GetOutputRawData + +void MAG_GetOutputRawData(void) + +{ + (*(code *)PTR_MAG_GetOutputRawData_00501810)(); + return; +} + + +================================================================== + +### FUNC 001613d0 (16 bytes) name=getGaussianKernel + +void __thiscall cv::getGaussianKernel(cv *this,int param_1,double param_2,int param_3) + +{ + (*(code *)PTR_getGaussianKernel_00501818)(this,param_1,param_3); + return; +} + + +================================================================== + +### FUNC 001613e0 (16 bytes) name=usbi_signal_event + +void usbi_signal_event(void) + +{ + (*(code *)PTR_usbi_signal_event_00501820)(); + return; +} + + +================================================================== + +### FUNC 001613f0 (16 bytes) name=convertScaleAbs + +void cv::convertScaleAbs(_InputArray *param_1,_OutputArray *param_2,double param_3,double param_4) + +{ + (*(code *)PTR_convertScaleAbs_00501828)(); + return; +} + + +================================================================== + +### FUNC 00161400 (16 bytes) name=fstat + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fstat(int __fd,stat *__buf) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fstat_00501830)(__fd); + return iVar1; +} + + +================================================================== + +### FUNC 00161410 (16 bytes) name=__cxa_guard_acquire + +void __cxa_guard_acquire(void) + +{ + (*(code *)PTR___cxa_guard_acquire_00501838)(); + return; +} + + +================================================================== + +### FUNC 00161420 (16 bytes) name=norm + +void cv::norm(_InputArray *param_1,_InputArray *param_2,int param_3,_InputArray *param_4) + +{ + (*(code *)PTR_norm_00501840)(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00161430 (16 bytes) name=allocate + +void __thiscall cv::String::allocate(String *this,ulong param_1) + +{ + (*(code *)PTR_allocate_00501848)(); + return; +} + + +================================================================== + +### FUNC 00161440 (16 bytes) name=_Unwind_GetDataRelBase + +void _Unwind_GetDataRelBase(void) + +{ + (*(code *)PTR__Unwind_GetDataRelBase_00501850)(); + return; +} + + +================================================================== + +### FUNC 00161450 (16 bytes) name=dft + +void cv::dft(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4) + +{ + (*(code *)PTR_dft_00501858)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00161460 (16 bytes) name=getTextSize + +void __thiscall +cv::getTextSize(cv *this,String *param_1,int param_2,double param_3,int param_4,int *param_5) + +{ + (*(code *)PTR_getTextSize_00501860)(this,param_1,param_2,param_4); + return; +} + + +================================================================== + +### FUNC 00161470 (16 bytes) name=copyMakeBorder + +void cv::copyMakeBorder(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4, + int param_5,int param_6,int param_7,Scalar_ *param_8) + +{ + (*(code *)PTR_copyMakeBorder_00501868)(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 00161480 (16 bytes) name=offset + +void __thiscall cv::_InputArray::offset(_InputArray *this,int param_1) + +{ + (*(code *)PTR_offset_00501870)(this,param_1); + return; +} + + +================================================================== + +### FUNC 00161490 (32 bytes) name=entry + +void entry(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 001614b0 (32 bytes) name=FUN_001614b0 + +void FUN_001614b0(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 001614d0 (172 bytes) name=FUN_001614d0 + +void FUN_001614d0(Mat *param_1,Mat *param_2) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + long lVar5; + + for (; param_1 != param_2; param_1 = param_1 + 0x60) { + if (*(long *)(param_1 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x38) + 0x14); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar2 == 1) { + cv::Mat::deallocate(param_1); + } + } + *(undefined8 *)(param_1 + 0x38) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + for (lVar5 = 0; (int)lVar5 < *(int *)(param_1 + 4); lVar5 = lVar5 + 1) { + *(undefined4 *)(*(long *)(param_1 + 0x40) + lVar5 * 4) = 0; + } + if (*(Mat **)(param_1 + 0x48) != param_1 + 0x50) { + cv::fastFree(*(Mat **)(param_1 + 0x48)); + } + } + return; +} + + +================================================================== + +### FUNC 0016157c (124 bytes) name=FUN_0016157c + +void FUN_0016157c(long *param_1,long *param_2) + +{ + int iVar1; + char cVar2; + bool bVar3; + undefined *puVar4; + int *piVar5; + + for (; param_1 != param_2; param_1 = param_1 + 1) { + puVar4 = (undefined *)(*param_1 + -0x18); + if (puVar4 != PTR_DAT_00501f30) { + piVar5 = (int *)(*param_1 + -8); + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 < 1) { + operator_delete(puVar4); + } + } + } + return; +} + + +================================================================== + +### FUNC 001615f8 (32 bytes) name=FUN_001615f8 + +void FUN_001615f8(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00161618 (64 bytes) name=FUN_00161618 + +void FUN_00161618(void *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar4 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (0 < iVar4) { + return; + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00161658 (64 bytes) name=FUN_00161658 + +void FUN_00161658(void *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar4 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (0 < iVar4) { + return; + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00161698 (64 bytes) name=FUN_00161698 + +void FUN_00161698(void *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar4 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (0 < iVar4) { + return; + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001616d8 (12 bytes) name=_FINI_0 + +void _FINI_0(void) + +{ + __cxa_finalize(&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 001616e4 (60 bytes) name=_INIT_0 + +void _INIT_0(void) + +{ + FUN_003d38d4(&DAT_00509650); + __cxa_atexit(PTR_FUN_00501b28,&DAT_00509650,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161720 (60 bytes) name=_INIT_1 + +void _INIT_1(void) + +{ + FUN_003d38d4(&DAT_00509688); + __cxa_atexit(PTR_FUN_00501b28,&DAT_00509688,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 0016175c (60 bytes) name=_INIT_2 + +void _INIT_2(void) + +{ + FUN_003d38d4(&DAT_00509690); + __cxa_atexit(PTR_FUN_00501b28,&DAT_00509690,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161798 (60 bytes) name=_INIT_3 + +void _INIT_3(void) + +{ + FUN_003d38d4(&DAT_0052e934); + __cxa_atexit(PTR_FUN_00501b28,&DAT_0052e934,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 001617d4 (60 bytes) name=_INIT_4 + +void _INIT_4(void) + +{ + FUN_003d38d4(&DAT_0052e935); + __cxa_atexit(PTR_FUN_00501b28,&DAT_0052e935,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161810 (60 bytes) name=_INIT_5 + +void _INIT_5(void) + +{ + FUN_003d38d4(&DAT_0052fd68); + __cxa_atexit(PTR_FUN_00501b28,&DAT_0052fd68,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 0016184c (524 bytes) name=_INIT_6 + +void _INIT_6(void) + +{ + undefined *puVar1; + + puVar1 = PTR_gChannelObj_00501f00; + *(undefined4 *)(PTR_gChannelObj_00501f00 + 0x38) = 0; + *(undefined4 *)(puVar1 + 0x78) = 0; + *(undefined4 *)(puVar1 + 0xb8) = 0; + *(undefined4 *)(puVar1 + 0xf8) = 0; + *(undefined4 *)(puVar1 + 0x138) = 0; + *(undefined4 *)(puVar1 + 0x178) = 0; + *(undefined4 *)(puVar1 + 0x1b8) = 0; + *(undefined4 *)(puVar1 + 0x1f8) = 0; + *(undefined4 *)(puVar1 + 0x238) = 0; + *(undefined4 *)(puVar1 + 0x278) = 0; + *(undefined4 *)(puVar1 + 0x2b8) = 0; + *(undefined4 *)(puVar1 + 0x2f8) = 0; + *(undefined4 *)(puVar1 + 0x338) = 0; + *(undefined4 *)(puVar1 + 0x378) = 0; + *(undefined4 *)(puVar1 + 0x3b8) = 0; + *(undefined4 *)(puVar1 + 0x3f8) = 0; + *(undefined4 *)(puVar1 + 0x438) = 0; + *(undefined4 *)(puVar1 + 0x478) = 0; + *(undefined4 *)(puVar1 + 0x4b8) = 0; + *(undefined4 *)(puVar1 + 0x4f8) = 0; + *(undefined4 *)(puVar1 + 0x538) = 0; + *(undefined4 *)(puVar1 + 0x578) = 0; + *(undefined4 *)(puVar1 + 0x5b8) = 0; + *(undefined4 *)(puVar1 + 0x5f8) = 0; + *(undefined4 *)(puVar1 + 0x638) = 0; + *(undefined4 *)(puVar1 + 0x678) = 0; + *(undefined4 *)(puVar1 + 0x6b8) = 0; + *(undefined4 *)(puVar1 + 0x6f8) = 0; + *(undefined4 *)(puVar1 + 0x738) = 0; + *(undefined4 *)(puVar1 + 0x778) = 0; + *(undefined4 *)(puVar1 + 0x7b8) = 0; + *(undefined4 *)(puVar1 + 0x7f8) = 0; + *(undefined4 *)(puVar1 + 0x838) = 0; + *(undefined4 *)(puVar1 + 0x878) = 0; + *(undefined4 *)(puVar1 + 0x8b8) = 0; + *(undefined4 *)(puVar1 + 0x8f8) = 0; + *(undefined4 *)(puVar1 + 0x938) = 0; + *(undefined4 *)(puVar1 + 0x978) = 0; + *(undefined4 *)(puVar1 + 0x9b8) = 0; + *(undefined4 *)(puVar1 + 0x9f8) = 0; + *(undefined4 *)(puVar1 + 0xa38) = 0; + *(undefined4 *)(puVar1 + 0xa78) = 0; + *(undefined4 *)(puVar1 + 0xab8) = 0; + *(undefined4 *)(puVar1 + 0xaf8) = 0; + *(undefined4 *)(puVar1 + 0xb38) = 0; + *(undefined4 *)(puVar1 + 0xb78) = 0; + *(undefined4 *)(puVar1 + 3000) = 0; + *(undefined4 *)(puVar1 + 0xbf8) = 0; + *(undefined4 *)(puVar1 + 0xc38) = 0; + *(undefined4 *)(puVar1 + 0xc78) = 0; + *(undefined4 *)(puVar1 + 0xcb8) = 0; + *(undefined4 *)(puVar1 + 0xcf8) = 0; + *(undefined4 *)(puVar1 + 0xd38) = 0; + *(undefined4 *)(puVar1 + 0xd78) = 0; + *(undefined4 *)(puVar1 + 0xdb8) = 0; + *(undefined4 *)(puVar1 + 0xdf8) = 0; + *(undefined4 *)(puVar1 + 0xe38) = 0; + *(undefined4 *)(puVar1 + 0xe78) = 0; + *(undefined4 *)(puVar1 + 0xeb8) = 0; + *(undefined4 *)(puVar1 + 0xef8) = 0; + *(undefined4 *)(puVar1 + 0xf38) = 0; + *(undefined4 *)(puVar1 + 0xf78) = 0; + *(undefined4 *)(puVar1 + 0xfb8) = 0; + *(undefined4 *)(puVar1 + 0xff8) = 0; + *(undefined4 *)(puVar1 + 0x1038) = 0; + *(undefined4 *)(puVar1 + 0x1078) = 0; + *(undefined4 *)(puVar1 + 0x10b8) = 0; + *(undefined4 *)(puVar1 + 0x10f8) = 0; + *(undefined4 *)(puVar1 + 0x1138) = 0; + *(undefined4 *)(puVar1 + 0x1178) = 0; + *(undefined4 *)(puVar1 + 0x11b8) = 0; + *(undefined4 *)(puVar1 + 0x11f8) = 0; + *(undefined4 *)(puVar1 + 0x1238) = 0; + *(undefined4 *)(puVar1 + 0x1278) = 0; + *(undefined4 *)(puVar1 + 0x12b8) = 0; + *(undefined4 *)(puVar1 + 0x12f8) = 0; + *(undefined4 *)(puVar1 + 0x1338) = 0; + *(undefined4 *)(puVar1 + 0x1378) = 0; + *(undefined4 *)(puVar1 + 0x13b8) = 0; + *(undefined4 *)(puVar1 + 0x13f8) = 0; + *(undefined4 *)(puVar1 + 0x1438) = 0; + *(undefined4 *)(puVar1 + 0x1478) = 0; + *(undefined4 *)(puVar1 + 0x14b8) = 0; + *(undefined4 *)(puVar1 + 0x14f8) = 0; + *(undefined4 *)(puVar1 + 0x1538) = 0; + *(undefined4 *)(puVar1 + 0x1578) = 0; + *(undefined4 *)(puVar1 + 0x15b8) = 0; + *(undefined4 *)(puVar1 + 0x15f8) = 0; + *(undefined4 *)(puVar1 + 0x1638) = 0; + *(undefined4 *)(puVar1 + 0x1678) = 0; + *(undefined4 *)(puVar1 + 0x16b8) = 0; + *(undefined4 *)(puVar1 + 0x16f8) = 0; + *(undefined4 *)(puVar1 + 0x1738) = 0; + *(undefined4 *)(puVar1 + 0x1778) = 0; + *(undefined4 *)(puVar1 + 0x17b8) = 0; + *(undefined4 *)(puVar1 + 0x17f8) = 0; + *(undefined4 *)(puVar1 + 0x1838) = 0; + *(undefined4 *)(puVar1 + 0x1878) = 0; + *(undefined4 *)(puVar1 + 0x18b8) = 0; + *(undefined4 *)(puVar1 + 0x18f8) = 0; + *(undefined4 *)(puVar1 + 0x1938) = 0; + *(undefined4 *)(puVar1 + 0x1978) = 0; + *(undefined4 *)(puVar1 + 0x19b8) = 0; + *(undefined4 *)(puVar1 + 0x19f8) = 0; + *(undefined4 *)(puVar1 + 0x1a38) = 0; + *(undefined4 *)(puVar1 + 0x1a78) = 0; + *(undefined4 *)(puVar1 + 0x1ab8) = 0; + *(undefined4 *)(puVar1 + 0x1af8) = 0; + *(undefined4 *)(puVar1 + 0x1b38) = 0; + *(undefined4 *)(puVar1 + 0x1b78) = 0; + *(undefined4 *)(puVar1 + 0x1bb8) = 0; + *(undefined4 *)(puVar1 + 0x1bf8) = 0; + *(undefined4 *)(puVar1 + 0x1c38) = 0; + *(undefined4 *)(puVar1 + 0x1c78) = 0; + *(undefined4 *)(puVar1 + 0x1cb8) = 0; + *(undefined4 *)(puVar1 + 0x1cf8) = 0; + *(undefined4 *)(puVar1 + 0x1d38) = 0; + *(undefined4 *)(puVar1 + 0x1d78) = 0; + *(undefined4 *)(puVar1 + 0x1db8) = 0; + *(undefined4 *)(puVar1 + 0x1df8) = 0; + *(undefined4 *)(puVar1 + 0x1e38) = 0; + *(undefined4 *)(puVar1 + 0x1e78) = 0; + *(undefined4 *)(puVar1 + 0x1eb8) = 0; + *(undefined4 *)(puVar1 + 0x1ef8) = 0; + *(undefined4 *)(puVar1 + 0x1f38) = 0; + *(undefined4 *)(puVar1 + 0x1f78) = 0; + *(undefined4 *)(puVar1 + 0x1fb8) = 0; + *(undefined4 *)(puVar1 + 0x1ff8) = 0; + return; +} + + +================================================================== + +### FUNC 00161a60 (68 bytes) name=_INIT_7 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void _INIT_7(void) + +{ + uRam0000000000531e58 = _UNK_00161ab8; + _DAT_00531e50 = _DAT_00161ab0; + _DAT_00531e88 = _UNK_00161ae8; + _DAT_00531e80 = _DAT_00161ae0; + uRam0000000000531e78 = _UNK_00161ad8; + _DAT_00531e70 = _DAT_00161ad0; + _DAT_00531e68 = _UNK_00161ac8; + _DAT_00531e60 = _DAT_00161ac0; + return; +} + + +================================================================== + +### FUNC 00161af0 (476 bytes) name=_INIT_8 + +void _INIT_8(void) + +{ + cv::MatOp::MatOp((MatOp *)&DAT_00531f80); + DAT_00531f80 = &PTR_FUN_004fbdb0; + __cxa_atexit(FUN_002eedb4,&DAT_00531f80,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531fa8); + DAT_00531fa8 = &PTR_FUN_004fbea0; + __cxa_atexit(FUN_002eed78,&DAT_00531fa8,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531fb8); + DAT_00531fb8 = &PTR_FUN_004fbf90; + __cxa_atexit(FUN_002eed3c,&DAT_00531fb8,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531f90); + DAT_00531f90 = &PTR_FUN_004fc080; + __cxa_atexit(FUN_002eed00,&DAT_00531f90,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531f88); + DAT_00531f88 = &PTR_FUN_004fc260; + __cxa_atexit(FUN_002eec88,&DAT_00531f88,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531fb0); + DAT_00531fb0 = &PTR_FUN_004fc350; + __cxa_atexit(FUN_002eec4c,&DAT_00531fb0,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531fa0); + DAT_00531fa0 = &PTR_FUN_004fc170; + __cxa_atexit(FUN_002eecc4,&DAT_00531fa0,&DAT_00502000); + cv::MatOp::MatOp((MatOp *)&DAT_00531f70); + DAT_00531f70 = &PTR_FUN_004fc440; + __cxa_atexit(FUN_002eec10,&DAT_00531f70,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161ccc (52 bytes) name=_INIT_9 + +void _INIT_9(void) + +{ + DAT_00531fd0 = 0; + DAT_00531fd4 = 0; + DAT_00531fc8 = 0; + DAT_00531fc0 = 0x3000000; + __cxa_atexit(PTR___InputOutputArray_00501fc8,&DAT_00531fc0,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161d00 (60 bytes) name=_INIT_10 + +void _INIT_10(void) + +{ + FUN_003d38d4(&DAT_00532048); + __cxa_atexit(PTR_FUN_00501b28,&DAT_00532048,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161d3c (32 bytes) name=_INIT_11 + +void _INIT_11(void) + +{ + DAT_005329e8 = 0; + __cxa_atexit(FUN_003684a0,&DAT_005329e8,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161d5c (616 bytes) name=_INIT_12 + +void _INIT_12(void) + +{ + undefined *puVar1; + + CvType::CvType((CvType *)&DAT_005329f0,"opencv-sequence",FUN_0037101c,FUN_00371128,FUN_0037f0ac, + FUN_0037af60,FUN_00371258); + puVar1 = PTR__CvType_00501eb8; + __cxa_atexit(PTR__CvType_00501eb8,&DAT_005329f0,&DAT_00502000); + CvType::CvType((CvType *)&DAT_00532a00,"opencv-sequence-tree",FUN_0037101c,FUN_00371128, + FUN_00386740,FUN_0037af60,FUN_00371258); + __cxa_atexit(puVar1,&DAT_00532a00,&DAT_00502000); + CvType::CvType((CvType *)&DAT_00532a20,"opencv-graph",FUN_00371038,FUN_00371074,FUN_0037dbfc, + FUN_00379700,FUN_00371250); + __cxa_atexit(puVar1,&DAT_00532a20,&DAT_00502000); + CvType::CvType((CvType *)&DAT_00532a08,"opencv-sparse-matrix",FUN_00370f94, + (_func_void_void_ptr_ptr *)PTR_cvReleaseSparseMat_00501898,FUN_0037d574, + FUN_003793b4,(_func_void_ptr_void_ptr *)PTR_cvCloneSparseMat_00501fa0); + __cxa_atexit(puVar1,&DAT_00532a08,&DAT_00502000); + CvType::CvType((CvType *)&DAT_00532a30,"opencv-image",FUN_00371008, + (_func_void_void_ptr_ptr *)PTR_cvReleaseImage_00501be8,FUN_0037bd04,FUN_00379064, + (_func_void_ptr_void_ptr *)PTR_cvCloneImage_00501998); + __cxa_atexit(puVar1,&DAT_00532a30,&DAT_00502000); + CvType::CvType((CvType *)&DAT_00532a28,"opencv-matrix",FUN_00370f2c, + (_func_void_void_ptr_ptr *)PTR_cvReleaseMat_00501e58,FUN_0037d1b8,FUN_00378ef8, + (_func_void_ptr_void_ptr *)PTR_cvCloneMat_00501b08); + __cxa_atexit(puVar1,&DAT_00532a28,&DAT_00502000); + CvType::CvType((CvType *)&DAT_005329f8,"opencv-nd-matrix",FUN_00370f78,cvReleaseMat,FUN_0037c8f8, + FUN_00378d5c,(_func_void_ptr_void_ptr *)PTR_cvCloneMatND_00501e50); + __cxa_atexit(puVar1,&DAT_005329f8,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00161fc4 (136 bytes) name=_INIT_13 + +void _INIT_13(void) + +{ + memset(&DAT_00532ccc,0,0x100); + DAT_00532cc8 = 0; + DAT_00532d30 = 1; + memset(&DAT_00532a8c,0,0x100); + DAT_00532a88 = 0; + DAT_00532a81 = 0; + DAT_00532a82 = 0; + DAT_00532a80 = 0; + DAT_00532a60 = 0; + return; +} + + +================================================================== + +### FUNC 0016204c (92 bytes) name=_INIT_14 + +void _INIT_14(void) + +{ + long lVar1; + Mutex *this; + + lVar1 = 0x1e; + this = (Mutex *)&DAT_00532dd0; + do { + cv::Mutex::Mutex(this); + lVar1 = lVar1 + -1; + this = this + 8; + } while (lVar1 != -1); + __cxa_atexit(FUN_003b82a0,0,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 001620e0 (24 bytes) name=_INIT_15 + +void _INIT_15(void) + +{ + DAT_00535100 = 0; + DAT_00535108 = 0; + DAT_00535110 = 0; + DAT_00535118 = 0; + DAT_00535120 = 0; + return; +} + + +================================================================== + +### FUNC 001620f8 (96 bytes) name=_INIT_16 + +void _INIT_16(void) + +{ + int iVar1; + + DAT_0054513c = false; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar1 = pthread_key_create(&DAT_00545138,FUN_003cf300); + DAT_0054513c = iVar1 == 0; + } + __cxa_atexit(FUN_003cf2e4,&DAT_00545138,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 00162158 (244 bytes) name=_INIT_17 + +void _INIT_17(void) + +{ + if ((DAT_005461e0 & 1) == 0) { + DAT_005461e0 = 1; + } + if ((DAT_005461d8 & 1) == 0) { + DAT_005461d8 = 1; + } + if ((DAT_005461d0 & 1) == 0) { + DAT_005461d0 = 1; + } + if ((DAT_005461c8 & 1) == 0) { + DAT_005461c8 = 1; + } + if ((DAT_005461c0 & 1) == 0) { + DAT_005461c0 = 1; + } + if ((DAT_005461b8 & 1) == 0) { + DAT_005461b8 = 1; + } + if ((DAT_005461b0 & 1) == 0) { + DAT_005461b0 = 1; + } + if ((DAT_005461a8 & 1) == 0) { + DAT_005461a8 = 1; + } + if ((DAT_005461a0 & 1) == 0) { + DAT_005461a0 = 1; + } + if ((DAT_00546198 & 1) == 0) { + DAT_00546198 = 1; + } + if ((DAT_00546190 & 1) == 0) { + DAT_00546190 = 1; + } + if ((DAT_00546188 & 1) == 0) { + DAT_00546188 = 1; + } + return; +} + + +================================================================== + +### FUNC 0016224c (244 bytes) name=_INIT_18 + +void _INIT_18(void) + +{ + if ((DAT_005476b8 & 1) == 0) { + DAT_005476b8 = 1; + } + if ((DAT_005476b0 & 1) == 0) { + DAT_005476b0 = 1; + } + if ((DAT_005476a8 & 1) == 0) { + DAT_005476a8 = 1; + } + if ((DAT_005476a0 & 1) == 0) { + DAT_005476a0 = 1; + } + if ((DAT_00547698 & 1) == 0) { + DAT_00547698 = 1; + } + if ((DAT_00547690 & 1) == 0) { + DAT_00547690 = 1; + } + if ((DAT_00547688 & 1) == 0) { + DAT_00547688 = 1; + } + if ((DAT_00547680 & 1) == 0) { + DAT_00547680 = 1; + } + if ((DAT_00547678 & 1) == 0) { + DAT_00547678 = 1; + } + if ((DAT_00547670 & 1) == 0) { + DAT_00547670 = 1; + } + if ((DAT_00547668 & 1) == 0) { + DAT_00547668 = 1; + } + if ((DAT_00547660 & 1) == 0) { + DAT_00547660 = 1; + } + return; +} + + +================================================================== + +### FUNC 00162340 (76 bytes) name=_INIT_19 + +void _INIT_19(void) + +{ + __cxa_atexit(FUN_00414fac,&PTR_PTR_00509628,&DAT_00502000); + __cxa_atexit(FUN_00414fa8,&PTR_PTR_00509630,&DAT_00502000); + return; +} + + +================================================================== + +### FUNC 0016238c (24 bytes) name=FUN_0016238c + +void FUN_0016238c(code *param_1) + +{ + if (param_1 != (code *)0x0) { + (*param_1)(); + } + return; +} + + +================================================================== + +### FUNC 001623bc (36 bytes) name=CAccumulator + +/* CAccumulator::CAccumulator() */ + +void __thiscall CAccumulator::CAccumulator(CAccumulator *this) + +{ + undefined *puVar1; + + puVar1 = PTR_vtable_00501ad0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined **)this = puVar1 + 0x10; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 8) = 0; + return; +} + + +================================================================== + +### FUNC 001623e0 (80 bytes) name=~CAccumulator + +/* CAccumulator::~CAccumulator() */ + +void __thiscall CAccumulator::~CAccumulator(CAccumulator *this) + +{ + *(undefined **)this = PTR_vtable_00501ad0 + 0x10; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x10) = 0; + if (*(void **)(this + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x18)); + *(undefined8 *)(this + 0x18) = 0; + } + return; +} + + +================================================================== + +### FUNC 00162430 (80 bytes) name=~CAccumulator + +/* CAccumulator::~CAccumulator() */ + +void __thiscall CAccumulator::~CAccumulator(CAccumulator *this) + +{ + *(undefined **)this = PTR_vtable_00501ad0 + 0x10; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x10) = 0; + if (*(void **)(this + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x18)); + } + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00162480 (200 bytes) name=Reset + +/* CAccumulator::Reset(unsigned int, unsigned int, unsigned int) */ + +undefined8 __thiscall CAccumulator::Reset(CAccumulator *this,uint param_1,uint param_2,uint param_3) + +{ + undefined8 uVar1; + void *pvVar2; + + *(undefined4 *)(this + 0x2c) = 0; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x10) = 0; + if (*(void **)(this + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x18)); + *(undefined8 *)(this + 0x18) = 0; + } + uVar1 = 0; + if ((param_1 != 0) && (param_2 < 0x41)) { + if ((param_2 - 1 & param_2) == 0) { + *(undefined4 *)(this + 0x20) = 0; + *(uint *)(this + 0x24) = param_1; + *(uint *)(this + 0x28) = param_2; + pvVar2 = operator_new__((ulong)param_3 + (ulong)(param_1 >> 1) * 4 + 3 & 0x3fffffffc); + *(void **)(this + 8) = pvVar2; + *(ulong *)(this + 0x10) = (long)pvVar2 + (ulong)(param_3 & 0xfffffffe); + if (2 < param_2) { + pvVar2 = operator_new__((ulong)param_1 << 2); + *(void **)(this + 0x18) = pvVar2; + } + uVar1 = 1; + *(undefined4 *)(this + 0x2c) = 1; + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + +================================================================== + +### FUNC 00162548 (988 bytes) name=PushFrame + +/* CAccumulator::PushFrame(unsigned short const*) */ + +undefined8 __thiscall CAccumulator::PushFrame(CAccumulator *this,ushort *param_1) + +{ + ushort *puVar1; + ushort *puVar2; + ulong *puVar3; + uint uVar4; + int iVar5; + int iVar6; + undefined1 auVar7 [16]; + int iVar8; + ushort *puVar9; + ulong *puVar10; + ulong *puVar11; + uint uVar12; + uint uVar13; + ushort *puVar14; + ushort *puVar15; + ulong uVar16; + long lVar17; + ushort uVar18; + ushort uVar19; + ushort uVar20; + ushort uVar21; + ushort uVar22; + ushort uVar23; + ushort uVar24; + undefined2 uVar25; + ushort uVar26; + undefined2 uVar27; + undefined2 uVar28; + undefined2 uVar29; + ushort uVar30; + ushort uVar33; + ushort uVar34; + ushort uVar35; + undefined8 uVar31; + undefined1 auVar32 [16]; + ushort uVar36; + ushort uVar37; + ushort uVar38; + ushort uVar39; + ushort uVar40; + ushort uVar41; + ushort uVar42; + ushort uVar43; + ushort uVar44; + ushort uVar45; + ushort uVar46; + ushort uVar47; + ushort uVar48; + ushort uVar49; + ushort uVar50; + ushort uVar51; + ushort uVar52; + ushort uVar53; + ushort uVar54; + ushort uVar55; + + if (*(int *)(this + 0x2c) == 0) { + return 0; + } + iVar5 = *(int *)(this + 0x20); + iVar6 = *(int *)(this + 0x28); + *(int *)(this + 0x20) = iVar5 + 1; + if (iVar6 == 2) { + if (iVar5 != 0) { + uVar12 = *(uint *)(this + 0x24) >> 2; + if (uVar12 != 0) { + puVar14 = *(ushort **)(this + 0x10); + uVar16 = (ulong)(uVar12 - 1); + if (7 < uVar16 + 1) { + uVar13 = *(uint *)(this + 0x24) >> 2 & 7; + lVar17 = (uVar16 + 1) - (ulong)uVar13; + if ((lVar17 != 0) && + ((param_1 + uVar16 * 4 + 4 <= puVar14 || (puVar14 + uVar16 * 4 + 4 <= param_1)))) { + uVar12 = uVar12 - (int)lVar17; + puVar1 = param_1 + lVar17 * 4; + puVar2 = puVar14 + lVar17 * 4; + do { + uVar18 = *param_1; + uVar30 = param_1[1]; + uVar40 = param_1[2]; + uVar48 = param_1[3]; + uVar19 = param_1[4]; + uVar33 = param_1[5]; + uVar41 = param_1[6]; + uVar49 = param_1[7]; + uVar20 = param_1[8]; + uVar34 = param_1[9]; + uVar42 = param_1[10]; + uVar50 = param_1[0xb]; + uVar21 = param_1[0xc]; + uVar35 = param_1[0xd]; + uVar43 = param_1[0xe]; + uVar51 = param_1[0xf]; + uVar22 = param_1[0x10]; + uVar36 = param_1[0x11]; + uVar44 = param_1[0x12]; + uVar52 = param_1[0x13]; + uVar23 = param_1[0x14]; + uVar37 = param_1[0x15]; + uVar45 = param_1[0x16]; + uVar53 = param_1[0x17]; + uVar24 = param_1[0x18]; + uVar38 = param_1[0x19]; + uVar46 = param_1[0x1a]; + uVar54 = param_1[0x1b]; + uVar26 = param_1[0x1c]; + uVar39 = param_1[0x1d]; + uVar47 = param_1[0x1e]; + uVar55 = param_1[0x1f]; + param_1 = param_1 + 0x20; + lVar17 = lVar17 + -8; + *puVar14 = (ushort)((uint)uVar18 + (uint)*puVar14 >> 1); + puVar14[1] = (ushort)((uint)uVar30 + (uint)puVar14[1] >> 1); + puVar14[2] = (ushort)((uint)uVar40 + (uint)puVar14[2] >> 1); + puVar14[3] = (ushort)((uint)uVar48 + (uint)puVar14[3] >> 1); + puVar14[4] = (ushort)((uint)uVar19 + (uint)puVar14[4] >> 1); + puVar14[5] = (ushort)((uint)uVar33 + (uint)puVar14[5] >> 1); + puVar14[6] = (ushort)((uint)uVar41 + (uint)puVar14[6] >> 1); + puVar14[7] = (ushort)((uint)uVar49 + (uint)puVar14[7] >> 1); + puVar14[8] = (ushort)((uint)uVar20 + (uint)puVar14[8] >> 1); + puVar14[9] = (ushort)((uint)uVar34 + (uint)puVar14[9] >> 1); + puVar14[10] = (ushort)((uint)uVar42 + (uint)puVar14[10] >> 1); + puVar14[0xb] = (ushort)((uint)uVar50 + (uint)puVar14[0xb] >> 1); + puVar14[0xc] = (ushort)((uint)uVar21 + (uint)puVar14[0xc] >> 1); + puVar14[0xd] = (ushort)((uint)uVar35 + (uint)puVar14[0xd] >> 1); + puVar14[0xe] = (ushort)((uint)uVar43 + (uint)puVar14[0xe] >> 1); + puVar14[0xf] = (ushort)((uint)uVar51 + (uint)puVar14[0xf] >> 1); + puVar14[0x10] = (ushort)((uint)uVar22 + (uint)puVar14[0x10] >> 1); + puVar14[0x11] = (ushort)((uint)uVar36 + (uint)puVar14[0x11] >> 1); + puVar14[0x12] = (ushort)((uint)uVar44 + (uint)puVar14[0x12] >> 1); + puVar14[0x13] = (ushort)((uint)uVar52 + (uint)puVar14[0x13] >> 1); + puVar14[0x14] = (ushort)((uint)uVar23 + (uint)puVar14[0x14] >> 1); + puVar14[0x15] = (ushort)((uint)uVar37 + (uint)puVar14[0x15] >> 1); + puVar14[0x16] = (ushort)((uint)uVar45 + (uint)puVar14[0x16] >> 1); + puVar14[0x17] = (ushort)((uint)uVar53 + (uint)puVar14[0x17] >> 1); + puVar14[0x18] = (ushort)((uint)uVar24 + (uint)puVar14[0x18] >> 1); + puVar14[0x19] = (ushort)((uint)uVar38 + (uint)puVar14[0x19] >> 1); + puVar14[0x1a] = (ushort)((uint)uVar46 + (uint)puVar14[0x1a] >> 1); + puVar14[0x1b] = (ushort)((uint)uVar54 + (uint)puVar14[0x1b] >> 1); + puVar14[0x1c] = (ushort)((uint)uVar26 + (uint)puVar14[0x1c] >> 1); + puVar14[0x1d] = (ushort)((uint)uVar39 + (uint)puVar14[0x1d] >> 1); + puVar14[0x1e] = (ushort)((uint)uVar47 + (uint)puVar14[0x1e] >> 1); + puVar14[0x1f] = (ushort)((uint)uVar55 + (uint)puVar14[0x1f] >> 1); + puVar14 = puVar14 + 0x20; + } while (lVar17 != 0); + param_1 = puVar1; + puVar14 = puVar2; + if (uVar13 == 0) goto LAB_00162694; + } + } + do { + uVar12 = uVar12 - 1; + *puVar14 = (ushort)((uint)*param_1 + (uint)*puVar14 >> 1); + puVar14[1] = (ushort)((uint)param_1[1] + (uint)puVar14[1] >> 1); + puVar14[2] = (ushort)((uint)param_1[2] + (uint)puVar14[2] >> 1); + puVar14[3] = (ushort)((uint)param_1[3] + (uint)puVar14[3] >> 1); + param_1 = param_1 + 4; + puVar14 = puVar14 + 4; + } while (uVar12 != 0); + } + goto LAB_00162694; + } + } + else if (iVar6 != 1) { + puVar10 = *(ulong **)(this + 0x18); + if (iVar5 == 0) { + uVar12 = *(uint *)(this + 0x24) >> 2; + if (uVar12 != 0) { + uVar16 = (ulong)(uVar12 - 1) + 1; + if (3 < uVar16) { + uVar13 = *(uint *)(this + 0x24) >> 2 & 3; + lVar17 = uVar16 - uVar13; + if (lVar17 != 0) { + uVar12 = uVar12 - (int)lVar17; + puVar14 = param_1 + lVar17 * 4; + puVar3 = puVar10 + lVar17 * 2; + do { + uVar18 = *param_1; + uVar22 = param_1[1]; + uVar30 = param_1[2]; + uVar36 = param_1[3]; + uVar19 = param_1[4]; + uVar23 = param_1[5]; + uVar33 = param_1[6]; + uVar37 = param_1[7]; + uVar20 = param_1[8]; + uVar24 = param_1[9]; + uVar34 = param_1[10]; + uVar38 = param_1[0xb]; + uVar21 = param_1[0xc]; + uVar26 = param_1[0xd]; + uVar35 = param_1[0xe]; + uVar39 = param_1[0xf]; + param_1 = param_1 + 0x10; + lVar17 = lVar17 + -4; + *(uint *)puVar10 = (uint)uVar18; + *(uint *)((long)puVar10 + 4) = (uint)uVar22; + *(uint *)(puVar10 + 1) = (uint)uVar30; + *(uint *)((long)puVar10 + 0xc) = (uint)uVar36; + *(uint *)(puVar10 + 2) = (uint)uVar19; + *(uint *)((long)puVar10 + 0x14) = (uint)uVar23; + *(uint *)(puVar10 + 3) = (uint)uVar33; + *(uint *)((long)puVar10 + 0x1c) = (uint)uVar37; + *(uint *)(puVar10 + 4) = (uint)uVar20; + *(uint *)((long)puVar10 + 0x24) = (uint)uVar24; + *(uint *)(puVar10 + 5) = (uint)uVar34; + *(uint *)((long)puVar10 + 0x2c) = (uint)uVar38; + *(uint *)(puVar10 + 6) = (uint)uVar21; + *(uint *)((long)puVar10 + 0x34) = (uint)uVar26; + *(uint *)(puVar10 + 7) = (uint)uVar35; + *(uint *)((long)puVar10 + 0x3c) = (uint)uVar39; + puVar10 = puVar10 + 8; + } while (lVar17 != 0); + param_1 = puVar14; + puVar10 = puVar3; + if (uVar13 == 0) goto LAB_00162694; + } + } + do { + uVar31 = *(undefined8 *)param_1; + uVar12 = uVar12 - 1; + puVar10[1] = (ulong)CONCAT24((short)((ulong)uVar31 >> 0x30), + (uint)(ushort)((ulong)uVar31 >> 0x20)); + *puVar10 = (ulong)CONCAT24((short)((ulong)uVar31 >> 0x10),(uint)(ushort)uVar31); + param_1 = param_1 + 4; + puVar10 = puVar10 + 2; + } while (uVar12 != 0); + } + goto LAB_00162694; + } + if (iVar5 + 1 != iVar6) { + uVar12 = *(uint *)(this + 0x24) >> 2; + if (uVar12 != 0) { + uVar16 = (ulong)(uVar12 - 1) + 1; + if (3 < uVar16) { + uVar13 = *(uint *)(this + 0x24) >> 2 & 3; + lVar17 = uVar16 - uVar13; + if (lVar17 != 0) { + uVar12 = uVar12 - (int)lVar17; + puVar14 = param_1 + lVar17 * 4; + puVar3 = puVar10 + lVar17 * 2; + do { + uVar18 = *param_1; + uVar22 = param_1[1]; + uVar30 = param_1[2]; + uVar36 = param_1[3]; + uVar19 = param_1[4]; + uVar23 = param_1[5]; + uVar33 = param_1[6]; + uVar37 = param_1[7]; + uVar20 = param_1[8]; + uVar24 = param_1[9]; + uVar34 = param_1[10]; + uVar38 = param_1[0xb]; + uVar21 = param_1[0xc]; + uVar26 = param_1[0xd]; + uVar35 = param_1[0xe]; + uVar39 = param_1[0xf]; + param_1 = param_1 + 0x10; + lVar17 = lVar17 + -4; + *(uint *)puVar10 = (uint)*puVar10 + (uint)uVar18; + *(uint *)((long)puVar10 + 4) = *(uint *)((long)puVar10 + 4) + (uint)uVar22; + *(uint *)(puVar10 + 1) = (uint)puVar10[1] + (uint)uVar30; + *(uint *)((long)puVar10 + 0xc) = *(uint *)((long)puVar10 + 0xc) + (uint)uVar36; + *(uint *)(puVar10 + 2) = (uint)puVar10[2] + (uint)uVar19; + *(uint *)((long)puVar10 + 0x14) = *(uint *)((long)puVar10 + 0x14) + (uint)uVar23; + *(uint *)(puVar10 + 3) = (uint)puVar10[3] + (uint)uVar33; + *(uint *)((long)puVar10 + 0x1c) = *(uint *)((long)puVar10 + 0x1c) + (uint)uVar37; + *(uint *)(puVar10 + 4) = (uint)puVar10[4] + (uint)uVar20; + *(uint *)((long)puVar10 + 0x24) = *(uint *)((long)puVar10 + 0x24) + (uint)uVar24; + *(uint *)(puVar10 + 5) = (uint)puVar10[5] + (uint)uVar34; + *(uint *)((long)puVar10 + 0x2c) = *(uint *)((long)puVar10 + 0x2c) + (uint)uVar38; + *(uint *)(puVar10 + 6) = (uint)puVar10[6] + (uint)uVar21; + *(uint *)((long)puVar10 + 0x34) = *(uint *)((long)puVar10 + 0x34) + (uint)uVar26; + *(uint *)(puVar10 + 7) = (uint)puVar10[7] + (uint)uVar35; + *(uint *)((long)puVar10 + 0x3c) = *(uint *)((long)puVar10 + 0x3c) + (uint)uVar39; + puVar10 = puVar10 + 8; + } while (lVar17 != 0); + param_1 = puVar14; + puVar10 = puVar3; + if (uVar13 == 0) goto LAB_00162694; + } + } + do { + uVar31 = *(undefined8 *)param_1; + uVar12 = uVar12 - 1; + iVar5 = (int)(*puVar10 >> 0x20) + (uint)(ushort)((ulong)uVar31 >> 0x10); + iVar6 = (int)(puVar10[1] >> 0x20) + (uint)(ushort)((ulong)uVar31 >> 0x30); + puVar10[1] = CONCAT26((short)((uint)iVar6 >> 0x10), + CONCAT24((short)iVar6, + (int)puVar10[1] + (uint)(ushort)((ulong)uVar31 >> 0x20))); + *puVar10 = CONCAT26((short)((uint)iVar5 >> 0x10), + CONCAT24((short)iVar5,(int)*puVar10 + ((uint)uVar31 & 0xffff))); + param_1 = param_1 + 4; + puVar10 = puVar10 + 2; + } while (uVar12 != 0); + } + goto LAB_00162694; + } + puVar14 = *(ushort **)(this + 0x10); + uVar12 = 2; + switch(iVar5) { + case 4: + case 5: + case 6: + case 8: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: +switchD_001625b4_caseD_4: + uVar12 = 0; + uVar13 = *(uint *)(this + 0x24); + break; + case 7: + uVar12 = 3; + uVar13 = *(uint *)(this + 0x24); + break; + case 0xf: + uVar12 = 4; + uVar13 = *(uint *)(this + 0x24); + break; + case 0x1f: + uVar12 = 5; + case 3: + uVar13 = *(uint *)(this + 0x24); + break; + default: + if (iVar5 != 0x3f) goto switchD_001625b4_caseD_4; + uVar12 = 6; + uVar13 = *(uint *)(this + 0x24); + } + if (uVar13 != 0) { + uVar16 = (ulong)(uVar13 - 1); + if (3 < uVar16 + 1) { + uVar4 = uVar13 & 3; + lVar17 = (uVar16 + 1) - (ulong)uVar4; + if ((lVar17 != 0) && + ((param_1 + uVar16 + 1 <= puVar14 || (puVar14 + uVar16 + 1 <= param_1)))) { + uVar13 = uVar13 - (int)lVar17; + puVar3 = (ulong *)((long)puVar10 + lVar17 * 4); + puVar1 = puVar14 + lVar17; + puVar2 = param_1 + lVar17; + puVar9 = param_1; + puVar11 = puVar10; + puVar15 = puVar14; + do { + uVar31 = *(undefined8 *)puVar9; + lVar17 = lVar17 + -4; + iVar5 = (int)*puVar11 + (uint)(ushort)uVar31; + iVar6 = (int)(*puVar11 >> 0x20) + (uint)(ushort)((ulong)uVar31 >> 0x10); + uVar25 = (undefined2)iVar6; + uVar27 = (undefined2)((uint)iVar6 >> 0x10); + iVar6 = (int)puVar11[1] + (uint)(ushort)((ulong)uVar31 >> 0x20); + iVar8 = (int)(puVar11[1] >> 0x20) + (uint)(ushort)((ulong)uVar31 >> 0x30); + uVar28 = (undefined2)iVar8; + uVar29 = (undefined2)((uint)iVar8 >> 0x10); + auVar32._4_2_ = (short)-uVar12; + auVar32._0_4_ = -uVar12; + auVar32._6_2_ = (short)(-uVar12 >> 0x10); + auVar32._8_2_ = (short)-uVar12; + auVar32._10_2_ = (short)(-uVar12 >> 0x10); + auVar32._12_2_ = (short)-uVar12; + auVar32._14_2_ = (short)(-uVar12 >> 0x10); + auVar7._4_2_ = uVar25; + auVar7._0_4_ = iVar5; + auVar7._6_2_ = uVar27; + auVar7._8_2_ = (short)iVar6; + auVar7._10_2_ = (short)((uint)iVar6 >> 0x10); + auVar7._12_2_ = uVar28; + auVar7._14_2_ = uVar29; + auVar32 = NEON_ushl(auVar7,auVar32,4); + *(ulong *)puVar15 = + CONCAT26(auVar32._12_2_, + CONCAT24(auVar32._8_2_,CONCAT22(auVar32._4_2_,auVar32._0_2_))); + puVar11[1] = CONCAT26(uVar29,CONCAT24(uVar28,iVar6)); + *puVar11 = CONCAT26(uVar27,CONCAT24(uVar25,iVar5)); + puVar9 = puVar9 + 4; + puVar11 = puVar11 + 2; + puVar15 = puVar15 + 4; + puVar10 = puVar3; + puVar14 = puVar1; + param_1 = puVar2; + if (lVar17 == 0) goto joined_r0x0016291c; + } while( true ); + } + } + do { + uVar13 = uVar13 - 1; + uVar4 = (uint)*puVar10 + (uint)*param_1; + *puVar14 = (ushort)(uVar4 >> (ulong)uVar12); + *(uint *)puVar10 = uVar4; + puVar10 = (ulong *)((long)puVar10 + 4); + puVar14 = puVar14 + 1; + param_1 = param_1 + 1; + uVar4 = uVar13; +joined_r0x0016291c: + } while (uVar4 != 0); + } + goto LAB_00162694; + } + memcpy(*(void **)(this + 0x10),param_1,(ulong)*(uint *)(this + 0x24) << 1); +LAB_00162694: + if (*(int *)(this + 0x20) != *(int *)(this + 0x28)) { + return 0; + } + *(undefined4 *)(this + 0x20) = 0; + return 1; +} + + +================================================================== + +### FUNC 00162924 (16 bytes) name=Restart + +/* CAccumulator::Restart() */ + +void __thiscall CAccumulator::Restart(CAccumulator *this) + +{ + if (*(int *)(this + 0x2c) != 0) { + *(undefined4 *)(this + 0x20) = 0; + } + return; +} + + +================================================================== + +### FUNC 00162934 (20 bytes) name=FStream + +/* FStream::FStream() */ + +void __thiscall FStream::FStream(FStream *this) + +{ + *(undefined **)this = PTR_vtable_00501f08 + 0x10; + return; +} + + +================================================================== + +### FUNC 00162948 (36 bytes) name=~OFStream + +/* OFStream::~OFStream() */ + +int __thiscall OFStream::~OFStream(OFStream *this) + +{ + int iVar1; + + *(undefined **)this = PTR_vtable_00501f08 + 0x10; + if (*(FILE **)(this + 8) != (FILE *)0x0) { + iVar1 = fclose(*(FILE **)(this + 8)); + return iVar1; + } + return 0; +} + + +================================================================== + +### FUNC 0016296c (4 bytes) name=~FStream + +/* FStream::~FStream() */ + +void __thiscall FStream::~FStream(FStream *this) + +{ + code *pcVar1; + + /* WARNING: Does not return */ + pcVar1 = (code *)SoftwareBreakpoint(1,0x162970); + (*pcVar1)(); +} + + +================================================================== + +### FUNC 00162970 (8 bytes) name=GetRaw + +/* FStream::GetRaw() const */ + +undefined8 __thiscall FStream::GetRaw(FStream *this) + +{ + return *(undefined8 *)(this + 8); +} + + +================================================================== + +### FUNC 00162978 (32 bytes) name=IsEof + +/* FStream::IsEof() const */ + +bool __thiscall FStream::IsEof(FStream *this) + +{ + int iVar1; + + iVar1 = feof(*(FILE **)(this + 8)); + return iVar1 != 0; +} + + +================================================================== + +### FUNC 00162998 (88 bytes) name=ReadLine + +/* FStream::ReadLine(char*, int) const */ + +bool __thiscall FStream::ReadLine(FStream *this,char *param_1,int param_2) + +{ + bool bVar1; + int iVar2; + char *pcVar3; + + iVar2 = feof(*(FILE **)(this + 8)); + if (iVar2 == 0) { + pcVar3 = fgets(param_1,param_2,*(FILE **)(this + 8)); + bVar1 = pcVar3 != (char *)0x0; + } + else { + bVar1 = false; + } + return bVar1; +} + + +================================================================== + +### FUNC 001629f0 (56 bytes) name=Read + +/* FStream::Read(void*, unsigned long, unsigned long) const */ + +long __thiscall FStream::Read(FStream *this,void *param_1,ulong param_2,ulong param_3) + +{ + size_t sVar1; + + sVar1 = fread(param_1,param_2,param_3,*(FILE **)(this + 8)); + return sVar1 * param_2; +} + + +================================================================== + +### FUNC 00162a28 (8 bytes) name=GetCurrentPos + +/* FStream::GetCurrentPos() const */ + +void __thiscall FStream::GetCurrentPos(FStream *this) + +{ + ftell(*(FILE **)(this + 8)); + return; +} + + +================================================================== + +### FUNC 00162a30 (32 bytes) name=Seek + +/* FStream::Seek(long, io::seek) const */ + +bool __thiscall FStream::Seek(FStream *this,long param_1,int param_3) + +{ + int iVar1; + + iVar1 = fseek(*(FILE **)(this + 8),param_1,param_3); + return iVar1 == 0; +} + + +================================================================== + +### FUNC 00162a50 (176 bytes) name=OFStream + +/* OFStream::OFStream(char const*, bool) */ + +void __thiscall OFStream::OFStream(OFStream *this,char *param_1,bool param_2) + +{ + FILE *pFVar1; + undefined8 *puVar2; + + *(undefined **)this = PTR_vtable_005019a0 + 0x10; + if (param_2) { + pFVar1 = fopen(param_1,"rb+"); + *(FILE **)(this + 8) = pFVar1; + if (pFVar1 == (FILE *)0x0) { + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "IOError: open file failed1.[IFStream::IFStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,PTR_typeinfo_00501c20,0); + } + } + else { + pFVar1 = fopen(param_1,"wb"); + *(FILE **)(this + 8) = pFVar1; + if (pFVar1 == (FILE *)0x0) { + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "IOError: open file failed2.[IFStream::IFStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,PTR_typeinfo_00501c20,0); + } + } + return; +} + + +================================================================== + +### FUNC 00162b2c (60 bytes) name=~OFStream + +/* OFStream::~OFStream() */ + +void __thiscall OFStream::~OFStream(OFStream *this) + +{ + *(undefined **)this = PTR_vtable_00501f08 + 0x10; + if (*(FILE **)(this + 8) != (FILE *)0x0) { + fclose(*(FILE **)(this + 8)); + } + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00162b68 (32 bytes) name=Flush + +/* OFStream::Flush() const */ + +bool __thiscall OFStream::Flush(OFStream *this) + +{ + int iVar1; + + iVar1 = fflush(*(FILE **)(this + 8)); + return iVar1 == 0; +} + + +================================================================== + +### FUNC 00162b88 (40 bytes) name=Write + +/* OFStream::Write(char const*) const */ + +uint __thiscall OFStream::Write(OFStream *this,char *param_1) + +{ + uint uVar1; + + uVar1 = fputs(param_1,*(FILE **)(this + 8)); + return uVar1 >> 0x1f ^ 1; +} + + +================================================================== + +### FUNC 00162bb0 (48 bytes) name=Write + +/* OFStream::Write(void const*, unsigned long, unsigned long) */ + +bool __thiscall OFStream::Write(OFStream *this,void *param_1,ulong param_2,ulong param_3) + +{ + size_t sVar1; + + sVar1 = fwrite(param_1,param_2,param_3,*(FILE **)(this + 8)); + return sVar1 != 0; +} + + +================================================================== + +### FUNC 00162be0 (80 bytes) name=WriteLine + +/* OFStream::WriteLine(char const*) const */ + +undefined8 __thiscall OFStream::WriteLine(OFStream *this,char *param_1) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = fputs(param_1,*(FILE **)(this + 8)); + if ((iVar1 < 0) || (iVar1 = fputs("\n",*(FILE **)(this + 8)), iVar1 < 0)) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### FUNC 00162c30 (136 bytes) name=GetLength + +/* OFStream::GetLength() const */ + +long __thiscall OFStream::GetLength(OFStream *this) + +{ + int iVar1; + long __off; + long lVar2; + + fflush(*(FILE **)(this + 8)); + iVar1 = feof(*(FILE **)(this + 8)); + __off = ftell(*(FILE **)(this + 8)); + if (iVar1 == 0) { + fseek(*(FILE **)(this + 8),0,2); + lVar2 = ftell(*(FILE **)(this + 8)); + fseek(*(FILE **)(this + 8),__off,0); + __off = lVar2; + } + return __off; +} + + +================================================================== + +### FUNC 00162cb8 (152 bytes) name=IFStream + +/* IFStream::IFStream(char const*) */ + +int __thiscall IFStream::IFStream(IFStream *this,char *param_1) + +{ + undefined *puVar1; + int iVar2; + FILE *__stream; + long lVar3; + undefined8 *puVar4; + + puVar1 = PTR_vtable_00501968; + *(undefined8 *)(this + 0x10) = 0; + *(undefined **)this = puVar1 + 0x10; + __stream = fopen(param_1,"rb"); + *(FILE **)(this + 8) = __stream; + if (__stream != (FILE *)0x0) { + fseek(__stream,0,2); + lVar3 = ftell(*(FILE **)(this + 8)); + *(long *)(this + 0x10) = lVar3; + iVar2 = fseek(*(FILE **)(this + 8),0,0); + return iVar2; + } + puVar4 = (undefined8 *)__cxa_allocate_exception(8); + *puVar4 = "IOError: open file failed.[IFStream::IFStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar4,PTR_typeinfo_00501c20,0); +} + + +================================================================== + +### FUNC 00162d78 (60 bytes) name=~IFStream + +/* IFStream::~IFStream() */ + +void __thiscall IFStream::~IFStream(IFStream *this) + +{ + *(undefined **)this = PTR_vtable_00501f08 + 0x10; + if (*(FILE **)(this + 8) != (FILE *)0x0) { + fclose(*(FILE **)(this + 8)); + } + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00162db4 (8 bytes) name=GetLength + +/* IFStream::GetLength() const */ + +undefined8 __thiscall IFStream::GetLength(IFStream *this) + +{ + return *(undefined8 *)(this + 0x10); +} + + +================================================================== + +### FUNC 00162dbc (1464 bytes) name=CFunctions + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* CFunctions::CFunctions() */ + +int __thiscall CFunctions::CFunctions(CFunctions *this) + +{ + CFunctions *__src; + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + int iVar5; + + *(undefined **)this = PTR_vtable_00501e30 + 0x10; + MutexLock::MutexLock((MutexLock *)(this + 0xf0)); + CAccumulator::CAccumulator((CAccumulator *)(this + 0x1c98)); + CAccumulator::CAccumulator((CAccumulator *)(this + 0x1cc8)); + CAccumulator::CAccumulator((CAccumulator *)(this + 0x1cf8)); + CSmoother::CSmoother((CSmoother *)(this + 0x1d28)); + CSmoother::CSmoother((CSmoother *)(this + 0x1d68)); + memset(this + 8,0,0xa0); + memset(this + 0x1200,0,0xa94); + *(undefined8 *)(this + 0x1db0) = 0; + *(undefined8 *)(this + 0x1da8) = 0; + *(undefined4 *)(this + 0x1dd8) = 0; + *(undefined8 *)(this + 0x1dd0) = 0; + *(undefined8 *)(this + 0x1dc8) = 0; + *(undefined8 *)(this + 0x1dc0) = 0; + *(undefined8 *)(this + 0x1db8) = 0; + memset(this + 0x1de0,0,0x58fc); + uVar2 = _UNK_00436378; + uVar1 = _DAT_00436370; + *(undefined8 *)(this + 0xc4) = 0; + *(undefined8 *)(this + 0xbc) = 0; + *(undefined4 *)(this + 0xb8) = 0x41a00000; + *(undefined8 *)(this + 0xcc) = 0x3f8000003f7f4b1f; + *(undefined8 *)(this + 0xb0) = uVar2; + *(undefined8 *)(this + 0xa8) = uVar1; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + memset(this + 0x118,0,0x70); + *(undefined8 *)(this + 0x76dc) = 0xffff3cb000000008; + *(undefined4 *)(this + 0x76e4) = 3; + *(undefined8 *)(this + 0xd8) = 0; + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + uVar3 = _UNK_00436398; + uVar2 = _DAT_00436390; + uVar1 = _DAT_00436380; + *(undefined8 *)(this + 0x1c0) = _DAT_00436388; + *(undefined8 *)(this + 0x1b8) = uVar1; + uVar4 = _UNK_004363a8; + uVar1 = _DAT_004363a0; + *(undefined8 *)(this + 0x1b0) = uVar3; + *(undefined8 *)(this + 0x1a8) = uVar2; + uVar3 = _UNK_004363b8; + uVar2 = _DAT_004363b0; + *(undefined8 *)(this + 0x1a0) = uVar4; + *(undefined8 *)(this + 0x198) = uVar1; + uVar4 = _UNK_004363c8; + uVar1 = _DAT_004363c0; + __src = this + 0x188; + *(undefined8 *)(this + 400) = uVar3; + *(undefined8 *)__src = uVar2; + uVar3 = _UNK_004363d8; + uVar2 = _DAT_004363d0; + *(undefined8 *)(this + 0x200) = uVar4; + *(undefined8 *)(this + 0x1f8) = uVar1; + uVar4 = _DAT_004363e8; + uVar1 = _DAT_004363e0; + *(undefined8 *)(this + 0x1f0) = uVar3; + *(undefined8 *)(this + 0x1e8) = uVar2; + uVar3 = _UNK_004363f8; + uVar2 = _DAT_004363f0; + *(undefined8 *)(this + 0x1e0) = uVar4; + *(undefined8 *)(this + 0x1d8) = uVar1; + uVar4 = _UNK_00436408; + uVar1 = _DAT_00436400; + *(undefined8 *)(this + 0x1d0) = uVar3; + *(undefined8 *)(this + 0x1c8) = uVar2; + uVar3 = _UNK_00436418; + uVar2 = _DAT_00436410; + *(undefined8 *)(this + 0x240) = uVar4; + *(undefined8 *)(this + 0x238) = uVar1; + uVar4 = _UNK_00436428; + uVar1 = _DAT_00436420; + *(undefined8 *)(this + 0x230) = uVar3; + *(undefined8 *)(this + 0x228) = uVar2; + uVar3 = _UNK_00436438; + uVar2 = _DAT_00436430; + *(undefined8 *)(this + 0x220) = uVar4; + *(undefined8 *)(this + 0x218) = uVar1; + uVar4 = _UNK_00436448; + uVar1 = _DAT_00436440; + *(undefined8 *)(this + 0x210) = uVar3; + *(undefined8 *)(this + 0x208) = uVar2; + uVar3 = _UNK_00436458; + uVar2 = _DAT_00436450; + *(undefined8 *)(this + 0x280) = uVar4; + *(undefined8 *)(this + 0x278) = uVar1; + uVar4 = _UNK_00436468; + uVar1 = _DAT_00436460; + *(undefined8 *)(this + 0x270) = uVar3; + *(undefined8 *)(this + 0x268) = uVar2; + uVar3 = _UNK_00436478; + uVar2 = _DAT_00436470; + *(undefined8 *)(this + 0x260) = uVar4; + *(undefined8 *)(this + 600) = uVar1; + uVar4 = _UNK_00436488; + uVar1 = _DAT_00436480; + *(undefined8 *)(this + 0x250) = uVar3; + *(undefined8 *)(this + 0x248) = uVar2; + uVar3 = _UNK_00436498; + uVar2 = _DAT_00436490; + *(undefined8 *)(this + 0x2c0) = uVar4; + *(undefined8 *)(this + 0x2b8) = uVar1; + uVar4 = _UNK_004364a8; + uVar1 = _DAT_004364a0; + *(undefined8 *)(this + 0x2b0) = uVar3; + *(undefined8 *)(this + 0x2a8) = uVar2; + uVar3 = _UNK_004364b8; + uVar2 = _DAT_004364b0; + *(undefined8 *)(this + 0x2a0) = uVar4; + *(undefined8 *)(this + 0x298) = uVar1; + uVar4 = _DAT_004364c8; + uVar1 = _DAT_004364c0; + *(undefined8 *)(this + 0x290) = uVar3; + *(undefined8 *)(this + 0x288) = uVar2; + uVar3 = _UNK_004364d8; + uVar2 = _DAT_004364d0; + *(undefined8 *)(this + 0x300) = uVar4; + *(undefined8 *)(this + 0x2f8) = uVar1; + uVar4 = _UNK_004364e8; + uVar1 = _DAT_004364e0; + *(undefined8 *)(this + 0x2f0) = uVar3; + *(undefined8 *)(this + 0x2e8) = uVar2; + uVar3 = _UNK_004364f8; + uVar2 = _DAT_004364f0; + *(undefined8 *)(this + 0x2e0) = uVar4; + *(undefined8 *)(this + 0x2d8) = uVar1; + uVar4 = _UNK_00436508; + uVar1 = _DAT_00436500; + *(undefined8 *)(this + 0x2d0) = uVar3; + *(undefined8 *)(this + 0x2c8) = uVar2; + uVar3 = _UNK_00436518; + uVar2 = _DAT_00436510; + *(undefined8 *)(this + 0x340) = uVar4; + *(undefined8 *)(this + 0x338) = uVar1; + uVar4 = _UNK_00436528; + uVar1 = _DAT_00436520; + *(undefined8 *)(this + 0x330) = uVar3; + *(undefined8 *)(this + 0x328) = uVar2; + uVar3 = _UNK_00436538; + uVar2 = _DAT_00436530; + *(undefined8 *)(this + 800) = uVar4; + *(undefined8 *)(this + 0x318) = uVar1; + uVar4 = _UNK_00436548; + uVar1 = _DAT_00436540; + *(undefined8 *)(this + 0x310) = uVar3; + *(undefined8 *)(this + 0x308) = uVar2; + uVar3 = _UNK_00436558; + uVar2 = _DAT_00436550; + *(undefined8 *)(this + 0x380) = uVar4; + *(undefined8 *)(this + 0x378) = uVar1; + uVar4 = _UNK_00436568; + uVar1 = _DAT_00436560; + *(undefined8 *)(this + 0x370) = uVar3; + *(undefined8 *)(this + 0x368) = uVar2; + uVar3 = _UNK_00436578; + uVar2 = _DAT_00436570; + *(undefined8 *)(this + 0x360) = uVar4; + *(undefined8 *)(this + 0x358) = uVar1; + uVar4 = _UNK_00436588; + uVar1 = _DAT_00436580; + *(undefined8 *)(this + 0x350) = uVar3; + *(undefined8 *)(this + 0x348) = uVar2; + uVar3 = _UNK_00436598; + uVar2 = _DAT_00436590; + *(undefined8 *)(this + 0x3c0) = uVar4; + *(undefined8 *)(this + 0x3b8) = uVar1; + uVar4 = _UNK_004365a8; + uVar1 = _DAT_004365a0; + *(undefined8 *)(this + 0x3b0) = uVar3; + *(undefined8 *)(this + 0x3a8) = uVar2; + uVar3 = _UNK_004365b8; + uVar2 = _DAT_004365b0; + *(undefined8 *)(this + 0x3a0) = uVar4; + *(undefined8 *)(this + 0x398) = uVar1; + uVar4 = _UNK_004365c8; + uVar1 = _DAT_004365c0; + *(undefined8 *)(this + 0x390) = uVar3; + *(undefined8 *)(this + 0x388) = uVar2; + uVar3 = _UNK_004365d8; + uVar2 = _DAT_004365d0; + *(undefined8 *)(this + 0x400) = uVar4; + *(undefined8 *)(this + 0x3f8) = uVar1; + uVar4 = _UNK_004365e8; + uVar1 = _DAT_004365e0; + *(undefined8 *)(this + 0x3f0) = uVar3; + *(undefined8 *)(this + 1000) = uVar2; + uVar3 = _UNK_004365f8; + uVar2 = _DAT_004365f0; + *(undefined8 *)(this + 0x3e0) = uVar4; + *(undefined8 *)(this + 0x3d8) = uVar1; + uVar4 = _UNK_00436608; + uVar1 = _DAT_00436600; + *(undefined8 *)(this + 0x3d0) = uVar3; + *(undefined8 *)(this + 0x3c8) = uVar2; + uVar3 = _UNK_00436618; + uVar2 = _DAT_00436610; + *(undefined8 *)(this + 0x440) = uVar4; + *(undefined8 *)(this + 0x438) = uVar1; + uVar4 = _UNK_00436628; + uVar1 = _DAT_00436620; + *(undefined8 *)(this + 0x430) = uVar3; + *(undefined8 *)(this + 0x428) = uVar2; + uVar3 = _UNK_00436638; + uVar2 = _DAT_00436630; + *(undefined8 *)(this + 0x420) = uVar4; + *(undefined8 *)(this + 0x418) = uVar1; + uVar4 = _UNK_00436648; + uVar1 = _DAT_00436640; + *(undefined8 *)(this + 0x410) = uVar3; + *(undefined8 *)(this + 0x408) = uVar2; + uVar3 = _UNK_00436658; + uVar2 = _DAT_00436650; + *(undefined8 *)(this + 0x480) = uVar4; + *(undefined8 *)(this + 0x478) = uVar1; + uVar4 = _UNK_00436668; + uVar1 = _DAT_00436660; + *(undefined8 *)(this + 0x470) = uVar3; + *(undefined8 *)(this + 0x468) = uVar2; + uVar3 = _UNK_00436678; + uVar2 = _DAT_00436670; + *(undefined8 *)(this + 0x460) = uVar4; + *(undefined8 *)(this + 0x458) = uVar1; + uVar4 = _UNK_00436688; + uVar1 = _DAT_00436680; + *(undefined8 *)(this + 0x450) = uVar3; + *(undefined8 *)(this + 0x448) = uVar2; + uVar3 = _UNK_00436698; + uVar2 = _DAT_00436690; + *(undefined8 *)(this + 0x4c0) = uVar4; + *(undefined8 *)(this + 0x4b8) = uVar1; + uVar4 = _DAT_004366a8; + uVar1 = _DAT_004366a0; + *(undefined8 *)(this + 0x4b0) = uVar3; + *(undefined8 *)(this + 0x4a8) = uVar2; + uVar3 = _UNK_004366b8; + uVar2 = _DAT_004366b0; + *(undefined8 *)(this + 0x4a0) = uVar4; + *(undefined8 *)(this + 0x498) = uVar1; + uVar4 = _UNK_004366c8; + uVar1 = _DAT_004366c0; + *(undefined8 *)(this + 0x490) = uVar3; + *(undefined8 *)(this + 0x488) = uVar2; + uVar3 = _UNK_004366d8; + uVar2 = _DAT_004366d0; + *(undefined8 *)(this + 0x500) = uVar4; + *(undefined8 *)(this + 0x4f8) = uVar1; + uVar4 = _UNK_004366e8; + uVar1 = _DAT_004366e0; + *(undefined8 *)(this + 0x4f0) = uVar3; + *(undefined8 *)(this + 0x4e8) = uVar2; + uVar3 = _UNK_004366f8; + uVar2 = _DAT_004366f0; + *(undefined8 *)(this + 0x4e0) = uVar4; + *(undefined8 *)(this + 0x4d8) = uVar1; + uVar4 = _UNK_00436708; + uVar1 = _DAT_00436700; + *(undefined8 *)(this + 0x4d0) = uVar3; + *(undefined8 *)(this + 0x4c8) = uVar2; + uVar3 = _UNK_00436718; + uVar2 = _DAT_00436710; + *(undefined8 *)(this + 0x540) = uVar4; + *(undefined8 *)(this + 0x538) = uVar1; + uVar4 = _UNK_00436728; + uVar1 = _DAT_00436720; + *(undefined8 *)(this + 0x530) = uVar3; + *(undefined8 *)(this + 0x528) = uVar2; + uVar3 = _UNK_00436738; + uVar2 = _DAT_00436730; + *(undefined8 *)(this + 0x520) = uVar4; + *(undefined8 *)(this + 0x518) = uVar1; + uVar4 = _UNK_00436748; + uVar1 = _DAT_00436740; + *(undefined8 *)(this + 0x510) = uVar3; + *(undefined8 *)(this + 0x508) = uVar2; + uVar3 = _UNK_00436758; + uVar2 = _DAT_00436750; + *(undefined8 *)(this + 0x580) = uVar4; + *(undefined8 *)(this + 0x578) = uVar1; + uVar4 = _UNK_00436768; + uVar1 = _DAT_00436760; + *(undefined8 *)(this + 0x570) = uVar3; + *(undefined8 *)(this + 0x568) = uVar2; + *(undefined8 *)(this + 0x560) = uVar4; + *(undefined8 *)(this + 0x558) = uVar1; + uVar1 = _DAT_00436770; + *(undefined8 *)(this + 0x550) = _UNK_00436778; + *(undefined8 *)(this + 0x548) = uVar1; + memcpy(this + 0x5b0,__src,0x400); + memcpy(this + 0x9d8,__src,0x400); + memcpy(this + 0xe00,__src,0x400); + iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return iVar5; +} + + +================================================================== + +### FUNC 001643e8 (220 bytes) name=MutexLock + +/* MutexLock::MutexLock() */ + +void __thiscall MutexLock::MutexLock(MutexLock *this) + +{ + long lVar1; + int iVar2; + undefined8 *puVar3; + char *pcVar4; + pthread_mutexattr_t apStack_30 [2]; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + iVar2 = pthread_mutexattr_init(apStack_30); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_settype(apStack_30,1); + if (iVar2 == 0) { + iVar2 = pthread_mutex_init((pthread_mutex_t *)this,apStack_30); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_destroy(apStack_30); + if (iVar2 == 0) { + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar4 = "pthread_mutexattr_destroy failed\n"; + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar4 = "pthread_mutex_init failed\n"; + } + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar4 = "pthread_mutexattr_settype failed\n"; + } + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar4 = "pthread_mutexattr_init failed\n"; + } + *puVar3 = pcVar4; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,PTR_typeinfo_00501c20,0); +} + + +================================================================== + +### FUNC 001644c4 name=SetColorPalette DECOMPILE FAILED + +### FUNC 00168c60 (20 bytes) name=~MutexLock + +/* MutexLock::~MutexLock() */ + +int __thiscall MutexLock::~MutexLock(MutexLock *this) + +{ + int iVar1; + + iVar1 = pthread_mutex_destroy((pthread_mutex_t *)this); + return iVar1; +} + + +================================================================== + +### FUNC 00168c78 (128 bytes) name=~CFunctions + +/* CFunctions::~CFunctions() */ + +int __thiscall CFunctions::~CFunctions(CFunctions *this) + +{ + int iVar1; + + *(undefined **)this = PTR_vtable_00501e30 + 0x10; + ReleaseMemory(this); + CSmoother::~CSmoother((CSmoother *)(this + 0x1d68)); + CSmoother::~CSmoother((CSmoother *)(this + 0x1d28)); + CAccumulator::~CAccumulator((CAccumulator *)(this + 0x1cf8)); + CAccumulator::~CAccumulator((CAccumulator *)(this + 0x1cc8)); + CAccumulator::~CAccumulator((CAccumulator *)(this + 0x1c98)); + iVar1 = pthread_mutex_destroy((pthread_mutex_t *)(this + 0xf0)); + return iVar1; +} + + +================================================================== + +### FUNC 00168d50 (460 bytes) name=ReleaseMemory + +/* CFunctions::ReleaseMemory() */ + +int __thiscall CFunctions::ReleaseMemory(CFunctions *this) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + *(undefined4 *)(this + 0x1dd0) = 0; + *(undefined4 *)(this + 0x1200) = 0; + *(undefined4 *)(this + 0x1638) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + if (*(void **)(this + 0x118) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x118)); + *(undefined8 *)(this + 0x118) = 0; + } + if (*(void **)(this + 0x120) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x120)); + *(undefined8 *)(this + 0x120) = 0; + } + if (*(void **)(this + 0x128) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x128)); + *(undefined8 *)(this + 0x128) = 0; + } + *(undefined8 *)(this + 0x138) = 0; + *(undefined8 *)(this + 0x130) = 0; + *(undefined8 *)(this + 0x148) = 0; + *(undefined8 *)(this + 0x140) = 0; + if (*(void **)(this + 0x150) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x150)); + *(undefined8 *)(this + 0x150) = 0; + } + *(undefined8 *)(this + 0x158) = 0; + if (*(void **)(this + 0x170) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x170)); + *(undefined8 *)(this + 0x170) = 0; + } + if (*(void **)(this + 0x178) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x178)); + *(undefined8 *)(this + 0x178) = 0; + } + if (*(void **)(this + 0xd8) != (void *)0x0) { + operator_delete__(*(void **)(this + 0xd8)); + *(undefined8 *)(this + 0xd8) = 0; + } + if (*(void **)(this + 0x180) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x180)); + *(undefined8 *)(this + 0x180) = 0; + } + if (*(void **)(this + 0x160) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x160)); + *(undefined8 *)(this + 0x160) = 0; + } + if (*(void **)(this + 0x168) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x168)); + *(undefined8 *)(this + 0x168) = 0; + } + if (*(void **)(this + 0x1458) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x1458)); + *(undefined8 *)(this + 0x1458) = 0; + } + if (*(void **)(this + 0x1460) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x1460)); + *(undefined8 *)(this + 0x1460) = 0; + } + if (*(void **)(this + 0x1468) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x1468)); + *(undefined8 *)(this + 0x1468) = 0; + } + memset(this + 0x1200,0,0x438); + CAccumulator::Reset((CAccumulator *)(this + 0x1c98),0,0,0); + CAccumulator::Reset((CAccumulator *)(this + 0x1cc8),0,0,0); + CAccumulator::Reset((CAccumulator *)(this + 0x1cf8),0,0,0); + CSmoother::Reset((CSmoother *)(this + 0x1d28),0,0,0,0); + CSmoother::Reset((CSmoother *)(this + 0x1d68),0,0,0,0); + memset(this + 0x1de0,0,0x58f0); + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return iVar1; +} + + +================================================================== + +### FUNC 00168f1c (12 bytes) name=FUN_00168f1c + +void FUN_00168f1c(void) + +{ + __cxa_begin_catch(); + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 00168f28 (36 bytes) name=~CFunctions + +/* CFunctions::~CFunctions() */ + +void __thiscall CFunctions::~CFunctions(CFunctions *this) + +{ + ~CFunctions(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00168f4c (180 bytes) name=ChangeBMPSize + +/* CFunctions::ChangeBMPSize(unsigned int, unsigned int) */ + +undefined8 __thiscall CFunctions::ChangeBMPSize(CFunctions *this,uint param_1,uint param_2) + +{ + uint uVar1; + void *pvVar2; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + if ((((*(int *)(this + 0xe0) != 0) && (param_2 != 0)) && (3 < param_1)) && ((param_1 & 3) == 0)) { + uVar1 = param_2 * param_1; + if ((uint)(*(int *)(this + 0x1db4) * *(int *)(this + 0x1db0)) < uVar1) { + if (*(void **)(this + 0xd8) != (void *)0x0) { + operator_delete__(*(void **)(this + 0xd8)); + *(undefined8 *)(this + 0xd8) = 0; + } + pvVar2 = operator_new__((ulong)uVar1); + *(void **)(this + 0xd8) = pvVar2; + } + *(uint *)(this + 0x1db0) = param_1; + *(uint *)(this + 0x1db4) = param_2; + *(uint *)(this + 0x76d4) = uVar1; + *(uint *)(this + 0x9b4) = param_1; + *(uint *)(this + 0x9b8) = param_2; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return 1; +} + + +================================================================== + +### FUNC 00169000 (1188 bytes) name=Reset + +/* CFunctions::Reset(struct_IntrinsicPara const*) */ + +void __thiscall CFunctions::Reset(CFunctions *this,struct_IntrinsicPara *param_1) + +{ + pthread_mutex_t *__mutex; + CFunctions *pCVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + long lVar6; + int iVar7; + undefined4 uVar8; + void *pvVar9; + void *pvVar10; + CFunctions *this_00; + Logging *this_01; + undefined4 *puVar11; + ulong uVar12; + ulong uVar13; + undefined8 uVar14; + Logging aLStack_f8 [24]; + Logging aLStack_e0 [24]; + Logging aLStack_c8 [24]; + Logging aLStack_b0 [24]; + Logging aLStack_98 [24]; + Logging aLStack_80 [24]; + long local_68; + + lVar6 = tpidr_el0; + local_68 = *(long *)(lVar6 + 0x28); + ReleaseMemory(this); + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + *(undefined8 *)(this + 0x76dc) = 0xffff3cb000000008; + *(undefined4 *)(this + 0x76e4) = 3; + uVar14 = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0x1dc0) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x1db8) = uVar14; + *(undefined8 *)(this + 0x1dc8) = *(undefined8 *)(param_1 + 0x20); + uVar14 = *(undefined8 *)param_1; + *(undefined8 *)(this + 0x1db0) = *(undefined8 *)(param_1 + 8); + *(undefined8 *)(this + 0x1da8) = uVar14; + uVar2 = *(uint *)(this + 0x1dc0); + if ((((((uVar2 - 4 < 0x3d) && ((uVar2 - 1 & uVar2) == 0)) && + ((*(uint *)(this + 0x1dc4) - 1 & (*(uint *)(this + 0x1dc4) | 0xffffffc0)) == 0)) && + ((*(int *)(this + 0x1dc8) - 1U < 2 && (*(int *)(this + 0x1dcc) != 0)))) && + ((uVar3 = *(uint *)(this + 0x1da8), 3 < uVar3 && + (((uVar3 & 3) == 0 && (*(int *)(this + 0x1dac) != 0)))))) && + ((uVar4 = *(uint *)(this + 0x1db0), 3 < uVar4 && + (((((uVar4 & 3) == 0 && (*(int *)(this + 0x1db4) != 0)) && + (uVar5 = *(uint *)(this + 0x1db8), 3 < uVar5)) && + (((uVar5 & 3) == 0 && (*(int *)(this + 0x1dbc) != 0)))))))) { + uVar3 = *(int *)(this + 0x1dac) * uVar3; + uVar12 = (ulong)uVar3; + uVar5 = *(int *)(this + 0x1dbc) * uVar5; + pCVar1 = this + 0x76d0; + iVar7 = *(int *)(this + 0x1db4) * uVar4; + *(uint *)pCVar1 = uVar3; + *(int *)(this + 0x76d4) = iVar7; + *(uint *)(this + 0x76d8) = uVar5; + pvVar9 = operator_new__((ulong)(uVar3 * 3) << 1); + uVar13 = uVar12 * 2; + *(void **)(this + 0x128) = pvVar9; + pvVar10 = operator_new__(uVar13); + *(void **)(this + 0x168) = pvVar10; + pvVar10 = operator_new__(uVar12); + *(void **)(this + 0x170) = pvVar10; + pvVar10 = operator_new__(uVar12 << 2); + *(void **)(this + 0x178) = pvVar10; + pvVar10 = operator_new__(uVar12); + *(void **)(this + 0x160) = pvVar10; + pvVar10 = operator_new__((ulong)uVar5); + *(void **)(this + 0x180) = pvVar10; + pvVar10 = operator_new__(uVar13); + *(void **)(this + 0x118) = pvVar10; + pvVar10 = operator_new__(uVar12 << 2); + *(void **)(this + 0x120) = pvVar10; + pvVar10 = operator_new__((ulong)(uVar4 * 3 + iVar7)); + *(void **)(this + 0xd8) = pvVar10; + *(void **)(this + 0x130) = pvVar9; + *(void **)(this + 0x138) = (void *)((long)pvVar9 + uVar13); + *(void **)(this + 0x148) = (void *)((long)((long)pvVar9 + uVar13) + uVar13); + iVar7 = CAccumulator::Reset((CAccumulator *)(this + 0x1c98),uVar3,uVar2,0); + if (iVar7 == 0) { + mag::Logging::Logging(aLStack_98,4); + MStream::operator<<((MStream *)aLStack_98,"Failed to create baseline accmulator"); + this_01 = aLStack_98; + } + else { + this_00 = (CFunctions *) + CAccumulator::Reset((CAccumulator *)(this + 0x1cc8),*(uint *)pCVar1, + *(uint *)(this + 0x1dc4),0); + if ((int)this_00 == 0) { + mag::Logging::Logging(aLStack_b0,4); + MStream::operator<<((MStream *)aLStack_b0,"Failed to create frame accmulator"); + this_01 = aLStack_b0; + } + else if ((*(uint *)(this + 0x1dc4) < 2) || + (this_00 = (CFunctions *) + CAccumulator::Reset((CAccumulator *)(this + 0x1cf8),*(uint *)pCVar1, + *(uint *)(this + 0x1dc4),0), (int)this_00 != 0)) { + if ((*(uint *)(this + 0x1dc8) < 2) || + (this_00 = (CFunctions *) + CSmoother::Reset((CSmoother *)(this + 0x1d28),*(uint *)pCVar1, + *(uint *)(this + 0x1dc8) - 1,0,0), (int)this_00 != 0)) { + if ((*(uint *)(this + 0x1dcc) < 2) || + (this_00 = (CFunctions *) + CSmoother::Reset((CSmoother *)(this + 0x1d68),*(uint *)pCVar1, + *(uint *)(this + 0x1dcc),1,0), (int)this_00 != 0)) { + *(undefined4 *)(this + 0x5ac) = 0; + *(undefined8 *)(this + 0x5a4) = 0; + *(undefined8 *)(this + 0x59c) = 0; + *(undefined4 *)(this + 0x58c) = *(undefined4 *)(this + 0x1da8); + *(undefined4 *)(this + 0x590) = *(undefined4 *)(this + 0x1dac); + *(undefined4 *)(this + 0x588) = 0x28; + *(undefined8 *)(this + 0x594) = 0x80001; + *(undefined4 *)(this + 0x9d4) = 0; + *(undefined8 *)(this + 0x9cc) = 0; + *(undefined8 *)(this + 0x9c4) = 0; + *(undefined4 *)(this + 0x9b0) = 0x28; + *(undefined4 *)(this + 0x9b4) = *(undefined4 *)(this + 0x1db0); + *(undefined4 *)(this + 0x9b8) = *(undefined4 *)(this + 0x1db4); + *(undefined8 *)(this + 0x9bc) = 0x80001; + *(undefined4 *)(this + 0xdfc) = 0; + *(undefined8 *)(this + 0xdf4) = 0; + *(undefined8 *)(this + 0xdec) = 0; + *(undefined4 *)(this + 0xdd8) = 0x28; + *(undefined4 *)(this + 0xddc) = *(undefined4 *)(this + 0x1db8); + *(undefined4 *)(this + 0xde0) = *(undefined4 *)(this + 0x1dbc); + *(undefined8 *)(this + 0xde4) = 0x80001; + CalTaoAtm(this_00,(struct_FixPara *)(this + 0xa8)); + *(undefined4 *)(this + 0xe0) = 1; + pthread_mutex_unlock(__mutex); + uVar8 = *(undefined4 *)(this + 0xe0); + goto LAB_001693a0; + } + mag::Logging::Logging(aLStack_f8,4); + MStream::operator<<((MStream *)aLStack_f8,"Failed to create std smoother"); + this_01 = aLStack_f8; + } + else { + mag::Logging::Logging(aLStack_e0,4); + MStream::operator<<((MStream *)aLStack_e0,"Failed to create temperature smoother"); + this_01 = aLStack_e0; + } + } + else { + mag::Logging::Logging(aLStack_c8,4); + MStream::operator<<((MStream *)aLStack_c8,"Failed to create frame accmulator"); + this_01 = aLStack_c8; + } + } + mag::Logging::~Logging(this_01); + iVar7 = pthread_mutex_unlock(__mutex); + puVar11 = (undefined4 *)__errno(iVar7); + uVar8 = 0; + *puVar11 = 0xe4ae0003; + } + else { + mag::Logging::Logging(aLStack_80,4); + MStream::operator<<((MStream *)aLStack_80, + "Failed to configurate CFunctions due to parameter error"); + mag::Logging::~Logging(aLStack_80); + iVar7 = pthread_mutex_unlock(__mutex); + puVar11 = (undefined4 *)__errno(iVar7); + uVar8 = 0; + *puVar11 = 0xe4ae0001; + } +LAB_001693a0: + if (*(long *)(lVar6 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar8); +} + + +================================================================== + +### FUNC 001694f4 (392 bytes) name=CalTaoAtm + +/* CFunctions::CalTaoAtm(struct_FixPara*) */ + +float __thiscall CFunctions::CalTaoAtm(CFunctions *this,struct_FixPara *param_1) + +{ + float fVar1; + undefined4 *puVar2; + int iVar3; + float fVar4; + float fVar5; + double dVar6; + double dVar7; + double dVar8; + float fVar9; + + if (param_1 == (struct_FixPara *)0x0) { + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0001; + fVar4 = 0.0; + } + else if ((((*(float *)param_1 <= 0.0) || (*(float *)(param_1 + 0x10) <= 0.0)) || + (fVar4 = *(float *)(param_1 + 0xc), fVar4 < 0.0)) || (1.0 < fVar4)) { + *(undefined4 *)(param_1 + 0x24) = 0x3f800000; + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0001; + fVar4 = 1.0; + } + else { + iVar3 = (int)*(float *)(param_1 + 8); + if (0x22 < iVar3) { + iVar3 = 0x23; + } + if (iVar3 < -0x18) { + iVar3 = -0x19; + } + fVar5 = SQRT(fVar4 * *(float *)(&UNK_00439b74 + (long)iVar3 * 4)); + if (NAN(fVar5)) { + fVar5 = sqrtf(fVar4 * *(float *)(&UNK_00439b74 + (long)iVar3 * 4)); + } + dVar6 = DAT_00439510; + fVar1 = DAT_004394ec; + fVar4 = DAT_004394e8; + fVar9 = *(float *)(param_1 + 0x10); + dVar8 = 0.0; + fVar5 = fVar5 * DAT_004394e4; + dVar7 = 0.0; + if (0.0 < *(float *)(param_1 + 0x14)) { + dVar7 = pow((double)*(float *)(param_1 + 0x14),DAT_00439510); + dVar7 = dVar7 * dVar6; + } + if (0.0 < *(float *)(param_1 + 0x18)) { + dVar8 = pow((double)*(float *)(param_1 + 0x18),DAT_00439518); + dVar8 = dVar8 * 6.5; + } + dVar6 = exp((double)(*(float *)param_1 * + (fVar5 + fVar4 + fVar1 / fVar9 + (float)(dVar7 + dVar8)) * DAT_004394f0)); + fVar4 = (float)dVar6; + *(float *)(param_1 + 0x24) = fVar4; + } + return fVar4; +} + + +================================================================== + +### FUNC 0016967c (244 bytes) name=PushBaselineRaw + +/* CFunctions::PushBaselineRaw(unsigned short const*, int) */ + +int __thiscall CFunctions::PushBaselineRaw(CFunctions *this,ushort *param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + int iVar1; + + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + if (*(int *)(this + 0xe0) == 0) { + pthread_mutex_unlock(__mutex); + iVar1 = 0; + } + else { + if (param_2 != 0) { + *(undefined4 *)(this + 0xe4) = 0; + *(undefined8 *)(this + 0x1dec) = 0; + *(undefined8 *)(this + 0x1de4) = 0; + CAccumulator::Restart((CAccumulator *)(this + 0x1c98)); + CAccumulator::Restart((CAccumulator *)(this + 0x1cc8)); + if (1 < *(uint *)(this + 0x1dc4)) { + CAccumulator::Restart((CAccumulator *)(this + 0x1cf8)); + } + if (1 < *(uint *)(this + 0x1dc8)) { + CSmoother::Restart((CSmoother *)(this + 0x1d28)); + } + CSmoother::Restart((CSmoother *)(this + 0x1d68)); + } + iVar1 = CAccumulator::PushFrame((CAccumulator *)(this + 0x1c98),param_1); + if (iVar1 != 0) { + *(undefined4 *)(this + 0xe4) = 1; + } + pthread_mutex_unlock(__mutex); + } + return iVar1; +} + + +================================================================== + +### FUNC 00169770 (620 bytes) name=SelectCaliCurve + +/* CFunctions::SelectCaliCurve() */ + +CFunctions * __thiscall CFunctions::SelectCaliCurve(CFunctions *this) + +{ + long lVar1; + uint uVar2; + uint uVar3; + FILE *__stream; + size_t sVar5; + size_t sVar6; + ulong uVar7; + int iVar8; + ulong uVar9; + long lVar10; + int iVar11; + long lVar12; + CFunctions *pCVar4; + + *(undefined4 *)(this + 0x1208) = 0; + uVar9 = 0; + do { + uVar7 = uVar9; + uVar3 = (uint)uVar7; + if (*(int *)(this + 0x1310) - 2 <= uVar7) { + uVar9 = (ulong)(uVar3 + 1); + break; + } + uVar9 = uVar7 + 1; + } while (*(int *)(this + (uVar9 & 0xffffffff) * 4 + 0x131c) < *(int *)(this + 0x3c)); + *(uint *)(this + 0x15f8) = uVar3; + iVar11 = *(int *)(this + 0x130c); + iVar8 = *(int *)(this + 0x76d0); + uVar2 = *(uint *)(this + 0x1314); + pCVar4 = this; + if (uVar3 <= (uint)uVar9) { + uVar3 = *(int *)(this + 0x1318) + uVar2 + iVar8 * (iVar11 * 3 + -1) * 2; + uVar9 = uVar7 & 0xffffffff; + do { + if (*(int *)(this + uVar9 * 4 + 0x1470) == 0) { + uVar2 = access((char *)(this + 0x120c),0); + pCVar4 = (CFunctions *)(ulong)uVar2; + if (uVar2 != 0) { +LAB_001699a8: + *(undefined4 *)(this + 0x1200) = 0; + return pCVar4; + } + __stream = fopen((char *)(this + 0x120c),"rb"); + fseek(__stream,(ulong)*(uint *)(this + uVar9 * 4 + 0x14c0),0); + sVar5 = fread((void *)(*(long *)(this + 0x1458) + + (ulong)*(uint *)(this + uVar9 * 4 + 0x1510)),1,(ulong)uVar3,__stream); + if ((*(int *)(this + uVar9 * 4 + 0x140c) != 0) && + ((uint)uVar9 <= *(int *)(this + 0x1310) - 2U)) { + fseek(__stream,(ulong)*(uint *)(this + uVar9 * 4 + 0x1560),0); + sVar6 = fread((void *)(*(long *)(this + 0x1468) + + (ulong)*(uint *)(this + uVar9 * 4 + 0x15ac)),4, + (ulong)(uint)(*(int *)(this + uVar9 * 4 + 0x140c) * 10),__stream); + if ((sVar6 & 0xffffffff) << 2 != + (ulong)(uint)(*(int *)(this + uVar9 * 4 + 0x140c) * 10) * 4) { + uVar3 = fclose(__stream); + *(undefined4 *)(this + 0x1200) = 0; + return (CFunctions *)(ulong)uVar3; + } + } + uVar2 = fclose(__stream); + pCVar4 = (CFunctions *)(ulong)uVar2; + if (uVar3 != (uint)sVar5) goto LAB_001699a8; + *(undefined4 *)(this + uVar9 * 4 + 0x1470) = 1; + uVar7 = (ulong)*(uint *)(this + 0x15f8); + } + uVar2 = (uint)uVar9 + 1; + uVar9 = (ulong)uVar2; + } while (uVar2 <= (int)uVar7 + 1U); + iVar11 = *(int *)(this + 0x130c); + uVar2 = *(uint *)(this + 0x1314); + iVar8 = *(int *)(this + 0x76d0); + } + lVar12 = (uVar7 & 0xffffffff) * 4; + lVar10 = (ulong)(uint)((iVar11 + -1) * iVar8) * 2; + lVar1 = *(long *)(this + 0x1458) + (ulong)*(uint *)(this + lVar12 + 0x1510); + *(long *)(this + 0x1600) = lVar1; + *(ulong *)(this + 0x1618) = lVar1 + lVar10 + (ulong)(uVar2 & 0xfffffffe); + lVar1 = *(long *)(this + 0x1458) + (ulong)*(uint *)(this + (ulong)((int)uVar7 + 1) * 4 + 0x1510); + *(long *)(this + 0x1608) = lVar1; + *(ulong *)(this + 0x1620) = lVar1 + lVar10 + (ulong)(uVar2 & 0xfffffffe); + *(ulong *)(this + 0x1630) = *(long *)(this + 0x1468) + (ulong)*(uint *)(this + lVar12 + 0x15ac); + return pCVar4; +} + + +================================================================== + +### FUNC 001699dc (484 bytes) name=DoSomething + +/* CFunctions::DoSomething(int, unsigned int) */ + +int __thiscall CFunctions::DoSomething(CFunctions *this,int param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + ulong uVar3; + uint uVar4; + long lVar5; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + if ((*(int *)(this + 0xe0) == 0) || (*(int *)(this + 0x1200) == 0)) goto LAB_00169ba8; + if (param_1 == 0) { + SelectCaliCurve(this); + if ((*(int *)(this + 0x1200) != 0) && (*(int *)(this + 0x1204) != 0)) { + GenerateVolatileLens(this); + } + goto LAB_00169ba8; + } + if ((param_1 == 1) && (1 < param_2)) { + DAT_00509654 = 0; + uVar4 = (*(int *)(this + 0x130c) + -1) * *(int *)(this + 0x76d0); + DAT_00509660 = *(int *)(this + 0x130c) * *(int *)(this + 0x76d0) * 2; + uVar1 = 0; + if (param_2 - 1 != 0) { + uVar1 = ((param_2 + DAT_00509660 + uVar4) - 2) / (param_2 - 1); + } + DAT_00509664 = uVar1 + 7 & 0xfffffff8; + uVar3 = 0; + DAT_00509658 = 0; + DAT_0050965c = uVar4; + if (0 < (int)uVar4) goto LAB_00169a98; +LAB_00169b28: + uVar4 = 0; + } + else { + if (param_1 < 1) goto LAB_00169ba8; + uVar3 = (ulong)DAT_00509654; + uVar4 = DAT_0050965c - DAT_00509654; + if (uVar4 == 0 || (int)DAT_0050965c < (int)DAT_00509654) goto LAB_00169b28; +LAB_00169a98: + uVar3 = -(uVar3 >> 0x1f) & 0xfffffffe00000000 | uVar3 << 1; + if ((int)DAT_00509664 <= (int)uVar4) { + uVar4 = DAT_00509664; + } + InterpolateShort(this,(short *)(*(long *)(this + 0x1600) + uVar3), + (short *)(*(long *)(this + 0x1608) + uVar3), + (short *)(*(long *)(this + 0x1610) + uVar3),uVar4); + DAT_00509654 = DAT_00509654 + uVar4; + } + uVar1 = DAT_00509664 - uVar4; + if (uVar1 != 0 && (int)uVar4 <= (int)DAT_00509664) { + if (DAT_00509658 < DAT_00509660) { + lVar5 = (long)DAT_00509658 * 2; + uVar4 = DAT_00509660 - DAT_00509658; + if ((int)uVar1 <= DAT_00509660 - DAT_00509658) { + uVar4 = uVar1; + } + InterpolateUShort(this,(ushort *)(*(long *)(this + 0x1618) + lVar5), + (ushort *)(*(long *)(this + 0x1620) + lVar5), + (ushort *)(*(long *)(this + 0x1628) + lVar5),uVar4); + DAT_00509658 = DAT_00509658 + uVar4; + if (DAT_00509658 == DAT_00509660) { + *(undefined4 *)(this + 0x1208) = 1; + } + } + } +LAB_00169ba8: + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return iVar2; +} + + +================================================================== + +### FUNC 00169bc0 (720 bytes) name=GenerateVolatileLens + +/* CFunctions::GenerateVolatileLens() */ + +void __thiscall CFunctions::GenerateVolatileLens(CFunctions *this) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + int iVar7; + long lVar8; + float fVar9; + uint local_70 [11]; + int local_44 [11]; + long local_18; + + lVar6 = tpidr_el0; + local_18 = *(long *)(lVar6 + 0x28); + if ((*(int *)(this + 0x1200) != 0) && (*(int *)(this + 0x1204) != 0)) { + iVar1 = *(int *)(this + 0x131c) + *(int *)(this + 0x1320); + if (iVar1 < 0) { + iVar1 = iVar1 + 1; + } + iVar1 = iVar1 >> 1; + if (*(float *)(this + 0x74) == 0.0) { + *(undefined4 *)(this + 0x167c) = 1; + *(undefined4 *)(this + 0x1714) = *(undefined4 *)(this + 0x76dc); + *(int *)(this + 0x1718) = (*(int *)(this + 0x76e0) - iVar1) + *(int *)(this + 0x3c); + } + else { + iVar3 = *(int *)(this + 0x3c); + fVar9 = (*(float *)(this + 0x74) * (float)(iVar3 - iVar1)) / DAT_004394f4; + *(undefined4 *)(this + 0x167c) = 10; + fVar9 = fVar9 + 1.0; + iVar4 = *(int *)(this + 0x76e0); + uVar5 = *(uint *)(this + 0x76e4); + iVar7 = 0; + lVar8 = 0; + if (fVar9 <= DAT_004394f8) { + fVar9 = DAT_004394f8; + } + do { + uVar2 = (iVar1 - iVar4) + (int)(fVar9 * (float)(iVar7 - iVar3)) >> (uVar5 & 0x1f); + uVar2 = uVar2 & ((int)uVar2 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar2) { + uVar2 = 0xffff; + } + *(int *)((long)local_44 + lVar8) = iVar7; + *(uint *)((long)local_70 + lVar8) = uVar2; + lVar8 = lVar8 + 4; + iVar7 = iVar7 + 10000; + } while (lVar8 != 0x2c); + uVar5 = local_70[1] - local_70[0]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[1] - local_44[0]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x1680) = local_70[1]; + *(uint *)(this + 0x1714) = uVar2; + *(uint *)(this + 0x1718) = local_44[0] - local_70[0] * uVar2; + *(uint *)(this + 0x1684) = local_70[2]; + uVar5 = local_70[2] - local_70[1]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[2] - local_44[1]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x171c) = uVar2; + *(uint *)(this + 0x1720) = local_44[1] - local_70[1] * uVar2; + *(uint *)(this + 0x1688) = local_70[3]; + uVar5 = local_70[3] - local_70[2]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[3] - local_44[2]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x1724) = uVar2; + *(uint *)(this + 0x1728) = local_44[2] - local_70[2] * uVar2; + *(uint *)(this + 0x168c) = local_70[4]; + uVar5 = local_70[4] - local_70[3]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[4] - local_44[3]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x172c) = uVar2; + *(uint *)(this + 0x1730) = local_44[3] - local_70[3] * uVar2; + *(uint *)(this + 0x1690) = local_70[5]; + uVar5 = local_70[5] - local_70[4]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[5] - local_44[4]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x1734) = uVar2; + *(uint *)(this + 0x1738) = local_44[4] - local_70[4] * uVar2; + *(uint *)(this + 0x1694) = local_70[6]; + uVar5 = local_70[6] - local_70[5]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[6] - local_44[5]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x173c) = uVar2; + *(uint *)(this + 0x1740) = local_44[5] - local_70[5] * uVar2; + *(uint *)(this + 0x1698) = local_70[7]; + uVar5 = local_70[7] - local_70[6]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[7] - local_44[6]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x1744) = uVar2; + *(uint *)(this + 0x1748) = local_44[6] - local_70[6] * uVar2; + *(uint *)(this + 0x169c) = local_70[8]; + uVar5 = local_70[8] - local_70[7]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[8] - local_44[7]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x174c) = uVar2; + *(uint *)(this + 0x1750) = local_44[7] - local_70[7] * uVar2; + *(uint *)(this + 0x16a0) = local_70[9]; + uVar5 = local_70[9] - local_70[8]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[9] - local_44[8]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x1754) = uVar2; + *(uint *)(this + 0x1758) = local_44[8] - local_70[8] * uVar2; + *(uint *)(this + 0x16a4) = local_70[10]; + uVar5 = local_70[10] - local_70[9]; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = ((local_44[10] - local_44[9]) + (uVar5 >> 1)) / uVar5; + } + *(uint *)(this + 0x175c) = uVar2; + *(uint *)(this + 0x1760) = local_44[9] - local_70[9] * uVar2; + } + } + if (*(long *)(lVar6 + 0x28) == local_18) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00169e90 (648 bytes) name=InterpolateShort + +/* CFunctions::InterpolateShort(short const*, short const*, short*, unsigned int) */ + +void __thiscall +CFunctions::InterpolateShort + (CFunctions *this,short *param_1,short *param_2,short *param_3,uint param_4) + +{ + short *psVar1; + short *psVar2; + short *psVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined1 auVar10 [16]; + undefined8 uVar11; + undefined8 uVar12; + undefined1 auVar13 [16]; + bool bVar14; + ulong uVar15; + long lVar16; + short sVar17; + short sVar18; + short sVar19; + short sVar20; + short sVar21; + short sVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + + iVar5 = *(int *)(this + 0x3c); + if ((iVar5 < *(int *)(this + 0x131c)) || + (*(int *)(this + (ulong)(*(int *)(this + 0x1310) - 1) * 4 + 0x131c) < iVar5)) { + bVar14 = false; + } + else { + bVar14 = true; + } + iVar7 = *(int *)(this + (ulong)(*(uint *)(this + 0x15f8) + 1) * 4 + 0x131c) - + *(int *)(this + (ulong)*(uint *)(this + 0x15f8) * 4 + 0x131c); + iVar6 = 0; + if (iVar7 != 0) { + iVar6 = ((iVar5 - *(int *)(this + (ulong)*(uint *)(this + 0x15f8) * 4 + 0x131c)) * 0x1000) / + iVar7; + } + if (iVar6 < -0x3ffe) { + iVar6 = -0x3fff; + } + if (0x3ffe < iVar6) { + iVar6 = 0x3fff; + } + if (bVar14) { + if (param_4 != 0) { + uVar15 = (ulong)(param_4 - 1); + if (7 < uVar15 + 1) { + uVar4 = param_4 & 7; + lVar16 = (uVar15 + 1) - (ulong)uVar4; + if (lVar16 != 0) { + if ((param_1 + uVar15 + 1 <= param_3 || param_3 + uVar15 + 1 <= param_1) && + (param_2 + uVar15 + 1 <= param_3 || param_3 + uVar15 + 1 <= param_2)) { + param_4 = param_4 - (int)lVar16; + psVar1 = param_1 + lVar16; + psVar2 = param_2 + lVar16; + psVar3 = param_3 + lVar16; + do { + uVar9 = *(undefined8 *)(param_1 + 4); + sVar22 = (short)((ulong)uVar9 >> 0x30); + uVar8 = *(undefined8 *)param_1; + sVar19 = (short)((ulong)uVar8 >> 0x10); + sVar20 = (short)((ulong)uVar8 >> 0x20); + sVar21 = (short)((ulong)uVar8 >> 0x30); + uVar12 = *(undefined8 *)(param_2 + 4); + uVar11 = *(undefined8 *)param_2; + lVar16 = lVar16 + -8; + sVar17 = (short)((ulong)uVar9 >> 0x10); + sVar18 = (short)((ulong)uVar9 >> 0x20); + *(ulong *)(param_3 + 4) = + CONCAT26((short)((uint)(((int)(short)((ulong)uVar12 >> 0x30) - (int)sVar22) * + iVar6) >> 0xc) + sVar22, + CONCAT24((short)((uint)(((int)(short)((ulong)uVar12 >> 0x20) - + (int)sVar18) * iVar6) >> 0xc) + sVar18, + CONCAT22((short)((uint)(((int)(short)((ulong)uVar12 >> 0x10) - + (int)sVar17) * iVar6) >> 0xc) + sVar17, + (short)((uint)(((int)(short)uVar12 - (int)(short)uVar9 + ) * iVar6) >> 0xc) + (short)uVar9))); + *(ulong *)param_3 = + CONCAT26(sVar21 + (short)((uint)(((int)(short)((ulong)uVar11 >> 0x30) - + (int)sVar21) * iVar6) >> 0xc), + CONCAT24(sVar20 + (short)((uint)(((int)(short)((ulong)uVar11 >> 0x20) - + (int)sVar20) * iVar6) >> 0xc), + CONCAT22(sVar19 + (short)((uint)(((int)(short)((ulong)uVar11 >> + 0x10) - + (int)sVar19) * iVar6) >> 0xc), + (short)uVar8 + + (short)((uint)(((int)(short)uVar11 - (int)(short)uVar8 + ) * iVar6) >> 0xc)))); + param_1 = param_1 + 8; + param_2 = param_2 + 8; + param_3 = param_3 + 8; + } while (lVar16 != 0); + param_1 = psVar1; + param_2 = psVar2; + param_3 = psVar3; + if (uVar4 == 0) { + return; + } + } + } + } + do { + param_4 = param_4 - 1; + *param_3 = *param_1 + (short)((uint)(((int)*param_2 - (int)*param_1) * iVar6) >> 0xc); + param_1 = param_1 + 1; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + } while (param_4 != 0); + } + } + else if (param_4 != 0) { + uVar15 = (ulong)(param_4 - 1); + if (7 < uVar15 + 1) { + uVar4 = param_4 & 7; + lVar16 = (uVar15 + 1) - (ulong)uVar4; + if (lVar16 != 0) { + if ((param_1 + uVar15 + 1 <= param_3 || param_3 + uVar15 + 1 <= param_1) && + (param_2 + uVar15 + 1 <= param_3 || param_3 + uVar15 + 1 <= param_2)) { + param_4 = param_4 - (int)lVar16; + psVar1 = param_1 + lVar16; + psVar2 = param_2 + lVar16; + psVar3 = param_3 + lVar16; + do { + lVar16 = lVar16 + -8; + auVar23._0_4_ = (((int)param_2[4] - (int)param_1[4]) * iVar6 >> 0xc) + (int)param_1[4]; + auVar23._4_4_ = (((int)param_2[5] - (int)param_1[5]) * iVar6 >> 0xc) + (int)param_1[5]; + auVar23._8_4_ = (((int)param_2[6] - (int)param_1[6]) * iVar6 >> 0xc) + (int)param_1[6]; + auVar23._12_4_ = (((int)param_2[7] - (int)param_1[7]) * iVar6 >> 0xc) + (int)param_1[7]; + auVar24._8_2_ = 0x8000; + auVar24._0_8_ = 0xffff8000ffff8000; + auVar24._10_2_ = 0xffff; + auVar24._12_2_ = 0x8000; + auVar24._14_2_ = 0xffff; + auVar13._4_4_ = (int)param_1[1] + (((int)param_2[1] - (int)param_1[1]) * iVar6 >> 0xc); + auVar13._0_4_ = (int)*param_1 + (((int)*param_2 - (int)*param_1) * iVar6 >> 0xc); + auVar13._8_4_ = (int)param_1[2] + (((int)param_2[2] - (int)param_1[2]) * iVar6 >> 0xc); + auVar13._12_4_ = (int)param_1[3] + (((int)param_2[3] - (int)param_1[3]) * iVar6 >> 0xc); + auVar25 = NEON_smax(auVar13,auVar24,4); + auVar26._8_2_ = 0x8000; + auVar26._0_8_ = 0xffff8000ffff8000; + auVar26._10_2_ = 0xffff; + auVar26._12_2_ = 0x8000; + auVar26._14_2_ = 0xffff; + auVar24 = NEON_smax(auVar23,auVar26,4); + auVar10._8_2_ = 0x7fff; + auVar10._0_8_ = 0x7fff00007fff; + auVar10._10_2_ = 0; + auVar10._12_2_ = 0x7fff; + auVar10._14_2_ = 0; + auVar26 = NEON_smin(auVar25,auVar10,4); + auVar25._8_2_ = 0x7fff; + auVar25._0_8_ = 0x7fff00007fff; + auVar25._10_2_ = 0; + auVar25._12_2_ = 0x7fff; + auVar25._14_2_ = 0; + auVar24 = NEON_smin(auVar24,auVar25,4); + param_3[4] = auVar24._0_2_; + param_3[5] = auVar24._4_2_; + param_3[6] = auVar24._8_2_; + param_3[7] = auVar24._12_2_; + *param_3 = auVar26._0_2_; + param_3[1] = auVar26._4_2_; + param_3[2] = auVar26._8_2_; + param_3[3] = auVar26._12_2_; + param_1 = param_1 + 8; + param_2 = param_2 + 8; + param_3 = param_3 + 8; + } while (lVar16 != 0); + param_1 = psVar1; + param_2 = psVar2; + param_3 = psVar3; + if (uVar4 == 0) { + return; + } + } + } + } + do { + param_4 = param_4 - 1; + iVar5 = (int)*param_1 + (((int)*param_2 - (int)*param_1) * iVar6 >> 0xc); + if (iVar5 < -0x7fff) { + iVar5 = -0x8000; + } + if (0x7ffe < iVar5) { + iVar5 = 0x7fff; + } + *param_3 = (short)iVar5; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + } while (param_4 != 0); + } + return; +} + + +================================================================== + +### FUNC 0016a118 (640 bytes) name=InterpolateUShort + +/* CFunctions::InterpolateUShort(unsigned short const*, unsigned short const*, unsigned short*, + unsigned int) */ + +void __thiscall +CFunctions::InterpolateUShort + (CFunctions *this,ushort *param_1,ushort *param_2,ushort *param_3,uint param_4) + +{ + ushort *puVar1; + ushort *puVar2; + ushort *puVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + bool bVar12; + ulong uVar13; + long lVar14; + ushort uVar15; + ushort uVar16; + ushort uVar17; + ushort uVar18; + ushort uVar19; + ushort uVar20; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + + iVar5 = *(int *)(this + 0x3c); + if ((iVar5 < *(int *)(this + 0x131c)) || + (*(int *)(this + (ulong)(*(int *)(this + 0x1310) - 1) * 4 + 0x131c) < iVar5)) { + bVar12 = false; + } + else { + bVar12 = true; + } + iVar7 = *(int *)(this + (ulong)(*(uint *)(this + 0x15f8) + 1) * 4 + 0x131c) - + *(int *)(this + (ulong)*(uint *)(this + 0x15f8) * 4 + 0x131c); + iVar6 = 0; + if (iVar7 != 0) { + iVar6 = ((iVar5 - *(int *)(this + (ulong)*(uint *)(this + 0x15f8) * 4 + 0x131c)) * 0x1000) / + iVar7; + } + if (iVar6 < -0x3ffe) { + iVar6 = -0x3fff; + } + if (0x3ffe < iVar6) { + iVar6 = 0x3fff; + } + if (bVar12) { + if (param_4 != 0) { + uVar13 = (ulong)(param_4 - 1); + if (7 < uVar13 + 1) { + uVar4 = param_4 & 7; + lVar14 = (uVar13 + 1) - (ulong)uVar4; + if (lVar14 != 0) { + if ((param_1 + uVar13 + 1 <= param_3 || param_3 + uVar13 + 1 <= param_1) && + (param_2 + uVar13 + 1 <= param_3 || param_3 + uVar13 + 1 <= param_2)) { + param_4 = param_4 - (int)lVar14; + puVar1 = param_1 + lVar14; + puVar2 = param_2 + lVar14; + puVar3 = param_3 + lVar14; + do { + uVar9 = *(undefined8 *)(param_1 + 4); + uVar20 = (ushort)((ulong)uVar9 >> 0x30); + uVar8 = *(undefined8 *)param_1; + uVar17 = (ushort)((ulong)uVar8 >> 0x10); + uVar18 = (ushort)((ulong)uVar8 >> 0x20); + uVar19 = (ushort)((ulong)uVar8 >> 0x30); + uVar11 = *(undefined8 *)(param_2 + 4); + uVar10 = *(undefined8 *)param_2; + lVar14 = lVar14 + -8; + uVar15 = (ushort)((ulong)uVar9 >> 0x10); + uVar16 = (ushort)((ulong)uVar9 >> 0x20); + *(ulong *)(param_3 + 4) = + CONCAT26((short)(((uint)(ushort)((ulong)uVar11 >> 0x30) - (uint)uVar20) * iVar6 + >> 0xc) + uVar20, + CONCAT24((short)(((uint)(ushort)((ulong)uVar11 >> 0x20) - (uint)uVar16) + * iVar6 >> 0xc) + uVar16, + CONCAT22((short)(((uint)(ushort)((ulong)uVar11 >> 0x10) - + (uint)uVar15) * iVar6 >> 0xc) + uVar15, + (short)(((uint)(ushort)uVar11 - (uint)(ushort)uVar9) * + iVar6 >> 0xc) + (ushort)uVar9))); + *(ulong *)param_3 = + CONCAT26(uVar19 + (short)(((uint)(ushort)((ulong)uVar10 >> 0x30) - (uint)uVar19) + * iVar6 >> 0xc), + CONCAT24(uVar18 + (short)(((uint)(ushort)((ulong)uVar10 >> 0x20) - + (uint)uVar18) * iVar6 >> 0xc), + CONCAT22(uVar17 + (short)(((uint)(ushort)((ulong)uVar10 >> 0x10 + ) - (uint)uVar17) * + iVar6 >> 0xc), + (ushort)uVar8 + + (short)((((uint)uVar10 & 0xffff) - (uint)(ushort)uVar8 + ) * iVar6 >> 0xc)))); + param_1 = param_1 + 8; + param_2 = param_2 + 8; + param_3 = param_3 + 8; + } while (lVar14 != 0); + param_1 = puVar1; + param_2 = puVar2; + param_3 = puVar3; + if (uVar4 == 0) { + return; + } + } + } + } + do { + param_4 = param_4 - 1; + *param_3 = *param_1 + (short)(((uint)*param_2 - (uint)*param_1) * iVar6 >> 0xc); + param_1 = param_1 + 1; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + } while (param_4 != 0); + } + } + else if (param_4 != 0) { + uVar13 = (ulong)(param_4 - 1); + if (7 < uVar13 + 1) { + uVar4 = param_4 & 7; + lVar14 = (uVar13 + 1) - (ulong)uVar4; + if (lVar14 != 0) { + if ((param_1 + uVar13 + 1 <= param_3 || param_3 + uVar13 + 1 <= param_1) && + (param_2 + uVar13 + 1 <= param_3 || param_3 + uVar13 + 1 <= param_2)) { + param_4 = param_4 - (int)lVar14; + puVar1 = param_1 + lVar14; + puVar2 = param_2 + lVar14; + puVar3 = param_3 + lVar14; + do { + lVar14 = lVar14 + -8; + auVar24._0_4_ = + ((int)(((uint)param_2[4] - (uint)param_1[4]) * iVar6) >> 0xc) + (uint)param_1[4]; + auVar24._4_4_ = + ((int)(((uint)param_2[5] - (uint)param_1[5]) * iVar6) >> 0xc) + (uint)param_1[5]; + auVar24._8_4_ = + ((int)(((uint)param_2[6] - (uint)param_1[6]) * iVar6) >> 0xc) + (uint)param_1[6]; + auVar24._12_4_ = + ((int)(((uint)param_2[7] - (uint)param_1[7]) * iVar6) >> 0xc) + (uint)param_1[7]; + auVar21._4_4_ = + (uint)param_1[1] + ((int)(((uint)param_2[1] - (uint)param_1[1]) * iVar6) >> 0xc); + auVar21._0_4_ = + (uint)*param_1 + ((int)(((uint)*param_2 - (uint)*param_1) * iVar6) >> 0xc); + auVar21._8_4_ = + (uint)param_1[2] + ((int)(((uint)param_2[2] - (uint)param_1[2]) * iVar6) >> 0xc); + auVar21._12_4_ = + (uint)param_1[3] + ((int)(((uint)param_2[3] - (uint)param_1[3]) * iVar6) >> 0xc); + auVar23 = NEON_smax(auVar21,ZEXT416(0),4); + auVar21 = NEON_smax(auVar24,ZEXT416(0),4); + auVar22._8_2_ = 0xffff; + auVar22._0_8_ = 0xffff0000ffff; + auVar22._10_2_ = 0; + auVar22._12_2_ = 0xffff; + auVar22._14_2_ = 0; + auVar24 = NEON_smin(auVar23,auVar22,4); + auVar23._8_2_ = 0xffff; + auVar23._0_8_ = 0xffff0000ffff; + auVar23._10_2_ = 0; + auVar23._12_2_ = 0xffff; + auVar23._14_2_ = 0; + auVar22 = NEON_smin(auVar21,auVar23,4); + param_3[4] = auVar22._0_2_; + param_3[5] = auVar22._4_2_; + param_3[6] = auVar22._8_2_; + param_3[7] = auVar22._12_2_; + *param_3 = auVar24._0_2_; + param_3[1] = auVar24._4_2_; + param_3[2] = auVar24._8_2_; + param_3[3] = auVar24._12_2_; + param_1 = param_1 + 8; + param_2 = param_2 + 8; + param_3 = param_3 + 8; + } while (lVar14 != 0); + param_1 = puVar1; + param_2 = puVar2; + param_3 = puVar3; + if (uVar4 == 0) { + return; + } + } + } + } + do { + param_4 = param_4 - 1; + uVar4 = (uint)*param_1 + ((int)(((uint)*param_2 - (uint)*param_1) * iVar6) >> 0xc); + uVar4 = uVar4 & ((int)uVar4 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar4) { + uVar4 = 0xffff; + } + *param_3 = (ushort)uVar4; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + } while (param_4 != 0); + } + return; +} + + +================================================================== + +### FUNC 0016a398 (132 bytes) name=Raw2Temperature + +/* CFunctions::Raw2Temperature(unsigned short const*) */ + +void __thiscall CFunctions::Raw2Temperature(CFunctions *this,ushort *param_1) + +{ + int iVar1; + int iVar2; + ushort *puVar3; + + iVar1 = *(int *)(this + 0x1dc4); + iVar2 = CAccumulator::PushFrame((CAccumulator *)(this + 0x1cc8),param_1); + if (iVar1 == 1) { + if (*(int *)(this + 0x1cf4) == 0) { + puVar3 = (ushort *)0x0; + *(undefined8 *)(this + 0x4a50) = 0; + } + else { + puVar3 = *(ushort **)(this + 0x1cd8); + *(ushort **)(this + 0x4a50) = puVar3; + } + } + else { + *(int *)(this + 0x1de4) = iVar2; + if (iVar2 == 0) { + return; + } + *(undefined4 *)(this + 0x1de4) = 0; + if (*(int *)(this + 0x1cf4) == 0) { + puVar3 = (ushort *)0x0; + } + else { + puVar3 = *(ushort **)(this + 0x1cd8); + } + } + Calibration(this,puVar3); + *(undefined4 *)(this + 0x1dec) = 1; + return; +} + + +================================================================== + +### FUNC 0016a41c (200 bytes) name=Calibration + +/* CFunctions::Calibration(unsigned short const*) */ + +void __thiscall CFunctions::Calibration(CFunctions *this,ushort *param_1) + +{ + ushort *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + ushort *puVar6; + long lVar7; + ushort *puVar8; + int iVar9; + long lVar10; + ushort *puVar11; + + if ((*(int *)(this + 0x1200) == 0) || (*(int *)(this + 0x1208) == 0)) { + ConvertResponse2Temperature(this,param_1); + return; + } + lVar7 = *(long *)(this + 0x1610); + if (*(int *)(this + 0x1cc4) == 0) { + puVar8 = (ushort *)0x0; + } + else { + puVar8 = *(ushort **)(this + 0x1ca8); + } + iVar9 = *(int *)(this + 0x76d0); + puVar6 = *(ushort **)(this + 0x130); + if (iVar9 != 0) { + lVar10 = *(long *)(this + 0x1628); + iVar3 = iVar9 * 2; + uVar4 = *(int *)(this + 0x130c) - 1; + puVar11 = puVar6; + do { + iVar2 = (int)((uint)*param_1 - (uint)*puVar8) >> 1; + uVar5 = 0; + if (uVar4 != 0) { + do { + if (iVar2 <= *(short *)(lVar7 + (ulong)uVar5 * 2)) break; + uVar5 = uVar5 + 1; + } while (uVar5 < uVar4); + } + puVar1 = (ushort *)(lVar10 + (ulong)(iVar3 * uVar5) * 2); + lVar7 = lVar7 + (ulong)uVar4 * 2; + lVar10 = lVar10 + 4; + uVar5 = (uint)puVar1[1] + ((int)(iVar2 * (uint)*puVar1) >> 0xc); + uVar5 = uVar5 & ((int)uVar5 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar5) { + uVar5 = 0xffff; + } + iVar9 = iVar9 + -1; + *puVar11 = (ushort)uVar5; + param_1 = param_1 + 1; + puVar8 = puVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar9 != 0); + } + BlindCompensation(this,puVar6); + return; +} + + +================================================================== + +### FUNC 0016a4e4 (1888 bytes) name=PushFrame + +/* CFunctions::PushFrame(unsigned short const*, SrcDataType, int, int, int) */ + +undefined4 __thiscall +CFunctions::PushFrame + (CFunctions *this,ushort *param_1,int param_3,int param_4,int param_5,int param_6) + +{ + undefined2 *puVar1; + ushort *puVar2; + pthread_mutex_t *__mutex; + ushort *puVar3; + uint uVar4; + uint uVar5; + short sVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined8 uVar9; + undefined8 uVar10; + int iVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined8 uVar14; + int iVar15; + int iVar16; + undefined8 uVar17; + int iVar18; + unkbyte10 Var19; + int iVar20; + long lVar21; + undefined2 *puVar22; + void *__src; + int iVar23; + undefined4 uVar24; + uint uVar25; + long lVar26; + undefined2 *puVar27; + ushort *puVar28; + ushort uVar29; + ushort uVar30; + undefined2 *puVar31; + ushort uVar32; + ushort *puVar33; + int iVar34; + long lVar35; + ulong uVar36; + ushort uVar37; + int iVar38; + undefined2 *puVar39; + ushort uVar40; + double dVar41; + double __x; + undefined1 auVar42 [16]; + short sVar43; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + lVar21 = GetTickCount(); + if ((param_1 == (ushort *)0x0) || (*(int *)(this + 0xe0) == 0)) { +LAB_0016ac18: + pthread_mutex_unlock(__mutex); + return 0; + } + if (param_3 == 0) { + if (*(int *)(this + 0xe4) == 0) goto LAB_0016ac18; + *(undefined8 *)(this + 0x1e24) = 0; + iVar23 = *(int *)(this + 0x1dc4); + *(undefined4 *)(this + 0x1e2c) = 0; + iVar20 = CAccumulator::PushFrame((CAccumulator *)(this + 0x1cc8),param_1); + if (iVar23 == 1) { + if (*(int *)(this + 0x1cf4) == 0) { + puVar33 = (ushort *)0x0; + *(undefined8 *)(this + 0x4a50) = 0; + } + else { + puVar33 = *(ushort **)(this + 0x1cd8); + *(ushort **)(this + 0x4a50) = puVar33; + } +LAB_0016a5f4: + Calibration(this,puVar33); + goto LAB_0016a5fc; + } + *(int *)(this + 0x1de4) = iVar20; + if (iVar20 != 0) { + *(undefined4 *)(this + 0x1de4) = 0; + if (*(int *)(this + 0x1cf4) == 0) { + puVar33 = (ushort *)0x0; + } + else { + puVar33 = *(ushort **)(this + 0x1cd8); + } + goto LAB_0016a5f4; + } + if (*(int *)(this + 0x1dec) == 0) { + if ((*(int *)(this + 0x1df0) == 0) || (*(int *)(this + 0x1de4) == 0)) { + CopyState(this); + goto LAB_0016ac18; + } + lVar26 = 1; + } + else { + lVar26 = 0; + } + } + else { + *(undefined8 *)(this + 0x1e24) = 0; + *(undefined4 *)(this + 0x1e2c) = 0; + if (param_3 != 1) goto LAB_0016ac18; + memcpy(*(void **)(this + 0x130),param_1,(ulong)*(uint *)(this + 0x76d0) << 1); +LAB_0016a5fc: + lVar26 = 0; + *(undefined4 *)(this + 0x1dec) = 1; + } + __src = *(void **)(this + lVar26 * 8 + 0x130); + *(void **)(this + 0x140) = __src; + *(undefined4 *)(this + lVar26 * 4 + 0x1dec) = 0; + *(undefined4 *)(this + 19000) = 0; + if (*(int *)(this + 0x7c) == 1) { + memcpy(*(void **)(this + 0x168),__src,(ulong)*(uint *)(this + 0x76d0) << 1); + iVar23 = *(int *)(this + 0x1da8); + if (iVar23 != 0) { + uVar25 = *(uint *)(this + 0x1dac); + puVar27 = *(undefined2 **)(this + 0x168); + iVar20 = uVar25 * iVar23; + uVar5 = uVar25 + 3; + if (-1 < (int)uVar25) { + uVar5 = uVar25; + } + puVar31 = (undefined2 *)(*(long *)(this + 0x140) + (long)(int)((uVar25 - 1) * iVar23) * 2); + uVar36 = (ulong)(((int)uVar5 >> 2) - 1); + lVar26 = (long)iVar23; + do { + puVar22 = puVar31; + puVar39 = puVar27; + iVar38 = (int)uVar5 >> 2; + if (6 < uVar25 + 3) { + do { + iVar38 = iVar38 + -1; + *puVar22 = *puVar39; + puVar22 = puVar22 + -lVar26; + *puVar22 = puVar39[1]; + puVar22 = puVar22 + -lVar26; + *puVar22 = puVar39[2]; + puVar1 = puVar39 + 3; + puVar39 = puVar39 + 4; + puVar22[-lVar26] = *puVar1; + puVar22 = puVar22 + -lVar26 + -lVar26; + } while (iVar38 != 0); + puVar31 = (undefined2 *)((long)puVar31 + (uVar36 * -8 + -8) * lVar26); + puVar27 = puVar27 + uVar36 * 4 + 4; + } + iVar23 = iVar23 + -1; + puVar31 = puVar31 + (iVar20 + 1); + } while (iVar23 != 0); + } + } + if (*(uint *)(this + 0x78) != 0) { + Mirror(this,*(uint *)(this + 0x78)); + } + if (*(int *)(this + 0x50) == 0 && param_4 == 0) { + if (*(int *)(this + 0x5c) != 0) { + puVar33 = *(ushort **)(this + 0x140); + iVar23 = *(int *)(this + 0x76d0); + uVar40 = *puVar33; + if ((iVar23 != 0) && (iVar20 = iVar23 + -1, iVar20 != 0)) { + uVar36 = (ulong)(iVar23 - 2) + 1; + puVar28 = puVar33; + uVar30 = uVar40; + if (0xf < uVar36) { + uVar5 = iVar23 + 0xfU & 0xf; + lVar26 = uVar36 - uVar5; + if (lVar26 != 0) { + auVar44._0_8_ = CONCAT26(uVar40,CONCAT24(uVar40,CONCAT22(uVar40,uVar40))); + auVar44._8_2_ = uVar40; + auVar44._10_2_ = uVar40; + auVar44._12_2_ = uVar40; + auVar44._14_2_ = uVar40; + iVar20 = iVar20 - (int)lVar26; + puVar28 = puVar33 + lVar26; + puVar33 = puVar33 + 9; + auVar45._8_8_ = auVar44._8_8_; + auVar45._0_8_ = auVar44._0_8_; + do { + puVar2 = puVar33 + -8; + uVar9 = *(undefined8 *)(puVar33 + -4); + uVar10 = *(undefined8 *)(puVar33 + 4); + Var19 = *(unkbyte10 *)puVar33; + lVar26 = lVar26 + -0x10; + puVar33 = puVar33 + 0x10; + auVar8[9] = (char)((ulong)uVar9 >> 8); + auVar8._0_9_ = *(unkbyte9 *)puVar2; + auVar8[10] = (char)((ulong)uVar9 >> 0x10); + auVar8[0xb] = (char)((ulong)uVar9 >> 0x18); + auVar8[0xc] = (char)((ulong)uVar9 >> 0x20); + auVar8[0xd] = (char)((ulong)uVar9 >> 0x28); + auVar8[0xe] = (char)((ulong)uVar9 >> 0x30); + auVar8[0xf] = (char)((ulong)uVar9 >> 0x38); + auVar44 = NEON_umax(auVar44,auVar8,2); + auVar13._10_2_ = (short)((ulong)uVar10 >> 0x10); + auVar13._0_10_ = Var19; + auVar13._12_2_ = (short)((ulong)uVar10 >> 0x20); + auVar13._14_2_ = (short)((ulong)uVar10 >> 0x30); + auVar45 = NEON_umax(auVar45,auVar13,2); + } while (lVar26 != 0); + auVar44 = NEON_umax(auVar44,auVar45,2); + uVar40 = NEON_umaxv(auVar44,2); + uVar30 = uVar40; + if (uVar5 == 0) goto LAB_0016a8f8; + } + } + do { + uVar40 = puVar28[1]; + iVar20 = iVar20 + -1; + if (uVar40 <= uVar30) { + uVar40 = uVar30; + } + puVar28 = puVar28 + 1; + uVar30 = uVar40; + } while (iVar20 != 0); + } +LAB_0016a8f8: + *(uint *)(this + 0x1df8) = (uint)uVar40; + } + *(undefined4 *)(this + 0x1e20) = 0; + goto LAB_0016ab68; + } + if ((param_5 == 0) && (1 < *(uint *)(this + 0x1dc8))) { + uVar5 = *(uint *)(this + 0x38) >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar5) { + uVar5 = 0xffff; + } + CSmoother::PushFrameAve((CSmoother *)(this + 0x1d28),*(ushort **)(this + 0x140),uVar5); + uVar24 = 1; + } + else { + uVar24 = 0; + } + *(undefined4 *)(this + 0x1e20) = uVar24; + if (*(int *)(this + 0xe8) != 0) { + uVar25 = *(uint *)(this + 0x76d0); + uVar5 = -*(int *)(this + 0x76e0) >> (*(uint *)(this + 0x76e4) & 0x1f); + uVar5 = uVar5 & ((int)uVar5 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar5) { + uVar5 = 0xffff; + } + if (uVar25 != 0) { + puVar33 = *(ushort **)(this + 0x140); + puVar28 = *(ushort **)(this + 0x158); + uVar36 = (ulong)(uVar25 - 1); + if (7 < uVar36 + 1) { + uVar4 = uVar25 & 7; + lVar26 = (uVar36 + 1) - (ulong)uVar4; + if ((lVar26 != 0) && + ((puVar28 + uVar36 + 1 <= puVar33 || (puVar33 + uVar36 + 1 <= puVar28)))) { + uVar25 = uVar25 - (int)lVar26; + puVar2 = puVar33 + lVar26; + puVar3 = puVar28 + lVar26; + auVar42._8_8_ = 0xffff0000ffff; + auVar42._0_8_ = 0xffff0000ffff; + do { + uVar10 = *(undefined8 *)(puVar33 + 4); + uVar9 = *(undefined8 *)puVar33; + uVar17 = *(undefined8 *)(puVar28 + 4); + uVar14 = *(undefined8 *)puVar28; + lVar26 = lVar26 + -8; + iVar23 = ((uint)(ushort)uVar9 - (uint)(ushort)uVar14) + uVar5; + iVar20 = ((uint)(ushort)((ulong)uVar9 >> 0x10) - (uint)(ushort)((ulong)uVar14 >> 0x10)) + + uVar5; + iVar38 = ((uint)(ushort)((ulong)uVar9 >> 0x20) - (uint)(ushort)((ulong)uVar14 >> 0x20)) + + uVar5; + iVar11 = ((uint)(ushort)((ulong)uVar9 >> 0x30) - (uint)(ushort)((ulong)uVar14 >> 0x30)) + + uVar5; + iVar34 = ((uint)(ushort)uVar10 - (uint)(ushort)uVar17) + uVar5; + iVar15 = ((uint)(ushort)((ulong)uVar10 >> 0x10) - (uint)(ushort)((ulong)uVar17 >> 0x10)) + + uVar5; + iVar16 = ((uint)(ushort)((ulong)uVar10 >> 0x20) - (uint)(ushort)((ulong)uVar17 >> 0x20)) + + uVar5; + iVar18 = ((uint)(ushort)((ulong)uVar10 >> 0x30) - (uint)(ushort)((ulong)uVar17 >> 0x30)) + + uVar5; + auVar7[4] = (char)iVar20; + auVar7._0_4_ = iVar23; + auVar7[5] = (char)((uint)iVar20 >> 8); + auVar7[6] = (char)((uint)iVar20 >> 0x10); + auVar7[7] = (char)((uint)iVar20 >> 0x18); + auVar7[8] = (char)iVar38; + auVar7[9] = (char)((uint)iVar38 >> 8); + auVar7[10] = (char)((uint)iVar38 >> 0x10); + auVar7[0xb] = (char)((uint)iVar38 >> 0x18); + auVar7[0xc] = (char)iVar11; + auVar7[0xd] = (char)((uint)iVar11 >> 8); + auVar7[0xe] = (char)((uint)iVar11 >> 0x10); + auVar7[0xf] = (char)((uint)iVar11 >> 0x18); + auVar45 = NEON_smin(auVar7,auVar42,4); + sVar6 = -(ushort)(0 < iVar23); + auVar12._4_2_ = (short)iVar15; + auVar12._0_4_ = iVar34; + auVar12._6_2_ = (short)((uint)iVar15 >> 0x10); + auVar12._8_2_ = (short)iVar16; + auVar12._10_2_ = (short)((uint)iVar16 >> 0x10); + auVar12._12_2_ = (short)iVar18; + auVar12._14_2_ = (short)((uint)iVar18 >> 0x10); + auVar44 = NEON_smin(auVar12,auVar42,4); + sVar43 = -(ushort)(0 < iVar34); + *(ulong *)(puVar33 + 4) = + CONCAT17(auVar44[0xd] & (byte)((ushort)-(ushort)(0 < iVar18) >> 8), + CONCAT16(auVar44[0xc] & (byte)-(ushort)(0 < iVar18), + CONCAT15(auVar44[9] & (byte)((ushort)-(ushort)(0 < iVar16) >> 8), + CONCAT14(auVar44[8] & (byte)-(ushort)(0 < iVar16), + CONCAT13(auVar44[5] & + (byte)((ushort)-(ushort)(0 < iVar15) + >> 8), + CONCAT12(auVar44[4] & + (byte)-(ushort)(0 < iVar15), + CONCAT11(auVar44[1] & + (byte)((ushort) + sVar43 >> 8),auVar44[0] & (byte)sVar43))))))); + *(ulong *)puVar33 = + CONCAT17(auVar45[0xd] & (byte)((ushort)-(ushort)(0 < iVar11) >> 8), + CONCAT16(auVar45[0xc] & (byte)-(ushort)(0 < iVar11), + CONCAT15(auVar45[9] & (byte)((ushort)-(ushort)(0 < iVar38) >> 8), + CONCAT14(auVar45[8] & (byte)-(ushort)(0 < iVar38), + CONCAT13(auVar45[5] & + (byte)((ushort)-(ushort)(0 < iVar20) + >> 8), + CONCAT12(auVar45[4] & + (byte)-(ushort)(0 < iVar20), + CONCAT11(auVar45[1] & + (byte)((ushort)sVar6 + >> 8), + auVar45[0] & + (byte)sVar6))))))); + puVar28 = puVar28 + 8; + puVar33 = puVar33 + 8; + } while (lVar26 != 0); + puVar33 = puVar2; + puVar28 = puVar3; + if (uVar4 == 0) goto LAB_0016a824; + } + } + do { + uVar25 = uVar25 - 1; + iVar23 = ((uint)*puVar33 - (uint)*puVar28) + uVar5; + iVar20 = iVar23; + if (0xfffe < iVar23) { + iVar20 = -1; + } + uVar40 = (ushort)iVar20; + if (iVar23 < 1) { + uVar40 = 0; + } + *puVar33 = uVar40; + puVar33 = puVar33 + 1; + puVar28 = puVar28 + 1; + } while (uVar25 != 0); + } + } +LAB_0016a824: + if (param_6 == 0) goto switchD_0016a848_default; + switch(*(undefined4 *)(this + 0x1dd0)) { + case 1: + FilterE2X(this); + goto switchD_0016a848_default; + case 2: + break; + case 3: + FilterE2X(this); + break; + case 4: + FilterE4X(this); + break; + default: + goto switchD_0016a848_default; + } + FilterE4X(this); +switchD_0016a848_default: + uVar5 = *(uint *)(this + 0x76d0); + uVar36 = (ulong)uVar5; + uVar40 = **(ushort **)(this + 0x140); + if (uVar5 == 0) { + iVar20 = 0; + iVar23 = 0; + lVar26 = 0; + uVar30 = uVar40; + } + else { + lVar35 = 0; + lVar26 = 0; + iVar23 = 0; + iVar20 = 0; + uVar32 = uVar40; + uVar37 = uVar40; + uVar29 = uVar40; + while( true ) { + lVar26 = lVar26 + (ulong)uVar32; + iVar34 = (int)lVar35; + uVar40 = uVar32; + uVar30 = uVar29; + iVar38 = iVar23; + iVar11 = iVar34; + if ((uVar32 <= uVar37) && + (uVar40 = uVar37, uVar30 = uVar32, iVar38 = iVar34, iVar11 = iVar20, uVar29 <= uVar32)) { + uVar30 = uVar29; + iVar38 = iVar23; + } + iVar20 = iVar11; + iVar23 = iVar38; + if (uVar5 <= iVar34 + 1U) break; + uVar32 = (*(ushort **)(this + 0x140))[lVar35 + 1]; + lVar35 = lVar35 + 1; + uVar37 = uVar40; + uVar29 = uVar30; + } + } + *(int *)(this + 0x1e0c) = iVar23; + uVar24 = 0; + if (uVar36 != 0) { + uVar24 = (undefined4)(lVar26 / (long)uVar36); + } + __x = (0.0 - ((double)lVar26 * (double)lVar26) / (double)uVar36) / (double)(uVar5 - 1); + dVar41 = SQRT(__x); + *(int *)(this + 0x1e08) = iVar20; + *(uint *)(this + 0x1df8) = (uint)uVar40; + *(uint *)(this + 0x1dfc) = (uint)uVar30; + *(undefined4 *)(this + 0x1e00) = uVar24; + if (NAN(dVar41)) { + dVar41 = sqrt(__x); + } + *(int *)(this + 0x1e04) = (int)dVar41; + GrayEnlarge(this); + if (((*(int *)(this + 0x1e24) != 0) && (*(int *)(this + 0x2c) != 0)) && + ((*(int *)(this + 0x28) == 0 || (*(int *)(this + 0x10) != 0)))) { + uVar5 = *(int *)(this + 0x2c) << 3; + if (*(int *)(this + 0x60) == 0) { + FilterDetailEnhancement(this,uVar5); + } + else { + FilterDetailEnhancement_Simple(this,uVar5); + } + } + if (param_4 == 0) { +LAB_0016ab68: + lVar26 = GetTickCount(); + *(long *)(this + 0x1e30) = lVar26 - lVar21; + CopyState(this); + uVar24 = 1; + *(undefined4 *)(this + 0xec) = 1; + pthread_mutex_unlock(__mutex); + } + else { + uVar5 = *(uint *)(this + 0x1db0); + uVar25 = *(uint *)(this + 0x1da8); + if ((uVar5 == uVar25) && (*(int *)(this + 0x1db4) == *(int *)(this + 0x1dac))) { + memcpy(*(void **)(this + 0xd8),*(void **)(this + 0x170),(ulong)*(uint *)(this + 0x76d0)); + } + else if ((uVar5 == uVar25 * 2) && (*(int *)(this + 0x1db4) == *(int *)(this + 0x1dac) * 2)) { + ResizeBMP_2X(this); + } + else if ((uVar5 << 1 == uVar25 * 3) && + (*(int *)(this + 0x1db4) << 1 == *(int *)(this + 0x1dac) * 3)) { + ResizeBMP_2to3(this); + } + else if ((uVar5 * 3 == uVar25 * 5) && + (*(int *)(this + 0x1db4) * 3 == *(int *)(this + 0x1dac) * 5)) { + ResizeBMP_3to5(this); + } + else if ((uVar25 < uVar5) && (*(uint *)(this + 0x1dac) < *(uint *)(this + 0x1db4))) { + ResizeBMP(this); + } + lVar26 = GetTickCount(); + *(long *)(this + 0x1e30) = lVar26 - lVar21; + CopyState(this); + *(undefined4 *)(this + 0xec) = 1; + pthread_mutex_unlock(__mutex); + uVar24 = 3; + } + return uVar24; +} + + +================================================================== + +### FUNC 0016ac44 (440 bytes) name=CopyState + +/* CFunctions::CopyState() */ + +void __thiscall CFunctions::CopyState(CFunctions *this) + +{ + CFunctions *pCVar1; + CFunctions *pCVar2; + CFunctions *pCVar3; + uint uVar4; + undefined4 uVar5; + int iVar6; + uint uVar7; + uint uVar8; + + memcpy(this + 0x4a58,this + 0x1de0,0x2c78); + *(uint *)(this + 0x4a94) = + (uint)*(ushort *)(this + 0x1e1c) << (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + *(uint *)(this + 0x4a7c) = + (uint)*(ushort *)(this + 0x1e04) << (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + uVar4 = ReviseTemperature(this,(ushort)*(undefined4 *)(this + 0x1e00), + (*(uint *)(this + 0x1da8) >> 1) + (*(uint *)(this + 0x76d0) >> 1),0); + pCVar1 = this + 0x4a78; + *(uint *)pCVar1 = uVar4; + uVar5 = ReviseTemperature(this,(ushort)*(undefined4 *)(this + 0x1e14), + (*(uint *)(this + 0x1da8) >> 1) + (*(uint *)(this + 0x76d0) >> 1),0); + *(undefined4 *)(this + 0x4a8c) = uVar5; + uVar4 = ReviseTemperature(this,(ushort)*(undefined4 *)(this + 0x1df8),*(uint *)(this + 0x4a80),1); + pCVar2 = this + 0x4a70; + *(uint *)pCVar2 = uVar4; + uVar5 = ReviseTemperature(this,(ushort)*(undefined4 *)(this + 0x1e18), + (*(uint *)(this + 0x1da8) >> 1) + (*(uint *)(this + 0x76d0) >> 1),0); + *(undefined4 *)(this + 0x4a90) = uVar5; + uVar4 = ReviseTemperature(this,(ushort)*(undefined4 *)(this + 0x1dfc),*(uint *)(this + 0x4a84),1); + pCVar3 = this + 0x4a74; + *(uint *)pCVar3 = uVar4; + if (*(int *)(this + 0x58) == 0) { + uVar7 = *(uint *)pCVar2; + if ((int)uVar4 <= (int)uVar7) goto LAB_0016adbc; + } + else { + iVar6 = (int)this; + uVar4 = CorrectTemperature(iVar6,*(float *)(this + 0xac),*(uint *)pCVar1); + *(uint *)pCVar1 = uVar4; + uVar4 = CorrectTemperature(iVar6,*(float *)(this + 0xac),*(uint *)pCVar3); + *(uint *)pCVar3 = uVar4; + uVar7 = CorrectTemperature(iVar6,*(float *)(this + 0xac),*(uint *)pCVar2); + *(uint *)pCVar2 = uVar7; + uVar4 = *(uint *)pCVar3; + if ((int)uVar4 <= (int)uVar7) goto LAB_0016adbc; + } + uVar7 = uVar4; + *(uint *)pCVar2 = uVar7; + uVar4 = uVar7; +LAB_0016adbc: + uVar8 = *(uint *)pCVar1; + if ((int)uVar7 < (int)*(uint *)pCVar1) { + *(uint *)pCVar1 = uVar7; + uVar8 = uVar7; + } + if ((int)uVar8 < (int)uVar4) { + *(uint *)pCVar1 = uVar4; + } + return; +} + + +================================================================== + +### FUNC 0016adfc (252 bytes) name=Rotate + +/* CFunctions::Rotate(unsigned int) */ + +void __thiscall CFunctions::Rotate(CFunctions *this,uint param_1) + +{ + undefined2 *puVar1; + uint uVar2; + uint uVar3; + int iVar4; + undefined2 *puVar5; + int iVar6; + undefined2 *puVar7; + ulong uVar8; + long lVar9; + undefined2 *puVar10; + undefined2 *puVar11; + int iVar12; + + if (param_1 == 1) { + memcpy(*(void **)(this + 0x168),*(void **)(this + 0x140),(ulong)*(uint *)(this + 0x76d0) << 1); + iVar6 = *(int *)(this + 0x1da8); + if (iVar6 != 0) { + uVar3 = *(uint *)(this + 0x1dac); + puVar7 = *(undefined2 **)(this + 0x168); + uVar2 = uVar3 + 3; + if (-1 < (int)uVar3) { + uVar2 = uVar3; + } + iVar4 = uVar3 * iVar6; + puVar10 = (undefined2 *)(*(long *)(this + 0x140) + (long)(int)((uVar3 - 1) * iVar6) * 2); + uVar8 = (ulong)(((int)uVar2 >> 2) - 1); + lVar9 = (long)iVar6; + do { + puVar11 = puVar10; + if (6 < uVar3 + 3) { + puVar11 = (undefined2 *)((long)puVar10 + (uVar8 * -8 + -8) * lVar9); + puVar5 = puVar7; + iVar12 = (int)uVar2 >> 2; + do { + iVar12 = iVar12 + -1; + *puVar10 = *puVar5; + puVar10 = puVar10 + -lVar9; + *puVar10 = puVar5[1]; + puVar10 = puVar10 + -lVar9; + *puVar10 = puVar5[2]; + puVar1 = puVar5 + 3; + puVar5 = puVar5 + 4; + puVar10[-lVar9] = *puVar1; + puVar10 = puVar10 + -lVar9 + -lVar9; + } while (iVar12 != 0); + puVar7 = puVar7 + uVar8 * 4 + 4; + } + iVar6 = iVar6 + -1; + puVar10 = puVar11 + (iVar4 + 1); + } while (iVar6 != 0); + } + } + return; +} + + +================================================================== + +### FUNC 0016aef8 (376 bytes) name=Mirror + +/* CFunctions::Mirror(unsigned int) */ + +void __thiscall CFunctions::Mirror(CFunctions *this,uint param_1) + +{ + bool bVar1; + void *__src; + void *__src_00; + uint uVar2; + int iVar3; + long lVar4; + uint *puVar5; + uint *puVar6; + uint *puVar7; + int iVar8; + size_t __n; + int iVar9; + long lVar10; + long lVar11; + long lVar12; + ulong uVar13; + undefined1 auStack_868 [2048]; + long local_68; + + lVar4 = tpidr_el0; + local_68 = *(long *)(lVar4 + 0x28); + iVar3 = *(int *)(this + 0x1da8); + lVar10 = (long)iVar3; + iVar8 = *(int *)(this + 0x1dac); + if (((param_1 >> 1 & 1) != 0) && (1 < iVar8)) { + iVar9 = iVar8; + if (iVar8 < 0) { + iVar9 = iVar8 + 1; + } + lVar12 = 0; + __n = lVar10 * 2; + uVar13 = (ulong)(uint)(iVar9 >> 1); + iVar9 = iVar3 * (iVar8 + -1); + do { + __src_00 = (void *)(*(long *)(this + 0x140) + lVar12); + __src = (void *)(*(long *)(this + 0x140) + (long)iVar9 * 2); + memcpy(auStack_868,__src_00,__n); + memcpy(__src_00,__src,__n); + memcpy(__src,auStack_868,__n); + iVar9 = iVar9 - iVar3; + uVar13 = uVar13 - 1; + lVar12 = lVar12 + __n; + } while (uVar13 != 0); + } + if (((param_1 & 1) != 0) && (0 < iVar8)) { + lVar12 = *(long *)(this + 0x140); + iVar9 = iVar3 + 3; + if (-1 < iVar3) { + iVar9 = iVar3; + } + puVar5 = (uint *)(lVar12 + (((long)iVar8 + -1) * lVar10 + (long)((iVar9 >> 2) << 1) * 2) * 2 + + -4); + lVar11 = (long)iVar8; + do { + if (6 < iVar3 + 3U) { + puVar6 = (uint *)(lVar12 + (lVar11 + -1) * lVar10 * 2); + puVar7 = puVar5; + iVar8 = iVar9 >> 2; + do { + uVar2 = *puVar7; + iVar8 = iVar8 + -1; + *puVar7 = *puVar6 >> 0x10 | *puVar6 << 0x10; + *puVar6 = uVar2 >> 0x10 | uVar2 << 0x10; + puVar6 = puVar6 + 1; + puVar7 = puVar7 + -1; + } while (iVar8 != 0); + } + puVar5 = (uint *)((long)puVar5 + lVar10 * -2); + bVar1 = 1 < lVar11; + lVar11 = lVar11 + -1; + } while (bVar1); + } + if (*(long *)(lVar4 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0016b070 (160 bytes) name=FindMaxTemperature + +/* CFunctions::FindMaxTemperature() */ + +void __thiscall CFunctions::FindMaxTemperature(CFunctions *this) + +{ + undefined1 (*pauVar1) [16]; + ulong uVar2; + uint uVar3; + int iVar4; + undefined1 auVar5 [16]; + ushort uVar6; + int iVar7; + ushort *puVar8; + undefined1 (*pauVar9) [16]; + long lVar10; + ushort *puVar11; + ushort uVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + puVar11 = *(ushort **)(this + 0x140); + iVar4 = *(int *)(this + 0x76d0); + uVar12 = *puVar11; + if ((iVar4 != 0) && (iVar7 = iVar4 + -1, iVar7 != 0)) { + uVar2 = (ulong)(iVar4 - 2) + 1; + puVar8 = puVar11 + 1; + if (0xf < uVar2) { + uVar3 = iVar4 + 0xfU & 0xf; + lVar10 = uVar2 - uVar3; + if (lVar10 != 0) { + auVar13._0_8_ = CONCAT26(uVar12,CONCAT24(uVar12,CONCAT22(uVar12,uVar12))); + auVar13._8_2_ = uVar12; + auVar13._10_2_ = uVar12; + auVar13._12_2_ = uVar12; + auVar13._14_2_ = uVar12; + iVar7 = iVar7 - (int)lVar10; + puVar8 = puVar8 + lVar10; + pauVar9 = (undefined1 (*) [16])(puVar11 + 9); + auVar14._8_8_ = auVar13._8_8_; + auVar14._0_8_ = auVar13._0_8_; + do { + pauVar1 = pauVar9 + -1; + auVar5 = *pauVar9; + lVar10 = lVar10 + -0x10; + pauVar9 = pauVar9 + 2; + auVar13 = NEON_umax(auVar13,*pauVar1,2); + auVar14 = NEON_umax(auVar14,auVar5,2); + } while (lVar10 != 0); + auVar13 = NEON_umax(auVar13,auVar14,2); + uVar12 = NEON_umaxv(auVar13,2); + if (uVar3 == 0) goto LAB_0016b104; + } + } + do { + iVar7 = iVar7 + -1; + uVar6 = *puVar8; + if (*puVar8 <= uVar12) { + uVar6 = uVar12; + } + uVar12 = uVar6; + puVar8 = puVar8 + 1; + } while (iVar7 != 0); + } +LAB_0016b104: + *(uint *)(this + 0x1df8) = (uint)uVar12; + return; +} + + +================================================================== + +### FUNC 0016b110 (28 bytes) name=ConvertDeltamC2InnerTemp + +/* CFunctions::ConvertDeltamC2InnerTemp(unsigned int) const */ + +uint __thiscall CFunctions::ConvertDeltamC2InnerTemp(CFunctions *this,uint param_1) + +{ + uint uVar1; + + uVar1 = param_1 >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar1) { + uVar1 = 0xffff; + } + return uVar1; +} + + +================================================================== + +### FUNC 0016b12c (284 bytes) name=SubMask + +/* CFunctions::SubMask() */ + +void __thiscall CFunctions::SubMask(CFunctions *this) + +{ + int iVar1; + ushort *puVar2; + ushort *puVar3; + uint uVar4; + uint uVar5; + ushort uVar6; + undefined1 auVar8 [16]; + short sVar9; + undefined8 uVar10; + int iVar11; + undefined8 uVar12; + int iVar13; + undefined1 auVar14 [16]; + int iVar15; + undefined8 uVar16; + int iVar17; + int iVar18; + undefined8 uVar19; + int iVar20; + uint uVar21; + ulong uVar22; + ushort *puVar23; + ushort *puVar24; + long lVar25; + short sVar26; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + int iVar7; + + uVar21 = *(uint *)(this + 0x76d0); + uVar5 = -*(int *)(this + 0x76e0) >> (*(uint *)(this + 0x76e4) & 0x1f); + uVar5 = uVar5 & ((int)uVar5 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar5) { + uVar5 = 0xffff; + } + if (uVar21 != 0) { + puVar24 = *(ushort **)(this + 0x140); + puVar23 = *(ushort **)(this + 0x158); + uVar22 = (ulong)(uVar21 - 1); + if (7 < uVar22 + 1) { + uVar4 = uVar21 & 7; + lVar25 = (uVar22 + 1) - (ulong)uVar4; + if ((lVar25 != 0) && ((puVar23 + uVar22 + 1 <= puVar24 || (puVar24 + uVar22 + 1 <= puVar23)))) + { + uVar21 = uVar21 - (int)lVar25; + puVar2 = puVar24 + lVar25; + puVar3 = puVar23 + lVar25; + do { + uVar12 = *(undefined8 *)(puVar24 + 4); + uVar10 = *(undefined8 *)puVar24; + uVar19 = *(undefined8 *)(puVar23 + 4); + uVar16 = *(undefined8 *)puVar23; + lVar25 = lVar25 + -8; + iVar1 = ((uint)(ushort)uVar10 - (uint)(ushort)uVar16) + uVar5; + iVar7 = ((uint)(ushort)((ulong)uVar10 >> 0x10) - (uint)(ushort)((ulong)uVar16 >> 0x10)) + + uVar5; + iVar11 = ((uint)(ushort)((ulong)uVar10 >> 0x20) - (uint)(ushort)((ulong)uVar16 >> 0x20)) + + uVar5; + iVar13 = ((uint)(ushort)((ulong)uVar10 >> 0x30) - (uint)(ushort)((ulong)uVar16 >> 0x30)) + + uVar5; + iVar15 = ((uint)(ushort)uVar12 - (uint)(ushort)uVar19) + uVar5; + iVar17 = ((uint)(ushort)((ulong)uVar12 >> 0x10) - (uint)(ushort)((ulong)uVar19 >> 0x10)) + + uVar5; + iVar18 = ((uint)(ushort)((ulong)uVar12 >> 0x20) - (uint)(ushort)((ulong)uVar19 >> 0x20)) + + uVar5; + iVar20 = ((uint)(ushort)((ulong)uVar12 >> 0x30) - (uint)(ushort)((ulong)uVar19 >> 0x30)) + + uVar5; + auVar27._8_8_ = 0xffff0000ffff; + auVar27._0_8_ = 0xffff0000ffff; + auVar28[4] = (char)iVar7; + auVar28._0_4_ = iVar1; + auVar28[5] = (char)((uint)iVar7 >> 8); + auVar28[6] = (char)((uint)iVar7 >> 0x10); + auVar28[7] = (char)((uint)iVar7 >> 0x18); + auVar28[8] = (char)iVar11; + auVar28[9] = (char)((uint)iVar11 >> 8); + auVar28[10] = (char)((uint)iVar11 >> 0x10); + auVar28[0xb] = (char)((uint)iVar11 >> 0x18); + auVar28[0xc] = (char)iVar13; + auVar28[0xd] = (char)((uint)iVar13 >> 8); + auVar28[0xe] = (char)((uint)iVar13 >> 0x10); + auVar28[0xf] = (char)((uint)iVar13 >> 0x18); + auVar28 = NEON_smin(auVar28,auVar27,4); + sVar9 = -(ushort)(0 < iVar1); + auVar8._8_8_ = 0xffff0000ffff; + auVar8._0_8_ = 0xffff0000ffff; + auVar14._4_2_ = (short)iVar17; + auVar14._0_4_ = iVar15; + auVar14._6_2_ = (short)((uint)iVar17 >> 0x10); + auVar14._8_2_ = (short)iVar18; + auVar14._10_2_ = (short)((uint)iVar18 >> 0x10); + auVar14._12_2_ = (short)iVar20; + auVar14._14_2_ = (short)((uint)iVar20 >> 0x10); + auVar27 = NEON_smin(auVar14,auVar8,4); + sVar26 = -(ushort)(0 < iVar15); + *(ulong *)(puVar24 + 4) = + CONCAT17(auVar27[0xd] & (byte)((ushort)-(ushort)(0 < iVar20) >> 8), + CONCAT16(auVar27[0xc] & (byte)-(ushort)(0 < iVar20), + CONCAT15(auVar27[9] & (byte)((ushort)-(ushort)(0 < iVar18) >> 8), + CONCAT14(auVar27[8] & (byte)-(ushort)(0 < iVar18), + CONCAT13(auVar27[5] & + (byte)((ushort)-(ushort)(0 < iVar17) >> + 8),CONCAT12(auVar27[4] & + (byte)-(ushort)(0 < + iVar17),CONCAT11(auVar27[1] & + (byte)((ushort)sVar26 >> 8), + auVar27[0] & (byte)sVar26))))))); + *(ulong *)puVar24 = + CONCAT17(auVar28[0xd] & (byte)((ushort)-(ushort)(0 < iVar13) >> 8), + CONCAT16(auVar28[0xc] & (byte)-(ushort)(0 < iVar13), + CONCAT15(auVar28[9] & (byte)((ushort)-(ushort)(0 < iVar11) >> 8), + CONCAT14(auVar28[8] & (byte)-(ushort)(0 < iVar11), + CONCAT13(auVar28[5] & + (byte)((ushort)-(ushort)(0 < iVar7) >> 8 + ),CONCAT12(auVar28[4] & + (byte)-(ushort)(0 < + iVar7),CONCAT11(auVar28[1] & + (byte)((ushort)sVar9 >> 8), + auVar28[0] & (byte)sVar9))))))); + puVar23 = puVar23 + 8; + puVar24 = puVar24 + 8; + } while (lVar25 != 0); + puVar24 = puVar2; + puVar23 = puVar3; + if (uVar4 == 0) { + return; + } + } + } + do { + uVar21 = uVar21 - 1; + iVar1 = ((uint)*puVar24 - (uint)*puVar23) + uVar5; + iVar7 = iVar1; + if (0xfffe < iVar1) { + iVar7 = -1; + } + uVar6 = (ushort)iVar7; + if (iVar1 < 1) { + uVar6 = 0; + } + *puVar24 = uVar6; + puVar24 = puVar24 + 1; + puVar23 = puVar23 + 1; + } while (uVar21 != 0); + } + return; +} + + +================================================================== + +### FUNC 0016b248 (368 bytes) name=FilterE2X + +/* CFunctions::FilterE2X() */ + +void __thiscall CFunctions::FilterE2X(CFunctions *this) + +{ + uint uVar1; + ushort uVar2; + uint *puVar3; + uint *puVar4; + ushort *puVar5; + ulong uVar6; + uint uVar7; + ushort *puVar8; + int iVar9; + int iVar10; + uint uVar11; + void *__dest; + void *__src; + uint uVar12; + + uVar6 = (ulong)*(uint *)(this + 0x1da8); + __dest = *(void **)(this + 0x168); + __src = (void *)(*(long *)(this + 0x140) + + (ulong)(*(uint *)(this + 0x1da8) * *(int *)(this + 0x1dd8)) * 2 + + (ulong)*(uint *)(this + 0x1dd4) * 2); + uVar12 = *(uint *)(this + 0x1dac) >> 1 ^ 0xffffffff; + do { + memcpy(__dest,__src,(ulong)((int)(uVar6 >> 1) + 2) << 1); + uVar7 = *(uint *)(this + 0x1da8); + uVar6 = (ulong)uVar7; + uVar12 = uVar12 + 1; + __src = (void *)((long)__src + uVar6 * 2); + __dest = (void *)((long)__dest + (ulong)((uVar7 >> 1) + 2) * 2); + } while (uVar12 != 0); + uVar12 = *(uint *)(this + 0x1dac) >> 1; + if (uVar12 != 0) { + puVar3 = *(uint **)(this + 0x140); + puVar5 = *(ushort **)(this + 0x168); + while( true ) { + uVar7 = uVar7 >> 1; + if (uVar7 != 0) { + iVar10 = -uVar7; + puVar4 = puVar3; + puVar8 = puVar5; + uVar11 = (uint)*puVar5; + do { + puVar8 = puVar8 + 1; + uVar2 = *puVar8; + iVar10 = iVar10 + 1; + *puVar4 = uVar11 | (uVar2 + uVar11 >> 1) << 0x10; + puVar4 = puVar4 + 1; + uVar11 = (uint)uVar2; + } while (iVar10 != 0); + uVar6 = (ulong)*(uint *)(this + 0x1da8); + puVar5 = puVar5 + (ulong)(uVar7 - 1) + 1; + puVar3 = puVar3 + (ulong)(uVar7 - 1) + 1; + } + uVar6 = uVar6 >> 1; + puVar8 = puVar5 + -uVar6; + iVar10 = (int)uVar6; + if (iVar10 != 0) { + uVar7 = (uint)*puVar8; + uVar11 = (uint)puVar5[2]; + iVar9 = -iVar10; + puVar4 = puVar3; + puVar8 = puVar5; + do { + uVar1 = uVar11 + uVar7; + uVar7 = (uint)puVar8[1 - uVar6]; + uVar11 = (uint)puVar8[3]; + iVar9 = iVar9 + 1; + *puVar4 = uVar1 >> 1 | (uVar1 + uVar7 + uVar11 >> 2) << 0x10; + puVar8 = puVar8 + 1; + puVar4 = puVar4 + 1; + } while (iVar9 != 0); + puVar8 = puVar5 + ((iVar10 - 1) - uVar6) + 1; + puVar3 = puVar3 + (ulong)(iVar10 - 1) + 1; + } + uVar12 = uVar12 - 1; + if (uVar12 == 0) break; + uVar7 = *(uint *)(this + 0x1da8); + uVar6 = (ulong)uVar7; + puVar5 = puVar8 + 2; + } + } + return; +} + + +================================================================== + +### FUNC 0016b3b8 (832 bytes) name=FilterE4X + +/* CFunctions::FilterE4X() */ + +void __thiscall CFunctions::FilterE4X(CFunctions *this) + +{ + int iVar1; + int iVar2; + ushort uVar3; + ulong uVar4; + int iVar5; + int iVar6; + uint *puVar7; + ushort *puVar8; + ushort *puVar9; + ushort *puVar10; + uint uVar11; + uint uVar12; + ulong uVar13; + int iVar14; + int iVar15; + uint *puVar16; + uint uVar17; + uint uVar18; + uint uVar19; + void *__dest; + void *__src; + uint uVar20; + + uVar13 = (ulong)*(uint *)(this + 0x1da8); + __dest = *(void **)(this + 0x168); + __src = (void *)(*(long *)(this + 0x140) + + (ulong)(*(uint *)(this + 0x1da8) * *(int *)(this + 0x1dd8)) * 2 + + (ulong)*(uint *)(this + 0x1dd4) * 2); + uVar20 = *(uint *)(this + 0x1dac) >> 2 ^ 0xffffffff; + do { + memcpy(__dest,__src,(ulong)(((uint)(uVar13 >> 1) & 0x7ffffffe) + 4)); + uVar11 = *(uint *)(this + 0x1da8); + uVar13 = (ulong)uVar11; + uVar20 = uVar20 + 1; + __src = (void *)((long)__src + uVar13 * 2); + __dest = (void *)((long)__dest + (ulong)((uVar11 >> 2) + 2) * 2); + } while (uVar20 != 0); + uVar20 = *(uint *)(this + 0x1dac) >> 2; + if (uVar20 != 0) { + puVar7 = *(uint **)(this + 0x140); + puVar8 = *(ushort **)(this + 0x168); + while( true ) { + uVar11 = uVar11 >> 2; + if (uVar11 != 0) { + puVar10 = puVar8 + 1; + uVar3 = *puVar8; + iVar15 = -uVar11; + puVar8 = puVar10 + (uVar11 - 1); + puVar16 = puVar7; + uVar19 = (uint)uVar3; + do { + uVar3 = *puVar10; + iVar15 = iVar15 + 1; + uVar12 = (uint)uVar3; + *puVar16 = uVar19 | (uVar19 * 3 + (uint)uVar3 >> 2) << 0x10; + puVar16[1] = uVar12 + uVar19 >> 1 | (uVar12 + (uint)uVar3 * 2 + uVar19 >> 2) << 0x10; + puVar10 = puVar10 + 1; + puVar16 = puVar16 + 2; + uVar19 = uVar12; + } while (iVar15 != 0); + uVar13 = (ulong)*(uint *)(this + 0x1da8); + puVar7 = puVar7 + (ulong)(uVar11 - 1) * 2 + 2; + } + uVar4 = uVar13 >> 2; + puVar10 = puVar8 + -uVar4; + iVar15 = (int)uVar4; + if (iVar15 != 0) { + uVar3 = *puVar10; + iVar14 = -iVar15; + puVar10 = puVar8 + ((iVar15 - 1) - uVar4) + 1; + puVar16 = puVar7; + uVar11 = (uint)uVar3; + uVar19 = (uint)puVar8[2]; + do { + uVar17 = (uint)puVar8[3]; + uVar12 = (uint)puVar8[1 - uVar4]; + puVar8 = puVar8 + 1; + iVar14 = iVar14 + 1; + *puVar16 = (uVar11 * 9 + uVar17 + (uVar12 + uVar19) * 3) * 0x1000 & 0xffff0000 | + uVar11 * 3 + uVar19 >> 2; + puVar16[1] = (uVar12 * 9 + uVar19 + (uVar17 + uVar11) * 3) * 0x1000 & 0xffff0000 | + (uVar12 + uVar11) * 3 + uVar19 + uVar17 >> 3; + puVar16 = puVar16 + 2; + uVar11 = uVar12; + uVar19 = uVar17; + } while (iVar14 != 0); + uVar13 = (ulong)*(uint *)(this + 0x1da8); + puVar7 = puVar7 + (ulong)(iVar15 - 1) * 2 + 2; + } + uVar4 = uVar13 >> 2; + puVar9 = puVar10 + -uVar4; + iVar15 = (int)uVar4; + if (iVar15 != 0) { + uVar3 = *puVar9; + iVar14 = -iVar15; + puVar9 = puVar10 + ((iVar15 - 1) - uVar4) + 1; + puVar16 = puVar7; + uVar11 = (uint)uVar3; + uVar19 = (uint)puVar10[2]; + do { + uVar18 = (uint)puVar10[1 - uVar4]; + uVar17 = (uint)puVar10[3]; + uVar12 = uVar19 + uVar11; + puVar10 = puVar10 + 1; + iVar14 = iVar14 + 1; + *puVar16 = uVar12 >> 1 | (uVar12 * 3 + uVar18 + uVar17 >> 3) << 0x10; + puVar16[1] = (uVar12 + (uVar17 + uVar18) * 3) * 0x2000 & 0xffff0000 | + uVar18 + uVar11 + uVar19 + uVar17 >> 2; + puVar16 = puVar16 + 2; + uVar11 = uVar18; + uVar19 = uVar17; + } while (iVar14 != 0); + uVar13 = (ulong)*(uint *)(this + 0x1da8); + puVar7 = puVar7 + (ulong)(iVar15 - 1) * 2 + 2; + } + uVar13 = uVar13 >> 2; + puVar8 = puVar9 + -uVar13; + iVar15 = (int)uVar13; + if (iVar15 != 0) { + uVar3 = *puVar8; + uVar19 = (uint)puVar9[2]; + iVar14 = -iVar15; + puVar8 = puVar9 + ((iVar15 - 1) - uVar13) + 1; + puVar16 = puVar7; + uVar11 = (uint)uVar3; + do { + uVar3 = puVar9[3]; + uVar12 = (uint)puVar9[1 - uVar13]; + iVar6 = uVar19 * 3; + iVar5 = uVar19 * 9; + iVar1 = uVar3 + uVar19; + iVar2 = uVar19 + uVar12; + uVar19 = (uint)uVar3; + iVar14 = iVar14 + 1; + puVar9 = puVar9 + 1; + *puVar16 = (iVar5 + uVar12 + (uVar3 + uVar11) * 3) * 0x1000 & 0xffff0000 | + iVar6 + uVar11 >> 2; + puVar16[1] = (iVar2 * 3 + uVar11 + uVar19 * 9) * 0x1000 & 0xffff0000 | + uVar12 + uVar11 + iVar1 * 3 >> 3; + puVar16 = puVar16 + 2; + uVar11 = uVar12; + } while (iVar14 != 0); + puVar7 = puVar7 + (ulong)(iVar15 - 1) * 2 + 2; + } + uVar20 = uVar20 - 1; + if (uVar20 == 0) break; + uVar11 = *(uint *)(this + 0x1da8); + uVar13 = (ulong)uVar11; + puVar8 = puVar8 + 2; + } + } + return; +} + + +================================================================== + +### FUNC 0016b6f8 (260 bytes) name=TempRangeStat + +/* CFunctions::TempRangeStat(unsigned short const*) */ + +void __thiscall CFunctions::TempRangeStat(CFunctions *this,ushort *param_1) + +{ + uint uVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + ulong uVar5; + long lVar6; + int iVar7; + int iVar8; + ushort uVar9; + ushort uVar10; + ushort uVar11; + ushort uVar12; + int iVar13; + long lVar14; + ushort uVar15; + double dVar16; + double __x; + + uVar1 = *(uint *)(this + 0x76d0); + uVar5 = (ulong)uVar1; + uVar12 = *param_1; + if (uVar1 == 0) { + iVar8 = 0; + iVar7 = 0; + lVar6 = 0; + uVar10 = uVar12; + } + else { + lVar14 = 0; + lVar6 = 0; + iVar7 = 0; + iVar8 = 0; + uVar11 = uVar12; + uVar15 = uVar12; + uVar9 = uVar12; + while( true ) { + lVar6 = lVar6 + (ulong)uVar11; + iVar13 = (int)lVar14; + uVar12 = uVar11; + uVar10 = uVar9; + iVar3 = iVar7; + iVar4 = iVar13; + if ((uVar11 <= uVar15) && + (uVar12 = uVar15, uVar10 = uVar11, iVar3 = iVar13, iVar4 = iVar8, uVar9 <= uVar11)) { + uVar10 = uVar9; + iVar3 = iVar7; + } + iVar8 = iVar4; + iVar7 = iVar3; + if (uVar1 <= iVar13 + 1U) break; + uVar11 = param_1[lVar14 + 1]; + lVar14 = lVar14 + 1; + uVar15 = uVar12; + uVar9 = uVar10; + } + } + *(int *)(this + 0x1e0c) = iVar7; + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = (undefined4)(lVar6 / (long)uVar5); + } + __x = (0.0 - ((double)lVar6 * (double)lVar6) / (double)uVar5) / (double)(uVar1 - 1); + dVar16 = SQRT(__x); + *(int *)(this + 0x1e08) = iVar8; + *(uint *)(this + 0x1df8) = (uint)uVar12; + *(uint *)(this + 0x1dfc) = (uint)uVar10; + *(undefined4 *)(this + 0x1e00) = uVar2; + if (NAN(dVar16)) { + dVar16 = sqrt(__x); + } + *(int *)(this + 0x1e04) = (int)dVar16; + return; +} + + +================================================================== + +### FUNC 0016b7fc (720 bytes) name=GrayEnlarge + +/* CFunctions::GrayEnlarge() */ + +void __thiscall CFunctions::GrayEnlarge(CFunctions *this) + +{ + CFunctions *pCVar1; + int iVar2; + uint uVar3; + undefined4 uVar4; + long lVar5; + int iVar6; + uint uVar7; + int iVar8; + + iVar6 = *(int *)(this + 0x1dfc); + if (iVar6 == *(int *)(this + 0x1df8)) { + *(int *)(this + 0x1e18) = iVar6; + *(int *)(this + 0x1e14) = iVar6; + memset(this + 0x2638,0x80,0x400); + memset(*(void **)(this + 0x170),0x80,(ulong)*(uint *)(this + 0x76d0)); + memset(this + 0x1e38,0,0x400); + *(undefined4 *)(this + 0x2038) = *(undefined4 *)(this + 0x76d0); + memset(*(void **)(this + 0x180),0x80,(ulong)*(uint *)(this + 0x76d8)); + *(undefined4 *)(this + 0x1e24) = 1; + return; + } + if (*(int *)(this + 0x10) != 0) { + SubSectionEnlarge(this); + if (*(int *)(this + 0x4a3c) != 0) { + pCVar1 = this + 0x188; + memcpy(this + 0x5b0,pCVar1,0x400); + memcpy(this + 0x9d8,pCVar1,0x400); + memcpy(this + 0xe00,pCVar1,0x400); + *(int *)(this + 0x4a3c) = 0; + } + goto LAB_0016bab8; + } + if (*(int *)(this + 100) == 0) { + lVar5 = 0x1e00; + } + else { + SearchSeparateLine(this); + lVar5 = 0x4a44; + } + iVar6 = *(int *)(this + 0x34); + uVar7 = (uint)(*(int *)(this + 0x24) * 1000) >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar7) { + uVar7 = 0xffff; + } + iVar8 = iVar6; + if (iVar6 < -99) { + iVar8 = -100; + } + iVar2 = iVar6; + if (99 < iVar6) { + iVar2 = 100; + } + if (iVar6 < 0) { + iVar2 = iVar8; + } + iVar6 = (iVar6 >> 0x1f & 0xffffff9cU) + 0x96; + iVar8 = 0; + if (iVar6 != 0) { + iVar8 = (int)(uVar7 * iVar2) / iVar6; + } + uVar7 = uVar7 - iVar8; + if ((*(int *)(this + 0x1200) != 0) && (0.0 < *(float *)(this + 0x74))) { + if (*(int *)(this + 0x1310) == 2) { + iVar6 = *(int *)(this + 0x1320); + iVar8 = *(int *)(this + 0x131c); + if (iVar6 - iVar8 == 50000) goto LAB_0016b9c0; + } + else if (*(int *)(this + 0x1310) == 1) { + iVar6 = *(int *)(this + 0x1320); + iVar8 = *(int *)(this + 0x131c); +LAB_0016b9c0: + iVar6 = iVar6 + iVar8; + if (iVar6 < 0) { + iVar6 = iVar6 + 1; + } + uVar7 = uVar7 + (int)((*(float *)(this + 0x74) * + (float)(int)((*(int *)(this + 0x3c) - (iVar6 >> 1)) * uVar7)) / + DAT_004394f4); + } + } + if ((int)uVar7 < 0x81) { + uVar7 = 0x80; + } + uVar3 = *(int *)(this + lVar5) - (uVar7 >> 1); + uVar7 = (uVar7 >> 1) + *(int *)(this + lVar5); + if (*(uint *)(this + 0x1dfc) <= uVar3) { + uVar3 = *(uint *)(this + 0x1dfc); + } + if (uVar7 <= *(uint *)(this + 0x1df8)) { + uVar7 = *(uint *)(this + 0x1df8); + } + *(uint *)(this + 0x1e18) = uVar3; + *(uint *)(this + 0x1e14) = uVar7; + if ((int)uVar3 < 0) { + *(undefined4 *)(this + 0x1e18) = 0; + } + if (0xffff < (int)uVar7) { + *(undefined4 *)(this + 0x1e14) = 0xffff; + } + HistDeRedundance(this); + if (*(int *)(this + 0x28) == 0) { + if (*(int *)(this + 0x4a3c) == 0) goto LAB_0016bab8; + pCVar1 = this + 0x188; + memcpy(this + 0x5b0,pCVar1,0x400); + memcpy(this + 0x9d8,pCVar1,0x400); + memcpy(this + 0xe00,pCVar1,0x400); + uVar4 = 0; + } + else { + IsothermalPalette(this); + uVar4 = 1; + } + *(undefined4 *)(this + 0x4a3c) = uVar4; +LAB_0016bab8: + MapTemperature((int)this); + return; +} + + +================================================================== + +### FUNC 0016bacc (476 bytes) name=FilterDetailEnhancement_Simple + +/* CFunctions::FilterDetailEnhancement_Simple(unsigned int) */ + +void __thiscall CFunctions::FilterDetailEnhancement_Simple(CFunctions *this,uint param_1) + +{ + int iVar1; + int *piVar2; + ushort *puVar3; + int iVar4; + byte *pbVar5; + uint uVar6; + uint uVar7; + int iVar8; + + if (param_1 != 0) { + uVar6 = (uint)(*(int *)(this + 0x24) * 1000) >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar6) { + uVar6 = 0xffff; + } + uVar7 = 0; + uVar6 = param_1 * uVar6 >> 7 & 0xffffff; + do { + iVar4 = *(int *)(this + 0x1da8); + if (iVar4 != 6) { + iVar8 = 6 - iVar4; + piVar2 = (int *)(*(long *)(this + 0x178) + (ulong)(iVar4 * (uVar7 + 3)) * 4 + 0xc); + puVar3 = (ushort *)(*(long *)(this + 0x140) + (ulong)(iVar4 * uVar7) * 2); + do { + LocalMap7x7_Simple(this,piVar2,puVar3,uVar6); + iVar8 = iVar8 + 1; + piVar2 = piVar2 + 1; + puVar3 = puVar3 + 1; + } while (iVar8 != 0); + } + iVar4 = *(int *)(this + 0x1dac); + uVar7 = uVar7 + 2; + } while (uVar7 <= iVar4 - 7U); + if (iVar4 != 7) { + uVar7 = 1; + do { + iVar8 = *(int *)(this + 0x1da8); + if (iVar8 != 6) { + iVar4 = 6 - iVar8; + piVar2 = (int *)(*(long *)(this + 0x178) + (ulong)(iVar8 * (uVar7 + 3)) * 4 + 0xc); + puVar3 = (ushort *)(*(long *)(this + 0x140) + (ulong)(iVar8 * uVar7) * 2); + do { + LocalMap7x7_Simple(this,piVar2,puVar3,uVar6); + iVar4 = iVar4 + 1; + piVar2 = piVar2 + 1; + puVar3 = puVar3 + 1; + } while (iVar4 != 0); + iVar4 = *(int *)(this + 0x1dac); + } + uVar7 = uVar7 + 2; + } while (uVar7 <= iVar4 - 7U); + if (iVar4 - 3U < 4) { + return; + } + } + uVar6 = 3; + do { + iVar8 = *(int *)(this + 0x1da8); + if (iVar8 != 6) { + iVar4 = 6 - iVar8; + pbVar5 = (byte *)(*(long *)(this + 0x170) + (ulong)(iVar8 * uVar6) + 3); + piVar2 = (int *)(*(long *)(this + 0x178) + (ulong)(iVar8 * uVar6) * 4 + 0xc); + do { + iVar4 = iVar4 + 1; + iVar1 = *piVar2 * param_1; + iVar8 = iVar1 + 0x7fff; + if (-1 < iVar1) { + iVar8 = iVar1; + } + uVar7 = (uint)*pbVar5 + (iVar8 >> 0xf); + uVar7 = uVar7 & ((int)uVar7 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar7) { + uVar7 = 0xff; + } + *pbVar5 = (byte)uVar7; + pbVar5 = pbVar5 + 1; + piVar2 = piVar2 + 1; + } while (iVar4 != 0); + iVar4 = *(int *)(this + 0x1dac); + } + uVar6 = uVar6 + 1; + } while (uVar6 < iVar4 - 3U); + } + return; +} + + +================================================================== + +### FUNC 0016bca8 (496 bytes) name=FilterDetailEnhancement + +/* CFunctions::FilterDetailEnhancement(unsigned int) */ + +void __thiscall CFunctions::FilterDetailEnhancement(CFunctions *this,uint param_1) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + int *piVar5; + int *piVar6; + uint uVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + ulong uVar11; + int iVar12; + + if (param_1 != 0) { + memset(*(void **)(this + 0x178),0,(ulong)*(uint *)(this + 0x76d0) << 2); + uVar3 = (uint)(*(int *)(this + 0x24) * 1000) >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar3) { + uVar3 = 0xffff; + } + uVar7 = 6; + if (*(uint *)(this + 0x1dac) != 6) { + uVar9 = 0; + uVar7 = *(uint *)(this + 0x1dac); + do { + iVar12 = *(int *)(this + 0x1da8); + if (iVar12 != 6) { + uVar7 = iVar12 * uVar9; + uVar10 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar7 << 2; + uVar11 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar7 << 1; + iVar12 = 6 - iVar12; + do { + LocalMap7x7(this,(int *)(*(long *)(this + 0x178) + uVar10), + (ushort *)(*(long *)(this + 0x140) + uVar11),param_1 * uVar3 >> 7 & 0xffffff + ); + uVar10 = uVar10 + 4; + iVar12 = iVar12 + 1; + uVar11 = uVar11 + 2; + } while (iVar12 != 0); + uVar7 = *(uint *)(this + 0x1dac); + } + uVar9 = uVar9 + 1; + } while (uVar9 < uVar7 - 6); + if (uVar7 == 0) { + return; + } + } + lVar4 = *(long *)(this + 0x170); + piVar6 = *(int **)(this + 0x178); + uVar3 = 0; + do { + if (uVar3 < 6) { + uVar9 = (uVar3 >> 1) + 1; + uVar8 = *(uint *)(this + 0x1da8); + } + else if (uVar7 < uVar3 + 7) { + uVar9 = (1 - uVar3) + uVar7 >> 1; + uVar8 = *(uint *)(this + 0x1da8); + } + else { + uVar9 = 4; + uVar8 = *(uint *)(this + 0x1da8); + } + if (uVar8 != 0) { + uVar10 = 0; + iVar12 = 1; + piVar5 = piVar6; + do { + if ((uint)uVar10 < 6) { + uVar7 = ((uint)(uVar10 >> 1) & 0x7fffffff) + 1; + } + else if (uVar8 < (uint)uVar10 + 7) { + uVar7 = uVar8 + iVar12 >> 1; + } + else { + uVar7 = 4; + } + piVar6 = piVar5 + 1; + iVar1 = 0x80000; + if (uVar7 * uVar9 != 0x10) { + iVar1 = uVar7 * uVar9 * 0x8000; + } + iVar2 = 0; + if (iVar1 != 0) { + iVar2 = (int)(*piVar5 * param_1) / iVar1; + } + uVar7 = iVar2 + (uint)*(byte *)(lVar4 + uVar10); + uVar7 = uVar7 & ((int)uVar7 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar7) { + uVar7 = 0xff; + } + *(char *)(lVar4 + uVar10) = (char)uVar7; + uVar8 = *(uint *)(this + 0x1da8); + uVar10 = uVar10 + 1; + iVar12 = iVar12 + -1; + piVar5 = piVar6; + } while ((uint)uVar10 < uVar8); + uVar7 = *(uint *)(this + 0x1dac); + lVar4 = lVar4 + uVar10; + } + uVar3 = uVar3 + 1; + } while (uVar3 < uVar7); + } + return; +} + + +================================================================== + +### FUNC 0016be98 (916 bytes) name=ResizeBMP_2X + +/* CFunctions::ResizeBMP_2X() */ + +void __thiscall CFunctions::ResizeBMP_2X(CFunctions *this) + +{ + long lVar1; + byte *pbVar2; + uint uVar3; + byte bVar4; + int iVar5; + long lVar6; + uint *puVar7; + byte *pbVar8; + uint *puVar9; + long lVar10; + long lVar11; + uint *puVar12; + uint uVar13; + long lVar14; + uint uVar15; + int iVar16; + int iVar17; + ulong uVar18; + int iVar19; + long lVar20; + byte *pbVar21; + + uVar3 = *(uint *)(this + 0x1da8); + lVar11 = (long)(int)uVar3; + iVar17 = *(int *)(this + 0x1dac); + lVar14 = *(long *)(this + 0x170); + puVar12 = *(uint **)(this + 0xd8); + iVar5 = uVar3 * 2; + if (iVar17 - 1U != 0 && 0 < iVar17) { + uVar15 = uVar3; + if ((int)uVar3 < 0) { + uVar15 = uVar3 + 1; + } + uVar18 = 0; + lVar20 = lVar14 + 2; + puVar7 = puVar12; + lVar6 = lVar14; + do { + lVar6 = lVar6 + lVar11; + if (2 < (int)uVar3) { + lVar10 = 0; + puVar9 = puVar7; + do { + pbVar8 = (byte *)(lVar20 + lVar10); + bVar4 = pbVar8[-1]; + lVar1 = lVar10 + 4; + pbVar2 = (byte *)(lVar6 + lVar10); + *puVar9 = (uint)bVar4 << 0x10 | + (uint)pbVar8[-2] | ((uint)bVar4 + (uint)pbVar8[-2] >> 1) << 8 | + ((uint)*pbVar8 + (uint)bVar4 >> 1) << 0x18; + iVar16 = (uint)pbVar2[1] + (uint)pbVar8[-1]; + lVar10 = lVar10 + 2; + puVar9[(long)((ulong)uVar15 << 0x20) >> 0x21] = + ((uint)*pbVar2 + (uint)pbVar8[-2] >> 1 | + ((uint)*pbVar2 + (uint)pbVar8[-2] + (uint)pbVar8[-1] + (uint)pbVar2[1] >> 2) << 8) + + (iVar16 * 0x8000 & 0xff0000U) + + ((iVar16 + (uint)*pbVar8 + (uint)pbVar2[2]) * 0x400000 & 0xff000000); + puVar9 = puVar9 + 1; + } while (lVar1 < lVar11); + } + lVar10 = uVar18 * lVar11 + lVar11 + -2; + pbVar8 = (byte *)(lVar14 + lVar10); + iVar16 = (int)(lVar11 + -2) + iVar5 * (int)uVar18; + pbVar2 = (byte *)(lVar14 + lVar10 + lVar11); + *(ushort *)((long)puVar12 + (long)iVar16 * 2) = + (ushort)*pbVar8 | (ushort)(((uint)pbVar8[1] + (uint)*pbVar8 >> 1) << 8); + uVar18 = uVar18 + 1; + uVar13 = (uint)*pbVar2 + (uint)*pbVar8; + puVar7 = puVar7 + lVar11; + lVar20 = lVar20 + lVar11; + *(ushort *)((long)puVar12 + (long)(int)(iVar16 + uVar3) * 2) = + (ushort)(uVar13 >> 1) | (ushort)((uVar13 + pbVar8[1] + (uint)pbVar2[1] >> 2 & 0xff) << 8) + ; + } while (uVar18 != iVar17 - 1U); + uVar18 = (ulong)(iVar17 - 1U); + if (iVar17 - 1U != 0 && 0 < iVar17) { + iVar19 = uVar3 * 4; + iVar16 = 0; + pbVar8 = (byte *)(lVar14 + (int)(uVar3 - 1)); + do { + pbVar2 = pbVar8 + lVar11; + uVar18 = uVar18 - 1; + *(byte *)((long)puVar12 + (long)(int)((uVar3 - 1) * 2 + iVar16)) = *pbVar8; + *(byte *)((long)puVar12 + (long)(iVar5 + -1 + iVar16)) = + (char)((uint)*pbVar8 * 3 >> 2) + (pbVar8[-1] >> 2); + *(char *)((long)puVar12 + (long)(iVar19 + -2 + iVar16)) = + (char)((uint)*pbVar2 + (uint)*pbVar8 >> 1); + *(char *)((long)puVar12 + (long)(iVar19 + -1 + iVar16)) = + (char)((uint)pbVar2[-1] + (uint)pbVar8[-1] + ((uint)*pbVar2 + (uint)*pbVar8) * 3 >> 3); + iVar16 = iVar16 + iVar19; + pbVar8 = pbVar2; + } while (uVar18 != 0); + } + } + iVar17 = iVar17 + -1; + uVar15 = uVar3 - 1; + iVar16 = uVar3 * iVar17 * 4; + if (1 < (int)uVar3) { + uVar18 = (ulong)uVar15; + iVar19 = iVar16 + 1; + uVar13 = uVar3 * (iVar17 * 4 | 2U) | 1; + pbVar8 = (byte *)(lVar14 + (int)(iVar17 * uVar3)); + do { + uVar18 = uVar18 - 1; + *(byte *)((long)puVar12 + (long)(iVar19 + -1)) = *pbVar8; + pbVar21 = pbVar8 + 1; + *(char *)((long)puVar12 + (long)iVar19) = (char)((uint)*pbVar21 + (uint)*pbVar8 >> 1); + pbVar2 = pbVar8 + -lVar11; + iVar19 = iVar19 + 2; + *(byte *)((long)puVar12 + (long)(int)(uVar13 - 1)) = + (char)((uint)*pbVar8 * 3 >> 2) + (*pbVar2 >> 2); + *(char *)((long)puVar12 + (long)(int)uVar13) = + (char)((uint)pbVar2[1] + (uint)*pbVar2 + ((uint)*pbVar21 + (uint)*pbVar8) * 3 >> 3); + uVar13 = uVar13 + 2; + pbVar8 = pbVar21; + } while (uVar18 != 0); + } + lVar14 = (long)(int)(iVar17 * uVar3) + (long)(int)uVar15; + uVar3 = iVar16 + uVar15 * 2; + uVar15 = uVar3 + iVar5; + *(undefined1 *)(*(long *)(this + 0xd8) + (long)(int)uVar3) = + *(undefined1 *)(*(long *)(this + 0x170) + lVar14); + *(char *)(*(long *)(this + 0xd8) + (long)(int)(uVar3 | 1)) = + (char)((uint)*(byte *)(*(long *)(this + 0x170) + lVar14) * 3 + + (uint)((byte *)(*(long *)(this + 0x170) + lVar14))[-1] >> 2); + *(char *)(*(long *)(this + 0xd8) + (long)(int)uVar15) = + (char)((uint)*(byte *)(*(long *)(this + 0x170) + lVar14) * 3 + + (uint)*(byte *)(*(long *)(this + 0x170) + ((int)lVar14 - lVar11)) >> 2); + lVar11 = *(long *)(this + 0xd8); + *(char *)(lVar11 + (int)(uVar15 | 1)) = + (char)(((uint)*(byte *)(lVar11 + (int)(uVar3 | 1)) + (uint)*(byte *)(lVar11 + (int)uVar3) + + (uint)*(byte *)(lVar11 + (int)uVar15)) / 3); + return; +} + + +================================================================== + +### FUNC 0016c22c (964 bytes) name=ResizeBMP_2to3 + +/* CFunctions::ResizeBMP_2to3() */ + +void __thiscall CFunctions::ResizeBMP_2to3(CFunctions *this) + +{ + ulong uVar1; + long lVar2; + undefined1 *puVar3; + byte *pbVar4; + byte bVar5; + byte bVar6; + byte bVar7; + byte bVar8; + byte bVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + byte *pbVar14; + uint uVar15; + byte *pbVar16; + byte *pbVar17; + size_t __n; + undefined1 *puVar18; + uint uVar19; + int iVar20; + long lVar21; + ulong uVar22; + undefined1 *puVar23; + void *__src; + undefined1 *puVar24; + uint uVar25; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + + uVar15 = *(uint *)(this + 0x1da8); + __n = (size_t)uVar15; + puVar24 = (undefined1 *) + ((*(long *)(this + 0xd8) + + (ulong)(uint)((*(int *)(this + 0x1db4) + 3) * *(int *)(this + 0x1db0))) - + (ulong)((*(int *)(this + 0x1dac) + 1) * (uVar15 + 8))); + puVar18 = puVar24; + if (*(int *)(this + 0x1dac) == 0) { + uVar19 = 0; + } + else { + __src = *(void **)(this + 0x170); + uVar25 = 0; + do { + memcpy(puVar18,__src,__n); + uVar19 = *(uint *)(this + 0x1da8); + uVar25 = uVar25 + 1; + uVar15 = (uint)*(byte *)((long)__src + (ulong)(uVar19 - 1)) * 2 - + (uint)*(byte *)((long)__src + (ulong)(uVar19 - 2)); + uVar15 = uVar15 & ((int)uVar15 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar15) { + uVar15 = 0xff; + } + puVar18[uVar19] = (char)uVar15; + uVar15 = *(uint *)(this + 0x1da8); + __n = (size_t)uVar15; + uVar19 = *(uint *)(this + 0x1dac); + __src = (void *)((long)__src + __n); + puVar18 = puVar18 + (uVar15 + 8); + } while (uVar25 < uVar19); + } + uVar25 = uVar15 + 1; + if (uVar25 != 0) { + uVar22 = (ulong)(uVar15 + 8); + pbVar16 = puVar18 + -uVar22; + uVar1 = (ulong)uVar15 + 1; + pbVar17 = pbVar16 + -uVar22; + if (uVar1 < 0x10) goto LAB_0016c424; + uVar19 = uVar15 + 1 & 0xf; + lVar21 = uVar1 - uVar19; + if (lVar21 == 0) goto LAB_0016c424; + lVar2 = (ulong)uVar15 + 1; + if (puVar18 < puVar18 + lVar2 + uVar22 * -2 && pbVar17 < puVar18 + lVar2) goto LAB_0016c424; + if (puVar18 < puVar18 + (lVar2 - uVar22) && pbVar16 < puVar18 + lVar2) goto LAB_0016c424; + puVar3 = puVar18 + lVar21; + pbVar16 = pbVar16 + lVar21; + pbVar17 = pbVar17 + lVar21; + uVar25 = uVar25 - (int)lVar21; + puVar23 = puVar18; + do { + pbVar4 = puVar23 + -uVar22; + pbVar14 = puVar23 + uVar22 * -2; + lVar21 = lVar21 + -0x10; + auVar32._0_4_ = (uint)pbVar4[4] * 2 - (uint)pbVar14[4]; + auVar32._4_4_ = (uint)pbVar4[5] * 2 - (uint)pbVar14[5]; + auVar32._8_4_ = (uint)pbVar4[6] * 2 - (uint)pbVar14[6]; + auVar32._12_4_ = (uint)pbVar4[7] * 2 - (uint)pbVar14[7]; + auVar28._0_4_ = + (CONCAT12(pbVar4[1],(ushort)*pbVar4) & 0xffff) * 2 - + (CONCAT12(pbVar14[1],(ushort)*pbVar14) & 0xffff); + auVar28._4_4_ = (uint)pbVar4[1] * 2 - (uint)pbVar14[1]; + auVar28._8_4_ = (uint)pbVar4[2] * 2 - (uint)pbVar14[2]; + auVar28._12_4_ = (uint)pbVar4[3] * 2 - (uint)pbVar14[3]; + auVar31._0_4_ = (uint)pbVar4[0xc] * 2 - (uint)pbVar14[0xc]; + auVar31._4_4_ = (uint)pbVar4[0xd] * 2 - (uint)pbVar14[0xd]; + auVar31._8_4_ = (uint)pbVar4[0xe] * 2 - (uint)pbVar14[0xe]; + auVar31._12_4_ = (uint)pbVar4[0xf] * 2 - (uint)pbVar14[0xf]; + auVar29._0_4_ = + (CONCAT12(pbVar4[9],(ushort)pbVar4[8]) & 0xffff) * 2 - + (CONCAT12(pbVar14[9],(ushort)pbVar14[8]) & 0xffff); + auVar29._4_4_ = (uint)pbVar4[9] * 2 - (uint)pbVar14[9]; + auVar29._8_4_ = (uint)pbVar4[10] * 2 - (uint)pbVar14[10]; + auVar29._12_4_ = (uint)pbVar4[0xb] * 2 - (uint)pbVar14[0xb]; + auVar30 = NEON_smax(auVar29,ZEXT816(0),4); + auVar26 = NEON_smax(auVar28,ZEXT816(0),4); + auVar28 = NEON_smax(auVar31,ZEXT816(0),4); + auVar33 = NEON_smax(auVar32,ZEXT816(0),4); + auVar27._8_8_ = 0xff000000ff; + auVar27._0_8_ = 0xff000000ff; + auVar27 = NEON_smin(auVar26,auVar27,4); + auVar26._8_8_ = 0xff000000ff; + auVar26._0_8_ = 0xff000000ff; + auVar31 = NEON_smin(auVar30,auVar26,4); + auVar30._8_8_ = 0xff000000ff; + auVar30._0_8_ = 0xff000000ff; + auVar30 = NEON_smin(auVar33,auVar30,4); + auVar33._8_8_ = 0xff000000ff; + auVar33._0_8_ = 0xff000000ff; + auVar26 = NEON_smin(auVar28,auVar33,4); + puVar23[8] = auVar31[0]; + puVar23[9] = auVar31[4]; + puVar23[10] = auVar31[8]; + puVar23[0xb] = auVar31[0xc]; + puVar23[0xc] = auVar26[0]; + puVar23[0xd] = auVar26[4]; + puVar23[0xe] = auVar26[8]; + puVar23[0xf] = auVar26[0xc]; + *puVar23 = auVar27[0]; + puVar23[1] = auVar27[4]; + puVar23[2] = auVar27[8]; + puVar23[3] = auVar27[0xc]; + puVar23[4] = auVar30[0]; + puVar23[5] = auVar30[4]; + puVar23[6] = auVar30[8]; + puVar23[7] = auVar30[0xc]; + puVar23 = puVar23 + 0x10; + puVar18 = puVar3; + } while (lVar21 != 0); + while (uVar19 != 0) { +LAB_0016c424: + uVar25 = uVar25 - 1; + uVar15 = (uint)*pbVar16 * 2 - (uint)*pbVar17; + uVar15 = uVar15 & ((int)uVar15 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar15) { + uVar15 = 0xff; + } + *puVar18 = (char)uVar15; + puVar18 = puVar18 + 1; + pbVar16 = pbVar16 + 1; + pbVar17 = pbVar17 + 1; + uVar19 = uVar25; + } + uVar19 = *(uint *)(this + 0x1dac); + } + if (uVar19 != 0) { + uVar15 = 0; + do { + uVar25 = *(uint *)(this + 0x1da8); + if (uVar25 >> 1 != 0) { + pbVar17 = puVar24 + (uVar25 + 8) * uVar15; + pbVar16 = (byte *)(*(long *)(this + 0xd8) + + (ulong)(*(int *)(this + 0x1db0) * (uVar15 * 3 >> 1))); + iVar20 = -(uVar25 >> 1); + while( true ) { + iVar20 = iVar20 + 1; + bVar5 = *pbVar17; + bVar6 = pbVar17[2]; + iVar10 = (uint)pbVar17[1] * 2; + bVar7 = pbVar17[(ulong)uVar25 + 8]; + iVar11 = (uint)pbVar17[1] * 6; + bVar8 = pbVar17[(ulong)uVar25 + 9]; + bVar9 = pbVar17[(ulong)uVar25 + 10]; + *pbVar16 = bVar5; + iVar12 = (uint)bVar7 * 2; + pbVar16[1] = (byte)((iVar11 + (uint)bVar5 * 3) * 0x39 >> 9); + pbVar16[2] = (byte)(((uint)bVar6 * 3 + iVar11) * 0x39 >> 9); + iVar11 = (uint)bVar8 * 4; + iVar13 = (uint)bVar7 * 6; + pbVar4 = pbVar16 + *(uint *)(this + 0x1db0); + *pbVar4 = (byte)((iVar13 + (uint)bVar5 * 3) * 0x39 >> 9); + pbVar4[1] = (byte)((iVar10 + (uint)bVar5 + iVar12 + iVar11) * 0x39 >> 9); + pbVar4[2] = (byte)((iVar10 + (uint)bVar6 + iVar11 + (uint)bVar9 * 2) * 0x39 >> 9); + pbVar4 = pbVar17 + (*(int *)(this + 0x1da8) * 2 + 0x10); + bVar5 = *pbVar4; + bVar6 = pbVar4[1]; + bVar7 = pbVar4[2]; + pbVar4 = pbVar16 + (uint)(*(int *)(this + 0x1db0) << 1); + *pbVar4 = (byte)(((uint)bVar5 * 3 + iVar13) * 0x39 >> 9); + pbVar4[1] = (byte)((iVar11 + iVar12 + (uint)bVar5 + (uint)bVar6 * 2) * 0x39 >> 9); + pbVar4[2] = (byte)(((uint)bVar9 * 2 + iVar11 + (uint)bVar6 * 2 + (uint)bVar7) * 0x39 >> 9) + ; + if (iVar20 == 0) break; + uVar25 = *(uint *)(this + 0x1da8); + pbVar17 = pbVar17 + 2; + pbVar16 = pbVar16 + 3; + } + uVar19 = *(uint *)(this + 0x1dac); + } + uVar15 = uVar15 + 2; + } while (uVar15 < uVar19); + } + return; +} + + +================================================================== + +### FUNC 0016c5f0 (1524 bytes) name=ResizeBMP_3to5 + +/* CFunctions::ResizeBMP_3to5() */ + +void __thiscall CFunctions::ResizeBMP_3to5(CFunctions *this) + +{ + ulong uVar1; + long lVar2; + int iVar3; + undefined1 *puVar4; + byte *pbVar5; + byte bVar6; + byte bVar7; + byte bVar8; + byte bVar9; + byte bVar10; + byte bVar11; + byte bVar12; + byte bVar13; + int iVar14; + int iVar15; + int iVar16; + byte *pbVar17; + int iVar18; + uint uVar19; + uint uVar20; + uint uVar21; + uint uVar22; + uint uVar23; + byte *pbVar24; + byte *pbVar25; + size_t __n; + undefined1 *puVar26; + long lVar27; + ulong uVar28; + int iVar29; + uint uVar30; + undefined1 *puVar31; + uint uVar32; + void *__src; + undefined1 *puVar33; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + + uVar23 = *(uint *)(this + 0x1da8); + __n = (size_t)uVar23; + puVar33 = (undefined1 *) + ((*(long *)(this + 0xd8) + + (ulong)(uint)((*(int *)(this + 0x1db4) + 3) * *(int *)(this + 0x1db0))) - + (ulong)((*(int *)(this + 0x1dac) + 1) * (uVar23 + 8))); + puVar26 = puVar33; + if (*(int *)(this + 0x1dac) == 0) { + uVar19 = 0; + } + else { + __src = *(void **)(this + 0x170); + uVar20 = 0; + do { + memcpy(puVar26,__src,__n); + uVar19 = *(uint *)(this + 0x1da8); + uVar20 = uVar20 + 1; + uVar23 = (uint)*(byte *)((long)__src + (ulong)(uVar19 - 1)) * 2 - + (uint)*(byte *)((long)__src + (ulong)(uVar19 - 2)); + uVar23 = uVar23 & ((int)uVar23 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar23) { + uVar23 = 0xff; + } + puVar26[uVar19] = (char)uVar23; + uVar23 = *(uint *)(this + 0x1da8); + __n = (size_t)uVar23; + uVar19 = *(uint *)(this + 0x1dac); + __src = (void *)((long)__src + __n); + puVar26 = puVar26 + (uVar23 + 8); + } while (uVar20 < uVar19); + } + uVar20 = uVar23 + 1; + if (uVar20 != 0) { + uVar28 = (ulong)(uVar23 + 8); + pbVar24 = puVar26 + -uVar28; + uVar1 = (ulong)uVar23 + 1; + pbVar25 = pbVar24 + -uVar28; + if (uVar1 < 0x10) goto LAB_0016c7f0; + uVar19 = uVar23 + 1 & 0xf; + lVar27 = uVar1 - uVar19; + if (lVar27 == 0) goto LAB_0016c7f0; + lVar2 = (ulong)uVar23 + 1; + if (puVar26 < puVar26 + lVar2 + uVar28 * -2 && pbVar25 < puVar26 + lVar2) goto LAB_0016c7f0; + if (puVar26 < puVar26 + (lVar2 - uVar28) && pbVar24 < puVar26 + lVar2) goto LAB_0016c7f0; + puVar4 = puVar26 + lVar27; + pbVar24 = pbVar24 + lVar27; + pbVar25 = pbVar25 + lVar27; + uVar20 = uVar20 - (int)lVar27; + puVar31 = puVar26; + do { + pbVar5 = puVar31 + -uVar28; + pbVar17 = puVar31 + uVar28 * -2; + lVar27 = lVar27 + -0x10; + auVar40._0_4_ = (uint)pbVar5[4] * 2 - (uint)pbVar17[4]; + auVar40._4_4_ = (uint)pbVar5[5] * 2 - (uint)pbVar17[5]; + auVar40._8_4_ = (uint)pbVar5[6] * 2 - (uint)pbVar17[6]; + auVar40._12_4_ = (uint)pbVar5[7] * 2 - (uint)pbVar17[7]; + auVar36._0_4_ = + (CONCAT12(pbVar5[1],(ushort)*pbVar5) & 0xffff) * 2 - + (CONCAT12(pbVar17[1],(ushort)*pbVar17) & 0xffff); + auVar36._4_4_ = (uint)pbVar5[1] * 2 - (uint)pbVar17[1]; + auVar36._8_4_ = (uint)pbVar5[2] * 2 - (uint)pbVar17[2]; + auVar36._12_4_ = (uint)pbVar5[3] * 2 - (uint)pbVar17[3]; + auVar39._0_4_ = (uint)pbVar5[0xc] * 2 - (uint)pbVar17[0xc]; + auVar39._4_4_ = (uint)pbVar5[0xd] * 2 - (uint)pbVar17[0xd]; + auVar39._8_4_ = (uint)pbVar5[0xe] * 2 - (uint)pbVar17[0xe]; + auVar39._12_4_ = (uint)pbVar5[0xf] * 2 - (uint)pbVar17[0xf]; + auVar37._0_4_ = + (CONCAT12(pbVar5[9],(ushort)pbVar5[8]) & 0xffff) * 2 - + (CONCAT12(pbVar17[9],(ushort)pbVar17[8]) & 0xffff); + auVar37._4_4_ = (uint)pbVar5[9] * 2 - (uint)pbVar17[9]; + auVar37._8_4_ = (uint)pbVar5[10] * 2 - (uint)pbVar17[10]; + auVar37._12_4_ = (uint)pbVar5[0xb] * 2 - (uint)pbVar17[0xb]; + auVar38 = NEON_smax(auVar37,ZEXT816(0),4); + auVar34 = NEON_smax(auVar36,ZEXT816(0),4); + auVar36 = NEON_smax(auVar39,ZEXT816(0),4); + auVar41 = NEON_smax(auVar40,ZEXT816(0),4); + auVar35._8_8_ = 0xff000000ff; + auVar35._0_8_ = 0xff000000ff; + auVar35 = NEON_smin(auVar34,auVar35,4); + auVar34._8_8_ = 0xff000000ff; + auVar34._0_8_ = 0xff000000ff; + auVar39 = NEON_smin(auVar38,auVar34,4); + auVar38._8_8_ = 0xff000000ff; + auVar38._0_8_ = 0xff000000ff; + auVar38 = NEON_smin(auVar41,auVar38,4); + auVar41._8_8_ = 0xff000000ff; + auVar41._0_8_ = 0xff000000ff; + auVar34 = NEON_smin(auVar36,auVar41,4); + puVar31[8] = auVar39[0]; + puVar31[9] = auVar39[4]; + puVar31[10] = auVar39[8]; + puVar31[0xb] = auVar39[0xc]; + puVar31[0xc] = auVar34[0]; + puVar31[0xd] = auVar34[4]; + puVar31[0xe] = auVar34[8]; + puVar31[0xf] = auVar34[0xc]; + *puVar31 = auVar35[0]; + puVar31[1] = auVar35[4]; + puVar31[2] = auVar35[8]; + puVar31[3] = auVar35[0xc]; + puVar31[4] = auVar38[0]; + puVar31[5] = auVar38[4]; + puVar31[6] = auVar38[8]; + puVar31[7] = auVar38[0xc]; + puVar31 = puVar31 + 0x10; + puVar26 = puVar4; + } while (lVar27 != 0); + while (uVar19 != 0) { +LAB_0016c7f0: + uVar20 = uVar20 - 1; + uVar23 = (uint)*pbVar24 * 2 - (uint)*pbVar25; + uVar23 = uVar23 & ((int)uVar23 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar23) { + uVar23 = 0xff; + } + *puVar26 = (char)uVar23; + puVar26 = puVar26 + 1; + pbVar24 = pbVar24 + 1; + pbVar25 = pbVar25 + 1; + uVar19 = uVar20; + } + uVar19 = *(uint *)(this + 0x1dac); + } + if (uVar19 != 0) { + uVar23 = 0; + do { + uVar20 = *(uint *)(this + 0x1da8); + if (2 < uVar20) { + pbVar25 = puVar33 + (uVar20 + 8) * uVar23; + pbVar24 = (byte *)(*(long *)(this + 0xd8) + + (ulong)(*(int *)(this + 0x1db0) * ((uVar23 * 5) / 3))); + iVar29 = -(uVar20 / 3); + while( true ) { + iVar29 = iVar29 + 1; + bVar6 = *pbVar25; + bVar7 = pbVar25[2]; + bVar8 = pbVar25[(ulong)uVar20 + 9]; + bVar9 = pbVar25[1]; + bVar10 = pbVar25[(ulong)uVar20 + 8]; + bVar11 = pbVar25[(ulong)uVar20 + 10]; + bVar12 = pbVar25[3]; + bVar13 = pbVar25[(ulong)uVar20 + 0xb]; + *pbVar24 = bVar6; + uVar21 = (uint)bVar9; + uVar19 = (uint)bVar11; + uVar20 = (uint)bVar8; + iVar14 = ((uint)bVar6 * 4 + (uint)bVar6) * 2; + uVar30 = (uint)bVar10; + iVar3 = (uint)bVar11 + uVar19 * 2; + pbVar24[2] = (byte)(((uint)bVar7 * 5 + (uint)bVar9 * 0x14) * 0x29 >> 10); + pbVar24[3] = (byte)((uVar21 * 5 + (uint)bVar7 * 0x14) * 0x29 >> 10); + pbVar24[4] = (byte)(((uint)bVar7 * 0xf + (uint)bVar12 * 10) * 0x29 >> 10); + pbVar24[1] = (byte)((((uint)bVar9 * 0x10 - uVar21) + iVar14) * 0x29 >> 10); + pbVar5 = pbVar24 + *(uint *)(this + 0x1db0); + *pbVar5 = (byte)(((uint)bVar10 * 0xf + iVar14) * 0x29 >> 10); + pbVar5[1] = (byte)(((uint)bVar8 * 9 + (uint)bVar6 * 4 + (uVar30 + bVar9) * 6) * 0x29 >> 10 + ); + pbVar5[2] = (byte)(((uint)bVar7 * 2 + uVar21 * 8 + uVar20 * 0xc + iVar3) * 0x29 >> 10); + pbVar5[3] = (byte)(((uint)bVar7 * 8 + (uint)bVar9 * 2 + uVar20 * 3 + iVar3 * 4) * 0x29 >> + 10); + pbVar5[4] = (byte)(((uint)bVar11 * 9 + (uint)bVar12 * 4 + ((uint)bVar13 + (uint)bVar7) * 6 + ) * 0x29 >> 10); + pbVar5 = pbVar25 + (*(int *)(this + 0x1da8) * 2 + 0x10); + bVar6 = *pbVar5; + bVar7 = pbVar5[1]; + bVar9 = pbVar5[2]; + bVar11 = pbVar5[3]; + iVar15 = (uint)bVar7 * 4; + iVar18 = (uint)bVar9 * 3; + uVar21 = (uint)bVar6; + uVar22 = (uint)bVar7; + iVar14 = uVar22 + (uint)bVar7 * 2; + uVar32 = (uint)bVar9; + pbVar5 = pbVar24 + (uint)(*(int *)(this + 0x1db0) << 1); + *pbVar5 = (byte)(((uint)bVar6 * 5 + (uint)bVar10 * 0x14) * 0x29 >> 10); + pbVar5[1] = (byte)((uVar20 * 0xc + (uint)bVar10 * 8 + uVar21 * 2 + iVar14) * 0x29 >> 10); + pbVar5[3] = (byte)(((uint)bVar8 * 4 + uVar19 * 0x10 + uVar22 + uVar32 * 4) * 0x29 >> 10); + pbVar5[2] = (byte)((uVar19 * 4 + uVar20 * 0x10 + iVar15 + uVar32) * 0x29 >> 10); + pbVar5[4] = (byte)((iVar3 * 4 + (uint)bVar13 * 8 + iVar18 + (uint)bVar11 * 2) * 0x29 >> 10 + ); + iVar16 = (uint)bVar9 * 0xc; + pbVar5 = pbVar24 + (uint)(*(int *)(this + 0x1db0) * 3); + *pbVar5 = (byte)((uVar30 * 5 + uVar21 * 0x14) * 0x29 >> 10); + pbVar5[1] = (byte)((uVar20 * 3 + uVar30 * 2 + uVar21 * 8 + iVar14 * 4) * 0x29 >> 10); + pbVar5[2] = (byte)(((uint)bVar8 * 4 + uVar19 + uVar22 * 0x10 + uVar32 * 4) * 0x29 >> 10); + pbVar5[3] = (byte)((uVar19 * 4 + uVar20 + iVar15 + (uint)bVar9 * 0x10) * 0x29 >> 10); + pbVar5[4] = (byte)((iVar3 + (uint)bVar13 * 2 + iVar16 + (uint)bVar11 * 8) * 0x29 >> 10); + pbVar5 = pbVar25 + (*(int *)(this + 0x1da8) * 3 + 0x18); + bVar8 = *pbVar5; + bVar9 = pbVar5[1]; + bVar10 = pbVar5[2]; + bVar12 = pbVar5[3]; + pbVar5 = pbVar24 + (uint)(*(int *)(this + 0x1db0) << 2); + *pbVar5 = (byte)((((uint)bVar6 * 0x10 - (uint)bVar6) + (uint)bVar8 * 10) * 0x29 >> 10); + pbVar5[1] = (byte)(((uint)bVar7 + uVar22 * 8 + (uint)bVar8 * 4 + + ((uint)bVar9 + (uint)bVar6) * 6) * 0x29 >> 10); + pbVar5[2] = (byte)((iVar18 + iVar14 * 4 + (uint)bVar9 * 8 + (uint)bVar10 * 2) * 0x29 >> 10 + ); + pbVar5[3] = (byte)((iVar16 + iVar14 + (uint)bVar9 * 2 + (uint)bVar10 * 8) * 0x29 >> 10); + pbVar5[4] = (byte)((uVar32 * 9 + (uint)bVar12 * 4 + ((uint)bVar10 + (uint)bVar11) * 6) * + 0x29 >> 10); + if (iVar29 == 0) break; + uVar20 = *(uint *)(this + 0x1da8); + pbVar25 = pbVar25 + 3; + pbVar24 = pbVar24 + 5; + } + uVar19 = *(uint *)(this + 0x1dac); + } + uVar23 = uVar23 + 3; + } while (uVar23 < uVar19); + } + return; +} + + +================================================================== + +### FUNC 0016cbe4 (448 bytes) name=ResizeBMP + +/* CFunctions::ResizeBMP() */ + +void __thiscall CFunctions::ResizeBMP(CFunctions *this) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + byte bVar9; + long lVar10; + uint uVar11; + ulong uVar12; + uint uVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + + uVar3 = *(uint *)(this + 0x1db0); + if (uVar3 != 0) { + uVar4 = *(uint *)(this + 0x1da8); + uVar5 = *(uint *)(this + 0x1dac); + uVar6 = *(uint *)(this + 0x1db4); + uVar11 = 0; + fVar14 = (float)uVar4 + -1.0; + fVar15 = (float)uVar5 + -1.0; + do { + fVar16 = ((float)uVar4 / (float)uVar3) * (float)uVar11; + fVar17 = fVar14; + if (fVar16 <= fVar14) { + fVar17 = fVar16; + } + if (uVar6 != 0) { + uVar13 = (uint)fVar17; + uVar1 = uVar13 + 1; + fVar17 = fVar17 - (float)uVar13; + uVar12 = 0; + uVar2 = uVar11; + do { + fVar18 = ((float)uVar5 / (float)uVar6) * (float)(uVar12 & 0xffffffff); + fVar16 = fVar15; + if (fVar18 <= fVar15) { + fVar16 = fVar18; + } + uVar7 = (uint)fVar16; + uVar8 = uVar7 + 1; + if ((uVar1 < uVar4) && (uVar8 < uVar5)) { + lVar10 = *(long *)(this + 0x170); + uVar8 = uVar13 + uVar4 * uVar7; + fVar18 = (float)NEON_ucvtf((uint)*(byte *)(lVar10 + (ulong)uVar8)); + fVar19 = (float)NEON_ucvtf((uint)*(byte *)(lVar10 + (ulong)(uVar8 + 1))); + fVar20 = (float)NEON_ucvtf((uint)*(byte *)(lVar10 + (ulong)(uVar8 + uVar4))); + fVar21 = (float)NEON_ucvtf((uint)*(byte *)(lVar10 + (ulong)(uVar8 + uVar4 + 1))); + fVar18 = (1.0 - (fVar16 - (float)uVar7)) * ((1.0 - fVar17) * fVar18 + fVar17 * fVar19); + fVar16 = (fVar16 - (float)uVar7) * ((1.0 - fVar17) * fVar20 + fVar17 * fVar21); +LAB_0016cd68: + fVar18 = fVar18 + fVar16; +LAB_0016cd6c: + uVar8 = (uint)(fVar18 + 0.5); + if (0xfe < uVar8) { + uVar8 = 0xff; + } + bVar9 = (byte)uVar8; + } + else { + if (uVar8 == uVar5 && uVar1 < uVar4) { + uVar8 = uVar13 + uVar4 * uVar7; + bVar9 = *(byte *)(*(long *)(this + 0x170) + (ulong)uVar8); + fVar16 = (float)bVar9; + fVar18 = fVar17 * (float)(int)((uint)*(byte *)(*(long *)(this + 0x170) + + (ulong)(uVar8 + 1)) - (uint)bVar9); + goto LAB_0016cd68; + } + bVar9 = *(byte *)(*(long *)(this + 0x170) + (ulong)(uVar13 + uVar4 * uVar7)); + if ((uVar1 == uVar4) && (uVar8 < uVar5)) { + fVar18 = (fVar16 - (float)uVar7) * + (float)(int)((uint)*(byte *)(*(long *)(this + 0x170) + + (ulong)(uVar13 + uVar8 * uVar4)) - (uint)bVar9) + + (float)bVar9; + goto LAB_0016cd6c; + } + } + uVar12 = uVar12 + 1; + *(byte *)(*(long *)(this + 0xd8) + (ulong)uVar2) = bVar9; + uVar2 = uVar2 + uVar3; + } while (uVar6 != uVar12); + } + uVar11 = uVar11 + 1; + } while (uVar11 != uVar3); + } + return; +} + + +================================================================== + +### FUNC 0016cda4 (20 bytes) name=ConvertDeltaInnerTemp2mC + +/* CFunctions::ConvertDeltaInnerTemp2mC(unsigned short) const */ + +int __thiscall CFunctions::ConvertDeltaInnerTemp2mC(CFunctions *this,ushort param_1) + +{ + return (uint)param_1 << (ulong)(*(uint *)(this + 0x76e4) & 0x1f); +} + + +================================================================== + +### FUNC 0016cdb8 (2296 bytes) name=ReviseTemperature + +/* CFunctions::ReviseTemperature(unsigned short, unsigned int, int) */ + +void __thiscall +CFunctions::ReviseTemperature(CFunctions *this,ushort param_1,uint param_2,int param_3) + +{ + ulong uVar1; + CFunctions *pCVar2; + CFunctions *pCVar3; + CFunctions *pCVar4; + int iVar5; + uint uVar6; + uint uVar7; + int iVar8; + long lVar9; + CFunctions *pCVar10; + long lVar11; + bool bVar12; + bool bVar13; + int iVar14; + uint uVar15; + long lVar16; + int iVar17; + int iVar18; + uint uVar19; + uint uVar20; + int iVar21; + float fVar22; + float fVar23; + ushort local_80 [2]; + float local_7c; + long local_78; + + uVar15 = (uint)param_1; + lVar9 = tpidr_el0; + local_78 = *(long *)(lVar9 + 0x28); + if (*(int *)(this + 0x1638) == 0) { + iVar14 = ((uint)param_1 << (ulong)(*(uint *)(this + 0x76e4) & 0x1f)) + *(int *)(this + 0x76e0); + goto LAB_0016d678; + } + uVar1 = 0; + if (*(uint *)(this + 0x70) < *(uint *)(this + 0x163c)) { + uVar1 = (ulong)*(uint *)(this + 0x70); + } + fVar22 = *(float *)(this + uVar1 * 0x21c + 0x1844); + if ((fVar22 <= DAT_004394fc) || (DAT_00439500 <= fVar22)) { + if ((param_3 != 0) && + ((((1.0 <= *(float *)(this + uVar1 * 0x21c + 0x16ec) && + (1.0 <= *(float *)(this + uVar1 * 0x21c + 0x16f0))) && + (0.0 < *(float *)(this + uVar1 * 0x21c + 0x16f4))) && + ((0.0 < *(float *)(this + uVar1 * 0x21c + 0x16fc) && + (iVar14 = FindStrayRadius(this,param_2,*(float *)(this + uVar1 * 0x21c + 0x16f0),&local_7c, + (uint *)local_80), iVar14 != 0)))))) { + fVar22 = *(float *)(this + uVar1 * 0x21c + 0x16f0); + fVar23 = *(float *)(this + uVar1 * 0x21c + 0x16ec); + pCVar2 = this + uVar1 * 0x21c + 0x1700; + pCVar10 = this + uVar1 * 0x21c + 0x16fc; + if (local_7c <= fVar22) { + pCVar2 = this + uVar1 * 0x21c + 0x16f8; + pCVar10 = this + uVar1 * 0x21c + 0x16f4; + } + uVar15 = *(uint *)(this + 0x76e4); + iVar18 = *(int *)(this + 0x76e0); + iVar14 = ((uint)param_1 << (ulong)(uVar15 & 0x1f)) + iVar18; + pCVar3 = this + uVar1 * 0x21c + 0x16fc; + if (fVar23 <= fVar22) { + pCVar3 = this + uVar1 * 0x21c + 0x16f4; + } + iVar21 = iVar14 + 50000; + pCVar4 = this + uVar1 * 0x21c + 0x1700; + if (fVar23 <= fVar22) { + pCVar4 = this + uVar1 * 0x21c + 0x16f8; + } + iVar17 = iVar14 + 0xe34f; + if (-1 < iVar21) { + iVar17 = iVar21; + } + uVar19 = iVar17 >> 0xd; + if (0x110 < uVar19) { + uVar19 = 0x111; + } + uVar20 = 0; + if (-0xe350 < iVar14) { + uVar20 = uVar19; + } + iVar21 = (iVar21 + uVar20 * -0x2000) * + (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)); + iVar14 = iVar21 + 0x1fff; + if (-1 < iVar21) { + iVar14 = iVar21; + } + iVar14 = *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4) + (iVar14 >> 0xd); + iVar21 = ((uint)local_80[0] << (ulong)(uVar15 & 0x1f)) + iVar18; + iVar17 = iVar21 + 50000; + iVar5 = iVar21 + 0xe34f; + if (-1 < iVar17) { + iVar5 = iVar17; + } + uVar19 = iVar5 >> 0xd; + if (0x110 < uVar19) { + uVar19 = 0x111; + } + uVar20 = 0; + if (-0xe350 < iVar21) { + uVar20 = uVar19; + } + iVar17 = (iVar17 + uVar20 * -0x2000) * + (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)); + iVar21 = iVar17 + 0x1fff; + if (-1 < iVar17) { + iVar21 = iVar17; + } + uVar19 = 0; + iVar14 = (int)((1.0 - (local_7c * *(float *)pCVar10 + *(float *)pCVar2) / + (fVar23 * *(float *)pCVar3 + *(float *)pCVar4)) * + (float)((iVar14 - *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)) - + (iVar21 >> 0xd)) + (float)iVar14); + uVar20 = 0x112; + do { + uVar7 = uVar20 + uVar19 >> 1; + uVar6 = uVar7; + if (*(int *)(PTR_T2E_00501dc0 + (ulong)uVar7 * 4) <= iVar14) { + uVar6 = uVar20; + uVar19 = uVar7; + } + uVar20 = uVar6; + } while (uVar19 + 1 < uVar6); + uVar15 = (int)(((uVar19 * 0x2000 + -50000) - iVar18) + + ((iVar14 - *(int *)(PTR_T2E_00501dc0 + (ulong)uVar19 * 4)) * + *(int *)(PTR_E2TAccQ10_00501f60 + (ulong)uVar19 * 4) >> 10)) >> (uVar15 & 0x1f) + ; + uVar15 = uVar15 & ((int)uVar15 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar15) { + uVar15 = 0xffff; + } + } + } + else { + iVar14 = ((uint)param_1 << (ulong)(*(uint *)(this + 0x76e4) & 0x1f)) + *(int *)(this + 0x76e0); + iVar18 = iVar14 + 50000; + iVar21 = iVar14 + 0xe34f; + if (-1 < iVar18) { + iVar21 = iVar18; + } + uVar15 = iVar21 >> 0xd; + if (0x110 < uVar15) { + uVar15 = 0x111; + } + uVar19 = 0; + if (-0xe350 < iVar14) { + uVar19 = uVar15; + } + iVar18 = (iVar18 + uVar19 * -0x2000) * + (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar19 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar19 * 4)); + iVar14 = iVar18 + 0x1fff; + if (-1 < iVar18) { + iVar14 = iVar18; + } + iVar17 = *(int *)(this + 0x44); + iVar18 = iVar17 + 50000; + iVar21 = iVar17 + 0xe34f; + if (-1 < iVar18) { + iVar21 = iVar18; + } + uVar15 = iVar21 >> 0xd; + if (0x110 < uVar15) { + uVar15 = 0x111; + } + uVar20 = 0; + if (-0xe350 < iVar17) { + uVar20 = uVar15; + } + uVar15 = 0; + iVar21 = (iVar18 + uVar20 * -0x2000) * + (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)); + iVar18 = iVar21 + 0x1fff; + if (-1 < iVar21) { + iVar18 = iVar21; + } + iVar18 = (int)(((float)(*(int *)(PTR_T2E_00501dc0 + (ulong)uVar19 * 4) + (iVar14 >> 0xd)) - + (1.0 - fVar22) * + (float)(*(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4) + (iVar18 >> 0xd))) / + fVar22); + iVar14 = *(int *)PTR_T2E_00501dc0; + if (*(int *)PTR_T2E_00501dc0 <= iVar18) { + iVar14 = iVar18; + } + uVar19 = 0x112; + do { + uVar6 = uVar19 + uVar15 >> 1; + uVar20 = uVar6; + if (*(int *)(PTR_T2E_00501dc0 + (ulong)uVar6 * 4) <= iVar14) { + uVar20 = uVar19; + uVar15 = uVar6; + } + uVar19 = uVar20; + } while (uVar15 + 1 < uVar20); + uVar15 = (int)(((uVar15 * 0x2000 + -50000) - *(int *)(this + 0x76e0)) + + ((iVar14 - *(int *)(PTR_T2E_00501dc0 + (ulong)uVar15 * 4)) * + *(int *)(PTR_E2TAccQ10_00501f60 + (ulong)uVar15 * 4) >> 10)) >> + (*(uint *)(this + 0x76e4) & 0x1f); + } + if (*(int *)(this + uVar1 * 0x21c + 0x167c) == 1) { + lVar16 = 0; + } + else { + lVar16 = 0; + do { + if ((int)uVar15 <= *(int *)(this + lVar16 * 4 + uVar1 * 0x21c + 0x1680)) break; + lVar16 = lVar16 + 1; + } while ((uint)lVar16 < *(int *)(this + uVar1 * 0x21c + 0x167c) - 1U); + } + lVar11 = uVar1 * 0x21c + 0x1714; + iVar18 = *(int *)(this + 0x40); + iVar14 = (*(int *)(this + uVar1 * 0x21c + 0x1678) - *(int *)(this + uVar1 * 0x21c + 0x1674)) + + *(int *)(this + 0x3c); + if (*(int *)(this + 0x4c) == 0) { + iVar14 = iVar18 - iVar14; + if (iVar14 < 0x3e9) { + bVar12 = SCARRY4(iVar14,1000); + iVar21 = iVar14 + 1000; + bVar13 = iVar14 == -1000; + iVar17 = -1000; + goto LAB_0016d2dc; + } +LAB_0016d2cc: + iVar14 = 1000; + } + else { + iVar14 = iVar14 - iVar18; + if (1000 < iVar14) goto LAB_0016d2cc; + iVar17 = -5000; + bVar12 = SBORROW4(iVar14,-5000); + iVar21 = iVar14 + 5000; + bVar13 = iVar14 == -5000; +LAB_0016d2dc: + if (bVar13 || iVar21 < 0 != bVar12) { + iVar14 = iVar17; + } + } + iVar14 = (iVar14 - *(int *)(this + 0x48)) + iVar18 + + (*(int *)(this + 0x44) - *(int *)(this + 0x3c)) * 2; + iVar21 = iVar18 + 50000; + iVar17 = iVar18 + 0xe34f; + if (-1 < iVar21) { + iVar17 = iVar21; + } + uVar19 = iVar17 >> 0xd; + if (0x110 < uVar19) { + uVar19 = 0x111; + } + iVar17 = iVar14 + iVar21; + uVar20 = 0; + if (-0xe350 < iVar18) { + uVar20 = uVar19; + } + iVar18 = iVar17 + 0x1fff; + if (-1 < iVar17) { + iVar18 = iVar17; + } + uVar19 = iVar18 >> 0xd; + if (0x110 < uVar19) { + uVar19 = 0x111; + } + uVar6 = 0; + if (-0x2000 < iVar17) { + uVar6 = uVar19; + } + if (uVar20 == uVar6) { + iVar14 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)) * iVar14; + iVar18 = iVar14 + 0x1fff; + if (-1 < iVar14) { + iVar18 = iVar14; + } + iVar18 = iVar18 >> 0xd; + } + else { + iVar18 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar6 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar6 * 4)) * (iVar17 + uVar6 * -0x2000); + iVar21 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)) * (iVar21 + uVar20 * -0x2000); + iVar14 = iVar18 + 0x1fff; + if (-1 < iVar18) { + iVar14 = iVar18; + } + iVar18 = iVar21 + 0x1fff; + if (-1 < iVar21) { + iVar18 = iVar21; + } + iVar18 = ((*(int *)(PTR_T2E_00501dc0 + (ulong)uVar6 * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)) - (iVar18 >> 0xd)) + (iVar14 >> 0xd); + } + if ((param_3 != 0) && (*(float *)(this + 0x84) != 0.0)) { + iVar14 = *(int *)(this + 0x4a78); + if (*(int *)(this + uVar1 * 0x21c + 0x184c) - *(int *)(this + uVar1 * 0x21c + 0x1848) < 0xc351) + { + if (39999 < iVar14) { + iVar14 = 40000; + } + iVar21 = 5000; + } + else { + if (59999 < iVar14) { + iVar14 = 60000; + } + iVar21 = -40000; + } + if (iVar14 <= iVar21) { + iVar14 = iVar21; + } + iVar17 = (int)(*(float *)(this + 0x84) * (float)(iVar14 - *(int *)(this + 0x80))); + iVar14 = iVar17 + 85000; + iVar21 = iVar17 + 0x16c07; + if (-1 < iVar14) { + iVar21 = iVar14; + } + uVar19 = iVar21 >> 0xd; + if (0x110 < uVar19) { + uVar19 = 0x111; + } + uVar20 = 0; + if (-0x16c08 < iVar17) { + uVar20 = uVar19; + } + if (uVar20 == 10) { + iVar17 = (*(int *)(PTR_T2E_00501dc0 + 0x2c) - *(int *)(PTR_T2E_00501dc0 + 0x28)) * iVar17; + iVar14 = iVar17 + 0x1fff; + if (-1 < iVar17) { + iVar14 = iVar17; + } + iVar14 = iVar14 >> 0xd; + } + else { + iVar21 = (*(int *)(PTR_T2E_00501dc0 + 0x2c) - *(int *)(PTR_T2E_00501dc0 + 0x28)) * 0xc08; + iVar17 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)) * (iVar14 + uVar20 * -0x2000); + iVar14 = iVar17 + 0x1fff; + if (-1 < iVar17) { + iVar14 = iVar17; + } + iVar17 = iVar21 + 0x1fff; + if (-1 < iVar21) { + iVar17 = iVar21; + } + iVar14 = ((*(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4) - *(int *)(PTR_T2E_00501dc0 + 0x28)) + - (iVar17 >> 0xd)) + (iVar14 >> 0xd); + } + iVar18 = iVar14 + iVar18; + } + iVar21 = *(int *)(this + (ulong)((int)lVar16 << 1 | 1) * 4 + lVar11) + + (int)((long)*(int *)(this + (ulong)(uint)((int)lVar16 << 1) * 4 + lVar11) * + (long)(int)uVar15 >> ((ulong)*(uint *)(this + uVar1 * 0x21c + 0x1670) & 0x3f)); + if (*(float *)(this + uVar1 * 0x21c + 0x1854) != 0.0) { + uVar15 = *(uint *)(this + 0x1da8); + uVar19 = 0; + if (uVar15 != 0) { + uVar19 = param_2 / uVar15; + } + iVar14 = uVar19 - (*(uint *)(this + 0x1dac) >> 1); + iVar17 = (param_2 - uVar19 * uVar15) - (uVar15 >> 1); + fVar23 = (float)(iVar14 * iVar14 + iVar17 * iVar17); + fVar22 = SQRT(fVar23); + if (NAN(fVar22)) { + fVar22 = sqrtf(fVar23); + } + iVar14 = iVar21 + 50000; + iVar17 = iVar21 + 0xe34f; + if (-1 < iVar14) { + iVar17 = iVar14; + } + uVar15 = iVar17 >> 0xd; + if (0x110 < uVar15) { + uVar15 = 0x111; + } + uVar19 = 0; + if (-0xe350 < iVar21) { + uVar19 = uVar15; + } + iVar5 = *(int *)(this + 0x48); + iVar8 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar19 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar19 * 4)) * (iVar14 + uVar19 * -0x2000); + iVar14 = iVar5 + 50000; + iVar17 = iVar8 + 0x1fff; + if (-1 < iVar8) { + iVar17 = iVar8; + } + iVar8 = iVar5 + 0xe34f; + if (-1 < iVar14) { + iVar8 = iVar14; + } + uVar15 = iVar8 >> 0xd; + if (0x110 < uVar15) { + uVar15 = 0x111; + } + uVar20 = 0; + if (-0xe350 < iVar5) { + uVar20 = uVar15; + } + iVar5 = (iVar14 + uVar20 * -0x2000) * + (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar20 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)); + iVar14 = iVar5 + 0x1fff; + if (-1 < iVar5) { + iVar14 = iVar5; + } + iVar18 = iVar18 + (int)-(fVar22 * *(float *)(this + uVar1 * 0x21c + 0x1854) * + (float)(((*(int *)(PTR_T2E_00501dc0 + (ulong)uVar19 * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar20 * 4)) + + (iVar17 >> 0xd)) - (iVar14 >> 0xd))); + } + iVar14 = dEnerge2dTemp(this,iVar21,iVar18); + iVar14 = iVar14 + iVar21; +LAB_0016d678: + if (*(long *)(lVar9 + 0x28) != local_78) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar14); + } + return; +} + + +================================================================== + +### FUNC 0016d6b0 (600 bytes) name=CorrectTemperature + +/* CFunctions::CorrectTemperature(int, float, unsigned int) const */ + +uint CFunctions::CorrectTemperature(int param_1,float param_2,uint param_3) + +{ + long lVar1; + uint uVar2; + uint uVar3; + int iVar4; + ulong uVar5; + undefined4 *puVar6; + uint uVar7; + int iVar8; + int iVar9; + uint uVar10; + int iVar11; + float fVar12; + + uVar5 = (ulong)(uint)param_1; + fVar12 = *(float *)(uVar5 + 0xcc); + if ((((fVar12 <= 0.0) || (1.0 < param_2)) || (param_2 <= 0.0)) || (1.0 < fVar12)) { + puVar6 = (undefined4 *)__errno(); + *puVar6 = 0xe4ae0001; + } + else { + iVar8 = param_3 + 50000; + iVar4 = param_3 + 0xe34f; + if (-1 < iVar8) { + iVar4 = iVar8; + } + uVar7 = iVar4 >> 0xd; + if (0x110 < uVar7) { + uVar7 = 0x111; + } + uVar10 = 0; + if (-0xe350 < (int)param_3) { + uVar10 = uVar7; + } + iVar4 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar10 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar10 * 4)) * (iVar8 + uVar10 * -0x2000); + iVar8 = iVar4 + 0x1fff; + if (-1 < iVar4) { + iVar8 = iVar4; + } + iVar11 = (int)(*(float *)(uVar5 + 0xb0) * DAT_004394f4); + iVar4 = iVar11 + 50000; + iVar9 = iVar11 + 0xe34f; + if (-1 < iVar4) { + iVar9 = iVar4; + } + uVar7 = iVar9 >> 0xd; + if (0x110 < uVar7) { + uVar7 = 0x111; + } + uVar2 = 0; + if (-0xe350 < iVar11) { + uVar2 = uVar7; + } + iVar9 = (iVar4 + uVar2 * -0x2000) * + (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar2 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar2 * 4)); + iVar4 = iVar9 + 0x1fff; + if (-1 < iVar9) { + iVar4 = iVar9; + } + fVar12 = fVar12 * *(float *)(uVar5 + 0xd0) * param_2; + uVar7 = 0; + iVar8 = (int)(((float)(*(int *)(PTR_T2E_00501dc0 + (ulong)uVar10 * 4) + (iVar8 >> 0xd)) - + (1.0 - fVar12) * + (float)(*(int *)(PTR_T2E_00501dc0 + (ulong)uVar2 * 4) + (iVar4 >> 0xd))) / fVar12) + ; + uVar10 = 0x112; + do { + uVar3 = uVar10 + uVar7 >> 1; + uVar2 = uVar3; + if (*(int *)(PTR_T2E_00501dc0 + (ulong)uVar3 * 4) <= iVar8) { + uVar2 = uVar10; + uVar7 = uVar3; + } + uVar10 = uVar2; + } while (uVar7 + 1 < uVar2); + iVar4 = *(int *)(uVar5 + 0x44); + iVar8 = uVar7 * 0x2000 + + ((iVar8 - *(int *)(PTR_T2E_00501dc0 + (ulong)uVar7 * 4)) * + *(int *)(PTR_E2TAccQ10_00501f60 + (ulong)uVar7 * 4) >> 10) + -50000; + if (iVar8 < -0x42afd) { + iVar8 = -0x42afe; + } + if (iVar4 < 0x2711) { + iVar9 = 0; + } + else { + iVar9 = 6; + if (iVar4 < 50000) { + iVar9 = (iVar4 + -15000) / 5000; + } + } + lVar1 = uVar5 + (long)iVar9 * 4; + iVar11 = *(int *)(lVar1 + 0x88); + iVar8 = iVar11 + iVar8 + + ((*(int *)(lVar1 + 0x8c) - iVar11) * (iVar4 + -15000 + iVar9 * -5000)) / 5000; + param_3 = iVar8 + (int)(*(float *)(uVar5 + 200) * DAT_004394f4) + + (int)(*(float *)(uVar5 + 0xc4) * (float)iVar8); + } + return param_3; +} + + +================================================================== + +### FUNC 0016d908 (44 bytes) name=ConvertmC2InnerTemp + +/* CFunctions::ConvertmC2InnerTemp(int) const */ + +uint __thiscall CFunctions::ConvertmC2InnerTemp(CFunctions *this,int param_1) + +{ + uint uVar1; + + uVar1 = param_1 - *(int *)(this + 0x76e0) >> (*(uint *)(this + 0x76e4) & 0x1f); + uVar1 = uVar1 & ((int)uVar1 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar1) { + uVar1 = 0xffff; + } + return uVar1; +} + + +================================================================== + +### FUNC 0016d934 (236 bytes) name=CalContrastOffsetedAutoEnlargeRange + +/* CFunctions::CalContrastOffsetedAutoEnlargeRange() */ + +int __thiscall CFunctions::CalContrastOffsetedAutoEnlargeRange(CFunctions *this) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar4 = *(int *)(this + 0x34); + uVar1 = (uint)(*(int *)(this + 0x24) * 1000) >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar1) { + uVar1 = 0xffff; + } + iVar3 = iVar4; + if (iVar4 < -99) { + iVar3 = -100; + } + iVar2 = iVar4; + if (99 < iVar4) { + iVar2 = 100; + } + if (iVar4 < 0) { + iVar2 = iVar3; + } + iVar4 = (iVar4 >> 0x1f & 0xffffff9cU) + 0x96; + iVar3 = 0; + if (iVar4 != 0) { + iVar3 = (int)(uVar1 * iVar2) / iVar4; + } + iVar3 = uVar1 - iVar3; + if ((*(int *)(this + 0x1200) != 0) && (0.0 < *(float *)(this + 0x74))) { + if (*(int *)(this + 0x1310) == 2) { + iVar2 = *(int *)(this + 0x1320); + iVar4 = *(int *)(this + 0x131c); + if (iVar2 - iVar4 != 50000) goto LAB_0016da10; + } + else { + if (*(int *)(this + 0x1310) != 1) goto LAB_0016da10; + iVar2 = *(int *)(this + 0x1320); + iVar4 = *(int *)(this + 0x131c); + } + iVar4 = iVar4 + iVar2; + if (iVar4 < 0) { + iVar4 = iVar4 + 1; + } + iVar3 = iVar3 + (int)((*(float *)(this + 0x74) * + (float)((*(int *)(this + 0x3c) - (iVar4 >> 1)) * iVar3)) / DAT_004394f4); + } +LAB_0016da10: + if (iVar3 < 0x81) { + iVar3 = 0x80; + } + return iVar3; +} + + +================================================================== + +### FUNC 0016da20 (1416 bytes) name=SubSectionEnlarge + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* CFunctions::SubSectionEnlarge() */ + +void __thiscall CFunctions::SubSectionEnlarge(CFunctions *this) + +{ + uint uVar1; + int iVar2; + int iVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + bool bVar8; + bool bVar9; + bool bVar10; + bool bVar11; + bool bVar12; + bool bVar13; + bool bVar14; + bool bVar15; + bool bVar16; + bool bVar17; + bool bVar18; + bool bVar19; + bool bVar20; + bool bVar21; + bool bVar22; + bool bVar23; + bool bVar24; + bool bVar25; + bool bVar26; + bool bVar27; + CFunctions *pCVar28; + undefined1 auVar29 [16]; + long lVar30; + long lVar31; + uint uVar32; + ulong uVar33; + byte bVar34; + byte bVar35; + byte bVar36; + byte bVar37; + byte bVar38; + byte bVar39; + byte bVar40; + byte bVar41; + byte bVar42; + byte bVar43; + byte bVar44; + byte bVar45; + uint uVar46; + uint uVar47; + long lVar48; + uint uVar49; + uint uVar50; + uint uVar51; + uint uVar52; + uint uVar53; + ulong uVar54; + ulong uVar55; + ulong uVar56; + int iVar57; + long lVar58; + int iVar60; + int iVar61; + long lVar62; + undefined1 auVar59 [16]; + int iVar63; + undefined1 auVar64 [16]; + undefined1 auVar65 [16]; + undefined1 auVar66 [16]; + int iVar67; + int iVar69; + undefined8 uVar68; + int iVar70; + int iVar72; + undefined8 uVar71; + byte bVar73; + byte bVar74; + byte bVar75; + byte bVar76; + byte bVar77; + byte bVar78; + int iVar80; + undefined8 uVar79; + int iVar82; + undefined8 uVar81; + int iVar83; + byte bVar84; + byte bVar85; + int iVar86; + int iVar87; + int iVar88; + int iVar89; + int iVar90; + ulong uVar91; + ulong uVar92; + ulong uVar93; + ulong uVar94; + ulong uVar95; + ulong uVar96; + ulong uVar97; + ulong uVar98; + ulong uVar99; + ulong uVar100; + ulong uVar101; + ulong uVar102; + ulong uVar103; + ulong uVar104; + int iVar105; + int iVar107; + undefined8 uVar106; + int iVar108; + int iVar110; + undefined8 uVar109; + int iVar111; + int iVar112; + int iVar113; + int iVar114; + int local_e0; + int iStack_dc; + int iStack_d8; + int iStack_d4; + undefined8 uStack_d0; + undefined8 uStack_c8; + + if (*(uint *)(this + 0x20) <= *(uint *)(this + 0x1c)) { + return; + } + iVar57 = *(int *)(this + 0x14); + if (*(int *)(this + 0x18) <= iVar57) { + return; + } + uVar50 = *(uint *)(this + 0x1da8); + uVar1 = *(uint *)(this + 0x76d0); + uVar51 = 0; + uVar53 = 0xffff; + uVar49 = 0x7fff; + *(undefined4 *)(this + 0x54) = 1; + do { + uVar46 = ReviseTemperature(this,(ushort)uVar49,(uVar50 >> 1) + (uVar1 >> 1),0); + if ((*(int *)(this + 0x54) != 0) || (*(int *)(this + 0x58) != 0)) { + uVar46 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar46); + } + if ((int)uVar46 <= iVar57) { + uVar51 = uVar49; + uVar49 = uVar53; + } + uVar53 = uVar49; + uVar49 = uVar51 + uVar53 >> 1; + } while (uVar51 + 1 < uVar53); + uVar1 = *(uint *)(this + 0x1da8); + uVar49 = *(uint *)(this + 0x76d0); + iVar57 = *(int *)(this + 0x18); + uVar50 = 0; + uVar52 = 0xffff; + uVar46 = 0x7fff; + *(undefined4 *)(this + 0x54) = 1; + do { + uVar47 = ReviseTemperature(this,(ushort)uVar46,(uVar1 >> 1) + (uVar49 >> 1),0); + if ((*(int *)(this + 0x54) != 0) || (*(int *)(this + 0x58) != 0)) { + uVar47 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar47); + } + if ((int)uVar47 <= iVar57) { + uVar50 = uVar46; + uVar46 = uVar52; + } + uVar52 = uVar46; + uVar46 = uVar50 + uVar52 >> 1; + } while (uVar50 + 1 < uVar52); + uVar50 = uVar50 + uVar52 >> 1; + uVar1 = uVar51 + uVar53 >> 1; + uVar51 = uVar50; + if ((int)uVar50 <= (int)*(uint *)(this + 0x1df8)) { + uVar51 = *(uint *)(this + 0x1df8); + } + uVar49 = uVar1; + if ((int)*(uint *)(this + 0x1dfc) <= (int)uVar1) { + uVar49 = *(uint *)(this + 0x1dfc); + } + iVar57 = *(int *)(this + 0x1c); + *(uint *)(this + 0x1e14) = uVar51; + *(uint *)(this + 0x1e18) = uVar49; + uVar51 = uVar51 - uVar49; + uVar53 = (uVar1 - uVar49) * 0x3ff; + uVar1 = 0; + if (uVar51 != 0) { + uVar1 = uVar53 / uVar51; + } + uVar46 = 0; + if (uVar51 != 0) { + uVar46 = ((uVar50 - uVar49) * 0x3ff) / uVar51; + } + if (uVar53 < uVar51) { + uVar51 = 0; + } + else { + uVar51 = 0; + if (uVar1 != 0) { + uVar51 = (uint)(iVar57 << 0x18) / uVar1; + } + } + iVar2 = iVar57 * 4; + uVar50 = uVar46 - uVar1; + iVar3 = *(int *)(this + 0x20) * 4; + if (uVar46 < uVar1 || uVar50 == 0) { + uVar49 = 0; + } + else { + uVar49 = 0; + if (uVar50 != 0) { + uVar49 = (uint)((iVar3 + iVar57 * -4) * 0x400000) / uVar50; + } + } + if (uVar46 < 0x3ff) { + uVar50 = 0; + if (0x3ff - uVar46 != 0) { + uVar50 = (uint)((*(int *)(this + 0x20) * -4 + 0x3ff) * 0x400000) / (0x3ff - uVar46); + } + } + else { + uVar50 = 0; + } + uVar33 = (ulong)uVar1; + lVar48 = 0; + uVar54 = (ulong)uVar1; + local_e0 = _DAT_004393f0; + iStack_dc = _UNK_004393f4; + iStack_d8 = _UNK_004393f8; + iStack_d4 = _UNK_004393fc; + uStack_c8 = _UNK_004393e8; + uStack_d0 = _DAT_004393e0; + uVar68 = _DAT_004393e0; + uVar71 = _UNK_004393e8; + uVar79 = _DAT_00439400; + uVar81 = _UNK_00439408; + uVar91 = _DAT_00439430; + uVar92 = _UNK_00439438; + uVar93 = _DAT_00439440; + uVar94 = _UNK_00439448; + uVar95 = _DAT_00439450; + uVar96 = _UNK_00439458; + uVar97 = _DAT_00439460; + uVar98 = _UNK_00439468; + uVar99 = _DAT_00439470; + uVar100 = _UNK_00439478; + uVar101 = _DAT_00439480; + uVar102 = _UNK_00439488; + uVar103 = _DAT_00439490; + uVar104 = _UNK_00439498; + uVar106 = _DAT_00439400; + uVar109 = _UNK_00439408; + uVar55 = _DAT_00439420; + uVar56 = _UNK_00439428; + iVar57 = _DAT_00439410; + iVar60 = _UNK_00439414; + iVar61 = _UNK_00439418; + iVar63 = _UNK_0043941c; + iVar87 = _DAT_00439410; + iVar88 = _UNK_00439414; + iVar89 = _UNK_00439418; + iVar90 = _UNK_0043941c; + iVar111 = _DAT_004393f0; + iVar112 = _UNK_004393f4; + iVar113 = _UNK_004393f8; + iVar114 = _UNK_004393fc; + do { + bVar4 = uVar33 < uVar103; + bVar10 = uVar54 < uVar104; + bVar5 = uVar33 < uVar101; + bVar11 = uVar54 < uVar102; + bVar6 = uVar33 < uVar99; + bVar12 = uVar54 < uVar100; + bVar7 = uVar33 < uVar97; + bVar13 = uVar54 < uVar98; + bVar8 = uVar33 < uVar95; + bVar14 = uVar54 < uVar96; + bVar9 = uVar33 < uVar93; + bVar15 = uVar54 < uVar94; + lVar30 = -(ulong)(uVar33 < uVar55); + bVar73 = (byte)((ulong)lVar30 >> 8); + bVar74 = (byte)((ulong)lVar30 >> 0x10); + bVar75 = (byte)((ulong)lVar30 >> 0x18); + lVar31 = -(ulong)(uVar54 < uVar56); + bVar76 = (byte)((ulong)lVar31 >> 8); + bVar77 = (byte)((ulong)lVar31 >> 0x10); + bVar78 = (byte)((ulong)lVar31 >> 0x18); + auVar64[0] = -(uVar91 < uVar46) & -(uVar33 < uVar91); + bVar84 = (byte)-(ulong)(uVar54 < uVar92); + bVar85 = (byte)(-(ulong)(uVar54 < uVar92) >> 0x18); + auVar64._1_3_ = 0; + auVar64._4_4_ = + (int)(CONCAT14((byte)(-(ulong)(uVar92 < uVar46) >> 0x18) & bVar85, + (uint)((byte)-(ulong)(uVar92 < uVar46) & bVar84) << 8) >> 8); + lVar58 = -(ulong)(uVar55 < uVar46); + lVar62 = -(ulong)(uVar56 < uVar46); + auVar64[9] = (byte)((ulong)lVar58 >> 8) & bVar73; + auVar64[8] = (byte)lVar58 & (byte)lVar30; + auVar64[10] = (byte)((ulong)lVar58 >> 0x10) & bVar74; + auVar64[0xb] = (byte)((ulong)lVar58 >> 0x18) & bVar75; + auVar64[0xd] = (byte)((ulong)lVar62 >> 8) & bVar76; + auVar64[0xc] = (byte)lVar62 & (byte)lVar31; + auVar64[0xe] = (byte)((ulong)lVar62 >> 0x10) & bVar77; + auVar64[0xf] = (byte)((ulong)lVar62 >> 0x18) & bVar78; + bVar34 = (byte)(uVar51 * iVar87 >> 0x18); + bVar35 = (byte)(uVar51 * iVar88 >> 0x18); + bVar36 = (byte)(uVar51 * iVar89 >> 0x18); + bVar37 = (byte)(uVar51 * iVar90 >> 0x18); + bVar34 = bVar34 ^ (bVar34 ^ (byte)(iVar2 + ((iVar57 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar103 < uVar46) & -bVar4; + bVar35 = bVar35 ^ (bVar35 ^ (byte)(iVar2 + ((iVar60 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar104 < uVar46) & -bVar10; + bVar36 = bVar36 ^ (bVar36 ^ (byte)(iVar2 + ((iVar61 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar101 < uVar46) & -bVar5; + bVar37 = bVar37 ^ (bVar37 ^ (byte)(iVar2 + ((iVar63 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar102 < uVar46) & -bVar11; + iVar105 = (int)uVar106; + iVar107 = (int)((ulong)uVar106 >> 0x20); + iVar108 = (int)uVar109; + iVar110 = (int)((ulong)uVar109 >> 0x20); + iVar80 = (int)((ulong)uVar79 >> 0x20); + iVar82 = (int)((ulong)uVar81 >> 0x20); + bVar38 = (byte)(uVar51 * (int)uVar79 >> 0x18); + bVar39 = (byte)(uVar51 * iVar80 >> 0x18); + bVar40 = (byte)(uVar51 * (int)uVar81 >> 0x18); + bVar41 = (byte)(uVar51 * iVar82 >> 0x18); + bVar38 = bVar38 ^ (bVar38 ^ (byte)(iVar2 + ((iVar105 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar99 < uVar46) & -bVar6; + bVar39 = bVar39 ^ (bVar39 ^ (byte)(iVar2 + ((iVar107 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar100 < uVar46) & -bVar12; + bVar40 = bVar40 ^ (bVar40 ^ (byte)(iVar2 + ((iVar108 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar97 < uVar46) & -bVar7; + bVar41 = bVar41 ^ (bVar41 ^ (byte)(iVar2 + ((iVar110 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar98 < uVar46) & -bVar13; + bVar42 = (byte)(uVar51 * local_e0 >> 0x18); + bVar43 = (byte)(uVar51 * iStack_dc >> 0x18); + bVar44 = (byte)(uVar51 * iStack_d8 >> 0x18); + bVar45 = (byte)(uVar51 * iStack_d4 >> 0x18); + bVar42 = bVar42 ^ (bVar42 ^ (byte)(iVar2 + ((iVar111 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar95 < uVar46) & -bVar8; + bVar43 = bVar43 ^ (bVar43 ^ (byte)(iVar2 + ((iVar112 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar96 < uVar46) & -bVar14; + bVar44 = bVar44 ^ (bVar44 ^ (byte)(iVar2 + ((iVar113 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar93 < uVar46) & -bVar9; + bVar45 = bVar45 ^ (bVar45 ^ (byte)(iVar2 + ((iVar114 - uVar1) * uVar49 >> 0x16) >> 2)) & + -(uVar94 < uVar46) & -bVar15; + iVar67 = (int)uVar68; + iVar69 = (int)((ulong)uVar68 >> 0x20); + iVar70 = (int)uVar71; + iVar72 = (int)((ulong)uVar71 >> 0x20); + iVar83 = (int)((ulong)uStack_d0 >> 0x20); + iVar86 = (int)((ulong)uStack_c8 >> 0x20); + auVar65._0_4_ = uVar51 * (int)uStack_d0 >> 0x18; + auVar65._4_4_ = uVar51 * iVar83 >> 0x18; + auVar65._8_4_ = uVar51 * (int)uStack_c8 >> 0x18; + auVar65._12_4_ = uVar51 * iVar86 >> 0x18; + auVar66._0_4_ = iVar2 + ((iVar67 - uVar1) * uVar49 >> 0x16) >> 2; + auVar66._4_4_ = iVar2 + ((iVar69 - uVar1) * uVar49 >> 0x16) >> 2; + auVar66._8_4_ = iVar2 + ((iVar70 - uVar1) * uVar49 >> 0x16) >> 2; + auVar66._12_4_ = iVar2 + ((iVar72 - uVar1) * uVar49 >> 0x16) >> 2; + auVar65 = auVar65 ^ (auVar65 ^ auVar66) & auVar64; + bVar16 = uVar46 <= uVar101; + bVar22 = uVar46 <= uVar102; + bVar17 = uVar46 <= uVar103; + bVar23 = uVar46 <= uVar104; + bVar18 = uVar46 <= uVar97; + bVar24 = uVar46 <= uVar98; + bVar19 = uVar46 <= uVar99; + bVar25 = uVar46 <= uVar100; + bVar20 = uVar46 <= uVar93; + bVar26 = uVar46 <= uVar94; + bVar21 = uVar46 <= uVar95; + bVar27 = uVar46 <= uVar96; + lVar58 = -(ulong)(uVar46 <= uVar55); + lVar62 = -(ulong)(uVar46 <= uVar56); + auVar59[0] = -(uVar33 < uVar91) & -(uVar46 <= uVar91); + auVar59[9] = bVar73 & (byte)((ulong)lVar58 >> 8); + auVar59[8] = (byte)lVar30 & (byte)lVar58; + auVar59[10] = bVar74 & (byte)((ulong)lVar58 >> 0x10); + auVar59[0xb] = bVar75 & (byte)((ulong)lVar58 >> 0x18); + auVar59[0xd] = bVar76 & (byte)((ulong)lVar62 >> 8); + auVar59[0xc] = (byte)lVar31 & (byte)lVar62; + auVar59[0xe] = bVar77 & (byte)((ulong)lVar62 >> 0x10); + auVar59[0xf] = bVar78 & (byte)((ulong)lVar62 >> 0x18); + uVar53 = iVar3 + ((iVar70 - uVar46) * uVar50 >> 0x16); + uVar47 = iVar3 + ((iVar72 - uVar46) * uVar50 >> 0x16); + auVar59._1_3_ = 0; + auVar59._4_4_ = + (int)(CONCAT14(bVar85 & (byte)(-(ulong)(uVar46 <= uVar92) >> 0x18), + (uint)(bVar84 & (byte)-(ulong)(uVar46 <= uVar92)) << 8) >> 8); + uVar52 = uVar53 >> 2; + uVar32 = uVar47 >> 2; + auVar29._6_2_ = 0; + auVar29._0_6_ = + (uint6)CONCAT14((char)(iVar3 + ((iVar69 - uVar46) * uVar50 >> 0x16) >> 2), + iVar3 + ((iVar67 - uVar46) * uVar50 >> 0x16) >> 2) & 0xffff0000ffff; + auVar29[8] = (char)uVar52; + auVar29[9] = (char)(uVar52 >> 8); + auVar29[10] = (char)(uVar52 >> 0x10); + auVar29[0xb] = (byte)(uVar53 >> 0x1a); + auVar29[0xc] = (char)uVar32; + auVar29[0xd] = (char)(uVar32 >> 8); + auVar29[0xe] = (char)(uVar32 >> 0x10); + auVar29[0xf] = (byte)(uVar47 >> 0x1a); + auVar65 = auVar65 ^ (auVar65 ^ auVar29) & auVar59; + uVar99 = uVar99 + 0x10; + uVar100 = uVar100 + 0x10; + uVar101 = uVar101 + 0x10; + uVar102 = uVar102 + 0x10; + uVar103 = uVar103 + 0x10; + uVar104 = uVar104 + 0x10; + uVar97 = uVar97 + 0x10; + uVar98 = uVar98 + 0x10; + uVar95 = uVar95 + 0x10; + uVar96 = uVar96 + 0x10; + uVar93 = uVar93 + 0x10; + uVar94 = uVar94 + 0x10; + uVar91 = uVar91 + 0x10; + uVar92 = uVar92 + 0x10; + uVar55 = uVar55 + 0x10; + uVar56 = uVar56 + 0x10; + pCVar28 = this + lVar48 + 0x2638; + pCVar28[8] = (CFunctions) + (bVar42 ^ (bVar42 ^ (byte)(iVar3 + ((iVar111 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar8 & -bVar21); + pCVar28[9] = (CFunctions) + (bVar43 ^ (bVar43 ^ (byte)(iVar3 + ((iVar112 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar14 & -bVar27); + pCVar28[10] = (CFunctions) + (bVar44 ^ (bVar44 ^ (byte)(iVar3 + ((iVar113 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar9 & -bVar20); + pCVar28[0xb] = (CFunctions) + (bVar45 ^ (bVar45 ^ (byte)(iVar3 + ((iVar114 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar15 & -bVar26); + pCVar28[0xc] = auVar65[0]; + pCVar28[0xd] = auVar65[4]; + pCVar28[0xe] = auVar65[8]; + pCVar28[0xf] = auVar65[0xc]; + *pCVar28 = (CFunctions) + (bVar34 ^ (bVar34 ^ (byte)(iVar3 + ((iVar57 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar4 & -bVar17); + pCVar28[1] = (CFunctions) + (bVar35 ^ (bVar35 ^ (byte)(iVar3 + ((iVar60 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar10 & -bVar23); + pCVar28[2] = (CFunctions) + (bVar36 ^ (bVar36 ^ (byte)(iVar3 + ((iVar61 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar5 & -bVar16); + pCVar28[3] = (CFunctions) + (bVar37 ^ (bVar37 ^ (byte)(iVar3 + ((iVar63 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar11 & -bVar22); + pCVar28[4] = (CFunctions) + (bVar38 ^ (bVar38 ^ (byte)(iVar3 + ((iVar105 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar6 & -bVar19); + pCVar28[5] = (CFunctions) + (bVar39 ^ (bVar39 ^ (byte)(iVar3 + ((iVar107 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar12 & -bVar25); + pCVar28[6] = (CFunctions) + (bVar40 ^ (bVar40 ^ (byte)(iVar3 + ((iVar108 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar7 & -bVar18); + pCVar28[7] = (CFunctions) + (bVar41 ^ (bVar41 ^ (byte)(iVar3 + ((iVar110 - uVar46) * uVar50 >> 0x16) >> 2)) & + -bVar13 & -bVar24); + lVar48 = lVar48 + 0x10; + iVar87 = iVar87 + 0x10; + iVar88 = iVar88 + 0x10; + iVar89 = iVar89 + 0x10; + iVar90 = iVar90 + 0x10; + uVar79 = CONCAT44(iVar80 + 0x10,(int)uVar79 + 0x10); + uVar81 = CONCAT44(iVar82 + 0x10,(int)uVar81 + 0x10); + local_e0 = local_e0 + 0x10; + iStack_dc = iStack_dc + 0x10; + iStack_d8 = iStack_d8 + 0x10; + iStack_d4 = iStack_d4 + 0x10; + uStack_d0 = CONCAT44(iVar83 + 0x10,(int)uStack_d0 + 0x10); + uStack_c8 = CONCAT44(iVar86 + 0x10,(int)uStack_c8 + 0x10); + iVar57 = iVar57 + 0x10; + iVar60 = iVar60 + 0x10; + iVar61 = iVar61 + 0x10; + iVar63 = iVar63 + 0x10; + uVar106 = CONCAT44(iVar107 + 0x10,iVar105 + 0x10); + uVar109 = CONCAT44(iVar110 + 0x10,iVar108 + 0x10); + iVar111 = iVar111 + 0x10; + iVar112 = iVar112 + 0x10; + iVar113 = iVar113 + 0x10; + iVar114 = iVar114 + 0x10; + uVar68 = CONCAT44(iVar69 + 0x10,iVar67 + 0x10); + uVar71 = CONCAT44(iVar72 + 0x10,iVar70 + 0x10); + } while (lVar48 != 0x400); + return; +} + + +================================================================== + +### FUNC 0016dfa8 (1396 bytes) name=SearchSeparateLine + +/* CFunctions::SearchSeparateLine() */ + +void __thiscall CFunctions::SearchSeparateLine(CFunctions *this) + +{ + undefined8 *puVar1; + uint uVar2; + long lVar3; + undefined8 *puVar4; + undefined8 *puVar5; + ushort *puVar6; + ushort *puVar21; + ushort *puVar36; + ushort *puVar37; + long lVar38; + ushort *puVar39; + ulong uVar40; + uint uVar41; + uint uVar42; + ulong uVar43; + ulong uVar44; + uint uVar45; + ushort *puVar46; + uint uVar47; + uint *puVar48; + bool bVar49; + undefined8 *puVar50; + ulong uVar51; + long lVar52; + ulong uVar53; + int iVar54; + uint uVar55; + uint uVar56; + uint uVar57; + int iVar58; + int iVar59; + int iVar60; + int iVar61; + int iVar62; + int iVar63; + int iVar64; + ushort uVar65; + float fVar66; + undefined8 uVar67; + float fVar68; + float afStack_2038 [1024]; + uint local_1038 [2]; + undefined8 uStack_1030; + undefined1 auStack_1024 [4076]; + long local_38; + ushort *puVar7; + ushort *puVar8; + ushort *puVar9; + ushort *puVar10; + ushort *puVar11; + ushort *puVar12; + ushort *puVar13; + ushort *puVar14; + ushort *puVar15; + ushort *puVar16; + ushort *puVar17; + ushort *puVar18; + ushort *puVar19; + ushort *puVar20; + ushort *puVar22; + ushort *puVar23; + ushort *puVar24; + ushort *puVar25; + ushort *puVar26; + ushort *puVar27; + ushort *puVar28; + ushort *puVar29; + ushort *puVar30; + ushort *puVar31; + ushort *puVar32; + ushort *puVar33; + ushort *puVar34; + ushort *puVar35; + + lVar3 = tpidr_el0; + local_38 = *(long *)(lVar3 + 0x28); + uVar42 = *(uint *)(this + 0x1dac); + uVar40 = (ulong)uVar42; + if (uVar42 == 0) { + uVar45 = 0; + uVar41 = 0; +LAB_0016e108: + uVar56 = 0; + } + else { + uVar45 = *(uint *)(this + 0x1da8); + puVar46 = *(ushort **)(this + 0x140); + uVar43 = 0; + uVar41 = uVar45 >> 2; + uVar56 = uVar45 >> 2 & 7; + uVar44 = (ulong)(uVar41 - 1) + 1; + lVar52 = uVar44 - uVar56; + do { + if (uVar41 == 0) { + uVar55 = 0; + } + else { + if ((uVar44 < 8) || (lVar52 == 0)) { + uVar55 = 0; + puVar36 = puVar46; + uVar57 = uVar41; + goto LAB_0016e08c; + } + puVar36 = puVar46 + lVar52 * 4; + puVar37 = puVar46 + 0x10; + iVar54 = 0; + iVar58 = 0; + iVar59 = 0; + iVar60 = 0; + iVar61 = 0; + iVar62 = 0; + iVar63 = 0; + iVar64 = 0; + lVar38 = lVar52; + do { + puVar39 = puVar37 + -0x10; + uVar65 = *puVar37; + puVar6 = puVar37 + 1; + puVar7 = puVar37 + 2; + puVar8 = puVar37 + 3; + puVar9 = puVar37 + 4; + puVar10 = puVar37 + 5; + puVar11 = puVar37 + 6; + puVar12 = puVar37 + 7; + puVar13 = puVar37 + 8; + puVar14 = puVar37 + 9; + puVar15 = puVar37 + 10; + puVar16 = puVar37 + 0xb; + puVar17 = puVar37 + 0xc; + puVar18 = puVar37 + 0xd; + puVar19 = puVar37 + 0xe; + puVar20 = puVar37 + 0xf; + puVar21 = puVar37 + -0xf; + puVar22 = puVar37 + -0xe; + puVar23 = puVar37 + -0xd; + puVar24 = puVar37 + -0xc; + puVar25 = puVar37 + -0xb; + puVar26 = puVar37 + -10; + puVar27 = puVar37 + -9; + puVar28 = puVar37 + -8; + puVar29 = puVar37 + -7; + puVar30 = puVar37 + -6; + puVar31 = puVar37 + -5; + puVar32 = puVar37 + -4; + puVar33 = puVar37 + -3; + puVar34 = puVar37 + -2; + puVar35 = puVar37 + -1; + lVar38 = lVar38 + -8; + puVar37 = puVar37 + 0x20; + iVar61 = iVar61 + (uint)uVar65 + (uint)*puVar6 + (uint)*puVar7 + (uint)*puVar8; + iVar62 = iVar62 + (uint)*puVar9 + (uint)*puVar10 + (uint)*puVar11 + (uint)*puVar12; + iVar63 = iVar63 + (uint)*puVar13 + (uint)*puVar14 + (uint)*puVar15 + (uint)*puVar16; + iVar64 = iVar64 + (uint)*puVar17 + (uint)*puVar18 + (uint)*puVar19 + (uint)*puVar20; + iVar54 = iVar54 + (uint)*puVar39 + (uint)*puVar21 + (uint)*puVar22 + (uint)*puVar23; + iVar58 = iVar58 + (uint)*puVar24 + (uint)*puVar25 + (uint)*puVar26 + (uint)*puVar27; + iVar59 = iVar59 + (uint)*puVar28 + (uint)*puVar29 + (uint)*puVar30 + (uint)*puVar31; + iVar60 = iVar60 + (uint)*puVar32 + (uint)*puVar33 + (uint)*puVar34 + (uint)*puVar35; + } while (lVar38 != 0); + uVar55 = iVar61 + iVar54 + iVar62 + iVar58 + iVar63 + iVar59 + iVar64 + iVar60; + uVar57 = uVar41 - (int)lVar52; + uVar2 = uVar56; + while (uVar2 != 0) { +LAB_0016e08c: + uVar55 = uVar55 + *puVar36 + (uint)puVar36[1] + (uint)puVar36[2] + (uint)puVar36[3]; + puVar36 = puVar36 + 4; + uVar57 = uVar57 - 1; + uVar2 = uVar57; + } + puVar46 = puVar46 + (ulong)(uVar41 - 1) * 4 + 4; + } + uVar57 = 0; + if (uVar45 != 0) { + uVar57 = uVar55 / uVar45; + } + local_1038[uVar43] = uVar57; + uVar43 = uVar43 + 1; + } while (uVar43 < uVar40); + uVar41 = uVar42 >> 2; + uVar45 = uVar42 * 7 >> 3; + if (uVar41 == 0) goto LAB_0016e108; + if (uVar42 < 0x20) { + lVar52 = 0; +LAB_0016e160: + uVar56 = 0; +LAB_0016e164: + lVar38 = (ulong)uVar41 - lVar52; + puVar48 = local_1038 + lVar52; + do { + lVar38 = lVar38 + -1; + uVar56 = *puVar48 + uVar56; + puVar48 = puVar48 + 1; + } while (lVar38 != 0); + } + else { + uVar55 = uVar42 >> 2 & 7; + lVar52 = (ulong)uVar41 - (ulong)uVar55; + if (lVar52 == 0) goto LAB_0016e160; + iVar54 = 0; + iVar58 = 0; + iVar59 = 0; + iVar60 = 0; + puVar50 = (undefined8 *)&stack0xffffffffffffefd8; + iVar61 = 0; + iVar62 = 0; + iVar63 = 0; + iVar64 = 0; + lVar38 = lVar52; + do { + puVar1 = puVar50 + -2; + puVar4 = puVar50 + -1; + puVar5 = puVar50 + 1; + uVar67 = *puVar50; + lVar38 = lVar38 + -8; + puVar50 = puVar50 + 4; + iVar54 = (int)*puVar1 + iVar54; + iVar58 = (int)((ulong)*puVar1 >> 0x20) + iVar58; + iVar59 = (int)*puVar4 + iVar59; + iVar60 = (int)((ulong)*puVar4 >> 0x20) + iVar60; + iVar61 = (int)uVar67 + iVar61; + iVar62 = (int)((ulong)uVar67 >> 0x20) + iVar62; + iVar63 = (int)*puVar5 + iVar63; + iVar64 = (int)((ulong)*puVar5 >> 0x20) + iVar64; + } while (lVar38 != 0); + uVar56 = iVar61 + iVar54 + iVar62 + iVar58 + iVar63 + iVar59 + iVar64 + iVar60; + if (uVar55 != 0) goto LAB_0016e164; + } + } + uVar44 = (ulong)uVar41; + if (uVar41 < uVar42) { + uVar43 = uVar40 - uVar44; + if ((uVar43 < 8) || (uVar51 = uVar43 & 0xfffffffffffffff8, uVar51 == 0)) { + uVar55 = 0; + uVar53 = uVar44; + } + else { + iVar54 = 0; + iVar58 = 0; + iVar59 = 0; + iVar60 = 0; + puVar50 = (undefined8 *)(auStack_1024 + uVar44 * 4 + -4); + iVar61 = 0; + iVar62 = 0; + iVar63 = 0; + iVar64 = 0; + uVar53 = uVar51; + do { + puVar1 = puVar50 + -2; + puVar4 = puVar50 + -1; + puVar5 = puVar50 + 1; + uVar67 = *puVar50; + uVar53 = uVar53 - 8; + puVar50 = puVar50 + 4; + iVar54 = (int)*puVar1 + iVar54; + iVar58 = (int)((ulong)*puVar1 >> 0x20) + iVar58; + iVar59 = (int)*puVar4 + iVar59; + iVar60 = (int)((ulong)*puVar4 >> 0x20) + iVar60; + iVar61 = (int)uVar67 + iVar61; + iVar62 = (int)((ulong)uVar67 >> 0x20) + iVar62; + iVar63 = (int)*puVar5 + iVar63; + iVar64 = (int)((ulong)*puVar5 >> 0x20) + iVar64; + } while (uVar53 != 0); + uVar55 = iVar61 + iVar54 + iVar62 + iVar58 + iVar63 + iVar59 + iVar64 + iVar60; + uVar53 = uVar51 + uVar44; + if (uVar43 == uVar51) goto joined_r0x0016e1fc; + } + do { + uVar43 = uVar53 + 1; + uVar55 = local_1038[uVar53] + uVar55; + uVar53 = uVar43; + } while (uVar43 < uVar40); + } + else { + uVar55 = 0; + } +joined_r0x0016e1fc: + if (uVar41 <= uVar45) { + uVar57 = (uVar42 - 1) - uVar41; + lVar52 = 0; + do { + fVar66 = (float)(uVar41 + (int)lVar52 + 1); + fVar68 = fVar66 / (float)uVar42; + uVar56 = local_1038[uVar44 + lVar52] + uVar56; + uVar55 = uVar55 - local_1038[uVar44 + lVar52]; + fVar66 = (float)uVar56 / fVar66 - (float)uVar55 / (float)uVar57; + lVar38 = lVar52 + 1; + uVar57 = uVar57 - 1; + afStack_2038[uVar44 + lVar52] = fVar66 * fVar68 * (1.0 - fVar68) * fVar66; + lVar52 = lVar38; + } while ((uVar45 + 1) - uVar44 != lVar38); + if (uVar41 <= uVar45) { + uVar40 = uVar44 + 1; + if (uVar40 != uVar45 + 1) { + fVar66 = afStack_2038[uVar44]; + bVar49 = NAN(fVar66); + uVar44 = (ulong)uVar41; + fVar68 = fVar66; + do { + if (!bVar49) { + fVar66 = fVar68; + } + fVar68 = afStack_2038[uVar40]; + uVar56 = (uint)uVar44; + if (fVar66 <= fVar68) { + uVar56 = (uint)uVar40; + } + uVar44 = (ulong)uVar56; + uVar40 = uVar40 + 1; + bVar49 = fVar68 < fVar66; + } while ((1 - (ulong)(uVar45 + 1)) + uVar40 != 1); + } + uVar56 = (uint)uVar44; + if ((uVar56 != uVar41) && (uVar56 != uVar45)) { + uVar45 = 0; + uVar55 = 0; + do { + uVar40 = (ulong)uVar45; + uVar45 = uVar45 + 1; + uVar55 = local_1038[uVar40] + uVar55; + } while (uVar45 <= uVar56); + uVar45 = uVar56 + 1; + if (uVar45 < uVar42) { + uVar57 = (uVar42 - 2) - uVar56; + uVar40 = (ulong)uVar57 + 1; + if (uVar40 < 8) { +LAB_0016e3e8: + uVar57 = 0; + uVar40 = uVar44; + uVar47 = uVar45; + } + else { + uVar2 = uVar57 + 1 & 7; + lVar52 = uVar40 - uVar2; + if (lVar52 == 0) goto LAB_0016e3e8; + uVar40 = lVar52 + uVar44; + uVar47 = uVar45 + (int)lVar52; + iVar54 = 0; + iVar58 = 0; + iVar59 = 0; + iVar60 = 0; + puVar50 = (undefined8 *)(auStack_1024 + uVar44 * 4); + iVar61 = 0; + iVar62 = 0; + iVar63 = 0; + iVar64 = 0; + do { + puVar1 = puVar50 + -2; + puVar4 = puVar50 + -1; + puVar5 = puVar50 + 1; + uVar67 = *puVar50; + lVar52 = lVar52 + -8; + puVar50 = puVar50 + 4; + iVar54 = (int)*puVar1 + iVar54; + iVar58 = (int)((ulong)*puVar1 >> 0x20) + iVar58; + iVar59 = (int)*puVar4 + iVar59; + iVar60 = (int)((ulong)*puVar4 >> 0x20) + iVar60; + iVar61 = (int)uVar67 + iVar61; + iVar62 = (int)((ulong)uVar67 >> 0x20) + iVar62; + iVar63 = (int)*puVar5 + iVar63; + iVar64 = (int)((ulong)*puVar5 >> 0x20) + iVar64; + } while (lVar52 != 0); + uVar57 = iVar61 + iVar54 + iVar62 + iVar58 + iVar63 + iVar59 + iVar64 + iVar60; + if (uVar2 == 0) goto LAB_0016e414; + } + puVar48 = local_1038 + uVar40; + do { + puVar48 = puVar48 + 1; + uVar47 = uVar47 + 1; + uVar57 = *puVar48 + uVar57; + } while (uVar47 < uVar42); + } + else { + uVar57 = 0; + } +LAB_0016e414: + uVar2 = 0; + if (uVar45 != 0) { + uVar2 = uVar55 / uVar45; + } + uVar45 = 0; + if (uVar42 + ~uVar56 != 0) { + uVar45 = uVar57 / (uVar42 + ~uVar56); + } + iVar58 = uVar2 - uVar45; + iVar54 = -iVar58; + if (-1 < iVar58) { + iVar54 = iVar58; + } + if (((int)uVar45 <= (int)uVar2) && ((int)(uVar45 + uVar2) <= iVar54 * 0x80)) { + *(uint *)(this + 0x4a48) = local_1038[uVar44]; + uVar45 = *(uint *)(this + 0x4a40); + if ((uVar41 < uVar45) && (uVar45 <= uVar42 - 1)) { + uVar42 = uVar42 >> 7; + if (uVar42 < 2) { + uVar42 = 1; + } + uVar41 = uVar42 + uVar45; + if (uVar56 <= uVar42 + uVar45) { + uVar41 = uVar56; + } + uVar56 = uVar45 - uVar42; + if (uVar45 - uVar42 <= uVar41) { + uVar56 = uVar41; + } + } + uVar42 = 0; + uVar45 = 0; + do { + uVar40 = (ulong)uVar42; + uVar42 = uVar42 + 1; + uVar45 = local_1038[uVar40] + uVar45; + } while (uVar42 <= uVar56); + uVar42 = 0; + if (uVar56 + 1 != 0) { + uVar42 = uVar45 / (uVar56 + 1); + } + *(uint *)(this + 0x4a40) = uVar56; + *(uint *)(this + 0x4a44) = uVar42; + goto LAB_0016e4f0; + } + } + } + } + *(uint *)(this + 0x4a40) = uVar42 - 1; + *(undefined4 *)(this + 0x4a44) = *(undefined4 *)(this + 0x1e00); + *(undefined4 *)(this + 0x4a48) = 0; +LAB_0016e4f0: + if (*(long *)(lVar3 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0016e51c (2032 bytes) name=HistDeRedundance + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* CFunctions::HistDeRedundance() */ + +void __thiscall CFunctions::HistDeRedundance(CFunctions *this) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + uint uVar4; + long lVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + size_t __n; + uint uVar9; + ushort *puVar10; + ulong uVar11; + long lVar12; + ulong uVar13; + long lVar14; + CFunctions *pCVar15; + long lVar16; + long lVar17; + int iVar18; + uint uVar19; + int iVar20; + int iVar21; + uint uVar22; + int iVar24; + undefined1 auVar23 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + uint uVar33; + int iVar34; + uint uVar35; + int iVar36; + uint uVar37; + int iVar38; + uint uVar39; + int iVar40; + int iVar41; + int iVar42; + int iVar43; + int iVar44; + int iVar45; + int iVar46; + int iVar47; + int iVar48; + int iVar49; + int iVar50; + int iVar51; + int iVar52; + int iVar53; + int iVar54; + int iVar55; + uint local_1068 [2]; + long alStack_1060 [512]; + + lVar5 = tpidr_el0; + alStack_1060[0x1ff] = *(long *)(lVar5 + 0x28); + iVar46 = *(int *)(this + 100); + uVar33 = *(uint *)(this + 0x76d0); + if ((iVar46 != 0) && (*(int *)(this + 0x10) == 0)) { + uVar33 = (*(int *)(this + 0x4a40) + 1) * *(int *)(this + 0x1da8); + } + iVar27 = *(int *)(this + 0x1e18); + uVar4 = uVar33 >> 0xc; + if (uVar4 < 2) { + uVar4 = 1; + } + uVar35 = *(int *)(this + 0x1e14) - iVar27; + memset(this + 0x2a38,0,0x1000); + if (uVar33 != 0) { + puVar10 = *(ushort **)(this + 0x140); + uVar37 = 0; + if (uVar35 != 0) { + uVar37 = 0xffc00000 / uVar35; + } + do { + uVar33 = uVar33 - 1; + uVar9 = ((uint)*puVar10 - iVar27) * uVar37 >> 0x16; + *(int *)(this + (ulong)uVar9 * 4 + 0x2a38) = *(int *)(this + (ulong)uVar9 * 4 + 0x2a38) + 1; + puVar10 = puVar10 + 1; + } while (uVar33 != 0); + } + if (((iVar46 != 0) && (*(int *)(this + 0x10) == 0)) && + (*(uint *)(this + 0x4a40) < *(int *)(this + 0x1dac) - 1U)) { + iVar18 = *(int *)(this + 0x4a48) * 0x20; + if (iVar18 < *(int *)(this + 0x4a44) * 0x1f) { + uVar33 = (*(int *)(this + 0x4a48) - iVar27) * 0x3ff; + if (uVar35 <= uVar33) { + uVar37 = 0; + if (uVar35 != 0) { + uVar37 = uVar33 / uVar35; + } + if (uVar37 < 2) { + uVar37 = 1; + } + __n = (ulong)(uVar37 - 1) * 4 + 4; +LAB_0016e66c: + memset(this + 0x2a38,0,__n); + } + } + else if (*(int *)(this + 0x4a44) * 0x21 < iVar18) { + __n = 0x1000; + goto LAB_0016e66c; + } + } + pCVar15 = this + 0x1e00; + if (iVar46 != 0) { + pCVar15 = this + 0x4a44; + } + uVar37 = (*(int *)pCVar15 - iVar27) * 0x3ff; + uVar33 = 0; + if (uVar35 != 0) { + uVar33 = uVar37 / uVar35; + } + uVar9 = uVar33; + if (*(int *)(this + 0x68) != 0) { + if (uVar37 < uVar35) { + uVar37 = 0; + uVar35 = 0; + } + else { + uVar2 = (ulong)uVar33; + if (uVar33 < 2) { + uVar2 = 1; + } + if (uVar2 < 8) { + uVar13 = 0; +LAB_0016e760: + uVar35 = 0; + uVar37 = 0; + } + else { + uVar13 = uVar2 & 0xfffffff8; + if (uVar13 == 0) goto LAB_0016e760; + uVar11 = 0; + iVar21 = 0; + iVar41 = 0; + iVar43 = 0; + iVar45 = 0; + pCVar15 = this + 0x2a48; + iVar47 = 0; + iVar24 = 0; + iVar28 = 0; + iVar29 = 0; + iVar30 = 0; + iVar31 = 0; + iVar32 = 0; + iVar34 = 0; + iVar36 = 0; + iVar38 = 0; + iVar40 = 0; + iVar42 = 0; + iVar46 = _DAT_00439410; + iVar27 = _UNK_00439414; + iVar18 = _UNK_00439418; + iVar20 = _UNK_0043941c; + do { + uVar11 = uVar11 + 8; + iVar44 = (int)*(undefined8 *)(pCVar15 + -0x10); + iVar21 = iVar44 + iVar21; + iVar48 = (int)((ulong)*(undefined8 *)(pCVar15 + -0x10) >> 0x20); + iVar41 = iVar48 + iVar41; + iVar49 = (int)*(undefined8 *)(pCVar15 + -8); + iVar43 = iVar49 + iVar43; + iVar50 = (int)((ulong)*(undefined8 *)(pCVar15 + -8) >> 0x20); + iVar45 = iVar50 + iVar45; + iVar51 = (int)*(undefined8 *)pCVar15; + iVar47 = iVar51 + iVar47; + iVar52 = (int)((ulong)*(undefined8 *)pCVar15 >> 0x20); + iVar24 = iVar52 + iVar24; + iVar53 = (int)*(undefined8 *)(pCVar15 + 8); + iVar28 = iVar53 + iVar28; + iVar54 = (int)((ulong)*(undefined8 *)(pCVar15 + 8) >> 0x20); + iVar29 = iVar54 + iVar29; + iVar30 = iVar30 + iVar44 * iVar46; + iVar31 = iVar31 + iVar48 * iVar27; + iVar32 = iVar32 + iVar49 * iVar18; + iVar34 = iVar34 + iVar50 * iVar20; + iVar36 = iVar36 + iVar51 * (iVar46 + 4); + iVar38 = iVar38 + iVar52 * (iVar27 + 4); + iVar40 = iVar40 + iVar53 * (iVar18 + 4); + iVar42 = iVar42 + iVar54 * (iVar20 + 4); + iVar46 = iVar46 + 8; + iVar27 = iVar27 + 8; + iVar18 = iVar18 + 8; + iVar20 = iVar20 + 8; + pCVar15 = pCVar15 + 0x20; + } while (uVar11 != uVar13); + uVar37 = iVar36 + iVar30 + iVar38 + iVar31 + iVar40 + iVar32 + iVar42 + iVar34; + uVar35 = iVar47 + iVar21 + iVar24 + iVar41 + iVar28 + iVar43 + iVar29 + iVar45; + if (uVar2 == uVar13) goto LAB_0016e788; + } + do { + lVar17 = uVar13 * 4; + uVar37 = uVar37 + *(int *)(this + lVar17 + 0x2a38) * (int)uVar13; + uVar13 = uVar13 + 1; + uVar35 = *(int *)(this + lVar17 + 0x2a38) + uVar35; + } while (uVar13 < uVar33); + } +LAB_0016e788: + iVar46 = uVar33 + 1; + if (iVar46 < 0x400) { + uVar2 = (ulong)(-uVar33 + 0x3fe) + 1; + lVar17 = (long)iVar46; + if (uVar2 < 8) { +LAB_0016e85c: + uVar22 = 0; + uVar19 = 0; + lVar12 = lVar17; + iVar27 = iVar46; +LAB_0016e864: + iVar27 = 0x400 - iVar27; + do { + iVar27 = iVar27 + -1; + uVar19 = *(int *)(this + lVar12 * 4 + 0x2a38) + uVar19; + uVar22 = uVar22 + *(int *)(this + lVar12 * 4 + 0x2a38) * (int)lVar12; + lVar12 = lVar12 + 1; + } while (iVar27 != 0); + } + else { + uVar39 = -uVar33 + 0x3ff & 7; + lVar14 = uVar2 - uVar39; + if (lVar14 == 0) goto LAB_0016e85c; + lVar16 = 0; + lVar12 = lVar14 + lVar17; + iVar27 = iVar46 + (int)lVar14; + iVar18 = 0; + iVar20 = 0; + iVar21 = 0; + iVar41 = 0; + iVar43 = 0; + iVar45 = 0; + iVar47 = 0; + iVar24 = 0; + iVar28 = 0; + iVar29 = 0; + iVar30 = 0; + iVar31 = 0; + iVar40 = iVar46 + _DAT_00439410; + iVar42 = iVar46 + _UNK_00439414; + iVar44 = iVar46 + _UNK_00439418; + iVar46 = iVar46 + _UNK_0043941c; + iVar32 = 0; + iVar34 = 0; + iVar36 = 0; + iVar38 = 0; + do { + lVar3 = lVar16 + lVar17; + lVar16 = lVar16 + 8; + iVar48 = (int)*(undefined8 *)(this + lVar3 * 4 + 0x2a38); + iVar18 = iVar48 + iVar18; + iVar49 = (int)((ulong)*(undefined8 *)(this + lVar3 * 4 + 0x2a38) >> 0x20); + iVar20 = iVar49 + iVar20; + iVar50 = (int)*(undefined8 *)(this + lVar3 * 4 + 0x2a40); + iVar21 = iVar50 + iVar21; + iVar51 = (int)((ulong)*(undefined8 *)(this + lVar3 * 4 + 0x2a40) >> 0x20); + iVar41 = iVar51 + iVar41; + iVar52 = (int)*(undefined8 *)(this + lVar3 * 4 + 0x2a48); + iVar43 = iVar52 + iVar43; + iVar53 = (int)((ulong)*(undefined8 *)(this + lVar3 * 4 + 0x2a48) >> 0x20); + iVar45 = iVar53 + iVar45; + iVar54 = (int)*(undefined8 *)(this + lVar3 * 4 + 0x2a50); + iVar47 = iVar54 + iVar47; + iVar55 = (int)((ulong)*(undefined8 *)(this + lVar3 * 4 + 0x2a50) >> 0x20); + iVar24 = iVar55 + iVar24; + iVar28 = iVar28 + iVar48 * iVar40; + iVar29 = iVar29 + iVar49 * iVar42; + iVar30 = iVar30 + iVar50 * iVar44; + iVar31 = iVar31 + iVar51 * iVar46; + iVar32 = iVar32 + iVar52 * (iVar40 + 4); + iVar34 = iVar34 + iVar53 * (iVar42 + 4); + iVar36 = iVar36 + iVar54 * (iVar44 + 4); + iVar38 = iVar38 + iVar55 * (iVar46 + 4); + iVar40 = iVar40 + 8; + iVar42 = iVar42 + 8; + iVar44 = iVar44 + 8; + iVar46 = iVar46 + 8; + } while (lVar16 != lVar14); + uVar22 = iVar32 + iVar28 + iVar34 + iVar29 + iVar36 + iVar30 + iVar38 + iVar31; + uVar19 = iVar43 + iVar18 + iVar45 + iVar20 + iVar47 + iVar21 + iVar24 + iVar41; + if (uVar39 != 0) goto LAB_0016e864; + } + if ((uVar35 != 0) && (uVar19 != 0)) { + uVar9 = 0; + if (uVar35 != 0) { + uVar9 = uVar37 / uVar35; + } + uVar35 = 0; + if (uVar19 != 0) { + uVar35 = uVar22 / uVar19; + } + uVar9 = uVar35 + uVar9 >> 1; + if (uVar9 <= uVar33) { + uVar9 = uVar33; + } + } + } + } + iVar46 = *(int *)(this + 0x30); + iVar27 = *(int *)(this + 0x2a38); + if (99 < iVar46) { + iVar46 = 100; + } + if (iVar46 < -99) { + iVar46 = -100; + } + pCVar15 = this + 0x2a4c; + lVar17 = 0x3f8; + iVar18 = iVar27; + iVar20 = iVar27; + iVar21 = iVar27; + do { + auVar26 = *(undefined1 (*) [16])(pCVar15 + -0x10); + lVar17 = lVar17 + -8; + auVar25._4_4_ = iVar18; + auVar25._0_4_ = iVar27; + auVar25._8_4_ = iVar20; + auVar25._12_4_ = iVar21; + auVar25 = NEON_ext(auVar25,auVar26,0xc,1); + iVar20 = (int)*(undefined8 *)(pCVar15 + 8); + iVar21 = (int)((ulong)*(undefined8 *)(pCVar15 + 8) >> 0x20); + iVar27 = (int)*(undefined8 *)pCVar15; + iVar18 = (int)((ulong)*(undefined8 *)pCVar15 >> 0x20); + *(uint *)(pCVar15 + -0xc) = (uint)(auVar26._8_4_ + auVar25._8_4_) >> 1; + *(uint *)(pCVar15 + -8) = (uint)(auVar26._12_4_ + auVar25._12_4_) >> 1; + *(uint *)(pCVar15 + -0x14) = (uint)(auVar26._0_4_ + auVar25._0_4_) >> 1; + *(uint *)(pCVar15 + -0x10) = (uint)(auVar26._4_4_ + auVar25._4_4_) >> 1; + auVar6._12_4_ = iVar21; + auVar6._0_12_ = *(undefined1 (*) [12])pCVar15; + auVar25 = NEON_ext(auVar26,auVar6,0xc,1); + *(uint *)(pCVar15 + 4) = (uint)(iVar20 + auVar25._8_4_) >> 1; + *(uint *)(pCVar15 + 8) = (uint)(iVar21 + auVar25._12_4_) >> 1; + *(uint *)(pCVar15 + -4) = (uint)(iVar27 + auVar25._0_4_) >> 1; + *(uint *)pCVar15 = (uint)(iVar18 + auVar25._4_4_) >> 1; + pCVar15 = pCVar15 + 0x20; + } while (lVar17 != 0); + *(uint *)(this + 0x3a18) = (uint)(*(int *)(this + 0x3a1c) + iVar21) >> 1; + *(uint *)(this + 0x3a1c) = (uint)(*(int *)(this + 0x3a20) + *(int *)(this + 0x3a1c)) >> 1; + *(uint *)(this + 0x3a20) = (uint)(*(int *)(this + 0x3a24) + *(int *)(this + 0x3a20)) >> 1; + *(uint *)(this + 0x3a24) = (uint)(*(int *)(this + 0x3a28) + *(int *)(this + 0x3a24)) >> 1; + *(uint *)(this + 0x3a28) = (uint)(*(int *)(this + 0x3a2c) + *(int *)(this + 0x3a28)) >> 1; + *(uint *)(this + 0x3a2c) = (uint)(*(int *)(this + 0x3a30) + *(int *)(this + 0x3a2c)) >> 1; + uVar33 = (uint)(*(int *)(this + 0x3a34) + *(int *)(this + 0x3a30)) >> 1; + uVar35 = 0; + if (uVar4 != 0) { + uVar35 = 0x10000 / uVar4; + } + *(uint *)(this + 0x3a30) = uVar33; + *(uint *)(this + 0x3a34) = uVar33; + if (-1 < (int)uVar9) { + uVar33 = 0; + iVar27 = 0; + lVar17 = (long)(int)uVar9 + 1; + pCVar15 = this + (long)(int)uVar9 * 4 + 0x2a38; + do { + lVar17 = lVar17 + -1; + uVar33 = *(int *)pCVar15 + uVar33; + if (uVar4 <= uVar33) { + iVar27 = iVar27 + 1; + uVar33 = 0; + } + *(uint *)(pCVar15 + 0x1000) = iVar27 * 0x100 + (uVar33 * uVar35 >> 8); + pCVar15 = pCVar15 + -4; + } while (0 < lVar17); + } + iVar27 = uVar9 + 1; + if (iVar27 < 0x400) { + uVar33 = 0; + iVar18 = 0; + lVar17 = (long)iVar27 + -1; + pCVar15 = this + (long)iVar27 * 4 + 0x2a38; + do { + uVar33 = *(int *)pCVar15 + uVar33; + if (uVar33 < uVar4 << 3) { + if (uVar4 <= uVar33) { + iVar18 = iVar18 + 1; + uVar33 = 0; + } + } + else { + uVar33 = 0; + iVar18 = iVar18 + 2; + } + lVar17 = lVar17 + 1; + *(uint *)(pCVar15 + 0x1000) = (uVar33 * uVar35 >> 8) + iVar18 * 0x100; + pCVar15 = pCVar15 + 4; + } while (lVar17 < 0x3ff); + } + iVar18 = *(int *)(this + 0x34); + uVar33 = (uint)(*(int *)(this + 0x24) * 1000) >> (ulong)(*(uint *)(this + 0x76e4) & 0x1f); + if (0xfffe < uVar33) { + uVar33 = 0xffff; + } + iVar20 = iVar18; + if (iVar18 < -99) { + iVar20 = -100; + } + iVar21 = iVar18; + if (99 < iVar18) { + iVar21 = 100; + } + if (iVar18 < 0) { + iVar21 = iVar20; + } + iVar18 = (iVar18 >> 0x1f & 0xffffff9cU) + 0x96; + iVar20 = 0; + if (iVar18 != 0) { + iVar20 = (int)(uVar33 * iVar21) / iVar18; + } + uVar33 = uVar33 - iVar20; + if ((*(int *)(this + 0x1200) != 0) && (0.0 < *(float *)(this + 0x74))) { + if (*(int *)(this + 0x1310) == 2) { + iVar18 = *(int *)(this + 0x1320); + iVar20 = *(int *)(this + 0x131c); + if (iVar18 - iVar20 != 50000) goto LAB_0016eb54; + } + else { + if (*(int *)(this + 0x1310) != 1) goto LAB_0016eb54; + iVar18 = *(int *)(this + 0x1320); + iVar20 = *(int *)(this + 0x131c); + } + iVar18 = iVar18 + iVar20; + if (iVar18 < 0) { + iVar18 = iVar18 + 1; + } + uVar33 = uVar33 + (int)((*(float *)(this + 0x74) * + (float)(int)((*(int *)(this + 0x3c) - (iVar18 >> 1)) * uVar33)) / + DAT_004394f4); + } +LAB_0016eb54: + iVar46 = (iVar46 * 0x1bf) / 200; + if ((int)uVar33 < 0x81) { + uVar33 = 0x80; + } + uVar35 = (*(int *)(this + 0x1e14) - *(int *)(this + 0x1e18)) * 0x10; + uVar4 = 0; + if (uVar33 != 0) { + uVar4 = uVar35 / uVar33; + } + if (0x1ff < uVar4) { + uVar4 = 0x200; + } + auVar26._4_4_ = _UNK_00439414; + auVar26._0_4_ = _DAT_00439410; + auVar26._8_4_ = _UNK_00439418; + auVar26._12_4_ = _UNK_0043941c; + if (uVar35 < uVar33) { + uVar4 = 1; + } + lVar17 = 0; + auVar23._8_4_ = 1; + auVar23._0_8_ = 0x100000001; + auVar23._12_4_ = 1; + do { + iVar18 = auVar26._4_4_; + iVar20 = auVar26._8_4_; + iVar21 = auVar26._12_4_; + uVar33 = (auVar26._0_4_ * 4 + 0x1800) * uVar4 >> 0xd; + uVar35 = (iVar18 * 4 + 0x1800) * uVar4 >> 0xd; + uVar37 = (iVar20 * 4 + 0x1800) * uVar4 >> 0xd; + uVar39 = (iVar21 * 4 + 0x1800) * uVar4 >> 0xd; + iVar41 = -(uint)(uVar33 == 0); + iVar43 = -(uint)(uVar35 == 0); + iVar45 = -(uint)(uVar37 == 0); + iVar47 = -(uint)(uVar39 == 0); + auVar8[1] = ~(byte)((uint)iVar41 >> 8); + auVar8[0] = ~(byte)iVar41; + auVar8[2] = ~(byte)((uint)iVar41 >> 0x10); + auVar8[3] = ~(byte)((uint)iVar41 >> 0x18); + auVar8[4] = ~(byte)iVar43; + auVar8[5] = ~(byte)((uint)iVar43 >> 8); + auVar8[6] = ~(byte)((uint)iVar43 >> 0x10); + auVar8[7] = ~(byte)((uint)iVar43 >> 0x18); + auVar8[8] = ~(byte)iVar45; + auVar8[9] = ~(byte)((uint)iVar45 >> 8); + auVar8[10] = ~(byte)((uint)iVar45 >> 0x10); + auVar8[0xb] = ~(byte)((uint)iVar45 >> 0x18); + auVar8[0xc] = ~(byte)iVar47; + auVar8[0xd] = ~(byte)((uint)iVar47 >> 8); + auVar8[0xe] = ~(byte)((uint)iVar47 >> 0x10); + auVar7._4_4_ = uVar35; + auVar7._0_4_ = uVar33; + auVar7._8_4_ = uVar37; + auVar7._12_4_ = uVar39; + auVar8[0xf] = 0; + auVar25 = auVar23 ^ (auVar23 ^ auVar7) & auVar8; + *(long *)((long)alStack_1060 + lVar17) = auVar25._8_8_; + *(long *)((long)alStack_1060 + lVar17 + -8) = auVar25._0_8_; + lVar17 = lVar17 + 0x10; + auVar26._0_4_ = auVar26._0_4_ + 4; + auVar26._4_4_ = iVar18 + 4; + auVar26._8_4_ = iVar20 + 4; + auVar26._12_4_ = iVar21 + 4; + } while (lVar17 != 0x1000); + uVar33 = *(uint *)(this + 0x3a38); + if ((uVar33 != 0) && (-1 < (int)uVar9)) { + uVar4 = (iVar46 + 0x1c0) * 0x10; + lVar17 = (long)(int)uVar9; + uVar35 = 0; + uVar37 = uVar4; + if (uVar33 != 0) { + uVar35 = (uint)((iVar46 + 0x1c0) * 0x40000) / uVar33; + } + do { + uVar9 = *(uint *)((long)alStack_1060 + lVar17 * 4 + -8); + uVar39 = uVar4 - (*(int *)(this + lVar17 * 4 + 0x3a38) * uVar35 >> 0xe); + uVar33 = uVar37 - uVar9; + if (uVar37 - uVar39 <= uVar9) { + uVar33 = uVar39; + } + this[lVar17 + 0x2638] = SUB41(uVar33 >> 6,0); + bVar1 = 0 < lVar17; + lVar17 = lVar17 + -1; + uVar37 = uVar33; + } while (bVar1); + } + uVar33 = *(uint *)(this + 0x4a34); + if ((uVar33 != 0) && (iVar27 < 0x400)) { + lVar17 = (long)iVar27; + uVar4 = iVar46 * 0x10 + 0x1bf0; + uVar35 = 0; + uVar37 = uVar4; + if (uVar33 != 0) { + uVar35 = (uint)((0x240 - iVar46) * 0x40000) / uVar33; + } + do { + uVar39 = *(uint *)((long)alStack_1060 + lVar17 * 4 + -8); + uVar33 = uVar4 + (*(int *)(this + lVar17 * 4 + 0x3a38) * uVar35 >> 0xe); + uVar9 = uVar39 + uVar37; + if (uVar33 - uVar37 <= uVar39) { + uVar9 = uVar33; + } + this[lVar17 + 0x2638] = SUB41(uVar9 >> 6,0); + bVar1 = lVar17 < 0x3ff; + lVar17 = lVar17 + 1; + uVar37 = uVar9; + } while (bVar1); + } + if (*(long *)(lVar5 + 0x28) == alStack_1060[0x1ff]) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0016ed0c (684 bytes) name=IsothermalPalette + +/* CFunctions::IsothermalPalette() */ + +void __thiscall CFunctions::IsothermalPalette(CFunctions *this) + +{ + CFunctions *__dest; + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + uint uVar6; + ulong uVar7; + long lVar8; + ulong uVar9; + CFunctions *pCVar10; + ulong uVar11; + ulong uVar12; + ulong uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + + uVar16 = *(uint *)(this + 0x1da8); + uVar1 = *(uint *)(this + 0x76d0); + uVar2 = *(uint *)(this + 0x1e14); + uVar3 = *(uint *)(this + 0x1e18); + iVar4 = *(int *)(this + 0x18); + uVar15 = 0; + uVar18 = 0xffff; + uVar14 = 0x7fff; + *(undefined4 *)(this + 0x54) = 1; + do { + uVar5 = ReviseTemperature(this,(ushort)uVar14,(uVar16 >> 1) + (uVar1 >> 1),0); + if ((*(int *)(this + 0x54) != 0) || (*(int *)(this + 0x58) != 0)) { + uVar5 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar5); + } + if ((int)uVar5 <= iVar4) { + uVar15 = uVar14; + uVar14 = uVar18; + } + uVar18 = uVar14; + uVar14 = uVar15 + uVar18 >> 1; + } while (uVar15 + 1 < uVar18); + uVar1 = *(uint *)(this + 0x1da8); + uVar14 = *(uint *)(this + 0x76d0); + iVar4 = *(int *)(this + 0x14); + uVar16 = 0; + uVar17 = 0xffff; + uVar5 = 0x7fff; + *(undefined4 *)(this + 0x54) = 1; + do { + uVar6 = ReviseTemperature(this,(ushort)uVar5,(uVar1 >> 1) + (uVar14 >> 1),0); + if ((*(int *)(this + 0x54) != 0) || (*(int *)(this + 0x58) != 0)) { + uVar6 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar6); + } + if ((int)uVar6 <= iVar4) { + uVar16 = uVar5; + uVar5 = uVar17; + } + uVar17 = uVar5; + uVar5 = uVar16 + uVar17 >> 1; + } while (uVar16 + 1 < uVar17); + uVar15 = uVar15 + uVar18 >> 1; + uVar16 = uVar16 + uVar17 >> 1; + if (uVar2 < uVar15) { + uVar15 = 0x100; +joined_r0x0016eeac: + if (uVar2 < uVar16) goto LAB_0016ee60; +LAB_0016ee7c: + if (uVar16 < uVar3) { + uVar16 = 0xffffffff; + } + else { + uVar1 = 0; + if (uVar2 - uVar3 != 0) { + uVar1 = ((uVar16 - uVar3) * 0x3ff) / (uVar2 - uVar3); + } + uVar16 = (uint)(byte)this[(ulong)uVar1 + 0x2638]; + } + } + else { + if (uVar3 <= uVar15) { + uVar1 = 0; + if (uVar2 - uVar3 != 0) { + uVar1 = ((uVar15 - uVar3) * 0x3ff) / (uVar2 - uVar3); + } + uVar15 = (uint)(byte)this[(ulong)uVar1 + 0x2638]; + goto joined_r0x0016eeac; + } + uVar15 = 0xffffffff; + if (uVar16 <= uVar2) goto LAB_0016ee7c; +LAB_0016ee60: + uVar16 = 0x100; + } + __dest = this + 0x5b0; + memcpy(__dest,this + 0x188,0x400); + uVar16 = uVar16 & ((int)uVar16 >> 0x1f ^ 0xffffffffU); + uVar12 = (ulong)uVar16; + if (0xfe < (int)uVar15) { + uVar15 = 0xff; + } + if ((int)uVar16 <= (int)uVar15) { + uVar7 = (ulong)(int)uVar15; + uVar9 = uVar7; + if ((long)uVar7 <= (long)uVar12) { + uVar9 = uVar12; + } + uVar9 = (uVar9 + 1) - uVar12; + if ((0x1f < uVar9) && (uVar11 = uVar9 & 0xffffffffffffffe0, uVar11 != 0)) { + pCVar10 = this + uVar12 * 4 + 0x5f0; + uVar13 = uVar11; + do { + *(undefined8 *)(pCVar10 + -0x18) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -0x20) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -8) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -0x10) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -0x38) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -0x40) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -0x28) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + -0x30) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 0x28) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 0x20) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 0x38) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 0x30) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 8) = 0xff000000ff00; + *(undefined8 *)pCVar10 = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 0x18) = 0xff000000ff00; + *(undefined8 *)(pCVar10 + 0x10) = 0xff000000ff00; + uVar13 = uVar13 - 0x20; + pCVar10 = pCVar10 + 0x80; + } while (uVar13 != 0); + uVar12 = uVar11 + uVar12; + if (uVar9 == uVar11) goto LAB_0016ef80; + } + lVar8 = uVar12 - 1; + pCVar10 = this + uVar12 * 4 + 0x5b3; + do { + lVar8 = lVar8 + 1; + *(undefined4 *)(pCVar10 + -3) = 0xff00; + pCVar10 = pCVar10 + 4; + } while (lVar8 < (long)uVar7); + } +LAB_0016ef80: + memcpy(this + 0x9d8,__dest,0x400); + memcpy(this + 0xe00,__dest,0x400); + return; +} + + +================================================================== + +### FUNC 0016efb8 (488 bytes) name=MapTemperature + +/* CFunctions::MapTemperature(int) */ + +void CFunctions::MapTemperature(int param_1) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + ulong uVar5; + int iVar6; + uint uVar7; + undefined1 *puVar8; + long lVar9; + int iVar10; + uint uVar11; + ushort *puVar12; + uint uVar13; + uint uVar14; + + uVar5 = (ulong)(uint)param_1; + iVar2 = *(int *)(uVar5 + 0x1e14); + iVar3 = *(int *)(uVar5 + 0x1e18); + puVar8 = *(undefined1 **)(uVar5 + 0x170); + puVar12 = *(ushort **)(uVar5 + 0x140); + memset((void *)(uVar5 + 0x1e38),0,0x400); + iVar6 = *(int *)(uVar5 + 0x76d0); + if (iVar6 != 0) { + uVar4 = iVar2 - iVar3; + uVar7 = 0; + if (uVar4 != 0) { + uVar7 = 0xffc00000 / uVar4; + } + do { + iVar6 = iVar6 + -1; + uVar4 = ((uint)*puVar12 - iVar3) * uVar7; + lVar9 = uVar5 + 0x1de0 + (ulong)(uVar4 >> 0x18) * 4; + *puVar8 = *(undefined1 *)(uVar5 + 0x1de0 + (ulong)(uVar4 >> 0x16) + 0x858); + *(int *)(lVar9 + 0x58) = *(int *)(lVar9 + 0x58) + 1; + puVar8 = puVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar6 != 0); + } + uVar4 = *(uint *)(uVar5 + 0x1db8); + lVar9 = *(long *)(uVar5 + 0x180); + *(undefined4 *)(uVar5 + 0x1e24) = 1; + if (*(int *)(uVar5 + 0x6c) == 0) { + uVar7 = *(uint *)(uVar5 + 0x1dbc) - 1; + if (*(uint *)(uVar5 + 0x1dbc) < 2) { + uVar11 = 0; + } + else { + uVar11 = 0; + if (uVar7 != 0) { + uVar11 = 0xff0000 / uVar7; + } + } + if (-1 < (int)uVar7) { + uVar13 = uVar11 * uVar7; + uVar14 = uVar4 * uVar7; + do { + memset((void *)(lVar9 + (ulong)uVar14),uVar13 >> 0x10,(ulong)uVar4); + uVar7 = uVar7 - 1; + uVar13 = uVar13 - uVar11; + uVar14 = uVar14 - uVar4; + } while (-1 < (int)uVar7); + } + } + else { + iVar2 = *(int *)(uVar5 + 0x1e18); + iVar3 = *(int *)(uVar5 + 0x1dfc) - iVar2; + if ((iVar3 == 0) || (iVar6 = *(int *)(uVar5 + 0x1e14) - iVar2, iVar6 == 0)) { + iVar10 = 0; + } + else { + iVar10 = 0; + if (iVar6 != 0) { + iVar10 = (iVar3 * 0x3ff) / iVar6; + } + } + iVar3 = *(int *)(uVar5 + 0x1df8) - iVar2; + if ((iVar3 == 0) || (iVar2 = *(int *)(uVar5 + 0x1e14) - iVar2, iVar2 == 0)) { + iVar6 = 0x3ff; + } + else { + iVar6 = 0; + if (iVar2 != 0) { + iVar6 = (iVar3 * 0x3ff) / iVar2; + } + } + uVar7 = *(int *)(uVar5 + 0x1dbc) - 1; + if (*(int *)(uVar5 + 0x1dbc) == 0 || uVar7 == 0) { + uVar11 = 0; + } + else { + uVar11 = 0; + if (uVar7 != 0) { + uVar11 = (uint)((iVar6 - iVar10) * 0x10000) / uVar7; + } + } + if (-1 < (int)uVar7) { + uVar13 = uVar7 * uVar11; + uVar14 = uVar7 * uVar4; + do { + uVar1 = iVar10 + (uVar13 >> 0x10); + if (0x3fe < uVar1) { + uVar1 = 0x3ff; + } + memset((void *)(lVar9 + (ulong)uVar14),(uint)*(byte *)(uVar5 + uVar1 + 0x2638),(ulong)uVar4) + ; + uVar7 = uVar7 - 1; + uVar13 = uVar13 - uVar11; + uVar14 = uVar14 - uVar4; + } while (-1 < (int)uVar7); + } + } + return; +} + + +================================================================== + +### FUNC 0016f1a0 (184 bytes) name=SearchInnerTemp + +/* CFunctions::SearchInnerTemp(int) */ + +uint __thiscall CFunctions::SearchInnerTemp(CFunctions *this,int param_1) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + + uVar1 = *(uint *)(this + 0x1da8); + uVar2 = *(uint *)(this + 0x76d0); + uVar5 = 0; + uVar6 = 0xffff; + uVar4 = 0x7fff; + *(undefined4 *)(this + 0x54) = 1; + do { + uVar3 = ReviseTemperature(this,(ushort)uVar4,(uVar1 >> 1) + (uVar2 >> 1),0); + if ((*(int *)(this + 0x54) != 0) || (*(int *)(this + 0x58) != 0)) { + uVar3 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar3); + } + if ((int)uVar3 <= param_1) { + uVar5 = uVar4; + uVar4 = uVar6; + } + uVar6 = uVar4; + uVar4 = uVar5 + uVar6 >> 1; + } while (uVar5 + 1 < uVar6); + return uVar4; +} + + +================================================================== + +### FUNC 0016f258 (268 bytes) name=SearchInnerGray + +/* CFunctions::SearchInnerGray(int) */ + +ulong __thiscall CFunctions::SearchInnerGray(CFunctions *this,int param_1) + +{ + uint uVar1; + int iVar2; + uint uVar3; + uint uVar4; + ulong uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + + uVar1 = *(uint *)(this + 0x1da8); + uVar3 = *(uint *)(this + 0x76d0); + uVar7 = 0; + uVar8 = 0xffff; + uVar6 = 0x7fff; + *(undefined4 *)(this + 0x54) = 1; + do { + uVar4 = ReviseTemperature(this,(ushort)uVar6,(uVar1 >> 1) + (uVar3 >> 1),0); + if ((*(int *)(this + 0x54) != 0) || (*(int *)(this + 0x58) != 0)) { + uVar4 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar4); + } + if ((int)uVar4 <= param_1) { + uVar7 = uVar6; + uVar6 = uVar8; + } + uVar8 = uVar6; + uVar6 = uVar7 + uVar8 >> 1; + } while (uVar7 + 1 < uVar8); + uVar7 = uVar7 + uVar8 >> 1; + if ((*(int *)(this + 0x1e14) < (int)uVar7) || (*(int *)(this + 0x1df8) < (int)uVar7)) { + uVar5 = 0x100; + } + else { + iVar2 = *(int *)(this + 0x1e18); + if ((int)uVar7 < iVar2) { + uVar5 = 0; + } + else { + uVar1 = *(int *)(this + 0x1e14) - iVar2; + uVar3 = 0; + if (uVar1 != 0) { + uVar3 = 0xffc00000 / uVar1; + } + uVar5 = (ulong)(byte)this[(ulong)(uVar3 * (uVar7 - iVar2) >> 0x16) + 0x2638]; + } + } + return uVar5; +} + + +================================================================== + +### FUNC 0016f364 (72 bytes) name=GetOriginalBMPDataPointer + +/* CFunctions::GetOriginalBMPDataPointer() */ + +undefined8 __thiscall CFunctions::GetOriginalBMPDataPointer(CFunctions *this) + +{ + undefined8 uVar1; + + if ((*(int *)(this + 0xe0) == 0) || (*(int *)(this + 0xec) == 0)) { + uVar1 = 0; + } + else { + if (*(int *)(this + 0x1e24) == 0) { + MapTemperature((int)this); + } + uVar1 = *(undefined8 *)(this + 0x170); + } + return uVar1; +} + + +================================================================== + +### FUNC 0016f3ac (276 bytes) name=CalResponse + +/* CFunctions::CalResponse(unsigned short const*, unsigned short const*) */ + +void __thiscall CFunctions::CalResponse(CFunctions *this,ushort *param_1,ushort *param_2) + +{ + ushort *puVar1; + ushort uVar2; + undefined2 *puVar3; + int iVar4; + ulong uVar5; + + memset(this + 0x2238,0,0x400); + if (*(uint *)(this + 0x76d0) >> 2 != 0) { + puVar3 = *(undefined2 **)(this + 0x118); + iVar4 = -(*(uint *)(this + 0x76d0) >> 2); + do { + uVar2 = *param_1; + iVar4 = iVar4 + 1; + uVar5 = (ulong)(uVar2 >> 6) & 0x3fc; + *(int *)(this + uVar5 + 0x2238) = *(int *)(this + uVar5 + 0x2238) + 1; + *puVar3 = (short)((uint)uVar2 - (uint)*param_2 >> 1); + uVar2 = param_1[1]; + uVar5 = (ulong)(uVar2 >> 6) & 0x3fc; + *(int *)(this + uVar5 + 0x2238) = *(int *)(this + uVar5 + 0x2238) + 1; + puVar3[1] = (short)((uint)uVar2 - (uint)param_2[1] >> 1); + uVar2 = param_1[2]; + uVar5 = (ulong)(uVar2 >> 6) & 0x3fc; + *(int *)(this + uVar5 + 0x2238) = *(int *)(this + uVar5 + 0x2238) + 1; + puVar3[2] = (short)((uint)uVar2 - (uint)param_2[2] >> 1); + uVar2 = param_1[3]; + param_1 = param_1 + 4; + uVar5 = (ulong)(uVar2 >> 6) & 0x3fc; + *(int *)(this + uVar5 + 0x2238) = *(int *)(this + uVar5 + 0x2238) + 1; + puVar1 = param_2 + 3; + param_2 = param_2 + 4; + puVar3[3] = (short)((uint)uVar2 - (uint)*puVar1 >> 1); + puVar3 = puVar3 + 4; + } while (iVar4 != 0); + } + return; +} + + +================================================================== + +### FUNC 0016f4c0 (504 bytes) name=CalResponse + +/* CFunctions::CalResponse(unsigned int const*, unsigned int const*) */ + +void __thiscall CFunctions::CalResponse(CFunctions *this,uint *param_1,uint *param_2) + +{ + uint *puVar1; + uint *puVar2; + uint *puVar3; + uint uVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + uint *puVar12; + uint *puVar20; + uint uVar35; + uint uVar36; + uint uVar37; + ulong uVar38; + uint *puVar39; + long lVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + uint uVar46; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + uint *puVar13; + uint *puVar14; + uint *puVar15; + uint *puVar16; + uint *puVar17; + uint *puVar18; + uint *puVar19; + uint *puVar21; + uint *puVar22; + uint *puVar23; + uint *puVar24; + uint *puVar25; + uint *puVar26; + uint *puVar27; + uint *puVar28; + uint *puVar29; + uint *puVar30; + uint *puVar31; + uint *puVar32; + uint *puVar33; + uint *puVar34; + + uVar35 = 4; + switch(*(int *)(this + 0x1dc0)) { + case 4: + break; + case 5: + case 6: + case 7: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + goto switchD_0016f4e4_caseD_5; + case 8: + uVar35 = 3; + break; + case 0x10: + uVar35 = 2; + break; + case 0x20: + uVar35 = 1; + break; + default: + if (*(int *)(this + 0x1dc0) != 0x40) { + return; + } + uVar35 = 0; + } + uVar36 = 4; + switch(*(int *)(this + 0x1dc4)) { + case 4: + break; + case 5: + case 6: + case 7: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + goto switchD_0016f4e4_caseD_5; + case 8: + uVar36 = 3; + break; + case 0x10: + uVar36 = 2; + break; + case 0x20: + uVar36 = 1; + break; + default: + if (*(int *)(this + 0x1dc4) != 0x40) { + return; + } + uVar36 = 0; + } + uVar37 = *(uint *)(this + 0x76d0) >> 2; + if (uVar37 != 0) { + puVar39 = *(uint **)(this + 0x120); + uVar38 = (ulong)(uVar37 - 1); + if (3 < uVar38 + 1) { + uVar4 = *(uint *)(this + 0x76d0) >> 2 & 3; + lVar40 = (uVar38 + 1) - (ulong)uVar4; + if (lVar40 != 0) { + if ((param_1 + uVar38 * 4 + 4 <= puVar39 || puVar39 + uVar38 * 4 + 4 <= param_1) && + (param_2 + uVar38 * 4 + 4 <= puVar39 || puVar39 + uVar38 * 4 + 4 <= param_2)) { + uVar37 = uVar37 - (int)lVar40; + puVar1 = puVar39 + lVar40 * 4; + puVar2 = param_2 + lVar40 * 4; + puVar3 = param_1 + lVar40 * 4; + do { + auVar44._0_4_ = *param_1; + auVar42._0_4_ = param_1[1]; + puVar12 = param_1 + 2; + puVar13 = param_1 + 3; + auVar44._4_4_ = param_1[4]; + auVar42._4_4_ = param_1[5]; + puVar14 = param_1 + 6; + puVar15 = param_1 + 7; + auVar44._8_4_ = param_1[8]; + auVar42._8_4_ = param_1[9]; + puVar16 = param_1 + 10; + puVar17 = param_1 + 0xb; + auVar44._12_4_ = param_1[0xc]; + auVar42._12_4_ = param_1[0xd]; + puVar18 = param_1 + 0xe; + puVar19 = param_1 + 0xf; + param_1 = param_1 + 0x10; + uVar46 = *param_2; + puVar20 = param_2 + 1; + puVar21 = param_2 + 2; + puVar22 = param_2 + 3; + puVar23 = param_2 + 4; + puVar24 = param_2 + 5; + puVar25 = param_2 + 6; + puVar26 = param_2 + 7; + puVar27 = param_2 + 8; + puVar28 = param_2 + 9; + puVar29 = param_2 + 10; + puVar30 = param_2 + 0xb; + puVar31 = param_2 + 0xc; + puVar32 = param_2 + 0xd; + puVar33 = param_2 + 0xe; + puVar34 = param_2 + 0xf; + param_2 = param_2 + 0x10; + lVar40 = lVar40 + -4; + auVar41._4_4_ = uVar36; + auVar41._0_4_ = uVar36; + auVar41._8_4_ = uVar36; + auVar41._12_4_ = uVar36; + auVar44 = NEON_ushl(auVar44,auVar41,4); + auVar45._4_4_ = uVar35; + auVar45._0_4_ = uVar35; + auVar45._8_4_ = uVar35; + auVar45._12_4_ = uVar35; + auVar47._4_4_ = *puVar23; + auVar47._0_4_ = uVar46; + auVar47._8_4_ = *puVar27; + auVar47._12_4_ = *puVar31; + auVar45 = NEON_ushl(auVar47,auVar45,4); + auVar43._4_4_ = uVar36; + auVar43._0_4_ = uVar36; + auVar43._8_4_ = uVar36; + auVar43._12_4_ = uVar36; + auVar47 = NEON_ushl(auVar42,auVar43,4); + auVar48._4_4_ = uVar35; + auVar48._0_4_ = uVar35; + auVar48._8_4_ = uVar35; + auVar48._12_4_ = uVar35; + auVar9._4_4_ = *puVar24; + auVar9._0_4_ = *puVar20; + auVar9._8_4_ = *puVar28; + auVar9._12_4_ = *puVar32; + auVar48 = NEON_ushl(auVar9,auVar48,4); + auVar49._4_4_ = uVar36; + auVar49._0_4_ = uVar36; + auVar49._8_4_ = uVar36; + auVar49._12_4_ = uVar36; + auVar7._4_4_ = *puVar14; + auVar7._0_4_ = *puVar12; + auVar7._8_4_ = *puVar16; + auVar7._12_4_ = *puVar18; + auVar49 = NEON_ushl(auVar7,auVar49,4); + auVar50._4_4_ = uVar36; + auVar50._0_4_ = uVar36; + auVar50._8_4_ = uVar36; + auVar50._12_4_ = uVar36; + auVar8._4_4_ = *puVar15; + auVar8._0_4_ = *puVar13; + auVar8._8_4_ = *puVar17; + auVar8._12_4_ = *puVar19; + auVar41 = NEON_ushl(auVar8,auVar50,4); + auVar5._4_4_ = uVar35; + auVar5._0_4_ = uVar35; + auVar5._8_4_ = uVar35; + auVar5._12_4_ = uVar35; + auVar10._4_4_ = *puVar25; + auVar10._0_4_ = *puVar21; + auVar10._8_4_ = *puVar29; + auVar10._12_4_ = *puVar33; + auVar50 = NEON_ushl(auVar10,auVar5,4); + auVar6._4_4_ = uVar35; + auVar6._0_4_ = uVar35; + auVar6._8_4_ = uVar35; + auVar6._12_4_ = uVar35; + auVar11._4_4_ = *puVar26; + auVar11._0_4_ = *puVar22; + auVar11._8_4_ = *puVar30; + auVar11._12_4_ = *puVar34; + auVar43 = NEON_ushl(auVar11,auVar6,4); + *puVar39 = auVar44._0_4_ - auVar45._0_4_; + puVar39[1] = auVar47._0_4_ - auVar48._0_4_; + puVar39[2] = auVar49._0_4_ - auVar50._0_4_; + puVar39[3] = auVar41._0_4_ - auVar43._0_4_; + puVar39[4] = auVar44._4_4_ - auVar45._4_4_; + puVar39[5] = auVar47._4_4_ - auVar48._4_4_; + puVar39[6] = auVar49._4_4_ - auVar50._4_4_; + puVar39[7] = auVar41._4_4_ - auVar43._4_4_; + puVar39[8] = auVar44._8_4_ - auVar45._8_4_; + puVar39[9] = auVar47._8_4_ - auVar48._8_4_; + puVar39[10] = auVar49._8_4_ - auVar50._8_4_; + puVar39[0xb] = auVar41._8_4_ - auVar43._8_4_; + puVar39[0xc] = auVar44._12_4_ - auVar45._12_4_; + puVar39[0xd] = auVar47._12_4_ - auVar48._12_4_; + puVar39[0xe] = auVar49._12_4_ - auVar50._12_4_; + puVar39[0xf] = auVar41._12_4_ - auVar43._12_4_; + puVar39 = puVar39 + 0x10; + } while (lVar40 != 0); + puVar39 = puVar1; + param_2 = puVar2; + param_1 = puVar3; + if (uVar4 == 0) { + return; + } + } + } + } + do { + uVar37 = uVar37 - 1; + *puVar39 = (*param_1 << (ulong)uVar36) - (*param_2 << (ulong)uVar35); + puVar39[1] = (param_1[1] << (ulong)uVar36) - (param_2[1] << (ulong)uVar35); + puVar39[2] = (param_1[2] << (ulong)uVar36) - (param_2[2] << (ulong)uVar35); + puVar1 = param_1 + 3; + puVar2 = param_2 + 3; + param_1 = param_1 + 4; + param_2 = param_2 + 4; + puVar39[3] = (*puVar1 << (ulong)uVar36) - (*puVar2 << (ulong)uVar35); + puVar39 = puVar39 + 4; + } while (uVar37 != 0); + } +switchD_0016f4e4_caseD_5: + return; +} + + +================================================================== + +### FUNC 0016f6b8 (668 bytes) name=SaveBMP + +/* CFunctions::SaveBMP(CacheData, char const*) */ + +undefined4 __thiscall CFunctions::SaveBMP(CFunctions *this,int param_2,char *param_3) + +{ + pthread_mutex_t *__mutex; + CFunctions *__src; + long lVar1; + uint uVar2; + undefined1 uVar3; + undefined1 uVar4; + long lVar5; + int iVar6; + void *__dest; + undefined4 *puVar7; + char *pcVar8; + undefined4 uVar9; + long lVar10; + undefined4 uVar11; + ulong __n; + void *__src_00; + OFStream aOStack_4c8 [16]; + undefined2 local_4b8; + int local_4b6; + undefined2 local_4b2; + undefined2 local_4b0; + undefined4 local_4ae; + MStream aMStack_4a8 [24]; + ushort local_490; + ushort local_48e; + ushort local_48a; + ushort local_488; + ushort local_486; + ushort local_484; + undefined1 local_468 [1024]; + long local_68; + + lVar5 = tpidr_el0; + local_68 = *(long *)(lVar5 + 0x28); + MStream::MStream(aMStack_4a8,0x100); + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + if ((*(int *)(this + 0xe0) == 0) || (*(int *)(this + 0xec) == 0)) { + iVar6 = pthread_mutex_unlock(__mutex); + puVar7 = (undefined4 *)__errno(iVar6); + uVar9 = 0xe4ae0006; + } + else { + if (param_2 == 2) { + uVar2 = *(uint *)(this + 0x76d8); + __src = this + 0xdd8; + __src_00 = *(void **)(this + 0x180); + } + else if (param_2 == 1) { + uVar2 = *(uint *)(this + 0x76d4); + __src = this + 0x9b0; + __src_00 = *(void **)(this + 0xd8); + } + else { + if (param_2 != 0) { + iVar6 = pthread_mutex_unlock(__mutex); + puVar7 = (undefined4 *)__errno(iVar6); + uVar11 = 0; + *puVar7 = 0xe4ae0001; + goto LAB_0016f914; + } + uVar2 = *(uint *)(this + 0x76d0); + __src = this + 0x588; + if (*(int *)(this + 0x1e24) == 0) { + MapTemperature((int)this); + } + __src_00 = *(void **)(this + 0x170); + } + if (__src_00 != (void *)0x0) { + __n = (ulong)uVar2; + __dest = operator_new__(__n); + memcpy(__dest,__src_00,__n); + pthread_mutex_unlock(__mutex); + if (param_3 == (char *)0x0) { + GetLocalTime((_SYSTEMTIME *)&local_490); + MStream::Fmt((char *)aMStack_4a8,"%d-%d-%d %d-%d-%d.bmp",(ulong)local_490,(ulong)local_48e, + (ulong)local_48a,(ulong)local_488,(ulong)local_486,(ulong)local_484); + } + else { + MStream::operator<<(aMStack_4a8,param_3); + } + local_4b6 = uVar2 + 0x436; + local_4b8 = 0x4d42; + local_4b2 = 0; + local_4b0 = 0; + local_4ae = 0x436; + memcpy(&local_490,__src,0x428); + lVar10 = 0; + do { + uVar3 = local_468[lVar10 + 2]; + uVar4 = local_468[lVar10 + 6]; + lVar1 = lVar10 + 8; + local_468[lVar10 + 2] = local_468[lVar10]; + local_468[lVar10 + 6] = local_468[lVar10 + 4]; + local_468[lVar10] = uVar3; + local_468[lVar10 + 4] = uVar4; + lVar10 = lVar1; + } while (lVar1 != 0x400); + pcVar8 = (char *)MStream::Get(aMStack_4a8); + OFStream::OFStream(aOStack_4c8,pcVar8,false); + OFStream::Write(aOStack_4c8,&local_4b8,0xe,1); + OFStream::Write(aOStack_4c8,&local_490,0x428,1); + OFStream::Write(aOStack_4c8,__dest,__n,1); + OFStream::~OFStream(aOStack_4c8); + operator_delete__(__dest); + uVar11 = 1; + goto LAB_0016f914; + } + iVar6 = pthread_mutex_unlock(__mutex); + puVar7 = (undefined4 *)__errno(iVar6); + uVar9 = 0xe4ae0003; + } + uVar11 = 0; + *puVar7 = uVar9; +LAB_0016f914: + MStream::~MStream(aMStack_4a8); + if (*(long *)(lVar5 + 0x28) == local_68) { + return uVar11; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0016f9ac (3828 bytes) name=LoadCalibrationTable + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* CFunctions::LoadCalibrationTable(char const*) */ + +undefined4 __thiscall CFunctions::LoadCalibrationTable(CFunctions *this,char *param_1) + +{ + long lVar1; + CFunctions *pCVar2; + pthread_mutex_t *__mutex; + long lVar3; + CFunctions *__s; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + CFunctions *pCVar8; + CFunctions *pCVar9; + undefined8 uVar10; + float fVar11; + float fVar12; + int iVar13; + uint uVar14; + int iVar15; + ulong uVar16; + long lVar17; + void *pvVar18; + void *pvVar19; + ulong uVar20; + size_t sVar21; + ulong uVar22; + CFunctions *pCVar23; + CFunctions *pCVar24; + uint uVar25; + undefined4 uVar26; + long *plVar27; + CFunctions *pCVar28; + uint uVar29; + float fVar30; + int iVar31; + int iVar32; + int iVar33; + int iVar34; + int iVar35; + int iVar36; + int iVar37; + undefined8 uVar38; + int local_b8; + int local_b4; + IFStream aIStack_b0 [24]; + undefined4 local_98; + uint local_94; + int local_90; + int local_8c; + long local_88; + + lVar7 = tpidr_el0; + local_88 = *(long *)(lVar7 + 0x28); + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + if (*(void **)(this + 0x1458) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x1458)); + *(undefined8 *)(this + 0x1458) = 0; + } + __s = this + 0x1200; + if (*(void **)(this + 0x1460) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x1460)); + *(undefined8 *)(this + 0x1460) = 0; + } + if (*(void **)(this + 0x1468) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x1468)); + *(undefined8 *)(this + 0x1468) = 0; + } + memset(__s,0,0xa94); + if (((*(int *)(this + 0xe0) == 0) || (*param_1 == '\0')) || + (iVar13 = access(param_1,0), iVar13 != 0)) { + uVar14 = pthread_mutex_unlock(__mutex); + uVar16 = (ulong)uVar14; + uVar26 = 0; + goto LAB_0016fa68; + } + IFStream::IFStream(aIStack_b0,param_1); + strncpy((char *)(this + 0x120c),param_1,0x100); + this[0x130b] = (CFunctions)0x0; + local_b4 = 0; + FStream::Read((FStream *)aIStack_b0,&local_b4,4,1); + FStream::Read((FStream *)aIStack_b0,&local_8c,4,1); + FStream::Read((FStream *)aIStack_b0,&local_90,4,1); + pCVar24 = this + 0x1310; + FStream::Read((FStream *)aIStack_b0,pCVar24,4,1); + pCVar23 = this + 0x130c; + FStream::Read((FStream *)aIStack_b0,pCVar23,4,1); + FStream::Read((FStream *)aIStack_b0,&local_94,4,1); + FStream::Read((FStream *)aIStack_b0,&local_98,4,1); + FStream::Read((FStream *)aIStack_b0,this + 0x1314,4,1); + FStream::Read((FStream *)aIStack_b0,this + 0x1318,4,1); + if (((local_b4 == 0x5aa50003) && (*(uint *)pCVar24 - 2 < 0x12)) && + ((*(int *)pCVar23 != 0 && ((local_94 != 0 && ((local_94 - 1 & local_94) == 0)))))) { + if (*(int *)(this + 0x7c) == 1) { + if (local_8c == *(int *)(this + 0x1dac)) { + iVar13 = *(int *)(this + 0x1da8); +joined_r0x0016fc64: + if (local_90 == iVar13) { +LAB_0016fc68: + FStream::Read((FStream *)aIStack_b0,this + 0x131c,(ulong)*(uint *)pCVar24 << 2,1); + FStream::Read((FStream *)aIStack_b0,this + 0x136c,(ulong)*(uint *)(this + 0x1310) << 2,1); + FStream::Read((FStream *)aIStack_b0,this + 0x13bc,(ulong)*(uint *)(this + 0x1310) << 2,1); + FStream::Read((FStream *)aIStack_b0,this + 0x140c, + (ulong)(*(int *)(this + 0x1310) - 1) << 2,1); + uVar14 = *(uint *)(this + 0x1310); + uVar16 = 1; + pCVar28 = this + 0x76d0; + uVar25 = uVar14 - 1; +LAB_0016fcfc: + uVar6 = (int)uVar16 - 1; + if (uVar6 < uVar25) goto code_r0x0016fd08; + uVar6 = *(uint *)pCVar28; + uVar4 = *(uint *)(this + 0x1314); + iVar13 = *(int *)pCVar23; + uVar5 = *(uint *)(this + 0x1318); + if (uVar14 == 1) { + uVar29 = 0; + goto LAB_0016fe38; + } + uVar16 = (ulong)uVar25; + if (uVar25 < 2) { + uVar16 = 1; + } + if (uVar16 < 8) { + uVar20 = 0; +LAB_0016fe14: + uVar29 = 0; + goto LAB_0016fe24; + } + uVar20 = uVar16 & 0xfffffff8; + if (uVar20 == 0) goto LAB_0016fe14; + iVar15 = 0; + iVar31 = 0; + iVar32 = 0; + iVar33 = 0; + pCVar23 = this + 0x141c; + iVar34 = 0; + iVar35 = 0; + iVar36 = 0; + iVar37 = 0; + uVar22 = uVar20; + do { + pCVar2 = pCVar23 + -0x10; + pCVar8 = pCVar23 + -8; + pCVar9 = pCVar23 + 8; + uVar38 = *(undefined8 *)pCVar23; + uVar22 = uVar22 - 8; + pCVar23 = pCVar23 + 0x20; + iVar15 = iVar15 + (int)*(undefined8 *)pCVar2 * 0x28; + iVar31 = iVar31 + (int)((ulong)*(undefined8 *)pCVar2 >> 0x20) * 0x28; + iVar32 = iVar32 + (int)*(undefined8 *)pCVar8 * 0x28; + iVar33 = iVar33 + (int)((ulong)*(undefined8 *)pCVar8 >> 0x20) * 0x28; + iVar34 = iVar34 + (int)uVar38 * 0x28; + iVar35 = iVar35 + (int)((ulong)uVar38 >> 0x20) * 0x28; + iVar36 = iVar36 + (int)*(undefined8 *)pCVar9 * 0x28; + iVar37 = iVar37 + (int)((ulong)*(undefined8 *)pCVar9 >> 0x20) * 0x28; + } while (uVar22 != 0); + uVar29 = iVar34 + iVar15 + iVar35 + iVar31 + iVar36 + iVar32 + iVar37 + iVar33; + if (uVar16 != uVar20) { +LAB_0016fe24: + do { + lVar1 = uVar20 * 4; + uVar20 = uVar20 + 1; + uVar29 = uVar29 + *(int *)(this + lVar1 + 0x140c) * 0x28; + } while (uVar20 < uVar25); + } +LAB_0016fe38: + lVar17 = IFStream::GetLength(aIStack_b0); + iVar13 = iVar13 * 3 + -1; + uVar16 = (ulong)uVar29; + lVar1 = (ulong)uVar5 + (ulong)uVar4 + (ulong)(iVar13 * uVar6) * 2; + lVar3 = uVar16 + lVar1 * (ulong)uVar14 + (ulong)(uVar14 * 4 - 1) * 4 + 0x24; + if (lVar17 < lVar3) { + FUN_003f1ad0(PTR_DAT_00501a38,"The calibration table length is not correct.\n",0x2d); + pthread_mutex_unlock(__mutex); + goto LAB_0016fc04; + } + lVar17 = IFStream::GetLength(aIStack_b0); + pvVar18 = operator_new__(lVar1 * (ulong)*(uint *)pCVar24 + 3 & 0xfffffffffffffffc); + *(void **)(this + 0x1458) = pvVar18; + pvVar18 = operator_new__(lVar1 + 3U & 0x7fffffffc); + *(void **)(this + 0x1460) = pvVar18; + if (uVar29 != 0) { + pvVar19 = operator_new__(uVar16); + *(void **)(this + 0x1468) = pvVar19; + } + *(void **)(this + 0x1610) = pvVar18; + *(ulong *)(this + 0x1628) = + (long)pvVar18 + + ((ulong)*(uint *)(this + 0x1314) & 0xfffffffe) + + (ulong)((*(int *)(this + 0x130c) + -1) * *(uint *)pCVar28) * 2; + uVar20 = FStream::GetCurrentPos((FStream *)aIStack_b0); + uVar14 = *(uint *)(this + 0x1310); + iVar15 = (int)uVar20; + *(int *)(this + 0x14c0) = iVar15; + *(undefined4 *)(this + 0x1510) = 0; + if (1 < uVar14) { + iVar15 = *(int *)(this + 0x1510); + uVar25 = 1; + pCVar23 = this + 0x1514; + do { + uVar20 = lVar1 + (uVar20 & 0xffffffff); + iVar31 = (int)lVar1 + iVar15; + uVar25 = uVar25 + 1; + iVar15 = iVar15 + uVar5 + uVar4 + uVar6 * iVar13 * 2; + *(int *)(pCVar23 + -0x50) = (int)uVar20; + *(int *)pCVar23 = iVar31; + pCVar23 = pCVar23 + 4; + } while (uVar25 < uVar14); + iVar15 = *(int *)(this + 0x14c0); + } + iVar15 = (int)(lVar1 * (ulong)uVar14) + iVar15; + *(int *)(this + 0x1560) = iVar15; + *(undefined4 *)(this + 0x15ac) = 0; + if (1 < uVar14 - 1) { + iVar13 = *(int *)(this + 0x15ac); + pCVar23 = this + 0x140c; + uVar25 = 1; + do { + uVar25 = uVar25 + 1; + iVar15 = *(int *)pCVar23 * 0x28 + iVar15; + iVar13 = *(int *)pCVar23 * 0x28 + iVar13; + *(int *)(pCVar23 + 0x158) = iVar15; + *(int *)(pCVar23 + 0x1a4) = iVar13; + pCVar23 = pCVar23 + 4; + } while (uVar25 < uVar14 - 1); + } + FStream::Read((FStream *)aIStack_b0,*(void **)(this + 0x1458),lVar1 * (ulong)uVar14,1); + if (uVar29 != 0) { + FStream::Read((FStream *)aIStack_b0,*(void **)(this + 0x1468),uVar16,1); + } + uVar14 = *(uint *)pCVar24; + if (uVar14 == 0) { + if (lVar17 <= lVar3) goto LAB_0017002c; +LAB_001700a0: + iVar13 = IFStream::GetLength(aIStack_b0); + iVar15 = FStream::GetCurrentPos((FStream *)aIStack_b0); + iVar13 = iVar13 - iVar15; + *(undefined4 *)(this + 0x163c) = 0; + fVar12 = DAT_00439508; + fVar11 = DAT_00439504; + if (0x43 < iVar13) { + while( true ) { + local_b8 = 0; + FStream::Read((FStream *)aIStack_b0,&local_b8,4,1); + if (local_b8 != 0x6bb60001) break; + uVar16 = (ulong)*(uint *)(this + 0x163c); + pCVar24 = this + uVar16 * 0x21c + 0x1640; + FStream::Read((FStream *)aIStack_b0,pCVar24,0x20,1); + *(undefined2 *)(this + uVar16 * 0x21c + 0x165e) = 0; + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1660,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1664,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1668,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x166c,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1670,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1678,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1674,4,1); + pCVar23 = this + uVar16 * 0x21c + 0x167c; + FStream::Read((FStream *)aIStack_b0,pCVar23,4,1); + if (0xf < *(uint *)(this + uVar16 * 0x21c + 0x1670)) break; + uVar14 = *(uint *)pCVar23 - 1; + if (0x18 < uVar14) break; + if (iVar13 < 0x21c) { + if (*(uint *)pCVar23 < 2) { + uVar14 = 1; + } + else { + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1680, + (ulong)uVar14 << 2,1); + uVar14 = *(uint *)pCVar23; + } + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1714, + (ulong)(uVar14 << 1) << 2,1); + pCVar28 = this + uVar16 * 0x21c + 0x1844; + iVar13 = iVar13 + *(uint *)pCVar23 * -0xc + -0x40; + *(undefined4 *)(this + uVar16 * 0x21c + 0x1844) = 0x3f800000; + fVar30 = 1.0; +LAB_00170464: + if (1.0 < fVar30) goto LAB_0017046c; + } + else { + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1680,100,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x16e4,8,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x16ec,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x16f0,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x16f4,8,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x16fc,8,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1704,0x10,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1714,200,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x17dc,0x68,1); + pCVar28 = this + uVar16 * 0x21c + 0x1844; + FStream::Read((FStream *)aIStack_b0,pCVar28,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1848,8,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1850,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1854,4,1); + FStream::Read((FStream *)aIStack_b0,this + uVar16 * 0x21c + 0x1858,4,1); + fVar30 = *(float *)pCVar28; + iVar13 = iVar13 + -0x220; + if (0.0 < fVar30) goto LAB_00170464; +LAB_0017046c: + *(undefined4 *)pCVar28 = 0x3f800000; + } + if ((*(float *)(this + uVar16 * 0x21c + 0x1854) < fVar11) || + (fVar12 < *(float *)(this + uVar16 * 0x21c + 0x1854))) { + *(undefined4 *)(this + uVar16 * 0x21c + 0x1854) = 0; + } + *(int *)(this + 0x163c) = *(int *)(this + 0x163c) + 1; + *(undefined4 *)(this + 0x1638) = 1; + FUN_003f1ad0(PTR_DAT_00501a38,"Found Lens: ",0xc); + sVar21 = strlen((char *)pCVar24); + FUN_003f1ad0(PTR_DAT_00501a38,pCVar24,sVar21); + plVar27 = *(long **)(PTR_DAT_00501a38 + + *(long *)(*(long *)PTR_DAT_00501a38 + -0x18) + 0xf0); + if (plVar27 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar27[7] == '\0') { + FUN_003d14e0(plVar27); + uVar14 = (**(code **)(*plVar27 + 0x30))(plVar27,10); + } + else { + uVar14 = (uint)*(byte *)((long)plVar27 + 0x43); + } + FUN_003f1564(PTR_DAT_00501a38,uVar14); + FUN_003f0db8(); + if ((iVar13 < 0x44) || (2 < *(uint *)(this + 0x163c))) break; + } + } + } + else { + if (uVar14 < 8) { + uVar16 = 0; +LAB_00170084: + do { + *(undefined4 *)(this + uVar16 * 4 + 0x1470) = 1; + uVar16 = uVar16 + 1; + } while (uVar16 < uVar14); + } + else { + uVar16 = (ulong)uVar14 - (ulong)(uVar14 & 7); + if (uVar16 == 0) goto LAB_00170084; + pCVar24 = this + 0x1480; + uVar20 = uVar16; + do { + *(undefined8 *)(pCVar24 + -8) = 0x100000001; + *(undefined8 *)(pCVar24 + -0x10) = 0x100000001; + *(undefined8 *)(pCVar24 + 8) = 0x100000001; + *(undefined8 *)pCVar24 = 0x100000001; + uVar20 = uVar20 - 8; + pCVar24 = pCVar24 + 0x20; + } while (uVar20 != 0); + if ((uVar14 & 7) != 0) goto LAB_00170084; + } + if (lVar3 < lVar17) goto LAB_001700a0; +LAB_0017002c: + if (uVar14 == 2) { + iVar15 = *(int *)(this + 0x1320); + iVar13 = *(int *)(this + 0x131c); + if (iVar15 - iVar13 == 50000) goto LAB_00170580; + } + else if (uVar14 == 1) { + iVar15 = *(int *)(this + 0x1320); + iVar13 = *(int *)(this + 0x131c); +LAB_00170580: + *(undefined4 *)(this + 0x1204) = 1; + memset(this + 0x1638,0,0x65c); + uVar38 = CONCAT53(s_Default_Lens_004399e8._8_5_,s_Default_Lens_004399e8._5_3_); + iVar13 = iVar13 + iVar15; + *(undefined8 *)(this + 0x1638) = 0x100000001; + *(undefined8 *)(this + 0x1645) = uVar38; + uVar10 = _UNK_004394a8; + uVar38 = _DAT_004394a0; + if (iVar13 < 0) { + iVar13 = iVar13 + 1; + } + *(ulong *)(this + 0x1640) = + CONCAT35(s_Default_Lens_004399e8._5_3_,s_Default_Lens_004399e8._0_5_); + *(undefined8 *)(this + 0x1668) = uVar10; + *(undefined8 *)(this + 0x1660) = uVar38; + *(int *)(this + 0x1674) = iVar13 >> 1; + *(int *)(this + 0x1678) = (iVar13 >> 1) + -500; + *(undefined4 *)(this + 0x167c) = 1; + *(undefined4 *)(this + 0x1844) = 0x3f800000; + *(undefined4 *)(this + 0x1714) = *(undefined4 *)(this + 0x76dc); + *(undefined8 *)(this + 0x1848) = 0x186a000000000; + *(undefined4 *)(this + 0x1718) = *(undefined4 *)(this + 0x76e0); + } + } + *(uint *)(this + 0x76dc) = local_94; + *(undefined4 *)(this + 0x76e0) = local_98; + if (0x1ff < (int)local_94) { + if ((int)local_94 < 0x2000) { + if ((int)local_94 < 0x800) { + if (local_94 == 0x200) { + uVar26 = 9; + } + else { + if (local_94 != 0x400) goto switchD_00170654_caseD_3; + uVar26 = 10; + } + } + else if (local_94 == 0x800) { + uVar26 = 0xb; + } + else { + if (local_94 != 0x1000) goto switchD_00170654_caseD_3; + uVar26 = 0xc; + } + } + else if ((int)local_94 < 0x8000) { + if (local_94 == 0x2000) { + uVar26 = 0xd; + } + else { + if (local_94 != 0x4000) goto switchD_00170654_caseD_3; + uVar26 = 0xe; + } + } + else if (local_94 == 0x8000) { + uVar26 = 0xf; + } + else if (local_94 == 0x10000) { + uVar26 = 0x10; + } + else { + if (local_94 != 0x20000) goto switchD_00170654_caseD_3; + uVar26 = 0x11; + } + goto switchD_00170654_caseD_1; + } + uVar26 = 0; + switch(local_94) { + case 1: + break; + case 2: + uVar26 = 1; + break; + case 3: + case 5: + case 6: + case 7: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + case 0x2f: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: +switchD_00170654_caseD_3: + if (0xffffff < (int)local_94) { + if ((int)local_94 < 0x8000000) { + if (local_94 == 0x1000000) { + uVar26 = 0x18; + } + else if (local_94 == 0x2000000) { + uVar26 = 0x19; + } + else { + if (local_94 != 0x4000000) goto LAB_00170784; + uVar26 = 0x1a; + } + } + else if ((int)local_94 < 0x20000000) { + if (local_94 == 0x8000000) { + uVar26 = 0x1b; + } + else { + if (local_94 != 0x10000000) goto LAB_00170784; + uVar26 = 0x1c; + } + } + else if (local_94 == 0x20000000) { + uVar26 = 0x1d; + } + else { + if (local_94 != 0x40000000) goto LAB_00170784; + uVar26 = 0x1e; + } + break; + } + if ((int)local_94 < 0x100000) { + if (local_94 == 0x80000000) { + uVar26 = 0x1f; + } + else if (local_94 == 0x40000) { + uVar26 = 0x12; + } + else { + if (local_94 != 0x80000) goto LAB_00170784; + uVar26 = 0x13; + } + break; + } + if (0x3fffff < (int)local_94) { + if (local_94 == 0x400000) { + uVar26 = 0x16; + } + else { + if (local_94 != 0x800000) goto LAB_00170784; + uVar26 = 0x17; + } + break; + } + if (local_94 == 0x100000) { + uVar26 = 0x14; + break; + } + if (local_94 == 0x200000) { + uVar26 = 0x15; + break; + } + goto LAB_00170784; + case 4: + uVar26 = 2; + break; + case 8: + uVar26 = 3; + break; + case 0x10: + uVar26 = 4; + break; + case 0x20: + uVar26 = 5; + break; + case 0x40: + uVar26 = 6; + break; + default: + if (local_94 == 0x80) { + uVar26 = 7; + } + else { + if (local_94 != 0x100) goto switchD_00170654_caseD_3; + uVar26 = 8; + } + } +switchD_00170654_caseD_1: + *(undefined4 *)(this + 0x76e4) = uVar26; +LAB_00170784: + *(undefined4 *)__s = 1; + pthread_mutex_unlock(__mutex); + uVar26 = *(undefined4 *)__s; + goto LAB_0016fc08; + } + } + } + else { + if (*(int *)(this + 0x7c) != 0) goto LAB_0016fc68; + if (local_8c == *(int *)(this + 0x1da8)) { + iVar13 = *(int *)(this + 0x1dac); + goto joined_r0x0016fc64; + } + } + FUN_003f1ad0(PTR_DAT_00501a38,"The calibration table size mismatch FPA.\n",0x29); + pthread_mutex_unlock(__mutex); + } + else { + FUN_003f1ad0(PTR_DAT_00501a38,"The calibration table data is not correct1.\n",0x2c); + pthread_mutex_unlock(__mutex); + } +LAB_0016fc04: + uVar26 = 0; +LAB_0016fc08: + uVar16 = OFStream::~OFStream((OFStream *)aIStack_b0); +LAB_0016fa68: + if (*(long *)(lVar7 + 0x28) == local_88) { + return uVar26; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar16); +code_r0x0016fd08: + if ((*(uint *)pCVar28 <= *(uint *)(this + (ulong)uVar6 * 4 + 0x140c)) || + (lVar1 = uVar16 * 4, uVar16 = (ulong)((int)uVar16 + 1), + *(int *)(this + lVar1 + 0x131c) <= *(int *)(this + (ulong)uVar6 * 4 + 0x131c))) + goto LAB_0016fd34; + goto LAB_0016fcfc; +LAB_0016fd34: + FUN_003f1ad0(PTR_DAT_00501a38,"The calibration table data is not correct2.\n",0x2c); + pthread_mutex_unlock(__mutex); + goto LAB_0016fc04; +} + + +================================================================== + +### FUNC 001708c8 (920 bytes) name=SaveRaw + +/* CFunctions::SaveRaw(CacheData, char const*) */ + +undefined4 __thiscall CFunctions::SaveRaw(CFunctions *this,undefined4 param_2,char *param_3) + +{ + pthread_mutex_t *__mutex; + long lVar1; + int iVar2; + undefined4 *puVar3; + void *__dest; + char *pcVar4; + CFunctions *__src; + undefined4 uVar5; + uint uVar6; + long lVar7; + undefined4 uVar8; + ulong __n; + ushort local_90; + ushort local_8e; + ushort local_8a; + ushort local_88; + ushort local_86; + ushort local_84; + undefined8 local_80; + undefined4 local_78; + undefined4 local_74; + MStream aMStack_70 [24]; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + MStream::MStream(aMStack_70,0x100); + __mutex = (pthread_mutex_t *)(this + 0xf0); + local_80 = 0; + pthread_mutex_lock(__mutex); + if ((*(int *)(this + 0xe0) == 0) || (*(int *)(this + 0xec) == 0)) { + iVar2 = pthread_mutex_unlock(__mutex); + puVar3 = (undefined4 *)__errno(iVar2); + uVar5 = 0xe4ae0006; + goto LAB_001709a0; + } + switch(param_2) { + case 3: + local_74 = *(undefined4 *)(this + 0x1da8); + local_78 = *(undefined4 *)(this + 0x1dac); + local_80 = CONCAT44(*(undefined4 *)(this + 0x3c),*(undefined4 *)(this + 0x40)); + if (*(int *)(this + 0x1cc4) != 0) { + __src = *(CFunctions **)(this + 0x1ca8); + uVar6 = *(int *)(this + 0x76d0) << 1; + break; + } + goto LAB_00170a68; + case 4: + local_74 = *(undefined4 *)(this + 0x1da8); + local_78 = *(undefined4 *)(this + 0x1dac); + local_80 = CONCAT44(*(undefined4 *)(this + 0x3c),*(undefined4 *)(this + 0x40)); + __src = *(CFunctions **)(this + 0x148); + uVar6 = *(int *)(this + 0x76d0) << 1; + if (__src == (CFunctions *)0x0) goto LAB_00170a68; + goto LAB_00170ae0; + case 5: + local_74 = *(undefined4 *)(this + 0x1da8); + iVar2 = *(int *)(this + 0x76d0); + local_78 = *(undefined4 *)(this + 0x1dac); + local_80 = CONCAT44(*(undefined4 *)(this + 0x44),*(undefined4 *)(this + 0x48)); + __src = *(CFunctions **)(this + 0x118); + goto joined_r0x00170aac; + case 6: + local_74 = *(undefined4 *)(this + 0x1da8); + local_78 = *(undefined4 *)(this + 0x1dac); + local_80 = CONCAT44(*(undefined4 *)(this + 0x44),*(undefined4 *)(this + 0x48)); + __src = *(CFunctions **)(this + 0x120); + uVar6 = *(int *)(this + 0x76d0) << 2; + break; + case 7: + local_74 = *(undefined4 *)(this + 0x1da8); + iVar2 = *(int *)(this + 0x76d0); + local_78 = *(undefined4 *)(this + 0x1dac); + local_80 = CONCAT44(*(undefined4 *)(this + 0x44),*(undefined4 *)(this + 0x48)); + __src = *(CFunctions **)(this + 0x140); +joined_r0x00170aac: + uVar6 = iVar2 << 1; + break; + case 8: + lVar7 = 0x2238; + goto LAB_00170ad0; + case 9: + lVar7 = 0x1e38; +LAB_00170ad0: + local_78 = 1; + local_74 = 0x100; + __src = this + lVar7; + uVar6 = 0x400; + break; + case 10: + local_74 = *(undefined4 *)(this + 0x1da8); + iVar2 = *(int *)(this + 0x76d0); + local_78 = *(undefined4 *)(this + 0x1dac); + local_80 = CONCAT44(*(undefined4 *)(this + 0x44),*(undefined4 *)(this + 0x48)); + __src = (CFunctions *)CSmoother::GetSTDFrame((CSmoother *)(this + 0x1d68)); + uVar6 = iVar2 << 1; + break; + default: + iVar2 = pthread_mutex_unlock(__mutex); + puVar3 = (undefined4 *)__errno(iVar2); + uVar8 = 0; + *puVar3 = 0xe4ae0001; + goto LAB_00170be0; + } + if (__src == (CFunctions *)0x0) { +LAB_00170a68: + iVar2 = pthread_mutex_unlock(__mutex); + puVar3 = (undefined4 *)__errno(iVar2); + uVar5 = 0xe4ae0003; +LAB_001709a0: + uVar8 = 0; + *puVar3 = uVar5; + } + else { +LAB_00170ae0: + __n = (ulong)uVar6; + __dest = operator_new__(__n); + memcpy(__dest,__src,__n); + pthread_mutex_unlock(__mutex); + if (param_3 == (char *)0x0) { + GetLocalTime((_SYSTEMTIME *)&local_90); + MStream::Fmt((char *)aMStack_70,"%d-%02d-%02d %02d-%02d-%02d.raw",(ulong)local_90, + (ulong)local_8e,(ulong)local_8a,(ulong)local_88,(ulong)local_86,(ulong)local_84); + } + else { + MStream::operator<<(aMStack_70,param_3); + } + pcVar4 = (char *)MStream::Get(aMStack_70); + OFStream::OFStream((OFStream *)&local_90,pcVar4,false); + OFStream::Write((OFStream *)&local_90,&local_74,4,1); + OFStream::Write((OFStream *)&local_90,&local_78,4,1); + OFStream::Write((OFStream *)&local_90,&local_80,4,1); + OFStream::Write((OFStream *)&local_90,(void *)((ulong)&local_80 | 4),4,1); + OFStream::Write((OFStream *)&local_90,__dest,__n,1); + OFStream::~OFStream((OFStream *)&local_90); + operator_delete__(__dest); + uVar8 = 1; + } +LAB_00170be0: + MStream::~MStream(aMStack_70); + if (*(long *)(lVar1 + 0x28) == local_58) { + return uVar8; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00170cb4 (668 bytes) name=GetRectTemperatureInfo + +/* CFunctions::GetRectTemperatureInfo(unsigned int, unsigned int, unsigned int, unsigned int, int*, + int) */ + +undefined8 __thiscall +CFunctions::GetRectTemperatureInfo + (CFunctions *this,uint param_1,uint param_2,uint param_3,uint param_4,int *param_5, + int param_6) + +{ + uint uVar1; + undefined4 uVar2; + int iVar3; + ushort uVar4; + uint uVar5; + int iVar6; + int iVar7; + undefined4 *puVar9; + undefined8 uVar10; + uint uVar11; + uint uVar12; + ulong uVar13; + uint uVar14; + uint uVar15; + long lVar16; + uint uVar17; + uint uVar18; + uint uVar19; + ushort uVar20; + ushort uVar21; + CFunctions *pCVar8; + + pCVar8 = this; + if (param_6 != 0) { + uVar5 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar8 = (CFunctions *)(ulong)uVar5; + } + if (((((param_3 < param_1) || (*(int *)(this + 0xec) == 0)) || (param_4 < param_2)) || + ((uVar5 = *(uint *)(this + 0x1da8), uVar5 <= param_3 || (param_5 == (int *)0x0)))) || + (*(uint *)(this + 0x1dac) <= param_4)) { + uVar2 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar2 = 0xe4ae0001; + } + puVar9 = (undefined4 *)__errno(pCVar8); + *puVar9 = uVar2; + if (param_6 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar10 = 0; + } + else { + if (((param_2 == 0 && param_1 == 0) && (uVar5 - 1 == param_3)) && + (*(uint *)(this + 0x1dac) - 1 == param_4)) { + uVar12 = *(uint *)(this + 0x1dfc); + uVar21 = (ushort)*(undefined4 *)(this + 0x1df8); + uVar17 = *(uint *)(this + 0x1e0c); + uVar19 = *(uint *)(this + 0x1e08); + lVar16 = (ulong)*(uint *)(this + 0x76d0) * (long)*(int *)(this + 0x1e00); + } + else { + lVar16 = 0; + uVar19 = 0; + uVar17 = 0; + uVar21 = 0; + uVar14 = uVar5 * param_2; + uVar12 = 0xffffffff; + uVar15 = param_2; + do { + uVar13 = (ulong)param_1; + uVar11 = uVar12; + uVar18 = uVar19; + uVar20 = uVar21; + do { + uVar4 = *(ushort *)(*(long *)(this + 0x140) + (ulong)uVar14 * 2 + uVar13 * 2); + uVar1 = uVar14 + (int)uVar13; + uVar13 = uVar13 + 1; + uVar19 = uVar1; + uVar21 = uVar4; + if (uVar4 <= uVar20) { + uVar19 = uVar18; + uVar21 = uVar20; + } + uVar12 = (uint)uVar4; + if (uVar11 <= uVar4) { + uVar12 = uVar11; + uVar1 = uVar17; + } + uVar17 = uVar1; + lVar16 = lVar16 + (ulong)uVar4; + uVar11 = uVar12; + uVar18 = uVar19; + uVar20 = uVar21; + } while ((uint)uVar13 <= param_3); + uVar15 = uVar15 + 1; + uVar14 = uVar14 + uVar5; + } while (uVar15 <= param_4); + } + iVar6 = ReviseTemperature(this,(ushort)uVar12,uVar17,1); + *param_5 = iVar6; + iVar6 = ReviseTemperature(this,uVar21,uVar19,1); + param_5[1] = iVar6; + uVar13 = (ulong)(((1 - param_2) + param_4) * ((1 - param_1) + param_3)); + uVar21 = 0; + if (uVar13 != 0) { + uVar21 = (ushort)(lVar16 / (long)uVar13); + } + iVar6 = ReviseTemperature(this,uVar21, + (uVar5 * (param_4 + param_2) >> 1) + (param_3 + param_1 >> 1),1); + param_5[2] = iVar6; + param_5[3] = uVar17; + param_5[4] = uVar19; + if (*(int *)(this + 0x58) != 0) { + iVar7 = (int)this; + iVar6 = CorrectTemperature(iVar7,*(float *)(this + 0xac),*param_5); + *param_5 = iVar6; + iVar6 = CorrectTemperature(iVar7,*(float *)(this + 0xac),param_5[1]); + param_5[1] = iVar6; + iVar6 = CorrectTemperature(iVar7,*(float *)(this + 0xac),param_5[2]); + param_5[2] = iVar6; + } + iVar7 = *param_5; + iVar3 = param_5[1]; + if (iVar3 < iVar7) { + param_5[1] = iVar7; + iVar3 = iVar7; + } + if (iVar3 < iVar6) { + param_5[2] = iVar3; + iVar6 = iVar3; + } + if (iVar6 < iVar7) { + param_5[2] = iVar7; + } + if (param_6 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar10 = 1; + } + return uVar10; +} + + +================================================================== + +### FUNC 00170f50 (1964 bytes) name=GetEllipseTemperatureInfo + +/* CFunctions::GetEllipseTemperatureInfo(unsigned int, unsigned int, unsigned int, unsigned int, + int*, int) */ + +undefined8 __thiscall +CFunctions::GetEllipseTemperatureInfo + (CFunctions *this,uint param_1,uint param_2,uint param_3,uint param_4,int *param_5, + int param_6) + +{ + undefined4 uVar1; + uint uVar2; + uint uVar3; + undefined4 *puVar4; + ushort uVar5; + ulong uVar6; + uint uVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + ushort *puVar13; + ushort *puVar14; + uint uVar15; + uint uVar16; + long lVar17; + uint uVar18; + int iVar19; + uint uVar20; + uint uVar21; + ushort uVar22; + uint uVar23; + int iVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + int local_d0; + uint local_98; + uint uStack_94; + uint local_78; + + if (param_6 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + } + uVar3 = param_3 - param_1; + if ((((param_3 < param_1 || uVar3 == 0) || (*(int *)(this + 0xec) == 0)) || + (uVar7 = param_4 - param_2, param_4 < param_2 || uVar7 == 0)) || + (((*(uint *)(this + 0x1da8) <= param_3 || (param_5 == (int *)0x0)) || + (*(uint *)(this + 0x1dac) <= param_4)))) { + uVar1 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar1 = 0xe4ae0001; + } + puVar4 = (undefined4 *)__errno(); + *puVar4 = uVar1; + if (param_6 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + return 0; + } + if (uVar3 < uVar7) { + fVar27 = (float)(int)(uVar7 * uVar7 - uVar3 * uVar3); + fVar26 = SQRT(fVar27); + fVar25 = fVar26; + if (NAN(fVar26)) { + fVar25 = sqrtf(fVar27); + } + iVar8 = (int)((float)(param_4 + param_2) - fVar25); + if (iVar8 < 0) { + iVar8 = iVar8 + 1; + } + if (NAN(fVar26)) { + fVar26 = sqrtf(fVar27); + } + iVar9 = (int)(fVar26 + (float)(param_4 + param_2)); + if (iVar9 < 0) { + iVar9 = iVar9 + 1; + } + if (param_4 < param_2) { + lVar17 = 0; + uStack_94 = 0; + local_98 = 0; + uVar20 = 0; + uVar22 = 0; + uVar5 = 0xffff; + goto LAB_001715f0; + } + uVar22 = 0; + uVar20 = 0; + lVar17 = 0; + uVar6 = 0xffffffff; + local_98 = 0; + uStack_94 = 0; + uVar16 = param_2; + do { + if (param_1 <= param_3) { + iVar19 = uVar16 - (iVar8 >> 1); + iVar24 = uVar16 - (iVar9 >> 1); + uVar12 = 0; + puVar13 = (ushort *) + (*(long *)(this + 0x140) + (ulong)(*(int *)(this + 0x1da8) * uVar16) * 2 + + (ulong)param_1 * 2); + uVar23 = param_1 << 1; + uVar21 = param_1 - param_3; + uVar15 = uVar3; + uVar18 = param_1; + do { + uVar2 = uVar21; + if ((int)uVar21 < 0) { + uVar2 = uVar15; + } + if ((int)uVar12 < (int)uVar2) { + fVar25 = (float)(uVar21 * uVar21 + iVar19 * iVar19 * 4); + fVar26 = SQRT(fVar25); + if (NAN(fVar26)) { + fVar26 = sqrtf(fVar25); + } + fVar27 = (float)(uVar21 * uVar21 + iVar24 * iVar24 * 4); + fVar25 = SQRT(fVar27); + if (NAN(fVar25)) { + fVar25 = sqrtf(fVar27); + } + iVar10 = 0xd; + if (param_3 + param_1 <= uVar23) { + iVar10 = 0xb; + } + puVar14 = puVar13 + 1; + if ((int)(fVar26 + fVar25) <= (int)(uVar7 * 2)) { + iVar10 = 0; + uVar12 = uVar2; + puVar14 = puVar13; + } + puVar13 = puVar14; + puVar14 = puVar13; + if (iVar10 != 0xd) { + if (iVar10 == 0) goto LAB_00171344; + break; + } + } + else { +LAB_00171344: + puVar14 = puVar13 + 1; + uVar5 = *puVar13; + uVar20 = uVar20 + 1; + lVar17 = lVar17 + (ulong)uVar5; + if (uVar22 < uVar5) { + uStack_94 = uVar18 + uVar16 * *(int *)(this + 0x1da8); + uVar22 = uVar5; + } + if ((uint)uVar5 < (uint)uVar6) { + local_98 = uVar18 + uVar16 * *(int *)(this + 0x1da8); + uVar6 = (ulong)uVar5; + } + } + uVar18 = uVar18 + 1; + uVar21 = uVar21 + 2; + uVar15 = uVar15 - 2; + uVar23 = uVar23 + 2; + puVar13 = puVar14; + } while (uVar18 <= param_3); + } + uVar16 = uVar16 + 1; + } while (uVar16 <= param_4); + } + else { + fVar27 = (float)(int)(uVar3 * uVar3 - uVar7 * uVar7); + fVar26 = SQRT(fVar27); + fVar28 = (float)(param_3 + param_1); + fVar25 = fVar26; + if (NAN(fVar26)) { + fVar25 = sqrtf(fVar27); + } + iVar8 = (int)(fVar28 - fVar25); + if (iVar8 < 0) { + iVar8 = iVar8 + 1; + } + if (NAN(fVar26)) { + fVar26 = sqrtf(fVar27); + } + iVar9 = (int)(fVar26 + fVar28); + if (iVar9 < 0) { + iVar9 = iVar9 + 1; + } + if (param_4 < param_2) { + lVar17 = 0; + uStack_94 = 0; + local_98 = 0; + uVar20 = 0; + uVar22 = 0; + uVar5 = 0xffff; + goto LAB_001715f0; + } + uVar22 = 0; + uVar20 = 0; + lVar17 = 0; + uVar6 = 0xffffffff; + local_98 = 0; + uStack_94 = 0; + uVar7 = param_2; + do { + if (param_1 <= param_3) { + iVar10 = uVar7 * 2 - (param_4 + param_2); + iVar10 = iVar10 * iVar10; + uVar23 = 0; + puVar13 = (ushort *) + (*(long *)(this + 0x140) + (ulong)(*(int *)(this + 0x1da8) * uVar7) * 2 + + (ulong)param_1 * 2); + uVar12 = uVar3; + uVar21 = param_1 << 1; + uVar18 = param_1 - param_3; + iVar24 = param_1 * 4 + (iVar9 >> 1) * -4; + iVar19 = param_1 * 4 + (iVar8 >> 1) * -4; + uVar16 = param_1; + do { + uVar15 = uVar18; + if ((int)uVar18 < 0) { + uVar15 = uVar12; + } + if ((int)uVar23 < (int)uVar15) { + fVar25 = (float)(iVar10 + iVar19 * (uVar16 - (iVar8 >> 1))); + fVar26 = SQRT(fVar25); + if (NAN(fVar26)) { + fVar26 = sqrtf(fVar25); + } + fVar27 = (float)(iVar10 + iVar24 * (uVar16 - (iVar9 >> 1))); + fVar25 = SQRT(fVar27); + if (NAN(fVar25)) { + fVar25 = sqrtf(fVar27); + } + iVar11 = 7; + if (param_3 + param_1 <= uVar21) { + iVar11 = 5; + } + puVar14 = puVar13 + 1; + if ((int)(fVar26 + fVar25) <= (int)(uVar3 * 2)) { + iVar11 = 0; + uVar23 = uVar15; + puVar14 = puVar13; + } + puVar13 = puVar14; + puVar14 = puVar13; + if (iVar11 != 7) { + if (iVar11 == 0) goto LAB_00171564; + break; + } + } + else { +LAB_00171564: + puVar14 = puVar13 + 1; + uVar5 = *puVar13; + uVar20 = uVar20 + 1; + lVar17 = lVar17 + (ulong)uVar5; + if (uVar22 < uVar5) { + uStack_94 = uVar16 + uVar7 * *(int *)(this + 0x1da8); + uVar22 = uVar5; + } + if ((uint)uVar5 < (uint)uVar6) { + local_98 = uVar16 + uVar7 * *(int *)(this + 0x1da8); + uVar6 = (ulong)uVar5; + } + } + uVar16 = uVar16 + 1; + iVar19 = iVar19 + 4; + iVar24 = iVar24 + 4; + uVar18 = uVar18 + 2; + uVar12 = uVar12 - 2; + uVar21 = uVar21 + 2; + puVar13 = puVar14; + } while (uVar16 <= param_3); + } + uVar7 = uVar7 + 1; + } while (uVar7 <= param_4); + } + uVar5 = (ushort)uVar6; +LAB_001715f0: + local_78 = param_3 + param_1; + local_d0 = param_4 + param_2; + iVar8 = *(int *)(this + 0x1da8); + iVar9 = ReviseTemperature(this,uVar5,local_98,1); + *param_5 = iVar9; + iVar9 = ReviseTemperature(this,uVar22,uStack_94,1); + param_5[1] = iVar9; + uVar22 = 0; + if ((ulong)uVar20 != 0) { + uVar22 = (ushort)(lVar17 / (long)(ulong)uVar20); + } + iVar8 = ReviseTemperature(this,uVar22,((uint)(iVar8 * local_d0) >> 1) + (local_78 >> 1),1); + param_5[2] = iVar8; + param_5[3] = local_98; + param_5[4] = uStack_94; + if (*(int *)(this + 0x58) != 0) { + iVar9 = (int)this; + iVar8 = CorrectTemperature(iVar9,*(float *)(this + 0xac),*param_5); + *param_5 = iVar8; + iVar8 = CorrectTemperature(iVar9,*(float *)(this + 0xac),param_5[1]); + param_5[1] = iVar8; + iVar8 = CorrectTemperature(iVar9,*(float *)(this + 0xac),param_5[2]); + param_5[2] = iVar8; + } + iVar9 = *param_5; + iVar19 = param_5[1]; + if (param_5[1] < iVar9) { + param_5[1] = iVar9; + iVar19 = iVar9; + } + if (iVar19 < iVar8) { + param_5[2] = iVar19; + iVar8 = iVar19; + } + if (iVar8 < iVar9) { + param_5[2] = iVar9; + } + if (param_6 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + return 1; +} + + +================================================================== + +### FUNC 001716fc (716 bytes) name=GetLineTemperatureInfo + +/* CFunctions::GetLineTemperatureInfo(unsigned short*, unsigned int, int*, unsigned int, unsigned + int, int, int) */ + +uint __thiscall +CFunctions::GetLineTemperatureInfo + (CFunctions *this,ushort *param_1,uint param_2,int *param_3,uint param_4,uint param_5, + int param_6,int param_7) + +{ + ulong uVar1; + undefined4 uVar2; + ushort uVar3; + uint uVar4; + uint uVar5; + int iVar6; + int iVar7; + undefined4 *puVar9; + uint uVar10; + uint uVar11; + long lVar12; + uint uVar13; + ulong uVar14; + ushort *puVar15; + uint uVar16; + uint uVar17; + uint uVar18; + CFunctions *local_68; + CFunctions *pCVar8; + + pCVar8 = this; + if (param_7 != 0) { + uVar5 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar8 = (CFunctions *)(ulong)uVar5; + } + if (*(int *)(this + 0xec) != 0) { + if (param_6 == 0) { + uVar5 = *(uint *)(this + 0x1da8); + if ((((param_4 < uVar5) && (param_5 < *(uint *)(this + 0x1dac))) && (1 < param_2)) && + ((param_1 != (ushort *)0x0 && (param_3 != (int *)0x0)))) { + uVar16 = *(int *)(this + 0x1dac) - param_5; + if (param_2 >> 1 <= *(int *)(this + 0x1dac) - param_5) { + uVar16 = param_2 >> 1; + } + if (param_5 < uVar16 + param_5) { + lVar12 = *(long *)(this + 0x140); + uVar14 = (ulong)param_5; + uVar11 = param_4 + uVar5 * param_5; + puVar15 = param_1; + do { + uVar1 = (ulong)uVar11; + uVar14 = uVar14 + 1; + uVar11 = uVar11 + uVar5; + *puVar15 = *(ushort *)(lVar12 + uVar1 * 2); + puVar15 = puVar15 + 1; + } while (uVar14 < uVar16 + param_5); + } + goto LAB_001717b8; + } + } + else if (((param_4 < *(uint *)(this + 0x1dac)) && (1 < param_2)) && + ((param_1 != (ushort *)0x0 && + ((param_3 != (int *)0x0 && (param_5 < *(uint *)(this + 0x1da8))))))) { + uVar16 = *(int *)(this + 0x1da8) - param_5; + if (param_2 >> 1 <= *(int *)(this + 0x1da8) - param_5) { + uVar16 = param_2 >> 1; + } + memcpy(param_1,(void *)(*(long *)(this + 0x140) + + (ulong)(*(uint *)(this + 0x1da8) * param_4) * 2 + (ulong)param_5 * 2), + (ulong)(uVar16 << 1)); +LAB_001717b8: + local_68 = this + 0x1da8; + if (uVar16 == 0) { + uVar17 = 0; + uVar5 = 0; + uVar11 = 0; + uVar13 = 0xffffffff; + } + else { + uVar5 = 0; + uVar17 = 0; + uVar10 = 0; + uVar18 = 0xffffffff; + uVar4 = uVar16; + do { + uVar3 = *param_1; + uVar11 = uVar4; + uVar13 = (uint)uVar3; + if (uVar3 <= uVar17) { + uVar11 = uVar10; + uVar13 = uVar17; + } + uVar17 = uVar13; + uVar13 = (uint)uVar3; + uVar5 = uVar5 + uVar13; + uVar4 = uVar4 - 1; + if (uVar18 <= uVar13) { + uVar13 = uVar18; + } + param_1 = param_1 + 1; + uVar10 = uVar11; + uVar18 = uVar13; + } while (uVar4 != 0); + } + if (param_6 == 0) { + iVar7 = *(uint *)local_68 * (uVar16 - uVar11) + (*(uint *)local_68 >> 1); + uVar11 = *(uint *)(this + 0x76d0) >> 1; + } + else { + iVar7 = (uVar16 - uVar11) + (*(uint *)(this + 0x76d0) >> 1); + uVar11 = *(uint *)local_68 * param_4; + param_4 = *(uint *)local_68 >> 1; + } + uVar11 = uVar11 + param_4; + iVar6 = ReviseTemperature(this,(ushort)uVar13,uVar11,0); + *param_3 = iVar6; + iVar6 = ReviseTemperature(this,(ushort)uVar17,uVar11,0); + param_3[1] = iVar6; + uVar3 = 0; + if (uVar16 != 0) { + uVar3 = (ushort)(uVar5 / uVar16); + } + iVar6 = ReviseTemperature(this,uVar3,uVar11,0); + param_3[2] = iVar6; + param_3[3] = uVar13; + param_3[4] = uVar17; + param_3[5] = iVar7; + if (*(int *)(this + 0x58) != 0) { + iVar6 = (int)this; + iVar7 = CorrectTemperature(iVar6,*(float *)(this + 0xac),*param_3); + *param_3 = iVar7; + iVar7 = CorrectTemperature(iVar6,*(float *)(this + 0xac),param_3[1]); + param_3[1] = iVar7; + iVar7 = CorrectTemperature(iVar6,*(float *)(this + 0xac),param_3[2]); + param_3[2] = iVar7; + } + if (param_7 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + return uVar16; + } + } + uVar2 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar2 = 0xe4ae0001; + } + puVar9 = (undefined4 *)__errno(pCVar8); + *puVar9 = uVar2; + if (param_7 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + return 0; +} + + +================================================================== + +### FUNC 001719c8 (1116 bytes) name=GetLineTemperatureInfo2 + +/* CFunctions::GetLineTemperatureInfo2(unsigned short*, unsigned int, int*, unsigned int, unsigned + int, unsigned int, unsigned int, int) */ + +uint __thiscall +CFunctions::GetLineTemperatureInfo2 + (CFunctions *this,ushort *param_1,uint param_2,int *param_3,uint param_4,uint param_5, + uint param_6,uint param_7,int param_8) + +{ + ulong uVar1; + ushort *puVar2; + uint uVar3; + undefined4 uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + uint uVar10; + int iVar11; + ushort *puVar13; + undefined4 *puVar14; + uint uVar15; + uint uVar16; + long lVar17; + long lVar18; + uint uVar19; + ushort uVar20; + ushort uVar21; + ushort uVar22; + ushort uVar23; + ushort uVar24; + ushort uVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + uint uVar31; + int iVar32; + int iVar33; + int iVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined8 uVar39; + undefined8 uVar40; + uint uVar41; + uint uVar42; + CFunctions *pCVar12; + + pCVar12 = this; + if (param_8 != 0) { + uVar10 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar12 = (CFunctions *)(ulong)uVar10; + } + if ((((*(int *)(this + 0xec) == 0) || (uVar10 = *(uint *)(this + 0x1da8), uVar10 <= param_4)) || + (uVar10 <= param_6)) || + ((*(uint *)(this + 0x1dac) <= param_5 || (*(uint *)(this + 0x1dac) <= param_7)))) { +LAB_00171b28: + uVar4 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar4 = 0xe4ae0001; + } + puVar14 = (undefined4 *)__errno(pCVar12); + *puVar14 = uVar4; + if (param_8 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + return 0; + } + if (param_4 == param_6) { + if ((((param_2 < 2) || (param_1 == (ushort *)0x0)) || (param_3 == (int *)0x0)) || + (param_5 == param_7)) goto LAB_00171b28; + } + else if (((param_2 < 2) || (param_1 == (ushort *)0x0)) || (param_3 == (int *)0x0)) + goto LAB_00171b28; + iVar11 = param_4 - param_6; + uVar41 = param_6; + uVar31 = param_7; + uVar42 = param_5; + uVar3 = param_4; + if (param_4 < param_6 || iVar11 == 0) { + uVar41 = param_4; + uVar31 = param_5; + uVar42 = param_7; + uVar3 = param_6; + } + iVar26 = -iVar11; + if (-1 < iVar11) { + iVar26 = iVar11; + } + iVar28 = param_5 - param_7; + iVar27 = -iVar28; + if (-1 < iVar28) { + iVar27 = iVar28; + } + if (iVar26 < iVar27) { + iVar11 = iVar28; + } + iVar28 = -iVar11; + if (-1 < iVar11) { + iVar28 = iVar11; + } + uVar16 = param_2 >> 1; + uVar5 = uVar16; + if (iVar28 + 1 < (int)uVar16) { + uVar5 = iVar28 + 1; + } + if (iVar26 < iVar27) { + iVar11 = uVar42 - uVar31; + if (iVar11 == 0 || (int)uVar42 < (int)uVar31) { + if ((int)uVar42 < (int)((uVar31 - uVar5) + 1)) { + uVar42 = (uVar31 - uVar5) + 1; + } + if ((int)uVar42 <= (int)uVar31) { + lVar17 = *(long *)(this + 0x140); + uVar41 = ~param_4; + lVar18 = (long)(int)uVar31 + 1; + if (uVar41 < ~param_6) { + uVar41 = ~param_6; + } + iVar26 = 0; + iVar27 = (uVar31 * uVar10 + -1) - uVar41; + puVar13 = param_1; + do { + iVar29 = 0; + if (iVar11 != 0) { + iVar29 = iVar26 / iVar11; + } + lVar18 = lVar18 + -1; + iVar26 = iVar26 + (~uVar3 - uVar41); + *puVar13 = *(ushort *)(lVar17 + (ulong)(uint)(iVar27 + iVar29) * 2); + iVar27 = iVar27 - uVar10; + puVar13 = puVar13 + 1; + } while ((int)uVar42 < lVar18); + } + } + else { + uVar15 = (uVar31 + uVar5) - 1; + if ((int)uVar42 <= (int)uVar15) { + uVar15 = uVar42; + } + if ((int)uVar31 <= (int)uVar15) { + lVar17 = *(long *)(this + 0x140); + uVar42 = ~param_4; + lVar18 = (long)(int)uVar31 + -1; + if (uVar42 < ~param_6) { + uVar42 = ~param_6; + } + iVar26 = 0; + iVar27 = (uVar31 * uVar10 + -1) - uVar42; + puVar13 = param_1; + do { + iVar29 = 0; + if (iVar11 != 0) { + iVar29 = iVar26 / iVar11; + } + lVar18 = lVar18 + 1; + iVar26 = iVar26 + (uVar3 - uVar41); + *puVar13 = *(ushort *)(lVar17 + (ulong)(uint)(iVar27 + iVar29) * 2); + iVar27 = iVar27 + uVar10; + puVar13 = puVar13 + 1; + } while (lVar18 < (int)uVar15); + } + } + } + else { + uVar15 = (uVar41 + uVar5) - 1; + if ((int)uVar3 <= (int)uVar15) { + uVar15 = uVar3; + } + if ((int)uVar41 <= (int)uVar15) { + lVar17 = *(long *)(this + 0x140); + iVar11 = 0; + iVar26 = uVar3 - uVar41; + lVar18 = (long)(int)uVar41 + -1; + puVar13 = param_1; + do { + iVar27 = 0; + if (iVar26 != 0) { + iVar27 = iVar11 / iVar26; + } + lVar18 = lVar18 + 1; + iVar11 = iVar11 + (uVar42 - uVar31); + *puVar13 = *(ushort *)(lVar17 + (ulong)(uVar41 + uVar10 * (iVar27 + uVar31)) * 2); + uVar41 = uVar41 + 1; + puVar13 = puVar13 + 1; + } while (lVar18 < (int)uVar15); + } + } + if (uVar5 == 0) { + uVar42 = 0; + uVar41 = 0; + uVar31 = 0xffff; + goto LAB_00171d70; + } + uVar41 = -iVar28 - 2; + if ((int)uVar41 < (int)~uVar16) { + uVar41 = ~uVar16; + } + uVar1 = (ulong)(-uVar41 - 2) + 1; + if (uVar1 < 8) { +LAB_00171d2c: + uVar41 = 0; + uVar19 = 0; + uVar15 = 0xffffffff; + uVar16 = uVar5; + } + else { + uVar3 = -uVar41 - 1 & 7; + lVar18 = uVar1 - uVar3; + if (lVar18 == 0) goto LAB_00171d2c; + puVar2 = param_1 + lVar18; + iVar11 = (int)lVar18; + puVar13 = param_1 + 4; + auVar35._8_8_ = 0xffffffffffffffff; + auVar35._0_8_ = 0xffffffffffffffff; + iVar26 = 0; + iVar27 = 0; + iVar28 = 0; + iVar29 = 0; + iVar30 = 0; + iVar32 = 0; + iVar33 = 0; + iVar34 = 0; + auVar36 = ZEXT816(0); + auVar37 = ZEXT816(0); + auVar38._8_8_ = 0xffffffffffffffff; + auVar38._0_8_ = 0xffffffffffffffff; + do { + uVar39 = *(undefined8 *)(puVar13 + -4); + uVar40 = *(undefined8 *)puVar13; + lVar18 = lVar18 + -8; + puVar13 = puVar13 + 8; + uVar41 = CONCAT22(0,(ushort)uVar39); + uVar20 = (ushort)((ulong)uVar39 >> 0x10); + uVar22 = (ushort)((ulong)uVar39 >> 0x20); + uVar24 = (ushort)((ulong)uVar39 >> 0x30); + uVar42 = CONCAT22(0,(ushort)uVar40); + uVar21 = (ushort)((ulong)uVar40 >> 0x10); + uVar23 = (ushort)((ulong)uVar40 >> 0x20); + uVar25 = (ushort)((ulong)uVar40 >> 0x30); + iVar26 = iVar26 + ((uint)uVar39 & 0xffff); + iVar27 = iVar27 + (uint)uVar20; + iVar28 = iVar28 + (uint)uVar22; + iVar29 = iVar29 + (uint)uVar24; + iVar30 = iVar30 + ((uint)uVar40 & 0xffff); + iVar32 = iVar32 + (uint)uVar21; + iVar33 = iVar33 + (uint)uVar23; + iVar34 = iVar34 + (uint)uVar25; + auVar6._4_2_ = uVar20; + auVar6._0_4_ = uVar41; + auVar6._6_2_ = 0; + auVar6._8_2_ = uVar22; + auVar6._10_2_ = 0; + auVar6._12_2_ = uVar24; + auVar6._14_2_ = 0; + auVar36 = NEON_umax(auVar36,auVar6,4); + auVar8._4_2_ = uVar21; + auVar8._0_4_ = uVar42; + auVar8._6_2_ = 0; + auVar8._8_2_ = uVar23; + auVar8._10_2_ = 0; + auVar8._12_2_ = uVar25; + auVar8._14_2_ = 0; + auVar37 = NEON_umax(auVar37,auVar8,4); + auVar7._4_2_ = uVar20; + auVar7._0_4_ = uVar41; + auVar7._6_2_ = 0; + auVar7._8_2_ = uVar22; + auVar7._10_2_ = 0; + auVar7._12_2_ = uVar24; + auVar7._14_2_ = 0; + auVar35 = NEON_umin(auVar35,auVar7,4); + auVar9._4_2_ = uVar21; + auVar9._0_4_ = uVar42; + auVar9._6_2_ = 0; + auVar9._8_2_ = uVar23; + auVar9._10_2_ = 0; + auVar9._12_2_ = uVar25; + auVar9._14_2_ = 0; + auVar38 = NEON_umin(auVar38,auVar9,4); + } while (lVar18 != 0); + auVar35 = NEON_umin(auVar35,auVar38,4); + auVar36 = NEON_umax(auVar36,auVar37,4); + uVar31 = NEON_uminv(auVar35,4); + uVar42 = NEON_umaxv(auVar36,4); + uVar41 = iVar30 + iVar26 + iVar32 + iVar27 + iVar33 + iVar28 + iVar34 + iVar29; + param_1 = puVar2; + uVar16 = uVar5 - iVar11; + uVar15 = uVar31; + uVar19 = uVar42; + if (uVar3 == 0) goto LAB_00171d70; + } + do { + uVar20 = *param_1; + uVar16 = uVar16 - 1; + uVar42 = (uint)uVar20; + if (uVar20 <= uVar19) { + uVar42 = uVar19; + } + uVar31 = (uint)uVar20; + uVar41 = uVar41 + uVar31; + if (uVar15 <= uVar31) { + uVar31 = uVar15; + } + param_1 = param_1 + 1; + uVar15 = uVar31; + uVar19 = uVar42; + } while (uVar16 != 0); +LAB_00171d70: + uVar10 = (uVar10 * (param_7 + param_5) >> 1) + (param_6 + param_4 >> 1); + iVar11 = ReviseTemperature(this,(ushort)uVar31,uVar10,0); + *param_3 = iVar11; + iVar11 = ReviseTemperature(this,(ushort)uVar42,uVar10,0); + param_3[1] = iVar11; + uVar20 = 0; + if (uVar5 != 0) { + uVar20 = (ushort)(uVar41 / uVar5); + } + iVar11 = ReviseTemperature(this,uVar20,uVar10,0); + param_3[2] = iVar11; + if (*(int *)(this + 0x58) != 0) { + iVar26 = (int)this; + iVar11 = CorrectTemperature(iVar26,*(float *)(this + 0xac),*param_3); + *param_3 = iVar11; + iVar11 = CorrectTemperature(iVar26,*(float *)(this + 0xac),param_3[1]); + param_3[1] = iVar11; + iVar11 = CorrectTemperature(iVar26,*(float *)(this + 0xac),param_3[2]); + param_3[2] = iVar11; + } + if (param_8 == 0) { + return uVar5; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return uVar5; +} + + +================================================================== + +### FUNC 00171e24 (1300 bytes) name=GetLineTemperatureInfo3 + +/* CFunctions::GetLineTemperatureInfo3(int*, unsigned int, int*, unsigned int, unsigned int, + unsigned int, unsigned int, int) */ + +uint __thiscall +CFunctions::GetLineTemperatureInfo3 + (CFunctions *this,int *param_1,uint param_2,int *param_3,uint param_4,uint param_5, + uint param_6,uint param_7,int param_8) + +{ + ulong uVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + ushort uVar5; + uint uVar6; + uint uVar7; + int iVar8; + undefined4 *puVar10; + uint uVar11; + uint uVar12; + uint *puVar13; + long lVar14; + uint uVar15; + int *piVar16; + long lVar17; + uint uVar18; + uint uVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + undefined8 uVar24; + uint uVar25; + undefined8 uVar26; + undefined8 uVar27; + undefined8 uVar28; + undefined8 uVar29; + undefined8 uVar30; + CFunctions *pCVar9; + + pCVar9 = this; + if (param_8 != 0) { + uVar7 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar9 = (CFunctions *)(ulong)uVar7; + } + if ((((*(int *)(this + 0xec) == 0) || (uVar7 = *(uint *)(this + 0x1da8), uVar7 <= param_4)) || + (uVar7 <= param_6)) || + ((*(uint *)(this + 0x1dac) <= param_5 || (*(uint *)(this + 0x1dac) <= param_7)))) { +LAB_00171f9c: + uVar2 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar2 = 0xe4ae0001; + } + puVar10 = (undefined4 *)__errno(pCVar9); + *puVar10 = uVar2; + if (param_8 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + return 0; + } + if (param_4 == param_6) { + if ((((param_2 < 4) || (param_1 == (int *)0x0)) || (param_3 == (int *)0x0)) || + (param_5 == param_7)) goto LAB_00171f9c; + } + else if (((param_2 < 4) || (param_1 == (int *)0x0)) || (param_3 == (int *)0x0)) goto LAB_00171f9c; + iVar8 = param_4 - param_6; + uVar12 = param_6; + uVar15 = param_7; + uVar19 = param_5; + uVar25 = param_4; + if (param_4 < param_6 || iVar8 == 0) { + uVar12 = param_4; + uVar15 = param_5; + uVar19 = param_7; + uVar25 = param_6; + } + iVar20 = -iVar8; + if (-1 < iVar8) { + iVar20 = iVar8; + } + iVar4 = param_5 - param_7; + iVar21 = -iVar4; + if (-1 < iVar4) { + iVar21 = iVar4; + } + if (iVar20 < iVar21) { + iVar8 = iVar4; + } + iVar4 = -iVar8; + if (-1 < iVar8) { + iVar4 = iVar8; + } + uVar6 = param_2 >> 2; + uVar3 = uVar6; + if (iVar4 + 1 < (int)uVar6) { + uVar3 = iVar4 + 1; + } + if (iVar20 < iVar21) { + iVar8 = uVar19 - uVar15; + if (iVar8 == 0 || (int)uVar19 < (int)uVar15) { + if ((int)uVar19 < (int)((uVar15 - uVar3) + 1)) { + uVar19 = (uVar15 - uVar3) + 1; + } + if ((int)uVar19 <= (int)uVar15) { + lVar14 = *(long *)(this + 0x140); + *param_1 = (uint)*(ushort *)(lVar14 + (ulong)(uVar12 + uVar7 * uVar15) * 2); + if ((int)uVar19 < (int)uVar15) { + uVar7 = ~param_4; + if (uVar7 < ~param_6) { + uVar7 = ~param_6; + } + lVar17 = (long)(int)uVar15; + iVar20 = ~uVar25 - uVar7; + puVar13 = (uint *)param_1; + do { + uVar15 = uVar15 - 1; + puVar13 = puVar13 + 1; + iVar21 = 0; + if (iVar8 != 0) { + iVar21 = iVar20 / iVar8; + } + lVar17 = lVar17 + -1; + iVar20 = iVar20 + (~uVar25 - uVar7); + *puVar13 = (uint)*(ushort *) + (lVar14 + (ulong)(iVar21 + uVar12 + *(int *)(this + 0x1da8) * uVar15) + * 2); + } while ((int)uVar19 < lVar17); + } + } + } + else { + uVar11 = (uVar15 + uVar3) - 1; + if ((int)uVar19 <= (int)uVar11) { + uVar11 = uVar19; + } + if ((int)uVar15 <= (int)uVar11) { + lVar14 = *(long *)(this + 0x140); + *param_1 = (uint)*(ushort *)(lVar14 + (ulong)(uVar12 + uVar7 * uVar15) * 2); + if ((int)uVar15 < (int)uVar11) { + lVar17 = (long)(int)uVar15; + iVar20 = uVar25 - uVar12; + puVar13 = (uint *)param_1; + do { + uVar15 = uVar15 + 1; + puVar13 = puVar13 + 1; + iVar21 = 0; + if (iVar8 != 0) { + iVar21 = iVar20 / iVar8; + } + lVar17 = lVar17 + 1; + iVar20 = iVar20 + (uVar25 - uVar12); + *puVar13 = (uint)*(ushort *) + (lVar14 + (ulong)(iVar21 + uVar12 + *(int *)(this + 0x1da8) * uVar15) + * 2); + } while (lVar17 < (int)uVar11); + } + } + } + } + else { + uVar11 = (uVar12 + uVar3) - 1; + if ((int)uVar25 <= (int)uVar11) { + uVar11 = uVar25; + } + if ((int)uVar12 <= (int)uVar11) { + lVar14 = *(long *)(this + 0x140); + *param_1 = (uint)*(ushort *)(lVar14 + (ulong)(uVar12 + uVar7 * uVar15) * 2); + if ((int)uVar12 < (int)uVar11) { + iVar20 = uVar25 - uVar12; + lVar17 = (long)(int)uVar12; + iVar8 = uVar19 - uVar15; + puVar13 = (uint *)param_1; + do { + uVar12 = uVar12 + 1; + puVar13 = puVar13 + 1; + iVar21 = 0; + if (iVar20 != 0) { + iVar21 = iVar8 / iVar20; + } + lVar17 = lVar17 + 1; + iVar8 = iVar8 + (uVar19 - uVar15); + *puVar13 = (uint)*(ushort *) + (lVar14 + (ulong)(uVar12 + *(int *)(this + 0x1da8) * (iVar21 + uVar15)) + * 2); + } while (lVar17 < (int)uVar11); + } + } + } + if (uVar3 == 0) { + uVar19 = 0; + uVar7 = 0; + uVar12 = 0xffff; + goto LAB_0017221c; + } + uVar7 = -iVar4 - 2; + if ((int)uVar7 < (int)~uVar6) { + uVar7 = ~uVar6; + } + uVar1 = (ulong)(-uVar7 - 2) + 1; + if (uVar1 < 4) { +LAB_001721d8: + uVar7 = 0; + uVar18 = 0; + uVar11 = 0xffffffff; + puVar13 = (uint *)param_1; + uVar25 = uVar3; + } + else { + uVar15 = -uVar7 - 1 & 3; + lVar14 = uVar1 - uVar15; + if (lVar14 == 0) goto LAB_001721d8; + puVar13 = (uint *)(param_1 + lVar14); + iVar8 = (int)lVar14; + piVar16 = param_1 + 2; + uVar27 = 0xffffffffffffffff; + iVar20 = 0; + iVar21 = 0; + iVar22 = 0; + iVar23 = 0; + uVar24 = 0; + uVar26 = 0; + uVar28 = 0xffffffffffffffff; + do { + uVar29 = *(undefined8 *)(piVar16 + -2); + uVar30 = *(undefined8 *)piVar16; + lVar14 = lVar14 + -4; + piVar16 = piVar16 + 4; + iVar20 = (int)uVar29 + iVar20; + iVar21 = (int)((ulong)uVar29 >> 0x20) + iVar21; + iVar22 = (int)uVar30 + iVar22; + iVar23 = (int)((ulong)uVar30 >> 0x20) + iVar23; + uVar24 = NEON_umax(uVar29,uVar24,4); + uVar26 = NEON_umax(uVar30,uVar26,4); + uVar27 = NEON_umin(uVar29,uVar27,4); + uVar28 = NEON_umin(uVar30,uVar28,4); + } while (lVar14 != 0); + uVar27 = NEON_umin(uVar27,uVar28,4); + uVar7 = (uint)((ulong)uVar27 >> 0x20); + uVar24 = NEON_umax(uVar24,uVar26,4); + uVar25 = (uint)((ulong)uVar24 >> 0x20); + uVar12 = (uint)uVar27; + if (uVar7 <= (uint)uVar27) { + uVar12 = uVar7; + } + uVar7 = iVar22 + iVar20 + iVar23 + iVar21; + uVar19 = (uint)uVar24; + if ((uint)uVar24 <= uVar25) { + uVar19 = uVar25; + } + uVar25 = uVar3 - iVar8; + uVar11 = uVar12; + uVar18 = uVar19; + if (uVar15 == 0) goto LAB_0017221c; + } + do { + uVar12 = *puVar13; + uVar25 = uVar25 - 1; + uVar19 = uVar12; + if (uVar12 <= uVar18) { + uVar19 = uVar18; + } + uVar7 = uVar12 + uVar7; + if (uVar11 <= uVar12) { + uVar12 = uVar11; + } + puVar13 = puVar13 + 1; + uVar11 = uVar12; + uVar18 = uVar19; + } while (uVar25 != 0); +LAB_0017221c: + uVar15 = (*(int *)(this + 0x1da8) * (param_7 + param_5) >> 1) + (param_6 + param_4 >> 1); + iVar8 = ReviseTemperature(this,(ushort)uVar12,uVar15,0); + *param_3 = iVar8; + iVar8 = ReviseTemperature(this,(ushort)uVar19,uVar15,0); + param_3[1] = iVar8; + uVar5 = 0; + if (uVar3 != 0) { + uVar5 = (ushort)(uVar7 / uVar3); + } + iVar8 = ReviseTemperature(this,uVar5,uVar15,0); + param_3[2] = iVar8; + iVar8 = (int)this; + if (*(int *)(this + 0x58) != 0) { + iVar20 = CorrectTemperature(iVar8,*(float *)(this + 0xac),*param_3); + *param_3 = iVar20; + iVar20 = CorrectTemperature(iVar8,*(float *)(this + 0xac),param_3[1]); + param_3[1] = iVar20; + iVar20 = CorrectTemperature(iVar8,*(float *)(this + 0xac),param_3[2]); + param_3[2] = iVar20; + } + if (uVar3 != 0) { + uVar7 = -iVar4 - 2; + if ((int)uVar7 < (int)~uVar6) { + uVar7 = ~uVar6; + } + iVar20 = uVar7 + 1; + do { + uVar7 = ReviseTemperature(this,(ushort)*param_1,uVar15,0); + *param_1 = uVar7; + if (*(int *)(this + 0x58) != 0) { + uVar7 = CorrectTemperature(iVar8,*(float *)(this + 0xac),uVar7); + *param_1 = uVar7; + } + iVar20 = iVar20 + 1; + param_1 = param_1 + 1; + } while (iVar20 != 0); + } + if (param_8 == 0) { + return uVar3; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return uVar3; +} + + +================================================================== + +### FUNC 00172338 (500 bytes) name=GetRgnTemperatureInfo + +/* CFunctions::GetRgnTemperatureInfo(unsigned int const*, unsigned int, int*, int) */ + +undefined8 __thiscall +CFunctions::GetRgnTemperatureInfo + (CFunctions *this,uint *param_1,uint param_2,int *param_3,int param_4) + +{ + ushort uVar1; + uint uVar2; + undefined4 uVar3; + int iVar4; + uint uVar5; + uint uVar6; + ushort uVar7; + uint uVar8; + uint uVar9; + int iVar10; + int iVar11; + undefined8 uVar13; + undefined4 *puVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + uint uVar19; + ushort uVar20; + long lVar21; + CFunctions *pCVar12; + + pCVar12 = this; + if (param_4 != 0) { + uVar9 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar12 = (CFunctions *)(ulong)uVar9; + } + if ((((param_2 == 0) || (param_1 == (uint *)0x0)) || (param_3 == (int *)0x0)) || + (*(int *)(this + 0xec) == 0)) { + uVar3 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar3 = 0xe4ae0001; + } + puVar14 = (undefined4 *)__errno(pCVar12); + *puVar14 = uVar3; + if (param_4 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar13 = 0; + } + else { + uVar5 = *(uint *)(this + 0x1da8); + uVar19 = 0; + uVar18 = 0; + lVar21 = 0; + uVar9 = 0; + uVar16 = 0; + uVar17 = param_2; + uVar15 = 0xffffffff; + uVar20 = 0; + do { + uVar6 = *param_1; + uVar17 = uVar17 - 1; + uVar7 = *(ushort *)(*(long *)(this + 0x140) + (ulong)uVar6 * 2); + uVar8 = 0; + if (uVar5 != 0) { + uVar8 = uVar6 / uVar5; + } + uVar16 = (uVar6 + uVar16) - uVar8 * uVar5; + uVar2 = uVar6; + uVar1 = uVar7; + if (uVar7 <= uVar20) { + uVar2 = uVar18; + uVar1 = uVar20; + } + uVar18 = uVar2; + lVar21 = lVar21 + (ulong)uVar7; + uVar2 = (uint)uVar7; + if (uVar15 <= uVar7) { + uVar2 = uVar15; + uVar6 = uVar19; + } + uVar19 = uVar6; + uVar9 = uVar8 + uVar9; + param_1 = param_1 + 1; + uVar15 = uVar2; + uVar20 = uVar1; + } while (uVar17 != 0); + uVar17 = 0; + if (param_2 != 0) { + uVar17 = uVar16 / param_2; + } + uVar16 = 0; + if (param_2 != 0) { + uVar16 = uVar9 / param_2; + } + iVar10 = ReviseTemperature(this,(ushort)uVar2,uVar19,1); + *param_3 = iVar10; + iVar10 = ReviseTemperature(this,uVar1,uVar18,1); + param_3[1] = iVar10; + uVar20 = 0; + if ((ulong)param_2 != 0) { + uVar20 = (ushort)(lVar21 / (long)(ulong)param_2); + } + iVar10 = ReviseTemperature(this,uVar20,uVar17 + uVar5 * uVar16,1); + param_3[2] = iVar10; + param_3[3] = uVar19; + param_3[4] = uVar18; + if (*(int *)(this + 0x58) != 0) { + iVar11 = (int)this; + iVar10 = CorrectTemperature(iVar11,*(float *)(this + 0xac),*param_3); + *param_3 = iVar10; + iVar10 = CorrectTemperature(iVar11,*(float *)(this + 0xac),param_3[1]); + param_3[1] = iVar10; + iVar10 = CorrectTemperature(iVar11,*(float *)(this + 0xac),param_3[2]); + param_3[2] = iVar10; + } + iVar11 = *param_3; + iVar4 = param_3[1]; + if (iVar4 < iVar11) { + param_3[1] = iVar11; + iVar4 = iVar11; + } + if (iVar4 < iVar10) { + param_3[2] = iVar4; + iVar10 = iVar4; + } + if (iVar10 < iVar11) { + param_3[2] = iVar11; + } + if (param_4 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar13 = 1; + } + return uVar13; +} + + +================================================================== + +### FUNC 0017252c (388 bytes) name=GetTemperature + +/* CFunctions::GetTemperature(unsigned int, unsigned int, int) */ + +uint __thiscall CFunctions::GetTemperature(CFunctions *this,uint param_1,uint param_2,int param_3) + +{ + bool bVar1; + undefined4 uVar2; + int iVar3; + ushort uVar4; + uint uVar5; + uint uVar6; + int iVar7; + uint uVar8; + undefined4 *puVar10; + uint uVar11; + uint uVar12; + int iVar13; + int iVar14; + uint uVar15; + CFunctions *pCVar9; + + pCVar9 = this; + if (param_3 != 0) { + uVar8 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar9 = (CFunctions *)(ulong)uVar8; + } + if ((*(int *)(this + 0xec) == 0) || (*(uint *)(this + 0x76d0) <= param_1)) { + uVar2 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar2 = 0xe4ae0001; + } + puVar10 = (undefined4 *)__errno(pCVar9); + *puVar10 = uVar2; + if (param_3 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar8 = 0x80000001; + } + else { + if (param_2 - 1 < 5) { + iVar14 = *(int *)(&DAT_00439c20 + (long)(int)(param_2 - 1) * 4); + } + else { + iVar14 = 3; + } + uVar8 = *(uint *)(this + 0x1da8); + uVar5 = 0; + if (uVar8 != 0) { + uVar5 = param_1 / uVar8; + } + iVar3 = param_1 - uVar5 * uVar8; + iVar13 = iVar3 - iVar14; + iVar3 = iVar3 + iVar14; + if (iVar3 < iVar13) { + uVar11 = 0; + uVar12 = 0; + } + else { + uVar12 = 0; + uVar11 = 0; + uVar15 = param_1 + iVar14 * ~uVar8; + do { + if (((-1 < iVar13) && (iVar13 < (int)uVar8)) && + (uVar6 = uVar15, iVar7 = uVar5 - iVar14, (int)(uVar5 - iVar14) <= (int)(uVar5 + iVar14))) + { + do { + if ((-1 < iVar7) && (iVar7 < *(int *)(this + 0x1dac))) { + uVar11 = uVar11 + 1; + uVar12 = uVar12 + *(ushort *)(*(long *)(this + 0x140) + (ulong)uVar6 * 2); + } + bVar1 = iVar7 < (int)(uVar5 + iVar14); + uVar6 = uVar6 + uVar8; + iVar7 = iVar7 + 1; + } while (bVar1); + } + uVar15 = uVar15 + 1; + bVar1 = iVar13 < iVar3; + iVar13 = iVar13 + 1; + } while (bVar1); + } + uVar4 = 0; + if (uVar11 != 0) { + uVar4 = (ushort)(uVar12 / uVar11); + } + uVar8 = ReviseTemperature(this,uVar4,param_1,1); + if (*(int *)(this + 0x58) != 0) { + uVar8 = CorrectTemperature((int)this,*(float *)(this + 0xac),uVar8); + } + if (param_3 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + } + return uVar8; +} + + +================================================================== + +### FUNC 001726b0 (108 bytes) name=Temp2Energe + +/* CFunctions::Temp2Energe(int) const */ + +int __thiscall CFunctions::Temp2Energe(CFunctions *this,int param_1) + +{ + int iVar1; + uint uVar2; + uint uVar3; + int iVar4; + + iVar1 = param_1 + 50000; + iVar4 = param_1 + 0xe34f; + if (-1 < iVar1) { + iVar4 = iVar1; + } + uVar2 = iVar4 >> 0xd; + if (0x110 < uVar2) { + uVar2 = 0x111; + } + uVar3 = 0; + if (-0xe350 < param_1) { + uVar3 = uVar2; + } + iVar4 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar3 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar3 * 4)) * (iVar1 + uVar3 * -0x2000); + iVar1 = iVar4 + 0x1fff; + if (-1 < iVar4) { + iVar1 = iVar4; + } + return *(int *)(PTR_T2E_00501dc0 + (ulong)uVar3 * 4) + (iVar1 >> 0xd); +} + + +================================================================== + +### FUNC 0017271c (248 bytes) name=dTemp2dEnerge + +/* CFunctions::dTemp2dEnerge(int, int) const */ + +int __thiscall CFunctions::dTemp2dEnerge(CFunctions *this,int param_1,int param_2) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int iVar6; + + iVar1 = param_1 + 50000; + iVar2 = param_1 + 0xe34f; + if (-1 < iVar1) { + iVar2 = iVar1; + } + uVar3 = iVar2 >> 0xd; + if (0x110 < uVar3) { + uVar3 = 0x111; + } + iVar2 = iVar1 + param_2; + uVar4 = 0; + if (-0xe350 < param_1) { + uVar4 = uVar3; + } + iVar6 = iVar2 + 0x1fff; + if (-1 < iVar2) { + iVar6 = iVar2; + } + uVar3 = iVar6 >> 0xd; + if (0x110 < uVar3) { + uVar3 = 0x111; + } + uVar5 = 0; + if (-0x2000 < iVar2) { + uVar5 = uVar3; + } + if (uVar4 == uVar5) { + iVar2 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar4 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar4 * 4)) * param_2; + iVar1 = iVar2 + 0x1fff; + if (-1 < iVar2) { + iVar1 = iVar2; + } + return iVar1 >> 0xd; + } + iVar6 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar4 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar4 * 4)) * (iVar1 + uVar4 * -0x2000); + iVar2 = (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar5 + 1) * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar5 * 4)) * (iVar2 + uVar5 * -0x2000); + iVar1 = iVar2 + 0x1fff; + if (-1 < iVar2) { + iVar1 = iVar2; + } + iVar2 = iVar6 + 0x1fff; + if (-1 < iVar6) { + iVar2 = iVar6; + } + return ((*(int *)(PTR_T2E_00501dc0 + (ulong)uVar5 * 4) - + *(int *)(PTR_T2E_00501dc0 + (ulong)uVar4 * 4)) - (iVar2 >> 0xd)) + (iVar1 >> 0xd); +} + + +================================================================== + +### FUNC 00172814 (260 bytes) name=dEnerge2dTemp + +/* CFunctions::dEnerge2dTemp(int, int) const */ + +int __thiscall CFunctions::dEnerge2dTemp(CFunctions *this,int param_1,int param_2) + +{ + int iVar1; + int iVar2; + uint uVar3; + int iVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + + iVar1 = param_1 + 50000; + iVar2 = -param_2; + if (-1 < param_2) { + iVar2 = param_2; + } + iVar4 = param_1 + 0xe34f; + if (-1 < iVar1) { + iVar4 = iVar1; + } + uVar7 = iVar4 >> 0xd; + if (0x110 < uVar7) { + uVar7 = 0x111; + } + uVar8 = 0; + if (-0xe350 < param_1) { + uVar8 = uVar7; + } + iVar4 = *(int *)(PTR_T2E_00501dc0 + (ulong)uVar8 * 4); + iVar6 = *(int *)(PTR_T2E_00501dc0 + (ulong)(uVar8 + 1) * 4) - iVar4; + if (iVar6 < iVar2 * 2) { + iVar6 = iVar6 * (iVar1 + uVar8 * -0x2000); + iVar1 = iVar6 + 0x1fff; + if (-1 < iVar6) { + iVar1 = iVar6; + } + iVar1 = iVar4 + param_2 + (iVar1 >> 0xd); + if ((iVar1 < iVar4) || (*(int *)(PTR_T2E_00501dc0 + (ulong)(uVar8 + 1) * 4) < iVar1)) { + uVar7 = 0; + uVar8 = 0x112; + do { + uVar5 = uVar8 + uVar7 >> 1; + uVar3 = uVar5; + if (*(int *)(PTR_T2E_00501dc0 + (ulong)uVar5 * 4) <= iVar1) { + uVar3 = uVar8; + uVar7 = uVar5; + } + uVar8 = uVar3; + } while (uVar7 + 1 < uVar3); + return (-50000 - param_1) + uVar7 * 0x2000 + + ((iVar1 - *(int *)(PTR_T2E_00501dc0 + (ulong)uVar7 * 4)) * + *(int *)(PTR_E2TAccQ10_00501f60 + (ulong)uVar7 * 4) >> 10); + } + } + return *(int *)(PTR_E2TAccQ10_00501f60 + (ulong)uVar8 * 4) * param_2 >> 10; +} + + +================================================================== + +### FUNC 00172918 (104 bytes) name=Energe2Temp + +/* CFunctions::Energe2Temp(int) const */ + +int __thiscall CFunctions::Energe2Temp(CFunctions *this,int param_1) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + + uVar3 = 0; + uVar4 = 0x112; + do { + uVar2 = uVar3 + uVar4 >> 1; + uVar1 = uVar2; + if (*(int *)(PTR_T2E_00501dc0 + (ulong)uVar2 * 4) <= param_1) { + uVar1 = uVar4; + uVar3 = uVar2; + } + uVar4 = uVar1; + } while (uVar3 + 1 < uVar1); + return uVar3 * 0x2000 + + ((param_1 - *(int *)(PTR_T2E_00501dc0 + (ulong)uVar3 * 4)) * + *(int *)(PTR_E2TAccQ10_00501f60 + (ulong)uVar3 * 4) >> 10) + -50000; +} + + +================================================================== + +### FUNC 00172980 (52 bytes) name=Radius2StrayEnery + +/* CFunctions::Radius2StrayEnery(struct_LensParam const*, float) */ + +float __thiscall +CFunctions::Radius2StrayEnery(CFunctions *this,struct_LensParam *param_1,float param_2) + +{ + struct_LensParam *psVar1; + struct_LensParam *psVar2; + + psVar1 = param_1 + 0xc0; + psVar2 = param_1 + 0xbc; + if (param_2 <= *(float *)(param_1 + 0xb0)) { + psVar1 = param_1 + 0xb8; + psVar2 = param_1 + 0xb4; + } + return *(float *)psVar2 * param_2 + *(float *)psVar1; +} + + +================================================================== + +### FUNC 001729b4 (1180 bytes) name=FindStrayRadius + +/* CFunctions::FindStrayRadius(unsigned int, float, float*, unsigned int*) */ + +undefined8 __thiscall +CFunctions::FindStrayRadius + (CFunctions *this,uint param_1,float param_2,float *param_3,uint *param_4) + +{ + bool bVar1; + undefined8 *puVar2; + undefined8 *puVar3; + uint uVar4; + uint uVar5; + uint uVar6; + ushort uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + long lVar11; + ushort *puVar12; + long lVar13; + ulong uVar14; + long lVar15; + uint uVar16; + long lVar17; + uint uVar18; + ulong uVar19; + ulong uVar20; + ulong uVar21; + int iVar22; + uint uVar23; + float fVar24; + int iVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + int iVar33; + uint uVar34; + undefined8 uVar35; + uint uVar36; + undefined8 uVar37; + int iVar38; + undefined8 uVar39; + int iVar40; + int iVar41; + int iVar42; + undefined8 uVar43; + uint uVar44; + uint uVar45; + uint uVar46; + uint uVar47; + uint uVar48; + uint uVar49; + uint uVar50; + int iVar51; + int iVar52; + int iVar53; + int iVar54; + int iVar55; + int iVar56; + + uVar16 = *(uint *)(this + 19000); + if (uVar16 == 0) { + uVar16 = *(uint *)(this + 0x1e00); + if ((int)(((*(uint *)(this + 0x1df8) & 0xffff) << (ulong)(*(uint *)(this + 0x76e4) & 0x1f)) - + ((uVar16 & 0xffff) << (ulong)(*(uint *)(this + 0x76e4) & 0x1f))) < 10000) { + uVar16 = 0xffff; + } + else { + uVar16 = (int)(*(uint *)(this + 0x1df8) - uVar16) / 3 + uVar16; + } + *(uint *)(this + 19000) = uVar16; + } + lVar17 = *(long *)(this + 0x140); + uVar7 = *(ushort *)(lVar17 + (ulong)param_1 * 2); + if (uVar16 < uVar7) { + uVar5 = *(uint *)(this + 0x1dd0); + if (uVar5 != 0) { + param_2 = (float)(1 << (ulong)(uVar5 & 0x1f)) * param_2; + } + uVar6 = *(uint *)(this + 0x1da8); + uVar10 = 0; + if (uVar6 != 0) { + uVar10 = param_1 / uVar6; + } + uVar8 = param_1 - uVar10 * uVar6; + uVar36 = (uVar6 - 1) - uVar8; + uVar4 = *(int *)(this + 0x1dac) + ~uVar10; + if (uVar36 <= *(int *)(this + 0x1dac) + ~uVar10) { + uVar4 = uVar36; + } + uVar36 = uVar10; + if ((int)uVar8 <= (int)uVar10) { + uVar36 = uVar8; + } + if ((int)uVar36 <= (int)uVar4) { + uVar4 = uVar36; + } + if (0 < (int)uVar4) { + iVar29 = 0; + iVar31 = 1; + uVar36 = (uint)uVar7; + do { + if (iVar31 < 0) { + uVar23 = 0; + } + else { + uVar34 = iVar31 * 2; + uVar14 = (ulong)(int)uVar34; + uVar21 = uVar14 & ((long)uVar14 >> 0x3f ^ 0xffffffffffffffffU); + lVar11 = lVar17 + (ulong)(uVar6 * (uVar10 - iVar31)) * 2 + (long)(int)uVar8 * 2 + + (long)iVar31 * -2; + uVar18 = uVar6 * uVar34; + if ((uVar21 < 8) || (uVar19 = uVar21 & 0x7ffffffffffffff8, uVar19 == 0)) { + uVar20 = 0; + uVar23 = 0; + } + else { + uVar23 = 0; + uVar20 = 0; + if ((!CARRY4(uVar18,(uint)uVar21)) && (uVar21 >> 0x20 == 0)) { + lVar13 = 0; + iVar22 = 0; + iVar25 = 0; + iVar26 = 0; + iVar27 = 0; + iVar28 = 0; + iVar30 = 0; + iVar32 = 0; + iVar33 = 0; + uVar21 = uVar19; + uVar23 = uVar18; + do { + puVar3 = (undefined8 *)(lVar11 + lVar13 * 2); + puVar2 = (undefined8 *)(lVar11 + (ulong)uVar23 * 2); + uVar35 = *puVar3; + uVar37 = puVar3[1]; + uVar39 = *puVar2; + uVar43 = puVar2[1]; + lVar13 = lVar13 + 8; + uVar21 = uVar21 - 8; + iVar22 = iVar22 + ((uint)uVar35 & 0xffff) + ((uint)uVar39 & 0xffff); + iVar25 = iVar25 + (uint)(ushort)((ulong)uVar35 >> 0x10) + + (uint)(ushort)((ulong)uVar39 >> 0x10); + iVar26 = iVar26 + (uint)(ushort)((ulong)uVar35 >> 0x20) + + (uint)(ushort)((ulong)uVar39 >> 0x20); + iVar27 = iVar27 + (uint)(ushort)((ulong)uVar35 >> 0x30) + + (uint)(ushort)((ulong)uVar39 >> 0x30); + iVar28 = iVar28 + ((uint)uVar37 & 0xffff) + ((uint)uVar43 & 0xffff); + iVar30 = iVar30 + (uint)(ushort)((ulong)uVar37 >> 0x10) + + (uint)(ushort)((ulong)uVar43 >> 0x10); + iVar32 = iVar32 + (uint)(ushort)((ulong)uVar37 >> 0x20) + + (uint)(ushort)((ulong)uVar43 >> 0x20); + iVar33 = iVar33 + (uint)(ushort)((ulong)uVar37 >> 0x30) + + (uint)(ushort)((ulong)uVar43 >> 0x30); + uVar23 = uVar23 + 8; + } while (uVar21 != 0); + uVar23 = iVar28 + iVar22 + iVar30 + iVar25 + iVar32 + iVar26 + iVar33 + iVar27; + uVar20 = uVar19; + } + } + do { + uVar23 = uVar23 + *(ushort *)(lVar11 + uVar20 * 2) + + (uint)*(ushort *)(lVar11 + (ulong)(uVar18 + (int)uVar20) * 2); + bVar1 = (long)uVar20 < (long)uVar14; + uVar20 = uVar20 + 1; + } while (bVar1); + if (0 < iVar31) { + lVar15 = (long)(int)uVar34; + lVar13 = lVar15; + if (lVar15 < 3) { + lVar13 = 2; + } + if ((lVar13 - 1U < 8) || (uVar14 = lVar13 - 1U & 0xfffffffffffffff8, uVar14 == 0)) { +LAB_00172c30: + uVar21 = 1; + } + else { + lVar13 = lVar15; + if (lVar15 < 3) { + lVar13 = 2; + } + if ((uVar6 != 1) || (CARRY4(uVar34 | 1,(uint)(lVar13 - 2U)))) goto LAB_00172c30; + uVar21 = 1; + if (lVar13 - 2U >> 0x20 == 0) { + iVar25 = 0; + iVar26 = 0; + uVar21 = uVar14 | 1; + iVar22 = 0; + iVar27 = 0; + iVar28 = 0; + iVar30 = 0; + iVar32 = 0; + uVar18 = 1; + do { + puVar2 = (undefined8 *)(lVar11 + (ulong)uVar18 * 2); + uVar35 = *puVar2; + uVar37 = puVar2[1]; + puVar2 = (undefined8 *)(lVar11 + (ulong)(uVar34 + uVar18) * 2); + uVar39 = *puVar2; + uVar43 = puVar2[1]; + uVar14 = uVar14 - 8; + uVar23 = uVar23 + ((uint)uVar35 & 0xffff) + ((uint)uVar39 & 0xffff); + iVar22 = iVar22 + (uint)(ushort)((ulong)uVar35 >> 0x10) + + (uint)(ushort)((ulong)uVar39 >> 0x10); + iVar25 = iVar25 + (uint)(ushort)((ulong)uVar35 >> 0x20) + + (uint)(ushort)((ulong)uVar39 >> 0x20); + iVar26 = iVar26 + (uint)(ushort)((ulong)uVar35 >> 0x30) + + (uint)(ushort)((ulong)uVar39 >> 0x30); + iVar27 = iVar27 + ((uint)uVar37 & 0xffff) + ((uint)uVar43 & 0xffff); + iVar28 = iVar28 + (uint)(ushort)((ulong)uVar37 >> 0x10) + + (uint)(ushort)((ulong)uVar43 >> 0x10); + iVar30 = iVar30 + (uint)(ushort)((ulong)uVar37 >> 0x20) + + (uint)(ushort)((ulong)uVar43 >> 0x20); + iVar32 = iVar32 + (uint)(ushort)((ulong)uVar37 >> 0x30) + + (uint)(ushort)((ulong)uVar43 >> 0x30); + uVar18 = uVar18 + 8; + } while (uVar14 != 0); + uVar23 = iVar27 + uVar23 + iVar28 + iVar22 + iVar30 + iVar25 + iVar32 + iVar26; + } + } + uVar18 = uVar6 * (int)uVar21; + do { + uVar21 = uVar21 + 1; + uVar23 = uVar23 + *(ushort *)(lVar11 + (ulong)uVar18 * 2) + + (uint)*(ushort *)(lVar11 + (ulong)(uVar34 + uVar18) * 2); + uVar18 = uVar18 + uVar6; + } while ((long)uVar21 < lVar15); + } + } + uVar34 = 0; + if (iVar31 << 3 != 0) { + uVar34 = uVar23 / (uint)(iVar31 << 3); + } + if ((int)uVar34 <= (int)uVar16) { + fVar24 = (float)(int)((uVar16 - uVar36) * (iVar31 - iVar29)) / + (float)(int)(uVar34 - uVar36) + (float)iVar29; + if (fVar24 != 0.0) goto LAB_00172ce8; + break; + } + iVar29 = iVar31 + 1; + iVar22 = iVar29; + if (param_2 < (float)iVar31) { + iVar22 = iVar31 * 9; + iVar25 = iVar22 + 7; + if (-1 < iVar22) { + iVar25 = iVar22; + } + iVar22 = iVar25 >> 3; + if (iVar25 >> 3 <= iVar29) { + iVar22 = iVar29; + } + } + iVar29 = iVar31; + iVar31 = iVar22; + uVar36 = uVar34; + } while (iVar22 <= (int)uVar4); + } + fVar24 = (float)(int)uVar4; + if (param_2 < fVar24) { +LAB_00172ce8: + if ((int)(fVar24 + 2.5) <= (int)uVar4) { + uVar4 = (int)(fVar24 + 2.5); + } + if (-1 < (int)uVar4) { + uVar18 = uVar4 * 2; + uVar23 = uVar18 & ((int)uVar18 >> 0x1f ^ 0xffffffffU); + uVar9 = uVar23 | 1; + uVar34 = 0; + uVar36 = 0; + lVar13 = (ulong)uVar9 - (ulong)(uVar23 & 7 | 1); + lVar11 = 0; + do { + puVar12 = (ushort *) + (lVar17 + (ulong)(uVar6 * ((uVar10 - uVar4) + (int)lVar11)) * 2 + + (long)(int)uVar8 * 2 + (long)(int)uVar4 * -2); + if ((uVar9 < 8) || (lVar13 == 0)) { + iVar29 = 0; + } + else { + iVar32 = 0; + iVar33 = 0; + iVar27 = 0; + iVar28 = 0; + lVar15 = 0; + iVar29 = 0; + iVar31 = 0; + iVar22 = 0; + iVar25 = 0; + iVar30 = 0; + iVar26 = 0; + iVar38 = 0; + iVar40 = 0; + iVar41 = 0; + iVar42 = 0; + do { + uVar35 = *(undefined8 *)(puVar12 + lVar15); + uVar37 = *(undefined8 *)(puVar12 + lVar15 + 4); + lVar15 = lVar15 + 8; + uVar23 = (uint)uVar35 & 0xffff; + uVar45 = (uint)(ushort)((ulong)uVar35 >> 0x20); + uVar47 = (uint)uVar37 & 0xffff; + uVar49 = (uint)(ushort)((ulong)uVar37 >> 0x20); + uVar44 = (uint)(ushort)((ulong)uVar35 >> 0x10); + iVar51 = -(uint)(uVar16 < uVar44); + iVar52 = -(uint)(uVar16 < uVar45); + uVar46 = (uint)(ushort)((ulong)uVar35 >> 0x30); + iVar53 = -(uint)(uVar16 < uVar46); + uVar48 = (uint)(ushort)((ulong)uVar37 >> 0x10); + iVar54 = -(uint)(uVar16 < uVar48); + iVar55 = -(uint)(uVar16 < uVar49); + uVar50 = (uint)(ushort)((ulong)uVar37 >> 0x30); + iVar56 = -(uint)(uVar16 < uVar50); + uVar34 = uVar34 + (uVar23 <= uVar16); + iVar26 = iVar26 + (uint)(uVar44 <= uVar16); + iVar27 = iVar27 + (uint)(uVar45 <= uVar16); + iVar28 = iVar28 + (uint)(uVar46 <= uVar16); + uVar36 = CONCAT11((byte)(uVar23 >> 8) & ~(byte)(-(uint)(uVar16 < uVar23) >> 8), + (byte)uVar23 & ~(byte)-(uint)(uVar16 < uVar23)) + uVar36; + iVar30 = (uint)CONCAT11((byte)((ulong)uVar35 >> 0x18) & ~(byte)((uint)iVar51 >> 8), + (byte)((ulong)uVar35 >> 0x10) & ~(byte)iVar51) + iVar30; + iVar32 = (uint)CONCAT11((byte)((ulong)uVar35 >> 0x28) & ~(byte)((uint)iVar52 >> 8), + (byte)((ulong)uVar35 >> 0x20) & ~(byte)iVar52) + iVar32; + iVar33 = (uint)CONCAT11((byte)((ulong)uVar35 >> 0x38) & ~(byte)((uint)iVar53 >> 8), + (byte)((ulong)uVar35 >> 0x30) & ~(byte)iVar53) + iVar33; + iVar38 = (uint)CONCAT11((byte)(uVar47 >> 8) & ~(byte)(-(uint)(uVar16 < uVar47) >> 8), + (byte)uVar47 & ~(byte)-(uint)(uVar16 < uVar47)) + iVar38; + iVar40 = (uint)CONCAT11((byte)((ulong)uVar37 >> 0x18) & ~(byte)((uint)iVar54 >> 8), + (byte)((ulong)uVar37 >> 0x10) & ~(byte)iVar54) + iVar40; + iVar41 = (uint)CONCAT11((byte)((ulong)uVar37 >> 0x28) & ~(byte)((uint)iVar55 >> 8), + (byte)((ulong)uVar37 >> 0x20) & ~(byte)iVar55) + iVar41; + iVar42 = (uint)CONCAT11((byte)((ulong)uVar37 >> 0x38) & ~(byte)((uint)iVar56 >> 8), + (byte)((ulong)uVar37 >> 0x30) & ~(byte)iVar56) + iVar42; + iVar29 = iVar29 + (uint)(uVar47 <= uVar16); + iVar31 = iVar31 + (uint)(uVar48 <= uVar16); + iVar22 = iVar22 + (uint)(uVar49 <= uVar16); + iVar25 = iVar25 + (uint)(uVar50 <= uVar16); + } while (lVar15 != lVar13); + uVar36 = iVar38 + uVar36 + iVar40 + iVar30 + iVar41 + iVar32 + iVar42 + iVar33; + uVar34 = iVar29 + uVar34 + iVar31 + iVar26 + iVar22 + iVar27 + iVar25 + iVar28; + iVar29 = (int)lVar13; + puVar12 = puVar12 + lVar13; + } + iVar29 = iVar29 + -1; + do { + iVar29 = iVar29 + 1; + uVar23 = 0; + if (*puVar12 <= uVar16) { + uVar34 = uVar34 + 1; + uVar23 = (uint)*puVar12; + } + uVar36 = uVar23 + uVar36; + puVar12 = puVar12 + 1; + } while (iVar29 < (int)uVar18); + bVar1 = lVar11 < (int)uVar18; + lVar11 = lVar11 + 1; + } while (bVar1); + if (uVar34 != 0) { + if (uVar5 != 0) { + fVar24 = fVar24 / (float)(1 << (ulong)(uVar5 & 0x1f)); + } + uVar16 = 0; + if (uVar34 != 0) { + uVar16 = uVar36 / uVar34; + } + *param_3 = fVar24; + *param_4 = uVar16; + return 1; + } + } + } + } + return 0; +} + + +================================================================== + +### FUNC 00172e50 (32 bytes) name=ConvertInnerTemp2mC + +/* CFunctions::ConvertInnerTemp2mC(unsigned short) const */ + +int __thiscall CFunctions::ConvertInnerTemp2mC(CFunctions *this,ushort param_1) + +{ + return ((uint)param_1 << (ulong)(*(uint *)(this + 0x76e4) & 0x1f)) + *(int *)(this + 0x76e0); +} + + +================================================================== + +### FUNC 00172e70 (8 bytes) name=GetEX + +/* CFunctions::GetEX() */ + +undefined4 __thiscall CFunctions::GetEX(CFunctions *this) + +{ + return *(undefined4 *)(this + 0x1dd0); +} + + +================================================================== + +### FUNC 00172e78 (184 bytes) name=CalibrationMain_RTV + +/* CFunctions::CalibrationMain_RTV(unsigned short const*) */ + +void __thiscall CFunctions::CalibrationMain_RTV(CFunctions *this,ushort *param_1) + +{ + ushort *puVar1; + uint uVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + ushort *puVar7; + int iVar8; + undefined2 *puVar9; + long lVar10; + long lVar11; + + lVar6 = *(long *)(this + 0x1610); + if (*(int *)(this + 0x1cc4) == 0) { + puVar7 = (ushort *)0x0; + } + else { + puVar7 = *(ushort **)(this + 0x1ca8); + } + iVar8 = *(int *)(this + 0x76d0); + if (iVar8 != 0) { + lVar10 = *(long *)(this + 0x1628); + iVar4 = iVar8 * 2; + uVar5 = *(int *)(this + 0x130c) - 1; + puVar9 = *(undefined2 **)(this + 0x130); + do { + iVar3 = (int)((uint)*param_1 - (uint)*puVar7) >> 1; + if (uVar5 == 0) { + lVar11 = 0; + } + else { + lVar11 = 0; + do { + if (iVar3 <= *(short *)(lVar6 + lVar11 * 2)) break; + lVar11 = lVar11 + 1; + } while ((uint)lVar11 < uVar5); + } + puVar1 = (ushort *)(lVar10 + (ulong)(uint)(iVar4 * (int)lVar11) * 2); + iVar8 = iVar8 + -1; + lVar10 = lVar10 + 4; + uVar2 = (uint)puVar1[1] + ((int)(iVar3 * (uint)*puVar1) >> 0xc); + uVar2 = uVar2 & ((int)uVar2 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar2) { + uVar2 = 0xffff; + } + *puVar9 = (short)uVar2; + lVar6 = lVar6 + (ulong)uVar5 * 2; + param_1 = param_1 + 1; + puVar7 = puVar7 + 1; + puVar9 = puVar9 + 1; + } while (iVar8 != 0); + } + return; +} + + +================================================================== + +### FUNC 00172f30 (500 bytes) name=BlindCompensation + +/* CFunctions::BlindCompensation(unsigned short*) */ + +void __thiscall CFunctions::BlindCompensation(CFunctions *this,ushort *param_1) + +{ + uint *puVar1; + uint uVar2; + uint uVar3; + uint *puVar4; + ushort uVar5; + + uVar2 = *(uint *)(this + (ulong)*(uint *)(this + 0x15f8) * 4 + 0x140c); + if (uVar2 != 0) { + uVar3 = 0; + puVar4 = (uint *)(*(long *)(this + 0x1630) + 0x14); + do { + switch(puVar4[-4]) { + case 3: + uVar5 = (ushort)(((uint)param_1[puVar4[-2]] + (uint)param_1[puVar4[-3]] + + (uint)param_1[puVar4[-1]]) / 3); + break; + case 4: + uVar5 = (ushort)((uint)param_1[puVar4[-2]] + (uint)param_1[puVar4[-3]] + + (uint)param_1[puVar4[-1]] + (uint)param_1[*puVar4] >> 2); + break; + case 5: + uVar5 = (ushort)(((uint)param_1[puVar4[-2]] + (uint)param_1[puVar4[-3]] + + (uint)param_1[puVar4[-1]] + (uint)param_1[*puVar4] + + (uint)param_1[puVar4[1]]) / 5); + break; + case 6: + uVar5 = (ushort)(((uint)param_1[puVar4[-2]] + (uint)param_1[puVar4[-3]] + + (uint)param_1[puVar4[-1]] + (uint)param_1[*puVar4] + + (uint)param_1[puVar4[1]] + (uint)param_1[puVar4[2]]) / 6); + break; + case 7: + uVar5 = (ushort)(((uint)param_1[puVar4[-2]] + (uint)param_1[puVar4[-3]] + + (uint)param_1[puVar4[-1]] + (uint)param_1[*puVar4] + + (uint)param_1[puVar4[1]] + (uint)param_1[puVar4[2]] + + (uint)param_1[puVar4[3]]) / 7); + break; + case 8: + uVar5 = (ushort)((int)((uint)param_1[puVar4[-2]] + (uint)param_1[puVar4[-3]] + + (uint)param_1[puVar4[-1]] + (uint)param_1[*puVar4] + + (uint)param_1[puVar4[1]] + (uint)param_1[puVar4[2]] + + (uint)param_1[puVar4[3]] + (uint)param_1[puVar4[4]]) >> 3); + break; + default: + goto switchD_00172f84_default; + } + puVar1 = puVar4 + -5; + uVar3 = uVar3 + 1; + puVar4 = puVar4 + 10; + param_1[*puVar1] = uVar5; + } while (uVar3 < uVar2); + } +switchD_00172f84_default: + return; +} + + +================================================================== + +### FUNC 00173124 (816 bytes) name=ConvertResponse2Temperature + +/* CFunctions::ConvertResponse2Temperature(unsigned short const*) */ + +void __thiscall CFunctions::ConvertResponse2Temperature(CFunctions *this,ushort *param_1) + +{ + uint uVar1; + int iVar2; + char cVar3; + char cVar4; + long lVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined8 uVar9; + undefined1 auVar10 [16]; + undefined8 uVar11; + long lVar12; + bool bVar13; + uint uVar14; + char *pcVar15; + long lVar16; + char *pcVar17; + uint uVar18; + ushort *puVar19; + ushort *puVar20; + ushort uVar21; + ushort *puVar22; + long lVar23; + ulong uVar24; + ushort *puVar25; + ushort *puVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + int iVar33; + int iVar34; + undefined8 uVar35; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined8 uVar38; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + byte bVar41; + byte bVar42; + byte bVar43; + byte bVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + byte bVar49; + byte bVar50; + byte bVar51; + byte bVar52; + Logging aLStack_50 [16]; + char *local_40; + long local_38; + + iVar2 = DAT_005028a4; + lVar5 = tpidr_el0; + local_38 = *(long *)(lVar5 + 0x28); + if (*(int *)(this + 0x1cc4) == 0) { + puVar19 = (ushort *)0x0; + } + else { + puVar19 = *(ushort **)(this + 0x1ca8); + } + uVar14 = *(uint *)(this + 0x76d0); + uVar18 = 50000 - *(int *)(this + 0x76e0) >> (*(uint *)(this + 0x76e4) & 0x1f); + uVar18 = uVar18 & ((int)uVar18 >> 0x1f ^ 0xffffffffU); + if (0xfffe < (int)uVar18) { + uVar18 = 0xffff; + } + iVar27 = DAT_005028a4; + if (uVar14 != 0) { + puVar20 = *(ushort **)(this + 0x130); + uVar24 = (ulong)(uVar14 - 1); + if (7 < uVar24 + 1) { + uVar1 = uVar14 & 7; + lVar23 = (uVar24 + 1) - (ulong)uVar1; + if (lVar23 != 0) { + iVar28 = 0; + if (puVar20 < param_1 + uVar24 + 1 && param_1 < puVar20 + uVar24 + 1) goto LAB_001732d8; + if (puVar20 < puVar19 + uVar24 + 1 && puVar19 < puVar20 + uVar24 + 1) goto LAB_001732d8; + uVar14 = uVar14 - (int)lVar23; + puVar22 = puVar20 + 4; + puVar25 = puVar19 + 4; + puVar26 = param_1 + 4; + iVar27 = 0; + iVar28 = 0; + iVar29 = 0; + iVar30 = 0; + param_1 = param_1 + lVar23; + puVar19 = puVar19 + lVar23; + puVar20 = puVar20 + lVar23; + iVar31 = 0; + iVar32 = 0; + iVar33 = 0; + iVar34 = 0; + do { + uVar35 = *(undefined8 *)(puVar26 + -4); + uVar38 = *(undefined8 *)puVar26; + uVar9 = *(undefined8 *)(puVar25 + -4); + uVar11 = *(undefined8 *)puVar25; + puVar25 = puVar25 + 8; + auVar45._0_4_ = uVar18 + ((uint)(ushort)uVar35 - (uint)(ushort)uVar9) * iVar2; + auVar45._4_4_ = + uVar18 + ((uint)(ushort)((ulong)uVar35 >> 0x10) - + (uint)(ushort)((ulong)uVar9 >> 0x10)) * iVar2; + auVar45._8_4_ = + uVar18 + ((uint)(ushort)((ulong)uVar35 >> 0x20) - + (uint)(ushort)((ulong)uVar9 >> 0x20)) * iVar2; + auVar45._12_4_ = + uVar18 + ((uint)(ushort)((ulong)uVar35 >> 0x30) - + (uint)(ushort)((ulong)uVar9 >> 0x30)) * iVar2; + auVar47._0_4_ = uVar18 + ((uint)(ushort)uVar38 - (uint)(ushort)uVar11) * iVar2; + auVar47._4_4_ = + uVar18 + ((uint)(ushort)((ulong)uVar38 >> 0x10) - + (uint)(ushort)((ulong)uVar11 >> 0x10)) * iVar2; + auVar47._8_4_ = + uVar18 + ((uint)(ushort)((ulong)uVar38 >> 0x20) - + (uint)(ushort)((ulong)uVar11 >> 0x20)) * iVar2; + auVar47._12_4_ = + uVar18 + ((uint)(ushort)((ulong)uVar38 >> 0x30) - + (uint)(ushort)((ulong)uVar11 >> 0x30)) * iVar2; + auVar36._0_4_ = -(uint)(0xffff < auVar45._0_4_); + auVar36._4_4_ = -(uint)(0xffff < auVar45._4_4_); + auVar36._8_4_ = -(uint)(0xffff < (int)auVar45._8_4_); + auVar36._12_4_ = -(uint)(0xffff < (int)auVar45._12_4_); + auVar39._0_4_ = -(uint)(0xffff < auVar47._0_4_); + auVar39._4_4_ = -(uint)(0xffff < auVar47._4_4_); + auVar39._8_4_ = -(uint)(0xffff < (int)auVar47._8_4_); + auVar39._12_4_ = -(uint)(0xffff < (int)auVar47._12_4_); + bVar41 = (byte)((uint)auVar45._0_4_ >> 0x1f); + bVar42 = (byte)((uint)auVar45._4_4_ >> 0x1f); + bVar43 = (byte)((uint)auVar47._0_4_ >> 0x1f); + bVar44 = (byte)((uint)auVar47._4_4_ >> 0x1f); + auVar46 = NEON_smax(auVar45,ZEXT816(0),4); + auVar48 = NEON_smax(auVar47,ZEXT816(0),4); + auVar6._8_4_ = 1; + auVar6._0_8_ = 0x100000001; + auVar6._12_4_ = 1; + auVar8._1_3_ = 0; + auVar8[0] = bVar41; + auVar8[4] = bVar42; + auVar8._5_3_ = 0; + auVar8._8_4_ = auVar45._8_4_ >> 0x1f; + auVar8._12_4_ = auVar45._12_4_ >> 0x1f; + auVar37._1_3_ = 0; + auVar37[0] = bVar41; + auVar37[4] = bVar42; + auVar37._5_3_ = 0; + auVar37._8_4_ = auVar45._8_4_ >> 0x1f; + auVar37._12_4_ = auVar45._12_4_ >> 0x1f; + auVar37 = auVar37 ^ (auVar8 ^ auVar6) & auVar36; + auVar7._8_4_ = 1; + auVar7._0_8_ = 0x100000001; + auVar7._12_4_ = 1; + auVar10._1_3_ = 0; + auVar10[0] = bVar43; + auVar10[4] = bVar44; + auVar10._5_3_ = 0; + auVar10._8_4_ = auVar47._8_4_ >> 0x1f; + auVar10._12_4_ = auVar47._12_4_ >> 0x1f; + auVar40._1_3_ = 0; + auVar40[0] = bVar43; + auVar40[4] = bVar44; + auVar40._5_3_ = 0; + auVar40._8_4_ = auVar47._8_4_ >> 0x1f; + auVar40._12_4_ = auVar47._12_4_ >> 0x1f; + auVar40 = auVar40 ^ (auVar10 ^ auVar7) & auVar39; + iVar27 = iVar27 + auVar37._0_4_; + iVar28 = iVar28 + auVar37._4_4_; + iVar29 = iVar29 + auVar37._8_4_; + iVar30 = iVar30 + auVar37._12_4_; + iVar31 = iVar31 + auVar40._0_4_; + iVar32 = iVar32 + auVar40._4_4_; + iVar33 = iVar33 + auVar40._8_4_; + iVar34 = iVar34 + auVar40._12_4_; + bVar41 = (byte)((uint)auVar36._0_4_ >> 8); + bVar42 = (byte)((uint)auVar36._4_4_ >> 8); + bVar43 = (byte)((uint)auVar36._8_4_ >> 8); + bVar44 = (byte)((uint)auVar36._12_4_ >> 8); + bVar49 = (byte)((uint)auVar39._0_4_ >> 8); + bVar50 = (byte)((uint)auVar39._4_4_ >> 8); + bVar51 = (byte)((uint)auVar39._8_4_ >> 8); + bVar52 = (byte)((uint)auVar39._12_4_ >> 8); + lVar23 = lVar23 + -8; + *(ulong *)(puVar22 + -4) = + CONCAT17(bVar44 | auVar46[0xd] & ~bVar44, + CONCAT16((byte)auVar36._12_4_ | auVar46[0xc] & ~(byte)auVar36._12_4_, + CONCAT15(bVar43 | auVar46[9] & ~bVar43, + CONCAT14((byte)auVar36._8_4_ | + auVar46[8] & ~(byte)auVar36._8_4_, + CONCAT13(bVar42 | auVar46[5] & ~bVar42, + CONCAT12((byte)auVar36._4_4_ | + auVar46[4] & + ~(byte)auVar36._4_4_, + CONCAT11(bVar41 | auVar46[1] & + ~bVar41, + (byte)auVar36._0_4_ | + auVar46[0] & + ~(byte)auVar36._0_4_)) + ))))); + *(ulong *)puVar22 = + CONCAT17(bVar52 | auVar48[0xd] & ~bVar52, + CONCAT16((byte)auVar39._12_4_ | auVar48[0xc] & ~(byte)auVar39._12_4_, + CONCAT15(bVar51 | auVar48[9] & ~bVar51, + CONCAT14((byte)auVar39._8_4_ | + auVar48[8] & ~(byte)auVar39._8_4_, + CONCAT13(bVar50 | auVar48[5] & ~bVar50, + CONCAT12((byte)auVar39._4_4_ | + auVar48[4] & + ~(byte)auVar39._4_4_, + CONCAT11(bVar49 | auVar48[1] & + ~bVar49, + (byte)auVar39._0_4_ | + auVar48[0] & + ~(byte)auVar39._0_4_)) + ))))); + puVar22 = puVar22 + 8; + puVar26 = puVar26 + 8; + } while (lVar23 != 0); + iVar28 = iVar31 + iVar27 + iVar32 + iVar28 + iVar33 + iVar29 + iVar34 + iVar30; + iVar27 = DAT_005028a4; + while (DAT_005028a4 = iVar27, uVar1 != 0) { +LAB_001732d8: + iVar27 = uVar18 + ((uint)*param_1 - (uint)*puVar19) * iVar2; + if (iVar27 < 0x10000) { + iVar28 = iVar28 - (iVar27 >> 0x1f); + uVar21 = (ushort)iVar27 & ((ushort)(iVar27 >> 0x1f) ^ 0xffff); + } + else { + iVar28 = iVar28 + 1; + uVar21 = 0xffff; + } + *puVar20 = uVar21; + uVar14 = uVar14 - 1; + param_1 = param_1 + 1; + puVar19 = puVar19 + 1; + puVar20 = puVar20 + 1; + iVar27 = DAT_005028a4; + uVar1 = uVar14; + } + if ((0x100 < iVar28) && (DAT_005028a4 = iVar2 + -1, DAT_005028a4 != 0 && 0 < iVar2)) { + mag::Logging::Logging(aLStack_50,2); + MStream::operator<<((MStream *)aLStack_50,"Conversation ratio adjusted to "); + iVar27 = DAT_005028a4; + iVar2 = *(int *)(this + 0x76dc); + uVar24 = MStream::Available((MStream *)aLStack_50); + if (0x18 < uVar24) { + lVar23 = 0; + lVar12 = 0; + uVar18 = iVar2 * iVar27; + do { + lVar16 = lVar12; + cVar3 = "0123456789"[uVar18 % 10]; + lVar23 = lVar23 + 0x100000000; + local_40[lVar16] = cVar3; + bVar13 = 9 < uVar18; + lVar12 = lVar16 + 1; + uVar18 = uVar18 / 10; + } while (bVar13); + if (0 < lVar16) { + cVar4 = *local_40; + *local_40 = cVar3; + local_40[lVar16] = cVar4; + if (2 < lVar16) { + pcVar15 = local_40 + 2; + pcVar17 = local_40 + lVar16 + -1; + do { + cVar3 = pcVar15[-1]; + pcVar15[-1] = *pcVar17; + *pcVar17 = cVar3; + bVar13 = pcVar15 < pcVar17 + -1; + pcVar15 = pcVar15 + 1; + pcVar17 = pcVar17 + -1; + } while (bVar13); + } + } + local_40[lVar23 >> 0x20] = '\0'; + local_40 = local_40 + (lVar23 >> 0x20); + } + MStream::operator<<((MStream *)aLStack_50,"mK/LSB"); + mag::Logging::~Logging(aLStack_50); + iVar27 = DAT_005028a4; + } + goto LAB_0017342c; + } + } + iVar28 = 0; + goto LAB_001732d8; + } +LAB_0017342c: + DAT_005028a4 = iVar27; + if (*(long *)(lVar5 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00173468 (340 bytes) name=EvaluateNetdt + +/* CFunctions::EvaluateNetdt() */ + +void __thiscall CFunctions::EvaluateNetdt(CFunctions *this) + +{ + long lVar1; + uint uVar2; + long lVar3; + uint uVar4; + ulong uVar5; + undefined8 *puVar6; + ulong uVar7; + ulong uVar8; + int iVar9; + uint uVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + undefined8 uVar18; + undefined8 uVar19; + + lVar3 = CSmoother::GetSTDFrame((CSmoother *)(this + 0x1d68)); + if (lVar3 == 0) { + return; + } + uVar4 = *(uint *)(this + 0x76d0); + uVar5 = (ulong)uVar4; + if (*(int *)(this + 0x1200) == 0) { + if (uVar4 == 0) { + uVar10 = 0; + goto LAB_001735a8; + } + if (uVar4 < 8) { + uVar7 = 0; +LAB_00173590: + uVar10 = 0; + } + else { + uVar7 = uVar5 - (uVar4 & 7); + if (uVar7 == 0) goto LAB_00173590; + puVar6 = (undefined8 *)(lVar3 + 8); + iVar9 = 0; + iVar11 = 0; + iVar12 = 0; + iVar13 = 0; + iVar14 = 0; + iVar15 = 0; + iVar16 = 0; + iVar17 = 0; + uVar8 = uVar7; + do { + uVar18 = puVar6[-1]; + uVar19 = *puVar6; + uVar8 = uVar8 - 8; + puVar6 = puVar6 + 2; + iVar9 = iVar9 + (uint)(ushort)uVar18; + iVar11 = iVar11 + (uint)(ushort)((ulong)uVar18 >> 0x10); + iVar12 = iVar12 + (uint)(ushort)((ulong)uVar18 >> 0x20); + iVar13 = iVar13 + (uint)(ushort)((ulong)uVar18 >> 0x30); + iVar14 = iVar14 + (uint)(ushort)uVar19; + iVar15 = iVar15 + (uint)(ushort)((ulong)uVar19 >> 0x10); + iVar16 = iVar16 + (uint)(ushort)((ulong)uVar19 >> 0x20); + iVar17 = iVar17 + (uint)(ushort)((ulong)uVar19 >> 0x30); + } while (uVar8 != 0); + uVar10 = iVar14 + iVar9 + iVar15 + iVar11 + iVar16 + iVar12 + iVar17 + iVar13; + if ((uVar4 & 7) == 0) goto LAB_001735a8; + } + do { + lVar1 = uVar7 * 2; + uVar7 = uVar7 + 1; + uVar10 = uVar10 + *(ushort *)(lVar3 + lVar1); + } while (uVar7 < uVar5); + goto LAB_001735a8; + } + if (uVar4 == 0) { + uVar10 = 0; + } + else { + if (uVar4 < 8) { + uVar7 = 0; +LAB_00173510: + uVar10 = 0; + } + else { + uVar7 = uVar5 - (uVar4 & 7); + if (uVar7 == 0) goto LAB_00173510; + puVar6 = (undefined8 *)(lVar3 + 8); + iVar9 = 0; + iVar11 = 0; + iVar12 = 0; + iVar13 = 0; + iVar14 = 0; + iVar15 = 0; + iVar16 = 0; + iVar17 = 0; + uVar8 = uVar7; + do { + uVar18 = puVar6[-1]; + uVar19 = *puVar6; + uVar8 = uVar8 - 8; + puVar6 = puVar6 + 2; + iVar9 = iVar9 + (uint)(ushort)uVar18; + iVar11 = iVar11 + (uint)(ushort)((ulong)uVar18 >> 0x10); + iVar12 = iVar12 + (uint)(ushort)((ulong)uVar18 >> 0x20); + iVar13 = iVar13 + (uint)(ushort)((ulong)uVar18 >> 0x30); + iVar14 = iVar14 + (uint)(ushort)uVar19; + iVar15 = iVar15 + (uint)(ushort)((ulong)uVar19 >> 0x10); + iVar16 = iVar16 + (uint)(ushort)((ulong)uVar19 >> 0x20); + iVar17 = iVar17 + (uint)(ushort)((ulong)uVar19 >> 0x30); + } while (uVar8 != 0); + uVar10 = iVar14 + iVar9 + iVar15 + iVar11 + iVar16 + iVar12 + iVar17 + iVar13; + if ((uVar4 & 7) == 0) goto LAB_00173528; + } + do { + lVar1 = uVar7 * 2; + uVar7 = uVar7 + 1; + uVar10 = uVar10 + *(ushort *)(lVar3 + lVar1); + } while (uVar7 < uVar5); + } +LAB_00173528: + uVar4 = uVar4 - *(int *)(this + (ulong)*(uint *)(this + 0x15f8) * 4 + 0x140c); + if (uVar4 == 0) { + return; + } +LAB_001735a8: + uVar2 = 0; + if (uVar4 != 0) { + uVar2 = uVar10 / uVar4; + } + *(uint *)(this + 0x1e1c) = uVar2; + return; +} + + +================================================================== + +### FUNC 001735bc (316 bytes) name=UseMask + +/* CFunctions::UseMask(int) */ + +void __thiscall CFunctions::UseMask(CFunctions *this,int param_1) + +{ + pthread_mutex_t *__mutex; + char *pcVar1; + long lVar2; + int iVar3; + void *__dest; + undefined4 *puVar4; + ulong uVar5; + Logging aLStack_50 [24]; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + if ((*(int *)(this + 0xe0) == 0) || (*(int *)(this + 0xec) == 0)) { + iVar3 = pthread_mutex_unlock(__mutex); + puVar4 = (undefined4 *)__errno(iVar3); + iVar3 = 0; + *puVar4 = 0xe4ae0006; + } + else { + if (param_1 == 0) { + *(undefined4 *)(this + 0xe8) = 0; + if (*(void **)(this + 0x150) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x150)); + *(undefined8 *)(this + 0x150) = 0; + } + } + else { + if (*(long *)(this + 0x150) == 0) { + uVar5 = (ulong)*(uint *)(this + 0x76d0); + __dest = operator_new__(uVar5 << 1); + *(void **)(this + 0x150) = __dest; + *(void **)(this + 0x158) = __dest; + } + else { + __dest = *(void **)(this + 0x158); + uVar5 = (ulong)*(uint *)(this + 0x76d0); + } + memcpy(__dest,*(void **)(this + 0x140),uVar5 << 1); + *(undefined4 *)(this + 0xe8) = 1; + } + mag::Logging::Logging(aLStack_50,2); + pcVar1 = "Add Temperature Mask"; + if (*(int *)(this + 0xe8) == 0) { + pcVar1 = "Delete Temperature Mask"; + } + MStream::operator<<((MStream *)aLStack_50,pcVar1); + mag::Logging::~Logging(aLStack_50); + pthread_mutex_unlock(__mutex); + iVar3 = *(int *)(this + 0xe8); + } + if (*(long *)(lVar2 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar3); +} + + +================================================================== + +### FUNC 0017370c (272 bytes) name=GetTemperaturemC + +/* CFunctions::GetTemperaturemC(int*, unsigned int, int, int) */ + +undefined8 __thiscall +CFunctions::GetTemperaturemC(CFunctions *this,int *param_1,uint param_2,int param_3,int param_4) + +{ + undefined4 uVar1; + uint uVar2; + uint uVar3; + undefined8 uVar5; + undefined4 *puVar6; + long lVar7; + long lVar8; + float fVar9; + CFunctions *pCVar4; + + pCVar4 = this; + if (param_4 != 0) { + uVar2 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar4 = (CFunctions *)(ulong)uVar2; + } + if ((param_1 == (int *)0x0) || (*(int *)(this + 0xec) == 0)) { + uVar1 = 0xe4ae0005; + if (*(int *)(this + 0xec) != 0) { + uVar1 = 0xe4ae0001; + } + puVar6 = (undefined4 *)__errno(pCVar4); + *puVar6 = uVar1; + if (param_4 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar5 = 0; + } + else { + uVar2 = *(uint *)(this + 0x76d0); + if (param_2 >> 2 <= *(uint *)(this + 0x76d0)) { + uVar2 = param_2 >> 2; + } + if (uVar2 != 0) { + fVar9 = *(float *)(this + 0xac); + lVar8 = *(long *)(this + 0x140); + lVar7 = 0; + do { + uVar3 = ReviseTemperature(this,*(ushort *)(lVar8 + lVar7 * 2),(uint)lVar7,1); + if ((param_3 != 0) || (*(int *)(this + 0x58) != 0)) { + uVar3 = CorrectTemperature((int)this,fVar9,uVar3); + } + param_1[lVar7] = uVar3; + lVar7 = lVar7 + 1; + } while ((uint)lVar7 < uVar2); + } + if (param_4 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + } + uVar5 = 1; + } + return uVar5; +} + + +================================================================== + +### FUNC 0017381c (592 bytes) name=GetCenterTemperatureSharpness + +/* CFunctions::GetCenterTemperatureSharpness(unsigned int, unsigned int) */ + +uint __thiscall +CFunctions::GetCenterTemperatureSharpness(CFunctions *this,uint param_1,uint param_2) + +{ + ushort *puVar1; + pthread_mutex_t *__mutex; + ulong uVar2; + undefined8 *puVar3; + ushort *puVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + ushort *puVar10; + undefined8 *puVar11; + long lVar12; + uint uVar13; + ulong uVar14; + uint uVar15; + long lVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + uint uVar21; + int iVar22; + int iVar23; + int iVar24; + uint uVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + ushort uVar33; + ushort uVar36; + int iVar34; + ushort uVar37; + undefined8 uVar35; + ushort uVar39; + int iVar38; + int iVar40; + int iVar41; + ushort uVar42; + ushort uVar45; + int iVar43; + ushort uVar46; + undefined8 uVar44; + ushort uVar48; + int iVar47; + int iVar49; + int iVar50; + ushort uVar53; + int iVar51; + ushort uVar54; + undefined8 uVar52; + ushort uVar56; + int iVar55; + int iVar57; + int iVar58; + ushort uVar61; + int iVar59; + ushort uVar62; + undefined8 uVar60; + ushort uVar64; + int iVar63; + int iVar65; + int iVar66; + ushort uVar68; + ushort uVar69; + undefined8 uVar67; + ushort uVar70; + ushort uVar72; + ushort uVar73; + undefined8 uVar71; + ushort uVar74; + undefined8 uVar75; + undefined8 uVar76; + + if (param_1 < 0x10) { + uVar25 = 0x10; + } + else { + uVar25 = *(uint *)(this + 0x1da8) >> 1; + if (param_1 <= *(uint *)(this + 0x1da8) >> 1) { + uVar25 = param_1; + } + } + uVar15 = *(uint *)(this + 0x1dac); + if (param_2 < 9) { + uVar21 = 9; + } + else { + uVar21 = uVar15 >> 1; + if (param_2 <= uVar15 >> 1) { + uVar21 = param_2; + } + } + iVar6 = *(int *)(this + 0x1da8); + __mutex = (pthread_mutex_t *)(this + 0xf0); + pthread_mutex_lock(__mutex); + if (*(int *)(this + 0xec) != 0) { + uVar7 = uVar15 + uVar21 >> 1; + uVar15 = uVar15 - uVar21 >> 1; + if (uVar15 < uVar7) { + uVar8 = iVar6 - uVar25 >> 1; + uVar25 = iVar6 + uVar25 >> 1; + iVar6 = *(int *)(this + 0x1da8); + iVar9 = uVar25 - uVar8; + uVar14 = (ulong)uVar15; + uVar25 = (uVar25 - 1) - uVar8; + uVar2 = (ulong)uVar25 + 1; + uVar5 = uVar25 + 1 & 7; + lVar16 = uVar2 - uVar5; + uVar21 = 0; + uVar25 = 0; + uVar15 = iVar6 * (uVar15 - 1); + do { + if (iVar9 != 0) { + puVar10 = (ushort *) + (*(long *)(this + 0x140) + (ulong)(uint)(iVar6 * ((int)uVar14 + -1)) * 2 + + (ulong)(uVar8 - 1) * 2); + iVar17 = iVar9; + if ((7 < uVar2) && (lVar16 != 0)) { + iVar27 = 0; + iVar28 = 0; + iVar23 = 0; + iVar24 = 0; + puVar11 = (undefined8 *) + (*(long *)(this + 0x140) + (ulong)(uVar8 - 1) * 2 + (ulong)uVar15 * 2); + puVar10 = puVar10 + lVar16; + iVar17 = 0; + iVar18 = 0; + iVar19 = 0; + iVar20 = 0; + iVar26 = 0; + iVar22 = 0; + iVar29 = 0; + iVar30 = 0; + iVar31 = 0; + iVar32 = 0; + lVar12 = lVar16; + do { + uVar35 = *puVar11; + uVar44 = puVar11[1]; + uVar52 = *(undefined8 *)((long)puVar11 + 4); + uVar60 = *(undefined8 *)((long)puVar11 + 0xc); + puVar3 = (undefined8 *)((long)puVar11 + (ulong)(uint)(iVar6 << 1) * 2); + uVar67 = *puVar3; + uVar71 = puVar3[1]; + uVar75 = *(undefined8 *)((long)puVar3 + 4); + uVar76 = *(undefined8 *)((long)puVar3 + 0xc); + uVar53 = (ushort)((ulong)uVar52 >> 0x10); + uVar54 = (ushort)((ulong)uVar52 >> 0x20); + uVar56 = (ushort)((ulong)uVar52 >> 0x30); + uVar33 = (ushort)uVar35; + uVar36 = (ushort)((ulong)uVar35 >> 0x10); + uVar37 = (ushort)((ulong)uVar35 >> 0x20); + uVar39 = (ushort)((ulong)uVar35 >> 0x30); + uVar61 = (ushort)((ulong)uVar60 >> 0x10); + uVar62 = (ushort)((ulong)uVar60 >> 0x20); + uVar64 = (ushort)((ulong)uVar60 >> 0x30); + uVar42 = (ushort)uVar44; + uVar45 = (ushort)((ulong)uVar44 >> 0x10); + uVar46 = (ushort)((ulong)uVar44 >> 0x20); + uVar48 = (ushort)((ulong)uVar44 >> 0x30); + iVar51 = MP_INT_ABS((uint)uVar33 - (uint)(ushort)uVar52); + iVar55 = MP_INT_ABS((uint)uVar36 - (uint)uVar53); + iVar57 = MP_INT_ABS((uint)uVar37 - (uint)uVar54); + iVar58 = MP_INT_ABS((uint)uVar39 - (uint)uVar56); + iVar59 = MP_INT_ABS((uint)uVar42 - (uint)(ushort)uVar60); + iVar63 = MP_INT_ABS((uint)uVar45 - (uint)uVar61); + iVar65 = MP_INT_ABS((uint)uVar46 - (uint)uVar62); + iVar66 = MP_INT_ABS((uint)uVar48 - (uint)uVar64); + uVar68 = (ushort)((ulong)uVar67 >> 0x10); + uVar69 = (ushort)((ulong)uVar67 >> 0x20); + uVar70 = (ushort)((ulong)uVar67 >> 0x30); + uVar72 = (ushort)((ulong)uVar71 >> 0x10); + uVar73 = (ushort)((ulong)uVar71 >> 0x20); + uVar74 = (ushort)((ulong)uVar71 >> 0x30); + iVar34 = MP_INT_ABS((uint)uVar33 - (uint)(ushort)uVar67); + iVar38 = MP_INT_ABS((uint)uVar36 - (uint)uVar68); + iVar40 = MP_INT_ABS((uint)uVar37 - (uint)uVar69); + iVar41 = MP_INT_ABS((uint)uVar39 - (uint)uVar70); + iVar43 = MP_INT_ABS((uint)uVar42 - (uint)(ushort)uVar71); + iVar47 = MP_INT_ABS((uint)uVar45 - (uint)uVar72); + iVar49 = MP_INT_ABS((uint)uVar46 - (uint)uVar73); + iVar50 = MP_INT_ABS((uint)uVar48 - (uint)uVar74); + lVar12 = lVar12 + -8; + uVar25 = uVar25 + ((uint)(ushort)uVar52 + (uint)uVar33 + (uint)(ushort)uVar67 + + (uint)(ushort)uVar75 >> 2); + iVar26 = iVar26 + ((uint)uVar53 + (uint)uVar36 + (uint)uVar68 + + (uint)(ushort)((ulong)uVar75 >> 0x10) >> 2); + iVar27 = iVar27 + ((uint)uVar54 + (uint)uVar37 + (uint)uVar69 + + (uint)(ushort)((ulong)uVar75 >> 0x20) >> 2); + iVar28 = iVar28 + ((uint)uVar56 + (uint)uVar39 + (uint)uVar70 + + (uint)(ushort)((ulong)uVar75 >> 0x30) >> 2); + iVar29 = iVar29 + ((uint)(ushort)uVar60 + (uint)uVar42 + (uint)(ushort)uVar71 + + (uint)(ushort)uVar76 >> 2); + iVar30 = iVar30 + ((uint)uVar61 + (uint)uVar45 + (uint)uVar72 + + (uint)(ushort)((ulong)uVar76 >> 0x10) >> 2); + iVar31 = iVar31 + ((uint)uVar62 + (uint)uVar46 + (uint)uVar73 + + (uint)(ushort)((ulong)uVar76 >> 0x20) >> 2); + iVar32 = iVar32 + ((uint)uVar64 + (uint)uVar48 + (uint)uVar74 + + (uint)(ushort)((ulong)uVar76 >> 0x30) >> 2); + uVar21 = uVar21 + ((uint)(iVar34 + iVar51) >> 1); + iVar22 = iVar22 + ((uint)(iVar38 + iVar55) >> 1); + iVar23 = iVar23 + ((uint)(iVar40 + iVar57) >> 1); + iVar24 = iVar24 + ((uint)(iVar41 + iVar58) >> 1); + iVar17 = iVar17 + ((uint)(iVar43 + iVar59) >> 1); + iVar18 = iVar18 + ((uint)(iVar47 + iVar63) >> 1); + iVar19 = iVar19 + ((uint)(iVar49 + iVar65) >> 1); + iVar20 = iVar20 + ((uint)(iVar50 + iVar66) >> 1); + puVar11 = puVar11 + 2; + } while (lVar12 != 0); + uVar25 = iVar29 + uVar25 + iVar30 + iVar26 + iVar31 + iVar27 + iVar32 + iVar28; + uVar21 = iVar17 + uVar21 + iVar18 + iVar22 + iVar19 + iVar23 + iVar20 + iVar24; + iVar17 = iVar9 - (int)lVar16; + if (uVar5 == 0) goto LAB_00173a20; + } + do { + uVar33 = *puVar10; + puVar1 = puVar10 + 2; + puVar4 = puVar10 + (uint)(iVar6 << 1); + iVar19 = (uint)uVar33 - (uint)*puVar1; + iVar18 = -iVar19; + if (-1 < iVar19) { + iVar18 = iVar19; + } + uVar13 = (uint)*puVar4; + iVar20 = uVar33 - uVar13; + iVar19 = -iVar20; + if (-1 < iVar20) { + iVar19 = iVar20; + } + puVar10 = puVar10 + 1; + uVar25 = uVar25 + ((uint)*puVar1 + (uint)uVar33 + uVar13 + (uint)puVar4[2] >> 2); + iVar17 = iVar17 + -1; + uVar21 = uVar21 + ((uint)(iVar19 + iVar18) >> 1); + } while (iVar17 != 0); + } +LAB_00173a20: + uVar14 = uVar14 + 1; + uVar15 = uVar15 + iVar6; + if (uVar14 == uVar7) { + pthread_mutex_unlock(__mutex); + uVar15 = uVar25 >> 0x10; + if (uVar15 == 0) { + return uVar25; + } + if (uVar15 == 0) { + return 0; + } + return uVar21 / uVar15; + } + } while( true ); + } + } + pthread_mutex_unlock(__mutex); + return 0; +} + + +================================================================== + +### FUNC 00173a6c (592 bytes) name=CalcSD + +/* CFunctions::CalcSD(int, int) */ + +int __thiscall CFunctions::CalcSD(CFunctions *this,int param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + ulong uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + long lVar8; + ulong uVar9; + ulong uVar10; + ushort *puVar11; + uint uVar12; + int iVar13; + ushort *puVar14; + long lVar15; + ulong uVar16; + uint uVar17; + long lVar18; + ulong uVar19; + uint uVar20; + long lVar21; + long lVar22; + double dVar23; + long lVar24; + double __x; + long lVar25; + long lVar26; + long lVar27; + long lVar28; + + if (param_1 < 0x10) { + uVar20 = 0x10; + } + else { + uVar20 = *(uint *)(this + 0x1da8); + if ((uint)param_1 <= *(uint *)(this + 0x1da8)) { + uVar20 = param_1; + } + } + uVar3 = *(uint *)(this + 0x1dac); + iVar6 = *(int *)(this + 0x1da8); + __mutex = (pthread_mutex_t *)(this + 0xf0); + uVar17 = uVar3; + if ((uint)param_2 <= uVar3) { + uVar17 = param_2; + } + uVar4 = 9; + if (8 < param_2) { + uVar4 = uVar17; + } + pthread_mutex_lock(__mutex); + if (*(int *)(this + 0xec) == 0) { + pthread_mutex_unlock(__mutex); + iVar6 = 0; + } + else { + uVar17 = uVar3 - uVar4 >> 1; + uVar3 = uVar3 + uVar4 >> 1; + uVar4 = iVar6 - uVar20 >> 1; + iVar5 = uVar3 - uVar17; + uVar20 = iVar6 + uVar20 >> 1; + if (uVar3 < uVar17 || iVar5 == 0) { + lVar8 = 0; + lVar21 = 0; + } + else { + iVar6 = *(int *)(this + 0x1da8); + uVar7 = (uVar20 - 1) - uVar4; + uVar1 = (ulong)uVar7 + 1; + uVar2 = uVar7 + 1 & 3; + lVar18 = uVar1 - uVar2; + lVar21 = 0; + lVar8 = 0; + uVar7 = iVar6 * uVar17; + do { + if (uVar4 < uVar20) { + puVar11 = (ushort *) + (*(long *)(this + 0x140) + (ulong)(iVar6 * uVar17) * 2 + (ulong)uVar4 * 2); + uVar12 = uVar4; + if ((3 < uVar1) && (lVar18 != 0)) { + lVar26 = 0; + lVar25 = 0; + puVar14 = (ushort *)(*(long *)(this + 0x140) + (ulong)uVar4 * 2 + 4 + (ulong)uVar7 * 2); + puVar11 = puVar11 + lVar18; + lVar22 = 0; + lVar24 = 0; + lVar27 = 0; + lVar28 = 0; + lVar15 = lVar18; + do { + uVar9 = (ulong)puVar14[-2]; + uVar19 = (ulong)puVar14[-1]; + uVar16 = (ulong)*puVar14; + lVar15 = lVar15 + -4; + uVar10 = (ulong)puVar14[1]; + lVar8 = lVar8 + uVar9; + lVar26 = lVar26 + uVar19; + lVar27 = lVar27 + uVar16; + lVar28 = lVar28 + uVar10; + lVar21 = uVar9 * uVar9 + lVar21; + lVar25 = uVar19 * uVar19 + lVar25; + lVar22 = uVar16 * uVar16 + lVar22; + lVar24 = uVar10 * uVar10 + lVar24; + puVar14 = puVar14 + 4; + } while (lVar15 != 0); + lVar8 = lVar27 + lVar8 + lVar28 + lVar26; + lVar21 = lVar22 + lVar21 + lVar24 + lVar25; + uVar12 = uVar4 + (int)lVar18; + if (uVar2 == 0) goto LAB_00173c2c; + } + iVar13 = uVar20 - uVar12; + do { + uVar9 = (ulong)*puVar11; + iVar13 = iVar13 + -1; + lVar8 = lVar8 + uVar9; + lVar21 = lVar21 + uVar9 * uVar9; + puVar11 = puVar11 + 1; + } while (iVar13 != 0); + } +LAB_00173c2c: + uVar17 = uVar17 + 1; + uVar7 = uVar7 + iVar6; + } while ((int)uVar17 < (int)uVar3); + } + uVar20 = (uVar20 - uVar4) * iVar5; + pthread_mutex_unlock(__mutex); + __x = ((double)lVar21 - ((double)lVar8 * (double)lVar8) / (double)uVar20) / (double)(uVar20 - 1) + ; + dVar23 = SQRT(__x); + if (NAN(dVar23)) { + dVar23 = sqrt(__x); + } + iVar6 = (int)dVar23; + } + return iVar6; +} + + +================================================================== + +### FUNC 00173cbc (928 bytes) name=LocalMap7x7 + +/* CFunctions::LocalMap7x7(int*, unsigned short const*, unsigned int) */ + +void __thiscall CFunctions::LocalMap7x7(CFunctions *this,int *param_1,ushort *param_2,uint param_3) + +{ + ushort *puVar1; + uint uVar2; + uint uVar3; + ushort uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + ushort *puVar11; + uint uVar12; + uint uVar13; + int *piVar14; + uint uVar15; + int *piVar16; + uint uVar17; + uint uVar18; + ulong uVar19; + uint uVar20; + uint uVar21; + uint uVar22; + uint uVar23; + uint uVar24; + uint uVar25; + + uVar4 = *param_2; + uVar5 = (uint)uVar4; + if ((uint)uVar4 <= (uint)param_2[1]) { + uVar5 = (uint)param_2[1]; + } + uVar15 = (uint)param_2[2]; + uVar12 = uVar15; + if ((uint)uVar4 <= (uint)param_2[2]) { + uVar12 = (uint)uVar4; + } + uVar19 = (ulong)(*(int *)(this + 0x1da8) * 2 - 8); + uVar13 = uVar15; + uVar3 = (uint)uVar4; + if (uVar15 <= uVar5) { + uVar13 = uVar5; + uVar3 = uVar12; + } + puVar1 = param_2 + uVar19 + 8; + uVar12 = (uint)param_2[4]; + uVar5 = uVar12; + if (uVar3 <= param_2[4]) { + uVar5 = uVar3; + } + uVar17 = uVar12; + if (uVar12 <= uVar13) { + uVar17 = uVar13; + uVar3 = uVar5; + } + uVar13 = (uint)param_2[6]; + uVar5 = uVar13; + if (uVar3 <= param_2[6]) { + uVar5 = uVar3; + } + uVar18 = uVar13; + if (uVar13 <= uVar17) { + uVar18 = uVar17; + uVar3 = uVar5; + } + uVar17 = (uint)*puVar1; + uVar5 = uVar17; + if (uVar3 <= *puVar1) { + uVar5 = uVar3; + } + uVar20 = uVar17; + if (uVar17 <= uVar18) { + uVar20 = uVar18; + uVar3 = uVar5; + } + uVar18 = (uint)puVar1[2]; + uVar5 = uVar18; + if (uVar3 <= puVar1[2]) { + uVar5 = uVar3; + } + uVar21 = uVar18; + if (uVar18 <= uVar20) { + uVar21 = uVar20; + uVar3 = uVar5; + } + puVar11 = puVar1 + uVar19 + 8; + uVar20 = (uint)puVar1[4]; + uVar5 = uVar20; + if (uVar3 <= puVar1[4]) { + uVar5 = uVar3; + } + uVar22 = uVar20; + if (uVar20 <= uVar21) { + uVar22 = uVar21; + uVar3 = uVar5; + } + uVar21 = (uint)puVar1[6]; + uVar5 = uVar21; + if (uVar3 <= puVar1[6]) { + uVar5 = uVar3; + } + uVar23 = uVar21; + if (uVar21 <= uVar22) { + uVar23 = uVar22; + uVar3 = uVar5; + } + uVar22 = (uint)*puVar11; + uVar5 = uVar22; + if (uVar3 <= *puVar11) { + uVar5 = uVar3; + } + uVar7 = uVar22; + if (uVar22 <= uVar23) { + uVar7 = uVar23; + uVar3 = uVar5; + } + uVar23 = (uint)puVar1[uVar19 + 10]; + uVar5 = uVar23; + if (uVar3 <= puVar1[uVar19 + 10]) { + uVar5 = uVar3; + } + uVar8 = uVar23; + if (uVar23 <= uVar7) { + uVar8 = uVar7; + uVar3 = uVar5; + } + uVar7 = (uint)puVar1[uVar19 + 0xc]; + uVar5 = uVar7; + if (uVar3 <= puVar1[uVar19 + 0xc]) { + uVar5 = uVar3; + } + uVar9 = uVar7; + if (uVar7 <= uVar8) { + uVar9 = uVar8; + uVar3 = uVar5; + } + uVar8 = (uint)puVar1[uVar19 + 0xe]; + uVar5 = uVar8; + if (uVar3 <= puVar1[uVar19 + 0xe]) { + uVar5 = uVar3; + } + uVar10 = uVar8; + if (uVar8 <= uVar9) { + uVar10 = uVar9; + uVar3 = uVar5; + } + uVar9 = (uint)puVar11[uVar19 + 8]; + uVar5 = uVar9; + if (uVar3 <= puVar11[uVar19 + 8]) { + uVar5 = uVar3; + } + uVar24 = uVar9; + if (uVar9 <= uVar10) { + uVar24 = uVar10; + uVar3 = uVar5; + } + uVar10 = (uint)puVar11[uVar19 + 10]; + uVar5 = uVar10; + if (uVar3 <= puVar11[uVar19 + 10]) { + uVar5 = uVar3; + } + uVar25 = uVar10; + if (uVar10 <= uVar24) { + uVar25 = uVar24; + uVar3 = uVar5; + } + uVar24 = (uint)puVar11[uVar19 + 0xc]; + uVar5 = uVar24; + if (uVar3 <= puVar11[uVar19 + 0xc]) { + uVar5 = uVar3; + } + uVar2 = uVar24; + if (uVar24 <= uVar25) { + uVar2 = uVar25; + uVar3 = uVar5; + } + uVar25 = (uint)puVar11[uVar19 + 0xe]; + uVar5 = uVar25; + if (uVar3 <= puVar11[uVar19 + 0xe]) { + uVar5 = uVar3; + } + uVar6 = uVar25; + if (uVar25 <= uVar2) { + uVar3 = uVar5; + uVar6 = uVar2; + } + if (param_3 <= (uVar6 - uVar3) * 0x20) { + uVar12 = uVar4 + uVar15 + uVar12 + uVar13 + uVar17 + uVar18 + uVar20 + uVar21 + uVar22 + uVar23 + + uVar7 + uVar8 + uVar9 + uVar10 + uVar24 + uVar25 >> 4; + uVar5 = uVar6 - uVar12; + if (uVar6 - uVar12 <= param_3) { + uVar5 = param_3; + } + uVar15 = uVar12 - uVar3; + if (uVar12 - uVar3 <= uVar5) { + uVar15 = uVar5; + } + uVar5 = 0; + if (uVar15 != 0) { + uVar5 = 0x8000 / uVar15; + } + *param_1 = *param_1 + (*param_2 - uVar12) * uVar5; + param_1[2] = param_1[2] + (param_2[2] - uVar12) * uVar5; + param_1[4] = param_1[4] + (param_2[4] - uVar12) * uVar5; + param_1[6] = param_1[6] + (param_2[6] - uVar12) * uVar5; + uVar15 = *(int *)(this + 0x1da8) * 2 - 8; + puVar1 = param_2 + (ulong)uVar15 + 8; + piVar16 = param_1 + (ulong)uVar15 + 8; + *piVar16 = *piVar16 + (*puVar1 - uVar12) * uVar5; + param_1[(ulong)uVar15 + 10] = param_1[(ulong)uVar15 + 10] + (puVar1[2] - uVar12) * uVar5; + param_1[(ulong)uVar15 + 0xc] = param_1[(ulong)uVar15 + 0xc] + (puVar1[4] - uVar12) * uVar5; + param_1[(ulong)uVar15 + 0xe] = param_1[(ulong)uVar15 + 0xe] + (puVar1[6] - uVar12) * uVar5; + uVar15 = *(int *)(this + 0x1da8) * 2 - 8; + puVar11 = puVar1 + (ulong)uVar15 + 8; + piVar14 = piVar16 + (ulong)uVar15 + 8; + *piVar14 = *piVar14 + (*puVar11 - uVar12) * uVar5; + piVar16[(ulong)uVar15 + 10] = + piVar16[(ulong)uVar15 + 10] + (puVar1[(ulong)uVar15 + 10] - uVar12) * uVar5; + piVar16[(ulong)uVar15 + 0xc] = + piVar16[(ulong)uVar15 + 0xc] + (puVar1[(ulong)uVar15 + 0xc] - uVar12) * uVar5; + piVar16[(ulong)uVar15 + 0xe] = + piVar16[(ulong)uVar15 + 0xe] + (puVar1[(ulong)uVar15 + 0xe] - uVar12) * uVar5; + uVar15 = *(int *)(this + 0x1da8) * 2 - 8; + piVar14[(ulong)uVar15 + 8] = + piVar14[(ulong)uVar15 + 8] + (puVar11[(ulong)uVar15 + 8] - uVar12) * uVar5; + piVar14[(ulong)uVar15 + 10] = + piVar14[(ulong)uVar15 + 10] + (puVar11[(ulong)uVar15 + 10] - uVar12) * uVar5; + piVar14[(ulong)uVar15 + 0xc] = + piVar14[(ulong)uVar15 + 0xc] + (puVar11[(ulong)uVar15 + 0xc] - uVar12) * uVar5; + piVar14[(ulong)uVar15 + 0xe] = + piVar14[(ulong)uVar15 + 0xe] + (puVar11[(ulong)uVar15 + 0xe] - uVar12) * uVar5; + } + return; +} + + +================================================================== + +### FUNC 0017405c (572 bytes) name=LocalMap7x7_Simple + +/* CFunctions::LocalMap7x7_Simple(int*, unsigned short const*, unsigned int) */ + +void __thiscall +CFunctions::LocalMap7x7_Simple(CFunctions *this,int *param_1,ushort *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + ushort uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + ushort *puVar9; + uint uVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + ulong uVar17; + uint uVar18; + uint uVar19; + uint uVar20; + ushort *puVar21; + uint uVar22; + uint uVar23; + uint uVar24; + + uVar3 = *param_2; + uVar4 = (uint)uVar3; + if ((uint)uVar3 <= (uint)param_2[1]) { + uVar4 = (uint)param_2[1]; + } + uVar17 = (ulong)(*(int *)(this + 0x1da8) * 2 - 8); + uVar14 = (uint)param_2[2]; + uVar12 = uVar14; + if ((uint)uVar3 <= (uint)param_2[2]) { + uVar12 = (uint)uVar3; + } + uVar13 = uVar14; + uVar2 = (uint)uVar3; + if (uVar14 <= uVar4) { + uVar13 = uVar4; + uVar2 = uVar12; + } + puVar21 = param_2 + uVar17 + 8; + uVar12 = (uint)param_2[4]; + uVar4 = uVar12; + if (uVar2 <= param_2[4]) { + uVar4 = uVar2; + } + uVar15 = uVar12; + if (uVar12 <= uVar13) { + uVar15 = uVar13; + uVar2 = uVar4; + } + uVar13 = (uint)param_2[6]; + uVar4 = uVar13; + if (uVar2 <= param_2[6]) { + uVar4 = uVar2; + } + uVar16 = uVar13; + if (uVar13 <= uVar15) { + uVar16 = uVar15; + uVar2 = uVar4; + } + uVar15 = (uint)*puVar21; + uVar4 = uVar15; + if (uVar2 <= *puVar21) { + uVar4 = uVar2; + } + uVar18 = uVar15; + if (uVar15 <= uVar16) { + uVar18 = uVar16; + uVar2 = uVar4; + } + uVar16 = (uint)param_2[uVar17 + 10]; + uVar4 = uVar16; + if (uVar2 <= param_2[uVar17 + 10]) { + uVar4 = uVar2; + } + uVar19 = uVar16; + if (uVar16 <= uVar18) { + uVar19 = uVar18; + uVar2 = uVar4; + } + puVar9 = puVar21 + uVar17 + 8; + uVar18 = (uint)param_2[uVar17 + 0xc]; + uVar4 = uVar18; + if (uVar2 <= param_2[uVar17 + 0xc]) { + uVar4 = uVar2; + } + uVar20 = uVar18; + if (uVar18 <= uVar19) { + uVar20 = uVar19; + uVar2 = uVar4; + } + uVar19 = (uint)param_2[uVar17 + 0xe]; + uVar4 = uVar19; + if (uVar2 <= param_2[uVar17 + 0xe]) { + uVar4 = uVar2; + } + uVar22 = uVar19; + if (uVar19 <= uVar20) { + uVar22 = uVar20; + uVar2 = uVar4; + } + uVar20 = (uint)*puVar9; + uVar4 = uVar20; + if (uVar2 <= *puVar9) { + uVar4 = uVar2; + } + uVar23 = uVar20; + if (uVar20 <= uVar22) { + uVar23 = uVar22; + uVar2 = uVar4; + } + uVar22 = (uint)puVar21[uVar17 + 10]; + uVar4 = uVar22; + if (uVar2 <= puVar21[uVar17 + 10]) { + uVar4 = uVar2; + } + uVar6 = uVar22; + if (uVar22 <= uVar23) { + uVar6 = uVar23; + uVar2 = uVar4; + } + uVar23 = (uint)puVar21[uVar17 + 0xc]; + uVar4 = uVar23; + if (uVar2 <= puVar21[uVar17 + 0xc]) { + uVar4 = uVar2; + } + uVar7 = uVar23; + if (uVar23 <= uVar6) { + uVar7 = uVar6; + uVar2 = uVar4; + } + uVar6 = (uint)puVar21[uVar17 + 0xe]; + uVar4 = uVar6; + if (uVar2 <= puVar21[uVar17 + 0xe]) { + uVar4 = uVar2; + } + uVar8 = uVar6; + if (uVar6 <= uVar7) { + uVar8 = uVar7; + uVar2 = uVar4; + } + uVar7 = (uint)puVar9[uVar17 + 8]; + uVar4 = uVar7; + if (uVar2 <= puVar9[uVar17 + 8]) { + uVar4 = uVar2; + } + uVar10 = uVar7; + if (uVar7 <= uVar8) { + uVar10 = uVar8; + uVar2 = uVar4; + } + uVar8 = (uint)puVar9[uVar17 + 10]; + uVar4 = uVar8; + if (uVar2 <= puVar9[uVar17 + 10]) { + uVar4 = uVar2; + } + uVar24 = uVar8; + if (uVar8 <= uVar10) { + uVar24 = uVar10; + uVar2 = uVar4; + } + uVar10 = (uint)puVar9[uVar17 + 0xc]; + uVar4 = uVar10; + if (uVar2 <= puVar9[uVar17 + 0xc]) { + uVar4 = uVar2; + } + uVar1 = uVar10; + if (uVar10 <= uVar24) { + uVar1 = uVar24; + uVar2 = uVar4; + } + uVar24 = (uint)puVar9[uVar17 + 0xe]; + uVar4 = uVar24; + if (uVar2 <= puVar9[uVar17 + 0xe]) { + uVar4 = uVar2; + } + uVar5 = uVar24; + if (uVar24 <= uVar1) { + uVar2 = uVar4; + uVar5 = uVar1; + } + if ((uVar5 - uVar2) * 0x20 < param_3) { + iVar11 = 0; + } + else { + uVar12 = uVar3 + uVar14 + uVar12 + uVar13 + uVar15 + uVar16 + uVar18 + uVar19 + uVar20 + uVar22 + + uVar23 + uVar6 + uVar7 + uVar8 + uVar10 + uVar24 >> 4; + uVar4 = uVar5 - uVar12; + if (uVar5 - uVar12 <= param_3) { + uVar4 = param_3; + } + uVar14 = uVar12 - uVar2; + if (uVar12 - uVar2 <= uVar4) { + uVar14 = uVar4; + } + uVar4 = 0; + if (uVar14 != 0) { + uVar4 = 0x8000 / uVar14; + } + iVar11 = (param_2[(ulong)(uint)(*(int *)(this + 0x1da8) * 3) + 3] - uVar12) * uVar4; + } + *param_1 = iVar11; + return; +} + + +================================================================== + +### FUNC 00174298 (380 bytes) name=ApplyNewEffect + +/* CFunctions::ApplyNewEffect(int) */ + +CFunctions * __thiscall CFunctions::ApplyNewEffect(CFunctions *this,int param_1) + +{ + uint uVar1; + uint uVar2; + CFunctions *pCVar3; + + pCVar3 = this; + if (param_1 != 0) { + uVar2 = pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + pCVar3 = (CFunctions *)(ulong)uVar2; + } + if (*(int *)(this + 0xec) != 0) { + pCVar3 = (CFunctions *)GrayEnlarge(this); + if (((*(int *)(this + 0x1e24) != 0) && (*(int *)(this + 0x2c) != 0)) && + ((*(int *)(this + 0x28) == 0 || (*(int *)(this + 0x10) != 0)))) { + uVar2 = *(int *)(this + 0x2c) << 3; + if (*(int *)(this + 0x60) == 0) { + pCVar3 = (CFunctions *)FilterDetailEnhancement(this,uVar2); + } + else { + pCVar3 = (CFunctions *)FilterDetailEnhancement_Simple(this,uVar2); + } + } + uVar2 = *(uint *)(this + 0x1db0); + uVar1 = *(uint *)(this + 0x1da8); + if ((uVar2 == uVar1) && (*(int *)(this + 0x1db4) == *(int *)(this + 0x1dac))) { + pCVar3 = memcpy(*(void **)(this + 0xd8),*(void **)(this + 0x170), + (ulong)*(uint *)(this + 0x76d0)); + } + else if ((uVar2 == uVar1 * 2) && (*(int *)(this + 0x1db4) == *(int *)(this + 0x1dac) * 2)) { + pCVar3 = (CFunctions *)ResizeBMP_2X(this); + } + else if ((uVar2 << 1 == uVar1 * 3) && + (*(int *)(this + 0x1db4) << 1 == *(int *)(this + 0x1dac) * 3)) { + pCVar3 = (CFunctions *)ResizeBMP_2to3(this); + } + else if ((uVar2 * 3 == uVar1 * 5) && + (*(int *)(this + 0x1db4) * 3 == *(int *)(this + 0x1dac) * 5)) { + pCVar3 = (CFunctions *)ResizeBMP_3to5(this); + } + else if ((uVar1 < uVar2) && (*(uint *)(this + 0x1dac) < *(uint *)(this + 0x1db4))) { + pCVar3 = (CFunctions *)ResizeBMP(this); + } + } + if (param_1 == 0) { + return pCVar3; + } + uVar2 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return (CFunctions *)(ulong)uVar2; +} + + +================================================================== + +### FUNC 00174414 (192 bytes) name=SetEX + +/* CFunctions::SetEX(EX, int, int) */ + +int __thiscall CFunctions::SetEX(CFunctions *this,uint param_2,int param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + if (param_2 - 1 < 4) { + uVar5 = *(uint *)(this + 0x1da8); + uVar4 = *(uint *)(this + 0x1dac); + *(uint *)(this + 0x1dd0) = param_2; + uVar1 = param_3 - (uVar5 >> (ulong)(param_2 + 1 & 0x1f)); + uVar2 = param_4 - (uVar4 >> (ulong)(param_2 + 1 & 0x1f)); + uVar1 = uVar1 & ((int)uVar1 >> 0x1f ^ 0xffffffffU); + uVar5 = (uVar5 - (uVar5 >> (ulong)(param_2 & 0x1f))) - 2; + uVar2 = uVar2 & ((int)uVar2 >> 0x1f ^ 0xffffffffU); + uVar4 = (uVar4 - (uVar4 >> (ulong)(param_2 & 0x1f))) - 1; + if (uVar1 <= uVar5) { + uVar5 = uVar1; + } + uVar5 = uVar5 & 0xfffffffe; + if (uVar2 <= uVar4) { + uVar4 = uVar2; + } + } + else { + uVar5 = 0; + *(undefined4 *)(this + 0x1dd0) = 0; + uVar4 = 0; + } + *(uint *)(this + 0x1dd4) = uVar5; + *(uint *)(this + 0x1dd8) = uVar4; + iVar3 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return iVar3; +} + + +================================================================== + +### FUNC 001744d4 (152 bytes) name=SetLensParameter + +/* CFunctions::SetLensParameter(void const*, unsigned int) */ + +undefined4 __thiscall CFunctions::SetLensParameter(CFunctions *this,void *param_1,uint param_2) + +{ + undefined4 uVar1; + + if (param_2 == 0x21c) { + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + if (*(int *)((long)param_1 + 0x3c) - 1U < 0x19) { + memcpy(this + 0x1640,param_1,0x21c); + *(undefined4 *)(this + 0x163c) = 1; + *(undefined4 *)(this + 0x1638) = 1; + *(undefined4 *)(this + 0x70) = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + uVar1 = *(undefined4 *)(this + 0x1638); + } + else { + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### FUNC 0017456c (784 bytes) name=SetInnertempUnit + +/* CFunctions::SetInnertempUnit(unsigned int, int) */ + +undefined8 __thiscall CFunctions::SetInnertempUnit(CFunctions *this,uint param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + + if ((*(int *)(this + 0x1638) != 0) && + (iVar1 = strcmp((char *)(this + 0x1640),"Shutterless Default"), iVar1 == 0)) { + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + *(uint *)(this + 0x1714) = param_1; + *(int *)(this + 0x1718) = param_2; + goto switchD_00174624_caseD_2; + } + if ((param_1 == 0) || ((param_1 - 1 & param_1) != 0)) { + return 0; + } + pthread_mutex_lock((pthread_mutex_t *)(this + 0xf0)); + *(uint *)(this + 0x76dc) = param_1; + *(int *)(this + 0x76e0) = param_2; + if ((int)param_1 < 0x8000) { + if ((int)param_1 < 0x80) { + uVar2 = 0; + switch(param_1 - 1) { + case 0: + break; + case 1: + uVar2 = 1; + break; + case 2: + case 4: + case 5: + case 6: + case 8: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + case 0x2f: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + goto switchD_00174624_caseD_2; + case 3: + uVar2 = 2; + break; + case 7: + uVar2 = 3; + break; + case 0xf: + uVar2 = 4; + break; + case 0x1f: + uVar2 = 5; + break; + case 0x3f: + uVar2 = 6; + break; + default: + if (param_1 != 0x80000000) goto switchD_00174624_caseD_2; + uVar2 = 0x1f; + } + } + else if ((int)param_1 < 0x800) { + if ((int)param_1 < 0x200) { + if (param_1 == 0x80) { + uVar2 = 7; + } + else { + if (param_1 != 0x100) goto switchD_00174624_caseD_2; + uVar2 = 8; + } + } + else if (param_1 == 0x200) { + uVar2 = 9; + } + else { + if (param_1 != 0x400) goto switchD_00174624_caseD_2; + uVar2 = 10; + } + } + else if ((int)param_1 < 0x2000) { + if (param_1 == 0x800) { + uVar2 = 0xb; + } + else { + if (param_1 != 0x1000) goto switchD_00174624_caseD_2; + uVar2 = 0xc; + } + } + else if (param_1 == 0x2000) { + uVar2 = 0xd; + } + else { + if (param_1 != 0x4000) goto switchD_00174624_caseD_2; + uVar2 = 0xe; + } + } + else if ((int)param_1 < 0x800000) { + if ((int)param_1 < 0x80000) { + if ((int)param_1 < 0x20000) { + if (param_1 == 0x8000) { + uVar2 = 0xf; + } + else { + if (param_1 != 0x10000) goto switchD_00174624_caseD_2; + uVar2 = 0x10; + } + } + else if (param_1 == 0x20000) { + uVar2 = 0x11; + } + else { + if (param_1 != 0x40000) goto switchD_00174624_caseD_2; + uVar2 = 0x12; + } + } + else if ((int)param_1 < 0x200000) { + if (param_1 == 0x80000) { + uVar2 = 0x13; + } + else { + if (param_1 != 0x100000) goto switchD_00174624_caseD_2; + uVar2 = 0x14; + } + } + else if (param_1 == 0x200000) { + uVar2 = 0x15; + } + else { + if (param_1 != 0x400000) goto switchD_00174624_caseD_2; + uVar2 = 0x16; + } + } + else if ((int)param_1 < 0x8000000) { + if ((int)param_1 < 0x2000000) { + if (param_1 == 0x800000) { + uVar2 = 0x17; + } + else { + if (param_1 != 0x1000000) goto switchD_00174624_caseD_2; + uVar2 = 0x18; + } + } + else if (param_1 == 0x2000000) { + uVar2 = 0x19; + } + else { + if (param_1 != 0x4000000) goto switchD_00174624_caseD_2; + uVar2 = 0x1a; + } + } + else if ((int)param_1 < 0x20000000) { + if (param_1 == 0x8000000) { + uVar2 = 0x1b; + } + else { + if (param_1 != 0x10000000) goto switchD_00174624_caseD_2; + uVar2 = 0x1c; + } + } + else if (param_1 == 0x20000000) { + uVar2 = 0x1d; + } + else { + if (param_1 != 0x40000000) goto switchD_00174624_caseD_2; + uVar2 = 0x1e; + } + *(undefined4 *)(this + 0x76e4) = uVar2; +switchD_00174624_caseD_2: + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return 1; +} + + +================================================================== + +### FUNC 0017487c (116 bytes) name=isDDTValid + +/* isDDTValid(unsigned char*, int) */ + +bool isDDTValid(uchar *param_1,int param_2) + +{ + if (((((0x373 < param_2) && (0.0 < *(float *)(param_1 + 0x2c4))) && + (*(float *)(param_1 + 0x2c4) <= 1.0)) && + ((0.0 < *(float *)(param_1 + 0x2cc) && (*(float *)(param_1 + 0x2cc) <= 1.0)))) && + ((0.0 < *(float *)(param_1 + 0x2d0) && + ((*(float *)(param_1 + 0x2d0) <= 1.0 && (*(int *)(param_1 + 0x2f0) + 100U < 0xc9)))))) { + return *(int *)(param_1 + 0x2f4) + 100U < 0xc9; + } + return false; +} + + +================================================================== + +### FUNC 001748f0 (76 bytes) name=MDTHelper + +/* MDTHelper::MDTHelper() */ + +void __thiscall MDTHelper::MDTHelper(MDTHelper *this) + +{ + *(undefined8 *)this = 0; + *(undefined4 *)(this + 8) = 0; + this[0xc] = (MDTHelper)0x0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + this[0x1c] = (MDTHelper)0x0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0x28) = 0; + this[0x2c] = (MDTHelper)0x0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined4 *)(this + 0x38) = 0; + this[0x3c] = (MDTHelper)0x0; + *(undefined8 *)(this + 0x40) = 0; + *(undefined4 *)(this + 0x48) = 0; + this[0x4c] = (MDTHelper)0x0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined4 *)(this + 0x58) = 0; + this[0x5c] = (MDTHelper)0x0; + return; +} + + +================================================================== + +### FUNC 0017493c (4 bytes) name=~MDTHelper + +/* MDTHelper::~MDTHelper() */ + +void __thiscall MDTHelper::~MDTHelper(MDTHelper *this) + +{ + (*(code *)PTR_free_005002b8)(); + return; +} + + +================================================================== + +### FUNC 00174940 (220 bytes) name=free + +/* MDTHelper::free() */ + +void __thiscall MDTHelper::free(MDTHelper *this) + +{ + if (*(void **)this != (void *)0x0) { + if (this[0xc] != (MDTHelper)0x0) { + operator_delete__(*(void **)this); + this[0xc] = (MDTHelper)0x0; + } + *(undefined8 *)this = 0; + *(undefined4 *)(this + 8) = 0; + } + if (*(void **)(this + 0x10) != (void *)0x0) { + if (this[0x1c] != (MDTHelper)0x0) { + operator_delete__(*(void **)(this + 0x10)); + this[0x1c] = (MDTHelper)0x0; + } + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + } + if (*(void **)(this + 0x20) != (void *)0x0) { + if (this[0x2c] != (MDTHelper)0x0) { + operator_delete__(*(void **)(this + 0x20)); + this[0x2c] = (MDTHelper)0x0; + } + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0x28) = 0; + } + if (*(void **)(this + 0x30) != (void *)0x0) { + if (this[0x3c] != (MDTHelper)0x0) { + operator_delete__(*(void **)(this + 0x30)); + this[0x3c] = (MDTHelper)0x0; + } + *(undefined8 *)(this + 0x30) = 0; + *(undefined4 *)(this + 0x38) = 0; + } + if (*(void **)(this + 0x40) != (void *)0x0) { + if (this[0x4c] != (MDTHelper)0x0) { + operator_delete__(*(void **)(this + 0x40)); + this[0x4c] = (MDTHelper)0x0; + } + *(undefined8 *)(this + 0x40) = 0; + *(undefined4 *)(this + 0x48) = 0; + } + if (*(void **)(this + 0x50) != (void *)0x0) { + if (this[0x5c] != (MDTHelper)0x0) { + operator_delete__(*(void **)(this + 0x50)); + this[0x5c] = (MDTHelper)0x0; + } + *(undefined8 *)(this + 0x50) = 0; + *(undefined4 *)(this + 0x58) = 0; + } + return; +} + + +================================================================== + +### FUNC 00174a1c (1660 bytes) name=load + +/* MDTHelper::load(char const*) */ + +void __thiscall MDTHelper::load(MDTHelper *this,char *param_1) + +{ + ulong uVar1; + long lVar2; + FILE *__stream; + long lVar3; + size_t sVar4; + void *pvVar5; + undefined8 uVar6; + int iVar7; + ulong uVar8; + int local_3b0; + int local_3ac; + int local_3a8; + int local_3a4; + int local_3a0; + int local_39c; + int local_318; + int local_314; + int local_290; + int local_28c; + int local_208; + int local_204; + int local_178; + int local_174; + int local_f0; + int local_ec; + long local_68; + + lVar2 = tpidr_el0; + local_68 = *(long *)(lVar2 + 0x28); + free(this); + __stream = fopen(param_1,"rb"); + uVar6 = 0; + if (__stream == (FILE *)0x0) goto LAB_00174c54; + fseek(__stream,0,2); + lVar3 = ftell(__stream); + iVar7 = (int)lVar3; + if (iVar7 < 0x400) { +LAB_00174c48: + fclose(__stream); + } + else { + memset(&local_f0,0,0x88); + memset(&local_178,0,0x88); + memset(&local_208,0,0x90); + memset(&local_290,0,0x88); + memset(&local_318,0,0x88); + memset(&local_3b0,0,0x98); + fseek(__stream,(lVar3 << 0x20) + -0x9800000000 >> 0x20,0); + sVar4 = fread(&local_3b0,1,0x98,__stream); + if (sVar4 != 0x98) goto LAB_00174c48; + if (local_3b0 == 0x5bb5b57b) { + if (((-1 < local_3ac) && (-1 < local_3a8)) && + ((-1 < local_3a4 && ((-1 < local_3a0 && (-1 < local_39c)))))) { + if (local_3ac < 1) { + uVar8 = 0; +LAB_00174d60: + fseek(__stream,uVar8,0); + local_f0 = 0; + sVar4 = fread(&local_f0,1,0x88,__stream); + if ((sVar4 == 0x88) && (local_f0 == 0x5bb5b55b)) { + sVar4 = (size_t)local_ec; + *(int *)(this + 0x18) = local_ec; + if (local_ec - 1U < 10000000) { + uVar8 = sVar4; + if ((long)sVar4 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x10) = pvVar5; + this[0x1c] = (MDTHelper)0x1; + sVar4 = fread(pvVar5,1,sVar4,__stream); + if ((sVar4 == (long)*(int *)(this + 0x18)) && (0x373 < *(int *)(this + 0x18))) { + lVar3 = *(long *)(this + 0x10); + if (((0.0 < *(float *)(lVar3 + 0x2c4)) && + (((*(float *)(lVar3 + 0x2c4) <= 1.0 && (0.0 < *(float *)(lVar3 + 0x2cc))) && + (*(float *)(lVar3 + 0x2cc) <= 1.0)))) && + ((((0.0 < *(float *)(lVar3 + 0x2d0) && (*(float *)(lVar3 + 0x2d0) <= 1.0)) && + (*(int *)(lVar3 + 0x2f0) + 100U < 0xc9)) && + (*(int *)(lVar3 + 0x2f4) + 100U < 0xc9)))) { + if (local_3a8 < 1) { +LAB_00174edc: + if (local_3a4 < 1) { +LAB_00174f68: + if (local_3a0 < 1) { +LAB_00174ff4: + if (local_39c < 1) goto LAB_00174d4c; + fseek(__stream,(long)local_39c,0); + sVar4 = fread(&local_318,1,0x88,__stream); + if ((sVar4 == 0x88) && (local_318 == 0x5bb5b55f)) { + sVar4 = (size_t)local_314; + *(int *)(this + 0x58) = local_314; + if (local_314 - 1U < 10000000) { + uVar8 = sVar4; + if ((long)sVar4 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x50) = pvVar5; + this[0x5c] = (MDTHelper)0x1; + sVar4 = fread(pvVar5,1,sVar4,__stream); + if (sVar4 == (long)*(int *)(this + 0x58)) goto LAB_00174d4c; + } + } + } + else { + fseek(__stream,(long)local_3a0,0); + sVar4 = fread(&local_290,1,0x88,__stream); + if ((sVar4 == 0x88) && (local_290 == 0x5bb5b55e)) { + sVar4 = (size_t)local_28c; + *(int *)(this + 0x48) = local_28c; + if (local_28c - 1U < 10000000) { + uVar8 = sVar4; + if ((long)sVar4 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x40) = pvVar5; + this[0x4c] = (MDTHelper)0x1; + sVar4 = fread(pvVar5,1,sVar4,__stream); + if (sVar4 == (long)*(int *)(this + 0x48)) goto LAB_00174ff4; + } + } + } + } + else { + fseek(__stream,(long)local_3a4,0); + sVar4 = fread(&local_208,1,0x90,__stream); + if ((sVar4 == 0x90) && (local_208 == 0x5bb5b55d)) { + sVar4 = (size_t)local_204; + *(int *)(this + 0x38) = local_204; + if (local_204 - 1U < 10000000) { + uVar8 = sVar4; + if ((long)sVar4 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x30) = pvVar5; + this[0x3c] = (MDTHelper)0x1; + sVar4 = fread(pvVar5,1,sVar4,__stream); + if (sVar4 == (long)*(int *)(this + 0x38)) goto LAB_00174f68; + } + } + } + } + else { + fseek(__stream,(long)local_3a8,0); + sVar4 = fread(&local_178,1,0x88,__stream); + if ((sVar4 == 0x88) && (local_178 == 0x5bb5b55c)) { + sVar4 = (size_t)local_174; + *(int *)(this + 0x28) = local_174; + if (local_174 - 1U < 10000000) { + uVar8 = sVar4; + if ((long)sVar4 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x20) = pvVar5; + this[0x2c] = (MDTHelper)0x1; + sVar4 = fread(pvVar5,1,sVar4,__stream); + if (sVar4 == (long)*(int *)(this + 0x28)) goto LAB_00174edc; + } + } + } + } + } + } + } + } + else { + *(int *)(this + 8) = local_3ac; + if (local_3ac - 1U < 10000000) { + uVar8 = (ulong)local_3ac; + uVar1 = uVar8; + if ((long)uVar8 < 0) { + uVar1 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar1); + *(void **)this = pvVar5; + this[0xc] = (MDTHelper)0x1; + fseek(__stream,0,0); + sVar4 = fread(*(void **)this,1,(long)*(int *)(this + 8),__stream); + if (sVar4 == (long)*(int *)(this + 8)) goto LAB_00174d60; + } + } + } + } + else { + fseek(__stream,0,0); + sVar4 = fread(&local_f0,1,0x88,__stream); + if (sVar4 != 0x88) goto LAB_00174c48; + if (local_f0 == 0x5bb5b55b) { + sVar4 = (size_t)local_ec; + *(int *)(this + 0x18) = local_ec; + if (local_ec - 1U < 10000000) { + uVar8 = sVar4; + if ((long)sVar4 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x10) = pvVar5; + this[0x1c] = (MDTHelper)0x1; +LAB_00174ccc: + sVar4 = fread(pvVar5,1,sVar4,__stream); + if ((sVar4 == (long)*(int *)(this + 0x18)) && (0x373 < *(int *)(this + 0x18))) { + lVar3 = *(long *)(this + 0x10); + if ((((0.0 < *(float *)(lVar3 + 0x2c4)) && + ((((*(float *)(lVar3 + 0x2c4) <= 1.0 && (0.0 < *(float *)(lVar3 + 0x2cc))) && + (*(float *)(lVar3 + 0x2cc) <= 1.0)) && + ((0.0 < *(float *)(lVar3 + 0x2d0) && (*(float *)(lVar3 + 0x2d0) <= 1.0)))))) && + (*(int *)(lVar3 + 0x2f0) + 100U < 0xc9)) && (*(int *)(lVar3 + 0x2f4) + 100U < 0xc9)) + { +LAB_00174d4c: + fclose(__stream); + uVar6 = 1; + goto LAB_00174c54; + } + } + } + } + else { + *(int *)(this + 0x18) = iVar7; + if (iVar7 - 1U < 10000000) { + uVar8 = (lVar3 << 0x20) >> 0x20; + if ((long)uVar8 < 0) { + uVar8 = 0xffffffffffffffff; + } + pvVar5 = operator_new__(uVar8); + *(void **)(this + 0x10) = pvVar5; + this[0x1c] = (MDTHelper)0x1; + fseek(__stream,0,0); + pvVar5 = *(void **)(this + 0x10); + sVar4 = (size_t)*(int *)(this + 0x18); + goto LAB_00174ccc; + } + } + } + fclose(__stream); + free(this); + } + uVar6 = 0; +LAB_00174c54: + if (*(long *)(lVar2 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar6); +} + + +================================================================== + +### FUNC 00175098 (24 bytes) name=isSizeValid + +/* MDTHelper::isSizeValid(int) */ + +bool __thiscall MDTHelper::isSizeValid(MDTHelper *this,int param_1) + +{ + return param_1 - 1U < 10000000; +} + + +================================================================== + +### FUNC 001750b0 (1056 bytes) name=save + +/* MDTHelper::save(char const*) */ + +undefined4 __thiscall MDTHelper::save(MDTHelper *this,char *param_1) + +{ + long lVar1; + uint uVar2; + FILE *__s; + long lVar3; + undefined4 uVar5; + int iVar6; + int iVar7; + undefined4 local_180; + uint local_17c; + undefined4 local_178; + int local_174 [33]; + undefined4 local_f0; + undefined4 local_ec; + undefined4 local_e8; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + long local_58; + MDTHelper *pMVar4; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + pMVar4 = this; + if ((((*(long *)(this + 0x10) == 0) || + ((((*(long *)this != 0 && (9999999 < *(int *)(this + 8) - 1U)) || + (9999999 < *(int *)(this + 0x18) - 1U)) || + ((*(long *)(this + 0x20) != 0 && (9999999 < *(int *)(this + 0x28) - 1U)))))) || + ((*(long *)(this + 0x30) != 0 && (9999999 < *(int *)(this + 0x38) - 1U)))) || + ((((*(long *)(this + 0x40) != 0 && (9999999 < *(int *)(this + 0x48) - 1U)) || + ((*(long *)(this + 0x50) != 0 && (9999999 < *(int *)(this + 0x58) - 1U)))) || + (__s = fopen(param_1,"wb"), pMVar4 = (MDTHelper *)0x0, __s == (FILE *)0x0)))) { + uVar5 = 0; + } + else { + memset((void *)((ulong)&local_f0 | 4),0,0x94); + local_f0 = 0x5bb5b57b; + if (*(void **)this != (void *)0x0) { + iVar7 = *(int *)(this + 8); + iVar6 = (iVar7 + 3U & 0xfffffffc) - iVar7; + fwrite(*(void **)this,1,(long)iVar7,__s); + if (0 < iVar6) { + do { + fputc(0,__s); + iVar6 = iVar6 + -1; + } while (iVar6 != 0); + } + } + if (*(long *)(this + 0x10) != 0) { + uVar2 = *(int *)(this + 0x18) + 3U & 0xfffffffc; + iVar7 = uVar2 - *(int *)(this + 0x18); + memset(&local_178,0,0x80); + local_180 = 0x5bb5b55b; + local_17c = uVar2; + lVar3 = ftell(__s); + local_ec = (undefined4)lVar3; + fwrite(&local_180,0x88,1,__s); + fwrite(*(void **)(this + 0x10),1,(long)*(int *)(this + 0x18),__s); + if (0 < iVar7) { + do { + fputc(0,__s); + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + } + } + if (*(long *)(this + 0x20) != 0) { + uVar2 = *(int *)(this + 0x28) + 3U & 0xfffffffc; + iVar7 = uVar2 - *(int *)(this + 0x28); + memset(&local_178,0,0x80); + local_180 = 0x5bb5b55c; + local_17c = uVar2; + lVar3 = ftell(__s); + local_e8 = (undefined4)lVar3; + fwrite(&local_180,0x88,1,__s); + fwrite(*(void **)(this + 0x20),1,(long)*(int *)(this + 0x28),__s); + if (0 < iVar7) { + do { + fputc(0,__s); + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + } + } + if (*(long *)(this + 0x30) != 0) { + memset(&local_178,0,0x88); + local_180 = 0x5bb5b55d; + local_174[0] = (int)*(uint *)(this + 0x38) >> 8; + local_17c = *(uint *)(this + 0x38) & 0xffffff00; + lVar3 = ftell(__s); + local_e4 = (undefined4)lVar3; + fwrite(&local_180,0x90,1,__s); + fwrite(*(void **)(this + 0x30),1,(long)(int)local_17c,__s); + } + if (*(long *)(this + 0x40) != 0) { + uVar2 = *(int *)(this + 0x48) + 3U & 0xfffffffc; + iVar7 = uVar2 - *(int *)(this + 0x48); + memset(local_174,0,0x7c); + local_180 = 0x5bb5b55e; + local_178 = 2; + local_17c = uVar2; + lVar3 = ftell(__s); + local_e0 = (undefined4)lVar3; + fwrite(&local_180,0x88,1,__s); + fwrite(*(void **)(this + 0x40),1,(long)*(int *)(this + 0x48),__s); + if (0 < iVar7) { + do { + fputc(0,__s); + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + } + } + if (*(long *)(this + 0x50) != 0) { + uVar2 = *(int *)(this + 0x58) + 3U & 0xfffffffc; + iVar7 = uVar2 - *(int *)(this + 0x58); + memset(&local_178,0,0x80); + local_180 = 0x5bb5b55f; + local_17c = uVar2; + lVar3 = ftell(__s); + local_dc = (undefined4)lVar3; + fwrite(&local_180,0x88,1,__s); + fwrite(*(void **)(this + 0x50),1,(long)*(int *)(this + 0x58),__s); + if (0 < iVar7) { + do { + fputc(0,__s); + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + } + } + uVar5 = 1; + fwrite(&local_f0,0x98,1,__s); + uVar2 = fclose(__s); + pMVar4 = (MDTHelper *)(ulong)uVar2; + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return uVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(pMVar4); +} + + +================================================================== + +### FUNC 001754d0 (4 bytes) name=unload + +/* MDTHelper::unload() */ + +void MDTHelper::unload(void) + +{ + (*(code *)PTR_free_005002b8)(); + return; +} + + +================================================================== + +### FUNC 001754d4 (140 bytes) name=set + +/* MDTHelper::set(MDT const*) */ + +void __thiscall MDTHelper::set(MDTHelper *this,MDT *param_1) + +{ + if (param_1 != (MDT *)0x0) { + free(this); + *(undefined8 *)this = *(undefined8 *)param_1; + *(undefined4 *)(this + 8) = *(undefined4 *)(param_1 + 8); + *(undefined8 *)(this + 0x10) = *(undefined8 *)(param_1 + 0x10); + *(undefined4 *)(this + 0x18) = *(undefined4 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x20) = *(undefined8 *)(param_1 + 0x20); + *(undefined4 *)(this + 0x28) = *(undefined4 *)(param_1 + 0x28); + *(undefined8 *)(this + 0x30) = *(undefined8 *)(param_1 + 0x30); + *(undefined4 *)(this + 0x38) = *(undefined4 *)(param_1 + 0x38); + *(undefined8 *)(this + 0x40) = *(undefined8 *)(param_1 + 0x40); + *(undefined4 *)(this + 0x48) = *(undefined4 *)(param_1 + 0x48); + *(undefined8 *)(this + 0x50) = *(undefined8 *)(param_1 + 0x50); + *(undefined4 *)(this + 0x58) = *(undefined4 *)(param_1 + 0x58); + } + return; +} + + +================================================================== + +### FUNC 00175560 (104 bytes) name=get + +/* MDTHelper::get(MDT*) */ + +void __thiscall MDTHelper::get(MDTHelper *this,MDT *param_1) + +{ + if (param_1 != (MDT *)0x0) { + *(undefined8 *)param_1 = *(undefined8 *)this; + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(this + 8); + *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(this + 0x10); + *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(this + 0x18); + *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(this + 0x20); + *(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(this + 0x28); + *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(this + 0x30); + *(undefined4 *)(param_1 + 0x38) = *(undefined4 *)(this + 0x38); + *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(this + 0x40); + *(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(this + 0x48); + *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(this + 0x50); + *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(this + 0x58); + } + return; +} + + +================================================================== + +### FUNC 001755c8 (164 bytes) name=setJpg + +/* MDTHelper::setJpg(unsigned char*, int, bool) */ + +undefined8 __thiscall MDTHelper::setJpg(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + ulong uVar1; + void *__dest; + undefined8 uVar2; + size_t __n; + + if (param_2 - 1U < 10000000) { + if ((*(void **)this != (void *)0x0) && (this[0xc] != (MDTHelper)0x0)) { + operator_delete__(*(void **)this); + } + if (param_3) { + __n = (size_t)param_2; + uVar1 = __n; + if ((long)__n < 0) { + uVar1 = 0xffffffffffffffff; + } + __dest = operator_new__(uVar1); + *(void **)this = __dest; + memcpy(__dest,param_1,__n); + } + else { + *(uchar **)this = param_1; + } + uVar2 = 1; + this[0xc] = (MDTHelper)param_3; + *(int *)(this + 8) = param_2; + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 0017566c (164 bytes) name=setDDT + +/* MDTHelper::setDDT(unsigned char*, int, bool) */ + +undefined8 __thiscall MDTHelper::setDDT(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + ulong uVar1; + void *__dest; + undefined8 uVar2; + size_t __n; + + if (param_2 - 1U < 10000000) { + if ((*(void **)(this + 0x10) != (void *)0x0) && (this[0x1c] != (MDTHelper)0x0)) { + operator_delete__(*(void **)(this + 0x10)); + } + if (param_3) { + __n = (size_t)param_2; + uVar1 = __n; + if ((long)__n < 0) { + uVar1 = 0xffffffffffffffff; + } + __dest = operator_new__(uVar1); + *(void **)(this + 0x10) = __dest; + memcpy(__dest,param_1,__n); + } + else { + *(uchar **)(this + 0x10) = param_1; + } + uVar2 = 1; + this[0x1c] = (MDTHelper)param_3; + *(int *)(this + 0x18) = param_2; + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 00175710 (164 bytes) name=setVisible + +/* MDTHelper::setVisible(unsigned char*, int, bool) */ + +undefined8 __thiscall MDTHelper::setVisible(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + ulong uVar1; + void *__dest; + undefined8 uVar2; + size_t __n; + + if (param_2 - 1U < 10000000) { + if ((*(void **)(this + 0x20) != (void *)0x0) && (this[0x2c] != (MDTHelper)0x0)) { + operator_delete__(*(void **)(this + 0x20)); + } + if (param_3) { + __n = (size_t)param_2; + uVar1 = __n; + if ((long)__n < 0) { + uVar1 = 0xffffffffffffffff; + } + __dest = operator_new__(uVar1); + *(void **)(this + 0x20) = __dest; + memcpy(__dest,param_1,__n); + } + else { + *(uchar **)(this + 0x20) = param_1; + } + uVar2 = 1; + this[0x2c] = (MDTHelper)param_3; + *(int *)(this + 0x28) = param_2; + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 001757b4 (180 bytes) name=setLabel + +/* MDTHelper::setLabel(ROI*, int, bool) */ + +undefined8 __thiscall MDTHelper::setLabel(MDTHelper *this,ROI *param_1,int param_2,bool param_3) + +{ + uint uVar1; + ulong uVar2; + void *__dest; + undefined8 uVar3; + + uVar1 = param_2 + 0xff; + if (-1 < param_2) { + uVar1 = param_2; + } + uVar1 = uVar1 & 0xffffff00; + if (uVar1 - 1 < 10000000) { + if ((*(void **)(this + 0x30) != (void *)0x0) && (this[0x3c] != (MDTHelper)0x0)) { + operator_delete__(*(void **)(this + 0x30)); + } + if (param_3) { + uVar2 = (long)(int)uVar1; + if (param_2 < -0xff) { + uVar2 = 0xffffffffffffffff; + } + __dest = operator_new__(uVar2); + *(void **)(this + 0x30) = __dest; + memcpy(__dest,param_1,(long)(int)uVar1); + } + else { + *(ROI **)(this + 0x30) = param_1; + } + uVar3 = 1; + this[0x3c] = (MDTHelper)param_3; + *(uint *)(this + 0x38) = uVar1; + } + else { + uVar3 = 0; + } + return uVar3; +} + + +================================================================== + +### FUNC 00175868 (164 bytes) name=setText + +/* MDTHelper::setText(unsigned char*, int, bool) */ + +undefined8 __thiscall MDTHelper::setText(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + ulong uVar1; + void *__dest; + undefined8 uVar2; + size_t __n; + + if (param_2 - 1U < 10000000) { + if ((*(void **)(this + 0x40) != (void *)0x0) && (this[0x4c] != (MDTHelper)0x0)) { + operator_delete__(*(void **)(this + 0x40)); + } + if (param_3) { + __n = (size_t)param_2; + uVar1 = __n; + if ((long)__n < 0) { + uVar1 = 0xffffffffffffffff; + } + __dest = operator_new__(uVar1); + *(void **)(this + 0x40) = __dest; + memcpy(__dest,param_1,__n); + } + else { + *(uchar **)(this + 0x40) = param_1; + } + uVar2 = 1; + this[0x4c] = (MDTHelper)param_3; + *(int *)(this + 0x48) = param_2; + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 0017590c (164 bytes) name=setAudio + +/* MDTHelper::setAudio(unsigned char*, int, bool) */ + +undefined8 __thiscall MDTHelper::setAudio(MDTHelper *this,uchar *param_1,int param_2,bool param_3) + +{ + ulong uVar1; + void *__dest; + undefined8 uVar2; + size_t __n; + + if (param_2 - 1U < 10000000) { + if ((*(void **)(this + 0x50) != (void *)0x0) && (this[0x5c] != (MDTHelper)0x0)) { + operator_delete__(*(void **)(this + 0x50)); + } + if (param_3) { + __n = (size_t)param_2; + uVar1 = __n; + if ((long)__n < 0) { + uVar1 = 0xffffffffffffffff; + } + __dest = operator_new__(uVar1); + *(void **)(this + 0x50) = __dest; + memcpy(__dest,param_1,__n); + } + else { + *(uchar **)(this + 0x50) = param_1; + } + uVar2 = 1; + this[0x5c] = (MDTHelper)param_3; + *(int *)(this + 0x58) = param_2; + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 001759b0 (28 bytes) name=getJpg + +/* MDTHelper::getJpg(unsigned char**) */ + +undefined4 __thiscall MDTHelper::getJpg(MDTHelper *this,uchar **param_1) + +{ + if (param_1 != (uchar **)0x0) { + *param_1 = *(uchar **)this; + return *(undefined4 *)(this + 8); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 001759cc (28 bytes) name=getDDT + +/* MDTHelper::getDDT(unsigned char**) */ + +undefined4 __thiscall MDTHelper::getDDT(MDTHelper *this,uchar **param_1) + +{ + if (param_1 != (uchar **)0x0) { + *param_1 = *(uchar **)(this + 0x10); + return *(undefined4 *)(this + 0x18); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 001759e8 (28 bytes) name=getVisible + +/* MDTHelper::getVisible(unsigned char**) */ + +undefined4 __thiscall MDTHelper::getVisible(MDTHelper *this,uchar **param_1) + +{ + if (param_1 != (uchar **)0x0) { + *param_1 = *(uchar **)(this + 0x20); + return *(undefined4 *)(this + 0x28); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00175a04 (28 bytes) name=getLabel + +/* MDTHelper::getLabel(ROI**) */ + +undefined4 __thiscall MDTHelper::getLabel(MDTHelper *this,ROI **param_1) + +{ + if (param_1 != (ROI **)0x0) { + *param_1 = *(ROI **)(this + 0x30); + return *(undefined4 *)(this + 0x38); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00175a20 (28 bytes) name=getText + +/* MDTHelper::getText(unsigned char**) */ + +undefined4 __thiscall MDTHelper::getText(MDTHelper *this,uchar **param_1) + +{ + if (param_1 != (uchar **)0x0) { + *param_1 = *(uchar **)(this + 0x40); + return *(undefined4 *)(this + 0x48); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00175a3c (28 bytes) name=getAudio + +/* MDTHelper::getAudio(unsigned char**) */ + +undefined4 __thiscall MDTHelper::getAudio(MDTHelper *this,uchar **param_1) + +{ + if (param_1 != (uchar **)0x0) { + *param_1 = *(uchar **)(this + 0x50); + return *(undefined4 *)(this + 0x58); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00175a58 (88 bytes) name=MStream + +/* MStream::MStream(unsigned long) */ + +void __thiscall MStream::MStream(MStream *this,ulong param_1) + +{ + void *pvVar1; + undefined8 *puVar2; + + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(ulong *)this = param_1; + if (param_1 != 0) { + pvVar1 = operator_new__(param_1); + *(void **)(this + 8) = pvVar1; + *(void **)(this + 0x10) = pvVar1; + return; + } + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "ParamError: Invalid array size.[MStream::MStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,PTR_typeinfo_00501c20,0); +} + + +================================================================== + +### FUNC 00175ab0 (116 bytes) name=MStream + +/* MStream::MStream(char const*, unsigned long) */ + +void __thiscall MStream::MStream(MStream *this,char *param_1,ulong param_2) + +{ + ulong uVar1; + size_t sVar2; + void *__dest; + + if (param_2 == 0) { + sVar2 = strlen(param_1); + param_2 = sVar2 + 1; + } + uVar1 = param_2 + 1; + *(ulong *)this = uVar1; + __dest = operator_new__(uVar1); + *(void **)(this + 8) = __dest; + memcpy(__dest,param_1,param_2); + *(undefined1 *)((long)__dest + param_2) = 0; + *(ulong *)(this + 0x10) = (long)__dest + uVar1; + return; +} + + +================================================================== + +### FUNC 00175b24 (100 bytes) name=MStream + +/* MStream::MStream(std::string const&) */ + +void __thiscall MStream::MStream(MStream *this,string *param_1) + +{ + ulong uVar1; + void *__dest; + void *__src; + size_t __n; + + __src = *(void **)param_1; + __n = *(size_t *)((long)__src + -0x18); + uVar1 = __n + 1; + *(ulong *)this = uVar1; + __dest = operator_new__(uVar1); + *(void **)(this + 8) = __dest; + memcpy(__dest,__src,__n); + *(undefined1 *)((long)__dest + __n) = 0; + *(ulong *)(this + 0x10) = (long)__dest + uVar1; + return; +} + + +================================================================== + +### FUNC 00175b88 (20 bytes) name=MStream + +/* MStream::MStream(MStream const&) */ + +void __thiscall MStream::MStream(MStream *this,MStream *param_1) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)param_1; + *(undefined8 *)(this + 8) = *(undefined8 *)(param_1 + 8); + *(undefined8 *)this = uVar1; + *(undefined8 *)(this + 0x10) = *(undefined8 *)(param_1 + 0x10); + return; +} + + +================================================================== + +### FUNC 00175b9c (64 bytes) name=operator= + +/* MStream::TEMPNAMEPLACEHOLDERVALUE(MStream const&) */ + +void __thiscall MStream::operator=(MStream *this,MStream *param_1) + +{ + void *pvVar1; + + *(undefined8 *)this = *(undefined8 *)param_1; + pvVar1 = (void *)0x0; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + pvVar1 = operator_new__(*(ulong *)this); + *(void **)(this + 8) = pvVar1; + } + *(void **)(this + 0x10) = pvVar1; + return; +} + + +================================================================== + +### FUNC 00175bdc (16 bytes) name=~MStream + +/* MStream::~MStream() */ + +void __thiscall MStream::~MStream(MStream *this) + +{ + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + return; + } + return; +} + + +================================================================== + +### FUNC 00175bec (456 bytes) name=Split + +/* MStream::Split(char) */ + +void MStream::Split(char param_1) + +{ + ulong uVar1; + ulong *puVar2; + long lVar3; + ulong uVar4; + void *pvVar5; + char in_w1; + vector> *in_x8; + char *pcVar6; + ulong *puVar7; + char *__s; + size_t sVar8; + char *pcVar9; + ulong local_98; + void *local_90; + ulong local_88; + ulong local_80; + void *local_78; + ulong local_70; + long local_68; + + uVar4 = (ulong)(byte)param_1; + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)in_x8 = 0; + __s = *(char **)(uVar4 + 8); + pcVar6 = *(char **)(uVar4 + 0x10); + pcVar9 = __s; + if (__s < pcVar6) { + do { + while (*pcVar9 == in_w1) { + sVar8 = (long)pcVar9 - (long)__s; + if (sVar8 == 0) { + sVar8 = strlen(__s); + sVar8 = sVar8 + 1; + } + uVar1 = sVar8 + 1; + local_80 = uVar1; + pvVar5 = operator_new__(uVar1); + local_78 = pvVar5; + memcpy(pvVar5,__s,sVar8); + puVar7 = *(ulong **)(in_x8 + 8); + puVar2 = *(ulong **)(in_x8 + 0x10); + local_70 = (long)pvVar5 + uVar1; + *(undefined1 *)((long)pvVar5 + sVar8) = 0; + if (puVar7 == puVar2) { + std::vector>::_M_emplace_back_aux + (in_x8,(MStream *)&local_80); + } + else { + *puVar7 = uVar1; + puVar7[1] = (ulong)pvVar5; + puVar7[2] = local_70; + *(ulong **)(in_x8 + 8) = puVar7 + 3; + } + __s = pcVar9 + 1; + if (local_78 != (void *)0x0) { + operator_delete__(local_78); + } + pcVar6 = *(char **)(uVar4 + 0x10); + pcVar9 = __s; + if (pcVar6 <= __s) goto LAB_00175cf8; + } + pcVar9 = pcVar9 + 1; + } while (pcVar9 < pcVar6); + } +LAB_00175cf8: + sVar8 = (long)pcVar9 - (long)__s; + if (1 < (long)sVar8) { + uVar4 = sVar8 + 1; + local_98 = uVar4; + pvVar5 = operator_new__(uVar4); + local_90 = pvVar5; + memcpy(pvVar5,__s,sVar8); + local_88 = (long)pvVar5 + uVar4; + *(undefined1 *)((long)pvVar5 + sVar8) = 0; + puVar7 = *(ulong **)(in_x8 + 8); + if (puVar7 == *(ulong **)(in_x8 + 0x10)) { + std::vector>::_M_emplace_back_aux + (in_x8,(MStream *)&local_98); + } + else { + puVar7[2] = local_88; + *puVar7 = uVar4; + puVar7[1] = (ulong)pvVar5; + *(ulong **)(in_x8 + 8) = puVar7 + 3; + } + if (local_90 != (void *)0x0) { + operator_delete__(local_90); + } + } + if (*(long *)(lVar3 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00175e2c (548 bytes) name=Split + +/* MStream::Split(char const*) */ + +void MStream::Split(char *param_1) + +{ + ulong uVar1; + ulong *puVar2; + long lVar3; + size_t sVar4; + void *pvVar5; + char *in_x1; + vector> *in_x8; + ulong *puVar6; + char *__s; + char *pcVar7; + char *pcVar8; + ulong local_98; + void *local_90; + ulong local_88; + ulong local_80; + void *local_78; + ulong local_70; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + sVar4 = strlen(in_x1); + if ((int)sVar4 == 2) { + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)in_x8 = 0; + __s = *(char **)(param_1 + 8); + pcVar8 = (char *)(*(long *)(param_1 + 0x10) + -1); + if (__s < pcVar8) { + do { + pcVar7 = __s; + while ((*in_x1 != *pcVar7 || (in_x1[1] != pcVar7[1]))) { + pcVar7 = pcVar7 + 1; + if (pcVar8 <= pcVar7) goto LAB_00175f84; + } + sVar4 = (long)pcVar7 - (long)__s; + if (sVar4 == 0) { + sVar4 = strlen(__s); + sVar4 = sVar4 + 1; + } + uVar1 = sVar4 + 1; + local_80 = uVar1; + pvVar5 = operator_new__(uVar1); + local_78 = pvVar5; + memcpy(pvVar5,__s,sVar4); + puVar6 = *(ulong **)(in_x8 + 8); + puVar2 = *(ulong **)(in_x8 + 0x10); + local_70 = (long)pvVar5 + uVar1; + *(undefined1 *)((long)pvVar5 + sVar4) = 0; + if (puVar6 == puVar2) { + std::vector>::_M_emplace_back_aux + (in_x8,(MStream *)&local_80); + } + else { + *puVar6 = uVar1; + puVar6[1] = (ulong)pvVar5; + puVar6[2] = local_70; + *(ulong **)(in_x8 + 8) = puVar6 + 3; + } + __s = pcVar7 + 2; + if (local_78 != (void *)0x0) { + operator_delete__(local_78); + } + } while (__s < pcVar8); + } +LAB_00175f84: + sVar4 = *(long *)(param_1 + 0x10) - (long)__s; + if (1 < (long)sVar4) { + uVar1 = sVar4 + 1; + local_98 = uVar1; + pvVar5 = operator_new__(uVar1); + local_90 = pvVar5; + memcpy(pvVar5,__s,sVar4); + local_88 = (long)pvVar5 + uVar1; + *(undefined1 *)((long)pvVar5 + sVar4) = 0; + puVar6 = *(ulong **)(in_x8 + 8); + if (puVar6 == *(ulong **)(in_x8 + 0x10)) { + std::vector>::_M_emplace_back_aux + (in_x8,(MStream *)&local_98); + } + else { + puVar6[2] = local_88; + *puVar6 = uVar1; + puVar6[1] = (ulong)pvVar5; + *(ulong **)(in_x8 + 8) = puVar6 + 3; + } + if (local_90 != (void *)0x0) { + operator_delete__(local_90); + } + } + } + else if ((int)sVar4 == 1) { + Split((char)param_1); + } + else { + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)in_x8 = 0; + } + if (*(long *)(lVar3 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001760e0 (196 bytes) name=hex2str + +/* hex2str(unsigned long, char*) */ + +char * hex2str(ulong param_1,char *param_2) + +{ + long lVar1; + char cVar2; + ulong uVar3; + char *pcVar4; + char *pcVar5; + char *pcVar6; + char *pcVar7; + ulong uVar8; + long lVar9; + + uVar3 = 0; + do { + uVar8 = param_1 & 0xf; + param_1 = param_1 >> 4; + param_2[uVar3] = "FEDCBA9876543210123456789ABCDEF"[uVar8 + 0xf]; + uVar3 = uVar3 + 1; + } while (param_1 != 0); + pcVar6 = param_2 + uVar3; + if (uVar3 < 0x10) { + lVar9 = 0; + do { + lVar1 = uVar3 + lVar9; + param_2[uVar3 + lVar9] = '0'; + lVar9 = lVar9 + 1; + } while (lVar1 != 0xf); + pcVar4 = pcVar6 + (0x11 - uVar3); + pcVar6 = pcVar6 + (0x10 - uVar3); + } + else { + pcVar4 = pcVar6 + 1; + } + *pcVar6 = 'x'; + lVar9 = 2 - (long)param_2; + *pcVar4 = '0'; + if ((pcVar6 + lVar9 != (char *)0x0) && (pcVar4 = pcVar6 + 1, param_2 < pcVar4)) { + do { + pcVar7 = param_2 + 1; + cVar2 = *param_2; + *param_2 = *pcVar4; + pcVar5 = pcVar4 + -1; + *pcVar4 = cVar2; + pcVar4 = pcVar5; + param_2 = pcVar7; + } while (pcVar7 < pcVar5); + } + return pcVar6 + lVar9; +} + + +================================================================== + +### FUNC 001761a4 (20 bytes) name=Available + +/* MStream::Available() const */ + +long __thiscall MStream::Available(MStream *this) + +{ + return (*(long *)this - *(long *)(this + 0x10)) + *(long *)(this + 8); +} + + +================================================================== + +### FUNC 001761b8 (200 bytes) name=Fmt + +/* MStream::Fmt(char const*, ...) */ + +void MStream::Fmt(char *param_1,...) + +{ + long lVar1; + int iVar2; + char *in_x1; + undefined8 in_x2; + undefined8 in_x3; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + long lVar3; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + undefined8 uStack_88; + undefined1 *local_80; + undefined1 **ppuStack_78; + undefined8 *puStack_70; + undefined8 uStack_68; + + lVar1 = tpidr_el0; + lVar3 = *(long *)(lVar1 + 0x28); + puStack_70 = &local_b0; + ppuStack_78 = &local_80; + uStack_68 = 0xffffff80ffffffd0; + local_b0 = in_x2; + uStack_a8 = in_x3; + local_a0 = in_x4; + uStack_98 = in_x5; + local_90 = in_x6; + uStack_88 = in_x7; + local_80 = (undefined1 *)register0x00000008; + iVar2 = vsnprintf(*(char **)(param_1 + 0x10), + (*(long *)param_1 - (long)*(char **)(param_1 + 0x10)) + *(long *)(param_1 + 8), + in_x1,&local_80); + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 0x10) + (long)iVar2; + if (*(long *)(lVar1 + 0x28) == lVar3) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00176280 (8 bytes) name=Get + +/* MStream::Get() */ + +undefined8 __thiscall MStream::Get(MStream *this) + +{ + return *(undefined8 *)(this + 8); +} + + +================================================================== + +### FUNC 00176288 (8 bytes) name=Get + +/* MStream::Get() const */ + +undefined8 __thiscall MStream::Get(MStream *this) + +{ + return *(undefined8 *)(this + 8); +} + + +================================================================== + +### FUNC 00176290 (16 bytes) name=Write + +/* MStream::Write(OFStream const&) const */ + +void __thiscall MStream::Write(MStream *this,OFStream *param_1) + +{ + OFStream::Write(param_1,*(char **)(this + 8)); + return; +} + + +================================================================== + +### FUNC 001762a0 (32 bytes) name=Write + +/* MStream::Write(__sFILE*) const */ + +bool __thiscall MStream::Write(MStream *this,__sFILE *param_1) + +{ + int iVar1; + + iVar1 = fputs(*(char **)(this + 8),(FILE *)param_1); + return iVar1 == 0; +} + + +================================================================== + +### FUNC 001762c0 (84 bytes) name=Puts + +/* MStream::Puts(char const*, unsigned long) */ + +void __thiscall MStream::Puts(MStream *this,char *param_1,ulong param_2) + +{ + long lVar1; + + if (param_2 + 1 < (ulong)((*(long *)this - (long)*(void **)(this + 0x10)) + *(long *)(this + 8))) + { + memcpy(*(void **)(this + 0x10),param_1,param_2); + lVar1 = *(long *)(this + 0x10); + *(ulong *)(this + 0x10) = lVar1 + param_2; + *(undefined1 *)(lVar1 + param_2) = 0; + } + return; +} + + +================================================================== + +### FUNC 00176314 (112 bytes) name=Puts + +/* MStream::Puts(char const*) */ + +void __thiscall MStream::Puts(MStream *this,char *param_1) + +{ + size_t sVar1; + long lVar2; + + sVar1 = strlen(param_1); + sVar1 = (size_t)(int)sVar1; + if (sVar1 + 1 < (ulong)((*(long *)this - (long)*(void **)(this + 0x10)) + *(long *)(this + 8))) { + memcpy(*(void **)(this + 0x10),param_1,sVar1); + lVar2 = *(long *)(this + 0x10); + *(size_t *)(this + 0x10) = lVar2 + sVar1; + *(undefined1 *)(lVar2 + sVar1) = 0; + } + return; +} + + +================================================================== + +### FUNC 00176384 (12 bytes) name=Reset + +/* MStream::Reset() */ + +void __thiscall MStream::Reset(MStream *this) + +{ + *(undefined8 *)(this + 0x10) = *(undefined8 *)(this + 8); + return; +} + + +================================================================== + +### FUNC 00176390 (16 bytes) name=Empty + +/* MStream::Empty() const */ + +bool __thiscall MStream::Empty(MStream *this) + +{ + return *(long *)(this + 0x10) == *(long *)(this + 8); +} + + +================================================================== + +### FUNC 001763a0 (116 bytes) name=operator<< + +/* MStream::TEMPNAMEPLACEHOLDERVALUE(char const*) */ + +MStream * __thiscall MStream::operator<<(MStream *this,char *param_1) + +{ + size_t sVar1; + long lVar2; + + sVar1 = strlen(param_1); + sVar1 = (size_t)(int)sVar1; + if (sVar1 + 1 < (ulong)((*(long *)this - (long)*(void **)(this + 0x10)) + *(long *)(this + 8))) { + memcpy(*(void **)(this + 0x10),param_1,sVar1); + lVar2 = *(long *)(this + 0x10); + *(size_t *)(this + 0x10) = lVar2 + sVar1; + *(undefined1 *)(lVar2 + sVar1) = 0; + } + return this; +} + + +================================================================== + +### FUNC 00176414 (48 bytes) name=operator<< + +/* MStream::TEMPNAMEPLACEHOLDERVALUE(char) */ + +void __thiscall MStream::operator<<(MStream *this,char param_1) + +{ + long lVar1; + + if (2 < (ulong)((*(long *)this - (long)*(char **)(this + 0x10)) + *(long *)(this + 8))) { + **(char **)(this + 0x10) = param_1; + lVar1 = *(long *)(this + 0x10); + *(long *)(this + 0x10) = lVar1 + 1; + *(undefined1 *)(lVar1 + 1) = 0; + } + return; +} + + +================================================================== + +### FUNC 00176444 (544 bytes) name=_M_emplace_back_aux + +/* void std::vector >::_M_emplace_back_aux(MStream + const&) */ + +void __thiscall +std::vector>::_M_emplace_back_aux + (vector> *this,MStream *param_1) + +{ + undefined8 *puVar1; + ulong uVar2; + ulong uVar3; + undefined8 *puVar4; + undefined8 *puVar5; + ulong uVar6; + ulong uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + + uVar6 = (*(long *)(this + 8) - *(long *)this >> 3) * -0x5555555555555555; + uVar3 = uVar6; + if (*(long *)(this + 8) - *(long *)this == 0) { + uVar3 = 1; + } + uVar2 = 0xaaaaaaaaaaaaaaa; + if (!CARRY8(uVar3,uVar6) && uVar3 + uVar6 < 0xaaaaaaaaaaaaaab) { + uVar2 = uVar3 + uVar6; + } + if (0xaaaaaaaaaaaaaaa < uVar2) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + puVar5 = operator_new(uVar2 * 0x18); + puVar11 = *(undefined8 **)this; + puVar4 = *(undefined8 **)(this + 8); + uVar12 = *(undefined8 *)param_1; + puVar9 = (undefined8 *)((long)puVar5 + ((long)puVar4 - (long)puVar11)); + puVar9[1] = *(undefined8 *)(param_1 + 8); + *puVar9 = uVar12; + puVar9[2] = *(undefined8 *)(param_1 + 0x10); + if (puVar11 == puVar4) { + puVar9 = puVar5 + 3; + goto joined_r0x00176658; + } + uVar6 = ((long)puVar4 - (long)puVar11) - 0x18; + uVar3 = uVar6 / 0x18 + 1; + puVar10 = puVar11; + puVar9 = puVar5; + if ((uVar3 < 4) || (uVar7 = uVar3 & 0x1ffffffffffffffc, uVar7 == 0)) { +LAB_001765dc: + puVar8 = puVar9 + -3; + do { + uVar12 = *puVar10; + puVar9 = puVar8 + 3; + puVar8[4] = puVar10[1]; + *puVar9 = uVar12; + puVar1 = puVar10 + 2; + puVar10 = puVar10 + 3; + puVar8[5] = *puVar1; + puVar8 = puVar9; + } while (puVar10 != puVar4); + } + else { + uVar6 = uVar6 / 0x18; + if ((puVar5 < puVar11 + uVar6 * 3 + 1 && puVar11 < puVar5 + uVar6 * 3 + 1) || + (puVar5 + 1 < puVar11 + uVar6 * 3 + 3 && puVar11 + 1 < puVar5 + uVar6 * 3 + 3)) + goto LAB_001765dc; + uVar6 = uVar7; + puVar9 = puVar11; + puVar10 = puVar5; + do { + uVar13 = puVar9[1]; + uVar15 = puVar9[2]; + uVar12 = puVar9[3]; + uVar14 = puVar9[4]; + uVar16 = puVar9[5]; + uVar6 = uVar6 - 4; + uVar17 = puVar9[6]; + uVar19 = puVar9[7]; + uVar21 = puVar9[8]; + uVar18 = puVar9[9]; + uVar20 = puVar9[10]; + uVar22 = puVar9[0xb]; + *puVar10 = *puVar9; + puVar10[1] = uVar13; + puVar10[2] = uVar15; + puVar10[3] = uVar12; + puVar10[4] = uVar14; + puVar10[5] = uVar16; + puVar10[6] = uVar17; + puVar10[7] = uVar19; + puVar10[8] = uVar21; + puVar10[9] = uVar18; + puVar10[10] = uVar20; + puVar10[0xb] = uVar22; + puVar9 = puVar9 + 0xc; + puVar10 = puVar10 + 0xc; + } while (uVar6 != 0); + puVar10 = puVar11 + uVar7 * 3; + puVar9 = puVar5 + uVar7 * 3; + if (uVar3 != uVar7) goto LAB_001765dc; + puVar9 = puVar5 + uVar7 * 3 + -3; + } + puVar9 = puVar9 + 6; + if (puVar11 != puVar4) { + do { + if ((void *)puVar11[1] != (void *)0x0) { + operator_delete__((void *)puVar11[1]); + } + puVar11 = puVar11 + 3; + } while (puVar4 != puVar11); + puVar11 = *(undefined8 **)this; + } +joined_r0x00176658: + if (puVar11 != (undefined8 *)0x0) { + operator_delete(puVar11); + } + *(undefined8 **)this = puVar5; + *(undefined8 **)(this + 8) = puVar9; + *(undefined8 **)(this + 0x10) = puVar5 + uVar2 * 3; + return; +} + + +================================================================== + +### FUNC 00176664 (116 bytes) name=GetTickCount + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* GetTickCount() */ + +long GetTickCount(void) + +{ + long lVar1; + int iVar2; + timespec local_38; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + iVar2 = clock_gettime(1,&local_38); + if (*(long *)(lVar1 + 0x28) == local_28) { + return local_38.tv_nsec / 1000000 + local_38.tv_sec * 1000; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar2); +} + + +================================================================== + +### FUNC 001766d8 (12 bytes) name=Sleep + +/* Sleep(int) */ + +int Sleep(int param_1) + +{ + int iVar1; + + iVar1 = usleep(param_1 * 1000); + return iVar1; +} + + +================================================================== + +### FUNC 001766e4 (156 bytes) name=GetLocalTime + +/* GetLocalTime(_SYSTEMTIME*) */ + +void GetLocalTime(_SYSTEMTIME *param_1) + +{ + int iVar1; + long lVar2; + tm *ptVar3; + time_t tStack_30; + long local_28; + + lVar2 = tpidr_el0; + local_28 = *(long *)(lVar2 + 0x28); + time(&tStack_30); + ptVar3 = localtime(&tStack_30); + *(short *)param_1 = (short)ptVar3->tm_year + 0x76c; + *(short *)(param_1 + 2) = (short)ptVar3->tm_mon + 1; + *(short *)(param_1 + 4) = (short)ptVar3->tm_wday; + *(short *)(param_1 + 6) = (short)ptVar3->tm_mday; + *(short *)(param_1 + 8) = (short)ptVar3->tm_hour; + *(short *)(param_1 + 10) = (short)ptVar3->tm_min; + iVar1 = ptVar3->tm_sec; + *(undefined2 *)(param_1 + 0xe) = 400; + *(short *)(param_1 + 0xc) = (short)iVar1; + if (*(long *)(lVar2 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00176780 (3224 bytes) name=GetOffset + +/* GetOffset(char const*, unsigned short*, int, int, int*, int*) */ + +void GetOffset(char *param_1,ushort *param_2,int param_3,int param_4,int *param_5,int *param_6) + +{ + ushort *puVar1; + IFStream *pIVar2; + int *piVar3; + int *piVar4; + ushort *puVar5; + uint uVar6; + int iVar7; + int iVar8; + uint uVar9; + long lVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + ushort *puVar13; + ushort *puVar14; + ushort *puVar15; + ushort *puVar16; + ushort *puVar17; + ushort *puVar18; + ushort *puVar19; + ushort *puVar20; + ulong uVar21; + IFStream *pIVar22; + int *piVar23; + ushort *puVar24; + undefined4 *puVar25; + int *piVar26; + int *piVar27; + int *piVar28; + IFStream *pIVar29; + ulong uVar30; + ulong uVar31; + ushort *puVar32; + ushort *puVar33; + ulong uVar34; + ushort *puVar35; + ulong uVar36; + ushort *puVar37; + long lVar38; + long lVar39; + ushort *puVar40; + ulong uVar41; + ushort *puVar42; + long lVar43; + undefined8 *puVar44; + long lVar45; + ushort *puVar46; + long lVar47; + long lVar48; + int iVar49; + int iVar50; + int iVar51; + int iVar52; + long lVar53; + int iVar61; + int iVar62; + int iVar64; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + long lVar63; + int iVar65; + undefined8 uVar66; + ushort uVar73; + int iVar74; + int iVar76; + int iVar77; + undefined1 auVar67 [16]; + undefined1 auVar68 [16]; + undefined1 auVar69 [16]; + ushort uVar72; + ushort uVar75; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + int iVar78; + ushort uVar80; + ushort uVar81; + int iVar82; + undefined8 uVar79; + ushort uVar83; + int iVar84; + int iVar85; + undefined8 uVar86; + undefined8 uVar87; + int iVar88; + int iVar89; + int iVar90; + int iVar91; + int local_2368 [480]; + IFStream local_1be8 [4]; + IFStream aIStack_1be4 [4]; + undefined8 auStack_1be0 [319]; + int local_11e8 [480]; + int local_a68 [2]; + undefined8 uStack_a60; + undefined8 auStack_a58 [318]; + long local_68; + + lVar10 = tpidr_el0; + local_68 = *(long *)(lVar10 + 0x28); + uVar30 = -(ulong)((uint)(param_4 * param_3) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(param_4 * param_3) << 1; + uVar21 = uVar30 * 2; + if (CARRY8(uVar30,uVar30)) { + uVar21 = 0xffffffffffffffff; + } + DAT_00509668 = param_3; + DAT_0050966c = param_4; + puVar20 = operator_new__(uVar21); + DAT_00509670 = puVar20; + DAT_00509678 = operator_new__(uVar21); + DAT_00509680 = operator_new__(uVar21); + memset(local_a68,0,0x374); + IFStream::IFStream(local_1be8,param_1); + FStream::Read((FStream *)local_1be8,local_a68,0x374,1); + if (((local_a68[0] == 0x374) && ((uint)uStack_a60 == DAT_00509668)) && + (uStack_a60._4_4_ == DAT_0050966c)) { + uVar21 = FStream::Read((FStream *)local_1be8,puVar20, + -(ulong)(uStack_a60._4_4_ * (uint)uStack_a60 >> 0x1f) & + 0xfffffffe00000000 | (ulong)(uStack_a60._4_4_ * (uint)uStack_a60) << 1,1) + ; + uVar21 = uVar21 & 0xffffffff; + } + else { + uVar21 = 0; + } + OFStream::~OFStream((OFStream *)local_1be8); + puVar24 = DAT_00509678; + puVar20 = DAT_00509670; + iVar7 = DAT_0050966c; + uVar9 = DAT_00509668; + lVar48 = (long)(int)DAT_00509668; + lVar47 = (long)DAT_0050966c; + if (uVar21 != (long)(int)(DAT_0050966c * DAT_00509668) * 2) { + if (DAT_00509670 != (ushort *)0x0) { + operator_delete__(DAT_00509670); + DAT_00509670 = (ushort *)0x0; + } + if (DAT_00509678 != (ushort *)0x0) { + operator_delete__(DAT_00509678); + DAT_00509678 = (ushort *)0x0; + } + if (DAT_00509680 != (ushort *)0x0) { + operator_delete__(DAT_00509680); + DAT_00509680 = (ushort *)0x0; + } + puVar25 = (undefined4 *)__errno(); + uVar66 = 0; + *puVar25 = 0xe4ae0009; + goto LAB_00177400; + } + uVar21 = (ulong)DAT_00509668; + FUN_00177438(DAT_00509678,DAT_00509670); + puVar37 = DAT_00509680; + FUN_00177438(DAT_00509680,param_2); + iVar8 = iVar7 + -2; + iVar52 = iVar8 * uVar9; + iVar49 = iVar52 + -2; + if (iVar49 != 0) { + uVar30 = (ulong)(iVar52 - 3); + puVar33 = puVar24 + lVar48 * 2; + puVar32 = puVar24 + lVar48; + puVar35 = puVar20 + lVar48; + iVar50 = iVar49; + puVar40 = puVar24; + if (7 < uVar30 + 1) { + uVar6 = iVar52 + 6U & 7; + lVar39 = (uVar30 + 1) - (ulong)uVar6; + if (lVar39 != 0) { + puVar42 = puVar20 + lVar48 + 1; + puVar46 = puVar20 + lVar48 + uVar30 + 2; + if (((puVar24 + lVar48 + uVar30 + 3 <= puVar42 || puVar46 <= puVar32) && + (puVar24 + lVar48 * 2 + uVar30 + 2 <= puVar42 || puVar46 <= puVar24 + (lVar48 * 2 | 1))) + && (puVar24 + uVar30 + 2 <= puVar42 || puVar46 <= puVar24 + 1)) { + iVar50 = (int)lVar39; + puVar42 = puVar20 + 1; + puVar40 = puVar24 + lVar39; + puVar33 = puVar33 + lVar39; + puVar35 = puVar35 + lVar39; + puVar32 = puVar32 + lVar39; + puVar46 = puVar24; + do { + puVar1 = puVar46 + lVar48 * 2 + 1; + puVar13 = puVar46 + lVar48 * 2 + 2; + puVar14 = puVar46 + lVar48 * 2 + 3; + puVar15 = puVar46 + lVar48 * 2 + 4; + puVar16 = puVar46 + lVar48 * 2 + 5; + puVar17 = puVar46 + lVar48 * 2 + 6; + puVar18 = puVar46 + lVar48 * 2 + 7; + puVar19 = puVar46 + lVar48 * 2 + 8; + puVar5 = puVar46 + lVar48; + auVar55 = *(undefined1 (*) [16])(puVar46 + 1); + uVar79 = *(undefined8 *)(puVar5 + 4); + uVar66 = *(undefined8 *)puVar5; + uVar87 = *(undefined8 *)(puVar5 + 6); + uVar86 = *(undefined8 *)(puVar5 + 2); + puVar46 = puVar46 + 8; + iVar88 = MP_INT_ABS((auVar55._8_4_ & 0xffff) - (uint)*puVar16); + iVar89 = MP_INT_ABS((uint)auVar55._10_2_ - (uint)*puVar17); + iVar90 = MP_INT_ABS((uint)auVar55._12_2_ - (uint)*puVar18); + iVar91 = MP_INT_ABS((uint)auVar55._14_2_ - (uint)*puVar19); + iVar51 = MP_INT_ABS((uint)auVar55._0_2_ - (uint)*puVar1); + iVar61 = MP_INT_ABS((uint)auVar55._2_2_ - (uint)*puVar13); + iVar62 = MP_INT_ABS((uint)auVar55._4_2_ - (uint)*puVar14); + iVar64 = MP_INT_ABS((uint)auVar55._6_2_ - (uint)*puVar15); + iVar65 = MP_INT_ABS(((uint)uVar79 & 0xffff) - (uint)(ushort)uVar87); + iVar74 = MP_INT_ABS((uint)(ushort)((ulong)uVar79 >> 0x10) - + (uint)(ushort)((ulong)uVar87 >> 0x10)); + iVar76 = MP_INT_ABS((uint)(ushort)((ulong)uVar79 >> 0x20) - + (uint)(ushort)((ulong)uVar87 >> 0x20)); + iVar77 = MP_INT_ABS((uint)(ushort)((ulong)uVar79 >> 0x30) - + (uint)(ushort)((ulong)uVar87 >> 0x30)); + iVar78 = MP_INT_ABS(((uint)uVar66 & 0xffff) - ((uint)uVar86 & 0xffff)); + iVar82 = MP_INT_ABS((uint)(ushort)((ulong)uVar66 >> 0x10) - + (uint)(ushort)((ulong)uVar86 >> 0x10)); + iVar84 = MP_INT_ABS((uint)(ushort)((ulong)uVar66 >> 0x20) - + (uint)(ushort)((ulong)uVar86 >> 0x20)); + iVar85 = MP_INT_ABS((uint)(ushort)((ulong)uVar66 >> 0x30) - + (uint)(ushort)((ulong)uVar86 >> 0x30)); + auVar54._0_4_ = iVar78 + iVar51; + auVar54._4_4_ = iVar82 + iVar61; + auVar54._8_4_ = iVar84 + iVar62; + auVar54._12_4_ = iVar85 + iVar64; + auVar67._0_4_ = iVar65 + iVar88; + auVar67._4_4_ = iVar74 + iVar89; + auVar67._8_4_ = iVar76 + iVar90; + auVar67._12_4_ = iVar77 + iVar91; + auVar55._8_4_ = 0xffff; + auVar55._0_8_ = 0xffff0000ffff; + auVar55._12_4_ = 0xffff; + auVar55 = NEON_smin(auVar54,auVar55,4); + auVar68._8_4_ = 0xffff; + auVar68._0_8_ = 0xffff0000ffff; + auVar68._12_4_ = 0xffff; + auVar68 = NEON_smin(auVar67,auVar68,4); + auVar56._0_8_ = + CONCAT26(auVar55._12_2_, + CONCAT24(auVar55._8_2_,CONCAT22(auVar55._4_2_,auVar55._0_2_))); + auVar56._8_2_ = auVar68._0_2_; + auVar56._10_2_ = auVar68._4_2_; + auVar56._12_2_ = auVar68._8_2_; + auVar56._14_2_ = auVar68._12_2_; + lVar39 = lVar39 + -8; + *(long *)(puVar42 + lVar48 + 4) = auVar56._8_8_; + *(undefined8 *)(puVar42 + lVar48) = auVar56._0_8_; + puVar42 = puVar42 + 8; + } while (lVar39 != 0); + iVar50 = iVar49 - iVar50; + if (uVar6 == 0) goto LAB_00176a9c; + } + } + } + do { + puVar35 = puVar35 + 1; + puVar33 = puVar33 + 1; + iVar50 = iVar50 + -1; + iVar61 = (uint)puVar40[1] - (uint)*puVar33; + iVar51 = -iVar61; + if (-1 < iVar61) { + iVar51 = iVar61; + } + iVar62 = (uint)*puVar32 - (uint)puVar32[2]; + iVar61 = -iVar62; + if (-1 < iVar62) { + iVar61 = iVar62; + } + iVar61 = iVar61 + iVar51; + if (0xfffe < iVar61) { + iVar61 = 0xffff; + } + *puVar35 = (ushort)iVar61; + puVar32 = puVar32 + 1; + puVar40 = puVar40 + 1; + } while (iVar50 != 0); + } +LAB_00176a9c: + uVar30 = lVar48 * 2; + memset(puVar20,0,uVar30); + lVar39 = lVar47 + -1; + iVar50 = (int)lVar39 * uVar9; + memset(puVar20 + iVar50,0,uVar30); + if (2 < iVar7) { + lVar38 = lVar39; + if (lVar39 < 3) { + lVar38 = 2; + } + uVar34 = lVar38 - 1; + if (((uVar34 < 0x10) || (uVar36 = uVar34 & 0xfffffffffffffff0, uVar36 == 0)) || (uVar9 != 1)) { + uVar31 = 1; + } + else { + uVar31 = uVar36 | 1; + iVar51 = 1; + puVar32 = puVar20 + 9; + uVar41 = uVar36; + do { + puVar32[-4] = 0; + puVar32[-3] = 0; + puVar32[-2] = 0; + puVar32[-1] = 0; + puVar32[-8] = 0; + puVar32[-7] = 0; + puVar32[-6] = 0; + puVar32[-5] = 0; + puVar32[4] = 0; + puVar32[5] = 0; + puVar32[6] = 0; + puVar32[7] = 0; + puVar32[0] = 0; + puVar32[1] = 0; + puVar32[2] = 0; + puVar32[3] = 0; + puVar33 = puVar20 + iVar51; + iVar51 = iVar51 + 0x10; + uVar41 = uVar41 - 0x10; + puVar32 = puVar32 + 0x10; + puVar33[4] = 0; + puVar33[5] = 0; + puVar33[6] = 0; + puVar33[7] = 0; + puVar33[0] = 0; + puVar33[1] = 0; + puVar33[2] = 0; + puVar33[3] = 0; + puVar33[0xc] = 0; + puVar33[0xd] = 0; + puVar33[0xe] = 0; + puVar33[0xf] = 0; + puVar33[8] = 0; + puVar33[9] = 0; + puVar33[10] = 0; + puVar33[0xb] = 0; + } while (uVar41 != 0); + if (uVar34 == uVar36) goto LAB_00176b78; + } + iVar51 = uVar9 + (int)(uVar31 * lVar48) + -1; + puVar32 = puVar20 + uVar31 * lVar48; + do { + uVar31 = uVar31 + 1; + *puVar32 = 0; + puVar20[iVar51] = 0; + iVar51 = iVar51 + uVar9; + puVar32 = puVar32 + lVar48; + } while ((long)uVar31 < lVar39); + } +LAB_00176b78: + if (iVar49 != 0) { + puVar33 = puVar37 + lVar48 * 2; + puVar32 = puVar37 + lVar48; + puVar35 = param_2 + lVar48; + uVar34 = (ulong)(iVar52 - 3); + if (7 < uVar34 + 1) { + uVar6 = iVar52 + 6U & 7; + lVar38 = (uVar34 + 1) - (ulong)uVar6; + if (lVar38 != 0) { + puVar40 = param_2 + lVar48 + 1; + puVar42 = param_2 + lVar48 + uVar34 + 2; + if (((puVar37 + lVar48 + uVar34 + 3 <= puVar40 || puVar42 <= puVar32) && + (puVar37 + uVar30 + uVar34 + 2 <= puVar40 || puVar42 <= puVar37 + (uVar30 | 1))) && + (puVar37 + uVar34 + 2 <= puVar40 || puVar42 <= puVar37 + 1)) { + iVar49 = iVar49 - (int)lVar38; + puVar40 = param_2 + 1; + puVar42 = puVar37 + lVar38; + puVar33 = puVar33 + lVar38; + puVar35 = puVar35 + lVar38; + puVar32 = puVar32 + lVar38; + do { + puVar46 = puVar37 + lVar48 * 2 + 1; + puVar5 = puVar37 + lVar48 * 2 + 2; + puVar13 = puVar37 + lVar48 * 2 + 3; + puVar14 = puVar37 + lVar48 * 2 + 4; + puVar15 = puVar37 + lVar48 * 2 + 5; + puVar16 = puVar37 + lVar48 * 2 + 6; + puVar17 = puVar37 + lVar48 * 2 + 7; + puVar18 = puVar37 + lVar48 * 2 + 8; + puVar1 = puVar37 + lVar48; + auVar55 = *(undefined1 (*) [16])(puVar37 + 1); + uVar79 = *(undefined8 *)(puVar1 + 4); + uVar66 = *(undefined8 *)puVar1; + uVar87 = *(undefined8 *)(puVar1 + 6); + uVar86 = *(undefined8 *)(puVar1 + 2); + puVar37 = puVar37 + 8; + iVar85 = MP_INT_ABS((auVar55._8_4_ & 0xffff) - (uint)*puVar15); + iVar88 = MP_INT_ABS((uint)auVar55._10_2_ - (uint)*puVar16); + iVar89 = MP_INT_ABS((uint)auVar55._12_2_ - (uint)*puVar17); + iVar90 = MP_INT_ABS((uint)auVar55._14_2_ - (uint)*puVar18); + iVar52 = MP_INT_ABS((uint)auVar55._0_2_ - (uint)*puVar46); + iVar51 = MP_INT_ABS((uint)auVar55._2_2_ - (uint)*puVar5); + iVar61 = MP_INT_ABS((uint)auVar55._4_2_ - (uint)*puVar13); + iVar62 = MP_INT_ABS((uint)auVar55._6_2_ - (uint)*puVar14); + iVar64 = MP_INT_ABS(((uint)uVar79 & 0xffff) - (uint)(ushort)uVar87); + iVar65 = MP_INT_ABS((uint)(ushort)((ulong)uVar79 >> 0x10) - + (uint)(ushort)((ulong)uVar87 >> 0x10)); + iVar74 = MP_INT_ABS((uint)(ushort)((ulong)uVar79 >> 0x20) - + (uint)(ushort)((ulong)uVar87 >> 0x20)); + iVar76 = MP_INT_ABS((uint)(ushort)((ulong)uVar79 >> 0x30) - + (uint)(ushort)((ulong)uVar87 >> 0x30)); + iVar77 = MP_INT_ABS(((uint)uVar66 & 0xffff) - ((uint)uVar86 & 0xffff)); + iVar78 = MP_INT_ABS((uint)(ushort)((ulong)uVar66 >> 0x10) - + (uint)(ushort)((ulong)uVar86 >> 0x10)); + iVar82 = MP_INT_ABS((uint)(ushort)((ulong)uVar66 >> 0x20) - + (uint)(ushort)((ulong)uVar86 >> 0x20)); + iVar84 = MP_INT_ABS((uint)(ushort)((ulong)uVar66 >> 0x30) - + (uint)(ushort)((ulong)uVar86 >> 0x30)); + auVar57._0_4_ = iVar77 + iVar52; + auVar57._4_4_ = iVar78 + iVar51; + auVar57._8_4_ = iVar82 + iVar61; + auVar57._12_4_ = iVar84 + iVar62; + auVar69._0_4_ = iVar64 + iVar85; + auVar69._4_4_ = iVar65 + iVar88; + auVar69._8_4_ = iVar74 + iVar89; + auVar69._12_4_ = iVar76 + iVar90; + auVar11._8_4_ = 0xffff; + auVar11._0_8_ = 0xffff0000ffff; + auVar11._12_4_ = 0xffff; + auVar55 = NEON_smin(auVar57,auVar11,4); + auVar12._8_4_ = 0xffff; + auVar12._0_8_ = 0xffff0000ffff; + auVar12._12_4_ = 0xffff; + auVar68 = NEON_smin(auVar69,auVar12,4); + auVar58._0_8_ = + CONCAT26(auVar55._12_2_, + CONCAT24(auVar55._8_2_,CONCAT22(auVar55._4_2_,auVar55._0_2_))); + auVar58._8_2_ = auVar68._0_2_; + auVar58._10_2_ = auVar68._4_2_; + auVar58._12_2_ = auVar68._8_2_; + auVar58._14_2_ = auVar68._12_2_; + lVar38 = lVar38 + -8; + *(long *)(puVar40 + lVar48 + 4) = auVar58._8_8_; + *(undefined8 *)(puVar40 + lVar48) = auVar58._0_8_; + puVar40 = puVar40 + 8; + } while (lVar38 != 0); + puVar37 = puVar42; + if (uVar6 == 0) goto LAB_00176d08; + } + } + } + do { + puVar35 = puVar35 + 1; + puVar33 = puVar33 + 1; + iVar49 = iVar49 + -1; + iVar51 = (uint)puVar37[1] - (uint)*puVar33; + iVar52 = -iVar51; + if (-1 < iVar51) { + iVar52 = iVar51; + } + iVar61 = (uint)*puVar32 - (uint)puVar32[2]; + iVar51 = -iVar61; + if (-1 < iVar61) { + iVar51 = iVar61; + } + iVar51 = iVar51 + iVar52; + if (0xfffe < iVar51) { + iVar51 = 0xffff; + } + *puVar35 = (ushort)iVar51; + puVar32 = puVar32 + 1; + puVar37 = puVar37 + 1; + } while (iVar49 != 0); + } +LAB_00176d08: + memset(param_2,0,uVar30); + memset(param_2 + iVar50,0,uVar30); + if (2 < iVar7) { + lVar38 = (long)(int)lVar39; + lVar39 = lVar38; + if (lVar38 < 3) { + lVar39 = 2; + } + uVar30 = lVar39 - 1; + if (((uVar30 < 0x10) || (uVar34 = uVar30 & 0xfffffffffffffff0, uVar34 == 0)) || (uVar9 != 1)) { + uVar36 = 1; + } + else { + uVar36 = uVar34 | 1; + iVar52 = 1; + puVar37 = param_2 + 9; + uVar31 = uVar34; + do { + puVar37[-4] = 0; + puVar37[-3] = 0; + puVar37[-2] = 0; + puVar37[-1] = 0; + puVar37[-8] = 0; + puVar37[-7] = 0; + puVar37[-6] = 0; + puVar37[-5] = 0; + puVar37[4] = 0; + puVar37[5] = 0; + puVar37[6] = 0; + puVar37[7] = 0; + puVar37[0] = 0; + puVar37[1] = 0; + puVar37[2] = 0; + puVar37[3] = 0; + puVar32 = param_2 + iVar52; + iVar52 = iVar52 + 0x10; + uVar31 = uVar31 - 0x10; + puVar37 = puVar37 + 0x10; + puVar32[4] = 0; + puVar32[5] = 0; + puVar32[6] = 0; + puVar32[7] = 0; + puVar32[0] = 0; + puVar32[1] = 0; + puVar32[2] = 0; + puVar32[3] = 0; + puVar32[0xc] = 0; + puVar32[0xd] = 0; + puVar32[0xe] = 0; + puVar32[0xf] = 0; + puVar32[8] = 0; + puVar32[9] = 0; + puVar32[10] = 0; + puVar32[0xb] = 0; + } while (uVar31 != 0); + if (uVar30 == uVar34) goto LAB_00176dd8; + } + iVar52 = uVar9 + (int)(uVar36 * lVar48) + -1; + puVar37 = param_2 + uVar36 * lVar48; + do { + uVar36 = uVar36 + 1; + *puVar37 = 0; + param_2[iVar52] = 0; + iVar52 = iVar52 + uVar9; + puVar37 = puVar37 + lVar48; + } while ((long)uVar36 < lVar38); + } +LAB_00176dd8: + memset(local_a68,0,0xa00); + memset(local_11e8,0,0x780); + memset(local_1be8,0,0xa00); + memset(local_2368,0,0x780); + if (0 < iVar7) { + lVar39 = 0; + lVar48 = (ulong)(uVar9 - 1) + 1; + lVar38 = uVar21 - (uVar9 & 7); + puVar37 = puVar20; + do { + if ((int)uVar9 < 1) { + iVar52 = 0; + } + else { + if ((uVar9 < 8) || (lVar38 == 0)) { + lVar43 = 0; + iVar52 = 0; + puVar32 = puVar37; +LAB_00176ed4: + lVar45 = uVar21 - lVar43; + piVar26 = local_a68 + lVar43; + do { + lVar45 = lVar45 + -1; + iVar52 = iVar52 + (uint)*puVar32; + *piVar26 = *piVar26 + (uint)*puVar32; + puVar32 = puVar32 + 1; + piVar26 = piVar26 + 1; + } while (lVar45 != 0); + } + else { + puVar32 = puVar37 + 4; + iVar52 = 0; + iVar49 = 0; + iVar50 = 0; + iVar51 = 0; + lVar43 = lVar38; + puVar44 = auStack_a58; + auVar55 = ZEXT816(0); + do { + uVar66 = *(undefined8 *)(puVar32 + -4); + uVar79 = *(undefined8 *)puVar32; + puVar32 = puVar32 + 8; + lVar43 = lVar43 + -8; + uVar72 = (ushort)((ulong)uVar66 >> 0x10); + uVar73 = (ushort)((ulong)uVar66 >> 0x20); + uVar75 = (ushort)((ulong)uVar66 >> 0x30); + iVar52 = iVar52 + (uint)(ushort)uVar66; + iVar49 = iVar49 + (uint)uVar72; + iVar50 = iVar50 + (uint)uVar73; + iVar51 = iVar51 + (uint)uVar75; + uVar80 = (ushort)((ulong)uVar79 >> 0x10); + uVar81 = (ushort)((ulong)uVar79 >> 0x20); + uVar83 = (ushort)((ulong)uVar79 >> 0x30); + auVar59._0_4_ = auVar55._0_4_ + ((uint)uVar79 & 0xffff); + auVar59._4_4_ = auVar55._4_4_ + (uint)uVar80; + auVar59._8_4_ = auVar55._8_4_ + (uint)uVar81; + auVar59._12_4_ = auVar55._12_4_ + (uint)uVar83; + auVar70._0_8_ = + CONCAT44((int)((ulong)puVar44[-2] >> 0x20) + (uint)uVar72, + (int)puVar44[-2] + ((uint)uVar66 & 0xffff)); + auVar70._8_4_ = (int)puVar44[-1] + (uint)uVar73; + auVar70._12_4_ = (int)((ulong)puVar44[-1] >> 0x20) + (uint)uVar75; + puVar44[-1] = auVar70._8_8_; + puVar44[-2] = auVar70._0_8_; + puVar44[1] = CONCAT44((int)((ulong)puVar44[1] >> 0x20) + (uint)uVar83, + (int)puVar44[1] + (uint)uVar81); + *puVar44 = CONCAT44((int)((ulong)*puVar44 >> 0x20) + (uint)uVar80, + (int)*puVar44 + ((uint)uVar79 & 0xffff)); + puVar44 = puVar44 + 4; + auVar55 = auVar59; + } while (lVar43 != 0); + iVar52 = auVar59._0_4_ + iVar52 + auVar59._4_4_ + iVar49 + + auVar59._8_4_ + iVar50 + auVar59._12_4_ + iVar51; + puVar32 = puVar37 + lVar38; + lVar43 = lVar38; + if ((uVar9 & 7) != 0) goto LAB_00176ed4; + } + puVar37 = puVar37 + lVar48; + } + local_11e8[lVar39] = iVar52; + lVar39 = lVar39 + 1; + } while (lVar39 != lVar47); + lVar39 = 0; + lVar38 = uVar21 - (uVar9 & 7); + do { + if ((int)uVar9 < 1) { + iVar52 = 0; + } + else { + if ((uVar9 < 8) || (lVar38 == 0)) { + lVar43 = 0; + iVar52 = 0; + puVar37 = param_2; +LAB_00176fa8: + lVar45 = uVar21 - lVar43; + pIVar22 = local_1be8 + lVar43 * 4; + do { + lVar45 = lVar45 + -1; + iVar52 = iVar52 + (uint)*puVar37; + *(uint *)pIVar22 = *(int *)pIVar22 + (uint)*puVar37; + puVar37 = puVar37 + 1; + pIVar22 = pIVar22 + 4; + } while (lVar45 != 0); + } + else { + puVar37 = param_2 + 4; + iVar52 = 0; + iVar49 = 0; + iVar50 = 0; + iVar51 = 0; + lVar43 = lVar38; + puVar44 = auStack_1be0 + 1; + auVar55 = ZEXT816(0); + do { + uVar66 = *(undefined8 *)(puVar37 + -4); + uVar79 = *(undefined8 *)puVar37; + puVar37 = puVar37 + 8; + lVar43 = lVar43 + -8; + uVar72 = (ushort)((ulong)uVar66 >> 0x10); + uVar73 = (ushort)((ulong)uVar66 >> 0x20); + uVar75 = (ushort)((ulong)uVar66 >> 0x30); + iVar52 = iVar52 + (uint)(ushort)uVar66; + iVar49 = iVar49 + (uint)uVar72; + iVar50 = iVar50 + (uint)uVar73; + iVar51 = iVar51 + (uint)uVar75; + uVar80 = (ushort)((ulong)uVar79 >> 0x10); + uVar81 = (ushort)((ulong)uVar79 >> 0x20); + uVar83 = (ushort)((ulong)uVar79 >> 0x30); + auVar60._0_4_ = auVar55._0_4_ + ((uint)uVar79 & 0xffff); + auVar60._4_4_ = auVar55._4_4_ + (uint)uVar80; + auVar60._8_4_ = auVar55._8_4_ + (uint)uVar81; + auVar60._12_4_ = auVar55._12_4_ + (uint)uVar83; + auVar71._0_8_ = + CONCAT44((int)((ulong)puVar44[-2] >> 0x20) + (uint)uVar72, + (int)puVar44[-2] + ((uint)uVar66 & 0xffff)); + auVar71._8_4_ = (int)puVar44[-1] + (uint)uVar73; + auVar71._12_4_ = (int)((ulong)puVar44[-1] >> 0x20) + (uint)uVar75; + puVar44[-1] = auVar71._8_8_; + puVar44[-2] = auVar71._0_8_; + puVar44[1] = CONCAT44((int)((ulong)puVar44[1] >> 0x20) + (uint)uVar83, + (int)puVar44[1] + (uint)uVar81); + *puVar44 = CONCAT44((int)((ulong)*puVar44 >> 0x20) + (uint)uVar80, + (int)*puVar44 + ((uint)uVar79 & 0xffff)); + puVar44 = puVar44 + 4; + auVar55 = auVar60; + } while (lVar43 != 0); + iVar52 = auVar60._0_4_ + iVar52 + auVar60._4_4_ + iVar49 + + auVar60._8_4_ + iVar50 + auVar60._12_4_ + iVar51; + puVar37 = param_2 + lVar38; + lVar43 = lVar38; + if ((uVar9 & 7) != 0) goto LAB_00176fa8; + } + param_2 = param_2 + lVar48; + } + local_2368[lVar39] = iVar52; + lVar39 = lVar39 + 1; + } while (lVar39 != lVar47); + } + iVar49 = uVar9 - 2; + iVar52 = (int)((ulong)((long)iVar49 * 0x55555555) >> 0x20) - iVar49; + iVar52 = (iVar52 >> 1) - (iVar52 >> 0x1f); + iVar50 = iVar52 + -1; + lVar47 = 0; + if (iVar52 < iVar49 / 3) { + lVar39 = (long)iVar52; + lVar38 = lVar47; + lVar43 = 0x7fffffffffffffff; + do { + iVar51 = (int)lVar39; + iVar52 = -iVar51; + if (-1 < lVar39) { + iVar52 = iVar51; + } + iVar61 = iVar49 - iVar52; + if (iVar61 == 0) { + lVar48 = 0; + } + else { + uVar6 = (uVar9 - 3) - iVar52; + uVar21 = (ulong)uVar6 + 1; + piVar26 = local_a68 + 1 + -iVar51; + pIVar22 = local_1be8 + 4; + if (-1 < lVar39) { + piVar26 = local_a68 + 1; + pIVar22 = local_1be8 + 4 + lVar39 * 4; + } + if (uVar21 < 4) { +LAB_00177114: + lVar48 = 0; + iVar52 = iVar61; + } + else { + uVar6 = uVar6 + 1 & 3; + lVar47 = uVar21 - uVar6; + if (lVar47 == 0) goto LAB_00177114; + iVar52 = iVar61 - (int)lVar47; + piVar23 = piVar26 + 2; + pIVar29 = pIVar22 + 8; + lVar48 = 0; + lVar45 = 0; + pIVar22 = pIVar22 + lVar47 * 4; + piVar26 = piVar26 + lVar47; + lVar53 = 0; + lVar63 = 0; + do { + piVar27 = piVar23 + -2; + uVar66 = *(undefined8 *)piVar23; + pIVar2 = pIVar29 + -8; + uVar79 = *(undefined8 *)pIVar29; + piVar23 = piVar23 + 4; + lVar47 = lVar47 + -4; + pIVar29 = pIVar29 + 0x10; + iVar62 = (int)*(undefined8 *)piVar27 - (int)*(undefined8 *)pIVar2; + iVar64 = (int)((ulong)*(undefined8 *)piVar27 >> 0x20) - + (int)((ulong)*(undefined8 *)pIVar2 >> 0x20); + iVar65 = (int)uVar66 - (int)uVar79; + iVar74 = (int)((ulong)uVar66 >> 0x20) - (int)((ulong)uVar79 >> 0x20); + lVar48 = lVar48 + (long)iVar62 * (long)iVar62; + lVar45 = lVar45 + (long)iVar64 * (long)iVar64; + lVar53 = lVar53 + (long)iVar65 * (long)iVar65; + lVar63 = lVar63 + (long)iVar74 * (long)iVar74; + } while (lVar47 != 0); + lVar48 = lVar53 + lVar48 + lVar63 + lVar45; + if (uVar6 == 0) goto LAB_00177130; + } + do { + iVar52 = iVar52 + -1; + lVar48 = lVar48 + ((long)*piVar26 - (long)*(int *)pIVar22) * + ((long)*piVar26 - (long)*(int *)pIVar22); + pIVar22 = pIVar22 + 4; + piVar26 = piVar26 + 1; + } while (iVar52 != 0); + } +LAB_00177130: + lVar47 = 0; + if ((long)iVar61 != 0) { + lVar47 = lVar48 / (long)iVar61; + } + lVar48 = lVar47; + if (lVar43 <= lVar47) { + lVar48 = lVar43; + iVar51 = iVar50; + } + iVar50 = iVar51; + lVar39 = lVar39 + 1; + if (lVar47 <= lVar38) { + lVar47 = lVar38; + } + lVar38 = lVar47; + lVar43 = lVar48; + } while (lVar39 != iVar49 / 3); + lVar48 = lVar48 << 1; + } + else { + lVar48 = -2; + } + iVar52 = uVar9 + 1; + if (-1 < iVar49) { + iVar52 = iVar49; + } + if (((iVar50 < -(iVar52 >> 2)) || (iVar52 >> 2 < iVar50)) || (lVar47 < lVar48)) { +LAB_00177354: + *param_5 = 0; + *param_6 = 0; + } + else { + *param_5 = iVar50; + iVar52 = (int)((ulong)((long)iVar8 * 0x55555555) >> 0x20) - iVar8; + iVar52 = (iVar52 >> 1) - (iVar52 >> 0x1f); + iVar49 = iVar52 + -1; + lVar47 = 0; + if (iVar52 < iVar8 / 3) { + lVar39 = (long)iVar52; + lVar38 = lVar47; + lVar43 = 0x7fffffffffffffff; + do { + iVar50 = (int)lVar39; + iVar52 = -iVar50; + if (-1 < lVar39) { + iVar52 = iVar50; + } + iVar51 = iVar8 - iVar52; + if (iVar51 == 0) { + lVar48 = 0; + } + else { + uVar9 = (iVar7 + -3) - iVar52; + uVar21 = (ulong)uVar9 + 1; + piVar23 = local_11e8 + 1 + -iVar50; + piVar26 = local_2368 + 1; + if (-1 < lVar39) { + piVar23 = local_11e8 + 1; + piVar26 = local_2368 + 1 + lVar39; + } + if (uVar21 < 4) { +LAB_001772c8: + lVar48 = 0; + iVar52 = iVar51; + } + else { + uVar9 = uVar9 + 1 & 3; + lVar47 = uVar21 - uVar9; + if (lVar47 == 0) goto LAB_001772c8; + iVar52 = iVar51 - (int)lVar47; + piVar27 = piVar23 + 2; + piVar28 = piVar26 + 2; + lVar48 = 0; + lVar45 = 0; + piVar26 = piVar26 + lVar47; + piVar23 = piVar23 + lVar47; + lVar53 = 0; + lVar63 = 0; + do { + piVar3 = piVar27 + -2; + uVar66 = *(undefined8 *)piVar27; + piVar4 = piVar28 + -2; + uVar79 = *(undefined8 *)piVar28; + piVar27 = piVar27 + 4; + lVar47 = lVar47 + -4; + piVar28 = piVar28 + 4; + iVar61 = (int)*(undefined8 *)piVar3 - (int)*(undefined8 *)piVar4; + iVar62 = (int)((ulong)*(undefined8 *)piVar3 >> 0x20) - + (int)((ulong)*(undefined8 *)piVar4 >> 0x20); + iVar64 = (int)uVar66 - (int)uVar79; + iVar65 = (int)((ulong)uVar66 >> 0x20) - (int)((ulong)uVar79 >> 0x20); + lVar48 = lVar48 + (long)iVar61 * (long)iVar61; + lVar45 = lVar45 + (long)iVar62 * (long)iVar62; + lVar53 = lVar53 + (long)iVar64 * (long)iVar64; + lVar63 = lVar63 + (long)iVar65 * (long)iVar65; + } while (lVar47 != 0); + lVar48 = lVar53 + lVar48 + lVar63 + lVar45; + if (uVar9 == 0) goto LAB_001772e4; + } + do { + iVar52 = iVar52 + -1; + lVar48 = lVar48 + ((long)*piVar23 - (long)*piVar26) * ((long)*piVar23 - (long)*piVar26); + piVar23 = piVar23 + 1; + piVar26 = piVar26 + 1; + } while (iVar52 != 0); + } +LAB_001772e4: + lVar47 = 0; + if ((long)iVar51 != 0) { + lVar47 = lVar48 / (long)iVar51; + } + lVar48 = lVar47; + if (lVar43 <= lVar47) { + lVar48 = lVar43; + iVar50 = iVar49; + } + iVar49 = iVar50; + lVar39 = lVar39 + 1; + if (lVar47 <= lVar38) { + lVar47 = lVar38; + } + lVar38 = lVar47; + lVar43 = lVar48; + } while (lVar39 != iVar8 / 3); + lVar48 = lVar48 << 1; + } + else { + lVar48 = -2; + } + iVar7 = iVar7 + 1; + if (-1 < iVar8) { + iVar7 = iVar8; + } + if (((iVar49 < -(iVar7 >> 2)) || (iVar7 >> 2 < iVar49)) || (lVar47 < lVar48)) goto LAB_00177354; + *param_6 = iVar49; + } + if (puVar20 != (ushort *)0x0) { + operator_delete__(puVar20); + DAT_00509670 = (ushort *)0x0; + puVar24 = DAT_00509678; + } + if (puVar24 != (ushort *)0x0) { + operator_delete__(puVar24); + DAT_00509678 = (ushort *)0x0; + } + if (DAT_00509680 != (ushort *)0x0) { + operator_delete__(DAT_00509680); + DAT_00509680 = (ushort *)0x0; + } + uVar66 = 1; +LAB_00177400: + if (*(long *)(lVar10 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar66); + } + return; +} + + +================================================================== + +### FUNC 00177438 (520 bytes) name=FUN_00177438 + +void FUN_00177438(void *param_1,ushort *param_2) + +{ + int iVar1; + undefined8 *puVar2; + undefined8 *puVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + long lVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + ulong uVar12; + int iVar13; + int iVar14; + ulong uVar15; + long lVar16; + size_t __n; + long lVar17; + long lVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + + iVar7 = DAT_0050966c; + iVar6 = DAT_00509668; + lVar18 = (long)DAT_0050966c; + lVar17 = (long)DAT_00509668; + iVar4 = (DAT_0050966c + -2) * DAT_00509668; + __n = lVar17 * 2; + if (iVar4 != 2) { + lVar8 = 0; + iVar1 = (uint)param_2[lVar17 + 1] + (uint)param_2[1] + (uint)param_2[lVar17 * 2 + 1]; + iVar13 = (uint)param_2[lVar17] + (uint)*param_2 + (uint)param_2[lVar17 * 2]; + do { + iVar14 = iVar1; + lVar16 = lVar8 * 2; + iVar1 = (uint)param_2[lVar17 + lVar8 + 2] + (uint)param_2[lVar8 + 2] + + (uint)param_2[lVar17 * 2 + lVar8 + 2]; + lVar8 = lVar8 + 1; + *(short *)((long)param_1 + lVar16 + __n + 2) = (short)((uint)(iVar14 + iVar13 + iVar1) / 9); + iVar13 = iVar14; + } while (iVar4 + -2 != (int)lVar8); + } + memcpy(param_1,param_2,__n); + lVar18 = lVar18 + -1; + uVar5 = (int)lVar18 * iVar6; + uVar9 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + memcpy((void *)((long)param_1 + uVar9),(void *)((long)param_2 + uVar9),__n); + if (iVar7 < 3) { + return; + } + lVar8 = lVar18; + if (lVar18 < 3) { + lVar8 = 2; + } + uVar9 = lVar8 - 1; + if (0xf < uVar9) { + uVar11 = uVar9 & 0xfffffffffffffff0; + uVar10 = 1; + if ((uVar11 == 0) || (iVar6 != 1)) goto LAB_00177554; + lVar8 = lVar18; + if (lVar18 < 3) { + lVar8 = 2; + } + if ((param_2 + lVar8 <= (ushort *)((long)param_1 + 2U)) || + ((ushort *)((long)param_1 + lVar8 * 2) <= param_2 + 1)) { + uVar10 = uVar11 | 1; + uVar5 = 1; + lVar8 = 2; + uVar12 = uVar11; + do { + puVar2 = (undefined8 *)((long)param_2 + lVar8); + uVar19 = *puVar2; + uVar21 = puVar2[3]; + uVar20 = puVar2[2]; + puVar3 = (undefined8 *)((long)param_1 + lVar8); + uVar15 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + uVar5 = uVar5 + 0x10; + puVar3[1] = puVar2[1]; + *puVar3 = uVar19; + puVar3[3] = uVar21; + puVar3[2] = uVar20; + puVar2 = (undefined8 *)((long)param_2 + uVar15); + uVar19 = *puVar2; + uVar21 = puVar2[3]; + uVar20 = puVar2[2]; + uVar12 = uVar12 - 0x10; + puVar3 = (undefined8 *)((long)param_1 + uVar15); + lVar8 = lVar8 + 0x20; + puVar3[1] = puVar2[1]; + *puVar3 = uVar19; + puVar3[3] = uVar21; + puVar3[2] = uVar20; + } while (uVar12 != 0); + if (uVar9 == uVar11) { + return; + } + goto LAB_00177554; + } + } + uVar10 = 1; +LAB_00177554: + uVar5 = (iVar6 + (int)(uVar10 * lVar17)) - 1; + lVar17 = uVar10 * lVar17 * 2; + do { + uVar9 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + uVar10 = uVar10 + 1; + uVar5 = uVar5 + iVar6; + *(undefined2 *)((long)param_1 + lVar17) = *(undefined2 *)((long)param_2 + lVar17); + lVar17 = lVar17 + __n; + *(undefined2 *)((long)param_1 + uVar9) = *(undefined2 *)((long)param_2 + uVar9); + } while ((long)uVar10 < lVar18); + return; +} + + +================================================================== + +### FUNC 00177640 (272 bytes) name=CNetComm + +/* CNetComm::CNetComm() */ + +void __thiscall CNetComm::CNetComm(CNetComm *this) + +{ + *(undefined **)this = PTR_vtable_00501fb8 + 0x10; + MutexLock::MutexLock((MutexLock *)(this + 0x88)); + MutexLock::MutexLock((MutexLock *)(this + 0xb0)); + MutexLock::MutexLock((MutexLock *)(this + 0xd8)); + Condition::Condition((Condition *)(this + 0x100)); + Condition::Condition((Condition *)(this + 0x15c)); + MutexLock::MutexLock((MutexLock *)(this + 0x1b8)); + MutexLock::MutexLock((MutexLock *)(this + 0xabc)); + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x7c) = 0; + *(undefined4 *)(this + 0x80) = 0; + *(undefined4 *)(this + 0x84) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x68) = 0; + *(undefined4 *)(this + 0x78) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0x28) = 0; + *(undefined4 *)(this + 0x2c) = 0; + *(undefined4 *)(this + 0x30) = 0; + *(undefined4 *)(this + 0x1e0) = 0; + *(undefined4 *)(this + 0x1e8) = 0; + *(undefined4 *)(this + 0x2f8) = 0; + *(undefined8 *)(this + 0x60) = 0; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x40) = 0; + *(undefined8 *)(this + 0x38) = 0; + memset(this + 800,0,0x798); + *(undefined4 *)(this + 0xab8) = 0; + *(undefined4 *)(this + 0xae4) = 0; + *(undefined8 *)(this + 0xae8) = 0; + memset(this + 0xaf0,0,0x80); + return; +} + + +================================================================== + +### FUNC 00177810 (88 bytes) name=Condition + +/* Condition::Condition() */ + +void __thiscall Condition::Condition(Condition *this) + +{ + int iVar1; + undefined8 *puVar2; + + MutexLock::MutexLock((MutexLock *)this); + this[0x58] = (Condition)0x0; + iVar1 = pthread_cond_init((pthread_cond_t *)(this + 0x28),(pthread_condattr_t *)0x0); + if (iVar1 == 0) { + return; + } + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "pthread_cond_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,PTR_typeinfo_00501c20,0); +} + + +================================================================== + +### FUNC 00177880 (44 bytes) name=~Condition + +/* Condition::~Condition() */ + +int __thiscall Condition::~Condition(Condition *this) + +{ + int iVar1; + + pthread_cond_destroy((pthread_cond_t *)(this + 0x28)); + iVar1 = pthread_mutex_destroy((pthread_mutex_t *)this); + return iVar1; +} + + +================================================================== + +### FUNC 001778c4 (128 bytes) name=~CNetComm + +/* CNetComm::~CNetComm() */ + +int __thiscall CNetComm::~CNetComm(CNetComm *this) + +{ + int iVar1; + + *(undefined **)this = PTR_vtable_00501fb8 + 0x10; + DeInit(this); + pthread_mutex_destroy((pthread_mutex_t *)(this + 0xabc)); + pthread_mutex_destroy((pthread_mutex_t *)(this + 0x1b8)); + pthread_cond_destroy((pthread_cond_t *)(this + 0x184)); + pthread_mutex_destroy((pthread_mutex_t *)(this + 0x15c)); + pthread_cond_destroy((pthread_cond_t *)(this + 0x128)); + pthread_mutex_destroy((pthread_mutex_t *)(this + 0x100)); + pthread_mutex_destroy((pthread_mutex_t *)(this + 0xd8)); + pthread_mutex_destroy((pthread_mutex_t *)(this + 0xb0)); + iVar1 = pthread_mutex_destroy((pthread_mutex_t *)(this + 0x88)); + return iVar1; +} + + +================================================================== + +### FUNC 001779bc (240 bytes) name=DeInit + +/* CNetComm::DeInit() */ + +void __thiscall CNetComm::DeInit(CNetComm *this) + +{ + *(undefined4 *)(this + 0x7c) = 0; + *(undefined4 *)(this + 0x2c) = 0; + pthread_mutex_lock((pthread_mutex_t *)(this + 0x15c)); + pthread_cond_signal((pthread_cond_t *)(this + 0x184)); + this[0x1b4] = (CNetComm)0x1; + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x15c)); + if (*(pthread_t *)(this + 0x18) != 0) { + pthread_join(*(pthread_t *)(this + 0x18),(void **)0x0); + *(undefined8 *)(this + 0x18) = 0; + } + if (*(int *)(this + 0x84) != 0) { + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + StopReceiveImg_UnProtected(this,0); + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + } + if (*(int *)(this + 0x80) != 0) { + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + *(undefined4 *)(this + 0x1e0) = 0; + if (*(int *)(this + 0x84) != 0) { + StopReceiveImg_UnProtected(this,0); + } + *(undefined4 *)(this + 0x78) = 0; + *(undefined4 *)(this + 0x80) = 0; + if (*(long *)(this + 0x68) != 0) { + libusb_release_interface(*(long *)(this + 0x68),0); + libusb_close(*(undefined8 *)(this + 0x68)); + *(undefined8 *)(this + 0x68) = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + } + *(undefined4 *)(this + 0xab8) = 0; + if (*(long *)(this + 0x70) != 0) { + libusb_exit(); + *(undefined8 *)(this + 0x70) = 0; + } + return; +} + + +================================================================== + +### FUNC 00177ac8 (36 bytes) name=~CNetComm + +/* CNetComm::~CNetComm() */ + +void __thiscall CNetComm::~CNetComm(CNetComm *this) + +{ + ~CNetComm(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00177aec (420 bytes) name=Init + +/* CNetComm::Init(void*) */ + +undefined4 CNetComm::Init(void *param_1) + +{ + long lVar1; + undefined1 *puVar2; + undefined1 uVar3; + long lVar4; + bool bVar5; + int iVar6; + uint uVar7; + undefined4 *puVar8; + ulong uVar9; + long lVar10; + undefined1 *puVar11; + undefined1 *puVar12; + undefined4 uVar13; + Logging aLStack_50 [16]; + undefined1 *local_40; + long local_38; + + lVar4 = tpidr_el0; + local_38 = *(long *)(lVar4 + 0x28); + if (*(int *)((long)param_1 + 0x7c) == 0) { + iVar6 = libusb_init((long)param_1 + 0x70); + if (iVar6 < 0) { + mag::Logging::Logging(aLStack_50,4); + MStream::operator<<((MStream *)aLStack_50,"init usb fail "); + uVar9 = MStream::Available((MStream *)aLStack_50); + if (0x18 < uVar9) { + lVar10 = -1; + do { + uVar7 = iVar6 + 9; + lVar1 = lVar10 + 1; + local_40[lVar10 + 1] = "0123456789"[iVar6 % 10]; + lVar10 = lVar1; + iVar6 = iVar6 / 10; + } while (0x12 < uVar7); + puVar2 = local_40 + lVar1; + puVar2[1] = 0x2d; + if ((lVar1 != -2) && (-1 < lVar1)) { + uVar3 = *local_40; + *local_40 = 0x2d; + puVar2[1] = uVar3; + if (1 < lVar1) { + puVar11 = local_40 + 2; + puVar12 = puVar2; + do { + uVar3 = puVar11[-1]; + puVar11[-1] = *puVar12; + *puVar12 = uVar3; + bVar5 = puVar11 < puVar12 + -1; + puVar11 = puVar11 + 1; + puVar12 = puVar12 + -1; + } while (bVar5); + } + } + iVar6 = ((int)puVar2 + 2) - (int)local_40; + local_40[iVar6] = 0; + local_40 = local_40 + iVar6; + } + mag::Logging::~Logging(aLStack_50); + } + uVar13 = 1; + *(undefined4 *)((long)param_1 + 0x1e0) = 0; + *(undefined4 *)((long)param_1 + 0x1e8) = 0; + *(undefined4 *)((long)param_1 + 0x2f8) = 0; + *(undefined4 *)((long)param_1 + 0x2c) = 1; + uVar7 = pthread_create((pthread_t *)((long)param_1 + 0x18),(pthread_attr_t *)0x0, + (__start_routine *)PTR_ThreadMonitor_00501d80,param_1); + puVar8 = (undefined4 *)(ulong)uVar7; + *(undefined4 *)((long)param_1 + 0x7c) = 1; + } + else { + puVar8 = (undefined4 *)__errno(); + uVar13 = 0; + *puVar8 = 0xe4ae0003; + } + if (*(long *)(lVar4 + 0x28) == local_38) { + return uVar13; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(puVar8); +} + + +================================================================== + +### FUNC 00177ca4 (68 bytes) name=ThreadMonitor + +/* CNetComm::ThreadMonitor(void*) */ + +undefined8 CNetComm::ThreadMonitor(void *param_1) + +{ + if (param_1 != (void *)0x0) { + do { + if (*(int *)((long)param_1 + 0x2c) == 0) { + return 0; + } + Condition::waitForMsecs((Condition *)((long)param_1 + 0x15c),2000); + } while (*(int *)((long)param_1 + 0x2c) != 0); + } + return 0; +} + + +================================================================== + +### FUNC 00177ce8 (68 bytes) name=StopReceiveImg + +/* CNetComm::StopReceiveImg(int) */ + +int __thiscall CNetComm::StopReceiveImg(CNetComm *this,int param_1) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + StopReceiveImg_UnProtected(this,param_1); + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + return iVar1; +} + + +================================================================== + +### FUNC 00177d2c (132 bytes) name=DisLink + +/* CNetComm::DisLink(int, int) */ + +int __thiscall CNetComm::DisLink(CNetComm *this,int param_1,int param_2) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + if (param_2 == 0) { + *(undefined4 *)(this + 0x1e0) = 0; + iVar1 = *(int *)(this + 0x84); + } + else { + iVar1 = *(int *)(this + 0x84); + } + if (iVar1 != 0) { + StopReceiveImg_UnProtected(this,param_2); + } + *(undefined4 *)(this + 0x78) = 0; + *(undefined4 *)(this + 0x80) = 0; + if (*(long *)(this + 0x68) != 0) { + libusb_release_interface(*(long *)(this + 0x68),0); + libusb_close(*(undefined8 *)(this + 0x68)); + *(undefined8 *)(this + 0x68) = 0; + } + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + return iVar1; +} + + +================================================================== + +### FUNC 00177db0 (116 bytes) name=SendEmptyCmd + +/* CNetComm::SendEmptyCmd(Phone2DeviceCommand) */ + +void __thiscall CNetComm::SendEmptyCmd(CNetComm *this,undefined4 param_2) + +{ + long lVar1; + undefined8 uVar2; + undefined4 *puVar3; + undefined4 local_2c; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + local_2c = param_2; + if (*(int *)(this + 0x80) == 0) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0005; + } + else { + uVar2 = SendCmd(this,(char *)&local_2c,4); + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00177e24 (268 bytes) name=SendCmd + +/* CNetComm::SendCmd(char const*, unsigned int) */ + +undefined4 __thiscall CNetComm::SendCmd(CNetComm *this,char *param_1,uint param_2) + +{ + long lVar1; + int iVar2; + long lVar3; + undefined4 uVar4; + uint local_105c; + undefined4 local_1058; + undefined1 auStack_1054 [4100]; + + lVar1 = tpidr_el0; + lVar3 = *(long *)(lVar1 + 0x28); + pthread_mutex_lock((pthread_mutex_t *)(this + 0xb0)); + if (*(int *)(this + 0x80) != 0) { + iVar2 = libusb_bulk_transfer(*(undefined8 *)(this + 0x68),3,param_1,param_2,&local_105c,500); + uVar4 = 0; + if ((iVar2 < 0) || (local_105c != param_2)) goto LAB_00177ed4; + iVar2 = libusb_bulk_transfer + (*(undefined8 *)(this + 0x68),0x82,&local_1058,0x1000,&local_105c,2000); + if ((-1 < iVar2) && (3 < (int)local_105c)) { + DecodeCmd(this,local_1058,auStack_1054,local_105c - 4); + uVar4 = 1; + goto LAB_00177ed4; + } + } + uVar4 = 0; +LAB_00177ed4: + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xb0)); + if (*(long *)(lVar1 + 0x28) == lVar3) { + return uVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar2); +} + + +================================================================== + +### FUNC 00177f50 (116 bytes) name=SendCmdWith1Para + +/* CNetComm::SendCmdWith1Para(Phone2DeviceCommand, unsigned int) */ + +void __thiscall CNetComm::SendCmdWith1Para(CNetComm *this,undefined4 param_2,undefined4 param_3) + +{ + long lVar1; + undefined8 uVar2; + undefined4 *puVar3; + undefined4 local_30; + undefined4 uStack_2c; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + if (*(int *)(this + 0x80) == 0) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0005; + } + else { + local_30 = param_2; + uStack_2c = param_3; + uVar2 = SendCmd(this,(char *)&local_30,8); + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00177fc4 (380 bytes) name=DecodeCmd + +/* CNetComm::DecodeCmd(Device2PhoneCommand, char const*, unsigned int) */ + +int __thiscall CNetComm::DecodeCmd(CNetComm *this,int param_2,undefined8 *param_3,int param_4) + +{ + pthread_mutex_t *__mutex; + int iVar1; + uint uVar2; + undefined8 uVar3; + + __mutex = (pthread_mutex_t *)(this + 0xd8); + pthread_mutex_lock(__mutex); + if (param_2 + 0xa44a4aa3U < 2) { + uVar3 = *param_3; + *(undefined8 *)(this + 0xb68) = param_3[1]; + *(undefined8 *)(this + 0xb60) = uVar3; + } + else if (param_2 == 0x5bb5b55c) { + if (param_4 == 0x38) { + *(undefined8 *)(this + 0xb58) = param_3[6]; + uVar3 = param_3[4]; + *(undefined8 *)(this + 0xb50) = param_3[5]; + *(undefined8 *)(this + 0xb48) = uVar3; + uVar3 = param_3[2]; + *(undefined8 *)(this + 0xb40) = param_3[3]; + *(undefined8 *)(this + 0xb38) = uVar3; + uVar3 = *param_3; + *(undefined8 *)(this + 0xb30) = param_3[1]; + *(undefined8 *)(this + 0xb28) = uVar3; + } + } + else if ((param_2 == 0x5bb5b55b) && (param_4 == 0x38)) { + uVar3 = param_3[2]; + *(undefined8 *)(this + 0xb08) = param_3[3]; + *(undefined8 *)(this + 0xb00) = uVar3; + uVar3 = *param_3; + *(undefined8 *)(this + 0xaf8) = param_3[1]; + *(undefined8 *)(this + 0xaf0) = uVar3; + *(undefined8 *)(this + 0xb20) = param_3[6]; + uVar3 = param_3[4]; + *(undefined8 *)(this + 0xb18) = param_3[5]; + *(undefined8 *)(this + 0xb10) = uVar3; + if ((*(int *)(this + 0xb00) != 0) && (*(int *)(this + 0xb04) != 0)) { + pthread_mutex_unlock(__mutex); + pthread_mutex_lock((pthread_mutex_t *)(this + 0xabc)); + if (*(int *)(this + 0xab8) != 0) { + uVar2 = 0; + do { + if (*(int *)(this + (ulong)uVar2 * 0x3c + 0x35c) == *(int *)(this + 0x78)) { + *(undefined4 *)(this + (ulong)uVar2 * 0x3c + 0x360) = *(undefined4 *)(this + 0xaf0); + sprintf((char *)(this + (ulong)uVar2 * 0x3c + 0x338),"core-%d", + (ulong)*(uint *)(this + 0xaf0)); + } + uVar2 = uVar2 + 1; + } while (uVar2 < *(uint *)(this + 0xab8)); + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xabc)); + pthread_mutex_lock(__mutex); + } + } + iVar1 = pthread_mutex_unlock(__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 00178140 (104 bytes) name=DisLink_UnProtected + +/* CNetComm::DisLink_UnProtected(int, int) */ + +void __thiscall CNetComm::DisLink_UnProtected(CNetComm *this,int param_1,int param_2) + +{ + int iVar1; + + if (param_2 == 0) { + *(undefined4 *)(this + 0x1e0) = 0; + iVar1 = *(int *)(this + 0x84); + } + else { + iVar1 = *(int *)(this + 0x84); + } + if (iVar1 != 0) { + StopReceiveImg_UnProtected(this,param_2); + } + *(undefined4 *)(this + 0x78) = 0; + *(undefined4 *)(this + 0x80) = 0; + if (*(long *)(this + 0x68) != 0) { + libusb_release_interface(*(long *)(this + 0x68),0); + libusb_close(*(undefined8 *)(this + 0x68)); + *(undefined8 *)(this + 0x68) = 0; + } + return; +} + + +================================================================== + +### FUNC 001781a8 (268 bytes) name=StopReceiveImg_UnProtected + +/* CNetComm::StopReceiveImg_UnProtected(int) */ + +void __thiscall CNetComm::StopReceiveImg_UnProtected(CNetComm *this,int param_1) + +{ + long lVar1; + undefined4 *puVar2; + char local_3c [4]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if (param_1 == 0) { + *(undefined4 *)(this + 0x2f8) = 0; + } + if (*(int *)(this + 0x80) != 0) { + local_3c[0] = 't'; + local_3c[1] = -0x4a; + local_3c[2] = -0x4a; + local_3c[3] = 'k'; + if (*(int *)(this + 0x80) == 0) { + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0005; + } + else { + SendCmd(this,local_3c,4); + } + } + *(undefined4 *)(this + 0x28) = 0; + if (*(pthread_t *)(this + 0x10) != 0) { + pthread_join(*(pthread_t *)(this + 0x10),(void **)0x0); + *(undefined8 *)(this + 0x10) = 0; + } + *(undefined4 *)(this + 0x30) = 0; + pthread_mutex_lock((pthread_mutex_t *)(this + 0x100)); + pthread_cond_signal((pthread_cond_t *)(this + 0x128)); + this[0x158] = (CNetComm)0x1; + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x100)); + if (*(pthread_t *)(this + 0x20) != 0) { + pthread_join(*(pthread_t *)(this + 0x20),(void **)0x0); + *(undefined8 *)(this + 0x20) = 0; + } + if (*(void **)(this + 800) != (void *)0x0) { + operator_delete__(*(void **)(this + 800)); + *(undefined8 *)(this + 800) = 0; + } + if (*(void **)(this + 0x328) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x328)); + *(undefined8 *)(this + 0x328) = 0; + } + *(undefined4 *)(this + 0x84) = 0; + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001782d0 (612 bytes) name=EnumCameras + +/* CNetComm::EnumCameras() */ + +undefined4 __thiscall CNetComm::EnumCameras(CNetComm *this) + +{ + int iVar1; + uint uVar2; + long lVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined4 *puVar7; + undefined4 uVar8; + CNetComm *__dest; + long lVar9; + int iVar10; + long lVar11; + undefined1 auStack_88 [8]; + short local_80; + ushort local_7e; + long *local_70; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + if (*(int *)(this + 0x7c) == 0) { + puVar7 = (undefined4 *)__errno(); + uVar8 = 0; + *puVar7 = 0xe4ae0004; + } + else { + iVar4 = libusb_get_device_list(*(undefined8 *)(this + 0x70),&local_70); + if (iVar4 < 0) { + puVar7 = (undefined4 *)__errno(); + uVar8 = 0; + *puVar7 = 0xe4ae0101; + } + else { + pthread_mutex_lock((pthread_mutex_t *)(this + 0xabc)); + iVar4 = *(int *)(this + 0xab8); + if (-1 < iVar4 + -1) { + iVar10 = -iVar4; + __dest = this + (long)(iVar4 + -1) * 0x3c + 0x338; + do { + iVar1 = *(int *)(__dest + 0x38); + *(int *)(__dest + 0x38) = iVar1 + -1; + if (iVar1 + -1 == 0) { + if (iVar4 < *(int *)(this + 0xab8)) { + memmove(__dest,this + (long)iVar4 * 0x3c + 0x338, + (ulong)(uint)(iVar10 + *(int *)(this + 0xab8)) * 0x3c); + } + *(int *)(this + 0xab8) = *(int *)(this + 0xab8) + -1; + } + iVar10 = iVar10 + 1; + iVar1 = iVar4 + -2; + iVar4 = iVar4 + -1; + __dest = __dest + -0x3c; + } while (-1 < iVar1); + } + lVar9 = *local_70; + if (lVar9 != 0) { + lVar11 = 1; + do { + iVar4 = libusb_get_device_descriptor(lVar9,auStack_88); + if ((iVar4 == 0) && (local_80 == -0x7cc4)) { + uVar5 = libusb_get_bus_number(lVar9); + uVar6 = libusb_get_device_address(lVar9); + if (*(int *)(this + 0xab8) != 0) { + iVar4 = *(int *)(this + 0xab8) + -1; + do { + uVar2 = *(uint *)(this + (long)iVar4 * 0x3c + 0x35c); + if (((uVar2 >> 0x10 == (uint)local_7e) && ((uVar6 & 0xff) == (uVar2 & 0xff))) && + ((uVar5 & 0xff) == (uVar2 >> 8 & 0xff))) { + *(undefined4 *)(this + (long)iVar4 * 0x3c + 0x370) = 5; + goto LAB_001784b0; + } + iVar4 = iVar4 + -1; + } while (iVar4 != -1); + } + if (*(uint *)(this + 0xab8) < 0x20) { + uVar2 = *(uint *)(this + 0xab8); + *(uint *)(this + (ulong)uVar2 * 0x3c + 0x35c) = + uVar6 & 0xff | (uVar5 & 0xff) << 8 | (uint)local_7e << 0x10; + sprintf((char *)(this + (ulong)uVar2 * 0x3c + 0x338),"%04x-%02x-%02x",(ulong)local_7e, + (ulong)(uVar5 & 0xff),(ulong)(uVar6 & 0xff)); + *(undefined8 *)(this + (ulong)uVar2 * 0x3c + 0x36c) = 0x500000000; + *(undefined8 *)(this + (ulong)uVar2 * 0x3c + 0x364) = 0; + *(int *)(this + 0xab8) = *(int *)(this + 0xab8) + 1; + } + } +LAB_001784b0: + lVar9 = local_70[lVar11]; + lVar11 = lVar11 + 1; + } while (lVar9 != 0); + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xabc)); + uVar8 = 1; + libusb_free_device_list(local_70,1); + } + } + if (*(long *)(lVar3 + 0x28) == local_68) { + return uVar8; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00178534 (180 bytes) name=LinkCamera + +/* CNetComm::LinkCamera(unsigned int, char const*, char const*, unsigned int, unsigned int, char + const*, char const*) */ + +undefined4 +CNetComm::LinkCamera + (uint param_1,char *param_2,char *param_3,uint param_4,uint param_5,char *param_6, + char *param_7) + +{ + undefined4 uVar1; + CNetComm *this; + + this = (CNetComm *)(ulong)param_1; + memset((struct_ReConnPara *)(this + 0x1e8),0,0x110); + *(int *)(this + 0x1e8) = (int)param_2; + *(uint *)(this + 0x1ec) = param_5; + *(undefined4 *)(this + 0x1f0) = 0; + strncpy((char *)(this + 500),param_3,0x40); + *(int *)(this + 0x274) = (int)param_6; + strncpy((char *)(this + 0x278),param_7,0x40); + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + uVar1 = LinkCamera_UnProtected(this,(struct_ReConnPara *)(this + 0x1e8)); + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + return uVar1; +} + + +================================================================== + +### FUNC 001785e8 (376 bytes) name=LinkCamera_UnProtected + +/* CNetComm::LinkCamera_UnProtected(CNetComm::struct_ReConnPara const*) */ + +void __thiscall CNetComm::LinkCamera_UnProtected(CNetComm *this,struct_ReConnPara *param_1) + +{ + CNetComm *pCVar1; + long lVar2; + int iVar3; + undefined4 *puVar4; + undefined8 uVar5; + long lVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined1 auStack_60 [8]; + short local_58; + long local_48; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + if (*(int *)(this + 0x7c) == 0) { + puVar4 = (undefined4 *)__errno(); + uVar7 = 0xe4ae0004; + } + else { + if (*(int *)(this + 0x80) == 0) { + uVar7 = *(undefined4 *)param_1; + pCVar1 = this + 0x68; + iVar3 = libusb_wrap_fd(*(undefined8 *)(this + 0x70),uVar7,pCVar1); + if (iVar3 < 0) { + *(undefined8 *)pCVar1 = 0; + puVar4 = (undefined4 *)__errno(); + uVar5 = 0; + *puVar4 = 0xe4ae0202; + } + else { + lVar6 = libusb_get_device(*(undefined8 *)pCVar1); + uVar8 = 0xe4ae0202; + if (lVar6 != 0) { + iVar3 = libusb_get_device_descriptor(lVar6,auStack_60); + uVar8 = 0xe4ae0207; + if ((iVar3 == 0) && (local_58 == -0x7cc4)) { + libusb_set_auto_detach_kernel_driver(*(undefined8 *)pCVar1,1); + iVar3 = libusb_set_configuration(*(undefined8 *)pCVar1,2); + if ((iVar3 < 0) && + (iVar3 = libusb_set_configuration(*(undefined8 *)pCVar1,1), iVar3 < 0)) { + uVar8 = 0xe4ae0205; + } + else { + iVar3 = libusb_claim_interface(*(undefined8 *)pCVar1,0); + if (-1 < iVar3) { + *(undefined4 *)(this + 0x78) = uVar7; + uVar5 = GetTickCount(); + *(undefined8 *)(this + 0xae8) = uVar5; + uVar5 = 1; + *(undefined4 *)(this + 0x1e0) = uVar7; + *(undefined4 *)(this + 0x80) = 1; + goto LAB_0017864c; + } + uVar8 = 0xe4ae0206; + } + } + } + puVar4 = (undefined4 *)__errno(); + *puVar4 = uVar8; + libusb_close(*(undefined8 *)pCVar1); + uVar5 = 0; + *(undefined8 *)pCVar1 = 0; + } + goto LAB_0017864c; + } + puVar4 = (undefined4 *)__errno(); + uVar7 = 0xe4ae0003; + } + uVar5 = 0; + *puVar4 = uVar7; +LAB_0017864c: + if (*(long *)(lVar2 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 00178760 (800 bytes) name=ThreadReceiveImg + +/* CNetComm::ThreadReceiveImg(void*) */ + +void CNetComm::ThreadReceiveImg(void *param_1) + +{ + int iVar1; + undefined4 uVar2; + uint uVar3; + long lVar4; + bool bVar5; + bool bVar6; + int iVar7; + int *__dest; + undefined8 uVar8; + int *__src; + int *piVar9; + undefined4 *puVar10; + int iVar11; + uint uVar12; + ulong uVar13; + size_t __n; + int iVar14; + int local_8c; + undefined8 local_88; + undefined4 uStack_80; + undefined4 uStack_7c; + undefined4 uStack_78; + undefined4 uStack_74; + undefined4 uStack_70; + long local_68; + + lVar4 = tpidr_el0; + local_68 = *(long *)(lVar4 + 0x28); + if (param_1 == (void *)0x0) { + uVar8 = 0xffffffffffffffff; + } + else { + uStack_70 = 0; + uStack_80 = 0; + uStack_7c = 0; + uStack_78 = 0; + uStack_74 = 0; + local_88 = 0; + iVar1 = *(int *)((long)param_1 + 0xb00); + uVar2 = *(undefined4 *)((long)param_1 + 0xb04); + __dest = *(int **)((long)param_1 + 800); + local_8c = 0; + if (*(int *)((long)param_1 + 0x28) != 0) { + bVar5 = false; + piVar9 = __dest; + do { + while( true ) { + iVar7 = libusb_bulk_transfer + (*(undefined8 *)((long)param_1 + 0x68),0x81,piVar9, + ((int)__dest - (int)piVar9) + *(int *)((long)param_1 + 0x330) * 2, + &local_8c,500); + if (*(int *)((long)param_1 + 0x28) == 0) goto LAB_00178a38; + if (-1 < iVar7) break; + Sleep(10); + __dest = *(int **)((long)param_1 + 800); +LAB_0017887c: + iVar7 = *(int *)((long)param_1 + 0x28); + piVar9 = __dest; +joined_r0x00178978: + if (iVar7 == 0) goto LAB_00178a38; + } + __dest = *(int **)((long)param_1 + 800); + iVar7 = (int)(int *)((long)piVar9 + (long)local_8c); + if (bVar5) { + uVar12 = iVar7 - (int)__dest; + } + else { + iVar14 = *__dest; + __src = __dest; + while (__src < (int *)((long)piVar9 + (long)local_8c)) { + if (iVar14 == 0x1bb1b11b) goto LAB_00178850; + __src = __src + 1; + iVar14 = *__src; + } + if (iVar14 != 0x1bb1b11b) goto LAB_0017887c; +LAB_00178850: + uVar12 = iVar7 - (int)__src; + if (__dest == __src) { + bVar5 = true; + } + else { + memmove(__dest,__src,(long)(int)uVar12); + __dest = *(int **)((long)param_1 + 800); + bVar5 = true; + } + } + uVar3 = *(uint *)((long)param_1 + 0x330); + uVar13 = (ulong)uVar3; + if (uVar13 + 0x38 <= (ulong)(long)(int)uVar12) { + if ((*__dest == 0x1bb1b11b) && (__dest[2] == uVar3)) { + piVar9 = (int *)((long)__dest + uVar13 + 0x1c); + if ((*piVar9 == 0x1bb1b11c) && (*(uint *)((long)__dest + uVar13 + 0x28) < 2)) { + iVar7 = __dest[1]; + if (iVar1 == 0xa0) { + iVar11 = *(int *)((long)__dest + uVar13 + 0x24); + iVar14 = iVar11 + -500; + } + else { + iVar14 = *(int *)((long)__dest + uVar13 + 0x2c); + if (iVar1 == 0x180) { + iVar11 = iVar14 + 500; + } + else { + iVar11 = *(int *)((long)__dest + uVar13 + 0x24); + } + } + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + 0x88)); + puVar10 = *(undefined4 **)((long)param_1 + 0x328); + *puVar10 = 0; + puVar10[1] = iVar7; + puVar10[6] = uVar2; + puVar10[7] = 8; + puVar10[2] = uVar3; + puVar10[3] = 1; + puVar10[4] = 0; + puVar10[5] = iVar1; + puVar10[8] = 0xffff3cb0; + puVar10[9] = 0; + puVar10[10] = iVar14; + puVar10[0xb] = iVar11; + *(ulong *)(puVar10 + 0x11) = CONCAT44(uStack_70,uStack_74); + *(ulong *)(puVar10 + 0xf) = CONCAT44(uStack_78,uStack_7c); + *(ulong *)(puVar10 + 0xe) = CONCAT44(uStack_7c,uStack_80); + *(undefined8 *)(puVar10 + 0xc) = local_88; + memcpy((void *)(*(long *)((long)param_1 + 0x328) + 0x4c), + (void *)(*(long *)((long)param_1 + 800) + 0x1c), + (ulong)*(uint *)((long)param_1 + 0x330)); + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + 0x88)); + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + 0x100)); + pthread_cond_signal((pthread_cond_t *)((long)param_1 + 0x128)); + *(undefined1 *)((long)param_1 + 0x158) = 1; + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + 0x100)); + __dest = *(int **)((long)param_1 + 800); + *(int *)((long)param_1 + 8) = *(int *)((long)param_1 + 8) + 1; + } + else if (*piVar9 != 0x1bb1b11c) { + piVar9 = (int *)((long)__dest + (long)(int)(uVar12 & 0xfffffffc)); + bVar6 = *piVar9 == 0x1bb1b11b; + if (0 < (int)(uVar12 & 0xfffffffc)) { + do { + if (bVar6) goto LAB_00178958; + piVar9 = piVar9 + -1; + bVar6 = *piVar9 == 0x1bb1b11b; + } while (__dest < piVar9); + } + if (bVar6) { +LAB_00178958: + __n = (size_t)(int)((uVar12 - (int)piVar9) + (int)__dest); + memmove(__dest,piVar9,__n); + __dest = *(int **)((long)param_1 + 800); + iVar7 = *(int *)((long)param_1 + 0x28); + piVar9 = (int *)((long)__dest + __n); + goto joined_r0x00178978; + } + } + } + bVar5 = false; + iVar7 = *(int *)((long)param_1 + 0x28); + piVar9 = __dest; + goto joined_r0x00178978; + } + piVar9 = (int *)((long)__dest + (long)(int)uVar12); + } while (*(int *)((long)param_1 + 0x28) != 0); + } +LAB_00178a38: + uVar8 = 0; + *(undefined4 *)((long)param_1 + 0x1e4) = 1; + } + if (*(long *)(lVar4 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar8); + } + return; +} + + +================================================================== + +### FUNC 00178a9c (176 bytes) name=StartReceiveImg + +/* CNetComm::StartReceiveImg(ImgTypes, unsigned int, unsigned int, char*, void (*)(unsigned int, + void*), unsigned int, int) */ + +int __thiscall +CNetComm::StartReceiveImg + (CNetComm *this,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined8 param_5,undefined8 param_6,undefined4 param_7,undefined4 param_8) + +{ + struct_RePlayPara *psVar1; + int iVar2; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + psVar1 = (struct_RePlayPara *)(this + 0x2f8); + *(undefined8 *)(this + 0x300) = 0; + *(undefined8 *)psVar1 = 0; + *(undefined4 *)(this + 0x31c) = param_8; + *(undefined4 *)(this + 0x2f8) = param_2; + *(undefined4 *)(this + 0x300) = param_4; + *(undefined4 *)(this + 0x2fc) = param_3; + *(undefined4 *)(this + 0x318) = param_7; + *(undefined8 *)(this + 0x310) = param_6; + *(undefined8 *)(this + 0x308) = param_5; + iVar2 = StartReceiveImg_UnProtected(this,psVar1); + if (iVar2 == 0) { + *(undefined4 *)psVar1 = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + return iVar2; +} + + +================================================================== + +### FUNC 00178b4c (568 bytes) name=StartReceiveImg_UnProtected + +/* CNetComm::StartReceiveImg_UnProtected(CNetComm::struct_RePlayPara const*) */ + +void __thiscall CNetComm::StartReceiveImg_UnProtected(CNetComm *this,struct_RePlayPara *param_1) + +{ + long lVar1; + int iVar2; + undefined4 *puVar3; + void *pvVar4; + void *pvVar5; + undefined8 uVar6; + undefined4 uVar7; + uint uVar8; + Logging aLStack_68 [28]; + char local_4c [4]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + if (*(int *)(this + 0x80) == 0) { + puVar3 = (undefined4 *)__errno(); + uVar6 = 0; + *puVar3 = 0xe4ae0005; + } + else { + if (*(int *)(this + 0x84) == 0) { + if (((*(int *)param_1 == 0) || (*(long *)(param_1 + 0x10) == 0)) || + (*(long *)(param_1 + 0x18) == 0)) { + puVar3 = (undefined4 *)__errno(); + uVar7 = 0xe4ae0001; + } + else { + uVar8 = *(uint *)(param_1 + 4); + *(uint *)(this + 0x330) = uVar8; + if (*(void **)(this + 800) != (void *)0x0) { + operator_delete__(*(void **)(this + 800)); + uVar8 = *(uint *)(this + 0x330); + *(undefined8 *)(this + 800) = 0; + } + pvVar4 = operator_new__((ulong)uVar8 * 2 + 0x470); + *(void **)(this + 800) = pvVar4; + if (*(void **)(this + 0x328) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x328)); + pvVar4 = *(void **)(this + 800); + uVar8 = *(uint *)(this + 0x330); + *(undefined8 *)(this + 0x328) = 0; + } + pvVar5 = operator_new__((ulong)uVar8 + 0x4c); + *(void **)(this + 0x328) = pvVar5; + if (pvVar4 != (void *)0x0) { + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x50) = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0x48) = *(undefined8 *)(param_1 + 0x18); + pthread_mutex_lock((pthread_mutex_t *)(this + 0x100)); + this[0x158] = (CNetComm)0x0; + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x100)); + *(undefined4 *)(this + 0x30) = 1; + pthread_create((pthread_t *)(this + 0x20),(pthread_attr_t *)0x0, + (__start_routine *)PTR_ThreadOutputImg_00501c80,this); + *(undefined4 *)(this + 0x1e4) = 0; + *(undefined4 *)(this + 0x28) = 1; + pthread_create((pthread_t *)(this + 0x10),(pthread_attr_t *)0x0, + (__start_routine *)PTR_ThreadReceiveImg_00501ed0,this); + iVar2 = usleep(50000); + local_4c[0] = 's'; + local_4c[1] = -0x4a; + local_4c[2] = -0x4a; + local_4c[3] = 'k'; + if (*(int *)(this + 0x80) == 0) { + puVar3 = (undefined4 *)__errno(iVar2); + *puVar3 = 0xe4ae0005; + } + else { + iVar2 = SendCmd(this,local_4c,4); + if (iVar2 != 0) { + uVar6 = 1; + *(undefined4 *)(this + 0x84) = 1; + goto LAB_00178cec; + } + } + pthread_mutex_lock((pthread_mutex_t *)(this + 0x1b8)); + StopReceiveImg_UnProtected(this,0); + pthread_mutex_unlock((pthread_mutex_t *)(this + 0x1b8)); + uVar6 = 0; + goto LAB_00178cec; + } + operator_delete__(pvVar5); + *(undefined8 *)(this + 0x328) = 0; + mag::Logging::Logging(aLStack_68,4); + MStream::operator<<((MStream *)aLStack_68,"Fail to allocate memory"); + mag::Logging::~Logging(aLStack_68); + puVar3 = (undefined4 *)__errno(); + uVar7 = 0xe4ae0002; + } + } + else { + puVar3 = (undefined4 *)__errno(); + uVar7 = 0xe4ae0003; + } + uVar6 = 0; + *puVar3 = uVar7; + } +LAB_00178cec: + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar6); +} + + +================================================================== + +### FUNC 00178d9c (164 bytes) name=ThreadOutputImg + +/* CNetComm::ThreadOutputImg(void*) */ + +undefined8 CNetComm::ThreadOutputImg(void *param_1) + +{ + undefined8 uVar1; + + if (param_1 == (void *)0x0) { + uVar1 = 1; + } + else if (*(long *)((long)param_1 + 0x48) == 0) { + uVar1 = 2; + } + else { + if (*(int *)((long)param_1 + 0x30) != 0) { + do { + Condition::wait((Condition *)((long)param_1 + 0x100)); + if (*(int *)((long)param_1 + 0x30) == 0) break; + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + 0x88)); + memcpy(*(void **)((long)param_1 + 0x50),*(void **)((long)param_1 + 0x328), + (ulong)*(uint *)((long)param_1 + 0x330) + 0x4c); + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + 0x88)); + if (*(code **)((long)param_1 + 0x48) != (code *)0x0) { + (**(code **)((long)param_1 + 0x48)) + (*(undefined4 *)((long)param_1 + 0x334),*(undefined8 *)((long)param_1 + 0x50)); + } + } while (*(int *)((long)param_1 + 0x30) != 0); + } + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### FUNC 00178e40 (132 bytes) name=SetShutterState + +/* CNetComm::SetShutterState(int, unsigned int*) */ + +void CNetComm::SetShutterState(int param_1,uint *param_2) + +{ + long lVar1; + CNetComm *this; + undefined8 uVar2; + undefined4 *puVar3; + char local_30 [4]; + undefined4 uStack_2c; + long local_28; + + this = (CNetComm *)(ulong)(uint)param_1; + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + if ((*(int *)(this + 0x80) == 0) || (*(int *)(this + 0x80) == 0)) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0005; + } + else { + uStack_2c = SUB84(param_2,0); + local_30[0] = 'r'; + local_30[1] = -0x4a; + local_30[2] = -0x4a; + local_30[3] = 'k'; + uVar2 = SendCmd(this,local_30,8); + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00178ec4 (132 bytes) name=SetLaserState + +/* CNetComm::SetLaserState(int) */ + +void __thiscall CNetComm::SetLaserState(CNetComm *this,int param_1) + +{ + long lVar1; + undefined8 uVar2; + undefined4 *puVar3; + char local_30 [4]; + int iStack_2c; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + if ((*(int *)(this + 0x80) == 0) || (*(int *)(this + 0x80) == 0)) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0005; + } + else { + local_30[0] = 'v'; + local_30[1] = -0x4a; + local_30[2] = -0x4a; + local_30[3] = 'k'; + iStack_2c = param_1; + uVar2 = SendCmd(this,local_30,8); + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00178f48 (132 bytes) name=AutoPowerSave + +/* CNetComm::AutoPowerSave(int) */ + +void __thiscall CNetComm::AutoPowerSave(CNetComm *this,int param_1) + +{ + long lVar1; + undefined8 uVar2; + undefined4 *puVar3; + char local_30 [4]; + int iStack_2c; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + if ((*(int *)(this + 0x80) == 0) || (*(int *)(this + 0x80) == 0)) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0005; + } + else { + local_30[0] = 'w'; + local_30[1] = -0x4a; + local_30[2] = -0x4a; + local_30[3] = 'k'; + iStack_2c = param_1; + uVar2 = SendCmd(this,local_30,8); + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00178fcc (224 bytes) name=ReadCaliInfo + +/* CNetComm::ReadCaliInfo(CaliInfo*) */ + +void __thiscall CNetComm::ReadCaliInfo(CNetComm *this,CaliInfo *param_1) + +{ + long lVar1; + undefined8 uVar2; + undefined4 *puVar3; + undefined8 uVar4; + char local_3c [4]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if (*(int *)(this + 0x80) != 0) { + if (param_1 == (CaliInfo *)0x0) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0001; + goto LAB_0017907c; + } + *(undefined8 *)(this + 0xb68) = 0; + *(undefined8 *)(this + 0xb60) = 0; + local_3c[0] = 'o'; + local_3c[1] = -0x4a; + local_3c[2] = -0x4a; + local_3c[3] = 'k'; + if (*(int *)(this + 0x80) != 0) { + uVar2 = SendCmd(this,local_3c,4); + if ((int)uVar2 != 0) { + if (*(int *)(this + 0xb60) == 0) { + uVar2 = 0; + } + else { + uVar4 = *(undefined8 *)(this + 0xb60); + uVar2 = 1; + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(this + 0xb68); + *(undefined8 *)param_1 = uVar4; + } + } + goto LAB_0017907c; + } + } + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0005; +LAB_0017907c: + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 001790ac (692 bytes) name=GetCaliFile + +/* CNetComm::GetCaliFile(char*) */ + +void __thiscall CNetComm::GetCaliFile(CNetComm *this,char *param_1) + +{ + CNetComm *pCVar1; + uint uVar2; + long lVar3; + uint uVar4; + long lVar5; + int iVar6; + int iVar7; + undefined4 uVar8; + void *pvVar9; + undefined4 *puVar10; + undefined8 uVar11; + undefined8 uVar12; + code *pcVar13; + ulong uVar14; + int iVar15; + ulong uVar16; + void *pvVar17; + undefined4 local_98 [4]; + Logging aLStack_88 [28]; + int local_6c; + long local_68; + + lVar5 = tpidr_el0; + local_68 = *(long *)(lVar5 + 0x28); + *(undefined8 *)(this + 0xb68) = 0; + *(undefined8 *)(this + 0xb60) = 0; + local_98[0] = 0x6bb6b670; + if (*(int *)(this + 0x80) == 0) { + puVar10 = (undefined4 *)__errno(); + *puVar10 = 0xe4ae0005; +LAB_00179240: + pcVar13 = *(code **)(this + 0x58); + if (pcVar13 != (code *)0x0) { + uVar8 = *(undefined4 *)(this + 0x334); + uVar12 = *(undefined8 *)(this + 0x60); + uVar11 = 0xffffffff; + iVar6 = 0; +LAB_00179258: + (*pcVar13)(uVar8,uVar11,iVar6,uVar12); + } + } + else { + iVar6 = SendCmd(this,(char *)local_98,4); + if (((iVar6 == 0) || (pCVar1 = this + 0xb60, *(uint *)pCVar1 == 0)) || + (0x6400000 < *(uint *)pCVar1)) goto LAB_00179240; + uVar2 = *(uint *)pCVar1; + uVar14 = (ulong)(int)uVar2; + uVar16 = uVar14; + if ((long)uVar14 < 0) { + uVar16 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar16); + local_6c = 0; + mag::Logging::Logging(aLStack_88,2); + MStream::operator<<((MStream *)aLStack_88, + "First running on new host, it will cost some time for initializing..."); + mag::Logging::~Logging(aLStack_88); + if (*(code **)(this + 0x58) != (code *)0x0) { + (**(code **)(this + 0x58))(*(undefined4 *)(this + 0x334),0,0,*(undefined8 *)(this + 0x60)); + } + if ((int)uVar2 < 1) { + iVar6 = 0; + uVar4 = uVar2; + } + else { + uVar16 = (ulong)uVar2; + pvVar17 = pvVar9; + iVar6 = 0; + do { + while( true ) { + iVar15 = (int)uVar16; + iVar7 = iVar15; + if (0x7ffff < iVar15) { + iVar7 = 0x80000; + } + iVar7 = libusb_bulk_transfer + (*(undefined8 *)(this + 0x68),0x84,pvVar17,iVar7,&local_6c,60000); + if (iVar7 < 0) { + printf("%p, %d\n",*(undefined8 *)(this + 0x68),uVar16); + operator_delete__(pvVar9); + pcVar13 = *(code **)(this + 0x58); + if (pcVar13 == (code *)0x0) goto LAB_0017925c; + uVar8 = *(undefined4 *)(this + 0x334); + uVar12 = *(undefined8 *)(this + 0x60); + uVar11 = 0xfffffffe; + goto LAB_00179258; + } + pvVar17 = (void *)((long)pvVar17 + (long)local_6c); + uVar4 = iVar15 - local_6c; + uVar16 = (ulong)uVar4; + if (*(code **)(this + 0x58) != (code *)0x0) break; +LAB_00179208: + if ((int)uVar4 < 1) goto joined_r0x00179298; + } + lVar3 = 0; + if (uVar14 != 0) { + lVar3 = ((long)(int)(uVar2 - uVar4) * 100) / (long)uVar14; + } + iVar7 = (int)lVar3; + if (0x62 < lVar3) { + iVar7 = 99; + } + if (iVar7 <= iVar6) goto LAB_00179208; + (**(code **)(this + 0x58)) + (*(undefined4 *)(this + 0x334),0,iVar7,*(undefined8 *)(this + 0x60)); + iVar6 = iVar7; + } while (0 < (int)uVar4); + } +joined_r0x00179298: + if (uVar4 == 0) { + OFStream::OFStream((OFStream *)local_98,param_1,false); + OFStream::Write((OFStream *)local_98,pvVar9,uVar14,1); + OFStream::~OFStream((OFStream *)local_98); + if (*(code **)(this + 0x58) != (code *)0x0) { + (**(code **)(this + 0x58))(*(undefined4 *)(this + 0x334),0,100,*(undefined8 *)(this + 0x60)) + ; + } + operator_delete__(pvVar9); + uVar11 = 1; + goto LAB_00179260; + } + operator_delete__(pvVar9); + pcVar13 = *(code **)(this + 0x58); + if (pcVar13 != (code *)0x0) { + uVar8 = *(undefined4 *)(this + 0x334); + uVar12 = *(undefined8 *)(this + 0x60); + uVar11 = 0xfffffffd; + goto LAB_00179258; + } + } +LAB_0017925c: + uVar11 = 0; +LAB_00179260: + if (*(long *)(lVar5 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar11); +} + + +================================================================== + +### FUNC 001793d8 (364 bytes) name=RefreshCaliFileNeeded + +/* CNetComm::RefreshCaliFileNeeded() */ + +bool __thiscall CNetComm::RefreshCaliFileNeeded(CNetComm *this) + +{ + long lVar1; + bool bVar2; + int iVar3; + uint uVar4; + undefined4 *puVar5; + FILE *__stream; + long lVar6; + char local_148 [256]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + if (*(int *)(this + 0x80) == 0) { +LAB_00179460: + puVar5 = (undefined4 *)__errno(); + *puVar5 = 0xe4ae0005; + } + else { + *(undefined8 *)(this + 0xb68) = 0; + *(undefined8 *)(this + 0xb60) = 0; + local_148[0] = 'o'; + local_148[1] = -0x4a; + local_148[2] = -0x4a; + local_148[3] = 'k'; + if (*(int *)(this + 0x80) == 0) goto LAB_00179460; + puVar5 = (undefined4 *)SendCmd(this,local_148,4); + if (((int)puVar5 != 0) && (uVar4 = *(uint *)(this + 0xb60), uVar4 != 0)) { + if (0x6400000 < uVar4) { + bVar2 = false; + goto LAB_0017946c; + } + snprintf(local_148,0x100,"%s/cali",PTR_g_sStorageDir_00501cf8); + iVar3 = access(local_148,0); + if (iVar3 != 0) { + mkdir(local_148,0x1c0); + } + snprintf(local_148,0x100,"%s/cali/%s.%d.%lld",PTR_g_sStorageDir_00501cf8,"magcore.cali", + (ulong)*(uint *)(this + 0xaf0),*(undefined8 *)(this + 0xb68)); + __stream = fopen(local_148,"rb"); + puVar5 = (undefined4 *)0x0; + if (__stream != (FILE *)0x0) { + fseek(__stream,0,2); + lVar6 = ftell(__stream); + bVar2 = uVar4 != (uint)lVar6; + uVar4 = fclose(__stream); + puVar5 = (undefined4 *)(ulong)uVar4; + goto LAB_0017946c; + } + } + } + bVar2 = true; +LAB_0017946c: + if (*(long *)(lVar1 + 0x28) == local_48) { + return bVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(puVar5); +} + + +================================================================== + +### FUNC 00179544 (140 bytes) name=GetCaliFileName + +/* CNetComm::GetCaliFileName(char*, int) const */ + +int __thiscall CNetComm::GetCaliFileName(CNetComm *this,char *param_1,int param_2) + +{ + int iVar1; + + snprintf(param_1,(long)param_2,"%s/cali",PTR_g_sStorageDir_00501cf8); + iVar1 = access(param_1,0); + if (iVar1 != 0) { + mkdir(param_1,0x1c0); + } + iVar1 = snprintf(param_1,(long)param_2,"%s/cali/%s.%d.%lld",PTR_g_sStorageDir_00501cf8, + "magcore.cali",(ulong)*(uint *)(this + 0xaf0),*(undefined8 *)(this + 0xb68)); + return iVar1; +} + + +================================================================== + +### FUNC 001795d0 (204 bytes) name=TransferCaliFile + +/* CNetComm::TransferCaliFile() */ + +void __thiscall CNetComm::TransferCaliFile(CNetComm *this) + +{ + long lVar1; + int iVar2; + undefined8 uVar3; + char acStack_138 [256]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + iVar2 = RefreshCaliFileNeeded(this); + if (iVar2 == 0) { + uVar3 = 1; + } + else { + snprintf(acStack_138,0x100,"%s/cali",PTR_g_sStorageDir_00501cf8); + iVar2 = access(acStack_138,0); + if (iVar2 != 0) { + mkdir(acStack_138,0x1c0); + } + snprintf(acStack_138,0x100,"%s/cali/%s.%d.%lld",PTR_g_sStorageDir_00501cf8,"magcore.cali", + (ulong)*(uint *)(this + 0xaf0),*(undefined8 *)(this + 0xb68)); + uVar3 = GetCaliFile(this,acStack_138); + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 0017969c (464 bytes) name=ReadPara + +/* CNetComm::ReadPara(BasePara1*, BasePara2*, unsigned int) */ + +void __thiscall +CNetComm::ReadPara(CNetComm *this,BasePara1 *param_1,BasePara2 *param_2,uint param_3) + +{ + CNetComm *pCVar1; + long lVar2; + int iVar3; + int iVar4; + uint uVar5; + undefined8 uVar6; + ulong uVar7; + ulong uVar8; + undefined4 *puVar9; + undefined4 uVar10; + undefined8 uVar11; + char local_6c [4]; + long local_68; + + lVar2 = tpidr_el0; + local_68 = *(long *)(lVar2 + 0x28); + if (*(int *)(this + 0x80) == 0) { +LAB_00179814: + puVar9 = (undefined4 *)__errno(); + uVar6 = 0; + *puVar9 = 0xe4ae0005; + } + else { + if ((param_1 == (BasePara1 *)0x0) || (param_2 == (BasePara2 *)0x0)) { + puVar9 = (undefined4 *)__errno(); + uVar10 = 0xe4ae0001; + } + else { + memset(this + 0xaf0,0,0x70); + local_6c[0] = 'k'; + local_6c[1] = -0x4a; + local_6c[2] = -0x4a; + local_6c[3] = 'k'; + if (*(int *)(this + 0x80) == 0) { + puVar9 = (undefined4 *)__errno(); + iVar3 = 0; + *puVar9 = 0xe4ae0005; + } + else { + iVar3 = SendCmd(this,local_6c,4); + } + local_6c[0] = 'l'; + local_6c[1] = -0x4a; + local_6c[2] = -0x4a; + local_6c[3] = 'k'; + if (*(int *)(this + 0x80) == 0) goto LAB_00179814; + iVar4 = SendCmd(this,local_6c,4); + uVar6 = 0; + if ((iVar3 == 0) || (iVar4 == 0)) goto LAB_00179824; + pCVar1 = this + 0xb28; + uVar7 = GetTickCount(); + do { + uVar5 = usleep(10000); + uVar8 = (ulong)uVar5; + if ((*(int *)(this + 0xb00) != 0) && (*(int *)pCVar1 != 0)) break; + uVar8 = GetTickCount(); + } while (uVar8 - (uVar7 & 0xffffffff) < (ulong)param_3); + if ((*(int *)(this + 0xb00) != 0) && (*(int *)pCVar1 != 0)) { + uVar6 = 1; + *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(this + 0xb20); + uVar11 = *(undefined8 *)(this + 0xb10); + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(this + 0xb18); + *(undefined8 *)(param_1 + 0x20) = uVar11; + uVar11 = *(undefined8 *)(this + 0xb00); + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(this + 0xb08); + *(undefined8 *)(param_1 + 0x10) = uVar11; + uVar11 = *(undefined8 *)(this + 0xaf0); + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(this + 0xaf8); + *(undefined8 *)param_1 = uVar11; + *(undefined8 *)(param_2 + 0x30) = *(undefined8 *)(this + 0xb58); + uVar11 = *(undefined8 *)(this + 0xb48); + *(undefined8 *)(param_2 + 0x28) = *(undefined8 *)(this + 0xb50); + *(undefined8 *)(param_2 + 0x20) = uVar11; + uVar11 = *(undefined8 *)(this + 0xb38); + *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(this + 0xb40); + *(undefined8 *)(param_2 + 0x10) = uVar11; + uVar11 = *(undefined8 *)pCVar1; + *(undefined8 *)(param_2 + 8) = *(undefined8 *)(this + 0xb30); + *(undefined8 *)param_2 = uVar11; + goto LAB_00179824; + } + puVar9 = (undefined4 *)__errno(uVar8); + uVar10 = 0xe4ae0008; + } + uVar6 = 0; + *puVar9 = uVar10; + } +LAB_00179824: + if (*(long *)(lVar2 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar6); +} + + +================================================================== + +### FUNC 0017986c (324 bytes) name=SetPara + +/* CNetComm::SetPara(BasePara1 const*, BasePara2 const*) */ + +void __thiscall CNetComm::SetPara(CNetComm *this,BasePara1 *param_1,BasePara2 *param_2) + +{ + long lVar1; + bool bVar2; + int iVar3; + int iVar4; + undefined4 *puVar5; + char local_a0 [4]; + undefined8 local_9c; + undefined8 uStack_94; + undefined8 local_8c; + undefined8 uStack_84; + undefined8 local_7c; + undefined8 uStack_74; + undefined8 local_6c; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + if (*(int *)(this + 0x80) == 0) { + puVar5 = (undefined4 *)__errno(); + bVar2 = false; + *puVar5 = 0xe4ae0005; + } + else if ((param_1 == (BasePara1 *)0x0) || (param_2 == (BasePara2 *)0x0)) { + puVar5 = (undefined4 *)__errno(); + bVar2 = false; + *puVar5 = 0xe4ae0001; + } + else { + local_a0[0] = 'm'; + local_a0[1] = -0x4a; + local_a0[2] = -0x4a; + local_a0[3] = 'k'; + local_6c = *(undefined8 *)(param_1 + 0x30); + uStack_74 = *(undefined8 *)(param_1 + 0x28); + local_7c = *(undefined8 *)(param_1 + 0x20); + uStack_84 = *(undefined8 *)(param_1 + 0x18); + local_8c = *(undefined8 *)(param_1 + 0x10); + uStack_94 = *(undefined8 *)(param_1 + 8); + local_9c = *(undefined8 *)param_1; + iVar3 = SendCmd(this,local_a0,0x3c); + local_a0[0] = 'n'; + local_a0[1] = -0x4a; + local_a0[2] = -0x4a; + local_a0[3] = 'k'; + local_6c = *(undefined8 *)(param_2 + 0x30); + uStack_74 = *(undefined8 *)(param_2 + 0x28); + local_7c = *(undefined8 *)(param_2 + 0x20); + uStack_84 = *(undefined8 *)(param_2 + 0x18); + local_8c = *(undefined8 *)(param_2 + 0x10); + uStack_94 = *(undefined8 *)(param_2 + 8); + local_9c = *(undefined8 *)param_2; + iVar4 = SendCmd(this,local_a0,0x3c); + bVar2 = iVar3 != 0 && iVar4 != 0; + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(bVar2); +} + + +================================================================== + +### FUNC 001799b0 (24 bytes) name=ThreadPrepare + +/* CNetComm::ThreadPrepare(void*) */ + +undefined8 CNetComm::ThreadPrepare(void *param_1) + +{ + TransferCaliFile(param_1); + return 0; +} + + +================================================================== + +### FUNC 001799c8 (184 bytes) name=DoPrepareInBackground + +/* CNetComm::DoPrepareInBackground() */ + +void __thiscall CNetComm::DoPrepareInBackground(CNetComm *this) + +{ + uint uVar1; + long lVar2; + int iVar3; + ulong uVar4; + pthread_t pStack_78; + pthread_attr_t pStack_70; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + uVar4 = RefreshCaliFileNeeded(this); + if ((int)uVar4 != 0) { + iVar3 = pthread_attr_init(&pStack_70); + if (iVar3 == 0) { + iVar3 = pthread_attr_setdetachstate(&pStack_70,1); + if (iVar3 == 0) { + iVar3 = pthread_create(&pStack_78,&pStack_70,(__start_routine *)PTR_ThreadPrepare_00501c28, + this); + pthread_attr_destroy(&pStack_70); + uVar1 = 0xffffffff; + if (iVar3 == 0) { + uVar1 = 1; + } + uVar4 = (ulong)uVar1; + } + else { + pthread_attr_destroy(&pStack_70); + uVar4 = 0xffffffff; + } + } + else { + uVar4 = 0xffffffff; + } + } + if (*(long *)(lVar2 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00179a80 (40 bytes) name=CSmoother + +/* CSmoother::CSmoother() */ + +void __thiscall CSmoother::CSmoother(CSmoother *this) + +{ + undefined *puVar1; + + puVar1 = PTR_vtable_00501cd8; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined **)this = puVar1 + 0x10; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 8) = 0; + return; +} + + +================================================================== + +### FUNC 00179aa8 (96 bytes) name=~CSmoother + +/* CSmoother::~CSmoother() */ + +void __thiscall CSmoother::~CSmoother(CSmoother *this) + +{ + *(undefined **)this = PTR_vtable_00501cd8 + 0x10; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x10) = 0; + if (*(void **)(this + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x18)); + *(undefined8 *)(this + 0x18) = 0; + } + if (*(void **)(this + 0x20) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x20)); + *(undefined8 *)(this + 0x20) = 0; + } + return; +} + + +================================================================== + +### FUNC 00179b08 (96 bytes) name=~CSmoother + +/* CSmoother::~CSmoother() */ + +void __thiscall CSmoother::~CSmoother(CSmoother *this) + +{ + *(undefined **)this = PTR_vtable_00501cd8 + 0x10; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x10) = 0; + if (*(void **)(this + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x18)); + *(undefined8 *)(this + 0x18) = 0; + } + if (*(void **)(this + 0x20) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x20)); + } + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00179b68 (232 bytes) name=Reset + +/* CSmoother::Reset(unsigned int, unsigned int, int, unsigned int) */ + +undefined8 __thiscall +CSmoother::Reset(CSmoother *this,uint param_1,uint param_2,int param_3,uint param_4) + +{ + long lVar1; + undefined8 uVar2; + void *pvVar3; + ulong __n; + + *(undefined4 *)(this + 0x3c) = 0; + if (*(void **)(this + 8) != (void *)0x0) { + operator_delete__(*(void **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x10) = 0; + if (*(void **)(this + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x18)); + *(undefined8 *)(this + 0x18) = 0; + } + if (*(void **)(this + 0x20) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x20)); + *(undefined8 *)(this + 0x20) = 0; + } + uVar2 = 0; + if ((param_1 != 0) && (param_2 != 0)) { + *(undefined4 *)(this + 0x30) = 0; + *(uint *)(this + 0x34) = param_1; + *(uint *)(this + 0x38) = param_2; + pvVar3 = operator_new__((ulong)param_4 + (ulong)(param_2 * param_1) * 2 + 1 & 0x3fffffffe); + lVar1 = (long)pvVar3 + (ulong)(param_4 & 0xfffffffe); + __n = (ulong)param_1 << 2; + *(void **)(this + 8) = pvVar3; + *(long *)(this + 0x10) = lVar1; + *(long *)(this + 0x28) = lVar1; + pvVar3 = operator_new__(__n); + *(void **)(this + 0x18) = pvVar3; + memset(pvVar3,0,__n); + if (param_3 != 0) { + pvVar3 = operator_new__((ulong)param_1 << 1); + *(void **)(this + 0x20) = pvVar3; + } + uVar2 = 1; + *(undefined4 *)(this + 0x3c) = 1; + } + return uVar2; +} + + +================================================================== + +### FUNC 00179c50 (520 bytes) name=PushFrameSum + +/* CSmoother::PushFrameSum(unsigned short const*) */ + +bool __thiscall CSmoother::PushFrameSum(CSmoother *this,ushort *param_1) + +{ + ulong uVar1; + ushort *puVar2; + int *piVar3; + int iVar4; + uint uVar5; + uint uVar6; + long lVar7; + uint uVar8; + int *piVar9; + ushort *puVar10; + ushort *puVar11; + long lVar12; + ushort uVar13; + ushort uVar15; + ushort uVar16; + ushort uVar17; + undefined8 uVar14; + ushort uVar18; + ushort uVar19; + ushort uVar20; + ushort uVar21; + ushort uVar22; + ushort uVar23; + ushort uVar24; + ushort uVar25; + ushort uVar26; + ushort uVar27; + ushort uVar28; + ushort uVar29; + ushort uVar30; + ushort uVar31; + ushort uVar32; + ushort uVar33; + ushort uVar34; + ushort uVar35; + ushort uVar36; + ushort uVar37; + ushort uVar38; + ushort uVar39; + ushort uVar40; + ushort uVar41; + ushort uVar42; + ushort uVar43; + ushort uVar44; + ushort uVar45; + + if ((*(int *)(this + 0x3c) == 0) || (piVar9 = *(int **)(this + 0x18), piVar9 == (int *)0x0)) { + return false; + } + iVar4 = *(int *)(this + 0x30); + uVar5 = *(uint *)(this + 0x34); + *(uint *)(this + 0x30) = iVar4 + 1U; + uVar8 = uVar5 >> 2; + if (*(uint *)(this + 0x38) < iVar4 + 1U) { + if (uVar8 != 0) { + puVar11 = *(ushort **)(this + 0x28); + uVar1 = (ulong)(uVar8 - 1) + 1; + puVar10 = param_1; + if (3 < uVar1) { + uVar5 = uVar5 >> 2 & 3; + lVar12 = uVar1 - uVar5; + if (lVar12 != 0) { + uVar8 = uVar8 - (int)lVar12; + lVar7 = lVar12 * 4; + puVar2 = puVar11 + lVar12 * 4; + piVar3 = piVar9 + lVar12 * 4; + do { + uVar13 = *puVar10; + uVar18 = puVar10[1]; + uVar22 = puVar10[2]; + uVar26 = puVar10[3]; + uVar15 = puVar10[4]; + uVar19 = puVar10[5]; + uVar23 = puVar10[6]; + uVar27 = puVar10[7]; + uVar16 = puVar10[8]; + uVar20 = puVar10[9]; + uVar24 = puVar10[10]; + uVar28 = puVar10[0xb]; + uVar17 = puVar10[0xc]; + uVar21 = puVar10[0xd]; + uVar25 = puVar10[0xe]; + uVar29 = puVar10[0xf]; + puVar10 = puVar10 + 0x10; + uVar30 = *puVar11; + uVar34 = puVar11[1]; + uVar38 = puVar11[2]; + uVar42 = puVar11[3]; + uVar31 = puVar11[4]; + uVar35 = puVar11[5]; + uVar39 = puVar11[6]; + uVar43 = puVar11[7]; + uVar32 = puVar11[8]; + uVar36 = puVar11[9]; + uVar40 = puVar11[10]; + uVar44 = puVar11[0xb]; + uVar33 = puVar11[0xc]; + uVar37 = puVar11[0xd]; + uVar41 = puVar11[0xe]; + uVar45 = puVar11[0xf]; + puVar11 = puVar11 + 0x10; + lVar12 = lVar12 + -4; + *piVar9 = ((uint)uVar13 - (uint)uVar30) + *piVar9; + piVar9[1] = ((uint)uVar18 - (uint)uVar34) + piVar9[1]; + piVar9[2] = ((uint)uVar22 - (uint)uVar38) + piVar9[2]; + piVar9[3] = ((uint)uVar26 - (uint)uVar42) + piVar9[3]; + piVar9[4] = ((uint)uVar15 - (uint)uVar31) + piVar9[4]; + piVar9[5] = ((uint)uVar19 - (uint)uVar35) + piVar9[5]; + piVar9[6] = ((uint)uVar23 - (uint)uVar39) + piVar9[6]; + piVar9[7] = ((uint)uVar27 - (uint)uVar43) + piVar9[7]; + piVar9[8] = ((uint)uVar16 - (uint)uVar32) + piVar9[8]; + piVar9[9] = ((uint)uVar20 - (uint)uVar36) + piVar9[9]; + piVar9[10] = ((uint)uVar24 - (uint)uVar40) + piVar9[10]; + piVar9[0xb] = ((uint)uVar28 - (uint)uVar44) + piVar9[0xb]; + piVar9[0xc] = ((uint)uVar17 - (uint)uVar33) + piVar9[0xc]; + piVar9[0xd] = ((uint)uVar21 - (uint)uVar37) + piVar9[0xd]; + piVar9[0xe] = ((uint)uVar25 - (uint)uVar41) + piVar9[0xe]; + piVar9[0xf] = ((uint)uVar29 - (uint)uVar45) + piVar9[0xf]; + piVar9 = piVar9 + 0x10; + } while (lVar12 != 0); + puVar10 = param_1 + lVar7; + puVar11 = puVar2; + piVar9 = piVar3; + if (uVar5 == 0) goto LAB_00179e08; + } + } + do { + uVar8 = uVar8 - 1; + *piVar9 = ((uint)*puVar10 - (uint)*puVar11) + *piVar9; + piVar9[1] = ((uint)puVar10[1] - (uint)puVar11[1]) + piVar9[1]; + piVar9[2] = ((uint)puVar10[2] - (uint)puVar11[2]) + piVar9[2]; + puVar2 = puVar11 + 3; + puVar11 = puVar11 + 4; + piVar9[3] = ((uint)puVar10[3] - (uint)*puVar2) + piVar9[3]; + piVar9 = piVar9 + 4; + puVar10 = puVar10 + 4; + } while (uVar8 != 0); + } + } + else if (uVar8 != 0) { + uVar1 = (ulong)(uVar8 - 1) + 1; + puVar11 = param_1; + if (3 < uVar1) { + uVar5 = uVar5 >> 2 & 3; + lVar12 = uVar1 - uVar5; + if (lVar12 != 0) { + uVar8 = uVar8 - (int)lVar12; + lVar7 = lVar12 * 4; + piVar3 = piVar9 + lVar12 * 4; + do { + uVar13 = *puVar11; + uVar18 = puVar11[1]; + uVar22 = puVar11[2]; + uVar26 = puVar11[3]; + uVar15 = puVar11[4]; + uVar19 = puVar11[5]; + uVar23 = puVar11[6]; + uVar27 = puVar11[7]; + uVar16 = puVar11[8]; + uVar20 = puVar11[9]; + uVar24 = puVar11[10]; + uVar28 = puVar11[0xb]; + uVar17 = puVar11[0xc]; + uVar21 = puVar11[0xd]; + uVar25 = puVar11[0xe]; + uVar29 = puVar11[0xf]; + puVar11 = puVar11 + 0x10; + lVar12 = lVar12 + -4; + *piVar9 = *piVar9 + (uint)uVar13; + piVar9[1] = piVar9[1] + (uint)uVar18; + piVar9[2] = piVar9[2] + (uint)uVar22; + piVar9[3] = piVar9[3] + (uint)uVar26; + piVar9[4] = piVar9[4] + (uint)uVar15; + piVar9[5] = piVar9[5] + (uint)uVar19; + piVar9[6] = piVar9[6] + (uint)uVar23; + piVar9[7] = piVar9[7] + (uint)uVar27; + piVar9[8] = piVar9[8] + (uint)uVar16; + piVar9[9] = piVar9[9] + (uint)uVar20; + piVar9[10] = piVar9[10] + (uint)uVar24; + piVar9[0xb] = piVar9[0xb] + (uint)uVar28; + piVar9[0xc] = piVar9[0xc] + (uint)uVar17; + piVar9[0xd] = piVar9[0xd] + (uint)uVar21; + piVar9[0xe] = piVar9[0xe] + (uint)uVar25; + piVar9[0xf] = piVar9[0xf] + (uint)uVar29; + piVar9 = piVar9 + 0x10; + } while (lVar12 != 0); + puVar11 = param_1 + lVar7; + piVar9 = piVar3; + if (uVar5 == 0) goto LAB_00179e08; + } + } + do { + uVar14 = *(undefined8 *)puVar11; + uVar8 = uVar8 - 1; + *(ulong *)(piVar9 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar9 + 2) >> 0x20) + + (uint)(ushort)((ulong)uVar14 >> 0x30), + (int)*(undefined8 *)(piVar9 + 2) + (uint)(ushort)((ulong)uVar14 >> 0x20)); + *(ulong *)piVar9 = + CONCAT44((int)((ulong)*(undefined8 *)piVar9 >> 0x20) + + (uint)(ushort)((ulong)uVar14 >> 0x10), + (int)*(undefined8 *)piVar9 + (uint)(ushort)uVar14); + puVar11 = puVar11 + 4; + piVar9 = piVar9 + 4; + } while (uVar8 != 0); + } +LAB_00179e08: + memcpy(*(void **)(this + 0x28),param_1,(ulong)*(uint *)(this + 0x34) << 1); + uVar5 = *(uint *)(this + 0x30); + uVar8 = *(uint *)(this + 0x38); + uVar6 = 0; + if (uVar8 != 0) { + uVar6 = uVar5 / uVar8; + } + if (uVar5 == uVar6 * uVar8) { + lVar12 = *(long *)(this + 0x10); + } + else { + lVar12 = *(long *)(this + 0x28) + (ulong)*(uint *)(this + 0x34) * 2; + } + *(long *)(this + 0x28) = lVar12; + return uVar8 <= uVar5; +} + + +================================================================== + +### FUNC 00179e58 (724 bytes) name=PushFrameAve + +/* CSmoother::PushFrameAve(unsigned short*, unsigned int) */ + +bool __thiscall CSmoother::PushFrameAve(CSmoother *this,ushort *param_1,uint param_2) + +{ + ushort *puVar1; + ushort *puVar2; + uint uVar3; + bool bVar4; + uint uVar5; + uint uVar6; + ulong uVar7; + ushort *puVar8; + long lVar9; + ushort *puVar10; + ushort uVar11; + ushort uVar12; + ushort uVar13; + ushort uVar14; + ushort uVar15; + ushort uVar16; + uint uVar17; + undefined8 uVar18; + uint uVar19; + uint uVar20; + undefined8 uVar21; + uint uVar22; + undefined8 uVar23; + undefined8 uVar24; + uint uVar25; + uint uVar26; + uint uVar27; + uint uVar28; + + if (*(int *)(this + 0x3c) == 0) { +LAB_00179f24: + bVar4 = false; + } + else { + uVar5 = *(int *)(this + 0x30) + 1; + *(uint *)(this + 0x30) = uVar5; + if (*(uint *)(this + 0x38) < uVar5) { + if (*(uint *)(this + 0x38) != 1) goto LAB_00179f24; + uVar6 = *(uint *)(this + 0x34); + if (uVar6 != 0) { + puVar8 = *(ushort **)(this + 0x10); + uVar7 = (ulong)(uVar6 - 1); + if (7 < uVar7 + 1) { + uVar3 = uVar6 & 7; + lVar9 = (uVar7 + 1) - (ulong)uVar3; + if ((lVar9 != 0) && ((param_1 + uVar7 + 1 <= puVar8 || (puVar8 + uVar7 + 1 <= param_1)))) + { + uVar6 = uVar6 - (int)lVar9; + puVar1 = param_1 + lVar9; + puVar2 = puVar8 + lVar9; + puVar10 = param_1 + 4; + do { + uVar24 = *(undefined8 *)puVar10; + uVar23 = *(undefined8 *)(puVar10 + -4); + uVar21 = *(undefined8 *)(puVar8 + 4); + uVar18 = *(undefined8 *)puVar8; + uVar11 = (ushort)((ulong)uVar23 >> 0x10); + uVar13 = (ushort)((ulong)uVar23 >> 0x20); + uVar15 = (ushort)((ulong)uVar23 >> 0x30); + uVar25 = ((uint)uVar23 & 0xffff) - ((uint)uVar18 & 0xffff); + uVar26 = (uint)uVar11 - (uint)(ushort)((ulong)uVar18 >> 0x10); + uVar27 = (uint)uVar13 - (uint)(ushort)((ulong)uVar18 >> 0x20); + uVar28 = (uint)uVar15 - (uint)(ushort)((ulong)uVar18 >> 0x30); + uVar12 = (ushort)((ulong)uVar24 >> 0x10); + uVar14 = (ushort)((ulong)uVar24 >> 0x20); + uVar16 = (ushort)((ulong)uVar24 >> 0x30); + uVar17 = ((uint)uVar24 & 0xffff) - (uint)(ushort)uVar21; + uVar19 = (uint)uVar12 - (uint)(ushort)((ulong)uVar21 >> 0x10); + uVar20 = (uint)uVar14 - (uint)(ushort)((ulong)uVar21 >> 0x20); + uVar22 = (uint)uVar16 - (uint)(ushort)((ulong)uVar21 >> 0x30); + *(undefined8 *)(puVar8 + 4) = uVar24; + *(undefined8 *)puVar8 = uVar23; + if ((bool)((int)-uVar25 <= (int)param_2 & ~(uVar25 == 0) & (int)uVar25 <= (int)param_2 + )) { + puVar10[-4] = (short)uVar23 - (short)(uVar25 >> 1); + } + if ((bool)((int)-uVar26 <= (int)param_2 & ~(uVar26 == 0) & (int)uVar26 <= (int)param_2 + )) { + puVar10[-3] = uVar11 - (short)(uVar26 >> 1); + } + if ((bool)((int)-uVar27 <= (int)param_2 & ~(uVar27 == 0) & (int)uVar27 <= (int)param_2 + )) { + puVar10[-2] = uVar13 - (short)(uVar27 >> 1); + } + if ((bool)((int)-uVar28 <= (int)param_2 & ~(uVar28 == 0) & (int)uVar28 <= (int)param_2 + )) { + puVar10[-1] = uVar15 - (short)(uVar28 >> 1); + } + if ((bool)((int)-uVar17 <= (int)param_2 & ~(uVar17 == 0) & (int)uVar17 <= (int)param_2 + )) { + *puVar10 = (short)uVar24 - (short)(uVar17 >> 1); + } + if ((bool)((int)-uVar19 <= (int)param_2 & ~(uVar19 == 0) & (int)uVar19 <= (int)param_2 + )) { + puVar10[1] = uVar12 - (short)(uVar19 >> 1); + } + if ((bool)((int)-uVar20 <= (int)param_2 & ~(uVar20 == 0) & (int)uVar20 <= (int)param_2 + )) { + puVar10[2] = uVar14 - (short)(uVar20 >> 1); + } + if ((bool)((int)-uVar22 <= (int)param_2 & ~(uVar22 == 0) & (int)uVar22 <= (int)param_2 + )) { + puVar10[3] = uVar16 - (short)(uVar22 >> 1); + } + lVar9 = lVar9 + -8; + puVar10 = puVar10 + 8; + puVar8 = puVar8 + 8; + } while (lVar9 != 0); + param_1 = puVar1; + puVar8 = puVar2; + if (uVar3 == 0) goto LAB_00179f1c; + } + } + do { + uVar11 = *param_1; + uVar12 = *puVar8; + *puVar8 = uVar11; + uVar3 = (uint)uVar11 - (uint)uVar12; + if ((((int)uVar3 <= (int)param_2) && ((int)-uVar3 <= (int)param_2)) && (uVar3 != 0)) { + *param_1 = uVar11 - (short)(uVar3 >> 1); + } + uVar6 = uVar6 - 1; + param_1 = param_1 + 1; + puVar8 = puVar8 + 1; + } while (uVar6 != 0); + } +LAB_00179f1c: + uVar6 = 1; + } + else { + memcpy(*(void **)(this + 0x28),param_1,(ulong)*(uint *)(this + 0x34) << 1); + uVar5 = *(uint *)(this + 0x30); + uVar6 = *(uint *)(this + 0x38); + } + uVar3 = 0; + if (uVar6 != 0) { + uVar3 = uVar5 / uVar6; + } + if (uVar5 == uVar3 * uVar6) { + lVar9 = *(long *)(this + 0x10); + } + else { + lVar9 = *(long *)(this + 0x28) + (ulong)*(uint *)(this + 0x34) * 2; + } + bVar4 = uVar6 <= uVar5; + *(long *)(this + 0x28) = lVar9; + } + return bVar4; +} + + +================================================================== + +### FUNC 0017a12c (44 bytes) name=Restart + +/* CSmoother::Restart() */ + +void __thiscall CSmoother::Restart(CSmoother *this) + +{ + if (*(int *)(this + 0x3c) != 0) { + *(undefined4 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x28) = *(undefined8 *)(this + 0x10); + memset(*(void **)(this + 0x18),0,(ulong)*(uint *)(this + 0x34) << 2); + return; + } + return; +} + + +================================================================== + +### FUNC 0017a158 (332 bytes) name=GetSTDFrame + +/* CSmoother::GetSTDFrame() */ + +void * __thiscall CSmoother::GetSTDFrame(CSmoother *this) + +{ + int iVar1; + int iVar2; + int iVar3; + void *pvVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + double dVar11; + double dVar12; + + if ((*(int *)(this + 0x3c) != 0) && (*(long *)(this + 0x18) != 0)) { + pvVar4 = *(void **)(this + 0x20); + if (pvVar4 == (void *)0x0) { + return (void *)0x0; + } + uVar5 = *(uint *)(this + 0x38); + if (uVar5 <= *(uint *)(this + 0x30)) { + iVar3 = uVar5 - 1; + if (uVar5 == 0 || iVar3 == 0) { + memset(pvVar4,0,(ulong)*(uint *)(this + 0x34) << 1); + return *(void **)(this + 0x20); + } + uVar6 = *(uint *)(this + 0x34); + if (uVar6 == 0) { + return pvVar4; + } + iVar2 = uVar5 * uVar5; + uVar9 = 0; + if (uVar5 != 0) goto LAB_0017a204; + do { + uVar10 = (ulong)uVar9; + dVar11 = 0.0; + while( true ) { + dVar11 = (1.0 / (double)(uint)(iVar2 * iVar3)) * dVar11; + dVar12 = SQRT(dVar11); + if (NAN(dVar12)) { + dVar12 = sqrt(dVar11); + } + pvVar4 = *(void **)(this + 0x20); + uVar9 = uVar9 + 1; + *(short *)((long)pvVar4 + uVar10 * 2) = (short)(int)dVar12; + uVar6 = *(uint *)(this + 0x34); + if (uVar6 <= uVar9) { + return pvVar4; + } + uVar5 = *(uint *)(this + 0x38); + if (uVar5 == 0) break; +LAB_0017a204: + uVar10 = (ulong)uVar9; + iVar1 = *(int *)(*(long *)(this + 0x18) + (ulong)uVar9 * 4); + dVar11 = (double)(int)(uVar5 * *(ushort *)(*(long *)(this + 0x10) + (ulong)uVar9 * 2) - + iVar1); + dVar11 = dVar11 * dVar11 + 0.0; + if (uVar5 != 1) { + uVar8 = 1; + uVar7 = uVar9; + do { + uVar7 = uVar6 + uVar7; + uVar8 = uVar8 + 1; + dVar12 = (double)(int)(uVar5 * *(ushort *)(*(long *)(this + 0x10) + (ulong)uVar7 * 2) + - iVar1); + dVar11 = dVar11 + dVar12 * dVar12; + } while (uVar8 < uVar5); + } + } + } while( true ); + } + } + return (void *)0x0; +} + + +================================================================== + +### FUNC 0017a2a4 (212 bytes) name=GetLogFileName + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* GetLogFileName() */ + +undefined * GetLogFileName(void) + +{ + long lVar1; + int iVar2; + tm *ptVar3; + time_t tStack_140; + char acStack_138 [256]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + time(&tStack_140); + ptVar3 = localtime(&tStack_140); + memset(acStack_138,0,0x100); + snprintf(acStack_138,0x100,"%s/log",PTR_g_sStorageDir_00501cf8); + iVar2 = access(acStack_138,0); + if (iVar2 != 0) { + mkdir(acStack_138,0x1c0); + } + iVar2 = sprintf(&DAT_00509791,"%s/coresdk-%d-%02d-%02d.log",acStack_138, + (ulong)(ptVar3->tm_year + 0x76c),(ulong)(ptVar3->tm_mon + 1), + (ulong)(uint)ptVar3->tm_mday); + if (*(long *)(lVar1 + 0x28) == local_38) { + return &DAT_00509791; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar2); +} + + +================================================================== + +### FUNC 0017a378 (176 bytes) name=MAG_RevisedTemp2InnerTemp + +uint MAG_RevisedTemp2InnerTemp(uint param_1,int param_2) + +{ + uint uVar1; + CFunctions *this; + undefined4 *puVar2; + + if (0x80 < param_1) { + return 0xffffffff; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0xffffffff; + } + this = (CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (this == (CFunctions *)0x0) { + return 0xffffffff; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + if (*(int *)(this + 0xec) != 0) { + uVar1 = CFunctions::SearchInnerTemp(this,param_2); + return uVar1 & 0xffff; + } + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0005; + return 0xfffffffe; + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 0017a428 (84 bytes) name=MAG_IsChannelAvailable + +undefined8 MAG_IsChannelAvailable(uint param_1) + +{ + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + return 1; + } + return 0; +} + + +================================================================== + +### FUNC 0017a47c (176 bytes) name=MAG_RevisedTemp2Gray + +uint MAG_RevisedTemp2Gray(uint param_1,int param_2) + +{ + uint uVar1; + CFunctions *this; + undefined4 *puVar2; + + if (0x80 < param_1) { + return 0xffffffff; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0xffffffff; + } + this = (CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (this == (CFunctions *)0x0) { + return 0xffffffff; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + if (*(int *)(this + 0xec) != 0) { + uVar1 = CFunctions::SearchInnerGray(this,param_2); + return uVar1 & 0xffff; + } + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0005; + return 0xfffffffe; + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 0017a52c (280 bytes) name=MAG_GetCurrentOffset + +undefined4 MAG_GetCurrentOffset(uint param_1,char *param_2,int *param_3,int *param_4) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + ushort *__dest; + undefined4 *puVar4; + ulong uVar5; + long lVar6; + + if (((param_2 == (char *)0x0) || (param_3 == (int *)0x0)) || (param_4 == (int *)0x0)) { + puVar4 = (undefined4 *)__errno(); + *puVar4 = 0xe4ae0001; + } + else { + *param_3 = 0; + *param_4 = 0; + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar5 = (ulong)param_1; + lVar6 = (&DAT_005098a0)[uVar5 * 0x93]; + if ((lVar6 != 0) && ((&DAT_00509898)[uVar5 * 0x93] != 0)) { + if (*(int *)(lVar6 + 0xec) != 0) { + iVar1 = *(int *)(&DAT_00509900 + uVar5 * 0x498); + iVar2 = *(int *)(&DAT_00509904 + uVar5 * 0x498); + uVar5 = (ulong)(uint)(iVar2 * iVar1); + __dest = operator_new__(uVar5 << 2); + memcpy(__dest,*(void **)(lVar6 + 0x140),uVar5 << 1); + uVar3 = GetOffset(param_2,__dest,iVar1,iVar2,param_3,param_4); + operator_delete__(__dest); + return uVar3; + } + puVar4 = (undefined4 *)__errno(); + *puVar4 = 0xe4ae0006; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 0017a644 (76 bytes) name=MAG_SetStorageDir + +void MAG_SetStorageDir(char *param_1) + +{ + undefined *puVar1; + size_t sVar2; + int iVar3; + + sVar2 = strlen(param_1); + puVar1 = PTR_g_sStorageDir_00501cf8; + iVar3 = 0xff; + if ((int)sVar2 + 1 < 0xff) { + iVar3 = (int)sVar2 + 1; + } + strncpy(PTR_g_sStorageDir_00501cf8,param_1,(long)iVar3); + puVar1[0xff] = 0; + return; +} + + +================================================================== + +### FUNC 0017a690 (124 bytes) name=MAG_GetCurrentCameraInnerTemperature + +undefined4 MAG_GetCurrentCameraInnerTemperature(uint param_1) + +{ + long lVar1; + + if (0x80 < param_1) { + return 0x80000000; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0x80000000; + } + lVar1 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (lVar1 == 0) { + return 0x80000000; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + if (*(int *)(lVar1 + 0xec) != 0) { + return *(undefined4 *)(lVar1 + 0x44); + } + return 0x80000000; + } + return 0x80000000; +} + + +================================================================== + +### FUNC 0017a70c (360 bytes) name=MAG_NewChannel + +undefined8 MAG_NewChannel(uint param_1) + +{ + undefined4 *puVar1; + CVideoFunctions *pCVar2; + CFunctions *this; + CNetComm *this_00; + long *plVar3; + undefined4 uVar4; + long *__s; + long *plVar5; + long *plVar6; + + if (0x80 < param_1) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return 0; + } + __s = &DAT_00509898 + (ulong)param_1 * 0x93; + plVar5 = &DAT_005098a8 + (ulong)param_1 * 0x93; + if (((*plVar5 != 0) || (plVar6 = &DAT_005098a0 + (ulong)param_1 * 0x93, *plVar6 != 0)) || + (*__s != 0)) { + puVar1 = (undefined4 *)__errno(); + uVar4 = 0xe4ae0003; + goto LAB_0017a794; + } + memset(__s,0,0x498); + pCVar2 = operator_new(0x178); + CVideoFunctions::CVideoFunctions(pCVar2); + *__s = (long)pCVar2; + this = operator_new(0x76e8); + CFunctions::CFunctions(this); + *plVar6 = (long)this; + this_00 = operator_new(0xb70); + CNetComm::CNetComm(this_00); + *plVar5 = (long)this_00; + plVar3 = (long *)*plVar6; + pCVar2 = (CVideoFunctions *)*__s; + if (plVar3 == (long *)0x0) { + if (pCVar2 != (CVideoFunctions *)0x0) { + CVideoFunctions::~CVideoFunctions(pCVar2); + operator_delete(pCVar2); + *__s = 0; + plVar3 = (long *)*plVar6; + if (plVar3 != (long *)0x0) goto LAB_0017a838; + } + } + else { + if (pCVar2 != (CVideoFunctions *)0x0) { + *(uint *)(this_00 + 0x334) = param_1; + return 1; + } +LAB_0017a838: + (**(code **)(*plVar3 + 8))(); + *plVar6 = 0; + } + if ((long *)*plVar5 != (long *)0x0) { + (**(code **)(*(long *)*plVar5 + 8))(); + *plVar5 = 0; + } + puVar1 = (undefined4 *)__errno(); + uVar4 = 0xe4ae0002; +LAB_0017a794: + *puVar1 = uVar4; + return 0; +} + + +================================================================== + +### FUNC 0017a890 (192 bytes) name=MAG_DelChannel + +void MAG_DelChannel(uint param_1) + +{ + long *plVar1; + CVideoFunctions *this; + long *plVar2; + + if (param_1 < 0x81) { + plVar1 = &DAT_00509898 + (ulong)param_1 * 0x93; + plVar2 = &DAT_005098a8 + (ulong)param_1 * 0x93; + if (((*plVar2 != 0) && ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && (*plVar1 != 0)) { + MAG_Free(); + } + this = (CVideoFunctions *)*plVar1; + if (this != (CVideoFunctions *)0x0) { + CVideoFunctions::~CVideoFunctions(this); + operator_delete(this); + *plVar1 = 0; + } + plVar1 = (long *)(&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (plVar1 != (long *)0x0) { + (**(code **)(*plVar1 + 8))(); + (&DAT_005098a0)[(ulong)param_1 * 0x93] = 0; + } + if ((long *)*plVar2 != (long *)0x0) { + (**(code **)(*(long *)*plVar2 + 8))(); + *plVar2 = 0; + } + } + return; +} + + +================================================================== + +### FUNC 0017a950 (188 bytes) name=MAG_Free + +void MAG_Free(uint param_1) + +{ + CNetComm *this; + ulong uVar1; + long *plVar2; + + if (param_1 < 0x81) { + plVar2 = &DAT_005098a8 + (ulong)param_1 * 0x93; + this = (CNetComm *)*plVar2; + if (((this != (CNetComm *)0x0) && (uVar1 = (ulong)param_1, (&DAT_005098a0)[uVar1 * 0x93] != 0)) + && ((&DAT_00509898)[uVar1 * 0x93] != 0)) { + if (*(int *)(&DAT_005098c0 + uVar1 * 0x498) != 0) { + MAG_StopProcessImage(param_1); + this = (CNetComm *)*plVar2; + } + if (*(int *)(this + 0x84) != 0) { + CNetComm::StopReceiveImg(this,0); + this = (CNetComm *)*plVar2; + } + if (*(int *)(this + 0x80) != 0) { + CNetComm::DisLink(this,0,0); + this = (CNetComm *)*plVar2; + } + if (*(int *)(this + 0x7c) != 0) { + CNetComm::DeInit(this); + return; + } + } + } + return; +} + + +================================================================== + +### FUNC 0017aa0c (108 bytes) name=MAG_IsInitialized + +undefined4 MAG_IsInitialized(uint param_1) + +{ + if (0x80 < param_1) { + return 0; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + if ((&DAT_005098a0)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + return *(undefined4 *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x7c); + } + return 0; +} + + +================================================================== + +### FUNC 0017aa78 (156 bytes) name=MAG_Initialize + +bool MAG_Initialize(uint param_1) + +{ + long lVar1; + int iVar2; + CNetComm *this; + ulong uVar3; + + if (param_1 < 0x81) { + this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93]; + if (this == (CNetComm *)0x0) { + return false; + } + uVar3 = (ulong)param_1; + if (((&DAT_005098a0)[uVar3 * 0x93] != 0) && ((&DAT_00509898)[uVar3 * 0x93] != 0)) { + lVar1 = uVar3 * 0x498; + *(undefined8 *)(&DAT_005098c0 + lVar1) = 0; + *(undefined8 *)(&DAT_005098d0 + lVar1) = 0; + *(undefined8 *)(&DAT_005098d8 + lVar1) = 0; + if (*(int *)(this + 0x7c) != 0) { + CNetComm::DeInit(this); + this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93]; + } + iVar2 = CNetComm::Init(this); + return iVar2 != 0; + } + } + return false; +} + + +================================================================== + +### FUNC 0017ab14 (172 bytes) name=MAG_StopProcessImage + +void MAG_StopProcessImage(uint param_1) + +{ + long lVar1; + CNetComm *this; + void *pvVar2; + CVideoFunctions *this_00; + ulong uVar3; + + if ((param_1 < 0x81) && + (this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93], this != (CNetComm *)0x0)) { + uVar3 = (ulong)param_1; + if ((&DAT_005098a0)[uVar3 * 0x93] != 0) { + this_00 = (CVideoFunctions *)(&DAT_00509898)[uVar3 * 0x93]; + if (this_00 != (CVideoFunctions *)0x0) { + if (*(int *)(this + 0x84) != 0) { + CNetComm::StopReceiveImg(this,0); + this_00 = (CVideoFunctions *)(&DAT_00509898)[uVar3 * 0x93]; + } + lVar1 = uVar3 * 0x498; + *(undefined8 *)(&DAT_005098c0 + lVar1) = 0; + *(undefined8 *)(&DAT_005098d8 + lVar1) = 0; + CVideoFunctions::ReleaseMemory(this_00); + CFunctions::ReleaseMemory((CFunctions *)(&DAT_005098a0)[uVar3 * 0x93]); + pvVar2 = *(void **)(&DAT_005098d0 + lVar1); + if (pvVar2 != (void *)0x0) { + operator_delete__(pvVar2); + *(undefined8 *)(&DAT_005098d0 + lVar1) = 0; + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0017abc0 (8 bytes) name=MAG_GetLocalIp + +undefined8 MAG_GetLocalIp(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017abc8 (12 bytes) name=MAG_SetFilter + +void MAG_SetFilter(undefined4 param_1) + +{ + DAT_0052e930 = param_1; + return; +} + + +================================================================== + +### FUNC 0017abd4 (16 bytes) name=MAG_EnableAutoReConnect + +void MAG_EnableAutoReConnect(undefined4 param_1) + +{ + *(undefined4 *)PTR_m_bEnableMonitor_00501a50 = param_1; + return; +} + + +================================================================== + +### FUNC 0017abe4 (44 bytes) name=MAG_EnumCameras + +undefined8 MAG_EnumCameras(void) + +{ + undefined8 uVar1; + + if (((DAT_005098a8 != (CNetComm *)0x0) && (DAT_005098a0 != 0)) && (DAT_00509898 != 0)) { + uVar1 = CNetComm::EnumCameras(DAT_005098a8); + return uVar1; + } + return 0; +} + + +================================================================== + +### FUNC 0017ac10 (108 bytes) name=MAG_IsLinked + +undefined4 MAG_IsLinked(uint param_1) + +{ + if (0x80 < param_1) { + return 0; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + if ((&DAT_005098a0)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + return *(undefined4 *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x80); + } + return 0; +} + + +================================================================== + +### FUNC 0017ac7c (8 bytes) name=MAG_IsListening + +undefined8 MAG_IsListening(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017ac84 (192 bytes) name=MAG_LinkCamera + +bool MAG_LinkCamera(uint param_1,char *param_2) + +{ + int iVar1; + long lVar2; + uint extraout_w1; + long *plVar3; + + if (param_1 < 0x81) { + plVar3 = &DAT_005098a8 + (ulong)param_1 * 0x93; + lVar2 = *plVar3; + if (lVar2 == 0) { + return false; + } + if ((((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) && (*(int *)(lVar2 + 0x80) == 0)) { + iVar1 = CNetComm::LinkCamera((uint)lVar2,param_2,"",0x43ad5e,0x833c,(char *)0x0,""); + if ((iVar1 != 0) && (iVar1 = ReadRemoteData(param_1,extraout_w1), iVar1 == 0)) { + CNetComm::DisLink((CNetComm *)*plVar3,1,0); + } + return *(int *)(*plVar3 + 0x80) != 0; + } + } + return false; +} + + +================================================================== + +### FUNC 0017ad44 (192 bytes) name=MAG_LinkCameraEx + +bool MAG_LinkCameraEx(uint param_1,char *param_2,uint param_3,char *param_4,undefined8 param_5, + char *param_6,char *param_7,uint param_8) + +{ + int iVar1; + long lVar2; + uint extraout_w1; + long *plVar3; + + if (param_1 < 0x81) { + plVar3 = &DAT_005098a8 + (ulong)param_1 * 0x93; + lVar2 = *plVar3; + if (lVar2 == 0) { + return false; + } + if ((((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) && (*(int *)(lVar2 + 0x80) == 0)) { + iVar1 = CNetComm::LinkCamera + ((uint)lVar2,param_2,param_7,param_8,param_3 & 0xffff,param_6,param_4); + if ((iVar1 != 0) && (iVar1 = ReadRemoteData(param_1,extraout_w1), iVar1 == 0)) { + CNetComm::DisLink((CNetComm *)*plVar3,1,0); + } + return *(int *)(*plVar3 + 0x80) != 0; + } + } + return false; +} + + +================================================================== + +### FUNC 0017ae04 (1088 bytes) name=ReadRemoteData + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* ReadRemoteData(unsigned int, unsigned int) */ + +void ReadRemoteData(uint param_1,uint param_2) + +{ + undefined4 *__s; + char cVar1; + bool bVar2; + long lVar3; + undefined8 uVar4; + undefined *puVar5; + uint uVar6; + int iVar7; + undefined8 uVar8; + int *piVar9; + long lVar10; + ulong uVar11; + long *plVar12; + char *local_f0; + Logging aLStack_e8 [24]; + uint local_d0; + uint uStack_cc; + undefined4 local_c8; + undefined4 local_c0; + undefined4 uStack_bc; + undefined4 local_b8; + BasePara2 aBStack_90 [32]; + undefined4 local_70; + undefined4 local_68; + float local_64; + char local_60; + char local_5f; + char local_5e; + char local_5d; + char local_5c; + char local_5b; + char local_5a; + char local_59; + long local_58; + + lVar3 = tpidr_el0; + local_58 = *(long *)(lVar3 + 0x28); + uVar11 = (ulong)param_1; + iVar7 = CNetComm::ReadPara((CNetComm *)(&DAT_005098a8)[uVar11 * 0x93],(BasePara1 *)&local_d0, + aBStack_90,500); + if ((iVar7 == 0) && + (iVar7 = CNetComm::ReadPara((CNetComm *)(&DAT_005098a8)[uVar11 * 0x93],(BasePara1 *)&local_d0, + aBStack_90,1000), iVar7 == 0)) { + mag::Logging::Logging(aLStack_e8,4); + MStream::operator<<((MStream *)aLStack_e8,"Failed to get parameters from remote camera"); + mag::Logging::~Logging(aLStack_e8); + uVar8 = 0; + } + else { + uVar6 = local_d0; + if ((uStack_cc >> 0x19 == 0) && + ((0x12 < local_d0 + 0xf67670e7 || + ((1 << (ulong)(local_d0 + 0xf67670e7 & 0x1f) & 0x401cbU) == 0)))) { + printf("[SDK]unsupported device type %d\n",(ulong)(uStack_cc >> 0x18)); + uVar8 = 0; + } + else { + lVar10 = uVar11 * 0x498; + __s = (undefined4 *)(&DAT_00509900 + lVar10); + *(uint *)(&DAT_00509d1c + lVar10) = local_d0; + *(uint *)(&DAT_00509d24 + lVar10) = uStack_cc & 0xffffff; + *(undefined4 *)(&DAT_00509d00 + lVar10) = 0; + *(undefined4 *)(&DAT_00509d20 + lVar10) = local_b8; + *(undefined4 *)(&DAT_00509d28 + lVar10) = local_c8; + memset(__s,0,0x50); + *(uint *)(&DAT_005098f8 + lVar10) = uVar6; + *(undefined4 *)(&DAT_005098fc + lVar10) = 0; + *(undefined8 *)(&DAT_00509908 + lVar10) = 0; + puVar5 = PTR_DAT_00501f30; + local_f0 = PTR_DAT_00501f30 + 0x18; + switch((ulong)(uStack_cc >> 0x18)) { + case 0: + FUN_00412fdc(&local_f0,&DAT_00439f13,2); + break; + case 1: + FUN_00412fdc(&local_f0,&DAT_00439f2c,2); + break; + case 2: + FUN_00412fdc(&local_f0,"M3Pro",5); + break; + case 3: + FUN_00412fdc(&local_f0,"160Core",7); + break; + case 4: + FUN_00412fdc(&local_f0,&DAT_00439f35,2); + break; + case 5: + FUN_00412fdc(&local_f0,"C1Pro",5); + break; + case 6: + FUN_00412fdc(&local_f0,"C1ProLt",7); + break; + default: + FUN_00412fdc(&local_f0,&DAT_00439f38,2); + } + lVar10 = uVar11 * 0x498; + snprintf(&DAT_00509910 + lVar10,0x20,"%s-%u",local_f0,(ulong)local_d0); + strcpy(&DAT_00509930 + lVar10,local_f0); + *__s = local_c0; + *(undefined4 *)(&DAT_00509904 + lVar10) = uStack_bc; + *(undefined4 *)(&DAT_00509940 + lVar10) = local_c0; + *(undefined4 *)(&DAT_00509944 + lVar10) = uStack_bc; + if ((*(uint *)(&DAT_005098bc + lVar10) | 2) == 3) { + *__s = uStack_bc; + *(undefined4 *)(&DAT_00509904 + lVar10) = local_c0; + *(undefined4 *)(&DAT_00509940 + lVar10) = uStack_bc; + *(undefined4 *)(&DAT_00509944 + lVar10) = local_c0; + } + plVar12 = &DAT_005098a0 + uVar11 * 0x93; + lVar10 = *plVar12; + *(undefined4 *)(&DAT_00509938 + uVar11 * 0x498) = local_b8; + *(undefined4 *)(&DAT_0050993c + uVar11 * 0x498) = local_b8; + memset((void *)(lVar10 + 8),0,0xa0); + uVar4 = _UNK_00439d78; + uVar8 = _DAT_00439d70; + lVar10 = *plVar12; + *(undefined4 *)(lVar10 + 0x38) = 200; + *(undefined4 *)(lVar10 + 8) = 0; + *(undefined8 *)(lVar10 + 0x20) = 0x5000000ff; + *(undefined4 *)(lVar10 + 0x68) = 1; + *(undefined8 *)(lVar10 + 0x18) = uVar4; + *(undefined8 *)(lVar10 + 0x10) = uVar8; + *(undefined8 *)(lVar10 + 0x4c) = 0x100000001; + if (local_64 == 0.0) { + *(undefined8 *)(lVar10 + 0x80) = 0; + *(int *)(lVar10 + 0x88) = local_60 * 0x32; + *(int *)(lVar10 + 0x8c) = local_5f * 0x32; + *(int *)(lVar10 + 0x90) = local_5e * 0x32; + *(int *)(lVar10 + 0x94) = local_5d * 0x32; + *(int *)(lVar10 + 0x98) = local_5c * 0x32; + *(int *)(lVar10 + 0x9c) = local_5b * 0x32; + *(int *)(lVar10 + 0xa0) = local_5a * 0x32; + *(int *)(lVar10 + 0xa4) = local_59 * 0x32; + } + else { + *(float *)(lVar10 + 0x84) = local_64; + *(undefined8 *)(lVar10 + 0xa0) = 0; + *(undefined8 *)(lVar10 + 0x98) = 0; + *(undefined4 *)(lVar10 + 0x80) = local_68; + *(undefined8 *)(lVar10 + 0x90) = 0; + *(undefined8 *)(lVar10 + 0x88) = 0; + lVar10 = *plVar12; + } + uVar4 = _UNK_00436378; + uVar8 = _DAT_00436370; + *(undefined4 *)(lVar10 + 0xb8) = 0x41a00000; + *(undefined8 *)(lVar10 + 0xc4) = 0; + *(undefined8 *)(lVar10 + 0xbc) = 0; + *(undefined4 *)(lVar10 + 0xcc) = 0x3f7f4b1f; + *(undefined8 *)(lVar10 + 0xb0) = uVar4; + *(undefined8 *)(lVar10 + 0xa8) = uVar8; + *(undefined4 *)(lVar10 + 0x24) = local_70; + *(undefined4 *)(lVar10 + 0xd0) = 0x3f800000; + if (local_f0 + -0x18 != puVar5) { + piVar9 = (int *)(local_f0 + -8); + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar7 = *piVar9; + *piVar9 = iVar7 + -1; + } + else { + do { + iVar7 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar7 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar7 < 1) { + operator_delete(local_f0 + -0x18); + } + } + uVar8 = 1; + } + } + if (*(long *)(lVar3 + 0x28) == local_58) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar8); +} + + +================================================================== + +### FUNC 0017b2c4 (8 bytes) name=MAG_ListenTo + +undefined8 MAG_ListenTo(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017b2cc (144 bytes) name=MAG_DisLinkCamera + +void MAG_DisLinkCamera(uint param_1) + +{ + CNetComm *this; + ulong uVar1; + + if (param_1 < 0x81) { + this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93]; + if (((this != (CNetComm *)0x0) && (uVar1 = (ulong)param_1, (&DAT_005098a0)[uVar1 * 0x93] != 0)) + && ((&DAT_00509898)[uVar1 * 0x93] != 0)) { + if (*(int *)(&DAT_005098c0 + uVar1 * 0x498) != 0) { + MAG_StopProcessImage(param_1); + this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93]; + } + CNetComm::DisLink(this,1,0); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0017b35c (112 bytes) name=MAG_GetRecentHeartBeat + +int MAG_GetRecentHeartBeat(uint param_1) + +{ + int iVar1; + long lVar2; + + if ((((param_1 < 0x81) && (lVar2 = (&DAT_005098a8)[(ulong)param_1 * 0x93], lVar2 != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + iVar1 = GetTickCount(); + iVar1 = iVar1 - (int)*(undefined8 *)(lVar2 + 0xae8); + } + else { + iVar1 = -1; + } + return iVar1; +} + + +================================================================== + +### FUNC 0017b3cc (92 bytes) name=MAG_StopListen + +void MAG_StopListen(uint param_1) + +{ + ulong uVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar1 = (ulong)param_1, (&DAT_005098a0)[uVar1 * 0x93] != 0)) && + (((&DAT_00509898)[uVar1 * 0x93] != 0 && (*(int *)(&DAT_005098c0 + uVar1 * 0x498) != 0)))) { + MAG_StopProcessImage(); + return; + } + return; +} + + +================================================================== + +### FUNC 0017b428 (112 bytes) name=MAG_SetReConnectCallBack + +undefined8 MAG_SetReConnectCallBack(uint param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + + if (0x80 < param_1) { + return 0; + } + lVar1 = (&DAT_005098a8)[(ulong)param_1 * 0x93]; + if (lVar1 == 0) { + return 0; + } + if ((&DAT_005098a0)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + *(undefined8 *)(lVar1 + 0x38) = param_2; + *(undefined8 *)(lVar1 + 0x40) = param_3; + return 1; + } + return 0; +} + + +================================================================== + +### FUNC 0017b498 (108 bytes) name=MAG_GetCamInfo + +void MAG_GetCamInfo(uint param_1,void *param_2,uint param_3) + +{ + ulong uVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar1 = (ulong)param_1, (&DAT_005098a0)[uVar1 * 0x93] != 0)) && + ((&DAT_00509898)[uVar1 * 0x93] != 0)) { + if (0x4f < param_3) { + param_3 = 0x50; + } + memcpy(param_2,&DAT_00509900 + uVar1 * 0x498,(ulong)param_3); + return; + } + return; +} + + +================================================================== + +### FUNC 0017b504 (8 bytes) name=MAG_GetMulticastState + +undefined8 MAG_GetMulticastState(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017b50c (8 bytes) name=MAG_GetCameraTemperature + +undefined8 MAG_GetCameraTemperature(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017b514 (140 bytes) name=MAG_GetTerminalList + +int MAG_GetTerminalList(void *param_1,uint param_2) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = 0; + if (((DAT_005098a8 != 0) && (DAT_005098a0 != 0)) && (DAT_00509898 != 0)) { + if (*(int *)(DAT_005098a8 + 0x7c) == 0) { + puVar1 = (undefined4 *)__errno(); + iVar2 = 0; + *puVar1 = 0xe4ae0004; + } + else { + iVar2 = *(int *)(DAT_005098a8 + 0xab8); + if (((param_2 != 0) && (param_1 != (void *)0x0)) && (iVar2 != 0)) { + if ((uint)(iVar2 * 0x3c) <= param_2) { + param_2 = iVar2 * 0x3c; + } + memcpy(param_1,(void *)(DAT_005098a8 + 0x338),(ulong)param_2); + } + } + } + return iVar2; +} + + +================================================================== + +### FUNC 0017b5a0 (116 bytes) name=MAG_IsProcessingImage + +undefined4 MAG_IsProcessingImage(uint param_1) + +{ + ulong uVar1; + + if (0x80 < param_1) { + return 0; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + uVar1 = (ulong)param_1; + if ((&DAT_005098a0)[uVar1 * 0x93] == 0) { + return 0; + } + if ((&DAT_00509898)[uVar1 * 0x93] != 0) { + return *(undefined4 *)(&DAT_005098c0 + uVar1 * 0x498); + } + return 0; +} + + +================================================================== + +### FUNC 0017b614 (188 bytes) name=MAG_PrepareProcessImage + +undefined8 MAG_PrepareProcessImage(uint param_1,long param_2,undefined8 param_3) + +{ + CNetComm *this; + undefined4 *puVar1; + undefined8 uVar2; + undefined4 uVar3; + ulong uVar4; + + if ((((param_1 < 0x81) && + (this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93], this != (CNetComm *)0x0)) && + (uVar4 = (ulong)param_1, (&DAT_005098a0)[uVar4 * 0x93] != 0)) && + ((&DAT_00509898)[uVar4 * 0x93] != 0)) { + if (*(int *)(&DAT_005098c0 + uVar4 * 0x498) == 0) { + if (*(int *)(this + 0x80) != 0) { + if (param_2 == 0) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return 0xffffffff; + } + *(long *)(this + 0x58) = param_2; + *(undefined8 *)(this + 0x60) = param_3; + uVar2 = CNetComm::DoPrepareInBackground(this); + return uVar2; + } + puVar1 = (undefined4 *)__errno(); + uVar3 = 0xe4ae0005; + } + else { + puVar1 = (undefined4 *)__errno(); + uVar3 = 0xe4ae0003; + } + *puVar1 = uVar3; + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 0017b6d0 (96 bytes) name=MAG_StartProcessImage + +undefined8 MAG_StartProcessImage(uint param_1) + +{ + undefined8 uVar1; + undefined8 in_x4; + ulong uVar2; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar2 = (ulong)param_1, (&DAT_005098a0)[uVar2 * 0x93] != 0)) && + ((&DAT_00509898)[uVar2 * 0x93] != 0)) { + *(undefined8 *)(&DAT_005098b0 + uVar2 * 0x498) = in_x4; + uVar1 = StartProcessImage(); + return uVar1; + } + return 0; +} + + +================================================================== + +### FUNC 0017b730 (816 bytes) name=StartProcessImage + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* StartProcessImage(unsigned int, OutputPara const*, void (*)(unsigned int, unsigned int, unsigned + int, void*), ImgTypes, int) */ + +undefined4 +StartProcessImage(ulong param_1,uint *param_2,long param_3,int param_4,undefined4 param_5) + +{ + uint uVar1; + long lVar2; + int iVar3; + undefined4 *puVar4; + void *pvVar5; + undefined4 uVar6; + long lVar7; + long *plVar8; + undefined4 uVar9; + uint uVar10; + CNetComm *this; + undefined8 *puVar11; + undefined8 uVar12; + uint local_190; + undefined8 local_18c; + undefined8 uStack_184; + uint local_17c; + undefined8 local_178; + undefined8 uStack_170; + char acStack_168 [256]; + long local_68; + + lVar2 = tpidr_el0; + local_68 = *(long *)(lVar2 + 0x28); + if (((param_2 == (uint *)0x0) || (param_3 == 0)) || (param_4 != 2)) { +LAB_0017b7d0: + puVar4 = (undefined4 *)__errno(); + uVar6 = 0xe4ae0001; + } + else { + uVar10 = *param_2; + if ((uVar10 != *(uint *)(&DAT_00509900 + (param_1 & 0xffffffff) * 0x498)) || ((uVar10 & 3) != 0) + ) goto LAB_0017b7d0; + param_1 = param_1 & 0xffffffff; + if ((((param_2[1] != *(uint *)(&DAT_00509904 + param_1 * 0x498)) || + (((param_2[2] & 3) != 0 || (param_2[2] < uVar10)))) || ((param_2[4] & 3) != 0)) || + ((param_2[3] <= param_2[1] - 1 || (param_2[5] == 0)))) goto LAB_0017b7d0; + if (*(int *)(&DAT_005098c0 + param_1 * 0x498) != 0) goto LAB_0017b850; + plVar8 = &DAT_005098a8 + param_1 * 0x93; + this = (CNetComm *)*plVar8; + if (*(int *)(this + 0x80) != 0) { + lVar7 = param_1 * 0x498; + puVar11 = (undefined8 *)(&DAT_005098d0 + lVar7); + pvVar5 = (void *)*puVar11; + *(undefined4 *)(&DAT_005098c4 + lVar7) = 2; + *(undefined4 *)(&DAT_00509d18 + lVar7) = 0; + *(undefined4 *)(&DAT_00509d14 + lVar7) = 0; + *(undefined8 *)(&DAT_005098f0 + lVar7) = *(undefined8 *)(param_2 + 4); + uVar12 = *(undefined8 *)param_2; + *(undefined8 *)(lVar7 + 0x5098e8) = *(undefined8 *)(param_2 + 2); + *(undefined8 *)(&DAT_005098e0 + lVar7) = uVar12; + uVar1 = uVar10 * param_2[1] * 2; + if (pvVar5 != (void *)0x0) { + operator_delete__(pvVar5); + *puVar11 = 0; + uVar10 = *param_2; + this = (CNetComm *)*plVar8; + } + pvVar5 = operator_new__((ulong)uVar1 + 0x98); + *puVar11 = pvVar5; + uStack_184 = *(undefined8 *)(param_2 + 3); + local_18c = *(undefined8 *)(param_2 + 1); + local_17c = param_2[5]; + uStack_170 = _UNK_00439d88; + local_178 = _DAT_00439d80; + local_190 = uVar10; + iVar3 = CNetComm::TransferCaliFile(this); + if (iVar3 == 0) { +LAB_0017ba54: + uVar9 = 0; + } + else { + iVar3 = CFunctions::Reset((CFunctions *)(&DAT_005098a0)[param_1 * 0x93], + (struct_IntrinsicPara *)&local_190); + if (iVar3 == 0) { + if ((void *)*puVar11 != (void *)0x0) { + operator_delete__((void *)*puVar11); + *puVar11 = 0; + } + } + else { + CNetComm::GetCaliFileName((CNetComm *)*plVar8,acStack_168,0x100); + iVar3 = CFunctions::LoadCalibrationTable + ((CFunctions *)(&DAT_005098a0)[param_1 * 0x93],acStack_168); + if (iVar3 != 0) { + lVar7 = param_1 * 0x498; + *(undefined4 *)(&DAT_00509cf0 + lVar7) = 0xffffffff; + puVar4 = (undefined4 *)__errno(); + *puVar4 = 0xe4ae0007; + *(uint *)(&DAT_00509948 + lVar7) = param_2[4]; + *(uint *)(&DAT_0050994c + lVar7) = param_2[5]; + iVar3 = CNetComm::SetShutterState((int)*plVar8,(uint *)0x0); + if (iVar3 != 0) { + lVar7 = (&DAT_005098a0)[param_1 * 0x93]; + *(undefined4 *)(lVar7 + 0x3c) = *(undefined4 *)(lVar7 + 0x44); + *(undefined4 *)(lVar7 + 0x40) = *(undefined4 *)(lVar7 + 0x48); + *(undefined4 *)(&DAT_00509d10 + param_1 * 0x498) = 0; + } + uVar9 = 1; + iVar3 = CNetComm::StartReceiveImg + ((CNetComm *)*plVar8,1,uVar1,0,*puVar11,FUN_0017e7fc,0,param_5); + if (iVar3 != 0) { + lVar7 = param_1 * 0x498; + *(long *)(&DAT_005098d8 + lVar7) = param_3; + *(undefined4 *)(&DAT_00509cf4 + lVar7) = param_5; + *(undefined4 *)(&DAT_00509cf8 + lVar7) = 0; + *(undefined4 *)(&DAT_00509cfc + lVar7) = 0; + *(undefined8 *)(&DAT_00509d0c + lVar7) = 0xffffffff00000000; + *(int *)(&DAT_005098c0 + param_1 * 0x498) = 1; + goto LAB_0017b7e0; + } + if ((void *)*puVar11 != (void *)0x0) { + operator_delete__((void *)*puVar11); + uVar9 = 0; + *puVar11 = 0; + goto LAB_0017b7e0; + } + goto LAB_0017ba54; + } + } +LAB_0017b850: + puVar4 = (undefined4 *)__errno(); + uVar9 = 0; + *puVar4 = 0xe4ae0003; + } + goto LAB_0017b7e0; + } + puVar4 = (undefined4 *)__errno(); + uVar6 = 0xe4ae0005; + } + uVar9 = 0; + *puVar4 = uVar6; +LAB_0017b7e0: + if (*(long *)(lVar2 + 0x28) == local_68) { + return uVar9; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017ba60 (100 bytes) name=MAG_StartProcessPulseImage + +undefined8 MAG_StartProcessPulseImage(uint param_1) + +{ + undefined8 uVar1; + undefined8 in_x4; + ulong uVar2; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar2 = (ulong)param_1, (&DAT_005098a0)[uVar2 * 0x93] != 0)) && + ((&DAT_00509898)[uVar2 * 0x93] != 0)) { + *(undefined8 *)(&DAT_005098b0 + uVar2 * 0x498) = in_x4; + uVar1 = StartProcessImage(); + return uVar1; + } + return 0; +} + + +================================================================== + +### FUNC 0017bac4 (140 bytes) name=MAG_WillStartImmediately + +bool MAG_WillStartImmediately(uint param_1) + +{ + bool bVar1; + int iVar2; + CNetComm *this; + + if (0x80 < param_1) { + return false; + } + this = (CNetComm *)(&DAT_005098a8)[(ulong)param_1 * 0x93]; + bVar1 = false; + if (this != (CNetComm *)0x0) { + if ((&DAT_005098a0)[(ulong)param_1 * 0x93] == 0) { + return false; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] == 0) { + return false; + } + if (*(int *)(this + 0x80) == 0) { + return false; + } + iVar2 = CNetComm::RefreshCaliFileNeeded(this); + bVar1 = iVar2 == 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 0017bb50 (104 bytes) name=MAG_TransferPulseImage + +undefined8 MAG_TransferPulseImage(uint param_1) + +{ + ulong uVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar1 = (ulong)param_1, (&DAT_005098a0)[uVar1 * 0x93] != 0)) && + ((&DAT_00509898)[uVar1 * 0x93] != 0)) { + *(undefined4 *)(&DAT_00509cfc + uVar1 * 0x498) = 0; + *(undefined4 *)(&DAT_00509cf8 + uVar1 * 0x498) = 1; + } + return 0; +} + + +================================================================== + +### FUNC 0017bbb8 (112 bytes) name=MAG_Pause + +void MAG_Pause(uint param_1) + +{ + ulong uVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar1 = (ulong)param_1, (&DAT_005098a0)[uVar1 * 0x93] != 0)) && + ((((&DAT_00509898)[uVar1 * 0x93] != 0 && + (*(int *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x84) != 0)) && + (*(int *)(&DAT_00509d0c + uVar1 * 0x498) == 0)))) { + *(undefined4 *)(&DAT_00509d0c + uVar1 * 0x498) = 1; + return; + } + return; +} + + +================================================================== + +### FUNC 0017bc28 (24 bytes) name=MAG_Resume + +void MAG_Resume(uint param_1) + +{ + *(undefined4 *)(&DAT_00509d0c + (ulong)param_1 * 0x498) = 0; + return; +} + + +================================================================== + +### FUNC 0017bc40 (24 bytes) name=MAG_IsPause + +undefined4 MAG_IsPause(ulong param_1) + +{ + return *(undefined4 *)(&DAT_00509d0c + (param_1 & 0xffffffff) * 0x498); +} + + +================================================================== + +### FUNC 0017bc58 (96 bytes) name=FFC + +/* FFC(unsigned int) */ + +undefined8 FFC(uint param_1) + +{ + undefined8 uVar1; + long lVar2; + ulong uVar3; + + uVar3 = (ulong)param_1; + uVar1 = CNetComm::SetShutterState((int)(&DAT_005098a8)[uVar3 * 0x93],(uint *)0x0); + if ((int)uVar1 != 0) { + lVar2 = (&DAT_005098a0)[uVar3 * 0x93]; + uVar1 = 1; + *(undefined4 *)(lVar2 + 0x3c) = *(undefined4 *)(lVar2 + 0x44); + *(undefined4 *)(lVar2 + 0x40) = *(undefined4 *)(lVar2 + 0x48); + *(undefined4 *)(&DAT_00509d10 + uVar3 * 0x498) = 0; + } + return uVar1; +} + + +================================================================== + +### FUNC 0017bcb8 (156 bytes) name=MAG_TriggerFFC + +undefined8 MAG_TriggerFFC(uint param_1) + +{ + undefined8 uVar1; + long lVar2; + ulong uVar3; + + if (param_1 < 0x81) { + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + uVar3 = (ulong)param_1; + if (((&DAT_005098a0)[uVar3 * 0x93] != 0) && ((&DAT_00509898)[uVar3 * 0x93] != 0)) { + uVar1 = CNetComm::SetShutterState((int)(&DAT_005098a8)[(ulong)param_1 * 0x93],(uint *)0x0); + if ((int)uVar1 == 0) { + return uVar1; + } + lVar2 = (&DAT_005098a0)[uVar3 * 0x93]; + *(undefined4 *)(lVar2 + 0x3c) = *(undefined4 *)(lVar2 + 0x44); + *(undefined4 *)(lVar2 + 0x40) = *(undefined4 *)(lVar2 + 0x48); + *(undefined4 *)(&DAT_00509d10 + uVar3 * 0x498) = 0; + return 1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017bd54 (8 bytes) name=MAG_SetIoAlarmState + +undefined8 MAG_SetIoAlarmState(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017bd5c (96 bytes) name=MAG_SetColorPalette + +void MAG_SetColorPalette(uint param_1,uint param_2) + +{ + uint uVar1; + ulong uVar2; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar2 = (ulong)param_1; + if (((&DAT_005098a0)[uVar2 * 0x93] != 0) && ((&DAT_00509898)[uVar2 * 0x93] != 0)) { + uVar1 = 0; + if (param_2 < 0xb) { + uVar1 = param_2; + } + *(uint *)(&DAT_005098c8 + uVar2 * 0x498) = uVar1; + CFunctions::SetColorPalette(); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0017bdbc (252 bytes) name=MAG_SetSubsectionEnlargePara + +undefined8 +MAG_SetSubsectionEnlargePara(uint param_1,int param_2,int param_3,uint param_4,uint param_5) + +{ + CFunctions *this; + undefined4 *puVar1; + long *plVar2; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + plVar2 = &DAT_005098a0 + (ulong)param_1 * 0x93; + if ((*plVar2 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + if ((param_2 < param_3) && ((param_4 & 0xff) < (param_5 & 0xff))) { + pthread_mutex_lock((pthread_mutex_t *)(*plVar2 + 0xf0)); + this = (CFunctions *)*plVar2; + *(undefined4 *)(this + 0x10) = 1; + *(int *)(this + 0x14) = param_2; + *(int *)(this + 0x18) = param_3; + *(uint *)(this + 0x1c) = param_4 & 0xff; + *(uint *)(this + 0x20) = param_5 & 0xff; + *(undefined4 *)(this + 0x28) = 0; + if ((*(int *)(this + 0xec) != 0) && + (*(int *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x80) == 0)) { + CFunctions::ApplyNewEffect(this,0); + this = (CFunctions *)*plVar2; + } + pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return 1; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017beb8 (328 bytes) name=MAG_SetImageTransform + +undefined8 MAG_SetImageTransform(uint param_1,uint param_2,int param_3) + +{ + undefined4 uVar1; + undefined4 uVar2; + long lVar3; + ulong uVar4; + long lVar5; + long *plVar6; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar4 = (ulong)param_1; + lVar5 = (&DAT_005098a0)[uVar4 * 0x93]; + if (lVar5 != 0) { + if ((int)param_2 < 0) { + return 0; + } + plVar6 = &DAT_00509898 + uVar4 * 0x93; + if (*plVar6 == 0) { + return 0; + } + if (3 < param_3) { + return 0; + } + if ((int)param_2 < 4 && -1 < param_3) { + if (param_3 == 2) { + param_3 = 0; + param_2 = param_2 ^ 3; + } + else if (param_3 == 3) { + param_2 = param_2 ^ 3; + param_3 = 1; + } + if (*(int *)(&DAT_005098bc + uVar4 * 0x498) != param_3) { + if (*(int *)(&DAT_005098c0 + uVar4 * 0x498) != 0) { + return 0; + } + if (*(int *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x80) != 0) { + lVar3 = uVar4 * 0x498; + uVar1 = *(undefined4 *)(&DAT_00509900 + lVar3); + uVar2 = *(undefined4 *)(&DAT_00509940 + lVar3); + *(undefined4 *)(&DAT_00509900 + lVar3) = *(undefined4 *)(&DAT_00509904 + lVar3); + *(undefined4 *)(&DAT_00509904 + lVar3) = uVar1; + *(undefined4 *)(&DAT_00509940 + lVar3) = *(undefined4 *)(&DAT_00509944 + lVar3); + *(undefined4 *)(&DAT_00509944 + lVar3) = uVar2; + } + } + *(uint *)(&DAT_005098b8 + uVar4 * 0x498) = param_2; + *(int *)(&DAT_005098bc + uVar4 * 0x498) = param_3; + pthread_mutex_lock((pthread_mutex_t *)(lVar5 + 0xf0)); + lVar5 = (&DAT_005098a0)[uVar4 * 0x93]; + *(uint *)(lVar5 + 0x78) = param_2; + *(int *)(lVar5 + 0x7c) = param_3; + pthread_mutex_unlock((pthread_mutex_t *)(lVar5 + 0xf0)); + pthread_mutex_lock((pthread_mutex_t *)(*plVar6 + 0xa0)); + lVar5 = *plVar6; + *(uint *)(lVar5 + 0x70) = param_2; + *(int *)(lVar5 + 0x74) = param_3; + pthread_mutex_unlock((pthread_mutex_t *)(lVar5 + 0xa0)); + return 1; + } + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017c000 (240 bytes) name=MAG_SetAutoEnlargePara + +ulong MAG_SetAutoEnlargePara(ulong param_1,uint param_2,int param_3,int param_4) + +{ + uint uVar1; + CFunctions *this; + long *plVar2; + + if (((uint)param_1 < 0x81) && ((&DAT_005098a8)[(param_1 & 0xffffffff) * 0x93] != 0)) { + plVar2 = &DAT_005098a0 + (param_1 & 0xffffffff) * 0x93; + if ((*plVar2 != 0) && ((&DAT_00509898)[(param_1 & 0xffffffff) * 0x93] != 0)) { + if (param_2 < 3) { + param_2 = 2; + } + if (param_3 < -99) { + param_3 = -100; + } + if (99 < param_3) { + param_3 = 100; + } + if (param_4 < -99) { + param_4 = -100; + } + if (99 < param_4) { + param_4 = 100; + } + pthread_mutex_lock((pthread_mutex_t *)(*plVar2 + 0xf0)); + this = (CFunctions *)*plVar2; + *(int *)(this + 0x30) = param_3; + *(int *)(this + 0x34) = param_4; + *(undefined4 *)(this + 0x10) = 0; + *(uint *)(this + 0x24) = param_2; + *(undefined4 *)(this + 0x28) = 0; + if ((*(int *)(this + 0xec) != 0) && + (*(int *)((&DAT_005098a8)[(param_1 & 0xffffffff) * 0x93] + 0x80) == 0)) { + CFunctions::ApplyNewEffect(this,0); + this = (CFunctions *)*plVar2; + } + uVar1 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return (ulong)uVar1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 0017c0f0 (192 bytes) name=MAG_SetIsothermalPara + +ulong MAG_SetIsothermalPara(ulong param_1,int param_2,int param_3) + +{ + uint uVar1; + CFunctions *this; + long *plVar2; + + if (((uint)param_1 < 0x81) && ((&DAT_005098a8)[(param_1 & 0xffffffff) * 0x93] != 0)) { + plVar2 = &DAT_005098a0 + (param_1 & 0xffffffff) * 0x93; + if ((*plVar2 != 0) && ((&DAT_00509898)[(param_1 & 0xffffffff) * 0x93] != 0)) { + pthread_mutex_lock((pthread_mutex_t *)(*plVar2 + 0xf0)); + this = (CFunctions *)*plVar2; + *(undefined4 *)(this + 0x10) = 0; + *(int *)(this + 0x14) = param_2; + *(int *)(this + 0x18) = param_3; + *(uint *)(this + 0x28) = (uint)(param_2 <= param_3); + if ((*(int *)(this + 0xec) != 0) && + (*(int *)((&DAT_005098a8)[(param_1 & 0xffffffff) * 0x93] + 0x80) == 0)) { + CFunctions::ApplyNewEffect(this,0); + this = (CFunctions *)*plVar2; + } + uVar1 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xf0)); + return (ulong)uVar1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 0017c1b0 (8 bytes) name=MAG_SetUserROIs + +undefined8 MAG_SetUserROIs(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017c1b8 (8 bytes) name=MAG_ResetCamera + +undefined8 MAG_ResetCamera(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017c1c0 (156 bytes) name=MAG_GetFilteredRaw + +undefined8 MAG_GetFilteredRaw(uint param_1) + +{ + undefined4 *puVar1; + long lVar2; + + if (0x80 < param_1) { + return 0; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + lVar2 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (lVar2 == 0) { + return 0; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + if (*(int *)(lVar2 + 0xec) != 0) { + return *(undefined8 *)(lVar2 + 0x140); + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 0017c25c (192 bytes) name=MAG_GetOutputBMPdata + +undefined8 MAG_GetOutputBMPdata(uint param_1,undefined8 *param_2,long *param_3) + +{ + undefined4 *puVar1; + long lVar2; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + lVar2 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if ((lVar2 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + if ((param_2 != (undefined8 *)0x0) && (param_3 != (long *)0x0)) { + if (*(int *)(lVar2 + 0xec) != 0) { + *param_2 = *(undefined8 *)(lVar2 + 0xd8); + *param_3 = (&DAT_005098a0)[(ulong)param_1 * 0x93] + 0x9b0; + return 1; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017c31c (156 bytes) name=MAG_GetOutputRawData + +undefined8 MAG_GetOutputRawData(uint param_1) + +{ + undefined4 *puVar1; + long lVar2; + + if (0x80 < param_1) { + return 0; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + lVar2 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (lVar2 == 0) { + return 0; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + if (*(int *)(lVar2 + 0xec) != 0) { + return *(undefined8 *)(lVar2 + 0x140); + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 0017c3b8 (192 bytes) name=MAG_GetOutputColorBardata + +undefined8 MAG_GetOutputColorBardata(uint param_1,undefined8 *param_2,long *param_3) + +{ + undefined4 *puVar1; + long lVar2; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + lVar2 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if ((lVar2 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + if ((param_2 != (undefined8 *)0x0) && (param_3 != (long *)0x0)) { + if (*(int *)(lVar2 + 0xec) != 0) { + *param_2 = *(undefined8 *)(lVar2 + 0x180); + *param_3 = (&DAT_005098a0)[(ulong)param_1 * 0x93] + 0xdd8; + return 1; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017c478 (192 bytes) name=MAG_GetOutputVideoData + +undefined8 MAG_GetOutputVideoData(uint param_1,undefined8 *param_2,long *param_3) + +{ + undefined4 *puVar1; + long lVar2; + + if (((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) { + lVar2 = (&DAT_00509898)[(ulong)param_1 * 0x93]; + if (lVar2 != 0) { + if ((param_2 != (undefined8 *)0x0) && (param_3 != (long *)0x0)) { + if (*(int *)(lVar2 + 0x158) != 0) { + *param_2 = *(undefined8 *)(lVar2 + 0x160); + *param_3 = (&DAT_00509898)[(ulong)param_1 * 0x93] + 0x128; + return 1; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017c538 (156 bytes) name=MAG_GetOutputVideoYV12 + +undefined8 MAG_GetOutputVideoYV12(uint param_1) + +{ + undefined4 *puVar1; + long lVar2; + + if (0x80 < param_1) { + return 0; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + if ((&DAT_005098a0)[(ulong)param_1 * 0x93] == 0) { + return 0; + } + lVar2 = (&DAT_00509898)[(ulong)param_1 * 0x93]; + if (lVar2 != 0) { + if (*(int *)(lVar2 + 0x158) != 0) { + return *(undefined8 *)(lVar2 + 0x170); + } + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 0017c5d4 (120 bytes) name=MAG_GetVideoPPS + +undefined8 MAG_GetVideoPPS(uint param_1) + +{ + undefined4 *puVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && + (((&DAT_00509898)[(ulong)param_1 * 0x93] != 0 && + (*(int *)((&DAT_00509898)[(ulong)param_1 * 0x93] + 0x158) == 0)))) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 0017c64c (120 bytes) name=MAG_GetVideoSPS + +undefined8 MAG_GetVideoSPS(uint param_1) + +{ + undefined4 *puVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && + (((&DAT_00509898)[(ulong)param_1 * 0x93] != 0 && + (*(int *)((&DAT_00509898)[(ulong)param_1 * 0x93] + 0x158) == 0)))) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 0017c6c4 (120 bytes) name=MAG_GetVideoVCL + +undefined8 MAG_GetVideoVCL(uint param_1) + +{ + undefined4 *puVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && + (((&DAT_00509898)[(ulong)param_1 * 0x93] != 0 && + (*(int *)((&DAT_00509898)[(ulong)param_1 * 0x93] + 0x158) == 0)))) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0006; + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 0017c73c (84 bytes) name=MAG_GetTemperatureData + +undefined8 MAG_GetTemperatureData(uint param_1,int *param_2,uint param_3,int param_4) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::GetTemperaturemC + ((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93],param_2,param_3, + param_4,0); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017c790 (796 bytes) name=MAG_GetTemperatureData_Raw + +undefined8 MAG_GetTemperatureData_Raw(uint param_1,uint *param_2,uint param_3,int param_4) + +{ + uint *puVar1; + ushort *puVar2; + ushort uVar3; + ushort uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + undefined4 *puVar8; + uint uVar9; + ushort *puVar10; + long lVar11; + long lVar12; + ulong uVar13; + undefined8 uVar14; + undefined8 uVar15; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar13 = (ulong)param_1; + lVar12 = (&DAT_005098a0)[uVar13 * 0x93]; + if ((lVar12 != 0) && ((&DAT_00509898)[uVar13 * 0x93] != 0)) { + if ((param_2 == (uint *)0x0) || (param_3 < 5)) { + puVar8 = (undefined4 *)__errno(); + *puVar8 = 0xe4ae0001; + return 0; + } + if (*(int *)(lVar12 + 0xec) == 0) { + puVar8 = (undefined4 *)__errno(); + *puVar8 = 0xe4ae0005; + return 0; + } + puVar10 = *(ushort **)(lVar12 + 0x140); + uVar6 = *(uint *)(lVar12 + 0x4a74); + uVar3 = puVar10[*(uint *)(lVar12 + 0x4a84)]; + uVar4 = puVar10[*(uint *)(lVar12 + 0x4a80)]; + uVar7 = *(uint *)(lVar12 + 0x4a70); + if (param_4 != 0) { + uVar6 = CFunctions::CorrectTemperature((int)lVar12,*(float *)(lVar12 + 0xac),uVar6); + uVar7 = CFunctions::CorrectTemperature((int)lVar12,*(float *)(lVar12 + 0xac),uVar7); + } + param_3 = param_3 >> 2; + uVar5 = *(int *)(&DAT_00509904 + uVar13 * 0x498) * *(int *)(&DAT_00509900 + uVar13 * 0x498); + uVar9 = uVar5; + if (param_3 <= uVar5) { + uVar9 = param_3; + } + if (uVar3 < uVar4) { + if (uVar9 != 0) { + if (param_3 <= uVar5) { + uVar5 = param_3; + } + lVar11 = (ulong)uVar4 - (ulong)uVar3; + uVar13 = (ulong)(uVar5 - 1) + 1; + lVar12 = 0; + if (lVar11 != 0) { + lVar12 = (long)((ulong)(uVar7 - uVar6) << 0x20) / lVar11; + } + if (7 < uVar13) { + lVar11 = uVar13 - (uVar5 & 7); + if (lVar11 != 0) { + puVar1 = param_2 + lVar11; + uVar9 = uVar9 - (int)lVar11; + puVar2 = puVar10 + lVar11; + uVar7 = (uint)uVar3; + puVar10 = puVar10 + 4; + param_2 = param_2 + 4; + do { + uVar14 = *(undefined8 *)(puVar10 + -4); + uVar15 = *(undefined8 *)puVar10; + puVar10 = puVar10 + 8; + lVar11 = lVar11 + -8; + *(ulong *)(param_2 + -2) = + CONCAT44(uVar6 + (int)((ulong)(lVar12 * (int)((uint)(ushort)((ulong)uVar14 >> + 0x30) - (uint)uVar3 + )) >> 0x20), + uVar6 + (int)((ulong)(lVar12 * (int)((ushort)((ulong)uVar14 >> 0x20) - + uVar7)) >> 0x20)); + *(ulong *)(param_2 + -4) = + CONCAT44(uVar6 + (int)((ulong)(lVar12 * (int)((ushort)((ulong)uVar14 >> 0x10) - + uVar7)) >> 0x20), + uVar6 + (int)((ulong)(lVar12 * (int)(((uint)uVar14 & 0xffff) - uVar7)) + >> 0x20)); + *(ulong *)(param_2 + 2) = + CONCAT44(uVar6 + (int)((ulong)(lVar12 * (int)((uint)(ushort)((ulong)uVar15 >> + 0x30) - (uint)uVar3 + )) >> 0x20), + uVar6 + (int)((ulong)(lVar12 * (int)((ushort)((ulong)uVar15 >> 0x20) - + uVar7)) >> 0x20)); + *(ulong *)param_2 = + CONCAT44(uVar6 + (int)((ulong)(lVar12 * (int)((ushort)((ulong)uVar15 >> 0x10) - + uVar7)) >> 0x20), + uVar6 + (int)((ulong)(lVar12 * (int)(((uint)uVar15 & 0xffff) - uVar7)) + >> 0x20)); + param_2 = param_2 + 8; + } while (lVar11 != 0); + param_2 = puVar1; + puVar10 = puVar2; + if ((uVar5 & 7) == 0) { + return 1; + } + } + } + do { + uVar9 = uVar9 - 1; + *param_2 = uVar6 + (int)(lVar12 * ((ulong)*puVar10 - (ulong)uVar3) >> 0x20); + param_2 = param_2 + 1; + puVar10 = puVar10 + 1; + } while (uVar9 != 0); + return 1; + } + } + else if (uVar9 != 0) { + if (param_3 <= uVar5) { + uVar5 = param_3; + } + uVar13 = (ulong)(uVar5 - 1) + 1; + if (7 < uVar13) { + lVar12 = uVar13 - (uVar5 & 7); + if (lVar12 != 0) { + puVar1 = param_2 + lVar12; + uVar9 = uVar9 - (int)lVar12; + param_2 = param_2 + 4; + do { + *(ulong *)(param_2 + -2) = CONCAT44(uVar6,uVar6); + *(ulong *)(param_2 + -4) = CONCAT44(uVar6,uVar6); + *(ulong *)(param_2 + 2) = CONCAT44(uVar6,uVar6); + *(ulong *)param_2 = CONCAT44(uVar6,uVar6); + lVar12 = lVar12 + -8; + param_2 = param_2 + 8; + } while (lVar12 != 0); + param_2 = puVar1; + if ((uVar5 & 7) == 0) { + return 1; + } + } + } + do { + *param_2 = uVar6; + uVar9 = uVar9 - 1; + param_2 = param_2 + 1; + } while (uVar9 != 0); + return 1; + } + return 1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017caac (132 bytes) name=MAG_GetFixPara + +void MAG_GetFixPara(uint param_1,undefined8 *param_2) + +{ + undefined4 *puVar1; + long lVar2; + undefined8 uVar3; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + lVar2 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if ((lVar2 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + if (param_2 == (undefined8 *)0x0) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + return; + } + uVar3 = *(undefined8 *)(lVar2 + 0xc4); + *(undefined8 *)((long)param_2 + 0x24) = *(undefined8 *)(lVar2 + 0xcc); + *(undefined8 *)((long)param_2 + 0x1c) = uVar3; + uVar3 = *(undefined8 *)(lVar2 + 0xb8); + param_2[3] = *(undefined8 *)(lVar2 + 0xc0); + param_2[2] = uVar3; + uVar3 = *(undefined8 *)(lVar2 + 0xa8); + param_2[1] = *(undefined8 *)(lVar2 + 0xb0); + *param_2 = uVar3; + } + } + return; +} + + +================================================================== + +### FUNC 0017cb30 (216 bytes) name=MAG_SetFixPara + +undefined4 * MAG_SetFixPara(undefined4 *param_1,undefined8 *param_2) + +{ + uint uVar1; + long lVar2; + long *plVar3; + undefined8 uVar4; + + if (((uint)param_1 < 0x81) && ((&DAT_005098a8)[((ulong)param_1 & 0xffffffff) * 0x93] != 0)) { + plVar3 = &DAT_005098a0 + ((ulong)param_1 & 0xffffffff) * 0x93; + if ((*plVar3 != 0) && ((&DAT_00509898)[((ulong)param_1 & 0xffffffff) * 0x93] != 0)) { + if (param_2 == (undefined8 *)0x0) { + param_1 = (undefined4 *)__errno(); + *param_1 = 0xe4ae0001; + } + else { + pthread_mutex_lock((pthread_mutex_t *)(*plVar3 + 0xf0)); + lVar2 = *plVar3; + uVar4 = *(undefined8 *)((long)param_2 + 0x1c); + *(undefined8 *)(lVar2 + 0xcc) = *(undefined8 *)((long)param_2 + 0x24); + *(undefined8 *)(lVar2 + 0xc4) = uVar4; + uVar4 = param_2[2]; + *(undefined8 *)(lVar2 + 0xc0) = param_2[3]; + *(undefined8 *)(lVar2 + 0xb8) = uVar4; + uVar4 = *param_2; + *(undefined8 *)(lVar2 + 0xb0) = param_2[1]; + *(undefined8 *)(lVar2 + 0xa8) = uVar4; + CFunctions::CalTaoAtm + ((CFunctions *)*plVar3,(struct_FixPara *)((CFunctions *)*plVar3 + 0xa8)); + uVar1 = pthread_mutex_unlock((pthread_mutex_t *)(*plVar3 + 0xf0)); + param_1 = (undefined4 *)(ulong)uVar1; + } + } + } + return param_1; +} + + +================================================================== + +### FUNC 0017cc08 (76 bytes) name=MAG_SetEXLevel + +void MAG_SetEXLevel(uint param_1) + +{ + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + CFunctions::SetEX(); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0017cc54 (80 bytes) name=MAG_GetEXLevel + +undefined8 MAG_GetEXLevel(uint param_1) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::GetEX((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93]); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017cca4 (88 bytes) name=MAG_SetDetailEnhancement + +void MAG_SetDetailEnhancement(uint param_1,uint param_2,undefined4 param_3) + +{ + uint uVar1; + long lVar2; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + lVar2 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if ((lVar2 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = 0; + if (param_2 < 0x21) { + uVar1 = param_2; + } + *(undefined4 *)(lVar2 + 0x60) = param_3; + *(uint *)(lVar2 + 0x2c) = uVar1; + } + } + return; +} + + +================================================================== + +### FUNC 0017ccfc (96 bytes) name=MAG_FixTemperature + +ulong MAG_FixTemperature(float param_1,uint param_2,uint param_3) + +{ + ulong uVar1; + + if ((param_2 < 0x81) && ((&DAT_005098a8)[(ulong)param_2 * 0x93] != 0)) { + if (((&DAT_005098a0)[(ulong)param_2 * 0x93] != 0) && + ((&DAT_00509898)[(ulong)param_2 * 0x93] != 0)) { + uVar1 = CFunctions::CorrectTemperature + ((int)(&DAT_005098a0)[(ulong)param_2 * 0x93],param_1,param_3); + return uVar1; + } + } + return (ulong)param_3; +} + + +================================================================== + +### FUNC 0017cd5c (80 bytes) name=MAG_FixTemperature2 + +ulong MAG_FixTemperature2(float param_1,uint param_2,uint param_3) + +{ + ulong uVar1; + + if ((param_2 < 0x81) && ((&DAT_005098a8)[(ulong)param_2 * 0x93] != 0)) { + if (((&DAT_005098a0)[(ulong)param_2 * 0x93] != 0) && + ((&DAT_00509898)[(ulong)param_2 * 0x93] != 0)) { + uVar1 = CFunctions::CorrectTemperature + ((int)(&DAT_005098a0)[(ulong)param_2 * 0x93],param_1,param_3); + return uVar1; + } + } + return (ulong)param_3; +} + + +================================================================== + +### FUNC 0017cdac (116 bytes) name=MAG_GetFrameStatisticalData + +long MAG_GetFrameStatisticalData(uint param_1) + +{ + CFunctions *this; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + this = (CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (this == (CFunctions *)0x0) { + return 0; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + CFunctions::CopyState(this); + return (&DAT_005098a0)[(ulong)param_1 * 0x93] + 0x4a58; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017ce20 (88 bytes) name=MAG_GetRemoteInfo + +undefined * MAG_GetRemoteInfo(uint param_1) + +{ + undefined *puVar1; + ulong uVar2; + + if (((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + (uVar2 = (ulong)param_1, (&DAT_005098a0)[uVar2 * 0x93] != 0)) { + puVar1 = (undefined *)0x0; + if ((&DAT_00509898)[uVar2 * 0x93] != 0) { + puVar1 = &DAT_00509d1c + uVar2 * 0x498; + } + return puVar1; + } + return (undefined *)0x0; +} + + +================================================================== + +### FUNC 0017ce78 (104 bytes) name=MAG_GetTemperatureProbe + +undefined8 MAG_GetTemperatureProbe(uint param_1,int param_2,int param_3,uint param_4) + +{ + undefined8 uVar1; + ulong uVar2; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar2 = (ulong)param_1; + if (((CFunctions *)(&DAT_005098a0)[uVar2 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[uVar2 * 0x93] != 0)) { + uVar1 = CFunctions::GetTemperature + ((CFunctions *)(&DAT_005098a0)[uVar2 * 0x93], + param_2 + *(int *)(&DAT_00509900 + uVar2 * 0x498) * param_3,param_4,0); + return uVar1; + } + } + return 0x80000001; +} + + +================================================================== + +### FUNC 0017cee0 (84 bytes) name=MAG_GetTemperatureProbe2 + +undefined8 MAG_GetTemperatureProbe2(uint param_1,uint param_2,uint param_3) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::GetTemperature + ((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93],param_2,param_3,0); + return uVar1; + } + } + return 0x80000001; +} + + +================================================================== + +### FUNC 0017cf34 (108 bytes) name=MAG_GetLineTemperatureInfo + +undefined8 +MAG_GetLineTemperatureInfo + (uint param_1,int *param_2,uint param_3,int *param_4,uint param_5,uint param_6, + uint param_7,uint param_8) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::GetLineTemperatureInfo3 + ((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93],param_2,param_3, + param_4,param_5,param_6,param_7,param_8,0); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017cfa0 (96 bytes) name=MAG_GetRectTemperatureInfo + +undefined8 +MAG_GetRectTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + CFunctions *this; + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + this = (CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93]; + if ((this != (CFunctions *)0x0) && + (((&DAT_00509898)[(ulong)param_1 * 0x93] != 0 && (*(int *)(this + 0xec) != 0)))) { + uVar1 = CFunctions::GetRectTemperatureInfo(this,param_2,param_3,param_4,param_5,param_6,0); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017d000 (84 bytes) name=MAG_GetEllipseTemperatureInfo + +undefined8 +MAG_GetEllipseTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::GetEllipseTemperatureInfo + ((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93],param_2,param_3, + param_4,param_5,param_6,0); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017d054 (84 bytes) name=MAG_GetRgnTemperatureInfo + +undefined8 MAG_GetRgnTemperatureInfo(uint param_1,uint *param_2,uint param_3,int *param_4) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::GetRgnTemperatureInfo + ((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93],param_2,param_3, + param_4,0); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017d0a8 (80 bytes) name=MAG_UseTemperatureMask + +undefined8 MAG_UseTemperatureMask(uint param_1,int param_2) + +{ + undefined8 uVar1; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93] != (CFunctions *)0x0) && + ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + uVar1 = CFunctions::UseMask((CFunctions *)(&DAT_005098a0)[(ulong)param_1 * 0x93],param_2); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017d0f8 (132 bytes) name=MAG_IsUsingTemperatureMask + +bool MAG_IsUsingTemperatureMask(uint param_1) + +{ + long lVar1; + + if (0x80 < param_1) { + return false; + } + if ((&DAT_005098a8)[(ulong)param_1 * 0x93] == 0) { + return false; + } + lVar1 = (&DAT_005098a0)[(ulong)param_1 * 0x93]; + if (lVar1 == 0) { + return false; + } + if ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0) { + if (*(int *)(lVar1 + 0xe0) != 0) { + return *(int *)(lVar1 + 0xe8) != 0; + } + return false; + } + return false; +} + + +================================================================== + +### FUNC 0017d17c (100 bytes) name=MAG_SaveBMP + +undefined8 MAG_SaveBMP(uint param_1,undefined8 param_2,char *param_3) + +{ + undefined8 uVar1; + CVideoFunctions *this; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + if (((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0) && + (this = (CVideoFunctions *)(&DAT_00509898)[(ulong)param_1 * 0x93], + this != (CVideoFunctions *)0x0)) { + if (*(int *)(this + 0x158) != 0) { + uVar1 = CVideoFunctions::SaveRGB24(this,param_3); + return uVar1; + } + uVar1 = CFunctions::SaveBMP(); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017d1e0 (8 bytes) name=MAG_SetPTZCmd + +undefined8 MAG_SetPTZCmd(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017d1e8 (8 bytes) name=MAG_QueryPTZState + +undefined8 MAG_QueryPTZState(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017d1f0 (8 bytes) name=MAG_SetSerialCmd + +undefined8 MAG_SetSerialCmd(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017d1f8 (8 bytes) name=MAG_SetVideoContrast + +undefined8 MAG_SetVideoContrast(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017d200 (84 bytes) name=MAG_SetSerialCallBack + +bool MAG_SetSerialCallBack(uint param_1) + +{ + if (((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) { + return (&DAT_00509898)[(ulong)param_1 * 0x93] != 0; + } + return false; +} + + +================================================================== + +### FUNC 0017d254 (8 bytes) name=MAG_SetVideoBrightness + +undefined8 MAG_SetVideoBrightness(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017d25c (120 bytes) name=MAG_LockFrame + +ulong MAG_LockFrame(ulong param_1) + +{ + uint uVar1; + + if (((uint)param_1 < 0x81) && ((&DAT_005098a8)[(param_1 & 0xffffffff) * 0x93] != 0)) { + if (((&DAT_005098a0)[(param_1 & 0xffffffff) * 0x93] != 0) && + ((&DAT_00509898)[(param_1 & 0xffffffff) * 0x93] != 0)) { + pthread_mutex_lock((pthread_mutex_t *)((&DAT_00509898)[(param_1 & 0xffffffff) * 0x93] + 0xa0)) + ; + uVar1 = pthread_mutex_lock((pthread_mutex_t *) + ((&DAT_005098a0)[(param_1 & 0xffffffff) * 0x93] + 0xf0)); + return (ulong)uVar1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 0017d2d4 (120 bytes) name=MAG_UnLockFrame + +ulong MAG_UnLockFrame(ulong param_1) + +{ + uint uVar1; + + if (((uint)param_1 < 0x81) && ((&DAT_005098a8)[(param_1 & 0xffffffff) * 0x93] != 0)) { + if (((&DAT_005098a0)[(param_1 & 0xffffffff) * 0x93] != 0) && + ((&DAT_00509898)[(param_1 & 0xffffffff) * 0x93] != 0)) { + pthread_mutex_unlock + ((pthread_mutex_t *)((&DAT_005098a0)[(param_1 & 0xffffffff) * 0x93] + 0xf0)); + uVar1 = pthread_mutex_unlock + ((pthread_mutex_t *)((&DAT_00509898)[(param_1 & 0xffffffff) * 0x93] + 0xa0)) + ; + return (ulong)uVar1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 0017d34c (328 bytes) name=MAG_SaveMGT + +undefined4 MAG_SaveMGT(uint param_1,char *param_2) + +{ + long lVar1; + undefined4 uVar2; + undefined4 *puVar3; + char *pcVar4; + long *plVar5; + ushort local_60; + ushort local_5e; + ushort local_5a; + ushort local_58; + ushort local_56; + ushort local_54; + MStream aMStack_50 [24]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + plVar5 = &DAT_005098a0 + (ulong)param_1 * 0x93; + if ((*plVar5 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + if (*(int *)(*plVar5 + 0xec) == 0) { + puVar3 = (undefined4 *)__errno(); + uVar2 = 0; + *puVar3 = 0xe4ae0006; + } + else { + MStream::MStream(aMStack_50,0x100); + if (param_2 == (char *)0x0) { + GetLocalTime((_SYSTEMTIME *)&local_60); + MStream::Fmt((char *)aMStack_50,"%d-%02d-%02d %02d-%02d-%02d.mgt",(ulong)local_60, + (ulong)local_5e,(ulong)local_5a,(ulong)local_58,(ulong)local_56, + (ulong)local_54); + } + else { + MStream::operator<<(aMStack_50,param_2); + } + pthread_mutex_lock((pthread_mutex_t *)(*plVar5 + 0xf0)); + pcVar4 = (char *)MStream::Get(aMStack_50); + uVar2 = SaveMGT(param_1,pcVar4); + pthread_mutex_unlock((pthread_mutex_t *)(*plVar5 + 0xf0)); + MStream::~MStream(aMStack_50); + } + goto LAB_0017d3e4; + } + } + uVar2 = 0; +LAB_0017d3e4: + if (*(long *)(lVar1 + 0x28) == local_38) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017d4b0 (1116 bytes) name=SaveMGT + +/* SaveMGT(unsigned int, char const*) */ + +undefined4 SaveMGT(uint param_1,char *param_2) + +{ + int iVar1; + long lVar2; + int iVar3; + undefined4 uVar4; + char *__src; + int *piVar5; + undefined4 *puVar6; + long lVar7; + long lVar8; + long lVar9; + ulong uVar10; + long *plVar11; + OFStream aOStack_488 [16]; + MStream aMStack_478 [24]; + ushort local_460; + ushort local_45e; + ushort local_45a; + ushort local_458; + ushort local_456; + ushort local_454; + tm local_450; + undefined8 local_418; + undefined4 local_410; + char acStack_40c [44]; + char acStack_3e0 [20]; + char acStack_3cc [32]; + char acStack_3ac [32]; + undefined8 local_38c; + undefined8 uStack_384; + undefined8 local_368; + undefined8 uStack_360; + undefined8 local_358; + undefined8 uStack_350; + undefined4 local_348; + undefined4 local_344; + undefined4 local_340; + undefined4 local_278; + ulong local_274; + undefined8 uStack_26c; + undefined8 local_264; + undefined4 uStack_25c; + undefined4 uStack_258; + undefined4 local_254; + undefined4 uStack_250; + undefined4 uStack_24c; + undefined4 uStack_248; + undefined4 local_244; + undefined4 local_240; + undefined4 local_23c; + undefined4 local_18c; + undefined4 local_184; + undefined4 local_180; + int local_13c; + int local_138; + int local_134; + undefined4 local_12c; + int local_128; + int local_124; + + lVar2 = tpidr_el0; + lVar7 = *(long *)(lVar2 + 0x28); + uVar10 = (ulong)param_1; + plVar11 = &DAT_005098a0 + uVar10 * 0x93; + if (*(int *)((CFunctions *)*plVar11 + 0xec) == 0) { + puVar6 = (undefined4 *)__errno(); + uVar4 = 0; + *puVar6 = 0xe4ae0006; + } + else { + iVar3 = CFunctions::SaveBMP((CFunctions *)*plVar11,0,param_2); + if (iVar3 == 0) { + puVar6 = (undefined4 *)__errno(); + uVar4 = 0; + *puVar6 = 0xe4ae0009; + } + else { + memset(acStack_40c,0,0x3a0); + lVar8 = uVar10 * 0x498; + local_340 = *(undefined4 *)(&DAT_005098fc + lVar8); + local_418 = 0x10000000003ac; + local_410 = 0x198; + sprintf(acStack_40c,"%d",(ulong)*(uint *)(&DAT_005098f8 + lVar8)); + localtime_r((time_t *)(&DAT_00509960 + lVar8),&local_450); + sprintf(acStack_3e0,"%4d%02d%02d%02d%02d%02d",(ulong)(local_450.tm_year + 0x76c), + (ulong)(local_450.tm_mon + 1),(ulong)(uint)local_450.tm_mday, + (ulong)(uint)local_450.tm_hour,(ulong)(uint)local_450.tm_min, + (ulong)(uint)local_450.tm_sec); + GetLocalTime((_SYSTEMTIME *)&local_460); + MStream::MStream(aMStack_478,0x100); + MStream::Fmt((char *)aMStack_478,"%d-%02d-%02d %02d-%02d-%02d",(ulong)local_460, + (ulong)local_45e,(ulong)local_45a,(ulong)local_458,(ulong)local_456, + (ulong)local_454); + __src = (char *)MStream::Get(aMStack_478); + strncpy(acStack_3e0,__src,0x14); + lVar8 = uVar10 * 0x498; + strncpy(acStack_3ac,&DAT_00509910 + lVar8,0x20); + strncpy(acStack_3cc,&DAT_00509930 + lVar8,0x20); + uStack_384 = *(undefined8 *)(&DAT_00509958 + lVar8); + local_38c = *(undefined8 *)(&DAT_00509950 + lVar8); + lVar8 = *plVar11; + if (*(uint *)(lVar8 + 0x70) < *(uint *)(lVar8 + 0x163c)) { + lVar9 = lVar8 + (ulong)*(uint *)(lVar8 + 0x70) * 0x21c; + uStack_350 = *(undefined8 *)(lVar9 + 0x1658); + local_358 = *(undefined8 *)(lVar9 + 0x1650); + uStack_360 = *(undefined8 *)(lVar9 + 0x1648); + local_368 = *(undefined8 *)(lVar9 + 0x1640); + local_344 = *(undefined4 *)(lVar9 + 0x1664); + local_348 = *(undefined4 *)(lVar9 + 0x1660); + } + local_278 = 0xe8; + if ((*(int *)(&DAT_005098c0 + uVar10 * 0x498) == 0) && + (0x10001 < *(int *)(&DAT_00509980 + uVar10 * 0x498))) { + lVar8 = uVar10 * 0x498; + uStack_26c = *(undefined8 *)(lVar8 + 0x509c40); + local_274 = *(ulong *)(&DAT_00509c38 + lVar8); + local_264 = *(undefined8 *)(&DAT_00509c48 + lVar8); + local_240 = *(undefined4 *)(&DAT_00509c6c + lVar8); + uStack_25c = (undefined4)*(undefined8 *)(lVar8 + 0x509c50); + uStack_258 = (undefined4)((ulong)*(undefined8 *)(lVar8 + 0x509c50) >> 0x20); + local_244 = *(undefined4 *)(&DAT_00509c68 + lVar8); + puVar6 = (undefined4 *)(&DAT_00509c70 + lVar8); + uStack_24c = (undefined4)*(undefined8 *)(lVar8 + 0x509c60); + uStack_248 = (undefined4)((ulong)*(undefined8 *)(lVar8 + 0x509c60) >> 0x20); + local_254 = (undefined4)*(undefined8 *)(&DAT_00509c58 + lVar8); + uStack_250 = (undefined4)((ulong)*(undefined8 *)(&DAT_00509c58 + lVar8) >> 0x20); + } + else { + local_274 = (ulong)*(uint *)(&DAT_005098c8 + uVar10 * 0x498); + uStack_26c = *(undefined8 *)(lVar8 + 0xac); + local_264 = *(undefined8 *)(lVar8 + 0xcc); + uStack_25c = *(undefined4 *)(lVar8 + 0xa8); + uStack_250 = (undefined4)*(undefined8 *)(lVar8 + 0x18); + uStack_24c = (undefined4)((ulong)*(undefined8 *)(lVar8 + 0x18) >> 0x20); + uStack_258 = (undefined4)*(undefined8 *)(lVar8 + 0x10); + local_254 = (undefined4)((ulong)*(undefined8 *)(lVar8 + 0x10) >> 0x20); + uStack_248 = *(undefined4 *)(lVar8 + 0x20); + local_244 = *(undefined4 *)(lVar8 + 0x24); + local_240 = *(undefined4 *)(lVar8 + 0x30); + puVar6 = (undefined4 *)(lVar8 + 0x34); + } + local_23c = *puVar6; + OFStream::OFStream(aOStack_488,param_2,true); + FStream::Seek((FStream *)aOStack_488,0,2); + uVar4 = OFStream::GetLength(aOStack_488); + OFStream::Write(aOStack_488,&local_418,0x3ac,1); + iVar3 = *(int *)(&DAT_005098e0 + uVar10 * 0x498); + iVar1 = *(int *)(&DAT_005098e4 + uVar10 * 0x498); + piVar5 = operator_new__((ulong)(uint)(iVar1 * iVar3) << 2); + iVar3 = CFunctions::GetTemperaturemC((CFunctions *)*plVar11,piVar5,iVar3 * iVar1 * 4,0,1); + if (iVar3 != 0) { + local_18c = OFStream::GetLength(aOStack_488); + local_13c = *(int *)(&DAT_005098e0 + uVar10 * 0x498); + local_138 = *(int *)(&DAT_005098e4 + uVar10 * 0x498); + local_134 = local_13c * local_138 * 4; + OFStream::Write(aOStack_488,piVar5,(long)local_134,1); + } + operator_delete__(piVar5); + local_184 = OFStream::GetLength(aOStack_488); + local_12c = 0x428; + OFStream::Write(aOStack_488,(void *)(*plVar11 + 0xdd8),0x428,1); + local_180 = OFStream::GetLength(aOStack_488); + local_128 = *(int *)(&DAT_005098f0 + uVar10 * 0x498); + local_124 = *(int *)(&DAT_005098f4 + uVar10 * 0x498); + OFStream::Write(aOStack_488,*(void **)(*plVar11 + 0x180),(long)(local_128 * local_124),1); + FStream::Seek((FStream *)aOStack_488,uVar4,0); + OFStream::Write(aOStack_488,&local_418,0x3ac,1); + OFStream::~OFStream(aOStack_488); + uVar4 = 1; + MStream::~MStream(aMStack_478); + } + } + if (*(long *)(lVar2 + 0x28) == lVar7) { + return uVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017d9a8 (340 bytes) name=MAG_SaveDDT + +bool MAG_SaveDDT(uint param_1,char *param_2) + +{ + long lVar1; + int iVar2; + undefined4 *puVar3; + char *pcVar4; + bool bVar5; + long *plVar6; + ushort local_60; + ushort local_5e; + ushort local_5a; + ushort local_58; + ushort local_56; + ushort local_54; + MStream aMStack_50 [24]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + plVar6 = &DAT_005098a0 + (ulong)param_1 * 0x93; + if ((*plVar6 != 0) && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)) { + if (*(int *)(*plVar6 + 0xec) == 0) { + puVar3 = (undefined4 *)__errno(); + bVar5 = false; + *puVar3 = 0xe4ae0006; + } + else { + MStream::MStream(aMStack_50,0x100); + if (param_2 == (char *)0x0) { + GetLocalTime((_SYSTEMTIME *)&local_60); + MStream::Fmt((char *)aMStack_50,"%d-%02d-%02d %02d-%02d-%02d.ddt",(ulong)local_60, + (ulong)local_5e,(ulong)local_5a,(ulong)local_58,(ulong)local_56, + (ulong)local_54); + } + else { + MStream::operator<<(aMStack_50,param_2); + } + pthread_mutex_lock((pthread_mutex_t *)(*plVar6 + 0xf0)); + pcVar4 = (char *)MStream::Get(aMStack_50); + iVar2 = SaveDDT(param_1,(uchar *)0x0,pcVar4); + pthread_mutex_unlock((pthread_mutex_t *)(*plVar6 + 0xf0)); + bVar5 = 0 < iVar2; + MStream::~MStream(aMStack_50); + } + goto LAB_0017da40; + } + } + bVar5 = false; +LAB_0017da40: + if (*(long *)(lVar1 + 0x28) == local_38) { + return bVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017db18 (640 bytes) name=SaveDDT + +/* SaveDDT(unsigned int, unsigned char*, char const*) */ + +void SaveDDT(uint param_1,uchar *param_2,char *param_3) + +{ + long lVar1; + long lVar2; + ulong uVar3; + undefined4 *puVar4; + long lVar5; + long *plVar6; + int iVar7; + int iVar8; + long lVar9; + OFStream aOStack_3f0 [16]; + undefined8 local_3e0; + int local_3d8; + int iStack_3d4; + undefined4 local_3d0; + undefined4 local_3cc; + undefined8 local_3c8; + undefined8 uStack_3c0; + undefined4 local_3b8; + undefined4 uStack_3b4; + undefined8 local_3b0; + undefined1 local_391; + undefined8 local_390; + undefined8 uStack_388; + undefined8 local_380; + ulong uStack_378; + undefined8 local_370; + undefined4 local_368; + undefined4 local_364; + undefined8 local_360; + undefined8 uStack_358; + undefined1 auStack_350 [556]; + undefined4 local_124; + undefined4 local_120; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110; + undefined4 local_10c; + undefined8 local_108; + undefined8 uStack_100; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + + uVar3 = (ulong)param_1; + lVar2 = tpidr_el0; + lVar5 = *(long *)(lVar2 + 0x28); + plVar6 = &DAT_005098a0 + uVar3 * 0x93; + lVar9 = *plVar6; + if (*(int *)(lVar9 + 0xec) == 0) { + puVar4 = (undefined4 *)__errno(); + iVar7 = 0; + *puVar4 = 0xe4ae0006; + } + else { + memset(&local_3c8,0,0x350); + lVar1 = uVar3 * 0x498; + local_368 = *(undefined4 *)(&DAT_005098f8 + lVar1); + local_70 = *(undefined4 *)(&DAT_005098fc + lVar1); + local_3e0 = 0x1000200000374; + local_370 = *(undefined8 *)(&DAT_00509960 + lVar1); + iVar7 = *(int *)(&DAT_005098e0 + lVar1); + iVar8 = *(int *)(&DAT_005098e4 + lVar1); + local_3d0 = *(undefined4 *)(lVar9 + 0x76dc); + uStack_3c0 = *(undefined8 *)(&DAT_00509958 + lVar1); + local_3c8 = *(undefined8 *)(&DAT_00509950 + lVar1); + uStack_388 = *(undefined8 *)(lVar1 + 0x509918); + local_390 = *(undefined8 *)(&DAT_00509910 + lVar1); + local_3cc = *(undefined4 *)(lVar9 + 0x76e0); + local_3b8 = *(undefined4 *)(&DAT_00509908 + lVar1); + uStack_3b4 = *(undefined4 *)(&DAT_0050990c + lVar1); + local_380 = *(undefined8 *)(&DAT_00509920 + lVar1); + local_78 = *(undefined4 *)(lVar9 + 0x3c); + local_74 = *(undefined4 *)(lVar9 + 0x40); + local_391 = 0; + local_3b0 = *(undefined8 *)(&DAT_00509930 + lVar1); + local_364 = *(undefined4 *)(&DAT_00509978 + lVar1); + uStack_358 = *(undefined8 *)(&DAT_00509970 + lVar1); + local_360 = *(undefined8 *)(&DAT_00509968 + lVar1); + uStack_378 = *(ulong *)(lVar1 + 0x509928) & 0xffffffffffffff; + local_3d8 = iVar7; + iStack_3d4 = iVar8; + if (*(uint *)(lVar9 + 0x70) < *(uint *)(lVar9 + 0x163c)) { + memcpy(auStack_350,(void *)(lVar9 + (ulong)*(uint *)(lVar9 + 0x70) * 0x21c + 0x1640),0x21c); + } + local_124 = *(undefined4 *)(&DAT_005098c8 + uVar3 * 0x498); + local_120 = 0; + local_11c = *(undefined4 *)(lVar9 + 0xac); + local_118 = *(undefined4 *)(lVar9 + 0xb0); + local_114 = *(undefined4 *)(lVar9 + 0xcc); + local_110 = *(undefined4 *)(lVar9 + 0xd0); + local_10c = *(undefined4 *)(lVar9 + 0xa8); + uStack_100 = *(undefined8 *)(lVar9 + 0x18); + local_108 = *(undefined8 *)(lVar9 + 0x10); + local_f8 = *(undefined4 *)(lVar9 + 0x20); + local_f4 = *(undefined4 *)(lVar9 + 0x24); + local_f0 = *(undefined4 *)(lVar9 + 0x30); + local_ec = *(undefined4 *)(lVar9 + 0x34); + if (param_2 == (uchar *)0x0) { + OFStream::OFStream(aOStack_3f0,param_3,false); + OFStream::Write(aOStack_3f0,&local_3e0,0x374,1); + OFStream::Write(aOStack_3f0,*(void **)(*plVar6 + 0x140), + (ulong)(uint)(iStack_3d4 * local_3d8) << 1,1); + OFStream::~OFStream(aOStack_3f0); + iVar7 = local_3d8; + iVar8 = iStack_3d4; + } + else { + memcpy(param_2,&local_3e0,0x374); + memcpy(param_2 + 0x374,*(void **)(*plVar6 + 0x140),(ulong)(uint)(iVar8 * iVar7) << 1); + } + iVar7 = iVar7 * iVar8 * 2 + 0x374; + } + if (*(long *)(lVar2 + 0x28) == lVar5) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar7); +} + + +================================================================== + +### FUNC 0017de1c (260 bytes) name=MAG_SaveDDT2Buffer + +uint MAG_SaveDDT2Buffer(uint param_1,uchar *param_2,ulong param_3) + +{ + uint uVar1; + undefined4 *puVar2; + long lVar3; + ulong uVar4; + + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar4 = (ulong)param_1; + lVar3 = (&DAT_005098a0)[uVar4 * 0x93]; + if ((lVar3 != 0) && ((&DAT_00509898)[uVar4 * 0x93] != 0)) { + if ((param_2 != (uchar *)0x0) && + ((ulong)(uint)(*(int *)(&DAT_005098e4 + uVar4 * 0x498) * + *(int *)(&DAT_005098e0 + uVar4 * 0x498)) * 2 + 0x374 <= + (param_3 & 0xffffffff))) { + if (*(int *)(lVar3 + 0xec) != 0) { + pthread_mutex_lock((pthread_mutex_t *)(lVar3 + 0xf0)); + uVar1 = SaveDDT(param_1,param_2,""); + pthread_mutex_unlock((pthread_mutex_t *)((&DAT_005098a0)[uVar4 * 0x93] + 0xf0)); + return uVar1 & ((int)uVar1 >> 0x1f ^ 0xffffffffU); + } + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0006; + return 0; + } + puVar2 = (undefined4 *)__errno(); + *puVar2 = 0xe4ae0001; + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 0017df20 (1228 bytes) name=LoadDDT + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* LoadDDT(unsigned int, OutputPara*, void const*, unsigned int, void (*)(unsigned int, unsigned + int, unsigned int, void*), void*) */ + +void LoadDDT(uint param_1,OutputPara *param_2,void *param_3,uint param_4, + _func_void_uint_uint_uint_void_ptr *param_5,void *param_6) + +{ + int iVar1; + uint uVar2; + long lVar3; + long lVar4; + int iVar5; + undefined4 *puVar6; + long lVar7; + CFunctions *this; + ulong uVar8; + uint *puVar9; + void *__src; + undefined4 uVar10; + long *plVar11; + uint uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 local_410; + undefined8 uStack_408; + undefined4 local_400; + undefined4 local_3fc; + undefined8 local_3f8; + undefined8 uStack_3f0; + int local_3e0 [2]; + uint local_3d8; + int iStack_3d4; + uint local_3d0; + int iStack_3cc; + uint local_3c8; + int iStack_3c4; + undefined4 local_3c0; + undefined4 uStack_3bc; + undefined4 local_3b8; + undefined4 uStack_3b4; + char acStack_3b0 [32]; + char acStack_390 [32]; + undefined8 local_370; + undefined4 local_368; + undefined4 local_364; + undefined8 local_360; + undefined8 uStack_358; + undefined1 auStack_350 [556]; + undefined4 local_124; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110; + undefined4 local_10c; + undefined8 local_108; + undefined8 uStack_100; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + int local_78; + uint local_74; + int local_70; + long local_68; + + lVar4 = tpidr_el0; + local_68 = *(long *)(lVar4 + 0x28); + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar8 = (ulong)param_1; + plVar11 = &DAT_005098a0 + uVar8 * 0x93; + if ((*plVar11 != 0) && ((&DAT_00509898)[uVar8 * 0x93] != 0)) { + if ((((((param_2 != (OutputPara *)0x0) && (param_3 != (void *)0x0)) && + (uVar2 = *(uint *)param_2, (uVar2 & 3) == 0)) && + (((*(uint *)(param_2 + 8) & 3) == 0 && (uVar2 <= *(uint *)(param_2 + 8))))) && + ((*(uint *)(param_2 + 0x10) & 3) == 0)) && + (((iVar5 = *(int *)(param_2 + 4), iVar5 - 1U < *(uint *)(param_2 + 0xc) && + (*(int *)(param_2 + 0x14) != 0)) && (0x87 < param_4)))) { + __src = (void *)((long)param_3 + 0x88); + uVar12 = param_4 - 0x88; + if (*(int *)param_3 != 0x5bb5b55b) { + __src = param_3; + uVar12 = param_4; + } + if (((0x97 < uVar12) && (*(int *)param_3 != 0x5bb5b55b)) && + (*(int *)((long)__src + ((ulong)uVar12 - 0x98)) == 0x5bb5b57b)) { + iVar1 = *(int *)((long)__src + ((ulong)uVar12 - 0x94)) + 0x88; + __src = (void *)((long)__src + (long)iVar1); + uVar12 = uVar12 - iVar1; + } + if (0x374 < uVar12) { + if (*(int *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x80) == 0) { + *(void **)(&DAT_005098b0 + uVar8 * 0x498) = param_6; + memcpy(local_3e0,__src,0x374); + if (local_3e0[0] == 0x374) { + if ((local_3d8 != uVar2) || (iStack_3d4 != iVar5)) { + *(uint *)param_2 = local_3d8; + *(int *)(param_2 + 4) = iStack_3d4; + *(uint *)(param_2 + 8) = local_3d8; + *(int *)(param_2 + 0xc) = iStack_3d4; + *(undefined4 *)(param_2 + 0x10) = 0x10; + *(int *)(param_2 + 0x14) = iStack_3d4; + iVar5 = iStack_3d4; + } + lVar3 = uVar8 * 0x498; + *(undefined8 *)(&DAT_005098f0 + lVar3) = *(undefined8 *)(param_2 + 0x10); + iVar1 = DAT_0052e930; + uVar13 = *(undefined8 *)param_2; + *(undefined8 *)(lVar3 + 0x5098e8) = *(undefined8 *)(param_2 + 8); + *(undefined8 *)(&DAT_005098e0 + lVar3) = uVar13; + if ((iVar1 == 0) || (local_70 == iVar1)) { + if ((ulong)uVar12 < (ulong)(iVar5 * local_3d8) * 2 + 0x374) { + puVar6 = (undefined4 *)__errno(); + uVar10 = 0; + *puVar6 = 0xe4ae0001; + } + else { + lVar3 = uVar8 * 0x498; + *(undefined4 *)(&DAT_005098f8 + lVar3) = local_368; + *(int *)(&DAT_005098fc + lVar3) = local_70; + memset(&DAT_00509900 + lVar3,0,0x50); + *(undefined4 *)(&DAT_00509900 + lVar3) = *(undefined4 *)param_2; + *(undefined4 *)(&DAT_00509904 + lVar3) = *(undefined4 *)(param_2 + 4); + uVar14 = *(undefined8 *)(param_2 + 0x10); + uVar13 = *(undefined8 *)(param_2 + 8); + *(undefined8 *)(&DAT_00509938 + lVar3) = 0x100000001; + *(undefined4 *)(&DAT_00509908 + lVar3) = local_3b8; + *(undefined4 *)(&DAT_0050990c + lVar3) = uStack_3b4; + *(undefined8 *)(&DAT_00509948 + lVar3) = uVar14; + *(undefined8 *)(&DAT_00509940 + lVar3) = uVar13; + strncpy(&DAT_00509910 + lVar3,acStack_390,0x20); + (&DAT_0050992f)[lVar3] = 0; + strncpy(&DAT_00509930 + lVar3,acStack_3b0,8); + *(uint *)(&DAT_00509950 + lVar3) = local_3c8; + *(int *)(&DAT_00509954 + lVar3) = iStack_3c4; + *(undefined4 *)(&DAT_00509958 + lVar3) = local_3c0; + *(undefined4 *)(&DAT_0050995c + lVar3) = uStack_3bc; + *(undefined8 *)(&DAT_00509960 + lVar3) = local_370; + (&DAT_00509937)[lVar3] = 0; + *(undefined8 *)(&DAT_00509970 + lVar3) = uStack_358; + *(undefined8 *)(&DAT_00509968 + lVar3) = local_360; + *(undefined4 *)(&DAT_00509978 + lVar3) = local_364; + memcpy((void *)(lVar3 + 0x50997c),local_3e0,0x374); + uStack_408 = *(undefined8 *)(param_2 + 8); + local_410 = *(undefined8 *)param_2; + local_400 = *(undefined4 *)(param_2 + 0x10); + lVar7 = *plVar11; + local_3fc = *(undefined4 *)(param_2 + 0x14); + uStack_3f0 = _UNK_00439d88; + local_3f8 = _DAT_00439d80; + *(undefined8 *)(lVar7 + 8) = 0; + *(undefined4 *)(lVar7 + 0x50) = 1; + *(undefined4 *)(lVar7 + 0x68) = 1; + *(undefined4 *)(lVar7 + 0xa8) = local_10c; + *(undefined4 *)(lVar7 + 0xac) = local_11c; + *(undefined8 *)(lVar7 + 0xc4) = 0; + *(undefined8 *)(lVar7 + 0xbc) = 0; + *(undefined8 *)(lVar7 + 0xb4) = 0; + *(undefined4 *)(lVar7 + 0xb0) = local_118; + *(undefined4 *)(lVar7 + 0xcc) = local_114; + *(undefined4 *)(lVar7 + 0xd0) = local_110; + *(undefined8 *)(lVar7 + 0x18) = uStack_100; + *(undefined8 *)(lVar7 + 0x10) = local_108; + *(undefined4 *)(lVar7 + 0x20) = local_f8; + *(undefined4 *)(lVar7 + 0x24) = local_f4; + *(undefined4 *)(lVar7 + 0x30) = local_f0; + *(undefined4 *)(lVar7 + 0x34) = local_ec; + *(undefined4 *)(&DAT_005098c8 + lVar3) = local_124; + CFunctions::SetColorPalette(); + iVar5 = CFunctions::Reset((CFunctions *)*plVar11, + (struct_IntrinsicPara *)&local_410); + if (iVar5 == 0) { + puVar6 = (undefined4 *)__errno(); + uVar10 = 0; + *puVar6 = 0xe4ae0003; + } + else { + iVar5 = CFunctions::SetInnertempUnit + ((CFunctions *)*plVar11,local_3d0,iStack_3cc); + this = (CFunctions *)*plVar11; + *(int *)(this + 0x44) = iStack_3c4; + *(uint *)(this + 0x48) = local_3c8; + if ((local_78 == 0) || (local_74 == 0)) { + puVar9 = &local_3c8; + local_78 = iStack_3c4; + } + else { + puVar9 = &local_74; + } + *(int *)(this + 0x3c) = local_78; + *(uint *)(this + 0x40) = *puVar9; + CFunctions::SetLensParameter(this,auStack_350,0x21c); + if (iVar5 == 0) { + uVar10 = 0; + } + else { + uVar10 = 1; + CFunctions::PushFrame((CFunctions *)*plVar11,(long)__src + 0x374,1,1,1,1); + if (param_5 != (_func_void_uint_uint_uint_void_ptr *)0x0) { + (*param_5)(param_1,local_3c8,2,*(void **)(&DAT_005098b0 + uVar8 * 0x498)); + uVar10 = 1; + } + } + } + } + } + else { + puVar6 = (undefined4 *)__errno(); + uVar10 = 0; + *puVar6 = 0xe4ae000c; + } + goto LAB_0017dfd0; + } + } + puVar6 = (undefined4 *)__errno(); + uVar10 = 0; + *puVar6 = 0xe4ae0003; + goto LAB_0017dfd0; + } + } + puVar6 = (undefined4 *)__errno(); + uVar10 = 0; + *puVar6 = 0xe4ae0001; + goto LAB_0017dfd0; + } + } + uVar10 = 0; +LAB_0017dfd0: + if (*(long *)(lVar4 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar10); +} + + +================================================================== + +### FUNC 0017e3ec (216 bytes) name=MAG_LoadDDT + +undefined4 +MAG_LoadDDT(uint param_1,OutputPara *param_2,char *param_3, + _func_void_uint_uint_uint_void_ptr *param_4,void *param_5) + +{ + long lVar1; + uint uVar2; + undefined4 uVar3; + void *pvVar4; + IFStream aIStack_70 [24]; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + pvVar4 = operator_new__(4000000); + IFStream::IFStream(aIStack_70,param_3); + uVar2 = FStream::Read((FStream *)aIStack_70,pvVar4,1,4000000); + OFStream::~OFStream((OFStream *)aIStack_70); + uVar3 = LoadDDT(param_1,param_2,pvVar4,uVar2,param_4,param_5); + operator_delete__(pvVar4); + if (*(long *)(lVar1 + 0x28) == local_58) { + return uVar3; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017e4f4 (4 bytes) name=MAG_LoadBufferedDDT + +void MAG_LoadBufferedDDT(uint param_1,OutputPara *param_2,void *param_3,uint param_4, + _func_void_uint_uint_uint_void_ptr *param_5,void *param_6) + +{ + (*(code *)PTR_LoadDDT_004ffd40)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0017e4f8 (356 bytes) name=MAG_ProbeDDT + +bool MAG_ProbeDDT(char *param_1,int *param_2) + +{ + long lVar1; + bool bVar2; + int iVar3; + long lVar4; + IFStream aIStack_150 [24]; + int local_138; + int local_134; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + bVar2 = false; + if (param_2 != (int *)0x0) { + IFStream::IFStream(aIStack_150,param_1); + iVar3 = FStream::Read((FStream *)aIStack_150,&local_138,0x88,1); + if ((iVar3 == 0x88) && (local_138 == 0x5bb5b55b)) { + lVar4 = FStream::Read((FStream *)aIStack_150,param_2,0x374,1); + } + else { + lVar4 = IFStream::GetLength(aIStack_150); + FStream::Seek((FStream *)aIStack_150,lVar4 + -0x98,0); + iVar3 = FStream::Read((FStream *)aIStack_150,&local_138,0x98,1); + if ((iVar3 == 0x98) && (local_138 == 0x5bb5b57b)) { + FStream::Seek((FStream *)aIStack_150,(long)local_134 + 0x88,0); + lVar4 = FStream::Read((FStream *)aIStack_150,param_2,0x374,1); + } + else { + FStream::Seek((FStream *)aIStack_150,0,0); + lVar4 = FStream::Read((FStream *)aIStack_150,param_2,0x374,1); + } + } + if (lVar4 == 0x374) { + bVar2 = *param_2 == 0x374; + } + else { + bVar2 = false; + } + OFStream::~OFStream((OFStream *)aIStack_150); + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return bVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017e68c (208 bytes) name=MAG_ProbeBufferedDDT + +undefined8 MAG_ProbeBufferedDDT(int *param_1,uint param_2,void *param_3) + +{ + int iVar1; + undefined8 uVar2; + undefined4 *puVar3; + int *__src; + uint uVar4; + + uVar2 = 0; + if (((0x374 < param_2) && (param_1 != (int *)0x0)) && (param_3 != (void *)0x0)) { + __src = param_1 + 0x22; + uVar4 = param_2 - 0x88; + if (*param_1 != 0x5bb5b55b) { + __src = param_1; + uVar4 = param_2; + } + if (((0x97 < uVar4) && (*param_1 != 0x5bb5b55b)) && + (*(int *)((long)__src + (long)(int)uVar4 + -0x98) == 0x5bb5b57b)) { + iVar1 = *(int *)((long)__src + (long)(int)uVar4 + -0x94) + 0x88; + __src = (int *)((long)__src + (long)iVar1); + uVar4 = uVar4 - iVar1; + } + if (uVar4 < 0x375) { + puVar3 = (undefined4 *)__errno(0); + *puVar3 = 0xe4ae0001; + return 0; + } + if (*__src != 0x374) { + return 0; + } + memcpy(param_3,__src,0x374); + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### FUNC 0017e75c (8 bytes) name=MAG_SDStorageMGT + +undefined8 MAG_SDStorageMGT(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017e764 (8 bytes) name=MAG_SDStorageBMP + +undefined8 MAG_SDStorageBMP(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017e76c (8 bytes) name=MAG_SDStorageMGSStart + +undefined8 MAG_SDStorageMGSStart(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017e774 (8 bytes) name=MAG_SDStorageMGSStop + +undefined8 MAG_SDStorageMGSStop(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017e77c (8 bytes) name=MAG_SDStorageAviStart + +undefined8 MAG_SDStorageAviStart(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017e784 (8 bytes) name=MAG_SDStorageAviStop + +undefined8 MAG_SDStorageAviStop(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0017e78c (112 bytes) name=MAG_SDCardStorage + +undefined8 MAG_SDCardStorage(uint param_1,uint param_2) + +{ + undefined4 *puVar1; + + if ((((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) && + ((&DAT_005098a0)[(ulong)param_1 * 0x93] != 0)) && + ((4 < param_2 && ((&DAT_00509898)[(ulong)param_1 * 0x93] != 0)))) { + puVar1 = (undefined4 *)__errno(); + *puVar1 = 0xe4ae0001; + } + return 0; +} + + +================================================================== + +### FUNC 0017e7fc (788 bytes) name=FUN_0017e7fc + +void FUN_0017e7fc(uint param_1,long param_2) + +{ + uint *puVar1; + short sVar2; + uint uVar3; + long lVar4; + int iVar5; + int iVar6; + CFunctions *this; + time_t tVar7; + ulong uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + long lVar12; + long *plVar13; + ulong uVar14; + + if (*(int *)(&DAT_005098c0 + (ulong)param_1 * 0x498) == 0) { + return; + } + uVar14 = (ulong)param_1; + lVar12 = (&DAT_005098a8)[uVar14 * 0x93]; + uVar10 = *(int *)(&DAT_00509d14 + uVar14 * 0x498) + 1; + *(uint *)(&DAT_00509d14 + uVar14 * 0x498) = uVar10; + uVar3 = *(uint *)(lVar12 + 0xaf4) >> 0x18; + if (uVar3 - 1 < 2) { + if (uVar10 < 0x14) { + return; + } + } + else if ((uVar10 < 8) && (uVar3 == 4)) { + return; + } + sVar2 = *(short *)(lVar12 + 0xb36); + lVar4 = uVar14 * 0x498; + iVar6 = *(int *)(param_2 + 0x28) + (int)sVar2; + *(int *)(param_2 + 0x28) = iVar6; + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)sVar2; + plVar13 = &DAT_005098a0 + uVar14 * 0x93; + this = (CFunctions *)*plVar13; + *(int *)(this + 0x48) = iVar6; + puVar1 = (uint *)(&DAT_00509d10 + lVar4); + *(undefined4 *)(this + 0x44) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_00509d10 + lVar4); + *(undefined4 *)(&DAT_00509950 + lVar4) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_00509954 + lVar4) = *(undefined4 *)(param_2 + 0x2c); + iVar5 = (int)lVar12; + if (iVar6 < 0) { + iVar6 = CNetComm::SetShutterState(iVar5,(uint *)0x0); + if (iVar6 == 0) { + return; + } + lVar12 = *plVar13; + *(undefined4 *)(lVar12 + 0x3c) = *(undefined4 *)(lVar12 + 0x44); + *(undefined4 *)(lVar12 + 0x40) = *(undefined4 *)(lVar12 + 0x48); + *puVar1 = 0; + return; + } + uVar10 = iVar6 + 1; + *puVar1 = uVar10; + uVar11 = *(uint *)(lVar12 + 0xb38); + uVar9 = *(int *)(lVar12 + 0xb28) + uVar11; + if (uVar10 <= uVar11) { + uVar9 = uVar9 + *(int *)(lVar12 + 0xb3c); +LAB_0017e9e0: + CFunctions::DoSomething(this,iVar6,uVar9); + return; + } + if (uVar10 <= uVar9) { + if (uVar10 == uVar9) { + CNetComm::SetShutterState(iVar5,(uint *)0x1); + this = (CFunctions *)*plVar13; + uVar10 = *puVar1; + uVar11 = *(uint *)(lVar12 + 0xb38); + } + CFunctions::PushBaselineRaw(this,(ushort *)(param_2 + 0x4c),(uint)(uVar10 == uVar11 + 1)); + this = (CFunctions *)*plVar13; + iVar6 = *puVar1 - 1; + uVar9 = *(int *)(lVar12 + 0xb28) + *(int *)(lVar12 + 0xb38) + *(int *)(lVar12 + 0xb3c); + goto LAB_0017e9e0; + } + uVar9 = *(int *)(lVar12 + 0xb3c) + uVar9; + if (uVar10 <= uVar9) goto LAB_0017e9e0; + if (uVar3 < 7) { + if ((1 << (ulong)(uVar3 & 0x1f) & 0x69U) == 0) { + iVar6 = 100; + if ((4 < *(uint *)(&DAT_00509d18 + uVar14 * 0x498)) || (uVar10 != 0x82 - uVar9)) + goto LAB_0017ea34; + iVar6 = *(uint *)(&DAT_00509d18 + uVar14 * 0x498) + 1; + } + else { + iVar6 = 0x1e; + if ((*(int *)(&DAT_00509d18 + uVar14 * 0x498) != 0) || (uVar10 != 0x4b)) goto LAB_0017ea34; + iVar6 = 1; + } + *(int *)(&DAT_00509d18 + uVar14 * 0x498) = iVar6; + } + else { + iVar6 = 100; +LAB_0017ea34: + if (uVar10 < *(int *)(lVar12 + 0xb40) + uVar9) { + if (uVar10 < iVar6 + uVar9) goto LAB_0017ea90; + uVar3 = *(int *)(this + 0x3c) - *(int *)(param_2 + 0x2c); + uVar10 = -uVar3; + if (-1 < (int)uVar3) { + uVar10 = uVar3; + } + if (uVar10 <= *(uint *)(lVar12 + 0xb44)) goto LAB_0017ea90; + } + } + iVar6 = CNetComm::SetShutterState(iVar5,(uint *)0x0); + if (iVar6 != 0) { + lVar12 = *plVar13; + *(undefined4 *)(lVar12 + 0x3c) = *(undefined4 *)(lVar12 + 0x44); + *(undefined4 *)(lVar12 + 0x40) = *(undefined4 *)(lVar12 + 0x48); + *puVar1 = 0; + } +LAB_0017ea90: + if (*(int *)(&DAT_00509d0c + uVar14 * 0x498) == 0) { + tVar7 = time((time_t *)0x0); + lVar12 = uVar14 * 0x498; + *(undefined4 *)(&DAT_00509978 + lVar12) = 0; + *(undefined8 *)(&DAT_00509968 + lVar12) = 0; + *(undefined8 *)(&DAT_00509970 + lVar12) = 0; + *(time_t *)(&DAT_00509960 + lVar12) = tVar7; + uVar8 = CFunctions::PushFrame((CFunctions *)*plVar13,(ushort *)(param_2 + 0x4c),0,1,0,1); + if ((uVar8 & 1) != 0) { + /* WARNING: Could not recover jumptable at 0x0017eb0c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(&DAT_005098d8 + uVar14 * 0x498)) + (param_1,*(undefined4 *)(param_2 + 0x44),2, + *(undefined8 *)(&DAT_005098b0 + uVar14 * 0x498)); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0017eb10 (4 bytes) name=ShiftNotify + +/* ShiftNotify(unsigned int, unsigned int) */ + +uint ShiftNotify(uint param_1,uint param_2) + +{ + return param_1; +} + + +================================================================== + +### FUNC 0017eb14 (1420 bytes) name=MAG_EstimateUnderArmTempFromForeheadRect + +void MAG_EstimateUnderArmTempFromForeheadRect + (uint param_1,uint param_2,uint param_3,uint param_4,uint param_5) + +{ + int iVar1; + long lVar2; + long lVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + CFunctions *this; + long lVar9; + undefined4 *puVar10; + long *plVar11; + ulong uVar12; + float fVar13; + float fVar14; + int local_80 [6]; + char acStack_68 [3]; + undefined1 local_65; + long local_48; + + lVar3 = tpidr_el0; + local_48 = *(long *)(lVar3 + 0x28); + if ((param_1 < 0x81) && ((&DAT_005098a8)[(ulong)param_1 * 0x93] != 0)) { + uVar12 = (ulong)param_1; + plVar11 = &DAT_005098a0 + uVar12 * 0x93; + this = (CFunctions *)*plVar11; + iVar4 = 0; + if (this == (CFunctions *)0x0) goto LAB_0017ed90; + if ((&DAT_00509898)[uVar12 * 0x93] != 0) { + local_80[4] = 0; + local_80[0] = 0; + local_80[1] = 0; + local_80[2] = 0; + local_80[3] = 0; + if (*(int *)(this + 0xec) == 0) { + if (*(int *)((&DAT_005098a8)[(ulong)param_1 * 0x93] + 0x80) == 0) { + puVar10 = (undefined4 *)__errno(); + *puVar10 = 0xe4ae0006; + iVar4 = -5; + } + else { + puVar10 = (undefined4 *)__errno(); + *puVar10 = 0xe4ae0008; + iVar4 = -2; + } + } + else { + iVar4 = CFunctions::GetRectTemperatureInfo(this,param_2,param_3,param_4,param_5,local_80,0); + if (iVar4 == 0) { + puVar10 = (undefined4 *)__errno(); + *puVar10 = 0xe4ae0001; + iVar4 = -1; + } + else { + uVar5 = CFunctions::GetTemperature((CFunctions *)*plVar11,local_80[4],3,0); + iVar6 = CFunctions::CorrectTemperature((int)*plVar11,*(float *)(*plVar11 + 0xac),uVar5); + lVar9 = *plVar11; + lVar2 = uVar12 * 0x498; + iVar4 = CFunctions::CorrectTemperature + ((int)lVar9,*(float *)(lVar9 + 0xac),*(uint *)(lVar9 + 0x4a78)); + uVar5 = CFunctions::GetTemperature + ((CFunctions *)*plVar11,*(uint *)((CFunctions *)*plVar11 + 0x4a84),7,0); + iVar7 = CFunctions::CorrectTemperature((int)*plVar11,*(float *)(*plVar11 + 0xac),uVar5); + iVar1 = *(int *)(&DAT_00509950 + lVar2); + sprintf(acStack_68,"%u",(ulong)*(uint *)(&DAT_005098f8 + lVar2)); + local_65 = 0; + iVar8 = strcmp(acStack_68,"621"); + if (iVar8 == 0) { + iVar8 = -12000; + } + else { + iVar8 = strcmp(acStack_68,"620"); + if ((((iVar8 == 0) || (iVar8 = strcmp(acStack_68,"321"), iVar8 == 0)) || + (iVar8 = strcmp(acStack_68,"210"), iVar8 == 0)) || + ((iVar8 = strcmp(acStack_68,"150"), iVar8 == 0 || + (iVar8 = strcmp(acStack_68,"120"), iVar8 == 0)))) { + iVar8 = -10000; + } + else { + iVar8 = strcmp(acStack_68,"340"); + if ((((iVar8 == 0) || (iVar8 = strcmp(acStack_68,"320"), iVar8 == 0)) || + ((iVar8 = strcmp(acStack_68,"211"), iVar8 == 0 || + (((iVar8 = strcmp(acStack_68,"140"), iVar8 == 0 || + (iVar8 = strcmp(acStack_68,"130"), iVar8 == 0)) || + (iVar8 = strcmp(acStack_68,"160"), iVar8 == 0)))))) || + (iVar8 = strcmp(acStack_68,"100"), iVar8 == 0)) { + iVar8 = -8000; + } + else { + iVar8 = strcmp(acStack_68,"330"); + if (iVar8 == 0) { + iVar8 = -6000; + } + else { + iVar8 = -10000; + if (*(uint *)(&DAT_00509900 + lVar2) < 0x280) { + iVar8 = -8000; + } + } + } + } + } + iVar8 = iVar8 + iVar1; + if (iVar8 <= iVar4) { + iVar4 = iVar8; + } + if (iVar7 <= iVar8) { + iVar7 = iVar4; + } + if (39999 < iVar7) { + iVar7 = 40000; + } + if (iVar7 < 0x3a99) { + iVar7 = 15000; + } + iVar4 = iVar6 + -500; + if (iVar6 - 0x5014U < 0x55f1) { + if (iVar6 < 0x7724) { + fVar13 = (float)((iVar6 * 0x7c + -0x26c9b0) / 1000 + 34000); + } + else if (iVar6 < 0x8bd8) { + fVar13 = (float)iVar4; + fVar13 = fVar13 * DAT_00439dbc + + fVar13 * DAT_00439db4 * fVar13 * fVar13 + fVar13 * DAT_00439db8 * fVar13 + + DAT_00439dc0; + } + else { + fVar13 = (float)(iVar6 + -0x8bd8) * DAT_00439dac + DAT_00439db0; + } + fVar13 = *(float *)(&UNK_00439e18 + (ulong)(24999 < iVar7) * 4) * (float)(25000 - iVar7) + + fVar13; + fVar14 = DAT_00439e10; + if ((((DAT_00439dc4 < fVar13) || (fVar14 = DAT_00439e0c, DAT_00439dc8 < fVar13)) || + ((fVar14 = DAT_00439e08, DAT_00439dcc < fVar13 || + ((fVar14 = DAT_00439e04, DAT_00439dd0 < fVar13 || + (fVar14 = DAT_00439e00, DAT_00439dd4 < fVar13)))))) || + ((fVar14 = DAT_00439dfc, DAT_00439dd8 < fVar13 || + ((((fVar14 = DAT_00439df8, DAT_00439ddc < fVar13 || + (fVar14 = DAT_00439df4, DAT_00439de0 < fVar13)) || + (fVar14 = DAT_00439df0, DAT_00439de4 < fVar13)) || + (fVar14 = DAT_00439dec, DAT_00439de8 < fVar13)))))) { + fVar13 = fVar13 + fVar14; + } + fVar13 = fVar13 + DAT_00439df0; + if (fVar13 <= DAT_00439de8) { + fVar13 = (fVar13 + DAT_00439e14) * 0.5 + DAT_00439de8; + } + iVar4 = (int)fVar13; + } + } + } + goto LAB_0017ed90; + } + } + iVar4 = 0; +LAB_0017ed90: + if (*(long *)(lVar3 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar4); +} + + +================================================================== + +### FUNC 0017f0a0 (88 bytes) name=CVideoFunctions + +/* CVideoFunctions::CVideoFunctions() */ + +void __thiscall CVideoFunctions::CVideoFunctions(CVideoFunctions *this) + +{ + MutexLock::MutexLock((MutexLock *)(this + 0xa0)); + memset(this,0,0xa0); + *(undefined4 *)(this + 0x154) = 0; + *(undefined4 *)(this + 0x158) = 0; + *(undefined4 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0x168) = 0; + *(undefined8 *)(this + 0x170) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xd8) = 0; + *(undefined8 *)(this + 0xd0) = 0; + *(undefined8 *)(this + 200) = 0; + *(undefined8 *)(this + 0x160) = 0; + return; +} + + +================================================================== + +### FUNC 0017f0f8 (112 bytes) name=~CVideoFunctions + +/* CVideoFunctions::~CVideoFunctions() */ + +int __thiscall CVideoFunctions::~CVideoFunctions(CVideoFunctions *this) + +{ + pthread_mutex_t *__mutex; + int iVar1; + + __mutex = (pthread_mutex_t *)(this + 0xa0); + pthread_mutex_lock(__mutex); + if (*(void **)(this + 0x160) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x160)); + *(undefined8 *)(this + 0x160) = 0; + } + if (*(void **)(this + 0x168) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x168)); + *(undefined8 *)(this + 0x168) = 0; + } + if (*(void **)(this + 0x170) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x170)); + *(undefined8 *)(this + 0x170) = 0; + } + *(undefined8 *)(this + 0x154) = 0; + pthread_mutex_unlock(__mutex); + iVar1 = pthread_mutex_destroy(__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 0017f180 (100 bytes) name=ReleaseMemory + +/* CVideoFunctions::ReleaseMemory() */ + +int __thiscall CVideoFunctions::ReleaseMemory(CVideoFunctions *this) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)(this + 0xa0)); + if (*(void **)(this + 0x160) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x160)); + *(undefined8 *)(this + 0x160) = 0; + } + if (*(void **)(this + 0x168) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x168)); + *(undefined8 *)(this + 0x168) = 0; + } + if (*(void **)(this + 0x170) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x170)); + *(undefined8 *)(this + 0x170) = 0; + } + *(undefined8 *)(this + 0x154) = 0; + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)(this + 0xa0)); + return iVar1; +} + + +================================================================== + +### FUNC 0017f1e4 (480 bytes) name=Reset + +/* CVideoFunctions::Reset(struct_IntrinsicPara const*) */ + +void __thiscall CVideoFunctions::Reset(CVideoFunctions *this,struct_IntrinsicPara *param_1) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + int iVar2; + long lVar3; + int iVar4; + undefined4 uVar5; + void *pvVar6; + undefined4 *puVar7; + undefined8 uVar8; + Logging aLStack_70 [24]; + long local_58; + + lVar3 = tpidr_el0; + local_58 = *(long *)(lVar3 + 0x28); + __mutex = (pthread_mutex_t *)(this + 0xa0); + pthread_mutex_lock(__mutex); + if (*(void **)(this + 0x160) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x160)); + *(undefined8 *)(this + 0x160) = 0; + } + if (*(void **)(this + 0x168) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x168)); + *(undefined8 *)(this + 0x168) = 0; + } + if (*(void **)(this + 0x170) != (void *)0x0) { + operator_delete__(*(void **)(this + 0x170)); + *(undefined8 *)(this + 0x170) = 0; + } + *(undefined8 *)(this + 0x154) = 0; + pthread_mutex_unlock(__mutex); + pthread_mutex_lock(__mutex); + uVar8 = *(undefined8 *)param_1; + *(undefined8 *)(this + 0xd0) = *(undefined8 *)(param_1 + 8); + *(undefined8 *)(this + 200) = uVar8; + uVar1 = *(uint *)(this + 200); + *(undefined8 *)(this + 0xe8) = *(undefined8 *)(param_1 + 0x20); + uVar8 = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0xe0) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0xd8) = uVar8; + if ((((uVar1 < 4) || ((uVar1 & 3) != 0)) || (iVar4 = *(int *)(this + 0xcc), iVar4 == 0)) || + ((uVar1 != *(uint *)(this + 0xd0) || (iVar4 != *(int *)(this + 0xd4))))) { + mag::Logging::Logging(aLStack_70,4); + MStream::operator<<((MStream *)aLStack_70, + "Failed to configurate CFuncitons due to parameter error"); + mag::Logging::~Logging(aLStack_70); + iVar4 = pthread_mutex_unlock(__mutex); + puVar7 = (undefined4 *)__errno(iVar4); + uVar5 = 0; + *puVar7 = 0xe4ae0001; + } + else { + iVar2 = iVar4 * uVar1; + *(int *)(this + 0xf0) = iVar2; + *(int *)(this + 0xf4) = iVar2; + pvVar6 = operator_new__((ulong)(uint)(iVar2 * 4)); + *(void **)(this + 0x160) = pvVar6; + pvVar6 = operator_new__((ulong)(uint)(iVar2 * 4)); + *(void **)(this + 0x168) = pvVar6; + pvVar6 = operator_new__((ulong)((uint)(iVar2 * 3) >> 1)); + *(void **)(this + 0x170) = pvVar6; + *(undefined8 *)(this + 0x120) = 0; + *(int *)(this + 0x104) = iVar4; + *(undefined4 *)(this + 0x10c) = 0; + *(undefined8 *)(this + 0x118) = 0; + *(undefined8 *)(this + 0x110) = 0; + *(undefined4 *)(this + 0xfc) = 0x28; + *(uint *)(this + 0x100) = uVar1; + *(undefined4 *)(this + 0x108) = 0x200001; + *(undefined8 *)(this + 0x130) = 0; + *(undefined8 *)(this + 0x128) = 0; + *(undefined8 *)(this + 0x148) = 0; + *(undefined8 *)(this + 0x140) = 0; + *(undefined8 *)(this + 0x138) = 0; + *(undefined8 *)(this + 0x150) = 0x100000000; + *(undefined4 *)(this + 0x128) = 0x28; + *(uint *)(this + 300) = uVar1; + *(int *)(this + 0x130) = iVar4; + *(undefined8 *)(this + 0x134) = 0x200001; + pthread_mutex_unlock(__mutex); + uVar5 = *(undefined4 *)(this + 0x154); + } + if (*(long *)(lVar3 + 0x28) == local_58) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 0017f3d8 (944 bytes) name=PushYUV + +/* CVideoFunctions::PushYUV(unsigned char const*) */ + +undefined4 __thiscall CVideoFunctions::PushYUV(CVideoFunctions *this,uchar *param_1) + +{ + bool bVar1; + undefined4 *puVar2; + void *__src; + pthread_mutex_t *__mutex; + CVideoFunctions *pCVar3; + CVideoFunctions *pCVar4; + uint uVar5; + uint uVar6; + void *__src_00; + CVideoFunctions *pCVar7; + uint uVar8; + uint uVar9; + byte bVar10; + uint uVar11; + int iVar12; + long lVar13; + CVideoFunctions *pCVar14; + int iVar15; + ulong uVar16; + undefined4 *puVar17; + undefined1 *puVar18; + ulong uVar19; + ulong uVar20; + uchar *puVar21; + undefined4 *puVar22; + undefined4 *puVar23; + uchar *puVar24; + long lVar25; + int iVar26; + undefined4 *puVar27; + undefined4 uVar28; + size_t __n; + long lVar29; + undefined1 auStack_1068 [4096]; + long local_68; + + lVar13 = tpidr_el0; + local_68 = *(long *)(lVar13 + 0x28); + __mutex = (pthread_mutex_t *)(this + 0xa0); + pthread_mutex_lock(__mutex); + if ((param_1 == (uchar *)0x0) || (*(int *)(this + 0x154) == 0)) { + iVar15 = pthread_mutex_unlock(__mutex); + uVar28 = 0; + } + else { + pCVar3 = this + 0xd0; + pCVar4 = this + 0xd4; + pCVar7 = pCVar3; + pCVar14 = pCVar4; + if (*(int *)(this + 0x74) != 0) { + pCVar7 = pCVar4; + pCVar14 = pCVar3; + } + uVar8 = *(uint *)pCVar7; + uVar9 = *(uint *)pCVar14; + uVar11 = uVar9 * uVar8; + memcpy(*(void **)(this + 0x170),param_1,(ulong)(uVar11 * 3 >> 1)); + if (uVar9 != 0) { + puVar21 = param_1 + uVar11; + uVar20 = 0; + puVar24 = puVar21 + (uVar11 >> 2); + do { + if (uVar8 != 0) { + uVar16 = 0; + puVar18 = (undefined1 *)(*(long *)(this + 0x160) + (ulong)(uVar8 * 4 * (int)uVar20)); + do { + uVar19 = uVar16 >> 1 & 0x7fffffff; + bVar10 = param_1[uVar16]; + uVar16 = uVar16 + 1; + uVar11 = (uint)bVar10 + ((int)((puVar24[uVar19] - 0x80) * 0x15e) >> 8); + uVar5 = (uint)bVar10 + ((int)((puVar21[uVar19] - 0x80) * 0x1bb) >> 8); + uVar11 = uVar11 & ((int)uVar11 >> 0x1f ^ 0xffffffffU); + uVar6 = (uint)bVar10 + + ((int)((puVar21[uVar19] - 0x80) * -0x55 + (puVar24[uVar19] - 0x80) * -0xb3) >> 8 + ); + uVar6 = uVar6 & ((int)uVar6 >> 0x1f ^ 0xffffffffU); + uVar5 = uVar5 & ((int)uVar5 >> 0x1f ^ 0xffffffffU); + if (0xfe < (int)uVar11) { + uVar11 = 0xff; + } + if (0xfe < (int)uVar6) { + uVar6 = 0xff; + } + if (0xfe < (int)uVar5) { + uVar5 = 0xff; + } + puVar18[3] = 0xff; + *puVar18 = (char)uVar11; + puVar18[1] = (char)uVar6; + puVar18[2] = (char)uVar5; + puVar18 = puVar18 + 4; + } while (uVar8 != (uint)uVar16); + param_1 = param_1 + (ulong)(uVar8 - 1) + 1; + } + uVar16 = uVar20 & 1; + uVar20 = uVar20 + 1; + if (uVar16 != 0) { + puVar24 = puVar24 + (uVar8 >> 1); + puVar21 = puVar21 + (uVar8 >> 1); + } + } while (uVar20 != uVar9); + } + if (*(int *)(this + 0x74) == 1) { + memcpy(*(void **)(this + 0x168),*(void **)(this + 0x160),(ulong)*(uint *)(this + 0xf4) << 2); + iVar15 = *(int *)(this + 0xd0); + if (iVar15 != 0) { + uVar9 = *(uint *)(this + 0xd4); + lVar25 = (long)iVar15; + iVar12 = uVar9 * iVar15; + uVar8 = uVar9 + 3; + if (-1 < (int)uVar9) { + uVar8 = uVar9; + } + puVar23 = (undefined4 *)(*(long *)(this + 0x160) + (long)(int)((uVar9 - 1) * iVar15) * 4); + puVar22 = (undefined4 *)(*(long *)(this + 0x168) + (long)iVar12 * 4 + -4); + uVar11 = ((int)uVar8 >> 2) - 1; + do { + puVar17 = puVar23; + puVar27 = puVar22; + iVar26 = (int)uVar8 >> 2; + if (6 < uVar9 + 3) { + do { + iVar26 = iVar26 + -1; + *puVar17 = *puVar27; + puVar17 = puVar17 + -lVar25; + *puVar17 = puVar27[-1]; + puVar17 = puVar17 + -lVar25; + *puVar17 = puVar27[-2]; + puVar2 = puVar27 + -3; + puVar27 = puVar27 + -4; + puVar17[-lVar25] = *puVar2; + puVar17 = puVar17 + -lVar25 + -lVar25; + } while (iVar26 != 0); + puVar23 = (undefined4 *)((long)puVar23 + ((ulong)uVar11 * -0x10 + -0x10) * lVar25); + puVar22 = puVar22 + (ulong)uVar11 * -4 + -4; + } + iVar15 = iVar15 + -1; + puVar23 = puVar23 + (long)iVar12 + 1; + } while (iVar15 != 0); + } + } + uVar8 = *(uint *)(this + 0x70); + if (uVar8 != 0) { + uVar9 = *(uint *)pCVar3; + lVar25 = (long)(int)uVar9; + uVar11 = *(uint *)pCVar4; + uVar20 = (ulong)(int)uVar11; + if (((uVar8 >> 1 & 1) != 0) && (1 < (int)uVar11)) { + lVar29 = 0; + uVar16 = uVar20 >> 1 & 0x7fffffff; + __n = lVar25 * 4; + iVar15 = uVar9 * (uVar11 - 1); + do { + __src_00 = (void *)(*(long *)(this + 0x160) + lVar29); + __src = (void *)(*(long *)(this + 0x160) + (long)iVar15 * 4); + memcpy(auStack_1068,__src_00,__n); + memcpy(__src_00,__src,__n); + memcpy(__src,auStack_1068,__n); + lVar29 = lVar29 + __n; + uVar16 = uVar16 - 1; + iVar15 = iVar15 - uVar9; + } while (uVar16 != 0); + } + if (((uVar8 & 1) != 0) && (0 < (int)uVar11)) { + lVar29 = *(long *)(this + 0x160); + uVar8 = uVar9; + if ((int)uVar9 < 0) { + uVar8 = uVar9 + 1; + } + puVar23 = (undefined4 *) + (lVar29 + ((uVar20 - 1) * lVar25 + (long)(int)(uVar8 & 0xfffffffe)) * 4 + -4); + do { + if (2 < uVar9 + 1) { + puVar22 = (undefined4 *)(lVar29 + (uVar20 - 1) * lVar25 * 4); + puVar17 = puVar23; + iVar15 = (int)uVar8 >> 1; + do { + uVar28 = *puVar22; + iVar15 = iVar15 + -1; + *puVar22 = *puVar17; + *puVar17 = uVar28; + puVar22 = puVar22 + 1; + puVar17 = puVar17 + -1; + } while (iVar15 != 0); + } + puVar23 = puVar23 + -lVar25; + bVar1 = 1 < (long)uVar20; + uVar20 = uVar20 - 1; + } while (bVar1); + } + } + uVar28 = 1; + *(undefined4 *)(this + 0x158) = 1; + iVar15 = pthread_mutex_unlock(__mutex); + } + if (*(long *)(lVar13 + 0x28) == local_68) { + return uVar28; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar15); +} + + +================================================================== + +### FUNC 0017f788 (248 bytes) name=Rotate + +/* CVideoFunctions::Rotate(unsigned int) */ + +void __thiscall CVideoFunctions::Rotate(CVideoFunctions *this,uint param_1) + +{ + undefined4 *puVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + undefined4 *puVar6; + int iVar7; + undefined4 *puVar8; + long lVar9; + undefined4 *puVar10; + undefined4 *puVar11; + int iVar12; + + if (param_1 == 1) { + memcpy(*(void **)(this + 0x168),*(void **)(this + 0x160),(ulong)*(uint *)(this + 0xf4) << 2); + iVar7 = *(int *)(this + 0xd0); + if (iVar7 != 0) { + uVar3 = *(uint *)(this + 0xd4); + lVar9 = (long)iVar7; + iVar4 = uVar3 * iVar7; + uVar2 = uVar3 + 3; + if (-1 < (int)uVar3) { + uVar2 = uVar3; + } + puVar10 = (undefined4 *)(*(long *)(this + 0x160) + (long)(int)((uVar3 - 1) * iVar7) * 4); + uVar5 = ((int)uVar2 >> 2) - 1; + puVar8 = (undefined4 *)(*(long *)(this + 0x168) + (long)iVar4 * 4 + -4); + do { + puVar11 = puVar10; + if (6 < uVar3 + 3) { + puVar11 = (undefined4 *)((long)puVar10 + ((ulong)uVar5 * -0x10 + -0x10) * lVar9); + puVar6 = puVar8; + iVar12 = (int)uVar2 >> 2; + do { + iVar12 = iVar12 + -1; + *puVar10 = *puVar6; + puVar10 = puVar10 + -lVar9; + *puVar10 = puVar6[-1]; + puVar10 = puVar10 + -lVar9; + *puVar10 = puVar6[-2]; + puVar1 = puVar6 + -3; + puVar6 = puVar6 + -4; + puVar10[-lVar9] = *puVar1; + puVar10 = puVar10 + -lVar9 + -lVar9; + } while (iVar12 != 0); + puVar8 = puVar8 + (ulong)uVar5 * -4 + -4; + } + iVar7 = iVar7 + -1; + puVar10 = puVar11 + (long)iVar4 + 1; + } while (iVar7 != 0); + } + } + return; +} + + +================================================================== + +### FUNC 0017f880 (368 bytes) name=Mirror + +/* CVideoFunctions::Mirror(unsigned int) */ + +void __thiscall CVideoFunctions::Mirror(CVideoFunctions *this,uint param_1) + +{ + bool bVar1; + void *__src; + void *__src_00; + uint uVar2; + uint uVar3; + long lVar4; + undefined4 uVar5; + long lVar6; + undefined4 *puVar7; + undefined4 *puVar8; + undefined4 *puVar9; + int iVar10; + size_t __n; + int iVar11; + long lVar12; + long lVar13; + ulong uVar14; + undefined1 auStack_1068 [4096]; + long local_68; + + lVar6 = tpidr_el0; + local_68 = *(long *)(lVar6 + 0x28); + uVar3 = *(uint *)(this + 0xd0); + lVar4 = (long)(int)uVar3; + iVar10 = *(int *)(this + 0xd4); + if (((param_1 >> 1 & 1) != 0) && (1 < iVar10)) { + iVar11 = iVar10; + if (iVar10 < 0) { + iVar11 = iVar10 + 1; + } + lVar13 = 0; + __n = lVar4 * 4; + uVar14 = (ulong)(uint)(iVar11 >> 1); + iVar11 = uVar3 * (iVar10 + -1); + do { + __src_00 = (void *)(*(long *)(this + 0x160) + lVar13); + __src = (void *)(*(long *)(this + 0x160) + (long)iVar11 * 4); + memcpy(auStack_1068,__src_00,__n); + memcpy(__src_00,__src,__n); + memcpy(__src,auStack_1068,__n); + iVar11 = iVar11 - uVar3; + uVar14 = uVar14 - 1; + lVar13 = lVar13 + __n; + } while (uVar14 != 0); + } + if (((param_1 & 1) != 0) && (0 < iVar10)) { + lVar13 = *(long *)(this + 0x160); + uVar2 = uVar3; + if ((int)uVar3 < 0) { + uVar2 = uVar3 + 1; + } + puVar7 = (undefined4 *) + (lVar13 + (((long)iVar10 + -1) * lVar4 + (long)(int)(uVar2 & 0xfffffffe)) * 4 + -4); + lVar12 = (long)iVar10; + do { + if (2 < uVar3 + 1) { + puVar8 = (undefined4 *)(lVar13 + (lVar12 + -1) * lVar4 * 4); + puVar9 = puVar7; + iVar10 = (int)uVar2 >> 1; + do { + uVar5 = *puVar8; + iVar10 = iVar10 + -1; + *puVar8 = *puVar9; + *puVar9 = uVar5; + puVar8 = puVar8 + 1; + puVar9 = puVar9 + -1; + } while (iVar10 != 0); + } + puVar7 = puVar7 + -lVar4; + bVar1 = 1 < lVar12; + lVar12 = lVar12 + -1; + } while (bVar1); + } + if (*(long *)(lVar6 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0017f9f0 (428 bytes) name=SaveRGB24 + +/* CVideoFunctions::SaveRGB24(char const*) */ + +undefined4 __thiscall CVideoFunctions::SaveRGB24(CVideoFunctions *this,char *param_1) + +{ + pthread_mutex_t *__mutex; + long lVar1; + int iVar2; + void *__dest; + undefined4 *puVar3; + char *pcVar4; + undefined4 uVar5; + ulong __n; + void *__src; + undefined2 local_90; + int local_8e; + undefined2 local_8a; + undefined2 local_88; + undefined4 local_86; + ushort local_80; + ushort local_7e; + ushort local_7a; + ushort local_78; + ushort local_76; + ushort local_74; + MStream aMStack_70 [24]; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + __mutex = (pthread_mutex_t *)(this + 0xa0); + pthread_mutex_lock(__mutex); + if ((*(int *)(this + 0x154) == 0) || (*(int *)(this + 0x158) == 0)) { + iVar2 = pthread_mutex_unlock(__mutex); + puVar3 = (undefined4 *)__errno(iVar2); + uVar5 = 0; + *puVar3 = 0xe4ae0006; + } + else { + iVar2 = *(int *)(this + 0xf0); + __src = *(void **)(this + 0x160); + __n = (ulong)(uint)(iVar2 * 4); + __dest = operator_new__(__n); + memcpy(__dest,__src,__n); + pthread_mutex_unlock(__mutex); + MStream::MStream(aMStack_70,0x100); + if (param_1 == (char *)0x0) { + GetLocalTime((_SYSTEMTIME *)&local_80); + MStream::Fmt((char *)aMStack_70,"%d-%02d-%02d %02d-%02d-%02d.bmp",(ulong)local_80, + (ulong)local_7e,(ulong)local_7a,(ulong)local_78,(ulong)local_76,(ulong)local_74); + } + else { + MStream::operator<<(aMStack_70,param_1); + } + local_8e = iVar2 * 4 + 0x36; + local_90 = 0x4d42; + local_8a = 0; + local_88 = 0; + local_86 = 0x36; + pcVar4 = (char *)MStream::Get(aMStack_70); + OFStream::OFStream((OFStream *)&local_80,pcVar4,false); + OFStream::Write((OFStream *)&local_80,&local_90,0xe,1); + OFStream::Write((OFStream *)&local_80,this + 0xfc,0x28,1); + OFStream::Write((OFStream *)&local_80,__dest,__n,1); + OFStream::~OFStream((OFStream *)&local_80); + operator_delete__(__dest); + uVar5 = 1; + MStream::~MStream(aMStack_70); + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return uVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017fbf4 (156 bytes) name=Logging + +/* mag::Logging::Logging(int) */ + +void __thiscall mag::Logging::Logging(Logging *this,int param_1) + +{ + long lVar1; + tm *ptVar2; + time_t tStack_40; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + MStream::MStream((MStream *)this,0x400); + time(&tStack_40); + ptVar2 = localtime(&tStack_40); + MStream::Fmt((char *)this,"%d.%02d.%02d %02d:%02d:%02d %s",(ulong)(ptVar2->tm_year + 0x76c), + (ulong)(ptVar2->tm_mon + 1),(ulong)(uint)ptVar2->tm_mday,(ulong)(uint)ptVar2->tm_hour + ,(ulong)(uint)ptVar2->tm_min,(ulong)(uint)ptVar2->tm_sec, + (&PTR_s_TRACE___004fa088)[param_1]); + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0017fca8 (68 bytes) name=~Logging + +/* mag::Logging::~Logging() */ + +void __thiscall mag::Logging::~Logging(Logging *this) + +{ + MStream::operator<<((MStream *)this,"\n"); + MStream::Write((MStream *)this,(__sFILE *)PTR___sF_005028b0); + fflush((FILE *)PTR___sF_005028b0); + MStream::~MStream((MStream *)this); + return; +} + + +================================================================== + +### FUNC 0017fd00 (12 bytes) name=Setfp + +/* mag::Logging::Setfp(__sFILE*) */ + +void mag::Logging::Setfp(__sFILE *param_1) + +{ + PTR___sF_005028b0 = param_1; + return; +} + + +================================================================== + +### FUNC 0017fd0c (28 bytes) name=Setfp + +/* mag::Logging::Setfp(OFStream&) */ + +void mag::Logging::Setfp(OFStream *param_1) + +{ + PTR___sF_005028b0 = (pointer_____offset_0x98___)FStream::GetRaw((FStream *)param_1); + return; +} + + +================================================================== + +### FUNC 0017fd28 (36 bytes) name=MD5Init + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* md5::MD5Init(MD5_CTX*) */ + +void md5::MD5Init(MD5_CTX *param_1) + +{ + undefined8 uVar1; + + uVar1 = _DAT_0043a030; + *(undefined8 *)(param_1 + 8) = _UNK_0043a038; + *(undefined8 *)param_1 = uVar1; + *(undefined8 *)(param_1 + 0x10) = 0x1032547698badcfe; + return; +} + + +================================================================== + +### FUNC 0017fd4c (208 bytes) name=MD5Update + +/* md5::MD5Update(MD5_CTX*, unsigned char*, unsigned int) */ + +void md5::MD5Update(MD5_CTX *param_1,uchar *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + ulong uVar3; + int iVar4; + int iVar5; + ulong __n; + + uVar1 = *(uint *)param_1; + iVar4 = *(int *)(param_1 + 4); + uVar2 = uVar1 >> 3 & 0x3f; + uVar3 = (ulong)uVar2; + iVar5 = -uVar2; + __n = (ulong)(iVar5 + 0x40U); + *(uint *)param_1 = uVar1 + param_3 * 8; + if (CARRY4(uVar1,param_3 * 8)) { + iVar4 = iVar4 + 1; + *(int *)(param_1 + 4) = iVar4; + } + *(uint *)(param_1 + 4) = iVar4 + (param_3 >> 0x1d); + if (param_3 < iVar5 + 0x40U) { + __n = 0; + } + else { + memcpy(param_1 + 0x18 + uVar3,param_2,__n); + MD5Transform((uint *)(param_1 + 8),(uchar *)(param_1 + 0x18)); + while (iVar5 + 0x80U <= param_3) { + MD5Transform((uint *)(param_1 + 8),param_2 + __n); + iVar5 = (int)__n; + __n = (ulong)(iVar5 + 0x40); + } + uVar3 = 0; + } + memcpy(param_1 + uVar3 + 0x18,param_2 + __n,(ulong)(param_3 - (int)__n)); + return; +} + + +================================================================== + +### FUNC 0017fe1c (3364 bytes) name=MD5Transform + +/* md5::MD5Transform(unsigned int*, unsigned char*) */ + +void md5::MD5Transform(uint *param_1,uchar *param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + long lVar5; + uint3 uVar6; + uint3 uVar7; + uint3 uVar8; + long lVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + int iVar19; + int iVar20; + int iVar21; + int iStack_15c; + int iStack_154; + int iStack_14c; + int iStack_144; + int iStack_13c; + int iStack_134; + int iStack_12c; + int iStack_124; + + lVar5 = tpidr_el0; + lVar9 = *(long *)(lVar5 + 0x28); + uVar15 = *(undefined8 *)param_2; + uVar4 = param_1[1]; + uVar3 = param_1[2]; + uVar6 = CONCAT12((char)((ulong)uVar15 >> 0x20),(short)uVar15) & 0xff00ff; + iVar12 = CONCAT13((char)((ulong)uVar15 >> 0x18), + CONCAT12((char)((ulong)uVar15 >> 0x10), + CONCAT11((char)((ulong)uVar15 >> 8),(char)uVar6))); + iVar19 = (int)*(undefined8 *)(param_2 + 8); + uVar16 = *(undefined8 *)(param_2 + 0x10); + uVar7 = CONCAT12((char)((ulong)uVar16 >> 0x20),(short)uVar16) & 0xff00ff; + iVar13 = CONCAT13((char)((ulong)uVar16 >> 0x18), + CONCAT12((char)((ulong)uVar16 >> 0x10), + CONCAT11((char)((ulong)uVar16 >> 8),(char)uVar7))); + iVar20 = (int)*(undefined8 *)(param_2 + 0x18); + uVar17 = *(undefined8 *)(param_2 + 0x20); + uVar8 = CONCAT12((char)((ulong)uVar17 >> 0x20),(short)uVar17) & 0xff00ff; + iVar14 = CONCAT13((char)((ulong)uVar17 >> 0x18), + CONCAT12((char)((ulong)uVar17 >> 0x10), + CONCAT11((char)((ulong)uVar17 >> 8),(char)uVar8))); + iVar21 = (int)*(undefined8 *)(param_2 + 0x28); + uVar18 = *(undefined8 *)(param_2 + 0x30); + iStack_15c = (int)(CONCAT17((char)((ulong)uVar15 >> 0x38), + CONCAT16((char)((ulong)uVar15 >> 0x30), + CONCAT15((char)((ulong)uVar15 >> 0x28), + CONCAT14((char)(uVar6 >> 0x10),iVar12)))) >> 0x20); + uVar1 = *param_1 + (param_1[3] & (uVar4 ^ 0xffffffff) | uVar3 & uVar4) + iVar12 + 0xd76aa478; + uVar1 = (uVar1 >> 0x19 | uVar1 * 0x80) + uVar4; + uVar2 = param_1[3] + iStack_15c + (uVar1 & uVar4 | uVar3 & (uVar1 ^ 0xffffffff)) + 0xe8c7b756; + uVar2 = (uVar2 >> 0x14 | uVar2 * 0x1000) + uVar1; + iStack_154 = (int)((ulong)*(undefined8 *)(param_2 + 8) >> 0x20); + uVar3 = uVar3 + iVar19 + (uVar2 & uVar1 | uVar4 & (uVar2 ^ 0xffffffff)) + 0x242070db; + uVar3 = (uVar3 >> 0xf | uVar3 * 0x20000) + uVar2; + uVar4 = uVar4 + iStack_154 + (uVar3 & uVar2 | uVar1 & (uVar3 ^ 0xffffffff)) + 0xc1bdceee; + uVar4 = (uVar4 >> 10 | uVar4 * 0x400000) + uVar3; + iStack_14c = (int)(CONCAT17((char)((ulong)uVar16 >> 0x38), + CONCAT16((char)((ulong)uVar16 >> 0x30), + CONCAT15((char)((ulong)uVar16 >> 0x28), + CONCAT14((char)(uVar7 >> 0x10),iVar13)))) >> 0x20); + uVar1 = iVar13 + uVar1 + (uVar4 & uVar3 | uVar2 & (uVar4 ^ 0xffffffff)) + 0xf57c0faf; + uVar1 = (uVar1 >> 0x19 | uVar1 * 0x80) + uVar4; + uVar2 = iStack_14c + uVar2 + (uVar1 & uVar4 | uVar3 & (uVar1 ^ 0xffffffff)) + 0x4787c62a; + uVar2 = (uVar2 >> 0x14 | uVar2 * 0x1000) + uVar1; + iStack_144 = (int)((ulong)*(undefined8 *)(param_2 + 0x18) >> 0x20); + uVar3 = iVar20 + uVar3 + (uVar2 & uVar1 | uVar4 & (uVar2 ^ 0xffffffff)) + 0xa8304613; + uVar3 = (uVar3 >> 0xf | uVar3 * 0x20000) + uVar2; + uVar4 = iStack_144 + uVar4 + (uVar3 & uVar2 | uVar1 & (uVar3 ^ 0xffffffff)) + 0xfd469501; + uVar4 = (uVar4 >> 10 | uVar4 * 0x400000) + uVar3; + iStack_13c = (int)(CONCAT17((char)((ulong)uVar17 >> 0x38), + CONCAT16((char)((ulong)uVar17 >> 0x30), + CONCAT15((char)((ulong)uVar17 >> 0x28), + CONCAT14((char)(uVar8 >> 0x10),iVar14)))) >> 0x20); + uVar6 = CONCAT12((char)((ulong)uVar18 >> 0x20),(short)uVar18) & 0xff00ff; + uVar1 = iVar14 + uVar1 + (uVar4 & uVar3 | uVar2 & (uVar4 ^ 0xffffffff)) + 0x698098d8; + uVar1 = (uVar1 >> 0x19 | uVar1 * 0x80) + uVar4; + uVar2 = iStack_13c + uVar2 + (uVar1 & uVar4 | uVar3 & (uVar1 ^ 0xffffffff)) + 0x8b44f7af; + uVar2 = (uVar2 >> 0x14 | uVar2 * 0x1000) + uVar1; + iStack_134 = (int)((ulong)*(undefined8 *)(param_2 + 0x28) >> 0x20); + uVar3 = (iVar21 + uVar3 + (uVar2 & uVar1 | uVar4 & (uVar2 ^ 0xffffffff))) - 0xa44f; + uVar3 = (uVar3 >> 0xf | uVar3 * 0x20000) + uVar2; + uVar4 = iStack_134 + uVar4 + (uVar3 & uVar2 | uVar1 & (uVar3 ^ 0xffffffff)) + 0x895cd7be; + iVar10 = CONCAT13((char)((ulong)uVar18 >> 0x18), + CONCAT12((char)((ulong)uVar18 >> 0x10), + CONCAT11((char)((ulong)uVar18 >> 8),(char)uVar6))); + iVar11 = (int)*(undefined8 *)(param_2 + 0x38); + uVar4 = (uVar4 >> 10 | uVar4 * 0x400000) + uVar3; + iStack_12c = (int)(CONCAT17((char)((ulong)uVar18 >> 0x38), + CONCAT16((char)((ulong)uVar18 >> 0x30), + CONCAT15((char)((ulong)uVar18 >> 0x28), + CONCAT14((char)(uVar6 >> 0x10),iVar10)))) >> 0x20); + uVar1 = iVar10 + uVar1 + (uVar4 & uVar3 | uVar2 & (uVar4 ^ 0xffffffff)) + 0x6b901122; + uVar1 = (uVar1 >> 0x19 | uVar1 * 0x80) + uVar4; + uVar2 = iStack_12c + uVar2 + (uVar1 & uVar4 | uVar3 & (uVar1 ^ 0xffffffff)) + 0xfd987193; + uVar2 = (uVar2 >> 0x14 | uVar2 * 0x1000) + uVar1; + iStack_124 = (int)((ulong)*(undefined8 *)(param_2 + 0x38) >> 0x20); + uVar3 = iVar11 + uVar3 + (uVar2 & uVar1 | uVar4 & (uVar2 ^ 0xffffffff)) + 0xa679438e; + uVar3 = (uVar3 >> 0xf | uVar3 * 0x20000) + uVar2; + uVar4 = iStack_124 + uVar4 + (uVar3 & uVar2 | uVar1 & (uVar3 ^ 0xffffffff)) + 0x49b40821; + uVar4 = (uVar4 >> 10 | uVar4 * 0x400000) + uVar3; + uVar1 = iStack_15c + uVar1 + (uVar4 & uVar2 | uVar3 & (uVar2 ^ 0xffffffff)) + 0xf61e2562; + uVar1 = (uVar1 >> 0x1b | uVar1 * 0x20) + uVar4; + uVar2 = iVar20 + uVar2 + (uVar1 & uVar3 | uVar4 & (uVar3 ^ 0xffffffff)) + 0xc040b340; + uVar2 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar1; + uVar3 = iStack_134 + uVar3 + (uVar2 & uVar4 | uVar1 & (uVar4 ^ 0xffffffff)) + 0x265e5a51; + uVar3 = (uVar3 >> 0x12 | uVar3 * 0x4000) + uVar2; + uVar4 = iVar12 + uVar4 + (uVar3 & uVar1 | uVar2 & (uVar1 ^ 0xffffffff)) + 0xe9b6c7aa; + uVar4 = (uVar4 >> 0xc | uVar4 * 0x100000) + uVar3; + uVar1 = iStack_14c + uVar1 + (uVar4 & uVar2 | uVar3 & (uVar2 ^ 0xffffffff)) + 0xd62f105d; + uVar1 = (uVar1 >> 0x1b | uVar1 * 0x20) + uVar4; + uVar2 = iVar21 + uVar2 + (uVar1 & uVar3 | uVar4 & (uVar3 ^ 0xffffffff)) + 0x2441453; + uVar2 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar1; + uVar3 = iStack_124 + uVar3 + (uVar2 & uVar4 | uVar1 & (uVar4 ^ 0xffffffff)) + 0xd8a1e681; + uVar3 = (uVar3 >> 0x12 | uVar3 * 0x4000) + uVar2; + uVar4 = iVar13 + uVar4 + (uVar3 & uVar1 | uVar2 & (uVar1 ^ 0xffffffff)) + 0xe7d3fbc8; + uVar4 = (uVar4 >> 0xc | uVar4 * 0x100000) + uVar3; + uVar1 = iStack_13c + uVar1 + (uVar4 & uVar2 | uVar3 & (uVar2 ^ 0xffffffff)) + 0x21e1cde6; + uVar1 = (uVar1 >> 0x1b | uVar1 * 0x20) + uVar4; + uVar2 = iVar11 + uVar2 + (uVar1 & uVar3 | uVar4 & (uVar3 ^ 0xffffffff)) + 0xc33707d6; + uVar2 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar1; + uVar3 = iStack_154 + uVar3 + (uVar2 & uVar4 | uVar1 & (uVar4 ^ 0xffffffff)) + 0xf4d50d87; + uVar3 = (uVar3 >> 0x12 | uVar3 * 0x4000) + uVar2; + uVar4 = iVar14 + uVar4 + (uVar3 & uVar1 | uVar2 & (uVar1 ^ 0xffffffff)) + 0x455a14ed; + uVar4 = (uVar4 >> 0xc | uVar4 * 0x100000) + uVar3; + uVar1 = iStack_12c + uVar1 + (uVar4 & uVar2 | uVar3 & (uVar2 ^ 0xffffffff)) + 0xa9e3e905; + uVar1 = (uVar1 >> 0x1b | uVar1 * 0x20) + uVar4; + uVar2 = iVar19 + uVar2 + (uVar1 & uVar3 | uVar4 & (uVar3 ^ 0xffffffff)) + 0xfcefa3f8; + uVar2 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar1; + uVar3 = iStack_144 + uVar3 + (uVar2 & uVar4 | uVar1 & (uVar4 ^ 0xffffffff)) + 0x676f02d9; + uVar3 = (uVar3 >> 0x12 | uVar3 * 0x4000) + uVar2; + uVar4 = iVar10 + uVar4 + (uVar3 & uVar1 | uVar2 & (uVar1 ^ 0xffffffff)) + 0x8d2a4c8a; + uVar4 = (uVar4 >> 0xc | uVar4 * 0x100000) + uVar3; + uVar1 = (iStack_14c + uVar1 + (uVar3 ^ uVar2 ^ uVar4)) - 0x5c6be; + uVar1 = (uVar1 >> 0x1c | uVar1 * 0x10) + uVar4; + uVar2 = iVar14 + uVar2 + (uVar4 ^ uVar3 ^ uVar1) + 0x8771f681; + uVar2 = (uVar2 >> 0x15 | uVar2 * 0x800) + uVar1; + uVar3 = iStack_134 + uVar3 + (uVar1 ^ uVar4 ^ uVar2) + 0x6d9d6122; + uVar3 = (uVar3 >> 0x10 | uVar3 * 0x10000) + uVar2; + uVar4 = iVar11 + uVar4 + (uVar2 ^ uVar1 ^ uVar3) + 0xfde5380c; + uVar4 = (uVar4 >> 9 | uVar4 * 0x800000) + uVar3; + uVar1 = iStack_15c + uVar1 + (uVar3 ^ uVar2 ^ uVar4) + 0xa4beea44; + uVar1 = (uVar1 >> 0x1c | uVar1 * 0x10) + uVar4; + uVar2 = iVar13 + uVar2 + (uVar4 ^ uVar3 ^ uVar1) + 0x4bdecfa9; + uVar2 = (uVar2 >> 0x15 | uVar2 * 0x800) + uVar1; + uVar3 = iStack_144 + uVar3 + (uVar1 ^ uVar4 ^ uVar2) + 0xf6bb4b60; + uVar3 = (uVar3 >> 0x10 | uVar3 * 0x10000) + uVar2; + uVar4 = iVar21 + uVar4 + (uVar2 ^ uVar1 ^ uVar3) + 0xbebfbc70; + uVar4 = (uVar4 >> 9 | uVar4 * 0x800000) + uVar3; + uVar1 = iStack_12c + uVar1 + (uVar3 ^ uVar2 ^ uVar4) + 0x289b7ec6; + uVar1 = (uVar1 >> 0x1c | uVar1 * 0x10) + uVar4; + uVar2 = iVar12 + uVar2 + (uVar4 ^ uVar3 ^ uVar1) + 0xeaa127fa; + uVar2 = (uVar2 >> 0x15 | uVar2 * 0x800) + uVar1; + uVar3 = iStack_154 + uVar3 + (uVar1 ^ uVar4 ^ uVar2) + 0xd4ef3085; + uVar3 = (uVar3 >> 0x10 | uVar3 * 0x10000) + uVar2; + uVar4 = iVar20 + uVar4 + (uVar2 ^ uVar1 ^ uVar3) + 0x4881d05; + uVar4 = (uVar4 >> 9 | uVar4 * 0x800000) + uVar3; + uVar1 = iStack_13c + uVar1 + (uVar3 ^ uVar2 ^ uVar4) + 0xd9d4d039; + uVar1 = (uVar1 >> 0x1c | uVar1 * 0x10) + uVar4; + uVar2 = iVar10 + uVar2 + (uVar4 ^ uVar3 ^ uVar1) + 0xe6db99e5; + uVar2 = (uVar2 >> 0x15 | uVar2 * 0x800) + uVar1; + uVar3 = iStack_124 + uVar3 + (uVar1 ^ uVar4 ^ uVar2) + 0x1fa27cf8; + uVar3 = (uVar3 >> 0x10 | uVar3 * 0x10000) + uVar2; + uVar4 = iVar19 + uVar4 + (uVar2 ^ uVar1 ^ uVar3) + 0xc4ac5665; + uVar4 = (uVar4 >> 9 | uVar4 * 0x800000) + uVar3; + uVar1 = iVar12 + uVar1 + ((uVar4 | uVar2 ^ 0xffffffff) ^ uVar3) + 0xf4292244; + uVar1 = (uVar1 >> 0x1a | uVar1 * 0x40) + uVar4; + uVar2 = iStack_144 + uVar2 + ((uVar1 | uVar3 ^ 0xffffffff) ^ uVar4) + 0x432aff97; + uVar2 = (uVar2 >> 0x16 | uVar2 * 0x400) + uVar1; + uVar3 = iVar11 + uVar3 + ((uVar2 | uVar4 ^ 0xffffffff) ^ uVar1) + 0xab9423a7; + uVar3 = (uVar3 >> 0x11 | uVar3 * 0x8000) + uVar2; + uVar4 = iStack_14c + uVar4 + ((uVar3 | uVar1 ^ 0xffffffff) ^ uVar2) + 0xfc93a039; + uVar4 = (uVar4 >> 0xb | uVar4 * 0x200000) + uVar3; + uVar1 = iVar10 + uVar1 + ((uVar4 | uVar2 ^ 0xffffffff) ^ uVar3) + 0x655b59c3; + uVar1 = (uVar1 >> 0x1a | uVar1 * 0x40) + uVar4; + uVar2 = iStack_154 + uVar2 + ((uVar1 | uVar3 ^ 0xffffffff) ^ uVar4) + 0x8f0ccc92; + uVar2 = (uVar2 >> 0x16 | uVar2 * 0x400) + uVar1; + uVar3 = (iVar21 + uVar3 + ((uVar2 | uVar4 ^ 0xffffffff) ^ uVar1)) - 0x100b83; + uVar3 = (uVar3 >> 0x11 | uVar3 * 0x8000) + uVar2; + uVar4 = iStack_15c + uVar4 + ((uVar3 | uVar1 ^ 0xffffffff) ^ uVar2) + 0x85845dd1; + uVar4 = (uVar4 >> 0xb | uVar4 * 0x200000) + uVar3; + uVar1 = iVar14 + uVar1 + ((uVar4 | uVar2 ^ 0xffffffff) ^ uVar3) + 0x6fa87e4f; + uVar1 = (uVar1 >> 0x1a | uVar1 * 0x40) + uVar4; + uVar2 = iStack_124 + uVar2 + ((uVar1 | uVar3 ^ 0xffffffff) ^ uVar4) + 0xfe2ce6e0; + uVar2 = (uVar2 >> 0x16 | uVar2 * 0x400) + uVar1; + uVar3 = iVar20 + uVar3 + ((uVar2 | uVar4 ^ 0xffffffff) ^ uVar1) + 0xa3014314; + uVar3 = (uVar3 >> 0x11 | uVar3 * 0x8000) + uVar2; + uVar4 = iStack_12c + uVar4 + ((uVar3 | uVar1 ^ 0xffffffff) ^ uVar2) + 0x4e0811a1; + uVar4 = (uVar4 >> 0xb | uVar4 * 0x200000) + uVar3; + uVar1 = iVar13 + uVar1 + ((uVar4 | uVar2 ^ 0xffffffff) ^ uVar3) + 0xf7537e82; + uVar1 = (uVar1 >> 0x1a | uVar1 * 0x40) + uVar4; + uVar2 = iStack_134 + uVar2 + ((uVar1 | uVar3 ^ 0xffffffff) ^ uVar4) + 0xbd3af235; + uVar2 = (uVar2 >> 0x16 | uVar2 * 0x400) + uVar1; + uVar3 = iVar19 + uVar3 + ((uVar2 | uVar4 ^ 0xffffffff) ^ uVar1) + 0x2ad7d2bb; + uVar3 = (uVar3 >> 0x11 | uVar3 * 0x8000) + uVar2; + param_1[2] = uVar3 + param_1[2]; + param_1[3] = uVar2 + param_1[3]; + uVar2 = iStack_13c + uVar4 + ((uVar3 | uVar1 ^ 0xffffffff) ^ uVar2) + 0xeb86d391; + *param_1 = uVar1 + *param_1; + param_1[1] = uVar3 + param_1[1] + (uVar2 >> 0xb | uVar2 * 0x200000); + if (*(long *)(lVar5 + 0x28) == lVar9) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00180b40 (592 bytes) name=MD5Final + +/* md5::MD5Final(MD5_CTX*) */ + +void md5::MD5Final(MD5_CTX *param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + uint uVar5; + long lVar6; + undefined *puVar7; + ulong uVar8; + int iVar9; + uint uVar10; + int iVar11; + ulong uVar12; + undefined1 local_60 [4]; + undefined1 local_5c; + undefined1 local_5b; + undefined1 local_5a; + undefined1 local_59; + long local_58; + + lVar6 = tpidr_el0; + local_58 = *(long *)(lVar6 + 0x28); + iVar11 = 0x38; + uVar4 = *(uint *)param_1; + local_60[1] = (undefined1)(uVar4 >> 8); + local_60[0] = (undefined1)uVar4; + local_60[2] = (undefined1)(uVar4 >> 0x10); + local_60[3] = (undefined1)(uVar4 >> 0x18); + iVar9 = *(int *)(param_1 + 4); + uVar10 = uVar4 >> 3 & 0x3f; + uVar8 = (ulong)uVar10; + if (0x37 < uVar10) { + iVar11 = 0x78; + } + local_5b = (undefined1)((uint)iVar9 >> 8); + local_5a = (undefined1)((uint)iVar9 >> 0x10); + local_59 = (undefined1)((uint)iVar9 >> 0x18); + uVar5 = iVar11 - uVar10; + iVar11 = -uVar10; + uVar10 = iVar11 + 0x40; + uVar12 = (ulong)uVar10; + local_5c = (undefined1)iVar9; + *(uint *)param_1 = uVar4 + uVar5 * 8; + if (CARRY4(uVar4,uVar5 * 8)) { + iVar9 = iVar9 + 1; + *(int *)(param_1 + 4) = iVar9; + } + *(uint *)(param_1 + 4) = iVar9 + (uVar5 >> 0x1d); + puVar7 = PTR_PADDING_00501a78; + if (uVar5 < uVar10) { + uVar10 = 0; + } + else { + memcpy(param_1 + 0x18 + uVar8,PTR_PADDING_00501a78,uVar12); + MD5Transform((uint *)(param_1 + 8),(uchar *)(param_1 + 0x18)); + while (iVar11 + 0x80U <= uVar5) { + MD5Transform((uint *)(param_1 + 8),puVar7 + uVar12); + iVar11 = (int)uVar12; + uVar10 = iVar11 + 0x40; + uVar12 = (ulong)uVar10; + } + uVar8 = 0; + } + memcpy(param_1 + uVar8 + 0x18,PTR_PADDING_00501a78 + uVar10,(ulong)(uVar5 - uVar10)); + uVar4 = *(uint *)param_1; + iVar9 = *(int *)(param_1 + 4); + uVar10 = uVar4 >> 3 & 0x3f; + uVar8 = (ulong)uVar10; + uVar10 = 0x40 - uVar10; + uVar12 = (ulong)uVar10; + *(uint *)param_1 = uVar4 + 0x40; + if (0xffffffbf < uVar4) { + iVar9 = iVar9 + 1; + *(int *)(param_1 + 4) = iVar9; + } + *(int *)(param_1 + 4) = iVar9; + if (uVar10 < 9) { + memcpy(param_1 + 0x18 + uVar8,local_60,uVar12); + MD5Transform((uint *)(param_1 + 8),(uchar *)(param_1 + 0x18)); + uVar8 = 0; + } + else { + uVar12 = 0; + } + memcpy(param_1 + uVar8 + 0x18,local_60 + uVar12,(ulong)(8 - (int)uVar12)); + uVar1 = *(undefined4 *)(param_1 + 8); + uVar2 = *(undefined4 *)(param_1 + 0xc); + param_1[0x58] = SUB41(uVar1,0); + param_1[0x59] = SUB41((uint)uVar1 >> 8,0); + param_1[0x5a] = SUB41((uint)uVar1 >> 0x10,0); + param_1[0x5b] = SUB41((uint)uVar1 >> 0x18,0); + param_1[0x5d] = SUB41((uint)uVar2 >> 8,0); + param_1[0x5e] = SUB41((uint)uVar2 >> 0x10,0); + uVar1 = *(undefined4 *)(param_1 + 0x10); + uVar3 = *(undefined4 *)(param_1 + 0x14); + param_1[0x5c] = SUB41(uVar2,0); + param_1[0x5f] = SUB41((uint)uVar2 >> 0x18,0); + param_1[0x61] = SUB41((uint)uVar1 >> 8,0); + param_1[0x60] = SUB41(uVar1,0); + param_1[99] = SUB41((uint)uVar1 >> 0x18,0); + param_1[0x62] = SUB41((uint)uVar1 >> 0x10,0); + param_1[0x65] = SUB41((uint)uVar3 >> 8,0); + param_1[100] = SUB41(uVar3,0); + param_1[0x66] = SUB41((uint)uVar3 >> 0x10,0); + param_1[0x67] = SUB41((uint)uVar3 >> 0x18,0); + if (*(long *)(lVar6 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 00180d90 (84 bytes) name=MD5Encode + +/* md5::MD5Encode(unsigned char*, unsigned int*, unsigned int) */ + +void md5::MD5Encode(uchar *param_1,uint *param_2,uint param_3) + +{ + uint *puVar1; + uint uVar2; + uint uVar3; + uint uVar4; + + if (param_3 != 0) { + uVar3 = 0; + uVar4 = 0; + do { + puVar1 = param_2 + uVar4; + uVar4 = uVar4 + 1; + param_1[uVar3] = (uchar)*puVar1; + param_1[uVar3 + 1] = (uchar)(*puVar1 >> 8); + param_1[uVar3 + 2] = (uchar)*(undefined2 *)((long)puVar1 + 2); + uVar2 = uVar3 + 3; + uVar3 = uVar3 + 4; + param_1[uVar2] = *(uchar *)((long)puVar1 + 3); + } while (uVar3 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00180de4 (76 bytes) name=MD5Decode + +/* md5::MD5Decode(unsigned int*, unsigned char*, unsigned int) */ + +void md5::MD5Decode(uint *param_1,uchar *param_2,uint param_3) + +{ + ulong uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + + if (param_3 != 0) { + uVar5 = 0; + uVar6 = 0; + do { + uVar2 = uVar5 + 1; + uVar1 = (ulong)uVar5; + uVar3 = uVar5 + 2; + uVar4 = uVar5 + 3; + uVar5 = uVar5 + 4; + param_1[uVar6] = + CONCAT13(param_2[uVar4],CONCAT12(param_2[uVar3],CONCAT11(param_2[uVar2],param_2[uVar1]))) + ; + uVar6 = uVar6 + 1; + } while (uVar5 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00180e30 (72 bytes) name=wait + +/* Condition::wait() */ + +int __thiscall Condition::wait(Condition *this) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)this); + while (this[0x58] == (Condition)0x0) { + pthread_cond_wait((pthread_cond_t *)(this + 0x28),(pthread_mutex_t *)this); + } + this[0x58] = (Condition)0x0; + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)this); + return iVar1; +} + + +================================================================== + +### FUNC 00180e94 (268 bytes) name=waitForMsecs + +/* Condition::waitForMsecs(int) */ + +undefined4 __thiscall Condition::waitForMsecs(Condition *this,int param_1) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + timespec local_58; + timeval local_48; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + gettimeofday(&local_48,(__timezone_ptr_t)0x0); + local_58.tv_sec = local_48.tv_sec + param_1 / 1000; + local_58.tv_nsec = local_48.tv_usec * 1000 + (long)((param_1 % 1000) * 1000000); + if (1000000000 < local_58.tv_nsec) { + local_58.tv_sec = local_58.tv_sec + 1; + local_58.tv_nsec = (ulong)local_58.tv_nsec % 1000000000; + } + pthread_mutex_lock((pthread_mutex_t *)this); + do { + if (this[0x58] != (Condition)0x0) { + uVar3 = 0; + this[0x58] = (Condition)0x0; + goto LAB_00180f6c; + } + iVar2 = pthread_cond_timedwait + ((pthread_cond_t *)(this + 0x28),(pthread_mutex_t *)this,&local_58); + } while (iVar2 != 0x6e); + uVar3 = 1; +LAB_00180f6c: + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)this); + if (*(long *)(lVar1 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar2); + } + return uVar3; +} + + +================================================================== + +### FUNC 00180fbc (124 bytes) name=CMagDevice + +/* CMagDevice::CMagDevice() */ + +void __thiscall CMagDevice::CMagDevice(CMagDevice *this) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + + *(undefined8 *)this = 0xffffffff00000000; + memset(this + 8,0,0x50); + iVar4 = 1; + do { + iVar2 = MAG_IsChannelAvailable(iVar4); + if (iVar2 == 0) { + MAG_NewChannel(iVar4); + *(int *)(this + 4) = iVar4; + goto LAB_00181010; + } + bVar1 = iVar4 < 0x80; + iVar4 = iVar4 + 1; + } while (bVar1); + iVar4 = *(int *)(this + 4); +LAB_00181010: + if (iVar4 - 1U < 0x80) { + uVar3 = MAG_Initialize(iVar4,0); + *(undefined4 *)this = uVar3; + } + return; +} + + +================================================================== + +### FUNC 00181038 (144 bytes) name=Initialize + +/* CMagDevice::Initialize() */ + +ulong __thiscall CMagDevice::Initialize(CMagDevice *this) + +{ + bool bVar1; + int iVar2; + ulong uVar3; + int iVar4; + + if (*(int *)this == 0) { + iVar4 = *(int *)(this + 4); + if (0x7f < iVar4 - 1U) { + iVar4 = 1; + do { + iVar2 = MAG_IsChannelAvailable(iVar4); + if (iVar2 == 0) { + MAG_NewChannel(iVar4); + *(int *)(this + 4) = iVar4; + goto LAB_00181098; + } + bVar1 = iVar4 < 0x80; + iVar4 = iVar4 + 1; + } while (bVar1); + iVar4 = *(int *)(this + 4); + } +LAB_00181098: + if (iVar4 - 1U < 0x80) { + uVar3 = MAG_Initialize(iVar4,0); + *(int *)this = (int)uVar3; + } + else { + uVar3 = (ulong)*(uint *)this; + } + } + else { + uVar3 = 1; + } + return uVar3; +} + + +================================================================== + +### FUNC 001810c8 (120 bytes) name=~CMagDevice + +/* CMagDevice::~CMagDevice() */ + +void __thiscall CMagDevice::~CMagDevice(CMagDevice *this) + +{ + int iVar1; + + iVar1 = MAG_IsProcessingImage(*(undefined4 *)(this + 4)); + if (iVar1 != 0) { + MAG_StopProcessImage(*(undefined4 *)(this + 4)); + } + iVar1 = MAG_IsLinked(*(undefined4 *)(this + 4)); + if (iVar1 != 0) { + MAG_DisLinkCamera(*(undefined4 *)(this + 4)); + } + iVar1 = MAG_IsInitialized(*(undefined4 *)(this + 4)); + if (iVar1 != 0) { + MAG_Free(*(undefined4 *)(this + 4)); + *(undefined4 *)this = 0; + } + iVar1 = MAG_IsChannelAvailable(*(undefined4 *)(this + 4)); + if (iVar1 != 0) { + MAG_DelChannel(*(undefined4 *)(this + 4)); + *(undefined4 *)(this + 4) = 0xffffffff; + } + return; +} + + +================================================================== + +### FUNC 00181144 (8 bytes) name=DisLinkCamera + +/* CMagDevice::DisLinkCamera() */ + +void __thiscall CMagDevice::DisLinkCamera(CMagDevice *this) + +{ + MAG_DisLinkCamera(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 0018114c (8 bytes) name=GetCamInfo + +/* CMagDevice::GetCamInfo() */ + +CMagDevice * __thiscall CMagDevice::GetCamInfo(CMagDevice *this) + +{ + return this + 8; +} + + +================================================================== + +### FUNC 00181154 (8 bytes) name=IsLinked + +/* CMagDevice::IsLinked() */ + +void __thiscall CMagDevice::IsLinked(CMagDevice *this) + +{ + MAG_IsLinked(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 0018115c (60 bytes) name=LinkCamera + +/* CMagDevice::LinkCamera(unsigned int) */ + +undefined8 CMagDevice::LinkCamera(uint param_1) + +{ + ulong uVar1; + undefined8 uVar2; + + uVar1 = (ulong)param_1; + uVar2 = MAG_LinkCamera(*(undefined4 *)(uVar1 + 4)); + if ((int)uVar2 != 0) { + MAG_GetCamInfo(*(undefined4 *)(uVar1 + 4),uVar1 + 8,0x50); + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### FUNC 00181198 (8 bytes) name=TriggerFFC + +/* CMagDevice::TriggerFFC() */ + +void __thiscall CMagDevice::TriggerFFC(CMagDevice *this) + +{ + MAG_TriggerFFC(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001811a0 (8 bytes) name=IsProcessingImage + +/* CMagDevice::IsProcessingImage() */ + +void __thiscall CMagDevice::IsProcessingImage(CMagDevice *this) + +{ + MAG_IsProcessingImage(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001811a8 (8 bytes) name=PrepareProcessImage + +/* CMagDevice::PrepareProcessImage(void (*)(unsigned int, int, int, void*), void*) */ + +void CMagDevice::PrepareProcessImage(_func_void_uint_int_int_void_ptr *param_1,void *param_2) + +{ + MAG_PrepareProcessImage(*(undefined4 *)(param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001811b0 (168 bytes) name=StartProcessImage + +/* CMagDevice::StartProcessImage(void (*)(unsigned int, unsigned int, unsigned int, void*), int, + int, void*) */ + +void CMagDevice::StartProcessImage + (_func_void_uint_uint_uint_void_ptr *param_1,int param_2,int param_3,void *param_4) + +{ + long lVar1; + int iVar2; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + uint local_30; + int local_2c; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + local_30 = param_3 & 0xfffffffc; + local_40 = *(undefined4 *)(param_1 + 8); + if ((param_3 & 0xfffffffcU) == 0) { + local_30 = 4; + } + local_2c = (int)param_4; + local_3c = *(undefined4 *)(param_1 + 0xc); + if (local_2c == 0) { + local_2c = 4; + } + local_38 = *(undefined4 *)(param_1 + 0x48); + local_34 = *(undefined4 *)(param_1 + 0x4c); + iVar2 = MAG_StartProcessImage(*(undefined4 *)(param_1 + 4),&local_40,param_2,2); + if (iVar2 != 0) { + *(uint *)(param_1 + 0x50) = local_30; + *(int *)(param_1 + 0x54) = local_2c; + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00181258 (8 bytes) name=WillStartImmediately + +/* CMagDevice::WillStartImmediately() */ + +void __thiscall CMagDevice::WillStartImmediately(CMagDevice *this) + +{ + MAG_WillStartImmediately(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 00181260 (8 bytes) name=StopProcessImage + +/* CMagDevice::StopProcessImage() */ + +void __thiscall CMagDevice::StopProcessImage(CMagDevice *this) + +{ + MAG_StopProcessImage(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 00181268 (8 bytes) name=Pause + +/* CMagDevice::Pause() */ + +void __thiscall CMagDevice::Pause(CMagDevice *this) + +{ + MAG_Pause(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 00181270 (8 bytes) name=Resume + +/* CMagDevice::Resume() */ + +void __thiscall CMagDevice::Resume(CMagDevice *this) + +{ + MAG_Resume(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 00181278 (8 bytes) name=IsPause + +/* CMagDevice::IsPause() */ + +void __thiscall CMagDevice::IsPause(CMagDevice *this) + +{ + MAG_IsPause(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 00181280 (8 bytes) name=SetColorPalette + +/* CMagDevice::SetColorPalette(ColorPalette) */ + +void CMagDevice::SetColorPalette(long param_1) + +{ + MAG_SetColorPalette(*(undefined4 *)(param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 00181288 (8 bytes) name=SetSubsectionEnlargePara + +/* CMagDevice::SetSubsectionEnlargePara(int, int, unsigned char, unsigned char) */ + +void CMagDevice::SetSubsectionEnlargePara(int param_1,int param_2,uchar param_3,uchar param_4) + +{ + MAG_SetSubsectionEnlargePara(*(undefined4 *)((ulong)(uint)param_1 + 4),param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00181290 (8 bytes) name=SetIsothermalPara + +/* CMagDevice::SetIsothermalPara(int, int) */ + +void CMagDevice::SetIsothermalPara(int param_1,int param_2) + +{ + MAG_SetIsothermalPara(*(undefined4 *)((ulong)(uint)param_1 + 4),param_2); + return; +} + + +================================================================== + +### FUNC 00181298 (8 bytes) name=SetAutoEnlargePara + +/* CMagDevice::SetAutoEnlargePara(unsigned int, int, int) */ + +void CMagDevice::SetAutoEnlargePara(uint param_1,int param_2,int param_3) + +{ + MAG_SetAutoEnlargePara(*(undefined4 *)((ulong)param_1 + 4),param_2,param_3); + return; +} + + +================================================================== + +### FUNC 001812a0 (8 bytes) name=SetEXLevel + +/* CMagDevice::SetEXLevel(EX, int, int) */ + +void CMagDevice::SetEXLevel(long param_1) + +{ + MAG_SetEXLevel(*(undefined4 *)(param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001812a8 (8 bytes) name=GetEXLevel + +/* CMagDevice::GetEXLevel() */ + +void __thiscall CMagDevice::GetEXLevel(CMagDevice *this) + +{ + MAG_GetEXLevel(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001812b0 (8 bytes) name=SetDetailEnhancement + +/* CMagDevice::SetDetailEnhancement(int, int) */ + +void CMagDevice::SetDetailEnhancement(int param_1,int param_2) + +{ + MAG_SetDetailEnhancement(*(undefined4 *)((ulong)(uint)param_1 + 4),param_2); + return; +} + + +================================================================== + +### FUNC 001812b8 (8 bytes) name=GetFixPara + +/* CMagDevice::GetFixPara(struct_FixPara*) */ + +void CMagDevice::GetFixPara(struct_FixPara *param_1) + +{ + MAG_GetFixPara(*(undefined4 *)(param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001812c0 (12 bytes) name=SetFixPara + +/* CMagDevice::SetFixPara(struct_FixPara const*) */ + +void __thiscall CMagDevice::SetFixPara(CMagDevice *this,struct_FixPara *param_1) + +{ + MAG_SetFixPara(*(undefined4 *)(this + 4),param_1,0); + return; +} + + +================================================================== + +### FUNC 001812cc (8 bytes) name=GetChannelIndex + +/* CMagDevice::GetChannelIndex() */ + +undefined4 __thiscall CMagDevice::GetChannelIndex(CMagDevice *this) + +{ + return *(undefined4 *)(this + 4); +} + + +================================================================== + +### FUNC 001812d4 (8 bytes) name=GetOutputBMPdata + +/* CMagDevice::GetOutputBMPdata(unsigned char const**, tagBITMAPINFO const**) */ + +void CMagDevice::GetOutputBMPdata(uchar **param_1,tagBITMAPINFO **param_2) + +{ + MAG_GetOutputBMPdata(*(undefined4 *)((long)param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001812dc (8 bytes) name=GetOutputColorBardata + +/* CMagDevice::GetOutputColorBardata(unsigned char const**, tagBITMAPINFO const**) */ + +void CMagDevice::GetOutputColorBardata(uchar **param_1,tagBITMAPINFO **param_2) + +{ + MAG_GetOutputColorBardata(*(undefined4 *)((long)param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001812e4 (8 bytes) name=GetOutputRawData + +/* CMagDevice::GetOutputRawData() */ + +void __thiscall CMagDevice::GetOutputRawData(CMagDevice *this) + +{ + MAG_GetOutputRawData(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001812ec (8 bytes) name=GetFrameStatisticalData + +/* CMagDevice::GetFrameStatisticalData() */ + +void __thiscall CMagDevice::GetFrameStatisticalData(CMagDevice *this) + +{ + MAG_GetFrameStatisticalData(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001812f4 (8 bytes) name=GetRemoteInfo + +/* CMagDevice::GetRemoteInfo() */ + +void __thiscall CMagDevice::GetRemoteInfo(CMagDevice *this) + +{ + MAG_GetRemoteInfo(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001812fc (8 bytes) name=FixTemperature + +/* CMagDevice::FixTemperature(int, float, unsigned int, unsigned int) */ + +void CMagDevice::FixTemperature(int param_1,float param_2,uint param_3,uint param_4) + +{ + MAG_FixTemperature(*(undefined4 *)((ulong)(uint)param_1 + 4),param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00181304 (8 bytes) name=FixTemperature + +/* CMagDevice::FixTemperature(int, float, unsigned int) */ + +void CMagDevice::FixTemperature(int param_1,float param_2,uint param_3) + +{ + MAG_FixTemperature2(*(undefined4 *)((ulong)(uint)param_1 + 4),param_3); + return; +} + + +================================================================== + +### FUNC 0018130c (8 bytes) name=GetTemperatureData + +/* CMagDevice::GetTemperatureData(int*, unsigned int, int) */ + +void CMagDevice::GetTemperatureData(int *param_1,uint param_2,int param_3) + +{ + MAG_GetTemperatureData(param_1[1],param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00181314 (8 bytes) name=GetTemperatureData_Raw + +/* CMagDevice::GetTemperatureData_Raw(int*, unsigned int, int) */ + +void CMagDevice::GetTemperatureData_Raw(int *param_1,uint param_2,int param_3) + +{ + MAG_GetTemperatureData_Raw(param_1[1],param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0018131c (8 bytes) name=GetTemperatureProbe + +/* CMagDevice::GetTemperatureProbe(unsigned int, unsigned int, unsigned int) */ + +void CMagDevice::GetTemperatureProbe(uint param_1,uint param_2,uint param_3) + +{ + MAG_GetTemperatureProbe(*(undefined4 *)((ulong)param_1 + 4),param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00181324 (8 bytes) name=GetTemperatureProbe + +/* CMagDevice::GetTemperatureProbe(unsigned int, unsigned int) */ + +void CMagDevice::GetTemperatureProbe(uint param_1,uint param_2) + +{ + MAG_GetTemperatureProbe2(*(undefined4 *)((ulong)param_1 + 4),param_2); + return; +} + + +================================================================== + +### FUNC 0018132c (8 bytes) name=GetLineTemperatureInfo + +/* CMagDevice::GetLineTemperatureInfo(int*, unsigned int, int*, unsigned int, unsigned int, unsigned + int, unsigned int) */ + +void CMagDevice::GetLineTemperatureInfo + (int *param_1,uint param_2,int *param_3,uint param_4,uint param_5,uint param_6, + uint param_7) + +{ + MAG_GetLineTemperatureInfo(param_1[1],param_2,param_3,param_4,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 00181334 (8 bytes) name=GetRectTemperatureInfo + +/* CMagDevice::GetRectTemperatureInfo(unsigned int, unsigned int, unsigned int, unsigned int, int*) + */ + +void CMagDevice::GetRectTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,int *param_5) + +{ + MAG_GetRectTemperatureInfo(*(undefined4 *)((ulong)param_1 + 4),param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0018133c (8 bytes) name=GetEllipseTemperatureInfo + +/* CMagDevice::GetEllipseTemperatureInfo(unsigned int, unsigned int, unsigned int, unsigned int, + int*) */ + +void CMagDevice::GetEllipseTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,int *param_5) + +{ + MAG_GetEllipseTemperatureInfo(*(undefined4 *)((ulong)param_1 + 4),param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00181344 (8 bytes) name=GetRgnTemperatureInfo + +/* CMagDevice::GetRgnTemperatureInfo(unsigned int const*, unsigned int, int*) */ + +void CMagDevice::GetRgnTemperatureInfo(uint *param_1,uint param_2,int *param_3) + +{ + MAG_GetRgnTemperatureInfo(param_1[1],param_2); + return; +} + + +================================================================== + +### FUNC 0018134c (8 bytes) name=SaveDDT2Buffer + +/* CMagDevice::SaveDDT2Buffer(void*, unsigned int) */ + +void CMagDevice::SaveDDT2Buffer(void *param_1,uint param_2) + +{ + MAG_SaveDDT2Buffer(*(undefined4 *)((long)param_1 + 4),param_2); + return; +} + + +================================================================== + +### FUNC 00181354 (136 bytes) name=LoadBufferedDDT + +/* CMagDevice::LoadBufferedDDT(OutputPara*, void const*, unsigned int, void (*)(unsigned int, + unsigned int, unsigned int, void*), void*) */ + +undefined8 __thiscall +CMagDevice::LoadBufferedDDT + (CMagDevice *this,OutputPara *param_1,void *param_2,uint param_3, + _func_void_uint_uint_uint_void_ptr *param_4,void *param_5) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsProcessingImage(*(undefined4 *)(this + 4)); + if (iVar1 == 0) { + uVar2 = MAG_LoadBufferedDDT(*(uint *)(this + 4),param_1,param_2,param_3,param_4,param_5); + if ((int)uVar2 != 0) { + MAG_GetCamInfo(*(undefined4 *)(this + 4),this + 8,0x50); + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 001813dc (8 bytes) name=SaveBMP + +/* CMagDevice::SaveBMP(unsigned int, char const*) */ + +void CMagDevice::SaveBMP(uint param_1,char *param_2) + +{ + MAG_SaveBMP(*(undefined4 *)((ulong)param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001813e4 (8 bytes) name=SaveDDT + +/* CMagDevice::SaveDDT(char const*) */ + +void CMagDevice::SaveDDT(char *param_1) + +{ + MAG_SaveDDT(*(undefined4 *)(param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 001813ec (128 bytes) name=LoadDDT + +/* CMagDevice::LoadDDT(OutputPara*, char const*, void (*)(unsigned int, unsigned int, unsigned int, + void*), void*) */ + +undefined8 __thiscall +CMagDevice::LoadDDT(CMagDevice *this,OutputPara *param_1,char *param_2, + _func_void_uint_uint_uint_void_ptr *param_3,void *param_4) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsProcessingImage(*(undefined4 *)(this + 4)); + if (iVar1 == 0) { + uVar2 = MAG_LoadDDT(*(undefined4 *)(this + 4),param_1,param_2,param_3,param_4); + if ((int)uVar2 != 0) { + MAG_GetCamInfo(*(undefined4 *)(this + 4),this + 8,0x50); + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### FUNC 0018146c (64 bytes) name=SetImageTransform + +/* CMagDevice::SetImageTransform(int, int) */ + +int CMagDevice::SetImageTransform(int param_1,int param_2) + +{ + int iVar1; + ulong uVar2; + + uVar2 = (ulong)(uint)param_1; + iVar1 = MAG_SetImageTransform(*(undefined4 *)(uVar2 + 4),param_2); + if (iVar1 != 0) { + MAG_GetCamInfo(*(undefined4 *)(uVar2 + 4),uVar2 + 8,0x50); + } + return iVar1; +} + + +================================================================== + +### FUNC 001814ac (8 bytes) name=Lock + +/* CMagDevice::Lock() */ + +void __thiscall CMagDevice::Lock(CMagDevice *this) + +{ + MAG_LockFrame(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001814b4 (8 bytes) name=Unlock + +/* CMagDevice::Unlock() */ + +void __thiscall CMagDevice::Unlock(CMagDevice *this) + +{ + MAG_UnLockFrame(*(undefined4 *)(this + 4)); + return; +} + + +================================================================== + +### FUNC 001814bc (8 bytes) name=GetCurrentCameraInnerTemperature + +/* CMagDevice::GetCurrentCameraInnerTemperature(unsigned int) */ + +void __thiscall CMagDevice::GetCurrentCameraInnerTemperature(CMagDevice *this,uint param_1) + +{ + MAG_GetCurrentCameraInnerTemperature(param_1); + return; +} + + +================================================================== + +### FUNC 001814c4 (8 bytes) name=EstimateUnderArmTempFromForeheadRect + +/* CMagDevice::EstimateUnderArmTempFromForeheadRect(unsigned int, unsigned int, unsigned int, + unsigned int) */ + +void CMagDevice::EstimateUnderArmTempFromForeheadRect + (uint param_1,uint param_2,uint param_3,uint param_4) + +{ + MAG_EstimateUnderArmTempFromForeheadRect + (*(undefined4 *)((ulong)param_1 + 4),param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 001814cc (36 bytes) name=ConvertPos2XY + +/* CMagDevice::ConvertPos2XY(unsigned int, unsigned int*, unsigned int*) */ + +void __thiscall CMagDevice::ConvertPos2XY(CMagDevice *this,uint param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + + if (((param_3 != (uint *)0x0) && (param_2 != (uint *)0x0)) && + (uVar1 = *(uint *)(this + 8), uVar1 != 0)) { + uVar2 = 0; + if (uVar1 != 0) { + uVar2 = param_1 / uVar1; + } + *param_3 = uVar2; + *param_2 = param_1 - uVar2 * uVar1; + } + return; +} + + +================================================================== + +### FUNC 001814f0 (12 bytes) name=ConvertXY2Pos + +/* CMagDevice::ConvertXY2Pos(unsigned int, unsigned int) */ + +int __thiscall CMagDevice::ConvertXY2Pos(CMagDevice *this,uint param_1,uint param_2) + +{ + return param_1 + *(int *)(this + 8) * param_2; +} + + +================================================================== + +### FUNC 001814fc (252 bytes) name=newOutputObjects + +/* newOutputObjects(_JNIEnv*, int, int, int, int, int, _jobject*) */ + +undefined8 +newOutputObjects(_JNIEnv *param_1,int param_2,int param_3,int param_4,int param_5,int param_6, + _jobject *param_7) + +{ + int iVar1; + undefined8 uVar2; + _jobject *p_Var3; + _jobject **pp_Var4; + + pp_Var4 = (_jobject **)(&DAT_0052e948 + (long)param_6 * 0x28); + uVar2 = newBitmap(param_1,pp_Var4,param_2,param_3); + if ((int)uVar2 == 0) { + return uVar2; + } + iVar1 = newBitmap(param_1,(_jobject **)(&DAT_0052e950 + (long)param_6 * 0x28),param_4,param_5); + if (iVar1 == 0) { +LAB_001815d8: + delGlobalObject(param_1,pp_Var4); + uVar2 = 0; + } + else { + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + (long)param_6 * 0x28)); + if (param_7 != (_jobject *)0x0) { + p_Var3 = (_jobject *)newGlobalObject(param_1,param_7); + *(_jobject **)(&DAT_0052e940 + (long)param_6 * 0x28) = p_Var3; + if (p_Var3 == (_jobject *)0x0) { + delGlobalObject(param_1,pp_Var4); + pp_Var4 = (_jobject **)(&DAT_0052e950 + (long)param_6 * 0x28); + goto LAB_001815d8; + } + } + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### FUNC 001815f8 (72 bytes) name=delOutputObjects + +/* delOutputObjects(_JNIEnv*, int) */ + +void delOutputObjects(_JNIEnv *param_1,int param_2) + +{ + long lVar1; + + lVar1 = (long)param_2 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar1)); + return; +} + + +================================================================== + +### FUNC 00181640 (220 bytes) name=callNewFrameMethod + +/* callNewFrameMethod(_JNIEnv*, int, unsigned int, unsigned int) */ + +undefined8 callNewFrameMethod(_JNIEnv *param_1,int param_2,uint param_3,uint param_4) + +{ + long lVar1; + long lVar2; + + lVar2 = *(long *)(&DAT_0052e940 + (long)param_2 * 0x28); + if (lVar2 != 0) { + lVar2 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,lVar2,(ulong)param_3,(ulong)param_4); + if (lVar2 == 0) { + return 0; + } + lVar1 = (**(code **)(*(long *)param_1 + 0x108))(param_1,lVar2,"newFrame","(II)V"); + if (lVar1 != 0) { + _JNIEnv::CallVoidMethod + ((_jobject *)param_1,*(_jmethodID **)(&DAT_0052e940 + (long)param_2 * 0x28),lVar1, + (ulong)param_3,(ulong)param_4); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar2); + return 1; + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar2); + } + return 0; +} + + +================================================================== + +### FUNC 0018171c (160 bytes) name=CallVoidMethod + +/* _JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...) */ + +void _JNIEnv::CallVoidMethod(_jobject *param_1,_jmethodID *param_2,...) + +{ + long lVar1; + undefined8 in_x3; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + long lVar2; + undefined1 auStack_a0 [8]; + undefined8 local_98; + undefined8 local_90; + undefined8 uStack_88; + undefined8 local_80; + undefined8 uStack_78; + undefined1 *local_70; + undefined1 **ppuStack_68; + undefined1 *puStack_60; + undefined8 uStack_58; + + lVar1 = tpidr_el0; + lVar2 = *(long *)(lVar1 + 0x28); + puStack_60 = auStack_a0; + ppuStack_68 = &local_70; + uStack_58 = 0xffffff80ffffffd8; + local_98 = in_x3; + local_90 = in_x4; + uStack_88 = in_x5; + local_80 = in_x6; + uStack_78 = in_x7; + local_70 = (undefined1 *)register0x00000008; + (**(code **)(*(long *)param_1 + 0x1f0))(); + if (*(long *)(lVar1 + 0x28) == lVar2) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001817bc (360 bytes) name=NewFrameCallBack + +/* NewFrameCallBack(unsigned int, unsigned int, unsigned int, void*) */ + +void NewFrameCallBack(uint param_1,uint param_2,uint param_3,void *param_4) + +{ + long lVar1; + _jobject *p_Var2; + bool bVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + _jobject *local_60; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + iVar4 = (**(code **)(*DAT_0052fd60 + 0x30))(DAT_0052fd60,&local_60,0x10004); + if (iVar4 == -2) { + iVar5 = (**(code **)(*DAT_0052fd60 + 0x20))(DAT_0052fd60,&local_60,0); + bVar3 = iVar5 == 0; + p_Var2 = local_60; + } + else { + bVar3 = false; + p_Var2 = local_60; + } + if ((iVar4 == 0) || (bVar3)) { + if ((*(long *)(&DAT_0052e940 + (long)(int)param_1 * 0x28) != 0) && + (lVar6 = (**(code **)(*(long *)p_Var2 + 0xf8))(p_Var2), lVar6 != 0)) { + lVar7 = (**(code **)(*(long *)p_Var2 + 0x108))(p_Var2,lVar6,"newFrame","(II)V"); + if (lVar7 != 0) { + _JNIEnv::CallVoidMethod + (p_Var2,*(_jmethodID **)(&DAT_0052e940 + (long)(int)param_1 * 0x28),lVar7, + (ulong)param_2,(ulong)param_3); + } + (**(code **)(*(long *)p_Var2 + 0xb8))(p_Var2,lVar6); + } + if (bVar3) { + (**(code **)(*DAT_0052fd60 + 0x28))(); + } + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00181924 (360 bytes) name=NewFrameForDDTCallBack + +/* NewFrameForDDTCallBack(unsigned int, unsigned int, unsigned int, void*) */ + +void NewFrameForDDTCallBack(uint param_1,uint param_2,uint param_3,void *param_4) + +{ + long lVar1; + _jobject *p_Var2; + bool bVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + _jobject *local_60; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + iVar4 = (**(code **)(*DAT_0052fd60 + 0x30))(DAT_0052fd60,&local_60,0x10004); + if (iVar4 == -2) { + iVar5 = (**(code **)(*DAT_0052fd60 + 0x20))(DAT_0052fd60,&local_60,0); + bVar3 = iVar5 == 0; + p_Var2 = local_60; + } + else { + bVar3 = false; + p_Var2 = local_60; + } + if ((iVar4 == 0) || (bVar3)) { + if ((*(long *)(&DAT_0052e940 + (long)(int)param_1 * 0x28) != 0) && + (lVar6 = (**(code **)(*(long *)p_Var2 + 0xf8))(p_Var2), lVar6 != 0)) { + lVar7 = (**(code **)(*(long *)p_Var2 + 0x108))(p_Var2,lVar6,"newFrame","(II)V"); + if (lVar7 != 0) { + _JNIEnv::CallVoidMethod + (p_Var2,*(_jmethodID **)(&DAT_0052e940 + (long)(int)param_1 * 0x28),lVar7, + (ulong)param_2,(ulong)param_3); + } + (**(code **)(*(long *)p_Var2 + 0xb8))(p_Var2,lVar6); + } + if (bVar3) { + (**(code **)(*DAT_0052fd60 + 0x28))(); + } + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00181a8c (220 bytes) name=callPrepareTransferMethod + +/* callPrepareTransferMethod(_JNIEnv*, int, int, int) */ + +undefined8 callPrepareTransferMethod(_JNIEnv *param_1,int param_2,int param_3,int param_4) + +{ + long lVar1; + long lVar2; + + lVar2 = *(long *)(&DAT_0052e958 + (long)param_2 * 0x28); + if (lVar2 != 0) { + lVar2 = (**(code **)(*(long *)param_1 + 0xf8)) + (param_1,lVar2,(ulong)(uint)param_3,(ulong)(uint)param_4); + if (lVar2 == 0) { + return 0; + } + lVar1 = (**(code **)(*(long *)param_1 + 0x108))(param_1,lVar2,"prepareInBackground","(II)V"); + if (lVar1 != 0) { + _JNIEnv::CallVoidMethod + ((_jobject *)param_1,*(_jmethodID **)(&DAT_0052e958 + (long)param_2 * 0x28),lVar1, + (ulong)(uint)param_3,(ulong)(uint)param_4); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar2); + return 1; + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar2); + } + return 0; +} + + +================================================================== + +### FUNC 00181b68 (400 bytes) name=PrepareCallback + +/* PrepareCallback(unsigned int, int, int, void*) */ + +void PrepareCallback(uint param_1,int param_2,int param_3,void *param_4) + +{ + long lVar1; + _jobject *p_Var2; + bool bVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + _jobject *local_70; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + iVar4 = (**(code **)(*DAT_0052fd60 + 0x30))(DAT_0052fd60,&local_70,0x10004); + if (iVar4 == -2) { + iVar5 = (**(code **)(*DAT_0052fd60 + 0x20))(DAT_0052fd60,&local_70,0); + bVar3 = iVar5 == 0; + p_Var2 = local_70; + } + else { + bVar3 = false; + p_Var2 = local_70; + } + if ((iVar4 == 0) || (bVar3)) { + local_70 = p_Var2; + if ((*(long *)(&DAT_0052e958 + (long)(int)param_1 * 0x28) != 0) && + (lVar6 = (**(code **)(*(long *)p_Var2 + 0xf8))(p_Var2), lVar6 != 0)) { + lVar7 = (**(code **)(*(long *)p_Var2 + 0x108))(p_Var2,lVar6,"prepareInBackground","(II)V"); + if (lVar7 != 0) { + _JNIEnv::CallVoidMethod + (p_Var2,*(_jmethodID **)(&DAT_0052e958 + (long)(int)param_1 * 0x28),lVar7, + (ulong)(uint)param_2,(ulong)(uint)param_3); + } + (**(code **)(*(long *)p_Var2 + 0xb8))(p_Var2,lVar6); + } + if ((param_2 != 0) || (param_3 == 100)) { + delGlobalObject((_JNIEnv *)local_70,(_jobject **)(&DAT_0052e958 + (ulong)param_1 * 0x28)); + } + if (bVar3) { + (**(code **)(*DAT_0052fd60 + 0x28))(); + } + } + if (*(long *)(lVar1 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00181cf8 (92 bytes) name=JNI_OnLoad + +undefined8 JNI_OnLoad(undefined8 param_1) + +{ + DAT_0052fd60 = param_1; + memset(&DAT_0052e938,0,0x1400); + __android_log_print(3,"magnity", + "os: android, version: 1.9.6, product: core sdk, author: jessenxu, date: %s, %s" + ,"May 4 2020","19:19:10"); + return 0x10004; +} + + +================================================================== + +### FUNC 00181d54 (296 bytes) name=JNI_OnUnload + +void JNI_OnUnload(long *param_1) + +{ + long lVar1; + bool bVar2; + int iVar3; + int iVar4; + _jobject **pp_Var5; + CMagDevice *this; + long lVar6; + _JNIEnv *local_50; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + iVar3 = (**(code **)(*param_1 + 0x30))(param_1,&local_50,0x10004); + if (iVar3 == -2) { + iVar4 = (**(code **)(*param_1 + 0x20))(param_1,&local_50,0); + bVar2 = iVar4 == 0; + } + else { + bVar2 = false; + } + if ((iVar3 == 0) || (bVar2)) { + pp_Var5 = (_jobject **)&DAT_0052e980; + lVar6 = 0x80; + do { + this = (CMagDevice *)pp_Var5[-4]; + if (this != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(this); + operator_delete(this); + pp_Var5[-4] = (_jobject *)0x0; + } + delGlobalObject(local_50,pp_Var5 + -3); + delGlobalObject(local_50,pp_Var5 + -2); + delGlobalObject(local_50,pp_Var5 + -1); + delGlobalObject(local_50,pp_Var5); + lVar6 = lVar6 + -1; + pp_Var5 = pp_Var5 + 5; + } while (lVar6 != 0); + if (bVar2) { + (**(code **)(*param_1 + 0x28))(param_1); + } + } + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00181e7c (96 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_Init + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_Init(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined8 uVar1; + + uVar1 = (**(code **)(*param_1 + 0x548))(param_1,param_3,0); + MAG_SetStorageDir(); + (**(code **)(*param_1 + 0x550))(param_1,param_3,uVar1); + return 1; +} + + +================================================================== + +### FUNC 00181edc (160 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_LinkCamera + +int Java_cn_com_magnity_coresdk_MagDevice_LinkCamera(void) + +{ + int iVar1; + CMagDevice *this; + CMagDevice *this_00; + + this = operator_new(0x58); + CMagDevice::CMagDevice(this); + if ((*(int *)this == 0) || (iVar1 = CMagDevice::LinkCamera((uint)this), iVar1 == 0)) { + CMagDevice::~CMagDevice(this); + operator_delete(this); + iVar1 = -1; + } + else { + iVar1 = CMagDevice::GetChannelIndex(this); + this_00 = *(CMagDevice **)(&DAT_0052e938 + (long)iVar1 * 0x28); + if (this_00 != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(this_00); + operator_delete(this_00); + } + *(CMagDevice **)(&DAT_0052e938 + (long)iVar1 * 0x28) = this; + } + return iVar1; +} + + +================================================================== + +### FUNC 00181f90 (132 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_DislinkCamera + +void Java_cn_com_magnity_coresdk_MagDevice_DislinkCamera + (_JNIEnv *param_1,undefined8 param_2,int param_3) + +{ + long lVar1; + CMagDevice *this; + + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if (this != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(this); + operator_delete(this); + *(undefined8 *)(&DAT_0052e938 + (long)param_3 * 0x28) = 0; + } + lVar1 = (long)param_3 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar1)); + return; +} + + +================================================================== + +### FUNC 00182014 (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_IsLinked + +void Java_cn_com_magnity_coresdk_MagDevice_IsLinked + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::IsLinked(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + } + return; +} + + +================================================================== + +### FUNC 00182040 (176 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_PrepareProcessImage + +int Java_cn_com_magnity_coresdk_MagDevice_PrepareProcessImage + (_JNIEnv *param_1,undefined8 param_2,int param_3,_jobject *param_4) + +{ + _jobject **pp_Var1; + int iVar2; + _jobject *p_Var3; + + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) == 0) { +LAB_001820d8: + iVar2 = 0; + } + else { + pp_Var1 = (_jobject **)(&DAT_0052e958 + (long)param_3 * 0x28); + delGlobalObject(param_1,pp_Var1); + if (param_4 != (_jobject *)0x0) { + p_Var3 = (_jobject *)newGlobalObject(param_1,param_4); + *pp_Var1 = p_Var3; + if (p_Var3 == (_jobject *)0x0) goto LAB_001820d8; + } + iVar2 = CMagDevice::PrepareProcessImage + (*(_func_void_uint_int_int_void_ptr **)(&DAT_0052e938 + (long)param_3 * 0x28), + PTR_PrepareCallback_00501af8); + if (iVar2 + 1U < 2) { + delGlobalObject(param_1,pp_Var1); + } + } + return iVar2; +} + + +================================================================== + +### FUNC 001820f0 (288 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_StartProcessImage + +int Java_cn_com_magnity_coresdk_MagDevice_StartProcessImage + (_JNIEnv *param_1,undefined8 param_2,int param_3,_jobject *param_4,uint param_5, + uint param_6) + +{ + uint uVar1; + uint uVar2; + int iVar3; + long lVar4; + undefined8 *puVar5; + + puVar5 = (undefined8 *)(&DAT_0052e938 + (long)param_3 * 0x28); + if ((((CMagDevice *)*puVar5 != (CMagDevice *)0x0) && + (iVar3 = CMagDevice::IsLinked((CMagDevice *)*puVar5), iVar3 != 0)) && + (iVar3 = CMagDevice::IsProcessingImage((CMagDevice *)*puVar5), + iVar3 == 0 && ((param_6 | param_5) & 0x80000000) == 0)) { + lVar4 = CMagDevice::GetCamInfo((CMagDevice *)*puVar5); + uVar1 = 4; + if ((param_5 & 0xfffffffc) != 0) { + uVar1 = param_5 & 0xfffffffc; + } + uVar2 = 4; + if (param_6 != 0) { + uVar2 = param_6; + } + iVar3 = newOutputObjects(param_1,*(int *)(lVar4 + 0x40),*(int *)(lVar4 + 0x44),uVar1,uVar2, + param_3,param_4); + if (iVar3 != 0) { + iVar3 = CMagDevice::StartProcessImage + ((_func_void_uint_uint_uint_void_ptr *)*puVar5, + (int)PTR_NewFrameCallBack_00501928,uVar1,(void *)(ulong)uVar2); + if (iVar3 != 0) { + return iVar3; + } + lVar4 = (long)param_3 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar4)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar4)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar4)); + return 0; + } + } + return 0; +} + + +================================================================== + +### FUNC 00182210 (108 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_StopProcessImage + +void Java_cn_com_magnity_coresdk_MagDevice_StopProcessImage + (_JNIEnv *param_1,undefined8 param_2,int param_3) + +{ + long lVar1; + + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::StopProcessImage(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + } + lVar1 = (long)param_3 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar1)); + return; +} + + +================================================================== + +### FUNC 0018227c (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_IsProcessingImage + +void Java_cn_com_magnity_coresdk_MagDevice_IsProcessingImage + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::IsProcessingImage(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + } + return; +} + + +================================================================== + +### FUNC 001822a8 (32 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_Pause + +void Java_cn_com_magnity_coresdk_MagDevice_Pause(undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::Pause(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + return; + } + return; +} + + +================================================================== + +### FUNC 001822c8 (32 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_Resume + +void Java_cn_com_magnity_coresdk_MagDevice_Resume(undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::Resume(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + return; + } + return; +} + + +================================================================== + +### FUNC 001822e8 (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_IsPause + +void Java_cn_com_magnity_coresdk_MagDevice_IsPause + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::IsPause(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + } + return; +} + + +================================================================== + +### FUNC 00182314 (740 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetCameraInfo + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_GetCameraInfo + (_JNIEnv *param_1,undefined8 param_2,int param_3,undefined8 param_4) + +{ + undefined4 *puVar1; + long lVar2; + undefined8 uVar3; + long lVar4; + + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) == (CMagDevice *)0x0) { + uVar3 = 0; + } + else { + puVar1 = (undefined4 *) + CMagDevice::GetCamInfo(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + uVar3 = 0; + if ((puVar1 != (undefined4 *)0x0) && + (lVar2 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_4), uVar3 = 0, lVar2 != 0)) { + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,lVar2,"fpaWidth","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar3,*puVar1); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,lVar2,"fpaHeight","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar3,puVar1[1]); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,lVar2,&DAT_0043a0f2,"Ljava/lang/String;"); + lVar4 = toJString(param_1,(char *)(puVar1 + 4)); + if (lVar4 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar3,lVar4); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + } + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,lVar2,&DAT_0043a10a,"Ljava/lang/String;"); + lVar4 = toJString(param_1,(char *)(puVar1 + 0xc)); + if (lVar4 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar3,lVar4); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + } + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,lVar2,"maxFps","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar3,puVar1[0xe]); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,lVar2,"curFps","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar3,puVar1[0xf]); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,lVar2,"bmpWidth","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar3,puVar1[0x10]); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,lVar2,"bmpHeight","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar3,puVar1[0x11]); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar2); + uVar3 = 1; + } + } + return uVar3; +} + + +================================================================== + +### FUNC 001825f8 (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_TriggerFFC + +void Java_cn_com_magnity_coresdk_MagDevice_TriggerFFC + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::TriggerFFC(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + } + return; +} + + +================================================================== + +### FUNC 00182624 (36 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetColorPalette + +void Java_cn_com_magnity_coresdk_MagDevice_SetColorPalette + (undefined8 param_1,undefined8 param_2,int param_3,undefined4 param_4) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetColorPalette(*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4); + return; + } + return; +} + + +================================================================== + +### FUNC 00182648 (60 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetSubsectionEnlargePara + +void Java_cn_com_magnity_coresdk_MagDevice_SetSubsectionEnlargePara + (undefined8 param_1,undefined8 param_2,int param_3,int param_4,uchar param_5, + uchar param_6) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetSubsectionEnlargePara + ((int)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5,param_6); + } + return; +} + + +================================================================== + +### FUNC 00182684 (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetAutoEnlargePara + +void Java_cn_com_magnity_coresdk_MagDevice_SetAutoEnlargePara + (undefined8 param_1,undefined8 param_2,int param_3,int param_4,int param_5) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetAutoEnlargePara + ((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5); + return; + } + return; +} + + +================================================================== + +### FUNC 001826b0 (40 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetIsothermalPara + +void Java_cn_com_magnity_coresdk_MagDevice_SetIsothermalPara + (undefined8 param_1,undefined8 param_2,int param_3,int param_4) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetIsothermalPara((int)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4); + return; + } + return; +} + + +================================================================== + +### FUNC 001826d8 (52 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetImageTransform + +void Java_cn_com_magnity_coresdk_MagDevice_SetImageTransform + (undefined8 param_1,undefined8 param_2,int param_3,int param_4) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetImageTransform((int)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4); + } + return; +} + + +================================================================== + +### FUNC 0018270c (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetEXLevel + +void Java_cn_com_magnity_coresdk_MagDevice_SetEXLevel + (undefined8 param_1,undefined8 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetEXLevel(*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5,param_6); + return; + } + return; +} + + +================================================================== + +### FUNC 00182738 (32 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetEXLevel + +void Java_cn_com_magnity_coresdk_MagDevice_GetEXLevel + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::GetEXLevel(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + return; + } + return; +} + + +================================================================== + +### FUNC 00182758 (40 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetDetailEnhancement + +void Java_cn_com_magnity_coresdk_MagDevice_SetDetailEnhancement + (undefined8 param_1,undefined8 param_2,int param_3,int param_4) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::SetDetailEnhancement((int)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4); + return; + } + return; +} + + +================================================================== + +### FUNC 00182780 (852 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetFixPara + +void Java_cn_com_magnity_coresdk_MagDevice_GetFixPara + (long *param_1,undefined8 param_2,int param_3,undefined8 param_4) + +{ + long lVar1; + long lVar2; + undefined8 uVar3; + long lVar4; + 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; + + lVar1 = tpidr_el0; + lVar4 = *(long *)(lVar1 + 0x28); + if (*(struct_FixPara **)(&DAT_0052e938 + (long)param_3 * 0x28) == (struct_FixPara *)0x0) { + uVar3 = 0; + } + else { + CMagDevice::GetFixPara(*(struct_FixPara **)(&DAT_0052e938 + (long)param_3 * 0x28)); + lVar2 = (**(code **)(*param_1 + 0xf8))(param_1,param_4); + uVar3 = 0; + if (lVar2 != 0) { + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fDistance","F"); + (**(code **)(*param_1 + 0x378))(local_78,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fEmissivity","F"); + (**(code **)(*param_1 + 0x378))(local_74,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fTemp","F"); + (**(code **)(*param_1 + 0x378))(local_70,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,&DAT_0043a14c,"F"); + (**(code **)(*param_1 + 0x378))(local_6c,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fVisDistance","F"); + (**(code **)(*param_1 + 0x378))(local_68,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fRain","F"); + (**(code **)(*param_1 + 0x378))(local_64,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fSnow","F"); + (**(code **)(*param_1 + 0x378))(local_60,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fExtrapara1","F"); + (**(code **)(*param_1 + 0x378))(local_5c,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fExtrapara2","F"); + (**(code **)(*param_1 + 0x378))(local_58,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fTaoAtm","F"); + (**(code **)(*param_1 + 0x378))(local_54,param_1,param_4,uVar3); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"fTaoFilter","F"); + (**(code **)(*param_1 + 0x378))(local_50,param_1,param_4,uVar3); + (**(code **)(*param_1 + 0xb8))(param_1,lVar2); + uVar3 = 1; + } + } + if (*(long *)(lVar1 + 0x28) == lVar4) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 00182ad4 (392 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetFixPara + +void Java_cn_com_magnity_coresdk_MagDevice_SetFixPara + (_JNIEnv *param_1,undefined8 param_2,int param_3,_jobject *param_4) + +{ + long lVar1; + undefined4 uVar2; + 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; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) == 0) { + uVar2 = 0; + } + else { + local_68 = GetJfloat(param_1,"fDistance",param_4); + local_64 = GetJfloat(param_1,"fEmissivity",param_4); + local_60 = GetJfloat(param_1,"fTemp",param_4); + local_5c = GetJfloat(param_1,"fRH",param_4); + local_58 = GetJfloat(param_1,"fVisDistance",param_4); + local_54 = GetJfloat(param_1,"fRain",param_4); + local_50 = GetJfloat(param_1,"fSnow",param_4); + local_4c = GetJfloat(param_1,"fExtrapara1",param_4); + local_48 = GetJfloat(param_1,"fExtrapara2",param_4); + local_44 = GetJfloat(param_1,"fTaoAtm",param_4); + local_40 = GetJfloat(param_1,"fTaoFilter",param_4); + uVar2 = CMagDevice::SetFixPara + (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28), + (struct_FixPara *)&local_68); + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00182c5c (424 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputRGBAData + +void Java_cn_com_magnity_coresdk_MagDevice_GetOutputRGBAData + (long *param_1,undefined8 param_2,int param_3,long param_4) + +{ + int iVar1; + long lVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + CMagDevice *this; + uint *puVar6; + tagBITMAPINFO *ptVar7; + int iVar8; + uint *puVar9; + int iVar10; + undefined1 local_5c [4]; + long local_58; + tagBITMAPINFO *local_50; + long local_48; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + uVar4 = 0; + if (param_4 != 0) { + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if ((this != (CMagDevice *)0x0) && (lVar5 = CMagDevice::GetCamInfo(this), uVar4 = 0, lVar5 != 0) + ) { + iVar1 = *(int *)(lVar5 + 0x40); + iVar10 = *(int *)(lVar5 + 0x44); + iVar3 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + if (iVar3 < iVar10 * iVar1) { + uVar4 = 0; + } + else { + local_58 = 0; + local_50 = (tagBITMAPINFO *)0x0; + uVar4 = CMagDevice::GetOutputBMPdata + (*(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28),&local_50); + if ((int)uVar4 != 0) { + local_5c[0] = 0; + lVar5 = (**(code **)(*param_1 + 0x5d8))(param_1,param_4,local_5c); + uVar4 = 0; + if (lVar5 != 0) { + if (iVar10 != 0) { + iVar3 = iVar1; + if (iVar1 < 0) { + iVar3 = iVar1 + 1; + } + puVar6 = (uint *)(lVar5 + (long)((iVar10 + -1) * iVar1) * 4); + do { + if (2 < iVar1 + 1U) { + ptVar7 = local_50 + 1; + puVar9 = puVar6; + iVar8 = iVar3 >> 1; + do { + local_50 = ptVar7 + 1; + iVar8 = iVar8 + -1; + *puVar9 = *(uint *)(local_58 + 0x28 + (ulong)(byte)ptVar7[-1] * 4) | 0xff000000; + puVar9[1] = *(uint *)(local_58 + 0x28 + (ulong)(byte)*ptVar7 * 4) | 0xff000000; + puVar9 = puVar9 + 2; + ptVar7 = ptVar7 + 2; + } while (iVar8 != 0); + puVar6 = puVar6 + (ulong)((iVar3 >> 1) - 1) * 2 + 2; + } + iVar10 = iVar10 + -1; + puVar6 = puVar6 + (long)iVar1 * -2; + } while (iVar10 != 0); + } + (**(code **)(*param_1 + 0x618))(param_1,param_4,lVar5,0); + uVar4 = 1; + } + } + } + } + } + if (*(long *)(lVar2 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00182e04 (284 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputGrayData + +void Java_cn_com_magnity_coresdk_MagDevice_GetOutputGrayData + (long *param_1,undefined8 param_2,int param_3,long param_4) + +{ + int iVar1; + int iVar2; + long lVar3; + int iVar4; + undefined8 uVar5; + long lVar6; + void *__dest; + CMagDevice *this; + size_t __n; + undefined1 local_5c [4]; + undefined8 local_58; + tagBITMAPINFO *local_50; + long local_48; + + lVar3 = tpidr_el0; + local_48 = *(long *)(lVar3 + 0x28); + uVar5 = 0; + if (param_4 != 0) { + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if ((this != (CMagDevice *)0x0) && (lVar6 = CMagDevice::GetCamInfo(this), uVar5 = 0, lVar6 != 0) + ) { + iVar1 = *(int *)(lVar6 + 0x40); + iVar2 = *(int *)(lVar6 + 0x44); + iVar4 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + __n = (long)iVar2 * (long)iVar1; + if (iVar4 < (int)__n) { + uVar5 = 0; + } + else { + local_58 = 0; + local_50 = (tagBITMAPINFO *)0x0; + uVar5 = CMagDevice::GetOutputBMPdata + (*(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28),&local_50); + if ((int)uVar5 != 0) { + local_5c[0] = 0; + __dest = (void *)(**(code **)(*param_1 + 0x5c0))(param_1,param_4,local_5c); + uVar5 = 0; + if (__dest != (void *)0x0) { + memcpy(__dest,local_50,__n); + (**(code **)(*param_1 + 0x600))(param_1,param_4,__dest,0); + uVar5 = 1; + } + } + } + } + } + if (*(long *)(lVar3 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 00182f20 (320 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputYUVData + +bool Java_cn_com_magnity_coresdk_MagDevice_GetOutputYUVData + (long *param_1,undefined8 param_2,int param_3,long param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + long lVar4; + bool bVar5; + int iVar6; + int iVar7; + CMagDevice *this; + long lVar8; + uint *puVar9; + undefined1 local_6c [4]; + long local_68; + tagBITMAPINFO *ptStack_60; + long local_58; + + lVar4 = tpidr_el0; + local_58 = *(long *)(lVar4 + 0x28); + bVar5 = false; + if (param_4 != 0) { + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if (this != (CMagDevice *)0x0) { + lVar8 = CMagDevice::GetCamInfo(this); + if (lVar8 != 0) { + iVar1 = *(int *)(lVar8 + 0x40); + iVar2 = *(int *)(lVar8 + 0x44); + iVar6 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + iVar3 = iVar2 * iVar1; + iVar7 = iVar3 * 3; + if (iVar7 < 0) { + iVar7 = iVar7 + 1; + } + if (iVar7 >> 1 <= iVar6) { + local_68 = 0; + ptStack_60 = (tagBITMAPINFO *)0x0; + iVar7 = CMagDevice::GetOutputBMPdata + (*(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28),&ptStack_60); + if (iVar7 != 0) { + local_6c[0] = 0; + puVar9 = (uint *)(**(code **)(*param_1 + 0x5c0))(param_1,param_4,local_6c); + if (puVar9 != (uint *)0x0) { + iVar7 = GetYUV420((uchar *)ptStack_60,iVar1,iVar2,(tagRGBQUAD *)(local_68 + 0x28), + puVar9,(uint *)((long)puVar9 + (long)iVar3)); + bVar5 = iVar7 != 0; + (**(code **)(*param_1 + 0x600))(param_1,param_4,puVar9,0); + goto LAB_0018302c; + } + } + } + } + bVar5 = false; + } + } +LAB_0018302c: + if (*(long *)(lVar4 + 0x28) == local_58) { + return bVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00183060 (424 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputColorBarRGBAData + +void Java_cn_com_magnity_coresdk_MagDevice_GetOutputColorBarRGBAData + (long *param_1,undefined8 param_2,int param_3,long param_4) + +{ + int iVar1; + long lVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + CMagDevice *this; + uint *puVar6; + tagBITMAPINFO *ptVar7; + int iVar8; + uint *puVar9; + int iVar10; + undefined1 local_5c [4]; + long local_58; + tagBITMAPINFO *local_50; + long local_48; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + uVar4 = 0; + if (param_4 != 0) { + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if ((this != (CMagDevice *)0x0) && (lVar5 = CMagDevice::GetCamInfo(this), uVar4 = 0, lVar5 != 0) + ) { + iVar1 = *(int *)(lVar5 + 0x48); + iVar10 = *(int *)(lVar5 + 0x4c); + iVar3 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + if (iVar3 < iVar10 * iVar1) { + uVar4 = 0; + } + else { + local_58 = 0; + local_50 = (tagBITMAPINFO *)0x0; + uVar4 = CMagDevice::GetOutputColorBardata + (*(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28),&local_50); + if ((int)uVar4 != 0) { + local_5c[0] = 0; + lVar5 = (**(code **)(*param_1 + 0x5d8))(param_1,param_4,local_5c); + uVar4 = 0; + if (lVar5 != 0) { + if (iVar10 != 0) { + iVar3 = iVar1; + if (iVar1 < 0) { + iVar3 = iVar1 + 1; + } + puVar6 = (uint *)(lVar5 + (long)((iVar10 + -1) * iVar1) * 4); + do { + if (2 < iVar1 + 1U) { + ptVar7 = local_50 + 1; + puVar9 = puVar6; + iVar8 = iVar3 >> 1; + do { + local_50 = ptVar7 + 1; + iVar8 = iVar8 + -1; + *puVar9 = *(uint *)(local_58 + 0x28 + (ulong)(byte)ptVar7[-1] * 4) | 0xff000000; + puVar9[1] = *(uint *)(local_58 + 0x28 + (ulong)(byte)*ptVar7 * 4) | 0xff000000; + puVar9 = puVar9 + 2; + ptVar7 = ptVar7 + 2; + } while (iVar8 != 0); + puVar6 = puVar6 + (ulong)((iVar3 >> 1) - 1) * 2 + 2; + } + iVar10 = iVar10 + -1; + puVar6 = puVar6 + (long)iVar1 * -2; + } while (iVar10 != 0); + } + (**(code **)(*param_1 + 0x618))(param_1,param_4,lVar5,0); + uVar4 = 1; + } + } + } + } + } + if (*(long *)(lVar2 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00183208 (360 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputImage + +void Java_cn_com_magnity_coresdk_MagDevice_GetOutputImage + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + uint uVar1; + long lVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + uchar **ppuVar6; + uint *puVar7; + uint uVar8; + tagBITMAPINFO *ptVar9; + int iVar10; + uint *puVar11; + undefined8 *puVar12; + long local_60; + long local_58; + tagBITMAPINFO *local_50; + long local_48; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + ppuVar6 = *(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28); + if (ppuVar6 != (uchar **)0x0) { + local_58 = 0; + local_50 = (tagBITMAPINFO *)0x0; + iVar3 = CMagDevice::GetOutputBMPdata(ppuVar6,&local_50); + if (iVar3 != 0) { + lVar4 = CMagDevice::GetCamInfo(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + uVar5 = 0; + if (lVar4 == 0) goto LAB_00183344; + puVar12 = (undefined8 *)(&DAT_0052e948 + (long)param_3 * 0x28); + iVar3 = AndroidBitmap_lockPixels(param_1,*puVar12,&local_60); + if (-1 < iVar3) { + iVar3 = *(int *)(lVar4 + 0x44); + if (iVar3 != 0) { + uVar8 = *(uint *)(lVar4 + 0x40); + puVar7 = (uint *)(local_60 + (ulong)((iVar3 + -1) * uVar8) * 4); + do { + uVar1 = uVar8 >> 1; + if (uVar1 != 0) { + iVar10 = -uVar1; + ptVar9 = local_50 + 1; + puVar11 = puVar7; + do { + local_50 = ptVar9 + 1; + iVar10 = iVar10 + 1; + *puVar11 = *(uint *)(local_58 + 0x28 + (ulong)(byte)ptVar9[-1] * 4) | 0xff000000; + puVar11[1] = *(uint *)(local_58 + 0x28 + (ulong)(byte)*ptVar9 * 4) | 0xff000000; + puVar11 = puVar11 + 2; + ptVar9 = ptVar9 + 2; + } while (iVar10 != 0); + uVar8 = *(uint *)(lVar4 + 0x40); + puVar7 = puVar7 + (ulong)(uVar1 - 1) * 2 + 2; + } + iVar3 = iVar3 + -1; + puVar7 = puVar7 + -(ulong)(uVar8 << 1); + } while (iVar3 != 0); + } + AndroidBitmap_unlockPixels(param_1,*puVar12); + uVar5 = *puVar12; + goto LAB_00183344; + } + } + } + uVar5 = 0; +LAB_00183344: + if (*(long *)(lVar2 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 00183370 (1120 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputImage2 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void Java_cn_com_magnity_coresdk_MagDevice_GetOutputImage2 + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + uint uVar1; + long lVar2; + int iVar3; + long lVar4; + tagBITMAPINFO *ptVar5; + undefined8 uVar6; + long lVar7; + uchar **ppuVar8; + ulong uVar9; + uint uVar10; + tagBITMAPINFO *ptVar11; + uint *puVar12; + int iVar13; + uint *puVar14; + undefined8 *puVar15; + long local_4a0 [2]; + tagBITMAPINFO *local_490; + undefined8 local_488; + undefined8 uStack_480; + undefined8 local_478; + undefined8 uStack_470; + undefined8 local_468; + undefined8 uStack_460; + undefined8 local_458; + undefined8 uStack_450; + undefined8 local_448; + undefined8 uStack_440; + undefined8 local_438; + undefined8 uStack_430; + undefined8 local_428; + undefined8 uStack_420; + undefined8 local_418; + undefined8 uStack_410; + undefined8 local_408; + undefined8 uStack_400; + undefined8 uStack_3f8; + undefined8 uStack_3f0; + undefined8 local_3e8; + undefined8 uStack_3e0; + undefined8 uStack_3d8; + undefined8 uStack_3d0; + undefined8 local_3c8; + undefined8 uStack_3c0; + undefined8 uStack_3b8; + undefined8 uStack_3b0; + undefined8 local_3a8; + undefined8 uStack_3a0; + undefined8 uStack_398; + undefined8 uStack_390; + undefined8 local_388; + undefined8 uStack_380; + undefined8 uStack_378; + undefined8 uStack_370; + undefined8 local_368; + undefined8 uStack_360; + undefined8 uStack_358; + undefined8 uStack_350; + undefined8 local_348; + undefined8 uStack_340; + undefined8 uStack_338; + undefined8 uStack_330; + undefined8 local_328; + undefined8 uStack_320; + undefined8 uStack_318; + undefined8 uStack_310; + undefined8 local_308; + undefined8 uStack_300; + undefined8 uStack_2f8; + undefined8 uStack_2f0; + undefined8 local_2e8; + undefined8 uStack_2e0; + undefined8 uStack_2d8; + undefined8 uStack_2d0; + undefined8 local_2c8; + undefined8 uStack_2c0; + undefined8 uStack_2b8; + undefined8 uStack_2b0; + undefined8 local_2a8; + undefined8 uStack_2a0; + undefined8 uStack_298; + undefined8 uStack_290; + undefined8 local_288; + undefined8 uStack_280; + undefined8 uStack_278; + undefined8 uStack_270; + undefined8 local_268; + undefined8 uStack_260; + undefined8 uStack_258; + undefined8 uStack_250; + undefined8 local_248; + undefined8 uStack_240; + undefined8 uStack_238; + undefined8 uStack_230; + undefined8 local_228; + undefined8 uStack_220; + undefined8 uStack_218; + undefined8 uStack_210; + undefined8 local_208; + undefined8 uStack_200; + undefined8 uStack_1f8; + undefined8 uStack_1f0; + undefined8 local_1e8; + undefined8 uStack_1e0; + undefined8 uStack_1d8; + undefined8 uStack_1d0; + undefined8 local_1c8; + undefined8 uStack_1c0; + undefined8 uStack_1b8; + undefined8 uStack_1b0; + undefined8 local_1a8; + undefined8 uStack_1a0; + undefined8 uStack_198; + undefined8 uStack_190; + undefined8 local_188; + undefined8 uStack_180; + undefined8 uStack_178; + undefined8 uStack_170; + undefined8 local_168; + undefined8 uStack_160; + undefined8 uStack_158; + undefined8 uStack_150; + undefined8 local_148; + undefined8 uStack_140; + undefined8 uStack_138; + undefined8 uStack_130; + undefined8 local_128; + undefined8 uStack_120; + undefined8 uStack_118; + undefined8 uStack_110; + undefined8 local_108; + undefined8 uStack_100; + undefined8 uStack_f8; + undefined8 uStack_f0; + undefined8 local_e8; + undefined8 uStack_e0; + undefined8 uStack_d8; + undefined8 uStack_d0; + undefined8 local_c8; + undefined8 uStack_c0; + undefined8 uStack_b8; + undefined8 uStack_b0; + undefined8 local_a8; + undefined8 uStack_a0; + undefined8 uStack_98; + undefined8 uStack_90; + + lVar2 = tpidr_el0; + lVar7 = *(long *)(lVar2 + 0x28); + ppuVar8 = *(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28); + if (ppuVar8 != (uchar **)0x0) { + local_4a0[1] = 0; + local_490 = (tagBITMAPINFO *)0x0; + iVar3 = CMagDevice::GetOutputBMPdata(ppuVar8,&local_490); + if (iVar3 != 0) { + lVar4 = CMagDevice::GetCamInfo(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + uVar6 = 0; + if (lVar4 == 0) goto LAB_00183794; + uVar9 = (ulong)(*(int *)(lVar4 + 0x44) * *(int *)(lVar4 + 0x40)); + if ((long)uVar9 < 0) { + uVar9 = 0xffffffffffffffff; + } + ptVar5 = operator_new__(uVar9); + edgeImage((uchar *)local_490,*(int *)(lVar4 + 0x40),*(int *)(lVar4 + 0x44),(uchar *)ptVar5); + puVar15 = (undefined8 *)(&DAT_0052e948 + (long)param_3 * 0x28); + local_490 = ptVar5; + iVar3 = AndroidBitmap_lockPixels(param_1,*puVar15,local_4a0); + if (-1 < iVar3) { + uVar10 = *(uint *)(lVar4 + 0x40); + iVar3 = *(int *)(lVar4 + 0x44); + uStack_450 = _DAT_00436388; + local_458 = _DAT_00436380; + uStack_460 = _UNK_00436398; + local_468 = _DAT_00436390; + uStack_470 = _UNK_004363a8; + local_478 = _DAT_004363a0; + uStack_480 = _UNK_004363b8; + local_488 = _DAT_004363b0; + uStack_420 = _UNK_004363d8; + local_428 = _DAT_004363d0; + uStack_410 = _UNK_004363c8; + local_418 = _DAT_004363c0; + uStack_430 = _DAT_004363e8; + local_438 = _DAT_004363e0; + uStack_440 = _UNK_004363f8; + local_448 = _DAT_004363f0; + uStack_3e0 = _UNK_00436418; + local_3e8 = _DAT_00436410; + uStack_3d0 = _UNK_00436408; + uStack_3d8 = _DAT_00436400; + uStack_400 = _UNK_00436438; + local_408 = _DAT_00436430; + uStack_3f0 = _UNK_00436428; + uStack_3f8 = _DAT_00436420; + uStack_3a0 = _UNK_00436458; + local_3a8 = _DAT_00436450; + uStack_390 = _UNK_00436448; + uStack_398 = _DAT_00436440; + uStack_3c0 = _UNK_00436478; + local_3c8 = _DAT_00436470; + uStack_3b0 = _UNK_00436468; + uStack_3b8 = _DAT_00436460; + uStack_360 = _UNK_00436498; + local_368 = _DAT_00436490; + uStack_350 = _UNK_00436488; + uStack_358 = _DAT_00436480; + uStack_380 = _UNK_004364b8; + local_388 = _DAT_004364b0; + uStack_370 = _UNK_004364a8; + uStack_378 = _DAT_004364a0; + uStack_2a0 = _UNK_00436558; + local_2a8 = _DAT_00436550; + uStack_290 = _UNK_00436548; + uStack_298 = _DAT_00436540; + uStack_2c0 = _UNK_00436578; + local_2c8 = _DAT_00436570; + uStack_2b0 = _UNK_00436568; + uStack_2b8 = _DAT_00436560; + uStack_260 = _UNK_00436598; + local_268 = _DAT_00436590; + uStack_250 = _UNK_00436588; + uStack_258 = _DAT_00436580; + uStack_280 = _UNK_004365b8; + local_288 = _DAT_004365b0; + uStack_270 = _UNK_004365a8; + uStack_278 = _DAT_004365a0; + uStack_220 = _UNK_004365d8; + local_228 = _DAT_004365d0; + uStack_210 = _UNK_004365c8; + uStack_218 = _DAT_004365c0; + uStack_240 = _UNK_004365f8; + local_248 = _DAT_004365f0; + uStack_230 = _UNK_004365e8; + uStack_238 = _DAT_004365e0; + uStack_160 = _UNK_00436698; + local_168 = _DAT_00436690; + uStack_150 = _UNK_00436688; + uStack_158 = _DAT_00436680; + uStack_180 = _UNK_004366b8; + local_188 = _DAT_004366b0; + uStack_170 = _DAT_004366a8; + uStack_178 = _DAT_004366a0; + uStack_e0 = _UNK_00436718; + local_e8 = _DAT_00436710; + uStack_d0 = _UNK_00436708; + uStack_d8 = _DAT_00436700; + uStack_100 = _UNK_00436738; + local_108 = _DAT_00436730; + uStack_f0 = _UNK_00436728; + uStack_f8 = _DAT_00436720; + uStack_320 = _UNK_004364d8; + local_328 = _DAT_004364d0; + uStack_310 = _DAT_004364c8; + uStack_318 = _DAT_004364c0; + uStack_340 = _UNK_004364f8; + local_348 = _DAT_004364f0; + uStack_330 = _UNK_004364e8; + uStack_338 = _DAT_004364e0; + uStack_2e0 = _UNK_00436518; + local_2e8 = _DAT_00436510; + uStack_2d0 = _UNK_00436508; + uStack_2d8 = _DAT_00436500; + uStack_300 = _UNK_00436538; + local_308 = _DAT_00436530; + uStack_2f8 = _DAT_00436520; + uStack_2f0 = _UNK_00436528; + uStack_1e0 = _UNK_00436618; + local_1e8 = _DAT_00436610; + uStack_1d0 = _UNK_00436608; + uStack_1d8 = _DAT_00436600; + uStack_200 = _UNK_00436638; + local_208 = _DAT_00436630; + uStack_1f0 = _UNK_00436628; + uStack_1f8 = _DAT_00436620; + uStack_1a0 = _UNK_00436658; + local_1a8 = _DAT_00436650; + uStack_190 = _UNK_00436648; + uStack_198 = _DAT_00436640; + uStack_1c0 = _UNK_00436678; + local_1c8 = _DAT_00436670; + uStack_1b0 = _UNK_00436668; + uStack_1b8 = _DAT_00436660; + uStack_120 = _UNK_004366d8; + local_128 = _DAT_004366d0; + uStack_110 = _UNK_004366c8; + uStack_118 = _DAT_004366c0; + uStack_140 = _UNK_004366f8; + local_148 = _DAT_004366f0; + uStack_130 = _UNK_004366e8; + uStack_138 = _DAT_004366e0; + uStack_a0 = _UNK_00436758; + local_a8 = _DAT_00436750; + uStack_90 = _UNK_00436748; + uStack_98 = _DAT_00436740; + uStack_c0 = _UNK_00436778; + local_c8 = _DAT_00436770; + uStack_b0 = _UNK_00436768; + uStack_b8 = _DAT_00436760; + if (iVar3 != 0) { + puVar12 = (uint *)(local_4a0[0] + (ulong)((iVar3 + -1) * uVar10) * 4); + do { + uVar1 = uVar10 >> 1; + if (uVar1 != 0) { + iVar13 = -uVar1; + ptVar11 = local_490 + 1; + puVar14 = puVar12; + do { + local_490 = ptVar11 + 1; + iVar13 = iVar13 + 1; + *puVar14 = *(uint *)((long)&local_488 + (ulong)(byte)ptVar11[-1] * 4) | 0xff000000; + puVar14[1] = *(uint *)((long)&local_488 + (ulong)(byte)*ptVar11 * 4) | 0xff000000; + puVar14 = puVar14 + 2; + ptVar11 = ptVar11 + 2; + } while (iVar13 != 0); + uVar10 = *(uint *)(lVar4 + 0x40); + puVar12 = puVar12 + (ulong)(uVar1 - 1) * 2 + 2; + } + iVar3 = iVar3 + -1; + puVar12 = puVar12 + -(ulong)(uVar10 << 1); + } while (iVar3 != 0); + } + AndroidBitmap_unlockPixels(param_1,*puVar15); + operator_delete__(ptVar5); + uVar6 = *puVar15; + goto LAB_00183794; + } + operator_delete__(ptVar5); + } + } + uVar6 = 0; +LAB_00183794: + if (*(long *)(lVar2 + 0x28) == lVar7) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar6); +} + + +================================================================== + +### FUNC 001837d0 (360 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetOutputColorBarImage + +void Java_cn_com_magnity_coresdk_MagDevice_GetOutputColorBarImage + (undefined8 param_1,undefined8 param_2,int param_3) + +{ + uint uVar1; + long lVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + uchar **ppuVar6; + uint *puVar7; + uint uVar8; + tagBITMAPINFO *ptVar9; + int iVar10; + uint *puVar11; + undefined8 *puVar12; + long local_60; + long local_58; + tagBITMAPINFO *local_50; + long local_48; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + ppuVar6 = *(uchar ***)(&DAT_0052e938 + (long)param_3 * 0x28); + if (ppuVar6 != (uchar **)0x0) { + local_58 = 0; + local_50 = (tagBITMAPINFO *)0x0; + iVar3 = CMagDevice::GetOutputColorBardata(ppuVar6,&local_50); + if (iVar3 != 0) { + lVar4 = CMagDevice::GetCamInfo(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + uVar5 = 0; + if (lVar4 == 0) goto LAB_0018390c; + puVar12 = (undefined8 *)(&DAT_0052e950 + (long)param_3 * 0x28); + iVar3 = AndroidBitmap_lockPixels(param_1,*puVar12,&local_60); + if (-1 < iVar3) { + iVar3 = *(int *)(lVar4 + 0x4c); + if (iVar3 != 0) { + uVar8 = *(uint *)(lVar4 + 0x48); + puVar7 = (uint *)(local_60 + (ulong)((iVar3 + -1) * uVar8) * 4); + do { + uVar1 = uVar8 >> 1; + if (uVar1 != 0) { + iVar10 = -uVar1; + ptVar9 = local_50 + 1; + puVar11 = puVar7; + do { + local_50 = ptVar9 + 1; + iVar10 = iVar10 + 1; + *puVar11 = *(uint *)(local_58 + 0x28 + (ulong)(byte)ptVar9[-1] * 4) | 0xff000000; + puVar11[1] = *(uint *)(local_58 + 0x28 + (ulong)(byte)*ptVar9 * 4) | 0xff000000; + puVar11 = puVar11 + 2; + ptVar9 = ptVar9 + 2; + } while (iVar10 != 0); + uVar8 = *(uint *)(lVar4 + 0x48); + puVar7 = puVar7 + (ulong)(uVar1 - 1) * 2 + 2; + } + iVar3 = iVar3 + -1; + puVar7 = puVar7 + -(ulong)(uVar8 << 1); + } while (iVar3 != 0); + } + AndroidBitmap_unlockPixels(param_1,*puVar12); + uVar5 = *puVar12; + goto LAB_0018390c; + } + } + } + uVar5 = 0; +LAB_0018390c: + if (*(long *)(lVar2 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 00183938 (516 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetFrameStatisticalData + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_GetFrameStatisticalData + (long *param_1,undefined8 param_2,int param_3,undefined8 param_4) + +{ + long lVar1; + long lVar2; + undefined8 uVar3; + + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) == (CMagDevice *)0x0) { + uVar3 = 0; + } + else { + lVar1 = CMagDevice::GetFrameStatisticalData + (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + uVar3 = 0; + if ((lVar1 != 0) && + (lVar2 = (**(code **)(*param_1 + 0xf8))(param_1,param_4), uVar3 = 0, lVar2 != 0)) { + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"maxTemperature","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*(undefined4 *)(lVar1 + 0x18)); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"minTemperature","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*(undefined4 *)(lVar1 + 0x1c)); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"aveTemperature","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*(undefined4 *)(lVar1 + 0x20)); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"maxPos","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*(undefined4 *)(lVar1 + 0x28)); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"minPos","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*(undefined4 *)(lVar1 + 0x2c)); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"aveNETDt","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*(undefined4 *)(lVar1 + 0x3c)); + (**(code **)(*param_1 + 0xb8))(param_1,lVar2); + uVar3 = 1; + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00183b3c (396 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetRemoteInfo + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_GetRemoteInfo + (long *param_1,undefined8 param_2,int param_3,undefined8 param_4) + +{ + undefined4 *puVar1; + long lVar2; + undefined8 uVar3; + + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) == (CMagDevice *)0x0) { + uVar3 = 0; + } + else { + puVar1 = (undefined4 *) + CMagDevice::GetRemoteInfo(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + uVar3 = 0; + if ((puVar1 != (undefined4 *)0x0) && + (lVar2 = (**(code **)(*param_1 + 0xf8))(param_1,param_4), uVar3 = 0, lVar2 != 0)) { + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"serialNumber","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,*puVar1); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,&DAT_0043a1e5,"I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,puVar1[1]); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"hwVersion","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,puVar1[2]); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar2,"swVersion","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,puVar1[3]); + (**(code **)(*param_1 + 0xb8))(param_1,lVar2); + uVar3 = 1; + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00183cc8 (48 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_FixTemperature__IIFII + +ulong Java_cn_com_magnity_coresdk_MagDevice_FixTemperature__IIFII + (float param_1,undefined8 param_2,undefined8 param_3,int param_4,uint param_5, + uint param_6) + +{ + ulong uVar1; + + if (*(long *)(&DAT_0052e938 + (long)param_4 * 0x28) != 0) { + uVar1 = CMagDevice::FixTemperature + ((int)*(long *)(&DAT_0052e938 + (long)param_4 * 0x28),param_1,param_5,param_6) + ; + return uVar1; + } + return (ulong)param_5; +} + + +================================================================== + +### FUNC 00183cf8 (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_FixTemperature__IIFI + +ulong Java_cn_com_magnity_coresdk_MagDevice_FixTemperature__IIFI + (float param_1,undefined8 param_2,undefined8 param_3,int param_4,uint param_5) + +{ + ulong uVar1; + + if (*(long *)(&DAT_0052e938 + (long)param_4 * 0x28) != 0) { + uVar1 = CMagDevice::FixTemperature + ((int)*(long *)(&DAT_0052e938 + (long)param_4 * 0x28),param_1,param_5); + return uVar1; + } + return (ulong)param_5; +} + + +================================================================== + +### FUNC 00183d24 (340 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureData + +void Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureData + (long *param_1,undefined8 param_2,int param_3,long param_4,char param_5) + +{ + long lVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + int *piVar5; + long lVar6; + CMagDevice *this; + undefined1 local_5c [4]; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + uVar4 = 0; + if (param_4 != 0) { + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if (this != (CMagDevice *)0x0) { + piVar5 = (int *)CMagDevice::GetCamInfo(this); + uVar4 = 0; + if (piVar5 != (int *)0x0) { + uVar2 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + if ((uint)(piVar5[1] * *piVar5) <= uVar2) { + local_5c[0] = 0; + lVar6 = (**(code **)(*param_1 + 0x5d8))(param_1,param_4,local_5c); + uVar4 = 0; + if (lVar6 == 0) goto LAB_00183e20; + piVar5 = *(int **)(&DAT_0052e938 + (long)param_3 * 0x28); + if (param_5 == '\0') { + iVar3 = CMagDevice::GetTemperatureData_Raw(piVar5,(uint)lVar6,uVar2 << 2); + } + else { + iVar3 = CMagDevice::GetTemperatureData(piVar5,(uint)lVar6,uVar2 << 2); + } + if (iVar3 != 0) { + (**(code **)(*param_1 + 0x618))(param_1,param_4,lVar6,0); + uVar4 = 1; + goto LAB_00183e20; + } + (**(code **)(*param_1 + 0x618))(param_1,param_4,lVar6,0); + } + uVar4 = 0; + } + } + } +LAB_00183e20: + if (*(long *)(lVar1 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); + } + return; +} + + +================================================================== + +### FUNC 00183e78 (48 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureProbe__IIII + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureProbe__IIII + (undefined8 param_1,undefined8 param_2,int param_3,uint param_4,uint param_5) + +{ + undefined8 uVar1; + + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + uVar1 = CMagDevice::GetTemperatureProbe + ((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5); + return uVar1; + } + return 0x80000001; +} + + +================================================================== + +### FUNC 00183ea8 (44 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureProbe__III + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureProbe__III + (undefined8 param_1,undefined8 param_2,int param_3,uint param_4) + +{ + undefined8 uVar1; + + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + uVar1 = CMagDevice::GetTemperatureProbe + ((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4); + return uVar1; + } + return 0x80000001; +} + + +================================================================== + +### FUNC 00183ed4 (312 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetLineTemperatureInfo + +bool Java_cn_com_magnity_coresdk_MagDevice_GetLineTemperatureInfo + (long *param_1,undefined8 param_2,int param_3,uint param_4,uint param_5,uint param_6, + undefined8 param_7,long param_8) + +{ + long lVar1; + bool bVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + undefined1 local_406c [4]; + undefined1 auStack_4068 [16392]; + + lVar1 = tpidr_el0; + lVar5 = *(long *)(lVar1 + 0x28); + bVar2 = false; + if ((param_8 != 0) && (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0)) { + iVar3 = (**(code **)(*param_1 + 0x558))(param_1,param_8); + if (iVar3 < 3) { + bVar2 = false; + } + else { + local_406c[0] = 0; + uVar4 = (**(code **)(*param_1 + 0x5d8))(param_1,param_8,local_406c); + iVar3 = CMagDevice::GetLineTemperatureInfo + (*(int **)(&DAT_0052e938 + (long)param_3 * 0x28),(uint)auStack_4068, + (int *)0x4000,(uint)uVar4,param_4,param_5,param_6); + bVar2 = iVar3 != 0; + (**(code **)(*param_1 + 0x618))(param_1,param_8,uVar4,0); + } + } + if (*(long *)(lVar1 + 0x28) == lVar5) { + return bVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018400c (292 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetRectTemperatureInfo + +bool Java_cn_com_magnity_coresdk_MagDevice_GetRectTemperatureInfo + (long *param_1,undefined8 param_2,int param_3,uint param_4,uint param_5,uint param_6, + uint param_7,long param_8) + +{ + long lVar1; + bool bVar2; + int iVar3; + undefined8 uVar4; + undefined1 local_6c [4]; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + bVar2 = false; + if ((param_8 != 0) && (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0)) { + iVar3 = (**(code **)(*param_1 + 0x558))(param_1,param_8); + if (iVar3 < 5) { + bVar2 = false; + } + else { + local_6c[0] = 0; + uVar4 = (**(code **)(*param_1 + 0x5d8))(param_1,param_8,local_6c); + iVar3 = CMagDevice::GetRectTemperatureInfo + ((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5, + param_6,(int *)(ulong)param_7); + bVar2 = iVar3 != 0; + (**(code **)(*param_1 + 0x618))(param_1,param_8,uVar4,0); + } + } + if (*(long *)(lVar1 + 0x28) == local_68) { + return bVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00184130 (292 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetEllipseTemperatureInfo + +bool Java_cn_com_magnity_coresdk_MagDevice_GetEllipseTemperatureInfo + (long *param_1,undefined8 param_2,int param_3,uint param_4,uint param_5,uint param_6, + uint param_7,long param_8) + +{ + long lVar1; + bool bVar2; + int iVar3; + undefined8 uVar4; + undefined1 local_6c [4]; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + bVar2 = false; + if ((param_8 != 0) && (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0)) { + iVar3 = (**(code **)(*param_1 + 0x558))(param_1,param_8); + if (iVar3 < 5) { + bVar2 = false; + } + else { + local_6c[0] = 0; + uVar4 = (**(code **)(*param_1 + 0x5d8))(param_1,param_8,local_6c); + iVar3 = CMagDevice::GetEllipseTemperatureInfo + ((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5, + param_6,(int *)(ulong)param_7); + bVar2 = iVar3 != 0; + (**(code **)(*param_1 + 0x618))(param_1,param_8,uVar4,0); + } + } + if (*(long *)(lVar1 + 0x28) == local_68) { + return bVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00184254 (348 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetRgnTemperatureInfo + +bool Java_cn_com_magnity_coresdk_MagDevice_GetRgnTemperatureInfo + (long *param_1,undefined8 param_2,int param_3,long param_4,long param_5) + +{ + long lVar1; + bool bVar2; + int iVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined1 local_5c [4]; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + bVar2 = false; + if (((param_5 != 0) && (param_4 != 0)) && (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0)) + { + iVar3 = (**(code **)(*param_1 + 0x558))(param_1,param_5); + if (iVar3 < 5) { + bVar2 = false; + } + else { + uVar4 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + local_5c[0] = 0; + uVar5 = (**(code **)(*param_1 + 0x5d8))(param_1,param_4,local_5c); + uVar6 = (**(code **)(*param_1 + 0x5d8))(param_1,param_5,local_5c); + iVar3 = CMagDevice::GetRgnTemperatureInfo + (*(uint **)(&DAT_0052e938 + (long)param_3 * 0x28),(uint)uVar5, + (int *)(uVar4 & 0xffffffff)); + bVar2 = iVar3 != 0; + (**(code **)(*param_1 + 0x618))(param_1,param_4,uVar5,0); + (**(code **)(*param_1 + 0x618))(param_1,param_5,uVar6,0); + } + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return bVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001843b0 (160 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SaveBMP + +void Java_cn_com_magnity_coresdk_MagDevice_SaveBMP + (_JNIEnv *param_1,undefined8 param_2,int param_3,uint param_4,_jstring *param_5) + +{ + long lVar1; + undefined8 uVar2; + long lVar3; + char acStack_14c [268]; + + lVar1 = tpidr_el0; + lVar3 = *(long *)(lVar1 + 0x28); + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) == 0) { + uVar2 = 0; + } + else { + uVar2 = toChars(param_1,param_5,acStack_14c,0x104); + if ((int)uVar2 != 0) { + uVar2 = CMagDevice::SaveBMP((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28), + (char *)(ulong)param_4); + } + } + if (*(long *)(lVar1 + 0x28) == lVar3) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 00184450 (148 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SaveDDT + +void Java_cn_com_magnity_coresdk_MagDevice_SaveDDT + (_JNIEnv *param_1,undefined8 param_2,int param_3,_jstring *param_4) + +{ + long lVar1; + undefined8 uVar2; + long lVar3; + char acStack_13c [268]; + + lVar1 = tpidr_el0; + lVar3 = *(long *)(lVar1 + 0x28); + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) == 0) { + uVar2 = 0; + } + else { + uVar2 = toChars(param_1,param_4,acStack_13c,0x104); + if ((int)uVar2 != 0) { + uVar2 = CMagDevice::SaveDDT(*(char **)(&DAT_0052e938 + (long)param_3 * 0x28)); + } + } + if (*(long *)(lVar1 + 0x28) == lVar3) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 001844e4 (240 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SaveDDT2Buffer + +void Java_cn_com_magnity_coresdk_MagDevice_SaveDDT2Buffer + (long *param_1,undefined8 param_2,int param_3,undefined8 param_4) + +{ + long lVar1; + int iVar2; + long lVar3; + void *pvVar4; + undefined1 local_4c [4]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + local_4c[0] = 0; + lVar3 = (**(code **)(*param_1 + 0x5c0))(param_1,param_4,local_4c); + if (lVar3 != 0) { + pvVar4 = *(void **)(&DAT_0052e938 + (long)param_3 * 0x28); + (**(code **)(*param_1 + 0x558))(param_1,param_4); + iVar2 = CMagDevice::SaveDDT2Buffer(pvVar4,(uint)lVar3); + (**(code **)(*param_1 + 0x600))(param_1,param_4,lVar3,0); + if (iVar2 < 1) { + iVar2 = -1; + } + goto LAB_001845a8; + } + } + iVar2 = -1; +LAB_001845a8: + if (*(long *)(lVar1 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar2); + } + return; +} + + +================================================================== + +### FUNC 001845d4 (2316 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_LoadBufferedDDT + +int Java_cn_com_magnity_coresdk_MagDevice_LoadBufferedDDT + (_JNIEnv *param_1,undefined8 param_2,uint param_3,uint param_4,undefined8 param_5, + _jobject *param_6,long param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + uint uVar5; + int iVar6; + CMagDevice *pCVar7; + void *pvVar8; + undefined8 uVar9; + undefined8 uVar10; + long lVar11; + undefined8 *puVar12; + CMagDevice *this; + int local_3f8; + int iStack_3f4; + int local_3f0; + int iStack_3ec; + uint local_3e8; + uint uStack_3e4; + undefined1 auStack_3e0 [4]; + undefined4 local_3dc; + int local_3d8; + int local_3d4; + char acStack_3b0 [32]; + char acStack_390 [32]; + undefined8 local_370; + undefined4 local_368; + undefined4 local_364; + undefined8 local_360; + undefined8 local_358; + 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; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + uVar1 = 4; + if (0 < (int)(param_3 & 0xfffffffc)) { + uVar1 = param_3 & 0xfffffffc; + } + uVar2 = 4; + if (0 < (int)param_4) { + uVar2 = param_4; + } + pCVar7 = operator_new(0x58); + CMagDevice::CMagDevice(pCVar7); + if (*(int *)pCVar7 == 0) { +LAB_00184658: + CMagDevice::~CMagDevice(pCVar7); + operator_delete(pCVar7); + } + else { + iVar4 = CMagDevice::GetChannelIndex(pCVar7); + if (0x7f < iVar4 - 1U) goto LAB_00184658; + puVar12 = (undefined8 *)(&DAT_0052e938 + (long)iVar4 * 0x28); + this = (CMagDevice *)*puVar12; + if (this != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(this); + operator_delete(this); + } + *puVar12 = pCVar7; + pvVar8 = (void *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,param_5,0); + uVar5 = (**(code **)(*(long *)param_1 + 0x558))(param_1,param_5); + iVar6 = MAG_ProbeBufferedDDT(pvVar8,uVar5,auStack_3e0); + if ((iVar6 != 0) && (local_3d8 - 0x50U < 0x9d1)) { + if (local_3d4 - 0x3cU < 0x75d) { + if (param_7 != 0) { + uVar9 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_7); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"version","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_3dc); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"fpaWidth","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_3d8); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"fpaHeight","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_3d4); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"serialNumber","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_368); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar9,"cameraType","Ljava/lang/String;"); + lVar11 = toJString(param_1,acStack_3b0); + if (lVar11 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_7,uVar10,lVar11); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar11); + } + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar9,"cameraName","Ljava/lang/String;"); + lVar11 = toJString(param_1,acStack_390); + if (lVar11 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_7,uVar10,lVar11); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar11); + } + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"fileTime",&DAT_0043a224); + (**(code **)(*(long *)param_1 + 0x370))(param_1,param_7,uVar10,local_370); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"altitude","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_364,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"latitude","D"); + (**(code **)(*(long *)param_1 + 0x380))(local_360,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"longitude","D"); + (**(code **)(*(long *)param_1 + 0x380))(local_358,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"paletteIndex","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_124); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"tempUnit","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_120); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"emissivity","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_11c,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"airTemp","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_118,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"taoAtm","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_114,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"taoFilter","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_110,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"objDistance","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_10c,param_1,param_7,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar9,"usingManualEnlarge",&DAT_0043a29b); + (**(code **)(*(long *)param_1 + 0x348))(param_1,param_7,uVar10,local_108); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"lowerLimitTemp","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_104); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"upperLimitTemp","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_100); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"grayScale1","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_fc); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"grayScale2","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_f8); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"autoEnlargeRange","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_f4); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"brightOffset","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_f0); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar9,"contrastOffset","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar10,local_ec); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar9); + } + iVar6 = newOutputObjects(param_1,local_3d8,local_3d4,uVar1,uVar2,iVar4,param_6); + if (iVar6 != 0) { + local_3f8 = local_3d8; + iStack_3f4 = local_3d4; + local_3f0 = local_3d8; + iStack_3ec = local_3d4; + local_3e8 = uVar1; + uStack_3e4 = uVar2; + iVar6 = CMagDevice::LoadBufferedDDT + ((CMagDevice *)*puVar12,(OutputPara *)&local_3f8,pvVar8,uVar5, + (_func_void_uint_uint_uint_void_ptr *) + PTR_NewFrameForDDTCallBack_00501910,(void *)0x0); + if (iVar6 != 0) { + (**(code **)(*(long *)param_1 + 0x600))(param_1,param_5,pvVar8,0); + goto LAB_00184ea8; + } + lVar11 = (long)iVar4 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar11)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar11)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar11)); + } + } + } + pCVar7 = (CMagDevice *)*puVar12; + if (pCVar7 != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(pCVar7); + operator_delete(pCVar7); + } + *puVar12 = 0; + (**(code **)(*(long *)param_1 + 0x600))(param_1,param_5,pvVar8,0); + } + iVar4 = -1; +LAB_00184ea8: + if (*(long *)(lVar3 + 0x28) == local_68) { + return iVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00184ef4 (2184 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_LoadDDT + +int Java_cn_com_magnity_coresdk_MagDevice_LoadDDT + (_JNIEnv *param_1,undefined8 param_2,_jstring *param_3,uint param_4,uint param_5, + _jobject *param_6,long param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + CMagDevice *pCVar6; + undefined8 uVar7; + undefined8 uVar8; + long lVar9; + undefined8 *puVar10; + CMagDevice *this; + int local_4f8; + int iStack_4f4; + int local_4f0; + int iStack_4ec; + uint local_4e8; + uint uStack_4e4; + undefined1 auStack_4e0 [4]; + undefined4 local_4dc; + int local_4d8; + int local_4d4; + char acStack_4b0 [32]; + char acStack_490 [32]; + undefined8 local_470; + undefined4 local_468; + undefined4 local_464; + undefined8 local_460; + undefined8 local_458; + undefined4 local_224; + undefined4 local_220; + undefined4 local_21c; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210; + undefined4 local_20c; + undefined4 local_208; + undefined4 local_204; + undefined4 local_200; + undefined4 local_1fc; + undefined4 local_1f8; + undefined4 local_1f4; + undefined4 local_1f0; + undefined4 local_1ec; + char acStack_16c [260]; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + iVar4 = toChars(param_1,param_3,acStack_16c,0x104); + if (iVar4 != 0) { + uVar1 = 4; + if (0 < (int)(param_4 & 0xfffffffc)) { + uVar1 = param_4 & 0xfffffffc; + } + uVar2 = 4; + if (0 < (int)param_5) { + uVar2 = param_5; + } + pCVar6 = operator_new(0x58); + CMagDevice::CMagDevice(pCVar6); + if (*(int *)pCVar6 == 0) { + CMagDevice::~CMagDevice(pCVar6); + operator_delete(pCVar6); + } + else { + iVar4 = CMagDevice::GetChannelIndex(pCVar6); + puVar10 = (undefined8 *)(&DAT_0052e938 + (long)iVar4 * 0x28); + this = (CMagDevice *)*puVar10; + if (this != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(this); + operator_delete(this); + } + *puVar10 = pCVar6; + iVar5 = MAG_ProbeDDT(acStack_16c,auStack_4e0); + if ((iVar5 != 0) && (local_4d8 - 0x50U < 0x9d1)) { + if (local_4d4 - 0x3cU < 0x75d) { + if (param_7 != 0) { + uVar7 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_7); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"version","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_4dc); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"fpaWidth","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_4d8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"fpaHeight","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_4d4); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"serialNumber","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_468); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar7,"cameraType","Ljava/lang/String;"); + lVar9 = toJString(param_1,acStack_4b0); + if (lVar9 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_7,uVar8,lVar9); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar9); + } + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar7,"cameraName","Ljava/lang/String;"); + lVar9 = toJString(param_1,acStack_490); + if (lVar9 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_7,uVar8,lVar9); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar9); + } + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"fileTime",&DAT_0043a224); + (**(code **)(*(long *)param_1 + 0x370))(param_1,param_7,uVar8,local_470); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"altitude","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_464,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"latitude","D"); + (**(code **)(*(long *)param_1 + 0x380))(local_460,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"longitude","D"); + (**(code **)(*(long *)param_1 + 0x380))(local_458,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"paletteIndex","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_224); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"tempUnit","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_220); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"emissivity","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_21c,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"airTemp","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_218,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"taoAtm","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_214,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"taoFilter","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_210,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"objDistance","F"); + (**(code **)(*(long *)param_1 + 0x378))(local_20c,param_1,param_7,uVar8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar7,"usingManualEnlarge",&DAT_0043a29b); + (**(code **)(*(long *)param_1 + 0x348))(param_1,param_7,uVar8,local_208); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"lowerLimitTemp","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_204); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"upperLimitTemp","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_200); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"grayScale1","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_1fc); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"grayScale2","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_1f8); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"autoEnlargeRange","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_1f4); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"brightOffset","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_1f0); + uVar8 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar7,"contrastOffset","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_7,uVar8,local_1ec); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar7); + } + iVar5 = newOutputObjects(param_1,local_4d8,local_4d4,uVar1,uVar2,iVar4,param_6); + if (iVar5 != 0) { + local_4f8 = local_4d8; + iStack_4f4 = local_4d4; + local_4f0 = local_4d8; + iStack_4ec = local_4d4; + local_4e8 = uVar1; + uStack_4e4 = uVar2; + iVar5 = CMagDevice::LoadDDT((CMagDevice *)*puVar10,(OutputPara *)&local_4f8,acStack_16c, + (_func_void_uint_uint_uint_void_ptr *) + PTR_NewFrameForDDTCallBack_00501910,(void *)0x0); + if (iVar5 != 0) goto LAB_00185744; + lVar9 = (long)iVar4 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar9)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar9)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar9)); + } + } + } + pCVar6 = (CMagDevice *)*puVar10; + if (pCVar6 != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(pCVar6); + operator_delete(pCVar6); + } + *puVar10 = 0; + } + } + iVar4 = -1; +LAB_00185744: + if (*(long *)(lVar3 + 0x28) == local_68) { + return iVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00185790 (132 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_UnloadDDT + +void Java_cn_com_magnity_coresdk_MagDevice_UnloadDDT + (_JNIEnv *param_1,undefined8 param_2,int param_3) + +{ + long lVar1; + CMagDevice *this; + + this = *(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28); + if (this != (CMagDevice *)0x0) { + CMagDevice::~CMagDevice(this); + operator_delete(this); + *(undefined8 *)(&DAT_0052e938 + (long)param_3 * 0x28) = 0; + } + lVar1 = (long)param_3 * 0x28; + delGlobalObject(param_1,(_jobject **)(&DAT_0052e940 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e948 + lVar1)); + delGlobalObject(param_1,(_jobject **)(&DAT_0052e950 + lVar1)); + return; +} + + +================================================================== + +### FUNC 00185814 (228 bytes) name=getMDTObject + +/* getMDTObject(_JNIEnv*, _jobject*, char const*, char const*, char const*, int*) */ + +undefined8 +getMDTObject(_JNIEnv *param_1,_jobject *param_2,char *param_3,char *param_4,char *param_5, + int *param_6) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + + uVar2 = (**(code **)(*(long *)param_1 + 0xf8))(); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar2,param_3,param_4); + uVar3 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_2,uVar3); + uVar4 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar2,param_5,"I"); + iVar1 = (**(code **)(*(long *)param_1 + 800))(param_1,param_2,uVar4); + *param_6 = iVar1; + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar2); + return uVar3; +} + + +================================================================== + +### FUNC 001858f8 (2612 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_nativeSaveMDT + +uint Java_cn_com_magnity_coresdk_MagDevice_nativeSaveMDT + (_JNIEnv *param_1,undefined8 param_2,long param_3,_jstring *param_4) + +{ + ulong uVar1; + undefined1 auVar2 [16]; + long lVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined4 uVar8; + int iVar9; + int iVar10; + undefined8 uVar11; + undefined8 uVar12; + long lVar13; + uchar *puVar14; + long lVar15; + long lVar16; + long lVar17; + _jobject *p_Var18; + long lVar19; + uchar *puVar20; + long lVar21; + uchar *puVar22; + long lVar23; + ulong __n; + ROI *pRVar24; + int local_22c; + int local_224; + ROI *local_218; + uchar *local_1f8; + uchar *local_1e8; + undefined1 local_1d4 [4]; + MDTHelper aMStack_1d0 [100]; + char acStack_16c [268]; + + lVar3 = tpidr_el0; + lVar23 = *(long *)(lVar3 + 0x28); + if ((param_3 != 0) && (iVar4 = toChars(param_1,param_4,acStack_16c,0x104), iVar4 != 0)) { + local_1d4[0] = 0; + uVar11 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"ddtBuf","[B"); + lVar13 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar12); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"ddtSize","I"); + iVar4 = (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar12); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar11); + if (lVar13 != 0) { + iVar5 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar13); + if (iVar5 <= iVar4) { + iVar4 = iVar5; + } + puVar14 = (uchar *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,lVar13,local_1d4); + uVar11 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"jpgBuf","[B"); + lVar15 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar12); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"jpgSize","I"); + local_224 = (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar12); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar11); + if (lVar15 == 0) { + local_1e8 = (uchar *)0x0; + } + else { + iVar5 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar15); + if (iVar5 <= local_224) { + local_224 = iVar5; + } + local_1e8 = (uchar *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,lVar15,local_1d4); + } + uVar11 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"visBuf","[B"); + lVar16 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar12); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"visSize","I"); + local_22c = (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar12); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar11); + if (lVar16 == 0) { + local_1f8 = (uchar *)0x0; + } + else { + iVar5 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar16); + if (iVar5 <= local_22c) { + local_22c = iVar5; + } + local_1f8 = (uchar *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,lVar16,local_1d4); + } + uVar11 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar11,"labBuf","[Lcn/com/magnity/coresdk/types/ROI;"); + lVar17 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar12); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"labSize","I"); + uVar6 = (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar12); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar11); + if (lVar17 == 0) { + local_218 = (ROI *)0x0; + } + else { + uVar7 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar17); + if ((int)uVar7 <= (int)uVar6) { + uVar6 = uVar7; + } + auVar2._8_8_ = 0; + auVar2._0_8_ = (long)(int)uVar6; + __n = -(ulong)(uVar6 >> 0x1f) & 0xffffff0000000000 | (ulong)uVar6 << 8; + uVar1 = __n; + if (SUB168(auVar2 * ZEXT816(0x100),8) != 0) { + uVar1 = 0xffffffffffffffff; + } + local_218 = operator_new__(uVar1); + memset(local_218,0,__n); + if (0 < (int)uVar6) { + iVar5 = 0; + pRVar24 = local_218; + do { + p_Var18 = (_jobject *)(**(code **)(*(long *)param_1 + 0x568))(param_1,lVar17,iVar5); + uVar8 = GetJint(param_1,"type",p_Var18); + *(undefined4 *)pRVar24 = uVar8; + uVar8 = GetJint(param_1,"targetType",p_Var18); + *(undefined4 *)(pRVar24 + 4) = uVar8; + uVar8 = GetJint(param_1,"maxTemp",p_Var18); + *(undefined4 *)(pRVar24 + 8) = uVar8; + uVar8 = GetJint(param_1,"minTemp",p_Var18); + *(undefined4 *)(pRVar24 + 0xc) = uVar8; + uVar8 = GetJint(param_1,"aveTemp",p_Var18); + *(undefined4 *)(pRVar24 + 0x10) = uVar8; + uVar8 = GetJint(param_1,"maxPos",p_Var18); + *(undefined4 *)(pRVar24 + 0x14) = uVar8; + uVar8 = GetJint(param_1,"minPos",p_Var18); + *(undefined4 *)(pRVar24 + 0x18) = uVar8; + uVar8 = GetJint(param_1,"x0",p_Var18); + *(undefined4 *)(pRVar24 + 0x1c) = uVar8; + uVar8 = GetJint(param_1,"y0",p_Var18); + *(undefined4 *)(pRVar24 + 0x20) = uVar8; + uVar8 = GetJint(param_1,"x1",p_Var18); + *(undefined4 *)(pRVar24 + 0x24) = uVar8; + uVar8 = GetJint(param_1,"y1",p_Var18); + *(undefined4 *)(pRVar24 + 0x28) = uVar8; + uVar8 = GetJint(param_1,"color",p_Var18); + *(undefined4 *)(pRVar24 + 0x2c) = uVar8; + uVar8 = GetJfloat(param_1,"emissivity",p_Var18); + *(undefined4 *)(pRVar24 + 0x30) = uVar8; + uVar8 = GetJint(param_1,"lowerAlarmTemp",p_Var18); + *(undefined4 *)(pRVar24 + 0x34) = uVar8; + uVar8 = GetJint(param_1,"upperAlarmTemp",p_Var18); + *(undefined4 *)(pRVar24 + 0x38) = uVar8; + GetJstring(param_1,"name",p_Var18,(char *)(pRVar24 + 0x3c),0x40); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var18); + iVar5 = iVar5 + 1; + pRVar24 = pRVar24 + 0x100; + } while (iVar5 < (int)uVar6); + } + } + uVar11 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"txtBuf","[B"); + lVar19 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar12); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"txtSize","I"); + iVar5 = (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar12); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar11); + if (lVar19 == 0) { + puVar20 = (uchar *)0x0; + } + else { + iVar9 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar19); + if (iVar9 <= iVar5) { + iVar5 = iVar9; + } + puVar20 = (uchar *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,lVar19,local_1d4); + } + uVar11 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"audBuf","[B"); + lVar21 = (**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar12); + uVar12 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar11,"audSize","I"); + iVar9 = (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar12); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar11); + if (lVar21 == 0) { + puVar22 = (uchar *)0x0; + } + else { + iVar10 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar21); + if (iVar10 <= iVar9) { + iVar9 = iVar10; + } + puVar22 = (uchar *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,lVar21,local_1d4); + } + MDTHelper::MDTHelper(aMStack_1d0); + MDTHelper::setJpg(aMStack_1d0,local_1e8,local_224,false); + MDTHelper::setDDT(aMStack_1d0,puVar14,iVar4,false); + MDTHelper::setVisible(aMStack_1d0,local_1f8,local_22c,false); + MDTHelper::setLabel(aMStack_1d0,local_218,uVar6 << 8,false); + MDTHelper::setText(aMStack_1d0,puVar20,iVar5,false); + MDTHelper::setAudio(aMStack_1d0,puVar22,iVar9,false); + uVar6 = MDTHelper::save(aMStack_1d0,acStack_16c); + if (local_1e8 != (uchar *)0x0) { + (**(code **)(*(long *)param_1 + 0x600))(param_1,lVar15,local_1e8,0); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar15); + } + if (puVar14 != (uchar *)0x0) { + (**(code **)(*(long *)param_1 + 0x600))(param_1,lVar13,puVar14,0); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar13); + } + if (local_1f8 != (uchar *)0x0) { + (**(code **)(*(long *)param_1 + 0x600))(param_1,lVar16,local_1f8,0); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar16); + } + if (local_218 != (ROI *)0x0) { + operator_delete__(local_218); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar17); + } + if (puVar20 != (uchar *)0x0) { + (**(code **)(*(long *)param_1 + 0x600))(param_1,lVar19,puVar20,0); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar19); + } + if (puVar22 != (uchar *)0x0) { + (**(code **)(*(long *)param_1 + 0x600))(param_1,lVar21,puVar22,0); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar21); + } + uVar6 = uVar6 & 1; + MDTHelper::~MDTHelper(aMStack_1d0); + goto LAB_001862f4; + } + } + uVar6 = 0; +LAB_001862f4: + if (*(long *)(lVar3 + 0x28) != lVar23) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar6; +} + + +================================================================== + +### FUNC 00186340 (3252 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_nativeLoadMDT + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_nativeLoadMDT + (_JNIEnv *param_1,undefined8 param_2,_jstring *param_3,long param_4) + +{ + long lVar1; + int iVar2; + uint uVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + _jmethodID *p_Var8; + undefined8 uVar9; + undefined8 uVar10; + long lVar11; + long lVar12; + long local_208; + uchar *local_200; + uchar *local_1f8; + ROI *local_1f0; + uchar *local_1e8; + uchar *local_1e0; + uchar *local_1d8; + MDTHelper aMStack_1d0 [100]; + char acStack_16c [260]; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + uVar5 = 0; + if (param_4 != 0) { + iVar2 = toChars(param_1,param_3,acStack_16c,0x104); + if (iVar2 == 0) { + uVar5 = 0; + } + else { + MDTHelper::MDTHelper(aMStack_1d0); + uVar4 = MDTHelper::load(aMStack_1d0,acStack_16c); + if ((uVar4 & 1) == 0) { + uVar5 = 0; + } + else { + uVar5 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_4); + local_1d8 = (uchar *)0x0; + iVar2 = MDTHelper::getJpg(aMStack_1d0,&local_1d8); + if (0 < iVar2) { + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"jpgBuf","[B"); + uVar7 = (**(code **)(*(long *)param_1 + 0x580))(param_1,iVar2); + (**(code **)(*(long *)param_1 + 0x680))(param_1,uVar7,0,iVar2,local_1d8); + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar6,uVar7); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar7); + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"jpgSize","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar6,iVar2); + } + local_1e0 = (uchar *)0x0; + iVar2 = MDTHelper::getDDT(aMStack_1d0,&local_1e0); + if (0 < iVar2) { + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"ddtBuf","[B"); + uVar7 = (**(code **)(*(long *)param_1 + 0x580))(param_1,iVar2); + (**(code **)(*(long *)param_1 + 0x680))(param_1,uVar7,0,iVar2,local_1e0); + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar6,uVar7); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar7); + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"ddtSize","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar6,iVar2); + } + local_1e8 = (uchar *)0x0; + iVar2 = MDTHelper::getVisible(aMStack_1d0,&local_1e8); + if (0 < iVar2) { + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"visBuf","[B"); + uVar7 = (**(code **)(*(long *)param_1 + 0x580))(param_1,iVar2); + (**(code **)(*(long *)param_1 + 0x680))(param_1,uVar7,0,iVar2,local_1e8); + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar6,uVar7); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar7); + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"visSize","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar6,iVar2); + } + local_1f0 = (ROI *)0x0; + uVar3 = MDTHelper::getLabel(aMStack_1d0,&local_1f0); + if (0 < (int)uVar3) { + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"labSize","I"); + uVar4 = (ulong)(uVar3 >> 8); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar6,uVar4); + p_Var8 = (_jmethodID *) + (**(code **)(*(long *)param_1 + 0x30)) + (param_1,"cn/com/magnity/coresdk/types/ROI"); + uVar6 = (**(code **)(*(long *)param_1 + 0x108))(param_1,p_Var8,"",&DAT_0043a3f7); + uVar7 = (**(code **)(*(long *)param_1 + 0x560))(param_1,uVar4,p_Var8,0); + if (uVar3 >> 8 != 0) { + lVar12 = 0; + local_208 = 0; + do { + uVar9 = _JNIEnv::NewObject((_jclass *)param_1,p_Var8,uVar6); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,&DAT_0043a10a,"I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"targetType","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 4)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"maxTemp","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 8)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"minTemp","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0xc)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"aveTemp","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x10)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"maxPos","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x14)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"minPos","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x18)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,&DAT_0043a381,"I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x1c)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,&DAT_0043a384,"I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x20)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,&DAT_0043a387,"I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x24)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,&DAT_0043a38a,"I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x28)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"color","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x2c)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"emissivity","F"); + (**(code **)(*(long *)param_1 + 0x378)) + (*(undefined4 *)(local_1f0 + lVar12 + 0x30),param_1,uVar9,uVar10); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"lowerAlarmTemp","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x34)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"upperAlarmTemp","I"); + (**(code **)(*(long *)param_1 + 0x368)) + (param_1,uVar9,uVar10,*(undefined4 *)(local_1f0 + lVar12 + 0x38)); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,p_Var8,&DAT_0043a0f2,"Ljava/lang/String;"); + lVar11 = toJString(param_1,(char *)(local_1f0 + lVar12 + 0x3c)); + if (lVar11 != 0) { + (**(code **)(*(long *)param_1 + 0x340))(param_1,uVar9,uVar10,lVar11); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar11); + } + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"reserved1","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,uVar9,uVar10,0); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"reserved2","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,uVar9,uVar10,0); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"reserved3","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,uVar9,uVar10,0); + uVar10 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,p_Var8,"reserved4","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,uVar9,uVar10,0); + (**(code **)(*(long *)param_1 + 0x570))(param_1,uVar7,local_208,uVar9); + lVar12 = lVar12 + 0x100; + local_208 = local_208 + 1; + } while (local_208 < (long)uVar4); + } + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0)) + (param_1,uVar5,"labBuf","[Lcn/com/magnity/coresdk/types/ROI;"); + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar6,uVar7); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var8); + } + local_1f8 = (uchar *)0x0; + iVar2 = MDTHelper::getText(aMStack_1d0,&local_1f8); + if (0 < iVar2) { + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"txtBuf","[B"); + uVar7 = (**(code **)(*(long *)param_1 + 0x580))(param_1,iVar2); + (**(code **)(*(long *)param_1 + 0x680))(param_1,uVar7,0,iVar2,local_1f8); + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar6,uVar7); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar7); + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"txtSize","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar6,iVar2); + } + local_200 = (uchar *)0x0; + iVar2 = MDTHelper::getAudio(aMStack_1d0,&local_200); + if (0 < iVar2) { + uVar6 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"audBuf","[B"); + uVar7 = (**(code **)(*(long *)param_1 + 0x580))(param_1,iVar2); + (**(code **)(*(long *)param_1 + 0x680))(param_1,uVar7,0,iVar2,local_200); + (**(code **)(*(long *)param_1 + 0x340))(param_1,param_4,uVar6,uVar7); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar7); + uVar5 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar5,"audSize","I"); + (**(code **)(*(long *)param_1 + 0x368))(param_1,param_4,uVar5,iVar2); + } + uVar5 = 1; + } + MDTHelper::~MDTHelper(aMStack_1d0); + } + } + if (*(long *)(lVar1 + 0x28) == local_68) { + return uVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00187080 (160 bytes) name=NewObject + +/* _JNIEnv::NewObject(_jclass*, _jmethodID*, ...) */ + +void _JNIEnv::NewObject(_jclass *param_1,_jmethodID *param_2,...) + +{ + long lVar1; + undefined8 in_x3; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + long lVar2; + undefined1 auStack_a0 [8]; + undefined8 local_98; + undefined8 local_90; + undefined8 uStack_88; + undefined8 local_80; + undefined8 uStack_78; + undefined1 *local_70; + undefined1 **ppuStack_68; + undefined1 *puStack_60; + undefined8 uStack_58; + + lVar1 = tpidr_el0; + lVar2 = *(long *)(lVar1 + 0x28); + puStack_60 = auStack_a0; + ppuStack_68 = &local_70; + uStack_58 = 0xffffff80ffffffd8; + local_98 = in_x3; + local_90 = in_x4; + uStack_88 = in_x5; + local_80 = in_x6; + uStack_78 = in_x7; + local_70 = (undefined1 *)register0x00000008; + (**(code **)(*(long *)param_1 + 0xe8))(); + if (*(long *)(lVar1 + 0x28) == lVar2) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00187120 (32 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_Lock + +void Java_cn_com_magnity_coresdk_MagDevice_Lock(undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::Lock(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + return; + } + return; +} + + +================================================================== + +### FUNC 00187140 (32 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_Unlock + +void Java_cn_com_magnity_coresdk_MagDevice_Unlock(undefined8 param_1,undefined8 param_2,int param_3) + +{ + if (*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28) != (CMagDevice *)0x0) { + CMagDevice::Unlock(*(CMagDevice **)(&DAT_0052e938 + (long)param_3 * 0x28)); + return; + } + return; +} + + +================================================================== + +### FUNC 00187160 (40 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetCurrentCameraInnerTemperature + +undefined8 +Java_cn_com_magnity_coresdk_MagDevice_GetCurrentCameraInnerTemperature + (undefined8 param_1,undefined8 param_2,uint param_3) + +{ + undefined8 uVar1; + + if (*(CMagDevice **)(&DAT_0052e938 + (long)(int)param_3 * 0x28) != (CMagDevice *)0x0) { + uVar1 = CMagDevice::GetCurrentCameraInnerTemperature + (*(CMagDevice **)(&DAT_0052e938 + (long)(int)param_3 * 0x28),param_3); + return uVar1; + } + return 0x80000000; +} + + +================================================================== + +### FUNC 00187188 (320 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_nativeCopyBitmap + +void Java_cn_com_magnity_coresdk_MagDevice_nativeCopyBitmap + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + long lVar1; + int iVar2; + undefined8 uVar3; + undefined8 local_78; + undefined8 local_70; + undefined4 local_68; + void *local_60; + undefined8 local_58; + undefined8 local_50; + undefined4 local_48; + void *local_40; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + iVar2 = AndroidBitmap_lockPixels(param_1,param_4,&local_40); + if (-1 < iVar2) { + local_48 = 0; + local_58 = 0; + local_50 = 0; + AndroidBitmap_getInfo(param_1,param_4,&local_58); + iVar2 = AndroidBitmap_lockPixels(param_1,param_3,&local_60); + if (-1 < iVar2) { + local_68 = 0; + local_78 = 0; + local_70 = 0; + AndroidBitmap_getInfo(param_1,param_3,&local_78); + if (local_50._4_4_ == local_70._4_4_) { + if ((int)local_58 == (int)local_78) { + if (local_58._4_4_ == local_78._4_4_) { + if ((int)local_50 == (int)local_70) { + memcpy(local_60,local_40,(ulong)(uint)((int)local_50 * local_58._4_4_)); + AndroidBitmap_unlockPixels(param_1,param_4); + AndroidBitmap_unlockPixels(param_1,param_3); + uVar3 = 1; + goto LAB_001872a0; + } + } + } + } + AndroidBitmap_unlockPixels(param_1,param_4); + param_4 = param_3; + } + AndroidBitmap_unlockPixels(param_1,param_4); + } + uVar3 = 0; +LAB_001872a0: + if (*(long *)(lVar1 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); + } + return; +} + + +================================================================== + +### FUNC 001872c8 (588 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_nativeBlendBitmap + +void Java_cn_com_magnity_coresdk_MagDevice_nativeBlendBitmap + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + int param_5) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + uint uVar6; + long lVar7; + int iVar8; + undefined8 uVar9; + uint uVar10; + uint *puVar11; + uint uVar12; + undefined8 local_88; + undefined8 local_80; + undefined4 local_78; + long local_70; + undefined8 local_68; + undefined8 local_60; + undefined4 local_58; + uint *local_50; + long local_48; + + lVar7 = tpidr_el0; + local_48 = *(long *)(lVar7 + 0x28); + if (param_5 < 1) { +LAB_001874e4: + uVar9 = 1; + } + else { + if (0x1f < param_5) { + param_5 = 0x20; + } + iVar8 = AndroidBitmap_lockPixels(param_1,param_4,&local_50); + if (iVar8 < 0) { +LAB_001873c0: + uVar9 = 0; + goto LAB_001874e8; + } + local_58 = 0; + local_68 = 0; + local_60 = 0; + AndroidBitmap_getInfo(param_1,param_4,&local_68); + iVar8 = AndroidBitmap_lockPixels(param_1,param_3,&local_70); + if (-1 < iVar8) { + local_78 = 0; + local_88 = 0; + local_80 = 0; + AndroidBitmap_getInfo(param_1,param_3,&local_88); + if (local_60._4_4_ == local_80._4_4_) { + if ((uint)local_68 == (uint)local_88) { + if (local_68._4_4_ == local_88._4_4_) { + if ((uint)local_60 == (uint)local_80) { + if (local_60._4_4_ < 9) { + if ((1 << (ulong)(local_60._4_4_ & 0x1f) & 0x191U) != 0) goto LAB_001873c0; + if (((local_60._4_4_ == 1) && ((uint)local_60 >> 2 == (uint)local_68)) && + (0 < local_68._4_4_)) { + uVar10 = 0; + iVar8 = 0; + iVar4 = 0x20 - param_5; + do { + puVar11 = local_50; + uVar12 = (uint)local_68; + uVar1 = uVar10; + if ((uint)local_68 != 0) { + do { + uVar2 = *puVar11; + uVar5 = uVar2 >> 8 & 0xff; + uVar6 = uVar2 >> 0x10 & 0xff; + if (0xf2 < uVar5 + (uVar2 & 0xff) + uVar6) { + uVar3 = *(uint *)(local_70 + (ulong)uVar1 * 4); + *(uint *)(local_70 + (ulong)uVar1 * 4) = + (uVar5 * param_5 + (uVar3 >> 8 & 0xff) * iVar4) * 8 & 0xffff00 | + (uVar2 & 0xff) * param_5 + (uVar3 & 0xff) * iVar4 >> 5 | + (uVar6 * param_5 + (uVar3 >> 0x10 & 0xff) * iVar4) * 0x800 & 0xff0000 + | 0xff000000; + } + uVar12 = uVar12 - 1; + uVar1 = uVar1 + 1; + puVar11 = puVar11 + 1; + } while (uVar12 != 0); + local_50 = local_50 + (ulong)((uint)local_68 - 1) + 1; + uVar10 = uVar10 + (uint)local_68; + } + iVar8 = iVar8 + 1; + } while (iVar8 != local_68._4_4_); + } + } + AndroidBitmap_unlockPixels(param_1,param_4); + AndroidBitmap_unlockPixels(param_1,param_3); + goto LAB_001874e4; + } + } + } + } + AndroidBitmap_unlockPixels(param_1,param_4); + param_4 = param_3; + } + AndroidBitmap_unlockPixels(param_1,param_4); + uVar9 = 0; + } +LAB_001874e8: + if (*(long *)(lVar7 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar9); + } + return; +} + + +================================================================== + +### FUNC 00187514 (8 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_StartStitching + +undefined8 Java_cn_com_magnity_coresdk_MagDevice_StartStitching(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0018751c (8 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_TriggerStitching + +undefined8 Java_cn_com_magnity_coresdk_MagDevice_TriggerStitching(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00187524 (4 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_StopStitching + +void Java_cn_com_magnity_coresdk_MagDevice_StopStitching(void) + +{ + return; +} + + +================================================================== + +### FUNC 00187528 (8 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_isStitching + +undefined8 Java_cn_com_magnity_coresdk_MagDevice_isStitching(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00187530 (376 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetDetectParameter + +void Java_cn_com_magnity_coresdk_MagDevice_SetDetectParameter + (_JNIEnv *param_1,undefined8 param_2,undefined4 param_3,_jobject *param_4) + +{ + long lVar1; + uint uVar2; + 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; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if (param_4 == (_jobject *)0x0) { + uVar2 = 0; + } + else { + local_68 = GetJint(param_1,"targetLowTemp",param_4); + local_64 = GetJint(param_1,"targetHighTemp",param_4); + local_60 = GetJint(param_1,"targetMinArea",param_4); + local_5c = GetJint(param_1,"targetMaxArea",param_4); + local_58 = GetJint(param_1,"targetMinLength",param_4); + local_54 = GetJint(param_1,"minHorJointDist",param_4); + local_50 = GetJint(param_1,"minVerJointDist",param_4); + local_4c = GetJint(param_1,"rangeLeftPos",param_4); + local_48 = GetJint(param_1,"rangeTopPos",param_4); + local_44 = GetJint(param_1,"rangeRightPos",param_4); + local_40 = GetJint(param_1,"rangeBottomPos",param_4); + uVar2 = MAG_SetDetectParameter(param_3,&local_68); + uVar2 = uVar2 & 1; + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 001876a8 (864 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_GetDetectSuggestedParameter + +void Java_cn_com_magnity_coresdk_MagDevice_GetDetectSuggestedParameter + (long *param_1,undefined8 param_2,undefined4 param_3,long param_4) + +{ + long lVar1; + ulong uVar2; + undefined8 uVar3; + long lVar4; + undefined8 local_78; + undefined8 uStack_70; + undefined8 local_68; + undefined8 uStack_60; + undefined8 local_58; + undefined4 local_50; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + if (param_4 == 0) { + uVar3 = 0; + } + else { + local_50 = 0; + local_58 = 0; + uStack_60 = 0; + local_68 = 0; + uStack_70 = 0; + local_78 = 0; + uVar2 = MAG_GetDetectSuggestedParameter(param_3,&local_78); + uVar3 = 0; + if (((uVar2 & 1) != 0) && + (lVar4 = (**(code **)(*param_1 + 0xf8))(param_1,param_4), uVar3 = 0, lVar4 != 0)) { + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"targetLowTemp","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_78 & 0xffffffff); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"targetHighTemp","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_78._4_4_); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"targetMinArea","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,uStack_70 & 0xffffffff); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"targetMaxArea","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,uStack_70._4_4_); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"targetMinLength","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_68 & 0xffffffff); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"minHorJointDist","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_68._4_4_); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"minVerJointDist","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,uStack_60 & 0xffffffff); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"rangeLeftPos","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,uStack_60._4_4_); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"rangeTopPos","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_58 & 0xffffffff); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"rangeRightPos","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_58._4_4_); + uVar3 = (**(code **)(*param_1 + 0x2f0))(param_1,lVar4,"rangeBottomPos","I"); + (**(code **)(*param_1 + 0x368))(param_1,param_4,uVar3,local_50); + (**(code **)(*param_1 + 0xb8))(param_1,lVar4); + uVar3 = 1; + } + } + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 00187a08 (196 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_SetDetectMaskPoints + +uint Java_cn_com_magnity_coresdk_MagDevice_SetDetectMaskPoints + (long *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + long lVar1; + undefined4 uVar2; + uint uVar3; + undefined8 uVar4; + undefined1 local_4c [4]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + uVar2 = (**(code **)(*param_1 + 0x558))(param_1,param_4); + local_4c[0] = 0; + uVar4 = (**(code **)(*param_1 + 0x5d8))(param_1,param_4,local_4c); + uVar3 = MAG_SetDetectMaskPoints(param_3,uVar4,uVar2); + (**(code **)(*param_1 + 0x618))(param_1,param_4,uVar4,0); + if (*(long *)(lVar1 + 0x28) == local_48) { + return uVar3 & 1; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00187acc (560 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_FindDetectTarget + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int Java_cn_com_magnity_coresdk_MagDevice_FindDetectTarget + (_jclass *param_1,undefined8 param_2,undefined4 param_3,long param_4, + undefined4 param_5,undefined4 param_6,long param_7) + +{ + long lVar1; + int iVar2; + int iVar3; + undefined8 uVar4; + _jmethodID *p_Var5; + long lVar6; + long lVar7; + long lVar8; + ulong uVar9; + int *piVar10; + undefined1 local_206c [4]; + uint local_2068 [2]; + undefined8 uStack_2060; + undefined8 auStack_2058 [1023]; + + lVar1 = tpidr_el0; + lVar8 = *(long *)(lVar1 + 0x28); + iVar2 = -1; + if ((param_4 != 0) && (param_7 != 0)) { + local_206c[0] = 0; + uVar4 = (**(code **)(*(long *)param_1 + 0x5c0))(param_1,param_4,local_206c); + lVar6 = 0; + do { + lVar7 = lVar6 + 0x80; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x18) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x10) = _DAT_0043a040; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x28) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x20) = _DAT_0043a040; + *(undefined8 *)((long)&uStack_2060 + lVar6) = _UNK_0043a048; + *(undefined8 *)((long)local_2068 + lVar6) = _DAT_0043a040; + *(undefined8 *)((long)auStack_2058 + lVar6 + 8) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6) = _DAT_0043a040; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x58) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x50) = _DAT_0043a040; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x68) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x60) = _DAT_0043a040; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x38) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x30) = _DAT_0043a040; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x48) = _UNK_0043a048; + *(undefined8 *)((long)auStack_2058 + lVar6 + 0x40) = _DAT_0043a040; + lVar6 = lVar7; + } while (lVar7 != 0x2000); + iVar2 = MAG_FindDetectTarget(param_3,uVar4,param_5,param_6,local_2068,0x200); + (**(code **)(*(long *)param_1 + 0x600))(param_1,param_4,uVar4,0); + if (0 < iVar2) { + iVar3 = (**(code **)(*(long *)param_1 + 0x558))(param_1,param_7); + if (iVar2 <= iVar3) { + iVar3 = iVar2; + } + p_Var5 = (_jmethodID *) + (**(code **)(*(long *)param_1 + 0x30))(param_1,"cn/com/magnity/coresdk/types/JRect"); + lVar6 = (**(code **)(*(long *)param_1 + 0x108))(param_1,p_Var5,"","(IIII)V"); + iVar2 = -1; + if ((p_Var5 != (_jmethodID *)0x0) && (lVar6 != 0)) { + if (0 < iVar3) { + uVar9 = 0; + piVar10 = (int *)&uStack_2060; + do { + lVar7 = _JNIEnv::NewObject(param_1,p_Var5,lVar6,(ulong)(uint)piVar10[-2], + (ulong)(uint)piVar10[-1], + (ulong)(uint)((1 - piVar10[-2]) + *piVar10), + (ulong)(uint)((1 - piVar10[-1]) + piVar10[1])); + if (lVar7 == 0) break; + (**(code **)(*(long *)param_1 + 0x570))(param_1,param_7,uVar9 & 0xffffffff,lVar7); + uVar9 = uVar9 + 1; + piVar10 = piVar10 + 4; + } while ((long)uVar9 < (long)iVar3); + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var5); + iVar2 = iVar3; + } + } + } + if (*(long *)(lVar1 + 0x28) == lVar8) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00187cfc (48 bytes) name=Java_cn_com_magnity_coresdk_MagDevice_EstimateUnderArmTempFromForeheadRect + +void Java_cn_com_magnity_coresdk_MagDevice_EstimateUnderArmTempFromForeheadRect + (undefined8 param_1,undefined8 param_2,int param_3,uint param_4,uint param_5, + uint param_6) + +{ + if (*(long *)(&DAT_0052e938 + (long)param_3 * 0x28) != 0) { + CMagDevice::EstimateUnderArmTempFromForeheadRect + ((uint)*(long *)(&DAT_0052e938 + (long)param_3 * 0x28),param_4,param_5,param_6); + return; + } + return; +} + + +================================================================== + +### FUNC 00187d2c (364 bytes) name=toJString + +/* toJString(_JNIEnv*, char const*) */ + +undefined8 toJString(_JNIEnv *param_1,char *param_2) + +{ + _jmethodID *p_Var1; + long lVar2; + size_t sVar3; + long lVar4; + long lVar5; + undefined8 uVar6; + + p_Var1 = (_jmethodID *)(**(code **)(*(long *)param_1 + 0x30))(param_1,"java/lang/String"); + if (p_Var1 != (_jmethodID *)0x0) { + lVar2 = (**(code **)(*(long *)param_1 + 0x108)) + (param_1,p_Var1,"","([BLjava/lang/String;)V"); + if (lVar2 != 0) { + sVar3 = strlen(param_2); + lVar4 = (**(code **)(*(long *)param_1 + 0x580))(param_1,sVar3 & 0xffffffff); + if (lVar4 != 0) { + (**(code **)(*(long *)param_1 + 0x680))(param_1,lVar4,0,sVar3 & 0xffffffff,param_2); + lVar5 = (**(code **)(*(long *)param_1 + 0x538))(param_1,&DAT_0043a516); + if (lVar5 != 0) { + uVar6 = _JNIEnv::NewObject((_jclass *)param_1,p_Var1,lVar2,lVar4,lVar5); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar5); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var1); + return uVar6; + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + } + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var1); + } + return 0; +} + + +================================================================== + +### FUNC 00187e98 (520 bytes) name=toChars + +/* toChars(_JNIEnv*, _jstring*, char*, int) */ + +int toChars(_JNIEnv *param_1,_jstring *param_2,char *param_3,int param_4) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + long lVar5; + void *__src; + long lVar6; + undefined1 local_6c [4]; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + lVar3 = (**(code **)(*(long *)param_1 + 0x30))(param_1,"java/lang/String"); + if (lVar3 != 0) { + lVar4 = (**(code **)(*(long *)param_1 + 0x538))(param_1,"utf-8"); + if (lVar4 != 0) { + lVar5 = (**(code **)(*(long *)param_1 + 0x108)) + (param_1,lVar3,"getBytes","(Ljava/lang/String;)[B"); + if (lVar5 != 0) { + lVar5 = _JNIEnv::CallObjectMethod((_jobject *)param_1,(_jmethodID *)param_2,lVar5,lVar4); + if (lVar5 == 0) { + lVar6 = *(long *)param_1; + lVar5 = 0; + } + else { + iVar2 = (**(code **)(*(long *)param_1 + 0x558))(param_1,lVar5); + local_6c[0] = 0; + if (param_4 <= iVar2) { + iVar2 = param_4 + -1; + } + __src = (void *)(**(code **)(*(long *)param_1 + 0x5c0))(param_1,lVar5,local_6c); + if (__src != (void *)0x0) { + if (0 < iVar2) { + memcpy(param_3,__src,(long)iVar2); + } + param_3[iVar2] = '\0'; + (**(code **)(*(long *)param_1 + 0x600))(param_1,lVar5,__src,0); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar5); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar3); + goto LAB_00188068; + } + lVar6 = *(long *)param_1; + } + (**(code **)(lVar6 + 0xb8))(param_1,lVar5); + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar3); + } + iVar2 = 0; +LAB_00188068: + if (*(long *)(lVar1 + 0x28) == local_68) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001880a0 (160 bytes) name=CallObjectMethod + +/* _JNIEnv::CallObjectMethod(_jobject*, _jmethodID*, ...) */ + +void _JNIEnv::CallObjectMethod(_jobject *param_1,_jmethodID *param_2,...) + +{ + long lVar1; + undefined8 in_x3; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + long lVar2; + undefined1 auStack_a0 [8]; + undefined8 local_98; + undefined8 local_90; + undefined8 uStack_88; + undefined8 local_80; + undefined8 uStack_78; + undefined1 *local_70; + undefined1 **ppuStack_68; + undefined1 *puStack_60; + undefined8 uStack_58; + + lVar1 = tpidr_el0; + lVar2 = *(long *)(lVar1 + 0x28); + puStack_60 = auStack_a0; + ppuStack_68 = &local_70; + uStack_58 = 0xffffff80ffffffd8; + local_98 = in_x3; + local_90 = in_x4; + uStack_88 = in_x5; + local_80 = in_x6; + uStack_78 = in_x7; + local_70 = (undefined1 *)register0x00000008; + (**(code **)(*(long *)param_1 + 0x118))(); + if (*(long *)(lVar1 + 0x28) == lVar2) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00188140 (140 bytes) name=GetJint + +/* GetJint(_JNIEnv*, char const*, _jobject*) */ + +void GetJint(_JNIEnv *param_1,char *param_2,_jobject *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + + uVar1 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar2 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar1,param_2,"I"); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar1); + /* WARNING: Could not recover jumptable at 0x001881c8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(long *)param_1 + 800))(param_1,param_3,uVar2); + return; +} + + +================================================================== + +### FUNC 001881cc (140 bytes) name=GetJbool + +/* GetJbool(_JNIEnv*, char const*, _jobject*) */ + +void GetJbool(_JNIEnv *param_1,char *param_2,_jobject *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + + uVar1 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar2 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar1,param_2,&DAT_0043a29b); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar1); + /* WARNING: Could not recover jumptable at 0x00188254. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(long *)param_1 + 0x300))(param_1,param_3,uVar2); + return; +} + + +================================================================== + +### FUNC 00188258 (140 bytes) name=GetJfloat + +/* GetJfloat(_JNIEnv*, char const*, _jobject*) */ + +void GetJfloat(_JNIEnv *param_1,char *param_2,_jobject *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + + uVar1 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar2 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar1,param_2,"F"); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar1); + /* WARNING: Could not recover jumptable at 0x001882e0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(long *)param_1 + 0x330))(param_1,param_3,uVar2); + return; +} + + +================================================================== + +### FUNC 001882e4 (224 bytes) name=GetJstring + +/* GetJstring(_JNIEnv*, char const*, _jobject*, char*, unsigned long) */ + +void GetJstring(_JNIEnv *param_1,char *param_2,_jobject *param_3,char *param_4,ulong param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + _jstring *p_Var3; + + uVar1 = (**(code **)(*(long *)param_1 + 0xf8))(param_1,param_3); + uVar2 = (**(code **)(*(long *)param_1 + 0x2f0))(param_1,uVar1,param_2,"Ljava/lang/String;"); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar1); + p_Var3 = (_jstring *)(**(code **)(*(long *)param_1 + 0x2f8))(param_1,param_3,uVar2); + if (p_Var3 != (_jstring *)0x0) { + toChars(param_1,p_Var3,param_4,(int)param_5); + /* WARNING: Could not recover jumptable at 0x001883ac. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var3); + return; + } + return; +} + + +================================================================== + +### FUNC 001883c4 (188 bytes) name=createJObject + +/* createJObject(char const*, _JNIEnv*, _jclass**, _jobject**) */ + +undefined8 createJObject(char *param_1,_JNIEnv *param_2,_jclass **param_3,_jobject **param_4) + +{ + _jclass *p_Var1; + long lVar2; + _jobject *p_Var3; + _jmethodID *p_Var4; + + p_Var1 = (_jclass *)(**(code **)(*(long *)param_2 + 0x30))(param_2,param_1); + *param_3 = p_Var1; + if (p_Var1 != (_jclass *)0x0) { + lVar2 = (**(code **)(*(long *)param_2 + 0x108))(param_2,p_Var1,"",&DAT_0043a3f7); + p_Var4 = (_jmethodID *)*param_3; + if (lVar2 == 0) { + lVar2 = *(long *)param_2; + } + else { + p_Var3 = (_jobject *)_JNIEnv::NewObject((_jclass *)param_2,p_Var4,lVar2); + *param_4 = p_Var3; + if (p_Var3 != (_jobject *)0x0) { + return 1; + } + lVar2 = *(long *)param_2; + p_Var4 = (_jmethodID *)*param_3; + } + (**(code **)(lVar2 + 0xb8))(param_2,p_Var4); + } + return 0; +} + + +================================================================== + +### FUNC 00188480 (280 bytes) name=createBitmap + +/* createBitmap(_JNIEnv*, int, int, char const*) */ + +undefined8 createBitmap(_JNIEnv *param_1,int param_2,int param_3,char *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + _jmethodID *p_Var3; + + uVar1 = (**(code **)(*(long *)param_1 + 0x30)) + (param_1,"android/graphics/Bitmap$Config",(ulong)(uint)param_3); + uVar2 = (**(code **)(*(long *)param_1 + 0x480)) + (param_1,uVar1,param_4,"Landroid/graphics/Bitmap$Config;"); + uVar2 = (**(code **)(*(long *)param_1 + 0x488))(param_1,uVar1,uVar2); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar1); + p_Var3 = (_jmethodID *)(**(code **)(*(long *)param_1 + 0x30))(param_1,"android/graphics/Bitmap"); + uVar1 = (**(code **)(*(long *)param_1 + 0x388)) + (param_1,p_Var3,"createBitmap", + "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"); + uVar1 = _JNIEnv::CallStaticObjectMethod + ((_jclass *)param_1,p_Var3,uVar1,(ulong)(uint)param_2,(ulong)(uint)param_3,uVar2 + ); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var3); + return uVar1; +} + + +================================================================== + +### FUNC 00188598 (160 bytes) name=CallStaticObjectMethod + +/* _JNIEnv::CallStaticObjectMethod(_jclass*, _jmethodID*, ...) */ + +void _JNIEnv::CallStaticObjectMethod(_jclass *param_1,_jmethodID *param_2,...) + +{ + long lVar1; + undefined8 in_x3; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + long lVar2; + undefined1 auStack_a0 [8]; + undefined8 local_98; + undefined8 local_90; + undefined8 uStack_88; + undefined8 local_80; + undefined8 uStack_78; + undefined1 *local_70; + undefined1 **ppuStack_68; + undefined1 *puStack_60; + undefined8 uStack_58; + + lVar1 = tpidr_el0; + lVar2 = *(long *)(lVar1 + 0x28); + puStack_60 = auStack_a0; + ppuStack_68 = &local_70; + uStack_58 = 0xffffff80ffffffd8; + local_98 = in_x3; + local_90 = in_x4; + uStack_88 = in_x5; + local_80 = in_x6; + uStack_78 = in_x7; + local_70 = (undefined1 *)register0x00000008; + (**(code **)(*(long *)param_1 + 0x398))(); + if (*(long *)(lVar1 + 0x28) == lVar2) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00188638 (24 bytes) name=newGlobalObject + +/* newGlobalObject(_JNIEnv*, _jobject*) */ + +undefined8 newGlobalObject(_JNIEnv *param_1,_jobject *param_2) + +{ + undefined8 uVar1; + + if (param_2 != (_jobject *)0x0) { + /* WARNING: Could not recover jumptable at 0x00188644. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(*(long *)param_1 + 0xa8))(); + return uVar1; + } + return 0; +} + + +================================================================== + +### FUNC 00188650 (56 bytes) name=delGlobalObject + +/* delGlobalObject(_JNIEnv*, _jobject**) */ + +void delGlobalObject(_JNIEnv *param_1,_jobject **param_2) + +{ + if ((param_2 != (_jobject **)0x0) && (*param_2 != (_jobject *)0x0)) { + (**(code **)(*(long *)param_1 + 0xb0))(); + *param_2 = (_jobject *)0x0; + } + return; +} + + +================================================================== + +### FUNC 00188688 (380 bytes) name=newBitmap + +/* newBitmap(_JNIEnv*, _jobject**, int, int) */ + +undefined8 newBitmap(_JNIEnv *param_1,_jobject **param_2,int param_3,int param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + _jmethodID *p_Var3; + long lVar4; + _jobject *p_Var5; + + if ((param_2 != (_jobject **)0x0) && (*param_2 != (_jobject *)0x0)) { + (**(code **)(*(long *)param_1 + 0xb0)) + (param_1,*param_2,(ulong)(uint)param_3,(ulong)(uint)param_4); + *param_2 = (_jobject *)0x0; + } + uVar1 = (**(code **)(*(long *)param_1 + 0x30))(param_1,"android/graphics/Bitmap$Config"); + uVar2 = (**(code **)(*(long *)param_1 + 0x480)) + (param_1,uVar1,"ARGB_8888","Landroid/graphics/Bitmap$Config;"); + uVar2 = (**(code **)(*(long *)param_1 + 0x488))(param_1,uVar1,uVar2); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,uVar1); + p_Var3 = (_jmethodID *)(**(code **)(*(long *)param_1 + 0x30))(param_1,"android/graphics/Bitmap"); + uVar1 = (**(code **)(*(long *)param_1 + 0x388)) + (param_1,p_Var3,"createBitmap", + "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"); + lVar4 = _JNIEnv::CallStaticObjectMethod + ((_jclass *)param_1,p_Var3,uVar1,(ulong)(uint)param_3,(ulong)(uint)param_4,uVar2 + ); + (**(code **)(*(long *)param_1 + 0xb8))(param_1,p_Var3); + if (lVar4 != 0) { + p_Var5 = (_jobject *)(**(code **)(*(long *)param_1 + 0xa8))(param_1,lVar4); + *param_2 = p_Var5; + if (p_Var5 != (_jobject *)0x0) { + return 1; + } + (**(code **)(*(long *)param_1 + 0xb8))(param_1,lVar4); + } + return 0; +} + + +================================================================== + +### FUNC 00188804 (212 bytes) name=GenerateQuickPalette + +/* GenerateQuickPalette(tagRGBQUAD const*, unsigned int*) */ + +void GenerateQuickPalette(tagRGBQUAD *param_1,uint *param_2) + +{ + int iVar1; + tagRGBQUAD *ptVar2; + tagRGBQUAD tVar3; + tagRGBQUAD tVar4; + tagRGBQUAD tVar5; + int iVar6; + int iVar7; + int iVar8; + long lVar9; + + lVar9 = 0; + do { + ptVar2 = param_1 + lVar9; + tVar3 = ptVar2[2]; + tVar4 = ptVar2[1]; + tVar5 = *ptVar2; + iVar6 = (uint)(byte)tVar4 * -0x57 + (uint)(byte)tVar3 * -0x2c + (uint)(byte)tVar5 * 0x83; + iVar1 = iVar6 + 0x8000; + if (iVar1 < -0xff) { + iVar7 = 0; + } + else { + iVar6 = iVar6 + 0x80ff; + if (-1 < iVar1) { + iVar6 = iVar1; + } + iVar7 = 0xff; + if (iVar1 < 0x10000) { + iVar7 = iVar6 >> 8; + } + } + iVar6 = (uint)(byte)tVar4 * -0x6e + (uint)(byte)tVar3 * 0x83 + (uint)(byte)tVar5 * -0x15; + iVar1 = iVar6 + 0x8000; + if (iVar1 < -0xff) { + iVar8 = 0; + } + else { + iVar6 = iVar6 + 0x80ff; + if (-1 < iVar1) { + iVar6 = iVar1; + } + iVar8 = 0xff; + if (iVar1 < 0x10000) { + iVar8 = iVar6 >> 8; + } + } + *(uint *)((long)param_2 + lVar9) = + (uint)(byte)tVar3 * 0x4d + (uint)(byte)tVar4 * 0x96 + (uint)(byte)tVar5 * 0x1d >> 8 | + iVar7 << 0x10 | iVar8 << 0x18; + lVar9 = lVar9 + 4; + } while (lVar9 != 0x400); + return; +} + + +================================================================== + +### FUNC 001888d8 (548 bytes) name=GetYUV420 + +/* GetYUV420(unsigned char const*, int, int, tagRGBQUAD const*, unsigned int*, unsigned int*) */ + +undefined8 +GetYUV420(uchar *param_1,int param_2,int param_3,tagRGBQUAD *param_4,uint *param_5,uint *param_6) + +{ + byte *pbVar1; + int iVar2; + tagRGBQUAD *ptVar3; + uint uVar4; + uint uVar5; + tagRGBQUAD tVar6; + tagRGBQUAD tVar7; + tagRGBQUAD tVar8; + byte bVar9; + long lVar10; + bool bVar11; + int iVar12; + ulong uVar13; + ulong uVar14; + undefined8 uVar15; + long lVar16; + uint *puVar17; + byte *pbVar18; + uint *puVar19; + int iVar20; + int iVar21; + uint local_448 [256]; + long local_48; + + uVar14 = (ulong)(uint)param_3; + lVar10 = tpidr_el0; + local_48 = *(long *)(lVar10 + 0x28); + uVar15 = 0; + if ((param_5 != (uint *)0x0) && (param_6 != (uint *)0x0)) { + lVar16 = 0; + do { + ptVar3 = param_4 + lVar16; + tVar6 = ptVar3[2]; + tVar7 = ptVar3[1]; + tVar8 = *ptVar3; + iVar12 = (uint)(byte)tVar7 * -0x57 + (uint)(byte)tVar6 * -0x2c + (uint)(byte)tVar8 * 0x83; + iVar2 = iVar12 + 0x8000; + if (iVar2 < -0xff) { + iVar20 = 0; + } + else { + iVar12 = iVar12 + 0x80ff; + if (-1 < iVar2) { + iVar12 = iVar2; + } + iVar20 = 0xff; + if (iVar2 < 0x10000) { + iVar20 = iVar12 >> 8; + } + } + iVar12 = (uint)(byte)tVar7 * -0x6e + (uint)(byte)tVar6 * 0x83 + (uint)(byte)tVar8 * -0x15; + iVar2 = iVar12 + 0x8000; + if (iVar2 < -0xff) { + iVar21 = 0; + } + else { + iVar12 = iVar12 + 0x80ff; + if (-1 < iVar2) { + iVar12 = iVar2; + } + iVar21 = 0xff; + if (iVar2 < 0x10000) { + iVar21 = iVar12 >> 8; + } + } + *(uint *)((long)local_448 + lVar16) = + (uint)(byte)tVar6 * 0x4d + (uint)(byte)tVar7 * 0x96 + (uint)(byte)tVar8 * 0x1d >> 8 | + iVar20 << 0x10 | iVar21 << 0x18; + lVar16 = lVar16 + 4; + } while (lVar16 != 0x400); + if (0 < param_3) { + iVar2 = param_2; + if (param_2 < 0) { + iVar2 = param_2 + 1; + } + iVar2 = iVar2 >> 1; + lVar16 = (ulong)(iVar2 - 1) * 2 + 2; + do { + while( true ) { + uVar13 = (long)(int)uVar14; + puVar17 = param_5; + while( true ) { + uVar14 = uVar13 - 1; + pbVar18 = param_1 + uVar14 * (long)param_2; + bVar11 = 2 < param_2 + 1U; + if ((uVar14 & 1) == 0) break; + puVar19 = puVar17; + iVar12 = iVar2; + if (bVar11) { + do { + bVar9 = *pbVar18; + pbVar1 = pbVar18 + 1; + iVar12 = iVar12 + -1; + pbVar18 = pbVar18 + 2; + uVar4 = local_448[*pbVar1]; + *(char *)puVar19 = (char)local_448[bVar9]; + *(char *)((long)puVar19 + 1) = (char)uVar4; + puVar19 = (uint *)((long)puVar19 + 2); + } while (iVar12 != 0); + puVar17 = (uint *)((long)puVar17 + lVar16); + } + bVar11 = (long)uVar13 < 2; + uVar13 = uVar14; + if (bVar11) goto LAB_00188ac8; + } + if (bVar11) break; + param_5 = puVar17; + if ((int)uVar13 < 2) goto LAB_00188ac8; + } + param_5 = (uint *)((long)puVar17 + lVar16); + puVar19 = param_6; + iVar12 = iVar2; + do { + bVar9 = *pbVar18; + pbVar1 = pbVar18 + 1; + iVar12 = iVar12 + -1; + pbVar18 = pbVar18 + 2; + uVar4 = local_448[bVar9]; + uVar5 = local_448[*pbVar1]; + *(char *)puVar17 = (char)uVar4; + *(char *)((long)puVar17 + 1) = (char)uVar5; + *(short *)puVar19 = (short)(uVar4 >> 0x10); + puVar17 = (uint *)((long)puVar17 + 2); + puVar19 = (uint *)((long)puVar19 + 2); + } while (iVar12 != 0); + param_6 = (uint *)((long)param_6 + ((ulong)(iVar2 - 1) + 1) * 2); + } while (1 < (int)uVar13); + } +LAB_00188ac8: + uVar15 = 1; + } + if (*(long *)(lVar10 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar15; +} + + +================================================================== + +### FUNC 00188afc (244 bytes) name=bufferToMat + +/* bufferToMat(unsigned char const*, cv::Mat&) */ + +void bufferToMat(uchar *param_1,Mat *param_2) + +{ + ulong uVar1; + uchar *puVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + ulong uVar8; + long lVar9; + uchar *puVar10; + uchar *puVar12; + uchar *puVar13; + uint uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + uchar *puVar11; + + uVar3 = *(uint *)(param_2 + 8); + uVar4 = *(uint *)(param_2 + 0xc); + if (((byte)param_2[1] >> 6 & 1) != 0) { + memcpy(*(void **)(param_2 + 0x10),param_1,(long)(int)(uVar4 * uVar3)); + return; + } + if (0 < (int)uVar3) { + uVar1 = (ulong)(uVar4 - 1) + 1; + lVar9 = uVar1 - (uVar4 & 0x1f); + uVar8 = 0; + do { + if (uVar4 != 0) { + puVar12 = (uchar *)(*(long *)(param_2 + 0x10) + **(long **)(param_2 + 0x48) * uVar8); + puVar11 = param_1; + uVar14 = uVar4; + if (uVar1 < 0x20) goto LAB_00188bb8; + if (lVar9 == 0) goto LAB_00188bb8; + if ((puVar12 < param_1 + uVar1) && + (param_1 < (uchar *)(*(long *)(param_2 + 0x10) + uVar1 + + **(long **)(param_2 + 0x48) * uVar8))) goto LAB_00188bb8; + puVar2 = puVar12 + lVar9; + puVar10 = param_1 + lVar9; + puVar11 = param_1 + 0x10; + puVar13 = puVar12 + 0x10; + lVar7 = lVar9; + do { + puVar12 = puVar11 + -8; + uVar15 = *(undefined8 *)(puVar11 + -0x10); + uVar17 = *(undefined8 *)(puVar11 + 8); + uVar16 = *(undefined8 *)puVar11; + puVar11 = puVar11 + 0x20; + lVar7 = lVar7 + -0x20; + *(undefined8 *)(puVar13 + -8) = *(undefined8 *)puVar12; + *(undefined8 *)(puVar13 + -0x10) = uVar15; + *(undefined8 *)(puVar13 + 8) = uVar17; + *(undefined8 *)puVar13 = uVar16; + puVar13 = puVar13 + 0x20; + uVar5 = uVar4 - (int)lVar9; + puVar12 = puVar2; + uVar6 = uVar4 & 0x1f; + } while (lVar7 != 0); + while (puVar11 = puVar10, uVar14 = uVar5, uVar6 != 0) { +LAB_00188bb8: + puVar10 = puVar11 + 1; + *puVar12 = *puVar11; + uVar5 = uVar14 - 1; + puVar12 = puVar12 + 1; + uVar6 = uVar14 - 1; + } + param_1 = param_1 + uVar1; + } + uVar8 = uVar8 + 1; + } while (uVar8 != uVar3); + } + return; +} + + +================================================================== + +### FUNC 00188bf0 (244 bytes) name=matToBuffer + +/* matToBuffer(cv::Mat const&, unsigned char*) */ + +void matToBuffer(Mat *param_1,uchar *param_2) + +{ + ulong uVar1; + uchar *puVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + ulong uVar8; + long lVar9; + uchar *puVar10; + uchar *puVar11; + uchar *puVar12; + uchar *puVar13; + uint uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + + uVar3 = *(uint *)(param_1 + 8); + uVar4 = *(uint *)(param_1 + 0xc); + if (((byte)param_1[1] >> 6 & 1) != 0) { + memcpy(param_2,*(void **)(param_1 + 0x10),(long)(int)(uVar4 * uVar3)); + return; + } + if (0 < (int)uVar3) { + uVar1 = (ulong)(uVar4 - 1) + 1; + lVar9 = uVar1 - (uVar4 & 0x1f); + uVar8 = 0; + do { + if (uVar4 != 0) { + puVar12 = (uchar *)(*(long *)(param_1 + 0x10) + **(long **)(param_1 + 0x48) * uVar8); + puVar10 = param_2; + uVar14 = uVar4; + if (uVar1 < 0x20) goto LAB_00188ca8; + if (lVar9 == 0) goto LAB_00188ca8; + if ((param_2 < (uchar *)(*(long *)(param_1 + 0x10) + uVar1 + + **(long **)(param_1 + 0x48) * uVar8)) && (puVar12 < param_2 + uVar1) + ) goto LAB_00188ca8; + puVar2 = puVar12 + lVar9; + puVar11 = param_2 + lVar9; + puVar10 = param_2 + 0x10; + puVar13 = puVar12 + 0x10; + lVar7 = lVar9; + do { + puVar12 = puVar13 + -8; + uVar15 = *(undefined8 *)(puVar13 + -0x10); + uVar17 = *(undefined8 *)(puVar13 + 8); + uVar16 = *(undefined8 *)puVar13; + lVar7 = lVar7 + -0x20; + puVar13 = puVar13 + 0x20; + *(undefined8 *)(puVar10 + -8) = *(undefined8 *)puVar12; + *(undefined8 *)(puVar10 + -0x10) = uVar15; + *(undefined8 *)(puVar10 + 8) = uVar17; + *(undefined8 *)puVar10 = uVar16; + puVar10 = puVar10 + 0x20; + uVar5 = uVar4 - (int)lVar9; + puVar12 = puVar2; + uVar6 = uVar4 & 0x1f; + } while (lVar7 != 0); + while (puVar10 = puVar11, uVar14 = uVar5, uVar6 != 0) { +LAB_00188ca8: + puVar11 = puVar10 + 1; + *puVar10 = *puVar12; + uVar5 = uVar14 - 1; + puVar12 = puVar12 + 1; + uVar6 = uVar14 - 1; + } + param_2 = param_2 + uVar1; + } + uVar8 = uVar8 + 1; + } while (uVar8 != uVar3); + } + return; +} + + +================================================================== + +### FUNC 00188ce4 (172 bytes) name=matMaxMin + +/* matMaxMin(cv::Mat const&, int&, int&) */ + +void matMaxMin(Mat *param_1,int *param_2,int *param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + byte bVar4; + ulong uVar5; + long lVar6; + long lVar7; + uint uVar8; + byte *pbVar9; + int iVar10; + uint uVar11; + uint uVar12; + + uVar3 = *(uint *)param_1; + uVar1 = *(uint *)(param_1 + 8); + iVar2 = *(int *)(param_1 + 0xc); + *param_2 = -0x7fffffff; + if ((uVar3 & 0x4000) == 0) { + uVar3 = 1; + } + else { + uVar3 = uVar1; + uVar1 = 1; + } + *param_3 = 0x7fffffff; + if (0 < (int)uVar1) { + lVar6 = *(long *)(param_1 + 0x10); + uVar5 = 0; + lVar7 = **(long **)(param_1 + 0x48); + uVar8 = 0x7fffffff; + do { + if (uVar3 * iVar2 != 0) { + pbVar9 = (byte *)(lVar6 + lVar7 * uVar5); + iVar10 = -(uVar3 * iVar2); + do { + while( true ) { + bVar4 = *pbVar9; + uVar11 = (uint)bVar4; + uVar12 = (uint)bVar4; + if ((int)(uint)bVar4 <= *param_2) break; + *param_2 = uVar12; + uVar8 = *param_3; + if (uVar8 != uVar11 && (int)uVar12 <= (int)uVar8) goto LAB_00188d70; +LAB_00188d54: + iVar10 = iVar10 + 1; + pbVar9 = pbVar9 + 1; + if (iVar10 == 0) goto LAB_00188d80; + } + if ((int)uVar8 <= (int)uVar11) goto LAB_00188d54; +LAB_00188d70: + *param_3 = uVar12; + iVar10 = iVar10 + 1; + pbVar9 = pbVar9 + 1; + uVar8 = uVar11; + } while (iVar10 != 0); + } +LAB_00188d80: + uVar5 = uVar5 + 1; + } while (uVar5 != uVar1); + } + return; +} + + +================================================================== + +### FUNC 00188d90 (1836 bytes) name=edgeImage + +/* edgeImage(unsigned char const*, int, int, unsigned char*) */ + +void edgeImage(uchar *param_1,int param_2,int param_3,uchar *param_4) + +{ + ulong uVar1; + int *piVar2; + uchar *puVar3; + int iVar4; + char cVar5; + bool bVar6; + long lVar7; + uint uVar8; + uint uVar9; + long lVar10; + long lVar11; + ulong uVar12; + long lVar13; + uchar *puVar14; + uchar *puVar15; + uchar *puVar16; + uchar *puVar17; + uint uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined4 local_420; + undefined4 local_41c; + undefined4 auStack_418 [2]; + undefined4 *local_410; + undefined8 uStack_408; + undefined4 local_400 [2]; + undefined4 *local_3f8; + undefined8 uStack_3f0; + undefined4 local_3e8 [2]; + undefined4 *local_3e0; + undefined8 uStack_3d8; + undefined8 local_3d0; + undefined4 *puStack_3c8; + undefined8 uStack_3c0; + undefined8 uStack_3b8; + undefined4 local_3a8; + int local_3a4; + undefined8 uStack_3a0; + undefined4 uStack_398; + undefined4 uStack_394; + undefined4 uStack_390; + undefined4 uStack_38c; + undefined4 uStack_388; + undefined4 local_384; + undefined4 uStack_380; + undefined4 uStack_37c; + undefined4 uStack_378; + undefined4 local_374; + undefined4 uStack_370; + undefined4 local_36c; + undefined8 *local_368; + long *local_360; + long local_358; + undefined8 uStack_350; + undefined4 local_348; + int local_344; + undefined8 uStack_340; + undefined4 uStack_338; + undefined4 local_334; + undefined4 uStack_330; + undefined4 uStack_32c; + undefined4 uStack_328; + undefined4 local_324; + undefined4 uStack_320; + undefined4 uStack_31c; + undefined4 uStack_318; + undefined4 local_314; + undefined4 uStack_310; + undefined4 local_30c; + undefined8 *local_308; + undefined8 *local_300; + undefined8 local_2f8; + undefined8 uStack_2f0; + undefined4 local_2e8; + int local_2e4; + undefined8 uStack_2e0; + undefined4 uStack_2d8; + undefined4 local_2d4; + undefined4 uStack_2d0; + undefined4 uStack_2cc; + undefined4 uStack_2c8; + undefined4 local_2c4; + undefined4 uStack_2c0; + undefined4 uStack_2bc; + undefined4 uStack_2b8; + undefined4 local_2b4; + undefined4 uStack_2b0; + undefined4 local_2ac; + undefined8 *local_2a8; + undefined8 *local_2a0; + undefined8 local_298; + undefined8 uStack_290; + undefined4 local_288; + undefined8 local_284; + undefined4 uStack_27c; + undefined4 uStack_278; + undefined4 local_274; + undefined4 uStack_270; + undefined4 uStack_26c; + undefined4 uStack_268; + undefined4 local_264; + undefined4 uStack_260; + undefined4 uStack_25c; + undefined4 uStack_258; + undefined4 local_254; + undefined4 uStack_250; + undefined4 local_24c; + long local_248; + undefined8 *local_240; + undefined8 local_238; + undefined8 local_230; + long *local_228 [44]; + undefined4 local_c8; + undefined8 local_c4; + uint uStack_bc; + undefined4 uStack_b8; + undefined4 uStack_b4; + undefined4 uStack_b0; + undefined4 uStack_ac; + undefined4 uStack_a8; + undefined4 local_a4; + undefined4 uStack_a0; + undefined4 uStack_9c; + undefined4 uStack_98; + undefined4 local_94; + undefined4 uStack_90; + undefined4 local_8c; + long local_88; + long *local_80; + long local_78; + undefined8 local_70; + + lVar7 = tpidr_el0; + lVar11 = *(long *)(lVar7 + 0x28); + cv::Mat::zeros((Mat *)(ulong)(uint)param_3,param_2,0,(int)param_4); + local_88 = (long)&local_c4 + 4; + local_c8 = 0x42ff0000; + local_94 = 0; + uStack_90 = 0; + uStack_bc = 0; + uStack_b8 = 0; + local_c4 = 0; + uStack_9c = 0; + uStack_98 = 0; + local_a4 = 0; + uStack_a0 = 0; + uStack_ac = 0; + uStack_a8 = 0; + uStack_b4 = 0; + uStack_b0 = 0; + local_8c = 0; + local_78 = 0; + local_70 = 0; + local_80 = &local_78; + (**(code **)(*local_228[0] + 0x18))(local_228[0],local_228,&local_c8,0xffffffff); + cv::MatExpr::~MatExpr((MatExpr *)local_228); + if ((local_c8._1_1_ >> 6 & 1) == 0) { + if (0 < (int)local_c4._4_4_) { + uVar1 = (ulong)(uStack_bc - 1) + 1; + lVar13 = uVar1 - (uStack_bc & 0x1f); + uVar12 = 0; + do { + if (uStack_bc != 0) { + puVar16 = (uchar *)(CONCAT44(uStack_b4,uStack_b8) + *local_80 * uVar12); + puVar14 = param_1; + uVar18 = uStack_bc; + if (uVar1 < 0x20) goto LAB_00188ef4; + if (lVar13 == 0) goto LAB_00188ef4; + if ((puVar16 < param_1 + uVar1) && + (param_1 < (uchar *)(CONCAT44(uStack_b4,uStack_b8) + uVar1 + *local_80 * uVar12))) + goto LAB_00188ef4; + puVar3 = puVar16 + lVar13; + puVar15 = param_1 + lVar13; + puVar14 = param_1 + 0x10; + puVar17 = puVar16 + 0x10; + lVar10 = lVar13; + do { + puVar16 = puVar14 + -8; + uVar19 = *(undefined8 *)(puVar14 + -0x10); + uVar21 = *(undefined8 *)(puVar14 + 8); + uVar20 = *(undefined8 *)puVar14; + puVar14 = puVar14 + 0x20; + lVar10 = lVar10 + -0x20; + *(undefined8 *)(puVar17 + -8) = *(undefined8 *)puVar16; + *(undefined8 *)(puVar17 + -0x10) = uVar19; + *(undefined8 *)(puVar17 + 8) = uVar21; + *(undefined8 *)puVar17 = uVar20; + puVar17 = puVar17 + 0x20; + uVar8 = uStack_bc - (int)lVar13; + puVar16 = puVar3; + uVar9 = uStack_bc & 0x1f; + } while (lVar10 != 0); + while (puVar14 = puVar15, uVar18 = uVar8, uVar9 != 0) { +LAB_00188ef4: + puVar15 = puVar14 + 1; + *puVar16 = *puVar14; + uVar8 = uVar18 - 1; + puVar16 = puVar16 + 1; + uVar9 = uVar18 - 1; + } + param_1 = param_1 + uVar1; + } + uVar12 = uVar12 + 1; + } while (uVar12 != local_c4._4_4_); + } + } + else { + memcpy((void *)CONCAT44(uStack_b4,uStack_b8),param_1,(long)(int)(uStack_bc * local_c4._4_4_)); + } + uStack_2e0 = &local_c8; + local_248 = (long)&local_284 + 4; + uStack_2d8 = 0; + local_2d4 = 0; + local_288 = 0x42ff0000; + local_254 = 0; + uStack_250 = 0; + uStack_338 = 0; + local_334 = 0; + uStack_25c = 0; + uStack_258 = 0; + local_264 = 0; + uStack_260 = 0; + uStack_26c = 0; + uStack_268 = 0; + local_274 = 0; + uStack_270 = 0; + uStack_27c = 0; + uStack_278 = 0; + local_284 = 0; + local_24c = 0; + local_2e8 = 0x1010000; + local_348 = 0x2010000; + local_238 = 0; + local_230 = 0; + local_240 = &local_238; + uStack_340 = &local_288; + cv::medianBlur((_InputArray *)&local_2e8,(_OutputArray *)&local_348,3); + local_2a8 = &uStack_2e0; + local_2e8 = 0x42ff0000; + uStack_338 = 0; + local_334 = 0; + local_348 = 0x1010000; + uStack_398 = 0; + uStack_394 = 0; + local_3a8 = 0x2010000; + local_2b4 = 0; + uStack_2b0 = 0; + uStack_2bc = 0; + uStack_2b8 = 0; + local_2c4 = 0; + uStack_2c0 = 0; + uStack_2cc = 0; + uStack_2c8 = 0; + local_2d4 = 0; + uStack_2d0 = 0; + uStack_2e0._4_4_ = 0; + uStack_2d8 = 0; + local_2e4 = 0; + uStack_2e0._0_4_ = 0; + local_2ac = 0; + local_298 = 0; + uStack_290 = 0; + local_2a0 = &local_298; + uStack_3a0 = &local_2e8; + uStack_340 = &local_288; + cv::Canny((_InputArray *)&local_348,(_OutputArray *)&local_3a8,30.0,DAT_0043a5f0,3,true); + local_308 = &uStack_340; + local_348 = 0x42ff0000; + local_314 = 0; + uStack_310 = 0; + uStack_31c = 0; + uStack_318 = 0; + local_324 = 0; + uStack_320 = 0; + uStack_32c = 0; + uStack_328 = 0; + local_334 = 0; + uStack_330 = 0; + uStack_340._4_4_ = 0; + uStack_338 = 0; + local_344 = 0; + uStack_340._0_4_ = 0; + local_368 = &uStack_3a0; + uStack_408 = 0; + local_3e0 = &local_2e8; + local_3a8 = 0x42ff0000; + uStack_38c = 0; + uStack_388 = 0; + uStack_394 = 0; + uStack_390 = 0; + uStack_3a0._4_4_ = 0; + uStack_398 = 0; + local_3a4 = 0; + uStack_3a0._0_4_ = 0; + local_374 = 0; + uStack_370 = 0; + uStack_37c = 0; + uStack_378 = 0; + local_384 = 0; + uStack_380 = 0; + local_30c = 0; + uStack_3d8 = 0; + uStack_2f0 = 0; + local_2f8 = 0; + local_3e8[0] = 0x1010000; + uStack_3f0 = 0; + local_400[0] = 0x2010000; + local_36c = 0; + local_358 = 0; + uStack_350 = 0; + local_420 = 0xffffffff; + local_41c = 0xffffffff; + auStack_418[0] = 0x1010000; + puStack_3c8 = (undefined4 *)0x7fefffffffffffff; + local_3d0 = 0x7fefffffffffffff; + uStack_3b8 = 0x7fefffffffffffff; + uStack_3c0 = 0x7fefffffffffffff; + local_410 = &local_3a8; + local_3f8 = &local_348; + local_360 = &local_358; + local_300 = &local_2f8; + cv::dilate(local_3e8,local_400,auStack_418,&local_420,1,0,&local_3d0); + if (CONCAT44(local_36c,uStack_370) != 0) { + piVar2 = (int *)(CONCAT44(local_36c,uStack_370) + 0x14); + do { + iVar4 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar4 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_3a8); + } + } + uStack_370 = 0; + local_36c = 0; + uStack_390 = 0; + uStack_38c = 0; + uStack_398 = 0; + uStack_394 = 0; + uStack_380 = 0; + uStack_37c = 0; + uStack_388 = 0; + local_384 = 0; + if (0 < local_3a4) { + lVar13 = 0; + do { + *(undefined4 *)((long)local_368 + lVar13 * 4) = 0; + lVar13 = lVar13 + 1; + } while (lVar13 < local_3a4); + } + if (local_360 != &local_358) { + cv::fastFree(local_360); + } + local_3e0 = &local_3a8; + local_3a8 = 0x42ff0000; + puStack_3c8 = &local_348; + local_368 = &uStack_3a0; + local_374 = 0; + uStack_370 = 0; + local_3d0 = CONCAT44(local_3d0._4_4_,0x1010000); + uStack_3d8 = 0; + local_3e8[0] = 0x2010000; + uStack_37c = 0; + uStack_378 = 0; + local_384 = 0; + uStack_380 = 0; + uStack_38c = 0; + uStack_388 = 0; + uStack_394 = 0; + uStack_390 = 0; + uStack_3a0._4_4_ = 0; + uStack_398 = 0; + local_3a4 = 0; + uStack_3a0._0_4_ = 0; + local_36c = 0; + uStack_3c0 = 0; + local_358 = 0; + uStack_350 = 0; + local_360 = &local_358; + cv::medianBlur((_InputArray *)&local_3d0,(_OutputArray *)local_3e8,3); + if ((local_3a8._1_1_ >> 6 & 1) == 0) { + if (0 < (int)(uint)uStack_3a0) { + uVar1 = (ulong)(uStack_3a0._4_4_ - 1) + 1; + lVar13 = uVar1 - (uStack_3a0._4_4_ & 0x1f); + uVar12 = 0; + do { + if (uStack_3a0._4_4_ != 0) { + puVar16 = (uchar *)(CONCAT44(uStack_394,uStack_398) + *local_360 * uVar12); + puVar14 = param_4; + uVar18 = uStack_3a0._4_4_; + if (uVar1 < 0x20) goto LAB_0018921c; + if (lVar13 == 0) goto LAB_0018921c; + if ((param_4 < (uchar *)(CONCAT44(uStack_394,uStack_398) + uVar1 + *local_360 * uVar12)) + && (puVar16 < param_4 + uVar1)) goto LAB_0018921c; + puVar3 = puVar16 + lVar13; + puVar15 = param_4 + lVar13; + puVar14 = param_4 + 0x10; + puVar17 = puVar16 + 0x10; + lVar10 = lVar13; + do { + puVar16 = puVar17 + -8; + uVar19 = *(undefined8 *)(puVar17 + -0x10); + uVar21 = *(undefined8 *)(puVar17 + 8); + uVar20 = *(undefined8 *)puVar17; + lVar10 = lVar10 + -0x20; + puVar17 = puVar17 + 0x20; + *(undefined8 *)(puVar14 + -8) = *(undefined8 *)puVar16; + *(undefined8 *)(puVar14 + -0x10) = uVar19; + *(undefined8 *)(puVar14 + 8) = uVar21; + *(undefined8 *)puVar14 = uVar20; + puVar14 = puVar14 + 0x20; + uVar8 = uStack_3a0._4_4_ - (int)lVar13; + puVar16 = puVar3; + uVar9 = uStack_3a0._4_4_ & 0x1f; + } while (lVar10 != 0); + while (puVar14 = puVar15, uVar18 = uVar8, uVar9 != 0) { +LAB_0018921c: + puVar15 = puVar14 + 1; + *puVar14 = *puVar16; + uVar8 = uVar18 - 1; + puVar16 = puVar16 + 1; + uVar9 = uVar18 - 1; + } + param_4 = param_4 + uVar1; + } + uVar12 = uVar12 + 1; + } while (uVar12 != (uint)uStack_3a0); + } + lVar13 = CONCAT44(local_36c,uStack_370); + } + else { + memcpy(param_4,(void *)CONCAT44(uStack_394,uStack_398), + (long)(int)(uStack_3a0._4_4_ * (uint)uStack_3a0)); + lVar13 = CONCAT44(local_36c,uStack_370); + } + if (lVar13 != 0) { + piVar2 = (int *)(lVar13 + 0x14); + do { + iVar4 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar4 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_3a8); + } + } + uStack_370 = 0; + local_36c = 0; + uStack_390 = 0; + uStack_38c = 0; + uStack_398 = 0; + uStack_394 = 0; + uStack_380 = 0; + uStack_37c = 0; + uStack_388 = 0; + local_384 = 0; + if (0 < local_3a4) { + lVar13 = 0; + do { + *(undefined4 *)((long)local_368 + lVar13 * 4) = 0; + lVar13 = lVar13 + 1; + } while (lVar13 < local_3a4); + } + if (local_360 != &local_358) { + cv::fastFree(local_360); + } + if (CONCAT44(local_30c,uStack_310) != 0) { + piVar2 = (int *)(CONCAT44(local_30c,uStack_310) + 0x14); + do { + iVar4 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar4 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_348); + } + } + uStack_310 = 0; + local_30c = 0; + uStack_330 = 0; + uStack_32c = 0; + uStack_338 = 0; + local_334 = 0; + uStack_320 = 0; + uStack_31c = 0; + uStack_328 = 0; + local_324 = 0; + if (0 < local_344) { + lVar13 = 0; + do { + *(undefined4 *)((long)local_308 + lVar13 * 4) = 0; + lVar13 = lVar13 + 1; + } while (lVar13 < local_344); + } + if (local_300 != &local_2f8) { + cv::fastFree(local_300); + } + if (CONCAT44(local_2ac,uStack_2b0) != 0) { + piVar2 = (int *)(CONCAT44(local_2ac,uStack_2b0) + 0x14); + do { + iVar4 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar4 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_2e8); + } + } + uStack_2b0 = 0; + local_2ac = 0; + uStack_2d0 = 0; + uStack_2cc = 0; + uStack_2d8 = 0; + local_2d4 = 0; + uStack_2c0 = 0; + uStack_2bc = 0; + uStack_2c8 = 0; + local_2c4 = 0; + if (0 < local_2e4) { + lVar13 = 0; + do { + *(undefined4 *)((long)local_2a8 + lVar13 * 4) = 0; + lVar13 = lVar13 + 1; + } while (lVar13 < local_2e4); + } + if (local_2a0 != &local_298) { + cv::fastFree(local_2a0); + } + if (CONCAT44(local_24c,uStack_250) != 0) { + piVar2 = (int *)(CONCAT44(local_24c,uStack_250) + 0x14); + do { + iVar4 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar4 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_288); + } + } + uStack_250 = 0; + local_24c = 0; + uStack_270 = 0; + uStack_26c = 0; + uStack_278 = 0; + local_274 = 0; + uStack_260 = 0; + uStack_25c = 0; + uStack_268 = 0; + local_264 = 0; + if (0 < (int)local_284) { + lVar13 = 0; + do { + *(undefined4 *)(local_248 + lVar13 * 4) = 0; + lVar13 = lVar13 + 1; + } while (lVar13 < (int)local_284); + } + if (local_240 != &local_238) { + cv::fastFree(local_240); + } + if (CONCAT44(local_8c,uStack_90) != 0) { + piVar2 = (int *)(CONCAT44(local_8c,uStack_90) + 0x14); + do { + iVar4 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar4 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_c8); + } + } + uStack_90 = 0; + local_8c = 0; + uStack_b0 = 0; + uStack_ac = 0; + uStack_b8 = 0; + uStack_b4 = 0; + uStack_a0 = 0; + uStack_9c = 0; + uStack_a8 = 0; + local_a4 = 0; + if (0 < (int)local_c4) { + lVar13 = 0; + do { + *(undefined4 *)(local_88 + lVar13 * 4) = 0; + lVar13 = lVar13 + 1; + } while (lVar13 < (int)local_c4); + } + if (local_80 != &local_78) { + cv::fastFree(local_80); + } + if (*(long *)(lVar7 + 0x28) != lVar11) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0018982c (364 bytes) name=~MatExpr + +/* cv::MatExpr::~MatExpr() */ + +void __thiscall cv::MatExpr::~MatExpr(MatExpr *this) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + long lVar5; + long lVar6; + + if (*(long *)(this + 0x108) != 0) { + piVar1 = (int *)(*(long *)(this + 0x108) + 0x14); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar2 + -1 == 0) { + Mat::deallocate((Mat *)(this + 0xd0)); + } + } + *(undefined8 *)(this + 0x108) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + if (0 < *(int *)(this + 0xd4)) { + lVar5 = *(long *)(this + 0x110); + lVar6 = 0; + do { + *(undefined4 *)(lVar5 + lVar6 * 4) = 0; + lVar6 = lVar6 + 1; + } while (lVar6 < *(int *)(this + 0xd4)); + } + if (*(MatExpr **)(this + 0x118) != this + 0x120) { + fastFree(*(MatExpr **)(this + 0x118)); + } + if (*(long *)(this + 0xa8) != 0) { + piVar1 = (int *)(*(long *)(this + 0xa8) + 0x14); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar2 + -1 == 0) { + Mat::deallocate((Mat *)(this + 0x70)); + } + } + *(undefined8 *)(this + 0xa8) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0x90) = 0; + if (0 < *(int *)(this + 0x74)) { + lVar5 = *(long *)(this + 0xb0); + lVar6 = 0; + do { + *(undefined4 *)(lVar5 + lVar6 * 4) = 0; + lVar6 = lVar6 + 1; + } while (lVar6 < *(int *)(this + 0x74)); + } + if (*(MatExpr **)(this + 0xb8) != this + 0xc0) { + fastFree(*(MatExpr **)(this + 0xb8)); + } + if (*(long *)(this + 0x48) != 0) { + piVar1 = (int *)(*(long *)(this + 0x48) + 0x14); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar2 + -1 == 0) { + Mat::deallocate((Mat *)(this + 0x10)); + } + } + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x30) = 0; + if (0 < *(int *)(this + 0x14)) { + lVar5 = *(long *)(this + 0x50); + lVar6 = 0; + do { + *(undefined4 *)(lVar5 + lVar6 * 4) = 0; + lVar6 = lVar6 + 1; + } while (lVar6 < *(int *)(this + 0x14)); + } + if (*(MatExpr **)(this + 0x58) != this + 0x60) { + fastFree(*(MatExpr **)(this + 0x58)); + } + return; +} + + +================================================================== + +### FUNC 001899a4 (2388 bytes) name=labelImage + +/* labelImage(unsigned char const*, int, int, float, unsigned char*) */ + +void labelImage(uchar *param_1,int param_2,int param_3,float param_4,uchar *param_5) + +{ + int *piVar1; + uchar *puVar2; + char cVar3; + bool bVar4; + long lVar5; + uint uVar6; + undefined8 *puVar7; + undefined8 *puVar8; + uint uVar9; + undefined8 *puVar10; + long lVar11; + long lVar12; + int iVar13; + ulong uVar14; + long lVar15; + uchar *puVar16; + uchar *puVar17; + uchar *puVar18; + uchar *puVar19; + uint uVar20; + ulong uVar21; + undefined8 uVar22; + double dVar23; + undefined8 uVar24; + undefined8 uVar25; + undefined8 local_5d0; + undefined4 local_5c8 [2]; + void **local_5c0; + undefined8 uStack_5b8; + undefined4 local_5b0 [2]; + undefined8 **local_5a8; + undefined8 uStack_5a0; + undefined8 local_598; + undefined4 local_590; + undefined4 uStack_58c; + undefined4 local_588 [2]; + void **local_580; + undefined8 uStack_578; + void *local_570; + undefined4 *local_568; + undefined8 local_560; + undefined8 *local_558; + undefined8 *local_550; + undefined8 local_548; + long *local_540 [44]; + undefined8 local_3e0; + undefined8 **ppuStack_3d8; + undefined8 local_3d0; + undefined8 uStack_3c8; + undefined8 local_3b8; + undefined8 uStack_3b0; + undefined4 uStack_3a8; + undefined4 uStack_3a4; + undefined4 uStack_3a0; + undefined4 uStack_39c; + undefined4 uStack_398; + undefined4 local_394; + undefined4 uStack_390; + undefined4 uStack_38c; + undefined4 uStack_388; + undefined4 local_384; + undefined4 uStack_380; + undefined4 local_37c; + undefined8 *local_378; + long *local_370; + long local_368; + undefined8 local_360; + undefined4 local_358; + int local_354; + undefined8 uStack_350; + undefined4 uStack_348; + undefined4 uStack_344; + undefined4 uStack_340; + undefined4 uStack_33c; + undefined4 uStack_338; + undefined4 local_334; + undefined4 uStack_330; + undefined4 uStack_32c; + undefined4 uStack_328; + undefined4 local_324; + undefined4 uStack_320; + undefined4 local_31c; + undefined8 *local_318; + undefined8 *local_310; + undefined8 local_308; + undefined8 uStack_300; + undefined4 local_2f8; + int local_2f4; + undefined8 uStack_2f0; + undefined4 uStack_2e8; + undefined4 uStack_2e4; + undefined4 uStack_2e0; + undefined4 uStack_2dc; + undefined4 uStack_2d8; + undefined4 local_2d4; + undefined4 uStack_2d0; + undefined4 uStack_2cc; + undefined4 uStack_2c8; + undefined4 local_2c4; + undefined4 uStack_2c0; + undefined4 local_2bc; + undefined8 *local_2b8; + undefined8 *local_2b0; + undefined8 local_2a8; + undefined8 local_2a0; + undefined4 local_298; + undefined8 local_294; + undefined4 uStack_28c; + undefined4 uStack_288; + undefined4 local_284; + undefined4 uStack_280; + undefined4 uStack_27c; + undefined4 uStack_278; + undefined4 local_274; + undefined4 uStack_270; + undefined4 uStack_26c; + undefined4 uStack_268; + undefined4 local_264; + undefined4 uStack_260; + undefined4 local_25c; + long local_258; + undefined8 *local_250; + undefined8 local_248; + undefined8 local_240; + long *local_238 [44]; + undefined4 local_d8; + undefined8 local_d4; + uint uStack_cc; + undefined4 uStack_c8; + undefined4 uStack_c4; + undefined4 uStack_c0; + undefined4 uStack_bc; + undefined4 uStack_b8; + undefined4 local_b4; + undefined4 uStack_b0; + undefined4 uStack_ac; + undefined4 uStack_a8; + undefined4 local_a4; + undefined4 uStack_a0; + undefined4 local_9c; + long local_98; + long *local_90; + long local_88; + undefined8 uStack_80; + + lVar5 = tpidr_el0; + lVar12 = *(long *)(lVar5 + 0x28); + cv::Mat::zeros((Mat *)(ulong)(uint)param_3,param_2,0,(int)param_5); + local_98 = (long)&local_d4 + 4; + local_d8 = 0x42ff0000; + local_a4 = 0; + uStack_a0 = 0; + uStack_cc = 0; + uStack_c8 = 0; + local_d4 = 0; + uStack_ac = 0; + uStack_a8 = 0; + local_b4 = 0; + uStack_b0 = 0; + uStack_bc = 0; + uStack_b8 = 0; + uStack_c4 = 0; + uStack_c0 = 0; + local_9c = 0; + local_88 = 0; + uStack_80 = 0; + local_90 = &local_88; + (**(code **)(*local_238[0] + 0x18))(local_238[0],local_238,&local_d8,0xffffffff); + cv::MatExpr::~MatExpr((MatExpr *)local_238); + if ((local_d8._1_1_ >> 6 & 1) == 0) { + if (0 < (int)local_d4._4_4_) { + uVar21 = (ulong)(uStack_cc - 1) + 1; + lVar15 = uVar21 - (uStack_cc & 0x1f); + uVar14 = 0; + do { + if (uStack_cc != 0) { + puVar18 = (uchar *)(CONCAT44(uStack_c4,uStack_c8) + *local_90 * uVar14); + puVar16 = param_1; + uVar20 = uStack_cc; + if (uVar21 < 0x20) goto LAB_00189b0c; + if (lVar15 == 0) goto LAB_00189b0c; + if ((puVar18 < param_1 + uVar21) && + (param_1 < (uchar *)(CONCAT44(uStack_c4,uStack_c8) + uVar21 + *local_90 * uVar14))) + goto LAB_00189b0c; + puVar2 = puVar18 + lVar15; + puVar17 = param_1 + lVar15; + puVar16 = param_1 + 0x10; + puVar19 = puVar18 + 0x10; + lVar11 = lVar15; + do { + puVar18 = puVar16 + -8; + uVar22 = *(undefined8 *)(puVar16 + -0x10); + uVar25 = *(undefined8 *)(puVar16 + 8); + uVar24 = *(undefined8 *)puVar16; + puVar16 = puVar16 + 0x20; + lVar11 = lVar11 + -0x20; + *(undefined8 *)(puVar19 + -8) = *(undefined8 *)puVar18; + *(undefined8 *)(puVar19 + -0x10) = uVar22; + *(undefined8 *)(puVar19 + 8) = uVar25; + *(undefined8 *)puVar19 = uVar24; + puVar19 = puVar19 + 0x20; + uVar6 = uStack_cc - (int)lVar15; + puVar18 = puVar2; + uVar9 = uStack_cc & 0x1f; + } while (lVar11 != 0); + while (puVar16 = puVar17, uVar20 = uVar6, uVar9 != 0) { +LAB_00189b0c: + puVar17 = puVar16 + 1; + *puVar18 = *puVar16; + uVar6 = uVar20 - 1; + puVar18 = puVar18 + 1; + uVar9 = uVar20 - 1; + } + param_1 = param_1 + uVar21; + } + uVar14 = uVar14 + 1; + } while (uVar14 != local_d4._4_4_); + } + } + else { + memcpy((void *)CONCAT44(uStack_c4,uStack_c8),param_1,(long)(int)(uStack_cc * local_d4._4_4_)); + } + uStack_2f0 = &local_d8; + local_258 = (long)&local_294 + 4; + local_298 = 0x42ff0000; + local_264 = 0; + uStack_260 = 0; + uStack_2e8 = 0; + uStack_2e4 = 0; + uStack_348 = 0; + uStack_344 = 0; + uStack_26c = 0; + uStack_268 = 0; + local_274 = 0; + uStack_270 = 0; + uStack_27c = 0; + uStack_278 = 0; + local_284 = 0; + uStack_280 = 0; + uStack_28c = 0; + uStack_288 = 0; + local_294 = 0; + local_25c = 0; + local_2f8 = 0x1010000; + local_358 = 0x2010000; + local_248 = 0; + local_240 = 0; + local_250 = &local_248; + uStack_350 = &local_298; + cv::threshold((_InputArray *)&local_2f8,(_OutputArray *)&local_358,0.0,DAT_0043a5f8,8); + local_2b8 = &uStack_2f0; + local_2f8 = 0x42ff0000; + uStack_348 = 0; + uStack_344 = 0; + local_358 = 0x1010000; + uStack_3a8 = 0; + uStack_3a4 = 0; + local_3b8._0_4_ = 0x2010000; + local_2c4 = 0; + uStack_2c0 = 0; + uStack_2cc = 0; + uStack_2c8 = 0; + local_2d4 = 0; + uStack_2d0 = 0; + uStack_2dc = 0; + uStack_2d8 = 0; + uStack_2e4 = 0; + uStack_2e0 = 0; + uStack_2f0._4_4_ = 0; + uStack_2e8 = 0; + local_2f4 = 0; + uStack_2f0._0_4_ = 0; + local_2bc = 0; + local_2a8 = 0; + local_2a0 = 0; + local_2b0 = &local_2a8; + uStack_3b0 = &local_2f8; + uStack_350 = &local_298; + cv::medianBlur((_InputArray *)&local_358,(_OutputArray *)&local_3b8,3); + local_318 = &uStack_350; + local_358 = 0x42ff0000; + local_324 = 0; + uStack_320 = 0; + uStack_32c = 0; + uStack_328 = 0; + local_334 = 0; + uStack_330 = 0; + uStack_33c = 0; + uStack_338 = 0; + uStack_344 = 0; + uStack_340 = 0; + uStack_350._4_4_ = 0; + uStack_348 = 0; + local_354 = 0; + uStack_350._0_4_ = 0; + local_558 = (undefined8 *)CONCAT44(local_558._4_4_,0x1010000); + local_550 = (undefined8 *)&local_2f8; + local_3b8._0_4_ = 0x42ff0000; + local_378 = &uStack_3b0; + local_588[0] = 0x1010000; + local_31c = 0; + uStack_300 = 0; + local_308 = 0; + uStack_39c = 0; + uStack_398 = 0; + uStack_3a4 = 0; + uStack_3a0 = 0; + uStack_3b0._4_4_ = 0; + uStack_3a8 = 0; + local_3b8._4_4_ = 0; + uStack_3b0._0_4_ = 0; + uStack_38c = 0; + uStack_388 = 0; + local_394 = 0; + uStack_390 = 0; + local_548 = 0; + local_560 = 0; + local_570 = (void *)CONCAT44(local_570._4_4_,0x2010000); + local_384 = 0; + uStack_380 = 0; + uStack_578 = 0; + local_37c = 0; + local_368 = 0; + local_360 = 0; + local_590 = 0xffffffff; + uStack_58c = 0xffffffff; + ppuStack_3d8 = (undefined8 **)0x7fefffffffffffff; + local_3e0 = 0x7fefffffffffffff; + uStack_3c8 = 0x7fefffffffffffff; + local_3d0 = 0x7fefffffffffffff; + local_580 = (void **)&local_3b8; + local_568 = &local_358; + local_370 = &local_368; + local_310 = &local_308; + cv::dilate(&local_558,&local_570,local_588,&local_590,1,0,&local_3e0); + if (CONCAT44(local_37c,uStack_380) != 0) { + piVar1 = (int *)(CONCAT44(local_37c,uStack_380) + 0x14); + do { + iVar13 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_3b8); + } + } + uStack_380 = 0; + local_37c = 0; + uStack_3a0 = 0; + uStack_39c = 0; + uStack_3a8 = 0; + uStack_3a4 = 0; + uStack_390 = 0; + uStack_38c = 0; + uStack_398 = 0; + local_394 = 0; + if (0 < local_3b8._4_4_) { + lVar15 = 0; + do { + *(undefined4 *)((long)local_378 + lVar15 * 4) = 0; + lVar15 = lVar15 + 1; + } while (lVar15 < local_3b8._4_4_); + } + if (local_370 != &local_368) { + cv::fastFree(local_370); + } + uStack_3b0 = &local_358; + local_3e0 = CONCAT44(local_3e0._4_4_,0x8204000c); + ppuStack_3d8 = &local_558; + local_588[0] = 0x8203001c; + local_580 = &local_570; + local_550 = (undefined8 *)0x0; + local_548 = 0; + local_560 = 0; + local_558 = (undefined8 *)0x0; + local_570 = (void *)0x0; + local_568 = (undefined4 *)0x0; + uStack_3a8 = 0; + uStack_3a4 = 0; + local_3d0 = 0; + local_3b8._0_4_ = 0x3010000; + local_598 = 0; + uStack_578 = 0; + iVar13 = 0; + cv::findContours(&local_3b8,&local_3e0,local_588,0,2,&local_598); + cv::Mat::zeros((Mat *)(ulong)(uint)param_3,param_2,0,iVar13); + local_378 = &uStack_3b0; + local_3b8._0_4_ = 0x42ff0000; + local_384 = 0; + uStack_380 = 0; + uStack_3b0._4_4_ = 0; + uStack_3a8 = 0; + local_3b8._4_4_ = 0; + uStack_3b0._0_4_ = 0; + uStack_38c = 0; + uStack_388 = 0; + local_394 = 0; + uStack_390 = 0; + uStack_39c = 0; + uStack_398 = 0; + uStack_3a4 = 0; + uStack_3a0 = 0; + local_37c = 0; + local_368 = 0; + local_360 = 0; + local_370 = &local_368; + (**(code **)(*local_540[0] + 0x18))(local_540[0],local_540,&local_3b8,0xffffffff); + cv::MatExpr::~MatExpr((MatExpr *)local_540); + iVar13 = (int)((long)local_550 - (long)local_558 >> 3) * -0x55555555; + if (0 < iVar13) { + lVar15 = 0; + uVar21 = 0; + while( true ) { + ppuStack_3d8 = (undefined8 **)((long)local_558 + lVar15); + local_3d0 = 0; + local_3e0 = CONCAT44(local_3e0._4_4_,0x8103000c); + dVar23 = (double)cv::contourArea((_InputArray *)&local_3e0,false); + if ((double)param_4 <= dVar23) { + local_588[0] = 0x3010000; + local_580 = (void **)&local_3b8; + uStack_578 = 0; + local_5b0[0] = 0x8104000c; + uStack_5a0 = 0; + local_3e0 = 0x406fe00000000000; + local_3d0 = 0; + uStack_3c8 = 0; + ppuStack_3d8 = (undefined8 **)0x0; + uStack_5b8 = 0; + local_5d0 = 0; + local_5c8[0] = 0x8103001c; + local_5c0 = &local_570; + local_5a8 = &local_558; + cv::drawContours(local_588,local_5b0,uVar21 & 0xffffffff,&local_3e0,0xffffffff,8,local_5c8, + 0x7fffffff,&local_5d0); + } + uVar21 = uVar21 + 1; + if ((long)iVar13 <= (long)uVar21) break; + lVar15 = lVar15 + 0x18; + } + } + if ((local_3b8._1_1_ >> 6 & 1) == 0) { + if (0 < (int)(uint)uStack_3b0) { + uVar21 = (ulong)(uStack_3b0._4_4_ - 1) + 1; + lVar15 = uVar21 - (uStack_3b0._4_4_ & 0x1f); + uVar14 = 0; + do { + if (uStack_3b0._4_4_ != 0) { + puVar18 = (uchar *)(CONCAT44(uStack_3a4,uStack_3a8) + *local_370 * uVar14); + puVar16 = param_5; + uVar20 = uStack_3b0._4_4_; + if (uVar21 < 0x20) goto LAB_0018a000; + if (lVar15 == 0) goto LAB_0018a000; + if ((param_5 < (uchar *)(CONCAT44(uStack_3a4,uStack_3a8) + uVar21 + *local_370 * uVar14)) + && (puVar18 < param_5 + uVar21)) goto LAB_0018a000; + puVar2 = puVar18 + lVar15; + puVar17 = param_5 + lVar15; + puVar16 = param_5 + 0x10; + puVar19 = puVar18 + 0x10; + lVar11 = lVar15; + do { + puVar18 = puVar19 + -8; + uVar22 = *(undefined8 *)(puVar19 + -0x10); + uVar25 = *(undefined8 *)(puVar19 + 8); + uVar24 = *(undefined8 *)puVar19; + lVar11 = lVar11 + -0x20; + puVar19 = puVar19 + 0x20; + *(undefined8 *)(puVar16 + -8) = *(undefined8 *)puVar18; + *(undefined8 *)(puVar16 + -0x10) = uVar22; + *(undefined8 *)(puVar16 + 8) = uVar25; + *(undefined8 *)puVar16 = uVar24; + puVar16 = puVar16 + 0x20; + uVar6 = uStack_3b0._4_4_ - (int)lVar15; + puVar18 = puVar2; + uVar9 = uStack_3b0._4_4_ & 0x1f; + } while (lVar11 != 0); + while (puVar16 = puVar17, uVar20 = uVar6, uVar9 != 0) { +LAB_0018a000: + puVar17 = puVar16 + 1; + *puVar16 = *puVar18; + uVar6 = uVar20 - 1; + puVar18 = puVar18 + 1; + uVar9 = uVar20 - 1; + } + param_5 = param_5 + uVar21; + } + uVar14 = uVar14 + 1; + } while (uVar14 != (uint)uStack_3b0); + } + lVar15 = CONCAT44(local_37c,uStack_380); + } + else { + memcpy(param_5,(void *)CONCAT44(uStack_3a4,uStack_3a8), + (long)(int)(uStack_3b0._4_4_ * (uint)uStack_3b0)); + lVar15 = CONCAT44(local_37c,uStack_380); + } + if (lVar15 != 0) { + piVar1 = (int *)(lVar15 + 0x14); + do { + iVar13 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_3b8); + } + } + uStack_380 = 0; + local_37c = 0; + uStack_3a0 = 0; + uStack_39c = 0; + uStack_3a8 = 0; + uStack_3a4 = 0; + uStack_390 = 0; + uStack_38c = 0; + uStack_398 = 0; + local_394 = 0; + if (0 < local_3b8._4_4_) { + lVar15 = 0; + do { + *(undefined4 *)((long)local_378 + lVar15 * 4) = 0; + lVar15 = lVar15 + 1; + } while (lVar15 < local_3b8._4_4_); + } + if (local_370 != &local_368) { + cv::fastFree(local_370); + } + puVar7 = local_558; + puVar8 = local_550; + if (local_570 != (void *)0x0) { + operator_delete(local_570); + puVar7 = local_558; + puVar8 = local_550; + } + for (; puVar10 = local_550, puVar7 != local_550; puVar7 = puVar7 + 3) { + local_550 = puVar8; + if ((void *)*puVar7 != (void *)0x0) { + operator_delete((void *)*puVar7); + } + puVar8 = local_550; + local_550 = puVar10; + } + local_550 = puVar8; + if (local_558 != (undefined8 *)0x0) { + operator_delete(local_558); + } + if (CONCAT44(local_31c,uStack_320) != 0) { + piVar1 = (int *)(CONCAT44(local_31c,uStack_320) + 0x14); + do { + iVar13 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_358); + } + } + uStack_320 = 0; + local_31c = 0; + uStack_340 = 0; + uStack_33c = 0; + uStack_348 = 0; + uStack_344 = 0; + uStack_330 = 0; + uStack_32c = 0; + uStack_338 = 0; + local_334 = 0; + if (0 < local_354) { + lVar15 = 0; + do { + *(undefined4 *)((long)local_318 + lVar15 * 4) = 0; + lVar15 = lVar15 + 1; + } while (lVar15 < local_354); + } + if (local_310 != &local_308) { + cv::fastFree(local_310); + } + if (CONCAT44(local_2bc,uStack_2c0) != 0) { + piVar1 = (int *)(CONCAT44(local_2bc,uStack_2c0) + 0x14); + do { + iVar13 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_2f8); + } + } + uStack_2c0 = 0; + local_2bc = 0; + uStack_2e0 = 0; + uStack_2dc = 0; + uStack_2e8 = 0; + uStack_2e4 = 0; + uStack_2d0 = 0; + uStack_2cc = 0; + uStack_2d8 = 0; + local_2d4 = 0; + if (0 < local_2f4) { + lVar15 = 0; + do { + *(undefined4 *)((long)local_2b8 + lVar15 * 4) = 0; + lVar15 = lVar15 + 1; + } while (lVar15 < local_2f4); + } + if (local_2b0 != &local_2a8) { + cv::fastFree(local_2b0); + } + if (CONCAT44(local_25c,uStack_260) != 0) { + piVar1 = (int *)(CONCAT44(local_25c,uStack_260) + 0x14); + do { + iVar13 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_298); + } + } + uStack_260 = 0; + local_25c = 0; + uStack_280 = 0; + uStack_27c = 0; + uStack_288 = 0; + local_284 = 0; + uStack_270 = 0; + uStack_26c = 0; + uStack_278 = 0; + local_274 = 0; + if (0 < (int)local_294) { + lVar15 = 0; + do { + *(undefined4 *)(local_258 + lVar15 * 4) = 0; + lVar15 = lVar15 + 1; + } while (lVar15 < (int)local_294); + } + if (local_250 != &local_248) { + cv::fastFree(local_250); + } + if (CONCAT44(local_9c,uStack_a0) != 0) { + piVar1 = (int *)(CONCAT44(local_9c,uStack_a0) + 0x14); + do { + iVar13 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_d8); + } + } + uStack_a0 = 0; + local_9c = 0; + uStack_c0 = 0; + uStack_bc = 0; + uStack_c8 = 0; + uStack_c4 = 0; + uStack_b0 = 0; + uStack_ac = 0; + uStack_b8 = 0; + local_b4 = 0; + if (0 < (int)local_d4) { + lVar15 = 0; + do { + *(undefined4 *)(local_98 + lVar15 * 4) = 0; + lVar15 = lVar15 + 1; + } while (lVar15 < (int)local_d4); + } + if (local_90 != &local_88) { + cv::fastFree(local_90); + } + if (*(long *)(lVar5 + 0x28) != lVar12) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0018a7b8 (4 bytes) name=labelImageRect + +/* labelImageRect(char const*, int, int, float, char*) */ + +void labelImageRect(char *param_1,int param_2,int param_3,float param_4,char *param_5) + +{ + return; +} + + +================================================================== + +### FUNC 0018a7bc (28 bytes) name=ImageProc + +/* ImageProc::ImageProc(FilterPara const&) */ + +void __thiscall ImageProc::ImageProc(ImageProc *this,FilterPara *param_1) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0x1c); + *(undefined8 *)(this + 0x24) = *(undefined8 *)(param_1 + 0x24); + *(undefined8 *)(this + 0x1c) = uVar1; + uVar1 = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0x18) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = uVar1; + uVar1 = *(undefined8 *)param_1; + *(undefined8 *)(this + 8) = *(undefined8 *)(param_1 + 8); + *(undefined8 *)this = uVar1; + return; +} + + +================================================================== + +### FUNC 0018a7d8 (28 bytes) name=setFilterPara + +/* ImageProc::setFilterPara(FilterPara const&) */ + +void __thiscall ImageProc::setFilterPara(ImageProc *this,FilterPara *param_1) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0x1c); + *(undefined8 *)(this + 0x24) = *(undefined8 *)(param_1 + 0x24); + *(undefined8 *)(this + 0x1c) = uVar1; + uVar1 = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0x18) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = uVar1; + uVar1 = *(undefined8 *)param_1; + *(undefined8 *)(this + 8) = *(undefined8 *)(param_1 + 8); + *(undefined8 *)this = uVar1; + return; +} + + +================================================================== + +### FUNC 0018a7f4 (3548 bytes) name=findTarget + +/* WARNING: Type propagation algorithm not settling */ +/* ImageProc::findTarget(unsigned int, unsigned char const*, int, int, int, unsigned int const*, + int) */ + +void ImageProc::findTarget + (uint param_1,uchar *param_2,int param_3,int param_4,int param_5,uint *param_6, + int param_7) + +{ + int *piVar1; + _InputArray *p_Var2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + char cVar10; + bool bVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + long lVar16; + undefined8 ******ppppppuVar17; + undefined8 ******ppppppuVar18; + int iVar19; + ImageProc *this; + ImageProc *this_00; + ImageProc *this_01; + _InputArray *p_Var20; + undefined8 *puVar21; + uint uVar22; + _InputArray *extraout_x1; + _InputArray *extraout_x1_00; + _InputArray *p_Var23; + int in_w7; + vector> *in_x8; + long lVar24; + undefined8 *******pppppppuVar25; + long lVar26; + _InputArray *p_Var27; + _InputArray *p_Var28; + _InputArray *p_Var29; + _InputArray *p_Var30; + ulong uVar31; + undefined8 *******pppppppuVar32; + int iVar33; + allocator_conflict *paVar34; + ulong uVar35; + ulong uVar36; + undefined8 uVar37; + undefined8 ******ppppppuVar38; + undefined8 uVar39; + undefined8 uVar40; + undefined8 uVar41; + undefined8 uVar42; + undefined8 uVar43; + undefined8 uVar44; + uint local_360; + uint uStack_35c; + int iStack_358; + int iStack_354; + undefined8 *******local_350; + undefined8 *******pppppppuStack_348; + undefined8 *******local_340; + undefined8 *******pppppppuStack_338; + undefined8 local_330; + undefined4 uStack_328; + undefined4 uStack_324; + undefined8 *******local_320; + undefined8 *******local_318; + undefined8 local_310; + undefined4 uStack_308; + undefined4 uStack_304; + undefined8 *******local_300; + undefined8 *******local_2f8; + undefined8 local_2f0; + undefined8 ******local_2e8; + undefined8 ******local_2e0; + undefined8 local_2d8; + undefined8 ******local_2d0; + undefined8 ******ppppppuStack_2c8; + undefined8 uStack_2c0; + undefined8 uStack_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + undefined8 local_2a0; + undefined4 uStack_298; + undefined4 uStack_294; + undefined4 uStack_290; + undefined4 local_28c; + undefined4 uStack_288; + undefined4 uStack_284; + undefined4 uStack_280; + undefined4 local_27c; + undefined4 uStack_278; + undefined4 local_274; + undefined8 *local_270; + undefined8 *local_268; + undefined8 local_260; + undefined8 uStack_258; + undefined4 local_248; + undefined8 local_244; + undefined4 uStack_23c; + undefined4 uStack_238; + undefined4 local_234; + undefined4 uStack_230; + undefined4 uStack_22c; + undefined4 uStack_228; + undefined4 local_224; + undefined4 uStack_220; + undefined4 uStack_21c; + undefined4 uStack_218; + undefined4 local_214; + undefined4 uStack_210; + undefined4 local_20c; + long local_208; + undefined8 *local_200; + undefined8 local_1f8; + undefined8 uStack_1f0; + undefined4 local_1e8; + int local_1e4; + undefined8 uStack_1e0; + undefined4 uStack_1d8; + undefined4 local_1d4; + undefined4 uStack_1d0; + undefined4 uStack_1cc; + undefined4 uStack_1c8; + undefined4 local_1c4; + undefined4 uStack_1c0; + undefined4 uStack_1bc; + undefined4 uStack_1b8; + undefined4 local_1b4; + undefined4 uStack_1b0; + undefined4 local_1ac; + undefined8 *local_1a8; + undefined8 *local_1a0; + undefined8 local_198; + undefined8 uStack_190; + undefined4 local_188; + int local_184; + undefined8 uStack_180; + undefined4 uStack_178; + undefined4 uStack_174; + undefined4 uStack_170; + undefined4 uStack_16c; + undefined4 uStack_168; + undefined4 local_164; + undefined4 uStack_160; + undefined4 uStack_15c; + undefined4 uStack_158; + undefined4 local_154; + undefined4 uStack_150; + undefined4 local_14c; + undefined8 *local_148; + undefined8 *local_140; + undefined8 local_138; + undefined8 local_130; + undefined4 local_128; + undefined8 local_124; + undefined4 uStack_11c; + undefined4 uStack_118; + undefined4 local_114; + undefined4 uStack_110; + undefined4 uStack_10c; + undefined4 uStack_108; + undefined4 local_104; + undefined4 uStack_100; + undefined4 uStack_fc; + undefined4 uStack_f8; + undefined4 local_f4; + undefined4 uStack_f0; + undefined4 local_ec; + long local_e8; + undefined8 *local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined4 local_c8; + undefined8 local_c4; + undefined4 uStack_bc; + undefined4 uStack_b8; + undefined4 local_b4; + undefined4 uStack_b0; + undefined4 uStack_ac; + undefined4 uStack_a8; + undefined4 local_a4; + undefined4 uStack_a0; + undefined4 uStack_9c; + undefined4 uStack_98; + undefined4 local_94; + undefined4 uStack_90; + undefined4 local_8c; + long local_88; + undefined8 *local_80; + undefined8 local_78; + undefined8 local_70; + + this = (ImageProc *)(ulong)param_1; + lVar16 = tpidr_el0; + lVar24 = *(long *)(lVar16 + 0x28); + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)in_x8 = 0; + iVar19 = MAG_RevisedTemp2Gray((ulong)param_2 & 0xffffffff,*(undefined4 *)this); + this_00 = (ImageProc *)MAG_RevisedTemp2Gray((ulong)param_2 & 0xffffffff,*(undefined4 *)(this + 4)) + ; + local_88 = (long)&local_c4 + 4; + local_c8 = 0x42ff0000; + local_94 = 0; + uStack_90 = 0; + uStack_9c = 0; + uStack_98 = 0; + local_a4 = 0; + uStack_a0 = 0; + uStack_ac = 0; + uStack_a8 = 0; + local_b4 = 0; + uStack_b0 = 0; + uStack_bc = 0; + uStack_b8 = 0; + local_c4 = 0; + local_8c = 0; + local_78 = 0; + local_70 = 0; + local_80 = &local_78; + raw8bitToMat(this_00,(uchar *)(ulong)(uint)param_3,param_4,param_5,(Mat *)&local_c8); + uStack_1e0 = &local_128; + local_e8 = (long)&local_124 + 4; + local_128 = 0x42ff0000; + uStack_178 = 0; + uStack_174 = 0; + uStack_1d8 = 0; + local_1d4 = 0; + local_f4 = 0; + uStack_f0 = 0; + uStack_fc = 0; + uStack_f8 = 0; + local_104 = 0; + uStack_100 = 0; + uStack_10c = 0; + uStack_108 = 0; + local_114 = 0; + uStack_110 = 0; + uStack_11c = 0; + uStack_118 = 0; + local_124 = 0; + local_ec = 0; + local_188 = 0x1010000; + local_1e8 = 0x2010000; + local_d8 = 0; + local_d0 = 0; + local_e0 = &local_d8; + uStack_180 = &local_c8; + this_01 = (ImageProc *)cv::medianBlur((_InputArray *)&local_188,(_OutputArray *)&local_1e8,3); + local_148 = &uStack_180; + local_188 = 0x42ff0000; + local_154 = 0; + uStack_150 = 0; + uStack_15c = 0; + uStack_158 = 0; + local_164 = 0; + uStack_160 = 0; + uStack_16c = 0; + uStack_168 = 0; + uStack_174 = 0; + uStack_170 = 0; + uStack_180._4_4_ = 0; + uStack_178 = 0; + local_184 = 0; + uStack_180._0_4_ = 0; + local_14c = 0; + local_138 = 0; + local_130 = 0; + local_140 = &local_138; + threshold_(this_01,(Mat *)&local_128,(Mat *)&local_188,iVar19,(int)this_00); + ppppppuStack_2c8 = (undefined8 ******)&local_188; + local_2e0 = (undefined8 ******)&local_1e8; + uStack_2c0 = 0; + uStack_308 = 0xffffffff; + uStack_304 = 0xffffffff; + local_300 = (undefined8 *******)CONCAT44(local_300._4_4_,0x1010000); + local_1a8 = &uStack_1e0; + local_1e8 = 0x42ff0000; + local_2f8 = (undefined8 *******)&local_248; + local_1b4 = 0; + uStack_1b0 = 0; + uStack_1bc = 0; + uStack_1b8 = 0; + local_1c4 = 0; + uStack_1c0 = 0; + uStack_1cc = 0; + uStack_1c8 = 0; + local_1d4 = 0; + uStack_1d0 = 0; + uStack_1e0._4_4_ = 0; + uStack_1d8 = 0; + local_1e4 = 0; + uStack_1e0._0_4_ = 0; + local_2d8 = 0; + local_248 = 0x42ff0000; + local_1ac = 0; + uStack_22c = 0; + uStack_228 = 0; + local_234 = 0; + uStack_230 = 0; + uStack_23c = 0; + uStack_238 = 0; + local_244 = 0; + uStack_21c = 0; + uStack_218 = 0; + local_224 = 0; + uStack_220 = 0; + uStack_190 = 0; + local_198 = 0; + local_208 = (long)&local_244 + 4; + local_2d0 = (undefined8 ******)CONCAT44(local_2d0._4_4_,0x1010000); + local_2e8 = (undefined8 ******)CONCAT44(local_2e8._4_4_,0x2010000); + local_2f0 = 0; + local_214 = 0; + uStack_210 = 0; + local_20c = 0; + local_1f8 = 0; + uStack_1f0 = 0; + uStack_2a8._0_4_ = 0xffffffff; + uStack_2a8._4_4_ = 0x7fefffff; + local_2b0._0_4_ = 0xffffffff; + local_2b0._4_4_ = 0x7fefffff; + uStack_298 = 0xffffffff; + uStack_294 = 0x7fefffff; + local_2a0._0_4_ = 0xffffffff; + local_2a0._4_4_ = 0x7fefffff; + local_200 = &local_1f8; + local_1a0 = &local_198; + cv::dilate(&local_2d0,&local_2e8,&local_300,&uStack_308,1,0,&local_2b0); + if (CONCAT44(local_20c,uStack_210) != 0) { + piVar1 = (int *)(CONCAT44(local_20c,uStack_210) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_248); + } + } + uStack_210 = 0; + local_20c = 0; + uStack_220 = 0; + uStack_21c = 0; + uStack_228 = 0; + local_224 = 0; + uStack_230 = 0; + uStack_22c = 0; + uStack_238 = 0; + local_234 = 0; + if (0 < (int)local_244) { + lVar26 = 0; + do { + *(undefined4 *)(local_208 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < (int)local_244); + } + if (local_200 != &local_1f8) { + cv::fastFree(local_200); + } + local_2f8 = (undefined8 *******)&local_248; + local_300 = (undefined8 *******)CONCAT44(local_300._4_4_,0x2010000); + local_318 = (undefined8 *******)&local_2b0; + local_208 = (long)&local_244 + 4; + local_248 = 0x42ff0000; + local_214 = 0; + uStack_210 = 0; + local_2e8 = (undefined8 ******)CONCAT44(local_2e8._4_4_,0x1010000); + local_2e0 = (undefined8 ******)&local_1e8; + local_2f0 = 0; + local_2b0._0_4_ = 0x42ff0000; + local_320 = (undefined8 *******)CONCAT44(local_320._4_4_,0x1010000); + uStack_21c = 0; + uStack_218 = 0; + local_224 = 0; + uStack_220 = 0; + uStack_22c = 0; + uStack_228 = 0; + local_234 = 0; + uStack_230 = 0; + uStack_23c = 0; + uStack_238 = 0; + local_244 = 0; + local_20c = 0; + local_270 = &uStack_2a8; + uStack_294 = 0; + uStack_290 = 0; + local_2a0._4_4_ = 0; + uStack_298 = 0; + uStack_2a8._4_4_ = 0; + local_2a0._0_4_ = 0; + local_2b0._4_4_ = 0; + uStack_2a8._0_4_ = 0; + uStack_284 = 0; + uStack_280 = 0; + local_28c = 0; + uStack_288 = 0; + uStack_1f0 = 0; + local_1f8 = 0; + local_27c = 0; + uStack_278 = 0; + local_310 = 0; + local_2d8 = 0; + local_274 = 0; + uStack_328 = 0xffffffff; + uStack_324 = 0xffffffff; + local_260 = 0; + uStack_258 = 0; + ppppppuStack_2c8 = (undefined8 ******)0x7fefffffffffffff; + local_2d0 = (undefined8 ******)0x7fefffffffffffff; + uStack_2b8 = 0x7fefffffffffffff; + uStack_2c0 = 0x7fefffffffffffff; + local_268 = &local_260; + local_200 = &local_1f8; + cv::erode(&local_2e8,&local_300,&local_320,&uStack_328,1,0,&local_2d0); + if (CONCAT44(local_274,uStack_278) != 0) { + piVar1 = (int *)(CONCAT44(local_274,uStack_278) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_2b0); + } + } + uStack_278 = 0; + local_274 = 0; + uStack_298 = 0; + uStack_294 = 0; + local_2a0._0_4_ = 0; + local_2a0._4_4_ = 0; + uStack_288 = 0; + uStack_284 = 0; + uStack_290 = 0; + local_28c = 0; + if (0 < local_2b0._4_4_) { + lVar26 = 0; + do { + *(undefined4 *)((long)local_270 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < local_2b0._4_4_); + } + if (local_268 != &local_260) { + cv::fastFree(local_268); + } + resetMatMaskPoints(this,(Mat *)&local_248,(uint *)(ulong)(uint)param_7,in_w7); + local_2b0._0_4_ = 0x3010000; + local_2f8 = &local_2d0; + local_300 = (undefined8 *******)CONCAT44(local_300._4_4_,0x8204000c); + local_2f0 = 0; + local_318 = &local_2e8; + ppppppuStack_2c8 = (undefined8 ******)0x0; + uStack_2c0 = 0; + local_2d8 = 0; + local_2d0 = (undefined8 ******)0x0; + local_2e8 = (undefined8 ******)0x0; + local_2e0 = (undefined8 ******)0x0; + local_2a0._0_4_ = 0; + local_2a0._4_4_ = 0; + local_330 = 0; + local_320 = (undefined8 *******)CONCAT44(local_320._4_4_,0x8203001c); + local_310 = 0; + uStack_2a8 = &local_248; + cv::findContours(&local_2b0,&local_300,&local_320,0,2,&local_330); + if (local_2e0 != local_2e8) { + iVar33 = 0; + iVar19 = 0; + local_320 = &local_320; + local_318 = local_320; + do { + paVar34 = (allocator_conflict *)(local_2d0 + (long)iVar33 * 3); + uVar35 = *(long *)(paVar34 + 8) - *(long *)paVar34; + uVar36 = (long)uVar35 >> 3; + std::allocator_traits>>:: + _S_select>const,void>(paVar34,&local_300,0); + uStack_2a8._0_4_ = 0; + uStack_2a8._4_4_ = 0; + local_2a0._0_4_ = 0; + local_2a0._4_4_ = 0; + local_2b0._0_4_ = 0; + local_2b0._4_4_ = 0; + if (uVar36 == 0) { + p_Var20 = (_InputArray *)0x0; + p_Var23 = extraout_x1; + } + else { + if (uVar36 >> 0x3d != 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + p_Var20 = operator_new(uVar35); + p_Var23 = extraout_x1_00; + } + local_2a0 = p_Var20 + uVar36 * 8; + local_2b0._0_4_ = (int)p_Var20; + local_2b0._4_4_ = (int)((ulong)p_Var20 >> 0x20); + p_Var28 = *(_InputArray **)paVar34; + p_Var27 = *(_InputArray **)(paVar34 + 8); + if ((long)p_Var27 - (long)p_Var28 != 0) { + uVar35 = ((ulong)(p_Var27 + (-8 - (long)p_Var28)) >> 3) + 1; + p_Var29 = p_Var28; + p_Var30 = p_Var20; + if ((uVar35 < 8) || (uVar36 = uVar35 & 0x3ffffffffffffff8, uVar36 == 0)) { +LAB_0018b070: + do { + *(undefined4 *)p_Var30 = *(undefined4 *)p_Var29; + p_Var2 = p_Var29 + 8; + *(undefined4 *)(p_Var30 + 4) = *(undefined4 *)(p_Var29 + 4); + p_Var29 = p_Var2; + p_Var30 = p_Var30 + 8; + } while (p_Var2 != p_Var27); + } + else { + uVar31 = ((long)p_Var27 - (long)p_Var28) - 8U & 0xfffffffffffffff8; + p_Var23 = p_Var28 + 4 + uVar31; + if ((p_Var20 < p_Var23 && p_Var28 < p_Var20 + 4 + uVar31) || + (p_Var20 + 4 < p_Var28 + uVar31 + 8 && p_Var28 + 4 < p_Var20 + uVar31 + 8)) + goto LAB_0018b070; + p_Var29 = p_Var28 + 0x20; + p_Var30 = p_Var20 + 0x20; + uVar31 = uVar36; + do { + uVar37 = *(undefined8 *)(p_Var29 + -0x20); + uVar40 = *(undefined8 *)(p_Var29 + -8); + uVar39 = *(undefined8 *)(p_Var29 + -0x10); + uVar42 = *(undefined8 *)(p_Var29 + 8); + uVar41 = *(undefined8 *)p_Var29; + uVar44 = *(undefined8 *)(p_Var29 + 0x18); + uVar43 = *(undefined8 *)(p_Var29 + 0x10); + uVar31 = uVar31 - 8; + *(undefined8 *)(p_Var30 + -0x18) = *(undefined8 *)(p_Var29 + -0x18); + *(undefined8 *)(p_Var30 + -0x20) = uVar37; + *(undefined8 *)(p_Var30 + -8) = uVar40; + *(undefined8 *)(p_Var30 + -0x10) = uVar39; + *(undefined8 *)(p_Var30 + 8) = uVar42; + *(undefined8 *)p_Var30 = uVar41; + *(undefined8 *)(p_Var30 + 0x18) = uVar44; + *(undefined8 *)(p_Var30 + 0x10) = uVar43; + p_Var29 = p_Var29 + 0x40; + p_Var30 = p_Var30 + 0x40; + } while (uVar31 != 0); + p_Var29 = p_Var28 + uVar36 * 8; + p_Var30 = p_Var20 + uVar36 * 8; + if (uVar35 != uVar36) goto LAB_0018b070; + } + p_Var20 = p_Var20 + ((ulong)(p_Var27 + (-8 - (long)p_Var28)) & 0xfffffffffffffff8) + 8; + } + uStack_2a8._0_4_ = SUB84(p_Var20,0); + uStack_2a8._4_4_ = (undefined4)((ulong)p_Var20 >> 0x20); + local_2f0 = 0; + local_300 = (undefined8 *******)CONCAT44(local_300._4_4_,0x8103000c); + local_2f8 = (undefined8 *******)&local_2b0; + cv::boundingRect((cv *)&local_300,p_Var23); + puVar21 = operator_new(0x20); + *puVar21 = 0; + puVar21[1] = 0; + puVar21[3] = pppppppuStack_338; + puVar21[2] = local_340; + FUN_003dbfec(puVar21,&local_320); + if ((void *)CONCAT44(local_2b0._4_4_,(int)local_2b0) != (void *)0x0) { + operator_delete((void *)CONCAT44(local_2b0._4_4_,(int)local_2b0)); + } + if (0x12 < iVar19) break; + iVar19 = iVar19 + 1; + iVar33 = *(int *)(local_2e8 + (long)iVar33 * 2); + } while (-1 < iVar33); + local_340 = &local_340; + pppppppuVar32 = local_320; + pppppppuStack_338 = local_340; + local_300 = &local_300; + local_2f8 = &local_300; + if (&local_320 != (undefined8 ********)local_320) { + do { + puVar21 = operator_new(0x20); + *puVar21 = 0; + puVar21[1] = 0; + ppppppuVar38 = pppppppuVar32[2]; + puVar21[3] = pppppppuVar32[3]; + puVar21[2] = ppppppuVar38; + FUN_003dbfec(puVar21,&local_340); + pppppppuVar32 = (undefined8 *******)*pppppppuVar32; + } while (&local_320 != (undefined8 ********)pppppppuVar32); + if ((undefined8 ********)local_340 != &local_340) { + do { + pppppppuVar32 = pppppppuStack_338; + puVar21 = operator_new(0x20); + *puVar21 = 0; + puVar21[1] = 0; + ppppppuVar38 = pppppppuVar32[2]; + puVar21[3] = pppppppuVar32[3]; + puVar21[2] = ppppppuVar38; + FUN_003dbfec(puVar21,&local_300); + pppppppuVar32 = pppppppuStack_338; + FUN_003dc008(pppppppuStack_338); + operator_delete(pppppppuVar32); + pppppppuVar32 = local_2f8; + if (&local_340 == (undefined8 ********)local_340) break; + bVar11 = false; + do { + iVar6 = *(int *)(pppppppuVar32 + 2); + iVar7 = *(int *)((long)pppppppuVar32 + 0x14); + iVar19 = *(int *)(pppppppuVar32 + 3) + iVar6; + iVar33 = *(int *)((long)pppppppuVar32 + 0x1c) + iVar7; + pppppppuVar25 = local_340; + while( true ) { + iVar8 = *(int *)(pppppppuVar25 + 2); + uVar12 = iVar6 - iVar8; + iVar3 = *(int *)(pppppppuVar25 + 3) + iVar8; + uVar13 = iVar19 - iVar3; + uVar14 = iVar6 - iVar3; + uVar22 = iVar19 - iVar8; + if ((((((int)uVar13 < 1) || ((int)uVar22 < 1)) || ((int)uVar12 < 1)) || + ((int)uVar14 < 1)) && (-1 < (int)(uVar22 & uVar12 & uVar14 & uVar13))) { + uVar22 = 0; + } + else { + uVar15 = -uVar12; + if (-1 < (int)uVar12) { + uVar15 = uVar12; + } + uVar12 = -uVar14; + if (-1 < (int)uVar14) { + uVar12 = uVar14; + } + uVar14 = -uVar22; + if (-1 < (int)uVar22) { + uVar14 = uVar22; + } + uVar22 = -uVar13; + if (-1 < (int)uVar13) { + uVar22 = uVar13; + } + if ((int)uVar14 <= (int)uVar22) { + uVar22 = uVar14; + } + if ((int)uVar15 <= (int)uVar12) { + uVar12 = uVar15; + } + if ((int)uVar12 <= (int)uVar22) { + uVar22 = uVar12; + } + } + iVar9 = *(int *)((long)pppppppuVar25 + 0x14); + uVar12 = iVar7 - iVar9; + iVar4 = *(int *)((long)pppppppuVar25 + 0x1c) + iVar9; + uVar13 = iVar33 - iVar4; + uVar14 = iVar7 - iVar4; + uVar15 = iVar33 - iVar9; + if (((((int)uVar13 < 1) || ((int)uVar15 < 1)) || + (((int)uVar12 < 1 || ((int)uVar14 < 1)))) && + (-1 < (int)(uVar15 & uVar12 & uVar14 & uVar13))) { + uVar15 = 0; + } + else { + uVar5 = -uVar12; + if (-1 < (int)uVar12) { + uVar5 = uVar12; + } + uVar12 = -uVar14; + if (-1 < (int)uVar14) { + uVar12 = uVar14; + } + uVar14 = -uVar15; + if (-1 < (int)uVar15) { + uVar14 = uVar15; + } + uVar15 = -uVar13; + if (-1 < (int)uVar13) { + uVar15 = uVar13; + } + if ((int)uVar14 <= (int)uVar15) { + uVar15 = uVar14; + } + if ((int)uVar5 <= (int)uVar12) { + uVar12 = uVar5; + } + if ((int)uVar12 <= (int)uVar15) { + uVar15 = uVar12; + } + } + if (((int)uVar22 < *(int *)(this + 0x14)) && ((int)uVar15 < *(int *)(this + 0x18))) + break; + pppppppuVar25 = (undefined8 *******)*pppppppuVar25; + if (&local_340 == (undefined8 ********)pppppppuVar25) { + pppppppuVar32 = local_340; + if (bVar11) goto LAB_0018b398; + goto LAB_0018b3b0; + } + } + if (iVar8 <= iVar6) { + iVar6 = iVar8; + } + if (iVar9 <= iVar7) { + iVar7 = iVar9; + } + if (iVar19 <= iVar3) { + iVar19 = iVar3; + } + if (iVar33 <= iVar4) { + iVar33 = iVar4; + } + iVar3 = iVar19; + if (iVar6 <= iVar19) { + iVar3 = iVar6; + } + iVar8 = iVar33; + if (iVar7 <= iVar33) { + iVar8 = iVar7; + } + if (iVar19 <= iVar6) { + iVar19 = iVar6; + } + if (iVar33 <= iVar7) { + iVar33 = iVar7; + } + *(int *)(pppppppuVar32 + 2) = iVar3; + *(int *)((long)pppppppuVar32 + 0x14) = iVar8; + *(int *)(pppppppuVar32 + 3) = iVar19 - iVar3; + *(int *)((long)pppppppuVar32 + 0x1c) = iVar33 - iVar8; + FUN_003dc008(pppppppuVar25); + operator_delete(pppppppuVar25); + bVar11 = true; + } while (&local_340 != (undefined8 ********)local_340); + pppppppuVar32 = &local_340; +LAB_0018b398: + if ((undefined8 ********)local_300 != &local_300) { + FUN_003dbf94(pppppppuVar32,local_300,&local_300); + pppppppuVar32 = local_340; + } +LAB_0018b3b0: + } while ((undefined8 ********)pppppppuVar32 != &local_340); + } + } + if (&local_300 != (undefined8 ********)local_300) { + pppppppuVar32 = local_300; + do { + if ((((*(int *)(pppppppuVar32 + 3) < *(int *)(this + 0x10)) || + (*(int *)((long)pppppppuVar32 + 0x1c) < *(int *)(this + 0x10))) || + (iVar19 = *(int *)((long)pppppppuVar32 + 0x1c) * *(int *)(pppppppuVar32 + 3), + iVar19 <= *(int *)(this + 8))) || (*(int *)(this + 0xc) <= iVar19)) { + pppppppuVar25 = (undefined8 *******)*pppppppuVar32; + FUN_003dc008(pppppppuVar32); + operator_delete(pppppppuVar32); + } + else { + pppppppuVar25 = (undefined8 *******)*pppppppuVar32; + } + pppppppuVar32 = pppppppuVar25; + } while (&local_300 != (undefined8 ********)pppppppuVar25); + } + local_350 = &local_350; + pppppppuStack_348 = &local_350; + FUN_003dbef4(&local_350,&local_300); + memset(&local_2b0,0,0x48); + MAG_GetCamInfo((int)param_2,&local_2b0,0x48); + if (&local_350 != (undefined8 ********)local_350) { + pppppppuVar32 = local_350; + do { + local_360 = 0; + if (param_4 != 0) { + local_360 = (uint)((int)local_2b0 * *(int *)(pppppppuVar32 + 2)) / (uint)param_4; + } + uVar12 = 0; + if (param_4 != 0) { + uVar12 = (uint)((*(int *)(pppppppuVar32 + 3) + *(int *)(pppppppuVar32 + 2)) * + (int)local_2b0) / (uint)param_4; + } + uStack_35c = 0; + if (param_5 != 0) { + uStack_35c = (uint)(local_2b0._4_4_ * *(int *)((long)pppppppuVar32 + 0x14)) / + (uint)param_5; + } + uVar13 = 0; + if (param_5 != 0) { + uVar13 = (uint)((*(int *)((long)pppppppuVar32 + 0x1c) + + *(int *)((long)pppppppuVar32 + 0x14)) * local_2b0._4_4_) / (uint)param_5; + } + iVar19 = (int)local_2b0; + if ((int)((uVar12 - local_360) + 1) <= (int)local_2b0) { + iVar19 = (uVar12 - local_360) + 1; + } + puVar21 = *(undefined8 **)(in_x8 + 8); + iVar33 = local_2b0._4_4_; + if ((int)((uVar13 - uStack_35c) + 1) <= local_2b0._4_4_) { + iVar33 = (uVar13 - uStack_35c) + 1; + } + iStack_358 = local_360 + iVar19 + -1; + iStack_354 = uStack_35c + iVar33 + -1; + if (puVar21 == *(undefined8 **)(in_x8 + 0x10)) { + std::vector>::_M_emplace_back_aux + (in_x8,(JRect *)&local_360); + } + else { + puVar21[1] = CONCAT44(iStack_354,iStack_358); + *puVar21 = CONCAT44(uStack_35c,local_360); + *(long *)(in_x8 + 8) = *(long *)(in_x8 + 8) + 0x10; + } + pppppppuVar32 = (undefined8 *******)*pppppppuVar32; + } while (&local_350 != (undefined8 ********)pppppppuVar32); + } + pppppppuVar32 = local_350; + while ((undefined8 ********)pppppppuVar32 != &local_350) { + pppppppuVar25 = (undefined8 *******)*pppppppuVar32; + operator_delete(pppppppuVar32); + pppppppuVar32 = pppppppuVar25; + } + pppppppuVar32 = local_340; + while ((undefined8 ********)pppppppuVar32 != &local_340) { + pppppppuVar25 = (undefined8 *******)*pppppppuVar32; + operator_delete(pppppppuVar32); + pppppppuVar32 = pppppppuVar25; + } + pppppppuVar32 = local_300; + while ((undefined8 ********)pppppppuVar32 != &local_300) { + pppppppuVar25 = (undefined8 *******)*pppppppuVar32; + operator_delete(pppppppuVar32); + pppppppuVar32 = pppppppuVar25; + } + pppppppuVar32 = local_320; + while ((undefined8 ********)pppppppuVar32 != &local_320) { + pppppppuVar25 = (undefined8 *******)*pppppppuVar32; + operator_delete(pppppppuVar32); + pppppppuVar32 = pppppppuVar25; + } + } + ppppppuVar38 = local_2d0; + ppppppuVar17 = ppppppuStack_2c8; + if (local_2e8 != (undefined8 ******)0x0) { + operator_delete(local_2e8); + ppppppuVar38 = local_2d0; + ppppppuVar17 = ppppppuStack_2c8; + } + for (; ppppppuVar18 = ppppppuStack_2c8, ppppppuVar38 != ppppppuStack_2c8; + ppppppuVar38 = ppppppuVar38 + 3) { + ppppppuStack_2c8 = ppppppuVar17; + if (*ppppppuVar38 != (undefined8 *****)0x0) { + operator_delete(*ppppppuVar38); + } + ppppppuVar17 = ppppppuStack_2c8; + ppppppuStack_2c8 = ppppppuVar18; + } + ppppppuStack_2c8 = ppppppuVar17; + if (local_2d0 != (undefined8 ******)0x0) { + operator_delete(local_2d0); + } + if (CONCAT44(local_20c,uStack_210) != 0) { + piVar1 = (int *)(CONCAT44(local_20c,uStack_210) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_248); + } + } + uStack_210 = 0; + local_20c = 0; + uStack_220 = 0; + uStack_21c = 0; + uStack_228 = 0; + local_224 = 0; + uStack_230 = 0; + uStack_22c = 0; + uStack_238 = 0; + local_234 = 0; + if (0 < (int)local_244) { + lVar26 = 0; + do { + *(undefined4 *)(local_208 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < (int)local_244); + } + if (local_200 != &local_1f8) { + cv::fastFree(local_200); + } + if (CONCAT44(local_1ac,uStack_1b0) != 0) { + piVar1 = (int *)(CONCAT44(local_1ac,uStack_1b0) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_1e8); + } + } + uStack_1b0 = 0; + local_1ac = 0; + uStack_1d0 = 0; + uStack_1cc = 0; + uStack_1d8 = 0; + local_1d4 = 0; + uStack_1c0 = 0; + uStack_1bc = 0; + uStack_1c8 = 0; + local_1c4 = 0; + if (0 < local_1e4) { + lVar26 = 0; + do { + *(undefined4 *)((long)local_1a8 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < local_1e4); + } + if (local_1a0 != &local_198) { + cv::fastFree(local_1a0); + } + if (CONCAT44(local_14c,uStack_150) != 0) { + piVar1 = (int *)(CONCAT44(local_14c,uStack_150) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_188); + } + } + uStack_150 = 0; + local_14c = 0; + uStack_170 = 0; + uStack_16c = 0; + uStack_178 = 0; + uStack_174 = 0; + uStack_160 = 0; + uStack_15c = 0; + uStack_168 = 0; + local_164 = 0; + if (0 < local_184) { + lVar26 = 0; + do { + *(undefined4 *)((long)local_148 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < local_184); + } + if (local_140 != &local_138) { + cv::fastFree(local_140); + } + if (CONCAT44(local_ec,uStack_f0) != 0) { + piVar1 = (int *)(CONCAT44(local_ec,uStack_f0) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_128); + } + } + uStack_f0 = 0; + local_ec = 0; + uStack_110 = 0; + uStack_10c = 0; + uStack_118 = 0; + local_114 = 0; + uStack_100 = 0; + uStack_fc = 0; + uStack_108 = 0; + local_104 = 0; + if (0 < (int)local_124) { + lVar26 = 0; + do { + *(undefined4 *)(local_e8 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < (int)local_124); + } + if (local_e0 != &local_d8) { + cv::fastFree(local_e0); + } + if (CONCAT44(local_8c,uStack_90) != 0) { + piVar1 = (int *)(CONCAT44(local_8c,uStack_90) + 0x14); + do { + iVar19 = *piVar1; + cVar10 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar19 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar19 + -1 == 0) { + cv::Mat::deallocate((Mat *)&local_c8); + } + } + uStack_90 = 0; + local_8c = 0; + uStack_b0 = 0; + uStack_ac = 0; + uStack_b8 = 0; + local_b4 = 0; + uStack_a0 = 0; + uStack_9c = 0; + uStack_a8 = 0; + local_a4 = 0; + if (0 < (int)local_c4) { + lVar26 = 0; + do { + *(undefined4 *)(local_88 + lVar26 * 4) = 0; + lVar26 = lVar26 + 1; + } while (lVar26 < (int)local_c4); + } + if (local_80 != &local_78) { + cv::fastFree(local_80); + } + if (*(long *)(lVar16 + 0x28) == lVar24) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018bb1c (392 bytes) name=raw8bitToMat + +/* ImageProc::raw8bitToMat(unsigned char const*, int, int, cv::Mat*) */ + +void __thiscall +ImageProc::raw8bitToMat(ImageProc *this,uchar *param_1,int param_2,int param_3,Mat *param_4) + +{ + ulong uVar1; + uchar *puVar2; + long lVar3; + uint uVar4; + uint uVar5; + Mat *pMVar6; + long lVar7; + uchar *puVar8; + uchar *puVar10; + uchar *puVar11; + uint uVar12; + long lVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + long *local_1a8 [44]; + long local_48; + uchar *puVar9; + + lVar3 = tpidr_el0; + local_48 = *(long *)(lVar3 + 0x28); + cv::Mat::zeros((Mat *)(ulong)(uint)param_3,param_2,0,param_3); + (**(code **)(*local_1a8[0] + 0x18))(local_1a8[0],local_1a8,param_4,0xffffffff); + cv::MatExpr::~MatExpr((MatExpr *)local_1a8); + if (((byte)param_4[1] >> 6 & 1) == 0) { + if (0 < param_3) { + uVar1 = (ulong)(param_2 - 1) + 1; + lVar7 = uVar1 - (param_2 & 0x1fU); + pMVar6 = (Mat *)0x0; + do { + if (param_2 != 0) { + puVar10 = (uchar *)(*(long *)(param_4 + 0x10) + **(long **)(param_4 + 0x48) * (long)pMVar6 + ); + puVar9 = param_1; + uVar12 = param_2; + if (uVar1 < 0x20) goto LAB_0018bc40; + if (lVar7 == 0) goto LAB_0018bc40; + if ((puVar10 < param_1 + uVar1) && + (param_1 < (uchar *)(*(long *)(param_4 + 0x10) + uVar1 + + **(long **)(param_4 + 0x48) * (long)pMVar6))) goto LAB_0018bc40; + puVar2 = puVar10 + lVar7; + puVar8 = param_1 + lVar7; + puVar9 = param_1 + 0x10; + puVar11 = puVar10 + 0x10; + lVar13 = lVar7; + do { + puVar10 = puVar9 + -8; + uVar14 = *(undefined8 *)(puVar9 + -0x10); + uVar16 = *(undefined8 *)(puVar9 + 8); + uVar15 = *(undefined8 *)puVar9; + puVar9 = puVar9 + 0x20; + lVar13 = lVar13 + -0x20; + *(undefined8 *)(puVar11 + -8) = *(undefined8 *)puVar10; + *(undefined8 *)(puVar11 + -0x10) = uVar14; + *(undefined8 *)(puVar11 + 8) = uVar16; + *(undefined8 *)puVar11 = uVar15; + puVar11 = puVar11 + 0x20; + uVar4 = param_2 - (int)lVar7; + puVar10 = puVar2; + uVar5 = param_2 & 0x1fU; + } while (lVar13 != 0); + while (puVar9 = puVar8, uVar12 = uVar4, uVar5 != 0) { +LAB_0018bc40: + puVar8 = puVar9 + 1; + *puVar10 = *puVar9; + uVar4 = uVar12 - 1; + puVar10 = puVar10 + 1; + uVar5 = uVar12 - 1; + } + param_1 = param_1 + uVar1; + } + pMVar6 = pMVar6 + 1; + } while (pMVar6 != (Mat *)(ulong)(uint)param_3); + } + } + else { + memcpy(*(void **)(param_4 + 0x10),param_1,(long)(param_3 * param_2)); + } + if (*(long *)(lVar3 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0018bcb8 (876 bytes) name=threshold_ + +/* ImageProc::threshold_(cv::Mat const&, cv::Mat&, int, int) */ + +void __thiscall +ImageProc::threshold_(ImageProc *this,Mat *param_1,Mat *param_2,int param_3,int param_4) + +{ + ulong uVar1; + byte *pbVar2; + byte *pbVar3; + uint uVar4; + long lVar5; + uint3 uVar6; + long lVar7; + uint uVar8; + Mat *pMVar9; + long lVar10; + byte *pbVar11; + byte *pbVar12; + char *pcVar13; + char *pcVar14; + uint uVar15; + undefined8 *puVar16; + long lVar17; + byte bVar18; + ushort uVar19; + byte bVar20; + byte bVar21; + uint uVar22; + undefined8 uVar23; + uint uVar24; + undefined8 uVar25; + uint uVar26; + uint uVar27; + uint uVar28; + uint uVar29; + uint uVar30; + uint uVar31; + uint uVar32; + uint uVar33; + long *local_1b8 [44]; + long local_58; + + lVar5 = tpidr_el0; + local_58 = *(long *)(lVar5 + 0x28); + uVar8 = *(uint *)(param_1 + 8); + uVar4 = *(uint *)(param_1 + 0xc); + cv::Mat::zeros((Mat *)(ulong)uVar8,uVar4,0,param_3); + (**(code **)(*local_1b8[0] + 0x18))(local_1b8[0],local_1b8,param_2,0xffffffff); + cv::MatExpr::~MatExpr((MatExpr *)local_1b8); + if ((((byte)param_1[1] >> 6 & 1) == 0) || (((byte)param_2[1] >> 6 & 1) == 0)) { + if (0 < (int)uVar8) { + uVar1 = (ulong)(uVar4 - 1) + 1; + lVar10 = uVar1 - (uVar4 & 0xf); + pMVar9 = (Mat *)0x0; + do { + if (uVar4 != 0) { + lVar17 = *(long *)(param_1 + 0x10); + lVar7 = **(long **)(param_1 + 0x48) * (long)pMVar9; + pcVar13 = (char *)(*(long *)(param_2 + 0x10) + **(long **)(param_2 + 0x48) * (long)pMVar9) + ; + pbVar12 = (byte *)(lVar17 + lVar7); + uVar15 = uVar4; + if (((0xf < uVar1) && (lVar10 != 0)) && + (((char *)(lVar17 + uVar1 + lVar7) <= pcVar13 || + ((byte *)(*(long *)(param_2 + 0x10) + uVar1 + + **(long **)(param_2 + 0x48) * (long)pMVar9) <= pbVar12)))) { + pcVar14 = pcVar13; + puVar16 = (undefined8 *)(lVar17 + **(long **)(param_1 + 0x48) * (long)pMVar9); + lVar7 = lVar10; + do { + uVar25 = puVar16[1]; + uVar23 = *puVar16; + lVar7 = lVar7 + -0x10; + bVar18 = (byte)((ulong)uVar23 >> 8); + bVar20 = (byte)((ulong)uVar23 >> 0x28); + uVar27 = (uint)CONCAT12(bVar20,(ushort)(byte)((ulong)uVar23 >> 0x20)); + uVar6 = CONCAT12((char)((ulong)uVar25 >> 8),(short)uVar25) & 0xff00ff; + bVar21 = (byte)((ulong)uVar25 >> 0x28); + uVar19 = (ushort)(byte)(uVar6 >> 0x10); + uVar32 = (uint)(byte)((ulong)uVar25 >> 0x10); + uVar22 = CONCAT12(bVar21,(ushort)(byte)((ulong)uVar25 >> 0x20)) & 0xffff; + uVar24 = (uint)(byte)((ulong)uVar25 >> 0x30); + uVar26 = (uint)(byte)((ulong)uVar25 >> 0x38); + uVar33 = (uint)(byte)((ulong)uVar25 >> 0x18); + uVar15 = (uint)CONCAT12(bVar18,(ushort)(byte)uVar23); + uVar30 = (uint)(byte)((ulong)uVar23 >> 0x10); + uVar28 = (uint)(byte)((ulong)uVar23 >> 0x30); + uVar29 = (uint)(byte)((ulong)uVar23 >> 0x38); + uVar31 = (uint)(byte)((ulong)uVar23 >> 0x18); + *(ulong *)(pcVar14 + 8) = + CONCAT17((char)((-(param_3 <= (int)uVar26) & -((int)uVar26 < param_4)) << 7) >> 7 + ,CONCAT16((char)((param_3 <= (int)uVar24) * -0x80 & + ((int)uVar24 < param_4) * -0x80) >> 7, + CONCAT15((char)((param_3 <= (int)(uint)bVar21) * -0x80 & + ((int)(uint)bVar21 < param_4) * -0x80) >> 7, + CONCAT14((char)((param_3 <= (int)uVar22) * -0x80 & + ((int)uVar22 < param_4) * -0x80) >> 7, + CONCAT13((char)((param_3 <= (int)uVar33) * + -0x80 & ((int)uVar33 < + param_4) * -0x80) >> + 7,CONCAT12((char)((param_3 <= + (int)uVar32) * + -0x80 & ((int) + uVar32 < param_4) * -0x80) >> 7, + CONCAT11((char)((param_3 <= (int)(uint)uVar19) * + -0x80 & ((int)(uint)uVar19 < + param_4) * -0x80) >> 7, + (char)((param_3 <= (int)(uVar6 & 0xffff)) + * -0x80 & + ((int)(uVar6 & 0xffff) < param_4) * + -0x80) >> 7))))))); + *(ulong *)pcVar14 = + CONCAT17((char)((param_3 <= (int)uVar29) * -0x80 & + ((int)uVar29 < param_4) * -0x80) >> 7, + CONCAT16((char)((-(param_3 <= (int)uVar28) & -((int)uVar28 < param_4)) + << 7) >> 7, + CONCAT15((char)((-(param_3 <= (int)(uint)(ushort)bVar20) & + -((int)(uint)(ushort)bVar20 < param_4)) << 7) + >> 7,CONCAT14((char)((-(param_3 <= + (int)(uVar27 & 0xffff)) & + -((int)(uVar27 & 0xffff) < + param_4)) << 7) >> 7, + CONCAT13((char)((-(param_3 <= + (int)uVar31) & + -((int)uVar31 < param_4) + ) << 7) >> 7, + CONCAT12((char)((-(param_3 <= + (int)uVar30) + & -((int)uVar30 + < param_4)) + << 7) >> 7, + CONCAT11((char)((-( + param_3 <= (int)(uint)(ushort)bVar18) & + -((int)(uint)(ushort)bVar18 < param_4)) << 7) >> 7 + ,(char)((-(param_3 <= (int)(uVar15 & 0xffff)) & + -((int)(uVar15 & 0xffff) < param_4)) << 7) + >> 7))))))); + pcVar14 = pcVar14 + 0x10; + puVar16 = puVar16 + 2; + } while (lVar7 != 0); + pcVar13 = pcVar13 + lVar10; + pbVar12 = pbVar12 + lVar10; + uVar15 = uVar4 - (int)lVar10; + if ((uVar4 & 0xf) == 0) goto LAB_0018beac; + } + do { + uVar15 = uVar15 - 1; + *pcVar13 = -(param_3 <= (int)(uint)*pbVar12 && (int)(uint)*pbVar12 < param_4); + pcVar13 = pcVar13 + 1; + pbVar12 = pbVar12 + 1; + } while (uVar15 != 0); + } +LAB_0018beac: + pMVar9 = pMVar9 + 1; + } while (pMVar9 != (Mat *)(ulong)uVar8); + } + } + else { + uVar8 = uVar8 * uVar4; + if (uVar8 != 0) { + pbVar11 = *(byte **)(param_2 + 0x10); + pbVar12 = *(byte **)(param_1 + 0x10); + uVar1 = (ulong)(uVar8 - 1) + 1; + if (0xf < uVar1) { + uVar4 = uVar8 & 0xf; + lVar10 = uVar1 - uVar4; + if ((lVar10 != 0) && + ((lVar7 = (ulong)(uVar8 - 1) + 1, pbVar12 + lVar7 <= pbVar11 || + (pbVar11 + lVar7 <= pbVar12)))) { + pbVar2 = pbVar12 + lVar10; + pbVar3 = pbVar11 + lVar10; + uVar8 = uVar8 - (int)lVar10; + do { + uVar25 = *(undefined8 *)(pbVar12 + 8); + uVar23 = *(undefined8 *)pbVar12; + lVar10 = lVar10 + -0x10; + bVar18 = (byte)((ulong)uVar23 >> 8); + bVar20 = (byte)((ulong)uVar23 >> 0x28); + uVar27 = (uint)CONCAT12(bVar20,(ushort)(byte)((ulong)uVar23 >> 0x20)); + uVar6 = CONCAT12((char)((ulong)uVar25 >> 8),(short)uVar25) & 0xff00ff; + bVar21 = (byte)((ulong)uVar25 >> 0x28); + uVar19 = (ushort)(byte)(uVar6 >> 0x10); + uVar32 = (uint)(byte)((ulong)uVar25 >> 0x10); + uVar22 = CONCAT12(bVar21,(ushort)(byte)((ulong)uVar25 >> 0x20)) & 0xffff; + uVar24 = (uint)(byte)((ulong)uVar25 >> 0x30); + uVar26 = (uint)(byte)((ulong)uVar25 >> 0x38); + uVar33 = (uint)(byte)((ulong)uVar25 >> 0x18); + uVar15 = (uint)CONCAT12(bVar18,(ushort)(byte)uVar23); + uVar30 = (uint)(byte)((ulong)uVar23 >> 0x10); + uVar28 = (uint)(byte)((ulong)uVar23 >> 0x30); + uVar29 = (uint)(byte)((ulong)uVar23 >> 0x38); + uVar31 = (uint)(byte)((ulong)uVar23 >> 0x18); + *(ulong *)(pbVar11 + 8) = + CONCAT17((char)((-(param_3 <= (int)uVar26) & -((int)uVar26 < param_4)) << 7) >> 7, + CONCAT16((char)((param_3 <= (int)uVar24) * -0x80 & + ((int)uVar24 < param_4) * -0x80) >> 7, + CONCAT15((char)((param_3 <= (int)(uint)bVar21) * -0x80 & + ((int)(uint)bVar21 < param_4) * -0x80) >> 7, + CONCAT14((char)((param_3 <= (int)uVar22) * -0x80 & + ((int)uVar22 < param_4) * -0x80) >> 7, + CONCAT13((char)((param_3 <= (int)uVar33) * + -0x80 & ((int)uVar33 < param_4) + * -0x80) >> 7, + CONCAT12((char)((param_3 <= + (int)uVar32) * -0x80 & + ((int)uVar32 < param_4) + * -0x80) >> 7, + CONCAT11((char)((param_3 <= + (int)(uint) + uVar19) * -0x80 & + ((int)(uint)uVar19 < param_4) * -0x80) >> 7, + (char)((param_3 <= (int)(uVar6 & 0xffff)) * -0x80 + & ((int)(uVar6 & 0xffff) < param_4) * -0x80) + >> 7))))))); + *(ulong *)pbVar11 = + CONCAT17((char)((param_3 <= (int)uVar29) * -0x80 & ((int)uVar29 < param_4) * -0x80) + >> 7,CONCAT16((char)((-(param_3 <= (int)uVar28) & -((int)uVar28 < param_4) + ) << 7) >> 7, + CONCAT15((char)((-(param_3 <= (int)(uint)(ushort)bVar20) & + -((int)(uint)(ushort)bVar20 < param_4)) << 7 + ) >> 7, + CONCAT14((char)((-(param_3 <= + (int)(uVar27 & 0xffff)) & + -((int)(uVar27 & 0xffff) < param_4) + ) << 7) >> 7, + CONCAT13((char)((-(param_3 <= (int)uVar31) + & -((int)uVar31 < param_4) + ) << 7) >> 7, + CONCAT12((char)((-(param_3 <= + (int)uVar30) & + -((int)uVar30 < + param_4)) << 7) + >> 7,CONCAT11((char)((-( + param_3 <= (int)(uint)(ushort)bVar18) & + -((int)(uint)(ushort)bVar18 < param_4)) << 7) >> 7 + ,(char)((-(param_3 <= (int)(uVar15 & 0xffff)) & + -((int)(uVar15 & 0xffff) < param_4)) << 7) + >> 7))))))); + pbVar11 = pbVar11 + 0x10; + pbVar12 = pbVar12 + 0x10; + } while (lVar10 != 0); + pbVar12 = pbVar2; + pbVar11 = pbVar3; + if (uVar4 == 0) goto LAB_0018bf34; + } + } + do { + uVar8 = uVar8 - 1; + *pbVar11 = -(param_3 <= (int)(uint)*pbVar12 && (int)(uint)*pbVar12 < param_4); + pbVar12 = pbVar12 + 1; + pbVar11 = pbVar11 + 1; + } while (uVar8 != 0); + } + } +LAB_0018bf34: + if (*(long *)(lVar5 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0018c038 (660 bytes) name=resetMatMaskPoints + +/* ImageProc::resetMatMaskPoints(cv::Mat&, unsigned int const*, int) */ + +void __thiscall +ImageProc::resetMatMaskPoints(ImageProc *this,Mat *param_1,uint *param_2,int param_3) + +{ + bool bVar1; + uint uVar2; + int iVar3; + int iVar4; + uint uVar5; + ulong __n; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + uint uVar10; + int iVar11; + int iVar12; + ulong uVar13; + long lVar14; + long lVar15; + long lVar16; + + uVar6 = *(uint *)param_1; + iVar4 = *(int *)(param_1 + 8); + uVar5 = *(uint *)(param_1 + 0xc); + __n = (ulong)uVar5; + uVar13 = **(ulong **)(param_1 + 0x48); + uVar8 = uVar5 - 1; + uVar7 = (int)(*(int *)(this + 0x1c) * uVar5) / 100; + uVar10 = (int)(*(int *)(this + 0x24) * uVar5) / 100; + iVar9 = iVar4 + -1; + iVar11 = (*(int *)(this + 0x20) * iVar4) / 100; + uVar2 = uVar8; + if ((int)uVar7 <= (int)uVar8) { + uVar2 = uVar7; + } + iVar12 = (*(int *)(this + 0x28) * iVar4) / 100; + if ((int)uVar10 <= (int)uVar8) { + uVar8 = uVar10; + } + iVar3 = iVar9; + if (iVar11 <= iVar9) { + iVar3 = iVar11; + } + if (iVar12 <= iVar9) { + iVar9 = iVar12; + } + if ((-1 < iVar3) && (memset(*(void **)(param_1 + 0x10),0,__n), iVar3 != 0)) { + lVar15 = 1; + do { + memset((void *)(*(long *)(param_1 + 0x10) + **(long **)(param_1 + 0x48) * lVar15),0,__n); + bVar1 = lVar15 < iVar3; + lVar15 = lVar15 + 1; + } while (bVar1); + } + if (iVar9 < iVar4) { + lVar15 = (long)(iVar9 + 1) + -1; + do { + memset((void *)(*(long *)(param_1 + 0x10) + **(long **)(param_1 + 0x48) * lVar15),0,__n); + lVar15 = lVar15 + 1; + } while (lVar15 < iVar4); + } + lVar15 = *(long *)(param_1 + 0x10); + if (iVar3 + 1 < iVar9) { + uVar7 = -uVar5; + lVar16 = (long)(iVar3 + 1); + if ((int)uVar7 <= (int)~uVar10) { + uVar7 = ~uVar10; + } + do { + lVar14 = **(long **)(param_1 + 0x48); + if (-1 < (int)uVar2) { + memset((void *)(lVar15 + lVar14 * lVar16),0,(ulong)uVar2 + 1); + lVar15 = *(long *)(param_1 + 0x10); + lVar14 = **(long **)(param_1 + 0x48); + } + if ((int)uVar8 < (int)uVar5) { + memset((void *)(lVar15 + lVar14 * lVar16 + (long)(int)uVar8),0,(ulong)(uVar5 + uVar7) + 1); + lVar15 = *(long *)(param_1 + 0x10); + } + lVar16 = lVar16 + 1; + } while (lVar16 < iVar9); + } + if (((byte)param_1[1] >> 6 & 1) == 0) { + if (0 < param_3) { + uVar2 = 0x88442211 >> ((uVar6 & 7) << 2); + iVar9 = 0; + if ((uVar2 & 0xf) != 0) { + iVar9 = (int)(uVar13 / ((ulong)uVar2 & 0xf)); + } + do { + param_3 = param_3 + -1; + iVar4 = 0; + if (uVar5 != 0) { + iVar4 = (int)*param_2 / (int)uVar5; + } + *(undefined1 *)(lVar15 + iVar4 * iVar9 + (long)(int)(*param_2 - iVar4 * uVar5)) = 0; + param_2 = param_2 + 1; + } while (param_3 != 0); + } + } + else if (0 < param_3) { + do { + param_3 = param_3 + -1; + *(undefined1 *)(lVar15 + (ulong)*param_2) = 0; + param_2 = param_2 + 1; + } while (param_3 != 0); + } + return; +} + + +================================================================== + +### FUNC 0018c2cc (156 bytes) name=calcRectMinHorDistance + +/* ImageProc::calcRectMinHorDistance(cv::Rect_, cv::Rect_) */ + +uint __thiscall ImageProc::calcRectMinHorDistance(undefined8 param_1,int *param_2,int *param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + + iVar2 = *param_2; + iVar3 = *param_3; + uVar4 = iVar2 - iVar3; + uVar5 = iVar2 - (param_3[2] + iVar3); + uVar6 = (param_2[2] + iVar2) - (param_3[2] + iVar3); + uVar7 = (param_2[2] + iVar2) - iVar3; + if ((((((int)uVar6 < 1) || ((int)uVar4 < 1)) || ((int)uVar5 < 1)) || ((int)uVar7 < 1)) && + (-1 < (int)(uVar5 & uVar4 & uVar7 & uVar6))) { + return 0; + } + uVar1 = -uVar4; + if (-1 < (int)uVar4) { + uVar1 = uVar4; + } + uVar4 = -uVar5; + if (-1 < (int)uVar5) { + uVar4 = uVar5; + } + uVar5 = -uVar7; + if (-1 < (int)uVar7) { + uVar5 = uVar7; + } + uVar7 = -uVar6; + if (-1 < (int)uVar6) { + uVar7 = uVar6; + } + if ((int)uVar5 <= (int)uVar7) { + uVar7 = uVar5; + } + if ((int)uVar1 <= (int)uVar4) { + uVar4 = uVar1; + } + if ((int)uVar4 <= (int)uVar7) { + uVar7 = uVar4; + } + return uVar7; +} + + +================================================================== + +### FUNC 0018c368 (156 bytes) name=calcRectMinVerDistance + +/* ImageProc::calcRectMinVerDistance(cv::Rect_, cv::Rect_) */ + +uint __thiscall ImageProc::calcRectMinVerDistance(undefined8 param_1,long param_2,long param_3) + +{ + int iVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + + iVar4 = *(int *)(param_2 + 4); + iVar5 = *(int *)(param_3 + 4); + uVar6 = iVar4 - iVar5; + iVar1 = *(int *)(param_3 + 0xc) + iVar5; + iVar2 = *(int *)(param_2 + 0xc) + iVar4; + uVar7 = iVar4 - iVar1; + uVar8 = iVar2 - iVar1; + uVar9 = iVar2 - iVar5; + if ((((((int)uVar8 < 1) || ((int)uVar6 < 1)) || ((int)uVar7 < 1)) || ((int)uVar9 < 1)) && + (-1 < (int)(uVar7 & uVar6 & uVar9 & uVar8))) { + return 0; + } + uVar3 = -uVar6; + if (-1 < (int)uVar6) { + uVar3 = uVar6; + } + uVar6 = -uVar7; + if (-1 < (int)uVar7) { + uVar6 = uVar7; + } + uVar7 = -uVar9; + if (-1 < (int)uVar9) { + uVar7 = uVar9; + } + uVar9 = -uVar8; + if (-1 < (int)uVar8) { + uVar9 = uVar8; + } + if ((int)uVar7 <= (int)uVar9) { + uVar9 = uVar7; + } + if ((int)uVar3 <= (int)uVar6) { + uVar6 = uVar3; + } + if ((int)uVar6 <= (int)uVar9) { + uVar9 = uVar6; + } + return uVar9; +} + + +================================================================== + +### FUNC 0018c404 (416 bytes) name=raw32bitToMat + +/* ImageProc::raw32bitToMat(unsigned int const*, int, int, cv::Mat*) */ + +void __thiscall +ImageProc::raw32bitToMat(ImageProc *this,uint *param_1,int param_2,int param_3,Mat *param_4) + +{ + ulong uVar1; + long lVar2; + uint *puVar3; + uint uVar4; + uint uVar5; + uint *puVar6; + uint uVar8; + long lVar9; + undefined8 *puVar10; + Mat *pMVar11; + long lVar12; + long lVar13; + long lVar14; + undefined8 *puVar15; + uint *puVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + long *local_1a8 [44]; + long local_48; + uint *puVar7; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + cv::Mat::zeros((Mat *)(ulong)(uint)param_3,param_2,0x18,param_3); + (**(code **)(*local_1a8[0] + 0x18))(local_1a8[0],local_1a8,param_4,0xffffffff); + cv::MatExpr::~MatExpr((MatExpr *)local_1a8); + if (((byte)param_4[1] >> 6 & 1) == 0) { + if (0 < param_3) { + lVar12 = *(long *)(param_4 + 0x10); + uVar1 = (ulong)(param_2 - 1) + 1; + lVar13 = **(long **)(param_4 + 0x48); + lVar14 = uVar1 - (param_2 & 7U); + pMVar11 = (Mat *)0x0; + puVar15 = (undefined8 *)(lVar12 + 0x10); + do { + if (param_2 != 0) { + puVar16 = (uint *)(lVar12 + lVar13 * (long)pMVar11); + puVar6 = param_1; + uVar8 = param_2; + if (uVar1 < 8) goto LAB_0018c538; + if (lVar14 == 0) goto LAB_0018c538; + if (((uint *)(lVar12 + lVar13 * (long)pMVar11) < param_1 + uVar1) && + (param_1 < (uint *)(lVar12 + (ulong)(param_2 - 1) * 4 + 4 + lVar13 * (long)pMVar11))) + goto LAB_0018c538; + puVar16 = puVar16 + lVar14; + puVar7 = param_1 + lVar14; + puVar6 = param_1 + 4; + lVar9 = lVar14; + puVar10 = puVar15; + do { + puVar3 = puVar6 + -2; + uVar17 = *(undefined8 *)(puVar6 + -4); + uVar19 = *(undefined8 *)(puVar6 + 2); + uVar18 = *(undefined8 *)puVar6; + puVar6 = puVar6 + 8; + lVar9 = lVar9 + -8; + puVar10[-1] = *(undefined8 *)puVar3; + puVar10[-2] = uVar17; + puVar10[1] = uVar19; + *puVar10 = uVar18; + puVar10 = puVar10 + 4; + uVar4 = param_2 - (int)lVar14; + uVar5 = param_2 & 7U; + } while (lVar9 != 0); + while (puVar6 = puVar7, uVar8 = uVar4, uVar5 != 0) { +LAB_0018c538: + puVar7 = puVar6 + 1; + *puVar16 = *puVar6; + uVar4 = uVar8 - 1; + puVar16 = puVar16 + 1; + uVar5 = uVar8 - 1; + } + param_1 = param_1 + uVar1; + } + pMVar11 = pMVar11 + 1; + puVar15 = (undefined8 *)((long)puVar15 + lVar13); + } while (pMVar11 != (Mat *)(ulong)(uint)param_3); + } + } + else { + memcpy(*(void **)(param_4 + 0x10),param_1,(long)(param_2 * param_3 * 4)); + } + if (*(long *)(lVar2 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018c5b8 (128 bytes) name=putValue + +/* ImageProc::putValue(unsigned char*, int, int, int, int, int) */ + +ImageProc * __thiscall +ImageProc::putValue(ImageProc *this,uchar *param_1,int param_2,int param_3,int param_4,int param_5, + int param_6) + +{ + long lVar1; + int iVar2; + + if (0 < param_6) { + lVar1 = (long)param_4; + iVar2 = param_4 * param_2; + do { + if (param_5 != 0) { + this = memset(param_1 + (long)iVar2 + (long)param_3,0xff,(ulong)(param_5 - 1) + 1); + } + lVar1 = lVar1 + 1; + iVar2 = iVar2 + param_2; + } while (lVar1 < param_6 + param_4); + } + return this; +} + + +================================================================== + +### FUNC 0018c638 (248 bytes) name=calcImageProportion + +/* ImageProc::calcImageProportion(cv::Mat, cv::Rect_) */ + +int __thiscall ImageProc::calcImageProportion(undefined8 param_1,long param_2,int *param_3) + +{ + uint uVar1; + ulong uVar2; + uint uVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + int iVar7; + ulong uVar8; + char *pcVar9; + int iVar10; + int iVar11; + long lVar12; + long lVar13; + ulong uVar14; + + iVar4 = param_3[3]; + if (iVar4 < 1) { + iVar11 = param_3[2]; + iVar10 = 0; + } + else { + iVar11 = param_3[2]; + lVar13 = **(long **)(param_2 + 0x48); + uVar2 = (ulong)(iVar11 - 1U) + 1; + uVar3 = ~(iVar11 - 1U) & 1; + lVar12 = 0; + iVar10 = 0; + uVar14 = uVar2 - uVar3; + pcVar5 = (char *)(*(long *)(param_2 + 0x10) + (long)*param_3 + lVar13 * param_3[1] + 1); + do { + if (0 < iVar11) { + pcVar6 = (char *)(*(long *)(param_2 + 0x10) + lVar13 * (lVar12 + param_3[1]) + + (long)*param_3); + if ((uVar2 < 2) || (uVar14 == 0)) { + uVar8 = 0; + } + else { + iVar7 = 0; + uVar8 = uVar14; + pcVar9 = pcVar5; + do { + uVar8 = uVar8 - 2; + if (pcVar9[-1] != '\0') { + iVar10 = iVar10 + 1; + } + if (*pcVar9 != '\0') { + iVar7 = iVar7 + 1; + } + pcVar9 = pcVar9 + 2; + } while (uVar8 != 0); + iVar10 = iVar7 + iVar10; + uVar8 = uVar14 & 0xffffffff; + pcVar6 = pcVar6 + uVar14; + if (uVar3 == 0) goto LAB_0018c700; + } + do { + uVar1 = (int)uVar8 + 1; + uVar8 = (ulong)uVar1; + if (*pcVar6 != '\0') { + iVar10 = iVar10 + 1; + } + pcVar6 = pcVar6 + 1; + } while ((int)uVar1 < iVar11); + } +LAB_0018c700: + lVar12 = lVar12 + 1; + pcVar5 = pcVar5 + lVar13; + } while (lVar12 < iVar4); + } + iVar7 = 0; + if (iVar11 * iVar4 != 0) { + iVar7 = (iVar10 * 100) / (iVar11 * iVar4); + } + return iVar7; +} + + +================================================================== + +### FUNC 0018c730 (4 bytes) name=showImage + +/* ImageProc::showImage(cv::Mat const&, std::list, std::allocator > >, + std::string) */ + +void ImageProc::showImage(void) + +{ + return; +} + + +================================================================== + +### FUNC 0018c734 (44 bytes) name=_S_select>const,void> + +/* std::allocator > const std::allocator_traits > + >::_S_select > const, void>(std::allocator > + const&, ...) */ + +void std::allocator_traits>>:: + _S_select>const,void>(allocator_conflict *param_1,...) + +{ + return; +} + + +================================================================== + +### FUNC 0018c760 (248 bytes) name=_M_emplace_back_aux + +/* void std::vector >::_M_emplace_back_aux(JRect&&) */ + +void __thiscall +std::vector>::_M_emplace_back_aux + (vector> *this,JRect *param_1) + +{ + ulong uVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + ulong uVar5; + ulong uVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar10; + undefined8 *puVar9; + + puVar4 = *(undefined8 **)this; + puVar3 = *(undefined8 **)(this + 8); + uVar6 = (long)puVar3 - (long)puVar4 >> 4; + uVar5 = uVar6; + if (uVar6 == 0) { + uVar5 = 1; + } + uVar1 = 0xfffffffffffffff; + if (!CARRY8(uVar5,uVar6) && uVar5 + uVar6 >> 0x3c == 0) { + uVar1 = uVar5 + uVar6; + } + if (uVar1 == 0) { + puVar2 = (undefined8 *)0x0; + } + else { + if (uVar1 >> 0x3c != 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + puVar2 = operator_new(uVar1 << 4); + puVar4 = *(undefined8 **)this; + puVar3 = *(undefined8 **)(this + 8); + } + uVar10 = *(undefined8 *)param_1; + puVar7 = (undefined8 *)((long)puVar2 + ((long)puVar3 - (long)puVar4)); + puVar7[1] = *(undefined8 *)(param_1 + 8); + *puVar7 = uVar10; + puVar7 = puVar2; + puVar8 = puVar4; + if (puVar4 == puVar3) { + puVar4 = puVar2 + 2; + } + else { + do { + puVar9 = puVar8 + 2; + uVar10 = *puVar8; + puVar7[1] = puVar8[1]; + *puVar7 = uVar10; + puVar7 = puVar7 + 2; + puVar8 = puVar9; + } while (puVar3 != puVar9); + uVar5 = (long)puVar3 + (-0x10 - (long)puVar4); + puVar3 = *(undefined8 **)this; + puVar4 = (undefined8 *)((long)puVar2 + (uVar5 & 0xfffffffffffffff0) + 0x20); + } + if (puVar3 != (undefined8 *)0x0) { + operator_delete(puVar3); + } + *(undefined8 **)this = puVar2; + *(undefined8 **)(this + 8) = puVar4; + *(undefined8 **)(this + 0x10) = puVar2 + uVar1 * 2; + return; +} + + +================================================================== + +### FUNC 0018c858 (68 bytes) name=MAG_SetDetectParameter + +undefined8 MAG_SetDetectParameter(ulong param_1,FilterPara *param_2) + +{ + undefined8 uVar1; + + uVar1 = MAG_IsInitialized(); + if ((int)uVar1 != 0) { + ImageProc::setFilterPara + ((ImageProc *)(PTR_gChannelObj_00501f00 + (param_1 & 0xffffffff) * 0x40),param_2); + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018c89c (256 bytes) name=MAG_GetDetectSuggestedParameter + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void MAG_GetDetectSuggestedParameter(undefined4 param_1,undefined8 *param_2) + +{ + uint uVar1; + long lVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + int local_80 [16]; + int local_40; + int iStack_3c; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + uVar5 = MAG_IsLinked(); + if ((int)uVar5 != 0) { + MAG_GetCamInfo(param_1,local_80,0x48); + *param_2 = 0xa41000006978; + uVar4 = _UNK_0043a608; + uVar3 = _DAT_0043a600; + *(uint *)(param_2 + 1) = ((uint)(iStack_3c * local_40 * 5) >> 8 & 0xfffff) / 0x1b; + *(int *)((long)param_2 + 0xc) = iStack_3c * local_40; + *(uint *)(param_2 + 3) = (uint)(iStack_3c * 0x32) / 0x120; + uVar1 = local_40 << 5; + if (local_80[0] != 0xa0) { + uVar1 = local_40 * 6; + } + uVar5 = 1; + *(undefined8 *)((long)param_2 + 0x24) = uVar4; + *(undefined8 *)((long)param_2 + 0x1c) = uVar3; + *(uint *)(param_2 + 2) = uVar1 / 0x180; + *(uint *)((long)param_2 + 0x14) = (uint)(local_40 * 0x19) / 0x180; + } + if (*(long *)(lVar2 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 0018c99c (80 bytes) name=MAG_SetDetectMaskPoints + +undefined8 MAG_SetDetectMaskPoints(ulong param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined *puVar1; + undefined8 uVar2; + + uVar2 = MAG_IsInitialized(); + puVar1 = PTR_gChannelObj_00501f00; + if ((int)uVar2 != 0) { + uVar2 = 1; + *(undefined8 *)(PTR_gChannelObj_00501f00 + (param_1 & 0xffffffff) * 0x40 + 0x30) = param_2; + *(undefined4 *)(puVar1 + (param_1 & 0xffffffff) * 0x40 + 0x38) = param_3; + } + return uVar2; +} + + +================================================================== + +### FUNC 0018c9ec (288 bytes) name=MAG_FindDetectTarget + +int MAG_FindDetectTarget + (uint param_1,long param_2,int param_3,int param_4,undefined8 *param_5,int param_6) + +{ + long lVar1; + int iVar2; + int iVar3; + long lVar4; + undefined8 *puVar5; + undefined8 uVar6; + undefined8 *local_b8; + long lStack_b0; + uint local_a0 [18]; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + iVar2 = -1; + if (((param_2 != 0) && (param_5 != (undefined8 *)0x0)) && (-1 < param_6)) { + iVar2 = MAG_IsProcessingImage(param_1); + if (iVar2 == 0) { + iVar2 = -1; + } + else { + MAG_GetCamInfo(param_1,local_a0,0x48); + ImageProc::findTarget + ((uint)(PTR_gChannelObj_00501f00 + (ulong)param_1 * 0x40),(uchar *)(ulong)param_1, + (int)param_2,param_3,param_4,(uint *)(ulong)local_a0[0], + (int)*(undefined8 *)(PTR_gChannelObj_00501f00 + (ulong)param_1 * 0x40 + 0x30)); + iVar3 = (int)((ulong)(lStack_b0 - (long)local_b8) >> 4); + iVar2 = param_6; + if (iVar3 <= param_6) { + iVar2 = iVar3; + } + if (0 < iVar2) { + lVar4 = 0; + puVar5 = local_b8; + do { + uVar6 = *puVar5; + lVar4 = lVar4 + 1; + param_5[1] = puVar5[1]; + *param_5 = uVar6; + puVar5 = puVar5 + 2; + param_5 = param_5 + 2; + } while (lVar4 < iVar2); + } + if (local_b8 != (undefined8 *)0x0) { + operator_delete(local_b8); + } + } + } + if (*(long *)(lVar1 + 0x28) == local_58) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018cb0c (288 bytes) name=discovered_devs_append + +ulong * discovered_devs_append(ulong *param_1,pthread_mutex_t *param_2) + +{ + ulong *puVar1; + ulong uVar2; + ulong uVar3; + + uVar3 = *param_1; + if (uVar3 < param_1[1]) { + pthread_mutex_lock(param_2); + param_2[1].__data.__lock = param_2[1].__data.__lock + 1; + pthread_mutex_unlock(param_2); + param_1[uVar3 + 2] = (ulong)param_2; + *param_1 = *param_1 + 1; + puVar1 = param_1; + } + else { + usbi_log(0,4,"discovered_devs_append","need to increase capacity"); + uVar2 = param_1[1]; + puVar1 = realloc(param_1,(uVar2 + 8) * 8 + 0x10); + if (puVar1 == (ulong *)0x0) { + if (*param_1 != 0) { + uVar3 = 0; + do { + libusb_unref_device(param_1[uVar3 + 2]); + uVar3 = uVar3 + 1; + } while (uVar3 < *param_1); + } + free(param_1); + puVar1 = (ulong *)0x0; + } + else { + puVar1[1] = uVar2 + 8; + pthread_mutex_lock(param_2); + param_2[1].__data.__lock = param_2[1].__data.__lock + 1; + pthread_mutex_unlock(param_2); + puVar1[uVar3 + 2] = (ulong)param_2; + *puVar1 = *puVar1 + 1; + } + } + return puVar1; +} + + +================================================================== + +### FUNC 0018cc2c (56 bytes) name=libusb_ref_device + +pthread_mutex_t * libusb_ref_device(pthread_mutex_t *param_1) + +{ + pthread_mutex_lock(param_1); + param_1[1].__data.__lock = param_1[1].__data.__lock + 1; + pthread_mutex_unlock(param_1); + return param_1; +} + + +================================================================== + +### FUNC 0018cc64 (148 bytes) name=usbi_log + +void usbi_log(void) + +{ + long lVar1; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + long lVar2; + undefined8 local_90; + undefined8 uStack_88; + undefined8 local_80; + undefined8 uStack_78; + undefined1 *local_70; + undefined1 **ppuStack_68; + undefined8 *puStack_60; + undefined8 uStack_58; + + lVar1 = tpidr_el0; + lVar2 = *(long *)(lVar1 + 0x28); + puStack_60 = &local_90; + ppuStack_68 = &local_70; + uStack_58 = 0xffffff80ffffffe0; + local_90 = in_x4; + uStack_88 = in_x5; + local_80 = in_x6; + uStack_78 = in_x7; + local_70 = (undefined1 *)register0x00000008; + usbi_log_v(); + if (*(long *)(lVar1 + 0x28) == lVar2) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018ccf8 (192 bytes) name=usbi_alloc_device + +pthread_mutex_t * usbi_alloc_device(long param_1,undefined8 param_2) + +{ + undefined *puVar1; + int iVar2; + pthread_mutex_t *__mutex; + long lVar3; + undefined8 uVar4; + + puVar1 = PTR_linux_usbfs_backend_00501f10; + __mutex = calloc(1,*(long *)(PTR_linux_usbfs_backend_00501f10 + 0x110) + 0x80); + if (__mutex != (pthread_mutex_t *)0x0) { + iVar2 = pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + if (iVar2 == 0) { + lVar3 = *(long *)(puVar1 + 0x20); + *(long *)((long)__mutex + 0x30) = param_1; + __mutex[1].__data.__lock = 1; + *(undefined8 *)((long)__mutex + 0x60) = param_2; + *(undefined4 *)((long)__mutex + 0x4c) = 0; + if (lVar3 != 0) { + *(undefined4 *)((long)__mutex + 0x7c) = 1; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x20)); + lVar3 = *(long *)((long)__mutex + 0x30); + uVar4 = *(undefined8 *)(lVar3 + 0x18); + __mutex[2].__align = lVar3 + 0x10; + *(undefined8 *)((long)__mutex + 0x58) = uVar4; + **(long **)(lVar3 + 0x18) = (long)(__mutex + 2); + *(pthread_mutex_t **)(lVar3 + 0x18) = __mutex + 2; + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)((long)__mutex + 0x30) + 0x20)); + } + } + else { + free(__mutex); + __mutex = (pthread_mutex_t *)0x0; + } + } + return __mutex; +} + + +================================================================== + +### FUNC 0018cdb8 (116 bytes) name=libusb_has_capability + +uint libusb_has_capability(int param_1) + +{ + if (param_1 < 0x100) { + if (param_1 == 0) { + return 1; + } + if (param_1 == 1) { + return (uint)(*(long *)(PTR_linux_usbfs_backend_00501f10 + 0x20) == 0); + } + } + else { + if (param_1 == 0x100) { + return *(uint *)(PTR_linux_usbfs_backend_00501f10 + 8) & 0x10000; + } + if (param_1 == 0x101) { + return *(uint *)(PTR_linux_usbfs_backend_00501f10 + 8) & 0x20000; + } + } + return 0; +} + + +================================================================== + +### FUNC 0018ce2c (144 bytes) name=usbi_connect_device + +ulong usbi_connect_device(long param_1) + +{ + uint uVar1; + ulong uVar2; + long lVar3; + undefined8 uVar4; + long lVar5; + + lVar5 = *(long *)(param_1 + 0x30); + *(undefined4 *)(param_1 + 0x7c) = 1; + pthread_mutex_lock((pthread_mutex_t *)(lVar5 + 0x20)); + lVar3 = *(long *)(param_1 + 0x30); + uVar4 = *(undefined8 *)(lVar3 + 0x18); + *(long *)(param_1 + 0x50) = lVar3 + 0x10; + *(undefined8 *)(param_1 + 0x58) = uVar4; + **(long **)(lVar3 + 0x18) = param_1 + 0x50; + *(long *)(lVar3 + 0x18) = param_1 + 0x50; + uVar1 = pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(param_1 + 0x30) + 0x20)); + if ((*(long *)(PTR_linux_usbfs_backend_00501f10 + 0x20) == 0) && + (*(long *)(*(long *)(param_1 + 0x30) + 0x1e8) != 0)) { + uVar2 = usbi_hotplug_notification(lVar5,param_1,1); + return uVar2; + } + return (ulong)uVar1; +} + + +================================================================== + +### FUNC 0018cebc (152 bytes) name=usbi_disconnect_device + +ulong usbi_disconnect_device(pthread_mutex_t *param_1) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + uint uVar2; + ulong uVar3; + long lVar4; + + lVar4 = *(long *)((long)param_1 + 0x30); + pthread_mutex_lock(param_1); + *(undefined4 *)((long)param_1 + 0x7c) = 0; + pthread_mutex_unlock(param_1); + __mutex = (pthread_mutex_t *)(lVar4 + 0x20); + pthread_mutex_lock(__mutex); + plVar1 = *(long **)((long)param_1 + 0x58); + *plVar1 = param_1[2].__align; + *(long **)(param_1[2].__align + 8) = plVar1; + param_1[2].__align = 0; + *(undefined8 *)((long)param_1 + 0x58) = 0; + uVar2 = pthread_mutex_unlock(__mutex); + if ((*(long *)(PTR_linux_usbfs_backend_00501f10 + 0x20) == 0) && + (*(long *)(*(long *)((long)param_1 + 0x30) + 0x1e8) != 0)) { + uVar3 = usbi_hotplug_notification(lVar4,param_1,2); + return uVar3; + } + return (ulong)uVar2; +} + + +================================================================== + +### FUNC 0018cf54 (124 bytes) name=usbi_sanitize_device + +undefined8 usbi_sanitize_device(long param_1) + +{ + byte bVar1; + undefined8 uVar2; + + uVar2 = usbi_device_cache_descriptor(); + if (-1 < (int)uVar2) { + bVar1 = *(byte *)(param_1 + 0x79); + if (bVar1 < 9) { + if (bVar1 == 0) { + usbi_log(0,4,"usbi_sanitize_device","zero configurations, maybe an unauthorized device"); + } + uVar2 = 0; + *(byte *)(param_1 + 0x49) = bVar1; + } + else { + usbi_log(*(undefined8 *)(param_1 + 0x30),1,"usbi_sanitize_device","too many configurations"); + uVar2 = 0xffffffff; + } + } + return uVar2; +} + + +================================================================== + +### FUNC 0018cfd0 (148 bytes) name=usbi_get_device_by_session_id + +pthread_mutex_t * usbi_get_device_by_session_id(long param_1,long param_2) + +{ + long lVar1; + pthread_mutex_t *__mutex; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x20)); + lVar1 = *(long *)(param_1 + 0x18); + do { + if (lVar1 == param_1 + 0x10) { + __mutex = (pthread_mutex_t *)0x0; +LAB_0018d048: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x20)); + return __mutex; + } + __mutex = (pthread_mutex_t *)(lVar1 + -0x50); + if (*(long *)(lVar1 + 0x10) == param_2) { + pthread_mutex_lock(__mutex); + *(int *)(lVar1 + -0x28) = *(int *)(lVar1 + -0x28) + 1; + pthread_mutex_unlock(__mutex); + goto LAB_0018d048; + } + lVar1 = *(long *)(lVar1 + 8); + } while( true ); +} + + +================================================================== + +### FUNC 0018d064 (596 bytes) name=libusb_get_device_list + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulong libusb_get_device_list(long param_1,undefined8 *param_2) + +{ + long lVar1; + int iVar2; + ulong *puVar3; + undefined8 *puVar4; + long lVar5; + ulong uVar6; + ulong uVar7; + pthread_mutex_t *ppVar8; + long lVar9; + ulong *local_70; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + puVar3 = malloc(0x50); + uVar6 = _DAT_0043a610; + if (puVar3 != (ulong *)0x0) { + puVar3[1] = _UNK_0043a618; + *puVar3 = uVar6; + } + lVar9 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar9 = param_1; + } + local_70 = puVar3; + usbi_log(0,4,"libusb_get_device_list",""); + if (puVar3 == (ulong *)0x0) { + uVar6 = 0xfffffffffffffff5; + goto LAB_0018d1e8; + } + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0x20) == (code *)0x0) { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0x28) != (code *)0x0) { + (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x28))(); + } + pthread_mutex_lock((pthread_mutex_t *)(lVar9 + 0x20)); + lVar5 = *(long *)(lVar9 + 0x18); + if (lVar5 == lVar9 + 0x10) { + iVar2 = 0; + } + else { + do { + puVar3 = (ulong *)discovered_devs_append(puVar3,lVar5 + -0x50); + if (puVar3 == (ulong *)0x0) { + local_70 = (ulong *)0x0; + iVar2 = -0xb; + goto LAB_0018d298; + } + lVar5 = *(long *)(lVar5 + 8); + } while (lVar5 != lVar9 + 0x10); + iVar2 = 0; + local_70 = puVar3; + } +LAB_0018d298: + pthread_mutex_unlock((pthread_mutex_t *)(lVar9 + 0x20)); + if (iVar2 < 0) goto LAB_0018d2a4; +LAB_0018d110: + puVar3 = local_70; + uVar6 = *local_70; + puVar4 = calloc(uVar6 + 1,8); + if (puVar4 == (undefined8 *)0x0) { + uVar6 = 0xfffffffffffffff5; + puVar3 = local_70; + } + else { + if (0 < (long)uVar6) { + ppVar8 = (pthread_mutex_t *)puVar3[2]; + pthread_mutex_lock(ppVar8); + ppVar8[1].__data.__lock = ppVar8[1].__data.__lock + 1; + pthread_mutex_unlock(ppVar8); + *puVar4 = ppVar8; + if (uVar6 != 1) { + lVar9 = 0; + do { + ppVar8 = (pthread_mutex_t *)local_70[lVar9 + 3]; + pthread_mutex_lock(ppVar8); + ppVar8[1].__data.__lock = ppVar8[1].__data.__lock + 1; + pthread_mutex_unlock(ppVar8); + lVar5 = lVar9 + 1; + puVar4[lVar9 + 1] = ppVar8; + lVar9 = lVar5; + } while (uVar6 - 1 != lVar5); + } + } + *param_2 = puVar4; + puVar3 = local_70; + } + } + else { + iVar2 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x20))(lVar9,&local_70); + if (-1 < iVar2) goto LAB_0018d110; +LAB_0018d2a4: + uVar6 = (ulong)iVar2; + puVar3 = local_70; + } + local_70 = puVar3; + if (puVar3 != (ulong *)0x0) { + if (*puVar3 != 0) { + uVar7 = 0; + do { + libusb_unref_device(puVar3[uVar7 + 2]); + uVar7 = uVar7 + 1; + } while (uVar7 < *puVar3); + } + free(puVar3); + } +LAB_0018d1e8: + if (*(long *)(lVar1 + 0x28) == local_68) { + return uVar6; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018d2b8 (76 bytes) name=libusb_free_device_list + +void libusb_free_device_list(long *param_1,int param_2) + +{ + long lVar1; + long *plVar2; + + if (param_1 != (long *)0x0) { + if (param_2 != 0) { + lVar1 = *param_1; + plVar2 = param_1; + while (lVar1 != 0) { + plVar2 = plVar2 + 1; + libusb_unref_device(); + lVar1 = *plVar2; + } + } + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 0018d304 (172 bytes) name=libusb_unref_device + +ulong libusb_unref_device(pthread_mutex_t *param_1) + +{ + int iVar1; + undefined *puVar2; + uint uVar3; + ulong extraout_x0; + ulong uVar4; + + uVar4 = 0; + if (param_1 != (pthread_mutex_t *)0x0) { + pthread_mutex_lock(param_1); + iVar1 = param_1[1].__data.__lock + -1; + param_1[1].__data.__lock = iVar1; + uVar3 = pthread_mutex_unlock(param_1); + uVar4 = (ulong)uVar3; + if (iVar1 == 0) { + usbi_log(0,4,"libusb_unref_device","destroy device %d.%d", + *(undefined1 *)((long)param_1 + 0x38),*(undefined1 *)((long)param_1 + 0x48)); + libusb_unref_device(*(undefined8 *)((long)param_1 + 0x40)); + puVar2 = PTR_linux_usbfs_backend_00501f10; + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xd8) != (code *)0x0) { + (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xd8))(param_1); + } + if (*(long *)(puVar2 + 0x20) != 0) { + usbi_disconnect_device(param_1); + } + pthread_mutex_destroy(param_1); + free(param_1); + return extraout_x0; + } + } + return uVar4; +} + + +================================================================== + +### FUNC 0018d3b0 (8 bytes) name=libusb_get_bus_number + +undefined1 libusb_get_bus_number(long param_1) + +{ + return *(undefined1 *)(param_1 + 0x38); +} + + +================================================================== + +### FUNC 0018d3b8 (8 bytes) name=libusb_get_port_number + +undefined1 libusb_get_port_number(long param_1) + +{ + return *(undefined1 *)(param_1 + 0x39); +} + + +================================================================== + +### FUNC 0018d3c0 (180 bytes) name=libusb_get_port_numbers + +int libusb_get_port_numbers(long param_1,void *param_2,int param_3) + +{ + undefined8 uVar1; + ulong uVar2; + int iVar3; + int iVar4; + + if (param_3 < 1) { + param_3 = -2; + } + else { + uVar1 = *(undefined8 *)(param_1 + 0x30); + uVar2 = (ulong)param_3; + do { + if (*(char *)(param_1 + 0x39) == '\0') { + iVar3 = (int)uVar2; + uVar2 = uVar2 & 0xffffffff; + goto joined_r0x0018d43c; + } + if ((long)uVar2 < 1) { + usbi_log(uVar1,2,"libusb_get_port_numbers","port numbers array is too small"); + return -8; + } + *(char *)((long)param_2 + (uVar2 - 1)) = *(char *)(param_1 + 0x39); + param_1 = *(long *)(param_1 + 0x40); + uVar2 = uVar2 - 1; + } while (param_1 != 0); + iVar3 = (int)uVar2; +joined_r0x0018d43c: + iVar4 = (int)uVar2; + if (iVar3 < param_3) { + param_3 = param_3 - iVar4; + memmove(param_2,(void *)((long)param_2 + (long)iVar4),(long)param_3); + } + else { + param_3 = param_3 - iVar4; + } + } + return param_3; +} + + +================================================================== + +### FUNC 0018d474 (176 bytes) name=libusb_get_port_path + +int libusb_get_port_path(undefined8 param_1,long param_2,void *param_3,uint param_4) + +{ + undefined8 uVar1; + ulong uVar2; + int iVar3; + int iVar4; + + param_4 = param_4 & 0xff; + uVar2 = (ulong)param_4; + if (param_4 == 0) { + iVar3 = -2; + } + else { + uVar1 = *(undefined8 *)(param_2 + 0x30); + do { + if (*(char *)(param_2 + 0x39) == '\0') { + iVar3 = (int)uVar2; + uVar2 = uVar2 & 0xffffffff; + goto joined_r0x0018d4ec; + } + if ((long)uVar2 < 1) { + usbi_log(uVar1,2,"libusb_get_port_numbers","port numbers array is too small"); + return -8; + } + *(char *)((long)param_3 + (uVar2 - 1)) = *(char *)(param_2 + 0x39); + param_2 = *(long *)(param_2 + 0x40); + uVar2 = uVar2 - 1; + } while (param_2 != 0); + iVar3 = (int)uVar2; +joined_r0x0018d4ec: + iVar4 = (int)uVar2; + if (iVar3 < (int)param_4) { + iVar3 = param_4 - iVar4; + memmove(param_3,(void *)((long)param_3 + (long)iVar4),(long)iVar3); + } + else { + iVar3 = param_4 - iVar4; + } + } + return iVar3; +} + + +================================================================== + +### FUNC 0018d524 (8 bytes) name=libusb_get_parent + +undefined8 libusb_get_parent(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x40); +} + + +================================================================== + +### FUNC 0018d52c (8 bytes) name=libusb_get_device_address + +undefined1 libusb_get_device_address(long param_1) + +{ + return *(undefined1 *)(param_1 + 0x48); +} + + +================================================================== + +### FUNC 0018d534 (8 bytes) name=libusb_get_device_speed + +undefined4 libusb_get_device_speed(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x4c); +} + + +================================================================== + +### FUNC 0018d53c (292 bytes) name=libusb_get_max_packet_size + +uint libusb_get_max_packet_size(long param_1,char param_2) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + long lVar5; + ulong uVar6; + ushort *puVar7; + long lVar8; + uint uVar9; + long local_40; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + iVar2 = libusb_get_active_config_descriptor(param_1,&local_40); + if (iVar2 < 0) { + usbi_log(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_max_packet_size", + "could not retrieve active config descriptor"); + uVar9 = 0xffffff9d; + } + else { + if ((ulong)*(byte *)(local_40 + 4) != 0) { + lVar3 = 0; + do { + iVar2 = *(int *)(*(long *)(local_40 + 0x10) + lVar3 * 0x10 + 8); + if (0 < iVar2) { + lVar4 = *(long *)(*(long *)(local_40 + 0x10) + lVar3 * 0x10); + lVar5 = 0; + do { + uVar6 = (ulong)*(byte *)(lVar4 + lVar5 * 0x28 + 4); + if (uVar6 != 0) { + lVar8 = 0; + puVar7 = (ushort *)(*(long *)(lVar4 + lVar5 * 0x28 + 0x10) + 4); + do { + if ((char)puVar7[-1] == param_2) { + if (puVar7 == (ushort *)0x4) goto LAB_0018d608; + uVar9 = (uint)*puVar7; + goto LAB_0018d60c; + } + lVar8 = lVar8 + 1; + puVar7 = puVar7 + 0x10; + } while (lVar8 < (long)uVar6); + } + lVar5 = lVar5 + 1; + } while (lVar5 < iVar2); + } + lVar3 = lVar3 + 1; + } while (lVar3 < (long)(ulong)*(byte *)(local_40 + 4)); + } +LAB_0018d608: + uVar9 = 0xfffffffb; +LAB_0018d60c: + libusb_free_config_descriptor(); + } + if (*(long *)(lVar1 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar9; +} + + +================================================================== + +### FUNC 0018d660 (328 bytes) name=libusb_get_max_iso_packet_size + +uint libusb_get_max_iso_packet_size(long param_1,char param_2) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + long lVar5; + ulong uVar6; + ushort *puVar7; + long lVar8; + uint uVar9; + long local_40; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + iVar2 = libusb_get_active_config_descriptor(param_1,&local_40); + if (iVar2 < 0) { + usbi_log(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_max_iso_packet_size", + "could not retrieve active config descriptor"); + uVar9 = 0xffffff9d; + } + else { + if ((ulong)*(byte *)(local_40 + 4) != 0) { + lVar3 = 0; + do { + iVar2 = *(int *)(*(long *)(local_40 + 0x10) + lVar3 * 0x10 + 8); + if (0 < iVar2) { + lVar4 = *(long *)(*(long *)(local_40 + 0x10) + lVar3 * 0x10); + lVar5 = 0; + do { + uVar6 = (ulong)*(byte *)(lVar4 + lVar5 * 0x28 + 4); + if (uVar6 != 0) { + lVar8 = 0; + puVar7 = (ushort *)(*(long *)(lVar4 + lVar5 * 0x28 + 0x10) + 4); + do { + if ((char)puVar7[-1] == param_2) { + if (puVar7 == (ushort *)0x4) goto LAB_0018d750; + uVar9 = *puVar7 & 0x7ff; + if ((*(byte *)((long)puVar7 + -1) & 1 | 2) == 3) { + uVar9 = ((*puVar7 >> 0xb & 3) + 1) * uVar9; + } + goto LAB_0018d754; + } + lVar8 = lVar8 + 1; + puVar7 = puVar7 + 0x10; + } while (lVar8 < (long)uVar6); + } + lVar5 = lVar5 + 1; + } while (lVar5 < iVar2); + } + lVar3 = lVar3 + 1; + } while (lVar3 < (long)(ulong)*(byte *)(local_40 + 4)); + } +LAB_0018d750: + uVar9 = 0xfffffffb; +LAB_0018d754: + libusb_free_config_descriptor(); + } + if (*(long *)(lVar1 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar9; +} + + +================================================================== + +### FUNC 0018d7a8 (140 bytes) name=usbi_signal_event + +void usbi_signal_event(long param_1) + +{ + long lVar1; + ssize_t sVar2; + undefined8 uVar3; + undefined1 local_2c [4]; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + local_2c[0] = 1; + sVar2 = write(*(int *)(param_1 + 0xc),local_2c,1); + if (sVar2 == 1) { + uVar3 = 0; + } + else { + usbi_log(param_1,2,"usbi_signal_event","internal signalling write failed"); + uVar3 = 0xffffffff; + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 0018d834 (132 bytes) name=usbi_clear_event + +void usbi_clear_event(long param_1) + +{ + long lVar1; + ssize_t sVar2; + undefined8 uVar3; + undefined1 auStack_2c [4]; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + sVar2 = read(*(int *)(param_1 + 8),auStack_2c,1); + if (sVar2 == 1) { + uVar3 = 0; + } + else { + usbi_log(param_1,2,"usbi_clear_event","internal signalling read failed"); + uVar3 = 0xffffffff; + } + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 0018d8b8 (360 bytes) name=libusb_wrap_fd + +int libusb_wrap_fd(long param_1,undefined4 param_2,undefined8 *param_3) + +{ + long lVar1; + undefined *puVar2; + int iVar3; + pthread_mutex_t *__mutex; + long *plVar4; + size_t __n; + code *pcVar5; + + puVar2 = PTR_linux_usbfs_backend_00501f10; + usbi_log(0,4,"libusb_wrap_fd","wrap %d",param_2); + pcVar5 = *(code **)(puVar2 + 0x30); + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + if (pcVar5 == (code *)0x0) { + iVar3 = -0xc; + } + else { + __n = *(size_t *)(puVar2 + 0x118); + __mutex = malloc(__n + 0x50); + if (__mutex == (pthread_mutex_t *)0x0) { + iVar3 = -0xb; + } + else { + iVar3 = pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + if (iVar3 == 0) { + *(undefined8 *)((long)__mutex + 0x40) = 0; + *(undefined4 *)((long)__mutex + 0x48) = 0; + __mutex[1].__align = 0; + memset((void *)((long)__mutex + 0x4c),0,__n); + iVar3 = (*pcVar5)(lVar1,__mutex,param_2); + if (iVar3 < 0) { + usbi_log(0,4,"libusb_wrap_fd","wrap %d returns %d",param_2,iVar3); + pthread_mutex_destroy(__mutex); + free(__mutex); + } + else { + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x58)); + *(undefined8 *)((long)__mutex + 0x38) = *(undefined8 *)(lVar1 + 0x50); + plVar4 = (long *)((long)__mutex + 0x30); + *plVar4 = lVar1 + 0x48; + **(undefined8 **)(lVar1 + 0x50) = plVar4; + *(long **)(lVar1 + 0x50) = plVar4; + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x58)); + iVar3 = 0; + *param_3 = __mutex; + } + } + else { + free(__mutex); + iVar3 = -99; + } + } + } + return iVar3; +} + + +================================================================== + +### FUNC 0018da20 (380 bytes) name=libusb_open + +int libusb_open(pthread_mutex_t *param_1,undefined8 *param_2) + +{ + undefined *puVar1; + int iVar2; + pthread_mutex_t *__mutex; + long *plVar3; + size_t __n; + long lVar4; + + lVar4 = *(long *)((long)param_1 + 0x30); + usbi_log(0,4,"libusb_open","open %d.%d",*(undefined1 *)((long)param_1 + 0x38), + *(undefined1 *)((long)param_1 + 0x48)); + puVar1 = PTR_linux_usbfs_backend_00501f10; + if (*(int *)((long)param_1 + 0x7c) == 0) { + iVar2 = -4; + } + else { + __n = *(size_t *)(PTR_linux_usbfs_backend_00501f10 + 0x118); + __mutex = malloc(__n + 0x50); + if (__mutex == (pthread_mutex_t *)0x0) { + iVar2 = -0xb; + } + else { + iVar2 = pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + if (iVar2 == 0) { + pthread_mutex_lock(param_1); + param_1[1].__data.__lock = param_1[1].__data.__lock + 1; + pthread_mutex_unlock(param_1); + *(pthread_mutex_t **)((long)__mutex + 0x40) = param_1; + *(undefined4 *)((long)__mutex + 0x48) = 0; + __mutex[1].__align = 0; + memset((void *)((long)__mutex + 0x4c),0,__n); + iVar2 = (**(code **)(puVar1 + 0x38))(__mutex); + if (iVar2 < 0) { + usbi_log(0,4,"libusb_open","open %d.%d returns %d",*(undefined1 *)((long)param_1 + 0x38), + *(undefined1 *)((long)param_1 + 0x48),iVar2); + libusb_unref_device(param_1); + pthread_mutex_destroy(__mutex); + free(__mutex); + } + else { + pthread_mutex_lock((pthread_mutex_t *)(lVar4 + 0x58)); + *(undefined8 *)((long)__mutex + 0x38) = *(undefined8 *)(lVar4 + 0x50); + plVar3 = (long *)((long)__mutex + 0x30); + *plVar3 = lVar4 + 0x48; + **(undefined8 **)(lVar4 + 0x50) = plVar3; + *(long **)(lVar4 + 0x50) = plVar3; + pthread_mutex_unlock((pthread_mutex_t *)(lVar4 + 0x58)); + iVar2 = 0; + *param_2 = __mutex; + } + } + else { + free(__mutex); + iVar2 = -99; + } + } + } + return iVar2; +} + + +================================================================== + +### FUNC 0018db9c (240 bytes) name=libusb_open_device_with_vid_pid + +void libusb_open_device_with_vid_pid(undefined8 param_1,short param_2,short param_3) + +{ + long lVar1; + int iVar2; + long lVar3; + undefined8 uVar4; + long *plVar5; + undefined1 auStack_70 [8]; + short local_68; + short local_66; + undefined8 local_58; + long *local_50; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + local_58 = 0; + lVar3 = libusb_get_device_list(param_1,&local_50); + if (lVar3 < 0) { + uVar4 = 0; + } + else { + lVar3 = *local_50; + plVar5 = local_50; + if (lVar3 == 0) { +LAB_0018dc38: + uVar4 = local_58; + if (local_50 == (long *)0x0) goto LAB_0018dc60; + } + else { + do { + iVar2 = libusb_get_device_descriptor(lVar3,auStack_70); + if (iVar2 < 0) goto LAB_0018dc38; + if ((local_68 == param_2) && (local_66 == param_3)) { + iVar2 = libusb_open(lVar3,&local_58); + if (iVar2 < 0) { + local_58 = 0; + } + goto LAB_0018dc38; + } + lVar3 = plVar5[1]; + plVar5 = plVar5 + 1; + } while (lVar3 != 0); + } + lVar3 = *local_50; + plVar5 = local_50; + while (lVar3 != 0) { + plVar5 = plVar5 + 1; + libusb_unref_device(); + lVar3 = *plVar5; + } + free(local_50); + uVar4 = local_58; + } +LAB_0018dc60: + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 0018dc8c (448 bytes) name=libusb_close + +void libusb_close(long param_1) + +{ + pthread_mutex_t *__mutex; + long lVar1; + void *pvVar2; + ssize_t sVar3; + int iVar4; + long lVar5; + undefined1 local_40 [4]; + undefined1 auStack_3c [4]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + if (param_1 == 0) goto LAB_0018ddb8; + usbi_log(0,4,"libusb_close",""); + lVar5 = *(long *)(*(long *)(param_1 + 0x40) + 0x30); + pvVar2 = pthread_getspecific(*(pthread_key_t *)(lVar5 + 0x134)); + if (pvVar2 != (void *)0x0) { + FUN_0018de4c(lVar5,param_1); + goto LAB_0018ddb8; + } + __mutex = (pthread_mutex_t *)(lVar5 + 400); + pthread_mutex_lock(__mutex); + if ((*(int *)(lVar5 + 0x1b8) == 0) && (*(int *)(lVar5 + 0x1bc) == 0)) { + if (*(long *)(lVar5 + 0x1e8) != lVar5 + 0x1e0) { + iVar4 = 1; + goto LAB_0018dd14; + } + *(undefined4 *)(lVar5 + 0x1bc) = 1; + if (*(long *)(lVar5 + 0x1f8) == lVar5 + 0x1f0) { + local_40[0] = 1; + sVar3 = write(*(int *)(lVar5 + 0xc),local_40,1); + if (sVar3 != 1) { + usbi_log(lVar5,2,"usbi_signal_event","internal signalling write failed"); + } + } + } + else { + iVar4 = *(int *)(lVar5 + 0x1bc) + 1; +LAB_0018dd14: + *(int *)(lVar5 + 0x1bc) = iVar4; + } + pthread_mutex_unlock(__mutex); + libusb_lock_events(lVar5); + FUN_0018de4c(lVar5,param_1); + pthread_mutex_lock(__mutex); + iVar4 = *(int *)(lVar5 + 0x1bc) + -1; + *(int *)(lVar5 + 0x1bc) = iVar4; + if ((((*(int *)(lVar5 + 0x1b8) == 0 && iVar4 == 0) && (*(long *)(lVar5 + 0x1e8) == lVar5 + 0x1e0)) + && (*(long *)(lVar5 + 0x1f8) == lVar5 + 0x1f0)) && + (sVar3 = read(*(int *)(lVar5 + 8),auStack_3c,1), sVar3 != 1)) { + usbi_log(lVar5,2,"usbi_clear_event","internal signalling read failed"); + } + pthread_mutex_unlock(__mutex); + libusb_unlock_events(lVar5); +LAB_0018ddb8: + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018de4c (412 bytes) name=FUN_0018de4c + +void FUN_0018de4c(long param_1,pthread_mutex_t *param_2) + +{ + undefined8 *puVar1; + long *plVar2; + undefined8 uVar3; + char *pcVar4; + long *plVar5; + long *plVar6; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 200)); + plVar5 = *(long **)(param_1 + 0xc0); + while (plVar2 = plVar5, plVar2 != (long *)(param_1 + 0xb8)) { + plVar5 = (long *)plVar2[1]; + if ((pthread_mutex_t *)plVar2[0xd] == param_2) { + pthread_mutex_lock((pthread_mutex_t *)((long)plVar2 + 0x3c)); + if ((*(byte *)(plVar2 + 7) >> 2 & 1) == 0) { + usbi_log(param_1,1,"do_close", + "Device handle closed while transfer was still being processed, but the device is still connected as far as we know" + ); + if ((*(byte *)(plVar2 + 7) >> 1 & 1) == 0) { + uVar3 = 1; + pcVar4 = + "A cancellation hasn\'t even been scheduled on the transfer for which the device is closing" + ; + } + else { + uVar3 = 2; + pcVar4 = + "A cancellation for an in-flight transfer hasn\'t completed but closing the device handle" + ; + } + usbi_log(param_1,uVar3,"do_close",pcVar4); + } + pthread_mutex_unlock((pthread_mutex_t *)((long)plVar2 + 0x3c)); + plVar6 = (long *)plVar2[1]; + *plVar6 = *plVar2; + *(long **)(*plVar2 + 8) = plVar6; + *plVar2 = 0; + plVar2[1] = 0; + plVar2[0xd] = 0; + usbi_log(0,4,"do_close", + "Removed transfer %p from the in-flight list because device handle %p closed", + plVar2 + 0xd,param_2); + } + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 200)); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x58)); + puVar1 = *(undefined8 **)((long)param_2 + 0x38); + *puVar1 = *(undefined8 *)((long)param_2 + 0x30); + *(undefined8 **)(*(long *)((long)param_2 + 0x30) + 8) = puVar1; + *(undefined8 *)((long)param_2 + 0x30) = 0; + *(undefined8 *)((long)param_2 + 0x38) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x58)); + (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x40))(param_2); + libusb_unref_device(*(undefined8 *)((long)param_2 + 0x40)); + pthread_mutex_destroy(param_2); + free(param_2); + return; +} + + +================================================================== + +### FUNC 0018dfe8 (8 bytes) name=libusb_get_device + +undefined8 libusb_get_device(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x40); +} + + +================================================================== + +### FUNC 0018dff0 (368 bytes) name=libusb_get_configuration + +int libusb_get_configuration(long param_1,uint *param_2) + +{ + long lVar1; + int iVar2; + byte local_3c [4]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + usbi_log(0,4,"libusb_get_configuration",""); + if ((*(code **)(PTR_linux_usbfs_backend_00501f10 + 0x68) == (code *)0x0) || + (iVar2 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x68))(param_1,param_2), iVar2 == -0xc + )) { + local_3c[0] = 0; + usbi_log(0,4,"libusb_get_configuration","falling back to control message"); + iVar2 = libusb_control_transfer(param_1,0x80,8,0,0,local_3c,1,1000); + if (iVar2 != 1) { + if (iVar2 == 0) { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_configuration", + "zero bytes returned in ctrl transfer?"); + iVar2 = -1; + } + else { + usbi_log(0,4,"libusb_get_configuration","control failed, error %d",iVar2); + } + goto joined_r0x0018e154; + } + iVar2 = 0; + *param_2 = (uint)local_3c[0]; + } + else { +joined_r0x0018e154: + if (iVar2 != 0) goto LAB_0018e0f8; + } + usbi_log(0,4,"libusb_get_configuration","active config %d",*param_2); +LAB_0018e0f8: + if (*(long *)(lVar1 + 0x28) == local_38) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018e160 (84 bytes) name=libusb_set_configuration + +void libusb_set_configuration(undefined8 param_1,undefined4 param_2) + +{ + usbi_log(0,4,"libusb_set_configuration","configuration %d",param_2); + /* WARNING: Could not recover jumptable at 0x0018e1b0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x70))(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0018e1b4 (204 bytes) name=libusb_claim_interface + +int libusb_claim_interface(pthread_mutex_t *param_1,uint param_2) + +{ + int iVar1; + ulong uVar2; + + usbi_log(0,4,"libusb_claim_interface","interface %d",param_2); + if ((int)param_2 < 0x20) { + if (*(int *)(*(long *)((long)param_1 + 0x40) + 0x7c) == 0) { + iVar1 = -4; + } + else { + pthread_mutex_lock(param_1); + uVar2 = (ulong)(1 << (ulong)(param_2 & 0x1f)); + if ((param_1[1].__align & uVar2) == 0) { + iVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x78))(param_1,param_2); + if (iVar1 == 0) { + param_1[1].__align = param_1[1].__align | uVar2; + } + } + else { + iVar1 = 0; + } + pthread_mutex_unlock(param_1); + } + } + else { + iVar1 = -2; + } + return iVar1; +} + + +================================================================== + +### FUNC 0018e280 (192 bytes) name=libusb_release_interface + +int libusb_release_interface(pthread_mutex_t *param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + + usbi_log(0,4,"libusb_release_interface","interface %d",param_2); + if ((int)param_2 < 0x20) { + pthread_mutex_lock(param_1); + uVar1 = 1 << (ulong)(param_2 & 0x1f); + if ((param_1[1].__align & (long)(int)uVar1) == 0) { + iVar2 = -5; + } + else { + iVar2 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x80))(param_1,param_2); + if (iVar2 == 0) { + param_1[1].__align = param_1[1].__align & (long)(int)~uVar1; + } + } + pthread_mutex_unlock(param_1); + } + else { + iVar2 = -2; + } + return iVar2; +} + + +================================================================== + +### FUNC 0018e340 (208 bytes) name=libusb_set_interface_alt_setting + +undefined8 +libusb_set_interface_alt_setting(pthread_mutex_t *param_1,uint param_2,undefined4 param_3) + +{ + undefined8 uVar1; + ulong uVar2; + + usbi_log(0,4,"libusb_set_interface_alt_setting","interface %d altsetting %d",param_2,param_3); + if ((int)param_2 < 0x20) { + pthread_mutex_lock(param_1); + if (*(int *)(*(long *)((long)param_1 + 0x40) + 0x7c) == 0) { + pthread_mutex_unlock(param_1); + uVar1 = 0xfffffffc; + } + else { + uVar2 = param_1[1].__align; + pthread_mutex_unlock(param_1); + if ((uVar2 & (long)(1 << (ulong)(param_2 & 0x1f))) != 0) { + /* WARNING: Could not recover jumptable at 0x0018e3e8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x88))(param_1,param_2,param_3); + return uVar1; + } + uVar1 = 0xfffffffb; + } + } + else { + uVar1 = 0xfffffffe; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018e410 (112 bytes) name=libusb_clear_halt + +undefined8 libusb_clear_halt(long param_1,uint param_2) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_clear_halt","endpoint %x",param_2 & 0xff); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) != 0) { + /* WARNING: Could not recover jumptable at 0x0018e46c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x90))(param_1,param_2); + return uVar1; + } + return 0xfffffffc; +} + + +================================================================== + +### FUNC 0018e480 (100 bytes) name=libusb_reset_device + +undefined8 libusb_reset_device(long param_1) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_reset_device",""); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) != 0) { + /* WARNING: Could not recover jumptable at 0x0018e4d0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x98))(param_1); + return uVar1; + } + return 0xfffffffc; +} + + +================================================================== + +### FUNC 0018e4e4 (156 bytes) name=libusb_alloc_streams + +undefined8 +libusb_alloc_streams(long param_1,undefined4 param_2,undefined8 param_3,undefined4 param_4) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_alloc_streams","streams %u eps %d",param_2,param_4); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xa0) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e560. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xa0)) + (param_1,param_2,param_3,param_4); + return uVar1; + } + uVar1 = 0xfffffff4; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018e580 (144 bytes) name=libusb_free_streams + +undefined8 libusb_free_streams(long param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_free_streams","eps %d",param_3); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xa8) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e5f0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xa8))(param_1,param_2,param_3); + return uVar1; + } + uVar1 = 0xfffffff4; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018e610 (40 bytes) name=libusb_dev_mem_alloc + +undefined8 libusb_dev_mem_alloc(long param_1) + +{ + undefined8 uVar1; + + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) != 0) { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xb0) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e62c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xb0))(); + return uVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0018e638 (28 bytes) name=libusb_dev_mem_free + +undefined8 libusb_dev_mem_free(void) + +{ + undefined8 uVar1; + + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xb8) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e648. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xb8))(); + return uVar1; + } + return 0xfffffff4; +} + + +================================================================== + +### FUNC 0018e654 (124 bytes) name=libusb_kernel_driver_active + +undefined8 libusb_kernel_driver_active(long param_1,undefined4 param_2) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_kernel_driver_active","interface %d",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xc0) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e6b4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xc0))(param_1,param_2); + return uVar1; + } + uVar1 = 0xfffffff4; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018e6d0 (124 bytes) name=libusb_detach_kernel_driver + +undefined8 libusb_detach_kernel_driver(long param_1,undefined4 param_2) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_detach_kernel_driver","interface %d",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 200) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e730. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 200))(param_1,param_2); + return uVar1; + } + uVar1 = 0xfffffff4; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018e74c (124 bytes) name=libusb_attach_kernel_driver + +undefined8 libusb_attach_kernel_driver(long param_1,undefined4 param_2) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_attach_kernel_driver","interface %d",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + if (*(code **)(PTR_linux_usbfs_backend_00501f10 + 0xd0) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x0018e7ac. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0xd0))(param_1,param_2); + return uVar1; + } + uVar1 = 0xfffffff4; + } + return uVar1; +} + + +================================================================== + +### FUNC 0018e7c8 (40 bytes) name=libusb_set_auto_detach_kernel_driver + +undefined8 libusb_set_auto_detach_kernel_driver(long param_1,undefined4 param_2) + +{ + if (((byte)PTR_linux_usbfs_backend_00501f10[10] >> 1 & 1) == 0) { + return 0xfffffff4; + } + *(undefined4 *)(param_1 + 0x48) = param_2; + return 0; +} + + +================================================================== + +### FUNC 0018e7f0 (40 bytes) name=libusb_set_debug + +void libusb_set_debug(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)PTR_usbi_default_context_00501e08; + if (param_1 != (undefined4 *)0x0) { + puVar1 = param_1; + } + if (puVar1[1] != 0) { + return; + } + *puVar1 = param_2; + return; +} + + +================================================================== + +### FUNC 0018e818 (848 bytes) name=libusb_init + +int libusb_init(undefined8 *param_1) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + int *piVar2; + long *plVar3; + undefined *puVar4; + undefined *puVar5; + int iVar6; + char *__nptr; + int *__ptr; + undefined8 *puVar7; + long *plVar8; + long lVar9; + + __nptr = getenv("LIBUSB_DEBUG"); + pthread_mutex_lock((pthread_mutex_t *)&DAT_00531da4); + if (DAT_00531dd0 == 0) { + gettimeofday((timeval *)&DAT_00531dd0,(__timezone_ptr_t)0x0); + } + puVar5 = PTR_usbi_default_context_00501e08; + lVar9 = *(long *)PTR_usbi_default_context_00501e08; + if ((param_1 == (undefined8 *)0x0) && (lVar9 != 0)) { + usbi_log(0,4,"libusb_init","reusing default context"); + DAT_00531de0 = DAT_00531de0 + 1; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531da4); + iVar6 = 0; + } + else { + __ptr = calloc(1,0x210); + if (__ptr == (int *)0x0) { + iVar6 = -0xb; + } + else { + if (__nptr != (char *)0x0) { + iVar6 = atoi(__nptr); + *__ptr = iVar6; + if (iVar6 != 0) { + __ptr[1] = 1; + } + } + if (lVar9 == 0) { + DAT_00531de0 = DAT_00531de0 + 1; + *(int **)puVar5 = __ptr; + usbi_log(0,4,"libusb_init","created default context"); + } + usbi_log(0,4,"libusb_init","libusb v%u.%u.%u.%u%s",1,0,0x15,0x2b94,""); + __mutex = (pthread_mutex_t *)(__ptr + 8); + pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(__ptr + 0x16),(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(__ptr + 0x24),(pthread_mutexattr_t *)0x0); + plVar1 = (long *)(__ptr + 4); + *(long **)(__ptr + 4) = plVar1; + *(long **)(__ptr + 6) = plVar1; + *(int **)(__ptr + 0x12) = __ptr + 0x12; + *(int **)(__ptr + 0x14) = __ptr + 0x12; + *(int **)(__ptr + 0x20) = __ptr + 0x20; + *(int **)(__ptr + 0x22) = __ptr + 0x20; + pthread_mutex_lock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + puVar7 = (undefined8 *)PTR_active_contexts_list_00501b88; + if (DAT_00531da0 == '\x01') { + puVar7 = *(undefined8 **)(PTR_active_contexts_list_00501b88 + 8); + } + else { + DAT_00531da0 = '\x01'; + *(undefined **)(PTR_active_contexts_list_00501b88 + 8) = PTR_active_contexts_list_00501b88; + *puVar7 = puVar7; + } + *(undefined8 **)(__ptr + 0x82) = puVar7; + puVar4 = PTR_active_contexts_list_00501b88; + piVar2 = __ptr + 0x80; + *(undefined **)(__ptr + 0x80) = PTR_active_contexts_list_00501b88; + *puVar7 = piVar2; + *(int **)(puVar4 + 8) = piVar2; + pthread_mutex_unlock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + puVar4 = PTR_linux_usbfs_backend_00501f10; + if ((*(code **)(PTR_linux_usbfs_backend_00501f10 + 0x10) == (code *)0x0) || + (iVar6 = (**(code **)(PTR_linux_usbfs_backend_00501f10 + 0x10))(__ptr), iVar6 == 0)) { + iVar6 = usbi_io_init(__ptr); + if (-1 < iVar6) { + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531da4); + if (param_1 == (undefined8 *)0x0) { + return 0; + } + *param_1 = __ptr; + return 0; + } + if (*(code **)(puVar4 + 0x18) != (code *)0x0) { + (**(code **)(puVar4 + 0x18))(); + } + } + if (*(int **)puVar5 == __ptr) { + *(undefined8 *)puVar5 = 0; + DAT_00531de0 = DAT_00531de0 + -1; + } + puVar5 = PTR_active_contexts_lock_00501e28; + pthread_mutex_lock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + puVar7 = *(undefined8 **)(__ptr + 0x82); + *puVar7 = *(undefined8 *)(__ptr + 0x80); + *(undefined8 **)(*(long *)(__ptr + 0x80) + 8) = puVar7; + piVar2[0] = 0; + piVar2[1] = 0; + __ptr[0x82] = 0; + __ptr[0x83] = 0; + pthread_mutex_unlock((pthread_mutex_t *)puVar5); + pthread_mutex_lock(__mutex); + plVar3 = *(long **)(__ptr + 6); + while (plVar3 != plVar1) { + plVar8 = (long *)plVar3[1]; + *plVar8 = *plVar3; + *(long **)(*plVar3 + 8) = plVar8; + *plVar3 = 0; + plVar3[1] = 0; + libusb_unref_device(); + plVar3 = plVar8; + } + pthread_mutex_unlock(__mutex); + pthread_mutex_destroy((pthread_mutex_t *)(__ptr + 0x16)); + pthread_mutex_destroy(__mutex); + pthread_mutex_destroy((pthread_mutex_t *)(__ptr + 0x24)); + free(__ptr); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531da4); + } + return iVar6; +} + + +================================================================== + +### FUNC 0018eb68 (616 bytes) name=libusb_exit + +void libusb_exit(void *param_1) + +{ + void *__ptr; + long lVar1; + long *plVar2; + undefined *puVar3; + undefined8 *puVar4; + long *plVar5; + undefined8 local_68; + undefined8 uStack_60; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + local_68 = 0; + uStack_60 = 0; + usbi_log(0,4,"libusb_exit",""); + puVar3 = PTR_usbi_default_context_00501e08; + __ptr = *(void **)PTR_usbi_default_context_00501e08; + if (param_1 != (void *)0x0) { + __ptr = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)&DAT_00531da4); + if (__ptr == *(void **)puVar3) { + if (1 < DAT_00531de0) { + DAT_00531de0 = DAT_00531de0 + -1; + usbi_log(0,4,"libusb_exit","not destroying default context"); + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531da4); + goto LAB_0018eda0; + } + DAT_00531de0 = DAT_00531de0 + -1; + usbi_log(0,4,"libusb_exit","destroying default context"); + *(undefined8 *)puVar3 = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531da4); + puVar3 = PTR_active_contexts_lock_00501e28; + pthread_mutex_lock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + puVar4 = *(undefined8 **)((long)__ptr + 0x208); + *puVar4 = *(undefined8 *)((long)__ptr + 0x200); + *(undefined8 **)(*(long *)((long)__ptr + 0x200) + 8) = puVar4; + *(undefined8 *)((long)__ptr + 0x208) = 0; + *(undefined8 *)((long)__ptr + 0x200) = 0; + pthread_mutex_unlock((pthread_mutex_t *)puVar3); + puVar3 = PTR_linux_usbfs_backend_00501f10; + if (*(long *)(PTR_linux_usbfs_backend_00501f10 + 0x20) == 0) { + usbi_hotplug_deregister_all(__ptr); + if (*(long *)((long)__ptr + 0x50) == (long)__ptr + 0x48) { + libusb_handle_events_timeout(__ptr,&local_68); + } + pthread_mutex_lock((pthread_mutex_t *)((long)__ptr + 0x20)); + plVar2 = *(long **)((long)__ptr + 0x18); + while (plVar2 != (long *)((long)__ptr + 0x10)) { + plVar5 = (long *)plVar2[1]; + *plVar5 = *plVar2; + *(long **)(*plVar2 + 8) = plVar5; + *plVar2 = 0; + plVar2[1] = 0; + libusb_unref_device(); + plVar2 = plVar5; + } + pthread_mutex_unlock((pthread_mutex_t *)((long)__ptr + 0x20)); + } + if (*(long *)((long)__ptr + 0x18) != (long)__ptr + 0x10) { + usbi_log(__ptr,2,"libusb_exit","some libusb_devices were leaked"); + } + if (*(long *)((long)__ptr + 0x50) != (long)__ptr + 0x48) { + usbi_log(__ptr,2,"libusb_exit","application left some devices open"); + } + usbi_io_exit(__ptr); + if (*(code **)(puVar3 + 0x18) != (code *)0x0) { + (**(code **)(puVar3 + 0x18))(); + } + pthread_mutex_destroy((pthread_mutex_t *)((long)__ptr + 0x58)); + pthread_mutex_destroy((pthread_mutex_t *)((long)__ptr + 0x20)); + pthread_mutex_destroy((pthread_mutex_t *)((long)__ptr + 0x90)); + free(__ptr); +LAB_0018eda0: + if (*(long *)(lVar1 + 0x28) == local_58) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018edd0 (724 bytes) name=usbi_log_v + +void usbi_log_v(int *param_1,int param_2,undefined8 param_3,char *param_4,undefined8 *param_5) + +{ + uint uVar1; + int *piVar2; + int iVar3; + long lVar4; + uint uVar5; + int iVar6; + int iVar7; + ulong uVar8; + char *pcVar9; + size_t __maxlen; + ulong uVar10; + ulong uVar11; + undefined8 local_4a0; + undefined8 uStack_498; + undefined8 local_490; + undefined8 uStack_488; + timeval local_478; + char local_468 [1024]; + long local_68; + + lVar4 = tpidr_el0; + local_68 = *(long *)(lVar4 + 0x28); + piVar2 = *(int **)PTR_usbi_default_context_00501e08; + if (param_1 != (int *)0x0) { + piVar2 = param_1; + } + if (piVar2 == (int *)0x0) { + pcVar9 = getenv("LIBUSB_DEBUG"); + if (pcVar9 == (char *)0x0) goto switchD_0018ef18_caseD_0; + iVar6 = atoi(pcVar9); + } + else { + iVar6 = *piVar2; + } + if ((((iVar6 != 0) && ((param_2 != 2 || (1 < iVar6)))) && ((param_2 != 3 || (2 < iVar6)))) && + ((param_2 != 4 || (3 < iVar6)))) { + uVar5 = gettimeofday(&local_478,(__timezone_ptr_t)0x0); + uVar8 = (ulong)uVar5; + if (((DAT_00531de4 & 1) == 0) && (iVar6 == 4)) { + DAT_00531de4 = 1; + __android_log_write(3,"libusb", + "[timestamp] [threadID] facility level [function call] \n"); + uVar8 = __android_log_write(3,"libusb", + "--------------------------------------------------------------------------------\n" + ); + } + if (local_478.tv_usec < DAT_00531dd8) { + local_478.tv_sec = local_478.tv_sec - 1; + local_478.tv_usec = local_478.tv_usec + 1000000; + } + uVar10 = local_478.tv_usec - DAT_00531dd8; + uVar11 = local_478.tv_sec - DAT_00531dd0; + pcVar9 = "info"; + local_478.tv_sec = uVar11; + local_478.tv_usec = uVar10; + switch(param_2) { + case 0: + goto switchD_0018ef18_caseD_0; + case 1: + pcVar9 = "error"; + break; + case 2: + pcVar9 = "warning"; + break; + case 4: + pcVar9 = "debug"; + case 3: + break; + default: + pcVar9 = "unknown"; + } + if (iVar6 == 4) { + uVar8 = usbi_get_tid(uVar8); + uVar5 = snprintf(local_468,0x400,"[%2d.%06d] [%08x] libusb: %s [%s] ",uVar11 & 0xffffffff, + uVar10 & 0xffffffff,uVar8 & 0xffffffff,pcVar9,param_3); + } + else { + uVar5 = snprintf(local_468,0x400,"libusb: %s [%s] ",pcVar9,param_3); + } + uVar1 = 0; + if (uVar5 < 0x400) { + uVar1 = uVar5; + } + pcVar9 = local_468 + (int)uVar1; + *pcVar9 = '\0'; + uStack_488 = param_5[3]; + local_490 = param_5[2]; + uStack_498 = param_5[1]; + local_4a0 = *param_5; + __maxlen = 0x400 - (long)(int)uVar1; + iVar7 = vsnprintf(pcVar9,__maxlen,param_4,&local_4a0); + iVar6 = (int)__maxlen; + if ((int)(iVar7 + uVar1) < 0x400 && -1 < iVar7) { + iVar6 = iVar7; + } + iVar7 = iVar6 + uVar1 + -0x3fe; + iVar3 = 7 - param_2; + if ((long)(int)(iVar6 + uVar1) + 2U < 0x400) { + iVar7 = 0; + } + if (3 < param_2 - 1U) { + iVar3 = 0; + } + (pcVar9 + (iVar6 - iVar7))[0] = '\n'; + (pcVar9 + (iVar6 - iVar7))[1] = '\0'; + __android_log_write(iVar3,"libusb",local_468); + } +switchD_0018ef18_caseD_0: + if (*(long *)(lVar4 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0018f0a4 (280 bytes) name=libusb_error_name + +char * libusb_error_name(undefined4 param_1) + +{ + char *pcVar1; + + pcVar1 = "LIBUSB_ERROR_IO"; + switch(param_1) { + case 0: + return "LIBUSB_SUCCESS / LIBUSB_TRANSFER_COMPLETED"; + case 1: + return "LIBUSB_TRANSFER_ERROR"; + case 2: + return "LIBUSB_TRANSFER_TIMED_OUT"; + case 3: + return "LIBUSB_TRANSFER_CANCELLED"; + case 4: + return "LIBUSB_TRANSFER_STALL"; + case 5: + return "LIBUSB_TRANSFER_NO_DEVICE"; + case 6: + return "LIBUSB_TRANSFER_OVERFLOW"; + case 0xffffff9d: + return "LIBUSB_ERROR_OTHER"; + default: + pcVar1 = "**UNKNOWN**"; +switchD_0018f0c8_caseD_ffffffff: + return pcVar1; + case 0xfffffff4: + return "LIBUSB_ERROR_NOT_SUPPORTED"; + case 0xfffffff5: + return "LIBUSB_ERROR_NO_MEM"; + case 0xfffffff6: + return "LIBUSB_ERROR_INTERRUPTED"; + case 0xfffffff7: + return "LIBUSB_ERROR_PIPE"; + case 0xfffffff8: + return "LIBUSB_ERROR_OVERFLOW"; + case 0xfffffff9: + return "LIBUSB_ERROR_TIMEOUT"; + case 0xfffffffa: + return "LIBUSB_ERROR_BUSY"; + case 0xfffffffb: + return "LIBUSB_ERROR_NOT_FOUND"; + case 0xfffffffc: + return "LIBUSB_ERROR_NO_DEVICE"; + case 0xfffffffd: + return "LIBUSB_ERROR_ACCESS"; + case 0xfffffffe: + return "LIBUSB_ERROR_INVALID_PARAM"; + case 0xffffffff: + goto switchD_0018f0c8_caseD_ffffffff; + } +} + + +================================================================== + +### FUNC 0018f1bc (12 bytes) name=libusb_get_version + +undefined * libusb_get_version(void) + +{ + return &DAT_004fa0c0; +} + + +================================================================== + +### FUNC 0018f1c8 (176 bytes) name=usbi_parse_descriptor + +int usbi_parse_descriptor(undefined8 *param_1,char *param_2,undefined8 *param_3,int param_4) + +{ + undefined4 *puVar1; + undefined2 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 uVar6; + + puVar5 = param_1; +LAB_0018f1dc: + puVar3 = param_3; + puVar4 = puVar5; + switch(*param_2) { + case 'b': + param_2 = param_2 + 1; + *(undefined1 *)param_3 = *(undefined1 *)puVar5; + param_3 = (undefined8 *)((long)param_3 + 1); + puVar5 = (undefined8 *)((long)puVar5 + 1); + goto LAB_0018f1dc; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + puVar1 = (undefined4 *)((long)param_3 + ((ulong)param_3 & 1)); + *puVar1 = *(undefined4 *)puVar5; + param_2 = param_2 + 1; + param_3 = (undefined8 *)(puVar1 + 1); + puVar5 = (undefined8 *)((long)puVar5 + 4); + goto LAB_0018f1dc; + case 'u': + puVar4 = puVar5 + 2; + uVar6 = *puVar5; + puVar3 = param_3 + 2; + param_3[1] = puVar5[1]; + *param_3 = uVar6; + break; + case 'w': + goto switchD_0018f1f4_caseD_77; + default: + if (*param_2 == '\0') { + return (int)puVar5 - (int)param_1; + } + } + param_2 = param_2 + 1; + param_3 = puVar3; + puVar5 = puVar4; + goto LAB_0018f1dc; +switchD_0018f1f4_caseD_77: + puVar2 = (undefined2 *)((long)param_3 + ((ulong)param_3 & 1)); + if (param_4 == 0) { + *puVar2 = *(undefined2 *)puVar5; + } + else { + *puVar2 = *(undefined2 *)puVar5; + } + param_2 = param_2 + 1; + param_3 = (undefined8 *)(puVar2 + 1); + puVar5 = (undefined8 *)((long)puVar5 + 2); + goto LAB_0018f1dc; +} + + +================================================================== + +### FUNC 0018f278 (100 bytes) name=usbi_device_cache_descriptor + +uint usbi_device_cache_descriptor(long param_1) + +{ + long lVar1; + uint uVar2; + undefined4 local_2c; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + local_2c = 0; + uVar2 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0x48))(param_1,param_1 + 0x68,&local_2c) + ; + if (*(long *)(lVar1 + 0x28) == local_28) { + return uVar2 & (int)uVar2 >> 0x1f; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0018f2dc (80 bytes) name=libusb_get_device_descriptor + +undefined8 libusb_get_device_descriptor(long param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + + usbi_log(0,4,"libusb_get_device_descriptor",""); + *(undefined2 *)(param_2 + 2) = *(undefined2 *)(param_1 + 0x78); + uVar1 = *(undefined8 *)(param_1 + 0x68); + param_2[1] = *(undefined8 *)(param_1 + 0x70); + *param_2 = uVar1; + return 0; +} + + +================================================================== + +### FUNC 0018f32c (464 bytes) name=libusb_get_active_config_descriptor + +int libusb_get_active_config_descriptor(long param_1,undefined8 param_2) + +{ + undefined4 *puVar1; + undefined2 *puVar2; + long lVar3; + int iVar4; + void *__ptr; + undefined8 *puVar5; + undefined8 *puVar6; + char *pcVar7; + undefined8 *puVar8; + undefined8 *puVar9; + long lVar10; + undefined8 uVar11; + int local_84; + undefined8 uStack_80; + undefined8 local_54; + long local_48; + + lVar3 = tpidr_el0; + local_48 = *(long *)(lVar3 + 0x28); + lVar10 = *(long *)PTR_usbi_backend_00501a30; + local_84 = 0; + iVar4 = (**(code **)(lVar10 + 0x50))(param_1,&local_54,9,&local_84); + if (-1 < iVar4) { + if (8 < iVar4) { + pcVar7 = "bbw"; + puVar6 = &local_54; + puVar9 = &uStack_80; +LAB_0018f3dc: + puVar5 = puVar6; + puVar8 = puVar9; + switch(*pcVar7) { + case 'b': + pcVar7 = pcVar7 + 1; + *(undefined1 *)puVar9 = *(undefined1 *)puVar6; + puVar6 = (undefined8 *)((long)puVar6 + 1); + puVar9 = (undefined8 *)((long)puVar9 + 1); + goto LAB_0018f3dc; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + puVar1 = (undefined4 *)((long)puVar9 + ((ulong)puVar9 & 1)); + pcVar7 = pcVar7 + 1; + *puVar1 = *(undefined4 *)puVar6; + puVar6 = (undefined8 *)((long)puVar6 + 4); + puVar9 = (undefined8 *)(puVar1 + 1); + goto LAB_0018f3dc; + case 'u': + puVar5 = puVar6 + 2; + uVar11 = *puVar6; + puVar8 = puVar9 + 2; + puVar9[1] = puVar6[1]; + *puVar9 = uVar11; + break; + case 'w': + goto switchD_0018f3f4_caseD_77; + default: + if (*pcVar7 == '\0') goto LAB_0018f46c; + } + pcVar7 = pcVar7 + 1; + puVar6 = puVar5; + puVar9 = puVar8; + goto LAB_0018f3dc; + } + usbi_log(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_active_config_descriptor", + "short config descriptor read %d/%d",iVar4,9); + iVar4 = -1; + } +LAB_0018f4cc: + if (*(long *)(lVar3 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar4; +LAB_0018f46c: + __ptr = malloc((ulong)uStack_80._2_2_); + if (__ptr == (void *)0x0) { + iVar4 = -0xb; + } + else { + iVar4 = (**(code **)(lVar10 + 0x50))(param_1,__ptr,(ulong)uStack_80._2_2_,&local_84); + if (-1 < iVar4) { + iVar4 = FUN_0018f4fc(*(undefined8 *)(param_1 + 0x30),__ptr,iVar4,local_84,param_2); + } + free(__ptr); + } + goto LAB_0018f4cc; +switchD_0018f3f4_caseD_77: + puVar2 = (undefined2 *)((long)puVar9 + ((ulong)puVar9 & 1)); + if (local_84 == 0) { + *puVar2 = *(undefined2 *)puVar6; + } + else { + *puVar2 = *(undefined2 *)puVar6; + } + pcVar7 = pcVar7 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 2); + puVar9 = (undefined8 *)(puVar2 + 1); + goto LAB_0018f3dc; +} + + +================================================================== + +### FUNC 0018f4fc (3732 bytes) name=FUN_0018f4fc + +ulong FUN_0018f4fc(undefined8 param_1,byte *param_2,uint param_3,int param_4,undefined8 *param_5) + +{ + undefined8 *puVar1; + byte bVar2; + long lVar3; + byte *__ptr; + void *pvVar4; + void *pvVar5; + undefined8 uVar6; + undefined8 *puVar7; + char *pcVar8; + char *pcVar9; + uint uVar10; + uint uVar11; + ulong uVar12; + byte bVar13; + int *piVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + long lVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + undefined8 *puVar22; + byte *pbVar23; + byte *pbVar24; + ulong uVar25; + int *piVar26; + int iVar27; + int iVar28; + int iVar29; + ulong uVar30; + long lVar31; + void *pvVar32; + long local_c8; + uint local_bc; + uint local_94; + byte *local_90; + byte local_80; + byte local_7f; + byte local_78; + byte local_77; + byte local_70; + byte local_6f; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + __ptr = malloc(0x28); + if (__ptr == (byte *)0x0) { + uVar30 = 0xfffffff5; + goto LAB_0018f6bc; + } + if (8 < (int)param_3) { + pcVar9 = "bbwbbbbb"; + pbVar21 = param_2; + pbVar20 = __ptr; +LAB_0018f5b0: + pbVar16 = pbVar21; + pbVar15 = pbVar20; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar20 = *pbVar21; + pbVar21 = pbVar21 + 1; + pbVar20 = pbVar20 + 1; + goto LAB_0018f5b0; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar20 + ((ulong)pbVar20 & 1)) = *(undefined4 *)pbVar21; + pbVar21 = pbVar21 + 4; + pbVar20 = pbVar20 + ((ulong)pbVar20 & 1) + 4; + goto LAB_0018f5b0; + case 'u': + pbVar16 = pbVar21 + 0x10; + uVar6 = *(undefined8 *)pbVar21; + pbVar15 = pbVar20 + 0x10; + *(undefined8 *)(pbVar20 + 8) = *(undefined8 *)(pbVar21 + 8); + *(undefined8 *)pbVar20 = uVar6; + break; + case 'w': + goto switchD_0018f5c8_caseD_77; + default: + if (*pcVar9 == '\0') goto LAB_0018f634; + } + pcVar9 = pcVar9 + 1; + pbVar21 = pbVar16; + pbVar20 = pbVar15; + goto LAB_0018f5b0; + } + pcVar9 = "short config descriptor read %d/%d"; + uVar11 = 9; + uVar10 = param_3; +LAB_0018f68c: + usbi_log(param_1,1,"parse_configuration",pcVar9,uVar10,uVar11); +LAB_0018f690: + uVar30 = 0xffffffff; + goto LAB_0018f694; +code_r0x0018f834: + uVar10 = (uint)local_80; + if (local_80 < 2) { + usbi_log(param_1,1,"parse_configuration","invalid extra config desc len (%d)",uVar10); + uVar30 = 0xffffffff; + pvVar4 = *(void **)(__ptr + 0x10); + goto joined_r0x00190294; + } + if (iVar29 < (int)uVar10) { + usbi_log(param_1,2,"parse_configuration","short extra config desc read %d/%d",uVar30,uVar10); + goto LAB_001901f8; + } + if ((local_7f < 6) && ((1 << (ulong)(local_7f & 0x1f) & 0x36U) != 0)) goto LAB_0018f898; + usbi_log(0,4,"parse_configuration","skipping descriptor 0x%x"); + uVar10 = iVar29 - (uint)local_80; + uVar30 = (ulong)uVar10; + pbVar20 = pbVar20 + local_80; + goto joined_r0x0018f7a0; +switchD_0018f7e4_caseD_77: + pcVar9 = pcVar9 + 1; + *(undefined2 *)(pbVar21 + ((ulong)pbVar21 & 1)) = *(undefined2 *)pbVar16; + pbVar21 = pbVar21 + ((ulong)pbVar21 & 1) + 2; + pbVar16 = pbVar16 + 2; + goto LAB_0018f7cc; +code_r0x0018f9f4: + bVar2 = *(byte *)((long)pvVar5 + lVar18 * 0x28 + 1); + uVar12 = (ulong)bVar2; + if (bVar2 != 4) { + uVar6 = 1; + uVar10 = 4; + pcVar9 = "unexpected descriptor %x (expected %x)"; +LAB_00190144: + usbi_log(param_1,uVar6,"parse_interface",pcVar9,uVar12,uVar10); + goto joined_r0x001900fc; + } + bVar2 = *pbVar15; + uVar12 = (ulong)bVar2; + if (bVar2 < 9) { + pcVar9 = "invalid interface bLength (%d)"; +LAB_00190270: + pcVar8 = "parse_interface"; +LAB_0019027c: + usbi_log(param_1,1,pcVar8,pcVar9,uVar12); +LAB_00190280: + uVar12 = 0xffffffff; + goto LAB_00190284; + } + uVar10 = (uint)bVar2; + uVar11 = iVar27 - uVar10; + if (iVar27 < (int)uVar10) { + uVar6 = 2; + pcVar9 = "short intf descriptor read %d/%d"; + uVar12 = uVar25; + goto LAB_00190144; + } + pbVar21 = (byte *)((long)pvVar5 + lVar18 * 0x28 + 4); + if (0x20 < *pbVar21) { + pcVar8 = "parse_interface"; + pcVar9 = "too many endpoints (%d)"; + uVar12 = (ulong)(uint)*pbVar21; + goto LAB_0019027c; + } + iVar27 = *piVar14; + puVar7 = (undefined8 *)((long)pvVar5 + lVar18 * 0x28 + 0x18); + *puVar7 = 0; + piVar26 = (int *)((long)pvVar5 + lVar18 * 0x28 + 0x20); + *piVar26 = 0; + puVar22 = (undefined8 *)((long)pvVar5 + lVar18 * 0x28 + 0x10); + *puVar22 = 0; + *piVar14 = iVar27 + 1; + if (local_bc == 0xffffffff) { + local_bc = (uint)*(byte *)((long)pvVar5 + lVar18 * 0x28 + 2); + } + pbVar16 = local_90 + uVar12; + local_94 = local_94 + uVar10; + uVar25 = (ulong)uVar11; + local_90 = pbVar16; + if (1 < (int)uVar11) { + uVar12 = (ulong)local_78; +LAB_0018fa90: + pcVar9 = "bb"; + pbVar15 = &local_78; + pbVar17 = local_90; +LAB_0018fab8: + pbVar24 = pbVar15; + pbVar23 = pbVar17; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar15 = *pbVar17; + pbVar15 = pbVar15 + 1; + pbVar17 = pbVar17 + 1; + goto LAB_0018fab8; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar15 + ((ulong)pbVar15 & 1)) = *(undefined4 *)pbVar17; + pbVar15 = pbVar15 + ((ulong)pbVar15 & 1) + 4; + pbVar17 = pbVar17 + 4; + goto LAB_0018fab8; + case 'u': + pbVar23 = pbVar17 + 0x10; + uVar6 = *(undefined8 *)pbVar17; + pbVar24 = pbVar15 + 0x10; + *(undefined8 *)(pbVar15 + 8) = *(undefined8 *)(pbVar17 + 8); + *(undefined8 *)pbVar15 = uVar6; + break; + case 'w': + goto switchD_0018fad0_caseD_77; + default: + if (*pcVar9 == '\0') goto code_r0x0018fb20; + } + pcVar9 = pcVar9 + 1; + pbVar15 = pbVar24; + pbVar17 = pbVar23; + goto LAB_0018fab8; + } +LAB_0018fb70: + iVar28 = (int)local_90 - (int)pbVar16; + iVar27 = (int)uVar25; + if (iVar28 == 0) { +LAB_0018fbc4: + if ((ulong)*pbVar21 == 0) { +joined_r0x0019003c: + if (((iVar27 < 9) || (local_90[1] != 4)) || (local_bc != local_90[2])) + goto joined_r0x001900fc; + goto LAB_0018f900; + } + pvVar5 = calloc((ulong)*pbVar21,0x20); + *puVar22 = pvVar5; + if (pvVar5 != (void *)0x0) { + lVar18 = 0; +LAB_0018fc04: + uVar10 = (uint)uVar25; + if (1 < (int)uVar10) { + pbVar16 = (byte *)((long)pvVar5 + lVar18 * 0x20); + pcVar9 = "bb"; + pbVar15 = &local_70; + pbVar17 = local_90; +LAB_0018fc44: + pbVar24 = pbVar15; + pbVar23 = pbVar17; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar15 = *pbVar17; + pbVar15 = pbVar15 + 1; + pbVar17 = pbVar17 + 1; + goto LAB_0018fc44; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar15 + ((ulong)pbVar15 & 1)) = *(undefined4 *)pbVar17; + pbVar15 = pbVar15 + ((ulong)pbVar15 & 1) + 4; + pbVar17 = pbVar17 + 4; + goto LAB_0018fc44; + case 'u': + pbVar23 = pbVar17 + 0x10; + uVar6 = *(undefined8 *)pbVar17; + pbVar24 = pbVar15 + 0x10; + *(undefined8 *)(pbVar15 + 8) = *(undefined8 *)(pbVar17 + 8); + *(undefined8 *)pbVar15 = uVar6; + break; + case 'w': + goto switchD_0018fc5c_caseD_77; + default: + if (*pcVar9 == '\0') goto code_r0x0018fcac; + } + pcVar9 = pcVar9 + 1; + pbVar15 = pbVar24; + pbVar17 = pbVar23; + goto LAB_0018fc44; + } + usbi_log(param_1,1,"parse_endpoint","short endpoint descriptor read %d/%d",uVar25,2); + goto LAB_00190280; + } + } + else { + pvVar5 = malloc((long)iVar28); + *puVar7 = pvVar5; + if (pvVar5 != (void *)0x0) { + memcpy(pvVar5,pbVar16,(long)iVar28); + *piVar26 = iVar28; + goto LAB_0018fbc4; + } + } +LAB_00190364: + uVar12 = 0xfffffff5; +LAB_00190284: + FUN_00191604(puVar1); + pvVar4 = *(void **)(__ptr + 0x10); + uVar30 = uVar12; + goto joined_r0x00190294; +code_r0x0018fb20: + if (bVar13 < 2) { + pcVar9 = "invalid extra intf desc len (%d)"; + goto LAB_00190270; + } + uVar11 = (uint)bVar13; + uVar10 = (int)uVar25 - uVar11; + if ((int)uVar25 < (int)uVar11) { + usbi_log(param_1,2,"parse_interface","short extra intf desc read %d/%d",uVar25,uVar11); + goto joined_r0x001900fc; + } + if ((local_77 < 6) && ((1 << (ulong)(local_77 & 0x1f) & 0x36U) != 0)) goto LAB_0018fb70; + local_90 = local_90 + uVar12; + local_94 = local_94 + uVar11; + uVar25 = (ulong)uVar10; + if ((int)uVar10 < 2) goto LAB_0018fb70; + goto LAB_0018fa90; +switchD_0018fad0_caseD_77: + pcVar9 = pcVar9 + 1; + *(undefined2 *)(pbVar15 + ((ulong)pbVar15 & 1)) = *(undefined2 *)pbVar17; + pbVar15 = pbVar15 + ((ulong)pbVar15 & 1) + 2; + pbVar17 = pbVar17 + 2; + goto LAB_0018fab8; +code_r0x0018fcac: + uVar11 = (uint)local_6f; + if (local_6f == 5) { + if ((int)(uint)local_70 <= (int)uVar10) { + uVar11 = (uint)local_70; + if (8 < uVar11) { + pcVar9 = "bbbbwbbb"; + pbVar15 = local_90; +LAB_0018fcf4: + pbVar17 = pbVar16; + pbVar24 = pbVar15; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar16 = *pbVar15; + pbVar16 = pbVar16 + 1; + pbVar15 = pbVar15 + 1; + goto LAB_0018fcf4; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar16 + ((ulong)pbVar16 & 1)) = *(undefined4 *)pbVar15; + pbVar16 = pbVar16 + ((ulong)pbVar16 & 1) + 4; + pbVar15 = pbVar15 + 4; + goto LAB_0018fcf4; + case 'u': + pbVar24 = pbVar15 + 0x10; + uVar6 = *(undefined8 *)pbVar15; + pbVar17 = pbVar16 + 0x10; + *(undefined8 *)(pbVar16 + 8) = *(undefined8 *)(pbVar15 + 8); + *(undefined8 *)pbVar16 = uVar6; + break; + case 'w': + goto switchD_0018fd0c_caseD_77; + default: + if (*pcVar9 == '\0') goto LAB_0018fe28; + } + pcVar9 = pcVar9 + 1; + pbVar16 = pbVar17; + pbVar15 = pbVar24; + goto LAB_0018fcf4; + } + if (6 < uVar11) { + pcVar9 = "bbbbwb"; + pbVar15 = local_90; +LAB_0018fda4: + pbVar17 = pbVar16; + pbVar24 = pbVar15; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar16 = *pbVar15; + pbVar16 = pbVar16 + 1; + pbVar15 = pbVar15 + 1; + goto LAB_0018fda4; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar16 + ((ulong)pbVar16 & 1)) = *(undefined4 *)pbVar15; + pbVar16 = pbVar16 + ((ulong)pbVar16 & 1) + 4; + pbVar15 = pbVar15 + 4; + goto LAB_0018fda4; + case 'u': + pbVar24 = pbVar15 + 0x10; + uVar6 = *(undefined8 *)pbVar15; + pbVar17 = pbVar16 + 0x10; + *(undefined8 *)(pbVar16 + 8) = *(undefined8 *)(pbVar15 + 8); + *(undefined8 *)pbVar16 = uVar6; + break; + case 'w': + goto switchD_0018fdbc_caseD_77; + default: + if (*pcVar9 == '\0') goto LAB_0018fe28; + } + pcVar9 = pcVar9 + 1; + pbVar16 = pbVar17; + pbVar15 = pbVar24; + goto LAB_0018fda4; + } + pcVar8 = "parse_endpoint"; + pcVar9 = "invalid endpoint bLength (%d)"; + uVar12 = (ulong)uVar11; + goto LAB_0019027c; + } + uVar6 = 2; + pcVar9 = "short endpoint descriptor read %d/%d"; + bVar13 = local_70; + uVar11 = uVar10; + } + else { + uVar6 = 1; + bVar13 = 5; + pcVar9 = "unexpected descriptor %x (expected %x)"; + } + usbi_log(param_1,uVar6,"parse_endpoint",pcVar9,uVar11,bVar13); + goto LAB_00190090; +switchD_0018fd0c_caseD_77: + pbVar16 = pbVar16 + ((ulong)pbVar16 & 1); + if (param_4 == 0) { + *(undefined2 *)pbVar16 = *(undefined2 *)pbVar15; + } + else { + *(undefined2 *)pbVar16 = *(undefined2 *)pbVar15; + } + pcVar9 = pcVar9 + 1; + pbVar16 = pbVar16 + 2; + pbVar15 = pbVar15 + 2; + goto LAB_0018fcf4; +LAB_0018fe28: + uVar12 = (ulong)local_70; + pbVar16 = local_90 + uVar12; + iVar27 = uVar10 - local_70; + pbVar15 = pbVar16; +joined_r0x0018fe44: + iVar28 = (int)uVar12; + if (1 < iVar27) { + pcVar9 = "bb"; + pbVar17 = &local_70; + pbVar24 = pbVar15; +LAB_0018fe70: + pbVar23 = pbVar17; + pbVar19 = pbVar24; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar17 = *pbVar24; + pbVar17 = pbVar17 + 1; + pbVar24 = pbVar24 + 1; + goto LAB_0018fe70; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar17 + ((ulong)pbVar17 & 1)) = *(undefined4 *)pbVar24; + pbVar17 = pbVar17 + ((ulong)pbVar17 & 1) + 4; + pbVar24 = pbVar24 + 4; + goto LAB_0018fe70; + case 'u': + pbVar19 = pbVar24 + 0x10; + uVar6 = *(undefined8 *)pbVar24; + pbVar23 = pbVar17 + 0x10; + *(undefined8 *)(pbVar17 + 8) = *(undefined8 *)(pbVar24 + 8); + *(undefined8 *)pbVar17 = uVar6; + break; + case 'w': + goto switchD_0018fe88_caseD_77; + default: + if (*pcVar9 == '\0') goto code_r0x0018fed8; + } + pcVar9 = pcVar9 + 1; + pbVar17 = pbVar23; + pbVar24 = pbVar19; + goto LAB_0018fe70; + } +LAB_0018ff48: + iVar27 = (int)pbVar15 - (int)pbVar16; + if (iVar27 == 0) { + *(undefined8 *)((long)pvVar5 + lVar18 * 0x20 + 0x10) = 0; + *(undefined4 *)((long)pvVar5 + lVar18 * 0x20 + 0x18) = 0; + } + else { + pvVar32 = malloc((long)iVar27); + *(void **)((long)pvVar5 + lVar18 * 0x20 + 0x10) = pvVar32; + if (pvVar32 == (void *)0x0) { + *(undefined4 *)((long)pvVar5 + lVar18 * 0x20 + 0x18) = 0; + goto LAB_00190364; + } + memcpy(pvVar32,pbVar16,(long)iVar27); + *(int *)((long)pvVar5 + lVar18 * 0x20 + 0x18) = iVar27; + } +LAB_0018ffe0: + if (iVar28 < 0) goto LAB_00190284; + if (iVar28 != 0) { + lVar18 = lVar18 + 1; + local_90 = local_90 + iVar28; + local_94 = iVar28 + local_94; + uVar25 = (ulong)(uVar10 - iVar28); + if ((long)(ulong)*pbVar21 <= lVar18) goto LAB_00190098; + goto LAB_0018fc04; + } +LAB_00190090: + *pbVar21 = (byte)lVar18; + goto LAB_00190098; +code_r0x0018fed8: + uVar11 = (uint)local_70; + if (local_70 < 2) { + pcVar8 = "parse_endpoint"; + pcVar9 = "invalid extra ep desc len (%d)"; + uVar12 = (ulong)uVar11; + goto LAB_0019027c; + } + if (iVar27 < (int)uVar11) { + usbi_log(param_1,2,"parse_endpoint","short extra ep desc read %d/%d",iVar27,uVar11); + goto LAB_0018ffe0; + } + if ((local_6f < 6) && ((1 << (ulong)(local_6f & 0x1f) & 0x36U) != 0)) goto LAB_0018ff48; + usbi_log(0,4,"parse_endpoint","skipping descriptor %x"); + iVar27 = iVar27 - (uint)local_70; + pbVar15 = pbVar15 + local_70; + uVar12 = (ulong)(iVar28 + (uint)local_70); + goto joined_r0x0018fe44; +switchD_0018fe88_caseD_77: + pcVar9 = pcVar9 + 1; + *(undefined2 *)(pbVar17 + ((ulong)pbVar17 & 1)) = *(undefined2 *)pbVar24; + pbVar17 = pbVar17 + ((ulong)pbVar17 & 1) + 2; + pbVar24 = pbVar24 + 2; + goto LAB_0018fe70; +switchD_0018fdbc_caseD_77: + pbVar16 = pbVar16 + ((ulong)pbVar16 & 1); + if (param_4 == 0) { + *(undefined2 *)pbVar16 = *(undefined2 *)pbVar15; + } + else { + *(undefined2 *)pbVar16 = *(undefined2 *)pbVar15; + } + pcVar9 = pcVar9 + 1; + pbVar16 = pbVar16 + 2; + pbVar15 = pbVar15 + 2; + goto LAB_0018fda4; +LAB_00190098: + iVar27 = (int)uVar25; + goto joined_r0x0019003c; +switchD_0018fc5c_caseD_77: + pcVar9 = pcVar9 + 1; + *(undefined2 *)(pbVar15 + ((ulong)pbVar15 & 1)) = *(undefined2 *)pbVar17; + pbVar15 = pbVar15 + ((ulong)pbVar15 & 1) + 2; + pbVar17 = pbVar17 + 2; + goto LAB_0018fc44; +switchD_0018f9a4_caseD_77: + pcVar9 = pcVar9 + 1; + *(undefined2 *)(pbVar21 + ((ulong)pbVar21 & 1)) = *(undefined2 *)pbVar16; + pbVar21 = pbVar21 + ((ulong)pbVar21 & 1) + 2; + pbVar16 = pbVar16 + 2; + goto LAB_0018f98c; +code_r0x00190158: + param_2 = pbVar20 + (int)local_94; + uVar30 = (ulong)(iVar29 - local_94); + local_c8 = local_c8 + 1; + if ((long)(ulong)__ptr[4] <= local_c8) goto LAB_001902e8; + goto LAB_0018f798; +switchD_0018f5c8_caseD_77: + pbVar20 = pbVar20 + ((ulong)pbVar20 & 1); + if (param_4 == 0) { + *(undefined2 *)pbVar20 = *(undefined2 *)pbVar21; + } + else { + *(undefined2 *)pbVar20 = *(undefined2 *)pbVar21; + } + pcVar9 = pcVar9 + 1; + pbVar21 = pbVar21 + 2; + pbVar20 = pbVar20 + 2; + goto LAB_0018f5b0; +LAB_0018f634: + uVar10 = (uint)__ptr[1]; + if (__ptr[1] != 2) { + pcVar9 = "unexpected descriptor %x (expected %x)"; + uVar11 = 2; + goto LAB_0018f68c; + } + bVar13 = *__ptr; + if (bVar13 < 9) { + pcVar9 = "invalid config bLength (%d)"; + uVar30 = (ulong)bVar13; +LAB_0018f668: + usbi_log(param_1,1,"parse_configuration",pcVar9,uVar30); + goto LAB_0018f690; + } + uVar11 = (uint)bVar13; + if ((int)param_3 < (int)uVar11) { + pcVar9 = "short config descriptor read %d/%d"; + uVar10 = param_3; + goto LAB_0018f68c; + } + bVar2 = __ptr[4]; + uVar30 = (ulong)bVar2; + if (0x20 < bVar2) { + pcVar9 = "too many interfaces (%d)"; + goto LAB_0018f668; + } + pvVar4 = calloc(uVar30,0x10); + *(void **)(__ptr + 0x10) = pvVar4; + if (pvVar4 == (void *)0x0) { + uVar30 = 0xfffffff5; + } + else { + uVar30 = (ulong)(param_3 - uVar11); + __ptr[0x18] = 0; + __ptr[0x19] = 0; + __ptr[0x1a] = 0; + __ptr[0x1b] = 0; + __ptr[0x1c] = 0; + __ptr[0x1d] = 0; + __ptr[0x1e] = 0; + __ptr[0x1f] = 0; + __ptr[0x20] = 0; + __ptr[0x21] = 0; + __ptr[0x22] = 0; + __ptr[0x23] = 0; + if (bVar2 != 0) { + param_2 = param_2 + bVar13; + local_c8 = 0; +LAB_0018f798: + uVar10 = (uint)uVar30; + pbVar20 = param_2; +joined_r0x0018f7a0: + iVar29 = (int)uVar30; + if (1 < (int)uVar10) { + pcVar9 = "bb"; + pbVar21 = &local_80; + pbVar16 = pbVar20; +LAB_0018f7cc: + pbVar15 = pbVar21; + pbVar17 = pbVar16; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar21 = *pbVar16; + pbVar21 = pbVar21 + 1; + pbVar16 = pbVar16 + 1; + goto LAB_0018f7cc; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar21 + ((ulong)pbVar21 & 1)) = *(undefined4 *)pbVar16; + pbVar21 = pbVar21 + ((ulong)pbVar21 & 1) + 4; + pbVar16 = pbVar16 + 4; + goto LAB_0018f7cc; + case 'u': + pbVar17 = pbVar16 + 0x10; + uVar6 = *(undefined8 *)pbVar16; + pbVar15 = pbVar21 + 0x10; + *(undefined8 *)(pbVar21 + 8) = *(undefined8 *)(pbVar16 + 8); + *(undefined8 *)pbVar21 = uVar6; + break; + case 'w': + goto switchD_0018f7e4_caseD_77; + default: + if (*pcVar9 == '\0') goto code_r0x0018f834; + } + pcVar9 = pcVar9 + 1; + pbVar21 = pbVar15; + pbVar16 = pbVar17; + goto LAB_0018f7cc; + } +LAB_0018f898: + iVar27 = (int)pbVar20 - (int)param_2; + if ((iVar27 != 0) && (*(int *)(__ptr + 0x20) == 0)) { + pvVar5 = malloc((long)iVar27); + *(void **)(__ptr + 0x18) = pvVar5; + if (pvVar5 != (void *)0x0) { + memcpy(pvVar5,param_2,(long)iVar27); + *(int *)(__ptr + 0x20) = iVar27; + goto LAB_0018f8d4; + } + uVar30 = 0xfffffff5; + pvVar4 = *(void **)(__ptr + 0x10); +joined_r0x00190294: + if ((pvVar4 != (void *)0x0) && (__ptr[4] != 0)) { + FUN_00191604(); + if (1 < __ptr[4]) { + lVar18 = 1; + lVar31 = 0x10; + do { + FUN_00191604(*(long *)(__ptr + 0x10) + lVar31); + lVar18 = lVar18 + 1; + lVar31 = lVar31 + 0x10; + } while (lVar18 < (long)(ulong)__ptr[4]); + } + pvVar4 = *(void **)(__ptr + 0x10); + } + free(pvVar4); + free(*(void **)(__ptr + 0x18)); + goto LAB_001902e8; + } +LAB_0018f8d4: + local_94 = 0; + puVar1 = (undefined8 *)((long)pvVar4 + local_c8 * 0x10); + piVar14 = (int *)(puVar1 + 1); + *piVar14 = 0; + local_bc = 0xffffffff; + uVar25 = uVar30; + local_90 = pbVar20; +LAB_0018f900: + iVar27 = (int)uVar25; + if (8 < iVar27) { + pvVar32 = (void *)*puVar1; + pvVar5 = realloc(pvVar32,(long)*piVar14 * 0x28 + 0x28); + bVar13 = local_78; + if (pvVar5 != (void *)0x0) { + *puVar1 = pvVar5; + lVar18 = (long)*piVar14; + pbVar15 = (byte *)((long)pvVar5 + lVar18 * 0x28); + pcVar9 = "bbbbbbbbb"; + pbVar21 = pbVar15; + pbVar16 = local_90; +LAB_0018f98c: + pbVar17 = pbVar21; + pbVar24 = pbVar16; + switch(*pcVar9) { + case 'b': + pcVar9 = pcVar9 + 1; + *pbVar21 = *pbVar16; + pbVar21 = pbVar21 + 1; + pbVar16 = pbVar16 + 1; + goto LAB_0018f98c; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar9 = pcVar9 + 1; + *(undefined4 *)(pbVar21 + ((ulong)pbVar21 & 1)) = *(undefined4 *)pbVar16; + pbVar21 = pbVar21 + ((ulong)pbVar21 & 1) + 4; + pbVar16 = pbVar16 + 4; + goto LAB_0018f98c; + case 'u': + pbVar24 = pbVar16 + 0x10; + uVar6 = *(undefined8 *)pbVar16; + pbVar17 = pbVar21 + 0x10; + *(undefined8 *)(pbVar21 + 8) = *(undefined8 *)(pbVar16 + 8); + *(undefined8 *)pbVar21 = uVar6; + break; + case 'w': + goto switchD_0018f9a4_caseD_77; + default: + if (*pcVar9 == '\0') goto code_r0x0018f9f4; + } + pcVar9 = pcVar9 + 1; + pbVar21 = pbVar17; + pbVar16 = pbVar24; + goto LAB_0018f98c; + } + free(pvVar32); + uVar12 = 0xfffffff5; + goto LAB_00190284; + } +joined_r0x001900fc: + if ((int)local_94 < 0) { + uVar30 = (ulong)local_94; + pvVar4 = *(void **)(__ptr + 0x10); + goto joined_r0x00190294; + } + if (local_94 != 0) goto code_r0x00190158; +LAB_001901f8: + __ptr[4] = (byte)local_c8; + goto joined_r0x00190200; + } +LAB_001902e8: + iVar29 = (int)uVar30; +joined_r0x00190200: + if (-1 < iVar29) { + if (iVar29 != 0) { + usbi_log(param_1,2,"raw_desc_to_config","still %d bytes of descriptor data left",iVar29); + } + uVar30 = 0; + *param_5 = __ptr; + goto LAB_0018f6bc; + } + } +LAB_0018f694: + usbi_log(param_1,1,"raw_desc_to_config","parse_configuration failed with error %d",uVar30); + free(__ptr); +LAB_0018f6bc: + if (*(long *)(lVar3 + 0x28) == local_68) { + return uVar30; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00190390 (544 bytes) name=libusb_get_config_descriptor + +int libusb_get_config_descriptor(long param_1,uint param_2,undefined8 param_3) + +{ + undefined4 *puVar1; + undefined2 *puVar2; + long lVar3; + int iVar4; + void *__ptr; + undefined8 *puVar5; + undefined8 *puVar6; + char *pcVar7; + undefined8 *puVar8; + undefined8 *puVar9; + long lVar10; + undefined8 uVar11; + int local_94; + undefined8 uStack_90; + undefined8 local_64; + long local_58; + + lVar3 = tpidr_el0; + local_58 = *(long *)(lVar3 + 0x28); + local_94 = 0; + usbi_log(0,4,"libusb_get_config_descriptor","index %d",param_2 & 0xff); + if ((param_2 & 0xff) < (uint)*(byte *)(param_1 + 0x49)) { + lVar10 = *(long *)PTR_usbi_backend_00501a30; + iVar4 = (**(code **)(lVar10 + 0x58))(param_1,param_2,&local_64,9,&local_94); + if (-1 < iVar4) { + if (8 < iVar4) { + pcVar7 = "bbw"; + puVar6 = &local_64; + puVar9 = &uStack_90; +LAB_001904b4: + puVar5 = puVar6; + puVar8 = puVar9; + switch(*pcVar7) { + case 'b': + pcVar7 = pcVar7 + 1; + *(undefined1 *)puVar9 = *(undefined1 *)puVar6; + puVar6 = (undefined8 *)((long)puVar6 + 1); + puVar9 = (undefined8 *)((long)puVar9 + 1); + goto LAB_001904b4; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + puVar1 = (undefined4 *)((long)puVar9 + ((ulong)puVar9 & 1)); + pcVar7 = pcVar7 + 1; + *puVar1 = *(undefined4 *)puVar6; + puVar6 = (undefined8 *)((long)puVar6 + 4); + puVar9 = (undefined8 *)(puVar1 + 1); + goto LAB_001904b4; + case 'u': + puVar5 = puVar6 + 2; + uVar11 = *puVar6; + puVar8 = puVar9 + 2; + puVar9[1] = puVar6[1]; + *puVar9 = uVar11; + break; + case 'w': + goto switchD_001904cc_caseD_77; + default: + if (*pcVar7 == '\0') goto LAB_00190544; + } + pcVar7 = pcVar7 + 1; + puVar6 = puVar5; + puVar9 = puVar8; + goto LAB_001904b4; + } + usbi_log(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_config_descriptor", + "short config descriptor read %d/%d",iVar4,9); + iVar4 = -1; + } + } + else { + iVar4 = -5; + } +LAB_00190460: + if (*(long *)(lVar3 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar4; +LAB_00190544: + __ptr = malloc((ulong)uStack_90._2_2_); + if (__ptr == (void *)0x0) { + iVar4 = -0xb; + } + else { + iVar4 = (**(code **)(lVar10 + 0x58))(param_1,param_2,__ptr,(ulong)uStack_90._2_2_,&local_94); + if (-1 < iVar4) { + iVar4 = FUN_0018f4fc(*(undefined8 *)(param_1 + 0x30),__ptr,iVar4,local_94,param_3); + } + free(__ptr); + } + goto LAB_00190460; +switchD_001904cc_caseD_77: + puVar2 = (undefined2 *)((long)puVar9 + ((ulong)puVar9 & 1)); + if (local_94 == 0) { + *puVar2 = *(undefined2 *)puVar6; + } + else { + *puVar2 = *(undefined2 *)puVar6; + } + pcVar7 = pcVar7 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 2); + puVar9 = (undefined8 *)(puVar2 + 1); + goto LAB_001904b4; +} + + +================================================================== + +### FUNC 001905b0 (244 bytes) name=usbi_get_config_index_by_value + +void usbi_get_config_index_by_value(long param_1,char param_2,uint *param_3) + +{ + long lVar1; + undefined8 uVar2; + uint uVar3; + long lVar4; + undefined1 auStack_54 [4]; + undefined1 auStack_50 [5]; + char local_4b; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + usbi_log(0,4,"usbi_get_config_index_by_value","value %d",param_2); + if (*(char *)(param_1 + 0x49) != '\0') { + uVar3 = 0; + lVar4 = *(long *)PTR_usbi_backend_00501a30; + do { + uVar2 = (**(code **)(lVar4 + 0x58))(param_1,uVar3,auStack_50,6,auStack_54); + if ((int)uVar2 < 0) { + uVar3 = 0xffffffff; +LAB_00190674: + *param_3 = uVar3; + goto LAB_00190678; + } + if (local_4b == param_2) { + uVar2 = 0; + goto LAB_00190674; + } + uVar3 = uVar3 + 1 & 0xff; + } while (uVar3 < *(byte *)(param_1 + 0x49)); + } + uVar2 = 0; + *param_3 = 0xffffffff; +LAB_00190678: + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar2); +} + + +================================================================== + +### FUNC 001906a4 (316 bytes) name=libusb_get_config_descriptor_by_value + +int libusb_get_config_descriptor_by_value(long param_1,uint param_2,undefined8 param_3) + +{ + long lVar1; + int iVar2; + code *pcVar3; + byte bVar4; + long lVar5; + undefined8 local_60; + undefined1 auStack_54 [4]; + undefined4 local_50; + byte local_4b; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + lVar5 = *(long *)PTR_usbi_backend_00501a30; + local_60 = 0; + pcVar3 = *(code **)(lVar5 + 0x60); + if (pcVar3 == (code *)0x0) { + usbi_log(0,4,"usbi_get_config_index_by_value","value %d",param_2 & 0xff); + if (*(char *)(param_1 + 0x49) != '\0') { + bVar4 = 0; + do { + iVar2 = (**(code **)(lVar5 + 0x58))(param_1,bVar4,&local_50,6,auStack_54); + if (iVar2 < 0) goto LAB_0019079c; + if ((uint)local_4b == (param_2 & 0xff)) { + iVar2 = libusb_get_config_descriptor(param_1,bVar4,param_3); + goto LAB_0019079c; + } + bVar4 = bVar4 + 1; + } while (bVar4 < *(byte *)(param_1 + 0x49)); + } + iVar2 = -5; + } + else { + iVar2 = (*pcVar3)(param_1,param_2,&local_60,&local_50); + if (-1 < iVar2) { + iVar2 = FUN_0018f4fc(*(undefined8 *)(param_1 + 0x30),local_60,iVar2,local_50,param_3); + } + } +LAB_0019079c: + if (*(long *)(lVar1 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar2; +} + + +================================================================== + +### FUNC 001907e0 (148 bytes) name=libusb_free_config_descriptor + +void libusb_free_config_descriptor(void *param_1) + +{ + void *__ptr; + long lVar1; + long lVar2; + + if (param_1 != (void *)0x0) { + __ptr = *(void **)((long)param_1 + 0x10); + if ((__ptr != (void *)0x0) && (*(char *)((long)param_1 + 4) != '\0')) { + FUN_00191604(); + if (1 < *(byte *)((long)param_1 + 4)) { + lVar1 = 1; + lVar2 = 0x10; + do { + FUN_00191604(*(long *)((long)param_1 + 0x10) + lVar2); + lVar1 = lVar1 + 1; + lVar2 = lVar2 + 0x10; + } while (lVar1 < (long)(ulong)*(byte *)((long)param_1 + 4)); + } + __ptr = *(void **)((long)param_1 + 0x10); + } + free(__ptr); + free(*(void **)((long)param_1 + 0x18)); + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 00190874 (436 bytes) name=libusb_get_ss_endpoint_companion_descriptor + +void libusb_get_ss_endpoint_companion_descriptor + (undefined8 param_1,long param_2,undefined8 *param_3) + +{ + undefined4 *puVar1; + undefined2 *puVar2; + int iVar3; + long lVar4; + undefined8 *puVar5; + undefined8 *puVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 uStack_40; + long local_38; + + lVar4 = tpidr_el0; + local_38 = *(long *)(lVar4 + 0x28); + iVar3 = *(int *)(param_2 + 0x18); + puVar11 = *(undefined8 **)(param_2 + 0x10); + *param_3 = 0; + if (iVar3 < 2) { + uVar7 = 0xfffffffb; + } + else { + puVar5 = &uStack_40; + pcVar8 = "bb"; + puVar6 = puVar11; +LAB_001908d0: + do { + puVar9 = puVar5; + puVar10 = puVar6; + switch(*pcVar8) { + case 'b': + *(undefined1 *)puVar5 = *(undefined1 *)puVar6; + puVar5 = (undefined8 *)((long)puVar5 + 1); + pcVar8 = pcVar8 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 1); + goto LAB_001908d0; + case 'd': + puVar1 = (undefined4 *)((long)puVar5 + ((ulong)puVar5 & 1)); + *puVar1 = *(undefined4 *)puVar6; + puVar5 = (undefined8 *)(puVar1 + 1); + pcVar8 = pcVar8 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 4); + goto LAB_001908d0; + case 'u': + puVar10 = puVar6 + 2; + uVar7 = *puVar6; + puVar9 = puVar5 + 2; + puVar5[1] = puVar6[1]; + *puVar5 = uVar7; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': +switchD_001908e8_caseD_63: + puVar5 = puVar9; + pcVar8 = pcVar8 + 1; + puVar6 = puVar10; + goto LAB_001908d0; + case 'w': + puVar2 = (undefined2 *)((long)puVar5 + ((ulong)puVar5 & 1)); + *puVar2 = *(undefined2 *)puVar6; + puVar5 = (undefined8 *)(puVar2 + 1); + pcVar8 = pcVar8 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 2); + goto LAB_001908d0; + } + if (*pcVar8 != '\0') goto switchD_001908e8_caseD_63; + puVar5 = &uStack_40; + pcVar8 = "bb"; + puVar6 = puVar11; + } while (uStack_40._1_1_ != '0'); + puVar5 = malloc(6); + *param_3 = puVar5; + if (puVar5 != (undefined8 *)0x0) { + pcVar8 = "bbbbw"; +LAB_00190978: + puVar6 = puVar5; + puVar9 = puVar11; + switch(*pcVar8) { + case 'b': + pcVar8 = pcVar8 + 1; + *(undefined1 *)puVar5 = *(undefined1 *)puVar11; + puVar5 = (undefined8 *)((long)puVar5 + 1); + puVar11 = (undefined8 *)((long)puVar11 + 1); + goto LAB_00190978; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + puVar1 = (undefined4 *)((long)puVar5 + ((ulong)puVar5 & 1)); + pcVar8 = pcVar8 + 1; + *puVar1 = *(undefined4 *)puVar11; + puVar5 = (undefined8 *)(puVar1 + 1); + puVar11 = (undefined8 *)((long)puVar11 + 4); + goto LAB_00190978; + case 'u': + puVar9 = puVar11 + 2; + uVar7 = *puVar11; + puVar6 = puVar5 + 2; + puVar5[1] = puVar11[1]; + *puVar5 = uVar7; + break; + case 'w': + goto switchD_00190990_caseD_77; + default: + if (*pcVar8 == '\0') goto code_r0x001909ec; + } + pcVar8 = pcVar8 + 1; + puVar5 = puVar6; + puVar11 = puVar9; + goto LAB_00190978; + } + uVar7 = 0xfffffff5; + } +LAB_00190a00: + if (*(long *)(lVar4 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar7); + } + return; +code_r0x001909ec: + uVar7 = 0; + goto LAB_00190a00; +switchD_00190990_caseD_77: + puVar2 = (undefined2 *)((long)puVar5 + ((ulong)puVar5 & 1)); + pcVar8 = pcVar8 + 1; + *puVar2 = *(undefined2 *)puVar11; + puVar5 = (undefined8 *)(puVar2 + 1); + puVar11 = (undefined8 *)((long)puVar11 + 2); + goto LAB_00190978; +} + + +================================================================== + +### FUNC 00190a28 (4 bytes) name=libusb_free_ss_endpoint_companion_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_ss_endpoint_companion_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_004ffab8)(); + return; +} + + +================================================================== + +### FUNC 00190a2c (1648 bytes) name=libusb_get_bos_descriptor + +uint libusb_get_bos_descriptor(long param_1,undefined8 *param_2) + +{ + undefined4 *puVar1; + undefined2 *puVar2; + long lVar3; + uint uVar4; + byte *__ptr; + byte *pbVar5; + void *__dest; + char *pcVar6; + uint uVar7; + uint uVar8; + undefined8 *puVar9; + undefined8 *puVar10; + byte *pbVar11; + byte *pbVar12; + undefined8 *puVar13; + undefined8 *puVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + undefined8 uVar18; + ulong __size; + long lVar19; + undefined8 uVar20; + undefined8 local_88; + undefined8 uStack_80; + byte local_78; + byte local_77; + byte local_70; + byte local_6f; + byte local_6c; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + local_88._4_1_ = 0; + local_88._0_4_ = 0; + uVar4 = libusb_control_transfer(param_1,0x80,6,0xf00,0,&local_88,5,1000); + if ((int)uVar4 < 0) { + if (uVar4 != 0xfffffff7) { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_bos_descriptor", + "failed to read BOS (%d)",uVar4); + } + } + else { + if (4 < (int)uVar4) { + pcVar6 = "bbwb"; + puVar10 = &local_88; + puVar14 = &uStack_80; +LAB_00190b28: + puVar9 = puVar10; + puVar13 = puVar14; + switch(*pcVar6) { + case 'b': + pcVar6 = pcVar6 + 1; + *(undefined1 *)puVar14 = *(undefined1 *)puVar10; + puVar10 = (undefined8 *)((long)puVar10 + 1); + puVar14 = (undefined8 *)((long)puVar14 + 1); + goto LAB_00190b28; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + puVar1 = (undefined4 *)((long)puVar14 + ((ulong)puVar14 & 1)); + pcVar6 = pcVar6 + 1; + *puVar1 = *(undefined4 *)puVar10; + puVar10 = (undefined8 *)((long)puVar10 + 4); + puVar14 = (undefined8 *)(puVar1 + 1); + goto LAB_00190b28; + case 'u': + puVar9 = puVar10 + 2; + uVar18 = *puVar10; + puVar13 = puVar14 + 2; + puVar14[1] = puVar10[1]; + *puVar14 = uVar18; + break; + case 'w': + goto switchD_00190b40_caseD_77; + default: + if (*pcVar6 == '\0') goto code_r0x00190b90; + } + pcVar6 = pcVar6 + 1; + puVar10 = puVar9; + puVar14 = puVar13; + goto LAB_00190b28; + } + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_bos_descriptor", + "short BOS read %d/%d",uVar4,5); + uVar4 = 0xffffffff; + } + goto LAB_00190d58; +code_r0x00190b90: + usbi_log(0,4,"libusb_get_bos_descriptor","found BOS descriptor: size %d bytes, %d capabilities", + uStack_80._2_2_,uStack_80._4_1_); + __ptr = calloc((ulong)uStack_80._2_2_,1); + if (__ptr == (byte *)0x0) { + uVar4 = 0xfffffff5; + goto LAB_00190d58; + } + uVar4 = libusb_control_transfer(param_1,0x80,6,0xf00,0,__ptr,(ulong)uStack_80._2_2_,1000); + uVar18 = *(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30); + if (-1 < (int)uVar4) { + if (4 < (int)uVar4) { + pcVar6 = "bbwb"; + pbVar5 = &local_70; + pbVar15 = __ptr; +LAB_00190c88: + pbVar12 = pbVar5; + pbVar17 = pbVar15; + switch(*pcVar6) { + case 'b': + pcVar6 = pcVar6 + 1; + *pbVar5 = *pbVar15; + pbVar5 = pbVar5 + 1; + pbVar15 = pbVar15 + 1; + goto LAB_00190c88; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar6 = pcVar6 + 1; + *(undefined4 *)(pbVar5 + ((ulong)pbVar5 & 1)) = *(undefined4 *)pbVar15; + pbVar5 = pbVar5 + ((ulong)pbVar5 & 1) + 4; + pbVar15 = pbVar15 + 4; + goto LAB_00190c88; + case 'u': + pbVar17 = pbVar15 + 0x10; + uVar20 = *(undefined8 *)pbVar15; + pbVar12 = pbVar5 + 0x10; + *(undefined8 *)(pbVar5 + 8) = *(undefined8 *)(pbVar15 + 8); + *(undefined8 *)pbVar5 = uVar20; + break; + case 'w': + goto switchD_00190ca0_caseD_77; + default: + if (*pcVar6 == '\0') goto code_r0x00190cf0; + } + pcVar6 = pcVar6 + 1; + pbVar5 = pbVar12; + pbVar15 = pbVar17; + goto LAB_00190c88; + } + pcVar6 = "short bos descriptor read %d/%d"; + uVar8 = 5; + uVar7 = uVar4; + goto LAB_00190d48; + } + usbi_log(uVar18,1,"libusb_get_bos_descriptor","failed to read BOS (%d)",uVar4); + goto LAB_00190d50; +code_r0x00190cf0: + uVar7 = (uint)local_6f; + if (local_6f == 0xf) { + uVar8 = (uint)local_70; + if (local_70 < 5) { + usbi_log(uVar18,1,"parse_bos","invalid bos bLength (%d)",uVar8); + goto LAB_00190d4c; + } + if ((int)uVar8 <= (int)uVar4) { + pbVar5 = calloc(1,(ulong)local_6c * 8 + 8); + if (pbVar5 != (byte *)0x0) { + pcVar6 = "bbwb"; + pbVar15 = pbVar5; + pbVar12 = __ptr; +LAB_00190e04: + pbVar17 = pbVar15; + pbVar11 = pbVar12; + switch(*pcVar6) { + case 'b': + pcVar6 = pcVar6 + 1; + *pbVar15 = *pbVar12; + pbVar15 = pbVar15 + 1; + pbVar12 = pbVar12 + 1; + goto LAB_00190e04; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar6 = pcVar6 + 1; + *(undefined4 *)(pbVar15 + ((ulong)pbVar15 & 1)) = *(undefined4 *)pbVar12; + pbVar15 = pbVar15 + ((ulong)pbVar15 & 1) + 4; + pbVar12 = pbVar12 + 4; + goto LAB_00190e04; + case 'u': + pbVar11 = pbVar12 + 0x10; + uVar20 = *(undefined8 *)pbVar12; + pbVar17 = pbVar15 + 0x10; + *(undefined8 *)(pbVar15 + 8) = *(undefined8 *)(pbVar12 + 8); + *(undefined8 *)pbVar15 = uVar20; + break; + case 'w': + goto switchD_00190e1c_caseD_77; + default: + if (*pcVar6 == '\0') goto code_r0x00190e6c; + } + pcVar6 = pcVar6 + 1; + pbVar15 = pbVar17; + pbVar12 = pbVar11; + goto LAB_00190e04; + } + uVar4 = 0xfffffff5; + goto LAB_00190d50; + } + pcVar6 = "short bos descriptor read %d/%d"; + uVar7 = uVar4; + } + else { + pcVar6 = "unexpected descriptor %x (expected %x)"; + uVar8 = 0xf; + } +LAB_00190d48: + usbi_log(uVar18,1,"parse_bos",pcVar6,uVar7,uVar8); +LAB_00190d4c: + uVar4 = 0xffffffff; + goto LAB_00190d50; +code_r0x00190f2c: + if (local_77 != 0x10) { + pcVar6 = "unexpected descriptor %x (expected %x)"; + uVar7 = 0x10; + uVar4 = (uint)local_77; +LAB_0019104c: + usbi_log(uVar18,2,"parse_bos",pcVar6,uVar4,uVar7); + goto LAB_00191050; + } + __size = (ulong)local_78; + uVar7 = (uint)local_78; + if (local_78 < 3) { + usbi_log(uVar18,1,"parse_bos","invalid dev-cap bLength (%d)",uVar7); + if (pbVar5[4] != 0) { + lVar19 = 0; + do { + free(*(void **)(pbVar5 + (lVar19 + 1) * 8)); + lVar19 = lVar19 + 1; + } while (lVar19 < (long)(ulong)pbVar5[4]); + } + free(pbVar5); + goto LAB_00190d4c; + } + if ((int)uVar4 < (int)uVar7) { + pcVar6 = "short dev-cap descriptor read %d/%d"; + goto LAB_0019104c; + } + __dest = malloc(__size); + *(void **)(pbVar5 + (lVar19 + 1) * 8) = __dest; + if (__dest != (void *)0x0) { + memcpy(__dest,pbVar15,__size); + lVar19 = lVar19 + 1; + pbVar15 = pbVar15 + __size; + uVar4 = uVar4 - uVar7; + if ((long)(ulong)local_6c <= lVar19) goto LAB_00191050; + goto LAB_00190e94; + } + if (pbVar5[4] != 0) { + lVar19 = 0; + do { + free(*(void **)(pbVar5 + (lVar19 + 1) * 8)); + lVar19 = lVar19 + 1; + } while (lVar19 < (long)(ulong)pbVar5[4]); + } + free(pbVar5); + uVar4 = 0xfffffff5; + goto LAB_00190d50; +switchD_00190edc_caseD_77: + pcVar6 = pcVar6 + 1; + *(undefined2 *)(pbVar12 + ((ulong)pbVar12 & 1)) = *(undefined2 *)pbVar17; + pbVar12 = pbVar12 + ((ulong)pbVar12 & 1) + 2; + pbVar17 = pbVar17 + 2; + goto LAB_00190ec4; +switchD_00190e1c_caseD_77: + pcVar6 = pcVar6 + 1; + *(undefined2 *)(pbVar15 + ((ulong)pbVar15 & 1)) = *(undefined2 *)pbVar12; + pbVar15 = pbVar15 + ((ulong)pbVar15 & 1) + 2; + pbVar12 = pbVar12 + 2; + goto LAB_00190e04; +switchD_00190ca0_caseD_77: + pcVar6 = pcVar6 + 1; + *(undefined2 *)(pbVar5 + ((ulong)pbVar5 & 1)) = *(undefined2 *)pbVar15; + pbVar5 = pbVar5 + ((ulong)pbVar5 & 1) + 2; + pbVar15 = pbVar15 + 2; + goto LAB_00190c88; +switchD_00190b40_caseD_77: + puVar2 = (undefined2 *)((long)puVar14 + ((ulong)puVar14 & 1)); + pcVar6 = pcVar6 + 1; + *puVar2 = *(undefined2 *)puVar10; + puVar10 = (undefined8 *)((long)puVar10 + 2); + puVar14 = (undefined8 *)(puVar2 + 1); + goto LAB_00190b28; +code_r0x00190e6c: + if (local_6c != 0) { + lVar19 = 0; + pbVar15 = __ptr + local_70; + uVar4 = uVar4 - local_70; +LAB_00190e94: + if (2 < (int)uVar4) { + pcVar6 = "bbb"; + pbVar12 = &local_78; + pbVar17 = pbVar15; +LAB_00190ec4: + pbVar11 = pbVar12; + pbVar16 = pbVar17; + switch(*pcVar6) { + case 'b': + pcVar6 = pcVar6 + 1; + *pbVar12 = *pbVar17; + pbVar12 = pbVar12 + 1; + pbVar17 = pbVar17 + 1; + goto LAB_00190ec4; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar6 = pcVar6 + 1; + *(undefined4 *)(pbVar12 + ((ulong)pbVar12 & 1)) = *(undefined4 *)pbVar17; + pbVar12 = pbVar12 + ((ulong)pbVar12 & 1) + 4; + pbVar17 = pbVar17 + 4; + goto LAB_00190ec4; + case 'u': + pbVar16 = pbVar17 + 0x10; + uVar20 = *(undefined8 *)pbVar17; + pbVar11 = pbVar12 + 0x10; + *(undefined8 *)(pbVar12 + 8) = *(undefined8 *)(pbVar17 + 8); + *(undefined8 *)pbVar12 = uVar20; + break; + case 'w': + goto switchD_00190edc_caseD_77; + default: + if (*pcVar6 == '\0') goto code_r0x00190f2c; + } + pcVar6 = pcVar6 + 1; + pbVar12 = pbVar11; + pbVar17 = pbVar16; + goto LAB_00190ec4; + } + pcVar6 = "short dev-cap descriptor read %d/%d"; + uVar7 = 3; + goto LAB_0019104c; + } + lVar19 = 0; +LAB_00191050: + uVar4 = 0; + pbVar5[4] = (byte)lVar19; + *param_2 = pbVar5; +LAB_00190d50: + free(__ptr); +LAB_00190d58: + if (*(long *)(lVar3 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar4; +} + + +================================================================== + +### FUNC 0019109c (100 bytes) name=libusb_free_bos_descriptor + +void libusb_free_bos_descriptor(void *param_1) + +{ + long lVar1; + + if (param_1 != (void *)0x0) { + if (*(char *)((long)param_1 + 4) != '\0') { + lVar1 = 0; + do { + free(*(void **)((long)param_1 + lVar1 * 8 + 8)); + lVar1 = lVar1 + 1; + } while (lVar1 < (long)(ulong)*(byte *)((long)param_1 + 4)); + } + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 00191100 (304 bytes) name=libusb_get_usb_2_0_extension_descriptor + +undefined4 +libusb_get_usb_2_0_extension_descriptor(undefined8 param_1,byte *param_2,undefined8 *param_3) + +{ + byte *pbVar1; + undefined4 uVar2; + char *pcVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + undefined8 uVar7; + + if (param_2[2] == 2) { + if (*param_2 < 7) { + usbi_log(param_1,1,"libusb_get_usb_2_0_extension_descriptor", + "short dev-cap descriptor read %d/%d",*param_2,7); + uVar2 = 0xffffffff; + } + else { + pbVar1 = malloc(8); + if (pbVar1 != (byte *)0x0) { + pcVar3 = "bbbd"; + pbVar4 = pbVar1; +LAB_0019119c: + pbVar5 = pbVar4; + pbVar6 = param_2; + switch(*pcVar3) { + case 'b': + pcVar3 = pcVar3 + 1; + *pbVar4 = *param_2; + pbVar4 = pbVar4 + 1; + param_2 = param_2 + 1; + goto LAB_0019119c; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar3 = pcVar3 + 1; + *(undefined4 *)(pbVar4 + ((ulong)pbVar4 & 1)) = *(undefined4 *)param_2; + pbVar4 = pbVar4 + ((ulong)pbVar4 & 1) + 4; + param_2 = param_2 + 4; + goto LAB_0019119c; + case 'u': + pbVar6 = param_2 + 0x10; + uVar7 = *(undefined8 *)param_2; + pbVar5 = pbVar4 + 0x10; + *(undefined8 *)(pbVar4 + 8) = *(undefined8 *)(param_2 + 8); + *(undefined8 *)pbVar4 = uVar7; + break; + case 'w': + goto switchD_001911b4_caseD_77; + default: + if (*pcVar3 == '\0') { + *param_3 = pbVar1; + return 0; + } + } + pcVar3 = pcVar3 + 1; + pbVar4 = pbVar5; + param_2 = pbVar6; + goto LAB_0019119c; + } + uVar2 = 0xfffffff5; + } + } + else { + usbi_log(param_1,1,"libusb_get_usb_2_0_extension_descriptor", + "unexpected bDevCapabilityType %x (expected %x)",param_2[2],2); + uVar2 = 0xfffffffe; + } + return uVar2; +switchD_001911b4_caseD_77: + pcVar3 = pcVar3 + 1; + *(undefined2 *)(pbVar4 + ((ulong)pbVar4 & 1)) = *(undefined2 *)param_2; + pbVar4 = pbVar4 + ((ulong)pbVar4 & 1) + 2; + param_2 = param_2 + 2; + goto LAB_0019119c; +} + + +================================================================== + +### FUNC 00191230 (4 bytes) name=libusb_free_usb_2_0_extension_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_usb_2_0_extension_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_004ffab8)(); + return; +} + + +================================================================== + +### FUNC 00191234 (304 bytes) name=libusb_get_ss_usb_device_capability_descriptor + +undefined4 +libusb_get_ss_usb_device_capability_descriptor(undefined8 param_1,byte *param_2,undefined8 *param_3) + +{ + byte *pbVar1; + undefined4 uVar2; + char *pcVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + undefined8 uVar7; + + if (param_2[2] == 3) { + if (*param_2 < 10) { + usbi_log(param_1,1,"libusb_get_ss_usb_device_capability_descriptor", + "short dev-cap descriptor read %d/%d",*param_2,10); + uVar2 = 0xffffffff; + } + else { + pbVar1 = malloc(10); + if (pbVar1 != (byte *)0x0) { + pcVar3 = "bbbbwbbw"; + pbVar4 = pbVar1; +LAB_001912d0: + pbVar5 = pbVar4; + pbVar6 = param_2; + switch(*pcVar3) { + case 'b': + pcVar3 = pcVar3 + 1; + *pbVar4 = *param_2; + pbVar4 = pbVar4 + 1; + param_2 = param_2 + 1; + goto LAB_001912d0; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar3 = pcVar3 + 1; + *(undefined4 *)(pbVar4 + ((ulong)pbVar4 & 1)) = *(undefined4 *)param_2; + pbVar4 = pbVar4 + ((ulong)pbVar4 & 1) + 4; + param_2 = param_2 + 4; + goto LAB_001912d0; + case 'u': + pbVar6 = param_2 + 0x10; + uVar7 = *(undefined8 *)param_2; + pbVar5 = pbVar4 + 0x10; + *(undefined8 *)(pbVar4 + 8) = *(undefined8 *)(param_2 + 8); + *(undefined8 *)pbVar4 = uVar7; + break; + case 'w': + goto switchD_001912e8_caseD_77; + default: + if (*pcVar3 == '\0') { + *param_3 = pbVar1; + return 0; + } + } + pcVar3 = pcVar3 + 1; + pbVar4 = pbVar5; + param_2 = pbVar6; + goto LAB_001912d0; + } + uVar2 = 0xfffffff5; + } + } + else { + usbi_log(param_1,1,"libusb_get_ss_usb_device_capability_descriptor", + "unexpected bDevCapabilityType %x (expected %x)",param_2[2],3); + uVar2 = 0xfffffffe; + } + return uVar2; +switchD_001912e8_caseD_77: + pcVar3 = pcVar3 + 1; + *(undefined2 *)(pbVar4 + ((ulong)pbVar4 & 1)) = *(undefined2 *)param_2; + pbVar4 = pbVar4 + ((ulong)pbVar4 & 1) + 2; + param_2 = param_2 + 2; + goto LAB_001912d0; +} + + +================================================================== + +### FUNC 00191364 (4 bytes) name=libusb_free_ss_usb_device_capability_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_ss_usb_device_capability_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_004ffab8)(); + return; +} + + +================================================================== + +### FUNC 00191368 (304 bytes) name=libusb_get_container_id_descriptor + +undefined4 libusb_get_container_id_descriptor(undefined8 param_1,byte *param_2,undefined8 *param_3) + +{ + byte *pbVar1; + undefined4 uVar2; + char *pcVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + undefined8 uVar7; + + if (param_2[2] == 4) { + if (*param_2 < 0x14) { + usbi_log(param_1,1,"libusb_get_container_id_descriptor","short dev-cap descriptor read %d/%d", + *param_2,0x14); + uVar2 = 0xffffffff; + } + else { + pbVar1 = malloc(0x14); + if (pbVar1 != (byte *)0x0) { + pcVar3 = "bbbbu"; + pbVar4 = pbVar1; +LAB_00191404: + pbVar5 = pbVar4; + pbVar6 = param_2; + switch(*pcVar3) { + case 'b': + pcVar3 = pcVar3 + 1; + *pbVar4 = *param_2; + pbVar4 = pbVar4 + 1; + param_2 = param_2 + 1; + goto LAB_00191404; + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + break; + case 'd': + pcVar3 = pcVar3 + 1; + *(undefined4 *)(pbVar4 + ((ulong)pbVar4 & 1)) = *(undefined4 *)param_2; + pbVar4 = pbVar4 + ((ulong)pbVar4 & 1) + 4; + param_2 = param_2 + 4; + goto LAB_00191404; + case 'u': + pbVar6 = param_2 + 0x10; + uVar7 = *(undefined8 *)param_2; + pbVar5 = pbVar4 + 0x10; + *(undefined8 *)(pbVar4 + 8) = *(undefined8 *)(param_2 + 8); + *(undefined8 *)pbVar4 = uVar7; + break; + case 'w': + goto switchD_0019141c_caseD_77; + default: + if (*pcVar3 == '\0') { + *param_3 = pbVar1; + return 0; + } + } + pcVar3 = pcVar3 + 1; + pbVar4 = pbVar5; + param_2 = pbVar6; + goto LAB_00191404; + } + uVar2 = 0xfffffff5; + } + } + else { + usbi_log(param_1,1,"libusb_get_container_id_descriptor", + "unexpected bDevCapabilityType %x (expected %x)",param_2[2],4); + uVar2 = 0xfffffffe; + } + return uVar2; +switchD_0019141c_caseD_77: + pcVar3 = pcVar3 + 1; + *(undefined2 *)(pbVar4 + ((ulong)pbVar4 & 1)) = *(undefined2 *)param_2; + pbVar4 = pbVar4 + ((ulong)pbVar4 & 1) + 2; + param_2 = param_2 + 2; + goto LAB_00191404; +} + + +================================================================== + +### FUNC 00191498 (4 bytes) name=libusb_free_container_id_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_container_id_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_004ffab8)(); + return; +} + + +================================================================== + +### FUNC 0019149c (360 bytes) name=libusb_get_string_descriptor_ascii + +void libusb_get_string_descriptor_ascii(undefined8 param_1,byte param_2,long param_3,int param_4) + +{ + long lVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + char cVar6; + byte local_148; + char local_147; + undefined2 local_146; + long local_48; + + lVar2 = tpidr_el0; + local_48 = *(long *)(lVar2 + 0x28); + if (param_2 == 0) { + lVar3 = 0xfffffffe; + } + else { + lVar3 = libusb_control_transfer(param_1,0x80,6,0x300,0,&local_148,0xff,1000); + if (-1 < (int)lVar3) { + if (3 < (int)lVar3) { + lVar3 = libusb_control_transfer + (param_1,0x80,6,param_2 | 0x300,local_146,&local_148,0xff,1000); + if ((int)lVar3 < 0) goto LAB_00191560; + if ((local_147 == '\x03') && ((int)(uint)local_148 <= (int)lVar3)) { + lVar3 = 0; + if ((1 < param_4) && (2 < local_148)) { + lVar4 = 0; + lVar5 = 0; + do { + cVar6 = *(char *)((long)&local_146 + lVar4); + if (cVar6 < '\0') { + cVar6 = '?'; + } + else if (*(char *)((long)&local_146 + lVar4 + 1) != '\0') { + cVar6 = '?'; + } + lVar3 = lVar5 + 1; + *(char *)(param_3 + lVar5) = cVar6; + } while ((lVar3 < param_4 + -1) && + (lVar1 = lVar4 + 4, lVar4 = lVar4 + 2, lVar5 = lVar3, + lVar1 < (long)(ulong)local_148)); + } + *(undefined1 *)(param_3 + (int)lVar3) = 0; + goto LAB_00191560; + } + } + lVar3 = 0xffffffff; + } + } +LAB_00191560: + if (*(long *)(lVar2 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(lVar3); + } + return; +} + + +================================================================== + +### FUNC 00191604 (224 bytes) name=FUN_00191604 + +void FUN_00191604(long *param_1) + +{ + void *__ptr; + void *__ptr_00; + byte *pbVar1; + long lVar2; + long *plVar3; + long lVar4; + long lVar5; + + __ptr_00 = (void *)*param_1; + if ((__ptr_00 != (void *)0x0) && (0 < (int)param_1[1])) { + lVar2 = 0; + while( true ) { + free(*(void **)((long)__ptr_00 + lVar2 * 0x28 + 0x18)); + plVar3 = (long *)((long)__ptr_00 + lVar2 * 0x28 + 0x10); + __ptr = (void *)*plVar3; + if ((__ptr != (void *)0x0) && + (pbVar1 = (byte *)((long)__ptr_00 + lVar2 * 0x28 + 4), *pbVar1 != 0)) { + free(*(void **)((long)__ptr + 0x10)); + if (1 < *pbVar1) { + lVar4 = 0x30; + lVar5 = 1; + do { + free(*(void **)(*plVar3 + lVar4)); + lVar5 = lVar5 + 1; + lVar4 = lVar4 + 0x20; + } while (lVar5 < (long)(ulong)*pbVar1); + } + __ptr = (void *)*plVar3; + } + free(__ptr); + lVar2 = lVar2 + 1; + if ((int)param_1[1] <= lVar2) break; + __ptr_00 = (void *)*param_1; + } + __ptr_00 = (void *)*param_1; + } + free(__ptr_00); + *param_1 = 0; + return; +} + + +================================================================== + +### FUNC 001916e4 (332 bytes) name=usbi_hotplug_match + +int usbi_hotplug_match(long param_1,long param_2,uint param_3) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + int iVar2; + long *plVar3; + long *plVar4; + + __mutex = (pthread_mutex_t *)(param_1 + 0x90); + pthread_mutex_lock(__mutex); + plVar4 = *(long **)(param_1 + 0x88); + plVar3 = (long *)plVar4[1]; + iVar2 = pthread_mutex_unlock(__mutex); + do { + plVar1 = plVar3; + if (plVar4 == (long *)(param_1 + 0x80)) { + return iVar2; + } + if ((int)plVar4[-1] == 0) { + if (((((*(uint *)(plVar4 + -5) & param_3) == 0) || + ((*(uint *)(plVar4 + -7) != 0xffffffff && + (*(uint *)(plVar4 + -7) != (uint)*(ushort *)(param_2 + 0x70))))) || + ((*(uint *)((long)plVar4 + -0x34) != 0xffffffff && + (*(uint *)((long)plVar4 + -0x34) != (uint)*(ushort *)(param_2 + 0x72))))) || + ((*(uint *)(plVar4 + -6) != 0xffffffff && + (*(uint *)(plVar4 + -6) != (uint)*(byte *)(param_2 + 0x6c))))) { + pthread_mutex_lock(__mutex); + } + else { + iVar2 = (*(code *)plVar4[-4])(param_1,param_2,param_3,plVar4[-2]); + pthread_mutex_lock(__mutex); + if (iVar2 != 0) goto LAB_0019174c; + } + } + else { + pthread_mutex_lock(__mutex); +LAB_0019174c: + plVar3 = (long *)plVar4[1]; + *plVar3 = *plVar4; + *(long **)(*plVar4 + 8) = plVar3; + *plVar4 = 0; + plVar4[1] = 0; + free(plVar4 + -8); + } + plVar3 = (long *)plVar1[1]; + iVar2 = pthread_mutex_unlock(__mutex); + plVar4 = plVar1; + } while( true ); +} + + +================================================================== + +### FUNC 00191830 (264 bytes) name=usbi_hotplug_notification + +ulong usbi_hotplug_notification(long param_1,undefined8 param_2,undefined4 param_3) + +{ + long *plVar1; + uint uVar2; + undefined4 *puVar3; + ulong uVar4; + long lVar5; + long lVar6; + + puVar3 = calloc(1,0x20); + if (puVar3 != (undefined4 *)0x0) { + *(undefined8 *)(puVar3 + 2) = param_2; + *puVar3 = param_3; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + if ((*(int *)(param_1 + 0x1b8) == 0) && (*(int *)(param_1 + 0x1bc) == 0)) { + plVar1 = (long *)(param_1 + 0x1e0); + if (*(long **)(param_1 + 0x1e8) == plVar1) { + lVar6 = *(long *)(param_1 + 0x1f8); + *(long **)(puVar3 + 6) = plVar1; + lVar5 = *(long *)(param_1 + 0x1e0); + *(long *)(puVar3 + 4) = lVar5; + *(undefined4 **)(lVar5 + 8) = puVar3 + 4; + *(undefined4 **)(param_1 + 0x1e0) = puVar3 + 4; + if (lVar6 == param_1 + 0x1f0) { + usbi_signal_event(param_1); + } + } + else { + lVar5 = *plVar1; + *(long *)(puVar3 + 4) = lVar5; + *(long **)(puVar3 + 6) = plVar1; + *(undefined4 **)(lVar5 + 8) = puVar3 + 4; + *plVar1 = (long)(puVar3 + 4); + } + } + else { + *(long *)(puVar3 + 6) = param_1 + 0x1e0; + lVar5 = *(long *)(param_1 + 0x1e0); + *(long *)(puVar3 + 4) = lVar5; + *(undefined4 **)(lVar5 + 8) = puVar3 + 4; + *(undefined4 **)(param_1 + 0x1e0) = puVar3 + 4; + } + uVar2 = pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + return (ulong)uVar2; + } + uVar4 = usbi_log(param_1,1,"usbi_hotplug_notification","error allocating hotplug message"); + return uVar4; +} + + +================================================================== + +### FUNC 00191938 (672 bytes) name=libusb_hotplug_register_callback + +int libusb_hotplug_register_callback + (long param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,uint param_6, + long param_7,long param_8,undefined4 *param_9) + +{ + pthread_mutex_t *__mutex; + long lVar1; + long lVar2; + uint uVar3; + int iVar4; + ulong uVar5; + long *plVar6; + long lVar7; + long lVar8; + long *plVar9; + long lVar10; + long local_70; + long local_68; + + lVar2 = tpidr_el0; + local_68 = *(long *)(lVar2 + 0x28); + uVar5 = libusb_has_capability(1); + if ((int)uVar5 == 0) { + iVar4 = -0xc; + goto LAB_001919bc; + } + if (((param_4 == 0xffffffff) || (param_4 >> 0x10 == 0)) && + ((param_5 == 0xffffffff || (param_5 >> 0x10 == 0)))) { + if (param_6 == 0xffffffff) { + if (param_7 == 0) goto LAB_001919b0; + } + else { + iVar4 = -2; + if ((0xff < param_6) || (param_7 == 0)) goto LAB_001919bc; + } + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + plVar6 = calloc(1,0x50); + if (plVar6 == (long *)0x0) { + iVar4 = -0xb; + uVar5 = 0; + } + else { + plVar6[6] = param_8; + __mutex = (pthread_mutex_t *)(lVar1 + 0x90); + *plVar6 = lVar1; + *(uint *)(plVar6 + 1) = param_4; + *(uint *)((long)plVar6 + 0xc) = param_5; + *(uint *)(plVar6 + 2) = param_6; + *(uint *)((long)plVar6 + 0x14) = param_3; + *(undefined4 *)(plVar6 + 3) = param_2; + plVar6[4] = param_7; + pthread_mutex_lock(__mutex); + *(int *)(plVar6 + 5) = DAT_005028f8; + lVar8 = *(long *)(lVar1 + 0x88); + plVar9 = plVar6 + 8; + DAT_005028f8 = DAT_005028f8 + 1; + *plVar9 = lVar1 + 0x80; + plVar6[9] = lVar8; + **(undefined8 **)(lVar1 + 0x88) = plVar9; + *(long **)(lVar1 + 0x88) = plVar9; + uVar3 = pthread_mutex_unlock(__mutex); + uVar5 = (ulong)uVar3; + if ((param_3 & 1) != 0) { + iVar4 = libusb_get_device_list(lVar1,&local_70); + if (iVar4 < 0) { + lVar8 = plVar6[5]; + uVar5 = libusb_has_capability(1); + if ((int)uVar5 != 0) { + pthread_mutex_lock(__mutex); + for (lVar10 = *(long *)(lVar1 + 0x88); lVar10 != lVar1 + 0x80; + lVar10 = *(long *)(lVar10 + 8)) { + if (*(int *)(lVar10 + -0x18) == (int)lVar8) { + *(undefined4 *)(lVar10 + -8) = 1; + } + } + pthread_mutex_unlock(__mutex); + uVar5 = usbi_hotplug_notification(lVar1,0,0); + } + goto LAB_001919bc; + } + lVar8 = local_70; + if (iVar4 != 0) { + lVar10 = 0; + do { + if (((int)plVar6[7] == 0) && ((*(byte *)(plVar6 + 3) & 1) != 0)) { + lVar7 = *(long *)(lVar8 + lVar10 * 8); + if ((((*(uint *)(plVar6 + 1) == 0xffffffff) || + (*(uint *)(plVar6 + 1) == (uint)*(ushort *)(lVar7 + 0x70))) && + ((*(uint *)((long)plVar6 + 0xc) == 0xffffffff || + (*(uint *)((long)plVar6 + 0xc) == (uint)*(ushort *)(lVar7 + 0x72))))) && + ((*(uint *)(plVar6 + 2) == 0xffffffff || + (*(uint *)(plVar6 + 2) == (uint)*(byte *)(lVar7 + 0x6c))))) { + (*(code *)plVar6[4])(lVar1,lVar7,1,plVar6[6]); + lVar8 = local_70; + } + } + lVar10 = lVar10 + 1; + } while (lVar10 < iVar4); + } + uVar5 = libusb_free_device_list(lVar8,1); + } + iVar4 = 0; + if (param_9 != (undefined4 *)0x0) { + *param_9 = (int)plVar6[5]; + } + } + } + else { +LAB_001919b0: + iVar4 = -2; + } +LAB_001919bc: + if (*(long *)(lVar2 + 0x28) == local_68) { + return iVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 00191bd8 (176 bytes) name=libusb_hotplug_deregister_callback + +void libusb_hotplug_deregister_callback(long param_1,int param_2) + +{ + long lVar1; + int iVar2; + long lVar3; + + iVar2 = libusb_has_capability(1); + if (iVar2 != 0) { + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x90)); + for (lVar3 = *(long *)(lVar1 + 0x88); lVar3 != lVar1 + 0x80; lVar3 = *(long *)(lVar3 + 8)) { + if (*(int *)(lVar3 + -0x18) == param_2) { + *(undefined4 *)(lVar3 + -8) = 1; + } + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x90)); + usbi_hotplug_notification(lVar1,0,0); + return; + } + return; +} + + +================================================================== + +### FUNC 00191c88 (124 bytes) name=usbi_hotplug_deregister_all + +int usbi_hotplug_deregister_all(long param_1) + +{ + long *plVar1; + int iVar2; + long *plVar3; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x90)); + plVar1 = *(long **)(param_1 + 0x88); + while (plVar1 != (long *)(param_1 + 0x80)) { + plVar3 = (long *)plVar1[1]; + *plVar3 = *plVar1; + *(long **)(*plVar1 + 8) = plVar3; + *plVar1 = 0; + plVar1[1] = 0; + free(plVar1 + -8); + plVar1 = plVar3; + } + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x90)); + return iVar2; +} + + +================================================================== + +### FUNC 00191d04 (300 bytes) name=usbi_io_init + +int usbi_io_init(long param_1) + +{ + int iVar1; + + pthread_mutex_init((pthread_mutex_t *)(param_1 + 200),(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x108),(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x138),(pthread_mutexattr_t *)0x0); + pthread_cond_init((pthread_cond_t *)(param_1 + 0x160),(pthread_condattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(param_1 + 400),(pthread_mutexattr_t *)0x0); + pthread_key_create((pthread_key_t *)(param_1 + 0x134),(__destr_function *)0x0); + *(long *)(param_1 + 0xb8) = param_1 + 0xb8; + *(long *)(param_1 + 0xc0) = param_1 + 0xb8; + *(long *)(param_1 + 0x1c0) = param_1 + 0x1c0; + *(long *)(param_1 + 0x1c8) = param_1 + 0x1c0; + *(long *)(param_1 + 0x1e0) = param_1 + 0x1e0; + *(long *)(param_1 + 0x1e8) = param_1 + 0x1e0; + *(long *)(param_1 + 0x1f0) = param_1 + 0x1f0; + *(long *)(param_1 + 0x1f8) = param_1 + 0x1f0; + iVar1 = usbi_pipe(param_1 + 8); + if (iVar1 < 0) { + iVar1 = -99; + } + else { + iVar1 = usbi_add_pollfd(param_1,*(undefined4 *)(param_1 + 8),1); + if (-1 < iVar1) { + return 0; + } + close(*(int *)(param_1 + 8)); + close(*(int *)(param_1 + 0xc)); + } + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 200)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x108)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x138)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 0x160)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 400)); + pthread_key_delete(*(pthread_key_t *)(param_1 + 0x134)); + return iVar1; +} + + +================================================================== + +### FUNC 00191e30 (292 bytes) name=usbi_add_pollfd + +undefined8 usbi_add_pollfd(long param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + uint uVar2; + long lVar3; + + puVar1 = malloc(0x18); + if (puVar1 == (undefined4 *)0x0) { + return 0xfffffff5; + } + usbi_log(0,4,"usbi_add_pollfd","add fd %d events %d",param_2,(int)(short)param_3); + *puVar1 = param_2; + *(short *)(puVar1 + 1) = (short)param_3; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + *(long *)(puVar1 + 4) = param_1 + 0x1c0; + lVar3 = *(long *)(param_1 + 0x1c0); + *(long *)(puVar1 + 2) = lVar3; + *(undefined4 **)(lVar3 + 8) = puVar1 + 2; + *(undefined4 **)(param_1 + 0x1c0) = puVar1 + 2; + *(int *)(param_1 + 0x1d8) = *(int *)(param_1 + 0x1d8) + 1; + if (*(uint *)(param_1 + 0x1b8) == 0) { + if ((*(int *)(param_1 + 0x1bc) == 0) && (*(long *)(param_1 + 0x1e8) == param_1 + 0x1e0)) { + *(undefined4 *)(param_1 + 0x1b8) = 1; + if (*(long *)(param_1 + 0x1f8) == param_1 + 0x1f0) { + usbi_signal_event(param_1); + } + goto LAB_00191ef8; + } + uVar2 = 1; + } + else { + uVar2 = *(uint *)(param_1 + 0x1b8) | 1; + } + *(uint *)(param_1 + 0x1b8) = uVar2; +LAB_00191ef8: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + if (*(code **)(param_1 + 0xf0) != (code *)0x0) { + (**(code **)(param_1 + 0xf0))(param_2,param_3,*(undefined8 *)(param_1 + 0x100)); + } + return 0; +} + + +================================================================== + +### FUNC 00191f54 (120 bytes) name=usbi_io_exit + +void usbi_io_exit(long param_1) + +{ + usbi_remove_pollfd(param_1,*(undefined4 *)(param_1 + 8)); + close(*(int *)(param_1 + 8)); + close(*(int *)(param_1 + 0xc)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 200)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x108)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x138)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 0x160)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 400)); + pthread_key_delete(*(pthread_key_t *)(param_1 + 0x134)); + if (*(void **)(param_1 + 0x1d0) != (void *)0x0) { + free(*(void **)(param_1 + 0x1d0)); + return; + } + return; +} + + +================================================================== + +### FUNC 00191fcc (352 bytes) name=usbi_remove_pollfd + +ulong usbi_remove_pollfd(long param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + ulong extraout_x0; + ulong uVar2; + long *plVar3; + long *plVar4; + + usbi_log(0,4,"usbi_remove_pollfd","remove fd %d",param_2); + __mutex = (pthread_mutex_t *)(param_1 + 400); + pthread_mutex_lock(__mutex); + plVar3 = *(long **)(param_1 + 0x1c8); + while( true ) { + if (plVar3 == (long *)(param_1 + 0x1c0)) { + usbi_log(0,4,"usbi_remove_pollfd","couldn\'t find fd %d to remove",param_2); + uVar1 = pthread_mutex_unlock(__mutex); + return (ulong)uVar1; + } + if ((int)plVar3[-1] == param_2) break; + plVar3 = (long *)plVar3[1]; + } + plVar4 = (long *)plVar3[1]; + *plVar4 = *plVar3; + *(long **)(*plVar3 + 8) = plVar4; + *plVar3 = 0; + plVar3[1] = 0; + *(int *)(param_1 + 0x1d8) = *(int *)(param_1 + 0x1d8) + -1; + if (*(uint *)(param_1 + 0x1b8) == 0) { + if ((*(int *)(param_1 + 0x1bc) == 0) && (*(long *)(param_1 + 0x1e8) == param_1 + 0x1e0)) { + *(undefined4 *)(param_1 + 0x1b8) = 1; + if (*(long *)(param_1 + 0x1f8) == param_1 + 0x1f0) { + usbi_signal_event(param_1); + } + goto LAB_001920c8; + } + uVar1 = 1; + } + else { + uVar1 = *(uint *)(param_1 + 0x1b8) | 1; + } + *(uint *)(param_1 + 0x1b8) = uVar1; +LAB_001920c8: + pthread_mutex_unlock(__mutex); + free(plVar3 + -1); + if (*(code **)(param_1 + 0xf8) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x001920f4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar2 = (**(code **)(param_1 + 0xf8))(param_2,*(undefined8 *)(param_1 + 0x100)); + return uVar2; + } + return extraout_x0; +} + + +================================================================== + +### FUNC 0019212c (136 bytes) name=libusb_alloc_transfer + +int * libusb_alloc_transfer(int param_1) + +{ + int *piVar1; + int *piVar2; + + piVar1 = calloc(1,*(long *)(*(long *)PTR_usbi_backend_00501a30 + 0x120) + (long)param_1 * 0xc + + 0xb0); + if (piVar1 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = piVar1 + 0x1c; + *piVar1 = param_1; + pthread_mutex_init((pthread_mutex_t *)(piVar1 + 0x11),(pthread_mutexattr_t *)0x0); + usbi_log(0,4,"libusb_alloc_transfer","transfer %p",piVar2); + } + return piVar2; +} + + +================================================================== + +### FUNC 001921b4 (112 bytes) name=libusb_free_transfer + +void libusb_free_transfer(long param_1) + +{ + if (param_1 != 0) { + usbi_log(0,4,"libusb_free_transfer","transfer %p",param_1); + if (((*(byte *)(param_1 + 8) >> 1 & 1) != 0) && (*(void **)(param_1 + 0x30) != (void *)0x0)) { + free(*(void **)(param_1 + 0x30)); + } + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + -0x2c)); + free((void *)(param_1 + -0x70)); + return; + } + return; +} + + +================================================================== + +### FUNC 00192224 (824 bytes) name=libusb_submit_transfer + +int libusb_submit_transfer(long *param_1) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + undefined4 *puVar6; + ulong uVar7; + long *plVar8; + long *plVar9; + ulong uVar10; + long lVar11; + ulong uVar12; + long lVar13; + pthread_mutex_t *__mutex_00; + undefined8 uVar14; + long local_68; + ulong uStack_60; + long local_58; + + lVar3 = tpidr_el0; + local_58 = *(long *)(lVar3 + 0x28); + lVar13 = *(long *)(*(long *)(*param_1 + 0x40) + 0x30); + usbi_log(0,4,"libusb_submit_transfer","transfer %p",param_1); + __mutex = (pthread_mutex_t *)(lVar13 + 200); + pthread_mutex_lock(__mutex); + __mutex_00 = (pthread_mutex_t *)((long)param_1 + -0x2c); + pthread_mutex_lock(__mutex_00); + if ((*(byte *)(param_1 + -6) & 1) != 0) { + pthread_mutex_unlock(__mutex); + iVar5 = pthread_mutex_unlock(__mutex_00); + iVar4 = -6; + goto LAB_00192528; + } + *(undefined4 *)(param_1 + -7) = 0; + *(undefined2 *)(param_1 + -6) = 0; + uVar2 = *(uint *)((long)param_1 + 0xc); + lVar13 = *(long *)(*(long *)(*param_1 + 0x40) + 0x30); + if (uVar2 == 0) { +LAB_00192388: + plVar8 = *(long **)(lVar13 + 0xc0); + plVar1 = (long *)(lVar13 + 0xb8); + if (plVar8 == plVar1) { + plVar9 = param_1 + -0xd; + *plVar9 = (long)plVar1; + param_1[-0xc] = (long)plVar8; + **(undefined8 **)(lVar13 + 0xc0) = plVar9; + *(long **)(lVar13 + 0xc0) = plVar9; + } + else { + lVar13 = param_1[-9]; + if ((lVar13 != 0) || (param_1[-8] != 0)) { + for (; plVar8 != plVar1; plVar8 = (long *)plVar8[1]) { + lVar11 = plVar8[4]; + if (lVar11 == 0) { + if ((-1 < lVar13) && (plVar8[5] != 0)) goto LAB_001923c4; +LAB_001923fc: + param_1[-0xc] = (long)plVar8; + param_1[-0xd] = *plVar8; + *(long **)(*plVar8 + 8) = param_1 + -0xd; + *plVar8 = (long)(param_1 + -0xd); + goto LAB_0019246c; + } + if (lVar13 < lVar11) goto LAB_001923fc; +LAB_001923c4: + if ((lVar11 == lVar13) && (param_1[-8] < plVar8[5])) goto LAB_001923fc; + } + } + param_1[-0xc] = (long)plVar1; + param_1[-0xd] = *plVar1; + *(long **)(*plVar1 + 8) = param_1 + -0xd; + *plVar1 = (long)(param_1 + -0xd); + } +LAB_0019246c: + pthread_mutex_unlock(__mutex); + iVar4 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0xe0))(param_1 + -0xe); + if (iVar4 == 0) { + *(byte *)(param_1 + -6) = *(byte *)(param_1 + -6) | 1; + libusb_ref_device(*(undefined8 *)(*param_1 + 0x40)); + } + else { + pthread_mutex_unlock(__mutex_00); + __mutex_00 = (pthread_mutex_t *)(*(long *)(*(long *)(*param_1 + 0x40) + 0x30) + 200); + pthread_mutex_lock(__mutex_00); + plVar1 = (long *)param_1[-0xc]; + *plVar1 = param_1[-0xd]; + *(long **)(param_1[-0xd] + 8) = plVar1; + param_1[-0xd] = 0; + param_1[-0xc] = 0; + } + } + else { + iVar4 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0x108))(0,&local_68); + if (-1 < iVar4) { + local_68 = local_68 + (ulong)uVar2 / 1000; + uVar10 = (ulong)((uVar2 % 1000) * 1000000); + uVar7 = uStack_60 + uVar10; + if (999999999 < (long)uVar7) { + uVar12 = 0xffffffff88ca6c00; + if (-2000000000 < (long)~uVar7) { + uVar12 = ~uVar7; + } + uVar10 = (uVar10 + 1000000000 + uStack_60 + uVar12) / 1000000000; + uVar7 = (uVar7 + uVar10 * -1000000000) - 1000000000; + local_68 = local_68 + uVar10 + 1; + } + param_1[-9] = local_68; + param_1[-8] = (long)uVar7 / 1000; + uStack_60 = uVar7; + goto LAB_00192388; + } + uVar14 = *(undefined8 *)(*(long *)(*param_1 + 0x40) + 0x30); + puVar6 = (undefined4 *)__errno(); + usbi_log(uVar14,1,"calculate_timeout","failed to read monotonic clock, errno=%d",*puVar6); + pthread_mutex_unlock(__mutex); + } + iVar5 = pthread_mutex_unlock(__mutex_00); +LAB_00192528: + if (*(long *)(lVar3 + 0x28) == local_58) { + return iVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar5); +} + + +================================================================== + +### FUNC 0019255c (264 bytes) name=libusb_cancel_transfer + +int libusb_cancel_transfer(long *param_1) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + + usbi_log(0,4,"libusb_cancel_transfer","transfer %p",param_1); + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + -0x2c)); + if ((*(byte *)(param_1 + -6) & 3) == 1) { + iVar1 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0xe8))(param_1 + -0xe); + if (iVar1 < 0) { + if (iVar1 + 5U < 2) { + uVar3 = 4; + uVar2 = 0; + } + else { + uVar3 = 1; + uVar2 = *(undefined8 *)(*(long *)(*param_1 + 0x40) + 0x30); + } + usbi_log(uVar2,uVar3,"libusb_cancel_transfer","cancel transfer failed error %d",iVar1); + if (iVar1 == -4) { + *(byte *)(param_1 + -6) = *(byte *)(param_1 + -6) | 4; + } + } + *(byte *)(param_1 + -6) = *(byte *)(param_1 + -6) | 2; + } + else { + iVar1 = -5; + } + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + -0x2c)); + return iVar1; +} + + +================================================================== + +### FUNC 00192664 (8 bytes) name=libusb_transfer_set_stream_id + +void libusb_transfer_set_stream_id(long param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + -0x34) = param_2; + return; +} + + +================================================================== + +### FUNC 0019266c (8 bytes) name=libusb_transfer_get_stream_id + +undefined4 libusb_transfer_get_stream_id(long param_1) + +{ + return *(undefined4 *)(param_1 + -0x34); +} + + +================================================================== + +### FUNC 00192674 (372 bytes) name=usbi_handle_transfer_completion + +undefined8 usbi_handle_transfer_completion(void *param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + int iVar1; + undefined8 *puVar2; + byte bVar3; + long *plVar4; + long lVar5; + + plVar4 = (long *)((long)param_1 + 0x70); + lVar5 = *plVar4; + __mutex = (pthread_mutex_t *)(*(long *)(*(long *)(lVar5 + 0x40) + 0x30) + 200); + pthread_mutex_lock(__mutex); + puVar2 = *(undefined8 **)((long)param_1 + 0x10); + *puVar2 = *(undefined8 *)((long)param_1 + 8); + *(undefined8 **)(*(long *)((long)param_1 + 8) + 8) = puVar2; + *(undefined8 *)((long)param_1 + 8) = 0; + *(undefined8 *)((long)param_1 + 0x10) = 0; + pthread_mutex_unlock(__mutex); + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + 0x44)); + *(byte *)((long)param_1 + 0x40) = *(byte *)((long)param_1 + 0x40) & 0xfe; + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + 0x44)); + if (param_2 == 0) { + if ((*(byte *)((long)param_1 + 0x78) & 1) != 0) { + iVar1 = *(int *)((long)param_1 + 0x84) + -8; + if (*(char *)((long)param_1 + 0x7a) != '\0') { + iVar1 = *(int *)((long)param_1 + 0x84); + } + if (iVar1 != *(int *)((long)param_1 + 0x38)) { + usbi_log(0,4,"usbi_handle_transfer_completion","interpreting short transfer as error"); + param_2 = 1; + goto LAB_0019273c; + } + } + param_2 = 0; + } +LAB_0019273c: + bVar3 = *(byte *)((long)param_1 + 0x78); + *(int *)((long)param_1 + 0x80) = param_2; + *(undefined4 *)((long)param_1 + 0x88) = *(undefined4 *)((long)param_1 + 0x38); + usbi_log(0,4,"usbi_handle_transfer_completion","transfer %p has callback %p",plVar4, + *(undefined8 *)((long)param_1 + 0x90)); + if (*(code **)((long)param_1 + 0x90) != (code *)0x0) { + (**(code **)((long)param_1 + 0x90))(plVar4); + } + if ((bVar3 >> 2 & 1) != 0) { + usbi_log(0,4,"libusb_free_transfer","transfer %p",plVar4); + if (((*(byte *)((long)param_1 + 0x78) >> 1 & 1) != 0) && + (*(void **)((long)param_1 + 0xa0) != (void *)0x0)) { + free(*(void **)((long)param_1 + 0xa0)); + } + pthread_mutex_destroy((pthread_mutex_t *)((long)param_1 + 0x44)); + free(param_1); + } + libusb_unref_device(*(undefined8 *)(lVar5 + 0x40)); + return 0; +} + + +================================================================== + +### FUNC 001927e8 (128 bytes) name=usbi_handle_transfer_cancellation + +undefined8 usbi_handle_transfer_cancellation(long param_1) + +{ + pthread_mutex_t *__mutex; + byte bVar1; + undefined8 uVar2; + + __mutex = (pthread_mutex_t *)(*(long *)(*(long *)(*(long *)(param_1 + 0x70) + 0x40) + 0x30) + 200) + ; + pthread_mutex_lock(__mutex); + bVar1 = *(byte *)(param_1 + 0x41); + pthread_mutex_unlock(__mutex); + if ((bVar1 >> 2 & 1) == 0) { + uVar2 = 3; + } + else { + usbi_log(0,4,"usbi_handle_transfer_cancellation","detected timeout cancellation"); + uVar2 = 2; + } + usbi_handle_transfer_completion(param_1,uVar2); + return 0; +} + + +================================================================== + +### FUNC 00192868 (184 bytes) name=usbi_signal_transfer_completion + +int usbi_signal_transfer_completion(long param_1) + +{ + int iVar1; + long lVar2; + long lVar3; + + lVar3 = *(long *)(*(long *)(*(long *)(param_1 + 0x70) + 0x40) + 0x30); + pthread_mutex_lock((pthread_mutex_t *)(lVar3 + 400)); + if (((*(int *)(lVar3 + 0x1b8) == 0) && (*(int *)(lVar3 + 0x1bc) == 0)) && + (*(long *)(lVar3 + 0x1e8) == lVar3 + 0x1e0)) { + lVar2 = *(long *)(lVar3 + 0x1f8); + *(long *)(param_1 + 0x20) = lVar3 + 0x1f0; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(lVar3 + 0x1f0); + *(long *)(*(long *)(lVar3 + 0x1f0) + 8) = param_1 + 0x18; + *(long *)(lVar3 + 0x1f0) = param_1 + 0x18; + if (lVar2 == lVar3 + 0x1f0) { + usbi_signal_event(lVar3); + } + } + else { + *(long *)(param_1 + 0x20) = lVar3 + 0x1f0; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(lVar3 + 0x1f0); + *(long *)(*(long *)(lVar3 + 0x1f0) + 8) = param_1 + 0x18; + *(long *)(lVar3 + 0x1f0) = param_1 + 0x18; + } + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)(lVar3 + 400)); + return iVar1; +} + + +================================================================== + +### FUNC 00192920 (144 bytes) name=libusb_try_lock_events + +undefined8 libusb_try_lock_events(long param_1) + +{ + long lVar1; + int iVar2; + undefined8 uVar3; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + iVar2 = *(int *)(lVar1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + if (iVar2 == 0) { + iVar2 = pthread_mutex_trylock((pthread_mutex_t *)(lVar1 + 0x108)); + uVar3 = 1; + if (iVar2 == 0) { + *(undefined4 *)(lVar1 + 0x130) = 1; + uVar3 = 0; + } + } + else { + usbi_log(0,4,"libusb_try_lock_events","someone else is closing a device"); + uVar3 = 1; + } + return uVar3; +} + + +================================================================== + +### FUNC 001929b0 (60 bytes) name=libusb_lock_events + +int libusb_lock_events(long param_1) + +{ + long lVar1; + int iVar2; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + iVar2 = pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x108)); + *(undefined4 *)(lVar1 + 0x130) = 1; + return iVar2; +} + + +================================================================== + +### FUNC 001929ec (80 bytes) name=libusb_unlock_events + +int libusb_unlock_events(long param_1) + +{ + long lVar1; + int iVar2; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + *(undefined4 *)(lVar1 + 0x130) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x108)); + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x138)); + pthread_cond_broadcast((pthread_cond_t *)(lVar1 + 0x160)); + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x138)); + return iVar2; +} + + +================================================================== + +### FUNC 00192a3c (112 bytes) name=libusb_event_handling_ok + +bool libusb_event_handling_ok(long param_1) + +{ + bool bVar1; + long lVar2; + int iVar3; + + lVar2 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar2 = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 400)); + iVar3 = *(int *)(lVar2 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 400)); + bVar1 = iVar3 == 0; + if (!bVar1) { + usbi_log(0,4,"libusb_event_handling_ok","someone else is closing a device"); + } + return bVar1; +} + + +================================================================== + +### FUNC 00192aac (120 bytes) name=libusb_event_handler_active + +undefined4 libusb_event_handler_active(long param_1) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + iVar2 = *(int *)(lVar1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + if (iVar2 == 0) { + uVar3 = *(undefined4 *)(lVar1 + 0x130); + } + else { + usbi_log(0,4,"libusb_event_handler_active","someone else is closing a device"); + uVar3 = 1; + } + return uVar3; +} + + +================================================================== + +### FUNC 00192b24 (152 bytes) name=libusb_interrupt_event_handler + +int libusb_interrupt_event_handler(long param_1) + +{ + long lVar1; + int iVar2; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + usbi_log(0,4,"libusb_interrupt_event_handler",""); + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + if ((((*(int *)(lVar1 + 0x1b8) == 0) && (*(int *)(lVar1 + 0x1bc) == 0)) && + (*(long *)(lVar1 + 0x1e8) == lVar1 + 0x1e0)) && (*(long *)(lVar1 + 0x1f8) == lVar1 + 0x1f0)) { + *(undefined4 *)(lVar1 + 0x1b8) = 2; + usbi_signal_event(lVar1); + } + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + return iVar2; +} + + +================================================================== + +### FUNC 00192bbc (28 bytes) name=libusb_lock_event_waiters + +int libusb_lock_event_waiters(long param_1) + +{ + long lVar1; + int iVar2; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + iVar2 = pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x138)); + return iVar2; +} + + +================================================================== + +### FUNC 00192bd8 (28 bytes) name=libusb_unlock_event_waiters + +int libusb_unlock_event_waiters(long param_1) + +{ + long lVar1; + int iVar2; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x138)); + return iVar2; +} + + +================================================================== + +### FUNC 00192bf4 (88 bytes) name=libusb_wait_for_event + +ulong libusb_wait_for_event(long param_1,long param_2) + +{ + long lVar1; + ulong uVar2; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + if (param_2 != 0) { + uVar2 = usbi_cond_timedwait((pthread_cond_t *)(lVar1 + 0x160),(pthread_mutex_t *)(lVar1 + 0x138) + ,param_2); + if (-1 < (int)uVar2) { + uVar2 = (ulong)((int)uVar2 == 0x6e); + } + return uVar2; + } + pthread_cond_wait((pthread_cond_t *)(lVar1 + 0x160),(pthread_mutex_t *)(lVar1 + 0x138)); + return 0; +} + + +================================================================== + +### FUNC 00192c4c (704 bytes) name=libusb_handle_events_timeout_completed + +ulong libusb_handle_events_timeout_completed(long param_1,long *param_2,int *param_3) + +{ + long lVar1; + long lVar2; + long lVar3; + undefined *puVar4; + bool bVar5; + int iVar6; + uint uVar7; + ulong uVar8; + long lVar9; + ulong uVar10; + long local_80; + long lStack_78; + long local_68; + long lStack_60; + long local_58; + + puVar4 = PTR_usbi_default_context_00501e08; + lVar3 = tpidr_el0; + local_58 = *(long *)(lVar3 + 0x28); + lVar2 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar2 = param_1; + } + iVar6 = libusb_get_next_timeout(lVar2,&local_68); + if (iVar6 == 0) { +LAB_00192cd4: + lStack_78 = param_2[1]; + local_80 = *param_2; +LAB_00192d10: + while( true ) { + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + iVar6 = *(int *)(lVar1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + if (iVar6 == 0) { + iVar6 = pthread_mutex_trylock((pthread_mutex_t *)(lVar1 + 0x108)); + if (iVar6 == 0) { + *(undefined4 *)(lVar1 + 0x130) = 1; + if ((param_3 == (int *)0x0) || (*param_3 == 0)) { + usbi_log(0,4,"libusb_handle_events_timeout_completed","doing our own event handling"); + uVar10 = FUN_001930ac(lVar2,&local_80); + uVar10 = uVar10 & 0xffffffff; + } + else { + uVar10 = 0; + } + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + *(undefined4 *)(lVar1 + 0x130) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x108)); + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x138)); + pthread_cond_broadcast((pthread_cond_t *)(lVar1 + 0x160)); + uVar7 = pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x138)); + uVar8 = (ulong)uVar7; + goto LAB_00192ed8; + } + } + else { + usbi_log(0,4,"libusb_try_lock_events","someone else is closing a device"); + } + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x138)); + if ((param_3 != (int *)0x0) && (*param_3 != 0)) { + uVar10 = 0; + goto LAB_00192e24; + } + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + iVar6 = *(int *)(lVar1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + if (iVar6 != 0) break; + if (*(int *)(lVar1 + 0x130) != 0) goto LAB_00192dd4; + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x138)); + usbi_log(0,4,"libusb_handle_events_timeout_completed", + "event handler was active but went away, retrying"); + } + usbi_log(0,4,"libusb_event_handler_active","someone else is closing a device"); +LAB_00192dd4: + usbi_log(0,4,"libusb_handle_events_timeout_completed","another thread is doing event handling"); + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + uVar8 = usbi_cond_timedwait(lVar1 + 0x160,lVar1 + 0x138,&local_80); + uVar10 = uVar8 & 0xffffffff; + if (-1 < (int)uVar8) { + uVar10 = (ulong)((int)uVar8 == 0x6e); + } +LAB_00192e24: + lVar1 = *(long *)puVar4; + if (lVar2 != 0) { + lVar1 = lVar2; + } + uVar7 = pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x138)); + uVar8 = (ulong)uVar7; + if ((int)uVar10 < 0) goto LAB_00192ed8; + if ((int)uVar10 != 1) { + uVar10 = 0; + goto LAB_00192ed8; + } + } + else if ((local_68 != 0) || (lStack_60 != 0)) { + lVar9 = *param_2; + bVar5 = SBORROW8(local_68,lVar9); + lVar1 = local_68 - lVar9; + if (local_68 == lVar9) { + bVar5 = SBORROW8(lStack_60,param_2[1]); + lVar1 = lStack_60 - param_2[1]; + } + local_80 = local_68; + lStack_78 = lStack_60; + if (lVar1 < 0 == bVar5) goto LAB_00192cd4; + goto LAB_00192d10; + } + uVar8 = FUN_00192f0c(lVar2); + uVar10 = uVar8 & 0xffffffff; +LAB_00192ed8: + if (*(long *)(lVar3 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar8); + } + return uVar10; +} + + +================================================================== + +### FUNC 00192f0c (416 bytes) name=FUN_00192f0c + +int FUN_00192f0c(long param_1) + +{ + long lVar1; + long lVar2; + long lVar3; + int iVar4; + int iVar5; + undefined4 *puVar6; + long lVar7; + long lVar8; + undefined8 uVar9; + long local_78; + long lStack_70; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + lVar2 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar2 = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 200)); + lVar1 = lVar2 + 0xb8; + if (*(long *)(lVar2 + 0xc0) != lVar1) { + iVar4 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0x108))(0,&local_78); + if (iVar4 < 0) goto LAB_0019306c; + lVar7 = *(long *)(lVar2 + 0xc0); + if (lVar7 != lVar1) { + do { + lVar8 = *(long *)(lVar7 + 0x20); + if ((lVar8 == 0) && (*(long *)(lVar7 + 0x28) == 0)) break; + if ((*(byte *)(lVar7 + 0x39) & 3) == 0) { + if ((local_78 < lVar8) || + ((lVar8 == local_78 && (lStack_70 / 1000 < *(long *)(lVar7 + 0x28))))) break; + *(byte *)(lVar7 + 0x39) = *(byte *)(lVar7 + 0x39) | 2; + iVar4 = libusb_cancel_transfer((long *)(lVar7 + 0x68)); + if (iVar4 == 0) { + *(byte *)(lVar7 + 0x39) = *(byte *)(lVar7 + 0x39) | 4; + } + else { + uVar9 = *(undefined8 *)(*(long *)(*(long *)(lVar7 + 0x68) + 0x40) + 0x30); + puVar6 = (undefined4 *)__errno(); + usbi_log(uVar9,2,"handle_timeout","async cancel failed %d errno=%d",iVar4,*puVar6); + } + } + lVar7 = *(long *)(lVar7 + 8); + } while (lVar7 != lVar1); + } + } + iVar4 = 0; +LAB_0019306c: + iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 200)); + if (*(long *)(lVar3 + 0x28) == local_68) { + return iVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar5); +} + + +================================================================== + +### FUNC 001930ac (1300 bytes) name=FUN_001930ac + +int FUN_001930ac(void *param_1,long *param_2) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + int iVar2; + bool bVar3; + bool bVar4; + int iVar5; + int iVar6; + void *pvVar7; + int *piVar8; + long *plVar9; + long *plVar10; + long lVar11; + undefined2 *puVar12; + long lVar13; + pollfd *__fds; + long lVar14; + long *__ptr; + + pvVar7 = pthread_getspecific(*(pthread_key_t *)((long)param_1 + 0x134)); + if (pvVar7 != (void *)0x0) { + return -6; + } + pthread_setspecific(*(pthread_key_t *)((long)param_1 + 0x134),param_1); + __mutex = (pthread_mutex_t *)((long)param_1 + 400); + pthread_mutex_lock(__mutex); + if ((*(byte *)((long)param_1 + 0x1b8) & 1) != 0) { + usbi_log(0,4,"handle_events","poll fds modified, reallocating"); + if (*(void **)((long)param_1 + 0x1d0) != (void *)0x0) { + free(*(void **)((long)param_1 + 0x1d0)); + *(undefined8 *)((long)param_1 + 0x1d0) = 0; + } + pvVar7 = calloc((ulong)*(uint *)((long)param_1 + 0x1d8),8); + *(void **)((long)param_1 + 0x1d0) = pvVar7; + if (pvVar7 == (void *)0x0) { + pthread_mutex_unlock(__mutex); + iVar6 = -0xb; + goto LAB_00193590; + } + lVar11 = *(long *)((long)param_1 + 0x1c8); + if (lVar11 != (long)param_1 + 0x1c0) { + puVar12 = (undefined2 *)((long)pvVar7 + 4); + do { + *(undefined4 *)(puVar12 + -2) = *(undefined4 *)(lVar11 + -8); + *puVar12 = *(undefined2 *)(lVar11 + -4); + lVar11 = *(long *)(lVar11 + 8); + puVar12 = puVar12 + 4; + } while (lVar11 != (long)param_1 + 0x1c0); + } + uVar1 = *(uint *)((long)param_1 + 0x1b8) & 0xfffffffe; + *(uint *)((long)param_1 + 0x1b8) = uVar1; + if ((((uVar1 == 0) && (*(int *)((long)param_1 + 0x1bc) == 0)) && + (*(long *)((long)param_1 + 0x1e8) == (long)param_1 + 0x1e0)) && + (*(long *)((long)param_1 + 0x1f8) == (long)param_1 + 0x1f0)) { + usbi_clear_event(param_1); + } + } + __fds = *(pollfd **)((long)param_1 + 0x1d0); + uVar1 = *(uint *)((long)param_1 + 0x1d8); + pthread_mutex_unlock(__mutex); + lVar11 = param_2[1]; + lVar13 = lVar11 / 1000 + (lVar11 >> 0x3f); + lVar14 = *(long *)PTR_usbi_backend_00501a30; + iVar5 = (int)((ulong)(*param_2 * 0x3e800000000) >> 0x20) + + ((int)lVar13 - (SUB164(SEXT816(lVar11) * SEXT816(0x20c49ba5e353f7cf),0xc) >> 0x1f)); + if (lVar11 + (lVar13 - (lVar11 >> 0x3f)) * -1000 != 0) { + iVar5 = iVar5 + 1; + } + do { + usbi_log(0,4,"handle_events","poll() %d fds with timeout in %dms",uVar1,iVar5); + iVar5 = poll(__fds,(ulong)uVar1,iVar5); + usbi_log(0,4,"handle_events","poll() returned %d",iVar5); + if (iVar5 == -1) { + piVar8 = (int *)__errno(); + if (*piVar8 == 4) { + iVar6 = -10; + } + else { + iVar5 = -1; +LAB_00193568: + usbi_log(param_1,1,"handle_events","poll failed %d err=%d",iVar5,*piVar8); + iVar6 = -1; + } + break; + } + if (iVar5 == 0) { + iVar6 = FUN_00192f0c(param_1); + break; + } + if (iVar5 < 0) { + piVar8 = (int *)__errno(); + goto LAB_00193568; + } + if (__fds->revents == 0) { + bVar4 = false; +LAB_001934d0: + iVar6 = (**(code **)(lVar14 + 0xf8))(param_1,__fds + 1,uVar1 - 1,iVar5); + if (iVar6 != 0) { + usbi_log(param_1,1,"handle_events","backend handle_events failed with error %d",iVar6); + break; + } + } + else { + usbi_log(0,4,"handle_events","caught a fish on the event pipe"); + pthread_mutex_lock(__mutex); + if ((*(uint *)((long)param_1 + 0x1b8) & 1) == 0) { + if ((*(uint *)((long)param_1 + 0x1b8) >> 1 & 1) == 0) goto LAB_00193304; +LAB_00193398: + usbi_log(0,4,"handle_events","someone purposely interrupted"); + *(uint *)((long)param_1 + 0x1b8) = *(uint *)((long)param_1 + 0x1b8) & 0xfffffffd; + iVar6 = *(int *)((long)param_1 + 0x1bc); + } + else { + usbi_log(0,4,"handle_events","someone updated the poll fds"); + if ((*(uint *)((long)param_1 + 0x1b8) >> 1 & 1) != 0) goto LAB_00193398; +LAB_00193304: + iVar6 = *(int *)((long)param_1 + 0x1bc); + } + if (iVar6 != 0) { + usbi_log(0,4,"handle_events","someone is closing a device"); + } + if (*(long *)((long)param_1 + 0x1e8) == (long)param_1 + 0x1e0) { + bVar4 = false; + __ptr = (long *)0x0; + } + else { + usbi_log(0,4,"handle_events","hotplug message received"); + plVar9 = *(long **)((long)param_1 + 0x1e8); + bVar4 = true; + plVar10 = (long *)plVar9[1]; + __ptr = plVar9 + -2; + *plVar10 = *plVar9; + *(long **)(*plVar9 + 8) = plVar10; + *plVar9 = 0; + plVar9[1] = 0; + } + while (plVar10 = *(long **)((long)param_1 + 0x1f8), plVar10 != (long *)((long)param_1 + 0x1f0) + ) { + plVar9 = (long *)plVar10[1]; + *plVar9 = *plVar10; + *(long **)(*plVar10 + 8) = plVar9; + *plVar10 = 0; + plVar10[1] = 0; + pthread_mutex_unlock(__mutex); + iVar6 = (**(code **)(lVar14 + 0x100))(plVar10 + -3); + if (iVar6 != 0) { + usbi_log(param_1,1,"handle_events", + "backend handle_transfer_completion failed with error %d",iVar6); + pthread_mutex_lock(__mutex); + bVar3 = false; + iVar2 = *(int *)((long)param_1 + 0x1b8); + goto joined_r0x00193488; + } + pthread_mutex_lock(__mutex); + } + iVar6 = 0; + bVar3 = true; + iVar2 = *(int *)((long)param_1 + 0x1b8); +joined_r0x00193488: + if (((iVar2 == 0) && (*(int *)((long)param_1 + 0x1bc) == 0)) && + ((*(long *)((long)param_1 + 0x1e8) == (long)param_1 + 0x1e0 && + (*(long **)((long)param_1 + 0x1f8) == (long *)((long)param_1 + 0x1f0))))) { + usbi_clear_event(param_1); + } + pthread_mutex_unlock(__mutex); + if (__ptr != (long *)0x0) { + usbi_hotplug_match(param_1,__ptr[1],(int)*__ptr); + if ((int)*__ptr == 2) { + libusb_unref_device(__ptr[1]); + } + free(__ptr); + } + if (!bVar3) break; + iVar5 = iVar5 + -1; + if (iVar5 != 0) goto LAB_001934d0; + } + iVar5 = 0; + iVar6 = 0; + } while (bVar4); +LAB_00193590: + pthread_setspecific(*(pthread_key_t *)((long)param_1 + 0x134),(void *)0x0); + return iVar6; +} + + +================================================================== + +### FUNC 001935c0 (8 bytes) name=libusb_handle_events_timeout + +void libusb_handle_events_timeout(undefined8 param_1,undefined8 param_2) + +{ + libusb_handle_events_timeout_completed(param_1,param_2,0); + return; +} + + +================================================================== + +### FUNC 001935c8 (88 bytes) name=libusb_handle_events + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void libusb_handle_events(undefined8 param_1) + +{ + long lVar1; + undefined8 local_40; + undefined8 uStack_38; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + uStack_38 = _UNK_0043bd58; + local_40 = _DAT_0043bd50; + libusb_handle_events_timeout_completed(param_1,&local_40,0); + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00193620 (92 bytes) name=libusb_handle_events_completed + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void libusb_handle_events_completed(undefined8 param_1,undefined8 param_2) + +{ + long lVar1; + undefined8 local_40; + undefined8 uStack_38; + long local_28; + + lVar1 = tpidr_el0; + local_28 = *(long *)(lVar1 + 0x28); + uStack_38 = _UNK_0043bd58; + local_40 = _DAT_0043bd50; + libusb_handle_events_timeout_completed(param_1,&local_40,param_2); + if (*(long *)(lVar1 + 0x28) == local_28) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0019367c (196 bytes) name=libusb_handle_events_locked + +void libusb_handle_events_locked(long param_1,long *param_2) + +{ + long lVar1; + long lVar2; + long lVar3; + bool bVar4; + int iVar5; + long lVar6; + long local_60; + long lStack_58; + long local_48; + long lStack_40; + long local_38; + + lVar3 = tpidr_el0; + local_38 = *(long *)(lVar3 + 0x28); + lVar2 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar2 = param_1; + } + iVar5 = libusb_get_next_timeout(lVar2,&local_48); + if (iVar5 == 0) { +LAB_001936f8: + lStack_40 = param_2[1]; + local_48 = *param_2; + } + else { + if ((local_48 == 0) && (lStack_40 == 0)) { + FUN_00192f0c(lVar2); + goto LAB_0019370c; + } + lVar6 = *param_2; + bVar4 = SBORROW8(local_48,lVar6); + lVar1 = local_48 - lVar6; + if (local_48 == lVar6) { + bVar4 = SBORROW8(lStack_40,param_2[1]); + lVar1 = lStack_40 - param_2[1]; + } + if (lVar1 < 0 == bVar4) goto LAB_001936f8; + } + local_60 = local_48; + lStack_58 = lStack_40; + FUN_001930ac(lVar2,&local_60); +LAB_0019370c: + if (*(long *)(lVar3 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 00193740 (8 bytes) name=libusb_pollfds_handle_timeouts + +undefined8 libusb_pollfds_handle_timeouts(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00193748 (508 bytes) name=libusb_get_next_timeout + +void libusb_get_next_timeout(long param_1,long *param_2) + +{ + pthread_mutex_t *__mutex; + long lVar1; + long lVar2; + long lVar3; + long lVar4; + bool bVar5; + int iVar6; + undefined4 *puVar7; + undefined8 uVar8; + char *pcVar9; + long lVar10; + long lVar11; + long local_58; + long lStack_50; + long local_48; + + lVar4 = tpidr_el0; + local_48 = *(long *)(lVar4 + 0x28); + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + __mutex = (pthread_mutex_t *)(lVar1 + 200); + pthread_mutex_lock(__mutex); + lVar10 = *(long *)(lVar1 + 0xc0); + if (lVar10 == lVar1 + 0xb8) { + pthread_mutex_unlock(__mutex); + pcVar9 = "no URBs, no timeout!"; + } + else { + for (; lVar10 != lVar1 + 0xb8; lVar10 = *(long *)(lVar10 + 8)) { + if ((*(byte *)(lVar10 + 0x39) & 3) == 0) { + lVar2 = *(long *)(lVar10 + 0x20); + lVar3 = *(long *)(lVar10 + 0x28); + lVar10 = 0; + if (lVar2 != 0 || lVar3 != 0) { + lVar10 = lVar3; + } + lVar11 = 0; + if (lVar2 != 0 || lVar3 != 0) { + lVar11 = lVar2; + } + goto LAB_00193804; + } + } + lVar10 = 0; + lVar11 = 0; +LAB_00193804: + pthread_mutex_unlock(__mutex); + if (lVar11 != 0 || lVar10 != 0) { + iVar6 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0x108))(0,&local_58); + if (iVar6 < 0) { + puVar7 = (undefined4 *)__errno(); + usbi_log(lVar1,1,"libusb_get_next_timeout","failed to read monotonic clock, errno=%d", + *puVar7); + uVar8 = 0; + } + else { + lStack_50 = lStack_50 / 1000; + bVar5 = SBORROW8(lVar11,local_58); + lVar11 = lVar11 - local_58; + lVar1 = lVar11; + if (lVar11 == 0) { + bVar5 = SBORROW8(lVar10,lStack_50); + lVar1 = lVar10 - lStack_50; + } + if (lVar11 == 0 && lVar10 == lStack_50 || lVar1 < 0 != bVar5) { + usbi_log(0,4,"libusb_get_next_timeout","first timeout already expired"); + *param_2 = 0; + param_2[1] = 0; + } + else { + lVar10 = lVar10 - lStack_50; + *param_2 = lVar11; + param_2[1] = lVar10; + if (lVar10 < 0) { + *param_2 = lVar11 + -1; + param_2[1] = lVar10 + 1000000; + } + usbi_log(0,4,"libusb_get_next_timeout","next timeout in %d.%06ds"); + } + uVar8 = 1; + } + goto LAB_00193918; + } + pcVar9 = "no URB with timeout or all handled by OS; no timeout!"; + } + usbi_log(0,4,"libusb_get_next_timeout",pcVar9); + uVar8 = 0; +LAB_00193918: + if (*(long *)(lVar4 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar8); + } + return; +} + + +================================================================== + +### FUNC 00193944 (32 bytes) name=libusb_set_pollfd_notifiers + +void libusb_set_pollfd_notifiers + (long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + long lVar1; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + *(undefined8 *)(lVar1 + 0xf0) = param_2; + *(undefined8 *)(lVar1 + 0xf8) = param_3; + *(undefined8 *)(lVar1 + 0x100) = param_4; + return; +} + + +================================================================== + +### FUNC 00193964 (148 bytes) name=libusb_get_pollfds + +long * libusb_get_pollfds(long param_1) + +{ + long lVar1; + uint uVar2; + long *plVar3; + long *plVar4; + long lVar5; + + lVar1 = *(long *)PTR_usbi_default_context_00501e08; + if (param_1 != 0) { + lVar1 = param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + uVar2 = *(uint *)(lVar1 + 0x1d8); + plVar4 = calloc((ulong)(uVar2 + 1),8); + if (plVar4 != (long *)0x0) { + plVar3 = plVar4; + for (lVar5 = *(long *)(lVar1 + 0x1c8); lVar5 != lVar1 + 0x1c0; lVar5 = *(long *)(lVar5 + 8)) { + *plVar3 = lVar5 + -8; + plVar3 = plVar3 + 1; + } + plVar4[uVar2] = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + return plVar4; +} + + +================================================================== + +### FUNC 001939f8 (12 bytes) name=libusb_free_pollfds + +void libusb_free_pollfds(void *param_1) + +{ + if (param_1 != (void *)0x0) { + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 00193a04 (356 bytes) name=usbi_handle_disconnect + +int usbi_handle_disconnect(long param_1) + +{ + byte bVar1; + int iVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + + usbi_log(0,4,"usbi_handle_disconnect","device %d.%d", + *(undefined1 *)(*(long *)(param_1 + 0x40) + 0x38), + *(undefined1 *)(*(long *)(param_1 + 0x40) + 0x48)); + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 200)); + lVar3 = *(long *)(param_1 + 0x40); + lVar4 = *(long *)(lVar3 + 0x30); + lVar5 = *(long *)(lVar4 + 0xc0); + if (lVar5 != lVar4 + 0xb8) { + lVar6 = *(long *)PTR_usbi_backend_00501a30; + do { + lVar4 = lVar5 + -8; + if (*(long *)(lVar5 + 0x68) == param_1) { + pthread_mutex_lock((pthread_mutex_t *)(lVar5 + 0x3c)); + bVar1 = *(byte *)(lVar5 + 0x38); + pthread_mutex_unlock((pthread_mutex_t *)(lVar5 + 0x3c)); + lVar3 = *(long *)(param_1 + 0x40); + if (((bVar1 & 1) == 0) || (lVar4 == 0)) goto LAB_00193b34; + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(lVar3 + 0x30) + 200)); + usbi_log(0,4,"usbi_handle_disconnect","cancelling transfer %p from disconnect",lVar5 + 0x68) + ; + pthread_mutex_lock((pthread_mutex_t *)(lVar5 + 0x3c)); + (**(code **)(lVar6 + 0xf0))(lVar4); + pthread_mutex_unlock((pthread_mutex_t *)(lVar5 + 0x3c)); + usbi_handle_transfer_completion(lVar4,5); + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 200)); + lVar3 = *(long *)(param_1 + 0x40); + lVar4 = *(long *)(lVar3 + 0x30); + lVar5 = *(long *)(lVar4 + 0xc0); + } + else { +LAB_00193b34: + lVar4 = *(long *)(lVar3 + 0x30); + lVar5 = *(long *)(lVar5 + 8); + } + } while (lVar5 != lVar4 + 0xb8); + } + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)(lVar4 + 200)); + return iVar2; +} + + +================================================================== + +### FUNC 00193b68 (588 bytes) name=libusb_control_transfer + +int libusb_control_transfer + (long param_1,char param_2,char param_3,undefined2 param_4,undefined2 param_5, + void *param_6,ushort param_7,undefined4 param_8) + +{ + ushort uVar1; + long lVar2; + int iVar3; + void *pvVar4; + long *plVar5; + char *pcVar6; + undefined8 uVar7; + int *piVar8; + undefined8 uVar9; + undefined4 local_6c; + long local_68; + + lVar2 = tpidr_el0; + local_68 = *(long *)(lVar2 + 0x28); + local_6c = 0; + pvVar4 = pthread_getspecific(*(pthread_key_t *) + (*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 0x134)); + if (pvVar4 == (void *)0x0) { + plVar5 = (long *)libusb_alloc_transfer(); + if (plVar5 == (long *)0x0) { + iVar3 = -0xb; + } + else { + pcVar6 = malloc((ulong)param_7 + 8); + if (pcVar6 == (char *)0x0) { + libusb_free_transfer(plVar5); + iVar3 = -0xb; + } + else { + *pcVar6 = param_2; + pcVar6[1] = param_3; + *(undefined2 *)(pcVar6 + 2) = param_4; + *(undefined2 *)(pcVar6 + 4) = param_5; + *(ushort *)(pcVar6 + 6) = param_7; + if (-1 < param_2) { + memcpy(pcVar6 + 8,param_6,(ulong)param_7); + } + *plVar5 = param_1; + *(undefined2 *)((long)plVar5 + 9) = 0; + *(undefined4 *)((long)plVar5 + 0xc) = param_8; + plVar5[6] = (long)pcVar6; + uVar1 = *(ushort *)(pcVar6 + 6); + plVar5[4] = (long)FUN_00193db4; + plVar5[5] = (long)&local_6c; + *(uint *)((long)plVar5 + 0x14) = uVar1 + 8; + *(undefined1 *)(plVar5 + 1) = 2; + iVar3 = libusb_submit_transfer(plVar5); + if (-1 < iVar3) { + piVar8 = (int *)plVar5[5]; + if (*piVar8 == 0) { + uVar9 = *(undefined8 *)(*(long *)(*plVar5 + 0x40) + 0x30); + do { + iVar3 = libusb_handle_events_completed(uVar9,piVar8); + if ((iVar3 < 0) && (iVar3 != -10)) { + uVar7 = libusb_error_name(); + usbi_log(uVar9,1,"sync_transfer_wait_for_completion", + "libusb_handle_events failed: %s, cancelling transfer and retrying",uVar7); + libusb_cancel_transfer(plVar5); + } + } while (*piVar8 == 0); + } + if (param_2 < '\0') { + memcpy(param_6,(void *)(plVar5[6] + 8),(long)(int)plVar5[3]); + } + iVar3 = -7; + switch((int)plVar5[2]) { + case 0: + iVar3 = (int)plVar5[3]; + break; + case 1: + case 3: + iVar3 = -1; + break; + case 2: + break; + case 4: + iVar3 = -9; + break; + case 5: + iVar3 = -4; + break; + case 6: + iVar3 = -8; + break; + default: + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),2,"libusb_control_transfer", + "unrecognised status code %d"); + iVar3 = -99; + } + } + libusb_free_transfer(plVar5); + } + } + } + else { + iVar3 = -6; + } + if (*(long *)(lVar2 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar3; +} + + +================================================================== + +### FUNC 00193db4 (44 bytes) name=FUN_00193db4 + +void FUN_00193db4(long param_1) + +{ + **(undefined4 **)(param_1 + 0x28) = 1; + usbi_log(0,4,"sync_transfer_cb","actual_length=%d",*(undefined4 *)(param_1 + 0x18)); + return; +} + + +================================================================== + +### FUNC 00193de0 (8 bytes) name=libusb_bulk_transfer + +void libusb_bulk_transfer(void) + +{ + FUN_00193de8(); + return; +} + + +================================================================== + +### FUNC 00193de8 (428 bytes) name=FUN_00193de8 + +int FUN_00193de8(long param_1,undefined1 param_2,long param_3,undefined4 param_4,undefined4 *param_5 + ,undefined4 param_6,undefined1 param_7) + +{ + long lVar1; + int iVar2; + void *pvVar3; + long *plVar4; + undefined8 uVar5; + int *piVar6; + undefined8 uVar7; + undefined4 local_6c; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + local_6c = 0; + pvVar3 = pthread_getspecific(*(pthread_key_t *) + (*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 0x134)); + if (pvVar3 == (void *)0x0) { + plVar4 = (long *)libusb_alloc_transfer(); + if (plVar4 == (long *)0x0) { + iVar2 = -0xb; + } + else { + *plVar4 = param_1; + *(undefined1 *)((long)plVar4 + 9) = param_2; + *(undefined4 *)((long)plVar4 + 0xc) = param_6; + *(undefined4 *)((long)plVar4 + 0x14) = param_4; + plVar4[4] = (long)FUN_00193db4; + plVar4[5] = (long)&local_6c; + plVar4[6] = param_3; + *(undefined1 *)((long)plVar4 + 10) = param_7; + iVar2 = libusb_submit_transfer(plVar4); + if (-1 < iVar2) { + piVar6 = (int *)plVar4[5]; + if (*piVar6 == 0) { + uVar7 = *(undefined8 *)(*(long *)(*plVar4 + 0x40) + 0x30); + do { + iVar2 = libusb_handle_events_completed(uVar7,piVar6); + if ((iVar2 < 0) && (iVar2 != -10)) { + uVar5 = libusb_error_name(); + usbi_log(uVar7,1,"sync_transfer_wait_for_completion", + "libusb_handle_events failed: %s, cancelling transfer and retrying",uVar5); + libusb_cancel_transfer(plVar4); + } + } while (*piVar6 == 0); + } + if (param_5 != (undefined4 *)0x0) { + *param_5 = (int)plVar4[3]; + } + if (*(uint *)(plVar4 + 2) < 7) { + iVar2 = *(int *)(&DAT_0043c390 + (long)(int)*(uint *)(plVar4 + 2) * 4); + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),2,"do_sync_bulk_transfer", + "unrecognised status code %d"); + iVar2 = -99; + } + } + libusb_free_transfer(plVar4); + } + } + else { + iVar2 = -6; + } + if (*(long *)(lVar1 + 0x28) == local_68) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00193f94 (8 bytes) name=libusb_interrupt_transfer + +void libusb_interrupt_transfer(void) + +{ + FUN_00193de8(); + return; +} + + +================================================================== + +### FUNC 00193f9c (512 bytes) name=linux_get_device_address + +void linux_get_device_address + (undefined8 param_1,int param_2,undefined1 *param_3,undefined1 *param_4,char *param_5 + ,long param_6,uint param_7) + +{ + long lVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + ssize_t sVar5; + char *__format; + char acStack_2068 [4096]; + char acStack_1068 [4096]; + long local_68; + + lVar1 = tpidr_el0; + local_68 = *(long *)(lVar1 + 0x28); + usbi_log(0,4,"linux_get_device_address","getting address for device: %s detached: %d",param_6, + param_2); + if (((param_6 == 0) || (param_2 != 0)) || (DAT_005028fc == 0)) { + if ((param_5 == (char *)0x0) && (-1 < (int)param_7)) { + param_5 = acStack_2068; + snprintf(acStack_1068,0x1000,"/proc/self/fd/%d",(ulong)param_7); + sVar5 = readlink(acStack_1068,acStack_2068,0x1000); + if (0 < sVar5) { +LAB_001940d8: + iVar3 = strncmp(param_5,"/dev/bus/usb",0xc); + if (iVar3 == 0) { + __format = "/dev/bus/usb/%hhu/%hhu"; + } + else { + iVar3 = strncmp(param_5,"/proc/bus/usb",0xd); + if (iVar3 != 0) goto LAB_00194108; + __format = "/proc/bus/usb/%hhu/%hhu"; + } + sscanf(param_5,__format,param_3,param_4); + goto LAB_00194160; + } + } + else if (param_5 != (char *)0x0) goto LAB_001940d8; +LAB_00194108: + uVar4 = 0xffffff9d; + } + else { + usbi_log(0,4,"linux_get_device_address","scan %s",param_6); + uVar4 = FUN_0019419c(param_1,param_6,"busnum"); + if ((int)uVar4 < 0) goto LAB_00194164; + if (0xff < (int)uVar4) { +LAB_00194084: + uVar4 = 0xfffffffe; + goto LAB_00194164; + } + *param_3 = (char)uVar4; + uVar4 = FUN_0019419c(param_1,param_6,"devnum"); + uVar2 = (uint)uVar4; + if ((int)uVar2 < 0) goto LAB_00194164; + if (0xff < (int)uVar2) goto LAB_00194084; + *param_4 = (char)uVar4; + usbi_log(0,4,"linux_get_device_address","bus=%d dev=%d",*param_3,uVar2 & 0xff); +LAB_00194160: + uVar4 = 0; + } +LAB_00194164: + if (*(long *)(lVar1 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); + } + return; +} + + +================================================================== + +### FUNC 0019419c (368 bytes) name=FUN_0019419c + +void FUN_0019419c(undefined8 param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + int iVar2; + int iVar3; + FILE *__stream; + int *piVar4; + undefined4 *puVar5; + long lVar6; + int local_105c; + char acStack_1058 [4104]; + + lVar1 = tpidr_el0; + lVar6 = *(long *)(lVar1 + 0x28); + snprintf(acStack_1058,0x1000,"%s/%s/%s","/sys/bus/usb/devices",param_2,param_3); + __stream = fopen(acStack_1058,"r"); + if (__stream == (FILE *)0x0) { + piVar4 = (int *)__errno(); + if (*piVar4 == 2) { + local_105c = -4; + goto LAB_001942d8; + } + usbi_log(param_1,1,"__read_sysfs_attr","open %s failed errno=%d",acStack_1058); + } + else { + iVar2 = fscanf(__stream,"%d",&local_105c); + iVar3 = fclose(__stream); + if (iVar2 != 1) { + puVar5 = (undefined4 *)__errno(iVar3); + usbi_log(param_1,1,"__read_sysfs_attr","fscanf %s returned %d, errno=%d",param_3,iVar2,*puVar5 + ); + local_105c = -4; + goto LAB_001942d8; + } + if (-1 < local_105c) goto LAB_001942d8; + usbi_log(param_1,1,"__read_sysfs_attr","%s contains a negative value",acStack_1058); + } + local_105c = -1; +LAB_001942d8: + if (*(long *)(lVar1 + 0x28) == lVar6) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(local_105c); +} + + +================================================================== + +### FUNC 0019430c (848 bytes) name=linux_enumerate_device + +int linux_enumerate_device(undefined8 param_1,uint param_2,uint param_3,char *param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + long lVar4; + bool bVar5; + int iVar6; + long lVar7; + char *pcVar8; + char *pcVar9; + undefined8 uVar10; + long lVar11; + long lVar12; + char *local_78; + undefined1 local_70 [4]; + undefined1 local_6c [4]; + long local_68; + + lVar4 = tpidr_el0; + local_68 = *(long *)(lVar4 + 0x28); + uVar1 = param_3 & 0xff; + uVar2 = param_2 & 0xff; + uVar3 = uVar1 | uVar2 << 8; + usbi_log(0,4,"linux_enumerate_device","busnum %d devaddr %d session_id %ld",uVar2,uVar1,uVar3); + lVar7 = usbi_get_device_by_session_id(param_1,uVar3); + if (lVar7 == 0) { + usbi_log(0,4,"linux_enumerate_device","allocating new device for %d/%d (session %ld)",uVar2, + uVar1,uVar3); + lVar7 = usbi_alloc_device(param_1,uVar3); + if (lVar7 == 0) { + iVar6 = -0xb; + goto LAB_001943c0; + } + iVar6 = FUN_0019465c(lVar7,param_2,param_3,param_4,0xffffffff); + if ((iVar6 < 0) || (iVar6 = usbi_sanitize_device(lVar7), iVar6 < 0)) { +LAB_00194624: + libusb_unref_device(lVar7); + goto LAB_001943c0; + } + if (param_4 != (char *)0x0) { + lVar12 = *(long *)(lVar7 + 0x30); + iVar6 = strncmp(param_4,"usb",3); + if (iVar6 != 0) { + pcVar8 = strdup(param_4); + local_78 = pcVar8; + if (pcVar8 != (char *)0x0) { + pcVar9 = strrchr(pcVar8,0x2e); + if ((pcVar9 == (char *)0x0) && (pcVar9 = strrchr(pcVar8,0x2d), pcVar9 == (char *)0x0)) { + usbi_log(lVar12,2,"linux_get_parent_info","Can not parse sysfs_dir: %s, no parent info", + pcVar8); + goto LAB_00194610; + } + iVar6 = atoi(pcVar9 + 1); + pcVar8 = local_78; + *(char *)(lVar7 + 0x39) = (char)iVar6; + *pcVar9 = '\0'; + pcVar9 = strchr(local_78,0x2d); + if (pcVar9 != (char *)0x0) { +LAB_001944f8: + bVar5 = true; + do { + pthread_mutex_lock((pthread_mutex_t *)(lVar12 + 0x20)); + pcVar8 = local_78; + for (lVar11 = *(long *)(lVar12 + 0x18); lVar11 != lVar12 + 0x10; + lVar11 = *(long *)(lVar11 + 8)) { + if ((*(char **)(lVar11 + 0x30) != (char *)0x0) && + (iVar6 = strcmp(*(char **)(lVar11 + 0x30),pcVar8), iVar6 == 0)) { + uVar10 = libusb_ref_device(lVar11 + -0x50); + *(undefined8 *)(lVar7 + 0x40) = uVar10; + break; + } + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar12 + 0x20)); + if ((!bVar5) || (*(long *)(lVar7 + 0x40) != 0)) goto LAB_001945dc; + usbi_log(0,4,"linux_get_parent_info", + "parent_dev %s not enumerated yet, enumerating now",local_78); + pcVar8 = local_78; + iVar6 = linux_get_device_address(lVar12,0,local_6c,local_70,0,local_78,0xffffffff); + if (iVar6 == 0) { + linux_enumerate_device(lVar12,local_6c[0],local_70[0],pcVar8); + } + bVar5 = false; + } while( true ); + } + iVar6 = asprintf(&local_78,"usb%s",pcVar8); + free(pcVar8); + if (-1 < iVar6) goto LAB_001944f8; + } + iVar6 = -0xb; + goto LAB_00194624; + } + } +LAB_00194614: + usbi_connect_device(lVar7); + } + else { + usbi_log(0,4,"linux_enumerate_device","session_id %ld already exists",uVar3); + libusb_unref_device(lVar7); + } + iVar6 = 0; +LAB_001943c0: + if (*(long *)(lVar4 + 0x28) == local_68) { + return iVar6; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +LAB_001945dc: + usbi_log(0,4,"linux_get_parent_info","Dev %p (%s) has parent %p (%s) port %d",lVar7,param_4, + *(long *)(lVar7 + 0x40),local_78,*(undefined1 *)(lVar7 + 0x39)); + pcVar8 = local_78; +LAB_00194610: + free(pcVar8); + goto LAB_00194614; +} + + +================================================================== + +### FUNC 0019465c (1004 bytes) name=FUN_0019465c + +int FUN_0019465c(long param_1,undefined1 param_2,undefined1 param_3,char *param_4,int param_5) + +{ + int iVar1; + ulong uVar2; + long lVar3; + int iVar4; + int iVar5; + char *pcVar6; + undefined4 *puVar7; + __off_t _Var8; + void *pvVar9; + ssize_t sVar10; + undefined4 uVar11; + uint uVar12; + undefined8 uVar13; + void *__ptr; + long lVar14; + ulong uVar15; + char acStack_1068 [5]; + byte local_1063; + long local_68; + + lVar3 = tpidr_el0; + local_68 = *(long *)(lVar3 + 0x28); + uVar13 = *(undefined8 *)(param_1 + 0x30); + *(undefined1 *)(param_1 + 0x38) = param_2; + *(undefined1 *)(param_1 + 0x48) = param_3; + if (param_4 == (char *)0x0) { +LAB_001947c0: + if (param_5 < 0) { + iVar4 = FUN_00196af0(param_1,0,0); + goto LAB_00194824; + } + _Var8 = lseek(param_5,0,0); + iVar4 = param_5; + if (_Var8 < 0) { + puVar7 = (undefined4 *)__errno(); + usbi_log(uVar13,1,"initialize_device","seek failed ret=%d errno=%d",_Var8,*puVar7); + iVar4 = -1; + goto LAB_00194a0c; + } + } + else { + pcVar6 = strdup(param_4); + *(char **)(param_1 + 0x80) = pcVar6; + if (pcVar6 == (char *)0x0) { +LAB_001948f0: + iVar4 = -0xb; + goto LAB_00194a0c; + } + iVar4 = FUN_0019419c(*(undefined8 *)(param_1 + 0x30),param_4,"speed"); + if (-1 < iVar4) { + if (iVar4 < 0x1e0) { + uVar11 = 1; + if (iVar4 != 1) { + if (iVar4 != 0xc) { +LAB_00194710: + usbi_log(*(undefined8 *)(param_1 + 0x30),2,"initialize_device", + "Unknown device speed: %d Mbps",iVar4); + goto LAB_0019473c; + } + uVar11 = 2; + } + } + else if (iVar4 == 0x1e0) { + uVar11 = 3; + } + else { + if (iVar4 != 5000) goto LAB_00194710; + uVar11 = 4; + } + *(undefined4 *)(param_1 + 0x4c) = uVar11; + } +LAB_0019473c: + if (DAT_00502900 == 0) goto LAB_001947c0; + snprintf(acStack_1068,0x1000,"%s/%s/%s","/sys/bus/usb/devices",*(undefined8 *)(param_1 + 0x80), + "descriptors"); + iVar4 = open(acStack_1068,0); + if (iVar4 < 0) { + uVar13 = *(undefined8 *)(param_1 + 0x30); + puVar7 = (undefined4 *)__errno(); + usbi_log(uVar13,1,"_open_sysfs_attr","open %s failed ret=%d errno=%d",acStack_1068,iVar4, + *puVar7); + iVar4 = -1; + goto LAB_00194a0c; + } +LAB_00194824: + if (iVar4 < 0) goto LAB_00194a0c; + } + uVar15 = 0x200; + do { + __ptr = *(void **)(param_1 + 0x88); + uVar2 = (uVar15 & 0xffffffff) << 1; + uVar15 = -(uVar15 >> 0x1f & 1) & 0xfffffffe00000000 | uVar2; + iVar5 = (int)uVar2; + pvVar9 = realloc(__ptr,(long)iVar5); + if (pvVar9 == (void *)0x0) { + free(__ptr); + *(undefined8 *)(param_1 + 0x88) = 0; + if (iVar4 == param_5) goto LAB_001948f0; + close(iVar4); + iVar4 = -0xb; + goto LAB_00194a0c; + } + iVar1 = *(int *)(param_1 + 0x90); + lVar14 = (long)iVar1; + *(void **)(param_1 + 0x88) = pvVar9; + if ((param_4 == (char *)0x0) || (DAT_00502900 == 0)) { + memset((void *)((long)pvVar9 + lVar14),0,uVar15 - lVar14); + } + sVar10 = read(iVar4,(void *)((long)pvVar9 + lVar14),(long)(iVar5 - iVar1)); + if (sVar10 < 0) { + puVar7 = (undefined4 *)__errno(); + usbi_log(uVar13,1,"initialize_device","read descriptor failed ret=%d errno=%d",iVar4,*puVar7); + if (iVar4 == param_5) { + iVar4 = -1; + } + else { + close(iVar4); + iVar4 = -1; + } + goto LAB_00194a0c; + } + iVar1 = (int)sVar10 + *(int *)(param_1 + 0x90); + *(int *)(param_1 + 0x90) = iVar1; + } while (iVar5 == iVar1); + if (iVar4 != param_5) { + close(iVar4); + iVar1 = *(int *)(param_1 + 0x90); + } + if (iVar1 < 0x12) { + usbi_log(uVar13,1,"initialize_device","short descriptor read (%d)"); + iVar4 = -1; + } + else if ((param_4 == (char *)0x0) || (DAT_005028fc == 0)) { + if (param_5 < 0) { + iVar5 = FUN_00196af0(param_1,2,1); + if (iVar5 < 0) { + usbi_log(uVar13,2,"initialize_device", + "Missing rw usbfs access; cannot determine active configuration descriptor"); + if (*(int *)(param_1 + 0x90) < 0x1b) { + uVar12 = 0xffffffff; + } + else { + usbi_parse_descriptor(*(long *)(param_1 + 0x88) + 0x12,&DAT_0043ba7c,acStack_1068,0); + uVar12 = (uint)local_1063; + } + iVar4 = 0; + *(uint *)(param_1 + 0x94) = uVar12; + } + else { + iVar4 = FUN_00196c88(param_1,iVar5); + close(iVar5); + } + } + else { + iVar4 = FUN_00196c88(param_1,param_5); + } + } + else { + iVar4 = 0; + } +LAB_00194a0c: + if (*(long *)(lVar3 + 0x28) != local_68) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar4; +} + + +================================================================== + +### FUNC 00194a48 (132 bytes) name=linux_hotplug_enumerate + +int linux_hotplug_enumerate(undefined4 param_1,undefined4 param_2,undefined8 param_3) + +{ + undefined *puVar1; + int iVar2; + undefined *puVar3; + + pthread_mutex_lock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + puVar1 = PTR_active_contexts_list_00501b88; + for (puVar3 = *(undefined **)(PTR_active_contexts_list_00501b88 + 8); puVar3 != puVar1; + puVar3 = *(undefined **)(puVar3 + 8)) { + linux_enumerate_device(puVar3 + -0x200,param_1,param_2,param_3); + } + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + return iVar2; +} + + +================================================================== + +### FUNC 00194acc (196 bytes) name=linux_device_disconnected + +int linux_device_disconnected(uint param_1,uint param_2) + +{ + uint uVar1; + undefined *puVar2; + int iVar3; + long lVar4; + undefined *puVar5; + + pthread_mutex_lock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + puVar2 = PTR_active_contexts_list_00501b88; + puVar5 = *(undefined **)(PTR_active_contexts_list_00501b88 + 8); + if (puVar5 != PTR_active_contexts_list_00501b88) { + uVar1 = param_2 & 0xff | (param_1 & 0xff) << 8; + do { + lVar4 = usbi_get_device_by_session_id(puVar5 + -0x200,uVar1); + if (lVar4 == 0) { + usbi_log(0,4,"linux_device_disconnected","device not found for session %x",uVar1); + } + else { + usbi_disconnect_device(lVar4); + libusb_unref_device(lVar4); + } + puVar5 = *(undefined **)(puVar5 + 8); + } while (puVar5 != puVar2); + } + iVar3 = pthread_mutex_unlock((pthread_mutex_t *)PTR_active_contexts_lock_00501e28); + return iVar3; +} + + +================================================================== + +### FUNC 00194b90 (1624 bytes) name=FUN_00194b90 + +void FUN_00194b90(undefined8 param_1) + +{ + char *pcVar1; + long lVar2; + undefined *__mutex; + int iVar3; + DIR *pDVar4; + dirent *pdVar5; + undefined4 *puVar6; + undefined8 uVar7; + char *pcVar8; + long lVar9; + int local_1ec; + int local_1e8; + int local_1e4; + utsname uStack_1e0; + + lVar2 = tpidr_el0; + lVar9 = *(long *)(lVar2 + 0x28); + pDVar4 = opendir("/dev/bus/usb"); + if (pDVar4 == (DIR *)0x0) { +LAB_00194c0c: + pDVar4 = opendir("/proc/bus/usb"); + if (pDVar4 == (DIR *)0x0) { +LAB_00194c54: + pDVar4 = opendir("/dev"); + if (pDVar4 == (DIR *)0x0) { + pcVar8 = (char *)0x0; + } + else { + pdVar5 = readdir(pDVar4); + while (pdVar5 != (dirent *)0x0) { + iVar3 = sscanf(pdVar5->d_name,"usbdev%d.%d",&uStack_1e0,&local_1e4); + if (iVar3 == 2) { + usbi_log(0,4,"_is_usbdev_entry","found: %s",pdVar5->d_name); + pcVar8 = "/dev"; + DAT_00531e10 = 1; + goto LAB_00194cec; + } + pdVar5 = readdir(pDVar4); + } + pcVar8 = (char *)0x0; +LAB_00194cec: + closedir(pDVar4); + } + } + else { + do { + pdVar5 = readdir(pDVar4); + if (pdVar5 == (dirent *)0x0) { + closedir(pDVar4); + goto LAB_00194c54; + } + } while (pdVar5->d_name[0] == '.'); + closedir(pDVar4); + pcVar8 = "/proc/bus/usb"; + } + } + else { + do { + pdVar5 = readdir(pDVar4); + if (pdVar5 == (dirent *)0x0) { + closedir(pDVar4); + goto LAB_00194c0c; + } + } while (pdVar5->d_name[0] == '.'); + closedir(pDVar4); + pcVar8 = "/dev/bus/usb"; + } + pcVar1 = "/dev/bus/usb"; + if (pcVar8 != (char *)0x0) { + pcVar1 = pcVar8; + } + usbi_log(0,4,"find_usbfs_path","found usbfs at %s",pcVar1); + DAT_00531e18 = pcVar1; + if (DAT_00502904 == 0xffffffff) { + iVar3 = clock_gettime(1,(timespec *)&uStack_1e0); + if (iVar3 != 0) { + puVar6 = (undefined4 *)__errno(); + usbi_log(0,4,"find_monotonic_clock","monotonic clock doesn\'t work, errno %d",*puVar6); + } + DAT_00502904 = (uint)(iVar3 == 0); + } + if (DAT_00502908 == 0xffffffff) { + iVar3 = uname(&uStack_1e0); + if ((iVar3 < 0) || + (iVar3 = sscanf(uStack_1e0.release,"%d.%d.%d",&local_1e4,&local_1e8,&local_1ec), iVar3 < 1)) + { + DAT_00502908 = 0xffffffff; + } + else if (local_1e4 < 3) { + DAT_00502908 = 0; + if ((1 < iVar3) && (local_1e4 == 2)) { + if (6 < local_1e8) goto LAB_00194dc4; + DAT_00502908 = 0; + if ((2 < iVar3) && (local_1e8 == 6)) { + DAT_00502908 = (uint)(0x1f < local_1ec); + } + } + } + else { +LAB_00194dc4: + DAT_00502908 = 1; + } + if (DAT_00502908 != 0xffffffff) goto LAB_00194ddc; + pcVar8 = "error checking for bulk continuation support"; +LAB_00195098: + usbi_log(param_1,1,"op_init",pcVar8); + uVar7 = 0xffffff9d; + goto LAB_001950a8; + } +LAB_00194ddc: + if (DAT_00502908 != 0) { + usbi_log(0,4,"op_init","bulk continuation flag supported"); + } + if (DAT_0050290c == 0xffffffff) { + iVar3 = uname(&uStack_1e0); + if ((iVar3 < 0) || + (iVar3 = sscanf(uStack_1e0.release,"%d.%d.%d",&local_1e4,&local_1e8,&local_1ec), iVar3 < 1)) + { + DAT_0050290c = 0xffffffff; + } + else if (local_1e4 < 3) { + DAT_0050290c = 0; + if ((1 < iVar3) && (local_1e4 == 2)) { + if (6 < local_1e8) goto LAB_00194e4c; + DAT_0050290c = 0; + if ((2 < iVar3) && (local_1e8 == 6)) { + DAT_0050290c = (uint)(0x1e < local_1ec); + } + } + } + else { +LAB_00194e4c: + DAT_0050290c = 1; + } + if (DAT_0050290c == 0xffffffff) { + pcVar8 = "error checking for zero length packet support"; + goto LAB_00195098; + } + } + if (DAT_0050290c != 0) { + usbi_log(0,4,"op_init","zero length packet flag supported"); + } + if (DAT_00502900 == 0xffffffff) { + iVar3 = uname(&uStack_1e0); + if ((iVar3 < 0) || + (iVar3 = sscanf(uStack_1e0.release,"%d.%d.%d",&local_1e4,&local_1e8,&local_1ec), iVar3 < 1)) + { + DAT_00502900 = 0xffffffff; + } + else if (local_1e4 < 3) { + DAT_00502900 = 0; + if ((1 < iVar3) && (DAT_00502900 = 0, local_1e4 == 2)) { + if (6 < local_1e8) goto LAB_00194ed4; + DAT_00502900 = 0; + if ((2 < iVar3) && (local_1e8 == 6)) { + DAT_00502900 = (uint)(0x19 < local_1ec); + } + } + } + else { +LAB_00194ed4: + DAT_00502900 = 1; + } + if (DAT_00502900 == 0xffffffff) { + pcVar8 = "error checking for sysfs descriptors"; + goto LAB_00195098; + } + } + if (DAT_005028fc == 0xffffffff) { + iVar3 = uname(&uStack_1e0); + if ((iVar3 < 0) || + (iVar3 = sscanf(uStack_1e0.release,"%d.%d.%d",&local_1e4,&local_1e8,&local_1ec), iVar3 < 1)) + { + DAT_005028fc = 0xffffffff; + } + else if (local_1e4 < 3) { + DAT_005028fc = 0; + if ((1 < iVar3) && (DAT_005028fc = 0, local_1e4 == 2)) { + if (6 < local_1e8) goto LAB_00194f9c; + DAT_005028fc = 0; + if ((2 < iVar3) && (local_1e8 == 6)) { + DAT_005028fc = (uint)(0x15 < local_1ec); + } + } + } + else { +LAB_00194f9c: + DAT_005028fc = 1; + } + if (DAT_005028fc == 0xffffffff) { + pcVar8 = "error checking for sysfs busnum"; + goto LAB_00195098; + } + if (DAT_00502900 != 0 || DAT_005028fc != 0) goto LAB_00194f04; +joined_r0x00194fc0: + if (DAT_005028fc != 0) { + usbi_log(0,4,"op_init","sysfs can relate devices"); + } + if (DAT_00502900 != 0) { + usbi_log(0,4,"op_init","sysfs has complete descriptors"); + } + } + else { + if (DAT_00502900 == 0 && DAT_005028fc == 0) goto joined_r0x00194fc0; +LAB_00194f04: + iVar3 = stat("/sys/bus/usb/devices",(stat *)&uStack_1e0); + if ((iVar3 == 0) && ((uStack_1e0.sysname._16_4_ & 0xf000) == 0x4000)) goto joined_r0x00194fc0; + usbi_log(param_1,2,"op_init","sysfs not mounted"); + DAT_005028fc = 0; + DAT_00502900 = 0; + } + pthread_mutex_lock((pthread_mutex_t *)&DAT_00531e20); + __mutex = PTR_linux_hotplug_lock_00501b58; + pthread_mutex_lock((pthread_mutex_t *)PTR_linux_hotplug_lock_00501b58); + pthread_mutex_unlock((pthread_mutex_t *)__mutex); + DAT_00531e48 = DAT_00531e48 + 1; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531e20); + uVar7 = 0; +LAB_001950a8: + if (*(long *)(lVar2 + 0x28) != lVar9) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar7); + } + return; +} + + +================================================================== + +### FUNC 001951e8 (60 bytes) name=FUN_001951e8 + +int FUN_001951e8(void) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)&DAT_00531e20); + DAT_00531e48 = DAT_00531e48 + -1; + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00531e20); + return iVar1; +} + + +================================================================== + +### FUNC 00195224 (4 bytes) name=FUN_00195224 + +void FUN_00195224(void) + +{ + return; +} + + +================================================================== + +### FUNC 00195228 (360 bytes) name=FUN_00195228 + +int FUN_00195228(undefined8 param_1,long param_2,int param_3) + +{ + long lVar1; + int iVar2; + long lVar3; + undefined4 *puVar4; + undefined1 local_58 [8]; + undefined1 local_50 [4]; + undefined1 local_4c [4]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + iVar2 = linux_get_device_address(param_1,1,local_4c,local_50,0,0,param_3); + if (iVar2 < 0) { + iVar2 = ioctl(param_3,0x40085511,local_58); + if (iVar2 < 0) { + puVar4 = (undefined4 *)__errno(); + usbi_log(param_1,1,"op_wrap_fd","connectinfo failed (%d)",*puVar4); + iVar2 = -1; + goto LAB_00195360; + } + local_4c[0] = 0; + local_50[0] = local_58[0]; + } + usbi_log(0,4,"op_wrap_fd","allocating new device for fd %d",param_3); + lVar3 = usbi_alloc_device(param_1,0); + if (lVar3 == 0) { + iVar2 = -0xb; + } + else { + iVar2 = FUN_0019465c(lVar3,local_4c[0],local_50[0],0,param_3); + if (-1 < iVar2) { + iVar2 = usbi_sanitize_device(lVar3); + if (-1 < iVar2) { + *(undefined4 *)(lVar3 + 0x7c) = 1; + *(long *)(param_2 + 0x40) = lVar3; + iVar2 = FUN_00196d80(param_2,param_3); + *(undefined4 *)(param_2 + 0x54) = 1; + if (-1 < iVar2) goto LAB_00195360; + } + } + libusb_unref_device(lVar3); + } +LAB_00195360: + if (*(long *)(lVar1 + 0x28) == local_48) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00195390 (184 bytes) name=FUN_00195390 + +int FUN_00195390(long param_1) + +{ + int __fd; + int iVar1; + + __fd = FUN_00196af0(*(undefined8 *)(param_1 + 0x40),2,0); + if (__fd < 0) { + iVar1 = __fd; + if (__fd == -4) { + pthread_mutex_lock((pthread_mutex_t *)PTR_linux_hotplug_lock_00501b58); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) != 0) { + usbi_log(0,4,"op_open","open failed with no device, but device still attached"); + linux_device_disconnected + (*(undefined1 *)(*(long *)(param_1 + 0x40) + 0x38), + *(undefined1 *)(*(long *)(param_1 + 0x40) + 0x48)); + } + pthread_mutex_unlock((pthread_mutex_t *)PTR_linux_hotplug_lock_00501b58); + iVar1 = -4; + } + } + else { + iVar1 = FUN_00196d80(param_1,__fd); + if (iVar1 < 0) { + close(__fd); + } + } + return iVar1; +} + + +================================================================== + +### FUNC 00195448 (84 bytes) name=FUN_00195448 + +ulong FUN_00195448(ulong param_1) + +{ + int iVar1; + uint uVar2; + ulong uVar3; + + if (*(int *)(param_1 + 0x50) == 0) { + uVar3 = usbi_remove_pollfd(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30), + *(undefined4 *)(param_1 + 0x4c)); + iVar1 = *(int *)(param_1 + 0x54); + } + else { + iVar1 = *(int *)(param_1 + 0x54); + uVar3 = param_1; + } + if (iVar1 != 0) { + return uVar3; + } + uVar2 = close(*(int *)(param_1 + 0x4c)); + return (ulong)uVar2; +} + + +================================================================== + +### FUNC 0019549c (64 bytes) name=FUN_0019549c + +undefined8 FUN_0019549c(long param_1,undefined8 *param_2,uint *param_3) + +{ + undefined8 *puVar1; + undefined8 uVar2; + + *param_3 = (uint)(*(long *)(param_1 + 0x80) == 0 || DAT_00502900 == 0); + puVar1 = *(undefined8 **)(param_1 + 0x88); + *(undefined2 *)(param_2 + 2) = *(undefined2 *)(puVar1 + 2); + uVar2 = *puVar1; + param_2[1] = puVar1[1]; + *param_2 = uVar2; + return 0; +} + + +================================================================== + +### FUNC 001954dc (280 bytes) name=FUN_001954dc + +ulong FUN_001954dc(long param_1,void *param_2,ulong param_3,undefined4 *param_4) + +{ + long lVar1; + uint uVar2; + ulong uVar3; + long lVar4; + int iVar5; + size_t __n; + void *__src; + int iVar6; + uint local_5c; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + if ((*(long *)(param_1 + 0x80) == 0) || (DAT_005028fc == 0)) { + uVar2 = *(uint *)(param_1 + 0x94); + } + else { + uVar3 = FUN_00196e48(param_1,&local_5c); + __n = uVar3 & 0xffffffff; + uVar2 = local_5c; + if ((int)uVar3 < 0) goto LAB_001955c0; + } + local_5c = uVar2; + if (uVar2 == 0xffffffff) { + __n = 0xfffffffb; + } + else { + lVar4 = *(long *)(param_1 + 0x88); + iVar6 = *(int *)(param_1 + 0x90); + *param_4 = 0; + __src = (void *)(lVar4 + 0x12); + iVar6 = iVar6 + -0x12; + while( true ) { + uVar3 = FUN_00197048(param_1,__src,iVar6); + __n = uVar3 & 0xffffffff; + iVar5 = (int)uVar3; + if (iVar5 < 0) break; + if ((uint)*(byte *)((long)__src + 5) == (uVar2 & 0xff)) { + __n = param_3; + if ((ulong)(long)iVar5 <= param_3) { + __n = (long)iVar5; + } + memcpy(param_2,__src,__n); + break; + } + iVar6 = iVar6 - iVar5; + __src = (void *)((long)__src + (long)iVar5); + } + } +LAB_001955c0: + if (*(long *)(lVar1 + 0x28) == local_58) { + return __n & 0xffffffff; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001955f4 (188 bytes) name=FUN_001955f4 + +ulong FUN_001955f4(long param_1,uint param_2,void *param_3,ulong param_4,undefined4 *param_5) + +{ + ulong uVar1; + void *__src; + int iVar2; + size_t __n; + int iVar3; + int iVar4; + + __src = (void *)(*(long *)(param_1 + 0x88) + 0x12); + iVar3 = *(int *)(param_1 + 0x90) + -0x12; + *param_5 = 0; + uVar1 = FUN_00197048(param_1,__src,iVar3); + __n = uVar1 & 0xffffffff; + if (-1 < (int)uVar1) { + iVar4 = (param_2 & 0xff) + 1; + do { + iVar4 = iVar4 + -1; + iVar2 = (int)__n; + if (iVar4 == 0) { + __n = param_4; + if ((ulong)(long)iVar2 <= param_4) { + __n = (long)iVar2; + } + memcpy(param_3,__src,__n); + break; + } + iVar3 = iVar3 - iVar2; + __src = (void *)((long)__src + (long)iVar2); + uVar1 = FUN_00197048(param_1,__src,iVar3); + __n = uVar1 & 0xffffffff; + } while (-1 < (int)uVar1); + } + return __n & 0xffffffff; +} + + +================================================================== + +### FUNC 001956b0 (124 bytes) name=FUN_001956b0 + +void FUN_001956b0(long param_1,char param_2,long *param_3,undefined4 *param_4) + +{ + int iVar1; + long lVar2; + int iVar3; + + lVar2 = *(long *)(param_1 + 0x88) + 0x12; + iVar3 = *(int *)(param_1 + 0x90) + -0x12; + *param_3 = 0; + *param_4 = 0; + while( true ) { + iVar1 = FUN_00197048(param_1,lVar2,iVar3); + if (iVar1 < 0) { + return; + } + if (*(char *)(lVar2 + 5) == param_2) break; + iVar3 = iVar3 - iVar1; + lVar2 = lVar2 + iVar1; + } + *param_3 = lVar2; + return; +} + + +================================================================== + +### FUNC 0019572c (176 bytes) name=FUN_0019572c + +undefined8 FUN_0019572c(long param_1,int *param_2) + +{ + int iVar1; + undefined8 uVar2; + long lVar3; + + lVar3 = *(long *)(param_1 + 0x40); + if (*(long *)(lVar3 + 0x80) == 0 || DAT_005028fc == 0) { + uVar2 = FUN_00196c88(lVar3,*(undefined4 *)(param_1 + 0x4c)); + if ((int)uVar2 == 0) { + iVar1 = *(int *)(lVar3 + 0x94); + *param_2 = iVar1; + goto joined_r0x001957c4; + } + } + else { + uVar2 = FUN_00196e48(lVar3,param_2); + } + if ((int)uVar2 < 0) { + return uVar2; + } + iVar1 = *param_2; +joined_r0x001957c4: + if (iVar1 == -1) { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_get_configuration", + "device unconfigured"); + *param_2 = 0; + } + return 0; +} + + +================================================================== + +### FUNC 001957dc (220 bytes) name=FUN_001957dc + +void FUN_001957dc(long param_1,undefined4 param_2) + +{ + int iVar1; + long lVar2; + int iVar3; + undefined4 uVar4; + int *piVar5; + long lVar6; + undefined4 local_3c; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + lVar6 = *(long *)(param_1 + 0x40); + local_3c = param_2; + iVar3 = ioctl(*(int *)(param_1 + 0x4c),0x80045505,&local_3c); + if (iVar3 == 0) { + *(undefined4 *)(lVar6 + 0x94) = local_3c; + uVar4 = 0; + } + else { + piVar5 = (int *)__errno(); + iVar1 = *piVar5; + if (iVar1 == 0x16) { + uVar4 = 0xfffffffb; + } + else if (iVar1 == 0x13) { + uVar4 = 0xfffffffc; + } + else if (iVar1 == 0x10) { + uVar4 = 0xfffffffa; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_set_configuration", + "failed, error %d errno %d",iVar3); + uVar4 = 0xffffff9d; + } + } + if (*(long *)(lVar2 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 001958b8 (224 bytes) name=FUN_001958b8 + +void FUN_001958b8(long param_1,undefined4 param_2) + +{ + int iVar1; + long lVar2; + uint uVar3; + ulong uVar4; + int *piVar5; + undefined4 local_3c; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + if (*(int *)(param_1 + 0x48) == 0) { + local_3c = param_2; + uVar3 = ioctl(*(int *)(param_1 + 0x4c),0x8004550f,&local_3c); + uVar4 = (ulong)uVar3; + if (uVar3 != 0) { + piVar5 = (int *)__errno(); + iVar1 = *piVar5; + if (iVar1 == 2) { + uVar4 = 0xfffffffb; + } + else if (iVar1 == 0x13) { + uVar4 = 0xfffffffc; + } + else if (iVar1 == 0x10) { + uVar4 = 0xfffffffa; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"claim_interface", + "claim interface failed, error %d errno %d",uVar3); + uVar4 = 0xffffff9d; + } + } + } + else { + uVar4 = FUN_00197280(param_1); + } + if (*(long *)(lVar2 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00195998 (312 bytes) name=FUN_00195998 + +void FUN_00195998(long param_1,undefined4 param_2) + +{ + long lVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + uint *puVar5; + undefined4 local_48; + undefined4 uStack_44; + undefined8 local_40; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + local_48 = param_2; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0x80045510,&local_48); + if (iVar2 == 0) { + if (*(int *)(param_1 + 0x48) != 0) { + uStack_44 = 0x5517; + local_40 = 0; + local_48 = param_2; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0xc0105512,&local_48); + if (iVar2 < 0) { + puVar5 = (uint *)__errno(); + if ((0x3d < *puVar5) || ((1L << ((ulong)*puVar5 & 0x3f) & 0x2000000000490000U) == 0)) { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_attach_kernel_driver", + "attach failed error %d errno %d",iVar2); + } + } + } + uVar4 = 0; + } + else { + piVar3 = (int *)__errno(); + if (*piVar3 == 0x13) { + uVar4 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"release_interface", + "release interface failed, error %d errno %d",iVar2); + uVar4 = 0xffffff9d; + } + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00195ad0 (188 bytes) name=FUN_00195ad0 + +void FUN_00195ad0(long param_1,undefined4 param_2,undefined4 param_3) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + undefined4 local_40; + undefined4 uStack_3c; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + local_40 = param_2; + uStack_3c = param_3; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0x80085504,&local_40); + uVar3 = 0; + if (iVar2 != 0) { + piVar4 = (int *)__errno(); + if (*piVar4 == 0x16) { + uVar3 = 0xfffffffb; + } + else if (*piVar4 == 0x13) { + uVar3 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_set_interface", + "setintf failed error %d errno %d",iVar2); + uVar3 = 0xffffff9d; + } + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 00195b8c (192 bytes) name=FUN_00195b8c + +void FUN_00195b8c(long param_1,uint param_2) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + uint local_3c; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + local_3c = param_2 & 0xff; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0x80045515,&local_3c); + uVar3 = 0; + if (iVar2 != 0) { + piVar4 = (int *)__errno(); + if (*piVar4 == 2) { + uVar3 = 0xfffffffb; + } + else if (*piVar4 == 0x13) { + uVar3 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_clear_halt", + "clear_halt failed error %d errno %d",iVar2); + uVar3 = 0xffffff9d; + } + } + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar3); +} + + +================================================================== + +### FUNC 00195c4c (464 bytes) name=FUN_00195c4c + +undefined4 FUN_00195c4c(pthread_mutex_t *param_1) + +{ + long lVar1; + int iVar2; + int iVar3; + int *piVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined8 uVar7; + ulong uVar8; + ulong uVar9; + undefined4 local_5c; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + iVar3 = *(int *)((long)param_1 + 0x4c); + uVar8 = 0; + do { + if ((param_1[1].__align & 1L << (uVar8 & 0x3f)) != 0) { + local_5c = (undefined4)uVar8; + iVar2 = ioctl(*(int *)((long)param_1 + 0x4c),0x80045510,&local_5c); + if ((iVar2 != 0) && (piVar4 = (int *)__errno(), *piVar4 != 0x13)) { + usbi_log(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),1,"release_interface", + "release interface failed, error %d errno %d",iVar2); + } + } + uVar8 = uVar8 + 1; + } while (uVar8 != 0x20); + pthread_mutex_lock(param_1); + iVar3 = ioctl(iVar3,0x5514,0); + if (iVar3 == 0) { + uVar8 = 0; + uVar6 = 0; + do { + uVar9 = 1L << (uVar8 & 0x3f); + if (((param_1[1].__align & uVar9) != 0) && + (iVar3 = FUN_00197280(param_1,uVar8 & 0xffffffff), iVar3 != 0)) { + uVar7 = *(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30); + uVar5 = libusb_error_name(); + usbi_log(uVar7,2,"op_reset_device","failed to re-claim interface %d after reset: %s", + uVar8 & 0xffffffff,uVar5); + uVar6 = 0xfffffffb; + param_1[1].__align = param_1[1].__align & (uVar9 ^ 0xffffffffffffffff); + } + uVar8 = uVar8 + 1; + } while (uVar8 != 0x20); + } + else { + piVar4 = (int *)__errno(); + if (*piVar4 == 0x13) { + uVar6 = 0xfffffffb; + } + else { + usbi_log(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),1,"op_reset_device", + "reset failed error %d errno %d",iVar3); + uVar6 = 0xffffff9d; + } + } + iVar3 = pthread_mutex_unlock(param_1); + if (*(long *)(lVar1 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar3); + } + return uVar6; +} + + +================================================================== + +### FUNC 00195e1c (36 bytes) name=FUN_00195e1c + +void FUN_00195e1c(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined4 param_4) + +{ + FUN_00197400(param_1,0x8008551c,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00195e40 (32 bytes) name=FUN_00195e40 + +void FUN_00195e40(undefined8 param_1,undefined8 param_2,undefined4 param_3) + +{ + FUN_00197400(param_1,0x8008551d,0,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00195e60 (108 bytes) name=FUN_00195e60 + +void * FUN_00195e60(long param_1,size_t param_2) + +{ + void *pvVar1; + undefined4 *puVar2; + undefined8 uVar3; + + pvVar1 = mmap((void *)0x0,param_2,3,1,*(int *)(param_1 + 0x4c),0); + if (pvVar1 == (void *)0xffffffffffffffff) { + uVar3 = *(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30); + puVar2 = (undefined4 *)__errno(); + usbi_log(uVar3,1,"op_dev_mem_alloc","alloc dev mem failed errno %d",*puVar2); + pvVar1 = (void *)0x0; + } + return pvVar1; +} + + +================================================================== + +### FUNC 00195ecc (92 bytes) name=FUN_00195ecc + +undefined4 FUN_00195ecc(long param_1,void *param_2,size_t param_3) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + undefined8 uVar4; + + iVar1 = munmap(param_2,param_3); + uVar2 = 0; + if (iVar1 != 0) { + uVar4 = *(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30); + puVar3 = (undefined4 *)__errno(); + usbi_log(uVar4,1,"op_dev_mem_free","free dev mem failed errno %d",*puVar3); + uVar2 = 0xffffff9d; + } + return uVar2; +} + + +================================================================== + +### FUNC 00195f28 (228 bytes) name=FUN_00195f28 + +void FUN_00195f28(long param_1,undefined4 param_2) + +{ + long lVar1; + int iVar2; + int *piVar3; + ulong uVar4; + undefined4 local_150 [66]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + local_150[0] = param_2; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0x41045508,local_150); + if (iVar2 == 0) { + iVar2 = strcmp((char *)((ulong)local_150 | 4),"usbfs"); + uVar4 = (ulong)(iVar2 != 0); + } + else { + piVar3 = (int *)__errno(); + if (*piVar3 == 0x3d) { + uVar4 = 0; + } + else if (*piVar3 == 0x13) { + uVar4 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_kernel_driver_active", + "get driver failed error %d errno %d",iVar2); + uVar4 = 0xffffff9d; + } + } + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 0019600c (276 bytes) name=FUN_0019600c + +void FUN_0019600c(long param_1,undefined4 param_2) + +{ + long lVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int *piVar5; + undefined4 local_160; + undefined4 uStack_15c; + undefined8 local_158; + undefined4 local_150 [66]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + iVar3 = *(int *)(param_1 + 0x4c); + uStack_15c = 0x5516; + local_158 = 0; + local_160 = param_2; + local_150[0] = param_2; + iVar2 = ioctl(iVar3,0x41045508,local_150); + if ((iVar2 != 0) || (iVar2 = strcmp((char *)((ulong)local_150 | 4),"usbfs"), iVar2 != 0)) { + iVar3 = ioctl(iVar3,0xc0105512,&local_160); + uVar4 = 0; + if (iVar3 == 0) goto LAB_001960f4; + piVar5 = (int *)__errno(); + iVar2 = *piVar5; + if (iVar2 == 0x13) { + uVar4 = 0xfffffffc; + goto LAB_001960f4; + } + if (iVar2 != 0x3d) { + if (iVar2 == 0x16) { + uVar4 = 0xfffffffe; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_detach_kernel_driver", + "detach failed error %d errno %d",iVar3); + uVar4 = 0xffffff9d; + } + goto LAB_001960f4; + } + } + uVar4 = 0xfffffffb; +LAB_001960f4: + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00196120 (252 bytes) name=FUN_00196120 + +void FUN_00196120(long param_1,undefined4 param_2) + +{ + int iVar1; + long lVar2; + int iVar3; + int *piVar4; + undefined4 uVar5; + undefined4 local_48; + undefined4 uStack_44; + undefined8 local_40; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + uStack_44 = 0x5517; + local_40 = 0; + local_48 = param_2; + iVar3 = ioctl(*(int *)(param_1 + 0x4c),0xc0105512,&local_48); + if (-1 < iVar3) { + uVar5 = 0xfffffffb; + if (iVar3 != 0) { + uVar5 = 0; + } + goto LAB_00196178; + } + piVar4 = (int *)__errno(); + iVar1 = *piVar4; + if (iVar1 < 0x16) { + if (iVar1 == 0x10) { + uVar5 = 0xfffffffa; + goto LAB_00196178; + } + if (iVar1 == 0x13) { + uVar5 = 0xfffffffc; + goto LAB_00196178; + } + } + else { + if (iVar1 == 0x3d) { + uVar5 = 0xfffffffb; + goto LAB_00196178; + } + if (iVar1 == 0x16) { + uVar5 = 0xfffffffe; + goto LAB_00196178; + } + } + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_attach_kernel_driver", + "attach failed error %d errno %d",iVar3); + uVar5 = 0xffffff9d; +LAB_00196178: + if (*(long *)(lVar2 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); + } + return; +} + + +================================================================== + +### FUNC 0019621c (60 bytes) name=FUN_0019621c + +void FUN_0019621c(long param_1) + +{ + if (*(void **)(param_1 + 0x88) != (void *)0x0) { + free(*(void **)(param_1 + 0x88)); + } + if (*(void **)(param_1 + 0x80) != (void *)0x0) { + free(*(void **)(param_1 + 0x80)); + return; + } + return; +} + + +================================================================== + +### FUNC 00196258 (1384 bytes) name=FUN_00196258 + +ulong FUN_00196258(int *param_1) + +{ + undefined8 *puVar1; + long *plVar2; + long lVar3; + uint uVar4; + int iVar5; + int iVar6; + undefined1 uVar7; + int iVar8; + int iVar9; + ulong uVar10; + long *__ptr; + undefined1 *puVar11; + int *piVar12; + undefined8 uVar13; + void *pvVar14; + int iVar15; + long lVar16; + long lVar17; + long lVar18; + uint *puVar19; + ulong uVar20; + int *piVar21; + ulong uVar22; + int iVar23; + size_t __nmemb; + long *plVar24; + long lVar25; + long lVar26; + uint uVar27; + long lVar28; + int iVar29; + + switch(*(undefined1 *)((long)param_1 + 0x7a)) { + case 0: + iVar8 = *param_1; + plVar24 = (long *)(param_1 + 0x1c); + lVar25 = *plVar24; + if (0x1000 < (long)param_1[0x21] - 8U) goto LAB_001963fc; + puVar11 = calloc(1,0x38); + if (puVar11 == (undefined1 *)0x0) goto LAB_00196600; + puVar1 = (undefined8 *)((long)plVar24 + (long)iVar8 * 0xc + 0x40); + *puVar1 = puVar11; + *(undefined8 *)((long)plVar24 + (long)iVar8 * 0xc + 0x48) = 0x100000000; + *(int **)(puVar11 + 0x30) = param_1; + *puVar11 = 2; + puVar11[1] = *(undefined1 *)((long)param_1 + 0x79); + *(undefined8 *)(puVar11 + 0x10) = *(undefined8 *)(param_1 + 0x28); + *(int *)(puVar11 + 0x18) = param_1[0x21]; + iVar8 = ioctl(*(int *)(lVar25 + 0x4c),0x8038550a,puVar11); + if (iVar8 < 0) { + free(puVar11); + *puVar1 = 0; + piVar12 = (int *)__errno(); + if (*piVar12 == 0x13) { + uVar27 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "submit_control_transfer","submiturb failed error %d errno=%d",iVar8); + uVar27 = 0xffffffff; + } + goto LAB_001966ec; + } + break; + case 1: + iVar8 = *param_1; + plVar24 = (long *)(param_1 + 0x1c); + lVar28 = *plVar24; + lVar25 = *(long *)(param_1 + 0x28); + if (param_1[0x2a] < 1) { + iVar23 = 1; + } + else { + lVar18 = 0; + uVar27 = 0; + puVar19 = (uint *)(param_1 + 0x2b); + iVar23 = 1; + do { + uVar4 = *puVar19; + if (0x600000 - uVar27 < uVar4) { + if (0x600000 < (int)uVar4) goto LAB_001963fc; + iVar23 = iVar23 + 1; + uVar27 = uVar4; + } + else { + uVar27 = uVar4 + uVar27; + } + lVar18 = lVar18 + 1; + puVar19 = puVar19 + 3; + } while (lVar18 < param_1[0x2a]); + } + usbi_log(0,4,"submit_iso_transfer","need %d %dk URBs for transfer",iVar23,0x1800); + __nmemb = (size_t)iVar23; + __ptr = calloc(__nmemb,8); + if (__ptr == (long *)0x0) { +LAB_00196600: + uVar27 = 0xfffffff5; + goto LAB_001966ec; + } + plVar2 = (long *)((long)plVar24 + (long)iVar8 * 0xc + 0x40); + *plVar2 = (long)__ptr; + *(undefined4 *)((long)plVar24 + (long)iVar8 * 0xc + 0x48) = 0; + *(int *)((long)plVar24 + (long)iVar8 * 0xc + 0x4c) = iVar23; + *(undefined4 *)((long)plVar24 + (long)iVar8 * 0xc + 0x50) = 0; + *(undefined4 *)((long)plVar24 + (long)iVar8 * 0xc + 0x58) = 0; + if (0 < iVar23) { + iVar9 = param_1[0x2a]; + lVar18 = 0; + iVar15 = 0; + do { + iVar29 = 0; + lVar26 = lVar25; + if (iVar15 < iVar9) { + lVar16 = (long)iVar15; + uVar27 = 0x600000; + puVar19 = (uint *)(param_1 + (long)iVar15 * 3 + 0x2b); + do { + uVar4 = *puVar19; + if (uVar27 < uVar4) break; + lVar16 = lVar16 + 1; + iVar29 = iVar29 + 1; + uVar27 = uVar27 - uVar4; + lVar26 = lVar26 + (ulong)uVar4; + puVar19 = puVar19 + 3; + } while (lVar16 < iVar9); + iVar15 = (int)lVar16; + } + puVar11 = calloc(1,(long)iVar29 * 0xc + 0x38); + if (puVar11 == (undefined1 *)0x0) { + pvVar14 = (void *)*__ptr; + if (pvVar14 == (void *)0x0) goto LAB_001966dc; + lVar25 = 1; + goto LAB_00196620; + } + __ptr[lVar18] = (long)puVar11; + if (0 < iVar29) { + lVar16 = (long)(iVar15 - iVar29); + lVar17 = (long)iVar15; + lVar3 = lVar17; + if (lVar17 < lVar16 + 1) { + lVar3 = lVar16 + 1; + } + uVar10 = lVar3 - lVar16; + if (uVar10 < 2) { + uVar20 = 0; + } + else { + uVar20 = uVar10 & 0xfffffffffffffffe; + if (uVar20 != 0) { + piVar12 = param_1 + lVar16 * 3 + 0x2b; + piVar21 = (int *)(puVar11 + 0x44); + uVar22 = uVar20; + do { + iVar5 = *piVar12; + iVar6 = piVar12[3]; + piVar12 = piVar12 + 6; + uVar22 = uVar22 - 2; + piVar21[-3] = iVar5; + *piVar21 = iVar6; + piVar21 = piVar21 + 6; + } while (uVar22 != 0); + lVar16 = uVar20 + lVar16; + if (uVar10 == uVar20) goto LAB_0019659c; + } + } + piVar12 = (int *)(puVar11 + uVar20 * 0xc + 0x38); + piVar21 = param_1 + lVar16 * 3 + 0x2b; + do { + lVar16 = lVar16 + 1; + *piVar12 = *piVar21; + piVar12 = piVar12 + 3; + piVar21 = piVar21 + 3; + } while (lVar16 < lVar17); + } +LAB_0019659c: + *(int **)(puVar11 + 0x30) = param_1; + *puVar11 = 0; + *(undefined4 *)(puVar11 + 8) = 2; + uVar7 = *(undefined1 *)((long)param_1 + 0x79); + lVar18 = lVar18 + 1; + *(int *)(puVar11 + 0x24) = iVar29; + puVar11[1] = uVar7; + *(long *)(puVar11 + 0x10) = lVar25; + lVar25 = lVar26; + } while (lVar18 < (long)__nmemb); + uVar10 = 0; + do { + iVar9 = ioctl(*(int *)(lVar28 + 0x4c),0x8038550a,__ptr[uVar10]); + if (iVar9 < 0) { + piVar12 = (int *)__errno(); + if (*piVar12 == 0x13) { + uVar27 = 0xfffffffc; + } + else { + uVar13 = *(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30); + if (*piVar12 == 0x16) { + usbi_log(uVar13,2,"submit_iso_transfer","submiturb failed, transfer too large"); + uVar27 = 0xfffffffe; + } + else { + usbi_log(uVar13,1,"submit_iso_transfer","submiturb failed error %d errno=%d",iVar9); + uVar27 = 0xffffffff; + } + } + if ((int)uVar10 == 0) { + usbi_log(0,4,"submit_iso_transfer","first URB failed, easy peasy"); + if (*(int *)((long)plVar24 + (long)iVar8 * 0xc + 0x4c) < 1) goto LAB_00196790; + lVar25 = 0; + goto LAB_00196770; + } + *(undefined4 *)((long)plVar24 + (long)iVar8 * 0xc + 0x48) = 1; + *(int *)((long)plVar24 + (long)iVar8 * 0xc + 0x50) = iVar23 - (int)uVar10; + FUN_001978b0(param_1,0,uVar10 & 0xffffffff); + usbi_log(0,4,"submit_iso_transfer", + "reporting successful submission but waiting for %d discards before reporting error" + ,uVar10 & 0xffffffff); + uVar27 = 0; + break; + } + uVar10 = uVar10 + 1; + uVar27 = 0; + } while ((long)uVar10 < (long)__nmemb); + goto LAB_001966ec; + } + break; + case 2: + case 3: + case 4: + uVar10 = FUN_00197504(param_1); + return uVar10; + default: + usbi_log(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "op_submit_transfer","unknown endpoint type %d"); +LAB_001963fc: + uVar27 = 0xfffffffe; + goto LAB_001966ec; + } + uVar27 = 0; + goto LAB_001966ec; + while( true ) { + __ptr = (long *)*plVar2; + pvVar14 = (void *)__ptr[lVar25]; + lVar25 = lVar25 + 1; + if (pvVar14 == (void *)0x0) break; +LAB_00196620: + free(pvVar14); + if (*(int *)((long)plVar24 + (long)iVar8 * 0xc + 0x4c) <= lVar25) { + __ptr = (long *)*plVar2; + break; + } + } +LAB_001966dc: + free(__ptr); + *plVar2 = 0; + uVar27 = 0xfffffff5; + goto LAB_001966ec; + while( true ) { + free(pvVar14); + lVar25 = lVar25 + 1; + if (*(int *)((long)plVar24 + (long)iVar8 * 0xc + 0x4c) <= lVar25) break; +LAB_00196770: + pvVar14 = *(void **)(*plVar2 + lVar25 * 8); + if (pvVar14 == (void *)0x0) break; + } +LAB_00196790: + free((void *)*plVar2); + *plVar2 = 0; +LAB_001966ec: + return (ulong)uVar27; +} + + +================================================================== + +### FUNC 001967c0 (132 bytes) name=FUN_001967c0 + +undefined8 FUN_001967c0(int *param_1) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = *param_1; + if (*(long *)(param_1 + (long)iVar1 * 3 + 0x2c) == 0) { + uVar2 = 0xfffffffb; + } + else { + uVar2 = FUN_001978b0(param_1,0,param_1[(long)iVar1 * 3 + 0x2f]); + if ((int)uVar2 == 0) { + if (((*(char *)((long)param_1 + 0x7a) == '\x02') || + (*(char *)((long)param_1 + 0x7a) == '\x04')) && (param_1[(long)iVar1 * 3 + 0x2e] == 4)) { + uVar2 = 0; + } + else { + uVar2 = 0; + param_1[(long)iVar1 * 3 + 0x2e] = 2; + } + } + } + return uVar2; +} + + +================================================================== + +### FUNC 00196844 (208 bytes) name=FUN_00196844 + +void FUN_00196844(int *param_1) + +{ + long *plVar1; + byte bVar2; + int iVar3; + long *__ptr; + void *__ptr_00; + long lVar4; + + iVar3 = *param_1; + bVar2 = *(byte *)((long)param_1 + 0x7a); + plVar1 = (long *)(param_1 + (long)iVar3 * 3 + 0x2c); + if (2 < bVar2 - 2) { + if (bVar2 == 1) { + __ptr = (long *)*plVar1; + if (__ptr == (long *)0x0) { + return; + } + if ((0 < param_1[(long)iVar3 * 3 + 0x2f]) && + (__ptr_00 = (void *)*__ptr, __ptr_00 != (void *)0x0)) { + lVar4 = 1; + do { + free(__ptr_00); + if (param_1[(long)iVar3 * 3 + 0x2f] <= lVar4) { + __ptr = (long *)*plVar1; + break; + } + __ptr = (long *)*plVar1; + __ptr_00 = (void *)__ptr[lVar4]; + lVar4 = lVar4 + 1; + } while (__ptr_00 != (void *)0x0); + } + goto LAB_00196884; + } + if (bVar2 != 0) { + usbi_log(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "op_clear_transfer_priv","unknown endpoint type %d"); + return; + } + } + __ptr = (long *)*plVar1; + if (__ptr == (long *)0x0) { + return; + } +LAB_00196884: + free(__ptr); + *plVar1 = 0; + return; +} + + +================================================================== + +### FUNC 00196914 (436 bytes) name=FUN_00196914 + +int FUN_00196914(long param_1,long param_2,uint param_3,int param_4) + +{ + int *piVar1; + int iVar2; + long lVar3; + long lVar4; + long lVar5; + ulong uVar6; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x58)); + iVar2 = 0; + if ((param_4 < 1) || (param_3 == 0)) { +LAB_00196a9c: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x58)); + return iVar2; + } + uVar6 = 0; +LAB_001969e8: + piVar1 = (int *)(param_2 + uVar6 * 8); + if (*(ushort *)((long)piVar1 + 6) != 0) { + param_4 = param_4 + -1; + if (*(long *)(param_1 + 0x50) != param_1 + 0x48) { + lVar5 = *(long *)(param_1 + 0x50) + -0x30; + do { + lVar4 = lVar5; + lVar5 = lVar4; + if (*(int *)(lVar4 + 0x4c) == *piVar1) break; + lVar5 = *(long *)(lVar4 + 0x38) + -0x30; + } while (*(long *)(lVar4 + 0x38) != param_1 + 0x48); + if (*(int *)(lVar4 + 0x4c) == *piVar1) { + if ((*(ushort *)((long)piVar1 + 6) >> 3 & 1) != 0) { + usbi_remove_pollfd(*(undefined8 *)(*(long *)(lVar5 + 0x40) + 0x30)); + *(undefined4 *)(lVar4 + 0x50) = 1; + pthread_mutex_lock((pthread_mutex_t *)PTR_linux_hotplug_lock_00501b58); + lVar3 = *(long *)(lVar5 + 0x40); + if (*(int *)(lVar3 + 0x7c) != 0) { + linux_device_disconnected(*(undefined1 *)(lVar3 + 0x38),*(undefined1 *)(lVar3 + 0x48)); + } + pthread_mutex_unlock((pthread_mutex_t *)PTR_linux_hotplug_lock_00501b58); + if ((*(byte *)(lVar4 + 0x58) >> 4 & 1) != 0) { + do { + iVar2 = FUN_00197a04(lVar5); + } while (iVar2 == 0); + } + usbi_handle_disconnect(lVar5); + goto LAB_00196a84; + } + do { + iVar2 = FUN_00197a04(lVar5); + } while (iVar2 == 0); + if (((iVar2 != -4) && (iVar2 != 1)) && (iVar2 < 0)) goto LAB_00196a9c; + goto LAB_00196a84; + } + } + usbi_log(param_1,1,"op_handle_events","cannot find handle for fd %d"); + } +LAB_00196a84: + iVar2 = 0; + if ((param_4 < 1) || (uVar6 = uVar6 + 1, param_3 <= uVar6)) goto LAB_00196a9c; + goto LAB_001969e8; +} + + +================================================================== + +### FUNC 00196ac8 (40 bytes) name=FUN_00196ac8 + +int FUN_00196ac8(int param_1,timespec *param_2) + +{ + int iVar1; + + if (param_1 == 1) { + iVar1 = clock_gettime(0,param_2); + return iVar1; + } + if (param_1 == 0) { + iVar1 = clock_gettime(DAT_00502904,param_2); + return iVar1; + } + return -2; +} + + +================================================================== + +### FUNC 00196af0 (408 bytes) name=FUN_00196af0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00196af0(long param_1,int param_2,int param_3) + +{ + long lVar1; + int iVar2; + int *piVar3; + char *pcVar4; + int iVar5; + undefined8 uVar6; + timespec local_1060; + char acStack_1048 [4096]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + uVar6 = *(undefined8 *)(param_1 + 0x30); + if (DAT_00531e10 == '\x01') { + pcVar4 = "%s/usbdev%d.%d"; + } + else { + pcVar4 = "%s/%03d/%03d"; + } + snprintf(acStack_1048,0x1000,pcVar4,DAT_00531e18,(ulong)*(byte *)(param_1 + 0x38), + (ulong)*(byte *)(param_1 + 0x48)); + iVar2 = open(acStack_1048,param_2); + if (iVar2 == -1) { + piVar3 = (int *)__errno(); + if (*piVar3 == 2) { + if (param_3 == 0) { + usbi_log(uVar6,1,"_get_usbfs_fd","File doesn\'t exist, wait %d ms and try again",10); + } + local_1060.tv_nsec = _UNK_0043c3c8; + local_1060.tv_sec = _DAT_0043c3c0; + nanosleep(&local_1060,(timespec *)0x0); + iVar2 = open(acStack_1048,param_2); + if (iVar2 != -1) goto LAB_00196c58; + } + if (param_3 == 0) { + pcVar4 = strerror(*piVar3); + usbi_log(uVar6,1,"_get_usbfs_fd","libusb couldn\'t open USB device %s: %s",acStack_1048,pcVar4 + ); + if ((param_2 == 2) && (*piVar3 == 0xd)) { + usbi_log(uVar6,1,"_get_usbfs_fd","libusb requires write access to USB device nodes."); + } + } + iVar5 = -4; + if (*piVar3 != 2) { + iVar5 = -1; + } + iVar2 = -3; + if (*piVar3 != 0xd) { + iVar2 = iVar5; + } + } +LAB_00196c58: + if (*(long *)(lVar1 + 0x28) != local_48) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(iVar2); + } + return; +} + + +================================================================== + +### FUNC 00196c88 (248 bytes) name=FUN_00196c88 + +void FUN_00196c88(long param_1,int param_2) + +{ + long lVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + uint uVar5; + undefined8 local_58; + undefined4 local_50; + byte *local_48; + byte local_3c [4]; + long local_38; + + lVar1 = tpidr_el0; + local_38 = *(long *)(lVar1 + 0x28); + local_48 = local_3c; + local_3c[0] = 0; + local_58 = 0x1000000000880; + local_50 = 1000; + iVar2 = ioctl(param_2,0xc0185500,&local_58); + if (iVar2 < 0) { + piVar3 = (int *)__errno(); + if (*piVar3 == 0x13) { + uVar4 = 0xfffffffc; + goto LAB_00196d58; + } + usbi_log(*(undefined8 *)(param_1 + 0x30),2,"usbfs_get_active_config", + "get_configuration failed ret=%d errno=%d",iVar2); +LAB_00196d4c: + uVar5 = 0xffffffff; + } + else { + uVar5 = (uint)local_3c[0]; + if (local_3c[0] == 0) { + usbi_log(*(undefined8 *)(param_1 + 0x30),2,"usbfs_get_active_config", + "active cfg 0? assuming unconfigured device"); + goto LAB_00196d4c; + } + } + uVar4 = 0; + *(uint *)(param_1 + 0x94) = uVar5; +LAB_00196d58: + if (*(long *)(lVar1 + 0x28) == local_38) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00196d80 (200 bytes) name=FUN_00196d80 + +void FUN_00196d80(long param_1,int param_2) + +{ + uint *puVar1; + bool bVar2; + int iVar3; + int *piVar4; + + puVar1 = (uint *)(param_1 + 0x58); + *(int *)(param_1 + 0x4c) = param_2; + iVar3 = ioctl(param_2,0x8004551a,puVar1); + if (iVar3 < 0) { + piVar4 = (int *)__errno(); + if (*piVar4 == 0x19) { + usbi_log(0,4,"initialize_handle","getcap not available"); + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"initialize_handle", + "getcap failed (%d)"); + } + bVar2 = DAT_0050290c != 0; + *puVar1 = (uint)bVar2; + if (DAT_00502908 != 0) { + *puVar1 = bVar2 | 2; + } + } + usbi_add_pollfd(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),*(undefined4 *)(param_1 + 0x4c), + 4); + return; +} + + +================================================================== + +### FUNC 00196e48 (512 bytes) name=FUN_00196e48 + +void FUN_00196e48(long param_1,undefined4 *param_2) + +{ + long lVar1; + int iVar2; + ssize_t sVar3; + undefined8 uVar4; + undefined4 *puVar5; + long lVar6; + char *pcVar7; + char local_1050 [8]; + char *local_1048 [512]; + long local_48; + + lVar1 = tpidr_el0; + local_48 = *(long *)(lVar1 + 0x28); + local_1050[4] = '\0'; + local_1050[0] = '\0'; + local_1050[1] = '\0'; + local_1050[2] = '\0'; + local_1050[3] = '\0'; + snprintf((char *)local_1048,0x1000,"%s/%s/%s","/sys/bus/usb/devices", + *(undefined8 *)(param_1 + 0x80),"bConfigurationValue"); + iVar2 = open((char *)local_1048,0); + if (iVar2 < 0) { + uVar4 = *(undefined8 *)(param_1 + 0x30); + puVar5 = (undefined4 *)__errno(); + usbi_log(uVar4,1,"_open_sysfs_attr","open %s failed ret=%d errno=%d",local_1048,iVar2,*puVar5); + uVar4 = 0xffffffff; + } + else { + sVar3 = read(iVar2,local_1050,5); + iVar2 = close(iVar2); + if (sVar3 < 0) { + uVar4 = *(undefined8 *)(param_1 + 0x30); + puVar5 = (undefined4 *)__errno(iVar2); + usbi_log(uVar4,1,"sysfs_get_active_config","read bConfigurationValue failed ret=%d errno=%d", + sVar3,*puVar5); + uVar4 = 0xffffffff; + } + else if (sVar3 == 0) { + usbi_log(0,4,"sysfs_get_active_config","device unconfigured"); + uVar4 = 0; + *param_2 = 0xffffffff; + } + else { + if (local_1050[4] == '\0') { + if (local_1050[0] != '\0') { + lVar6 = strtol(local_1050,local_1048,10); + if (local_1048[0] == local_1050) { + usbi_log(*(undefined8 *)(param_1 + 0x30),1,"sysfs_get_active_config", + "error converting \'%s\' to integer",local_1050); + uVar4 = 0xffffffff; + } + else { + uVar4 = 0; + *param_2 = (int)lVar6; + } + goto LAB_00196fa0; + } + uVar4 = *(undefined8 *)(param_1 + 0x30); + pcVar7 = "no configuration value?"; + } + else { + uVar4 = *(undefined8 *)(param_1 + 0x30); + pcVar7 = "not null-terminated?"; + } + usbi_log(uVar4,1,"sysfs_get_active_config",pcVar7); + uVar4 = 0xffffffff; + } + } +LAB_00196fa0: + if (*(long *)(lVar1 + 0x28) == local_48) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); +} + + +================================================================== + +### FUNC 00197048 (568 bytes) name=FUN_00197048 + +uint FUN_00197048(long param_1,long param_2,uint param_3) + +{ + long lVar1; + char *pcVar2; + ushort uVar3; + uint uVar4; + uint uVar5; + undefined8 uVar6; + undefined1 uStack_88; + byte local_87; + ushort local_86; + byte local_60; + char local_5f; + long local_58; + + lVar1 = tpidr_el0; + local_58 = *(long *)(lVar1 + 0x28); + if (param_3 == 0) { + uVar5 = 0xfffffffb; + goto LAB_00197184; + } + uVar6 = *(undefined8 *)(param_1 + 0x30); + if ((int)param_3 < 9) { + usbi_log(uVar6,1,"seek_to_next_config","short descriptor read %d/%d",param_3,9); + } + else { + usbi_parse_descriptor(param_2,&DAT_0043ba7c,&uStack_88,0); + uVar3 = (ushort)local_87; + if (local_87 == 2) { + if ((*(long *)(param_1 + 0x80) == 0) || (DAT_00502900 == 0)) { + if (local_86 < 9) { + pcVar2 = "invalid wTotalLength %d"; + uVar3 = local_86; + goto LAB_0019717c; + } + uVar5 = (uint)local_86; + if ((int)uVar5 <= (int)param_3) goto LAB_00197184; + pcVar2 = "short descriptor read %d/%d"; + uVar4 = param_3; + } + else { + uVar5 = 0; + uVar4 = param_3; + do { + if (uVar4 == 0) { + uVar5 = 0xfffffffb; + goto LAB_00197238; + } + if ((int)uVar4 < 2) { + pcVar2 = "short descriptor read %d/2"; + goto LAB_00197230; + } + usbi_parse_descriptor(param_2 + (int)uVar5,"bb",&local_60,0); + if ((uVar5 != 0) && (local_5f == '\x02')) goto LAB_00197238; + uVar4 = uVar4 - local_60; + uVar5 = uVar5 + local_60; + } while (-1 < (int)uVar4); + uVar4 = -uVar4; + pcVar2 = "bLength overflow by %d bytes"; +LAB_00197230: + usbi_log(uVar6,1,"seek_to_next_descriptor",pcVar2,uVar4); + uVar5 = 0xffffffff; +LAB_00197238: + if (uVar5 != 0xfffffffb) { + param_3 = uVar5; + } + uVar5 = param_3; + if (((int)param_3 < 0) || (param_3 == local_86)) goto LAB_00197184; + pcVar2 = "config length mismatch wTotalLength %d real %d"; + uVar4 = (uint)local_86; + } + usbi_log(uVar6,2,"seek_to_next_config",pcVar2,uVar4,uVar5); + uVar5 = param_3; + goto LAB_00197184; + } + pcVar2 = "descriptor is not a config desc (type 0x%02x)"; +LAB_0019717c: + usbi_log(uVar6,1,"seek_to_next_config",pcVar2,uVar3); + } + uVar5 = 0xffffffff; +LAB_00197184: + if (*(long *)(lVar1 + 0x28) != local_58) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar5; +} + + +================================================================== + +### FUNC 00197280 (384 bytes) name=FUN_00197280 + +void FUN_00197280(long param_1,undefined4 param_2) + +{ + int iVar1; + long lVar2; + uint uVar3; + int *piVar4; + ulong uVar5; + long lVar6; + undefined4 local_154; + undefined4 local_150; + undefined4 uStack_14c; + undefined4 local_148; + undefined2 local_144; + + lVar2 = tpidr_el0; + lVar6 = *(long *)(lVar2 + 0x28); + local_148 = 0x66627375; + local_144 = 0x73; + uStack_14c = 2; + local_150 = param_2; + uVar3 = ioctl(*(int *)(param_1 + 0x4c),0x8108551b,&local_150); + uVar5 = (ulong)uVar3; + if (uVar3 == 0) goto switchD_00197310_caseD_10; + piVar4 = (int *)__errno(); + uVar5 = 0xfffffffa; + switch(*piVar4) { + case 0x10: + break; + default: + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"detach_kernel_driver_and_claim", + "disconnect-and-claim failed errno %d"); + goto LAB_00197344; + case 0x13: +switchD_00197310_caseD_13: + uVar5 = 0xfffffffc; + break; + case 0x16: + uVar5 = 0xfffffffe; + break; + case 0x19: + uVar5 = FUN_0019600c(param_1,param_2); + if (((int)uVar5 != 0) && ((int)uVar5 != -5)) break; + local_154 = param_2; + uVar3 = ioctl(*(int *)(param_1 + 0x4c),0x8004550f,&local_154); + uVar5 = (ulong)uVar3; + if (uVar3 == 0) break; + iVar1 = *piVar4; + if (iVar1 == 2) { + uVar5 = 0xfffffffb; + break; + } + if (iVar1 == 0x13) goto switchD_00197310_caseD_13; + if (iVar1 == 0x10) { + uVar5 = 0xfffffffa; + break; + } + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"claim_interface", + "claim interface failed, error %d errno %d",uVar3); +LAB_00197344: + uVar5 = 0xffffff9d; + } +switchD_00197310_caseD_10: + if (*(long *)(lVar2 + 0x28) == lVar6) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar5); +} + + +================================================================== + +### FUNC 00197400 (260 bytes) name=FUN_00197400 + +int FUN_00197400(long param_1,ulong param_2,undefined4 param_3,void *param_4,int param_5) + +{ + int iVar1; + int iVar2; + undefined4 *__ptr; + int *piVar3; + + if (param_5 < 0x1f) { + iVar2 = *(int *)(param_1 + 0x4c); + __ptr = malloc((long)param_5 + 8); + if (__ptr == (undefined4 *)0x0) { + return -0xb; + } + *__ptr = param_3; + __ptr[1] = param_5; + memcpy(__ptr + 2,param_4,(long)param_5); + iVar2 = ioctl(iVar2,param_2 & 0xffffffff,__ptr); + free(__ptr); + if (-1 < iVar2) { + return iVar2; + } + piVar3 = (int *)__errno(); + iVar1 = *piVar3; + if (iVar1 == 0x13) { + return -4; + } + if (iVar1 == 0x19) { + return -0xc; + } + if (iVar1 != 0x16) { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"do_streams_ioctl", + "streams-ioctl failed error %d errno %d",iVar2); + return -99; + } + } + return -2; +} + + +================================================================== + +### FUNC 00197504 (940 bytes) name=FUN_00197504 + +undefined4 FUN_00197504(int *param_1) + +{ + bool bVar1; + undefined8 *puVar2; + uint *puVar3; + undefined1 *puVar4; + uint uVar5; + char cVar6; + char cVar7; + int iVar8; + bool bVar9; + int iVar10; + void *__ptr; + int *piVar11; + int iVar12; + long lVar13; + long *plVar14; + ulong uVar15; + int iVar16; + undefined4 uVar17; + long lVar18; + long lVar19; + ulong uVar20; + int iVar21; + + iVar8 = *param_1; + plVar14 = (long *)(param_1 + 0x1c); + lVar13 = *plVar14; + cVar7 = *(char *)((long)param_1 + 0x79); + if (((-1 < cVar7) && ((*(byte *)(param_1 + 0x1e) >> 3 & 1) != 0)) && + ((*(byte *)(lVar13 + 0x58) & 1) == 0)) { + return 0xfffffff4; + } + uVar5 = *(uint *)(lVar13 + 0x58); + if ((uVar5 >> 3 & 1) == 0) { + if ((uVar5 >> 1 & 1) == 0) { + if ((uVar5 >> 2 & 1) != 0) goto LAB_0019757c; + bVar9 = false; + } + else { + bVar9 = true; + } + iVar21 = 0x4000; + iVar10 = param_1[0x21]; + } + else { +LAB_0019757c: + bVar9 = false; + iVar21 = param_1[0x21]; + if (iVar21 == 0) { + iVar21 = 1; + } + iVar10 = param_1[0x21]; + } + if (iVar10 == 0) { + bVar1 = false; + iVar16 = 1; + } + else { + iVar16 = 0; + if (iVar21 != 0) { + iVar16 = iVar10 / iVar21; + } + iVar10 = iVar10 - iVar16 * iVar21; + bVar1 = 0 < iVar10; + if (0 < iVar10) { + iVar16 = iVar16 + 1; + } + } + usbi_log(0,4,"submit_bulk_transfer","need %d urbs for new transfer with length %d",iVar16); + __ptr = calloc((long)iVar16,0x38); + if (__ptr == (void *)0x0) { + uVar17 = 0xfffffff5; + } + else { + uVar20 = (ulong)(iVar16 - 1U); + puVar2 = (undefined8 *)((long)plVar14 + (long)iVar8 * 0xc + 0x40); + *puVar2 = __ptr; + *(undefined4 *)((long)plVar14 + (long)iVar8 * 0xc + 0x48) = 0; + *(int *)((long)plVar14 + (long)iVar8 * 0xc + 0x4c) = iVar16; + *(undefined8 *)((long)plVar14 + (long)iVar8 * 0xc + 0x50) = 0; + if (0 < iVar16) { + lVar18 = 0; + lVar19 = 0; + uVar15 = 0; + puVar3 = (uint *)((long)__ptr + uVar20 * 0x38 + 8); + do { + puVar4 = (undefined1 *)((long)__ptr + lVar19); + *(int **)(puVar4 + 0x30) = param_1; + cVar6 = *(char *)((long)param_1 + 0x7a); + if (cVar6 == '\x04') { + *puVar4 = 3; + *(int *)(puVar4 + 0x24) = param_1[0xf]; + } + else if (cVar6 == '\x03') { + *(undefined1 *)((long)__ptr + lVar19) = 1; + } + else if (cVar6 == '\x02') { + *(undefined1 *)((long)__ptr + lVar19) = 3; + *(undefined4 *)((undefined1 *)((long)__ptr + lVar19) + 0x24) = 0; + } + *(undefined1 *)((long)__ptr + lVar19 + 1) = *(undefined1 *)((long)param_1 + 0x79); + *(long *)((long)__ptr + lVar19 + 0x10) = *(long *)(param_1 + 0x28) + lVar18; + if ((long)uVar15 < (long)(int)(iVar16 - 1U) && (cVar7 < '\0' && bVar9)) { + *(undefined4 *)((long)__ptr + lVar19 + 8) = 1; + } + iVar10 = param_1[0x21]; + if ((bVar1) && (uVar20 == uVar15)) { + iVar12 = 0; + if (iVar21 != 0) { + iVar12 = iVar10 / iVar21; + } + iVar12 = iVar10 - iVar12 * iVar21; + } + else { + iVar12 = 0; + if (iVar10 != 0) { + iVar12 = iVar21; + } + } + *(int *)((long)__ptr + lVar19 + 0x18) = iVar12; + if ((bVar9) && (0 < (long)uVar15)) { + *(uint *)((long)__ptr + lVar19 + 8) = *(uint *)((long)__ptr + lVar19 + 8) | 4; + } + if (((-1 < cVar7) && (uVar20 == uVar15)) && ((*(byte *)(param_1 + 0x1e) >> 3 & 1) != 0)) { + *puVar3 = *puVar3 | 0x40; + } + iVar10 = ioctl(*(int *)(lVar13 + 0x4c),0x8038550a); + if (iVar10 < 0) { + piVar11 = (int *)__errno(); + if (*piVar11 == 0x13) { + uVar17 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "submit_bulk_transfer","submiturb failed error %d errno=%d",iVar10); + uVar17 = 0xffffffff; + } + if ((int)uVar15 == 0) { + usbi_log(0,4,"submit_bulk_transfer","first URB failed, easy peasy"); + free(__ptr); + *puVar2 = 0; + return uVar17; + } + iVar21 = *(int *)((long)plVar14 + (long)iVar8 * 0xc + 0x50); + iVar10 = *piVar11; + uVar17 = 3; + if (iVar10 != 0x79) { + uVar17 = 1; + } + *(undefined4 *)((long)plVar14 + (long)iVar8 * 0xc + 0x48) = uVar17; + *(int *)((long)plVar14 + (long)iVar8 * 0xc + 0x50) = (iVar16 + iVar21) - (int)uVar15; + if (iVar10 != 0x79) { + FUN_001978b0(param_1,0,uVar15 & 0xffffffff); + usbi_log(0,4,"submit_bulk_transfer", + "reporting successful submission but waiting for %d discards before reporting error" + ,uVar15 & 0xffffffff); + } + break; + } + uVar15 = uVar15 + 1; + lVar19 = lVar19 + 0x38; + lVar18 = lVar18 + iVar21; + } while ((long)uVar15 < (long)iVar16); + } + uVar17 = 0; + } + return uVar17; +} + + +================================================================== + +### FUNC 001978b0 (340 bytes) name=FUN_001978b0 + +undefined4 FUN_001978b0(int *param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + int *piVar4; + long lVar5; + undefined4 uVar6; + long lVar7; + int iVar8; + long lVar9; + long lVar10; + + iVar1 = *param_1; + if (param_2 < param_3) { + lVar9 = *(long *)(param_1 + 0x1c); + iVar8 = 0; + uVar6 = 0; + lVar10 = (long)param_3; + lVar7 = (long)param_3 * 0x38; + do { + lVar7 = lVar7 + -0x38; + if (*(char *)((long)param_1 + 0x7a) == '\x01') { + lVar5 = *(long *)(*(long *)(param_1 + (long)iVar1 * 3 + 0x2c) + lVar10 * 8 + -8); + } + else { + lVar5 = *(long *)(param_1 + (long)iVar1 * 3 + 0x2c) + lVar7; + } + lVar10 = lVar10 + -1; + iVar3 = ioctl(*(int *)(lVar9 + 0x4c),0x550b,lVar5); + uVar2 = uVar6; + if (iVar3 != 0) { + piVar4 = (int *)__errno(); + if (*piVar4 == 0x13) { + usbi_log(0,4,"discard_urbs","Device not found for URB --> assuming ready to be reaped"); + uVar2 = 0xfffffffc; + } + else if (*piVar4 == 0x16) { + usbi_log(0,4,"discard_urbs","URB not found --> assuming ready to be reaped"); + uVar2 = 0xfffffffb; + if (iVar8 != 0) { + uVar2 = uVar6; + } + } + else { + usbi_log(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),2, + "discard_urbs","unrecognised discard errno %d"); + uVar2 = 0xffffff9d; + } + } + uVar6 = uVar2; + iVar8 = iVar8 + 1; + } while (param_2 < lVar10); + } + else { + uVar6 = 0; + } + return uVar6; +} + + +================================================================== + +### FUNC 00197a04 (2564 bytes) name=FUN_00197a04 + +void FUN_00197a04(long param_1) + +{ + int *piVar1; + byte bVar2; + int iVar3; + long lVar4; + int iVar5; + void *pvVar6; + undefined8 uVar7; + undefined8 uVar8; + char *pcVar9; + int iVar10; + int iVar11; + pthread_mutex_t *ppVar12; + ulong uVar13; + long *plVar14; + long lVar15; + int *piVar16; + undefined4 *puVar17; + undefined1 *local_70; + long local_68; + + lVar4 = tpidr_el0; + local_68 = *(long *)(lVar4 + 0x28); + iVar5 = ioctl(*(int *)(param_1 + 0x4c),0x4008550d,&local_70); + if (iVar5 == -1) { + piVar16 = (int *)__errno(); + iVar11 = *piVar16; + if (iVar11 == 0xb) { + uVar7 = 1; + goto LAB_00198334; + } +LAB_00197c1c: + if (iVar11 == 0x13) { + uVar7 = 0xfffffffc; + } + else { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"reap_for_handle", + "reap failed error %d errno=%d",iVar5); + uVar7 = 0xffffffff; + } + goto LAB_00198334; + } + if (iVar5 < 0) { + piVar16 = (int *)__errno(); + iVar11 = *piVar16; + goto LAB_00197c1c; + } + piVar16 = *(int **)(local_70 + 0x30); + usbi_log(0,4,"reap_for_handle","urb type=%d status=%d transferred=%d",*local_70, + *(undefined4 *)(local_70 + 4),*(undefined4 *)(local_70 + 0x1c)); + bVar2 = *(byte *)((long)piVar16 + 0x7a); + if (2 < bVar2 - 2) { + if (bVar2 != 0) { + if (bVar2 != 1) { + usbi_log(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"reap_for_handle", + "unrecognised endpoint type %x"); + uVar7 = 0xffffff9d; + goto LAB_00198334; + } + ppVar12 = (pthread_mutex_t *)(piVar16 + 0x11); + iVar5 = *piVar16; + iVar11 = piVar16[(long)iVar5 * 3 + 0x2f]; + plVar14 = (long *)(piVar16 + (long)iVar5 * 3 + 0x2c); + pthread_mutex_lock(ppVar12); + uVar13 = 0; + do { + if ((long)iVar11 <= (long)uVar13) goto LAB_0019800c; + lVar15 = uVar13 * 8; + uVar13 = uVar13 + 1; + } while (*(undefined1 **)(*plVar14 + lVar15) != local_70); + if ((int)uVar13 == 0) { +LAB_0019800c: + usbi_log(*(undefined8 *)(*(long *)(*(long *)(piVar16 + 0x1c) + 0x40) + 0x30),1, + "handle_iso_completion","could not locate urb!"); + pthread_mutex_unlock(ppVar12); + uVar7 = 0xfffffffb; + goto LAB_00198334; + } + usbi_log(0,4,"handle_iso_completion","handling completion status %d of iso urb %d/%d", + *(undefined4 *)(local_70 + 4),uVar13 & 0xffffffff,iVar11); + if (0 < *(int *)(local_70 + 0x24)) { + lVar15 = 0; + puVar17 = (undefined4 *)(local_70 + 0x40); + do { + iVar3 = piVar16[(long)iVar5 * 3 + 0x32]; + piVar16[(long)iVar5 * 3 + 0x32] = iVar3 + 1; + piVar16[(long)iVar3 * 3 + 0x2d] = 0; + switch(*puVar17) { + case 0xffffff94: + case 0xffffffed: + usbi_log(0,4,"handle_iso_completion","device removed"); + iVar10 = 5; + break; + default: + uVar8 = 2; + pcVar9 = "unrecognised urb status %d"; + uVar7 = *(undefined8 *)(*(long *)(*(long *)(piVar16 + 0x1c) + 0x40) + 0x30); + goto LAB_00197d50; + case 0xffffff98: + case 0xfffffffe: + case 0: + goto switchD_00197d34_caseD_ffffff98; + case 0xffffffac: + case 0xffffffb9: + case 0xffffffba: + case 0xffffffc1: + case 0xffffffc2: + case 0xffffffee: + uVar8 = 4; + uVar7 = 0; + pcVar9 = "low-level USB error %d"; +LAB_00197d50: + usbi_log(uVar7,uVar8,"handle_iso_completion",pcVar9); + iVar10 = 1; + break; + case 0xffffffb5: + usbi_log(0,4,"handle_iso_completion","overflow error"); + iVar10 = 6; + break; + case 0xffffffe0: + usbi_log(0,4,"handle_iso_completion","detected endpoint stall"); + iVar10 = 4; + } + piVar16[(long)iVar3 * 3 + 0x2d] = iVar10; +switchD_00197d34_caseD_ffffff98: + piVar1 = puVar17 + -1; + lVar15 = lVar15 + 1; + puVar17 = puVar17 + 3; + piVar16[(long)iVar3 * 3 + 0x2c] = *piVar1; + } while (lVar15 < *(int *)(local_70 + 0x24)); + } + piVar16[(long)iVar5 * 3 + 0x30] = piVar16[(long)iVar5 * 3 + 0x30] + 1; + iVar3 = *(int *)(local_70 + 4); + if (piVar16[(long)iVar5 * 3 + 0x2e] == 0) { + iVar10 = 0; + if (iVar3 < -2) { + if (iVar3 == -0x6c) { + usbi_log(0,4,"handle_iso_completion","device removed"); + iVar10 = 5; + } + else if (iVar3 != -0x68) goto LAB_00198268; + } + else if ((iVar3 != -2) && (iVar3 != 0)) { +LAB_00198268: + usbi_log(*(undefined8 *)(*(long *)(*(long *)(piVar16 + 0x1c) + 0x40) + 0x30),2, + "handle_iso_completion","unrecognised urb status %d"); + iVar10 = 1; + } + if (iVar11 != (int)uVar13) goto LAB_00198250; + usbi_log(0,4,"handle_iso_completion","last URB in transfer --> complete!"); + if (0 < piVar16[(long)iVar5 * 3 + 0x2f]) { + lVar15 = 0; + do { + pvVar6 = *(void **)(*plVar14 + lVar15 * 8); + if (pvVar6 == (void *)0x0) break; + free(pvVar6); + lVar15 = lVar15 + 1; + } while (lVar15 < piVar16[(long)iVar5 * 3 + 0x2f]); + } + free((void *)*plVar14); + *plVar14 = 0; + pthread_mutex_unlock(ppVar12); + } + else { + usbi_log(0,4,"handle_iso_completion","CANCEL: urb status %d"); + if (piVar16[(long)iVar5 * 3 + 0x30] != iVar11) goto LAB_00198250; + usbi_log(0,4,"handle_iso_completion","CANCEL: last URB handled, reporting"); + if (0 < piVar16[(long)iVar5 * 3 + 0x2f]) { + lVar15 = 0; + do { + pvVar6 = *(void **)(*plVar14 + lVar15 * 8); + if (pvVar6 == (void *)0x0) break; + free(pvVar6); + lVar15 = lVar15 + 1; + } while (lVar15 < piVar16[(long)iVar5 * 3 + 0x2f]); + } + free((void *)*plVar14); + *plVar14 = 0; + iVar5 = piVar16[(long)iVar5 * 3 + 0x2e]; + pthread_mutex_unlock(ppVar12); + if (iVar5 == 2) { + uVar7 = usbi_handle_transfer_cancellation(piVar16); + goto LAB_00198334; + } + iVar10 = 1; + } + goto LAB_00198330; + } + iVar11 = *piVar16; + ppVar12 = (pthread_mutex_t *)(piVar16 + 0x11); + piVar1 = piVar16 + (long)iVar11 * 3 + 0x2c; + pthread_mutex_lock(ppVar12); + usbi_log(0,4,"handle_control_completion","handling completion status %d", + *(undefined4 *)(local_70 + 4)); + piVar16[0xe] = piVar16[0xe] + *(int *)(local_70 + 0x1c); + iVar5 = *(int *)(local_70 + 4); + if (piVar16[(long)iVar11 * 3 + 0x2e] == 2) { + if ((iVar5 != -2) && (iVar5 != 0)) { + usbi_log(*(undefined8 *)(*(long *)(*(long *)(piVar16 + 0x1c) + 0x40) + 0x30),2, + "handle_control_completion","cancel: unrecognised urb status %d"); + } + free(*(void **)piVar1); + piVar1[0] = 0; + piVar1[1] = 0; + pthread_mutex_unlock(ppVar12); + goto LAB_00198228; + } + iVar10 = 0; + switch(iVar5) { + case 0: + break; + case -0x6c: + case -0x13: + usbi_log(0,4,"handle_control_completion","device removed"); + iVar10 = 5; + break; + default: + usbi_log(*(undefined8 *)(*(long *)(*(long *)(piVar16 + 0x1c) + 0x40) + 0x30),2, + "handle_control_completion","unrecognised urb status %d"); + goto LAB_00198080; + case -0x54: + case -0x47: + case -0x46: + case -0x3f: + case -0x3e: + usbi_log(0,4,"handle_control_completion","low-level bus error occurred"); +LAB_00198080: + iVar10 = 1; + break; + case -0x4b: + usbi_log(0,4,"handle_control_completion","control overflow error"); + iVar10 = 6; + break; + case -0x20: + iVar10 = 4; + usbi_log(0,4,"handle_control_completion","unsupported control request"); + break; + case -2: + iVar10 = 3; + } + free(*(void **)piVar1); + piVar1[0] = 0; + piVar1[1] = 0; + pthread_mutex_unlock(ppVar12); + goto LAB_00198330; + } + iVar3 = *piVar16; + plVar14 = (long *)(piVar16 + (long)iVar3 * 3 + 0x2c); + iVar10 = (int)((ulong)((long)local_70 - *plVar14) >> 3) * -0x49249249; + pthread_mutex_lock((pthread_mutex_t *)(piVar16 + 0x11)); + iVar5 = iVar10 + 1; + usbi_log(0,4,"handle_bulk_completion","handling completion status %d of bulk urb %d/%d", + *(undefined4 *)(local_70 + 4),iVar5,piVar16[(long)iVar3 * 3 + 0x2f]); + iVar11 = piVar16[(long)iVar3 * 3 + 0x2e]; + piVar16[(long)iVar3 * 3 + 0x30] = piVar16[(long)iVar3 * 3 + 0x30] + 1; + if (iVar11 != 0) { + usbi_log(0,4,"handle_bulk_completion","abnormal reap: urb status %d", + *(undefined4 *)(local_70 + 4)); + if (0 < *(int *)(local_70 + 0x1c)) { + pvVar6 = (void *)(*(long *)(piVar16 + 0x28) + (long)piVar16[0xe]); + usbi_log(0,4,"handle_bulk_completion","received %d bytes of surplus data"); + if (*(void **)(local_70 + 0x10) != pvVar6) { + usbi_log(0,4,"handle_bulk_completion","moving surplus data from offset %d to offset %d", + (long)*(void **)(local_70 + 0x10) - *(long *)(piVar16 + 0x28), + (long)pvVar6 - *(long *)(piVar16 + 0x28)); + memmove(pvVar6,*(void **)(local_70 + 0x10),(long)*(int *)(local_70 + 0x1c)); + } + piVar16[0xe] = piVar16[0xe] + *(int *)(local_70 + 0x1c); + } + if (piVar16[(long)iVar3 * 3 + 0x30] == piVar16[(long)iVar3 * 3 + 0x2f]) { + usbi_log(0,4,"handle_bulk_completion","abnormal reap: last URB handled, reporting"); + if ((piVar16[(long)iVar3 * 3 + 0x2e] != 3) && (piVar16[(long)iVar3 * 3 + 0x31] == 0)) { + iVar5 = 1; +LAB_00197bf4: + piVar16[(long)iVar3 * 3 + 0x31] = iVar5; + } + goto LAB_00198208; + } + goto LAB_00198250; + } + iVar11 = *(int *)(local_70 + 0x1c); + piVar16[0xe] = piVar16[0xe] + iVar11; + switch(*(undefined4 *)(local_70 + 4)) { + case 0xffffff87: + case 0xffffff98: + case 0xfffffffe: + case 0: + if (piVar16[(long)iVar3 * 3 + 0x2f] + -1 == iVar10) { + usbi_log(0,4,"handle_bulk_completion","last URB in transfer --> complete!"); + goto LAB_00198208; + } + if (*(int *)(local_70 + 0x18) <= iVar11) goto LAB_00198250; + usbi_log(0,4,"handle_bulk_completion","short transfer %d/%d --> complete!"); + iVar11 = piVar16[(long)iVar3 * 3 + 0x2e]; + if (iVar11 != 0) goto LAB_001981e4; + piVar16[(long)iVar3 * 3 + 0x2e] = 3; + goto LAB_001981fc; + default: + pcVar9 = "unrecognised urb status %d"; + uVar8 = 2; + uVar7 = *(undefined8 *)(*(long *)(*(long *)(piVar16 + 0x1c) + 0x40) + 0x30); + break; + case 0xffffff94: + case 0xffffffed: + usbi_log(0,4,"handle_bulk_completion","device removed"); + piVar16[(long)iVar3 * 3 + 0x31] = 5; + goto LAB_001981e0; + case 0xffffffac: + case 0xffffffb9: + case 0xffffffba: + case 0xffffffc1: + case 0xffffffc2: + pcVar9 = "low level error %d"; + uVar8 = 4; + uVar7 = 0; + break; + case 0xffffffb5: + usbi_log(0,4,"handle_bulk_completion","overflow, actual_length=%d"); + if (piVar16[(long)iVar3 * 3 + 0x31] == 0) { + iVar5 = 6; + goto LAB_00197bf4; + } + goto LAB_00198208; + case 0xffffffe0: + usbi_log(0,4,"handle_bulk_completion","detected endpoint stall"); + if (piVar16[(long)iVar3 * 3 + 0x31] == 0) { + piVar16[(long)iVar3 * 3 + 0x31] = 4; + } +LAB_001981e0: + iVar11 = piVar16[(long)iVar3 * 3 + 0x2e]; +LAB_001981e4: + if (iVar11 == 4) { + iVar11 = piVar16[(long)iVar3 * 3 + 0x31]; + goto joined_r0x00197f34; + } + goto LAB_001981fc; + } + usbi_log(uVar7,uVar8,"handle_bulk_completion",pcVar9,*(undefined4 *)(local_70 + 4)); + piVar16[(long)iVar3 * 3 + 0x2e] = 4; + iVar11 = piVar16[(long)iVar3 * 3 + 0x31]; +joined_r0x00197f34: + if (iVar11 == 0) { + piVar16[(long)iVar3 * 3 + 0x31] = 1; + } +LAB_001981fc: + if (piVar16[(long)iVar3 * 3 + 0x30] == piVar16[(long)iVar3 * 3 + 0x2f]) { +LAB_00198208: + free((void *)*plVar14); + *plVar14 = 0; + pthread_mutex_unlock((pthread_mutex_t *)(piVar16 + 0x11)); + if (piVar16[(long)iVar3 * 3 + 0x2e] == 2) { +LAB_00198228: + uVar7 = usbi_handle_transfer_cancellation(piVar16); + } + else { + iVar10 = piVar16[(long)iVar3 * 3 + 0x31]; +LAB_00198330: + uVar7 = usbi_handle_transfer_completion(piVar16,iVar10); + } + } + else { + FUN_001978b0(piVar16,iVar5); +LAB_00198250: + pthread_mutex_unlock((pthread_mutex_t *)(piVar16 + 0x11)); + uVar7 = 0; + } +LAB_00198334: + if (*(long *)(lVar4 + 0x28) == local_68) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar7); +} + + +================================================================== + +### FUNC 00198408 (188 bytes) name=usbi_pipe + +int usbi_pipe(int *param_1) + +{ + int iVar1; + uint uVar2; + undefined4 *puVar3; + + iVar1 = pipe(param_1); + if (iVar1 == 0) { + uVar2 = fcntl(param_1[1],3); + if (uVar2 == 0xffffffff) { + puVar3 = (undefined4 *)__errno(); + usbi_log(0,4,"usbi_pipe","Failed to get pipe fd flags: %d",*puVar3); + iVar1 = -1; + } + else { + iVar1 = fcntl(param_1[1],4,(ulong)(uVar2 | 0x800)); + if (iVar1 == 0) { + return 0; + } + puVar3 = (undefined4 *)__errno(); + usbi_log(0,4,"usbi_pipe","Failed to set non-blocking on new pipe: %d",*puVar3); + } + close(*param_1); + close(param_1[1]); + } + return iVar1; +} + + +================================================================== + +### FUNC 001984c4 (248 bytes) name=usbi_cond_timedwait + +void usbi_cond_timedwait(pthread_cond_t *param_1,pthread_mutex_t *param_2,long *param_3) + +{ + ulong uVar1; + long lVar2; + uint uVar3; + ulong uVar4; + long lVar5; + long lVar6; + timespec local_48; + long local_38; + + lVar2 = tpidr_el0; + local_38 = *(long *)(lVar2 + 0x28); + uVar4 = (**(code **)(*(long *)PTR_usbi_backend_00501a30 + 0x108))(1,&local_48); + if (-1 < (int)uVar4) { + lVar5 = param_3[1] * 1000; + local_48.tv_sec = local_48.tv_sec + *param_3; + uVar4 = local_48.tv_nsec + lVar5; + if (999999999 < (long)uVar4) { + lVar6 = ~local_48.tv_nsec + param_3[1] * -1000; + if (lVar6 < -1999999999) { + lVar6 = -2000000000; + } + uVar1 = (local_48.tv_nsec + lVar6 + lVar5 + 1000000000U) / 1000000000; + local_48.tv_sec = local_48.tv_sec + uVar1 + 1; + uVar4 = (uVar4 + uVar1 * -1000000000) - 1000000000; + } + local_48.tv_nsec = uVar4; + uVar3 = pthread_cond_timedwait(param_1,param_2,&local_48); + uVar4 = (ulong)uVar3; + } + if (*(long *)(lVar2 + 0x28) != local_38) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(uVar4); + } + return; +} + + +================================================================== + +### FUNC 001985bc (4 bytes) name=usbi_get_tid + +void usbi_get_tid(void) + +{ + (*(code *)PTR_gettid_004fff50)(); + return; +} + + +================================================================== + +### FUNC 001985c0 (128 bytes) name=release + +/* cv::Mat::release() */ + +void __thiscall cv::Mat::release(Mat *this) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (0 < *(int *)(this + 4)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(this + 0x40); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(this + 4)); + } + return; +} + + +================================================================== + +### FUNC 00198640 (6848 bytes) name=Canny + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::Canny(cv::_InputArray const&, cv::_OutputArray const&, double, double, int, bool) */ + +void cv::Canny(_InputArray *param_1,_OutputArray *param_2,double param_3,double param_4,int param_5, + bool param_6) + +{ + int *piVar1; + uint uVar2; + undefined4 *__s; + undefined8 *puVar3; + ulong uVar4; + long lVar5; + ushort uVar6; + ushort uVar7; + char cVar8; + bool bVar9; + uint uVar10; + ulong uVar11; + undefined4 uVar12; + undefined2 uVar13; + int iVar14; + uint uVar15; + int iVar16; + int iVar17; + ulong uVar18; + char *pcVar19; + long *plVar20; + size_t __n; + undefined8 *puVar21; + int iVar22; + size_t __n_00; + void *__s_00; + undefined8 *puVar23; + int *piVar24; + Mat *pMVar25; + long lVar26; + int *piVar27; + undefined8 *puVar28; + long lVar29; + undefined1 *puVar30; + undefined8 *puVar31; + long lVar32; + long lVar33; + int iVar34; + long *plVar35; + long *plVar36; + size_t __n_01; + long *plVar37; + long lVar38; + undefined4 *puVar39; + long lVar40; + long lVar41; + uint uVar42; + undefined4 *puVar43; + long *__dest; + long lVar44; + undefined4 *puVar45; + ulong uVar46; + short sVar47; + short sVar48; + short sVar49; + short sVar50; + short sVar51; + short sVar52; + int iVar53; + short sVar55; + short sVar56; + size_t __n_02; + undefined8 uVar54; + int iVar57; + short sVar58; + int iVar59; + undefined8 uVar60; + int iVar61; + int iVar62; + short sVar64; + short sVar65; + undefined8 uVar63; + int iVar66; + short sVar67; + int iVar68; + undefined8 uVar69; + int iVar70; + int iVar71; + int iVar72; + int iVar73; + int iVar74; + int iVar75; + int iVar76; + int iVar77; + int iVar78; + double dVar79; + undefined1 *puVar80; + ulong local_650; + undefined4 *local_648; + undefined4 *local_640; + uint local_634; + Mat *local_628; + int local_620; + int local_618; + int local_614; + long *local_5f0; + undefined8 local_5d0; + int local_5c8; + int local_5c4; + int local_5c0; + int local_5bc; + undefined4 *local_5b8; + Mat *local_5b0; + undefined4 *local_5a8; + undefined8 local_5a0; + undefined8 uStack_598; + long local_590; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + long local_568; + undefined8 *local_560; + long *local_558; + long local_550 [2]; + undefined8 local_540; + undefined8 uStack_538; + long local_530; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + long local_508; + undefined8 *local_500; + long *local_4f8; + long local_4f0 [3]; + undefined4 local_4d8; + int local_4d4; + int local_4d0; + int local_4cc; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + int *local_498; + undefined8 *local_490; + undefined8 local_488; + undefined8 local_480; + undefined4 local_478; + int local_474; + undefined4 local_470; + undefined4 local_46c; + long local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + long local_440; + undefined4 *local_438; + long *local_430; + long local_428 [2]; + undefined4 *local_418; + Mat *local_410; + undefined4 local_408; + undefined4 local_404; + + local_634 = (uint)param_6; + uVar18 = _InputArray::type(param_1,-1); + uVar15 = (uint)((uVar18 & 0xffffffff) >> 3) & 0x1ff; + iVar34 = uVar15 + 1; + _InputArray::size((int)param_1); + if ((uVar18 & 7) != 0) { + local_418 = (undefined4 *)0x0; + local_410 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_418,0xe); + uVar13 = s_depth____CV_8U_0043daf8._12_2_; + uVar12 = s_depth____CV_8U_0043daf8._8_4_; + *(undefined8 *)pcVar19 = s_depth____CV_8U_0043daf8._0_8_; + *(undefined4 *)(pcVar19 + 8) = uVar12; + *(undefined2 *)(pcVar19 + 0xc) = uVar13; + error(-0xd7,(String *)&local_418, + "void cv::Canny(cv::InputArray, cv::OutputArray, double, double, int, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/canny.cpp",0x24b); + String::deallocate((String *)&local_418); + } + local_418 = (undefined4 *)local_5d0; + _OutputArray::create(param_2,(String *)&local_418,0,0xffffffff,0,0); + if (local_634 < (uint)param_5 >> 0x1f) { + param_5 = param_5 & 0x7fffffff; + local_634 = 1; + } + if (((param_5 & 1U) == 0) || ((4 < param_5 - 3U && (param_5 != 0xffffffff)))) { + local_418 = (undefined4 *)0x0; + local_410 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_418,0x1b); + cVar8 = s_Aperture_size_should_be_odd_0043db50[0x1a]; + uVar13 = s_Aperture_size_should_be_odd_0043db50._24_2_; + uVar60 = s_Aperture_size_should_be_odd_0043db50._8_8_; + uVar54 = s_Aperture_size_should_be_odd_0043db50._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s_Aperture_size_should_be_odd_0043db50._16_8_; + *(undefined2 *)(pcVar19 + 0x18) = uVar13; + pcVar19[0x1a] = cVar8; + *(undefined8 *)pcVar19 = uVar54; + *(undefined8 *)(pcVar19 + 8) = uVar60; + error(-0xce,(String *)&local_418, + "void cv::Canny(cv::InputArray, cv::OutputArray, double, double, int, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/canny.cpp",0x256); + String::deallocate((String *)&local_418); + } + dVar79 = param_3; + if (param_4 < param_3) { + dVar79 = param_4; + param_4 = param_3; + } + iVar14 = _InputArray::kind(param_1); + if (iVar14 == 0x10000) { + pMVar25 = *(Mat **)(param_1 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(undefined4 *)pMVar25; + local_4d4 = *(int *)(pMVar25 + 4); + local_4d0 = *(int *)(pMVar25 + 8); + local_4cc = *(int *)(pMVar25 + 0xc); + local_4c8 = *(undefined8 *)(pMVar25 + 0x10); + local_4c0 = *(undefined8 *)(pMVar25 + 0x18); + local_4b8 = *(undefined8 *)(pMVar25 + 0x20); + local_4b0 = *(undefined8 *)(pMVar25 + 0x28); + local_4a8 = *(undefined8 *)(pMVar25 + 0x30); + local_4a0 = *(long *)(pMVar25 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar24 = (int *)(local_4a0 + 0x14); + do { + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar9) { + *piVar24 = *piVar24 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar25 + 4) < 3) { + local_488 = **(undefined8 **)(pMVar25 + 0x48); + local_480 = (*(undefined8 **)(pMVar25 + 0x48))[1]; + } + else { + local_4d4 = 0; + Mat::copySize((Mat *)&local_4d8,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar14 = _InputArray::kind((_InputArray *)param_2); + if (iVar14 == 0x10000) { + pMVar25 = *(Mat **)(param_2 + 8); + local_438 = &local_470; + local_430 = local_428; + local_478 = *(undefined4 *)pMVar25; + local_474 = *(int *)(pMVar25 + 4); + local_470 = *(undefined4 *)(pMVar25 + 8); + local_46c = *(undefined4 *)(pMVar25 + 0xc); + local_468 = *(long *)(pMVar25 + 0x10); + local_460 = *(undefined8 *)(pMVar25 + 0x18); + local_458 = *(undefined8 *)(pMVar25 + 0x20); + local_450 = *(undefined8 *)(pMVar25 + 0x28); + local_448 = *(undefined8 *)(pMVar25 + 0x30); + local_440 = *(long *)(pMVar25 + 0x38); + local_428[1] = 0; + local_428[0] = 0; + if (local_440 != 0) { + piVar24 = (int *)(local_440 + 0x14); + do { + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar9) { + *piVar24 = *piVar24 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (2 < *(int *)(pMVar25 + 4)) { + local_474 = 0; + Mat::copySize((Mat *)&local_478,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_628 = (Mat *)&local_478; + local_558 = local_550; + iVar14 = uVar15 * 8 + 3; + local_560 = &uStack_598; + uStack_598 = _UNK_0019a208; + local_5a0 = _DAT_0019a200; + local_590 = 0; + local_588 = 0; + local_580 = 0; + local_550[1] = 0; + local_550[0] = 0; + local_578 = 0; + local_570 = 0; + local_568 = 0; + local_5c8 = local_4d0; + local_5c4 = local_4cc; + Mat::create((Mat *)&local_5a0,2,&local_5c8,iVar14); + local_4f8 = local_4f0; + local_500 = &uStack_538; + uStack_538 = _UNK_0019a208; + local_540 = _DAT_0019a200; + local_530 = 0; + local_528 = 0; + local_4f0[1] = 0; + local_4f0[0] = 0; + local_520 = 0; + local_518 = 0; + local_510 = 0; + local_508 = 0; + local_5c0 = local_4d0; + local_5bc = local_4cc; + Mat::create((Mat *)&local_540,2,&local_5c0,iVar14); + local_5b8._0_4_ = 0x1010000; + local_5a8 = (undefined4 *)0x0; + local_408 = 0; + local_404 = 0; + /* WARNING: Ignoring partial resolution of indirect */ + local_418._0_4_ = 0x2010000; + local_5b0 = (Mat *)&local_4d8; + local_410 = (Mat *)&local_5a0; + Sobel((_InputArray *)&local_5b8,(_OutputArray *)&local_418,3,1,0,param_5,1.0,0.0,1); + local_5b8 = (undefined4 *)CONCAT44(local_5b8._4_4_,0x1010000); + local_5a8 = (undefined4 *)0x0; + local_408 = 0; + local_404 = 0; + /* WARNING: Ignoring partial resolution of indirect */ + local_418._0_4_ = 0x2010000; + local_5b0 = (Mat *)&local_4d8; + local_410 = (Mat *)&local_540; + Sobel((_InputArray *)&local_5b8,(_OutputArray *)&local_418,3,0,1,param_5,1.0,0.0,1); + if (local_634 == 0) { + local_618 = (int)param_4 - (uint)(param_4 < (double)(int)param_4); + iVar14 = (int)dVar79 - (uint)(dVar79 < (double)(int)dVar79); + } + else if (dVar79 < DAT_0019a1f8) { + if (param_4 < DAT_0019a1f8) { + if (0.0 < dVar79) { + dVar79 = dVar79 * dVar79; + } + iVar14 = (int)dVar79 - (uint)(dVar79 < (double)(int)dVar79); + goto LAB_00199d40; + } + if (0.0 < dVar79) goto LAB_00199cb0; + local_618 = 0x3fff0001; + iVar14 = (int)dVar79 - (uint)(dVar79 < (double)(int)dVar79); + } + else { + dVar79 = DAT_0019a1f8; + if (param_4 < DAT_0019a1f8) { + iVar14 = 0x3fff0001; +LAB_00199d40: + if (0.0 < param_4) { + param_4 = param_4 * param_4; + } + } + else { +LAB_00199cb0: + iVar14 = (int)(dVar79 * dVar79); + param_4 = DAT_0019a1f8 * DAT_0019a1f8; + iVar14 = iVar14 - (uint)(dVar79 * dVar79 < (double)iVar14); + } + local_618 = (int)param_4 - (uint)(param_4 < (double)(int)param_4); + } + iVar17 = local_4cc + 2; + lVar44 = (long)iVar34 * (long)iVar17; + local_418 = &local_408; + local_410 = (Mat *)0x408; + __n_00 = (size_t)iVar17; + uVar18 = lVar44 * 0xc + (long)(iVar17 * (local_4d0 + 2)); + if (0x408 < uVar18) { + local_418 = operator_new__(uVar18); + } + __n_02 = NEON_shl(__n_00,2); + puVar45 = local_418 + lVar44; + local_5a8 = puVar45 + lVar44; + __s = local_5a8 + lVar44; + local_5b8 = local_418; + local_5b0 = (Mat *)puVar45; + local_410 = (Mat *)uVar18; + memset(local_418,0,__n_02); + memset(__s,1,__n_00); + memset((undefined4 *)((long)__s + (long)(local_4d0 + 1) * (long)iVar17),1,__n_00); + iVar17 = (local_4cc * local_4d0) / 10; + local_650 = (ulong)iVar17; + if (iVar17 < 0x400) { + local_650 = 0x400; + } + local_614 = (int)local_650; + plVar20 = operator_new(local_650 * 8); + plVar35 = plVar20 + local_650; + memset(plVar20,0,local_650 * 8); + if (-1 < local_4d0) { + puVar80 = (undefined1 *)((long)__s + 1); + lVar44 = 0; + __dest = plVar20; + local_5f0 = plVar35; + if (local_4d0 < 1) goto LAB_001992bc; +LAB_00198af8: + piVar24 = puVar45 + 1; + iVar17 = iVar34 * local_4cc; + iVar16 = iVar17 + -7; + lVar38 = lVar44 * *local_558; + lVar32 = lVar44 * *local_4f8; + puVar23 = (undefined8 *)(local_590 + lVar38); + puVar3 = (undefined8 *)(local_530 + lVar32); + if (local_634 == 0) { + if (iVar16 < 1) { + iVar22 = 0; + } + else { + puVar21 = (undefined8 *)(puVar45 + 5); + iVar22 = 0; + puVar28 = puVar3; + puVar31 = puVar23; + do { + uVar69 = puVar28[1]; + uVar63 = *puVar28; + uVar60 = puVar31[1]; + uVar54 = *puVar31; + iVar22 = iVar22 + 8; + iVar62 = MP_INT_ABS((int)(short)uVar54); + iVar66 = MP_INT_ABS((int)(short)((ulong)uVar54 >> 0x10)); + iVar68 = MP_INT_ABS((int)(short)((ulong)uVar54 >> 0x20)); + iVar70 = MP_INT_ABS((int)(short)((ulong)uVar54 >> 0x30)); + iVar53 = MP_INT_ABS((int)(short)uVar63); + iVar57 = MP_INT_ABS((int)(short)((ulong)uVar63 >> 0x10)); + iVar59 = MP_INT_ABS((int)(short)((ulong)uVar63 >> 0x20)); + iVar61 = MP_INT_ABS((int)(short)((ulong)uVar63 >> 0x30)); + iVar71 = MP_INT_ABS((int)(short)uVar60); + iVar72 = MP_INT_ABS((int)(short)((ulong)uVar60 >> 0x10)); + iVar73 = MP_INT_ABS((int)(short)((ulong)uVar60 >> 0x20)); + iVar74 = MP_INT_ABS((int)(short)((ulong)uVar60 >> 0x30)); + iVar75 = MP_INT_ABS((int)(short)uVar69); + iVar76 = MP_INT_ABS((int)(short)((ulong)uVar69 >> 0x10)); + iVar77 = MP_INT_ABS((int)(short)((ulong)uVar69 >> 0x20)); + iVar78 = MP_INT_ABS((int)(short)((ulong)uVar69 >> 0x30)); + puVar21[-1] = CONCAT44(iVar70 + iVar61,iVar68 + iVar59); + puVar21[-2] = CONCAT44(iVar66 + iVar57,iVar62 + iVar53); + puVar21[1] = CONCAT44(iVar74 + iVar78,iVar73 + iVar77); + *puVar21 = CONCAT44(iVar72 + iVar76,iVar71 + iVar75); + puVar21 = puVar21 + 4; + puVar28 = puVar28 + 2; + puVar31 = puVar31 + 2; + } while (iVar22 < iVar16); + } + if (iVar22 < iVar17) { + lVar41 = (long)iVar22; + uVar10 = iVar17 - iVar22; + uVar15 = -((uint)((ulong)(puVar45 + lVar41 + 1) >> 2) & 3) & 3; + uVar18 = (ulong)uVar15; + if (uVar10 < uVar15) { + uVar18 = (ulong)uVar10; + } + if (uVar10 < 9) { + uVar18 = (ulong)uVar10; + } + uVar15 = (uint)uVar18; + if (uVar15 != 0) { + iVar16 = iVar22 + 1; + piVar24[lVar41] = + (int)*(short *)((long)puVar23 + lVar41 * 2) + + (int)*(short *)((long)puVar3 + lVar41 * 2); + if (uVar15 != 1) { + lVar29 = (long)iVar16 * 2; + iVar53 = iVar22 + 2; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar29) + (int)*(short *)((long)puVar3 + lVar29); + iVar16 = iVar53; + if (uVar15 != 2) { + lVar29 = (long)iVar53 * 2; + iVar16 = iVar22 + 3; + piVar24[iVar53] = + (int)*(short *)((long)puVar23 + lVar29) + (int)*(short *)((long)puVar3 + lVar29); + if (uVar15 != 3) { + lVar29 = (long)iVar16 * 2; + iVar53 = iVar22 + 4; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar29) + + (int)*(short *)((long)puVar3 + lVar29); + iVar16 = iVar53; + if (uVar15 != 4) { + lVar29 = (long)iVar53 * 2; + iVar16 = iVar22 + 5; + piVar24[iVar53] = + (int)*(short *)((long)puVar23 + lVar29) + + (int)*(short *)((long)puVar3 + lVar29); + if (uVar15 != 5) { + lVar29 = (long)iVar16 * 2; + iVar53 = iVar22 + 6; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar29) + + (int)*(short *)((long)puVar3 + lVar29); + iVar16 = iVar53; + if (uVar15 != 6) { + lVar29 = (long)iVar53 * 2; + iVar16 = iVar22 + 7; + piVar24[iVar53] = + (int)*(short *)((long)puVar23 + lVar29) + + (int)*(short *)((long)puVar3 + lVar29); + if (uVar15 == 8) { + lVar29 = (long)iVar16 * 2; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar29) + + (int)*(short *)((long)puVar3 + lVar29); + iVar16 = iVar22 + 8; + } + } + } + } + } + } + } + iVar22 = iVar16; + if (uVar10 == uVar15) goto joined_r0x001996cc; + } + uVar2 = ((uVar10 - uVar15) - 8 >> 3) + 1; + iVar16 = uVar2 * 8; + if (6 < (uVar10 - 1) - uVar15) { + lVar29 = (lVar41 + uVar18) * 2; + uVar42 = 0; + puVar21 = (undefined8 *)(puVar45 + lVar41 + 1 + uVar18); + puVar28 = (undefined8 *)(local_590 + lVar29 + lVar38); + puVar31 = (undefined8 *)(local_530 + lVar29 + lVar32); + do { + uVar60 = puVar28[1]; + uVar54 = *puVar28; + uVar69 = puVar31[1]; + uVar63 = *puVar31; + uVar42 = uVar42 + 1; + iVar75 = MP_INT_ABS((int)(short)uVar54); + iVar76 = MP_INT_ABS((int)(short)((ulong)uVar54 >> 0x10)); + iVar77 = MP_INT_ABS((int)(short)((ulong)uVar54 >> 0x20)); + iVar78 = MP_INT_ABS((int)(short)((ulong)uVar54 >> 0x30)); + iVar71 = MP_INT_ABS((int)(short)uVar63); + iVar72 = MP_INT_ABS((int)(short)((ulong)uVar63 >> 0x10)); + iVar73 = MP_INT_ABS((int)(short)((ulong)uVar63 >> 0x20)); + iVar74 = MP_INT_ABS((int)(short)((ulong)uVar63 >> 0x30)); + iVar53 = MP_INT_ABS((int)(short)uVar60); + iVar57 = MP_INT_ABS((int)(short)((ulong)uVar60 >> 0x10)); + iVar59 = MP_INT_ABS((int)(short)((ulong)uVar60 >> 0x20)); + iVar61 = MP_INT_ABS((int)(short)((ulong)uVar60 >> 0x30)); + iVar62 = MP_INT_ABS((int)(short)uVar69); + iVar66 = MP_INT_ABS((int)(short)((ulong)uVar69 >> 0x10)); + iVar68 = MP_INT_ABS((int)(short)((ulong)uVar69 >> 0x20)); + iVar70 = MP_INT_ABS((int)(short)((ulong)uVar69 >> 0x30)); + puVar21[1] = CONCAT44(iVar78 + iVar74,iVar77 + iVar73); + *puVar21 = CONCAT44(iVar76 + iVar72,iVar75 + iVar71); + puVar21[3] = CONCAT44(iVar61 + iVar70,iVar59 + iVar68); + puVar21[2] = CONCAT44(iVar57 + iVar66,iVar53 + iVar62); + puVar21 = puVar21 + 4; + puVar28 = puVar28 + 2; + puVar31 = puVar31 + 2; + } while (uVar42 < uVar2); + iVar22 = iVar22 + iVar16; + if (iVar16 == uVar10 - uVar15) goto joined_r0x001996cc; + } + iVar16 = iVar22 + 1; + lVar32 = (long)iVar22 * 2; + piVar24[iVar22] = + (int)*(short *)((long)puVar23 + lVar32) + (int)*(short *)((long)puVar3 + lVar32); + if (iVar16 < iVar17) { + iVar53 = iVar22 + 2; + lVar32 = (long)iVar16 * 2; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar32) + (int)*(short *)((long)puVar3 + lVar32); + if (iVar53 < iVar17) { + iVar16 = iVar22 + 3; + lVar32 = (long)iVar53 * 2; + piVar24[iVar53] = + (int)*(short *)((long)puVar23 + lVar32) + (int)*(short *)((long)puVar3 + lVar32); + if (iVar16 < iVar17) { + iVar53 = iVar22 + 4; + lVar32 = (long)iVar16 * 2; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar32) + (int)*(short *)((long)puVar3 + lVar32); + if (iVar53 < iVar17) { + iVar16 = iVar22 + 5; + lVar32 = (long)iVar53 * 2; + piVar24[iVar53] = + (int)*(short *)((long)puVar23 + lVar32) + + (int)*(short *)((long)puVar3 + lVar32); + if (iVar16 < iVar17) { + iVar22 = iVar22 + 6; + lVar32 = (long)iVar16 * 2; + piVar24[iVar16] = + (int)*(short *)((long)puVar23 + lVar32) + + (int)*(short *)((long)puVar3 + lVar32); + if (iVar22 < iVar17) { + lVar32 = (long)iVar22 * 2; + piVar24[iVar22] = + (int)*(short *)((long)puVar23 + lVar32) + + (int)*(short *)((long)puVar3 + lVar32); + } + } + } + } + } + } + } + } + else { + if (iVar16 < 1) { + iVar22 = 0; + } + else { + puVar21 = (undefined8 *)(puVar45 + 5); + iVar22 = 0; + puVar28 = puVar3; + puVar31 = puVar23; + do { + uVar60 = puVar31[1]; + uVar54 = *puVar31; + uVar69 = puVar28[1]; + uVar63 = *puVar28; + iVar22 = iVar22 + 8; + sVar47 = (short)((ulong)uVar54 >> 0x10); + sVar48 = (short)((ulong)uVar54 >> 0x20); + sVar49 = (short)((ulong)uVar54 >> 0x30); + sVar50 = (short)((ulong)uVar63 >> 0x10); + sVar51 = (short)((ulong)uVar63 >> 0x20); + sVar52 = (short)((ulong)uVar63 >> 0x30); + puVar21[-1] = CONCAT44((int)sVar49 * (int)sVar49 + (int)sVar52 * (int)sVar52, + (int)sVar48 * (int)sVar48 + (int)sVar51 * (int)sVar51); + puVar21[-2] = CONCAT44((int)sVar47 * (int)sVar47 + (int)sVar50 * (int)sVar50, + (int)(short)uVar54 * (int)(short)uVar54 + + (int)(short)uVar63 * (int)(short)uVar63); + sVar47 = (short)((ulong)uVar60 >> 0x10); + sVar48 = (short)((ulong)uVar60 >> 0x20); + sVar49 = (short)((ulong)uVar60 >> 0x30); + sVar50 = (short)((ulong)uVar69 >> 0x10); + sVar51 = (short)((ulong)uVar69 >> 0x20); + sVar52 = (short)((ulong)uVar69 >> 0x30); + puVar21[1] = CONCAT44((int)sVar49 * (int)sVar49 + (int)sVar52 * (int)sVar52, + (int)sVar48 * (int)sVar48 + (int)sVar51 * (int)sVar51); + *puVar21 = CONCAT44((int)sVar47 * (int)sVar47 + (int)sVar50 * (int)sVar50, + (int)(short)uVar60 * (int)(short)uVar60 + + (int)(short)uVar69 * (int)(short)uVar69); + puVar21 = puVar21 + 4; + puVar28 = puVar28 + 2; + puVar31 = puVar31 + 2; + } while (iVar22 < iVar16); + } + if (iVar22 < iVar17) { + lVar41 = (long)iVar22; + uVar10 = iVar17 - iVar22; + uVar15 = -((uint)((ulong)(puVar45 + lVar41 + 1) >> 2) & 3) & 3; + uVar18 = (ulong)uVar15; + if (uVar10 < uVar15) { + uVar18 = (ulong)uVar10; + } + if (uVar10 < 9) { + uVar18 = (ulong)uVar10; + } + uVar15 = (uint)uVar18; + if (uVar15 != 0) { + iVar16 = iVar22 + 1; + iVar57 = (int)*(short *)((long)puVar3 + lVar41 * 2); + iVar53 = (int)*(short *)((long)puVar23 + lVar41 * 2); + piVar24[lVar41] = iVar57 * iVar57 + iVar53 * iVar53; + if (uVar15 != 1) { + lVar29 = (long)iVar16 * 2; + iVar53 = iVar22 + 2; + iVar59 = (int)*(short *)((long)puVar3 + lVar29); + iVar57 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar16] = iVar59 * iVar59 + iVar57 * iVar57; + iVar16 = iVar53; + if (uVar15 != 2) { + lVar29 = (long)iVar53 * 2; + iVar16 = iVar22 + 3; + iVar59 = (int)*(short *)((long)puVar3 + lVar29); + iVar57 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar53] = iVar59 * iVar59 + iVar57 * iVar57; + if (uVar15 != 3) { + lVar29 = (long)iVar16 * 2; + iVar53 = iVar22 + 4; + iVar59 = (int)*(short *)((long)puVar3 + lVar29); + iVar57 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar16] = iVar59 * iVar59 + iVar57 * iVar57; + iVar16 = iVar53; + if (uVar15 != 4) { + lVar29 = (long)iVar53 * 2; + iVar16 = iVar22 + 5; + iVar59 = (int)*(short *)((long)puVar3 + lVar29); + iVar57 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar53] = iVar59 * iVar59 + iVar57 * iVar57; + if (uVar15 != 5) { + lVar29 = (long)iVar16 * 2; + iVar53 = iVar22 + 6; + iVar59 = (int)*(short *)((long)puVar3 + lVar29); + iVar57 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar16] = iVar59 * iVar59 + iVar57 * iVar57; + iVar16 = iVar53; + if (uVar15 != 6) { + lVar29 = (long)iVar53 * 2; + iVar16 = iVar22 + 7; + iVar59 = (int)*(short *)((long)puVar3 + lVar29); + iVar57 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar53] = iVar59 * iVar59 + iVar57 * iVar57; + if (uVar15 == 8) { + lVar29 = (long)iVar16 * 2; + iVar57 = (int)*(short *)((long)puVar3 + lVar29); + iVar53 = (int)*(short *)((long)puVar23 + lVar29); + piVar24[iVar16] = iVar57 * iVar57 + iVar53 * iVar53; + iVar16 = iVar22 + 8; + } + } + } + } + } + } + } + iVar22 = iVar16; + if (uVar15 == uVar10) goto joined_r0x001996cc; + } + uVar2 = ((uVar10 - uVar15) - 8 >> 3) + 1; + iVar16 = uVar2 * 8; + if (6 < (uVar10 - 1) - uVar15) { + lVar29 = (uVar18 + lVar41) * 2; + uVar42 = 0; + puVar21 = (undefined8 *)(puVar45 + uVar18 + lVar41 + 1); + puVar28 = (undefined8 *)(local_590 + lVar29 + lVar38); + puVar31 = (undefined8 *)(local_530 + lVar32 + lVar29); + do { + uVar60 = puVar31[1]; + uVar54 = *puVar31; + uVar69 = puVar28[1]; + uVar63 = *puVar28; + uVar42 = uVar42 + 1; + sVar55 = (short)((ulong)uVar54 >> 0x10); + sVar56 = (short)((ulong)uVar54 >> 0x20); + sVar58 = (short)((ulong)uVar54 >> 0x30); + sVar47 = (short)((ulong)uVar60 >> 0x10); + sVar49 = (short)((ulong)uVar60 >> 0x20); + sVar51 = (short)((ulong)uVar60 >> 0x30); + sVar64 = (short)((ulong)uVar63 >> 0x10); + sVar65 = (short)((ulong)uVar63 >> 0x20); + sVar67 = (short)((ulong)uVar63 >> 0x30); + sVar48 = (short)((ulong)uVar69 >> 0x10); + sVar50 = (short)((ulong)uVar69 >> 0x20); + sVar52 = (short)((ulong)uVar69 >> 0x30); + puVar21[1] = CONCAT44((int)sVar58 * (int)sVar58 + (int)sVar67 * (int)sVar67, + (int)sVar56 * (int)sVar56 + (int)sVar65 * (int)sVar65); + *puVar21 = CONCAT44((int)sVar55 * (int)sVar55 + (int)sVar64 * (int)sVar64, + (int)(short)uVar54 * (int)(short)uVar54 + + (int)(short)uVar63 * (int)(short)uVar63); + puVar21[3] = CONCAT44((int)sVar51 * (int)sVar51 + (int)sVar52 * (int)sVar52, + (int)sVar49 * (int)sVar49 + (int)sVar50 * (int)sVar50); + puVar21[2] = CONCAT44((int)sVar47 * (int)sVar47 + (int)sVar48 * (int)sVar48, + (int)(short)uVar60 * (int)(short)uVar60 + + (int)(short)uVar69 * (int)(short)uVar69); + puVar21 = puVar21 + 4; + puVar28 = puVar28 + 2; + puVar31 = puVar31 + 2; + } while (uVar42 < uVar2); + iVar22 = iVar22 + iVar16; + if (iVar16 == uVar10 - uVar15) goto joined_r0x001996cc; + } + iVar16 = iVar22 + 1; + lVar32 = (long)iVar22 * 2; + iVar57 = (int)*(short *)((long)puVar3 + lVar32); + iVar53 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar22] = iVar57 * iVar57 + iVar53 * iVar53; + if (iVar16 < iVar17) { + iVar53 = iVar22 + 2; + lVar32 = (long)iVar16 * 2; + iVar59 = (int)*(short *)((long)puVar3 + lVar32); + iVar57 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar16] = iVar59 * iVar59 + iVar57 * iVar57; + if (iVar53 < iVar17) { + iVar16 = iVar22 + 3; + lVar32 = (long)iVar53 * 2; + iVar59 = (int)*(short *)((long)puVar3 + lVar32); + iVar57 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar53] = iVar59 * iVar59 + iVar57 * iVar57; + if (iVar16 < iVar17) { + iVar53 = iVar22 + 4; + lVar32 = (long)iVar16 * 2; + iVar59 = (int)*(short *)((long)puVar3 + lVar32); + iVar57 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar16] = iVar59 * iVar59 + iVar57 * iVar57; + if (iVar53 < iVar17) { + iVar16 = iVar22 + 5; + lVar32 = (long)iVar53 * 2; + iVar59 = (int)*(short *)((long)puVar3 + lVar32); + iVar57 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar53] = iVar59 * iVar59 + iVar57 * iVar57; + if (iVar16 < iVar17) { + iVar22 = iVar22 + 6; + lVar32 = (long)iVar16 * 2; + iVar57 = (int)*(short *)((long)puVar3 + lVar32); + iVar53 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar16] = iVar57 * iVar57 + iVar53 * iVar53; + if (iVar22 < iVar17) { + lVar32 = (long)iVar22 * 2; + iVar16 = (int)*(short *)((long)puVar3 + lVar32); + iVar17 = (int)*(short *)((long)puVar23 + lVar32); + piVar24[iVar22] = iVar16 * iVar16 + iVar17 * iVar17; + } + } + } + } + } + } + } + } +joined_r0x001996cc: + plVar36 = plVar35; + plVar37 = __dest; + if (iVar34 == 1) { + piVar24[local_4cc] = 0; + *puVar45 = 0; + } + else { + if (0 < local_4cc) { + lVar32 = 0; + lVar38 = 1; + iVar17 = 0; + puVar43 = puVar45; + piVar27 = piVar24; + do { + iVar22 = puVar43[1]; + iVar16 = 1; + puVar39 = puVar43; + lVar41 = lVar38; + iVar53 = iVar17; + do { + piVar1 = puVar39 + 2; + iVar57 = iVar16 + iVar17; + lVar29 = (long)iVar53; + iVar16 = iVar16 + 1; + puVar39 = puVar39 + 1; + if (iVar22 < *piVar1) { + iVar22 = *piVar1; + lVar29 = lVar41; + iVar53 = iVar57; + } + lVar41 = lVar41 + 1; + } while (iVar16 < iVar34); + *piVar27 = iVar22; + iVar16 = (int)lVar32; + iVar17 = iVar17 + iVar34; + puVar43 = puVar43 + iVar34; + lVar38 = lVar38 + iVar34; + *(undefined2 *)((long)puVar23 + lVar32 * 2) = *(undefined2 *)((long)puVar23 + lVar29 * 2); + *(undefined2 *)((long)puVar3 + lVar32 * 2) = *(undefined2 *)((long)puVar3 + lVar29 * 2); + lVar32 = lVar32 + 1; + piVar27 = piVar27 + 1; + } while (iVar16 + 1 < local_4cc); + } + piVar24[local_4cc] = 0; + *puVar45 = 0; + } + do { + iVar17 = local_4cc; + lVar38 = local_530; + lVar32 = local_590; + pMVar25 = local_5b0; + plVar35 = plVar36; + __dest = plVar37; + if (lVar44 != 0) { + lVar26 = (long)plVar20 - (long)plVar37 >> 3; + puVar80[local_4cc] = 1; + puVar80[-1] = 1; + lVar29 = *local_558; + local_648 = local_5b8; + piVar24 = (int *)((long)local_5b0 + 4); + local_640 = local_5a8; + lVar41 = *local_4f8; + lVar40 = (long)local_5a8 - (long)local_5b0 >> 2; + lVar33 = (long)local_5b8 - (long)local_5b0 >> 2; + if ((long)local_650 < lVar26 + local_4cc) { + __n = (long)plVar36 - (long)plVar37; + local_620 = (int)lVar26; + iVar16 = (local_614 * 3) / 2; + local_614 = local_4cc + local_620; + if (local_4cc + local_620 < iVar16) { + local_614 = iVar16; + } + uVar18 = NEON_sshr(__n,3); + local_650 = (ulong)local_614; + if (uVar18 < local_650) { + uVar11 = local_650 - uVar18; + if (uVar11 != 0) { + if ((ulong)((long)local_5f0 - (long)plVar36 >> 3) < uVar11) { + if (0x1fffffffffffffff - uVar18 < uVar11) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar4 = uVar11; + if (uVar11 < uVar18) { + uVar4 = uVar18; + } + uVar4 = uVar4 + uVar18; + if ((uVar4 < uVar18) || (0x1fffffffffffffff < uVar4)) { + local_5f0 = (long *)0xfffffffffffffff8; +LAB_00199dcc: + __dest = operator_new((ulong)local_5f0); + } + else { + __dest = (long *)0x0; + local_5f0 = (long *)0x0; + if (uVar4 != 0) { + local_5f0 = (long *)(uVar4 * 8); + goto LAB_00199dcc; + } + } + __n_01 = uVar11 * 8; + memset((void *)((long)__dest + __n),0,__n_01); + if (uVar18 == 0) { + plVar35 = (long *)((long)__dest + __n + __n_01); + if (plVar37 != (long *)0x0) goto LAB_00199c68; + } + else { + __dest = memmove(__dest,plVar37,__n); + plVar35 = (long *)((long)__dest + __n + __n_01); +LAB_00199c68: + operator_delete(plVar37); + } + local_5f0 = (long *)((long)__dest + (long)local_5f0); + iVar17 = local_4cc; + } + else { + plVar35 = plVar36 + uVar11; + memset(plVar36,0,uVar11 * 8); + } + } + } + else if (local_650 < uVar18) { + plVar35 = plVar37 + local_650; + } + plVar20 = __dest + local_620; + } + if (0 < iVar17) { + lVar26 = 0; + bVar9 = false; + piVar27 = piVar24; + puVar30 = puVar80; + do { + while( true ) { + iVar17 = *piVar27; + iVar16 = (int)lVar26; + if (iVar17 <= iVar14) goto LAB_00199230; + uVar6 = *(ushort *)(lVar38 + (lVar44 + -1) * lVar41 + lVar26 * 2); + uVar7 = *(ushort *)(lVar32 + (lVar44 + -1) * lVar29 + lVar26 * 2); + uVar15 = (int)(short)uVar6 >> 0x1f; + iVar22 = (((int)(short)uVar6 ^ uVar15) - uVar15) * 0x8000; + uVar15 = (int)(short)uVar7 >> 0x1f; + iVar53 = ((int)(short)uVar7 ^ uVar15) - uVar15; + if (iVar22 < iVar53 * 0x3505) break; + if (iVar53 * 0x13505 < iVar22) { + if ((piVar27[lVar33] < iVar17) && (piVar27[lVar40] <= iVar17)) { + if (local_618 < iVar17) goto LAB_001991e4; + goto LAB_00199318; + } +LAB_00199230: + *puVar30 = 1; + } + else { + lVar5 = -1; + if (-1 < (short)(uVar6 ^ uVar7)) { + lVar5 = 1; + } + if (iVar17 <= piVar24[(lVar26 + lVar33) - lVar5]) goto LAB_00199230; + if (piVar24[lVar40 + lVar26 + lVar5] < iVar17) goto LAB_001991d8; + *puVar30 = 1; + } + bVar9 = false; + piVar27 = piVar27 + 1; + lVar26 = lVar26 + 1; + puVar30 = puVar30 + 1; + if (local_4cc <= iVar16 + 1) goto LAB_00199254; + } + if ((iVar17 <= *(int *)((long)pMVar25 + lVar26 * 4)) || (iVar17 < piVar27[1])) + goto LAB_00199230; +LAB_001991d8: + if (local_618 < iVar17) { +LAB_001991e4: + if ((bVar9) || (puVar30[-__n_00] == '\x02')) goto LAB_00199318; + *puVar30 = 2; + bVar9 = true; + *plVar20 = (long)puVar30; + plVar20 = plVar20 + 1; + } + else { +LAB_00199318: + *puVar30 = 0; + } + piVar27 = piVar27 + 1; + lVar26 = lVar26 + 1; + puVar30 = puVar30 + 1; + } while (iVar16 + 1 < local_4cc); +LAB_00199254: + local_648 = local_5b8; + local_640 = local_5a8; + pMVar25 = local_5b0; + } + local_5b0 = (Mat *)local_640; + local_5a8 = local_648; + local_5b8 = (undefined4 *)pMVar25; + } + iVar17 = (int)lVar44 + 1; + if (local_4d0 < iVar17) { + if (plVar20 <= __dest) goto LAB_00199930; + lVar32 = 1 - __n_00; + lVar44 = __n_00 - 1; + plVar36 = __dest; + goto LAB_00199864; + } + iVar16 = 2; + if (iVar17 < 1) { + iVar16 = 1; + } + lVar44 = lVar44 + 1; + puVar80 = puVar80 + __n_00; + puVar45 = *(undefined4 **)((_InputArray *)&local_5b8 + (long)iVar16 * 8); + if ((int)lVar44 < local_4d0) goto LAB_00198af8; +LAB_001992bc: + memset(puVar45,0,__n_02); + plVar36 = plVar35; + plVar37 = __dest; + } while( true ); + } +LAB_001999a0: + if (plVar20 != (long *)0x0) { + operator_delete(plVar20); + } + if ((local_418 != &local_408) && (local_418 != (undefined4 *)0x0)) { + operator_delete__(local_418); + } + if (local_508 != 0) { + piVar24 = (int *)(local_508 + 0x14); + do { + iVar34 = *piVar24; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar9) { + *piVar24 = iVar34 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar34 == 1) { + Mat::deallocate((Mat *)&local_540); + } + } + local_508 = 0; + local_530 = 0; + local_518 = 0; + local_520 = 0; + local_528 = 0; + if (0 < local_540._4_4_) { + iVar34 = 0; + puVar23 = local_500; + do { + *(undefined4 *)puVar23 = 0; + iVar34 = iVar34 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar34 < local_540._4_4_); + } + if (local_4f8 != local_4f0) { + fastFree(local_4f8); + } + if (local_568 != 0) { + piVar24 = (int *)(local_568 + 0x14); + do { + iVar34 = *piVar24; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar9) { + *piVar24 = iVar34 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar34 == 1) { + Mat::deallocate((Mat *)&local_5a0); + } + } + local_568 = 0; + local_590 = 0; + local_578 = 0; + local_580 = 0; + local_588 = 0; + if (0 < local_5a0._4_4_) { + iVar34 = 0; + puVar23 = local_560; + do { + *(undefined4 *)puVar23 = 0; + iVar34 = iVar34 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar34 < local_5a0._4_4_); + } + if (local_558 != local_550) { + fastFree(local_558); + } + if (local_440 != 0) { + piVar24 = (int *)(local_440 + 0x14); + do { + iVar34 = *piVar24; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar9) { + *piVar24 = iVar34 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar34 == 1) { + Mat::deallocate(local_628); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar34 = 0; + puVar45 = local_438; + do { + iVar34 = iVar34 + 1; + *puVar45 = 0; + puVar45 = puVar45 + 1; + } while (iVar34 < local_474); + } + if (local_430 != local_428) { + fastFree(local_430); + } + if (local_4a0 != 0) { + piVar24 = (int *)(local_4a0 + 0x14); + do { + iVar34 = *piVar24; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar9) { + *piVar24 = iVar34 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar34 == 1) { + Mat::deallocate((Mat *)&local_4d8); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar34 = 0; + piVar24 = local_498; + do { + *piVar24 = 0; + iVar34 = iVar34 + 1; + piVar24 = piVar24 + 1; + } while (iVar34 < local_4d4); + } + if (local_490 != &local_488) { + fastFree(local_490); + } + return; + while( true ) { + lVar38 = plVar20[-1]; + if (*(char *)(lVar38 + -1) == '\0') { + *(undefined1 *)(lVar38 + -1) = 2; + plVar20[-1] = lVar38 + -1; + } + else { + plVar20 = plVar20 + -1; + } + plVar35 = plVar20; + if (*(char *)(lVar38 + 1) == '\0') { + plVar35 = plVar20 + 1; + *(undefined1 *)(lVar38 + 1) = 2; + *plVar20 = lVar38 + 1; + } + uVar18 = ~__n_00; + plVar20 = plVar35; + if (*(char *)(lVar38 + uVar18) == '\0') { + plVar20 = plVar35 + 1; + *(undefined1 *)(lVar38 + uVar18) = 2; + *plVar35 = lVar38 + uVar18; + } + pcVar19 = (char *)(lVar38 - __n_00); + if (*pcVar19 == '\0') { + *pcVar19 = '\x02'; + *plVar20 = (long)pcVar19; + plVar20 = plVar20 + 1; + } + plVar35 = plVar20; + if (*(char *)(lVar38 + lVar32) == '\0') { + plVar35 = plVar20 + 1; + *(undefined1 *)(lVar38 + lVar32) = 2; + *plVar20 = lVar38 + lVar32; + } + if (*(char *)(lVar38 + lVar44) == '\0') { + *(undefined1 *)(lVar38 + lVar44) = 2; + *plVar35 = lVar38 + lVar44; + plVar35 = plVar35 + 1; + } + plVar20 = plVar35; + if (*(char *)(lVar38 + __n_00) == '\0') { + plVar20 = plVar35 + 1; + *(undefined1 *)(lVar38 + __n_00) = 2; + *plVar35 = lVar38 + __n_00; + } + lVar41 = __n_00 + 1; + if (*(char *)(lVar38 + lVar41) == '\0') { + *(undefined1 *)(lVar38 + lVar41) = 2; + *plVar20 = lVar38 + lVar41; + plVar20 = plVar20 + 1; + } + plVar35 = plVar37; + plVar36 = __dest; + if (plVar20 <= __dest) break; +LAB_00199864: + lVar38 = (long)plVar20 - (long)plVar36 >> 3; + plVar37 = plVar35; + __dest = plVar36; + if ((long)local_650 <= lVar38 + 7) { + __s_00 = (void *)((long)plVar35 - (long)plVar36); + uVar18 = (long)__s_00 >> 3; + local_614 = (local_614 * 3) / 2; + local_650 = (ulong)local_614; + if (uVar18 < local_650) { + uVar11 = local_650 - uVar18; + if (uVar11 != 0) { + if ((ulong)((long)local_5f0 - (long)plVar35 >> 3) < uVar11) { + if (0x1fffffffffffffff - uVar18 < uVar11) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar4 = uVar11; + if (uVar11 < uVar18) { + uVar4 = uVar18; + } + uVar4 = uVar4 + uVar18; + if ((uVar4 < uVar18) || (0x1fffffffffffffff < uVar4)) { + uVar46 = 0xfffffffffffffff8; +LAB_00199e98: + __dest = operator_new(uVar46); + memset((void *)((long)__dest + (long)__s_00),0,uVar11 * 8); + if (uVar18 == 0) goto LAB_00199e60; +LAB_00199ec0: + memmove(__dest,plVar36,(size_t)__s_00); + plVar37 = (long *)((long)__dest + (long)(uVar11 * 8 + (long)__s_00)); +LAB_00199e74: + operator_delete(plVar36); + } + else { + uVar46 = 0; + __dest = (long *)0x0; + if (uVar4 != 0) { + uVar46 = uVar4 * 8; + goto LAB_00199e98; + } + memset(__s_00,0,uVar11 * 8); + if (uVar18 != 0) goto LAB_00199ec0; +LAB_00199e60: + plVar37 = (long *)((long)__dest + (long)(uVar11 * 8 + (long)__s_00)); + if (plVar36 != (long *)0x0) goto LAB_00199e74; + } + local_5f0 = (long *)((long)__dest + uVar46); + } + else { + plVar37 = plVar35 + uVar11; + memset(plVar35,0,uVar11 * 8); + } + } + } + else if (local_650 < uVar18) { + plVar37 = plVar36 + local_650; + } + plVar20 = __dest + (int)lVar38; + } + } +LAB_00199930: + lVar44 = (long)__s + __n_00 + 1; + plVar20 = __dest; + if (0 < local_4d0) { + iVar34 = 0; + lVar32 = local_468; + do { + lVar38 = 0; + if (0 < local_4cc) { + do { + iVar14 = (int)lVar38; + *(byte *)(lVar32 + lVar38) = -(*(byte *)(lVar44 + lVar38) >> 1); + lVar38 = lVar38 + 1; + } while (iVar14 + 1 < local_4cc); + } + iVar34 = iVar34 + 1; + lVar44 = lVar44 + __n_00; + lVar32 = lVar32 + local_428[0]; + } while (iVar34 < local_4d0); + } + goto LAB_001999a0; +} + + +================================================================== + +### FUNC 0019a210 (732 bytes) name=cvCanny + +void cvCanny(double param_1,double param_2,cv *param_3,cv *param_4,uint param_5,undefined8 param_6, + undefined8 param_7,AutoBuffer *param_8) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + char *pcVar11; + int *piVar12; + int iVar13; + int *piVar14; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_8); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_8); + iVar13 = local_80[-1]; + if (iVar13 == local_20[-1]) { + if (iVar13 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_0019a4a8; + } + else if (iVar13 < 1) { +LAB_0019a4a8: + if (((local_c0 & 7) == 0) && ((local_60 & 0xfff) == 0)) goto LAB_0019a304; + } + else if (*local_80 == *local_20) { + piVar12 = local_80; + piVar14 = local_20; + do { + piVar14 = piVar14 + 1; + if (piVar12 == local_80 + (iVar13 - 1)) goto LAB_0019a4a8; + piVar12 = piVar12 + 1; + } while (*piVar12 == *piVar14); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_d8,0x43); + cVar1 = s_src_size____dst_size____src_dept_0043db88[0x42]; + uVar10 = s_src_size____dst_size____src_dept_0043db88._56_8_; + uVar9 = s_src_size____dst_size____src_dept_0043db88._48_8_; + uVar8 = s_src_size____dst_size____src_dept_0043db88._40_8_; + uVar7 = s_src_size____dst_size____src_dept_0043db88._32_8_; + uVar6 = s_src_size____dst_size____src_dept_0043db88._24_8_; + uVar5 = s_src_size____dst_size____src_dept_0043db88._16_8_; + uVar4 = s_src_size____dst_size____src_dept_0043db88._8_8_; + uVar3 = s_src_size____dst_size____src_dept_0043db88._0_8_; + *(undefined2 *)(pcVar11 + 0x40) = s_src_size____dst_size____src_dept_0043db88._64_2_; + pcVar11[0x42] = cVar1; + *(undefined8 *)pcVar11 = uVar3; + *(undefined8 *)(pcVar11 + 8) = uVar4; + *(undefined8 *)(pcVar11 + 0x10) = uVar5; + *(undefined8 *)(pcVar11 + 0x18) = uVar6; + *(undefined8 *)(pcVar11 + 0x20) = uVar7; + *(undefined8 *)(pcVar11 + 0x28) = uVar8; + *(undefined8 *)(pcVar11 + 0x30) = uVar9; + *(undefined8 *)(pcVar11 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_d8,"void cvCanny(const CvArr*, CvArr*, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/canny.cpp",0x3c7); + cv::String::deallocate((String *)&local_d8); +LAB_0019a304: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::Canny((_InputArray *)local_f0,(_OutputArray *)&local_d8,param_1,param_2,param_5 & 0xff, + SUB41(param_5 >> 0x1f,0)); + if (local_28 != 0) { + piVar12 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar12 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0019a54c (4 bytes) name=FUN_0019a54c + +void FUN_0019a54c(void) + +{ + return; +} + + +================================================================== + +### FUNC 0019a550 (148 bytes) name=FUN_0019a550 + +void FUN_0019a550(long param_1) + +{ + long lVar1; + long local_10; + int local_8; + + lVar1 = *(long *)(param_1 + 0x88); + if (lVar1 != 0) { + if (*(int *)(param_1 + 0x17c) != 0) { + cvSaveMemStoragePos(*(undefined8 *)(param_1 + 8),&local_10); + if ((local_10 == *(long *)(param_1 + 0x40)) && (local_8 == *(int *)(param_1 + 0x48))) { + cvRestoreMemStoragePos(*(undefined8 *)(param_1 + 8),param_1 + 0x30); + *(undefined4 *)(param_1 + 0x17c) = 0; + } + else { + *(undefined4 *)(param_1 + 0x17c) = 0; + } + } + if (*(long *)(lVar1 + 0x18) != 0) { + cvInsertNodeIntoTree + (*(long *)(lVar1 + 0x18),*(undefined8 *)(*(long *)(lVar1 + 0x10) + 0x18), + param_1 + 0x110); + } + *(undefined8 *)(param_1 + 0x88) = 0; + } + return; +} + + +================================================================== + +### FUNC 0019a5e4 (1304 bytes) name=FUN_0019a5e4 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0019a5e4(byte *param_1,uint param_2,ulong param_3,uint *param_4,int param_5,byte param_6, + undefined8 *param_7) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + byte *pbVar6; + byte *pbVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + uint uVar11; + ulong uVar12; + ulong uVar13; + uint uVar14; + ulong uVar15; + uint uVar17; + ulong uVar18; + undefined1 auStack_70 [24]; + uint *local_58; + uint *local_48; + uint local_40 [4]; + undefined4 local_30; + int iStack_2c; + uint local_28; + uint local_24; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + ulong uVar16; + + iStack_2c = param_2 - 1; + iVar2 = param_5 + -1; + local_30 = 0xffffffff; + local_40[0] = 1; + local_40[2] = -param_2; + local_40[1] = 1 - param_2; + uVar5 = param_2 + 1; + uVar3 = ~param_2; + uVar12 = param_3 & 0xffffffff; + uVar17 = (uint)param_3; + uVar13 = (long)param_3 >> 0x20; + uVar14 = (uint)(param_3 >> 0x20); + local_20 = CONCAT44(local_40[1],1); + uStack_18 = CONCAT44(uVar3,local_40[2]); + local_10 = CONCAT44(iStack_2c,0xffffffff); + uStack_8 = CONCAT44(uVar5,param_2); + local_40[3] = uVar3; + local_28 = param_2; + local_24 = uVar5; + cvStartAppendToSeq(param_4,auStack_70); + if (iVar2 < 0) { + param_4[0x18] = uVar17; + param_4[0x19] = uVar14; + } + if ((*param_4 & 0x8000) == 0) { + uVar5 = uVar3; + } + uVar3 = 0; + if ((*param_4 & 0x8000) == 0) { + uVar3 = 4; + } + uVar4 = uVar3 - 1; + while( true ) { + uVar11 = uVar4 & 7; + uVar4 = uVar11 - 1; + if (param_1[(int)uVar5] != 0) break; + if (uVar3 == uVar11) goto LAB_0019aa94; + uVar5 = local_40[(int)(uVar4 & 7)]; + } + if (uVar3 != uVar11) { + uVar18 = param_3 & 0xffffffff; + uVar10 = uVar13 & 0xffffffff; + pbVar6 = param_1; + uVar15 = uVar13 & 0xffffffff; + uVar3 = uVar11 ^ 4; + do { + uVar4 = uVar11 + 1; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 2; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 3; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 4; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 5; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 6; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 7; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 8; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 9; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 10; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 0xb; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 0xc; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 0xd; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 0xe; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 0xf; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + if (pbVar6[(int)local_40[(int)uVar4]] == 0) { + uVar4 = uVar11 + 0x10; + pbVar7 = pbVar6 + (int)local_40[(int)uVar4]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar4 = uVar4 & 7; + uVar8 = (uint)param_3; + uVar9 = (uint)uVar10; + uVar16 = uVar15; + if (uVar4 - 1 < uVar11) { + *pbVar6 = param_6 | 0x80; +LAB_0019a874: + if (-1 < iVar2) goto LAB_0019a878; +LAB_0019a8d4: + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *(char *)local_58 = (char)uVar4; +LAB_0019a920: + if (uVar4 != uVar3) { + if ((int)uVar8 < (int)uVar18) { + uVar18 = param_3 & 0xffffffff; + } + else { + uVar3 = (uint)uVar12; + if ((int)(uint)uVar12 < (int)uVar8) { + uVar3 = uVar8; + } + uVar12 = (ulong)uVar3; + } + uVar16 = uVar10; + if ((int)uVar15 <= (int)uVar9) { + uVar3 = (uint)uVar13; + if ((int)(uint)uVar13 < (int)uVar9) { + uVar3 = uVar9; + } + uVar13 = (ulong)uVar3; + uVar16 = uVar15; + } + } + } + else { + if (*pbVar6 != 1) goto LAB_0019a874; + *pbVar6 = param_6; + if (iVar2 < 0) goto LAB_0019a8d4; +LAB_0019a878: + if ((uVar4 != uVar3) || (param_5 == 1)) { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = uVar8; + local_58[1] = uVar9; + goto LAB_0019a920; + } + } + uVar14 = (uint)uVar16; + uVar17 = (uint)uVar18; + param_3 = (ulong)(uVar8 + (&DAT_00531e50)[(ulong)uVar4 * 2]); + uVar10 = (ulong)(uVar9 + (&DAT_00531e54)[(ulong)uVar4 * 2]); + if ((param_1 == pbVar7) && + (uVar3 = (uint)uVar13, uVar11 = (uint)uVar12, pbVar6 == param_1 + (int)uVar5)) + goto LAB_0019a968; + uVar11 = uVar4 + 4 & 7; + pbVar6 = pbVar7; + uVar15 = uVar16; + uVar3 = uVar4; + } while( true ); + } +LAB_0019aa94: + *param_1 = param_6 | 0x80; + uVar3 = uVar14; + uVar11 = uVar17; + if (-1 < iVar2) { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = uVar17; + local_58[1] = uVar14; + local_58 = local_58 + 2; + } +LAB_0019a968: + iVar2 = uVar3 + (1 - uVar14); + iVar1 = uVar11 + (1 - uVar17); + cvEndWriteSeq(auStack_70); + if (param_5 != 0) { + *(ulong *)(param_4 + 0x1a) = CONCAT44(iVar2,iVar1); + *(ulong *)(param_4 + 0x18) = CONCAT44(uVar14,uVar17); + } + if (param_7 != (undefined8 *)0x0) { + param_7[1] = CONCAT44(iVar2,iVar1); + *param_7 = CONCAT44(uVar14,uVar17); + } + return; +} + + +================================================================== + +### FUNC 0019aafc (1012 bytes) name=FUN_0019aafc + +void FUN_0019aafc(char *param_1,uint param_2,ulong param_3,uint *param_4,int param_5) + +{ + int iVar1; + uint uVar2; + uint uVar3; + ulong uVar4; + ulong uVar5; + uint uVar6; + uint uVar7; + ulong uVar8; + char *pcVar9; + char *pcVar10; + uint uVar11; + ulong uVar12; + undefined1 auStack_70 [24]; + uint *local_58; + uint *local_48; + uint local_40 [4]; + undefined4 local_30; + int iStack_2c; + uint local_28; + uint local_24; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + iStack_2c = param_2 - 1; + uVar5 = param_3 & 0xffffffff; + local_40[0] = 1; + local_40[1] = 1 - param_2; + local_40[2] = -param_2; + uVar6 = ~param_2; + uVar7 = param_2 + 1; + iVar1 = param_5 + -1; + local_30 = 0xffffffff; + local_20 = CONCAT44(local_40[1],1); + uStack_18 = CONCAT44(uVar6,local_40[2]); + local_10 = CONCAT44(iStack_2c,0xffffffff); + uStack_8 = CONCAT44(uVar7,param_2); + uVar12 = (long)param_3 >> 0x20; + local_40[3] = uVar6; + local_28 = param_2; + local_24 = uVar7; + cvStartAppendToSeq(param_4,auStack_70); + uVar11 = (uint)(param_3 >> 0x20); + if (iVar1 < 0) { + param_4[0x18] = (uint)param_3; + param_4[0x19] = uVar11; + } + if ((*param_4 & 0x8000) == 0) { + uVar7 = uVar6; + } + uVar6 = 0; + if ((*param_4 & 0x8000) == 0) { + uVar6 = 4; + } + uVar3 = uVar6 - 1; + while( true ) { + uVar2 = uVar3 & 7; + uVar3 = uVar2 - 1; + if (param_1[(int)uVar7] != '\0') break; + if (uVar6 == uVar2) goto LAB_0019ae08; + uVar7 = local_40[(int)(uVar3 & 7)]; + } + uVar4 = (ulong)(uVar2 ^ 4); + pcVar9 = param_1; + if (uVar6 == uVar2) { +LAB_0019ae08: + *param_1 = -0x7e; + if (-1 < iVar1) { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = (uint)param_3; + local_58[1] = uVar11; + local_58 = local_58 + 2; + } +LAB_0019ae44: + cvEndWriteSeq(auStack_70); + if (param_5 != 0) { + cvBoundingRect(param_4,1); + } + return; + } + do { + uVar6 = uVar2 + 1; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 2; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 3; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 4; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 5; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 6; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 7; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 8; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 9; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 10; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 0xb; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 0xc; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 0xd; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 0xe; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 0xf; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + if (pcVar9[(int)local_40[(int)uVar6]] == '\0') { + uVar6 = uVar2 + 0x10; + pcVar10 = pcVar9 + (int)local_40[(int)uVar6]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar6 = uVar6 & 7; + uVar8 = (ulong)uVar6; + if (uVar6 - 1 < uVar2) { + *pcVar9 = -0x7e; +LAB_0019ad54: + if (iVar1 < 0) goto LAB_0019adb4; +LAB_0019ad58: + if ((uVar6 != (uint)uVar4) || (param_5 == 1)) { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = (uint)uVar5; + local_58[1] = (uint)uVar12; + local_58 = local_58 + 2; + uVar4 = uVar8; + } + uVar5 = (ulong)((uint)uVar5 + (&DAT_00531e50)[uVar8 * 2]); + uVar12 = (ulong)((uint)uVar12 + (&DAT_00531e54)[uVar8 * 2]); + } + else { + if (*pcVar9 != '\x01') goto LAB_0019ad54; + *pcVar9 = '\x02'; + if (-1 < iVar1) goto LAB_0019ad58; +LAB_0019adb4: + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *(char *)local_58 = (char)uVar6; + local_58 = (uint *)((long)local_58 + 1); + } + if ((param_1 == pcVar10) && (pcVar9 == param_1 + (int)uVar7)) goto LAB_0019ae44; + uVar2 = uVar6 + 4 & 7; + pcVar9 = pcVar10; + } while( true ); +} + + +================================================================== + +### FUNC 0019aef0 (52 bytes) name=FUN_0019aef0 + +void FUN_0019aef0(long *param_1) + +{ + cv::DefaultDeleter::operator() + ((DefaultDeleter *)(param_1 + 3),(CvMemStorage *)param_1[2]); + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 0019af24 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 0019af28 (296 bytes) name=cvStartReadChainPoints + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvStartReadChainPoints(long param_1,long param_2) + +{ + undefined1 uVar1; + undefined1 uVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + undefined1 uVar7; + undefined1 uVar8; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvStartReadChainPoints(CvChain*, CvChainPtReader*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x3b); + cv::String::deallocate((String *)&local_10); + } + if ((*(int *)(param_1 + 0x2c) != 1) || (*(int *)(param_1 + 4) < 0x68)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10,"void cvStartReadChainPoints(CvChain*, CvChainPtReader*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x3e); + cv::String::deallocate((String *)&local_10); + } + cvStartReadSeq(param_1,param_2,0); + *(undefined8 *)(param_2 + 0x44) = *(undefined8 *)(param_1 + 0x60); + uVar1 = (undefined1)_DAT_00531e50; + uVar3 = (ulong)_DAT_00531e50 >> 0x20; + uVar2 = (undefined1)uRam0000000000531e58; + uVar4 = (ulong)uRam0000000000531e58 >> 0x20; + uVar7 = (undefined1)_DAT_00531e60; + uVar5 = (ulong)_DAT_00531e60 >> 0x20; + uVar8 = (undefined1)_DAT_00531e68; + uVar6 = (ulong)_DAT_00531e68 >> 0x20; + *(ulong *)(param_2 + 0x54) = + CONCAT17((char)((ulong)_DAT_00531e88 >> 0x20), + CONCAT16((char)_DAT_00531e88, + CONCAT15((char)((ulong)_DAT_00531e80 >> 0x20), + CONCAT14((char)_DAT_00531e80, + CONCAT13((char)((ulong)uRam0000000000531e78 >> 0x20), + CONCAT12((char)uRam0000000000531e78, + CONCAT11((char)((ulong)_DAT_00531e70 >> + 0x20), + (char)_DAT_00531e70))))))); + *(ulong *)(param_2 + 0x4c) = + CONCAT17((char)uVar6, + CONCAT16(uVar8,CONCAT15((char)uVar5, + CONCAT14(uVar7,CONCAT13((char)uVar4, + CONCAT12(uVar2,CONCAT11((char)uVar3, + uVar1))))))) + ; + return; +} + + +================================================================== + +### FUNC 0019b078 (228 bytes) name=cvReadChainPoint + +undefined8 cvReadChainPoint(long param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + char cVar4; + undefined8 uVar5; + char *pcVar6; + char *pcVar7; + ulong uVar8; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvPoint cvReadChainPoint(CvChainPtReader*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x54); + cv::String::deallocate((String *)&local_10); + } + pcVar6 = *(char **)(param_1 + 0x18); + iVar1 = *(int *)(param_1 + 0x44); + iVar2 = *(int *)(param_1 + 0x48); + uVar5 = *(undefined8 *)(param_1 + 0x44); + if (pcVar6 != (char *)0x0) { + pcVar7 = pcVar6 + 1; + cVar4 = *pcVar6; + if (*(char **)(param_1 + 0x28) <= pcVar7) { + cvChangeSeqBlock(param_1,1); + pcVar7 = *(char **)(param_1 + 0x18); + } + uVar8 = -((ulong)(long)cVar4 >> 0x1f & 1) & 0xfffffff800000000 | + ((long)cVar4 & 0xffffffffU) << 3; + *(char **)(param_1 + 0x18) = pcVar7; + *(char *)(param_1 + 0x40) = cVar4; + iVar3 = *(int *)((long)&DAT_00531e54 + uVar8); + *(int *)(param_1 + 0x44) = *(int *)((long)&DAT_00531e50 + uVar8) + iVar1; + *(int *)(param_1 + 0x48) = iVar2 + iVar3; + } + return uVar5; +} + + +================================================================== + +### FUNC 0019b170 (1896 bytes) name=cvStartFindContours + +long * cvStartFindContours(undefined8 param_1,long param_2,int param_3,int param_4,uint param_5, + undefined8 param_6) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + undefined4 uVar8; + uint *puVar9; + long *__s; + long lVar10; + undefined8 *puVar11; + long lVar12; + undefined1 *puVar13; + uint uVar14; + int iVar15; + undefined8 *puVar16; + uint uVar17; + undefined1 *puVar18; + long lVar19; + uint uVar20; + void *pvVar21; + uint uVar22; + uint local_44; + undefined8 local_38; + undefined8 local_30; + long local_28; + long local_20; + + if (param_2 == 0) { + local_28 = param_2; + local_20 = param_2; + cv::String::allocate((String *)&local_28,0); + cv::error(-0x1b,(String *)&local_28, + "_CvContourScanner* cvStartFindContours(void*, CvMemStorage*, int, int, int, CvPoint)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0xbb); + cv::String::deallocate((String *)&local_28); + } + puVar9 = (uint *)cvGetMat(param_1,(String *)&local_28,0,0); + uVar22 = *puVar9 & 0xfff; + if ((param_4 == 2) && (uVar22 == 4)) { + param_4 = 4; +LAB_0019b1f4: + uVar22 = puVar9[9]; + uVar20 = puVar9[1]; + pvVar21 = *(void **)(puVar9 + 6); + local_44 = puVar9[8]; + if (param_5 < 5) goto LAB_0019b214; +LAB_0019b820: + local_38 = 0; + local_30 = 0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xd3,(String *)&local_38, + "_CvContourScanner* cvStartFindContours(void*, CvMemStorage*, int, int, int, CvPoint)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0xcd); + cv::String::deallocate((String *)&local_38); + iVar7 = 0x80; + } + else { + if (((param_4 < 4) && ((*puVar9 & 0xffe) == 0)) || ((param_4 == 4 && (uVar22 == 4)))) + goto LAB_0019b1f4; + local_38 = 0; + local_30 = 0; + pvVar21 = (void *)cv::String::allocate((String *)&local_38,0x77); + memcpy(pvVar21, + "[Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only" + ,0x77); + cv::error(-0xd2,(String *)&local_38, + "_CvContourScanner* cvStartFindContours(void*, CvMemStorage*, int, int, int, CvPoint)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0xc6); + cv::String::deallocate((String *)&local_38); + uVar20 = puVar9[1]; + uVar22 = puVar9[9]; + pvVar21 = *(void **)(puVar9 + 6); + local_44 = puVar9[8]; + if (4 < param_5) goto LAB_0019b820; +LAB_0019b214: + iVar7 = 0x80; + if (param_5 == 0) { + iVar7 = 0x68; + } + } + if (param_3 < iVar7) { + local_38 = 0; + local_30 = 0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xc9,(String *)&local_38, + "_CvContourScanner* cvStartFindContours(void*, CvMemStorage*, int, int, int, CvPoint)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0xd0); + cv::String::deallocate((String *)&local_38); + } + lVar19 = (long)(int)uVar20; + iVar7 = local_44 - 1; + puVar18 = (undefined1 *)((long)pvVar21 + lVar19); + __s = (long *)cv::cvAlloc(0x598); + memset(__s,0,0x598); + __s[1] = param_2; + __s[0x1d] = (long)(__s + 0x22); + *(undefined4 *)((long)__s + 0x84) = 2; + *__s = param_2; + __s[10] = (long)pvVar21; + __s[0xb] = (long)puVar18; + *(uint *)(__s + 0xc) = uVar20; + *(uint *)((long)__s + 100) = uVar22 - 1; + *(int *)(__s + 0xd) = iVar7; + *(int *)(__s + 0x2f) = param_4; + *(undefined8 *)((long)__s + 0x6c) = param_6; + *(undefined4 *)(__s + 0xf) = 1; + *(undefined4 *)((long)__s + 0x74) = 1; + *(undefined4 *)(__s + 0x10) = 1; + *(undefined4 *)(__s + 0x21) = 1; + *(uint *)(__s + 0x1f) = uVar22; + *(uint *)((long)__s + 0xfc) = local_44; + *(undefined4 *)(__s + 0x22) = 0x8000; + *(uint *)(__s + 0x2e) = param_5; + *(uint *)((long)__s + 0x174) = param_5; + if (param_5 - 3 < 2) { + *(undefined4 *)(__s + 0x2e) = 0; + *(undefined4 *)((long)__s + 0x184) = 0x68; + uVar8 = 0x5000; + *(undefined4 *)(__s + 0x31) = 1; + *(int *)(__s + 0x32) = param_3; + *(undefined4 *)((long)__s + 0x194) = 8; +LAB_0019b32c: + *(undefined4 *)(__s + 0x30) = uVar8; + if (param_5 != 0) { + *(undefined4 *)((long)__s + 0x18c) = 0x500c; + cvSaveMemStoragePos(param_2,__s + 4); + if (2 < (int)param_5) { + lVar10 = cvCreateChildMemStorage(__s[1]); + *__s = lVar10; + } + goto LAB_0019b35c; + } + } + else { + if (param_5 != 0) { + *(int *)((long)__s + 0x184) = param_3; + *(undefined4 *)(__s + 0x31) = 8; + uVar8 = 0x500c; + *(int *)(__s + 0x32) = param_3; + *(undefined4 *)((long)__s + 0x194) = 8; + goto LAB_0019b32c; + } + *(int *)((long)__s + 0x184) = param_3; + *(undefined4 *)(__s + 0x31) = 1; + *(int *)(__s + 0x32) = param_3; + *(undefined4 *)((long)__s + 0x194) = 1; + *(undefined4 *)(__s + 0x30) = 0x5000; + } + *(undefined4 *)((long)__s + 0x18c) = 0x5000; + cvSaveMemStoragePos(param_2,__s + 4); +LAB_0019b35c: + if (1 < param_4) { + lVar10 = cvCreateChildMemStorage(__s[1]); + __s[2] = lVar10; + lVar10 = cvCreateSet(0,0x70,0x40,lVar10); + __s[3] = lVar10; + } + uVar3 = (*puVar9 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((*puVar9 & 7) << 1)) & 3); + iVar5 = uVar22 * uVar3; + memset(pvVar21,0,(long)iVar5); + memset((void *)((long)pvVar21 + (long)(int)(uVar20 * iVar7)),0,(long)iVar5); + if (1 < iVar7) { + iVar5 = iVar5 - uVar3; + iVar15 = 1; + lVar10 = (long)iVar5; + puVar13 = puVar18 + lVar10; + uVar22 = -(int)puVar13; + do { + if ((puVar13 < puVar18 + 0x10 && 0 < lVar10 + 0x10) || (uVar3 < 0x17)) { + lVar12 = 0; + do { + puVar13[lVar12] = 0; + puVar18[lVar12] = 0; + lVar12 = lVar12 + 1; + } while ((int)lVar12 < (int)uVar3); + } + else { + uVar6 = uVar22 & 0xf; + if (uVar3 < (uVar22 & 0xf)) { + uVar6 = uVar3; + } + uVar14 = uVar6; + if (uVar6 != 0) { + *puVar13 = 0; + *puVar18 = 0; + if (uVar6 != 1) { + puVar13[1] = 0; + puVar18[1] = 0; + if (uVar6 != 2) { + puVar13[2] = 0; + puVar18[2] = 0; + if (uVar6 != 3) { + puVar13[3] = 0; + puVar18[3] = 0; + if (uVar6 != 4) { + puVar13[4] = 0; + puVar18[4] = 0; + if (uVar6 != 5) { + puVar13[5] = 0; + puVar18[5] = 0; + if (uVar6 != 6) { + puVar13[6] = 0; + puVar18[6] = 0; + if (uVar6 == 7) { + uVar14 = 7; + } + else { + puVar13[7] = 0; + puVar18[7] = 0; + if (uVar6 != 8) { + puVar13[8] = 0; + puVar18[8] = 0; + if (uVar6 != 9) { + puVar13[9] = 0; + puVar18[9] = 0; + if (uVar6 != 10) { + puVar13[10] = 0; + puVar18[10] = 0; + if (uVar6 != 0xb) { + puVar13[0xb] = 0; + puVar18[0xb] = 0; + if (uVar6 != 0xc) { + puVar13[0xc] = 0; + puVar18[0xc] = 0; + if (uVar6 != 0xd) { + puVar13[0xd] = 0; + puVar18[0xd] = 0; + if (uVar6 == 0xf) { + puVar13[0xe] = 0; + puVar18[0xe] = 0; + } + else { + uVar14 = 0xe; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar3 - uVar6) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (uVar3 - 1) - uVar6) { + uVar17 = 0; + puVar11 = (undefined8 *)(puVar18 + uVar6); + puVar16 = (undefined8 *)(puVar18 + (ulong)uVar6 + lVar10); + do { + puVar16[1] = 0; + *puVar16 = 0; + uVar17 = uVar17 + 1; + puVar11[1] = 0; + *puVar11 = 0; + puVar11 = puVar11 + 2; + puVar16 = puVar16 + 2; + } while (uVar17 < uVar1); + uVar14 = uVar14 + iVar4; + if (iVar4 == uVar3 - uVar6) goto LAB_0019b6d0; + } + iVar4 = uVar14 + 1; + puVar18[(int)(uVar14 + iVar5)] = 0; + puVar18[(int)uVar14] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 2; + puVar18[iVar4 + iVar5] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + iVar4 = uVar14 + 3; + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 4; + puVar18[iVar5 + iVar4] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + iVar4 = uVar14 + 5; + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 6; + puVar18[iVar5 + iVar4] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + iVar4 = uVar14 + 7; + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 8; + puVar18[iVar5 + iVar4] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + iVar4 = uVar14 + 9; + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 10; + puVar18[iVar5 + iVar4] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + iVar4 = uVar14 + 0xb; + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 0xc; + puVar18[iVar5 + iVar4] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + iVar4 = uVar14 + 0xd; + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + if (iVar4 < (int)uVar3) { + iVar2 = uVar14 + 0xe; + puVar18[iVar5 + iVar4] = 0; + puVar18[iVar4] = 0; + if (iVar2 < (int)uVar3) { + puVar18[iVar5 + iVar2] = 0; + puVar18[iVar2] = 0; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0019b6d0: + iVar15 = iVar15 + 1; + puVar18 = puVar18 + lVar19; + puVar13 = puVar13 + lVar19; + uVar22 = uVar22 - uVar20; + } while (iVar15 != iVar7); + } + if ((*puVar9 & 0xfff) != 4) { + cvThreshold(0,0x3ff0000000000000,puVar9,puVar9,0); + } + return __s; +} + + +================================================================== + +### FUNC 0019b928 (144 bytes) name=cvSubstituteContour + +void cvSubstituteContour(long param_1,long param_2) + +{ + long lVar1; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSubstituteContour(CvContourScanner, CvSeq*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x1e1); + cv::String::deallocate((String *)&local_10); + } + lVar1 = *(long *)(param_1 + 0x88); + if (((lVar1 != 0) && (*(long *)(lVar1 + 0x18) != param_2)) && (*(long *)(lVar1 + 0x18) != 0)) { + *(long *)(lVar1 + 0x18) = param_2; + *(undefined4 *)(param_1 + 0x17c) = 1; + } + return; +} + + +================================================================== + +### FUNC 0019b9cc (4952 bytes) name=cvFindNextContour + +long cvFindNextContour(long *param_1) + +{ + long lVar1; + long lVar2; + uint *puVar3; + long lVar4; + long lVar5; + uint uVar6; + int iVar7; + int iVar8; + char cVar9; + int iVar10; + uint uVar11; + code *pcVar12; + uint uVar13; + uint uVar14; + uint uVar15; + long lVar16; + ulong uVar17; + long lVar18; + long lVar19; + long lVar20; + uint *puVar21; + char *pcVar22; + long lVar23; + long lVar24; + uint uVar25; + uint uVar26; + int iVar27; + long lVar28; + long *plVar29; + uint uVar30; + int iVar31; + uint uVar32; + uint uVar33; + uint uVar34; + uint uVar35; + int iVar36; + long lVar37; + uint *puVar38; + uint uVar39; + uint *puVar40; + int iVar41; + long *plVar42; + long *plVar43; + int iVar44; + uint uVar45; + int iVar46; + int iVar47; + uint local_1dc; + long *local_1d8; + long local_1c8; + uint local_1bc; + uint local_1b0; + uint local_13c; + long *local_88; + undefined8 local_80; + undefined8 local_78; + undefined1 auStack_70 [24]; + uint *local_58; + uint *local_48; + undefined8 local_40; + undefined8 local_38; + undefined4 local_30; + int iStack_2c; + uint local_28; + uint local_24; + long *local_20; + long *plStack_18; + undefined8 local_10; + undefined8 uStack_8; + + if (param_1 == (long *)0x0) { + local_40 = param_1; + local_38 = param_1; + cv::String::allocate((String *)&local_40,0); + cv::error(-0x1b,(String *)&local_40,"CvSeq* cvFindNextContour(CvContourScanner)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x3e1); + cv::String::deallocate((String *)&local_40); + } + FUN_0019a550(param_1); + iVar41 = *(int *)((long)param_1 + 0x74); + uVar6 = *(uint *)(param_1 + 0xc); + iVar7 = (int)param_1[0x2f]; + lVar28 = param_1[0xb]; + lVar24 = param_1[10]; + iVar47 = (int)param_1[0xf]; + iVar8 = *(int *)((long)param_1 + 100); + lVar23 = param_1[0xd]; + iVar27 = *(int *)((long)param_1 + 0x7c); + uVar30 = (uint)*(byte *)(lVar28 + iVar41 + -1); + local_13c = *(uint *)((long)param_1 + 0x84); + uVar45 = (uint)((ulong)(long)(int)uVar6 >> 2); + if (iVar7 == 4) { + uVar13 = 0xc0000000; + local_1bc = 0xc0000000; + uVar30 = *(uint *)(lVar28 + (long)iVar41 * 4 + -4); + local_1dc = 0x3fffffff; + } + else { + uVar13 = 0xfffffffe; + local_1bc = 0xfffffffe; + local_1dc = 1; + } + if (iVar47 < (int)lVar23) { + lVar4 = lVar24; + if (iVar7 != 4) { + lVar4 = 0; + } + iVar46 = (int)param_1[0x10]; + do { + lVar5 = lVar28; + if (iVar7 != 4) { + lVar5 = 0; + } + if (iVar41 < iVar8) { + if (lVar5 == 0) goto LAB_0019c5a8; +LAB_0019bb24: + puVar21 = (uint *)(lVar5 + (long)iVar41 * 4); + while ((uVar15 = *puVar21, uVar25 = uVar30, uVar15 == uVar30 || + (uVar25 = uVar15, ((uVar15 ^ uVar30) & local_1dc) == 0))) { + uVar30 = uVar25; + iVar41 = iVar41 + 1; + puVar21 = puVar21 + 1; + if (iVar8 <= iVar41) goto LAB_0019bb44; + } + if (iVar41 < iVar8) { + uVar25 = uVar30 & uVar13; + iVar44 = iVar27; + if (((uVar25 != 0) || (uVar30 == 0)) && ((uVar15 & uVar13) == 0)) goto joined_r0x0019c664; + uVar34 = uVar15 | uVar30; + uVar30 = uVar15; + if ((uVar34 & local_1bc) != 0) goto LAB_0019c58c; +LAB_0019bbc0: + iVar31 = iVar41 + -1; + iVar44 = iVar31; + if (uVar25 == 0) { + iVar44 = iVar27; + } + if (iVar7 == 0) goto LAB_0019c58c; + lVar37 = 1; + if (iVar7 < 2) { + plVar43 = param_1 + 0x1a; + iVar36 = 1; + iVar44 = iVar31; + goto LAB_0019bfb4; + } + iVar36 = 1; + iVar27 = iVar44; +joined_r0x0019bbf4: + iVar44 = iVar31; + if (iVar27 < 1) { + plVar43 = param_1 + 0x1a; + goto LAB_0019bfb4; + } + if (lVar4 == 0) { + uVar15 = (uint)*(byte *)(lVar24 + (int)(uVar6 * iVar46 + iVar27)); + } + else { + uVar15 = *(uint *)(lVar4 + (long)(int)(iVar46 * uVar45 + iVar27) * 4); + } + plVar29 = (long *)param_1[(long)(int)(uVar15 & 0x7f) + 0x33]; + if (plVar29 == (long *)0x0) { + /* WARNING: Does not return */ + pcVar12 = (code *)SoftwareBreakpoint(1000,0x19ca5c); + (*pcVar12)(); + } + lVar20 = lVar5 + (long)iVar27 * 4; + uVar15 = uVar6 + 1; + lVar1 = lVar28 + iVar27; + uVar25 = uVar45 + 1; + plVar43 = (long *)0x0; + do { + plVar42 = plVar43; + if ((((uint)(iVar27 - (int)plVar29[4]) < *(uint *)(plVar29 + 5)) && + ((uint)(iVar46 - *(int *)((long)plVar29 + 0x24)) < *(uint *)((long)plVar29 + 0x2c))) + && (plVar42 = plVar29, plVar43 != (long *)0x0)) { + uVar34 = 4; + if (lVar4 == 0) { + iVar31 = (int)plVar43[7]; + local_40 = (long *)CONCAT44(1 - uVar6,1); + uVar32 = ~uVar6; + if (iVar31 != 0) { + uVar32 = uVar15; + } + local_38 = (long *)CONCAT44(~uVar6,-uVar6); + local_30 = 0xffffffff; + lVar2 = lVar24 + (long)(int)plVar43[6] + + (long)(int)(*(int *)((long)plVar43 + 0x34) * uVar6); + iStack_2c = uVar6 - 1; + if (iVar31 != 0) { + uVar34 = 0; + } + local_28 = uVar6; + uVar26 = uVar34 - 1; + local_24 = uVar15; + local_20 = local_40; + plStack_18 = local_38; + local_10 = CONCAT44(uVar6 - 1,0xffffffff); + uStack_8 = CONCAT44(uVar15,uVar6); + while( true ) { + uVar26 = uVar26 & 7; + if (*(char *)(lVar2 + (int)uVar32) != '\0') break; + if (uVar26 == uVar34) goto LAB_0019cc94; + uVar26 = uVar26 - 1; + uVar32 = *(uint *)((long)&local_40 + (long)(int)(uVar26 & 7) * 4); + } + lVar16 = lVar2; + if (uVar34 == uVar26) { +LAB_0019cc94: + if (lVar2 == lVar1) goto LAB_0019bfa0; + } + else { + while( true ) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar26 + 1) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar26 + 2) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 1; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar26 + 3) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 2; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar26 + 4) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 3; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar26 + 5) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 4; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar26 + 6) * 4) + ; + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 5; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 7) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 6; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 8) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 7; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 9) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 8; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 10) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 9; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 0xb) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 10; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 0xc) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 0xb; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 0xd) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 0xc; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 0xe) * 4); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 0xd; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar26 + 0xf) * 4 + ); + lVar18 = lVar16 + lVar19; + uVar34 = uVar26 + 0xe; + if (*(char *)(lVar16 + lVar19) == '\0') { + lVar18 = lVar16 + *(int *)((long)&local_40 + + (long)(int)(uVar26 + + 0x10) * 4); + uVar34 = uVar26 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (lVar1 == lVar16) goto LAB_0019bfa0; + if ((lVar2 == lVar18) && (lVar16 == lVar2 + (int)uVar32)) break; + uVar26 = uVar34 + 5 & 7; + lVar16 = lVar18; + } + } + } + else { + iVar31 = (int)plVar43[7]; + lVar16 = ((long)(int)plVar43[6] + + (long)(int)(uVar45 * *(int *)((long)plVar43 + 0x34))) * 4; + lVar2 = lVar4 + lVar16; + uVar32 = ~uVar45; + if (iVar31 != 0) { + uVar32 = uVar25; + } + if (iVar31 != 0) { + uVar34 = 0; + } + uVar26 = *(uint *)(lVar4 + lVar16) & 0x3fffffff; + local_40 = (long *)CONCAT44(1 - uVar45,1); + uVar33 = uVar34 - 1; + local_38 = (long *)CONCAT44(~uVar45,-uVar45); + local_30 = 0xffffffff; + iStack_2c = uVar45 - 1; + local_28 = uVar45; + local_24 = uVar25; + local_20 = local_40; + plStack_18 = local_38; + local_10 = CONCAT44(uVar45 - 1,0xffffffff); + uStack_8 = CONCAT44(uVar25,uVar45); + while( true ) { + uVar17 = -(ulong)(uVar32 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar32 << 2; + uVar33 = uVar33 & 7; + if (uVar26 == (*(uint *)(lVar2 + uVar17) & 0x3fffffff)) break; + if (uVar33 == uVar34) goto LAB_0019bf88; + uVar33 = uVar33 - 1; + uVar32 = *(uint *)((long)&local_40 + (long)(int)(uVar33 & 7) * 4); + } + lVar16 = lVar2; + if (uVar34 == uVar33) { +LAB_0019bf88: + if (lVar2 == lVar20) goto LAB_0019bfa0; + } + else { + while( true ) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar33 + 1) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar33 + 2) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 1; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar33 + 3) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 2; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar33 + 4) * 4) * 4 + ; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 3; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar33 + 5) * 4) * + 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 4; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + (long)(int)(uVar33 + 6) * 4) + * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 5; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 7) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 6; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 8) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 7; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 9) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 8; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 10) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 9; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 0xb) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 10; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 0xc) * 4) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 0xb; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 0xd) * 4) * + 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 0xc; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff)) + { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 0xe) * 4) + * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 0xd; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & 0x3fffffff + )) { + lVar19 = (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + 0xf) * 4 + ) * 4; + lVar18 = lVar16 + lVar19; + uVar34 = uVar33 + 0xe; + if (uVar26 != (*(uint *)(lVar16 + lVar19) & + 0x3fffffff)) { + lVar18 = lVar16 + (long)*(int *)((long)&local_40 + + (long)(int)(uVar33 + + 0x10) + * 4) * 4; + uVar34 = uVar33 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (lVar20 == lVar16) goto LAB_0019bfa0; + if ((lVar2 == lVar18) && (lVar16 == lVar2 + uVar17)) break; + uVar33 = uVar34 + 5 & 7; + lVar16 = lVar18; + } + } + } + } + plVar29 = (long *)plVar29[1]; + plVar43 = plVar42; + } while (plVar29 != (long *)0x0); + iVar31 = (int)plVar42[7]; +LAB_0019bfa0: + if (iVar36 == iVar31) { + plVar29 = plVar43 + 2; + plVar43 = (long *)*plVar29; + if ((long *)*plVar29 == (long *)0x0) { + plVar43 = param_1 + 0x1a; + } + lVar20 = plVar43[3]; + } + else { + lVar20 = plVar43[3]; + } + if (lVar20 != 0) goto LAB_0019bfb4; + if ((uVar30 & 0xfffffffe) != 0) { + iVar27 = iVar41; + } + iVar41 = iVar41 + 1; + if (iVar41 < iVar8) { + do { + if (lVar5 != 0) goto LAB_0019bb24; +LAB_0019c5a8: + pcVar22 = (char *)(lVar28 + iVar41); + while( true ) { + cVar9 = *pcVar22; + if ((int)cVar9 != uVar30) break; + iVar41 = iVar41 + 1; + pcVar22 = pcVar22 + 1; + if (iVar8 <= iVar41) goto LAB_0019bb44; + } + if (iVar8 <= iVar41) break; + if (((int)cVar9 == 1) && (uVar30 == 0)) { + iVar44 = iVar27; + uVar15 = 1; +joined_r0x0019c664: + uVar30 = uVar15; + if (iVar7 == 0) { + if (*(char *)(lVar24 + (int)(uVar6 * iVar46 + iVar44)) < '\x01') + goto LAB_0019c684; + } + else { + if ((2 < iVar7) && (lVar37 = 0, iVar7 != 4)) goto code_r0x0019c5f8; +LAB_0019c684: + lVar37 = 0; + plVar43 = param_1 + 0x1a; + iVar36 = 0; + iVar44 = iVar41; +LAB_0019bfb4: + cvSaveMemStoragePos(param_1[1]); + puVar21 = (uint *)cvCreateSeq((int)param_1[0x30], + (long)*(int *)((long)param_1 + 0x184), + (long)(int)param_1[0x31],*param_1); + *puVar21 = *puVar21 | iVar36 << 0xf; + if (iVar7 < 2) { + plVar29 = param_1 + 0x12; + local_80 = CONCAT44(iVar47 + (int)((ulong)*(undefined8 *)((long)param_1 + 0x6c) + >> 0x20), + iVar44 + (int)*(undefined8 *)((long)param_1 + 0x6c)); + FUN_0019aafc(lVar28 + (iVar41 - lVar37),uVar6,local_80,puVar21, + (int)param_1[0x2e]); + } + else { + local_88 = (long *)0x0; + cvSetAdd(param_1[3],0,&local_88); + plVar29 = local_88; + if (lVar5 == 0) { + uVar30 = local_13c + 1 & 0x7f; + local_78 = CONCAT44(iVar47 + (int)((ulong)*(undefined8 *) + ((long)param_1 + 0x6c) >> 0x20), + iVar44 + (int)*(undefined8 *)((long)param_1 + 0x6c)); + iVar27 = 3; + if (uVar30 != 0) { + iVar27 = 0; + } + local_1b0 = local_13c; + FUN_0019a5e4(lVar28 + (iVar41 - lVar37),uVar6,local_78,puVar21, + (int)param_1[0x2e],local_13c,local_88 + 4); + uVar15 = *(uint *)(plVar29 + 4); + uVar25 = *(uint *)((long)plVar29 + 0x24); + local_13c = iVar27 + uVar30; + } + else { + lVar37 = (iVar41 - lVar37) * 4; + iStack_2c = uVar45 - 1; + local_1b0 = *(uint *)(lVar5 + (long)iVar44 * 4) & 0x7f; + local_30 = 0xffffffff; + uVar30 = uVar45 + 1; + local_40 = (long *)CONCAT44(1 - uVar45,1); + uVar26 = *(uint *)(lVar5 + lVar37) & 0x3fffffff; + uVar34 = iVar47 + (int)param_1[0xe]; + plVar42 = local_88 + 4; + local_38 = (long *)CONCAT44(~uVar45,-uVar45); + puVar3 = (uint *)(lVar5 + lVar37); + iVar27 = (int)param_1[0x2e]; + iVar31 = iVar27 + -1; + uVar32 = iVar44 + *(int *)((long)param_1 + 0x6c); + local_10 = CONCAT44(iStack_2c,0xffffffff); + uStack_8 = CONCAT44(uVar30,uVar45); + local_20 = local_40; + plStack_18 = local_38; + local_28 = uVar45; + local_24 = uVar30; + cvStartAppendToSeq(puVar21,auStack_70); + if (iVar31 < 0) { + puVar21[0x18] = uVar32; + puVar21[0x19] = uVar34; + } + if ((*puVar21 & 0x8000) == 0) { + uVar30 = ~uVar45; + } + uVar33 = 0; + if ((*puVar21 & 0x8000) == 0) { + uVar33 = 4; + } + uVar14 = uVar33 - 1; + while( true ) { + uVar17 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar30 << 2; + uVar14 = uVar14 & 7; + uVar25 = uVar34; + uVar35 = uVar34; + uVar15 = uVar32; + uVar30 = uVar32; + if (uVar26 == (*(uint *)((long)puVar3 + uVar17) & 0x3fffffff)) break; + if (uVar14 == uVar33) goto LAB_0019c3e8; + uVar14 = uVar14 - 1; + uVar30 = *(uint *)((long)&local_40 + (long)(int)(uVar14 & 7) * 4); + } + if (uVar33 != uVar14) { + puVar40 = puVar3; + uVar33 = uVar14 ^ 4; + do { + uVar39 = uVar14 + 1; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 2; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 3; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 4; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 5; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 6; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 7; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 8; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 9; + iVar10 = *(int *)((long)&local_40 + (long)(int)uVar39 * 4) + ; + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 10; + iVar10 = *(int *)((long)&local_40 + + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 0xb; + iVar10 = *(int *)((long)&local_40 + + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 0xc; + iVar10 = *(int *)((long)&local_40 + + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 0xd; + iVar10 = *(int *)((long)&local_40 + + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 0xe; + iVar10 = *(int *)((long)&local_40 + + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) { + uVar39 = uVar14 + 0xf; + iVar10 = *(int *)((long)&local_40 + + (long)(int)uVar39 * 4); + puVar38 = puVar40 + iVar10; + if (uVar26 != (puVar40[iVar10] & 0x3fffffff)) + { + uVar39 = uVar14 + 0x10; + puVar38 = puVar40 + *(int *)((long)&local_40 + + (long)(int) + uVar39 * 4); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar39 = uVar39 & 7; + uVar11 = uVar25; + if (uVar39 - 1 < uVar14) { + *puVar40 = uVar26 | 0xc0000000; +LAB_0019c390: + if (iVar31 < 0) goto LAB_0019c62c; +LAB_0019c394: + if ((uVar39 != uVar33) || (iVar27 == 1)) { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = uVar32; + local_58[1] = uVar34; + local_58 = local_58 + 2; + goto LAB_0019c6b8; + } + } + else { + if (uVar26 != *puVar40) goto LAB_0019c390; + *puVar40 = uVar26 | 0x40000000; + if (-1 < iVar31) goto LAB_0019c394; +LAB_0019c62c: + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *(char *)local_58 = (char)uVar39; + local_58 = (uint *)((long)local_58 + 1); +LAB_0019c6b8: + if (uVar39 != uVar33) { + uVar33 = uVar32; + if (((int)uVar15 <= (int)uVar32) && + (uVar33 = uVar15, (int)uVar30 < (int)uVar32)) { + uVar30 = uVar32; + } + uVar15 = uVar33; + uVar11 = uVar34; + if (((int)uVar25 <= (int)uVar34) && + (uVar11 = uVar25, (int)uVar35 < (int)uVar34)) { + uVar35 = uVar34; + } + } + } + uVar25 = uVar11; + uVar32 = uVar32 + (&DAT_00531e50)[(ulong)uVar39 * 2]; + uVar34 = uVar34 + (&DAT_00531e54)[(ulong)uVar39 * 2]; + if ((puVar3 == puVar38) && (puVar40 == (uint *)((long)puVar3 + uVar17))) + goto LAB_0019c454; + uVar14 = uVar39 + 4 & 7; + puVar40 = puVar38; + uVar33 = uVar39; + } while( true ); + } +LAB_0019c3e8: + *(uint *)(lVar5 + lVar37) = uVar26 | 0xc0000000; + if (-1 < iVar31) { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = uVar32; + local_58[1] = uVar34; + local_58 = local_58 + 2; + } +LAB_0019c454: + iVar31 = (1 - uVar15) + uVar30; + iVar10 = (1 - uVar25) + uVar35; + cvEndWriteSeq(auStack_70); + if (iVar27 != 0) { + *(ulong *)(puVar21 + 0x1a) = CONCAT44(iVar10,iVar31); + *(ulong *)(puVar21 + 0x18) = CONCAT44(uVar25,uVar15); + } + if (plVar42 == (long *)0x0) { + uVar15 = *(uint *)(plVar29 + 4); + uVar25 = *(uint *)((long)plVar29 + 0x24); + } + else { + plVar29[5] = CONCAT44(iVar10,iVar31); + *plVar42 = CONCAT44(uVar25,uVar15); + } + } + local_1d8 = plVar29 + 4; + *local_1d8 = CONCAT44(uVar25 - (int)((ulong)*(undefined8 *) + ((long)param_1 + 0x6c) >> 0x20), + uVar15 - (int)*(undefined8 *)((long)param_1 + 0x6c)); + plVar29[1] = param_1[(long)(int)local_1b0 + 0x33]; + param_1[(long)(int)local_1b0 + 0x33] = (long)plVar29; + } + local_1c8 = (long)iVar41; + *(int *)(plVar29 + 6) = iVar44; + *(int *)((long)plVar29 + 0x34) = iVar47; + *(int *)(plVar29 + 7) = iVar36; + iVar27 = *(int *)((long)param_1 + 0x174); + lVar37 = param_1[0x2e]; + plVar29[3] = (long)puVar21; + plVar29[2] = (long)plVar43; + if ((int)lVar37 == iVar27) { + lVar37 = plVar43[3]; + *(long *)(puVar21 + 6) = plVar43[3]; + } + else { + lVar37 = FUN_002229f0(puVar21,(int)param_1[0x32],param_1[1]); + plVar29[3] = lVar37; + cvClearMemStorage(*param_1); + lVar37 = plVar43[3]; + *(undefined8 *)(plVar29[3] + 0x18) = *(undefined8 *)(plVar29[2] + 0x18); + } + if (lVar37 != 0) { + iVar41 = iVar41 + 1; + cvSaveMemStoragePos(param_1[1],param_1 + 8); + param_1[0x11] = (long)plVar29; + if (lVar5 != 0) { + iVar41 = iVar41 - iVar36; + } + lVar23 = plVar29[3]; + *(ulong *)((long)param_1 + 0x74) = CONCAT44(iVar47,iVar41); + *(ulong *)((long)param_1 + 0x7c) = CONCAT44(iVar46,iVar44); + param_1[0xb] = lVar28; + *(uint *)((long)param_1 + 0x84) = local_13c; + return lVar23; + } + lVar37 = *param_1; + lVar20 = param_1[1]; + plVar29[3] = 0; + if (lVar37 == lVar20) { + cvRestoreMemStoragePos(lVar37,param_1 + 6); + } + else { + cvClearMemStorage(); + } + uVar30 = (uint)*(char *)(lVar28 + local_1c8); + } +LAB_0019c58c: + iVar27 = iVar44; + if ((uVar30 & 0xfffffffe) != 0) { + iVar27 = iVar41; + } + } + else { + uVar15 = (uint)cVar9; + if ((uVar15 == 0) && (0 < (int)uVar30)) { + uVar25 = uVar30 & uVar13; + uVar30 = 0; + goto LAB_0019bbc0; + } + uVar30 = uVar15; + if ((uVar15 & 0xfffffffe) != 0) { + iVar27 = iVar41; + } + } + iVar41 = iVar41 + 1; + if (iVar8 <= iVar41) break; + } while( true ); + } + } + } +LAB_0019bb44: + uVar30 = 0; + iVar41 = 1; + iVar27 = 0; + iVar47 = iVar47 + 1; + lVar28 = lVar28 + (int)uVar6; + iVar46 = iVar47; + } while (iVar47 != (int)lVar23); + } + return 0; +code_r0x0019c5f8: + iVar36 = 0; + iVar31 = iVar41; + iVar27 = iVar44; + goto joined_r0x0019bbf4; +} + + +================================================================== + +### FUNC 0019cd38 (288 bytes) name=cvEndFindContours + +long cvEndFindContours(undefined8 *param_1) + +{ + long *plVar1; + long lVar2; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvSeq* cvEndFindContours(_CvContourScanner**)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x4e7); + cv::String::deallocate((String *)&local_10); + } + plVar1 = (long *)*param_1; + lVar2 = 0; + if (plVar1 != (long *)0x0) { + lVar2 = plVar1[0x11]; + if (lVar2 != 0) { + if (*(int *)((long)plVar1 + 0x17c) != 0) { + cvSaveMemStoragePos(plVar1[1],&local_10); + if ((local_10 == (undefined8 *)plVar1[8]) && ((int)local_8 == (int)plVar1[9])) { + cvRestoreMemStoragePos(plVar1[1],plVar1 + 6); + *(undefined4 *)((long)plVar1 + 0x17c) = 0; + } + else { + *(undefined4 *)((long)plVar1 + 0x17c) = 0; + } + } + if (*(long *)(lVar2 + 0x18) != 0) { + cvInsertNodeIntoTree + (*(long *)(lVar2 + 0x18),*(undefined8 *)(*(long *)(lVar2 + 0x10) + 0x18), + plVar1 + 0x22); + } + plVar1[0x11] = 0; + } + if (*plVar1 != plVar1[1]) { + cvReleaseMemStorage(plVar1); + } + if (plVar1[2] != 0) { + cvReleaseMemStorage(plVar1 + 2); + } + lVar2 = plVar1[0x26]; + cv::cvFree_((void *)*param_1); + *param_1 = 0; + } + return lVar2; +} + + +================================================================== + +### FUNC 0019ce6c (3168 bytes) name=cvFindContours + +int cvFindContours(undefined8 param_1,long param_2,undefined8 *param_3,int param_4, + undefined4 param_5,int param_6,undefined8 param_7) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined2 uVar13; + int iVar14; + int iVar15; + char *pcVar16; + long lVar17; + undefined8 *puVar18; + long lVar19; + uint *puVar20; + long *plVar21; + undefined8 uVar22; + long *plVar23; + undefined8 *puVar24; + undefined8 *puVar25; + undefined8 *puVar26; + uint uVar27; + undefined8 *puVar28; + int iVar29; + long lVar30; + int iVar31; + uint *puVar32; + long *plVar33; + int iVar34; + long lVar35; + long lVar36; + uint *puVar37; + uint *puVar38; + int iVar39; + int iVar40; + undefined8 *local_150; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + long local_108; + long local_100; + undefined1 auStack_f8 [40]; + undefined1 auStack_d0 [24]; + undefined8 *local_b8; + undefined8 *local_a8; + undefined1 auStack_a0 [24]; + undefined8 *local_88; + undefined8 *local_78; + undefined1 auStack_70 [8]; + long local_68; + long *local_58; + long *local_48; + undefined8 *local_40; + undefined8 *local_38; + undefined8 *local_28; + undefined8 *local_18; + + local_130 = 0; + if (param_3 == (undefined8 *)0x0) { + local_40 = param_3; + local_38 = param_3; + pcVar16 = (char *)cv::String::allocate((String *)&local_40,0x19); + cVar6 = s_NULL_double_CvSeq_pointer_0043df90[0x18]; + uVar8 = s_NULL_double_CvSeq_pointer_0043df90._8_8_; + uVar22 = s_NULL_double_CvSeq_pointer_0043df90._0_8_; + *(undefined8 *)(pcVar16 + 0x10) = s_NULL_double_CvSeq_pointer_0043df90._16_8_; + pcVar16[0x18] = cVar6; + *(undefined8 *)pcVar16 = uVar22; + *(undefined8 *)(pcVar16 + 8) = uVar8; + cv::error(-0x1b,(String *)&local_40, + "int cvFindContours(void*, CvMemStorage*, CvSeq**, int, int, int, CvPoint)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x683); + cv::String::deallocate((String *)&local_40); + } + *param_3 = 0; + if (param_6 == 5) { + if (((int)param_7 != 0) || ((int)((ulong)param_7 >> 0x20) != 0)) { + local_40 = (undefined8 *)0x0; + local_38 = (undefined8 *)0x0; + pcVar16 = (char *)cv::String::allocate((String *)&local_40,0x33); + uVar13 = s_Nonzero_offset_is_not_supported_i_0043dfb0._48_2_; + uVar12 = s_Nonzero_offset_is_not_supported_i_0043dfb0._40_8_; + uVar11 = s_Nonzero_offset_is_not_supported_i_0043dfb0._32_8_; + uVar10 = s_Nonzero_offset_is_not_supported_i_0043dfb0._24_8_; + uVar9 = s_Nonzero_offset_is_not_supported_i_0043dfb0._16_8_; + uVar8 = s_Nonzero_offset_is_not_supported_i_0043dfb0._8_8_; + uVar22 = s_Nonzero_offset_is_not_supported_i_0043dfb0._0_8_; + pcVar16[0x32] = s_Nonzero_offset_is_not_supported_i_0043dfb0[0x32]; + *(undefined2 *)(pcVar16 + 0x30) = uVar13; + *(undefined8 *)pcVar16 = uVar22; + *(undefined8 *)(pcVar16 + 8) = uVar8; + *(undefined8 *)(pcVar16 + 0x10) = uVar9; + *(undefined8 *)(pcVar16 + 0x18) = uVar10; + *(undefined8 *)(pcVar16 + 0x20) = uVar11; + *(undefined8 *)(pcVar16 + 0x28) = uVar12; + cv::error(-0xd3,(String *)&local_40, + "int cvFindContours(void*, CvMemStorage*, CvSeq**, int, int, int, CvPoint)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x68b); + cv::String::deallocate((String *)&local_40); + } + if (param_2 == 0) { + local_108 = param_2; + local_100 = param_2; + pcVar16 = (char *)cv::String::allocate((String *)&local_108,0x14); + uVar8 = s_NULL_storage_pointer_0043dfe8._8_8_; + uVar22 = s_NULL_storage_pointer_0043dfe8._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s_NULL_storage_pointer_0043dfe8._16_4_; + *(undefined8 *)pcVar16 = uVar22; + *(undefined8 *)(pcVar16 + 8) = uVar8; + cv::error(-0x1b,(String *)&local_108, + "int icvFindContoursInInterval(const CvArr*, CvMemStorage*, CvSeq**, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x538); + cv::String::deallocate((String *)&local_108); + } + if (param_4 < 0x80) { + local_118 = 0; + local_110 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_118,0x30); + uVar11 = s_Contour_header_size_must_be_>__s_0043e000._40_8_; + uVar10 = s_Contour_header_size_must_be_>__s_0043e000._32_8_; + uVar9 = s_Contour_header_size_must_be_>__s_0043e000._24_8_; + uVar8 = s_Contour_header_size_must_be_>__s_0043e000._16_8_; + uVar22 = s_Contour_header_size_must_be_>__s_0043e000._8_8_; + *(undefined8 *)pcVar16 = s_Contour_header_size_must_be_>__s_0043e000._0_8_; + *(undefined8 *)(pcVar16 + 8) = uVar22; + *(undefined8 *)(pcVar16 + 0x10) = uVar8; + *(undefined8 *)(pcVar16 + 0x18) = uVar9; + *(undefined8 *)(pcVar16 + 0x20) = uVar10; + *(undefined8 *)(pcVar16 + 0x28) = uVar11; + cv::error(-0xc9,(String *)&local_118, + "int icvFindContoursInInterval(const CvArr*, CvMemStorage*, CvSeq**, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x53e); + cv::String::deallocate((String *)&local_118); + } + lVar17 = cvCreateChildMemStorage(param_2); + if (lVar17 == 0) { + puVar18 = (undefined8 *)0x0; + } + else { + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = lVar17; + *puVar18 = &PTR_FUN_004f3420; + } + lVar19 = cvCreateChildMemStorage(param_2); + if (lVar19 == 0) { + local_150 = (undefined8 *)0x0; + } + else { + local_150 = operator_new(0x20); + *(undefined4 *)(local_150 + 1) = 1; + local_150[2] = lVar19; + *local_150 = &PTR_FUN_004f3420; + } + puVar20 = (uint *)cvGetMat(param_1,auStack_f8,0,0); + if ((*puVar20 & 0xffe) != 0) { + local_128 = 0; + local_120 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_128,0x20); + uVar9 = s_Input_array_must_be_8uC1_or_8sC1_0043e038._24_8_; + uVar8 = s_Input_array_must_be_8uC1_or_8sC1_0043e038._16_8_; + uVar22 = s_Input_array_must_be_8uC1_or_8sC1_0043e038._8_8_; + *(undefined8 *)pcVar16 = s_Input_array_must_be_8uC1_or_8sC1_0043e038._0_8_; + *(undefined8 *)(pcVar16 + 8) = uVar22; + *(undefined8 *)(pcVar16 + 0x10) = uVar8; + *(undefined8 *)(pcVar16 + 0x18) = uVar9; + cv::error(-5,(String *)&local_128, + "int icvFindContoursInInterval(const CvArr*, CvMemStorage*, CvSeq**, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x547); + cv::String::deallocate((String *)&local_128); + } + uVar2 = puVar20[8]; + lVar36 = *(long *)(puVar20 + 6); + uVar3 = puVar20[1]; + uVar4 = puVar20[9]; + lVar17 = cvCreateSeq(0,0x60,0x18,lVar17); + cvStartAppendToSeq(lVar17,auStack_70); + cvStartWriteSeq(0,0x60,8,lVar19,auStack_d0); + cvStartWriteSeq(0,0x60,8,lVar19,auStack_a0); + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = 0; + uVar27 = 0; + local_58[1] = 0; + *(undefined4 *)(local_58 + 2) = 0; + *(undefined4 *)((long)local_58 + 0x14) = 0; + local_58 = local_58 + 3; + lVar30 = (long)local_58 - (long)*(int *)(local_68 + 0x2c); + lVar19 = lVar30; + if (0 < (int)uVar4) { + do { + pcVar16 = (char *)(lVar36 + (int)uVar27); + do { + if (*pcVar16 != '\0') { + if (local_58 < local_48) goto LAB_0019d1a8; + goto LAB_0019d504; + } + uVar27 = uVar27 + 1; + pcVar16 = pcVar16 + 1; + } while ((int)uVar27 < (int)uVar4); + if (uVar4 == uVar27) break; + if (local_48 <= local_58) { +LAB_0019d504: + cvCreateSeqBlock(auStack_70); + } +LAB_0019d1a8: + *local_58 = 0; + local_58[1] = 0; + *(uint *)(local_58 + 2) = uVar27; + *(undefined4 *)((long)local_58 + 0x14) = 0; + local_58 = local_58 + 3; + plVar33 = (long *)((long)local_58 - (long)*(int *)(local_68 + 0x2c)); + *(long **)(lVar19 + 8) = plVar33; + if ((int)uVar27 < (int)uVar4) { + pcVar16 = (char *)(lVar36 + (int)uVar27); + cVar6 = *(char *)(lVar36 + (int)uVar27); + while ((cVar6 != '\0' && (uVar27 = uVar27 + 1, uVar27 != uVar4))) { + pcVar16 = pcVar16 + 1; + cVar6 = *pcVar16; + } + } + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = 0; + local_58[1] = 0; + *(uint *)(local_58 + 2) = uVar27 - 1; + *(undefined4 *)((long)local_58 + 0x14) = 0; + local_58 = local_58 + 3; + lVar19 = (long)local_58 - (long)*(int *)(local_68 + 0x2c); + plVar33[1] = lVar19; + *plVar33 = lVar19; + if (local_a8 <= local_b8) { + cvCreateSeqBlock(auStack_d0); + } + *local_b8 = plVar33; + lVar19 = plVar33[1]; + local_b8 = local_b8 + 1; + } while ((int)uVar27 < (int)uVar4); + } + cvFlushSeqWriter(auStack_70); + iVar39 = *(int *)(lVar17 + 0x28); + puVar24 = *(undefined8 **)(lVar30 + 8); + *(undefined8 *)(lVar19 + 8) = 0; + if (1 < (int)uVar2) { + plVar33 = (long *)0x0; + iVar15 = 1; + puVar25 = puVar24; + iVar29 = iVar39 + -1; +LAB_0019d2b8: + uVar27 = 0; + lVar36 = lVar36 + (int)uVar3; + lVar30 = lVar19; + if (0 < (int)uVar4) { + do { + pcVar16 = (char *)(lVar36 + (int)uVar27); + do { + if (*pcVar16 != '\0') goto LAB_0019d2f0; + uVar27 = uVar27 + 1; + pcVar16 = pcVar16 + 1; + } while (uVar4 != uVar27 && (int)uVar27 <= (int)uVar4); + if (uVar4 == uVar27) break; +LAB_0019d2f0: + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = 0; + local_58[1] = 0; + *(uint *)(local_58 + 2) = uVar27; + *(int *)((long)local_58 + 0x14) = iVar15; + local_58 = local_58 + 3; + lVar35 = (long)local_58 - (long)*(int *)(local_68 + 0x2c); + *(long *)(lVar30 + 8) = lVar35; + if ((int)uVar27 < (int)uVar4) { + pcVar16 = (char *)(lVar36 + (int)uVar27); + cVar6 = *(char *)(lVar36 + (int)uVar27); + while ((cVar6 != '\0' && (uVar27 = uVar27 + 1, uVar27 != uVar4))) { + pcVar16 = pcVar16 + 1; + cVar6 = *pcVar16; + } + } + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = 0; + local_58[1] = 0; + *(uint *)(local_58 + 2) = uVar27 - 1; + *(int *)((long)local_58 + 0x14) = iVar15; + local_58 = local_58 + 3; + lVar30 = (long)local_58 - (long)*(int *)(local_68 + 0x2c); + *(long *)(lVar35 + 8) = lVar30; + } while ((int)uVar27 < (int)uVar4); + } + cvFlushSeqWriter(auStack_70); + puVar24 = *(undefined8 **)(lVar19 + 8); + iVar31 = 0; + iVar5 = *(int *)(lVar17 + 0x28); + *(undefined8 *)(lVar30 + 8) = 0; + iVar5 = iVar5 - iVar39; + iVar29 = iVar29 / 2; + iVar34 = 0; + iVar39 = 0; + iVar40 = iVar5 / 2; + puVar28 = puVar24; +LAB_0019d3f0: + iVar14 = iVar31; + if (iVar34 < iVar29) { + while( true ) { + iVar31 = iVar14; + if (iVar40 <= iVar39) { + if (iVar31 == 0) goto LAB_0019d5d4; + puVar25 = (undefined8 *)puVar25[1]; + iVar34 = iVar34 + 1; + *puVar25 = plVar33; + puVar25 = (undefined8 *)puVar25[1]; + if (iVar34 != iVar29) goto LAB_0019d5d4; + goto LAB_0019d4bc; + } + if (iVar31 == 0) { + plVar23 = (long *)puVar25[1]; + plVar21 = (long *)puVar28[1]; + if ((int)plVar23[2] < (int)plVar21[2]) { + if ((int)plVar23[2] < *(int *)(puVar28 + 2) + -1) { + *plVar23 = (long)puVar25; + } + else { + *puVar28 = puVar25; + iVar31 = 1; + plVar33 = plVar23; + } + iVar34 = iVar34 + 1; + puVar25 = (undefined8 *)plVar23[1]; + } + else { + if ((int)plVar21[2] + 1 < *(int *)(puVar25 + 2)) { + *puVar28 = plVar21; + if (local_a8 <= local_b8) { + cvCreateSeqBlock(auStack_d0); + } + *local_b8 = puVar28; + plVar21 = (long *)puVar28[1]; + local_b8 = local_b8 + 1; + } + else { + *puVar28 = puVar25; + iVar31 = -1; + plVar33 = plVar21; + } + iVar39 = iVar39 + 1; + puVar28 = (undefined8 *)plVar21[1]; + } + goto LAB_0019d3f0; + } + if (iVar31 != 1) { + puVar26 = (undefined8 *)puVar25[1]; + if (*(int *)(puVar26 + 2) + 1 < *(int *)(puVar28 + 2)) { + *puVar26 = plVar33; + iVar34 = iVar34 + 1; + puVar25 = (undefined8 *)puVar26[1]; + iVar31 = 0; + } + else { + if (local_78 <= local_88) { + cvCreateSeqBlock(auStack_a0); + } + *local_88 = puVar28; + plVar23 = (long *)puVar25[1]; + local_88 = local_88 + 1; + plVar21 = (long *)puVar28[1]; + *puVar28 = plVar33; + if ((int)plVar21[2] < (int)plVar23[2]) { + iVar39 = iVar39 + 1; + iVar31 = -1; + puVar28 = (undefined8 *)plVar21[1]; + plVar33 = plVar21; + } + else { + puVar25 = (undefined8 *)plVar23[1]; + iVar34 = iVar34 + 1; + iVar31 = 1; + plVar33 = plVar23; + } + } + goto LAB_0019d3f0; + } + plVar21 = (long *)puVar28[1]; + lVar19 = plVar21[2]; + if (*(int *)(puVar25 + 2) <= (int)lVar19 + 1) break; + puVar28 = (undefined8 *)plVar21[1]; + iVar39 = iVar39 + 1; + iVar31 = 0; + *plVar33 = (long)plVar21; + iVar14 = 0; + if (iVar29 <= iVar34) goto LAB_0019d450; + } + *plVar33 = (long)puVar25; + plVar33 = (long *)puVar25[1]; + if ((int)plVar33[2] < (int)lVar19) { + iVar34 = iVar34 + 1; + puVar25 = (undefined8 *)plVar33[1]; + } + else { + iVar39 = iVar39 + 1; + puVar28 = (undefined8 *)plVar21[1]; + iVar31 = -1; + plVar33 = plVar21; + } + goto LAB_0019d3f0; + } +LAB_0019d450: + if (iVar39 < iVar40) { + if (iVar31 != 0) { + plVar21 = puVar28 + 1; + iVar39 = iVar39 + 1; + puVar28 = *(undefined8 **)(*plVar21 + 8); + *plVar33 = *plVar21; + if (iVar39 == iVar40) goto LAB_0019d4bc; + } + do { + *puVar28 = puVar28[1]; + if (local_a8 <= local_b8) { + cvCreateSeqBlock(auStack_d0); + } + *local_b8 = puVar28; + iVar39 = iVar39 + 1; + local_b8 = local_b8 + 1; + puVar28 = *(undefined8 **)(puVar28[1] + 8); + } while (iVar39 != iVar40); + } +LAB_0019d4bc: + if (iVar15 + 1U != uVar2) goto LAB_0019d4d4; + goto LAB_0019d608; + } + iVar40 = (iVar39 + -1) / 2; +LAB_0019d608: + iVar39 = 0; + if (0 < iVar40) { + do { + iVar39 = iVar39 + 1; + puVar25 = (undefined8 *)puVar24[1]; + *puVar25 = puVar24; + puVar24 = (undefined8 *)puVar25[1]; + } while (iVar39 != iVar40); + } + lVar17 = cvEndWriteSeq(auStack_d0); + lVar19 = cvEndWriteSeq(auStack_a0); + puVar20 = (uint *)0x0; + puVar37 = (uint *)0x0; + bVar7 = false; + iVar29 = 0; + while( true ) { + cvStartReadSeq(lVar17,&local_40,0); + iVar39 = iVar29; + if (0 < *(int *)(lVar17 + 0x28)) { + iVar15 = 0; + puVar32 = puVar20; + puVar38 = puVar37; + do { + puVar24 = local_28 + 1; + plVar33 = (long *)*local_28; + local_28 = puVar24; + if (local_18 <= puVar24) { + cvChangeSeqBlock(&local_40,1); + } + puVar20 = puVar32; + puVar37 = puVar38; + if (*plVar33 != 0) { + cvStartWriteSeq(0x500c,param_4,8,param_2,auStack_70); + plVar21 = plVar33; + do { + if (local_48 <= local_58) { + cvCreateSeqBlock(auStack_70); + } + *local_58 = plVar21[2]; + plVar23 = (long *)*plVar21; + local_58 = local_58 + 1; + *plVar21 = 0; + plVar21 = plVar23; + } while (plVar33 != plVar23); + puVar20 = (uint *)cvEndWriteSeq(auStack_70); + cvBoundingRect(puVar20,1); + if (bVar7) { + *puVar20 = *puVar20 | 0x8000; + } + puVar37 = puVar20; + if (puVar38 != (uint *)0x0) { + *(uint **)(puVar20 + 2) = puVar32; + *(uint **)(puVar32 + 4) = puVar20; + puVar37 = puVar38; + } + } + iVar15 = iVar15 + 1; + puVar32 = puVar20; + puVar38 = puVar37; + iVar39 = iVar15 + iVar29; + } while (iVar15 < *(int *)(lVar17 + 0x28)); + } + if (bVar7) break; + bVar7 = true; + lVar17 = lVar19; + iVar29 = iVar39; + } + if (puVar37 == (uint *)0x0) { + iVar39 = -1; + } + *param_3 = puVar37; + if (local_150 != (undefined8 *)0x0) { + piVar1 = (int *)(local_150 + 1); + do { + iVar29 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar29 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar29 == 1) { + entry(local_150); + } + } + if (puVar18 != (undefined8 *)0x0) { + piVar1 = (int *)(puVar18 + 1); + do { + iVar29 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar29 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar29 == 1) { + entry(puVar18); + } + } + } + else { + local_130 = cvStartFindContours(param_1,param_2,param_4,param_5,param_6,param_7); + iVar39 = -1; + do { + iVar39 = iVar39 + 1; + lVar17 = cvFindNextContour(local_130); + } while (lVar17 != 0); + uVar22 = cvEndFindContours(&local_130); + *param_3 = uVar22; + } + return iVar39; +LAB_0019d5d4: + do { + puVar28 = (undefined8 *)puVar25[1]; + iVar34 = iVar34 + 1; + *puVar28 = puVar25; + puVar25 = (undefined8 *)puVar28[1]; + } while (iVar34 != iVar29); + if (iVar15 + 1U == uVar2) goto LAB_0019d608; +LAB_0019d4d4: + iVar15 = iVar15 + 1; + iVar39 = *(int *)(lVar17 + 0x28); + lVar19 = lVar30; + puVar25 = puVar24; + iVar29 = iVar5; + goto LAB_0019d2b8; +} + + +================================================================== + +### FUNC 0019dbe0 (2684 bytes) name=findContours + +/* cv::findContours(cv::_InputOutputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, + int, int, cv::Point_) */ + +void cv::findContours(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + undefined4 param_4,undefined4 param_5,ulong *param_6) + +{ + int *piVar1; + long *plVar2; + uint uVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + char cVar10; + int iVar11; + int iVar12; + void *pvVar13; + long lVar14; + long *plVar15; + char *pcVar16; + undefined4 *puVar17; + undefined8 *puVar18; + Mat *pMVar19; + undefined4 uVar20; + undefined4 uVar21; + undefined4 uVar22; + int iVar23; + undefined4 uVar24; + undefined8 *puVar25; + long lVar26; + long local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + uint local_178; + undefined4 local_174; + undefined8 local_170; + undefined4 local_168; + undefined8 local_160; + undefined4 local_158; + undefined4 local_154; + undefined8 local_150; + long local_148; + undefined8 local_140; + long *local_138; + undefined8 local_130; + long *local_128; + undefined8 local_120; + undefined8 uStack_118; + int local_110; + undefined8 local_108; + long lStack_100; + undefined8 local_f8; + long *plStack_f0; + undefined8 local_e8; + long *plStack_e0; + undefined8 local_d8; + undefined8 uStack_d0; + undefined4 local_c8; + uint local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar11 = _InputArray::kind(param_2); + if (((iVar11 != 0x40000) && (iVar11 = _InputArray::kind(param_2), iVar11 != 0x50000)) && + (iVar11 = _InputArray::kind(param_2), iVar11 != 0xb0000)) { + local_60 = 0; + local_58 = 0; + pvVar13 = (void *)String::allocate((String *)&local_60,0x9b); + memcpy(pvVar13, + "(_contours.kind() == _InputArray::STD_VECTOR_VECTOR || _contours.kind() == _InputArray::STD_VECTOR_MAT || _contours.kind() == _InputArray::STD_VECTOR_UMAT)" + ,0x9b); + error(-0xd7,(String *)&local_60, + "void cv::findContours(cv::InputOutputArray, cv::OutputArrayOfArrays, cv::OutputArray, int, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x6ae); + String::deallocate((String *)&local_60); + } + cVar10 = _InputArray::empty(param_2); + if ((cVar10 == '\0') && + ((iVar11 = _InputArray::channels(param_2,-1), iVar11 != 2 || + (iVar11 = _InputArray::depth(param_2,-1), iVar11 != 4)))) { + local_60 = 0; + local_58 = 0; + pvVar13 = (void *)String::allocate((String *)&local_60,0x4f); + memcpy(pvVar13,"_contours.empty() || (_contours.channels() == 2 && _contours.depth() == CV_32S)" + ,0x4f); + error(-0xd7,(String *)&local_60, + "void cv::findContours(cv::InputOutputArray, cv::OutputArrayOfArrays, cv::OutputArray, int, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x6b0); + String::deallocate((String *)&local_60); + } + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar19 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar19; + local_bc = *(int *)(pMVar19 + 4); + local_b8 = *(undefined4 *)(pMVar19 + 8); + local_b4 = *(undefined4 *)(pMVar19 + 0xc); + local_b0 = *(undefined8 *)(pMVar19 + 0x10); + local_a8 = *(undefined8 *)(pMVar19 + 0x18); + local_a0 = *(undefined8 *)(pMVar19 + 0x20); + local_98 = *(undefined8 *)(pMVar19 + 0x28); + local_90 = *(undefined8 *)(pMVar19 + 0x30); + local_88 = *(long *)(pMVar19 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar19 + 0x48); + local_68 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_1); + } + lVar14 = cvCreateMemStorage(0); + if (lVar14 == 0) { + plVar15 = (long *)0x0; + } + else { + plVar15 = operator_new(0x20); + *(undefined4 *)(plVar15 + 1) = 1; + plVar15[2] = lVar14; + *plVar15 = (long)&PTR_FUN_004f3420; + } + local_170 = 0; + local_154 = local_b4; + if (local_bc == 1) { + local_154 = 1; + } + local_178 = local_c0 & 0x4fff | 0x42420000; + local_160 = local_b0; + local_168 = 0; + local_158 = local_b8; + local_174 = (undefined4)*local_78; + local_1a0 = 0; + cVar10 = _OutputArray::needed(param_3); + if (cVar10 != '\0') { + _OutputArray::clear(param_3); + } + local_60 = *param_6; + cvFindContours(&local_178,lVar14,&local_1a0,0x80,param_4,param_5,local_60); + if (local_1a0 == 0) { + _OutputArray::clear((_OutputArray *)param_2); + if (plVar15 != (long *)0x0) { + plVar2 = plVar15 + 1; + do { + lVar14 = *plVar2; + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar4) { + *(int *)plVar2 = (int)lVar14 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if ((int)lVar14 == 1) { + if (*(code **)(*plVar15 + 0x10) == FUN_0019aef0) { + DefaultDeleter::operator() + ((DefaultDeleter *)(plVar15 + 3),(CvMemStorage *)plVar15[2]); + (**(code **)(*plVar15 + 8))(plVar15); + } + else { + (**(code **)(*plVar15 + 0x10))(plVar15); + } + } + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar1; + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + if (0 < local_bc) { + iVar11 = 0; + puVar17 = local_80; + do { + *puVar17 = 0; + iVar11 = iVar11 + 1; + puVar17 = puVar17 + 1; + } while (iVar11 < local_bc); + } + } + else { + lVar14 = cvTreeToNodeSeq(local_1a0,0x60,lVar14); + if (lVar14 == 0) { + iVar11 = 0; + } + else { + if (*(int *)(lVar14 + 0x2c) != 8) { + local_188 = 0; + local_180 = 0; + pcVar16 = (char *)String::allocate((String *)&local_188,0x27); + cVar10 = s___seq_____seq_>elem_size____size_0043e060[0x26]; + uVar9 = s___seq_____seq_>elem_size____size_0043e060._36_2_; + uVar8 = s___seq_____seq_>elem_size____size_0043e060._24_8_; + uVar7 = s___seq_____seq_>elem_size____size_0043e060._16_8_; + uVar6 = s___seq_____seq_>elem_size____size_0043e060._8_8_; + uVar5 = s___seq_____seq_>elem_size____size_0043e060._0_8_; + *(undefined4 *)(pcVar16 + 0x20) = s___seq_____seq_>elem_size____size_0043e060._32_4_; + *(undefined2 *)(pcVar16 + 0x24) = uVar9; + pcVar16[0x26] = cVar10; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + *(undefined8 *)(pcVar16 + 0x10) = uVar7; + *(undefined8 *)(pcVar16 + 0x18) = uVar8; + error(-0xd7,(String *)&local_188, + "cv::Seq<_Tp>::Seq(const CvSeq*) [with _Tp = CvSeq*; CvSeq = CvSeq]", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/core_c.h",0xb7e) + ; + String::deallocate((String *)&local_188); + } + iVar11 = *(int *)(lVar14 + 0x28); + } + _OutputArray::create((_OutputArray *)param_2,iVar11,1,0,-1,true,0); + cvStartReadSeq(lVar14,&local_150,0); + local_110 = 0; + iVar12 = 0; + if (0 < iVar11) { + do { + lVar26 = *local_138; + *(int *)(lVar26 + 0x70) = iVar12; + _OutputArray::create((_OutputArray *)param_2,*(int *)(lVar26 + 0x28),1,0xc,iVar12,true,0); + _InputArray::kind(param_2); + _InputArray::getMat_((int)param_2); + if (((uint)local_60 >> 0xe & 1) == 0) { + local_198 = 0; + local_190 = 0; + pcVar16 = (char *)String::allocate((String *)&local_198,0x11); + uVar6 = s_ci_isContinuous___0043e0d8._8_8_; + uVar5 = s_ci_isContinuous___0043e0d8._0_8_; + pcVar16[0x10] = s_ci_isContinuous___0043e0d8[0x10]; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + error(-0xd7,(String *)&local_198, + "void cv::findContours(cv::InputOutputArray, cv::OutputArrayOfArrays, cv::OutputArray, int, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/contours.cpp",0x6c8); + String::deallocate((String *)&local_198); + } + cvCvtSeqToArray(lVar26,local_50,0x3fffffff00000000); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar23 = *piVar1; + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar23 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar23 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (undefined8 *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar23 = 0; + puVar25 = local_20; + do { + *(undefined4 *)puVar25 = 0; + iVar23 = iVar23 + 1; + puVar25 = (undefined8 *)((long)puVar25 + 4); + } while (iVar23 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + iVar12 = iVar12 + 1; + local_138 = local_138 + 1; + if (local_128 <= local_138) { + cvChangeSeqBlock(&local_150,1); + } + local_110 = local_110 + 1; + if (*(int *)(local_148 + 0x28) * 2 <= local_110) { + local_110 = 0; + } + } while (iVar12 != iVar11); + } + cVar10 = _OutputArray::needed(param_3); + if (cVar10 != '\0') { + _OutputArray::create(param_3,1,iVar11,0x1c,-1,true,0); + iVar12 = _InputArray::kind((_InputArray *)param_3); + if (iVar12 == 0x10000) { + pMVar19 = *(Mat **)(param_3 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar3 = *(uint *)pMVar19; + local_50 = *(undefined8 **)(pMVar19 + 0x10); + local_60 = *(ulong *)pMVar19; + local_58 = *(undefined8 *)(pMVar19 + 8); + local_48 = *(undefined8 *)(pMVar19 + 0x18); + local_40 = *(undefined8 *)(pMVar19 + 0x20); + local_38 = *(undefined8 *)(pMVar19 + 0x28); + local_30 = *(undefined8 *)(pMVar19 + 0x30); + local_28 = *(long *)(pMVar19 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar19 + 0x48); + local_8 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar3; + Mat::copySize((Mat *)&local_60,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_3); + } + puVar25 = local_50; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (undefined8 *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar12 = 0; + puVar18 = local_20; + do { + *(undefined4 *)puVar18 = 0; + iVar12 = iVar12 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar12 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + cvStartReadSeq(lVar14,&local_108,0); + local_150 = local_108; + local_148 = lStack_100; + local_c8 = 0; + local_110 = 0; + local_140 = local_f8; + local_138 = plStack_f0; + local_130 = local_e8; + local_128 = plStack_e0; + local_120 = local_d8; + uStack_118 = uStack_d0; + if (0 < iVar11) { + puVar18 = puVar25 + ((ulong)(iVar11 - 1) + 1) * 2; + do { + lVar14 = *local_138; + if (*(long *)(lVar14 + 0x10) == 0) { + uVar24 = 0xffffffff; + } + else { + uVar24 = *(undefined4 *)(*(long *)(lVar14 + 0x10) + 0x70); + } + if (*(long *)(lVar14 + 8) == 0) { + uVar20 = 0xffffffff; + } + else { + uVar20 = *(undefined4 *)(*(long *)(lVar14 + 8) + 0x70); + } + if (*(long *)(lVar14 + 0x20) == 0) { + uVar22 = 0xffffffff; + } + else { + uVar22 = *(undefined4 *)(*(long *)(lVar14 + 0x20) + 0x70); + } + if (*(long *)(lVar14 + 0x18) == 0) { + uVar21 = 0xffffffff; + } + else { + uVar21 = *(undefined4 *)(*(long *)(lVar14 + 0x18) + 0x70); + } + local_138 = local_138 + 1; + *puVar25 = CONCAT44(uVar20,uVar24); + puVar25[1] = CONCAT44(uVar21,uVar22); + if (local_128 <= local_138) { + cvChangeSeqBlock(&local_150,1); + } + local_110 = local_110 + 1; + if (*(int *)(local_148 + 0x28) * 2 <= local_110) { + local_110 = 0; + } + puVar25 = puVar25 + 2; + } while (puVar25 != puVar18); + } + } + if (plVar15 != (long *)0x0) { + plVar2 = plVar15 + 1; + do { + lVar14 = *plVar2; + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar4) { + *(int *)plVar2 = (int)lVar14 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if ((int)lVar14 == 1) { + if (*(code **)(*plVar15 + 0x10) == FUN_0019aef0) { + DefaultDeleter::operator() + ((DefaultDeleter *)(plVar15 + 3),(CvMemStorage *)plVar15[2]); + (**(code **)(*plVar15 + 8))(plVar15); + } + else { + (**(code **)(*plVar15 + 0x10))(plVar15); + } + } + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar1; + cVar10 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + if (0 < local_bc) { + iVar11 = 0; + puVar17 = local_80; + do { + *puVar17 = 0; + iVar11 = iVar11 + 1; + puVar17 = puVar17 + 1; + } while (iVar11 < local_bc); + } + } + local_88 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + local_b0 = 0; + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0019e728 (100 bytes) name=findContours + +/* cv::findContours(cv::_InputOutputArray const&, cv::_OutputArray const&, int, int, + cv::Point_) */ + +void cv::findContours(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5) + +{ + undefined8 uVar1; + undefined4 local_8; + undefined4 local_4; + + uVar1 = noArray(); + local_8 = *param_5; + local_4 = param_5[1]; + findContours(param_1,param_2,uVar1,param_3,param_4,&local_8); + return; +} + + +================================================================== + +### FUNC 0019e790 (1496 bytes) name=FUN_0019e790 + +void FUN_0019e790(_OutputArray *param_1,_OutputArray *param_2,int param_3,int param_4,byte param_5, + int param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + bool bVar4; + double dVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + char *pcVar11; + undefined4 *puVar12; + Mat *pMVar13; + undefined8 *puVar14; + double dVar15; + undefined4 local_148 [4]; + undefined4 local_138 [2]; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined4 *local_50; + undefined4 *local_48; + undefined4 *local_40; + undefined4 *local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + ulong *local_18; + ulong local_10 [2]; + + if (1 < param_6 - 5U) { + local_60 = 0; + local_58 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_60,0x22); + uVar9 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._24_8_; + uVar8 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._16_8_; + uVar7 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._8_8_; + uVar6 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._0_8_; + *(undefined2 *)(pcVar11 + 0x20) = s_ktype____CV_32F____ktype____CV_6_0043e3a0._32_2_; + *(undefined8 *)pcVar11 = uVar6; + *(undefined8 *)(pcVar11 + 8) = uVar7; + *(undefined8 *)(pcVar11 + 0x10) = uVar8; + *(undefined8 *)(pcVar11 + 0x18) = uVar9; + cv::error(-0xd7,(String *)&local_60, + "void cv::getScharrKernels(cv::OutputArray, cv::OutputArray, int, int, bool, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x3e); + cv::String::deallocate((String *)&local_60); + } + cv::_OutputArray::create(param_1,3,1,param_6,-1,true,0); + cv::_OutputArray::create(param_2,3,1,param_6,-1,true,0); + iVar10 = cv::_InputArray::kind((_InputArray *)param_1); + if (iVar10 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(undefined4 *)pMVar13; + local_11c = *(int *)(pMVar13 + 4); + local_118 = *(undefined4 *)(pMVar13 + 8); + local_114 = *(undefined4 *)(pMVar13 + 0xc); + local_110 = *(undefined8 *)(pMVar13 + 0x10); + local_108 = *(undefined8 *)(pMVar13 + 0x18); + local_100 = *(undefined8 *)(pMVar13 + 0x20); + local_f8 = *(undefined8 *)(pMVar13 + 0x28); + local_f0 = *(undefined8 *)(pMVar13 + 0x30); + local_e8 = *(long *)(pMVar13 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar13 + 0x48); + local_c8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_11c = 0; + cv::Mat::copySize((Mat *)&local_120,pMVar13); + } + } + else { + cv::_InputArray::getMat_((int)param_1); + } + iVar10 = cv::_InputArray::kind((_InputArray *)param_2); + if (iVar10 == 0x10000) { + pMVar13 = *(Mat **)(param_2 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_b0 = *(undefined8 *)(pMVar13 + 0x10); + local_a8 = *(undefined8 *)(pMVar13 + 0x18); + local_a0 = *(undefined8 *)(pMVar13 + 0x20); + local_98 = *(undefined8 *)(pMVar13 + 0x28); + local_90 = *(undefined8 *)(pMVar13 + 0x30); + local_88 = *(long *)(pMVar13 + 0x38); + local_c0 = *(undefined4 *)pMVar13; + local_bc = *(int *)(pMVar13 + 4); + local_b8 = *(undefined4 *)(pMVar13 + 8); + local_b4 = *(undefined4 *)(pMVar13 + 0xc); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar13 + 0x48); + local_68 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_bc = 0; + cv::Mat::copySize((Mat *)&local_c0,pMVar13); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + if (((param_3 < 0) || (param_4 < 0)) || (param_3 + param_4 != 1)) { + local_60 = 0; + local_58 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_60,0x20); + uVar8 = s_dx_>__0____dy_>__0____dx_dy____1_0043e410._24_8_; + uVar7 = s_dx_>__0____dy_>__0____dx_dy____1_0043e410._16_8_; + uVar6 = s_dx_>__0____dy_>__0____dx_dy____1_0043e410._8_8_; + *(undefined8 *)pcVar11 = s_dx_>__0____dy_>__0____dx_dy____1_0043e410._0_8_; + *(undefined8 *)(pcVar11 + 8) = uVar6; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_60, + "void cv::getScharrKernels(cv::OutputArray, cv::OutputArray, int, int, bool, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x44); + cv::String::deallocate((String *)&local_60); + } + dVar5 = DAT_0019ee08; + bVar4 = false; + local_130 = (Mat *)&local_120; + if (param_3 != 0) goto LAB_0019eba4; + do { + local_148[0] = 3; + local_148[1] = 10; + local_148[2] = 3; + while( true ) { + local_58 = *(undefined8 *)(local_130 + 8); + local_10[0] = -(ulong)(*(uint *)(local_130 + 0xc) >> 0x1f) & 0xfffffffc00000000 | + (ulong)*(uint *)(local_130 + 0xc) << 2; + local_18 = local_10; + local_60 = 0x242ff4004; + local_30 = 0; + local_28 = 0; + local_10[1] = 4; + local_40 = (undefined4 *)((long)local_148 + local_10[0] * (long)*(int *)(local_130 + 8)); + dVar15 = 1.0; + if ((param_3 == 1) < param_5) { + dVar15 = dVar5; + } + local_128 = 0; + local_124 = 0; + local_138[0] = 0x2010000; + local_50 = local_148; + local_48 = local_148; + local_38 = local_40; + local_20 = &local_58; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)local_138,param_6,dVar15,0.0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (undefined4 *)0x0; + local_38 = (undefined4 *)0x0; + local_40 = (undefined4 *)0x0; + local_48 = (undefined4 *)0x0; + if (0 < local_60._4_4_) { + iVar10 = 0; + puVar14 = local_20; + do { + *(undefined4 *)puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar10 < local_60._4_4_); + } + if (local_18 != local_10) { + cv::fastFree(local_18); + } + if (bVar4) { + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + puVar12 = local_80; + do { + *puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = puVar12 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + puVar12 = local_e0; + do { + *puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = puVar12 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + return; + } + bVar4 = true; + local_130 = (Mat *)&local_c0; + param_3 = param_4; + if (param_4 == 0) break; +LAB_0019eba4: + if (param_3 == 1) { + local_148[1] = 0; + local_148[0] = 0xffffffff; + local_148[2] = 1; + } + } + } while( true ); +} + + +================================================================== + +### FUNC 0019ee10 (2316 bytes) name=FUN_0019ee10 + +void FUN_0019ee10(_OutputArray *param_1,_OutputArray *param_2,int param_3,int param_4,uint param_5, + char param_6,int param_7) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + bool bVar5; + ulong uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined4 uVar13; + undefined2 uVar14; + int iVar15; + uint uVar16; + char *pcVar17; + uint *__s; + uint uVar18; + uint *puVar19; + uint *puVar20; + undefined8 *puVar21; + undefined4 *puVar22; + Mat *pMVar23; + int iVar24; + uint uVar25; + uint uVar26; + double dVar27; + undefined8 local_148; + undefined8 local_140; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + uint *local_50; + uint *local_48; + uint *local_40; + uint *local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + ulong *local_18; + ulong local_10; + undefined8 local_8; + + if ((((param_5 != 1) || (uVar25 = 3, param_3 < 1)) && (uVar25 = param_5, param_5 != 1)) || + (uVar26 = 3, param_4 < 1)) { + uVar26 = param_5; + } + if (1 < param_7 - 5U) { + local_60 = 0; + local_58 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_60,0x22); + uVar10 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._24_8_; + uVar9 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._16_8_; + uVar8 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._8_8_; + uVar7 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._0_8_; + *(undefined2 *)(pcVar17 + 0x20) = s_ktype____CV_32F____ktype____CV_6_0043e3a0._32_2_; + *(undefined8 *)pcVar17 = uVar7; + *(undefined8 *)(pcVar17 + 8) = uVar8; + *(undefined8 *)(pcVar17 + 0x10) = uVar9; + *(undefined8 *)(pcVar17 + 0x18) = uVar10; + cv::error(-0xd7,(String *)&local_60, + "void cv::getSobelKernels(cv::OutputArray, cv::OutputArray, int, int, int, bool, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x61); + cv::String::deallocate((String *)&local_60); + } + cv::_OutputArray::create(param_1,uVar25,1,param_7,-1,true,0); + cv::_OutputArray::create(param_2,uVar26,1,param_7,-1,true,0); + iVar15 = cv::_InputArray::kind((_InputArray *)param_1); + if (iVar15 == 0x10000) { + pMVar23 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(undefined4 *)pMVar23; + local_11c = *(int *)(pMVar23 + 4); + local_118 = *(undefined4 *)(pMVar23 + 8); + local_114 = *(undefined4 *)(pMVar23 + 0xc); + local_110 = *(undefined8 *)(pMVar23 + 0x10); + local_108 = *(undefined8 *)(pMVar23 + 0x18); + local_100 = *(undefined8 *)(pMVar23 + 0x20); + local_f8 = *(undefined8 *)(pMVar23 + 0x28); + local_f0 = *(undefined8 *)(pMVar23 + 0x30); + local_e8 = *(long *)(pMVar23 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar23 + 0x48); + local_c8 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_11c = 0; + cv::Mat::copySize((Mat *)&local_120,pMVar23); + } + } + else { + cv::_InputArray::getMat_((int)param_1); + } + iVar15 = cv::_InputArray::kind((_InputArray *)param_2); + if (iVar15 == 0x10000) { + pMVar23 = *(Mat **)(param_2 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_b0 = *(undefined8 *)(pMVar23 + 0x10); + local_a8 = *(undefined8 *)(pMVar23 + 0x18); + local_a0 = *(undefined8 *)(pMVar23 + 0x20); + local_98 = *(undefined8 *)(pMVar23 + 0x28); + local_90 = *(undefined8 *)(pMVar23 + 0x30); + local_88 = *(long *)(pMVar23 + 0x38); + local_c0 = *(undefined4 *)pMVar23; + local_bc = *(int *)(pMVar23 + 4); + local_b8 = *(undefined4 *)(pMVar23 + 8); + local_b4 = *(undefined4 *)(pMVar23 + 0xc); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar3 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar23 + 0x48); + local_68 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_bc = 0; + cv::Mat::copySize((Mat *)&local_c0,pMVar23); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + uVar16 = uVar26; + if (((param_5 & 1) == 0) || (0x1f < (int)param_5)) { + local_148 = 0; + local_140 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_148,0x32); + uVar12 = s_The_kernel_size_must_be_odd_and_n_0043e438._40_8_; + uVar11 = s_The_kernel_size_must_be_odd_and_n_0043e438._32_8_; + uVar10 = s_The_kernel_size_must_be_odd_and_n_0043e438._24_8_; + uVar9 = s_The_kernel_size_must_be_odd_and_n_0043e438._16_8_; + uVar8 = s_The_kernel_size_must_be_odd_and_n_0043e438._8_8_; + uVar7 = s_The_kernel_size_must_be_odd_and_n_0043e438._0_8_; + *(undefined2 *)(pcVar17 + 0x30) = s_The_kernel_size_must_be_odd_and_n_0043e438._48_2_; + *(undefined8 *)pcVar17 = uVar7; + *(undefined8 *)(pcVar17 + 8) = uVar8; + *(undefined8 *)(pcVar17 + 0x10) = uVar9; + *(undefined8 *)(pcVar17 + 0x18) = uVar10; + *(undefined8 *)(pcVar17 + 0x20) = uVar11; + *(undefined8 *)(pcVar17 + 0x28) = uVar12; + cv::error(-0xd3,(String *)&local_148, + "void cv::getSobelKernels(cv::OutputArray, cv::OutputArray, int, int, int, bool, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x69); + cv::String::deallocate((String *)&local_148); + if ((int)uVar26 < (int)uVar25) { + uVar16 = uVar25; + } + } + else if ((int)uVar26 < (int)uVar25) { + uVar16 = uVar25; + } + uVar6 = (ulong)(int)(uVar16 + 1); + if (uVar6 == 0) { + __s = (uint *)0x0; + } + else { + if (0x3fffffffffffffff < uVar6) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + __s = operator_new(uVar6 << 2); + memset(__s,0,uVar6 << 2); + } + if (((param_3 < 0) || (param_4 < 0)) || (param_3 + param_4 == 0)) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_138,0x1f); + cVar3 = s_dx_>__0____dy_>__0____dx_dy_>_0_0043e470[0x1e]; + uVar14 = s_dx_>__0____dy_>__0____dx_dy_>_0_0043e470._28_2_; + uVar13 = s_dx_>__0____dy_>__0____dx_dy_>_0_0043e470._24_4_; + uVar8 = s_dx_>__0____dy_>__0____dx_dy_>_0_0043e470._8_8_; + uVar7 = s_dx_>__0____dy_>__0____dx_dy_>_0_0043e470._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_dx_>__0____dy_>__0____dx_dy_>_0_0043e470._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar13; + *(undefined2 *)(pcVar17 + 0x1c) = uVar14; + pcVar17[0x1e] = cVar3; + *(undefined8 *)pcVar17 = uVar7; + *(undefined8 *)(pcVar17 + 8) = uVar8; + cv::error(-0xd7,(String *)&local_138, + "void cv::getSobelKernels(cv::OutputArray, cv::OutputArray, int, int, int, bool, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x6c); + cv::String::deallocate((String *)&local_138); + } + bVar5 = false; + pMVar23 = (Mat *)&local_120; + bVar4 = bVar5; + if ((int)uVar25 <= param_3) goto LAB_0019f260; +LAB_0019efe8: + bVar5 = bVar4; + if (uVar25 == 1) goto LAB_0019f2b8; + do { + if (uVar25 == 3) { + if (param_3 == 0) { + *__s = 1; + __s[1] = 2; + __s[2] = 1; + } + else if (param_3 == 1) { + __s[1] = 0; + *__s = 0xffffffff; + __s[2] = 1; + } + else { + *__s = 1; + __s[1] = 0xfffffffe; + __s[2] = 1; + } + } + else { + *__s = 1; + if (0 < (int)uVar25) { + memset(__s + 1,0,((ulong)(uVar25 - 1) + 1) * 4); + } + if (1 < (int)(uVar25 - param_3)) { + iVar15 = 0; + do { + uVar16 = *__s; + if (0 < (int)uVar25) { + if ((int)uVar25 < 3) { + iVar24 = 1; + } + else { + iVar24 = 1; + puVar19 = __s + 1; + uVar18 = uVar16; + do { + uVar2 = *puVar19; + iVar24 = iVar24 + 2; + puVar19[-1] = uVar16; + uVar16 = uVar2 + uVar18; + uVar18 = puVar19[1]; + puVar20 = puVar19 + 2; + *puVar19 = uVar16; + uVar16 = uVar2 + uVar18; + puVar19 = puVar20; + } while (puVar20 != __s + (ulong)(uVar25 - 3 >> 1) * 2 + 3); + } + puVar19 = __s + iVar24; + do { + iVar24 = iVar24 + 1; + uVar2 = puVar19[-1]; + uVar18 = *puVar19; + puVar19[-1] = uVar16; + puVar19 = puVar19 + 1; + uVar16 = uVar18 + uVar2; + } while (iVar24 <= (int)uVar25); + } + iVar15 = iVar15 + 1; + } while (iVar15 != (uVar25 - param_3) + -1); + } + if (0 < param_3) { + iVar15 = 0; + do { + uVar16 = -*__s; + puVar19 = __s + 1; + uVar18 = *__s; + if (0 < (int)uVar25) { + do { + uVar2 = *puVar19; + puVar20 = puVar19 + 1; + puVar19[-1] = uVar16; + uVar16 = uVar18 - uVar2; + puVar19 = puVar20; + uVar18 = uVar2; + } while (puVar20 != __s + (ulong)(uVar25 - 1) + 2); + } + iVar15 = iVar15 + 1; + } while (iVar15 != param_3); + } + } + while( true ) { + local_58 = *(undefined8 *)(pMVar23 + 8); + local_10 = -(ulong)(*(uint *)(pMVar23 + 0xc) >> 0x1f) & 0xfffffffc00000000 | + (ulong)*(uint *)(pMVar23 + 0xc) << 2; + local_20 = &local_58; + local_60 = 0x242ff4004; + local_18 = &local_10; + local_30 = 0; + local_28 = 0; + local_40 = (uint *)((long)__s + local_10 * (long)*(int *)(pMVar23 + 8)); + local_8 = 4; + dVar27 = 1.0; + if (param_6 != '\0') { + dVar27 = 1.0 / (double)(1 << (ulong)((uVar25 - param_3) - 1 & 0x1f)); + } + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_130 = pMVar23; + local_50 = __s; + local_48 = __s; + local_38 = local_40; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_138,param_7,dVar27,0.0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar15 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (uint *)0x0; + local_38 = (uint *)0x0; + local_40 = (uint *)0x0; + local_48 = (uint *)0x0; + if (0 < local_60._4_4_) { + iVar15 = 0; + puVar21 = local_20; + do { + *(undefined4 *)puVar21 = 0; + iVar15 = iVar15 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar15 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (bVar5) { + if (__s != (uint *)0x0) { + operator_delete(__s); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar15 = *piVar1; + cVar3 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar15 = 0; + puVar22 = local_80; + do { + *puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = puVar22 + 1; + } while (iVar15 < local_bc); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar15 = *piVar1; + cVar3 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar15 = 0; + puVar22 = local_e0; + do { + *puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = puVar22 + 1; + } while (iVar15 < local_11c); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + return; + } + bVar5 = true; + pMVar23 = (Mat *)&local_c0; + param_3 = param_4; + uVar25 = uVar26; + bVar4 = true; + if (param_4 < (int)uVar26) goto LAB_0019efe8; +LAB_0019f260: + local_60 = 0; + local_58 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_60,0xd); + cVar3 = s_ksize_>_order_0043e490[0xc]; + uVar13 = s_ksize_>_order_0043e490._8_4_; + *(undefined8 *)pcVar17 = s_ksize_>_order_0043e490._0_8_; + *(undefined4 *)(pcVar17 + 8) = uVar13; + pcVar17[0xc] = cVar3; + cv::error(-0xd7,(String *)&local_60, + "void cv::getSobelKernels(cv::OutputArray, cv::OutputArray, int, int, int, bool, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x74); + cv::String::deallocate((String *)&local_60); + if (uVar25 != 1) break; +LAB_0019f2b8: + *__s = uVar25; + } + } while( true ); +} + + +================================================================== + +### FUNC 0019f7e4 (28 bytes) name=getDerivKernels + +/* cv::getDerivKernels(cv::_OutputArray const&, cv::_OutputArray const&, int, int, int, bool, int) + */ + +void cv::getDerivKernels(_OutputArray *param_1,_OutputArray *param_2,int param_3,int param_4, + int param_5,bool param_6,int param_7) + +{ + if (0 < param_5) { + FUN_0019ee10(); + return; + } + FUN_0019e790(param_1,param_2,param_3,param_4,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 0019f800 (624 bytes) name=FUN_0019f800 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +FUN_0019f800(undefined8 param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5, + int param_6,undefined4 param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined8 *puVar5; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110 [2]; + Mat *local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8 [2]; + Mat *local_f0; + undefined4 local_e8; + undefined4 local_e4; + undefined8 local_e0; + Mat *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_78 = &local_70; + local_18 = &local_10; + local_80 = &uStack_b8; + local_20 = &uStack_58; + uStack_b8 = _UNK_0019fac8; + local_c0 = _DAT_0019fac0; + uStack_68 = 0; + local_70 = 0; + uStack_58 = _UNK_0019fac8; + local_60 = _DAT_0019fac0; + uStack_8 = 0; + local_10 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x2010000; + local_d0 = 0; + local_e0 = CONCAT44(local_e0._4_4_,0x2010000); + local_f0 = (Mat *)&local_c0; + local_d8 = (Mat *)&local_60; + cv::getDerivKernels((_OutputArray *)local_f8,(_OutputArray *)&local_e0,param_4,param_5,param_6, + false,5); + local_d8 = (Mat *)0x0; + local_e0 = 0; + uStack_c8 = 0; + local_d0 = 0; + local_100 = 0; + local_fc = 0; + local_110[0] = 0x1010000; + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x1010000; + local_118 = 0xffffffff; + local_114 = 0xffffffff; + local_108 = (Mat *)&local_c0; + local_f0 = (Mat *)&local_60; + FUN_001d5c50(param_1,0,param_2,param_3,local_110,(_OutputArray *)local_f8,&local_118,param_7, + 0xffffffff,(_OutputArray *)&local_e0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar4 = 0; + puVar5 = local_20; + do { + *(undefined4 *)puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } while (iVar4 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar4 = 0; + puVar5 = local_80; + do { + *(undefined4 *)puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } while (iVar4 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + return param_1; +} + + +================================================================== + +### FUNC 0019fad0 (876 bytes) name=Sobel + +/* cv::Sobel(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, double, double, + int) */ + +void cv::Sobel(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,int param_5, + int param_6,double param_7,double param_8,int param_9) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + uint uVar5; + undefined4 *puVar6; + int iVar7; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + Mat *local_e8; + int local_e0; + int local_dc; + undefined4 local_d8 [2]; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar5 = _InputArray::type(param_1,-1); + uVar2 = uVar5 & 7; + if (param_3 < 0) { + param_3 = uVar2; + } + _InputArray::size((int)param_1); + _OutputArray::create(param_2,(Mat *)&local_60,(param_3 & 7U) + (uVar5 & 0xff8),0xffffffff,0,0); + local_bc = 0; + if (uVar2 < 5) { + uVar2 = 5; + } + local_80 = &local_b8; + local_78 = &local_70; + local_20 = &local_58; + local_18 = &local_10; + if ((int)uVar2 < param_3) { + uVar2 = param_3; + } + local_c0 = 0x42ff0000; + local_b8 = 0; + local_b4 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_68 = 0; + local_70 = 0; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + local_e0 = 0; + local_dc = 0; + local_f0[0] = 0x2010000; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + getDerivKernels((_OutputArray *)local_f0,(_OutputArray *)local_d8,param_4,param_5,param_6,false, + uVar2); + if (param_7 != 1.0) { + if (param_4 == 0) { + local_f0[0] = 0x2010000; + local_e8 = (Mat *)&local_c0; + local_e0 = param_4; + local_dc = param_4; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)local_f0,-1,param_7,0.0); + } + else { + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_d0 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_60,(_OutputArray *)local_d8,-1,param_7,0.0); + } + } + local_e0 = 0; + local_dc = 0; + local_f0[0] = 0x1010000; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x1010000; + local_f8 = 0xffffffff; + local_f4 = 0xffffffff; + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + sepFilter2D(param_8,param_1,param_2,param_3,(_OutputArray *)local_f0,(_OutputArray *)local_d8, + &local_f8,param_9); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + puVar6 = local_20; + do { + *puVar6 = 0; + iVar7 = iVar7 + 1; + puVar6 = puVar6 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + puVar6 = local_80; + do { + *puVar6 = 0; + iVar7 = iVar7 + 1; + puVar6 = puVar6 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0019fe8c (868 bytes) name=Scharr + +/* cv::Scharr(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, double, double, int) + */ + +void cv::Scharr(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,int param_5, + double param_6,double param_7,int param_8) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + uint uVar5; + undefined4 *puVar6; + int iVar7; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + Mat *local_e8; + int local_e0; + int local_dc; + undefined4 local_d8 [2]; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar5 = _InputArray::type(param_1,-1); + uVar2 = uVar5 & 7; + if (param_3 < 0) { + param_3 = uVar2; + } + _InputArray::size((int)param_1); + _OutputArray::create(param_2,(Mat *)&local_60,(param_3 & 7U) + (uVar5 & 0xff8),0xffffffff,0,0); + local_bc = 0; + if (uVar2 < 5) { + uVar2 = 5; + } + local_80 = &local_b8; + local_78 = &local_70; + local_20 = &local_58; + local_18 = &local_10; + if ((int)uVar2 < param_3) { + uVar2 = param_3; + } + local_c0 = 0x42ff0000; + local_b8 = 0; + local_b4 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_68 = 0; + local_70 = 0; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + local_e0 = 0; + local_dc = 0; + local_f0[0] = 0x2010000; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + FUN_0019e790((_OutputArray *)local_f0,(_OutputArray *)local_d8,param_4,param_5,0,uVar2); + if (param_6 != 1.0) { + if (param_4 == 0) { + local_f0[0] = 0x2010000; + local_e8 = (Mat *)&local_c0; + local_e0 = param_4; + local_dc = param_4; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)local_f0,-1,param_6,0.0); + } + else { + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_d0 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_60,(_OutputArray *)local_d8,-1,param_6,0.0); + } + } + local_e0 = 0; + local_dc = 0; + local_f0[0] = 0x1010000; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x1010000; + local_f8 = 0xffffffff; + local_f4 = 0xffffffff; + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + sepFilter2D(param_7,param_1,param_2,param_3,(_OutputArray *)local_f0,(_OutputArray *)local_d8, + &local_f8,param_8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + puVar6 = local_20; + do { + *puVar6 = 0; + iVar7 = iVar7 + 1; + puVar6 = puVar6 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + puVar6 = local_80; + do { + *puVar6 = 0; + iVar7 = iVar7 + 1; + puVar6 = puVar6 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 001a0240 (3512 bytes) name=Laplacian + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::Laplacian(cv::_InputArray const&, cv::_OutputArray const&, int, int, double, double, int) */ + +void cv::Laplacian(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,double param_5 + ,double param_6,int param_7) + +{ + int *piVar1; + long *plVar2; + int iVar3; + uint uVar4; + uint uVar5; + char cVar6; + bool bVar7; + int iVar8; + int iVar9; + ulong uVar10; + _InputArray *p_Var11; + undefined8 *puVar12; + Mat **ppMVar13; + Mat *pMVar14; + ulong uVar15; + long lVar16; + int iVar17; + uint local_340; + undefined4 local_320; + undefined4 local_31c; + int local_318; + int local_314; + int local_310; + int local_30c; + long *local_308; + long *local_300; + long *local_2f8; + long *local_2f0; + undefined4 local_2e8 [2]; + Mat *local_2e0; + undefined4 local_2d8; + undefined4 local_2d4; + undefined4 local_2d0 [2]; + Mat *local_2c8; + undefined4 local_2c0; + undefined4 local_2bc; + undefined4 local_2b8 [2]; + Mat *local_2b0; + undefined4 local_2a8; + undefined4 local_2a4; + undefined8 local_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 local_288; + undefined8 local_280; + undefined8 local_278; + undefined8 local_270; + long local_268; + undefined8 *local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 uStack_248; + undefined8 local_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + undefined8 local_210; + long local_208; + undefined8 *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + undefined8 *local_1a0; + ulong *local_198; + ulong local_190 [2]; + undefined8 local_180; + undefined8 uStack_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined8 *local_140; + ulong *local_138; + ulong local_130 [2]; + undefined4 local_120; + int local_11c; + undefined8 local_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined8 *local_e0; + ulong *local_d8; + ulong local_d0; + ulong local_c8; + int local_c0 [2]; + Mat *local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + Mat **local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 uStack_58; + int *local_50; + int *piStack_48; + long local_40; + long local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + uVar10 = _InputArray::type(param_1,-1); + uVar4 = (uint)uVar10 & 7; + if (param_3 < 0) { + param_3 = uVar4; + } + uVar5 = (uint)((uVar10 & 0xffffffff) >> 3); + local_340 = uVar5 & 0x1ff; + iVar8 = (uVar5 & 0x1ff) * 8; + _InputArray::size((int)param_1); + _OutputArray::create(param_2,(Mat *)&local_60,(param_3 & 7U) + iVar8,0xffffffff,0,0); + if ((param_4 & 0xfffffffdU) == 1) { + local_30 = 0; + local_18 = &local_10; + local_20 = &uStack_58; + local_c0[1] = 0x3f800000; + uStack_58 = (Mat *)_UNK_001a11b8; + local_60 = _DAT_001a11b0; + local_50 = local_c0 + (ulong)(param_4 == 3) * 9; + local_40 = (long)&local_a0 + (ulong)(param_4 == 3) * 0x24 + 4; + uStack_8 = _UNK_001a11c8; + local_10 = _DAT_001a11c0; + local_28 = 0; + local_c0[0] = 0; + local_b8 = (Mat *)0x3f80000000000000; + local_b0 = 0x3f800000c0800000; + local_a8 = 0x3f80000000000000; + local_a0 = 0x4000000000000000; + local_98 = 0x4000000000000000; + local_90 = 0xc100000000000000; + local_88 = 0x4000000000000000; + local_80 = (Mat **)0x4000000000000000; + piStack_48 = local_50; + local_38 = local_40; + if (param_5 != 1.0) { + local_110 = 0; + local_120 = 0x2010000; + local_118 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_120,-1,param_5,0.0); + } + local_110 = 0; + local_120 = 0x1010000; + local_180 = 0xffffffffffffffff; + local_118 = (Mat *)&local_60; + filter2D(param_6,param_1,param_2,param_3,&local_120,&local_180,param_7); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (int *)0x0; + local_38 = 0; + local_40 = 0; + piStack_48 = (int *)0x0; + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_60._4_4_); + } + puVar12 = local_18; + if (local_18 == &local_10) { + return; + } + } + else { + uVar5 = uVar4; + if (uVar4 < 5) { + uVar5 = 5; + } + if ((int)uVar5 < param_3) { + uVar5 = param_3; + } + if ((uVar10 & 7) == 0) { + iVar17 = 3; + if (5 < param_4) { + iVar17 = 5; + } + } + else { + iVar17 = 6; + if (uVar4 < 6) { + iVar17 = 5; + } + } + local_258 = &local_250; + local_1f8 = &local_1f0; + uStack_248 = 0; + local_250 = 0; + uStack_298 = _UNK_001a11d8; + local_2a0 = _DAT_001a11d0; + uStack_238 = _UNK_001a11d8; + local_240 = _DAT_001a11d0; + uStack_1e8 = 0; + local_1f0 = 0; + local_260 = &uStack_298; + local_200 = &uStack_238; + iVar17 = iVar17 + iVar8; + local_290 = 0; + local_288 = 0; + local_280 = 0; + local_278 = 0; + local_270 = 0; + local_268 = 0; + local_230 = 0; + local_228 = 0; + local_220 = 0; + local_218 = 0; + local_210 = 0; + local_208 = 0; + local_b0 = 0; + local_c0[0] = 0x2010000; + local_50 = (int *)0x0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + local_b8 = (Mat *)&local_2a0; + uStack_58 = (Mat *)&local_240; + FUN_0019ee10((Mat *)local_c0,(Mat *)&local_60,2,0,param_4,0,uVar5); + uStack_58 = (Mat *)0x0; + local_60 = 0; + piStack_48 = (int *)0x0; + local_50 = (int *)0x0; + local_110 = 0; + local_120 = 0x1010000; + local_b0 = 0; + local_c0[0] = 0x1010000; + local_180._0_4_ = 0xffffffff; + local_180._4_4_ = 0xffffffff; + local_118 = (Mat *)&local_2a0; + local_b8 = (Mat *)&local_240; + FUN_001d5c50(&local_308,0,uVar10 & 0xffffffff,iVar17,(Mat *)&local_120,(Mat *)local_c0, + (Mat *)&local_180,param_7,param_7,(Mat *)&local_60); + uStack_58 = (Mat *)0x0; + local_60 = 0; + piStack_48 = (int *)0x0; + local_50 = (int *)0x0; + local_110 = 0; + local_120 = 0x1010000; + local_b0 = 0; + local_c0[0] = 0x1010000; + local_180 = 0xffffffffffffffff; + local_118 = (Mat *)&local_240; + local_b8 = (Mat *)&local_2a0; + FUN_001d5c50(&local_2f8,0,uVar10 & 0xffffffff,iVar17,(Mat *)&local_120,(Mat *)local_c0, + (Mat *)&local_180,param_7,param_7,(Mat *)&local_60); + iVar8 = _InputArray::kind(param_1); + if (iVar8 == 0x10000) { + pMVar14 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(undefined4 *)pMVar14; + local_110 = *(long *)(pMVar14 + 0x10); + local_11c = *(int *)(pMVar14 + 4); + local_118 = *(Mat **)(pMVar14 + 8); + local_108 = *(undefined8 *)(pMVar14 + 0x18); + local_100 = *(undefined8 *)(pMVar14 + 0x20); + local_f8 = *(undefined8 *)(pMVar14 + 0x28); + local_f0 = *(undefined8 *)(pMVar14 + 0x30); + local_e8 = *(long *)(pMVar14 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_d0 = **(ulong **)(pMVar14 + 0x48); + local_c8 = (*(ulong **)(pMVar14 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar8 = _InputArray::kind((_InputArray *)param_2); + if (iVar8 == 0x10000) { + pMVar14 = *(Mat **)(param_2 + 8); + local_b0 = *(undefined8 *)(pMVar14 + 0x10); + local_80 = &local_b8; + local_78 = &local_70; + local_c0[0] = *(int *)pMVar14; + local_c0[1] = *(int *)(pMVar14 + 4); + local_b8 = *(Mat **)(pMVar14 + 8); + local_a8 = *(undefined8 *)(pMVar14 + 0x18); + local_a0 = *(undefined8 *)(pMVar14 + 0x20); + local_98 = *(undefined8 *)(pMVar14 + 0x28); + local_90 = *(undefined8 *)(pMVar14 + 0x30); + local_88 = *(long *)(pMVar14 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar14 + 0x48); + local_68 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_c0[1] = 0; + Mat::copySize((Mat *)local_c0,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_60 = 0; + uStack_58._0_4_ = 0xffffffff; + uStack_58._4_4_ = 0xffffffff; + iVar8 = (**(code **)(*local_300 + 0x18)) + (local_300,(Mat *)&local_120,(Mat *)&local_60,0,0xffffffff); + local_60 = 0; + uStack_58 = (Mat *)0xffffffffffffffff; + (**(code **)(*local_2f0 + 0x18))(local_2f0,(Mat *)&local_120,(Mat *)&local_60,0,0xffffffff); + local_198 = local_190; + lVar16 = local_110 + (long)iVar8 * *local_d8; + uVar15 = (ulong)(int)((local_340 + 1 << (ulong)((uint)(0xfa50L >> (uVar4 << 1)) & 3)) * + local_118._4_4_); + uStack_1d8 = _UNK_001a11d8; + local_1e0 = _DAT_001a11d0; + uVar10 = 0; + if (uVar15 != 0) { + uVar10 = 0x4000 / uVar15; + } + local_1a0 = &uStack_1d8; + iVar8 = (int)uVar10; + if (uVar10 == 0) { + iVar8 = 1; + } + local_190[1] = 0; + local_190[0] = 0; + if ((int)local_118 < iVar8) { + iVar8 = (int)local_118; + } + local_310 = iVar8 + (int)uStack_298 + -1; + local_1d0 = 0; + local_1c8 = 0; + local_1c0 = 0; + local_1b8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_30c = local_118._4_4_; + Mat::create((Mat *)&local_1e0,2,&local_310,iVar17); + local_138 = local_130; + local_140 = &uStack_178; + local_170 = 0; + local_168 = 0; + uStack_178 = _UNK_001a11d8; + local_180 = _DAT_001a11d0; + local_60 = CONCAT44(local_118._4_4_,iVar8 + (int)uStack_298 + -1); + local_130[1] = 0; + local_130[0] = 0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + Mat::create((Mat *)&local_180,2,(int *)&local_60,iVar17); + if (0 < (int)local_118) { + iVar17 = 0; + do { + while( true ) { + (**(code **)(*local_300 + 0x20)) + (local_300,lVar16,local_d0,iVar8,local_1d0,local_190[0] & 0xffffffff); + iVar9 = (**(code **)(*local_2f0 + 0x20)) + (local_2f0,lVar16,local_d0 & 0xffffffff,iVar8,local_170, + local_130[0] & 0xffffffff); + if (iVar9 < 1) break; + iVar3 = iVar17 + iVar9; + local_320 = 0x80000000; + local_31c = 0x7fffffff; + local_318 = iVar17; + local_314 = iVar3; + Mat::Mat((Mat *)&local_60,(Mat *)local_c0,(Range *)&local_318,(Range *)&local_320); + uStack_178 = CONCAT44(uStack_178._4_4_,iVar9); + uStack_1d8 = CONCAT44(uStack_1d8._4_4_,iVar9); + local_2b8[0] = 0x1010000; + local_2d0[0] = 0x1010000; + local_2a8 = 0; + local_2a4 = 0; + local_2c0 = 0; + local_2bc = 0; + local_2d8 = 0; + local_2d4 = 0; + local_2e8[0] = 0x2010000; + local_2c8 = (Mat *)&local_180; + local_2b0 = (Mat *)&local_1e0; + local_2e0 = (Mat *)&local_1e0; + p_Var11 = (_InputArray *)noArray(); + add((_InputArray *)local_2b8,(_InputArray *)local_2d0,(_OutputArray *)local_2e8,p_Var11,-1 + ); + local_2a8 = 0; + local_2a4 = 0; + local_2b8[0] = 0x2010000; + local_2b0 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_1e0,(_OutputArray *)local_2b8,param_3,param_5,param_6); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar17 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar17 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (int *)0x0; + local_38 = 0; + local_40 = 0; + piStack_48 = (int *)0x0; + if (0 < local_60._4_4_) { + iVar17 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar17 = iVar17 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar17 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + lVar16 = lVar16 + (long)iVar8 * local_d0; + iVar17 = iVar3; + if ((int)local_118 <= iVar3) goto LAB_001a08dc; + } + iVar17 = iVar17 + iVar9; + lVar16 = lVar16 + (long)iVar8 * local_d0; + } while (iVar17 < (int)local_118); + } +LAB_001a08dc: + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar8 = 0; + puVar12 = local_140; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_180._4_4_); + } + if (local_138 != local_130) { + fastFree(local_138); + } + if (local_1a8 != 0) { + piVar1 = (int *)(local_1a8 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar8 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_1e0._4_4_); + } + if (local_198 != local_190) { + fastFree(local_198); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0[1]) { + iVar8 = 0; + ppMVar13 = local_80; + do { + *(undefined4 *)ppMVar13 = 0; + iVar8 = iVar8 + 1; + ppMVar13 = (Mat **)((long)ppMVar13 + 4); + } while (iVar8 < local_c0[1]); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar8 = 0; + puVar12 = local_e0; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + plVar2 = local_2f8 + 1; + if (local_2f8 != (long *)0x0) { + do { + lVar16 = *plVar2; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar7) { + *(int *)plVar2 = (int)lVar16 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if ((int)lVar16 == 1) { + (**(code **)(*local_2f8 + 0x10))(); + } + } + plVar2 = local_308 + 1; + if (local_308 != (long *)0x0) { + do { + lVar16 = *plVar2; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar7) { + *(int *)plVar2 = (int)lVar16 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if ((int)lVar16 == 1) { + (**(code **)(*local_308 + 0x10))(); + } + } + if (local_208 != 0) { + piVar1 = (int *)(local_208 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + local_208 = 0; + local_230 = 0; + local_218 = 0; + local_220 = 0; + local_228 = 0; + if (0 < local_240._4_4_) { + iVar8 = 0; + puVar12 = local_200; + do { + iVar8 = iVar8 + 1; + *(undefined4 *)puVar12 = 0; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + } + if (local_268 != 0) { + piVar1 = (int *)(local_268 + 0x14); + do { + iVar8 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + local_268 = 0; + local_290 = 0; + local_278 = 0; + local_280 = 0; + local_288 = 0; + if (0 < local_2a0._4_4_) { + iVar8 = 0; + puVar12 = local_260; + do { + iVar8 = iVar8 + 1; + *(undefined4 *)puVar12 = 0; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_2a0._4_4_); + } + puVar12 = local_258; + if (local_258 == &local_250) { + return; + } + } + fastFree(puVar12); + return; +} + + +================================================================== + +### FUNC 001a11e0 (756 bytes) name=cvSobel + +void cvSobel(cv *param_1,cv *param_2,int param_3,uint param_4,int param_5,AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + char *pcVar11; + int iVar12; + undefined8 local_f0; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8 [2]; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if (((local_80[1] != local_20[1]) || (*local_80 != *local_20)) || + ((local_c0 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1)) { + local_f0 = 0; + local_e8 = (Mat *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_f0,0x3c); + uVar10 = s_src_size______dst_size______src__0043e4a0._56_4_; + uVar9 = s_src_size______dst_size______src__0043e4a0._40_8_; + uVar8 = s_src_size______dst_size______src__0043e4a0._32_8_; + uVar7 = s_src_size______dst_size______src__0043e4a0._24_8_; + uVar6 = s_src_size______dst_size______src__0043e4a0._16_8_; + uVar5 = s_src_size______dst_size______src__0043e4a0._8_8_; + uVar4 = s_src_size______dst_size______src__0043e4a0._0_8_; + *(undefined8 *)(pcVar11 + 0x30) = s_src_size______dst_size______src__0043e4a0._48_8_; + *(undefined4 *)(pcVar11 + 0x38) = uVar10; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar6; + *(undefined8 *)(pcVar11 + 0x18) = uVar7; + *(undefined8 *)(pcVar11 + 0x20) = uVar8; + *(undefined8 *)(pcVar11 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_f0,"void cvSobel(const void*, void*, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x3b5); + cv::String::deallocate((String *)&local_f0); + } + local_f0 = CONCAT44(local_f0._4_4_,0x1010000); + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::Sobel((_InputArray *)&local_f0,(_OutputArray *)local_d8,local_60 & 7,param_3,param_4,param_5, + 1.0,0.0,1); + if (((param_1 != (cv *)0x0) && (*(int *)param_1 == 0x90)) && + ((*(long *)(param_1 + 0x58) != 0 && ((*(int *)(param_1 + 0x20) != 0 && ((param_4 & 1) != 0))))) + ) { + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_d0 = (Mat *)&local_60; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)local_d8,-1,-1.0,0.0); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 001a1534 (632 bytes) name=cvLaplace + +void cvLaplace(cv *param_1,cv *param_2,int param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + char *pcVar11; + int iVar12; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if (((local_80[1] != local_20[1]) || (*local_80 != *local_20)) || + ((local_c0 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1)) { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_d8,0x3c); + uVar10 = s_src_size______dst_size______src__0043e4a0._56_4_; + uVar9 = s_src_size______dst_size______src__0043e4a0._40_8_; + uVar8 = s_src_size______dst_size______src__0043e4a0._32_8_; + uVar7 = s_src_size______dst_size______src__0043e4a0._24_8_; + uVar6 = s_src_size______dst_size______src__0043e4a0._16_8_; + uVar5 = s_src_size______dst_size______src__0043e4a0._8_8_; + uVar4 = s_src_size______dst_size______src__0043e4a0._0_8_; + *(undefined8 *)(pcVar11 + 0x30) = s_src_size______dst_size______src__0043e4a0._48_8_; + *(undefined4 *)(pcVar11 + 0x38) = uVar10; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar6; + *(undefined8 *)(pcVar11 + 0x18) = uVar7; + *(undefined8 *)(pcVar11 + 0x20) = uVar8; + *(undefined8 *)(pcVar11 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_d8,"void cvLaplace(const void*, void*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/deriv.cpp",0x3c2); + cv::String::deallocate((String *)&local_d8); + } + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::Laplacian((_InputArray *)local_f0,(_OutputArray *)&local_d8,local_60 & 7,param_3,1.0,0.0,1); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 001a1810 (40 bytes) name=FUN_001a1810 + +void FUN_001a1810(ulong param_1) + +{ + if (param_1 < 0x2000000000000000) { + operator_new(param_1 << 3); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); +} + + +================================================================== + +### FUNC 001a1838 (6936 bytes) name=FUN_001a1838 + +void FUN_001a1838(long param_1,int *param_2,int param_3,undefined1 *param_4) + +{ + bool bVar1; + undefined1 *puVar2; + undefined1 *puVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + int iVar11; + int iVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + undefined1 *puVar18; + long lVar19; + undefined8 *puVar20; + ulong uVar21; + uint uVar22; + uint uVar23; + undefined8 *puVar24; + long lVar25; + ulong uVar26; + int iVar27; + int iVar28; + uint uVar29; + int iVar30; + long lVar31; + long lVar32; + int iVar33; + undefined8 uVar34; + uint uVar35; + uint uVar36; + + lVar31 = *(long *)(param_1 + 0x50); + uVar36 = (*(uint **)(param_1 + 0x40))[1]; + uVar35 = **(uint **)(param_1 + 0x40); + if (*(int *)(param_1 + 4) < 1) { + uVar14 = 0; + } + else { + uVar14 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + iVar33 = *param_2; + lVar32 = *(long *)(param_1 + 0x10); + uVar29 = param_3 * 2 - 1; + bVar1 = false; + if (((param_3 <= iVar33) && (iVar33 < (int)(uVar36 - param_3))) && (param_3 <= param_2[1])) { + bVar1 = param_2[1] < (int)(uVar35 - param_3); + } + if (param_3 < 0) { + return; + } + iVar30 = 1; + uVar5 = -(int)param_4 & 0xf; + uVar6 = uVar14; + if (uVar5 < uVar14) { + uVar6 = uVar5; + } + iVar28 = 0; + iVar9 = uVar14 - uVar6; + iVar27 = 0; + uVar10 = (uVar14 - 1) - uVar6; + uVar5 = (iVar9 - 0x10U >> 4) + 1; + puVar3 = param_4 + 0x10; + uVar26 = (ulong)uVar6; + iVar8 = uVar5 * 0x10; + do { + iVar7 = param_2[1]; + iVar11 = iVar33 - param_3; + uVar16 = param_3 + iVar33; + iVar12 = iVar33 - iVar27; + uVar23 = iVar7 - iVar27; + uVar22 = iVar7 + iVar27; + uVar13 = iVar7 - param_3; + uVar15 = iVar27 + iVar33; + uVar4 = iVar7 + param_3; + if (bVar1) { + lVar19 = lVar32 + (int)uVar23 * lVar31; + for (puVar18 = (undefined1 *)(lVar19 + (int)(iVar11 * uVar14)); + puVar18 <= (undefined1 *)(lVar19 + (int)(uVar16 * uVar14)); + puVar18 = puVar18 + (int)uVar14) { + if (0 < (int)uVar14) { + if ((param_4 < puVar18 + 0x10 && puVar18 < puVar3) || (uVar14 < 0x16)) { + lVar25 = 0; + do { + puVar18[lVar25] = param_4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar14); + } + else { + uVar23 = uVar6; + if (((uVar6 != 0) && (*puVar18 = *param_4, uVar6 != 1)) && + ((puVar18[1] = param_4[1], uVar6 != 2 && + (((puVar18[2] = param_4[2], uVar6 != 3 && (puVar18[3] = param_4[3], uVar6 != 4)) && + (puVar18[4] = param_4[4], uVar6 != 5)))))) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar23 = 6; + } + else { + puVar18[6] = param_4[6]; + if ((((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((puVar18[8] = param_4[8], uVar6 != 9 && + ((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)))))) && + ((puVar18[0xb] = param_4[0xb], uVar6 != 0xc && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)))) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar23 = 0xe; + } + } + } + } + if (0xe < uVar10) { + uVar17 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar26); + puVar24 = (undefined8 *)(param_4 + uVar26); + do { + uVar34 = *puVar24; + uVar17 = uVar17 + 1; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar17 < uVar5); + uVar23 = uVar23 + iVar8; + if (iVar9 == iVar8) goto LAB_001a2870; + } + iVar33 = uVar23 + 1; + puVar18[(int)uVar23] = param_4[(int)uVar23]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 2; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar23 + 3; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 4; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar23 + 5; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 6; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar23 + 7; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 8; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar23 + 9; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 10; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar23 + 0xb; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 0xc; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar23 + 0xd; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar23 + 0xe; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + puVar18[iVar7] = param_4[iVar7]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a2870: + } + lVar19 = lVar32 + (int)uVar22 * lVar31; + for (puVar18 = (undefined1 *)(lVar19 + (int)(iVar11 * uVar14)); + puVar18 <= (undefined1 *)(lVar19 + (int)(uVar16 * uVar14)); + puVar18 = puVar18 + (int)uVar14) { + if (0 < (int)uVar14) { + if ((param_4 < puVar18 + 0x10 && puVar18 < puVar3) || (uVar14 < 0x16)) { + lVar25 = 0; + do { + puVar18[lVar25] = param_4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar14); + } + else { + uVar22 = uVar6; + if (((((uVar6 != 0) && (*puVar18 = *param_4, uVar6 != 1)) && + (puVar18[1] = param_4[1], uVar6 != 2)) && + ((puVar18[2] = param_4[2], uVar6 != 3 && (puVar18[3] = param_4[3], uVar6 != 4)))) && + (puVar18[4] = param_4[4], uVar6 != 5)) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar22 = 6; + } + else { + puVar18[6] = param_4[6]; + if ((((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((puVar18[8] = param_4[8], uVar6 != 9 && + (((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)) && + (puVar18[0xb] = param_4[0xb], uVar6 != 0xc)))))) && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar22 = 0xe; + } + } + } + } + if (0xe < uVar10) { + uVar23 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar26); + puVar24 = (undefined8 *)(param_4 + uVar26); + do { + uVar34 = *puVar24; + uVar23 = uVar23 + 1; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar23 < uVar5); + uVar22 = uVar22 + iVar8; + if (iVar9 == iVar8) goto LAB_001a2b48; + } + iVar33 = uVar22 + 1; + puVar18[(int)uVar22] = param_4[(int)uVar22]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 2; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 3; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 4; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 5; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 6; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 7; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 8; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 9; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 10; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 0xb; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 0xc; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 0xd; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 0xe; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + puVar18[iVar11] = param_4[iVar11]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a2b48: + } + lVar19 = lVar32 + (int)uVar13 * lVar31; + for (puVar18 = (undefined1 *)(lVar19 + (int)(iVar12 * uVar14)); + puVar18 <= (undefined1 *)(lVar19 + (int)(uVar15 * uVar14)); + puVar18 = puVar18 + (int)uVar14) { + if (0 < (int)uVar14) { + if ((param_4 < puVar18 + 0x10 && puVar18 < puVar3) || (uVar14 < 0x16)) { + lVar25 = 0; + do { + puVar18[lVar25] = param_4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar14); + } + else { + uVar16 = uVar6; + if (((uVar6 != 0) && (*puVar18 = *param_4, uVar6 != 1)) && + ((puVar18[1] = param_4[1], uVar6 != 2 && + (((puVar18[2] = param_4[2], uVar6 != 3 && (puVar18[3] = param_4[3], uVar6 != 4)) && + (puVar18[4] = param_4[4], uVar6 != 5)))))) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar16 = 6; + } + else { + puVar18[6] = param_4[6]; + if (((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((((puVar18[8] = param_4[8], uVar6 != 9 && + ((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)))) && + (puVar18[0xb] = param_4[0xb], uVar6 != 0xc)) && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)))) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar16 = 0xe; + } + } + } + } + if (0xe < uVar10) { + uVar22 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar26); + puVar24 = (undefined8 *)(param_4 + uVar26); + do { + uVar34 = *puVar24; + uVar22 = uVar22 + 1; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar22 < uVar5); + uVar16 = uVar16 + iVar8; + if (iVar9 == iVar8) goto LAB_001a2e28; + } + iVar33 = uVar16 + 1; + puVar18[(int)uVar16] = param_4[(int)uVar16]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 2; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 3; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 4; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 5; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 6; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 7; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 8; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 9; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 10; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 0xb; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 0xc; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 0xd; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 0xe; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + puVar18[iVar11] = param_4[iVar11]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a2e28: + } + lVar19 = lVar32 + (int)uVar4 * lVar31; + for (puVar18 = (undefined1 *)(lVar19 + (int)(iVar12 * uVar14)); + puVar18 <= (undefined1 *)(lVar19 + (int)(uVar15 * uVar14)); + puVar18 = puVar18 + (int)uVar14) { + if (0 < (int)uVar14) { + if ((param_4 < puVar18 + 0x10 && puVar18 < puVar3) || (uVar14 < 0x16)) { + lVar25 = 0; + do { + puVar18[lVar25] = param_4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar14); + } + else { + uVar16 = uVar6; + if (uVar6 == 0) { + uVar21 = 0; + if (0xe < uVar10) goto LAB_001a2f74; + iVar33 = 1; + *puVar18 = *param_4; + } + else { + *puVar18 = *param_4; + if ((((uVar6 != 1) && (puVar18[1] = param_4[1], uVar6 != 2)) && + (puVar18[2] = param_4[2], uVar6 != 3)) && + ((puVar18[3] = param_4[3], uVar6 != 4 && (puVar18[4] = param_4[4], uVar6 != 5)))) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar16 = 6; + } + else { + puVar18[6] = param_4[6]; + if ((((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((puVar18[8] = param_4[8], uVar6 != 9 && + (((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)) && + (puVar18[0xb] = param_4[0xb], uVar6 != 0xc)))))) && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar16 = 0xe; + } + } + } + } + uVar21 = uVar26; + if (0xe < uVar10) { +LAB_001a2f74: + uVar22 = 0; + puVar20 = (undefined8 *)(param_4 + uVar21); + puVar24 = (undefined8 *)(puVar18 + uVar21); + do { + uVar34 = *puVar20; + uVar22 = uVar22 + 1; + puVar24[1] = puVar20[1]; + *puVar24 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar22 < uVar5); + uVar16 = uVar16 + iVar8; + if (iVar9 == iVar8) goto LAB_001a30fc; + } + iVar33 = uVar16 + 1; + puVar18[(int)uVar16] = param_4[(int)uVar16]; + if ((int)uVar14 <= iVar33) goto LAB_001a30fc; + } + iVar11 = iVar33 + 1; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 2; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 3; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 4; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 5; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 6; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 7; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 8; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 9; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 10; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 0xb; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 0xc; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar33 = iVar33 + 0xd; + puVar18[iVar12] = param_4[iVar12]; + if (iVar33 < (int)uVar14) { + puVar18[iVar33] = param_4[iVar33]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a30fc: + } + } + else if ((((uint)((int)uVar13 < (int)uVar35) & (uint)(iVar11 < (int)uVar36) & ~uVar16 >> 0x1f) + != 0) && (-1 < (int)uVar4)) { + if (iVar11 < 0) { + iVar11 = 0; + } + uVar17 = uVar36 - 1; + if ((int)uVar16 < (int)uVar36) { + uVar17 = uVar16; + } + if (uVar23 < uVar35) { + lVar19 = lVar32 + (int)uVar23 * lVar31; + for (puVar18 = (undefined1 *)(lVar19 + (int)(iVar11 * uVar14)); + puVar18 <= (undefined1 *)(lVar19 + (int)(uVar14 * uVar17)); + puVar18 = puVar18 + (int)uVar14) { + if (0 < (int)uVar14) { + if ((param_4 < puVar18 + 0x10 && puVar18 < puVar3) || (uVar14 < 0x16)) { + lVar25 = 0; + do { + puVar18[lVar25] = param_4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar14); + } + else { + uVar16 = uVar6; + if ((((uVar6 != 0) && (*puVar18 = *param_4, uVar6 != 1)) && + (puVar18[1] = param_4[1], uVar6 != 2)) && + (((puVar18[2] = param_4[2], uVar6 != 3 && (puVar18[3] = param_4[3], uVar6 != 4)) && + (puVar18[4] = param_4[4], uVar6 != 5)))) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar16 = 6; + } + else { + puVar18[6] = param_4[6]; + if (((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((puVar18[8] = param_4[8], uVar6 != 9 && + ((((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)) && + (puVar18[0xb] = param_4[0xb], uVar6 != 0xc)) && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)))))) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar16 = 0xe; + } + } + } + } + if (0xe < uVar10) { + uVar23 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar26); + puVar24 = (undefined8 *)(param_4 + uVar26); + do { + uVar23 = uVar23 + 1; + uVar34 = *puVar24; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar23 < uVar5); + uVar16 = uVar16 + iVar8; + if (iVar9 == iVar8) goto LAB_001a1c60; + } + iVar33 = uVar16 + 1; + puVar18[(int)uVar16] = param_4[(int)uVar16]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 2; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar16 + 3; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 4; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar16 + 5; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 6; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar16 + 7; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 8; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar16 + 9; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 10; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar16 + 0xb; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 0xc; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + iVar33 = uVar16 + 0xd; + puVar18[iVar7] = param_4[iVar7]; + if (iVar33 < (int)uVar14) { + iVar7 = uVar16 + 0xe; + puVar18[iVar33] = param_4[iVar33]; + if (iVar7 < (int)uVar14) { + puVar18[iVar7] = param_4[iVar7]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a1c60: + } + } + if (uVar22 < uVar35) { + lVar19 = lVar32 + (int)uVar22 * lVar31; + for (puVar18 = (undefined1 *)(lVar19 + (int)(iVar11 * uVar14)); + puVar18 <= (undefined1 *)(lVar19 + (int)(uVar14 * uVar17)); + puVar18 = puVar18 + (int)uVar14) { + if (0 < (int)uVar14) { + if ((param_4 < puVar18 + 0x10 && puVar18 < puVar3) || (uVar14 < 0x16)) { + lVar25 = 0; + do { + puVar18[lVar25] = param_4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar14); + } + else { + uVar16 = uVar6; + if (((uVar6 != 0) && (*puVar18 = *param_4, uVar6 != 1)) && + ((puVar18[1] = param_4[1], uVar6 != 2 && + (((puVar18[2] = param_4[2], uVar6 != 3 && (puVar18[3] = param_4[3], uVar6 != 4)) + && (puVar18[4] = param_4[4], uVar6 != 5)))))) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar16 = 6; + } + else { + puVar18[6] = param_4[6]; + if ((((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((puVar18[8] = param_4[8], uVar6 != 9 && + ((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)))))) && + ((puVar18[0xb] = param_4[0xb], uVar6 != 0xc && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)))) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar16 = 0xe; + } + } + } + } + if (0xe < uVar10) { + uVar22 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar26); + puVar24 = (undefined8 *)(param_4 + uVar26); + do { + uVar34 = *puVar24; + uVar22 = uVar22 + 1; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar22 < uVar5); + uVar16 = uVar16 + iVar8; + if (iVar9 == iVar8) goto LAB_001a1f48; + } + iVar33 = uVar16 + 1; + puVar18[(int)uVar16] = param_4[(int)uVar16]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 2; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 3; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 4; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 5; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 6; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 7; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 8; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 9; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 10; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 0xb; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 0xc; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar16 + 0xd; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar16 + 0xe; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + puVar18[iVar11] = param_4[iVar11]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a1f48: + } + } + if ((iVar12 < (int)uVar36) && (-1 < (int)uVar15)) { + if (iVar12 < 0) { + iVar12 = 0; + } + uVar16 = uVar36 - 1; + if ((int)uVar15 < (int)uVar36) { + uVar16 = uVar15; + } + if (uVar13 < uVar35) { + lVar19 = lVar32 + (int)uVar13 * lVar31; + puVar2 = (undefined1 *)(lVar19 + (int)(uVar14 * uVar16)); + for (puVar18 = (undefined1 *)(lVar19 + (int)(uVar14 * iVar12)); puVar18 <= puVar2; + puVar18 = puVar18 + (int)uVar14) { + while( true ) { + if ((int)uVar14 < 1) goto LAB_001a2258; + if ((puVar18 + 0x10 <= param_4 || puVar3 <= puVar18) && (0x15 < uVar14)) break; + lVar19 = 0; + do { + puVar18[lVar19] = param_4[lVar19]; + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)uVar14); + puVar18 = puVar18 + (int)uVar14; + if (puVar2 < puVar18) goto LAB_001a2268; + } + uVar22 = uVar6; + if (((uVar6 != 0) && + (((*puVar18 = *param_4, uVar6 != 1 && (puVar18[1] = param_4[1], uVar6 != 2)) && + (puVar18[2] = param_4[2], uVar6 != 3)))) && + ((puVar18[3] = param_4[3], uVar6 != 4 && (puVar18[4] = param_4[4], uVar6 != 5)))) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar22 = 6; + } + else { + puVar18[6] = param_4[6]; + if (((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + ((puVar18[8] = param_4[8], uVar6 != 9 && + ((((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)) && + (puVar18[0xb] = param_4[0xb], uVar6 != 0xc)) && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)))))) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar22 = 0xe; + } + } + } + } + if (uVar10 < 0xf) goto LAB_001a20fc; + uVar15 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar26); + puVar24 = (undefined8 *)(param_4 + uVar26); + do { + uVar34 = *puVar24; + uVar15 = uVar15 + 1; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar15 < uVar5); + uVar22 = uVar22 + iVar8; + if (iVar9 != iVar8) { +LAB_001a20fc: + iVar33 = uVar22 + 1; + puVar18[(int)uVar22] = param_4[(int)uVar22]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 2; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 3; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 4; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 5; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 6; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 7; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 8; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 9; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 10; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 0xb; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 0xc; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar33 = uVar22 + 0xd; + puVar18[iVar11] = param_4[iVar11]; + if (iVar33 < (int)uVar14) { + iVar11 = uVar22 + 0xe; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + puVar18[iVar11] = param_4[iVar11]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a2258: + } + } +LAB_001a2268: + if (uVar4 < uVar35) { + lVar19 = lVar32 + (int)uVar4 * lVar31; + puVar2 = (undefined1 *)(lVar19 + (int)(uVar14 * uVar16)); + for (puVar18 = (undefined1 *)(lVar19 + (int)(uVar14 * iVar12)); puVar18 <= puVar2; + puVar18 = puVar18 + (int)uVar14) { + while( true ) { + if ((int)uVar14 < 1) goto LAB_001a2544; + if ((puVar18 + 0x10 <= param_4 || puVar3 <= puVar18) && (0x15 < uVar14)) break; + lVar19 = 0; + do { + puVar18[lVar19] = param_4[lVar19]; + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)uVar14); + puVar18 = puVar18 + (int)uVar14; + if (puVar2 < puVar18) goto LAB_001a2550; + } + uVar16 = uVar6; + if (uVar6 == 0) { + uVar21 = 0; + if (uVar10 < 0xf) { + iVar33 = 1; + *puVar18 = *param_4; + goto LAB_001a2400; + } + } + else { + *puVar18 = *param_4; + if (((uVar6 != 1) && (puVar18[1] = param_4[1], uVar6 != 2)) && + ((puVar18[2] = param_4[2], uVar6 != 3 && + ((puVar18[3] = param_4[3], uVar6 != 4 && (puVar18[4] = param_4[4], uVar6 != 5))))) + ) { + puVar18[5] = param_4[5]; + if (uVar6 == 6) { + uVar16 = 6; + } + else { + puVar18[6] = param_4[6]; + if ((((uVar6 != 7) && (puVar18[7] = param_4[7], uVar6 != 8)) && + (puVar18[8] = param_4[8], uVar6 != 9)) && + (((puVar18[9] = param_4[9], uVar6 != 10 && + (puVar18[10] = param_4[10], uVar6 != 0xb)) && + ((puVar18[0xb] = param_4[0xb], uVar6 != 0xc && + (puVar18[0xc] = param_4[0xc], uVar6 != 0xd)))))) { + puVar18[0xd] = param_4[0xd]; + if (uVar6 == 0xf) { + puVar18[0xe] = param_4[0xe]; + } + else { + uVar16 = 0xe; + } + } + } + } + uVar21 = uVar26; + if (uVar10 < 0xf) goto LAB_001a23e8; + } + uVar22 = 0; + puVar20 = (undefined8 *)(puVar18 + uVar21); + puVar24 = (undefined8 *)(param_4 + uVar21); + do { + uVar34 = *puVar24; + uVar22 = uVar22 + 1; + puVar20[1] = puVar24[1]; + *puVar20 = uVar34; + puVar20 = puVar20 + 2; + puVar24 = puVar24 + 2; + } while (uVar22 < uVar5); + uVar16 = uVar16 + iVar8; + if (iVar9 != iVar8) { +LAB_001a23e8: + iVar33 = uVar16 + 1; + puVar18[(int)uVar16] = param_4[(int)uVar16]; + if (iVar33 < (int)uVar14) { +LAB_001a2400: + iVar11 = iVar33 + 1; + puVar18[iVar33] = param_4[iVar33]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 2; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 3; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 4; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 5; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 6; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 7; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 8; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 9; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 10; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar11 = iVar33 + 0xb; + puVar18[iVar12] = param_4[iVar12]; + if (iVar11 < (int)uVar14) { + iVar12 = iVar33 + 0xc; + puVar18[iVar11] = param_4[iVar11]; + if (iVar12 < (int)uVar14) { + iVar33 = iVar33 + 0xd; + puVar18[iVar12] = param_4[iVar12]; + if (iVar33 < (int)uVar14) { + puVar18[iVar33] = param_4[iVar33]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a2544: + } + } + } + } +LAB_001a2550: + iVar28 = iVar28 + iVar30; + iVar27 = iVar27 + 1; + iVar30 = iVar30 + 2; + uVar16 = (uint)(0 < iVar28); + param_3 = param_3 - uVar16; + uVar16 = -uVar16; + iVar28 = iVar28 - (uVar16 & uVar29); + uVar29 = uVar29 - (uVar16 & 2); + if (param_3 < iVar27) { + return; + } + iVar33 = *param_2; + } while( true ); +} + + +================================================================== + +### FUNC 001a3350 (500 bytes) name=FUN_001a3350 + +void FUN_001a3350(long param_1,long param_2,ulong param_3,int *param_4) + +{ + undefined8 *puVar1; + undefined8 uVar2; + int iVar3; + bool bVar4; + long lVar5; + undefined8 *puVar6; + long lVar7; + long lVar8; + long lVar9; + int iVar10; + long lVar11; + int iVar12; + int iVar13; + long lVar14; + undefined8 uVar15; + int iVar16; + + lVar14 = (long)(param_3 - 1) / 2; + lVar9 = param_2; + if (param_2 < lVar14) { + do { + lVar8 = (lVar9 + 1) * 2; + lVar11 = lVar8 + -1; + lVar7 = (lVar9 + 1) * 0x30; + lVar5 = lVar11 * 0x18; + iVar10 = *(int *)(param_1 + lVar7); + puVar6 = (undefined8 *)(param_1 + lVar7); + iVar16 = *(int *)(param_1 + lVar5); + puVar1 = (undefined8 *)(param_1 + lVar5); + bVar4 = iVar10 < iVar16; + if ((iVar10 == iVar16) && + (bVar4 = *(int *)(puVar6 + 1) < *(int *)(puVar1 + 1), + *(int *)(puVar6 + 1) == *(int *)(puVar1 + 1))) { + bVar4 = *(int *)((long)puVar6 + 0xc) < *(int *)((long)puVar1 + 0xc); + } + if (bVar4) { + puVar6 = puVar1; + } + puVar1 = (undefined8 *)(param_1 + lVar9 * 0x18); + lVar9 = lVar8; + if (bVar4) { + lVar9 = lVar11; + } + uVar15 = puVar6[1]; + *puVar1 = *puVar6; + puVar1[1] = uVar15; + puVar1[2] = puVar6[2]; + } while (lVar9 < lVar14); + if ((param_3 & 1) == 0) goto LAB_001a3408; + } + else { + puVar6 = (undefined8 *)(param_1 + param_2 * 0x18); + if ((param_3 & 1) != 0) { + iVar10 = *param_4; + iVar16 = param_4[1]; + iVar12 = param_4[2]; + iVar13 = param_4[3]; + uVar15 = *(undefined8 *)(param_4 + 4); + goto LAB_001a3470; + } +LAB_001a3408: + if (lVar9 == (long)(param_3 - 2) / 2) { + lVar9 = lVar9 * 2 + 1; + puVar1 = (undefined8 *)(param_1 + lVar9 * 0x18); + uVar15 = puVar1[1]; + *puVar6 = *puVar1; + puVar6[1] = uVar15; + puVar6[2] = puVar1[2]; + puVar6 = puVar1; + } + } + iVar10 = *param_4; + iVar16 = param_4[1]; + iVar12 = param_4[2]; + iVar13 = param_4[3]; + uVar15 = *(undefined8 *)(param_4 + 4); + if (param_2 < lVar9) { + lVar14 = (lVar9 + -1) / 2; + lVar5 = lVar14 * 0x18; + iVar3 = *(int *)(param_1 + lVar5); + while( true ) { + lVar7 = lVar14; + bVar4 = iVar3 < iVar10; + puVar6 = (undefined8 *)(param_1 + lVar5); + if ((iVar3 == iVar10) && + (bVar4 = *(int *)(puVar6 + 1) < iVar12, *(int *)(puVar6 + 1) == iVar12)) { + bVar4 = *(int *)((long)puVar6 + 0xc) < iVar13; + } + if (!bVar4) break; + puVar1 = (undefined8 *)(param_1 + lVar9 * 0x18); + uVar2 = puVar6[1]; + lVar14 = (lVar7 + -1) / 2; + *puVar1 = *puVar6; + puVar1[1] = uVar2; + puVar1[2] = puVar6[2]; + if (lVar7 <= param_2) goto LAB_001a3470; + lVar5 = lVar14 * 0x18; + iVar3 = *(int *)(param_1 + lVar5); + lVar9 = lVar7; + } + puVar6 = (undefined8 *)(param_1 + lVar9 * 0x18); + } +LAB_001a3470: + puVar6[2] = uVar15; + puVar6[1] = CONCAT44(iVar13,iVar12); + *puVar6 = CONCAT44(iVar16,iVar10); + return; +} + + +================================================================== + +### FUNC 001a3544 (428 bytes) name=FUN_001a3544 + +void FUN_001a3544(int *param_1,int *param_2) + +{ + int iVar1; + int iVar2; + bool bVar3; + size_t __n; + int *piVar4; + int *piVar5; + int iVar6; + int *piVar7; + undefined8 uVar8; + int iVar9; + + if ((param_1 == param_2) || (piVar5 = param_1 + 6, param_2 == piVar5)) { + return; + } + piVar7 = param_1 + 0xc; +LAB_001a3588: + iVar1 = *piVar5; + if (iVar1 == *param_1) { + iVar6 = piVar5[2]; + if (iVar6 == param_1[2]) { + iVar9 = piVar5[3]; + bVar3 = iVar9 < param_1[3]; + } + else { + bVar3 = iVar6 < param_1[2]; + iVar9 = piVar5[3]; + } + } + else { + iVar9 = piVar5[3]; + bVar3 = iVar1 < *param_1; + iVar6 = piVar5[2]; + } + if (!bVar3) { + iVar2 = piVar5[1]; + uVar8 = *(undefined8 *)(piVar5 + 4); + piVar4 = piVar5; + do { + bVar3 = iVar1 < piVar4[-6]; + if ((iVar1 == piVar4[-6]) && (bVar3 = iVar6 < piVar4[-4], piVar4[-4] == iVar6)) { + if (piVar4[-3] <= iVar9) goto LAB_001a3694; + } + else if (!bVar3) goto LAB_001a3694; + *(undefined8 *)piVar4 = *(undefined8 *)(piVar4 + -6); + *(undefined8 *)(piVar4 + 2) = *(undefined8 *)(piVar4 + -4); + *(undefined8 *)(piVar4 + 4) = *(undefined8 *)(piVar4 + -2); + piVar4 = piVar4 + -6; + } while( true ); + } + __n = (long)piVar5 - (long)param_1; + iVar2 = piVar5[1]; + uVar8 = *(undefined8 *)(piVar5 + 4); + if (0 < ((long)__n >> 3) * -0x5555555555555555) { + memmove((void *)((long)piVar5 + (0x18 - __n)),(void *)((long)piVar5 - __n),__n); + } + *(undefined8 *)(param_1 + 4) = uVar8; + *(ulong *)(param_1 + 2) = CONCAT44(iVar9,iVar6); + *(ulong *)param_1 = CONCAT44(iVar2,iVar1); + goto LAB_001a35fc; +LAB_001a3694: + *(undefined8 *)(piVar4 + 4) = uVar8; + *(ulong *)(piVar4 + 2) = CONCAT44(iVar9,iVar6); + *(ulong *)piVar4 = CONCAT44(iVar2,iVar1); +LAB_001a35fc: + bVar3 = param_2 == piVar7; + piVar5 = piVar5 + 6; + piVar7 = piVar7 + 6; + if (bVar3) { + return; + } + goto LAB_001a3588; +} + + +================================================================== + +### FUNC 001a36f0 (628 bytes) name=FUN_001a36f0 + +void FUN_001a36f0(_InputArray *param_1,ulong param_2,long param_3,int param_4,long *param_5, + long *param_6) + +{ + int *piVar1; + int iVar2; + int iVar3; + char cVar4; + bool bVar5; + long lVar6; + long lVar7; + long lVar8; + int iVar9; + undefined4 *puVar10; + long lVar11; + long lVar12; + Mat aMStack_60 [4]; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + do { + if (param_4 < 0) { + return; + } + cv::_InputArray::kind(param_1); + cv::_InputArray::getMat_((int)param_1); + if (local_50 == 0) { + if (2 < local_5c) { +LAB_001a390c: + lVar6 = local_50; + goto LAB_001a3910; + } +LAB_001a3770: + lVar7 = (long)local_54 * (long)local_58; + lVar6 = local_50; + } + else if (local_5c < 3) { + lVar7 = 0; + lVar6 = 0; + if ((long)local_54 * (long)local_58 != 0) goto LAB_001a3770; + } + else { + lVar6 = 0; + lVar8 = 1; + do { + piVar1 = local_20 + lVar6; + lVar6 = lVar6 + 1; + lVar8 = lVar8 * *piVar1; + } while ((int)lVar6 < local_5c); + lVar6 = 0; + if (lVar8 != 0) goto LAB_001a390c; +LAB_001a3910: + lVar8 = 0; + lVar7 = 1; + do { + piVar1 = local_20 + lVar8; + lVar8 = lVar8 + 1; + lVar7 = lVar7 * *piVar1; + } while ((int)lVar8 < local_5c); + } + lVar12 = (long)param_4; + lVar11 = lVar12 * 0x60; + cvMakeSeqHeaderForArray(0x500c,0x60,8,lVar6,lVar7,*param_5 + lVar11,*param_6 + lVar12 * 0x20); + lVar12 = lVar12 * 0x10; + lVar6 = param_3 + lVar12; + lVar8 = 0; + iVar9 = *(int *)(lVar6 + 4); + iVar2 = *(int *)(lVar6 + 8); + iVar3 = *(int *)(lVar6 + 0xc); + if ((ulong)(long)*(int *)(param_3 + lVar12) < param_2) { + lVar8 = *param_5 + (long)*(int *)(param_3 + lVar12) * 0x60; + } + *(long *)(*param_5 + lVar11 + 0x10) = lVar8; + lVar6 = 0; + if ((ulong)(long)iVar9 < param_2) { + lVar6 = *param_5 + (long)iVar9 * 0x60; + } + *(long *)(*param_5 + lVar11 + 8) = lVar6; + lVar6 = 0; + if ((ulong)(long)iVar2 < param_2) { + lVar6 = *param_5 + (long)iVar2 * 0x60; + } + *(long *)(*param_5 + lVar11 + 0x20) = lVar6; + lVar6 = 0; + if ((ulong)(long)iVar3 < param_2) { + lVar6 = *param_5 + (long)iVar3 * 0x60; + } + *(long *)(*param_5 + lVar11 + 0x18) = lVar6; + if (-1 < iVar2) { + FUN_001a36f0(param_1,param_2,param_3,iVar2,param_5,param_6); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + puVar10 = local_20; + do { + *puVar10 = 0; + iVar9 = iVar9 + 1; + puVar10 = puVar10 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + param_4 = *(int *)(param_3 + lVar12); + } while( true ); +} + + +================================================================== + +### FUNC 001a398c (556 bytes) name=clipLine + +/* cv::clipLine(cv::Size_, cv::Point_&, cv::Point_&) */ + +undefined1 cv::clipLine(int *param_1,int *param_2,int *param_3) + +{ + long lVar1; + long lVar2; + int iVar3; + undefined1 uVar4; + long lVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + int iVar10; + int iVar11; + long lVar12; + long lVar13; + long lVar14; + long lVar15; + long lVar16; + + if (*param_1 < 1 || param_1[1] < 1) { + return 0; + } + iVar3 = *param_1 + -1; + lVar12 = (long)*param_2; + lVar14 = (long)param_2[1]; + lVar16 = (long)iVar3; + lVar13 = (long)*param_3; + iVar6 = 2; + if (lVar12 <= lVar16) { + iVar6 = 0; + } + lVar15 = (long)param_3[1]; + iVar6 = iVar6 - (*param_2 >> 0x1f); + iVar11 = param_1[1] + -1; + iVar10 = *param_3 >> 0x1f; + if (lVar14 < 0) { + uVar8 = iVar6 + 4; + iVar6 = 2; + if (lVar13 <= lVar16) { + iVar6 = 0; + } + iVar6 = iVar6 - iVar10; + if (-1 < lVar15) goto LAB_001a3a0c; +LAB_001a3abc: + iVar6 = iVar6 + 4; + iVar10 = 0; + } + else { + iVar9 = 8; + if (lVar14 <= iVar11) { + iVar9 = 0; + } + uVar8 = iVar6 + iVar9; + iVar6 = 2; + if (lVar13 <= lVar16) { + iVar6 = 0; + } + iVar6 = iVar6 - iVar10; + if (lVar15 < 0) goto LAB_001a3abc; +LAB_001a3a0c: + iVar10 = 8; + if (lVar15 <= iVar11) { + iVar10 = 0; + } + } + lVar5 = (long)iVar11; + uVar7 = iVar6 + iVar10; + uVar4 = 0; + if ((uVar7 & uVar8) != 0) { + return 0; + } + if (uVar7 == 0 && uVar8 == 0) { + return 1; + } + if ((uVar8 & 0xc) == 0) { + if ((uVar7 & 0xc) != 0) goto LAB_001a3adc; + } + else { + lVar1 = lVar5; + if ((int)uVar8 < 8) { + lVar1 = 0; + } + lVar2 = 0; + if (lVar15 - lVar14 != 0) { + lVar2 = ((lVar1 - lVar14) * (lVar13 - lVar12)) / (lVar15 - lVar14); + } + lVar12 = lVar12 + lVar2; + iVar6 = 2; + if (lVar12 <= lVar16) { + iVar6 = 0; + } + uVar8 = iVar6 - (int)(lVar12 >> 0x3f); + lVar14 = lVar1; + if ((uVar7 & 0xc) != 0) { +LAB_001a3adc: + if (uVar7 < 8) { + lVar5 = 0; + } + lVar1 = 0; + if (lVar15 - lVar14 != 0) { + lVar1 = ((lVar5 - lVar15) * (lVar13 - lVar12)) / (lVar15 - lVar14); + } + lVar13 = lVar13 + lVar1; + iVar6 = 2; + if (lVar13 <= lVar16) { + iVar6 = 0; + } + uVar7 = iVar6 - (int)(lVar13 >> 0x3f); + lVar15 = lVar5; + } + iVar11 = (int)lVar13; + iVar6 = (int)lVar12; + if ((uVar8 & uVar7) != 0) goto LAB_001a3a80; + if (uVar8 == 0 && uVar7 == 0) { + uVar4 = 1; + goto LAB_001a3a80; + } + } + if (uVar8 == 0) { + iVar6 = (int)lVar12; + lVar5 = lVar12; + } + else { + lVar5 = lVar16; + iVar6 = iVar3; + if (uVar8 == 1) { + iVar6 = 0; + lVar5 = 0; + } + lVar1 = 0; + if (lVar13 - lVar12 != 0) { + lVar1 = ((lVar5 - lVar12) * (lVar15 - lVar14)) / (lVar13 - lVar12); + } + lVar14 = lVar1 + lVar14; + } + if (uVar7 == 0) { + iVar11 = (int)lVar13; + uVar4 = 1; + } + else { + iVar11 = iVar3; + if (uVar7 == 1) { + iVar11 = 0; + lVar16 = 0; + } + uVar4 = 1; + lVar12 = 0; + if (lVar13 - lVar5 != 0) { + lVar12 = ((lVar16 - lVar13) * (lVar15 - lVar14)) / (lVar13 - lVar5); + } + lVar15 = lVar15 + lVar12; + } +LAB_001a3a80: + *param_2 = iVar6; + param_2[1] = (int)lVar14; + *param_3 = iVar11; + param_3[1] = (int)lVar15; + return uVar4; +} + + +================================================================== + +### FUNC 001a3bb8 (3880 bytes) name=FUN_001a3bb8 + +void FUN_001a3bb8(long param_1,uint *param_2,uint *param_3,undefined1 *param_4) + +{ + int iVar1; + int iVar2; + undefined1 *puVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined1 uVar8; + undefined1 uVar9; + undefined1 uVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + char cVar16; + int iVar17; + undefined8 *puVar18; + uint uVar19; + uint uVar20; + undefined8 *puVar21; + long lVar22; + long lVar23; + uint uVar24; + int iVar25; + int iVar26; + uint uVar27; + uint uVar28; + long lVar29; + long lVar30; + undefined8 uVar31; + int local_8; + int local_4; + + uVar8 = *param_4; + uVar9 = param_4[1]; + uVar10 = param_4[2]; + if (*(int *)(param_1 + 4) < 1) { + uVar20 = 0; + } + else { + uVar20 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + lVar29 = *(long *)(param_1 + 0x10); + lVar30 = *(long *)(param_1 + 0x50); + iVar4 = **(int **)(param_1 + 0x40); + iVar5 = (*(int **)(param_1 + 0x40))[1]; + local_4 = iVar4 << 0x10; + local_8 = iVar5 << 0x10; + cVar16 = cv::clipLine(&local_8,param_2,param_3); + if (cVar16 == '\0') { + return; + } + uVar6 = *param_3; + uVar27 = *param_2; + uVar28 = param_3[1]; + uVar7 = param_2[1]; + uVar12 = uVar6 - uVar27; + uVar14 = (int)uVar12 >> 0x1f; + uVar13 = uVar28 - uVar7; + uVar15 = (int)uVar13 >> 0x1f; + uVar19 = (uVar14 ^ uVar12) + -uVar14; + uVar24 = (uVar15 ^ uVar13) + -uVar15; + if ((int)uVar24 < (int)uVar19) { + uVar27 = uVar14 & uVar6 ^ uVar27; + uVar7 = uVar14 & uVar28 ^ uVar7; + uVar6 = uVar27 & uVar14 ^ uVar6; + uVar28 = uVar7 & uVar14 ^ uVar28; + uVar27 = uVar6 & uVar14 ^ uVar27; + uVar12 = (uVar14 ^ uVar13) + -uVar14; + iVar17 = uVar6 - uVar27; + *param_3 = uVar6; + param_3[1] = uVar28; + *param_2 = uVar27 + 0x8000; + param_2[1] = (uVar28 & uVar14 ^ uVar7) + 0x8000; + iVar26 = 0; + if ((long)(int)(uVar19 | 1) != 0) { + iVar26 = (int)((long)(-(ulong)(uVar12 >> 0x1f) & 0xffff000000000000 | (ulong)uVar12 << 0x10) / + (long)(int)(uVar19 | 1)); + } + iVar25 = 0x10000; + } + else { + uVar7 = uVar15 & uVar28 ^ uVar7; + uVar12 = (uVar15 ^ uVar12) + -uVar15; + uVar28 = uVar7 & uVar15 ^ uVar28; + uVar27 = uVar15 & uVar6 ^ uVar27; + uVar7 = uVar28 & uVar15 ^ uVar7; + uVar6 = uVar27 & uVar15 ^ uVar6; + iVar17 = uVar28 - uVar7; + param_3[1] = uVar28; + *param_3 = uVar6; + *param_2 = (uVar6 & uVar15 ^ uVar27) + 0x8000; + param_2[1] = uVar7 + 0x8000; + iVar25 = 0; + if ((long)(int)(uVar24 | 1) != 0) { + iVar25 = (int)((long)(-(ulong)(uVar12 >> 0x1f) & 0xffff000000000000 | (ulong)uVar12 << 0x10) / + (long)(int)(uVar24 | 1)); + } + iVar26 = 0x10000; + } + iVar17 = iVar17 >> 0x10; + uVar27 = (int)(uVar6 + 0x8000) >> 0x10; + uVar7 = (int)(uVar28 + 0x8000) >> 0x10; + if (uVar20 == 3) { + if ((((uint)((int)uVar27 < iVar5) & ~uVar27 >> 0x1f & ~uVar7 >> 0x1f) != 0) && + ((int)uVar7 < iVar4)) { + lVar22 = (int)uVar7 * lVar30 + (long)(int)(uVar27 * 3); + lVar23 = lVar29 + lVar22; + *(undefined1 *)(lVar29 + lVar22) = uVar8; + *(undefined1 *)(lVar23 + 1) = uVar9; + *(undefined1 *)(lVar23 + 2) = uVar10; + } + if ((int)uVar24 < (int)uVar19) { + uVar20 = (uint)*(short *)((long)param_2 + 2); + *param_2 = (int)*(short *)((long)param_2 + 2); + if (iVar17 < 0) { + return; + } + uVar19 = param_2[1]; + do { + uVar24 = (int)uVar19 >> 0x10; + iVar17 = iVar17 + -1; + lVar23 = (long)(int)(uVar20 * 3) + (int)uVar24 * lVar30; + lVar22 = lVar29 + lVar23; + if ((((uint)((int)uVar20 < iVar5) & ~uVar20 >> 0x1f & ~uVar24 >> 0x1f) != 0) && + ((int)uVar24 < iVar4)) { + *(undefined1 *)(lVar29 + lVar23) = uVar8; + *(undefined1 *)(lVar22 + 1) = uVar9; + *(undefined1 *)(lVar22 + 2) = uVar10; + uVar20 = *param_2; + uVar19 = param_2[1]; + } + uVar20 = uVar20 + 1; + uVar19 = uVar19 + iVar26; + *param_2 = uVar20; + param_2[1] = uVar19; + } while (iVar17 != -1); + return; + } + uVar20 = (uint)*(short *)((long)param_2 + 6); + param_2[1] = (int)*(short *)((long)param_2 + 6); + if (iVar17 < 0) { + return; + } + uVar19 = *param_2; + do { + iVar26 = (int)uVar19 >> 0x10; + lVar22 = (int)uVar20 * lVar30 + (long)(iVar26 * 3); + iVar17 = iVar17 + -1; + lVar23 = lVar29 + lVar22; + if ((((uint)(iVar26 < iVar5) & (uint)((int)uVar20 < iVar4) & ~uVar20 >> 0x1f) != 0) && + (-1 < iVar26)) { + *(undefined1 *)(lVar29 + lVar22) = uVar8; + *(undefined1 *)(lVar23 + 1) = uVar9; + *(undefined1 *)(lVar23 + 2) = uVar10; + uVar19 = *param_2; + uVar20 = param_2[1]; + } + uVar19 = uVar19 + iVar25; + uVar20 = uVar20 + 1; + *param_2 = uVar19; + param_2[1] = uVar20; + } while (iVar17 != -1); + return; + } + if (uVar20 == 1) { + if ((((uint)((int)uVar27 < iVar5) & ~uVar27 >> 0x1f & ~uVar7 >> 0x1f) != 0) && + ((int)uVar7 < iVar4)) { + *(undefined1 *)(lVar29 + (int)uVar7 * lVar30 + (long)(int)uVar27) = uVar8; + } + if ((int)uVar24 < (int)uVar19) { + uVar20 = (uint)*(short *)((long)param_2 + 2); + *param_2 = (int)*(short *)((long)param_2 + 2); + if (iVar17 < 0) { + return; + } + uVar19 = param_2[1]; + do { + uVar24 = (int)uVar19 >> 0x10; + iVar17 = iVar17 + -1; + if ((((uint)((int)uVar20 < iVar5) & ~uVar20 >> 0x1f & ~uVar24 >> 0x1f) != 0) && + ((int)uVar24 < iVar4)) { + *(undefined1 *)(lVar29 + (int)uVar24 * lVar30 + (long)(int)uVar20) = uVar8; + uVar20 = *param_2; + uVar19 = param_2[1]; + } + uVar20 = uVar20 + 1; + uVar19 = uVar19 + iVar26; + *param_2 = uVar20; + param_2[1] = uVar19; + } while (iVar17 != -1); + return; + } + uVar20 = (uint)*(short *)((long)param_2 + 6); + param_2[1] = (int)*(short *)((long)param_2 + 6); + if (iVar17 < 0) { + return; + } + uVar19 = *param_2; + do { + iVar26 = (int)uVar19 >> 0x10; + iVar17 = iVar17 + -1; + if ((((uint)(iVar26 < iVar5) & (uint)((int)uVar20 < iVar4) & ~uVar20 >> 0x1f) != 0) && + (-1 < iVar26)) { + *(undefined1 *)(lVar29 + iVar26 + (int)uVar20 * lVar30) = uVar8; + uVar19 = *param_2; + uVar20 = param_2[1]; + } + uVar19 = uVar19 + iVar25; + uVar20 = uVar20 + 1; + *param_2 = uVar19; + param_2[1] = uVar20; + } while (iVar17 != -1); + return; + } + iVar2 = (int)param_4; + if (((((uint)((int)uVar27 < iVar5) & ~uVar27 >> 0x1f & ~uVar7 >> 0x1f) != 0) && + ((int)uVar7 < iVar4)) && + (lVar22 = (int)uVar7 * lVar30 + (long)(int)(uVar27 * uVar20), 0 < (int)uVar20)) { + puVar3 = (undefined1 *)(lVar29 + lVar22); + if ((param_4 < (undefined1 *)(lVar29 + lVar22 + 0x10) && puVar3 < param_4 + 0x10) || + (uVar20 < 0x16)) { + lVar22 = 0; + do { + puVar3[lVar22] = param_4[lVar22]; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar20); + } + else { + uVar7 = -iVar2 & 0xfU; + if (uVar20 < (-iVar2 & 0xfU)) { + uVar7 = uVar20; + } + uVar27 = uVar7; + if ((uVar7 != 0) && (*(undefined1 *)(lVar29 + lVar22) = *param_4, uVar7 != 1)) { + puVar3[1] = param_4[1]; + if (uVar7 == 2) { + uVar27 = 2; + } + else { + puVar3[2] = param_4[2]; + if (((((uVar7 != 3) && (puVar3[3] = param_4[3], uVar7 != 4)) && + (puVar3[4] = param_4[4], uVar7 != 5)) && + (((puVar3[5] = param_4[5], uVar7 != 6 && (puVar3[6] = param_4[6], uVar7 != 7)) && + ((puVar3[7] = param_4[7], uVar7 != 8 && + ((puVar3[8] = param_4[8], uVar7 != 9 && (puVar3[9] = param_4[9], uVar7 != 10)))))))) + && (puVar3[10] = param_4[10], uVar7 != 0xb)) { + puVar3[0xb] = param_4[0xb]; + if (uVar7 == 0xc) { + uVar27 = 0xc; + } + else { + puVar3[0xc] = param_4[0xc]; + if (uVar7 != 0xd) { + puVar3[0xd] = param_4[0xd]; + if (uVar7 == 0xf) { + puVar3[0xe] = param_4[0xe]; + } + else { + uVar27 = 0xe; + } + } + } + } + } + } + uVar6 = ((uVar20 - uVar7) - 0x10 >> 4) + 1; + iVar11 = uVar6 * 0x10; + if (0xe < (uVar20 - 1) - uVar7) { + uVar28 = 0; + puVar18 = (undefined8 *)(param_4 + uVar7); + puVar21 = (undefined8 *)(lVar29 + lVar22 + (ulong)uVar7); + do { + uVar31 = *puVar18; + uVar28 = uVar28 + 1; + puVar21[1] = puVar18[1]; + *puVar21 = uVar31; + puVar18 = puVar18 + 2; + puVar21 = puVar21 + 2; + } while (uVar28 < uVar6); + uVar27 = uVar27 + iVar11; + if (iVar11 == uVar20 - uVar7) goto LAB_001a4038; + } + iVar11 = uVar27 + 1; + puVar3[(int)uVar27] = param_4[(int)uVar27]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 2; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + iVar11 = uVar27 + 3; + puVar3[iVar1] = param_4[iVar1]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 4; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + iVar11 = uVar27 + 5; + puVar3[iVar1] = param_4[iVar1]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 6; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + iVar11 = uVar27 + 7; + puVar3[iVar1] = param_4[iVar1]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 8; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + iVar11 = uVar27 + 9; + puVar3[iVar1] = param_4[iVar1]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 10; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + iVar11 = uVar27 + 0xb; + puVar3[iVar1] = param_4[iVar1]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 0xc; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + iVar11 = uVar27 + 0xd; + puVar3[iVar1] = param_4[iVar1]; + if (iVar11 < (int)uVar20) { + iVar1 = uVar27 + 0xe; + puVar3[iVar11] = param_4[iVar11]; + if (iVar1 < (int)uVar20) { + puVar3[iVar1] = param_4[iVar1]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a4038: + if ((int)uVar24 < (int)uVar19) { + uVar19 = (uint)*(short *)((long)param_2 + 2); + *param_2 = (int)*(short *)((long)param_2 + 2); + if (-1 < iVar17) { + uVar24 = param_2[1]; + uVar7 = uVar20; + if ((-iVar2 & 0xfU) < uVar20) { + uVar7 = -iVar2 & 0xfU; + } + uVar27 = ((uVar20 - uVar7) - 0x10 >> 4) + 1; + iVar25 = uVar27 * 0x10; + do { + uVar6 = (int)uVar24 >> 0x10; + if ((((uint)((int)uVar19 < iVar5) & ~uVar19 >> 0x1f & ~uVar6 >> 0x1f) != 0) && + ((int)uVar6 < iVar4)) { + lVar22 = (int)uVar6 * lVar30 + (long)(int)(uVar20 * uVar19); + if (0 < (int)uVar20) { + puVar3 = (undefined1 *)(lVar29 + lVar22); + if ((param_4 < (undefined1 *) + (lVar29 + (long)(int)(uVar20 * uVar19) + 0x10 + (int)uVar6 * lVar30) && + puVar3 < param_4 + 0x10) || (uVar20 < 0x16)) { + lVar22 = 0; + do { + puVar3[lVar22] = param_4[lVar22]; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar20); + } + else { + uVar19 = uVar7; + if ((((uVar7 != 0) && (*(undefined1 *)(lVar29 + lVar22) = *param_4, uVar7 != 1)) && + (puVar3[1] = param_4[1], uVar7 != 2)) && (puVar3[2] = param_4[2], uVar7 != 3)) { + puVar3[3] = param_4[3]; + if (uVar7 == 4) { + uVar19 = 4; + } + else { + puVar3[4] = param_4[4]; + if ((((uVar7 != 5) && (puVar3[5] = param_4[5], uVar7 != 6)) && + ((puVar3[6] = param_4[6], uVar7 != 7 && + ((puVar3[7] = param_4[7], uVar7 != 8 && (puVar3[8] = param_4[8], uVar7 != 9)) + )))) && ((puVar3[9] = param_4[9], uVar7 != 10 && + (((puVar3[10] = param_4[10], uVar7 != 0xb && + (puVar3[0xb] = param_4[0xb], uVar7 != 0xc)) && + (puVar3[0xc] = param_4[0xc], uVar7 != 0xd)))))) { + puVar3[0xd] = param_4[0xd]; + if (uVar7 == 0xf) { + puVar3[0xe] = param_4[0xe]; + uVar19 = 0xf; + } + else { + uVar19 = 0xe; + } + } + } + } + if (0xe < (uVar20 - 1) - uVar7) { + uVar24 = 0; + puVar18 = (undefined8 *)(lVar29 + lVar22 + (ulong)uVar7); + puVar21 = (undefined8 *)(param_4 + uVar7); + do { + uVar31 = *puVar21; + uVar24 = uVar24 + 1; + puVar18[1] = puVar21[1]; + *puVar18 = uVar31; + puVar18 = puVar18 + 2; + puVar21 = puVar21 + 2; + } while (uVar24 < uVar27); + uVar19 = uVar19 + iVar25; + if (iVar25 == uVar20 - uVar7) goto LAB_001a4384; + } + iVar2 = uVar19 + 1; + puVar3[(int)uVar19] = param_4[(int)uVar19]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 2; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 3; + *(undefined1 *)(lVar29 + iVar11 + lVar22) = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 4; + *(undefined1 *)(lVar29 + iVar2 + lVar22) = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 5; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 6; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 7; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 8; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 9; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 10; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 0xb; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 0xc; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 0xd; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 0xe; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + puVar3[iVar11] = param_4[iVar11]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a4384: + uVar19 = *param_2; + uVar24 = param_2[1]; + } + } + iVar17 = iVar17 + -1; + uVar19 = uVar19 + 1; + uVar24 = uVar24 + iVar26; + *param_2 = uVar19; + param_2[1] = uVar24; + } while (iVar17 != -1); + } + } + else { + uVar19 = (uint)*(short *)((long)param_2 + 6); + param_2[1] = (int)*(short *)((long)param_2 + 6); + if (-1 < iVar17) { + uVar24 = *param_2; + uVar7 = uVar20; + if ((-iVar2 & 0xfU) < uVar20) { + uVar7 = -iVar2 & 0xfU; + } + uVar27 = ((uVar20 - uVar7) - 0x10 >> 4) + 1; + iVar26 = uVar27 * 0x10; + do { + iVar2 = (int)uVar24 >> 0x10; + if ((((uint)(iVar2 < iVar5) & (uint)((int)uVar19 < iVar4) & ~uVar19 >> 0x1f) != 0) && + (-1 < iVar2)) { + lVar22 = (long)(int)(iVar2 * uVar20) + (int)uVar19 * lVar30; + if (0 < (int)uVar20) { + puVar3 = (undefined1 *)(lVar29 + lVar22); + if ((param_4 < (undefined1 *) + (lVar29 + (int)uVar19 * lVar30 + 0x10 + (long)(int)(iVar2 * uVar20)) && + puVar3 < param_4 + 0x10) || (uVar20 < 0x16)) { + lVar22 = 0; + do { + puVar3[lVar22] = param_4[lVar22]; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar20); + } + else { + uVar19 = uVar7; + if ((((uVar7 != 0) && (*(undefined1 *)(lVar29 + lVar22) = *param_4, uVar7 != 1)) && + (puVar3[1] = param_4[1], uVar7 != 2)) && (puVar3[2] = param_4[2], uVar7 != 3)) { + puVar3[3] = param_4[3]; + if (uVar7 == 4) { + uVar19 = 4; + } + else { + puVar3[4] = param_4[4]; + if (((((uVar7 != 5) && (puVar3[5] = param_4[5], uVar7 != 6)) && + ((puVar3[6] = param_4[6], uVar7 != 7 && + ((puVar3[7] = param_4[7], uVar7 != 8 && (puVar3[8] = param_4[8], uVar7 != 9) + ))))) && (puVar3[9] = param_4[9], uVar7 != 10)) && + (((puVar3[10] = param_4[10], uVar7 != 0xb && + (puVar3[0xb] = param_4[0xb], uVar7 != 0xc)) && + (puVar3[0xc] = param_4[0xc], uVar7 != 0xd)))) { + puVar3[0xd] = param_4[0xd]; + if (uVar7 == 0xf) { + puVar3[0xe] = param_4[0xe]; + uVar19 = 0xf; + } + else { + uVar19 = 0xe; + } + } + } + } + if (0xe < (uVar20 - 1) - uVar7) { + uVar24 = 0; + puVar18 = (undefined8 *)(param_4 + uVar7); + puVar21 = (undefined8 *)(lVar29 + lVar22 + (ulong)uVar7); + do { + uVar31 = *puVar18; + uVar24 = uVar24 + 1; + puVar21[1] = puVar18[1]; + *puVar21 = uVar31; + puVar18 = puVar18 + 2; + puVar21 = puVar21 + 2; + } while (uVar24 < uVar27); + uVar19 = uVar19 + iVar26; + if (iVar26 == uVar20 - uVar7) goto LAB_001a485c; + } + iVar2 = uVar19 + 1; + puVar3[(int)uVar19] = param_4[(int)uVar19]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 2; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 3; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 4; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 5; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 6; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 7; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 8; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 9; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 10; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 0xb; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 0xc; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + iVar2 = uVar19 + 0xd; + puVar3[iVar11] = param_4[iVar11]; + if (iVar2 < (int)uVar20) { + iVar11 = uVar19 + 0xe; + puVar3[iVar2] = param_4[iVar2]; + if (iVar11 < (int)uVar20) { + puVar3[iVar11] = param_4[iVar11]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a485c: + uVar24 = *param_2; + uVar19 = param_2[1]; + } + } + iVar17 = iVar17 + -1; + uVar24 = uVar24 + iVar25; + uVar19 = uVar19 + 1; + *param_2 = uVar24; + param_2[1] = uVar19; + if (iVar17 == -1) { + return; + } + } while( true ); + } + } + return; +} + + +================================================================== + +### FUNC 001a4ae0 (176 bytes) name=clipLine + +/* cv::clipLine(cv::Rect_, cv::Point_&, cv::Point_&) */ + +void cv::clipLine(int *param_1,int *param_2,int *param_3) + +{ + int iVar1; + int iVar2; + int local_8; + int local_4; + + iVar1 = *param_1; + iVar2 = param_1[1]; + *param_2 = *param_2 - iVar1; + param_2[1] = param_2[1] - iVar2; + *param_3 = *param_3 - iVar1; + param_3[1] = param_3[1] - iVar2; + local_4 = param_1[3]; + local_8 = param_1[2]; + clipLine(&local_8); + *param_2 = *param_2 + iVar1; + param_2[1] = param_2[1] + iVar2; + *param_3 = *param_3 + iVar1; + param_3[1] = param_3[1] + iVar2; + return; +} + + +================================================================== + +### FUNC 001a4b90 (744 bytes) name=LineIterator + +/* cv::LineIterator::LineIterator(cv::Mat const&, cv::Point_, cv::Point_, int, bool) */ + +void __thiscall +cv::LineIterator::LineIterator + (LineIterator *this,long param_1,uint *param_3,uint *param_4,int param_5,char param_6) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + uint uVar8; + char *pcVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + long lVar17; + undefined8 local_10; + undefined8 local_8; + + *(undefined4 *)(this + 0x1c) = 0xffffffff; + if ((param_5 - 4U & 0xfffffffb) != 0) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x26); + uVar6 = s_connectivity____8____connectivit_0043f450._36_2_; + uVar5 = s_connectivity____8____connectivit_0043f450._24_8_; + uVar4 = s_connectivity____8____connectivit_0043f450._16_8_; + uVar3 = s_connectivity____8____connectivit_0043f450._8_8_; + uVar2 = s_connectivity____8____connectivit_0043f450._0_8_; + *(undefined4 *)(pcVar9 + 0x20) = s_connectivity____8____connectivit_0043f450._32_4_; + *(undefined2 *)(pcVar9 + 0x24) = uVar6; + *(undefined8 *)pcVar9 = uVar2; + *(undefined8 *)(pcVar9 + 8) = uVar3; + *(undefined8 *)(pcVar9 + 0x10) = uVar4; + *(undefined8 *)(pcVar9 + 0x18) = uVar5; + error(-0xd7,(String *)&local_10, + "cv::LineIterator::LineIterator(const cv::Mat&, cv::Point, cv::Point, int, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x9e); + String::deallocate((String *)&local_10); + } + uVar14 = *param_3; + if ((uVar14 < *(uint *)(param_1 + 0xc)) && (uVar10 = *param_4, uVar10 < *(uint *)(param_1 + 0xc))) + { + uVar12 = param_3[1]; + if ((uVar12 < *(uint *)(param_1 + 8)) && (uVar15 = param_4[1], uVar15 < *(uint *)(param_1 + 8))) + goto LAB_001a4c28; + } + local_10 = CONCAT44(**(undefined4 **)(param_1 + 0x40),(*(undefined4 **)(param_1 + 0x40))[1]); + cVar7 = clipLine(&local_10,param_3,param_4); + if (cVar7 == '\0') { + *(undefined8 *)this = *(undefined8 *)(param_1 + 0x10); + *(undefined4 *)(this + 0x1c) = 0; + *(undefined4 *)(this + 0x28) = 0; + *(undefined4 *)(this + 0x2c) = 0; + *(undefined4 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0x24) = 0; + *(undefined4 *)(this + 0x18) = 0; + return; + } + uVar10 = *param_4; + uVar14 = *param_3; + uVar15 = param_4[1]; + uVar12 = param_3[1]; +LAB_001a4c28: + if (*(int *)(param_1 + 4) < 1) { + uVar16 = 0; + } + else { + uVar16 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + uVar8 = uVar10 - uVar14; + lVar17 = *(long *)(param_1 + 0x50); + uVar13 = (int)uVar8 >> 0x1f; + iVar1 = -uVar13; + uVar11 = uVar15 - uVar12; + if (param_6 == '\0') { + uVar10 = (uVar16 ^ uVar13) + iVar1; + } + else { + uVar14 = uVar14 ^ uVar13 & (uVar14 ^ uVar10); + uVar12 = uVar12 ^ uVar13 & (uVar12 ^ uVar15); + uVar11 = (uVar13 ^ uVar11) + iVar1; + *param_3 = uVar14; + param_3[1] = uVar12; + uVar10 = uVar16; + } + uVar8 = (uVar13 ^ uVar8) + iVar1; + uVar13 = (int)uVar11 >> 0x1f; + uVar15 = (uVar13 ^ uVar11) - uVar13; + uVar11 = (uint)lVar17; + *(long *)this = *(long *)(param_1 + 0x10) + (int)uVar12 * lVar17 + (long)(int)(uVar16 * uVar14); + uVar13 = (uVar13 ^ uVar11) - uVar13; + uVar14 = -(uint)((int)uVar8 < (int)uVar15); + uVar10 = uVar14 & uVar13 ^ uVar10; + uVar8 = uVar14 & uVar15 ^ uVar8; + uVar15 = uVar8 & uVar14 ^ uVar15; + uVar13 = uVar10 & uVar14 ^ uVar13; + uVar8 = uVar15 & uVar14 ^ uVar8; + uVar10 = uVar14 & uVar13 ^ uVar10; + if (param_5 == 8) { + *(uint *)(this + 0x2c) = uVar13; + *(uint *)(this + 0x28) = uVar10; + *(uint *)(this + 0x1c) = uVar8 + 1; + *(uint *)(this + 0x18) = uVar8 + uVar15 * -2; + *(uint *)(this + 0x24) = uVar8 << 1; + *(uint *)(this + 0x20) = uVar15 * -2; + } + else { + *(undefined4 *)(this + 0x18) = 0; + *(uint *)(this + 0x2c) = uVar13 - uVar10; + *(uint *)(this + 0x24) = uVar15 * 2 + uVar8 * 2; + *(uint *)(this + 0x20) = uVar15 * -2; + *(uint *)(this + 0x28) = uVar10; + *(uint *)(this + 0x1c) = uVar8 + uVar15 + 1; + } + *(undefined8 *)(this + 8) = *(undefined8 *)(param_1 + 0x10); + *(uint *)(this + 0x10) = uVar11; + *(uint *)(this + 0x14) = uVar16; + return; +} + + +================================================================== + +### FUNC 001a4e8c (516 bytes) name=FUN_001a4e8c + +void FUN_001a4e8c(long param_1,undefined8 *param_2,undefined8 *param_3,undefined1 *param_4, + int param_5) + +{ + uint uVar1; + int iVar2; + size_t __n; + undefined8 local_40; + undefined8 local_38; + undefined1 *local_30 [3]; + int local_18; + int local_14; + int local_10; + uint local_c; + int local_8; + uint local_4; + + if (param_5 == 0) { + param_5 = 8; + } + else if (param_5 == 1) { + param_5 = 4; + } + local_40 = *param_2; + local_38 = *param_3; + cv::LineIterator::LineIterator((LineIterator *)local_30,param_1,&local_40,&local_38,param_5,1); + if (*(int *)(param_1 + 4) < 1) { + if (local_14 < 1) { + return; + } + __n = 0; + } + else { + iVar2 = (int)*(undefined8 *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + __n = (size_t)iVar2; + if (local_14 < 1) { + return; + } + if (iVar2 == 1) { + iVar2 = 0; + do { + iVar2 = iVar2 + 1; + *local_30[0] = *param_4; + uVar1 = local_18 >> 0x1f; + local_18 = local_18 + (uVar1 & local_c) + local_10; + local_30[0] = local_30[0] + (int)((uVar1 & local_4) + local_8); + } while (iVar2 != local_14); + return; + } + if (iVar2 == 3) { + iVar2 = 0; + do { + iVar2 = iVar2 + 1; + *local_30[0] = *param_4; + local_30[0][1] = param_4[1]; + local_30[0][2] = param_4[2]; + uVar1 = local_18 >> 0x1f; + local_18 = local_18 + (uVar1 & local_c) + local_10; + local_30[0] = local_30[0] + (int)((uVar1 & local_4) + local_8); + } while (iVar2 != local_14); + return; + } + } + iVar2 = 0; + do { + iVar2 = iVar2 + 1; + memcpy(local_30[0],param_4,__n); + uVar1 = local_18 >> 0x1f; + local_18 = local_18 + (uVar1 & local_c) + local_10; + local_30[0] = local_30[0] + (int)((uVar1 & local_4) + local_8); + } while (iVar2 != local_14); + return; +} + + +================================================================== + +### FUNC 001a5090 (4884 bytes) name=FUN_001a5090 + +void FUN_001a5090(uint *param_1,uint *param_2,uint *param_3,byte *param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + byte bVar6; + byte bVar7; + byte bVar8; + byte bVar9; + int iVar10; + int iVar11; + ulong uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + long lVar16; + char cVar17; + uint uVar18; + int iVar19; + byte *pbVar20; + uint uVar21; + uint uVar22; + uint uVar23; + long lVar24; + int iVar25; + uint uVar26; + int iVar27; + int iVar28; + uint uVar29; + uint uVar30; + long lVar31; + size_t __n; + uint uVar32; + uint uVar33; + undefined8 uVar34; + undefined8 local_40; + undefined8 local_38; + byte *local_30; + int local_28; + uint local_24; + int local_20; + int local_1c; + int local_18; + int local_14; + uint local_10; + uint local_c; + int local_8; + uint local_4; + + bVar6 = *param_4; + uVar30 = *param_1 >> 3 & 0x1ff; + iVar19 = uVar30 + 1; + bVar7 = param_4[1]; + bVar8 = param_4[2]; + bVar9 = param_4[3]; + lVar24 = *(long *)(param_1 + 4); + lVar31 = *(long *)(param_1 + 0x14); + iVar27 = (*(int **)(param_1 + 0x10))[1]; + iVar28 = **(int **)(param_1 + 0x10); + if (((uVar30 - 2 < 2) || (iVar19 == 1)) && ((*param_1 & 7) == 0)) { + uVar34 = *(undefined8 *)param_2; + *(ulong *)param_3 = + CONCAT44((int)((ulong)*(undefined8 *)param_3 >> 0x20) + -0x20000, + (int)*(undefined8 *)param_3 + -0x20000); + *(ulong *)param_2 = CONCAT44((int)((ulong)uVar34 >> 0x20) + -0x20000,(int)uVar34 + -0x20000); + local_30 = (byte *)CONCAT44((iVar28 + -5) * 0x10000 + 1,(iVar27 + -5) * 0x10000 + 1); + cVar17 = cv::clipLine(&local_30,param_2,param_3); + if (cVar17 != '\0') { + uVar30 = *param_3; + uVar32 = *param_2; + uVar23 = param_3[1]; + uVar18 = param_2[1]; + uVar21 = uVar30 - uVar32; + uVar29 = (int)uVar21 >> 0x1f; + uVar33 = uVar23 - uVar18; + uVar4 = (int)uVar33 >> 0x1f; + uVar26 = -uVar29 + (uVar29 ^ uVar21); + uVar22 = (uVar4 ^ uVar33) + -uVar4; + if ((int)uVar22 < (int)uVar26) { + uVar21 = -uVar29 + (uVar29 ^ uVar33); + uVar32 = uVar29 & uVar30 ^ uVar32; + uVar12 = 0; + if ((long)(int)(uVar26 | 1) != 0) { + uVar12 = (long)(-(ulong)(uVar21 >> 0x1f) & 0xffff000000000000 | (ulong)uVar21 << 0x10) / + (long)(int)(uVar26 | 1); + } + uVar30 = uVar32 & uVar29 ^ uVar30; + uVar18 = uVar29 & uVar23 ^ uVar18; + uVar32 = uVar30 & uVar29 ^ uVar32; + uVar23 = uVar18 & uVar29 ^ uVar23; + iVar28 = (int)uVar12; + uVar21 = 0; + if (iVar28 < 0) { + uVar21 = 0x3f; + } + uVar30 = uVar30 + 0x10000; + param_3[1] = uVar23; + *param_2 = uVar32; + uVar21 = uVar21 ^ (uint)(uVar12 >> 0xb) & 0x3f; + *param_3 = uVar30; + param_2[1] = (uVar23 & uVar29 ^ uVar18) + + (int)((ulong)((long)iVar28 * (long)(int)-(uVar32 & 0xffff)) >> 0x10) + 0x8000; + uVar18 = ((int)uVar30 >> 0x10) - ((int)uVar32 >> 0x10); + iVar27 = 0x10000; + } + else { + uVar21 = (uVar4 ^ uVar21) + -uVar4; + uVar18 = uVar4 & uVar23 ^ uVar18; + uVar12 = 0; + if ((long)(int)(uVar22 | 1) != 0) { + uVar12 = (long)(-(ulong)(uVar21 >> 0x1f) & 0xffff000000000000 | (ulong)uVar21 << 0x10) / + (long)(int)(uVar22 | 1); + } + uVar23 = uVar18 & uVar4 ^ uVar23; + uVar33 = uVar4 & uVar30 ^ uVar32; + iVar27 = (int)uVar12; + uVar32 = uVar23 & uVar4 ^ uVar18; + uVar18 = uVar33 & uVar4 ^ uVar30; + uVar21 = 0; + if (iVar27 < 0) { + uVar21 = 0x3f; + } + uVar30 = uVar23 + 0x10000; + *param_3 = uVar18; + param_3[1] = uVar30; + uVar21 = uVar21 ^ (uint)(uVar12 >> 0xb) & 0x3f; + param_2[1] = uVar32; + *param_2 = (uVar18 & uVar4 ^ uVar33) + + (int)((ulong)((long)iVar27 * (long)(int)-(uVar32 & 0xffff)) >> 0x10) + 0x8000; + uVar18 = ((int)uVar30 >> 0x10) - ((int)uVar32 >> 0x10); + iVar28 = 0x10000; + } + uVar23 = (int)uVar30 >> 9 & 0x78; + uVar30 = (int)uVar32 >> 9 & 0x78; + if (uVar21 >> 5 == 0) { + local_10 = (uint)(byte)(&DAT_0043ffa0)[(int)uVar21]; + iVar25 = (uint)(byte)(&DAT_0043ffa0)[(int)uVar21] << 7; + } + else { + iVar25 = 0x8000; + local_10 = 0x100; + } + uVar32 = uVar23 - uVar30; + iVar10 = local_10 * (0x78 - uVar30 | 4); + iVar11 = local_10 * (uVar23 | 4); + local_24 = (int)(local_10 * (uVar32 & 0x78 | 4)) >> 8; + local_28 = iVar10 >> 8; + local_30 = (byte *)((ulong)local_24 << 0x20); + local_20 = (int)(local_10 * (uVar32 + 0x80 | 4)) >> 8; + lVar24 = lVar24 + lVar31 * 2 + (long)(iVar19 * 2); + local_1c = iVar10 + iVar25 >> 8; + local_18 = iVar11 >> 8; + local_14 = iVar11 + iVar25 >> 8; + uVar30 = (uint)bVar6; + uVar23 = (uint)bVar7; + uVar32 = (uint)bVar8; + if (iVar19 == 3) { + if ((int)uVar22 < (int)uVar26) { + lVar24 = lVar24 + *(short *)((long)param_2 + 2) * 3; + if (-1 < (int)uVar18) { + uVar22 = param_2[1]; + uVar26 = 0; + uVar21 = 1; + pbVar20 = (byte *)(lVar24 + lVar31 * (((int)uVar22 >> 0x10) + -1)); + while( true ) { + uVar33 = uVar21 & (uVar26 | 2); + uVar21 = 2; + uVar29 = uVar21; + if ((int)uVar18 < 2) { + uVar29 = 1; + } + uVar22 = uVar22 >> 0xb & 0x1f; + iVar19 = *(int *)((long)&local_30 + + (long)(int)(uVar33 * 3 + (uVar29 & (uVar18 | 2))) * 4); + lVar16 = lVar31 * 2; + iVar27 = *(int *)(&DAT_0043fba0 + (long)(int)(0x3f - uVar22) * 4); + uVar4 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(uVar22 + 0x20) * 4)) >> 8 + & 0xff; + uVar18 = uVar18 - 1; + uVar5 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)uVar22 * 4)) >> 8 & 0xff; + uVar22 = (uint)pbVar20[1] + ((int)((uVar23 - pbVar20[1]) * uVar4 + 0x7f) >> 8); + uVar33 = (uint)*pbVar20 + ((int)((uVar30 - *pbVar20) * uVar4 + 0x7f) >> 8); + uVar29 = (uint)pbVar20[2] + ((int)((uVar32 - pbVar20[2]) * uVar4 + 0x7f) >> 8); + lVar24 = lVar24 + 3; + pbVar20[1] = (char)uVar22 + (char)((uVar23 - (uVar22 & 0xff)) * uVar4 + 0x7f >> 8); + *pbVar20 = (char)uVar33 + (char)((uVar30 - (uVar33 & 0xff)) * uVar4 + 0x7f >> 8); + uVar26 = uVar26 + 1; + pbVar20[2] = (char)uVar29 + (char)((uVar32 - (uVar29 & 0xff)) * uVar4 + 0x7f >> 8); + uVar4 = (uint)(iVar19 * iVar27) >> 8 & 0xff; + uVar22 = (uint)pbVar20[lVar31] + + ((int)((uVar30 - pbVar20[lVar31]) * uVar5 + 0x7f) >> 8); + uVar33 = (uint)pbVar20[lVar31 + 1] + + ((int)((uVar23 - pbVar20[lVar31 + 1]) * uVar5 + 0x7f) >> 8); + uVar29 = (uint)pbVar20[lVar31 + 2] + + ((int)((uVar32 - pbVar20[lVar31 + 2]) * uVar5 + 0x7f) >> 8); + pbVar20[lVar31] = + (char)uVar22 + (char)((uVar30 - (uVar22 & 0xff)) * uVar5 + 0x7f >> 8); + pbVar20[lVar31 + 1] = + (char)uVar33 + (char)((uVar23 - (uVar33 & 0xff)) * uVar5 + 0x7f >> 8); + pbVar20[lVar31 + 2] = + (char)uVar29 + (char)((uVar32 - (uVar29 & 0xff)) * uVar5 + 0x7f >> 8); + uVar22 = (uint)pbVar20[lVar31 * 2] + + ((int)((uVar30 - pbVar20[lVar31 * 2]) * uVar4 + 0x7f) >> 8); + uVar33 = (uint)pbVar20[lVar16 + 1] + + ((int)((uVar23 - pbVar20[lVar16 + 1]) * uVar4 + 0x7f) >> 8); + uVar29 = (uint)pbVar20[lVar16 + 2] + + ((int)((uVar32 - pbVar20[lVar16 + 2]) * uVar4 + 0x7f) >> 8); + pbVar20[lVar31 * 2] = + (char)uVar22 + (char)((uVar30 - (uVar22 & 0xff)) * uVar4 + 0x7f >> 8); + pbVar20[lVar16 + 2] = + (char)uVar29 + (char)((uVar32 - (uVar29 & 0xff)) * uVar4 + 0x7f >> 8); + pbVar20[lVar16 + 1] = + (char)uVar33 + (char)((uVar23 - (uVar33 & 0xff)) * uVar4 + 0x7f >> 8); + uVar22 = iVar28 + param_2[1]; + param_2[1] = uVar22; + if (uVar18 == 0xffffffff) break; + if (uVar26 == 1) { + uVar21 = 1; + } + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * lVar31); + } + } + } + else { + lVar24 = lVar24 + lVar31 * *(short *)((long)param_2 + 6); + if (-1 < (int)uVar18) { + uVar22 = *param_2; + uVar26 = 0; + uVar21 = 1; + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * 3); + while( true ) { + uVar33 = uVar26 | 2; + uVar29 = uVar22 >> 0xb & 0x1f; + uVar22 = 2; + lVar24 = lVar24 + lVar31; + uVar26 = uVar26 + 1; + if ((int)uVar18 < 2) { + uVar22 = 1; + } + uVar4 = uVar18 | 2; + uVar18 = uVar18 - 1; + iVar19 = *(int *)((long)&local_30 + + (long)(int)((uVar21 & uVar33) * 3 + (uVar22 & uVar4)) * 4); + uVar13 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(uVar29 + 0x20) * 4)) >> + 8 & 0xff; + uVar14 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)uVar29 * 4)) >> 8 & 0xff; + uVar15 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(0x3f - uVar29) * 4)) >> + 8 & 0xff; + uVar22 = (uint)*pbVar20 + ((int)((uVar30 - *pbVar20) * uVar13 + 0x7f) >> 8); + uVar21 = (uint)pbVar20[1] + ((int)((uVar23 - pbVar20[1]) * uVar13 + 0x7f) >> 8); + uVar33 = (uint)pbVar20[2] + ((int)((uVar32 - pbVar20[2]) * uVar13 + 0x7f) >> 8); + uVar29 = (uint)pbVar20[5] + ((int)((uVar32 - pbVar20[5]) * uVar14 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[3] + ((int)((uVar30 - pbVar20[3]) * uVar14 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[4] + ((int)((uVar23 - pbVar20[4]) * uVar14 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[6] + ((int)((uVar30 - pbVar20[6]) * uVar15 + 0x7f) >> 8); + uVar2 = (uint)pbVar20[7] + ((int)((uVar23 - pbVar20[7]) * uVar15 + 0x7f) >> 8); + uVar3 = (uint)pbVar20[8] + ((int)((uVar32 - pbVar20[8]) * uVar15 + 0x7f) >> 8); + pbVar20[3] = (char)uVar4 + (char)((uVar30 - (uVar4 & 0xff)) * uVar14 + 0x7f >> 8); + pbVar20[8] = (char)uVar3 + (char)((uVar32 - (uVar3 & 0xff)) * uVar15 + 0x7f >> 8); + pbVar20[6] = (char)uVar1 + (char)((uVar30 - (uVar1 & 0xff)) * uVar15 + 0x7f >> 8); + pbVar20[7] = (char)uVar2 + (char)((uVar23 - (uVar2 & 0xff)) * uVar15 + 0x7f >> 8); + pbVar20[4] = (char)uVar5 + (char)((uVar23 - (uVar5 & 0xff)) * uVar14 + 0x7f >> 8); + pbVar20[5] = (char)uVar29 + (char)((uVar32 - (uVar29 & 0xff)) * uVar14 + 0x7f >> 8); + *pbVar20 = (char)uVar22 + (char)((uVar30 - (uVar22 & 0xff)) * uVar13 + 0x7f >> 8); + pbVar20[1] = (char)uVar21 + (char)((uVar23 - (uVar21 & 0xff)) * uVar13 + 0x7f >> 8); + pbVar20[2] = (char)uVar33 + (char)((uVar32 - (uVar33 & 0xff)) * uVar13 + 0x7f >> 8); + uVar22 = iVar27 + *param_2; + *param_2 = uVar22; + if (uVar18 == 0xffffffff) break; + uVar21 = 2; + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * 3); + if (uVar26 == 1) { + uVar21 = 1; + } + } + } + } + } + else { + uVar21 = (uint)bVar6; + if (iVar19 == 1) { + if ((int)uVar22 < (int)uVar26) { + lVar24 = lVar24 + *(short *)((long)param_2 + 2); + if (-1 < (int)uVar18) { + uVar22 = param_2[1]; + uVar26 = 0; + pbVar20 = (byte *)(lVar24 + lVar31 * (((int)uVar22 >> 0x10) + -1)); + uVar23 = 1; + while( true ) { + uVar32 = uVar23 & (uVar26 | 2); + uVar23 = 2; + uVar33 = uVar23; + if ((int)uVar18 < 2) { + uVar33 = 1; + } + uVar22 = uVar22 >> 0xb & 0x1f; + iVar19 = *(int *)((long)&local_30 + + (long)(int)(uVar32 * 3 + (uVar33 & (uVar18 | 2))) * 4); + uVar18 = uVar18 - 1; + lVar24 = lVar24 + 1; + uVar32 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(uVar22 + 0x20) * 4)) + >> 8 & 0xff; + uVar26 = uVar26 + 1; + uVar33 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)uVar22 * 4)) >> 8 & + 0xff; + uVar29 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(0x3f - uVar22) * 4)) + >> 8 & 0xff; + uVar22 = (uint)*pbVar20 + ((int)((uVar30 - *pbVar20) * uVar32 + 0x7f) >> 8); + *pbVar20 = (char)uVar22 + (char)((uVar30 - (uVar22 & 0xff)) * uVar32 + 0x7f >> 8); + uVar22 = (uint)pbVar20[lVar31] + + ((int)((uVar21 - pbVar20[lVar31]) * uVar33 + 0x7f) >> 8); + pbVar20[lVar31] = + (char)uVar22 + (char)((uVar21 - (uVar22 & 0xff)) * uVar33 + 0x7f >> 8); + uVar22 = (uint)pbVar20[lVar31 * 2] + + ((int)((uVar21 - pbVar20[lVar31 * 2]) * uVar29 + 0x7f) >> 8); + pbVar20[lVar31 * 2] = + (char)uVar22 + (char)((uVar21 - (uVar22 & 0xff)) * uVar29 + 0x7f >> 8); + uVar22 = iVar28 + param_2[1]; + param_2[1] = uVar22; + if (uVar18 == 0xffffffff) break; + if (uVar26 == 1) { + uVar23 = 1; + } + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * lVar31); + } + } + } + else { + lVar24 = lVar24 + lVar31 * *(short *)((long)param_2 + 6); + if (-1 < (int)uVar18) { + uVar22 = *param_2; + uVar26 = 0; + pbVar20 = (byte *)(lVar24 + (long)((int)uVar22 >> 0x10) + -1); + uVar23 = 1; + while( true ) { + uVar32 = uVar23 & (uVar26 | 2); + uVar23 = 2; + uVar33 = uVar23; + if ((int)uVar18 < 2) { + uVar33 = 1; + } + uVar29 = uVar18 | 2; + uVar22 = uVar22 >> 0xb & 0x1f; + uVar18 = uVar18 - 1; + iVar19 = *(int *)((long)&local_30 + (long)(int)(uVar32 * 3 + (uVar33 & uVar29)) * 4) + ; + lVar24 = lVar24 + lVar31; + uVar26 = uVar26 + 1; + uVar29 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(uVar22 + 0x20) * 4)) + >> 8 & 0xff; + uVar4 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)uVar22 * 4)) >> 8 & 0xff + ; + uVar5 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(0x3f - uVar22) * 4)) >> + 8 & 0xff; + uVar22 = (uint)pbVar20[2] + ((int)((uVar21 - pbVar20[2]) * uVar5 + 0x7f) >> 8); + uVar32 = (uint)*pbVar20 + ((int)((uVar21 - *pbVar20) * uVar29 + 0x7f) >> 8); + uVar33 = (uint)pbVar20[1] + ((int)((uVar21 - pbVar20[1]) * uVar4 + 0x7f) >> 8); + *pbVar20 = (char)uVar32 + (char)((uVar30 - (uVar32 & 0xff)) * uVar29 + 0x7f >> 8); + pbVar20[2] = (char)uVar22 + (char)((uVar21 - (uVar22 & 0xff)) * uVar5 + 0x7f >> 8); + pbVar20[1] = (char)uVar33 + (char)((uVar30 - (uVar33 & 0xff)) * uVar4 + 0x7f >> 8); + uVar22 = iVar27 + *param_2; + *param_2 = uVar22; + if (uVar18 == 0xffffffff) break; + if (uVar26 == 1) { + uVar23 = 1; + } + pbVar20 = (byte *)(lVar24 + (long)((int)uVar22 >> 0x10) + -1); + } + } + } + } + else { + uVar33 = (uint)bVar9; + if ((int)uVar22 < (int)uVar26) { + lVar24 = lVar24 + ((int)*(short *)((long)param_2 + 2) << 2); + if (-1 < (int)uVar18) { + uVar22 = param_2[1]; + uVar26 = 0; + uVar29 = 1; + pbVar20 = (byte *)(lVar24 + lVar31 * (((int)uVar22 >> 0x10) + -1)); + while( true ) { + uVar4 = uVar29 & (uVar26 | 2); + uVar29 = 2; + uVar5 = uVar29; + if ((int)uVar18 < 2) { + uVar5 = 1; + } + uVar2 = uVar22 >> 0xb & 0x1f; + iVar19 = *(int *)((long)&local_30 + + (long)(int)(uVar4 * 3 + (uVar5 & (uVar18 | 2))) * 4); + lVar16 = lVar31 * 2; + uVar18 = uVar18 - 1; + uVar3 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(uVar2 + 0x20) * 4)) >> + 8 & 0xff; + iVar27 = *(int *)(&DAT_0043fba0 + (long)(int)uVar2 * 4); + uVar22 = (uint)*pbVar20 + + ((int)(((uint)bVar6 - (uint)*pbVar20) * uVar3 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[1] + + ((int)(((uint)bVar7 - (uint)pbVar20[1]) * uVar3 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[2] + + ((int)(((uint)bVar8 - (uint)pbVar20[2]) * uVar3 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[3] + + ((int)(((uint)bVar9 - (uint)pbVar20[3]) * uVar3 + 0x7f) >> 8); + pbVar20[1] = (char)uVar4 + + (char)(((uint)bVar7 - (uVar4 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[2] = (char)uVar5 + + (char)(((uint)bVar8 - (uVar5 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[3] = (char)uVar1 + + (char)(((uint)bVar9 - (uVar1 & 0xff)) * uVar3 + 0x7f >> 8); + *pbVar20 = (char)uVar22 + + (char)(((uint)bVar6 - (uVar22 & 0xff)) * uVar3 + 0x7f >> 8); + lVar24 = lVar24 + 4; + uVar26 = uVar26 + 1; + uVar3 = (uint)(iVar19 * iVar27) >> 8 & 0xff; + iVar27 = *(int *)(&DAT_0043fba0 + (long)(int)(0x3f - uVar2) * 4); + uVar22 = (uint)pbVar20[lVar31] + + ((int)((uVar30 - pbVar20[lVar31]) * uVar3 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[lVar31 + 1] + + ((int)((uVar23 - pbVar20[lVar31 + 1]) * uVar3 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[lVar31 + 2] + + ((int)((uVar32 - pbVar20[lVar31 + 2]) * uVar3 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[lVar31 + 3] + + ((int)((uVar33 - pbVar20[lVar31 + 3]) * uVar3 + 0x7f) >> 8); + pbVar20[lVar31] = + (char)uVar22 + (char)((uVar30 - (uVar22 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[lVar31 + 2] = + (char)uVar5 + (char)((uVar32 - (uVar5 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[lVar31 + 3] = + (char)uVar1 + (char)((uVar33 - (uVar1 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[lVar31 + 1] = + (char)uVar4 + (char)((uVar23 - (uVar4 & 0xff)) * uVar3 + 0x7f >> 8); + uVar2 = (uint)(iVar19 * iVar27) >> 8 & 0xff; + uVar22 = (uint)pbVar20[lVar31 * 2] + + ((int)((uVar21 - pbVar20[lVar31 * 2]) * uVar2 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[lVar16 + 1] + + ((int)((uVar23 - pbVar20[lVar16 + 1]) * uVar2 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[lVar16 + 2] + + ((int)((uVar32 - pbVar20[lVar16 + 2]) * uVar2 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[lVar16 + 3] + + ((int)((uVar33 - pbVar20[lVar16 + 3]) * uVar2 + 0x7f) >> 8); + pbVar20[lVar31 * 2] = + (char)uVar22 + (char)((uVar21 - (uVar22 & 0xff)) * uVar2 + 0x7f >> 8); + pbVar20[lVar16 + 3] = + (char)uVar1 + (char)((uVar33 - (uVar1 & 0xff)) * uVar2 + 0x7f >> 8); + pbVar20[lVar16 + 1] = + (char)uVar4 + (char)((uVar23 - (uVar4 & 0xff)) * uVar2 + 0x7f >> 8); + pbVar20[lVar16 + 2] = + (char)uVar5 + (char)((uVar32 - (uVar5 & 0xff)) * uVar2 + 0x7f >> 8); + uVar22 = iVar28 + param_2[1]; + param_2[1] = uVar22; + if (uVar18 == 0xffffffff) break; + if (uVar26 == 1) { + uVar29 = 1; + } + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * lVar31); + } + } + } + else { + lVar24 = lVar24 + lVar31 * *(short *)((long)param_2 + 6); + if (-1 < (int)uVar18) { + uVar22 = *param_2; + uVar26 = 0; + uVar29 = 1; + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * 4); + while( true ) { + uVar4 = uVar29 & (uVar26 | 2); + uVar29 = 2; + uVar5 = uVar29; + if ((int)uVar18 < 2) { + uVar5 = 1; + } + uVar2 = uVar22 >> 0xb & 0x1f; + iVar19 = *(int *)((long)&local_30 + + (long)(int)(uVar4 * 3 + (uVar5 & (uVar18 | 2))) * 4); + lVar16 = lVar31 * 2; + uVar18 = uVar18 - 1; + uVar3 = (uint)(iVar19 * *(int *)(&DAT_0043fba0 + (long)(int)(uVar2 + 0x20) * 4)) >> + 8 & 0xff; + iVar28 = *(int *)(&DAT_0043fba0 + (long)(int)uVar2 * 4); + uVar22 = (uint)*pbVar20 + ((int)((uVar21 - *pbVar20) * uVar3 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[1] + ((int)((uVar23 - pbVar20[1]) * uVar3 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[2] + ((int)((uVar32 - pbVar20[2]) * uVar3 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[3] + ((int)((uVar33 - pbVar20[3]) * uVar3 + 0x7f) >> 8); + pbVar20[1] = (char)uVar4 + (char)((uVar23 - (uVar4 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[2] = (char)uVar5 + (char)((uVar32 - (uVar5 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[3] = (char)uVar1 + (char)((uVar33 - (uVar1 & 0xff)) * uVar3 + 0x7f >> 8); + *pbVar20 = (char)uVar22 + (char)((uVar21 - (uVar22 & 0xff)) * uVar3 + 0x7f >> 8); + lVar24 = lVar24 + lVar31; + uVar26 = uVar26 + 1; + uVar3 = (uint)(iVar19 * iVar28) >> 8 & 0xff; + iVar28 = *(int *)(&DAT_0043fba0 + (long)(int)(0x3f - uVar2) * 4); + uVar22 = (uint)pbVar20[lVar31] + + ((int)((uVar21 - pbVar20[lVar31]) * uVar3 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[lVar31 + 1] + + ((int)((uVar23 - pbVar20[lVar31 + 1]) * uVar3 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[lVar31 + 2] + + ((int)((uVar32 - pbVar20[lVar31 + 2]) * uVar3 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[lVar31 + 3] + + ((int)((uVar33 - pbVar20[lVar31 + 3]) * uVar3 + 0x7f) >> 8); + pbVar20[lVar31] = + (char)uVar22 + (char)((uVar21 - (uVar22 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[lVar31 + 2] = + (char)uVar5 + (char)((uVar32 - (uVar5 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[lVar31 + 3] = + (char)uVar1 + (char)((uVar33 - (uVar1 & 0xff)) * uVar3 + 0x7f >> 8); + pbVar20[lVar31 + 1] = + (char)uVar4 + (char)((uVar23 - (uVar4 & 0xff)) * uVar3 + 0x7f >> 8); + uVar2 = (uint)(iVar19 * iVar28) >> 8 & 0xff; + uVar22 = (uint)pbVar20[lVar31 * 2] + + ((int)((uVar30 - pbVar20[lVar31 * 2]) * uVar2 + 0x7f) >> 8); + uVar4 = (uint)pbVar20[lVar16 + 1] + + ((int)((uVar23 - pbVar20[lVar16 + 1]) * uVar2 + 0x7f) >> 8); + uVar5 = (uint)pbVar20[lVar16 + 2] + + ((int)((uVar32 - pbVar20[lVar16 + 2]) * uVar2 + 0x7f) >> 8); + uVar1 = (uint)pbVar20[lVar16 + 3] + + ((int)((uVar33 - pbVar20[lVar16 + 3]) * uVar2 + 0x7f) >> 8); + pbVar20[lVar31 * 2] = + (char)uVar22 + (char)((uVar30 - (uVar22 & 0xff)) * uVar2 + 0x7f >> 8); + pbVar20[lVar16 + 3] = + (char)uVar1 + (char)((uVar33 - (uVar1 & 0xff)) * uVar2 + 0x7f >> 8); + pbVar20[lVar16 + 1] = + (char)uVar4 + (char)((uVar23 - (uVar4 & 0xff)) * uVar2 + 0x7f >> 8); + pbVar20[lVar16 + 2] = + (char)uVar5 + (char)((uVar32 - (uVar5 & 0xff)) * uVar2 + 0x7f >> 8); + uVar22 = iVar27 + *param_2; + *param_2 = uVar22; + if (uVar18 == 0xffffffff) break; + if (uVar26 == 1) { + uVar29 = 1; + } + pbVar20 = (byte *)(lVar24 + (((int)uVar22 >> 0x10) + -1) * 4); + } + } + } + } + } + return; + } + return; + } + local_38 = *(undefined8 *)param_3; + local_40 = *(undefined8 *)param_2; + cv::LineIterator::LineIterator((LineIterator *)&local_30,param_1,&local_40,&local_38,8,1); + if ((int)param_1[1] < 1) { + __n = 0; + if (local_14 < 1) { + return; + } + } + else { + iVar19 = (int)*(undefined8 *)(*(long *)(param_1 + 0x12) + (long)(int)param_1[1] * 8 + -8); + __n = (size_t)iVar19; + if (local_14 < 1) { + return; + } + if (iVar19 == 1) { + iVar19 = 0; + do { + iVar19 = iVar19 + 1; + *local_30 = *param_4; + uVar30 = local_18 >> 0x1f; + local_18 = local_18 + (uVar30 & local_c) + local_10; + local_30 = local_30 + (int)((uVar30 & local_4) + local_8); + } while (iVar19 != local_14); + return; + } + if (iVar19 == 3) { + iVar19 = 0; + do { + iVar19 = iVar19 + 1; + *local_30 = *param_4; + local_30[1] = param_4[1]; + local_30[2] = param_4[2]; + uVar30 = local_18 >> 0x1f; + local_18 = local_18 + (uVar30 & local_c) + local_10; + local_30 = local_30 + (int)((uVar30 & local_4) + local_8); + } while (iVar19 != local_14); + return; + } + } + iVar19 = 0; + do { + iVar19 = iVar19 + 1; + memcpy(local_30,param_4,__n); + uVar30 = local_18 >> 0x1f; + local_18 = local_18 + (uVar30 & local_c) + local_10; + local_30 = local_30 + (int)((uVar30 & local_4) + local_8); + } while (iVar19 != local_14); + return; +} + + +================================================================== + +### FUNC 001a63a4 (2632 bytes) name=FUN_001a63a4 + +void FUN_001a63a4(long param_1,int *param_2,uint param_3,undefined1 *param_4,int param_5, + uint param_6) + +{ + undefined1 *puVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + uint uVar9; + undefined1 *puVar10; + uint uVar11; + size_t __n; + int iVar12; + undefined8 *puVar13; + ulong uVar14; + int *piVar15; + uint uVar16; + long lVar17; + uint uVar18; + long lVar19; + int iVar20; + int iVar21; + undefined8 *puVar22; + long lVar23; + int *piVar24; + long lVar25; + uint uVar26; + uint uVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + undefined8 uVar32; + int iVar33; + int iVar34; + uint local_70; + int local_6c; + int local_50; + int local_4c; + int local_40; + int local_3c; + int local_38; + int local_34; + undefined8 local_30; + int local_28 [4]; + int local_18; + int local_14; + int local_10; + uint local_c; + int local_8; + uint local_4; + + iVar34 = 0; + if (param_6 != 0) { + iVar34 = 1 << (ulong)(param_6 - 1 & 0x1f); + } + lVar17 = *(long *)(param_1 + 0x10); + iVar5 = (*(int **)(param_1 + 0x40))[1]; + iVar20 = **(int **)(param_1 + 0x40); + if (*(int *)(param_1 + 4) < 1) { + local_70 = 0; + } + else { + local_70 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + if (param_5 < 0x10) { + local_4c = 0x8000; + local_50 = 0x8000; + } + else { + local_4c = 0; + local_50 = 0xffff; + } + iVar28 = *param_2; + uVar8 = 0x10 - param_6; + iVar30 = param_2[1]; + iVar31 = iVar28; + iVar33 = iVar30; + if ((int)param_3 < 1) { + local_6c = 0; +LAB_001a667c: + uVar2 = iVar34 + iVar30 >> (param_6 & 0x1f); + iVar30 = iVar33 + iVar34 >> (param_6 & 0x1f); + if ((iVar31 + iVar34 >> (param_6 & 0x1f) < iVar5 && + (2 < (int)param_3 && -1 < (int)(iVar34 + iVar28 | uVar2))) && + (uVar26 = (uint)(iVar20 <= iVar30), iVar20 > iVar30)) { + uVar3 = iVar20 - 1; + if ((int)uVar2 < iVar20) { + uVar3 = uVar2; + } + uVar2 = -(int)param_4 & 0xf; + uVar27 = 1; + uVar4 = local_70; + if (uVar2 < local_70) { + uVar4 = uVar2; + } + lVar19 = *(long *)(param_1 + 0x50); + local_28[3] = local_6c; + lVar17 = lVar17 + iVar30 * lVar19; + uVar2 = ((local_70 - uVar4) - 0x10 >> 4) + 1; + local_18 = param_3 - 1; + uVar9 = (local_70 - 1) - uVar4; + local_c = iVar30; + local_28[2] = iVar30; + local_30 = (undefined1 *)CONCAT44(1,local_6c); + iVar28 = uVar2 * 0x10; + iVar20 = iVar30; + uVar16 = param_3; + do { + piVar24 = (int *)&local_30; + if ((iVar20 < (int)uVar3 || iVar20 == iVar30) || (param_5 < 0x10)) { + do { + if (piVar24[4] <= iVar20) { + iVar33 = *piVar24; + piVar15 = param_2 + (long)iVar33 * 2; + iVar31 = iVar34 + piVar15[1] >> (param_6 & 0x1f); + if ((uVar16 == 0) || (iVar20 < iVar31)) { + iVar29 = 0; + } + else { + do { + iVar29 = *piVar15; + uVar16 = uVar16 - 1; + iVar33 = (iVar33 + piVar24[1]) - + (-(uint)((int)param_3 <= iVar33 + piVar24[1]) & param_3); + piVar15 = param_2 + (long)iVar33 * 2; + iVar31 = iVar34 + piVar15[1] >> (param_6 & 0x1f); + if (iVar20 < iVar31) break; + } while (uVar16 != 0); + iVar29 = iVar29 << (ulong)(uVar8 & 0x1f); + } + iVar6 = *piVar15; + if (iVar31 <= iVar20) { + return; + } + piVar24[4] = iVar31; + iVar7 = (iVar31 - iVar20) * 2; + *piVar24 = iVar33; + piVar24[2] = iVar29; + iVar33 = 0; + if (iVar7 != 0) { + iVar33 = ((iVar31 - iVar20) + ((iVar6 << (ulong)(uVar8 & 0x1f)) - iVar29) * 2) / + iVar7; + } + piVar24[3] = iVar33; + } + piVar24 = piVar24 + 5; + } while (piVar24 != &local_8); + } + lVar25 = (long)(int)uVar26; + lVar23 = (long)(int)uVar27; + iVar31 = local_28[lVar25 * 5]; + iVar33 = local_28[lVar23 * 5]; + if (iVar33 < iVar31) { + uVar26 = uVar26 ^ 1; + uVar27 = uVar27 ^ 1; + lVar25 = (long)(int)uVar26; + lVar23 = (long)(int)uVar27; + iVar31 = local_28[lVar25 * 5]; + iVar33 = local_28[lVar23 * 5]; + } + if (-1 < iVar20) { + iVar29 = local_4c + iVar33 >> 0x10; + iVar6 = local_50 + iVar31 >> 0x10; + if ((-1 < iVar29) && (iVar6 < iVar5)) { + if (iVar6 < 0) { + iVar6 = 0; + } + iVar7 = iVar5 + -1; + if (iVar29 < iVar5) { + iVar7 = iVar29; + } + puVar10 = (undefined1 *)(lVar17 + (int)(iVar6 * local_70)); + puVar1 = (undefined1 *)(lVar17 + (int)(iVar7 * local_70)); + if (puVar10 <= puVar1) { + do { + if (0 < (int)local_70) { + if ((param_4 < puVar10 + 0x10 && puVar10 < param_4 + 0x10) || (local_70 < 0x16)) { + lVar19 = 0; + do { + puVar10[lVar19] = param_4[lVar19]; + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)local_70); + } + else { + uVar11 = uVar4; + if (uVar4 == 0) { + uVar14 = 0; + if (0xe < uVar9) goto LAB_001a6950; + iVar29 = 1; + *puVar10 = *param_4; + } + else { + *puVar10 = *param_4; + if ((((uVar4 != 1) && (puVar10[1] = param_4[1], uVar4 != 2)) && + (puVar10[2] = param_4[2], uVar4 != 3)) && + ((puVar10[3] = param_4[3], uVar4 != 4 && + (puVar10[4] = param_4[4], uVar4 != 5)))) { + puVar10[5] = param_4[5]; + if (uVar4 == 6) { + uVar11 = 6; + } + else { + puVar10[6] = param_4[6]; + if ((((uVar4 != 7) && (puVar10[7] = param_4[7], uVar4 != 8)) && + ((puVar10[8] = param_4[8], uVar4 != 9 && + (((puVar10[9] = param_4[9], uVar4 != 10 && + (puVar10[10] = param_4[10], uVar4 != 0xb)) && + (puVar10[0xb] = param_4[0xb], uVar4 != 0xc)))))) && + (puVar10[0xc] = param_4[0xc], uVar4 != 0xd)) { + puVar10[0xd] = param_4[0xd]; + if (uVar4 == 0xf) { + puVar10[0xe] = param_4[0xe]; + } + else { + uVar11 = 0xe; + } + } + } + } + uVar14 = (ulong)uVar4; + if (0xe < uVar9) { +LAB_001a6950: + uVar18 = 0; + puVar13 = (undefined8 *)(param_4 + uVar14); + puVar22 = (undefined8 *)(puVar10 + uVar14); + do { + uVar32 = *puVar13; + uVar18 = uVar18 + 1; + puVar22[1] = puVar13[1]; + *puVar22 = uVar32; + puVar13 = puVar13 + 2; + puVar22 = puVar22 + 2; + } while (uVar18 < uVar2); + uVar11 = uVar11 + iVar28; + if (iVar28 == local_70 - uVar4) goto LAB_001a6ae4; + } + iVar29 = uVar11 + 1; + puVar10[(int)uVar11] = param_4[(int)uVar11]; + if ((int)local_70 <= iVar29) goto LAB_001a6ae4; + } + iVar6 = iVar29 + 1; + puVar10[iVar29] = param_4[iVar29]; + if (iVar6 < (int)local_70) { + iVar7 = iVar29 + 2; + puVar10[iVar6] = param_4[iVar6]; + if (iVar7 < (int)local_70) { + iVar6 = iVar29 + 3; + puVar10[iVar7] = param_4[iVar7]; + if (iVar6 < (int)local_70) { + iVar7 = iVar29 + 4; + puVar10[iVar6] = param_4[iVar6]; + if (iVar7 < (int)local_70) { + iVar6 = iVar29 + 5; + puVar10[iVar7] = param_4[iVar7]; + if (iVar6 < (int)local_70) { + iVar7 = iVar29 + 6; + puVar10[iVar6] = param_4[iVar6]; + if (iVar7 < (int)local_70) { + iVar6 = iVar29 + 7; + puVar10[iVar7] = param_4[iVar7]; + if (iVar6 < (int)local_70) { + iVar7 = iVar29 + 8; + puVar10[iVar6] = param_4[iVar6]; + if (iVar7 < (int)local_70) { + iVar6 = iVar29 + 9; + puVar10[iVar7] = param_4[iVar7]; + if (iVar6 < (int)local_70) { + iVar7 = iVar29 + 10; + puVar10[iVar6] = param_4[iVar6]; + if (iVar7 < (int)local_70) { + iVar6 = iVar29 + 0xb; + puVar10[iVar7] = param_4[iVar7]; + if (iVar6 < (int)local_70) { + iVar7 = iVar29 + 0xc; + puVar10[iVar6] = param_4[iVar6]; + if (iVar7 < (int)local_70) { + iVar29 = iVar29 + 0xd; + puVar10[iVar7] = param_4[iVar7]; + if (iVar29 < (int)local_70) { + puVar10[iVar29] = param_4[iVar29]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a6ae4: + puVar10 = puVar10 + (int)local_70; + } while (puVar10 <= puVar1); + lVar19 = *(long *)(param_1 + 0x50); + } + } + } + iVar20 = iVar20 + 1; + lVar17 = lVar17 + lVar19; + iVar29 = local_28[lVar23 * 5 + 1]; + local_28[lVar25 * 5] = local_28[lVar25 * 5 + 1] + iVar31; + local_28[lVar23 * 5] = iVar33 + iVar29; + } while (iVar20 <= (int)uVar3); + } + return; + } + iVar29 = 0; + local_6c = 0; + piVar24 = param_2; + local_38 = param_2[(long)(int)param_3 * 2 + -2] << (ulong)(uVar8 & 0x1f); + local_34 = param_2[(long)(int)param_3 * 2 + -1] << (ulong)(uVar8 & 0x1f); + do { + iVar6 = piVar24[1]; + iVar7 = *piVar24; + if (iVar6 < iVar33) { + iVar33 = iVar6; + local_6c = iVar29; + } + if (iVar30 < iVar6) { + iVar30 = iVar6; + } + if (iVar28 < iVar7) { + iVar28 = iVar7; + } + if (iVar7 < iVar31) { + iVar31 = iVar7; + } + iVar7 = iVar7 << (ulong)(uVar8 & 0x1f); + iVar6 = iVar6 << (ulong)(uVar8 & 0x1f); + if (param_5 < 9) { + if (param_6 == 0) { + local_40 = local_38 >> 0x10; + local_3c = local_34 >> 0x10; + local_38 = iVar7 >> 0x10; + local_34 = iVar6 >> 0x10; + iVar21 = 8; + if ((param_5 != 0) && (iVar21 = param_5, param_5 == 1)) { + iVar21 = 4; + } + cv::LineIterator::LineIterator + ((LineIterator *)&local_30,param_1,&local_40,&local_38,iVar21,1); + iVar21 = local_14; + if (*(int *)(param_1 + 4) < 1) { + if (0 < local_14) { + __n = 0; +LAB_001a65b4: + iVar12 = 0; + do { + iVar12 = iVar12 + 1; + memcpy(local_30,param_4,__n); + uVar2 = local_18 >> 0x1f; + local_18 = local_18 + (uVar2 & local_c) + local_10; + local_30 = local_30 + (int)((uVar2 & local_4) + local_8); + } while (iVar12 != iVar21); + } + } + else { + iVar12 = (int)*(undefined8 *) + (*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + __n = (size_t)iVar12; + if (0 < local_14) { + if (iVar12 == 1) { + iVar21 = 0; + do { + iVar21 = iVar21 + 1; + *local_30 = *param_4; + uVar2 = local_18 >> 0x1f; + local_18 = local_18 + (uVar2 & local_c) + local_10; + local_30 = local_30 + (int)((uVar2 & local_4) + local_8); + } while (iVar21 != local_14); + } + else { + if (iVar12 != 3) goto LAB_001a65b4; + iVar21 = 0; + do { + iVar21 = iVar21 + 1; + *local_30 = *param_4; + local_30[1] = param_4[1]; + local_30[2] = param_4[2]; + uVar2 = local_18 >> 0x1f; + local_18 = local_18 + (uVar2 & local_c) + local_10; + local_30 = local_30 + (int)((uVar2 & local_4) + local_8); + } while (iVar21 != local_14); + } + } + } + } + else { + local_30 = (undefined1 *)CONCAT44(iVar6,iVar7); + FUN_001a3bb8(param_1,&local_38,(LineIterator *)&local_30,param_4); + } + } + else { + local_30 = (undefined1 *)CONCAT44(iVar6,iVar7); + FUN_001a5090(param_1,&local_38,(LineIterator *)&local_30,param_4); + } + if (iVar29 + 1U == param_3) goto LAB_001a667c; + iVar29 = iVar29 + 1; + piVar24 = piVar24 + 2; + local_38 = iVar7; + local_34 = iVar6; + } while( true ); +} + + +================================================================== + +### FUNC 001a6dec (1660 bytes) name=FUN_001a6dec + +void FUN_001a6dec(long param_1,int *param_2,int param_3,undefined8 *param_4,undefined1 *param_5, + int param_6,uint param_7,int *param_8) + +{ + int *piVar1; + uint uVar2; + undefined8 uVar3; + int iVar4; + int iVar5; + int iVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int iVar10; + undefined8 *puVar11; + ulong uVar12; + int iVar13; + long lVar14; + undefined8 *puVar15; + undefined8 *puVar16; + ulong uVar17; + int iVar18; + int iVar19; + int iVar20; + ulong uVar21; + undefined8 *puVar22; + int iVar23; + long lVar24; + int local_40; + int local_3c; + int local_38; + int local_34; + undefined8 local_30; + int local_18; + int local_14; + int local_10; + uint local_c; + int local_8; + uint local_4; + + iVar4 = param_8[1]; + iVar13 = 0; + if (param_7 != 0) { + iVar13 = 1 << (ulong)(param_7 - 1 & 0x1f); + } + puVar16 = (undefined8 *)*param_4; + puVar22 = (undefined8 *)param_4[1]; + lVar24 = (long)puVar22 - (long)puVar16; + iVar18 = *param_8; + iVar5 = param_2[(long)param_3 * 2 + -2]; + uVar17 = (long)param_3 + (lVar24 >> 3) * -0x5555555555555555; + iVar20 = param_2[(long)param_3 * 2 + -1]; + if (0xaaaaaaaaaaaaaaa < uVar17) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::reserve"); + } + if ((ulong)((param_4[2] - (long)puVar16 >> 3) * -0x5555555555555555) < uVar17) { + if (uVar17 == 0) { + uVar17 = 0; + puVar11 = (undefined8 *)0x0; + puVar7 = puVar11; + puVar15 = puVar16; + } + else { + uVar17 = uVar17 * 0x18; + puVar11 = operator_new(uVar17); + puVar7 = puVar11; + puVar15 = (undefined8 *)*param_4; + } + for (; puVar16 != puVar22; puVar16 = puVar16 + 3) { + if (puVar11 != (undefined8 *)0x0) { + uVar3 = puVar16[1]; + *puVar11 = *puVar16; + puVar11[1] = uVar3; + puVar11[2] = puVar16[2]; + } + puVar11 = puVar11 + 3; + } + if (puVar15 != (undefined8 *)0x0) { + operator_delete(puVar15); + } + *param_4 = puVar7; + param_4[1] = (long)puVar7 + lVar24; + param_4[2] = (long)puVar7 + uVar17; + } + if (0 < param_3) { + piVar1 = param_2 + ((ulong)(param_3 - 1) + 1) * 2; + iVar18 = iVar18 + iVar5 << (ulong)(0x10 - param_7 & 0x1f); + iVar20 = iVar4 + iVar13 + iVar20 >> (param_7 & 0x1f); + do { + iVar6 = *param_2 + *param_8 << (ulong)(0x10 - param_7 & 0x1f); + iVar5 = iVar4 + iVar13 + param_2[1] >> (param_7 & 0x1f); + if (param_6 < 0x10) { + local_38 = iVar6 + 0x8000 >> 0x10; + local_40 = iVar18 + 0x8000 >> 0x10; + iVar19 = 8; + if ((param_6 != 0) && (iVar19 = param_6, param_6 == 1)) { + iVar19 = 4; + } + local_3c = iVar20; + local_34 = iVar5; + cv::LineIterator::LineIterator + ((LineIterator *)&local_30,param_1,&local_40,&local_38,iVar19,1); + iVar19 = local_14; + if (*(int *)(param_1 + 4) < 1) { + if (0 < local_14) { + iVar10 = 0; +LAB_001a6fe0: + iVar23 = 0; + do { + iVar23 = iVar23 + 1; + memcpy(local_30,param_5,(long)iVar10); + uVar2 = local_18 >> 0x1f; + local_18 = local_18 + (uVar2 & local_c) + local_10; + local_30 = local_30 + (int)((uVar2 & local_4) + local_8); + } while (iVar23 != iVar19); + } + } + else { + iVar10 = (int)*(undefined8 *) + (*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + if (0 < local_14) { + if (iVar10 == 1) { + iVar19 = 0; + do { + iVar19 = iVar19 + 1; + *local_30 = *param_5; + uVar2 = local_18 >> 0x1f; + local_18 = local_18 + (uVar2 & local_c) + local_10; + local_30 = local_30 + (int)((uVar2 & local_4) + local_8); + } while (iVar19 != local_14); + } + else { + if (iVar10 != 3) goto LAB_001a6fe0; + iVar19 = 0; + do { + iVar19 = iVar19 + 1; + *local_30 = *param_5; + local_30[1] = param_5[1]; + local_30[2] = param_5[2]; + uVar2 = local_18 >> 0x1f; + local_18 = local_18 + (uVar2 & local_c) + local_10; + local_30 = local_30 + (int)((uVar2 & local_4) + local_8); + } while (iVar19 != local_14); + } + } + } + } + else { + local_34 = iVar20 << 0x10; + local_30 = (undefined1 *)CONCAT44(iVar5 << 0x10,iVar6); + local_38 = iVar18; + FUN_001a5090(param_1,&local_38,(LineIterator *)&local_30,param_5); + } + if (iVar5 != iVar20) { + if (iVar20 < iVar5) { + puVar16 = (undefined8 *)param_4[1]; + iVar19 = 0; + if (iVar5 - iVar20 != 0) { + iVar19 = (iVar6 - iVar18) / (iVar5 - iVar20); + } + iVar23 = iVar20; + iVar10 = iVar5; + if (puVar16 == (undefined8 *)param_4[2]) { +LAB_001a7144: + puVar22 = (undefined8 *)*param_4; + lVar14 = (long)puVar16 - (long)puVar22; + lVar24 = lVar14 >> 3; + uVar17 = lVar24 * -0x5555555555555555; + if (uVar17 == 0) { + uVar21 = 0x18; +LAB_001a740c: + puVar7 = operator_new(uVar21); + puVar15 = (undefined8 *)param_4[1]; + puVar11 = puVar7 + 3; + puVar22 = (undefined8 *)*param_4; + } + else { + uVar12 = lVar24 * 0x5555555555555556; + uVar21 = 0xfffffffffffffff0; + if ((uVar12 <= uVar17 && uVar17 != 0) || (0xaaaaaaaaaaaaaaa < uVar12)) + goto LAB_001a740c; + uVar21 = lVar24 * 0x10; + puVar11 = (undefined8 *)0x18; + puVar7 = (undefined8 *)0x0; + puVar15 = puVar16; + if (uVar12 != 0) goto LAB_001a740c; + } + puVar9 = (undefined8 *)((long)puVar7 + lVar14); + if (puVar9 != (undefined8 *)0x0) { + puVar9[2] = 0; + puVar9[1] = CONCAT44(iVar19,iVar18); + *puVar9 = CONCAT44(iVar10,iVar20); + } + puVar8 = puVar7; + puVar9 = puVar22; + if (puVar16 != puVar22) { + do { + if (puVar8 != (undefined8 *)0x0) { + uVar3 = puVar9[1]; + *puVar8 = *puVar9; + puVar8[1] = uVar3; + puVar8[2] = puVar9[2]; + } + puVar9 = puVar9 + 3; + puVar8 = puVar8 + 3; + } while (puVar16 != puVar9); + puVar11 = puVar7 + ((((ulong)((long)puVar16 - (long)(puVar22 + 3)) >> 3) * + 0xaaaaaaaaaaaaaab & 0x1fffffffffffffff) + 1) * 3 + 3; + } + puVar9 = puVar16; + puVar8 = puVar11; + if (puVar16 != puVar15) { + do { + if (puVar8 != (undefined8 *)0x0) { + uVar3 = puVar9[1]; + *puVar8 = *puVar9; + puVar8[1] = uVar3; + puVar8[2] = puVar9[2]; + } + puVar9 = puVar9 + 3; + puVar8 = puVar8 + 3; + } while (puVar9 != puVar15); + puVar11 = puVar11 + ((((ulong)((long)puVar9 - (long)(puVar16 + 3)) >> 3) * + 0xaaaaaaaaaaaaaab & 0x1fffffffffffffff) + 1) * 3; + } + if (puVar22 != (undefined8 *)0x0) { + operator_delete(puVar22); + } + *param_4 = puVar7; + param_4[1] = puVar11; + param_4[2] = (long)puVar7 + uVar21; + goto LAB_001a70a0; + } + } + else { + puVar16 = (undefined8 *)param_4[1]; + iVar19 = 0; + if (iVar5 - iVar20 != 0) { + iVar19 = (iVar6 - iVar18) / (iVar5 - iVar20); + } + iVar23 = iVar5; + iVar10 = iVar20; + iVar18 = iVar6; + iVar20 = iVar5; + if (puVar16 == (undefined8 *)param_4[2]) goto LAB_001a7144; + } + if (puVar16 != (undefined8 *)0x0) { + puVar16[2] = 0; + puVar16[1] = CONCAT44(iVar19,iVar18); + *puVar16 = CONCAT44(iVar10,iVar23); + } + param_4[1] = puVar16 + 3; + } +LAB_001a70a0: + param_2 = param_2 + 2; + iVar18 = iVar6; + iVar20 = iVar5; + } while (param_2 != piVar1); + } + return; +} + + +================================================================== + +### FUNC 001a7468 (1304 bytes) name=ellipse2Poly + +/* cv::ellipse2Poly(cv::Point_, cv::Size_, int, int, int, int, + std::vector, std::allocator > >&) */ + +void cv::ellipse2Poly(int *param_1,int *param_2,int param_3,int param_4,int param_5,int param_6, + long *param_7) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + int *piVar8; + undefined8 *puVar9; + int iVar10; + undefined8 *puVar11; + undefined8 *puVar12; + void *pvVar13; + ulong uVar14; + ulong uVar15; + int *piVar16; + ulong uVar17; + int *piVar18; + int iVar19; + int *piVar20; + int iVar21; + int iVar22; + int iVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + + iVar1 = *param_2; + iVar2 = param_2[1]; + iVar3 = *param_1; + iVar4 = param_1[1]; + if (param_3 < 0) { + do { + param_3 = param_3 + 0x168; + } while (param_3 < 0); + } + else { + for (; 0x168 < param_3; param_3 = param_3 + -0x168) { + } + } + iVar19 = param_4; + iVar21 = param_5; + iVar5 = param_5; + if (param_5 < param_4) { + iVar19 = param_5; + iVar21 = param_4; + iVar5 = param_4; + param_4 = param_5; + } + while (iVar23 = iVar19, iVar10 = iVar21, iVar19 < 0) { + iVar19 = iVar19 + 0x168; + iVar21 = (iVar5 + iVar19) - param_4; + } + while (0x168 < iVar10) { + iVar23 = (iVar19 + iVar10 + -0x168) - iVar21; + iVar10 = iVar10 + -0x168; + } + if (0x168 < iVar10 - iVar23) { + iVar10 = 0x168; + iVar23 = 0; + } + fVar25 = *(float *)(&DAT_00440140 + (long)param_3 * 4); + fVar26 = *(float *)(&DAT_00440140 + (long)(0x1c2 - param_3) * 4); + if (param_7[1] - *param_7 >> 3 != 0) { + param_7[1] = *param_7; + } + if (iVar23 < iVar10 + param_6) { + iVar19 = -0x80000000; + iVar21 = -0x80000000; + do { + iVar5 = iVar23; + if (iVar10 < iVar23) { + iVar5 = iVar10; + } + iVar22 = iVar5 + 0x168; + if (-1 < iVar5) { + iVar22 = iVar5; + } + fVar27 = *(float *)(&DAT_00440140 + (long)iVar22 * 4); + fVar24 = *(float *)(&DAT_00440140 + (long)(0x1c2 - iVar22) * 4); + lVar6 = lrint(((double)iVar3 + (double)fVar26 * (double)fVar24 * (double)iVar1) - + (double)fVar25 * (double)fVar27 * (double)iVar2); + lVar7 = lrint((double)iVar4 + (double)fVar25 * (double)fVar24 * (double)iVar1 + + (double)fVar26 * (double)fVar27 * (double)iVar2); + iVar22 = (int)lVar6; + iVar5 = (int)lVar7; + if ((iVar19 != iVar22) || (iVar21 != iVar5)) { + piVar20 = (int *)param_7[1]; + iVar19 = iVar22; + iVar21 = iVar5; + if (piVar20 == (int *)param_7[2]) { + piVar8 = (int *)*param_7; + lVar6 = (long)piVar20 - (long)piVar8; + uVar15 = lVar6 >> 3; + if (uVar15 == 0) { + lVar7 = 8; + uVar14 = 1; +LAB_001a78c4: + puVar9 = (undefined8 *)FUN_001a1810(uVar14); + piVar18 = (int *)param_7[1]; + puVar11 = puVar9 + 1; + piVar8 = (int *)*param_7; + } + else { + uVar17 = uVar15 * 2; + lVar7 = -8; + uVar14 = 0x1fffffffffffffff; + if (((uVar17 < uVar15) || (0x1fffffffffffffff < uVar17)) || + (lVar7 = uVar15 << 4, uVar14 = uVar17, uVar17 != 0)) goto LAB_001a78c4; + puVar11 = (undefined8 *)0x8; + puVar9 = (undefined8 *)0x0; + piVar18 = piVar20; + } + if ((long)puVar9 + lVar6 != 0) { + *(int *)((long)puVar9 + lVar6) = iVar22; + *(int *)((long)puVar9 + lVar6 + 4) = iVar5; + } + puVar12 = puVar9; + piVar16 = piVar8; + if (piVar20 != piVar8) { + do { + if (puVar12 != (undefined8 *)0x0) { + *puVar12 = *(undefined8 *)piVar16; + } + piVar16 = piVar16 + 2; + puVar12 = puVar12 + 1; + } while (piVar20 != piVar16); + puVar11 = (undefined8 *) + ((long)puVar9 + + ((long)piVar20 - (long)(piVar8 + 2) & 0xfffffffffffffff8U) + 0x10); + } + puVar12 = puVar11; + piVar16 = piVar20; + if (piVar18 != piVar20) { + do { + if (puVar12 != (undefined8 *)0x0) { + *puVar12 = *(undefined8 *)piVar16; + } + piVar16 = piVar16 + 2; + puVar12 = puVar12 + 1; + } while (piVar18 != piVar16); + puVar11 = (undefined8 *) + ((long)puVar11 + + ((long)piVar18 - (long)(piVar20 + 2) & 0xfffffffffffffff8U) + 8); + } + if (piVar8 != (int *)0x0) { + operator_delete(piVar8); + } + *param_7 = (long)puVar9; + param_7[1] = (long)puVar11; + param_7[2] = (long)puVar9 + lVar7; + } + else { + if (piVar20 != (int *)0x0) { + *piVar20 = iVar22; + piVar20[1] = iVar5; + } + param_7[1] = (long)(piVar20 + 2); + } + } + iVar23 = iVar23 + param_6; + } while (iVar23 < iVar10 + param_6); + piVar20 = (int *)*param_7; + piVar8 = (int *)param_7[1]; + if ((long)piVar8 - (long)piVar20 >> 3 == 1) { + if ((ulong)(param_7[2] - (long)piVar20) < 0x10) { + piVar20 = operator_new(0x10); + iVar1 = *param_1; + piVar20[1] = param_1[1]; + *piVar20 = iVar1; + if (piVar20 + 2 != (int *)0x0) { + *(undefined8 *)(piVar20 + 2) = *(undefined8 *)param_1; + } + pvVar13 = (void *)*param_7; + param_7[1] = (long)(piVar20 + 4); + *param_7 = (long)piVar20; + param_7[2] = (long)(piVar20 + 4); + if (pvVar13 != (void *)0x0) { + operator_delete(pvVar13); + return; + } + } + else { + piVar18 = piVar8; + if (piVar20 != piVar8) { + piVar16 = piVar20 + 2; + uVar14 = (ulong)((long)piVar8 - (long)piVar16) >> 3; + uVar15 = uVar14 + 1; + piVar18 = piVar20 + uVar15 * 2; + if ((param_1 < piVar18 && piVar20 < param_1 + 2) || (uVar15 < 7)) { + do { + *(undefined8 *)piVar20 = *(undefined8 *)param_1; + piVar20 = piVar16 + 2; + if (piVar16 == piVar8) break; + *(undefined8 *)piVar16 = *(undefined8 *)param_1; + piVar16 = piVar16 + 4; + } while (piVar20 != piVar8); + } + else { + iVar1 = param_1[1]; + iVar2 = *param_1; + uVar14 = (uVar14 - 3 >> 2) + 1; + uVar17 = 0; + piVar16 = piVar20; + do { + uVar17 = uVar17 + 1; + *piVar16 = iVar2; + piVar16[1] = iVar1; + piVar16[2] = iVar2; + piVar16[3] = iVar1; + piVar16[4] = iVar2; + piVar16[5] = iVar1; + piVar16[6] = iVar2; + piVar16[7] = iVar1; + piVar16 = piVar16 + 8; + } while (uVar17 < uVar14); + piVar20 = piVar20 + uVar14 * 8; + if (uVar14 * 4 - uVar15 != 0) { + *(undefined8 *)piVar20 = *(undefined8 *)param_1; + if (piVar8 != piVar20 + 2) { + *(undefined8 *)(piVar20 + 2) = *(undefined8 *)param_1; + if (piVar8 != piVar20 + 4) { + *(undefined8 *)(piVar20 + 4) = *(undefined8 *)param_1; + } + } + } + } + } + if (piVar18 != (int *)0x0) { + *(undefined8 *)piVar18 = *(undefined8 *)param_1; + } + param_7[1] = (long)(piVar8 + 2); + } + } + } + return; +} + + +================================================================== + +### FUNC 001a7980 (300 bytes) name=fillConvexPoly + +/* cv::fillConvexPoly(cv::Mat&, cv::Point_ const*, int, cv::Scalar_ const&, int, int) + */ + +void cv::fillConvexPoly(Mat *param_1,Point_ *param_2,int param_3,Scalar_ *param_4,int param_5, + int param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + char *pcVar6; + undefined8 local_20; + undefined8 local_18; + + if ((param_2 != (Point_ *)0x0) && (0 < param_3)) { + if ((param_5 == 0x10) && ((*(uint *)param_1 & 7) != 0)) { + param_5 = 8; + } + if (0x10 < (uint)param_6) { + local_20 = 0; + local_18 = 0; + pcVar6 = (char *)String::allocate((String *)&local_20,0x1f); + cVar5 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0[0x1e]; + uVar4 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._28_2_; + uVar3 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._24_4_; + uVar2 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._8_8_; + uVar1 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._0_8_; + *(undefined8 *)(pcVar6 + 0x10) = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._16_8_; + *(undefined4 *)(pcVar6 + 0x18) = uVar3; + *(undefined2 *)(pcVar6 + 0x1c) = uVar4; + pcVar6[0x1e] = cVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + error(-0xd7,(String *)&local_20, + "void cv::fillConvexPoly(cv::Mat&, const Point*, int, const Scalar&, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x71f); + String::deallocate((String *)&local_20); + } + scalarToRawData(param_4,&local_20,*(uint *)param_1 & 0xfff,0); + FUN_001a63a4(param_1,param_2,param_3,&local_20,param_5,param_6); + } + return; +} + + +================================================================== + +### FUNC 001a7ac0 (928 bytes) name=getTextSize + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::getTextSize(cv::String const&, int, double, int, int*) */ + +void __thiscall +cv::getTextSize(cv *this,String *param_1,int param_2,double param_3,int param_4,int *param_5) + +{ + uint uVar1; + char cVar2; + ulong uVar3; + undefined8 uVar4; + undefined8 uVar5; + code *pcVar6; + undefined8 *puVar7; + long lVar8; + char *pcVar9; + uint uVar10; + byte bVar11; + uint uVar12; + int iVar13; + int iVar14; + int iVar15; + undefined4 *in_x8; + uint *puVar16; + double dVar17; + undefined8 local_10; + undefined8 local_8; + + *in_x8 = 0; + in_x8[1] = 0; + uVar3 = (ulong)param_1 >> 4; + switch((uint)param_1 & 0xf) { + case 0: + puVar16 = &DAT_0043fca0; + break; + case 1: + if ((uVar3 & 1) == 0) { + puVar16 = (uint *)&LAB_0043e620; + } + else { + puVar16 = &DAT_0043e800; + } + break; + case 2: + puVar16 = &DAT_004408c0; + break; + case 3: + if ((uVar3 & 1) == 0) { + puVar16 = &DAT_00440a40; + } + else { + puVar16 = &DAT_0043ee90; + } + break; + case 4: + if ((uVar3 & 1) == 0) { + puVar16 = &DAT_0043f290; + } + else { + puVar16 = &DAT_0043eb20; + } + break; + case 5: + if ((uVar3 & 1) == 0) { + puVar16 = &DAT_0043fa20; + } + else { + puVar16 = &DAT_0043fe20; + } + break; + case 6: + puVar16 = &DAT_0043ed10; + break; + case 7: + puVar16 = &DAT_0043f060; + break; + default: + local_10 = 0; + local_8 = 0; + puVar7 = (undefined8 *)String::allocate((String *)&local_10,0x11); + uVar5 = DAT_0043f4f8; + uVar4 = _LAB_0043f4f0; + *(undefined1 *)(puVar7 + 2) = DAT_0043f500; + *puVar7 = uVar4; + puVar7[1] = uVar5; + error(-0xd3,(String *)&local_10,"const int* cv::getFontData(int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x7f5); + String::deallocate((String *)&local_10); + /* WARNING: Does not return */ + pcVar6 = (code *)SoftwareBreakpoint(1000,0x1a7b64); + (*pcVar6)(); + } + uVar1 = *puVar16 & 0xf; + lVar8 = lrint((double)((param_2 + 1) / 2) + param_3 * (double)((*puVar16 >> 4 & 0xf) + uVar1)); + pcVar9 = *(char **)this; + in_x8[1] = (int)lVar8; + uVar12 = (uint)*pcVar9; + dVar17 = 0.0; + if (*pcVar9 != '\0') { + iVar15 = 0; + do { + uVar10 = uVar12 & 0xff; + if ((uVar12 >> 7 & 1) == 0) { + iVar13 = 0x20; + iVar14 = iVar15; + if ((uVar12 & 0xff) < 0x7f) goto LAB_001a7c38; +LAB_001a7bf0: + iVar14 = iVar15 + 1; + lVar8 = 0x80; + uVar12 = (uint)pcVar9[iVar14]; + } + else { + if ((uint)param_1 != 3) goto LAB_001a7bf0; + if (uVar10 == 0xd0) { + iVar14 = iVar15 + 1; + bVar11 = pcVar9[iVar14]; + if (0x2f < (bVar11 + 0x70 & 0xff)) { +LAB_001a7dd8: + iVar14 = iVar15 + 1; + if (bVar11 != 0) { +LAB_001a7e1c: + iVar14 = iVar14 + 1; + cVar2 = pcVar9[iVar14]; + goto LAB_001a7d2c; + } + uVar12 = 0; + if (uVar10 < 0xf0) goto LAB_001a7d40; + goto LAB_001a7d54; + } + uVar10 = bVar11 - 0x11; + iVar13 = 0x7f; +LAB_001a7c38: + iVar14 = iVar14 + 1; + uVar12 = (uint)pcVar9[iVar14]; + if ((int)uVar10 < iVar13) { + lVar8 = 0x80; + } + else { +LAB_001a7cec: + lVar8 = (long)(int)uVar10 * 4 + -0x7c; + } + } + else { + if (uVar10 == 0xd1) { + iVar14 = iVar15 + 1; + bVar11 = pcVar9[iVar14]; + if (-1 < (char)bVar11) goto LAB_001a7dd8; + if (0x8f < bVar11) goto LAB_001a7e1c; + uVar10 = bVar11 + 0x2f; + iVar13 = 0xaf; + goto LAB_001a7c38; + } + if ((0xbf < uVar10) && (iVar14 = iVar15 + 1, iVar15 = iVar14, pcVar9[iVar14] == '\0')) { + uVar12 = 0; + if (uVar10 < 0xf0) { +LAB_001a7cd0: + uVar12 = 0; + if (uVar10 < 0xf8) goto LAB_001a7d54; + uVar12 = 0; + } +LAB_001a7cdc: + if (0xfb < uVar10) { +LAB_001a7ce4: + uVar12 = 0; + } +LAB_001a7ce8: + uVar10 = 0x3f; + goto LAB_001a7cec; + } + iVar14 = iVar15; + if (uVar10 < 0xe0) goto LAB_001a7e1c; + iVar14 = iVar15 + 1; + if (pcVar9[iVar14] == '\0') goto LAB_001a7cd0; + iVar14 = iVar15 + 2; + cVar2 = pcVar9[iVar14]; +LAB_001a7d2c: + uVar12 = (uint)cVar2; + if (0xef < uVar10) { + if (uVar12 == 0) goto LAB_001a7cdc; + iVar14 = iVar14 + 1; + uVar12 = (uint)pcVar9[iVar14]; + } +LAB_001a7d40: + if (0xf7 < uVar10) { + if (uVar12 == 0) goto LAB_001a7cdc; + iVar14 = iVar14 + 1; + uVar12 = (uint)pcVar9[iVar14]; + } +LAB_001a7d54: + if (uVar10 < 0xfc) goto LAB_001a7ce8; + if (uVar12 == 0) goto LAB_001a7ce4; + iVar14 = iVar14 + 1; + lVar8 = 0x80; + uVar12 = (uint)pcVar9[iVar14]; + } + } + dVar17 = dVar17 + param_3 * (double)(int)((uint)(*(byte **)(PTR_PTR_00501bf0 + + (long)*(int *)((long)puVar16 + + lVar8) * 8))[1] - + (uint)**(byte **)(PTR_PTR_00501bf0 + + (long)*(int *)((long)puVar16 + lVar8 + ) * 8)); + iVar15 = iVar14; + } while (uVar12 != 0); + } + lVar8 = lrint((double)param_2 + dVar17); + *in_x8 = (int)lVar8; + if ((undefined4 *)(ulong)(uint)param_4 != (undefined4 *)0x0) { + lVar8 = lrint((double)param_2 * 0.5 + param_3 * (double)uVar1); + *(undefined4 *)(ulong)(uint)param_4 = (int)lVar8; + } + return; +} + + +================================================================== + +### FUNC 001a7e74 (960 bytes) name=fillConvexPoly + +/* cv::fillConvexPoly(cv::_InputOutputArray const&, cv::_InputArray const&, cv::Scalar_ + const&, int, int) */ + +void cv::fillConvexPoly(_InputOutputArray *param_1,_InputArray *param_2,Scalar_ *param_3,int param_4 + ,int param_5) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + int iVar7; + char *pcVar8; + Mat *pMVar9; + int *piVar10; + undefined4 *puVar11; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + Point_ *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar7 = _InputArray::kind((_InputArray *)param_1); + if (iVar7 == 0x10000) { + pMVar9 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar9; + local_bc = *(int *)(pMVar9 + 4); + local_b8 = *(undefined4 *)(pMVar9 + 8); + local_b4 = *(undefined4 *)(pMVar9 + 0xc); + local_b0 = *(undefined8 *)(pMVar9 + 0x10); + local_a8 = *(undefined8 *)(pMVar9 + 0x18); + local_a0 = *(undefined8 *)(pMVar9 + 0x20); + local_98 = *(undefined8 *)(pMVar9 + 0x28); + local_90 = *(undefined8 *)(pMVar9 + 0x30); + local_88 = *(long *)(pMVar9 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar9 + 0x48); + local_68 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar7 = _InputArray::kind(param_2); + if (iVar7 == 0x10000) { + pMVar9 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar9; + local_5c = *(int *)(pMVar9 + 4); + local_58 = *(int *)(pMVar9 + 8); + local_54 = *(int *)(pMVar9 + 0xc); + local_50 = *(Point_ **)(pMVar9 + 0x10); + local_48 = *(undefined8 *)(pMVar9 + 0x18); + local_40 = *(undefined8 *)(pMVar9 + 0x20); + local_38 = *(undefined8 *)(pMVar9 + 0x28); + local_30 = *(undefined8 *)(pMVar9 + 0x30); + local_28 = *(long *)(pMVar9 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar9 + 0x48); + local_8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iVar7 = Mat::checkVector((Mat *)&local_60,2,4,true); + if (iVar7 < 0) { + local_d0 = 0; + local_c8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_d0,0x22); + uVar6 = s_points_checkVector_2__CV_32S__>__0043f508._24_8_; + uVar5 = s_points_checkVector_2__CV_32S__>__0043f508._16_8_; + uVar4 = s_points_checkVector_2__CV_32S__>__0043f508._8_8_; + uVar3 = s_points_checkVector_2__CV_32S__>__0043f508._0_8_; + *(undefined2 *)(pcVar8 + 0x20) = s_points_checkVector_2__CV_32S__>__0043f508._32_2_; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + error(-0xd7,(String *)&local_d0, + "void cv::fillConvexPoly(cv::InputOutputArray, cv::InputArray, const Scalar&, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x88b); + String::deallocate((String *)&local_d0); + } + fillConvexPoly((Mat *)&local_c0,local_50, + (int)(local_58 * local_54 + (local_60 >> 3 & 0x1ff) * local_58 * local_54) / 2, + param_3,param_4,param_5); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar7 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (Point_ *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + piVar10 = local_20; + do { + *piVar10 = 0; + iVar7 = iVar7 + 1; + piVar10 = piVar10 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar7 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + puVar11 = local_80; + do { + *puVar11 = 0; + iVar7 = iVar7 + 1; + puVar11 = puVar11 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 001a8298 (176 bytes) name=cvClipLine + +undefined1 cvClipLine(undefined8 param_1,long param_2,long param_3) + +{ + undefined2 uVar1; + undefined1 uVar2; + undefined8 *puVar3; + undefined8 local_10; + undefined8 local_8; + + if ((param_2 == 0) || (param_3 == 0)) { + local_10 = 0; + local_8 = 0; + puVar3 = (undefined8 *)cv::String::allocate((String *)&local_10,10); + uVar1 = DAT_0043f538; + *puVar3 = DAT_0043f530; + *(undefined2 *)(puVar3 + 1) = uVar1; + cv::error(-0xd7,(String *)&local_10,"int cvClipLine(CvSize, CvPoint*, CvPoint*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x9b5); + cv::String::deallocate((String *)&local_10); + } + local_10 = param_1; + uVar2 = cv::clipLine((String *)&local_10,param_2,param_3); + return uVar2; +} + + +================================================================== + +### FUNC 001a835c (136 bytes) name=cvEllipse2Poly + +long cvEllipse2Poly(undefined8 param_1,undefined8 param_2) + +{ + void *pvVar1; + void *in_x5; + size_t __n; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + void *local_18; + long local_10; + undefined8 local_8; + + local_18 = (void *)0x0; + local_10 = 0; + local_8 = 0; + local_28 = (undefined4)param_1; + local_24 = (undefined4)((ulong)param_1 >> 0x20); + local_20 = (undefined4)param_2; + local_1c = (undefined4)((ulong)param_2 >> 0x20); + cv::ellipse2Poly(&local_28,&local_20); + pvVar1 = local_18; + __n = local_10 - (long)local_18; + memcpy(in_x5,local_18,__n); + operator_delete(pvVar1); + return (long)__n >> 3; +} + + +================================================================== + +### FUNC 001a8400 (372 bytes) name=cvColorToScalar + +undefined1 [16] cvColorToScalar(double param_1,ulong param_2) + +{ + uint uVar1; + ulong uVar2; + long lVar3; + undefined1 auVar4 [16]; + + if ((param_2 & 7) == 0) { + uVar2 = lrint(param_1); + uVar1 = (uint)uVar2; + if (((param_2 & 0xffffffff) >> 3 & 0x1ff) == 0) { + if (0xff < uVar1) { + uVar2 = (ulong)-(uint)(0 < (int)uVar1); + } + param_1 = (double)(uVar2 & 0xff); + } + else { + param_1 = (double)(uVar1 & 0xff); + } + } + else if (((uint)param_2 & 7) == 1) { + lVar3 = lrint(param_1); + if (((param_2 & 0xffffffff) >> 3 & 0x1ff) == 0) { + if ((int)lVar3 + 0x80U < 0x100) { + param_1 = (double)(int)(char)lVar3; + } + else { + param_1 = DAT_001a8578; + if (0 < (int)lVar3) { + param_1 = DAT_001a8580; + } + } + } + else { + param_1 = (double)(int)(char)lVar3; + } + } + auVar4._8_8_ = 0; + auVar4._0_8_ = param_1; + return auVar4; +} + + +================================================================== + +### FUNC 001a8588 (440 bytes) name=cvInitLineIterator + +undefined4 +cvInitLineIterator(cv *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4, + undefined4 param_5,AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined4 uVar4; + char *pcVar5; + int iVar6; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined8 local_90 [3]; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar6 = (int)param_6; + if (param_4 == (undefined8 *)0x0) { + local_60 = param_4; + local_58 = param_4; + pcVar5 = (char *)cv::String::allocate((String *)&local_60,0xd); + cVar2 = s_iterator____0_0043f540[0xc]; + uVar4 = s_iterator____0_0043f540._8_4_; + param_6 = (AutoBuffer *)(ulong)(byte)s_iterator____0_0043f540[0xc]; + *(undefined8 *)pcVar5 = s_iterator____0_0043f540._0_8_; + *(undefined4 *)(pcVar5 + 8) = uVar4; + pcVar5[0xc] = cVar2; + cv::error(-0xd7,(String *)&local_60, + "int cvInitLineIterator(const CvArr*, CvPoint, CvPoint, CvLineIterator*, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0xa09); + cv::String::deallocate((String *)&local_60); + } + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + local_a0 = (undefined4)param_2; + local_9c = (undefined4)((ulong)param_2 >> 0x20); + local_98 = (undefined4)param_3; + local_94 = (undefined4)((ulong)param_3 >> 0x20); + cv::LineIterator::LineIterator + ((LineIterator *)local_90,(Mat *)&local_60,&local_a0,&local_98,param_5,iVar6 != 0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + *(undefined4 *)(param_4 + 1) = local_78; + *(undefined4 *)(param_4 + 2) = local_70; + *(undefined4 *)((long)param_4 + 0xc) = local_6c; + *(undefined4 *)(param_4 + 3) = local_68; + *(undefined4 *)((long)param_4 + 0x14) = local_64; + *param_4 = local_90[0]; + return local_74; +} + + +================================================================== + +### FUNC 001a877c (288 bytes) name=cvFillConvexPoly + +void cvFillConvexPoly(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,Point_ *param_6,int param_7,int param_8,uint param_9) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,(AutoBuffer *)(ulong)param_9); + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::fillConvexPoly(aMStack_60,param_6,param_7,(Scalar_ *)&local_80,param_8,param_9); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001a88c4 (600 bytes) name=cvInitFont + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvInitFont(undefined8 param_1,double param_2,double param_3,double param_4,long param_5, + uint param_6,uint param_7,char *param_8,int *param_9,char param_10,char *param_11, + undefined2 param_12) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + char cVar6; + undefined8 *puVar7; + undefined4 *puVar8; + size_t __n; + void *__dest; + String *this; + String *pSVar9; + int iVar10; + char *pcVar11; + char *pcVar12; + undefined8 uVar13; + undefined8 extraout_x8; + undefined8 in_x9; + undefined8 extraout_x9; + String *this_00; + char *__s; + String *unaff_x23; + undefined8 uStack_18; + undefined8 local_10; + undefined8 local_8; + + this_00 = (String *)(ulong)param_6; + __s = (char *)(ulong)param_7; + if ((((uint)(0.0 < param_2) & (uint)(0.0 < param_3) & ~param_7 >> 0x1f) == 0) || + (pcVar12 = param_8, param_5 == 0)) { + unaff_x23 = (String *)&local_10; + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate(unaff_x23,0x37); + cVar6 = s_font____0____hscale_>_0____vscal_0043f550[0x36]; + uVar5 = s_font____0____hscale_>_0____vscal_0043f550._52_2_; + uVar13 = s_font____0____hscale_>_0____vscal_0043f550._40_8_; + param_11 = (char *)s_font____0____hscale_>_0____vscal_0043f550._32_8_; + uVar4 = s_font____0____hscale_>_0____vscal_0043f550._24_8_; + uVar3 = s_font____0____hscale_>_0____vscal_0043f550._16_8_; + uVar2 = s_font____0____hscale_>_0____vscal_0043f550._8_8_; + uVar1 = s_font____0____hscale_>_0____vscal_0043f550._0_8_; + pcVar12 = "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp"; + param_9 = (int *)0xa6e; + *(undefined4 *)(pcVar11 + 0x30) = s_font____0____hscale_>_0____vscal_0043f550._48_4_; + *(undefined2 *)(pcVar11 + 0x34) = uVar5; + pcVar11[0x36] = cVar6; + *(undefined8 *)pcVar11 = uVar1; + *(undefined8 *)(pcVar11 + 8) = uVar2; + *(undefined8 *)(pcVar11 + 0x10) = uVar3; + *(undefined8 *)(pcVar11 + 0x18) = uVar4; + *(char **)(pcVar11 + 0x20) = param_11; + *(undefined8 *)(pcVar11 + 0x28) = uVar13; + cv::error(-0xd7,unaff_x23,"void cvInitFont(CvFont*, int, double, double, double, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0xa6e); + param_10 = (char)pcVar11; + param_12 = (undefined2)uVar13; + cv::String::deallocate(unaff_x23); + param_1 = extraout_x8; + in_x9 = extraout_x9; + } + if (7 < (param_6 & 0xf)) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined8 *)cv::String::allocate((String *)&local_10,0x11); + uVar2 = DAT_0043f4f8; + uVar1 = _LAB_0043f4f0; + *(undefined1 *)(puVar7 + 2) = DAT_0043f500; + *puVar7 = uVar1; + puVar7[1] = uVar2; + cv::error(-0xd3,(String *)&local_10,"const int* cv::getFontData(int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x7f5); + cv::String::deallocate((String *)&local_10); + puVar8 = (undefined4 *)0x0; + goto LAB_001a898c; + } + pcVar11 = (char *)((ulong)(param_6 >> 4) & 1); + this = (String *) + ((long)(char)(&switchD_001a8a78::switchdataD_0043e518)[param_6 & 0xf] * 4 + 0x1a8a7c); + iVar10 = (int)pcVar11; + pSVar9 = (String *)0x1a8a7c; + switch(param_6 & 0xf) { + default: + puVar8 = &DAT_0043fca0; + break; + case 1: + if (iVar10 == 0) { + puVar8 = (undefined4 *)&LAB_0043e620; + } + else { + puVar8 = &DAT_0043e800; + } + break; + case 2: + puVar8 = &DAT_004408c0; + break; + case 3: + if (iVar10 == 0) { + puVar8 = &DAT_00440a40; + } + else { + puVar8 = &DAT_0043ee90; + } + break; + case 4: + if (iVar10 == 0) { + puVar8 = &DAT_0043f290; + } + else { + puVar8 = &DAT_0043eb20; + } + break; + case 5: + if (iVar10 == 0) { + puVar8 = &DAT_0043fa20; + } + else { + puVar8 = &DAT_0043fe20; + } + break; + case 6: + puVar8 = &DAT_0043ed10; + break; + case 7: + puVar8 = &DAT_0043f060; + break; + case 8: + goto LAB_001a8b78; + case 0xe: + local_8 = 0; + param_11 = (char *)cv::String::allocate(this,0x1a8a7c); + param_10 = s_text____0_____font____0_0043f588[0x16]; + param_12 = s_text____0_____font____0_0043f588._20_2_; + in_x9 = s_text____0_____font____0_0043f588._8_8_; + param_1 = s_text____0_____font____0_0043f588._0_8_; + this = (String *)0xffffff29; + pcVar11 = "void cvGetTextSize(const char*, const CvFont*, CvSize*, int*)"; + pcVar12 = "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp"; + param_9 = (int *)0xa7d; + *(undefined4 *)(param_11 + 0x10) = s_text____0_____font____0_0043f588._16_4_; + pSVar9 = this_00; + case 0xc: + *(undefined2 *)(param_11 + 0x14) = param_12; + param_11[0x16] = param_10; + *(undefined8 *)param_11 = param_1; + *(undefined8 *)(param_11 + 8) = in_x9; + cv::error((int)this,pSVar9,pcVar11,pcVar12,(int)param_9); + case 10: + cv::String::deallocate(this_00); + local_10 = 0; + local_8 = 0; + if (__s != (char *)0x0) { +LAB_001a8b78: + __n = strlen(__s); + __dest = (void *)cv::String::allocate(this_00,__n); + memcpy(__dest,__s,__n); + } + cv::getTextSize((cv *)this_00,(String *)(ulong)*(uint *)(param_5 + 0x28), + *(int *)(param_5 + 0x54), + (double)(*(float *)(param_5 + 0x48) + *(float *)(param_5 + 0x4c)) * 0.5, + (int)unaff_x23,param_9); + cv::String::deallocate(this_00); + if ((undefined8 *)((ulong)param_8 & 0xffffffff) != (undefined8 *)0x0) { + *(undefined8 *)((ulong)param_8 & 0xffffffff) = uStack_18; + } + return; + } +LAB_001a898c: + *(undefined4 **)(param_5 + 0x30) = puVar8; + *(uint *)(param_5 + 0x28) = param_6; + *(uint *)(param_5 + 0x54) = param_7; + *(undefined8 *)(param_5 + 0x40) = 0; + *(undefined8 *)(param_5 + 0x38) = 0; + *(int *)(param_5 + 0x5c) = (int)param_8; + *(float *)(param_5 + 0x48) = (float)param_2; + *(float *)(param_5 + 0x4c) = (float)param_3; + *(float *)(param_5 + 0x50) = (float)param_4; + return; +} + + +================================================================== + +### FUNC 001a8b44 (308 bytes) name=cvGetTextSize + +void cvGetTextSize(char *param_1,long param_2,undefined8 *param_3,int param_4,int *param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined2 uVar3; + char cVar4; + size_t __n; + void *__dest; + char *pcVar5; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == (char *)0x0) || (param_2 == 0)) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar4 = s_text____0_____font____0_0043f588[0x16]; + uVar3 = s_text____0_____font____0_0043f588._20_2_; + uVar2 = s_text____0_____font____0_0043f588._8_8_; + uVar1 = s_text____0_____font____0_0043f588._0_8_; + param_5 = (int *)0xa7d; + *(undefined4 *)(pcVar5 + 0x10) = s_text____0_____font____0_0043f588._16_4_; + *(undefined2 *)(pcVar5 + 0x14) = uVar3; + pcVar5[0x16] = cVar4; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_10, + "void cvGetTextSize(const char*, const CvFont*, CvSize*, int*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0xa7d); + cv::String::deallocate((String *)&local_10); + local_10 = 0; + local_8 = 0; + if (param_1 == (char *)0x0) goto LAB_001a8ba0; + } + local_8 = 0; + local_10 = 0; + __n = strlen(param_1); + __dest = (void *)cv::String::allocate((String *)&local_10,__n); + memcpy(__dest,param_1,__n); +LAB_001a8ba0: + cv::getTextSize((cv *)&local_10,(String *)(ulong)*(uint *)(param_2 + 0x28), + *(int *)(param_2 + 0x54), + (double)(*(float *)(param_2 + 0x48) + *(float *)(param_2 + 0x4c)) * 0.5,param_4, + param_5); + cv::String::deallocate((String *)&local_10); + if (param_3 != (undefined8 *)0x0) { + *param_3 = local_18; + } + return; +} + + +================================================================== + +### FUNC 001a8ca0 (364 bytes) name=FUN_001a8ca0 + +void FUN_001a8ca0(long *param_1,undefined8 *param_2) + +{ + undefined8 *puVar1; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + undefined8 *puVar7; + ulong uVar8; + undefined8 *puVar9; + ulong uVar10; + long lVar11; + long lVar12; + ulong uVar2; + + puVar6 = (undefined8 *)param_1[1]; + if (puVar6 != (undefined8 *)param_1[2]) { + if (puVar6 != (undefined8 *)0x0) { + *puVar6 = *param_2; + } + param_1[1] = (long)(puVar6 + 1); + return; + } + lVar11 = *param_1; + uVar8 = (long)puVar6 - lVar11 >> 3; + if (uVar8 == 0) { + lVar12 = 8; + uVar2 = 1; + } + else { + uVar10 = uVar8 * 2; + lVar12 = -8; + uVar2 = 0x1fffffffffffffff; + if ((uVar8 <= uVar10) && (uVar10 < 0x2000000000000000)) { + lVar12 = uVar8 << 4; + puVar1 = (undefined8 *)0x0; + uVar2 = uVar10; + puVar7 = puVar6; + if (uVar10 == 0) goto LAB_001a8d20; + } + } + puVar1 = (undefined8 *)FUN_001a1810(uVar2); + puVar7 = (undefined8 *)param_1[1]; +LAB_001a8d20: + puVar9 = (undefined8 *)((long)puVar1 + ((long)puVar6 - lVar11)); + if (puVar9 != (undefined8 *)0x0) { + *puVar9 = *param_2; + } + puVar3 = (undefined8 *)*param_1; + puVar4 = puVar1; + puVar9 = puVar3; + if (puVar6 != puVar3) { + do { + if (puVar4 != (undefined8 *)0x0) { + *puVar4 = *puVar9; + } + puVar9 = puVar9 + 1; + puVar4 = puVar4 + 1; + } while (puVar6 != puVar9); + puVar4 = (undefined8 *) + ((long)puVar1 + ((long)puVar6 - (long)(puVar3 + 1) & 0xfffffffffffffff8U) + 8); + } + puVar4 = puVar4 + 1; + puVar5 = puVar4; + puVar9 = puVar6; + if (puVar6 != puVar7) { + do { + if (puVar5 != (undefined8 *)0x0) { + *puVar5 = *puVar9; + } + puVar9 = puVar9 + 1; + puVar5 = puVar5 + 1; + } while (puVar7 != puVar9); + puVar4 = (undefined8 *) + ((long)puVar4 + ((long)puVar7 - (long)(puVar6 + 1) & 0xfffffffffffffff8U) + 8); + } + if (puVar3 != (undefined8 *)0x0) { + operator_delete(puVar3); + } + *param_1 = (long)puVar1; + param_1[1] = (long)puVar4; + param_1[2] = (long)puVar1 + lVar12; + return; +} + + +================================================================== + +### FUNC 001a8e0c (904 bytes) name=FUN_001a8e0c + +void FUN_001a8e0c(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + long lVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + ulong uVar10; + ulong uVar11; + long lVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 *puVar15; + undefined8 *puVar16; + long lVar17; + ulong uVar18; + + if (param_3 == 0) { + return; + } + puVar16 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar16 >> 3)) { + lVar17 = (long)puVar16 - (long)param_2; + uVar1 = *(undefined4 *)param_4; + uVar2 = *(undefined4 *)((long)param_4 + 4); + uVar7 = *param_4; + uVar6 = *param_4; + uVar5 = *param_4; + uVar4 = *param_4; + if (param_3 < (ulong)(lVar17 >> 3)) { + puVar15 = puVar16 + -param_3; + puVar9 = puVar16; + for (puVar8 = puVar15; puVar16 != puVar8; puVar8 = puVar8 + 1) { + if (puVar9 != (undefined8 *)0x0) { + *puVar9 = *puVar8; + } + puVar9 = puVar9 + 1; + } + param_1[1] = puVar16 + param_3; + puVar8 = puVar16; + puVar9 = puVar15; + if (7 < (long)puVar15 - (long)param_2) { + do { + puVar14 = puVar8 + -1; + *(undefined4 *)puVar14 = *(undefined4 *)(puVar9 + -1); + *(undefined4 *)((long)puVar8 + -4) = *(undefined4 *)((long)puVar9 + -4); + puVar8 = puVar14; + puVar9 = puVar9 + -1; + } while (puVar14 != (undefined8 *)((long)puVar16 - ((long)puVar15 - (long)param_2))); + } + if (param_2 != param_2 + param_3) { + uVar10 = (ulong)((long)(param_2 + param_3) - (long)(param_2 + 1)) >> 3; + uVar18 = (uVar10 - 1 >> 1) + 1; + if (uVar10 != 0) { + uVar11 = 0; + puVar16 = param_2; + do { + puVar16[1] = uVar5; + *puVar16 = uVar4; + uVar11 = uVar11 + 1; + puVar16 = puVar16 + 2; + } while (uVar11 < uVar18); + param_2 = param_2 + uVar18 * 2; + if (uVar18 * 2 - (uVar10 + 1) == 0) { + return; + } + } +LAB_001a9000: + *(undefined4 *)param_2 = uVar1; + *(undefined4 *)((long)param_2 + 4) = uVar2; + return; + } + } + else { + lVar12 = param_3 - (lVar17 >> 3); + puVar8 = puVar16; + for (lVar3 = lVar12; lVar3 != 0; lVar3 = lVar3 + -1) { + if (puVar8 != (undefined8 *)0x0) { + *(undefined4 *)puVar8 = uVar1; + *(undefined4 *)((long)puVar8 + 4) = uVar2; + } + puVar8 = puVar8 + 1; + } + puVar15 = puVar16 + lVar12; + param_1[1] = puVar15; + puVar9 = puVar15; + puVar8 = param_2; + if (puVar16 != param_2) { + do { + if (puVar9 != (undefined8 *)0x0) { + *puVar9 = *puVar8; + } + puVar8 = puVar8 + 1; + puVar9 = puVar9 + 1; + } while (puVar16 != puVar8); + param_1[1] = (long)puVar15 + lVar17; + uVar10 = (ulong)((long)puVar16 - (long)(param_2 + 1)) >> 3; + uVar18 = (uVar10 - 1 >> 1) + 1; + if (uVar10 != 0) { + uVar11 = 0; + puVar16 = param_2; + do { + puVar16[1] = uVar7; + *puVar16 = uVar6; + uVar11 = uVar11 + 1; + puVar16 = puVar16 + 2; + } while (uVar11 < uVar18); + param_2 = param_2 + uVar18 * 2; + if (uVar10 + 1 == uVar18 * 2) { + return; + } + } + goto LAB_001a9000; + } + param_1[1] = (long)puVar15 + lVar17; + } + return; + } + puVar8 = (undefined8 *)*param_1; + uVar18 = (long)puVar16 - (long)puVar8 >> 3; + if (0x1fffffffffffffff - uVar18 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar10 = uVar18; + if (uVar18 < param_3) { + uVar10 = param_3; + } + uVar10 = uVar10 + uVar18; + if ((uVar10 < uVar18) || (0x1fffffffffffffff < uVar10)) { + lVar17 = (long)param_2 - (long)puVar8; + uVar10 = 0xfffffffffffffff8; + } + else { + lVar17 = (long)param_2 - (long)puVar8; + if (uVar10 == 0) { + uVar10 = 0; + puVar9 = (undefined8 *)0x0; + goto LAB_001a9098; + } + uVar10 = uVar10 * 8; + } + puVar9 = operator_new(uVar10); + puVar16 = (undefined8 *)param_1[1]; + puVar8 = (undefined8 *)*param_1; +LAB_001a9098: + puVar15 = (undefined8 *)((long)puVar9 + lVar17); + uVar18 = param_3; + do { + if (puVar15 != (undefined8 *)0x0) { + *puVar15 = *param_4; + } + uVar18 = uVar18 - 1; + puVar15 = puVar15 + 1; + } while (uVar18 != 0); + puVar14 = puVar9; + puVar15 = puVar8; + if (param_2 != puVar8) { + do { + if (puVar14 != (undefined8 *)0x0) { + *puVar14 = *puVar15; + } + puVar15 = puVar15 + 1; + puVar14 = puVar14 + 1; + } while (param_2 != puVar15); + puVar14 = (undefined8 *) + ((long)puVar9 + ((long)param_2 - (long)(puVar8 + 1) & 0xfffffffffffffff8U) + 8); + } + puVar14 = puVar14 + param_3; + puVar13 = puVar14; + puVar15 = param_2; + if (param_2 != puVar16) { + do { + if (puVar13 != (undefined8 *)0x0) { + *puVar13 = *puVar15; + } + puVar15 = puVar15 + 1; + puVar13 = puVar13 + 1; + } while (puVar16 != puVar15); + puVar14 = (undefined8 *) + ((long)puVar14 + ((long)puVar16 - (long)(param_2 + 1) & 0xfffffffffffffff8U) + 8); + } + if (puVar8 != (undefined8 *)0x0) { + operator_delete(puVar8); + } + *param_1 = puVar9; + param_1[1] = puVar14; + param_1[2] = (long)puVar9 + uVar10; + return; +} + + +================================================================== + +### FUNC 001a9194 (1040 bytes) name=FUN_001a9194 + +void FUN_001a9194(int *param_1,int *param_2,long param_3,undefined4 param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int *piVar5; + bool bVar6; + bool bVar7; + int *piVar8; + undefined8 uVar9; + long lVar10; + int *piVar11; + int *piVar12; + int *piVar13; + long lVar14; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + undefined8 local_18; + undefined8 uStack_10; + undefined8 local_8; + + lVar10 = (long)param_2 - (long)param_1; + if (0x197 < lVar10) { + if (param_3 != 0) { + piVar13 = param_1 + 6; + piVar8 = param_2; +LAB_001a91d8: + iVar1 = *piVar13; + param_3 = param_3 + -1; + lVar10 = (((long)piVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2; + piVar5 = param_1 + lVar10 * 6; + iVar4 = param_1[lVar10 * 6]; + bVar6 = SBORROW4(iVar1,iVar4); + bVar7 = iVar1 - iVar4 < 0; + if (iVar1 == iVar4) { + iVar3 = param_1[8]; + iVar2 = piVar5[2]; + bVar6 = SBORROW4(iVar3,iVar2); + bVar7 = iVar3 - iVar2 < 0; + if (iVar3 == iVar2) { + bVar6 = SBORROW4(param_1[9],piVar5[3]); + bVar7 = param_1[9] - piVar5[3] < 0; + } + } + iVar3 = piVar8[-6]; + piVar11 = piVar13; + piVar12 = piVar8; + if (bVar7 == bVar6) { + bVar6 = SBORROW4(iVar1,iVar3); + bVar7 = iVar1 - iVar3 < 0; + if (iVar1 == iVar3) { + iVar1 = param_1[8]; + iVar2 = piVar8[-4]; + bVar6 = SBORROW4(iVar1,iVar2); + bVar7 = iVar1 - iVar2 < 0; + if (iVar1 == iVar2) { + bVar6 = SBORROW4(param_1[9],piVar8[-3]); + bVar7 = param_1[9] - piVar8[-3] < 0; + } + } + if (bVar7 == bVar6) { + bVar6 = SBORROW4(iVar4,iVar3); + bVar7 = iVar4 - iVar3 < 0; + if (iVar4 == iVar3) { + iVar1 = piVar5[2]; + iVar4 = piVar8[-4]; + bVar6 = SBORROW4(iVar1,iVar4); + bVar7 = iVar1 - iVar4 < 0; + if (iVar1 == iVar4) { + bVar6 = SBORROW4(piVar5[3],piVar8[-3]); + bVar7 = piVar5[3] - piVar8[-3] < 0; + } + } + if (bVar7 != bVar6) goto LAB_001a923c; + goto LAB_001a93b4; + } + } + else { + bVar6 = SBORROW4(iVar4,iVar3); + bVar7 = iVar4 - iVar3 < 0; + if (iVar4 == iVar3) { + iVar4 = piVar5[2]; + iVar2 = piVar8[-4]; + bVar6 = SBORROW4(iVar4,iVar2); + bVar7 = iVar4 - iVar2 < 0; + if (iVar4 == iVar2) { + bVar6 = SBORROW4(piVar5[3],piVar8[-3]); + bVar7 = piVar5[3] - piVar8[-3] < 0; + } + } + if (bVar7 != bVar6) { +LAB_001a93b4: + uVar9 = *(undefined8 *)(piVar5 + 2); + iVar1 = *param_1; + iVar4 = param_1[1]; + iVar3 = param_1[2]; + iVar2 = param_1[3]; + *(undefined8 *)param_1 = *(undefined8 *)piVar5; + *(undefined8 *)(param_1 + 2) = uVar9; + uVar9 = *(undefined8 *)(param_1 + 4); + *(undefined8 *)(param_1 + 4) = *(undefined8 *)(piVar5 + 4); + param_1[lVar10 * 6] = iVar1; + piVar5[1] = iVar4; + piVar5[2] = iVar3; + piVar5[3] = iVar2; + *(undefined8 *)(piVar5 + 4) = uVar9; + goto LAB_001a927c; + } + bVar6 = SBORROW4(iVar1,iVar3); + bVar7 = iVar1 - iVar3 < 0; + if (iVar1 == iVar3) { + iVar1 = param_1[8]; + iVar4 = piVar8[-4]; + bVar6 = SBORROW4(iVar1,iVar4); + bVar7 = iVar1 - iVar4 < 0; + if (iVar1 == iVar4) { + bVar6 = SBORROW4(param_1[9],piVar8[-3]); + bVar7 = param_1[9] - piVar8[-3] < 0; + } + } + if (bVar7 != bVar6) { +LAB_001a923c: + uVar9 = *(undefined8 *)(piVar8 + -4); + iVar1 = *param_1; + iVar4 = param_1[1]; + iVar3 = param_1[2]; + iVar2 = param_1[3]; + *(undefined8 *)param_1 = *(undefined8 *)(piVar8 + -6); + *(undefined8 *)(param_1 + 2) = uVar9; + uVar9 = *(undefined8 *)(param_1 + 4); + *(undefined8 *)(param_1 + 4) = *(undefined8 *)(piVar8 + -2); + piVar8[-6] = iVar1; + piVar8[-5] = iVar4; + piVar8[-4] = iVar3; + piVar8[-3] = iVar2; + *(undefined8 *)(piVar8 + -2) = uVar9; + goto LAB_001a927c; + } + } + iVar1 = *param_1; + iVar4 = param_1[2]; + *(undefined8 *)param_1 = *(undefined8 *)piVar13; + *(undefined8 *)(param_1 + 2) = *(undefined8 *)(param_1 + 8); + uVar9 = *(undefined8 *)(param_1 + 4); + *(undefined8 *)(param_1 + 4) = *(undefined8 *)(param_1 + 10); + param_1[6] = iVar1; + param_1[7] = param_1[1]; + param_1[8] = iVar4; + param_1[9] = param_1[3]; + *(undefined8 *)(param_1 + 10) = uVar9; +LAB_001a927c: + do { + iVar1 = *param_1; + do { + while( true ) { + param_2 = piVar11; + iVar4 = *param_2; + bVar7 = iVar4 < iVar1; + if ((iVar1 != iVar4) || (bVar7 = param_2[2] < param_1[2], param_2[2] != param_1[2])) + break; + piVar11 = param_2 + 6; + if (param_1[3] <= param_2[3]) goto LAB_001a92cc; + } + piVar11 = param_2 + 6; + } while (bVar7); +LAB_001a92cc: + piVar5 = piVar12 + -6; + do { + while ((piVar12 = piVar5, bVar7 = iVar1 < *piVar12, iVar1 == *piVar12 && + (bVar7 = param_1[2] < piVar12[2], param_1[2] == piVar12[2]))) { + piVar5 = piVar12 + -6; + if (piVar12[3] <= param_1[3]) goto LAB_001a931c; + } + piVar5 = piVar12 + -6; + } while (bVar7); +LAB_001a931c: + if (piVar12 <= param_2) goto LAB_001a9360; + uVar9 = *(undefined8 *)(piVar12 + 2); + iVar1 = param_2[1]; + iVar3 = param_2[2]; + iVar2 = param_2[3]; + *(undefined8 *)param_2 = *(undefined8 *)piVar12; + *(undefined8 *)(param_2 + 2) = uVar9; + uVar9 = *(undefined8 *)(param_2 + 4); + *(undefined8 *)(param_2 + 4) = *(undefined8 *)(piVar12 + 4); + *piVar12 = iVar4; + piVar12[1] = iVar1; + piVar12[2] = iVar3; + piVar12[3] = iVar2; + *(undefined8 *)(piVar12 + 4) = uVar9; + piVar11 = param_2 + 6; + } while( true ); + } +LAB_001a9490: + lVar10 = (lVar10 >> 3) * -0x5555555555555555; + lVar14 = lVar10 + -2 >> 1; + piVar13 = param_1 + lVar14 * 6; + while( true ) { + local_30 = *(undefined8 *)(piVar13 + 4); + local_40 = *(undefined8 *)piVar13; + uStack_38 = *(undefined8 *)(piVar13 + 2); + piVar13 = piVar13 + -6; + local_18 = local_40; + uStack_10 = uStack_38; + local_8 = local_30; + FUN_001a3350(param_1,lVar14,lVar10,&local_40); + if (lVar14 == 0) break; + lVar14 = lVar14 + -1; + } + do { + piVar13 = param_2 + -6; + uVar9 = *(undefined8 *)(param_1 + 2); + local_40 = *(undefined8 *)piVar13; + uStack_38 = *(undefined8 *)(param_2 + -4); + local_30 = *(undefined8 *)(param_2 + -2); + *(undefined8 *)piVar13 = *(undefined8 *)param_1; + *(undefined8 *)(param_2 + -4) = uVar9; + *(undefined8 *)(param_2 + -2) = *(undefined8 *)(param_1 + 4); + local_18 = local_40; + uStack_10 = uStack_38; + local_8 = local_30; + FUN_001a3350(param_1,0,((long)piVar13 - (long)param_1 >> 3) * -0x5555555555555555,&local_40); + param_2 = piVar13; + } while (0x2f < (long)piVar13 - (long)param_1); + } + return; +LAB_001a9360: + FUN_001a9194(param_2,piVar8,param_3,param_4); + lVar10 = (long)param_2 - (long)param_1; + if (lVar10 < 0x198) { + return; + } + piVar8 = param_2; + if (param_3 == 0) goto LAB_001a9490; + goto LAB_001a91d8; +} + + +================================================================== + +### FUNC 001a95a4 (2460 bytes) name=FUN_001a95a4 + +void FUN_001a95a4(long param_1,long *param_2,undefined1 *param_3) + +{ + bool bVar1; + bool bVar2; + undefined1 *puVar3; + uint uVar4; + uint uVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + undefined8 uVar10; + int iVar11; + long lVar12; + undefined8 *puVar13; + ulong uVar14; + int *piVar15; + int iVar16; + uint uVar17; + int *piVar18; + int *piVar19; + uint uVar20; + undefined1 *puVar21; + undefined8 *puVar22; + int *piVar23; + long lVar24; + int iVar25; + undefined8 uVar26; + int *piVar27; + ulong uVar28; + int iVar29; + int iVar30; + int iVar31; + int *piVar32; + uint uVar33; + int iVar34; + int *piVar35; + undefined8 uVar36; + undefined8 local_20; + undefined8 uStack_18; + int *local_10; + + local_10 = (int *)0x0; + uStack_18 = 0; + local_20 = 0; + piVar35 = (int *)*param_2; + piVar32 = (int *)param_2[1]; + iVar6 = (*(int **)(param_1 + 0x40))[1]; + iVar31 = **(int **)(param_1 + 0x40); + lVar12 = ((long)piVar32 - (long)piVar35 >> 3) * -0x5555555555555555; + iVar9 = (int)lVar12; + if (*(int *)(param_1 + 4) < 1) { + uVar33 = 0; + } + else { + uVar33 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + if (iVar9 < 2) { + return; + } + iVar25 = 0x7fffffff; + iVar29 = -0x80000000; + iVar30 = 0x7fffffff; + iVar34 = -0x80000000; + piVar15 = piVar35 + 2; + do { + iVar11 = piVar15[-1]; + piVar19 = piVar15 + 6; + iVar7 = piVar15[-2]; + iVar16 = *piVar15; + if (iVar7 < iVar30) { + iVar30 = iVar7; + } + iVar7 = iVar16 + (iVar11 - iVar7) * piVar15[1]; + if (iVar34 < iVar11) { + iVar34 = iVar11; + } + iVar11 = iVar7; + if (iVar16 < iVar7) { + iVar11 = iVar16; + } + if (iVar11 < iVar25) { + iVar25 = iVar11; + } + if (iVar7 < iVar16) { + iVar7 = iVar16; + } + if (iVar29 < iVar7) { + iVar29 = iVar7; + } + piVar15 = piVar19; + } while (piVar19 != piVar35 + (ulong)(iVar9 - 1) * 6 + 8); + if (iVar34 < 0) { + return; + } + if (iVar31 <= iVar30) { + return; + } + if (iVar29 < 0) { + return; + } + if (iVar6 * 0x10000 <= iVar25) { + return; + } + if (piVar35 != piVar32) { + FUN_001a9194(piVar35,piVar32,(0x3f - LZCOUNT(lVar12)) * 2,0); + if ((long)piVar32 - (long)piVar35 < 0x198) { + FUN_001a3544(piVar35,piVar32); + } + else { + piVar15 = piVar35 + 0x60; + FUN_001a3544(piVar35,piVar15); + if (piVar32 != piVar15) { +LAB_001a9750: + iVar30 = *piVar15; + uVar36 = *(undefined8 *)piVar15; + iVar25 = piVar15[2]; + iVar29 = piVar15[3]; + uVar10 = *(undefined8 *)(piVar15 + 2); + uVar26 = *(undefined8 *)(piVar15 + 4); + piVar35 = piVar15; + do { + bVar2 = iVar30 < piVar35[-6]; + if ((iVar30 == piVar35[-6]) && (bVar2 = iVar25 < piVar35[-4], iVar25 == piVar35[-4])) { + if (piVar35[-3] <= iVar29) goto LAB_001a97c4; + } + else if (!bVar2) goto LAB_001a97c4; + *(undefined8 *)piVar35 = *(undefined8 *)(piVar35 + -6); + *(undefined8 *)(piVar35 + 2) = *(undefined8 *)(piVar35 + -4); + *(undefined8 *)(piVar35 + 4) = *(undefined8 *)(piVar35 + -2); + piVar35 = piVar35 + -6; + } while( true ); + } + } +LAB_001a97ec: + piVar35 = (int *)param_2[1]; + } + piVar32 = (int *)param_2[2]; + local_20 = CONCAT44(local_20._4_4_,0x7fffffff); + if (piVar32 != piVar35) { + if (piVar35 != (int *)0x0) { + *(int **)(piVar35 + 4) = local_10; + *(undefined8 *)piVar35 = local_20; + *(undefined8 *)(piVar35 + 2) = uStack_18; + } + piVar27 = (int *)*param_2; + param_2[1] = (long)(piVar35 + 6); + goto LAB_001a9824; + } + piVar15 = (int *)*param_2; + lVar24 = (long)piVar35 - (long)piVar15; + lVar12 = lVar24 >> 3; + if (lVar12 * -0x5555555555555555 == 0) { + uVar14 = 0x18; +LAB_001a9dc8: + piVar27 = operator_new(uVar14); + piVar19 = piVar27 + 6; + piVar35 = (int *)param_2[1]; + piVar15 = (int *)*param_2; + } + else { + uVar28 = lVar12 * 0x5555555555555556; + uVar14 = 0xfffffffffffffff0; + if (((uVar28 < (ulong)(lVar12 * -0x5555555555555555)) || (0xaaaaaaaaaaaaaaa < uVar28)) || + (uVar14 = lVar12 << 4, uVar28 != 0)) goto LAB_001a9dc8; + piVar19 = (int *)0x18; + piVar27 = (int *)0x0; + } + puVar13 = (undefined8 *)((long)piVar27 + lVar24); + if (puVar13 != (undefined8 *)0x0) { + puVar13[2] = local_10; + *puVar13 = local_20; + puVar13[1] = uStack_18; + } + piVar18 = piVar27; + piVar23 = piVar15; + if (piVar32 != piVar15) { + do { + if (piVar18 != (int *)0x0) { + uVar36 = *(undefined8 *)(piVar23 + 2); + *(undefined8 *)piVar18 = *(undefined8 *)piVar23; + *(undefined8 *)(piVar18 + 2) = uVar36; + *(undefined8 *)(piVar18 + 4) = *(undefined8 *)(piVar23 + 4); + } + piVar23 = piVar23 + 6; + piVar18 = piVar18 + 6; + } while (piVar32 != piVar23); + piVar19 = piVar27 + ((((ulong)((long)piVar32 - (long)(piVar15 + 6)) >> 3) * 0xaaaaaaaaaaaaaab & + 0x1fffffffffffffff) + 1) * 6 + 6; + } + piVar23 = piVar32; + piVar18 = piVar19; + if (piVar32 != piVar35) { + do { + if (piVar18 != (int *)0x0) { + uVar36 = *(undefined8 *)(piVar23 + 2); + *(undefined8 *)piVar18 = *(undefined8 *)piVar23; + *(undefined8 *)(piVar18 + 2) = uVar36; + *(undefined8 *)(piVar18 + 4) = *(undefined8 *)(piVar23 + 4); + } + piVar23 = piVar23 + 6; + piVar18 = piVar18 + 6; + } while (piVar23 != piVar35); + piVar19 = piVar19 + ((((ulong)((long)piVar23 - (long)(piVar32 + 6)) >> 3) * 0xaaaaaaaaaaaaaab & + 0x1fffffffffffffff) + 1) * 6; + } + if (piVar15 != (int *)0x0) { + operator_delete(piVar15); + } + *param_2 = (long)piVar27; + param_2[1] = (long)piVar19; + param_2[2] = (long)piVar27 + uVar14; +LAB_001a9824: + iVar30 = *piVar27; + if (iVar31 < iVar34) { + iVar34 = iVar31; + } + local_10 = (int *)0x0; + if (iVar30 < iVar34) { + lVar12 = (long)iVar30; + uVar4 = -(int)param_3 & 0xf; + uVar5 = uVar33; + if (uVar4 < uVar33) { + uVar5 = uVar4; + } + uVar8 = (uVar33 - 1) - uVar5; + uVar4 = ((uVar33 - uVar5) - 0x10 >> 4) + 1; + iVar31 = 0; + iVar29 = uVar4 * 0x10; + iVar25 = iVar30; + do { + bVar2 = false; + piVar35 = local_10; + piVar32 = (int *)&local_20; + while( true ) { + while (piVar15 = piVar35, piVar15 != (int *)0x0) { + if (piVar15[1] != iVar30) { + if ((iVar25 <= iVar30) && (piVar27[2] <= piVar15[2])) goto LAB_001a98c4; + piVar35 = *(int **)(piVar15 + 4); + goto LAB_001a98ec; + } + *(undefined8 *)(piVar32 + 4) = *(undefined8 *)(piVar15 + 4); + piVar35 = *(int **)(piVar15 + 4); + } + if (iVar30 != iVar25) break; +LAB_001a98c4: + if (iVar9 <= iVar31) break; + iVar31 = iVar31 + 1; + *(int **)(piVar32 + 4) = piVar27; + *(int **)(piVar27 + 4) = piVar15; + piVar35 = piVar15; + piVar15 = piVar27; + piVar27 = (int *)(*param_2 + (long)iVar31 * 0x18); +LAB_001a98ec: + if (bVar2) { + if (iVar30 < 0) { +LAB_001a9c28: + iVar11 = piVar32[2]; + } + else { + iVar11 = piVar32[2]; + iVar7 = piVar15[2]; + iVar25 = iVar7; + iVar16 = iVar11; + if (iVar7 < iVar11) { + iVar25 = iVar11; + iVar16 = iVar7; + } + iVar25 = iVar25 >> 0x10; + iVar7 = iVar16 + 0xffff >> 0x10; + if ((iVar7 < iVar6) && (-1 < iVar25)) { + if (iVar7 < 0) { + iVar7 = 0; + } + iVar16 = iVar6 + -1; + if (iVar25 < iVar6) { + iVar16 = iVar25; + } + lVar24 = *(long *)(param_1 + 0x10) + **(long **)(param_1 + 0x48) * lVar12; + puVar21 = (undefined1 *)(lVar24 + (int)(iVar7 * uVar33)); + puVar3 = (undefined1 *)(lVar24 + (int)(iVar16 * uVar33)); + if (puVar21 <= puVar3) { + do { + if (0 < (int)uVar33) { + if ((param_3 < puVar21 + 0x10 && puVar21 < param_3 + 0x10) || (uVar33 < 0x16)) { + lVar24 = 0; + do { + puVar21[lVar24] = param_3[lVar24]; + lVar24 = lVar24 + 1; + } while ((int)lVar24 < (int)uVar33); + } + else { + uVar20 = uVar5; + if (uVar5 == 0) { + uVar14 = 0; + if (0xe < uVar8) goto LAB_001a9a94; + iVar25 = 1; + *puVar21 = *param_3; + } + else { + *puVar21 = *param_3; + if ((((uVar5 != 1) && (puVar21[1] = param_3[1], uVar5 != 2)) && + (puVar21[2] = param_3[2], uVar5 != 3)) && + ((puVar21[3] = param_3[3], uVar5 != 4 && + (puVar21[4] = param_3[4], uVar5 != 5)))) { + puVar21[5] = param_3[5]; + if (uVar5 == 6) { + uVar20 = 6; + } + else { + puVar21[6] = param_3[6]; + if ((((uVar5 != 7) && (puVar21[7] = param_3[7], uVar5 != 8)) && + ((puVar21[8] = param_3[8], uVar5 != 9 && + (((puVar21[9] = param_3[9], uVar5 != 10 && + (puVar21[10] = param_3[10], uVar5 != 0xb)) && + (puVar21[0xb] = param_3[0xb], uVar5 != 0xc)))))) && + (puVar21[0xc] = param_3[0xc], uVar5 != 0xd)) { + puVar21[0xd] = param_3[0xd]; + if (uVar5 == 0xf) { + puVar21[0xe] = param_3[0xe]; + } + else { + uVar20 = 0xe; + } + } + } + } + uVar14 = (ulong)uVar5; + if (0xe < uVar8) { +LAB_001a9a94: + uVar17 = 0; + puVar13 = (undefined8 *)(param_3 + uVar14); + puVar22 = (undefined8 *)(puVar21 + uVar14); + do { + uVar36 = *puVar13; + uVar17 = uVar17 + 1; + puVar22[1] = puVar13[1]; + *puVar22 = uVar36; + puVar13 = puVar13 + 2; + puVar22 = puVar22 + 2; + } while (uVar17 < uVar4); + uVar20 = uVar20 + iVar29; + if (iVar29 == uVar33 - uVar5) goto LAB_001a9c1c; + } + iVar25 = uVar20 + 1; + puVar21[(int)uVar20] = param_3[(int)uVar20]; + if ((int)uVar33 <= iVar25) goto LAB_001a9c1c; + } + iVar11 = iVar25 + 1; + puVar21[iVar25] = param_3[iVar25]; + if (iVar11 < (int)uVar33) { + iVar7 = iVar25 + 2; + puVar21[iVar11] = param_3[iVar11]; + if (iVar7 < (int)uVar33) { + iVar11 = iVar25 + 3; + puVar21[iVar7] = param_3[iVar7]; + if (iVar11 < (int)uVar33) { + iVar7 = iVar25 + 4; + puVar21[iVar11] = param_3[iVar11]; + if (iVar7 < (int)uVar33) { + iVar11 = iVar25 + 5; + puVar21[iVar7] = param_3[iVar7]; + if (iVar11 < (int)uVar33) { + iVar7 = iVar25 + 6; + puVar21[iVar11] = param_3[iVar11]; + if (iVar7 < (int)uVar33) { + iVar11 = iVar25 + 7; + puVar21[iVar7] = param_3[iVar7]; + if (iVar11 < (int)uVar33) { + iVar7 = iVar25 + 8; + puVar21[iVar11] = param_3[iVar11]; + if (iVar7 < (int)uVar33) { + iVar11 = iVar25 + 9; + puVar21[iVar7] = param_3[iVar7]; + if (iVar11 < (int)uVar33) { + iVar7 = iVar25 + 10; + puVar21[iVar11] = param_3[iVar11]; + if (iVar7 < (int)uVar33) { + iVar11 = iVar25 + 0xb; + puVar21[iVar7] = param_3[iVar7]; + if (iVar11 < (int)uVar33) { + iVar7 = iVar25 + 0xc; + puVar21[iVar11] = param_3[iVar11]; + if (iVar7 < (int)uVar33) { + iVar25 = iVar25 + 0xd; + puVar21[iVar7] = param_3[iVar7]; + if (iVar25 < (int)uVar33) { + puVar21[iVar25] = param_3[iVar25]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001a9c1c: + puVar21 = puVar21 + (int)uVar33; + } while (puVar21 <= puVar3); + goto LAB_001a9c28; + } + } + } + iVar25 = piVar15[3]; + piVar32[2] = piVar32[3] + iVar11; + piVar15[2] = piVar15[2] + iVar25; + } + iVar25 = *piVar27; + bVar2 = (bool)(bVar2 ^ 1); + piVar32 = piVar15; + } + bVar2 = false; + piVar32 = local_10; + piVar35 = (int *)&local_20; + piVar15 = (int *)0x0; + do { + while ((piVar19 = piVar35, piVar15 != piVar32 && + (piVar35 = *(int **)(piVar32 + 4), piVar35 != (int *)0x0))) { + iVar11 = piVar35[2]; + if (piVar32[2] <= piVar35[2]) { + do { + piVar19 = piVar32; + piVar32 = piVar35; + if ((piVar15 == piVar32) || (piVar35 = *(int **)(piVar32 + 4), piVar35 == (int *)0x0)) + goto LAB_001a9ce8; + bVar1 = iVar11 <= piVar35[2]; + iVar11 = piVar35[2]; + } while (bVar1); + } + *(int **)(piVar19 + 4) = piVar35; + bVar2 = true; + *(undefined8 *)(piVar32 + 4) = *(undefined8 *)(piVar35 + 4); + *(int **)(piVar35 + 4) = piVar32; + } +LAB_001a9ce8: + } while (((bVar2) && (local_10 != piVar19)) && + (piVar32 = local_10, piVar35 = (int *)&local_20, piVar15 = piVar19, + piVar19 != (int *)&local_20)); + iVar30 = iVar30 + 1; + lVar12 = lVar12 + 1; + } while (iVar30 != iVar34); + } + return; +LAB_001a97c4: + piVar15 = piVar15 + 6; + *(undefined8 *)(piVar35 + 4) = uVar26; + *(undefined8 *)(piVar35 + 2) = uVar10; + *(undefined8 *)piVar35 = uVar36; + if (piVar32 == piVar15) goto LAB_001a97ec; + goto LAB_001a9750; +} + + +================================================================== + +### FUNC 001a9f40 (2944 bytes) name=FUN_001a9f40 + +void FUN_001a9f40(long param_1,int *param_2,uint *param_3,undefined4 param_4,int param_5,int param_6 + ,undefined1 *param_7,int param_8,int param_9) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + undefined4 uVar8; + undefined1 *puVar9; + int *piVar10; + int iVar11; + int iVar12; + ulong uVar13; + int *piVar14; + int *piVar15; + undefined8 *puVar16; + ulong uVar17; + uint uVar18; + long lVar19; + ulong uVar20; + int *piVar21; + long lVar22; + int *piVar23; + long lVar24; + undefined8 uVar25; + undefined8 *puVar26; + uint uVar27; + uint uVar28; + int iVar29; + uint uVar30; + uint uVar31; + int iVar32; + int iVar33; + int iVar34; + long lVar35; + uint uVar36; + int iVar37; + int local_80; + int local_7c; + 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_38; + int *local_30; + undefined8 local_28; + int local_20 [7]; + int local_4; + + uVar8 = 0x5a; + uVar28 = (int)*param_3 >> 0x1f; + uVar28 = (*param_3 ^ uVar28) - uVar28; + uVar27 = (int)param_3[1] >> 0x1f; + uVar27 = (param_3[1] ^ uVar27) - uVar27; + *param_3 = uVar28; + param_3[1] = uVar27; + uVar3 = uVar27; + if ((int)uVar27 < (int)uVar28) { + uVar3 = uVar28; + } + iVar11 = (int)(uVar3 + 0x8000) >> 0x10; + if (((2 < iVar11) && (uVar8 = 0x1e, 9 < iVar11)) && (uVar8 = 0x12, 0xe < iVar11)) { + uVar8 = 5; + } + local_48 = *param_2; + local_44 = param_2[1]; + local_40 = (int *)0x0; + local_38 = (int *)0x0; + local_30 = (int *)0x0; + local_28 = (void *)CONCAT44(uVar27,uVar28); + cv::ellipse2Poly(&local_48,&local_28,param_4,param_5,param_6,uVar8,&local_40); + piVar23 = local_38; + piVar10 = local_40; + if (param_8 < 0) { + if (param_6 - param_5 < 0x168) { + if (local_38 == local_30) { + lVar19 = (long)local_38 - (long)local_40; + uVar20 = lVar19 >> 3; + if (uVar20 == 0) { + uVar17 = 1; +LAB_001aa9c0: + piVar10 = (int *)FUN_001a1810(uVar17); + uVar20 = uVar17; + } + else { + uVar13 = uVar20 * 2; + uVar17 = 0x1fffffffffffffff; + if ((uVar13 < uVar20) || (0x1fffffffffffffff < uVar13)) goto LAB_001aa9c0; + uVar20 = 0; + piVar10 = (int *)0x0; + uVar17 = uVar13; + if (uVar13 != 0) goto LAB_001aa9c0; + } + puVar16 = (undefined8 *)((long)piVar10 + lVar19); + if (puVar16 != (undefined8 *)0x0) { + *puVar16 = *(undefined8 *)param_2; + } + piVar14 = piVar10; + piVar21 = local_40; + if (piVar23 != local_40) { + do { + if (piVar14 != (int *)0x0) { + *(undefined8 *)piVar14 = *(undefined8 *)piVar21; + } + piVar21 = piVar21 + 2; + piVar14 = piVar14 + 2; + } while (piVar23 != piVar21); + piVar14 = (int *)((long)piVar10 + + ((long)piVar23 - (long)(local_40 + 2) & 0xfffffffffffffff8U) + 8); + } + piVar14 = piVar14 + 2; + piVar15 = piVar14; + piVar21 = piVar23; + if (piVar23 != local_38) { + do { + if (piVar15 != (int *)0x0) { + *(undefined8 *)piVar15 = *(undefined8 *)piVar21; + } + piVar21 = piVar21 + 2; + piVar15 = piVar15 + 2; + } while (local_38 != piVar21); + piVar14 = (int *)((long)piVar14 + + ((long)local_38 - (long)(piVar23 + 2) & 0xfffffffffffffff8U) + 8); + } + if (local_40 != (int *)0x0) { + operator_delete(local_40); + } + local_30 = piVar10 + uVar20 * 2; + local_40 = piVar10; + } + else { + if (local_38 != (int *)0x0) { + *(undefined8 *)local_38 = *(undefined8 *)param_2; + } + piVar14 = local_38 + 2; + } + local_28 = (void *)0x0; + local_20[0] = 0; + local_20[1] = 0; + local_20[2] = 0; + local_20[3] = 0; + local_48 = 0; + local_44 = 0; + local_38 = piVar14; + FUN_001a6dec(param_1,local_40,(ulong)((long)piVar14 - (long)local_40) >> 3,&local_28,param_7, + param_9,0x10,&local_48); + FUN_001a95a4(param_1,&local_28,param_7); + if (local_28 != (void *)0x0) { + operator_delete(local_28); + } + } + else { + lVar19 = *(long *)(param_1 + 0x10); + uVar20 = (long)local_38 - (long)local_40 >> 3; + iVar11 = (*(int **)(param_1 + 0x40))[1]; + iVar29 = **(int **)(param_1 + 0x40); + uVar3 = (uint)uVar20; + if (*(int *)(param_1 + 4) < 1) { + uVar28 = 0; + } + else { + uVar28 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + if (param_9 < 0x10) { + local_7c = 0x8000; + local_80 = 0x8000; + } + else { + local_7c = 0; + local_80 = 0xffff; + } + iVar37 = local_40[1]; + iVar33 = *local_40; + iVar32 = iVar33; + iVar34 = iVar37; + if ((int)uVar3 < 1) { + uVar27 = 0; + } + else if (param_9 < 9) { + uVar36 = 0; + uVar27 = 0; + piVar23 = local_40; + iVar6 = local_40[(long)(int)uVar3 * 2 + -2]; + iVar12 = local_40[(long)(int)uVar3 * 2 + -1]; + do { + local_54 = iVar12; + local_58 = iVar6; + iVar12 = piVar23[1]; + iVar6 = *piVar23; + if (iVar12 < iVar37) { + iVar37 = iVar12; + uVar27 = uVar36; + } + if (iVar34 < iVar12) { + iVar34 = iVar12; + } + if (iVar32 < iVar6) { + iVar32 = iVar6; + } + if (iVar6 < iVar33) { + iVar33 = iVar6; + } + local_50 = iVar6; + local_4c = iVar12; + FUN_001a3bb8(param_1,&local_58,&local_50,param_7); + uVar36 = uVar36 + 1; + piVar23 = piVar23 + 2; + } while (uVar36 != uVar3); + } + else { + uVar27 = 0; + piVar23 = local_40; + uVar36 = uVar27; + iVar6 = local_40[(long)(int)uVar3 * 2 + -2]; + iVar12 = local_40[(long)(int)uVar3 * 2 + -1]; + do { + local_44 = iVar12; + local_48 = iVar6; + iVar12 = piVar23[1]; + iVar6 = *piVar23; + local_28 = *(void **)piVar23; + if (iVar12 < iVar37) { + iVar37 = iVar12; + uVar27 = uVar36; + } + if (iVar34 < iVar12) { + iVar34 = iVar12; + } + if (iVar32 < iVar6) { + iVar32 = iVar6; + } + if (iVar6 < iVar33) { + iVar33 = iVar6; + } + FUN_001a5090(param_1,&local_48,&local_28,param_7); + piVar23 = piVar23 + 2; + uVar36 = uVar36 + 1; + } while (uVar36 != uVar3); + } + uVar36 = iVar34 + 0x8000 >> 0x10; + iVar34 = iVar37 + 0x8000 >> 0x10; + if ((iVar33 + 0x8000 >> 0x10 < iVar11 && + (2 < (int)uVar3 && -1 < (int)(iVar32 + 0x8000U | uVar36))) && + (uVar30 = (uint)(iVar29 <= iVar34), iVar29 > iVar34)) { + uVar4 = iVar29 - 1; + if ((int)uVar36 < iVar29) { + uVar4 = uVar36; + } + uVar36 = -(int)param_7 & 0xf; + lVar35 = *(long *)(param_1 + 0x50); + uVar5 = uVar28; + if (uVar36 < uVar28) { + uVar5 = uVar36; + } + uVar31 = 1; + local_20[4] = uVar3 - 1; + lVar19 = lVar19 + iVar34 * lVar35; + uVar36 = ((uVar28 - uVar5) - 0x10 >> 4) + 1; + uVar7 = (uVar28 - 1) - uVar5; + uVar20 = uVar20 & 0xffffffff; + local_4 = iVar34; + local_20[3] = uVar27; + local_20[2] = iVar34; + iVar33 = uVar36 * 0x10; + local_28 = (void *)CONCAT44(1,uVar27); + iVar29 = iVar34; + do { + piVar23 = (int *)&local_28; + if ((iVar29 < (int)uVar4 || iVar34 == iVar29) || (param_9 < 0x10)) { + do { + if (piVar23[4] <= iVar29) { + iVar37 = *piVar23; + piVar14 = piVar10 + (long)iVar37 * 2; + iVar32 = piVar14[1] + 0x8000 >> 0x10; + if (((int)uVar20 == 0) || (iVar29 < iVar32)) { + iVar12 = 0; + } + else { + do { + iVar12 = *piVar14; + uVar27 = (int)uVar20 - 1; + uVar20 = (ulong)uVar27; + iVar37 = (piVar23[1] + iVar37) - + (-(uint)((int)uVar3 <= piVar23[1] + iVar37) & uVar3); + piVar14 = piVar10 + (long)iVar37 * 2; + iVar32 = piVar14[1] + 0x8000 >> 0x10; + if (iVar29 < iVar32) break; + } while (uVar27 != 0); + } + iVar6 = *piVar14; + if (iVar32 <= iVar29) goto LAB_001aa0b8; + piVar23[4] = iVar32; + iVar2 = (iVar32 - iVar29) * 2; + *piVar23 = iVar37; + piVar23[2] = iVar12; + iVar37 = 0; + if (iVar2 != 0) { + iVar37 = ((iVar32 - iVar29) + (iVar6 - iVar12) * 2) / iVar2; + } + piVar23[3] = iVar37; + } + piVar23 = piVar23 + 5; + } while (piVar23 != ¶m_9); + } + lVar24 = (long)(int)uVar30; + lVar22 = (long)(int)uVar31; + iVar32 = local_20[lVar24 * 5]; + iVar37 = local_20[lVar22 * 5]; + if (iVar37 < iVar32) { + uVar30 = uVar30 ^ 1; + uVar31 = uVar31 ^ 1; + lVar24 = (long)(int)uVar30; + lVar22 = (long)(int)uVar31; + iVar32 = local_20[lVar24 * 5]; + iVar37 = local_20[lVar22 * 5]; + } + if (-1 < iVar29) { + iVar12 = local_7c + iVar37 >> 0x10; + iVar6 = local_80 + iVar32 >> 0x10; + if ((-1 < iVar12) && (iVar6 < iVar11)) { + if (iVar6 < 0) { + iVar6 = 0; + } + iVar2 = iVar11 + -1; + if (iVar12 < iVar11) { + iVar2 = iVar12; + } + puVar9 = (undefined1 *)(lVar19 + (int)(iVar6 * uVar28)); + puVar1 = (undefined1 *)(lVar19 + (int)(iVar2 * uVar28)); + if (puVar9 <= puVar1) { + do { + if (0 < (int)uVar28) { + if ((param_7 < puVar9 + 0x10 && puVar9 < param_7 + 0x10) || (uVar28 < 0x16)) { + lVar35 = 0; + do { + puVar9[lVar35] = param_7[lVar35]; + lVar35 = lVar35 + 1; + } while ((int)lVar35 < (int)uVar28); + } + else { + uVar27 = uVar5; + if (uVar5 == 0) { + uVar17 = 0; + if (0xe < uVar7) goto LAB_001aa558; + iVar12 = 1; + *puVar9 = *param_7; + } + else { + *puVar9 = *param_7; + if ((((uVar5 != 1) && (puVar9[1] = param_7[1], uVar5 != 2)) && + (puVar9[2] = param_7[2], uVar5 != 3)) && + ((puVar9[3] = param_7[3], uVar5 != 4 && + (puVar9[4] = param_7[4], uVar5 != 5)))) { + puVar9[5] = param_7[5]; + if (uVar5 == 6) { + uVar27 = 6; + } + else { + puVar9[6] = param_7[6]; + if ((((uVar5 != 7) && (puVar9[7] = param_7[7], uVar5 != 8)) && + ((puVar9[8] = param_7[8], uVar5 != 9 && + (((puVar9[9] = param_7[9], uVar5 != 10 && + (puVar9[10] = param_7[10], uVar5 != 0xb)) && + (puVar9[0xb] = param_7[0xb], uVar5 != 0xc)))))) && + (puVar9[0xc] = param_7[0xc], uVar5 != 0xd)) { + puVar9[0xd] = param_7[0xd]; + if (uVar5 == 0xf) { + puVar9[0xe] = param_7[0xe]; + } + else { + uVar27 = 0xe; + } + } + } + } + uVar17 = (ulong)uVar5; + if (0xe < uVar7) { +LAB_001aa558: + uVar18 = 0; + puVar16 = (undefined8 *)(param_7 + uVar17); + puVar26 = (undefined8 *)(puVar9 + uVar17); + do { + uVar25 = *puVar16; + uVar18 = uVar18 + 1; + puVar26[1] = puVar16[1]; + *puVar26 = uVar25; + puVar16 = puVar16 + 2; + puVar26 = puVar26 + 2; + } while (uVar18 < uVar36); + uVar27 = uVar27 + iVar33; + if (iVar33 == uVar28 - uVar5) goto LAB_001aa6ec; + } + iVar12 = uVar27 + 1; + puVar9[(int)uVar27] = param_7[(int)uVar27]; + if ((int)uVar28 <= iVar12) goto LAB_001aa6ec; + } + iVar6 = iVar12 + 1; + puVar9[iVar12] = param_7[iVar12]; + if (iVar6 < (int)uVar28) { + iVar2 = iVar12 + 2; + puVar9[iVar6] = param_7[iVar6]; + if (iVar2 < (int)uVar28) { + iVar6 = iVar12 + 3; + puVar9[iVar2] = param_7[iVar2]; + if (iVar6 < (int)uVar28) { + iVar2 = iVar12 + 4; + puVar9[iVar6] = param_7[iVar6]; + if (iVar2 < (int)uVar28) { + iVar6 = iVar12 + 5; + puVar9[iVar2] = param_7[iVar2]; + if (iVar6 < (int)uVar28) { + iVar2 = iVar12 + 6; + puVar9[iVar6] = param_7[iVar6]; + if (iVar2 < (int)uVar28) { + iVar6 = iVar12 + 7; + puVar9[iVar2] = param_7[iVar2]; + if (iVar6 < (int)uVar28) { + iVar2 = iVar12 + 8; + puVar9[iVar6] = param_7[iVar6]; + if (iVar2 < (int)uVar28) { + iVar6 = iVar12 + 9; + puVar9[iVar2] = param_7[iVar2]; + if (iVar6 < (int)uVar28) { + iVar2 = iVar12 + 10; + puVar9[iVar6] = param_7[iVar6]; + if (iVar2 < (int)uVar28) { + iVar6 = iVar12 + 0xb; + puVar9[iVar2] = param_7[iVar2]; + if (iVar6 < (int)uVar28) { + iVar2 = iVar12 + 0xc; + puVar9[iVar6] = param_7[iVar6]; + if (iVar2 < (int)uVar28) { + iVar12 = iVar12 + 0xd; + puVar9[iVar2] = param_7[iVar2]; + if (iVar12 < (int)uVar28) { + puVar9[iVar12] = param_7[iVar12]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001aa6ec: + puVar9 = puVar9 + (int)uVar28; + } while (puVar9 <= puVar1); + lVar35 = *(long *)(param_1 + 0x50); + } + } + } + iVar29 = iVar29 + 1; + lVar19 = lVar19 + lVar35; + iVar12 = local_20[lVar22 * 5 + 1]; + local_20[lVar24 * 5] = local_20[lVar24 * 5 + 1] + iVar32; + local_20[lVar22 * 5] = iVar37 + iVar12; + } while (iVar29 <= (int)uVar4); + } + } + } + else { + iVar11 = (int)((long)local_38 - (long)local_40 >> 3); + if ((0 < iVar11) && (local_40 != (int *)0x0)) { + if (iVar11 == 1) goto LAB_001aa0bc; + piVar10 = local_40 + 3; + uVar25 = 3; + piVar23 = local_40 + (ulong)(iVar11 - 2) * 2 + 5; + iVar29 = *local_40; + iVar11 = local_40[1]; + do { + iVar34 = piVar10[-1]; + iVar33 = *piVar10; + local_68 = iVar29; + local_64 = iVar11; + local_60 = iVar34; + local_5c = iVar33; + FUN_001aaaf0(param_1,&local_68,&local_60,param_7,param_8,param_9,uVar25,0x10); + piVar10 = piVar10 + 2; + uVar25 = 2; + iVar29 = iVar34; + iVar11 = iVar33; + } while (piVar10 != piVar23); + } + } +LAB_001aa0b8: + if (local_40 == (int *)0x0) { + return; + } +LAB_001aa0bc: + operator_delete(local_40); + return; +} + + +================================================================== + +### FUNC 001aaaf0 (2772 bytes) name=FUN_001aaaf0 + +void FUN_001aaaf0(long param_1,int *param_2,int *param_3,undefined1 *param_4,uint param_5, + int param_6,uint param_7,int param_8) + +{ + undefined1 *puVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + int iVar10; + long lVar11; + long lVar12; + undefined8 *puVar13; + ulong uVar14; + int *piVar15; + long lVar16; + uint uVar17; + int *piVar18; + uint uVar19; + long lVar20; + undefined1 *puVar21; + int iVar22; + undefined8 *puVar23; + int iVar24; + int iVar25; + uint uVar26; + int iVar27; + uint uVar28; + int iVar29; + uint uVar30; + int iVar31; + undefined8 uVar32; + double dVar33; + double __x; + double dVar34; + int iVar35; + double dVar36; + int iVar37; + int iVar38; + undefined8 local_58; + int local_50 [10]; + undefined8 local_28; + int local_20 [4]; + undefined4 local_10; + int local_4; + + uVar30 = 0x10 - param_8; + iVar31 = param_2[1] << (ulong)(uVar30 & 0x1f); + iVar29 = param_3[1]; + iVar9 = *param_3 << (ulong)(uVar30 & 0x1f); + iVar37 = *param_2 << (ulong)(uVar30 & 0x1f); + param_2[1] = iVar31; + iVar29 = iVar29 << (ulong)(uVar30 & 0x1f); + *param_2 = iVar37; + *param_3 = iVar9; + param_3[1] = iVar29; + if ((int)param_5 < 2) { + if (0xf < param_6) { + local_50[1] = iVar31; + local_50[0] = iVar37; + local_28 = CONCAT44(iVar29,iVar9); + FUN_001a5090(param_1,local_50,&local_28); + return; + } + if ((param_6 != 4 && param_6 != 1) && (param_8 != 0)) { + local_50[1] = iVar31; + local_50[0] = iVar37; + local_28 = CONCAT44(iVar29,iVar9); + FUN_001a3bb8(param_1,local_50,&local_28); + return; + } + local_50[0] = iVar37 + 0x8000 >> 0x10; + local_50[1] = iVar31 + 0x8000 >> 0x10; + iVar31 = iVar9 + 0x8000 >> 0x10; + iVar29 = iVar29 + 0x8000 >> 0x10; + *param_2 = local_50[0]; + param_2[1] = local_50[1]; + *param_3 = iVar31; + param_3[1] = iVar29; + local_28 = CONCAT44(iVar29,iVar31); + FUN_001a4e8c(param_1,local_50,&local_28,param_4,param_6); + return; + } + iVar7 = param_5 * 0x8000; + local_50[2] = 0; + local_50[3] = 0; + local_50[0] = 0; + local_50[1] = 0; + dVar36 = (double)(iVar29 - iVar31) * DAT_001ab5c8; + dVar34 = (double)(iVar37 - iVar9) * DAT_001ab5c8; + local_50[6] = 0; + local_50[7] = 0; + local_50[4] = 0; + local_50[5] = 0; + __x = dVar36 * dVar36 + dVar34 * dVar34; + if (ABS(__x) <= DAT_001ab5d0) goto LAB_001aabc4; + dVar33 = SQRT(__x); + if (NAN(dVar33)) { + dVar33 = sqrt(__x); + } + dVar33 = ((double)iVar7 + (double)((param_5 & 1) << 0x10) * 0.5) / dVar33; + lVar11 = lrint(dVar36 * dVar33); + lVar12 = lrint(dVar34 * dVar33); + iVar37 = (int)lVar11; + iVar29 = *param_2 + iVar37; + iVar9 = (int)lVar12; + iVar31 = param_2[1] + iVar9; + local_50[1] = iVar31; + local_50[0] = iVar29; + local_50[5] = param_3[1] - iVar9; + local_50[4] = *param_3 - iVar37; + local_50[6] = *param_3 + iVar37; + local_50[3] = param_2[1] - iVar9; + local_50[2] = *param_2 - iVar37; + local_50[7] = param_3[1] + iVar9; + lVar11 = *(long *)(param_1 + 0x10); + iVar9 = **(int **)(param_1 + 0x40); + iVar37 = (*(int **)(param_1 + 0x40))[1]; + if (*(int *)(param_1 + 4) < 1) { + uVar30 = 0; + } + else { + uVar30 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + iVar22 = iVar29; + iVar38 = iVar31; + if (param_6 < 0x10) { + iVar10 = 0x8000; + iVar35 = iVar10; + if (8 < param_6) goto LAB_001ab3e8; + iVar24 = 0; + iVar27 = 0; + piVar18 = local_50; + iVar25 = local_50[6]; + do { + iVar5 = piVar18[1]; + iVar6 = *piVar18; + piVar18 = piVar18 + 2; + if (iVar5 < iVar38) { + iVar38 = iVar5; + iVar27 = iVar24; + } + iVar24 = iVar24 + 1; + if (iVar31 < iVar5) { + iVar31 = iVar5; + } + if (iVar29 < iVar6) { + iVar29 = iVar6; + } + if (iVar6 < iVar22) { + iVar22 = iVar6; + } + /* WARNING: Ignoring partial resolution of indirect */ + local_58._0_4_ = iVar25; + FUN_001a3bb8(param_1,&local_58,&local_28,param_4); + iVar25 = iVar6; + } while (iVar24 != 4); + } + else { + iVar10 = 0; + iVar35 = 0xffff; +LAB_001ab3e8: + iVar24 = 0; + iVar27 = 0; + piVar18 = local_50; + iVar25 = local_50[6]; + do { + iVar5 = piVar18[1]; + iVar6 = *piVar18; + piVar18 = piVar18 + 2; + if (iVar5 < iVar38) { + iVar38 = iVar5; + iVar27 = iVar24; + } + iVar24 = iVar24 + 1; + if (iVar31 < iVar5) { + iVar31 = iVar5; + } + if (iVar29 < iVar6) { + iVar29 = iVar6; + } + if (iVar6 < iVar22) { + iVar22 = iVar6; + } + /* WARNING: Ignoring partial resolution of indirect */ + local_58._0_4_ = iVar25; + FUN_001a5090(param_1,&local_58,&local_28,param_4); + iVar25 = iVar6; + } while (iVar24 != 4); + } + uVar2 = iVar31 + 0x8000 >> 0x10; + iVar31 = iVar38 + 0x8000 >> 0x10; + if ((iVar22 + 0x8000 >> 0x10 < iVar37 && -1 < (int)(iVar29 + 0x8000U | uVar2)) && + (uVar26 = (uint)(iVar9 <= iVar31), iVar9 > iVar31)) { + uVar3 = iVar9 - 1; + if ((int)uVar2 < iVar9) { + uVar3 = uVar2; + } + uVar2 = -(int)param_4 & 0xf; + uVar28 = 1; + lVar12 = *(long *)(param_1 + 0x50); + local_20[3] = iVar27; + uVar4 = uVar30; + if (uVar2 < uVar30) { + uVar4 = uVar2; + } + uVar8 = (uVar30 - 1) - uVar4; + local_4 = iVar31; + uVar2 = ((uVar30 - uVar4) - 0x10 >> 4) + 1; + iVar22 = 4; + iVar9 = uVar2 * 0x10; + local_20[2] = iVar31; + local_10 = 3; + lVar11 = lVar11 + iVar31 * lVar12; + local_28 = CONCAT44(1,iVar27); + iVar29 = iVar31; + do { + piVar18 = (int *)&local_28; + if ((iVar29 < (int)uVar3 || iVar31 == iVar29) || (param_6 < 0x10)) { + do { + if (piVar18[4] <= iVar29) { + iVar24 = *piVar18; + piVar15 = local_50 + (long)iVar24 * 2; + iVar38 = local_50[(long)iVar24 * 2 + 1] + 0x8000 >> 0x10; + if ((iVar22 == 0) || (iVar29 < iVar38)) { + iVar25 = 0; + } + else { + do { + iVar25 = *piVar15; + iVar22 = iVar22 + -1; + iVar24 = piVar18[1] + iVar24 + (uint)(3 < piVar18[1] + iVar24) * -4; + piVar15 = local_50 + (long)iVar24 * 2; + iVar38 = local_50[(long)iVar24 * 2 + 1] + 0x8000 >> 0x10; + if (iVar29 < iVar38) break; + } while (iVar22 != 0); + } + iVar27 = *piVar15; + if (iVar38 <= iVar29) goto LAB_001aabc4; + piVar18[4] = iVar38; + iVar5 = (iVar38 - iVar29) * 2; + piVar18[2] = iVar25; + *piVar18 = iVar24; + iVar24 = 0; + if (iVar5 != 0) { + iVar24 = ((iVar38 - iVar29) + (iVar27 - iVar25) * 2) / iVar5; + } + piVar18[3] = iVar24; + } + piVar18 = piVar18 + 5; + } while (piVar18 != (int *)&stack0x00000000); + } + lVar16 = (long)(int)uVar26; + lVar20 = (long)(int)uVar28; + iVar38 = local_20[lVar16 * 5]; + iVar24 = local_20[lVar20 * 5]; + if (iVar24 < iVar38) { + uVar26 = uVar26 ^ 1; + uVar28 = uVar28 ^ 1; + lVar16 = (long)(int)uVar26; + lVar20 = (long)(int)uVar28; + iVar38 = local_20[lVar16 * 5]; + iVar24 = local_20[lVar20 * 5]; + } + if (-1 < iVar29) { + iVar25 = iVar10 + iVar24 >> 0x10; + iVar27 = iVar35 + iVar38 >> 0x10; + if ((-1 < iVar25) && (iVar27 < iVar37)) { + if (iVar27 < 0) { + iVar27 = 0; + } + iVar5 = iVar37 + -1; + if (iVar25 < iVar37) { + iVar5 = iVar25; + } + puVar21 = (undefined1 *)(lVar11 + (int)(iVar27 * uVar30)); + puVar1 = (undefined1 *)(lVar11 + (int)(iVar5 * uVar30)); + if (puVar21 <= puVar1) { + do { + if (0 < (int)uVar30) { + if ((param_4 < puVar21 + 0x10 && puVar21 < param_4 + 0x10) || (uVar30 < 0x16)) { + lVar12 = 0; + do { + puVar21[lVar12] = param_4[lVar12]; + lVar12 = lVar12 + 1; + } while ((int)lVar12 < (int)uVar30); + } + else { + uVar19 = uVar4; + if (uVar4 == 0) { + uVar14 = 0; + if (0xe < uVar8) goto LAB_001ab1a8; + iVar25 = 1; + *puVar21 = *param_4; + } + else { + *puVar21 = *param_4; + if ((((uVar4 != 1) && (puVar21[1] = param_4[1], uVar4 != 2)) && + (puVar21[2] = param_4[2], uVar4 != 3)) && + ((puVar21[3] = param_4[3], uVar4 != 4 && + (puVar21[4] = param_4[4], uVar4 != 5)))) { + puVar21[5] = param_4[5]; + if (uVar4 == 6) { + uVar19 = 6; + } + else { + puVar21[6] = param_4[6]; + if ((((uVar4 != 7) && (puVar21[7] = param_4[7], uVar4 != 8)) && + ((puVar21[8] = param_4[8], uVar4 != 9 && + (((puVar21[9] = param_4[9], uVar4 != 10 && + (puVar21[10] = param_4[10], uVar4 != 0xb)) && + (puVar21[0xb] = param_4[0xb], uVar4 != 0xc)))))) && + (puVar21[0xc] = param_4[0xc], uVar4 != 0xd)) { + puVar21[0xd] = param_4[0xd]; + if (uVar4 == 0xf) { + puVar21[0xe] = param_4[0xe]; + } + else { + uVar19 = 0xe; + } + } + } + } + uVar14 = (ulong)uVar4; + if (0xe < uVar8) { +LAB_001ab1a8: + uVar17 = 0; + puVar13 = (undefined8 *)(param_4 + uVar14); + puVar23 = (undefined8 *)(puVar21 + uVar14); + do { + uVar32 = *puVar13; + uVar17 = uVar17 + 1; + puVar23[1] = puVar13[1]; + *puVar23 = uVar32; + puVar13 = puVar13 + 2; + puVar23 = puVar23 + 2; + } while (uVar17 < uVar2); + uVar19 = uVar19 + iVar9; + if (iVar9 == uVar30 - uVar4) goto LAB_001ab338; + } + iVar25 = uVar19 + 1; + puVar21[(int)uVar19] = param_4[(int)uVar19]; + if ((int)uVar30 <= iVar25) goto LAB_001ab338; + } + iVar27 = iVar25 + 1; + puVar21[iVar25] = param_4[iVar25]; + if (iVar27 < (int)uVar30) { + iVar5 = iVar25 + 2; + puVar21[iVar27] = param_4[iVar27]; + if (iVar5 < (int)uVar30) { + iVar27 = iVar25 + 3; + puVar21[iVar5] = param_4[iVar5]; + if (iVar27 < (int)uVar30) { + iVar5 = iVar25 + 4; + puVar21[iVar27] = param_4[iVar27]; + if (iVar5 < (int)uVar30) { + iVar27 = iVar25 + 5; + puVar21[iVar5] = param_4[iVar5]; + if (iVar27 < (int)uVar30) { + iVar5 = iVar25 + 6; + puVar21[iVar27] = param_4[iVar27]; + if (iVar5 < (int)uVar30) { + iVar27 = iVar25 + 7; + puVar21[iVar5] = param_4[iVar5]; + if (iVar27 < (int)uVar30) { + iVar5 = iVar25 + 8; + puVar21[iVar27] = param_4[iVar27]; + if (iVar5 < (int)uVar30) { + iVar27 = iVar25 + 9; + puVar21[iVar5] = param_4[iVar5]; + if (iVar27 < (int)uVar30) { + iVar5 = iVar25 + 10; + puVar21[iVar27] = param_4[iVar27]; + if (iVar5 < (int)uVar30) { + iVar27 = iVar25 + 0xb; + puVar21[iVar5] = param_4[iVar5]; + if (iVar27 < (int)uVar30) { + iVar5 = iVar25 + 0xc; + puVar21[iVar27] = param_4[iVar27]; + if (iVar5 < (int)uVar30) { + iVar25 = iVar25 + 0xd; + puVar21[iVar5] = param_4[iVar5]; + if (iVar25 < (int)uVar30) { + puVar21[iVar25] = param_4[iVar25]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001ab338: + puVar21 = puVar21 + (int)uVar30; + } while (puVar21 <= puVar1); + lVar12 = *(long *)(param_1 + 0x50); + } + } + } + iVar29 = iVar29 + 1; + lVar11 = lVar11 + lVar12; + iVar25 = local_20[lVar20 * 5 + 1]; + local_20[lVar16 * 5] = local_20[lVar16 * 5 + 1] + iVar38; + local_20[lVar20 * 5] = iVar24 + iVar25; + } while (iVar29 <= (int)uVar3); + } +LAB_001aabc4: + iVar29 = 0; + do { + uVar30 = iVar29 + 1; + if ((param_7 & uVar30) != 0) { + uVar32 = *(undefined8 *)param_2; + if (param_6 < 0x10) { + local_28 = CONCAT44((int)((ulong)uVar32 >> 0x20) + 0x8000 >> 0x10, + (int)uVar32 + 0x8000 >> 0x10); + FUN_001a1838(param_1,&local_28,iVar7 + 0x8000 >> 0x10,param_4); + } + else { + local_58 = uVar32; + local_28 = CONCAT44(iVar7,iVar7); + FUN_001a9f40(param_1,&local_58,&local_28,0,0,0x168,param_4,0xffffffff,param_6); + } + } + iVar29 = 1; + *(undefined8 *)param_2 = *(undefined8 *)param_3; + } while (uVar30 != 2); + return; +} + + +================================================================== + +### FUNC 001ab5d8 (816 bytes) name=line + +/* cv::line(cv::_InputOutputArray const&, cv::Point_, cv::Point_, cv::Scalar_ + const&, int, int, int) */ + +void cv::line(_InputArray *param_1,undefined8 *param_2,undefined8 *param_3,Scalar_ *param_4, + uint param_5,int param_6,uint param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + char *pcVar11; + undefined4 *puVar12; + Mat *pMVar13; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined1 auStack_80 [32]; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar10 = _InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar13; + local_5c = *(int *)(pMVar13 + 4); + local_58 = *(undefined4 *)(pMVar13 + 8); + local_54 = *(undefined4 *)(pMVar13 + 0xc); + local_50 = *(undefined8 *)(pMVar13 + 0x10); + local_48 = *(undefined8 *)(pMVar13 + 0x18); + local_40 = *(undefined8 *)(pMVar13 + 0x20); + local_38 = *(undefined8 *)(pMVar13 + 0x28); + local_30 = *(undefined8 *)(pMVar13 + 0x30); + local_28 = *(long *)(pMVar13 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar13 + 0x48); + local_8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((param_6 == 0x10) && ((local_60 & 7) != 0)) { + param_6 = 8; + } + if (0x7fff < param_5) { + local_a0 = 0; + local_98 = 0; + pcVar11 = (char *)String::allocate((String *)&local_a0,0x2c); + uVar6 = s_0_<__thickness_&&_thickness_<__M_0043f5a0._40_4_; + uVar9 = s_0_<__thickness_&&_thickness_<__M_0043f5a0._24_8_; + uVar8 = s_0_<__thickness_&&_thickness_<__M_0043f5a0._16_8_; + uVar5 = s_0_<__thickness_&&_thickness_<__M_0043f5a0._8_8_; + uVar4 = s_0_<__thickness_&&_thickness_<__M_0043f5a0._0_8_; + *(undefined8 *)(pcVar11 + 0x20) = s_0_<__thickness_&&_thickness_<__M_0043f5a0._32_8_; + *(undefined4 *)(pcVar11 + 0x28) = uVar6; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar8; + *(undefined8 *)(pcVar11 + 0x18) = uVar9; + error(-0xd7,(String *)&local_a0, + "void cv::line(cv::InputOutputArray, cv::Point, cv::Point, const Scalar&, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x685); + String::deallocate((String *)&local_a0); + } + if (0x10 < param_7) { + local_90 = 0; + local_88 = 0; + pcVar11 = (char *)String::allocate((String *)&local_90,0x1f); + cVar2 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0[0x1e]; + uVar7 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._28_2_; + uVar6 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._24_4_; + uVar5 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._8_8_; + uVar4 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar6; + *(undefined2 *)(pcVar11 + 0x1c) = uVar7; + pcVar11[0x1e] = cVar2; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)&local_90, + "void cv::line(cv::InputOutputArray, cv::Point, cv::Point, const Scalar&, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x686); + String::deallocate((String *)&local_90); + } + scalarToRawData(param_4,auStack_80,local_60 & 0xfff,0); + local_a0 = *param_2; + local_90 = *param_3; + FUN_001aaaf0((Mat *)&local_60,&local_a0,&local_90,auStack_80,param_5,param_6,3,param_7); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + puVar12 = local_20; + do { + *puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = puVar12 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001ab950 (516 bytes) name=arrowedLine + +/* cv::arrowedLine(cv::_InputOutputArray const&, cv::Point_, cv::Point_, + cv::Scalar_ const&, int, int, int, double) */ + +void cv::arrowedLine(double param_1_00,undefined8 param_1,int *param_3,int *param_4, + undefined8 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + long lVar1; + long lVar2; + double dVar3; + double dVar4; + double dVar5; + double __x; + int local_10; + int local_c; + int local_8; + int local_4; + + local_c = param_3[1]; + local_4 = param_4[1]; + local_10 = *param_3; + local_8 = *param_4; + dVar5 = (double)(local_c - local_4) * (double)(local_c - local_4) + + (double)(local_10 - local_8) * (double)(local_10 - local_8); + dVar3 = SQRT(dVar5); + if (NAN(dVar3)) { + dVar3 = ::sqrt(dVar5); + local_10 = *param_3; + local_8 = *param_4; + local_c = param_3[1]; + local_4 = param_4[1]; + } + param_1_00 = param_1_00 * dVar3; + line(param_1,&local_10,&local_8,param_5,param_6,param_7,param_8); + dVar5 = atan2((double)param_3[1] - (double)param_4[1],(double)*param_3 - (double)*param_4); + dVar3 = DAT_001abb58; + __x = dVar5 + DAT_001abb58; + dVar4 = cos(__x); + lVar1 = lrint((double)*param_4 + param_1_00 * dVar4); + dVar4 = sin(__x); + lVar2 = lrint((double)param_4[1] + param_1_00 * dVar4); + local_c = (int)lVar2; + local_8 = *param_4; + local_4 = param_4[1]; + local_10 = (int)lVar1; + line(param_1,&local_10,&local_8,param_5,param_6,param_7,param_8); + dVar4 = cos(dVar5 - dVar3); + lVar1 = lrint((double)*param_4 + param_1_00 * dVar4); + dVar3 = sin(dVar5 - dVar3); + lVar2 = lrint((double)param_4[1] + param_1_00 * dVar3); + local_c = (int)lVar2; + local_8 = *param_4; + local_4 = param_4[1]; + local_10 = (int)lVar1; + line(param_1,&local_10,&local_8,param_5,param_6,param_7,param_8); + return; +} + + +================================================================== + +### FUNC 001abb60 (340 bytes) name=cvLine + +void cvLine(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5, + undefined8 param_6,undefined8 param_7,undefined4 param_8,undefined4 param_9, + AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_9c = (undefined4)((ulong)param_7 >> 0x20); + local_88 = 0; + local_84 = 0; + local_98[0] = 0x3010000; + local_a8 = (undefined4)param_6; + local_a4 = (undefined4)((ulong)param_6 >> 0x20); + local_a0 = (undefined4)param_7; + local_90 = aMStack_60; + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::line(local_98,&local_a8,&local_a0,&local_80,param_8,param_9,(ulong)param_10 & 0xffffffff); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001abcdc (792 bytes) name=polylines + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::polylines(cv::Mat&, cv::Point_ const* const*, int const*, int, bool, cv::Scalar_ + const&, int, int, int) */ + +void cv::polylines(Mat *param_1,Point_ **param_2,int *param_3,int param_4,bool param_5, + Scalar_ *param_6,int param_7,int param_8,int param_9) + +{ + undefined4 *puVar1; + uint uVar2; + undefined4 uVar3; + undefined4 uVar4; + int iVar5; + uint uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + void *__dest; + Point_ *pPVar13; + undefined8 *puVar14; + undefined4 uVar15; + undefined4 uVar16; + int iVar17; + ulong uVar18; + undefined4 *puVar19; + long lVar20; + long lVar21; + undefined4 local_38; + undefined4 local_34; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + if ((param_8 == 0x10) && ((*(uint *)param_1 & 7) != 0)) { + param_8 = 8; + } + if ((((param_2 == (Point_ **)0x0) || (param_3 == (int *)0x0)) || (param_4 < 0)) || + ((0x7fff < (uint)param_7 || (0x10 < (uint)param_9)))) { + local_20 = 0; + local_18 = 0; + __dest = (void *)String::allocate((String *)&local_20,0x70); + memcpy(__dest, + "pts && npts && ncontours >= 0 && 0 <= thickness && thickness <= MAX_THICKNESS && 0 <= shift && shift <= XY_SHIFT" + ,0x70); + error(-0xd7,(String *)&local_20, + "void cv::polylines(cv::Mat&, const Point* const*, const int*, int, bool, const Scalar&, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x747); + String::deallocate((String *)&local_20); + } + scalarToRawData(param_6,&local_20,*(uint *)param_1 & 0xfff,0); + if (0 < param_4) { + lVar21 = 0; + uVar2 = param_5 ^ 1; + lVar20 = NEON_shl((ulong)(byte)uVar2,3); + do { + iVar5 = param_3[lVar21]; + pPVar13 = param_2[lVar21]; + if ((0 < iVar5) && (pPVar13 != (Point_ *)0x0)) { + uVar6 = iVar5 - 1; + if (param_5 == 0) { + uVar6 = 0; + } + if (((uint)((uint)param_9 < 0x11) & (uint)~param_7 >> 0x1f) == 0) { + local_30 = 0; + local_28 = 0; + puVar14 = (undefined8 *)String::allocate((String *)&local_30,0x31); + uVar12 = DAT_0043f670; + uVar11 = DAT_0043f668; + uVar10 = DAT_0043f660; + uVar9 = DAT_0043f658; + uVar8 = DAT_0043f650; + uVar7 = _DAT_0043f648; + *(undefined1 *)(puVar14 + 6) = DAT_0043f678; + *puVar14 = uVar7; + puVar14[1] = uVar8; + puVar14[2] = uVar9; + puVar14[3] = uVar10; + puVar14[4] = uVar11; + puVar14[5] = uVar12; + error(-0xd7,(String *)&local_30, + "void cv::PolyLine(cv::Mat&, const Point*, int, bool, const void*, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x66d); + String::deallocate((String *)&local_30); + } + uVar18 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar6 << 3; + if ((int)uVar2 < iVar5) { + puVar19 = (undefined4 *)(pPVar13 + lVar20); + iVar17 = uVar2 + 2; + uVar16 = *(undefined4 *)(pPVar13 + uVar18); + uVar15 = *(undefined4 *)(pPVar13 + uVar18 + 4); + do { + uVar3 = *puVar19; + puVar1 = puVar19 + 2; + uVar4 = puVar19[1]; + local_30 = CONCAT44(uVar15,uVar16); + local_38 = uVar3; + local_34 = uVar4; + FUN_001aaaf0(param_1,&local_30,&local_38,&local_20,param_7,param_8,iVar17,param_9); + puVar19 = puVar1; + iVar17 = 2; + uVar16 = uVar3; + uVar15 = uVar4; + } while (puVar1 != (undefined4 *) + (pPVar13 + ((ulong)(byte)uVar2 + 1 + (ulong)(~uVar2 + iVar5)) * 8)); + } + } + lVar21 = lVar21 + 1; + } while (lVar21 != (ulong)(param_4 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 001ac01c (1704 bytes) name=polylines + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::polylines(cv::_InputOutputArray const&, cv::_InputArray const&, bool, cv::Scalar_ + const&, int, int, int) */ + +void cv::polylines(_InputOutputArray *param_1,_InputArray *param_2,bool param_3,Scalar_ *param_4, + int param_5,int param_6,int param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + Point_ **ppPVar8; + int iVar9; + int iVar10; + int iVar11; + long lVar12; + char *pcVar13; + ulong uVar14; + long lVar15; + undefined4 *puVar16; + int *piVar17; + Mat *pMVar18; + ulong uVar19; + long lVar20; + undefined8 local_950; + undefined8 local_948; + undefined4 local_940; + int local_93c; + undefined4 local_938; + undefined4 local_934; + undefined8 local_930; + undefined8 local_928; + undefined8 local_920; + undefined8 local_918; + undefined8 local_910; + long local_908; + undefined4 *local_900; + undefined8 *local_8f8; + undefined8 local_8f0; + undefined8 local_8e8; + uint local_8e0; + int local_8dc; + int local_8d8; + int local_8d4; + Point_ *local_8d0; + undefined8 local_8c8; + undefined8 local_8c0; + undefined8 local_8b8; + undefined8 local_8b0; + long local_8a8; + int *local_8a0; + undefined8 *local_898; + undefined8 local_890; + undefined8 local_888; + int *local_880; + ulong local_878; + int local_870 [264]; + Point_ **local_450; + ulong local_448; + Point_ *local_440 [136]; + + iVar9 = _InputArray::kind((_InputArray *)param_1); + if (iVar9 == 0x10000) { + pMVar18 = *(Mat **)(param_1 + 8); + local_900 = &local_938; + local_8f8 = &local_8f0; + local_940 = *(undefined4 *)pMVar18; + local_93c = *(int *)(pMVar18 + 4); + local_938 = *(undefined4 *)(pMVar18 + 8); + local_934 = *(undefined4 *)(pMVar18 + 0xc); + local_930 = *(undefined8 *)(pMVar18 + 0x10); + local_928 = *(undefined8 *)(pMVar18 + 0x18); + local_920 = *(undefined8 *)(pMVar18 + 0x20); + local_918 = *(undefined8 *)(pMVar18 + 0x28); + local_910 = *(undefined8 *)(pMVar18 + 0x30); + local_908 = *(long *)(pMVar18 + 0x38); + local_8e8 = 0; + local_8f0 = 0; + if (local_908 != 0) { + piVar1 = (int *)(local_908 + 0x14); + do { + cVar2 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar18 + 4) < 3) { + local_8f0 = **(undefined8 **)(pMVar18 + 0x48); + local_8e8 = (*(undefined8 **)(pMVar18 + 0x48))[1]; + } + else { + local_93c = 0; + Mat::copySize((Mat *)&local_940,pMVar18); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar9 = _InputArray::kind(param_2); + if ((iVar9 == 0x40000) || (iVar9 = _InputArray::kind(param_2), iVar9 == 0x50000)) { + iVar9 = _InputArray::total(param_2,-1); + if (iVar9 == 0) { + if (local_908 != 0) { + piVar1 = (int *)(local_908 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_940); + } + } + if (0 < local_93c) { + iVar9 = 0; + puVar16 = local_900; + do { + *puVar16 = 0; + iVar9 = iVar9 + 1; + puVar16 = puVar16 + 1; + } while (iVar9 < local_93c); + } + local_908 = 0; + local_918 = 0; + local_920 = 0; + local_928 = 0; + local_930 = 0; + if (local_8f8 == &local_8f0) { + s_p_checkVector_2__CV_32S__>__0_0043f680[0] = + (char)s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_; + s_p_checkVector_2__CV_32S__>__0_0043f680[1] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,1); + s_p_checkVector_2__CV_32S__>__0_0043f680[2] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,2); + s_p_checkVector_2__CV_32S__>__0_0043f680[3] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,3); + s_p_checkVector_2__CV_32S__>__0_0043f680[4] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,4); + s_p_checkVector_2__CV_32S__>__0_0043f680[5] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,5); + s_p_checkVector_2__CV_32S__>__0_0043f680[6] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,6); + s_p_checkVector_2__CV_32S__>__0_0043f680[7] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_,7); + s_p_checkVector_2__CV_32S__>__0_0043f680[8] = + (char)s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_; + s_p_checkVector_2__CV_32S__>__0_0043f680[9] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,1); + s_p_checkVector_2__CV_32S__>__0_0043f680[10] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,2); + s_p_checkVector_2__CV_32S__>__0_0043f680[0xb] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,3); + s_p_checkVector_2__CV_32S__>__0_0043f680[0xc] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,4); + s_p_checkVector_2__CV_32S__>__0_0043f680[0xd] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,5); + s_p_checkVector_2__CV_32S__>__0_0043f680[0xe] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,6); + s_p_checkVector_2__CV_32S__>__0_0043f680[0xf] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_,7); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x10] = + (char)s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_; + s_p_checkVector_2__CV_32S__>__0_0043f680[0x11] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,1); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x12] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,2); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x13] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,3); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x14] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,4); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x15] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,5); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x16] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,6); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x17] = + SUB81(s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_,7); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x18] = + (char)s_p_checkVector_2__CV_32S__>__0_0043f680._24_4_; + s_p_checkVector_2__CV_32S__>__0_0043f680[0x19] = + SUB41(s_p_checkVector_2__CV_32S__>__0_0043f680._24_4_,1); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x1a] = + SUB41(s_p_checkVector_2__CV_32S__>__0_0043f680._24_4_,2); + s_p_checkVector_2__CV_32S__>__0_0043f680[0x1b] = + SUB41(s_p_checkVector_2__CV_32S__>__0_0043f680._24_4_,3); + return; + } + goto LAB_001ac264; + } + uVar19 = (ulong)iVar9; + local_450 = local_440; + local_448 = 0x88; + if (uVar19 < 0x89) { + bVar4 = true; + goto LAB_001ac0d0; + } + uVar14 = uVar19 << 3; + if (0xfe0000000000000 < uVar19) { + uVar14 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar14); + local_880 = local_870; + local_878 = 0x108; + if (uVar19 < 0x109) { + bVar4 = true; + goto LAB_001ac0f0; + } + uVar14 = uVar19 << 2; + if (0x1fc0000000000000 < uVar19) { + uVar14 = 0xffffffffffffffff; + } + local_448 = uVar19; + local_880 = operator_new__(uVar14); + bVar4 = true; + local_878 = uVar19; + } + else { + bVar4 = false; + iVar9 = 1; + uVar19 = 1; +LAB_001ac0d0: + local_450 = local_440; +LAB_001ac0f0: + local_880 = local_870; + local_878 = uVar19; + local_448 = uVar19; + } + ppPVar8 = local_450; + piVar1 = local_880; + lVar20 = 0; + if (0 < iVar9) { + do { + iVar11 = (int)lVar20; + if (!bVar4) { + iVar11 = -1; + } + iVar10 = _InputArray::kind(param_2); + if ((iVar10 == 0x10000) && (iVar11 < 0)) { + pMVar18 = *(Mat **)(param_2 + 8); + local_898 = &local_890; + local_8e0 = *(uint *)pMVar18; + local_8dc = *(int *)(pMVar18 + 4); + local_8d8 = *(int *)(pMVar18 + 8); + local_8d4 = *(int *)(pMVar18 + 0xc); + local_8d0 = *(Point_ **)(pMVar18 + 0x10); + local_8c8 = *(undefined8 *)(pMVar18 + 0x18); + local_8c0 = *(undefined8 *)(pMVar18 + 0x20); + local_8b8 = *(undefined8 *)(pMVar18 + 0x28); + local_8b0 = *(undefined8 *)(pMVar18 + 0x30); + local_8a8 = *(long *)(pMVar18 + 0x38); + local_888 = 0; + local_890 = 0; + if (local_8a8 != 0) { + piVar17 = (int *)(local_8a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar3) { + *piVar17 = *piVar17 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + local_8a0 = &local_8d8; + if (*(int *)(pMVar18 + 4) < 3) { + local_890 = **(undefined8 **)(pMVar18 + 0x48); + local_888 = (*(undefined8 **)(pMVar18 + 0x48))[1]; + } + else { + local_8dc = 0; + Mat::copySize((Mat *)&local_8e0,pMVar18); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (local_8dc < 3) { + lVar15 = (long)local_8d4 * (long)local_8d8; + } + else { + lVar12 = 0; + lVar15 = 1; + do { + piVar17 = local_8a0 + lVar12; + lVar12 = lVar12 + 1; + lVar15 = lVar15 * *piVar17; + } while ((int)lVar12 < local_8dc); + } + if (lVar15 == 0) { + piVar1[lVar20] = 0; + if (local_8a8 != 0) { + piVar17 = (int *)(local_8a8 + 0x14); + do { + iVar11 = *piVar17; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar3) { + *piVar17 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_8e0); + } + } + if (0 < local_8dc) { + iVar11 = 0; + piVar17 = local_8a0; + do { + *piVar17 = 0; + iVar11 = iVar11 + 1; + piVar17 = piVar17 + 1; + } while (iVar11 < local_8dc); + } + } + else { + iVar11 = Mat::checkVector((Mat *)&local_8e0,2,4,true); + if (iVar11 < 0) { + local_950 = 0; + local_948 = 0; + pcVar13 = (char *)String::allocate((String *)&local_950,0x1d); + cVar2 = s_p_checkVector_2__CV_32S__>__0_0043f680[0x1c]; + uVar7 = s_p_checkVector_2__CV_32S__>__0_0043f680._24_4_; + *(undefined8 *)(pcVar13 + 0x10) = s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_; + *(undefined4 *)(pcVar13 + 0x18) = uVar7; + uVar6 = s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_; + uVar5 = s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_; + pcVar13[0x1c] = cVar2; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + error(-0xd7,(String *)&local_950, + "void cv::polylines(cv::InputOutputArray, cv::InputArrayOfArrays, bool, const Scalar&, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x8be); + String::deallocate((String *)&local_950); + } + ppPVar8[lVar20] = local_8d0; + piVar1[lVar20] = + (int)(local_8d8 * local_8d4 + (local_8e0 >> 3 & 0x1ff) * local_8d8 * local_8d4) / 2; + if (local_8a8 != 0) { + piVar17 = (int *)(local_8a8 + 0x14); + do { + iVar11 = *piVar17; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar3) { + *piVar17 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_8e0); + } + } + if (0 < local_8dc) { + iVar11 = 0; + piVar17 = local_8a0; + do { + *piVar17 = 0; + iVar11 = iVar11 + 1; + piVar17 = piVar17 + 1; + } while (iVar11 < local_8dc); + } + } + local_8a8 = 0; + local_8b8 = 0; + local_8c0 = 0; + local_8c8 = 0; + local_8d0 = (Point_ *)0x0; + if (local_898 != &local_890) { + fastFree(local_898); + } + lVar20 = lVar20 + 1; + } while ((int)lVar20 < iVar9); + } + polylines((Mat *)&local_940,ppPVar8,piVar1,iVar9,param_3,param_4,param_5,param_6,param_7); + if ((local_880 != local_870) && (local_880 != (int *)0x0)) { + operator_delete__(local_880); + } + if ((local_450 != local_440) && (local_450 != (Point_ **)0x0)) { + operator_delete__(local_450); + } + Mat::release((Mat *)&local_940); + if (local_8f8 == &local_8f0) { + return; + } +LAB_001ac264: + fastFree(local_8f8); + return; +} + + +================================================================== + +### FUNC 001ac764 (324 bytes) name=cvPolyLine + +void cvPolyLine(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,Point_ **param_6,int *param_7,int param_8,int param_9, + AutoBuffer *param_10,int param_11,int param_12) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::polylines(aMStack_60,param_6,param_7,param_8,param_9 != 0,(Scalar_ *)&local_80,(int)param_10, + param_11,param_12); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001ac8d0 (1076 bytes) name=rectangle + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::rectangle(cv::_InputOutputArray const&, cv::Point_, cv::Point_, cv::Scalar_ + const&, int, int, int) */ + +void cv::rectangle(_InputArray *param_1,undefined4 *param_2,undefined4 *param_3,Scalar_ *param_4, + int param_5,int param_6,uint param_7) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + char *pcVar14; + undefined8 *puVar15; + undefined4 *puVar16; + Mat *pMVar17; + undefined4 uVar18; + undefined4 *puVar19; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined4 local_a0 [16]; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar17 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar17; + local_5c = *(int *)(pMVar17 + 4); + local_58 = *(undefined4 *)(pMVar17 + 8); + local_54 = *(undefined4 *)(pMVar17 + 0xc); + local_50 = *(undefined8 *)(pMVar17 + 0x10); + local_48 = *(undefined8 *)(pMVar17 + 0x18); + local_40 = *(undefined8 *)(pMVar17 + 0x20); + local_38 = *(undefined8 *)(pMVar17 + 0x28); + local_30 = *(undefined8 *)(pMVar17 + 0x30); + local_28 = *(long *)(pMVar17 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar17 + 0x48); + local_8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((param_6 == 0x10) && ((local_60 & 7) != 0)) { + param_6 = 8; + } + if (0x7fff < param_5) { + local_d0 = 0; + local_c8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_d0,0x1a); + uVar8 = s_thickness_<__MAX_THICKNESS_0043f6a0._24_2_; + uVar7 = s_thickness_<__MAX_THICKNESS_0043f6a0._8_8_; + uVar6 = s_thickness_<__MAX_THICKNESS_0043f6a0._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_thickness_<__MAX_THICKNESS_0043f6a0._16_8_; + *(undefined2 *)(pcVar14 + 0x18) = uVar8; + *(undefined8 *)pcVar14 = uVar6; + *(undefined8 *)(pcVar14 + 8) = uVar7; + error(-0xd7,(String *)&local_d0, + "void cv::rectangle(cv::InputOutputArray, cv::Point, cv::Point, const Scalar&, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x6a8); + String::deallocate((String *)&local_d0); + } + if (0x10 < param_7) { + local_c0 = 0; + local_b8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_c0,0x1f); + cVar4 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0[0x1e]; + uVar8 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._28_2_; + uVar3 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._24_4_; + uVar7 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._8_8_; + uVar6 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._16_8_; + *(undefined4 *)(pcVar14 + 0x18) = uVar3; + *(undefined2 *)(pcVar14 + 0x1c) = uVar8; + pcVar14[0x1e] = cVar4; + *(undefined8 *)pcVar14 = uVar6; + *(undefined8 *)(pcVar14 + 8) = uVar7; + error(-0xd7,(String *)&local_c0, + "void cv::rectangle(cv::InputOutputArray, cv::Point, cv::Point, const Scalar&, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x6a9); + String::deallocate((String *)&local_c0); + } + puVar16 = local_a0 + 8; + scalarToRawData(param_4,puVar16,local_60 & 0xfff,0); + puVar19 = local_a0; + local_a0[0] = *param_2; + local_a0[1] = param_2[1]; + local_a0[2] = *param_3; + local_a0[3] = param_2[1]; + local_a0[4] = *param_3; + local_a0[5] = param_3[1]; + local_a0[6] = *param_2; + local_a0[7] = param_3[1]; + if (param_5 < 0) { + FUN_001a63a4((Mat *)&local_60,puVar19,4,puVar16,param_6,param_7); + } + else { + if (0x10 < param_7) { + local_b0 = 0; + local_a8 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_b0,0x31); + uVar12 = DAT_0043f670; + uVar11 = DAT_0043f668; + uVar10 = DAT_0043f660; + uVar9 = DAT_0043f658; + uVar7 = DAT_0043f650; + uVar6 = _DAT_0043f648; + *(undefined1 *)(puVar15 + 6) = DAT_0043f678; + *puVar15 = uVar6; + puVar15[1] = uVar7; + puVar15[2] = uVar9; + puVar15[3] = uVar10; + puVar15[4] = uVar11; + puVar15[5] = uVar12; + error(-0xd7,(String *)&local_b0, + "void cv::PolyLine(cv::Mat&, const Point*, int, bool, const void*, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x66d); + String::deallocate((String *)&local_b0); + } + uVar18 = local_a0[6]; + uVar3 = local_a0[7]; + do { + local_d4 = uVar3; + uVar2 = *puVar19; + uVar3 = puVar19[1]; + local_e0 = uVar2; + local_dc = uVar3; + local_d8 = uVar18; + FUN_001aaaf0((Mat *)&local_60,&local_d8,&local_e0,puVar16,param_5,param_6,2,param_7); + puVar19 = puVar19 + 2; + uVar18 = uVar2; + } while (puVar19 != local_a0 + 8); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar13 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + puVar16 = local_20; + do { + *puVar16 = 0; + iVar13 = iVar13 + 1; + puVar16 = puVar16 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001acd64 (316 bytes) name=rectangle + +/* cv::rectangle(cv::Mat&, cv::Rect_, cv::Scalar_ const&, int, int, int) */ + +void cv::rectangle(undefined8 param_1,int *param_2,undefined8 param_3,undefined4 param_4, + undefined4 param_5,uint param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + char *pcVar6; + int local_28; + int local_24; + int local_20; + int local_1c; + undefined8 local_18; + undefined8 local_10; + undefined4 local_8; + undefined4 local_4; + + if (0x10 < param_6) { + local_18 = 0; + local_10 = 0; + pcVar6 = (char *)String::allocate((String *)&local_18,0x1f); + cVar5 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0[0x1e]; + uVar4 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._28_2_; + uVar3 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._24_4_; + uVar2 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._8_8_; + uVar1 = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._0_8_; + *(undefined8 *)(pcVar6 + 0x10) = s_0_<__shift_&&_shift_<__XY_SHIFT_0043f4d0._16_8_; + *(undefined4 *)(pcVar6 + 0x18) = uVar3; + *(undefined2 *)(pcVar6 + 0x1c) = uVar4; + pcVar6[0x1e] = cVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + error(-0xd7,(String *)&local_18, + "void cv::rectangle(cv::Mat&, cv::Rect, const Scalar&, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x6c2); + String::deallocate((String *)&local_18); + } + if (0 < param_2[2] * param_2[3]) { + local_28 = *param_2; + local_24 = param_2[1]; + local_1c = 1 << (ulong)(param_6 & 0x1f); + local_20 = (param_2[2] + local_28) - local_1c; + local_1c = (param_2[3] + local_24) - local_1c; + local_8 = 0; + local_4 = 0; + local_18 = CONCAT44(local_18._4_4_,0x3010000); + local_10 = param_1; + rectangle(&local_18,&local_28,&local_20,param_3,param_4,param_5,param_6); + } + return; +} + + +================================================================== + +### FUNC 001aceb4 (312 bytes) name=cvRectangleR + +void cvRectangleR(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,undefined8 param_6,undefined8 param_7,undefined4 param_8, + undefined4 param_9,AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_84 = (undefined4)((ulong)param_7 >> 0x20); + local_90 = (undefined4)param_6; + local_8c = (undefined4)((ulong)param_6 >> 0x20); + local_88 = (undefined4)param_7; + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::rectangle(aMStack_60,&local_90,&local_80,param_8,param_9,param_10); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001ad014 (340 bytes) name=cvRectangle + +void cvRectangle(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,undefined8 param_6,undefined8 param_7,undefined4 param_8, + undefined4 param_9,AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_9c = (undefined4)((ulong)param_7 >> 0x20); + local_88 = 0; + local_84 = 0; + local_98[0] = 0x3010000; + local_a8 = (undefined4)param_6; + local_a4 = (undefined4)((ulong)param_6 >> 0x20); + local_a0 = (undefined4)param_7; + local_90 = aMStack_60; + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::rectangle(local_98,&local_a8,&local_a0,&local_80,param_8,param_9,(ulong)param_10 & 0xffffffff) + ; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001ad190 (2028 bytes) name=putText + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::putText(cv::_InputOutputArray const&, cv::String const&, cv::Point_, int, double, + cv::Scalar_, int, int, bool) */ + +void cv::putText(double param_1_00,_InputArray *param_1,undefined8 *param_2,int *param_4, + uint param_5,Scalar_ *param_6,int param_7,int param_8,byte param_9) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + uint uVar14; + uint uVar15; + undefined8 *puVar16; + long lVar17; + int *piVar18; + long lVar19; + byte *pbVar20; + ulong uVar21; + int *piVar22; + uint uVar23; + int *piVar24; + Mat *pMVar25; + char *pcVar26; + int *piVar27; + byte bVar28; + undefined8 uVar29; + int iVar30; + byte bVar31; + int iVar32; + byte *pbVar33; + int iVar34; + ulong uVar35; + int *piVar36; + int *piVar37; + int local_e4; + uint *local_c8; + int local_b0; + int local_ac; + int local_a8; + int local_a4; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined1 auStack_80 [32]; + uint local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar25 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar25; + local_5c = *(undefined4 *)(pMVar25 + 4); + local_58 = *(undefined4 *)(pMVar25 + 8); + local_54 = *(undefined4 *)(pMVar25 + 0xc); + local_50 = *(undefined8 *)(pMVar25 + 0x10); + local_48 = *(undefined8 *)(pMVar25 + 0x18); + local_40 = *(undefined8 *)(pMVar25 + 0x20); + local_38 = *(undefined8 *)(pMVar25 + 0x28); + local_30 = *(undefined8 *)(pMVar25 + 0x30); + local_28 = *(long *)(pMVar25 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar18 = (int *)(local_28 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar7) { + *piVar18 = *piVar18 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar25 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar25 + 0x48); + local_8 = (*(undefined8 **)(pMVar25 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar1 = param_5 >> 4 & 1; + switch(param_5 & 0xf) { + case 0: + local_c8 = &DAT_0043fca0; + break; + case 1: + if (uVar1 == 0) { + local_c8 = (uint *)&LAB_0043e620; + } + else { + local_c8 = &DAT_0043e800; + } + break; + case 2: + local_c8 = &DAT_004408c0; + break; + case 3: + if (uVar1 == 0) { + local_c8 = &DAT_00440a40; + } + else { + local_c8 = &DAT_0043ee90; + } + break; + case 4: + if (uVar1 == 0) { + local_c8 = &DAT_0043f290; + } + else { + local_c8 = &DAT_0043eb20; + } + break; + case 5: + if (uVar1 == 0) { + local_c8 = &DAT_0043fa20; + } + else { + local_c8 = &DAT_0043fe20; + } + break; + case 6: + local_c8 = &DAT_0043ed10; + break; + case 7: + local_c8 = &DAT_0043f060; + break; + default: + local_a0 = 0; + local_98 = 0; + puVar16 = (undefined8 *)String::allocate((String *)&local_a0,0x11); + uVar8 = DAT_0043f4f8; + uVar29 = _LAB_0043f4f0; + *(undefined1 *)(puVar16 + 2) = DAT_0043f500; + *puVar16 = uVar29; + puVar16[1] = uVar8; + error(-0xd3,(String *)&local_a0,"const int* cv::getFontData(int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x7f5); + String::deallocate((String *)&local_a0); + local_c8 = (uint *)0x0; + } + scalarToRawData(param_6,auStack_80,local_60 & 0xfff,0); + uVar1 = *local_c8; + lVar17 = lrint(param_1_00 * DAT_001ad9e0); + uVar14 = (uint)lVar17; + if ((param_8 == 0x10) && ((local_60 & 7) != 0)) { + param_8 = 8; + } + iVar2 = param_4[1]; + iVar13 = (-(uint)param_9 ^ uVar14) + (uint)param_9; + iVar32 = *param_4 << 0x10; + piVar18 = operator_new(0x2000); + pcVar26 = (char *)*param_2; + piVar37 = piVar18 + 0x800; + uVar15 = (uint)*pcVar26; + piVar36 = piVar18; + if (*pcVar26 == '\0') { +LAB_001ad5e4: + operator_delete(piVar36); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; + } + local_e4 = 0; + lVar17 = 0; +LAB_001ad344: + uVar23 = uVar15 & 0xff; + if ((uVar15 >> 7 & 1) == 0) { + iVar34 = 0x20; + if (0x7e < (uVar15 & 0xff)) { + lVar19 = 0x80; + goto LAB_001ad35c; + } + } + else { + lVar19 = 0x80; + if (param_5 != 3) goto LAB_001ad35c; + uVar15 = uVar15 & 0xff; + if (uVar15 != 0xd0) { + if (uVar15 == 0xd1) { + iVar34 = local_e4 + 1; + bVar28 = pcVar26[iVar34]; + if (-1 < (char)bVar28) { +LAB_001ad770: + iVar34 = local_e4; + local_e4 = local_e4 + 1; + if (bVar28 != 0) goto LAB_001ad680; + goto LAB_001ad69c; + } + local_e4 = iVar34; + if (bVar28 < 0x90) { + uVar23 = bVar28 + 0x2f; + iVar34 = 0xaf; + goto LAB_001ad648; + } + } + else { + if (0xbf < uVar15) { + bVar28 = pcVar26[local_e4 + 1]; + goto LAB_001ad770; + } +LAB_001ad680: + iVar34 = local_e4; + if ((uVar23 < 0xe0) || (iVar34 = local_e4 + 1, pcVar26[local_e4 + 1] != '\0')) { +LAB_001ad69c: + local_e4 = iVar34; + iVar34 = local_e4; + if (((uVar23 < 0xf0) || (iVar34 = local_e4 + 1, pcVar26[local_e4 + 1] != '\0')) && + ((local_e4 = iVar34, 0xf7 < uVar23 && (pcVar26[local_e4 + 1] != '\0')))) { + local_e4 = local_e4 + 1; + } + } + if ((0xfb < uVar23) && (pcVar26[local_e4 + 1] != '\0')) { + lVar19 = 0x80; + local_e4 = local_e4 + 1; + goto LAB_001ad35c; + } + } + lVar19 = 0x80; + goto LAB_001ad35c; + } + bVar28 = pcVar26[local_e4 + 1]; + if (0x2f < (bVar28 + 0x70 & 0xff)) goto LAB_001ad770; + uVar23 = bVar28 - 0x11; + iVar34 = 0x7f; + local_e4 = local_e4 + 1; + } +LAB_001ad648: + lVar19 = 0x80; + if (iVar34 <= (int)uVar23) { + lVar19 = (long)(int)uVar23 * 4 + -0x7c; + } +LAB_001ad35c: + if (lVar17 >> 3 != 0) { + piVar18 = piVar36; + } + pbVar20 = *(byte **)(PTR_PTR_00501bf0 + (long)*(int *)((long)local_c8 + lVar19) * 8); + bVar28 = pbVar20[1]; + pbVar33 = pbVar20 + 2; + iVar32 = iVar32 - (*pbVar20 - 0x52) * uVar14; + do { + bVar31 = *pbVar33; + while (((long)(char)bVar31 & 0xffffffdfU) == 0) { + lVar17 = (long)piVar18 - (long)piVar36; + uVar35 = lVar17 >> 3; + if ((1 < uVar35) && (iVar34 = (int)uVar35, 0 < iVar34)) { + if (param_7 < 0) { + local_90 = 0; + local_88 = 0; + puVar16 = (undefined8 *)String::allocate((String *)&local_90,0x31); + uVar12 = DAT_0043f670; + uVar11 = DAT_0043f668; + uVar10 = DAT_0043f660; + uVar9 = DAT_0043f658; + uVar8 = DAT_0043f650; + uVar29 = _DAT_0043f648; + *(undefined1 *)(puVar16 + 6) = DAT_0043f678; + *puVar16 = uVar29; + puVar16[1] = uVar8; + puVar16[2] = uVar9; + puVar16[3] = uVar10; + puVar16[4] = uVar11; + puVar16[5] = uVar12; + error(-0xd7,(String *)&local_90, + "void cv::PolyLine(cv::Mat&, const Point*, int, bool, const void*, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x66d); + String::deallocate((String *)&local_90); + } + if (iVar34 != 1) { + piVar22 = piVar36 + 3; + uVar29 = 3; + iVar30 = *piVar36; + iVar5 = piVar36[1]; + do { + iVar4 = piVar22[-1]; + iVar3 = *piVar22; + local_b0 = iVar30; + local_ac = iVar5; + local_a8 = iVar4; + local_a4 = iVar3; + FUN_001aaaf0((Mat *)&local_60,&local_b0,&local_a8,auStack_80,param_7,param_8,uVar29,0x10 + ); + piVar22 = piVar22 + 2; + uVar29 = 2; + iVar30 = iVar4; + iVar5 = iVar3; + } while (piVar22 != piVar36 + (ulong)(iVar34 - 2) * 2 + 5); + } + bVar31 = *pbVar33; + } + pbVar33 = pbVar33 + 1; + if (bVar31 == 0) { + local_e4 = local_e4 + 1; + pcVar26 = (char *)*param_2; + uVar15 = (uint)pcVar26[local_e4]; + iVar32 = iVar32 + (bVar28 - 0x52) * uVar14; + if (uVar15 == 0) goto LAB_001ad5e4; + goto LAB_001ad344; + } + bVar31 = *pbVar33; + if (uVar35 != 0) { + piVar18 = piVar36; + } + } + pbVar20 = pbVar33 + 1; + pbVar33 = pbVar33 + 2; + iVar34 = iVar32 + (bVar31 - 0x52) * uVar14; + iVar5 = -(uVar1 & 0xf) * iVar13 + iVar2 * 0x10000 + (*pbVar20 - 0x52) * iVar13; + if (piVar37 == piVar18) { + uVar35 = 8; + lVar17 = (long)piVar37 - (long)piVar36; + uVar21 = lVar17 >> 3; + if (uVar21 != 0) { + uVar35 = 0xfffffffffffffff8; + if ((uVar21 <= uVar21 * 2) && (uVar35 = uVar21 << 4, 0x1fffffffffffffff < uVar21 * 2)) { + uVar35 = 0xfffffffffffffff8; + } + } + piVar22 = operator_new(uVar35); + piVar18 = piVar22 + 2; + if ((long)piVar22 + lVar17 != 0) { + *(int *)((long)piVar22 + lVar17) = iVar34; + *(int *)((long)piVar22 + lVar17 + 4) = iVar5; + } + piVar24 = piVar36; + piVar27 = piVar22; + if (piVar37 != piVar36) { + do { + if (piVar27 != (int *)0x0) { + *(undefined8 *)piVar27 = *(undefined8 *)piVar24; + } + piVar24 = piVar24 + 2; + piVar27 = piVar27 + 2; + } while (piVar37 != piVar24); + piVar18 = (int *)((long)piVar22 + + ((long)piVar37 - (long)(piVar36 + 2) & 0xfffffffffffffff8U) + 0x10); + } + piVar37 = (int *)((long)piVar22 + uVar35); + operator_delete(piVar36); + piVar36 = piVar22; + } + else { + if (piVar18 != (int *)0x0) { + *piVar18 = iVar34; + piVar18[1] = iVar5; + } + piVar18 = piVar18 + 2; + } + } while( true ); +} + + +================================================================== + +### FUNC 001ad9e8 (616 bytes) name=cvPutText + +void cvPutText(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,char *param_6,undefined8 param_7,long param_8,undefined8 param_9, + AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + bool bVar6; + size_t __n; + void *__dest; + char *pcVar7; + int iVar8; + undefined4 local_b0; + undefined4 local_ac; + undefined8 local_a8; + undefined8 local_a0; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 uStack_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_90 = aMStack_60; + if ((param_6 == (char *)0x0) || (param_8 == 0)) { + local_80 = 0; + local_78 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_80,0x17); + cVar2 = s_text____0_____font____0_0043f588[0x16]; + uVar5 = s_text____0_____font____0_0043f588._20_2_; + uVar4 = s_text____0_____font____0_0043f588._8_8_; + uVar3 = s_text____0_____font____0_0043f588._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_text____0_____font____0_0043f588._16_4_; + *(undefined2 *)(pcVar7 + 0x14) = uVar5; + pcVar7[0x16] = cVar2; + *(undefined8 *)pcVar7 = uVar3; + *(undefined8 *)(pcVar7 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_80, + "void cvPutText(CvArr*, const char*, CvPoint, const CvFont*, CvScalar)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0xa63); + cv::String::deallocate((String *)&local_80); + local_88 = 0; + local_84 = 0; + local_98[0] = 0x3010000; + local_a8 = 0; + local_a0 = 0; + if (param_6 == (char *)0x0) goto LAB_001ada88; + } + local_84 = 0; + local_88 = 0; + local_98[0] = 0x3010000; + local_a0 = 0; + local_a8 = 0; + __n = strlen(param_6); + __dest = (void *)cv::String::allocate((String *)&local_a8,__n); + memcpy(__dest,param_6,__n); +LAB_001ada88: + local_b0 = (undefined4)param_7; + local_ac = (undefined4)((ulong)param_7 >> 0x20); + if (param_5 == (cv *)0x0) { + bVar6 = false; + } + else { + bVar6 = false; + if ((*(int *)param_5 == 0x90) && (*(long *)(param_5 + 0x58) != 0)) { + bVar6 = *(int *)(param_5 + 0x20) != 0; + } + } + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + uStack_68 = param_4; + cv::putText((double)(*(float *)(param_8 + 0x48) + *(float *)(param_8 + 0x4c)) * 0.5,local_98, + (String *)&local_a8,&local_b0,*(undefined4 *)(param_8 + 0x28),&local_80, + *(undefined4 *)(param_8 + 0x54),*(undefined4 *)(param_8 + 0x5c),bVar6); + cv::String::deallocate((String *)&local_a8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001adc98 (8168 bytes) name=circle + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::circle(cv::_InputOutputArray const&, cv::Point_, int, cv::Scalar_ const&, int, + int, int) */ + +void cv::circle(_InputArray *param_1,uint *param_2,int param_3,Scalar_ *param_4,int param_5, + int param_6,uint param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int *piVar15; + undefined1 *puVar16; + undefined1 *puVar17; + undefined1 *puVar18; + undefined1 *puVar19; + undefined1 *puVar20; + undefined1 *puVar21; + undefined1 *puVar22; + undefined1 *puVar23; + undefined1 *puVar24; + undefined1 *puVar25; + undefined1 *puVar26; + undefined1 *puVar27; + undefined1 *puVar28; + undefined1 *puVar29; + undefined1 *puVar30; + undefined1 *puVar31; + undefined8 *puVar32; + uint uVar33; + uint uVar34; + uint uVar35; + uint uVar36; + uint uVar37; + uint uVar38; + char cVar39; + bool bVar40; + uint uVar41; + uint uVar42; + int iVar43; + int iVar44; + undefined8 uVar45; + undefined8 uVar46; + undefined8 uVar47; + undefined8 uVar48; + undefined8 uVar49; + undefined8 uVar50; + undefined8 uVar51; + undefined8 uVar52; + long lVar53; + long lVar54; + int iVar55; + uint uVar56; + char *pcVar57; + long lVar58; + long lVar59; + long lVar60; + long lVar61; + long lVar62; + uint *puVar63; + long lVar64; + Mat *pMVar65; + uint uVar66; + size_t __n; + long lVar67; + long lVar68; + uint uVar69; + long lVar70; + long lVar71; + long lVar72; + long lVar73; + long lVar74; + long lVar75; + uint uVar76; + long lVar77; + long lVar78; + long lVar79; + long lVar80; + long lVar81; + uint uVar82; + undefined8 uVar83; + int local_198; + uint local_194; + long local_188; + long local_180; + long local_178; + long local_170; + uint local_168; + int local_160; + uint local_15c; + Mat *local_c0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80 [2]; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + uint local_58; + undefined4 local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + uint *local_20; + long *local_18; + long local_10; + long local_8; + + iVar55 = _InputArray::kind(param_1); + if (iVar55 == 0x10000) { + pMVar65 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar65; + local_5c = *(int *)(pMVar65 + 4); + local_58 = *(uint *)(pMVar65 + 8); + local_54 = *(undefined4 *)(pMVar65 + 0xc); + local_50 = *(long *)(pMVar65 + 0x10); + local_48 = *(undefined8 *)(pMVar65 + 0x18); + local_40 = *(undefined8 *)(pMVar65 + 0x20); + local_38 = *(undefined8 *)(pMVar65 + 0x28); + local_30 = *(undefined8 *)(pMVar65 + 0x30); + local_28 = *(long *)(pMVar65 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar15 = (int *)(local_28 + 0x14); + do { + cVar39 = '\x01'; + bVar40 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar40) { + *piVar15 = *piVar15 + 1; + cVar39 = ExclusiveMonitorsStatus(); + } + } while (cVar39 != '\0'); + } + if (*(int *)(pMVar65 + 4) < 3) { + local_10 = **(long **)(pMVar65 + 0x48); + local_8 = (*(long **)(pMVar65 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar65); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((param_6 == 0x10) && ((local_60 & 7) != 0)) { + param_6 = 8; + } + local_c0 = (Mat *)&local_60; + if (((param_3 < 0) || (0x7fff < param_5)) || (0x10 < param_7)) { + local_90 = 0; + local_88 = 0; + pcVar57 = (char *)String::allocate((String *)&local_90,0x4c); + uVar52 = s_radius_>__0____thickness_<__MAX__0043f6c0._64_8_; + uVar51 = s_radius_>__0____thickness_<__MAX__0043f6c0._56_8_; + uVar50 = s_radius_>__0____thickness_<__MAX__0043f6c0._48_8_; + uVar49 = s_radius_>__0____thickness_<__MAX__0043f6c0._40_8_; + uVar48 = s_radius_>__0____thickness_<__MAX__0043f6c0._32_8_; + uVar47 = s_radius_>__0____thickness_<__MAX__0043f6c0._24_8_; + uVar46 = s_radius_>__0____thickness_<__MAX__0043f6c0._16_8_; + uVar45 = s_radius_>__0____thickness_<__MAX__0043f6c0._8_8_; + uVar83 = s_radius_>__0____thickness_<__MAX__0043f6c0._0_8_; + *(undefined4 *)(pcVar57 + 0x48) = s_radius_>__0____thickness_<__MAX__0043f6c0._72_4_; + *(undefined8 *)(pcVar57 + 0x40) = uVar52; + *(undefined8 *)pcVar57 = uVar83; + *(undefined8 *)(pcVar57 + 8) = uVar45; + *(undefined8 *)(pcVar57 + 0x10) = uVar46; + *(undefined8 *)(pcVar57 + 0x18) = uVar47; + *(undefined8 *)(pcVar57 + 0x20) = uVar48; + *(undefined8 *)(pcVar57 + 0x28) = uVar49; + *(undefined8 *)(pcVar57 + 0x30) = uVar50; + *(undefined8 *)(pcVar57 + 0x38) = uVar51; + error(-0xd7,(String *)&local_90, + "void cv::circle(cv::InputOutputArray, cv::Point, int, const Scalar&, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x6d2); + String::deallocate((String *)&local_90); + } + scalarToRawData(param_4,local_80,local_60 & 0xfff,0); + lVar54 = local_10; + lVar53 = local_50; + bVar40 = 0xf < param_6 || 1 < param_5; + if (0xf < param_6 || 1 < param_5) { + uVar83 = CONCAT44(0x10 - param_7,0x10 - param_7); + local_90 = NEON_sshl(*(undefined8 *)param_2,uVar83,4); + local_98 = NEON_sshl(CONCAT44(param_3,param_3),uVar83,4); + *(undefined8 *)param_2 = local_90; + FUN_001a9f40(local_c0,&local_90,&local_98,0,0,0x168,local_80,param_5,param_6); + } + else { + uVar35 = *param_2; + uVar36 = param_2[1]; + uVar37 = local_20[1]; + uVar38 = *local_20; + if (local_5c < 1) { + uVar76 = 0; + } + else { + uVar76 = *(uint *)(local_18 + (long)local_5c + -1); + } + local_15c = param_3 * 2 - 1; + if ((param_3 <= (int)uVar35) && + (bVar40 = false, (int)uVar35 < (int)(uVar37 - param_3) && param_3 <= (int)uVar36)) { + bVar40 = (int)uVar36 < (int)(uVar38 - param_3); + } + if (-1 < param_3) { + uVar1 = (uVar76 - 0x10 >> 4) + 1; + uVar41 = uVar76 - 1; + local_178 = local_50 + (int)uVar36 * local_10; + uVar82 = uVar1 * 0x10; + local_188 = (long)(int)(uVar35 * uVar76); + __n = (size_t)(int)uVar76; + uVar69 = uVar82; + if (uVar41 < 0xf) { + uVar69 = 0; + } + iVar55 = uVar69 + 1; + iVar44 = 0; + iVar2 = uVar69 + 2; + lVar70 = (long)(int)uVar69; + iVar3 = uVar69 + 3; + lVar58 = (long)iVar55; + iVar4 = uVar69 + 4; + local_160 = 0; + iVar5 = uVar69 + 5; + lVar67 = (long)iVar3; + iVar6 = uVar69 + 6; + lVar68 = (long)iVar4; + iVar7 = uVar69 + 7; + lVar71 = (long)iVar5; + iVar8 = uVar69 + 8; + iVar9 = uVar69 + 9; + puVar16 = (undefined1 *)((long)local_80 + lVar67); + lVar72 = (long)iVar7; + iVar10 = uVar69 + 10; + iVar11 = uVar69 + 0xb; + lVar73 = (long)iVar8; + puVar17 = (undefined1 *)((long)local_80 + lVar68); + iVar12 = uVar69 + 0xc; + lVar75 = (long)iVar6; + puVar18 = (undefined1 *)((long)local_80 + lVar70); + lVar74 = (long)iVar9; + puVar19 = (undefined1 *)((long)local_80 + lVar71); + iVar13 = uVar69 + 0xd; + lVar77 = (long)iVar10; + puVar20 = (undefined1 *)((long)local_80 + lVar75); + lVar64 = (long)iVar2; + iVar14 = uVar69 + 0xe; + puVar21 = (undefined1 *)((long)local_80 + lVar72); + lVar80 = (long)iVar11; + puVar22 = (undefined1 *)((long)local_80 + lVar58); + puVar23 = (undefined1 *)((long)local_80 + lVar73); + lVar81 = (long)iVar14; + lVar78 = (long)iVar12; + puVar24 = (undefined1 *)((long)local_80 + lVar74); + lVar79 = (long)iVar13; + puVar25 = (undefined1 *)((long)local_80 + lVar64); + puVar26 = (undefined1 *)((long)local_80 + lVar77); + puVar27 = (undefined1 *)((long)local_80 + lVar80); + puVar28 = (undefined1 *)((long)local_80 + lVar78); + puVar29 = (undefined1 *)((long)local_80 + lVar79); + puVar30 = (undefined1 *)((long)local_80 + lVar81); + local_198 = param_3; + local_194 = uVar35; + local_180 = local_188; + local_170 = local_178; + local_168 = uVar35; + do { + uVar42 = uVar36 - local_198; + uVar69 = uVar36 + local_198; + iVar43 = uVar35 - local_198; + uVar56 = uVar35 + local_198; + if (bVar40) { + if (param_5 < 0) { + for (puVar31 = (undefined1 *)(local_178 + (int)(iVar43 * uVar76)); + puVar31 <= (undefined1 *)(local_178 + (int)(uVar56 * uVar76)); + puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar59 = 0; + do { + puVar31[lVar59] = *(undefined1 *)((long)local_80 + lVar59); + lVar59 = lVar59 + 1; + } while ((int)lVar59 < (int)uVar76); + } + else { + if (0xe < uVar41) { + lVar59 = 0; + uVar66 = 0; + do { + uVar66 = uVar66 + 1; + lVar60 = lVar59 + -8; + uVar83 = *(undefined8 *)((long)local_80 + lVar59); + puVar32 = (undefined8 *)(puVar31 + lVar59); + lVar59 = lVar59 + 0x10; + puVar32[1] = *(undefined8 *)(auStack_70 + lVar60); + *puVar32 = uVar83; + } while (uVar66 < uVar1); + if (uVar82 == uVar76) goto LAB_001aede0; + } + puVar31[lVar70] = *puVar18; + if (((((((iVar55 < (int)uVar76) && + (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76)) && + (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + ((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)))) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))) && + (puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76)) && + ((((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001aede0: + } + for (puVar31 = (undefined1 *)(local_170 + (int)(iVar43 * uVar76)); + puVar31 <= (undefined1 *)(local_170 + (int)(uVar56 * uVar76)); + puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar59 = 0; + do { + puVar31[lVar59] = *(undefined1 *)((long)local_80 + lVar59); + lVar59 = lVar59 + 1; + } while ((int)lVar59 < (int)uVar76); + } + else { + if (0xe < uVar41) { + lVar59 = 0; + uVar66 = 0; + do { + uVar66 = uVar66 + 1; + lVar60 = lVar59 + -8; + uVar83 = *(undefined8 *)((long)local_80 + lVar59); + puVar32 = (undefined8 *)(puVar31 + lVar59); + lVar59 = lVar59 + 0x10; + puVar32[1] = *(undefined8 *)(auStack_70 + lVar60); + *puVar32 = uVar83; + } while (uVar66 < uVar1); + if (uVar82 == uVar76) goto LAB_001af044; + } + puVar31[lVar70] = *puVar18; + if (((((iVar55 < (int)uVar76) && (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76) + ) && (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + (((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))))) && + ((puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76 && + ((((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))))))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001af044: + } + lVar59 = lVar53 + (int)uVar69 * lVar54; + lVar60 = lVar53 + (int)uVar42 * lVar54; + for (puVar31 = (undefined1 *)(lVar60 + local_188); + puVar31 <= (undefined1 *)(lVar60 + local_180); puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar61 = 0; + do { + puVar31[lVar61] = *(undefined1 *)((long)local_80 + lVar61); + lVar61 = lVar61 + 1; + } while ((int)lVar61 < (int)uVar76); + } + else { + if (0xe < uVar41) { + lVar61 = 0; + uVar69 = 0; + do { + uVar69 = uVar69 + 1; + lVar62 = lVar61 + -8; + uVar83 = *(undefined8 *)((long)local_80 + lVar61); + puVar32 = (undefined8 *)(puVar31 + lVar61); + lVar61 = lVar61 + 0x10; + puVar32[1] = *(undefined8 *)(auStack_70 + lVar62); + *puVar32 = uVar83; + } while (uVar69 < uVar1); + if (uVar82 == uVar76) goto LAB_001af2c4; + } + puVar31[lVar70] = *puVar18; + if ((((iVar55 < (int)uVar76) && (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76)) + && (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + (((((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))) && + (puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76)) && + ((((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))))))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001af2c4: + } + for (puVar31 = (undefined1 *)(lVar59 + local_188); + puVar31 <= (undefined1 *)(lVar59 + local_180); puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar60 = 0; + do { + puVar31[lVar60] = *(undefined1 *)((long)local_80 + lVar60); + lVar60 = lVar60 + 1; + } while ((int)lVar60 < (int)uVar76); + } + else { + if (0xe < uVar41) { + lVar60 = 0; + uVar69 = 0; + do { + uVar69 = uVar69 + 1; + lVar61 = lVar60 + -8; + uVar83 = *(undefined8 *)((long)local_80 + lVar60); + puVar32 = (undefined8 *)(puVar31 + lVar60); + lVar60 = lVar60 + 0x10; + puVar32[1] = *(undefined8 *)(auStack_70 + lVar61); + *puVar32 = uVar83; + } while (uVar69 < uVar1); + if (uVar82 == uVar76) goto LAB_001af528; + } + puVar31[lVar70] = *puVar18; + if ((((((((iVar55 < (int)uVar76) && + (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76)) && + (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + ((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)))) && + (puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76)) && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))) && + ((puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76 && + (((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)))))) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001af528: + } + } + else { + memcpy((void *)(local_178 + (int)(iVar43 * uVar76)),local_80,__n); + memcpy((void *)(local_170 + (int)(iVar43 * uVar76)),local_80,__n); + memcpy((void *)(local_178 + (int)(uVar56 * uVar76)),local_80,__n); + memcpy((void *)(local_170 + (int)(uVar56 * uVar76)),local_80,__n); + lVar60 = lVar53 + (int)uVar69 * lVar54; + lVar59 = lVar53 + (int)uVar42 * lVar54; + memcpy((void *)(lVar59 + local_188),local_80,__n); + memcpy((void *)(lVar60 + local_188),local_80,__n); + memcpy((void *)(lVar59 + local_180),local_80,__n); + memcpy((void *)(lVar60 + local_180),local_80,__n); + } + } + else if ((((uint)((int)uVar42 < (int)uVar38) & + (uint)(iVar43 < (int)uVar37) & ~uVar56 >> 0x1f) != 0) && (-1 < (int)uVar69)) { + uVar34 = local_194; + uVar66 = local_168; + if (param_5 < 0) { + if (iVar43 < 0) { + iVar43 = 0; + } + uVar33 = uVar37 - 1; + if ((int)uVar56 < (int)uVar37) { + uVar33 = uVar56; + } + if (uVar36 - iVar44 < uVar38) { + lVar59 = (long)(int)(iVar43 * uVar76); + lVar60 = (long)(int)(uVar33 * uVar76); + for (puVar31 = (undefined1 *)(local_178 + lVar59); + puVar31 <= (undefined1 *)(local_178 + lVar60); puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar61 = 0; + do { + puVar31[lVar61] = *(undefined1 *)((long)local_80 + lVar61); + lVar61 = lVar61 + 1; + } while ((int)lVar61 < (int)uVar76); + } + else { + if (0xe < uVar41) { + uVar56 = 0; + lVar61 = 0; + do { + uVar56 = uVar56 + 1; + uVar83 = *(undefined8 *)((long)local_80 + lVar61); + *(undefined8 *)((long)(puVar31 + lVar61) + 8) = + *(undefined8 *)(auStack_70 + lVar61 + -8); + *(undefined8 *)(puVar31 + lVar61) = uVar83; + lVar61 = lVar61 + 0x10; + } while (uVar56 < uVar1); + if (uVar82 == uVar76) goto LAB_001ae4d4; + } + puVar31[lVar70] = *puVar18; + if (((((iVar55 < (int)uVar76) && + (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76)) && + (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + (((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))))) && + ((puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76 && + ((((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))))))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001ae4d4: + } + if (iVar44 + uVar36 < uVar38) { +LAB_001ae4f8: + for (puVar31 = (undefined1 *)(local_170 + lVar59); + puVar31 <= (undefined1 *)(local_170 + lVar60); puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar59 = 0; + do { + puVar31[lVar59] = *(undefined1 *)((long)local_80 + lVar59); + lVar59 = lVar59 + 1; + } while ((int)lVar59 < (int)uVar76); + } + else { + if (0xe < uVar41) { + uVar56 = 0; + lVar59 = 0; + do { + uVar56 = uVar56 + 1; + uVar83 = *(undefined8 *)((long)local_80 + lVar59); + *(undefined8 *)((long)(puVar31 + lVar59) + 8) = + *(undefined8 *)(auStack_70 + lVar59 + -8); + *(undefined8 *)(puVar31 + lVar59) = uVar83; + lVar59 = lVar59 + 0x10; + } while (uVar56 < uVar1); + if (uVar82 == uVar76) goto LAB_001ae714; + } + puVar31[lVar70] = *puVar18; + if ((((iVar55 < (int)uVar76) && + (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76)) && + (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + ((((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))) && + ((puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76 && + ((((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))))))))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001ae714: + } + } + if (((int)uVar37 <= (int)local_168) || ((int)local_194 < 0)) goto LAB_001aeac8; + } + else { + if (iVar44 + uVar36 < uVar38) { + lVar59 = (long)(int)(iVar43 * uVar76); + lVar60 = (long)(int)(uVar33 * uVar76); + goto LAB_001ae4f8; + } +LAB_001af924: + if (((int)uVar37 <= (int)local_168) || ((int)local_194 < 0)) goto LAB_001aeac8; + if (-1 < param_5) goto LAB_001af718; + } + if ((int)local_168 < 0) { + uVar66 = 0; + } + uVar34 = uVar37 - 1; + if ((int)local_194 < (int)uVar37) { + uVar34 = local_194; + } + if (uVar42 < uVar38) { + lVar60 = (long)(int)(uVar66 * uVar76); + lVar61 = (long)(int)(uVar34 * uVar76); + lVar59 = lVar53 + (int)uVar42 * lVar54; + for (puVar31 = (undefined1 *)(lVar59 + lVar60); + puVar31 <= (undefined1 *)(lVar59 + lVar61); puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar62 = 0; + do { + puVar31[lVar62] = *(undefined1 *)((long)local_80 + lVar62); + lVar62 = lVar62 + 1; + } while ((int)lVar62 < (int)uVar76); + } + else { + if (0xe < uVar41) { + uVar56 = 0; + lVar62 = 0; + do { + uVar56 = uVar56 + 1; + uVar83 = *(undefined8 *)((long)local_80 + lVar62); + *(undefined8 *)((long)(puVar31 + lVar62) + 8) = + *(undefined8 *)(auStack_70 + lVar62 + -8); + *(undefined8 *)(puVar31 + lVar62) = uVar83; + lVar62 = lVar62 + 0x10; + } while (uVar56 < uVar1); + if (uVar82 == uVar76) goto LAB_001ae9ac; + } + puVar31[lVar70] = *puVar18; + if (((((((iVar55 < (int)uVar76) && + (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76)) && + (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + ((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)))) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))) && + ((puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76 && + (((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)))))) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001ae9ac: + } + if (uVar38 <= uVar69) goto LAB_001aeac8; + lVar59 = lVar53 + (int)uVar69 * lVar54; + } + else { +LAB_001af7a8: + if (uVar38 <= uVar69) goto LAB_001aeac8; + lVar59 = lVar53 + (int)uVar69 * lVar54; + if (-1 < param_5) goto LAB_001af7d0; + lVar60 = (long)(int)(uVar66 * uVar76); + lVar61 = (long)(int)(uVar34 * uVar76); + } + for (puVar31 = (undefined1 *)(lVar59 + lVar60); + puVar31 <= (undefined1 *)(lVar59 + lVar61); puVar31 = puVar31 + __n) { + if (0 < (int)uVar76) { + if ((local_80 < puVar31 + 0x10 && puVar31 < auStack_70) || (uVar76 < 0x10)) { + lVar60 = 0; + do { + puVar31[lVar60] = *(undefined1 *)((long)local_80 + lVar60); + lVar60 = lVar60 + 1; + } while ((int)lVar60 < (int)uVar76); + } + else { + if (0xe < uVar41) { + uVar69 = 0; + lVar60 = 0; + do { + uVar69 = uVar69 + 1; + uVar83 = *(undefined8 *)((long)local_80 + lVar60); + *(undefined8 *)((long)(puVar31 + lVar60) + 8) = + *(undefined8 *)(auStack_70 + lVar60 + -8); + *(undefined8 *)(puVar31 + lVar60) = uVar83; + lVar60 = lVar60 + 0x10; + } while (uVar69 < uVar1); + if (uVar82 == uVar76) goto LAB_001afbc8; + } + puVar31[lVar70] = *puVar18; + if (((((iVar55 < (int)uVar76) && (puVar31[lVar58] = *puVar22, iVar2 < (int)uVar76) + ) && (puVar31[lVar64] = *puVar25, iVar3 < (int)uVar76)) && + ((((puVar31[lVar67] = *puVar16, iVar4 < (int)uVar76 && + (puVar31[lVar68] = *puVar17, iVar5 < (int)uVar76)) && + ((puVar31[lVar71] = *puVar19, iVar6 < (int)uVar76 && + ((puVar31[lVar75] = *puVar20, iVar7 < (int)uVar76 && + (puVar31[lVar72] = *puVar21, iVar8 < (int)uVar76)))))) && + (puVar31[lVar73] = *puVar23, iVar9 < (int)uVar76)))) && + ((((puVar31[lVar74] = *puVar24, iVar10 < (int)uVar76 && + (puVar31[lVar77] = *puVar26, iVar11 < (int)uVar76)) && + (puVar31[lVar80] = *puVar27, iVar12 < (int)uVar76)) && + ((puVar31[lVar78] = *puVar28, iVar13 < (int)uVar76 && + (puVar31[lVar79] = *puVar29, iVar14 < (int)uVar76)))))) { + puVar31[lVar81] = *puVar30; + } + } + } +LAB_001afbc8: + } + } + else if (uVar36 - iVar44 < uVar38) { + if (-1 < iVar43) { + memcpy((void *)(local_178 + (int)(iVar43 * uVar76)),local_80,__n); + } + if ((int)uVar56 < (int)uVar37) { + memcpy((void *)(local_178 + (int)(uVar56 * uVar76)),local_80,__n); + } + if (iVar44 + uVar36 < uVar38) goto LAB_001af850; + if (((int)uVar37 <= (int)local_168) || ((int)local_194 < 0)) goto LAB_001aeac8; +LAB_001af718: + if (uVar42 < uVar38) { +LAB_001af8b4: + lVar59 = lVar53 + (int)uVar42 * lVar54; + if (-1 < (int)local_168) { + memcpy((void *)(lVar59 + local_188),local_80,__n); + } + if ((int)local_194 < (int)uVar37) { + memcpy((void *)(lVar59 + local_180),local_80,__n); + } + } + if (uVar69 < uVar38) { + lVar59 = lVar53 + (int)uVar69 * lVar54; +LAB_001af7d0: + if (-1 < (int)uVar66) { + memcpy((void *)(lVar59 + (int)(uVar66 * uVar76)),local_80,__n); + } + if ((int)uVar34 < (int)uVar37) { + memcpy((void *)(lVar59 + (int)(uVar34 * uVar76)),local_80,__n); + } + } + } + else { + if (uVar38 <= iVar44 + uVar36) goto LAB_001af924; +LAB_001af850: + if (-1 < iVar43) { + memcpy((void *)(local_170 + (int)(iVar43 * uVar76)),local_80,__n); + } + if ((int)uVar56 < (int)uVar37) { + memcpy((void *)(local_170 + (int)(uVar56 * uVar76)),local_80,__n); + } + if (((int)local_168 < (int)uVar37) && (-1 < (int)local_194)) { + if (uVar42 < uVar38) goto LAB_001af8b4; + goto LAB_001af7a8; + } + } + } +LAB_001aeac8: + local_160 = local_160 + iVar44 * 2 + 1; + iVar43 = iVar44 + 1; + local_178 = local_178 - lVar54; + iVar44 = iVar44 + 1; + uVar56 = (uint)(0 < local_160); + local_198 = local_198 - uVar56; + uVar56 = -uVar56; + uVar69 = uVar56 & local_15c; + local_15c = local_15c - (uVar56 & 2); + local_160 = local_160 - uVar69; + local_170 = local_170 + lVar54; + local_188 = local_188 + (int)-uVar76; + local_180 = local_180 + __n; + local_194 = local_194 + 1; + local_168 = local_168 - 1; + } while (iVar43 <= local_198); + } + } + if (local_28 != 0) { + piVar15 = (int *)(local_28 + 0x14); + do { + iVar55 = *piVar15; + cVar39 = '\x01'; + bVar40 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar40) { + *piVar15 = iVar55 + -1; + cVar39 = ExclusiveMonitorsStatus(); + } + } while (cVar39 != '\0'); + if (iVar55 == 1) { + Mat::deallocate(local_c0); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar55 = 0; + puVar63 = local_20; + do { + *puVar63 = 0; + iVar55 = iVar55 + 1; + puVar63 = puVar63 + 1; + } while (iVar55 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001afcbc (328 bytes) name=cvCircle + +void cvCircle(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,undefined8 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9 + ,AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_9c = (undefined4)((ulong)param_6 >> 0x20); + local_88 = 0; + local_84 = 0; + local_98[0] = 0x3010000; + local_a0 = (undefined4)param_6; + local_90 = aMStack_60; + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::circle(local_98,&local_a0,param_7,&local_80,param_8,param_9,(ulong)param_10 & 0xffffffff); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001afe2c (768 bytes) name=ellipse + +/* cv::ellipse(cv::_InputOutputArray const&, cv::Point_, cv::Size_, double, double, + double, cv::Scalar_ const&, int, int, int) */ + +void cv::ellipse(double param_1_00,double param_2,double param_3,_InputArray *param_1, + undefined8 *param_5,int *param_6,Scalar_ *param_7,int param_8,int param_9, + uint param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + void *__dest; + ulong uVar5; + ulong uVar6; + long lVar7; + undefined4 *puVar8; + Mat *pMVar9; + undefined8 uVar10; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined1 auStack_80 [32]; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind(param_1); + if (iVar4 == 0x10000) { + pMVar9 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar9; + local_5c = *(int *)(pMVar9 + 4); + local_58 = *(undefined4 *)(pMVar9 + 8); + local_54 = *(undefined4 *)(pMVar9 + 0xc); + local_50 = *(undefined8 *)(pMVar9 + 0x10); + local_48 = *(undefined8 *)(pMVar9 + 0x18); + local_40 = *(undefined8 *)(pMVar9 + 0x20); + local_38 = *(undefined8 *)(pMVar9 + 0x28); + local_30 = *(undefined8 *)(pMVar9 + 0x30); + local_28 = *(long *)(pMVar9 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar9 + 0x48); + local_8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((param_9 == 0x10) && ((local_60 & 7) != 0)) { + param_9 = 8; + } + if ((((*param_6 < 0) || (param_6[1] < 0)) || (0x7fff < param_8)) || (0x10 < param_10)) { + local_90 = 0; + local_88 = 0; + __dest = (void *)String::allocate((String *)&local_90,100); + memcpy(__dest, + "axes.width >= 0 && axes.height >= 0 && thickness <= MAX_THICKNESS && 0 <= shift && shift <= XY_SHIFT" + ,100); + error(-0xd7,(String *)&local_90, + "void cv::ellipse(cv::InputOutputArray, cv::Point, cv::Size, double, double, double, const Scalar&, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x6ee); + String::deallocate((String *)&local_90); + } + scalarToRawData(param_7,auStack_80,local_60 & 0xfff,0); + uVar5 = lrint(param_1_00); + uVar6 = lrint(param_2); + lVar7 = lrint(param_3); + uVar10 = CONCAT44(0x10 - param_10,0x10 - param_10); + local_98 = NEON_sshl(*param_5,uVar10,4); + local_90 = NEON_sshl(*(undefined8 *)param_6,uVar10,4); + *param_5 = local_98; + *(undefined8 *)param_6 = local_90; + FUN_001a9f40((Mat *)&local_60,&local_98,&local_90,uVar5 & 0xffffffff,uVar6 & 0xffffffff,lVar7, + auStack_80,param_8,param_9); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + puVar8 = local_20; + do { + *puVar8 = 0; + iVar4 = iVar4 + 1; + puVar8 = puVar8 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001b0164 (364 bytes) name=cvEllipse + +void cvEllipse(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,cv *param_8, + undefined8 param_9,undefined8 param_10,undefined4 param_11,undefined4 param_12, + AutoBuffer *param_13) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_8,(void *)0x0,true,false,0,param_13); + local_9c = (undefined4)((ulong)param_10 >> 0x20); + local_88 = 0; + local_84 = 0; + local_98[0] = 0x3010000; + local_a8 = (undefined4)param_9; + local_a4 = (undefined4)((ulong)param_9 >> 0x20); + local_a0 = (undefined4)param_10; + local_90 = aMStack_60; + local_80 = param_4; + local_78 = param_5; + local_70 = param_6; + local_68 = param_7; + cv::ellipse(param_1,param_2,param_3,local_98,&local_a8,&local_a0,&local_80,param_11,param_12, + (ulong)param_13 & 0xffffffff); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001b02f8 (796 bytes) name=ellipse + +/* cv::ellipse(cv::_InputOutputArray const&, cv::RotatedRect const&, cv::Scalar_ const&, + int, int) */ + +void cv::ellipse(_InputOutputArray *param_1,RotatedRect *param_2,Scalar_ *param_3,int param_4, + int param_5) + +{ + int *piVar1; + char cVar2; + bool bVar3; + float fVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + int iVar14; + ulong uVar15; + long lVar16; + long lVar17; + long lVar18; + long lVar19; + char *pcVar20; + Mat *pMVar21; + undefined4 *puVar22; + undefined4 local_98; + undefined4 local_94; + undefined8 local_90; + undefined8 local_88; + undefined1 auStack_80 [32]; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar14 = _InputArray::kind((_InputArray *)param_1); + if (iVar14 == 0x10000) { + pMVar21 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar21; + local_5c = *(int *)(pMVar21 + 4); + local_58 = *(undefined4 *)(pMVar21 + 8); + local_54 = *(undefined4 *)(pMVar21 + 0xc); + local_50 = *(undefined8 *)(pMVar21 + 0x10); + local_48 = *(undefined8 *)(pMVar21 + 0x18); + local_40 = *(undefined8 *)(pMVar21 + 0x20); + local_38 = *(undefined8 *)(pMVar21 + 0x28); + local_30 = *(undefined8 *)(pMVar21 + 0x30); + local_28 = *(long *)(pMVar21 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar21 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar21 + 0x48); + local_8 = (*(undefined8 **)(pMVar21 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar21); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((param_5 == 0x10) && ((local_60 & 7) != 0)) { + param_5 = 8; + } + if (((*(float *)(param_2 + 8) < 0.0) || (0x7fff < param_4)) || (*(float *)(param_2 + 0xc) < 0.0)) + { + local_90 = 0; + local_88 = 0; + pcVar20 = (char *)String::allocate((String *)&local_90,0x49); + uVar13 = s_box_size_width_>__0____box_size__0043f778._64_8_; + uVar12 = s_box_size_width_>__0____box_size__0043f778._56_8_; + uVar11 = s_box_size_width_>__0____box_size__0043f778._48_8_; + uVar10 = s_box_size_width_>__0____box_size__0043f778._40_8_; + uVar9 = s_box_size_width_>__0____box_size__0043f778._32_8_; + uVar8 = s_box_size_width_>__0____box_size__0043f778._24_8_; + uVar7 = s_box_size_width_>__0____box_size__0043f778._16_8_; + uVar6 = s_box_size_width_>__0____box_size__0043f778._8_8_; + uVar5 = s_box_size_width_>__0____box_size__0043f778._0_8_; + pcVar20[0x48] = s_box_size_width_>__0____box_size__0043f778[0x48]; + *(undefined8 *)(pcVar20 + 0x40) = uVar13; + *(undefined8 *)pcVar20 = uVar5; + *(undefined8 *)(pcVar20 + 8) = uVar6; + *(undefined8 *)(pcVar20 + 0x10) = uVar7; + *(undefined8 *)(pcVar20 + 0x18) = uVar8; + *(undefined8 *)(pcVar20 + 0x20) = uVar9; + *(undefined8 *)(pcVar20 + 0x28) = uVar10; + *(undefined8 *)(pcVar20 + 0x30) = uVar11; + *(undefined8 *)(pcVar20 + 0x38) = uVar12; + error(-0xd7,(String *)&local_90, + "void cv::ellipse(cv::InputOutputArray, const cv::RotatedRect&, const Scalar&, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x708); + String::deallocate((String *)&local_90); + } + scalarToRawData(param_3,auStack_80,local_60 & 0xfff,0); + uVar15 = lrintf(*(float *)(param_2 + 0x10)); + fVar4 = DAT_001b064c; + lVar16 = lrintf(*(float *)param_2 * DAT_001b064c); + lVar17 = lrintf(*(float *)(param_2 + 4) * fVar4); + fVar4 = DAT_001b0650; + lVar18 = lrintf(*(float *)(param_2 + 8) * DAT_001b0650); + lVar19 = lrintf(*(float *)(param_2 + 0xc) * fVar4); + local_98 = (undefined4)lVar16; + local_94 = (undefined4)lVar17; + local_90 = CONCAT44((int)lVar19,(int)lVar18); + FUN_001a9f40((Mat *)&local_60,&local_98,&local_90,uVar15 & 0xffffffff,0,0x168,auStack_80,param_4, + param_5); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar14 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar14 = 0; + puVar22 = local_20; + do { + *puVar22 = 0; + iVar14 = iVar14 + 1; + puVar22 = puVar22 + 1; + } while (iVar14 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001b0658 (2668 bytes) name=FUN_001b0658 + +void FUN_001b0658(long param_1,int *param_2,int *param_3,undefined1 *param_4,uint param_5, + int param_6) + +{ + undefined1 *puVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + int iVar10; + int iVar11; + long lVar12; + long lVar13; + long lVar14; + int iVar15; + long lVar16; + int *piVar17; + undefined8 *puVar18; + ulong uVar19; + uint uVar20; + uint uVar21; + int *piVar22; + undefined8 *puVar23; + int iVar24; + undefined1 *puVar25; + uint uVar26; + uint uVar27; + int iVar28; + uint uVar29; + int iVar30; + double dVar31; + double __x; + int iVar32; + double dVar33; + int iVar34; + double dVar35; + undefined8 uVar36; + int iVar37; + int local_58; + int local_54; + int local_50 [10]; + int local_28; + int local_24; + int local_20 [4]; + undefined4 local_10; + int local_4; + + iVar15 = param_2[1]; + iVar9 = *param_3; + local_28 = *param_2 * 0x10000; + iVar28 = param_3[1]; + local_24 = iVar15 * 0x10000; + iVar10 = iVar9 * 0x10000; + *param_2 = local_28; + iVar28 = iVar28 * 0x10000; + param_2[1] = local_24; + *param_3 = iVar10; + param_3[1] = iVar28; + if ((int)param_5 < 2) { + if (param_6 < 0x10) { + local_28 = local_28 >> 0x10; + local_24 = local_24 >> 0x10; + *param_2 = local_28; + param_2[1] = local_24; + *param_3 = iVar10 >> 0x10; + param_3[1] = iVar28 >> 0x10; + local_50[1] = iVar28 >> 0x10; + local_50[0] = iVar10 >> 0x10; + FUN_001a4e8c(param_1,&local_28,local_50); + return; + } + local_50[1] = iVar28; + local_50[0] = iVar10; + FUN_001a5090(param_1,&local_28,local_50); + return; + } + iVar7 = param_5 * 0x8000; + local_50[2] = 0; + local_50[3] = 0; + local_50[0] = 0; + local_50[1] = 0; + dVar35 = (double)(iVar28 + iVar15 * -0x10000) * DAT_001b10c8; + dVar33 = (double)(local_28 + iVar9 * -0x10000) * DAT_001b10c8; + local_50[6] = 0; + local_50[7] = 0; + local_50[4] = 0; + local_50[5] = 0; + __x = dVar35 * dVar35 + dVar33 * dVar33; + if (ABS(__x) <= DAT_001b10d0) goto LAB_001b0728; + dVar31 = SQRT(__x); + if (NAN(dVar31)) { + dVar31 = sqrt(__x); + } + dVar31 = ((double)iVar7 + (double)((param_5 & 1) << 0x10) * 0.5) / dVar31; + lVar12 = lrint(dVar35 * dVar31); + lVar13 = lrint(dVar33 * dVar31); + iVar28 = (int)lVar12; + iVar15 = *param_2 + iVar28; + iVar10 = (int)lVar13; + iVar9 = param_2[1] + iVar10; + local_50[1] = iVar9; + local_50[0] = iVar15; + local_50[5] = param_3[1] - iVar10; + local_50[4] = *param_3 - iVar28; + local_50[3] = param_2[1] - iVar10; + local_50[2] = *param_2 - iVar28; + local_50[7] = param_3[1] + iVar10; + local_50[6] = *param_3 + iVar28; + lVar12 = *(long *)(param_1 + 0x10); + iVar10 = (*(int **)(param_1 + 0x40))[1]; + iVar28 = **(int **)(param_1 + 0x40); + if (*(int *)(param_1 + 4) < 1) { + uVar29 = 0; + } + else { + uVar29 = *(uint *)(*(long *)(param_1 + 0x48) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + iVar24 = iVar15; + iVar32 = iVar9; + if (param_6 < 0x10) { + iVar11 = 0x8000; + iVar37 = iVar11; + if (8 < param_6) goto LAB_001b0f0c; + iVar34 = 0; + iVar30 = 0; + piVar17 = local_50; + do { + iVar5 = piVar17[1]; + iVar6 = *piVar17; + piVar17 = piVar17 + 2; + if (iVar5 < iVar32) { + iVar34 = iVar30; + iVar32 = iVar5; + } + iVar30 = iVar30 + 1; + if (iVar9 < iVar5) { + iVar9 = iVar5; + } + if (iVar15 < iVar6) { + iVar15 = iVar6; + } + if (iVar6 < iVar24) { + iVar24 = iVar6; + } + FUN_001a3bb8(param_1,&local_58,&local_28,param_4); + } while (iVar30 != 4); + } + else { + iVar11 = 0; + iVar37 = 0xffff; +LAB_001b0f0c: + iVar34 = 0; + iVar30 = 0; + piVar17 = local_50; + do { + iVar5 = piVar17[1]; + iVar6 = *piVar17; + piVar17 = piVar17 + 2; + if (iVar5 < iVar32) { + iVar34 = iVar30; + iVar32 = iVar5; + } + iVar30 = iVar30 + 1; + if (iVar9 < iVar5) { + iVar9 = iVar5; + } + if (iVar15 < iVar6) { + iVar15 = iVar6; + } + if (iVar6 < iVar24) { + iVar24 = iVar6; + } + FUN_001a5090(param_1,&local_58,&local_28,param_4); + } while (iVar30 != 4); + } + uVar2 = iVar9 + 0x8000 >> 0x10; + iVar9 = iVar32 + 0x8000 >> 0x10; + if ((iVar24 + 0x8000 >> 0x10 < iVar10 && -1 < (int)(iVar15 + 0x8000U | uVar2)) && + (uVar26 = (uint)(iVar28 <= iVar9), iVar28 > iVar9)) { + uVar3 = iVar28 - 1; + if ((int)uVar2 < iVar28) { + uVar3 = uVar2; + } + uVar2 = -(int)param_4 & 0xf; + lVar13 = *(long *)(param_1 + 0x50); + uVar27 = 1; + local_20[3] = iVar34; + local_28 = iVar34; + uVar4 = uVar29; + if (uVar2 < uVar29) { + uVar4 = uVar2; + } + uVar8 = (uVar29 - 1) - uVar4; + local_4 = iVar9; + uVar2 = ((uVar29 - uVar4) - 0x10 >> 4) + 1; + iVar24 = 4; + iVar28 = uVar2 * 0x10; + local_20[2] = iVar9; + local_10 = 3; + lVar12 = lVar12 + iVar9 * lVar13; + local_24 = 1; + iVar15 = iVar9; + do { + piVar17 = &local_28; + if ((iVar15 < (int)uVar3 || iVar9 == iVar15) || (param_6 < 0x10)) { + do { + if (piVar17[4] <= iVar15) { + iVar30 = *piVar17; + piVar22 = local_50 + (long)iVar30 * 2; + iVar32 = local_50[(long)iVar30 * 2 + 1] + 0x8000 >> 0x10; + if ((iVar24 == 0) || (iVar15 < iVar32)) { + iVar34 = 0; + } + else { + do { + iVar34 = *piVar22; + iVar24 = iVar24 + -1; + iVar30 = piVar17[1] + iVar30 + (uint)(3 < piVar17[1] + iVar30) * -4; + piVar22 = local_50 + (long)iVar30 * 2; + iVar32 = local_50[(long)iVar30 * 2 + 1] + 0x8000 >> 0x10; + if (iVar15 < iVar32) break; + } while (iVar24 != 0); + } + iVar5 = *piVar22; + if (iVar32 <= iVar15) goto LAB_001b0ea8; + piVar17[4] = iVar32; + iVar6 = (iVar32 - iVar15) * 2; + piVar17[2] = iVar34; + *piVar17 = iVar30; + iVar30 = 0; + if (iVar6 != 0) { + iVar30 = ((iVar32 - iVar15) + (iVar5 - iVar34) * 2) / iVar6; + } + piVar17[3] = iVar30; + } + piVar17 = piVar17 + 5; + } while (piVar17 != (int *)&stack0x00000000); + } + lVar16 = (long)(int)uVar26; + lVar14 = (long)(int)uVar27; + iVar32 = local_20[lVar16 * 5]; + iVar30 = local_20[lVar14 * 5]; + if (iVar30 < iVar32) { + uVar26 = uVar26 ^ 1; + uVar27 = uVar27 ^ 1; + lVar16 = (long)(int)uVar26; + lVar14 = (long)(int)uVar27; + iVar32 = local_20[lVar16 * 5]; + iVar30 = local_20[lVar14 * 5]; + } + if (-1 < iVar15) { + iVar34 = iVar11 + iVar30 >> 0x10; + iVar5 = iVar37 + iVar32 >> 0x10; + if ((-1 < iVar34) && (iVar5 < iVar10)) { + if (iVar5 < 0) { + iVar5 = 0; + } + iVar6 = iVar10 + -1; + if (iVar34 < iVar10) { + iVar6 = iVar34; + } + puVar25 = (undefined1 *)(lVar12 + (int)(iVar5 * uVar29)); + puVar1 = (undefined1 *)(lVar12 + (int)(iVar6 * uVar29)); + if (puVar25 <= puVar1) { + do { + if (0 < (int)uVar29) { + if ((param_4 < puVar25 + 0x10 && puVar25 < param_4 + 0x10) || (uVar29 < 0x16)) { + lVar13 = 0; + do { + puVar25[lVar13] = param_4[lVar13]; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < (int)uVar29); + } + else { + uVar20 = uVar4; + if (uVar4 == 0) { + uVar19 = 0; + if (0xe < uVar8) goto LAB_001b0cc4; + iVar34 = 1; + *puVar25 = *param_4; + } + else { + *puVar25 = *param_4; + if ((((uVar4 != 1) && (puVar25[1] = param_4[1], uVar4 != 2)) && + (puVar25[2] = param_4[2], uVar4 != 3)) && + ((puVar25[3] = param_4[3], uVar4 != 4 && + (puVar25[4] = param_4[4], uVar4 != 5)))) { + puVar25[5] = param_4[5]; + if (uVar4 == 6) { + uVar20 = 6; + } + else { + puVar25[6] = param_4[6]; + if ((((uVar4 != 7) && (puVar25[7] = param_4[7], uVar4 != 8)) && + ((puVar25[8] = param_4[8], uVar4 != 9 && + (((puVar25[9] = param_4[9], uVar4 != 10 && + (puVar25[10] = param_4[10], uVar4 != 0xb)) && + (puVar25[0xb] = param_4[0xb], uVar4 != 0xc)))))) && + (puVar25[0xc] = param_4[0xc], uVar4 != 0xd)) { + puVar25[0xd] = param_4[0xd]; + if (uVar4 == 0xf) { + puVar25[0xe] = param_4[0xe]; + } + else { + uVar20 = 0xe; + } + } + } + } + uVar19 = (ulong)uVar4; + if (0xe < uVar8) { +LAB_001b0cc4: + uVar21 = 0; + puVar18 = (undefined8 *)(param_4 + uVar19); + puVar23 = (undefined8 *)(puVar25 + uVar19); + do { + uVar36 = *puVar18; + uVar21 = uVar21 + 1; + puVar23[1] = puVar18[1]; + *puVar23 = uVar36; + puVar18 = puVar18 + 2; + puVar23 = puVar23 + 2; + } while (uVar21 < uVar2); + uVar20 = uVar20 + iVar28; + if (iVar28 == uVar29 - uVar4) goto LAB_001b0e54; + } + iVar34 = uVar20 + 1; + puVar25[(int)uVar20] = param_4[(int)uVar20]; + if ((int)uVar29 <= iVar34) goto LAB_001b0e54; + } + iVar5 = iVar34 + 1; + puVar25[iVar34] = param_4[iVar34]; + if (iVar5 < (int)uVar29) { + iVar6 = iVar34 + 2; + puVar25[iVar5] = param_4[iVar5]; + if (iVar6 < (int)uVar29) { + iVar5 = iVar34 + 3; + puVar25[iVar6] = param_4[iVar6]; + if (iVar5 < (int)uVar29) { + iVar6 = iVar34 + 4; + puVar25[iVar5] = param_4[iVar5]; + if (iVar6 < (int)uVar29) { + iVar5 = iVar34 + 5; + puVar25[iVar6] = param_4[iVar6]; + if (iVar5 < (int)uVar29) { + iVar6 = iVar34 + 6; + puVar25[iVar5] = param_4[iVar5]; + if (iVar6 < (int)uVar29) { + iVar5 = iVar34 + 7; + puVar25[iVar6] = param_4[iVar6]; + if (iVar5 < (int)uVar29) { + iVar6 = iVar34 + 8; + puVar25[iVar5] = param_4[iVar5]; + if (iVar6 < (int)uVar29) { + iVar5 = iVar34 + 9; + puVar25[iVar6] = param_4[iVar6]; + if (iVar5 < (int)uVar29) { + iVar6 = iVar34 + 10; + puVar25[iVar5] = param_4[iVar5]; + if (iVar6 < (int)uVar29) { + iVar5 = iVar34 + 0xb; + puVar25[iVar6] = param_4[iVar6]; + if (iVar5 < (int)uVar29) { + iVar6 = iVar34 + 0xc; + puVar25[iVar5] = param_4[iVar5]; + if (iVar6 < (int)uVar29) { + iVar34 = iVar34 + 0xd; + puVar25[iVar6] = param_4[iVar6]; + if (iVar34 < (int)uVar29) { + puVar25[iVar34] = param_4[iVar34]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001b0e54: + puVar25 = puVar25 + (int)uVar29; + } while (puVar25 <= puVar1); + lVar13 = *(long *)(param_1 + 0x50); + } + } + } + iVar15 = iVar15 + 1; + lVar12 = lVar12 + lVar13; + iVar34 = local_20[lVar14 * 5 + 1]; + local_20[lVar16 * 5] = local_20[lVar16 * 5 + 1] + iVar32; + local_20[lVar14 * 5] = iVar30 + iVar34; + } while (iVar15 <= (int)uVar3); + } +LAB_001b0ea8: + iVar10 = *param_3; + iVar28 = param_3[1]; +LAB_001b0728: + *param_2 = iVar10; + param_2[1] = iVar28; + if (param_6 < 0x10) { + local_28 = iVar10 + 0x8000 >> 0x10; + local_24 = iVar28 + 0x8000 >> 0x10; + FUN_001a1838(param_1,&local_28,iVar7 + 0x8000 >> 0x10,param_4); + iVar15 = *param_3; + iVar9 = param_3[1]; + } + else { + local_58 = iVar7; + local_54 = iVar7; + local_28 = iVar10; + local_24 = iVar28; + FUN_001a9f40(param_1,&local_28,&local_58,0,0,0x168,param_4,0xffffffff,param_6); + iVar15 = *param_3; + iVar9 = param_3[1]; + } + *param_2 = iVar15; + param_2[1] = iVar9; + return; +} + + +================================================================== + +### FUNC 001b10d8 (852 bytes) name=fillPoly + +/* cv::fillPoly(cv::Mat&, cv::Point_ const**, int const*, int, cv::Scalar_ const&, int, + int, cv::Point_) */ + +void cv::fillPoly(uint *param_1,long param_2,int *param_3,uint param_4,Scalar_ *param_5,int param_6, + uint param_7,undefined4 *param_8) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + char *pcVar11; + void *pvVar12; + uint uVar13; + int *piVar14; + ulong uVar15; + ulong uVar16; + uint uVar17; + long lVar18; + int iVar19; + int iVar20; + int iVar21; + int iVar22; + undefined4 local_40; + undefined4 local_3c; + void *local_38; + void *local_30; + long local_28; + undefined8 local_20; + undefined8 local_18; + + if ((param_6 == 0x10) && ((*param_1 & 7) != 0)) { + param_6 = 8; + } + if ((((param_2 == 0) || (param_3 == (int *)0x0)) || ((int)param_4 < 0)) || (0x10 < param_7)) { + local_20 = 0; + local_18 = 0; + pcVar11 = (char *)String::allocate((String *)&local_20,0x40); + uVar9 = s_pts____npts____ncontours_>__0____0043f7c8._56_8_; + uVar8 = s_pts____npts____ncontours_>__0____0043f7c8._48_8_; + uVar7 = s_pts____npts____ncontours_>__0____0043f7c8._40_8_; + uVar6 = s_pts____npts____ncontours_>__0____0043f7c8._32_8_; + uVar5 = s_pts____npts____ncontours_>__0____0043f7c8._24_8_; + uVar4 = s_pts____npts____ncontours_>__0____0043f7c8._16_8_; + uVar3 = s_pts____npts____ncontours_>__0____0043f7c8._8_8_; + *(undefined8 *)pcVar11 = s_pts____npts____ncontours_>__0____0043f7c8._0_8_; + *(undefined8 *)(pcVar11 + 8) = uVar3; + *(undefined8 *)(pcVar11 + 0x10) = uVar4; + *(undefined8 *)(pcVar11 + 0x18) = uVar5; + *(undefined8 *)(pcVar11 + 0x20) = uVar6; + *(undefined8 *)(pcVar11 + 0x28) = uVar7; + *(undefined8 *)(pcVar11 + 0x30) = uVar8; + *(undefined8 *)(pcVar11 + 0x38) = uVar9; + error(-0xd7,(String *)&local_20, + "void cv::fillPoly(cv::Mat&, const Point**, const int*, int, const Scalar&, int, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x72c); + String::deallocate((String *)&local_20); + } + scalarToRawData(param_5,&local_20,*param_1 & 0xfff,0); + local_38 = (void *)0x0; + local_30 = (void *)0x0; + local_28 = 0; + if ((int)param_4 < 1) { + uVar16 = 0x18; +LAB_001b13c8: + pvVar12 = operator_new(uVar16); + if (local_38 != (void *)0x0) { + operator_delete(local_38); + } + local_28 = (long)pvVar12 + uVar16; + local_38 = pvVar12; + local_30 = pvVar12; + if ((int)param_4 < 1) goto LAB_001b1360; + } + else { + uVar13 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + if (param_4 < uVar13) { + uVar13 = param_4; + } + uVar1 = param_4; + if ((int)param_4 < 7) { +LAB_001b11f4: + uVar13 = uVar1; + iVar10 = *param_3; + if (((uVar13 == 1) || (iVar10 = iVar10 + param_3[1], uVar13 == 2)) || + ((iVar10 = iVar10 + param_3[2], uVar13 == 3 || (iVar10 = iVar10 + param_3[3], uVar13 == 4)) + )) { + uVar16 = (ulong)uVar13; + } + else { + iVar10 = iVar10 + param_3[4]; + if (uVar13 == 6) { + uVar16 = 6; + iVar10 = iVar10 + param_3[5]; + } + else { + uVar16 = 5; + } + } + if (uVar13 != param_4) goto LAB_001b1254; + } + else { + iVar10 = 0; + uVar16 = 0; + uVar1 = uVar13; + if (uVar13 != 0) goto LAB_001b11f4; +LAB_001b1254: + uVar1 = ((param_4 - uVar13) - 4 >> 2) + 1; + iVar2 = uVar1 * 4; + if (2 < (param_4 - 1) - uVar13) { + iVar19 = 0; + iVar20 = 0; + iVar21 = 0; + iVar22 = 0; + uVar17 = 0; + piVar14 = param_3 + uVar13; + do { + uVar17 = uVar17 + 1; + iVar19 = iVar19 + (int)*(undefined8 *)piVar14; + iVar20 = iVar20 + (int)((ulong)*(undefined8 *)piVar14 >> 0x20); + iVar21 = iVar21 + (int)*(undefined8 *)(piVar14 + 2); + iVar22 = iVar22 + (int)((ulong)*(undefined8 *)(piVar14 + 2) >> 0x20); + piVar14 = piVar14 + 4; + } while (uVar17 < uVar1); + uVar16 = (ulong)(uint)((int)uVar16 + iVar2); + iVar10 = iVar10 + iVar19 + iVar20 + iVar21 + iVar22; + if (param_4 - uVar13 == iVar2) goto LAB_001b12e8; + } + uVar15 = -(uVar16 >> 0x1f) & 0xfffffffc00000000 | uVar16 << 2; + iVar10 = iVar10 + *(int *)((long)param_3 + uVar15); + if ((int)uVar16 + 1 < (int)param_4) { + iVar10 = iVar10 + *(int *)((long)param_3 + uVar15 + 4); + if ((int)uVar16 + 2 < (int)param_4) { + iVar10 = iVar10 + *(int *)((long)param_3 + uVar15 + 8); + } + } + } +LAB_001b12e8: + uVar16 = (ulong)(iVar10 + 1); + if (0xaaaaaaaaaaaaaaa < uVar16) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::reserve"); + } + if (uVar16 != 0) { + uVar16 = uVar16 * 0x18; + goto LAB_001b13c8; + } + } + lVar18 = 0; + local_38 = local_30; + do { + local_40 = *param_8; + local_3c = param_8[1]; + FUN_001a6dec(param_1,*(undefined8 *)(param_2 + lVar18 * 8),param_3[lVar18],&local_38,&local_20, + param_6,param_7,&local_40); + lVar18 = lVar18 + 1; + } while (lVar18 != (ulong)(param_4 - 1) + 1); +LAB_001b1360: + FUN_001a95a4(param_1,&local_38,&local_20); + if (local_38 != (void *)0x0) { + operator_delete(local_38); + } + return; +} + + +================================================================== + +### FUNC 001b145c (1248 bytes) name=fillPoly + +/* cv::fillPoly(cv::_InputOutputArray const&, cv::_InputArray const&, cv::Scalar_ const&, + int, int, cv::Point_) */ + +void cv::fillPoly(_InputArray *param_1,_InputArray *param_2,undefined8 param_3,undefined4 param_4, + undefined4 param_5,undefined8 *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined1 *puVar7; + undefined1 *puVar8; + int iVar9; + int iVar10; + ulong uVar11; + char *pcVar12; + undefined4 *puVar13; + Mat *pMVar14; + ulong uVar15; + long lVar16; + undefined8 local_950; + undefined8 local_948; + undefined4 local_940; + int local_93c; + undefined4 local_938; + undefined4 local_934; + undefined8 local_930; + undefined8 local_928; + undefined8 local_920; + undefined8 local_918; + undefined8 local_910; + long local_908; + undefined4 *local_900; + undefined8 *local_8f8; + undefined8 local_8f0; + undefined8 local_8e8; + undefined8 local_8e0; + int local_8d8; + int local_8d4; + undefined8 local_8d0; + undefined8 local_8c8; + undefined8 local_8c0; + undefined8 local_8b8; + long local_8a8; + undefined4 *local_8a0; + undefined1 *local_898; + undefined1 auStack_890 [16]; + undefined1 *local_880; + ulong local_878; + undefined1 auStack_870 [1056]; + undefined1 *local_450; + ulong local_448; + undefined1 auStack_440 [1088]; + + iVar9 = _InputArray::kind(param_1); + if (iVar9 == 0x10000) { + pMVar14 = *(Mat **)(param_1 + 8); + local_900 = &local_938; + local_8f8 = &local_8f0; + local_940 = *(undefined4 *)pMVar14; + local_93c = *(int *)(pMVar14 + 4); + local_938 = *(undefined4 *)(pMVar14 + 8); + local_934 = *(undefined4 *)(pMVar14 + 0xc); + local_930 = *(undefined8 *)(pMVar14 + 0x10); + local_928 = *(undefined8 *)(pMVar14 + 0x18); + local_920 = *(undefined8 *)(pMVar14 + 0x20); + local_918 = *(undefined8 *)(pMVar14 + 0x28); + local_910 = *(undefined8 *)(pMVar14 + 0x30); + local_908 = *(long *)(pMVar14 + 0x38); + local_8e8 = 0; + local_8f0 = 0; + if (local_908 != 0) { + piVar1 = (int *)(local_908 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_8f0 = **(undefined8 **)(pMVar14 + 0x48); + local_8e8 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_93c = 0; + Mat::copySize((Mat *)&local_940,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar9 = _InputArray::total(param_2,-1); + if (iVar9 == 0) { + if (local_908 != 0) { + piVar1 = (int *)(local_908 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_940); + } + } + local_908 = 0; + local_930 = 0; + local_918 = 0; + local_920 = 0; + local_928 = 0; + if (0 < local_93c) { + iVar9 = 0; + puVar13 = local_900; + do { + *puVar13 = 0; + iVar9 = iVar9 + 1; + puVar13 = puVar13 + 1; + } while (iVar9 < local_93c); + } + if (local_8f8 == &local_8f0) { + return; + } + goto LAB_001b16fc; + } + uVar15 = (ulong)iVar9; + local_450 = auStack_440; + local_448 = 0x88; + if (uVar15 < 0x89) { +LAB_001b17d0: + local_880 = auStack_870; + local_448 = uVar15; + } + else { + uVar11 = uVar15 << 3; + if (0xfe0000000000000 < uVar15) { + uVar11 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar11); + local_880 = auStack_870; + local_878 = 0x108; + if (uVar15 < 0x109) goto LAB_001b17d0; + uVar11 = uVar15 << 2; + if (0x1fc0000000000000 < uVar15) { + uVar11 = 0xffffffffffffffff; + } + local_448 = uVar15; + local_880 = operator_new__(uVar11); + } + puVar8 = local_450; + puVar7 = local_880; + lVar16 = 0; + local_878 = uVar15; + if (0 < iVar9) { + do { + _InputArray::kind(param_2); + _InputArray::getMat_((int)param_2); + iVar10 = Mat::checkVector((Mat *)&local_8e0,2,4,true); + if (iVar10 < 0) { + local_950 = 0; + local_948 = 0; + pcVar12 = (char *)String::allocate((String *)&local_950,0x1d); + cVar2 = s_p_checkVector_2__CV_32S__>__0_0043f680[0x1c]; + uVar6 = s_p_checkVector_2__CV_32S__>__0_0043f680._24_4_; + *(undefined8 *)(pcVar12 + 0x10) = s_p_checkVector_2__CV_32S__>__0_0043f680._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar6; + uVar5 = s_p_checkVector_2__CV_32S__>__0_0043f680._8_8_; + uVar4 = s_p_checkVector_2__CV_32S__>__0_0043f680._0_8_; + pcVar12[0x1c] = cVar2; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + error(-0xd7,(String *)&local_950, + "void cv::fillPoly(cv::InputOutputArray, cv::InputArrayOfArrays, const Scalar&, int, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x89f); + String::deallocate((String *)&local_950); + } + *(undefined8 *)(puVar8 + lVar16 * 8) = local_8d0; + *(int *)(puVar7 + lVar16 * 4) = + (int)(local_8d8 * local_8d4 + ((uint)local_8e0 >> 3 & 0x1ff) * local_8d8 * local_8d4) / 2 + ; + if (local_8a8 != 0) { + piVar1 = (int *)(local_8a8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_8e0); + } + } + local_8a8 = 0; + local_8d0 = 0; + local_8b8 = 0; + local_8c0 = 0; + local_8c8 = 0; + if (0 < local_8e0._4_4_) { + iVar10 = 0; + puVar13 = local_8a0; + do { + *puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = puVar13 + 1; + } while (iVar10 < local_8e0._4_4_); + } + if (local_898 != auStack_890) { + fastFree(local_898); + } + lVar16 = lVar16 + 1; + } while ((int)lVar16 < iVar9); + } + local_8e0 = *param_6; + fillPoly((Mat *)&local_940,puVar8,puVar7,iVar9,param_3,param_4,param_5,&local_8e0); + if ((local_880 != auStack_870) && (local_880 != (undefined1 *)0x0)) { + operator_delete__(local_880); + } + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + Mat::release((Mat *)&local_940); + if (local_8f8 == &local_8f0) { + return; + } +LAB_001b16fc: + fastFree(local_8f8); + return; +} + + +================================================================== + +### FUNC 001b19e0 (308 bytes) name=cvFillPoly + +void cvFillPoly(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,undefined8 param_6,undefined8 param_7,undefined4 param_8, + undefined4 param_9,AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + local_88 = 0; + local_84 = 0; + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::fillPoly(aMStack_60,param_6,param_7,param_8,&local_80,param_9,(ulong)param_10 & 0xffffffff, + &local_88); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001b1b40 (5140 bytes) name=cvDrawContours + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void cvDrawContours(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8, + cv *param_9,long param_10,int param_11,uint param_12,int param_13, + AutoBuffer *param_14) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + undefined1 *puVar4; + int iVar5; + int iVar6; + char cVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + undefined8 uVar12; + undefined2 uVar13; + uint uVar14; + int iVar15; + int iVar16; + char *pcVar17; + uint *puVar18; + long lVar19; + long lVar20; + uint *puVar21; + uint *puVar22; + int iVar23; + uint uVar24; + long lVar25; + uint *puVar26; + uint *puVar27; + uint *puVar28; + undefined8 *puVar29; + int *piVar30; + ulong uVar31; + uint uVar32; + int iVar33; + String *pSVar34; + int iVar35; + int iVar36; + uint uVar37; + long lVar38; + uint uVar39; + int iVar40; + int iVar41; + uint uVar42; + uint uVar43; + int iVar44; + ulong uVar45; + int iVar46; + undefined8 *puVar47; + ulong uVar48; + char cVar49; + int iVar50; + double dVar51; + double __x; + undefined8 uVar52; + int iVar53; + double dVar54; + uint uVar55; + double dVar56; + int local_2f0; + int local_2e0; + int local_2d4; + int local_2b4; + long local_278; + undefined8 local_210; + undefined8 local_208; + int local_200; + int local_1fc; + int local_1f8; + int local_1f4; + int local_1f0; + int local_1ec; + int local_1e8; + int local_1e4; + int local_1e0; + int local_1dc; + int local_1d8; + int local_1d4; + int local_1d0; + int local_1cc; + int local_1c8; + int local_1c4; + int local_1c0; + int local_1bc; + int local_1b8; + int local_1b4; + undefined1 auStack_1b0 [16]; + void *local_1a0; + undefined8 local_198; + undefined8 local_190; + uint *local_188; + uint *local_180; + uint *local_178; + undefined8 uStack_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 uStack_150; + undefined8 uStack_148; + undefined8 local_140; + undefined8 uStack_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 uStack_118; + undefined1 local_108 [32]; + undefined1 auStack_e8 [32]; + undefined8 local_c8; + int local_c0 [4]; + undefined4 local_b0; + int local_a4; + undefined8 local_a0; + undefined8 local_98; + char *local_88; + char *local_78; + uint local_60; + int local_5c; + long local_50; + int *local_20; + long *local_18; + long local_10 [2]; + + local_1a0 = (void *)0x0; + local_198 = 0; + local_190 = 0; + local_188 = (uint *)0x0; + local_180 = (uint *)0x0; + local_178 = (uint *)0x0; + uStack_170 = param_1; + uStack_168 = param_2; + local_160 = param_3; + uStack_158 = param_4; + uStack_150 = param_5; + uStack_148 = param_6; + local_140 = param_7; + uStack_138 = param_8; + cv::cvarrToMat(param_9,(void *)0x0,true,false,0,param_14); + iVar40 = (int)param_14; + local_2e0 = param_13; + if ((param_13 == 0x10) && ((local_60 & 7) != 0)) { + local_2e0 = 8; + } + if (param_10 != 0) { + if (0x7fff < (int)param_12) { + local_a0 = 0; + local_98 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_a0,0x1a); + uVar13 = s_thickness_<__MAX_THICKNESS_0043f6a0._24_2_; + uVar12 = s_thickness_<__MAX_THICKNESS_0043f6a0._8_8_; + uVar52 = s_thickness_<__MAX_THICKNESS_0043f6a0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_thickness_<__MAX_THICKNESS_0043f6a0._16_8_; + *(undefined2 *)(pcVar17 + 0x18) = uVar13; + *(undefined8 *)pcVar17 = uVar52; + *(undefined8 *)(pcVar17 + 8) = uVar12; + cv::error(-0xd7,(String *)&local_a0, + "void cvDrawContours(void*, CvSeq*, CvScalar, CvScalar, int, int, int, CvPoint)", + "/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x94f); + cv::String::deallocate((String *)&local_a0); + } + cv::scalarToRawData((Scalar_ *)&uStack_170,local_108,local_60 & 0xfff,0); + cv::scalarToRawData((Scalar_ *)&uStack_150,auStack_e8,local_60 & 0xfff,0); + local_278 = 0; + if (param_11 < -0x7ffffffe) { + param_11 = -0x7ffffffe; + } + if (param_11 == 0x7fffffff) { + param_11 = 0x7ffffffe; + } + else if (param_11 < 0) { + local_278 = *(long *)(param_10 + 0x10); + param_11 = 1 - param_11; + *(undefined8 *)(param_10 + 0x10) = 0; + } + cvInitTreeNodeIterator(auStack_1b0,param_10,param_11); + iVar50 = param_12 * 0x8000; +LAB_001b1db4: + puVar18 = (uint *)cvNextTreeNode(auStack_1b0); + if (puVar18 != (uint *)0x0) { + uVar42 = *puVar18; + uVar43 = puVar18[10]; + puVar4 = auStack_e8; + if ((uVar42 & 0x8000) == 0) { + puVar4 = local_108; + } + cvStartReadSeq(puVar18,(String *)&local_a0); + if (((int)param_12 < 0) && ((long)local_180 - (long)local_188 >> 3 != 0)) { + local_180 = local_188; + } + uVar14 = *puVar18; + if ((uVar14 & 0x3000) == 0x1000) { + local_2f0 = (int)((ulong)param_14 >> 0x20); + if ((puVar18[0xb] == 1) && ((uVar14 >> 0xe & 1) != 0)) { + uVar42 = puVar18[0x18]; + uVar14 = puVar18[0x19]; + if (local_88 == (char *)0x0) { + cVar49 = '\0'; + } + else { + cVar49 = *local_88; + } + uVar37 = iVar40 + uVar42; + uVar55 = local_2f0 + uVar14; + if (0 < (int)uVar43) { + uVar39 = 0; + do { + pcVar17 = local_88 + 1; + cVar7 = *local_88; + local_88 = pcVar17; + if (local_78 <= pcVar17) { + cvChangeSeqBlock((String *)&local_a0,1); + } + puVar26 = local_180; + if (cVar49 != cVar7) { + if ((int)param_12 < 0) { + if (local_180 == local_178) { + lVar38 = (long)local_180 - (long)local_188; + uVar31 = lVar38 >> 3; + if (uVar31 == 0) { + uVar45 = 1; +LAB_001b2e94: + puVar22 = (uint *)FUN_001a1810(uVar45); + puVar21 = puVar22 + 2; + } + else { + uVar48 = uVar31 * 2; + uVar45 = 0x1fffffffffffffff; + if (((uVar48 < uVar31) || (0x1fffffffffffffff < uVar48)) || + (uVar45 = uVar48, uVar48 != 0)) goto LAB_001b2e94; + puVar21 = (uint *)0x8; + puVar22 = (uint *)0x0; + } + if ((long)puVar22 + lVar38 != 0) { + *(uint *)((long)puVar22 + lVar38) = uVar42; + *(uint *)((long)puVar22 + lVar38 + 4) = uVar14; + } + puVar28 = puVar22; + puVar27 = local_188; + if (puVar26 != local_188) { + do { + if (puVar28 != (uint *)0x0) { + *(undefined8 *)puVar28 = *(undefined8 *)puVar27; + } + puVar27 = puVar27 + 2; + puVar28 = puVar28 + 2; + } while (puVar26 != puVar27); + puVar21 = (uint *)((long)puVar22 + + ((long)puVar26 - (long)(local_188 + 2) & 0xfffffffffffffff8U + ) + 0x10); + } + puVar27 = puVar26; + puVar28 = puVar21; + if (puVar26 != local_180) { + do { + if (puVar28 != (uint *)0x0) { + *(undefined8 *)puVar28 = *(undefined8 *)puVar27; + } + puVar27 = puVar27 + 2; + puVar28 = puVar28 + 2; + } while (puVar27 != local_180); + puVar21 = (uint *)((long)puVar21 + + ((long)puVar27 - (long)(puVar26 + 2) & 0xfffffffffffffff8U) + + 8); + } + if (local_188 != (uint *)0x0) { + operator_delete(local_188); + } + local_178 = puVar22 + uVar45 * 2; + uVar37 = uVar42; + uVar55 = uVar14; + local_188 = puVar22; + local_180 = puVar21; + } + else { + if (local_180 != (uint *)0x0) { + *local_180 = uVar42; + local_180[1] = uVar14; + } + uVar37 = uVar42; + uVar55 = uVar14; + local_180 = local_180 + 2; + } + } + else { + local_c8 = (AutoBuffer *)CONCAT44(uVar14,uVar42); + local_130 = CONCAT44(uVar55,uVar37); + FUN_001b0658((Mat *)&local_60,&local_130,(String *)&local_c8,puVar4,param_12, + local_2e0); + uVar37 = uVar42; + uVar55 = uVar14; + } + } + uVar31 = -((ulong)(long)cVar7 >> 0x1f & 1) & 0xfffffff800000000 | + ((long)cVar7 & 0xffffffffU) << 3; + uVar39 = uVar39 + 1; + uVar42 = uVar42 + *(int *)(&DAT_0043f410 + uVar31); + uVar14 = uVar14 + *(int *)(&DAT_0043f414 + uVar31); + cVar49 = cVar7; + } while (uVar39 != uVar43); + } + if ((int)param_12 < 0) { + local_c8 = param_14; + FUN_001a6dec((Mat *)&local_60,local_188,(ulong)((long)local_180 - (long)local_188) >> 3, + &local_1a0,local_108,local_2e0,0,(String *)&local_c8); + } + else { + local_c8 = (AutoBuffer *)CONCAT44(uVar55,uVar37); + local_130 = CONCAT44(local_2f0 + (int)((ulong)*(undefined8 *)(puVar18 + 0x18) >> 0x20), + iVar40 + (int)*(undefined8 *)(puVar18 + 0x18)); + FUN_001b0658((Mat *)&local_60,(String *)&local_c8,&local_130,puVar4,param_12,local_2e0); + } + goto LAB_001b1db4; + } + if (1 < (uVar14 & 0xfff) - 0xc) goto LAB_001b1db4; + if ((uVar42 & 0xfff) != 0xc) { + local_c8 = (AutoBuffer *)0x0; + local_c0[0] = 0; + local_c0[1] = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_c8,0x15); + uVar12 = s_elem_type____CV_32SC2_0043f810._8_8_; + uVar52 = s_elem_type____CV_32SC2_0043f810._0_8_; + *(undefined4 *)(pcVar17 + 0x10) = s_elem_type____CV_32SC2_0043f810._16_4_; + pcVar17[0x14] = s_elem_type____CV_32SC2_0043f810[0x14]; + *(undefined8 *)pcVar17 = uVar52; + *(undefined8 *)(pcVar17 + 8) = uVar12; + cv::error(-0xd7,(String *)&local_c8, + "void cvDrawContours(void*, CvSeq*, CvScalar, CvScalar, int, int, int, CvPoint)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x991); + cv::String::deallocate((String *)&local_c8); + uVar14 = *puVar18; + } + iVar10 = uVar43 - ((uVar14 & 0x4000) == 0); + pcVar17 = local_88 + 8; + local_210 = *(undefined8 *)local_88; + local_208 = 0; + local_88 = pcVar17; + if (local_78 <= pcVar17) { + cvChangeSeqBlock((String *)&local_a0,1); + } + local_210 = CONCAT44(local_210._4_4_ + local_2f0,iVar40 + (int)local_210); + if ((int)param_12 < 0) { + FUN_001a8ca0(&local_188,&local_210); + if (0 < iVar10) goto LAB_001b1f0c; + } + else { + if (iVar10 < 1) goto LAB_001b1db4; +LAB_001b1f0c: + uVar42 = -(int)puVar4 & 0xf; + iVar2 = 0; + do { + while( true ) { + pcVar17 = local_88 + 8; + local_208 = *(undefined8 *)local_88; + local_88 = pcVar17; + if (local_78 <= pcVar17) { + cvChangeSeqBlock((String *)&local_a0,1); + } + puVar18 = local_180; + uVar43 = iVar40 + (uint)local_208; + uVar14 = local_2f0 + local_208._4_4_; + local_208 = CONCAT44(uVar14,uVar43); + if ((int)param_12 < 0) break; + iVar36 = (int)local_210 * 0x10000; + iVar53 = local_210._4_4_ * 0x10000; + iVar8 = uVar43 * 0x10000; + iVar9 = uVar14 * 0x10000; + if ((int)param_12 < 2) { + if (local_2e0 < 0x10) { + local_1d8 = iVar36 >> 0x10; + local_1d4 = iVar53 >> 0x10; + local_1e0 = iVar8 >> 0x10; + local_1dc = iVar9 >> 0x10; + FUN_001a4e8c((Mat *)&local_60,&local_1d8,&local_1e0,puVar4); + } + else { + local_1f0 = iVar8; + local_1ec = iVar9; + local_1e8 = iVar36; + local_1e4 = iVar53; + FUN_001a5090((Mat *)&local_60,&local_1e8,&local_1f0,puVar4); + } + } + else { + local_128 = 0; + local_130 = 0; + dVar56 = (double)(iVar9 + local_210._4_4_ * -0x10000) * DAT_001b2fc8; + uStack_118 = 0; + local_120 = 0; + dVar54 = (double)(int)(iVar36 + uVar43 * -0x10000) * DAT_001b2fc8; + __x = dVar56 * dVar56 + dVar54 * dVar54; + if (DAT_001b2fd0 < ABS(__x)) { + dVar51 = SQRT(__x); + if (NAN(dVar51)) { + dVar51 = sqrt(__x); + } + dVar51 = ((double)iVar50 + (double)((param_12 & 1) << 0x10) * 0.5) / dVar51; + lVar19 = lrint(dVar56 * dVar51); + lVar20 = lrint(dVar54 * dVar51); + lVar38 = local_50; + iVar41 = (int)lVar19; + iVar15 = (int)lVar20; + iVar44 = iVar53 + iVar15; + iVar46 = iVar36 + iVar41; + iVar33 = iVar9 + iVar15; + local_130 = CONCAT44(iVar44,iVar46); + iVar35 = iVar8 + iVar41; + local_128 = CONCAT44(iVar53 - iVar15,iVar36 - iVar41); + local_120 = CONCAT44(iVar9 - iVar15,iVar8 - iVar41); + uStack_118 = CONCAT44(iVar33,iVar35); + iVar36 = *local_20; + iVar53 = local_20[1]; + if (local_5c < 1) { + uVar43 = 0; + } + else { + uVar43 = *(uint *)(local_18 + (long)local_5c + -1); + } + iVar15 = iVar46; + iVar41 = iVar44; + if (local_2e0 < 0x10) { + iVar16 = 0x8000; + local_2b4 = 0x8000; + if (8 < local_2e0) goto LAB_001b290c; + iVar23 = 0; + local_2d4 = 0; + piVar30 = (int *)&local_130; + do { + iVar5 = piVar30[1]; + iVar6 = *piVar30; + if (iVar5 < iVar41) { + iVar41 = iVar5; + local_2d4 = iVar23; + } + if (iVar44 < iVar5) { + iVar44 = iVar5; + } + if (iVar15 < iVar6) { + iVar15 = iVar6; + } + if (iVar6 < iVar46) { + iVar46 = iVar6; + } + local_1d0 = iVar35; + local_1cc = iVar33; + local_1c8 = iVar6; + local_1c4 = iVar5; + FUN_001a3bb8((Mat *)&local_60,&local_1d0,&local_1c8,puVar4); + iVar23 = iVar23 + 1; + piVar30 = piVar30 + 2; + iVar33 = iVar5; + iVar35 = iVar6; + } while (iVar23 != 4); + } + else { + iVar16 = 0; + local_2b4 = 0xffff; +LAB_001b290c: + iVar23 = 0; + local_2d4 = 0; + piVar30 = (int *)&local_130; + do { + iVar5 = piVar30[1]; + iVar6 = *piVar30; + if (iVar5 < iVar41) { + iVar41 = iVar5; + local_2d4 = iVar23; + } + if (iVar44 < iVar5) { + iVar44 = iVar5; + } + if (iVar15 < iVar6) { + iVar15 = iVar6; + } + if (iVar6 < iVar46) { + iVar46 = iVar6; + } + local_1c0 = iVar35; + local_1bc = iVar33; + local_1b8 = iVar6; + local_1b4 = iVar5; + FUN_001a5090((Mat *)&local_60,&local_1c0,&local_1b8,puVar4); + iVar23 = iVar23 + 1; + piVar30 = piVar30 + 2; + iVar33 = iVar5; + iVar35 = iVar6; + } while (iVar23 != 4); + } + uVar14 = iVar44 + 0x8000 >> 0x10; + iVar44 = iVar41 + 0x8000 >> 0x10; + if ((iVar46 + 0x8000 >> 0x10 < iVar53 && -1 < (int)(iVar15 + 0x8000U | uVar14)) && + (uVar37 = (uint)(iVar36 <= iVar44), iVar36 > iVar44)) { + uVar55 = iVar36 - 1; + if ((int)uVar14 < iVar36) { + uVar55 = uVar14; + } + uVar39 = 1; + iVar36 = 4; + uVar14 = uVar43; + if (uVar42 < uVar43) { + uVar14 = uVar42; + } + uVar11 = (uVar43 - 1) - uVar14; + lVar38 = lVar38 + iVar44 * local_10[0]; + local_c0[3] = local_2d4; + uVar3 = ((uVar43 - uVar14) - 0x10 >> 4) + 1; + local_a4 = iVar44; + local_c0[2] = iVar44; + local_c8 = (AutoBuffer *)CONCAT44(1,local_2d4); + iVar33 = uVar3 * 0x10; + local_b0 = 3; + pSVar34 = (String *)&local_c8; + iVar46 = iVar44; +LAB_001b2808: + if (*(int *)(pSVar34 + 0x10) <= iVar46) { + iVar15 = *(int *)pSVar34; + piVar30 = (int *)((long)&local_130 + (long)iVar15 * 2 * 4); + iVar35 = *(int *)((long)&local_130 + (long)iVar15 * 8 + 4) + 0x8000 >> 0x10; + if ((iVar36 == 0) || (iVar46 < iVar35)) { + iVar41 = 0; + } + else { + do { + iVar41 = *piVar30; + iVar36 = iVar36 + -1; + iVar15 = *(int *)(pSVar34 + 4) + iVar15 + + (uint)(3 < *(int *)(pSVar34 + 4) + iVar15) * -4; + piVar30 = (int *)((long)&local_130 + (long)iVar15 * 2 * 4); + iVar35 = *(int *)((long)&local_130 + (long)iVar15 * 8 + 4) + 0x8000 >> + 0x10; + if (iVar46 < iVar35) break; + } while (iVar36 != 0); + } + iVar23 = *piVar30; + if (iVar35 <= iVar46) goto LAB_001b1fcc; + *(int *)(pSVar34 + 0x10) = iVar35; + iVar5 = (iVar35 - iVar46) * 2; + *(int *)pSVar34 = iVar15; + *(int *)(pSVar34 + 8) = iVar41; + iVar15 = 0; + if (iVar5 != 0) { + iVar15 = ((iVar35 - iVar46) + (iVar23 - iVar41) * 2) / iVar5; + } + *(int *)(pSVar34 + 0xc) = iVar15; + } + pSVar34 = pSVar34 + 0x14; + if (pSVar34 == (String *)&local_a0) { + do { + lVar20 = (long)(int)uVar37; + lVar19 = (long)(int)uVar39; + iVar35 = local_c0[lVar20 * 5]; + iVar15 = local_c0[lVar19 * 5]; + if (iVar15 < iVar35) { + uVar37 = uVar37 ^ 1; + uVar39 = uVar39 ^ 1; + lVar20 = (long)(int)uVar37; + lVar19 = (long)(int)uVar39; + iVar35 = local_c0[lVar20 * 5]; + iVar15 = local_c0[lVar19 * 5]; + } + if (-1 < iVar46) { + iVar41 = iVar16 + iVar15 >> 0x10; + iVar23 = local_2b4 + iVar35 >> 0x10; + if ((-1 < iVar41) && (iVar23 < iVar53)) { + if (iVar23 < 0) { + iVar23 = 0; + } + puVar1 = (undefined1 *)(lVar38 + (int)(iVar23 * uVar43)); + iVar23 = iVar53 + -1; + if (iVar41 < iVar53) { + iVar23 = iVar41; + } + for (; puVar1 <= (undefined1 *)(lVar38 + (int)(iVar23 * uVar43)); + puVar1 = puVar1 + (int)uVar43) { + if (0 < (int)uVar43) { + if ((puVar4 < puVar1 + 0x10 && puVar1 < puVar4 + 0x10) || + (uVar43 < 0x16)) { + lVar25 = 0; + do { + puVar1[lVar25] = puVar4[lVar25]; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar43); + } + else { + uVar24 = uVar14; + if (uVar14 == 0) { + uVar31 = 0; + if (0xe < uVar11) goto LAB_001b2614; + iVar41 = 1; + *puVar1 = *puVar4; + } + else { + *puVar1 = *puVar4; + if ((((uVar14 != 1) && (puVar1[1] = puVar4[1], uVar14 != 2)) && + (puVar1[2] = puVar4[2], uVar14 != 3)) && + ((puVar1[3] = puVar4[3], uVar14 != 4 && + (puVar1[4] = puVar4[4], uVar14 != 5)))) { + puVar1[5] = puVar4[5]; + if (uVar14 == 6) { + uVar24 = 6; + } + else { + puVar1[6] = puVar4[6]; + if ((((uVar14 != 7) && (puVar1[7] = puVar4[7], uVar14 != 8)) + && ((puVar1[8] = puVar4[8], uVar14 != 9 && + (((puVar1[9] = puVar4[9], uVar14 != 10 && + (puVar1[10] = puVar4[10], uVar14 != 0xb)) && + (puVar1[0xb] = puVar4[0xb], uVar14 != 0xc)))))) && + (puVar1[0xc] = puVar4[0xc], uVar14 != 0xd)) { + puVar1[0xd] = puVar4[0xd]; + if (uVar14 == 0xf) { + puVar1[0xe] = puVar4[0xe]; + } + else { + uVar24 = 0xe; + } + } + } + } + uVar31 = (ulong)uVar14; + if (0xe < uVar11) { +LAB_001b2614: + uVar32 = 0; + puVar29 = (undefined8 *)(puVar4 + uVar31); + puVar47 = (undefined8 *)(puVar1 + uVar31); + do { + uVar52 = *puVar29; + uVar32 = uVar32 + 1; + puVar47[1] = puVar29[1]; + *puVar47 = uVar52; + puVar29 = puVar29 + 2; + puVar47 = puVar47 + 2; + } while (uVar32 < uVar3); + uVar24 = uVar24 + iVar33; + if (iVar33 == uVar43 - uVar14) goto LAB_001b27a0; + } + iVar41 = uVar24 + 1; + puVar1[(int)uVar24] = puVar4[(int)uVar24]; + if ((int)uVar43 <= iVar41) goto LAB_001b27a0; + } + iVar5 = iVar41 + 1; + puVar1[iVar41] = puVar4[iVar41]; + if (iVar5 < (int)uVar43) { + iVar6 = iVar41 + 2; + puVar1[iVar5] = puVar4[iVar5]; + if (iVar6 < (int)uVar43) { + iVar5 = iVar41 + 3; + puVar1[iVar6] = puVar4[iVar6]; + if (iVar5 < (int)uVar43) { + iVar6 = iVar41 + 4; + puVar1[iVar5] = puVar4[iVar5]; + if (iVar6 < (int)uVar43) { + iVar5 = iVar41 + 5; + puVar1[iVar6] = puVar4[iVar6]; + if (iVar5 < (int)uVar43) { + iVar6 = iVar41 + 6; + puVar1[iVar5] = puVar4[iVar5]; + if (iVar6 < (int)uVar43) { + iVar5 = iVar41 + 7; + puVar1[iVar6] = puVar4[iVar6]; + if (iVar5 < (int)uVar43) { + iVar6 = iVar41 + 8; + puVar1[iVar5] = puVar4[iVar5]; + if (iVar6 < (int)uVar43) { + iVar5 = iVar41 + 9; + puVar1[iVar6] = puVar4[iVar6]; + if (iVar5 < (int)uVar43) { + iVar6 = iVar41 + 10; + puVar1[iVar5] = puVar4[iVar5]; + if (iVar6 < (int)uVar43) { + iVar5 = iVar41 + 0xb; + puVar1[iVar6] = puVar4[iVar6]; + if (iVar5 < (int)uVar43) { + iVar6 = iVar41 + 0xc; + puVar1[iVar5] = puVar4[iVar5]; + if (iVar6 < (int)uVar43) { + iVar41 = iVar41 + 0xd; + puVar1[iVar6] = puVar4[iVar6]; + if (iVar41 < (int)uVar43) { + puVar1[iVar41] = puVar4[iVar41]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001b27a0: + } + } + } + iVar46 = iVar46 + 1; + lVar38 = lVar38 + local_10[0]; + iVar41 = local_c0[lVar19 * 5 + 1]; + local_c0[lVar20 * 5] = local_c0[lVar20 * 5 + 1] + iVar35; + local_c0[lVar19 * 5] = iVar15 + iVar41; + if ((int)uVar55 < iVar46) goto LAB_001b1fcc; + pSVar34 = (String *)&local_c8; + } while (((int)uVar55 <= iVar46 && iVar44 != iVar46) && (0xf < local_2e0)); + } + goto LAB_001b2808; + } + } +LAB_001b1fcc: + if (local_2e0 < 0x10) { + local_c8 = (AutoBuffer *)CONCAT44(iVar9 >> 0x10,iVar8 >> 0x10); + FUN_001a1838((Mat *)&local_60,(String *)&local_c8,iVar50 + 0x8000 >> 0x10,puVar4); + } + else { + local_200 = iVar50; + local_1fc = iVar50; + local_1f8 = iVar8; + local_1f4 = iVar9; + FUN_001a9f40((Mat *)&local_60,&local_1f8,&local_200,0,0,0x168,puVar4,0xffffffff, + local_2e0); + } + uVar43 = (uint)local_208; + uVar14 = local_208._4_4_; + } +LAB_001b2040: + iVar2 = iVar2 + 1; + local_210 = CONCAT44(uVar14,uVar43); + if (iVar10 <= iVar2) goto LAB_001b20d8; + } + if (local_180 == local_178) { + lVar38 = (long)local_180 - (long)local_188; + uVar31 = lVar38 >> 3; + if (uVar31 == 0) { + uVar45 = 8; +LAB_001b2cb8: + puVar21 = operator_new(uVar45); + puVar26 = puVar21 + 2; + } + else { + uVar48 = uVar31 * 2; + uVar45 = 0xfffffffffffffff8; + if ((uVar48 < uVar31) || (0x1fffffffffffffff < uVar48)) goto LAB_001b2cb8; + uVar45 = uVar31 << 4; + puVar26 = (uint *)0x8; + puVar21 = (uint *)0x0; + if (uVar48 != 0) goto LAB_001b2cb8; + } + if ((long)puVar21 + lVar38 != 0) { + *(uint *)((long)puVar21 + lVar38) = uVar43; + *(uint *)((long)puVar21 + lVar38 + 4) = uVar14; + } + puVar27 = puVar21; + puVar22 = local_188; + if (puVar18 != local_188) { + do { + if (puVar27 != (uint *)0x0) { + *(undefined8 *)puVar27 = *(undefined8 *)puVar22; + } + puVar22 = puVar22 + 2; + puVar27 = puVar27 + 2; + } while (puVar18 != puVar22); + puVar26 = (uint *)((long)puVar21 + + ((long)puVar18 - (long)(local_188 + 2) & 0xfffffffffffffff8U) + + 0x10); + } + puVar22 = puVar18; + puVar27 = puVar26; + if (puVar18 != local_180) { + do { + if (puVar27 != (uint *)0x0) { + *(undefined8 *)puVar27 = *(undefined8 *)puVar22; + } + puVar22 = puVar22 + 2; + puVar27 = puVar27 + 2; + } while (puVar22 != local_180); + puVar26 = (uint *)((long)puVar26 + + ((long)puVar22 - (long)(puVar18 + 2) & 0xfffffffffffffff8U) + 8); + } + if (local_188 != (uint *)0x0) { + operator_delete(local_188); + } + local_178 = (uint *)((long)puVar21 + uVar45); + local_188 = puVar21; + local_180 = puVar26; + goto LAB_001b2040; + } + if (local_180 != (uint *)0x0) { + *local_180 = uVar43; + local_180[1] = uVar14; + } + local_180 = local_180 + 2; + local_210 = CONCAT44(uVar14,uVar43); + iVar2 = iVar2 + 1; + } while (iVar2 < iVar10); +LAB_001b20d8: + if (-1 < (int)param_12) goto LAB_001b1db4; + } + local_c8 = (AutoBuffer *)0x0; + FUN_001a6dec((Mat *)&local_60,local_188,(ulong)((long)local_180 - (long)local_188) >> 3, + &local_1a0,local_108,local_2e0,0,(String *)&local_c8); + } + goto LAB_001b1db4; + } + if ((int)param_12 < 0) { + FUN_001a95a4((Mat *)&local_60,&local_1a0,local_108); + } + if (local_278 != 0) { + *(long *)(param_10 + 0x10) = local_278; + } + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != local_10) { + cv::fastFree(local_18); + } + if (local_188 != (uint *)0x0) { + operator_delete(local_188); + } + if (local_1a0 != (void *)0x0) { + operator_delete(local_1a0); + } + return; +} + + +================================================================== + +### FUNC 001b2fd8 (940 bytes) name=FUN_001b2fd8 + +void FUN_001b2fd8(long *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + long lVar13; + long lVar14; + void *__dest; + undefined8 *puVar15; + void *pvVar16; + ulong uVar17; + undefined8 *puVar18; + size_t sVar19; + undefined8 *__src; + ulong uVar20; + size_t __n; + + if (param_3 == 0) { + return; + } + puVar18 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar18 >> 5) * -0x5555555555555555)) { + sVar19 = (long)puVar18 - (long)param_2; + uVar1 = *param_4; + uVar7 = param_4[1]; + uVar17 = ((long)sVar19 >> 5) * -0x5555555555555555; + uVar2 = param_4[2]; + uVar8 = param_4[3]; + uVar3 = param_4[4]; + uVar9 = param_4[5]; + uVar4 = param_4[6]; + uVar10 = param_4[7]; + uVar5 = param_4[8]; + uVar11 = param_4[9]; + uVar6 = param_4[10]; + uVar12 = param_4[0xb]; + if (param_3 < uVar17) { + __src = puVar18 + param_3 * -0xc; + puVar15 = puVar18; + if (((long)puVar18 - (long)__src >> 5) * -0x5555555555555555 != 0) { + memmove(puVar18,__src,(long)puVar18 - (long)__src); + puVar15 = (undefined8 *)param_1[1]; + } + sVar19 = (long)__src - (long)param_2; + param_1[1] = (long)(puVar15 + param_3 * 0xc); + if (((long)sVar19 >> 5) * -0x5555555555555555 != 0) { + memmove((void *)((long)puVar18 - sVar19),param_2,sVar19); + } + puVar18 = param_2 + param_3 * 0xc; + for (; param_2 != puVar18; param_2 = param_2 + 0xc) { + *param_2 = uVar1; + param_2[1] = uVar7; + param_2[2] = uVar2; + param_2[3] = uVar8; + param_2[4] = uVar3; + param_2[5] = uVar9; + param_2[6] = uVar4; + param_2[7] = uVar10; + param_2[8] = uVar5; + param_2[9] = uVar11; + param_2[10] = uVar6; + param_2[0xb] = uVar12; + } + return; + } + lVar13 = param_3 + ((long)sVar19 >> 5) * 0x5555555555555555; + puVar15 = puVar18; + for (lVar14 = lVar13; lVar14 != 0; lVar14 = lVar14 + -1) { + *puVar15 = uVar1; + puVar15[1] = uVar7; + puVar15[2] = uVar2; + puVar15[3] = uVar8; + puVar15[4] = uVar3; + puVar15[5] = uVar9; + puVar15[6] = uVar4; + puVar15[7] = uVar10; + puVar15[8] = uVar5; + puVar15[9] = uVar11; + puVar15[10] = uVar6; + puVar15[0xb] = uVar12; + puVar15 = puVar15 + 0xc; + } + puVar15 = puVar18 + lVar13 * 0xc; + param_1[1] = (long)puVar15; + if (uVar17 != 0) { + memmove(puVar15,param_2,sVar19); + puVar15 = (undefined8 *)param_1[1]; + } + param_1[1] = (long)puVar15 + sVar19; + if (puVar18 == param_2) { + return; + } + do { + puVar15 = param_2 + 0xc; + *param_2 = uVar1; + param_2[1] = uVar7; + param_2[2] = uVar2; + param_2[3] = uVar8; + param_2[4] = uVar3; + param_2[5] = uVar9; + param_2[6] = uVar4; + param_2[7] = uVar10; + param_2[8] = uVar5; + param_2[9] = uVar11; + param_2[10] = uVar6; + param_2[0xb] = uVar12; + param_2 = puVar15; + } while (puVar18 != puVar15); + return; + } + pvVar16 = (void *)*param_1; + lVar14 = (long)puVar18 - (long)pvVar16 >> 5; + uVar17 = lVar14 * -0x5555555555555555; + if (lVar14 * 0x5555555555555555 + 0x2aaaaaaaaaaaaaaU < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar20 = uVar17; + if (uVar17 < param_3) { + uVar20 = param_3; + } + uVar20 = uVar20 + uVar17; + if ((uVar17 < uVar20 || uVar17 - uVar20 == 0) && (uVar20 < 0x2aaaaaaaaaaaaab)) { + sVar19 = (long)param_2 - (long)pvVar16; + if (uVar20 == 0) { + uVar20 = 0; + __dest = (void *)0x0; + __n = sVar19; + goto LAB_001b318c; + } + uVar20 = uVar20 * 0x60; + } + else { + sVar19 = (long)param_2 - (long)pvVar16; + uVar20 = 0xffffffffffffffc0; + } + __dest = operator_new(uVar20); + pvVar16 = (void *)*param_1; + __n = (long)param_2 - (long)pvVar16; +LAB_001b318c: + puVar18 = (undefined8 *)((long)__dest + sVar19); + uVar17 = param_3; + do { + uVar17 = uVar17 - 1; + uVar1 = param_4[1]; + *puVar18 = *param_4; + puVar18[1] = uVar1; + uVar1 = param_4[3]; + puVar18[2] = param_4[2]; + puVar18[3] = uVar1; + uVar1 = param_4[5]; + puVar18[4] = param_4[4]; + puVar18[5] = uVar1; + uVar1 = param_4[7]; + puVar18[6] = param_4[6]; + puVar18[7] = uVar1; + uVar1 = param_4[9]; + puVar18[8] = param_4[8]; + puVar18[9] = uVar1; + uVar1 = param_4[0xb]; + puVar18[10] = param_4[10]; + puVar18[0xb] = uVar1; + puVar18 = puVar18 + 0xc; + } while (uVar17 != 0); + if (((long)__n >> 5) * -0x5555555555555555 != 0) { + memmove(__dest,pvVar16,__n); + } + sVar19 = param_1[1] - (long)param_2; + pvVar16 = (void *)((long)__dest + __n + param_3 * 0x60); + if (((long)sVar19 >> 5) * -0x5555555555555555 != 0) { + memmove(pvVar16,param_2,sVar19); + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)__dest; + param_1[1] = (long)pvVar16 + sVar19; + param_1[2] = (long)__dest + uVar20; + return; +} + + +================================================================== + +### FUNC 001b3384 (736 bytes) name=FUN_001b3384 + +void FUN_001b3384(long *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + long lVar3; + ulong uVar4; + undefined8 *puVar5; + void *__dest; + void *pvVar6; + undefined8 uVar7; + undefined8 uVar8; + ulong uVar9; + size_t __n; + undefined8 uVar10; + undefined8 *puVar11; + size_t sVar12; + undefined8 *__src; + + if (param_3 == 0) { + return; + } + puVar11 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar11 >> 5)) { + sVar12 = (long)puVar11 - (long)param_2; + uVar8 = *param_4; + uVar4 = (long)sVar12 >> 5; + uVar10 = param_4[1]; + uVar1 = *(undefined4 *)(param_4 + 2); + uVar2 = *(undefined4 *)((long)param_4 + 0x14); + uVar7 = param_4[3]; + if (param_3 < uVar4) { + __src = puVar11 + param_3 * -4; + puVar5 = puVar11; + if ((long)puVar11 - (long)__src >> 5 != 0) { + memmove(puVar11,__src,(long)puVar11 - (long)__src); + puVar5 = (undefined8 *)param_1[1]; + } + sVar12 = (long)__src - (long)param_2; + param_1[1] = (long)(puVar5 + param_3 * 4); + if ((long)sVar12 >> 5 != 0) { + memmove((void *)((long)puVar11 - sVar12),param_2,sVar12); + } + puVar11 = param_2 + param_3 * 4; + for (; param_2 != puVar11; param_2 = param_2 + 4) { + *param_2 = uVar8; + param_2[1] = uVar10; + *(undefined4 *)(param_2 + 2) = uVar1; + *(undefined4 *)((long)param_2 + 0x14) = uVar2; + param_2[3] = uVar7; + } + return; + } + puVar5 = puVar11; + for (lVar3 = param_3 - uVar4; lVar3 != 0; lVar3 = lVar3 + -1) { + *puVar5 = uVar8; + puVar5[1] = uVar10; + *(undefined4 *)(puVar5 + 2) = uVar1; + *(undefined4 *)((long)puVar5 + 0x14) = uVar2; + puVar5[3] = uVar7; + puVar5 = puVar5 + 4; + } + puVar5 = puVar11 + (param_3 - uVar4) * 4; + param_1[1] = (long)puVar5; + if (uVar4 != 0) { + memmove(puVar5,param_2,sVar12); + puVar5 = (undefined8 *)param_1[1]; + } + param_1[1] = (long)puVar5 + sVar12; + if (puVar11 == param_2) { + return; + } + do { + *param_2 = uVar8; + puVar5 = param_2 + 4; + param_2[1] = uVar10; + *(undefined4 *)(param_2 + 2) = uVar1; + *(undefined4 *)((long)param_2 + 0x14) = uVar2; + param_2[3] = uVar7; + param_2 = puVar5; + } while (puVar11 != puVar5); + return; + } + pvVar6 = (void *)*param_1; + uVar4 = (long)puVar11 - (long)pvVar6 >> 5; + if (0x7ffffffffffffff - uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar9 = uVar4; + if (uVar4 < param_3) { + uVar9 = param_3; + } + uVar9 = uVar9 + uVar4; + if ((uVar9 < uVar4) || (0x7ffffffffffffff < uVar9)) { + sVar12 = (long)param_2 - (long)pvVar6; + uVar9 = 0xffffffffffffffe0; + } + else { + sVar12 = (long)param_2 - (long)pvVar6; + if (uVar9 == 0) { + uVar9 = 0; + __dest = (void *)0x0; + __n = sVar12; + goto LAB_001b35a4; + } + uVar9 = uVar9 * 0x20; + } + __dest = operator_new(uVar9); + pvVar6 = (void *)*param_1; + __n = (long)param_2 - (long)pvVar6; +LAB_001b35a4: + puVar11 = (undefined8 *)((long)__dest + sVar12); + uVar4 = param_3; + do { + uVar4 = uVar4 - 1; + uVar7 = param_4[1]; + *puVar11 = *param_4; + puVar11[1] = uVar7; + uVar7 = param_4[3]; + puVar11[2] = param_4[2]; + puVar11[3] = uVar7; + puVar11 = puVar11 + 4; + } while (uVar4 != 0); + if ((long)__n >> 5 != 0) { + memmove(__dest,pvVar6,__n); + } + pvVar6 = (void *)((long)__dest + __n + param_3 * 0x20); + sVar12 = param_1[1] - (long)param_2; + if ((long)sVar12 >> 5 != 0) { + memmove(pvVar6,param_2,sVar12); + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)__dest; + param_1[1] = (long)pvVar6 + sVar12; + param_1[2] = (long)__dest + uVar9; + return; +} + + +================================================================== + +### FUNC 001b3664 (2900 bytes) name=drawContours + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::drawContours(cv::_InputOutputArray const&, cv::_InputArray const&, int, cv::Scalar_ + const&, int, int, cv::_InputArray const&, int, cv::Point_) */ + +void cv::drawContours(_InputArray *param_1,_InputArray *param_2,uint param_3,ulong *param_4, + undefined4 param_5,undefined4 param_6,_InputArray *param_7,uint param_8, + undefined8 *param_9) + +{ + long lVar1; + int *piVar2; + void *pvVar3; + void *pvVar4; + void *pvVar5; + void *pvVar6; + uint uVar7; + char cVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined2 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined4 uVar16; + bool bVar17; + int iVar18; + ulong uVar19; + void *pvVar20; + ulong uVar21; + undefined8 *puVar22; + long lVar23; + char *pcVar24; + int *piVar25; + long lVar26; + ulong uVar27; + Mat *pMVar28; + ulong uVar29; + void *pvVar30; + long lVar31; + long lVar32; + long local_238; + undefined8 local_230; + undefined8 local_228; + void *local_220; + undefined8 local_218; + undefined8 local_210; + void *local_208; + void *local_200; + undefined8 local_1f8; + ulong local_1f0; + ulong local_1e8; + ulong local_1e0; + ulong uStack_1d8; + undefined8 local_1c8; + undefined8 local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined8 local_1b0; + uint local_1a8; + undefined4 local_1a4; + undefined8 local_1a0; + undefined4 local_198; + undefined8 local_190; + undefined4 local_188; + undefined4 local_184; + uint local_180; + int local_17c; + undefined4 local_178; + undefined4 local_174; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + uint local_120; + int local_11c; + int local_118; + int local_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + ulong local_b0; + ulong uStack_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + undefined4 local_5c; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined4 local_38; + undefined4 local_34; + undefined8 local_30; + undefined8 local_28; + undefined4 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + iVar18 = _InputArray::kind(param_1); + if (iVar18 == 0x10000) { + pMVar28 = *(Mat **)(param_1 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(uint *)pMVar28; + local_17c = *(int *)(pMVar28 + 4); + local_178 = *(undefined4 *)(pMVar28 + 8); + local_174 = *(undefined4 *)(pMVar28 + 0xc); + local_170 = *(undefined8 *)(pMVar28 + 0x10); + local_168 = *(undefined8 *)(pMVar28 + 0x18); + local_160 = *(undefined8 *)(pMVar28 + 0x20); + local_158 = *(undefined8 *)(pMVar28 + 0x28); + local_150 = *(undefined8 *)(pMVar28 + 0x30); + local_148 = *(long *)(pMVar28 + 0x38); + local_128 = 0; + local_130 = 0; + if (local_148 != 0) { + piVar25 = (int *)(local_148 + 0x14); + do { + cVar8 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar17) { + *piVar25 = *piVar25 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar28 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar28 + 0x48); + local_128 = (*(undefined8 **)(pMVar28 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar28); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar18 = _InputArray::kind(param_7); + if (iVar18 == 0x10000) { + pMVar28 = *(Mat **)(param_7 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar28; + local_11c = *(int *)(pMVar28 + 4); + local_118 = *(int *)(pMVar28 + 8); + local_114 = *(int *)(pMVar28 + 0xc); + local_110 = *(long *)(pMVar28 + 0x10); + local_108 = *(undefined8 *)(pMVar28 + 0x18); + local_100 = *(undefined8 *)(pMVar28 + 0x20); + local_f8 = *(undefined8 *)(pMVar28 + 0x28); + local_f0 = *(undefined8 *)(pMVar28 + 0x30); + local_e8 = *(long *)(pMVar28 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar25 = (int *)(local_e8 + 0x14); + do { + cVar8 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar17) { + *piVar25 = *piVar25 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar28 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar28 + 0x48); + local_c8 = (*(undefined8 **)(pMVar28 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar28); + } + } + else { + _InputArray::getMat_((int)param_7); + } + local_184 = 1; + if (local_17c != 1) { + local_184 = local_174; + } + local_1a8 = local_180 & 0x4fff | 0x42420000; + local_1a0 = 0; + local_198 = 0; + local_190 = local_170; + local_188 = local_178; + local_1a4 = (undefined4)*local_138; + uVar19 = _InputArray::total(param_2,-1); + local_220 = (void *)0x0; + local_218 = 0; + local_210 = 0; + local_208 = (void *)0x0; + local_200 = (void *)0x0; + local_1f8 = 0; + if (uVar19 == 0) goto LAB_001b3b20; + local_60 = 0; + local_5c = 0; + local_58 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_34 = 0; + local_30 = 0; + local_28 = 0; + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + FUN_001b2fd8(&local_220,0,uVar19,&local_60); + local_1c8 = 0; + local_1c0 = 0; + uVar29 = (long)local_200 - (long)local_208 >> 5; + local_1b8 = 0; + local_1b4 = 0; + local_1b0 = 0; + if (uVar29 < uVar19) { + FUN_001b3384(&local_208,local_200,uVar19 - uVar29); + } + else if (uVar19 < uVar29) { + local_200 = (void *)((long)local_208 + uVar19 * 0x20); + } + pvVar20 = local_220; + do { + *(undefined8 *)((long)pvVar20 + 0x58) = 0; + pvVar20 = (void *)((long)pvVar20 + 0x60); + } while (pvVar20 != (void *)((long)local_220 + uVar19 * 0x60)); + if ((int)param_3 < 0) { + uVar21 = 0; + uVar29 = uVar19; + } + else { + if ((int)uVar19 <= (int)param_3) { + local_230 = 0; + local_228 = 0; + pcVar24 = (char *)String::allocate((String *)&local_230,0x29); + cVar8 = s_0_<__contourIdx_&&_contourIdx_<_(_0043f828[0x28]; + uVar12 = s_0_<__contourIdx_&&_contourIdx_<_(_0043f828._24_8_; + uVar11 = s_0_<__contourIdx_&&_contourIdx_<_(_0043f828._16_8_; + uVar10 = s_0_<__contourIdx_&&_contourIdx_<_(_0043f828._8_8_; + uVar9 = s_0_<__contourIdx_&&_contourIdx_<_(_0043f828._0_8_; + *(undefined8 *)(pcVar24 + 0x20) = s_0_<__contourIdx_&&_contourIdx_<_(_0043f828._32_8_; + pcVar24[0x28] = cVar8; + *(undefined8 *)pcVar24 = uVar9; + *(undefined8 *)(pcVar24 + 8) = uVar10; + *(undefined8 *)(pcVar24 + 0x10) = uVar11; + *(undefined8 *)(pcVar24 + 0x18) = uVar12; + error(-0xd7,(String *)&local_230, + "void cv::drawContours(cv::InputOutputArray, cv::InputArrayOfArrays, int, const Scalar&, int, int, cv::InputArray, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x8fb); + String::deallocate((String *)&local_230); + } + uVar21 = (ulong)(int)param_3; + uVar29 = (long)(int)(param_3 + 1); + } + if (uVar29 <= uVar21) { + if (local_110 != 0) goto LAB_001b39e4; + goto LAB_001b40e8; + } + local_238 = NEON_shl(uVar21,1); + lVar32 = uVar21 << 5; + lVar31 = (local_238 + uVar21) * 0x20; + uVar27 = uVar21; + do { + iVar18 = _InputArray::kind(param_2); + if (((int)uVar27 < 0) && (iVar18 == 0x10000)) { + pMVar28 = *(Mat **)(param_2 + 8); + local_78 = &local_70; + uVar7 = *(uint *)pMVar28; + local_b0 = *(ulong *)(pMVar28 + 0x10); + local_c0 = *(ulong *)pMVar28; + local_b8 = *(ulong *)(pMVar28 + 8); + uStack_a8 = *(ulong *)(pMVar28 + 0x18); + local_a0 = *(undefined8 *)(pMVar28 + 0x20); + local_98 = *(undefined8 *)(pMVar28 + 0x28); + local_90 = *(undefined8 *)(pMVar28 + 0x30); + local_88 = *(long *)(pMVar28 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar25 = (int *)(local_88 + 0x14); + do { + cVar8 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar17) { + *piVar25 = *piVar25 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + local_80 = &local_b8; + if (*(int *)(pMVar28 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar28 + 0x48); + local_68 = (*(undefined8 **)(pMVar28 + 0x48))[1]; + } + else { + local_c0 = (ulong)uVar7; + Mat::copySize((Mat *)&local_c0,pMVar28); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (local_b0 == 0) { +LAB_001b3d24: + if (local_88 != 0) { + piVar25 = (int *)(local_88 + 0x14); + do { + iVar18 = *piVar25; + cVar8 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar17) { + *piVar25 = iVar18 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + if (0 < local_c0._4_4_) { + iVar18 = 0; + puVar22 = local_80; + do { + *(undefined4 *)puVar22 = 0; + iVar18 = iVar18 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar18 < local_c0._4_4_); + } + } + else { + if (local_c0._4_4_ < 3) { + lVar26 = (long)local_b8._4_4_ * (long)(int)local_b8; + } + else { + lVar23 = 0; + lVar26 = 1; + do { + lVar1 = lVar23 * 4; + lVar23 = lVar23 + 1; + lVar26 = lVar26 * *(int *)((long)local_80 + lVar1); + } while ((int)lVar23 < local_c0._4_4_); + } + if (lVar26 == 0) goto LAB_001b3d24; + iVar18 = Mat::checkVector((Mat *)&local_c0,2,4,true); + if (iVar18 < 1) { + local_1f0 = 0; + local_1e8 = 0; + pcVar24 = (char *)String::allocate((String *)&local_1f0,0xb); + uVar13 = s_npoints_>_0_0043f858._8_2_; + *(undefined8 *)pcVar24 = s_npoints_>_0_0043f858._0_8_; + cVar8 = s_npoints_>_0_0043f858[10]; + *(undefined2 *)(pcVar24 + 8) = uVar13; + pcVar24[10] = cVar8; + error(-0xd7,(String *)&local_1f0, + "void cv::drawContours(cv::InputOutputArray, cv::InputArrayOfArrays, int, const Scalar&, int, int, cv::InputArray, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x906); + String::deallocate((String *)&local_1f0); + } + cvMakeSeqHeaderForArray + (0x500c,0x60,8,local_b0,iVar18,(long)local_220 + lVar31,(long)local_208 + lVar32); + if (local_88 != 0) { + piVar25 = (int *)(local_88 + 0x14); + do { + iVar18 = *piVar25; + cVar8 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar17) { + *piVar25 = iVar18 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + if (0 < local_c0._4_4_) { + iVar18 = 0; + puVar22 = local_80; + do { + *(undefined4 *)puVar22 = 0; + iVar18 = iVar18 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar18 < local_c0._4_4_); + } + } + local_88 = 0; + local_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + local_b0 = 0; + if (local_78 != &local_70) { + fastFree(local_78); + } + uVar27 = uVar27 + 1; + lVar31 = lVar31 + 0x60; + lVar32 = lVar32 + 0x20; + } while (uVar27 != uVar29); + if (local_110 == 0) { +LAB_001b3a24: + uVar19 = uVar21; + do { + lVar32 = uVar19 * 0x60; + lVar31 = (long)local_220 + lVar32 + 0x60; + pvVar20 = (void *)((long)local_220 + (uVar19 - 1) * 0x60); + if (uVar29 - 1 <= uVar19) { + lVar31 = 0; + } + bVar17 = uVar19 <= uVar21; + uVar19 = uVar19 + 1; + if (bVar17) { + pvVar20 = (void *)0x0; + } + *(long *)((long)local_220 + lVar32 + 0x10) = lVar31; + *(void **)((long)local_220 + lVar32 + 8) = pvVar20; + } while (uVar19 < uVar29); + pvVar20 = (void *)((long)local_220 + (local_238 + uVar21) * 0x20); + } + else { +LAB_001b39e4: + if (local_11c < 3) { + lVar32 = (long)local_114 * (long)local_118; + } + else { + lVar31 = 0; + lVar32 = 1; + do { + piVar25 = local_e0 + lVar31; + lVar31 = lVar31 + 1; + lVar32 = lVar32 * *piVar25; + } while ((int)lVar31 < local_11c); + } + if ((lVar32 == 0) || (param_8 == 0)) { + if (uVar29 <= uVar21) goto LAB_001b40e8; + local_238 = NEON_shl(uVar21,1); + goto LAB_001b3a24; + } + if (local_11c < 3) { + uVar27 = (long)local_114 * (long)local_118; + } + else { + lVar31 = 0; + uVar27 = 1; + do { + piVar25 = local_e0 + lVar31; + lVar31 = lVar31 + 1; + uVar27 = uVar27 * (long)*piVar25; + } while ((int)lVar31 < local_11c); + } + if ((uVar19 != uVar27) || ((local_120 & 0xfff) != 0x1c)) { + local_c0 = 0; + local_b8 = 0; + puVar22 = (undefined8 *)String::allocate((String *)&local_c0,0x3e); + uVar13 = DAT_0043f8a4; + uVar16 = DAT_0043f8a0; + uVar15 = _DAT_0043f890; + uVar14 = DAT_0043f888; + uVar12 = DAT_0043f880; + uVar11 = DAT_0043f878; + uVar10 = DAT_0043f870; + uVar9 = DAT_0043f868; + puVar22[6] = _LAB_0043f898; + *(undefined4 *)(puVar22 + 7) = uVar16; + *(undefined2 *)((long)puVar22 + 0x3c) = uVar13; + *puVar22 = uVar9; + puVar22[1] = uVar10; + puVar22[2] = uVar11; + puVar22[3] = uVar12; + puVar22[4] = uVar14; + puVar22[5] = uVar15; + error(-0xd7,(String *)&local_c0, + "void cv::drawContours(cv::InputOutputArray, cv::InputArrayOfArrays, int, const Scalar&, int, int, cv::InputArray, int, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/drawing.cpp",0x914); + String::deallocate((String *)&local_c0); + } + if (uVar19 == uVar29 - uVar21) { + if (uVar29 <= uVar21) goto LAB_001b40e8; + pvVar20 = (void *)((long)local_220 + uVar21 * 0x60); + piVar25 = (int *)(local_110 + uVar21 * 0x10); + pvVar30 = pvVar20; + do { + piVar2 = piVar25 + 4; + iVar18 = piVar25[3]; + pvVar3 = (void *)((long)local_220 + (long)piVar25[1] * 0x60); + pvVar4 = (void *)((long)local_220 + (long)*piVar25 * 0x60); + if (uVar19 <= (ulong)(long)*piVar25) { + pvVar4 = (void *)0x0; + } + if (uVar19 <= (ulong)(long)piVar25[1]) { + pvVar3 = (void *)0x0; + } + pvVar5 = (void *)((long)local_220 + (long)piVar25[2] * 0x60); + if (uVar19 <= (ulong)(long)piVar25[2]) { + pvVar5 = (void *)0x0; + } + pvVar6 = (void *)((long)local_220 + (long)iVar18 * 0x60); + *(void **)((long)pvVar30 + 0x10) = pvVar4; + if (uVar19 <= (ulong)(long)iVar18) { + pvVar6 = (void *)0x0; + } + *(void **)((long)pvVar30 + 8) = pvVar3; + *(void **)((long)pvVar30 + 0x20) = pvVar5; + *(void **)((long)pvVar30 + 0x18) = pvVar6; + piVar25 = piVar2; + pvVar30 = (void *)((long)pvVar30 + 0x60); + } while (piVar2 != (int *)(local_110 + uVar29 * 0x10)); + } + else { + iVar18 = *(int *)(local_110 + uVar21 * 0x10 + 8); + if (iVar18 < 0) { +LAB_001b40e8: + pvVar20 = (void *)((long)local_220 + uVar21 * 0x60); + } + else { + FUN_001a36f0(param_2,uVar19,local_110,iVar18,&local_220,&local_208); + pvVar20 = (void *)((long)local_220 + uVar21 * 0x60); + *(void **)((long)pvVar20 + 0x20) = (void *)((long)local_220 + (long)iVar18 * 0x60); + } + } + } + local_1e8 = param_4[1]; + local_1f0 = *param_4; + uStack_1d8 = param_4[3]; + local_1e0 = param_4[2]; + local_c0 = local_1f0; + local_b8 = local_1e8; + local_b0 = local_1e0; + uStack_a8 = uStack_1d8; + cvDrawContours(local_1f0,local_1e8,local_1e0,uStack_1d8,local_1f0,local_1e8,local_1e0,uStack_1d8, + &local_1a8,pvVar20,(param_8 ^ (int)~param_3 >> 0x1f) - ((int)~param_3 >> 0x1f), + param_5,param_6,*param_9); + if (local_208 != (void *)0x0) { + operator_delete(local_208); + } + if (local_220 != (void *)0x0) { + operator_delete(local_220); + } +LAB_001b3b20: + Mat::release((Mat *)&local_120); + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + Mat::release((Mat *)&local_180); + if (local_138 != &local_130) { + fastFree(local_138); + } + return; +} + + +================================================================== + +### FUNC 001b4284 (4 bytes) name=FUN_001b4284 + +void FUN_001b4284(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4288 (4 bytes) name=FUN_001b4288 + +void FUN_001b4288(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b428c (4 bytes) name=FUN_001b428c + +void FUN_001b428c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4290 (4 bytes) name=FUN_001b4290 + +void FUN_001b4290(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4294 (4 bytes) name=FUN_001b4294 + +void FUN_001b4294(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4298 (4 bytes) name=FUN_001b4298 + +void FUN_001b4298(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b429c (4 bytes) name=FUN_001b429c + +void FUN_001b429c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42a0 (4 bytes) name=FUN_001b42a0 + +void FUN_001b42a0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42a4 (4 bytes) name=FUN_001b42a4 + +void FUN_001b42a4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42a8 (4 bytes) name=FUN_001b42a8 + +void FUN_001b42a8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42ac (4 bytes) name=FUN_001b42ac + +void FUN_001b42ac(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42b0 (4 bytes) name=FUN_001b42b0 + +void FUN_001b42b0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42b4 (4 bytes) name=FUN_001b42b4 + +void FUN_001b42b4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42b8 (4 bytes) name=FUN_001b42b8 + +void FUN_001b42b8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42bc (4 bytes) name=FUN_001b42bc + +void FUN_001b42bc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42c0 (4 bytes) name=FUN_001b42c0 + +void FUN_001b42c0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42c4 (4 bytes) name=FUN_001b42c4 + +void FUN_001b42c4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42c8 (4 bytes) name=FUN_001b42c8 + +void FUN_001b42c8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42cc (4 bytes) name=FUN_001b42cc + +void FUN_001b42cc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42d0 (4 bytes) name=FUN_001b42d0 + +void FUN_001b42d0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42d4 (4 bytes) name=FUN_001b42d4 + +void FUN_001b42d4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42d8 (4 bytes) name=FUN_001b42d8 + +void FUN_001b42d8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42dc (4 bytes) name=FUN_001b42dc + +void FUN_001b42dc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42e0 (4 bytes) name=FUN_001b42e0 + +void FUN_001b42e0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42e4 (4 bytes) name=FUN_001b42e4 + +void FUN_001b42e4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42e8 (4 bytes) name=FUN_001b42e8 + +void FUN_001b42e8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42ec (4 bytes) name=FUN_001b42ec + +void FUN_001b42ec(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42f0 (4 bytes) name=FUN_001b42f0 + +void FUN_001b42f0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42f4 (4 bytes) name=FUN_001b42f4 + +void FUN_001b42f4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42f8 (4 bytes) name=FUN_001b42f8 + +void FUN_001b42f8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b42fc (4 bytes) name=FUN_001b42fc + +void FUN_001b42fc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4300 (4 bytes) name=FUN_001b4300 + +void FUN_001b4300(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4304 (4 bytes) name=FUN_001b4304 + +void FUN_001b4304(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4308 (4 bytes) name=FUN_001b4308 + +void FUN_001b4308(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b430c (4 bytes) name=FUN_001b430c + +void FUN_001b430c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4310 (4 bytes) name=FUN_001b4310 + +void FUN_001b4310(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4314 (4 bytes) name=FUN_001b4314 + +void FUN_001b4314(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4318 (4 bytes) name=FUN_001b4318 + +void FUN_001b4318(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b431c (4 bytes) name=FUN_001b431c + +void FUN_001b431c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4320 (4 bytes) name=FUN_001b4320 + +void FUN_001b4320(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4324 (4 bytes) name=FUN_001b4324 + +void FUN_001b4324(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4328 (4 bytes) name=FUN_001b4328 + +void FUN_001b4328(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b432c (4 bytes) name=FUN_001b432c + +void FUN_001b432c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4330 (4 bytes) name=FUN_001b4330 + +void FUN_001b4330(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4334 (4 bytes) name=FUN_001b4334 + +void FUN_001b4334(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4338 (4 bytes) name=FUN_001b4338 + +void FUN_001b4338(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b433c (4 bytes) name=FUN_001b433c + +void FUN_001b433c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4340 (4 bytes) name=FUN_001b4340 + +void FUN_001b4340(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4344 (4 bytes) name=FUN_001b4344 + +void FUN_001b4344(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b4348 (4 bytes) name=FUN_001b4348 + +void FUN_001b4348(void) + +{ + return; +} + + +================================================================== + +### FUNC 001b434c (60 bytes) name=FUN_001b434c + +void FUN_001b434c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4388 (60 bytes) name=FUN_001b4388 + +void FUN_001b4388(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b43c4 (60 bytes) name=FUN_001b43c4 + +void FUN_001b43c4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4400 (60 bytes) name=FUN_001b4400 + +void FUN_001b4400(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b443c (60 bytes) name=FUN_001b443c + +void FUN_001b443c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4478 (60 bytes) name=FUN_001b4478 + +void FUN_001b4478(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b44b4 (60 bytes) name=FUN_001b44b4 + +void FUN_001b44b4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b44f0 (60 bytes) name=FUN_001b44f0 + +void FUN_001b44f0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b452c (60 bytes) name=FUN_001b452c + +void FUN_001b452c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4568 (60 bytes) name=FUN_001b4568 + +void FUN_001b4568(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b45a4 (60 bytes) name=FUN_001b45a4 + +void FUN_001b45a4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b45e0 (60 bytes) name=FUN_001b45e0 + +void FUN_001b45e0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b461c (60 bytes) name=FUN_001b461c + +void FUN_001b461c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4658 (60 bytes) name=FUN_001b4658 + +void FUN_001b4658(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4694 (60 bytes) name=FUN_001b4694 + +void FUN_001b4694(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b46d0 (60 bytes) name=FUN_001b46d0 + +void FUN_001b46d0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b470c (60 bytes) name=FUN_001b470c + +void FUN_001b470c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4748 (60 bytes) name=FUN_001b4748 + +void FUN_001b4748(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4784 (60 bytes) name=FUN_001b4784 + +void FUN_001b4784(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b47c0 (60 bytes) name=FUN_001b47c0 + +void FUN_001b47c0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b47fc (60 bytes) name=FUN_001b47fc + +void FUN_001b47fc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4838 (60 bytes) name=FUN_001b4838 + +void FUN_001b4838(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4874 (60 bytes) name=FUN_001b4874 + +void FUN_001b4874(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b48b0 (60 bytes) name=FUN_001b48b0 + +void FUN_001b48b0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b48ec (60 bytes) name=FUN_001b48ec + +void FUN_001b48ec(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4928 (60 bytes) name=FUN_001b4928 + +void FUN_001b4928(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4964 (60 bytes) name=FUN_001b4964 + +void FUN_001b4964(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b49a0 (60 bytes) name=FUN_001b49a0 + +void FUN_001b49a0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b49dc (60 bytes) name=FUN_001b49dc + +void FUN_001b49dc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4a18 (60 bytes) name=FUN_001b4a18 + +void FUN_001b4a18(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4a54 (60 bytes) name=FUN_001b4a54 + +void FUN_001b4a54(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4a90 (60 bytes) name=FUN_001b4a90 + +void FUN_001b4a90(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4acc (60 bytes) name=FUN_001b4acc + +void FUN_001b4acc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4b08 (60 bytes) name=FUN_001b4b08 + +void FUN_001b4b08(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4b44 (60 bytes) name=FUN_001b4b44 + +void FUN_001b4b44(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4b80 (60 bytes) name=FUN_001b4b80 + +void FUN_001b4b80(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4bbc (60 bytes) name=FUN_001b4bbc + +void FUN_001b4bbc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4bf8 (60 bytes) name=FUN_001b4bf8 + +void FUN_001b4bf8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4c34 (60 bytes) name=FUN_001b4c34 + +void FUN_001b4c34(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4c70 (60 bytes) name=FUN_001b4c70 + +void FUN_001b4c70(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4cac (60 bytes) name=FUN_001b4cac + +void FUN_001b4cac(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4ce8 (60 bytes) name=FUN_001b4ce8 + +void FUN_001b4ce8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4d24 (60 bytes) name=FUN_001b4d24 + +void FUN_001b4d24(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4d60 (60 bytes) name=FUN_001b4d60 + +void FUN_001b4d60(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4d9c (60 bytes) name=FUN_001b4d9c + +void FUN_001b4d9c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4dd8 (60 bytes) name=FUN_001b4dd8 + +void FUN_001b4dd8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4e14 (60 bytes) name=FUN_001b4e14 + +void FUN_001b4e14(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001b4e50 (464 bytes) name=FUN_001b4e50 + +void FUN_001b4e50(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + int iVar10; + double *pdVar11; + long lVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + + param_6 = param_6 * param_7; + lVar12 = *(long *)(param_1 + 0x18); + dVar18 = *(double *)(param_1 + 0x60); + lVar9 = *(long *)(param_1 + 0x30); + lVar8 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar8 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar5)) * 8; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar5 = 0; + iVar10 = 0; + pdVar11 = param_3; + do { + dVar14 = dVar18; + dVar15 = dVar18; + dVar16 = dVar18; + dVar17 = dVar18; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar7 = *(long *)(lVar8 + lVar6 * 8); + dVar13 = *(double *)(lVar9 + lVar6 * 8); + lVar6 = lVar6 + 1; + lVar2 = lVar7 + lVar5; + dVar14 = dVar14 + dVar13 * *(double *)(lVar7 + lVar5); + dVar15 = dVar15 + dVar13 * *(double *)(lVar2 + 8); + dVar16 = dVar16 + dVar13 * *(double *)(lVar2 + 0x10); + dVar17 = dVar17 + dVar13 * *(double *)(lVar2 + 0x18); + } while ((int)lVar6 < iVar4); + } + iVar10 = iVar10 + 4; + lVar5 = lVar5 + 0x20; + pdVar11[1] = dVar15; + *pdVar11 = dVar14; + pdVar11[3] = dVar17; + pdVar11[2] = dVar16; + pdVar11 = pdVar11 + 4; + } while (iVar10 < iVar3); + } + lVar5 = (long)iVar1 << 3; + if (iVar1 < param_6) { + do { + lVar6 = 0; + dVar14 = dVar18; + if (0 < iVar4) { + do { + lVar2 = lVar6 * 8; + lVar7 = lVar6 * 8; + lVar6 = lVar6 + 1; + dVar14 = dVar14 + *(double *)(*(long *)(lVar8 + lVar2) + lVar5) * + *(double *)(lVar9 + lVar7); + } while ((int)lVar6 < iVar4); + } + *(double *)((long)param_3 + lVar5) = dVar14; + lVar5 = lVar5 + 8; + } while (lVar5 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + param_5 = param_5 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b5020 (436 bytes) name=FUN_001b5020 + +void FUN_001b5020(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + undefined8 *puVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + long lVar10; + int iVar11; + long lVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + + param_6 = param_6 * param_7; + lVar12 = *(long *)(param_1 + 0x18); + fVar18 = *(float *)(param_1 + 0x60); + lVar10 = *(long *)(param_1 + 0x30); + lVar9 = *(long *)(param_1 + 0x48); + iVar5 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar4 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar4 < 1) { + iVar1 = 0; + } + do { + lVar6 = 0; + if (0 < iVar5) { + do { + *(long *)(lVar9 + lVar6) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar6 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar6)) * 4; + lVar6 = lVar6 + 8; + } while (lVar6 != ((ulong)(iVar5 - 1) + 1) * 8); + } + if (0 < iVar4) { + lVar6 = 0; + iVar11 = 0; + do { + fVar14 = fVar18; + fVar15 = fVar18; + fVar16 = fVar18; + fVar17 = fVar18; + if (0 < iVar5) { + lVar7 = 0; + do { + lVar8 = *(long *)(lVar9 + lVar7 * 8); + fVar13 = *(float *)(lVar10 + lVar7 * 4); + lVar7 = lVar7 + 1; + lVar2 = lVar8 + lVar6; + fVar14 = fVar14 + fVar13 * *(float *)(lVar8 + lVar6); + fVar15 = fVar15 + fVar13 * *(float *)(lVar2 + 4); + fVar16 = fVar16 + fVar13 * *(float *)(lVar2 + 8); + fVar17 = fVar17 + fVar13 * *(float *)(lVar2 + 0xc); + } while ((int)lVar7 < iVar5); + } + puVar3 = (undefined8 *)(param_3 + lVar6); + iVar11 = iVar11 + 4; + lVar6 = lVar6 + 0x10; + puVar3[1] = CONCAT44(fVar17,fVar16); + *puVar3 = CONCAT44(fVar15,fVar14); + } while (iVar11 < iVar4); + } + lVar6 = (long)iVar1 << 2; + if (iVar1 < param_6) { + do { + lVar7 = 0; + fVar14 = fVar18; + if (0 < iVar5) { + do { + lVar2 = lVar7 * 8; + lVar8 = lVar7 * 4; + lVar7 = lVar7 + 1; + fVar14 = fVar14 + *(float *)(*(long *)(lVar9 + lVar2) + lVar6) * + *(float *)(lVar10 + lVar8); + } while ((int)lVar7 < iVar5); + } + *(float *)(param_3 + lVar6) = fVar14; + lVar6 = lVar6 + 4; + } while (lVar6 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b51d4 (504 bytes) name=FUN_001b51d4 + +void FUN_001b51d4(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + int iVar2; + long lVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + long lVar10; + double *pdVar11; + long lVar12; + long lVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + + param_6 = param_6 * param_7; + lVar12 = *(long *)(param_1 + 0x18); + dVar19 = *(double *)(param_1 + 0x60); + lVar10 = *(long *)(param_1 + 0x30); + lVar9 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar2 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar2 < 1) { + iVar1 = 0; + } + lVar13 = (long)iVar1; + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar9 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar5)) * 2; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar2) { + lVar5 = 0; + pdVar11 = param_3; + do { + dVar15 = dVar19; + dVar16 = dVar19; + dVar17 = dVar19; + dVar18 = dVar19; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar8 = *(long *)(lVar9 + lVar6 * 8); + dVar14 = *(double *)(lVar10 + lVar6 * 8); + lVar6 = lVar6 + 1; + lVar7 = lVar8 + lVar5 * 2; + dVar15 = dVar15 + dVar14 * (double)(int)*(short *)(lVar8 + lVar5 * 2); + dVar16 = dVar16 + dVar14 * (double)(int)*(short *)(lVar7 + 2); + dVar17 = dVar17 + dVar14 * (double)(int)*(short *)(lVar7 + 4); + dVar18 = dVar18 + dVar14 * (double)(int)*(short *)(lVar7 + 6); + } while ((int)lVar6 < iVar4); + } + lVar5 = lVar5 + 4; + pdVar11[1] = dVar16; + *pdVar11 = dVar15; + pdVar11[3] = dVar18; + pdVar11[2] = dVar17; + pdVar11 = pdVar11 + 4; + } while ((int)lVar5 < iVar2); + } + lVar6 = lVar13 << 1; + lVar5 = lVar13; + if (iVar1 < param_6) { + do { + lVar7 = 0; + dVar15 = dVar19; + if (0 < iVar4) { + do { + lVar8 = lVar7 * 8; + lVar3 = lVar7 * 8; + lVar7 = lVar7 + 1; + dVar15 = dVar15 + (double)(int)*(short *)(*(long *)(lVar9 + lVar8) + lVar6) * + *(double *)(lVar10 + lVar3); + } while ((int)lVar7 < iVar4); + } + param_3[lVar5] = dVar15; + lVar5 = lVar5 + 1; + lVar6 = lVar6 + 2; + } while (lVar5 != lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b53cc (476 bytes) name=FUN_001b53cc + +void FUN_001b53cc(long param_1,long param_2,undefined8 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + int iVar2; + long lVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + long lVar10; + undefined8 *puVar11; + long lVar12; + long lVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + + param_6 = param_6 * param_7; + lVar12 = *(long *)(param_1 + 0x18); + fVar19 = *(float *)(param_1 + 0x60); + lVar10 = *(long *)(param_1 + 0x30); + lVar9 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar2 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar2 < 1) { + iVar1 = 0; + } + lVar13 = (long)iVar1; + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar9 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar5)) * 2; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar2) { + lVar5 = 0; + puVar11 = param_3; + do { + fVar15 = fVar19; + fVar16 = fVar19; + fVar17 = fVar19; + fVar18 = fVar19; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar8 = *(long *)(lVar9 + lVar6 * 8); + fVar14 = *(float *)(lVar10 + lVar6 * 4); + lVar6 = lVar6 + 1; + lVar7 = lVar8 + lVar5 * 2; + fVar15 = fVar15 + fVar14 * (float)(int)*(short *)(lVar8 + lVar5 * 2); + fVar16 = fVar16 + fVar14 * (float)(int)*(short *)(lVar7 + 2); + fVar17 = fVar17 + fVar14 * (float)(int)*(short *)(lVar7 + 4); + fVar18 = fVar18 + fVar14 * (float)(int)*(short *)(lVar7 + 6); + } while ((int)lVar6 < iVar4); + } + lVar5 = lVar5 + 4; + puVar11[1] = CONCAT44(fVar18,fVar17); + *puVar11 = CONCAT44(fVar16,fVar15); + puVar11 = puVar11 + 2; + } while ((int)lVar5 < iVar2); + } + lVar6 = lVar13 << 1; + lVar5 = lVar13; + if (iVar1 < param_6) { + do { + lVar7 = 0; + fVar15 = fVar19; + if (0 < iVar4) { + do { + lVar8 = lVar7 * 8; + lVar3 = lVar7 * 4; + lVar7 = lVar7 + 1; + fVar15 = fVar15 + (float)(int)*(short *)(*(long *)(lVar9 + lVar8) + lVar6) * + *(float *)(lVar10 + lVar3); + } while ((int)lVar7 < iVar4); + } + *(float *)((long)param_3 + lVar5 * 4) = fVar15; + lVar5 = lVar5 + 1; + lVar6 = lVar6 + 2; + } while (lVar5 != lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = (undefined8 *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b55a8 (504 bytes) name=FUN_001b55a8 + +void FUN_001b55a8(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + int iVar2; + long lVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + long lVar10; + double *pdVar11; + long lVar12; + long lVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + + param_6 = param_6 * param_7; + lVar12 = *(long *)(param_1 + 0x18); + dVar19 = *(double *)(param_1 + 0x60); + lVar10 = *(long *)(param_1 + 0x30); + lVar9 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar2 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar2 < 1) { + iVar1 = 0; + } + lVar13 = (long)iVar1; + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar9 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar5)) * 2; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar2) { + lVar5 = 0; + pdVar11 = param_3; + do { + dVar15 = dVar19; + dVar16 = dVar19; + dVar17 = dVar19; + dVar18 = dVar19; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar8 = *(long *)(lVar9 + lVar6 * 8); + dVar14 = *(double *)(lVar10 + lVar6 * 8); + lVar6 = lVar6 + 1; + lVar7 = lVar8 + lVar5 * 2; + dVar15 = dVar15 + dVar14 * (double)*(ushort *)(lVar8 + lVar5 * 2); + dVar16 = dVar16 + dVar14 * (double)*(ushort *)(lVar7 + 2); + dVar17 = dVar17 + dVar14 * (double)*(ushort *)(lVar7 + 4); + dVar18 = dVar18 + dVar14 * (double)*(ushort *)(lVar7 + 6); + } while ((int)lVar6 < iVar4); + } + lVar5 = lVar5 + 4; + pdVar11[1] = dVar16; + *pdVar11 = dVar15; + pdVar11[3] = dVar18; + pdVar11[2] = dVar17; + pdVar11 = pdVar11 + 4; + } while ((int)lVar5 < iVar2); + } + lVar6 = lVar13 << 1; + lVar5 = lVar13; + if (iVar1 < param_6) { + do { + lVar7 = 0; + dVar15 = dVar19; + if (0 < iVar4) { + do { + lVar8 = lVar7 * 8; + lVar3 = lVar7 * 8; + lVar7 = lVar7 + 1; + dVar15 = dVar15 + (double)*(ushort *)(*(long *)(lVar9 + lVar8) + lVar6) * + *(double *)(lVar10 + lVar3); + } while ((int)lVar7 < iVar4); + } + param_3[lVar5] = dVar15; + lVar5 = lVar5 + 1; + lVar6 = lVar6 + 2; + } while (lVar5 != lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b57a0 (476 bytes) name=FUN_001b57a0 + +void FUN_001b57a0(long param_1,long param_2,undefined8 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + int iVar2; + long lVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + long lVar10; + undefined8 *puVar11; + long lVar12; + long lVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + + param_6 = param_6 * param_7; + lVar12 = *(long *)(param_1 + 0x18); + fVar19 = *(float *)(param_1 + 0x60); + lVar10 = *(long *)(param_1 + 0x30); + lVar9 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar2 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar2 < 1) { + iVar1 = 0; + } + lVar13 = (long)iVar1; + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar9 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar5)) * 2; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar2) { + lVar5 = 0; + puVar11 = param_3; + do { + fVar15 = fVar19; + fVar16 = fVar19; + fVar17 = fVar19; + fVar18 = fVar19; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar8 = *(long *)(lVar9 + lVar6 * 8); + fVar14 = *(float *)(lVar10 + lVar6 * 4); + lVar6 = lVar6 + 1; + lVar7 = lVar8 + lVar5 * 2; + fVar15 = fVar15 + fVar14 * (float)*(ushort *)(lVar8 + lVar5 * 2); + fVar16 = fVar16 + fVar14 * (float)*(ushort *)(lVar7 + 2); + fVar17 = fVar17 + fVar14 * (float)*(ushort *)(lVar7 + 4); + fVar18 = fVar18 + fVar14 * (float)*(ushort *)(lVar7 + 6); + } while ((int)lVar6 < iVar4); + } + lVar5 = lVar5 + 4; + puVar11[1] = CONCAT44(fVar18,fVar17); + *puVar11 = CONCAT44(fVar16,fVar15); + puVar11 = puVar11 + 2; + } while ((int)lVar5 < iVar2); + } + lVar6 = lVar13 << 1; + lVar5 = lVar13; + if (iVar1 < param_6) { + do { + lVar7 = 0; + fVar15 = fVar19; + if (0 < iVar4) { + do { + lVar8 = lVar7 * 8; + lVar3 = lVar7 * 4; + lVar7 = lVar7 + 1; + fVar15 = fVar15 + (float)*(ushort *)(*(long *)(lVar9 + lVar8) + lVar6) * + *(float *)(lVar10 + lVar3); + } while ((int)lVar7 < iVar4); + } + *(float *)((long)param_3 + lVar5 * 4) = fVar15; + lVar5 = lVar5 + 1; + lVar6 = lVar6 + 2; + } while (lVar5 != lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = (undefined8 *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b597c (476 bytes) name=FUN_001b597c + +void FUN_001b597c(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + double *pdVar10; + long lVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + + param_6 = param_6 * param_7; + lVar11 = *(long *)(param_1 + 0x18); + dVar17 = *(double *)(param_1 + 0x60); + lVar9 = *(long *)(param_1 + 0x30); + lVar8 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar8 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar5)); + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar5 = 0; + pdVar10 = param_3; + do { + dVar13 = dVar17; + dVar14 = dVar17; + dVar15 = dVar17; + dVar16 = dVar17; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar7 = *(long *)(lVar8 + lVar6 * 8); + dVar12 = *(double *)(lVar9 + lVar6 * 8); + lVar6 = lVar6 + 1; + lVar2 = lVar7 + lVar5; + dVar13 = dVar13 + dVar12 * (double)*(byte *)(lVar7 + lVar5); + dVar14 = dVar14 + dVar12 * (double)*(byte *)(lVar2 + 1); + dVar15 = dVar15 + dVar12 * (double)*(byte *)(lVar2 + 2); + dVar16 = dVar16 + dVar12 * (double)*(byte *)(lVar2 + 3); + } while ((int)lVar6 < iVar4); + } + lVar5 = lVar5 + 4; + pdVar10[1] = dVar14; + *pdVar10 = dVar13; + pdVar10[3] = dVar16; + pdVar10[2] = dVar15; + pdVar10 = pdVar10 + 4; + } while ((int)lVar5 < iVar3); + } + lVar5 = (long)iVar1; + if (iVar1 < param_6) { + do { + lVar6 = 0; + dVar13 = dVar17; + if (0 < iVar4) { + do { + lVar2 = lVar6 * 8; + lVar7 = lVar6 * 8; + lVar6 = lVar6 + 1; + dVar13 = dVar13 + (double)*(byte *)(*(long *)(lVar8 + lVar2) + lVar5) * + *(double *)(lVar9 + lVar7); + } while ((int)lVar6 < iVar4); + } + param_3[lVar5] = dVar13; + lVar5 = lVar5 + 1; + } while (lVar5 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b5b58 (448 bytes) name=FUN_001b5b58 + +void FUN_001b5b58(long param_1,long param_2,undefined8 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + undefined8 *puVar10; + long lVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + + param_6 = param_6 * param_7; + lVar11 = *(long *)(param_1 + 0x18); + fVar17 = *(float *)(param_1 + 0x60); + lVar9 = *(long *)(param_1 + 0x30); + lVar8 = *(long *)(param_1 + 0x48); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar8 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar5)); + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar5 = 0; + puVar10 = param_3; + do { + fVar13 = fVar17; + fVar14 = fVar17; + fVar15 = fVar17; + fVar16 = fVar17; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar7 = *(long *)(lVar8 + lVar6 * 8); + fVar12 = *(float *)(lVar9 + lVar6 * 4); + lVar6 = lVar6 + 1; + lVar2 = lVar7 + lVar5; + fVar13 = fVar13 + fVar12 * (float)*(byte *)(lVar7 + lVar5); + fVar14 = fVar14 + fVar12 * (float)*(byte *)(lVar2 + 1); + fVar15 = fVar15 + fVar12 * (float)*(byte *)(lVar2 + 2); + fVar16 = fVar16 + fVar12 * (float)*(byte *)(lVar2 + 3); + } while ((int)lVar6 < iVar4); + } + lVar5 = lVar5 + 4; + puVar10[1] = CONCAT44(fVar16,fVar15); + *puVar10 = CONCAT44(fVar14,fVar13); + puVar10 = puVar10 + 2; + } while ((int)lVar5 < iVar3); + } + lVar5 = (long)iVar1; + if (iVar1 < param_6) { + do { + lVar6 = 0; + fVar13 = fVar17; + if (0 < iVar4) { + do { + lVar2 = lVar6 * 8; + lVar7 = lVar6 * 4; + lVar6 = lVar6 + 1; + fVar13 = fVar13 + (float)*(byte *)(*(long *)(lVar8 + lVar2) + lVar5) * + *(float *)(lVar9 + lVar7); + } while ((int)lVar6 < iVar4); + } + *(float *)((long)param_3 + lVar5 * 4) = fVar13; + lVar5 = lVar5 + 1; + } while (lVar5 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = (undefined8 *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001b5d18 (1056 bytes) name=FUN_001b5d18 + +void FUN_001b5d18(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + double *pdVar2; + long *plVar3; + long lVar4; + long lVar5; + uint uVar6; + uint uVar7; + int iVar8; + double *pdVar9; + long lVar10; + ulong uVar11; + long *plVar12; + long *plVar13; + long *plVar14; + int iVar15; + double *pdVar16; + long *plVar17; + long *plVar18; + long lVar19; + double *pdVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + + uVar6 = *(int *)(param_1 + 8) / 2; + uVar11 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar6 << 3; + pdVar2 = (double *)(*(long *)(param_1 + 0x20) + uVar11); + plVar18 = (long *)(param_2 + uVar11); + dVar26 = *(double *)(param_1 + 0x78); + if ((*(uint *)(param_1 + 0x80) & 1) == 0) { + if (param_5 != 0) { + iVar8 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar8 < 1) { + iVar1 = 0; + } + plVar17 = plVar18 + -1; + plVar3 = plVar18 + (param_5 - 1); + lVar19 = ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8; + do { + plVar18 = plVar18 + 1; + if (0 < iVar8) { + lVar10 = 0; + iVar15 = 0; + pdVar16 = param_3; + do { + plVar12 = plVar18; + plVar14 = plVar17; + dVar22 = dVar26; + dVar23 = dVar26; + dVar24 = dVar26; + dVar25 = dVar26; + pdVar20 = pdVar2; + if (0 < (int)uVar6) { + do { + plVar13 = plVar12 + 1; + lVar4 = *plVar12 + lVar10; + lVar5 = *plVar14 + lVar10; + dVar21 = pdVar20[1]; + dVar22 = dVar22 + dVar21 * (*(double *)(*plVar12 + lVar10) - + *(double *)(*plVar14 + lVar10)); + dVar23 = dVar23 + dVar21 * (*(double *)(lVar4 + 8) - *(double *)(lVar5 + 8)); + dVar24 = dVar24 + dVar21 * (*(double *)(lVar4 + 0x10) - *(double *)(lVar5 + 0x10)); + dVar25 = dVar25 + dVar21 * (*(double *)(lVar4 + 0x18) - *(double *)(lVar5 + 0x18)); + plVar12 = plVar13; + plVar14 = plVar14 + -1; + pdVar20 = pdVar20 + 1; + } while (plVar18 + (ulong)(uVar6 - 1) + 1 != plVar13); + } + iVar15 = iVar15 + 4; + lVar10 = lVar10 + 0x20; + pdVar16[1] = dVar23; + *pdVar16 = dVar22; + pdVar16[3] = dVar25; + pdVar16[2] = dVar24; + pdVar16 = pdVar16 + 4; + } while (iVar15 < iVar8); + } + lVar10 = (long)iVar1 << 3; + if (iVar1 < param_6) { + do { + while ((int)uVar6 < 1) { + *(double *)((long)param_3 + lVar10) = dVar26; + lVar10 = lVar10 + 8; + if (lVar10 == lVar19) goto LAB_001b5eec; + } + pdVar16 = pdVar2 + 1; + plVar12 = plVar18; + plVar14 = plVar17; + dVar22 = dVar26; + do { + pdVar20 = pdVar16 + 1; + dVar22 = dVar22 + (*(double *)(*plVar12 + lVar10) - *(double *)(*plVar14 + lVar10)) * + *pdVar16; + pdVar16 = pdVar20; + plVar12 = plVar12 + 1; + plVar14 = plVar14 + -1; + } while (pdVar20 != pdVar2 + (ulong)(uVar6 - 1) + 2); + *(double *)((long)param_3 + lVar10) = dVar22; + lVar10 = lVar10 + 8; + } while (lVar10 != lVar19); + } +LAB_001b5eec: + plVar17 = plVar17 + 1; + param_3 = (double *)((long)param_3 + (long)param_4); + } while (plVar17 != plVar3); + } + } + else if (param_5 != 0) { + uVar7 = param_6 - 4U >> 2; + iVar1 = (uVar7 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + plVar17 = plVar18 + -1; + plVar3 = plVar18 + (param_5 - 1); + do { + plVar18 = plVar18 + 1; + if (0 < param_6 + -3) { + pdVar16 = (double *)plVar17[1]; + lVar19 = 0; + pdVar20 = param_3; + do { + dVar22 = *pdVar2; + dVar25 = dVar26 + dVar22 * *pdVar16; + dVar24 = dVar26 + dVar22 * pdVar16[1]; + dVar23 = dVar26 + dVar22 * pdVar16[2]; + dVar22 = dVar26 + dVar22 * pdVar16[3]; + plVar12 = plVar18; + plVar14 = plVar17; + pdVar9 = pdVar2; + if (0 < (int)uVar6) { + do { + plVar13 = plVar12 + 1; + lVar10 = *plVar12 + lVar19; + lVar4 = *plVar14 + lVar19; + dVar21 = pdVar9[1]; + dVar25 = dVar25 + dVar21 * (*(double *)(*plVar12 + lVar19) + + *(double *)(*plVar14 + lVar19)); + dVar24 = dVar24 + dVar21 * (*(double *)(lVar10 + 8) + *(double *)(lVar4 + 8)); + dVar23 = dVar23 + dVar21 * (*(double *)(lVar10 + 0x10) + *(double *)(lVar4 + 0x10)); + dVar22 = dVar22 + dVar21 * (*(double *)(lVar10 + 0x18) + *(double *)(lVar4 + 0x18)); + plVar12 = plVar13; + plVar14 = plVar14 + -1; + pdVar9 = pdVar9 + 1; + } while (plVar13 != plVar17 + (ulong)(uVar6 - 1) + 3); + } + lVar19 = lVar19 + 0x20; + pdVar16 = pdVar16 + 4; + pdVar20[1] = dVar24; + *pdVar20 = dVar25; + pdVar20[3] = dVar22; + pdVar20[2] = dVar23; + pdVar20 = pdVar20 + 4; + } while (lVar19 != ((ulong)uVar7 + 1) * 0x20); + } + if (iVar1 < param_6) { + lVar10 = plVar17[1]; + lVar19 = (long)iVar1 << 3; + do { + dVar22 = dVar26 + *(double *)(lVar10 + lVar19) * *pdVar2; + if (0 < (int)uVar6) { + pdVar16 = pdVar2 + 1; + plVar12 = plVar18; + plVar14 = plVar17; + do { + pdVar20 = pdVar16 + 1; + dVar22 = dVar22 + (*(double *)(*plVar12 + lVar19) + *(double *)(*plVar14 + lVar19)) * + *pdVar16; + pdVar16 = pdVar20; + plVar12 = plVar12 + 1; + plVar14 = plVar14 + -1; + } while (pdVar20 != pdVar2 + (ulong)(uVar6 - 1) + 2); + } + *(double *)((long)param_3 + lVar19) = dVar22; + lVar19 = lVar19 + 8; + } while (lVar19 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + plVar17 = plVar17 + 1; + param_3 = (double *)((long)param_3 + (long)param_4); + } while (plVar17 != plVar3); + return; + } + return; +} + + +================================================================== + +### FUNC 001b6138 (1012 bytes) name=FUN_001b6138 + +void FUN_001b6138(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + float *pfVar2; + long *plVar3; + long lVar4; + long lVar5; + undefined8 *puVar6; + int iVar7; + uint uVar8; + int iVar9; + float *pfVar10; + long lVar11; + long *plVar12; + long *plVar13; + long *plVar14; + int iVar15; + float *pfVar16; + long *plVar17; + long *plVar18; + long lVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + + iVar7 = *(int *)(param_1 + 8) / 2; + fVar25 = *(float *)(param_1 + 0x74); + pfVar2 = (float *)(*(long *)(param_1 + 0x20) + (long)iVar7 * 4); + plVar17 = (long *)(param_2 + (long)iVar7 * 8); + if ((*(uint *)(param_1 + 0x78) & 1) == 0) { + if (param_5 != 0) { + iVar9 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar9 < 1) { + iVar1 = 0; + } + plVar18 = plVar17 + -1; + plVar3 = plVar17 + (param_5 - 1); + lVar19 = ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4; + do { + plVar17 = plVar17 + 1; + if (0 < iVar9) { + lVar11 = 0; + iVar15 = 0; + do { + plVar12 = plVar18; + plVar13 = plVar17; + fVar21 = fVar25; + fVar22 = fVar25; + fVar23 = fVar25; + fVar24 = fVar25; + pfVar16 = pfVar2; + if (0 < iVar7) { + do { + plVar14 = plVar12 + -1; + lVar4 = *plVar12 + lVar11; + lVar5 = *plVar13 + lVar11; + fVar20 = pfVar16[1]; + fVar21 = fVar21 + fVar20 * (*(float *)(*plVar13 + lVar11) - + *(float *)(*plVar12 + lVar11)); + fVar22 = fVar22 + fVar20 * (*(float *)(lVar5 + 4) - *(float *)(lVar4 + 4)); + fVar23 = fVar23 + fVar20 * (*(float *)(lVar5 + 8) - *(float *)(lVar4 + 8)); + fVar24 = fVar24 + fVar20 * (*(float *)(lVar5 + 0xc) - *(float *)(lVar4 + 0xc)); + plVar12 = plVar14; + plVar13 = plVar13 + 1; + pfVar16 = pfVar16 + 1; + } while (plVar17 + (-3 - (ulong)(iVar7 - 1)) != plVar14); + } + puVar6 = (undefined8 *)(param_3 + lVar11); + iVar15 = iVar15 + 4; + lVar11 = lVar11 + 0x10; + puVar6[1] = CONCAT44(fVar24,fVar23); + *puVar6 = CONCAT44(fVar22,fVar21); + } while (iVar15 < iVar9); + } + if (iVar1 < param_6) { + lVar11 = (long)iVar1 << 2; + do { + while (plVar12 = plVar17, plVar13 = plVar18, fVar21 = fVar25, pfVar16 = pfVar2, + iVar7 < 1) { + *(float *)(param_3 + lVar11) = fVar25; + lVar11 = lVar11 + 4; + if (lVar11 == lVar19) goto LAB_001b62f8; + } + do { + plVar14 = plVar12 + 1; + fVar21 = fVar21 + (*(float *)(*plVar12 + lVar11) - *(float *)(*plVar13 + lVar11)) * + pfVar16[1]; + plVar12 = plVar14; + plVar13 = plVar13 + -1; + pfVar16 = pfVar16 + 1; + } while (plVar14 != plVar17 + (ulong)(iVar7 - 1) + 1); + *(float *)(param_3 + lVar11) = fVar21; + lVar11 = lVar11 + 4; + } while (lVar11 != lVar19); + } +LAB_001b62f8: + plVar18 = plVar18 + 1; + param_3 = param_3 + param_4; + } while (plVar18 != plVar3); + } + } + else if (param_5 != 0) { + uVar8 = param_6 - 4U >> 2; + iVar1 = (uVar8 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + plVar18 = plVar17 + -1; + plVar3 = plVar17 + (param_5 - 1); + do { + plVar17 = plVar17 + 1; + if (0 < param_6 + -3) { + pfVar16 = (float *)plVar18[1]; + lVar19 = 0; + do { + fVar21 = *pfVar2; + fVar24 = fVar25 + fVar21 * *pfVar16; + fVar23 = fVar25 + fVar21 * pfVar16[1]; + fVar22 = fVar25 + fVar21 * pfVar16[2]; + fVar21 = fVar25 + fVar21 * pfVar16[3]; + plVar12 = plVar18; + plVar13 = plVar17; + pfVar10 = pfVar2; + if (0 < iVar7) { + do { + plVar14 = plVar12 + -1; + lVar11 = *plVar12 + lVar19; + lVar4 = *plVar13 + lVar19; + fVar20 = pfVar10[1]; + fVar24 = fVar24 + fVar20 * (*(float *)(*plVar13 + lVar19) + + *(float *)(*plVar12 + lVar19)); + fVar23 = fVar23 + fVar20 * (*(float *)(lVar4 + 4) + *(float *)(lVar11 + 4)); + fVar22 = fVar22 + fVar20 * (*(float *)(lVar4 + 8) + *(float *)(lVar11 + 8)); + fVar21 = fVar21 + fVar20 * (*(float *)(lVar4 + 0xc) + *(float *)(lVar11 + 0xc)); + plVar12 = plVar14; + plVar13 = plVar13 + 1; + pfVar10 = pfVar10 + 1; + } while (plVar18 + (-1 - (ulong)(iVar7 - 1)) != plVar14); + } + puVar6 = (undefined8 *)(param_3 + lVar19); + lVar19 = lVar19 + 0x10; + pfVar16 = pfVar16 + 4; + puVar6[1] = CONCAT44(fVar21,fVar22); + *puVar6 = CONCAT44(fVar23,fVar24); + } while (lVar19 != ((ulong)uVar8 + 1) * 0x10); + } + if (iVar1 < param_6) { + lVar11 = plVar18[1]; + lVar19 = (long)iVar1 << 2; + do { + fVar21 = fVar25 + *(float *)(lVar11 + lVar19) * *pfVar2; + plVar12 = plVar17; + plVar13 = plVar18; + pfVar16 = pfVar2; + if (0 < iVar7) { + do { + plVar14 = plVar12 + 1; + fVar21 = fVar21 + (*(float *)(*plVar12 + lVar19) + *(float *)(*plVar13 + lVar19)) * + pfVar16[1]; + plVar12 = plVar14; + plVar13 = plVar13 + -1; + pfVar16 = pfVar16 + 1; + } while (plVar18 + (ulong)(iVar7 - 1) + 3 != plVar14); + } + *(float *)(param_3 + lVar19) = fVar21; + lVar19 = lVar19 + 4; + } while (lVar19 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4); + } + plVar18 = plVar18 + 1; + param_3 = param_3 + param_4; + } while (plVar18 != plVar3); + return; + } + return; +} + + +================================================================== + +### FUNC 001b652c (1416 bytes) name=FUN_001b652c + +void FUN_001b652c(long param_1,long param_2,undefined2 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int *piVar2; + long *plVar3; + long lVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + int *piVar10; + undefined2 uVar11; + long *plVar12; + undefined2 *puVar13; + long lVar14; + long lVar15; + long lVar16; + long *plVar17; + long *plVar18; + long lVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + long lVar24; + long *plVar25; + undefined2 uVar26; + undefined2 uVar27; + long *plVar28; + int *piVar29; + long lVar30; + + iVar6 = *(int *)(param_1 + 0x74); + iVar5 = *(int *)(param_1 + 8) / 2; + piVar2 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar5 * 4); + plVar28 = (long *)(param_2 + (long)iVar5 * 8); + if ((*(uint *)(param_1 + 0x78) & 1) == 0) { + if (param_5 != 0) { + iVar9 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar9 < 1) { + iVar1 = 0; + } + plVar25 = plVar28 + -1; + plVar3 = plVar28 + (param_5 - 1); + lVar16 = (long)iVar1; + lVar30 = NEON_shl(lVar16,2); + do { + plVar28 = plVar28 + 1; + uVar26 = 0x8000; + uVar27 = 0x7fff; + if (0 < iVar9) { + lVar24 = 0; + puVar13 = param_3; + do { + iVar20 = iVar6; + iVar21 = iVar6; + iVar22 = iVar6; + iVar23 = iVar6; + if (0 < iVar5) { + lVar14 = lVar24 * 4; + plVar12 = plVar28; + plVar17 = plVar25; + piVar29 = piVar2; + do { + piVar29 = piVar29 + 1; + plVar18 = plVar17 + -1; + lVar15 = *plVar17 + lVar14; + iVar7 = *piVar29; + lVar19 = *plVar12 + lVar14; + iVar20 = iVar20 + (*(int *)(*plVar12 + lVar14) - *(int *)(*plVar17 + lVar14)) * + iVar7; + iVar21 = iVar21 + (*(int *)(lVar19 + 4) - *(int *)(lVar15 + 4)) * iVar7; + iVar22 = iVar22 + (*(int *)(lVar19 + 8) - *(int *)(lVar15 + 8)) * iVar7; + iVar23 = iVar23 + (*(int *)(lVar19 + 0xc) - *(int *)(lVar15 + 0xc)) * iVar7; + plVar12 = plVar12 + 1; + plVar17 = plVar18; + } while (plVar28 + (-3 - (ulong)(iVar5 - 1)) != plVar18); + } + uVar11 = (short)iVar20; + if ((0xffff < iVar20 + 0x8000U) && (uVar11 = uVar27, iVar20 < 1)) { + uVar11 = uVar26; + } + *puVar13 = uVar11; + uVar11 = (short)iVar21; + if ((0xffff < iVar21 + 0x8000U) && (uVar11 = uVar27, iVar21 < 1)) { + uVar11 = uVar26; + } + puVar13[1] = uVar11; + uVar11 = (short)iVar22; + if ((0xffff < iVar22 + 0x8000U) && (uVar11 = 0x7fff, iVar22 < 1)) { + uVar11 = 0x8000; + } + puVar13[2] = uVar11; + uVar11 = (short)iVar23; + if ((0xffff < iVar23 + 0x8000U) && (uVar11 = 0x7fff, iVar23 < 1)) { + uVar11 = 0x8000; + } + lVar24 = lVar24 + 4; + puVar13[3] = uVar11; + puVar13 = puVar13 + 4; + } while ((int)lVar24 < iVar9); + } + if (iVar1 < param_6) { + lVar14 = lVar30; + lVar24 = lVar16; + do { + plVar12 = plVar28; + plVar17 = plVar25; + iVar20 = iVar6; + piVar29 = piVar2; + if (0 < iVar5) { + do { + plVar18 = plVar12 + 1; + iVar20 = iVar20 + (*(int *)(*plVar12 + lVar14) - *(int *)(*plVar17 + lVar14)) * + piVar29[1]; + plVar12 = plVar18; + plVar17 = plVar17 + -1; + piVar29 = piVar29 + 1; + } while (plVar28 + (ulong)(iVar5 - 1) + 1 != plVar18); + } + uVar11 = (short)iVar20; + if ((0xffff < iVar20 + 0x8000U) && (uVar11 = uVar27, iVar20 < 1)) { + uVar11 = uVar26; + } + param_3[lVar24] = uVar11; + lVar24 = lVar24 + 1; + lVar14 = lVar14 + 4; + } while (lVar24 != lVar16 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + plVar25 = plVar25 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar25 != plVar3); + } + } + else if (param_5 != 0) { + uVar8 = param_6 - 4U >> 2; + iVar1 = (uVar8 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + plVar25 = plVar28 + -1; + plVar3 = plVar28 + (param_5 - 1); + lVar16 = (long)iVar1; + lVar14 = NEON_shl((ulong)uVar8 + 1,4); + lVar24 = NEON_shl(lVar16,1); + lVar30 = NEON_shl(lVar16,2); + lVar16 = NEON_shl(lVar16 + 1 + (ulong)(uint)((param_6 + -1) - iVar1),2); + do { + plVar28 = plVar28 + 1; + uVar26 = 0x8000; + uVar27 = 0x7fff; + if (0 < param_6 + -3) { + iVar9 = *piVar2; + piVar29 = (int *)plVar25[1]; + lVar15 = 0; + puVar13 = param_3 + 3; + do { + iVar20 = iVar6 + iVar9 * *piVar29; + iVar21 = iVar6 + iVar9 * piVar29[1]; + iVar22 = iVar6 + iVar9 * piVar29[2]; + iVar23 = iVar6 + iVar9 * piVar29[3]; + plVar12 = plVar28; + plVar17 = plVar25; + piVar10 = piVar2; + if (0 < iVar5) { + do { + plVar18 = plVar17 + -1; + lVar19 = *plVar17 + lVar15; + iVar7 = piVar10[1]; + lVar4 = *plVar12 + lVar15; + iVar20 = iVar20 + (*(int *)(*plVar12 + lVar15) + *(int *)(*plVar17 + lVar15)) * iVar7; + iVar21 = iVar21 + (*(int *)(lVar4 + 4) + *(int *)(lVar19 + 4)) * iVar7; + iVar22 = iVar22 + (*(int *)(lVar4 + 8) + *(int *)(lVar19 + 8)) * iVar7; + iVar23 = iVar23 + (*(int *)(lVar4 + 0xc) + *(int *)(lVar19 + 0xc)) * iVar7; + plVar12 = plVar12 + 1; + plVar17 = plVar18; + piVar10 = piVar10 + 1; + } while (plVar18 != plVar25 + (-1 - (ulong)(iVar5 - 1))); + } + uVar11 = (short)iVar20; + if ((0xffff < iVar20 + 0x8000U) && (uVar11 = uVar27, iVar20 < 1)) { + uVar11 = uVar26; + } + puVar13[-3] = uVar11; + uVar11 = (short)iVar21; + if ((0xffff < iVar21 + 0x8000U) && (uVar11 = uVar27, iVar21 < 1)) { + uVar11 = uVar26; + } + puVar13[-2] = uVar11; + uVar11 = (short)iVar22; + if ((0xffff < iVar22 + 0x8000U) && (uVar11 = 0x7fff, iVar22 < 1)) { + uVar11 = 0x8000; + } + puVar13[-1] = uVar11; + uVar11 = (short)iVar23; + if ((0xffff < iVar23 + 0x8000U) && (uVar11 = 0x7fff, iVar23 < 1)) { + uVar11 = 0x8000; + } + *puVar13 = uVar11; + lVar15 = lVar15 + 0x10; + piVar29 = piVar29 + 4; + puVar13 = puVar13 + 4; + } while (lVar15 != lVar14); + } + if (iVar1 < param_6) { + iVar9 = *piVar2; + lVar19 = plVar25[1]; + puVar13 = (undefined2 *)((long)param_3 + lVar24); + lVar15 = lVar30; + do { + iVar20 = iVar6 + iVar9 * *(int *)(lVar19 + lVar15); + plVar12 = plVar28; + plVar17 = plVar25; + piVar29 = piVar2; + if (0 < iVar5) { + do { + plVar18 = plVar12 + 1; + iVar20 = iVar20 + (*(int *)(*plVar12 + lVar15) + *(int *)(*plVar17 + lVar15)) * + piVar29[1]; + plVar12 = plVar18; + plVar17 = plVar17 + -1; + piVar29 = piVar29 + 1; + } while (plVar25 + (ulong)(iVar5 - 1) + 3 != plVar18); + } + uVar11 = (short)iVar20; + if ((0xffff < iVar20 + 0x8000U) && (uVar11 = uVar27, iVar20 < 1)) { + uVar11 = uVar26; + } + *puVar13 = uVar11; + lVar15 = lVar15 + 4; + puVar13 = puVar13 + 1; + } while (lVar15 != lVar16); + } + plVar25 = plVar25 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar25 != plVar3); + return; + } + return; +} + + +================================================================== + +### FUNC 001b6ab4 (584 bytes) name=FUN_001b6ab4 + +void FUN_001b6ab4(long param_1,long *param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int *piVar7; + undefined2 uVar8; + long *plVar9; + long *plVar10; + long lVar11; + long *plVar12; + int iVar13; + int iVar14; + int iVar15; + undefined2 *puVar16; + int iVar17; + long lVar18; + long lVar19; + int *piVar20; + undefined2 uVar21; + undefined2 uVar22; + long *plVar23; + int *piVar24; + int iVar25; + long lVar26; + long lVar27; + + iVar25 = param_5 + -1; + piVar24 = *(int **)(param_1 + 0x20); + iVar1 = *(int *)(param_1 + 0x74); + iVar2 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + lVar11 = (long)iVar5; + plVar10 = param_2 + (ulong)(iVar2 - 2) + 2; + lVar27 = NEON_shl(lVar11,1); + lVar26 = NEON_shl(lVar11,2); + do { + plVar23 = param_2 + 1; + uVar21 = 0x8000; + uVar22 = 0x7fff; + if (0 < param_6 + -3) { + iVar3 = *piVar24; + piVar20 = (int *)*param_2; + lVar19 = 0; + puVar16 = (undefined2 *)(param_3 + 6); + do { + iVar17 = iVar1 + iVar3 * *piVar20; + iVar15 = iVar1 + iVar3 * piVar20[1]; + iVar14 = iVar1 + iVar3 * piVar20[2]; + iVar13 = iVar1 + iVar3 * piVar20[3]; + plVar9 = plVar23; + piVar7 = piVar24; + if (1 < iVar2) { + do { + plVar12 = plVar9 + 1; + iVar4 = piVar7[1]; + lVar18 = *plVar9 + lVar19; + iVar17 = iVar17 + iVar4 * *(int *)(*plVar9 + lVar19); + iVar15 = iVar15 + iVar4 * *(int *)(lVar18 + 4); + iVar14 = iVar14 + iVar4 * *(int *)(lVar18 + 8); + iVar13 = iVar13 + iVar4 * *(int *)(lVar18 + 0xc); + plVar9 = plVar12; + piVar7 = piVar7 + 1; + } while (plVar10 != plVar12); + } + uVar8 = (short)iVar17; + if ((0xffff < iVar17 + 0x8000U) && (uVar8 = uVar22, iVar17 < 1)) { + uVar8 = uVar21; + } + puVar16[-3] = uVar8; + uVar8 = (short)iVar15; + if ((0xffff < iVar15 + 0x8000U) && (uVar8 = uVar22, iVar15 < 1)) { + uVar8 = uVar21; + } + puVar16[-2] = uVar8; + uVar8 = (short)iVar14; + if ((0xffff < iVar14 + 0x8000U) && (uVar8 = 0x7fff, iVar14 < 1)) { + uVar8 = 0x8000; + } + puVar16[-1] = uVar8; + uVar8 = (short)iVar13; + if ((0xffff < iVar13 + 0x8000U) && (uVar8 = 0x7fff, iVar13 < 1)) { + uVar8 = 0x8000; + } + lVar19 = lVar19 + 0x10; + *puVar16 = uVar8; + piVar20 = piVar20 + 4; + puVar16 = puVar16 + 4; + } while (lVar19 != ((ulong)uVar6 + 1) * 0x10); + } + if (iVar5 < param_6) { + iVar3 = *piVar24; + lVar18 = *param_2; + lVar19 = lVar26; + puVar16 = (undefined2 *)(param_3 + lVar27); + do { + iVar17 = iVar1 + iVar3 * *(int *)(lVar18 + lVar19); + plVar9 = plVar23; + piVar20 = piVar24; + if (1 < iVar2) { + do { + plVar12 = plVar9 + 1; + iVar17 = iVar17 + piVar20[1] * *(int *)(*plVar9 + lVar19); + plVar9 = plVar12; + piVar20 = piVar20 + 1; + } while (plVar10 != plVar12); + } + uVar8 = (short)iVar17; + if ((0xffff < iVar17 + 0x8000U) && (uVar8 = uVar22, iVar17 < 1)) { + uVar8 = uVar21; + } + lVar19 = lVar19 + 4; + *puVar16 = uVar8; + puVar16 = puVar16 + 1; + } while (lVar19 != (lVar11 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 4); + } + iVar25 = iVar25 + -1; + plVar10 = plVar10 + 1; + param_3 = param_3 + param_4; + param_2 = plVar23; + } while (iVar25 != -1); + } + return; +} + + +================================================================== + +### FUNC 001b6cfc (4980 bytes) name=FUN_001b6cfc + +void FUN_001b6cfc(long param_1,long param_2,float *param_3,int param_4,int param_5,int param_6) + +{ + bool bVar1; + bool bVar2; + ulong uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + float *pfVar8; + ulong *puVar9; + undefined8 *puVar10; + long lVar11; + uint uVar12; + uint uVar13; + uint uVar14; + int iVar15; + int iVar16; + uint uVar17; + bool bVar18; + bool bVar19; + float *pfVar20; + ulong *puVar21; + float *pfVar22; + long lVar23; + long lVar24; + float *pfVar25; + uint uVar26; + long lVar27; + ulong uVar28; + float *pfVar29; + long lVar30; + long lVar31; + ulong uVar32; + ulong uVar33; + uint uVar34; + float *pfVar35; + uint uVar36; + float *pfVar37; + float *pfVar38; + ulong uVar39; + float *pfVar40; + float fVar41; + float fVar42; + float fVar43; + float fVar44; + undefined8 uVar45; + undefined8 uVar46; + float fVar47; + float fVar48; + undefined8 uVar49; + undefined8 uVar50; + undefined1 auVar51 [16]; + float fVar52; + float fVar53; + int iVar54; + float fVar55; + float fVar56; + undefined8 uVar57; + undefined8 uVar58; + bool bVar59; + + uVar12 = *(uint *)(param_1 + 0x78); + lVar23 = (long)(*(int *)(param_1 + 8) / 2); + lVar24 = lVar23 * 4; + fVar53 = *(float *)(*(long *)(param_1 + 0x20) + lVar24); + fVar42 = *(float *)(*(long *)(param_1 + 0x20) + lVar24 + 4); + if (fVar53 == 2.0) { + if (fVar42 == 1.0) { + bVar19 = true; + fVar42 = 1.0; +LAB_001b6da8: + bVar18 = false; + bVar59 = false; + goto LAB_001b6db0; + } + } + else if (fVar53 == -2.0) { + bVar19 = false; + if (fVar42 == 1.0) { + bVar18 = true; + bVar59 = bVar19; + goto LAB_001b6db0; + } + goto LAB_001b6da8; + } + if ((fVar53 == 0.0) && ((fVar42 == 1.0 || (fVar42 == -1.0)))) { + bVar18 = false; + bVar19 = false; + bVar59 = true; + } + else { + bVar18 = false; + bVar19 = false; + bVar59 = false; + } +LAB_001b6db0: + fVar41 = *(float *)(param_1 + 0x74); + puVar21 = (ulong *)(param_2 + lVar23 * 8); + if (param_5 != 0) { + iVar15 = param_6 + -3; + uVar14 = param_6 - 4U >> 2; + uVar4 = uVar14 + 1; + uVar13 = uVar4 * 4; + bVar1 = uVar4 < 3; + if (iVar15 < 1) { + uVar13 = 0; + } + uVar3 = (ulong)uVar14; + uVar14 = uVar13 + 1; + uVar17 = param_6 - uVar13; + lVar31 = (long)(int)uVar13; + uVar5 = uVar13 + 2; + bVar2 = uVar17 < 7; + lVar23 = lVar31 + 4; + auVar51 = NEON_fmov(0x40000000,4); + uVar33 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + pfVar25 = param_3 + 0x10; + puVar9 = puVar21 + (ulong)(param_5 - 1) + 1; + lVar30 = ((ulong)((param_6 + -1) - uVar13) + 1) * 4; + lVar24 = lVar23 * 4 + -0x10; + uVar32 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + uVar6 = uVar13 + 3; + iVar16 = uVar17 - 1; + do { + pfVar20 = (float *)puVar21[-1]; + pfVar37 = (float *)*puVar21; + pfVar22 = (float *)puVar21[1]; + if ((uVar12 & 1) == 0) { + if (bVar59) { + pfVar37 = pfVar20; + if (fVar42 < 0.0) { + pfVar37 = pfVar22; + pfVar22 = pfVar20; + } + if (0 < iVar15) { + if ((bVar1) || + (param_3 < pfVar37 + 0x10 && pfVar37 < pfVar25 || + param_3 < pfVar22 + 0x10 && pfVar22 < pfVar25)) { + pfVar20 = pfVar37 + 1; + pfVar29 = param_3; + pfVar35 = pfVar22; + do { + pfVar38 = pfVar20 + 4; + fVar44 = *pfVar35; + fVar55 = pfVar20[-1]; + pfVar29[1] = (pfVar35[1] - *pfVar20) + fVar41; + *pfVar29 = (fVar44 - fVar55) + fVar41; + fVar55 = pfVar20[1]; + fVar44 = pfVar35[2]; + pfVar29[3] = (pfVar35[3] - pfVar20[2]) + fVar41; + pfVar29[2] = (fVar44 - fVar55) + fVar41; + pfVar20 = pfVar38; + pfVar29 = pfVar29 + 4; + pfVar35 = pfVar35 + 4; + } while (pfVar38 != pfVar37 + uVar3 * 4 + 5); + } + else { + lVar27 = 0; + uVar34 = 0; + do { + puVar10 = (undefined8 *)((long)param_3 + lVar27); + uVar34 = uVar34 + 1; + uVar46 = ((undefined8 *)((long)pfVar22 + lVar27))[1]; + uVar45 = *(undefined8 *)((long)pfVar22 + lVar27); + uVar50 = ((undefined8 *)((long)pfVar37 + lVar27))[1]; + uVar49 = *(undefined8 *)((long)pfVar37 + lVar27); + lVar27 = lVar27 + 0x10; + puVar10[1] = CONCAT44(((float)((ulong)uVar46 >> 0x20) - + (float)((ulong)uVar50 >> 0x20)) + fVar41, + ((float)uVar46 - (float)uVar50) + fVar41); + *puVar10 = CONCAT44(((float)((ulong)uVar45 >> 0x20) - (float)((ulong)uVar49 >> 0x20) + ) + fVar41,((float)uVar45 - (float)uVar49) + fVar41); + } while (uVar34 < uVar4); + } + } + if ((int)uVar13 < param_6) { + pfVar20 = param_3 + lVar31; + pfVar29 = pfVar22 + lVar31; + if ((pfVar20 < pfVar37 + lVar23 && pfVar37 + lVar31 < param_3 + lVar23 || + pfVar20 < pfVar22 + lVar23 && pfVar29 < param_3 + lVar23) || (uVar17 < 8)) { + lVar27 = 0; + do { + *(float *)((long)pfVar20 + lVar27) = + (*(float *)((long)pfVar29 + lVar27) - + *(float *)((long)(pfVar37 + lVar31) + lVar27)) + fVar41; + lVar27 = lVar27 + 4; + } while (lVar30 - lVar27 != 0); + } + else { + uVar34 = -((uint)((ulong)pfVar29 >> 2) & 3) & 3; + uVar7 = uVar17; + if (uVar34 < uVar17) { + uVar7 = uVar34; + } + uVar34 = uVar13; + if (((uVar7 != 0) && + (param_3[lVar31] = (pfVar22[lVar31] - pfVar37[lVar31]) + fVar41, uVar34 = uVar14, + uVar7 != 1)) && + (*(float *)((long)param_3 + uVar33) = + (*(float *)((long)pfVar22 + uVar33) - *(float *)((long)pfVar37 + uVar33)) + + fVar41, uVar34 = uVar5, uVar7 == 3)) { + *(float *)((long)param_3 + uVar32) = + (*(float *)((long)pfVar22 + uVar32) - *(float *)((long)pfVar37 + uVar32)) + + fVar41; + uVar34 = uVar6; + } + uVar36 = 0; + uVar26 = ((uVar17 - uVar7) - 4 >> 2) + 1; + iVar54 = uVar26 * 4; + pfVar20 = param_3 + (ulong)uVar7 + lVar31; + pfVar29 = pfVar37 + (ulong)uVar7 + lVar31; + pfVar35 = pfVar22 + (ulong)uVar7 + lVar31; + do { + uVar46 = *(undefined8 *)pfVar29; + uVar36 = uVar36 + 1; + uVar45 = *(undefined8 *)pfVar35; + *(ulong *)(pfVar20 + 2) = + CONCAT44(((float)((ulong)*(undefined8 *)(pfVar35 + 2) >> 0x20) - + (float)((ulong)*(undefined8 *)(pfVar29 + 2) >> 0x20)) + fVar41, + ((float)*(undefined8 *)(pfVar35 + 2) - + (float)*(undefined8 *)(pfVar29 + 2)) + fVar41); + *(ulong *)pfVar20 = + CONCAT44(((float)((ulong)uVar45 >> 0x20) - (float)((ulong)uVar46 >> 0x20)) + + fVar41,((float)uVar45 - (float)uVar46) + fVar41); + pfVar20 = pfVar20 + 4; + pfVar29 = pfVar29 + 4; + pfVar35 = pfVar35 + 4; + } while (uVar36 < uVar26); + uVar34 = uVar34 + iVar54; + if (uVar17 - uVar7 != iVar54) { + uVar39 = -(ulong)(uVar34 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar34 << 2; + *(float *)((long)param_3 + uVar39) = + (*(float *)((long)pfVar22 + uVar39) - *(float *)((long)pfVar37 + uVar39)) + + fVar41; + if ((int)(uVar34 + 1) < param_6) { + lVar27 = uVar39 + 4; + *(float *)((long)param_3 + lVar27) = + (*(float *)((long)pfVar22 + lVar27) - *(float *)((long)pfVar37 + lVar27)) + + fVar41; + if ((int)(uVar34 + 2) < param_6) { + lVar27 = uVar39 + 8; + *(float *)((long)param_3 + lVar27) = + (*(float *)((long)pfVar22 + lVar27) - *(float *)((long)pfVar37 + lVar27)) + + fVar41; + } + } + } + } + } + } + else { + if (0 < iVar15) { + if ((bVar1) || + (param_3 < pfVar20 + 0x10 && pfVar20 < pfVar25 || + param_3 < pfVar22 + 0x10 && pfVar22 < pfVar25)) { + pfVar37 = pfVar20 + 1; + pfVar29 = param_3; + pfVar35 = pfVar22; + do { + pfVar38 = pfVar37 + 4; + fVar44 = *pfVar35; + fVar55 = pfVar37[-1]; + pfVar29[1] = fVar41 + fVar42 * (pfVar35[1] - *pfVar37); + *pfVar29 = fVar41 + fVar42 * (fVar44 - fVar55); + fVar55 = pfVar37[1]; + fVar44 = pfVar35[2]; + pfVar29[3] = fVar41 + fVar42 * (pfVar35[3] - pfVar37[2]); + pfVar29[2] = fVar41 + fVar42 * (fVar44 - fVar55); + pfVar37 = pfVar38; + pfVar29 = pfVar29 + 4; + pfVar35 = pfVar35 + 4; + } while (pfVar38 != pfVar20 + uVar3 * 4 + 5); + } + else { + lVar27 = 0; + uVar34 = 0; + do { + puVar10 = (undefined8 *)((long)param_3 + lVar27); + uVar34 = uVar34 + 1; + uVar50 = ((undefined8 *)((long)pfVar20 + lVar27))[1]; + uVar49 = *(undefined8 *)((long)pfVar20 + lVar27); + uVar46 = ((undefined8 *)((long)pfVar22 + lVar27))[1]; + uVar45 = *(undefined8 *)((long)pfVar22 + lVar27); + lVar27 = lVar27 + 0x10; + puVar10[1] = CONCAT44(fVar41 + ((float)((ulong)uVar46 >> 0x20) - + (float)((ulong)uVar50 >> 0x20)) * fVar42, + fVar41 + ((float)uVar46 - (float)uVar50) * fVar42); + *puVar10 = CONCAT44(fVar41 + ((float)((ulong)uVar45 >> 0x20) - + (float)((ulong)uVar49 >> 0x20)) * fVar42, + fVar41 + ((float)uVar45 - (float)uVar49) * fVar42); + } while (uVar34 < uVar4); + } + } + if ((int)uVar13 < param_6) { + pfVar37 = param_3 + lVar31; + pfVar29 = pfVar22 + lVar31; + if ((uVar17 < 8) || + (pfVar37 < pfVar20 + lVar23 && pfVar20 + lVar31 < param_3 + lVar23 || + pfVar37 < pfVar22 + lVar23 && pfVar29 < param_3 + lVar23)) { + lVar27 = 0; + do { + *(float *)((long)pfVar37 + lVar27) = + fVar41 + fVar42 * (*(float *)((long)pfVar29 + lVar27) - + *(float *)((long)(pfVar20 + lVar31) + lVar27)); + lVar27 = lVar27 + 4; + } while (lVar30 - lVar27 != 0); + } + else { + uVar34 = -((uint)((ulong)pfVar29 >> 2) & 3) & 3; + uVar7 = uVar17; + if (uVar34 < uVar17) { + uVar7 = uVar34; + } + uVar34 = uVar13; + if (((uVar7 != 0) && + (param_3[lVar31] = fVar41 + fVar42 * (pfVar22[lVar31] - pfVar20[lVar31]), + uVar34 = uVar14, uVar7 != 1)) && + (*(float *)((long)param_3 + uVar33) = + fVar41 + fVar42 * (*(float *)((long)pfVar22 + uVar33) - + *(float *)((long)pfVar20 + uVar33)), uVar34 = uVar5, + uVar7 == 3)) { + *(float *)((long)param_3 + uVar32) = + fVar41 + fVar42 * (*(float *)((long)pfVar22 + uVar32) - + *(float *)((long)pfVar20 + uVar32)); + uVar34 = uVar6; + } + uVar36 = 0; + uVar26 = ((uVar17 - uVar7) - 4 >> 2) + 1; + iVar54 = uVar26 * 4; + pfVar37 = param_3 + (ulong)uVar7 + lVar31; + pfVar29 = pfVar20 + (ulong)uVar7 + lVar31; + pfVar35 = pfVar22 + (ulong)uVar7 + lVar31; + do { + uVar46 = *(undefined8 *)pfVar29; + uVar45 = *(undefined8 *)pfVar35; + uVar36 = uVar36 + 1; + *(ulong *)(pfVar37 + 2) = + CONCAT44(fVar41 + ((float)((ulong)*(undefined8 *)(pfVar35 + 2) >> 0x20) - + (float)((ulong)*(undefined8 *)(pfVar29 + 2) >> 0x20)) * + fVar42, + fVar41 + ((float)*(undefined8 *)(pfVar35 + 2) - + (float)*(undefined8 *)(pfVar29 + 2)) * fVar42); + *(ulong *)pfVar37 = + CONCAT44(fVar41 + ((float)((ulong)uVar45 >> 0x20) - + (float)((ulong)uVar46 >> 0x20)) * fVar42, + fVar41 + ((float)uVar45 - (float)uVar46) * fVar42); + pfVar37 = pfVar37 + 4; + pfVar29 = pfVar29 + 4; + pfVar35 = pfVar35 + 4; + } while (uVar36 < uVar26); + uVar34 = uVar34 + iVar54; + if (uVar17 - uVar7 != iVar54) { + uVar39 = -(ulong)(uVar34 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar34 << 2; + *(float *)((long)param_3 + uVar39) = + fVar41 + fVar42 * (*(float *)((long)pfVar22 + uVar39) - + *(float *)((long)pfVar20 + uVar39)); + if ((int)(uVar34 + 1) < param_6) { + lVar27 = uVar39 + 4; + *(float *)((long)param_3 + lVar27) = + fVar41 + fVar42 * (*(float *)((long)pfVar22 + lVar27) - + *(float *)((long)pfVar20 + lVar27)); + if ((int)(uVar34 + 2) < param_6) { + lVar27 = uVar39 + 8; + *(float *)((long)param_3 + lVar27) = + fVar41 + fVar42 * (*(float *)((long)pfVar22 + lVar27) - + *(float *)((long)pfVar20 + lVar27)); + } + } + } + } + } + } + } + else { + fVar44 = auVar51._0_4_; + fVar55 = auVar51._4_4_; + fVar56 = auVar51._8_4_; + fVar52 = auVar51._12_4_; + if (bVar19) { + if (0 < iVar15) { + if ((bVar1 || (param_3 < pfVar20 + 0x10 && pfVar20 < pfVar25 || + param_3 < pfVar22 + 0x10 && pfVar22 < pfVar25)) || + (param_3 < pfVar37 + 0x10 && pfVar37 < pfVar25)) { + pfVar29 = pfVar22 + 1; + pfVar35 = param_3; + pfVar38 = pfVar37; + pfVar40 = pfVar20; + do { + pfVar8 = pfVar29 + 4; + fVar43 = *pfVar38; + fVar47 = *pfVar40; + fVar48 = pfVar29[-1]; + pfVar35[1] = pfVar40[1] + pfVar38[1] * 2.0 + *pfVar29 + fVar41; + *pfVar35 = fVar47 + fVar43 * 2.0 + fVar48 + fVar41; + fVar43 = pfVar38[2]; + fVar47 = pfVar40[2]; + fVar48 = pfVar29[1]; + pfVar35[3] = pfVar40[3] + pfVar38[3] * 2.0 + pfVar29[2] + fVar41; + pfVar35[2] = fVar47 + fVar43 * 2.0 + fVar48 + fVar41; + pfVar29 = pfVar8; + pfVar35 = pfVar35 + 4; + pfVar38 = pfVar38 + 4; + pfVar40 = pfVar40 + 4; + } while (pfVar8 != pfVar22 + uVar3 * 4 + 5); + } + else { + lVar27 = 0; + uVar34 = 0; + do { + puVar10 = (undefined8 *)((long)param_3 + lVar27); + uVar58 = ((undefined8 *)((long)pfVar37 + lVar27))[1]; + uVar57 = *(undefined8 *)((long)pfVar37 + lVar27); + uVar34 = uVar34 + 1; + uVar46 = ((undefined8 *)((long)pfVar20 + lVar27))[1]; + uVar45 = *(undefined8 *)((long)pfVar20 + lVar27); + uVar50 = ((undefined8 *)((long)pfVar22 + lVar27))[1]; + uVar49 = *(undefined8 *)((long)pfVar22 + lVar27); + lVar27 = lVar27 + 0x10; + puVar10[1] = CONCAT44((float)((ulong)uVar46 >> 0x20) + + (float)((ulong)uVar58 >> 0x20) * fVar52 + + (float)((ulong)uVar50 >> 0x20) + fVar41, + (float)uVar46 + (float)uVar58 * fVar56 + (float)uVar50 + + fVar41); + *puVar10 = CONCAT44((float)((ulong)uVar45 >> 0x20) + + (float)((ulong)uVar57 >> 0x20) * fVar55 + + (float)((ulong)uVar49 >> 0x20) + fVar41, + (float)uVar45 + (float)uVar57 * fVar44 + (float)uVar49 + fVar41) + ; + } while (uVar34 < uVar4); + } + } + if ((int)uVar13 < param_6) { + pfVar29 = param_3 + lVar31; + pfVar35 = param_3 + lVar23; + pfVar38 = pfVar20 + lVar31; + if ((bVar2 || (pfVar29 < pfVar20 + lVar23 && pfVar38 < pfVar35 || + pfVar29 < pfVar22 + lVar23 && pfVar22 + lVar31 < pfVar35)) || + (pfVar29 < pfVar37 + lVar23 && pfVar37 + lVar31 < pfVar35)) { + lVar27 = 0; + do { + *(float *)((long)pfVar29 + lVar27) = + *(float *)((long)pfVar38 + lVar27) + + *(float *)((long)(pfVar37 + lVar31) + lVar27) * 2.0 + + *(float *)((long)(pfVar22 + lVar31) + lVar27) + fVar41; + lVar27 = lVar27 + 4; + } while (lVar27 != lVar30); + } + else { + uVar34 = -((uint)((ulong)pfVar38 >> 2) & 3) & 3; + if (uVar17 < uVar34) { + uVar34 = uVar17; + } + if (uVar34 == 0) { + uVar39 = (ulong)uVar13; + } + else { + param_3[lVar31] = pfVar20[lVar31] + pfVar37[lVar31] * 2.0 + pfVar22[lVar31] + fVar41 + ; + if (uVar34 == 1) { + uVar39 = (ulong)uVar14; + } + else { + *(float *)((long)param_3 + uVar33) = + *(float *)((long)pfVar20 + uVar33) + *(float *)((long)pfVar37 + uVar33) * 2.0 + + *(float *)((long)pfVar22 + uVar33) + fVar41; + if (uVar34 == 3) { + uVar39 = (ulong)uVar6; + *(float *)((long)param_3 + uVar32) = + *(float *)((long)pfVar20 + uVar32) + + *(float *)((long)pfVar37 + uVar32) * 2.0 + + *(float *)((long)pfVar22 + uVar32) + fVar41; + } + else { + uVar39 = (ulong)uVar5; + } + } + if (uVar34 == uVar17) goto LAB_001b717c; + } + uVar7 = ((uVar17 - uVar34) - 4 >> 2) + 1; + iVar54 = uVar7 * 4; + if (2 < iVar16 - uVar34) { + lVar27 = 0; + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + lVar11 = lVar27 + lVar24 + (ulong)uVar34 * 4; + lVar27 = lVar27 + 0x10; + uVar50 = ((undefined8 *)((long)pfVar22 + lVar11))[1]; + uVar49 = *(undefined8 *)((long)pfVar22 + lVar11); + uVar58 = ((undefined8 *)((long)pfVar37 + lVar11))[1]; + uVar57 = *(undefined8 *)((long)pfVar37 + lVar11); + uVar46 = ((undefined8 *)((long)pfVar20 + lVar11))[1]; + uVar45 = *(undefined8 *)((long)pfVar20 + lVar11); + ((undefined8 *)((long)param_3 + lVar11))[1] = + CONCAT44((float)((ulong)uVar46 >> 0x20) + + (float)((ulong)uVar58 >> 0x20) * fVar52 + + (float)((ulong)uVar50 >> 0x20) + fVar41, + (float)uVar46 + (float)uVar58 * fVar56 + (float)uVar50 + fVar41); + *(undefined8 *)((long)param_3 + lVar11) = + CONCAT44((float)((ulong)uVar45 >> 0x20) + + (float)((ulong)uVar57 >> 0x20) * fVar55 + + (float)((ulong)uVar49 >> 0x20) + fVar41, + (float)uVar45 + (float)uVar57 * fVar44 + (float)uVar49 + fVar41); + } while (uVar26 < uVar7); + uVar39 = (ulong)(uint)((int)uVar39 + iVar54); + if (iVar54 == uVar17 - uVar34) goto LAB_001b717c; + } + uVar28 = -(uVar39 >> 0x1f) & 0xfffffffc00000000 | uVar39 << 2; + *(float *)((long)param_3 + uVar28) = + *(float *)((long)pfVar20 + uVar28) + *(float *)((long)pfVar37 + uVar28) * 2.0 + + *(float *)((long)pfVar22 + uVar28) + fVar41; + if ((int)uVar39 + 1 < param_6) { + lVar27 = uVar28 + 4; + *(float *)((long)param_3 + lVar27) = + *(float *)((long)pfVar20 + lVar27) + *(float *)((long)pfVar37 + lVar27) * 2.0 + + *(float *)((long)pfVar22 + lVar27) + fVar41; + if ((int)uVar39 + 2 < param_6) { + lVar27 = uVar28 + 8; + *(float *)((long)param_3 + lVar27) = + *(float *)((long)pfVar20 + lVar27) + *(float *)((long)pfVar37 + lVar27) * 2.0 + + *(float *)((long)pfVar22 + lVar27) + fVar41; + } + } + } + } + } + else if (bVar18) { + if (0 < iVar15) { + if ((bVar1 || (param_3 < pfVar20 + 0x10 && pfVar20 < pfVar25 || + param_3 < pfVar22 + 0x10 && pfVar22 < pfVar25)) || + (param_3 < pfVar37 + 0x10 && pfVar37 < pfVar25)) { + pfVar29 = pfVar22 + 1; + pfVar35 = param_3; + pfVar38 = pfVar37; + pfVar40 = pfVar20; + do { + pfVar8 = pfVar29 + 4; + fVar43 = *pfVar38; + fVar47 = *pfVar40; + fVar48 = pfVar29[-1]; + pfVar35[1] = (pfVar40[1] - pfVar38[1] * 2.0) + *pfVar29 + fVar41; + *pfVar35 = (fVar47 - fVar43 * 2.0) + fVar48 + fVar41; + fVar43 = pfVar38[2]; + fVar47 = pfVar40[2]; + fVar48 = pfVar29[1]; + pfVar35[3] = (pfVar40[3] - pfVar38[3] * 2.0) + pfVar29[2] + fVar41; + pfVar35[2] = (fVar47 - fVar43 * 2.0) + fVar48 + fVar41; + pfVar29 = pfVar8; + pfVar35 = pfVar35 + 4; + pfVar38 = pfVar38 + 4; + pfVar40 = pfVar40 + 4; + } while (pfVar8 != pfVar22 + uVar3 * 4 + 5); + } + else { + lVar27 = 0; + uVar34 = 0; + do { + puVar10 = (undefined8 *)((long)param_3 + lVar27); + uVar58 = ((undefined8 *)((long)pfVar37 + lVar27))[1]; + uVar57 = *(undefined8 *)((long)pfVar37 + lVar27); + uVar34 = uVar34 + 1; + uVar46 = ((undefined8 *)((long)pfVar20 + lVar27))[1]; + uVar45 = *(undefined8 *)((long)pfVar20 + lVar27); + uVar50 = ((undefined8 *)((long)pfVar22 + lVar27))[1]; + uVar49 = *(undefined8 *)((long)pfVar22 + lVar27); + lVar27 = lVar27 + 0x10; + puVar10[1] = CONCAT44(((float)((ulong)uVar46 >> 0x20) - + (float)((ulong)uVar58 >> 0x20) * fVar52) + + (float)((ulong)uVar50 >> 0x20) + fVar41, + ((float)uVar46 - (float)uVar58 * fVar56) + (float)uVar50 + + fVar41); + *puVar10 = CONCAT44(((float)((ulong)uVar45 >> 0x20) - + (float)((ulong)uVar57 >> 0x20) * fVar55) + + (float)((ulong)uVar49 >> 0x20) + fVar41, + ((float)uVar45 - (float)uVar57 * fVar44) + (float)uVar49 + + fVar41); + } while (uVar34 < uVar4); + } + } + if ((int)uVar13 < param_6) { + pfVar29 = param_3 + lVar31; + pfVar35 = param_3 + lVar23; + pfVar38 = pfVar20 + lVar31; + if ((bVar2 || (pfVar29 < pfVar20 + lVar23 && pfVar38 < pfVar35 || + pfVar29 < pfVar22 + lVar23 && pfVar22 + lVar31 < pfVar35)) || + (pfVar29 < pfVar37 + lVar23 && pfVar37 + lVar31 < pfVar35)) { + lVar27 = 0; + do { + *(float *)((long)pfVar29 + lVar27) = + (*(float *)((long)pfVar38 + lVar27) - + *(float *)((long)(pfVar37 + lVar31) + lVar27) * 2.0) + + *(float *)((long)(pfVar22 + lVar31) + lVar27) + fVar41; + lVar27 = lVar27 + 4; + } while (lVar30 - lVar27 != 0); + } + else { + uVar34 = -((uint)((ulong)pfVar38 >> 2) & 3) & 3; + uVar7 = uVar17; + if (uVar34 < uVar17) { + uVar7 = uVar34; + } + if (uVar7 == 0) { + uVar39 = (ulong)uVar13; + } + else { + param_3[lVar31] = + (pfVar20[lVar31] - pfVar37[lVar31] * 2.0) + pfVar22[lVar31] + fVar41; + if (uVar7 == 1) { + uVar39 = (ulong)uVar14; + } + else { + *(float *)((long)param_3 + uVar33) = + (*(float *)((long)pfVar20 + uVar33) - + *(float *)((long)pfVar37 + uVar33) * 2.0) + + *(float *)((long)pfVar22 + uVar33) + fVar41; + if (uVar7 == 3) { + uVar39 = (ulong)uVar6; + *(float *)((long)param_3 + uVar32) = + (*(float *)((long)pfVar20 + uVar32) - + *(float *)((long)pfVar37 + uVar32) * 2.0) + + *(float *)((long)pfVar22 + uVar32) + fVar41; + } + else { + uVar39 = (ulong)uVar5; + } + } + if (uVar7 == uVar17) goto LAB_001b717c; + } + uVar34 = ((uVar17 - uVar7) - 4 >> 2) + 1; + iVar54 = uVar34 * 4; + if (2 < iVar16 - uVar7) { + lVar27 = 0; + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + lVar11 = lVar27 + lVar24 + (ulong)uVar7 * 4; + lVar27 = lVar27 + 0x10; + uVar50 = ((undefined8 *)((long)pfVar22 + lVar11))[1]; + uVar49 = *(undefined8 *)((long)pfVar22 + lVar11); + uVar58 = ((undefined8 *)((long)pfVar37 + lVar11))[1]; + uVar57 = *(undefined8 *)((long)pfVar37 + lVar11); + uVar46 = ((undefined8 *)((long)pfVar20 + lVar11))[1]; + uVar45 = *(undefined8 *)((long)pfVar20 + lVar11); + ((undefined8 *)((long)param_3 + lVar11))[1] = + CONCAT44(((float)((ulong)uVar46 >> 0x20) - + (float)((ulong)uVar58 >> 0x20) * fVar52) + + (float)((ulong)uVar50 >> 0x20) + fVar41, + ((float)uVar46 - (float)uVar58 * fVar56) + (float)uVar50 + fVar41); + *(undefined8 *)((long)param_3 + lVar11) = + CONCAT44(((float)((ulong)uVar45 >> 0x20) - + (float)((ulong)uVar57 >> 0x20) * fVar55) + + (float)((ulong)uVar49 >> 0x20) + fVar41, + ((float)uVar45 - (float)uVar57 * fVar44) + (float)uVar49 + fVar41); + } while (uVar26 < uVar34); + uVar39 = (ulong)(uint)((int)uVar39 + iVar54); + if (uVar17 - uVar7 == iVar54) goto LAB_001b717c; + } + uVar28 = -(uVar39 >> 0x1f) & 0xfffffffc00000000 | uVar39 << 2; + *(float *)((long)param_3 + uVar28) = + (*(float *)((long)pfVar20 + uVar28) - *(float *)((long)pfVar37 + uVar28) * 2.0) + + *(float *)((long)pfVar22 + uVar28) + fVar41; + if ((int)uVar39 + 1 < param_6) { + lVar27 = uVar28 + 4; + *(float *)((long)param_3 + lVar27) = + (*(float *)((long)pfVar20 + lVar27) - *(float *)((long)pfVar37 + lVar27) * 2.0) + + *(float *)((long)pfVar22 + lVar27) + fVar41; + if ((int)uVar39 + 2 < param_6) { + lVar27 = uVar28 + 8; + *(float *)((long)param_3 + lVar27) = + (*(float *)((long)pfVar20 + lVar27) - + *(float *)((long)pfVar37 + lVar27) * 2.0) + + *(float *)((long)pfVar22 + lVar27) + fVar41; + } + } + } + } + } + else { + if (0 < iVar15) { + if ((bVar1 || (param_3 < pfVar20 + 0x10 && pfVar20 < pfVar25 || + param_3 < pfVar22 + 0x10 && pfVar22 < pfVar25)) || + (param_3 < pfVar37 + 0x10 && pfVar37 < pfVar25)) { + pfVar29 = pfVar37 + 1; + pfVar35 = param_3; + pfVar38 = pfVar22; + pfVar40 = pfVar20; + do { + pfVar8 = pfVar29 + 4; + fVar56 = *pfVar38; + fVar55 = pfVar29[-1]; + fVar44 = *pfVar40; + pfVar35[1] = fVar53 * *pfVar29 + fVar42 * (pfVar40[1] + pfVar38[1]) + fVar41; + *pfVar35 = fVar53 * fVar55 + fVar42 * (fVar44 + fVar56) + fVar41; + fVar55 = pfVar29[1]; + fVar44 = pfVar40[2]; + fVar56 = pfVar38[2]; + pfVar35[3] = fVar53 * pfVar29[2] + fVar42 * (pfVar40[3] + pfVar38[3]) + fVar41; + pfVar35[2] = fVar53 * fVar55 + fVar42 * (fVar44 + fVar56) + fVar41; + pfVar29 = pfVar8; + pfVar35 = pfVar35 + 4; + pfVar38 = pfVar38 + 4; + pfVar40 = pfVar40 + 4; + } while (pfVar8 != pfVar37 + uVar3 * 4 + 5); + } + else { + lVar27 = 0; + uVar34 = 0; + do { + puVar10 = (undefined8 *)((long)param_3 + lVar27); + uVar50 = ((undefined8 *)((long)pfVar20 + lVar27))[1]; + uVar49 = *(undefined8 *)((long)pfVar20 + lVar27); + uVar34 = uVar34 + 1; + uVar58 = ((undefined8 *)((long)pfVar22 + lVar27))[1]; + uVar57 = *(undefined8 *)((long)pfVar22 + lVar27); + uVar46 = ((undefined8 *)((long)pfVar37 + lVar27))[1]; + uVar45 = *(undefined8 *)((long)pfVar37 + lVar27); + lVar27 = lVar27 + 0x10; + puVar10[1] = CONCAT44(fVar53 * (float)((ulong)uVar46 >> 0x20) + + ((float)((ulong)uVar50 >> 0x20) + + (float)((ulong)uVar58 >> 0x20)) * fVar42 + fVar41, + fVar53 * (float)uVar46 + + ((float)uVar50 + (float)uVar58) * fVar42 + fVar41); + *puVar10 = CONCAT44(fVar53 * (float)((ulong)uVar45 >> 0x20) + + ((float)((ulong)uVar49 >> 0x20) + (float)((ulong)uVar57 >> 0x20) + ) * fVar42 + fVar41, + fVar53 * (float)uVar45 + + ((float)uVar49 + (float)uVar57) * fVar42 + fVar41); + } while (uVar34 < uVar4); + } + } + if ((int)uVar13 < param_6) { + pfVar29 = param_3 + lVar31; + pfVar35 = param_3 + lVar23; + pfVar38 = pfVar20 + lVar31; + if ((bVar2 || (pfVar29 < pfVar20 + lVar23 && pfVar38 < pfVar35 || + pfVar29 < pfVar22 + lVar23 && pfVar22 + lVar31 < pfVar35)) || + (pfVar29 < pfVar37 + lVar23 && pfVar37 + lVar31 < pfVar35)) { + lVar27 = 0; + do { + *(float *)((long)pfVar29 + lVar27) = + fVar53 * *(float *)((long)(pfVar37 + lVar31) + lVar27) + + fVar42 * (*(float *)((long)pfVar38 + lVar27) + + *(float *)((long)(pfVar22 + lVar31) + lVar27)) + fVar41; + lVar27 = lVar27 + 4; + } while (lVar30 - lVar27 != 0); + } + else { + uVar34 = -((uint)((ulong)pfVar38 >> 2) & 3) & 3; + uVar7 = uVar17; + if (uVar34 < uVar17) { + uVar7 = uVar34; + } + if (uVar7 == 0) { + uVar39 = (ulong)uVar13; + } + else { + param_3[lVar31] = + fVar53 * pfVar37[lVar31] + fVar42 * (pfVar20[lVar31] + pfVar22[lVar31]) + + fVar41; + if (uVar7 == 1) { + uVar39 = (ulong)uVar14; + } + else { + *(float *)((long)param_3 + uVar33) = + fVar53 * *(float *)((long)pfVar37 + uVar33) + + fVar42 * (*(float *)((long)pfVar20 + uVar33) + + *(float *)((long)pfVar22 + uVar33)) + fVar41; + if (uVar7 == 3) { + uVar39 = (ulong)uVar6; + *(float *)((long)param_3 + uVar32) = + fVar53 * *(float *)((long)pfVar37 + uVar32) + + fVar42 * (*(float *)((long)pfVar20 + uVar32) + + *(float *)((long)pfVar22 + uVar32)) + fVar41; + } + else { + uVar39 = (ulong)uVar5; + } + } + if (uVar17 == uVar7) goto LAB_001b717c; + } + uVar34 = ((uVar17 - uVar7) - 4 >> 2) + 1; + iVar54 = uVar34 * 4; + if (2 < iVar16 - uVar7) { + lVar27 = 0; + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + lVar11 = lVar27 + lVar24 + (ulong)uVar7 * 4; + lVar27 = lVar27 + 0x10; + uVar46 = ((undefined8 *)((long)pfVar37 + lVar11))[1]; + uVar45 = *(undefined8 *)((long)pfVar37 + lVar11); + uVar50 = ((undefined8 *)((long)pfVar22 + lVar11))[1]; + uVar49 = *(undefined8 *)((long)pfVar22 + lVar11); + uVar58 = ((undefined8 *)((long)pfVar20 + lVar11))[1]; + uVar57 = *(undefined8 *)((long)pfVar20 + lVar11); + ((undefined8 *)((long)param_3 + lVar11))[1] = + CONCAT44(fVar53 * (float)((ulong)uVar46 >> 0x20) + + ((float)((ulong)uVar50 >> 0x20) + (float)((ulong)uVar58 >> 0x20)) * + fVar42 + fVar41, + fVar53 * (float)uVar46 + ((float)uVar50 + (float)uVar58) * fVar42 + + fVar41); + *(undefined8 *)((long)param_3 + lVar11) = + CONCAT44(fVar53 * (float)((ulong)uVar45 >> 0x20) + + ((float)((ulong)uVar49 >> 0x20) + (float)((ulong)uVar57 >> 0x20)) * + fVar42 + fVar41, + fVar53 * (float)uVar45 + ((float)uVar49 + (float)uVar57) * fVar42 + + fVar41); + } while (uVar26 < uVar34); + uVar39 = (ulong)(uint)((int)uVar39 + iVar54); + if (uVar17 - uVar7 == iVar54) goto LAB_001b717c; + } + uVar28 = -(uVar39 >> 0x1f) & 0xfffffffc00000000 | uVar39 << 2; + *(float *)((long)param_3 + uVar28) = + fVar53 * *(float *)((long)pfVar37 + uVar28) + + fVar42 * (*(float *)((long)pfVar20 + uVar28) + *(float *)((long)pfVar22 + uVar28) + ) + fVar41; + if ((int)uVar39 + 1 < param_6) { + lVar27 = uVar28 + 4; + *(float *)((long)param_3 + lVar27) = + fVar53 * *(float *)((long)pfVar37 + lVar27) + + fVar42 * (*(float *)((long)pfVar20 + lVar27) + + *(float *)((long)pfVar22 + lVar27)) + fVar41; + if ((int)uVar39 + 2 < param_6) { + lVar27 = uVar28 + 8; + *(float *)((long)param_3 + lVar27) = + fVar53 * *(float *)((long)pfVar37 + lVar27) + + fVar42 * (*(float *)((long)pfVar20 + lVar27) + + *(float *)((long)pfVar22 + lVar27)) + fVar41; + } + } + } + } + } + } +LAB_001b717c: + puVar21 = puVar21 + 1; + param_3 = (float *)((long)param_3 + (long)param_4); + pfVar25 = (float *)((long)pfVar25 + (long)param_4); + } while (puVar21 != puVar9); + } + return; +} + + +================================================================== + +### FUNC 001b8070 (1012 bytes) name=FUN_001b8070 + +void FUN_001b8070(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + float *pfVar2; + long *plVar3; + long lVar4; + long lVar5; + undefined8 *puVar6; + int iVar7; + uint uVar8; + int iVar9; + float *pfVar10; + long lVar11; + long *plVar12; + long *plVar13; + long *plVar14; + int iVar15; + float *pfVar16; + long *plVar17; + long *plVar18; + long lVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + + iVar7 = *(int *)(param_1 + 8) / 2; + fVar25 = *(float *)(param_1 + 0x74); + pfVar2 = (float *)(*(long *)(param_1 + 0x20) + (long)iVar7 * 4); + plVar17 = (long *)(param_2 + (long)iVar7 * 8); + if ((*(uint *)(param_1 + 0x78) & 1) == 0) { + if (param_5 != 0) { + iVar9 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar9 < 1) { + iVar1 = 0; + } + plVar18 = plVar17 + -1; + plVar3 = plVar17 + (param_5 - 1); + lVar19 = ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4; + do { + plVar17 = plVar17 + 1; + if (0 < iVar9) { + lVar11 = 0; + iVar15 = 0; + do { + plVar12 = plVar18; + plVar13 = plVar17; + fVar21 = fVar25; + fVar22 = fVar25; + fVar23 = fVar25; + fVar24 = fVar25; + pfVar16 = pfVar2; + if (0 < iVar7) { + do { + plVar14 = plVar12 + -1; + lVar4 = *plVar12 + lVar11; + lVar5 = *plVar13 + lVar11; + fVar20 = pfVar16[1]; + fVar21 = fVar21 + fVar20 * (*(float *)(*plVar13 + lVar11) - + *(float *)(*plVar12 + lVar11)); + fVar22 = fVar22 + fVar20 * (*(float *)(lVar5 + 4) - *(float *)(lVar4 + 4)); + fVar23 = fVar23 + fVar20 * (*(float *)(lVar5 + 8) - *(float *)(lVar4 + 8)); + fVar24 = fVar24 + fVar20 * (*(float *)(lVar5 + 0xc) - *(float *)(lVar4 + 0xc)); + plVar12 = plVar14; + plVar13 = plVar13 + 1; + pfVar16 = pfVar16 + 1; + } while (plVar17 + (-3 - (ulong)(iVar7 - 1)) != plVar14); + } + puVar6 = (undefined8 *)(param_3 + lVar11); + iVar15 = iVar15 + 4; + lVar11 = lVar11 + 0x10; + puVar6[1] = CONCAT44(fVar24,fVar23); + *puVar6 = CONCAT44(fVar22,fVar21); + } while (iVar15 < iVar9); + } + if (iVar1 < param_6) { + lVar11 = (long)iVar1 << 2; + do { + while (plVar12 = plVar17, plVar13 = plVar18, fVar21 = fVar25, pfVar16 = pfVar2, + iVar7 < 1) { + *(float *)(param_3 + lVar11) = fVar25; + lVar11 = lVar11 + 4; + if (lVar11 == lVar19) goto LAB_001b8230; + } + do { + plVar14 = plVar12 + 1; + fVar21 = fVar21 + (*(float *)(*plVar12 + lVar11) - *(float *)(*plVar13 + lVar11)) * + pfVar16[1]; + plVar12 = plVar14; + plVar13 = plVar13 + -1; + pfVar16 = pfVar16 + 1; + } while (plVar14 != plVar17 + (ulong)(iVar7 - 1) + 1); + *(float *)(param_3 + lVar11) = fVar21; + lVar11 = lVar11 + 4; + } while (lVar11 != lVar19); + } +LAB_001b8230: + plVar18 = plVar18 + 1; + param_3 = param_3 + param_4; + } while (plVar18 != plVar3); + } + } + else if (param_5 != 0) { + uVar8 = param_6 - 4U >> 2; + iVar1 = (uVar8 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + plVar18 = plVar17 + -1; + plVar3 = plVar17 + (param_5 - 1); + do { + plVar17 = plVar17 + 1; + if (0 < param_6 + -3) { + pfVar16 = (float *)plVar18[1]; + lVar19 = 0; + do { + fVar21 = *pfVar2; + fVar24 = fVar25 + fVar21 * *pfVar16; + fVar23 = fVar25 + fVar21 * pfVar16[1]; + fVar22 = fVar25 + fVar21 * pfVar16[2]; + fVar21 = fVar25 + fVar21 * pfVar16[3]; + plVar12 = plVar18; + plVar13 = plVar17; + pfVar10 = pfVar2; + if (0 < iVar7) { + do { + plVar14 = plVar12 + -1; + lVar11 = *plVar12 + lVar19; + lVar4 = *plVar13 + lVar19; + fVar20 = pfVar10[1]; + fVar24 = fVar24 + fVar20 * (*(float *)(*plVar13 + lVar19) + + *(float *)(*plVar12 + lVar19)); + fVar23 = fVar23 + fVar20 * (*(float *)(lVar4 + 4) + *(float *)(lVar11 + 4)); + fVar22 = fVar22 + fVar20 * (*(float *)(lVar4 + 8) + *(float *)(lVar11 + 8)); + fVar21 = fVar21 + fVar20 * (*(float *)(lVar4 + 0xc) + *(float *)(lVar11 + 0xc)); + plVar12 = plVar14; + plVar13 = plVar13 + 1; + pfVar10 = pfVar10 + 1; + } while (plVar18 + (-1 - (ulong)(iVar7 - 1)) != plVar14); + } + puVar6 = (undefined8 *)(param_3 + lVar19); + lVar19 = lVar19 + 0x10; + pfVar16 = pfVar16 + 4; + puVar6[1] = CONCAT44(fVar21,fVar22); + *puVar6 = CONCAT44(fVar23,fVar24); + } while (lVar19 != ((ulong)uVar8 + 1) * 0x10); + } + if (iVar1 < param_6) { + lVar11 = plVar18[1]; + lVar19 = (long)iVar1 << 2; + do { + fVar21 = fVar25 + *(float *)(lVar11 + lVar19) * *pfVar2; + plVar12 = plVar17; + plVar13 = plVar18; + pfVar16 = pfVar2; + if (0 < iVar7) { + do { + plVar14 = plVar12 + 1; + fVar21 = fVar21 + (*(float *)(*plVar12 + lVar19) + *(float *)(*plVar13 + lVar19)) * + pfVar16[1]; + plVar12 = plVar14; + plVar13 = plVar13 + -1; + pfVar16 = pfVar16 + 1; + } while (plVar18 + (ulong)(iVar7 - 1) + 3 != plVar14); + } + *(float *)(param_3 + lVar19) = fVar21; + lVar19 = lVar19 + 4; + } while (lVar19 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4); + } + plVar18 = plVar18 + 1; + param_3 = param_3 + param_4; + } while (plVar18 != plVar3); + return; + } + return; +} + + +================================================================== + +### FUNC 001b8464 (400 bytes) name=FUN_001b8464 + +void FUN_001b8464(long param_1,long *param_2,long param_3,int param_4,int param_5,int param_6) + +{ + undefined8 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + long *plVar6; + long *plVar7; + long *plVar8; + long lVar9; + long lVar10; + float *pfVar11; + float *pfVar12; + long *plVar13; + int iVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + + iVar14 = param_5 + -1; + pfVar12 = *(float **)(param_1 + 0x20); + fVar20 = *(float *)(param_1 + 0x74); + iVar2 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar4 = param_6 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_6 + -3 < 1) { + iVar3 = 0; + } + plVar7 = param_2 + (ulong)(iVar2 - 2) + 2; + do { + plVar13 = param_2 + 1; + if (0 < param_6 + -3) { + pfVar11 = (float *)*param_2; + lVar9 = 0; + do { + fVar16 = *pfVar12; + fVar19 = fVar20 + fVar16 * *pfVar11; + fVar18 = fVar20 + fVar16 * pfVar11[1]; + fVar17 = fVar20 + fVar16 * pfVar11[2]; + fVar16 = fVar20 + fVar16 * pfVar11[3]; + plVar6 = plVar13; + pfVar5 = pfVar12; + if (1 < iVar2) { + do { + plVar8 = plVar6 + 1; + fVar15 = pfVar5[1]; + lVar10 = *plVar6 + lVar9; + fVar19 = fVar19 + fVar15 * *(float *)(*plVar6 + lVar9); + fVar18 = fVar18 + fVar15 * *(float *)(lVar10 + 4); + fVar17 = fVar17 + fVar15 * *(float *)(lVar10 + 8); + fVar16 = fVar16 + fVar15 * *(float *)(lVar10 + 0xc); + plVar6 = plVar8; + pfVar5 = pfVar5 + 1; + } while (plVar7 != plVar8); + } + puVar1 = (undefined8 *)(param_3 + lVar9); + lVar9 = lVar9 + 0x10; + pfVar11 = pfVar11 + 4; + puVar1[1] = CONCAT44(fVar16,fVar17); + *puVar1 = CONCAT44(fVar18,fVar19); + } while (lVar9 != ((ulong)uVar4 + 1) * 0x10); + } + if (iVar3 < param_6) { + lVar10 = *param_2; + lVar9 = (long)iVar3 << 2; + do { + fVar16 = fVar20 + *(float *)(lVar10 + lVar9) * *pfVar12; + plVar6 = plVar13; + pfVar11 = pfVar12; + if (1 < iVar2) { + do { + plVar8 = plVar6 + 1; + fVar16 = fVar16 + *(float *)(*plVar6 + lVar9) * pfVar11[1]; + plVar6 = plVar8; + pfVar11 = pfVar11 + 1; + } while (plVar7 != plVar8); + } + *(float *)(param_3 + lVar9) = fVar16; + lVar9 = lVar9 + 4; + } while (lVar9 != ((long)iVar3 + 1 + (ulong)(uint)((param_6 + -1) - iVar3)) * 4); + } + iVar14 = iVar14 + -1; + param_3 = param_3 + param_4; + plVar7 = plVar7 + 1; + param_2 = plVar13; + } while (iVar14 != -1); + } + return; +} + + +================================================================== + +### FUNC 001b85f4 (448 bytes) name=FUN_001b85f4 + +void FUN_001b85f4(long param_1,long *param_2,double *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + double *pdVar4; + long *plVar5; + long *plVar6; + long *plVar7; + long lVar8; + long lVar9; + double *pdVar10; + double *pdVar11; + double *pdVar12; + int iVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + + iVar13 = param_5 + -1; + pdVar11 = *(double **)(param_1 + 0x20); + dVar19 = *(double *)(param_1 + 0x78); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + do { + plVar5 = param_2 + 1; + if (0 < param_6 + -3) { + pdVar10 = (double *)*param_2; + lVar8 = 0; + pdVar12 = param_3; + do { + dVar15 = *pdVar11; + dVar18 = dVar19 + dVar15 * *pdVar10; + dVar17 = dVar19 + dVar15 * pdVar10[1]; + dVar16 = dVar19 + dVar15 * pdVar10[2]; + dVar15 = dVar19 + dVar15 * pdVar10[3]; + plVar7 = plVar5; + pdVar4 = pdVar11; + if (1 < iVar1) { + do { + plVar6 = plVar7 + 1; + dVar14 = pdVar4[1]; + lVar9 = *plVar7 + lVar8; + dVar18 = dVar18 + dVar14 * *(double *)(*plVar7 + lVar8); + dVar17 = dVar17 + dVar14 * *(double *)(lVar9 + 8); + dVar16 = dVar16 + dVar14 * *(double *)(lVar9 + 0x10); + dVar15 = dVar15 + dVar14 * *(double *)(lVar9 + 0x18); + plVar7 = plVar6; + pdVar4 = pdVar4 + 1; + } while (plVar5 + (ulong)(iVar1 - 2) + 1 != plVar6); + } + lVar8 = lVar8 + 0x20; + pdVar10 = pdVar10 + 4; + pdVar12[1] = dVar17; + *pdVar12 = dVar18; + pdVar12[3] = dVar15; + pdVar12[2] = dVar16; + pdVar12 = pdVar12 + 4; + } while (lVar8 != ((ulong)uVar3 + 1) * 0x20); + } + if (iVar2 < param_6) { + lVar9 = *param_2; + lVar8 = (long)iVar2 << 3; + do { + dVar15 = dVar19 + *(double *)(lVar9 + lVar8) * *pdVar11; + if (1 < iVar1) { + pdVar10 = pdVar11 + 1; + plVar7 = plVar5; + do { + pdVar12 = pdVar10 + 1; + dVar15 = dVar15 + *(double *)(*plVar7 + lVar8) * *pdVar10; + pdVar10 = pdVar12; + plVar7 = plVar7 + 1; + } while (pdVar12 != pdVar11 + (ulong)(iVar1 - 2) + 2); + } + *(double *)((long)param_3 + lVar8) = dVar15; + lVar8 = lVar8 + 8; + } while (lVar8 != ((long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 8); + } + iVar13 = iVar13 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = plVar5; + } while (iVar13 != -1); + } + return; +} + + +================================================================== + +### FUNC 001b87b4 (400 bytes) name=FUN_001b87b4 + +void FUN_001b87b4(long param_1,long *param_2,long param_3,int param_4,int param_5,int param_6) + +{ + undefined8 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + long *plVar6; + long *plVar7; + long *plVar8; + long lVar9; + long lVar10; + float *pfVar11; + float *pfVar12; + long *plVar13; + int iVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + + iVar14 = param_5 + -1; + pfVar12 = *(float **)(param_1 + 0x20); + fVar20 = *(float *)(param_1 + 0x74); + iVar2 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar4 = param_6 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_6 + -3 < 1) { + iVar3 = 0; + } + plVar7 = param_2 + (ulong)(iVar2 - 2) + 2; + do { + plVar13 = param_2 + 1; + if (0 < param_6 + -3) { + pfVar11 = (float *)*param_2; + lVar9 = 0; + do { + fVar16 = *pfVar12; + fVar19 = fVar20 + fVar16 * *pfVar11; + fVar18 = fVar20 + fVar16 * pfVar11[1]; + fVar17 = fVar20 + fVar16 * pfVar11[2]; + fVar16 = fVar20 + fVar16 * pfVar11[3]; + plVar6 = plVar13; + pfVar5 = pfVar12; + if (1 < iVar2) { + do { + plVar8 = plVar6 + 1; + fVar15 = pfVar5[1]; + lVar10 = *plVar6 + lVar9; + fVar19 = fVar19 + fVar15 * *(float *)(*plVar6 + lVar9); + fVar18 = fVar18 + fVar15 * *(float *)(lVar10 + 4); + fVar17 = fVar17 + fVar15 * *(float *)(lVar10 + 8); + fVar16 = fVar16 + fVar15 * *(float *)(lVar10 + 0xc); + plVar6 = plVar8; + pfVar5 = pfVar5 + 1; + } while (plVar7 != plVar8); + } + puVar1 = (undefined8 *)(param_3 + lVar9); + lVar9 = lVar9 + 0x10; + pfVar11 = pfVar11 + 4; + puVar1[1] = CONCAT44(fVar16,fVar17); + *puVar1 = CONCAT44(fVar18,fVar19); + } while (lVar9 != ((ulong)uVar4 + 1) * 0x10); + } + if (iVar3 < param_6) { + lVar10 = *param_2; + lVar9 = (long)iVar3 << 2; + do { + fVar16 = fVar20 + *(float *)(lVar10 + lVar9) * *pfVar12; + plVar6 = plVar13; + pfVar11 = pfVar12; + if (1 < iVar2) { + do { + plVar8 = plVar6 + 1; + fVar16 = fVar16 + *(float *)(*plVar6 + lVar9) * pfVar11[1]; + plVar6 = plVar8; + pfVar11 = pfVar11 + 1; + } while (plVar7 != plVar8); + } + *(float *)(param_3 + lVar9) = fVar16; + lVar9 = lVar9 + 4; + } while (lVar9 != ((long)iVar3 + 1 + (ulong)(uint)((param_6 + -1) - iVar3)) * 4); + } + iVar14 = iVar14 + -1; + param_3 = param_3 + param_4; + plVar7 = plVar7 + 1; + param_2 = plVar13; + } while (iVar14 != -1); + } + return; +} + + +================================================================== + +### FUNC 001b8944 (580 bytes) name=FUN_001b8944 + +void FUN_001b8944(long param_1,long *param_2,undefined1 *param_3,int param_4,int param_5,int param_6 + ) + +{ + long lVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int *piVar9; + uint uVar10; + long *plVar11; + long *plVar12; + long *plVar13; + long *plVar14; + int iVar15; + int iVar16; + int iVar17; + undefined1 *puVar18; + int iVar19; + long lVar20; + int *piVar21; + int iVar22; + long lVar23; + long lVar24; + + iVar22 = param_5 + -1; + piVar21 = *(int **)(param_1 + 0x20); + iVar2 = *(int *)(param_1 + 0x7c); + iVar3 = *(int *)(param_1 + 8); + uVar4 = *(uint *)(param_1 + 0x70); + iVar5 = *(int *)(param_1 + 0x74); + if (param_5 != 0) { + uVar8 = param_6 - 4U >> 2; + iVar7 = (uVar8 + 1) * 4; + if (param_6 + -3 < 1) { + iVar7 = 0; + } + lVar23 = (long)iVar7; + plVar12 = param_2 + (ulong)(iVar3 - 2) + 2; + lVar24 = NEON_shl(lVar23,2); + do { + plVar13 = param_2 + 1; + if (0 < param_6 + -3) { + lVar20 = 0; + puVar18 = param_3; + do { + iVar15 = *piVar21; + lVar1 = *param_2 + lVar20; + iVar19 = iVar2 + iVar15 * *(int *)(*param_2 + lVar20); + iVar17 = iVar2 + iVar15 * *(int *)(lVar1 + 4); + iVar16 = iVar2 + iVar15 * *(int *)(lVar1 + 8); + iVar15 = iVar2 + iVar15 * *(int *)(lVar1 + 0xc); + plVar11 = plVar13; + piVar9 = piVar21; + if (1 < iVar3) { + do { + plVar14 = plVar11 + 1; + iVar6 = piVar9[1]; + lVar1 = *plVar11 + lVar20; + iVar19 = iVar19 + iVar6 * *(int *)(*plVar11 + lVar20); + iVar17 = iVar17 + iVar6 * *(int *)(lVar1 + 4); + iVar16 = iVar16 + iVar6 * *(int *)(lVar1 + 8); + iVar15 = iVar15 + iVar6 * *(int *)(lVar1 + 0xc); + plVar11 = plVar14; + piVar9 = piVar9 + 1; + } while (plVar12 != plVar14); + } + uVar10 = iVar19 + iVar5 >> (uVar4 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *puVar18 = (char)uVar10; + uVar10 = iVar17 + iVar5 >> (uVar4 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar18[1] = (char)uVar10; + uVar10 = iVar16 + iVar5 >> (uVar4 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar18[2] = (char)uVar10; + uVar10 = iVar15 + iVar5 >> (uVar4 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar20 = lVar20 + 0x10; + puVar18[3] = (char)uVar10; + puVar18 = puVar18 + 4; + } while (lVar20 != ((ulong)uVar8 + 1) * 0x10); + } + lVar20 = lVar24; + puVar18 = param_3 + lVar23; + if (iVar7 < param_6) { + do { + iVar15 = iVar2 + *piVar21 * *(int *)(*param_2 + lVar20); + plVar11 = plVar13; + piVar9 = piVar21; + if (1 < iVar3) { + do { + plVar14 = plVar11 + 1; + iVar15 = iVar15 + piVar9[1] * *(int *)(*plVar11 + lVar20); + plVar11 = plVar14; + piVar9 = piVar9 + 1; + } while (plVar12 != plVar14); + } + uVar10 = iVar15 + iVar5 >> (uVar4 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar20 = lVar20 + 4; + *puVar18 = (char)uVar10; + puVar18 = puVar18 + 1; + } while (lVar20 != (lVar23 + 1 + (ulong)(uint)((param_6 + -1) - iVar7)) * 4); + } + iVar22 = iVar22 + -1; + param_3 = param_3 + param_4; + plVar12 = plVar12 + 1; + param_2 = plVar13; + } while (iVar22 != -1); + } + return; +} + + +================================================================== + +### FUNC 001b8b88 (388 bytes) name=FUN_001b8b88 + +void FUN_001b8b88(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + double *pdVar1; + int iVar2; + uint uVar3; + long lVar4; + double *pdVar5; + double *pdVar6; + double *pdVar7; + double *pdVar8; + int iVar10; + double *pdVar11; + ulong uVar12; + double *pdVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double *pdVar9; + + param_4 = param_4 * (int)param_5; + iVar2 = *(int *)(param_1 + 8); + pdVar13 = *(double **)(param_1 + 0x20); + if (param_4 < 4) { + iVar10 = 0; + } + else { + uVar3 = param_4 - 4U >> 2; + uVar12 = -(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3; + pdVar6 = (double *)(param_2 + 8); + pdVar7 = param_3; + do { + dVar14 = *pdVar13; + dVar18 = dVar14 * pdVar6[-1]; + dVar17 = dVar14 * *pdVar6; + dVar16 = dVar14 * pdVar6[1]; + dVar14 = dVar14 * pdVar6[2]; + if (1 < iVar2) { + pdVar5 = (double *)((uVar12 - 8) + (long)pdVar6); + pdVar8 = pdVar13 + 1; + do { + pdVar11 = pdVar8 + 1; + dVar15 = *pdVar8; + dVar19 = *pdVar5; + pdVar8 = pdVar5 + 1; + pdVar9 = pdVar5 + 2; + pdVar1 = pdVar5 + 3; + pdVar5 = (double *)((long)pdVar5 + uVar12); + dVar18 = dVar18 + dVar15 * dVar19; + dVar17 = dVar17 + dVar15 * *pdVar8; + dVar16 = dVar16 + dVar15 * *pdVar9; + dVar14 = dVar14 + dVar15 * *pdVar1; + pdVar8 = pdVar11; + } while (pdVar11 != pdVar13 + (ulong)(iVar2 - 2) + 2); + } + pdVar6 = pdVar6 + 4; + pdVar7[1] = dVar17; + *pdVar7 = dVar18; + pdVar7[3] = dVar14; + pdVar7[2] = dVar16; + pdVar7 = pdVar7 + 4; + } while (pdVar6 != (double *)(param_2 + (ulong)uVar3 * 0x20 + 0x28)); + iVar10 = (uVar3 + 1) * 4; + } + if (iVar10 < param_4) { + lVar4 = (long)iVar10; + pdVar6 = (double *)(param_2 + lVar4 * 8); + pdVar7 = param_3 + lVar4; + do { + dVar14 = *pdVar13 * *pdVar6; + if (1 < iVar2) { + pdVar5 = pdVar6; + pdVar8 = pdVar13 + 1; + do { + pdVar9 = pdVar8 + 1; + pdVar5 = (double *) + ((long)pdVar5 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + dVar14 = dVar14 + *pdVar5 * *pdVar8; + pdVar8 = pdVar9; + } while (pdVar9 != pdVar13 + (ulong)(iVar2 - 2) + 2); + } + pdVar6 = pdVar6 + 1; + *pdVar7 = dVar14; + pdVar7 = pdVar7 + 1; + } while (pdVar6 != (double *) + (param_2 + (lVar4 + 1 + (ulong)(uint)((param_4 + -1) - iVar10)) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001b8d0c (420 bytes) name=FUN_001b8d0c + +void FUN_001b8d0c(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + int iVar4; + uint uVar5; + long lVar6; + float *pfVar7; + double *pdVar8; + double *pdVar9; + int iVar10; + double *pdVar11; + float *pfVar12; + ulong uVar13; + double *pdVar14; + double dVar15; + double dVar16; + float fVar17; + double dVar18; + double dVar19; + double dVar20; + + param_4 = param_4 * (int)param_5; + iVar4 = *(int *)(param_1 + 8); + pdVar14 = *(double **)(param_1 + 0x20); + if (param_4 < 4) { + iVar10 = 0; + } + else { + uVar13 = -(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2; + uVar5 = param_4 - 4U >> 2; + pfVar12 = (float *)(param_2 + 4); + pdVar8 = param_3; + do { + dVar15 = *pdVar14; + dVar20 = (double)pfVar12[-1] * dVar15; + dVar19 = (double)*pfVar12 * dVar15; + dVar18 = (double)pfVar12[1] * dVar15; + dVar15 = (double)pfVar12[2] * dVar15; + if (1 < iVar4) { + pfVar7 = (float *)((uVar13 - 4) + (long)pfVar12); + pdVar9 = pdVar14 + 1; + do { + pdVar11 = pdVar9 + 1; + dVar16 = *pdVar9; + fVar17 = *pfVar7; + pfVar1 = pfVar7 + 1; + pfVar2 = pfVar7 + 2; + pfVar3 = pfVar7 + 3; + pfVar7 = (float *)((long)pfVar7 + uVar13); + dVar20 = dVar20 + dVar16 * (double)fVar17; + dVar19 = dVar19 + dVar16 * (double)*pfVar1; + dVar18 = dVar18 + dVar16 * (double)*pfVar2; + dVar15 = dVar15 + dVar16 * (double)*pfVar3; + pdVar9 = pdVar11; + } while (pdVar11 != pdVar14 + (ulong)(iVar4 - 2) + 2); + } + pfVar12 = pfVar12 + 4; + pdVar8[1] = dVar19; + *pdVar8 = dVar20; + pdVar8[3] = dVar15; + pdVar8[2] = dVar18; + pdVar8 = pdVar8 + 4; + } while (pfVar12 != (float *)(param_2 + (ulong)uVar5 * 0x10 + 0x14)); + iVar10 = (uVar5 + 1) * 4; + } + if (iVar10 < param_4) { + lVar6 = (long)iVar10; + pfVar12 = (float *)(param_2 + lVar6 * 4); + pdVar8 = param_3 + lVar6; + do { + dVar15 = (double)*pfVar12 * *pdVar14; + if (1 < iVar4) { + pfVar7 = pfVar12; + pdVar9 = pdVar14 + 1; + do { + pfVar7 = (float *)((long)pfVar7 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + pdVar11 = pdVar9 + 1; + dVar15 = dVar15 + (double)*pfVar7 * *pdVar9; + pdVar9 = pdVar11; + } while (pdVar11 != pdVar14 + (ulong)(iVar4 - 2) + 2); + } + pfVar12 = pfVar12 + 1; + *pdVar8 = dVar15; + pdVar8 = pdVar8 + 1; + } while (pfVar12 != + (float *)(param_2 + (lVar6 + 1 + (ulong)(uint)((param_4 + -1) - iVar10)) * 4)); + } + return; +} + + +================================================================== + +### FUNC 001b8eb0 (364 bytes) name=FUN_001b8eb0 + +void FUN_001b8eb0(long param_1,long param_2,undefined8 *param_3,int param_4,ulong param_5) + +{ + int iVar1; + uint uVar2; + float *pfVar3; + long lVar4; + float *pfVar5; + float *pfVar6; + float *pfVar7; + int iVar9; + float *pfVar10; + ulong uVar11; + float *pfVar12; + undefined8 *puVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float *pfVar8; + + param_4 = param_4 * (int)param_5; + iVar1 = *(int *)(param_1 + 8); + pfVar12 = *(float **)(param_1 + 0x20); + if (param_4 < 4) { + iVar9 = 0; + } + else { + uVar11 = -(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2; + uVar2 = param_4 - 4U >> 2; + pfVar6 = (float *)(param_2 + 4); + puVar13 = param_3; + do { + fVar14 = *pfVar12; + fVar18 = fVar14 * pfVar6[-1]; + fVar17 = fVar14 * *pfVar6; + fVar16 = fVar14 * pfVar6[1]; + fVar14 = fVar14 * pfVar6[2]; + if (1 < iVar1) { + pfVar3 = (float *)((uVar11 - 4) + (long)pfVar6); + pfVar5 = pfVar12 + 1; + do { + pfVar10 = pfVar5 + 1; + fVar15 = *pfVar5; + pfVar5 = pfVar3 + 1; + pfVar7 = pfVar3 + 2; + pfVar8 = pfVar3 + 3; + fVar18 = fVar18 + fVar15 * *pfVar3; + pfVar3 = (float *)((long)pfVar3 + uVar11); + fVar17 = fVar17 + fVar15 * *pfVar5; + fVar16 = fVar16 + fVar15 * *pfVar7; + fVar14 = fVar14 + fVar15 * *pfVar8; + pfVar5 = pfVar10; + } while (pfVar10 != pfVar12 + (ulong)(iVar1 - 2) + 2); + } + pfVar6 = pfVar6 + 4; + puVar13[1] = CONCAT44(fVar14,fVar16); + *puVar13 = CONCAT44(fVar17,fVar18); + puVar13 = puVar13 + 2; + } while (pfVar6 != (float *)(param_2 + (ulong)uVar2 * 0x10 + 0x14)); + iVar9 = (uVar2 + 1) * 4; + } + if (iVar9 < param_4) { + lVar4 = (long)iVar9 * 4; + pfVar6 = (float *)(param_2 + lVar4); + pfVar3 = (float *)((long)param_3 + lVar4); + do { + fVar14 = *pfVar12 * *pfVar6; + if (1 < iVar1) { + pfVar5 = pfVar6; + pfVar7 = pfVar12 + 1; + do { + pfVar8 = pfVar7 + 1; + pfVar5 = (float *)((long)pfVar5 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + fVar14 = fVar14 + *pfVar5 * *pfVar7; + pfVar7 = pfVar8; + } while (pfVar8 != pfVar12 + (ulong)(iVar1 - 2) + 2); + } + pfVar6 = pfVar6 + 1; + *pfVar3 = fVar14; + pfVar3 = pfVar3 + 1; + } while (pfVar6 != (float *)(param_2 + + ((long)iVar9 + 1 + (ulong)(uint)((param_4 + -1) - iVar9)) * 4)); + } + return; +} + + +================================================================== + +### FUNC 001b901c (428 bytes) name=FUN_001b901c + +void FUN_001b901c(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + short *psVar1; + short *psVar2; + short *psVar3; + int iVar4; + short sVar5; + uint uVar6; + short *psVar7; + long lVar8; + double *pdVar9; + int iVar10; + double *pdVar11; + short *psVar12; + double *pdVar13; + ulong uVar14; + double *pdVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + + param_4 = param_4 * (int)param_5; + iVar4 = *(int *)(param_1 + 8); + pdVar15 = *(double **)(param_1 + 0x20); + if (param_4 < 4) { + iVar10 = 0; + } + else { + uVar14 = -(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1; + uVar6 = param_4 - 4U >> 2; + psVar12 = (short *)(param_2 + 2); + pdVar9 = param_3; + do { + dVar17 = *pdVar15; + dVar20 = (double)(int)psVar12[-1] * dVar17; + dVar19 = (double)(int)*psVar12 * dVar17; + dVar18 = (double)(int)psVar12[1] * dVar17; + dVar17 = (double)(int)psVar12[2] * dVar17; + if (1 < iVar4) { + psVar7 = (short *)((uVar14 - 2) + (long)psVar12); + pdVar11 = pdVar15 + 1; + do { + pdVar13 = pdVar11 + 1; + dVar16 = *pdVar11; + sVar5 = *psVar7; + psVar1 = psVar7 + 1; + psVar2 = psVar7 + 2; + psVar3 = psVar7 + 3; + psVar7 = (short *)((long)psVar7 + uVar14); + dVar20 = dVar20 + dVar16 * (double)(int)sVar5; + dVar19 = dVar19 + dVar16 * (double)(int)*psVar1; + dVar18 = dVar18 + dVar16 * (double)(int)*psVar2; + dVar17 = dVar17 + dVar16 * (double)(int)*psVar3; + pdVar11 = pdVar13; + } while (pdVar13 != pdVar15 + (ulong)(iVar4 - 2) + 2); + } + psVar12 = psVar12 + 4; + pdVar9[1] = dVar19; + *pdVar9 = dVar20; + pdVar9[3] = dVar17; + pdVar9[2] = dVar18; + pdVar9 = pdVar9 + 4; + } while (psVar12 != (short *)(param_2 + (ulong)uVar6 * 8 + 10)); + iVar10 = (uVar6 + 1) * 4; + } + if (iVar10 < param_4) { + lVar8 = (long)iVar10; + psVar12 = (short *)(param_2 + lVar8 * 2); + pdVar9 = param_3 + lVar8; + do { + dVar17 = (double)(int)*psVar12 * *pdVar15; + if (1 < iVar4) { + psVar7 = psVar12; + pdVar11 = pdVar15 + 1; + do { + psVar7 = (short *)((long)psVar7 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_5 & 0xffffffff) << 1)); + pdVar13 = pdVar11 + 1; + dVar17 = dVar17 + (double)(int)*psVar7 * *pdVar11; + pdVar11 = pdVar13; + } while (pdVar13 != pdVar15 + (ulong)(iVar4 - 2) + 2); + } + psVar12 = psVar12 + 1; + *pdVar9 = dVar17; + pdVar9 = pdVar9 + 1; + } while (psVar12 != + (short *)(param_2 + (lVar8 + 1 + (ulong)(uint)((param_4 + -1) - iVar10)) * 2)); + } + return; +} + + +================================================================== + +### FUNC 001b91c8 (408 bytes) name=FUN_001b91c8 + +void FUN_001b91c8(long param_1,long param_2,undefined8 *param_3,int param_4,ulong param_5) + +{ + short *psVar1; + short *psVar2; + short *psVar3; + int iVar4; + short sVar5; + uint uVar6; + short *psVar7; + long lVar8; + float *pfVar9; + int iVar10; + float *pfVar11; + float *pfVar12; + short *psVar13; + ulong uVar14; + float *pfVar15; + undefined8 *puVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + + param_4 = param_4 * (int)param_5; + iVar4 = *(int *)(param_1 + 8); + pfVar15 = *(float **)(param_1 + 0x20); + if (param_4 < 4) { + iVar10 = 0; + } + else { + uVar14 = -(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1; + uVar6 = param_4 - 4U >> 2; + psVar13 = (short *)(param_2 + 2); + puVar16 = param_3; + do { + fVar18 = *pfVar15; + fVar21 = (float)(int)psVar13[-1] * fVar18; + fVar20 = (float)(int)*psVar13 * fVar18; + fVar19 = (float)(int)psVar13[1] * fVar18; + fVar18 = (float)(int)psVar13[2] * fVar18; + if (1 < iVar4) { + psVar7 = (short *)((uVar14 - 2) + (long)psVar13); + pfVar9 = pfVar15 + 1; + do { + sVar5 = *psVar7; + psVar1 = psVar7 + 1; + psVar2 = psVar7 + 2; + psVar3 = psVar7 + 3; + psVar7 = (short *)((long)psVar7 + uVar14); + pfVar11 = pfVar9 + 1; + fVar17 = *pfVar9; + fVar21 = fVar21 + fVar17 * (float)(int)sVar5; + fVar20 = fVar20 + fVar17 * (float)(int)*psVar1; + fVar19 = fVar19 + fVar17 * (float)(int)*psVar2; + fVar18 = fVar18 + fVar17 * (float)(int)*psVar3; + pfVar9 = pfVar11; + } while (pfVar11 != pfVar15 + (ulong)(iVar4 - 2) + 2); + } + psVar13 = psVar13 + 4; + puVar16[1] = CONCAT44(fVar18,fVar19); + *puVar16 = CONCAT44(fVar20,fVar21); + puVar16 = puVar16 + 2; + } while (psVar13 != (short *)(param_2 + (ulong)uVar6 * 8 + 10)); + iVar10 = (uVar6 + 1) * 4; + } + if (iVar10 < param_4) { + lVar8 = (long)iVar10; + psVar13 = (short *)(param_2 + lVar8 * 2); + pfVar9 = (float *)((long)param_3 + lVar8 * 4); + do { + fVar18 = (float)(int)*psVar13 * *pfVar15; + if (1 < iVar4) { + psVar7 = psVar13; + pfVar11 = pfVar15 + 1; + do { + psVar7 = (short *)((long)psVar7 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_5 & 0xffffffff) << 1)); + pfVar12 = pfVar11 + 1; + fVar18 = fVar18 + (float)(int)*psVar7 * *pfVar11; + pfVar11 = pfVar12; + } while (pfVar12 != pfVar15 + (ulong)(iVar4 - 2) + 2); + } + psVar13 = psVar13 + 1; + *pfVar9 = fVar18; + pfVar9 = pfVar9 + 1; + } while (psVar13 != + (short *)(param_2 + (lVar8 + 1 + (ulong)(uint)((param_4 + -1) - iVar10)) * 2)); + } + return; +} + + +================================================================== + +### FUNC 001b9360 (428 bytes) name=FUN_001b9360 + +void FUN_001b9360(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + ushort *puVar1; + ushort *puVar2; + ushort *puVar3; + int iVar4; + ushort uVar5; + uint uVar6; + ushort *puVar7; + long lVar8; + double *pdVar9; + int iVar10; + double *pdVar11; + ushort *puVar12; + double *pdVar13; + ulong uVar14; + double *pdVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + + param_4 = param_4 * (int)param_5; + iVar4 = *(int *)(param_1 + 8); + pdVar15 = *(double **)(param_1 + 0x20); + if (param_4 < 4) { + iVar10 = 0; + } + else { + uVar14 = -(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1; + uVar6 = param_4 - 4U >> 2; + puVar12 = (ushort *)(param_2 + 2); + pdVar9 = param_3; + do { + dVar17 = *pdVar15; + dVar20 = (double)puVar12[-1] * dVar17; + dVar19 = (double)*puVar12 * dVar17; + dVar18 = (double)puVar12[1] * dVar17; + dVar17 = (double)puVar12[2] * dVar17; + if (1 < iVar4) { + puVar7 = (ushort *)((uVar14 - 2) + (long)puVar12); + pdVar11 = pdVar15 + 1; + do { + pdVar13 = pdVar11 + 1; + dVar16 = *pdVar11; + uVar5 = *puVar7; + puVar1 = puVar7 + 1; + puVar2 = puVar7 + 2; + puVar3 = puVar7 + 3; + puVar7 = (ushort *)((long)puVar7 + uVar14); + dVar20 = dVar20 + dVar16 * (double)uVar5; + dVar19 = dVar19 + dVar16 * (double)*puVar1; + dVar18 = dVar18 + dVar16 * (double)*puVar2; + dVar17 = dVar17 + dVar16 * (double)*puVar3; + pdVar11 = pdVar13; + } while (pdVar13 != pdVar15 + (ulong)(iVar4 - 2) + 2); + } + puVar12 = puVar12 + 4; + pdVar9[1] = dVar19; + *pdVar9 = dVar20; + pdVar9[3] = dVar17; + pdVar9[2] = dVar18; + pdVar9 = pdVar9 + 4; + } while (puVar12 != (ushort *)(param_2 + (ulong)uVar6 * 8 + 10)); + iVar10 = (uVar6 + 1) * 4; + } + if (iVar10 < param_4) { + lVar8 = (long)iVar10; + puVar12 = (ushort *)(param_2 + lVar8 * 2); + pdVar9 = param_3 + lVar8; + do { + dVar17 = (double)*puVar12 * *pdVar15; + if (1 < iVar4) { + puVar7 = puVar12; + pdVar11 = pdVar15 + 1; + do { + puVar7 = (ushort *) + ((long)puVar7 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1)); + pdVar13 = pdVar11 + 1; + dVar17 = dVar17 + (double)*puVar7 * *pdVar11; + pdVar11 = pdVar13; + } while (pdVar13 != pdVar15 + (ulong)(iVar4 - 2) + 2); + } + puVar12 = puVar12 + 1; + *pdVar9 = dVar17; + pdVar9 = pdVar9 + 1; + } while (puVar12 != + (ushort *)(param_2 + (lVar8 + 1 + (ulong)(uint)((param_4 + -1) - iVar10)) * 2)); + } + return; +} + + +================================================================== + +### FUNC 001b950c (408 bytes) name=FUN_001b950c + +void FUN_001b950c(long param_1,long param_2,undefined8 *param_3,int param_4,ulong param_5) + +{ + ushort *puVar1; + ushort *puVar2; + ushort *puVar3; + int iVar4; + ushort uVar5; + uint uVar6; + ushort *puVar7; + long lVar8; + float *pfVar9; + int iVar10; + float *pfVar11; + float *pfVar12; + ushort *puVar13; + ulong uVar14; + float *pfVar15; + undefined8 *puVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + + param_4 = param_4 * (int)param_5; + iVar4 = *(int *)(param_1 + 8); + pfVar15 = *(float **)(param_1 + 0x20); + if (param_4 < 4) { + iVar10 = 0; + } + else { + uVar14 = -(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1; + uVar6 = param_4 - 4U >> 2; + puVar13 = (ushort *)(param_2 + 2); + puVar16 = param_3; + do { + fVar18 = *pfVar15; + fVar21 = (float)puVar13[-1] * fVar18; + fVar20 = (float)*puVar13 * fVar18; + fVar19 = (float)puVar13[1] * fVar18; + fVar18 = (float)puVar13[2] * fVar18; + if (1 < iVar4) { + puVar7 = (ushort *)((uVar14 - 2) + (long)puVar13); + pfVar9 = pfVar15 + 1; + do { + uVar5 = *puVar7; + puVar1 = puVar7 + 1; + puVar2 = puVar7 + 2; + puVar3 = puVar7 + 3; + puVar7 = (ushort *)((long)puVar7 + uVar14); + pfVar11 = pfVar9 + 1; + fVar17 = *pfVar9; + fVar21 = fVar21 + fVar17 * (float)uVar5; + fVar20 = fVar20 + fVar17 * (float)*puVar1; + fVar19 = fVar19 + fVar17 * (float)*puVar2; + fVar18 = fVar18 + fVar17 * (float)*puVar3; + pfVar9 = pfVar11; + } while (pfVar11 != pfVar15 + (ulong)(iVar4 - 2) + 2); + } + puVar13 = puVar13 + 4; + puVar16[1] = CONCAT44(fVar18,fVar19); + *puVar16 = CONCAT44(fVar20,fVar21); + puVar16 = puVar16 + 2; + } while (puVar13 != (ushort *)(param_2 + (ulong)uVar6 * 8 + 10)); + iVar10 = (uVar6 + 1) * 4; + } + if (iVar10 < param_4) { + lVar8 = (long)iVar10; + puVar13 = (ushort *)(param_2 + lVar8 * 2); + pfVar9 = (float *)((long)param_3 + lVar8 * 4); + do { + fVar18 = (float)*puVar13 * *pfVar15; + if (1 < iVar4) { + puVar7 = puVar13; + pfVar11 = pfVar15 + 1; + do { + puVar7 = (ushort *) + ((long)puVar7 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1)); + pfVar12 = pfVar11 + 1; + fVar18 = fVar18 + (float)*puVar7 * *pfVar11; + pfVar11 = pfVar12; + } while (pfVar12 != pfVar15 + (ulong)(iVar4 - 2) + 2); + } + puVar13 = puVar13 + 1; + *pfVar9 = fVar18; + pfVar9 = pfVar9 + 1; + } while (puVar13 != + (ushort *)(param_2 + (lVar8 + 1 + (ulong)(uint)((param_4 + -1) - iVar10)) * 2)); + } + return; +} + + +================================================================== + +### FUNC 001b96a4 (440 bytes) name=FUN_001b96a4 + +void FUN_001b96a4(long param_1,byte *param_2,long param_3,int param_4,int param_5) + +{ + int iVar1; + byte bVar2; + uint uVar3; + byte *pbVar4; + long lVar5; + double *pdVar6; + long lVar7; + int iVar8; + double *pdVar9; + byte *pbVar10; + double *pdVar11; + double *pdVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + + param_4 = param_4 * param_5; + iVar1 = *(int *)(param_1 + 8); + pdVar12 = *(double **)(param_1 + 0x20); + if (param_4 < 4) { + iVar8 = 0; + } + else { + uVar3 = param_4 - 4U >> 2; + pdVar6 = (double *)(param_3 + 0x10); + pbVar10 = param_2; + do { + dVar14 = *pdVar12; + dVar17 = (double)*pbVar10 * dVar14; + dVar16 = (double)pbVar10[1] * dVar14; + dVar15 = (double)pbVar10[2] * dVar14; + dVar14 = (double)pbVar10[3] * dVar14; + if (1 < iVar1) { + pdVar9 = pdVar12 + 1; + pbVar4 = pbVar10; + do { + pbVar4 = pbVar4 + param_5; + pdVar11 = pdVar9 + 1; + dVar13 = *pdVar9; + dVar17 = dVar17 + dVar13 * (double)*pbVar4; + dVar16 = dVar16 + dVar13 * (double)pbVar4[1]; + dVar15 = dVar15 + dVar13 * (double)pbVar4[2]; + dVar14 = dVar14 + dVar13 * (double)pbVar4[3]; + pdVar9 = pdVar11; + } while (pdVar11 != pdVar12 + (ulong)(iVar1 - 2) + 2); + } + pbVar10 = pbVar10 + 4; + pdVar6[-1] = dVar16; + pdVar6[-2] = dVar17; + pdVar6[1] = dVar14; + *pdVar6 = dVar15; + pdVar6 = pdVar6 + 4; + } while (pdVar6 != (double *)(param_3 + (ulong)uVar3 * 0x20 + 0x30)); + iVar8 = (uVar3 + 1) * 4; + } + if (iVar8 < param_4) { + lVar7 = (long)param_5; + lVar5 = (long)iVar8; + pbVar10 = param_2 + lVar5 + lVar7; + pdVar6 = (double *)(param_3 + lVar5 * 8); + do { + dVar14 = (double)pbVar10[-lVar7] * *pdVar12; + if (1 < iVar1) { + pbVar4 = pbVar10; + pdVar9 = pdVar12 + 1; + do { + bVar2 = *pbVar4; + pbVar4 = pbVar4 + lVar7; + pdVar11 = pdVar9 + 1; + dVar14 = dVar14 + (double)bVar2 * *pdVar9; + pdVar9 = pdVar11; + } while (pdVar11 != pdVar12 + (ulong)(iVar1 - 2) + 2); + } + pbVar10 = pbVar10 + 1; + *pdVar6 = dVar14; + pdVar6 = pdVar6 + 1; + } while (pbVar10 != param_2 + lVar7 + 1 + lVar5 + (ulong)(uint)((param_4 + -1) - iVar8)); + } + return; +} + + +================================================================== + +### FUNC 001b985c (420 bytes) name=FUN_001b985c + +void FUN_001b985c(long param_1,long param_2,undefined8 *param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + int iVar4; + byte bVar5; + uint uVar6; + byte *pbVar7; + long lVar8; + float *pfVar9; + long lVar10; + int iVar11; + float *pfVar12; + float *pfVar13; + byte *pbVar14; + float *pfVar15; + undefined8 *puVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + + param_4 = param_4 * param_5; + iVar4 = *(int *)(param_1 + 8); + pfVar15 = *(float **)(param_1 + 0x20); + if (param_4 < 4) { + iVar11 = 0; + } + else { + uVar6 = param_4 - 4U >> 2; + pbVar14 = (byte *)(param_2 + 1); + puVar16 = param_3; + do { + fVar18 = *pfVar15; + fVar21 = (float)pbVar14[-1] * fVar18; + fVar20 = (float)*pbVar14 * fVar18; + fVar19 = (float)pbVar14[1] * fVar18; + fVar18 = (float)pbVar14[2] * fVar18; + if (1 < iVar4) { + pbVar7 = pbVar14 + (long)param_5 + -1; + pfVar9 = pfVar15 + 1; + do { + bVar5 = *pbVar7; + pbVar1 = pbVar7 + 1; + pbVar2 = pbVar7 + 2; + pbVar3 = pbVar7 + 3; + pbVar7 = pbVar7 + param_5; + pfVar12 = pfVar9 + 1; + fVar17 = *pfVar9; + fVar21 = fVar21 + fVar17 * (float)bVar5; + fVar20 = fVar20 + fVar17 * (float)*pbVar1; + fVar19 = fVar19 + fVar17 * (float)*pbVar2; + fVar18 = fVar18 + fVar17 * (float)*pbVar3; + pfVar9 = pfVar12; + } while (pfVar12 != pfVar15 + (ulong)(iVar4 - 2) + 2); + } + pbVar14 = pbVar14 + 4; + puVar16[1] = CONCAT44(fVar18,fVar19); + *puVar16 = CONCAT44(fVar20,fVar21); + puVar16 = puVar16 + 2; + } while (pbVar14 != (byte *)(param_2 + (ulong)uVar6 * 4 + 5)); + iVar11 = (uVar6 + 1) * 4; + } + if (iVar11 < param_4) { + lVar10 = (long)param_5; + lVar8 = (long)iVar11; + pbVar14 = (byte *)(param_2 + lVar8 + lVar10); + pfVar9 = (float *)((long)param_3 + lVar8 * 4); + do { + fVar18 = (float)pbVar14[-lVar10] * *pfVar15; + if (1 < iVar4) { + pbVar7 = pbVar14; + pfVar12 = pfVar15 + 1; + do { + bVar5 = *pbVar7; + pbVar7 = pbVar7 + lVar10; + pfVar13 = pfVar12 + 1; + fVar18 = fVar18 + (float)bVar5 * *pfVar12; + pfVar12 = pfVar13; + } while (pfVar13 != pfVar15 + (ulong)(iVar4 - 2) + 2); + } + pbVar14 = pbVar14 + 1; + *pfVar9 = fVar18; + pfVar9 = pfVar9 + 1; + } while (pbVar14 != + (byte *)(param_2 + lVar10 + 1 + lVar8 + (ulong)(uint)((param_4 + -1) - iVar11))); + } + return; +} + + +================================================================== + +### FUNC 001b9a00 (6284 bytes) name=FUN_001b9a00 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_001b9a00(long param_1,byte *param_2,undefined8 *param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + uint uVar20; + uint uVar21; + int iVar22; + byte bVar23; + byte bVar24; + byte bVar25; + byte bVar26; + byte bVar27; + byte bVar28; + uint uVar29; + byte *pbVar30; + uint3 uVar31; + long lVar32; + long lVar33; + long lVar34; + long lVar35; + long lVar36; + long lVar37; + long lVar38; + int iVar39; + long lVar40; + long lVar41; + int *piVar42; + long lVar43; + int iVar44; + long lVar45; + long lVar46; + byte *pbVar47; + long lVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + ulong uVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + ulong uVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + byte *pbVar63; + byte *pbVar64; + byte *pbVar65; + byte *pbVar66; + byte *pbVar67; + int *piVar68; + byte *pbVar69; + uint uVar70; + byte *pbVar71; + uint uVar72; + long lVar73; + long lVar74; + int iVar75; + int iVar76; + long lVar77; + int iVar78; + int iVar79; + int iVar80; + int iVar81; + byte *pbVar82; + byte *pbVar83; + long lVar84; + byte *pbVar85; + byte *pbVar86; + int iVar87; + byte *pbVar88; + int iVar89; + int iVar90; + int iVar91; + int iVar92; + int iVar93; + int iVar94; + int iVar95; + int iVar96; + int iVar97; + int iVar98; + int iVar99; + int iVar100; + int iVar101; + int iVar102; + int iVar103; + int iVar104; + int iVar105; + int iVar106; + int iVar107; + byte *pbVar108; + long lVar109; + int iVar110; + byte *pbVar111; + int iVar112; + int iVar113; + int iVar114; + byte *pbVar115; + long lVar116; + byte *pbVar117; + int iVar118; + int iVar119; + int iVar120; + int iVar121; + byte *pbVar122; + byte *local_1f0; + byte *local_1e8; + byte *local_1e0; + byte *local_1d8; + byte *local_1d0; + byte *local_1c8; + byte *local_1c0; + byte *local_1b8; + byte *local_1b0; + int local_1a4; + undefined8 *local_1a0; + uint local_198; + + param_4 = param_4 * param_5; + iVar22 = *(int *)(param_1 + 8); + piVar68 = *(int **)(param_1 + 0x20); + if (param_4 + -3 < 1) { + iVar44 = 0; + } + else { + lVar48 = (long)param_5; + lVar45 = lVar48 * 4; + lVar43 = lVar48 * 2; + lVar46 = lVar48 * 0x10; + lVar32 = lVar48 * 3; + uVar29 = iVar22 - 1; + uVar20 = -((uint)((ulong)(piVar68 + 1) >> 2) & 3) & 3; + if (uVar29 < uVar20) { + uVar20 = uVar29; + } + uVar21 = uVar29; + if (0x11 < uVar29) { + uVar21 = uVar20; + } + pbVar55 = param_2 + lVar43; + uVar20 = ((uVar29 - uVar21) - 0x10 >> 4) + 1; + lVar33 = lVar48 * 5; + lVar40 = lVar48 * 8; + uVar72 = uVar20 * 0x10; + pbVar82 = param_2 + lVar48 * 4; + pbVar58 = pbVar55 + lVar48; + pbVar53 = pbVar58 + lVar48; + pbVar69 = pbVar53 + lVar48; + lVar73 = NEON_shl(lVar33,1); + pbVar83 = param_2 + lVar48 * 5; + pbVar108 = param_2 + lVar48 * 6; + local_1b0 = pbVar69 + lVar48; + pbVar47 = local_1b0 + lVar48; + pbVar67 = pbVar47 + lVar48; + pbVar66 = pbVar67 + lVar48; + lVar77 = NEON_shl(lVar32,2); + lVar74 = NEON_shl(lVar32,1); + pbVar65 = pbVar66 + lVar48; + local_1b8 = param_2 + lVar48 * 0x11; + pbVar64 = pbVar65 + lVar48; + pbVar63 = pbVar64 + lVar48; + pbVar62 = pbVar63 + lVar48; + pbVar88 = pbVar62 + lVar48; + pbVar115 = param_2 + lVar48 * 7; + pbVar71 = pbVar88 + lVar48; + lVar41 = (ulong)uVar21 * lVar48; + pbVar57 = param_2 + lVar48; + pbVar111 = param_2 + lVar48 * 0x11; + pbVar86 = param_2 + lVar32; + pbVar117 = param_2 + lVar48 * 8; + pbVar122 = param_2 + lVar48 * 9; + local_1f0 = param_2 + lVar48 * 10; + local_1d8 = param_2 + lVar48 * 0xd; + local_1d0 = param_2 + lVar48 * 0xe; + local_1c8 = param_2 + lVar48 * 0xf; + local_1c0 = param_2 + lVar48 * 0x10; + lVar34 = lVar48 * 7; + lVar35 = lVar48 * 9; + local_1e8 = param_2 + lVar48 * 0xb; + local_1e0 = param_2 + lVar48 * 0xc; + lVar37 = lVar48 * 0xe; + lVar109 = lVar73 + lVar48; + lVar36 = lVar48 * 0xf; + pbVar85 = pbVar71 + lVar48; + lVar116 = lVar77 + lVar48; + local_1a4 = 0; + pbVar49 = param_2; + lVar84 = lVar48; + pbVar60 = pbVar55; + local_1a0 = param_3; + do { + iVar39 = *piVar68; + iVar79 = (uint)*pbVar49 * iVar39; + iVar44 = (uint)pbVar49[1] * iVar39; + iVar76 = (uint)pbVar49[2] * iVar39; + iVar39 = (uint)pbVar49[3] * iVar39; + if (1 < iVar22) { + if (uVar21 == 0) { + uVar59 = 1; + pbVar61 = pbVar49; + } + else { + iVar96 = piVar68[1]; + iVar79 = iVar79 + (uint)*pbVar57 * iVar96; + iVar44 = iVar44 + (uint)pbVar57[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar57[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar57[3] * iVar96; + if (uVar21 == 1) { + uVar59 = 2; + pbVar61 = pbVar57; + } + else { + iVar96 = piVar68[2]; + iVar44 = iVar44 + (uint)pbVar55[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar60 * iVar96; + iVar76 = iVar76 + (uint)pbVar55[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar55[3] * iVar96; + if (uVar21 == 2) { + uVar59 = 3; + pbVar61 = pbVar60; + } + else { + iVar96 = piVar68[3]; + iVar44 = iVar44 + (uint)pbVar58[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar86 * iVar96; + iVar76 = iVar76 + (uint)pbVar58[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar58[3] * iVar96; + if (uVar21 == 3) { + uVar59 = 4; + pbVar61 = pbVar86; + } + else { + iVar96 = piVar68[4]; + iVar44 = iVar44 + (uint)pbVar53[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar82 * iVar96; + iVar76 = iVar76 + (uint)pbVar53[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar53[3] * iVar96; + if (uVar21 == 4) { + uVar59 = 5; + pbVar61 = pbVar82; + } + else { + iVar96 = piVar68[5]; + iVar44 = iVar44 + (uint)pbVar69[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar83 * iVar96; + iVar76 = iVar76 + (uint)pbVar69[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar69[3] * iVar96; + if (uVar21 == 5) { + uVar59 = 6; + pbVar61 = pbVar83; + } + else { + iVar96 = piVar68[6]; + iVar79 = iVar79 + (uint)*pbVar108 * iVar96; + iVar44 = iVar44 + (uint)local_1b0[1] * iVar96; + iVar76 = iVar76 + (uint)local_1b0[2] * iVar96; + iVar39 = iVar39 + (uint)local_1b0[3] * iVar96; + if (uVar21 == 6) { + uVar59 = 7; + pbVar61 = pbVar108; + } + else { + iVar96 = piVar68[7]; + iVar44 = iVar44 + (uint)pbVar47[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar115 * iVar96; + iVar76 = iVar76 + (uint)pbVar47[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar47[3] * iVar96; + if (uVar21 == 7) { + uVar59 = 8; + pbVar61 = pbVar115; + } + else { + iVar96 = piVar68[8]; + iVar44 = iVar44 + (uint)pbVar67[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar117 * iVar96; + iVar76 = iVar76 + (uint)pbVar67[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar67[3] * iVar96; + if (uVar21 == 8) { + uVar59 = 9; + pbVar61 = pbVar117; + } + else { + iVar96 = piVar68[9]; + iVar44 = iVar44 + (uint)pbVar66[1] * iVar96; + iVar79 = iVar79 + (uint)*pbVar122 * iVar96; + iVar76 = iVar76 + (uint)pbVar66[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar66[3] * iVar96; + if (uVar21 == 9) { + uVar59 = 10; + pbVar61 = pbVar122; + } + else { + iVar96 = piVar68[10]; + iVar79 = iVar79 + (uint)*local_1f0 * iVar96; + iVar44 = iVar44 + (uint)pbVar65[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar65[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar65[3] * iVar96; + if (uVar21 == 10) { + uVar59 = 0xb; + pbVar61 = local_1f0; + } + else { + iVar96 = piVar68[0xb]; + iVar79 = iVar79 + (uint)*local_1e8 * iVar96; + iVar44 = iVar44 + (uint)pbVar64[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar64[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar64[3] * iVar96; + if (uVar21 == 0xb) { + uVar59 = 0xc; + pbVar61 = local_1e8; + } + else { + iVar96 = piVar68[0xc]; + iVar79 = iVar79 + (uint)*local_1e0 * iVar96; + iVar44 = iVar44 + (uint)pbVar63[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar63[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar63[3] * iVar96; + if (uVar21 == 0xc) { + uVar59 = 0xd; + pbVar61 = local_1e0; + } + else { + iVar96 = piVar68[0xd]; + iVar79 = iVar79 + (uint)*local_1d8 * iVar96; + iVar44 = iVar44 + (uint)pbVar62[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar62[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar62[3] * iVar96; + if (uVar21 == 0xd) { + uVar59 = 0xe; + pbVar61 = local_1d8; + } + else { + iVar96 = piVar68[0xe]; + iVar79 = iVar79 + (uint)*local_1d0 * iVar96; + iVar44 = iVar44 + (uint)pbVar88[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar88[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar88[3] * iVar96; + if (uVar21 == 0xe) { + uVar59 = 0xf; + pbVar61 = local_1d0; + } + else { + iVar96 = piVar68[0xf]; + iVar79 = iVar79 + (uint)*local_1c8 * iVar96; + iVar44 = iVar44 + (uint)pbVar71[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar71[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar71[3] * iVar96; + if (uVar21 == 0xf) { + uVar59 = 0x10; + pbVar61 = local_1c8; + } + else { + iVar96 = piVar68[0x10]; + iVar79 = iVar79 + (uint)*local_1c0 * iVar96; + iVar44 = iVar44 + (uint)pbVar85[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar85[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar85[3] * iVar96; + if (uVar21 == 0x10) { + uVar59 = 0x11; + pbVar61 = local_1c0; + } + else { + uVar59 = 0x12; + iVar96 = piVar68[0x11]; + iVar79 = iVar79 + (uint)*local_1b8 * iVar96; + iVar44 = iVar44 + (uint)pbVar111[1] * iVar96; + iVar76 = iVar76 + (uint)pbVar111[2] * iVar96; + iVar39 = iVar39 + (uint)pbVar111[3] * iVar96; + pbVar61 = local_1b8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar29 == uVar21) goto LAB_001ba964; + } + if (0xe < (iVar22 + -2) - uVar21) { + iVar104 = 0; + iVar105 = 0; + iVar106 = 0; + iVar107 = 0; + pbVar56 = param_2 + lVar41 + lVar84; + pbVar54 = param_2 + lVar41 + 1 + lVar84; + pbVar51 = param_2 + lVar41 + 2 + lVar84; + pbVar50 = param_2 + lVar41 + 3 + lVar84; + local_198 = 0; + piVar42 = piVar68 + (ulong)uVar21 + 1; + iVar96 = iVar104; + iVar97 = iVar105; + iVar110 = iVar104; + iVar112 = iVar105; + iVar118 = iVar104; + iVar119 = iVar105; + iVar98 = iVar106; + iVar99 = iVar107; + iVar113 = iVar106; + iVar114 = iVar107; + iVar120 = iVar106; + iVar121 = iVar107; + do { + local_198 = local_198 + 1; + bVar23 = *pbVar56; + bVar25 = pbVar56[lVar48]; + pbVar1 = pbVar56 + lVar43; + pbVar2 = pbVar56 + lVar32; + pbVar3 = pbVar56 + lVar45; + pbVar4 = pbVar56 + lVar33; + pbVar5 = pbVar56 + lVar74; + pbVar6 = pbVar56 + lVar34; + pbVar7 = pbVar56 + lVar40; + bVar26 = pbVar56[lVar35]; + pbVar8 = pbVar56 + lVar73; + pbVar9 = pbVar56 + lVar109; + pbVar10 = pbVar56 + lVar77; + pbVar11 = pbVar56 + lVar116; + pbVar12 = pbVar56 + lVar37; + pbVar30 = pbVar56 + lVar36; + bVar24 = *pbVar54; + pbVar56 = pbVar56 + lVar46; + bVar27 = pbVar54[lVar48]; + pbVar13 = pbVar54 + lVar43; + pbVar14 = pbVar54 + lVar32; + pbVar15 = pbVar54 + lVar45; + pbVar16 = pbVar54 + lVar33; + iVar100 = (int)*(undefined8 *)piVar42; + iVar101 = (int)((ulong)*(undefined8 *)piVar42 >> 0x20); + iVar102 = (int)*(undefined8 *)(piVar42 + 2); + iVar103 = (int)((ulong)*(undefined8 *)(piVar42 + 2) >> 0x20); + pbVar17 = pbVar54 + lVar74; + iVar92 = (int)*(undefined8 *)(piVar42 + 4); + iVar93 = (int)((ulong)*(undefined8 *)(piVar42 + 4) >> 0x20); + iVar94 = (int)*(undefined8 *)(piVar42 + 6); + iVar95 = (int)((ulong)*(undefined8 *)(piVar42 + 6) >> 0x20); + pbVar18 = pbVar54 + lVar34; + pbVar19 = pbVar54 + lVar40; + iVar87 = (int)*(undefined8 *)(piVar42 + 8); + iVar89 = (int)((ulong)*(undefined8 *)(piVar42 + 8) >> 0x20); + iVar90 = (int)*(undefined8 *)(piVar42 + 10); + iVar91 = (int)((ulong)*(undefined8 *)(piVar42 + 10) >> 0x20); + bVar28 = pbVar54[lVar35]; + iVar75 = (int)*(undefined8 *)(piVar42 + 0xc); + iVar78 = (int)((ulong)*(undefined8 *)(piVar42 + 0xc) >> 0x20); + iVar80 = (int)*(undefined8 *)(piVar42 + 0xe); + iVar81 = (int)((ulong)*(undefined8 *)(piVar42 + 0xe) >> 0x20); + iVar104 = iVar104 + ((CONCAT12(bVar25,CONCAT11(bVar25,bVar23)) & 0xff00ff) & 0xffff) * + iVar100 + (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) * iVar92 + + ((CONCAT12(bVar26,CONCAT11(bVar26,*pbVar7)) & 0xff00ff) & 0xffff) * iVar87 + + (CONCAT12(*pbVar11,(ushort)*pbVar10) & 0xffff) * iVar75; + iVar105 = iVar105 + (uint)bVar25 * iVar101 + (uint)*pbVar4 * iVar93 + + (uint)bVar26 * iVar89 + (uint)*pbVar11 * iVar78; + iVar106 = iVar106 + (uint)*pbVar1 * iVar102 + (uint)*pbVar5 * iVar94 + + (uint)*pbVar8 * iVar90 + (uint)*pbVar12 * iVar80; + iVar107 = iVar107 + (uint)*pbVar2 * iVar103 + (uint)*pbVar6 * iVar95 + + (uint)*pbVar9 * iVar91 + (uint)*pbVar30 * iVar81; + pbVar1 = pbVar54 + lVar73; + pbVar2 = pbVar54 + lVar109; + pbVar3 = pbVar54 + lVar77; + pbVar4 = pbVar54 + lVar116; + pbVar5 = pbVar54 + lVar37; + pbVar30 = pbVar54 + lVar36; + pbVar54 = pbVar54 + lVar46; + bVar23 = *pbVar51; + bVar25 = pbVar51[lVar48]; + pbVar6 = pbVar51 + lVar43; + pbVar7 = pbVar51 + lVar32; + pbVar8 = pbVar51 + lVar45; + pbVar9 = pbVar51 + lVar33; + pbVar10 = pbVar51 + lVar74; + pbVar11 = pbVar51 + lVar34; + pbVar12 = pbVar51 + lVar40; + bVar26 = pbVar51[lVar35]; + iVar110 = iVar110 + ((CONCAT12(bVar27,CONCAT11(bVar27,bVar24)) & 0xff00ff) & 0xffff) * + iVar100 + (CONCAT12(*pbVar16,(ushort)*pbVar15) & 0xffff) * iVar92 + + ((CONCAT12(bVar28,CONCAT11(bVar28,*pbVar19)) & 0xff00ff) & 0xffff) * iVar87 + + (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) * iVar75; + iVar112 = iVar112 + (uint)bVar27 * iVar101 + (uint)*pbVar16 * iVar93 + + (uint)bVar28 * iVar89 + (uint)*pbVar4 * iVar78; + iVar113 = iVar113 + (uint)*pbVar13 * iVar102 + (uint)*pbVar17 * iVar94 + + (uint)*pbVar1 * iVar90 + (uint)*pbVar5 * iVar80; + iVar114 = iVar114 + (uint)*pbVar14 * iVar103 + (uint)*pbVar18 * iVar95 + + (uint)*pbVar2 * iVar91 + (uint)*pbVar30 * iVar81; + pbVar1 = pbVar51 + lVar73; + pbVar2 = pbVar51 + lVar109; + pbVar3 = pbVar51 + lVar77; + pbVar4 = pbVar51 + lVar116; + pbVar5 = pbVar51 + lVar37; + pbVar30 = pbVar51 + lVar36; + pbVar51 = pbVar51 + lVar46; + bVar24 = *pbVar50; + bVar27 = pbVar50[lVar48]; + pbVar13 = pbVar50 + lVar43; + pbVar14 = pbVar50 + lVar32; + pbVar15 = pbVar50 + lVar45; + pbVar16 = pbVar50 + lVar33; + pbVar17 = pbVar50 + lVar74; + pbVar18 = pbVar50 + lVar34; + pbVar19 = pbVar50 + lVar40; + bVar28 = pbVar50[lVar35]; + iVar118 = iVar118 + ((CONCAT12(bVar25,CONCAT11(bVar25,bVar23)) & 0xff00ff) & 0xffff) * + iVar100 + (CONCAT12(*pbVar9,(ushort)*pbVar8) & 0xffff) * iVar92 + + ((CONCAT12(bVar26,CONCAT11(bVar26,*pbVar12)) & 0xff00ff) & 0xffff) * iVar87 + + (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) * iVar75; + iVar119 = iVar119 + (uint)bVar25 * iVar101 + (uint)*pbVar9 * iVar93 + + (uint)bVar26 * iVar89 + (uint)*pbVar4 * iVar78; + iVar120 = iVar120 + (uint)*pbVar6 * iVar102 + (uint)*pbVar10 * iVar94 + + (uint)*pbVar1 * iVar90 + (uint)*pbVar5 * iVar80; + iVar121 = iVar121 + (uint)*pbVar7 * iVar103 + (uint)*pbVar11 * iVar95 + + (uint)*pbVar2 * iVar91 + (uint)*pbVar30 * iVar81; + pbVar1 = pbVar50 + lVar73; + pbVar2 = pbVar50 + lVar109; + pbVar3 = pbVar50 + lVar77; + pbVar4 = pbVar50 + lVar116; + pbVar5 = pbVar50 + lVar37; + pbVar6 = pbVar50 + lVar36; + pbVar50 = pbVar50 + lVar46; + iVar96 = iVar96 + ((CONCAT12(bVar27,CONCAT11(bVar27,bVar24)) & 0xff00ff) & 0xffff) * + iVar100 + (CONCAT12(*pbVar16,(ushort)*pbVar15) & 0xffff) * iVar92 + + ((CONCAT12(bVar28,CONCAT11(bVar28,*pbVar19)) & 0xff00ff) & 0xffff) * iVar87 + + (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) * iVar75; + iVar97 = iVar97 + (uint)bVar27 * iVar101 + (uint)*pbVar16 * iVar93 + + (uint)bVar28 * iVar89 + (uint)*pbVar4 * iVar78; + iVar98 = iVar98 + (uint)*pbVar13 * iVar102 + (uint)*pbVar17 * iVar94 + + (uint)*pbVar1 * iVar90 + (uint)*pbVar5 * iVar80; + iVar99 = iVar99 + (uint)*pbVar14 * iVar103 + (uint)*pbVar18 * iVar95 + + (uint)*pbVar2 * iVar91 + (uint)*pbVar6 * iVar81; + piVar42 = piVar42 + 0x10; + } while (local_198 < uVar20); + uVar59 = (ulong)((int)uVar59 + uVar72); + pbVar61 = pbVar61 + (ulong)uVar72 * lVar48; + iVar44 = iVar44 + iVar110 + iVar112 + iVar113 + iVar114; + iVar39 = iVar39 + iVar96 + iVar97 + iVar98 + iVar99; + iVar76 = iVar76 + iVar118 + iVar119 + iVar120 + iVar121; + iVar79 = iVar79 + iVar104 + iVar105 + iVar106 + iVar107; + if (uVar29 - uVar21 == uVar72) goto LAB_001ba964; + } + uVar52 = -(uVar59 >> 0x1f) & 0xfffffffc00000000 | uVar59 << 2; + iVar97 = (int)uVar59; + iVar96 = *(int *)((long)piVar68 + uVar52); + iVar79 = iVar79 + (uint)pbVar61[lVar48] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar48 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar48 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar48 + 2] * iVar96; + if (iVar97 + 1 < iVar22) { + lVar38 = lVar48 * 2; + iVar96 = *(int *)((long)piVar68 + uVar52 + 4); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 2] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 2 < iVar22) { + lVar38 = lVar48 * 3; + iVar96 = *(int *)((long)piVar68 + uVar52 + 8); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 3] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 3 < iVar22) { + lVar38 = lVar48 * 4; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0xc); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 4] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 4 < iVar22) { + lVar38 = lVar48 * 5; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x10); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 5] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 5 < iVar22) { + lVar38 = lVar48 * 6; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x14); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 6] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 6 < iVar22) { + lVar38 = lVar48 * 7; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x18); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 7] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 7 < iVar22) { + lVar38 = lVar48 * 8; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x1c); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 8] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 8 < iVar22) { + lVar38 = lVar48 * 9; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x20); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 9] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 9 < iVar22) { + lVar38 = lVar48 * 10; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x24); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 10] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 10 < iVar22) { + lVar38 = lVar48 * 0xb; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x28); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 0xb] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 0xb < iVar22) { + lVar38 = lVar48 * 0xc; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x2c); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 0xc] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 0xc < iVar22) { + lVar38 = lVar48 * 0xd; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x30); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 0xd] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 0xd < iVar22) { + lVar38 = lVar48 * 0xe; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x34); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 0xe] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + if (iVar97 + 0xe < iVar22) { + lVar38 = lVar48 * 0xf; + iVar96 = *(int *)((long)piVar68 + uVar52 + 0x38); + iVar79 = iVar79 + (uint)pbVar61[lVar48 * 0xf] * iVar96; + iVar44 = iVar44 + (uint)pbVar61[lVar38 + 1] * iVar96; + iVar76 = iVar76 + (uint)pbVar61[lVar38 + 2] * iVar96; + iVar39 = iVar39 + (uint)pbVar61[lVar38 + 3] * iVar96; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001ba964: + pbVar49 = pbVar49 + 4; + pbVar57 = pbVar57 + 4; + pbVar55 = pbVar55 + 4; + local_1b8 = local_1b8 + 4; + pbVar58 = pbVar58 + 4; + local_1a4 = local_1a4 + 4; + pbVar53 = pbVar53 + 4; + pbVar60 = pbVar60 + 4; + pbVar69 = pbVar69 + 4; + pbVar47 = pbVar47 + 4; + pbVar67 = pbVar67 + 4; + pbVar66 = pbVar66 + 4; + pbVar65 = pbVar65 + 4; + pbVar64 = pbVar64 + 4; + pbVar63 = pbVar63 + 4; + pbVar62 = pbVar62 + 4; + lVar84 = lVar84 + 4; + pbVar86 = pbVar86 + 4; + pbVar82 = pbVar82 + 4; + pbVar83 = pbVar83 + 4; + pbVar108 = pbVar108 + 4; + pbVar115 = pbVar115 + 4; + pbVar117 = pbVar117 + 4; + pbVar122 = pbVar122 + 4; + local_1f0 = local_1f0 + 4; + local_1e8 = local_1e8 + 4; + local_1a0[1] = CONCAT44(iVar39,iVar76); + *local_1a0 = CONCAT44(iVar44,iVar79); + local_1e0 = local_1e0 + 4; + local_1d8 = local_1d8 + 4; + local_1d0 = local_1d0 + 4; + local_1c8 = local_1c8 + 4; + local_1c0 = local_1c0 + 4; + pbVar111 = pbVar111 + 4; + local_1b0 = local_1b0 + 4; + pbVar88 = pbVar88 + 4; + pbVar71 = pbVar71 + 4; + pbVar85 = pbVar85 + 4; + local_1a0 = local_1a0 + 2; + } while (local_1a4 < param_4 + -3); + iVar44 = (param_4 - 4U & 0xfffffffc) + 4; + } + if (iVar44 < param_4) { + lVar43 = (long)param_5; + uVar29 = iVar22 - 1; + lVar45 = lVar43 * 2; + uVar20 = -((uint)((ulong)(piVar68 + 1) >> 2) & 3) & 3; + lVar32 = lVar43 * 3; + if (uVar29 < uVar20) { + uVar20 = uVar29; + } + uVar21 = uVar29; + if (0x11 < uVar29) { + uVar21 = uVar20; + } + lVar48 = (long)iVar44; + lVar116 = NEON_shl(lVar43,3); + lVar109 = NEON_shl(lVar43,4); + uVar20 = ((uVar29 - uVar21) - 0x10 >> 4) + 1; + uVar72 = uVar20 * 0x10; + lVar84 = NEON_shl(lVar32,1); + pbVar49 = param_2 + lVar48; + pbVar57 = param_2 + lVar48 + lVar43 * 4; + pbVar55 = param_2 + lVar48 + lVar43 * 7; + pbVar58 = param_2 + lVar48 + lVar43 * 10; + pbVar53 = param_2 + lVar48 + lVar43 * 0xc; + pbVar60 = param_2 + lVar48 + lVar43 * 0x10; + lVar46 = lVar43 + lVar48; + do { + iVar39 = (uint)*pbVar49 * *piVar68; + if (1 < iVar22) { + if (uVar21 == 0) { + uVar59 = 1; + pbVar69 = pbVar49; + } + else { + pbVar69 = pbVar49 + lVar43; + iVar39 = iVar39 + (uint)pbVar49[lVar43] * piVar68[1]; + if (uVar21 == 1) { + uVar59 = 2; + } + else { + pbVar69 = pbVar69 + lVar43; + iVar39 = iVar39 + (uint)pbVar49[lVar45] * piVar68[2]; + if (uVar21 == 2) { + uVar59 = 3; + } + else { + pbVar69 = pbVar69 + lVar43; + iVar39 = iVar39 + (uint)pbVar49[lVar32] * piVar68[3]; + if (uVar21 == 3) { + uVar59 = 4; + } + else { + iVar39 = iVar39 + (uint)*pbVar57 * piVar68[4]; + if (uVar21 == 4) { + uVar59 = 5; + pbVar69 = pbVar57; + } + else { + iVar39 = iVar39 + (uint)pbVar57[lVar43] * piVar68[5]; + if (uVar21 == 5) { + uVar59 = 6; + pbVar69 = pbVar57 + lVar43; + } + else { + iVar39 = iVar39 + (uint)pbVar57[lVar45] * piVar68[6]; + if (uVar21 == 6) { + uVar59 = 7; + pbVar69 = pbVar57 + lVar43 + lVar43; + } + else { + iVar39 = iVar39 + (uint)*pbVar55 * piVar68[7]; + if (uVar21 == 7) { + uVar59 = 8; + pbVar69 = pbVar55; + } + else { + iVar39 = iVar39 + (uint)pbVar55[lVar43] * piVar68[8]; + if (uVar21 == 8) { + uVar59 = 9; + pbVar69 = pbVar55 + lVar43; + } + else { + iVar39 = iVar39 + (uint)pbVar55[lVar45] * piVar68[9]; + if (uVar21 == 9) { + uVar59 = 10; + pbVar69 = pbVar55 + lVar43 + lVar43; + } + else { + iVar39 = iVar39 + (uint)*pbVar58 * piVar68[10]; + if (uVar21 == 10) { + uVar59 = 0xb; + pbVar69 = pbVar58; + } + else { + iVar39 = iVar39 + (uint)pbVar58[lVar43] * piVar68[0xb]; + if (uVar21 == 0xb) { + uVar59 = 0xc; + pbVar69 = pbVar58 + lVar43; + } + else { + iVar39 = iVar39 + (uint)*pbVar53 * piVar68[0xc]; + if (uVar21 == 0xc) { + uVar59 = 0xd; + pbVar69 = pbVar53; + } + else { + pbVar69 = pbVar53 + lVar43; + iVar39 = iVar39 + (uint)pbVar53[lVar43] * piVar68[0xd]; + if (uVar21 == 0xd) { + uVar59 = 0xe; + } + else { + iVar39 = iVar39 + (uint)pbVar53[lVar45] * piVar68[0xe]; + if (uVar21 == 0xe) { + uVar59 = 0xf; + pbVar69 = pbVar69 + lVar43; + } + else { + iVar39 = iVar39 + (uint)pbVar53[lVar32] * piVar68[0xf]; + if (uVar21 == 0xf) { + uVar59 = 0x10; + pbVar69 = pbVar69 + lVar43 + lVar43; + } + else { + iVar39 = iVar39 + (uint)*pbVar60 * piVar68[0x10]; + if (uVar21 == 0x10) { + uVar59 = 0x11; + pbVar69 = pbVar60; + } + else { + uVar59 = 0x12; + iVar39 = iVar39 + (uint)pbVar60[lVar43] * piVar68[0x11]; + pbVar69 = pbVar60 + lVar43; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar21 == uVar29) goto LAB_001bb0f0; + } + if (0xe < (iVar22 + -2) - uVar21) { + iVar76 = 0; + iVar79 = 0; + iVar96 = 0; + iVar97 = 0; + uVar70 = 0; + pbVar47 = param_2 + lVar43 * (ulong)uVar21 + lVar46; + pbVar67 = pbVar47 + lVar43 * 10; + piVar42 = piVar68 + (ulong)uVar21 + 1; + do { + bVar23 = *pbVar47; + uVar70 = uVar70 + 1; + bVar25 = pbVar47[lVar43]; + pbVar66 = pbVar47 + lVar45; + pbVar65 = pbVar47 + lVar32; + pbVar64 = pbVar47 + lVar43 * 4; + pbVar63 = pbVar47 + lVar43 * 5; + pbVar62 = pbVar47 + lVar84; + pbVar86 = pbVar67 + lVar43 * -3; + pbVar82 = pbVar47 + lVar116; + pbVar83 = pbVar47 + lVar116 + lVar43; + pbVar47 = pbVar47 + lVar109; + bVar24 = *pbVar67; + pbVar108 = pbVar67 + lVar43; + pbVar115 = pbVar67 + lVar45; + pbVar117 = pbVar67 + lVar32; + pbVar122 = pbVar67 + lVar43 * 4; + pbVar111 = pbVar67 + lVar43 * 5; + pbVar67 = pbVar67 + lVar109; + uVar31 = CONCAT12(*pbVar83,CONCAT11(*pbVar83,*pbVar82)) & 0xff00ff; + iVar76 = iVar76 + ((CONCAT12(bVar25,CONCAT11(bVar25,bVar23)) & 0xff00ff) & 0xffff) * + (int)*(undefined8 *)piVar42 + + (CONCAT12(*pbVar63,(ushort)*pbVar64) & 0xffff) * + (int)*(undefined8 *)(piVar42 + 4) + + (uVar31 & 0xffff) * (int)*(undefined8 *)(piVar42 + 8) + + (CONCAT12(*pbVar117,(ushort)*pbVar115) & 0xffff) * + (int)*(undefined8 *)(piVar42 + 0xc); + iVar79 = iVar79 + (uint)bVar25 * (int)((ulong)*(undefined8 *)piVar42 >> 0x20) + + (uint)*pbVar63 * (int)((ulong)*(undefined8 *)(piVar42 + 4) >> 0x20) + + (uint)(byte)(uVar31 >> 0x10) * + (int)((ulong)*(undefined8 *)(piVar42 + 8) >> 0x20) + + (uint)*pbVar117 * (int)((ulong)*(undefined8 *)(piVar42 + 0xc) >> 0x20); + iVar96 = iVar96 + (uint)*pbVar66 * (int)*(undefined8 *)(piVar42 + 2) + + (uint)*pbVar62 * (int)*(undefined8 *)(piVar42 + 6) + + (uint)bVar24 * (int)*(undefined8 *)(piVar42 + 10) + + (uint)*pbVar122 * (int)*(undefined8 *)(piVar42 + 0xe); + iVar97 = iVar97 + (uint)*pbVar65 * (int)((ulong)*(undefined8 *)(piVar42 + 2) >> 0x20) + + (uint)*pbVar86 * (int)((ulong)*(undefined8 *)(piVar42 + 6) >> 0x20) + + (uint)*pbVar108 * (int)((ulong)*(undefined8 *)(piVar42 + 10) >> 0x20) + + (uint)*pbVar111 * (int)((ulong)*(undefined8 *)(piVar42 + 0xe) >> 0x20); + piVar42 = piVar42 + 0x10; + } while (uVar70 < uVar20); + uVar59 = (ulong)((int)uVar59 + uVar72); + pbVar69 = pbVar69 + lVar43 * (ulong)uVar72; + iVar39 = iVar39 + iVar76 + iVar79 + iVar96 + iVar97; + if (uVar72 == uVar29 - uVar21) goto LAB_001bb0f0; + } + uVar52 = -(uVar59 >> 0x1f) & 0xfffffffc00000000 | uVar59 << 2; + iVar76 = (int)uVar59; + iVar39 = iVar39 + (uint)pbVar69[lVar43] * *(int *)((long)piVar68 + uVar52); + if (iVar76 + 1 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 2] * *(int *)((long)piVar68 + uVar52 + 4); + if (iVar76 + 2 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 3] * *(int *)((long)piVar68 + uVar52 + 8); + if (iVar76 + 3 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 4] * *(int *)((long)piVar68 + uVar52 + 0xc); + if (iVar76 + 4 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 5] * + *(int *)((long)piVar68 + uVar52 + 0x10); + if (iVar76 + 5 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 6] * + *(int *)((long)piVar68 + uVar52 + 0x14); + if (iVar76 + 6 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 7] * + *(int *)((long)piVar68 + uVar52 + 0x18); + if (iVar76 + 7 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 8] * + *(int *)((long)piVar68 + uVar52 + 0x1c); + if (iVar76 + 8 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 9] * + *(int *)((long)piVar68 + uVar52 + 0x20); + if (iVar76 + 9 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 10] * + *(int *)((long)piVar68 + uVar52 + 0x24); + if (iVar76 + 10 < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 0xb] * + *(int *)((long)piVar68 + uVar52 + 0x28); + if (iVar76 + 0xb < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 0xc] * + *(int *)((long)piVar68 + uVar52 + 0x2c); + if (iVar76 + 0xc < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 0xd] * + *(int *)((long)piVar68 + uVar52 + 0x30); + if (iVar76 + 0xd < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 0xe] * + *(int *)((long)piVar68 + uVar52 + 0x34); + if (iVar76 + 0xe < iVar22) { + iVar39 = iVar39 + (uint)pbVar69[lVar43 * 0xf] * + *(int *)((long)piVar68 + uVar52 + 0x38); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001bb0f0: + *(int *)((long)param_3 + lVar46 * 4 + lVar43 * -4) = iVar39; + lVar46 = lVar46 + 1; + pbVar49 = pbVar49 + 1; + pbVar57 = pbVar57 + 1; + pbVar55 = pbVar55 + 1; + pbVar58 = pbVar58 + 1; + pbVar53 = pbVar53 + 1; + pbVar60 = pbVar60 + 1; + } while (lVar46 != lVar48 + lVar43 + 1 + (ulong)(uint)((param_4 + -1) - iVar44)); + } + return; +} + + +================================================================== + +### FUNC 001bb28c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb290 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb294 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb298 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb29c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2a0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2a4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2a8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2ac (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2b0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2b4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2b8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2bc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2c0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2c4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2c8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2cc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2d0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2d4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2d8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2dc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2e0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2e4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2e8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2ec (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2f0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2f4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2f8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb2fc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb300 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb304 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb308 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb30c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb310 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb314 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb318 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb31c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb320 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb324 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb328 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb32c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb330 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb334 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb338 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb33c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb340 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb344 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb348 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001bb34c (80 bytes) name=FUN_001bb34c + +void FUN_001bb34c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3f10; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb39c (80 bytes) name=FUN_001bb39c + +void FUN_001bb39c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3ee0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb3ec (80 bytes) name=FUN_001bb3ec + +void FUN_001bb3ec(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3eb0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb43c (80 bytes) name=FUN_001bb43c + +void FUN_001bb43c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3e80; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb48c (80 bytes) name=FUN_001bb48c + +void FUN_001bb48c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3e50; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb4dc (80 bytes) name=FUN_001bb4dc + +void FUN_001bb4dc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3e20; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb52c (80 bytes) name=FUN_001bb52c + +void FUN_001bb52c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3df0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb57c (80 bytes) name=FUN_001bb57c + +void FUN_001bb57c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3dc0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb5cc (80 bytes) name=FUN_001bb5cc + +void FUN_001bb5cc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d90; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb61c (80 bytes) name=FUN_001bb61c + +void FUN_001bb61c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d60; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb66c (80 bytes) name=FUN_001bb66c + +void FUN_001bb66c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d30; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb6bc (80 bytes) name=FUN_001bb6bc + +void FUN_001bb6bc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d00; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb70c (80 bytes) name=FUN_001bb70c + +void FUN_001bb70c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3cd0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + return; + } + return; +} + + +================================================================== + +### FUNC 001bb75c (812 bytes) name=FUN_001bb75c + +void FUN_001bb75c(long param_1,long param_2,undefined2 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + long lVar5; + long lVar6; + undefined2 uVar7; + long lVar8; + undefined2 *puVar9; + undefined2 uVar10; + undefined2 uVar11; + long lVar12; + int iVar13; + long lVar14; + long lVar15; + float fVar16; + float fVar17; + float fVar18; + float __x; + float __x_00; + float __x_01; + int local_1c; + + lVar12 = *(long *)(param_1 + 0x18); + fVar18 = *(float *)(param_1 + 0x60); + lVar14 = *(long *)(param_1 + 0x30); + lVar15 = *(long *)(param_1 + 0x48); + param_6 = param_6 * param_7; + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar12 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + local_1c = param_5; + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar15 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar12 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar12 + lVar5)) * 2; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + uVar10 = 0x8000; + uVar11 = 0x7fff; + if (0 < iVar3) { + iVar13 = 0; + lVar5 = 0; + puVar9 = param_3; + do { + fVar16 = fVar18; + __x_01 = fVar18; + __x_00 = fVar18; + __x = fVar18; + if (0 < iVar4) { + lVar6 = 0; + do { + lVar8 = *(long *)(lVar15 + lVar6 * 8); + fVar17 = *(float *)(lVar14 + lVar6 * 4); + lVar6 = lVar6 + 1; + lVar2 = lVar8 + lVar5; + fVar16 = fVar16 + fVar17 * (float)(int)*(short *)(lVar8 + lVar5); + __x = __x + fVar17 * (float)(int)*(short *)(lVar2 + 2); + __x_00 = __x_00 + fVar17 * (float)(int)*(short *)(lVar2 + 4); + __x_01 = __x_01 + fVar17 * (float)(int)*(short *)(lVar2 + 6); + } while ((int)lVar6 < iVar4); + } + lVar6 = lrintf(fVar16); + uVar7 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar7 = uVar11, (int)lVar6 < 1)) { + uVar7 = uVar10; + } + *puVar9 = uVar7; + lVar6 = lrintf(__x); + uVar7 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar7 = uVar11, (int)lVar6 < 1)) { + uVar7 = uVar10; + } + puVar9[1] = uVar7; + lVar6 = lrintf(__x_00); + uVar7 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar7 = 0x7fff, (int)lVar6 < 1)) { + uVar7 = 0x8000; + } + puVar9[2] = uVar7; + lVar6 = lrintf(__x_01); + uVar7 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar7 = 0x7fff, (int)lVar6 < 1)) { + uVar7 = 0x8000; + } + iVar13 = iVar13 + 4; + puVar9[3] = uVar7; + lVar5 = lVar5 + 8; + puVar9 = puVar9 + 4; + } while (iVar13 < iVar3); + } + lVar5 = (long)iVar1 << 1; + if (iVar1 < param_6) { + do { + lVar6 = 0; + fVar16 = fVar18; + if (0 < iVar4) { + do { + lVar2 = lVar6 * 8; + lVar8 = lVar6 * 4; + lVar6 = lVar6 + 1; + fVar16 = fVar16 + (float)(int)*(short *)(*(long *)(lVar15 + lVar2) + lVar5) * + *(float *)(lVar14 + lVar8); + } while ((int)lVar6 < iVar4); + } + puVar9 = (undefined2 *)((long)param_3 + lVar5); + lVar6 = lrintf(fVar16); + uVar7 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar7 = uVar11, (int)lVar6 < 1)) { + uVar7 = uVar10; + } + lVar5 = lVar5 + 2; + *puVar9 = uVar7; + } while (lVar5 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 2); + } + local_1c = local_1c + -1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (local_1c != 0); + } + return; +} + + +================================================================== + +### FUNC 001bba88 (772 bytes) name=FUN_001bba88 + +void FUN_001bba88(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + int iVar2; + int iVar3; + long lVar4; + long lVar5; + long lVar6; + undefined2 uVar7; + long lVar8; + undefined2 uVar9; + undefined2 uVar10; + long lVar11; + undefined2 *puVar12; + long lVar13; + long lVar14; + float fVar15; + float fVar16; + float fVar17; + float __x; + float __x_00; + float __x_01; + int local_1c; + + lVar11 = *(long *)(param_1 + 0x18); + fVar17 = *(float *)(param_1 + 0x60); + lVar14 = *(long *)(param_1 + 0x30); + lVar13 = *(long *)(param_1 + 0x48); + param_6 = param_6 * param_7; + iVar3 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + iVar2 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar2 < 1) { + iVar1 = 0; + } + local_1c = param_5; + do { + lVar4 = 0; + if (0 < iVar3) { + do { + *(long *)(lVar13 + lVar4) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar4 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar4)); + lVar4 = lVar4 + 8; + } while (lVar4 != ((ulong)(iVar3 - 1) + 1) * 8); + } + uVar9 = 0x8000; + uVar10 = 0x7fff; + if (0 < iVar2) { + lVar4 = 0; + puVar12 = (undefined2 *)(param_3 + 6); + do { + fVar15 = fVar17; + __x_01 = fVar17; + __x_00 = fVar17; + __x = fVar17; + if (0 < iVar3) { + lVar5 = 0; + do { + lVar8 = *(long *)(lVar13 + lVar5 * 8); + fVar16 = *(float *)(lVar14 + lVar5 * 4); + lVar5 = lVar5 + 1; + lVar6 = lVar8 + lVar4; + fVar15 = fVar15 + fVar16 * (float)*(byte *)(lVar8 + lVar4); + __x = __x + fVar16 * (float)*(byte *)(lVar6 + 1); + __x_00 = __x_00 + fVar16 * (float)*(byte *)(lVar6 + 2); + __x_01 = __x_01 + fVar16 * (float)*(byte *)(lVar6 + 3); + } while ((int)lVar5 < iVar3); + } + lVar5 = lrintf(fVar15); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = uVar10, (int)lVar5 < 1)) { + uVar7 = uVar9; + } + puVar12[-3] = uVar7; + lVar5 = lrintf(__x); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = uVar10, (int)lVar5 < 1)) { + uVar7 = uVar9; + } + puVar12[-2] = uVar7; + lVar5 = lrintf(__x_00); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = 0x7fff, (int)lVar5 < 1)) { + uVar7 = 0x8000; + } + puVar12[-1] = uVar7; + lVar5 = lrintf(__x_01); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = 0x7fff, (int)lVar5 < 1)) { + uVar7 = 0x8000; + } + lVar4 = lVar4 + 4; + *puVar12 = uVar7; + puVar12 = puVar12 + 4; + } while ((int)lVar4 < iVar2); + } + lVar4 = (long)iVar1; + if (iVar1 < param_6) { + do { + lVar5 = 0; + fVar15 = fVar17; + if (0 < iVar3) { + do { + lVar6 = lVar5 * 8; + lVar8 = lVar5 * 4; + lVar5 = lVar5 + 1; + fVar15 = fVar15 + (float)*(byte *)(*(long *)(lVar13 + lVar6) + lVar4) * + *(float *)(lVar14 + lVar8); + } while ((int)lVar5 < iVar3); + } + lVar6 = lrintf(fVar15); + lVar5 = lVar4 * 2; + uVar7 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar7 = uVar10, (int)lVar6 < 1)) { + uVar7 = uVar9; + } + lVar4 = lVar4 + 1; + *(undefined2 *)(param_3 + lVar5) = uVar7; + } while (lVar4 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + local_1c = local_1c + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (local_1c != 0); + } + return; +} + + +================================================================== + +### FUNC 001bbd8c (748 bytes) name=FUN_001bbd8c + +void FUN_001bbd8c(long param_1,long param_2,undefined2 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + undefined2 *puVar10; + int iVar11; + long lVar12; + long lVar13; + float fVar14; + float fVar15; + float fVar16; + float __x; + float __x_00; + float __x_01; + int local_1c; + + lVar9 = *(long *)(param_1 + 0x18); + fVar16 = *(float *)(param_1 + 0x60); + lVar13 = *(long *)(param_1 + 0x30); + lVar12 = *(long *)(param_1 + 0x48); + param_6 = param_6 * param_7; + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar9 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + local_1c = param_5; + do { + lVar6 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar12 + lVar6) = + *(long *)(param_2 + (long)*(int *)(lVar9 + lVar6 + 4) * 8) + + (long)(param_7 * *(int *)(lVar9 + lVar6)) * 2; + lVar6 = lVar6 + 8; + } while (lVar6 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + iVar11 = 0; + lVar6 = 0; + puVar10 = param_3; + do { + fVar14 = fVar16; + __x_01 = fVar16; + __x_00 = fVar16; + __x = fVar16; + if (0 < iVar4) { + lVar7 = 0; + do { + lVar8 = *(long *)(lVar12 + lVar7 * 8); + fVar15 = *(float *)(lVar13 + lVar7 * 4); + lVar7 = lVar7 + 1; + lVar2 = lVar8 + lVar6; + fVar14 = fVar14 + fVar15 * (float)*(ushort *)(lVar8 + lVar6); + __x = __x + fVar15 * (float)*(ushort *)(lVar2 + 2); + __x_00 = __x_00 + fVar15 * (float)*(ushort *)(lVar2 + 4); + __x_01 = __x_01 + fVar15 * (float)*(ushort *)(lVar2 + 6); + } while ((int)lVar7 < iVar4); + } + lVar7 = lrintf(fVar14); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar10 = (short)uVar5; + lVar7 = lrintf(__x); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[1] = (short)uVar5; + lVar7 = lrintf(__x_00); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[2] = (short)uVar5; + lVar7 = lrintf(__x_01); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[3] = (short)uVar5; + iVar11 = iVar11 + 4; + lVar6 = lVar6 + 8; + puVar10 = puVar10 + 4; + } while (iVar11 < iVar3); + } + lVar6 = (long)iVar1 << 1; + if (iVar1 < param_6) { + do { + lVar7 = 0; + fVar14 = fVar16; + if (0 < iVar4) { + do { + lVar2 = lVar7 * 8; + lVar8 = lVar7 * 4; + lVar7 = lVar7 + 1; + fVar14 = fVar14 + (float)*(ushort *)(*(long *)(lVar12 + lVar2) + lVar6) * + *(float *)(lVar13 + lVar8); + } while ((int)lVar7 < iVar4); + } + lVar7 = lrintf(fVar14); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *(short *)((long)param_3 + lVar6) = (short)uVar5; + lVar6 = lVar6 + 2; + } while (lVar6 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 2); + } + param_2 = param_2 + 8; + local_1c = local_1c + -1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (local_1c != 0); + } + return; +} + + +================================================================== + +### FUNC 001bc078 (720 bytes) name=FUN_001bc078 + +void FUN_001bc078(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + undefined2 *puVar10; + long lVar11; + long lVar12; + float fVar13; + float fVar14; + float fVar15; + float __x; + float __x_00; + float __x_01; + + lVar9 = *(long *)(param_1 + 0x18); + fVar15 = *(float *)(param_1 + 0x60); + lVar12 = *(long *)(param_1 + 0x30); + lVar11 = *(long *)(param_1 + 0x48); + param_6 = param_6 * param_7; + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar9 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar6 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar11 + lVar6) = + *(long *)(param_2 + (long)*(int *)(lVar9 + lVar6 + 4) * 8) + + (long)(param_7 * *(int *)(lVar9 + lVar6)); + lVar6 = lVar6 + 8; + } while (lVar6 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar6 = 0; + puVar10 = (undefined2 *)(param_3 + 6); + do { + fVar13 = fVar15; + __x_01 = fVar15; + __x_00 = fVar15; + __x = fVar15; + if (0 < iVar4) { + lVar7 = 0; + do { + lVar8 = *(long *)(lVar11 + lVar7 * 8); + fVar14 = *(float *)(lVar12 + lVar7 * 4); + lVar7 = lVar7 + 1; + lVar2 = lVar8 + lVar6; + fVar13 = fVar13 + fVar14 * (float)*(byte *)(lVar8 + lVar6); + __x = __x + fVar14 * (float)*(byte *)(lVar2 + 1); + __x_00 = __x_00 + fVar14 * (float)*(byte *)(lVar2 + 2); + __x_01 = __x_01 + fVar14 * (float)*(byte *)(lVar2 + 3); + } while ((int)lVar7 < iVar4); + } + lVar7 = lrintf(fVar13); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[-3] = (short)uVar5; + lVar7 = lrintf(__x); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[-2] = (short)uVar5; + lVar7 = lrintf(__x_00); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[-1] = (short)uVar5; + lVar7 = lrintf(__x_01); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar6 = lVar6 + 4; + *puVar10 = (short)uVar5; + puVar10 = puVar10 + 4; + } while ((int)lVar6 < iVar3); + } + lVar6 = (long)iVar1; + if (iVar1 < param_6) { + do { + lVar7 = 0; + fVar13 = fVar15; + if (0 < iVar4) { + do { + lVar2 = lVar7 * 8; + lVar8 = lVar7 * 4; + lVar7 = lVar7 + 1; + fVar13 = fVar13 + (float)*(byte *)(*(long *)(lVar11 + lVar2) + lVar6) * + *(float *)(lVar12 + lVar8); + } while ((int)lVar7 < iVar4); + } + lVar7 = lrintf(fVar13); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *(short *)(param_3 + lVar6 * 2) = (short)uVar5; + lVar6 = lVar6 + 1; + } while (lVar6 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_2 = param_2 + 8; + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001bc348 (716 bytes) name=FUN_001bc348 + +void FUN_001bc348(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + undefined1 *puVar10; + long lVar11; + long lVar12; + float fVar13; + float fVar14; + float fVar15; + float __x; + float __x_00; + float __x_01; + + lVar9 = *(long *)(param_1 + 0x18); + fVar15 = *(float *)(param_1 + 0x60); + lVar12 = *(long *)(param_1 + 0x30); + lVar11 = *(long *)(param_1 + 0x48); + param_6 = param_6 * param_7; + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar9 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar6 = 0; + if (0 < iVar4) { + do { + *(long *)(lVar11 + lVar6) = + *(long *)(param_2 + (long)*(int *)(lVar9 + lVar6 + 4) * 8) + + (long)(param_7 * *(int *)(lVar9 + lVar6)); + lVar6 = lVar6 + 8; + } while (lVar6 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar6 = 0; + puVar10 = param_3; + do { + fVar13 = fVar15; + __x_01 = fVar15; + __x_00 = fVar15; + __x = fVar15; + if (0 < iVar4) { + lVar7 = 0; + do { + lVar8 = *(long *)(lVar11 + lVar7 * 8); + fVar14 = *(float *)(lVar12 + lVar7 * 4); + lVar7 = lVar7 + 1; + lVar2 = lVar8 + lVar6; + fVar13 = fVar13 + fVar14 * (float)*(byte *)(lVar8 + lVar6); + __x = __x + fVar14 * (float)*(byte *)(lVar2 + 1); + __x_00 = __x_00 + fVar14 * (float)*(byte *)(lVar2 + 2); + __x_01 = __x_01 + fVar14 * (float)*(byte *)(lVar2 + 3); + } while ((int)lVar7 < iVar4); + } + lVar7 = lrintf(fVar13); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar10 = (char)uVar5; + lVar7 = lrintf(__x); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[1] = (char)uVar5; + lVar7 = lrintf(__x_00); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar10[2] = (char)uVar5; + lVar7 = lrintf(__x_01); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar6 = lVar6 + 4; + puVar10[3] = (char)uVar5; + puVar10 = puVar10 + 4; + } while ((int)lVar6 < iVar3); + } + lVar6 = (long)iVar1; + if (iVar1 < param_6) { + do { + lVar7 = 0; + fVar13 = fVar15; + if (0 < iVar4) { + do { + lVar2 = lVar7 * 8; + lVar8 = lVar7 * 4; + lVar7 = lVar7 + 1; + fVar13 = fVar13 + (float)*(byte *)(*(long *)(lVar11 + lVar2) + lVar6) * + *(float *)(lVar12 + lVar8); + } while ((int)lVar7 < iVar4); + } + lVar7 = lrintf(fVar13); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + param_3[lVar6] = (char)uVar5; + lVar6 = lVar6 + 1; + } while (lVar6 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_2 = param_2 + 8; + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001bc614 (1460 bytes) name=FUN_001bc614 + +void FUN_001bc614(long param_1,long param_2,undefined2 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + float *pfVar2; + long *plVar3; + long lVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + long lVar9; + long lVar10; + long *plVar11; + long *plVar12; + long *plVar13; + long lVar14; + float *pfVar15; + undefined2 *puVar16; + long lVar17; + long *plVar18; + long *plVar19; + long lVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + + iVar5 = *(int *)(param_1 + 8) / 2; + fVar23 = *(float *)(param_1 + 0x74); + pfVar2 = (float *)(*(long *)(param_1 + 0x20) + (long)iVar5 * 4); + plVar19 = (long *)(param_2 + (long)iVar5 * 8); + if ((*(uint *)(param_1 + 0x78) & 1) == 0) { + if (param_5 != 0) { + plVar18 = plVar19 + -1; + plVar3 = plVar19 + (param_5 - 1); + iVar6 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar6 < 1) { + iVar1 = 0; + } + lVar14 = (long)iVar1; + lVar20 = NEON_shl(lVar14,2); + do { + plVar19 = plVar19 + 1; + if (0 < iVar6) { + lVar17 = 0; + puVar16 = param_3; + do { + fVar22 = fVar23; + fVar26 = fVar23; + fVar25 = fVar23; + fVar24 = fVar23; + if (0 < iVar5) { + lVar9 = lVar17 * 4; + plVar11 = plVar18; + plVar12 = plVar19; + pfVar15 = pfVar2; + do { + pfVar15 = pfVar15 + 1; + plVar13 = plVar11 + -1; + lVar10 = *plVar11 + lVar9; + lVar4 = *plVar12 + lVar9; + fVar21 = *pfVar15; + fVar22 = fVar22 + fVar21 * (*(float *)(*plVar12 + lVar9) - + *(float *)(*plVar11 + lVar9)); + fVar24 = fVar24 + fVar21 * (*(float *)(lVar4 + 4) - *(float *)(lVar10 + 4)); + fVar25 = fVar25 + fVar21 * (*(float *)(lVar4 + 8) - *(float *)(lVar10 + 8)); + fVar26 = fVar26 + fVar21 * (*(float *)(lVar4 + 0xc) - *(float *)(lVar10 + 0xc)); + plVar11 = plVar13; + plVar12 = plVar12 + 1; + } while (plVar18 + (-1 - (ulong)(iVar5 - 1U)) != plVar13); + } + lVar9 = lrintf(fVar22); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *puVar16 = (short)uVar7; + lVar9 = lrintf(fVar24); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar16[1] = (short)uVar7; + lVar9 = lrintf(fVar25); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar16[2] = (short)uVar7; + lVar9 = lrintf(fVar26); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar16[3] = (short)uVar7; + lVar17 = lVar17 + 4; + puVar16 = puVar16 + 4; + } while ((int)lVar17 < iVar6); + } + if (iVar1 < param_6) { + lVar9 = lVar20; + lVar17 = lVar14; + do { + plVar11 = plVar19; + plVar12 = plVar18; + fVar22 = fVar23; + pfVar15 = pfVar2; + if (0 < iVar5) { + do { + plVar13 = plVar11 + 1; + fVar22 = fVar22 + (*(float *)(*plVar11 + lVar9) - *(float *)(*plVar12 + lVar9)) * + pfVar15[1]; + plVar11 = plVar13; + plVar12 = plVar12 + -1; + pfVar15 = pfVar15 + 1; + } while (plVar18 + (ulong)(iVar5 - 1U) + 3 != plVar13); + } + lVar10 = lrintf(fVar22); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + param_3[lVar17] = (short)uVar7; + lVar17 = lVar17 + 1; + lVar9 = lVar9 + 4; + } while (lVar17 != lVar14 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + plVar18 = plVar18 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar18 != plVar3); + } + } + else if (param_5 != 0) { + plVar18 = plVar19 + -1; + plVar3 = plVar19 + (param_5 - 1); + uVar7 = param_6 - 4U >> 2; + iVar1 = (uVar7 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + lVar14 = (long)iVar1; + do { + plVar19 = plVar19 + 1; + if (0 < param_6 + -3) { + lVar20 = 0; + puVar16 = param_3 + 3; + do { + fVar26 = *pfVar2; + lVar17 = plVar18[1] + lVar20; + fVar22 = fVar23 + fVar26 * *(float *)(plVar18[1] + lVar20); + fVar24 = fVar23 + fVar26 * *(float *)(lVar17 + 4); + fVar25 = fVar23 + fVar26 * *(float *)(lVar17 + 8); + fVar26 = fVar23 + fVar26 * *(float *)(lVar17 + 0xc); + plVar11 = plVar18; + plVar12 = plVar19; + pfVar15 = pfVar2; + if (0 < iVar5) { + do { + plVar13 = plVar11 + -1; + lVar17 = *plVar11 + lVar20; + lVar9 = *plVar12 + lVar20; + fVar21 = pfVar15[1]; + fVar22 = fVar22 + fVar21 * (*(float *)(*plVar12 + lVar20) + + *(float *)(*plVar11 + lVar20)); + fVar24 = fVar24 + fVar21 * (*(float *)(lVar9 + 4) + *(float *)(lVar17 + 4)); + fVar25 = fVar25 + fVar21 * (*(float *)(lVar9 + 8) + *(float *)(lVar17 + 8)); + fVar26 = fVar26 + fVar21 * (*(float *)(lVar9 + 0xc) + *(float *)(lVar17 + 0xc)); + plVar11 = plVar13; + plVar12 = plVar12 + 1; + pfVar15 = pfVar15 + 1; + } while (plVar18 + (-1 - (ulong)(iVar5 - 1)) != plVar13); + } + lVar17 = lrintf(fVar22); + uVar8 = (uint)lVar17; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar16[-3] = (short)uVar8; + lVar17 = lrintf(fVar24); + uVar8 = (uint)lVar17; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar16[-2] = (short)uVar8; + lVar17 = lrintf(fVar25); + uVar8 = (uint)lVar17; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar16[-1] = (short)uVar8; + lVar17 = lrintf(fVar26); + uVar8 = (uint)lVar17; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar16 = (short)uVar8; + lVar20 = lVar20 + 0x10; + puVar16 = puVar16 + 4; + } while (lVar20 != ((ulong)uVar7 + 1) * 0x10); + } + if (iVar1 < param_6) { + lVar20 = lVar14 << 2; + puVar16 = param_3 + lVar14; + do { + fVar22 = fVar23 + *(float *)(plVar18[1] + lVar20) * *pfVar2; + plVar11 = plVar19; + plVar12 = plVar18; + pfVar15 = pfVar2; + if (0 < iVar5) { + do { + plVar13 = plVar11 + 1; + fVar22 = fVar22 + (*(float *)(*plVar11 + lVar20) + *(float *)(*plVar12 + lVar20)) * + pfVar15[1]; + plVar11 = plVar13; + plVar12 = plVar12 + -1; + pfVar15 = pfVar15 + 1; + } while (plVar18 + (ulong)(iVar5 - 1) + 3 != plVar13); + } + lVar17 = lrintf(fVar22); + uVar8 = (uint)lVar17; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar20 = lVar20 + 4; + *puVar16 = (short)uVar8; + puVar16 = puVar16 + 1; + } while (lVar20 != (lVar14 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4); + } + plVar18 = plVar18 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar18 != plVar3); + } + return; +} + + +================================================================== + +### FUNC 001bcbc8 (668 bytes) name=FUN_001bcbc8 + +void FUN_001bcbc8(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + float *pfVar4; + uint uVar5; + long lVar6; + long *plVar7; + long *plVar8; + long *plVar9; + float *pfVar10; + long *plVar11; + undefined2 *puVar12; + long lVar13; + long lVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float __x; + float __x_00; + + pfVar10 = *(float **)(param_1 + 0x20); + fVar17 = *(float *)(param_1 + 0x74); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + lVar13 = (long)iVar2; + plVar9 = (long *)(param_2 + 8); + plVar11 = (long *)(param_2 + ((ulong)(iVar1 - 2) + 2) * 8); + do { + if (0 < param_6 + -3) { + lVar14 = 0; + puVar12 = (undefined2 *)(param_3 + 6); + do { + fVar18 = *pfVar10; + lVar6 = plVar9[-1] + lVar14; + fVar15 = fVar17 + fVar18 * *(float *)(plVar9[-1] + lVar14); + __x_00 = fVar17 + fVar18 * *(float *)(lVar6 + 4); + __x = fVar17 + fVar18 * *(float *)(lVar6 + 8); + fVar18 = fVar17 + fVar18 * *(float *)(lVar6 + 0xc); + plVar7 = plVar9; + pfVar4 = pfVar10; + if (1 < iVar1) { + do { + plVar8 = plVar7 + 1; + fVar16 = pfVar4[1]; + lVar6 = *plVar7 + lVar14; + fVar15 = fVar15 + fVar16 * *(float *)(*plVar7 + lVar14); + __x_00 = __x_00 + fVar16 * *(float *)(lVar6 + 4); + __x = __x + fVar16 * *(float *)(lVar6 + 8); + fVar18 = fVar18 + fVar16 * *(float *)(lVar6 + 0xc); + plVar7 = plVar8; + pfVar4 = pfVar4 + 1; + } while (plVar11 != plVar8); + } + lVar6 = lrintf(fVar15); + uVar5 = (uint)lVar6; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar12[-3] = (short)uVar5; + lVar6 = lrintf(__x_00); + uVar5 = (uint)lVar6; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar12[-2] = (short)uVar5; + lVar6 = lrintf(__x); + uVar5 = (uint)lVar6; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar12[-1] = (short)uVar5; + lVar6 = lrintf(fVar18); + uVar5 = (uint)lVar6; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar14 = lVar14 + 0x10; + *puVar12 = (short)uVar5; + puVar12 = puVar12 + 4; + } while (lVar14 != ((ulong)uVar3 + 1) * 0x10); + } + lVar14 = lVar13 << 2; + puVar12 = (undefined2 *)(param_3 + lVar13 * 2); + if (iVar2 < param_6) { + do { + fVar15 = fVar17 + *(float *)(plVar9[-1] + lVar14) * *pfVar10; + plVar7 = plVar9; + pfVar4 = pfVar10; + if (1 < iVar1) { + do { + plVar8 = plVar7 + 1; + fVar15 = fVar15 + *(float *)(*plVar7 + lVar14) * pfVar4[1]; + plVar7 = plVar8; + pfVar4 = pfVar4 + 1; + } while (plVar11 != plVar8); + } + lVar6 = lrintf(fVar15); + uVar5 = (uint)lVar6; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar14 = lVar14 + 4; + *puVar12 = (short)uVar5; + puVar12 = puVar12 + 1; + } while (lVar14 != (lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 4); + } + plVar9 = plVar9 + 1; + plVar11 = plVar11 + 1; + param_3 = param_3 + param_4; + } while (plVar9 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001bce64 (1428 bytes) name=FUN_001bce64 + +void FUN_001bce64(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + float *pfVar2; + long *plVar3; + long lVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + long lVar9; + long lVar10; + long *plVar11; + long *plVar12; + long *plVar13; + long lVar14; + float *pfVar15; + undefined1 *puVar16; + long lVar17; + long *plVar18; + long *plVar19; + long lVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + + iVar5 = *(int *)(param_1 + 8) / 2; + fVar23 = *(float *)(param_1 + 0x74); + pfVar2 = (float *)(*(long *)(param_1 + 0x20) + (long)iVar5 * 4); + plVar19 = (long *)(param_2 + (long)iVar5 * 8); + if ((*(uint *)(param_1 + 0x78) & 1) == 0) { + if (param_5 != 0) { + plVar18 = plVar19 + -1; + iVar6 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + plVar3 = plVar19 + (param_5 - 1); + if (iVar6 < 1) { + iVar1 = 0; + } + lVar14 = (long)iVar1; + lVar20 = NEON_shl(lVar14,2); + do { + plVar19 = plVar19 + 1; + if (0 < iVar6) { + lVar17 = 0; + puVar16 = param_3; + do { + fVar22 = fVar23; + fVar26 = fVar23; + fVar25 = fVar23; + fVar24 = fVar23; + if (0 < iVar5) { + lVar9 = lVar17 * 4; + plVar11 = plVar18; + plVar12 = plVar19; + pfVar15 = pfVar2; + do { + pfVar15 = pfVar15 + 1; + plVar13 = plVar11 + -1; + lVar10 = *plVar11 + lVar9; + lVar4 = *plVar12 + lVar9; + fVar21 = *pfVar15; + fVar22 = fVar22 + fVar21 * (*(float *)(*plVar12 + lVar9) - + *(float *)(*plVar11 + lVar9)); + fVar24 = fVar24 + fVar21 * (*(float *)(lVar4 + 4) - *(float *)(lVar10 + 4)); + fVar25 = fVar25 + fVar21 * (*(float *)(lVar4 + 8) - *(float *)(lVar10 + 8)); + fVar26 = fVar26 + fVar21 * (*(float *)(lVar4 + 0xc) - *(float *)(lVar10 + 0xc)); + plVar11 = plVar13; + plVar12 = plVar12 + 1; + } while (plVar18 + (-1 - (ulong)(iVar5 - 1)) != plVar13); + } + lVar9 = lrintf(fVar22); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *puVar16 = (char)uVar7; + lVar9 = lrintf(fVar24); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar16[1] = (char)uVar7; + lVar9 = lrintf(fVar25); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar16[2] = (char)uVar7; + lVar9 = lrintf(fVar26); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar17 = lVar17 + 4; + puVar16[3] = (char)uVar7; + puVar16 = puVar16 + 4; + } while ((int)lVar17 < iVar6); + } + if (iVar1 < param_6) { + lVar9 = lVar20; + lVar17 = lVar14; + do { + plVar11 = plVar19; + plVar12 = plVar18; + fVar22 = fVar23; + pfVar15 = pfVar2; + if (0 < iVar5) { + do { + plVar13 = plVar11 + 1; + fVar22 = fVar22 + (*(float *)(*plVar11 + lVar9) - *(float *)(*plVar12 + lVar9)) * + pfVar15[1]; + plVar11 = plVar13; + plVar12 = plVar12 + -1; + pfVar15 = pfVar15 + 1; + } while (plVar18 + (ulong)(iVar5 - 1) + 3 != plVar13); + } + lVar10 = lrintf(fVar22); + uVar7 = (uint)lVar10; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + param_3[lVar17] = (char)uVar7; + lVar17 = lVar17 + 1; + lVar9 = lVar9 + 4; + } while (lVar17 != lVar14 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + plVar18 = plVar18 + 1; + param_3 = param_3 + param_4; + } while (plVar18 != plVar3); + } + } + else if (param_5 != 0) { + plVar18 = plVar19 + -1; + plVar3 = plVar19 + (param_5 - 1); + uVar7 = param_6 - 4U >> 2; + iVar1 = (uVar7 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + lVar14 = (long)iVar1; + lVar20 = NEON_shl(lVar14,2); + do { + plVar19 = plVar19 + 1; + if (0 < param_6 + -3) { + lVar17 = 0; + puVar16 = param_3; + do { + fVar26 = *pfVar2; + lVar9 = plVar18[1] + lVar17; + fVar22 = fVar23 + fVar26 * *(float *)(plVar18[1] + lVar17); + fVar24 = fVar23 + fVar26 * *(float *)(lVar9 + 4); + fVar25 = fVar23 + fVar26 * *(float *)(lVar9 + 8); + fVar26 = fVar23 + fVar26 * *(float *)(lVar9 + 0xc); + plVar11 = plVar18; + plVar12 = plVar19; + pfVar15 = pfVar2; + if (0 < iVar5) { + do { + plVar13 = plVar11 + -1; + lVar9 = *plVar11 + lVar17; + lVar10 = *plVar12 + lVar17; + fVar21 = pfVar15[1]; + fVar22 = fVar22 + fVar21 * (*(float *)(*plVar12 + lVar17) + + *(float *)(*plVar11 + lVar17)); + fVar24 = fVar24 + fVar21 * (*(float *)(lVar10 + 4) + *(float *)(lVar9 + 4)); + fVar25 = fVar25 + fVar21 * (*(float *)(lVar10 + 8) + *(float *)(lVar9 + 8)); + fVar26 = fVar26 + fVar21 * (*(float *)(lVar10 + 0xc) + *(float *)(lVar9 + 0xc)); + plVar11 = plVar13; + plVar12 = plVar12 + 1; + pfVar15 = pfVar15 + 1; + } while (plVar18 + (-1 - (ulong)(iVar5 - 1)) != plVar13); + } + lVar9 = lrintf(fVar22); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar16 = (char)uVar8; + lVar9 = lrintf(fVar24); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar16[1] = (char)uVar8; + lVar9 = lrintf(fVar25); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar16[2] = (char)uVar8; + lVar9 = lrintf(fVar26); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar17 = lVar17 + 0x10; + puVar16[3] = (char)uVar8; + puVar16 = puVar16 + 4; + } while (lVar17 != ((ulong)uVar7 + 1) * 0x10); + } + if (iVar1 < param_6) { + lVar17 = lVar20; + puVar16 = param_3 + lVar14; + do { + fVar22 = fVar23 + *(float *)(plVar18[1] + lVar17) * *pfVar2; + plVar11 = plVar19; + plVar12 = plVar18; + pfVar15 = pfVar2; + if (0 < iVar5) { + do { + plVar13 = plVar11 + 1; + fVar22 = fVar22 + (*(float *)(*plVar11 + lVar17) + *(float *)(*plVar12 + lVar17)) * + pfVar15[1]; + plVar11 = plVar13; + plVar12 = plVar12 + -1; + pfVar15 = pfVar15 + 1; + } while (plVar18 + (ulong)(iVar5 - 1) + 3 != plVar13); + } + lVar9 = lrintf(fVar22); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar17 = lVar17 + 4; + *puVar16 = (char)uVar8; + puVar16 = puVar16 + 1; + } while (lVar17 != (lVar14 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 4); + } + plVar18 = plVar18 + 1; + param_3 = param_3 + param_4; + } while (plVar18 != plVar3); + } + return; +} + + +================================================================== + +### FUNC 001bd3f8 (656 bytes) name=FUN_001bd3f8 + +void FUN_001bd3f8(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + float *pfVar4; + uint uVar5; + long lVar6; + long lVar7; + long *plVar8; + long *plVar9; + long *plVar10; + float *pfVar11; + long *plVar12; + long lVar13; + undefined1 *puVar14; + float fVar15; + long lVar16; + float fVar17; + float fVar18; + float fVar19; + float __x; + float __x_00; + + pfVar11 = *(float **)(param_1 + 0x20); + fVar18 = *(float *)(param_1 + 0x74); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + lVar6 = (long)iVar2; + plVar10 = (long *)(param_2 + 8); + plVar12 = (long *)(param_2 + ((ulong)(iVar1 - 2) + 2) * 8); + lVar16 = NEON_shl(lVar6,2); + do { + if (0 < param_6 + -3) { + lVar13 = 0; + puVar14 = param_3; + do { + fVar19 = *pfVar11; + lVar7 = plVar10[-1] + lVar13; + fVar15 = fVar18 + fVar19 * *(float *)(plVar10[-1] + lVar13); + __x_00 = fVar18 + fVar19 * *(float *)(lVar7 + 4); + __x = fVar18 + fVar19 * *(float *)(lVar7 + 8); + fVar19 = fVar18 + fVar19 * *(float *)(lVar7 + 0xc); + plVar8 = plVar10; + pfVar4 = pfVar11; + if (1 < iVar1) { + do { + plVar9 = plVar8 + 1; + fVar17 = pfVar4[1]; + lVar7 = *plVar8 + lVar13; + fVar15 = fVar15 + fVar17 * *(float *)(*plVar8 + lVar13); + __x_00 = __x_00 + fVar17 * *(float *)(lVar7 + 4); + __x = __x + fVar17 * *(float *)(lVar7 + 8); + fVar19 = fVar19 + fVar17 * *(float *)(lVar7 + 0xc); + plVar8 = plVar9; + pfVar4 = pfVar4 + 1; + } while (plVar12 != plVar9); + } + lVar7 = lrintf(fVar15); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar14 = (char)uVar5; + lVar7 = lrintf(__x_00); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar14[1] = (char)uVar5; + lVar7 = lrintf(__x); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar14[2] = (char)uVar5; + lVar7 = lrintf(fVar19); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar13 = lVar13 + 0x10; + puVar14[3] = (char)uVar5; + puVar14 = puVar14 + 4; + } while (lVar13 != ((ulong)uVar3 + 1) * 0x10); + } + lVar13 = lVar16; + puVar14 = param_3 + lVar6; + if (iVar2 < param_6) { + do { + fVar15 = fVar18 + *(float *)(plVar10[-1] + lVar13) * *pfVar11; + plVar8 = plVar10; + pfVar4 = pfVar11; + if (1 < iVar1) { + do { + plVar9 = plVar8 + 1; + fVar15 = fVar15 + *(float *)(*plVar8 + lVar13) * pfVar4[1]; + plVar8 = plVar9; + pfVar4 = pfVar4 + 1; + } while (plVar12 != plVar9); + } + lVar7 = lrintf(fVar15); + uVar5 = (uint)lVar7; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar13 = lVar13 + 4; + *puVar14 = (char)uVar5; + puVar14 = puVar14 + 1; + } while (lVar13 != (lVar6 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 4); + } + plVar10 = plVar10 + 1; + plVar12 = plVar12 + 1; + param_3 = param_3 + param_4; + } while (plVar10 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001bd688 (720 bytes) name=FUN_001bd688 + +void FUN_001bd688(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + float *pfVar4; + long lVar5; + long lVar6; + long *plVar7; + undefined2 uVar8; + long *plVar9; + undefined2 *puVar10; + long *plVar11; + float *pfVar12; + undefined2 uVar13; + undefined2 uVar14; + long lVar15; + long *plVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float __x; + float __x_00; + + pfVar12 = *(float **)(param_1 + 0x20); + fVar20 = *(float *)(param_1 + 0x74); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + plVar11 = (long *)(param_2 + 8); + plVar16 = (long *)(param_2 + ((ulong)(iVar1 - 2) + 2) * 8); + lVar5 = (long)iVar2; + do { + uVar13 = 0x8000; + uVar14 = 0x7fff; + if (0 < param_6 + -3) { + lVar15 = 0; + puVar10 = (undefined2 *)(param_3 + 6); + do { + fVar18 = *pfVar12; + lVar6 = plVar11[-1] + lVar15; + fVar17 = fVar20 + fVar18 * *(float *)(plVar11[-1] + lVar15); + __x_00 = fVar20 + fVar18 * *(float *)(lVar6 + 4); + __x = fVar20 + fVar18 * *(float *)(lVar6 + 8); + fVar18 = fVar20 + fVar18 * *(float *)(lVar6 + 0xc); + plVar7 = plVar11; + pfVar4 = pfVar12; + if (1 < iVar1) { + do { + plVar9 = plVar7 + 1; + fVar19 = pfVar4[1]; + lVar6 = *plVar7 + lVar15; + fVar17 = fVar17 + fVar19 * *(float *)(*plVar7 + lVar15); + __x_00 = __x_00 + fVar19 * *(float *)(lVar6 + 4); + __x = __x + fVar19 * *(float *)(lVar6 + 8); + fVar18 = fVar18 + fVar19 * *(float *)(lVar6 + 0xc); + plVar7 = plVar9; + pfVar4 = pfVar4 + 1; + } while (plVar16 != plVar9); + } + lVar6 = lrintf(fVar17); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = uVar14, (int)lVar6 < 1)) { + uVar8 = uVar13; + } + puVar10[-3] = uVar8; + lVar6 = lrintf(__x_00); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = uVar14, (int)lVar6 < 1)) { + uVar8 = uVar13; + } + puVar10[-2] = uVar8; + lVar6 = lrintf(__x); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = 0x7fff, (int)lVar6 < 1)) { + uVar8 = 0x8000; + } + puVar10[-1] = uVar8; + lVar6 = lrintf(fVar18); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = 0x7fff, (int)lVar6 < 1)) { + uVar8 = 0x8000; + } + lVar15 = lVar15 + 0x10; + *puVar10 = uVar8; + puVar10 = puVar10 + 4; + } while (lVar15 != ((ulong)uVar3 + 1) * 0x10); + } + lVar15 = lVar5 << 2; + puVar10 = (undefined2 *)(param_3 + lVar5 * 2); + if (iVar2 < param_6) { + do { + fVar17 = fVar20 + *(float *)(plVar11[-1] + lVar15) * *pfVar12; + plVar7 = plVar11; + pfVar4 = pfVar12; + if (1 < iVar1) { + do { + plVar9 = plVar7 + 1; + fVar17 = fVar17 + *(float *)(*plVar7 + lVar15) * pfVar4[1]; + plVar7 = plVar9; + pfVar4 = pfVar4 + 1; + } while (plVar16 != plVar9); + } + lVar6 = lrintf(fVar17); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = uVar14, (int)lVar6 < 1)) { + uVar8 = uVar13; + } + lVar15 = lVar15 + 4; + *puVar10 = uVar8; + puVar10 = puVar10 + 1; + } while (lVar15 != (lVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 4); + } + plVar11 = plVar11 + 1; + plVar16 = plVar16 + 1; + param_3 = param_3 + param_4; + } while (plVar11 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001bd958 (1560 bytes) name=FUN_001bd958 + +void FUN_001bd958(long param_1,long param_2,undefined2 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + double *pdVar2; + long *plVar3; + long lVar4; + uint uVar5; + uint uVar6; + int iVar7; + ulong uVar8; + long lVar9; + double *pdVar10; + long lVar11; + double *pdVar12; + undefined2 uVar13; + long *plVar14; + long *plVar15; + long *plVar16; + long lVar17; + undefined2 *puVar18; + long lVar19; + long *plVar20; + undefined2 uVar21; + undefined2 uVar22; + long lVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + long *plVar30; + + uVar5 = *(int *)(param_1 + 8) / 2; + dVar26 = *(double *)(param_1 + 0x78); + uVar8 = -(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3; + pdVar2 = (double *)(*(long *)(param_1 + 0x20) + uVar8); + plVar30 = (long *)(param_2 + uVar8); + if ((*(uint *)(param_1 + 0x80) & 1) == 0) { + if (param_5 != 0) { + iVar7 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar7 < 1) { + iVar1 = 0; + } + lVar17 = (long)iVar1; + plVar20 = plVar30 + -1; + plVar3 = plVar30 + (param_5 - 1); + lVar23 = NEON_shl(lVar17,3); + do { + plVar30 = plVar30 + 1; + uVar21 = 0x8000; + uVar22 = 0x7fff; + if (0 < iVar7) { + lVar19 = 0; + puVar18 = param_3; + do { + dVar25 = dVar26; + dVar27 = dVar26; + dVar28 = dVar26; + dVar29 = dVar26; + if (0 < (int)uVar5) { + lVar9 = lVar19 * 8; + plVar14 = plVar30; + plVar15 = plVar20; + pdVar12 = pdVar2; + do { + pdVar12 = pdVar12 + 1; + plVar16 = plVar14 + 1; + lVar11 = *plVar14 + lVar9; + lVar4 = *plVar15 + lVar9; + dVar24 = *pdVar12; + dVar25 = dVar25 + dVar24 * (*(double *)(*plVar14 + lVar9) - + *(double *)(*plVar15 + lVar9)); + dVar27 = dVar27 + dVar24 * (*(double *)(lVar11 + 8) - *(double *)(lVar4 + 8)); + dVar28 = dVar28 + dVar24 * (*(double *)(lVar11 + 0x10) - *(double *)(lVar4 + 0x10)); + dVar29 = dVar29 + dVar24 * (*(double *)(lVar11 + 0x18) - *(double *)(lVar4 + 0x18)); + plVar14 = plVar16; + plVar15 = plVar15 + -1; + } while (plVar16 != plVar20 + (ulong)(uVar5 - 1) + 3); + } + lVar9 = lrint(dVar25); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = uVar22, (int)lVar9 < 1)) { + uVar13 = uVar21; + } + *puVar18 = uVar13; + lVar9 = lrint(dVar27); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = uVar22, (int)lVar9 < 1)) { + uVar13 = uVar21; + } + puVar18[1] = uVar13; + lVar9 = lrint(dVar28); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar9 < 1)) { + uVar13 = 0x8000; + } + puVar18[2] = uVar13; + lVar9 = lrint(dVar29); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar9 < 1)) { + uVar13 = 0x8000; + } + lVar19 = lVar19 + 4; + puVar18[3] = uVar13; + puVar18 = puVar18 + 4; + } while ((int)lVar19 < iVar7); + } + lVar9 = lVar23; + lVar19 = lVar17; + if (iVar1 < param_6) { + do { + dVar25 = dVar26; + if (0 < (int)uVar5) { + pdVar12 = pdVar2 + 1; + plVar14 = plVar30; + plVar15 = plVar20; + do { + pdVar10 = pdVar12 + 1; + dVar25 = dVar25 + (*(double *)(*plVar14 + lVar9) - *(double *)(*plVar15 + lVar9)) * + *pdVar12; + pdVar12 = pdVar10; + plVar14 = plVar14 + 1; + plVar15 = plVar15 + -1; + } while (pdVar10 != pdVar2 + (ulong)(uVar5 - 1) + 2); + } + puVar18 = param_3 + lVar19; + lVar11 = lrint(dVar25); + uVar13 = (short)lVar11; + if ((0xffff < (int)lVar11 + 0x8000U) && (uVar13 = uVar22, (int)lVar11 < 1)) { + uVar13 = uVar21; + } + lVar19 = lVar19 + 1; + *puVar18 = uVar13; + lVar9 = lVar9 + 8; + } while (lVar19 != lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + plVar20 = plVar20 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar20 != plVar3); + } + } + else if (param_5 != 0) { + uVar6 = param_6 - 4U >> 2; + plVar20 = plVar30 + -1; + plVar3 = plVar30 + (param_5 - 1); + iVar1 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + lVar17 = (long)iVar1; + do { + plVar30 = plVar30 + 1; + uVar21 = 0x8000; + uVar22 = 0x7fff; + if (0 < param_6 + -3) { + lVar23 = 0; + puVar18 = param_3 + 3; + do { + dVar27 = *pdVar2; + lVar19 = plVar20[1] + lVar23; + dVar25 = dVar26 + dVar27 * *(double *)(plVar20[1] + lVar23); + dVar29 = dVar26 + dVar27 * *(double *)(lVar19 + 8); + dVar28 = dVar26 + dVar27 * *(double *)(lVar19 + 0x10); + dVar27 = dVar26 + dVar27 * *(double *)(lVar19 + 0x18); + plVar14 = plVar30; + plVar15 = plVar20; + pdVar12 = pdVar2; + if (0 < (int)uVar5) { + do { + plVar16 = plVar14 + 1; + lVar19 = *plVar14 + lVar23; + lVar9 = *plVar15 + lVar23; + dVar24 = pdVar12[1]; + dVar25 = dVar25 + dVar24 * (*(double *)(*plVar14 + lVar23) + + *(double *)(*plVar15 + lVar23)); + dVar29 = dVar29 + dVar24 * (*(double *)(lVar19 + 8) + *(double *)(lVar9 + 8)); + dVar28 = dVar28 + dVar24 * (*(double *)(lVar19 + 0x10) + *(double *)(lVar9 + 0x10)); + dVar27 = dVar27 + dVar24 * (*(double *)(lVar19 + 0x18) + *(double *)(lVar9 + 0x18)); + plVar14 = plVar16; + plVar15 = plVar15 + -1; + pdVar12 = pdVar12 + 1; + } while (plVar16 != plVar20 + (ulong)(uVar5 - 1) + 3); + } + lVar19 = lrint(dVar25); + uVar13 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar13 = uVar22, (int)lVar19 < 1)) { + uVar13 = uVar21; + } + puVar18[-3] = uVar13; + lVar19 = lrint(dVar29); + uVar13 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar13 = uVar22, (int)lVar19 < 1)) { + uVar13 = uVar21; + } + puVar18[-2] = uVar13; + lVar19 = lrint(dVar28); + uVar13 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar19 < 1)) { + uVar13 = 0x8000; + } + puVar18[-1] = uVar13; + lVar19 = lrint(dVar27); + uVar13 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar19 < 1)) { + uVar13 = 0x8000; + } + lVar23 = lVar23 + 0x20; + *puVar18 = uVar13; + puVar18 = puVar18 + 4; + } while (lVar23 != ((ulong)uVar6 + 1) * 0x20); + } + lVar23 = lVar17 << 3; + puVar18 = param_3 + lVar17; + if (iVar1 < param_6) { + do { + dVar25 = dVar26 + *(double *)(plVar20[1] + lVar23) * *pdVar2; + if (0 < (int)uVar5) { + pdVar12 = pdVar2 + 1; + plVar14 = plVar30; + plVar15 = plVar20; + do { + pdVar10 = pdVar12 + 1; + dVar25 = dVar25 + (*(double *)(*plVar14 + lVar23) + *(double *)(*plVar15 + lVar23)) * + *pdVar12; + pdVar12 = pdVar10; + plVar14 = plVar14 + 1; + plVar15 = plVar15 + -1; + } while (pdVar10 != pdVar2 + (ulong)(uVar5 - 1) + 2); + } + lVar19 = lrint(dVar25); + uVar13 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar13 = uVar22, (int)lVar19 < 1)) { + uVar13 = uVar21; + } + lVar23 = lVar23 + 8; + *puVar18 = uVar13; + puVar18 = puVar18 + 1; + } while (lVar23 != (lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + plVar20 = plVar20 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar20 != plVar3); + } + return; +} + + +================================================================== + +### FUNC 001bdf70 (748 bytes) name=FUN_001bdf70 + +void FUN_001bdf70(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + double *pdVar6; + undefined2 uVar8; + long *plVar9; + long *plVar10; + undefined2 *puVar11; + long *plVar12; + double *pdVar13; + undefined2 uVar14; + undefined2 uVar15; + long lVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double __x; + double __x_00; + double *pdVar7; + + pdVar13 = *(double **)(param_1 + 0x20); + dVar20 = *(double *)(param_1 + 0x78); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + plVar12 = (long *)(param_2 + 8); + lVar4 = (long)iVar2; + do { + uVar14 = 0x8000; + uVar15 = 0x7fff; + if (0 < param_6 + -3) { + lVar16 = 0; + puVar11 = (undefined2 *)(param_3 + 6); + do { + dVar18 = *pdVar13; + lVar5 = plVar12[-1] + lVar16; + dVar17 = dVar20 + dVar18 * *(double *)(plVar12[-1] + lVar16); + __x_00 = dVar20 + dVar18 * *(double *)(lVar5 + 8); + __x = dVar20 + dVar18 * *(double *)(lVar5 + 0x10); + dVar18 = dVar20 + dVar18 * *(double *)(lVar5 + 0x18); + plVar10 = plVar12; + pdVar6 = pdVar13; + if (1 < iVar1) { + do { + plVar9 = plVar10 + 1; + dVar19 = pdVar6[1]; + lVar5 = *plVar10 + lVar16; + dVar17 = dVar17 + dVar19 * *(double *)(*plVar10 + lVar16); + __x_00 = __x_00 + dVar19 * *(double *)(lVar5 + 8); + __x = __x + dVar19 * *(double *)(lVar5 + 0x10); + dVar18 = dVar18 + dVar19 * *(double *)(lVar5 + 0x18); + plVar10 = plVar9; + pdVar6 = pdVar6 + 1; + } while (plVar9 != plVar12 + (ulong)(iVar1 - 2) + 1); + } + lVar5 = lrint(dVar17); + uVar8 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar8 = uVar15, (int)lVar5 < 1)) { + uVar8 = uVar14; + } + puVar11[-3] = uVar8; + lVar5 = lrint(__x_00); + uVar8 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar8 = uVar15, (int)lVar5 < 1)) { + uVar8 = uVar14; + } + puVar11[-2] = uVar8; + lVar5 = lrint(__x); + uVar8 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar8 = 0x7fff, (int)lVar5 < 1)) { + uVar8 = 0x8000; + } + puVar11[-1] = uVar8; + lVar5 = lrint(dVar18); + uVar8 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar8 = 0x7fff, (int)lVar5 < 1)) { + uVar8 = 0x8000; + } + lVar16 = lVar16 + 0x20; + *puVar11 = uVar8; + puVar11 = puVar11 + 4; + } while (lVar16 != ((ulong)uVar3 + 1) * 0x20); + } + lVar16 = lVar4 << 3; + puVar11 = (undefined2 *)(param_3 + lVar4 * 2); + if (iVar2 < param_6) { + do { + dVar17 = dVar20 + *(double *)(plVar12[-1] + lVar16) * *pdVar13; + if (1 < iVar1) { + pdVar6 = pdVar13 + 1; + plVar10 = plVar12; + do { + pdVar7 = pdVar6 + 1; + dVar17 = dVar17 + *(double *)(*plVar10 + lVar16) * *pdVar6; + pdVar6 = pdVar7; + plVar10 = plVar10 + 1; + } while (pdVar7 != pdVar13 + (ulong)(iVar1 - 2) + 2); + } + lVar5 = lrint(dVar17); + uVar8 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar8 = uVar15, (int)lVar5 < 1)) { + uVar8 = uVar14; + } + lVar16 = lVar16 + 8; + *puVar11 = uVar8; + puVar11 = puVar11 + 1; + } while (lVar16 != (lVar4 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 8); + } + plVar12 = plVar12 + 1; + param_3 = param_3 + param_4; + } while (plVar12 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001be25c (1448 bytes) name=FUN_001be25c + +void FUN_001be25c(long param_1,long param_2,undefined2 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + double *pdVar2; + long *plVar3; + long lVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + ulong uVar9; + long lVar10; + double *pdVar11; + long lVar12; + double *pdVar13; + long *plVar14; + long *plVar15; + long *plVar16; + long lVar17; + undefined2 *puVar18; + long lVar19; + long *plVar20; + long *plVar21; + long lVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + + uVar5 = *(int *)(param_1 + 8) / 2; + dVar25 = *(double *)(param_1 + 0x78); + uVar9 = -(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3; + pdVar2 = (double *)(*(long *)(param_1 + 0x20) + uVar9); + plVar21 = (long *)(param_2 + uVar9); + if ((*(uint *)(param_1 + 0x80) & 1) == 0) { + if (param_5 != 0) { + plVar20 = plVar21 + -1; + plVar3 = plVar21 + (param_5 - 1); + iVar6 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar6 < 1) { + iVar1 = 0; + } + lVar17 = (long)iVar1; + lVar22 = NEON_shl(lVar17,3); + do { + plVar21 = plVar21 + 1; + if (0 < iVar6) { + lVar19 = 0; + puVar18 = param_3; + do { + dVar24 = dVar25; + dVar26 = dVar25; + dVar27 = dVar25; + dVar28 = dVar25; + if (0 < (int)uVar5) { + lVar10 = lVar19 * 8; + plVar14 = plVar21; + plVar15 = plVar20; + pdVar13 = pdVar2; + do { + pdVar13 = pdVar13 + 1; + plVar16 = plVar14 + 1; + lVar12 = *plVar14 + lVar10; + lVar4 = *plVar15 + lVar10; + dVar23 = *pdVar13; + dVar24 = dVar24 + dVar23 * (*(double *)(*plVar14 + lVar10) - + *(double *)(*plVar15 + lVar10)); + dVar26 = dVar26 + dVar23 * (*(double *)(lVar12 + 8) - *(double *)(lVar4 + 8)); + dVar27 = dVar27 + dVar23 * (*(double *)(lVar12 + 0x10) - *(double *)(lVar4 + 0x10)); + dVar28 = dVar28 + dVar23 * (*(double *)(lVar12 + 0x18) - *(double *)(lVar4 + 0x18)); + plVar14 = plVar16; + plVar15 = plVar15 + -1; + } while (plVar16 != plVar20 + (ulong)(uVar5 - 1) + 3); + } + lVar10 = lrint(dVar24); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *puVar18 = (short)uVar7; + lVar10 = lrint(dVar26); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar18[1] = (short)uVar7; + lVar10 = lrint(dVar27); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar18[2] = (short)uVar7; + lVar10 = lrint(dVar28); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar18[3] = (short)uVar7; + lVar19 = lVar19 + 4; + puVar18 = puVar18 + 4; + } while ((int)lVar19 < iVar6); + } + lVar10 = lVar22; + lVar19 = lVar17; + if (iVar1 < param_6) { + do { + dVar24 = dVar25; + if (0 < (int)uVar5) { + pdVar13 = pdVar2 + 1; + plVar14 = plVar21; + plVar15 = plVar20; + do { + pdVar11 = pdVar13 + 1; + dVar24 = dVar24 + (*(double *)(*plVar14 + lVar10) - *(double *)(*plVar15 + lVar10)) + * *pdVar13; + pdVar13 = pdVar11; + plVar14 = plVar14 + 1; + plVar15 = plVar15 + -1; + } while (pdVar11 != pdVar2 + (ulong)(uVar5 - 1) + 2); + } + lVar12 = lrint(dVar24); + uVar7 = (uint)lVar12; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + param_3[lVar19] = (short)uVar7; + lVar19 = lVar19 + 1; + lVar10 = lVar10 + 8; + } while (lVar19 != lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + plVar20 = plVar20 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar20 != plVar3); + } + } + else if (param_5 != 0) { + plVar20 = plVar21 + -1; + plVar3 = plVar21 + (param_5 - 1); + uVar7 = param_6 - 4U >> 2; + iVar1 = (uVar7 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + lVar17 = (long)iVar1; + do { + plVar21 = plVar21 + 1; + if (0 < param_6 + -3) { + lVar22 = 0; + puVar18 = param_3 + 3; + do { + dVar26 = *pdVar2; + lVar19 = plVar20[1] + lVar22; + dVar24 = dVar25 + dVar26 * *(double *)(plVar20[1] + lVar22); + dVar28 = dVar25 + dVar26 * *(double *)(lVar19 + 8); + dVar27 = dVar25 + dVar26 * *(double *)(lVar19 + 0x10); + dVar26 = dVar25 + dVar26 * *(double *)(lVar19 + 0x18); + plVar14 = plVar21; + plVar15 = plVar20; + pdVar13 = pdVar2; + if (0 < (int)uVar5) { + do { + plVar16 = plVar14 + 1; + lVar19 = *plVar14 + lVar22; + lVar10 = *plVar15 + lVar22; + dVar23 = pdVar13[1]; + dVar24 = dVar24 + dVar23 * (*(double *)(*plVar14 + lVar22) + + *(double *)(*plVar15 + lVar22)); + dVar28 = dVar28 + dVar23 * (*(double *)(lVar19 + 8) + *(double *)(lVar10 + 8)); + dVar27 = dVar27 + dVar23 * (*(double *)(lVar19 + 0x10) + *(double *)(lVar10 + 0x10)); + dVar26 = dVar26 + dVar23 * (*(double *)(lVar19 + 0x18) + *(double *)(lVar10 + 0x18)); + plVar14 = plVar16; + plVar15 = plVar15 + -1; + pdVar13 = pdVar13 + 1; + } while (plVar16 != plVar20 + (ulong)(uVar5 - 1) + 3); + } + lVar19 = lrint(dVar24); + uVar8 = (uint)lVar19; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar18[-3] = (short)uVar8; + lVar19 = lrint(dVar28); + uVar8 = (uint)lVar19; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar18[-2] = (short)uVar8; + lVar19 = lrint(dVar27); + uVar8 = (uint)lVar19; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar18[-1] = (short)uVar8; + lVar19 = lrint(dVar26); + uVar8 = (uint)lVar19; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar18 = (short)uVar8; + lVar22 = lVar22 + 0x20; + puVar18 = puVar18 + 4; + } while (lVar22 != ((ulong)uVar7 + 1) * 0x20); + } + lVar22 = lVar17 << 3; + puVar18 = param_3 + lVar17; + if (iVar1 < param_6) { + do { + dVar24 = dVar25 + *(double *)(plVar20[1] + lVar22) * *pdVar2; + if (0 < (int)uVar5) { + pdVar13 = pdVar2 + 1; + plVar14 = plVar21; + plVar15 = plVar20; + do { + pdVar11 = pdVar13 + 1; + dVar24 = dVar24 + (*(double *)(*plVar14 + lVar22) + *(double *)(*plVar15 + lVar22)) * + *pdVar13; + pdVar13 = pdVar11; + plVar14 = plVar14 + 1; + plVar15 = plVar15 + -1; + } while (pdVar11 != pdVar2 + (ulong)(uVar5 - 1) + 2); + } + lVar19 = lrint(dVar24); + uVar8 = (uint)lVar19; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar18 = (short)uVar8; + lVar22 = lVar22 + 8; + puVar18 = puVar18 + 1; + } while (lVar22 != (lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + plVar20 = plVar20 + 1; + param_3 = (undefined2 *)((long)param_3 + (long)param_4); + } while (plVar20 != plVar3); + } + return; +} + + +================================================================== + +### FUNC 001be804 (704 bytes) name=FUN_001be804 + +void FUN_001be804(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + long lVar5; + long lVar6; + double *pdVar7; + long *plVar9; + long *plVar10; + undefined2 *puVar11; + long *plVar12; + double *pdVar13; + long lVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double __x; + double __x_00; + double *pdVar8; + + pdVar13 = *(double **)(param_1 + 0x20); + dVar18 = *(double *)(param_1 + 0x78); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + plVar12 = (long *)(param_2 + 8); + lVar5 = (long)iVar2; + do { + if (0 < param_6 + -3) { + lVar14 = 0; + puVar11 = (undefined2 *)(param_3 + 6); + do { + dVar16 = *pdVar13; + lVar6 = plVar12[-1] + lVar14; + dVar15 = dVar18 + dVar16 * *(double *)(plVar12[-1] + lVar14); + __x_00 = dVar18 + dVar16 * *(double *)(lVar6 + 8); + __x = dVar18 + dVar16 * *(double *)(lVar6 + 0x10); + dVar16 = dVar18 + dVar16 * *(double *)(lVar6 + 0x18); + plVar10 = plVar12; + pdVar7 = pdVar13; + if (1 < iVar1) { + do { + plVar9 = plVar10 + 1; + dVar17 = pdVar7[1]; + lVar6 = *plVar10 + lVar14; + dVar15 = dVar15 + dVar17 * *(double *)(*plVar10 + lVar14); + __x_00 = __x_00 + dVar17 * *(double *)(lVar6 + 8); + __x = __x + dVar17 * *(double *)(lVar6 + 0x10); + dVar16 = dVar16 + dVar17 * *(double *)(lVar6 + 0x18); + plVar10 = plVar9; + pdVar7 = pdVar7 + 1; + } while (plVar9 != plVar12 + (ulong)(iVar1 - 2) + 1); + } + lVar6 = lrint(dVar15); + uVar4 = (uint)lVar6; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar11[-3] = (short)uVar4; + lVar6 = lrint(__x_00); + uVar4 = (uint)lVar6; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar11[-2] = (short)uVar4; + lVar6 = lrint(__x); + uVar4 = (uint)lVar6; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar11[-1] = (short)uVar4; + lVar6 = lrint(dVar16); + uVar4 = (uint)lVar6; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar14 = lVar14 + 0x20; + *puVar11 = (short)uVar4; + puVar11 = puVar11 + 4; + } while (lVar14 != ((ulong)uVar3 + 1) * 0x20); + } + lVar14 = lVar5 << 3; + puVar11 = (undefined2 *)(param_3 + lVar5 * 2); + if (iVar2 < param_6) { + do { + dVar15 = dVar18 + *(double *)(plVar12[-1] + lVar14) * *pdVar13; + if (1 < iVar1) { + pdVar7 = pdVar13 + 1; + plVar10 = plVar12; + do { + pdVar8 = pdVar7 + 1; + dVar15 = dVar15 + *(double *)(*plVar10 + lVar14) * *pdVar7; + pdVar7 = pdVar8; + plVar10 = plVar10 + 1; + } while (pdVar8 != pdVar13 + (ulong)(iVar1 - 2) + 2); + } + lVar6 = lrint(dVar15); + uVar4 = (uint)lVar6; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar14 = lVar14 + 8; + *puVar11 = (short)uVar4; + puVar11 = puVar11 + 1; + } while (lVar14 != (lVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 8); + } + plVar12 = plVar12 + 1; + param_3 = param_3 + param_4; + } while (plVar12 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001beac4 (1412 bytes) name=FUN_001beac4 + +void FUN_001beac4(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + double *pdVar2; + long *plVar3; + long lVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + ulong uVar9; + long lVar10; + double *pdVar11; + long lVar12; + double *pdVar13; + long *plVar14; + long *plVar15; + long *plVar16; + long lVar17; + undefined1 *puVar18; + long lVar19; + long *plVar20; + long *plVar21; + long lVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + + uVar5 = *(int *)(param_1 + 8) / 2; + dVar25 = *(double *)(param_1 + 0x78); + uVar9 = -(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3; + pdVar2 = (double *)(*(long *)(param_1 + 0x20) + uVar9); + plVar21 = (long *)(param_2 + uVar9); + if ((*(uint *)(param_1 + 0x80) & 1) == 0) { + if (param_5 != 0) { + plVar20 = plVar21 + -1; + iVar6 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + plVar3 = plVar21 + (param_5 - 1); + if (iVar6 < 1) { + iVar1 = 0; + } + lVar17 = (long)iVar1; + lVar22 = NEON_shl(lVar17,3); + do { + plVar21 = plVar21 + 1; + if (0 < iVar6) { + lVar19 = 0; + puVar18 = param_3; + do { + dVar24 = dVar25; + dVar26 = dVar25; + dVar27 = dVar25; + dVar28 = dVar25; + if (0 < (int)uVar5) { + lVar10 = lVar19 * 8; + plVar14 = plVar21; + plVar15 = plVar20; + pdVar13 = pdVar2; + do { + pdVar13 = pdVar13 + 1; + plVar16 = plVar14 + 1; + lVar12 = *plVar14 + lVar10; + lVar4 = *plVar15 + lVar10; + dVar23 = *pdVar13; + dVar24 = dVar24 + dVar23 * (*(double *)(*plVar14 + lVar10) - + *(double *)(*plVar15 + lVar10)); + dVar26 = dVar26 + dVar23 * (*(double *)(lVar12 + 8) - *(double *)(lVar4 + 8)); + dVar27 = dVar27 + dVar23 * (*(double *)(lVar12 + 0x10) - *(double *)(lVar4 + 0x10)); + dVar28 = dVar28 + dVar23 * (*(double *)(lVar12 + 0x18) - *(double *)(lVar4 + 0x18)); + plVar14 = plVar16; + plVar15 = plVar15 + -1; + } while (plVar16 != plVar20 + (ulong)(uVar5 - 1) + 3); + } + lVar10 = lrint(dVar24); + uVar7 = (uint)lVar10; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *puVar18 = (char)uVar7; + lVar10 = lrint(dVar26); + uVar7 = (uint)lVar10; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar18[1] = (char)uVar7; + lVar10 = lrint(dVar27); + uVar7 = (uint)lVar10; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar18[2] = (char)uVar7; + lVar10 = lrint(dVar28); + uVar7 = (uint)lVar10; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar19 = lVar19 + 4; + puVar18[3] = (char)uVar7; + puVar18 = puVar18 + 4; + } while ((int)lVar19 < iVar6); + } + lVar10 = lVar22; + lVar19 = lVar17; + if (iVar1 < param_6) { + do { + dVar24 = dVar25; + if (0 < (int)uVar5) { + pdVar13 = pdVar2 + 1; + plVar14 = plVar21; + plVar15 = plVar20; + do { + pdVar11 = pdVar13 + 1; + dVar24 = dVar24 + (*(double *)(*plVar14 + lVar10) - *(double *)(*plVar15 + lVar10)) + * *pdVar13; + pdVar13 = pdVar11; + plVar14 = plVar14 + 1; + plVar15 = plVar15 + -1; + } while (pdVar11 != pdVar2 + (ulong)(uVar5 - 1) + 2); + } + lVar12 = lrint(dVar24); + uVar7 = (uint)lVar12; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + param_3[lVar19] = (char)uVar7; + lVar19 = lVar19 + 1; + lVar10 = lVar10 + 8; + } while (lVar19 != lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + plVar20 = plVar20 + 1; + param_3 = param_3 + param_4; + } while (plVar20 != plVar3); + } + } + else if (param_5 != 0) { + plVar20 = plVar21 + -1; + plVar3 = plVar21 + (param_5 - 1); + uVar7 = param_6 - 4U >> 2; + iVar1 = (uVar7 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + lVar17 = (long)iVar1; + lVar22 = NEON_shl(lVar17,3); + do { + plVar21 = plVar21 + 1; + if (0 < param_6 + -3) { + lVar19 = 0; + puVar18 = param_3; + do { + dVar26 = *pdVar2; + lVar10 = plVar20[1] + lVar19; + dVar24 = dVar25 + dVar26 * *(double *)(plVar20[1] + lVar19); + dVar28 = dVar25 + dVar26 * *(double *)(lVar10 + 8); + dVar27 = dVar25 + dVar26 * *(double *)(lVar10 + 0x10); + dVar26 = dVar25 + dVar26 * *(double *)(lVar10 + 0x18); + plVar14 = plVar21; + plVar15 = plVar20; + pdVar13 = pdVar2; + if (0 < (int)uVar5) { + do { + plVar16 = plVar14 + 1; + lVar10 = *plVar14 + lVar19; + lVar12 = *plVar15 + lVar19; + dVar23 = pdVar13[1]; + dVar24 = dVar24 + dVar23 * (*(double *)(*plVar14 + lVar19) + + *(double *)(*plVar15 + lVar19)); + dVar28 = dVar28 + dVar23 * (*(double *)(lVar10 + 8) + *(double *)(lVar12 + 8)); + dVar27 = dVar27 + dVar23 * (*(double *)(lVar10 + 0x10) + *(double *)(lVar12 + 0x10)); + dVar26 = dVar26 + dVar23 * (*(double *)(lVar10 + 0x18) + *(double *)(lVar12 + 0x18)); + plVar14 = plVar16; + plVar15 = plVar15 + -1; + pdVar13 = pdVar13 + 1; + } while (plVar16 != plVar20 + (ulong)(uVar5 - 1) + 3); + } + lVar10 = lrint(dVar24); + uVar8 = (uint)lVar10; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar18 = (char)uVar8; + lVar10 = lrint(dVar28); + uVar8 = (uint)lVar10; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar18[1] = (char)uVar8; + lVar10 = lrint(dVar27); + uVar8 = (uint)lVar10; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar18[2] = (char)uVar8; + lVar10 = lrint(dVar26); + uVar8 = (uint)lVar10; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar18[3] = (char)uVar8; + lVar19 = lVar19 + 0x20; + puVar18 = puVar18 + 4; + } while (lVar19 != ((ulong)uVar7 + 1) * 0x20); + } + lVar19 = lVar22; + puVar18 = param_3 + lVar17; + if (iVar1 < param_6) { + do { + dVar24 = dVar25 + *(double *)(plVar20[1] + lVar19) * *pdVar2; + if (0 < (int)uVar5) { + pdVar13 = pdVar2 + 1; + plVar14 = plVar21; + plVar15 = plVar20; + do { + pdVar11 = pdVar13 + 1; + dVar24 = dVar24 + (*(double *)(*plVar14 + lVar19) + *(double *)(*plVar15 + lVar19)) * + *pdVar13; + pdVar13 = pdVar11; + plVar14 = plVar14 + 1; + plVar15 = plVar15 + -1; + } while (pdVar11 != pdVar2 + (ulong)(uVar5 - 1) + 2); + } + lVar10 = lrint(dVar24); + uVar8 = (uint)lVar10; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar19 = lVar19 + 8; + *puVar18 = (char)uVar8; + puVar18 = puVar18 + 1; + } while (lVar19 != (lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + plVar20 = plVar20 + 1; + param_3 = param_3 + param_4; + } while (plVar20 != plVar3); + } + return; +} + + +================================================================== + +### FUNC 001bf048 (684 bytes) name=FUN_001bf048 + +void FUN_001bf048(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + long lVar5; + long lVar6; + double *pdVar7; + long *plVar9; + long *plVar10; + long *plVar11; + double *pdVar12; + long lVar13; + undefined1 *puVar14; + long lVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double __x; + double __x_00; + double *pdVar8; + + pdVar12 = *(double **)(param_1 + 0x20); + dVar18 = *(double *)(param_1 + 0x78); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + lVar5 = (long)iVar2; + plVar11 = (long *)(param_2 + 8); + lVar15 = NEON_shl(lVar5,3); + do { + if (0 < param_6 + -3) { + lVar13 = 0; + puVar14 = param_3; + do { + dVar19 = *pdVar12; + lVar6 = plVar11[-1] + lVar13; + dVar16 = dVar18 + dVar19 * *(double *)(plVar11[-1] + lVar13); + __x_00 = dVar18 + dVar19 * *(double *)(lVar6 + 8); + __x = dVar18 + dVar19 * *(double *)(lVar6 + 0x10); + dVar19 = dVar18 + dVar19 * *(double *)(lVar6 + 0x18); + plVar10 = plVar11; + pdVar7 = pdVar12; + if (1 < iVar1) { + do { + plVar9 = plVar10 + 1; + dVar17 = pdVar7[1]; + lVar6 = *plVar10 + lVar13; + dVar16 = dVar16 + dVar17 * *(double *)(*plVar10 + lVar13); + __x_00 = __x_00 + dVar17 * *(double *)(lVar6 + 8); + __x = __x + dVar17 * *(double *)(lVar6 + 0x10); + dVar19 = dVar19 + dVar17 * *(double *)(lVar6 + 0x18); + plVar10 = plVar9; + pdVar7 = pdVar7 + 1; + } while (plVar9 != plVar11 + (ulong)(iVar1 - 2) + 1); + } + lVar6 = lrint(dVar16); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + *puVar14 = (char)uVar4; + lVar6 = lrint(__x_00); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar14[1] = (char)uVar4; + lVar6 = lrint(__x); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar14[2] = (char)uVar4; + lVar6 = lrint(dVar19); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar13 = lVar13 + 0x20; + puVar14[3] = (char)uVar4; + puVar14 = puVar14 + 4; + } while (lVar13 != ((ulong)uVar3 + 1) * 0x20); + } + lVar13 = lVar15; + puVar14 = param_3 + lVar5; + if (iVar2 < param_6) { + do { + dVar16 = dVar18 + *(double *)(plVar11[-1] + lVar13) * *pdVar12; + if (1 < iVar1) { + pdVar7 = pdVar12 + 1; + plVar10 = plVar11; + do { + pdVar8 = pdVar7 + 1; + dVar16 = dVar16 + *(double *)(*plVar10 + lVar13) * *pdVar7; + pdVar7 = pdVar8; + plVar10 = plVar10 + 1; + } while (pdVar8 != pdVar12 + (ulong)(iVar1 - 2) + 2); + } + lVar6 = lrint(dVar16); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar13 = lVar13 + 8; + *puVar14 = (char)uVar4; + puVar14 = puVar14 + 1; + } while (lVar13 != (lVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 8); + } + plVar11 = plVar11 + 1; + param_3 = param_3 + param_4; + } while (plVar11 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001bf2f4 (672 bytes) name=FUN_001bf2f4 + +void FUN_001bf2f4(long *param_1,uint *param_2,uint *param_3,int *param_4,int *param_5, + undefined1 param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + int iVar7; + char *pcVar8; + void *__dest; + long lVar9; + long lVar10; + uint uVar11; + uint uVar12; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 local_8; + + if ((*(uint *)(param_1 + 1) != (*param_2 & 0xfff)) || + (*(uint *)((long)param_1 + 0xc) != (*param_3 & 0xfff))) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x2e); + uVar6 = s_src_type______srcType____dst_typ_00442fa8._44_2_; + uVar5 = s_src_type______srcType____dst_typ_00442fa8._40_4_; + uVar4 = s_src_type______srcType____dst_typ_00442fa8._24_8_; + uVar3 = s_src_type______srcType____dst_typ_00442fa8._16_8_; + uVar2 = s_src_type______srcType____dst_typ_00442fa8._8_8_; + uVar1 = s_src_type______srcType____dst_typ_00442fa8._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_src_type______srcType____dst_typ_00442fa8._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar5; + *(undefined2 *)(pcVar8 + 0x2c) = uVar6; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar3; + *(undefined8 *)(pcVar8 + 0x18) = uVar4; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::FilterEngine::apply(const cv::Mat&, cv::Mat&, const Rect&, cv::Point, bool)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",399); + cv::String::deallocate((String *)&local_10); + } + uStack_18 = *(undefined8 *)(param_4 + 2); + local_20 = *(undefined8 *)param_4; + uVar12 = param_4[3]; + uVar11 = param_4[2]; + if ((uVar12 == 0xffffffff && uVar11 == 0xffffffff) && (param_4[1] == 0 && *param_4 == 0)) { + uVar11 = param_2[3]; + uVar12 = param_2[2]; + local_20 = 0; + uStack_18 = CONCAT44(uVar12,uVar11); + } + if (uVar11 * uVar12 != 0) { + if ((((*param_5 < 0) || (param_5[1] < 0)) || ((int)param_3[3] < (int)(*param_5 + uVar11))) || + ((int)param_3[2] < (int)(param_5[1] + uVar12))) { + local_10 = 0; + local_8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x6d); + memcpy(__dest,&DAT_00442ef0,0x6d); + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::FilterEngine::apply(const cv::Mat&, cv::Mat&, const Rect&, cv::Point, bool)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x19a); + cv::String::deallocate((String *)&local_10); + } + iVar7 = (**(code **)(*param_1 + 0x18))(param_1,param_2,&local_20,param_6,0xffffffff); + if ((int)param_2[1] < 1) { + lVar9 = 0; + } + else { + lVar9 = (long)(int)local_20 * + *(long *)(*(long *)(param_2 + 0x12) + (long)(int)param_2[1] * 8 + -8); + } + if ((int)param_3[1] < 1) { + lVar10 = 0; + } + else { + lVar10 = (long)*param_5 * (*(long **)(param_3 + 0x12))[(long)(int)param_3[1] + -1]; + } + (**(code **)(*param_1 + 0x20)) + (param_1,*(long *)(param_2 + 4) + lVar9 + (long)iVar7 * *(long *)(param_2 + 0x14), + *(long *)(param_2 + 0x14), + *(int *)((long)param_1 + 0xdc) - *(int *)((long)param_1 + 0xd4), + *(long *)(param_3 + 4) + lVar10 + (long)param_5[1] * **(long **)(param_3 + 0x12), + param_3[0x14]); + } + return; +} + + +================================================================== + +### FUNC 001bf5bc (2092 bytes) name=FUN_001bf5bc + +int FUN_001bf5bc(long param_1,long param_2,int param_3,int param_4,long param_5,int param_6) + +{ + long lVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined2 uVar20; + char cVar21; + undefined4 uVar22; + bool bVar23; + bool bVar24; + int iVar25; + ulong *puVar26; + long lVar27; + long *plVar28; + char *pcVar29; + long lVar30; + int iVar31; + long lVar32; + int iVar33; + uint uVar34; + void *__src; + ulong *puVar35; + long lVar36; + int iVar37; + int iVar38; + void *local_48; + undefined8 local_10; + undefined8 local_8; + + if ((*(int *)(param_1 + 0x28) < 1) || (*(int *)(param_1 + 0x2c) < 1)) { + local_10 = 0; + local_8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_10,0x2b); + cVar21 = s_wholeSize_width_>_0____wholeSize_00442fd8[0x2a]; + uVar20 = s_wholeSize_width_>_0____wholeSize_00442fd8._40_2_; + uVar19 = s_wholeSize_width_>_0____wholeSize_00442fd8._24_8_; + uVar18 = s_wholeSize_width_>_0____wholeSize_00442fd8._16_8_; + uVar17 = s_wholeSize_width_>_0____wholeSize_00442fd8._8_8_; + uVar16 = s_wholeSize_width_>_0____wholeSize_00442fd8._0_8_; + *(undefined8 *)(pcVar29 + 0x20) = s_wholeSize_width_>_0____wholeSize_00442fd8._32_8_; + *(undefined2 *)(pcVar29 + 0x28) = uVar20; + pcVar29[0x2a] = cVar21; + *(undefined8 *)pcVar29 = uVar16; + *(undefined8 *)(pcVar29 + 8) = uVar17; + *(undefined8 *)(pcVar29 + 0x10) = uVar18; + *(undefined8 *)(pcVar29 + 0x18) = uVar19; + cv::error(-0xd7,(String *)&local_10, + "virtual int cv::FilterEngine::proceed(const uchar*, int, int, uchar*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",299); + cv::String::deallocate((String *)&local_10); + } + puVar26 = *(ulong **)(param_1 + 0xe8); + iVar25 = *(int *)(param_1 + 0x30); + if (*(int *)(param_1 + 0x1c) < *(int *)(param_1 + 0x30)) { + iVar25 = *(int *)(param_1 + 0x1c); + } + iVar10 = (*(uint *)(param_1 + 8) >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)(param_1 + 8) & 7) << 1)) & 3); + iVar4 = *(int *)(param_1 + 0x38); + bVar23 = *(long *)(param_1 + 0x108) == 0; + iVar5 = *(int *)(param_1 + 0x44); + iVar2 = (*(uint *)(param_1 + 0x10) >> 3 & 0x1ff) + 1; + iVar6 = *(int *)(param_1 + 0x18); + iVar15 = (int)(*(long *)(param_1 + 0xf0) - (long)puVar26 >> 3); + iVar37 = *(int *)(param_1 + 0x14); + iVar7 = *(int *)(param_1 + 0x20); + lVar36 = *(long *)(param_1 + 0x50); + iVar8 = *(int *)(param_1 + 0x68); + iVar9 = *(int *)(param_1 + 0x40); + if ((0 < iVar5) || (bVar24 = false, 0 < iVar9)) { + bVar24 = *(int *)(param_1 + 0x48) != 0; + } + iVar31 = *(int *)(param_1 + 0xd4); + iVar33 = *(int *)(param_1 + 0xe0); + iVar12 = (*(int *)(param_1 + 0xdc) - iVar31) - iVar33; + if (iVar12 < param_4) { + param_4 = iVar12; + } + local_48 = (void *)(param_2 - iVar10 * iVar25); + if ((param_5 == 0 || param_4 < 1) || (local_48 == (void *)0x0)) { + local_10 = 0; + local_8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar21 = s_src____dst____count_>_0_00443008[0x16]; + uVar20 = s_src____dst____count_>_0_00443008._20_2_; + uVar17 = s_src____dst____count_>_0_00443008._8_8_; + uVar16 = s_src____dst____count_>_0_00443008._0_8_; + *(undefined4 *)(pcVar29 + 0x10) = s_src____dst____count_>_0_00443008._16_4_; + *(undefined2 *)(pcVar29 + 0x14) = uVar20; + pcVar29[0x16] = cVar21; + *(undefined8 *)pcVar29 = uVar16; + *(undefined8 *)(pcVar29 + 8) = uVar17; + cv::error(-0xd7,(String *)&local_10, + "virtual int cv::FilterEngine::proceed(const uchar*, int, int, uchar*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x13e); + cv::String::deallocate((String *)&local_10); + iVar31 = *(int *)(param_1 + 0xd4); + iVar33 = *(int *)(param_1 + 0xe0); + } + iVar13 = (iVar4 + iVar37 + -1) - iVar5; + iVar14 = iVar15 - iVar7; + iVar12 = iVar8 * iVar9; + iVar11 = iVar10 * iVar9; + iVar25 = ((iVar14 - iVar31) - iVar33) + *(int *)(param_1 + 0x34); + iVar37 = 0; + while( true ) { + if (iVar25 < 1) { + iVar25 = (iVar15 - iVar6) + 1; + } + if (param_4 < iVar25) { + iVar25 = param_4; + } + param_4 = param_4 - iVar25; + if (0 < iVar25) { + lVar30 = (long)param_3; + __src = local_48; + uVar34 = iVar25 - 1U; + while( true ) { + iVar3 = (iVar31 - *(int *)(param_1 + 0xd8)) + iVar33; + iVar38 = 0; + if (iVar15 != 0) { + iVar38 = iVar3 / iVar15; + } + lVar1 = (*(long *)(param_1 + 0x70) + 0xfU & 0xfffffffffffffff0) + + (long)((iVar3 - iVar38 * iVar15) * *(int *)(param_1 + 0xd0)); + lVar32 = lVar1; + if (bVar23) { + lVar32 = *(long *)(param_1 + 0x88); + } + if (iVar15 < iVar33 + 1) { + *(int *)(param_1 + 0xe0) = iVar33; + *(int *)(param_1 + 0xd4) = iVar31 + 1; + } + else { + *(int *)(param_1 + 0xe0) = iVar33 + 1; + } + memcpy((void *)(lVar32 + iVar11),__src,(long)((iVar13 - iVar9) * iVar10)); + if (bVar24) { + if (iVar8 << 2 == iVar10) { + lVar27 = 0; + if (0 < iVar12) { + do { + *(undefined4 *)(lVar32 + lVar27 * 4) = + *(undefined4 *)((long)__src + (long)*(int *)(lVar36 + lVar27 * 4) * 4); + lVar27 = lVar27 + 1; + } while ((int)lVar27 < iVar12); + } + lVar27 = 0; + if (0 < iVar8 * iVar5) { + do { + *(undefined4 *) + (lVar32 + (-(ulong)((uint)(iVar8 * iVar13) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar8 * iVar13) << 2) + lVar27 * 4) = + *(undefined4 *) + ((long)__src + (long)*(int *)(lVar36 + (long)iVar12 * 4 + lVar27 * 4) * 4); + lVar27 = lVar27 + 1; + } while ((int)lVar27 < iVar8 * iVar5); + } + } + else { + lVar27 = 0; + if (0 < iVar11) { + do { + *(undefined1 *)(lVar32 + lVar27) = + *(undefined1 *)((long)__src + (long)*(int *)(lVar36 + lVar27 * 4)); + lVar27 = lVar27 + 1; + } while ((int)lVar27 < iVar11); + } + lVar27 = 0; + if (0 < iVar5 * iVar10) { + do { + *(undefined1 *)(lVar32 + iVar13 * iVar10 + lVar27) = + *(undefined1 *) + ((long)__src + (long)*(int *)(lVar36 + (long)iVar11 * 4 + lVar27 * 4)); + lVar27 = lVar27 + 1; + } while ((int)lVar27 < iVar5 * iVar10); + } + } + } + if (bVar23) { + (**(code **)(**(long **)(param_1 + 0x118) + 0x10)) + (*(long **)(param_1 + 0x118),lVar32,lVar1,iVar4, + (*(uint *)(param_1 + 8) >> 3 & 0x1ff) + 1); + } + if (uVar34 == 0) break; + uVar34 = uVar34 - 1; + __src = (void *)((long)__src + lVar30); + iVar31 = *(int *)(param_1 + 0xd4); + iVar33 = *(int *)(param_1 + 0xe0); + } + local_48 = (void *)((long)local_48 + lVar30 + (ulong)(iVar25 - 1U) * lVar30); + } + iVar25 = *(int *)(param_1 + 0xe4) + iVar37; + iVar31 = (*(int *)(param_1 + 0x3c) - iVar25) + iVar6 + -1; + if (iVar15 < iVar31) { + iVar31 = iVar15; + } + if (0 < iVar31) break; + iVar38 = 0; +joined_r0x001bfbe8: + if (iVar38 < iVar6) { + iVar25 = iVar37 + *(int *)(param_1 + 0xe4); + *(int *)(param_1 + 0xe4) = iVar25; + if (*(int *)(param_1 + 0x3c) < iVar25) { + local_10 = 0; + local_8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_10,0x12); + uVar17 = s_dstY_<__roi_height_00443030._8_8_; + uVar16 = s_dstY_<__roi_height_00443030._0_8_; + *(undefined2 *)(pcVar29 + 0x10) = s_dstY_<__roi_height_00443030._16_2_; + *(undefined8 *)pcVar29 = uVar16; + *(undefined8 *)(pcVar29 + 8) = uVar17; + cv::error(-0xd7,(String *)&local_10, + "virtual int cv::FilterEngine::proceed(const uchar*, int, int, uchar*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x187); + cv::String::deallocate((String *)&local_10); + } + return iVar37; + } + plVar28 = *(long **)(param_1 + 0x108); + iVar25 = (iVar38 - iVar6) + 1; + if (plVar28 == (long *)0x0) { + (**(code **)(**(long **)(param_1 + 0x128) + 0x10)) + (*(long **)(param_1 + 0x128),puVar26,param_5,param_6,iVar25, + iVar2 * *(int *)(param_1 + 0x38)); + } + else { + (**(code **)(*plVar28 + 0x10)) + (plVar28,puVar26,param_5,param_6,iVar25,*(undefined4 *)(param_1 + 0x38),iVar2); + } + iVar31 = *(int *)(param_1 + 0xd4); + param_5 = param_5 + param_6 * iVar25; + iVar33 = *(int *)(param_1 + 0xe0); + iVar37 = iVar37 + iVar25; + iVar25 = ((iVar14 - iVar31) - iVar33) + *(int *)(param_1 + 0x34); + } + iVar33 = 0; + puVar35 = puVar26; + do { + iVar25 = cv::borderInterpolate + ((iVar25 + iVar33 + *(int *)(param_1 + 0x34)) - iVar7, + *(int *)(param_1 + 0x2c),*(int *)(param_1 + 0x4c)); + if (iVar25 < 0) { + *puVar35 = *(long *)(param_1 + 0xb8) + 0xfU & 0xfffffffffffffff0; + } + else { + if (iVar25 < *(int *)(param_1 + 0xd4)) { + local_10 = 0; + local_8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar20 = s_srcY_>__startY_00443020._12_2_; + uVar22 = s_srcY_>__startY_00443020._8_4_; + *(undefined8 *)pcVar29 = s_srcY_>__startY_00443020._0_8_; + *(undefined4 *)(pcVar29 + 8) = uVar22; + *(undefined2 *)(pcVar29 + 0xc) = uVar20; + cv::error(-0xd7,(String *)&local_10, + "virtual int cv::FilterEngine::proceed(const uchar*, int, int, uchar*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x176); + cv::String::deallocate((String *)&local_10); + iVar3 = *(int *)(param_1 + 0xd4) + *(int *)(param_1 + 0xe0); + } + else { + iVar3 = *(int *)(param_1 + 0xd4) + *(int *)(param_1 + 0xe0); + } + iVar38 = iVar33; + if (iVar3 <= iVar25) goto joined_r0x001bfbe8; + iVar25 = iVar25 - *(int *)(param_1 + 0xd8); + iVar3 = 0; + if (iVar15 != 0) { + iVar3 = iVar25 / iVar15; + } + *puVar35 = (*(long *)(param_1 + 0x70) + 0xfU & 0xfffffffffffffff0) + + (long)((iVar25 - iVar3 * iVar15) * *(int *)(param_1 + 0xd0)); + } + iVar38 = iVar31; + if (iVar33 + 1 == iVar31) goto joined_r0x001bfbe8; + iVar33 = iVar33 + 1; + puVar35 = puVar35 + 1; + iVar25 = *(int *)(param_1 + 0xe4) + iVar37; + } while( true ); +} + + +================================================================== + +### FUNC 001bfe38 (452 bytes) name=FUN_001bfe38 + +int FUN_001bfe38(long *param_1,Mat *param_2,int *param_3,char param_4,undefined4 param_5) + +{ + uint uVar1; + uint uVar2; + void *__dest; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int local_28; + int local_24; + int local_20; + int local_1c; + int local_18; + int local_14; + int local_10 [4]; + + iVar3 = *param_3; + uVar6 = param_3[1]; + uVar4 = param_3[2]; + uVar5 = param_3[3]; + uVar1 = (uint)(uVar5 == 0xffffffff && (uVar4 == 0xffffffff && (iVar3 == 0 && uVar6 == 0))); + if (uVar1 == 0) { + if (-1 < iVar3) { + uVar2 = ~uVar4 & (uVar5 ^ 0xffffffff); + uVar1 = ~uVar6 >> 0x1f; + goto joined_r0x001bffa8; + } + } + else { + uVar4 = *(uint *)(param_2 + 0xc); + iVar3 = 0; + uVar5 = *(uint *)(param_2 + 8); + uVar6 = 0; + uVar2 = ~uVar4 & (uVar5 ^ 0xffffffff); +joined_r0x001bffa8: + if (((((int)uVar2 < 0) && (uVar1 != 0)) && + (local_20 = *(int *)(param_2 + 0xc), (int)(uVar4 + iVar3) <= local_20)) && + (local_1c = *(int *)(param_2 + 8), (int)(uVar5 + uVar6) <= local_1c)) goto LAB_001bff10; + } + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + __dest = (void *)cv::String::allocate((String *)local_10,0x98); + memcpy(__dest, + "srcRoi.x >= 0 && srcRoi.y >= 0 && srcRoi.width >= 0 && srcRoi.height >= 0 && srcRoi.x + srcRoi.width <= src.cols && srcRoi.y + srcRoi.height <= src.rows" + ,0x98); + cv::error(-0xd7,(String *)local_10, + "virtual int cv::FilterEngine::start(const cv::Mat&, const Rect&, bool, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x112); + cv::String::deallocate((String *)local_10); + local_20 = *(int *)(param_2 + 0xc); + local_1c = *(int *)(param_2 + 8); +LAB_001bff10: + local_28 = 0; + local_24 = 0; + if (param_4 == '\0') { + cv::Mat::locateROI(param_2,(Size_ *)&local_20,(Point_ *)&local_28); + } + local_10[1] = uVar6 + local_24; + local_10[0] = iVar3 + local_28; + local_10[3] = uVar5; + local_10[2] = uVar4; + local_18 = local_20; + local_14 = local_1c; + (**(code **)(*param_1 + 0x10))(param_1,&local_18,local_10,param_5); + return *(int *)((long)param_1 + 0xd4) - local_24; +} + + +================================================================== + +### FUNC 001c0010 (32 bytes) name=FUN_001c0010 + +void FUN_001c0010(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 001c0030 (612 bytes) name=FUN_001c0030 + +uint FUN_001c0030(uint *param_1,long *param_2,undefined8 *param_3,int param_4) + +{ + float *pfVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + int iVar5; + uint uVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined8 uVar9; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined8 uVar12; + int iVar13; + long lVar14; + float *pfVar15; + long *plVar16; + long *plVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + + fVar27 = (float)param_1[1]; + iVar13 = param_1[4] + param_1[5] + -1; + iVar5 = iVar13 / 2; + pfVar1 = (float *)(*(long *)(param_1 + 6) + (long)iVar5 * 4); + if ((*param_1 & 1) == 0) { + fVar28 = pfVar1[1]; + if (param_4 < 8) { + return *param_1 & 1; + } + uVar6 = param_4 - 8U >> 3; + lVar14 = 0; + do { + puVar2 = (undefined8 *)(param_2[1] + lVar14); + puVar3 = (undefined8 *)(param_2[-1] + lVar14); + fVar22 = fVar27 + ((float)*puVar2 - (float)*puVar3) * fVar28; + fVar23 = fVar27 + ((float)((ulong)*puVar2 >> 0x20) - (float)((ulong)*puVar3 >> 0x20)) * fVar28 + ; + fVar24 = fVar27 + ((float)puVar2[1] - (float)puVar3[1]) * fVar28; + fVar25 = fVar27 + ((float)((ulong)puVar2[1] >> 0x20) - (float)((ulong)puVar3[1] >> 0x20)) * + fVar28; + fVar29 = fVar27 + ((float)puVar2[2] - (float)puVar3[2]) * fVar28; + fVar19 = fVar27 + ((float)((ulong)puVar2[2] >> 0x20) - (float)((ulong)puVar3[2] >> 0x20)) * + fVar28; + fVar20 = fVar27 + ((float)puVar2[3] - (float)puVar3[3]) * fVar28; + fVar21 = fVar27 + ((float)((ulong)puVar2[3] >> 0x20) - (float)((ulong)puVar3[3] >> 0x20)) * + fVar28; + if (1 < iVar5) { + iVar13 = 2; + pfVar15 = pfVar1 + 2; + plVar16 = param_2 + -2; + plVar17 = param_2 + 2; + do { + iVar13 = iVar13 + 1; + puVar2 = (undefined8 *)(*plVar17 + lVar14); + puVar3 = (undefined8 *)(*plVar16 + lVar14); + fVar26 = *pfVar15; + fVar22 = fVar22 + ((float)*puVar2 - (float)*puVar3) * fVar26; + fVar23 = fVar23 + ((float)((ulong)*puVar2 >> 0x20) - (float)((ulong)*puVar3 >> 0x20)) * + fVar26; + fVar24 = fVar24 + ((float)puVar2[1] - (float)puVar3[1]) * fVar26; + fVar25 = fVar25 + ((float)((ulong)puVar2[1] >> 0x20) - (float)((ulong)puVar3[1] >> 0x20)) + * fVar26; + fVar29 = fVar29 + ((float)puVar2[2] - (float)puVar3[2]) * fVar26; + fVar19 = fVar19 + ((float)((ulong)puVar2[2] >> 0x20) - (float)((ulong)puVar3[2] >> 0x20)) + * fVar26; + fVar20 = fVar20 + ((float)puVar2[3] - (float)puVar3[3]) * fVar26; + fVar21 = fVar21 + ((float)((ulong)puVar2[3] >> 0x20) - (float)((ulong)puVar3[3] >> 0x20)) + * fVar26; + pfVar15 = pfVar15 + 1; + plVar16 = plVar16 + -1; + plVar17 = plVar17 + 1; + } while (iVar13 <= iVar5); + } + lVar14 = lVar14 + 0x20; + auVar11._4_4_ = (int)fVar23; + auVar11._0_4_ = (int)fVar22; + auVar11._8_4_ = (int)fVar24; + auVar11._12_4_ = (int)fVar25; + uVar12 = NEON_sqxtn(CONCAT44((int)fVar23,(int)fVar22),auVar11,4); + auVar8._4_4_ = (int)fVar19; + auVar8._0_4_ = (int)fVar29; + auVar8._8_4_ = (int)fVar20; + auVar8._12_4_ = (int)fVar21; + uVar9 = NEON_sqxtn(CONCAT44((int)fVar19,(int)fVar29),auVar8,4); + *param_3 = uVar12; + param_3[1] = uVar9; + param_3 = param_3 + 2; + } while (lVar14 != ((ulong)uVar6 + 1) * 0x20); + return (uVar6 + 1) * 8; + } + if (iVar13 != 1) { + fVar28 = *pfVar1; + fVar29 = pfVar1[1]; + if (7 < param_4) { + uVar6 = param_4 - 8U >> 3; + lVar14 = 0; + do { + puVar2 = (undefined8 *)(*param_2 + lVar14); + puVar3 = (undefined8 *)(param_2[1] + lVar14); + puVar4 = (undefined8 *)(param_2[-1] + lVar14); + fVar23 = fVar27 + (float)*puVar2 * fVar28 + ((float)*puVar3 + (float)*puVar4) * fVar29; + fVar24 = fVar27 + (float)((ulong)*puVar2 >> 0x20) * fVar28 + + ((float)((ulong)*puVar3 >> 0x20) + (float)((ulong)*puVar4 >> 0x20)) * fVar29; + fVar25 = fVar27 + (float)puVar2[1] * fVar28 + ((float)puVar3[1] + (float)puVar4[1]) * fVar29 + ; + fVar26 = fVar27 + (float)((ulong)puVar2[1] >> 0x20) * fVar28 + + ((float)((ulong)puVar3[1] >> 0x20) + (float)((ulong)puVar4[1] >> 0x20)) * fVar29; + fVar19 = fVar27 + (float)puVar2[2] * fVar28 + ((float)puVar3[2] + (float)puVar4[2]) * fVar29 + ; + fVar20 = fVar27 + (float)((ulong)puVar2[2] >> 0x20) * fVar28 + + ((float)((ulong)puVar3[2] >> 0x20) + (float)((ulong)puVar4[2] >> 0x20)) * fVar29; + fVar21 = fVar27 + (float)puVar2[3] * fVar28 + ((float)puVar3[3] + (float)puVar4[3]) * fVar29 + ; + fVar22 = fVar27 + (float)((ulong)puVar2[3] >> 0x20) * fVar28 + + ((float)((ulong)puVar3[3] >> 0x20) + (float)((ulong)puVar4[3] >> 0x20)) * fVar29; + if (1 < iVar5) { + iVar13 = 2; + pfVar15 = pfVar1 + 2; + plVar16 = param_2 + -2; + plVar17 = param_2 + 2; + do { + iVar13 = iVar13 + 1; + puVar2 = (undefined8 *)(*plVar17 + lVar14); + puVar3 = (undefined8 *)(*plVar16 + lVar14); + fVar18 = *pfVar15; + fVar23 = fVar23 + ((float)*puVar2 + (float)*puVar3) * fVar18; + fVar24 = fVar24 + ((float)((ulong)*puVar2 >> 0x20) + (float)((ulong)*puVar3 >> 0x20)) * + fVar18; + fVar25 = fVar25 + ((float)puVar2[1] + (float)puVar3[1]) * fVar18; + fVar26 = fVar26 + ((float)((ulong)puVar2[1] >> 0x20) + (float)((ulong)puVar3[1] >> 0x20) + ) * fVar18; + fVar19 = fVar19 + ((float)puVar2[2] + (float)puVar3[2]) * fVar18; + fVar20 = fVar20 + ((float)((ulong)puVar2[2] >> 0x20) + (float)((ulong)puVar3[2] >> 0x20) + ) * fVar18; + fVar21 = fVar21 + ((float)puVar2[3] + (float)puVar3[3]) * fVar18; + fVar22 = fVar22 + ((float)((ulong)puVar2[3] >> 0x20) + (float)((ulong)puVar3[3] >> 0x20) + ) * fVar18; + pfVar15 = pfVar15 + 1; + plVar16 = plVar16 + -1; + plVar17 = plVar17 + 1; + } while (iVar13 <= iVar5); + } + lVar14 = lVar14 + 0x20; + auVar10._4_4_ = (int)fVar24; + auVar10._0_4_ = (int)fVar23; + auVar10._8_4_ = (int)fVar25; + auVar10._12_4_ = (int)fVar26; + uVar12 = NEON_sqxtn(CONCAT44((int)fVar24,(int)fVar23),auVar10,4); + auVar7._4_4_ = (int)fVar20; + auVar7._0_4_ = (int)fVar19; + auVar7._8_4_ = (int)fVar21; + auVar7._12_4_ = (int)fVar22; + uVar9 = NEON_sqxtn(CONCAT44((int)fVar20,(int)fVar19),auVar7,4); + *param_3 = uVar12; + param_3[1] = uVar9; + param_3 = param_3 + 2; + } while (lVar14 != ((ulong)uVar6 + 1) * 0x20); + return (uVar6 + 1) * 8; + } + } + return 0; +} + + +================================================================== + +### FUNC 001c0294 (1796 bytes) name=FUN_001c0294 + +void FUN_001c0294(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + float *pfVar1; + long *plVar2; + long lVar3; + int iVar4; + char cVar5; + uint uVar6; + int iVar7; + long lVar8; + long lVar9; + long *plVar10; + long *plVar11; + long *plVar12; + undefined2 uVar13; + long *plVar14; + float *pfVar15; + long lVar16; + long lVar17; + undefined2 *puVar18; + long *plVar19; + long lVar20; + undefined2 uVar21; + undefined2 uVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + + iVar4 = *(int *)(param_1 + 8) / 2; + fVar25 = *(float *)(param_1 + 0xe8); + pfVar1 = (float *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 4); + plVar2 = (long *)(param_2 + (long)iVar4 * 8); + if ((*(uint *)(param_1 + 0xec) & 1) == 0) { + if (param_5 != 0) { + plVar19 = plVar2 + -1; + do { + plVar10 = plVar19 + 1; + iVar7 = 0; + if (*(char *)(param_1 + 0xe0) != '\0') { + iVar7 = FUN_001c0030(param_1 + 0x78,plVar10,param_3,param_6); + } + if (iVar7 < param_6 + -3) { + lVar16 = (long)iVar7; + uVar6 = (uint)((param_6 + -4) - iVar7) >> 2; + lVar20 = lVar16 << 2; + lVar17 = lVar16; + lVar9 = lVar16 + 4; + while( true ) { + fVar24 = fVar25; + fVar28 = fVar25; + fVar27 = fVar25; + fVar26 = fVar25; + if (0 < iVar4) { + plVar11 = plVar19; + plVar12 = plVar19 + 2; + pfVar15 = pfVar1; + do { + pfVar15 = pfVar15 + 1; + plVar14 = plVar11 + -1; + lVar8 = *plVar11 + lVar20; + lVar3 = *plVar12 + lVar20; + fVar23 = *pfVar15; + fVar24 = fVar24 + fVar23 * (*(float *)(*plVar12 + lVar20) - + *(float *)(*plVar11 + lVar20)); + fVar26 = fVar26 + fVar23 * (*(float *)(lVar3 + 4) - *(float *)(lVar8 + 4)); + fVar27 = fVar27 + fVar23 * (*(float *)(lVar3 + 8) - *(float *)(lVar8 + 8)); + fVar28 = fVar28 + fVar23 * (*(float *)(lVar3 + 0xc) - *(float *)(lVar8 + 0xc)); + plVar11 = plVar14; + plVar12 = plVar12 + 1; + } while (plVar19 + (-1 - (ulong)(iVar4 - 1U)) != plVar14); + } + lVar17 = lVar17 * 2; + lVar8 = lrintf(fVar24); + uVar22 = 0x7fff; + uVar13 = (short)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar13 = uVar22, (int)lVar8 < 1)) { + uVar13 = 0x8000; + } + *(undefined2 *)(param_3 + lVar17) = uVar13; + lVar8 = lrintf(fVar26); + uVar13 = (short)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar13 = uVar22, (int)lVar8 < 1)) { + uVar13 = 0x8000; + } + *(undefined2 *)(param_3 + lVar17 + 2) = uVar13; + lVar8 = lrintf(fVar27); + uVar13 = (short)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar13 = uVar22, (int)lVar8 < 1)) { + uVar13 = 0x8000; + } + *(undefined2 *)(param_3 + lVar17 + 4) = uVar13; + lVar8 = lrintf(fVar28); + uVar13 = (short)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar13 = uVar22, (int)lVar8 < 1)) { + uVar13 = 0x8000; + } + *(undefined2 *)(param_3 + lVar17 + 6) = uVar13; + lVar20 = lVar20 + 0x10; + if (lVar9 == lVar16 + 4 + (ulong)uVar6 * 4) break; + lVar17 = lVar9; + lVar9 = lVar9 + 4; + } + iVar7 = iVar7 + 4 + uVar6 * 4; + } + if (iVar7 < param_6) { + lVar16 = (long)iVar7; + lVar20 = lVar16 << 2; + lVar17 = lVar16; + lVar9 = lVar16 + 1; + while( true ) { + fVar24 = fVar25; + if (0 < iVar4) { + plVar11 = plVar19 + 2; + plVar12 = plVar19; + pfVar15 = pfVar1; + do { + pfVar15 = pfVar15 + 1; + plVar14 = plVar11 + 1; + fVar24 = fVar24 + (*(float *)(*plVar11 + lVar20) - *(float *)(*plVar12 + lVar20)) * + *pfVar15; + plVar11 = plVar14; + plVar12 = plVar12 + -1; + } while (plVar14 != plVar19 + (ulong)(iVar4 - 1U) + 3); + } + lVar8 = lrintf(fVar24); + uVar13 = (undefined2)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar8 < 1)) { + uVar13 = 0x8000; + } + *(undefined2 *)(param_3 + lVar17 * 2) = uVar13; + lVar20 = lVar20 + 4; + if (lVar9 == lVar16 + 1 + (ulong)(uint)((param_6 + -1) - iVar7)) break; + lVar17 = lVar9; + lVar9 = lVar9 + 1; + } + } + param_3 = param_3 + param_4; + plVar19 = plVar10; + } while (plVar10 != plVar2 + (param_5 - 1)); + } + } + else if (param_5 != 0) { + cVar5 = *(char *)(param_1 + 0xe0); + plVar10 = plVar2; + plVar19 = plVar2 + -1; + while( true ) { + plVar11 = plVar10; + iVar7 = 0; + if (cVar5 != '\0') { + iVar7 = FUN_001c0030(param_1 + 0x78,plVar11,param_3,param_6); + } + if (iVar7 < param_6 + -3) { + lVar17 = (long)iVar7; + lVar20 = lVar17 << 2; + uVar6 = (uint)((param_6 + -4) - iVar7) >> 2; + puVar18 = (undefined2 *)(param_3 + lVar17 * 2); + do { + fVar28 = *pfVar1; + lVar9 = plVar19[1] + lVar20; + fVar24 = fVar25 + fVar28 * *(float *)(plVar19[1] + lVar20); + fVar26 = fVar25 + fVar28 * *(float *)(lVar9 + 4); + fVar27 = fVar25 + fVar28 * *(float *)(lVar9 + 8); + fVar28 = fVar25 + fVar28 * *(float *)(lVar9 + 0xc); + if (0 < iVar4) { + plVar10 = plVar19; + plVar12 = plVar19 + 2; + pfVar15 = pfVar1; + do { + pfVar15 = pfVar15 + 1; + plVar14 = plVar10 + -1; + lVar9 = *plVar10 + lVar20; + lVar16 = *plVar12 + lVar20; + fVar23 = *pfVar15; + fVar24 = fVar24 + fVar23 * (*(float *)(*plVar12 + lVar20) + + *(float *)(*plVar10 + lVar20)); + fVar26 = fVar26 + fVar23 * (*(float *)(lVar16 + 4) + *(float *)(lVar9 + 4)); + fVar27 = fVar27 + fVar23 * (*(float *)(lVar16 + 8) + *(float *)(lVar9 + 8)); + fVar28 = fVar28 + fVar23 * (*(float *)(lVar16 + 0xc) + *(float *)(lVar9 + 0xc)); + plVar10 = plVar14; + plVar12 = plVar12 + 1; + } while (plVar19 + (-1 - (ulong)(iVar4 - 1U)) != plVar14); + } + lVar9 = lrintf(fVar24); + uVar22 = 0x8000; + uVar21 = 0x7fff; + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = uVar21, (int)lVar9 < 1)) { + uVar13 = uVar22; + } + *puVar18 = uVar13; + lVar9 = lrintf(fVar26); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = uVar21, (int)lVar9 < 1)) { + uVar13 = uVar22; + } + puVar18[1] = uVar13; + lVar9 = lrintf(fVar27); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = uVar21, (int)lVar9 < 1)) { + uVar13 = uVar22; + } + puVar18[2] = uVar13; + lVar9 = lrintf(fVar28); + uVar13 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = uVar21, (int)lVar9 < 1)) { + uVar13 = uVar22; + } + lVar20 = lVar20 + 0x10; + puVar18[3] = uVar13; + puVar18 = puVar18 + 4; + } while (lVar20 != (lVar17 + 4 + (ulong)uVar6 * 4) * 4); + iVar7 = iVar7 + 4 + uVar6 * 4; + } + if (iVar7 < param_6) { + lVar17 = (long)iVar7; + lVar20 = lVar17 << 2; + puVar18 = (undefined2 *)(param_3 + lVar17 * 2); + do { + fVar24 = fVar25 + *(float *)(plVar19[1] + lVar20) * *pfVar1; + if (0 < iVar4) { + plVar10 = plVar19 + 2; + plVar12 = plVar19; + pfVar15 = pfVar1; + do { + pfVar15 = pfVar15 + 1; + plVar14 = plVar10 + 1; + fVar24 = fVar24 + (*(float *)(*plVar10 + lVar20) + *(float *)(*plVar12 + lVar20)) * + *pfVar15; + plVar10 = plVar14; + plVar12 = plVar12 + -1; + } while (plVar19 + (ulong)(iVar4 - 1U) + 3 != plVar14); + } + lVar9 = lrintf(fVar24); + uVar13 = (undefined2)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar9 < 1)) { + uVar13 = 0x8000; + } + lVar20 = lVar20 + 4; + *puVar18 = uVar13; + puVar18 = puVar18 + 1; + } while (lVar20 != (lVar17 + 1 + (ulong)(uint)((param_6 + -1) - iVar7)) * 4); + } + param_3 = param_3 + param_4; + if (plVar2 + (param_5 - 1) == plVar11) break; + cVar5 = *(char *)(param_1 + 0xe0); + plVar10 = plVar11 + 1; + plVar19 = plVar11; + } + } + return; +} + + +================================================================== + +### FUNC 001c0998 (788 bytes) name=FUN_001c0998 + +void FUN_001c0998(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + uint uVar2; + float *pfVar3; + int iVar4; + long lVar5; + long *plVar6; + undefined2 uVar7; + long *plVar8; + long lVar9; + undefined2 *puVar10; + long *plVar11; + float *pfVar12; + undefined2 uVar13; + undefined2 uVar14; + long *plVar15; + long lVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float __x; + float __x_00; + + pfVar12 = *(float **)(param_1 + 0x20); + fVar20 = *(float *)(param_1 + 0xe8); + iVar1 = *(int *)(param_1 + 8); + if (param_5 != 0) { + plVar11 = (long *)(param_2 + 8); + plVar15 = (long *)(param_2 + ((ulong)(iVar1 - 2) + 2) * 8); + do { + iVar4 = 0; + if (*(char *)(param_1 + 0xe0) != '\0') { + iVar4 = FUN_001c0030(param_1 + 0x78,plVar11 + -1,param_3,param_6); + } + uVar13 = 0x8000; + uVar14 = 0x7fff; + if (iVar4 < param_6 + -3) { + lVar9 = (long)iVar4; + uVar2 = (uint)((param_6 + -4) - iVar4) >> 2; + lVar16 = lVar9 << 2; + puVar10 = (undefined2 *)(param_3 + lVar9 * 2); + do { + fVar18 = *pfVar12; + lVar5 = plVar11[-1] + lVar16; + fVar17 = fVar20 + fVar18 * *(float *)(plVar11[-1] + lVar16); + __x_00 = fVar20 + fVar18 * *(float *)(lVar5 + 4); + __x = fVar20 + fVar18 * *(float *)(lVar5 + 8); + fVar18 = fVar20 + fVar18 * *(float *)(lVar5 + 0xc); + plVar6 = plVar11; + pfVar3 = pfVar12; + if (1 < iVar1) { + do { + plVar8 = plVar6 + 1; + fVar19 = pfVar3[1]; + lVar5 = *plVar6 + lVar16; + fVar17 = fVar17 + fVar19 * *(float *)(*plVar6 + lVar16); + __x_00 = __x_00 + fVar19 * *(float *)(lVar5 + 4); + __x = __x + fVar19 * *(float *)(lVar5 + 8); + fVar18 = fVar18 + fVar19 * *(float *)(lVar5 + 0xc); + plVar6 = plVar8; + pfVar3 = pfVar3 + 1; + } while (plVar15 != plVar8); + } + lVar5 = lrintf(fVar17); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = uVar14, (int)lVar5 < 1)) { + uVar7 = uVar13; + } + *puVar10 = uVar7; + lVar5 = lrintf(__x_00); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = uVar14, (int)lVar5 < 1)) { + uVar7 = uVar13; + } + puVar10[1] = uVar7; + lVar5 = lrintf(__x); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = 0x7fff, (int)lVar5 < 1)) { + uVar7 = 0x8000; + } + puVar10[2] = uVar7; + lVar5 = lrintf(fVar18); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = 0x7fff, (int)lVar5 < 1)) { + uVar7 = 0x8000; + } + lVar16 = lVar16 + 0x10; + puVar10[3] = uVar7; + puVar10 = puVar10 + 4; + } while (lVar16 != (lVar9 + 4 + (ulong)uVar2 * 4) * 4); + iVar4 = iVar4 + 4 + uVar2 * 4; + } + if (iVar4 < param_6) { + lVar9 = (long)iVar4; + lVar16 = lVar9 << 2; + puVar10 = (undefined2 *)(param_3 + lVar9 * 2); + do { + fVar17 = fVar20 + *(float *)(plVar11[-1] + lVar16) * *pfVar12; + plVar6 = plVar11; + pfVar3 = pfVar12; + if (1 < iVar1) { + do { + plVar8 = plVar6 + 1; + fVar17 = fVar17 + *(float *)(*plVar6 + lVar16) * pfVar3[1]; + plVar6 = plVar8; + pfVar3 = pfVar3 + 1; + } while (plVar15 != plVar8); + } + lVar5 = lrintf(fVar17); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = uVar14, (int)lVar5 < 1)) { + uVar7 = uVar13; + } + lVar16 = lVar16 + 4; + *puVar10 = uVar7; + puVar10 = puVar10 + 1; + } while (lVar16 != (lVar9 + 1 + (ulong)(uint)((param_6 + -1) - iVar4)) * 4); + } + plVar11 = plVar11 + 1; + plVar15 = plVar15 + 1; + param_3 = param_3 + param_4; + } while (plVar11 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001c0cac (692 bytes) name=FUN_001c0cac + +uint FUN_001c0cac(uint *param_1,long *param_2,undefined8 *param_3,int param_4) + +{ + float *pfVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + float *pfVar6; + long *plVar7; + long *plVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + float fVar13; + float fVar14; + float fVar17; + undefined8 uVar15; + float fVar18; + undefined1 auVar16 [16]; + float fVar19; + float fVar20; + float fVar23; + undefined8 uVar21; + float fVar24; + undefined1 auVar22 [16]; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + + fVar26 = (float)param_1[1]; + iVar4 = param_1[4] + param_1[5] + -1; + iVar2 = iVar4 / 2; + pfVar1 = (float *)(*(long *)(param_1 + 6) + (long)iVar2 * 4); + if ((*param_1 & 1) == 0) { + fVar27 = pfVar1[1]; + if (param_4 < 8) { + return *param_1 & 1; + } + uVar3 = param_4 - 8U >> 3; + lVar5 = 0; + do { + auVar12 = NEON_scvtf(*(undefined1 (*) [16])(param_2[1] + lVar5),4); + auVar11 = NEON_scvtf(*(undefined1 (*) [16])(param_2[-1] + lVar5),4); + auVar10 = NEON_scvtf(((undefined1 (*) [16])(param_2[1] + lVar5))[1],4); + auVar9 = NEON_scvtf(((undefined1 (*) [16])(param_2[-1] + lVar5))[1],4); + fVar19 = fVar26 + (auVar12._0_4_ - auVar11._0_4_) * fVar27; + fVar20 = fVar26 + (auVar12._4_4_ - auVar11._4_4_) * fVar27; + fVar23 = fVar26 + (auVar12._8_4_ - auVar11._8_4_) * fVar27; + fVar24 = fVar26 + (auVar12._12_4_ - auVar11._12_4_) * fVar27; + fVar28 = fVar26 + (auVar10._0_4_ - auVar9._0_4_) * fVar27; + fVar14 = fVar26 + (auVar10._4_4_ - auVar9._4_4_) * fVar27; + fVar17 = fVar26 + (auVar10._8_4_ - auVar9._8_4_) * fVar27; + fVar18 = fVar26 + (auVar10._12_4_ - auVar9._12_4_) * fVar27; + if (1 < iVar2) { + iVar4 = 2; + pfVar6 = pfVar1 + 2; + plVar7 = param_2 + -2; + plVar8 = param_2 + 2; + do { + iVar4 = iVar4 + 1; + fVar25 = *pfVar6; + auVar12 = NEON_scvtf(*(undefined1 (*) [16])(*plVar8 + lVar5),4); + auVar11 = NEON_scvtf(*(undefined1 (*) [16])(*plVar7 + lVar5),4); + auVar10 = NEON_scvtf(((undefined1 (*) [16])(*plVar8 + lVar5))[1],4); + auVar9 = NEON_scvtf(((undefined1 (*) [16])(*plVar7 + lVar5))[1],4); + fVar19 = fVar19 + (auVar12._0_4_ - auVar11._0_4_) * fVar25; + fVar20 = fVar20 + (auVar12._4_4_ - auVar11._4_4_) * fVar25; + fVar23 = fVar23 + (auVar12._8_4_ - auVar11._8_4_) * fVar25; + fVar24 = fVar24 + (auVar12._12_4_ - auVar11._12_4_) * fVar25; + fVar28 = fVar28 + (auVar10._0_4_ - auVar9._0_4_) * fVar25; + fVar14 = fVar14 + (auVar10._4_4_ - auVar9._4_4_) * fVar25; + fVar17 = fVar17 + (auVar10._8_4_ - auVar9._8_4_) * fVar25; + fVar18 = fVar18 + (auVar10._12_4_ - auVar9._12_4_) * fVar25; + pfVar6 = pfVar6 + 1; + plVar7 = plVar7 + -1; + plVar8 = plVar8 + 1; + } while (iVar4 <= iVar2); + } + auVar11._0_8_ = CONCAT44((int)fVar20,(int)fVar19); + auVar11._8_4_ = (int)fVar23; + auVar11._12_4_ = (int)fVar24; + lVar5 = lVar5 + 0x20; + auVar10._0_8_ = CONCAT44((int)fVar14,(int)fVar28); + auVar10._8_4_ = (int)fVar17; + auVar10._12_4_ = (int)fVar18; + uVar21 = NEON_sqxtn(auVar11._0_8_,auVar11,4); + uVar15 = NEON_sqxtn(auVar10._0_8_,auVar10,4); + auVar9._8_8_ = uVar15; + auVar9._0_8_ = uVar21; + uVar15 = NEON_sqxtun(uVar21,auVar9,2); + *param_3 = uVar15; + param_3 = param_3 + 1; + } while (lVar5 != ((ulong)uVar3 + 1) * 0x20); + return (uVar3 + 1) * 8; + } + if (iVar4 != 1) { + fVar27 = *pfVar1; + fVar28 = pfVar1[1]; + if (7 < param_4) { + uVar3 = param_4 - 8U >> 3; + lVar5 = 0; + do { + auVar22 = NEON_scvtf(*(undefined1 (*) [16])(*param_2 + lVar5),4); + auVar12 = NEON_scvtf(*(undefined1 (*) [16])(param_2[1] + lVar5),4); + auVar11 = NEON_scvtf(*(undefined1 (*) [16])(param_2[-1] + lVar5),4); + auVar16 = NEON_scvtf(((undefined1 (*) [16])(*param_2 + lVar5))[1],4); + auVar10 = NEON_scvtf(((undefined1 (*) [16])(param_2[1] + lVar5))[1],4); + auVar9 = NEON_scvtf(((undefined1 (*) [16])(param_2[-1] + lVar5))[1],4); + fVar20 = fVar26 + auVar22._0_4_ * fVar27 + (auVar12._0_4_ + auVar11._0_4_) * fVar28; + fVar23 = fVar26 + auVar22._4_4_ * fVar27 + (auVar12._4_4_ + auVar11._4_4_) * fVar28; + fVar24 = fVar26 + auVar22._8_4_ * fVar27 + (auVar12._8_4_ + auVar11._8_4_) * fVar28; + fVar25 = fVar26 + auVar22._12_4_ * fVar27 + (auVar12._12_4_ + auVar11._12_4_) * fVar28; + fVar14 = fVar26 + auVar16._0_4_ * fVar27 + (auVar10._0_4_ + auVar9._0_4_) * fVar28; + fVar17 = fVar26 + auVar16._4_4_ * fVar27 + (auVar10._4_4_ + auVar9._4_4_) * fVar28; + fVar18 = fVar26 + auVar16._8_4_ * fVar27 + (auVar10._8_4_ + auVar9._8_4_) * fVar28; + fVar19 = fVar26 + auVar16._12_4_ * fVar27 + (auVar10._12_4_ + auVar9._12_4_) * fVar28; + if (1 < iVar2) { + iVar4 = 2; + pfVar6 = pfVar1 + 2; + plVar7 = param_2 + -2; + plVar8 = param_2 + 2; + do { + iVar4 = iVar4 + 1; + fVar13 = *pfVar6; + auVar12 = NEON_scvtf(*(undefined1 (*) [16])(*plVar8 + lVar5),4); + auVar11 = NEON_scvtf(*(undefined1 (*) [16])(*plVar7 + lVar5),4); + auVar10 = NEON_scvtf(((undefined1 (*) [16])(*plVar8 + lVar5))[1],4); + auVar9 = NEON_scvtf(((undefined1 (*) [16])(*plVar7 + lVar5))[1],4); + fVar20 = fVar20 + (auVar12._0_4_ + auVar11._0_4_) * fVar13; + fVar23 = fVar23 + (auVar12._4_4_ + auVar11._4_4_) * fVar13; + fVar24 = fVar24 + (auVar12._8_4_ + auVar11._8_4_) * fVar13; + fVar25 = fVar25 + (auVar12._12_4_ + auVar11._12_4_) * fVar13; + fVar14 = fVar14 + (auVar10._0_4_ + auVar9._0_4_) * fVar13; + fVar17 = fVar17 + (auVar10._4_4_ + auVar9._4_4_) * fVar13; + fVar18 = fVar18 + (auVar10._8_4_ + auVar9._8_4_) * fVar13; + fVar19 = fVar19 + (auVar10._12_4_ + auVar9._12_4_) * fVar13; + pfVar6 = pfVar6 + 1; + plVar7 = plVar7 + -1; + plVar8 = plVar8 + 1; + } while (iVar4 <= iVar2); + } + auVar22._0_8_ = CONCAT44((int)fVar23,(int)fVar20); + auVar22._8_4_ = (int)fVar24; + auVar22._12_4_ = (int)fVar25; + lVar5 = lVar5 + 0x20; + auVar16._0_8_ = CONCAT44((int)fVar17,(int)fVar14); + auVar16._8_4_ = (int)fVar18; + auVar16._12_4_ = (int)fVar19; + uVar21 = NEON_sqxtn(auVar22._0_8_,auVar22,4); + uVar15 = NEON_sqxtn(auVar16._0_8_,auVar16,4); + auVar12._8_8_ = uVar15; + auVar12._0_8_ = uVar21; + uVar15 = NEON_sqxtun(uVar21,auVar12,2); + *param_3 = uVar15; + param_3 = param_3 + 1; + } while (lVar5 != ((ulong)uVar3 + 1) * 0x20); + return (uVar3 + 1) * 8; + } + } + return 0; +} + + +================================================================== + +### FUNC 001c0f60 (2576 bytes) name=FUN_001c0f60 + +void FUN_001c0f60(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + undefined1 *puVar1; + long *plVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + int iVar9; + uint uVar10; + int iVar11; + int iVar12; + int iVar13; + bool bVar14; + bool bVar15; + bool bVar16; + char cVar17; + int iVar18; + long lVar19; + undefined1 *puVar20; + int *piVar21; + long lVar22; + long lVar23; + long lVar24; + int *piVar25; + int *piVar26; + long lVar27; + long *plVar28; + int iVar29; + + uVar5 = *(uint *)(param_1 + 0xe4); + lVar19 = (long)(*(int *)(param_1 + 8) / 2); + lVar22 = lVar19 * 4; + iVar9 = *(int *)(*(long *)(param_1 + 0x20) + lVar22); + lVar22 = *(long *)(param_1 + 0x20) + lVar22; + if (iVar9 == 2) { + iVar29 = *(int *)(lVar22 + 4); + if (iVar29 != 1) { + bVar14 = false; + bVar16 = false; + bVar15 = false; + goto LAB_001c0ff0; + } + bVar15 = true; + } + else if (iVar9 == -2) { + iVar29 = *(int *)(lVar22 + 4); + bVar15 = false; + if (iVar29 == 1) { + bVar14 = false; + bVar16 = true; + goto LAB_001c0ff0; + } + } + else { + iVar29 = *(int *)(lVar22 + 4); + if (iVar9 != 0) { + bVar14 = false; + bVar15 = false; + bVar16 = bVar15; + goto LAB_001c0ff0; + } + bVar15 = false; + if ((iVar29 + 1U & 0xfffffffd) == 0) { + bVar14 = true; + bVar16 = bVar15; + goto LAB_001c0ff0; + } + } + bVar14 = false; + bVar16 = false; +LAB_001c0ff0: + iVar6 = *(int *)(param_1 + 0xe0); + plVar28 = (long *)(param_2 + lVar19 * 8); + uVar7 = *(uint *)(param_1 + 0x70); + iVar8 = *(int *)(param_1 + 0x74); + if (param_5 != 0) { + plVar2 = plVar28 + (ulong)(param_5 - 1) + 1; + iVar11 = param_6 + -3; + iVar12 = param_6 + -1; + iVar13 = param_6 + -4; + do { + while( true ) { + cVar17 = cv::checkHardwareSupport(100); + iVar18 = 0; + if (cVar17 != '\0') { + iVar18 = FUN_001c0cac(param_1 + 0x78,plVar28,param_3,param_6); + } + lVar22 = plVar28[-1]; + lVar27 = *plVar28; + lVar19 = plVar28[1]; + if ((uVar5 & 1) != 0) break; + if (bVar14) { + lVar27 = lVar19; + if (iVar29 < 0) { + lVar27 = lVar22; + lVar22 = lVar19; + } + if (iVar18 < iVar11) { + lVar19 = (long)iVar18; + uVar10 = (uint)(iVar13 - iVar18) >> 2; + puVar20 = (undefined1 *)(param_3 + lVar19); + piVar21 = (int *)(lVar22 + lVar19 * 4); + piVar25 = (int *)(lVar27 + lVar19 * 4); + do { + puVar1 = puVar20 + 4; + uVar3 = (*piVar25 - *piVar21) + iVar6 + iVar8 >> (uVar7 & 0x1f); + uVar4 = (piVar25[1] - piVar21[1]) + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *puVar20 = (char)uVar3; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[1] = (char)uVar4; + uVar3 = (piVar25[2] - piVar21[2]) + iVar6 + iVar8 >> (uVar7 & 0x1f); + uVar4 = (piVar25[3] - piVar21[3]) + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[2] = (char)uVar3; + puVar20[3] = (char)uVar4; + puVar20 = puVar1; + piVar21 = piVar21 + 4; + piVar25 = piVar25 + 4; + } while (puVar1 != (undefined1 *)(param_3 + lVar19 + 4 + (ulong)uVar10 * 4)); + iVar18 = iVar18 + 4 + uVar10 * 4; + } + if (iVar18 < param_6) { + lVar19 = 0; + lVar23 = (long)iVar18 * 4; + do { + uVar10 = (*(int *)(lVar27 + lVar23 + lVar19 * 4) - + *(int *)(lVar22 + lVar23 + lVar19 * 4)) + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *(char *)(param_3 + iVar18 + lVar19) = (char)uVar10; + lVar19 = lVar19 + 1; + } while (lVar19 != (ulong)(uint)(iVar12 - iVar18) + 1); + } + } + else { + if (iVar18 < iVar11) { + lVar27 = (long)iVar18; + uVar10 = (uint)(iVar13 - iVar18) >> 2; + puVar20 = (undefined1 *)(param_3 + lVar27); + piVar21 = (int *)(lVar22 + lVar27 * 4); + piVar25 = (int *)(lVar19 + lVar27 * 4); + do { + puVar1 = puVar20 + 4; + uVar3 = iVar6 + (*piVar25 - *piVar21) * iVar29 + iVar8 >> (uVar7 & 0x1f); + uVar4 = iVar6 + (piVar25[1] - piVar21[1]) * iVar29 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *puVar20 = (char)uVar3; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[1] = (char)uVar4; + uVar3 = iVar6 + (piVar25[2] - piVar21[2]) * iVar29 + iVar8 >> (uVar7 & 0x1f); + uVar4 = iVar6 + (piVar25[3] - piVar21[3]) * iVar29 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[2] = (char)uVar3; + puVar20[3] = (char)uVar4; + puVar20 = puVar1; + piVar21 = piVar21 + 4; + piVar25 = piVar25 + 4; + } while (puVar1 != (undefined1 *)(param_3 + lVar27 + 4 + (ulong)uVar10 * 4)); + iVar18 = iVar18 + 4 + uVar10 * 4; + } + if (iVar18 < param_6) { + lVar23 = (long)iVar18 * 4; + lVar27 = 0; + do { + uVar10 = iVar6 + (*(int *)(lVar19 + lVar23 + lVar27 * 4) - + *(int *)(lVar22 + lVar23 + lVar27 * 4)) * iVar29 + iVar8 >> + (uVar7 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *(char *)(param_3 + iVar18 + lVar27) = (char)uVar10; + lVar27 = lVar27 + 1; + } while (lVar27 != (ulong)(uint)(iVar12 - iVar18) + 1); + } + } +joined_r0x001c1750: + param_3 = param_3 + param_4; + plVar28 = plVar28 + 1; + if (plVar28 == plVar2) { + return; + } + } + if (bVar15) { + if (iVar18 < iVar11) { + lVar23 = (long)iVar18; + lVar24 = lVar23 * 4; + uVar10 = (uint)(iVar13 - iVar18) >> 2; + puVar20 = (undefined1 *)(param_3 + lVar23); + piVar21 = (int *)(lVar19 + lVar24); + piVar25 = (int *)(lVar27 + lVar24); + piVar26 = (int *)(lVar22 + lVar24); + do { + uVar3 = *piVar26 + *piVar25 * 2 + *piVar21 + iVar6 + iVar8 >> (uVar7 & 0x1f); + puVar1 = puVar20 + 4; + uVar4 = piVar26[1] + piVar25[1] * 2 + piVar21[1] + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *puVar20 = (char)uVar3; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[1] = (char)uVar4; + uVar3 = piVar26[2] + piVar25[2] * 2 + piVar21[2] + iVar6 + iVar8 >> (uVar7 & 0x1f); + uVar4 = piVar26[3] + piVar25[3] * 2 + piVar21[3] + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[2] = (char)uVar3; + puVar20[3] = (char)uVar4; + puVar20 = puVar1; + piVar21 = piVar21 + 4; + piVar25 = piVar25 + 4; + piVar26 = piVar26 + 4; + } while (puVar1 != (undefined1 *)(param_3 + lVar23 + 4 + (ulong)uVar10 * 4)); + iVar18 = iVar18 + 4 + uVar10 * 4; + } + if (iVar18 < param_6) { + lVar23 = 0; + lVar24 = (long)iVar18 * 4; + do { + uVar10 = *(int *)(lVar22 + lVar24 + lVar23 * 4) + + *(int *)(lVar27 + lVar24 + lVar23 * 4) * 2 + + *(int *)(lVar19 + lVar24 + lVar23 * 4) + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *(char *)(param_3 + iVar18 + lVar23) = (char)uVar10; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)(iVar12 - iVar18) + 1); + } + goto joined_r0x001c1750; + } + if (!bVar16) { + if (iVar18 < iVar11) { + lVar23 = (long)iVar18; + lVar24 = lVar23 * 4; + uVar10 = (uint)(iVar13 - iVar18) >> 2; + puVar20 = (undefined1 *)(param_3 + lVar23); + piVar21 = (int *)(lVar27 + lVar24); + piVar25 = (int *)(lVar19 + lVar24); + piVar26 = (int *)(lVar22 + lVar24); + do { + puVar1 = puVar20 + 4; + uVar3 = iVar9 * *piVar21 + (*piVar26 + *piVar25) * iVar29 + iVar6 + iVar8 >> + (uVar7 & 0x1f); + uVar4 = iVar9 * piVar21[1] + (piVar26[1] + piVar25[1]) * iVar29 + iVar6 + iVar8 >> + (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *puVar20 = (char)uVar3; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[1] = (char)uVar4; + uVar3 = iVar9 * piVar21[2] + (piVar26[2] + piVar25[2]) * iVar29 + iVar6 + iVar8 >> + (uVar7 & 0x1f); + uVar4 = iVar9 * piVar21[3] + (piVar26[3] + piVar25[3]) * iVar29 + iVar6 + iVar8 >> + (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[2] = (char)uVar3; + puVar20[3] = (char)uVar4; + puVar20 = puVar1; + piVar21 = piVar21 + 4; + piVar25 = piVar25 + 4; + piVar26 = piVar26 + 4; + } while (puVar1 != (undefined1 *)(param_3 + lVar23 + 4 + (ulong)uVar10 * 4)); + iVar18 = iVar18 + 4 + uVar10 * 4; + } + if (iVar18 < param_6) { + lVar23 = 0; + lVar24 = (long)iVar18 * 4; + do { + uVar10 = iVar9 * *(int *)(lVar27 + lVar24 + lVar23 * 4) + + (*(int *)(lVar22 + lVar24 + lVar23 * 4) + + *(int *)(lVar19 + lVar24 + lVar23 * 4)) * iVar29 + iVar6 + iVar8 >> + (uVar7 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *(char *)(param_3 + iVar18 + lVar23) = (char)uVar10; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)(iVar12 - iVar18) + 1); + } + goto joined_r0x001c1750; + } + if (iVar18 < iVar11) { + lVar23 = (long)iVar18; + lVar24 = lVar23 * 4; + uVar10 = (uint)(iVar13 - iVar18) >> 2; + puVar20 = (undefined1 *)(param_3 + lVar23); + piVar21 = (int *)(lVar19 + lVar24); + piVar25 = (int *)(lVar27 + lVar24); + piVar26 = (int *)(lVar22 + lVar24); + do { + uVar3 = *piVar26 + *piVar25 * -2 + *piVar21 + iVar6 + iVar8 >> (uVar7 & 0x1f); + puVar1 = puVar20 + 4; + uVar4 = piVar26[1] + piVar25[1] * -2 + piVar21[1] + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *puVar20 = (char)uVar3; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[1] = (char)uVar4; + uVar3 = piVar26[2] + piVar25[2] * -2 + piVar21[2] + iVar6 + iVar8 >> (uVar7 & 0x1f); + uVar4 = piVar26[3] + piVar25[3] * -2 + piVar21[3] + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar20[2] = (char)uVar3; + puVar20[3] = (char)uVar4; + puVar20 = puVar1; + piVar21 = piVar21 + 4; + piVar25 = piVar25 + 4; + piVar26 = piVar26 + 4; + } while (puVar1 != (undefined1 *)(param_3 + lVar23 + 4 + (ulong)uVar10 * 4)); + iVar18 = iVar18 + 4 + uVar10 * 4; + } + if (param_6 <= iVar18) goto joined_r0x001c1750; + lVar23 = 0; + lVar24 = (long)iVar18 * 4; + do { + uVar10 = *(int *)(lVar22 + lVar24 + lVar23 * 4) + + *(int *)(lVar27 + lVar24 + lVar23 * 4) * -2 + + *(int *)(lVar19 + lVar24 + lVar23 * 4) + iVar6 + iVar8 >> (uVar7 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *(char *)(param_3 + iVar18 + lVar23) = (char)uVar10; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)(iVar12 - iVar18) + 1); + plVar28 = plVar28 + 1; + param_3 = param_3 + param_4; + } while (plVar28 != plVar2); + } + return; +} + + +================================================================== + +### FUNC 001c1970 (1620 bytes) name=FUN_001c1970 + +void FUN_001c1970(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + undefined1 *puVar1; + int *piVar2; + long *plVar3; + long lVar4; + long lVar5; + long lVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + char cVar12; + int iVar13; + int iVar14; + long *plVar15; + uint uVar16; + uint uVar17; + long *plVar18; + long *plVar19; + long *plVar20; + long lVar21; + long lVar22; + long lVar23; + undefined1 *puVar24; + int iVar25; + int iVar26; + int iVar27; + int *piVar28; + long *plVar29; + uint uVar30; + + iVar8 = *(int *)(param_1 + 0xe0); + iVar7 = *(int *)(param_1 + 8) / 2; + uVar9 = *(uint *)(param_1 + 0x70); + iVar10 = *(int *)(param_1 + 0x74); + piVar2 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar7 * 4); + plVar3 = (long *)(param_2 + (long)iVar7 * 8); + if ((*(uint *)(param_1 + 0xe4) & 1) == 0) { + if (param_5 != 0) { + plVar29 = plVar3 + -1; + do { + plVar18 = plVar29 + 1; + cVar12 = cv::checkHardwareSupport(100); + iVar14 = 0; + if (cVar12 != '\0') { + iVar14 = FUN_001c0cac(param_1 + 0x78,plVar18,param_3,param_6); + } + if (iVar14 < param_6 + -3) { + lVar23 = (long)iVar14; + lVar21 = lVar23 << 2; + uVar30 = (uint)((param_6 + -4) - iVar14) >> 2; + lVar22 = lVar23; + lVar6 = lVar23 + 4; + while( true ) { + iVar27 = iVar8; + iVar13 = iVar8; + iVar25 = iVar8; + iVar26 = iVar8; + if (0 < iVar7) { + plVar15 = plVar29; + plVar20 = plVar29 + 2; + piVar28 = piVar2; + do { + piVar28 = piVar28 + 1; + plVar19 = plVar15 + -1; + lVar4 = *plVar15 + lVar21; + iVar11 = *piVar28; + lVar5 = *plVar20 + lVar21; + iVar26 = iVar26 + (*(int *)(*plVar20 + lVar21) - *(int *)(*plVar15 + lVar21)) * + iVar11; + iVar25 = iVar25 + (*(int *)(lVar5 + 4) - *(int *)(lVar4 + 4)) * iVar11; + iVar13 = iVar13 + (*(int *)(lVar5 + 8) - *(int *)(lVar4 + 8)) * iVar11; + iVar27 = iVar27 + (*(int *)(lVar5 + 0xc) - *(int *)(lVar4 + 0xc)) * iVar11; + plVar15 = plVar19; + plVar20 = plVar20 + 1; + } while (plVar29 + (-1 - (ulong)(iVar7 - 1)) != plVar19); + } + uVar16 = iVar26 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + *(char *)(param_3 + lVar22) = (char)uVar16; + uVar16 = iVar25 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + *(char *)(param_3 + lVar22 + 1) = (char)uVar16; + uVar16 = iVar13 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + *(char *)(param_3 + lVar22 + 2) = (char)uVar16; + uVar16 = iVar27 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + *(char *)(param_3 + lVar22 + 3) = (char)uVar16; + lVar21 = lVar21 + 0x10; + if (lVar6 == lVar23 + 4 + (ulong)uVar30 * 4) break; + lVar22 = lVar6; + lVar6 = lVar6 + 4; + } + iVar14 = iVar14 + 4 + uVar30 * 4; + } + if (iVar14 < param_6) { + lVar23 = (long)iVar14; + lVar21 = lVar23 << 2; + lVar22 = lVar23; + lVar6 = lVar23 + 1; + while( true ) { + iVar26 = iVar8; + if (0 < iVar7) { + plVar15 = plVar29 + 2; + plVar20 = plVar29; + piVar28 = piVar2; + do { + piVar28 = piVar28 + 1; + plVar19 = plVar15 + 1; + iVar26 = iVar26 + (*(int *)(*plVar15 + lVar21) - *(int *)(*plVar20 + lVar21)) * + *piVar28; + plVar15 = plVar19; + plVar20 = plVar20 + -1; + } while (plVar19 != plVar29 + (ulong)(iVar7 - 1) + 3); + } + uVar30 = iVar26 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar30) { + uVar30 = -(uint)(0 < (int)uVar30); + } + *(char *)(param_3 + lVar22) = (char)uVar30; + lVar21 = lVar21 + 4; + if (lVar6 == lVar23 + 1 + (ulong)(uint)((param_6 + -1) - iVar14)) break; + lVar22 = lVar6; + lVar6 = lVar6 + 1; + } + } + param_3 = param_3 + param_4; + plVar29 = plVar18; + } while (plVar18 != plVar3 + (param_5 - 1)); + } + } + else if (param_5 != 0) { + cVar12 = cv::checkHardwareSupport(100); + plVar18 = plVar3; + plVar29 = plVar3 + -1; + while( true ) { + plVar15 = plVar18; + iVar14 = 0; + if (cVar12 != '\0') { + iVar14 = FUN_001c0cac(param_1 + 0x78,plVar15,param_3,param_6); + } + if (iVar14 < param_6 + -3) { + lVar22 = (long)iVar14; + uVar30 = (uint)((param_6 + -4) - iVar14) >> 2; + lVar21 = lVar22 << 2; + puVar24 = (undefined1 *)(param_3 + lVar22); + do { + iVar26 = *piVar2; + lVar6 = plVar29[1] + lVar21; + iVar25 = iVar8 + iVar26 * *(int *)(plVar29[1] + lVar21); + iVar13 = iVar8 + iVar26 * *(int *)(lVar6 + 4); + iVar27 = iVar8 + iVar26 * *(int *)(lVar6 + 8); + iVar26 = iVar8 + iVar26 * *(int *)(lVar6 + 0xc); + if (0 < iVar7) { + plVar18 = plVar29; + plVar20 = plVar29 + 2; + piVar28 = piVar2; + do { + piVar28 = piVar28 + 1; + plVar19 = plVar18 + -1; + lVar6 = *plVar18 + lVar21; + iVar11 = *piVar28; + lVar23 = *plVar20 + lVar21; + iVar25 = iVar25 + (*(int *)(*plVar20 + lVar21) + *(int *)(*plVar18 + lVar21)) * iVar11 + ; + iVar13 = iVar13 + (*(int *)(lVar23 + 4) + *(int *)(lVar6 + 4)) * iVar11; + iVar27 = iVar27 + (*(int *)(lVar23 + 8) + *(int *)(lVar6 + 8)) * iVar11; + iVar26 = iVar26 + (*(int *)(lVar23 + 0xc) + *(int *)(lVar6 + 0xc)) * iVar11; + plVar18 = plVar19; + plVar20 = plVar20 + 1; + } while (plVar29 + (-1 - (ulong)(iVar7 - 1)) != plVar19); + } + uVar16 = iVar25 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + uVar17 = iVar13 + iVar10 >> (uVar9 & 0x1f); + *puVar24 = (char)uVar16; + if (0xff < uVar17) { + uVar17 = -(uint)(0 < (int)uVar17); + } + puVar24[1] = (char)uVar17; + uVar16 = iVar27 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + puVar24[2] = (char)uVar16; + uVar16 = iVar26 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + puVar1 = puVar24 + 4; + puVar24[3] = (char)uVar16; + lVar21 = lVar21 + 0x10; + puVar24 = puVar1; + } while (puVar1 != (undefined1 *)(param_3 + lVar22 + 4 + (ulong)uVar30 * 4)); + iVar14 = iVar14 + 4 + uVar30 * 4; + } + if (iVar14 < param_6) { + lVar22 = (long)iVar14; + lVar21 = lVar22 << 2; + puVar24 = (undefined1 *)(param_3 + lVar22); + do { + iVar26 = iVar8 + *piVar2 * *(int *)(plVar29[1] + lVar21); + if (0 < iVar7) { + plVar18 = plVar29 + 2; + plVar20 = plVar29; + piVar28 = piVar2; + do { + piVar28 = piVar28 + 1; + plVar19 = plVar18 + 1; + iVar26 = iVar26 + (*(int *)(*plVar18 + lVar21) + *(int *)(*plVar20 + lVar21)) * + *piVar28; + plVar18 = plVar19; + plVar20 = plVar20 + -1; + } while (plVar29 + (ulong)(iVar7 - 1) + 3 != plVar19); + } + uVar30 = iVar26 + iVar10 >> (uVar9 & 0x1f); + if (0xff < uVar30) { + uVar30 = -(uint)(0 < (int)uVar30); + } + lVar21 = lVar21 + 4; + *puVar24 = (char)uVar30; + puVar24 = puVar24 + 1; + } while (lVar21 != (lVar22 + 1 + (ulong)(uint)((param_6 + -1) - iVar14)) * 4); + } + param_3 = param_3 + param_4; + if (plVar3 + (param_5 - 1) == plVar15) break; + cVar12 = cv::checkHardwareSupport(100); + plVar18 = plVar15 + 1; + plVar29 = plVar15; + } + } + return; +} + + +================================================================== + +### FUNC 001c1fc4 (716 bytes) name=FUN_001c1fc4 + +void FUN_001c1fc4(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + undefined1 *puVar1; + long lVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int *piVar8; + char cVar9; + uint uVar10; + int iVar11; + int iVar12; + long lVar13; + long lVar14; + int iVar15; + uint uVar16; + uint uVar17; + long *plVar18; + int iVar19; + long *plVar20; + undefined1 *puVar21; + int iVar22; + int *piVar23; + long *plVar24; + long *plVar25; + + piVar23 = *(int **)(param_1 + 0x20); + iVar3 = *(int *)(param_1 + 0xe0); + iVar4 = *(int *)(param_1 + 8); + uVar5 = *(uint *)(param_1 + 0x70); + iVar6 = *(int *)(param_1 + 0x74); + if (param_5 != 0) { + plVar24 = (long *)(param_2 + 8); + plVar25 = (long *)(param_2 + ((ulong)(iVar4 - 2) + 2) * 8); + do { + cVar9 = cv::checkHardwareSupport(100); + iVar11 = 0; + if (cVar9 != '\0') { + iVar11 = FUN_001c0cac(param_1 + 0x78,plVar24 + -1,param_3,param_6); + } + if (iVar11 < param_6 + -3) { + lVar13 = (long)iVar11; + uVar10 = (uint)((param_6 + -4) - iVar11) >> 2; + lVar14 = lVar13 << 2; + puVar21 = (undefined1 *)(param_3 + lVar13); + do { + iVar22 = *piVar23; + lVar2 = plVar24[-1] + lVar14; + iVar19 = iVar3 + iVar22 * *(int *)(plVar24[-1] + lVar14); + iVar15 = iVar3 + iVar22 * *(int *)(lVar2 + 4); + iVar12 = iVar3 + iVar22 * *(int *)(lVar2 + 8); + iVar22 = iVar3 + iVar22 * *(int *)(lVar2 + 0xc); + plVar18 = plVar24; + piVar8 = piVar23; + if (1 < iVar4) { + do { + plVar20 = plVar18 + 1; + iVar7 = piVar8[1]; + lVar2 = *plVar18 + lVar14; + iVar19 = iVar19 + iVar7 * *(int *)(*plVar18 + lVar14); + iVar15 = iVar15 + iVar7 * *(int *)(lVar2 + 4); + iVar12 = iVar12 + iVar7 * *(int *)(lVar2 + 8); + iVar22 = iVar22 + iVar7 * *(int *)(lVar2 + 0xc); + plVar18 = plVar20; + piVar8 = piVar8 + 1; + } while (plVar25 != plVar20); + } + uVar17 = iVar19 + iVar6 >> (uVar5 & 0x1f); + if (0xff < uVar17) { + uVar17 = -(uint)(0 < (int)uVar17); + } + *puVar21 = (char)uVar17; + uVar17 = iVar15 + iVar6 >> (uVar5 & 0x1f); + if (0xff < uVar17) { + uVar17 = -(uint)(0 < (int)uVar17); + } + uVar16 = iVar12 + iVar6 >> (uVar5 & 0x1f); + puVar21[1] = (char)uVar17; + if (0xff < uVar16) { + uVar16 = -(uint)(0 < (int)uVar16); + } + uVar17 = iVar22 + iVar6 >> (uVar5 & 0x1f); + puVar21[2] = (char)uVar16; + if (0xff < uVar17) { + uVar17 = -(uint)(0 < (int)uVar17); + } + puVar1 = puVar21 + 4; + puVar21[3] = (char)uVar17; + lVar14 = lVar14 + 0x10; + puVar21 = puVar1; + } while (puVar1 != (undefined1 *)(param_3 + lVar13 + 4 + (ulong)uVar10 * 4)); + iVar11 = iVar11 + 4 + uVar10 * 4; + } + if (iVar11 < param_6) { + lVar13 = (long)iVar11; + lVar14 = lVar13 << 2; + puVar21 = (undefined1 *)(param_3 + lVar13); + do { + iVar22 = iVar3 + *piVar23 * *(int *)(plVar24[-1] + lVar14); + plVar18 = plVar24; + piVar8 = piVar23; + if (1 < iVar4) { + do { + plVar20 = plVar18 + 1; + iVar22 = iVar22 + piVar8[1] * *(int *)(*plVar18 + lVar14); + plVar18 = plVar20; + piVar8 = piVar8 + 1; + } while (plVar25 != plVar20); + } + uVar10 = iVar22 + iVar6 >> (uVar5 & 0x1f); + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar14 = lVar14 + 4; + *puVar21 = (char)uVar10; + puVar21 = puVar21 + 1; + } while (lVar14 != (lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar11)) * 4); + } + plVar24 = plVar24 + 1; + plVar25 = plVar25 + 1; + param_3 = param_3 + param_4; + } while (plVar24 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001c2290 (464 bytes) name=FUN_001c2290 + +uint FUN_001c2290(long param_1,long param_2,undefined8 *param_3,int param_4,ulong param_5) + +{ + float *pfVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + uint uVar5; + int iVar6; + uint uVar7; + undefined8 *puVar8; + uint uVar9; + undefined8 *puVar10; + undefined8 *puVar11; + ulong uVar12; + long lVar13; + ulong uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + float fVar19; + undefined8 uVar20; + float fVar21; + undefined8 uVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined8 uVar25; + float fVar26; + + iVar6 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc) + -1; + uVar7 = *(uint *)(param_1 + 0x60) & 1; + uVar9 = (uint)param_5; + param_4 = uVar9 * param_4; + uVar5 = iVar6 / 2; + uVar12 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + puVar8 = (undefined8 *)(param_2 + (long)(int)(uVar5 * uVar9) * 4); + pfVar1 = (float *)(*(long *)(param_1 + 0x10) + uVar12); + if ((*(uint *)(param_1 + 0x60) & 1) == 0) { + if (iVar6 == 5) { + fVar19 = pfVar1[1]; + fVar21 = pfVar1[2]; + if (3 < param_4) { + lVar13 = (long)(int)uVar9; + uVar12 = -(ulong)((uVar9 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar9 << 1) << 2; + uVar7 = param_4 - 4U >> 2; + puVar10 = (undefined8 *)((long)puVar8 + lVar13 * -4); + do { + puVar11 = (undefined8 *)((long)puVar10 - (uVar12 + lVar13 * -4)); + puVar2 = (undefined8 *)(lVar13 * 4 + uVar12 + (long)puVar10); + puVar3 = puVar10 + lVar13; + puVar4 = puVar10 + 1; + uVar20 = *puVar10; + uVar23 = puVar11[1]; + uVar22 = *puVar11; + puVar10 = puVar10 + 2; + uVar16 = puVar2[1]; + uVar15 = *puVar2; + uVar18 = puVar3[1]; + uVar17 = *puVar3; + param_3[1] = CONCAT44(((float)((ulong)uVar16 >> 0x20) - (float)((ulong)uVar23 >> 0x20)) * + fVar21 + ((float)((ulong)uVar18 >> 0x20) - + (float)((ulong)*puVar4 >> 0x20)) * fVar19, + ((float)uVar16 - (float)uVar23) * fVar21 + + ((float)uVar18 - (float)*puVar4) * fVar19); + *param_3 = CONCAT44(((float)((ulong)uVar15 >> 0x20) - (float)((ulong)uVar22 >> 0x20)) * + fVar21 + ((float)((ulong)uVar17 >> 0x20) - + (float)((ulong)uVar20 >> 0x20)) * fVar19, + ((float)uVar15 - (float)uVar22) * fVar21 + + ((float)uVar17 - (float)uVar20) * fVar19); + param_3 = param_3 + 2; + } while (puVar10 != (undefined8 *)((long)puVar8 + lVar13 * -4 + 0x10 + (ulong)uVar7 * 0x10)) + ; + goto LAB_001c2378; + } + } + } + else { + uVar7 = 0; + if (iVar6 == 5) { + if (((*(float *)(*(long *)(param_1 + 0x10) + uVar12) == -2.0) && (pfVar1[1] == 0.0)) && + (pfVar1[2] == 1.0)) { + return uVar7; + } + fVar19 = *pfVar1; + fVar26 = pfVar1[2]; + fVar21 = pfVar1[1]; + if (param_4 < 4) { + return 0; + } + uVar7 = param_4 - 4U >> 2; + uVar12 = -(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2; + uVar14 = -(ulong)((uVar9 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar9 << 1) << 2; + puVar10 = puVar8 + ((ulong)uVar7 + 1) * 2; + do { + puVar2 = (undefined8 *)((long)puVar8 - uVar12); + puVar3 = (undefined8 *)((long)puVar8 + uVar12); + puVar4 = (undefined8 *)((long)puVar8 - uVar14); + puVar11 = (undefined8 *)((long)puVar8 + uVar14); + uVar16 = puVar2[1]; + uVar15 = *puVar2; + uVar25 = puVar3[1]; + uVar24 = *puVar3; + puVar2 = puVar8 + 1; + uVar20 = *puVar8; + puVar8 = puVar8 + 2; + uVar18 = puVar4[1]; + uVar17 = *puVar4; + uVar23 = puVar11[1]; + uVar22 = *puVar11; + param_3[1] = CONCAT44(((float)((ulong)uVar16 >> 0x20) + (float)((ulong)uVar25 >> 0x20)) * + fVar21 + (float)((ulong)*puVar2 >> 0x20) * fVar19 + + ((float)((ulong)uVar18 >> 0x20) + (float)((ulong)uVar23 >> 0x20)) * + fVar26,((float)uVar16 + (float)uVar25) * fVar21 + + (float)*puVar2 * fVar19 + + ((float)uVar18 + (float)uVar23) * fVar26); + *param_3 = CONCAT44(((float)((ulong)uVar15 >> 0x20) + (float)((ulong)uVar24 >> 0x20)) * + fVar21 + (float)((ulong)uVar20 >> 0x20) * fVar19 + + ((float)((ulong)uVar17 >> 0x20) + (float)((ulong)uVar22 >> 0x20)) * + fVar26,((float)uVar15 + (float)uVar24) * fVar21 + (float)uVar20 * fVar19 + + ((float)uVar17 + (float)uVar22) * fVar26); + param_3 = param_3 + 2; + } while (puVar8 != puVar10); +LAB_001c2378: + return (uVar7 + 1) * 4; + } + } + return uVar7; +} + + +================================================================== + +### FUNC 001c2460 (9768 bytes) name=FUN_001c2460 + +void FUN_001c2460(long param_1,long param_2,long param_3,int param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + float *pfVar3; + undefined8 *puVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [12]; + undefined1 auVar8 [12]; + float *pfVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + float *pfVar13; + char cVar14; + int iVar15; + undefined8 *puVar16; + float *pfVar17; + float *pfVar18; + undefined8 *puVar19; + float *pfVar20; + long lVar21; + ulong uVar22; + float *pfVar23; + float *pfVar24; + long lVar25; + long lVar26; + long lVar27; + float *pfVar28; + float *pfVar29; + uint uVar30; + ulong uVar31; + uint uVar32; + uint uVar33; + long lVar34; + float *pfVar35; + ulong uVar36; + long lVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + float fVar42; + float fVar43; + float fVar44; + float fVar45; + float fVar46; + float fVar47; + float fVar48; + float fVar49; + float fVar50; + float fVar51; + float fVar52; + float fVar53; + float fVar55; + float fVar56; + float fVar57; + float fVar58; + float fVar59; + float fVar60; + undefined1 auVar54 [16]; + float fVar61; + float fVar62; + float fVar63; + float fVar64; + undefined8 uVar65; + float fVar66; + float fVar67; + float fVar68; + float fVar69; + float fVar70; + float fVar71; + float fVar72; + float fVar73; + float fVar74; + float fVar75; + float fVar76; + undefined8 uVar77; + float fVar79; + undefined8 uVar78; + float fVar80; + undefined8 uVar81; + float fVar82; + float local_100; + undefined4 uStack_fc; + undefined1 uStack_dc; + undefined1 uStack_db; + undefined1 uStack_da; + undefined1 uStack_d9; + undefined1 uStack_d4; + undefined1 uStack_d3; + undefined1 uStack_d2; + undefined1 uStack_d1; + float local_d0; + undefined4 uStack_cc; + float fStack_c8; + undefined4 uStack_c4; + undefined1 uStack_ac; + undefined1 uStack_ab; + undefined1 uStack_aa; + undefined1 uStack_a9; + undefined1 uStack_a8; + undefined1 uStack_a7; + undefined1 uStack_a6; + undefined1 uStack_a5; + undefined1 uStack_a4; + undefined1 uStack_a3; + undefined1 uStack_a2; + undefined1 uStack_a1; + undefined1 uStack_9c; + undefined1 uStack_9b; + undefined1 uStack_9a; + undefined1 uStack_99; + undefined1 uStack_94; + undefined1 uStack_93; + undefined1 uStack_92; + undefined1 uStack_91; + float local_90; + undefined4 uStack_8c; + float fStack_88; + undefined4 uStack_84; + float local_80; + undefined1 uStack_7c; + undefined1 uStack_7b; + undefined1 uStack_7a; + undefined1 uStack_79; + float fStack_78; + undefined1 uStack_74; + undefined1 uStack_73; + undefined1 uStack_72; + undefined1 uStack_71; + + uVar32 = *(uint *)(param_1 + 0xd8); + lVar37 = *(long *)(param_1 + 0x20); + uVar5 = *(int *)(param_1 + 8) / 2; + cVar14 = cv::checkHardwareSupport(100); + uVar36 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + pfVar3 = (float *)(lVar37 + uVar36); + if (cVar14 == '\0') { + uVar31 = 0; + } + else { + iVar15 = FUN_001c2290(param_1 + 0x70,param_2,param_3,param_4,param_5); + uVar31 = (ulong)iVar15; + } + lVar21 = (long)(int)(uVar5 * param_5); + lVar26 = uVar31 + lVar21; + param_4 = param_4 * param_5; + pfVar29 = (float *)(param_2 + lVar26 * 4); + uVar30 = (uint)uVar31; + if ((uVar32 & 1) == 0) { + if (*(int *)(param_1 + 8) == 3) { + fVar50 = pfVar3[1]; + if ((*(float *)(lVar37 + uVar36) == 0.0) && (fVar50 == 1.0)) { + iVar15 = param_4 + -1; + if (iVar15 <= (int)uVar30) goto LAB_001c25c4; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar21 = (long)(int)-param_5; + pfVar17 = (float *)(param_3 + uVar36 + 0x20); + uVar33 = (param_4 + -2) - uVar30; + pfVar18 = (float *)(param_2 + (lVar26 + lVar21 + 1) * 4); + pfVar20 = (float *)(param_3 + uVar36); + uVar32 = uVar33 >> 1; + pfVar23 = (float *)(param_2 + (lVar26 + lVar21) * 4); + lVar37 = (long)(int)param_5; + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar24 = (float *)(param_2 + (lVar26 + lVar37) * 4); + if (((uVar32 + 1 < 5 || + pfVar18 < pfVar17 && pfVar20 < (float *)(param_2 + (lVar26 + lVar21 + 9) * 4)) || + pfVar20 < (float *)(param_2 + (lVar26 + lVar21 + 8) * 4) && pfVar23 < pfVar17) || + (pfVar20 < (float *)(param_2 + (lVar26 + lVar37 + 8) * 4) && pfVar24 < pfVar17)) { + pfVar17 = pfVar29 + lVar37; + do { + pfVar18 = pfVar17 + 2; + fVar50 = *pfVar17; + fVar38 = pfVar17[lVar21 - lVar37]; + pfVar20[1] = pfVar17[1] - *(float *)((long)pfVar17 + uVar36 + lVar37 * -4); + *pfVar20 = fVar50 - fVar38; + pfVar20 = pfVar20 + 2; + pfVar17 = pfVar18; + } while (pfVar18 != pfVar29 + (ulong)uVar32 * 2 + lVar37 + 2); + } + else { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar17 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + uVar33 = 0; + do { + fVar50 = *pfVar24; + fVar45 = pfVar24[1]; + fVar38 = pfVar24[2]; + fVar46 = pfVar24[3]; + pfVar35 = pfVar24 + 4; + fVar47 = pfVar24[5]; + pfVar17 = pfVar24 + 6; + fVar48 = pfVar24[7]; + pfVar24 = pfVar24 + 8; + uVar33 = uVar33 + 1; + _local_100 = CONCAT14(SUB41(fVar38,0),fVar50); + _local_100 = CONCAT15((char)((uint)fVar38 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar38 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar38 >> 0x18),_local_100); + fVar38 = *pfVar23; + fVar39 = pfVar23[2]; + fVar42 = pfVar23[4]; + fVar43 = pfVar23[6]; + pfVar23 = pfVar23 + 8; + fVar75 = *pfVar18; + fVar40 = pfVar18[2]; + fVar41 = pfVar18[4]; + fVar44 = pfVar18[6]; + pfVar18 = pfVar18 + 8; + uVar65 = CONCAT17((char)((uint)fVar39 >> 0x18), + CONCAT16((char)((uint)fVar39 >> 0x10), + CONCAT15((char)((uint)fVar39 >> 8), + CONCAT14(SUB41(fVar39,0),fVar38)))); + auVar7[8] = SUB41(fVar42,0); + auVar7._0_8_ = uVar65; + auVar7[9] = (char)((uint)fVar42 >> 8); + auVar7[10] = (char)((uint)fVar42 >> 0x10); + auVar7[0xb] = (char)((uint)fVar42 >> 0x18); + auVar6[0xc] = SUB41(fVar43,0); + auVar6._0_12_ = auVar7; + auVar6[0xd] = (char)((uint)fVar43 >> 8); + auVar6[0xe] = (char)((uint)fVar43 >> 0x10); + auVar6[0xf] = (char)((uint)fVar43 >> 0x18); + fVar50 = fVar50 - fVar38; + uStack_fc = uStack_fc - (float)((ulong)uVar65 >> 0x20); + fVar38 = *pfVar35 - auVar7._8_4_; + fVar39 = *pfVar17 - auVar6._12_4_; + uStack_94 = SUB41(fVar39,0); + uStack_93 = (undefined1)((uint)fVar39 >> 8); + uStack_92 = (undefined1)((uint)fVar39 >> 0x10); + uStack_91 = (undefined1)((uint)fVar39 >> 0x18); + uStack_9c = SUB41(uStack_fc,0); + uStack_9b = (undefined1)((uint)uStack_fc >> 8); + uStack_9a = (undefined1)((uint)uStack_fc >> 0x10); + uStack_99 = (undefined1)((uint)uStack_fc >> 0x18); + *pfVar20 = fVar50; + pfVar20[1] = fVar45 - fVar75; + pfVar20[2] = (float)(CONCAT17(uStack_99, + CONCAT16(uStack_9a, + CONCAT15(uStack_9b,CONCAT14(uStack_9c,fVar50))) + ) >> 0x20); + pfVar20[3] = (float)(CONCAT17((char)((uint)fVar46 >> 0x18), + CONCAT16((char)((uint)fVar46 >> 0x10), + CONCAT15((char)((uint)fVar46 >> 8), + CONCAT14(SUB41(fVar46,0),fVar45)))) >> + 0x20) - fVar40; + pfVar20[4] = fVar38; + pfVar20[5] = fVar47 - fVar41; + pfVar20[6] = (float)(CONCAT17(uStack_91, + CONCAT16(uStack_92, + CONCAT15(uStack_93,CONCAT14(uStack_94,fVar38))) + ) >> 0x20); + pfVar20[7] = (float)(CONCAT17((char)((uint)fVar48 >> 0x18), + CONCAT16((char)((uint)fVar48 >> 0x10), + CONCAT15((char)((uint)fVar48 >> 8), + CONCAT14(SUB41(fVar48,0),fVar47)))) >> + 0x20) - fVar44; + pfVar20 = pfVar20 + 8; + } while (uVar33 < uVar1); + pfVar17 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar32 + 1 == uVar1 * 4) goto LAB_001c4310; + } + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar50 = pfVar17[lVar37 + 1]; + uVar33 = uVar2 + 2; + fVar38 = *(float *)((long)pfVar17 + uVar36); + *(float *)(param_3 + uVar31) = pfVar17[lVar37] - pfVar17[lVar21]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar50 = pfVar17[lVar37 + 3]; + uVar33 = uVar2 + 4; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 8); + *(float *)(param_3 + uVar31) = pfVar17[lVar37 + 2] - pfVar17[lVar21 + 2]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar50 = pfVar17[lVar37 + 5]; + uVar33 = uVar2 + 6; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x10); + *(float *)(param_3 + uVar31) = pfVar17[lVar37 + 4] - pfVar17[lVar21 + 4]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar50 = pfVar17[lVar37 + 7]; + uVar33 = uVar2 + 8; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x18); + *(float *)(param_3 + uVar31) = pfVar17[lVar37 + 6] - pfVar17[lVar21 + 6]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar50 = pfVar17[lVar37 + 9]; + uVar33 = uVar2 + 10; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x20); + *(float *)(param_3 + uVar31) = pfVar17[lVar37 + 8] - pfVar17[lVar21 + 8]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar50 = pfVar17[lVar37 + 0xb]; + uVar2 = uVar2 + 0xc; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x28); + *(float *)(param_3 + uVar31) = pfVar17[lVar37 + 10] - pfVar17[lVar21 + 10]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar50 = pfVar17[lVar37 + 0xd]; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x30); + *(float *)(param_3 + uVar31) = pfVar17[lVar37 + 0xc] - pfVar17[lVar21 + 0xc]; + *(float *)(param_3 + uVar31 + 4) = fVar50 - fVar38; + } + } + } + } + } + } + } +LAB_001c4310: + uVar31 = (ulong)(uVar30 + 2 + uVar32 * 2); + pfVar29 = pfVar29 + ((ulong)uVar32 + 1) * 2; + goto LAB_001c25c4; + } + iVar15 = param_4 + -1; + if (iVar15 <= (int)uVar30) goto LAB_001c25c4; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar37 = (long)(int)-param_5; + pfVar17 = (float *)(param_3 + uVar36 + 0x20); + uVar33 = (param_4 + -2) - uVar30; + pfVar18 = (float *)(param_2 + (lVar26 + lVar37 + 1) * 4); + pfVar20 = (float *)(param_3 + uVar36); + uVar32 = uVar33 >> 1; + pfVar23 = (float *)(param_2 + (lVar26 + lVar37) * 4); + lVar21 = (long)(int)param_5; + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar24 = (float *)(param_2 + (lVar26 + lVar21) * 4); + if (((uVar32 + 1 < 5 || + pfVar18 < pfVar17 && pfVar20 < (float *)(param_2 + (lVar26 + lVar37 + 9) * 4)) || + pfVar20 < (float *)(param_2 + (lVar26 + lVar37 + 8) * 4) && pfVar23 < pfVar17) || + (pfVar20 < (float *)(param_2 + (lVar26 + lVar21 + 8) * 4) && pfVar24 < pfVar17)) { + pfVar17 = pfVar29 + lVar21; + do { + pfVar18 = pfVar17 + 2; + fVar38 = *pfVar17; + fVar75 = pfVar17[lVar37 - lVar21]; + pfVar20[1] = (pfVar17[1] - *(float *)((long)pfVar17 + uVar36 + lVar21 * -4)) * fVar50; + *pfVar20 = (fVar38 - fVar75) * fVar50; + pfVar20 = pfVar20 + 2; + pfVar17 = pfVar18; + } while (pfVar18 != pfVar29 + (ulong)uVar32 * 2 + lVar21 + 2); + } + else { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar17 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + uVar33 = 0; + do { + fVar38 = *pfVar24; + pfVar9 = pfVar24 + 1; + fVar75 = pfVar24[2]; + pfVar28 = pfVar24 + 3; + fVar43 = pfVar24[4]; + pfVar35 = pfVar24 + 5; + fVar45 = pfVar24[6]; + pfVar17 = pfVar24 + 7; + pfVar24 = pfVar24 + 8; + uVar33 = uVar33 + 1; + _local_100 = CONCAT14(SUB41(fVar75,0),fVar38); + _local_100 = CONCAT15((char)((uint)fVar75 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar75 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar75 >> 0x18),_local_100); + fVar75 = *pfVar23; + fVar42 = pfVar23[2]; + fVar44 = pfVar23[4]; + fVar46 = pfVar23[6]; + pfVar23 = pfVar23 + 8; + fVar39 = *pfVar18; + fVar41 = pfVar18[2]; + pfVar10 = pfVar18 + 4; + fVar47 = pfVar18[6]; + pfVar18 = pfVar18 + 8; + fVar40 = (*pfVar9 - fVar39) * fVar50; + fVar39 = (*pfVar28 - + (float)(CONCAT17((char)((uint)fVar41 >> 0x18), + CONCAT16((char)((uint)fVar41 >> 0x10), + CONCAT15((char)((uint)fVar41 >> 8), + CONCAT14(SUB41(fVar41,0),fVar39)))) >> 0x20) + ) * fVar50; + fVar41 = (*pfVar35 - *pfVar10) * fVar50; + fVar47 = (*pfVar17 - + (float)(CONCAT17((char)((uint)fVar47 >> 0x18), + CONCAT16((char)((uint)fVar47 >> 0x10), + CONCAT15((char)((uint)fVar47 >> 8), + CONCAT14(SUB41(fVar47,0),*pfVar10)))) >> + 0x20)) * fVar50; + uStack_a8 = SUB41(fVar41,0); + uStack_a7 = (undefined1)((uint)fVar41 >> 8); + uStack_a6 = (undefined1)((uint)fVar41 >> 0x10); + uStack_a5 = (undefined1)((uint)fVar41 >> 0x18); + uStack_a4 = SUB41(fVar47,0); + uStack_a3 = (undefined1)((uint)fVar47 >> 8); + uStack_a2 = (undefined1)((uint)fVar47 >> 0x10); + uStack_a1 = (undefined1)((uint)fVar47 >> 0x18); + uStack_ac = SUB41(fVar39,0); + uStack_ab = (undefined1)((uint)fVar39 >> 8); + uStack_aa = (undefined1)((uint)fVar39 >> 0x10); + uStack_a9 = (undefined1)((uint)fVar39 >> 0x18); + uVar65 = CONCAT17(uStack_a9, + CONCAT16(uStack_aa,CONCAT15(uStack_ab,CONCAT14(uStack_ac,fVar40)))); + auVar8[8] = uStack_a8; + auVar8._0_8_ = uVar65; + auVar8[9] = uStack_a7; + auVar8[10] = uStack_a6; + auVar8[0xb] = uStack_a5; + auVar54[0xc] = uStack_a4; + auVar54._0_12_ = auVar8; + auVar54[0xd] = uStack_a3; + auVar54[0xe] = uStack_a2; + auVar54[0xf] = uStack_a1; + *pfVar20 = (fVar38 - fVar75) * fVar50; + pfVar20[1] = fVar40; + pfVar20[2] = (uStack_fc - + (float)(CONCAT17((char)((uint)fVar42 >> 0x18), + CONCAT16((char)((uint)fVar42 >> 0x10), + CONCAT15((char)((uint)fVar42 >> 8), + CONCAT14(SUB41(fVar42,0),fVar75)))) >> + 0x20)) * fVar50; + pfVar20[3] = (float)((ulong)uVar65 >> 0x20); + pfVar20[4] = (fVar43 - fVar44) * fVar50; + pfVar20[5] = auVar8._8_4_; + pfVar20[6] = (fVar45 - (float)(CONCAT17((char)((uint)fVar46 >> 0x18), + CONCAT16((char)((uint)fVar46 >> 0x10), + CONCAT15((char)((uint)fVar46 >> 8), + CONCAT14(SUB41(fVar46,0), + fVar44)))) >> 0x20)) + * fVar50; + pfVar20[7] = auVar54._12_4_; + pfVar20 = pfVar20 + 8; + } while (uVar33 < uVar1); + pfVar17 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar32 + 1 == uVar1 * 4) goto LAB_001c2a04; + } + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar38 = pfVar17[lVar21 + 1]; + uVar33 = uVar2 + 2; + fVar75 = *(float *)((long)pfVar17 + uVar36); + *(float *)(param_3 + uVar31) = (pfVar17[lVar21] - pfVar17[lVar37]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = pfVar17[lVar21 + 3]; + uVar33 = uVar2 + 4; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 8); + *(float *)(param_3 + uVar31) = (pfVar17[lVar21 + 2] - pfVar17[lVar37 + 2]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = pfVar17[lVar21 + 5]; + uVar33 = uVar2 + 6; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x10); + *(float *)(param_3 + uVar31) = (pfVar17[lVar21 + 4] - pfVar17[lVar37 + 4]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = pfVar17[lVar21 + 7]; + uVar33 = uVar2 + 8; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x18); + *(float *)(param_3 + uVar31) = (pfVar17[lVar21 + 6] - pfVar17[lVar37 + 6]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = pfVar17[lVar21 + 9]; + uVar33 = uVar2 + 10; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x20); + *(float *)(param_3 + uVar31) = (pfVar17[lVar21 + 8] - pfVar17[lVar37 + 8]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = pfVar17[lVar21 + 0xb]; + uVar2 = uVar2 + 0xc; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x28); + *(float *)(param_3 + uVar31) = + (pfVar17[lVar21 + 10] - pfVar17[lVar37 + 10]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar38 = pfVar17[lVar21 + 0xd]; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x30); + *(float *)(param_3 + uVar31) = + (pfVar17[lVar21 + 0xc] - pfVar17[lVar37 + 0xc]) * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar75) * fVar50; + } + } + } + } + } + } + } + goto LAB_001c2a04; + } + if (*(int *)(param_1 + 8) != 5) goto LAB_001c25c4; + iVar15 = param_4 + -1; + fVar50 = pfVar3[1]; + fVar38 = pfVar3[2]; + if (iVar15 <= (int)uVar30) goto LAB_001c25c4; + uVar33 = (param_4 + -2) - uVar30; + lVar27 = (long)(int)(param_5 << 1); + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar25 = (long)(int)(param_5 * -2); + pfVar17 = (float *)(param_3 + uVar36); + pfVar18 = (float *)(param_2 + (lVar26 + lVar27) * 4); + pfVar20 = (float *)(param_3 + uVar36 + 0x20); + lVar37 = (long)(int)-param_5; + uVar32 = uVar33 >> 1; + pfVar23 = (float *)(param_2 + (lVar26 + lVar25) * 4); + pfVar24 = (float *)(param_2 + (lVar26 + lVar37 + 1) * 4); + lVar21 = (long)(int)param_5; + pfVar35 = (float *)(param_2 + (lVar26 + lVar37) * 4); + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar28 = (float *)(param_2 + (lVar26 + lVar21) * 4); + if (((((uVar32 + 1 < 4 || + pfVar17 < (float *)(param_2 + (lVar26 + lVar27 + 8) * 4) && pfVar18 < pfVar20) || + pfVar17 < (float *)(param_2 + (lVar26 + lVar25 + 8) * 4) && pfVar23 < pfVar20) || + pfVar24 < pfVar20 && pfVar17 < (float *)(param_2 + (lVar26 + lVar37 + 9) * 4)) || + pfVar17 < (float *)(param_2 + (lVar26 + lVar37 + 8) * 4) && pfVar35 < pfVar20) || + (pfVar17 < (float *)(param_2 + (lVar26 + lVar21 + 8) * 4) && pfVar28 < pfVar20)) { + pfVar18 = pfVar29 + lVar21; + do { + pfVar20 = pfVar18 + 2; + fVar39 = *pfVar18; + fVar40 = pfVar18[lVar25 - lVar21]; + fVar75 = pfVar18[lVar27 - lVar21]; + fVar42 = pfVar18[lVar37 - lVar21]; + pfVar17[1] = (pfVar18[(lVar27 + 1) - lVar21] - pfVar18[(lVar25 + 1) - lVar21]) * fVar38 + + fVar50 * (pfVar18[1] - *(float *)((long)pfVar18 + uVar36 + lVar21 * -4)); + *pfVar17 = (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + pfVar17 = pfVar17 + 2; + pfVar18 = pfVar20; + } while (pfVar20 != pfVar29 + (ulong)uVar32 * 2 + lVar21 + 2); + } + else { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar20 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + uVar33 = 0; + do { + fVar75 = *pfVar18; + fVar45 = pfVar18[1]; + pfVar10 = pfVar18 + 2; + fVar48 = pfVar18[3]; + pfVar9 = pfVar18 + 4; + fVar51 = pfVar18[5]; + pfVar20 = pfVar18 + 6; + fVar55 = pfVar18[7]; + pfVar18 = pfVar18 + 8; + uVar33 = uVar33 + 1; + fVar57 = *pfVar35; + fVar58 = pfVar35[2]; + pfVar11 = pfVar35 + 4; + fVar59 = pfVar35[6]; + pfVar35 = pfVar35 + 8; + fVar60 = *pfVar24; + fVar61 = pfVar24[2]; + fVar62 = pfVar24[4]; + fVar63 = pfVar24[6]; + pfVar24 = pfVar24 + 8; + fVar39 = *pfVar28; + fVar46 = pfVar28[1]; + fVar42 = pfVar28[2]; + fVar40 = pfVar28[3]; + pfVar12 = pfVar28 + 4; + fVar52 = pfVar28[5]; + fVar43 = pfVar28[6]; + fVar41 = pfVar28[7]; + pfVar28 = pfVar28 + 8; + _local_90 = CONCAT17((char)((uint)fVar40 >> 0x18), + CONCAT16((char)((uint)fVar40 >> 0x10), + CONCAT15((char)((uint)fVar40 >> 8), + CONCAT14(SUB41(fVar40,0),fVar46)))); + _fStack_88 = CONCAT17((char)((uint)fVar41 >> 0x18), + CONCAT16((char)((uint)fVar41 >> 0x10), + CONCAT15((char)((uint)fVar41 >> 8), + CONCAT14(SUB41(fVar41,0),fVar52)))); + fVar40 = *pfVar23; + fVar47 = pfVar23[1]; + fVar41 = pfVar23[2]; + fVar49 = pfVar23[3]; + pfVar13 = pfVar23 + 4; + fVar53 = pfVar23[5]; + fVar44 = pfVar23[6]; + fVar56 = pfVar23[7]; + pfVar23 = pfVar23 + 8; + _local_100 = CONCAT14(SUB41(fVar41,0),fVar40); + _local_100 = CONCAT15((char)((uint)fVar41 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar41 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar41 >> 0x18),_local_100); + _local_80 = CONCAT17((char)((uint)fVar58 >> 0x18), + CONCAT16((char)((uint)fVar58 >> 0x10), + CONCAT15((char)((uint)fVar58 >> 8), + CONCAT14(SUB41(fVar58,0),fVar57)))); + _fStack_78 = CONCAT17((char)((uint)fVar59 >> 0x18), + CONCAT16((char)((uint)fVar59 >> 0x10), + CONCAT15((char)((uint)fVar59 >> 8), + CONCAT14(SUB41(fVar59,0),*pfVar11)))); + fVar75 = (fVar75 - fVar40) * fVar38 + (fVar39 - fVar57) * fVar50; + fVar39 = (*pfVar10 - (float)((ulong)_local_100 >> 0x20)) * fVar38 + + ((float)(CONCAT17((char)((uint)fVar42 >> 0x18), + CONCAT16((char)((uint)fVar42 >> 0x10), + CONCAT15((char)((uint)fVar42 >> 8), + CONCAT14(SUB41(fVar42,0),fVar39)))) >> 0x20) + - (float)((ulong)_local_80 >> 0x20)) * fVar50; + fVar40 = (*pfVar9 - *pfVar13) * fVar38 + (*pfVar12 - *pfVar11) * fVar50; + fVar42 = (*pfVar20 - + (float)(CONCAT17((char)((uint)fVar44 >> 0x18), + CONCAT16((char)((uint)fVar44 >> 0x10), + CONCAT15((char)((uint)fVar44 >> 8), + CONCAT14(SUB41(fVar44,0),*pfVar13)))) >> 0x20) + ) * fVar38 + + ((float)(CONCAT17((char)((uint)fVar43 >> 0x18), + CONCAT16((char)((uint)fVar43 >> 0x10), + CONCAT15((char)((uint)fVar43 >> 8), + CONCAT14(SUB41(fVar43,0),*pfVar12)))) >> 0x20 + ) - (float)((ulong)_fStack_78 >> 0x20)) * fVar50; + uStack_d4 = SUB41(fVar42,0); + uStack_d3 = (undefined1)((uint)fVar42 >> 8); + uStack_d2 = (undefined1)((uint)fVar42 >> 0x10); + uStack_d1 = (undefined1)((uint)fVar42 >> 0x18); + uStack_dc = SUB41(fVar39,0); + uStack_db = (undefined1)((uint)fVar39 >> 8); + uStack_da = (undefined1)((uint)fVar39 >> 0x10); + uStack_d9 = (undefined1)((uint)fVar39 >> 0x18); + *pfVar17 = fVar75; + pfVar17[1] = (fVar45 - fVar47) * fVar38 + (fVar46 - fVar60) * fVar50; + pfVar17[2] = (float)(CONCAT17(uStack_d9, + CONCAT16(uStack_da, + CONCAT15(uStack_db,CONCAT14(uStack_dc,fVar75)))) >> + 0x20); + pfVar17[3] = ((float)(CONCAT17((char)((uint)fVar48 >> 0x18), + CONCAT16((char)((uint)fVar48 >> 0x10), + CONCAT15((char)((uint)fVar48 >> 8), + CONCAT14(SUB41(fVar48,0),fVar45)))) >> + 0x20) - + (float)(CONCAT17((char)((uint)fVar49 >> 0x18), + CONCAT16((char)((uint)fVar49 >> 0x10), + CONCAT15((char)((uint)fVar49 >> 8), + CONCAT14(SUB41(fVar49,0),fVar47)))) >> + 0x20)) * fVar38 + + (uStack_8c - + (float)(CONCAT17((char)((uint)fVar61 >> 0x18), + CONCAT16((char)((uint)fVar61 >> 0x10), + CONCAT15((char)((uint)fVar61 >> 8), + CONCAT14(SUB41(fVar61,0),fVar60)))) >> + 0x20)) * fVar50; + pfVar17[4] = fVar40; + pfVar17[5] = (fVar51 - fVar53) * fVar38 + (fVar52 - fVar62) * fVar50; + pfVar17[6] = (float)(CONCAT17(uStack_d1, + CONCAT16(uStack_d2, + CONCAT15(uStack_d3,CONCAT14(uStack_d4,fVar40)))) >> + 0x20); + pfVar17[7] = ((float)(CONCAT17((char)((uint)fVar55 >> 0x18), + CONCAT16((char)((uint)fVar55 >> 0x10), + CONCAT15((char)((uint)fVar55 >> 8), + CONCAT14(SUB41(fVar55,0),fVar51)))) >> + 0x20) - + (float)(CONCAT17((char)((uint)fVar56 >> 0x18), + CONCAT16((char)((uint)fVar56 >> 0x10), + CONCAT15((char)((uint)fVar56 >> 8), + CONCAT14(SUB41(fVar56,0),fVar53)))) >> + 0x20)) * fVar38 + + (uStack_84 - + (float)(CONCAT17((char)((uint)fVar63 >> 0x18), + CONCAT16((char)((uint)fVar63 >> 0x10), + CONCAT15((char)((uint)fVar63 >> 8), + CONCAT14(SUB41(fVar63,0),fVar62)))) >> + 0x20)) * fVar50; + pfVar17 = pfVar17 + 8; + } while (uVar33 < uVar1); + pfVar20 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar32 + 1 == uVar1 * 4) goto LAB_001c2a04; + } + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar33 = uVar2 + 2; + fVar75 = pfVar20[lVar27 + 1]; + fVar40 = pfVar20[lVar25 + 1]; + fVar39 = pfVar20[lVar21 + 1]; + fVar42 = *(float *)((long)pfVar20 + uVar36); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2] - pfVar20[lVar25]) * fVar38 + + fVar50 * (pfVar20[lVar21] - pfVar20[lVar37]); + *(float *)(param_3 + uVar31 + 4) = (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + uVar33 = uVar2 + 4; + fVar40 = pfVar20[lVar25 + 3]; + fVar75 = pfVar20[lVar27 + 3]; + fVar39 = pfVar20[lVar21 + 3]; + fVar42 = *(float *)((long)pfVar20 + uVar36 + 8); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2 + 2] - pfVar20[lVar25 + 2]) * fVar38 + + fVar50 * (pfVar20[lVar21 + 2] - pfVar20[lVar37 + 2]); + *(float *)(param_3 + uVar31 + 4) = (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + uVar33 = uVar2 + 6; + fVar40 = pfVar20[lVar25 + 5]; + fVar75 = pfVar20[lVar27 + 5]; + fVar39 = pfVar20[lVar21 + 5]; + fVar42 = *(float *)((long)pfVar20 + uVar36 + 0x10); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2 + 4] - pfVar20[lVar25 + 4]) * fVar38 + + fVar50 * (pfVar20[lVar21 + 4] - pfVar20[lVar37 + 4]); + *(float *)(param_3 + uVar31 + 4) = (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42) + ; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + uVar33 = uVar2 + 8; + fVar40 = pfVar20[lVar25 + 7]; + fVar75 = pfVar20[lVar27 + 7]; + fVar39 = pfVar20[lVar21 + 7]; + fVar42 = *(float *)((long)pfVar20 + uVar36 + 0x18); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2 + 6] - pfVar20[lVar25 + 6]) * fVar38 + + fVar50 * (pfVar20[lVar21 + 6] - pfVar20[lVar37 + 6]); + *(float *)(param_3 + uVar31 + 4) = + (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + uVar33 = uVar2 + 10; + fVar40 = pfVar20[lVar25 + 9]; + fVar75 = pfVar20[lVar27 + 9]; + fVar39 = pfVar20[lVar21 + 9]; + fVar42 = *(float *)((long)pfVar20 + uVar36 + 0x20); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2 + 8] - pfVar20[lVar25 + 8]) * fVar38 + + fVar50 * (pfVar20[lVar21 + 8] - pfVar20[lVar37 + 8]); + *(float *)(param_3 + uVar31 + 4) = + (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + uVar2 = uVar2 + 0xc; + fVar40 = pfVar20[lVar25 + 0xb]; + fVar75 = pfVar20[lVar27 + 0xb]; + fVar39 = pfVar20[lVar21 + 0xb]; + fVar42 = *(float *)((long)pfVar20 + uVar36 + 0x28); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2 + 10] - pfVar20[lVar25 + 10]) * fVar38 + + fVar50 * (pfVar20[lVar21 + 10] - pfVar20[lVar37 + 10]); + *(float *)(param_3 + uVar31 + 4) = + (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar75 = pfVar20[lVar27 + 0xd]; + fVar40 = pfVar20[lVar25 + 0xd]; + fVar39 = pfVar20[lVar21 + 0xd]; + fVar42 = *(float *)((long)pfVar20 + uVar36 + 0x30); + *(float *)(param_3 + uVar31) = + (pfVar20[lVar21 * 2 + 0xc] - pfVar20[lVar25 + 0xc]) * fVar38 + + fVar50 * (pfVar20[lVar21 + 0xc] - pfVar20[lVar37 + 0xc]); + *(float *)(param_3 + uVar31 + 4) = + (fVar75 - fVar40) * fVar38 + fVar50 * (fVar39 - fVar42); + } + } + } + } + } + } + } +LAB_001c2a04: + uVar31 = (ulong)(uVar30 + 2 + uVar32 * 2); + pfVar29 = pfVar29 + ((ulong)uVar32 + 1) * 2; +LAB_001c25c4: + iVar15 = (int)uVar31; + if (param_4 <= iVar15) { + return; + } + uVar36 = -(ulong)(param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_5 << 2; + uVar31 = -(ulong)(-param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_5 << 2; + lVar37 = 0; + do { + fVar50 = *pfVar3 * *(float *)((long)pfVar29 + lVar37); + if (0 < (int)uVar5) { + pfVar17 = (float *)((long)pfVar29 + uVar36 + lVar37); + pfVar18 = (float *)((long)pfVar29 + lVar37 + uVar31); + pfVar20 = pfVar3 + 1; + do { + fVar38 = *pfVar17; + pfVar17 = (float *)((long)pfVar17 + uVar36); + fVar75 = *pfVar18; + pfVar18 = (float *)((long)pfVar18 + uVar31); + pfVar23 = pfVar20 + 1; + fVar50 = fVar50 + (fVar38 - fVar75) * *pfVar20; + pfVar20 = pfVar23; + } while (pfVar23 != pfVar3 + (ulong)(uVar5 - 1) + 2); + } + *(float *)(param_3 + (long)iVar15 * 4 + lVar37) = fVar50; + lVar37 = lVar37 + 4; + } while (lVar37 != ((ulong)(uint)((param_4 + -1) - iVar15) + 1) * 4); + return; + } + iVar15 = *(int *)(param_1 + 8); + uVar22 = uVar31; + if (iVar15 == 1) { + if (*(float *)(lVar37 + uVar36) != 1.0) goto LAB_001c24fc; + if ((int)uVar30 < param_4 + -1) { + lVar37 = (long)(int)uVar30; + puVar19 = (undefined8 *)(param_2 + (lVar26 + lVar37) * 4); + puVar16 = (undefined8 *)(param_3 + lVar37 * 4); + uVar33 = (param_4 + -2) - uVar30; + uVar32 = uVar33 >> 1; + if ((puVar16 < (undefined8 *)(param_2 + (lVar26 + lVar37 + 8) * 4) && + puVar19 < (undefined8 *)(param_3 + lVar37 * 4 + 0x20)) || (uVar32 + 1 < 6)) { + pfVar17 = pfVar29 + lVar37; + do { + pfVar18 = pfVar17 + 2; + *puVar16 = *(undefined8 *)pfVar17; + puVar16 = puVar16 + 1; + pfVar17 = pfVar18; + } while (pfVar18 != pfVar29 + lVar37 + 2 + (ulong)uVar32 * 2); + } + else { + uVar1 = (uVar32 - 1 >> 1) + 1; + uVar2 = uVar30; + if (1 < uVar33) { + uVar33 = 0; + do { + uVar65 = *puVar19; + uVar33 = uVar33 + 1; + puVar16[1] = puVar19[1]; + *puVar16 = uVar65; + puVar16 = puVar16 + 2; + puVar19 = puVar19 + 2; + } while (uVar33 < uVar1); + uVar2 = uVar30 + uVar1 * 4; + if (uVar1 * 2 == uVar32 + 1) goto LAB_001c2adc; + } + uVar36 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + *(undefined8 *)(param_3 + uVar36) = *(undefined8 *)((long)pfVar29 + uVar36); + } +LAB_001c2adc: + uVar32 = uVar30 + 2 + uVar32 * 2; + uVar22 = (ulong)uVar32; + uVar31 = (ulong)(int)uVar32; + } + pfVar29 = pfVar29 + uVar31; + goto LAB_001c24fc; + } + if (iVar15 != 3) { + if (iVar15 != 5) goto LAB_001c24fc; + fVar38 = pfVar3[1]; + fVar50 = *(float *)(lVar37 + uVar36); + fVar75 = pfVar3[2]; + if ((fVar38 != 0.0 || fVar50 != -2.0) || (fVar75 != 1.0)) { + iVar15 = param_4 + -1; + if (iVar15 <= (int)uVar30) goto LAB_001c24fc; + uVar33 = (param_4 + -2) - uVar30; + lVar34 = (long)(int)(param_5 << 1); + uVar32 = uVar33 >> 1; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar27 = (long)(int)(param_5 * -2); + pfVar17 = (float *)(param_3 + uVar36); + pfVar18 = (float *)(param_3 + uVar36 + 0x20); + pfVar20 = (float *)(param_2 + (lVar26 + lVar34) * 4); + lVar25 = (long)(int)-param_5; + pfVar23 = (float *)(param_2 + (lVar26 + lVar27) * 4); + pfVar24 = (float *)(param_2 + (lVar26 + lVar25 + 1) * 4); + lVar37 = (long)(int)param_5; + pfVar35 = (float *)(param_2 + (lVar26 + lVar25) * 4); + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar28 = (float *)(param_2 + (lVar26 + lVar37) * 4); + if ((((((uVar32 + 1 < 4 || + pfVar17 < (float *)(param_2 + (lVar26 + lVar34 + 8) * 4) && pfVar20 < pfVar18) || + pfVar29 < pfVar18 && pfVar17 < (float *)(param_2 + (lVar21 + 8 + uVar31) * 4)) || + pfVar17 < (float *)(param_2 + (lVar26 + lVar27 + 8) * 4) && pfVar23 < pfVar18) || + pfVar24 < pfVar18 && pfVar17 < (float *)(param_2 + (lVar26 + lVar25 + 9) * 4)) || + pfVar17 < (float *)(param_2 + (lVar26 + lVar25 + 8) * 4) && pfVar35 < pfVar18) || + (pfVar17 < (float *)(param_2 + (lVar26 + lVar37 + 8) * 4) && pfVar28 < pfVar18)) { + pfVar18 = pfVar29; + do { + fVar41 = pfVar18[lVar37]; + fVar39 = pfVar18[lVar25]; + fVar42 = pfVar18[lVar27]; + fVar40 = pfVar18[lVar34]; + pfVar20 = pfVar18 + 2; + fVar43 = *pfVar18; + pfVar17[1] = (*(float *)((long)pfVar18 + uVar36) + pfVar18[lVar37 + 1]) * fVar38 + + fVar50 * pfVar18[1] + fVar75 * (pfVar18[lVar27 + 1] + pfVar18[lVar34 + 1]); + *pfVar17 = (fVar39 + fVar41) * fVar38 + fVar50 * fVar43 + fVar75 * (fVar42 + fVar40); + pfVar18 = pfVar20; + pfVar17 = pfVar17 + 2; + } while (pfVar20 != pfVar29 + ((ulong)uVar32 + 1) * 2); + } + else { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar18 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + uVar33 = 0; + do { + fVar39 = *pfVar35; + fVar41 = pfVar35[2]; + fVar44 = pfVar35[4]; + fVar47 = pfVar35[6]; + pfVar35 = pfVar35 + 8; + uVar33 = uVar33 + 1; + fVar40 = *pfVar28; + fVar51 = pfVar28[1]; + fVar42 = pfVar28[2]; + fVar55 = pfVar28[3]; + fVar45 = pfVar28[4]; + fVar58 = pfVar28[5]; + fVar48 = pfVar28[6]; + fVar61 = pfVar28[7]; + pfVar28 = pfVar28 + 8; + _local_100 = CONCAT14(SUB41(fVar42,0),fVar40); + _local_100 = CONCAT15((char)((uint)fVar42 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar42 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar42 >> 0x18),_local_100); + fVar42 = *pfVar18; + fVar52 = pfVar18[1]; + fVar43 = pfVar18[2]; + fVar56 = pfVar18[3]; + fVar46 = pfVar18[4]; + fVar59 = pfVar18[5]; + fVar49 = pfVar18[6]; + fVar62 = pfVar18[7]; + pfVar18 = pfVar18 + 8; + fVar53 = *pfVar23; + fVar64 = pfVar23[1]; + fVar57 = pfVar23[2]; + fVar66 = pfVar23[3]; + fVar60 = pfVar23[4]; + fVar69 = pfVar23[5]; + fVar63 = pfVar23[6]; + fVar72 = pfVar23[7]; + pfVar23 = pfVar23 + 8; + _local_d0 = CONCAT14(SUB41(fVar66,0),fVar64); + _local_d0 = CONCAT15((char)((uint)fVar66 >> 8),_local_d0); + _local_d0 = CONCAT16((char)((uint)fVar66 >> 0x10),_local_d0); + _local_d0 = CONCAT17((char)((uint)fVar66 >> 0x18),_local_d0); + _fStack_c8 = CONCAT14(SUB41(fVar72,0),fVar69); + _fStack_c8 = CONCAT15((char)((uint)fVar72 >> 8),_fStack_c8); + _fStack_c8 = CONCAT16((char)((uint)fVar72 >> 0x10),_fStack_c8); + _fStack_c8 = CONCAT17((char)((uint)fVar72 >> 0x18),_fStack_c8); + fVar66 = *pfVar24; + fVar67 = pfVar24[2]; + fVar70 = pfVar24[4]; + fVar73 = pfVar24[6]; + pfVar24 = pfVar24 + 8; + fVar41 = (float)(CONCAT17((char)((uint)fVar41 >> 0x18), + CONCAT16((char)((uint)fVar41 >> 0x10), + CONCAT15((char)((uint)fVar41 >> 8), + CONCAT14(SUB41(fVar41,0),fVar39)))) >> 0x20) + + uStack_fc; + fVar72 = *pfVar20; + fVar76 = pfVar20[1]; + fVar68 = pfVar20[2]; + fVar79 = pfVar20[3]; + fVar71 = pfVar20[4]; + fVar80 = pfVar20[5]; + fVar74 = pfVar20[6]; + fVar82 = pfVar20[7]; + pfVar20 = pfVar20 + 8; + _local_100 = CONCAT14(SUB41(fVar68,0),fVar72); + _local_100 = CONCAT15((char)((uint)fVar68 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar68 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar68 >> 0x18),_local_100); + *pfVar17 = (fVar39 + fVar40) * fVar38 + fVar42 * fVar50 + (fVar53 + fVar72) * fVar75; + pfVar17[1] = (fVar51 + fVar66) * fVar38 + fVar52 * fVar50 + (fVar64 + fVar76) * fVar75; + pfVar17[2] = fVar41 * fVar38 + + (float)(CONCAT17((char)((uint)fVar43 >> 0x18), + CONCAT16((char)((uint)fVar43 >> 0x10), + CONCAT15((char)((uint)fVar43 >> 8), + CONCAT14(SUB41(fVar43,0),fVar42)))) >> + 0x20) * fVar50 + + ((float)(CONCAT17((char)((uint)fVar57 >> 0x18), + CONCAT16((char)((uint)fVar57 >> 0x10), + CONCAT15((char)((uint)fVar57 >> 8), + CONCAT14(SUB41(fVar57,0),fVar53)))) >> + 0x20) + (float)((ulong)_local_100 >> 0x20)) * fVar75; + pfVar17[3] = (fVar55 + fVar67) * fVar38 + + (float)(CONCAT17((char)((uint)fVar56 >> 0x18), + CONCAT16((char)((uint)fVar56 >> 0x10), + CONCAT15((char)((uint)fVar56 >> 8), + CONCAT14(SUB41(fVar56,0),fVar52)))) >> + 0x20) * fVar50 + + (uStack_cc + + (float)(CONCAT17((char)((uint)fVar79 >> 0x18), + CONCAT16((char)((uint)fVar79 >> 0x10), + CONCAT15((char)((uint)fVar79 >> 8), + CONCAT14(SUB41(fVar79,0),fVar76)))) >> + 0x20)) * fVar75; + pfVar17[4] = (fVar44 + fVar45) * fVar38 + fVar46 * fVar50 + (fVar60 + fVar71) * fVar75; + pfVar17[5] = (fVar58 + fVar70) * fVar38 + fVar59 * fVar50 + (fVar69 + fVar80) * fVar75; + pfVar17[6] = ((float)(CONCAT17((char)((uint)fVar47 >> 0x18), + CONCAT16((char)((uint)fVar47 >> 0x10), + CONCAT15((char)((uint)fVar47 >> 8), + CONCAT14(SUB41(fVar47,0),fVar44)))) >> + 0x20) + fVar48) * fVar38 + + (float)(CONCAT17((char)((uint)fVar49 >> 0x18), + CONCAT16((char)((uint)fVar49 >> 0x10), + CONCAT15((char)((uint)fVar49 >> 8), + CONCAT14(SUB41(fVar49,0),fVar46)))) >> + 0x20) * fVar50 + + ((float)(CONCAT17((char)((uint)fVar63 >> 0x18), + CONCAT16((char)((uint)fVar63 >> 0x10), + CONCAT15((char)((uint)fVar63 >> 8), + CONCAT14(SUB41(fVar63,0),fVar60)))) >> + 0x20) + + (float)(CONCAT17((char)((uint)fVar74 >> 0x18), + CONCAT16((char)((uint)fVar74 >> 0x10), + CONCAT15((char)((uint)fVar74 >> 8), + CONCAT14(SUB41(fVar74,0),fVar71)))) >> + 0x20)) * fVar75; + pfVar17[7] = (fVar61 + fVar73) * fVar38 + + (float)(CONCAT17((char)((uint)fVar62 >> 0x18), + CONCAT16((char)((uint)fVar62 >> 0x10), + CONCAT15((char)((uint)fVar62 >> 8), + CONCAT14(SUB41(fVar62,0),fVar59)))) >> + 0x20) * fVar50 + + (uStack_c4 + + (float)(CONCAT17((char)((uint)fVar82 >> 0x18), + CONCAT16((char)((uint)fVar82 >> 0x10), + CONCAT15((char)((uint)fVar82 >> 8), + CONCAT14(SUB41(fVar82,0),fVar80)))) >> + 0x20)) * fVar75; + pfVar17 = pfVar17 + 8; + } while (uVar33 < uVar1); + pfVar18 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar32 + 1 == uVar1 * 4) goto LAB_001c3294; + } + fVar42 = pfVar18[lVar37 + 1]; + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar39 = *(float *)((long)pfVar18 + uVar36); + uVar33 = uVar2 + 2; + fVar41 = pfVar18[1]; + fVar43 = pfVar18[lVar34 + 1]; + fVar40 = pfVar18[lVar27 + 1]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25] + pfVar18[lVar37]) * fVar38 + fVar50 * *pfVar18 + + fVar75 * (pfVar18[lVar27] + pfVar18[lVar37 * 2]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar42) * fVar38 + fVar50 * fVar41 + fVar75 * (fVar40 + fVar43); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar41 = pfVar18[lVar37 + 3]; + fVar39 = *(float *)((long)pfVar18 + uVar36 + 8); + uVar33 = uVar2 + 4; + fVar43 = pfVar18[3]; + fVar42 = pfVar18[lVar27 + 3]; + fVar40 = pfVar18[lVar34 + 3]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25 + 2] + pfVar18[lVar37 + 2]) * fVar38 + fVar50 * pfVar18[2] + + fVar75 * (pfVar18[lVar27 + 2] + pfVar18[lVar37 * 2 + 2]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar41) * fVar38 + fVar50 * fVar43 + fVar75 * (fVar42 + fVar40); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar41 = pfVar18[lVar37 + 5]; + fVar39 = *(float *)((long)pfVar18 + uVar36 + 0x10); + uVar33 = uVar2 + 6; + fVar43 = pfVar18[5]; + fVar42 = pfVar18[lVar27 + 5]; + fVar40 = pfVar18[lVar34 + 5]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25 + 4] + pfVar18[lVar37 + 4]) * fVar38 + fVar50 * pfVar18[4] + + fVar75 * (pfVar18[lVar27 + 4] + pfVar18[lVar37 * 2 + 4]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar41) * fVar38 + fVar50 * fVar43 + fVar75 * (fVar42 + fVar40); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar41 = pfVar18[lVar37 + 7]; + fVar39 = *(float *)((long)pfVar18 + uVar36 + 0x18); + uVar33 = uVar2 + 8; + fVar43 = pfVar18[7]; + fVar42 = pfVar18[lVar27 + 7]; + fVar40 = pfVar18[lVar34 + 7]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25 + 6] + pfVar18[lVar37 + 6]) * fVar38 + fVar50 * pfVar18[6] + + fVar75 * (pfVar18[lVar27 + 6] + pfVar18[lVar37 * 2 + 6]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar41) * fVar38 + fVar50 * fVar43 + fVar75 * (fVar42 + fVar40); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar41 = pfVar18[lVar37 + 9]; + fVar39 = *(float *)((long)pfVar18 + uVar36 + 0x20); + uVar33 = uVar2 + 10; + fVar43 = pfVar18[9]; + fVar42 = pfVar18[lVar27 + 9]; + fVar40 = pfVar18[lVar34 + 9]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25 + 8] + pfVar18[lVar37 + 8]) * fVar38 + fVar50 * pfVar18[8] + + fVar75 * (pfVar18[lVar27 + 8] + pfVar18[lVar37 * 2 + 8]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar41) * fVar38 + fVar50 * fVar43 + fVar75 * (fVar42 + fVar40); + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar41 = pfVar18[lVar37 + 0xb]; + fVar39 = *(float *)((long)pfVar18 + uVar36 + 0x28); + uVar2 = uVar2 + 0xc; + fVar43 = pfVar18[0xb]; + fVar42 = pfVar18[lVar27 + 0xb]; + fVar40 = pfVar18[lVar34 + 0xb]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25 + 10] + pfVar18[lVar37 + 10]) * fVar38 + fVar50 * pfVar18[10] + + fVar75 * (pfVar18[lVar27 + 10] + pfVar18[lVar37 * 2 + 10]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar41) * fVar38 + fVar50 * fVar43 + fVar75 * (fVar42 + fVar40); + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar42 = pfVar18[lVar37 + 0xd]; + fVar39 = *(float *)((long)pfVar18 + uVar36 + 0x30); + fVar41 = pfVar18[0xd]; + fVar40 = pfVar18[lVar27 + 0xd]; + fVar43 = pfVar18[lVar34 + 0xd]; + *(float *)(param_3 + uVar31) = + (pfVar18[lVar25 + 0xc] + pfVar18[lVar37 + 0xc]) * fVar38 + + fVar50 * pfVar18[0xc] + + fVar75 * (pfVar18[lVar27 + 0xc] + pfVar18[lVar37 * 2 + 0xc]); + *(float *)(param_3 + uVar31 + 4) = + (fVar39 + fVar42) * fVar38 + fVar50 * fVar41 + fVar75 * (fVar40 + fVar43); + } + } + } + } + } + } + } +LAB_001c3294: + pfVar29 = pfVar29 + ((ulong)uVar32 + 1) * 2; + uVar22 = (ulong)(uVar30 + 2 + uVar32 * 2); + goto LAB_001c24fc; + } + if (param_4 + -1 <= (int)uVar30) goto LAB_001c24fc; + uVar33 = (param_4 + -2) - uVar30; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar25 = (long)(int)(param_5 << 1); + uVar32 = uVar33 >> 1; + puVar19 = (undefined8 *)(param_3 + uVar36); + pfVar17 = (float *)(param_3 + uVar36 + 0x20); + pfVar18 = (float *)(param_2 + (lVar26 + lVar25) * 4); + lVar37 = (long)(int)(param_5 * -2); + pfVar20 = (float *)(param_2 + (lVar26 + lVar37) * 4); + if (((uVar32 + 1 < 4 || + puVar19 < (undefined8 *)(param_2 + (lVar26 + lVar25 + 8) * 4) && pfVar18 < pfVar17) || + pfVar29 < pfVar17 && puVar19 < (undefined8 *)(param_2 + (lVar21 + 8 + uVar31) * 4)) || + (puVar19 < (undefined8 *)(param_2 + (lVar26 + lVar37 + 8) * 4) && pfVar20 < pfVar17)) { + uVar65 = NEON_fmov(0xc0000000,4); + pfVar17 = pfVar29; + do { + pfVar18 = pfVar17 + lVar37; + uVar78 = *(undefined8 *)pfVar17; + pfVar20 = pfVar17 + lVar25; + pfVar17 = pfVar17 + 2; + *puVar19 = CONCAT44((float)((ulong)*(undefined8 *)pfVar18 >> 0x20) + + (float)((ulong)uVar78 >> 0x20) * (float)((ulong)uVar65 >> 0x20) + + (float)((ulong)*(undefined8 *)pfVar20 >> 0x20), + (float)*(undefined8 *)pfVar18 + (float)uVar78 * (float)uVar65 + + (float)*(undefined8 *)pfVar20); + puVar19 = puVar19 + 1; + } while (pfVar17 != pfVar29 + ((ulong)uVar32 + 1) * 2); + } + else { + uVar1 = (uVar32 - 1 >> 1) + 1; + pfVar17 = pfVar29; + uVar2 = uVar30; + if (1 < uVar33) { + auVar54 = NEON_fmov(0xc0000000,4); + lVar26 = 0; + uVar33 = 0; + do { + puVar16 = (undefined8 *)((long)pfVar20 + lVar26); + puVar4 = (undefined8 *)((long)puVar19 + lVar26); + uVar81 = ((undefined8 *)((long)pfVar29 + lVar26))[1]; + uVar77 = *(undefined8 *)((long)pfVar29 + lVar26); + uVar33 = uVar33 + 1; + uVar78 = puVar16[1]; + uVar65 = *puVar16; + auVar6 = *(undefined1 (*) [16])((long)pfVar18 + lVar26); + lVar26 = lVar26 + 0x10; + puVar4[1] = CONCAT44((float)((ulong)uVar78 >> 0x20) + + (float)((ulong)uVar81 >> 0x20) * auVar54._12_4_ + auVar6._12_4_, + (float)uVar78 + (float)uVar81 * auVar54._8_4_ + auVar6._8_4_); + *puVar4 = CONCAT44((float)((ulong)uVar65 >> 0x20) + + (float)((ulong)uVar77 >> 0x20) * auVar54._4_4_ + auVar6._4_4_, + (float)uVar65 + (float)uVar77 * auVar54._0_4_ + auVar6._0_4_); + } while (uVar33 < uVar1); + pfVar17 = pfVar29 + (ulong)(uVar1 * 2) * 2; + uVar2 = uVar30 + uVar1 * 4; + if (uVar32 + 1 == uVar1 * 2) goto LAB_001c2c8c; + } + uVar65 = NEON_fmov(0xc0000000,4); + *(ulong *)(param_3 + (long)(int)uVar2 * 4) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar17 + lVar37) >> 0x20) + + (float)((ulong)*(undefined8 *)pfVar17 >> 0x20) * (float)((ulong)uVar65 >> 0x20) + + (float)((ulong)*(undefined8 *)(pfVar17 + lVar25) >> 0x20), + (float)*(undefined8 *)(pfVar17 + lVar37) + + (float)*(undefined8 *)pfVar17 * (float)uVar65 + + (float)*(undefined8 *)(pfVar17 + lVar25)); + } +LAB_001c2c8c: + pfVar29 = pfVar29 + ((ulong)uVar32 + 1) * 2; + uVar22 = (ulong)(uVar30 + 2 + uVar32 * 2); + goto LAB_001c24fc; + } + fVar50 = *(float *)(lVar37 + uVar36); + if (fVar50 == 2.0) { + fVar38 = pfVar3[1]; + if (fVar38 == 1.0) { + iVar15 = param_4 + -1; + if (iVar15 <= (int)uVar30) goto LAB_001c24fc; + uVar33 = (param_4 + -2) - uVar30; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar25 = (long)(int)-param_5; + uVar32 = uVar33 >> 1; + pfVar17 = (float *)(param_3 + uVar36 + 0x20); + pfVar18 = (float *)(param_2 + (lVar26 + lVar25 + 1) * 4); + pfVar20 = (float *)(param_3 + uVar36); + pfVar23 = (float *)(param_2 + (lVar26 + lVar25) * 4); + lVar37 = (long)(int)param_5; + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar24 = (float *)(param_2 + (lVar26 + lVar37) * 4); + if ((((uVar32 + 1 < 5 || + pfVar18 < pfVar17 && pfVar20 < (float *)(param_2 + (lVar26 + lVar25 + 9) * 4)) || + pfVar29 < pfVar17 && pfVar20 < (float *)(param_2 + (lVar21 + 8 + uVar31) * 4)) || + pfVar20 < (float *)(param_2 + (lVar26 + lVar25 + 8) * 4) && pfVar23 < pfVar17) || + (pfVar20 < (float *)(param_2 + (lVar26 + lVar37 + 8) * 4) && pfVar24 < pfVar17)) { + uVar22 = (ulong)uVar32; + pfVar17 = pfVar29; + do { + pfVar18 = pfVar17 + 1; + fVar50 = *pfVar17; + pfVar23 = (float *)((long)pfVar17 + uVar36); + fVar38 = pfVar17[lVar25]; + pfVar24 = pfVar17 + lVar37 + 1; + fVar75 = pfVar17[lVar37]; + pfVar17 = pfVar17 + 2; + pfVar20[1] = *pfVar23 + *pfVar18 * 2.0 + *pfVar24; + *pfVar20 = fVar38 + fVar50 * 2.0 + fVar75; + pfVar20 = pfVar20 + 2; + } while (pfVar17 != pfVar29 + (uVar22 + 1) * 2); + } + else { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar17 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + auVar54 = NEON_fmov(0x40000000,4); + uVar33 = 0; + do { + fVar50 = *pfVar23; + fVar39 = pfVar23[2]; + fVar41 = pfVar23[4]; + fVar45 = pfVar23[6]; + pfVar23 = pfVar23 + 8; + uVar33 = uVar33 + 1; + fVar56 = *pfVar18; + fVar57 = pfVar18[2]; + fVar58 = pfVar18[4]; + fVar59 = pfVar18[6]; + pfVar18 = pfVar18 + 8; + fVar38 = *pfVar17; + fVar48 = pfVar17[1]; + fVar40 = pfVar17[2]; + fVar75 = pfVar17[3]; + fVar43 = pfVar17[4]; + fVar52 = pfVar17[5]; + fVar46 = pfVar17[6]; + fVar42 = pfVar17[7]; + pfVar17 = pfVar17 + 8; + _local_d0 = CONCAT14(SUB41(fVar75,0),fVar48); + _local_d0 = CONCAT15((char)((uint)fVar75 >> 8),_local_d0); + _local_d0 = CONCAT16((char)((uint)fVar75 >> 0x10),_local_d0); + _local_d0 = CONCAT17((char)((uint)fVar75 >> 0x18),_local_d0); + _fStack_c8 = CONCAT14(SUB41(fVar42,0),fVar52); + _fStack_c8 = CONCAT15((char)((uint)fVar42 >> 8),_fStack_c8); + _fStack_c8 = CONCAT16((char)((uint)fVar42 >> 0x10),_fStack_c8); + _fStack_c8 = CONCAT17((char)((uint)fVar42 >> 0x18),_fStack_c8); + fVar75 = *pfVar24; + fVar49 = pfVar24[1]; + fVar42 = pfVar24[2]; + fVar51 = pfVar24[3]; + fVar44 = pfVar24[4]; + fVar53 = pfVar24[5]; + fVar47 = pfVar24[6]; + fVar55 = pfVar24[7]; + pfVar24 = pfVar24 + 8; + _local_100 = CONCAT14(SUB41(fVar42,0),fVar75); + _local_100 = CONCAT15((char)((uint)fVar42 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar42 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar42 >> 0x18),_local_100); + *pfVar20 = fVar50 + auVar54._0_4_ * fVar38 + fVar75; + pfVar20[1] = fVar56 + fVar48 * auVar54._0_4_ + fVar49; + pfVar20[2] = (float)(CONCAT17((char)((uint)fVar39 >> 0x18), + CONCAT16((char)((uint)fVar39 >> 0x10), + CONCAT15((char)((uint)fVar39 >> 8), + CONCAT14(SUB41(fVar39,0),fVar50)))) >> + 0x20) + + auVar54._4_4_ * + (float)(CONCAT17((char)((uint)fVar40 >> 0x18), + CONCAT16((char)((uint)fVar40 >> 0x10), + CONCAT15((char)((uint)fVar40 >> 8), + CONCAT14(SUB41(fVar40,0),fVar38)))) >> + 0x20) + (float)((ulong)_local_100 >> 0x20); + pfVar20[3] = (float)(CONCAT17((char)((uint)fVar57 >> 0x18), + CONCAT16((char)((uint)fVar57 >> 0x10), + CONCAT15((char)((uint)fVar57 >> 8), + CONCAT14(SUB41(fVar57,0),fVar56)))) >> + 0x20) + uStack_cc * auVar54._4_4_ + + (float)(CONCAT17((char)((uint)fVar51 >> 0x18), + CONCAT16((char)((uint)fVar51 >> 0x10), + CONCAT15((char)((uint)fVar51 >> 8), + CONCAT14(SUB41(fVar51,0),fVar49)))) >> + 0x20); + pfVar20[4] = fVar41 + auVar54._8_4_ * fVar43 + fVar44; + pfVar20[5] = fVar58 + fVar52 * auVar54._8_4_ + fVar53; + pfVar20[6] = (float)(CONCAT17((char)((uint)fVar45 >> 0x18), + CONCAT16((char)((uint)fVar45 >> 0x10), + CONCAT15((char)((uint)fVar45 >> 8), + CONCAT14(SUB41(fVar45,0),fVar41)))) >> + 0x20) + + auVar54._12_4_ * + (float)(CONCAT17((char)((uint)fVar46 >> 0x18), + CONCAT16((char)((uint)fVar46 >> 0x10), + CONCAT15((char)((uint)fVar46 >> 8), + CONCAT14(SUB41(fVar46,0),fVar43)))) >> + 0x20) + + (float)(CONCAT17((char)((uint)fVar47 >> 0x18), + CONCAT16((char)((uint)fVar47 >> 0x10), + CONCAT15((char)((uint)fVar47 >> 8), + CONCAT14(SUB41(fVar47,0),fVar44)))) >> + 0x20); + pfVar20[7] = (float)(CONCAT17((char)((uint)fVar59 >> 0x18), + CONCAT16((char)((uint)fVar59 >> 0x10), + CONCAT15((char)((uint)fVar59 >> 8), + CONCAT14(SUB41(fVar59,0),fVar58)))) >> + 0x20) + uStack_c4 * auVar54._12_4_ + + (float)(CONCAT17((char)((uint)fVar55 >> 0x18), + CONCAT16((char)((uint)fVar55 >> 0x10), + CONCAT15((char)((uint)fVar55 >> 8), + CONCAT14(SUB41(fVar55,0),fVar53)))) >> + 0x20); + pfVar20 = pfVar20 + 8; + } while (uVar33 < uVar1); + pfVar17 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar1 * 4 == uVar32 + 1) goto LAB_001c472c; + } + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar33 = uVar2 + 2; + fVar38 = *(float *)((long)pfVar17 + uVar36); + fVar50 = pfVar17[1]; + fVar75 = pfVar17[lVar37 + 1]; + *(float *)(param_3 + uVar31) = pfVar17[lVar25] + *pfVar17 * 2.0 + pfVar17[lVar37]; + *(float *)(param_3 + uVar31 + 4) = fVar38 + fVar50 * 2.0 + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 8); + uVar33 = uVar2 + 4; + fVar50 = pfVar17[3]; + fVar75 = pfVar17[lVar37 + 3]; + *(float *)(param_3 + uVar31) = + pfVar17[lVar25 + 2] + pfVar17[2] * 2.0 + pfVar17[lVar37 + 2]; + *(float *)(param_3 + uVar31 + 4) = fVar38 + fVar50 * 2.0 + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x10); + uVar33 = uVar2 + 6; + fVar50 = pfVar17[5]; + fVar75 = pfVar17[lVar37 + 5]; + *(float *)(param_3 + uVar31) = + pfVar17[lVar25 + 4] + pfVar17[4] * 2.0 + pfVar17[lVar37 + 4]; + *(float *)(param_3 + uVar31 + 4) = fVar38 + fVar50 * 2.0 + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x18); + uVar33 = uVar2 + 8; + fVar50 = pfVar17[7]; + fVar75 = pfVar17[lVar37 + 7]; + *(float *)(param_3 + uVar31) = + pfVar17[lVar25 + 6] + pfVar17[6] * 2.0 + pfVar17[lVar37 + 6]; + *(float *)(param_3 + uVar31 + 4) = fVar38 + fVar50 * 2.0 + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x20); + uVar33 = uVar2 + 10; + fVar50 = pfVar17[9]; + fVar75 = pfVar17[lVar37 + 9]; + *(float *)(param_3 + uVar31) = + pfVar17[lVar25 + 8] + pfVar17[8] * 2.0 + pfVar17[lVar37 + 8]; + *(float *)(param_3 + uVar31 + 4) = fVar38 + fVar50 * 2.0 + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x28); + uVar2 = uVar2 + 0xc; + fVar50 = pfVar17[0xb]; + pfVar18 = pfVar17 + 0xc; + fVar75 = pfVar17[lVar37 + 0xb]; + *(float *)(param_3 + uVar31) = + pfVar17[lVar25 + 10] + pfVar17[10] * 2.0 + pfVar17[lVar37 + 10]; + *(float *)(param_3 + uVar31 + 4) = fVar38 + fVar50 * 2.0 + fVar75; + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar38 = pfVar18[lVar25] + pfVar17[0xc] * 2.0; + fVar50 = *(float *)((long)pfVar18 + uVar36) + pfVar17[0xd] * 2.0; +LAB_001c46e0: + uVar22 = (ulong)uVar32; + fVar75 = pfVar18[(long)(int)param_5 + 1]; + *(float *)(param_3 + uVar31) = fVar38 + pfVar18[(int)param_5]; + *(float *)(param_3 + uVar31 + 4) = fVar50 + fVar75; + goto LAB_001c46f8; + } + } + } + } + } + } +LAB_001c472c: + uVar22 = (ulong)uVar32; + } +LAB_001c46f8: + pfVar29 = pfVar29 + (uVar22 + 1) * 2; + uVar22 = (ulong)(uVar30 + 2 + uVar32 * 2); + goto LAB_001c24fc; + } + } + else { + fVar38 = pfVar3[1]; + if ((fVar50 == -2.0) && (fVar38 == 1.0)) { + iVar15 = param_4 + -1; + if (iVar15 <= (int)uVar30) goto LAB_001c24fc; + uVar33 = (param_4 + -2) - uVar30; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar25 = (long)(int)-param_5; + uVar32 = uVar33 >> 1; + pfVar17 = (float *)(param_3 + uVar36 + 0x20); + pfVar18 = (float *)(param_2 + (lVar26 + lVar25 + 1) * 4); + pfVar20 = (float *)(param_3 + uVar36); + pfVar23 = (float *)(param_2 + (lVar26 + lVar25) * 4); + lVar37 = (long)(int)param_5; + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar24 = (float *)(param_2 + (lVar26 + lVar37) * 4); + if ((((4 < uVar32 + 1 && + (pfVar17 <= pfVar18 || (float *)(param_2 + (lVar26 + lVar25 + 9) * 4) <= pfVar20)) && + (pfVar17 <= pfVar29 || (float *)(param_2 + (lVar21 + 8 + uVar31) * 4) <= pfVar20)) && + ((float *)(param_2 + (lVar26 + lVar25 + 8) * 4) <= pfVar20 || pfVar17 <= pfVar23)) && + ((float *)(param_2 + (lVar26 + lVar37 + 8) * 4) <= pfVar20 || pfVar17 <= pfVar24)) { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar17 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + auVar54 = NEON_fmov(0x40000000,4); + uVar33 = 0; + do { + fVar50 = *pfVar23; + fVar39 = pfVar23[2]; + fVar41 = pfVar23[4]; + fVar45 = pfVar23[6]; + pfVar23 = pfVar23 + 8; + uVar33 = uVar33 + 1; + fVar56 = *pfVar18; + fVar57 = pfVar18[2]; + fVar58 = pfVar18[4]; + fVar59 = pfVar18[6]; + pfVar18 = pfVar18 + 8; + fVar38 = *pfVar17; + fVar48 = pfVar17[1]; + fVar40 = pfVar17[2]; + fVar75 = pfVar17[3]; + fVar43 = pfVar17[4]; + fVar52 = pfVar17[5]; + fVar46 = pfVar17[6]; + fVar42 = pfVar17[7]; + pfVar17 = pfVar17 + 8; + _local_d0 = CONCAT14(SUB41(fVar75,0),fVar48); + _local_d0 = CONCAT15((char)((uint)fVar75 >> 8),_local_d0); + _local_d0 = CONCAT16((char)((uint)fVar75 >> 0x10),_local_d0); + _local_d0 = CONCAT17((char)((uint)fVar75 >> 0x18),_local_d0); + _fStack_c8 = CONCAT14(SUB41(fVar42,0),fVar52); + _fStack_c8 = CONCAT15((char)((uint)fVar42 >> 8),_fStack_c8); + _fStack_c8 = CONCAT16((char)((uint)fVar42 >> 0x10),_fStack_c8); + _fStack_c8 = CONCAT17((char)((uint)fVar42 >> 0x18),_fStack_c8); + fVar75 = *pfVar24; + fVar49 = pfVar24[1]; + fVar42 = pfVar24[2]; + fVar51 = pfVar24[3]; + fVar44 = pfVar24[4]; + fVar53 = pfVar24[5]; + fVar47 = pfVar24[6]; + fVar55 = pfVar24[7]; + pfVar24 = pfVar24 + 8; + _local_100 = CONCAT14(SUB41(fVar42,0),fVar75); + _local_100 = CONCAT15((char)((uint)fVar42 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar42 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar42 >> 0x18),_local_100); + *pfVar20 = (fVar50 - fVar38 * auVar54._0_4_) + fVar75; + pfVar20[1] = (fVar56 - fVar48 * auVar54._0_4_) + fVar49; + pfVar20[2] = ((float)(CONCAT17((char)((uint)fVar39 >> 0x18), + CONCAT16((char)((uint)fVar39 >> 0x10), + CONCAT15((char)((uint)fVar39 >> 8), + CONCAT14(SUB41(fVar39,0),fVar50)))) >> + 0x20) - + (float)(CONCAT17((char)((uint)fVar40 >> 0x18), + CONCAT16((char)((uint)fVar40 >> 0x10), + CONCAT15((char)((uint)fVar40 >> 8), + CONCAT14(SUB41(fVar40,0),fVar38)))) >> + 0x20) * auVar54._4_4_) + (float)((ulong)_local_100 >> 0x20); + pfVar20[3] = ((float)(CONCAT17((char)((uint)fVar57 >> 0x18), + CONCAT16((char)((uint)fVar57 >> 0x10), + CONCAT15((char)((uint)fVar57 >> 8), + CONCAT14(SUB41(fVar57,0),fVar56)))) >> + 0x20) - uStack_cc * auVar54._4_4_) + + (float)(CONCAT17((char)((uint)fVar51 >> 0x18), + CONCAT16((char)((uint)fVar51 >> 0x10), + CONCAT15((char)((uint)fVar51 >> 8), + CONCAT14(SUB41(fVar51,0),fVar49)))) >> + 0x20); + pfVar20[4] = (fVar41 - fVar43 * auVar54._8_4_) + fVar44; + pfVar20[5] = (fVar58 - fVar52 * auVar54._8_4_) + fVar53; + pfVar20[6] = ((float)(CONCAT17((char)((uint)fVar45 >> 0x18), + CONCAT16((char)((uint)fVar45 >> 0x10), + CONCAT15((char)((uint)fVar45 >> 8), + CONCAT14(SUB41(fVar45,0),fVar41)))) >> + 0x20) - + (float)(CONCAT17((char)((uint)fVar46 >> 0x18), + CONCAT16((char)((uint)fVar46 >> 0x10), + CONCAT15((char)((uint)fVar46 >> 8), + CONCAT14(SUB41(fVar46,0),fVar43)))) >> + 0x20) * auVar54._12_4_) + + (float)(CONCAT17((char)((uint)fVar47 >> 0x18), + CONCAT16((char)((uint)fVar47 >> 0x10), + CONCAT15((char)((uint)fVar47 >> 8), + CONCAT14(SUB41(fVar47,0),fVar44)))) >> + 0x20); + pfVar20[7] = ((float)(CONCAT17((char)((uint)fVar59 >> 0x18), + CONCAT16((char)((uint)fVar59 >> 0x10), + CONCAT15((char)((uint)fVar59 >> 8), + CONCAT14(SUB41(fVar59,0),fVar58)))) >> + 0x20) - uStack_c4 * auVar54._12_4_) + + (float)(CONCAT17((char)((uint)fVar55 >> 0x18), + CONCAT16((char)((uint)fVar55 >> 0x10), + CONCAT15((char)((uint)fVar55 >> 8), + CONCAT14(SUB41(fVar55,0),fVar53)))) >> + 0x20); + pfVar20 = pfVar20 + 8; + } while (uVar33 < uVar1); + pfVar17 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar32 + 1 == uVar1 * 4) goto LAB_001c472c; + } + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar33 = uVar2 + 2; + fVar38 = *(float *)((long)pfVar17 + uVar36); + fVar50 = pfVar17[1]; + fVar75 = pfVar17[lVar37 + 1]; + *(float *)(param_3 + uVar31) = (pfVar17[lVar25] - *pfVar17 * 2.0) + pfVar17[lVar37]; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar50 * 2.0) + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 8); + uVar33 = uVar2 + 4; + fVar50 = pfVar17[3]; + fVar75 = pfVar17[lVar37 + 3]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 2] - pfVar17[2] * 2.0) + pfVar17[lVar37 + 2]; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar50 * 2.0) + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x10); + uVar33 = uVar2 + 6; + fVar50 = pfVar17[5]; + fVar75 = pfVar17[lVar37 + 5]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 4] - pfVar17[4] * 2.0) + pfVar17[lVar37 + 4]; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar50 * 2.0) + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x18); + uVar33 = uVar2 + 8; + fVar50 = pfVar17[7]; + fVar75 = pfVar17[lVar37 + 7]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 6] - pfVar17[6] * 2.0) + pfVar17[lVar37 + 6]; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar50 * 2.0) + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x20); + uVar33 = uVar2 + 10; + fVar50 = pfVar17[9]; + fVar75 = pfVar17[lVar37 + 9]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 8] - pfVar17[8] * 2.0) + pfVar17[lVar37 + 8]; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar50 * 2.0) + fVar75; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar38 = *(float *)((long)pfVar17 + uVar36 + 0x28); + uVar2 = uVar2 + 0xc; + fVar50 = pfVar17[0xb]; + pfVar18 = pfVar17 + 0xc; + fVar75 = pfVar17[lVar37 + 0xb]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 10] - pfVar17[10] * 2.0) + pfVar17[lVar37 + 10]; + *(float *)(param_3 + uVar31 + 4) = (fVar38 - fVar50 * 2.0) + fVar75; + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar38 = pfVar18[lVar25] - pfVar17[0xc] * 2.0; + fVar50 = *(float *)((long)pfVar18 + uVar36) - pfVar17[0xd] * 2.0; + goto LAB_001c46e0; + } + } + } + } + } + } + goto LAB_001c472c; + } + uVar22 = (ulong)uVar32; + pfVar17 = pfVar29; + do { + pfVar18 = pfVar17 + 1; + fVar50 = *pfVar17; + pfVar23 = (float *)((long)pfVar17 + uVar36); + fVar38 = pfVar17[lVar25]; + pfVar24 = pfVar17 + lVar37 + 1; + fVar75 = pfVar17[lVar37]; + pfVar17 = pfVar17 + 2; + pfVar20[1] = (*pfVar23 - *pfVar18 * 2.0) + *pfVar24; + *pfVar20 = (fVar38 - fVar50 * 2.0) + fVar75; + pfVar20 = pfVar20 + 2; + } while (pfVar17 != pfVar29 + (uVar22 + 1) * 2); + goto LAB_001c46f8; + } + } + iVar15 = param_4 + -1; + if (iVar15 <= (int)uVar30) goto LAB_001c24fc; + uVar33 = (param_4 + -2) - uVar30; + uVar36 = -(uVar31 >> 0x1f & 1) & 0xfffffffc00000000 | (uVar31 & 0xffffffff) << 2; + lVar25 = (long)(int)-param_5; + uVar32 = uVar33 >> 1; + pfVar17 = (float *)(param_3 + uVar36 + 0x20); + pfVar18 = (float *)(param_2 + (lVar26 + lVar25 + 1) * 4); + pfVar20 = (float *)(param_3 + uVar36); + pfVar23 = (float *)(param_2 + (lVar26 + lVar25) * 4); + lVar37 = (long)(int)param_5; + uVar36 = -(ulong)(1 - param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(1 - param_5) << 2; + pfVar24 = (float *)(param_2 + (lVar26 + lVar37) * 4); + if ((((uVar32 + 1 < 5 || + pfVar18 < pfVar17 && pfVar20 < (float *)(param_2 + (lVar26 + lVar25 + 9) * 4)) || + pfVar29 < pfVar17 && pfVar20 < (float *)(param_2 + (lVar21 + 8 + uVar31) * 4)) || + pfVar20 < (float *)(param_2 + (lVar25 + 8 + lVar26) * 4) && pfVar23 < pfVar17) || + (pfVar20 < (float *)(param_2 + (lVar37 + 8 + lVar26) * 4) && pfVar24 < pfVar17)) { + pfVar17 = pfVar29; + do { + fVar75 = pfVar17[lVar25]; + fVar39 = pfVar17[lVar37]; + pfVar18 = pfVar17 + 2; + fVar40 = *pfVar17; + pfVar20[1] = (*(float *)((long)pfVar17 + uVar36) + pfVar17[lVar37 + 1]) * fVar38 + + pfVar17[1] * fVar50; + *pfVar20 = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + pfVar17 = pfVar18; + pfVar20 = pfVar20 + 2; + } while (pfVar18 != pfVar29 + ((ulong)uVar32 + 1) * 2); + } + else { + uVar1 = (uVar32 - 4 >> 2) + 1; + pfVar17 = pfVar29; + uVar2 = uVar30; + if (7 < uVar33) { + uVar33 = 0; + do { + fVar75 = *pfVar23; + fVar42 = pfVar23[2]; + fVar43 = pfVar23[4]; + fVar46 = pfVar23[6]; + pfVar23 = pfVar23 + 8; + uVar33 = uVar33 + 1; + fVar59 = *pfVar18; + fVar60 = pfVar18[2]; + fVar61 = pfVar18[4]; + fVar62 = pfVar18[6]; + pfVar18 = pfVar18 + 8; + fVar39 = *pfVar24; + fVar49 = pfVar24[1]; + fVar40 = pfVar24[2]; + fVar52 = pfVar24[3]; + fVar44 = pfVar24[4]; + fVar55 = pfVar24[5]; + fVar47 = pfVar24[6]; + fVar57 = pfVar24[7]; + pfVar24 = pfVar24 + 8; + _local_100 = CONCAT14(SUB41(fVar40,0),fVar39); + _local_100 = CONCAT15((char)((uint)fVar40 >> 8),_local_100); + _local_100 = CONCAT16((char)((uint)fVar40 >> 0x10),_local_100); + _local_100 = CONCAT17((char)((uint)fVar40 >> 0x18),_local_100); + fVar40 = *pfVar17; + fVar51 = pfVar17[1]; + fVar41 = pfVar17[2]; + fVar53 = pfVar17[3]; + fVar45 = pfVar17[4]; + fVar56 = pfVar17[5]; + fVar48 = pfVar17[6]; + fVar58 = pfVar17[7]; + pfVar17 = pfVar17 + 8; + _local_d0 = CONCAT14(SUB41(fVar53,0),fVar51); + _local_d0 = CONCAT15((char)((uint)fVar53 >> 8),_local_d0); + _local_d0 = CONCAT16((char)((uint)fVar53 >> 0x10),_local_d0); + _local_d0 = CONCAT17((char)((uint)fVar53 >> 0x18),_local_d0); + _fStack_c8 = CONCAT14(SUB41(fVar58,0),fVar56); + _fStack_c8 = CONCAT15((char)((uint)fVar58 >> 8),_fStack_c8); + _fStack_c8 = CONCAT16((char)((uint)fVar58 >> 0x10),_fStack_c8); + _fStack_c8 = CONCAT17((char)((uint)fVar58 >> 0x18),_fStack_c8); + *pfVar20 = (fVar75 + fVar39) * fVar38 + fVar50 * fVar40; + pfVar20[1] = (fVar49 + fVar59) * fVar38 + fVar50 * fVar51; + pfVar20[2] = ((float)(CONCAT17((char)((uint)fVar42 >> 0x18), + CONCAT16((char)((uint)fVar42 >> 0x10), + CONCAT15((char)((uint)fVar42 >> 8), + CONCAT14(SUB41(fVar42,0),fVar75)))) >> 0x20 + ) + (float)((ulong)_local_100 >> 0x20)) * fVar38 + + fVar50 * (float)(CONCAT17((char)((uint)fVar41 >> 0x18), + CONCAT16((char)((uint)fVar41 >> 0x10), + CONCAT15((char)((uint)fVar41 >> 8), + CONCAT14(SUB41(fVar41,0),fVar40)))) + >> 0x20); + pfVar20[3] = (fVar52 + (float)(CONCAT17((char)((uint)fVar60 >> 0x18), + CONCAT16((char)((uint)fVar60 >> 0x10), + CONCAT15((char)((uint)fVar60 >> 8), + CONCAT14(SUB41(fVar60,0),fVar59))) + ) >> 0x20)) * fVar38 + + fVar50 * (float)((ulong)_local_d0 >> 0x20); + pfVar20[4] = (fVar43 + fVar44) * fVar38 + fVar50 * fVar45; + pfVar20[5] = (fVar55 + fVar61) * fVar38 + fVar50 * fVar56; + pfVar20[6] = ((float)(CONCAT17((char)((uint)fVar46 >> 0x18), + CONCAT16((char)((uint)fVar46 >> 0x10), + CONCAT15((char)((uint)fVar46 >> 8), + CONCAT14(SUB41(fVar46,0),fVar43)))) >> 0x20 + ) + + (float)(CONCAT17((char)((uint)fVar47 >> 0x18), + CONCAT16((char)((uint)fVar47 >> 0x10), + CONCAT15((char)((uint)fVar47 >> 8), + CONCAT14(SUB41(fVar47,0),fVar44)))) >> 0x20) + ) * fVar38 + + fVar50 * (float)(CONCAT17((char)((uint)fVar48 >> 0x18), + CONCAT16((char)((uint)fVar48 >> 0x10), + CONCAT15((char)((uint)fVar48 >> 8), + CONCAT14(SUB41(fVar48,0),fVar45)))) + >> 0x20); + pfVar20[7] = (fVar57 + (float)(CONCAT17((char)((uint)fVar62 >> 0x18), + CONCAT16((char)((uint)fVar62 >> 0x10), + CONCAT15((char)((uint)fVar62 >> 8), + CONCAT14(SUB41(fVar62,0),fVar61))) + ) >> 0x20)) * fVar38 + + fVar50 * (float)((ulong)_fStack_c8 >> 0x20); + pfVar20 = pfVar20 + 8; + } while (uVar33 < uVar1); + pfVar17 = pfVar29 + (ulong)(uVar1 * 4) * 2; + uVar2 = uVar30 + uVar1 * 8; + if (uVar32 + 1 == uVar1 * 4) goto LAB_001c3aac; + } + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar39 = pfVar17[lVar37 + 1]; + fVar75 = *(float *)((long)pfVar17 + uVar36); + uVar33 = uVar2 + 2; + fVar40 = pfVar17[1]; + *(float *)(param_3 + uVar31) = (pfVar17[lVar25] + pfVar17[lVar37]) * fVar38 + *pfVar17 * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar39 = pfVar17[lVar37 + 3]; + uVar33 = uVar2 + 4; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 8); + fVar40 = pfVar17[3]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 2] + pfVar17[lVar37 + 2]) * fVar38 + pfVar17[2] * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar39 = pfVar17[lVar37 + 5]; + uVar33 = uVar2 + 6; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x10); + fVar40 = pfVar17[5]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 4] + pfVar17[lVar37 + 4]) * fVar38 + pfVar17[4] * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar39 = pfVar17[lVar37 + 7]; + uVar33 = uVar2 + 8; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x18); + fVar40 = pfVar17[7]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 6] + pfVar17[lVar37 + 6]) * fVar38 + pfVar17[6] * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar39 = pfVar17[lVar37 + 9]; + uVar33 = uVar2 + 10; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x20); + fVar40 = pfVar17[9]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 8] + pfVar17[lVar37 + 8]) * fVar38 + pfVar17[8] * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + if ((int)uVar33 < iVar15) { + uVar31 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar33 << 2; + fVar39 = pfVar17[lVar37 + 0xb]; + uVar2 = uVar2 + 0xc; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x28); + fVar40 = pfVar17[0xb]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 10] + pfVar17[lVar37 + 10]) * fVar38 + pfVar17[10] * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + if ((int)uVar2 < iVar15) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar39 = pfVar17[lVar37 + 0xd]; + fVar75 = *(float *)((long)pfVar17 + uVar36 + 0x30); + fVar40 = pfVar17[0xd]; + *(float *)(param_3 + uVar31) = + (pfVar17[lVar25 + 0xc] + pfVar17[lVar37 + 0xc]) * fVar38 + + pfVar17[0xc] * fVar50; + *(float *)(param_3 + uVar31 + 4) = (fVar75 + fVar39) * fVar38 + fVar40 * fVar50; + } + } + } + } + } + } + } +LAB_001c3aac: + pfVar29 = pfVar29 + ((ulong)uVar32 + 1) * 2; + uVar22 = (ulong)(uVar30 + 2 + uVar32 * 2); +LAB_001c24fc: + iVar15 = (int)uVar22; + if (iVar15 < param_4) { + uVar36 = -(ulong)(param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_5 << 2; + uVar31 = -(ulong)(-param_5 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_5 << 2; + lVar37 = 0; + do { + fVar50 = *pfVar3 * *(float *)((long)pfVar29 + lVar37); + if (0 < (int)uVar5) { + pfVar17 = (float *)((long)pfVar29 + lVar37 + uVar36); + pfVar18 = (float *)((long)pfVar29 + lVar37 + uVar31); + pfVar20 = pfVar3 + 1; + do { + fVar38 = *pfVar17; + pfVar17 = (float *)((long)pfVar17 + uVar36); + fVar75 = *pfVar18; + pfVar18 = (float *)((long)pfVar18 + uVar31); + pfVar23 = pfVar20 + 1; + fVar50 = fVar50 + (fVar38 + fVar75) * *pfVar20; + pfVar20 = pfVar23; + } while (pfVar23 != pfVar3 + (ulong)(uVar5 - 1) + 2); + } + *(float *)(param_3 + (long)iVar15 * 4 + lVar37) = fVar50; + lVar37 = lVar37 + 4; + } while (lVar37 != ((ulong)(uint)((param_4 + -1) - iVar15) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 001c4a88 (472 bytes) name=FUN_001c4a88 + +void FUN_001c4a88(long param_1,long param_2,long param_3,int param_4,uint param_5) + +{ + int iVar1; + uint uVar2; + char cVar3; + int iVar4; + float *pfVar5; + long lVar6; + undefined8 *puVar7; + float *pfVar8; + float *pfVar10; + float *pfVar11; + float *pfVar12; + ulong uVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float *pfVar9; + + uVar13 = (ulong)param_5; + iVar1 = *(int *)(param_1 + 8); + pfVar12 = *(float **)(param_1 + 0x20); + cVar3 = cv::checkHardwareSupport(100); + iVar4 = 0; + if (cVar3 != '\0') { + iVar4 = FUN_001c2290(param_1 + 0x70,param_2,param_3,param_4,uVar13); + } + param_4 = param_4 * param_5; + if (iVar4 < param_4 + -3) { + lVar6 = (long)iVar4 * 4; + uVar2 = (uint)((param_4 + -4) - iVar4) >> 2; + pfVar10 = (float *)(param_2 + lVar6); + puVar7 = (undefined8 *)(param_3 + lVar6); + do { + fVar14 = *pfVar12; + fVar18 = fVar14 * *pfVar10; + fVar17 = fVar14 * pfVar10[1]; + fVar16 = fVar14 * pfVar10[2]; + fVar14 = fVar14 * pfVar10[3]; + if (1 < iVar1) { + pfVar5 = pfVar12 + 1; + pfVar11 = pfVar10; + do { + pfVar11 = (float *)((long)pfVar11 + + (-(ulong)(param_5 >> 0x1f) & 0xfffffffc00000000 | uVar13 << 2)); + pfVar8 = pfVar5 + 1; + fVar15 = *pfVar5; + fVar18 = fVar18 + fVar15 * *pfVar11; + fVar17 = fVar17 + fVar15 * pfVar11[1]; + fVar16 = fVar16 + fVar15 * pfVar11[2]; + fVar14 = fVar14 + fVar15 * pfVar11[3]; + pfVar5 = pfVar8; + } while (pfVar8 != pfVar12 + (ulong)(iVar1 - 2) + 2); + } + pfVar10 = pfVar10 + 4; + puVar7[1] = CONCAT44(fVar14,fVar16); + *puVar7 = CONCAT44(fVar17,fVar18); + puVar7 = puVar7 + 2; + } while (pfVar10 != (float *)(param_2 + ((long)iVar4 + 4 + (ulong)uVar2 * 4) * 4)); + iVar4 = iVar4 + 4 + uVar2 * 4; + } + if (iVar4 < param_4) { + lVar6 = (long)iVar4 * 4; + pfVar10 = (float *)(param_2 + lVar6); + pfVar11 = (float *)(param_3 + lVar6); + do { + fVar14 = *pfVar12 * *pfVar10; + if (1 < iVar1) { + pfVar5 = pfVar10; + pfVar8 = pfVar12 + 1; + do { + pfVar9 = pfVar8 + 1; + pfVar5 = (float *)((long)pfVar5 + + (-(ulong)(param_5 >> 0x1f) & 0xfffffffc00000000 | uVar13 << 2)); + fVar14 = fVar14 + *pfVar5 * *pfVar8; + pfVar8 = pfVar9; + } while (pfVar9 != pfVar12 + (ulong)(iVar1 - 2) + 2); + } + pfVar10 = pfVar10 + 1; + *pfVar11 = fVar14; + pfVar11 = pfVar11 + 1; + } while (pfVar10 != + (float *)(param_2 + ((long)iVar4 + 1 + (ulong)(uint)((param_4 + -1) - iVar4)) * 4)); + } + return; +} + + +================================================================== + +### FUNC 001c4c60 (792 bytes) name=FUN_001c4c60 + +int FUN_001c4c60(uint *param_1,undefined8 *param_2,undefined8 *param_3,int param_4) + +{ + float *pfVar1; + undefined1 auVar2 [16]; + uint uVar3; + int *piVar4; + int *piVar5; + ulong uVar6; + int *piVar7; + int *piVar8; + undefined1 (*pauVar9) [16]; + float fVar10; + undefined8 uVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + float fVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + int iVar21; + int iVar22; + float fVar23; + int iVar24; + int iVar25; + + fVar10 = (float)param_1[1]; + piVar4 = (int *)param_2[-1]; + pauVar9 = (undefined1 (*) [16])*param_2; + piVar8 = (int *)param_2[1]; + uVar3 = (int)(param_1[4] + param_1[5] + -1) / 2; + uVar6 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + iVar21 = (int)fVar10; + iVar22 = (int)fVar10; + iVar24 = (int)fVar10; + iVar25 = (int)fVar10; + pfVar1 = (float *)(*(long *)(param_1 + 6) + uVar6); + if ((*param_1 & 1) == 0) { + fVar17 = pfVar1[1]; + if ((ABS(fVar17) != 1.0) || (fVar17 != -pfVar1[-1])) { + fVar17 = pfVar1[1]; + if (param_4 < 4) { + return 0; + } + uVar3 = param_4 - 4U >> 2; + piVar5 = piVar4; + do { + piVar7 = piVar5 + 4; + auVar19._0_4_ = *piVar8 - *piVar5; + auVar19._4_4_ = piVar8[1] - piVar5[1]; + auVar19._8_4_ = piVar8[2] - piVar5[2]; + auVar19._12_4_ = piVar8[3] - piVar5[3]; + auVar19 = NEON_scvtf(auVar19,4); + auVar20._0_8_ = + CONCAT44((int)(fVar10 + auVar19._4_4_ * fVar17),(int)(fVar10 + auVar19._0_4_ * fVar17)) + ; + auVar20._8_4_ = (int)(fVar10 + auVar19._8_4_ * fVar17); + auVar20._12_4_ = (int)(fVar10 + auVar19._12_4_ * fVar17); + uVar11 = NEON_sqxtn(auVar20._0_8_,auVar20,4); + *param_3 = uVar11; + piVar5 = piVar7; + param_3 = param_3 + 1; + piVar8 = piVar8 + 4; + } while (piVar7 != piVar4 + ((ulong)uVar3 + 1) * 4); + return (uVar3 + 1) * 4; + } + piVar5 = piVar4; + if (fVar17 < 0.0) { + piVar5 = piVar8; + piVar8 = piVar4; + } + if (3 < param_4) { + uVar3 = param_4 - 4U >> 2; + piVar4 = piVar5; + do { + piVar7 = piVar4 + 4; + auVar14._0_4_ = *piVar8 - *piVar4; + auVar14._4_4_ = piVar8[1] - piVar4[1]; + auVar14._8_4_ = piVar8[2] - piVar4[2]; + auVar14._12_4_ = piVar8[3] - piVar4[3]; + auVar2._4_4_ = iVar22; + auVar2._0_4_ = iVar21; + auVar2._8_4_ = iVar24; + auVar2._12_4_ = iVar25; + auVar19 = NEON_sqadd(auVar14,auVar2,4); + uVar11 = NEON_sqxtn(auVar19._0_8_,auVar19,4); + *param_3 = uVar11; + piVar4 = piVar7; + param_3 = param_3 + 1; + piVar8 = piVar8 + 4; + } while (piVar7 != piVar5 + ((ulong)uVar3 + 1) * 4); + return (uVar3 + 1) * 4; + } + return 0; + } + fVar17 = *(float *)(*(long *)(param_1 + 6) + uVar6); + if (fVar17 == 2.0) { + if (pfVar1[1] == 1.0) { + if (param_4 < 4) { + return 0; + } + uVar3 = param_4 - 4U >> 2; + piVar5 = piVar4; + do { + piVar7 = piVar5 + 4; + auVar19 = NEON_sqshl(*pauVar9,1,4); + auVar12._0_8_ = + CONCAT44(iVar22 + piVar5[1] + piVar8[1] + auVar19._4_4_, + iVar21 + *piVar5 + *piVar8 + auVar19._0_4_); + auVar12._8_4_ = iVar24 + piVar5[2] + piVar8[2] + auVar19._8_4_; + auVar12._12_4_ = iVar25 + piVar5[3] + piVar8[3] + auVar19._12_4_; + uVar11 = NEON_sqxtn(auVar12._0_8_,auVar12,4); + *param_3 = uVar11; + piVar5 = piVar7; + param_3 = param_3 + 1; + piVar8 = piVar8 + 4; + pauVar9 = pauVar9 + 1; + } while (piVar7 != piVar4 + ((ulong)uVar3 + 1) * 4); + goto LAB_001c4d10; + } + } + else if (fVar17 == -2.0) { + if (pfVar1[1] == 1.0) { + if (param_4 < 4) { + return 0; + } + uVar3 = param_4 - 4U >> 2; + piVar5 = piVar4; + do { + piVar7 = piVar5 + 4; + auVar19 = NEON_sqshl(*pauVar9,1,4); + auVar16._0_8_ = + CONCAT44(iVar22 + ((piVar5[1] + piVar8[1]) - auVar19._4_4_), + iVar21 + ((*piVar5 + *piVar8) - auVar19._0_4_)); + auVar16._8_4_ = iVar24 + ((piVar5[2] + piVar8[2]) - auVar19._8_4_); + auVar16._12_4_ = iVar25 + ((piVar5[3] + piVar8[3]) - auVar19._12_4_); + uVar11 = NEON_sqxtn(auVar16._0_8_,auVar16,4); + *param_3 = uVar11; + piVar5 = piVar7; + param_3 = param_3 + 1; + piVar8 = piVar8 + 4; + pauVar9 = pauVar9 + 1; + } while (piVar7 != piVar4 + ((ulong)uVar3 + 1) * 4); + goto LAB_001c4d10; + } + } + else if ((fVar17 == 10.0) && (pfVar1[1] == 3.0)) { + if (param_4 < 4) { + return 0; + } + uVar3 = param_4 - 4U >> 2; + piVar5 = piVar4; + do { + piVar7 = piVar5 + 4; + auVar13._0_8_ = + CONCAT44(iVar22 + (int)((ulong)*(undefined8 *)*pauVar9 >> 0x20) * 10 + + (piVar5[1] + piVar8[1]) * 3, + iVar21 + (int)*(undefined8 *)*pauVar9 * 10 + (*piVar5 + *piVar8) * 3); + auVar13._8_4_ = iVar24 + (int)*(undefined8 *)(*pauVar9 + 8) * 10 + (piVar5[2] + piVar8[2]) * 3 + ; + auVar13._12_4_ = + iVar25 + (int)((ulong)*(undefined8 *)(*pauVar9 + 8) >> 0x20) * 10 + + (piVar5[3] + piVar8[3]) * 3; + uVar11 = NEON_sqxtn(auVar13._0_8_,auVar13,4); + *param_3 = uVar11; + piVar5 = piVar7; + param_3 = param_3 + 1; + piVar8 = piVar8 + 4; + pauVar9 = pauVar9 + 1; + } while (piVar7 != piVar4 + ((ulong)uVar3 + 1) * 4); +LAB_001c4d10: + return (uVar3 + 1) * 4; + } + fVar17 = *pfVar1; + fVar23 = pfVar1[1]; + if (3 < param_4) { + uVar3 = param_4 - 4U >> 2; + piVar5 = piVar4; + do { + piVar7 = piVar5 + 4; + auVar20 = NEON_scvtf(*pauVar9,4); + auVar18._0_4_ = *piVar5 + *piVar8; + auVar18._4_4_ = piVar5[1] + piVar8[1]; + auVar18._8_4_ = piVar5[2] + piVar8[2]; + auVar18._12_4_ = piVar5[3] + piVar8[3]; + auVar19 = NEON_scvtf(auVar18,4); + auVar15._0_8_ = + CONCAT44((int)(fVar10 + auVar20._4_4_ * fVar17 + auVar19._4_4_ * fVar23), + (int)(fVar10 + auVar20._0_4_ * fVar17 + auVar19._0_4_ * fVar23)); + auVar15._8_4_ = (int)(fVar10 + auVar20._8_4_ * fVar17 + auVar19._8_4_ * fVar23); + auVar15._12_4_ = (int)(fVar10 + auVar20._12_4_ * fVar17 + auVar19._12_4_ * fVar23); + uVar11 = NEON_sqxtn(auVar15._0_8_,auVar15,4); + *param_3 = uVar11; + piVar5 = piVar7; + param_3 = param_3 + 1; + piVar8 = piVar8 + 4; + pauVar9 = pauVar9 + 1; + } while (piVar7 != piVar4 + ((ulong)uVar3 + 1) * 4); + return (uVar3 + 1) * 4; + } + return 0; +} + + +================================================================== + +### FUNC 001c4f78 (2576 bytes) name=FUN_001c4f78 + +void FUN_001c4f78(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int *piVar1; + int iVar2; + int iVar3; + long *plVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + uint uVar13; + int iVar14; + int iVar15; + int iVar16; + bool bVar17; + bool bVar18; + bool bVar19; + char cVar20; + int iVar21; + int *piVar22; + undefined2 uVar23; + long lVar24; + undefined2 *puVar25; + undefined2 uVar26; + int *piVar27; + long lVar28; + undefined2 uVar29; + long lVar30; + long lVar31; + int *piVar32; + long lVar33; + undefined2 uVar34; + long *plVar35; + + uVar5 = *(uint *)(param_1 + 0xe4); + lVar24 = (long)(*(int *)(param_1 + 8) / 2); + lVar28 = lVar24 * 4; + iVar12 = *(int *)(*(long *)(param_1 + 0x20) + lVar28); + iVar6 = *(int *)(*(long *)(param_1 + 0x20) + lVar28 + 4); + if (iVar12 == 2) { + if (iVar6 != 1) { +LAB_001c595c: + bVar17 = false; + bVar18 = false; + bVar19 = bVar18; + goto LAB_001c5008; + } + bVar18 = true; + } + else if (iVar12 == -2) { + bVar18 = false; + if (iVar6 == 1) { + bVar17 = false; + bVar19 = true; + goto LAB_001c5008; + } + } + else { + if (iVar12 != 0) goto LAB_001c595c; + bVar18 = false; + if ((iVar6 + 1U & 0xfffffffd) == 0) { + bVar17 = true; + bVar19 = bVar18; + goto LAB_001c5008; + } + } + bVar17 = false; + bVar19 = false; +LAB_001c5008: + iVar7 = *(int *)(param_1 + 0xe0); + plVar35 = (long *)(param_2 + lVar24 * 8); + if (param_5 != 0) { + plVar4 = plVar35 + (ulong)(param_5 - 1) + 1; + iVar14 = param_6 + -3; + iVar15 = param_6 + -1; + iVar16 = param_6 + -4; + do { + while( true ) { + cVar20 = cv::checkHardwareSupport(100); + iVar21 = 0; + if (cVar20 != '\0') { + iVar21 = FUN_001c4c60(param_1 + 0x78,plVar35,param_3,param_6); + } + lVar24 = plVar35[-1]; + lVar33 = *plVar35; + lVar28 = plVar35[1]; + uVar26 = 0x7fff; + uVar23 = 0x7fff; + if ((uVar5 & 1) != 0) break; + if (bVar17) { + lVar33 = lVar28; + if (iVar6 < 0) { + lVar33 = lVar24; + lVar24 = lVar28; + } + if (iVar21 < iVar14) { + lVar28 = (long)iVar21; + puVar25 = (undefined2 *)(param_3 + lVar28 * 2); + piVar22 = (int *)(lVar24 + lVar28 * 4); + uVar13 = (uint)(iVar16 - iVar21) >> 2; + piVar27 = (int *)(lVar33 + lVar28 * 4); + do { + iVar2 = (*piVar27 - *piVar22) + iVar7; + iVar3 = (piVar27[1] - piVar22[1]) + iVar7; + uVar34 = 0x8000; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar26, iVar2 < 1)) { + uVar29 = uVar34; + } + *puVar25 = uVar29; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar26, iVar3 < 1)) { + uVar29 = uVar34; + } + piVar32 = piVar27 + 4; + iVar8 = piVar27[3]; + iVar3 = piVar22[3]; + iVar2 = (piVar27[2] - piVar22[2]) + iVar7; + puVar25[1] = uVar29; + iVar3 = (iVar8 - iVar3) + iVar7; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar23, iVar2 < 1)) { + uVar29 = uVar34; + } + puVar25[2] = uVar29; + piVar22 = piVar22 + 4; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar23, iVar3 < 1)) { + uVar29 = uVar34; + } + puVar25[3] = uVar29; + puVar25 = puVar25 + 4; + piVar27 = piVar32; + } while (piVar32 != (int *)(lVar33 + (lVar28 + 4 + (ulong)uVar13 * 4) * 4)); + iVar21 = iVar21 + 4 + uVar13 * 4; + } + if (iVar21 < param_6) { + lVar28 = 0; + lVar30 = (long)iVar21 * 4; + do { + iVar2 = (*(int *)(lVar33 + lVar30 + lVar28 * 4) - + *(int *)(lVar24 + lVar30 + lVar28 * 4)) + iVar7; + uVar26 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar26 = uVar23, iVar2 < 1)) { + uVar26 = 0x8000; + } + *(undefined2 *)(param_3 + (long)iVar21 * 2 + lVar28 * 2) = uVar26; + lVar28 = lVar28 + 1; + } while (lVar28 != (ulong)(uint)(iVar15 - iVar21) + 1); + } + } + else { + if (iVar21 < iVar14) { + lVar33 = (long)iVar21; + puVar25 = (undefined2 *)(param_3 + lVar33 * 2); + uVar13 = (uint)(iVar16 - iVar21) >> 2; + piVar22 = (int *)(lVar28 + lVar33 * 4); + piVar27 = (int *)(lVar24 + lVar33 * 4); + do { + iVar2 = iVar7 + (*piVar22 - *piVar27) * iVar6; + iVar3 = iVar7 + (piVar22[1] - piVar27[1]) * iVar6; + uVar34 = 0x8000; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar23, iVar2 < 1)) { + uVar29 = uVar34; + } + *puVar25 = uVar29; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar23, iVar3 < 1)) { + uVar29 = uVar34; + } + iVar2 = piVar27[2]; + piVar32 = piVar22 + 4; + iVar3 = piVar22[2]; + iVar8 = piVar22[3]; + iVar9 = piVar27[3]; + puVar25[1] = uVar29; + iVar2 = iVar7 + (iVar3 - iVar2) * iVar6; + iVar3 = iVar7 + (iVar8 - iVar9) * iVar6; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar23, iVar2 < 1)) { + uVar29 = uVar34; + } + puVar25[2] = uVar29; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar26, iVar3 < 1)) { + uVar29 = uVar34; + } + puVar25[3] = uVar29; + puVar25 = puVar25 + 4; + piVar22 = piVar32; + piVar27 = piVar27 + 4; + } while (piVar32 != (int *)(lVar28 + (lVar33 + 4 + (ulong)uVar13 * 4) * 4)); + iVar21 = iVar21 + 4 + uVar13 * 4; + } + if (iVar21 < param_6) { + lVar30 = (long)iVar21 * 4; + lVar33 = 0; + do { + iVar2 = iVar7 + (*(int *)(lVar28 + lVar30 + lVar33 * 4) - + *(int *)(lVar24 + lVar30 + lVar33 * 4)) * iVar6; + uVar23 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar23 = uVar26, iVar2 < 1)) { + uVar23 = 0x8000; + } + *(undefined2 *)(param_3 + (long)iVar21 * 2 + lVar33 * 2) = uVar23; + lVar33 = lVar33 + 1; + } while (lVar33 != (ulong)(uint)(iVar15 - iVar21) + 1); + } + } +joined_r0x001c55a8: + param_3 = param_3 + param_4; + plVar35 = plVar35 + 1; + if (plVar35 == plVar4) { + return; + } + } + if (bVar18) { + if (iVar21 < iVar14) { + lVar30 = (long)iVar21; + lVar31 = lVar30 * 4; + puVar25 = (undefined2 *)(param_3 + lVar30 * 2); + piVar22 = (int *)(lVar28 + lVar31); + uVar13 = (uint)(iVar16 - iVar21) >> 2; + piVar27 = (int *)(lVar24 + lVar31); + piVar32 = (int *)(lVar33 + lVar31); + do { + iVar2 = *piVar27 + *piVar32 * 2 + *piVar22 + iVar7; + iVar3 = piVar27[1] + piVar32[1] * 2 + piVar22[1] + iVar7; + uVar29 = 0x8000; + uVar23 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar23 = uVar26, iVar2 < 1)) { + uVar23 = uVar29; + } + *puVar25 = uVar23; + uVar23 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar23 = uVar26, iVar3 < 1)) { + uVar23 = uVar29; + } + piVar1 = piVar27 + 4; + iVar8 = piVar32[3]; + iVar9 = piVar27[3]; + iVar2 = piVar27[2] + piVar32[2] * 2 + piVar22[2] + iVar7; + iVar3 = piVar22[3]; + puVar25[1] = uVar23; + iVar3 = iVar9 + iVar8 * 2 + iVar3 + iVar7; + uVar23 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar23 = 0x7fff, iVar2 < 1)) { + uVar23 = uVar29; + } + puVar25[2] = uVar23; + piVar22 = piVar22 + 4; + uVar23 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar23 = 0x7fff, iVar3 < 1)) { + uVar23 = uVar29; + } + puVar25[3] = uVar23; + puVar25 = puVar25 + 4; + piVar27 = piVar1; + piVar32 = piVar32 + 4; + } while (piVar1 != (int *)(lVar24 + (lVar30 + 4 + (ulong)uVar13 * 4) * 4)); + iVar21 = iVar21 + 4 + uVar13 * 4; + } + if (iVar21 < param_6) { + lVar30 = 0; + lVar31 = (long)iVar21 * 4; + do { + iVar2 = *(int *)(lVar24 + lVar31 + lVar30 * 4) + + *(int *)(lVar33 + lVar31 + lVar30 * 4) * 2 + + *(int *)(lVar28 + lVar31 + lVar30 * 4) + iVar7; + uVar23 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar23 = uVar26, iVar2 < 1)) { + uVar23 = 0x8000; + } + *(undefined2 *)(param_3 + (long)iVar21 * 2 + lVar30 * 2) = uVar23; + lVar30 = lVar30 + 1; + } while (lVar30 != (ulong)(uint)(iVar15 - iVar21) + 1); + } + goto joined_r0x001c55a8; + } + if (!bVar19) { + if (iVar21 < iVar14) { + lVar30 = (long)iVar21; + lVar31 = lVar30 * 4; + puVar25 = (undefined2 *)(param_3 + lVar30 * 2); + uVar13 = (uint)(iVar16 - iVar21) >> 2; + piVar22 = (int *)(lVar24 + lVar31); + piVar27 = (int *)(lVar33 + lVar31); + piVar32 = (int *)(lVar28 + lVar31); + do { + iVar2 = iVar12 * *piVar27 + (*piVar22 + *piVar32) * iVar6 + iVar7; + iVar3 = iVar12 * piVar27[1] + (piVar22[1] + piVar32[1]) * iVar6 + iVar7; + uVar34 = 0x8000; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar23, iVar2 < 1)) { + uVar29 = uVar34; + } + *puVar25 = uVar29; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar23, iVar3 < 1)) { + uVar29 = uVar34; + } + iVar2 = piVar22[2]; + iVar8 = piVar32[2]; + piVar1 = piVar22 + 4; + iVar3 = piVar27[2]; + iVar9 = piVar22[3]; + iVar10 = piVar32[3]; + iVar11 = piVar27[3]; + puVar25[1] = uVar29; + iVar2 = iVar12 * iVar3 + (iVar2 + iVar8) * iVar6 + iVar7; + iVar3 = iVar12 * iVar11 + (iVar9 + iVar10) * iVar6 + iVar7; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar23, iVar2 < 1)) { + uVar29 = uVar34; + } + puVar25[2] = uVar29; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar26, iVar3 < 1)) { + uVar29 = uVar34; + } + puVar25[3] = uVar29; + puVar25 = puVar25 + 4; + piVar22 = piVar1; + piVar27 = piVar27 + 4; + piVar32 = piVar32 + 4; + } while (piVar1 != (int *)(lVar24 + (lVar30 + 4 + (ulong)uVar13 * 4) * 4)); + iVar21 = iVar21 + 4 + uVar13 * 4; + } + if (iVar21 < param_6) { + lVar30 = 0; + lVar31 = (long)iVar21 * 4; + do { + iVar2 = iVar12 * *(int *)(lVar33 + lVar31 + lVar30 * 4) + + (*(int *)(lVar24 + lVar31 + lVar30 * 4) + *(int *)(lVar28 + lVar31 + lVar30 * 4) + ) * iVar6 + iVar7; + uVar23 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar23 = uVar26, iVar2 < 1)) { + uVar23 = 0x8000; + } + *(undefined2 *)(param_3 + (long)iVar21 * 2 + lVar30 * 2) = uVar23; + lVar30 = lVar30 + 1; + } while (lVar30 != (ulong)(uint)(iVar15 - iVar21) + 1); + } + goto joined_r0x001c55a8; + } + if (iVar21 < iVar14) { + lVar30 = (long)iVar21; + lVar31 = lVar30 * 4; + puVar25 = (undefined2 *)(param_3 + lVar30 * 2); + piVar22 = (int *)(lVar28 + lVar31); + uVar13 = (uint)(iVar16 - iVar21) >> 2; + piVar27 = (int *)(lVar24 + lVar31); + piVar32 = (int *)(lVar33 + lVar31); + do { + iVar2 = *piVar27 + *piVar32 * -2 + *piVar22 + iVar7; + iVar3 = piVar27[1] + piVar32[1] * -2 + piVar22[1] + iVar7; + uVar34 = 0x8000; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar26, iVar2 < 1)) { + uVar29 = uVar34; + } + *puVar25 = uVar29; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar26, iVar3 < 1)) { + uVar29 = uVar34; + } + piVar1 = piVar27 + 4; + iVar8 = piVar32[3]; + iVar9 = piVar27[3]; + iVar2 = piVar27[2] + piVar32[2] * -2 + piVar22[2] + iVar7; + iVar3 = piVar22[3]; + puVar25[1] = uVar29; + iVar3 = iVar9 + iVar8 * -2 + iVar3 + iVar7; + uVar29 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar29 = uVar23, iVar2 < 1)) { + uVar29 = uVar34; + } + puVar25[2] = uVar29; + piVar22 = piVar22 + 4; + uVar29 = (short)iVar3; + if ((0xffff < iVar3 + 0x8000U) && (uVar29 = uVar23, iVar3 < 1)) { + uVar29 = uVar34; + } + puVar25[3] = uVar29; + puVar25 = puVar25 + 4; + piVar27 = piVar1; + piVar32 = piVar32 + 4; + } while (piVar1 != (int *)(lVar24 + (lVar30 + 4 + (ulong)uVar13 * 4) * 4)); + iVar21 = iVar21 + 4 + uVar13 * 4; + } + if (param_6 <= iVar21) goto joined_r0x001c55a8; + lVar30 = 0; + lVar31 = (long)iVar21 * 4; + do { + iVar2 = *(int *)(lVar24 + lVar31 + lVar30 * 4) + *(int *)(lVar33 + lVar31 + lVar30 * 4) * -2 + + *(int *)(lVar28 + lVar31 + lVar30 * 4) + iVar7; + uVar26 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar26 = uVar23, iVar2 < 1)) { + uVar26 = 0x8000; + } + *(undefined2 *)(param_3 + (long)iVar21 * 2 + lVar30 * 2) = uVar26; + lVar30 = lVar30 + 1; + } while (lVar30 != (ulong)(uint)(iVar15 - iVar21) + 1); + plVar35 = plVar35 + 1; + param_3 = param_3 + param_4; + } while (plVar35 != plVar4); + } + return; +} + + +================================================================== + +### FUNC 001c5988 (1684 bytes) name=FUN_001c5988 + +void FUN_001c5988(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int *piVar1; + long *plVar2; + long lVar3; + long lVar4; + int iVar5; + int iVar6; + int iVar7; + char cVar8; + int iVar9; + int *piVar10; + long *plVar11; + long *plVar12; + long lVar13; + undefined2 uVar14; + long *plVar15; + long *plVar16; + long lVar17; + int *piVar18; + undefined2 uVar19; + undefined2 *puVar20; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + long lVar25; + undefined2 uVar26; + int iVar27; + long lVar28; + long *plVar29; + uint uVar30; + + iVar6 = *(int *)(param_1 + 0xe0); + iVar5 = *(int *)(param_1 + 8) / 2; + piVar1 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar5 * 4); + plVar2 = (long *)(param_2 + (long)iVar5 * 8); + if ((*(uint *)(param_1 + 0xe4) & 1) == 0) { + if (param_5 != 0) { + plVar29 = plVar2 + -1; + do { + plVar11 = plVar29 + 1; + cVar8 = cv::checkHardwareSupport(100); + iVar9 = 0; + if (cVar8 != '\0') { + iVar9 = FUN_001c4c60(param_1 + 0x78,plVar11,param_3,param_6); + } + if (iVar9 < param_6 + -3) { + lVar28 = (long)iVar9; + lVar17 = lVar28 << 2; + uVar30 = (uint)((param_6 + -4) - iVar9) >> 2; + lVar13 = lVar28; + lVar25 = lVar28 + 4; + while( true ) { + iVar23 = iVar6; + iVar24 = iVar6; + iVar27 = iVar6; + iVar21 = iVar6; + if (0 < iVar5) { + plVar12 = plVar29; + plVar16 = plVar29 + 2; + piVar18 = piVar1; + do { + piVar18 = piVar18 + 1; + plVar15 = plVar12 + -1; + lVar3 = *plVar12 + lVar17; + iVar22 = *piVar18; + lVar4 = *plVar16 + lVar17; + iVar21 = iVar21 + (*(int *)(*plVar16 + lVar17) - *(int *)(*plVar12 + lVar17)) * + iVar22; + iVar27 = iVar27 + (*(int *)(lVar4 + 4) - *(int *)(lVar3 + 4)) * iVar22; + iVar24 = iVar24 + (*(int *)(lVar4 + 8) - *(int *)(lVar3 + 8)) * iVar22; + iVar23 = iVar23 + (*(int *)(lVar4 + 0xc) - *(int *)(lVar3 + 0xc)) * iVar22; + plVar12 = plVar15; + plVar16 = plVar16 + 1; + } while (plVar29 + (-1 - (ulong)(iVar5 - 1)) != plVar15); + } + lVar13 = lVar13 * 2; + uVar19 = 0x8000; + uVar26 = 0x7fff; + uVar14 = (short)iVar21; + if ((0xffff < iVar21 + 0x8000U) && (uVar14 = uVar26, iVar21 < 1)) { + uVar14 = uVar19; + } + *(undefined2 *)(param_3 + lVar13) = uVar14; + uVar14 = (short)iVar27; + if ((0xffff < iVar27 + 0x8000U) && (uVar14 = uVar26, iVar27 < 1)) { + uVar14 = uVar19; + } + *(undefined2 *)(param_3 + lVar13 + 2) = uVar14; + uVar14 = (short)iVar24; + if ((0xffff < iVar24 + 0x8000U) && (uVar14 = uVar26, iVar24 < 1)) { + uVar14 = uVar19; + } + *(undefined2 *)(param_3 + lVar13 + 4) = uVar14; + uVar14 = (short)iVar23; + if ((0xffff < iVar23 + 0x8000U) && (uVar14 = uVar26, iVar23 < 1)) { + uVar14 = uVar19; + } + *(undefined2 *)(param_3 + lVar13 + 6) = uVar14; + lVar17 = lVar17 + 0x10; + if (lVar25 == lVar28 + 4 + (ulong)uVar30 * 4) break; + lVar13 = lVar25; + lVar25 = lVar25 + 4; + } + iVar9 = iVar9 + 4 + uVar30 * 4; + } + if (iVar9 < param_6) { + lVar28 = (long)iVar9; + lVar17 = lVar28 << 2; + lVar13 = lVar28; + lVar25 = lVar28 + 1; + while( true ) { + iVar21 = iVar6; + if (0 < iVar5) { + plVar12 = plVar29 + 2; + plVar16 = plVar29; + piVar18 = piVar1; + do { + piVar18 = piVar18 + 1; + plVar15 = plVar12 + 1; + iVar21 = iVar21 + (*(int *)(*plVar12 + lVar17) - *(int *)(*plVar16 + lVar17)) * + *piVar18; + plVar12 = plVar15; + plVar16 = plVar16 + -1; + } while (plVar15 != plVar29 + (ulong)(iVar5 - 1) + 3); + } + uVar14 = (undefined2)iVar21; + if ((0xffff < iVar21 + 0x8000U) && (uVar14 = 0x7fff, iVar21 < 1)) { + uVar14 = 0x8000; + } + *(undefined2 *)(param_3 + lVar13 * 2) = uVar14; + lVar17 = lVar17 + 4; + if (lVar25 == lVar28 + 1 + (ulong)(uint)((param_6 + -1) - iVar9)) break; + lVar13 = lVar25; + lVar25 = lVar25 + 1; + } + } + param_3 = param_3 + param_4; + plVar29 = plVar11; + } while (plVar11 != plVar2 + (param_5 - 1)); + } + } + else if (param_5 != 0) { + cVar8 = cv::checkHardwareSupport(100); + plVar11 = plVar2; + plVar29 = plVar2 + -1; + while( true ) { + plVar12 = plVar11; + iVar9 = 0; + if (cVar8 != '\0') { + iVar9 = FUN_001c4c60(param_1 + 0x78,plVar12,param_3,param_6); + } + if (iVar9 < param_6 + -3) { + lVar13 = plVar29[1]; + iVar21 = *piVar1; + lVar17 = (long)iVar9; + piVar18 = (int *)(lVar13 + lVar17 * 4); + puVar20 = (undefined2 *)(param_3 + lVar17 * 2); + uVar30 = (uint)((param_6 + -4) - iVar9) >> 2; + do { + iVar27 = iVar6 + iVar21 * *piVar18; + iVar24 = iVar6 + iVar21 * piVar18[1]; + iVar23 = iVar6 + iVar21 * piVar18[2]; + iVar22 = iVar6 + iVar21 * piVar18[3]; + if (0 < iVar5) { + plVar11 = plVar29 + 2; + plVar16 = plVar29; + piVar10 = piVar1; + do { + piVar10 = piVar10 + 1; + plVar15 = plVar16 + -1; + lVar25 = *plVar16 - lVar13; + iVar7 = *piVar10; + lVar28 = *plVar11 - lVar13; + iVar27 = iVar27 + (*(int *)((long)piVar18 + (*plVar11 - lVar13)) + + *(int *)((long)piVar18 + (*plVar16 - lVar13))) * iVar7; + iVar24 = iVar24 + (*(int *)((long)piVar18 + lVar28 + 4) + + *(int *)((long)piVar18 + lVar25 + 4)) * iVar7; + iVar23 = iVar23 + (*(int *)((long)piVar18 + lVar28 + 8) + + *(int *)((long)piVar18 + lVar25 + 8)) * iVar7; + iVar22 = iVar22 + (*(int *)((long)piVar18 + lVar28 + 0xc) + + *(int *)((long)piVar18 + lVar25 + 0xc)) * iVar7; + plVar11 = plVar11 + 1; + plVar16 = plVar15; + } while (plVar15 != plVar29 + (-1 - (ulong)(iVar5 - 1))); + } + uVar19 = 0x8000; + uVar26 = 0x7fff; + uVar14 = (short)iVar27; + if ((0xffff < iVar27 + 0x8000U) && (uVar14 = uVar26, iVar27 < 1)) { + uVar14 = uVar19; + } + *puVar20 = uVar14; + uVar14 = (short)iVar24; + if ((0xffff < iVar24 + 0x8000U) && (uVar14 = uVar26, iVar24 < 1)) { + uVar14 = uVar19; + } + puVar20[1] = uVar14; + uVar14 = (short)iVar23; + if ((0xffff < iVar23 + 0x8000U) && (uVar14 = uVar26, iVar23 < 1)) { + uVar14 = uVar19; + } + puVar20[2] = uVar14; + uVar14 = (short)iVar22; + if ((0xffff < iVar22 + 0x8000U) && (uVar14 = uVar26, iVar22 < 1)) { + uVar14 = uVar19; + } + piVar18 = piVar18 + 4; + puVar20[3] = uVar14; + puVar20 = puVar20 + 4; + } while (piVar18 != (int *)(lVar13 + (lVar17 + 4 + (ulong)uVar30 * 4) * 4)); + iVar9 = iVar9 + 4 + uVar30 * 4; + } + if (iVar9 < param_6) { + lVar13 = (long)iVar9; + iVar21 = *piVar1; + lVar25 = plVar29[1]; + lVar17 = lVar13 << 2; + puVar20 = (undefined2 *)(param_3 + lVar13 * 2); + do { + iVar27 = iVar6 + iVar21 * *(int *)(lVar25 + lVar17); + if (0 < iVar5) { + plVar11 = plVar29 + 2; + plVar16 = plVar29; + piVar18 = piVar1; + do { + piVar18 = piVar18 + 1; + plVar15 = plVar11 + 1; + iVar27 = iVar27 + (*(int *)(*plVar11 + lVar17) + *(int *)(*plVar16 + lVar17)) * + *piVar18; + plVar11 = plVar15; + plVar16 = plVar16 + -1; + } while (plVar29 + (ulong)(iVar5 - 1) + 3 != plVar15); + } + uVar14 = (undefined2)iVar27; + if ((0xffff < iVar27 + 0x8000U) && (uVar14 = 0x7fff, iVar27 < 1)) { + uVar14 = 0x8000; + } + lVar17 = lVar17 + 4; + *puVar20 = uVar14; + puVar20 = puVar20 + 1; + } while (lVar17 != (lVar13 + 1 + (ulong)(uint)((param_6 + -1) - iVar9)) * 4); + } + param_3 = param_3 + param_4; + if (plVar2 + (param_5 - 1) == plVar12) break; + cVar8 = cv::checkHardwareSupport(100); + plVar11 = plVar12 + 1; + plVar29 = plVar12; + } + } + return; +} + + +================================================================== + +### FUNC 001c601c (716 bytes) name=FUN_001c601c + +void FUN_001c601c(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + int *piVar6; + char cVar7; + int iVar8; + int *piVar9; + int iVar10; + long lVar11; + undefined2 uVar12; + int iVar13; + long *plVar14; + long *plVar15; + undefined2 *puVar16; + long lVar17; + int iVar18; + int iVar19; + long lVar20; + undefined2 uVar21; + long *plVar22; + int *piVar23; + undefined2 uVar24; + long *plVar25; + + piVar23 = *(int **)(param_1 + 0x20); + iVar1 = *(int *)(param_1 + 0xe0); + iVar2 = *(int *)(param_1 + 8); + if (param_5 != 0) { + plVar22 = (long *)(param_2 + 8); + plVar25 = (long *)(param_2 + ((ulong)(iVar2 - 2) + 2) * 8); + do { + cVar7 = cv::checkHardwareSupport(100); + iVar8 = 0; + if (cVar7 != '\0') { + iVar8 = FUN_001c4c60(param_1 + 0x78,plVar22 + -1,param_3,param_6); + } + uVar21 = 0x7fff; + uVar24 = 0x8000; + if (iVar8 < param_6 + -3) { + lVar11 = (long)iVar8; + lVar20 = plVar22[-1]; + iVar3 = *piVar23; + puVar16 = (undefined2 *)(param_3 + lVar11 * 2); + uVar5 = (uint)((param_6 + -4) - iVar8) >> 2; + piVar9 = (int *)(lVar20 + lVar11 * 4); + do { + iVar13 = iVar1 + iVar3 * *piVar9; + iVar10 = iVar1 + iVar3 * piVar9[1]; + iVar19 = iVar1 + iVar3 * piVar9[2]; + iVar18 = iVar1 + iVar3 * piVar9[3]; + plVar14 = plVar22; + piVar6 = piVar23; + if (1 < iVar2) { + do { + plVar15 = plVar14 + 1; + iVar4 = piVar6[1]; + lVar17 = *plVar14 - lVar20; + iVar13 = iVar13 + iVar4 * *(int *)((long)piVar9 + (*plVar14 - lVar20)); + iVar10 = iVar10 + iVar4 * *(int *)((long)piVar9 + lVar17 + 4); + iVar19 = iVar19 + iVar4 * *(int *)((long)piVar9 + lVar17 + 8); + iVar18 = iVar18 + iVar4 * *(int *)((long)piVar9 + lVar17 + 0xc); + plVar14 = plVar15; + piVar6 = piVar6 + 1; + } while (plVar25 != plVar15); + } + uVar12 = (short)iVar13; + if ((0xffff < iVar13 + 0x8000U) && (uVar12 = uVar21, iVar13 < 1)) { + uVar12 = uVar24; + } + *puVar16 = uVar12; + uVar12 = (short)iVar10; + if ((0xffff < iVar10 + 0x8000U) && (uVar12 = uVar21, iVar10 < 1)) { + uVar12 = uVar24; + } + puVar16[1] = uVar12; + uVar12 = (short)iVar19; + if ((0xffff < iVar19 + 0x8000U) && (uVar12 = 0x7fff, iVar19 < 1)) { + uVar12 = 0x8000; + } + puVar16[2] = uVar12; + uVar12 = (short)iVar18; + if ((0xffff < iVar18 + 0x8000U) && (uVar12 = 0x7fff, iVar18 < 1)) { + uVar12 = 0x8000; + } + piVar9 = piVar9 + 4; + puVar16[3] = uVar12; + puVar16 = puVar16 + 4; + } while (piVar9 != (int *)(lVar20 + (lVar11 + 4 + (ulong)uVar5 * 4) * 4)); + iVar8 = iVar8 + 4 + uVar5 * 4; + } + if (iVar8 < param_6) { + lVar20 = (long)iVar8; + iVar3 = *piVar23; + lVar17 = plVar22[-1]; + lVar11 = lVar20 << 2; + puVar16 = (undefined2 *)(param_3 + lVar20 * 2); + do { + iVar13 = iVar1 + iVar3 * *(int *)(lVar17 + lVar11); + plVar14 = plVar22; + piVar9 = piVar23; + if (1 < iVar2) { + do { + plVar15 = plVar14 + 1; + iVar13 = iVar13 + piVar9[1] * *(int *)(*plVar14 + lVar11); + plVar14 = plVar15; + piVar9 = piVar9 + 1; + } while (plVar25 != plVar15); + } + uVar12 = (short)iVar13; + if ((0xffff < iVar13 + 0x8000U) && (uVar12 = uVar21, iVar13 < 1)) { + uVar12 = uVar24; + } + lVar11 = lVar11 + 4; + *puVar16 = uVar12; + puVar16 = puVar16 + 1; + } while (lVar11 != (lVar20 + 1 + (ulong)(uint)((param_6 + -1) - iVar8)) * 4); + } + plVar22 = plVar22 + 1; + plVar25 = plVar25 + 1; + param_3 = param_3 + param_4; + } while (plVar22 != (long *)(param_2 + ((ulong)(param_5 - 1) + 2) * 8)); + } + return; +} + + +================================================================== + +### FUNC 001c62e8 (76 bytes) name=FUN_001c62e8 + +void FUN_001c62e8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3f10; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6334 (76 bytes) name=FUN_001c6334 + +void FUN_001c6334(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3e50; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6380 (76 bytes) name=FUN_001c6380 + +void FUN_001c6380(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3e20; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c63cc (76 bytes) name=FUN_001c63cc + +void FUN_001c63cc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3df0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6418 (76 bytes) name=FUN_001c6418 + +void FUN_001c6418(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3dc0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6464 (76 bytes) name=FUN_001c6464 + +void FUN_001c6464(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3eb0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c64b0 (76 bytes) name=FUN_001c64b0 + +void FUN_001c64b0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3e80; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c64fc (76 bytes) name=FUN_001c64fc + +void FUN_001c64fc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3ee0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6548 (76 bytes) name=FUN_001c6548 + +void FUN_001c6548(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d90; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6594 (76 bytes) name=FUN_001c6594 + +void FUN_001c6594(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d60; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c65e0 (76 bytes) name=FUN_001c65e0 + +void FUN_001c65e0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d30; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c662c (76 bytes) name=FUN_001c662c + +void FUN_001c662c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3d00; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6678 (76 bytes) name=FUN_001c6678 + +void FUN_001c6678(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3cd0; + if ((void *)param_1[9] != (void *)0x0) { + operator_delete((void *)param_1[9]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c66c4 (372 bytes) name=FUN_001c66c4 + +void FUN_001c66c4(long *param_1,ulong param_2) + +{ + ulong uVar1; + void *__dest; + ulong uVar2; + void *__src; + long lVar3; + size_t sVar4; + void *__dest_00; + + __src = (void *)param_1[1]; + lVar3 = (long)__src - *param_1; + uVar2 = lVar3 >> 3; + if (param_2 <= uVar2) { + if (uVar2 <= param_2) { + return; + } + param_1[1] = *param_1 + param_2 * 8; + return; + } + param_2 = param_2 - uVar2; + if (param_2 == 0) { + return; + } + if (param_2 <= (ulong)(param_1[2] - (long)__src >> 3)) { + memset(__src,0,param_2 * 8); + param_1[1] = param_1[1] + param_2 * 8; + return; + } + if (0x1fffffffffffffff - uVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = param_2; + if (param_2 < uVar2) { + uVar1 = uVar2; + } + uVar1 = uVar1 + uVar2; + if ((uVar1 < uVar2) || (0x1fffffffffffffff < uVar1)) { + uVar2 = 0xfffffffffffffff8; + } + else { + uVar2 = 0; + __dest_00 = (void *)0x0; + if (uVar1 == 0) goto LAB_001c678c; + uVar2 = uVar1 * 8; + } + __dest_00 = operator_new(uVar2); +LAB_001c678c: + memset((void *)((long)__dest_00 + lVar3),0,param_2 * 8); + sVar4 = (long)__src - *param_1; + if ((long)sVar4 >> 3 != 0) { + memmove(__dest_00,(void *)*param_1,sVar4); + } + __dest = (void *)((long)__dest_00 + param_2 * 8 + sVar4); + sVar4 = param_1[1] - (long)__src; + if ((long)sVar4 >> 3 != 0) { + memmove(__dest,__src,sVar4); + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)__dest_00; + param_1[1] = (long)__dest + sVar4; + param_1[2] = (long)__dest_00 + uVar2; + return; +} + + +================================================================== + +### FUNC 001c6838 (284 bytes) name=FUN_001c6838 + +void FUN_001c6838(undefined8 *param_1) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + long *plVar5; + + plVar5 = (long *)param_1[0x24]; + *param_1 = &PTR_FUN_004f3450; + plVar1 = plVar5 + 1; + if (plVar5 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar5 + 0x10))(); + } + } + plVar5 = (long *)param_1[0x22]; + plVar1 = plVar5 + 1; + if (plVar5 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar5 + 0x10))(); + } + } + plVar5 = (long *)param_1[0x20]; + plVar1 = plVar5 + 1; + if (plVar5 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar5 + 0x10))(); + } + } + if ((void *)param_1[0x1d] != (void *)0x0) { + operator_delete((void *)param_1[0x1d]); + } + if ((void *)param_1[0x17] != (void *)0x0) { + operator_delete((void *)param_1[0x17]); + } + if ((void *)param_1[0x14] != (void *)0x0) { + operator_delete((void *)param_1[0x14]); + } + if ((void *)param_1[0x11] != (void *)0x0) { + operator_delete((void *)param_1[0x11]); + } + if ((void *)param_1[0xe] != (void *)0x0) { + operator_delete((void *)param_1[0xe]); + } + if ((void *)param_1[10] != (void *)0x0) { + operator_delete((void *)param_1[10]); + return; + } + return; +} + + +================================================================== + +### FUNC 001c6a0c (32 bytes) name=FUN_001c6a0c + +void FUN_001c6a0c(void *param_1) + +{ + FUN_001c6838(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6a2c (132 bytes) name=FUN_001c6a2c + +void FUN_001c6a2c(long *param_1) + +{ + long *plVar1; + + plVar1 = (long *)param_1[2]; + if (plVar1 != (long *)0x0) { + if (*(code **)(*plVar1 + 8) != FUN_001c6a0c) { + (**(code **)(*plVar1 + 8))(plVar1); + (**(code **)(*param_1 + 8))(param_1); + return; + } + FUN_001c6838(); + operator_delete(plVar1); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001c6ab0 (224 bytes) name=operator= + +/* cv::Mat::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&) */ + +Mat * __thiscall cv::Mat::operator=(Mat *this,Mat *param_1) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + undefined8 *puVar6; + undefined8 *puVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + + if (this != param_1) { + if (*(long *)(param_1 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x38) + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + release(this); + *(undefined4 *)this = *(undefined4 *)param_1; + if ((*(int *)(this + 4) < 3) && (iVar2 = *(int *)(param_1 + 4), iVar2 < 3)) { + puVar7 = *(undefined8 **)(param_1 + 0x48); + puVar6 = *(undefined8 **)(this + 0x48); + uVar3 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(this + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(this + 4) = iVar2; + *(undefined4 *)(this + 8) = uVar3; + *puVar6 = *puVar7; + puVar6[1] = puVar7[1]; + } + else { + copySize(this,param_1); + } + uVar12 = *(undefined8 *)(param_1 + 0x10); + uVar11 = *(undefined8 *)(param_1 + 0x28); + uVar10 = *(undefined8 *)(param_1 + 0x20); + uVar9 = *(undefined8 *)(param_1 + 0x38); + uVar8 = *(undefined8 *)(param_1 + 0x30); + *(undefined8 *)(this + 0x18) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = uVar12; + *(undefined8 *)(this + 0x28) = uVar11; + *(undefined8 *)(this + 0x20) = uVar10; + *(undefined8 *)(this + 0x38) = uVar9; + *(undefined8 *)(this + 0x30) = uVar8; + } + return this; +} + + +================================================================== + +### FUNC 001c6b90 (76 bytes) name=FUN_001c6b90 + +void FUN_001c6b90(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3700; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6bdc (80 bytes) name=FUN_001c6bdc + +void FUN_001c6bdc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3700; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6c2c (76 bytes) name=FUN_001c6c2c + +void FUN_001c6c2c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f36d0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6c78 (80 bytes) name=FUN_001c6c78 + +void FUN_001c6c78(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f36d0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6cc8 (76 bytes) name=FUN_001c6cc8 + +void FUN_001c6cc8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f36a0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6d14 (80 bytes) name=FUN_001c6d14 + +void FUN_001c6d14(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f36a0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6d64 (76 bytes) name=FUN_001c6d64 + +void FUN_001c6d64(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3670; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6db0 (80 bytes) name=FUN_001c6db0 + +void FUN_001c6db0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3670; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6e00 (76 bytes) name=FUN_001c6e00 + +void FUN_001c6e00(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3640; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6e4c (80 bytes) name=FUN_001c6e4c + +void FUN_001c6e4c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3640; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6e9c (76 bytes) name=FUN_001c6e9c + +void FUN_001c6e9c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3610; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6ee8 (80 bytes) name=FUN_001c6ee8 + +void FUN_001c6ee8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3610; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6f38 (76 bytes) name=FUN_001c6f38 + +void FUN_001c6f38(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f35e0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c6f84 (80 bytes) name=FUN_001c6f84 + +void FUN_001c6f84(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f35e0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c6fd4 (76 bytes) name=FUN_001c6fd4 + +void FUN_001c6fd4(undefined8 *param_1) + +{ + *param_1 = &DAT_004f35b0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7020 (80 bytes) name=FUN_001c7020 + +void FUN_001c7020(undefined8 *param_1) + +{ + *param_1 = &DAT_004f35b0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7070 (76 bytes) name=FUN_001c7070 + +void FUN_001c7070(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3580; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c70bc (80 bytes) name=FUN_001c70bc + +void FUN_001c70bc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3580; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c710c (76 bytes) name=FUN_001c710c + +void FUN_001c710c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3550; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7158 (80 bytes) name=FUN_001c7158 + +void FUN_001c7158(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3550; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c71a8 (76 bytes) name=FUN_001c71a8 + +void FUN_001c71a8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38b0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c71f4 (80 bytes) name=FUN_001c71f4 + +void FUN_001c71f4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38b0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7244 (76 bytes) name=FUN_001c7244 + +void FUN_001c7244(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38b0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7290 (80 bytes) name=FUN_001c7290 + +void FUN_001c7290(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38b0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c72e0 (76 bytes) name=FUN_001c72e0 + +void FUN_001c72e0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3880; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c732c (80 bytes) name=FUN_001c732c + +void FUN_001c732c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3880; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c737c (76 bytes) name=FUN_001c737c + +void FUN_001c737c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3880; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c73c8 (80 bytes) name=FUN_001c73c8 + +void FUN_001c73c8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3880; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7418 (76 bytes) name=FUN_001c7418 + +void FUN_001c7418(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3850; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7464 (80 bytes) name=FUN_001c7464 + +void FUN_001c7464(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3850; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c74b4 (76 bytes) name=FUN_001c74b4 + +void FUN_001c74b4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3850; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7500 (80 bytes) name=FUN_001c7500 + +void FUN_001c7500(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3850; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7550 (76 bytes) name=FUN_001c7550 + +void FUN_001c7550(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3b50; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c759c (80 bytes) name=FUN_001c759c + +void FUN_001c759c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3b50; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c75ec (76 bytes) name=FUN_001c75ec + +void FUN_001c75ec(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3b50; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7638 (80 bytes) name=FUN_001c7638 + +void FUN_001c7638(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3b50; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7688 (76 bytes) name=FUN_001c7688 + +void FUN_001c7688(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37f0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c76d4 (80 bytes) name=FUN_001c76d4 + +void FUN_001c76d4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37f0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7724 (76 bytes) name=FUN_001c7724 + +void FUN_001c7724(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37f0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7770 (80 bytes) name=FUN_001c7770 + +void FUN_001c7770(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37f0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c77c0 (76 bytes) name=FUN_001c77c0 + +void FUN_001c77c0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37c0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c780c (80 bytes) name=FUN_001c780c + +void FUN_001c780c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37c0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c785c (76 bytes) name=FUN_001c785c + +void FUN_001c785c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37c0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c78a8 (80 bytes) name=FUN_001c78a8 + +void FUN_001c78a8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f37c0; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c78f8 (76 bytes) name=FUN_001c78f8 + +void FUN_001c78f8(undefined8 *param_1) + +{ + *param_1 = &DAT_004f3790; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7944 (80 bytes) name=FUN_001c7944 + +void FUN_001c7944(undefined8 *param_1) + +{ + *param_1 = &DAT_004f3790; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7994 (76 bytes) name=FUN_001c7994 + +void FUN_001c7994(undefined8 *param_1) + +{ + *param_1 = &DAT_004f3790; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c79e0 (80 bytes) name=FUN_001c79e0 + +void FUN_001c79e0(undefined8 *param_1) + +{ + *param_1 = &DAT_004f3790; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7a30 (76 bytes) name=FUN_001c7a30 + +void FUN_001c7a30(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3760; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7a7c (80 bytes) name=FUN_001c7a7c + +void FUN_001c7a7c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3760; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7acc (76 bytes) name=FUN_001c7acc + +void FUN_001c7acc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3760; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7b18 (80 bytes) name=FUN_001c7b18 + +void FUN_001c7b18(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3760; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7b68 (76 bytes) name=FUN_001c7b68 + +void FUN_001c7b68(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3a00; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7bb4 (80 bytes) name=FUN_001c7bb4 + +void FUN_001c7bb4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3a00; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7c04 (76 bytes) name=FUN_001c7c04 + +void FUN_001c7c04(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3a00; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7c50 (80 bytes) name=FUN_001c7c50 + +void FUN_001c7c50(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3a00; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7ca0 (76 bytes) name=FUN_001c7ca0 + +void FUN_001c7ca0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3a00; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7cec (80 bytes) name=FUN_001c7cec + +void FUN_001c7cec(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3a00; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7d3c (76 bytes) name=FUN_001c7d3c + +void FUN_001c7d3c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3820; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7d88 (80 bytes) name=FUN_001c7d88 + +void FUN_001c7d88(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3820; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7dd8 (76 bytes) name=FUN_001c7dd8 + +void FUN_001c7dd8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3730; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7e24 (80 bytes) name=FUN_001c7e24 + +void FUN_001c7e24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3730; + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c7e74 (108 bytes) name=FUN_001c7e74 + +void FUN_001c7e74(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3490; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7f0c (108 bytes) name=FUN_001c7f0c + +void FUN_001c7f0c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f34f0; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c7fa4 (108 bytes) name=FUN_001c7fa4 + +void FUN_001c7fa4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38e0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c803c (108 bytes) name=FUN_001c803c + +void FUN_001c803c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3970; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c80d4 (108 bytes) name=FUN_001c80d4 + +void FUN_001c80d4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3bb0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c816c (108 bytes) name=FUN_001c816c + +void FUN_001c816c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3bb0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c8204 (108 bytes) name=FUN_001c8204 + +void FUN_001c8204(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f34f0; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c829c (108 bytes) name=FUN_001c829c + +void FUN_001c829c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3490; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c8334 (112 bytes) name=FUN_001c8334 + +void FUN_001c8334(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3bb0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c83d0 (112 bytes) name=FUN_001c83d0 + +void FUN_001c83d0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3490; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c846c (112 bytes) name=FUN_001c846c + +void FUN_001c846c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f34f0; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8508 (112 bytes) name=FUN_001c8508 + +void FUN_001c8508(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f34f0; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c85a4 (112 bytes) name=FUN_001c85a4 + +void FUN_001c85a4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3bb0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8640 (112 bytes) name=FUN_001c8640 + +void FUN_001c8640(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3490; + cv::Mat::release((Mat *)(param_1 + 0xe)); + if ((undefined8 *)param_1[0x17] != param_1 + 0x18) { + cv::fastFree((undefined8 *)param_1[0x17]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c86dc (108 bytes) name=FUN_001c86dc + +void FUN_001c86dc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38e0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c8774 (108 bytes) name=FUN_001c8774 + +void FUN_001c8774(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3970; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c880c (108 bytes) name=FUN_001c880c + +void FUN_001c880c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3970; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c88a4 (108 bytes) name=FUN_001c88a4 + +void FUN_001c88a4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38e0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + return; +} + + +================================================================== + +### FUNC 001c893c (112 bytes) name=FUN_001c893c + +void FUN_001c893c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3970; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c89d8 (112 bytes) name=FUN_001c89d8 + +void FUN_001c89d8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38e0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8a74 (112 bytes) name=FUN_001c8a74 + +void FUN_001c8a74(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3970; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8b10 (112 bytes) name=FUN_001c8b10 + +void FUN_001c8b10(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38e0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8bac (112 bytes) name=FUN_001c8bac + +void FUN_001c8bac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3970; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8c48 (112 bytes) name=FUN_001c8c48 + +void FUN_001c8c48(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f38e0; + cv::Mat::release((Mat *)(param_1 + 0x10)); + if ((undefined8 *)param_1[0x19] != param_1 + 0x1a) { + cv::fastFree((undefined8 *)param_1[0x19]); + } + cv::Mat::release((Mat *)(param_1 + 2)); + if ((undefined8 *)param_1[0xb] != param_1 + 0xc) { + cv::fastFree((undefined8 *)param_1[0xb]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001c8ce4 (28 bytes) name=FUN_001c8ce4 + +void FUN_001c8ce4(undefined8 *param_1) + +{ + *(undefined4 *)((long)param_1 + 0xc) = 0xffffffff; + *param_1 = &DAT_004fac70; + *(undefined4 *)(param_1 + 1) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 001c8d00 (4 bytes) name=FUN_001c8d00 + +void FUN_001c8d00(void) + +{ + return; +} + + +================================================================== + +### FUNC 001c8d04 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001c8d08 (28 bytes) name=FUN_001c8d08 + +void FUN_001c8d08(undefined8 *param_1) + +{ + *(undefined4 *)((long)param_1 + 0xc) = 0xffffffff; + *param_1 = &DAT_004faca0; + *(undefined4 *)(param_1 + 1) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 001c8d24 (4 bytes) name=FUN_001c8d24 + +void FUN_001c8d24(void) + +{ + return; +} + + +================================================================== + +### FUNC 001c8d28 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001c8d2c (24 bytes) name=FUN_001c8d2c + +void FUN_001c8d2c(undefined8 *param_1) + +{ + *param_1 = &DAT_004facd0; + param_1[2] = 0xffffffffffffffff; + param_1[1] = 0xffffffffffffffff; + return; +} + + +================================================================== + +### FUNC 001c8d44 (4 bytes) name=FUN_001c8d44 + +void FUN_001c8d44(void) + +{ + return; +} + + +================================================================== + +### FUNC 001c8d48 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001c8d4c (212 bytes) name=FUN_001c8d4c + +void FUN_001c8d4c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3450; + *(undefined4 *)((long)param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)(param_1 + 6) = 0; + *(undefined4 *)((long)param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 7) = 0; + *(undefined4 *)((long)param_1 + 0x3c) = 0; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x18] = 0; + param_1[0x19] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + param_1[0x24] = 0; + param_1[0x25] = 0; + *(undefined4 *)(param_1 + 2) = 0xffffffff; + *(undefined4 *)((long)param_1 + 0xc) = 0xffffffff; + *(undefined4 *)(param_1 + 1) = 0xffffffff; + *(undefined4 *)((long)param_1 + 0x4c) = 1; + *(undefined4 *)(param_1 + 9) = 1; + *(undefined4 *)((long)param_1 + 0xe4) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)((long)param_1 + 0xdc) = 0; + *(undefined4 *)(param_1 + 0x1b) = 0; + *(undefined4 *)((long)param_1 + 0xd4) = 0; + *(undefined4 *)(param_1 + 0x1a) = 0; + *(undefined4 *)((long)param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 5) = 0xffffffff; + *(undefined4 *)((long)param_1 + 0x2c) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 001c8e20 (24 bytes) name=FUN_001c8e20 + +int FUN_001c8e20(long param_1) + +{ + return (*(int *)(param_1 + 0xdc) - *(int *)(param_1 + 0xd4)) - *(int *)(param_1 + 0xe0); +} + + +================================================================== + +### FUNC 001c8e38 (16 bytes) name=FUN_001c8e38 + +int FUN_001c8e38(long param_1) + +{ + return *(int *)(param_1 + 0x3c) - *(int *)(param_1 + 0xe4); +} + + +================================================================== + +### FUNC 001c8e50 (848 bytes) name=FUN_001c8e50 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint FUN_001c8e50(_InputArray *param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + uint uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + long lVar9; + int iVar10; + uint uVar11; + char *pcVar12; + long lVar13; + uint uVar14; + Mat *pMVar15; + long lVar16; + long lVar17; + double __x; + double dVar18; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + undefined4 local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar10 = cv::_InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar15; + local_5c = *(undefined4 *)(pMVar15 + 4); + local_58 = *(int *)(pMVar15 + 8); + local_54 = *(int *)(pMVar15 + 0xc); + local_50 = *(undefined8 *)(pMVar15 + 0x10); + local_48 = *(undefined8 *)(pMVar15 + 0x18); + local_40 = *(undefined8 *)(pMVar15 + 0x20); + local_38 = *(undefined8 *)(pMVar15 + 0x28); + local_30 = *(undefined8 *)(pMVar15 + 0x30); + local_28 = *(long *)(pMVar15 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar15 + 0x48); + local_8 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_5c = 0; + cv::Mat::copySize((Mat *)&local_60,pMVar15); + } + } + else { + cv::_InputArray::getMat_((int)param_1); + } + if ((local_60 >> 3 & 0x1ff) != 0) { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_d8,0x17); + cVar4 = s__kernel_channels______1_004430e8[0x16]; + uVar8 = s__kernel_channels______1_004430e8._20_2_; + uVar7 = s__kernel_channels______1_004430e8._8_8_; + uVar6 = s__kernel_channels______1_004430e8._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s__kernel_channels______1_004430e8._16_4_; + *(undefined2 *)(pcVar12 + 0x14) = uVar8; + pcVar12[0x16] = cVar4; + *(undefined8 *)pcVar12 = uVar6; + *(undefined8 *)(pcVar12 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_d8,"int cv::getKernelType(cv::InputArray, cv::Point)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x1ac); + cv::String::deallocate((String *)&local_d8); + } + local_78 = &local_70; + local_80 = &uStack_b8; + iVar10 = local_58 * local_54; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + uStack_b8 = _UNK_001c9208; + local_c0 = _DAT_001c9200; + local_88 = 0; + local_c8 = 0; + local_c4 = 0; + uStack_68 = 0; + local_70 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_d0 = (Mat *)&local_c0; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_d8,6,1.0,0.0); + lVar9 = local_b0; + if (((local_58 == 1) || (local_54 == 1)) && (*param_2 * 2 + 1 == local_54)) { + iVar1 = param_2[1] * 2 + 1; + uVar11 = 8; + if (local_58 == iVar1) { + uVar11 = 0xb; + } + uVar14 = 0xc; + if (local_58 == iVar1) { + uVar14 = 0xf; + } + } + else { + uVar11 = 8; + uVar14 = 0xc; + } + if (0 < iVar10) { + dVar18 = 0.0; + lVar16 = 0; + lVar17 = local_b0 + (long)iVar10 * 8; + do { + __x = *(double *)(lVar9 + lVar16 * 8); + uVar11 = uVar14 & 0xfffffffe; + if (__x == *(double *)(lVar17 + -8)) { + uVar11 = uVar14; + } + uVar3 = uVar11 & 0xfffffffd; + if (-*(double *)(lVar17 + -8) == __x) { + uVar3 = uVar11; + } + if (__x < 0.0) { + uVar3 = uVar3 & 0xfffffffb; + } + lVar13 = lrint(__x); + lVar16 = lVar16 + 1; + lVar17 = lVar17 + -8; + dVar18 = dVar18 + __x; + uVar14 = uVar3 & 0xfffffff7; + if (__x == (double)(int)lVar13) { + uVar14 = uVar3; + } + } while ((int)lVar16 < iVar10); + uVar11 = uVar14; + if ((ABS(dVar18) + 1.0) * DAT_001c9210 < ABS(dVar18 - 1.0)) { + uVar11 = uVar14 & 0xfffffffb; + } + } + cv::Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return uVar11; +} + + +================================================================== + +### FUNC 001c9220 (1212 bytes) name=FUN_001c9220 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_001c9220(long param_1,long param_2,short *param_3,int param_4,int param_5) + +{ + undefined5 *puVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + int iVar5; + int iVar6; + int iVar7; + undefined6 uVar8; + undefined1 auVar9 [16]; + undefined4 uVar10; + undefined1 auVar11 [16]; + short sVar12; + short sVar13; + short sVar14; + short sVar15; + short sVar16; + short sVar17; + short sVar18; + uint3 uVar19; + uint3 uVar20; + undefined1 auVar21 [16]; + char cVar22; + short *psVar23; + undefined8 *puVar24; + uint uVar25; + long lVar26; + ulong uVar27; + undefined8 uVar28; + undefined8 uVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined1 uVar32; + undefined1 uVar33; + undefined1 uVar34; + undefined8 uVar35; + undefined8 uVar36; + + cVar22 = cv::checkHardwareSupport(100); + if (cVar22 != '\0') { + lVar26 = *(long *)(param_1 + 0x10); + if (*(char *)(param_1 + 100) != '\0') { + iVar5 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc) + -1; + param_4 = param_4 * param_5; + uVar25 = iVar5 / 2; + uVar27 = -(ulong)(uVar25 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar25 << 2; + puVar24 = (undefined8 *)(param_2 + (int)(uVar25 * param_5)); + puVar1 = (undefined5 *)(lVar26 + uVar27); + if ((*(uint *)(param_1 + 0x60) & 1) == 0) { + if (iVar5 == 3) { + if ((*(int *)(lVar26 + uVar27) == 0) && (*(int *)((long)puVar1 + 4) == 1)) { + if (7 < param_4) { + uVar25 = param_4 - 8U >> 3; + psVar23 = param_3 + 8; + puVar24 = (undefined8 *)((long)puVar24 - (long)param_5); + do { + puVar2 = (undefined8 *)((long)param_5 * 2 + (long)puVar24); + uVar29 = *puVar24; + puVar24 = puVar24 + 1; + uVar30 = *puVar2; + uVar19 = CONCAT12((char)((ulong)uVar30 >> 8),(short)uVar30) & 0xff00ff; + *(ulong *)(psVar23 + -4) = + CONCAT44((int)(short)((ushort)(byte)((ulong)uVar30 >> 0x18) - + (ushort)(byte)((ulong)uVar29 >> 0x18)), + (int)(short)((ushort)(byte)((ulong)uVar30 >> 0x10) - + (ushort)(byte)((ulong)uVar29 >> 0x10))); + *(ulong *)(psVar23 + -8) = + CONCAT44((int)(short)((ushort)(byte)(uVar19 >> 0x10) - + (ushort)(byte)((ulong)uVar29 >> 8)), + (int)(short)((short)uVar19 - (ushort)(byte)uVar29)); + *(ulong *)(psVar23 + 4) = + CONCAT44((int)(short)((ushort)(byte)((ulong)uVar30 >> 0x38) - + (ushort)(byte)((ulong)uVar29 >> 0x38)), + (int)(short)((ushort)(byte)((ulong)uVar30 >> 0x30) - + (ushort)(byte)((ulong)uVar29 >> 0x30))); + *(ulong *)psVar23 = + CONCAT44((int)(short)((ushort)(byte)((ulong)uVar30 >> 0x28) - + (ushort)(byte)((ulong)uVar29 >> 0x28)), + (int)(short)((ushort)(byte)((ulong)uVar30 >> 0x20) - + (ushort)(byte)((ulong)uVar29 >> 0x20))); + psVar23 = psVar23 + 0x10; + } while (psVar23 != param_3 + (ulong)uVar25 * 0x10 + 0x18); +LAB_001c938c: + return (uVar25 + 1) * 8; + } + } + else { + uVar30 = NEON_sqxtn((ulong)*(uint *)((long)puVar1 + 4) << 0x20, + ZEXT416(*(uint *)((long)puVar1 + 4)) << 0x20,4); + if (7 < param_4) { + uVar25 = param_4 - 8U >> 3; + psVar23 = param_3 + 8; + puVar24 = (undefined8 *)((long)puVar24 - (long)param_5); + do { + puVar2 = (undefined8 *)((long)param_5 * 2 + (long)puVar24); + uVar28 = *puVar24; + puVar24 = puVar24 + 1; + uVar29 = *puVar2; + uVar19 = CONCAT12((char)((ulong)uVar29 >> 8),(short)uVar29) & 0xff00ff; + sVar13 = (short)((ulong)uVar30 >> 0x10); + iVar5 = (int)sVar13; + *(ulong *)(psVar23 + -4) = + CONCAT44((short)((ushort)(byte)((ulong)uVar29 >> 0x18) - + (ushort)(byte)((ulong)uVar28 >> 0x18)) * iVar5, + (short)((ushort)(byte)((ulong)uVar29 >> 0x10) - + (ushort)(byte)((ulong)uVar28 >> 0x10)) * iVar5); + *(ulong *)(psVar23 + -8) = + CONCAT44((short)((ushort)(byte)(uVar19 >> 0x10) - + (ushort)(byte)((ulong)uVar28 >> 8)) * iVar5, + (short)((short)uVar19 - (ushort)(byte)uVar28) * iVar5); + iVar5 = (int)sVar13; + *(ulong *)(psVar23 + 4) = + CONCAT44((short)((ushort)(byte)((ulong)uVar29 >> 0x38) - + (ushort)(byte)((ulong)uVar28 >> 0x38)) * iVar5, + (short)((ushort)(byte)((ulong)uVar29 >> 0x30) - + (ushort)(byte)((ulong)uVar28 >> 0x30)) * iVar5); + *(ulong *)psVar23 = + CONCAT44((short)((ushort)(byte)((ulong)uVar29 >> 0x28) - + (ushort)(byte)((ulong)uVar28 >> 0x28)) * iVar5, + (short)((ushort)(byte)((ulong)uVar29 >> 0x20) - + (ushort)(byte)((ulong)uVar28 >> 0x20)) * iVar5); + psVar23 = psVar23 + 0x10; + } while (psVar23 != param_3 + (ulong)uVar25 * 0x10 + 0x18); + goto LAB_001c938c; + } + } + } + else if (iVar5 == 5) { + uVar10 = *(undefined4 *)(puVar1 + 1); + auVar21[5] = (char)((uint)uVar10 >> 8); + auVar21._0_5_ = *(undefined5 *)((long)puVar1 + 4); + auVar21[6] = (char)((uint)uVar10 >> 0x10); + auVar21[7] = (char)((uint)uVar10 >> 0x18); + auVar21._8_8_ = 0; + uVar30 = NEON_sqxtn((ulong)*(uint *)((long)puVar1 + 4) << 0x20,auVar21 << 0x20,4); + if (7 < param_4) { + lVar26 = (long)param_5; + uVar25 = param_4 - 8U >> 3; + puVar24 = (undefined8 *)((long)puVar24 - lVar26); + psVar23 = param_3 + 8; + do { + puVar2 = (undefined8 *)(lVar26 + (param_5 << 1) + (long)puVar24); + puVar3 = (undefined8 *)(lVar26 * 2 + (long)puVar24); + uVar31 = *puVar24; + uVar35 = *(undefined8 *)((long)puVar24 - ((param_5 << 1) - lVar26)); + puVar24 = puVar24 + 1; + uVar29 = *puVar2; + uVar28 = *puVar3; + uVar19 = CONCAT12((char)((ulong)uVar29 >> 8),(short)uVar29) & 0xff00ff; + sVar13 = (short)uVar19 - (ushort)(byte)uVar35; + sVar14 = (ushort)(byte)(uVar19 >> 0x10) - (ushort)(byte)((ulong)uVar35 >> 8); + sVar12 = (ushort)(byte)((ulong)uVar29 >> 0x10) - (ushort)(byte)((ulong)uVar35 >> 0x10) + ; + sVar15 = (ushort)(byte)((ulong)uVar29 >> 0x18) - (ushort)(byte)((ulong)uVar35 >> 0x18) + ; + uVar19 = CONCAT12((char)((ulong)uVar28 >> 8),(short)uVar28) & 0xff00ff; + sVar16 = (short)((ulong)uVar30 >> 0x10); + iVar6 = (int)sVar16; + uVar10 = CONCAT13((char)((ushort)sVar14 >> 8),CONCAT12((char)sVar14,sVar13)); + uVar8 = CONCAT15((char)((ushort)sVar12 >> 8),CONCAT14((char)sVar12,uVar10)); + sVar14 = (short)((ulong)uVar30 >> 0x20); + iVar5 = (int)sVar14; + *(ulong *)(psVar23 + -4) = + CONCAT44((short)((ushort)(byte)((ulong)uVar28 >> 0x18) - + (ushort)(byte)((ulong)uVar31 >> 0x18)) * iVar6 + + (short)(CONCAT17((char)((ushort)sVar15 >> 8), + CONCAT16((char)sVar15,uVar8)) >> 0x30) * iVar5, + (short)((ushort)(byte)((ulong)uVar28 >> 0x10) - + (ushort)(byte)((ulong)uVar31 >> 0x10)) * iVar6 + + (short)((uint6)uVar8 >> 0x20) * iVar5); + *(ulong *)(psVar23 + -8) = + CONCAT44((short)((ushort)(byte)(uVar19 >> 0x10) - + (ushort)(byte)((ulong)uVar31 >> 8)) * iVar6 + + (short)((uint)uVar10 >> 0x10) * iVar5, + (short)((short)uVar19 - (ushort)(byte)uVar31) * iVar6 + sVar13 * iVar5); + iVar6 = (int)sVar16; + iVar5 = (int)sVar14; + *(ulong *)(psVar23 + 4) = + CONCAT44((short)((ushort)(byte)((ulong)uVar28 >> 0x38) - + (ushort)(byte)((ulong)uVar31 >> 0x38)) * iVar6 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x38) - + (ushort)(byte)((ulong)uVar35 >> 0x38)) * iVar5, + (short)((ushort)(byte)((ulong)uVar28 >> 0x30) - + (ushort)(byte)((ulong)uVar31 >> 0x30)) * iVar6 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x30) - + (ushort)(byte)((ulong)uVar35 >> 0x30)) * iVar5); + *(ulong *)psVar23 = + CONCAT44((short)((ushort)(byte)((ulong)uVar28 >> 0x28) - + (ushort)(byte)((ulong)uVar31 >> 0x28)) * iVar6 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x28) - + (ushort)(byte)((ulong)uVar35 >> 0x28)) * iVar5, + (short)((ushort)(byte)((ulong)uVar28 >> 0x20) - + (ushort)(byte)((ulong)uVar31 >> 0x20)) * iVar6 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x20) - + (ushort)(byte)((ulong)uVar35 >> 0x20)) * iVar5); + psVar23 = psVar23 + 0x10; + } while (psVar23 != param_3 + (ulong)uVar25 * 0x10 + 0x18); + goto LAB_001c938c; + } + } + } + else if (iVar5 != 1) { + if (iVar5 == 3) { + if (*(int *)(lVar26 + uVar27) == 2) { + if (*(int *)((long)puVar1 + 4) == 1) { + if (param_4 < 8) { + return 0; + } + uVar25 = param_4 - 8U >> 3; + puVar2 = puVar24 + (ulong)uVar25 + 1; + do { + puVar3 = (undefined8 *)((long)puVar24 + (long)param_5); + puVar4 = (undefined8 *)((long)puVar24 - (long)param_5); + uVar29 = *puVar24; + puVar24 = puVar24 + 1; + uVar30 = *puVar3; + uVar28 = *puVar4; + uVar19 = CONCAT12((char)((ulong)uVar29 >> 8),(short)uVar29) & 0xff00ff; + uVar20 = CONCAT12((char)((ulong)uVar28 >> 8),(short)uVar28) & 0xff00ff; + *param_3 = (short)uVar20 + (ushort)(byte)uVar30 + (short)uVar19 * 2; + param_3[1] = 0; + param_3[2] = (ushort)(byte)(uVar20 >> 0x10) + (ushort)(byte)((ulong)uVar30 >> 8) + + (ushort)(byte)(uVar19 >> 0x10) * 2; + param_3[3] = 0; + param_3[4] = (ushort)(byte)((ulong)uVar28 >> 0x10) + + (ushort)(byte)((ulong)uVar30 >> 0x10) + + (ushort)(byte)((ulong)uVar29 >> 0x10) * 2; + param_3[5] = 0; + param_3[6] = (ushort)(byte)((ulong)uVar28 >> 0x18) + + (ushort)(byte)((ulong)uVar30 >> 0x18) + + (ushort)(byte)((ulong)uVar29 >> 0x18) * 2; + param_3[7] = 0; + param_3[8] = (ushort)(byte)((ulong)uVar28 >> 0x20) + + (ushort)(byte)((ulong)uVar30 >> 0x20) + + (ushort)(byte)((ulong)uVar29 >> 0x20) * 2; + param_3[9] = 0; + param_3[10] = (ushort)(byte)((ulong)uVar28 >> 0x28) + + (ushort)(byte)((ulong)uVar30 >> 0x28) + + (ushort)(byte)((ulong)uVar29 >> 0x28) * 2; + param_3[0xb] = 0; + param_3[0xc] = (ushort)(byte)((ulong)uVar28 >> 0x30) + + (ushort)(byte)((ulong)uVar30 >> 0x30) + + (ushort)(byte)((ulong)uVar29 >> 0x30) * 2; + param_3[0xd] = 0; + param_3[0xe] = (ushort)(byte)((ulong)uVar28 >> 0x38) + + (ushort)(byte)((ulong)uVar30 >> 0x38) + + (ushort)(byte)((ulong)uVar29 >> 0x38) * 2; + param_3[0xf] = 0; + param_3 = param_3 + 0x10; + } while (puVar24 != puVar2); + goto LAB_001c938c; + } + } + else if ((*(int *)(lVar26 + uVar27) == -2) && (*(int *)((long)puVar1 + 4) == 1)) { + return 0; + } + uVar10 = *(undefined4 *)((long)puVar1 + 4); + uVar32 = (undefined1)((uint)uVar10 >> 8); + uVar33 = (undefined1)((uint)uVar10 >> 0x10); + uVar34 = (undefined1)((uint)uVar10 >> 0x18); + auVar11[5] = uVar32; + auVar11._0_5_ = *puVar1; + auVar11[6] = uVar33; + auVar11[7] = uVar34; + auVar11._8_8_ = 0; + uVar30 = NEON_sqxtn(CONCAT17(uVar34,CONCAT16(uVar33,CONCAT15(uVar32,*puVar1))),auVar11,4); + if (7 < param_4) { + uVar25 = param_4 - 8U >> 3; + psVar23 = param_3 + 8; + do { + puVar2 = (undefined8 *)((long)puVar24 - (long)param_5); + uVar28 = *puVar24; + uVar31 = *(undefined8 *)((long)puVar24 + (long)param_5); + puVar24 = puVar24 + 1; + uVar29 = *puVar2; + uVar19 = CONCAT12((char)((ulong)uVar28 >> 8),(short)uVar28) & 0xff00ff; + uVar20 = CONCAT12((char)((ulong)uVar29 >> 8),(short)uVar29) & 0xff00ff; + sVar13 = (short)uVar20 + (ushort)(byte)uVar31; + sVar14 = (ushort)(byte)(uVar20 >> 0x10) + (ushort)(byte)((ulong)uVar31 >> 8); + sVar12 = (ushort)(byte)((ulong)uVar29 >> 0x10) + (ushort)(byte)((ulong)uVar31 >> 0x10) + ; + sVar15 = (ushort)(byte)((ulong)uVar29 >> 0x18) + (ushort)(byte)((ulong)uVar31 >> 0x18) + ; + iVar6 = (int)(short)uVar30; + iVar7 = (int)(short)uVar30; + uVar10 = CONCAT13((char)((ushort)sVar14 >> 8),CONCAT12((char)sVar14,sVar13)); + uVar8 = CONCAT15((char)((ushort)sVar12 >> 8),CONCAT14((char)sVar12,uVar10)); + sVar14 = (short)((ulong)uVar30 >> 0x10); + iVar5 = (int)sVar14; + *(ulong *)(psVar23 + -4) = + CONCAT44((short)(ushort)(byte)((ulong)uVar28 >> 0x18) * iVar6 + + (short)(CONCAT17((char)((ushort)sVar15 >> 8), + CONCAT16((char)sVar15,uVar8)) >> 0x30) * iVar5, + (short)(ushort)(byte)((ulong)uVar28 >> 0x10) * iVar6 + + (short)((uint6)uVar8 >> 0x20) * iVar5); + *(ulong *)(psVar23 + -8) = + CONCAT44((short)(ushort)(byte)(uVar19 >> 0x10) * iVar6 + + (short)((uint)uVar10 >> 0x10) * iVar5, + (short)uVar19 * iVar6 + sVar13 * iVar5); + iVar5 = (int)sVar14; + *(ulong *)(psVar23 + 4) = + CONCAT44((short)(ushort)(byte)((ulong)uVar28 >> 0x38) * iVar7 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x38) + + (ushort)(byte)((ulong)uVar31 >> 0x38)) * iVar5, + (short)(ushort)(byte)((ulong)uVar28 >> 0x30) * iVar7 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x30) + + (ushort)(byte)((ulong)uVar31 >> 0x30)) * iVar5); + *(ulong *)psVar23 = + CONCAT44((short)(ushort)(byte)((ulong)uVar28 >> 0x28) * iVar7 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x28) + + (ushort)(byte)((ulong)uVar31 >> 0x28)) * iVar5, + (short)(ushort)(byte)((ulong)uVar28 >> 0x20) * iVar7 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x20) + + (ushort)(byte)((ulong)uVar31 >> 0x20)) * iVar5); + psVar23 = psVar23 + 0x10; + } while (psVar23 != param_3 + (ulong)uVar25 * 0x10 + 0x18); + goto LAB_001c938c; + } + } + else if ((iVar5 == 5) && + (((*(int *)(lVar26 + uVar27) != -2 || (*(int *)((long)puVar1 + 4) != 0)) || + (*(int *)(puVar1 + 1) != 1)))) { + uVar10 = *(undefined4 *)((long)puVar1 + 4); + uVar32 = (undefined1)((uint)uVar10 >> 8); + uVar33 = (undefined1)((uint)uVar10 >> 0x10); + uVar34 = (undefined1)((uint)uVar10 >> 0x18); + auVar9[5] = uVar32; + auVar9._0_5_ = *puVar1; + auVar9[6] = uVar33; + auVar9[7] = uVar34; + auVar9._8_2_ = (short)*(undefined4 *)(puVar1 + 1); + auVar9._10_2_ = (short)((uint)*(undefined4 *)(puVar1 + 1) >> 0x10); + auVar9._12_4_ = 0; + uVar30 = NEON_sqxtn(CONCAT17(uVar34,CONCAT16(uVar33,CONCAT15(uVar32,*puVar1))),auVar9,4); + if (7 < param_4) { + uVar25 = param_4 - 8U >> 3; + psVar23 = param_3 + 8; + do { + uVar31 = *(undefined8 *)((long)puVar24 - (long)param_5); + uVar36 = *(undefined8 *)((long)puVar24 + (long)(param_5 << 1)); + uVar35 = *(undefined8 *)((long)puVar24 + (long)param_5); + uVar29 = *(undefined8 *)((long)puVar24 - (long)(param_5 << 1)); + uVar28 = *puVar24; + puVar24 = puVar24 + 1; + uVar19 = CONCAT12((char)((ulong)uVar31 >> 8),(short)uVar31) & 0xff00ff; + uVar20 = CONCAT12((char)((ulong)uVar29 >> 8),(short)uVar29) & 0xff00ff; + sVar12 = (short)uVar20 + (ushort)(byte)uVar36; + sVar13 = (ushort)(byte)(uVar20 >> 0x10) + (ushort)(byte)((ulong)uVar36 >> 8); + sVar14 = (ushort)(byte)((ulong)uVar29 >> 0x10) + (ushort)(byte)((ulong)uVar36 >> 0x10) + ; + sVar15 = (ushort)(byte)((ulong)uVar29 >> 0x18) + (ushort)(byte)((ulong)uVar36 >> 0x18) + ; + sVar16 = (ushort)(byte)((ulong)uVar29 >> 0x20) + (ushort)(byte)((ulong)uVar36 >> 0x20) + ; + sVar17 = (ushort)(byte)((ulong)uVar29 >> 0x28) + (ushort)(byte)((ulong)uVar36 >> 0x28) + ; + sVar18 = (ushort)(byte)((ulong)uVar29 >> 0x30) + (ushort)(byte)((ulong)uVar36 >> 0x30) + ; + uVar20 = CONCAT12((char)((ulong)uVar28 >> 8),(short)uVar28) & 0xff00ff; + uVar10 = CONCAT13((char)((ushort)sVar13 >> 8),CONCAT12((char)sVar13,sVar12)); + uVar8 = CONCAT15((char)((ushort)sVar14 >> 8),CONCAT14((char)sVar14,uVar10)); + iVar7 = (int)(short)uVar30; + sVar13 = (short)((ulong)uVar30 >> 0x10); + iVar5 = (int)sVar13; + sVar14 = (short)((ulong)uVar30 >> 0x20); + iVar6 = (int)sVar14; + *(ulong *)(psVar23 + -4) = + CONCAT44((short)(ushort)(byte)((ulong)uVar28 >> 0x18) * iVar7 + + (short)((ushort)(byte)((ulong)uVar31 >> 0x18) + + (ushort)(byte)((ulong)uVar35 >> 0x18)) * iVar5 + + (short)(CONCAT17((char)((ushort)sVar15 >> 8), + CONCAT16((char)sVar15,uVar8)) >> 0x30) * iVar6, + (short)(ushort)(byte)((ulong)uVar28 >> 0x10) * iVar7 + + (short)((ushort)(byte)((ulong)uVar31 >> 0x10) + + (ushort)(byte)((ulong)uVar35 >> 0x10)) * iVar5 + + (short)((uint6)uVar8 >> 0x20) * iVar6); + *(ulong *)(psVar23 + -8) = + CONCAT44((short)(ushort)(byte)(uVar20 >> 0x10) * iVar7 + + (short)((ushort)(byte)(uVar19 >> 0x10) + + (ushort)(byte)((ulong)uVar35 >> 8)) * iVar5 + + (short)((uint)uVar10 >> 0x10) * iVar6, + (short)uVar20 * iVar7 + + (short)((short)uVar19 + (ushort)(byte)uVar35) * iVar5 + sVar12 * iVar6); + iVar7 = (int)(short)uVar30; + uVar10 = CONCAT13((char)((ushort)sVar17 >> 8),CONCAT12((char)sVar17,sVar16)); + iVar5 = (int)sVar13; + iVar6 = (int)sVar14; + *(ulong *)(psVar23 + 4) = + CONCAT44((short)(ushort)(byte)((ulong)uVar28 >> 0x38) * iVar7 + + (short)((ushort)(byte)((ulong)uVar31 >> 0x38) + + (ushort)(byte)((ulong)uVar35 >> 0x38)) * iVar5 + + (short)((ushort)(byte)((ulong)uVar29 >> 0x38) + + (ushort)(byte)((ulong)uVar36 >> 0x38)) * iVar6, + (short)(ushort)(byte)((ulong)uVar28 >> 0x30) * iVar7 + + (short)((ushort)(byte)((ulong)uVar31 >> 0x30) + + (ushort)(byte)((ulong)uVar35 >> 0x30)) * iVar5 + + (short)(CONCAT15((char)((ushort)sVar18 >> 8), + CONCAT14((char)sVar18,uVar10)) >> 0x20) * iVar6); + *(ulong *)psVar23 = + CONCAT44((short)(ushort)(byte)((ulong)uVar28 >> 0x28) * iVar7 + + (short)((ushort)(byte)((ulong)uVar31 >> 0x28) + + (ushort)(byte)((ulong)uVar35 >> 0x28)) * iVar5 + + (short)((uint)uVar10 >> 0x10) * iVar6, + (short)(ushort)(byte)((ulong)uVar28 >> 0x20) * iVar7 + + (short)((ushort)(byte)((ulong)uVar31 >> 0x20) + + (ushort)(byte)((ulong)uVar35 >> 0x20)) * iVar5 + sVar16 * iVar6); + psVar23 = psVar23 + 0x10; + } while (psVar23 != param_3 + (ulong)uVar25 * 0x10 + 0x18); + goto LAB_001c938c; + } + } + } + } + } + return 0; +} + + +================================================================== + +### FUNC 001c9700 (14260 bytes) name=FUN_001c9700 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_001c9700(long param_1,long param_2,long param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + uint uVar8; + long lVar9; + int *piVar10; + uint uVar11; + uint uVar12; + int iVar13; + int iVar14; + uint3 uVar15; + uint3 uVar16; + uint3 uVar17; + uint6 uVar18; + uint3 uVar19; + uint3 uVar20; + uint3 uVar21; + uint3 uVar22; + uint3 uVar23; + uint3 uVar24; + uint3 uVar25; + uint3 uVar26; + uint3 uVar27; + undefined2 uVar28; + undefined2 uVar29; + byte *pbVar30; + byte *pbVar36; + byte *pbVar40; + byte *pbVar41; + byte *pbVar47; + undefined1 *puVar51; + undefined1 *puVar55; + undefined1 *puVar57; + undefined1 *puVar58; + undefined1 *puVar59; + uint uVar60; + int *piVar61; + int iVar62; + uint uVar63; + long lVar64; + int iVar65; + ulong *puVar66; + undefined8 *puVar67; + long lVar68; + long lVar69; + long lVar70; + byte *pbVar71; + long lVar72; + uint uVar73; + long lVar74; + byte *pbVar75; + ulong uVar76; + byte *pbVar77; + ulong uVar78; + long lVar79; + undefined1 uVar80; + long lVar81; + undefined8 uVar82; + undefined8 uVar83; + byte bVar84; + undefined1 uVar85; + byte bVar87; + byte bVar88; + byte bVar89; + byte bVar90; + byte bVar91; + byte bVar92; + byte bVar93; + byte bVar94; + byte bVar95; + byte bVar96; + byte bVar97; + byte bVar98; + byte bVar99; + byte bVar100; + byte bVar101; + byte bVar102; + byte bVar103; + byte bVar104; + byte bVar105; + byte bVar106; + undefined8 uVar86; + byte bVar108; + byte bVar109; + byte bVar110; + byte bVar111; + byte bVar112; + byte bVar113; + byte bVar114; + byte bVar115; + byte bVar116; + byte bVar117; + byte bVar118; + byte bVar119; + byte bVar120; + byte bVar121; + byte bVar122; + byte bVar123; + byte bVar124; + byte bVar125; + byte bVar126; + byte bVar127; + undefined8 uVar107; + byte bVar128; + byte bVar129; + byte bVar130; + byte bVar131; + byte bVar132; + byte bVar133; + byte bVar134; + byte bVar135; + byte bVar136; + byte bVar137; + byte bVar138; + byte bVar139; + byte bVar140; + byte bVar141; + byte bVar142; + byte bVar143; + byte bVar144; + byte bVar145; + byte bVar146; + byte bVar147; + byte bVar148; + byte bVar149; + byte bVar150; + byte bVar151; + byte bVar152; + byte bVar153; + byte bVar154; + byte bVar155; + byte bVar156; + byte bVar157; + byte bVar158; + byte bVar159; + byte bVar160; + byte bVar161; + byte bVar162; + byte bVar163; + byte bVar164; + byte bVar165; + byte bVar166; + byte bVar167; + byte bVar168; + byte bVar169; + byte bVar170; + byte bVar171; + byte bVar172; + byte bVar173; + byte bVar174; + byte bVar175; + byte bVar176; + byte bVar177; + byte bVar178; + byte bVar179; + byte bVar180; + byte bVar181; + byte bVar182; + byte bVar183; + byte bVar184; + byte bVar185; + byte bVar186; + byte bVar187; + byte bVar188; + byte bVar189; + byte bVar190; + byte bVar193; + byte bVar195; + byte bVar197; + byte bVar199; + long lVar191; + byte bVar194; + byte bVar196; + byte bVar198; + byte bVar200; + byte bVar201; + byte bVar202; + undefined8 uVar192; + byte bVar204; + byte bVar205; + byte bVar206; + byte bVar207; + byte bVar208; + byte bVar209; + byte bVar210; + byte bVar211; + byte bVar212; + byte bVar213; + byte bVar214; + byte bVar215; + byte bVar216; + byte bVar217; + undefined8 uVar203; + int iVar218; + long lVar219; + int iVar220; + int iVar221; + int iVar222; + long lVar223; + long lVar224; + long lVar225; + long lVar226; + long lVar227; + long lVar228; + long lVar229; + uint uVar230; + long lVar231; + long lVar232; + undefined2 local_3c0; + undefined2 uStack_3b8; + undefined2 local_3b0; + undefined2 uStack_3a8; + undefined2 local_3a0; + undefined2 uStack_398; + undefined2 local_390; + undefined2 uStack_388; + undefined2 local_380; + undefined2 uStack_378; + undefined2 local_370; + undefined2 uStack_368; + undefined2 local_360; + undefined2 uStack_358; + undefined2 local_340; + undefined2 uStack_338; + undefined2 local_330; + undefined2 uStack_328; + undefined2 local_320; + undefined2 uStack_318; + undefined2 local_310; + undefined2 uStack_308; + undefined2 local_300; + undefined2 uStack_2f8; + undefined2 local_2f0; + undefined2 uStack_2e8; + undefined2 local_2e0; + undefined2 uStack_2d8; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + undefined1 *puVar52; + undefined1 *puVar53; + undefined1 *puVar54; + undefined1 *puVar56; + + lVar72 = *(long *)(param_1 + 0x20); + uVar12 = *(uint *)(param_1 + 0xd8); + uVar11 = *(int *)(param_1 + 8) / 2; + uVar60 = FUN_001c9220(param_1 + 0x70); + lVar64 = (long)(int)uVar11; + lVar68 = (long)(int)uVar60; + lVar74 = lVar64 * 4; + piVar10 = (int *)(lVar72 + lVar74); + lVar70 = lVar68 + (int)(uVar11 * param_5); + param_4 = param_4 * param_5; + pbVar71 = (byte *)(param_2 + lVar70); + iVar13 = *(int *)(param_1 + 8); + if ((uVar12 & 1) != 0) { + if (iVar13 == 1) { + if (*(int *)(lVar72 + lVar74) != 1) goto LAB_001c97b4; + iVar13 = param_4 + -1; + if ((int)uVar60 < iVar13) { + uVar230 = (param_4 + -2) - uVar60; + puVar67 = (undefined8 *)(param_2 + lVar68 + lVar70); + uVar73 = uVar230 >> 1; + puVar66 = (ulong *)(param_3 + lVar68 * 4); + uVar12 = uVar73 + 1; + if ((puVar67 < (undefined8 *)(param_3 + (lVar68 + (ulong)uVar12 * 2) * 4) && + puVar66 < (ulong *)(param_2 + lVar68 + lVar70 + (ulong)uVar12 * 2)) || (uVar12 < 8)) { + pbVar50 = pbVar71 + lVar68; + do { + bVar84 = pbVar50[1]; + pbVar77 = pbVar50 + 2; + *(uint *)puVar66 = (uint)*pbVar50; + *(uint *)((long)puVar66 + 4) = (uint)bVar84; + puVar66 = puVar66 + 1; + pbVar50 = pbVar77; + } while (pbVar77 != pbVar71 + lVar68 + 2 + (ulong)uVar73 * 2); + } + else { + uVar8 = (uVar73 - 7 >> 3) + 1; + uVar63 = uVar60; + if (0xd < uVar230) { + uVar230 = 0; + do { + uVar83 = puVar67[1]; + uVar82 = *puVar67; + uVar230 = uVar230 + 1; + uVar15 = CONCAT12((char)((ulong)uVar82 >> 8),(short)uVar82) & 0xff00ff; + uVar80 = (undefined1)((ulong)uVar82 >> 0x28); + uVar16 = CONCAT12((char)((ulong)uVar83 >> 8),(short)uVar83) & 0xff00ff; + uVar85 = (undefined1)((ulong)uVar83 >> 0x28); + puVar66[1] = (ulong)CONCAT14((char)((ulong)uVar82 >> 0x18), + (uint)(byte)((ulong)uVar82 >> 0x10)); + *puVar66 = (ulong)((uint6)CONCAT14((char)(uVar15 >> 0x10),(uint)uVar15) & + 0xffff0000ffff); + puVar66[3] = (ulong)CONCAT14((char)((ulong)uVar82 >> 0x38), + (uint)(byte)((ulong)uVar82 >> 0x30)); + puVar66[2] = (ulong)((uint6)CONCAT14(uVar80,(uint)CONCAT12(uVar80,(ushort)(byte)(( + ulong)uVar82 >> 0x20))) & 0xffff0000ffff); + puVar66[5] = (ulong)CONCAT14((char)((ulong)uVar83 >> 0x18), + (uint)(byte)((ulong)uVar83 >> 0x10)); + puVar66[4] = (ulong)((uint6)CONCAT14((char)(uVar16 >> 0x10),(uint)uVar16) & + 0xffff0000ffff); + puVar66[7] = (ulong)CONCAT14((char)((ulong)uVar83 >> 0x38), + (uint)(byte)((ulong)uVar83 >> 0x30)); + puVar66[6] = (ulong)((uint6)CONCAT14(uVar85,(uint)CONCAT12(uVar85,(ushort)(byte)(( + ulong)uVar83 >> 0x20))) & 0xffff0000ffff); + puVar66 = puVar66 + 8; + puVar67 = puVar67 + 2; + } while (uVar230 < uVar8); + uVar63 = uVar60 + uVar8 * 0x10; + if (uVar8 * 8 == uVar12) goto LAB_001caf84; + } + lVar70 = (long)(int)uVar63; + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + if ((int)(uVar63 + 2) < iVar13) { + lVar70 = (long)(int)(uVar63 + 2); + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + if ((int)(uVar63 + 4) < iVar13) { + lVar70 = (long)(int)(uVar63 + 4); + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + if ((int)(uVar63 + 6) < iVar13) { + lVar70 = (long)(int)(uVar63 + 6); + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + if ((int)(uVar63 + 8) < iVar13) { + lVar70 = (long)(int)(uVar63 + 8); + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + if ((int)(uVar63 + 10) < iVar13) { + lVar70 = (long)(int)(uVar63 + 10); + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + if ((int)(uVar63 + 0xc) < iVar13) { + lVar70 = (long)(int)(uVar63 + 0xc); + bVar84 = pbVar71[lVar70 + 1]; + *(uint *)(param_3 + lVar70 * 4) = (uint)pbVar71[lVar70]; + *(uint *)(param_3 + lVar70 * 4 + 4) = (uint)bVar84; + } + } + } + } + } + } + } +LAB_001caf84: + uVar60 = uVar60 + 2 + uVar73 * 2; + lVar68 = (long)(int)uVar60; + } + pbVar71 = pbVar71 + lVar68; + goto LAB_001c97b4; + } + if (iVar13 != 3) { + if (iVar13 != 5) goto LAB_001c97b4; + iVar13 = piVar10[1]; + iVar65 = piVar10[2]; + iVar62 = *(int *)(lVar72 + lVar74); + if ((iVar13 != 0 || iVar62 != -2) || (iVar65 != 1)) { + if (param_4 + -1 <= (int)uVar60) goto LAB_001c97b4; + uVar73 = (param_4 + -2) - uVar60; + lVar226 = (long)(param_5 << 1); + lVar227 = (long)(param_5 * -2); + piVar61 = (int *)(param_3 + lVar68 * 4); + lVar228 = (long)-param_5; + uVar230 = uVar73 >> 1; + lVar69 = lVar70 + lVar228 + 1; + uVar12 = uVar230 + 1; + pbVar50 = (byte *)(param_2 + lVar70 + lVar226); + lVar79 = (ulong)uVar12 * 2; + pbVar77 = (byte *)(param_2 + lVar70 + lVar227); + pbVar75 = (byte *)(param_3 + (lVar68 + lVar79) * 4); + pbVar39 = (byte *)(param_2 + lVar69); + pbVar40 = (byte *)(param_2 + lVar70 + lVar228); + lVar68 = (long)param_5; + pbVar35 = (byte *)(param_2 + lVar70 + lVar68); + if (((((uVar12 < 0x10 || + (pbVar50 < pbVar75 && piVar61 < (int *)(param_2 + lVar70 + lVar226 + lVar79) || + pbVar77 < pbVar75 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar227))) || + pbVar39 < pbVar75 && piVar61 < (int *)(param_2 + lVar79 + lVar69)) || + pbVar40 < pbVar75 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar228)) || + pbVar71 < pbVar75 && piVar61 < (int *)(param_2 + lVar70 + lVar79)) || + (pbVar35 < pbVar75 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar68))) { + pbVar50 = pbVar71 + 1; + pbVar77 = pbVar71; + do { + bVar88 = pbVar50[lVar68]; + pbVar75 = pbVar77 + lVar68; + bVar89 = pbVar77[1 - param_5]; + pbVar39 = pbVar77 + lVar228; + bVar84 = *pbVar50; + bVar87 = *pbVar77; + bVar90 = pbVar50[lVar227]; + bVar91 = pbVar50[lVar226]; + pbVar50 = pbVar50 + 2; + pbVar40 = pbVar77 + lVar227; + pbVar35 = pbVar77 + lVar226; + pbVar77 = pbVar77 + 2; + *piVar61 = ((uint)*pbVar39 + (uint)*pbVar75) * iVar13 + (uint)bVar87 * iVar62 + + ((uint)*pbVar40 + (uint)*pbVar35) * iVar65; + piVar61[1] = ((uint)bVar89 + (uint)bVar88) * iVar13 + (uint)bVar84 * iVar62 + + ((uint)bVar90 + (uint)bVar91) * iVar65; + piVar61 = piVar61 + 2; + } while (pbVar50 != pbVar71 + (ulong)uVar230 * 2 + 3); + } + else { + uVar8 = (uVar230 - 0x10 >> 4) + 1; + pbVar75 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar73) { + uVar73 = 0; + do { + bVar84 = *pbVar35; + pbVar30 = pbVar35 + 1; + bVar87 = pbVar35[2]; + bVar128 = pbVar35[3]; + bVar89 = pbVar35[4]; + pbVar31 = pbVar35 + 5; + bVar92 = pbVar35[6]; + pbVar32 = pbVar35 + 7; + bVar95 = pbVar35[8]; + bVar129 = pbVar35[9]; + bVar98 = pbVar35[10]; + bVar131 = pbVar35[0xb]; + bVar101 = pbVar35[0xc]; + bVar133 = pbVar35[0xd]; + bVar104 = pbVar35[0xe]; + bVar135 = pbVar35[0xf]; + pbVar33 = pbVar35 + 0x10; + pbVar34 = pbVar35 + 0x11; + bVar108 = pbVar35[0x12]; + bVar137 = pbVar35[0x13]; + bVar110 = pbVar35[0x14]; + bVar138 = pbVar35[0x15]; + bVar113 = pbVar35[0x16]; + bVar140 = pbVar35[0x17]; + bVar116 = pbVar35[0x18]; + bVar142 = pbVar35[0x19]; + bVar119 = pbVar35[0x1a]; + bVar144 = pbVar35[0x1b]; + bVar122 = pbVar35[0x1c]; + bVar146 = pbVar35[0x1d]; + bVar125 = pbVar35[0x1e]; + bVar148 = pbVar35[0x1f]; + pbVar35 = pbVar35 + 0x20; + uVar73 = uVar73 + 1; + bVar150 = *pbVar39; + bVar151 = pbVar39[2]; + pbVar36 = pbVar39 + 4; + pbVar37 = pbVar39 + 6; + bVar157 = pbVar39[8]; + bVar160 = pbVar39[10]; + bVar163 = pbVar39[0xc]; + bVar166 = pbVar39[0xe]; + pbVar38 = pbVar39 + 0x10; + bVar169 = pbVar39[0x12]; + bVar172 = pbVar39[0x14]; + bVar175 = pbVar39[0x16]; + bVar178 = pbVar39[0x18]; + bVar181 = pbVar39[0x1a]; + bVar184 = pbVar39[0x1c]; + bVar187 = pbVar39[0x1e]; + pbVar39 = pbVar39 + 0x20; + local_3c0 = CONCAT11(bVar87,bVar84); + uStack_3b8 = CONCAT11(bVar108,*pbVar33); + local_3b0 = CONCAT11(bVar128,*pbVar30); + uStack_3a8 = CONCAT11(bVar137,*pbVar34); + bVar84 = *pbVar40; + bVar88 = pbVar40[2]; + bVar90 = pbVar40[4]; + bVar93 = pbVar40[6]; + bVar96 = pbVar40[8]; + bVar99 = pbVar40[10]; + bVar102 = pbVar40[0xc]; + bVar105 = pbVar40[0xe]; + pbVar33 = pbVar40 + 0x10; + bVar109 = pbVar40[0x12]; + bVar111 = pbVar40[0x14]; + bVar114 = pbVar40[0x16]; + bVar117 = pbVar40[0x18]; + bVar120 = pbVar40[0x1a]; + bVar123 = pbVar40[0x1c]; + bVar126 = pbVar40[0x1e]; + pbVar40 = pbVar40 + 0x20; + local_3a0 = CONCAT11(bVar88,bVar84); + uVar28 = local_3a0; + uStack_398 = CONCAT11(bVar109,*pbVar33); + uVar29 = uStack_398; + bVar84 = *pbVar75; + pbVar33 = pbVar75 + 1; + pbVar34 = pbVar75 + 2; + pbVar30 = pbVar75 + 3; + bVar91 = pbVar75[4]; + pbVar41 = pbVar75 + 5; + bVar94 = pbVar75[6]; + pbVar42 = pbVar75 + 7; + bVar97 = pbVar75[8]; + bVar130 = pbVar75[9]; + bVar100 = pbVar75[10]; + bVar132 = pbVar75[0xb]; + bVar103 = pbVar75[0xc]; + bVar134 = pbVar75[0xd]; + bVar106 = pbVar75[0xe]; + bVar136 = pbVar75[0xf]; + pbVar43 = pbVar75 + 0x10; + pbVar44 = pbVar75 + 0x11; + pbVar45 = pbVar75 + 0x12; + pbVar46 = pbVar75 + 0x13; + bVar112 = pbVar75[0x14]; + bVar139 = pbVar75[0x15]; + bVar115 = pbVar75[0x16]; + bVar141 = pbVar75[0x17]; + bVar118 = pbVar75[0x18]; + bVar143 = pbVar75[0x19]; + bVar121 = pbVar75[0x1a]; + bVar145 = pbVar75[0x1b]; + bVar124 = pbVar75[0x1c]; + bVar147 = pbVar75[0x1d]; + bVar127 = pbVar75[0x1e]; + bVar149 = pbVar75[0x1f]; + pbVar75 = pbVar75 + 0x20; + local_380 = CONCAT11(*pbVar34,bVar84); + uStack_378 = CONCAT11(*pbVar45,*pbVar43); + local_370 = CONCAT11(*pbVar30,*pbVar33); + uStack_368 = CONCAT11(*pbVar46,*pbVar44); + local_360 = CONCAT11(bVar151,bVar150); + uStack_358 = CONCAT11(bVar169,*pbVar38); + bVar84 = *pbVar77; + bVar190 = pbVar77[1]; + bVar150 = pbVar77[2]; + bVar193 = pbVar77[3]; + bVar153 = pbVar77[4]; + pbVar44 = pbVar77 + 5; + bVar155 = pbVar77[6]; + pbVar38 = pbVar77 + 7; + bVar158 = pbVar77[8]; + bVar195 = pbVar77[9]; + bVar161 = pbVar77[10]; + bVar197 = pbVar77[0xb]; + bVar164 = pbVar77[0xc]; + bVar199 = pbVar77[0xd]; + bVar167 = pbVar77[0xe]; + bVar201 = pbVar77[0xf]; + pbVar43 = pbVar77 + 0x10; + pbVar33 = pbVar77 + 0x11; + bVar170 = pbVar77[0x12]; + bVar204 = pbVar77[0x13]; + bVar173 = pbVar77[0x14]; + bVar206 = pbVar77[0x15]; + bVar176 = pbVar77[0x16]; + bVar208 = pbVar77[0x17]; + bVar179 = pbVar77[0x18]; + bVar210 = pbVar77[0x19]; + bVar182 = pbVar77[0x1a]; + bVar212 = pbVar77[0x1b]; + bVar185 = pbVar77[0x1c]; + bVar214 = pbVar77[0x1d]; + bVar188 = pbVar77[0x1e]; + bVar216 = pbVar77[0x1f]; + pbVar77 = pbVar77 + 0x20; + uVar19 = CONCAT12(bVar87,local_3c0); + uVar20 = CONCAT12(bVar108,uStack_3b8); + local_3a0 = CONCAT11(bVar150,bVar84); + uStack_398 = CONCAT11(bVar170,*pbVar43); + uStack_388 = CONCAT11(bVar204,*pbVar33); + uVar21 = CONCAT12(bVar128,local_3b0); + uVar22 = CONCAT12(bVar137,uStack_3a8); + bVar84 = *pbVar50; + pbVar43 = pbVar50 + 1; + bVar152 = pbVar50[2]; + bVar194 = pbVar50[3]; + bVar154 = pbVar50[4]; + pbVar47 = pbVar50 + 5; + bVar156 = pbVar50[6]; + pbVar33 = pbVar50 + 7; + bVar159 = pbVar50[8]; + bVar196 = pbVar50[9]; + bVar162 = pbVar50[10]; + bVar198 = pbVar50[0xb]; + bVar165 = pbVar50[0xc]; + bVar200 = pbVar50[0xd]; + bVar168 = pbVar50[0xe]; + bVar202 = pbVar50[0xf]; + pbVar48 = pbVar50 + 0x10; + pbVar49 = pbVar50 + 0x11; + bVar171 = pbVar50[0x12]; + bVar205 = pbVar50[0x13]; + bVar174 = pbVar50[0x14]; + bVar207 = pbVar50[0x15]; + bVar177 = pbVar50[0x16]; + bVar209 = pbVar50[0x17]; + bVar180 = pbVar50[0x18]; + bVar211 = pbVar50[0x19]; + bVar183 = pbVar50[0x1a]; + bVar213 = pbVar50[0x1b]; + bVar186 = pbVar50[0x1c]; + bVar215 = pbVar50[0x1d]; + bVar189 = pbVar50[0x1e]; + bVar217 = pbVar50[0x1f]; + pbVar50 = pbVar50 + 0x20; + uVar15 = CONCAT12(*pbVar34,local_380) & 0xff00ff; + uVar16 = CONCAT12(*pbVar45,uStack_378) & 0xff00ff; + local_3c0 = CONCAT11(bVar152,bVar84); + uStack_3b8 = CONCAT11(bVar171,*pbVar48); + local_3b0 = CONCAT11(bVar194,*pbVar43); + uStack_3a8 = CONCAT11(bVar205,*pbVar49); + uVar17 = CONCAT12(*pbVar30,local_370) & 0xff00ff; + uVar18 = (uint6)CONCAT14((char)(uVar16 >> 0x10),(uint)uVar16) & 0xffff0000ffff; + uVar16 = CONCAT12(*pbVar46,uStack_368) & 0xff00ff; + iVar14 = ((uint)*pbVar31 + (uint)*pbVar36) * iVar13 + (uint)*pbVar41 * iVar62 + + ((uint)*pbVar47 + (CONCAT12(*pbVar38,(ushort)*pbVar44) & 0xffff)) * iVar65; + iVar218 = ((uint)*pbVar32 + (uint)*pbVar37) * iVar13 + (uint)*pbVar42 * iVar62 + + ((uint)*pbVar33 + (uint)*pbVar38) * iVar65; + *piVar61 = (((uVar19 & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar88,uVar28) & 0xff00ff) & 0xffff)) * iVar13 + + (uVar15 & 0xffff) * iVar62 + + (((CONCAT12(bVar152,local_3c0) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar150,local_3a0) & 0xff00ff) & 0xffff)) * iVar65; + piVar61[1] = (((uVar21 & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar151,local_360) & 0xff00ff) & 0xffff)) * iVar13 + + (uVar17 & 0xffff) * iVar62 + + (((CONCAT12(bVar194,local_3b0) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar193,(ushort)bVar190) & 0xffff)) * iVar65; + piVar61[2] = ((uint)bVar87 + (uint)bVar88) * iVar13 + + (uint)(byte)(uVar15 >> 0x10) * iVar62 + + ((uint)bVar152 + (uint)bVar150) * iVar65; + piVar61[3] = ((uint)bVar128 + (uint)bVar151) * iVar13 + + (uint)(byte)(uVar17 >> 0x10) * iVar62 + + ((uint)bVar194 + (uint)bVar193) * iVar65; + piVar61[4] = ((uint)bVar89 + (uint)bVar90) * iVar13 + (uint)bVar91 * iVar62 + + ((uint)bVar154 + (uint)bVar153) * iVar65; + piVar61[5] = iVar14; + piVar61[6] = ((uint)bVar92 + (uint)bVar93) * iVar13 + (uint)bVar94 * iVar62 + + ((uint)bVar156 + (uint)bVar155) * iVar65; + piVar61[7] = (int)(CONCAT26((short)((uint)iVar218 >> 0x10), + CONCAT24((short)iVar218,iVar14)) >> 0x20); + piVar61[8] = ((CONCAT12(bVar98,(ushort)bVar95) & 0xffff) + + (CONCAT12(bVar99,(ushort)bVar96) & 0xffff)) * iVar13 + + (CONCAT12(bVar100,(ushort)bVar97) & 0xffff) * iVar62 + + ((CONCAT12(bVar162,(ushort)bVar159) & 0xffff) + + (CONCAT12(bVar161,(ushort)bVar158) & 0xffff)) * iVar65; + piVar61[9] = ((CONCAT12(bVar131,(ushort)bVar129) & 0xffff) + + (CONCAT12(bVar160,(ushort)bVar157) & 0xffff)) * iVar13 + + (CONCAT12(bVar132,(ushort)bVar130) & 0xffff) * iVar62 + + ((CONCAT12(bVar198,(ushort)bVar196) & 0xffff) + + (CONCAT12(bVar197,(ushort)bVar195) & 0xffff)) * iVar65; + piVar61[10] = ((uint)bVar98 + (uint)bVar99) * iVar13 + (uint)bVar100 * iVar62 + + ((uint)bVar162 + (uint)bVar161) * iVar65; + piVar61[0xb] = ((uint)bVar131 + (uint)bVar160) * iVar13 + (uint)bVar132 * iVar62 + + ((uint)bVar198 + (uint)bVar197) * iVar65; + piVar61[0xc] = ((uint)bVar101 + (uint)bVar102) * iVar13 + (uint)bVar103 * iVar62 + + ((uint)bVar165 + (uint)bVar164) * iVar65; + piVar61[0xd] = ((uint)bVar133 + (uint)bVar163) * iVar13 + (uint)bVar134 * iVar62 + + ((uint)bVar200 + (uint)bVar199) * iVar65; + piVar61[0xe] = ((uint)bVar104 + (uint)bVar105) * iVar13 + (uint)bVar106 * iVar62 + + ((uint)bVar168 + (uint)bVar167) * iVar65; + piVar61[0xf] = ((uint)bVar135 + (uint)bVar166) * iVar13 + (uint)bVar136 * iVar62 + + ((uint)bVar202 + (uint)bVar201) * iVar65; + piVar61[0x10] = + (((uVar20 & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar109,uVar29) & 0xff00ff) & 0xffff)) * iVar13 + (int)uVar18 * iVar62 + + (((CONCAT12(bVar171,uStack_3b8) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar170,uStack_398) & 0xff00ff) & 0xffff)) * iVar65; + piVar61[0x11] = + (((uVar22 & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar169,uStack_358) & 0xff00ff) & 0xffff)) * iVar13 + + (uVar16 & 0xffff) * iVar62 + + (((CONCAT12(bVar205,uStack_3a8) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar204,uStack_388) & 0xff00ff) & 0xffff)) * iVar65; + piVar61[0x12] = + ((uint)bVar108 + (uint)bVar109) * iVar13 + + (uint)(ushort)(uVar18 >> 0x20) * iVar62 + + ((uint)bVar171 + (uint)bVar170) * iVar65; + piVar61[0x13] = + ((uint)bVar137 + (uint)bVar169) * iVar13 + (uint)(byte)(uVar16 >> 0x10) * iVar62 + + ((uint)bVar205 + (uint)bVar204) * iVar65; + piVar61[0x14] = + ((uint)bVar110 + (uint)bVar111) * iVar13 + (uint)bVar112 * iVar62 + + ((uint)bVar174 + (uint)bVar173) * iVar65; + piVar61[0x15] = + ((uint)bVar138 + (uint)bVar172) * iVar13 + (uint)bVar139 * iVar62 + + ((uint)bVar207 + (uint)bVar206) * iVar65; + piVar61[0x16] = + ((uint)bVar113 + (uint)bVar114) * iVar13 + (uint)bVar115 * iVar62 + + ((uint)bVar177 + (uint)bVar176) * iVar65; + piVar61[0x17] = + ((uint)bVar140 + (uint)bVar175) * iVar13 + (uint)bVar141 * iVar62 + + ((uint)bVar209 + (uint)bVar208) * iVar65; + piVar61[0x18] = + ((CONCAT12(bVar119,(ushort)bVar116) & 0xffff) + + (CONCAT12(bVar120,(ushort)bVar117) & 0xffff)) * iVar13 + + (CONCAT12(bVar121,(ushort)bVar118) & 0xffff) * iVar62 + + ((CONCAT12(bVar183,(ushort)bVar180) & 0xffff) + + (CONCAT12(bVar182,(ushort)bVar179) & 0xffff)) * iVar65; + piVar61[0x19] = + ((CONCAT12(bVar144,(ushort)bVar142) & 0xffff) + + (CONCAT12(bVar181,(ushort)bVar178) & 0xffff)) * iVar13 + + (CONCAT12(bVar145,(ushort)bVar143) & 0xffff) * iVar62 + + ((CONCAT12(bVar213,(ushort)bVar211) & 0xffff) + + (CONCAT12(bVar212,(ushort)bVar210) & 0xffff)) * iVar65; + piVar61[0x1a] = + ((uint)bVar119 + (uint)bVar120) * iVar13 + (uint)bVar121 * iVar62 + + ((uint)bVar183 + (uint)bVar182) * iVar65; + piVar61[0x1b] = + ((uint)bVar144 + (uint)bVar181) * iVar13 + (uint)bVar145 * iVar62 + + ((uint)bVar213 + (uint)bVar212) * iVar65; + piVar61[0x1c] = + ((uint)bVar122 + (uint)bVar123) * iVar13 + (uint)bVar124 * iVar62 + + ((uint)bVar186 + (uint)bVar185) * iVar65; + piVar61[0x1d] = + ((uint)bVar146 + (uint)bVar184) * iVar13 + (uint)bVar147 * iVar62 + + ((uint)bVar215 + (uint)bVar214) * iVar65; + piVar61[0x1e] = + ((uint)bVar125 + (uint)bVar126) * iVar13 + (uint)bVar127 * iVar62 + + ((uint)bVar189 + (uint)bVar188) * iVar65; + piVar61[0x1f] = + ((uint)bVar148 + (uint)bVar187) * iVar13 + (uint)bVar149 * iVar62 + + ((uint)bVar217 + (uint)bVar216) * iVar65; + piVar61 = piVar61 + 0x20; + } while (uVar73 < uVar8); + pbVar75 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001cb6a8; + } + pbVar50 = pbVar75 + 1; + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + bVar88 = pbVar50[lVar68]; + pbVar77 = pbVar75 + lVar68; + uVar63 = uVar63 + 2; + bVar89 = pbVar75[1 - param_5]; + pbVar39 = pbVar75 + lVar228; + bVar84 = *pbVar50; + bVar87 = *pbVar75; + bVar90 = pbVar50[lVar227]; + bVar91 = pbVar50[lVar226]; + pbVar50 = pbVar50 + 2; + pbVar40 = pbVar75 + lVar227; + pbVar35 = pbVar75 + lVar226; + pbVar75 = pbVar75 + 2; + *piVar61 = ((uint)*pbVar39 + (uint)*pbVar77) * iVar13 + (uint)bVar87 * iVar62 + + ((uint)*pbVar40 + (uint)*pbVar35) * iVar65; + piVar61[1] = ((uint)bVar89 + (uint)bVar88) * iVar13 + (uint)bVar84 * iVar62 + + ((uint)bVar90 + (uint)bVar91) * iVar65; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); + } +LAB_001cb6a8: + uVar60 = uVar60 + 2 + uVar230 * 2; + pbVar71 = pbVar71 + ((ulong)uVar230 + 1) * 2; + goto LAB_001c97b4; + } + iVar13 = param_4 + -1; + if (iVar13 <= (int)uVar60) goto LAB_001c97b4; + uVar230 = (param_4 + -2) - uVar60; + piVar61 = (int *)(param_3 + lVar68 * 4); + uVar73 = uVar230 >> 1; + lVar226 = (long)(param_5 << 1); + uVar12 = uVar73 + 1; + lVar69 = (ulong)uVar12 * 2; + lVar79 = (long)(param_5 * -2); + pbVar50 = (byte *)(param_2 + lVar70 + lVar226); + pbVar77 = (byte *)(param_3 + (lVar68 + lVar69) * 4); + pbVar75 = (byte *)(param_2 + lVar70 + lVar79); + if ((uVar12 < 8 || + (pbVar50 < pbVar77 && piVar61 < (int *)(param_2 + lVar70 + lVar226 + lVar69) || + pbVar75 < pbVar77 && piVar61 < (int *)(param_2 + lVar69 + lVar70 + lVar79))) || + (pbVar71 < pbVar77 && piVar61 < (int *)(param_2 + lVar70 + lVar69))) { + pbVar50 = pbVar71 + 1; + pbVar77 = pbVar71; + do { + bVar84 = *pbVar50; + bVar87 = *pbVar77; + pbVar75 = pbVar50 + lVar79; + bVar88 = pbVar77[lVar79]; + pbVar39 = pbVar50 + lVar226; + bVar89 = pbVar77[lVar226]; + pbVar50 = pbVar50 + 2; + piVar61[1] = (uint)*pbVar75 + (uint)bVar84 * -2 + (uint)*pbVar39; + *piVar61 = (uint)bVar88 + (uint)bVar87 * -2 + (uint)bVar89; + pbVar77 = pbVar77 + 2; + piVar61 = piVar61 + 2; + } while (pbVar50 != pbVar71 + (ulong)uVar73 * 2 + 3); + } + else { + uVar8 = (uVar73 - 7 >> 3) + 1; + pbVar77 = pbVar71; + uVar63 = uVar60; + if (0xd < uVar230) { + uVar230 = 0; + do { + uVar83 = *(undefined8 *)(pbVar75 + 8); + uVar82 = *(undefined8 *)pbVar75; + uVar203 = *(undefined8 *)(pbVar77 + 8); + uVar192 = *(undefined8 *)pbVar77; + uVar107 = *(undefined8 *)(pbVar50 + 8); + uVar86 = *(undefined8 *)pbVar50; + uVar230 = uVar230 + 1; + uVar15 = CONCAT12((char)((ulong)uVar82 >> 8),(short)uVar82) & 0xff00ff; + bVar84 = (byte)((ulong)uVar82 >> 0x28); + uVar16 = CONCAT12((char)((ulong)uVar192 >> 8),(short)uVar192) & 0xff00ff; + uVar17 = CONCAT12((char)((ulong)uVar86 >> 8),(short)uVar86) & 0xff00ff; + bVar87 = (byte)((ulong)uVar86 >> 0x28); + uVar19 = CONCAT12((char)((ulong)uVar83 >> 8),(short)uVar83) & 0xff00ff; + bVar88 = (byte)((ulong)uVar83 >> 0x28); + uVar20 = CONCAT12((char)((ulong)uVar203 >> 8),(short)uVar203) & 0xff00ff; + uVar21 = CONCAT12((char)((ulong)uVar107 >> 8),(short)uVar107) & 0xff00ff; + bVar89 = (byte)((ulong)uVar107 >> 0x28); + *(ulong *)(piVar61 + 2) = + CONCAT44((uint)(byte)((ulong)uVar82 >> 0x18) + + (short)(ushort)(byte)((ulong)uVar192 >> 0x18) * -2 + + (uint)(byte)((ulong)uVar86 >> 0x18), + (uint)(byte)((ulong)uVar82 >> 0x10) + + (short)(ushort)(byte)((ulong)uVar192 >> 0x10) * -2 + + (uint)(byte)((ulong)uVar86 >> 0x10)); + *(ulong *)piVar61 = + CONCAT44((uint)(byte)(uVar15 >> 0x10) + (short)(ushort)(byte)(uVar16 >> 0x10) * -2 + + (uint)(byte)(uVar17 >> 0x10), + (uVar15 & 0xffff) + (short)uVar16 * -2 + (uVar17 & 0xffff)); + *(ulong *)(piVar61 + 6) = + CONCAT44((uint)(byte)((ulong)uVar82 >> 0x38) + + (short)(ushort)(byte)((ulong)uVar192 >> 0x38) * -2 + + (uint)(byte)((ulong)uVar86 >> 0x38), + (uint)(byte)((ulong)uVar82 >> 0x30) + + (short)(ushort)(byte)((ulong)uVar192 >> 0x30) * -2 + + (uint)(byte)((ulong)uVar86 >> 0x30)); + *(ulong *)(piVar61 + 4) = + CONCAT44((uint)bVar84 + (short)(ushort)(byte)((ulong)uVar192 >> 0x28) * -2 + + (uint)bVar87, + (CONCAT12(bVar84,(ushort)(byte)((ulong)uVar82 >> 0x20)) & 0xffff) + + (short)(ushort)(byte)((ulong)uVar192 >> 0x20) * -2 + + (CONCAT12(bVar87,(ushort)(byte)((ulong)uVar86 >> 0x20)) & 0xffff)); + *(ulong *)(piVar61 + 10) = + CONCAT44((uint)(byte)((ulong)uVar83 >> 0x18) + + (short)(ushort)(byte)((ulong)uVar203 >> 0x18) * -2 + + (uint)(byte)((ulong)uVar107 >> 0x18), + (uint)(byte)((ulong)uVar83 >> 0x10) + + (short)(ushort)(byte)((ulong)uVar203 >> 0x10) * -2 + + (uint)(byte)((ulong)uVar107 >> 0x10)); + *(ulong *)(piVar61 + 8) = + CONCAT44((uint)(byte)(uVar19 >> 0x10) + (short)(ushort)(byte)(uVar20 >> 0x10) * -2 + + (uint)(byte)(uVar21 >> 0x10), + (uVar19 & 0xffff) + (short)uVar20 * -2 + (uVar21 & 0xffff)); + *(ulong *)(piVar61 + 0xe) = + CONCAT44((uint)(byte)((ulong)uVar83 >> 0x38) + + (short)(ushort)(byte)((ulong)uVar203 >> 0x38) * -2 + + (uint)(byte)((ulong)uVar107 >> 0x38), + (uint)(byte)((ulong)uVar83 >> 0x30) + + (short)(ushort)(byte)((ulong)uVar203 >> 0x30) * -2 + + (uint)(byte)((ulong)uVar107 >> 0x30)); + *(ulong *)(piVar61 + 0xc) = + CONCAT44((uint)bVar88 + (short)(ushort)(byte)((ulong)uVar203 >> 0x28) * -2 + + (uint)bVar89, + (CONCAT12(bVar88,(ushort)(byte)((ulong)uVar83 >> 0x20)) & 0xffff) + + (short)(ushort)(byte)((ulong)uVar203 >> 0x20) * -2 + + (CONCAT12(bVar89,(ushort)(byte)((ulong)uVar107 >> 0x20)) & 0xffff)); + piVar61 = piVar61 + 0x10; + pbVar50 = pbVar50 + 0x10; + pbVar75 = pbVar75 + 0x10; + pbVar77 = pbVar77 + 0x10; + } while (uVar230 < uVar8); + pbVar77 = pbVar71 + (ulong)(uVar8 * 8) * 2; + uVar63 = uVar60 + uVar8 * 0x10; + if (uVar12 == uVar8 * 8) goto LAB_001cc1ac; + } + uVar78 = -(ulong)(uVar63 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar63 << 2; + bVar84 = pbVar77[1]; + uVar12 = uVar63 + 2; + bVar87 = pbVar77[lVar79 + 1]; + bVar88 = pbVar77[lVar226 + 1]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79] + (uint)*pbVar77 * -2 + (uint)pbVar77[lVar226]; + *(uint *)(param_3 + uVar78 + 4) = (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + if ((int)uVar12 < iVar13) { + uVar78 = -(ulong)(uVar12 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar12 << 2; + bVar84 = pbVar77[3]; + uVar12 = uVar63 + 4; + bVar87 = pbVar77[lVar79 + 3]; + bVar88 = pbVar77[lVar226 + 3]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79 + 2] + (uint)pbVar77[2] * -2 + (uint)pbVar77[lVar226 + 2]; + *(uint *)(param_3 + uVar78 + 4) = (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + if ((int)uVar12 < iVar13) { + uVar78 = -(ulong)(uVar12 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar12 << 2; + bVar84 = pbVar77[5]; + uVar12 = uVar63 + 6; + bVar87 = pbVar77[lVar79 + 5]; + bVar88 = pbVar77[lVar226 + 5]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79 + 4] + (uint)pbVar77[4] * -2 + (uint)pbVar77[lVar226 + 4]; + *(uint *)(param_3 + uVar78 + 4) = (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + if ((int)uVar12 < iVar13) { + uVar78 = -(ulong)(uVar12 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar12 << 2; + bVar84 = pbVar77[7]; + uVar12 = uVar63 + 8; + bVar87 = pbVar77[lVar79 + 7]; + bVar88 = pbVar77[lVar226 + 7]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79 + 6] + (uint)pbVar77[6] * -2 + (uint)pbVar77[lVar226 + 6]; + *(uint *)(param_3 + uVar78 + 4) = (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + if ((int)uVar12 < iVar13) { + uVar78 = -(ulong)(uVar12 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar12 << 2; + bVar84 = pbVar77[9]; + uVar12 = uVar63 + 10; + bVar87 = pbVar77[lVar79 + 9]; + bVar88 = pbVar77[lVar226 + 9]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79 + 8] + (uint)pbVar77[8] * -2 + (uint)pbVar77[lVar226 + 8]; + *(uint *)(param_3 + uVar78 + 4) = (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + if ((int)uVar12 < iVar13) { + uVar78 = -(ulong)(uVar12 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar12 << 2; + bVar84 = pbVar77[0xb]; + uVar63 = uVar63 + 0xc; + bVar87 = pbVar77[lVar79 + 0xb]; + bVar88 = pbVar77[lVar226 + 0xb]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79 + 10] + (uint)pbVar77[10] * -2 + + (uint)pbVar77[lVar226 + 10]; + *(uint *)(param_3 + uVar78 + 4) = (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + if ((int)uVar63 < iVar13) { + uVar78 = -(ulong)(uVar63 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar63 << 2; + bVar84 = pbVar77[0xd]; + bVar87 = pbVar77[lVar79 + 0xd]; + bVar88 = pbVar77[lVar226 + 0xd]; + *(uint *)(param_3 + uVar78) = + (uint)pbVar77[lVar79 + 0xc] + (uint)pbVar77[0xc] * -2 + + (uint)pbVar77[lVar226 + 0xc]; + *(uint *)(param_3 + uVar78 + 4) = + (uint)bVar87 + (uint)bVar84 * -2 + (uint)bVar88; + } + } + } + } + } + } + } +LAB_001cc1ac: + uVar60 = uVar60 + 2 + uVar73 * 2; + pbVar71 = pbVar71 + ((ulong)uVar73 + 1) * 2; + goto LAB_001c97b4; + } + iVar13 = *(int *)(lVar72 + lVar74); + if (iVar13 == 2) { + iVar65 = piVar10[1]; + if (iVar65 == 1) { + if (param_4 + -1 <= (int)uVar60) goto LAB_001c97b4; + uVar230 = (param_4 + -2) - uVar60; + uVar73 = uVar230 >> 1; + lVar226 = (long)-param_5; + uVar12 = uVar73 + 1; + piVar61 = (int *)(param_3 + lVar68 * 4); + lVar79 = (ulong)uVar12 * 2; + lVar69 = lVar70 + lVar226 + 1; + pbVar50 = (byte *)(param_2 + lVar69); + lVar227 = (long)param_5; + pbVar77 = (byte *)(param_3 + (lVar68 + lVar79) * 4); + pbVar75 = (byte *)(param_2 + lVar70 + lVar226); + pbVar39 = (byte *)(param_2 + lVar70 + lVar227); + if (((uVar12 < 0x10 || + (pbVar50 < pbVar77 && piVar61 < (int *)(param_2 + lVar69 + lVar79) || + pbVar75 < pbVar77 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar226))) || + pbVar71 < pbVar77 && piVar61 < (int *)(param_2 + lVar70 + lVar79)) || + (pbVar39 < pbVar77 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar227))) { + uVar78 = (ulong)uVar73; + pbVar50 = pbVar71; + do { + bVar84 = pbVar50[1]; + bVar87 = *pbVar50; + bVar89 = pbVar50[1 - param_5]; + pbVar77 = pbVar50 + lVar226; + pbVar75 = pbVar50 + lVar227; + bVar88 = pbVar50[lVar227 + 1]; + pbVar50 = pbVar50 + 2; + *piVar61 = (uint)*pbVar77 + (uint)bVar87 * 2 + (uint)*pbVar75; + piVar61[1] = (uint)bVar89 + (uint)bVar84 * 2 + (uint)bVar88; + piVar61 = piVar61 + 2; + } while (pbVar50 != pbVar71 + (uVar78 + 1) * 2); + } + else { + uVar8 = (uVar73 - 0x10 >> 4) + 1; + pbVar77 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar230) { + uVar230 = 0; + do { + bVar84 = *pbVar75; + pbVar40 = pbVar75 + 2; + bVar87 = pbVar75[4]; + bVar90 = pbVar75[6]; + bVar93 = pbVar75[8]; + bVar96 = pbVar75[10]; + bVar99 = pbVar75[0xc]; + bVar102 = pbVar75[0xe]; + pbVar35 = pbVar75 + 0x10; + pbVar33 = pbVar75 + 0x12; + bVar105 = pbVar75[0x14]; + bVar109 = pbVar75[0x16]; + bVar112 = pbVar75[0x18]; + bVar115 = pbVar75[0x1a]; + bVar118 = pbVar75[0x1c]; + bVar121 = pbVar75[0x1e]; + pbVar75 = pbVar75 + 0x20; + bVar148 = *pbVar50; + pbVar34 = pbVar50 + 2; + bVar149 = pbVar50[4]; + bVar150 = pbVar50[6]; + bVar151 = pbVar50[8]; + bVar152 = pbVar50[10]; + bVar153 = pbVar50[0xc]; + bVar154 = pbVar50[0xe]; + pbVar30 = pbVar50 + 0x10; + pbVar31 = pbVar50 + 0x12; + bVar155 = pbVar50[0x14]; + bVar156 = pbVar50[0x16]; + bVar157 = pbVar50[0x18]; + bVar158 = pbVar50[0x1a]; + bVar159 = pbVar50[0x1c]; + bVar160 = pbVar50[0x1e]; + pbVar50 = pbVar50 + 0x20; + uVar230 = uVar230 + 1; + local_380 = CONCAT11(*pbVar40,bVar84); + uVar28 = local_380; + uStack_378 = CONCAT11(*pbVar33,*pbVar35); + uVar29 = uStack_378; + bVar84 = *pbVar77; + pbVar38 = pbVar77 + 1; + pbVar37 = pbVar77 + 2; + pbVar36 = pbVar77 + 3; + bVar88 = pbVar77[4]; + bVar124 = pbVar77[5]; + bVar91 = pbVar77[6]; + bVar126 = pbVar77[7]; + bVar94 = pbVar77[8]; + bVar128 = pbVar77[9]; + bVar97 = pbVar77[10]; + bVar130 = pbVar77[0xb]; + bVar100 = pbVar77[0xc]; + bVar132 = pbVar77[0xd]; + bVar103 = pbVar77[0xe]; + bVar134 = pbVar77[0xf]; + pbVar32 = pbVar77 + 0x10; + pbVar35 = pbVar77 + 0x11; + pbVar42 = pbVar77 + 0x12; + pbVar41 = pbVar77 + 0x13; + bVar106 = pbVar77[0x14]; + bVar136 = pbVar77[0x15]; + bVar110 = pbVar77[0x16]; + bVar138 = pbVar77[0x17]; + bVar113 = pbVar77[0x18]; + bVar140 = pbVar77[0x19]; + bVar116 = pbVar77[0x1a]; + bVar142 = pbVar77[0x1b]; + bVar119 = pbVar77[0x1c]; + bVar144 = pbVar77[0x1d]; + bVar122 = pbVar77[0x1e]; + bVar146 = pbVar77[0x1f]; + pbVar77 = pbVar77 + 0x20; + local_3a0 = CONCAT11(*pbVar37,bVar84); + uStack_398 = CONCAT11(*pbVar42,*pbVar32); + local_390 = CONCAT11(*pbVar36,*pbVar38); + uStack_388 = CONCAT11(*pbVar41,*pbVar35); + bVar84 = *pbVar39; + pbVar35 = pbVar39 + 1; + pbVar46 = pbVar39 + 2; + pbVar45 = pbVar39 + 3; + bVar89 = pbVar39[4]; + bVar125 = pbVar39[5]; + bVar92 = pbVar39[6]; + bVar127 = pbVar39[7]; + bVar95 = pbVar39[8]; + bVar129 = pbVar39[9]; + bVar98 = pbVar39[10]; + bVar131 = pbVar39[0xb]; + bVar101 = pbVar39[0xc]; + bVar133 = pbVar39[0xd]; + bVar104 = pbVar39[0xe]; + bVar135 = pbVar39[0xf]; + pbVar38 = pbVar39 + 0x10; + pbVar32 = pbVar39 + 0x11; + pbVar44 = pbVar39 + 0x12; + pbVar43 = pbVar39 + 0x13; + bVar108 = pbVar39[0x14]; + bVar137 = pbVar39[0x15]; + bVar111 = pbVar39[0x16]; + bVar139 = pbVar39[0x17]; + bVar114 = pbVar39[0x18]; + bVar141 = pbVar39[0x19]; + bVar117 = pbVar39[0x1a]; + bVar143 = pbVar39[0x1b]; + bVar120 = pbVar39[0x1c]; + bVar145 = pbVar39[0x1d]; + bVar123 = pbVar39[0x1e]; + bVar147 = pbVar39[0x1f]; + pbVar39 = pbVar39 + 0x20; + local_3c0 = CONCAT11(*pbVar46,bVar84); + uStack_3b8 = CONCAT11(*pbVar44,*pbVar38); + local_3b0 = CONCAT11(*pbVar45,*pbVar35); + uStack_3a8 = CONCAT11(*pbVar43,*pbVar32); + local_380 = CONCAT11(*pbVar34,bVar148); + uStack_378 = CONCAT11(*pbVar31,*pbVar30); + uVar15 = CONCAT12(*pbVar40,uVar28) & 0xff00ff; + uVar16 = CONCAT12(*pbVar33,uVar29) & 0xff00ff; + uVar17 = CONCAT12(*pbVar37,local_3a0) & 0xff00ff; + uVar19 = CONCAT12(*pbVar36,local_390) & 0xff00ff; + uVar20 = CONCAT12(*pbVar46,local_3c0) & 0xff00ff; + uVar21 = CONCAT12(*pbVar34,local_380) & 0xff00ff; + uVar22 = CONCAT12(*pbVar45,local_3b0) & 0xff00ff; + uVar23 = CONCAT12(*pbVar42,uStack_398) & 0xff00ff; + uVar24 = CONCAT12(*pbVar44,uStack_3b8) & 0xff00ff; + uVar25 = CONCAT12(*pbVar31,uStack_378) & 0xff00ff; + uVar26 = CONCAT12(*pbVar41,uStack_388) & 0xff00ff; + uVar27 = CONCAT12(*pbVar43,uStack_3a8) & 0xff00ff; + *piVar61 = (uVar15 & 0xffff) + (short)uVar17 * 2 + (uVar20 & 0xffff); + piVar61[1] = (uVar21 & 0xffff) + (short)uVar19 * 2 + (uVar22 & 0xffff); + piVar61[2] = (uint)(byte)(uVar15 >> 0x10) + (short)(ushort)(byte)(uVar17 >> 0x10) * 2 + + (uint)(byte)(uVar20 >> 0x10); + piVar61[3] = (uint)(byte)(uVar21 >> 0x10) + (short)(ushort)(byte)(uVar19 >> 0x10) * 2 + + (uint)(byte)(uVar22 >> 0x10); + piVar61[4] = (uint)bVar87 + (short)(ushort)bVar88 * 2 + (uint)bVar89; + piVar61[5] = (uint)bVar149 + (short)(ushort)bVar124 * 2 + (uint)bVar125; + piVar61[6] = (uint)bVar90 + (short)(ushort)bVar91 * 2 + (uint)bVar92; + piVar61[7] = (uint)bVar150 + (short)(ushort)bVar126 * 2 + (uint)bVar127; + piVar61[8] = (CONCAT12(bVar96,(ushort)bVar93) & 0xffff) + (short)(ushort)bVar94 * 2 + + (CONCAT12(bVar98,(ushort)bVar95) & 0xffff); + piVar61[9] = (CONCAT12(bVar152,(ushort)bVar151) & 0xffff) + (short)(ushort)bVar128 * 2 + + (CONCAT12(bVar131,(ushort)bVar129) & 0xffff); + piVar61[10] = (uint)bVar96 + (short)(ushort)bVar97 * 2 + (uint)bVar98; + piVar61[0xb] = (uint)bVar152 + (short)(ushort)bVar130 * 2 + (uint)bVar131; + piVar61[0xc] = (uint)bVar99 + (short)(ushort)bVar100 * 2 + (uint)bVar101; + piVar61[0xd] = (uint)bVar153 + (short)(ushort)bVar132 * 2 + (uint)bVar133; + piVar61[0xe] = (uint)bVar102 + (short)(ushort)bVar103 * 2 + (uint)bVar104; + piVar61[0xf] = (uint)bVar154 + (short)(ushort)bVar134 * 2 + (uint)bVar135; + piVar61[0x10] = (uVar16 & 0xffff) + (short)uVar23 * 2 + (uVar24 & 0xffff); + piVar61[0x11] = (uVar25 & 0xffff) + (short)uVar26 * 2 + (uVar27 & 0xffff); + piVar61[0x12] = + (uint)(byte)(uVar16 >> 0x10) + (short)(ushort)(byte)(uVar23 >> 0x10) * 2 + + (uint)(byte)(uVar24 >> 0x10); + piVar61[0x13] = + (uint)(byte)(uVar25 >> 0x10) + (short)(ushort)(byte)(uVar26 >> 0x10) * 2 + + (uint)(byte)(uVar27 >> 0x10); + piVar61[0x14] = (uint)bVar105 + (short)(ushort)bVar106 * 2 + (uint)bVar108; + piVar61[0x15] = (uint)bVar155 + (short)(ushort)bVar136 * 2 + (uint)bVar137; + piVar61[0x16] = (uint)bVar109 + (short)(ushort)bVar110 * 2 + (uint)bVar111; + piVar61[0x17] = (uint)bVar156 + (short)(ushort)bVar138 * 2 + (uint)bVar139; + piVar61[0x18] = + (CONCAT12(bVar115,(ushort)bVar112) & 0xffff) + (short)(ushort)bVar113 * 2 + + (CONCAT12(bVar117,(ushort)bVar114) & 0xffff); + piVar61[0x19] = + (CONCAT12(bVar158,(ushort)bVar157) & 0xffff) + (short)(ushort)bVar140 * 2 + + (CONCAT12(bVar143,(ushort)bVar141) & 0xffff); + piVar61[0x1a] = (uint)bVar115 + (short)(ushort)bVar116 * 2 + (uint)bVar117; + piVar61[0x1b] = (uint)bVar158 + (short)(ushort)bVar142 * 2 + (uint)bVar143; + piVar61[0x1c] = (uint)bVar118 + (short)(ushort)bVar119 * 2 + (uint)bVar120; + piVar61[0x1d] = (uint)bVar159 + (short)(ushort)bVar144 * 2 + (uint)bVar145; + piVar61[0x1e] = (uint)bVar121 + (short)(ushort)bVar122 * 2 + (uint)bVar123; + piVar61[0x1f] = (uint)bVar160 + (short)(ushort)bVar146 * 2 + (uint)bVar147; + piVar61 = piVar61 + 0x20; + } while (uVar230 < uVar8); + pbVar77 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001cc578; + } + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + bVar84 = pbVar77[1]; + bVar88 = pbVar77[1 - param_5]; + uVar63 = uVar63 + 2; + bVar87 = pbVar77[lVar227 + 1]; + *piVar61 = (uint)pbVar77[lVar226] + (uint)*pbVar77 * 2 + (uint)pbVar77[lVar227]; + piVar61[1] = (uint)bVar88 + (uint)bVar84 * 2 + (uint)bVar87; + pbVar77 = pbVar77 + 2; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); +LAB_001cc578: + uVar78 = (ulong)uVar73; + } +LAB_001cc57c: + uVar60 = uVar60 + 2 + uVar73 * 2; + pbVar71 = pbVar71 + (uVar78 + 1) * 2; + goto LAB_001c97b4; + } + } + else if (iVar13 == -2) { + iVar65 = piVar10[1]; + if (iVar65 == 1) { + if (param_4 + -1 <= (int)uVar60) goto LAB_001c97b4; + uVar230 = (param_4 + -2) - uVar60; + uVar73 = uVar230 >> 1; + lVar226 = (long)-param_5; + uVar12 = uVar73 + 1; + piVar61 = (int *)(param_3 + lVar68 * 4); + lVar79 = (ulong)uVar12 * 2; + lVar69 = lVar70 + lVar226 + 1; + pbVar50 = (byte *)(param_2 + lVar69); + lVar227 = (long)param_5; + pbVar77 = (byte *)(param_3 + (lVar68 + lVar79) * 4); + pbVar75 = (byte *)(param_2 + lVar70 + lVar226); + pbVar39 = (byte *)(param_2 + lVar70 + lVar227); + if (((0xf < uVar12 && + ((pbVar77 <= pbVar50 || (int *)(param_2 + lVar69 + lVar79) <= piVar61) && + (pbVar77 <= pbVar75 || (int *)(param_2 + lVar79 + lVar70 + lVar226) <= piVar61))) && + (pbVar77 <= pbVar71 || (int *)(param_2 + lVar70 + lVar79) <= piVar61)) && + (pbVar77 <= pbVar39 || (int *)(param_2 + lVar79 + lVar70 + lVar227) <= piVar61)) { + uVar8 = (uVar73 - 0x10 >> 4) + 1; + pbVar77 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar230) { + uVar230 = 0; + do { + bVar84 = *pbVar75; + pbVar33 = pbVar75 + 2; + bVar87 = pbVar75[4]; + bVar90 = pbVar75[6]; + bVar93 = pbVar75[8]; + bVar96 = pbVar75[10]; + bVar99 = pbVar75[0xc]; + bVar102 = pbVar75[0xe]; + pbVar35 = pbVar75 + 0x10; + pbVar40 = pbVar75 + 0x12; + bVar105 = pbVar75[0x14]; + bVar109 = pbVar75[0x16]; + bVar112 = pbVar75[0x18]; + bVar115 = pbVar75[0x1a]; + bVar118 = pbVar75[0x1c]; + bVar121 = pbVar75[0x1e]; + pbVar75 = pbVar75 + 0x20; + bVar148 = *pbVar50; + pbVar31 = pbVar50 + 2; + bVar149 = pbVar50[4]; + bVar150 = pbVar50[6]; + bVar151 = pbVar50[8]; + bVar152 = pbVar50[10]; + bVar153 = pbVar50[0xc]; + bVar154 = pbVar50[0xe]; + pbVar30 = pbVar50 + 0x10; + pbVar34 = pbVar50 + 0x12; + bVar155 = pbVar50[0x14]; + bVar156 = pbVar50[0x16]; + bVar157 = pbVar50[0x18]; + bVar158 = pbVar50[0x1a]; + bVar159 = pbVar50[0x1c]; + bVar160 = pbVar50[0x1e]; + pbVar50 = pbVar50 + 0x20; + uVar230 = uVar230 + 1; + local_380 = CONCAT11(*pbVar33,bVar84); + uVar28 = local_380; + uStack_378 = CONCAT11(*pbVar40,*pbVar35); + uVar29 = uStack_378; + bVar84 = *pbVar77; + pbVar32 = pbVar77 + 1; + pbVar35 = pbVar77 + 2; + pbVar38 = pbVar77 + 3; + bVar88 = pbVar77[4]; + bVar124 = pbVar77[5]; + bVar91 = pbVar77[6]; + bVar126 = pbVar77[7]; + bVar94 = pbVar77[8]; + bVar128 = pbVar77[9]; + bVar97 = pbVar77[10]; + bVar130 = pbVar77[0xb]; + bVar100 = pbVar77[0xc]; + bVar132 = pbVar77[0xd]; + bVar103 = pbVar77[0xe]; + bVar134 = pbVar77[0xf]; + pbVar36 = pbVar77 + 0x10; + pbVar42 = pbVar77 + 0x11; + pbVar37 = pbVar77 + 0x12; + pbVar41 = pbVar77 + 0x13; + bVar106 = pbVar77[0x14]; + bVar136 = pbVar77[0x15]; + bVar110 = pbVar77[0x16]; + bVar138 = pbVar77[0x17]; + bVar113 = pbVar77[0x18]; + bVar140 = pbVar77[0x19]; + bVar116 = pbVar77[0x1a]; + bVar142 = pbVar77[0x1b]; + bVar119 = pbVar77[0x1c]; + bVar144 = pbVar77[0x1d]; + bVar122 = pbVar77[0x1e]; + bVar146 = pbVar77[0x1f]; + pbVar77 = pbVar77 + 0x20; + local_3a0 = CONCAT11(*pbVar35,bVar84); + uStack_398 = CONCAT11(*pbVar37,*pbVar36); + local_390 = CONCAT11(*pbVar38,*pbVar32); + uStack_388 = CONCAT11(*pbVar41,*pbVar42); + bVar84 = *pbVar39; + pbVar32 = pbVar39 + 1; + pbVar46 = pbVar39 + 2; + pbVar42 = pbVar39 + 3; + bVar89 = pbVar39[4]; + bVar125 = pbVar39[5]; + bVar92 = pbVar39[6]; + bVar127 = pbVar39[7]; + bVar95 = pbVar39[8]; + bVar129 = pbVar39[9]; + bVar98 = pbVar39[10]; + bVar131 = pbVar39[0xb]; + bVar101 = pbVar39[0xc]; + bVar133 = pbVar39[0xd]; + bVar104 = pbVar39[0xe]; + bVar135 = pbVar39[0xf]; + pbVar36 = pbVar39 + 0x10; + pbVar43 = pbVar39 + 0x11; + pbVar44 = pbVar39 + 0x12; + pbVar45 = pbVar39 + 0x13; + bVar108 = pbVar39[0x14]; + bVar137 = pbVar39[0x15]; + bVar111 = pbVar39[0x16]; + bVar139 = pbVar39[0x17]; + bVar114 = pbVar39[0x18]; + bVar141 = pbVar39[0x19]; + bVar117 = pbVar39[0x1a]; + bVar143 = pbVar39[0x1b]; + bVar120 = pbVar39[0x1c]; + bVar145 = pbVar39[0x1d]; + bVar123 = pbVar39[0x1e]; + bVar147 = pbVar39[0x1f]; + pbVar39 = pbVar39 + 0x20; + local_3c0 = CONCAT11(*pbVar46,bVar84); + uStack_3b8 = CONCAT11(*pbVar44,*pbVar36); + local_3b0 = CONCAT11(*pbVar42,*pbVar32); + uStack_3a8 = CONCAT11(*pbVar45,*pbVar43); + local_380 = CONCAT11(*pbVar31,bVar148); + uStack_378 = CONCAT11(*pbVar34,*pbVar30); + uVar15 = CONCAT12(*pbVar33,uVar28) & 0xff00ff; + uVar16 = CONCAT12(*pbVar40,uVar29) & 0xff00ff; + uVar17 = CONCAT12(*pbVar35,local_3a0) & 0xff00ff; + uVar19 = CONCAT12(*pbVar38,local_390) & 0xff00ff; + uVar20 = CONCAT12(*pbVar46,local_3c0) & 0xff00ff; + uVar21 = CONCAT12(*pbVar31,local_380) & 0xff00ff; + uVar22 = CONCAT12(*pbVar42,local_3b0) & 0xff00ff; + uVar23 = CONCAT12(*pbVar37,uStack_398) & 0xff00ff; + uVar24 = CONCAT12(*pbVar44,uStack_3b8) & 0xff00ff; + uVar25 = CONCAT12(*pbVar34,uStack_378) & 0xff00ff; + uVar26 = CONCAT12(*pbVar41,uStack_388) & 0xff00ff; + uVar27 = CONCAT12(*pbVar45,uStack_3a8) & 0xff00ff; + *piVar61 = (uVar15 & 0xffff) + (short)uVar17 * -2 + (uVar20 & 0xffff); + piVar61[1] = (uVar21 & 0xffff) + (short)uVar19 * -2 + (uVar22 & 0xffff); + piVar61[2] = (uint)(byte)(uVar15 >> 0x10) + (short)(ushort)(byte)(uVar17 >> 0x10) * -2 + + (uint)(byte)(uVar20 >> 0x10); + piVar61[3] = (uint)(byte)(uVar21 >> 0x10) + (short)(ushort)(byte)(uVar19 >> 0x10) * -2 + + (uint)(byte)(uVar22 >> 0x10); + piVar61[4] = (uint)bVar87 + (short)(ushort)bVar88 * -2 + (uint)bVar89; + piVar61[5] = (uint)bVar149 + (short)(ushort)bVar124 * -2 + (uint)bVar125; + piVar61[6] = (uint)bVar90 + (short)(ushort)bVar91 * -2 + (uint)bVar92; + piVar61[7] = (uint)bVar150 + (short)(ushort)bVar126 * -2 + (uint)bVar127; + piVar61[8] = (CONCAT12(bVar96,(ushort)bVar93) & 0xffff) + (short)(ushort)bVar94 * -2 + + (CONCAT12(bVar98,(ushort)bVar95) & 0xffff); + piVar61[9] = (CONCAT12(bVar152,(ushort)bVar151) & 0xffff) + + (short)(ushort)bVar128 * -2 + + (CONCAT12(bVar131,(ushort)bVar129) & 0xffff); + piVar61[10] = (uint)bVar96 + (short)(ushort)bVar97 * -2 + (uint)bVar98; + piVar61[0xb] = (uint)bVar152 + (short)(ushort)bVar130 * -2 + (uint)bVar131; + piVar61[0xc] = (uint)bVar99 + (short)(ushort)bVar100 * -2 + (uint)bVar101; + piVar61[0xd] = (uint)bVar153 + (short)(ushort)bVar132 * -2 + (uint)bVar133; + piVar61[0xe] = (uint)bVar102 + (short)(ushort)bVar103 * -2 + (uint)bVar104; + piVar61[0xf] = (uint)bVar154 + (short)(ushort)bVar134 * -2 + (uint)bVar135; + piVar61[0x10] = (uVar16 & 0xffff) + (short)uVar23 * -2 + (uVar24 & 0xffff); + piVar61[0x11] = (uVar25 & 0xffff) + (short)uVar26 * -2 + (uVar27 & 0xffff); + piVar61[0x12] = + (uint)(byte)(uVar16 >> 0x10) + (short)(ushort)(byte)(uVar23 >> 0x10) * -2 + + (uint)(byte)(uVar24 >> 0x10); + piVar61[0x13] = + (uint)(byte)(uVar25 >> 0x10) + (short)(ushort)(byte)(uVar26 >> 0x10) * -2 + + (uint)(byte)(uVar27 >> 0x10); + piVar61[0x14] = (uint)bVar105 + (short)(ushort)bVar106 * -2 + (uint)bVar108; + piVar61[0x15] = (uint)bVar155 + (short)(ushort)bVar136 * -2 + (uint)bVar137; + piVar61[0x16] = (uint)bVar109 + (short)(ushort)bVar110 * -2 + (uint)bVar111; + piVar61[0x17] = (uint)bVar156 + (short)(ushort)bVar138 * -2 + (uint)bVar139; + piVar61[0x18] = + (CONCAT12(bVar115,(ushort)bVar112) & 0xffff) + (short)(ushort)bVar113 * -2 + + (CONCAT12(bVar117,(ushort)bVar114) & 0xffff); + piVar61[0x19] = + (CONCAT12(bVar158,(ushort)bVar157) & 0xffff) + (short)(ushort)bVar140 * -2 + + (CONCAT12(bVar143,(ushort)bVar141) & 0xffff); + piVar61[0x1a] = (uint)bVar115 + (short)(ushort)bVar116 * -2 + (uint)bVar117; + piVar61[0x1b] = (uint)bVar158 + (short)(ushort)bVar142 * -2 + (uint)bVar143; + piVar61[0x1c] = (uint)bVar118 + (short)(ushort)bVar119 * -2 + (uint)bVar120; + piVar61[0x1d] = (uint)bVar159 + (short)(ushort)bVar144 * -2 + (uint)bVar145; + piVar61[0x1e] = (uint)bVar121 + (short)(ushort)bVar122 * -2 + (uint)bVar123; + piVar61[0x1f] = (uint)bVar160 + (short)(ushort)bVar146 * -2 + (uint)bVar147; + piVar61 = piVar61 + 0x20; + } while (uVar230 < uVar8); + pbVar77 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001cc578; + } + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + bVar84 = pbVar77[1]; + bVar88 = pbVar77[1 - param_5]; + uVar63 = uVar63 + 2; + bVar87 = pbVar77[lVar227 + 1]; + *piVar61 = (uint)pbVar77[lVar226] + (uint)*pbVar77 * -2 + (uint)pbVar77[lVar227]; + piVar61[1] = (uint)bVar88 + (uint)bVar84 * -2 + (uint)bVar87; + pbVar77 = pbVar77 + 2; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); + goto LAB_001cc578; + } + uVar78 = (ulong)uVar73; + pbVar50 = pbVar71; + do { + bVar84 = pbVar50[1]; + bVar87 = *pbVar50; + bVar89 = pbVar50[1 - param_5]; + pbVar77 = pbVar50 + lVar226; + pbVar75 = pbVar50 + lVar227; + bVar88 = pbVar50[lVar227 + 1]; + pbVar50 = pbVar50 + 2; + *piVar61 = (uint)*pbVar77 + (uint)bVar87 * -2 + (uint)*pbVar75; + piVar61[1] = (uint)bVar89 + (uint)bVar84 * -2 + (uint)bVar88; + piVar61 = piVar61 + 2; + } while (pbVar50 != pbVar71 + (uVar78 + 1) * 2); + goto LAB_001cc57c; + } + } + else { + iVar65 = piVar10[1]; + } + if (param_4 + -1 <= (int)uVar60) goto LAB_001c97b4; + uVar230 = (param_4 + -2) - uVar60; + piVar61 = (int *)(param_3 + lVar68 * 4); + lVar227 = (long)-param_5; + uVar73 = uVar230 >> 1; + pbVar50 = (byte *)(param_2 + lVar70 + lVar227); + lVar69 = lVar70 + lVar227 + 1; + pbVar77 = (byte *)(param_2 + lVar69); + lVar226 = (long)param_5; + uVar12 = uVar73 + 1; + lVar79 = (ulong)uVar12 * 2; + pbVar75 = (byte *)(param_3 + (lVar68 + lVar79) * 4); + pbVar39 = (byte *)(param_2 + lVar70 + lVar226); + if (((uVar12 < 0x10 || + (pbVar77 < pbVar75 && piVar61 < (int *)(param_2 + lVar69 + lVar79) || + pbVar50 < pbVar75 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar227))) || + pbVar71 < pbVar75 && piVar61 < (int *)(param_2 + lVar70 + lVar79)) || + (pbVar39 < pbVar75 && piVar61 < (int *)(param_2 + lVar79 + lVar70 + lVar226))) { + pbVar50 = pbVar71; + do { + bVar87 = pbVar50[1 - param_5]; + pbVar77 = pbVar50 + 2; + bVar84 = pbVar50[lVar226 + 1]; + bVar88 = pbVar50[1]; + *piVar61 = ((uint)pbVar50[lVar227] + (uint)pbVar50[lVar226]) * iVar65 + + iVar13 * (uint)*pbVar50; + piVar61[1] = ((uint)bVar87 + (uint)bVar84) * iVar65 + iVar13 * (uint)bVar88; + pbVar50 = pbVar77; + piVar61 = piVar61 + 2; + } while (pbVar77 != pbVar71 + ((ulong)uVar73 + 1) * 2); + } + else { + uVar8 = (uVar73 - 0x10 >> 4) + 1; + pbVar75 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar230) { + uVar230 = 0; + do { + bVar84 = *pbVar39; + pbVar35 = pbVar39 + 1; + bVar87 = pbVar39[2]; + bVar128 = pbVar39[3]; + bVar89 = pbVar39[4]; + bVar129 = pbVar39[5]; + bVar92 = pbVar39[6]; + bVar131 = pbVar39[7]; + bVar95 = pbVar39[8]; + bVar133 = pbVar39[9]; + bVar98 = pbVar39[10]; + bVar135 = pbVar39[0xb]; + bVar101 = pbVar39[0xc]; + bVar137 = pbVar39[0xd]; + bVar104 = pbVar39[0xe]; + bVar139 = pbVar39[0xf]; + pbVar40 = pbVar39 + 0x10; + pbVar33 = pbVar39 + 0x11; + bVar108 = pbVar39[0x12]; + bVar141 = pbVar39[0x13]; + bVar110 = pbVar39[0x14]; + bVar142 = pbVar39[0x15]; + bVar113 = pbVar39[0x16]; + bVar144 = pbVar39[0x17]; + bVar116 = pbVar39[0x18]; + bVar146 = pbVar39[0x19]; + bVar119 = pbVar39[0x1a]; + bVar148 = pbVar39[0x1b]; + bVar122 = pbVar39[0x1c]; + bVar150 = pbVar39[0x1d]; + bVar125 = pbVar39[0x1e]; + bVar152 = pbVar39[0x1f]; + pbVar39 = pbVar39 + 0x20; + bVar154 = *pbVar77; + bVar155 = pbVar77[2]; + bVar156 = pbVar77[4]; + bVar157 = pbVar77[6]; + bVar158 = pbVar77[8]; + bVar159 = pbVar77[10]; + bVar160 = pbVar77[0xc]; + bVar161 = pbVar77[0xe]; + pbVar34 = pbVar77 + 0x10; + bVar162 = pbVar77[0x12]; + bVar163 = pbVar77[0x14]; + bVar164 = pbVar77[0x16]; + bVar165 = pbVar77[0x18]; + bVar166 = pbVar77[0x1a]; + bVar167 = pbVar77[0x1c]; + bVar168 = pbVar77[0x1e]; + pbVar77 = pbVar77 + 0x20; + uVar230 = uVar230 + 1; + local_3c0 = CONCAT11(bVar87,bVar84); + uStack_3b8 = CONCAT11(bVar108,*pbVar40); + local_3b0 = CONCAT11(bVar128,*pbVar35); + uStack_3a8 = CONCAT11(bVar141,*pbVar33); + bVar84 = *pbVar50; + bVar88 = pbVar50[2]; + bVar90 = pbVar50[4]; + bVar93 = pbVar50[6]; + bVar96 = pbVar50[8]; + bVar99 = pbVar50[10]; + bVar102 = pbVar50[0xc]; + bVar105 = pbVar50[0xe]; + pbVar40 = pbVar50 + 0x10; + bVar109 = pbVar50[0x12]; + bVar111 = pbVar50[0x14]; + bVar114 = pbVar50[0x16]; + bVar117 = pbVar50[0x18]; + bVar120 = pbVar50[0x1a]; + bVar123 = pbVar50[0x1c]; + bVar126 = pbVar50[0x1e]; + pbVar50 = pbVar50 + 0x20; + local_360 = CONCAT11(bVar88,bVar84); + uStack_358 = CONCAT11(bVar109,*pbVar40); + bVar84 = *pbVar75; + pbVar40 = pbVar75 + 1; + pbVar35 = pbVar75 + 2; + pbVar33 = pbVar75 + 3; + bVar91 = pbVar75[4]; + bVar130 = pbVar75[5]; + bVar94 = pbVar75[6]; + bVar132 = pbVar75[7]; + bVar97 = pbVar75[8]; + bVar134 = pbVar75[9]; + bVar100 = pbVar75[10]; + bVar136 = pbVar75[0xb]; + bVar103 = pbVar75[0xc]; + bVar138 = pbVar75[0xd]; + bVar106 = pbVar75[0xe]; + bVar140 = pbVar75[0xf]; + pbVar36 = pbVar75 + 0x10; + pbVar30 = pbVar75 + 0x11; + pbVar31 = pbVar75 + 0x12; + pbVar32 = pbVar75 + 0x13; + bVar112 = pbVar75[0x14]; + bVar143 = pbVar75[0x15]; + bVar115 = pbVar75[0x16]; + bVar145 = pbVar75[0x17]; + bVar118 = pbVar75[0x18]; + bVar147 = pbVar75[0x19]; + bVar121 = pbVar75[0x1a]; + bVar149 = pbVar75[0x1b]; + bVar124 = pbVar75[0x1c]; + bVar151 = pbVar75[0x1d]; + bVar127 = pbVar75[0x1e]; + bVar153 = pbVar75[0x1f]; + pbVar75 = pbVar75 + 0x20; + local_3a0 = CONCAT11(*pbVar35,bVar84); + uStack_398 = CONCAT11(*pbVar31,*pbVar36); + local_390 = CONCAT11(*pbVar33,*pbVar40); + uStack_388 = CONCAT11(*pbVar32,*pbVar30); + local_380 = CONCAT11(bVar155,bVar154); + uStack_378 = CONCAT11(bVar162,*pbVar34); + uVar15 = CONCAT12(*pbVar35,local_3a0) & 0xff00ff; + uVar16 = CONCAT12(*pbVar31,uStack_398) & 0xff00ff; + uVar17 = CONCAT12(*pbVar33,local_390) & 0xff00ff; + uVar19 = CONCAT12(*pbVar32,uStack_388) & 0xff00ff; + *piVar61 = (((CONCAT12(bVar87,local_3c0) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar88,local_360) & 0xff00ff) & 0xffff)) * iVar65 + + iVar13 * (uVar15 & 0xffff); + piVar61[1] = (((CONCAT12(bVar128,local_3b0) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar155,local_380) & 0xff00ff) & 0xffff)) * iVar65 + + iVar13 * (uVar17 & 0xffff); + piVar61[2] = ((uint)bVar87 + (uint)bVar88) * iVar65 + + iVar13 * (uint)(byte)(uVar15 >> 0x10); + piVar61[3] = ((uint)bVar128 + (uint)bVar155) * iVar65 + + iVar13 * (uint)(byte)(uVar17 >> 0x10); + piVar61[4] = ((uint)bVar89 + (uint)bVar90) * iVar65 + iVar13 * (uint)bVar91; + piVar61[5] = ((uint)bVar129 + (uint)bVar156) * iVar65 + iVar13 * (uint)bVar130; + piVar61[6] = ((uint)bVar92 + (uint)bVar93) * iVar65 + iVar13 * (uint)bVar94; + piVar61[7] = ((uint)bVar131 + (uint)bVar157) * iVar65 + iVar13 * (uint)bVar132; + piVar61[8] = ((CONCAT12(bVar98,(ushort)bVar95) & 0xffff) + + (CONCAT12(bVar99,(ushort)bVar96) & 0xffff)) * iVar65 + + iVar13 * (CONCAT12(bVar100,(ushort)bVar97) & 0xffff); + piVar61[9] = ((CONCAT12(bVar135,(ushort)bVar133) & 0xffff) + + (CONCAT12(bVar159,(ushort)bVar158) & 0xffff)) * iVar65 + + iVar13 * (CONCAT12(bVar136,(ushort)bVar134) & 0xffff); + piVar61[10] = ((uint)bVar98 + (uint)bVar99) * iVar65 + iVar13 * (uint)bVar100; + piVar61[0xb] = ((uint)bVar135 + (uint)bVar159) * iVar65 + iVar13 * (uint)bVar136; + piVar61[0xc] = ((uint)bVar101 + (uint)bVar102) * iVar65 + iVar13 * (uint)bVar103; + piVar61[0xd] = ((uint)bVar137 + (uint)bVar160) * iVar65 + iVar13 * (uint)bVar138; + piVar61[0xe] = ((uint)bVar104 + (uint)bVar105) * iVar65 + iVar13 * (uint)bVar106; + piVar61[0xf] = ((uint)bVar139 + (uint)bVar161) * iVar65 + iVar13 * (uint)bVar140; + piVar61[0x10] = + (((CONCAT12(bVar108,uStack_3b8) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar109,uStack_358) & 0xff00ff) & 0xffff)) * iVar65 + + iVar13 * (uVar16 & 0xffff); + piVar61[0x11] = + (((CONCAT12(bVar141,uStack_3a8) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar162,uStack_378) & 0xff00ff) & 0xffff)) * iVar65 + + iVar13 * (uVar19 & 0xffff); + piVar61[0x12] = + ((uint)bVar108 + (uint)bVar109) * iVar65 + iVar13 * (uint)(byte)(uVar16 >> 0x10); + piVar61[0x13] = + ((uint)bVar141 + (uint)bVar162) * iVar65 + iVar13 * (uint)(byte)(uVar19 >> 0x10); + piVar61[0x14] = ((uint)bVar110 + (uint)bVar111) * iVar65 + iVar13 * (uint)bVar112; + piVar61[0x15] = ((uint)bVar142 + (uint)bVar163) * iVar65 + iVar13 * (uint)bVar143; + piVar61[0x16] = ((uint)bVar113 + (uint)bVar114) * iVar65 + iVar13 * (uint)bVar115; + piVar61[0x17] = ((uint)bVar144 + (uint)bVar164) * iVar65 + iVar13 * (uint)bVar145; + piVar61[0x18] = + ((CONCAT12(bVar119,(ushort)bVar116) & 0xffff) + + (CONCAT12(bVar120,(ushort)bVar117) & 0xffff)) * iVar65 + + iVar13 * (CONCAT12(bVar121,(ushort)bVar118) & 0xffff); + piVar61[0x19] = + ((CONCAT12(bVar148,(ushort)bVar146) & 0xffff) + + (CONCAT12(bVar166,(ushort)bVar165) & 0xffff)) * iVar65 + + iVar13 * (CONCAT12(bVar149,(ushort)bVar147) & 0xffff); + piVar61[0x1a] = ((uint)bVar119 + (uint)bVar120) * iVar65 + iVar13 * (uint)bVar121; + piVar61[0x1b] = ((uint)bVar148 + (uint)bVar166) * iVar65 + iVar13 * (uint)bVar149; + piVar61[0x1c] = ((uint)bVar122 + (uint)bVar123) * iVar65 + iVar13 * (uint)bVar124; + piVar61[0x1d] = ((uint)bVar150 + (uint)bVar167) * iVar65 + iVar13 * (uint)bVar151; + piVar61[0x1e] = ((uint)bVar125 + (uint)bVar126) * iVar65 + iVar13 * (uint)bVar127; + piVar61[0x1f] = ((uint)bVar152 + (uint)bVar168) * iVar65 + iVar13 * (uint)bVar153; + piVar61 = piVar61 + 0x20; + } while (uVar230 < uVar8); + pbVar75 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001cba1c; + } + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + bVar87 = pbVar75[1 - param_5]; + bVar84 = pbVar75[lVar226 + 1]; + uVar63 = uVar63 + 2; + bVar88 = pbVar75[1]; + *piVar61 = ((uint)pbVar75[lVar227] + (uint)pbVar75[lVar226]) * iVar65 + + iVar13 * (uint)*pbVar75; + piVar61[1] = ((uint)bVar87 + (uint)bVar84) * iVar65 + iVar13 * (uint)bVar88; + pbVar75 = pbVar75 + 2; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); + } +LAB_001cba1c: + uVar60 = uVar60 + 2 + uVar73 * 2; + pbVar71 = pbVar71 + ((ulong)uVar73 + 1) * 2; +LAB_001c97b4: + if (param_4 <= (int)uVar60) { + return; + } + iVar13 = -param_5; + lVar69 = (long)param_5; + lVar79 = (long)iVar13; + lVar226 = NEON_shl(lVar79,1); + lVar68 = lVar69 * 3; + lVar227 = NEON_shl(lVar69,2); + uVar12 = -((uint)((ulong)(lVar72 + lVar74 + 4) >> 2) & 3) & 3; + lVar228 = NEON_shl(lVar79,2); + lVar70 = lVar226 + lVar79; + lVar74 = NEON_shl(lVar69,3); + if (uVar11 < uVar12) { + uVar12 = uVar11; + } + lVar232 = NEON_shl(lVar68,2); + lVar219 = NEON_shl(lVar69,4); + lVar231 = NEON_shl(lVar227 + lVar69,1); + lVar191 = NEON_shl(lVar70,2); + lVar223 = NEON_shl(lVar68,1); + lVar224 = NEON_shl(lVar70,1); + pbVar50 = pbVar71 + (ulong)((param_4 + -1) - uVar60) + 1; + lVar225 = NEON_shl(lVar79,3); + lVar81 = NEON_shl(lVar228 + lVar79,1); + piVar61 = (int *)(param_3 + (long)(int)uVar60 * 4); + do { + iVar65 = (uint)*pbVar71 * *piVar10; + if (0 < (int)uVar11) { + uVar60 = uVar12; + if (uVar11 < 0x12) { + uVar60 = uVar11; + } + if (uVar60 == 0) { + uVar78 = 1; + iVar62 = param_5; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69] + (uint)pbVar71[iVar13]) * piVar10[1]; + if (uVar60 == 1) { + uVar78 = 2; + iVar62 = param_5 * 2; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 * 2] + (uint)pbVar71[param_5 * -2]) * piVar10[2] + ; + if (uVar60 == 2) { + uVar78 = 3; + iVar62 = param_5 * 3; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 2] + (uint)pbVar71[param_5 * -3]) + * piVar10[3]; + if (uVar60 == 3) { + uVar78 = 4; + iVar62 = param_5 * 4; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 3] + (uint)pbVar71[param_5 * -4] + ) * piVar10[4]; + if (uVar60 == 4) { + uVar78 = 5; + iVar62 = param_5 * 5; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 4] + + (uint)pbVar71[param_5 * -5]) * piVar10[5]; + if (uVar60 == 5) { + uVar78 = 6; + iVar62 = param_5 * 6; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 5] + + (uint)pbVar71[param_5 * -6]) * piVar10[6]; + if (uVar60 == 6) { + uVar78 = 7; + iVar62 = param_5 * 7; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 6] + + (uint)pbVar71[param_5 * -7]) * piVar10[7]; + if (uVar60 == 7) { + uVar78 = 8; + iVar62 = param_5 * 8; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 7] + + (uint)pbVar71[param_5 * -8]) * piVar10[8]; + if (uVar60 == 8) { + uVar78 = 9; + iVar62 = param_5 * 9; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 8] + + (uint)pbVar71[param_5 * -9]) * piVar10[9]; + if (uVar60 == 9) { + uVar78 = 10; + iVar62 = param_5 * 10; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 9] + + (uint)pbVar71[param_5 * -10]) * piVar10[10]; + if (uVar60 == 10) { + uVar78 = 0xb; + iVar62 = param_5 * 0xb; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 10] + + (uint)pbVar71[param_5 * -0xb]) * piVar10[0xb]; + if (uVar60 == 0xb) { + uVar78 = 0xc; + iVar62 = param_5 * 0xc; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 0xb] + + (uint)pbVar71[param_5 * -0xc]) * piVar10[0xc]; + if (uVar60 == 0xc) { + uVar78 = 0xd; + iVar62 = param_5 * 0xd; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 0xc] + + (uint)pbVar71[param_5 * -0xd]) * piVar10[0xd]; + if (uVar60 == 0xd) { + uVar78 = 0xe; + iVar62 = param_5 * 0xe; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 0xd] + + (uint)pbVar71[param_5 * -0xe]) * piVar10[0xe]; + if (uVar60 == 0xe) { + uVar78 = 0xf; + iVar62 = param_5 * 0xf; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 0xe] + + (uint)pbVar71[param_5 * -0xf]) * + piVar10[0xf]; + if (uVar60 == 0xf) { + uVar78 = 0x10; + iVar62 = param_5 * 0x10; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 0xf] + + (uint)pbVar71[param_5 * -0x10]) * + piVar10[0x10]; + if (uVar60 == 0x11) { + uVar78 = 0x12; + iVar65 = iVar65 + ((uint)pbVar71[lVar69 + param_5 * 0x10] + + (uint)pbVar71[param_5 * -0x11]) * + piVar10[0x11]; + iVar62 = param_5 * 0x12; + } + else { + uVar78 = 0x11; + iVar62 = param_5 * 0x11; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar60 == uVar11) goto LAB_001ca1c8; + } + uVar73 = ((uVar11 - uVar60) - 0x10 >> 4) + 1; + iVar14 = uVar73 * 0x10; + if (0xe < (uVar11 - 1) - uVar60) { + lVar229 = (ulong)uVar60 + 1; + iVar218 = 0; + iVar220 = 0; + iVar221 = 0; + iVar222 = 0; + pbVar75 = pbVar71 + iVar13 * lVar229; + pbVar77 = pbVar71 + lVar229 * lVar69; + uVar230 = 0; + puVar67 = (undefined8 *)(lVar72 + ((ulong)uVar60 + lVar64 + 1) * 4); + do { + bVar84 = *pbVar77; + uVar230 = uVar230 + 1; + bVar88 = pbVar77[lVar69]; + pbVar39 = pbVar77 + lVar69 * 2; + pbVar40 = pbVar77 + lVar68; + pbVar35 = pbVar77 + lVar227; + pbVar33 = pbVar77 + lVar227 + lVar69; + pbVar34 = pbVar77 + lVar223; + pbVar30 = pbVar77 + (lVar74 - lVar69); + pbVar31 = pbVar77 + lVar74; + bVar89 = pbVar77[lVar74 + lVar69]; + pbVar32 = pbVar77 + lVar231; + pbVar36 = pbVar77 + lVar231 + lVar69; + pbVar37 = pbVar77 + lVar232; + pbVar38 = pbVar77 + lVar232 + lVar69; + pbVar41 = pbVar77 + lVar219 + lVar69 * -2; + pbVar42 = pbVar77 + (lVar219 - lVar69); + pbVar77 = pbVar77 + (long)param_5 * 0x10; + bVar87 = *pbVar75; + bVar90 = pbVar75[lVar79]; + pbVar43 = pbVar75 + lVar226; + pbVar44 = pbVar75 + lVar70; + pbVar45 = pbVar75 + lVar228; + pbVar46 = pbVar75 + lVar228 + lVar79; + pbVar47 = pbVar75 + lVar224; + pbVar49 = pbVar75 + (lVar225 - lVar79); + pbVar48 = pbVar75 + lVar225; + bVar91 = pbVar75[lVar225 + lVar79]; + pbVar1 = pbVar75 + lVar81; + pbVar2 = pbVar75 + lVar81 + lVar79; + pbVar3 = pbVar75 + lVar191; + pbVar4 = pbVar75 + lVar191 + lVar79; + pbVar5 = pbVar75 + (lVar79 * 0x10 - lVar226); + pbVar6 = pbVar75 + lVar79 * 0xf; + pbVar75 = pbVar75 + (long)iVar13 * 0x10; + iVar218 = iVar218 + (((CONCAT12(bVar90,CONCAT11(bVar90,bVar87)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar88,CONCAT11(bVar88,bVar84)) & 0xff00ff) & 0xffff)) * + (int)*puVar67 + + ((CONCAT12(*pbVar46,(ushort)*pbVar45) & 0xffff) + + (CONCAT12(*pbVar33,(ushort)*pbVar35) & 0xffff)) * (int)puVar67[2] + + (((CONCAT12(bVar91,CONCAT11(bVar91,*pbVar48)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar89,CONCAT11(bVar89,*pbVar31)) & 0xff00ff) & 0xffff)) * + (int)puVar67[4] + + ((CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) + + (CONCAT12(*pbVar38,(ushort)*pbVar37) & 0xffff)) * *(int *)(puVar67 + 6); + iVar220 = iVar220 + ((uint)bVar90 + (uint)bVar88) * (int)((ulong)*puVar67 >> 0x20) + + ((uint)*pbVar46 + (uint)*pbVar33) * (int)((ulong)puVar67[2] >> 0x20) + + ((uint)bVar91 + (uint)bVar89) * (int)((ulong)puVar67[4] >> 0x20) + + ((uint)*pbVar4 + (uint)*pbVar38) * *(int *)((long)puVar67 + 0x34); + iVar221 = iVar221 + ((uint)*pbVar43 + (uint)*pbVar39) * (int)puVar67[1] + + ((uint)*pbVar47 + (uint)*pbVar34) * (int)puVar67[3] + + ((uint)*pbVar1 + (uint)*pbVar32) * (int)puVar67[5] + + ((uint)*pbVar5 + (uint)*pbVar41) * *(int *)(puVar67 + 7); + iVar222 = iVar222 + ((uint)*pbVar44 + (uint)*pbVar40) * (int)((ulong)puVar67[1] >> 0x20) + + ((uint)*pbVar49 + (uint)*pbVar30) * (int)((ulong)puVar67[3] >> 0x20) + + ((uint)*pbVar2 + (uint)*pbVar36) * (int)((ulong)puVar67[5] >> 0x20) + + ((uint)*pbVar6 + (uint)*pbVar42) * *(int *)((long)puVar67 + 0x3c); + puVar67 = puVar67 + 8; + } while (uVar230 < uVar73); + uVar78 = (ulong)(uint)((int)uVar78 + iVar14); + iVar62 = iVar62 + param_5 * iVar14; + iVar65 = iVar65 + iVar218 + iVar220 + iVar221 + iVar222; + if (iVar14 == uVar11 - uVar60) goto LAB_001ca1c8; + } + uVar76 = -(uVar78 >> 0x1f) & 0xfffffffc00000000 | uVar78 << 2; + iVar218 = (int)uVar78; + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76); + if (iVar218 + 1 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 4); + if (iVar218 + 2 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 8); + if (iVar218 + 3 <= (int)uVar11) { + iVar62 = iVar14 + param_5; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0xc); + if (iVar218 + 4 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x10); + if (iVar218 + 5 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x14); + if (iVar218 + 6 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x18); + if (iVar218 + 7 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x1c); + if (iVar218 + 8 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x20); + if (iVar218 + 9 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x24); + if (iVar218 + 10 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x28); + if (iVar218 + 0xb <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x2c); + if (iVar218 + 0xc <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] + (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x30); + if (iVar218 + 0xd <= (int)uVar11) { + iVar65 = iVar65 + ((uint)pbVar71[iVar14] + (uint)pbVar71[-iVar14]) + * *(int *)((long)piVar10 + uVar76 + 0x34); + if (iVar218 + 0xe <= (int)uVar11) { + iVar65 = iVar65 + ((uint)pbVar71[param_5 + iVar14] + + (uint)pbVar71[-(param_5 + iVar14)]) * + *(int *)((long)piVar10 + uVar76 + 0x38); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001ca1c8: + pbVar71 = pbVar71 + 1; + *piVar61 = iVar65; + piVar61 = piVar61 + 1; + if (pbVar71 == pbVar50) { + return; + } + } while( true ); + } + if (iVar13 != 3) { + if (iVar13 != 5) goto LAB_001ca220; + iVar13 = piVar10[1]; + iVar65 = piVar10[2]; + if (param_4 + -1 <= (int)uVar60) goto LAB_001ca220; + uVar230 = (param_4 + -2) - uVar60; + uVar73 = uVar230 >> 1; + uVar12 = uVar73 + 1; + lVar227 = (long)(param_5 << 1); + lVar74 = (ulong)uVar12 * 2; + lVar79 = (long)(param_5 * -2); + puVar54 = (undefined1 *)(param_2 + lVar70 + lVar227); + piVar61 = (int *)(param_3 + lVar68 * 4); + puVar57 = (undefined1 *)(param_2 + lVar70 + lVar79); + lVar226 = (long)-param_5; + puVar51 = (undefined1 *)(param_3 + (lVar68 + lVar74) * 4); + lVar68 = lVar70 + lVar226 + 1; + puVar59 = (undefined1 *)(param_2 + lVar68); + puVar56 = (undefined1 *)(param_2 + lVar70 + lVar226); + lVar69 = (long)param_5; + puVar58 = (undefined1 *)(param_2 + lVar70 + lVar69); + if ((((uVar12 < 0x10 || + (puVar54 < puVar51 && piVar61 < (int *)(param_2 + lVar70 + lVar227 + lVar74) || + puVar57 < puVar51 && piVar61 < (int *)(param_2 + lVar74 + lVar70 + lVar79))) || + puVar59 < puVar51 && piVar61 < (int *)(param_2 + lVar74 + lVar68)) || + puVar56 < puVar51 && piVar61 < (int *)(param_2 + lVar74 + lVar70 + lVar226)) || + (puVar58 < puVar51 && piVar61 < (int *)(param_2 + lVar74 + lVar70 + lVar69))) { + pbVar50 = pbVar71; + do { + pbVar77 = pbVar50 + lVar227; + pbVar75 = pbVar50 + lVar79; + bVar84 = pbVar50[lVar79 + 1]; + bVar87 = pbVar50[lVar69 * 2 + 1]; + bVar89 = pbVar50[1 - param_5]; + pbVar39 = pbVar50 + lVar69; + bVar88 = pbVar50[lVar69 + 1]; + pbVar40 = pbVar50 + lVar226; + pbVar50 = pbVar50 + 2; + *piVar61 = ((uint)*pbVar77 - (uint)*pbVar75) * iVar65 + + ((uint)*pbVar39 - (uint)*pbVar40) * iVar13; + piVar61[1] = ((uint)bVar87 - (uint)bVar84) * iVar65 + ((uint)bVar88 - (uint)bVar89) * iVar13 + ; + piVar61 = piVar61 + 2; + } while (pbVar50 != pbVar71 + ((ulong)uVar73 + 1) * 2); + } + else { + uVar8 = (uVar73 - 0x10 >> 4) + 1; + pbVar50 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar230) { + uVar230 = 0; + do { + uVar80 = *puVar54; + puVar51 = puVar54 + 1; + bVar84 = puVar54[2]; + bVar129 = puVar54[3]; + bVar89 = puVar54[4]; + bVar132 = puVar54[5]; + bVar92 = puVar54[6]; + bVar135 = puVar54[7]; + bVar95 = puVar54[8]; + bVar138 = puVar54[9]; + bVar98 = puVar54[10]; + bVar141 = puVar54[0xb]; + bVar101 = puVar54[0xc]; + bVar144 = puVar54[0xd]; + bVar104 = puVar54[0xe]; + bVar147 = puVar54[0xf]; + puVar52 = puVar54 + 0x10; + puVar53 = puVar54 + 0x11; + bVar108 = puVar54[0x12]; + bVar150 = puVar54[0x13]; + bVar111 = puVar54[0x14]; + bVar153 = puVar54[0x15]; + bVar114 = puVar54[0x16]; + bVar156 = puVar54[0x17]; + bVar117 = puVar54[0x18]; + bVar159 = puVar54[0x19]; + bVar120 = puVar54[0x1a]; + bVar162 = puVar54[0x1b]; + bVar123 = puVar54[0x1c]; + bVar165 = puVar54[0x1d]; + bVar126 = puVar54[0x1e]; + bVar168 = puVar54[0x1f]; + puVar54 = puVar54 + 0x20; + uVar85 = *puVar56; + bVar171 = puVar56[2]; + bVar173 = puVar56[4]; + bVar175 = puVar56[6]; + bVar177 = puVar56[8]; + bVar179 = puVar56[10]; + bVar181 = puVar56[0xc]; + bVar183 = puVar56[0xe]; + puVar55 = puVar56 + 0x10; + bVar185 = puVar56[0x12]; + bVar187 = puVar56[0x14]; + bVar189 = puVar56[0x16]; + bVar193 = puVar56[0x18]; + bVar195 = puVar56[0x1a]; + bVar197 = puVar56[0x1c]; + bVar199 = puVar56[0x1e]; + puVar56 = puVar56 + 0x20; + uVar230 = uVar230 + 1; + local_320 = CONCAT11(bVar84,uVar80); + uStack_318 = CONCAT11(bVar108,*puVar52); + local_310 = CONCAT11(bVar129,*puVar51); + uStack_308 = CONCAT11(bVar150,*puVar53); + uVar80 = *puVar57; + puVar51 = puVar57 + 1; + bVar87 = puVar57[2]; + bVar130 = puVar57[3]; + bVar90 = puVar57[4]; + bVar133 = puVar57[5]; + bVar93 = puVar57[6]; + bVar136 = puVar57[7]; + bVar96 = puVar57[8]; + bVar139 = puVar57[9]; + bVar99 = puVar57[10]; + bVar142 = puVar57[0xb]; + bVar102 = puVar57[0xc]; + bVar145 = puVar57[0xd]; + bVar105 = puVar57[0xe]; + bVar148 = puVar57[0xf]; + puVar52 = puVar57 + 0x10; + puVar53 = puVar57 + 0x11; + bVar109 = puVar57[0x12]; + bVar151 = puVar57[0x13]; + bVar112 = puVar57[0x14]; + bVar154 = puVar57[0x15]; + bVar115 = puVar57[0x16]; + bVar157 = puVar57[0x17]; + bVar118 = puVar57[0x18]; + bVar160 = puVar57[0x19]; + bVar121 = puVar57[0x1a]; + bVar163 = puVar57[0x1b]; + bVar124 = puVar57[0x1c]; + bVar166 = puVar57[0x1d]; + bVar127 = puVar57[0x1e]; + bVar169 = puVar57[0x1f]; + puVar57 = puVar57 + 0x20; + local_340 = CONCAT11(bVar87,uVar80); + uStack_338 = CONCAT11(bVar109,*puVar52); + local_330 = CONCAT11(bVar130,*puVar51); + uStack_328 = CONCAT11(bVar151,*puVar53); + uVar80 = *puVar58; + puVar51 = puVar58 + 1; + bVar88 = puVar58[2]; + bVar131 = puVar58[3]; + bVar91 = puVar58[4]; + bVar134 = puVar58[5]; + bVar94 = puVar58[6]; + bVar137 = puVar58[7]; + bVar97 = puVar58[8]; + bVar140 = puVar58[9]; + bVar100 = puVar58[10]; + bVar143 = puVar58[0xb]; + bVar103 = puVar58[0xc]; + bVar146 = puVar58[0xd]; + bVar106 = puVar58[0xe]; + bVar149 = puVar58[0xf]; + puVar52 = puVar58 + 0x10; + puVar53 = puVar58 + 0x11; + bVar110 = puVar58[0x12]; + bVar152 = puVar58[0x13]; + bVar113 = puVar58[0x14]; + bVar155 = puVar58[0x15]; + bVar116 = puVar58[0x16]; + bVar158 = puVar58[0x17]; + bVar119 = puVar58[0x18]; + bVar161 = puVar58[0x19]; + bVar122 = puVar58[0x1a]; + bVar164 = puVar58[0x1b]; + bVar125 = puVar58[0x1c]; + bVar167 = puVar58[0x1d]; + bVar128 = puVar58[0x1e]; + bVar170 = puVar58[0x1f]; + puVar58 = puVar58 + 0x20; + local_300 = CONCAT11(bVar88,uVar80); + uStack_2f8 = CONCAT11(bVar110,*puVar52); + local_2f0 = CONCAT11(bVar131,*puVar51); + uStack_2e8 = CONCAT11(bVar152,*puVar53); + local_2e0 = CONCAT11(bVar171,uVar85); + uStack_2d8 = CONCAT11(bVar185,*puVar55); + uVar80 = *puVar59; + bVar172 = puVar59[2]; + bVar174 = puVar59[4]; + bVar176 = puVar59[6]; + bVar178 = puVar59[8]; + bVar180 = puVar59[10]; + bVar182 = puVar59[0xc]; + bVar184 = puVar59[0xe]; + puVar51 = puVar59 + 0x10; + bVar186 = puVar59[0x12]; + bVar188 = puVar59[0x14]; + bVar190 = puVar59[0x16]; + bVar194 = puVar59[0x18]; + bVar196 = puVar59[0x1a]; + bVar198 = puVar59[0x1c]; + bVar200 = puVar59[0x1e]; + puVar59 = puVar59 + 0x20; + uVar15 = CONCAT12(bVar84,local_320); + uVar16 = CONCAT12(bVar108,uStack_318); + local_320 = CONCAT11(bVar172,uVar80); + uStack_318 = CONCAT11(bVar186,*puVar51); + *piVar61 = (((uVar15 & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar87,local_340) & 0xff00ff) & 0xffff)) * iVar65 + + (((CONCAT12(bVar88,local_300) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar171,local_2e0) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[1] = (((CONCAT12(bVar129,local_310) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar130,local_330) & 0xff00ff) & 0xffff)) * iVar65 + + (((CONCAT12(bVar131,local_2f0) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar172,local_320) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[2] = ((uint)bVar84 - (uint)bVar87) * iVar65 + + ((uint)bVar88 - (uint)bVar171) * iVar13; + piVar61[3] = ((uint)bVar129 - (uint)bVar130) * iVar65 + + ((uint)bVar131 - (uint)bVar172) * iVar13; + piVar61[4] = ((uint)bVar89 - (uint)bVar90) * iVar65 + + ((uint)bVar91 - (uint)bVar173) * iVar13; + piVar61[5] = ((uint)bVar132 - (uint)bVar133) * iVar65 + + ((uint)bVar134 - (uint)bVar174) * iVar13; + piVar61[6] = ((uint)bVar92 - (uint)bVar93) * iVar65 + + ((uint)bVar94 - (uint)bVar175) * iVar13; + piVar61[7] = ((uint)bVar135 - (uint)bVar136) * iVar65 + + ((uint)bVar137 - (uint)bVar176) * iVar13; + piVar61[8] = ((CONCAT12(bVar98,(ushort)bVar95) & 0xffff) - + (CONCAT12(bVar99,(ushort)bVar96) & 0xffff)) * iVar65 + + ((CONCAT12(bVar100,(ushort)bVar97) & 0xffff) - + (CONCAT12(bVar179,(ushort)bVar177) & 0xffff)) * iVar13; + piVar61[9] = ((CONCAT12(bVar141,(ushort)bVar138) & 0xffff) - + (CONCAT12(bVar142,(ushort)bVar139) & 0xffff)) * iVar65 + + ((CONCAT12(bVar143,(ushort)bVar140) & 0xffff) - + (CONCAT12(bVar180,(ushort)bVar178) & 0xffff)) * iVar13; + piVar61[10] = ((uint)bVar98 - (uint)bVar99) * iVar65 + + ((uint)bVar100 - (uint)bVar179) * iVar13; + piVar61[0xb] = ((uint)bVar141 - (uint)bVar142) * iVar65 + + ((uint)bVar143 - (uint)bVar180) * iVar13; + piVar61[0xc] = ((uint)bVar101 - (uint)bVar102) * iVar65 + + ((uint)bVar103 - (uint)bVar181) * iVar13; + piVar61[0xd] = ((uint)bVar144 - (uint)bVar145) * iVar65 + + ((uint)bVar146 - (uint)bVar182) * iVar13; + piVar61[0xe] = ((uint)bVar104 - (uint)bVar105) * iVar65 + + ((uint)bVar106 - (uint)bVar183) * iVar13; + piVar61[0xf] = ((uint)bVar147 - (uint)bVar148) * iVar65 + + ((uint)bVar149 - (uint)bVar184) * iVar13; + piVar61[0x10] = + (((uVar16 & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar109,uStack_338) & 0xff00ff) & 0xffff)) * iVar65 + + (((CONCAT12(bVar110,uStack_2f8) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar185,uStack_2d8) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[0x11] = + (((CONCAT12(bVar150,uStack_308) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar151,uStack_328) & 0xff00ff) & 0xffff)) * iVar65 + + (((CONCAT12(bVar152,uStack_2e8) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar186,uStack_318) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[0x12] = + ((uint)bVar108 - (uint)bVar109) * iVar65 + ((uint)bVar110 - (uint)bVar185) * iVar13; + piVar61[0x13] = + ((uint)bVar150 - (uint)bVar151) * iVar65 + ((uint)bVar152 - (uint)bVar186) * iVar13; + piVar61[0x14] = + ((uint)bVar111 - (uint)bVar112) * iVar65 + ((uint)bVar113 - (uint)bVar187) * iVar13; + piVar61[0x15] = + ((uint)bVar153 - (uint)bVar154) * iVar65 + ((uint)bVar155 - (uint)bVar188) * iVar13; + piVar61[0x16] = + ((uint)bVar114 - (uint)bVar115) * iVar65 + ((uint)bVar116 - (uint)bVar189) * iVar13; + piVar61[0x17] = + ((uint)bVar156 - (uint)bVar157) * iVar65 + ((uint)bVar158 - (uint)bVar190) * iVar13; + piVar61[0x18] = + ((CONCAT12(bVar120,(ushort)bVar117) & 0xffff) - + (CONCAT12(bVar121,(ushort)bVar118) & 0xffff)) * iVar65 + + ((CONCAT12(bVar122,(ushort)bVar119) & 0xffff) - + (CONCAT12(bVar195,(ushort)bVar193) & 0xffff)) * iVar13; + piVar61[0x19] = + ((CONCAT12(bVar162,(ushort)bVar159) & 0xffff) - + (CONCAT12(bVar163,(ushort)bVar160) & 0xffff)) * iVar65 + + ((CONCAT12(bVar164,(ushort)bVar161) & 0xffff) - + (CONCAT12(bVar196,(ushort)bVar194) & 0xffff)) * iVar13; + piVar61[0x1a] = + ((uint)bVar120 - (uint)bVar121) * iVar65 + ((uint)bVar122 - (uint)bVar195) * iVar13; + piVar61[0x1b] = + ((uint)bVar162 - (uint)bVar163) * iVar65 + ((uint)bVar164 - (uint)bVar196) * iVar13; + piVar61[0x1c] = + ((uint)bVar123 - (uint)bVar124) * iVar65 + ((uint)bVar125 - (uint)bVar197) * iVar13; + piVar61[0x1d] = + ((uint)bVar165 - (uint)bVar166) * iVar65 + ((uint)bVar167 - (uint)bVar198) * iVar13; + piVar61[0x1e] = + ((uint)bVar126 - (uint)bVar127) * iVar65 + ((uint)bVar128 - (uint)bVar199) * iVar13; + piVar61[0x1f] = + ((uint)bVar168 - (uint)bVar169) * iVar65 + ((uint)bVar170 - (uint)bVar200) * iVar13; + piVar61 = piVar61 + 0x20; + } while (uVar230 < uVar8); + pbVar50 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001cbe18; + } + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + pbVar77 = pbVar50 + lVar227; + pbVar75 = pbVar50 + lVar79; + bVar84 = pbVar50[lVar79 + 1]; + uVar63 = uVar63 + 2; + bVar87 = pbVar50[lVar69 * 2 + 1]; + bVar89 = pbVar50[1 - param_5]; + pbVar39 = pbVar50 + lVar69; + bVar88 = pbVar50[lVar69 + 1]; + pbVar40 = pbVar50 + lVar226; + pbVar50 = pbVar50 + 2; + *piVar61 = ((uint)*pbVar77 - (uint)*pbVar75) * iVar65 + + ((uint)*pbVar39 - (uint)*pbVar40) * iVar13; + piVar61[1] = ((uint)bVar87 - (uint)bVar84) * iVar65 + ((uint)bVar88 - (uint)bVar89) * iVar13 + ; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); + } +LAB_001cbe18: + uVar60 = uVar60 + 2 + uVar73 * 2; + pbVar71 = pbVar71 + ((ulong)uVar73 + 1) * 2; + goto LAB_001ca220; + } + if (*(int *)(lVar72 + lVar74) == 0) { + iVar13 = piVar10[1]; + if (iVar13 == 1) { + if (param_4 + -1 <= (int)uVar60) goto LAB_001ca220; + uVar230 = (param_4 + -2) - uVar60; + piVar61 = (int *)(param_3 + lVar68 * 4); + uVar73 = uVar230 >> 1; + lVar79 = (long)-param_5; + uVar12 = uVar73 + 1; + lVar69 = (ulong)uVar12 * 2; + lVar74 = lVar70 + lVar79 + 1; + puVar54 = (undefined1 *)(param_2 + lVar74); + puVar57 = (undefined1 *)(param_3 + (lVar68 + lVar69) * 4); + puVar51 = (undefined1 *)(param_2 + lVar70 + lVar79); + lVar68 = (long)param_5; + puVar59 = (undefined1 *)(param_2 + lVar70 + lVar68); + if ((uVar12 < 0x10 || + (puVar54 < puVar57 && piVar61 < (int *)(param_2 + lVar74 + lVar69) || + puVar51 < puVar57 && piVar61 < (int *)(param_2 + lVar69 + lVar70 + lVar79))) || + (puVar59 < puVar57 && piVar61 < (int *)(param_2 + lVar69 + lVar70 + lVar68))) { + pbVar50 = pbVar71 + lVar68; + do { + pbVar77 = pbVar50 + 2; + bVar84 = *pbVar50; + bVar87 = pbVar50[lVar79 - lVar68]; + piVar61[1] = (uint)pbVar50[1] - (uint)pbVar50[(1 - param_5) - lVar68]; + *piVar61 = (uint)bVar84 - (uint)bVar87; + piVar61 = piVar61 + 2; + pbVar50 = pbVar77; + } while (pbVar77 != pbVar71 + lVar68 + 2 + (ulong)uVar73 * 2); + } + else { + uVar8 = (uVar73 - 0x10 >> 4) + 1; + pbVar50 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar230) { + uVar230 = 0; + do { + uVar80 = *puVar59; + puVar58 = puVar59 + 1; + bVar84 = puVar59[2]; + bVar129 = puVar59[3]; + bVar89 = puVar59[4]; + bVar130 = puVar59[5]; + bVar92 = puVar59[6]; + bVar131 = puVar59[7]; + bVar95 = puVar59[8]; + bVar132 = puVar59[9]; + bVar98 = puVar59[10]; + bVar133 = puVar59[0xb]; + bVar101 = puVar59[0xc]; + bVar134 = puVar59[0xd]; + bVar104 = puVar59[0xe]; + bVar135 = puVar59[0xf]; + puVar56 = puVar59 + 0x10; + puVar57 = puVar59 + 0x11; + bVar108 = puVar59[0x12]; + bVar136 = puVar59[0x13]; + bVar111 = puVar59[0x14]; + bVar137 = puVar59[0x15]; + bVar114 = puVar59[0x16]; + bVar138 = puVar59[0x17]; + bVar117 = puVar59[0x18]; + bVar139 = puVar59[0x19]; + bVar120 = puVar59[0x1a]; + bVar140 = puVar59[0x1b]; + bVar123 = puVar59[0x1c]; + bVar141 = puVar59[0x1d]; + bVar126 = puVar59[0x1e]; + bVar142 = puVar59[0x1f]; + puVar59 = puVar59 + 0x20; + uVar230 = uVar230 + 1; + local_3c0 = CONCAT11(bVar84,uVar80); + uStack_3b8 = CONCAT11(bVar108,*puVar56); + local_3b0 = CONCAT11(bVar129,*puVar58); + uStack_3a8 = CONCAT11(bVar136,*puVar57); + uVar80 = *puVar51; + bVar87 = puVar51[2]; + bVar90 = puVar51[4]; + bVar93 = puVar51[6]; + bVar96 = puVar51[8]; + bVar99 = puVar51[10]; + bVar102 = puVar51[0xc]; + bVar105 = puVar51[0xe]; + puVar57 = puVar51 + 0x10; + bVar109 = puVar51[0x12]; + bVar112 = puVar51[0x14]; + bVar115 = puVar51[0x16]; + bVar118 = puVar51[0x18]; + bVar121 = puVar51[0x1a]; + bVar124 = puVar51[0x1c]; + bVar127 = puVar51[0x1e]; + puVar51 = puVar51 + 0x20; + local_380 = CONCAT11(bVar87,uVar80); + uStack_378 = CONCAT11(bVar109,*puVar57); + uVar80 = *puVar54; + bVar88 = puVar54[2]; + bVar91 = puVar54[4]; + bVar94 = puVar54[6]; + bVar97 = puVar54[8]; + bVar100 = puVar54[10]; + bVar103 = puVar54[0xc]; + bVar106 = puVar54[0xe]; + puVar57 = puVar54 + 0x10; + bVar110 = puVar54[0x12]; + bVar113 = puVar54[0x14]; + bVar116 = puVar54[0x16]; + bVar119 = puVar54[0x18]; + bVar122 = puVar54[0x1a]; + bVar125 = puVar54[0x1c]; + bVar128 = puVar54[0x1e]; + puVar54 = puVar54 + 0x20; + local_3a0 = CONCAT11(bVar88,uVar80); + uStack_398 = CONCAT11(bVar110,*puVar57); + *piVar61 = ((CONCAT12(bVar84,local_3c0) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar87,local_380) & 0xff00ff) & 0xffff); + piVar61[1] = ((CONCAT12(bVar129,local_3b0) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar88,local_3a0) & 0xff00ff) & 0xffff); + piVar61[2] = (uint)bVar84 - (uint)bVar87; + piVar61[3] = (uint)bVar129 - (uint)bVar88; + piVar61[4] = (uint)bVar89 - (uint)bVar90; + piVar61[5] = (uint)bVar130 - (uint)bVar91; + piVar61[6] = (uint)bVar92 - (uint)bVar93; + piVar61[7] = (uint)bVar131 - (uint)bVar94; + piVar61[8] = (CONCAT12(bVar98,(ushort)bVar95) & 0xffff) - + (CONCAT12(bVar99,(ushort)bVar96) & 0xffff); + piVar61[9] = (CONCAT12(bVar133,(ushort)bVar132) & 0xffff) - + (CONCAT12(bVar100,(ushort)bVar97) & 0xffff); + piVar61[10] = (uint)bVar98 - (uint)bVar99; + piVar61[0xb] = (uint)bVar133 - (uint)bVar100; + piVar61[0xc] = (uint)bVar101 - (uint)bVar102; + piVar61[0xd] = (uint)bVar134 - (uint)bVar103; + piVar61[0xe] = (uint)bVar104 - (uint)bVar105; + piVar61[0xf] = (uint)bVar135 - (uint)bVar106; + piVar61[0x10] = + ((CONCAT12(bVar108,uStack_3b8) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar109,uStack_378) & 0xff00ff) & 0xffff); + piVar61[0x11] = + ((CONCAT12(bVar136,uStack_3a8) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar110,uStack_398) & 0xff00ff) & 0xffff); + piVar61[0x12] = (uint)bVar108 - (uint)bVar109; + piVar61[0x13] = (uint)bVar136 - (uint)bVar110; + piVar61[0x14] = (uint)bVar111 - (uint)bVar112; + piVar61[0x15] = (uint)bVar137 - (uint)bVar113; + piVar61[0x16] = (uint)bVar114 - (uint)bVar115; + piVar61[0x17] = (uint)bVar138 - (uint)bVar116; + piVar61[0x18] = + (CONCAT12(bVar120,(ushort)bVar117) & 0xffff) - + (CONCAT12(bVar121,(ushort)bVar118) & 0xffff); + piVar61[0x19] = + (CONCAT12(bVar140,(ushort)bVar139) & 0xffff) - + (CONCAT12(bVar122,(ushort)bVar119) & 0xffff); + piVar61[0x1a] = (uint)bVar120 - (uint)bVar121; + piVar61[0x1b] = (uint)bVar140 - (uint)bVar122; + piVar61[0x1c] = (uint)bVar123 - (uint)bVar124; + piVar61[0x1d] = (uint)bVar141 - (uint)bVar125; + piVar61[0x1e] = (uint)bVar126 - (uint)bVar127; + piVar61[0x1f] = (uint)bVar142 - (uint)bVar128; + piVar61 = piVar61 + 0x20; + } while (uVar230 < uVar8); + pbVar50 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001ccbe0; + } + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + bVar87 = pbVar50[1 - param_5]; + pbVar77 = pbVar50 + lVar68; + uVar63 = uVar63 + 2; + pbVar75 = pbVar50 + lVar79; + bVar84 = pbVar50[lVar68 + 1]; + pbVar50 = pbVar50 + 2; + *piVar61 = (uint)*pbVar77 - (uint)*pbVar75; + piVar61[1] = (uint)bVar84 - (uint)bVar87; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); + } +LAB_001ccbe0: + uVar60 = uVar60 + 2 + uVar73 * 2; + pbVar71 = pbVar71 + ((ulong)uVar73 + 1) * 2; + goto LAB_001ca220; + } + } + else { + iVar13 = piVar10[1]; + } + if (param_4 + -1 <= (int)uVar60) goto LAB_001ca220; + uVar230 = (param_4 + -2) - uVar60; + piVar61 = (int *)(param_3 + lVar68 * 4); + uVar73 = uVar230 >> 1; + lVar79 = (long)-param_5; + uVar12 = uVar73 + 1; + lVar69 = (ulong)uVar12 * 2; + lVar74 = lVar70 + lVar79 + 1; + puVar54 = (undefined1 *)(param_2 + lVar74); + puVar57 = (undefined1 *)(param_3 + (lVar68 + lVar69) * 4); + puVar51 = (undefined1 *)(param_2 + lVar70 + lVar79); + lVar68 = (long)param_5; + puVar59 = (undefined1 *)(param_2 + lVar70 + lVar68); + if ((uVar12 < 0x10 || + (puVar54 < puVar57 && piVar61 < (int *)(param_2 + lVar74 + lVar69) || + puVar51 < puVar57 && piVar61 < (int *)(param_2 + lVar69 + lVar70 + lVar79))) || + (puVar59 < puVar57 && piVar61 < (int *)(param_2 + lVar69 + lVar70 + lVar68))) { + pbVar50 = pbVar71 + lVar68; + do { + bVar84 = pbVar50[1]; + pbVar77 = pbVar50 + 2; + bVar87 = pbVar50[(1 - param_5) - lVar68]; + *piVar61 = ((uint)*pbVar50 - (uint)pbVar50[lVar79 - lVar68]) * iVar13; + piVar61[1] = ((uint)bVar84 - (uint)bVar87) * iVar13; + piVar61 = piVar61 + 2; + pbVar50 = pbVar77; + } while (pbVar77 != pbVar71 + lVar68 + 2 + (ulong)uVar73 * 2); + } + else { + uVar8 = (uVar73 - 0x10 >> 4) + 1; + pbVar50 = pbVar71; + uVar63 = uVar60; + if (0x1f < uVar230) { + uVar230 = 0; + do { + uVar80 = *puVar59; + puVar58 = puVar59 + 1; + bVar84 = puVar59[2]; + bVar129 = puVar59[3]; + bVar89 = puVar59[4]; + bVar130 = puVar59[5]; + bVar92 = puVar59[6]; + bVar131 = puVar59[7]; + bVar95 = puVar59[8]; + bVar132 = puVar59[9]; + bVar98 = puVar59[10]; + bVar133 = puVar59[0xb]; + bVar101 = puVar59[0xc]; + bVar134 = puVar59[0xd]; + bVar104 = puVar59[0xe]; + bVar135 = puVar59[0xf]; + puVar56 = puVar59 + 0x10; + puVar57 = puVar59 + 0x11; + bVar108 = puVar59[0x12]; + bVar136 = puVar59[0x13]; + bVar111 = puVar59[0x14]; + bVar137 = puVar59[0x15]; + bVar114 = puVar59[0x16]; + bVar138 = puVar59[0x17]; + bVar117 = puVar59[0x18]; + bVar139 = puVar59[0x19]; + bVar120 = puVar59[0x1a]; + bVar140 = puVar59[0x1b]; + bVar123 = puVar59[0x1c]; + bVar141 = puVar59[0x1d]; + bVar126 = puVar59[0x1e]; + bVar142 = puVar59[0x1f]; + puVar59 = puVar59 + 0x20; + uVar230 = uVar230 + 1; + local_3c0 = CONCAT11(bVar84,uVar80); + uStack_3b8 = CONCAT11(bVar108,*puVar56); + local_3b0 = CONCAT11(bVar129,*puVar58); + uStack_3a8 = CONCAT11(bVar136,*puVar57); + uVar80 = *puVar51; + bVar87 = puVar51[2]; + bVar90 = puVar51[4]; + bVar93 = puVar51[6]; + bVar96 = puVar51[8]; + bVar99 = puVar51[10]; + bVar102 = puVar51[0xc]; + bVar105 = puVar51[0xe]; + puVar57 = puVar51 + 0x10; + bVar109 = puVar51[0x12]; + bVar112 = puVar51[0x14]; + bVar115 = puVar51[0x16]; + bVar118 = puVar51[0x18]; + bVar121 = puVar51[0x1a]; + bVar124 = puVar51[0x1c]; + bVar127 = puVar51[0x1e]; + puVar51 = puVar51 + 0x20; + local_380 = CONCAT11(bVar87,uVar80); + uStack_378 = CONCAT11(bVar109,*puVar57); + uVar80 = *puVar54; + bVar88 = puVar54[2]; + bVar91 = puVar54[4]; + bVar94 = puVar54[6]; + bVar97 = puVar54[8]; + bVar100 = puVar54[10]; + bVar103 = puVar54[0xc]; + bVar106 = puVar54[0xe]; + puVar57 = puVar54 + 0x10; + bVar110 = puVar54[0x12]; + bVar113 = puVar54[0x14]; + bVar116 = puVar54[0x16]; + bVar119 = puVar54[0x18]; + bVar122 = puVar54[0x1a]; + bVar125 = puVar54[0x1c]; + bVar128 = puVar54[0x1e]; + puVar54 = puVar54 + 0x20; + local_3a0 = CONCAT11(bVar88,uVar80); + uStack_398 = CONCAT11(bVar110,*puVar57); + *piVar61 = (((CONCAT12(bVar84,local_3c0) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar87,local_380) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[1] = (((CONCAT12(bVar129,local_3b0) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar88,local_3a0) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[2] = ((uint)bVar84 - (uint)bVar87) * iVar13; + piVar61[3] = ((uint)bVar129 - (uint)bVar88) * iVar13; + piVar61[4] = ((uint)bVar89 - (uint)bVar90) * iVar13; + piVar61[5] = ((uint)bVar130 - (uint)bVar91) * iVar13; + piVar61[6] = ((uint)bVar92 - (uint)bVar93) * iVar13; + piVar61[7] = ((uint)bVar131 - (uint)bVar94) * iVar13; + piVar61[8] = ((CONCAT12(bVar98,(ushort)bVar95) & 0xffff) - + (CONCAT12(bVar99,(ushort)bVar96) & 0xffff)) * iVar13; + piVar61[9] = ((CONCAT12(bVar133,(ushort)bVar132) & 0xffff) - + (CONCAT12(bVar100,(ushort)bVar97) & 0xffff)) * iVar13; + piVar61[10] = ((uint)bVar98 - (uint)bVar99) * iVar13; + piVar61[0xb] = ((uint)bVar133 - (uint)bVar100) * iVar13; + piVar61[0xc] = ((uint)bVar101 - (uint)bVar102) * iVar13; + piVar61[0xd] = ((uint)bVar134 - (uint)bVar103) * iVar13; + piVar61[0xe] = ((uint)bVar104 - (uint)bVar105) * iVar13; + piVar61[0xf] = ((uint)bVar135 - (uint)bVar106) * iVar13; + piVar61[0x10] = + (((CONCAT12(bVar108,uStack_3b8) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar109,uStack_378) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[0x11] = + (((CONCAT12(bVar136,uStack_3a8) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar110,uStack_398) & 0xff00ff) & 0xffff)) * iVar13; + piVar61[0x12] = ((uint)bVar108 - (uint)bVar109) * iVar13; + piVar61[0x13] = ((uint)bVar136 - (uint)bVar110) * iVar13; + piVar61[0x14] = ((uint)bVar111 - (uint)bVar112) * iVar13; + piVar61[0x15] = ((uint)bVar137 - (uint)bVar113) * iVar13; + piVar61[0x16] = ((uint)bVar114 - (uint)bVar115) * iVar13; + piVar61[0x17] = ((uint)bVar138 - (uint)bVar116) * iVar13; + piVar61[0x18] = + ((CONCAT12(bVar120,(ushort)bVar117) & 0xffff) - + (CONCAT12(bVar121,(ushort)bVar118) & 0xffff)) * iVar13; + piVar61[0x19] = + ((CONCAT12(bVar140,(ushort)bVar139) & 0xffff) - + (CONCAT12(bVar122,(ushort)bVar119) & 0xffff)) * iVar13; + piVar61[0x1a] = ((uint)bVar120 - (uint)bVar121) * iVar13; + piVar61[0x1b] = ((uint)bVar140 - (uint)bVar122) * iVar13; + piVar61[0x1c] = ((uint)bVar123 - (uint)bVar124) * iVar13; + piVar61[0x1d] = ((uint)bVar141 - (uint)bVar125) * iVar13; + piVar61[0x1e] = ((uint)bVar126 - (uint)bVar127) * iVar13; + piVar61[0x1f] = ((uint)bVar142 - (uint)bVar128) * iVar13; + piVar61 = piVar61 + 0x20; + } while (uVar230 < uVar8); + pbVar50 = pbVar71 + (ulong)(uVar8 * 0x10) * 2; + uVar63 = uVar60 + uVar8 * 0x20; + if (uVar12 == uVar8 * 0x10) goto LAB_001cb230; + } + piVar61 = (int *)(param_3 + (long)(int)uVar63 * 4); + do { + bVar87 = pbVar50[1 - param_5]; + pbVar77 = pbVar50 + lVar68; + pbVar75 = pbVar50 + lVar79; + uVar63 = uVar63 + 2; + bVar84 = pbVar50[lVar68 + 1]; + pbVar50 = pbVar50 + 2; + *piVar61 = ((uint)*pbVar77 - (uint)*pbVar75) * iVar13; + piVar61[1] = ((uint)bVar84 - (uint)bVar87) * iVar13; + piVar61 = piVar61 + 2; + } while ((int)uVar63 < param_4 + -1); + } +LAB_001cb230: + uVar60 = uVar60 + 2 + uVar73 * 2; + pbVar71 = pbVar71 + ((ulong)uVar73 + 1) * 2; +LAB_001ca220: + if ((int)uVar60 < param_4) { + lVar70 = (long)param_5; + iVar13 = -param_5; + lVar68 = (long)iVar13; + lVar69 = NEON_shl(lVar70,1); + uVar12 = -((uint)((ulong)(lVar72 + (lVar64 + 1) * 4) >> 2) & 3) & 3; + lVar74 = NEON_shl(lVar68,1); + if (uVar11 < uVar12) { + uVar12 = uVar11; + } + lVar223 = NEON_shl(lVar70,2); + lVar79 = lVar69 + lVar70; + lVar224 = NEON_shl(lVar68,2); + lVar219 = NEON_shl(lVar70,3); + lVar228 = NEON_shl(lVar79,1); + lVar226 = lVar74 + lVar68; + lVar229 = NEON_shl(lVar79,2); + lVar225 = NEON_shl(lVar70,4); + pbVar50 = pbVar71 + (ulong)((param_4 + -1) - uVar60) + 1; + lVar81 = NEON_shl(lVar226,1); + lVar191 = NEON_shl(lVar226,2); + lVar231 = NEON_shl(lVar68,3); + lVar232 = NEON_shl(lVar223 + lVar70,1); + lVar227 = NEON_shl(lVar224 + lVar68,1); + piVar61 = (int *)(param_3 + (long)(int)uVar60 * 4); + do { + iVar65 = (uint)*pbVar71 * *piVar10; + if (0 < (int)uVar11) { + uVar60 = uVar12; + if (uVar11 < 0x12) { + uVar60 = uVar11; + } + if (uVar60 == 0) { + uVar78 = 1; + iVar62 = param_5; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70] - (uint)pbVar71[iVar13]) * piVar10[1]; + if (uVar60 == 1) { + uVar78 = 2; + iVar62 = param_5 * 2; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar69] - (uint)pbVar71[param_5 * -2]) * piVar10[2]; + if (uVar60 == 2) { + uVar78 = 3; + iVar62 = param_5 * 3; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 2] - (uint)pbVar71[param_5 * -3]) + * piVar10[3]; + if (uVar60 == 3) { + uVar78 = 4; + iVar62 = param_5 * 4; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 3] - (uint)pbVar71[param_5 * -4] + ) * piVar10[4]; + if (uVar60 == 4) { + uVar78 = 5; + iVar62 = param_5 * 5; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 4] - + (uint)pbVar71[param_5 * -5]) * piVar10[5]; + if (uVar60 == 5) { + uVar78 = 6; + iVar62 = param_5 * 6; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 5] - + (uint)pbVar71[param_5 * -6]) * piVar10[6]; + if (uVar60 == 6) { + uVar78 = 7; + iVar62 = param_5 * 7; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 6] - + (uint)pbVar71[param_5 * -7]) * piVar10[7]; + if (uVar60 == 7) { + uVar78 = 8; + iVar62 = param_5 * 8; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 7] - + (uint)pbVar71[param_5 * -8]) * piVar10[8]; + if (uVar60 == 8) { + uVar78 = 9; + iVar62 = param_5 * 9; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 8] - + (uint)pbVar71[param_5 * -9]) * piVar10[9]; + if (uVar60 == 9) { + uVar78 = 10; + iVar62 = param_5 * 10; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 9] - + (uint)pbVar71[param_5 * -10]) * piVar10[10]; + if (uVar60 == 10) { + uVar78 = 0xb; + iVar62 = param_5 * 0xb; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 10] - + (uint)pbVar71[param_5 * -0xb]) * piVar10[0xb]; + if (uVar60 == 0xb) { + uVar78 = 0xc; + iVar62 = param_5 * 0xc; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 0xb] - + (uint)pbVar71[param_5 * -0xc]) * piVar10[0xc]; + if (uVar60 == 0xc) { + uVar78 = 0xd; + iVar62 = param_5 * 0xd; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 0xc] - + (uint)pbVar71[param_5 * -0xd]) * piVar10[0xd]; + if (uVar60 == 0xd) { + uVar78 = 0xe; + iVar62 = param_5 * 0xe; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 0xd] - + (uint)pbVar71[param_5 * -0xe]) * piVar10[0xe]; + if (uVar60 == 0xe) { + uVar78 = 0xf; + iVar62 = param_5 * 0xf; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 0xe] - + (uint)pbVar71[param_5 * -0xf]) * + piVar10[0xf]; + if (uVar60 == 0xf) { + uVar78 = 0x10; + iVar62 = param_5 * 0x10; + } + else { + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 0xf] - + (uint)pbVar71[param_5 * -0x10]) * + piVar10[0x10]; + if (uVar60 == 0x11) { + uVar78 = 0x12; + iVar65 = iVar65 + ((uint)pbVar71[lVar70 + param_5 * 0x10] + - (uint)pbVar71[param_5 * -0x11]) * + piVar10[0x11]; + iVar62 = param_5 * 0x12; + } + else { + uVar78 = 0x11; + iVar62 = param_5 * 0x11; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar11 == uVar60) goto LAB_001cac48; + } + uVar73 = ((uVar11 - uVar60) - 0x10 >> 4) + 1; + iVar14 = uVar73 * 0x10; + if (0xe < (uVar11 - 1) - uVar60) { + lVar9 = (ulong)uVar60 + 1; + iVar218 = 0; + iVar220 = 0; + iVar221 = 0; + iVar222 = 0; + pbVar77 = pbVar71 + lVar9 * lVar70; + pbVar75 = pbVar71 + lVar9 * iVar13; + uVar230 = 0; + puVar67 = (undefined8 *)(lVar72 + (lVar64 + 1 + (ulong)uVar60) * 4); + do { + bVar84 = *pbVar77; + uVar230 = uVar230 + 1; + bVar88 = pbVar77[lVar70]; + pbVar39 = pbVar77 + lVar69; + pbVar40 = pbVar77 + lVar79; + pbVar35 = pbVar77 + lVar223; + pbVar33 = pbVar77 + lVar223 + lVar70; + pbVar34 = pbVar77 + lVar228; + pbVar30 = pbVar77 + (lVar219 - lVar70); + pbVar31 = pbVar77 + lVar219; + bVar89 = pbVar77[lVar219 + lVar70]; + pbVar32 = pbVar77 + lVar232; + pbVar36 = pbVar77 + lVar232 + lVar70; + pbVar37 = pbVar77 + lVar229; + pbVar38 = pbVar77 + lVar229 + lVar70; + pbVar41 = pbVar77 + (lVar225 - lVar69); + pbVar42 = pbVar77 + (lVar225 - lVar70); + pbVar77 = pbVar77 + (long)param_5 * 0x10; + bVar87 = *pbVar75; + pbVar43 = pbVar75 + lVar68; + pbVar44 = pbVar75 + lVar74; + pbVar45 = pbVar75 + lVar226; + pbVar46 = pbVar75 + lVar224; + pbVar47 = pbVar75 + lVar224 + lVar68; + pbVar49 = pbVar75 + lVar81; + pbVar48 = pbVar75 + (lVar231 - lVar68); + pbVar1 = pbVar75 + lVar231; + bVar90 = pbVar75[lVar231 + lVar68]; + pbVar2 = pbVar75 + lVar227; + pbVar3 = pbVar75 + lVar227 + lVar68; + pbVar4 = pbVar75 + lVar191; + pbVar5 = pbVar75 + lVar191 + lVar68; + pbVar6 = pbVar75 + (lVar68 * 0x10 - lVar74); + pbVar7 = pbVar75 + lVar68 * 0xf; + pbVar75 = pbVar75 + (long)iVar13 * 0x10; + iVar218 = iVar218 + (((CONCAT12(bVar88,CONCAT11(bVar88,bVar84)) & 0xff00ff) & 0xffff) - + (CONCAT12(*pbVar43,(ushort)bVar87) & 0xffff)) * (int)*puVar67 + + ((CONCAT12(*pbVar33,(ushort)*pbVar35) & 0xffff) - + (CONCAT12(*pbVar47,(ushort)*pbVar46) & 0xffff)) * (int)puVar67[2] + + (((CONCAT12(bVar89,CONCAT11(bVar89,*pbVar31)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar90,CONCAT11(bVar90,*pbVar1)) & 0xff00ff) & 0xffff)) * + (int)puVar67[4] + + ((CONCAT12(*pbVar38,(ushort)*pbVar37) & 0xffff) - + (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff)) * *(int *)(puVar67 + 6); + iVar220 = iVar220 + ((uint)bVar88 - (uint)*pbVar43) * (int)((ulong)*puVar67 >> 0x20) + + ((uint)*pbVar33 - (uint)*pbVar47) * (int)((ulong)puVar67[2] >> 0x20) + + ((uint)bVar89 - (uint)bVar90) * (int)((ulong)puVar67[4] >> 0x20) + + ((uint)*pbVar38 - (uint)*pbVar5) * *(int *)((long)puVar67 + 0x34); + iVar221 = iVar221 + ((uint)*pbVar39 - (CONCAT12(*pbVar45,(ushort)*pbVar44) & 0xffff)) * + (int)puVar67[1] + + ((uint)*pbVar34 - (uint)*pbVar49) * (int)puVar67[3] + + ((uint)*pbVar32 - (uint)*pbVar2) * (int)puVar67[5] + + ((uint)*pbVar41 - (uint)*pbVar6) * *(int *)(puVar67 + 7); + iVar222 = iVar222 + ((uint)*pbVar40 - (uint)*pbVar45) * (int)((ulong)puVar67[1] >> 0x20) + + ((uint)*pbVar30 - (uint)*pbVar48) * (int)((ulong)puVar67[3] >> 0x20) + + ((uint)*pbVar36 - (uint)*pbVar3) * (int)((ulong)puVar67[5] >> 0x20) + + ((uint)*pbVar42 - (uint)*pbVar7) * *(int *)((long)puVar67 + 0x3c); + puVar67 = puVar67 + 8; + } while (uVar230 < uVar73); + uVar78 = (ulong)(uint)((int)uVar78 + iVar14); + iVar62 = iVar62 + param_5 * iVar14; + iVar65 = iVar65 + iVar218 + iVar220 + iVar221 + iVar222; + if (uVar11 - uVar60 == iVar14) goto LAB_001cac48; + } + uVar76 = -(uVar78 >> 0x1f) & 0xfffffffc00000000 | uVar78 << 2; + iVar218 = (int)uVar78; + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76); + if (iVar218 + 1 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 4); + if (iVar218 + 2 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 8); + if (iVar218 + 3 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0xc); + if (iVar218 + 4 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x10); + if (iVar218 + 5 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x14); + if (iVar218 + 6 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x18); + if (iVar218 + 7 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x1c); + if (iVar218 + 8 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x20); + if (iVar218 + 9 <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x24); + if (iVar218 + 10 <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x28); + if (iVar218 + 0xb <= (int)uVar11) { + iVar62 = param_5 + iVar14; + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) * + *(int *)((long)piVar10 + uVar76 + 0x2c); + if (iVar218 + 0xc <= (int)uVar11) { + iVar14 = param_5 + iVar62; + iVar65 = iVar65 + ((uint)pbVar71[iVar62] - (uint)pbVar71[-iVar62]) * + *(int *)((long)piVar10 + uVar76 + 0x30); + if (iVar218 + 0xd <= (int)uVar11) { + iVar65 = iVar65 + ((uint)pbVar71[iVar14] - (uint)pbVar71[-iVar14]) + * *(int *)((long)piVar10 + uVar76 + 0x34); + if (iVar218 + 0xe <= (int)uVar11) { + iVar65 = iVar65 + ((uint)pbVar71[param_5 + iVar14] - + (uint)pbVar71[-(param_5 + iVar14)]) * + *(int *)((long)piVar10 + uVar76 + 0x38); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001cac48: + pbVar71 = pbVar71 + 1; + *piVar61 = iVar65; + piVar61 = piVar61 + 1; + } while (pbVar71 != pbVar50); + } + return; +} + + +================================================================== + +### FUNC 001cceb4 (6480 bytes) name=FUN_001cceb4 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_001cceb4(long param_1,long param_2,long param_3,int param_4,int param_5) + +{ + undefined1 *puVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + undefined1 *puVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + undefined1 *puVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + long lVar23; + long lVar24; + uint uVar25; + uint uVar26; + int iVar27; + undefined1 uVar28; + undefined1 uVar29; + byte bVar30; + byte bVar31; + byte bVar32; + uint uVar33; + uint uVar34; + byte *pbVar35; + byte *pbVar36; + uint3 uVar37; + long lVar38; + long lVar39; + long lVar40; + long lVar41; + long lVar42; + long lVar43; + int iVar44; + long lVar45; + long lVar46; + long lVar47; + long lVar48; + int *piVar49; + long lVar50; + byte *pbVar51; + undefined1 *puVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + ulong uVar56; + byte *pbVar57; + undefined1 *puVar58; + long lVar59; + undefined1 *puVar60; + byte *pbVar61; + byte *pbVar62; + long lVar63; + byte *pbVar64; + long lVar65; + long lVar66; + long lVar67; + long lVar68; + ulong uVar69; + byte *pbVar70; + long lVar71; + long lVar72; + byte *pbVar73; + long lVar74; + int *piVar75; + uint uVar76; + long lVar77; + long lVar78; + long lVar79; + long lVar80; + int iVar81; + int iVar82; + int iVar83; + int iVar84; + byte *pbVar85; + long lVar86; + byte *pbVar87; + int iVar88; + int iVar89; + int iVar90; + int iVar91; + int iVar92; + int iVar93; + int iVar94; + int iVar95; + int iVar96; + int iVar97; + int iVar98; + int iVar99; + int iVar100; + int iVar101; + int iVar102; + byte *pbVar103; + long lVar104; + byte *pbVar105; + int iVar106; + int iVar107; + int iVar108; + int iVar109; + byte *pbVar110; + int iVar111; + int iVar112; + int iVar113; + int iVar114; + int iVar115; + int iVar116; + int iVar117; + int iVar118; + int iVar119; + int iVar120; + int iVar121; + int iVar122; + long lVar123; + byte *local_200; + byte *local_1f8; + byte *local_1f0; + byte *local_1e8; + byte *local_1e0; + byte *local_1d8; + byte *local_1d0; + long local_1c8; + long local_1c0; + long local_1b8; + long local_1b0; + undefined8 *local_1a8; + long local_1a0; + uint local_188; + int local_78; + + iVar27 = *(int *)(param_1 + 8); + piVar75 = *(int **)(param_1 + 0x20); + local_78 = FUN_001c9220(param_1 + 0x70); + param_4 = param_4 * param_5; + if (local_78 < param_4 + -3) { + lVar50 = (long)param_5; + uVar34 = iVar27 - 1; + uVar25 = -((uint)((ulong)(piVar75 + 1) >> 2) & 3) & 3; + lVar45 = lVar50 * 2; + lVar46 = lVar50 * 4; + lVar74 = (long)local_78; + if (uVar34 < uVar25) { + uVar25 = uVar34; + } + uVar26 = uVar34; + if (0x11 < uVar34) { + uVar26 = uVar25; + } + uVar33 = (uint)((param_4 + -4) - local_78) >> 2; + lVar41 = lVar50 * 5; + lVar47 = lVar50 * 8; + uVar25 = ((uVar34 - uVar26) - 0x10 >> 4) + 1; + lVar38 = lVar50 * 3; + lVar48 = lVar50 * 0x10; + uVar76 = uVar25 * 0x10; + pbVar57 = (byte *)(param_2 + lVar74 + lVar45); + lVar42 = lVar50 * 0xe; + lVar77 = NEON_shl(lVar41,1); + lVar43 = lVar50 * 9; + lVar39 = lVar50 * 0xf; + lVar80 = NEON_shl(lVar38,2); + lVar78 = NEON_shl(lVar38,1); + lVar23 = lVar77 + lVar50; + lVar63 = (ulong)uVar26 * lVar50; + lVar40 = lVar50 * 7; + pbVar54 = (byte *)(param_2 + lVar74 + lVar38); + lVar24 = lVar80 + lVar50; + local_1d0 = (byte *)(param_2 + lVar74 + lVar50 * 0x10); + local_200 = (byte *)(param_2 + lVar74 + lVar50 * 10); + local_1f8 = (byte *)(param_2 + lVar74 + lVar50 * 0xb); + local_1f0 = (byte *)(param_2 + lVar74 + lVar50 * 0xc); + lVar66 = lVar74 + lVar50; + local_1e8 = (byte *)(param_2 + lVar74 + lVar50 * 0xd); + local_1e0 = (byte *)(param_2 + lVar74 + lVar50 * 0xe); + local_1d8 = (byte *)(param_2 + lVar74 + lVar50 * 0xf); + lVar59 = param_2 + lVar74 + lVar46; + lVar104 = param_2 + lVar74 + lVar78; + lVar123 = param_2 + lVar74 + lVar40; + lVar65 = param_2 + lVar74 + lVar47; + pbVar51 = (byte *)(param_2 + lVar74); + pbVar62 = (byte *)(param_2 + lVar74 + lVar50 * 0x11); + local_1c8 = param_2 + lVar74 + (long)param_5 * 0x11; + pbVar73 = (byte *)(param_2 + lVar74 + lVar50 * 4); + pbVar61 = (byte *)(param_2 + lVar66); + pbVar85 = (byte *)(param_2 + lVar74 + lVar50 * 5); + pbVar87 = (byte *)(param_2 + lVar74 + lVar50 * 6); + local_1a0 = 0; + pbVar103 = (byte *)(param_2 + lVar74 + lVar50 * 7); + pbVar105 = (byte *)(param_2 + lVar74 + lVar50 * 8); + pbVar110 = (byte *)(param_2 + lVar74 + lVar50 * 9); + lVar86 = param_2 + lVar74 + lVar41; + local_1c0 = param_2 + lVar74 + lVar43; + local_1b8 = param_2 + lVar74 + lVar77; + lVar72 = param_2 + lVar74 + lVar23; + lVar71 = param_2 + lVar74 + lVar80; + lVar79 = param_2 + lVar74 + lVar24; + local_1b0 = param_2 + lVar74 + lVar42; + lVar67 = param_2 + lVar74 + lVar39; + lVar68 = param_2 + lVar74 + lVar48; + pbVar70 = pbVar54; + pbVar64 = pbVar57; + local_1a8 = (undefined8 *)(param_3 + lVar74 * 4); + do { + iVar44 = *piVar75; + iVar93 = (uint)*pbVar51 * iVar44; + iVar91 = (uint)pbVar51[1] * iVar44; + iVar89 = (uint)pbVar51[2] * iVar44; + iVar44 = (uint)pbVar51[3] * iVar44; + if (1 < iVar27) { + if (uVar26 == 0) { + uVar69 = 1; + pbVar53 = pbVar51; + } + else { + iVar106 = piVar75[1]; + iVar93 = iVar93 + (uint)*pbVar61 * iVar106; + iVar91 = iVar91 + (uint)pbVar61[1] * iVar106; + iVar89 = iVar89 + (uint)pbVar61[2] * iVar106; + iVar44 = iVar44 + (uint)pbVar61[3] * iVar106; + if (uVar26 == 1) { + uVar69 = 2; + pbVar53 = pbVar61; + } + else { + iVar106 = piVar75[2]; + iVar91 = iVar91 + (uint)pbVar57[1] * iVar106; + iVar89 = iVar89 + (uint)pbVar57[2] * iVar106; + iVar93 = iVar93 + (uint)*pbVar64 * iVar106; + iVar44 = iVar44 + (uint)pbVar57[3] * iVar106; + if (uVar26 == 2) { + uVar69 = 3; + pbVar53 = pbVar64; + } + else { + iVar106 = piVar75[3]; + iVar91 = iVar91 + (uint)pbVar54[1] * iVar106; + iVar89 = iVar89 + (uint)pbVar54[2] * iVar106; + iVar93 = iVar93 + (uint)*pbVar70 * iVar106; + iVar44 = iVar44 + (uint)pbVar54[3] * iVar106; + if (uVar26 == 3) { + uVar69 = 4; + pbVar53 = pbVar70; + } + else { + iVar106 = piVar75[4]; + iVar91 = iVar91 + (uint)*(byte *)(lVar59 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar59 + 2) * iVar106; + iVar93 = iVar93 + (uint)*pbVar73 * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar59 + 3) * iVar106; + if (uVar26 == 4) { + uVar69 = 5; + pbVar53 = pbVar73; + } + else { + iVar106 = piVar75[5]; + iVar91 = iVar91 + (uint)*(byte *)(lVar86 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar86 + 2) * iVar106; + iVar93 = iVar93 + (uint)*pbVar85 * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar86 + 3) * iVar106; + if (uVar26 == 5) { + uVar69 = 6; + pbVar53 = pbVar85; + } + else { + iVar106 = piVar75[6]; + iVar91 = iVar91 + (uint)*(byte *)(lVar104 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar104 + 2) * iVar106; + iVar93 = iVar93 + (uint)*pbVar87 * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar104 + 3) * iVar106; + if (uVar26 == 6) { + uVar69 = 7; + pbVar53 = pbVar87; + } + else { + iVar106 = piVar75[7]; + iVar91 = iVar91 + (uint)*(byte *)(lVar123 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar123 + 2) * iVar106; + iVar93 = iVar93 + (uint)*pbVar103 * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar123 + 3) * iVar106; + if (uVar26 == 7) { + uVar69 = 8; + pbVar53 = pbVar103; + } + else { + iVar106 = piVar75[8]; + iVar91 = iVar91 + (uint)*(byte *)(lVar65 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar65 + 2) * iVar106; + iVar93 = iVar93 + (uint)*pbVar105 * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar65 + 3) * iVar106; + if (uVar26 == 8) { + uVar69 = 9; + pbVar53 = pbVar105; + } + else { + iVar106 = piVar75[9]; + iVar91 = iVar91 + (uint)*(byte *)(local_1c0 + 1) * iVar106; + iVar93 = iVar93 + (uint)*pbVar110 * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(local_1c0 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(local_1c0 + 3) * iVar106; + if (uVar26 == 9) { + uVar69 = 10; + pbVar53 = pbVar110; + } + else { + iVar106 = piVar75[10]; + iVar91 = iVar91 + (uint)*(byte *)(local_1b8 + 1) * iVar106; + iVar93 = iVar93 + (uint)*local_200 * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(local_1b8 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(local_1b8 + 3) * iVar106; + if (uVar26 == 10) { + uVar69 = 0xb; + pbVar53 = local_200; + } + else { + iVar106 = piVar75[0xb]; + iVar93 = iVar93 + (uint)*local_1f8 * iVar106; + iVar91 = iVar91 + (uint)*(byte *)(lVar72 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar72 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar72 + 3) * iVar106; + if (uVar26 == 0xb) { + uVar69 = 0xc; + pbVar53 = local_1f8; + } + else { + iVar106 = piVar75[0xc]; + iVar93 = iVar93 + (uint)*local_1f0 * iVar106; + iVar91 = iVar91 + (uint)*(byte *)(lVar71 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar71 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar71 + 3) * iVar106; + if (uVar26 == 0xc) { + uVar69 = 0xd; + pbVar53 = local_1f0; + } + else { + iVar106 = piVar75[0xd]; + iVar93 = iVar93 + (uint)*local_1e8 * iVar106; + iVar91 = iVar91 + (uint)*(byte *)(lVar79 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar79 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar79 + 3) * iVar106; + if (uVar26 == 0xd) { + uVar69 = 0xe; + pbVar53 = local_1e8; + } + else { + iVar106 = piVar75[0xe]; + iVar91 = iVar91 + (uint)*(byte *)(local_1b0 + 1) * iVar106; + iVar93 = iVar93 + (uint)*local_1e0 * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(local_1b0 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(local_1b0 + 3) * iVar106; + if (uVar26 == 0xe) { + uVar69 = 0xf; + pbVar53 = local_1e0; + } + else { + iVar106 = piVar75[0xf]; + iVar93 = iVar93 + (uint)*local_1d8 * iVar106; + iVar91 = iVar91 + (uint)*(byte *)(lVar67 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar67 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar67 + 3) * iVar106; + if (uVar26 == 0xf) { + uVar69 = 0x10; + pbVar53 = local_1d8; + } + else { + iVar106 = piVar75[0x10]; + iVar93 = iVar93 + (uint)*local_1d0 * iVar106; + iVar91 = iVar91 + (uint)*(byte *)(lVar68 + 1) * iVar106; + iVar89 = iVar89 + (uint)*(byte *)(lVar68 + 2) * iVar106; + iVar44 = iVar44 + (uint)*(byte *)(lVar68 + 3) * iVar106; + if (uVar26 == 0x10) { + uVar69 = 0x11; + pbVar53 = local_1d0; + } + else { + iVar106 = piVar75[0x11]; + uVar69 = 0x12; + iVar91 = iVar91 + (uint)*(byte *)(local_1c8 + 1) * iVar106 + ; + iVar89 = iVar89 + (uint)*(byte *)(local_1c8 + 2) * iVar106 + ; + iVar44 = iVar44 + (uint)*(byte *)(local_1c8 + 3) * iVar106 + ; + iVar93 = iVar93 + (uint)*pbVar62 * iVar106; + pbVar53 = pbVar62; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar34 == uVar26) goto LAB_001cdecc; + } + if (0xe < (iVar27 + -2) - uVar26) { + iVar111 = 0; + iVar112 = 0; + iVar113 = 0; + iVar114 = 0; + puVar52 = (undefined1 *)(param_2 + lVar63 + lVar66); + puVar60 = (undefined1 *)(param_2 + lVar63 + 1 + lVar66); + puVar58 = (undefined1 *)(param_2 + lVar63 + 2 + lVar66); + pbVar55 = (byte *)(param_2 + lVar63 + 3 + lVar66); + local_188 = 0; + piVar49 = piVar75 + (ulong)uVar26 + 1; + iVar106 = iVar111; + iVar107 = iVar112; + iVar115 = iVar111; + iVar116 = iVar112; + iVar119 = iVar111; + iVar120 = iVar112; + iVar108 = iVar113; + iVar109 = iVar114; + iVar117 = iVar113; + iVar118 = iVar114; + iVar121 = iVar113; + iVar122 = iVar114; + do { + local_188 = local_188 + 1; + uVar28 = *puVar52; + puVar1 = puVar52 + lVar50; + pbVar2 = puVar52 + lVar45; + pbVar3 = puVar52 + lVar38; + pbVar4 = puVar52 + lVar46; + pbVar5 = puVar52 + lVar41; + pbVar6 = puVar52 + lVar78; + pbVar7 = puVar52 + lVar40; + puVar8 = puVar52 + lVar47; + bVar30 = puVar52[lVar43]; + pbVar9 = puVar52 + lVar77; + pbVar10 = puVar52 + lVar23; + pbVar11 = puVar52 + lVar80; + pbVar12 = puVar52 + lVar24; + pbVar13 = puVar52 + lVar42; + pbVar35 = puVar52 + lVar39; + uVar29 = *puVar60; + puVar52 = puVar52 + lVar48; + puVar14 = puVar60 + lVar50; + pbVar15 = puVar60 + lVar45; + uVar37 = CONCAT12(*puVar1,CONCAT11(*puVar1,uVar28)) & 0xff00ff; + pbVar16 = puVar60 + lVar38; + pbVar17 = puVar60 + lVar46; + pbVar18 = puVar60 + lVar41; + iVar99 = (int)*(undefined8 *)piVar49; + iVar100 = (int)((ulong)*(undefined8 *)piVar49 >> 0x20); + iVar101 = (int)*(undefined8 *)(piVar49 + 2); + iVar102 = (int)((ulong)*(undefined8 *)(piVar49 + 2) >> 0x20); + pbVar19 = puVar60 + lVar78; + iVar95 = (int)*(undefined8 *)(piVar49 + 4); + iVar96 = (int)((ulong)*(undefined8 *)(piVar49 + 4) >> 0x20); + iVar97 = (int)*(undefined8 *)(piVar49 + 6); + iVar98 = (int)((ulong)*(undefined8 *)(piVar49 + 6) >> 0x20); + pbVar20 = puVar60 + lVar40; + puVar1 = puVar60 + lVar47; + iVar88 = (int)*(undefined8 *)(piVar49 + 8); + iVar90 = (int)((ulong)*(undefined8 *)(piVar49 + 8) >> 0x20); + iVar92 = (int)*(undefined8 *)(piVar49 + 10); + iVar94 = (int)((ulong)*(undefined8 *)(piVar49 + 10) >> 0x20); + bVar31 = puVar60[lVar43]; + iVar81 = (int)*(undefined8 *)(piVar49 + 0xc); + iVar82 = (int)((ulong)*(undefined8 *)(piVar49 + 0xc) >> 0x20); + iVar83 = (int)*(undefined8 *)(piVar49 + 0xe); + iVar84 = (int)((ulong)*(undefined8 *)(piVar49 + 0xe) >> 0x20); + iVar111 = iVar111 + (uVar37 & 0xffff) * iVar99 + + (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff) * iVar95 + + ((CONCAT12(bVar30,CONCAT11(bVar30,*puVar8)) & 0xff00ff) & 0xffff) * iVar88 + + (CONCAT12(*pbVar12,(ushort)*pbVar11) & 0xffff) * iVar81; + iVar112 = iVar112 + (uint)(byte)(uVar37 >> 0x10) * iVar100 + (uint)*pbVar5 * iVar96 + + (uint)bVar30 * iVar90 + (uint)*pbVar12 * iVar82; + iVar113 = iVar113 + (uint)*pbVar2 * iVar101 + (uint)*pbVar6 * iVar97 + + (uint)*pbVar9 * iVar92 + (uint)*pbVar13 * iVar83; + iVar114 = iVar114 + (uint)*pbVar3 * iVar102 + (uint)*pbVar7 * iVar98 + + (uint)*pbVar10 * iVar94 + (uint)*pbVar35 * iVar84; + pbVar2 = puVar60 + lVar77; + pbVar3 = puVar60 + lVar23; + pbVar4 = puVar60 + lVar80; + pbVar5 = puVar60 + lVar24; + pbVar6 = puVar60 + lVar42; + pbVar35 = puVar60 + lVar39; + puVar60 = puVar60 + lVar48; + uVar28 = *puVar58; + puVar8 = puVar58 + lVar50; + pbVar7 = puVar58 + lVar45; + uVar37 = CONCAT12(*puVar14,CONCAT11(*puVar14,uVar29)) & 0xff00ff; + pbVar9 = puVar58 + lVar38; + pbVar10 = puVar58 + lVar46; + pbVar11 = puVar58 + lVar41; + pbVar12 = puVar58 + lVar78; + pbVar13 = puVar58 + lVar40; + puVar14 = puVar58 + lVar47; + bVar32 = puVar58[lVar43]; + iVar115 = iVar115 + (uVar37 & 0xffff) * iVar99 + + (CONCAT12(*pbVar18,(ushort)*pbVar17) & 0xffff) * iVar95 + + ((CONCAT12(bVar31,CONCAT11(bVar31,*puVar1)) & 0xff00ff) & 0xffff) * iVar88 + + (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff) * iVar81; + iVar116 = iVar116 + (uint)(byte)(uVar37 >> 0x10) * iVar100 + (uint)*pbVar18 * iVar96 + + (uint)bVar31 * iVar90 + (uint)*pbVar5 * iVar82; + iVar117 = iVar117 + (uint)*pbVar15 * iVar101 + (uint)*pbVar19 * iVar97 + + (uint)*pbVar2 * iVar92 + (uint)*pbVar6 * iVar83; + iVar118 = iVar118 + (uint)*pbVar16 * iVar102 + (uint)*pbVar20 * iVar98 + + (uint)*pbVar3 * iVar94 + (uint)*pbVar35 * iVar84; + pbVar2 = puVar58 + lVar77; + pbVar3 = puVar58 + lVar23; + pbVar4 = puVar58 + lVar80; + pbVar5 = puVar58 + lVar24; + pbVar6 = puVar58 + lVar42; + pbVar36 = puVar58 + lVar39; + puVar58 = puVar58 + lVar48; + bVar30 = *pbVar55; + pbVar15 = pbVar55 + lVar50; + pbVar16 = pbVar55 + lVar45; + uVar37 = CONCAT12(*puVar8,CONCAT11(*puVar8,uVar28)) & 0xff00ff; + pbVar17 = pbVar55 + lVar38; + pbVar18 = pbVar55 + lVar46; + pbVar19 = pbVar55 + lVar41; + pbVar20 = pbVar55 + lVar78; + pbVar35 = pbVar55 + lVar40; + pbVar21 = pbVar55 + lVar47; + pbVar22 = pbVar55 + lVar43; + iVar119 = iVar119 + (uVar37 & 0xffff) * iVar99 + + (CONCAT12(*pbVar11,(ushort)*pbVar10) & 0xffff) * iVar95 + + ((CONCAT12(bVar32,CONCAT11(bVar32,*puVar14)) & 0xff00ff) & 0xffff) * iVar88 + + (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff) * iVar81; + iVar120 = iVar120 + (uint)(byte)(uVar37 >> 0x10) * iVar100 + (uint)*pbVar11 * iVar96 + + (uint)bVar32 * iVar90 + (uint)*pbVar5 * iVar82; + iVar121 = iVar121 + (uint)*pbVar7 * iVar101 + (uint)*pbVar12 * iVar97 + + (uint)*pbVar2 * iVar92 + (uint)*pbVar6 * iVar83; + iVar122 = iVar122 + (uint)*pbVar9 * iVar102 + (uint)*pbVar13 * iVar98 + + (uint)*pbVar3 * iVar94 + (uint)*pbVar36 * iVar84; + pbVar2 = pbVar55 + lVar77; + pbVar3 = pbVar55 + lVar23; + pbVar4 = pbVar55 + lVar80; + pbVar5 = pbVar55 + lVar24; + pbVar6 = pbVar55 + lVar42; + pbVar7 = pbVar55 + lVar39; + pbVar55 = pbVar55 + lVar48; + uVar37 = CONCAT12(*pbVar22,CONCAT11(*pbVar22,*pbVar21)) & 0xff00ff; + iVar106 = iVar106 + (CONCAT12(*pbVar15,(ushort)bVar30) & 0xffff) * iVar99 + + (CONCAT12(*pbVar19,(ushort)*pbVar18) & 0xffff) * iVar95 + + (uVar37 & 0xffff) * iVar88 + + (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff) * iVar81; + iVar107 = iVar107 + (uint)*pbVar15 * iVar100 + (uint)*pbVar19 * iVar96 + + (uint)(byte)(uVar37 >> 0x10) * iVar90 + (uint)*pbVar5 * iVar82; + iVar108 = iVar108 + (uint)*pbVar16 * iVar101 + (uint)*pbVar20 * iVar97 + + (uint)*pbVar2 * iVar92 + (uint)*pbVar6 * iVar83; + iVar109 = iVar109 + (uint)*pbVar17 * iVar102 + (uint)*pbVar35 * iVar98 + + (uint)*pbVar3 * iVar94 + (uint)*pbVar7 * iVar84; + piVar49 = piVar49 + 0x10; + } while (local_188 < uVar25); + uVar69 = (ulong)((int)uVar69 + uVar76); + pbVar53 = pbVar53 + (ulong)uVar76 * lVar50; + iVar44 = iVar44 + iVar106 + iVar107 + iVar108 + iVar109; + iVar89 = iVar89 + iVar119 + iVar120 + iVar121 + iVar122; + iVar91 = iVar91 + iVar115 + iVar116 + iVar117 + iVar118; + iVar93 = iVar93 + iVar111 + iVar112 + iVar113 + iVar114; + if (uVar34 - uVar26 == uVar76) goto LAB_001cdecc; + } + uVar56 = -(uVar69 >> 0x1f) & 0xfffffffc00000000 | uVar69 << 2; + iVar107 = (int)uVar69; + iVar106 = *(int *)((long)piVar75 + uVar56); + iVar93 = iVar93 + (uint)pbVar53[lVar50] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar50 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar50 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar50 + 1] * iVar106; + if (iVar107 + 1 < iVar27) { + lVar74 = lVar50 * 2; + iVar106 = *(int *)((long)piVar75 + uVar56 + 4); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 2] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 2 < iVar27) { + lVar74 = lVar50 * 3; + iVar106 = *(int *)((long)piVar75 + uVar56 + 8); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 3] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 3 < iVar27) { + lVar74 = lVar50 * 4; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0xc); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 4] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 4 < iVar27) { + lVar74 = lVar50 * 5; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x10); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 5] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 5 < iVar27) { + lVar74 = lVar50 * 6; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x14); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 6] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 6 < iVar27) { + lVar74 = lVar50 * 7; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x18); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 7] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 7 < iVar27) { + lVar74 = lVar50 * 8; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x1c); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 8] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 8 < iVar27) { + lVar74 = lVar50 * 9; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x20); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 9] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 9 < iVar27) { + lVar74 = lVar50 * 10; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x24); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 10] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 10 < iVar27) { + lVar74 = lVar50 * 0xb; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x28); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 0xb] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 0xb < iVar27) { + lVar74 = lVar50 * 0xc; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x2c); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 0xc] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 0xc < iVar27) { + lVar74 = lVar50 * 0xd; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x30); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 0xd] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 0xd < iVar27) { + lVar74 = lVar50 * 0xe; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x34); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 0xe] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + if (iVar107 + 0xe < iVar27) { + lVar74 = lVar50 * 0xf; + iVar106 = *(int *)((long)piVar75 + uVar56 + 0x38); + iVar93 = iVar93 + (uint)pbVar53[lVar50 * 0xf] * iVar106; + iVar91 = iVar91 + (uint)pbVar53[lVar74 + 1] * iVar106; + iVar89 = iVar89 + (uint)pbVar53[lVar74 + 2] * iVar106; + iVar44 = iVar44 + (uint)pbVar53[lVar74 + 3] * iVar106; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001cdecc: + pbVar51 = pbVar51 + 4; + pbVar61 = pbVar61 + 4; + pbVar57 = pbVar57 + 4; + local_1a0 = local_1a0 + 4; + pbVar62 = pbVar62 + 4; + pbVar54 = pbVar54 + 4; + lVar59 = lVar59 + 4; + lVar86 = lVar86 + 4; + lVar104 = lVar104 + 4; + lVar123 = lVar123 + 4; + lVar65 = lVar65 + 4; + lVar72 = lVar72 + 4; + lVar71 = lVar71 + 4; + pbVar64 = pbVar64 + 4; + lVar67 = lVar67 + 4; + lVar68 = lVar68 + 4; + lVar66 = lVar66 + 4; + pbVar70 = pbVar70 + 4; + pbVar73 = pbVar73 + 4; + pbVar85 = pbVar85 + 4; + pbVar87 = pbVar87 + 4; + pbVar103 = pbVar103 + 4; + pbVar105 = pbVar105 + 4; + pbVar110 = pbVar110 + 4; + local_200 = local_200 + 4; + local_1f8 = local_1f8 + 4; + local_1a8[1] = CONCAT44(iVar44,iVar89); + *local_1a8 = CONCAT44(iVar91,iVar93); + local_1f0 = local_1f0 + 4; + local_1e8 = local_1e8 + 4; + local_1e0 = local_1e0 + 4; + local_1d8 = local_1d8 + 4; + local_1d0 = local_1d0 + 4; + local_1c8 = local_1c8 + 4; + local_1c0 = local_1c0 + 4; + local_1b8 = local_1b8 + 4; + lVar79 = lVar79 + 4; + local_1b0 = local_1b0 + 4; + local_1a8 = local_1a8 + 2; + } while (local_1a0 != ((ulong)uVar33 + 1) * 4); + local_78 = local_78 + 4 + uVar33 * 4; + } + if (local_78 < param_4) { + lVar46 = (long)param_5; + uVar34 = iVar27 - 1; + lVar50 = lVar46 * 2; + uVar25 = -((uint)((ulong)(piVar75 + 1) >> 2) & 3) & 3; + lVar45 = lVar46 * 3; + if (uVar34 < uVar25) { + uVar25 = uVar34; + } + uVar26 = uVar34; + if (0x11 < uVar34) { + uVar26 = uVar25; + } + lVar59 = (long)local_78; + uVar25 = ((uVar34 - uVar26) - 0x10 >> 4) + 1; + lVar123 = NEON_shl(lVar46,3); + lVar104 = NEON_shl(lVar46,4); + uVar33 = uVar25 * 0x10; + lVar86 = NEON_shl(lVar45,1); + pbVar61 = (byte *)(param_2 + lVar59 + lVar46 * 4); + pbVar57 = (byte *)(param_2 + lVar59 + lVar46 * 7); + pbVar62 = (byte *)(param_2 + lVar59 + lVar46 * 10); + pbVar54 = (byte *)(param_2 + lVar59 + lVar46 * 0xc); + pbVar64 = (byte *)(param_2 + lVar59 + lVar46 * 0x10); + pbVar51 = (byte *)(param_2 + lVar59); + lVar74 = lVar46 + lVar59; + do { + iVar44 = (uint)*pbVar51 * *piVar75; + if (1 < iVar27) { + if (uVar26 == 0) { + uVar69 = 1; + pbVar70 = pbVar51; + } + else { + pbVar70 = pbVar51 + lVar46; + iVar44 = iVar44 + (uint)pbVar51[lVar46] * piVar75[1]; + if (uVar26 == 1) { + uVar69 = 2; + } + else { + pbVar70 = pbVar70 + lVar46; + iVar44 = iVar44 + (uint)pbVar51[lVar50] * piVar75[2]; + if (uVar26 == 2) { + uVar69 = 3; + } + else { + pbVar70 = pbVar70 + lVar46; + iVar44 = iVar44 + (uint)pbVar51[lVar45] * piVar75[3]; + if (uVar26 == 3) { + uVar69 = 4; + } + else { + iVar44 = iVar44 + (uint)*pbVar61 * piVar75[4]; + if (uVar26 == 4) { + uVar69 = 5; + pbVar70 = pbVar61; + } + else { + iVar44 = iVar44 + (uint)pbVar61[lVar46] * piVar75[5]; + if (uVar26 == 5) { + uVar69 = 6; + pbVar70 = pbVar61 + lVar46; + } + else { + iVar44 = iVar44 + (uint)pbVar61[lVar50] * piVar75[6]; + if (uVar26 == 6) { + uVar69 = 7; + pbVar70 = pbVar61 + lVar46 + lVar46; + } + else { + iVar44 = iVar44 + (uint)*pbVar57 * piVar75[7]; + if (uVar26 == 7) { + uVar69 = 8; + pbVar70 = pbVar57; + } + else { + iVar44 = iVar44 + (uint)pbVar57[lVar46] * piVar75[8]; + if (uVar26 == 8) { + uVar69 = 9; + pbVar70 = pbVar57 + lVar46; + } + else { + iVar44 = iVar44 + (uint)pbVar57[lVar50] * piVar75[9]; + if (uVar26 == 9) { + uVar69 = 10; + pbVar70 = pbVar57 + lVar46 + lVar46; + } + else { + iVar44 = iVar44 + (uint)*pbVar62 * piVar75[10]; + if (uVar26 == 10) { + uVar69 = 0xb; + pbVar70 = pbVar62; + } + else { + iVar44 = iVar44 + (uint)pbVar62[lVar46] * piVar75[0xb]; + if (uVar26 == 0xb) { + uVar69 = 0xc; + pbVar70 = pbVar62 + lVar46; + } + else { + iVar44 = iVar44 + (uint)*pbVar54 * piVar75[0xc]; + if (uVar26 == 0xc) { + uVar69 = 0xd; + pbVar70 = pbVar54; + } + else { + pbVar70 = pbVar54 + lVar46; + iVar44 = iVar44 + (uint)pbVar54[lVar46] * piVar75[0xd]; + if (uVar26 == 0xd) { + uVar69 = 0xe; + } + else { + iVar44 = iVar44 + (uint)pbVar54[lVar50] * piVar75[0xe]; + if (uVar26 == 0xe) { + uVar69 = 0xf; + pbVar70 = pbVar70 + lVar46; + } + else { + iVar44 = iVar44 + (uint)pbVar54[lVar45] * piVar75[0xf]; + if (uVar26 == 0xf) { + uVar69 = 0x10; + pbVar70 = pbVar70 + lVar46 + lVar46; + } + else { + iVar44 = iVar44 + (uint)*pbVar64 * piVar75[0x10]; + if (uVar26 == 0x10) { + uVar69 = 0x11; + pbVar70 = pbVar64; + } + else { + uVar69 = 0x12; + iVar44 = iVar44 + (uint)pbVar64[lVar46] * piVar75[0x11]; + pbVar70 = pbVar64 + lVar46; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar26 == uVar34) goto LAB_001ce66c; + } + if (0xe < (iVar27 + -2) - uVar26) { + iVar89 = 0; + iVar91 = 0; + iVar93 = 0; + iVar106 = 0; + uVar76 = 0; + puVar52 = (undefined1 *)(param_2 + lVar46 * (ulong)uVar26 + lVar74); + pbVar73 = puVar52 + lVar46 * 10; + piVar49 = piVar75 + (ulong)uVar26 + 1; + do { + uVar28 = *puVar52; + uVar76 = uVar76 + 1; + bVar31 = puVar52[lVar46]; + pbVar85 = puVar52 + lVar50; + pbVar87 = puVar52 + lVar45; + pbVar103 = puVar52 + lVar46 * 4; + pbVar105 = puVar52 + lVar46 * 5; + pbVar110 = puVar52 + lVar86; + pbVar53 = pbVar73 + lVar46 * -3; + puVar60 = puVar52 + lVar123; + puVar58 = puVar52 + lVar123 + lVar46; + puVar52 = puVar52 + lVar104; + bVar30 = *pbVar73; + pbVar55 = pbVar73 + lVar46; + pbVar2 = pbVar73 + lVar50; + pbVar3 = pbVar73 + lVar45; + pbVar4 = pbVar73 + lVar46 * 4; + pbVar5 = pbVar73 + lVar46 * 5; + pbVar73 = pbVar73 + lVar104; + uVar37 = CONCAT12(*puVar58,CONCAT11(*puVar58,*puVar60)) & 0xff00ff; + iVar89 = iVar89 + ((CONCAT12(bVar31,CONCAT11(bVar31,uVar28)) & 0xff00ff) & 0xffff) * + (int)*(undefined8 *)piVar49 + + (CONCAT12(*pbVar105,(ushort)*pbVar103) & 0xffff) * + (int)*(undefined8 *)(piVar49 + 4) + + (uVar37 & 0xffff) * (int)*(undefined8 *)(piVar49 + 8) + + (CONCAT12(*pbVar3,(ushort)*pbVar2) & 0xffff) * + (int)*(undefined8 *)(piVar49 + 0xc); + iVar91 = iVar91 + (uint)bVar31 * (int)((ulong)*(undefined8 *)piVar49 >> 0x20) + + (uint)*pbVar105 * (int)((ulong)*(undefined8 *)(piVar49 + 4) >> 0x20) + + (uint)(byte)(uVar37 >> 0x10) * + (int)((ulong)*(undefined8 *)(piVar49 + 8) >> 0x20) + + (uint)*pbVar3 * (int)((ulong)*(undefined8 *)(piVar49 + 0xc) >> 0x20); + iVar93 = iVar93 + (uint)*pbVar85 * (int)*(undefined8 *)(piVar49 + 2) + + (uint)*pbVar110 * (int)*(undefined8 *)(piVar49 + 6) + + (uint)bVar30 * (int)*(undefined8 *)(piVar49 + 10) + + (uint)*pbVar4 * (int)*(undefined8 *)(piVar49 + 0xe); + iVar106 = iVar106 + (uint)*pbVar87 * (int)((ulong)*(undefined8 *)(piVar49 + 2) >> 0x20) + + (uint)*pbVar53 * (int)((ulong)*(undefined8 *)(piVar49 + 6) >> 0x20) + + (uint)*pbVar55 * (int)((ulong)*(undefined8 *)(piVar49 + 10) >> 0x20) + + (uint)*pbVar5 * (int)((ulong)*(undefined8 *)(piVar49 + 0xe) >> 0x20); + piVar49 = piVar49 + 0x10; + } while (uVar76 < uVar25); + uVar69 = (ulong)((int)uVar69 + uVar33); + pbVar70 = pbVar70 + lVar46 * (ulong)uVar33; + iVar44 = iVar44 + iVar89 + iVar91 + iVar93 + iVar106; + if (uVar33 == uVar34 - uVar26) goto LAB_001ce66c; + } + uVar56 = -(uVar69 >> 0x1f) & 0xfffffffc00000000 | uVar69 << 2; + iVar89 = (int)uVar69; + iVar44 = iVar44 + (uint)pbVar70[lVar46] * *(int *)((long)piVar75 + uVar56); + if (iVar89 + 1 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 2] * *(int *)((long)piVar75 + uVar56 + 4); + if (iVar89 + 2 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 3] * *(int *)((long)piVar75 + uVar56 + 8); + if (iVar89 + 3 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 4] * *(int *)((long)piVar75 + uVar56 + 0xc); + if (iVar89 + 4 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 5] * + *(int *)((long)piVar75 + uVar56 + 0x10); + if (iVar89 + 5 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 6] * + *(int *)((long)piVar75 + uVar56 + 0x14); + if (iVar89 + 6 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 7] * + *(int *)((long)piVar75 + uVar56 + 0x18); + if (iVar89 + 7 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 8] * + *(int *)((long)piVar75 + uVar56 + 0x1c); + if (iVar89 + 8 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 9] * + *(int *)((long)piVar75 + uVar56 + 0x20); + if (iVar89 + 9 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 10] * + *(int *)((long)piVar75 + uVar56 + 0x24); + if (iVar89 + 10 < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 0xb] * + *(int *)((long)piVar75 + uVar56 + 0x28); + if (iVar89 + 0xb < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 0xc] * + *(int *)((long)piVar75 + uVar56 + 0x2c); + if (iVar89 + 0xc < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 0xd] * + *(int *)((long)piVar75 + uVar56 + 0x30); + if (iVar89 + 0xd < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 0xe] * + *(int *)((long)piVar75 + uVar56 + 0x34); + if (iVar89 + 0xe < iVar27) { + iVar44 = iVar44 + (uint)pbVar70[lVar46 * 0xf] * + *(int *)((long)piVar75 + uVar56 + 0x38); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001ce66c: + *(int *)(param_3 + lVar46 * -4 + lVar74 * 4) = iVar44; + lVar74 = lVar74 + 1; + pbVar51 = pbVar51 + 1; + pbVar61 = pbVar61 + 1; + pbVar57 = pbVar57 + 1; + pbVar62 = pbVar62 + 1; + pbVar54 = pbVar54 + 1; + pbVar64 = pbVar64 + 1; + } while (lVar74 != lVar59 + lVar46 + 1 + (ulong)(uint)((param_4 + -1) - local_78)); + } + return; +} + + +================================================================== + +### FUNC 001ce804 (696 bytes) name=FUN_001ce804 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 * +FUN_001ce804(undefined8 *param_1,Mat *param_2,undefined4 *param_3,uint *param_4,Mat *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 *puVar15; + void *__dest; + undefined8 *puVar16; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar15 = operator_new(0xe0); + uVar2 = *param_3; + uVar3 = *param_4; + *(undefined4 *)((long)puVar15 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar15 + 1) = 0xffffffff; + *puVar15 = &PTR_FUN_004f34f0; + *(undefined4 *)(puVar15 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar15 + 0x14) = 0; + *(undefined4 *)(puVar15 + 3) = 0; + *(undefined4 *)((long)puVar15 + 0x1c) = 0; + puVar15[4] = 0; + puVar15[5] = 0; + puVar15[6] = 0; + puVar15[7] = 0; + puVar15[8] = 0; + puVar15[9] = 0; + puVar15[10] = puVar15 + 3; + *(undefined4 *)(puVar15 + 0xe) = 0x42ff0000; + puVar15[0xb] = puVar15 + 0xc; + puVar15[0xd] = 0; + puVar15[0xc] = 0; + *(undefined4 *)((long)puVar15 + 0x74) = 0; + *(undefined4 *)(puVar15 + 0xf) = 0; + *(undefined4 *)((long)puVar15 + 0x7c) = 0; + puVar15[0x10] = 0; + puVar15[0x11] = 0; + puVar15[0x12] = 0; + puVar15[0x13] = 0; + puVar15[0x14] = 0; + puVar15[0x15] = 0; + puVar15[0x16] = puVar15 + 0xf; + puVar15[0x17] = puVar15 + 0x18; + puVar15[0x19] = 0; + uVar4 = *(uint *)param_2; + puVar15[0x18] = 0; + uVar1 = uVar4 & 0x4000; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar15 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar15 + 2),param_2); + } + *(undefined4 *)((long)puVar15 + 0xc) = uVar2; + *(int *)(puVar15 + 1) = *(int *)(puVar15 + 3) + *(int *)((long)puVar15 + 0x1c) + -1; + if (((*(uint *)(puVar15 + 2) & 0xfff) != 5) || + ((*(int *)(puVar15 + 3) != 1 && (*(int *)((long)puVar15 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,"kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = float; DT = float; VecOp = cv::SymmRowSmallVec_32f]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_18); + } + cv::Mat::operator=((Mat *)(puVar15 + 0xe),param_5); + *(undefined4 *)(puVar15 + 0x1a) = *(undefined4 *)(param_5 + 0x60); + *(uint *)(puVar15 + 0x1b) = uVar3; + *puVar15 = &PTR_FUN_004f3520; + if (((uVar3 & 3) == 0) || (5 < *(int *)(puVar15 + 1))) { + local_28 = 0; + local_20 = 0; + puVar16 = (undefined8 *)cv::String::allocate((String *)&local_28,0x54); + uVar14 = DAT_00443198; + uVar13 = DAT_00443190; + uVar12 = DAT_00443188; + uVar11 = DAT_00443180; + uVar10 = DAT_00443178; + uVar9 = DAT_00443170; + uVar8 = DAT_00443168; + uVar7 = DAT_00443160; + uVar6 = _LAB_00443158; + uVar5 = DAT_00443150; + *(undefined4 *)(puVar16 + 10) = DAT_004431a0; + *puVar16 = uVar5; + puVar16[1] = uVar6; + puVar16[2] = uVar7; + puVar16[3] = uVar8; + puVar16[4] = uVar9; + puVar16[5] = uVar10; + puVar16[6] = uVar11; + puVar16[7] = uVar12; + puVar16[8] = uVar13; + puVar16[9] = uVar14; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmRowSmallFilter::SymmRowSmallFilter(const cv::Mat&, int, int, const VecOp&) [with ST = float; DT = float; VecOp = cv::SymmRowSmallVec_32f]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc43); + cv::String::deallocate((String *)&local_28); + } + puVar16 = operator_new(0x20); + puVar16[2] = puVar15; + *(undefined4 *)(puVar16 + 1) = 1; + *puVar16 = &PTR_FUN_004f3f70; + *param_1 = puVar16; + param_1[1] = puVar15; + return param_1; +} + + +================================================================== + +### FUNC 001ceb38 (416 bytes) name=FUN_001ceb38 + +undefined8 * FUN_001ceb38(undefined8 *param_1,Mat *param_2,undefined4 *param_3) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + undefined8 *puVar4; + void *__dest; + undefined8 *puVar5; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar4 = operator_new(0x78); + uVar2 = *param_3; + *(undefined4 *)((long)puVar4 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar4 + 1) = 0xffffffff; + *puVar4 = &PTR_FUN_004f3640; + *(undefined4 *)(puVar4 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 3) = 0; + *(undefined4 *)((long)puVar4 + 0x1c) = 0; + puVar4[4] = 0; + uVar3 = *(uint *)param_2; + puVar4[5] = 0; + puVar4[6] = 0; + uVar1 = uVar3 & 0x4000; + puVar4[7] = 0; + puVar4[8] = 0; + puVar4[9] = 0; + puVar4[10] = puVar4 + 3; + puVar4[0xb] = puVar4 + 0xc; + puVar4[0xd] = 0; + puVar4[0xc] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar4 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar4 + 2),param_2); + } + *(undefined4 *)((long)puVar4 + 0xc) = uVar2; + *(int *)(puVar4 + 1) = *(int *)(puVar4 + 3) + *(int *)((long)puVar4 + 0x1c) + -1; + if (((*(uint *)(puVar4 + 2) & 0xfff) != 5) || + ((*(int *)(puVar4 + 3) != 1 && (*(int *)((long)puVar4 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,"kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = short int; DT = float; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_18); + } + puVar5 = operator_new(0x20); + puVar5[2] = puVar4; + *(undefined4 *)(puVar5 + 1) = 1; + *puVar5 = &PTR_FUN_004f4090; + *param_1 = puVar5; + param_1[1] = puVar4; + return param_1; +} + + +================================================================== + +### FUNC 001ced14 (416 bytes) name=FUN_001ced14 + +undefined8 * FUN_001ced14(undefined8 *param_1,Mat *param_2,undefined4 *param_3) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + undefined8 *puVar4; + void *__dest; + undefined8 *puVar5; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar4 = operator_new(0x78); + uVar2 = *param_3; + *(undefined4 *)((long)puVar4 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar4 + 1) = 0xffffffff; + *puVar4 = &PTR_FUN_004f3670; + *(undefined4 *)(puVar4 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 3) = 0; + *(undefined4 *)((long)puVar4 + 0x1c) = 0; + puVar4[4] = 0; + uVar3 = *(uint *)param_2; + puVar4[5] = 0; + puVar4[6] = 0; + uVar1 = uVar3 & 0x4000; + puVar4[7] = 0; + puVar4[8] = 0; + puVar4[9] = 0; + puVar4[10] = puVar4 + 3; + puVar4[0xb] = puVar4 + 0xc; + puVar4[0xd] = 0; + puVar4[0xc] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar4 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar4 + 2),param_2); + } + *(undefined4 *)((long)puVar4 + 0xc) = uVar2; + *(int *)(puVar4 + 1) = *(int *)(puVar4 + 3) + *(int *)((long)puVar4 + 0x1c) + -1; + if (((*(uint *)(puVar4 + 2) & 0xfff) != 6) || + ((*(int *)(puVar4 + 3) != 1 && (*(int *)((long)puVar4 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,"kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = short int; DT = double; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_18); + } + puVar5 = operator_new(0x20); + puVar5[2] = puVar4; + *(undefined4 *)(puVar5 + 1) = 1; + *puVar5 = &PTR_FUN_004f40c0; + *param_1 = puVar5; + param_1[1] = puVar4; + return param_1; +} + + +================================================================== + +### FUNC 001ceef0 (416 bytes) name=FUN_001ceef0 + +undefined8 * FUN_001ceef0(undefined8 *param_1,Mat *param_2,undefined4 *param_3) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + undefined8 *puVar4; + void *__dest; + undefined8 *puVar5; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar4 = operator_new(0x78); + uVar2 = *param_3; + *(undefined4 *)((long)puVar4 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar4 + 1) = 0xffffffff; + *puVar4 = &PTR_FUN_004f36a0; + *(undefined4 *)(puVar4 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 3) = 0; + *(undefined4 *)((long)puVar4 + 0x1c) = 0; + puVar4[4] = 0; + uVar3 = *(uint *)param_2; + puVar4[5] = 0; + puVar4[6] = 0; + uVar1 = uVar3 & 0x4000; + puVar4[7] = 0; + puVar4[8] = 0; + puVar4[9] = 0; + puVar4[10] = puVar4 + 3; + puVar4[0xb] = puVar4 + 0xc; + puVar4[0xd] = 0; + puVar4[0xc] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar4 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar4 + 2),param_2); + } + *(undefined4 *)((long)puVar4 + 0xc) = uVar2; + *(int *)(puVar4 + 1) = *(int *)(puVar4 + 3) + *(int *)((long)puVar4 + 0x1c) + -1; + if (((*(uint *)(puVar4 + 2) & 0xfff) != 5) || + ((*(int *)(puVar4 + 3) != 1 && (*(int *)((long)puVar4 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,"kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = float; DT = float; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_18); + } + puVar5 = operator_new(0x20); + puVar5[2] = puVar4; + *(undefined4 *)(puVar5 + 1) = 1; + *puVar5 = &PTR_FUN_004f40f0; + *param_1 = puVar5; + param_1[1] = puVar4; + return param_1; +} + + +================================================================== + +### FUNC 001cf0cc (416 bytes) name=FUN_001cf0cc + +undefined8 * FUN_001cf0cc(undefined8 *param_1,Mat *param_2,undefined4 *param_3) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + undefined8 *puVar4; + void *__dest; + undefined8 *puVar5; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar4 = operator_new(0x78); + uVar2 = *param_3; + *(undefined4 *)((long)puVar4 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar4 + 1) = 0xffffffff; + *puVar4 = &PTR_FUN_004f36d0; + *(undefined4 *)(puVar4 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 3) = 0; + *(undefined4 *)((long)puVar4 + 0x1c) = 0; + puVar4[4] = 0; + uVar3 = *(uint *)param_2; + puVar4[5] = 0; + puVar4[6] = 0; + uVar1 = uVar3 & 0x4000; + puVar4[7] = 0; + puVar4[8] = 0; + puVar4[9] = 0; + puVar4[10] = puVar4 + 3; + puVar4[0xb] = puVar4 + 0xc; + puVar4[0xd] = 0; + puVar4[0xc] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar4 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar4 + 2),param_2); + } + *(undefined4 *)((long)puVar4 + 0xc) = uVar2; + *(int *)(puVar4 + 1) = *(int *)(puVar4 + 3) + *(int *)((long)puVar4 + 0x1c) + -1; + if (((*(uint *)(puVar4 + 2) & 0xfff) != 6) || + ((*(int *)(puVar4 + 3) != 1 && (*(int *)((long)puVar4 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,"kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = float; DT = double; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_18); + } + puVar5 = operator_new(0x20); + puVar5[2] = puVar4; + *(undefined4 *)(puVar5 + 1) = 1; + *puVar5 = &PTR_FUN_004f4120; + *param_1 = puVar5; + param_1[1] = puVar4; + return param_1; +} + + +================================================================== + +### FUNC 001cf2b0 (4956 bytes) name=FUN_001cf2b0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +long * FUN_001cf2b0(long *param_1,uint param_2,uint param_3,_InputArray *param_4,undefined4 param_5, + uint param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined4 uVar13; + int iVar14; + uint uVar15; + void *pvVar16; + undefined8 *puVar17; + undefined8 *puVar18; + int *piVar19; + Mat *pMVar20; + int iVar21; + uint uVar22; + uint uVar23; + uint local_238; + undefined4 local_234; + long local_230; + long lStack_228; + long local_220; + long lStack_218; + long local_210; + long lStack_208; + long local_200; + long lStack_1f8; + long local_1f0; + long lStack_1e8; + undefined8 local_1e0; + undefined8 local_1d8; + String aSStack_1d0 [16]; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + undefined8 local_148; + uint local_140; + int local_13c; + int local_138; + int local_134; + int *local_130; + undefined8 uStack_128; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + long lStack_108; + int *local_100; + undefined8 *local_f8; + undefined8 local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 uStack_d8; + int *local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + long lStack_a8; + undefined8 *local_a0; + undefined8 *local_98; + undefined8 local_90; + undefined8 uStack_88; + uint local_80; + undefined1 local_7c; + undefined8 local_70; + undefined8 uStack_68; + int *local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + long lStack_38; + undefined8 *local_30; + undefined8 *local_28; + undefined8 local_20; + undefined8 uStack_18; + uint local_10; + + local_238 = param_6; + local_234 = param_5; + iVar14 = cv::_InputArray::kind(param_4); + if (iVar14 == 0x10000) { + pMVar20 = *(Mat **)(param_4 + 8); + local_100 = &local_138; + local_f8 = &local_f0; + local_140 = *(uint *)pMVar20; + local_13c = *(int *)(pMVar20 + 4); + local_138 = *(int *)(pMVar20 + 8); + local_134 = *(int *)(pMVar20 + 0xc); + local_130 = *(int **)(pMVar20 + 0x10); + uStack_128 = *(undefined8 *)(pMVar20 + 0x18); + local_120 = *(undefined8 *)(pMVar20 + 0x20); + uStack_118 = *(undefined8 *)(pMVar20 + 0x28); + local_110 = *(undefined8 *)(pMVar20 + 0x30); + lStack_108 = *(long *)(pMVar20 + 0x38); + local_e8 = 0; + local_f0 = 0; + if (lStack_108 != 0) { + piVar19 = (int *)(lStack_108 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (2 < *(int *)(pMVar20 + 4)) { + local_13c = 0; + cv::Mat::copySize((Mat *)&local_140,pMVar20); + goto LAB_001cf318; + } + local_f0 = **(undefined8 **)(pMVar20 + 0x48); + local_e8 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + if ((param_3 >> 3 & 0x1ff) + 1 == (param_2 >> 3 & 0x1ff) + 1) goto LAB_001cf89c; +LAB_001cf338: + local_1e0 = 0; + local_1d8 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_1e0,0x59); + memcpy(pvVar16,&DAT_004431a8,0x59); + cv::error(-0xd7,(String *)&local_1e0, + "cv::Ptr cv::getLinearRowFilter(int, int, cv::InputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xe30); + cv::String::deallocate((String *)&local_1e0); + } + else { + cv::_InputArray::getMat_((int)param_4); +LAB_001cf318: + if ((param_3 >> 3 & 0x1ff) + 1 != (param_2 >> 3 & 0x1ff) + 1) goto LAB_001cf338; +LAB_001cf89c: + uVar15 = param_2 & 7; + if (uVar15 < 4) { + uVar15 = 4; + } + if (((param_3 & 7) < uVar15) || ((param_3 & 7) != (local_140 & 0xfff))) goto LAB_001cf338; + } + uVar15 = local_238; + uVar22 = param_3 & 7; + uVar23 = param_2 & 7; + if (((local_238 & 3) == 0) || (6 < local_138 + local_134)) { + if (uVar23 == 0) { + if (uVar22 != 4) goto LAB_001cf530; + puVar17 = operator_new(0x78); + uVar13 = local_234; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3550; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 4) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_1a0 = 0; + local_198 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_1a0,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)",0x4d) + ; + cv::error(-0xd7,(String *)&local_1a0, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = unsigned char; DT = int; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_1a0); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &DAT_004f3fa0; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + else { +LAB_001cf5d4: + if (uVar23 == 2) { + if (uVar22 == 5) { + puVar17 = operator_new(0x78); + uVar13 = local_234; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f35e0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_170 = 0; + local_168 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_170,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_170, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = short unsigned int; DT = float; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_170); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4030; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + else if (uVar22 == 6) { + puVar17 = operator_new(0x78); + uVar13 = local_234; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3610; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_160 = 0; + local_158 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_160,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_160, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = short unsigned int; DT = double; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_160); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4060; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + else { +LAB_001cf5ec: + if ((uVar23 != 6) || (uVar22 != 6)) goto LAB_001cf540; + puVar17 = operator_new(0x78); + uVar13 = local_234; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3700; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_150 = 0; + local_148 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_150,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)", + 0x4d); + cv::error(-0xd7,(String *)&local_150, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = double; DT = double; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_150); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4150; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + else if (uVar23 == 3) { + if (uVar22 == 5) { + FUN_001ceb38(&local_220,(Mat *)&local_140,&local_234,&local_70); + param_1[1] = lStack_218; + *param_1 = local_220; + if (local_220 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_220 + 8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (local_220 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_220 + 8); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + else { + if (uVar22 != 6) goto LAB_001cf540; + FUN_001ced14(&local_210,(Mat *)&local_140,&local_234); + param_1[1] = lStack_208; + *param_1 = local_210; + if (local_210 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_210 + 8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (local_210 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_210 + 8); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + else { + if (uVar23 != 5) goto LAB_001cf5ec; + if (uVar22 != 5) goto LAB_001cf770; + FUN_001ceef0(&local_200,(Mat *)&local_140,&local_234,&local_70); + param_1[1] = lStack_1f8; + *param_1 = local_200; + if (local_200 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_200 + 8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (local_200 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_200 + 8); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + } + else if (uVar23 == 0) { + if (uVar22 == 4) { + local_98 = &local_90; + local_a0 = &uStack_d8; + local_d0 = (int *)0x0; + uStack_88 = 0; + local_90 = 0; + uStack_c8 = 0; + local_c0 = 0; + uStack_b8 = 0; + local_b0 = 0; + uStack_d8 = _UNK_001d0898; + local_e0 = _DAT_001d0890; + lStack_a8 = 0; + if (lStack_108 != 0) { + piVar19 = (int *)(lStack_108 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + cv::Mat::release((Mat *)&local_e0); + local_e0 = CONCAT44(local_e0._4_4_,local_140); + if ((local_e0._4_4_ < 3) && (local_13c < 3)) { + uStack_d8 = (Mat *)CONCAT44(local_134,local_138); + local_e0 = CONCAT44(local_13c,local_140); + *local_98 = *local_f8; + local_98[1] = local_f8[1]; + iVar14 = local_138; + iVar21 = local_134; + } + else { + cv::Mat::copySize((Mat *)&local_e0,(Mat *)&local_140); + iVar14 = (int)uStack_d8; + iVar21 = uStack_d8._4_4_; + } + local_80 = uVar15; + uStack_b8 = uStack_118; + local_c0 = local_120; + local_7c = 1; + lStack_a8 = lStack_108; + local_b0 = local_110; + uStack_c8 = uStack_128; + local_d0 = local_130; + if (1 < iVar21 + iVar14) { + if (*local_130 + 0x8000U < 0x10000) { + piVar19 = local_130; + do { + if (piVar19 == local_130 + ((iVar21 + iVar14) - 2)) goto LAB_001cfa68; + piVar19 = piVar19 + 1; + } while (*piVar19 + 0x8000U < 0x10000); + } + local_7c = 0; + } +LAB_001cfa68: + puVar17 = operator_new(0xe0); + uVar13 = local_234; + uVar15 = local_238; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3490; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + *(undefined4 *)(puVar17 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x74) = 0; + *(undefined4 *)(puVar17 + 0xf) = 0; + *(undefined4 *)((long)puVar17 + 0x7c) = 0; + puVar17[0x10] = 0; + puVar17[0x11] = 0; + puVar17[0x12] = 0; + puVar17[0x13] = 0; + puVar17[0x14] = 0; + puVar17[0x15] = 0; + puVar17[0x16] = puVar17 + 0xf; + puVar17[0x17] = puVar17 + 0x18; + puVar17[0x19] = 0; + puVar17[0x18] = 0; + *(undefined1 *)((long)puVar17 + 0xd4) = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 4) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_1b0 = 0; + local_1a8 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_1b0,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)",0x4d) + ; + cv::error(-0xd7,(String *)&local_1b0, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = unsigned char; DT = int; VecOp = cv::SymmRowSmallVec_8u32s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_1b0); + } + cv::Mat::operator=((Mat *)(puVar17 + 0xe),(Mat *)&local_e0); + *(uint *)(puVar17 + 0x1a) = local_80; + *(undefined1 *)((long)puVar17 + 0xd4) = local_7c; + *(uint *)(puVar17 + 0x1b) = uVar15; + *puVar17 = &PTR_FUN_004f34c0; + if (((uVar15 & 3) == 0) || (5 < *(int *)(puVar17 + 1))) { + local_1c0 = 0; + local_1b8 = 0; + puVar18 = (undefined8 *)cv::String::allocate((String *)&local_1c0,0x54); + uVar12 = DAT_00443198; + uVar11 = DAT_00443190; + uVar10 = DAT_00443188; + uVar9 = DAT_00443180; + uVar8 = DAT_00443178; + uVar7 = DAT_00443170; + uVar6 = DAT_00443168; + uVar5 = DAT_00443160; + uVar4 = _LAB_00443158; + uVar3 = DAT_00443150; + *(undefined4 *)(puVar18 + 10) = DAT_004431a0; + *puVar18 = uVar3; + puVar18[1] = uVar4; + puVar18[2] = uVar5; + puVar18[3] = uVar6; + puVar18[4] = uVar7; + puVar18[5] = uVar8; + puVar18[6] = uVar9; + puVar18[7] = uVar10; + puVar18[8] = uVar11; + puVar18[9] = uVar12; + cv::error(-0xd7,(String *)&local_1c0, + "cv::SymmRowSmallFilter::SymmRowSmallFilter(const cv::Mat&, int, int, const VecOp&) [with ST = unsigned char; DT = int; VecOp = cv::SymmRowSmallVec_8u32s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc43); + cv::String::deallocate((String *)&local_1c0); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f3f40; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + FUN_001c0010(); + } + cv::Mat::release((Mat *)&local_e0); + if (local_98 != &local_90) { + cv::fastFree(local_98); + } + goto LAB_001cf58c; + } +LAB_001cf530: + if (uVar22 == 5) { + puVar17 = operator_new(0x78); + uVar13 = local_234; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3580; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_190 = 0; + local_188 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_190,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)",0x4d) + ; + cv::error(-0xd7,(String *)&local_190, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = unsigned char; DT = float; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_190); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f3fd0; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + else { + if (uVar22 != 6) goto LAB_001cf540; + puVar17 = operator_new(0x78); + uVar13 = local_234; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &DAT_004f35b0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_140 >> 0xe & 1) == 0) { + local_60 = (int *)(CONCAT44(local_140,local_140) & 0x400000004000); + local_70 = CONCAT44(local_70._4_4_,0x2010000); + uStack_68 = (Mat *)(puVar17 + 2); + cv::Mat::copyTo((Mat *)&local_140,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_140); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar13; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_180 = 0; + local_178 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_180,0x4d); + memcpy(pvVar16, + "kernel.type() == DataType
::type && (kernel.rows == 1 || kernel.cols == 1)",0x4d) + ; + cv::error(-0xd7,(String *)&local_180, + "cv::RowFilter::RowFilter(const cv::Mat&, int, const VecOp&) [with ST = unsigned char; DT = double; VecOp = cv::RowNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xc08); + cv::String::deallocate((String *)&local_180); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4000; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + else { + if (uVar23 != 5) goto LAB_001cf5d4; + if (uVar22 == 5) { + local_28 = &local_20; + local_60 = (int *)0x0; + local_30 = &uStack_68; + uStack_18 = 0; + local_20 = 0; + uStack_58 = 0; + local_50 = 0; + uStack_48 = 0; + uStack_68 = _UNK_001d0898; + local_70 = _DAT_001d0890; + local_40 = 0; + lStack_38 = 0; + if (lStack_108 != 0) { + piVar19 = (int *)(lStack_108 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + cv::Mat::release((Mat *)&local_70); + local_70 = CONCAT44(local_70._4_4_,local_140); + if ((local_70._4_4_ < 3) && (local_13c < 3)) { + local_70 = CONCAT44(local_13c,local_140); + uStack_68 = (Mat *)CONCAT44(local_134,local_138); + *local_28 = *local_f8; + local_28[1] = local_f8[1]; + } + else { + cv::Mat::copySize((Mat *)&local_70,(Mat *)&local_140); + } + uStack_48 = uStack_118; + local_50 = local_120; + lStack_38 = lStack_108; + local_40 = local_110; + local_10 = uVar15; + uStack_58 = uStack_128; + local_60 = local_130; + FUN_001ce804(&local_230,(Mat *)&local_140,&local_234,&local_238,(Mat *)&local_70); + param_1[1] = lStack_228; + *param_1 = local_230; + if (local_230 != 0) { + piVar19 = (int *)(local_230 + 8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + piVar19 = (int *)(local_230 + 8); + if (local_230 != 0) { + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + FUN_001c0010(); + } + } + } + cv::Mat::release((Mat *)&local_70); + if (local_28 != &local_20) { + cv::fastFree(local_28); + } + goto LAB_001cf58c; + } +LAB_001cf770: + if (uVar22 != 6) { +LAB_001cf540: + cv::format("Unsupported combination of source format (=%d), and buffer format (=%d)", + aSStack_1d0,(ulong)param_2,(ulong)param_3); + cv::error(-0xd5,aSStack_1d0, + "cv::Ptr cv::getLinearRowFilter(int, int, cv::InputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xe57); + cv::String::deallocate(aSStack_1d0); + *param_1 = 0; + param_1[1] = 0; + goto LAB_001cf58c; + } + FUN_001cf0cc(&local_1f0,(Mat *)&local_140,&local_234); + param_1[1] = lStack_1e8; + *param_1 = local_1f0; + if (local_1f0 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_1f0 + 8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = *piVar19 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (local_1f0 == 0) goto LAB_001cf58c; + piVar19 = (int *)(local_1f0 + 8); + do { + iVar14 = *piVar19; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar2) { + *piVar19 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar14 == 1) { + FUN_001c0010(); + } +LAB_001cf58c: + cv::Mat::release((Mat *)&local_140); + if (local_f8 != &local_f0) { + cv::fastFree(local_f8); + } + return param_1; +} + + +================================================================== + +### FUNC 001d08a0 (432 bytes) name=FUN_001d08a0 + +undefined8 * FUN_001d08a0(undefined8 *param_1,Mat *param_2,undefined4 *param_3,undefined8 *param_4) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + undefined8 *puVar4; + void *__dest; + undefined8 *puVar5; + undefined8 uVar6; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar4 = operator_new(0x80); + uVar2 = *param_3; + uVar6 = *param_4; + *(undefined4 *)((long)puVar4 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar4 + 1) = 0xffffffff; + *puVar4 = &DAT_004f3790; + *(undefined4 *)(puVar4 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 3) = 0; + *(undefined4 *)((long)puVar4 + 0x1c) = 0; + puVar4[4] = 0; + uVar3 = *(uint *)param_2; + puVar4[5] = 0; + puVar4[6] = 0; + uVar1 = uVar3 & 0x4000; + puVar4[7] = 0; + puVar4[8] = 0; + puVar4[9] = 0; + puVar4[10] = puVar4 + 3; + puVar4[0xb] = puVar4 + 0xc; + puVar4[0xd] = 0; + puVar4[0xc] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar4 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar4 + 2),param_2); + } + *(undefined4 *)((long)puVar4 + 0xc) = uVar2; + *(int *)(puVar4 + 1) = *(int *)(puVar4 + 3) + *(int *)((long)puVar4 + 0x1c) + -1; + puVar4[0xf] = uVar6; + if (((*(uint *)(puVar4 + 2) & 0xfff) != 6) || + ((*(int *)(puVar4 + 3) != 1 && (*(int *)((long)puVar4 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + puVar5 = operator_new(0x20); + puVar5[2] = puVar4; + *(undefined4 *)(puVar5 + 1) = 1; + *puVar5 = &PTR_FUN_004f41e0; + *param_1 = puVar5; + param_1[1] = puVar4; + return param_1; +} + + +================================================================== + +### FUNC 001d0a8c (444 bytes) name=FUN_001d0a8c + +undefined8 * FUN_001d0a8c(undefined8 *param_1,Mat *param_2,undefined4 *param_3,double *param_4) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + undefined8 *puVar4; + void *__dest; + undefined8 *puVar5; + double dVar6; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar4 = operator_new(0x78); + uVar2 = *param_3; + dVar6 = *param_4; + *(undefined4 *)((long)puVar4 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar4 + 1) = 0xffffffff; + *puVar4 = &PTR_FUN_004f3820; + *(undefined4 *)(puVar4 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar4 + 0x14) = 0; + *(undefined4 *)(puVar4 + 3) = 0; + *(undefined4 *)((long)puVar4 + 0x1c) = 0; + puVar4[4] = 0; + uVar3 = *(uint *)param_2; + puVar4[5] = 0; + puVar4[6] = 0; + uVar1 = uVar3 & 0x4000; + puVar4[7] = 0; + puVar4[8] = 0; + puVar4[9] = 0; + puVar4[10] = puVar4 + 3; + puVar4[0xb] = puVar4 + 0xc; + puVar4[0xd] = 0; + puVar4[0xc] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar4 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar4 + 2),param_2); + } + *(undefined4 *)((long)puVar4 + 0xc) = uVar2; + *(int *)(puVar4 + 1) = *(int *)(puVar4 + 3) + *(int *)((long)puVar4 + 0x1c) + -1; + *(float *)((long)puVar4 + 0x74) = (float)dVar6; + if (((*(uint *)(puVar4 + 2) & 0xfff) != 5) || + ((*(int *)(puVar4 + 3) != 1 && (*(int *)((long)puVar4 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + puVar5 = operator_new(0x20); + puVar5[2] = puVar4; + *(undefined4 *)(puVar5 + 1) = 1; + *puVar5 = &PTR_FUN_004f4270; + *param_1 = puVar5; + param_1[1] = puVar4; + return param_1; +} + + +================================================================== + +### FUNC 001d0c84 (828 bytes) name=FUN_001d0c84 + +undefined8 * +FUN_001d0c84(undefined8 *param_1,Mat *param_2,undefined4 *param_3,double *param_4,uint *param_5, + undefined8 param_6,undefined4 *param_7) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined4 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 *puVar13; + long lVar14; + void *__dest; + char *pcVar15; + undefined8 *puVar16; + double __x; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar13 = operator_new(0xe8); + uVar2 = *param_3; + __x = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar13 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar13 + 1) = 0xffffffff; + *puVar13 = &PTR_FUN_004f3970; + *(undefined4 *)(puVar13 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar13 + 0x14) = 0; + *(undefined4 *)(puVar13 + 3) = 0; + *(undefined4 *)((long)puVar13 + 0x1c) = 0; + puVar13[4] = 0; + puVar13[5] = 0; + puVar13[6] = 0; + puVar13[7] = 0; + puVar13[8] = 0; + puVar13[9] = 0; + puVar13[10] = puVar13 + 3; + *(undefined4 *)(puVar13 + 0x10) = 0x42ff0000; + puVar13[0xb] = puVar13 + 0xc; + puVar13[0xd] = 0; + puVar13[0xc] = 0; + *(undefined4 *)((long)puVar13 + 0x84) = 0; + *(undefined4 *)(puVar13 + 0x11) = 0; + *(undefined4 *)((long)puVar13 + 0x8c) = 0; + puVar13[0x12] = 0; + puVar13[0x13] = 0; + puVar13[0x14] = 0; + puVar13[0x15] = 0; + puVar13[0x16] = 0; + puVar13[0x17] = 0; + puVar13[0x18] = puVar13 + 0x11; + *(undefined4 *)(puVar13 + 0xf) = 0; + puVar13[0x19] = puVar13 + 0x1a; + uVar4 = *(uint *)param_2; + puVar13[0x1b] = 0; + puVar13[0x1a] = 0; + uVar1 = uVar4 & 0x4000; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar13 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar13 + 2),param_2); + } + *(undefined4 *)((long)puVar13 + 0xc) = uVar2; + *(int *)(puVar13 + 1) = *(int *)(puVar13 + 3) + *(int *)((long)puVar13 + 0x1c) + -1; + lVar14 = lrint(__x); + uVar2 = param_7[1]; + uVar5 = *param_7; + *(int *)(puVar13 + 0x1c) = (int)lVar14; + *(undefined4 *)(puVar13 + 0xf) = uVar5; + *(undefined4 *)((long)puVar13 + 0x7c) = uVar2; + cv::Mat::operator=((Mat *)(puVar13 + 0x10),(Mat *)(param_7 + 2)); + if (((*(uint *)(puVar13 + 2) & 0xfff) != 4) || + ((*(int *)(puVar13 + 3) != 1 && (*(int *)((long)puVar13 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnSmallVec_32s16s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)((long)puVar13 + 0xe4) = uVar3; + *puVar13 = &PTR_FUN_004f39a0; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar12 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar11 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar15 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + *(undefined8 *)(pcVar15 + 0x20) = uVar9; + *(undefined8 *)(pcVar15 + 0x28) = uVar10; + *(undefined8 *)(pcVar15 + 0x30) = uVar11; + *(undefined8 *)(pcVar15 + 0x38) = uVar12; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnSmallVec_32s16s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + *puVar13 = &PTR_FUN_004f39d0; + if (*(int *)(puVar13 + 1) != 3) { + local_38 = 0; + local_30 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_38,0x10); + uVar6 = s_this_>ksize____3_004432e8._8_8_; + *(undefined8 *)pcVar15 = s_this_>ksize____3_004432e8._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar6; + cv::error(-0xd7,(String *)&local_38, + "cv::SymmColumnSmallFilter::SymmColumnSmallFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnSmallVec_32s16s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd77); + cv::String::deallocate((String *)&local_38); + } + puVar16 = operator_new(0x20); + puVar16[2] = puVar13; + *(undefined4 *)(puVar16 + 1) = 1; + *puVar16 = &PTR_FUN_004f4360; + *param_1 = puVar16; + param_1[1] = puVar13; + return param_1; +} + + +================================================================== + +### FUNC 001d1068 (704 bytes) name=FUN_001d1068 + +undefined8 * +FUN_001d1068(undefined8 *param_1,Mat *param_2,undefined4 *param_3,double *param_4,uint *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 *puVar12; + void *__dest; + char *pcVar13; + undefined8 *puVar14; + double dVar15; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar12 = operator_new(0x80); + uVar2 = *param_3; + dVar15 = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar12 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar12 + 1) = 0xffffffff; + *puVar12 = &PTR_FUN_004f3a00; + *(undefined4 *)(puVar12 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar12 + 0x14) = 0; + *(undefined4 *)(puVar12 + 3) = 0; + *(undefined4 *)((long)puVar12 + 0x1c) = 0; + puVar12[4] = 0; + uVar4 = *(uint *)param_2; + puVar12[5] = 0; + puVar12[6] = 0; + uVar1 = uVar4 & 0x4000; + puVar12[7] = 0; + puVar12[8] = 0; + puVar12[9] = 0; + puVar12[10] = puVar12 + 3; + puVar12[0xb] = puVar12 + 0xc; + puVar12[0xd] = 0; + puVar12[0xc] = 0; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar12 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar12 + 2),param_2); + } + *(undefined4 *)((long)puVar12 + 0xc) = uVar2; + *(int *)(puVar12 + 1) = *(int *)(puVar12 + 3) + *(int *)((long)puVar12 + 0x1c) + -1; + *(float *)((long)puVar12 + 0x74) = (float)dVar15; + if (((*(uint *)(puVar12 + 2) & 0xfff) != 5) || + ((*(int *)(puVar12 + 3) != 1 && (*(int *)((long)puVar12 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnSmallNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)(puVar12 + 0xf) = uVar3; + *puVar12 = &PTR_FUN_004f3a30; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar11 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar13 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar5; + *(undefined8 *)(pcVar13 + 0x10) = uVar6; + *(undefined8 *)(pcVar13 + 0x18) = uVar7; + *(undefined8 *)(pcVar13 + 0x20) = uVar8; + *(undefined8 *)(pcVar13 + 0x28) = uVar9; + *(undefined8 *)(pcVar13 + 0x30) = uVar10; + *(undefined8 *)(pcVar13 + 0x38) = uVar11; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnSmallNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + *puVar12 = &PTR_FUN_004f3a60; + if (*(int *)(puVar12 + 1) != 3) { + local_38 = 0; + local_30 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_38,0x10); + uVar5 = s_this_>ksize____3_004432e8._8_8_; + *(undefined8 *)pcVar13 = s_this_>ksize____3_004432e8._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_38, + "cv::SymmColumnSmallFilter::SymmColumnSmallFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnSmallNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd77); + cv::String::deallocate((String *)&local_38); + } + puVar14 = operator_new(0x20); + puVar14[2] = puVar12; + *(undefined4 *)(puVar14 + 1) = 1; + *puVar14 = &PTR_FUN_004f4390; + *param_1 = puVar14; + param_1[1] = puVar12; + return param_1; +} + + +================================================================== + +### FUNC 001d13dc (600 bytes) name=FUN_001d13dc + +undefined8 * +FUN_001d13dc(undefined8 *param_1,Mat *param_2,undefined4 *param_3,double *param_4,uint *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 *puVar12; + void *__dest; + undefined8 *puVar13; + char *pcVar14; + double dVar15; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar12 = operator_new(0x80); + uVar2 = *param_3; + dVar15 = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar12 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar12 + 1) = 0xffffffff; + *puVar12 = &PTR_FUN_004f3760; + *(undefined4 *)(puVar12 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar12 + 0x14) = 0; + *(undefined4 *)(puVar12 + 3) = 0; + *(undefined4 *)((long)puVar12 + 0x1c) = 0; + puVar12[4] = 0; + uVar4 = *(uint *)param_2; + puVar12[5] = 0; + puVar12[6] = 0; + uVar1 = uVar4 & 0x4000; + puVar12[7] = 0; + puVar12[8] = 0; + puVar12[9] = 0; + puVar12[10] = puVar12 + 3; + puVar12[0xb] = puVar12 + 0xc; + puVar12[0xd] = 0; + puVar12[0xc] = 0; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar12 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar12 + 2),param_2); + } + *(undefined4 *)((long)puVar12 + 0xc) = uVar2; + *(int *)(puVar12 + 1) = *(int *)(puVar12 + 3) + *(int *)((long)puVar12 + 0x1c) + -1; + *(float *)((long)puVar12 + 0x74) = (float)dVar15; + if (((*(uint *)(puVar12 + 2) & 0xfff) != 5) || + ((*(int *)(puVar12 + 3) != 1 && (*(int *)((long)puVar12 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)(puVar12 + 0xf) = uVar3; + *puVar12 = &PTR_FUN_004f3a90; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar11 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar14 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar5; + *(undefined8 *)(pcVar14 + 0x10) = uVar6; + *(undefined8 *)(pcVar14 + 0x18) = uVar7; + *(undefined8 *)(pcVar14 + 0x20) = uVar8; + *(undefined8 *)(pcVar14 + 0x28) = uVar9; + *(undefined8 *)(pcVar14 + 0x30) = uVar10; + *(undefined8 *)(pcVar14 + 0x38) = uVar11; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + puVar13 = operator_new(0x20); + puVar13[2] = puVar12; + *(undefined4 *)(puVar13 + 1) = 1; + *puVar13 = &PTR_FUN_004f43f0; + *param_1 = puVar13; + param_1[1] = puVar12; + return param_1; +} + + +================================================================== + +### FUNC 001d16ac (588 bytes) name=FUN_001d16ac + +undefined8 * +FUN_001d16ac(undefined8 *param_1,Mat *param_2,undefined4 *param_3,undefined8 *param_4,uint *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 *puVar11; + void *__dest; + undefined8 *puVar12; + char *pcVar13; + undefined8 uVar14; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar11 = operator_new(0x88); + uVar2 = *param_3; + uVar14 = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar11 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar11 + 1) = 0xffffffff; + *puVar11 = &PTR_FUN_004f37f0; + *(undefined4 *)(puVar11 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar11 + 0x14) = 0; + *(undefined4 *)(puVar11 + 3) = 0; + *(undefined4 *)((long)puVar11 + 0x1c) = 0; + puVar11[4] = 0; + uVar4 = *(uint *)param_2; + puVar11[5] = 0; + puVar11[6] = 0; + uVar1 = uVar4 & 0x4000; + puVar11[7] = 0; + puVar11[8] = 0; + puVar11[9] = 0; + puVar11[10] = puVar11 + 3; + puVar11[0xb] = puVar11 + 0xc; + puVar11[0xd] = 0; + puVar11[0xc] = 0; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar11 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar11 + 2),param_2); + } + *(undefined4 *)((long)puVar11 + 0xc) = uVar2; + *(int *)(puVar11 + 1) = *(int *)(puVar11 + 3) + *(int *)((long)puVar11 + 0x1c) + -1; + puVar11[0xf] = uVar14; + if (((*(uint *)(puVar11 + 2) & 0xfff) != 6) || + ((*(int *)(puVar11 + 3) != 1 && (*(int *)((long)puVar11 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)(puVar11 + 0x10) = uVar3; + *puVar11 = &PTR_FUN_004f3b20; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar14 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar13 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar14; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + *(undefined8 *)(pcVar13 + 0x20) = uVar7; + *(undefined8 *)(pcVar13 + 0x28) = uVar8; + *(undefined8 *)(pcVar13 + 0x30) = uVar9; + *(undefined8 *)(pcVar13 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + puVar12 = operator_new(0x20); + puVar12[2] = puVar11; + *(undefined4 *)(puVar12 + 1) = 1; + *puVar12 = &PTR_FUN_004f4480; + *param_1 = puVar12; + param_1[1] = puVar11; + return param_1; +} + + +================================================================== + +### FUNC 001d1970 (588 bytes) name=FUN_001d1970 + +undefined8 * +FUN_001d1970(undefined8 *param_1,Mat *param_2,undefined4 *param_3,undefined8 *param_4,uint *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 *puVar11; + void *__dest; + undefined8 *puVar12; + char *pcVar13; + undefined8 uVar14; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar11 = operator_new(0x88); + uVar2 = *param_3; + uVar14 = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar11 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar11 + 1) = 0xffffffff; + *puVar11 = &PTR_FUN_004f3850; + *(undefined4 *)(puVar11 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar11 + 0x14) = 0; + *(undefined4 *)(puVar11 + 3) = 0; + *(undefined4 *)((long)puVar11 + 0x1c) = 0; + puVar11[4] = 0; + uVar4 = *(uint *)param_2; + puVar11[5] = 0; + puVar11[6] = 0; + uVar1 = uVar4 & 0x4000; + puVar11[7] = 0; + puVar11[8] = 0; + puVar11[9] = 0; + puVar11[10] = puVar11 + 3; + puVar11[0xb] = puVar11 + 0xc; + puVar11[0xd] = 0; + puVar11[0xc] = 0; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar11 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar11 + 2),param_2); + } + *(undefined4 *)((long)puVar11 + 0xc) = uVar2; + *(int *)(puVar11 + 1) = *(int *)(puVar11 + 3) + *(int *)((long)puVar11 + 0x1c) + -1; + puVar11[0xf] = uVar14; + if (((*(uint *)(puVar11 + 2) & 0xfff) != 6) || + ((*(int *)(puVar11 + 3) != 1 && (*(int *)((long)puVar11 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)(puVar11 + 0x10) = uVar3; + *puVar11 = &PTR_FUN_004f3c10; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar14 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar13 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar14; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + *(undefined8 *)(pcVar13 + 0x20) = uVar7; + *(undefined8 *)(pcVar13 + 0x28) = uVar8; + *(undefined8 *)(pcVar13 + 0x30) = uVar9; + *(undefined8 *)(pcVar13 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + puVar12 = operator_new(0x20); + puVar12[2] = puVar11; + *(undefined4 *)(puVar12 + 1) = 1; + *puVar12 = &PTR_FUN_004f4510; + *param_1 = puVar12; + param_1[1] = puVar11; + return param_1; +} + + +================================================================== + +### FUNC 001d1c34 (600 bytes) name=FUN_001d1c34 + +undefined8 * +FUN_001d1c34(undefined8 *param_1,Mat *param_2,undefined4 *param_3,double *param_4,uint *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 *puVar12; + void *__dest; + undefined8 *puVar13; + char *pcVar14; + double dVar15; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar12 = operator_new(0x80); + uVar2 = *param_3; + dVar15 = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar12 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar12 + 1) = 0xffffffff; + *puVar12 = &PTR_FUN_004f3880; + *(undefined4 *)(puVar12 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar12 + 0x14) = 0; + *(undefined4 *)(puVar12 + 3) = 0; + *(undefined4 *)((long)puVar12 + 0x1c) = 0; + puVar12[4] = 0; + uVar4 = *(uint *)param_2; + puVar12[5] = 0; + puVar12[6] = 0; + uVar1 = uVar4 & 0x4000; + puVar12[7] = 0; + puVar12[8] = 0; + puVar12[9] = 0; + puVar12[10] = puVar12 + 3; + puVar12[0xb] = puVar12 + 0xc; + puVar12[0xd] = 0; + puVar12[0xc] = 0; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar12 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar12 + 2),param_2); + } + *(undefined4 *)((long)puVar12 + 0xc) = uVar2; + *(int *)(puVar12 + 1) = *(int *)(puVar12 + 3) + *(int *)((long)puVar12 + 0x1c) + -1; + *(float *)((long)puVar12 + 0x74) = (float)dVar15; + if (((*(uint *)(puVar12 + 2) & 0xfff) != 5) || + ((*(int *)(puVar12 + 3) != 1 && (*(int *)((long)puVar12 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)(puVar12 + 0xf) = uVar3; + *puVar12 = &PTR_FUN_004f3c40; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar11 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar14 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar5; + *(undefined8 *)(pcVar14 + 0x10) = uVar6; + *(undefined8 *)(pcVar14 + 0x18) = uVar7; + *(undefined8 *)(pcVar14 + 0x20) = uVar8; + *(undefined8 *)(pcVar14 + 0x28) = uVar9; + *(undefined8 *)(pcVar14 + 0x30) = uVar10; + *(undefined8 *)(pcVar14 + 0x38) = uVar11; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + puVar13 = operator_new(0x20); + puVar13[2] = puVar12; + *(undefined4 *)(puVar13 + 1) = 1; + *puVar13 = &PTR_FUN_004f4540; + *param_1 = puVar13; + param_1[1] = puVar12; + return param_1; +} + + +================================================================== + +### FUNC 001d1f04 (588 bytes) name=FUN_001d1f04 + +undefined8 * +FUN_001d1f04(undefined8 *param_1,Mat *param_2,undefined4 *param_3,undefined8 *param_4,uint *param_5) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 *puVar11; + void *__dest; + undefined8 *puVar12; + char *pcVar13; + undefined8 uVar14; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + puVar11 = operator_new(0x88); + uVar2 = *param_3; + uVar14 = *param_4; + uVar3 = *param_5; + *(undefined4 *)((long)puVar11 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar11 + 1) = 0xffffffff; + *puVar11 = &PTR_FUN_004f38b0; + *(undefined4 *)(puVar11 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar11 + 0x14) = 0; + *(undefined4 *)(puVar11 + 3) = 0; + *(undefined4 *)((long)puVar11 + 0x1c) = 0; + puVar11[4] = 0; + uVar4 = *(uint *)param_2; + puVar11[5] = 0; + puVar11[6] = 0; + uVar1 = uVar4 & 0x4000; + puVar11[7] = 0; + puVar11[8] = 0; + puVar11[9] = 0; + puVar11[10] = puVar11 + 3; + puVar11[0xb] = puVar11 + 0xc; + puVar11[0xd] = 0; + puVar11[0xc] = 0; + if ((uVar4 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(puVar11 + 2); + local_8 = uVar1; + local_4 = uVar1; + cv::Mat::copyTo(param_2,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(puVar11 + 2),param_2); + } + *(undefined4 *)((long)puVar11 + 0xc) = uVar2; + *(int *)(puVar11 + 1) = *(int *)(puVar11 + 3) + *(int *)((long)puVar11 + 0x1c) + -1; + puVar11[0xf] = uVar14; + if (((*(uint *)(puVar11 + 2) & 0xfff) != 6) || + ((*(int *)(puVar11 + 3) != 1 && (*(int *)((long)puVar11 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)(puVar11 + 0x10) = uVar3; + *puVar11 = &DAT_004f3c70; + if ((uVar3 & 3) == 0) { + local_28 = 0; + local_20 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_28,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar14 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar13 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar14; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + *(undefined8 *)(pcVar13 + 0x20) = uVar7; + *(undefined8 *)(pcVar13 + 0x28) = uVar8; + *(undefined8 *)(pcVar13 + 0x30) = uVar9; + *(undefined8 *)(pcVar13 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_28, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_28); + } + puVar12 = operator_new(0x20); + puVar12[2] = puVar11; + *(undefined4 *)(puVar12 + 1) = 1; + *puVar12 = &PTR_FUN_004f4570; + *param_1 = puVar12; + param_1[1] = puVar11; + return param_1; +} + + +================================================================== + +### FUNC 001d21c8 (852 bytes) name=FUN_001d21c8 + +void FUN_001d21c8(double param_1,undefined8 *param_2,Mat *param_3,undefined4 param_4,uint param_5, + undefined8 *param_6,undefined4 *param_7) + +{ + Mat *this; + int *piVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + undefined4 uVar5; + int iVar6; + char cVar7; + bool bVar8; + undefined8 uVar9; + undefined8 uVar10; + long lVar11; + void *__dest; + char *pcVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 local_18; + Mat *local_10; + uint local_8; + uint local_4; + + this = (Mat *)(param_2 + 0x10); + *(undefined4 *)((long)param_2 + 0xc) = 0xffffffff; + *(undefined4 *)(param_2 + 1) = 0xffffffff; + *param_2 = &PTR_FUN_004f38e0; + *(undefined4 *)(param_2 + 2) = 0x42ff0000; + *(undefined4 *)((long)param_2 + 0x14) = 0; + *(undefined4 *)(param_2 + 3) = 0; + *(undefined4 *)((long)param_2 + 0x1c) = 0; + param_2[4] = 0; + param_2[5] = 0; + param_2[6] = 0; + param_2[7] = 0; + param_2[8] = 0; + param_2[9] = 0; + param_2[10] = param_2 + 3; + param_2[0xb] = param_2 + 0xc; + param_2[0xd] = 0; + param_2[0xc] = 0; + *(undefined4 *)(param_2 + 0xe) = 0; + *(undefined4 *)((long)param_2 + 0x74) = 0; + *(undefined4 *)(param_2 + 0x10) = 0x42ff0000; + *(undefined4 *)((long)param_2 + 0x84) = 0; + *(undefined4 *)(param_2 + 0x11) = 0; + *(undefined4 *)((long)param_2 + 0x8c) = 0; + param_2[0x12] = 0; + param_2[0x13] = 0; + param_2[0x14] = 0; + param_2[0x15] = 0; + param_2[0x16] = 0; + param_2[0x17] = 0; + *(undefined4 *)(param_2 + 0xf) = 0; + param_2[0x18] = param_2 + 0x11; + uVar3 = *(uint *)param_3; + param_2[0x19] = param_2 + 0x1a; + param_2[0x1b] = 0; + uVar2 = uVar3 & 0x4000; + param_2[0x1a] = 0; + if ((uVar3 >> 0xe & 1) == 0) { + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_10 = (Mat *)(param_2 + 2); + local_8 = uVar2; + local_4 = uVar2; + cv::Mat::copyTo(param_3,(_OutputArray *)&local_18); + } + else { + cv::Mat::operator=((Mat *)(param_2 + 2),param_3); + } + *(undefined4 *)((long)param_2 + 0xc) = param_4; + *(int *)(param_2 + 1) = *(int *)(param_2 + 3) + *(int *)((long)param_2 + 0x1c) + -1; + lVar11 = lrint(param_1); + uVar4 = param_7[1]; + uVar15 = *param_6; + uVar5 = *param_7; + *(int *)(param_2 + 0x1c) = (int)lVar11; + param_2[0xe] = uVar15; + *(undefined4 *)(param_2 + 0xf) = uVar5; + *(undefined4 *)((long)param_2 + 0x7c) = uVar4; + if (this != (Mat *)(param_7 + 2)) { + if (*(long *)(param_7 + 0x10) != 0) { + piVar1 = (int *)(*(long *)(param_7 + 0x10) + 0x14); + do { + cVar7 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar8) { + *piVar1 = *piVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + cv::Mat::release(this); + *(undefined4 *)(param_2 + 0x10) = param_7[2]; + if ((*(int *)((long)param_2 + 0x84) < 3) && (iVar6 = param_7[3], iVar6 < 3)) { + puVar14 = *(undefined8 **)(param_7 + 0x14); + puVar13 = (undefined8 *)param_2[0x19]; + uVar4 = param_7[4]; + *(undefined4 *)((long)param_2 + 0x8c) = param_7[5]; + *(int *)((long)param_2 + 0x84) = iVar6; + *(undefined4 *)(param_2 + 0x11) = uVar4; + *puVar13 = *puVar14; + puVar13[1] = puVar14[1]; + } + else { + cv::Mat::copySize(this,(Mat *)(param_7 + 2)); + } + uVar19 = *(undefined8 *)(param_7 + 6); + uVar18 = *(undefined8 *)(param_7 + 0xc); + uVar17 = *(undefined8 *)(param_7 + 10); + uVar16 = *(undefined8 *)(param_7 + 0x10); + uVar15 = *(undefined8 *)(param_7 + 0xe); + param_2[0x13] = *(undefined8 *)(param_7 + 8); + param_2[0x12] = uVar19; + param_2[0x15] = uVar18; + param_2[0x14] = uVar17; + param_2[0x17] = uVar16; + param_2[0x16] = uVar15; + } + if (((*(uint *)(param_2 + 2) & 0xfff) != 4) || + ((*(int *)(param_2 + 3) != 1 && (*(int *)((long)param_2 + 0x1c) != 1)))) { + local_18 = 0; + local_10 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x4d); + memcpy(__dest,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_18, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::FixedPtCastEx; VecOp = cv::SymmColumnVec_32s8u]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_18); + } + *(uint *)((long)param_2 + 0xe4) = param_5; + *param_2 = &DAT_004f3910; + if ((param_5 & 3) == 0) { + local_18 = 0; + local_10 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_18,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar18 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar17 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar16 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar15 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar12 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar12 + 8) = uVar15; + *(undefined8 *)(pcVar12 + 0x10) = uVar16; + *(undefined8 *)(pcVar12 + 0x18) = uVar17; + *(undefined8 *)(pcVar12 + 0x20) = uVar18; + *(undefined8 *)(pcVar12 + 0x28) = uVar19; + *(undefined8 *)(pcVar12 + 0x30) = uVar9; + *(undefined8 *)(pcVar12 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_18, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::FixedPtCastEx; VecOp = cv::SymmColumnVec_32s8u]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_18); + return; + } + return; +} + + +================================================================== + +### FUNC 001d258c (8840 bytes) name=FUN_001d258c + +long * FUN_001d258c(long *param_1,double param_2,uint param_3,uint param_4,_InputArray *param_5, + undefined4 param_6,uint param_7,uint param_8) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + double dVar11; + undefined4 uVar12; + int iVar13; + uint uVar14; + void *pvVar15; + long lVar16; + undefined8 *puVar17; + undefined8 *puVar18; + char *pcVar19; + Mat *pMVar20; + uint uVar21; + uint uVar22; + double dVar23; + double local_410; + uint local_408; + undefined4 local_404; + long local_400; + long lStack_3f8; + long local_3f0; + long lStack_3e8; + long local_3e0; + long lStack_3d8; + long local_3d0; + long lStack_3c8; + long local_3c0; + long lStack_3b8; + long local_3b0; + long lStack_3a8; + long local_3a0; + long lStack_398; + long local_390; + long lStack_388; + long local_380; + long lStack_378; + undefined8 local_370; + undefined8 local_368; + String aSStack_360 [16]; + undefined8 local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + undefined8 local_328; + undefined8 local_320; + undefined8 local_318; + undefined8 local_310; + undefined8 local_308; + undefined8 local_300; + undefined8 local_2f8; + undefined8 local_2f0; + undefined8 local_2e8; + undefined8 local_2e0; + undefined8 local_2d8; + undefined8 local_2d0; + undefined8 local_2c8; + undefined8 local_2c0; + undefined8 local_2b8; + undefined8 local_2b0; + undefined8 local_2a8; + undefined8 local_2a0; + undefined8 local_298; + undefined8 local_290; + undefined8 local_288; + undefined8 local_280; + undefined8 local_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + undefined8 local_240; + undefined8 local_238; + undefined8 local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + uint local_210; + int local_20c; + uint local_208; + uint local_204; + undefined8 local_200; + undefined8 uStack_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + long lStack_1d8; + uint *local_1d0; + undefined8 *local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + uint local_1a8; + float local_1a4; + undefined4 local_1a0; + undefined4 local_19c; + undefined4 local_198; + undefined4 local_194; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 local_168; + undefined4 *local_160; + undefined8 *local_158; + undefined8 local_150; + undefined8 local_148; + uint local_140; + float local_13c; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + undefined4 local_12c; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined4 *local_f8; + undefined8 *local_f0; + undefined8 local_e8; + undefined8 local_e0; + uint local_d8; + float local_d4; + Mat *local_d0; + uint local_c8; + uint local_c4; + undefined8 local_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + uint *local_90; + undefined8 *local_88; + undefined8 local_80; + undefined8 local_78; + uint local_70; + float local_6c; + undefined8 local_68; + uint local_60; + uint local_5c; + undefined8 local_58; + undefined8 uStack_50; + undefined8 local_48; + undefined8 uStack_40; + undefined8 local_38; + long lStack_30; + uint *local_28; + undefined8 *local_20; + undefined8 local_18; + undefined8 local_10; + undefined1 local_8; + + local_410 = param_2; + local_408 = param_7; + local_404 = param_6; + iVar13 = cv::_InputArray::kind(param_5); + if (iVar13 == 0x10000) { + pMVar20 = *(Mat **)(param_5 + 8); + local_1d0 = &local_208; + local_1c8 = &local_1c0; + local_210 = *(uint *)pMVar20; + local_20c = *(int *)(pMVar20 + 4); + local_208 = *(uint *)(pMVar20 + 8); + local_204 = *(uint *)(pMVar20 + 0xc); + local_200 = *(undefined8 *)(pMVar20 + 0x10); + uStack_1f8 = *(undefined8 *)(pMVar20 + 0x18); + local_1f0 = *(undefined8 *)(pMVar20 + 0x20); + uStack_1e8 = *(undefined8 *)(pMVar20 + 0x28); + local_1e0 = *(undefined8 *)(pMVar20 + 0x30); + lStack_1d8 = *(long *)(pMVar20 + 0x38); + local_1b8 = 0; + local_1c0 = 0; + if (lStack_1d8 != 0) { + piVar1 = (int *)(lStack_1d8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(pMVar20 + 4)) { + local_20c = 0; + cv::Mat::copySize((Mat *)&local_210,pMVar20); + goto LAB_001d2604; + } + local_1c0 = **(undefined8 **)(pMVar20 + 0x48); + local_1b8 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + if ((param_3 >> 3 & 0x1ff) + 1 == (param_4 >> 3 & 0x1ff) + 1) goto LAB_001d2c94; +LAB_001d2624: + local_370 = 0; + local_368 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_370,0x59); + memcpy(pvVar15,&DAT_00443300,0x59); + cv::error(-0xd7,(String *)&local_370, + "cv::Ptr cv::getLinearColumnFilter(int, int, cv::InputArray, int, int, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xe67); + cv::String::deallocate((String *)&local_370); + } + else { + cv::_InputArray::getMat_((int)param_5); +LAB_001d2604: + if ((param_3 >> 3 & 0x1ff) + 1 != (param_4 >> 3 & 0x1ff) + 1) goto LAB_001d2624; +LAB_001d2c94: + uVar14 = param_4 & 7; + if (uVar14 < 4) { + uVar14 = 4; + } + if (((param_3 & 7) < uVar14) || ((param_3 & 7) != (local_210 & 0xfff))) goto LAB_001d2624; + } + dVar11 = local_410; + uVar22 = param_4 & 7; + uVar21 = param_3 & 7; + uVar14 = local_408 & 3; + if ((local_408 & 3) == 0) { + if (uVar22 == 0) { + if (uVar21 == 4) { + if (param_8 != 0) { + uVar14 = 1 << (ulong)(param_8 - 1 & 0x1f); + } + puVar17 = operator_new(0x80); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3730; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + *(undefined4 *)(puVar17 + 0xe) = 0; + *(undefined4 *)((long)puVar17 + 0x74) = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + lVar16 = lrint(dVar11); + *(int *)((long)puVar17 + 0x7c) = (int)lVar16; + *(uint *)(puVar17 + 0xe) = param_8; + *(uint *)((long)puVar17 + 0x74) = uVar14; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 4) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_350 = 0; + local_348 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_350,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_350, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::FixedPtCastEx; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_350); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4180; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else if (uVar21 == 5) { + puVar17 = operator_new(0x78); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3760; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + *(float *)((long)puVar17 + 0x74) = (float)dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_340 = 0; + local_338 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_340,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_340, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_340); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &DAT_004f41b0; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if (uVar21 != 6) goto LAB_001d269c; + FUN_001d08a0(&local_400,(Mat *)&local_210,&local_404,&local_410); + param_1[1] = lStack_3f8; + *param_1 = local_400; + if (local_400 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_400 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_400 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_400 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else if (uVar22 == 2) { + if (uVar21 == 5) { + puVar17 = operator_new(0x78); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f37c0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + *(float *)((long)puVar17 + 0x74) = (float)dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_330 = 0; + local_328 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_330,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_330, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_330); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4210; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if (uVar21 != 6) goto LAB_001d269c; + puVar17 = operator_new(0x80); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f37f0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + puVar17[0xf] = dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_320 = 0; + local_318 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_320,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_320, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_320); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4240; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else if (uVar22 == 3) { + if (uVar21 == 5) { + FUN_001d0a8c(&local_3f0,(Mat *)&local_210,&local_404,&local_410); + param_1[1] = lStack_3e8; + *param_1 = local_3f0; + if (local_3f0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3f0 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_3f0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3f0 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if (uVar21 != 6) goto LAB_001d269c; + puVar17 = operator_new(0x80); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3850; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + puVar17[0xf] = dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_310 = 0; + local_308 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_310,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_310, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_310); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f42a0; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else if (uVar22 == 5) { + if (uVar21 != 5) goto LAB_001d269c; + puVar17 = operator_new(0x78); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3880; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + *(float *)((long)puVar17 + 0x74) = (float)dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_300 = 0; + local_2f8 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_300,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_300, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_300); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f42d0; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if ((uVar21 != 6) || (uVar22 != 6)) goto LAB_001d269c; + puVar17 = operator_new(0x80); + uVar12 = local_404; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f38b0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + puVar17[0xf] = dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_2f0 = 0; + local_2e8 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_2f0,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_2f0, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_2f0); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4300; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else if (local_208 + local_204 == 4) { + if (uVar22 == 0) { + if (uVar21 == 4) { + local_d4 = 0.0; + if (param_8 != 0) { + local_d4 = (float)(1 << (ulong)(param_8 - 1 & 0x1f)); + } + local_160 = &local_198; + local_68 = (Mat *)&local_1a0; + local_1a8 = local_408; + dVar23 = (double)(1 << (ulong)(param_8 & 0x1f)); + local_158 = &local_150; + local_1a0 = 0x42ff0000; + local_19c = 0; + local_198 = 0; + local_194 = 0; + local_190 = 0; + local_188 = 0; + local_180 = 0; + local_178 = 0; + local_170 = 0; + local_168 = 0; + local_148 = 0; + local_150 = 0; + local_60 = 0; + local_5c = 0; + local_70 = 0x2010000; + local_d8 = param_8; + cv::Mat::convertTo((Mat *)&local_210,(_OutputArray *)&local_70,5,1.0 / dVar23,0.0); + local_1a4 = (float)(dVar11 / dVar23); + if ((local_1a8 & 3) == 0) { + local_2e0 = 0; + local_2d8 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_2e0,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_2e0, + "cv::SymmColumnVec_32s8u::SymmColumnVec_32s8u(const cv::Mat&, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x998); + cv::String::deallocate((String *)&local_2e0); + } + puVar17 = operator_new(0xe8); + FUN_001d21c8(local_410,puVar17,(Mat *)&local_210,local_404,local_408,&local_d8,&local_1a8); + *puVar17 = &PTR_FUN_004f3940; + if (*(int *)(puVar17 + 1) != 3) { + local_2d0 = 0; + local_2c8 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_2d0,0x10); + uVar4 = s_this_>ksize____3_004432e8._8_8_; + *(undefined8 *)pcVar19 = s_this_>ksize____3_004432e8._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_2d0, + "cv::SymmColumnSmallFilter::SymmColumnSmallFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::FixedPtCastEx; VecOp = cv::SymmColumnVec_32s8u]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd77); + cv::String::deallocate((String *)&local_2d0); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4330; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + FUN_001c0010(); + } + cv::Mat::release((Mat *)&local_1a0); + if (local_158 != &local_150) { + cv::fastFree(local_158); + } + goto LAB_001d26e8; + } + goto LAB_001d2750; + } + if (uVar22 == 3) { + if ((uVar21 == 4) && (param_8 == 0)) { + local_134 = 0; + local_130 = 0; + local_138 = 0x42ff0000; + local_f8 = &local_130; + local_12c = 0; + local_f0 = &local_e8; + local_128 = 0; + local_120 = 0; + local_118 = 0; + local_110 = 0; + local_108 = 0; + local_100 = 0; + local_e0 = 0; + local_e8 = 0; + local_68 = (Mat *)&local_138; + local_140 = local_408; + local_60 = 0; + local_5c = 0; + local_70 = 0x2010000; + cv::Mat::convertTo((Mat *)&local_210,(_OutputArray *)&local_70,5,1.0,0.0); + local_13c = (float)dVar11; + if ((local_140 & 3) == 0) { + local_2c0 = 0; + local_2b8 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_2c0,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_2c0, + "cv::SymmColumnSmallVec_32s16s::SymmColumnSmallVec_32s16s(const cv::Mat&, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xa30); + cv::String::deallocate((String *)&local_2c0); + } + FUN_001d0c84(&local_3e0,(Mat *)&local_210,&local_404,&local_410,&local_408, + (_OutputArray *)&local_70,&local_140); + param_1[1] = lStack_3d8; + *param_1 = local_3e0; + if (local_3e0 != 0) { + piVar1 = (int *)(local_3e0 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + piVar1 = (int *)(local_3e0 + 8); + if (local_3e0 != 0) { + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + FUN_001c0010(); + } + } + } + cv::Mat::release((Mat *)&local_138); + if (local_f0 != &local_e8) { + cv::fastFree(local_f0); + } + goto LAB_001d26e8; + } +LAB_001d3554: + if (uVar21 == 4) { + puVar17 = operator_new(0x80); + uVar12 = local_404; + uVar14 = local_408; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3b50; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + lVar16 = lrint(dVar11); + *(int *)((long)puVar17 + 0x74) = (int)lVar16; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 4) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_250 = 0; + local_248 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_250,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_250, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_250); + } + *(uint *)(puVar17 + 0xf) = uVar14; + *puVar17 = &PTR_FUN_004f3b80; + if ((uVar14 & 3) == 0) { + local_260 = 0; + local_258 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_260,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_260, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_260); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f44b0; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if (uVar21 == 5) { + local_28 = &local_60; + local_20 = &local_18; + local_68._4_4_ = 0; + local_68._0_4_ = 0x42ff0000; + local_60 = 0; + local_5c = 0; + local_58 = 0; + uStack_50 = 0; + local_48 = 0; + uStack_40 = 0; + local_38 = 0; + lStack_30 = 0; + local_10 = 0; + local_18 = 0; + local_70 = local_408; + if (lStack_1d8 != 0) { + piVar1 = (int *)(lStack_1d8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + cv::Mat::release((Mat *)&local_68); + local_68 = (Mat *)CONCAT44(local_68._4_4_,local_210); + if ((local_68._4_4_ < 3) && (local_20c < 3)) { + local_68 = (Mat *)CONCAT44(local_20c,local_210); + local_60 = local_208; + local_5c = local_204; + *local_20 = *local_1c8; + local_20[1] = local_1c8[1]; + } + else { + cv::Mat::copySize((Mat *)&local_68,(Mat *)&local_210); + } + local_6c = (float)dVar11; + uStack_50 = uStack_1f8; + local_58 = local_200; + uStack_40 = uStack_1e8; + local_48 = local_1f0; + lStack_30 = lStack_1d8; + local_38 = local_1e0; + if ((local_70 & 3) == 0) { + local_240 = 0; + local_238 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_240,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_240, + "cv::SymmColumnVec_32f16s::SymmColumnVec_32f16s(const cv::Mat&, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xae3); + cv::String::deallocate((String *)&local_240); + } + local_8 = cv::checkHardwareSupport(100); + puVar17 = operator_new(0xf0); + uVar12 = local_404; + uVar14 = local_408; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f3bb0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + *(undefined4 *)(puVar17 + 0x10) = 0x42ff0000; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + *(undefined4 *)((long)puVar17 + 0x84) = 0; + *(undefined4 *)(puVar17 + 0x11) = 0; + *(undefined4 *)((long)puVar17 + 0x8c) = 0; + puVar17[0x12] = 0; + puVar17[0x13] = 0; + puVar17[0x14] = 0; + puVar17[0x15] = 0; + puVar17[0x16] = 0; + puVar17[0x17] = 0; + puVar17[0x18] = puVar17 + 0x11; + puVar17[0x19] = puVar17 + 0x1a; + puVar17[0x1b] = 0; + puVar17[0x1a] = 0; + *(undefined4 *)(puVar17 + 0xf) = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_d8 = 0x2010000; + local_d0 = (Mat *)(puVar17 + 2); + local_c8 = local_210 & 0x4000; + local_c4 = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_d8); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + *(float *)(puVar17 + 0x1d) = (float)dVar11; + *(uint *)(puVar17 + 0xf) = local_70; + *(float *)((long)puVar17 + 0x7c) = local_6c; + cv::Mat::operator=((Mat *)(puVar17 + 0x10),(Mat *)&local_68); + *(undefined1 *)(puVar17 + 0x1c) = local_8; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_220 = 0; + local_218 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_220,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_220, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnVec_32f16s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_220); + } + *(uint *)((long)puVar17 + 0xec) = uVar14; + *puVar17 = &PTR_FUN_004f3be0; + if ((uVar14 & 3) == 0) { + local_230 = 0; + local_228 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_230,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_230, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::SymmColumnVec_32f16s]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_230); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f44e0; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + FUN_001c0010(); + } + cv::Mat::release((Mat *)&local_68); + if (local_20 != &local_18) { + cv::fastFree(local_20); + } + goto LAB_001d26e8; + } + if (uVar21 != 6) goto LAB_001d269c; + FUN_001d1970(&local_3a0,(Mat *)&local_210,&local_404,&local_410,&local_408); + param_1[1] = lStack_398; + *param_1 = local_3a0; + if (local_3a0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3a0 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_3a0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3a0 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else { + if (uVar22 != 5) { + if (uVar22 != 2) goto LAB_001d34d0; + goto LAB_001d3450; + } + if (uVar21 != 5) goto LAB_001d269c; + FUN_001d1068(&local_3d0,(Mat *)&local_210,&local_404,&local_410,&local_408,&local_d8,&local_70 + ); + param_1[1] = lStack_3c8; + *param_1 = local_3d0; + if (local_3d0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3d0 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_3d0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3d0 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else if (uVar22 == 0) { + if (uVar21 == 4) { + local_13c = 0.0; + if (param_8 != 0) { + local_13c = (float)(1 << (ulong)(param_8 - 1 & 0x1f)); + } + local_90 = &local_c8; + local_88 = &local_80; + local_68 = (Mat *)&local_d0; + local_d8 = local_408; + dVar23 = (double)(1 << (ulong)(param_8 & 0x1f)); + local_d0 = (Mat *)0x42ff0000; + local_c8 = 0; + local_c4 = 0; + local_c0 = 0; + local_b8 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_78 = 0; + local_80 = 0; + local_60 = 0; + local_5c = 0; + local_70 = 0x2010000; + local_140 = param_8; + cv::Mat::convertTo((Mat *)&local_210,(_OutputArray *)&local_70,5,1.0 / dVar23,0.0); + local_d4 = (float)(dVar11 / dVar23); + if ((local_d8 & 3) == 0) { + local_2b0 = 0; + local_2a8 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_2b0,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_2b0, + "cv::SymmColumnVec_32s8u::SymmColumnVec_32s8u(const cv::Mat&, int, int, double)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x998); + cv::String::deallocate((String *)&local_2b0); + } + pvVar15 = operator_new(0xe8); + FUN_001d21c8(local_410,pvVar15,(Mat *)&local_210,local_404,local_408,&local_140,&local_d8); + puVar17 = operator_new(0x20); + *(undefined4 *)(puVar17 + 1) = 1; + puVar17[2] = pvVar15; + *puVar17 = &PTR_FUN_004f43c0; + piVar1 = (int *)(puVar17 + 1); + *param_1 = (long)puVar17; + param_1[1] = (long)pvVar15; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + FUN_001c0010(); + } + cv::Mat::release((Mat *)&local_d0); + if (local_88 != &local_80) { + cv::fastFree(local_88); + } + goto LAB_001d26e8; + } +LAB_001d2750: + if (uVar21 == 5) { + FUN_001d13dc(&local_3c0,(Mat *)&local_210,&local_404,&local_410,&local_408); + param_1[1] = lStack_3b8; + *param_1 = local_3c0; + if (local_3c0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3c0 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_3c0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3c0 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if (uVar21 != 6) { +LAB_001d269c: + cv::format("Unsupported combination of buffer format (=%d), and destination format (=%d)", + aSStack_360,(ulong)param_3,(ulong)param_4); + cv::error(-0xd5,aSStack_360, + "cv::Ptr cv::getLinearColumnFilter(int, int, cv::InputArray, int, int, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xeb8); + cv::String::deallocate(aSStack_360); + *param_1 = 0; + param_1[1] = 0; + goto LAB_001d26e8; + } + puVar17 = operator_new(0x88); + uVar12 = local_404; + uVar14 = local_408; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &DAT_004f3790; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + puVar17[0xf] = dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 6) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_290 = 0; + local_288 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_290,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_290, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_290); + } + *(uint *)(puVar17 + 0x10) = uVar14; + *puVar17 = &PTR_FUN_004f3ac0; + if ((uVar14 & 3) == 0) { + local_2a0 = 0; + local_298 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_2a0,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_2a0, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_2a0); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4420; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else if (uVar22 == 2) { +LAB_001d3450: + if (uVar21 == 5) { + puVar17 = operator_new(0x80); + uVar12 = local_404; + uVar14 = local_408; + dVar11 = local_410; + *(undefined4 *)((long)puVar17 + 0xc) = 0xffffffff; + *(undefined4 *)(puVar17 + 1) = 0xffffffff; + *puVar17 = &PTR_FUN_004f37c0; + *(undefined4 *)(puVar17 + 2) = 0x42ff0000; + *(undefined4 *)((long)puVar17 + 0x14) = 0; + *(undefined4 *)(puVar17 + 3) = 0; + *(undefined4 *)((long)puVar17 + 0x1c) = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + puVar17[9] = 0; + puVar17[10] = puVar17 + 3; + puVar17[0xb] = puVar17 + 0xc; + puVar17[0xd] = 0; + puVar17[0xc] = 0; + if ((local_210 >> 0xe & 1) == 0) { + local_70 = 0x2010000; + local_68 = (Mat *)(puVar17 + 2); + local_60 = local_210 & 0x4000; + local_5c = local_210 & 0x4000; + cv::Mat::copyTo((Mat *)&local_210,(_OutputArray *)&local_70); + } + else { + cv::Mat::operator=((Mat *)(puVar17 + 2),(Mat *)&local_210); + } + *(undefined4 *)((long)puVar17 + 0xc) = uVar12; + *(int *)(puVar17 + 1) = *(int *)(puVar17 + 3) + *(int *)((long)puVar17 + 0x1c) + -1; + *(float *)((long)puVar17 + 0x74) = (float)dVar11; + if (((*(uint *)(puVar17 + 2) & 0xfff) != 5) || + ((*(int *)(puVar17 + 3) != 1 && (*(int *)((long)puVar17 + 0x1c) != 1)))) { + local_270 = 0; + local_268 = 0; + pvVar15 = (void *)cv::String::allocate((String *)&local_270,0x4d); + memcpy(pvVar15,&DAT_00443250,0x4d); + cv::error(-0xd7,(String *)&local_270, + "cv::ColumnFilter::ColumnFilter(const cv::Mat&, int, double, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xcce); + cv::String::deallocate((String *)&local_270); + } + *(uint *)(puVar17 + 0xf) = uVar14; + *puVar17 = &PTR_FUN_004f3af0; + if ((uVar14 & 3) == 0) { + local_280 = 0; + local_278 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_280,0x40); + uVar10 = s__symmetryType____KERNEL_SYMMETRI_004432a0._56_8_; + uVar9 = s__symmetryType____KERNEL_SYMMETRI_004432a0._48_8_; + uVar8 = s__symmetryType____KERNEL_SYMMETRI_004432a0._40_8_; + uVar7 = s__symmetryType____KERNEL_SYMMETRI_004432a0._32_8_; + uVar6 = s__symmetryType____KERNEL_SYMMETRI_004432a0._24_8_; + uVar5 = s__symmetryType____KERNEL_SYMMETRI_004432a0._16_8_; + uVar4 = s__symmetryType____KERNEL_SYMMETRI_004432a0._8_8_; + *(undefined8 *)pcVar19 = s__symmetryType____KERNEL_SYMMETRI_004432a0._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_280, + "cv::SymmColumnFilter::SymmColumnFilter(const cv::Mat&, int, double, int, const CastOp&, const VecOp&) [with CastOp = cv::Cast; VecOp = cv::ColumnNoVec]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xd0d); + cv::String::deallocate((String *)&local_280); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4450; + piVar1 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { + if (uVar21 != 6) goto LAB_001d269c; + FUN_001d16ac(&local_3b0,(Mat *)&local_210,&local_404,&local_410,&local_408); + param_1[1] = lStack_3a8; + *param_1 = local_3b0; + if (local_3b0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3b0 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_3b0 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_3b0 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + else { + if (uVar22 == 3) goto LAB_001d3554; + if (uVar22 == 5) { + if (uVar21 != 5) goto LAB_001d269c; + FUN_001d1c34(&local_390,(Mat *)&local_210,&local_404,&local_410,&local_408,&local_d8,&local_70 + ); + param_1[1] = lStack_388; + *param_1 = local_390; + if (local_390 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_390 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_390 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_390 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + else { +LAB_001d34d0: + if ((uVar21 != 6) || (uVar22 != 6)) goto LAB_001d269c; + FUN_001d1f04(&local_380,(Mat *)&local_210,&local_404,&local_410,&local_408); + param_1[1] = lStack_378; + *param_1 = local_380; + if (local_380 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_380 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (local_380 == 0) goto LAB_001d26e8; + piVar1 = (int *)(local_380 + 8); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + if (iVar13 == 1) { + FUN_001c0010(); + } +LAB_001d26e8: + cv::Mat::release((Mat *)&local_210); + if (local_1c8 != &local_1c0) { + cv::fastFree(local_1c8); + } + return param_1; +} + + +================================================================== + +### FUNC 001d4d10 (1616 bytes) name=_M_fill_insert + +/* std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, int const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,undefined4 *param_2,ulong param_3, + undefined4 *param_4) + +{ + undefined4 uVar1; + ulong uVar2; + ulong uVar3; + undefined8 *puVar4; + undefined4 *puVar5; + void *__dest; + void *pvVar6; + ulong uVar7; + ulong uVar8; + undefined4 *puVar9; + ulong uVar10; + undefined4 *puVar11; + size_t sVar12; + size_t __n; + + if (param_3 == 0) { + return; + } + puVar11 = *(undefined4 **)(this + 8); + if (param_3 <= (ulong)(*(long *)(this + 0x10) - (long)puVar11 >> 2)) { + sVar12 = (long)puVar11 - (long)param_2; + uVar1 = *param_4; + uVar2 = (long)sVar12 >> 2; + if (param_3 < uVar2) { + puVar9 = puVar11 + -param_3; + puVar5 = puVar11; + if ((long)puVar11 - (long)puVar9 >> 2 != 0) { + memmove(puVar11,puVar9,(long)puVar11 - (long)puVar9); + puVar5 = *(undefined4 **)(this + 8); + } + sVar12 = (long)puVar9 - (long)param_2; + *(undefined4 **)(this + 8) = puVar5 + param_3; + if ((long)sVar12 >> 2 != 0) { + memmove((void *)((long)puVar11 - sVar12),param_2,sVar12); + } + puVar11 = param_2 + param_3; + if (param_2 == puVar11) { + return; + } + puVar5 = param_2 + 1; + uVar7 = (ulong)((long)puVar11 - (long)puVar5) >> 2; + uVar3 = -((ulong)param_2 >> 2 & 3) & 3; + uVar2 = uVar7 + 1; + uVar8 = uVar2; + if (uVar3 < uVar2) { + uVar8 = uVar3; + } + uVar3 = uVar2; + if ((uVar2 < 7) || (uVar3 = uVar8, puVar9 = param_2, uVar8 != 0)) { + *param_2 = uVar1; + if (uVar3 != 1) { + param_2[1] = uVar1; + puVar5 = param_2 + 2; + if (uVar3 != 2) { + param_2[2] = uVar1; + puVar5 = param_2 + 3; + if (uVar3 != 3) { + param_2[3] = uVar1; + puVar5 = param_2 + 4; + if (uVar3 != 4) { + param_2[4] = uVar1; + puVar5 = param_2 + 5; + if (uVar3 == 6) { + param_2[5] = uVar1; + puVar5 = param_2 + 6; + } + } + } + } + } + uVar8 = uVar3; + puVar9 = puVar5; + if (uVar2 == uVar3) { + return; + } + } + uVar3 = ((uVar2 - uVar8) - 4 >> 2) + 1; + if (2 < uVar7 - uVar8) { + uVar7 = 0; + puVar4 = (undefined8 *)(param_2 + uVar8); + do { + puVar4[1] = CONCAT44(uVar1,uVar1); + *puVar4 = CONCAT44(uVar1,uVar1); + uVar7 = uVar7 + 1; + puVar4 = puVar4 + 2; + } while (uVar7 < uVar3); + puVar9 = puVar9 + uVar3 * 4; + if (uVar3 * 4 - (uVar2 - uVar8) == 0) { + return; + } + } + *puVar9 = uVar1; + if (puVar11 == puVar9 + 1) { + return; + } + puVar9[1] = uVar1; + if (puVar11 == puVar9 + 2) { + return; + } + puVar9[2] = uVar1; + return; + } + param_3 = param_3 - uVar2; + if (param_3 != 0) { + uVar8 = -((ulong)puVar11 >> 2 & 3) & 3; + if (param_3 < uVar8) { + uVar8 = param_3; + } + uVar3 = param_3; + if ((param_3 < 7) || (puVar5 = puVar11, uVar7 = param_3, uVar3 = uVar8, uVar8 != 0)) { + uVar7 = param_3 - 1; + puVar5 = puVar11 + 1; + *puVar11 = uVar1; + if (uVar3 != 1) { + puVar11[1] = uVar1; + uVar7 = param_3 - 2; + puVar5 = puVar11 + 2; + if (uVar3 != 2) { + puVar11[2] = uVar1; + uVar7 = param_3 - 3; + puVar5 = puVar11 + 3; + if (uVar3 != 3) { + puVar11[3] = uVar1; + uVar7 = param_3 - 4; + puVar5 = puVar11 + 4; + if (uVar3 != 4) { + puVar11[4] = uVar1; + uVar7 = param_3 - 5; + puVar5 = puVar11 + 5; + if (uVar3 == 6) { + puVar11[5] = uVar1; + uVar7 = param_3 - 6; + puVar5 = puVar11 + 6; + } + } + } + } + } + uVar8 = uVar3; + if (param_3 == uVar3) goto LAB_001d4fbc; + } + uVar3 = ((param_3 - uVar8) - 4 >> 2) + 1; + if (2 < (param_3 - 1) - uVar8) { + uVar10 = 0; + puVar4 = (undefined8 *)(puVar11 + uVar8); + do { + puVar4[1] = CONCAT44(uVar1,uVar1); + *puVar4 = CONCAT44(uVar1,uVar1); + uVar10 = uVar10 + 1; + puVar4 = puVar4 + 2; + } while (uVar10 < uVar3); + puVar5 = puVar5 + uVar3 * 4; + uVar7 = uVar7 + uVar3 * -4; + if (param_3 - uVar8 == uVar3 * 4) goto LAB_001d4fbc; + } + *puVar5 = uVar1; + if ((uVar7 != 1) && (puVar5[1] = uVar1, uVar7 != 2)) { + puVar5[2] = uVar1; + } + } +LAB_001d4fbc: + puVar5 = puVar11 + param_3; + *(undefined4 **)(this + 8) = puVar5; + if (uVar2 != 0) { + memmove(puVar5,param_2,sVar12); + puVar5 = *(undefined4 **)(this + 8); + } + *(size_t *)(this + 8) = (long)puVar5 + sVar12; + if (puVar11 != param_2) { + puVar5 = param_2 + 1; + uVar3 = (ulong)((long)puVar11 - (long)puVar5) >> 2; + uVar8 = -((ulong)param_2 >> 2 & 3) & 3; + uVar2 = uVar3 + 1; + if (uVar2 < uVar8) { + uVar8 = uVar2; + } + uVar7 = uVar2; + if ((uVar2 < 7) || (uVar7 = uVar8, puVar9 = param_2, uVar8 != 0)) { + *param_2 = uVar1; + if (uVar7 != 1) { + param_2[1] = uVar1; + puVar5 = param_2 + 2; + if (uVar7 != 2) { + param_2[2] = uVar1; + puVar5 = param_2 + 3; + if (uVar7 != 3) { + param_2[3] = uVar1; + puVar5 = param_2 + 4; + if (uVar7 != 4) { + param_2[4] = uVar1; + puVar5 = param_2 + 5; + if (uVar7 == 6) { + param_2[5] = uVar1; + puVar5 = param_2 + 6; + } + } + } + } + } + uVar8 = uVar7; + puVar9 = puVar5; + if (uVar2 == uVar7) { + return; + } + } + uVar7 = ((uVar2 - uVar8) - 4 >> 2) + 1; + if (2 < uVar3 - uVar8) { + uVar3 = 0; + puVar4 = (undefined8 *)(param_2 + uVar8); + do { + puVar4[1] = CONCAT44(uVar1,uVar1); + *puVar4 = CONCAT44(uVar1,uVar1); + uVar3 = uVar3 + 1; + puVar4 = puVar4 + 2; + } while (uVar3 < uVar7); + puVar9 = puVar9 + uVar7 * 4; + if (uVar2 - uVar8 == uVar7 * 4) { + return; + } + } + *puVar9 = uVar1; + if ((puVar11 != puVar9 + 1) && (puVar9[1] = uVar1, puVar11 != puVar9 + 2)) { + puVar9[2] = uVar1; + } + } + return; + } + pvVar6 = *(void **)this; + uVar2 = (long)puVar11 - (long)pvVar6 >> 2; + if (0x3fffffffffffffff - uVar2 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar8 = uVar2; + if (uVar2 < param_3) { + uVar8 = param_3; + } + uVar8 = uVar8 + uVar2; + if ((uVar8 < uVar2) || (0x3fffffffffffffff < uVar8)) { + sVar12 = (long)param_2 - (long)pvVar6; + uVar8 = 0xfffffffffffffffc; +LAB_001d5160: + __dest = operator_new(uVar8); + pvVar6 = *(void **)this; + __n = (long)param_2 - (long)pvVar6; + } + else { + sVar12 = (long)param_2 - (long)pvVar6; + if (uVar8 != 0) { + uVar8 = uVar8 * 4; + goto LAB_001d5160; + } + uVar8 = 0; + __dest = (void *)0x0; + __n = sVar12; + } + puVar11 = (undefined4 *)((long)__dest + sVar12); + uVar1 = *param_4; + uVar2 = -((ulong)puVar11 >> 2 & 3) & 3; + if (param_3 < uVar2) { + uVar2 = param_3; + } + uVar3 = param_3; + if ((param_3 < 7) || (uVar7 = param_3, uVar3 = uVar2, uVar2 != 0)) { + uVar7 = param_3 - 1; + puVar5 = puVar11 + 1; + *puVar11 = uVar1; + if (1 < uVar3) { + puVar11[1] = uVar1; + uVar7 = param_3 - 2; + puVar5 = puVar11 + 2; + if (uVar3 != 2) { + puVar11[2] = uVar1; + uVar7 = param_3 - 3; + puVar5 = puVar11 + 3; + if (uVar3 != 3) { + puVar11[3] = uVar1; + uVar7 = param_3 - 4; + puVar5 = puVar11 + 4; + if (uVar3 != 4) { + puVar11[4] = uVar1; + uVar7 = param_3 - 5; + puVar5 = puVar11 + 5; + if (uVar3 == 6) { + puVar11[5] = uVar1; + uVar7 = param_3 - 6; + puVar5 = puVar11 + 6; + } + } + } + } + } + uVar2 = uVar3; + puVar11 = puVar5; + if (param_3 == uVar3) goto LAB_001d5284; + } + uVar3 = ((param_3 - uVar2) - 4 >> 2) + 1; + if (2 < (param_3 - 1) - uVar2) { + uVar10 = 0; + puVar4 = (undefined8 *)((long)__dest + sVar12 + uVar2 * 4); + do { + puVar4[1] = CONCAT44(uVar1,uVar1); + *puVar4 = CONCAT44(uVar1,uVar1); + uVar10 = uVar10 + 1; + puVar4 = puVar4 + 2; + } while (uVar10 < uVar3); + puVar11 = puVar11 + uVar3 * 4; + uVar7 = uVar7 + uVar3 * -4; + if (param_3 - uVar2 == uVar3 * 4) goto LAB_001d5284; + } + *puVar11 = uVar1; + if ((uVar7 != 1) && (puVar11[1] = uVar1, uVar7 != 2)) { + puVar11[2] = uVar1; + } +LAB_001d5284: + if ((long)__n >> 2 != 0) { + memmove(__dest,pvVar6,__n); + } + pvVar6 = (void *)((long)__dest + __n + param_3 * 4); + sVar12 = *(long *)(this + 8) - (long)param_2; + if ((long)sVar12 >> 2 != 0) { + memmove(pvVar6,param_2,sVar12); + } + if (*(void **)this != (void *)0x0) { + operator_delete(*(void **)this); + } + *(void **)this = __dest; + *(size_t *)(this + 8) = (long)pvVar6 + sVar12; + *(ulong *)(this + 0x10) = (long)__dest + uVar8; + return; +} + + +================================================================== + +### FUNC 001d5360 (492 bytes) name=_M_fill_insert + +/* std::vector + >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,void *param_2,ulong param_3, + byte *param_4) + +{ + byte bVar1; + size_t sVar2; + void *pvVar3; + long lVar4; + void *pvVar5; + ulong uVar6; + void *__src; + ulong uVar7; + + if (param_3 == 0) { + return; + } + pvVar5 = *(void **)(this + 8); + if (param_3 <= (ulong)(*(long *)(this + 0x10) - (long)pvVar5)) { + uVar6 = (long)pvVar5 - (long)param_2; + bVar1 = *param_4; + if (param_3 < uVar6) { + __src = (void *)((long)pvVar5 - param_3); + pvVar3 = pvVar5; + if ((long)pvVar5 - (long)__src != 0) { + pvVar3 = memmove(pvVar5,__src,(long)pvVar5 - (long)__src); + pvVar5 = *(void **)(this + 8); + } + sVar2 = (long)__src - (long)param_2; + *(ulong *)(this + 8) = (long)pvVar5 + param_3; + if (sVar2 != 0) { + memmove((void *)((long)pvVar3 - sVar2),param_2,sVar2); + } + } + else { + memset(pvVar5,(uint)bVar1,param_3 - uVar6); + pvVar5 = (void *)(*(long *)(this + 8) + (param_3 - uVar6)); + *(void **)(this + 8) = pvVar5; + if (uVar6 != 0) { + memmove(pvVar5,param_2,uVar6); + pvVar5 = *(void **)(this + 8); + } + *(ulong *)(this + 8) = (long)pvVar5 + uVar6; + param_3 = uVar6; + } + memset(param_2,(uint)bVar1,param_3); + return; + } + lVar4 = *(long *)this; + uVar6 = (long)pvVar5 - lVar4; + if (~uVar6 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar7 = uVar6; + if (uVar6 < param_3) { + uVar7 = param_3; + } + uVar7 = uVar7 + uVar6; + if (uVar7 < uVar6) { + lVar4 = (long)param_2 - lVar4; + uVar7 = 0xffffffffffffffff; + } + else { + uVar6 = 0; + lVar4 = (long)param_2 - lVar4; + pvVar5 = (void *)0x0; + if (uVar7 == 0) goto LAB_001d542c; + } + pvVar5 = operator_new(uVar7); + uVar6 = uVar7; +LAB_001d542c: + memset((void *)((long)pvVar5 + lVar4),(uint)*param_4,param_3); + sVar2 = (long)param_2 - (long)*(void **)this; + if (sVar2 != 0) { + memmove(pvVar5,*(void **)this,sVar2); + } + pvVar3 = (void *)((long)pvVar5 + sVar2 + param_3); + sVar2 = *(long *)(this + 8) - (long)param_2; + if (sVar2 != 0) { + memmove(pvVar3,param_2,sVar2); + } + if (*(void **)this != (void *)0x0) { + operator_delete(*(void **)this); + } + *(void **)this = pvVar5; + *(size_t *)(this + 8) = (long)pvVar3 + sVar2; + *(ulong *)(this + 0x10) = (long)pvVar5 + uVar6; + return; +} + + +================================================================== + +### FUNC 001d554c (1288 bytes) name=FUN_001d554c + +void FUN_001d554c(long param_1,long *param_2,long *param_3,long *param_4,ulong param_5,uint param_6, + uint param_7,int param_8,int param_9,Scalar_ *param_10) + +{ + int *piVar1; + long *plVar2; + int iVar3; + char cVar4; + bool bVar5; + uint uVar6; + undefined8 uVar7; + undefined4 uVar8; + undefined2 uVar9; + int iVar10; + long *plVar11; + char *pcVar12; + void *pvVar13; + int iVar14; + long lVar15; + int iVar16; + ulong uVar17; + uint uVar18; + ulong uVar19; + long lVar20; + int iVar21; + undefined8 uVar22; + undefined1 local_11; + ulong local_10; + undefined8 local_8; + + lVar20 = *param_2; + iVar3 = ((uint)(param_5 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)param_5 & 7) << 1)) & 3); + *(uint *)(param_1 + 8) = (uint)param_5 & 0xfff; + *(uint *)(param_1 + 0xc) = param_6 & 0xfff; + *(uint *)(param_1 + 0x10) = param_7 & 0xfff; + lVar15 = param_2[1]; + if (lVar20 != 0) { + piVar1 = (int *)(lVar20 + 8); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + plVar11 = *(long **)(param_1 + 0x100); + *(long *)(param_1 + 0x108) = lVar15; + *(long *)(param_1 + 0x100) = lVar20; + if (plVar11 != (long *)0x0) { + plVar2 = plVar11 + 1; + do { + lVar15 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar15 == 1) { + (**(code **)(*plVar11 + 0x10))(); + } + } + lVar15 = *param_3; + lVar20 = param_3[1]; + if (lVar15 != 0) { + piVar1 = (int *)(lVar15 + 8); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + plVar11 = *(long **)(param_1 + 0x110); + *(long *)(param_1 + 0x118) = lVar20; + *(long *)(param_1 + 0x110) = lVar15; + if (plVar11 != (long *)0x0) { + plVar2 = plVar11 + 1; + do { + lVar15 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar15 == 1) { + (**(code **)(*plVar11 + 0x10))(); + } + } + lVar15 = *param_4; + lVar20 = param_4[1]; + if (lVar15 != 0) { + piVar1 = (int *)(lVar15 + 8); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + plVar11 = *(long **)(param_1 + 0x120); + *(long *)(param_1 + 0x128) = lVar20; + *(long *)(param_1 + 0x120) = lVar15; + if (plVar11 != (long *)0x0) { + plVar2 = plVar11 + 1; + do { + lVar15 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar15 == 1) { + (**(code **)(*plVar11 + 0x10))(); + *(int *)(param_1 + 0x48) = param_8; + if (param_9 < 0) { + param_9 = param_8; + } + *(int *)(param_1 + 0x4c) = param_9; + goto joined_r0x001d5694; + } + } + *(int *)(param_1 + 0x48) = param_8; + if (param_9 < 0) { + param_9 = param_8; + } + *(int *)(param_1 + 0x4c) = param_9; +joined_r0x001d5694: + if (param_9 == 3) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar4 = s_columnBorderType____BORDER_WRAP_004433b0[0x1e]; + uVar9 = s_columnBorderType____BORDER_WRAP_004433b0._28_2_; + uVar8 = s_columnBorderType____BORDER_WRAP_004433b0._24_4_; + uVar7 = s_columnBorderType____BORDER_WRAP_004433b0._8_8_; + uVar22 = s_columnBorderType____BORDER_WRAP_004433b0._0_8_; + *(undefined8 *)(pcVar12 + 0x10) = s_columnBorderType____BORDER_WRAP_004433b0._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar8; + *(undefined2 *)(pcVar12 + 0x1c) = uVar9; + pcVar12[0x1e] = cVar4; + *(undefined8 *)pcVar12 = uVar22; + *(undefined8 *)(pcVar12 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "void cv::FilterEngine::init(const cv::Ptr&, const cv::Ptr&, const cv::Ptr&, int, int, int, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x7b); + cv::String::deallocate((String *)&local_10); + lVar15 = *(long *)(param_1 + 0x108); + } + else { + lVar15 = *(long *)(param_1 + 0x108); + } + if (lVar15 == 0) { + lVar15 = *(long *)(param_1 + 0x118); + if ((lVar15 == 0) || (lVar20 = *(long *)(param_1 + 0x128), lVar20 == 0)) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar4 = s_rowFilter____columnFilter_00443440[0x18]; + uVar7 = s_rowFilter____columnFilter_00443440._8_8_; + uVar22 = s_rowFilter____columnFilter_00443440._0_8_; + *(undefined8 *)(pcVar12 + 0x10) = s_rowFilter____columnFilter_00443440._16_8_; + pcVar12[0x18] = cVar4; + *(undefined8 *)pcVar12 = uVar22; + *(undefined8 *)(pcVar12 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "void cv::FilterEngine::init(const cv::Ptr&, const cv::Ptr&, const cv::Ptr&, int, int, int, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x7f); + cv::String::deallocate((String *)&local_10); + lVar15 = *(long *)(param_1 + 0x118); + lVar20 = *(long *)(param_1 + 0x128); + } + iVar21 = *(int *)(lVar15 + 8); + iVar16 = *(int *)(lVar20 + 8); + iVar10 = *(int *)(lVar15 + 0xc); + iVar14 = *(int *)(lVar20 + 0xc); + *(int *)(param_1 + 0x20) = iVar14; + *(int *)(param_1 + 0x14) = iVar21; + *(int *)(param_1 + 0x18) = iVar16; + *(int *)(param_1 + 0x1c) = iVar10; + } + else { + if (*(int *)(param_1 + 0x10) != *(int *)(param_1 + 8)) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x12); + uVar7 = s_bufType____srcType_004433d0._8_8_; + uVar22 = s_bufType____srcType_004433d0._0_8_; + *(undefined2 *)(pcVar12 + 0x10) = s_bufType____srcType_004433d0._16_2_; + *(undefined8 *)pcVar12 = uVar22; + *(undefined8 *)(pcVar12 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "void cv::FilterEngine::init(const cv::Ptr&, const cv::Ptr&, const cv::Ptr&, int, int, int, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x85); + cv::String::deallocate((String *)&local_10); + lVar15 = *(long *)(param_1 + 0x108); + } + iVar21 = *(int *)(lVar15 + 8); + uVar22 = *(undefined8 *)(lVar15 + 8); + iVar16 = *(int *)(lVar15 + 0xc); + iVar10 = *(int *)(lVar15 + 0x10); + iVar14 = *(int *)(lVar15 + 0x14); + *(undefined8 *)(param_1 + 0x1c) = *(undefined8 *)(lVar15 + 0x10); + *(undefined8 *)(param_1 + 0x14) = uVar22; + } + if ((((iVar10 < 0) || (iVar21 <= iVar10)) || (iVar14 < 0)) || (iVar16 <= iVar14)) { + local_10 = 0; + local_8 = 0; + pvVar13 = (void *)cv::String::allocate((String *)&local_10,0x53); + memcpy(pvVar13, + "0 <= anchor.x && anchor.x < ksize.width && 0 <= anchor.y && anchor.y < ksize.height", + 0x53); + cv::error(-0xd7,(String *)&local_10, + "void cv::FilterEngine::init(const cv::Ptr&, const cv::Ptr&, const cv::Ptr&, int, int, int, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x8b); + cv::String::deallocate((String *)&local_10); + iVar21 = *(int *)(param_1 + 0x14); + } + iVar21 = iVar21 + -1; + local_10 = local_10 & 0xffffffff00000000; + uVar17 = 4; + if ((*(uint *)(param_1 + 8) & 7) < 4) { + uVar17 = 1; + } + if (iVar21 < 1) { + iVar21 = 1; + } + iVar16 = 0; + if (uVar17 != 0) { + iVar16 = (int)((ulong)(long)iVar3 / uVar17); + } + uVar17 = *(long *)(param_1 + 0x58) - *(long *)(param_1 + 0x50) >> 2; + *(int *)(param_1 + 0x68) = iVar16; + uVar19 = (ulong)(iVar21 * iVar16); + if (uVar17 < uVar19) { + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 0x50),*(long *)(param_1 + 0x58), + uVar19 - uVar17,&local_10); + } + else if (uVar19 < uVar17) { + *(ulong *)(param_1 + 0x58) = *(long *)(param_1 + 0x50) + uVar19 * 4; + } + *(undefined4 *)(param_1 + 0xd0) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined8 *)(param_1 + 0xc0) = *(undefined8 *)(param_1 + 0xb8); + if ((*(int *)(param_1 + 0x48) == 0) || (*(int *)(param_1 + 0x4c) == 0)) { + pvVar13 = *(void **)(param_1 + 0xa0); + uVar19 = (ulong)(iVar21 * iVar3); + local_11 = 0; + uVar17 = *(long *)(param_1 + 0xa8) - (long)pvVar13; + if (uVar17 < uVar19) { + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 0xa0), + *(long *)(param_1 + 0xa8),uVar19 - uVar17,&local_11); + pvVar13 = *(void **)(param_1 + 0xa0); + } + else if (uVar19 < uVar17) { + *(ulong *)(param_1 + 0xa8) = (long)pvVar13 + uVar19; + } + uVar6 = *(uint *)(param_1 + 8) >> 3 & 0x1ff; + uVar18 = uVar6; + if (3 < uVar6) { + uVar18 = 3; + } + cv::scalarToRawData(param_10,pvVar13,(*(uint *)(param_1 + 8) & 7) + uVar18 * 8, + iVar21 + uVar6 * iVar21); + } + *(undefined4 *)(param_1 + 0x28) = 0xffffffff; + *(undefined4 *)(param_1 + 0x2c) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 001d5aa4 (204 bytes) name=FUN_001d5aa4 + +void FUN_001d5aa4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f3450; + *(undefined4 *)((long)param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)(param_1 + 5) = 0; + *(undefined4 *)((long)param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 6) = 0; + *(undefined4 *)((long)param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 7) = 0; + *(undefined4 *)((long)param_1 + 0x3c) = 0; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x18] = 0; + param_1[0x19] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + param_1[0x24] = 0; + param_1[0x25] = 0; + FUN_001d554c(); + return; +} + + +================================================================== + +### FUNC 001d5c50 (2008 bytes) name=FUN_001d5c50 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 * +FUN_001d5c50(undefined8 *param_1,double param_2,uint param_3,uint param_4,_InputArray *param_5, + _InputArray *param_6,int *param_7,undefined4 param_8,undefined4 param_9, + undefined8 param_10) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + char cVar4; + bool bVar5; + uint uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined1 uVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined4 uVar13; + uint uVar14; + undefined8 *puVar15; + void *pvVar16; + Mat *pMVar17; + int iVar18; + int iVar19; + double dVar20; + double dVar21; + undefined8 local_1c8; + undefined8 local_1c0; + long local_1b8 [2]; + long local_1a8 [2]; + long local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + undefined8 local_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined8 local_120; + Mat *pMStack_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + undefined8 local_e8; + Mat **local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + uint local_c0; + undefined4 local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + undefined4 local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar10 = cv::_InputArray::kind(param_5); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_5 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar17; + local_bc = *(undefined4 *)(pMVar17 + 4); + local_b8 = *(int *)(pMVar17 + 8); + local_b4 = *(int *)(pMVar17 + 0xc); + local_b0 = *(undefined8 *)(pMVar17 + 0x10); + local_a8 = *(undefined8 *)(pMVar17 + 0x18); + local_a0 = *(undefined8 *)(pMVar17 + 0x20); + local_98 = *(undefined8 *)(pMVar17 + 0x28); + local_90 = *(undefined8 *)(pMVar17 + 0x30); + local_88 = *(long *)(pMVar17 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar17 + 0x48); + local_68 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_bc = 0; + cv::Mat::copySize((Mat *)&local_c0,pMVar17); + } + } + else { + cv::_InputArray::getMat_((int)param_5); + } + iVar10 = cv::_InputArray::kind(param_6); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_6 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar17; + local_5c = *(undefined4 *)(pMVar17 + 4); + local_58 = *(int *)(pMVar17 + 8); + local_54 = *(int *)(pMVar17 + 0xc); + local_50 = *(undefined8 *)(pMVar17 + 0x10); + local_48 = *(undefined8 *)(pMVar17 + 0x18); + local_40 = *(undefined8 *)(pMVar17 + 0x20); + local_38 = *(undefined8 *)(pMVar17 + 0x28); + local_30 = *(undefined8 *)(pMVar17 + 0x30); + local_28 = *(long *)(pMVar17 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar17 + 0x48); + local_8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_5c = 0; + cv::Mat::copySize((Mat *)&local_60,pMVar17); + } + } + else { + cv::_InputArray::getMat_((int)param_6); + } + uVar6 = param_3 >> 3 & 0x1ff; + uVar2 = param_3 & 7; + uVar3 = param_4 & 7; + if ((param_4 >> 3 & 0x1ff) + 1 != uVar6 + 1) { + local_1c8 = 0; + local_1c0 = 0; + puVar15 = (undefined8 *)cv::String::allocate((String *)&local_1c8,0x19); + uVar9 = DAT_00443478; + uVar8 = _LAB_00443468; + uVar7 = _LAB_00443460; + puVar15[2] = DAT_00443470; + *(undefined1 *)(puVar15 + 3) = uVar9; + *puVar15 = uVar7; + puVar15[1] = uVar8; + cv::error(-0xd7,(String *)&local_1c8, + "cv::Ptr cv::createSeparableLinearFilter(int, int, cv::InputArray, cv::InputArray, cv::Point, double, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xeca); + cv::String::deallocate((String *)&local_1c8); + } + iVar10 = *param_7; + if (iVar10 < 0) { + iVar10 = (local_b8 + local_b4 + -1) / 2; + iVar18 = param_7[1]; + *param_7 = iVar10; + } + else { + iVar18 = param_7[1]; + } + if (iVar18 < 0) { + param_7[1] = (local_58 + local_54 + -1) / 2; + } + local_110 = 0; + local_120._0_4_ = 0x1010000; + iVar18 = iVar10; + iVar19 = 0; + if (local_b8 == 1) { + iVar18 = 0; + iVar19 = iVar10; + } + local_180 = CONCAT44(iVar18,iVar19); + pMStack_118 = (Mat *)&local_c0; + uVar11 = FUN_001c8e50((Mat *)&local_120,(Mat *)&local_180); + local_110 = 0; + local_120 = CONCAT44(local_120._4_4_,0x1010000); + if (local_58 == 1) { + iVar18 = param_7[1]; + iVar10 = 0; + } + else { + iVar10 = param_7[1]; + iVar18 = 0; + } + local_180 = CONCAT44(iVar10,iVar18); + pMStack_118 = (Mat *)&local_60; + uVar12 = FUN_001c8e50((Mat *)&local_120,(Mat *)&local_180); + local_138 = &local_130; + local_d8 = &local_d0; + uVar14 = uVar3; + if (uVar3 < 5) { + uVar14 = 5; + } + local_140 = &pMStack_178; + uStack_128 = 0; + local_130 = 0; + local_e0 = &pMStack_118; + uStack_c8 = 0; + local_d0 = 0; + pMStack_118 = _UNK_001d6598; + local_120 = _DAT_001d6590; + local_170 = 0; + pMStack_178 = _UNK_001d6598; + local_180 = _DAT_001d6590; + local_110 = 0; + local_108 = 0; + if (uVar14 < uVar2) { + uVar14 = uVar2; + } + local_168 = 0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + local_100 = 0; + local_f8 = 0; + local_f0 = 0; + local_e8 = 0; + if (uVar2 == 0) { + if ((uVar11 == 5 && uVar3 == 0) && (uVar12 == 5)) { + uVar13 = 0x10; + dVar21 = DAT_001d6588; + dVar20 = DAT_001d6580; + } + else { + if (((uVar11 & 3) == 0) || + ((((uVar12 & 3) == 0 || (uVar3 != 3)) || ((uVar11 & 8 & uVar12) == 0)))) goto LAB_001d5f84; + dVar21 = 1.0; + uVar13 = 0; + dVar20 = dVar21; + } + local_188 = 0; + local_184 = 0; + local_198._0_4_ = 0x2010000; + local_190 = (Mat *)&local_180; + cv::Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_198,4,dVar21,0.0); + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x2010000); + local_190 = (Mat *)&local_120; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_198,4,dVar21,0.0); + param_2 = param_2 * dVar20; + uVar14 = 4; + } + else { +LAB_001d5f84: + if (uVar14 == (local_c0 & 0xfff)) { + cv::Mat::operator=((Mat *)&local_180,(Mat *)&local_c0); + } + else { + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x2010000); + local_190 = (Mat *)&local_180; + cv::Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_198,uVar14,1.0,0.0); + } + if (uVar14 == (local_60 & 0xfff)) { + cv::Mat::operator=((Mat *)&local_120,(Mat *)&local_60); + uVar13 = 0; + } + else { + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x2010000); + local_190 = (Mat *)&local_120; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_198,uVar14,1.0,0.0); + uVar13 = 0; + } + } + iVar10 = uVar14 + uVar6 * 8; + local_188 = 0; + local_184 = 0; + local_198._0_4_ = 0x1010000; + local_190 = (Mat *)&local_180; + FUN_001cf2b0(local_1b8,param_3 & 0xfff,iVar10,&local_198,*param_7,uVar11); + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_190 = (Mat *)&local_120; + FUN_001d258c(local_1a8,param_2,iVar10,param_4 & 0xfff,&local_198,param_7[1],uVar12,uVar13); + local_198 = 0; + local_190 = (Mat *)0x0; + pvVar16 = operator_new(0x130); + FUN_001d5aa4(pvVar16,&local_198,local_1b8,local_1a8,param_3 & 0xfff,param_4 & 0xfff,iVar10,param_8 + ,param_9,param_10); + puVar15 = operator_new(0x20); + puVar15[2] = pvVar16; + *puVar15 = &PTR_FUN_004f3ca0; + *(undefined4 *)(puVar15 + 1) = 1; + *param_1 = puVar15; + param_1[1] = pvVar16; + piVar1 = (int *)(local_198 + 8); + if (local_198 != 0) { + do { + iVar10 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar10 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar10 == 1) { + FUN_001c0010(local_198); + } + } + piVar1 = (int *)(local_1a8[0] + 8); + if (local_1a8[0] != 0) { + do { + iVar10 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar10 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar10 == 1) { + FUN_001c0010(); + } + } + piVar1 = (int *)(local_1b8[0] + 8); + if (local_1b8[0] != 0) { + do { + iVar10 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar10 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar10 == 1) { + FUN_001c0010(); + } + } + cv::Mat::release((Mat *)&local_120); + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + cv::Mat::release((Mat *)&local_180); + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + cv::Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + return param_1; +} + + +================================================================== + +### FUNC 001d65a0 (1456 bytes) name=sepFilter2D + +/* cv::sepFilter2D(cv::_InputArray const&, cv::_OutputArray const&, int, cv::_InputArray const&, + cv::_InputArray const&, cv::Point_, double, int) */ + +void cv::sepFilter2D(undefined8 param_1_00,_InputArray *param_1,_InputArray *param_2,uint param_3, + _InputArray *param_4,_InputArray *param_5,undefined4 *param_7,uint param_8) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + Mat *pMVar5; + undefined4 local_1e8; + undefined4 local_1e4; + long local_1e0; + long *local_1d8; + undefined4 local_1d0 [2]; + Mat *local_1c8; + undefined4 local_1c0; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + Mat *local_1b0; + undefined4 local_1a8; + undefined4 local_1a4; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 uStack_188; + uint local_180; + undefined4 local_17c; + undefined4 local_178; + undefined4 local_174; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined4 local_120; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind(param_1); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_1 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(uint *)pMVar5; + local_17c = *(undefined4 *)(pMVar5 + 4); + local_178 = *(undefined4 *)(pMVar5 + 8); + local_174 = *(undefined4 *)(pMVar5 + 0xc); + local_170 = *(undefined8 *)(pMVar5 + 0x10); + local_168 = *(undefined8 *)(pMVar5 + 0x18); + local_160 = *(undefined8 *)(pMVar5 + 0x20); + local_158 = *(undefined8 *)(pMVar5 + 0x28); + local_150 = *(undefined8 *)(pMVar5 + 0x30); + local_148 = *(long *)(pMVar5 + 0x38); + local_128 = 0; + local_130 = 0; + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar5 + 0x48); + local_128 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar4 = _InputArray::kind(param_4); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_4 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(undefined4 *)pMVar5; + local_11c = *(undefined4 *)(pMVar5 + 4); + local_118 = *(undefined4 *)(pMVar5 + 8); + local_114 = *(undefined4 *)(pMVar5 + 0xc); + local_110 = *(undefined8 *)(pMVar5 + 0x10); + local_108 = *(undefined8 *)(pMVar5 + 0x18); + local_100 = *(undefined8 *)(pMVar5 + 0x20); + local_f8 = *(undefined8 *)(pMVar5 + 0x28); + local_f0 = *(undefined8 *)(pMVar5 + 0x30); + local_e8 = *(long *)(pMVar5 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar5 + 0x48); + local_c8 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_4); + } + iVar4 = _InputArray::kind(param_5); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_5 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar5; + local_bc = *(undefined4 *)(pMVar5 + 4); + local_b8 = *(undefined4 *)(pMVar5 + 8); + local_b4 = *(undefined4 *)(pMVar5 + 0xc); + local_b0 = *(undefined8 *)(pMVar5 + 0x10); + local_a8 = *(undefined8 *)(pMVar5 + 0x18); + local_a0 = *(undefined8 *)(pMVar5 + 0x20); + local_98 = *(undefined8 *)(pMVar5 + 0x28); + local_90 = *(undefined8 *)(pMVar5 + 0x30); + local_88 = *(long *)(pMVar5 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar5 + 0x48); + local_68 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_5); + } + if ((int)param_3 < 0) { + param_3 = local_180 & 7; + } + local_5c = *local_140; + local_60 = local_140[1]; + _OutputArray::create + ((_OutputArray *)param_2,(Mat *)&local_60,(param_3 & 7) + (local_180 & 0xff8),0xffffffff + ,0,0); + iVar4 = _InputArray::kind(param_2); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar5; + local_50 = *(undefined8 *)(pMVar5 + 0x10); + local_5c = *(undefined4 *)(pMVar5 + 4); + local_58 = *(undefined4 *)(pMVar5 + 8); + local_54 = *(undefined4 *)(pMVar5 + 0xc); + local_48 = *(undefined8 *)(pMVar5 + 0x18); + local_40 = *(undefined8 *)(pMVar5 + 0x20); + local_38 = *(undefined8 *)(pMVar5 + 0x28); + local_30 = *(undefined8 *)(pMVar5 + 0x30); + local_28 = *(long *)(pMVar5 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar5 + 0x48); + local_8 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_198 = 0; + local_1a0 = 0; + local_1e8 = *param_7; + local_1e4 = param_7[1]; + uStack_188 = 0; + local_190 = 0; + local_1a8 = 0; + local_1a4 = 0; + local_1b8 = 0x1010000; + local_1c0 = 0; + local_1bc = 0; + local_1d0[0] = 0x1010000; + local_1c8 = (Mat *)&local_120; + local_1b0 = (Mat *)&local_c0; + FUN_001d5c50(&local_1e0,param_1_00,local_180 & 0xfff,local_60 & 0xfff,local_1d0,&local_1b8, + &local_1e8,param_8 & 0xffffffef,0xffffffff,&local_1a0); + local_1a0 = 0; + local_198 = 0xffffffffffffffff; + local_1b8 = 0; + local_1b4 = 0; + (**(code **)(*local_1d8 + 0x28)) + (local_1d8,(Mat *)&local_180,(Mat *)&local_60,&local_1a0,&local_1b8,param_8 >> 4 & 1); + piVar1 = (int *)(local_1e0 + 8); + if (local_1e0 != 0) { + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + FUN_001c0010(); + } + } + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&local_120); + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + Mat::release((Mat *)&local_180); + if (local_138 != &local_130) { + fastFree(local_138); + } + return; +} + + +================================================================== + +### FUNC 001d6c20 (2812 bytes) name=FUN_001d6c20 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_001d6c20(long param_1,int *param_2,uint *param_3,int param_4) + +{ + undefined1 *puVar1; + ulong uVar2; + int iVar3; + uint uVar4; + int iVar5; + undefined1 uVar6; + int iVar7; + void *pvVar8; + long lVar9; + ulong uVar10; + ulong uVar11; + code *pcVar12; + int *piVar13; + int iVar14; + uint uVar15; + undefined8 *puVar16; + ulong uVar17; + uint uVar18; + uint uVar19; + int iVar20; + int iVar21; + long lVar22; + undefined8 *puVar24; + uint uVar25; + undefined1 *__src; + int iVar26; + int *piVar27; + int *piVar28; + int iVar29; + undefined8 uVar30; + int iVar31; + int iVar32; + int iVar33; + undefined1 local_12; + undefined1 local_11; + ulong local_10 [2]; + ulong uVar23; + + iVar26 = *param_2; + iVar3 = param_2[1]; + uVar4 = param_3[1]; + uVar15 = *param_3; + uVar19 = param_3[2]; + uVar18 = param_3[3]; + *(int *)(param_1 + 0x28) = iVar26; + *(int *)(param_1 + 0x2c) = iVar3; + *(uint *)(param_1 + 0x30) = uVar15; + *(uint *)(param_1 + 0x34) = uVar4; + *(uint *)(param_1 + 0x38) = uVar19; + *(uint *)(param_1 + 0x3c) = uVar18; + if (((((int)uVar18 < 0) || (-1 < (int)(~uVar15 & (uVar4 ^ 0xffffffff) & (uVar19 ^ 0xffffffff)))) + || (iVar26 < (int)(uVar15 + uVar19))) || (iVar3 < (int)(uVar4 + uVar18))) { + local_10[0] = 0; + local_10[1] = 0; + pvVar8 = (void *)cv::String::allocate((String *)local_10,0x8f); + memcpy(pvVar8, + "roi.x >= 0 && roi.y >= 0 && roi.width >= 0 && roi.height >= 0 && roi.x + roi.width <= wholeSize.width && roi.y + roi.height <= wholeSize.height" + ,0x8f); + cv::error(-0xd7,(String *)local_10, + "virtual int cv::FilterEngine::start(cv::Size, cv::Rect, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xa9); + cv::String::deallocate((String *)local_10); + uVar19 = *(uint *)(param_1 + 0x38); + } + __src = *(undefined1 **)(param_1 + 0xa0); + iVar26 = (*(uint *)(param_1 + 0x10) >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)(param_1 + 0x10) & 7) << 1)) & 3); + if (__src == *(undefined1 **)(param_1 + 0xa8)) { + __src = (undefined1 *)0x0; + } + iVar3 = (*(uint *)(param_1 + 8) >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)(param_1 + 8) & 7) << 1)) & 3); + if (param_4 < 0) { + param_4 = *(int *)(param_1 + 0x18) + 3; + } + iVar21 = *(int *)(param_1 + 0x20); + iVar7 = (*(int *)(param_1 + 0x18) - iVar21) + -1; + if (iVar7 < iVar21) { + iVar7 = iVar21; + } + iVar7 = iVar7 * 2 + 1; + if (iVar7 < param_4) { + iVar7 = param_4; + } + if ((*(int *)(param_1 + 0x24) < (int)uVar19) || + (iVar7 != (int)(*(long *)(param_1 + 0xf0) - *(long *)(param_1 + 0xe8) >> 3))) { + FUN_001c66c4(param_1 + 0xe8,(long)iVar7); + local_12 = 0; + iVar7 = *(int *)(param_1 + 0x38); + if (*(int *)(param_1 + 0x38) < *(int *)(param_1 + 0x24)) { + iVar7 = *(int *)(param_1 + 0x24); + } + *(int *)(param_1 + 0x24) = iVar7; + uVar17 = *(long *)(param_1 + 0x90) - *(long *)(param_1 + 0x88); + uVar4 = *(uint *)(param_1 + 8); + uVar11 = (ulong)((iVar7 + *(int *)(param_1 + 0x14) + -1) * iVar3); + if (uVar17 < uVar11) { + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 0x88), + *(long *)(param_1 + 0x90),uVar11 - uVar17,&local_12); + iVar7 = *(int *)(param_1 + 0x24); + } + else if (uVar11 < uVar17) { + *(ulong *)(param_1 + 0x90) = *(long *)(param_1 + 0x88) + uVar11; + } + if (*(int *)(param_1 + 0x4c) == 0) { + iVar21 = iVar7 + *(int *)(param_1 + 0x14); + lVar9 = *(long *)(param_1 + 0xb8); + uVar11 = (long)(iVar21 + 0xf) * + (long)(int)((*(uint *)(param_1 + 0x10) >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)(param_1 + 0x10) & 7) << 1)) & 3)); + local_11 = 0; + uVar17 = *(long *)(param_1 + 0xc0) - lVar9; + if (uVar17 <= uVar11 && uVar11 - uVar17 != 0) { + local_11 = 0; + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 0xb8), + *(long *)(param_1 + 0xc0),uVar11 - uVar17,&local_11); + iVar7 = *(int *)(param_1 + 0x24); + lVar9 = *(long *)(param_1 + 0xb8); + iVar21 = iVar7 + *(int *)(param_1 + 0x14); + uVar6 = local_11; + } + else { + uVar6 = 0; + if (uVar17 > uVar11) { + *(ulong *)(param_1 + 0xc0) = lVar9 + uVar11; + uVar6 = local_11; + } + } + local_11 = uVar6; + lVar22 = *(long *)(param_1 + 0x108); + uVar17 = lVar9 + 0xfU & 0xfffffffffffffff0; + iVar21 = (iVar21 + -1) * iVar3; + uVar11 = (ulong)(uint)((int)*(undefined8 *)(param_1 + 0xa8) - + (int)*(undefined8 *)(param_1 + 0xa0)); + if (lVar22 == 0) { + uVar10 = *(ulong *)(param_1 + 0x88); + if (0 < iVar21) goto LAB_001d6e70; +LAB_001d7350: + (**(code **)(**(long **)(param_1 + 0x118) + 0x10)) + (*(long **)(param_1 + 0x118),uVar10,uVar17,iVar7,(uVar4 >> 3 & 0x1ff) + 1); + iVar7 = *(int *)(param_1 + 0x24); + goto LAB_001d7370; + } + uVar10 = uVar17; + if (0 < iVar21) { +LAB_001d6e70: + iVar7 = 0; + uVar15 = -(int)__src & 0xf; + do { + if (iVar21 - iVar7 < (int)uVar11) { + uVar11 = (ulong)(uint)(iVar21 - iVar7); + } + uVar18 = (uint)uVar11; + if (0 < (int)uVar18) { + lVar9 = (long)iVar7; + puVar1 = (undefined1 *)(uVar10 + lVar9); + if ((__src < (undefined1 *)(uVar10 + lVar9 + 0x10) && puVar1 < __src + 0x10) || + (uVar18 < 0x16)) { + lVar9 = 0; + do { + puVar1[lVar9] = __src[lVar9]; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar18); + } + else { + uVar2 = (ulong)uVar15; + if (uVar18 < uVar15) { + uVar2 = uVar11; + } + iVar14 = (int)uVar2; + uVar23 = uVar2; + if ((((iVar14 != 0) && (*puVar1 = *__src, iVar14 != 1)) && + (*(undefined1 *)(uVar10 + (long)(iVar7 + 1)) = __src[1], iVar14 != 2)) && + (((*(undefined1 *)(uVar10 + (long)(iVar7 + 2)) = __src[2], iVar14 != 3 && + (*(undefined1 *)(uVar10 + (long)(iVar7 + 3)) = __src[3], iVar14 != 4)) && + (*(undefined1 *)(uVar10 + (long)(iVar7 + 4)) = __src[4], iVar14 != 5)))) { + *(undefined1 *)(uVar10 + (long)(iVar7 + 5)) = __src[5]; + if (iVar14 == 6) { + uVar23 = 6; + } + else { + *(undefined1 *)(uVar10 + (long)(iVar7 + 6)) = __src[6]; + if (((iVar14 != 7) && + (*(undefined1 *)(uVar10 + (long)(iVar7 + 7)) = __src[7], iVar14 != 8)) && + (((*(undefined1 *)(uVar10 + (long)(iVar7 + 8)) = __src[8], iVar14 != 9 && + (((*(undefined1 *)(uVar10 + (long)(iVar7 + 9)) = __src[9], iVar14 != 10 && + (*(undefined1 *)(uVar10 + (long)(iVar7 + 10)) = __src[10], iVar14 != 0xb)) + && (*(undefined1 *)(uVar10 + (long)(iVar7 + 0xb)) = __src[0xb], + iVar14 != 0xc)))) && + (*(undefined1 *)(uVar10 + (long)(iVar7 + 0xc)) = __src[0xc], iVar14 != 0xd)))) + { + *(undefined1 *)(uVar10 + (long)(iVar7 + 0xd)) = __src[0xd]; + if (iVar14 == 0xf) { + *(undefined1 *)(uVar10 + (long)(iVar7 + 0xe)) = __src[0xe]; + } + else { + uVar23 = 0xe; + } + } + } + } + iVar20 = (int)uVar23; + uVar19 = ((uVar18 - iVar14) - 0x10 >> 4) + 1; + iVar5 = uVar19 * 0x10; + if (0xe < (uVar18 - 1) - iVar14) { + uVar25 = 0; + puVar16 = (undefined8 *)(__src + uVar2); + puVar24 = (undefined8 *)(uVar10 + uVar2 + lVar9); + do { + uVar30 = *puVar16; + uVar25 = uVar25 + 1; + puVar24[1] = puVar16[1]; + *puVar24 = uVar30; + puVar16 = puVar16 + 2; + puVar24 = puVar24 + 2; + } while (uVar25 < uVar19); + iVar20 = iVar20 + iVar5; + if (iVar5 == uVar18 - iVar14) goto LAB_001d71a4; + } + iVar14 = iVar20 + 1; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar20)) = __src[iVar20]; + if (iVar14 < (int)uVar18) { + iVar5 = iVar20 + 2; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = __src[iVar14]; + if (iVar5 < (int)uVar18) { + iVar14 = iVar20 + 3; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar5)) = __src[iVar5]; + if (iVar14 < (int)uVar18) { + iVar5 = iVar20 + 4; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = __src[iVar14]; + if (iVar5 < (int)uVar18) { + iVar14 = iVar20 + 5; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar5)) = __src[iVar5]; + if (iVar14 < (int)uVar18) { + iVar5 = iVar20 + 6; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = __src[iVar14]; + if (iVar5 < (int)uVar18) { + iVar14 = iVar20 + 7; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar5)) = __src[iVar5]; + if (iVar14 < (int)uVar18) { + iVar5 = iVar20 + 8; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = __src[iVar14]; + if (iVar5 < (int)uVar18) { + iVar14 = iVar20 + 9; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar5)) = __src[iVar5]; + if (iVar14 < (int)uVar18) { + iVar5 = iVar20 + 10; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = __src[iVar14]; + if (iVar5 < (int)uVar18) { + iVar14 = iVar20 + 0xb; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar5)) = __src[iVar5]; + if (iVar14 < (int)uVar18) { + iVar5 = iVar20 + 0xc; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = __src[iVar14] + ; + if (iVar5 < (int)uVar18) { + iVar14 = iVar20 + 0xd; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar5)) = __src[iVar5] + ; + if (iVar14 < (int)uVar18) { + iVar20 = iVar20 + 0xe; + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar14)) = + __src[iVar14]; + if (iVar20 < (int)uVar18) { + *(undefined1 *)(uVar10 + (long)(iVar7 + iVar20)) = + __src[iVar20]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_001d71a4: + iVar7 = iVar7 + uVar18; + } while (iVar7 < iVar21); + lVar22 = *(long *)(param_1 + 0x108); + if (lVar22 == 0) { + uVar10 = *(ulong *)(param_1 + 0x88); + iVar7 = *(int *)(param_1 + 0x24); + goto LAB_001d7350; + } + iVar7 = *(int *)(param_1 + 0x24); + } + } + else { +LAB_001d7370: + lVar22 = *(long *)(param_1 + 0x108); + } + if (lVar22 == 0) { + iVar21 = 0; + } + else { + iVar21 = *(int *)(param_1 + 0x14) + -1; + } + uVar17 = *(long *)(param_1 + 0x78) - *(long *)(param_1 + 0x70); + local_10[0] = local_10[0] & 0xffffffffffffff00; + uVar11 = (long)(int)(iVar26 * (iVar21 + iVar7 + 0xfU & 0xfffffff0)) * + (*(long *)(param_1 + 0xf0) - *(long *)(param_1 + 0xe8) >> 3) + 0x10; + if (uVar17 < uVar11) { + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 0x70), + *(long *)(param_1 + 0x78),uVar11 - uVar17,local_10); + lVar22 = *(long *)(param_1 + 0x108); + uVar19 = *(uint *)(param_1 + 0x38); + } + else { + uVar19 = *(uint *)(param_1 + 0x38); + if (uVar11 < uVar17) { + *(ulong *)(param_1 + 0x78) = *(long *)(param_1 + 0x70) + uVar11; + } + } + } + else { + lVar22 = *(long *)(param_1 + 0x108); + } + iVar7 = (int)lVar22; + if (lVar22 != 0) { + iVar7 = *(int *)(param_1 + 0x14) + -1; + } + iVar14 = *(int *)(param_1 + 0x1c); + iVar20 = *(int *)(param_1 + 0x30); + iVar5 = *(int *)(param_1 + 0x28); + iVar21 = iVar14 - iVar20; + if (iVar21 < 0) { + iVar21 = 0; + } + *(uint *)(param_1 + 0xd0) = iVar26 * (iVar7 + uVar19 + 0xf & 0xfffffff0); + iVar26 = (iVar20 + (*(int *)(param_1 + 0x14) - iVar14) + -1 + uVar19) - iVar5; + *(int *)(param_1 + 0x40) = iVar21; + if (iVar26 < 0) { + *(undefined4 *)(param_1 + 0x44) = 0; + iVar26 = 0; + if (iVar21 == 0) goto LAB_001d738c; + } + else { + *(int *)(param_1 + 0x44) = iVar26; + if (iVar26 == 0 && iVar21 == 0) goto LAB_001d738c; + } + iVar7 = *(int *)(param_1 + 0x48); + if (iVar7 == 0) { + if (lVar22 == 0) { + iVar26 = 1; +LAB_001d72ac: + iVar7 = 0; + if (lVar22 == 0) goto LAB_001d7328; + do { + pvVar8 = (void *)((*(long *)(param_1 + 0x70) + 0xfU & 0xfffffffffffffff0) + + (long)(iVar7 * *(int *)(param_1 + 0xd0))); + while( true ) { + iVar7 = iVar7 + 1; + pvVar8 = memcpy(pvVar8,__src,(long)(iVar3 * iVar21)); + memcpy((void *)((long)pvVar8 + + (long)(((*(int *)(param_1 + 0x38) + *(int *)(param_1 + 0x14) + -1) - + *(int *)(param_1 + 0x44)) * iVar3)),__src, + (long)(*(int *)(param_1 + 0x44) * iVar3)); + if (iVar26 <= iVar7) goto LAB_001d738c; + iVar21 = *(int *)(param_1 + 0x40); + if (*(long *)(param_1 + 0x108) != 0) break; +LAB_001d7328: + pvVar8 = *(void **)(param_1 + 0x88); + } + } while( true ); + } + iVar26 = (int)(*(long *)(param_1 + 0xf0) - *(long *)(param_1 + 0xe8) >> 3); + if (0 < iVar26) goto LAB_001d72ac; + goto LAB_001d738c; + } + uVar4 = *(uint *)(param_1 + 0x68); + iVar3 = iVar20; + if (iVar14 < iVar20) { + iVar3 = iVar14; + } + piVar27 = *(int **)(param_1 + 0x50); + if (iVar21 != 0) { + lVar9 = 0; + iVar14 = 0; + iVar26 = 0; + piVar28 = piVar27; + do { + iVar7 = cv::borderInterpolate(iVar26 - iVar21,iVar5,iVar7); + iVar7 = ((iVar3 - iVar20) + iVar7) * uVar4; + if (0 < (int)uVar4) { + uVar15 = -((uint)((ulong)piVar28 >> 2) & 3) & 3; + if (uVar4 < uVar15) { + uVar15 = uVar4; + } + if (uVar4 < 7) { + uVar15 = uVar4; + } + uVar18 = uVar15; + if (uVar15 != 0) { + *piVar28 = iVar7; + if (((uVar15 != 1) && (piVar28[1] = iVar7 + 1, uVar15 != 2)) && + ((piVar28[2] = iVar7 + 2, uVar15 != 3 && (piVar28[3] = iVar7 + 3, uVar15 != 4)))) { + piVar28[4] = iVar7 + 4; + if (uVar15 == 6) { + piVar28[5] = iVar7 + 5; + } + else { + uVar18 = 5; + } + } + if (uVar15 == uVar4) goto LAB_001d7588; + } + uVar19 = ((uVar4 - uVar15) - 4 >> 2) + 1; + iVar21 = uVar19 * 4; + if (2 < (uVar4 - 1) - uVar15) { + uVar25 = 0; + iVar29 = uVar18 + (int)_DAT_001d7730; + iVar31 = uVar18 + (int)((ulong)_DAT_001d7730 >> 0x20); + iVar32 = uVar18 + (int)_UNK_001d7738; + iVar33 = uVar18 + (int)((ulong)_UNK_001d7738 >> 0x20); + piVar13 = piVar27 + (ulong)uVar15 + lVar9; + do { + uVar25 = uVar25 + 1; + *(ulong *)(piVar13 + 2) = CONCAT44(iVar7 + iVar33,iVar7 + iVar32); + *(ulong *)piVar13 = CONCAT44(iVar7 + iVar31,iVar7 + iVar29); + iVar29 = iVar29 + 4; + iVar31 = iVar31 + 4; + iVar32 = iVar32 + 4; + iVar33 = iVar33 + 4; + piVar13 = piVar13 + 4; + } while (uVar25 < uVar19); + uVar18 = uVar18 + iVar21; + if (iVar21 == uVar4 - uVar15) goto LAB_001d7588; + } + iVar21 = uVar18 + 1; + piVar27[(int)(uVar18 + iVar14)] = iVar7 + uVar18; + if (iVar21 < (int)uVar4) { + iVar29 = uVar18 + 2; + piVar27[iVar21 + iVar14] = iVar7 + iVar21; + if (iVar29 < (int)uVar4) { + piVar27[iVar29 + iVar14] = iVar29 + iVar7; + } + } + } +LAB_001d7588: + iVar21 = *(int *)(param_1 + 0x40); + iVar26 = iVar26 + 1; + piVar28 = piVar28 + (int)uVar4; + iVar14 = iVar14 + uVar4; + lVar9 = lVar9 + (int)uVar4; + if (iVar21 <= iVar26) goto LAB_001d75fc; + iVar7 = *(int *)(param_1 + 0x48); + } while( true ); + } +LAB_001d7600: + if (0 < iVar26) { + iVar26 = 0; + do { + iVar7 = cv::borderInterpolate(iVar26 + iVar5,iVar5,*(int *)(param_1 + 0x48)); + uVar15 = 0; + if (0 < (int)uVar4) { + do { + iVar21 = uVar15 + ((iVar3 - iVar20) + iVar7) * uVar4; + iVar14 = uVar15 + (iVar26 + *(int *)(param_1 + 0x40)) * uVar4; + uVar15 = uVar15 + 1; + piVar27[iVar14] = iVar21; + } while (uVar15 != uVar4); + } + iVar26 = iVar26 + 1; + } while (iVar26 < *(int *)(param_1 + 0x44)); + } +LAB_001d738c: + iVar26 = *(int *)(param_1 + 0x34) - *(int *)(param_1 + 0x20); + iVar3 = ((*(int *)(param_1 + 0x34) + *(int *)(param_1 + 0x3c) + *(int *)(param_1 + 0x18)) - + *(int *)(param_1 + 0x20)) + -1; + if (iVar26 < 0) { + iVar26 = 0; + } + iVar7 = *(int *)(param_1 + 0x2c); + if (iVar3 < *(int *)(param_1 + 0x2c)) { + iVar7 = iVar3; + } + *(undefined4 *)(param_1 + 0xe4) = 0; + *(undefined4 *)(param_1 + 0xe0) = 0; + *(int *)(param_1 + 0xd8) = iVar26; + *(int *)(param_1 + 0xd4) = iVar26; + *(int *)(param_1 + 0xdc) = iVar7; + if ((*(long **)(param_1 + 0x128) != (long *)0x0) && + (pcVar12 = *(code **)(**(long **)(param_1 + 0x128) + 0x18), pcVar12 != FUN_001b4284)) { + (*pcVar12)(); + } + if ((*(long **)(param_1 + 0x108) != (long *)0x0) && + (pcVar12 = *(code **)(**(long **)(param_1 + 0x108) + 0x18), pcVar12 != FUN_001b4288)) { + (*pcVar12)(); + } + return *(undefined4 *)(param_1 + 0xd4); +LAB_001d75fc: + iVar26 = *(int *)(param_1 + 0x44); + goto LAB_001d7600; +} + + +================================================================== + +### FUNC 001d7740 (1468 bytes) name=_M_fill_insert + +/* std::vector + >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char* const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,undefined8 *param_2, + ulong param_3,undefined8 *param_4) + +{ + void *__dest; + undefined8 *puVar1; + void *__dest_00; + ulong uVar2; + ulong uVar3; + ulong uVar4; + undefined8 *puVar5; + ulong uVar6; + ulong uVar7; + undefined8 *puVar8; + undefined8 uVar9; + long lVar10; + size_t sVar11; + + if (param_3 == 0) { + return; + } + puVar8 = *(undefined8 **)(this + 8); + if (param_3 <= (ulong)(*(long *)(this + 0x10) - (long)puVar8 >> 3)) { + sVar11 = (long)puVar8 - (long)param_2; + uVar9 = *param_4; + uVar6 = (long)sVar11 >> 3; + if (param_3 < uVar6) { + puVar5 = puVar8 + -param_3; + puVar1 = puVar8; + if ((long)puVar8 - (long)puVar5 >> 3 != 0) { + memmove(puVar8,puVar5,(long)puVar8 - (long)puVar5); + puVar1 = *(undefined8 **)(this + 8); + } + sVar11 = (long)puVar5 - (long)param_2; + *(undefined8 **)(this + 8) = puVar1 + param_3; + if ((long)sVar11 >> 3 != 0) { + memmove((void *)((long)puVar8 - sVar11),param_2,sVar11); + } + if (param_2 == param_2 + param_3) { + return; + } + puVar8 = param_2 + 1; + uVar3 = (ulong)param_2 >> 3 & 1; + uVar7 = (ulong)((long)(param_2 + param_3) - (long)puVar8) >> 3; + uVar6 = uVar7 + 1; + uVar4 = uVar6; + if (uVar3 < uVar6) { + uVar4 = uVar3; + } + uVar3 = uVar6; + if ((uVar6 < 7) || (uVar3 = uVar4, puVar1 = param_2, uVar4 != 0)) { + *param_2 = uVar9; + if (uVar3 != 1) { + param_2[1] = uVar9; + puVar8 = param_2 + 2; + if (uVar3 != 2) { + param_2[2] = uVar9; + puVar8 = param_2 + 3; + if (uVar3 != 3) { + param_2[3] = uVar9; + puVar8 = param_2 + 4; + if (uVar3 != 4) { + param_2[4] = uVar9; + puVar8 = param_2 + 5; + if (uVar3 == 6) { + param_2[5] = uVar9; + puVar8 = param_2 + 6; + } + } + } + } + } + uVar4 = uVar3; + puVar1 = puVar8; + if (uVar6 == uVar3) { + return; + } + } + uVar3 = ((uVar6 - uVar4) - 2 >> 1) + 1; + if (uVar7 != uVar4) { + uVar7 = 0; + puVar8 = param_2 + uVar4; + do { + puVar8[1] = uVar9; + *puVar8 = uVar9; + uVar7 = uVar7 + 1; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar3); + puVar1 = puVar1 + uVar3 * 2; + if (uVar6 - uVar4 == uVar3 * 2) { + return; + } + } + *puVar1 = uVar9; + return; + } + param_3 = param_3 - uVar6; + puVar1 = puVar8; + if (param_3 == 0) goto LAB_001d7950; + uVar4 = (ulong)puVar8 >> 3 & 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + if (param_3 < 7) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar4 = param_3; + if (param_3 != 1) { + puVar8[1] = uVar9; + puVar1 = puVar8 + 2; + if (param_3 != 2) { + puVar8[2] = uVar9; + puVar1 = puVar8 + 3; + if (param_3 != 3) { + puVar8[3] = uVar9; + puVar1 = puVar8 + 4; + if (param_3 != 4) { + puVar8[4] = uVar9; + puVar1 = puVar8 + 5; + if (param_3 == 6) { + puVar8[5] = uVar9; + puVar1 = puVar8 + 6; + uVar4 = 6; + } + } + } + } + } +LAB_001d7924: + if (param_3 != uVar4) { + uVar3 = param_3 - uVar4; + if (param_3 - uVar4 != 1) goto LAB_001d7ad4; + *puVar1 = uVar9; + } + } + else { + if (uVar4 != 0) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar4 = 1; + goto LAB_001d7924; + } + uVar4 = 0; + uVar3 = param_3; +LAB_001d7ad4: + uVar2 = (uVar3 - 2 >> 1) + 1; + uVar7 = 0; + puVar5 = puVar8 + uVar4; + do { + puVar5[1] = uVar9; + *puVar5 = uVar9; + uVar7 = uVar7 + 1; + puVar5 = puVar5 + 2; + } while (uVar7 < uVar2); + if (uVar3 != uVar2 * 2) { + puVar1[uVar2 * 2] = uVar9; + } + } + puVar1 = *(undefined8 **)(this + 8); +LAB_001d7950: + puVar1 = puVar1 + param_3; + *(undefined8 **)(this + 8) = puVar1; + if (uVar6 != 0) { + memmove(puVar1,param_2,sVar11); + puVar1 = *(undefined8 **)(this + 8); + } + *(size_t *)(this + 8) = (long)puVar1 + sVar11; + if (puVar8 == param_2) { + return; + } + puVar1 = param_2 + 1; + uVar4 = (ulong)param_2 >> 3 & 1; + uVar3 = (ulong)((long)puVar8 - (long)puVar1) >> 3; + uVar6 = uVar3 + 1; + if (uVar6 < uVar4) { + uVar4 = uVar6; + } + uVar7 = uVar6; + if ((uVar6 < 7) || (uVar7 = uVar4, puVar8 = param_2, uVar4 != 0)) { + *param_2 = uVar9; + if (uVar7 != 1) { + param_2[1] = uVar9; + puVar1 = param_2 + 2; + if (uVar7 != 2) { + param_2[2] = uVar9; + puVar1 = param_2 + 3; + if (uVar7 != 3) { + param_2[3] = uVar9; + puVar1 = param_2 + 4; + if (uVar7 != 4) { + param_2[4] = uVar9; + puVar1 = param_2 + 5; + if (uVar7 == 6) { + param_2[5] = uVar9; + puVar1 = param_2 + 6; + } + } + } + } + } + uVar4 = uVar7; + puVar8 = puVar1; + if (uVar6 == uVar7) { + return; + } + } + uVar7 = ((uVar6 - uVar4) - 2 >> 1) + 1; + if (uVar3 != uVar4) { + uVar3 = 0; + puVar1 = param_2 + uVar4; + do { + puVar1[1] = uVar9; + *puVar1 = uVar9; + uVar3 = uVar3 + 1; + puVar1 = puVar1 + 2; + } while (uVar3 < uVar7); + puVar8 = puVar8 + uVar7 * 2; + if (uVar6 - uVar4 == uVar7 * 2) { + return; + } + } + *puVar8 = uVar9; + return; + } + lVar10 = *(long *)this; + uVar6 = (long)puVar8 - lVar10 >> 3; + if (0x1fffffffffffffff - uVar6 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar4 = uVar6; + if (uVar6 < param_3) { + uVar4 = param_3; + } + uVar4 = uVar4 + uVar6; + if ((uVar4 < uVar6) || (0x1fffffffffffffff < uVar4)) { + lVar10 = (long)param_2 - lVar10; + uVar4 = 0xfffffffffffffff8; +LAB_001d7b0c: + __dest_00 = operator_new(uVar4); + } + else { + lVar10 = (long)param_2 - lVar10; + if (uVar4 != 0) { + uVar4 = uVar4 * 8; + goto LAB_001d7b0c; + } + uVar4 = 0; + __dest_00 = (void *)0x0; + } + puVar8 = (undefined8 *)((long)__dest_00 + lVar10); + uVar9 = *param_4; + uVar6 = (ulong)puVar8 >> 3 & 1; + if (param_3 < uVar6) { + uVar6 = param_3; + } + if (param_3 < 7) { + *(undefined8 *)((long)__dest_00 + lVar10) = uVar9; + puVar1 = puVar8 + 1; + uVar6 = param_3; + if (1 < param_3) { + puVar8[1] = uVar9; + puVar1 = puVar8 + 2; + if (param_3 != 2) { + puVar8[2] = uVar9; + puVar1 = puVar8 + 3; + if (param_3 != 3) { + puVar8[3] = uVar9; + puVar1 = puVar8 + 4; + if (param_3 != 4) { + puVar8[4] = uVar9; + puVar1 = puVar8 + 5; + if (param_3 == 6) { + puVar8[5] = uVar9; + puVar1 = puVar8 + 6; + } + } + } + } + } +LAB_001d7b90: + if (param_3 == uVar6) goto LAB_001d7bb8; + uVar3 = param_3 - uVar6; + puVar8 = puVar1; + if (param_3 - uVar6 != 1) goto LAB_001d7c30; + } + else { + if (uVar6 != 0) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar6 = 1; + goto LAB_001d7b90; + } + uVar6 = 0; + uVar3 = param_3; +LAB_001d7c30: + uVar2 = (uVar3 - 2 >> 1) + 1; + uVar7 = 0; + puVar1 = (undefined8 *)((long)__dest_00 + lVar10 + uVar6 * 8); + do { + puVar1[1] = uVar9; + *puVar1 = uVar9; + uVar7 = uVar7 + 1; + puVar1 = puVar1 + 2; + } while (uVar7 < uVar2); + puVar1 = puVar8 + uVar2 * 2; + if (uVar3 == uVar2 * 2) goto LAB_001d7bb8; + } + *puVar1 = uVar9; +LAB_001d7bb8: + sVar11 = (long)param_2 - (long)*(void **)this; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest_00,*(void **)this,sVar11); + } + __dest = (void *)((long)__dest_00 + sVar11 + param_3 * 8); + sVar11 = *(long *)(this + 8) - (long)param_2; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest,param_2,sVar11); + } + if (*(void **)this != (void *)0x0) { + operator_delete(*(void **)this); + } + *(void **)this = __dest_00; + *(size_t *)(this + 8) = (long)__dest + sVar11; + *(ulong *)(this + 0x10) = (long)__dest_00 + uVar4; + return; +} + + +================================================================== + +### FUNC 001d7cfc (676 bytes) name=FUN_001d7cfc + +void FUN_001d7cfc(uint *param_1,long *param_2, + vector> *param_3) + +{ + uint uVar1; + int iVar2; + char cVar3; + bool bVar4; + int iVar5; + void *__dest; + long lVar6; + int iVar7; + ulong uVar8; + long lVar9; + uint uVar10; + ulong uVar11; + int iVar12; + uint uVar13; + long lVar14; + long lVar15; + long lVar16; + long lVar17; + float fVar18; + double dVar19; + ulong local_18; + uint *local_10; + undefined4 local_8; + undefined4 local_4; + + local_8 = 0; + local_4 = 0; + local_18 = CONCAT44(local_18._4_4_,0x1010000); + local_10 = param_1; + iVar5 = cv::countNonZero((_InputArray *)&local_18); + uVar10 = *param_1; + if (iVar5 == 0) { + iVar5 = 1; + } + uVar1 = uVar10 & 0xfff; + bVar4 = (uVar10 & 0xfff) != 0; + if (((bVar4) && (uVar1 != 4)) && (1 < uVar1 - 5)) { + local_18 = 0; + local_10 = (uint *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_18,0x47); + memcpy(__dest,"ktype == CV_8U || ktype == CV_32S || ktype == CV_32F || ktype == CV_64F",0x47); + cv::error(-0xd7,(String *)&local_18, + "void cv::preprocess2DKernel(const cv::Mat&, std::vector >&, std::vector&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf0d); + cv::String::deallocate((String *)&local_18); + } + uVar8 = (ulong)iVar5; + local_18 = 0; + uVar11 = param_2[1] - *param_2 >> 3; + if (uVar11 < uVar8) { + FUN_001a8e0c(param_2,param_2[1],uVar8 - uVar11,(_InputArray *)&local_18); + } + else if (uVar8 < uVar11) { + param_2[1] = *param_2 + uVar8 * 8; + } + lVar16 = *(long *)param_3; + uVar11 = (long)iVar5 * + (long)(int)((uVar10 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar10 & 7) << 1)) & 3)); + uVar8 = *(long *)(param_3 + 8) - lVar16; + local_18 = local_18 & 0xffffffffffffff00; + if (uVar8 <= uVar11 && uVar11 - uVar8 != 0) { + std::vector>::_M_fill_insert + (param_3,*(long *)(param_3 + 8),uVar11 - uVar8,(_InputArray *)&local_18); + lVar16 = *(long *)param_3; + } + else if (uVar8 > uVar11) { + *(ulong *)(param_3 + 8) = lVar16 + uVar11; + } + uVar10 = param_1[2]; + if (0 < (int)uVar10) { + lVar17 = 0; + uVar13 = param_1[3]; + uVar8 = 0; + do { + iVar5 = (int)lVar17; + lVar14 = *(long *)(param_1 + 4) + lVar17 * **(long **)(param_1 + 0x12); + if (0 < (int)uVar13) { + lVar9 = 0; + do { + iVar12 = (int)uVar8; + iVar7 = (int)lVar9; + if (bVar4) { + if (uVar1 == 4) { + iVar2 = *(int *)(lVar14 + lVar9 * 4); + if (iVar2 != 0) { + lVar15 = *param_2; + lVar6 = (long)iVar12 * 8; + uVar8 = (ulong)(iVar12 + 1); + *(int *)(lVar15 + lVar6) = iVar7; + *(int *)(lVar15 + lVar6 + 4) = iVar5; + *(int *)(lVar16 + (long)iVar12 * 4) = iVar2; + uVar13 = param_1[3]; + } + } + else if (uVar1 == 5) { + fVar18 = *(float *)(lVar14 + lVar9 * 4); + if (fVar18 != 0.0) { + lVar15 = *param_2; + lVar6 = (long)iVar12 * 8; + uVar8 = (ulong)(iVar12 + 1); + *(int *)(lVar15 + lVar6) = iVar7; + *(int *)(lVar15 + lVar6 + 4) = iVar5; + *(float *)(lVar16 + (long)iVar12 * 4) = fVar18; + } + } + else { + dVar19 = *(double *)(lVar14 + lVar9 * 8); + if (dVar19 != 0.0) { + lVar6 = *param_2; + uVar11 = -(uVar8 >> 0x1f) & 0xfffffff800000000 | uVar8 << 3; + uVar8 = (ulong)(iVar12 + 1); + *(int *)(lVar6 + uVar11) = iVar7; + *(int *)(lVar6 + uVar11 + 4) = iVar5; + *(double *)(lVar16 + uVar11) = dVar19; + } + } + } + else { + cVar3 = *(char *)(lVar14 + lVar9); + if (cVar3 != '\0') { + lVar6 = *param_2; + lVar15 = (long)iVar12 * 8; + uVar8 = (ulong)(iVar12 + 1); + *(int *)(lVar6 + lVar15) = iVar7; + *(int *)(lVar6 + lVar15 + 4) = iVar5; + *(char *)(lVar16 + iVar12) = cVar3; + uVar13 = param_1[3]; + } + } + lVar9 = lVar9 + 1; + } while (iVar7 + 1 < (int)uVar13); + uVar10 = param_1[2]; + } + lVar17 = lVar17 + 1; + } while (iVar5 + 1 < (int)uVar10); + } + return; +} + + +================================================================== + +### FUNC 001d7fb4 (712 bytes) name=FUN_001d7fb4 + +undefined8 * FUN_001d7fb4(undefined8 *param_1,uint *param_2,undefined4 *param_3,undefined8 *param_4) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined4 *puVar9; + char *pcVar10; + undefined8 *puVar11; + undefined8 uVar12; + ulong uVar13; + ulong uVar14; + void *__src; + long lVar15; + size_t sVar16; + void *__dest_00; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar8 = operator_new(0x70); + uVar12 = *param_4; + *(undefined4 *)(puVar8 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar8 + 0xc) = 0xffffffff; + *puVar8 = &PTR_FUN_004f3eb0; + puVar8[3] = 0; + puVar8[4] = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + puVar8[9] = 0; + puVar9 = *(undefined4 **)(param_2 + 0x10); + puVar8[10] = 0; + puVar8[0xb] = 0; + *(undefined4 *)(puVar8 + 2) = uVar2; + *(undefined4 *)((long)puVar8 + 0x14) = uVar3; + uVar2 = puVar9[1]; + *(undefined4 *)((long)puVar8 + 0xc) = *puVar9; + *(undefined4 *)(puVar8 + 1) = uVar2; + uVar4 = *param_2; + puVar8[0xc] = uVar12; + if ((uVar4 & 0xfff) != 6) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar7 = s__kernel_type______DataType___00443558._24_8_; + uVar6 = s__kernel_type______DataType___00443558._16_8_; + uVar5 = s__kernel_type______DataType___00443558._8_8_; + uVar12 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar5; + *(undefined8 *)(pcVar10 + 0x10) = uVar6; + *(undefined8 *)(pcVar10 + 0x18) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = short int; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_10); + } + FUN_001d7cfc(param_2,puVar8 + 3,puVar8 + 6); + __src = (void *)puVar8[10]; + uVar13 = (long)(puVar8[4] - puVar8[3]) >> 3; + lVar15 = (long)__src - puVar8[9]; + uVar14 = lVar15 >> 3; + if (uVar13 <= uVar14) { + if (uVar13 < uVar14) { + puVar8[10] = puVar8[9] + (puVar8[4] - puVar8[3]); + } + goto LAB_001d8114; + } + uVar13 = uVar13 - uVar14; + if (uVar13 == 0) goto LAB_001d8114; + if (uVar13 <= (ulong)(puVar8[0xb] - (long)__src >> 3)) { + memset(__src,0,uVar13 * 8); + puVar8[10] = puVar8[10] + uVar13 * 8; + goto LAB_001d8114; + } + if (0x1fffffffffffffff - uVar14 < uVar13) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar13; + if (uVar13 < uVar14) { + uVar1 = uVar14; + } + uVar1 = uVar1 + uVar14; + if ((uVar1 < uVar14) || (0x1fffffffffffffff < uVar1)) { + uVar14 = 0xfffffffffffffff8; +LAB_001d8234: + __dest_00 = operator_new(uVar14); + } + else { + uVar14 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar14 = uVar1 * 8; + goto LAB_001d8234; + } + } + memset((void *)((long)__dest_00 + lVar15),0,uVar13 * 8); + sVar16 = (long)__src - (long)puVar8[9]; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest_00,(void *)puVar8[9],sVar16); + } + __dest = (void *)((long)__dest_00 + uVar13 * 8 + sVar16); + sVar16 = puVar8[10] - (long)__src; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest,__src,sVar16); + } + if ((void *)puVar8[9] != (void *)0x0) { + operator_delete((void *)puVar8[9]); + } + puVar8[9] = __dest_00; + puVar8[10] = (long)__dest + sVar16; + puVar8[0xb] = (long)__dest_00 + uVar14; +LAB_001d8114: + puVar11 = operator_new(0x20); + puVar11[2] = puVar8; + *(undefined4 *)(puVar11 + 1) = 1; + *puVar11 = &PTR_FUN_004f4780; + *param_1 = puVar11; + param_1[1] = puVar8; + return param_1; +} + + +================================================================== + +### FUNC 001d82c4 (712 bytes) name=FUN_001d82c4 + +undefined8 * FUN_001d82c4(undefined8 *param_1,uint *param_2,undefined4 *param_3,undefined8 *param_4) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined4 *puVar9; + char *pcVar10; + undefined8 *puVar11; + undefined8 uVar12; + ulong uVar13; + ulong uVar14; + void *__src; + long lVar15; + size_t sVar16; + void *__dest_00; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar8 = operator_new(0x70); + uVar12 = *param_4; + *(undefined4 *)(puVar8 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar8 + 0xc) = 0xffffffff; + *puVar8 = &PTR_FUN_004f3e20; + puVar8[3] = 0; + puVar8[4] = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + puVar8[9] = 0; + puVar9 = *(undefined4 **)(param_2 + 0x10); + puVar8[10] = 0; + puVar8[0xb] = 0; + *(undefined4 *)(puVar8 + 2) = uVar2; + *(undefined4 *)((long)puVar8 + 0x14) = uVar3; + uVar2 = puVar9[1]; + *(undefined4 *)((long)puVar8 + 0xc) = *puVar9; + *(undefined4 *)(puVar8 + 1) = uVar2; + uVar4 = *param_2; + puVar8[0xc] = uVar12; + if ((uVar4 & 0xfff) != 6) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar7 = s__kernel_type______DataType___00443558._24_8_; + uVar6 = s__kernel_type______DataType___00443558._16_8_; + uVar5 = s__kernel_type______DataType___00443558._8_8_; + uVar12 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar5; + *(undefined8 *)(pcVar10 + 0x10) = uVar6; + *(undefined8 *)(pcVar10 + 0x18) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = short unsigned int; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_10); + } + FUN_001d7cfc(param_2,puVar8 + 3,puVar8 + 6); + __src = (void *)puVar8[10]; + uVar13 = (long)(puVar8[4] - puVar8[3]) >> 3; + lVar15 = (long)__src - puVar8[9]; + uVar14 = lVar15 >> 3; + if (uVar13 <= uVar14) { + if (uVar13 < uVar14) { + puVar8[10] = puVar8[9] + (puVar8[4] - puVar8[3]); + } + goto LAB_001d8424; + } + uVar13 = uVar13 - uVar14; + if (uVar13 == 0) goto LAB_001d8424; + if (uVar13 <= (ulong)(puVar8[0xb] - (long)__src >> 3)) { + memset(__src,0,uVar13 * 8); + puVar8[10] = puVar8[10] + uVar13 * 8; + goto LAB_001d8424; + } + if (0x1fffffffffffffff - uVar14 < uVar13) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar13; + if (uVar13 < uVar14) { + uVar1 = uVar14; + } + uVar1 = uVar1 + uVar14; + if ((uVar1 < uVar14) || (0x1fffffffffffffff < uVar1)) { + uVar14 = 0xfffffffffffffff8; +LAB_001d8544: + __dest_00 = operator_new(uVar14); + } + else { + uVar14 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar14 = uVar1 * 8; + goto LAB_001d8544; + } + } + memset((void *)((long)__dest_00 + lVar15),0,uVar13 * 8); + sVar16 = (long)__src - (long)puVar8[9]; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest_00,(void *)puVar8[9],sVar16); + } + __dest = (void *)((long)__dest_00 + uVar13 * 8 + sVar16); + sVar16 = puVar8[10] - (long)__src; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest,__src,sVar16); + } + if ((void *)puVar8[9] != (void *)0x0) { + operator_delete((void *)puVar8[9]); + } + puVar8[9] = __dest_00; + puVar8[10] = (long)__dest + sVar16; + puVar8[0xb] = (long)__dest_00 + uVar14; +LAB_001d8424: + puVar11 = operator_new(0x20); + puVar11[2] = puVar8; + *(undefined4 *)(puVar11 + 1) = 1; + *puVar11 = &PTR_FUN_004f46f0; + *param_1 = puVar11; + param_1[1] = puVar8; + return param_1; +} + + +================================================================== + +### FUNC 001d85d4 (716 bytes) name=FUN_001d85d4 + +undefined8 * FUN_001d85d4(undefined8 *param_1,uint *param_2,undefined4 *param_3,double *param_4) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + undefined4 *puVar10; + char *pcVar11; + undefined8 *puVar12; + ulong uVar13; + ulong uVar14; + void *__src; + long lVar15; + size_t sVar16; + void *__dest_00; + double dVar17; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar9 = operator_new(0x68); + dVar17 = *param_4; + *(undefined4 *)(puVar9 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar9 + 0xc) = 0xffffffff; + *puVar9 = &PTR_FUN_004f3e50; + puVar9[3] = 0; + puVar9[4] = 0; + puVar9[5] = 0; + puVar9[6] = 0; + puVar9[7] = 0; + puVar9[8] = 0; + puVar9[9] = 0; + puVar10 = *(undefined4 **)(param_2 + 0x10); + puVar9[10] = 0; + puVar9[0xb] = 0; + *(undefined4 *)(puVar9 + 2) = uVar2; + *(undefined4 *)((long)puVar9 + 0x14) = uVar3; + uVar2 = puVar10[1]; + *(undefined4 *)((long)puVar9 + 0xc) = *puVar10; + *(undefined4 *)(puVar9 + 1) = uVar2; + uVar4 = *param_2; + *(float *)(puVar9 + 0xc) = (float)dVar17; + if ((uVar4 & 0xfff) != 5) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar8 = s__kernel_type______DataType___00443558._24_8_; + uVar7 = s__kernel_type______DataType___00443558._16_8_; + uVar6 = s__kernel_type______DataType___00443558._8_8_; + uVar5 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar11 = uVar5; + *(undefined8 *)(pcVar11 + 8) = uVar6; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_10, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = short int; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_10); + } + FUN_001d7cfc(param_2,puVar9 + 3,puVar9 + 6); + __src = (void *)puVar9[10]; + uVar13 = (long)(puVar9[4] - puVar9[3]) >> 3; + lVar15 = (long)__src - puVar9[9]; + uVar14 = lVar15 >> 3; + if (uVar13 <= uVar14) { + if (uVar13 < uVar14) { + puVar9[10] = puVar9[9] + (puVar9[4] - puVar9[3]); + } + goto LAB_001d8738; + } + uVar13 = uVar13 - uVar14; + if (uVar13 == 0) goto LAB_001d8738; + if (uVar13 <= (ulong)(puVar9[0xb] - (long)__src >> 3)) { + memset(__src,0,uVar13 * 8); + puVar9[10] = puVar9[10] + uVar13 * 8; + goto LAB_001d8738; + } + if (0x1fffffffffffffff - uVar14 < uVar13) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar13; + if (uVar13 < uVar14) { + uVar1 = uVar14; + } + uVar1 = uVar1 + uVar14; + if ((uVar1 < uVar14) || (0x1fffffffffffffff < uVar1)) { + uVar14 = 0xfffffffffffffff8; +LAB_001d8858: + __dest_00 = operator_new(uVar14); + } + else { + uVar14 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar14 = uVar1 * 8; + goto LAB_001d8858; + } + } + memset((void *)((long)__dest_00 + lVar15),0,uVar13 * 8); + sVar16 = (long)__src - (long)puVar9[9]; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest_00,(void *)puVar9[9],sVar16); + } + __dest = (void *)((long)__dest_00 + uVar13 * 8 + sVar16); + sVar16 = puVar9[10] - (long)__src; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest,__src,sVar16); + } + if ((void *)puVar9[9] != (void *)0x0) { + operator_delete((void *)puVar9[9]); + } + puVar9[9] = __dest_00; + puVar9[10] = (long)__dest + sVar16; + puVar9[0xb] = (long)__dest_00 + uVar14; +LAB_001d8738: + puVar12 = operator_new(0x20); + puVar12[2] = puVar9; + *(undefined4 *)(puVar12 + 1) = 1; + *puVar12 = &PTR_FUN_004f4720; + *param_1 = puVar12; + param_1[1] = puVar9; + return param_1; +} + + +================================================================== + +### FUNC 001d88e8 (716 bytes) name=FUN_001d88e8 + +undefined8 * FUN_001d88e8(undefined8 *param_1,uint *param_2,undefined4 *param_3,double *param_4) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + undefined4 *puVar10; + char *pcVar11; + undefined8 *puVar12; + ulong uVar13; + ulong uVar14; + void *__src; + long lVar15; + size_t sVar16; + void *__dest_00; + double dVar17; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar9 = operator_new(0x68); + dVar17 = *param_4; + *(undefined4 *)(puVar9 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar9 + 0xc) = 0xffffffff; + *puVar9 = &PTR_FUN_004f3ee0; + puVar9[3] = 0; + puVar9[4] = 0; + puVar9[5] = 0; + puVar9[6] = 0; + puVar9[7] = 0; + puVar9[8] = 0; + puVar9[9] = 0; + puVar10 = *(undefined4 **)(param_2 + 0x10); + puVar9[10] = 0; + puVar9[0xb] = 0; + *(undefined4 *)(puVar9 + 2) = uVar2; + *(undefined4 *)((long)puVar9 + 0x14) = uVar3; + uVar2 = puVar10[1]; + *(undefined4 *)((long)puVar9 + 0xc) = *puVar10; + *(undefined4 *)(puVar9 + 1) = uVar2; + uVar4 = *param_2; + *(float *)(puVar9 + 0xc) = (float)dVar17; + if ((uVar4 & 0xfff) != 5) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar8 = s__kernel_type______DataType___00443558._24_8_; + uVar7 = s__kernel_type______DataType___00443558._16_8_; + uVar6 = s__kernel_type______DataType___00443558._8_8_; + uVar5 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar11 = uVar5; + *(undefined8 *)(pcVar11 + 8) = uVar6; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_10, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = float; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_10); + } + FUN_001d7cfc(param_2,puVar9 + 3,puVar9 + 6); + __src = (void *)puVar9[10]; + uVar13 = (long)(puVar9[4] - puVar9[3]) >> 3; + lVar15 = (long)__src - puVar9[9]; + uVar14 = lVar15 >> 3; + if (uVar13 <= uVar14) { + if (uVar13 < uVar14) { + puVar9[10] = puVar9[9] + (puVar9[4] - puVar9[3]); + } + goto LAB_001d8a4c; + } + uVar13 = uVar13 - uVar14; + if (uVar13 == 0) goto LAB_001d8a4c; + if (uVar13 <= (ulong)(puVar9[0xb] - (long)__src >> 3)) { + memset(__src,0,uVar13 * 8); + puVar9[10] = puVar9[10] + uVar13 * 8; + goto LAB_001d8a4c; + } + if (0x1fffffffffffffff - uVar14 < uVar13) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar13; + if (uVar13 < uVar14) { + uVar1 = uVar14; + } + uVar1 = uVar1 + uVar14; + if ((uVar1 < uVar14) || (0x1fffffffffffffff < uVar1)) { + uVar14 = 0xfffffffffffffff8; +LAB_001d8b6c: + __dest_00 = operator_new(uVar14); + } + else { + uVar14 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar14 = uVar1 * 8; + goto LAB_001d8b6c; + } + } + memset((void *)((long)__dest_00 + lVar15),0,uVar13 * 8); + sVar16 = (long)__src - (long)puVar9[9]; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest_00,(void *)puVar9[9],sVar16); + } + __dest = (void *)((long)__dest_00 + uVar13 * 8 + sVar16); + sVar16 = puVar9[10] - (long)__src; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest,__src,sVar16); + } + if ((void *)puVar9[9] != (void *)0x0) { + operator_delete((void *)puVar9[9]); + } + puVar9[9] = __dest_00; + puVar9[10] = (long)__dest + sVar16; + puVar9[0xb] = (long)__dest_00 + uVar14; +LAB_001d8a4c: + puVar12 = operator_new(0x20); + puVar12[2] = puVar9; + *(undefined4 *)(puVar12 + 1) = 1; + *puVar12 = &DAT_004f47b0; + *param_1 = puVar12; + param_1[1] = puVar9; + return param_1; +} + + +================================================================== + +### FUNC 001d8bfc (712 bytes) name=FUN_001d8bfc + +undefined8 * FUN_001d8bfc(undefined8 *param_1,uint *param_2,undefined4 *param_3,undefined8 *param_4) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined4 *puVar9; + char *pcVar10; + undefined8 *puVar11; + undefined8 uVar12; + ulong uVar13; + ulong uVar14; + void *__src; + long lVar15; + size_t sVar16; + void *__dest_00; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar8 = operator_new(0x70); + uVar12 = *param_4; + *(undefined4 *)(puVar8 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar8 + 0xc) = 0xffffffff; + *puVar8 = &PTR_FUN_004f3f10; + puVar8[3] = 0; + puVar8[4] = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + puVar8[9] = 0; + puVar9 = *(undefined4 **)(param_2 + 0x10); + puVar8[10] = 0; + puVar8[0xb] = 0; + *(undefined4 *)(puVar8 + 2) = uVar2; + *(undefined4 *)((long)puVar8 + 0x14) = uVar3; + uVar2 = puVar9[1]; + *(undefined4 *)((long)puVar8 + 0xc) = *puVar9; + *(undefined4 *)(puVar8 + 1) = uVar2; + uVar4 = *param_2; + puVar8[0xc] = uVar12; + if ((uVar4 & 0xfff) != 6) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar7 = s__kernel_type______DataType___00443558._24_8_; + uVar6 = s__kernel_type______DataType___00443558._16_8_; + uVar5 = s__kernel_type______DataType___00443558._8_8_; + uVar12 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar5; + *(undefined8 *)(pcVar10 + 0x10) = uVar6; + *(undefined8 *)(pcVar10 + 0x18) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = double; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_10); + } + FUN_001d7cfc(param_2,puVar8 + 3,puVar8 + 6); + __src = (void *)puVar8[10]; + uVar13 = (long)(puVar8[4] - puVar8[3]) >> 3; + lVar15 = (long)__src - puVar8[9]; + uVar14 = lVar15 >> 3; + if (uVar13 <= uVar14) { + if (uVar13 < uVar14) { + puVar8[10] = puVar8[9] + (puVar8[4] - puVar8[3]); + } + goto LAB_001d8d5c; + } + uVar13 = uVar13 - uVar14; + if (uVar13 == 0) goto LAB_001d8d5c; + if (uVar13 <= (ulong)(puVar8[0xb] - (long)__src >> 3)) { + memset(__src,0,uVar13 * 8); + puVar8[10] = puVar8[10] + uVar13 * 8; + goto LAB_001d8d5c; + } + if (0x1fffffffffffffff - uVar14 < uVar13) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar13; + if (uVar13 < uVar14) { + uVar1 = uVar14; + } + uVar1 = uVar1 + uVar14; + if ((uVar1 < uVar14) || (0x1fffffffffffffff < uVar1)) { + uVar14 = 0xfffffffffffffff8; +LAB_001d8e7c: + __dest_00 = operator_new(uVar14); + } + else { + uVar14 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar14 = uVar1 * 8; + goto LAB_001d8e7c; + } + } + memset((void *)((long)__dest_00 + lVar15),0,uVar13 * 8); + sVar16 = (long)__src - (long)puVar8[9]; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest_00,(void *)puVar8[9],sVar16); + } + __dest = (void *)((long)__dest_00 + uVar13 * 8 + sVar16); + sVar16 = puVar8[10] - (long)__src; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest,__src,sVar16); + } + if ((void *)puVar8[9] != (void *)0x0) { + operator_delete((void *)puVar8[9]); + } + puVar8[9] = __dest_00; + puVar8[10] = (long)__dest + sVar16; + puVar8[0xb] = (long)__dest_00 + uVar14; +LAB_001d8d5c: + puVar11 = operator_new(0x20); + puVar11[2] = puVar8; + *(undefined4 *)(puVar11 + 1) = 1; + *puVar11 = &PTR_FUN_004f47e0; + *param_1 = puVar11; + param_1[1] = puVar8; + return param_1; +} + + +================================================================== + +### FUNC 001d8f0c (716 bytes) name=FUN_001d8f0c + +undefined8 * FUN_001d8f0c(undefined8 *param_1,uint *param_2,undefined4 *param_3,double *param_4) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + undefined4 *puVar10; + char *pcVar11; + undefined8 *puVar12; + ulong uVar13; + ulong uVar14; + void *__src; + long lVar15; + size_t sVar16; + void *__dest_00; + double dVar17; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar9 = operator_new(0x68); + dVar17 = *param_4; + *(undefined4 *)(puVar9 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar9 + 0xc) = 0xffffffff; + *puVar9 = &PTR_FUN_004f3df0; + puVar9[3] = 0; + puVar9[4] = 0; + puVar9[5] = 0; + puVar9[6] = 0; + puVar9[7] = 0; + puVar9[8] = 0; + puVar9[9] = 0; + puVar10 = *(undefined4 **)(param_2 + 0x10); + puVar9[10] = 0; + puVar9[0xb] = 0; + *(undefined4 *)(puVar9 + 2) = uVar2; + *(undefined4 *)((long)puVar9 + 0x14) = uVar3; + uVar2 = puVar10[1]; + *(undefined4 *)((long)puVar9 + 0xc) = *puVar10; + *(undefined4 *)(puVar9 + 1) = uVar2; + uVar4 = *param_2; + *(float *)(puVar9 + 0xc) = (float)dVar17; + if ((uVar4 & 0xfff) != 5) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar8 = s__kernel_type______DataType___00443558._24_8_; + uVar7 = s__kernel_type______DataType___00443558._16_8_; + uVar6 = s__kernel_type______DataType___00443558._8_8_; + uVar5 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar11 = uVar5; + *(undefined8 *)(pcVar11 + 8) = uVar6; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_10, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = short unsigned int; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_10); + } + FUN_001d7cfc(param_2,puVar9 + 3,puVar9 + 6); + __src = (void *)puVar9[10]; + uVar13 = (long)(puVar9[4] - puVar9[3]) >> 3; + lVar15 = (long)__src - puVar9[9]; + uVar14 = lVar15 >> 3; + if (uVar13 <= uVar14) { + if (uVar13 < uVar14) { + puVar9[10] = puVar9[9] + (puVar9[4] - puVar9[3]); + } + goto LAB_001d9070; + } + uVar13 = uVar13 - uVar14; + if (uVar13 == 0) goto LAB_001d9070; + if (uVar13 <= (ulong)(puVar9[0xb] - (long)__src >> 3)) { + memset(__src,0,uVar13 * 8); + puVar9[10] = puVar9[10] + uVar13 * 8; + goto LAB_001d9070; + } + if (0x1fffffffffffffff - uVar14 < uVar13) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar13; + if (uVar13 < uVar14) { + uVar1 = uVar14; + } + uVar1 = uVar1 + uVar14; + if ((uVar1 < uVar14) || (0x1fffffffffffffff < uVar1)) { + uVar14 = 0xfffffffffffffff8; +LAB_001d9190: + __dest_00 = operator_new(uVar14); + } + else { + uVar14 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar14 = uVar1 * 8; + goto LAB_001d9190; + } + } + memset((void *)((long)__dest_00 + lVar15),0,uVar13 * 8); + sVar16 = (long)__src - (long)puVar9[9]; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest_00,(void *)puVar9[9],sVar16); + } + __dest = (void *)((long)__dest_00 + uVar13 * 8 + sVar16); + sVar16 = puVar9[10] - (long)__src; + if ((long)sVar16 >> 3 != 0) { + memmove(__dest,__src,sVar16); + } + if ((void *)puVar9[9] != (void *)0x0) { + operator_delete((void *)puVar9[9]); + } + puVar9[9] = __dest_00; + puVar9[10] = (long)__dest + sVar16; + puVar9[0xb] = (long)__dest_00 + uVar14; +LAB_001d9070: + puVar12 = operator_new(0x20); + puVar12[2] = puVar9; + *(undefined4 *)(puVar12 + 1) = 1; + *puVar12 = &PTR_FUN_004f46c0; + *param_1 = puVar12; + param_1[1] = puVar9; + return param_1; +} + + +================================================================== + +### FUNC 001d9220 (4676 bytes) name=FUN_001d9220 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +long * FUN_001d9220(long *param_1,double param_2,uint param_3,uint param_4,_InputArray *param_5, + int *param_6,uint param_7) + +{ + int *piVar1; + long *plVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + undefined4 uVar7; + char cVar8; + long lVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + bool bVar16; + bool bVar17; + bool bVar18; + int iVar19; + char *pcVar20; + undefined8 *puVar21; + undefined8 *puVar22; + long *plVar23; + Mat *pMVar24; + uint uVar25; + ulong uVar26; + ulong uVar27; + int iVar28; + double dVar29; + double local_208 [2]; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 local_1e0; + undefined8 local_1d8; + long local_1d0; + long lStack_1c8; + long local_1c0; + long lStack_1b8; + long local_1b0; + long lStack_1a8; + long local_1a0; + long lStack_198; + long local_190; + long lStack_188; + long local_180; + long lStack_178; + undefined8 local_168; + undefined8 local_160; + String aSStack_158 [16]; + undefined8 local_148; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + undefined4 local_5c; + int local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_208[0] = param_2; + iVar19 = cv::_InputArray::kind(param_5); + if (iVar19 == 0x10000) { + pMVar24 = *(Mat **)(param_5 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar24; + local_5c = *(undefined4 *)(pMVar24 + 4); + local_58 = *(int *)(pMVar24 + 8); + local_54 = *(undefined4 *)(pMVar24 + 0xc); + local_50 = *(undefined8 *)(pMVar24 + 0x10); + local_48 = *(undefined8 *)(pMVar24 + 0x18); + local_40 = *(undefined8 *)(pMVar24 + 0x20); + local_38 = *(undefined8 *)(pMVar24 + 0x28); + local_30 = *(undefined8 *)(pMVar24 + 0x30); + local_28 = *(long *)(pMVar24 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar24 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar24 + 0x48); + local_8 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + } + else { + local_5c = 0; + cv::Mat::copySize((Mat *)&local_60,pMVar24); + } + } + else { + cv::_InputArray::getMat_((int)param_5); + } + uVar3 = param_3 & 7; + uVar4 = param_4 & 7; + if (((param_3 >> 3 & 0x1ff) + 1 == (param_4 >> 3 & 0x1ff) + 1) && (uVar3 <= uVar4)) { + iVar19 = *param_6; + iVar28 = param_6[1]; + iVar5 = local_20[1]; + iVar6 = *local_20; + } + else { + local_168 = 0; + local_160 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_168,0x2c); + uVar7 = s_cn____CV_MAT_CN_dstType_____ddep_00443580._40_4_; + uVar13 = s_cn____CV_MAT_CN_dstType_____ddep_00443580._24_8_; + uVar12 = s_cn____CV_MAT_CN_dstType_____ddep_00443580._16_8_; + uVar11 = s_cn____CV_MAT_CN_dstType_____ddep_00443580._8_8_; + uVar10 = s_cn____CV_MAT_CN_dstType_____ddep_00443580._0_8_; + *(undefined8 *)(pcVar20 + 0x20) = s_cn____CV_MAT_CN_dstType_____ddep_00443580._32_8_; + *(undefined4 *)(pcVar20 + 0x28) = uVar7; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_168, + "cv::Ptr cv::getLinearFilter(int, int, cv::InputArray, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x1167); + cv::String::deallocate((String *)&local_168); + iVar19 = *param_6; + iVar28 = param_6[1]; + iVar5 = local_20[1]; + iVar6 = *local_20; + } + if (iVar19 == -1) { + iVar19 = iVar5 / 2; + } + if (iVar28 == -1) { + iVar28 = iVar6 / 2; + } + if ((((iVar19 < 0) || (iVar5 <= iVar19)) || (iVar6 <= iVar28)) || (iVar28 < 0)) { + local_148 = 0; + local_140 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_148,0x34); + uVar15 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._40_8_; + uVar14 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._32_8_; + uVar13 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._24_8_; + uVar12 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._16_8_; + uVar11 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._8_8_; + uVar10 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._0_8_; + *(undefined4 *)(pcVar20 + 0x30) = s_anchor_inside_Rect_0__0__ksize_w_004435b0._48_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + *(undefined8 *)(pcVar20 + 0x20) = uVar14; + *(undefined8 *)(pcVar20 + 0x28) = uVar15; + cv::error(-0xd7,(String *)&local_148,"cv::Point cv::normalizeAnchor(cv::Point, cv::Size)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filterengine.hpp",0x16b); + cv::String::deallocate((String *)&local_148); + } + *param_6 = iVar19; + param_6[1] = iVar28; + bVar16 = uVar4 == 6; + if ((uVar3 == 6) || (uVar25 = 5, bVar16)) { + uVar25 = 6; + } + local_78 = &local_70; + local_80 = &uStack_b8; + local_b0 = 0; + uStack_68 = 0; + local_70 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + uStack_b8 = _UNK_001da5a8; + local_c0 = _DAT_001da5a0; + local_88 = 0; + if (uVar25 == (local_60 & 0xfff)) { + cv::Mat::operator=((Mat *)&local_c0,(Mat *)&local_60); + } + else { + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + dVar29 = 1.0; + if ((local_60 & 0xfff) == 4) { + dVar29 = 1.0 / (double)(1 << (ulong)(param_7 & 0x1f)); + } + local_d0 = (Mat *)&local_c0; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_d8,uVar25,dVar29,0.0); + } + if (((param_3 | param_4) & 7) == 0) { + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x68); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3cd0; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + *(float *)(puVar21 + 0xc) = (float)local_208[0]; + if (((uint)local_c0 & 0xfff) != 5) { + local_138 = 0; + local_130 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_138,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_138, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = unsigned char; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_138); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + FUN_001c66c4(puVar21 + 9,(long)(puVar21[4] - puVar21[3]) >> 3); + plVar23 = operator_new(0x20); + *(undefined4 *)(plVar23 + 1) = 1; + plVar23[2] = (long)puVar21; + *plVar23 = (long)&PTR_FUN_004f45a0; + plVar2 = plVar23 + 1; + *param_1 = (long)plVar23; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar16) { + *(int *)plVar2 = (int)*plVar2 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + lVar9 = *plVar2; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar16) { + *(int *)plVar2 = (int)lVar9 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if ((int)lVar9 == 1) { + (**(code **)(*plVar23 + 0x10))(); + } + goto LAB_001d95a8; + } + bVar17 = uVar3 != 0; + if ((bVar17) || (uVar4 != 2)) { + if ((bVar17) || (uVar4 != 3)) { + bVar18 = uVar4 == 5; + if (bVar17) { +LAB_001d9630: + if (uVar3 == 2) { + if (uVar4 == 2) { + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x68); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3dc0; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + *(float *)(puVar21 + 0xc) = (float)local_208[0]; + if (((uint)local_c0 & 0xfff) != 5) { + local_e8 = 0; + local_e0 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_e8,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_e8, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = short unsigned int; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_e8); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + uVar27 = (long)(puVar21[4] - puVar21[3]) >> 3; + local_1e0 = 0; + uVar26 = (long)(puVar21[10] - puVar21[9]) >> 3; + if (uVar26 < uVar27) { + std::vector>::_M_fill_insert + ((vector> *)(puVar21 + 9), + puVar21[10],uVar27 - uVar26); + } + else if (uVar27 < uVar26) { + puVar21[10] = puVar21[9] + (puVar21[4] - puVar21[3]); + } + puVar22 = operator_new(0x20); + *(undefined4 *)(puVar22 + 1) = 1; + puVar22[2] = puVar21; + *puVar22 = &PTR_FUN_004f4690; + piVar1 = (int *)(puVar22 + 1); + *param_1 = (long)puVar22; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + else if (bVar18) { + FUN_001d8f0c(&local_1d0,(Mat *)&local_c0,param_6,local_208); + param_1[1] = lStack_1c8; + *param_1 = local_1d0; + if (local_1d0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1d0 + 8); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (local_1d0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1d0 + 8); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + else { + if (!bVar16) goto LAB_001d9e90; + FUN_001d82c4(&local_1c0,(Mat *)&local_c0,param_6,local_208); + param_1[1] = lStack_1b8; + *param_1 = local_1c0; + if (local_1c0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1c0 + 8); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (local_1c0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1c0 + 8); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + } + else { +LAB_001d9e90: + if (uVar3 == 3) { + if (uVar4 == 3) { + FUN_001d85d4(&local_1b0,(Mat *)&local_c0,param_6,local_208); + param_1[1] = lStack_1a8; + *param_1 = local_1b0; + if (local_1b0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1b0 + 8); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (local_1b0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1b0 + 8); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + else if (bVar18) { + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x68); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3e80; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + *(float *)(puVar21 + 0xc) = (float)local_208[0]; + if (((uint)local_c0 & 0xfff) != 5) { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar20 = (char *)cv::String::allocate((String *)&local_d8,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_ + ; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_d8, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = short int; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a + ); + cv::String::deallocate((String *)&local_d8); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + uVar27 = (long)(puVar21[4] - puVar21[3]) >> 3; + local_1d8 = 0; + uVar26 = (long)(puVar21[10] - puVar21[9]) >> 3; + if (uVar26 < uVar27) { + std::vector>::_M_fill_insert + ((vector> *)(puVar21 + 9), + puVar21[10],uVar27 - uVar26); + } + else if (uVar27 < uVar26) { + puVar21[10] = puVar21[9] + (puVar21[4] - puVar21[3]); + } + puVar22 = operator_new(0x20); + *(undefined4 *)(puVar22 + 1) = 1; + puVar22[2] = puVar21; + *puVar22 = &PTR_FUN_004f4750; + piVar1 = (int *)(puVar22 + 1); + *param_1 = (long)puVar22; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + else { + if (!bVar16) goto LAB_001d9ea4; + FUN_001d7fb4(&local_1a0,(Mat *)&local_c0,param_6,local_208); + param_1[1] = lStack_198; + *param_1 = local_1a0; + if (local_1a0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1a0 + 8); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (local_1a0 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_1a0 + 8); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + } + else { +LAB_001d9ea4: + if ((uVar3 == 5) && (bVar18)) { + FUN_001d88e8(&local_190,(Mat *)&local_c0,param_6,local_208,&local_e8,&local_d8); + param_1[1] = lStack_188; + *param_1 = local_190; + if (local_190 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_190 + 8); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (local_190 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_190 + 8); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + else { + if ((uVar3 != 6) || (!bVar16)) { + cv::format("Unsupported combination of source format (=%d), and destination format (=%d)" + ,aSStack_158,(ulong)param_3,(ulong)param_4); + cv::error(-0xd5,aSStack_158, + "cv::Ptr cv::getLinearFilter(int, int, cv::InputArray, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp", + 0x11a8); + cv::String::deallocate(aSStack_158); + *param_1 = 0; + param_1[1] = 0; + goto LAB_001d95a8; + } + FUN_001d8bfc(&local_180,(Mat *)&local_c0,param_6,local_208); + param_1[1] = lStack_178; + *param_1 = local_180; + if (local_180 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_180 + 8); + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (local_180 == 0) goto LAB_001d95a8; + piVar1 = (int *)(local_180 + 8); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + } + } + } + else if (bVar18) { + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x68); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3d60; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + *(float *)(puVar21 + 0xc) = (float)local_208[0]; + if (((uint)local_c0 & 0xfff) != 5) { + local_100 = 0; + local_108 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_108,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_108, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = unsigned char; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_108); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + uVar27 = (long)(puVar21[4] - puVar21[3]) >> 3; + local_1f0 = 0; + uVar26 = (long)(puVar21[10] - puVar21[9]) >> 3; + if (uVar26 < uVar27) { + std::vector>::_M_fill_insert + ((vector> *)(puVar21 + 9), + puVar21[10],uVar27 - uVar26); + } + else if (uVar27 < uVar26) { + puVar21[10] = puVar21[9] + (puVar21[4] - puVar21[3]); + } + puVar22 = operator_new(0x20); + *(undefined4 *)(puVar22 + 1) = 1; + puVar22[2] = puVar21; + *puVar22 = &PTR_FUN_004f4630; + piVar1 = (int *)(puVar22 + 1); + *param_1 = (long)puVar22; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + else { + if (!bVar16) goto LAB_001d9630; + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x70); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3d90; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + puVar21[0xc] = local_208[0]; + if (((uint)local_c0 & 0xfff) != 6) { + local_f8 = 0; + local_f0 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_f8,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_f8, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = unsigned char; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_f8); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + uVar27 = (long)(puVar21[4] - puVar21[3]) >> 3; + local_1e8 = 0; + uVar26 = (long)(puVar21[10] - puVar21[9]) >> 3; + if (uVar26 < uVar27) { + std::vector>::_M_fill_insert + ((vector> *)(puVar21 + 9), + puVar21[10],uVar27 - uVar26); + } + else if (uVar27 < uVar26) { + puVar21[10] = puVar21[9] + (puVar21[4] - puVar21[3]); + } + puVar22 = operator_new(0x20); + *(undefined4 *)(puVar22 + 1) = 1; + puVar22[2] = puVar21; + *puVar22 = &PTR_FUN_004f4660; + piVar1 = (int *)(puVar22 + 1); + *param_1 = (long)puVar22; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + } + else { + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x68); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3d30; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + *(float *)(puVar21 + 0xc) = (float)local_208[0]; + if (((uint)local_c0 & 0xfff) != 5) { + local_118 = 0; + local_110 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_118,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_118, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = unsigned char; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_118); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + uVar27 = (long)(puVar21[4] - puVar21[3]) >> 3; + local_1f8 = 0; + uVar26 = (long)(puVar21[10] - puVar21[9]) >> 3; + if (uVar26 < uVar27) { + std::vector>::_M_fill_insert + ((vector> *)(puVar21 + 9), + puVar21[10],uVar27 - uVar26); + } + else if (uVar27 < uVar26) { + puVar21[10] = puVar21[9] + (puVar21[4] - puVar21[3]); + } + puVar22 = operator_new(0x20); + *(undefined4 *)(puVar22 + 1) = 1; + puVar22[2] = puVar21; + *puVar22 = &PTR_FUN_004f4600; + piVar1 = (int *)(puVar22 + 1); + *param_1 = (long)puVar22; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + } + else { + iVar19 = *param_6; + iVar28 = param_6[1]; + puVar21 = operator_new(0x68); + *(undefined4 *)(puVar21 + 1) = 0xffffffff; + *(undefined4 *)((long)puVar21 + 0xc) = 0xffffffff; + *puVar21 = &PTR_FUN_004f3d00; + puVar21[3] = 0; + puVar21[4] = 0; + puVar21[5] = 0; + puVar21[6] = 0; + puVar21[7] = 0; + puVar21[8] = 0; + puVar21[9] = 0; + puVar21[10] = 0; + puVar21[0xb] = 0; + *(int *)(puVar21 + 2) = iVar19; + *(int *)((long)puVar21 + 0x14) = iVar28; + uVar7 = *(undefined4 *)local_80; + *(undefined4 *)(puVar21 + 1) = *(undefined4 *)((long)local_80 + 4); + *(undefined4 *)((long)puVar21 + 0xc) = uVar7; + *(float *)(puVar21 + 0xc) = (float)local_208[0]; + if (((uint)local_c0 & 0xfff) != 5) { + local_128 = 0; + local_120 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_128,0x24); + uVar13 = s__kernel_type______DataType___00443558._24_8_; + uVar12 = s__kernel_type______DataType___00443558._16_8_; + uVar11 = s__kernel_type______DataType___00443558._8_8_; + uVar10 = s__kernel_type______DataType___00443558._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s__kernel_type______DataType___00443558._32_4_; + *(undefined8 *)pcVar20 = uVar10; + *(undefined8 *)(pcVar20 + 8) = uVar11; + *(undefined8 *)(pcVar20 + 0x10) = uVar12; + *(undefined8 *)(pcVar20 + 0x18) = uVar13; + cv::error(-0xd7,(String *)&local_128, + "cv::Filter2D::Filter2D(const cv::Mat&, cv::Point, double, const CastOp&, const VecOp&) [with ST = unsigned char; CastOp = cv::Cast; VecOp = cv::FilterNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0xf4a); + cv::String::deallocate((String *)&local_128); + } + FUN_001d7cfc((Mat *)&local_c0,puVar21 + 3,puVar21 + 6); + FUN_001c66c4(puVar21 + 9,(long)(puVar21[4] - puVar21[3]) >> 3); + puVar22 = operator_new(0x20); + *(undefined4 *)(puVar22 + 1) = 1; + puVar22[2] = puVar21; + *puVar22 = &PTR_FUN_004f45d0; + piVar1 = (int *)(puVar22 + 1); + *param_1 = (long)puVar22; + param_1[1] = (long)puVar21; + do { + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + do { + iVar19 = *piVar1; + cVar8 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar16) { + *piVar1 = iVar19 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (iVar19 == 1) { + FUN_001c0010(); + } +LAB_001d95a8: + cv::Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return param_1; +} + + +================================================================== + +### FUNC 001da5b0 (1060 bytes) name=FUN_001da5b0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 * +FUN_001da5b0(undefined8 *param_1,undefined8 param_2,uint param_3,uint param_4,_InputArray *param_5, + undefined8 *param_6,undefined4 param_7,undefined4 param_8,undefined8 param_9) + +{ + int *piVar1; + long *plVar2; + uint uVar3; + char cVar4; + bool bVar5; + long lVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined1 uVar9; + int iVar10; + undefined8 *puVar11; + void *pvVar12; + Mat *pMVar13; + undefined8 local_108; + undefined8 local_100; + long *local_f8 [2]; + long *local_e8; + undefined8 local_e0; + long *local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int iStack_bc; + undefined4 uStack_b8; + undefined4 uStack_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + ulong local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + iVar10 = cv::_InputArray::kind(param_5); + if (iVar10 == 0x10000) { + pMVar13 = *(Mat **)(param_5 + 8); + local_80 = &uStack_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar13; + iStack_bc = *(int *)(pMVar13 + 4); + uStack_b8 = *(undefined4 *)(pMVar13 + 8); + uStack_b4 = *(undefined4 *)(pMVar13 + 0xc); + local_b0 = *(undefined8 *)(pMVar13 + 0x10); + local_a8 = *(undefined8 *)(pMVar13 + 0x18); + local_a0 = *(undefined8 *)(pMVar13 + 0x20); + local_98 = *(undefined8 *)(pMVar13 + 0x28); + local_90 = *(undefined8 *)(pMVar13 + 0x30); + local_88 = *(long *)(pMVar13 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar13 + 0x48); + local_68 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + iStack_bc = 0; + cv::Mat::copySize((Mat *)&local_c0,pMVar13); + } + } + else { + cv::_InputArray::getMat_((int)param_5); + } + uVar3 = param_3 & 0xfff; + if ((param_4 >> 3 & 0x1ff) + 1 != (param_3 >> 3 & 0x1ff) + 1) { + local_100 = 0; + local_108 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_108,0x19); + uVar9 = DAT_00443478; + uVar8 = _LAB_00443468; + uVar7 = _LAB_00443460; + puVar11[2] = DAT_00443470; + *(undefined1 *)(puVar11 + 3) = uVar9; + *puVar11 = uVar7; + puVar11[1] = uVar8; + cv::error(-0xd7,(String *)&local_108, + "cv::Ptr cv::createLinearFilter(int, int, cv::InputArray, cv::Point, double, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x11b8); + cv::String::deallocate((String *)&local_108); + } + uStack_58 = CONCAT44(uStack_b4,uStack_b8); + local_60 = CONCAT44(iStack_bc,local_c0); + local_18 = &local_10; + local_50 = local_b0; + local_20 = &uStack_58; + local_48 = local_a8; + uStack_8 = 0; + local_10 = 0; + local_40 = local_a0; + local_38 = local_98; + local_30 = local_90; + local_28 = local_88; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (iStack_bc < 3) { + local_10 = *local_78; + uStack_8 = local_78[1]; + } + else { + local_60 = (ulong)local_c0; + cv::Mat::copySize((Mat *)&local_60,(Mat *)&local_c0); + } + local_e8 = (long *)*param_6; + local_c8 = 0; + local_c4 = 0; + local_d8 = (long *)CONCAT44(local_d8._4_4_,0x1010000); + local_d0 = (Mat *)&local_60; + FUN_001d9220(local_f8,param_2,uVar3,param_4 & 0xfff,&local_d8,&local_e8); + local_e8 = (long *)0x0; + local_e0 = 0; + local_d8 = (long *)0x0; + local_d0 = (Mat *)0x0; + pvVar12 = operator_new(0x130); + FUN_001d5aa4(pvVar12,local_f8,&local_e8,&local_d8,uVar3,param_4 & 0xfff,uVar3,param_7,param_8, + param_9); + puVar11 = operator_new(0x20); + puVar11[2] = pvVar12; + *puVar11 = &PTR_FUN_004f3ca0; + *(undefined4 *)(puVar11 + 1) = 1; + *param_1 = puVar11; + param_1[1] = pvVar12; + plVar2 = local_d8 + 1; + if (local_d8 != (long *)0x0) { + do { + lVar6 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*local_d8 + 0x10))(local_d8); + } + } + plVar2 = local_e8 + 1; + if (local_e8 != (long *)0x0) { + do { + lVar6 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*local_e8 + 0x10))(); + } + } + plVar2 = local_f8[0] + 1; + if (local_f8[0] != (long *)0x0) { + do { + lVar6 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*local_f8[0] + 0x10))(); + } + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + cv::Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + return param_1; +} + + +================================================================== + +### FUNC 001daae0 (2144 bytes) name=filter2D + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::filter2D(cv::_InputArray const&, cv::_OutputArray const&, int, cv::_InputArray const&, + cv::Point_, double, int) */ + +void cv::filter2D(double param_1_00,_InputArray *param_1,_InputArray *param_2,uint param_3, + _InputArray *param_4,int *param_6,uint param_7) + +{ + long *plVar1; + int *piVar2; + int iVar3; + int iVar4; + char cVar5; + bool bVar6; + long *plVar7; + long lVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + int iVar15; + char *pcVar16; + _InputArray *p_Var17; + Mat *pMVar18; + int iVar19; + uint uVar20; + double local_1d8 [2]; + int local_1c8; + int local_1c4; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0; + undefined4 uStack_1ac; + double *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + int local_198; + int local_194; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 uStack_178; + long local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + undefined8 local_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + undefined4 local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + undefined4 local_5c; + int local_58; + undefined4 local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_1d8[0] = param_1_00; + iVar15 = _InputArray::kind(param_1); + if (iVar15 == 0x10000) { + pMVar18 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar18; + local_11c = *(undefined4 *)(pMVar18 + 4); + local_118 = *(undefined4 *)(pMVar18 + 8); + local_114 = *(undefined4 *)(pMVar18 + 0xc); + local_110 = *(long *)(pMVar18 + 0x10); + local_108 = *(undefined8 *)(pMVar18 + 0x18); + local_100 = *(undefined8 *)(pMVar18 + 0x20); + local_f8 = *(undefined8 *)(pMVar18 + 0x28); + local_f0 = *(undefined8 *)(pMVar18 + 0x30); + local_e8 = *(long *)(pMVar18 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar2 = (int *)(local_e8 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar18 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar18 + 0x48); + local_c8 = (*(undefined8 **)(pMVar18 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar18); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar15 = _InputArray::kind(param_4); + if (iVar15 == 0x10000) { + pMVar18 = *(Mat **)(param_4 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar18; + local_bc = *(undefined4 *)(pMVar18 + 4); + local_b8 = *(int *)(pMVar18 + 8); + local_b4 = *(int *)(pMVar18 + 0xc); + local_b0 = *(undefined8 *)(pMVar18 + 0x10); + local_a8 = *(undefined8 *)(pMVar18 + 0x18); + local_a0 = *(undefined8 *)(pMVar18 + 0x20); + local_98 = *(undefined8 *)(pMVar18 + 0x28); + local_90 = *(undefined8 *)(pMVar18 + 0x30); + local_88 = *(long *)(pMVar18 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar18 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar18 + 0x48); + local_68 = (*(undefined8 **)(pMVar18 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar18); + } + } + else { + _InputArray::getMat_((int)param_4); + } + if ((int)param_3 < 0) { + param_3 = local_120 & 7; + } + local_5c = *local_e0; + local_60 = local_e0[1]; + _OutputArray::create + ((_OutputArray *)param_2,(Mat *)&local_60,(param_3 & 7) + (local_120 & 0xff8),0xffffffff + ,0,0); + iVar15 = _InputArray::kind(param_2); + if (iVar15 == 0x10000) { + pMVar18 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar18; + local_50 = *(long *)(pMVar18 + 0x10); + local_5c = *(undefined4 *)(pMVar18 + 4); + local_58 = *(int *)(pMVar18 + 8); + local_54 = *(undefined4 *)(pMVar18 + 0xc); + local_48 = *(undefined8 *)(pMVar18 + 0x18); + local_40 = *(undefined8 *)(pMVar18 + 0x20); + local_38 = *(undefined8 *)(pMVar18 + 0x28); + local_30 = *(undefined8 *)(pMVar18 + 0x30); + local_28 = *(long *)(pMVar18 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar18 + 4) < 3) { + iVar15 = *param_6; + local_10 = **(undefined8 **)(pMVar18 + 0x48); + iVar19 = param_6[1]; + local_8 = (*(undefined8 **)(pMVar18 + 0x48))[1]; + iVar3 = local_80[1]; + iVar4 = *local_80; + goto joined_r0x001db118; + } + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar18); + } + else { + _InputArray::getMat_((int)param_2); + } + iVar15 = *param_6; + iVar19 = param_6[1]; + iVar3 = local_80[1]; + iVar4 = *local_80; +joined_r0x001db118: + if (iVar15 == -1) { + iVar15 = iVar3 / 2; + } + if (iVar19 == -1) { + iVar19 = iVar4 / 2; + } + if ((((iVar15 < iVar3) && (-1 < iVar15)) && (-1 < iVar19)) && (iVar19 < iVar4)) { + iVar3 = local_b4 * local_b8; + } + else { + local_180 = 0; + uStack_178 = 0; + pcVar16 = (char *)String::allocate((String *)&local_180,0x34); + uVar14 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._40_8_; + uVar13 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._32_8_; + uVar12 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._24_8_; + uVar11 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._16_8_; + uVar10 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._8_8_; + uVar9 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._0_8_; + *(undefined4 *)(pcVar16 + 0x30) = s_anchor_inside_Rect_0__0__ksize_w_004435b0._48_4_; + *(undefined8 *)pcVar16 = uVar9; + *(undefined8 *)(pcVar16 + 8) = uVar10; + *(undefined8 *)(pcVar16 + 0x10) = uVar11; + *(undefined8 *)(pcVar16 + 0x18) = uVar12; + *(undefined8 *)(pcVar16 + 0x20) = uVar13; + *(undefined8 *)(pcVar16 + 0x28) = uVar14; + error(-0xd7,(String *)&local_180,"cv::Point cv::normalizeAnchor(cv::Point, cv::Size)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filterengine.hpp",0x16b); + String::deallocate((String *)&local_180); + iVar3 = local_b4 * local_b8; + } + if (iVar3 < 0x32) { + uStack_178 = 0; + local_180 = 0; + uStack_168 = 0; + local_170 = 0; + local_188 = 0; + local_184 = 0; + local_198 = 0x1010000; + local_1c8 = iVar15; + local_1c4 = iVar19; + local_190 = (Mat *)&local_c0; + FUN_001da5b0(&local_1b0,local_1d8[0],local_120 & 0xfff,local_60 & 0xfff,&local_198,&local_1c8, + param_7 & 0xffffffef,0xffffffff,&local_180); + local_180 = 0; + uStack_178 = 0xffffffffffffffff; + local_198 = 0; + local_194 = 0; + (**(code **)((long)*local_1a8 + 0x28)) + (local_1a8,(Mat *)&local_120,(Mat *)&local_60,&local_180,&local_198,param_7 >> 4 & 1); + plVar7 = (long *)CONCAT44(uStack_1ac,local_1b0); + plVar1 = plVar7 + 1; + if (plVar7 != (long *)0x0) { + do { + lVar8 = *plVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar6) { + *(int *)plVar1 = (int)lVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if ((int)lVar8 == 1) { + (**(code **)(*plVar7 + 0x10))(); + } + } + } + else { + local_138 = &local_130; + local_140 = &uStack_178; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + uStack_128 = 0; + local_130 = 0; + local_180 = _DAT_001db420; + uStack_178 = _UNK_001db428; + if (((local_120 >> 3 & 0x1ff) == 0) || (local_1d8[0] == 0.0)) { + if (local_110 == local_50) { + local_194 = local_20[1]; + local_198 = *local_20; + Mat::create((Mat *)&local_180,2,&local_198,local_60 & 0xfff); + } + else { + Mat::operator=((Mat *)&local_180,(Mat *)&local_60); + } + uStack_1ac = *local_e0; + local_1b0 = local_e0[1]; + local_198 = iVar15; + local_194 = iVar19; + FUN_00214600(local_1d8[0],(Mat *)&local_120,(Mat *)&local_c0,(Mat *)&local_180,&local_1b0, + (param_3 & 7) + (local_120 & 0xff8),(_OutputArray *)&local_198,param_7); + if (local_170 != local_50) { + local_188 = 0; + local_184 = 0; + local_198 = 0x2010000; + local_190 = (Mat *)&local_60; + Mat::copyTo((Mat *)&local_180,(_OutputArray *)&local_198); + } + } + else { + uVar20 = local_60 & 7; + if ((uVar20 - 5 < 2) && (local_110 != local_50)) { + Mat::operator=((Mat *)&local_180,(Mat *)&local_60); + } + else { + if (uVar20 != 6) { + uVar20 = 5; + } + local_1c4 = local_20[1]; + local_1c8 = *local_20; + Mat::create((Mat *)&local_180,2,&local_1c8,uVar20 + (local_60 & 0xff8)); + } + uStack_1ac = *local_e0; + local_1b0 = local_e0[1]; + local_198 = iVar15; + local_194 = iVar19; + FUN_00214600(0,(Mat *)&local_120,(Mat *)&local_c0,(Mat *)&local_180,(_InputArray *)&local_1b0, + uVar20 + (local_120 & 0xff8),(_OutputArray *)&local_198,param_7); + local_1a0 = 1; + local_19c = 1; + local_1b8 = 0; + local_1b4 = 0; + local_1c8 = 0x1010000; + local_188 = 0; + local_184 = 0; + local_198 = 0x2010000; + local_1b0 = 0xc1020006; + local_1c0 = (Mat *)&local_180; + local_1a8 = local_1d8; + local_190 = (Mat *)&local_180; + p_Var17 = (_InputArray *)noArray(); + add((_InputArray *)&local_1c8,(_InputArray *)&local_1b0,(_OutputArray *)&local_198,p_Var17,-1) + ; + if (local_170 != local_50) { + local_188 = 0; + local_184 = 0; + local_198 = 0x2010000; + local_190 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_180,(_OutputArray *)&local_198,local_60 & 0xfff,1.0,0.0); + } + } + Mat::release((Mat *)&local_180); + if (local_138 != &local_130) { + fastFree(local_138); + } + } + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&local_120); + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 001db430 (536 bytes) name=cvFilter2D + +void cvFilter2D(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + char *pcVar8; + undefined4 local_170; + undefined4 local_16c; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120 [16]; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0 [16]; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [72]; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + if (((local_e0[1] != local_80[1]) || (*local_e0 != *local_80)) || + ((local_120[0] >> 3 & 0x1ff) + 1 != (local_c0[0] >> 3 & 0x1ff) + 1)) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_138,0x3c); + uVar7 = s_src_size______dst_size______src__0043e4a0._56_4_; + uVar6 = s_src_size______dst_size______src__0043e4a0._40_8_; + uVar5 = s_src_size______dst_size______src__0043e4a0._32_8_; + uVar4 = s_src_size______dst_size______src__0043e4a0._24_8_; + uVar3 = s_src_size______dst_size______src__0043e4a0._16_8_; + uVar2 = s_src_size______dst_size______src__0043e4a0._8_8_; + uVar1 = s_src_size______dst_size______src__0043e4a0._0_8_; + *(undefined8 *)(pcVar8 + 0x30) = s_src_size______dst_size______src__0043e4a0._48_8_; + *(undefined4 *)(pcVar8 + 0x38) = uVar7; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar3; + *(undefined8 *)(pcVar8 + 0x18) = uVar4; + *(undefined8 *)(pcVar8 + 0x20) = uVar5; + *(undefined8 *)(pcVar8 + 0x28) = uVar6; + cv::error(-0xd7,(String *)&local_138, + "void cvFilter2D(const CvArr*, CvArr*, const CvMat*, CvPoint)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filter.cpp",0x1281); + cv::String::deallocate((String *)&local_138); + } + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x1010000); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x2010000; + local_170 = (undefined4)param_4; + local_16c = (undefined4)((ulong)param_4 >> 0x20); + local_160 = (Mat *)local_120; + local_148 = (Mat *)local_c0; + local_130 = aMStack_60; + cv::filter2D(0,local_168,local_150,local_c0[0] & 7,&local_138,&local_170,1); + cv::Mat::release(aMStack_60); + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + cv::Mat::release((Mat *)local_c0); + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + cv::Mat::release((Mat *)local_120); + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 001db6cc (4 bytes) name=FUN_001db6cc + +void FUN_001db6cc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6d0 (4 bytes) name=FUN_001db6d0 + +void FUN_001db6d0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6d4 (4 bytes) name=FUN_001db6d4 + +void FUN_001db6d4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6d8 (4 bytes) name=FUN_001db6d8 + +void FUN_001db6d8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6dc (4 bytes) name=FUN_001db6dc + +void FUN_001db6dc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6e0 (4 bytes) name=FUN_001db6e0 + +void FUN_001db6e0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6e4 (4 bytes) name=FUN_001db6e4 + +void FUN_001db6e4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6e8 (4 bytes) name=FUN_001db6e8 + +void FUN_001db6e8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6ec (4 bytes) name=FUN_001db6ec + +void FUN_001db6ec(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6f0 (4 bytes) name=FUN_001db6f0 + +void FUN_001db6f0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6f4 (4 bytes) name=FUN_001db6f4 + +void FUN_001db6f4(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6f8 (4 bytes) name=FUN_001db6f8 + +void FUN_001db6f8(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db6fc (4 bytes) name=FUN_001db6fc + +void FUN_001db6fc(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db700 (4 bytes) name=FUN_001db700 + +void FUN_001db700(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db704 (4 bytes) name=FUN_001db704 + +void FUN_001db704(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db708 (4 bytes) name=FUN_001db708 + +void FUN_001db708(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db70c (4 bytes) name=FUN_001db70c + +void FUN_001db70c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db710 (4 bytes) name=FUN_001db710 + +void FUN_001db710(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db714 (4 bytes) name=FUN_001db714 + +void FUN_001db714(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db718 (4 bytes) name=FUN_001db718 + +void FUN_001db718(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db71c (4 bytes) name=FUN_001db71c + +void FUN_001db71c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db720 (4 bytes) name=FUN_001db720 + +void FUN_001db720(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db724 (4 bytes) name=FUN_001db724 + +void FUN_001db724(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db728 (4 bytes) name=FUN_001db728 + +void FUN_001db728(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db72c (4 bytes) name=FUN_001db72c + +void FUN_001db72c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db730 (4 bytes) name=FUN_001db730 + +void FUN_001db730(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db734 (4 bytes) name=FUN_001db734 + +void FUN_001db734(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db738 (4 bytes) name=FUN_001db738 + +void FUN_001db738(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db73c (4 bytes) name=FUN_001db73c + +void FUN_001db73c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db740 (4 bytes) name=FUN_001db740 + +void FUN_001db740(void) + +{ + return; +} + + +================================================================== + +### FUNC 001db744 (60 bytes) name=FUN_001db744 + +void FUN_001db744(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db780 (60 bytes) name=FUN_001db780 + +void FUN_001db780(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db7bc (60 bytes) name=FUN_001db7bc + +void FUN_001db7bc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db7f8 (60 bytes) name=FUN_001db7f8 + +void FUN_001db7f8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db834 (60 bytes) name=FUN_001db834 + +void FUN_001db834(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db870 (60 bytes) name=FUN_001db870 + +void FUN_001db870(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db8ac (60 bytes) name=FUN_001db8ac + +void FUN_001db8ac(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db8e8 (60 bytes) name=FUN_001db8e8 + +void FUN_001db8e8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db924 (60 bytes) name=FUN_001db924 + +void FUN_001db924(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db960 (60 bytes) name=FUN_001db960 + +void FUN_001db960(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db99c (60 bytes) name=FUN_001db99c + +void FUN_001db99c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001db9d8 (60 bytes) name=FUN_001db9d8 + +void FUN_001db9d8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dba14 (60 bytes) name=FUN_001dba14 + +void FUN_001dba14(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dba50 (60 bytes) name=FUN_001dba50 + +void FUN_001dba50(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dba8c (60 bytes) name=FUN_001dba8c + +void FUN_001dba8c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbac8 (60 bytes) name=FUN_001dbac8 + +void FUN_001dbac8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbb04 (60 bytes) name=FUN_001dbb04 + +void FUN_001dbb04(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbb40 (60 bytes) name=FUN_001dbb40 + +void FUN_001dbb40(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbb7c (60 bytes) name=FUN_001dbb7c + +void FUN_001dbb7c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbbb8 (60 bytes) name=FUN_001dbbb8 + +void FUN_001dbbb8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbbf4 (60 bytes) name=FUN_001dbbf4 + +void FUN_001dbbf4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbc30 (60 bytes) name=FUN_001dbc30 + +void FUN_001dbc30(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbc6c (60 bytes) name=FUN_001dbc6c + +void FUN_001dbc6c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbca8 (60 bytes) name=FUN_001dbca8 + +void FUN_001dbca8(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbce4 (60 bytes) name=FUN_001dbce4 + +void FUN_001dbce4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbd20 (60 bytes) name=FUN_001dbd20 + +void FUN_001dbd20(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbd5c (60 bytes) name=FUN_001dbd5c + +void FUN_001dbd5c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbd98 (60 bytes) name=FUN_001dbd98 + +void FUN_001dbd98(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbdd4 (60 bytes) name=FUN_001dbdd4 + +void FUN_001dbdd4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbe10 (60 bytes) name=FUN_001dbe10 + +void FUN_001dbe10(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001dbe4c (528 bytes) name=FUN_001dbe4c + +void FUN_001dbe4c(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + uint uVar2; + int iVar3; + long lVar4; + long *plVar5; + long lVar6; + long lVar7; + double *pdVar8; + double *pdVar9; + long *plVar10; + long lVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + + param_6 = param_6 * param_7; + lVar11 = *(long *)(param_1 + 0x18); + plVar10 = *(long **)(param_1 + 0x30); + iVar3 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + uVar2 = param_6 - 4U >> 2; + iVar1 = (uVar2 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + do { + lVar4 = 0; + if (0 < iVar3) { + do { + *(long *)((long)plVar10 + lVar4) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar4 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar4)) * 8; + lVar4 = lVar4 + 8; + } while (lVar4 != ((ulong)(iVar3 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + pdVar8 = (double *)*plVar10; + lVar4 = 0; + pdVar9 = param_3; + do { + dVar18 = *pdVar8; + dVar16 = pdVar8[1]; + dVar14 = pdVar8[2]; + dVar12 = pdVar8[3]; + if (1 < iVar3) { + plVar5 = plVar10 + 1; + dVar13 = dVar12; + dVar15 = dVar14; + dVar17 = dVar16; + dVar19 = dVar18; + do { + lVar6 = *plVar5; + plVar5 = plVar5 + 1; + lVar7 = lVar6 + lVar4; + dVar18 = *(double *)(lVar6 + lVar4); + if (dVar18 <= dVar19) { + dVar18 = dVar19; + } + dVar16 = *(double *)(lVar7 + 8); + if (*(double *)(lVar7 + 8) <= dVar17) { + dVar16 = dVar17; + } + dVar14 = *(double *)(lVar7 + 0x10); + if (*(double *)(lVar7 + 0x10) <= dVar15) { + dVar14 = dVar15; + } + dVar12 = *(double *)(lVar7 + 0x18); + if (*(double *)(lVar7 + 0x18) <= dVar13) { + dVar12 = dVar13; + } + dVar13 = dVar12; + dVar15 = dVar14; + dVar17 = dVar16; + dVar19 = dVar18; + } while (plVar5 != plVar10 + (ulong)(iVar3 - 2) + 2); + } + lVar4 = lVar4 + 0x20; + pdVar8 = pdVar8 + 4; + pdVar9[1] = dVar16; + *pdVar9 = dVar18; + pdVar9[3] = dVar12; + pdVar9[2] = dVar14; + pdVar9 = pdVar9 + 4; + } while (lVar4 != ((ulong)uVar2 + 1) * 0x20); + } + if (iVar1 < param_6) { + lVar7 = *plVar10; + lVar4 = (long)iVar1 << 3; + do { + dVar12 = *(double *)(lVar7 + lVar4); + if (1 < iVar3) { + plVar5 = plVar10 + 1; + dVar16 = dVar12; + do { + lVar6 = *plVar5; + plVar5 = plVar5 + 1; + dVar12 = *(double *)(lVar6 + lVar4); + if (*(double *)(lVar6 + lVar4) <= dVar16) { + dVar12 = dVar16; + } + dVar16 = dVar12; + } while (plVar5 != plVar10 + (ulong)(iVar3 - 2) + 2); + } + *(double *)((long)param_3 + lVar4) = dVar12; + lVar4 = lVar4 + 8; + } while (lVar4 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + param_5 = param_5 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dc05c (500 bytes) name=FUN_001dc05c + +void FUN_001dc05c(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + undefined8 *puVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + long *plVar6; + long lVar7; + long lVar8; + float *pfVar9; + long *plVar10; + long lVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + + param_6 = param_6 * param_7; + lVar11 = *(long *)(param_1 + 0x18); + plVar10 = *(long **)(param_1 + 0x30); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)((long)plVar10 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar5)) * 4; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + pfVar9 = (float *)*plVar10; + lVar5 = 0; + do { + fVar16 = *pfVar9; + fVar15 = pfVar9[1]; + fVar13 = pfVar9[2]; + fVar12 = pfVar9[3]; + if (1 < iVar4) { + plVar6 = plVar10 + 1; + fVar14 = fVar13; + fVar17 = fVar16; + do { + lVar7 = *plVar6; + plVar6 = plVar6 + 1; + lVar8 = lVar7 + lVar5; + fVar16 = *(float *)(lVar7 + lVar5); + if (fVar16 <= fVar17) { + fVar16 = fVar17; + } + fVar13 = *(float *)(lVar8 + 4); + if (*(float *)(lVar8 + 4) <= fVar15) { + fVar13 = fVar15; + } + fVar15 = fVar13; + fVar13 = *(float *)(lVar8 + 8); + if (*(float *)(lVar8 + 8) <= fVar14) { + fVar13 = fVar14; + } + fVar14 = *(float *)(lVar8 + 0xc); + if (*(float *)(lVar8 + 0xc) <= fVar12) { + fVar14 = fVar12; + } + fVar12 = fVar14; + fVar14 = fVar13; + fVar17 = fVar16; + } while (plVar6 != plVar10 + (ulong)(iVar4 - 2) + 2); + } + puVar1 = (undefined8 *)(param_3 + lVar5); + lVar5 = lVar5 + 0x10; + pfVar9 = pfVar9 + 4; + puVar1[1] = CONCAT44(fVar12,fVar13); + *puVar1 = CONCAT44(fVar15,fVar16); + } while (lVar5 != ((ulong)uVar3 + 1) * 0x10); + } + if (iVar2 < param_6) { + lVar8 = *plVar10; + lVar5 = (long)iVar2 << 2; + do { + fVar13 = *(float *)(lVar8 + lVar5); + if (1 < iVar4) { + plVar6 = plVar10 + 1; + do { + lVar7 = *plVar6; + plVar6 = plVar6 + 1; + fVar16 = *(float *)(lVar7 + lVar5); + if (*(float *)(lVar7 + lVar5) <= fVar13) { + fVar16 = fVar13; + } + fVar13 = fVar16; + } while (plVar6 != plVar10 + (ulong)(iVar4 - 2) + 2); + } + *(float *)(param_3 + lVar5) = fVar13; + lVar5 = lVar5 + 4; + } while (lVar5 != ((long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 4); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dc250 (492 bytes) name=FUN_001dc250 + +void FUN_001dc250(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + undefined8 *puVar1; + short sVar2; + int iVar3; + uint uVar4; + int iVar5; + short sVar6; + long lVar7; + short sVar8; + long *plVar9; + short sVar10; + short sVar11; + long lVar12; + long *plVar13; + short *psVar14; + long *plVar15; + long lVar16; + + param_6 = param_6 * param_7; + lVar16 = *(long *)(param_1 + 0x18); + plVar15 = *(long **)(param_1 + 0x30); + iVar5 = (int)(*(long *)(param_1 + 0x20) - lVar16 >> 3); + if (0 < param_5) { + uVar4 = param_6 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_6 + -3 < 1) { + iVar3 = 0; + } + do { + lVar7 = 0; + if (0 < iVar5) { + do { + *(long *)((long)plVar15 + lVar7) = + *(long *)(param_2 + (long)*(int *)(lVar16 + lVar7 + 4) * 8) + + (long)(param_7 * *(int *)(lVar16 + lVar7)) * 2; + lVar7 = lVar7 + 8; + } while (lVar7 != ((ulong)(iVar5 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + psVar14 = (short *)*plVar15; + lVar7 = 0; + do { + sVar11 = *psVar14; + sVar10 = psVar14[1]; + sVar8 = psVar14[2]; + sVar6 = psVar14[3]; + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + lVar12 = *plVar9 + lVar7; + sVar2 = *(short *)(*plVar9 + lVar7); + if (sVar2 <= sVar11) { + sVar2 = sVar11; + } + sVar11 = sVar2; + sVar2 = *(short *)(lVar12 + 2); + if (*(short *)(lVar12 + 2) <= sVar10) { + sVar2 = sVar10; + } + sVar10 = sVar2; + sVar2 = *(short *)(lVar12 + 4); + if (*(short *)(lVar12 + 4) <= sVar8) { + sVar2 = sVar8; + } + sVar8 = sVar2; + sVar2 = *(short *)(lVar12 + 6); + if (*(short *)(lVar12 + 6) <= sVar6) { + sVar2 = sVar6; + } + sVar6 = sVar2; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + puVar1 = (undefined8 *)(param_3 + lVar7); + lVar7 = lVar7 + 8; + psVar14 = psVar14 + 4; + *puVar1 = CONCAT26(sVar6,CONCAT24(sVar8,CONCAT22(sVar10,sVar11))); + } while (lVar7 != ((ulong)uVar4 + 1) * 8); + } + if (iVar3 < param_6) { + lVar12 = *plVar15; + lVar7 = (long)iVar3 << 1; + do { + sVar11 = *(short *)(lVar12 + lVar7); + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + sVar10 = *(short *)(*plVar9 + lVar7); + if (*(short *)(*plVar9 + lVar7) <= sVar11) { + sVar10 = sVar11; + } + sVar11 = sVar10; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + *(short *)(param_3 + lVar7) = sVar11; + lVar7 = lVar7 + 2; + } while (lVar7 != ((long)iVar3 + 1 + (ulong)(uint)((param_6 + -1) - iVar3)) * 2); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dc43c (492 bytes) name=FUN_001dc43c + +void FUN_001dc43c(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + undefined8 *puVar1; + ushort uVar2; + int iVar3; + uint uVar4; + int iVar5; + ushort uVar6; + long lVar7; + ushort uVar8; + long *plVar9; + ushort uVar10; + ushort uVar11; + long lVar12; + long *plVar13; + ushort *puVar14; + long *plVar15; + long lVar16; + + param_6 = param_6 * param_7; + lVar16 = *(long *)(param_1 + 0x18); + plVar15 = *(long **)(param_1 + 0x30); + iVar5 = (int)(*(long *)(param_1 + 0x20) - lVar16 >> 3); + if (0 < param_5) { + uVar4 = param_6 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_6 + -3 < 1) { + iVar3 = 0; + } + do { + lVar7 = 0; + if (0 < iVar5) { + do { + *(long *)((long)plVar15 + lVar7) = + *(long *)(param_2 + (long)*(int *)(lVar16 + lVar7 + 4) * 8) + + (long)(param_7 * *(int *)(lVar16 + lVar7)) * 2; + lVar7 = lVar7 + 8; + } while (lVar7 != ((ulong)(iVar5 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + puVar14 = (ushort *)*plVar15; + lVar7 = 0; + do { + uVar11 = *puVar14; + uVar10 = puVar14[1]; + uVar8 = puVar14[2]; + uVar6 = puVar14[3]; + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + lVar12 = *plVar9 + lVar7; + uVar2 = *(ushort *)(*plVar9 + lVar7); + if (uVar2 <= uVar11) { + uVar2 = uVar11; + } + uVar11 = uVar2; + uVar2 = *(ushort *)(lVar12 + 2); + if (*(ushort *)(lVar12 + 2) <= uVar10) { + uVar2 = uVar10; + } + uVar10 = uVar2; + uVar2 = *(ushort *)(lVar12 + 4); + if (*(ushort *)(lVar12 + 4) <= uVar8) { + uVar2 = uVar8; + } + uVar8 = uVar2; + uVar2 = *(ushort *)(lVar12 + 6); + if (*(ushort *)(lVar12 + 6) <= uVar6) { + uVar2 = uVar6; + } + uVar6 = uVar2; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + puVar1 = (undefined8 *)(param_3 + lVar7); + lVar7 = lVar7 + 8; + puVar14 = puVar14 + 4; + *puVar1 = CONCAT26(uVar6,CONCAT24(uVar8,CONCAT22(uVar10,uVar11))); + } while (lVar7 != ((ulong)uVar4 + 1) * 8); + } + if (iVar3 < param_6) { + lVar12 = *plVar15; + lVar7 = (long)iVar3 << 1; + do { + uVar11 = *(ushort *)(lVar12 + lVar7); + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + uVar10 = *(ushort *)(*plVar9 + lVar7); + if (*(ushort *)(*plVar9 + lVar7) <= uVar11) { + uVar10 = uVar11; + } + uVar11 = uVar10; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + *(ushort *)(param_3 + lVar7) = uVar11; + lVar7 = lVar7 + 2; + } while (lVar7 != ((long)iVar3 + 1 + (ulong)(uint)((param_6 + -1) - iVar3)) * 2); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dc628 (520 bytes) name=FUN_001dc628 + +void FUN_001dc628(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + long lVar5; + undefined1 *puVar6; + long *plVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + long *plVar12; + long *plVar13; + long lVar14; + + param_6 = param_6 * param_7; + lVar14 = *(long *)(param_1 + 0x18); + plVar13 = *(long **)(param_1 + 0x30); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar14 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)((long)plVar13 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar14 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar14 + lVar5)); + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar5 = 0; + puVar6 = param_3; + do { + lVar2 = *plVar13 + lVar5; + uVar11 = (uint)*(byte *)(*plVar13 + lVar5); + uVar10 = (uint)*(byte *)(lVar2 + 1); + uVar9 = (uint)*(byte *)(lVar2 + 2); + uVar8 = (uint)*(byte *)(lVar2 + 3); + if (1 < iVar4) { + plVar7 = plVar13 + 1; + do { + plVar12 = plVar7 + 1; + lVar2 = *plVar7 + lVar5; + uVar11 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(*plVar7 + lVar5) - uVar11) + 0x100)] + + uVar11 & 0xff; + uVar10 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar2 + 1) - uVar10) + 0x100)] + + uVar10 & 0xff; + uVar9 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar2 + 2) - uVar9) + 0x100)] + uVar9 + & 0xff; + uVar8 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar2 + 3) - uVar8) + 0x100)] + uVar8 + & 0xff; + plVar7 = plVar12; + } while (plVar12 != plVar13 + (ulong)(iVar4 - 2) + 2); + } + *puVar6 = (char)uVar11; + puVar6[1] = (char)uVar10; + lVar5 = lVar5 + 4; + puVar6[2] = (char)uVar9; + puVar6[3] = (char)uVar8; + puVar6 = puVar6 + 4; + } while ((int)lVar5 < iVar3); + } + lVar5 = (long)iVar1; + if (iVar1 < param_6) { + do { + uVar8 = (uint)*(byte *)(*plVar13 + lVar5); + if (1 < iVar4) { + plVar7 = plVar13 + 1; + do { + plVar12 = plVar7 + 1; + uVar8 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(*plVar7 + lVar5) - uVar8) + 0x100)] + + uVar8 & 0xff; + plVar7 = plVar12; + } while (plVar12 != plVar13 + (ulong)(iVar4 - 2) + 2); + } + param_3[lVar5] = (char)uVar8; + lVar5 = lVar5 + 1; + } while (lVar5 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dc830 (528 bytes) name=FUN_001dc830 + +void FUN_001dc830(long param_1,long param_2,double *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + uint uVar2; + int iVar3; + long lVar4; + long *plVar5; + long lVar6; + long lVar7; + double *pdVar8; + double *pdVar9; + long *plVar10; + long lVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + + param_6 = param_6 * param_7; + lVar11 = *(long *)(param_1 + 0x18); + plVar10 = *(long **)(param_1 + 0x30); + iVar3 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + uVar2 = param_6 - 4U >> 2; + iVar1 = (uVar2 + 1) * 4; + if (param_6 + -3 < 1) { + iVar1 = 0; + } + do { + lVar4 = 0; + if (0 < iVar3) { + do { + *(long *)((long)plVar10 + lVar4) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar4 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar4)) * 8; + lVar4 = lVar4 + 8; + } while (lVar4 != ((ulong)(iVar3 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + pdVar8 = (double *)*plVar10; + lVar4 = 0; + pdVar9 = param_3; + do { + dVar18 = *pdVar8; + dVar16 = pdVar8[1]; + dVar14 = pdVar8[2]; + dVar12 = pdVar8[3]; + if (1 < iVar3) { + plVar5 = plVar10 + 1; + dVar13 = dVar12; + dVar15 = dVar14; + dVar17 = dVar16; + dVar19 = dVar18; + do { + lVar6 = *plVar5; + plVar5 = plVar5 + 1; + lVar7 = lVar6 + lVar4; + dVar18 = *(double *)(lVar6 + lVar4); + if (dVar19 <= dVar18) { + dVar18 = dVar19; + } + dVar16 = *(double *)(lVar7 + 8); + if (dVar17 <= *(double *)(lVar7 + 8)) { + dVar16 = dVar17; + } + dVar14 = *(double *)(lVar7 + 0x10); + if (dVar15 <= *(double *)(lVar7 + 0x10)) { + dVar14 = dVar15; + } + dVar12 = *(double *)(lVar7 + 0x18); + if (dVar13 <= *(double *)(lVar7 + 0x18)) { + dVar12 = dVar13; + } + dVar13 = dVar12; + dVar15 = dVar14; + dVar17 = dVar16; + dVar19 = dVar18; + } while (plVar5 != plVar10 + (ulong)(iVar3 - 2) + 2); + } + lVar4 = lVar4 + 0x20; + pdVar8 = pdVar8 + 4; + pdVar9[1] = dVar16; + *pdVar9 = dVar18; + pdVar9[3] = dVar12; + pdVar9[2] = dVar14; + pdVar9 = pdVar9 + 4; + } while (lVar4 != ((ulong)uVar2 + 1) * 0x20); + } + if (iVar1 < param_6) { + lVar7 = *plVar10; + lVar4 = (long)iVar1 << 3; + do { + dVar12 = *(double *)(lVar7 + lVar4); + if (1 < iVar3) { + plVar5 = plVar10 + 1; + dVar16 = dVar12; + do { + lVar6 = *plVar5; + plVar5 = plVar5 + 1; + dVar12 = *(double *)(lVar6 + lVar4); + if (dVar16 <= *(double *)(lVar6 + lVar4)) { + dVar12 = dVar16; + } + dVar16 = dVar12; + } while (plVar5 != plVar10 + (ulong)(iVar3 - 2) + 2); + } + *(double *)((long)param_3 + lVar4) = dVar12; + lVar4 = lVar4 + 8; + } while (lVar4 != ((long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)) * 8); + } + param_5 = param_5 + -1; + param_3 = (double *)((long)param_3 + (long)param_4); + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dca40 (500 bytes) name=FUN_001dca40 + +void FUN_001dca40(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + undefined8 *puVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + long *plVar6; + long lVar7; + long lVar8; + float *pfVar9; + long *plVar10; + long lVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + + param_6 = param_6 * param_7; + lVar11 = *(long *)(param_1 + 0x18); + plVar10 = *(long **)(param_1 + 0x30); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar11 >> 3); + if (0 < param_5) { + uVar3 = param_6 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (param_6 + -3 < 1) { + iVar2 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)((long)plVar10 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar11 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar11 + lVar5)) * 4; + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + pfVar9 = (float *)*plVar10; + lVar5 = 0; + do { + fVar16 = *pfVar9; + fVar15 = pfVar9[1]; + fVar13 = pfVar9[2]; + fVar12 = pfVar9[3]; + if (1 < iVar4) { + plVar6 = plVar10 + 1; + fVar14 = fVar13; + fVar17 = fVar16; + do { + lVar7 = *plVar6; + plVar6 = plVar6 + 1; + lVar8 = lVar7 + lVar5; + fVar16 = *(float *)(lVar7 + lVar5); + if (fVar17 <= fVar16) { + fVar16 = fVar17; + } + fVar13 = *(float *)(lVar8 + 4); + if (fVar15 <= *(float *)(lVar8 + 4)) { + fVar13 = fVar15; + } + fVar15 = fVar13; + fVar13 = *(float *)(lVar8 + 8); + if (fVar14 <= *(float *)(lVar8 + 8)) { + fVar13 = fVar14; + } + fVar14 = *(float *)(lVar8 + 0xc); + if (fVar12 <= *(float *)(lVar8 + 0xc)) { + fVar14 = fVar12; + } + fVar12 = fVar14; + fVar14 = fVar13; + fVar17 = fVar16; + } while (plVar6 != plVar10 + (ulong)(iVar4 - 2) + 2); + } + puVar1 = (undefined8 *)(param_3 + lVar5); + lVar5 = lVar5 + 0x10; + pfVar9 = pfVar9 + 4; + puVar1[1] = CONCAT44(fVar12,fVar13); + *puVar1 = CONCAT44(fVar15,fVar16); + } while (lVar5 != ((ulong)uVar3 + 1) * 0x10); + } + if (iVar2 < param_6) { + lVar8 = *plVar10; + lVar5 = (long)iVar2 << 2; + do { + fVar13 = *(float *)(lVar8 + lVar5); + if (1 < iVar4) { + plVar6 = plVar10 + 1; + do { + lVar7 = *plVar6; + plVar6 = plVar6 + 1; + fVar16 = *(float *)(lVar7 + lVar5); + if (fVar13 <= *(float *)(lVar7 + lVar5)) { + fVar16 = fVar13; + } + fVar13 = fVar16; + } while (plVar6 != plVar10 + (ulong)(iVar4 - 2) + 2); + } + *(float *)(param_3 + lVar5) = fVar13; + lVar5 = lVar5 + 4; + } while (lVar5 != ((long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)) * 4); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dcc34 (492 bytes) name=FUN_001dcc34 + +void FUN_001dcc34(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + undefined8 *puVar1; + short sVar2; + int iVar3; + uint uVar4; + int iVar5; + short sVar6; + long lVar7; + short sVar8; + long *plVar9; + short sVar10; + short sVar11; + long lVar12; + long *plVar13; + short *psVar14; + long *plVar15; + long lVar16; + + param_6 = param_6 * param_7; + lVar16 = *(long *)(param_1 + 0x18); + plVar15 = *(long **)(param_1 + 0x30); + iVar5 = (int)(*(long *)(param_1 + 0x20) - lVar16 >> 3); + if (0 < param_5) { + uVar4 = param_6 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_6 + -3 < 1) { + iVar3 = 0; + } + do { + lVar7 = 0; + if (0 < iVar5) { + do { + *(long *)((long)plVar15 + lVar7) = + *(long *)(param_2 + (long)*(int *)(lVar16 + lVar7 + 4) * 8) + + (long)(param_7 * *(int *)(lVar16 + lVar7)) * 2; + lVar7 = lVar7 + 8; + } while (lVar7 != ((ulong)(iVar5 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + psVar14 = (short *)*plVar15; + lVar7 = 0; + do { + sVar11 = *psVar14; + sVar10 = psVar14[1]; + sVar8 = psVar14[2]; + sVar6 = psVar14[3]; + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + lVar12 = *plVar9 + lVar7; + sVar2 = *(short *)(*plVar9 + lVar7); + if (sVar11 <= sVar2) { + sVar2 = sVar11; + } + sVar11 = sVar2; + sVar2 = *(short *)(lVar12 + 2); + if (sVar10 <= *(short *)(lVar12 + 2)) { + sVar2 = sVar10; + } + sVar10 = sVar2; + sVar2 = *(short *)(lVar12 + 4); + if (sVar8 <= *(short *)(lVar12 + 4)) { + sVar2 = sVar8; + } + sVar8 = sVar2; + sVar2 = *(short *)(lVar12 + 6); + if (sVar6 <= *(short *)(lVar12 + 6)) { + sVar2 = sVar6; + } + sVar6 = sVar2; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + puVar1 = (undefined8 *)(param_3 + lVar7); + lVar7 = lVar7 + 8; + psVar14 = psVar14 + 4; + *puVar1 = CONCAT26(sVar6,CONCAT24(sVar8,CONCAT22(sVar10,sVar11))); + } while (lVar7 != ((ulong)uVar4 + 1) * 8); + } + if (iVar3 < param_6) { + lVar12 = *plVar15; + lVar7 = (long)iVar3 << 1; + do { + sVar11 = *(short *)(lVar12 + lVar7); + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + sVar10 = *(short *)(*plVar9 + lVar7); + if (sVar11 <= *(short *)(*plVar9 + lVar7)) { + sVar10 = sVar11; + } + sVar11 = sVar10; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + *(short *)(param_3 + lVar7) = sVar11; + lVar7 = lVar7 + 2; + } while (lVar7 != ((long)iVar3 + 1 + (ulong)(uint)((param_6 + -1) - iVar3)) * 2); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dce20 (492 bytes) name=FUN_001dce20 + +void FUN_001dce20(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + undefined8 *puVar1; + ushort uVar2; + int iVar3; + uint uVar4; + int iVar5; + ushort uVar6; + long lVar7; + ushort uVar8; + long *plVar9; + ushort uVar10; + ushort uVar11; + long lVar12; + long *plVar13; + ushort *puVar14; + long *plVar15; + long lVar16; + + param_6 = param_6 * param_7; + lVar16 = *(long *)(param_1 + 0x18); + plVar15 = *(long **)(param_1 + 0x30); + iVar5 = (int)(*(long *)(param_1 + 0x20) - lVar16 >> 3); + if (0 < param_5) { + uVar4 = param_6 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_6 + -3 < 1) { + iVar3 = 0; + } + do { + lVar7 = 0; + if (0 < iVar5) { + do { + *(long *)((long)plVar15 + lVar7) = + *(long *)(param_2 + (long)*(int *)(lVar16 + lVar7 + 4) * 8) + + (long)(param_7 * *(int *)(lVar16 + lVar7)) * 2; + lVar7 = lVar7 + 8; + } while (lVar7 != ((ulong)(iVar5 - 1) + 1) * 8); + } + if (0 < param_6 + -3) { + puVar14 = (ushort *)*plVar15; + lVar7 = 0; + do { + uVar11 = *puVar14; + uVar10 = puVar14[1]; + uVar8 = puVar14[2]; + uVar6 = puVar14[3]; + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + lVar12 = *plVar9 + lVar7; + uVar2 = *(ushort *)(*plVar9 + lVar7); + if (uVar11 <= uVar2) { + uVar2 = uVar11; + } + uVar11 = uVar2; + uVar2 = *(ushort *)(lVar12 + 2); + if (uVar10 <= *(ushort *)(lVar12 + 2)) { + uVar2 = uVar10; + } + uVar10 = uVar2; + uVar2 = *(ushort *)(lVar12 + 4); + if (uVar8 <= *(ushort *)(lVar12 + 4)) { + uVar2 = uVar8; + } + uVar8 = uVar2; + uVar2 = *(ushort *)(lVar12 + 6); + if (uVar6 <= *(ushort *)(lVar12 + 6)) { + uVar2 = uVar6; + } + uVar6 = uVar2; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + puVar1 = (undefined8 *)(param_3 + lVar7); + lVar7 = lVar7 + 8; + puVar14 = puVar14 + 4; + *puVar1 = CONCAT26(uVar6,CONCAT24(uVar8,CONCAT22(uVar10,uVar11))); + } while (lVar7 != ((ulong)uVar4 + 1) * 8); + } + if (iVar3 < param_6) { + lVar12 = *plVar15; + lVar7 = (long)iVar3 << 1; + do { + uVar11 = *(ushort *)(lVar12 + lVar7); + if (1 < iVar5) { + plVar9 = plVar15 + 1; + do { + plVar13 = plVar9 + 1; + uVar10 = *(ushort *)(*plVar9 + lVar7); + if (uVar11 <= *(ushort *)(*plVar9 + lVar7)) { + uVar10 = uVar11; + } + uVar11 = uVar10; + plVar9 = plVar13; + } while (plVar13 != plVar15 + (ulong)(iVar5 - 2) + 2); + } + *(ushort *)(param_3 + lVar7) = uVar11; + lVar7 = lVar7 + 2; + } while (lVar7 != ((long)iVar3 + 1 + (ulong)(uint)((param_6 + -1) - iVar3)) * 2); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dd00c (520 bytes) name=FUN_001dd00c + +void FUN_001dd00c(long param_1,long param_2,undefined1 *param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + long lVar5; + undefined1 *puVar6; + long *plVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + long *plVar12; + long *plVar13; + long lVar14; + + param_6 = param_6 * param_7; + lVar14 = *(long *)(param_1 + 0x18); + plVar13 = *(long **)(param_1 + 0x30); + iVar4 = (int)(*(long *)(param_1 + 0x20) - lVar14 >> 3); + if (0 < param_5) { + iVar3 = param_6 + -3; + iVar1 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar3 < 1) { + iVar1 = 0; + } + do { + lVar5 = 0; + if (0 < iVar4) { + do { + *(long *)((long)plVar13 + lVar5) = + *(long *)(param_2 + (long)*(int *)(lVar14 + lVar5 + 4) * 8) + + (long)(param_7 * *(int *)(lVar14 + lVar5)); + lVar5 = lVar5 + 8; + } while (lVar5 != ((ulong)(iVar4 - 1) + 1) * 8); + } + if (0 < iVar3) { + lVar5 = 0; + puVar6 = param_3; + do { + lVar2 = *plVar13 + lVar5; + uVar11 = (uint)*(byte *)(*plVar13 + lVar5); + uVar10 = (uint)*(byte *)(lVar2 + 1); + uVar9 = (uint)*(byte *)(lVar2 + 2); + uVar8 = (uint)*(byte *)(lVar2 + 3); + if (1 < iVar4) { + plVar7 = plVar13 + 1; + do { + plVar12 = plVar7 + 1; + lVar2 = *plVar7 + lVar5; + uVar11 = uVar11 - (byte)PTR_DAT_00501b38 + [(int)((uVar11 - *(byte *)(*plVar7 + lVar5)) + 0x100)] & 0xff; + uVar10 = uVar10 - (byte)PTR_DAT_00501b38 + [(int)((uVar10 - *(byte *)(lVar2 + 1)) + 0x100)] & 0xff; + uVar9 = uVar9 - (byte)PTR_DAT_00501b38[(int)((uVar9 - *(byte *)(lVar2 + 2)) + 0x100)] + & 0xff; + uVar8 = uVar8 - (byte)PTR_DAT_00501b38[(int)((uVar8 - *(byte *)(lVar2 + 3)) + 0x100)] + & 0xff; + plVar7 = plVar12; + } while (plVar12 != plVar13 + (ulong)(iVar4 - 2) + 2); + } + *puVar6 = (char)uVar11; + puVar6[1] = (char)uVar10; + lVar5 = lVar5 + 4; + puVar6[2] = (char)uVar9; + puVar6[3] = (char)uVar8; + puVar6 = puVar6 + 4; + } while ((int)lVar5 < iVar3); + } + lVar5 = (long)iVar1; + if (iVar1 < param_6) { + do { + uVar8 = (uint)*(byte *)(*plVar13 + lVar5); + if (1 < iVar4) { + plVar7 = plVar13 + 1; + do { + plVar12 = plVar7 + 1; + uVar8 = uVar8 - (byte)PTR_DAT_00501b38 + [(int)((uVar8 - *(byte *)(*plVar7 + lVar5)) + 0x100)] & 0xff; + plVar7 = plVar12; + } while (plVar12 != plVar13 + (ulong)(iVar4 - 2) + 2); + } + param_3[lVar5] = (char)uVar8; + lVar5 = lVar5 + 1; + } while (lVar5 != (long)iVar1 + 1 + (ulong)(uint)((param_6 + -1) - iVar1)); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = param_2 + 8; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dd214 (1112 bytes) name=FUN_001dd214 + +void FUN_001dd214(long param_1,long *param_2,double *param_3,int param_4,int param_5,int param_6) + +{ + long *plVar1; + ulong uVar2; + uint uVar3; + int iVar4; + uint uVar5; + long *plVar6; + ulong uVar7; + long *plVar8; + long lVar9; + int iVar10; + ulong uVar11; + ulong uVar12; + long lVar13; + long lVar14; + long *plVar15; + double *pdVar16; + double *pdVar17; + double *pdVar18; + long lVar19; + double *pdVar20; + ulong uVar21; + ulong uVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + + uVar11 = (ulong)param_4; + uVar22 = uVar11 >> 3; + uVar3 = *(uint *)(param_1 + 8); + if ((1 < param_5) && (1 < (int)uVar3)) { + uVar5 = param_6 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (param_6 + -3 < 1) { + iVar4 = 0; + } + uVar12 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; + plVar15 = param_2 + (ulong)(uVar3 - 3) + 3; + uVar21 = -(uVar11 >> 0x22 & 1) & 0xfffffff800000000 | (uVar22 & 0xffffffff) << 3; + uVar2 = uVar12; + if ((int)uVar3 < 3) { + uVar2 = 0x10; + } + plVar8 = param_2; + do { + param_2 = plVar8 + 2; + if (0 < param_6 + -3) { + pdVar20 = (double *)plVar8[1]; + pdVar16 = (double *)*plVar8; + lVar13 = 0; + pdVar17 = param_3; + pdVar18 = (double *)((long)param_3 + uVar21); + do { + dVar30 = *pdVar20; + dVar28 = pdVar20[1]; + dVar26 = pdVar20[2]; + dVar24 = pdVar20[3]; + plVar6 = param_2; + dVar25 = dVar26; + dVar27 = dVar28; + dVar29 = dVar30; + if (uVar3 == 2) { + uVar7 = 0x10; + dVar23 = dVar24; + } + else { + do { + plVar1 = plVar6 + 1; + lVar14 = *plVar6 + lVar13; + dVar30 = *(double *)(*plVar6 + lVar13); + if (dVar30 <= dVar29) { + dVar30 = dVar29; + } + dVar28 = *(double *)(lVar14 + 8); + if (*(double *)(lVar14 + 8) <= dVar27) { + dVar28 = dVar27; + } + dVar26 = *(double *)(lVar14 + 0x10); + if (*(double *)(lVar14 + 0x10) <= dVar25) { + dVar26 = dVar25; + } + dVar23 = *(double *)(lVar14 + 0x18); + if (*(double *)(lVar14 + 0x18) <= dVar24) { + dVar23 = dVar24; + } + uVar7 = uVar12; + plVar6 = plVar1; + dVar24 = dVar23; + dVar25 = dVar26; + dVar27 = dVar28; + dVar29 = dVar30; + } while (plVar15 != plVar1); + } + dVar24 = *pdVar16; + if (*pdVar16 <= dVar30) { + dVar24 = dVar30; + } + *pdVar17 = dVar24; + dVar24 = pdVar16[1]; + if (pdVar16[1] <= dVar28) { + dVar24 = dVar28; + } + pdVar17[1] = dVar24; + dVar24 = pdVar16[2]; + if (pdVar16[2] <= dVar26) { + dVar24 = dVar26; + } + pdVar17[2] = dVar24; + dVar24 = pdVar16[3]; + if (pdVar16[3] <= dVar23) { + dVar24 = dVar23; + } + lVar9 = *(long *)((long)plVar8 + uVar7); + pdVar17[3] = dVar24; + lVar14 = lVar9 + lVar13; + dVar24 = *(double *)(lVar9 + lVar13); + if (dVar24 <= dVar30) { + dVar24 = dVar30; + } + *pdVar18 = dVar24; + dVar30 = *(double *)(lVar14 + 8); + if (*(double *)(lVar14 + 8) <= dVar28) { + dVar30 = dVar28; + } + pdVar18[1] = dVar30; + dVar28 = *(double *)(lVar14 + 0x10); + if (*(double *)(lVar14 + 0x10) <= dVar26) { + dVar28 = dVar26; + } + pdVar18[2] = dVar28; + dVar28 = *(double *)(lVar14 + 0x18); + if (*(double *)(lVar14 + 0x18) <= dVar23) { + dVar28 = dVar23; + } + lVar13 = lVar13 + 0x20; + pdVar20 = pdVar20 + 4; + pdVar18[3] = dVar28; + pdVar17 = pdVar17 + 4; + pdVar16 = pdVar16 + 4; + pdVar18 = pdVar18 + 4; + } while (lVar13 != ((ulong)uVar5 + 1) * 0x20); + } + if (iVar4 < param_6) { + lVar19 = plVar8[1]; + lVar9 = *plVar8; + lVar14 = *(long *)((long)plVar8 + uVar2); + lVar13 = (long)iVar4 << 3; + do { + dVar28 = *(double *)(lVar19 + lVar13); + plVar8 = param_2; + dVar26 = dVar28; + if (uVar3 != 2) { + do { + plVar6 = plVar8 + 1; + dVar28 = *(double *)(*plVar8 + lVar13); + if (*(double *)(*plVar8 + lVar13) <= dVar26) { + dVar28 = dVar26; + } + plVar8 = plVar6; + dVar26 = dVar28; + } while (plVar15 != plVar6); + } + dVar26 = *(double *)(lVar9 + lVar13); + if (*(double *)(lVar9 + lVar13) <= dVar28) { + dVar26 = dVar28; + } + *(double *)((long)param_3 + lVar13) = dVar26; + dVar26 = *(double *)(lVar14 + lVar13); + if (dVar26 <= dVar28) { + dVar26 = dVar28; + } + *(double *)((long)param_3 + lVar13 + uVar21) = dVar26; + lVar13 = lVar13 + 8; + } while (lVar13 != ((long)iVar4 + 1 + (ulong)(uint)((param_6 + -1) - iVar4)) * 8); + } + param_5 = param_5 + -2; + param_3 = (double *) + ((long)param_3 + + (-(ulong)(((uint)uVar22 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)((uint)uVar22 << 1) << 3)); + plVar15 = plVar15 + 2; + plVar8 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar5 = param_6 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (param_6 + -3 < 1) { + iVar4 = 0; + } + do { + plVar15 = param_2 + 1; + if (0 < param_6 + -3) { + pdVar20 = (double *)*param_2; + lVar13 = 0; + pdVar17 = param_3; + do { + dVar24 = *pdVar20; + dVar26 = pdVar20[1]; + dVar30 = pdVar20[2]; + dVar28 = pdVar20[3]; + if (1 < (int)uVar3) { + iVar10 = 1; + plVar8 = plVar15; + dVar25 = dVar28; + dVar27 = dVar30; + dVar29 = dVar26; + dVar23 = dVar24; + do { + lVar9 = *plVar8; + iVar10 = iVar10 + 1; + plVar8 = plVar8 + 1; + lVar14 = lVar9 + lVar13; + dVar24 = *(double *)(lVar9 + lVar13); + if (dVar24 <= dVar23) { + dVar24 = dVar23; + } + dVar26 = *(double *)(lVar14 + 8); + if (*(double *)(lVar14 + 8) <= dVar29) { + dVar26 = dVar29; + } + dVar30 = *(double *)(lVar14 + 0x10); + if (*(double *)(lVar14 + 0x10) <= dVar27) { + dVar30 = dVar27; + } + dVar28 = *(double *)(lVar14 + 0x18); + if (*(double *)(lVar14 + 0x18) <= dVar25) { + dVar28 = dVar25; + } + dVar25 = dVar28; + dVar27 = dVar30; + dVar29 = dVar26; + dVar23 = dVar24; + } while (iVar10 < (int)uVar3); + } + lVar13 = lVar13 + 0x20; + pdVar20 = pdVar20 + 4; + pdVar17[1] = dVar26; + *pdVar17 = dVar24; + pdVar17[3] = dVar28; + pdVar17[2] = dVar30; + pdVar17 = pdVar17 + 4; + } while (lVar13 != ((ulong)uVar5 + 1) * 0x20); + } + if (iVar4 < param_6) { + lVar14 = *param_2; + lVar13 = (long)iVar4 << 3; + do { + dVar28 = *(double *)(lVar14 + lVar13); + if (1 < (int)uVar3) { + iVar10 = 1; + plVar8 = plVar15; + dVar26 = dVar28; + do { + lVar9 = *plVar8; + iVar10 = iVar10 + 1; + plVar8 = plVar8 + 1; + dVar28 = *(double *)(lVar9 + lVar13); + if (*(double *)(lVar9 + lVar13) <= dVar26) { + dVar28 = dVar26; + } + dVar26 = dVar28; + } while (iVar10 < (int)uVar3); + } + *(double *)((long)param_3 + lVar13) = dVar28; + lVar13 = lVar13 + 8; + } while (lVar13 != ((long)iVar4 + 1 + (ulong)(uint)((param_6 + -1) - iVar4)) * 8); + } + param_5 = param_5 + -1; + param_3 = (double *) + ((long)param_3 + + (-(uVar11 >> 0x22 & 1) & 0xfffffff800000000 | (uVar22 & 0xffffffff) << 3)); + param_2 = plVar15; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dd66c (1092 bytes) name=FUN_001dd66c + +void FUN_001dd66c(long param_1,long *param_2,float *param_3,int param_4,int param_5,int param_6) + +{ + long *plVar1; + undefined8 *puVar2; + ulong uVar3; + uint uVar4; + int iVar5; + uint uVar6; + long *plVar7; + ulong uVar8; + long *plVar9; + long lVar10; + int iVar11; + ulong uVar12; + ulong uVar13; + long lVar14; + long lVar15; + long *plVar16; + float *pfVar17; + float *pfVar18; + float *pfVar19; + long lVar20; + float *pfVar21; + ulong uVar22; + ulong uVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + + uVar12 = (ulong)param_4; + uVar23 = uVar12 >> 2; + uVar4 = *(uint *)(param_1 + 8); + if ((1 < param_5) && (1 < (int)uVar4)) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + uVar13 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3; + plVar16 = param_2 + (ulong)(uVar4 - 3) + 3; + uVar22 = -(uVar12 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar23 & 0xffffffff) << 2; + uVar3 = uVar13; + if ((int)uVar4 < 3) { + uVar3 = 0x10; + } + plVar9 = param_2; + do { + param_2 = plVar9 + 2; + if (0 < param_6 + -3) { + pfVar21 = (float *)plVar9[1]; + pfVar17 = (float *)*plVar9; + lVar14 = 0; + pfVar18 = param_3; + pfVar19 = (float *)((long)param_3 + uVar22); + do { + fVar29 = *pfVar21; + fVar28 = pfVar21[1]; + fVar27 = pfVar21[2]; + fVar25 = pfVar21[3]; + plVar7 = param_2; + fVar24 = fVar27; + fVar26 = fVar29; + if (uVar4 == 2) { + uVar8 = 0x10; + } + else { + do { + plVar1 = plVar7 + 1; + lVar15 = *plVar7 + lVar14; + fVar29 = *(float *)(*plVar7 + lVar14); + if (fVar29 <= fVar26) { + fVar29 = fVar26; + } + fVar27 = *(float *)(lVar15 + 4); + if (*(float *)(lVar15 + 4) <= fVar28) { + fVar27 = fVar28; + } + fVar28 = fVar27; + fVar27 = *(float *)(lVar15 + 8); + if (*(float *)(lVar15 + 8) <= fVar24) { + fVar27 = fVar24; + } + fVar24 = *(float *)(lVar15 + 0xc); + if (*(float *)(lVar15 + 0xc) <= fVar25) { + fVar24 = fVar25; + } + fVar25 = fVar24; + uVar8 = uVar13; + plVar7 = plVar1; + fVar24 = fVar27; + fVar26 = fVar29; + } while (plVar16 != plVar1); + } + fVar24 = *pfVar17; + if (*pfVar17 <= fVar29) { + fVar24 = fVar29; + } + *pfVar18 = fVar24; + fVar24 = pfVar17[1]; + if (pfVar17[1] <= fVar28) { + fVar24 = fVar28; + } + pfVar18[1] = fVar24; + fVar24 = pfVar17[2]; + if (pfVar17[2] <= fVar27) { + fVar24 = fVar27; + } + pfVar18[2] = fVar24; + fVar24 = pfVar17[3]; + if (pfVar17[3] <= fVar25) { + fVar24 = fVar25; + } + lVar10 = *(long *)((long)plVar9 + uVar8); + pfVar18[3] = fVar24; + lVar15 = lVar10 + lVar14; + fVar24 = *(float *)(lVar10 + lVar14); + if (fVar24 <= fVar29) { + fVar24 = fVar29; + } + *pfVar19 = fVar24; + fVar29 = *(float *)(lVar15 + 4); + if (*(float *)(lVar15 + 4) <= fVar28) { + fVar29 = fVar28; + } + pfVar19[1] = fVar29; + fVar29 = *(float *)(lVar15 + 8); + if (*(float *)(lVar15 + 8) <= fVar27) { + fVar29 = fVar27; + } + pfVar19[2] = fVar29; + fVar27 = *(float *)(lVar15 + 0xc); + if (*(float *)(lVar15 + 0xc) <= fVar25) { + fVar27 = fVar25; + } + lVar14 = lVar14 + 0x10; + pfVar21 = pfVar21 + 4; + pfVar19[3] = fVar27; + pfVar18 = pfVar18 + 4; + pfVar17 = pfVar17 + 4; + pfVar19 = pfVar19 + 4; + } while (lVar14 != ((ulong)uVar6 + 1) * 0x10); + } + if (iVar5 < param_6) { + lVar20 = plVar9[1]; + lVar10 = *plVar9; + lVar15 = *(long *)((long)plVar9 + uVar3); + lVar14 = (long)iVar5 << 2; + do { + fVar27 = *(float *)(lVar20 + lVar14); + plVar9 = param_2; + if (uVar4 != 2) { + do { + plVar7 = plVar9 + 1; + fVar29 = *(float *)(*plVar9 + lVar14); + if (*(float *)(*plVar9 + lVar14) <= fVar27) { + fVar29 = fVar27; + } + fVar27 = fVar29; + plVar9 = plVar7; + } while (plVar16 != plVar7); + } + fVar29 = *(float *)(lVar10 + lVar14); + if (*(float *)(lVar10 + lVar14) <= fVar27) { + fVar29 = fVar27; + } + *(float *)((long)param_3 + lVar14) = fVar29; + fVar29 = *(float *)(lVar15 + lVar14); + if (fVar29 <= fVar27) { + fVar29 = fVar27; + } + *(float *)((long)param_3 + lVar14 + uVar22) = fVar29; + lVar14 = lVar14 + 4; + } while (lVar14 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 4); + } + param_5 = param_5 + -2; + param_3 = (float *)((long)param_3 + + (-(ulong)(((uint)uVar23 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)((uint)uVar23 << 1) << 2)); + plVar16 = plVar16 + 2; + plVar9 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + do { + plVar16 = param_2 + 1; + if (0 < param_6 + -3) { + pfVar21 = (float *)*param_2; + lVar14 = 0; + do { + fVar29 = *pfVar21; + fVar24 = pfVar21[1]; + fVar27 = pfVar21[2]; + fVar26 = pfVar21[3]; + if (1 < (int)uVar4) { + iVar11 = 1; + plVar9 = plVar16; + fVar28 = fVar27; + fVar25 = fVar29; + do { + lVar10 = *plVar9; + iVar11 = iVar11 + 1; + plVar9 = plVar9 + 1; + lVar15 = lVar10 + lVar14; + fVar29 = *(float *)(lVar10 + lVar14); + if (fVar29 <= fVar25) { + fVar29 = fVar25; + } + fVar27 = *(float *)(lVar15 + 4); + if (*(float *)(lVar15 + 4) <= fVar24) { + fVar27 = fVar24; + } + fVar24 = fVar27; + fVar27 = *(float *)(lVar15 + 8); + if (*(float *)(lVar15 + 8) <= fVar28) { + fVar27 = fVar28; + } + fVar28 = *(float *)(lVar15 + 0xc); + if (*(float *)(lVar15 + 0xc) <= fVar26) { + fVar28 = fVar26; + } + fVar26 = fVar28; + fVar28 = fVar27; + fVar25 = fVar29; + } while (iVar11 < (int)uVar4); + } + puVar2 = (undefined8 *)((long)param_3 + lVar14); + lVar14 = lVar14 + 0x10; + pfVar21 = pfVar21 + 4; + puVar2[1] = CONCAT44(fVar26,fVar27); + *puVar2 = CONCAT44(fVar24,fVar29); + } while (lVar14 != ((ulong)uVar6 + 1) * 0x10); + } + if (iVar5 < param_6) { + lVar15 = *param_2; + lVar14 = (long)iVar5 << 2; + do { + fVar27 = *(float *)(lVar15 + lVar14); + if (1 < (int)uVar4) { + iVar11 = 1; + plVar9 = plVar16; + do { + lVar10 = *plVar9; + iVar11 = iVar11 + 1; + plVar9 = plVar9 + 1; + fVar29 = *(float *)(lVar10 + lVar14); + if (*(float *)(lVar10 + lVar14) <= fVar27) { + fVar29 = fVar27; + } + fVar27 = fVar29; + } while (iVar11 < (int)uVar4); + } + *(float *)((long)param_3 + lVar14) = fVar27; + lVar14 = lVar14 + 4; + } while (lVar14 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 4); + } + param_5 = param_5 + -1; + param_3 = (float *)((long)param_3 + + (-(uVar12 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar23 & 0xffffffff) << 2)); + param_2 = plVar16; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001ddab0 (1044 bytes) name=FUN_001ddab0 + +void FUN_001ddab0(long param_1,long *param_2,undefined2 *param_3,int param_4,int param_5,int param_6 + ) + +{ + short *psVar1; + ushort *puVar2; + undefined8 *puVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + ulong uVar8; + uint uVar9; + ushort uVar10; + short sVar11; + int iVar12; + uint uVar13; + uint uVar14; + short sVar15; + uint uVar16; + uint uVar17; + long *plVar18; + short sVar19; + short sVar20; + uint uVar21; + short sVar22; + uint uVar23; + int iVar24; + long *plVar25; + ulong uVar27; + long lVar28; + long lVar29; + long lVar30; + long lVar31; + long *plVar32; + undefined2 *puVar33; + ushort *puVar34; + undefined2 *puVar35; + short *psVar36; + ulong uVar37; + ulong uVar38; + ulong uVar39; + long *plVar26; + + uVar39 = (ulong)(long)param_4 >> 1; + uVar9 = *(uint *)(param_1 + 8); + uVar14 = (uint)uVar39; + if ((1 < param_5) && (1 < (int)uVar9)) { + uVar13 = param_6 - 4U >> 2; + iVar12 = (uVar13 + 1) * 4; + if (param_6 + -3 < 1) { + iVar12 = 0; + } + uVar37 = -(ulong)(uVar9 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar9 << 3; + plVar32 = param_2 + (ulong)(uVar9 - 3) + 3; + uVar38 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffe00000000 | (uVar39 & 0xffffffff) << 1; + uVar8 = uVar37; + if ((int)uVar9 < 3) { + uVar8 = 0x10; + } + plVar18 = param_2; + do { + param_2 = plVar18 + 2; + if (0 < param_6 + -3) { + psVar36 = (short *)plVar18[1]; + lVar31 = 0; + puVar33 = (undefined2 *)((long)param_3 + uVar38); + puVar34 = (ushort *)*plVar18; + puVar35 = param_3; + do { + uVar23 = (uint)*psVar36; + uVar21 = (uint)psVar36[1]; + uVar17 = (uint)psVar36[2]; + uVar16 = (uint)psVar36[3]; + plVar25 = param_2; + if (uVar9 == 2) { + uVar27 = 0x10; + } + else { + do { + plVar26 = plVar25 + 1; + lVar29 = *plVar25 + lVar31; + uVar10 = *(ushort *)(*plVar25 + lVar31); + uVar7 = (uint)uVar10; + if ((int)(short)uVar10 <= (int)uVar23) { + uVar7 = uVar23; + } + uVar4 = (uint)*(ushort *)(lVar29 + 2); + if ((int)(short)*(ushort *)(lVar29 + 2) <= (int)uVar21) { + uVar4 = uVar21; + } + uVar5 = (uint)*(ushort *)(lVar29 + 4); + if ((int)(short)*(ushort *)(lVar29 + 4) <= (int)uVar17) { + uVar5 = uVar17; + } + uVar6 = (uint)*(ushort *)(lVar29 + 6); + if ((int)(short)*(ushort *)(lVar29 + 6) <= (int)uVar16) { + uVar6 = uVar16; + } + uVar23 = (uint)(short)uVar7; + uVar21 = (uint)(short)uVar4; + uVar17 = (uint)(short)uVar5; + uVar16 = (uint)(short)uVar6; + uVar27 = uVar37; + plVar25 = plVar26; + } while (plVar32 != plVar26); + } + lVar29 = *(long *)((long)plVar18 + uVar27); + uVar7 = (uint)*puVar34; + if ((int)(short)*puVar34 <= (int)uVar23) { + uVar7 = uVar23; + } + *puVar35 = (short)uVar7; + lVar28 = lVar29 + lVar31; + psVar36 = psVar36 + 4; + uVar7 = (uint)puVar34[1]; + if ((int)(short)puVar34[1] <= (int)uVar21) { + uVar7 = uVar21; + } + puVar35[1] = (short)uVar7; + uVar7 = (uint)puVar34[2]; + if ((int)(short)puVar34[2] <= (int)uVar17) { + uVar7 = uVar17; + } + puVar35[2] = (short)uVar7; + uVar7 = (uint)puVar34[3]; + if ((int)(short)puVar34[3] <= (int)uVar16) { + uVar7 = uVar16; + } + puVar35[3] = (short)uVar7; + psVar1 = (short *)(lVar29 + lVar31); + puVar2 = (ushort *)(lVar29 + lVar31); + lVar31 = lVar31 + 8; + uVar7 = (uint)*puVar2; + if ((int)*psVar1 < (int)uVar23) { + uVar7 = uVar23; + } + *puVar33 = (short)uVar7; + uVar23 = (uint)*(ushort *)(lVar28 + 2); + if ((int)*(short *)(lVar28 + 2) < (int)uVar21) { + uVar23 = uVar21; + } + puVar33[1] = (short)uVar23; + uVar23 = (uint)*(ushort *)(lVar28 + 4); + if ((int)*(short *)(lVar28 + 4) < (int)uVar17) { + uVar23 = uVar17; + } + puVar33[2] = (short)uVar23; + uVar23 = (uint)*(ushort *)(lVar28 + 6); + if ((int)*(short *)(lVar28 + 6) < (int)uVar16) { + uVar23 = uVar16; + } + puVar33[3] = (short)uVar23; + puVar33 = puVar33 + 4; + puVar34 = puVar34 + 4; + puVar35 = puVar35 + 4; + } while (lVar31 != ((ulong)uVar13 + 1) * 8); + } + if (iVar12 < param_6) { + lVar30 = plVar18[1]; + lVar28 = *plVar18; + lVar29 = *(long *)((long)plVar18 + uVar8); + lVar31 = (long)iVar12 << 1; + do { + uVar23 = (uint)*(short *)(lVar30 + lVar31); + plVar18 = param_2; + if (uVar9 != 2) { + do { + plVar25 = plVar18 + 1; + uVar21 = (uint)*(ushort *)(*plVar18 + lVar31); + if ((int)(short)*(ushort *)(*plVar18 + lVar31) <= (int)uVar23) { + uVar21 = uVar23; + } + uVar23 = (uint)(short)uVar21; + plVar18 = plVar25; + } while (plVar32 != plVar25); + } + uVar21 = (uint)*(ushort *)(lVar28 + lVar31); + if ((int)(short)*(ushort *)(lVar28 + lVar31) <= (int)uVar23) { + uVar21 = uVar23; + } + *(short *)((long)param_3 + lVar31) = (short)uVar21; + uVar10 = *(ushort *)(lVar29 + lVar31); + uVar21 = (uint)uVar10; + if ((int)(short)uVar10 <= (int)uVar23) { + uVar21 = uVar23; + } + *(short *)((long)param_3 + lVar31 + uVar38) = (short)uVar21; + lVar31 = lVar31 + 2; + } while (lVar31 != ((long)iVar12 + 1 + (ulong)(uint)((param_6 + -1) - iVar12)) * 2); + } + param_5 = param_5 + -2; + plVar32 = plVar32 + 2; + param_3 = (undefined2 *) + ((long)param_3 + + (-(ulong)((uVar14 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar14 << 1) << 1)); + plVar18 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar13 = param_6 - 4U >> 2; + iVar12 = (uVar13 + 1) * 4; + if (param_6 + -3 < 1) { + iVar12 = 0; + } + do { + plVar32 = param_2 + 1; + if (0 < param_6 + -3) { + psVar36 = (short *)*param_2; + lVar31 = 0; + do { + sVar22 = *psVar36; + sVar20 = psVar36[1]; + sVar19 = psVar36[2]; + sVar15 = psVar36[3]; + if (1 < (int)uVar9) { + iVar24 = 1; + plVar18 = plVar32; + do { + iVar24 = iVar24 + 1; + lVar29 = *plVar18 + lVar31; + sVar11 = *(short *)(*plVar18 + lVar31); + if (sVar11 <= sVar22) { + sVar11 = sVar22; + } + sVar22 = sVar11; + sVar11 = *(short *)(lVar29 + 2); + if (*(short *)(lVar29 + 2) <= sVar20) { + sVar11 = sVar20; + } + sVar20 = sVar11; + sVar11 = *(short *)(lVar29 + 4); + if (*(short *)(lVar29 + 4) <= sVar19) { + sVar11 = sVar19; + } + sVar19 = sVar11; + sVar11 = *(short *)(lVar29 + 6); + if (*(short *)(lVar29 + 6) <= sVar15) { + sVar11 = sVar15; + } + sVar15 = sVar11; + plVar18 = plVar18 + 1; + } while (iVar24 < (int)uVar9); + } + puVar3 = (undefined8 *)((long)param_3 + lVar31); + lVar31 = lVar31 + 8; + psVar36 = psVar36 + 4; + *puVar3 = CONCAT26(sVar15,CONCAT24(sVar19,CONCAT22(sVar20,sVar22))); + } while (lVar31 != ((ulong)uVar13 + 1) * 8); + } + if (iVar12 < param_6) { + lVar29 = *param_2; + lVar31 = (long)iVar12 << 1; + do { + sVar22 = *(short *)(lVar29 + lVar31); + if (1 < (int)uVar9) { + iVar24 = 1; + plVar18 = plVar32; + do { + iVar24 = iVar24 + 1; + sVar20 = *(short *)(*plVar18 + lVar31); + if (*(short *)(*plVar18 + lVar31) <= sVar22) { + sVar20 = sVar22; + } + sVar22 = sVar20; + plVar18 = plVar18 + 1; + } while (iVar24 < (int)uVar9); + } + *(short *)((long)param_3 + lVar31) = sVar22; + lVar31 = lVar31 + 2; + } while (lVar31 != ((long)iVar12 + 1 + (ulong)(uint)((param_6 + -1) - iVar12)) * 2); + } + param_5 = param_5 + -1; + param_3 = (undefined2 *) + ((long)param_3 + + (-(ulong)(uVar14 >> 0x1f) & 0xfffffffe00000000 | (uVar39 & 0xffffffff) << 1)); + param_2 = plVar32; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001ddec4 (1028 bytes) name=FUN_001ddec4 + +void FUN_001ddec4(long param_1,long *param_2,ushort *param_3,int param_4,int param_5,int param_6) + +{ + undefined8 *puVar1; + ulong uVar2; + uint uVar3; + ushort uVar4; + int iVar5; + uint uVar6; + uint uVar7; + ushort uVar8; + long *plVar9; + ushort uVar10; + ushort uVar11; + ushort uVar12; + int iVar13; + long *plVar14; + ulong uVar16; + long lVar17; + long lVar18; + long lVar19; + long lVar20; + long *plVar21; + ushort *puVar22; + ushort *puVar23; + ushort *puVar24; + ushort *puVar25; + ulong uVar26; + ulong uVar27; + ulong uVar28; + long *plVar15; + + uVar28 = (ulong)(long)param_4 >> 1; + uVar3 = *(uint *)(param_1 + 8); + uVar7 = (uint)uVar28; + if ((1 < param_5) && (1 < (int)uVar3)) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + uVar26 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; + plVar21 = param_2 + (ulong)(uVar3 - 3) + 3; + uVar27 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffe00000000 | (uVar28 & 0xffffffff) << 1; + uVar2 = uVar26; + if ((int)uVar3 < 3) { + uVar2 = 0x10; + } + plVar9 = param_2; + do { + param_2 = plVar9 + 2; + if (0 < param_6 + -3) { + puVar25 = (ushort *)plVar9[1]; + lVar20 = 0; + puVar22 = (ushort *)((long)param_3 + uVar27); + puVar23 = (ushort *)*plVar9; + puVar24 = param_3; + do { + uVar12 = *puVar25; + uVar11 = puVar25[1]; + uVar10 = puVar25[2]; + uVar8 = puVar25[3]; + plVar14 = param_2; + if (uVar3 == 2) { + uVar16 = 0x10; + } + else { + do { + plVar15 = plVar14 + 1; + lVar18 = *plVar14 + lVar20; + uVar4 = *(ushort *)(*plVar14 + lVar20); + if (uVar4 <= uVar12) { + uVar4 = uVar12; + } + uVar12 = uVar4; + uVar4 = *(ushort *)(lVar18 + 2); + if (*(ushort *)(lVar18 + 2) <= uVar11) { + uVar4 = uVar11; + } + uVar11 = uVar4; + uVar4 = *(ushort *)(lVar18 + 4); + if (*(ushort *)(lVar18 + 4) <= uVar10) { + uVar4 = uVar10; + } + uVar10 = uVar4; + uVar4 = *(ushort *)(lVar18 + 6); + if (*(ushort *)(lVar18 + 6) <= uVar8) { + uVar4 = uVar8; + } + uVar8 = uVar4; + uVar16 = uVar26; + plVar14 = plVar15; + } while (plVar21 != plVar15); + } + lVar18 = *(long *)((long)plVar9 + uVar16); + uVar4 = *puVar23; + if (*puVar23 <= uVar12) { + uVar4 = uVar12; + } + *puVar24 = uVar4; + lVar17 = lVar18 + lVar20; + puVar25 = puVar25 + 4; + uVar4 = puVar23[1]; + if (puVar23[1] <= uVar11) { + uVar4 = uVar11; + } + puVar24[1] = uVar4; + uVar4 = puVar23[2]; + if (puVar23[2] <= uVar10) { + uVar4 = uVar10; + } + puVar24[2] = uVar4; + uVar4 = puVar23[3]; + if (puVar23[3] <= uVar8) { + uVar4 = uVar8; + } + puVar24[3] = uVar4; + uVar4 = *(ushort *)(lVar18 + lVar20); + lVar20 = lVar20 + 8; + if (uVar4 < uVar12) { + uVar4 = uVar12; + } + *puVar22 = uVar4; + uVar12 = *(ushort *)(lVar17 + 2); + if (*(ushort *)(lVar17 + 2) < uVar11) { + uVar12 = uVar11; + } + puVar22[1] = uVar12; + uVar12 = *(ushort *)(lVar17 + 4); + if (*(ushort *)(lVar17 + 4) < uVar10) { + uVar12 = uVar10; + } + puVar22[2] = uVar12; + uVar12 = *(ushort *)(lVar17 + 6); + if (*(ushort *)(lVar17 + 6) < uVar8) { + uVar12 = uVar8; + } + puVar22[3] = uVar12; + puVar22 = puVar22 + 4; + puVar23 = puVar23 + 4; + puVar24 = puVar24 + 4; + } while (lVar20 != ((ulong)uVar6 + 1) * 8); + } + if (iVar5 < param_6) { + lVar19 = plVar9[1]; + lVar17 = *plVar9; + lVar18 = *(long *)((long)plVar9 + uVar2); + lVar20 = (long)iVar5 << 1; + do { + uVar12 = *(ushort *)(lVar19 + lVar20); + plVar9 = param_2; + if (uVar3 != 2) { + do { + plVar14 = plVar9 + 1; + uVar11 = *(ushort *)(*plVar9 + lVar20); + if (*(ushort *)(*plVar9 + lVar20) <= uVar12) { + uVar11 = uVar12; + } + uVar12 = uVar11; + plVar9 = plVar14; + } while (plVar21 != plVar14); + } + uVar11 = *(ushort *)(lVar17 + lVar20); + if (*(ushort *)(lVar17 + lVar20) <= uVar12) { + uVar11 = uVar12; + } + *(ushort *)((long)param_3 + lVar20) = uVar11; + uVar11 = *(ushort *)(lVar18 + lVar20); + if (uVar11 <= uVar12) { + uVar11 = uVar12; + } + *(ushort *)((long)param_3 + lVar20 + uVar27) = uVar11; + lVar20 = lVar20 + 2; + } while (lVar20 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 2); + } + param_5 = param_5 + -2; + plVar21 = plVar21 + 2; + param_3 = (ushort *) + ((long)param_3 + + (-(ulong)((uVar7 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar7 << 1) << 1)); + plVar9 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + do { + plVar21 = param_2 + 1; + if (0 < param_6 + -3) { + puVar25 = (ushort *)*param_2; + lVar20 = 0; + do { + uVar12 = *puVar25; + uVar11 = puVar25[1]; + uVar10 = puVar25[2]; + uVar8 = puVar25[3]; + if (1 < (int)uVar3) { + iVar13 = 1; + plVar9 = plVar21; + do { + iVar13 = iVar13 + 1; + lVar18 = *plVar9 + lVar20; + uVar4 = *(ushort *)(*plVar9 + lVar20); + if (uVar4 <= uVar12) { + uVar4 = uVar12; + } + uVar12 = uVar4; + uVar4 = *(ushort *)(lVar18 + 2); + if (*(ushort *)(lVar18 + 2) <= uVar11) { + uVar4 = uVar11; + } + uVar11 = uVar4; + uVar4 = *(ushort *)(lVar18 + 4); + if (*(ushort *)(lVar18 + 4) <= uVar10) { + uVar4 = uVar10; + } + uVar10 = uVar4; + uVar4 = *(ushort *)(lVar18 + 6); + if (*(ushort *)(lVar18 + 6) <= uVar8) { + uVar4 = uVar8; + } + uVar8 = uVar4; + plVar9 = plVar9 + 1; + } while (iVar13 < (int)uVar3); + } + puVar1 = (undefined8 *)((long)param_3 + lVar20); + lVar20 = lVar20 + 8; + puVar25 = puVar25 + 4; + *puVar1 = CONCAT26(uVar8,CONCAT24(uVar10,CONCAT22(uVar11,uVar12))); + } while (lVar20 != ((ulong)uVar6 + 1) * 8); + } + if (iVar5 < param_6) { + lVar18 = *param_2; + lVar20 = (long)iVar5 << 1; + do { + uVar12 = *(ushort *)(lVar18 + lVar20); + if (1 < (int)uVar3) { + iVar13 = 1; + plVar9 = plVar21; + do { + iVar13 = iVar13 + 1; + uVar11 = *(ushort *)(*plVar9 + lVar20); + if (*(ushort *)(*plVar9 + lVar20) <= uVar12) { + uVar11 = uVar12; + } + uVar12 = uVar11; + plVar9 = plVar9 + 1; + } while (iVar13 < (int)uVar3); + } + *(ushort *)((long)param_3 + lVar20) = uVar12; + lVar20 = lVar20 + 2; + } while (lVar20 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 2); + } + param_5 = param_5 + -1; + param_3 = (ushort *) + ((long)param_3 + + (-(ulong)(uVar7 >> 0x1f) & 0xfffffffe00000000 | (uVar28 & 0xffffffff) << 1)); + param_2 = plVar21; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001de2c8 (1184 bytes) name=FUN_001de2c8 + +void FUN_001de2c8(long param_1,long *param_2,char *param_3,int param_4,int param_5,int param_6) + +{ + byte *pbVar1; + int iVar2; + long lVar3; + ulong uVar4; + uint uVar5; + int iVar6; + undefined *puVar7; + long *plVar8; + ulong uVar9; + long *plVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + int iVar15; + long *plVar16; + long lVar17; + long *plVar18; + char *pcVar19; + char *pcVar20; + char *pcVar21; + ulong uVar22; + + uVar5 = *(uint *)(param_1 + 8); + if ((1 < param_5) && (1 < (int)uVar5)) { + iVar6 = param_6 + -3; + iVar2 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar6 < 1) { + iVar2 = 0; + } + uVar22 = -(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3; + plVar18 = param_2 + (ulong)(uVar5 - 3) + 3; + pcVar19 = param_3 + param_4; + plVar10 = param_2; + uVar4 = uVar22; + if ((int)uVar5 < 3) { + uVar4 = 0x10; + } + do { + param_2 = plVar10 + 2; + if (0 < iVar6) { + lVar17 = 0; + pcVar20 = pcVar19; + pcVar21 = param_3; + do { + puVar7 = PTR_DAT_00501b38; + lVar3 = plVar10[1] + lVar17; + uVar11 = (uint)*(byte *)(plVar10[1] + lVar17); + uVar14 = (uint)*(byte *)(lVar3 + 1); + uVar13 = (uint)*(byte *)(lVar3 + 2); + uVar12 = (uint)*(byte *)(lVar3 + 3); + plVar8 = param_2; + if (uVar5 == 2) { + uVar9 = 0x10; + } + else { + do { + plVar16 = plVar8 + 1; + lVar3 = *plVar8 + lVar17; + uVar11 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(*plVar8 + lVar17) - uVar11) + 0x100)] + + uVar11 & 0xff; + uVar14 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar3 + 1) - uVar14) + 0x100)] + + uVar14 & 0xff; + uVar13 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar3 + 2) - uVar13) + 0x100)] + + uVar13 & 0xff; + uVar12 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar3 + 3) - uVar12) + 0x100)] + + uVar12 & 0xff; + uVar9 = uVar22; + plVar8 = plVar16; + } while (plVar18 != plVar16); + } + lVar3 = *plVar10 + lVar17; + *pcVar21 = (char)uVar11 + + PTR_DAT_00501b38[(int)((*(byte *)(*plVar10 + lVar17) - uVar11) + 0x100)]; + pcVar21[1] = (char)uVar14 + puVar7[(int)((*(byte *)(lVar3 + 1) - uVar14) + 0x100)]; + pcVar21[2] = (char)uVar13 + puVar7[(int)((*(byte *)(lVar3 + 2) - uVar13) + 0x100)]; + pcVar21[3] = (char)uVar12 + puVar7[(int)((*(byte *)(lVar3 + 3) - uVar12) + 0x100)]; + lVar3 = *(long *)((long)plVar10 + uVar9) + lVar17; + pbVar1 = (byte *)(*(long *)((long)plVar10 + uVar9) + lVar17); + lVar17 = lVar17 + 4; + *pcVar20 = (char)uVar11 + puVar7[(int)((*pbVar1 - uVar11) + 0x100)]; + pcVar20[1] = (char)uVar14 + puVar7[(int)((*(byte *)(lVar3 + 1) - uVar14) + 0x100)]; + pcVar20[2] = (char)uVar13 + puVar7[(int)((*(byte *)(lVar3 + 2) - uVar13) + 0x100)]; + pcVar20[3] = (char)uVar12 + puVar7[(int)((*(byte *)(lVar3 + 3) - uVar12) + 0x100)]; + pcVar20 = pcVar20 + 4; + pcVar21 = pcVar21 + 4; + } while ((int)lVar17 < iVar6); + } + lVar17 = (long)iVar2; + if (iVar2 < param_6) { + do { + puVar7 = PTR_DAT_00501b38; + uVar11 = (uint)*(byte *)(plVar10[1] + lVar17); + plVar8 = param_2; + if (uVar5 != 2) { + do { + plVar16 = plVar8 + 1; + uVar11 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(*plVar8 + lVar17) - uVar11) + 0x100)] + + uVar11 & 0xff; + plVar8 = plVar16; + } while (plVar18 != plVar16); + } + param_3[lVar17] = + (char)uVar11 + + PTR_DAT_00501b38[(int)((*(byte *)(*plVar10 + lVar17) - uVar11) + 0x100)]; + pcVar19[lVar17] = + (char)uVar11 + + puVar7[(int)((*(byte *)(*(long *)((long)plVar10 + uVar4) + lVar17) - uVar11) + 0x100) + ]; + lVar17 = lVar17 + 1; + } while (lVar17 != (long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)); + } + param_5 = param_5 + -2; + param_3 = param_3 + (param_4 << 1); + pcVar19 = pcVar19 + (param_4 << 1); + plVar18 = plVar18 + 2; + plVar10 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + iVar6 = param_6 + -3; + iVar2 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar6 < 1) { + iVar2 = 0; + } + do { + plVar18 = param_2 + 1; + if (0 < iVar6) { + lVar17 = 0; + pcVar19 = param_3; + do { + lVar3 = *param_2 + lVar17; + uVar14 = (uint)*(byte *)(*param_2 + lVar17); + uVar13 = (uint)*(byte *)(lVar3 + 1); + uVar12 = (uint)*(byte *)(lVar3 + 2); + uVar11 = (uint)*(byte *)(lVar3 + 3); + if (1 < (int)uVar5) { + iVar15 = 1; + plVar10 = plVar18; + do { + iVar15 = iVar15 + 1; + lVar3 = *plVar10 + lVar17; + uVar14 = (byte)PTR_DAT_00501b38 + [(int)((*(byte *)(*plVar10 + lVar17) - uVar14) + 0x100)] + uVar14 & + 0xff; + uVar13 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar3 + 1) - uVar13) + 0x100)] + + uVar13 & 0xff; + uVar12 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar3 + 2) - uVar12) + 0x100)] + + uVar12 & 0xff; + uVar11 = (byte)PTR_DAT_00501b38[(int)((*(byte *)(lVar3 + 3) - uVar11) + 0x100)] + + uVar11 & 0xff; + plVar10 = plVar10 + 1; + } while (iVar15 < (int)uVar5); + } + *pcVar19 = (char)uVar14; + pcVar19[1] = (char)uVar13; + lVar17 = lVar17 + 4; + pcVar19[2] = (char)uVar12; + pcVar19[3] = (char)uVar11; + pcVar19 = pcVar19 + 4; + } while ((int)lVar17 < iVar6); + } + lVar17 = (long)iVar2; + if (iVar2 < param_6) { + do { + uVar11 = (uint)*(byte *)(*param_2 + lVar17); + if (1 < (int)uVar5) { + iVar15 = 1; + plVar10 = plVar18; + do { + iVar15 = iVar15 + 1; + uVar11 = (byte)PTR_DAT_00501b38 + [(int)((*(byte *)(*plVar10 + lVar17) - uVar11) + 0x100)] + uVar11 & + 0xff; + plVar10 = plVar10 + 1; + } while (iVar15 < (int)uVar5); + } + param_3[lVar17] = (char)uVar11; + lVar17 = lVar17 + 1; + } while (lVar17 != (long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = plVar18; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001de768 (1112 bytes) name=FUN_001de768 + +void FUN_001de768(long param_1,long *param_2,double *param_3,int param_4,int param_5,int param_6) + +{ + long *plVar1; + ulong uVar2; + uint uVar3; + int iVar4; + uint uVar5; + long *plVar6; + ulong uVar7; + long *plVar8; + long lVar9; + int iVar10; + ulong uVar11; + ulong uVar12; + long lVar13; + long lVar14; + long *plVar15; + double *pdVar16; + double *pdVar17; + double *pdVar18; + long lVar19; + double *pdVar20; + ulong uVar21; + ulong uVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + + uVar11 = (ulong)param_4; + uVar22 = uVar11 >> 3; + uVar3 = *(uint *)(param_1 + 8); + if ((1 < param_5) && (1 < (int)uVar3)) { + uVar5 = param_6 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (param_6 + -3 < 1) { + iVar4 = 0; + } + uVar12 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; + plVar15 = param_2 + (ulong)(uVar3 - 3) + 3; + uVar21 = -(uVar11 >> 0x22 & 1) & 0xfffffff800000000 | (uVar22 & 0xffffffff) << 3; + uVar2 = uVar12; + if ((int)uVar3 < 3) { + uVar2 = 0x10; + } + plVar8 = param_2; + do { + param_2 = plVar8 + 2; + if (0 < param_6 + -3) { + pdVar20 = (double *)plVar8[1]; + pdVar16 = (double *)*plVar8; + lVar13 = 0; + pdVar17 = param_3; + pdVar18 = (double *)((long)param_3 + uVar21); + do { + dVar30 = *pdVar20; + dVar28 = pdVar20[1]; + dVar26 = pdVar20[2]; + dVar24 = pdVar20[3]; + plVar6 = param_2; + dVar25 = dVar26; + dVar27 = dVar28; + dVar29 = dVar30; + if (uVar3 == 2) { + uVar7 = 0x10; + dVar23 = dVar24; + } + else { + do { + plVar1 = plVar6 + 1; + lVar14 = *plVar6 + lVar13; + dVar30 = *(double *)(*plVar6 + lVar13); + if (dVar29 <= dVar30) { + dVar30 = dVar29; + } + dVar28 = *(double *)(lVar14 + 8); + if (dVar27 <= *(double *)(lVar14 + 8)) { + dVar28 = dVar27; + } + dVar26 = *(double *)(lVar14 + 0x10); + if (dVar25 <= *(double *)(lVar14 + 0x10)) { + dVar26 = dVar25; + } + dVar23 = *(double *)(lVar14 + 0x18); + if (dVar24 <= *(double *)(lVar14 + 0x18)) { + dVar23 = dVar24; + } + uVar7 = uVar12; + plVar6 = plVar1; + dVar24 = dVar23; + dVar25 = dVar26; + dVar27 = dVar28; + dVar29 = dVar30; + } while (plVar15 != plVar1); + } + dVar24 = *pdVar16; + if (dVar30 <= *pdVar16) { + dVar24 = dVar30; + } + *pdVar17 = dVar24; + dVar24 = pdVar16[1]; + if (dVar28 <= pdVar16[1]) { + dVar24 = dVar28; + } + pdVar17[1] = dVar24; + dVar24 = pdVar16[2]; + if (dVar26 <= pdVar16[2]) { + dVar24 = dVar26; + } + pdVar17[2] = dVar24; + dVar24 = pdVar16[3]; + if (dVar23 <= pdVar16[3]) { + dVar24 = dVar23; + } + lVar9 = *(long *)((long)plVar8 + uVar7); + pdVar17[3] = dVar24; + lVar14 = lVar9 + lVar13; + dVar24 = *(double *)(lVar9 + lVar13); + if (dVar30 <= dVar24) { + dVar24 = dVar30; + } + *pdVar18 = dVar24; + dVar30 = *(double *)(lVar14 + 8); + if (dVar28 <= *(double *)(lVar14 + 8)) { + dVar30 = dVar28; + } + pdVar18[1] = dVar30; + dVar28 = *(double *)(lVar14 + 0x10); + if (dVar26 <= *(double *)(lVar14 + 0x10)) { + dVar28 = dVar26; + } + pdVar18[2] = dVar28; + dVar28 = *(double *)(lVar14 + 0x18); + if (dVar23 <= *(double *)(lVar14 + 0x18)) { + dVar28 = dVar23; + } + lVar13 = lVar13 + 0x20; + pdVar20 = pdVar20 + 4; + pdVar18[3] = dVar28; + pdVar17 = pdVar17 + 4; + pdVar16 = pdVar16 + 4; + pdVar18 = pdVar18 + 4; + } while (lVar13 != ((ulong)uVar5 + 1) * 0x20); + } + if (iVar4 < param_6) { + lVar19 = plVar8[1]; + lVar9 = *plVar8; + lVar14 = *(long *)((long)plVar8 + uVar2); + lVar13 = (long)iVar4 << 3; + do { + dVar28 = *(double *)(lVar19 + lVar13); + plVar8 = param_2; + dVar26 = dVar28; + if (uVar3 != 2) { + do { + plVar6 = plVar8 + 1; + dVar28 = *(double *)(*plVar8 + lVar13); + if (dVar26 <= *(double *)(*plVar8 + lVar13)) { + dVar28 = dVar26; + } + plVar8 = plVar6; + dVar26 = dVar28; + } while (plVar15 != plVar6); + } + dVar26 = *(double *)(lVar9 + lVar13); + if (dVar28 <= *(double *)(lVar9 + lVar13)) { + dVar26 = dVar28; + } + *(double *)((long)param_3 + lVar13) = dVar26; + dVar26 = *(double *)(lVar14 + lVar13); + if (dVar28 <= dVar26) { + dVar26 = dVar28; + } + *(double *)((long)param_3 + lVar13 + uVar21) = dVar26; + lVar13 = lVar13 + 8; + } while (lVar13 != ((long)iVar4 + 1 + (ulong)(uint)((param_6 + -1) - iVar4)) * 8); + } + param_5 = param_5 + -2; + param_3 = (double *) + ((long)param_3 + + (-(ulong)(((uint)uVar22 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)((uint)uVar22 << 1) << 3)); + plVar15 = plVar15 + 2; + plVar8 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar5 = param_6 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (param_6 + -3 < 1) { + iVar4 = 0; + } + do { + plVar15 = param_2 + 1; + if (0 < param_6 + -3) { + pdVar20 = (double *)*param_2; + lVar13 = 0; + pdVar17 = param_3; + do { + dVar24 = *pdVar20; + dVar26 = pdVar20[1]; + dVar30 = pdVar20[2]; + dVar28 = pdVar20[3]; + if (1 < (int)uVar3) { + iVar10 = 1; + plVar8 = plVar15; + dVar25 = dVar28; + dVar27 = dVar30; + dVar29 = dVar26; + dVar23 = dVar24; + do { + lVar9 = *plVar8; + iVar10 = iVar10 + 1; + plVar8 = plVar8 + 1; + lVar14 = lVar9 + lVar13; + dVar24 = *(double *)(lVar9 + lVar13); + if (dVar23 <= dVar24) { + dVar24 = dVar23; + } + dVar26 = *(double *)(lVar14 + 8); + if (dVar29 <= *(double *)(lVar14 + 8)) { + dVar26 = dVar29; + } + dVar30 = *(double *)(lVar14 + 0x10); + if (dVar27 <= *(double *)(lVar14 + 0x10)) { + dVar30 = dVar27; + } + dVar28 = *(double *)(lVar14 + 0x18); + if (dVar25 <= *(double *)(lVar14 + 0x18)) { + dVar28 = dVar25; + } + dVar25 = dVar28; + dVar27 = dVar30; + dVar29 = dVar26; + dVar23 = dVar24; + } while (iVar10 < (int)uVar3); + } + lVar13 = lVar13 + 0x20; + pdVar20 = pdVar20 + 4; + pdVar17[1] = dVar26; + *pdVar17 = dVar24; + pdVar17[3] = dVar28; + pdVar17[2] = dVar30; + pdVar17 = pdVar17 + 4; + } while (lVar13 != ((ulong)uVar5 + 1) * 0x20); + } + if (iVar4 < param_6) { + lVar14 = *param_2; + lVar13 = (long)iVar4 << 3; + do { + dVar28 = *(double *)(lVar14 + lVar13); + if (1 < (int)uVar3) { + iVar10 = 1; + plVar8 = plVar15; + dVar26 = dVar28; + do { + lVar9 = *plVar8; + iVar10 = iVar10 + 1; + plVar8 = plVar8 + 1; + dVar28 = *(double *)(lVar9 + lVar13); + if (dVar26 <= *(double *)(lVar9 + lVar13)) { + dVar28 = dVar26; + } + dVar26 = dVar28; + } while (iVar10 < (int)uVar3); + } + *(double *)((long)param_3 + lVar13) = dVar28; + lVar13 = lVar13 + 8; + } while (lVar13 != ((long)iVar4 + 1 + (ulong)(uint)((param_6 + -1) - iVar4)) * 8); + } + param_5 = param_5 + -1; + param_3 = (double *) + ((long)param_3 + + (-(uVar11 >> 0x22 & 1) & 0xfffffff800000000 | (uVar22 & 0xffffffff) << 3)); + param_2 = plVar15; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001debc0 (1092 bytes) name=FUN_001debc0 + +void FUN_001debc0(long param_1,long *param_2,float *param_3,int param_4,int param_5,int param_6) + +{ + long *plVar1; + undefined8 *puVar2; + ulong uVar3; + uint uVar4; + int iVar5; + uint uVar6; + long *plVar7; + ulong uVar8; + long *plVar9; + long lVar10; + int iVar11; + ulong uVar12; + ulong uVar13; + long lVar14; + long lVar15; + long *plVar16; + float *pfVar17; + float *pfVar18; + float *pfVar19; + long lVar20; + float *pfVar21; + ulong uVar22; + ulong uVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + + uVar12 = (ulong)param_4; + uVar23 = uVar12 >> 2; + uVar4 = *(uint *)(param_1 + 8); + if ((1 < param_5) && (1 < (int)uVar4)) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + uVar13 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3; + plVar16 = param_2 + (ulong)(uVar4 - 3) + 3; + uVar22 = -(uVar12 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar23 & 0xffffffff) << 2; + uVar3 = uVar13; + if ((int)uVar4 < 3) { + uVar3 = 0x10; + } + plVar9 = param_2; + do { + param_2 = plVar9 + 2; + if (0 < param_6 + -3) { + pfVar21 = (float *)plVar9[1]; + pfVar17 = (float *)*plVar9; + lVar14 = 0; + pfVar18 = param_3; + pfVar19 = (float *)((long)param_3 + uVar22); + do { + fVar29 = *pfVar21; + fVar28 = pfVar21[1]; + fVar27 = pfVar21[2]; + fVar25 = pfVar21[3]; + plVar7 = param_2; + fVar24 = fVar27; + fVar26 = fVar29; + if (uVar4 == 2) { + uVar8 = 0x10; + } + else { + do { + plVar1 = plVar7 + 1; + lVar15 = *plVar7 + lVar14; + fVar29 = *(float *)(*plVar7 + lVar14); + if (fVar26 <= fVar29) { + fVar29 = fVar26; + } + fVar27 = *(float *)(lVar15 + 4); + if (fVar28 <= *(float *)(lVar15 + 4)) { + fVar27 = fVar28; + } + fVar28 = fVar27; + fVar27 = *(float *)(lVar15 + 8); + if (fVar24 <= *(float *)(lVar15 + 8)) { + fVar27 = fVar24; + } + fVar24 = *(float *)(lVar15 + 0xc); + if (fVar25 <= *(float *)(lVar15 + 0xc)) { + fVar24 = fVar25; + } + fVar25 = fVar24; + uVar8 = uVar13; + plVar7 = plVar1; + fVar24 = fVar27; + fVar26 = fVar29; + } while (plVar16 != plVar1); + } + fVar24 = *pfVar17; + if (fVar29 <= *pfVar17) { + fVar24 = fVar29; + } + *pfVar18 = fVar24; + fVar24 = pfVar17[1]; + if (fVar28 <= pfVar17[1]) { + fVar24 = fVar28; + } + pfVar18[1] = fVar24; + fVar24 = pfVar17[2]; + if (fVar27 <= pfVar17[2]) { + fVar24 = fVar27; + } + pfVar18[2] = fVar24; + fVar24 = pfVar17[3]; + if (fVar25 <= pfVar17[3]) { + fVar24 = fVar25; + } + lVar10 = *(long *)((long)plVar9 + uVar8); + pfVar18[3] = fVar24; + lVar15 = lVar10 + lVar14; + fVar24 = *(float *)(lVar10 + lVar14); + if (fVar29 <= fVar24) { + fVar24 = fVar29; + } + *pfVar19 = fVar24; + fVar29 = *(float *)(lVar15 + 4); + if (fVar28 <= *(float *)(lVar15 + 4)) { + fVar29 = fVar28; + } + pfVar19[1] = fVar29; + fVar29 = *(float *)(lVar15 + 8); + if (fVar27 <= *(float *)(lVar15 + 8)) { + fVar29 = fVar27; + } + pfVar19[2] = fVar29; + fVar27 = *(float *)(lVar15 + 0xc); + if (fVar25 <= *(float *)(lVar15 + 0xc)) { + fVar27 = fVar25; + } + lVar14 = lVar14 + 0x10; + pfVar21 = pfVar21 + 4; + pfVar19[3] = fVar27; + pfVar18 = pfVar18 + 4; + pfVar17 = pfVar17 + 4; + pfVar19 = pfVar19 + 4; + } while (lVar14 != ((ulong)uVar6 + 1) * 0x10); + } + if (iVar5 < param_6) { + lVar20 = plVar9[1]; + lVar10 = *plVar9; + lVar15 = *(long *)((long)plVar9 + uVar3); + lVar14 = (long)iVar5 << 2; + do { + fVar27 = *(float *)(lVar20 + lVar14); + plVar9 = param_2; + if (uVar4 != 2) { + do { + plVar7 = plVar9 + 1; + fVar29 = *(float *)(*plVar9 + lVar14); + if (fVar27 <= *(float *)(*plVar9 + lVar14)) { + fVar29 = fVar27; + } + fVar27 = fVar29; + plVar9 = plVar7; + } while (plVar16 != plVar7); + } + fVar29 = *(float *)(lVar10 + lVar14); + if (fVar27 <= *(float *)(lVar10 + lVar14)) { + fVar29 = fVar27; + } + *(float *)((long)param_3 + lVar14) = fVar29; + fVar29 = *(float *)(lVar15 + lVar14); + if (fVar27 <= fVar29) { + fVar29 = fVar27; + } + *(float *)((long)param_3 + lVar14 + uVar22) = fVar29; + lVar14 = lVar14 + 4; + } while (lVar14 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 4); + } + param_5 = param_5 + -2; + param_3 = (float *)((long)param_3 + + (-(ulong)(((uint)uVar23 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)((uint)uVar23 << 1) << 2)); + plVar16 = plVar16 + 2; + plVar9 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + do { + plVar16 = param_2 + 1; + if (0 < param_6 + -3) { + pfVar21 = (float *)*param_2; + lVar14 = 0; + do { + fVar29 = *pfVar21; + fVar24 = pfVar21[1]; + fVar27 = pfVar21[2]; + fVar26 = pfVar21[3]; + if (1 < (int)uVar4) { + iVar11 = 1; + plVar9 = plVar16; + fVar28 = fVar27; + fVar25 = fVar29; + do { + lVar10 = *plVar9; + iVar11 = iVar11 + 1; + plVar9 = plVar9 + 1; + lVar15 = lVar10 + lVar14; + fVar29 = *(float *)(lVar10 + lVar14); + if (fVar25 <= fVar29) { + fVar29 = fVar25; + } + fVar27 = *(float *)(lVar15 + 4); + if (fVar24 <= *(float *)(lVar15 + 4)) { + fVar27 = fVar24; + } + fVar24 = fVar27; + fVar27 = *(float *)(lVar15 + 8); + if (fVar28 <= *(float *)(lVar15 + 8)) { + fVar27 = fVar28; + } + fVar28 = *(float *)(lVar15 + 0xc); + if (fVar26 <= *(float *)(lVar15 + 0xc)) { + fVar28 = fVar26; + } + fVar26 = fVar28; + fVar28 = fVar27; + fVar25 = fVar29; + } while (iVar11 < (int)uVar4); + } + puVar2 = (undefined8 *)((long)param_3 + lVar14); + lVar14 = lVar14 + 0x10; + pfVar21 = pfVar21 + 4; + puVar2[1] = CONCAT44(fVar26,fVar27); + *puVar2 = CONCAT44(fVar24,fVar29); + } while (lVar14 != ((ulong)uVar6 + 1) * 0x10); + } + if (iVar5 < param_6) { + lVar15 = *param_2; + lVar14 = (long)iVar5 << 2; + do { + fVar27 = *(float *)(lVar15 + lVar14); + if (1 < (int)uVar4) { + iVar11 = 1; + plVar9 = plVar16; + do { + lVar10 = *plVar9; + iVar11 = iVar11 + 1; + plVar9 = plVar9 + 1; + fVar29 = *(float *)(lVar10 + lVar14); + if (fVar27 <= *(float *)(lVar10 + lVar14)) { + fVar29 = fVar27; + } + fVar27 = fVar29; + } while (iVar11 < (int)uVar4); + } + *(float *)((long)param_3 + lVar14) = fVar27; + lVar14 = lVar14 + 4; + } while (lVar14 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 4); + } + param_5 = param_5 + -1; + param_3 = (float *)((long)param_3 + + (-(uVar12 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar23 & 0xffffffff) << 2)); + param_2 = plVar16; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001df004 (1044 bytes) name=FUN_001df004 + +void FUN_001df004(long param_1,long *param_2,undefined2 *param_3,int param_4,int param_5,int param_6 + ) + +{ + short *psVar1; + ushort *puVar2; + undefined8 *puVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + ulong uVar8; + uint uVar9; + ushort uVar10; + short sVar11; + int iVar12; + uint uVar13; + uint uVar14; + short sVar15; + uint uVar16; + uint uVar17; + long *plVar18; + short sVar19; + short sVar20; + uint uVar21; + short sVar22; + uint uVar23; + int iVar24; + long *plVar25; + ulong uVar27; + long lVar28; + long lVar29; + long lVar30; + long lVar31; + long *plVar32; + undefined2 *puVar33; + ushort *puVar34; + undefined2 *puVar35; + short *psVar36; + ulong uVar37; + ulong uVar38; + ulong uVar39; + long *plVar26; + + uVar39 = (ulong)(long)param_4 >> 1; + uVar9 = *(uint *)(param_1 + 8); + uVar14 = (uint)uVar39; + if ((1 < param_5) && (1 < (int)uVar9)) { + uVar13 = param_6 - 4U >> 2; + iVar12 = (uVar13 + 1) * 4; + if (param_6 + -3 < 1) { + iVar12 = 0; + } + uVar37 = -(ulong)(uVar9 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar9 << 3; + plVar32 = param_2 + (ulong)(uVar9 - 3) + 3; + uVar38 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffe00000000 | (uVar39 & 0xffffffff) << 1; + uVar8 = uVar37; + if ((int)uVar9 < 3) { + uVar8 = 0x10; + } + plVar18 = param_2; + do { + param_2 = plVar18 + 2; + if (0 < param_6 + -3) { + psVar36 = (short *)plVar18[1]; + lVar31 = 0; + puVar33 = (undefined2 *)((long)param_3 + uVar38); + puVar34 = (ushort *)*plVar18; + puVar35 = param_3; + do { + uVar23 = (uint)*psVar36; + uVar21 = (uint)psVar36[1]; + uVar17 = (uint)psVar36[2]; + uVar16 = (uint)psVar36[3]; + plVar25 = param_2; + if (uVar9 == 2) { + uVar27 = 0x10; + } + else { + do { + plVar26 = plVar25 + 1; + lVar29 = *plVar25 + lVar31; + uVar10 = *(ushort *)(*plVar25 + lVar31); + uVar7 = (uint)uVar10; + if ((int)uVar23 <= (int)(short)uVar10) { + uVar7 = uVar23; + } + uVar4 = (uint)*(ushort *)(lVar29 + 2); + if ((int)uVar21 <= (int)(short)*(ushort *)(lVar29 + 2)) { + uVar4 = uVar21; + } + uVar5 = (uint)*(ushort *)(lVar29 + 4); + if ((int)uVar17 <= (int)(short)*(ushort *)(lVar29 + 4)) { + uVar5 = uVar17; + } + uVar6 = (uint)*(ushort *)(lVar29 + 6); + if ((int)uVar16 <= (int)(short)*(ushort *)(lVar29 + 6)) { + uVar6 = uVar16; + } + uVar23 = (uint)(short)uVar7; + uVar21 = (uint)(short)uVar4; + uVar17 = (uint)(short)uVar5; + uVar16 = (uint)(short)uVar6; + uVar27 = uVar37; + plVar25 = plVar26; + } while (plVar32 != plVar26); + } + lVar29 = *(long *)((long)plVar18 + uVar27); + uVar7 = (uint)*puVar34; + if ((int)uVar23 <= (int)(short)*puVar34) { + uVar7 = uVar23; + } + *puVar35 = (short)uVar7; + lVar28 = lVar29 + lVar31; + psVar36 = psVar36 + 4; + uVar7 = (uint)puVar34[1]; + if ((int)uVar21 <= (int)(short)puVar34[1]) { + uVar7 = uVar21; + } + puVar35[1] = (short)uVar7; + uVar7 = (uint)puVar34[2]; + if ((int)uVar17 <= (int)(short)puVar34[2]) { + uVar7 = uVar17; + } + puVar35[2] = (short)uVar7; + uVar7 = (uint)puVar34[3]; + if ((int)uVar16 <= (int)(short)puVar34[3]) { + uVar7 = uVar16; + } + puVar35[3] = (short)uVar7; + psVar1 = (short *)(lVar29 + lVar31); + puVar2 = (ushort *)(lVar29 + lVar31); + lVar31 = lVar31 + 8; + uVar7 = (uint)*puVar2; + if ((int)uVar23 < (int)*psVar1) { + uVar7 = uVar23; + } + *puVar33 = (short)uVar7; + uVar23 = (uint)*(ushort *)(lVar28 + 2); + if ((int)uVar21 < (int)*(short *)(lVar28 + 2)) { + uVar23 = uVar21; + } + puVar33[1] = (short)uVar23; + uVar23 = (uint)*(ushort *)(lVar28 + 4); + if ((int)uVar17 < (int)*(short *)(lVar28 + 4)) { + uVar23 = uVar17; + } + puVar33[2] = (short)uVar23; + uVar23 = (uint)*(ushort *)(lVar28 + 6); + if ((int)uVar16 < (int)*(short *)(lVar28 + 6)) { + uVar23 = uVar16; + } + puVar33[3] = (short)uVar23; + puVar33 = puVar33 + 4; + puVar34 = puVar34 + 4; + puVar35 = puVar35 + 4; + } while (lVar31 != ((ulong)uVar13 + 1) * 8); + } + if (iVar12 < param_6) { + lVar30 = plVar18[1]; + lVar28 = *plVar18; + lVar29 = *(long *)((long)plVar18 + uVar8); + lVar31 = (long)iVar12 << 1; + do { + uVar23 = (uint)*(short *)(lVar30 + lVar31); + plVar18 = param_2; + if (uVar9 != 2) { + do { + plVar25 = plVar18 + 1; + uVar21 = (uint)*(ushort *)(*plVar18 + lVar31); + if ((int)uVar23 <= (int)(short)*(ushort *)(*plVar18 + lVar31)) { + uVar21 = uVar23; + } + uVar23 = (uint)(short)uVar21; + plVar18 = plVar25; + } while (plVar32 != plVar25); + } + uVar21 = (uint)*(ushort *)(lVar28 + lVar31); + if ((int)uVar23 <= (int)(short)*(ushort *)(lVar28 + lVar31)) { + uVar21 = uVar23; + } + *(short *)((long)param_3 + lVar31) = (short)uVar21; + uVar10 = *(ushort *)(lVar29 + lVar31); + uVar21 = (uint)uVar10; + if ((int)uVar23 <= (int)(short)uVar10) { + uVar21 = uVar23; + } + *(short *)((long)param_3 + lVar31 + uVar38) = (short)uVar21; + lVar31 = lVar31 + 2; + } while (lVar31 != ((long)iVar12 + 1 + (ulong)(uint)((param_6 + -1) - iVar12)) * 2); + } + param_5 = param_5 + -2; + plVar32 = plVar32 + 2; + param_3 = (undefined2 *) + ((long)param_3 + + (-(ulong)((uVar14 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar14 << 1) << 1)); + plVar18 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar13 = param_6 - 4U >> 2; + iVar12 = (uVar13 + 1) * 4; + if (param_6 + -3 < 1) { + iVar12 = 0; + } + do { + plVar32 = param_2 + 1; + if (0 < param_6 + -3) { + psVar36 = (short *)*param_2; + lVar31 = 0; + do { + sVar22 = *psVar36; + sVar20 = psVar36[1]; + sVar19 = psVar36[2]; + sVar15 = psVar36[3]; + if (1 < (int)uVar9) { + iVar24 = 1; + plVar18 = plVar32; + do { + iVar24 = iVar24 + 1; + lVar29 = *plVar18 + lVar31; + sVar11 = *(short *)(*plVar18 + lVar31); + if (sVar22 <= sVar11) { + sVar11 = sVar22; + } + sVar22 = sVar11; + sVar11 = *(short *)(lVar29 + 2); + if (sVar20 <= *(short *)(lVar29 + 2)) { + sVar11 = sVar20; + } + sVar20 = sVar11; + sVar11 = *(short *)(lVar29 + 4); + if (sVar19 <= *(short *)(lVar29 + 4)) { + sVar11 = sVar19; + } + sVar19 = sVar11; + sVar11 = *(short *)(lVar29 + 6); + if (sVar15 <= *(short *)(lVar29 + 6)) { + sVar11 = sVar15; + } + sVar15 = sVar11; + plVar18 = plVar18 + 1; + } while (iVar24 < (int)uVar9); + } + puVar3 = (undefined8 *)((long)param_3 + lVar31); + lVar31 = lVar31 + 8; + psVar36 = psVar36 + 4; + *puVar3 = CONCAT26(sVar15,CONCAT24(sVar19,CONCAT22(sVar20,sVar22))); + } while (lVar31 != ((ulong)uVar13 + 1) * 8); + } + if (iVar12 < param_6) { + lVar29 = *param_2; + lVar31 = (long)iVar12 << 1; + do { + sVar22 = *(short *)(lVar29 + lVar31); + if (1 < (int)uVar9) { + iVar24 = 1; + plVar18 = plVar32; + do { + iVar24 = iVar24 + 1; + sVar20 = *(short *)(*plVar18 + lVar31); + if (sVar22 <= *(short *)(*plVar18 + lVar31)) { + sVar20 = sVar22; + } + sVar22 = sVar20; + plVar18 = plVar18 + 1; + } while (iVar24 < (int)uVar9); + } + *(short *)((long)param_3 + lVar31) = sVar22; + lVar31 = lVar31 + 2; + } while (lVar31 != ((long)iVar12 + 1 + (ulong)(uint)((param_6 + -1) - iVar12)) * 2); + } + param_5 = param_5 + -1; + param_3 = (undefined2 *) + ((long)param_3 + + (-(ulong)(uVar14 >> 0x1f) & 0xfffffffe00000000 | (uVar39 & 0xffffffff) << 1)); + param_2 = plVar32; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001df418 (1028 bytes) name=FUN_001df418 + +void FUN_001df418(long param_1,long *param_2,ushort *param_3,int param_4,int param_5,int param_6) + +{ + undefined8 *puVar1; + ulong uVar2; + uint uVar3; + ushort uVar4; + int iVar5; + uint uVar6; + uint uVar7; + ushort uVar8; + long *plVar9; + ushort uVar10; + ushort uVar11; + ushort uVar12; + int iVar13; + long *plVar14; + ulong uVar16; + long lVar17; + long lVar18; + long lVar19; + long lVar20; + long *plVar21; + ushort *puVar22; + ushort *puVar23; + ushort *puVar24; + ushort *puVar25; + ulong uVar26; + ulong uVar27; + ulong uVar28; + long *plVar15; + + uVar28 = (ulong)(long)param_4 >> 1; + uVar3 = *(uint *)(param_1 + 8); + uVar7 = (uint)uVar28; + if ((1 < param_5) && (1 < (int)uVar3)) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + uVar26 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; + plVar21 = param_2 + (ulong)(uVar3 - 3) + 3; + uVar27 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffe00000000 | (uVar28 & 0xffffffff) << 1; + uVar2 = uVar26; + if ((int)uVar3 < 3) { + uVar2 = 0x10; + } + plVar9 = param_2; + do { + param_2 = plVar9 + 2; + if (0 < param_6 + -3) { + puVar25 = (ushort *)plVar9[1]; + lVar20 = 0; + puVar22 = (ushort *)((long)param_3 + uVar27); + puVar23 = (ushort *)*plVar9; + puVar24 = param_3; + do { + uVar12 = *puVar25; + uVar11 = puVar25[1]; + uVar10 = puVar25[2]; + uVar8 = puVar25[3]; + plVar14 = param_2; + if (uVar3 == 2) { + uVar16 = 0x10; + } + else { + do { + plVar15 = plVar14 + 1; + lVar18 = *plVar14 + lVar20; + uVar4 = *(ushort *)(*plVar14 + lVar20); + if (uVar12 <= uVar4) { + uVar4 = uVar12; + } + uVar12 = uVar4; + uVar4 = *(ushort *)(lVar18 + 2); + if (uVar11 <= *(ushort *)(lVar18 + 2)) { + uVar4 = uVar11; + } + uVar11 = uVar4; + uVar4 = *(ushort *)(lVar18 + 4); + if (uVar10 <= *(ushort *)(lVar18 + 4)) { + uVar4 = uVar10; + } + uVar10 = uVar4; + uVar4 = *(ushort *)(lVar18 + 6); + if (uVar8 <= *(ushort *)(lVar18 + 6)) { + uVar4 = uVar8; + } + uVar8 = uVar4; + uVar16 = uVar26; + plVar14 = plVar15; + } while (plVar21 != plVar15); + } + lVar18 = *(long *)((long)plVar9 + uVar16); + uVar4 = *puVar23; + if (uVar12 <= *puVar23) { + uVar4 = uVar12; + } + *puVar24 = uVar4; + lVar17 = lVar18 + lVar20; + puVar25 = puVar25 + 4; + uVar4 = puVar23[1]; + if (uVar11 <= puVar23[1]) { + uVar4 = uVar11; + } + puVar24[1] = uVar4; + uVar4 = puVar23[2]; + if (uVar10 <= puVar23[2]) { + uVar4 = uVar10; + } + puVar24[2] = uVar4; + uVar4 = puVar23[3]; + if (uVar8 <= puVar23[3]) { + uVar4 = uVar8; + } + puVar24[3] = uVar4; + uVar4 = *(ushort *)(lVar18 + lVar20); + lVar20 = lVar20 + 8; + if (uVar12 < uVar4) { + uVar4 = uVar12; + } + *puVar22 = uVar4; + uVar12 = *(ushort *)(lVar17 + 2); + if (uVar11 < *(ushort *)(lVar17 + 2)) { + uVar12 = uVar11; + } + puVar22[1] = uVar12; + uVar12 = *(ushort *)(lVar17 + 4); + if (uVar10 < *(ushort *)(lVar17 + 4)) { + uVar12 = uVar10; + } + puVar22[2] = uVar12; + uVar12 = *(ushort *)(lVar17 + 6); + if (uVar8 < *(ushort *)(lVar17 + 6)) { + uVar12 = uVar8; + } + puVar22[3] = uVar12; + puVar22 = puVar22 + 4; + puVar23 = puVar23 + 4; + puVar24 = puVar24 + 4; + } while (lVar20 != ((ulong)uVar6 + 1) * 8); + } + if (iVar5 < param_6) { + lVar19 = plVar9[1]; + lVar17 = *plVar9; + lVar18 = *(long *)((long)plVar9 + uVar2); + lVar20 = (long)iVar5 << 1; + do { + uVar12 = *(ushort *)(lVar19 + lVar20); + plVar9 = param_2; + if (uVar3 != 2) { + do { + plVar14 = plVar9 + 1; + uVar11 = *(ushort *)(*plVar9 + lVar20); + if (uVar12 <= *(ushort *)(*plVar9 + lVar20)) { + uVar11 = uVar12; + } + uVar12 = uVar11; + plVar9 = plVar14; + } while (plVar21 != plVar14); + } + uVar11 = *(ushort *)(lVar17 + lVar20); + if (uVar12 <= *(ushort *)(lVar17 + lVar20)) { + uVar11 = uVar12; + } + *(ushort *)((long)param_3 + lVar20) = uVar11; + uVar11 = *(ushort *)(lVar18 + lVar20); + if (uVar12 <= uVar11) { + uVar11 = uVar12; + } + *(ushort *)((long)param_3 + lVar20 + uVar27) = uVar11; + lVar20 = lVar20 + 2; + } while (lVar20 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 2); + } + param_5 = param_5 + -2; + plVar21 = plVar21 + 2; + param_3 = (ushort *) + ((long)param_3 + + (-(ulong)((uVar7 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar7 << 1) << 1)); + plVar9 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + uVar6 = param_6 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + if (param_6 + -3 < 1) { + iVar5 = 0; + } + do { + plVar21 = param_2 + 1; + if (0 < param_6 + -3) { + puVar25 = (ushort *)*param_2; + lVar20 = 0; + do { + uVar12 = *puVar25; + uVar11 = puVar25[1]; + uVar10 = puVar25[2]; + uVar8 = puVar25[3]; + if (1 < (int)uVar3) { + iVar13 = 1; + plVar9 = plVar21; + do { + iVar13 = iVar13 + 1; + lVar18 = *plVar9 + lVar20; + uVar4 = *(ushort *)(*plVar9 + lVar20); + if (uVar12 <= uVar4) { + uVar4 = uVar12; + } + uVar12 = uVar4; + uVar4 = *(ushort *)(lVar18 + 2); + if (uVar11 <= *(ushort *)(lVar18 + 2)) { + uVar4 = uVar11; + } + uVar11 = uVar4; + uVar4 = *(ushort *)(lVar18 + 4); + if (uVar10 <= *(ushort *)(lVar18 + 4)) { + uVar4 = uVar10; + } + uVar10 = uVar4; + uVar4 = *(ushort *)(lVar18 + 6); + if (uVar8 <= *(ushort *)(lVar18 + 6)) { + uVar4 = uVar8; + } + uVar8 = uVar4; + plVar9 = plVar9 + 1; + } while (iVar13 < (int)uVar3); + } + puVar1 = (undefined8 *)((long)param_3 + lVar20); + lVar20 = lVar20 + 8; + puVar25 = puVar25 + 4; + *puVar1 = CONCAT26(uVar8,CONCAT24(uVar10,CONCAT22(uVar11,uVar12))); + } while (lVar20 != ((ulong)uVar6 + 1) * 8); + } + if (iVar5 < param_6) { + lVar18 = *param_2; + lVar20 = (long)iVar5 << 1; + do { + uVar12 = *(ushort *)(lVar18 + lVar20); + if (1 < (int)uVar3) { + iVar13 = 1; + plVar9 = plVar21; + do { + iVar13 = iVar13 + 1; + uVar11 = *(ushort *)(*plVar9 + lVar20); + if (uVar12 <= *(ushort *)(*plVar9 + lVar20)) { + uVar11 = uVar12; + } + uVar12 = uVar11; + plVar9 = plVar9 + 1; + } while (iVar13 < (int)uVar3); + } + *(ushort *)((long)param_3 + lVar20) = uVar12; + lVar20 = lVar20 + 2; + } while (lVar20 != ((long)iVar5 + 1 + (ulong)(uint)((param_6 + -1) - iVar5)) * 2); + } + param_5 = param_5 + -1; + param_3 = (ushort *) + ((long)param_3 + + (-(ulong)(uVar7 >> 0x1f) & 0xfffffffe00000000 | (uVar28 & 0xffffffff) << 1)); + param_2 = plVar21; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001df81c (1184 bytes) name=FUN_001df81c + +void FUN_001df81c(long param_1,long *param_2,char *param_3,int param_4,int param_5,int param_6) + +{ + byte *pbVar1; + int iVar2; + long lVar3; + ulong uVar4; + uint uVar5; + int iVar6; + undefined *puVar7; + long *plVar8; + ulong uVar9; + long *plVar10; + uint uVar11; + uint uVar12; + uint uVar13; + char *pcVar14; + uint uVar15; + int iVar16; + long *plVar17; + long lVar18; + long *plVar19; + char *pcVar20; + ulong uVar21; + char *pcVar22; + + uVar5 = *(uint *)(param_1 + 8); + if ((1 < param_5) && (1 < (int)uVar5)) { + iVar6 = param_6 + -3; + iVar2 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar6 < 1) { + iVar2 = 0; + } + uVar21 = -(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3; + plVar19 = param_2 + (ulong)(uVar5 - 3) + 3; + pcVar20 = param_3 + param_4; + plVar10 = param_2; + uVar4 = uVar21; + if ((int)uVar5 < 3) { + uVar4 = 0x10; + } + do { + param_2 = plVar10 + 2; + if (0 < iVar6) { + lVar18 = 0; + pcVar14 = param_3; + pcVar22 = pcVar20; + do { + puVar7 = PTR_DAT_00501b38; + lVar3 = plVar10[1] + lVar18; + uVar11 = (uint)*(byte *)(plVar10[1] + lVar18); + uVar15 = (uint)*(byte *)(lVar3 + 1); + uVar13 = (uint)*(byte *)(lVar3 + 2); + uVar12 = (uint)*(byte *)(lVar3 + 3); + plVar8 = param_2; + if (uVar5 == 2) { + uVar9 = 0x10; + } + else { + do { + plVar17 = plVar8 + 1; + lVar3 = *plVar8 + lVar18; + uVar11 = uVar11 - (byte)PTR_DAT_00501b38 + [(int)((uVar11 - *(byte *)(*plVar8 + lVar18)) + 0x100)] & 0xff + ; + uVar15 = uVar15 - (byte)PTR_DAT_00501b38 + [(int)((uVar15 - *(byte *)(lVar3 + 1)) + 0x100)] & 0xff; + uVar13 = uVar13 - (byte)PTR_DAT_00501b38 + [(int)((uVar13 - *(byte *)(lVar3 + 2)) + 0x100)] & 0xff; + uVar12 = uVar12 - (byte)PTR_DAT_00501b38 + [(int)((uVar12 - *(byte *)(lVar3 + 3)) + 0x100)] & 0xff; + uVar9 = uVar21; + plVar8 = plVar17; + } while (plVar19 != plVar17); + } + lVar3 = *plVar10 + lVar18; + *pcVar14 = (char)uVar11 - + PTR_DAT_00501b38[(int)((uVar11 - *(byte *)(*plVar10 + lVar18)) + 0x100)]; + pcVar14[1] = (char)uVar15 - puVar7[(int)((uVar15 - *(byte *)(lVar3 + 1)) + 0x100)]; + pcVar14[2] = (char)uVar13 - puVar7[(int)((uVar13 - *(byte *)(lVar3 + 2)) + 0x100)]; + pcVar14[3] = (char)uVar12 - puVar7[(int)((uVar12 - *(byte *)(lVar3 + 3)) + 0x100)]; + lVar3 = *(long *)((long)plVar10 + uVar9) + lVar18; + pbVar1 = (byte *)(*(long *)((long)plVar10 + uVar9) + lVar18); + lVar18 = lVar18 + 4; + *pcVar22 = (char)uVar11 - puVar7[(int)((uVar11 - *pbVar1) + 0x100)]; + pcVar22[1] = (char)uVar15 - puVar7[(int)((uVar15 - *(byte *)(lVar3 + 1)) + 0x100)]; + pcVar22[2] = (char)uVar13 - puVar7[(int)((uVar13 - *(byte *)(lVar3 + 2)) + 0x100)]; + pcVar22[3] = (char)uVar12 - puVar7[(int)((uVar12 - *(byte *)(lVar3 + 3)) + 0x100)]; + pcVar14 = pcVar14 + 4; + pcVar22 = pcVar22 + 4; + } while ((int)lVar18 < iVar6); + } + lVar18 = (long)iVar2; + if (iVar2 < param_6) { + do { + puVar7 = PTR_DAT_00501b38; + uVar11 = (uint)*(byte *)(plVar10[1] + lVar18); + plVar8 = param_2; + if (uVar5 != 2) { + do { + plVar17 = plVar8 + 1; + uVar11 = uVar11 - (byte)PTR_DAT_00501b38 + [(int)((uVar11 - *(byte *)(*plVar8 + lVar18)) + 0x100)] & 0xff + ; + plVar8 = plVar17; + } while (plVar19 != plVar17); + } + param_3[lVar18] = + (char)uVar11 - + PTR_DAT_00501b38[(int)((uVar11 - *(byte *)(*plVar10 + lVar18)) + 0x100)]; + pcVar20[lVar18] = + (char)uVar11 - + puVar7[(int)((uVar11 - *(byte *)(*(long *)((long)plVar10 + uVar4) + lVar18)) + 0x100) + ]; + lVar18 = lVar18 + 1; + } while (lVar18 != (long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)); + } + param_5 = param_5 + -2; + param_3 = param_3 + (param_4 << 1); + pcVar20 = pcVar20 + (param_4 << 1); + plVar19 = plVar19 + 2; + plVar10 = param_2; + } while (1 < param_5); + } + if (0 < param_5) { + iVar6 = param_6 + -3; + iVar2 = (param_6 - 4U & 0xfffffffc) + 4; + if (iVar6 < 1) { + iVar2 = 0; + } + do { + plVar19 = param_2 + 1; + if (0 < iVar6) { + lVar18 = 0; + pcVar20 = param_3; + do { + lVar3 = *param_2 + lVar18; + uVar15 = (uint)*(byte *)(*param_2 + lVar18); + uVar13 = (uint)*(byte *)(lVar3 + 1); + uVar12 = (uint)*(byte *)(lVar3 + 2); + uVar11 = (uint)*(byte *)(lVar3 + 3); + if (1 < (int)uVar5) { + iVar16 = 1; + plVar10 = plVar19; + do { + iVar16 = iVar16 + 1; + lVar3 = *plVar10 + lVar18; + uVar15 = uVar15 - (byte)PTR_DAT_00501b38 + [(int)((uVar15 - *(byte *)(*plVar10 + lVar18)) + 0x100)] & + 0xff; + uVar13 = uVar13 - (byte)PTR_DAT_00501b38 + [(int)((uVar13 - *(byte *)(lVar3 + 1)) + 0x100)] & 0xff; + uVar12 = uVar12 - (byte)PTR_DAT_00501b38 + [(int)((uVar12 - *(byte *)(lVar3 + 2)) + 0x100)] & 0xff; + uVar11 = uVar11 - (byte)PTR_DAT_00501b38 + [(int)((uVar11 - *(byte *)(lVar3 + 3)) + 0x100)] & 0xff; + plVar10 = plVar10 + 1; + } while (iVar16 < (int)uVar5); + } + *pcVar20 = (char)uVar15; + pcVar20[1] = (char)uVar13; + lVar18 = lVar18 + 4; + pcVar20[2] = (char)uVar12; + pcVar20[3] = (char)uVar11; + pcVar20 = pcVar20 + 4; + } while ((int)lVar18 < iVar6); + } + lVar18 = (long)iVar2; + if (iVar2 < param_6) { + do { + uVar11 = (uint)*(byte *)(*param_2 + lVar18); + if (1 < (int)uVar5) { + iVar16 = 1; + plVar10 = plVar19; + do { + iVar16 = iVar16 + 1; + uVar11 = uVar11 - (byte)PTR_DAT_00501b38 + [(int)((uVar11 - *(byte *)(*plVar10 + lVar18)) + 0x100)] & + 0xff; + plVar10 = plVar10 + 1; + } while (iVar16 < (int)uVar5); + } + param_3[lVar18] = (char)uVar11; + lVar18 = lVar18 + 1; + } while (lVar18 != (long)iVar2 + 1 + (ulong)(uint)((param_6 + -1) - iVar2)); + } + param_5 = param_5 + -1; + param_3 = param_3 + param_4; + param_2 = plVar19; + } while (param_5 != 0); + } + return; +} + + +================================================================== + +### FUNC 001dfcbc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcc0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcc4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcc8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfccc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcd0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcd4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcd8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcdc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfce0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfce4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfce8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcec (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcf0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcf4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcf8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfcfc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd00 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd04 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd08 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd0c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd10 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd14 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd18 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd1c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd20 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd24 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd28 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd2c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd30 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001dfd34 (16 bytes) name=FUN_001dfd34 + +void FUN_001dfd34(undefined8 *param_1) + +{ + *param_1 = &DAT_004f4840; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfd44 (44 bytes) name=FUN_001dfd44 + +void FUN_001dfd44(undefined8 *param_1) + +{ + *param_1 = &DAT_004f4840; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfd70 (16 bytes) name=FUN_001dfd70 + +void FUN_001dfd70(undefined8 *param_1) + +{ + *param_1 = &DAT_004f49f0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfd80 (44 bytes) name=FUN_001dfd80 + +void FUN_001dfd80(undefined8 *param_1) + +{ + *param_1 = &DAT_004f49f0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfdac (16 bytes) name=FUN_001dfdac + +void FUN_001dfdac(undefined8 *param_1) + +{ + *param_1 = &DAT_004f49c0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfdbc (44 bytes) name=FUN_001dfdbc + +void FUN_001dfdbc(undefined8 *param_1) + +{ + *param_1 = &DAT_004f49c0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfde8 (16 bytes) name=FUN_001dfde8 + +void FUN_001dfde8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4990; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfdf8 (44 bytes) name=FUN_001dfdf8 + +void FUN_001dfdf8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4990; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfe24 (16 bytes) name=FUN_001dfe24 + +void FUN_001dfe24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4960; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfe34 (44 bytes) name=FUN_001dfe34 + +void FUN_001dfe34(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4960; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfe60 (16 bytes) name=FUN_001dfe60 + +void FUN_001dfe60(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4930; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfe70 (44 bytes) name=FUN_001dfe70 + +void FUN_001dfe70(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4930; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfe9c (16 bytes) name=FUN_001dfe9c + +void FUN_001dfe9c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4900; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfeac (44 bytes) name=FUN_001dfeac + +void FUN_001dfeac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4900; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dfed8 (16 bytes) name=FUN_001dfed8 + +void FUN_001dfed8(undefined8 *param_1) + +{ + *param_1 = &DAT_004f48d0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dfee8 (44 bytes) name=FUN_001dfee8 + +void FUN_001dfee8(undefined8 *param_1) + +{ + *param_1 = &DAT_004f48d0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dff14 (16 bytes) name=FUN_001dff14 + +void FUN_001dff14(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f48a0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dff24 (44 bytes) name=FUN_001dff24 + +void FUN_001dff24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f48a0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dff50 (16 bytes) name=FUN_001dff50 + +void FUN_001dff50(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4870; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001dff60 (44 bytes) name=FUN_001dff60 + +void FUN_001dff60(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4870; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001dff8c (64 bytes) name=FUN_001dff8c + +void FUN_001dff8c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb650; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001dffcc (72 bytes) name=FUN_001dffcc + +void FUN_001dffcc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb650; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0014 (64 bytes) name=FUN_001e0014 + +void FUN_001e0014(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb620; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e0054 (72 bytes) name=FUN_001e0054 + +void FUN_001e0054(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb620; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e009c (64 bytes) name=FUN_001e009c + +void FUN_001e009c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb5f0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e00dc (72 bytes) name=FUN_001e00dc + +void FUN_001e00dc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb5f0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0124 (64 bytes) name=FUN_001e0124 + +void FUN_001e0124(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb5c0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e0164 (72 bytes) name=FUN_001e0164 + +void FUN_001e0164(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb5c0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e01ac (64 bytes) name=FUN_001e01ac + +void FUN_001e01ac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb590; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e01ec (72 bytes) name=FUN_001e01ec + +void FUN_001e01ec(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb590; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0234 (64 bytes) name=FUN_001e0234 + +void FUN_001e0234(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb560; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e0274 (72 bytes) name=FUN_001e0274 + +void FUN_001e0274(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb560; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e02bc (64 bytes) name=FUN_001e02bc + +void FUN_001e02bc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb530; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e02fc (72 bytes) name=FUN_001e02fc + +void FUN_001e02fc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb530; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0344 (64 bytes) name=FUN_001e0344 + +void FUN_001e0344(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb500; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e0384 (72 bytes) name=FUN_001e0384 + +void FUN_001e0384(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb500; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e03cc (64 bytes) name=FUN_001e03cc + +void FUN_001e03cc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb4d0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e040c (72 bytes) name=FUN_001e040c + +void FUN_001e040c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb4d0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0454 (64 bytes) name=FUN_001e0454 + +void FUN_001e0454(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb4a0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + return; +} + + +================================================================== + +### FUNC 001e0494 (72 bytes) name=FUN_001e0494 + +void FUN_001e0494(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb4a0; + if ((void *)param_1[6] != (void *)0x0) { + operator_delete((void *)param_1[6]); + } + if ((void *)param_1[3] != (void *)0x0) { + operator_delete((void *)param_1[3]); + } + FUN_001c8d44(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e04dc (16 bytes) name=FUN_001e04dc + +void FUN_001e04dc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb470; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e04ec (44 bytes) name=FUN_001e04ec + +void FUN_001e04ec(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb470; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0518 (16 bytes) name=FUN_001e0518 + +void FUN_001e0518(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb440; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e0528 (44 bytes) name=FUN_001e0528 + +void FUN_001e0528(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb440; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0554 (16 bytes) name=FUN_001e0554 + +void FUN_001e0554(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb410; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e0564 (44 bytes) name=FUN_001e0564 + +void FUN_001e0564(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb410; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0590 (16 bytes) name=FUN_001e0590 + +void FUN_001e0590(undefined8 *param_1) + +{ + *param_1 = &DAT_004fb3e0; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e05a0 (44 bytes) name=FUN_001e05a0 + +void FUN_001e05a0(undefined8 *param_1) + +{ + *param_1 = &DAT_004fb3e0; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e05cc (16 bytes) name=FUN_001e05cc + +void FUN_001e05cc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb3b0; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e05dc (44 bytes) name=FUN_001e05dc + +void FUN_001e05dc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb3b0; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0608 (16 bytes) name=FUN_001e0608 + +void FUN_001e0608(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb380; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e0618 (44 bytes) name=FUN_001e0618 + +void FUN_001e0618(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb380; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0644 (16 bytes) name=FUN_001e0644 + +void FUN_001e0644(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb350; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e0654 (44 bytes) name=FUN_001e0654 + +void FUN_001e0654(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb350; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0680 (16 bytes) name=FUN_001e0680 + +void FUN_001e0680(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb320; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e0690 (44 bytes) name=FUN_001e0690 + +void FUN_001e0690(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb320; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e06bc (16 bytes) name=FUN_001e06bc + +void FUN_001e06bc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb2f0; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e06cc (44 bytes) name=FUN_001e06cc + +void FUN_001e06cc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb2f0; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e06f8 (16 bytes) name=FUN_001e06f8 + +void FUN_001e06f8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb2c0; + FUN_001c8d24(); + return; +} + + +================================================================== + +### FUNC 001e0708 (44 bytes) name=FUN_001e0708 + +void FUN_001e0708(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fb2c0; + FUN_001c8d24(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e0734 (32 bytes) name=FUN_001e0734 + +void FUN_001e0734(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 001e0754 (1196 bytes) name=FUN_001e0754 + +void FUN_001e0754(long param_1,byte *param_2,byte *param_3,int param_4,int param_5) + +{ + uint uVar1; + byte bVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + undefined *puVar7; + byte *pbVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + byte *pbVar13; + long lVar14; + byte *pbVar15; + int iVar16; + byte *pbVar17; + undefined8 uVar18; + + iVar4 = param_5 * *(int *)(param_1 + 8); + if (iVar4 == param_5) { + uVar10 = iVar4 * param_4; + if (0 < (int)uVar10) { + if ((uVar10 < 0x16) || (param_3 < param_2 + 0x10 && param_2 < param_3 + 0x10)) { + lVar14 = 0; + do { + param_3[lVar14] = param_2[lVar14]; + lVar14 = lVar14 + 1; + } while (uVar10 - (int)lVar14 != 0 && (int)lVar14 <= (int)uVar10); + return; + } + uVar9 = -(int)param_2 & 0xf; + uVar6 = uVar10; + if (uVar9 <= uVar10 && uVar10 - uVar9 != 0) { + uVar6 = uVar9; + } + uVar9 = uVar6; + if ((((uVar6 != 0) && (*param_3 = *param_2, uVar6 != 1)) && + (param_3[1] = param_2[1], uVar6 != 2)) && + ((param_3[2] = param_2[2], uVar6 != 3 && (param_3[3] = param_2[3], uVar6 != 4)))) { + param_3[4] = param_2[4]; + if (uVar6 == 5) { + uVar9 = 5; + } + else { + param_3[5] = param_2[5]; + if (((uVar6 != 6) && (param_3[6] = param_2[6], uVar6 != 7)) && + ((param_3[7] = param_2[7], uVar6 != 8 && + ((((param_3[8] = param_2[8], uVar6 != 9 && (param_3[9] = param_2[9], uVar6 != 10)) && + (param_3[10] = param_2[10], uVar6 != 0xb)) && + ((param_3[0xb] = param_2[0xb], uVar6 != 0xc && + (param_3[0xc] = param_2[0xc], uVar6 != 0xd)))))))) { + param_3[0xd] = param_2[0xd]; + if (uVar6 == 0xf) { + param_3[0xe] = param_2[0xe]; + } + else { + uVar9 = 0xe; + } + } + } + } + uVar1 = ((uVar10 - uVar6) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (uVar10 - 1) - uVar6) { + uVar11 = 0; + pbVar8 = param_2 + uVar6; + pbVar15 = param_3 + uVar6; + do { + uVar18 = *(undefined8 *)pbVar8; + uVar11 = uVar11 + 1; + *(undefined8 *)(pbVar15 + 8) = *(undefined8 *)(pbVar8 + 8); + *(undefined8 *)pbVar15 = uVar18; + pbVar8 = pbVar8 + 0x10; + pbVar15 = pbVar15 + 0x10; + } while (uVar11 < uVar1); + uVar9 = uVar9 + iVar4; + if (iVar4 == uVar10 - uVar6) { + return; + } + } + iVar4 = uVar9 + 1; + param_3[(int)uVar9] = param_2[(int)uVar9]; + if (iVar4 < (int)uVar10) { + iVar3 = uVar9 + 2; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + iVar4 = uVar9 + 3; + param_3[iVar3] = param_2[iVar3]; + if (iVar4 < (int)uVar10) { + iVar3 = uVar9 + 4; + param_3[iVar4] = param_2[iVar4]; + if (iVar3 < (int)uVar10) { + iVar4 = uVar9 + 5; + param_3[iVar3] = param_2[iVar3]; + if (iVar4 < (int)uVar10) { + iVar3 = uVar9 + 6; + param_3[iVar4] = param_2[iVar4]; + if (iVar3 < (int)uVar10) { + iVar4 = uVar9 + 7; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 8; + param_3[iVar4] = param_2[iVar4]; + if (iVar3 < (int)uVar10) { + iVar4 = uVar9 + 9; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 10; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + iVar4 = uVar9 + 0xb; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 0xc; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + iVar4 = uVar9 + 0xd; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 0xe; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + param_3[iVar3] = param_2[iVar3]; + return; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < param_5) { + iVar3 = param_5 * 2; + lVar14 = (long)param_5; + iVar5 = param_4 + param_5 * -2; + pbVar8 = param_3 + (ulong)(param_5 - 1) + 1; + do { + if (iVar5 < 0) { + iVar16 = 0; + } + else { + iVar16 = 0; + pbVar17 = param_2; + pbVar15 = param_3; + do { + puVar7 = PTR_DAT_00501b38; + uVar10 = (uint)pbVar17[lVar14]; + iVar12 = iVar3; + if (iVar3 < iVar4) { + pbVar13 = pbVar17 + iVar3; + do { + bVar2 = *pbVar13; + iVar12 = iVar12 + param_5; + pbVar13 = pbVar13 + lVar14; + uVar10 = uVar10 - (byte)PTR_DAT_00501b38[(int)((uVar10 - bVar2) + 0x100)] & 0xff; + } while (iVar12 < iVar4); + } + iVar16 = iVar16 + iVar3; + *pbVar15 = (char)uVar10 - PTR_DAT_00501b38[(int)((uVar10 - *pbVar17) + 0x100)]; + pbVar15[lVar14] = (char)uVar10 - puVar7[(int)((uVar10 - pbVar17[iVar12]) + 0x100)]; + pbVar15 = pbVar15 + iVar3; + pbVar17 = pbVar17 + iVar3; + } while (iVar16 <= iVar5); + } + if (iVar16 < param_4) { + pbVar15 = param_3 + iVar16; + pbVar17 = param_2 + lVar14 + iVar16; + do { + uVar10 = (uint)pbVar17[-lVar14]; + pbVar13 = pbVar17; + for (iVar12 = param_5; iVar12 < iVar4; iVar12 = iVar12 + param_5) { + bVar2 = *pbVar13; + pbVar13 = pbVar13 + lVar14; + uVar10 = uVar10 - (byte)PTR_DAT_00501b38[(int)((uVar10 - bVar2) + 0x100)] & 0xff; + } + iVar16 = iVar16 + param_5; + *pbVar15 = (byte)uVar10; + pbVar15 = pbVar15 + lVar14; + pbVar17 = pbVar17 + lVar14; + } while (iVar16 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != pbVar8); + } + } + return; +} + + +================================================================== + +### FUNC 001e0c00 (1196 bytes) name=FUN_001e0c00 + +void FUN_001e0c00(long param_1,byte *param_2,byte *param_3,int param_4,int param_5) + +{ + uint uVar1; + byte bVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + undefined *puVar7; + byte *pbVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + byte *pbVar13; + long lVar14; + byte *pbVar15; + int iVar16; + byte *pbVar17; + undefined8 uVar18; + + iVar4 = param_5 * *(int *)(param_1 + 8); + if (iVar4 == param_5) { + uVar10 = iVar4 * param_4; + if (0 < (int)uVar10) { + if ((uVar10 < 0x16) || (param_3 < param_2 + 0x10 && param_2 < param_3 + 0x10)) { + lVar14 = 0; + do { + param_3[lVar14] = param_2[lVar14]; + lVar14 = lVar14 + 1; + } while (uVar10 - (int)lVar14 != 0 && (int)lVar14 <= (int)uVar10); + return; + } + uVar9 = -(int)param_2 & 0xf; + uVar6 = uVar10; + if (uVar9 <= uVar10 && uVar10 - uVar9 != 0) { + uVar6 = uVar9; + } + uVar9 = uVar6; + if ((((uVar6 != 0) && (*param_3 = *param_2, uVar6 != 1)) && + (param_3[1] = param_2[1], uVar6 != 2)) && + ((param_3[2] = param_2[2], uVar6 != 3 && (param_3[3] = param_2[3], uVar6 != 4)))) { + param_3[4] = param_2[4]; + if (uVar6 == 5) { + uVar9 = 5; + } + else { + param_3[5] = param_2[5]; + if (((uVar6 != 6) && (param_3[6] = param_2[6], uVar6 != 7)) && + ((param_3[7] = param_2[7], uVar6 != 8 && + ((((param_3[8] = param_2[8], uVar6 != 9 && (param_3[9] = param_2[9], uVar6 != 10)) && + (param_3[10] = param_2[10], uVar6 != 0xb)) && + ((param_3[0xb] = param_2[0xb], uVar6 != 0xc && + (param_3[0xc] = param_2[0xc], uVar6 != 0xd)))))))) { + param_3[0xd] = param_2[0xd]; + if (uVar6 == 0xf) { + param_3[0xe] = param_2[0xe]; + } + else { + uVar9 = 0xe; + } + } + } + } + uVar1 = ((uVar10 - uVar6) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (uVar10 - 1) - uVar6) { + uVar11 = 0; + pbVar8 = param_2 + uVar6; + pbVar15 = param_3 + uVar6; + do { + uVar18 = *(undefined8 *)pbVar8; + uVar11 = uVar11 + 1; + *(undefined8 *)(pbVar15 + 8) = *(undefined8 *)(pbVar8 + 8); + *(undefined8 *)pbVar15 = uVar18; + pbVar8 = pbVar8 + 0x10; + pbVar15 = pbVar15 + 0x10; + } while (uVar11 < uVar1); + uVar9 = uVar9 + iVar4; + if (iVar4 == uVar10 - uVar6) { + return; + } + } + iVar4 = uVar9 + 1; + param_3[(int)uVar9] = param_2[(int)uVar9]; + if (iVar4 < (int)uVar10) { + iVar3 = uVar9 + 2; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + iVar4 = uVar9 + 3; + param_3[iVar3] = param_2[iVar3]; + if (iVar4 < (int)uVar10) { + iVar3 = uVar9 + 4; + param_3[iVar4] = param_2[iVar4]; + if (iVar3 < (int)uVar10) { + iVar4 = uVar9 + 5; + param_3[iVar3] = param_2[iVar3]; + if (iVar4 < (int)uVar10) { + iVar3 = uVar9 + 6; + param_3[iVar4] = param_2[iVar4]; + if (iVar3 < (int)uVar10) { + iVar4 = uVar9 + 7; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 8; + param_3[iVar4] = param_2[iVar4]; + if (iVar3 < (int)uVar10) { + iVar4 = uVar9 + 9; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 10; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + iVar4 = uVar9 + 0xb; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 0xc; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + iVar4 = uVar9 + 0xd; + param_3[iVar3] = param_2[iVar3]; + if (uVar10 - iVar4 != 0 && iVar4 <= (int)uVar10) { + iVar3 = uVar9 + 0xe; + param_3[iVar4] = param_2[iVar4]; + if (uVar10 - iVar3 != 0 && iVar3 <= (int)uVar10) { + param_3[iVar3] = param_2[iVar3]; + return; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < param_5) { + iVar3 = param_5 * 2; + lVar14 = (long)param_5; + iVar5 = param_4 + param_5 * -2; + pbVar8 = param_3 + (ulong)(param_5 - 1) + 1; + do { + if (iVar5 < 0) { + iVar16 = 0; + } + else { + iVar16 = 0; + pbVar17 = param_2; + pbVar15 = param_3; + do { + puVar7 = PTR_DAT_00501b38; + uVar10 = (uint)pbVar17[lVar14]; + iVar12 = iVar3; + if (iVar3 < iVar4) { + pbVar13 = pbVar17 + iVar3; + do { + bVar2 = *pbVar13; + iVar12 = iVar12 + param_5; + pbVar13 = pbVar13 + lVar14; + uVar10 = (byte)PTR_DAT_00501b38[(int)((bVar2 - uVar10) + 0x100)] + uVar10 & 0xff; + } while (iVar12 < iVar4); + } + iVar16 = iVar16 + iVar3; + *pbVar15 = (char)uVar10 + PTR_DAT_00501b38[(int)((*pbVar17 - uVar10) + 0x100)]; + pbVar15[lVar14] = (char)uVar10 + puVar7[(int)((pbVar17[iVar12] - uVar10) + 0x100)]; + pbVar15 = pbVar15 + iVar3; + pbVar17 = pbVar17 + iVar3; + } while (iVar16 <= iVar5); + } + if (iVar16 < param_4) { + pbVar15 = param_3 + iVar16; + pbVar17 = param_2 + lVar14 + iVar16; + do { + uVar10 = (uint)pbVar17[-lVar14]; + pbVar13 = pbVar17; + for (iVar12 = param_5; iVar12 < iVar4; iVar12 = iVar12 + param_5) { + bVar2 = *pbVar13; + pbVar13 = pbVar13 + lVar14; + uVar10 = (byte)PTR_DAT_00501b38[(int)((bVar2 - uVar10) + 0x100)] + uVar10 & 0xff; + } + iVar16 = iVar16 + param_5; + *pbVar15 = (byte)uVar10; + pbVar15 = pbVar15 + lVar14; + pbVar17 = pbVar17 + lVar14; + } while (iVar16 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != pbVar8); + } + } + return; +} + + +================================================================== + +### FUNC 001e10ac (552 bytes) name=FUN_001e10ac + +void FUN_001e10ac(long param_1,double *param_2,double *param_3,int param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + double *pdVar5; + double *pdVar6; + uint uVar7; + double *pdVar8; + int iVar9; + double *pdVar10; + long lVar11; + long lVar12; + long lVar13; + ulong uVar14; + long lVar15; + double dVar16; + double dVar17; + + uVar2 = param_5 * *(int *)(param_1 + 8); + if (uVar2 == param_5) { + uVar2 = uVar2 * param_4; + if (0 < (int)uVar2) { + if ((uVar2 < 0xe) || (param_3 < param_2 + 2 && param_2 < param_3 + 2)) { + lVar15 = 0; + do { + param_3[lVar15] = param_2[lVar15]; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar2); + return; + } + uVar1 = (uint)((ulong)param_2 >> 3) & 1; + if (uVar2 < uVar1) { + uVar1 = uVar2; + } + if (uVar1 != 0) { + *param_3 = *param_2; + } + uVar4 = ((uVar2 - uVar1) - 2 >> 1) + 1; + uVar7 = 0; + iVar3 = uVar4 * 2; + pdVar6 = param_3 + uVar1; + pdVar5 = param_2 + uVar1; + do { + dVar17 = *pdVar5; + uVar7 = uVar7 + 1; + pdVar6[1] = pdVar5[1]; + *pdVar6 = dVar17; + pdVar6 = pdVar6 + 2; + pdVar5 = pdVar5 + 2; + } while (uVar7 < uVar4); + uVar4 = (uint)(uVar1 != 0) + iVar3; + if (uVar2 - uVar1 != iVar3) { + uVar14 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3; + *(undefined8 *)((long)param_3 + uVar14) = *(undefined8 *)((long)param_2 + uVar14); + return; + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar1 = param_5 * 2; + lVar15 = (long)(int)param_5; + iVar3 = param_4 + param_5 * -2; + pdVar6 = param_3 + (ulong)(param_5 - 1) + 1; + uVar14 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | (ulong)uVar1 << 3; + do { + if (iVar3 < 0) { + iVar9 = 0; + } + else { + iVar9 = 0; + pdVar10 = param_2; + pdVar5 = param_3; + do { + dVar17 = pdVar10[lVar15]; + uVar4 = uVar1; + if ((int)uVar1 < (int)uVar2) { + pdVar8 = (double *)(uVar14 + (long)pdVar10); + dVar16 = dVar17; + do { + dVar17 = *pdVar8; + uVar4 = uVar4 + param_5; + pdVar8 = pdVar8 + lVar15; + if (dVar17 <= dVar16) { + dVar17 = dVar16; + } + dVar16 = dVar17; + } while ((int)uVar4 < (int)uVar2); + } + dVar16 = *pdVar10; + if (*pdVar10 <= dVar17) { + dVar16 = dVar17; + } + *pdVar5 = dVar16; + dVar16 = pdVar10[(int)uVar4]; + if (pdVar10[(int)uVar4] <= dVar17) { + dVar16 = dVar17; + } + iVar9 = iVar9 + uVar1; + pdVar5[lVar15] = dVar16; + pdVar5 = (double *)((long)pdVar5 + uVar14); + pdVar10 = (double *)(uVar14 + (long)pdVar10); + } while (iVar9 <= iVar3); + } + if (iVar9 < param_4) { + lVar12 = (long)iVar9; + lVar11 = 0; + lVar13 = lVar12 * 8; + do { + dVar17 = *(double *)((long)param_2 + lVar11 + lVar13); + if ((int)param_5 < (int)uVar2) { + pdVar5 = (double *)((long)param_2 + lVar11 + (lVar12 + lVar15) * 8); + dVar16 = dVar17; + uVar4 = param_5; + do { + dVar17 = *pdVar5; + uVar4 = uVar4 + param_5; + pdVar5 = pdVar5 + lVar15; + if (dVar17 <= dVar16) { + dVar17 = dVar16; + } + dVar16 = dVar17; + } while ((int)uVar4 < (int)uVar2); + } + iVar9 = iVar9 + param_5; + *(double *)((long)param_3 + lVar11 + lVar13) = dVar17; + lVar11 = lVar11 + lVar15 * 8; + } while (iVar9 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != pdVar6); + } + } + return; +} + + +================================================================== + +### FUNC 001e12d4 (648 bytes) name=FUN_001e12d4 + +void FUN_001e12d4(long param_1,float *param_2,float *param_3,int param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + float *pfVar6; + float *pfVar7; + float *pfVar8; + uint uVar9; + int iVar10; + float *pfVar11; + long lVar12; + long lVar13; + long lVar14; + ulong uVar15; + long lVar16; + float fVar17; + undefined8 uVar18; + float fVar19; + + uVar3 = param_5 * *(int *)(param_1 + 8); + if (uVar3 == param_5) { + uVar3 = uVar3 * param_4; + if (0 < (int)uVar3) { + if ((uVar3 < 0xc) || (param_3 < param_2 + 4 && param_2 < param_3 + 4)) { + lVar16 = 0; + do { + param_3[lVar16] = param_2[lVar16]; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar3); + return; + } + uVar2 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + if (uVar3 < uVar2) { + uVar2 = uVar3; + } + uVar5 = uVar2; + if ((uVar2 != 0) && (*param_3 = *param_2, uVar2 != 1)) { + param_3[1] = param_2[1]; + if (uVar2 == 3) { + param_3[2] = param_2[2]; + } + else { + uVar5 = 2; + } + } + uVar1 = ((uVar3 - uVar2) - 4 >> 2) + 1; + uVar9 = 0; + iVar4 = uVar1 * 4; + pfVar7 = param_3 + uVar2; + pfVar6 = param_2 + uVar2; + do { + uVar18 = *(undefined8 *)pfVar6; + uVar9 = uVar9 + 1; + *(undefined8 *)(pfVar7 + 2) = *(undefined8 *)(pfVar6 + 2); + *(undefined8 *)pfVar7 = uVar18; + pfVar7 = pfVar7 + 4; + pfVar6 = pfVar6 + 4; + } while (uVar9 < uVar1); + uVar5 = uVar5 + iVar4; + if (uVar3 - uVar2 != iVar4) { + uVar15 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + *(undefined4 *)((long)param_3 + uVar15) = *(undefined4 *)((long)param_2 + uVar15); + if (((int)(uVar5 + 1) < (int)uVar3) && + (*(undefined4 *)((long)param_3 + uVar15 + 4) = + *(undefined4 *)((long)param_2 + uVar15 + 4), (int)(uVar5 + 2) < (int)uVar3)) { + *(undefined4 *)((long)param_3 + uVar15 + 8) = *(undefined4 *)((long)param_2 + uVar15 + 8); + return; + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar2 = param_5 * 2; + lVar16 = (long)(int)param_5; + iVar4 = param_4 + param_5 * -2; + pfVar7 = param_3 + (ulong)(param_5 - 1) + 1; + uVar15 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + do { + if (iVar4 < 0) { + iVar10 = 0; + } + else { + iVar10 = 0; + pfVar11 = param_2; + pfVar6 = param_3; + do { + fVar19 = pfVar11[lVar16]; + uVar5 = uVar2; + if ((int)uVar2 < (int)uVar3) { + pfVar8 = (float *)(uVar15 + (long)pfVar11); + do { + fVar17 = *pfVar8; + uVar5 = uVar5 + param_5; + pfVar8 = pfVar8 + lVar16; + if (fVar17 <= fVar19) { + fVar17 = fVar19; + } + fVar19 = fVar17; + } while ((int)uVar5 < (int)uVar3); + } + fVar17 = *pfVar11; + if (*pfVar11 <= fVar19) { + fVar17 = fVar19; + } + *pfVar6 = fVar17; + fVar17 = pfVar11[(int)uVar5]; + if (pfVar11[(int)uVar5] <= fVar19) { + fVar17 = fVar19; + } + iVar10 = iVar10 + uVar2; + pfVar6[lVar16] = fVar17; + pfVar6 = (float *)((long)pfVar6 + uVar15); + pfVar11 = (float *)(uVar15 + (long)pfVar11); + } while (iVar10 <= iVar4); + } + if (iVar10 < param_4) { + lVar13 = (long)iVar10; + lVar12 = 0; + lVar14 = lVar13 * 4; + do { + fVar19 = *(float *)((long)param_2 + lVar12 + lVar14); + if ((int)param_5 < (int)uVar3) { + pfVar6 = (float *)((long)param_2 + lVar12 + (lVar16 + lVar13) * 4); + uVar5 = param_5; + do { + fVar17 = *pfVar6; + uVar5 = uVar5 + param_5; + pfVar6 = pfVar6 + lVar16; + if (fVar17 <= fVar19) { + fVar17 = fVar19; + } + fVar19 = fVar17; + } while ((int)uVar5 < (int)uVar3); + } + iVar10 = iVar10 + param_5; + *(float *)((long)param_3 + lVar12 + lVar14) = fVar19; + lVar12 = lVar12 + lVar16 * 4; + } while (iVar10 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != pfVar7); + } + } + return; +} + + +================================================================== + +### FUNC 001e155c (844 bytes) name=FUN_001e155c + +void FUN_001e155c(long param_1,ushort *param_2,ushort *param_3,int param_4,uint param_5) + +{ + uint uVar1; + ushort uVar2; + short sVar3; + uint uVar4; + uint uVar5; + int iVar6; + short sVar7; + uint uVar8; + ushort *puVar9; + ulong uVar10; + short *psVar11; + uint uVar12; + ushort *puVar13; + ushort *puVar14; + int iVar15; + ushort *puVar16; + long lVar17; + long lVar18; + long lVar19; + ulong uVar20; + long lVar21; + undefined8 uVar22; + + uVar5 = param_5 * *(int *)(param_1 + 8); + if (uVar5 == param_5) { + uVar5 = uVar5 * param_4; + if (0 < (int)uVar5) { + if ((uVar5 < 0xf) || (param_3 < param_2 + 8 && param_2 < param_3 + 8)) { + lVar21 = 0; + do { + param_3[lVar21] = param_2[lVar21]; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar5); + return; + } + uVar4 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + if (uVar5 < uVar4) { + uVar4 = uVar5; + } + uVar8 = uVar4; + if ((((uVar4 != 0) && (*param_3 = *param_2, uVar4 != 1)) && + (param_3[1] = param_2[1], uVar4 != 2)) && + ((param_3[2] = param_2[2], uVar4 != 3 && (param_3[3] = param_2[3], uVar4 != 4)))) { + param_3[4] = param_2[4]; + if (uVar4 == 5) { + uVar8 = 5; + } + else { + param_3[5] = param_2[5]; + if (uVar4 == 7) { + param_3[6] = param_2[6]; + } + else { + uVar8 = 6; + } + } + } + uVar1 = ((uVar5 - uVar4) - 8 >> 3) + 1; + uVar12 = 0; + iVar6 = uVar1 * 8; + puVar9 = param_3 + uVar4; + puVar14 = param_2 + uVar4; + do { + uVar22 = *(undefined8 *)puVar14; + uVar12 = uVar12 + 1; + *(undefined8 *)(puVar9 + 4) = *(undefined8 *)(puVar14 + 4); + *(undefined8 *)puVar9 = uVar22; + puVar9 = puVar9 + 8; + puVar14 = puVar14 + 8; + } while (uVar12 < uVar1); + uVar8 = uVar8 + iVar6; + if (iVar6 != uVar5 - uVar4) { + uVar20 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + *(undefined2 *)((long)param_3 + uVar20) = *(undefined2 *)((long)param_2 + uVar20); + if ((((int)(uVar8 + 1) < (int)uVar5) && + (*(undefined2 *)((long)param_3 + uVar20 + 2) = + *(undefined2 *)((long)param_2 + uVar20 + 2), (int)(uVar8 + 2) < (int)uVar5)) && + ((*(undefined2 *)((long)param_3 + uVar20 + 4) = + *(undefined2 *)((long)param_2 + uVar20 + 4), (int)(uVar8 + 3) < (int)uVar5 && + (((*(undefined2 *)((long)param_3 + uVar20 + 6) = + *(undefined2 *)((long)param_2 + uVar20 + 6), (int)(uVar8 + 4) < (int)uVar5 && + (*(undefined2 *)((long)param_3 + uVar20 + 8) = + *(undefined2 *)((long)param_2 + uVar20 + 8), (int)(uVar8 + 5) < (int)uVar5)) && + (*(undefined2 *)((long)param_3 + uVar20 + 10) = + *(undefined2 *)((long)param_2 + uVar20 + 10), (int)(uVar8 + 6) < (int)uVar5)))))) + { + *(undefined2 *)((long)param_3 + uVar20 + 0xc) = + *(undefined2 *)((long)param_2 + uVar20 + 0xc); + return; + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar4 = param_5 * 2; + lVar21 = (long)(int)param_5; + iVar6 = param_4 + param_5 * -2; + puVar9 = param_3 + (ulong)(param_5 - 1) + 1; + uVar20 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | (ulong)uVar4 << 1; + do { + if (iVar6 < 0) { + iVar15 = 0; + } + else { + iVar15 = 0; + puVar16 = param_2; + puVar14 = param_3; + do { + uVar8 = (uint)(short)puVar16[lVar21]; + if ((int)uVar4 < (int)uVar5) { + puVar13 = (ushort *)((long)puVar16 + uVar20); + uVar10 = (ulong)uVar4; + do { + uVar2 = *puVar13; + uVar1 = (int)uVar10 + param_5; + uVar10 = (ulong)uVar1; + puVar13 = puVar13 + lVar21; + uVar12 = (uint)uVar2; + if ((int)(short)uVar2 <= (int)uVar8) { + uVar12 = uVar8; + } + uVar8 = (uint)(short)uVar12; + } while ((int)uVar1 < (int)uVar5); + } + else { + uVar10 = (ulong)uVar4; + } + uVar10 = -(uVar10 >> 0x1f) & 0xfffffffe00000000 | uVar10 << 1; + iVar15 = iVar15 + uVar4; + uVar1 = (uint)*puVar16; + if ((int)(short)*puVar16 <= (int)uVar8) { + uVar1 = uVar8; + } + *puVar14 = (ushort)uVar1; + uVar1 = (uint)*(ushort *)((long)puVar16 + uVar10); + if ((int)*(short *)((long)puVar16 + uVar10) < (int)uVar8) { + uVar1 = uVar8; + } + puVar14[lVar21] = (ushort)uVar1; + puVar14 = (ushort *)((long)puVar14 + uVar20); + puVar16 = (ushort *)((long)puVar16 + uVar20); + } while (iVar15 <= iVar6); + } + if (iVar15 < param_4) { + lVar18 = (long)iVar15; + lVar17 = 0; + lVar19 = lVar18 * 2; + do { + sVar7 = *(short *)((long)param_2 + lVar17 + lVar19); + if ((int)param_5 < (int)uVar5) { + psVar11 = (short *)((long)param_2 + lVar17 + (lVar21 + lVar18) * 2); + uVar8 = param_5; + do { + sVar3 = *psVar11; + uVar8 = uVar8 + param_5; + psVar11 = psVar11 + lVar21; + if (sVar3 <= sVar7) { + sVar3 = sVar7; + } + sVar7 = sVar3; + } while ((int)uVar8 < (int)uVar5); + } + iVar15 = iVar15 + param_5; + *(short *)((long)param_3 + lVar17 + lVar19) = sVar7; + lVar17 = lVar17 + lVar21 * 2; + } while (iVar15 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != puVar9); + } + } + return; +} + + +================================================================== + +### FUNC 001e18a8 (836 bytes) name=FUN_001e18a8 + +void FUN_001e18a8(long param_1,ushort *param_2,ushort *param_3,int param_4,uint param_5) + +{ + uint uVar1; + ushort uVar2; + uint uVar3; + uint uVar4; + int iVar5; + ushort uVar6; + ushort *puVar7; + uint uVar8; + ushort *puVar9; + uint uVar10; + ushort *puVar11; + int iVar12; + ushort *puVar13; + long lVar14; + long lVar15; + long lVar16; + ulong uVar17; + long lVar18; + undefined8 uVar19; + + uVar4 = param_5 * *(int *)(param_1 + 8); + if (uVar4 == param_5) { + uVar4 = uVar4 * param_4; + if (0 < (int)uVar4) { + if ((uVar4 < 0xf) || (param_3 < param_2 + 8 && param_2 < param_3 + 8)) { + lVar18 = 0; + do { + param_3[lVar18] = param_2[lVar18]; + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)uVar4); + return; + } + uVar3 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + if (uVar4 < uVar3) { + uVar3 = uVar4; + } + uVar8 = uVar3; + if ((((uVar3 != 0) && (*param_3 = *param_2, uVar3 != 1)) && + (param_3[1] = param_2[1], uVar3 != 2)) && + ((param_3[2] = param_2[2], uVar3 != 3 && (param_3[3] = param_2[3], uVar3 != 4)))) { + param_3[4] = param_2[4]; + if (uVar3 == 5) { + uVar8 = 5; + } + else { + param_3[5] = param_2[5]; + if (uVar3 == 7) { + param_3[6] = param_2[6]; + } + else { + uVar8 = 6; + } + } + } + uVar1 = ((uVar4 - uVar3) - 8 >> 3) + 1; + uVar10 = 0; + iVar5 = uVar1 * 8; + puVar7 = param_3 + uVar3; + puVar9 = param_2 + uVar3; + do { + uVar19 = *(undefined8 *)puVar9; + uVar10 = uVar10 + 1; + *(undefined8 *)(puVar7 + 4) = *(undefined8 *)(puVar9 + 4); + *(undefined8 *)puVar7 = uVar19; + puVar7 = puVar7 + 8; + puVar9 = puVar9 + 8; + } while (uVar10 < uVar1); + uVar8 = uVar8 + iVar5; + if (iVar5 != uVar4 - uVar3) { + uVar17 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + *(undefined2 *)((long)param_3 + uVar17) = *(undefined2 *)((long)param_2 + uVar17); + if ((((int)(uVar8 + 1) < (int)uVar4) && + (*(undefined2 *)((long)param_3 + uVar17 + 2) = + *(undefined2 *)((long)param_2 + uVar17 + 2), (int)(uVar8 + 2) < (int)uVar4)) && + ((*(undefined2 *)((long)param_3 + uVar17 + 4) = + *(undefined2 *)((long)param_2 + uVar17 + 4), (int)(uVar8 + 3) < (int)uVar4 && + (((*(undefined2 *)((long)param_3 + uVar17 + 6) = + *(undefined2 *)((long)param_2 + uVar17 + 6), (int)(uVar8 + 4) < (int)uVar4 && + (*(undefined2 *)((long)param_3 + uVar17 + 8) = + *(undefined2 *)((long)param_2 + uVar17 + 8), (int)(uVar8 + 5) < (int)uVar4)) && + (*(undefined2 *)((long)param_3 + uVar17 + 10) = + *(undefined2 *)((long)param_2 + uVar17 + 10), (int)(uVar8 + 6) < (int)uVar4)))))) + { + *(undefined2 *)((long)param_3 + uVar17 + 0xc) = + *(undefined2 *)((long)param_2 + uVar17 + 0xc); + return; + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar3 = param_5 * 2; + lVar18 = (long)(int)param_5; + iVar5 = param_4 + param_5 * -2; + puVar7 = param_3 + (ulong)(param_5 - 1) + 1; + uVar17 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + do { + if (iVar5 < 0) { + iVar12 = 0; + } + else { + iVar12 = 0; + puVar13 = param_2; + puVar9 = param_3; + do { + uVar6 = puVar13[lVar18]; + uVar8 = uVar3; + if ((int)uVar3 < (int)uVar4) { + puVar11 = (ushort *)((long)puVar13 + uVar17); + do { + uVar2 = *puVar11; + uVar8 = uVar8 + param_5; + puVar11 = puVar11 + lVar18; + if (uVar2 <= uVar6) { + uVar2 = uVar6; + } + uVar6 = uVar2; + } while ((int)uVar8 < (int)uVar4); + } + iVar12 = iVar12 + uVar3; + uVar2 = *puVar13; + if (*puVar13 <= uVar6) { + uVar2 = uVar6; + } + *puVar9 = uVar2; + uVar2 = puVar13[(int)uVar8]; + if (puVar13[(int)uVar8] < uVar6) { + uVar2 = uVar6; + } + puVar9[lVar18] = uVar2; + puVar9 = (ushort *)((long)puVar9 + uVar17); + puVar13 = (ushort *)((long)puVar13 + uVar17); + } while (iVar12 <= iVar5); + } + if (iVar12 < param_4) { + lVar15 = (long)iVar12; + lVar14 = 0; + lVar16 = lVar15 * 2; + do { + uVar6 = *(ushort *)((long)param_2 + lVar14 + lVar16); + if ((int)param_5 < (int)uVar4) { + puVar9 = (ushort *)((long)param_2 + lVar14 + (lVar18 + lVar15) * 2); + uVar8 = param_5; + do { + uVar2 = *puVar9; + uVar8 = uVar8 + param_5; + puVar9 = puVar9 + lVar18; + if (uVar2 <= uVar6) { + uVar2 = uVar6; + } + uVar6 = uVar2; + } while ((int)uVar8 < (int)uVar4); + } + iVar12 = iVar12 + param_5; + *(ushort *)((long)param_3 + lVar14 + lVar16) = uVar6; + lVar14 = lVar14 + lVar18 * 2; + } while (iVar12 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != puVar7); + } + } + return; +} + + +================================================================== + +### FUNC 001e1bec (552 bytes) name=FUN_001e1bec + +void FUN_001e1bec(long param_1,double *param_2,double *param_3,int param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + double *pdVar5; + double *pdVar6; + uint uVar7; + double *pdVar8; + int iVar9; + double *pdVar10; + long lVar11; + long lVar12; + long lVar13; + ulong uVar14; + long lVar15; + double dVar16; + double dVar17; + + uVar2 = param_5 * *(int *)(param_1 + 8); + if (uVar2 == param_5) { + uVar2 = uVar2 * param_4; + if (0 < (int)uVar2) { + if ((uVar2 < 0xe) || (param_3 < param_2 + 2 && param_2 < param_3 + 2)) { + lVar15 = 0; + do { + param_3[lVar15] = param_2[lVar15]; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar2); + return; + } + uVar1 = (uint)((ulong)param_2 >> 3) & 1; + if (uVar2 < uVar1) { + uVar1 = uVar2; + } + if (uVar1 != 0) { + *param_3 = *param_2; + } + uVar4 = ((uVar2 - uVar1) - 2 >> 1) + 1; + uVar7 = 0; + iVar3 = uVar4 * 2; + pdVar6 = param_3 + uVar1; + pdVar5 = param_2 + uVar1; + do { + dVar17 = *pdVar5; + uVar7 = uVar7 + 1; + pdVar6[1] = pdVar5[1]; + *pdVar6 = dVar17; + pdVar6 = pdVar6 + 2; + pdVar5 = pdVar5 + 2; + } while (uVar7 < uVar4); + uVar4 = (uint)(uVar1 != 0) + iVar3; + if (uVar2 - uVar1 != iVar3) { + uVar14 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3; + *(undefined8 *)((long)param_3 + uVar14) = *(undefined8 *)((long)param_2 + uVar14); + return; + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar1 = param_5 * 2; + lVar15 = (long)(int)param_5; + iVar3 = param_4 + param_5 * -2; + pdVar6 = param_3 + (ulong)(param_5 - 1) + 1; + uVar14 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | (ulong)uVar1 << 3; + do { + if (iVar3 < 0) { + iVar9 = 0; + } + else { + iVar9 = 0; + pdVar10 = param_2; + pdVar5 = param_3; + do { + dVar17 = pdVar10[lVar15]; + uVar4 = uVar1; + if ((int)uVar1 < (int)uVar2) { + pdVar8 = (double *)(uVar14 + (long)pdVar10); + dVar16 = dVar17; + do { + dVar17 = *pdVar8; + uVar4 = uVar4 + param_5; + pdVar8 = pdVar8 + lVar15; + if (dVar16 <= dVar17) { + dVar17 = dVar16; + } + dVar16 = dVar17; + } while ((int)uVar4 < (int)uVar2); + } + dVar16 = *pdVar10; + if (dVar17 <= *pdVar10) { + dVar16 = dVar17; + } + *pdVar5 = dVar16; + dVar16 = pdVar10[(int)uVar4]; + if (dVar17 <= pdVar10[(int)uVar4]) { + dVar16 = dVar17; + } + iVar9 = iVar9 + uVar1; + pdVar5[lVar15] = dVar16; + pdVar5 = (double *)((long)pdVar5 + uVar14); + pdVar10 = (double *)(uVar14 + (long)pdVar10); + } while (iVar9 <= iVar3); + } + if (iVar9 < param_4) { + lVar12 = (long)iVar9; + lVar11 = 0; + lVar13 = lVar12 * 8; + do { + dVar17 = *(double *)((long)param_2 + lVar11 + lVar13); + if ((int)param_5 < (int)uVar2) { + pdVar5 = (double *)((long)param_2 + lVar11 + (lVar12 + lVar15) * 8); + dVar16 = dVar17; + uVar4 = param_5; + do { + dVar17 = *pdVar5; + uVar4 = uVar4 + param_5; + pdVar5 = pdVar5 + lVar15; + if (dVar16 <= dVar17) { + dVar17 = dVar16; + } + dVar16 = dVar17; + } while ((int)uVar4 < (int)uVar2); + } + iVar9 = iVar9 + param_5; + *(double *)((long)param_3 + lVar11 + lVar13) = dVar17; + lVar11 = lVar11 + lVar15 * 8; + } while (iVar9 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != pdVar6); + } + } + return; +} + + +================================================================== + +### FUNC 001e1e14 (648 bytes) name=FUN_001e1e14 + +void FUN_001e1e14(long param_1,float *param_2,float *param_3,int param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + float *pfVar6; + float *pfVar7; + float *pfVar8; + uint uVar9; + int iVar10; + float *pfVar11; + long lVar12; + long lVar13; + long lVar14; + ulong uVar15; + long lVar16; + float fVar17; + undefined8 uVar18; + float fVar19; + + uVar3 = param_5 * *(int *)(param_1 + 8); + if (uVar3 == param_5) { + uVar3 = uVar3 * param_4; + if (0 < (int)uVar3) { + if ((uVar3 < 0xc) || (param_3 < param_2 + 4 && param_2 < param_3 + 4)) { + lVar16 = 0; + do { + param_3[lVar16] = param_2[lVar16]; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar3); + return; + } + uVar2 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + if (uVar3 < uVar2) { + uVar2 = uVar3; + } + uVar5 = uVar2; + if ((uVar2 != 0) && (*param_3 = *param_2, uVar2 != 1)) { + param_3[1] = param_2[1]; + if (uVar2 == 3) { + param_3[2] = param_2[2]; + } + else { + uVar5 = 2; + } + } + uVar1 = ((uVar3 - uVar2) - 4 >> 2) + 1; + uVar9 = 0; + iVar4 = uVar1 * 4; + pfVar7 = param_3 + uVar2; + pfVar6 = param_2 + uVar2; + do { + uVar18 = *(undefined8 *)pfVar6; + uVar9 = uVar9 + 1; + *(undefined8 *)(pfVar7 + 2) = *(undefined8 *)(pfVar6 + 2); + *(undefined8 *)pfVar7 = uVar18; + pfVar7 = pfVar7 + 4; + pfVar6 = pfVar6 + 4; + } while (uVar9 < uVar1); + uVar5 = uVar5 + iVar4; + if (uVar3 - uVar2 != iVar4) { + uVar15 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + *(undefined4 *)((long)param_3 + uVar15) = *(undefined4 *)((long)param_2 + uVar15); + if (((int)(uVar5 + 1) < (int)uVar3) && + (*(undefined4 *)((long)param_3 + uVar15 + 4) = + *(undefined4 *)((long)param_2 + uVar15 + 4), (int)(uVar5 + 2) < (int)uVar3)) { + *(undefined4 *)((long)param_3 + uVar15 + 8) = *(undefined4 *)((long)param_2 + uVar15 + 8); + return; + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar2 = param_5 * 2; + lVar16 = (long)(int)param_5; + iVar4 = param_4 + param_5 * -2; + pfVar7 = param_3 + (ulong)(param_5 - 1) + 1; + uVar15 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + do { + if (iVar4 < 0) { + iVar10 = 0; + } + else { + iVar10 = 0; + pfVar11 = param_2; + pfVar6 = param_3; + do { + fVar19 = pfVar11[lVar16]; + uVar5 = uVar2; + if ((int)uVar2 < (int)uVar3) { + pfVar8 = (float *)(uVar15 + (long)pfVar11); + do { + fVar17 = *pfVar8; + uVar5 = uVar5 + param_5; + pfVar8 = pfVar8 + lVar16; + if (fVar19 <= fVar17) { + fVar17 = fVar19; + } + fVar19 = fVar17; + } while ((int)uVar5 < (int)uVar3); + } + fVar17 = *pfVar11; + if (fVar19 <= *pfVar11) { + fVar17 = fVar19; + } + *pfVar6 = fVar17; + fVar17 = pfVar11[(int)uVar5]; + if (fVar19 <= pfVar11[(int)uVar5]) { + fVar17 = fVar19; + } + iVar10 = iVar10 + uVar2; + pfVar6[lVar16] = fVar17; + pfVar6 = (float *)((long)pfVar6 + uVar15); + pfVar11 = (float *)(uVar15 + (long)pfVar11); + } while (iVar10 <= iVar4); + } + if (iVar10 < param_4) { + lVar13 = (long)iVar10; + lVar12 = 0; + lVar14 = lVar13 * 4; + do { + fVar19 = *(float *)((long)param_2 + lVar12 + lVar14); + if ((int)param_5 < (int)uVar3) { + pfVar6 = (float *)((long)param_2 + lVar12 + (lVar16 + lVar13) * 4); + uVar5 = param_5; + do { + fVar17 = *pfVar6; + uVar5 = uVar5 + param_5; + pfVar6 = pfVar6 + lVar16; + if (fVar19 <= fVar17) { + fVar17 = fVar19; + } + fVar19 = fVar17; + } while ((int)uVar5 < (int)uVar3); + } + iVar10 = iVar10 + param_5; + *(float *)((long)param_3 + lVar12 + lVar14) = fVar19; + lVar12 = lVar12 + lVar16 * 4; + } while (iVar10 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != pfVar7); + } + } + return; +} + + +================================================================== + +### FUNC 001e209c (844 bytes) name=FUN_001e209c + +void FUN_001e209c(long param_1,ushort *param_2,ushort *param_3,int param_4,uint param_5) + +{ + uint uVar1; + ushort uVar2; + short sVar3; + uint uVar4; + uint uVar5; + int iVar6; + short sVar7; + uint uVar8; + ushort *puVar9; + ulong uVar10; + short *psVar11; + uint uVar12; + ushort *puVar13; + ushort *puVar14; + int iVar15; + ushort *puVar16; + long lVar17; + long lVar18; + long lVar19; + ulong uVar20; + long lVar21; + undefined8 uVar22; + + uVar5 = param_5 * *(int *)(param_1 + 8); + if (uVar5 == param_5) { + uVar5 = uVar5 * param_4; + if (0 < (int)uVar5) { + if ((uVar5 < 0xf) || (param_3 < param_2 + 8 && param_2 < param_3 + 8)) { + lVar21 = 0; + do { + param_3[lVar21] = param_2[lVar21]; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar5); + return; + } + uVar4 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + if (uVar5 < uVar4) { + uVar4 = uVar5; + } + uVar8 = uVar4; + if ((((uVar4 != 0) && (*param_3 = *param_2, uVar4 != 1)) && + (param_3[1] = param_2[1], uVar4 != 2)) && + ((param_3[2] = param_2[2], uVar4 != 3 && (param_3[3] = param_2[3], uVar4 != 4)))) { + param_3[4] = param_2[4]; + if (uVar4 == 5) { + uVar8 = 5; + } + else { + param_3[5] = param_2[5]; + if (uVar4 == 7) { + param_3[6] = param_2[6]; + } + else { + uVar8 = 6; + } + } + } + uVar1 = ((uVar5 - uVar4) - 8 >> 3) + 1; + uVar12 = 0; + iVar6 = uVar1 * 8; + puVar9 = param_3 + uVar4; + puVar14 = param_2 + uVar4; + do { + uVar22 = *(undefined8 *)puVar14; + uVar12 = uVar12 + 1; + *(undefined8 *)(puVar9 + 4) = *(undefined8 *)(puVar14 + 4); + *(undefined8 *)puVar9 = uVar22; + puVar9 = puVar9 + 8; + puVar14 = puVar14 + 8; + } while (uVar12 < uVar1); + uVar8 = uVar8 + iVar6; + if (iVar6 != uVar5 - uVar4) { + uVar20 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + *(undefined2 *)((long)param_3 + uVar20) = *(undefined2 *)((long)param_2 + uVar20); + if ((((int)(uVar8 + 1) < (int)uVar5) && + (*(undefined2 *)((long)param_3 + uVar20 + 2) = + *(undefined2 *)((long)param_2 + uVar20 + 2), (int)(uVar8 + 2) < (int)uVar5)) && + ((*(undefined2 *)((long)param_3 + uVar20 + 4) = + *(undefined2 *)((long)param_2 + uVar20 + 4), (int)(uVar8 + 3) < (int)uVar5 && + (((*(undefined2 *)((long)param_3 + uVar20 + 6) = + *(undefined2 *)((long)param_2 + uVar20 + 6), (int)(uVar8 + 4) < (int)uVar5 && + (*(undefined2 *)((long)param_3 + uVar20 + 8) = + *(undefined2 *)((long)param_2 + uVar20 + 8), (int)(uVar8 + 5) < (int)uVar5)) && + (*(undefined2 *)((long)param_3 + uVar20 + 10) = + *(undefined2 *)((long)param_2 + uVar20 + 10), (int)(uVar8 + 6) < (int)uVar5)))))) + { + *(undefined2 *)((long)param_3 + uVar20 + 0xc) = + *(undefined2 *)((long)param_2 + uVar20 + 0xc); + return; + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar4 = param_5 * 2; + lVar21 = (long)(int)param_5; + iVar6 = param_4 + param_5 * -2; + puVar9 = param_3 + (ulong)(param_5 - 1) + 1; + uVar20 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | (ulong)uVar4 << 1; + do { + if (iVar6 < 0) { + iVar15 = 0; + } + else { + iVar15 = 0; + puVar16 = param_2; + puVar14 = param_3; + do { + uVar8 = (uint)(short)puVar16[lVar21]; + if ((int)uVar4 < (int)uVar5) { + puVar13 = (ushort *)((long)puVar16 + uVar20); + uVar10 = (ulong)uVar4; + do { + uVar2 = *puVar13; + uVar1 = (int)uVar10 + param_5; + uVar10 = (ulong)uVar1; + puVar13 = puVar13 + lVar21; + uVar12 = (uint)uVar2; + if ((int)uVar8 <= (int)(short)uVar2) { + uVar12 = uVar8; + } + uVar8 = (uint)(short)uVar12; + } while ((int)uVar1 < (int)uVar5); + } + else { + uVar10 = (ulong)uVar4; + } + uVar10 = -(uVar10 >> 0x1f) & 0xfffffffe00000000 | uVar10 << 1; + iVar15 = iVar15 + uVar4; + uVar1 = (uint)*puVar16; + if ((int)uVar8 <= (int)(short)*puVar16) { + uVar1 = uVar8; + } + *puVar14 = (ushort)uVar1; + uVar1 = (uint)*(ushort *)((long)puVar16 + uVar10); + if ((int)uVar8 < (int)*(short *)((long)puVar16 + uVar10)) { + uVar1 = uVar8; + } + puVar14[lVar21] = (ushort)uVar1; + puVar14 = (ushort *)((long)puVar14 + uVar20); + puVar16 = (ushort *)((long)puVar16 + uVar20); + } while (iVar15 <= iVar6); + } + if (iVar15 < param_4) { + lVar18 = (long)iVar15; + lVar17 = 0; + lVar19 = lVar18 * 2; + do { + sVar7 = *(short *)((long)param_2 + lVar17 + lVar19); + if ((int)param_5 < (int)uVar5) { + psVar11 = (short *)((long)param_2 + lVar17 + (lVar21 + lVar18) * 2); + uVar8 = param_5; + do { + sVar3 = *psVar11; + uVar8 = uVar8 + param_5; + psVar11 = psVar11 + lVar21; + if (sVar7 <= sVar3) { + sVar3 = sVar7; + } + sVar7 = sVar3; + } while ((int)uVar8 < (int)uVar5); + } + iVar15 = iVar15 + param_5; + *(short *)((long)param_3 + lVar17 + lVar19) = sVar7; + lVar17 = lVar17 + lVar21 * 2; + } while (iVar15 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != puVar9); + } + } + return; +} + + +================================================================== + +### FUNC 001e23e8 (836 bytes) name=FUN_001e23e8 + +void FUN_001e23e8(long param_1,ushort *param_2,ushort *param_3,int param_4,uint param_5) + +{ + uint uVar1; + ushort uVar2; + uint uVar3; + uint uVar4; + int iVar5; + ushort uVar6; + ushort *puVar7; + uint uVar8; + ushort *puVar9; + uint uVar10; + ushort *puVar11; + int iVar12; + ushort *puVar13; + long lVar14; + long lVar15; + long lVar16; + ulong uVar17; + long lVar18; + undefined8 uVar19; + + uVar4 = param_5 * *(int *)(param_1 + 8); + if (uVar4 == param_5) { + uVar4 = uVar4 * param_4; + if (0 < (int)uVar4) { + if ((uVar4 < 0xf) || (param_3 < param_2 + 8 && param_2 < param_3 + 8)) { + lVar18 = 0; + do { + param_3[lVar18] = param_2[lVar18]; + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)uVar4); + return; + } + uVar3 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + if (uVar4 < uVar3) { + uVar3 = uVar4; + } + uVar8 = uVar3; + if ((((uVar3 != 0) && (*param_3 = *param_2, uVar3 != 1)) && + (param_3[1] = param_2[1], uVar3 != 2)) && + ((param_3[2] = param_2[2], uVar3 != 3 && (param_3[3] = param_2[3], uVar3 != 4)))) { + param_3[4] = param_2[4]; + if (uVar3 == 5) { + uVar8 = 5; + } + else { + param_3[5] = param_2[5]; + if (uVar3 == 7) { + param_3[6] = param_2[6]; + } + else { + uVar8 = 6; + } + } + } + uVar1 = ((uVar4 - uVar3) - 8 >> 3) + 1; + uVar10 = 0; + iVar5 = uVar1 * 8; + puVar7 = param_3 + uVar3; + puVar9 = param_2 + uVar3; + do { + uVar19 = *(undefined8 *)puVar9; + uVar10 = uVar10 + 1; + *(undefined8 *)(puVar7 + 4) = *(undefined8 *)(puVar9 + 4); + *(undefined8 *)puVar7 = uVar19; + puVar7 = puVar7 + 8; + puVar9 = puVar9 + 8; + } while (uVar10 < uVar1); + uVar8 = uVar8 + iVar5; + if (iVar5 != uVar4 - uVar3) { + uVar17 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + *(undefined2 *)((long)param_3 + uVar17) = *(undefined2 *)((long)param_2 + uVar17); + if ((((int)(uVar8 + 1) < (int)uVar4) && + (*(undefined2 *)((long)param_3 + uVar17 + 2) = + *(undefined2 *)((long)param_2 + uVar17 + 2), (int)(uVar8 + 2) < (int)uVar4)) && + ((*(undefined2 *)((long)param_3 + uVar17 + 4) = + *(undefined2 *)((long)param_2 + uVar17 + 4), (int)(uVar8 + 3) < (int)uVar4 && + (((*(undefined2 *)((long)param_3 + uVar17 + 6) = + *(undefined2 *)((long)param_2 + uVar17 + 6), (int)(uVar8 + 4) < (int)uVar4 && + (*(undefined2 *)((long)param_3 + uVar17 + 8) = + *(undefined2 *)((long)param_2 + uVar17 + 8), (int)(uVar8 + 5) < (int)uVar4)) && + (*(undefined2 *)((long)param_3 + uVar17 + 10) = + *(undefined2 *)((long)param_2 + uVar17 + 10), (int)(uVar8 + 6) < (int)uVar4)))))) + { + *(undefined2 *)((long)param_3 + uVar17 + 0xc) = + *(undefined2 *)((long)param_2 + uVar17 + 0xc); + return; + } + } + } + } + else { + param_4 = param_4 * param_5; + if (0 < (int)param_5) { + uVar3 = param_5 * 2; + lVar18 = (long)(int)param_5; + iVar5 = param_4 + param_5 * -2; + puVar7 = param_3 + (ulong)(param_5 - 1) + 1; + uVar17 = -(ulong)((param_5 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + do { + if (iVar5 < 0) { + iVar12 = 0; + } + else { + iVar12 = 0; + puVar13 = param_2; + puVar9 = param_3; + do { + uVar6 = puVar13[lVar18]; + uVar8 = uVar3; + if ((int)uVar3 < (int)uVar4) { + puVar11 = (ushort *)((long)puVar13 + uVar17); + do { + uVar2 = *puVar11; + uVar8 = uVar8 + param_5; + puVar11 = puVar11 + lVar18; + if (uVar6 <= uVar2) { + uVar2 = uVar6; + } + uVar6 = uVar2; + } while ((int)uVar8 < (int)uVar4); + } + iVar12 = iVar12 + uVar3; + uVar2 = *puVar13; + if (uVar6 <= *puVar13) { + uVar2 = uVar6; + } + *puVar9 = uVar2; + uVar2 = puVar13[(int)uVar8]; + if (uVar6 < puVar13[(int)uVar8]) { + uVar2 = uVar6; + } + puVar9[lVar18] = uVar2; + puVar9 = (ushort *)((long)puVar9 + uVar17); + puVar13 = (ushort *)((long)puVar13 + uVar17); + } while (iVar12 <= iVar5); + } + if (iVar12 < param_4) { + lVar15 = (long)iVar12; + lVar14 = 0; + lVar16 = lVar15 * 2; + do { + uVar6 = *(ushort *)((long)param_2 + lVar14 + lVar16); + if ((int)param_5 < (int)uVar4) { + puVar9 = (ushort *)((long)param_2 + lVar14 + (lVar18 + lVar15) * 2); + uVar8 = param_5; + do { + uVar2 = *puVar9; + uVar8 = uVar8 + param_5; + puVar9 = puVar9 + lVar18; + if (uVar6 <= uVar2) { + uVar2 = uVar6; + } + uVar6 = uVar2; + } while ((int)uVar8 < (int)uVar4); + } + iVar12 = iVar12 + param_5; + *(ushort *)((long)param_3 + lVar14 + lVar16) = uVar6; + lVar14 = lVar14 + lVar18 * 2; + } while (iVar12 < param_4); + } + param_3 = param_3 + 1; + param_2 = param_2 + 1; + } while (param_3 != puVar7); + } + } + return; +} + + +================================================================== + +### FUNC 001e272c (444 bytes) name=FUN_001e272c + +void FUN_001e272c(ParallelLoopBody *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f4810; + if (*(long *)(param_1 + 0x110) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x110) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 0xd8)); + } + } + *(undefined8 *)(param_1 + 0x110) = 0; + *(undefined8 *)(param_1 + 0xe8) = 0; + *(undefined8 *)(param_1 + 0x100) = 0; + *(undefined8 *)(param_1 + 0xf8) = 0; + *(undefined8 *)(param_1 + 0xf0) = 0; + if (0 < *(int *)(param_1 + 0xdc)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0x118); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0xdc)); + } + if (*(ParallelLoopBody **)(param_1 + 0x120) != param_1 + 0x128) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0x120)); + } + if (*(long *)(param_1 + 0xa0) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0xa0) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 0x68)); + } + } + *(undefined8 *)(param_1 + 0xa0) = 0; + *(undefined8 *)(param_1 + 0x78) = 0; + *(undefined8 *)(param_1 + 0x90) = 0; + *(undefined8 *)(param_1 + 0x88) = 0; + *(undefined8 *)(param_1 + 0x80) = 0; + if (0 < *(int *)(param_1 + 0x6c)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0xa8); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0x6c)); + } + if (*(ParallelLoopBody **)(param_1 + 0xb0) != param_1 + 0xb8) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0xb0)); + } + if (*(long *)(param_1 + 0x40) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x40) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 8)); + } + } + *(undefined8 *)(param_1 + 0x40) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + if (0 < *(int *)(param_1 + 0xc)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0x48); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0xc)); + } + if (*(ParallelLoopBody **)(param_1 + 0x50) != param_1 + 0x58) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0x50)); + } + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 001e294c (452 bytes) name=FUN_001e294c + +void FUN_001e294c(ParallelLoopBody *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f4810; + if (*(long *)(param_1 + 0x110) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x110) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 0xd8)); + } + } + *(undefined8 *)(param_1 + 0x110) = 0; + *(undefined8 *)(param_1 + 0xe8) = 0; + *(undefined8 *)(param_1 + 0x100) = 0; + *(undefined8 *)(param_1 + 0xf8) = 0; + *(undefined8 *)(param_1 + 0xf0) = 0; + if (0 < *(int *)(param_1 + 0xdc)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0x118); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0xdc)); + } + if (*(ParallelLoopBody **)(param_1 + 0x120) != param_1 + 0x128) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0x120)); + } + if (*(long *)(param_1 + 0xa0) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0xa0) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 0x68)); + } + } + *(undefined8 *)(param_1 + 0xa0) = 0; + *(undefined8 *)(param_1 + 0x78) = 0; + *(undefined8 *)(param_1 + 0x90) = 0; + *(undefined8 *)(param_1 + 0x88) = 0; + *(undefined8 *)(param_1 + 0x80) = 0; + if (0 < *(int *)(param_1 + 0x6c)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0xa8); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0x6c)); + } + if (*(ParallelLoopBody **)(param_1 + 0xb0) != param_1 + 0xb8) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0xb0)); + } + if (*(long *)(param_1 + 0x40) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x40) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 8)); + } + } + *(undefined8 *)(param_1 + 0x40) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + if (0 < *(int *)(param_1 + 0xc)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0x48); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0xc)); + } + if (*(ParallelLoopBody **)(param_1 + 0x50) != param_1 + 0x58) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0x50)); + } + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001e2b74 (1560 bytes) name=FUN_001e2b74 + +undefined8 * FUN_001e2b74(undefined8 *param_1,uint param_2,uint param_3,int param_4,int param_5) + +{ + long *plVar1; + int *piVar2; + uint uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + char *pcVar11; + long *plVar12; + undefined8 *puVar13; + undefined8 *puVar14; + int iVar15; + undefined8 local_10; + undefined8 local_8; + + uVar3 = param_3 & 7; + if (param_5 < 0) { + param_5 = param_4 / 2; + } + if (param_2 < 2) { + if (param_2 == 0) { + if (uVar3 == 0) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &DAT_004f4840; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar13; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f4a20; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar5) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = (int)*plVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar5) { + *(int *)plVar1 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e2dc4; + } + if (uVar3 != 2) { + if (uVar3 == 3) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004f48a0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4a80; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e2ec4; + } + if (uVar3 == 5) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &DAT_004f48d0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4ab0; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e2ec4; + } + if (uVar3 == 6) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004f4900; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar13; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f4ae0; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar5) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = (int)*plVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar5) { + *(int *)plVar1 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e2dc4; + } + goto LAB_001e2c40; + } + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004f4870; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &DAT_004f4a50; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e2ec4; + } + } + else { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x27); + cVar4 = s_op____MORPH_ERODE____op____MORPH_0045bda0[0x26]; + uVar10 = s_op____MORPH_ERODE____op____MORPH_0045bda0._36_2_; + uVar9 = s_op____MORPH_ERODE____op____MORPH_0045bda0._24_8_; + uVar8 = s_op____MORPH_ERODE____op____MORPH_0045bda0._16_8_; + uVar7 = s_op____MORPH_ERODE____op____MORPH_0045bda0._8_8_; + uVar6 = s_op____MORPH_ERODE____op____MORPH_0045bda0._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s_op____MORPH_ERODE____op____MORPH_0045bda0._32_4_; + *(undefined2 *)(pcVar11 + 0x24) = uVar10; + pcVar11[0x26] = cVar4; + *(undefined8 *)pcVar11 = uVar6; + *(undefined8 *)(pcVar11 + 8) = uVar7; + *(undefined8 *)(pcVar11 + 0x10) = uVar8; + *(undefined8 *)(pcVar11 + 0x18) = uVar9; + cv::error(-0xd7,(String *)&local_10, + "cv::Ptr cv::getMorphologyRowFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x358); + cv::String::deallocate((String *)&local_10); + } + if (uVar3 == 0) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004f4930; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar13; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f4b10; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar5) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = (int)*plVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar5) { + *(int *)plVar1 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); +LAB_001e2dc4: + if (iVar15 != 1) { + return param_1; + } + (**(code **)(*plVar12 + 0x10))(); + return param_1; + } + if (uVar3 == 2) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004f4960; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4b40; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else if (uVar3 == 3) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004f4990; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4b70; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else if (uVar3 == 5) { + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &DAT_004f49c0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4ba0; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else { + if (uVar3 != 6) { +LAB_001e2c40: + cv::format("Unsupported data type (=%d)",(String *)&local_10,(ulong)param_3); + cv::error(-0xd5,(String *)&local_10, + "cv::Ptr cv::getMorphologyRowFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x37e); + cv::String::deallocate((String *)&local_10); + *param_1 = 0; + param_1[1] = 0; + return param_1; + } + puVar13 = operator_new(0x18); + FUN_001c8ce4(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &DAT_004f49f0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar2 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4bd0; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar15 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } +LAB_001e2ec4: + if (iVar15 == 1) { + FUN_001e0734(); + } + return param_1; +} + + +================================================================== + +### FUNC 001e31ec (1552 bytes) name=FUN_001e31ec + +undefined8 * FUN_001e31ec(undefined8 *param_1,uint param_2,uint param_3,int param_4,int param_5) + +{ + int *piVar1; + long *plVar2; + uint uVar3; + char cVar4; + bool bVar5; + long lVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined2 uVar11; + char *pcVar12; + undefined8 *puVar13; + undefined8 *puVar14; + long *plVar15; + int iVar16; + undefined8 local_10; + undefined8 local_8; + + uVar3 = param_3 & 7; + if (param_5 < 0) { + param_5 = param_4 / 2; + } + if (param_2 < 2) { + if (param_2 == 0) { + if (uVar3 != 0) { + if (uVar3 == 2) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb2f0; + plVar15 = operator_new(0x20); + plVar15[2] = (long)puVar13; + *(undefined4 *)(plVar15 + 1) = 1; + *plVar15 = (long)&PTR_FUN_004f4c30; + plVar2 = plVar15 + 1; + *param_1 = plVar15; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)*plVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + lVar6 = *plVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar5) { + *(int *)plVar2 = (int)lVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((int)lVar6 != 1) { + return param_1; + } + (**(code **)(*plVar15 + 0x10))(); + return param_1; + } + if (uVar3 == 3) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb320; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4c60; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e3434; + } + if (uVar3 == 5) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb350; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &DAT_004f4c90; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e3434; + } + if (uVar3 == 6) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb380; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4cc0; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e3434; + } + goto LAB_001e32b8; + } + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb2c0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4c00; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + goto LAB_001e3434; + } + } + else { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x27); + cVar4 = s_op____MORPH_ERODE____op____MORPH_0045bda0[0x26]; + uVar11 = s_op____MORPH_ERODE____op____MORPH_0045bda0._36_2_; + uVar10 = s_op____MORPH_ERODE____op____MORPH_0045bda0._24_8_; + uVar9 = s_op____MORPH_ERODE____op____MORPH_0045bda0._16_8_; + uVar8 = s_op____MORPH_ERODE____op____MORPH_0045bda0._8_8_; + uVar7 = s_op____MORPH_ERODE____op____MORPH_0045bda0._0_8_; + *(undefined4 *)(pcVar12 + 0x20) = s_op____MORPH_ERODE____op____MORPH_0045bda0._32_4_; + *(undefined2 *)(pcVar12 + 0x24) = uVar11; + pcVar12[0x26] = cVar4; + *(undefined8 *)pcVar12 = uVar7; + *(undefined8 *)(pcVar12 + 8) = uVar8; + *(undefined8 *)(pcVar12 + 0x10) = uVar9; + *(undefined8 *)(pcVar12 + 0x18) = uVar10; + cv::error(-0xd7,(String *)&local_10, + "cv::Ptr cv::getMorphologyColumnFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x387); + cv::String::deallocate((String *)&local_10); + } + if (uVar3 == 0) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb3b0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4cf0; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else if (uVar3 == 2) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &DAT_004fb3e0; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4d20; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else if (uVar3 == 3) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb410; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4d50; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else if (uVar3 == 5) { + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb440; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4d80; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + else { + if (uVar3 != 6) { +LAB_001e32b8: + cv::format("Unsupported data type (=%d)",(String *)&local_10,(ulong)param_3); + cv::error(-0xd5,(String *)&local_10, + "cv::Ptr cv::getMorphologyColumnFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x3ad); + cv::String::deallocate((String *)&local_10); + *param_1 = 0; + param_1[1] = 0; + return param_1; + } + puVar13 = operator_new(0x18); + FUN_001c8d08(); + *(int *)(puVar13 + 1) = param_4; + *(int *)((long)puVar13 + 0xc) = param_5; + *puVar13 = &PTR_FUN_004fb470; + puVar14 = operator_new(0x20); + puVar14[2] = puVar13; + *(undefined4 *)(puVar14 + 1) = 1; + piVar1 = (int *)(puVar14 + 1); + *puVar14 = &PTR_FUN_004f4db0; + *param_1 = puVar14; + param_1[1] = puVar13; + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + do { + iVar16 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar16 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } +LAB_001e3434: + if (iVar16 == 1) { + FUN_001e0734(); + } + return param_1; +} + + +================================================================== + +### FUNC 001e3860 (1008 bytes) name=getStructuringElement + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::getStructuringElement(int, cv::Size_, cv::Point_) */ + +Mat * __thiscall cv::getStructuringElement(Mat *param_1,uint param_2,int *param_3,int *param_4) + +{ + void *__s; + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + char *pcVar11; + undefined1 *puVar12; + long lVar13; + long lVar14; + int iVar15; + int iVar16; + int iVar17; + long lVar18; + int iVar19; + long lVar20; + int iVar21; + double dVar22; + double __x; + double dVar23; + int local_10 [2]; + undefined8 local_8; + + if (2 < param_2) { + local_10[0] = 0; + local_10[1] = 0; + local_8 = 0; + pcVar11 = (char *)String::allocate((String *)local_10,0x45); + uVar10 = s_shape____MORPH_RECT____shape____M_0045be30._64_4_; + uVar9 = s_shape____MORPH_RECT____shape____M_0045be30._56_8_; + uVar8 = s_shape____MORPH_RECT____shape____M_0045be30._48_8_; + uVar7 = s_shape____MORPH_RECT____shape____M_0045be30._40_8_; + uVar6 = s_shape____MORPH_RECT____shape____M_0045be30._32_8_; + uVar5 = s_shape____MORPH_RECT____shape____M_0045be30._24_8_; + uVar4 = s_shape____MORPH_RECT____shape____M_0045be30._16_8_; + uVar3 = s_shape____MORPH_RECT____shape____M_0045be30._8_8_; + uVar2 = s_shape____MORPH_RECT____shape____M_0045be30._0_8_; + pcVar11[0x44] = s_shape____MORPH_RECT____shape____M_0045be30[0x44]; + *(undefined4 *)(pcVar11 + 0x40) = uVar10; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + *(undefined8 *)(pcVar11 + 0x10) = uVar4; + *(undefined8 *)(pcVar11 + 0x18) = uVar5; + *(undefined8 *)(pcVar11 + 0x20) = uVar6; + *(undefined8 *)(pcVar11 + 0x28) = uVar7; + *(undefined8 *)(pcVar11 + 0x30) = uVar8; + *(undefined8 *)(pcVar11 + 0x38) = uVar9; + error(-0xd7,(String *)local_10,"cv::Mat cv::getStructuringElement(int, cv::Size, cv::Point)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x40a); + String::deallocate((String *)local_10); + } + local_10[1] = *param_3; + local_10[0] = param_3[1]; + iVar17 = *param_4; + iVar16 = param_4[1]; + if (iVar17 == -1) { + iVar17 = local_10[1] / 2; + } + if (iVar16 == -1) { + iVar16 = local_10[0] / 2; + } + if ((((iVar17 < local_10[1]) && (-1 < iVar17)) && (-1 < iVar16)) && (iVar16 < local_10[0])) { + *param_4 = iVar17; + param_4[1] = iVar16; + } + else { + local_10[0] = 0; + local_10[1] = 0; + local_8 = 0; + pcVar11 = (char *)String::allocate((String *)local_10,0x34); + uVar7 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._40_8_; + uVar6 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._32_8_; + uVar5 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._24_8_; + uVar4 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._16_8_; + uVar3 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._8_8_; + uVar2 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._0_8_; + *(undefined4 *)(pcVar11 + 0x30) = s_anchor_inside_Rect_0__0__ksize_w_004435b0._48_4_; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + *(undefined8 *)(pcVar11 + 0x10) = uVar4; + *(undefined8 *)(pcVar11 + 0x18) = uVar5; + *(undefined8 *)(pcVar11 + 0x20) = uVar6; + *(undefined8 *)(pcVar11 + 0x28) = uVar7; + error(-0xd7,(String *)local_10,"cv::Point cv::normalizeAnchor(cv::Point, cv::Size)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filterengine.hpp",0x16b); + String::deallocate((String *)local_10); + local_10[1] = *param_3; + local_10[0] = param_3[1]; + *param_4 = iVar17; + param_4[1] = iVar16; + } + if ((local_10[1] == 1) && (local_10[0] == 1)) { + dVar23 = 0.0; + param_2 = 0; + iVar16 = 0; + iVar17 = 0; + } + else if (param_2 == 2) { + iVar16 = local_10[0] / 2; + iVar17 = local_10[1] / 2; + dVar23 = 0.0; + if (iVar16 != 0) { + dVar23 = 1.0 / ((double)iVar16 * (double)iVar16); + } + } + else { + iVar16 = 0; + dVar23 = 0.0; + iVar17 = 0; + } + *(undefined8 *)(param_1 + 0x10) = 0; + uVar3 = _UNK_001e3ca8; + uVar2 = _DAT_001e3ca0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 8) = uVar3; + *(undefined8 *)param_1 = uVar2; + *(undefined8 *)(param_1 + 0x38) = 0; + *(Mat **)(param_1 + 0x40) = param_1 + 8; + *(Mat **)(param_1 + 0x48) = param_1 + 0x50; + *(undefined8 *)(param_1 + 0x58) = 0; + *(undefined8 *)(param_1 + 0x50) = 0; + Mat::create(param_1,2,local_10,0); + if (0 < param_3[1]) { + lVar20 = 0; + do { + lVar14 = *(long *)(param_1 + 0x10); + lVar18 = **(long **)(param_1 + 0x48); + __s = (void *)(lVar14 + lVar20 * lVar18); + iVar19 = (int)lVar20; + if (param_2 == 0) { +LAB_001e3be0: + iVar21 = *param_3; +LAB_001e3a44: + iVar15 = 0; + } + else { + if (param_2 == 1) { + if (param_4[1] == iVar19) goto LAB_001e3be0; + iVar15 = *param_4; + iVar21 = iVar15 + 1; + } + else { + uVar1 = iVar19 - iVar16; + iVar21 = 0; + if (iVar16 < (int)((uVar1 ^ (int)uVar1 >> 0x1f) - ((int)uVar1 >> 0x1f))) + goto LAB_001e3a44; + __x = (double)(int)(iVar16 * iVar16 - uVar1 * uVar1) * dVar23; + dVar22 = SQRT(__x); + if (NAN(dVar22)) { + dVar22 = ::sqrt(__x); + } + lVar13 = lrint((double)iVar17 * dVar22); + iVar21 = iVar17 + (int)lVar13 + 1; + iVar15 = iVar17 - (int)lVar13; + if (iVar15 < 0) { + iVar15 = 0; + } + if (*param_3 < iVar21) { + iVar21 = *param_3; + } + } + if (iVar15 < 1) goto LAB_001e3a44; + memset(__s,0,(ulong)(iVar15 - 1) + 1); + } + if (iVar15 < iVar21) { + memset((void *)(lVar14 + lVar20 * lVar18 + (long)iVar15),1, + (ulong)(uint)((iVar21 + -1) - iVar15) + 1); + iVar15 = iVar21; + } + puVar12 = (undefined1 *)((long)__s + (long)iVar15); + if (iVar15 < *param_3) { + do { + *puVar12 = 0; + iVar15 = iVar15 + 1; + puVar12 = puVar12 + 1; + } while (iVar15 < *param_3); + } + lVar20 = lVar20 + 1; + } while (iVar19 + 1 < param_3[1]); + } + return param_1; +} + + +================================================================== + +### FUNC 001e3cb0 (4584 bytes) name=FUN_001e3cb0 + +/* WARNING: Removing unreachable block (ram,0x001e4208) */ +/* WARNING: Removing unreachable block (ram,0x001e420c) */ +/* WARNING: Removing unreachable block (ram,0x001e4214) */ +/* WARNING: Removing unreachable block (ram,0x001e421c) */ +/* WARNING: Removing unreachable block (ram,0x001e4e3c) */ +/* WARNING: Removing unreachable block (ram,0x001e4244) */ +/* WARNING: Removing unreachable block (ram,0x001e424c) */ +/* WARNING: Removing unreachable block (ram,0x001e4260) */ + +void FUN_001e3cb0(undefined4 param_1,_InputArray *param_2,_InputArray *param_3,_InputArray *param_4, + int *param_5,int param_6,undefined4 param_7,undefined8 *param_8) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + long lVar11; + char *pcVar12; + long lVar13; + undefined8 *puVar14; + undefined4 *puVar15; + int *piVar16; + Mat *pMVar17; + int iVar18; + int iVar19; + int iVar20; + undefined8 local_480; + undefined8 local_478; + uint local_470; + int iStack_46c; + int iStack_468; + int iStack_464; + long local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + undefined8 local_440; + long local_438; + int *local_430; + undefined8 *local_428; + undefined8 local_420; + undefined8 local_418; + uint local_410; + int iStack_40c; + undefined4 uStack_408; + undefined4 uStack_404; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + undefined8 local_3e0; + long local_3d8; + undefined4 *local_3d0; + undefined8 *local_3c8; + undefined8 local_3c0; + undefined8 local_3b8; + uint local_3b0; + int iStack_3ac; + undefined4 uStack_3a8; + undefined4 uStack_3a4; + undefined8 local_3a0; + undefined8 local_398; + undefined8 local_390; + undefined8 local_388; + undefined8 local_380; + long local_378; + undefined4 *local_370; + undefined8 *local_368; + undefined8 local_360; + undefined8 local_358; + undefined8 local_350; + undefined8 uStack_348; + undefined8 local_340; + undefined8 uStack_338; + undefined8 local_330; + undefined8 uStack_328; + undefined8 local_320; + long lStack_318; + undefined8 *local_310; + undefined8 *local_308; + undefined8 local_300; + undefined8 uStack_2f8; + undefined8 local_2f0; + undefined8 uStack_2e8; + undefined8 local_2e0; + undefined8 uStack_2d8; + undefined8 local_2d0; + undefined8 uStack_2c8; + undefined8 local_2c0; + long lStack_2b8; + undefined8 *local_2b0; + undefined8 *local_2a8; + undefined8 local_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 uStack_288; + long local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 uStack_268; + undefined8 local_260; + long lStack_258; + undefined8 *local_250; + undefined8 *local_248; + undefined8 local_240; + undefined8 uStack_238; + undefined8 local_230 [9]; + undefined1 *local_1e8; + undefined1 auStack_1e0 [16]; + int local_1d0; + int local_1cc; + undefined1 *local_188; + undefined1 auStack_180 [16]; + undefined8 local_170; + undefined8 local_168; + undefined4 local_160; + undefined4 local_15c; + undefined8 local_158; + undefined8 uStack_150; + undefined8 local_148; + undefined8 uStack_140; + undefined8 local_138; + long lStack_130; + undefined4 *local_128; + undefined8 *local_120; + undefined8 local_118; + undefined8 local_110; + undefined4 local_108; + int local_104; + undefined4 local_100; + undefined4 local_fc; + undefined8 local_f8; + undefined8 uStack_f0; + undefined8 local_e8; + undefined8 uStack_e0; + undefined8 local_d8; + long lStack_d0; + undefined4 *local_c8; + undefined8 *local_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined4 local_a8; + int local_a4; + undefined4 local_a0; + undefined4 local_98; + int local_94; + undefined4 local_90; + undefined4 local_8c; + long local_88; + undefined8 uStack_80; + undefined8 local_78; + undefined8 uStack_70; + undefined8 local_68; + long lStack_60; + undefined4 *local_58; + undefined8 *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 uStack_30; + undefined8 local_28; + undefined8 uStack_20; + undefined8 local_18; + undefined8 uStack_10; + + iVar10 = cv::_InputArray::kind(param_4); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_4 + 8); + local_430 = &iStack_468; + local_428 = &local_420; + local_470 = *(uint *)pMVar17; + iStack_46c = *(int *)(pMVar17 + 4); + iStack_468 = *(int *)(pMVar17 + 8); + iStack_464 = *(int *)(pMVar17 + 0xc); + local_460 = *(long *)(pMVar17 + 0x10); + local_458 = *(undefined8 *)(pMVar17 + 0x18); + local_450 = *(undefined8 *)(pMVar17 + 0x20); + local_448 = *(undefined8 *)(pMVar17 + 0x28); + local_440 = *(undefined8 *)(pMVar17 + 0x30); + local_438 = *(long *)(pMVar17 + 0x38); + local_418 = 0; + local_420 = 0; + if (local_438 != 0) { + piVar16 = (int *)(local_438 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_420 = **(undefined8 **)(pMVar17 + 0x48); + local_418 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + iStack_46c = 0; + cv::Mat::copySize((Mat *)&local_470,pMVar17); + } + } + else { + cv::_InputArray::getMat_((int)param_4); + } + if (local_460 == 0) { +LAB_001e4910: + iVar10 = *param_5; + iVar19 = 3; + iVar20 = 3; + iVar18 = param_5[1]; + if (iVar10 == -1) goto LAB_001e4928; +LAB_001e3d74: + if (iVar18 == -1) goto LAB_001e4938; +LAB_001e3d7c: + if (iVar10 < 0) goto LAB_001e4944; +LAB_001e3d80: + if (((iVar20 <= iVar10) || (iVar19 <= iVar18)) || (iVar18 < 0)) goto LAB_001e4944; + *param_5 = iVar10; + param_5[1] = iVar18; + } + else { + if (iStack_46c < 3) { + lVar13 = (long)iStack_464 * (long)iStack_468; + } + else { + lVar11 = 0; + lVar13 = 1; + do { + piVar16 = local_430 + lVar11; + lVar11 = lVar11 + 1; + lVar13 = lVar13 * *piVar16; + } while ((int)lVar11 < iStack_46c); + } + if (lVar13 == 0) goto LAB_001e4910; + iVar10 = *param_5; + iVar18 = param_5[1]; + iVar20 = local_430[1]; + iVar19 = *local_430; + if (iVar10 != -1) goto LAB_001e3d74; +LAB_001e4928: + iVar10 = iVar20 / 2; + if (iVar18 != -1) goto LAB_001e3d7c; +LAB_001e4938: + iVar18 = iVar19 / 2; + if (-1 < iVar10) goto LAB_001e3d80; +LAB_001e4944: + local_480 = 0; + local_478 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_480,0x34); + uVar9 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._40_8_; + uVar8 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._32_8_; + uVar7 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._24_8_; + uVar6 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._16_8_; + uVar5 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._8_8_; + uVar3 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._0_8_; + *(undefined4 *)(pcVar12 + 0x30) = s_anchor_inside_Rect_0__0__ksize_w_004435b0._48_4_; + *(undefined8 *)pcVar12 = uVar3; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + *(undefined8 *)(pcVar12 + 0x20) = uVar8; + *(undefined8 *)(pcVar12 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_480,"cv::Point cv::normalizeAnchor(cv::Point, cv::Size)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filterengine.hpp",0x16b); + cv::String::deallocate((String *)&local_480); + *param_5 = iVar10; + param_5[1] = iVar18; + } + if ((param_6 == 0) || (iStack_468 * iStack_464 == 1)) { + cv::_InputArray::copyTo(param_2,(_OutputArray *)param_3); + if (local_438 != 0) { + piVar16 = (int *)(local_438 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_470); + } + } + if (0 < iStack_46c) { + iVar10 = 0; + piVar16 = local_430; + do { + *piVar16 = 0; + iVar10 = iVar10 + 1; + piVar16 = piVar16 + 1; + } while (iVar10 < iStack_46c); + } + goto LAB_001e48c0; + } + if (local_460 == 0) { +LAB_001e4ae4: + local_1d0 = param_6 * 2 + 1; + local_170 = (undefined **)0xffffffffffffffff; + local_1cc = local_1d0; + cv::getStructuringElement((cv *)local_230,0,&local_1d0,&local_170); + cv::Mat::operator=((Mat *)&local_470,(Mat *)local_230); + cv::Mat::release((Mat *)local_230); + if (local_1e8 != auStack_1e0) { + cv::fastFree(local_1e8); + } + *param_5 = param_6; + param_5[1] = param_6; + param_6 = 1; + } + else { + if (iStack_46c < 3) { + lVar11 = (long)iStack_464 * (long)iStack_468; + } + else { + lVar13 = 0; + lVar11 = 1; + do { + piVar16 = local_430 + lVar13; + lVar13 = lVar13 + 1; + lVar11 = lVar11 * *piVar16; + } while ((int)lVar13 < iStack_46c); + } + if (lVar11 == 0) goto LAB_001e4ae4; + if (1 < param_6) { + local_160 = 0; + local_15c = 0; + uVar4 = (ulong)local_170 >> 0x20; + local_170 = (undefined **)CONCAT44((int)uVar4,0x1010000); + local_168 = (Mat *)&local_470; + iVar10 = cv::countNonZero((_InputArray *)&local_170); + if (iVar10 == iStack_468 * iStack_464) { + local_170 = (undefined **) + CONCAT44((int)((ulong)*(undefined8 *)param_5 >> 0x20) * param_6, + (int)*(undefined8 *)param_5 * param_6); + *(undefined ***)param_5 = local_170; + local_230[0] = CONCAT44(iVar19 + (param_6 + -1) * (iVar19 + -1), + iVar20 + (param_6 + -1) * (iVar20 + -1)); + cv::getStructuringElement((cv *)&local_1d0,0,local_230,(_InputArray *)&local_170); + cv::Mat::operator=((Mat *)&local_470,(Mat *)&local_1d0); + cv::Mat::release((Mat *)&local_1d0); + if (local_188 != auStack_180) { + cv::fastFree(local_188); + } + param_6 = 1; + } + } + } + iVar10 = cv::_InputArray::kind(param_2); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_2 + 8); + local_3d0 = &uStack_408; + local_3c8 = &local_3c0; + local_410 = *(uint *)pMVar17; + iStack_40c = *(int *)(pMVar17 + 4); + uStack_408 = *(undefined4 *)(pMVar17 + 8); + uStack_404 = *(undefined4 *)(pMVar17 + 0xc); + local_400 = *(undefined8 *)(pMVar17 + 0x10); + local_3f8 = *(undefined8 *)(pMVar17 + 0x18); + local_3f0 = *(undefined8 *)(pMVar17 + 0x20); + local_3e8 = *(undefined8 *)(pMVar17 + 0x28); + local_3e0 = *(undefined8 *)(pMVar17 + 0x30); + local_3d8 = *(long *)(pMVar17 + 0x38); + local_3b8 = 0; + local_3c0 = 0; + if (local_3d8 != 0) { + piVar16 = (int *)(local_3d8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_3c0 = **(undefined8 **)(pMVar17 + 0x48); + local_3b8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + iStack_40c = 0; + cv::Mat::copySize((Mat *)&local_410,pMVar17); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + local_170 = (undefined **)CONCAT44(*local_3d0,local_3d0[1]); + cv::_OutputArray::create + ((_OutputArray *)param_3,(ParallelLoopBody *)&local_170,local_410 & 0xfff,0xffffffff,0,0 + ); + iVar10 = cv::_InputArray::kind(param_3); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_3 + 8); + local_370 = &uStack_3a8; + local_368 = &local_360; + local_3b0 = *(uint *)pMVar17; + iStack_3ac = *(int *)(pMVar17 + 4); + uStack_3a8 = *(undefined4 *)(pMVar17 + 8); + uStack_3a4 = *(undefined4 *)(pMVar17 + 0xc); + local_3a0 = *(undefined8 *)(pMVar17 + 0x10); + local_398 = *(undefined8 *)(pMVar17 + 0x18); + local_390 = *(undefined8 *)(pMVar17 + 0x20); + local_388 = *(undefined8 *)(pMVar17 + 0x28); + local_380 = *(undefined8 *)(pMVar17 + 0x30); + local_378 = *(long *)(pMVar17 + 0x38); + local_358 = 0; + local_360 = 0; + if (local_378 != 0) { + piVar16 = (int *)(local_378 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_360 = **(undefined8 **)(pMVar17 + 0x48); + local_358 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + iStack_3ac = 0; + cv::Mat::copySize((Mat *)&local_3b0,pMVar17); + } + } + else { + cv::_InputArray::getMat_((int)param_3); + } + uStack_348 = CONCAT44(uStack_404,uStack_408); + local_350 = (Mat *)CONCAT44(iStack_40c,local_410); + local_308 = &local_300; + local_310 = &uStack_348; + uStack_2f8 = 0; + local_300 = 0; + local_1d0 = 0; + local_1cc = 1; + local_340 = local_400; + uStack_338 = local_3f8; + local_330 = local_3f0; + uStack_328 = local_3e8; + local_320 = local_3e0; + lStack_318 = local_3d8; + if (local_3d8 != 0) { + piVar16 = (int *)(local_3d8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_40c < 3) { + local_300 = *local_3c8; + uStack_2f8 = local_3c8[1]; + } + else { + local_350 = (Mat *)(ulong)local_410; + cv::Mat::copySize((Mat *)&local_350,(Mat *)&local_410); + } + uStack_2e8 = CONCAT44(uStack_3a4,uStack_3a8); + local_2f0 = CONCAT44(iStack_3ac,local_3b0); + local_2a8 = &local_2a0; + local_2b0 = &uStack_2e8; + uStack_298 = 0; + local_2a0 = 0; + local_2e0 = local_3a0; + uStack_2d8 = local_398; + local_2d0 = local_390; + uStack_2c8 = local_388; + local_2c0 = local_380; + lStack_2b8 = local_378; + if (local_378 != 0) { + piVar16 = (int *)(local_378 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_3ac < 3) { + local_2a0 = *local_368; + uStack_298 = local_368[1]; + } + else { + local_2f0 = (ulong)local_3b0; + cv::Mat::copySize((Mat *)&local_2f0,(Mat *)&local_3b0); + } + uStack_288 = CONCAT44(iStack_464,iStack_468); + local_290 = CONCAT44(iStack_46c,local_470); + local_248 = &local_240; + local_250 = &uStack_288; + uStack_238 = 0; + local_240 = 0; + local_280 = local_460; + uStack_278 = local_458; + local_270 = local_450; + uStack_268 = local_448; + local_260 = local_440; + lStack_258 = local_438; + if (local_438 != 0) { + piVar16 = (int *)(local_438 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_46c < 3) { + local_240 = *local_428; + uStack_238 = local_428[1]; + } + else { + local_290 = (ulong)local_470; + cv::Mat::copySize((Mat *)&local_290,(Mat *)&local_470); + } + local_160 = 0; + local_15c = 0; + local_128 = &local_160; + local_170 = &PTR_FUN_004f4810; + local_120 = &local_118; + local_c8 = &local_100; + local_108 = 0x42ff0000; + local_c0 = &local_b8; + local_50 = &local_48; + local_58 = &local_90; + local_138 = 0; + local_110 = 0; + local_118 = 0; + local_104 = 0; + local_98 = 0x42ff0000; + local_100 = 0; + local_fc = 0; + local_f8 = 0; + uStack_f0 = 0; + local_e8 = 0; + uStack_e0 = 0; + local_d8 = 0; + lStack_d0 = 0; + local_b0 = 0; + local_b8 = 0; + local_94 = 0; + uVar3 = *(undefined8 *)param_5; + local_90 = 0; + local_8c = 0; + local_88 = 0; + uStack_80 = 0; + local_78 = 0; + uStack_70 = 0; + local_68 = 0; + lStack_60 = 0; + local_40 = 0; + local_48 = 0; + local_38 = 0; + local_28 = *param_8; + uStack_20 = param_8[1]; + local_18 = param_8[2]; + uStack_10 = param_8[3]; + if (lStack_318 != 0) { + piVar16 = (int *)(lStack_318 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lStack_130 = 0; + local_158 = 0; + uStack_140 = 0; + local_148 = 0; + uStack_150 = 0; + if (local_350._4_4_ < 3) { + local_168 = local_350; + local_160 = (undefined4)uStack_348; + local_118 = *local_308; + local_15c = uStack_348._4_4_; + local_110 = local_308[1]; + } + else { + local_168 = (Mat *)((ulong)local_350 & 0xffffffff); + cv::Mat::copySize((Mat *)&local_168,(Mat *)&local_350); + } + uStack_150 = uStack_338; + local_158 = local_340; + uStack_140 = uStack_328; + local_148 = local_330; + lStack_130 = lStack_318; + local_138 = local_320; + if (lStack_2b8 != 0) { + piVar16 = (int *)(lStack_2b8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_d0 != 0) { + piVar16 = (int *)(lStack_d0 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_108); + } + } + lStack_d0 = 0; + local_f8 = 0; + uStack_e0 = 0; + local_e8 = 0; + uStack_f0 = 0; + if (local_104 < 1) { +LAB_001e4344: + local_108 = (undefined4)local_2f0; + if (2 < local_2f0._4_4_) goto LAB_001e4350; + local_104 = local_2f0._4_4_; + local_fc = uStack_2e8._4_4_; + local_100 = (undefined4)uStack_2e8; + *local_c0 = *local_2a8; + local_c0[1] = local_2a8[1]; + } + else { + iVar10 = 0; + puVar15 = local_c8; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < local_104); + if (local_104 < 3) goto LAB_001e4344; +LAB_001e4350: + local_108 = (undefined4)local_2f0; + cv::Mat::copySize((Mat *)&local_108,(Mat *)&local_2f0); + } + uStack_f0 = uStack_2d8; + local_f8 = local_2e0; + uStack_e0 = uStack_2c8; + local_e8 = local_2d0; + lStack_d0 = lStack_2b8; + local_d8 = local_2c0; + local_a8 = 1; + if (lStack_258 != 0) { + piVar16 = (int *)(lStack_258 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = *piVar16 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + local_a4 = param_6; + local_a0 = param_1; + if (lStack_60 != 0) { + piVar16 = (int *)(lStack_60 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_98); + } + } + lStack_60 = 0; + local_88 = 0; + uStack_70 = 0; + local_78 = 0; + uStack_80 = 0; + if (local_94 < 1) { +LAB_001e4428: + local_98 = (undefined4)local_290; + if (2 < local_290._4_4_) goto LAB_001e4434; + local_94 = local_290._4_4_; + local_90 = (undefined4)uStack_288; + local_8c = uStack_288._4_4_; + *local_50 = *local_248; + local_50[1] = local_248[1]; + } + else { + iVar10 = 0; + puVar15 = local_58; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < local_94); + if (local_94 < 3) goto LAB_001e4428; +LAB_001e4434: + local_98 = (undefined4)local_290; + cv::Mat::copySize((Mat *)&local_98,(Mat *)&local_290); + } + uStack_80 = uStack_278; + local_88 = local_280; + uStack_70 = uStack_268; + local_78 = local_270; + lStack_60 = lStack_258; + local_68 = local_260; + uStack_30 = CONCAT44(param_7,param_7); + local_38 = uVar3; + cv::parallel_for_((Range *)&local_1d0,(ParallelLoopBody *)&local_170,-1.0); + local_170 = &PTR_FUN_004f4810; + if (lStack_60 != 0) { + piVar16 = (int *)(lStack_60 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_98); + } + } + lStack_60 = 0; + local_88 = 0; + uStack_70 = 0; + local_78 = 0; + uStack_80 = 0; + if (0 < local_94) { + iVar10 = 0; + puVar15 = local_58; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < local_94); + } + if (local_50 != &local_48) { + cv::fastFree(local_50); + } + if (lStack_d0 != 0) { + piVar16 = (int *)(lStack_d0 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_108); + } + } + lStack_d0 = 0; + local_f8 = 0; + uStack_e0 = 0; + local_e8 = 0; + uStack_f0 = 0; + if (0 < local_104) { + iVar10 = 0; + puVar15 = local_c8; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < local_104); + } + if (local_c0 != &local_b8) { + cv::fastFree(local_c0); + } + if (lStack_130 != 0) { + piVar16 = (int *)(lStack_130 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_168); + } + } + lStack_130 = 0; + local_158 = 0; + uStack_140 = 0; + local_148 = 0; + uStack_150 = 0; + if (0 < local_168._4_4_) { + iVar10 = 0; + puVar15 = local_128; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < local_168._4_4_); + } + if (local_120 != &local_118) { + cv::fastFree(local_120); + } + cv::ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_170); + if (lStack_258 != 0) { + piVar16 = (int *)(lStack_258 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_290); + } + } + lStack_258 = 0; + local_280 = 0; + uStack_268 = 0; + local_270 = 0; + uStack_278 = 0; + if (0 < local_290._4_4_) { + iVar10 = 0; + puVar14 = local_250; + do { + *(undefined4 *)puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar10 < local_290._4_4_); + } + if (local_248 != &local_240) { + cv::fastFree(local_248); + } + if (lStack_2b8 != 0) { + piVar16 = (int *)(lStack_2b8 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_2f0); + } + } + lStack_2b8 = 0; + local_2e0 = 0; + uStack_2c8 = 0; + local_2d0 = 0; + uStack_2d8 = 0; + if (0 < local_2f0._4_4_) { + iVar10 = 0; + puVar14 = local_2b0; + do { + *(undefined4 *)puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar10 < local_2f0._4_4_); + } + if (local_2a8 != &local_2a0) { + cv::fastFree(local_2a8); + } + if (lStack_318 != 0) { + piVar16 = (int *)(lStack_318 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_350); + } + } + lStack_318 = 0; + local_340 = 0; + uStack_328 = 0; + local_330 = 0; + uStack_338 = 0; + if (0 < local_350._4_4_) { + iVar10 = 0; + puVar14 = local_310; + do { + *(undefined4 *)puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar10 < local_350._4_4_); + } + if (local_308 != &local_300) { + cv::fastFree(local_308); + } + if (local_378 != 0) { + piVar16 = (int *)(local_378 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_3b0); + } + } + local_378 = 0; + local_3a0 = 0; + local_388 = 0; + local_390 = 0; + local_398 = 0; + if (0 < iStack_3ac) { + iVar10 = 0; + puVar15 = local_370; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < iStack_3ac); + } + if (local_368 != &local_360) { + cv::fastFree(local_368); + } + if (local_3d8 != 0) { + piVar16 = (int *)(local_3d8 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_410); + } + } + local_3d8 = 0; + local_400 = 0; + local_3e8 = 0; + local_3f0 = 0; + local_3f8 = 0; + if (0 < iStack_40c) { + iVar10 = 0; + puVar15 = local_3d0; + do { + *puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = puVar15 + 1; + } while (iVar10 < iStack_40c); + } + if (local_3c8 != &local_3c0) { + cv::fastFree(local_3c8); + } + if (local_438 != 0) { + piVar16 = (int *)(local_438 + 0x14); + do { + iVar10 = *piVar16; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar2) { + *piVar16 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_470); + } + } + if (0 < iStack_46c) { + iVar10 = 0; + piVar16 = local_430; + do { + *piVar16 = 0; + iVar10 = iVar10 + 1; + piVar16 = piVar16 + 1; + } while (iVar10 < iStack_46c); + } +LAB_001e48c0: + local_438 = 0; + local_448 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (local_428 != &local_420) { + cv::fastFree(local_428); + } + return; +} + + +================================================================== + +### FUNC 001e5098 (84 bytes) name=erode + +/* cv::erode(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray const&, + cv::Point_, int, int, cv::Scalar_ const&) */ + +void cv::erode(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4, + undefined4 param_5,undefined4 param_6,undefined8 param_7) + +{ + undefined8 local_8; + + local_8 = *param_4; + FUN_001e3cb0(0,param_1,param_2,param_3,&local_8,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 001e50ec (84 bytes) name=dilate + +/* cv::dilate(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray const&, + cv::Point_, int, int, cv::Scalar_ const&) */ + +void cv::dilate(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4, + undefined4 param_5,undefined4 param_6,undefined8 param_7) + +{ + undefined8 local_8; + + local_8 = *param_4; + FUN_001e3cb0(1,param_1,param_2,param_3,&local_8,param_5,param_6,param_7); + return; +} + + +================================================================== + +### FUNC 001e5140 (440 bytes) name=~MatExpr + +/* cv::MatExpr::~MatExpr() */ + +void __thiscall cv::MatExpr::~MatExpr(MatExpr *this) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + if (*(long *)(this + 0x108) != 0) { + piVar1 = (int *)(*(long *)(this + 0x108) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)(this + 0xd0)); + } + } + *(undefined8 *)(this + 0x108) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + if (0 < *(int *)(this + 0xd4)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(this + 0x110); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(this + 0xd4)); + } + if (*(MatExpr **)(this + 0x118) != this + 0x120) { + fastFree(*(MatExpr **)(this + 0x118)); + } + if (*(long *)(this + 0xa8) != 0) { + piVar1 = (int *)(*(long *)(this + 0xa8) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)(this + 0x70)); + } + } + *(undefined8 *)(this + 0xa8) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x88) = 0; + if (0 < *(int *)(this + 0x74)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(this + 0xb0); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(this + 0x74)); + } + if (*(MatExpr **)(this + 0xb8) != this + 0xc0) { + fastFree(*(MatExpr **)(this + 0xb8)); + } + if (*(long *)(this + 0x48) != 0) { + piVar1 = (int *)(*(long *)(this + 0x48) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)(this + 0x10)); + } + } + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x28) = 0; + if (0 < *(int *)(this + 0x14)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(this + 0x50); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(this + 0x14)); + } + if (*(MatExpr **)(this + 0x58) != this + 0x60) { + fastFree(*(MatExpr **)(this + 0x58)); + return; + } + return; +} + + +================================================================== + +### FUNC 001e5350 (3796 bytes) name=morphologyEx + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::morphologyEx(cv::_InputArray const&, cv::_OutputArray const&, int, cv::_InputArray const&, + cv::Point_, int, int, cv::Scalar_ const&) */ + +void cv::morphologyEx(_InputArray *param_1,_InputArray *param_2,undefined4 param_3, + _InputArray *param_4,undefined4 *param_5,undefined4 param_6,undefined4 param_7, + undefined8 param_8) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + undefined1 uVar7; + int iVar8; + undefined8 *puVar9; + _InputArray *p_Var10; + undefined4 *puVar11; + int *piVar12; + Mat *pMVar13; + MatExpr *this; + MatExpr *pMVar14; + long lVar15; + long lVar16; + undefined8 local_4f8; + undefined8 local_4f0; + undefined4 local_4e8 [2]; + Mat *local_4e0; + undefined4 local_4d8; + undefined4 local_4d4; + undefined4 local_4d0 [2]; + Mat *local_4c8; + undefined4 local_4c0; + undefined4 local_4bc; + undefined4 local_4b8; + undefined4 local_4b4; + Mat *local_4b0; + undefined4 local_4a8; + undefined4 local_4a4; + undefined4 local_4a0; + int local_49c; + int local_498; + int local_494; + long local_490; + undefined8 uStack_488; + undefined8 local_480; + undefined8 uStack_478; + undefined8 local_470; + long lStack_468; + int *local_460; + undefined8 *local_458; + undefined8 local_450; + undefined8 local_448; + undefined4 local_440; + int local_43c; + undefined8 local_438; + long local_430; + undefined8 uStack_428; + undefined8 local_420; + undefined8 uStack_418; + undefined8 local_410; + long lStack_408; + undefined4 *local_400; + undefined8 *local_3f8; + undefined8 auStack_3f0 [2]; + uint local_3e0; + int local_3dc; + undefined4 local_3d8; + undefined4 local_3d4; + long local_3d0; + undefined8 local_3c8; + undefined8 local_3c0; + undefined8 local_3b8; + undefined8 local_3b0; + long local_3a8; + undefined4 *local_3a0; + undefined8 *local_398; + undefined8 local_390; + undefined8 local_388; + undefined8 uStack_380; + undefined8 local_378; + undefined8 local_370; + undefined8 local_368; + undefined8 local_360; + undefined8 local_358; + undefined8 local_350; + long local_348; + undefined8 *local_340; + undefined8 *local_338; + undefined8 local_330; + undefined8 local_328; + undefined4 local_320; + int local_31c; + undefined4 local_318; + undefined4 local_314; + long local_310; + undefined8 local_308; + undefined8 local_300; + undefined8 local_2f8; + undefined8 local_2f0; + long local_2e8; + undefined4 *local_2e0; + undefined8 *local_2d8; + undefined8 local_2d0; + undefined8 local_2c8; + undefined4 local_2c0; + undefined4 uStack_2bc; + Mat *local_2b8; + undefined4 local_2b0; + undefined4 local_2ac; + undefined4 local_160; + undefined4 uStack_15c; + Mat *local_158; + undefined4 local_150; + undefined4 local_14c; + + iVar8 = _InputArray::kind(param_4); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_4 + 8); + local_460 = &local_498; + local_458 = &local_450; + local_4a0 = *(undefined4 *)pMVar13; + local_49c = *(int *)(pMVar13 + 4); + local_498 = *(int *)(pMVar13 + 8); + local_494 = *(int *)(pMVar13 + 0xc); + local_490 = *(long *)(pMVar13 + 0x10); + uStack_488 = *(undefined8 *)(pMVar13 + 0x18); + local_480 = *(undefined8 *)(pMVar13 + 0x20); + uStack_478 = *(undefined8 *)(pMVar13 + 0x28); + local_470 = *(undefined8 *)(pMVar13 + 0x30); + lStack_468 = *(long *)(pMVar13 + 0x38); + local_448 = 0; + local_450 = 0; + if (lStack_468 != 0) { + piVar12 = (int *)(lStack_468 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_450 = **(undefined8 **)(pMVar13 + 0x48); + local_448 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_49c = 0; + Mat::copySize((Mat *)&local_4a0,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_4); + } + if (local_490 != 0) { + if (local_49c < 3) { + lVar16 = (long)local_494 * (long)local_498; + } + else { + lVar15 = 0; + lVar16 = 1; + do { + piVar12 = local_460 + lVar15; + lVar15 = lVar15 + 1; + lVar16 = lVar16 * *piVar12; + } while ((int)lVar15 < local_49c); + } + if (lVar16 != 0) goto LAB_001e53f8; + } + local_2c0 = 3; + uStack_2bc = 3; + local_160 = 1; + uStack_15c = 1; + getStructuringElement((cv *)&local_440,0,&local_2c0,&local_160); + if (lStack_408 != 0) { + piVar12 = (int *)(lStack_408 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_468 == 0) { +LAB_001e57b8: + if (local_49c < 1) goto LAB_001e5804; +LAB_001e57d8: + iVar8 = 0; + piVar12 = local_460; + do { + *piVar12 = 0; + iVar8 = iVar8 + 1; + piVar12 = piVar12 + 1; + } while (iVar8 < local_49c); + if (local_49c < 3) goto LAB_001e5804; +LAB_001e5810: + lStack_468 = 0; + uStack_478 = 0; + local_480 = 0; + uStack_488 = 0; + local_490 = 0; + local_4a0 = local_440; + Mat::copySize((Mat *)&local_4a0,(Mat *)&local_440); + } + else { + piVar12 = (int *)(lStack_468 + 0x14); + do { + iVar8 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 != 1) goto LAB_001e57b8; + Mat::deallocate((Mat *)&local_4a0); + if (0 < local_49c) goto LAB_001e57d8; +LAB_001e5804: + puVar9 = local_3f8; + local_4a0 = local_440; + if (2 < local_43c) goto LAB_001e5810; + local_494 = local_438._4_4_; + local_498 = (int)local_438; + local_49c = local_43c; + *local_458 = *local_3f8; + local_458[1] = puVar9[1]; + } + uStack_478 = uStack_418; + local_480 = local_420; + lStack_468 = lStack_408; + local_470 = local_410; + uStack_488 = uStack_428; + local_490 = local_430; + if (lStack_408 != 0) { + piVar12 = (int *)(lStack_408 + 0x14); + do { + iVar8 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_440); + } + } + lStack_408 = 0; + local_430 = 0; + uStack_418 = 0; + local_420 = 0; + uStack_428 = 0; + if (0 < local_43c) { + iVar8 = 0; + do { + *local_400 = 0; + iVar8 = iVar8 + 1; + local_400 = local_400 + 1; + } while (iVar8 < local_43c); + } + if (local_3f8 != auStack_3f0) { + fastFree(local_3f8); + } +LAB_001e53f8: + iVar8 = _InputArray::kind(param_1); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_3a0 = &local_3d8; + local_398 = &local_390; + local_3e0 = *(uint *)pMVar13; + local_3dc = *(int *)(pMVar13 + 4); + local_3d8 = *(undefined4 *)(pMVar13 + 8); + local_3d4 = *(undefined4 *)(pMVar13 + 0xc); + local_3d0 = *(long *)(pMVar13 + 0x10); + local_3c8 = *(undefined8 *)(pMVar13 + 0x18); + local_3c0 = *(undefined8 *)(pMVar13 + 0x20); + local_3b8 = *(undefined8 *)(pMVar13 + 0x28); + local_3b0 = *(undefined8 *)(pMVar13 + 0x30); + local_3a8 = *(long *)(pMVar13 + 0x38); + local_388 = 0; + local_390 = 0; + if (local_3a8 != 0) { + piVar12 = (int *)(local_3a8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_390 = **(undefined8 **)(pMVar13 + 0x48); + local_388 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_3dc = 0; + Mat::copySize((Mat *)&local_3e0,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_1); + } + this = (MatExpr *)&local_160; + local_338 = &local_330; + local_340 = &local_378; + uStack_380 = DAT_001e6318; + local_370 = 0; + local_368 = 0; + local_360 = 0; + local_378 = 0; + local_358 = 0; + local_350 = 0; + local_348 = 0; + uStack_15c = *local_3a0; + local_160 = local_3a0[1]; + local_328 = 0; + local_330 = 0; + _OutputArray::create((_OutputArray *)param_2,this,local_3e0 & 0xfff,0xffffffff,0,0); + iVar8 = _InputArray::kind(param_2); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_2 + 8); + local_2e0 = &local_318; + local_2d8 = &local_2d0; + local_320 = *(undefined4 *)pMVar13; + local_31c = *(int *)(pMVar13 + 4); + local_318 = *(undefined4 *)(pMVar13 + 8); + local_314 = *(undefined4 *)(pMVar13 + 0xc); + local_310 = *(long *)(pMVar13 + 0x10); + local_308 = *(undefined8 *)(pMVar13 + 0x18); + local_300 = *(undefined8 *)(pMVar13 + 0x20); + local_2f8 = *(undefined8 *)(pMVar13 + 0x28); + local_2f0 = *(undefined8 *)(pMVar13 + 0x30); + local_2e8 = *(long *)(pMVar13 + 0x38); + local_2c8 = 0; + local_2d0 = 0; + if (local_2e8 != 0) { + piVar12 = (int *)(local_2e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_2d0 = **(undefined8 **)(pMVar13 + 0x48); + local_2c8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_31c = 0; + Mat::copySize((Mat *)&local_320,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_2); + } + switch(param_3) { + case 0: + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + erode(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + break; + case 1: + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + dilate(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + break; + case 2: + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + erode(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_320; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + dilate(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + break; + case 3: + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + dilate(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_320; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + erode(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + break; + case 4: + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&uStack_380; + local_158 = (Mat *)&local_4a0; + erode(&local_440,&local_2c0,this,(_InputArray *)&local_4b8,param_6,param_7,param_8); + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&local_320; + local_158 = (Mat *)&local_4a0; + dilate(&local_440,&local_2c0,this,(_InputArray *)&local_4b8,param_6,param_7,param_8); + local_4a8 = 0; + local_4b8 = 0x1010000; + local_4d0[0] = 0x1010000; + local_4a4 = 0; + local_4d8 = 0; + local_4d4 = 0; + local_4e8[0] = 0x2010000; + local_4c0 = 0; + local_4bc = 0; + local_4e0 = (Mat *)&local_320; + local_4c8 = (Mat *)&uStack_380; + local_4b0 = (Mat *)&local_320; + p_Var10 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_4b8,(_InputArray *)local_4d0,(_OutputArray *)local_4e8,p_Var10,-1 + ); + break; + case 5: + if (local_3d0 != local_310) { + Mat::operator=((Mat *)&uStack_380,(Mat *)&local_320); + } + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&uStack_380; + local_158 = (Mat *)&local_4a0; + erode(&local_440,(MatExpr *)&local_2c0,this,&local_4b8,param_6,param_7,param_8); + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&uStack_380; + local_2b8 = (Mat *)&uStack_380; + local_158 = (Mat *)&local_4a0; + dilate(&local_440,(MatExpr *)&local_2c0,this,&local_4b8,param_6,param_7,param_8); + operator-((cv *)&local_3e0,(Mat *)&uStack_380,(Mat *)this); + (**(code **)(*(long *)CONCAT44(uStack_2bc,local_2c0) + 0x18)) + ((long *)CONCAT44(uStack_2bc,local_2c0),(MatExpr *)&local_2c0,(Mat *)&local_320, + 0xffffffff); + MatExpr::~MatExpr((MatExpr *)&local_2c0); + break; + case 6: + if (local_3d0 != local_310) { + Mat::operator=((Mat *)&uStack_380,(Mat *)&local_320); + } + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + local_438 = (Mat *)&local_3e0; + local_2b8 = (Mat *)&uStack_380; + local_158 = (Mat *)&local_4a0; + dilate(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + local_4b8 = *param_5; + local_4b4 = param_5[1]; + local_430 = 0; + local_440 = 0x1010000; + local_2b0 = 0; + local_2ac = 0; + local_2c0 = 0x2010000; + local_150 = 0; + local_14c = 0; + local_160 = 0x1010000; + pMVar14 = this; + local_438 = (Mat *)&uStack_380; + local_2b8 = (Mat *)&uStack_380; + local_158 = (Mat *)&local_4a0; + erode(&local_440,&local_2c0,this,&local_4b8,param_6,param_7,param_8); + operator-((cv *)&uStack_380,(Mat *)&local_3e0,(Mat *)pMVar14); + (**(code **)(*(long *)CONCAT44(uStack_15c,local_160) + 0x18)) + ((long *)CONCAT44(uStack_15c,local_160),this,(Mat *)&local_320,0xffffffff); + MatExpr::~MatExpr(this); + break; + default: + local_4f8 = 0; + local_4f0 = 0; + puVar9 = (undefined8 *)String::allocate((String *)&local_4f8,0x1f); + uVar7 = DAT_0045be96; + uVar6 = DAT_0045be94; + uVar5 = DAT_0045be90; + uVar4 = DAT_0045be80; + uVar3 = DAT_0045be78; + puVar9[2] = _DAT_0045be88; + *(undefined4 *)(puVar9 + 3) = uVar5; + *(undefined2 *)((long)puVar9 + 0x1c) = uVar6; + *(undefined1 *)((long)puVar9 + 0x1e) = uVar7; + *puVar9 = uVar3; + puVar9[1] = uVar4; + error(-5,(String *)&local_4f8, + "void cv::morphologyEx(cv::InputArray, cv::OutputArray, int, cv::InputArray, cv::Point, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x759); + String::deallocate((String *)&local_4f8); + } + if (local_2e8 != 0) { + piVar12 = (int *)(local_2e8 + 0x14); + do { + iVar8 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_320); + } + } + local_2e8 = 0; + local_310 = 0; + local_2f8 = 0; + local_300 = 0; + local_308 = 0; + if (0 < local_31c) { + iVar8 = 0; + puVar11 = local_2e0; + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < local_31c); + } + if (local_2d8 != &local_2d0) { + fastFree(local_2d8); + } + if (local_348 != 0) { + piVar12 = (int *)(local_348 + 0x14); + do { + iVar8 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&uStack_380); + } + } + local_348 = 0; + local_370 = 0; + local_358 = 0; + local_360 = 0; + local_368 = 0; + if (0 < uStack_380._4_4_) { + iVar8 = 0; + puVar9 = local_340; + do { + *(undefined4 *)puVar9 = 0; + iVar8 = iVar8 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar8 < uStack_380._4_4_); + } + if (local_338 != &local_330) { + fastFree(local_338); + } + if (local_3a8 != 0) { + piVar12 = (int *)(local_3a8 + 0x14); + do { + iVar8 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_3e0); + } + } + local_3a8 = 0; + local_3d0 = 0; + local_3b8 = 0; + local_3c0 = 0; + local_3c8 = 0; + if (0 < local_3dc) { + iVar8 = 0; + puVar11 = local_3a0; + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < local_3dc); + } + if (local_398 != &local_390) { + fastFree(local_398); + } + if (lStack_468 != 0) { + piVar12 = (int *)(lStack_468 + 0x14); + do { + iVar8 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_4a0); + } + } + lStack_468 = 0; + local_490 = 0; + uStack_478 = 0; + local_480 = 0; + uStack_488 = 0; + if (0 < local_49c) { + iVar8 = 0; + piVar12 = local_460; + do { + *piVar12 = 0; + iVar8 = iVar8 + 1; + piVar12 = piVar12 + 1; + } while (iVar8 < local_49c); + } + if (local_458 != &local_450) { + fastFree(local_458); + } + return; +} + + +================================================================== + +### FUNC 001e6320 (1484 bytes) name=cvCreateStructuringElementEx + +int * cvCreateStructuringElementEx + (int param_1,int param_2,uint param_3,uint param_4,int param_5,int *param_6) + +{ + uint uVar1; + int iVar2; + int *piVar3; + long lVar4; + int iVar5; + uint uVar6; + uint uVar7; + char cVar8; + bool bVar9; + uint3 uVar10; + void *__dest; + int *piVar11; + int *piVar12; + uint *puVar13; + int iVar14; + ulong uVar15; + ulong *puVar16; + long lVar17; + int *piVar18; + uint uVar19; + uint uVar20; + byte *pbVar21; + undefined1 uVar22; + undefined1 uVar23; + undefined1 uVar24; + undefined8 uVar25; + undefined8 uVar26; + int local_70; + int local_6c; + uint local_68; + uint local_64; + undefined8 local_60; + undefined8 local_58; + uint *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if (((((param_1 < 1) || (param_2 < 1)) || + (((uint)((int)param_3 < param_1) & ~param_3 >> 0x1f & ~param_4 >> 0x1f) == 0)) || + (param_2 <= (int)param_4)) || ((param_5 == 100 && (param_6 == (int *)0x0)))) { + local_60 = 0; + local_58 = 0; + __dest = (void *)cv::String::allocate((String *)&local_60,0x6b); + memcpy(__dest,&DAT_0045be98,0x6b); + cv::error(-0xd7,(String *)&local_60, + "IplConvKernel* cvCreateStructuringElementEx(int, int, int, int, int, int*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x765); + cv::String::deallocate((String *)&local_60); + } + uVar7 = param_2 * param_1; + piVar11 = (int *)cv::cvAlloc((long)(int)(uVar7 * 4 + 0x40)); + *piVar11 = param_1; + piVar11[1] = param_2; + piVar11[2] = param_3; + piVar11[3] = param_4; + if (param_5 < 2) { + piVar11[6] = param_5; + *(int **)(piVar11 + 4) = piVar11 + 8; + } + else { + piVar3 = piVar11 + 8; + piVar11[6] = 100; + *(int **)(piVar11 + 4) = piVar3; + if (param_5 == 100) { + if ((int)uVar7 < 1) { + return piVar11; + } + if ((piVar3 < param_6 + 4 && param_6 < piVar11 + 0xc) || (uVar7 < 0xc)) { + lVar17 = 0; + do { + lVar4 = lVar17 + 4; + *(undefined4 *)((long)piVar11 + lVar17 + 0x20) = *(undefined4 *)((long)param_6 + lVar17); + lVar17 = lVar4; + } while (lVar4 != ((ulong)(uVar7 - 1) + 1) * 4); + return piVar11; + } + uVar20 = -((uint)((ulong)param_6 >> 2) & 3) & 3; + uVar6 = uVar7; + if (uVar20 < uVar7) { + uVar6 = uVar20; + } + uVar20 = uVar6; + if ((uVar6 != 0) && (piVar11[8] = *param_6, uVar6 != 1)) { + piVar11[9] = param_6[1]; + if (uVar6 == 3) { + piVar11[10] = param_6[2]; + } + else { + uVar20 = 2; + } + } + uVar1 = ((uVar7 - uVar6) - 4 >> 2) + 1; + uVar19 = 0; + iVar14 = uVar1 * 4; + piVar12 = param_6 + uVar6; + piVar18 = piVar11 + (ulong)uVar6 + 8; + do { + uVar25 = *(undefined8 *)piVar12; + uVar19 = uVar19 + 1; + *(undefined8 *)(piVar18 + 2) = *(undefined8 *)(piVar12 + 2); + *(undefined8 *)piVar18 = uVar25; + piVar12 = piVar12 + 4; + piVar18 = piVar18 + 4; + } while (uVar19 < uVar1); + uVar20 = uVar20 + iVar14; + if (uVar7 - uVar6 == iVar14) { + return piVar11; + } + uVar15 = -(ulong)(uVar20 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar20 << 2; + *(undefined4 *)((long)piVar3 + uVar15) = *(undefined4 *)((long)param_6 + uVar15); + if ((int)uVar7 <= (int)(uVar20 + 1)) { + return piVar11; + } + *(undefined4 *)((long)piVar3 + uVar15 + 4) = *(undefined4 *)((long)param_6 + uVar15 + 4); + if ((int)uVar7 <= (int)(uVar20 + 2)) { + return piVar11; + } + *(undefined4 *)((long)piVar3 + uVar15 + 8) = *(undefined4 *)((long)param_6 + uVar15 + 8); + return piVar11; + } + } + local_70 = param_1; + local_6c = param_2; + local_68 = param_3; + local_64 = param_4; + cv::getStructuringElement((cv *)&local_60,param_5,&local_70,&local_68); + if (0 < (int)uVar7) { + puVar13 = *(uint **)(piVar11 + 4); + if ((local_50 < puVar13 + (int)uVar7 && puVar13 < (uint *)((long)local_50 + (long)(int)uVar7)) + || (uVar7 < 0x15)) { + lVar17 = 0; + do { + puVar13[lVar17] = (uint)*(byte *)((long)local_50 + lVar17); + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar7); + } + else { + uVar20 = -((uint)((ulong)puVar13 >> 2) & 3) & 3; + uVar6 = uVar7; + if (uVar20 < uVar7) { + uVar6 = uVar20; + } + uVar20 = uVar6; + if ((uVar6 != 0) && (*puVar13 = (uint)(byte)*local_50, uVar6 != 1)) { + puVar13[1] = (uint)*(byte *)((long)local_50 + 1); + if (uVar6 == 3) { + puVar13[2] = (uint)*(byte *)((long)local_50 + 2); + } + else { + uVar20 = 2; + } + } + uVar19 = 0; + uVar1 = ((uVar7 - uVar6) - 0x10 >> 4) + 1; + iVar14 = uVar1 * 0x10; + puVar16 = (ulong *)(puVar13 + uVar6); + pbVar21 = (byte *)((long)local_50 + (ulong)uVar6); + do { + uVar26 = *(undefined8 *)(pbVar21 + 8); + uVar25 = *(undefined8 *)pbVar21; + uVar19 = uVar19 + 1; + uVar22 = (undefined1)((ulong)uVar25 >> 8); + uVar23 = (undefined1)((ulong)uVar25 >> 0x28); + uVar10 = CONCAT12((char)((ulong)uVar26 >> 8),(short)uVar26) & 0xff00ff; + uVar24 = (undefined1)((ulong)uVar26 >> 0x28); + puVar16[1] = (ulong)CONCAT14((char)((ulong)uVar25 >> 0x18), + (uint)(byte)((ulong)uVar25 >> 0x10)); + *puVar16 = (ulong)((uint6)CONCAT14(uVar22,(uint)CONCAT12(uVar22,(ushort)(byte)uVar25)) & + 0xffff0000ffff); + puVar16[3] = (ulong)CONCAT14((char)((ulong)uVar25 >> 0x38), + (uint)(byte)((ulong)uVar25 >> 0x30)); + puVar16[2] = (ulong)((uint6)CONCAT14(uVar23,(uint)CONCAT12(uVar23,(ushort)(byte)((ulong) + uVar25 >> 0x20))) & 0xffff0000ffff); + puVar16[5] = (ulong)CONCAT14((char)((ulong)uVar26 >> 0x18), + (uint)(byte)((ulong)uVar26 >> 0x10)); + puVar16[4] = (ulong)((uint6)CONCAT14((char)(uVar10 >> 0x10),(uint)uVar10) & 0xffff0000ffff); + puVar16[7] = (ulong)CONCAT14((char)((ulong)uVar26 >> 0x38), + (uint)(byte)((ulong)uVar26 >> 0x30)); + puVar16[6] = (ulong)((uint6)CONCAT14(uVar24,(uint)CONCAT12(uVar24,(ushort)(byte)((ulong) + uVar26 >> 0x20))) & 0xffff0000ffff); + puVar16 = puVar16 + 8; + pbVar21 = pbVar21 + 0x10; + } while (uVar19 < uVar1); + iVar5 = uVar20 + iVar14; + if (uVar7 - uVar6 != iVar14) { + iVar14 = iVar5 + 1; + puVar13[iVar5] = (uint)*(byte *)((long)local_50 + (long)iVar5); + if (uVar7 - iVar14 != 0 && iVar14 <= (int)uVar7) { + iVar2 = iVar5 + 2; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (uVar7 - iVar2 != 0 && iVar2 <= (int)uVar7) { + iVar14 = iVar5 + 3; + puVar13[iVar2] = (uint)*(byte *)((long)local_50 + (long)iVar2); + if (uVar7 - iVar14 != 0 && iVar14 <= (int)uVar7) { + iVar2 = iVar5 + 4; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (uVar7 - iVar2 != 0 && iVar2 <= (int)uVar7) { + iVar14 = iVar5 + 5; + puVar13[iVar2] = (uint)*(byte *)((long)local_50 + (long)iVar2); + if (uVar7 - iVar14 != 0 && iVar14 <= (int)uVar7) { + iVar2 = iVar5 + 6; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (uVar7 - iVar2 != 0 && iVar2 <= (int)uVar7) { + iVar14 = iVar5 + 7; + puVar13[iVar2] = (uint)*(byte *)((long)local_50 + (long)iVar2); + if (uVar7 - iVar14 != 0 && iVar14 <= (int)uVar7) { + iVar2 = iVar5 + 8; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (iVar2 < (int)uVar7) { + iVar14 = iVar5 + 9; + puVar13[iVar2] = (uint)*(byte *)((long)local_50 + (long)iVar2); + if (iVar14 < (int)uVar7) { + iVar2 = iVar5 + 10; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (iVar2 < (int)uVar7) { + iVar14 = iVar5 + 0xb; + puVar13[iVar2] = (uint)*(byte *)((long)local_50 + (long)iVar2); + if (iVar14 < (int)uVar7) { + iVar2 = iVar5 + 0xc; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (iVar2 < (int)uVar7) { + iVar14 = iVar5 + 0xd; + puVar13[iVar2] = (uint)*(byte *)((long)local_50 + (long)iVar2); + if (iVar14 < (int)uVar7) { + iVar5 = iVar5 + 0xe; + puVar13[iVar14] = (uint)*(byte *)((long)local_50 + (long)iVar14); + if (iVar5 < (int)uVar7) { + puVar13[iVar5] = (uint)*(byte *)((long)local_50 + (long)iVar5); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (local_28 != 0) { + piVar3 = (int *)(local_28 + 0x14); + do { + iVar14 = *piVar3; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar9) { + *piVar3 = iVar14 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + uVar25 = local_60; + goto joined_r0x001e6804; + } + } + uVar25 = local_60; +joined_r0x001e6804: + if (0 < local_60._4_4_) { + iVar14 = 0; + do { + *local_20 = 0; + iVar14 = iVar14 + 1; + local_60._4_4_ = (int)((ulong)uVar25 >> 0x20); + local_20 = local_20 + 1; + } while (iVar14 < local_60._4_4_); + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = (uint *)0x0; + if (local_18 == auStack_10) { + return piVar11; + } + local_60 = uVar25; + cv::fastFree(local_18); + return piVar11; +} + + +================================================================== + +### FUNC 001e6900 (140 bytes) name=cvReleaseStructuringElement + +void cvReleaseStructuringElement(undefined8 *param_1) + +{ + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 != (undefined8 *)0x0) { + cv::cvFree_((void *)*param_1); + *param_1 = 0; + return; + } + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvReleaseStructuringElement(IplConvKernel**)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x786); + cv::String::deallocate((String *)&local_10); + cv::cvFree_(pvRam0000000000000000); + pvRam0000000000000000 = (void *)0x0; + return; +} + + +================================================================== + +### FUNC 001e69a0 (1084 bytes) name=cvErode + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvErode(cv *param_1,cv *param_2,int *param_3,undefined4 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 *puVar11; + long lVar12; + int iVar13; + int local_190; + int local_18c; + undefined4 local_188 [2]; + Mat *local_180; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170 [2]; + Mat *local_168; + undefined4 local_160; + undefined4 local_15c; + int local_158; + int local_154; + Mat *local_150; + undefined4 local_148; + undefined4 local_144; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_18 = &local_10; + local_50 = 0; + local_48 = 0; + local_20 = &local_58; + local_60 = DAT_001e6e60; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_8 = 0; + local_10 = 0; + if (((local_e0[1] != local_80[1]) || (*local_e0 != *local_80)) || + (uVar4 = DAT_001e6e60, (local_120 & 0xfff) != (local_c0 & 0xfff))) { + local_140 = 0; + local_138 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_140,0x34); + uVar10 = DAT_0045bf30; + uVar9 = _LAB_0045bf28; + uVar8 = _DAT_0045bf20; + uVar7 = DAT_0045bf18; + uVar6 = DAT_0045bf10; + uVar5 = DAT_0045bf08; + *(undefined4 *)(puVar11 + 6) = DAT_0045bf38; + *puVar11 = uVar5; + puVar11[1] = uVar6; + puVar11[2] = uVar7; + puVar11[3] = uVar8; + puVar11[4] = uVar9; + puVar11[5] = uVar10; + cv::error(-0xd7,(String *)&local_140,"void cvErode(const CvArr*, CvArr*, IplConvKernel*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x7a0); + cv::String::deallocate((String *)&local_140); + uVar4 = local_60; + } + local_60 = uVar4; + if (param_3 == (int *)0x0) { + cv::Mat::release((Mat *)&local_60); + local_18c = 1; + local_190 = 1; + } + else { + local_60._4_4_ = (int)(uVar4 >> 0x20); + local_190 = param_3[2]; + local_18c = param_3[3]; + local_158 = param_3[1]; + iVar13 = *param_3; + if (((2 < local_60._4_4_) || (local_158 != (int)local_58)) || + ((local_58._4_4_ = (int)((ulong)local_58 >> 0x20), iVar13 != local_58._4_4_ || + (((uVar4 & 0xfff) != 0 || (local_50 == 0)))))) { + local_154 = iVar13; + cv::Mat::create((Mat *)&local_60,2,&local_158,0); + local_158 = param_3[1]; + iVar13 = *param_3; + } + if (0 < local_158 * iVar13) { + lVar12 = 0; + do { + *(bool *)(local_50 + lVar12) = *(int *)(*(long *)(param_3 + 4) + lVar12 * 4) != 0; + lVar12 = lVar12 + 1; + } while ((int)lVar12 < local_158 * iVar13); + } + } + local_138 = _UNK_001e6e78; + local_140 = _DAT_001e6e70; + local_160 = 0; + local_15c = 0; + local_170[0] = 0x2010000; + uStack_128 = _UNK_001e6e78; + local_130 = _DAT_001e6e70; + local_178 = 0; + local_174 = 0; + local_188[0] = 0x1010000; + local_148 = 0; + local_144 = 0; + local_158 = 0x1010000; + local_180 = (Mat *)&local_120; + local_168 = (Mat *)&local_c0; + local_150 = (Mat *)&local_60; + cv::erode(local_188,local_170,&local_158,&local_190,param_4,1,&local_140); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar13 = 0; + puVar11 = local_20; + do { + *(undefined4 *)puVar11 = 0; + iVar13 = iVar13 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar13 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 001e6e80 (1084 bytes) name=cvDilate + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvDilate(cv *param_1,cv *param_2,int *param_3,undefined4 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 *puVar11; + long lVar12; + int iVar13; + int local_190; + int local_18c; + undefined4 local_188 [2]; + Mat *local_180; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170 [2]; + Mat *local_168; + undefined4 local_160; + undefined4 local_15c; + int local_158; + int local_154; + Mat *local_150; + undefined4 local_148; + undefined4 local_144; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_18 = &local_10; + local_50 = 0; + local_48 = 0; + local_20 = &local_58; + local_60 = DAT_001e7340; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_8 = 0; + local_10 = 0; + if (((local_e0[1] != local_80[1]) || (*local_e0 != *local_80)) || + (uVar4 = DAT_001e7340, (local_120 & 0xfff) != (local_c0 & 0xfff))) { + local_140 = 0; + local_138 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_140,0x34); + uVar10 = DAT_0045bf30; + uVar9 = _LAB_0045bf28; + uVar8 = _DAT_0045bf20; + uVar7 = DAT_0045bf18; + uVar6 = DAT_0045bf10; + uVar5 = DAT_0045bf08; + *(undefined4 *)(puVar11 + 6) = DAT_0045bf38; + *puVar11 = uVar5; + puVar11[1] = uVar6; + puVar11[2] = uVar7; + puVar11[3] = uVar8; + puVar11[4] = uVar9; + puVar11[5] = uVar10; + cv::error(-0xd7,(String *)&local_140,"void cvDilate(const CvArr*, CvArr*, IplConvKernel*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x7ab); + cv::String::deallocate((String *)&local_140); + uVar4 = local_60; + } + local_60 = uVar4; + if (param_3 == (int *)0x0) { + cv::Mat::release((Mat *)&local_60); + local_18c = 1; + local_190 = 1; + } + else { + local_60._4_4_ = (int)(uVar4 >> 0x20); + local_190 = param_3[2]; + local_18c = param_3[3]; + local_158 = param_3[1]; + iVar13 = *param_3; + if (((2 < local_60._4_4_) || (local_158 != (int)local_58)) || + ((local_58._4_4_ = (int)((ulong)local_58 >> 0x20), iVar13 != local_58._4_4_ || + (((uVar4 & 0xfff) != 0 || (local_50 == 0)))))) { + local_154 = iVar13; + cv::Mat::create((Mat *)&local_60,2,&local_158,0); + local_158 = param_3[1]; + iVar13 = *param_3; + } + if (0 < local_158 * iVar13) { + lVar12 = 0; + do { + *(bool *)(local_50 + lVar12) = *(int *)(*(long *)(param_3 + 4) + lVar12 * 4) != 0; + lVar12 = lVar12 + 1; + } while ((int)lVar12 < local_158 * iVar13); + } + } + local_138 = _UNK_001e7358; + local_140 = _DAT_001e7350; + local_160 = 0; + local_15c = 0; + local_170[0] = 0x2010000; + uStack_128 = _UNK_001e7358; + local_130 = _DAT_001e7350; + local_178 = 0; + local_174 = 0; + local_188[0] = 0x1010000; + local_148 = 0; + local_144 = 0; + local_158 = 0x1010000; + local_180 = (Mat *)&local_120; + local_168 = (Mat *)&local_c0; + local_150 = (Mat *)&local_60; + cv::dilate(local_188,local_170,&local_158,&local_190,param_4,1,&local_140); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar13 = 0; + puVar11 = local_20; + do { + *(undefined4 *)puVar11 = 0; + iVar13 = iVar13 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar13 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 001e7360 (1172 bytes) name=cvMorphologyEx + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMorphologyEx(cv *param_1,cv *param_2,undefined8 param_3,int *param_4,undefined4 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + long lVar10; + int iVar11; + int iVar12; + ulong uVar13; + int *piVar14; + int iVar15; + int iVar16; + int *local_198; + int local_190; + int local_18c; + undefined4 local_188 [2]; + Mat *local_180; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170 [2]; + Mat *local_168; + undefined4 local_160; + undefined4 local_15c; + int local_158; + int local_154; + Mat *local_150; + undefined4 local_148; + undefined4 local_144; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar13 = (ulong)param_6 & 0xffffffff; + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_18 = &local_10; + local_50 = 0; + local_48 = 0; + local_20 = &local_58; + local_60 = DAT_001e7878; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_8 = 0; + local_10 = 0; + if (((local_e0[1] != local_80[1]) || (*local_e0 != *local_80)) || + ((local_120 & 0xfff) != (local_c0 & 0xfff))) { + local_140 = 0; + local_138 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_140,0x34); + uVar8 = DAT_0045bf30; + uVar7 = _LAB_0045bf28; + uVar6 = _DAT_0045bf20; + uVar5 = DAT_0045bf18; + uVar4 = DAT_0045bf10; + uVar3 = DAT_0045bf08; + *(undefined4 *)(puVar9 + 6) = DAT_0045bf38; + *puVar9 = uVar3; + puVar9[1] = uVar4; + puVar9[2] = uVar5; + puVar9[3] = uVar6; + puVar9[4] = uVar7; + puVar9[5] = uVar8; + cv::error(-0xd7,(String *)&local_140, + "void cvMorphologyEx(const void*, void*, void*, IplConvKernel*, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x7b7); + cv::String::deallocate((String *)&local_140); + } + local_198 = (int *)0x0; + piVar14 = param_4; + if ((param_4 == (int *)0x0) && + (local_198 = (int *)cvCreateStructuringElementEx(3,3,1,1,0,0), piVar14 = local_198, + local_198 == (int *)0x0)) { + cv::Mat::release((Mat *)&local_60); + iVar15 = 1; + iVar16 = 1; + } + else { + iVar16 = piVar14[2]; + iVar15 = piVar14[3]; + iVar11 = piVar14[1]; + iVar12 = *piVar14; + local_198 = piVar14; + if (((2 < local_60._4_4_) || (iVar11 != (int)local_58)) || + ((iVar12 != local_58._4_4_ || (((local_60 & 0xfff) != 0 || (local_50 == 0)))))) { + local_158 = iVar11; + local_154 = iVar12; + cv::Mat::create((Mat *)&local_60,2,&local_158,0); + iVar11 = piVar14[1]; + iVar12 = *piVar14; + } + if (0 < iVar11 * iVar12) { + lVar10 = 0; + do { + *(bool *)(local_50 + lVar10) = *(int *)(*(long *)(piVar14 + 4) + lVar10 * 4) != 0; + lVar10 = lVar10 + 1; + } while ((int)lVar10 < iVar11 * iVar12); + } + if (param_4 != (int *)0x0) goto LAB_001e7538; + } + cvReleaseStructuringElement(&local_198); +LAB_001e7538: + local_138 = _UNK_001e7888; + local_140 = _DAT_001e7880; + local_148 = 0; + local_144 = 0; + uStack_128 = _UNK_001e7888; + local_130 = _DAT_001e7880; + local_158 = 0x1010000; + local_178 = 0; + local_174 = 0; + local_188[0] = 0x1010000; + local_160 = 0; + local_15c = 0; + local_170[0] = 0x2010000; + local_190 = iVar16; + local_18c = iVar15; + local_180 = (Mat *)&local_120; + local_168 = (Mat *)&local_c0; + local_150 = (Mat *)&local_60; + cv::morphologyEx(local_188,local_170,param_5,&local_158,&local_190,uVar13,1); + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar16 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar16 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar16 = 0; + puVar9 = local_20; + do { + *(undefined4 *)puVar9 = 0; + iVar16 = iVar16 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar16 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar16 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar16 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar16 = 0; + do { + *local_80 = 0; + iVar16 = iVar16 + 1; + local_80 = local_80 + 1; + } while (iVar16 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar14 = (int *)(local_e8 + 0x14); + do { + iVar16 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar16 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar16 = 0; + do { + *local_e0 = 0; + iVar16 = iVar16 + 1; + local_e0 = local_e0 + 1; + } while (iVar16 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 001e7890 (700 bytes) name=FUN_001e7890 + +undefined8 * FUN_001e7890(undefined8 *param_1,uint *param_2,undefined4 *param_3) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + undefined8 *puVar8; + char *pcVar9; + undefined8 *puVar10; + undefined4 *puVar11; + ulong uVar12; + ulong uVar13; + void *__src; + long lVar14; + void *__dest_00; + size_t sVar15; + void *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar8 = operator_new(0x50); + FUN_001c8d2c(); + puVar11 = *(undefined4 **)(param_2 + 0x10); + *puVar8 = &PTR_FUN_004fb500; + puVar8[3] = 0; + puVar8[4] = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined4 *)((long)puVar8 + 0x14) = uVar3; + *(undefined4 *)(puVar8 + 2) = uVar2; + uVar2 = puVar11[1]; + *(undefined4 *)((long)puVar8 + 0xc) = *puVar11; + *(undefined4 *)(puVar8 + 1) = uVar2; + if ((*param_2 & 0xfff) != 0) { + local_18 = (void *)0x0; + local_10 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x17); + cVar7 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar6 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar5 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar4 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar9 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar9 + 0x14) = uVar6; + pcVar9[0x16] = cVar7; + *(undefined8 *)pcVar9 = uVar4; + *(undefined8 *)(pcVar9 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_18, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MinOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_18); + } + local_18 = (void *)0x0; + local_10 = 0; + local_8 = 0; + FUN_001d7cfc(param_2,puVar8 + 3,(String *)&local_18); + __src = (void *)puVar8[7]; + uVar12 = (long)(puVar8[4] - puVar8[3]) >> 3; + lVar14 = (long)__src - puVar8[6]; + uVar13 = lVar14 >> 3; + if (uVar12 <= uVar13) { + if (uVar12 < uVar13) { + puVar8[7] = puVar8[6] + (puVar8[4] - puVar8[3]); + } + goto LAB_001e79d8; + } + uVar12 = uVar12 - uVar13; + if (uVar12 == 0) goto LAB_001e79d8; + if (uVar12 <= (ulong)(puVar8[8] - (long)__src >> 3)) { + memset(__src,0,uVar12 * 8); + puVar8[7] = puVar8[7] + uVar12 * 8; + goto LAB_001e79d8; + } + if (0x1fffffffffffffff - uVar13 < uVar12) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar12; + if (uVar12 < uVar13) { + uVar1 = uVar13; + } + uVar1 = uVar1 + uVar13; + if ((uVar1 < uVar13) || (0x1fffffffffffffff < uVar1)) { + uVar13 = 0xfffffffffffffff8; +LAB_001e7b04: + __dest_00 = operator_new(uVar13); + } + else { + uVar13 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar13 = uVar1 * 8; + goto LAB_001e7b04; + } + } + memset((void *)((long)__dest_00 + lVar14),0,uVar12 * 8); + sVar15 = (long)__src - (long)puVar8[6]; + if ((long)sVar15 >> 3 != 0) { + memmove(__dest_00,(void *)puVar8[6],sVar15); + } + __dest = (void *)((long)__dest_00 + sVar15 + uVar12 * 8); + sVar15 = puVar8[7] - (long)__src; + if ((long)sVar15 >> 3 != 0) { + memmove(__dest,__src,sVar15); + } + if ((void *)puVar8[6] != (void *)0x0) { + operator_delete((void *)puVar8[6]); + } + puVar8[6] = __dest_00; + puVar8[7] = (long)__dest + sVar15; + puVar8[8] = (long)__dest_00 + uVar13; +LAB_001e79d8: + if (local_18 != (void *)0x0) { + operator_delete(local_18); + } + puVar10 = operator_new(0x20); + puVar10[2] = puVar8; + *(undefined4 *)(puVar10 + 1) = 1; + *puVar10 = &PTR_FUN_004f4e40; + *param_1 = puVar10; + param_1[1] = puVar8; + return param_1; +} + + +================================================================== + +### FUNC 001e7bb0 (700 bytes) name=FUN_001e7bb0 + +undefined8 * FUN_001e7bb0(undefined8 *param_1,uint *param_2,undefined4 *param_3) + +{ + ulong uVar1; + void *__dest; + undefined4 uVar2; + undefined4 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + undefined8 *puVar8; + char *pcVar9; + undefined8 *puVar10; + undefined4 *puVar11; + ulong uVar12; + ulong uVar13; + void *__src; + long lVar14; + void *__dest_00; + size_t sVar15; + void *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar2 = *param_3; + uVar3 = param_3[1]; + puVar8 = operator_new(0x50); + FUN_001c8d2c(); + puVar11 = *(undefined4 **)(param_2 + 0x10); + *puVar8 = &PTR_FUN_004fb5f0; + puVar8[3] = 0; + puVar8[4] = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined4 *)((long)puVar8 + 0x14) = uVar3; + *(undefined4 *)(puVar8 + 2) = uVar2; + uVar2 = puVar11[1]; + *(undefined4 *)((long)puVar8 + 0xc) = *puVar11; + *(undefined4 *)(puVar8 + 1) = uVar2; + if ((*param_2 & 0xfff) != 0) { + local_18 = (void *)0x0; + local_10 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x17); + cVar7 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar6 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar5 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar4 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar9 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar9 + 0x14) = uVar6; + pcVar9[0x16] = cVar7; + *(undefined8 *)pcVar9 = uVar4; + *(undefined8 *)(pcVar9 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_18, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MaxOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_18); + } + local_18 = (void *)0x0; + local_10 = 0; + local_8 = 0; + FUN_001d7cfc(param_2,puVar8 + 3,(String *)&local_18); + __src = (void *)puVar8[7]; + uVar12 = (long)(puVar8[4] - puVar8[3]) >> 3; + lVar14 = (long)__src - puVar8[6]; + uVar13 = lVar14 >> 3; + if (uVar12 <= uVar13) { + if (uVar12 < uVar13) { + puVar8[7] = puVar8[6] + (puVar8[4] - puVar8[3]); + } + goto LAB_001e7cf8; + } + uVar12 = uVar12 - uVar13; + if (uVar12 == 0) goto LAB_001e7cf8; + if (uVar12 <= (ulong)(puVar8[8] - (long)__src >> 3)) { + memset(__src,0,uVar12 * 8); + puVar8[7] = puVar8[7] + uVar12 * 8; + goto LAB_001e7cf8; + } + if (0x1fffffffffffffff - uVar13 < uVar12) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar12; + if (uVar12 < uVar13) { + uVar1 = uVar13; + } + uVar1 = uVar1 + uVar13; + if ((uVar1 < uVar13) || (0x1fffffffffffffff < uVar1)) { + uVar13 = 0xfffffffffffffff8; +LAB_001e7e24: + __dest_00 = operator_new(uVar13); + } + else { + uVar13 = 0; + __dest_00 = (void *)0x0; + if (uVar1 != 0) { + uVar13 = uVar1 * 8; + goto LAB_001e7e24; + } + } + memset((void *)((long)__dest_00 + lVar14),0,uVar12 * 8); + sVar15 = (long)__src - (long)puVar8[6]; + if ((long)sVar15 >> 3 != 0) { + memmove(__dest_00,(void *)puVar8[6],sVar15); + } + __dest = (void *)((long)__dest_00 + sVar15 + uVar12 * 8); + sVar15 = puVar8[7] - (long)__src; + if ((long)sVar15 >> 3 != 0) { + memmove(__dest,__src,sVar15); + } + if ((void *)puVar8[6] != (void *)0x0) { + operator_delete((void *)puVar8[6]); + } + puVar8[6] = __dest_00; + puVar8[7] = (long)__dest + sVar15; + puVar8[8] = (long)__dest_00 + uVar13; +LAB_001e7cf8: + if (local_18 != (void *)0x0) { + operator_delete(local_18); + } + puVar10 = operator_new(0x20); + puVar10[2] = puVar8; + *(undefined4 *)(puVar10 + 1) = 1; + *puVar10 = &PTR_FUN_004f4f30; + *param_1 = puVar10; + param_1[1] = puVar8; + return param_1; +} + + +================================================================== + +### FUNC 001e7ed0 (4928 bytes) name=FUN_001e7ed0 + +/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffa8 : 0x001e83e0 */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +long * FUN_001e7ed0(long *param_1,uint param_2,uint param_3,_InputArray *param_4,int *param_5) + +{ + ulong uVar1; + void *pvVar2; + int iVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined2 uVar14; + int iVar15; + char *pcVar16; + undefined8 *puVar17; + undefined8 *puVar18; + int *piVar19; + Mat *pMVar20; + ulong uVar21; + ulong uVar22; + int iVar23; + int iVar24; + uint uVar25; + void *pvVar26; + long lVar27; + size_t sVar28; + void *pvVar29; + long local_140; + long lStack_138; + long local_130; + long lStack_128; + undefined8 local_118; + undefined8 local_110; + String aSStack_108 [16]; + undefined8 local_f8; + undefined8 local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + void *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar15 = cv::_InputArray::kind(param_4); + if (iVar15 == 0x10000) { + pMVar20 = *(Mat **)(param_4 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar20; + local_5c = *(int *)(pMVar20 + 4); + iVar15 = *(int *)(pMVar20 + 8); + iVar5 = *(int *)(pMVar20 + 0xc); + local_50 = *(undefined8 *)(pMVar20 + 0x10); + local_48 = *(undefined8 *)(pMVar20 + 0x18); + local_40 = *(undefined8 *)(pMVar20 + 0x20); + local_38 = *(undefined8 *)(pMVar20 + 0x28); + local_30 = *(undefined8 *)(pMVar20 + 0x30); + local_28 = *(long *)(pMVar20 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar19 = (int *)(local_28 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (2 < *(int *)(pMVar20 + 4)) { + local_5c = 0; + local_58 = iVar15; + local_54 = iVar5; + cv::Mat::copySize((Mat *)&local_60,pMVar20); + goto LAB_001e7f28; + } + iVar24 = *param_5; + local_10 = **(undefined8 **)(pMVar20 + 0x48); + iVar23 = param_5[1]; + local_8 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + iVar3 = local_54; + iVar4 = local_58; + local_58 = iVar15; + local_54 = iVar5; + } + else { + cv::_InputArray::getMat_((int)param_4); +LAB_001e7f28: + iVar24 = *param_5; + iVar23 = param_5[1]; + iVar3 = local_20[1]; + iVar4 = *local_20; + } + if (iVar24 == -1) { + iVar24 = iVar3 / 2; + } + uVar25 = param_3 & 7; + if (iVar23 == -1) { + iVar23 = iVar4 / 2; + } + if ((((iVar24 < 0) || (iVar3 <= iVar24)) || (iVar23 < 0)) || (iVar4 <= iVar23)) { + local_f8 = 0; + local_f0 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_f8,0x34); + uVar13 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._40_8_; + uVar12 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._32_8_; + uVar11 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._24_8_; + uVar10 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._16_8_; + uVar9 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._8_8_; + uVar8 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._0_8_; + *(undefined4 *)(pcVar16 + 0x30) = s_anchor_inside_Rect_0__0__ksize_w_004435b0._48_4_; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + *(undefined8 *)(pcVar16 + 0x10) = uVar10; + *(undefined8 *)(pcVar16 + 0x18) = uVar11; + *(undefined8 *)(pcVar16 + 0x20) = uVar12; + *(undefined8 *)(pcVar16 + 0x28) = uVar13; + cv::error(-0xd7,(String *)&local_f8,"cv::Point cv::normalizeAnchor(cv::Point, cv::Size)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filterengine.hpp",0x16b); + cv::String::deallocate((String *)&local_f8); + } + *param_5 = iVar24; + param_5[1] = iVar23; + if (param_2 < 2) { + if (param_2 != 0) goto LAB_001e8058; + if (uVar25 != 0) { + if (uVar25 == 2) { + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb4d0; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar24; + *(int *)((long)puVar17 + 0x14) = iVar23; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_d8 = 0; + local_d0 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_d8,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_d8, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MinOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_d8); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + uVar22 = (long)(puVar17[4] - puVar17[3]) >> 3; + uVar21 = (long)(puVar17[7] - puVar17[6]) >> 3; + if (uVar21 < uVar22) { + std::vector>::_M_fill_insert + ((vector> *)(puVar17 + 6), + puVar17[7],uVar22 - uVar21); + } + else if (uVar22 < uVar21) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4e10; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + goto LAB_001e8574; + } + if (uVar25 == 3) { + FUN_001e7890(&local_140,(Mat *)&local_60,param_5); + param_1[1] = lStack_138; + *param_1 = local_140; + if (local_140 == 0) goto LAB_001e80c4; + piVar19 = (int *)(local_140 + 8); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (local_140 == 0) goto LAB_001e80c4; + piVar19 = (int *)(local_140 + 8); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + goto LAB_001e8574; + } + if (uVar25 == 5) { + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb530; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar24; + *(int *)((long)puVar17 + 0x14) = iVar23; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_c8 = 0; + local_c0 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_c8,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_c8, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MinOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_c8); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + uVar22 = (long)(puVar17[4] - puVar17[3]) >> 3; + uVar21 = (long)(puVar17[7] - puVar17[6]) >> 3; + if (uVar21 < uVar22) { + std::vector>::_M_fill_insert + ((vector> *)(puVar17 + 6), + puVar17[7],uVar22 - uVar21); + } + else if (uVar22 < uVar21) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4e70; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + goto LAB_001e8574; + } + if (uVar25 == 6) { + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb560; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar24; + *(int *)((long)puVar17 + 0x14) = iVar23; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_b8 = 0; + local_b0 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_b8,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_b8, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MinOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_b8); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + uVar22 = (long)(puVar17[4] - puVar17[3]) >> 3; + uVar21 = (long)(puVar17[7] - puVar17[6]) >> 3; + if (uVar21 < uVar22) { + std::vector>::_M_fill_insert + ((vector> *)(puVar17 + 6), + puVar17[7],uVar22 - uVar21); + } + else if (uVar22 < uVar21) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4ea0; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + goto LAB_001e8574; + } +LAB_001e807c: + cv::format("Unsupported data type (=%d)",aSStack_108,(ulong)param_3); + cv::error(-0xd5,aSStack_108, + "cv::Ptr cv::getMorphologyFilter(int, int, cv::InputArray, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x3d3); + cv::String::deallocate(aSStack_108); + *param_1 = 0; + param_1[1] = 0; + goto LAB_001e80c4; + } + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb4a0; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar24; + *(int *)((long)puVar17 + 0x14) = iVar23; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_e8 = 0; + local_e0 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_e8,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_e8, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MinOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_e8); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + pvVar26 = (void *)puVar17[7]; + uVar21 = (long)(puVar17[4] - puVar17[3]) >> 3; + lVar27 = (long)pvVar26 - puVar17[6]; + uVar22 = lVar27 >> 3; + if (uVar22 < uVar21) { + uVar21 = uVar21 - uVar22; + if (uVar21 != 0) { + if ((ulong)(puVar17[8] - (long)pvVar26 >> 3) < uVar21) { + if (0x1fffffffffffffff - uVar22 < uVar21) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar21; + if (uVar21 < uVar22) { + uVar1 = uVar22; + } + uVar1 = uVar1 + uVar22; + if ((uVar1 < uVar22) || (0x1fffffffffffffff < uVar1)) { + uVar22 = 0xfffffffffffffff8; +LAB_001e917c: + pvVar29 = operator_new(uVar22); + } + else { + uVar22 = 0; + pvVar29 = (void *)0x0; + if (uVar1 != 0) { + uVar22 = uVar1 * 8; + goto LAB_001e917c; + } + } + memset((void *)((long)pvVar29 + lVar27),0,uVar21 * 8); + sVar28 = (long)pvVar26 - (long)puVar17[6]; + if ((long)sVar28 >> 3 != 0) { + memmove(pvVar29,(void *)puVar17[6],sVar28); + } + pvVar2 = (void *)((long)pvVar29 + sVar28 + uVar21 * 8); + sVar28 = puVar17[7] - (long)pvVar26; + if ((long)sVar28 >> 3 != 0) { + memmove(pvVar2,pvVar26,sVar28); + } + if ((void *)puVar17[6] != (void *)0x0) { + operator_delete((void *)puVar17[6]); + } + puVar17[6] = pvVar29; + puVar17[7] = (long)pvVar2 + sVar28; + puVar17[8] = (long)pvVar29 + uVar22; + } + else { + memset(pvVar26,0,uVar21 * 8); + puVar17[7] = puVar17[7] + uVar21 * 8; + } + } + } + else if (uVar21 < uVar22) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4de0; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + else { + local_118 = 0; + local_110 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_118,0x27); + cVar6 = s_op____MORPH_ERODE____op____MORPH_0045bda0[0x26]; + uVar14 = s_op____MORPH_ERODE____op____MORPH_0045bda0._36_2_; + uVar11 = s_op____MORPH_ERODE____op____MORPH_0045bda0._24_8_; + uVar10 = s_op____MORPH_ERODE____op____MORPH_0045bda0._16_8_; + uVar9 = s_op____MORPH_ERODE____op____MORPH_0045bda0._8_8_; + uVar8 = s_op____MORPH_ERODE____op____MORPH_0045bda0._0_8_; + *(undefined4 *)(pcVar16 + 0x20) = s_op____MORPH_ERODE____op____MORPH_0045bda0._32_4_; + *(undefined2 *)(pcVar16 + 0x24) = uVar14; + pcVar16[0x26] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + *(undefined8 *)(pcVar16 + 0x10) = uVar10; + *(undefined8 *)(pcVar16 + 0x18) = uVar11; + cv::error(-0xd7,(String *)&local_118, + "cv::Ptr cv::getMorphologyFilter(int, int, cv::InputArray, cv::Point)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x3b7); + cv::String::deallocate((String *)&local_118); +LAB_001e8058: + if (uVar25 == 0) { + iVar15 = *param_5; + iVar5 = param_5[1]; + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb590; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar15; + *(int *)((long)puVar17 + 0x14) = iVar5; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_a8 = 0; + local_a0 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_a8,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_a8, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MaxOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_a8); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + pvVar26 = (void *)puVar17[7]; + uVar21 = (long)(puVar17[4] - puVar17[3]) >> 3; + lVar27 = (long)pvVar26 - puVar17[6]; + uVar22 = lVar27 >> 3; + if (uVar22 < uVar21) { + uVar21 = uVar21 - uVar22; + if (uVar21 != 0) { + if ((ulong)(puVar17[8] - (long)pvVar26 >> 3) < uVar21) { + if (0x1fffffffffffffff - uVar22 < uVar21) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar21; + if (uVar21 < uVar22) { + uVar1 = uVar22; + } + uVar1 = uVar1 + uVar22; + if ((uVar1 < uVar22) || (0x1fffffffffffffff < uVar1)) { + uVar22 = 0xfffffffffffffff8; +LAB_001e9190: + pvVar29 = operator_new(uVar22); + } + else { + uVar22 = 0; + pvVar29 = (void *)0x0; + if (uVar1 != 0) { + uVar22 = uVar1 * 8; + goto LAB_001e9190; + } + } + memset((void *)((long)pvVar29 + lVar27),0,uVar21 * 8); + sVar28 = (long)pvVar26 - (long)puVar17[6]; + if ((long)sVar28 >> 3 != 0) { + memmove(pvVar29,(void *)puVar17[6],sVar28); + } + pvVar2 = (void *)((long)pvVar29 + uVar21 * 8 + sVar28); + sVar28 = puVar17[7] - (long)pvVar26; + if ((long)sVar28 >> 3 != 0) { + memmove(pvVar2,pvVar26,sVar28); + } + if ((void *)puVar17[6] != (void *)0x0) { + operator_delete((void *)puVar17[6]); + } + puVar17[6] = pvVar29; + puVar17[7] = (long)pvVar2 + sVar28; + puVar17[8] = (long)pvVar29 + uVar22; + } + else { + memset(pvVar26,0,uVar21 * 8); + puVar17[7] = puVar17[7] + uVar21 * 8; + } + } + } + else if (uVar21 < uVar22) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4ed0; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + else if (uVar25 == 2) { + iVar15 = *param_5; + iVar5 = param_5[1]; + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb5c0; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar15; + *(int *)((long)puVar17 + 0x14) = iVar5; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_98 = 0; + local_90 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_98,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_98, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MaxOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_98); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + uVar22 = (long)(puVar17[4] - puVar17[3]) >> 3; + uVar21 = (long)(puVar17[7] - puVar17[6]) >> 3; + if (uVar21 < uVar22) { + std::vector>::_M_fill_insert + ((vector> *)(puVar17 + 6),puVar17[7] + ,uVar22 - uVar21); + } + else if (uVar22 < uVar21) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4f00; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + else if (uVar25 == 3) { + FUN_001e7bb0(&local_130,(Mat *)&local_60,param_5); + param_1[1] = lStack_128; + *param_1 = local_130; + if (local_130 == 0) goto LAB_001e80c4; + piVar19 = (int *)(local_130 + 8); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (local_130 == 0) goto LAB_001e80c4; + piVar19 = (int *)(local_130 + 8); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + else if (uVar25 == 5) { + iVar15 = *param_5; + iVar5 = param_5[1]; + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb620; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)(puVar17 + 2) = iVar15; + *(int *)((long)puVar17 + 0x14) = iVar5; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_88 = 0; + local_80 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_88,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_88, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MaxOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_88); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,&local_78); + uVar22 = (long)(puVar17[4] - puVar17[3]) >> 3; + uVar21 = (long)(puVar17[7] - puVar17[6]) >> 3; + if (uVar21 < uVar22) { + std::vector>::_M_fill_insert + ((vector> *)(puVar17 + 6),puVar17[7] + ,uVar22 - uVar21); + } + else if (uVar22 < uVar21) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4f60; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + else { + if (uVar25 != 6) goto LAB_001e807c; + iVar15 = *param_5; + iVar5 = param_5[1]; + puVar17 = operator_new(0x50); + FUN_001c8d2c(); + *puVar17 = &PTR_FUN_004fb650; + puVar17[3] = 0; + puVar17[4] = 0; + puVar17[5] = 0; + puVar17[6] = 0; + puVar17[7] = 0; + puVar17[8] = 0; + *(int *)((long)puVar17 + 0x14) = iVar5; + *(int *)(puVar17 + 2) = iVar15; + iVar15 = *local_20; + *(int *)(puVar17 + 1) = local_20[1]; + *(int *)((long)puVar17 + 0xc) = iVar15; + if ((local_60 & 0xfff) != 0) { + local_78 = (void *)0x0; + local_70 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_78,0x17); + cVar6 = s__kernel_type______CV_8U_0045bf40[0x16]; + uVar14 = s__kernel_type______CV_8U_0045bf40._20_2_; + uVar9 = s__kernel_type______CV_8U_0045bf40._8_8_; + uVar8 = s__kernel_type______CV_8U_0045bf40._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s__kernel_type______CV_8U_0045bf40._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar14; + pcVar16[0x16] = cVar6; + *(undefined8 *)pcVar16 = uVar8; + *(undefined8 *)(pcVar16 + 8) = uVar9; + cv::error(-0xd7,(String *)&local_78, + "cv::MorphFilter::MorphFilter(const cv::Mat&, cv::Point) [with Op = cv::MaxOp; VecOp = cv::MorphNoVec; cv::Point = cv::Point_]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x317); + cv::String::deallocate((String *)&local_78); + } + local_78 = (void *)0x0; + local_70 = 0; + local_68 = 0; + FUN_001d7cfc((Mat *)&local_60,puVar17 + 3,(String *)&local_78); + uVar22 = (long)(puVar17[4] - puVar17[3]) >> 3; + uVar21 = (long)(puVar17[7] - puVar17[6]) >> 3; + if (uVar21 < uVar22) { + std::vector>::_M_fill_insert + ((vector> *)(puVar17 + 6),puVar17[7] + ,uVar22 - uVar21); + } + else if (uVar22 < uVar21) { + puVar17[7] = puVar17[6] + (puVar17[4] - puVar17[3]); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + puVar18 = operator_new(0x20); + *(undefined4 *)(puVar18 + 1) = 1; + puVar18[2] = puVar17; + *puVar18 = &PTR_FUN_004f4f90; + piVar19 = (int *)(puVar18 + 1); + *param_1 = (long)puVar18; + param_1[1] = (long)puVar17; + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = *piVar19 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + } +LAB_001e8574: + if (iVar15 == 1) { + FUN_001e0734(); + } +LAB_001e80c4: + if (local_28 != 0) { + piVar19 = (int *)(local_28 + 0x14); + do { + iVar15 = *piVar19; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar7) { + *piVar19 = iVar15 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar15 = 0; + piVar19 = local_20; + do { + *piVar19 = 0; + iVar15 = iVar15 + 1; + piVar19 = piVar19 + 1; + } while (iVar15 < local_5c); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return param_1; +} + + +================================================================== + +### FUNC 001e9530 (1892 bytes) name=createMorphologyFilter + +/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffa8 : 0x001e9a6c */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::createMorphologyFilter(int, int, cv::_InputArray const&, cv::Point_, int, int, + cv::Scalar_ const&) */ + +undefined8 * __thiscall +cv::createMorphologyFilter + (undefined8 *param_1_00,int param_2,uint param_1,_InputArray *param_4,int *param_3, + int param_6,int param_7,double *param_8) + +{ + long *plVar1; + long *plVar2; + uint uVar3; + double dVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + char cVar9; + bool bVar10; + long lVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + int iVar18; + char *pcVar19; + void *pvVar20; + undefined8 *puVar21; + Mat *pMVar22; + int *piVar23; + int iVar24; + long *local_100; + undefined8 local_f8; + long *local_f0; + undefined8 local_e8; + long *local_e0; + undefined8 local_d8; + long *local_d0; + undefined8 local_c8; + long *local_c0; + undefined8 local_b8; + long *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + Mat *local_78; + double local_70; + double dStack_68; + undefined4 local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar18 = _InputArray::kind(param_4); + if (iVar18 == 0x10000) { + pMVar22 = *(Mat **)(param_4 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar22; + local_5c = *(int *)(pMVar22 + 4); + iVar18 = *(int *)(pMVar22 + 8); + iVar8 = *(int *)(pMVar22 + 0xc); + local_50 = *(undefined8 *)(pMVar22 + 0x10); + local_48 = *(undefined8 *)(pMVar22 + 0x18); + local_40 = *(undefined8 *)(pMVar22 + 0x20); + local_38 = *(undefined8 *)(pMVar22 + 0x28); + local_30 = *(undefined8 *)(pMVar22 + 0x30); + local_28 = *(long *)(pMVar22 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar23 = (int *)(local_28 + 0x14); + do { + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar10) { + *piVar23 = *piVar23 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar22 + 4)) { + local_5c = 0; + local_58 = iVar18; + local_54 = iVar8; + Mat::copySize((Mat *)&local_60,pMVar22); + goto LAB_001e9598; + } + iVar5 = *param_3; + local_10 = **(undefined8 **)(pMVar22 + 0x48); + iVar24 = param_3[1]; + local_8 = (*(undefined8 **)(pMVar22 + 0x48))[1]; + iVar7 = local_58; + iVar6 = local_54; + } + else { + _InputArray::getMat_((int)param_4); +LAB_001e9598: + iVar5 = *param_3; + iVar24 = param_3[1]; + iVar6 = local_20[1]; + iVar7 = *local_20; + iVar18 = local_58; + iVar8 = local_54; + } + local_54 = iVar8; + local_58 = iVar18; + if (iVar5 == -1) { + iVar5 = iVar6 / 2; + } + if (iVar24 == -1) { + iVar24 = iVar7 / 2; + } + if ((((iVar6 <= iVar5) || (iVar5 < 0)) || (iVar7 <= iVar24)) || (iVar24 < 0)) { + local_90 = 0; + local_88 = 0; + pcVar19 = (char *)String::allocate((String *)&local_90,0x34); + uVar17 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._40_8_; + uVar16 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._32_8_; + uVar15 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._24_8_; + uVar14 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._16_8_; + uVar13 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._8_8_; + uVar12 = s_anchor_inside_Rect_0__0__ksize_w_004435b0._0_8_; + *(undefined4 *)(pcVar19 + 0x30) = s_anchor_inside_Rect_0__0__ksize_w_004435b0._48_4_; + *(undefined8 *)pcVar19 = uVar12; + *(undefined8 *)(pcVar19 + 8) = uVar13; + *(undefined8 *)(pcVar19 + 0x10) = uVar14; + *(undefined8 *)(pcVar19 + 0x18) = uVar15; + *(undefined8 *)(pcVar19 + 0x20) = uVar16; + *(undefined8 *)(pcVar19 + 0x28) = uVar17; + error(-0xd7,(String *)&local_90,"cv::Point cv::normalizeAnchor(cv::Point, cv::Size)", + "/builds/master_pack-android/opencv/modules/imgproc/src/filterengine.hpp",0x16b); + String::deallocate((String *)&local_90); + } + *param_3 = iVar5; + param_3[1] = iVar24; + local_100 = (long *)0x0; + local_f8 = 0; + local_f0 = (long *)0x0; + local_e8 = 0; + local_e0 = (long *)0x0; + local_d8 = 0; + local_70 = 0.0; + local_80._0_4_ = 0x1010000; + local_78 = (Mat *)&local_60; + iVar18 = countNonZero((_InputArray *)&local_80); + if (iVar18 == local_54 * local_58) { + FUN_001e2b74(&local_d0,param_2,param_1,local_54,*param_3); + plVar2 = local_100; + if (local_d0 != (long *)0x0) { + plVar1 = local_d0 + 1; + do { + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar10) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + local_f8 = local_c8; + local_100 = local_d0; + plVar1 = plVar2 + 1; + if (plVar2 != (long *)0x0) { + do { + lVar11 = *plVar1; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar10) { + *(int *)plVar1 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*plVar2 + 0x10))(); + } + } + plVar2 = local_d0 + 1; + if (local_d0 != (long *)0x0) { + do { + lVar11 = *plVar2; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar10) { + *(int *)plVar2 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*local_d0 + 0x10))(); + } + } + FUN_001e31ec(&local_c0,param_2,param_1,local_58,param_3[1]); + plVar2 = local_f0; + if (local_c0 != (long *)0x0) { + plVar1 = local_c0 + 1; + do { + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar10) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + local_e8 = local_b8; + local_f0 = local_c0; + plVar1 = plVar2 + 1; + if (plVar2 != (long *)0x0) { + do { + lVar11 = *plVar1; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar10) { + *(int *)plVar1 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*plVar2 + 0x10))(); + } + } + plVar2 = local_c0 + 1; + if (local_c0 == (long *)0x0) goto LAB_001e9740; + do { + iVar18 = (int)*plVar2; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar10) { + *(int *)plVar2 = iVar18 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + local_b0 = local_c0; + } while (cVar9 != '\0'); + } + else { + local_90 = *(undefined8 *)param_3; + local_70 = 0.0; + local_80._0_4_ = 0x1010000; + local_78 = (Mat *)&local_60; + FUN_001e7ed0(&local_b0,param_2,param_1,(_InputArray *)&local_80,&local_90); + plVar2 = local_e0; + if (local_b0 != (long *)0x0) { + plVar1 = local_b0 + 1; + do { + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar10) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + local_d8 = local_a8; + local_e0 = local_b0; + plVar1 = plVar2 + 1; + if (plVar2 != (long *)0x0) { + do { + lVar11 = *plVar1; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar10) { + *(int *)plVar1 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*plVar2 + 0x10))(); + } + } + plVar2 = local_b0 + 1; + if (local_b0 == (long *)0x0) goto LAB_001e9740; + do { + iVar18 = (int)*plVar2; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar10) { + *(int *)plVar2 = iVar18 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (iVar18 == 1) { + (**(code **)(*local_b0 + 0x10))(); + } +LAB_001e9740: + local_80 = *param_8; + local_78 = (Mat *)param_8[1]; + local_70 = param_8[2]; + dVar4 = param_8[3]; + dStack_68 = dVar4; + if ((((param_6 == 0) || (param_7 == 0)) && + ((local_80 == DAT_001e9e58 && + (((double)local_78 == DAT_001e9e58 && (local_70 == DAT_001e9e58)))))) && + (dVar4 == DAT_001e9e58)) { + uVar3 = param_1 & 7; + if (((uVar3 != 0) && (1 < uVar3 - 2)) && (1 < uVar3 - 5)) { + local_a0 = 0; + local_98 = 0; + pvVar20 = (void *)String::allocate((String *)&local_a0,0x5a); + memcpy(pvVar20,&DAT_0045bf58,0x5a); + error(-0xd7,(String *)&local_a0, + "cv::Ptr cv::createMorphologyFilter(int, int, cv::InputArray, cv::Point, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/morph.cpp",0x3f2); + String::deallocate((String *)&local_a0); + } + if (param_2 == 0) { + local_80 = DAT_001e9e28; + local_78 = (Mat *)DAT_001e9e28; + local_70 = DAT_001e9e28; + dStack_68 = DAT_001e9e28; + if (((uVar3 != 0) && + (local_80 = DAT_001e9e20, local_78 = (Mat *)DAT_001e9e20, local_70 = DAT_001e9e20, + dStack_68 = DAT_001e9e20, uVar3 != 2)) && + ((local_80 = DAT_001e9e30, local_78 = (Mat *)DAT_001e9e30, local_70 = DAT_001e9e30, + dStack_68 = DAT_001e9e30, uVar3 != 3 && + (local_80 = dVar4, local_78 = (Mat *)dVar4, local_70 = dVar4, dStack_68 = dVar4, + uVar3 == 5)))) { + local_80 = DAT_001e9e38; + local_78 = (Mat *)DAT_001e9e38; + local_70 = DAT_001e9e38; + dStack_68 = DAT_001e9e38; + } + } + else { + local_80 = 0.0; + local_78 = (Mat *)local_80; + local_70 = local_80; + dStack_68 = local_80; + if ((((param_1 & 5) != 0) && + (local_80 = DAT_001e9e40, local_78 = (Mat *)DAT_001e9e40, local_70 = DAT_001e9e40, + dStack_68 = DAT_001e9e40, uVar3 != 3)) && + (local_80 = DAT_001e9e50, local_78 = (Mat *)DAT_001e9e50, local_70 = DAT_001e9e50, + dStack_68 = DAT_001e9e50, uVar3 != 5)) { + local_80 = DAT_001e9e48; + local_78 = (Mat *)DAT_001e9e48; + local_70 = DAT_001e9e48; + dStack_68 = DAT_001e9e48; + } + } + } + pvVar20 = operator_new(0x130); + FUN_001d5aa4(pvVar20,&local_e0,&local_100,&local_f0,param_1,param_1,param_1,param_6,param_7, + (_InputArray *)&local_80); + puVar21 = operator_new(0x20); + *(undefined4 *)(puVar21 + 1) = 1; + puVar21[2] = pvVar20; + *puVar21 = &PTR_FUN_004f3ca0; + plVar2 = local_e0 + 1; + *param_1_00 = puVar21; + param_1_00[1] = pvVar20; + if (local_e0 != (long *)0x0) { + do { + lVar11 = *plVar2; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar10) { + *(int *)plVar2 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*local_e0 + 0x10))(local_e0); + } + } + plVar2 = local_f0 + 1; + if (local_f0 != (long *)0x0) { + do { + lVar11 = *plVar2; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar10) { + *(int *)plVar2 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*local_f0 + 0x10))(); + } + } + plVar2 = local_100 + 1; + if (local_100 != (long *)0x0) { + do { + lVar11 = *plVar2; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(plVar2,0x10); + if (bVar10) { + *(int *)plVar2 = (int)lVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if ((int)lVar11 == 1) { + (**(code **)(*local_100 + 0x10))(); + } + } + if (local_28 != 0) { + piVar23 = (int *)(local_28 + 0x14); + do { + iVar18 = *piVar23; + cVar9 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar10) { + *piVar23 = iVar18 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar18 = 0; + piVar23 = local_20; + do { + *piVar23 = 0; + iVar18 = iVar18 + 1; + piVar23 = piVar23 + 1; + } while (iVar18 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return param_1_00; +} + + +================================================================== + +### FUNC 001e9e60 (760 bytes) name=FUN_001e9e60 + +void FUN_001e9e60(long param_1,int *param_2) + +{ + long *plVar1; + int *piVar2; + int iVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + long lVar8; + int iVar9; + undefined4 local_f0; + undefined4 local_ec; + long *local_e8; + long *local_e0; + int local_d8; + int local_d4; + long local_d0; + undefined4 local_c8; + undefined4 local_c4; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + int local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar3 = *(int *)(param_1 + 0x10); + iVar4 = *(int *)(param_1 + 200); + iVar9 = 0; + if (iVar4 != 0) { + iVar9 = (iVar3 * param_2[1]) / iVar4; + } + local_d8 = 0x80000000; + local_d4 = 0x7fffffff; + iVar5 = 0; + if (iVar4 != 0) { + iVar5 = (iVar3 * *param_2) / iVar4; + } + if (iVar3 < iVar5) { + iVar5 = iVar3; + } + if (iVar3 < iVar9) { + iVar9 = iVar3; + } + local_60 = iVar5; + local_5c = iVar9; + cv::Mat::Mat(aMStack_c0,(Mat *)(param_1 + 8),(Range *)&local_60,(Range *)&local_d8); + local_f0 = 0x80000000; + local_ec = 0x7fffffff; + local_d8 = iVar5; + local_d4 = iVar9; + cv::Mat::Mat((Mat *)&local_60,(Mat *)(param_1 + 0x68),(Range *)&local_d8,(Range *)&local_f0); + local_d0 = param_1 + 0xd8; + local_f0 = *(undefined4 *)(param_1 + 0x138); + local_ec = *(undefined4 *)(param_1 + 0x13c); + local_c8 = 0; + local_c4 = 0; + local_d8 = 0x1010000; + cv::createMorphologyFilter + ((cv *)&local_e8,*(undefined4 *)(param_1 + 0xd0),*(uint *)(param_1 + 8) & 0xfff, + (Range *)&local_d8,(Range *)&local_f0,*(undefined4 *)(param_1 + 0x140), + *(undefined4 *)(param_1 + 0x144),param_1 + 0x148); + local_d8 = 0; + local_d4 = 0; + local_d0 = 0xffffffffffffffff; + local_f0 = 0; + local_ec = 0; + (**(code **)(*local_e0 + 0x28)) + (local_e0,aMStack_c0,(Mat *)&local_60,(Range *)&local_d8,(Range *)&local_f0,0); + iVar9 = 1; + if (1 < *(int *)(param_1 + 0xcc)) { + do { + local_d8 = 0; + local_d4 = 0; + local_d0 = 0xffffffffffffffff; + local_f0 = 0; + local_ec = 0; + (**(code **)(*local_e0 + 0x28)) + (local_e0,(Mat *)&local_60,(Mat *)&local_60,(Range *)&local_d8,(Range *)&local_f0,0) + ; + iVar9 = iVar9 + 1; + } while (iVar9 < *(int *)(param_1 + 0xcc)); + } + plVar1 = local_e8 + 1; + if (local_e8 != (long *)0x0) { + do { + lVar8 = *plVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar7) { + *(int *)plVar1 = (int)lVar8 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if ((int)lVar8 == 1) { + (**(code **)(*local_e8 + 0x10))(); + } + } + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar2; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar9 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar2; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar9 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 001ea1e0 (2280 bytes) name=FUN_001ea1e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_001ea1e0(float *param_1,float *param_2,float *param_3) + +{ + float *pfVar1; + float fVar2; + undefined2 uVar3; + undefined1 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + ulong uVar10; + ulong uVar11; + char *pcVar12; + undefined4 *puVar13; + ulong uVar14; + int iVar15; + float *pfVar16; + undefined8 uVar17; + int *piVar18; + int iVar19; + int iVar20; + float fVar21; + float fVar22; + double dVar23; + float fVar24; + float fVar25; + double dVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + undefined8 local_80; + undefined8 uStack_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_18 = _UNK_001eab28; + local_20 = _DAT_001eab20; + local_38 = _UNK_001eab08; + local_40 = _DAT_001eab00; + local_58 = 0; + local_60 = 0; + uStack_28 = _UNK_001eab18; + local_30 = _DAT_001eab10; + uStack_48 = 0; + local_50 = 0; + fVar34 = *param_1; + fVar33 = param_1[1]; + fVar21 = 0.0; + uStack_8 = _UNK_001eab38; + local_10 = _DAT_001eab30; + uStack_78 = _UNK_001eab08; + local_80 = _DAT_001eab00; + iVar15 = 1; + iVar19 = 0; + pfVar1 = param_1; + do { + iVar20 = iVar15; + pfVar16 = pfVar1 + 2; + iVar15 = iVar20; + do { + dVar23 = (double)(pfVar1[1] - pfVar16[1]) * (double)(pfVar1[1] - pfVar16[1]) + + (double)(*pfVar1 - *pfVar16) * (double)(*pfVar1 - *pfVar16); + dVar26 = SQRT(dVar23); + if (NAN(dVar26)) { + dVar26 = sqrt(dVar23); + } + if (fVar21 < (float)dVar26) { + local_80 = CONCAT44(iVar15,iVar19); + fVar21 = (float)dVar26; + } + iVar15 = iVar15 + 1; + pfVar16 = pfVar16 + 2; + } while (iVar15 != 4); + iVar15 = iVar20 + 1; + iVar19 = iVar20; + pfVar1 = pfVar1 + 2; + } while (iVar20 + 1 != 4); + if (fVar21 <= 0.0) { + uVar17 = 1; + uVar14 = uStack_78 & 0xffffffff; + fVar21 = 1.0; + uVar10 = (ulong)uStack_78._4_4_; + fVar24 = 1.0; + fVar32 = fVar33; + fVar30 = fVar34; + goto LAB_001ea500; + } + if ((int)local_80 == 0) { + iVar15 = 2; +LAB_001ea334: + if (local_80._4_4_ != 1) { + if (iVar15 == 2) { + iVar15 = 3; + iVar19 = 2; + } + else { + if ((int)uStack_78 == 1) goto LAB_001ea370; + iVar15 = 4; + iVar19 = 3; + } + *(undefined4 *)((long)&local_80 + (long)iVar19 * 4) = 1; + } +LAB_001ea370: + if ((int)local_80 != 2) goto LAB_001ea378; +LAB_001ea3d0: + if (local_80._4_4_ != 3) { + if (iVar15 != 2) { + if ((int)uStack_78 == 3) goto LAB_001ea41c; + if (iVar15 != 3) { + if (uStack_78._4_4_ == 3) goto LAB_001ea41c; + iVar15 = 4; + } + } + *(undefined4 *)((long)&local_80 + (long)iVar15 * 4) = 3; + } + } + else { + if (local_80._4_4_ == 0) { + iVar15 = 2; + } + else { + uStack_78 = (ulong)uStack_78._4_4_ << 0x20; + iVar15 = 3; + } + if ((int)local_80 != 1) goto LAB_001ea334; +LAB_001ea378: + if (local_80._4_4_ != 2) { + if (iVar15 == 2) { + iVar15 = 3; + iVar19 = 2; + } + else { + if ((int)uStack_78 == 2) goto LAB_001ea3c8; + if (iVar15 == 3) { + iVar15 = 4; + iVar19 = 3; + } + else { + if (uStack_78._4_4_ == 2) goto LAB_001ea3c8; + iVar15 = 5; + iVar19 = 4; + } + } + *(undefined4 *)((long)&local_80 + (long)iVar19 * 4) = 2; + } +LAB_001ea3c8: + if ((int)local_80 != 3) goto LAB_001ea3d0; + } +LAB_001ea41c: + uVar10 = -((local_80 & 0xffffffff) >> 0x1f) & 0xfffffff800000000 | (local_80 & 0xffffffff) << 3; + uVar14 = -(ulong)(local_80._4_4_ >> 0x1f) & 0xfffffff800000000 | (ulong)local_80._4_4_ << 3; + fVar21 = *(float *)((long)param_1 + uVar10); + fVar24 = *(float *)((long)param_1 + uVar10 + 4); + fVar32 = (fVar24 + *(float *)((long)param_1 + uVar14 + 4)) * 0.5; + fVar30 = (fVar21 + *(float *)((long)param_1 + uVar14)) * 0.5; + dVar26 = (double)(fVar24 - fVar32); + dVar23 = (double)(fVar21 - fVar30); + dVar23 = dVar26 * dVar26 + dVar23 * dVar23; + dVar26 = SQRT(dVar23); + if (NAN(dVar26)) { + dVar26 = sqrt(dVar23); + } + fVar2 = DAT_001eab48; + fVar24 = 1.0; + fVar31 = (float)(dVar26 * DAT_001eab40); + if (fVar31 < 1.0) { + fVar21 = 1.0; + } + else { + fVar21 = fVar31 * fVar31; + fVar24 = fVar31; + } + uVar14 = uStack_78 & 0xffffffff; + uVar10 = -(uStack_78 >> 0x1f & 1) & 0xfffffff800000000 | uVar14 << 3; + fVar27 = *(float *)((long)param_1 + uVar10) - fVar30; + fVar31 = *(float *)((long)param_1 + uVar10 + 4) - fVar32; + if (0.0 <= (fVar21 - fVar27 * fVar27) - fVar31 * fVar31) { + uVar10 = (ulong)uStack_78._4_4_; + uVar17 = 2; + uVar11 = -(ulong)(uStack_78._4_4_ >> 0x1f) & 0xfffffff800000000 | uVar10 << 3; + fVar27 = *(float *)((long)param_1 + uVar11) - fVar30; + fVar31 = *(float *)((long)param_1 + uVar11 + 4) - fVar32; + if (0.0 <= (fVar21 - fVar27 * fVar27) - fVar31 * fVar31) goto LAB_001ea500; + } + iVar19 = -1; + iVar15 = 0; + piVar18 = (int *)&local_40; + fVar24 = DAT_001eaaf0; + do { + fVar32 = param_1[(long)piVar18[1] * 2]; + fVar30 = param_1[(long)piVar18[1] * 2 + 1]; + fVar31 = param_1[(long)*piVar18 * 2]; + fVar28 = param_1[(long)piVar18[2] * 2 + 1] - fVar30; + fVar27 = param_1[(long)*piVar18 * 2 + 1]; + fVar29 = fVar32 - param_1[(long)piVar18[2] * 2]; + fVar21 = fVar29 * (fVar30 - fVar27) - (fVar31 - fVar32) * fVar28; + if (fVar21 != 0.0) { + fVar25 = fVar30 + param_1[(long)piVar18[2] * 2 + 1]; + fVar22 = fVar32 + param_1[(long)piVar18[2] * 2]; + fVar21 = ((fVar31 - fVar32) * (fVar22 * 0.5 - (fVar32 + fVar31) * 0.5) - + (fVar30 - fVar27) * (fVar25 * 0.5 - (fVar27 + fVar30) * 0.5)) / fVar21; + fVar32 = fVar29 * fVar21 + fVar25 * 0.5; + fVar21 = fVar28 * fVar21 + fVar22 * 0.5; + dVar23 = (double)(fVar32 - fVar27) * (double)(fVar32 - fVar27) + + (double)(fVar21 - fVar31) * (double)(fVar21 - fVar31); + dVar26 = SQRT(dVar23); + if (NAN(dVar26)) { + dVar26 = sqrt(dVar23); + } + fVar30 = (float)dVar26 * fVar2; + if (fVar30 < 2.0) { + fVar31 = 4.0; + fVar30 = 2.0; + } + else { + fVar31 = fVar30 * fVar30; + } + if ((0.0 <= (fVar31 - (param_1[(long)piVar18[3] * 2] - fVar21) * + (param_1[(long)piVar18[3] * 2] - fVar21)) - + (param_1[(long)piVar18[3] * 2 + 1] - fVar32) * + (param_1[(long)piVar18[3] * 2 + 1] - fVar32)) && (fVar30 < fVar24)) { + fVar34 = fVar21; + fVar33 = fVar32; + fVar24 = fVar30; + iVar19 = iVar15; + } + } + iVar15 = iVar15 + 1; + piVar18 = piVar18 + 4; + } while (iVar15 != 4); + if (iVar19 == -1) { + local_70 = 0; + local_68 = 0; + puVar13 = (undefined4 *)cv::String::allocate((String *)&local_70,7); + uVar4 = DAT_0045c596; + uVar3 = DAT_0045c594; + *puVar13 = DAT_0045c590; + *(undefined2 *)(puVar13 + 1) = uVar3; + *(undefined1 *)((long)puVar13 + 6) = uVar4; + cv::error(-0xd7,(String *)&local_70, + "int cv::findEnslosingCicle4pts_32f(cv::Point2f*, cv::Point2f&, float&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0xa7); + iVar19 = 0; + cv::String::deallocate((String *)&local_70); + } + local_80 = *(ulong *)((long)&local_40 + (long)iVar19 * 4 * 4); + uStack_78 = (&local_38)[(long)iVar19 * 2]; + uVar17 = 3; + fVar21 = fVar24 * fVar24; + uVar14 = uStack_78 & 0xffffffff; + uVar10 = uStack_78 >> 0x20; + fVar32 = fVar33; + fVar30 = fVar34; +LAB_001ea500: + uVar14 = -(uVar14 >> 0x1f) & 0xfffffff800000000 | uVar14 << 3; + *param_2 = fVar30; + uVar10 = -(uVar10 >> 0x1f) & 0xfffffff800000000 | uVar10 << 3; + param_2[1] = fVar32; + *param_3 = fVar24; + fVar33 = param_1[(long)(int)local_80 * 2]; + fVar34 = param_1[(long)(int)local_80 * 2 + 1]; + local_58._0_4_ = param_1[(long)(int)local_80._4_4_ * 2]; + local_58._4_4_ = param_1[(long)(int)local_80._4_4_ * 2 + 1]; + local_60 = CONCAT44(fVar34,fVar33); + local_50 = CONCAT44(*(undefined4 *)((long)param_1 + uVar14 + 4), + *(undefined4 *)((long)param_1 + uVar14)); + uStack_48 = CONCAT44(*(undefined4 *)((long)param_1 + uVar10 + 4), + *(undefined4 *)((long)param_1 + uVar10)); + *param_1 = fVar33; + param_1[1] = fVar34; + if ((fVar21 - (fVar33 - fVar30) * (fVar33 - fVar30)) - (fVar34 - fVar32) * (fVar34 - fVar32) < 0.0 + ) { + local_70 = 0; + local_68 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_70,0x2c); + uVar9 = s_pointInCircle__pts_i___center__r_0045c5e0._40_4_; + uVar8 = s_pointInCircle__pts_i___center__r_0045c5e0._24_8_; + uVar7 = s_pointInCircle__pts_i___center__r_0045c5e0._16_8_; + uVar6 = s_pointInCircle__pts_i___center__r_0045c5e0._8_8_; + uVar5 = s_pointInCircle__pts_i___center__r_0045c5e0._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_pointInCircle__pts_i___center__r_0045c5e0._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar9; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_70, + "int cv::findEnslosingCicle4pts_32f(cv::Point2f*, cv::Point2f&, float&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0xbc); + cv::String::deallocate((String *)&local_70); + } + param_1[2] = (float)local_58; + param_1[3] = local_58._4_4_; + if ((fVar21 - ((float)local_58 - fVar30) * ((float)local_58 - fVar30)) - + (local_58._4_4_ - fVar32) * (local_58._4_4_ - fVar32) < 0.0) { + local_70 = 0; + local_68 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_70,0x2c); + uVar9 = s_pointInCircle__pts_i___center__r_0045c5e0._40_4_; + uVar8 = s_pointInCircle__pts_i___center__r_0045c5e0._24_8_; + uVar7 = s_pointInCircle__pts_i___center__r_0045c5e0._16_8_; + uVar6 = s_pointInCircle__pts_i___center__r_0045c5e0._8_8_; + uVar5 = s_pointInCircle__pts_i___center__r_0045c5e0._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_pointInCircle__pts_i___center__r_0045c5e0._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar9; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_70, + "int cv::findEnslosingCicle4pts_32f(cv::Point2f*, cv::Point2f&, float&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0xbc); + cv::String::deallocate((String *)&local_70); + } + param_1[4] = (float)local_50; + param_1[5] = local_50._4_4_; + if ((fVar21 - ((float)local_50 - fVar30) * ((float)local_50 - fVar30)) - + (local_50._4_4_ - fVar32) * (local_50._4_4_ - fVar32) < 0.0) { + local_70 = 0; + local_68 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_70,0x2c); + uVar9 = s_pointInCircle__pts_i___center__r_0045c5e0._40_4_; + uVar8 = s_pointInCircle__pts_i___center__r_0045c5e0._24_8_; + uVar7 = s_pointInCircle__pts_i___center__r_0045c5e0._16_8_; + uVar6 = s_pointInCircle__pts_i___center__r_0045c5e0._8_8_; + uVar5 = s_pointInCircle__pts_i___center__r_0045c5e0._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_pointInCircle__pts_i___center__r_0045c5e0._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar9; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_70, + "int cv::findEnslosingCicle4pts_32f(cv::Point2f*, cv::Point2f&, float&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0xbc); + cv::String::deallocate((String *)&local_70); + } + param_1[6] = (float)uStack_48; + param_1[7] = uStack_48._4_4_; + if ((fVar21 - ((float)uStack_48 - fVar30) * ((float)uStack_48 - fVar30)) - + (uStack_48._4_4_ - fVar32) * (uStack_48._4_4_ - fVar32) < 0.0) { + local_70 = 0; + local_68 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_70,0x2c); + uVar9 = s_pointInCircle__pts_i___center__r_0045c5e0._40_4_; + uVar8 = s_pointInCircle__pts_i___center__r_0045c5e0._24_8_; + uVar7 = s_pointInCircle__pts_i___center__r_0045c5e0._16_8_; + uVar6 = s_pointInCircle__pts_i___center__r_0045c5e0._8_8_; + uVar5 = s_pointInCircle__pts_i___center__r_0045c5e0._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_pointInCircle__pts_i___center__r_0045c5e0._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar9; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_70, + "int cv::findEnslosingCicle4pts_32f(cv::Point2f*, cv::Point2f&, float&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0xbc); + cv::String::deallocate((String *)&local_70); + } + return uVar17; +} + + +================================================================== + +### FUNC 001eab50 (2128 bytes) name=minEnclosingCircle + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::minEnclosingCircle(cv::_InputArray const&, cv::Point_&, float&) */ + +void cv::minEnclosingCircle(_InputArray *param_1,Point_ *param_2,float *param_3) + +{ + int *piVar1; + uint uVar2; + char cVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + bool bVar10; + int iVar11; + undefined8 *puVar12; + float *pfVar13; + float *pfVar14; + float *pfVar15; + undefined4 *puVar16; + Mat *pMVar17; + int iVar18; + int iVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float local_b4; + float local_b0; + float local_ac; + float local_a8; + float fStack_a4; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 uStack_88; + undefined8 local_80; + undefined8 local_78; + long local_70; + undefined8 uStack_68; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + float *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar17 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar17; + local_5c = *(int *)(pMVar17 + 4); + local_58 = *(undefined4 *)(pMVar17 + 8); + local_54 = *(undefined4 *)(pMVar17 + 0xc); + local_50 = *(float **)(pMVar17 + 0x10); + local_48 = *(undefined8 *)(pMVar17 + 0x18); + local_40 = *(undefined8 *)(pMVar17 + 0x20); + local_38 = *(undefined8 *)(pMVar17 + 0x28); + local_30 = *(undefined8 *)(pMVar17 + 0x30); + local_28 = *(long *)(pMVar17 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar17 + 0x48); + local_8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar11 = Mat::checkVector((Mat *)&local_60,2,-1,true); + uVar2 = local_60 & 7; + local_b0 = 0.0; + local_ac = 0.0; + local_b4 = 0.0; + if ((iVar11 < 0) || (1 < uVar2 - 4)) { + local_80 = 0; + local_78 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_80,0x32); + uVar9 = DAT_0045c638; + uVar8 = _LAB_0045c630; + uVar7 = DAT_0045c628; + uVar6 = DAT_0045c620; + uVar5 = DAT_0045c618; + uVar4 = DAT_0045c610; + *(undefined2 *)(puVar12 + 6) = DAT_0045c640; + *puVar12 = uVar4; + puVar12[1] = uVar5; + puVar12[2] = uVar6; + puVar12[3] = uVar7; + puVar12[4] = uVar8; + puVar12[5] = uVar9; + error(-0xd7,(String *)&local_80, + "void cv::minEnclosingCircle(cv::InputArray, cv::Point2f&, float&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0xce); + String::deallocate((String *)&local_80); + } + pfVar14 = local_50; + *(undefined4 *)param_2 = 0; + *(undefined4 *)(param_2 + 4) = 0; + *param_3 = 0.0; + if (iVar11 == 0) { + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_5c) { + iVar11 = 0; + puVar16 = local_20; + do { + *puVar16 = 0; + iVar11 = iVar11 + 1; + puVar16 = puVar16 + 1; + } while (iVar11 < local_5c); + } + } + else { + bVar10 = uVar2 == 5; + if (bVar10) { + fVar25 = local_50[1]; + local_98 = *(ulong *)local_50; + local_a0 = *(ulong *)local_50; + uStack_88 = *(undefined8 *)local_50; + local_90 = *(long *)local_50; + if (1 < iVar11) { + pfVar13 = local_50; + fVar23 = *local_50; + fVar26 = fVar25; + fVar28 = *local_50; + while( true ) { + pfVar15 = pfVar13 + 2; + fVar20 = pfVar13[3]; + if (*pfVar15 < fVar23) { + local_a0 = *(ulong *)pfVar15; + } + if (fVar28 < *pfVar15) { + local_98 = *(ulong *)pfVar15; + } + if (fVar20 < fVar26) { + local_90 = *(long *)pfVar15; + } + if (fVar25 < fVar20) { + uStack_88 = *(undefined8 *)pfVar15; + fVar25 = fVar20; + } + if (pfVar13 == local_50 + (ulong)(iVar11 - 2) * 2) break; + pfVar13 = pfVar13 + 2; + fVar23 = (float)local_a0; + fVar26 = local_90._4_4_; + fVar28 = (float)local_98; + } + } + } + else { + fVar23 = (float)(int)*local_50; + fVar25 = (float)(int)local_50[1]; + local_98 = CONCAT44(fVar25,fVar23); + local_a0 = CONCAT44(fVar25,fVar23); + uStack_88 = CONCAT44(fVar25,fVar23); + local_90 = CONCAT44(fVar25,fVar23); + if (1 < iVar11) { + pfVar13 = local_50; + fVar26 = fVar23; + fVar28 = fVar25; + fVar20 = fVar25; + fVar30 = fVar23; + fVar29 = fVar25; + fVar24 = fVar23; + fVar27 = fVar25; + while( true ) { + fVar21 = (float)(int)pfVar13[2]; + fVar22 = (float)(int)pfVar13[3]; + if (fVar21 < fVar26) { + local_a0 = (ulong)(uint)fVar21; + fVar20 = fVar22; + } + if (fVar24 < fVar21) { + local_98 = (ulong)(uint)fVar21; + fVar25 = fVar22; + } + if (fVar22 < fVar28) { + local_90 = (ulong)(uint)fVar22 << 0x20; + fVar23 = fVar21; + } + if (fVar27 < fVar22) { + fVar30 = fVar21; + fVar29 = fVar22; + fVar27 = fVar22; + } + if (pfVar13 == local_50 + (ulong)(iVar11 - 2) * 2) break; + pfVar13 = pfVar13 + 2; + fVar26 = (float)local_a0; + fVar28 = local_90._4_4_; + fVar24 = (float)local_98; + } + local_90 = CONCAT44(local_90._4_4_,fVar23); + local_98 = CONCAT44(fVar25,(float)local_98); + local_a0 = CONCAT44(fVar20,(float)local_a0); + uStack_88 = CONCAT44(fVar29,fVar30); + } + } + iVar19 = 0; + pfVar13 = local_50 + ((ulong)(iVar11 - 1) + 1) * 2; + do { + local_a8 = 0.0; + fStack_a4 = 0.0; + if (iVar19 == 0) { + FUN_001ea1e0(&local_a0,&local_b0,&local_b4); + } + if (iVar11 < 1) goto LAB_001eaf50; + fVar25 = 0.0; + pfVar15 = pfVar14; + if (bVar10) { + do { + fVar26 = *pfVar15 - local_b0; + fVar23 = pfVar15[1] - local_ac; + fVar23 = (local_b4 * local_b4 - fVar26 * fVar26) - fVar23 * fVar23; + if (fVar23 < fVar25) { + fStack_a4 = pfVar15[1]; + local_a8 = *pfVar15; + fVar25 = fVar23; + } + pfVar15 = pfVar15 + 2; + } while (pfVar15 != pfVar13); + } + else { + do { + fVar26 = (float)(int)*pfVar15 - local_b0; + fVar23 = (float)(int)pfVar15[1] - local_ac; + fVar23 = (local_b4 * local_b4 - fVar26 * fVar26) - fVar23 * fVar23; + if (fVar23 < fVar25) { + fStack_a4 = (float)(int)pfVar15[1]; + local_a8 = (float)(int)*pfVar15; + fVar25 = fVar23; + } + pfVar15 = pfVar15 + 2; + } while (pfVar15 != pfVar13); + } + if (0.0 <= fVar25) goto LAB_001eaf50; + iVar18 = 3; + puVar12 = &local_a0; + do { + if (iVar18 == 0) { + local_80 = CONCAT44(fStack_a4,local_a8); + local_70 = local_90; + pfVar15 = (float *)&uStack_88; + local_78 = local_98; + } + else { + local_80 = local_a0; + if (iVar18 == 1) { + pfVar15 = (float *)&uStack_88; + local_78 = CONCAT44(fStack_a4,local_a8); + local_70 = local_90; + } + else { + local_78 = local_98; + if (iVar18 == 2) { + pfVar15 = (float *)&uStack_88; + local_70 = CONCAT44(fStack_a4,local_a8); + } + else { + local_70 = local_90; + pfVar15 = &local_a8; + } + } + } + uStack_68 = *(undefined8 *)pfVar15; + FUN_001ea1e0(&local_80,&local_b0,&local_b4); + fVar25 = *(float *)((long)puVar12 + 0x1c) - local_ac; + if (0.0 <= (local_b4 * local_b4 - + (*(float *)(puVar12 + 3) - local_b0) * (*(float *)(puVar12 + 3) - local_b0)) - + fVar25 * fVar25) { + (&local_a0)[iVar18] = CONCAT44(fStack_a4,local_a8); + break; + } + iVar18 = iVar18 + -1; + puVar12 = puVar12 + -1; + } while (iVar18 != -1); + iVar19 = iVar19 + 1; + } while (iVar19 != 100); + local_b4 = 0.0; + if (bVar10) { + do { + fVar25 = (local_ac - pfVar14[1]) * (local_ac - pfVar14[1]) + + (local_b0 - *pfVar14) * (local_b0 - *pfVar14); + if (local_b4 < fVar25) { + local_b4 = fVar25; + } + pfVar14 = pfVar14 + 2; + } while (pfVar14 != pfVar13); + } + else { + do { + fVar25 = (local_ac - (float)(int)pfVar14[1]) * (local_ac - (float)(int)pfVar14[1]) + + (local_b0 - (float)(int)*pfVar14) * (local_b0 - (float)(int)*pfVar14); + if (local_b4 < fVar25) { + local_b4 = fVar25; + } + pfVar14 = pfVar14 + 2; + } while (pfVar14 != pfVar13); + } + fVar25 = SQRT(local_b4); + if (NAN(fVar25)) { + fVar25 = sqrtf(local_b4); + } + local_b4 = fVar25 * DAT_001eb3e0; +LAB_001eaf50: + *(float *)param_2 = local_b0; + *(float *)(param_2 + 4) = local_ac; + *param_3 = local_b4; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_5c) { + iVar11 = 0; + puVar16 = local_20; + do { + *puVar16 = 0; + iVar11 = iVar11 + 1; + puVar16 = puVar16 + 1; + } while (iVar11 < local_5c); + } + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = (float *)0x0; + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001eb3e4 (1552 bytes) name=arcLength + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::arcLength(cv::_InputArray const&, bool) */ + +undefined1 [16] cv::arcLength(_InputArray *param_1,bool param_2) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + int iVar11; + undefined8 *puVar12; + ulong uVar13; + undefined4 *puVar14; + Mat *pMVar15; + int iVar16; + uint uVar17; + uint uVar18; + float *pfVar19; + int iVar20; + undefined1 auVar21 [16]; + float fVar22; + float fVar23; + double dVar24; + float fVar25; + float fVar26; + undefined4 local_130 [2]; + Mat *local_128; + undefined4 local_120; + undefined4 local_11c; + undefined4 local_118 [2]; + Mat *local_110; + undefined4 local_108; + undefined4 local_104; + float local_100 [16]; + uint local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + float *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + float *local_50; + float *local_48; + long local_40; + long local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + ulong *local_18; + ulong local_10; + undefined8 local_8; + + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar15; + local_bc = *(int *)(pMVar15 + 4); + local_b8 = *(undefined4 *)(pMVar15 + 8); + local_b4 = *(undefined4 *)(pMVar15 + 0xc); + local_b0 = *(float **)(pMVar15 + 0x10); + local_a8 = *(undefined8 *)(pMVar15 + 0x18); + local_a0 = *(undefined8 *)(pMVar15 + 0x20); + local_98 = *(undefined8 *)(pMVar15 + 0x28); + local_90 = *(undefined8 *)(pMVar15 + 0x30); + local_88 = *(long *)(pMVar15 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar15 + 0x48); + local_68 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar11 = Mat::checkVector((Mat *)&local_c0,2,-1,true); + uVar2 = local_c0 & 7; + if ((iVar11 < 0) || (1 < uVar2 - 4)) { + local_60 = 0; + local_58 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_60,0x32); + uVar10 = DAT_0045c638; + uVar9 = _LAB_0045c630; + uVar8 = DAT_0045c628; + uVar7 = DAT_0045c620; + uVar6 = DAT_0045c618; + uVar5 = DAT_0045c610; + *(undefined2 *)(puVar12 + 6) = DAT_0045c640; + *puVar12 = uVar5; + puVar12[1] = uVar6; + puVar12[2] = uVar7; + puVar12[3] = uVar8; + puVar12[4] = uVar9; + puVar12[5] = uVar10; + error(-0xd7,(String *)&local_60,"double cv::arcLength(cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x12d); + String::deallocate((String *)&local_60); + } + if (iVar11 < 2) { + dVar24 = 0.0; + } + else { + uVar13 = 0; + if (param_2) { + uVar13 = -(ulong)(iVar11 - 1U >> 0x1f) & 0xfffffff800000000 | (ulong)(iVar11 - 1U) << 3; + } + if (uVar2 == 5) { + fVar22 = *(float *)((long)local_b0 + uVar13); + fVar23 = *(float *)((long)local_b0 + uVar13 + 4); + } + else { + fVar22 = (float)*(int *)((long)local_b0 + uVar13); + fVar23 = (float)*(int *)((long)local_b0 + uVar13 + 4); + } + uVar17 = 0; + iVar20 = 0; + dVar24 = 0.0; + pfVar19 = local_b0; + while( true ) { + if (uVar2 == 5) { + fVar26 = *pfVar19; + fVar25 = pfVar19[1]; + } + else { + fVar26 = (float)(int)*pfVar19; + fVar25 = (float)(int)pfVar19[1]; + } + uVar18 = uVar17 + 1; + local_100[(int)uVar17] = + (fVar25 - fVar23) * (fVar25 - fVar23) + (fVar26 - fVar22) * (fVar26 - fVar22); + if ((uVar18 == 0x10) || (iVar11 + -1 == iVar20)) { + local_10 = -(ulong)(uVar18 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar18 << 2; + local_18 = &local_10; + local_30 = 0; + local_40 = (long)local_100 + local_10; + local_58 = CONCAT44(uVar18,1); + local_28 = 0; + local_60 = 0x242ff4005; + local_8 = 4; + local_130[0] = 0x1010000; + local_120 = 0; + local_11c = 0; + local_108 = 0; + local_104 = 0; + local_118[0] = 0x2010000; + local_128 = (Mat *)&local_60; + local_110 = (Mat *)&local_60; + local_50 = local_100; + local_48 = local_100; + local_38 = local_40; + local_20 = &local_58; + sqrt((_InputArray *)local_130,(_OutputArray *)local_118); + if ((0 < (int)uVar18) && + (dVar24 = dVar24 + (double)local_100[(int)uVar17], uVar18 = uVar17, 0 < (int)uVar17)) { + dVar24 = dVar24 + (double)local_100[(int)(uVar17 - 1)]; + uVar18 = 0; + if (uVar17 - 1 != 0) { + uVar18 = uVar17 - 2; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 3; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 4; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 5; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 6; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 7; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 8; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 9; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 10; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 0xb; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 0xc; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 0xd; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 0xe; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + if (0 < (int)uVar18) { + uVar18 = uVar17 - 0xf; + dVar24 = dVar24 + (double)local_100[(int)uVar18]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar16 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (float *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = (float *)0x0; + if (0 < local_60._4_4_) { + iVar16 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar16 = iVar16 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar16 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + } + uVar17 = uVar18; + if (iVar20 + 1 == iVar11) break; + iVar20 = iVar20 + 1; + pfVar19 = pfVar19 + 2; + fVar22 = fVar26; + fVar23 = fVar25; + } + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (float *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + puVar14 = local_80; + do { + *puVar14 = 0; + iVar11 = iVar11 + 1; + puVar14 = puVar14 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + auVar21._8_8_ = 0; + auVar21._0_8_ = dVar24; + return auVar21; +} + + +================================================================== + +### FUNC 001eba58 (820 bytes) name=contourArea + +/* cv::contourArea(cv::_InputArray const&, bool) */ + +undefined1 [16] cv::contourArea(_InputArray *param_1,bool param_2) + +{ + float *pfVar1; + int *piVar2; + uint uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + int iVar12; + char *pcVar13; + Mat *pMVar14; + undefined4 *puVar15; + float *pfVar16; + undefined1 auVar17 [16]; + float fVar18; + double dVar19; + float fVar20; + float fVar21; + double dVar22; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + float *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar12 = _InputArray::kind(param_1); + if (iVar12 == 0x10000) { + pMVar14 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar14; + local_5c = *(int *)(pMVar14 + 4); + local_58 = *(undefined4 *)(pMVar14 + 8); + local_54 = *(undefined4 *)(pMVar14 + 0xc); + local_50 = *(float **)(pMVar14 + 0x10); + local_48 = *(undefined8 *)(pMVar14 + 0x18); + local_40 = *(undefined8 *)(pMVar14 + 0x20); + local_38 = *(undefined8 *)(pMVar14 + 0x28); + local_30 = *(undefined8 *)(pMVar14 + 0x30); + local_28 = *(long *)(pMVar14 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar14 + 0x48); + local_8 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar12 = Mat::checkVector((Mat *)&local_60,2,-1,true); + uVar3 = local_60 & 7; + if ((iVar12 < 0) || (1 < uVar3 - 4)) { + local_70 = 0; + local_68 = 0; + pcVar13 = (char *)String::allocate((String *)&local_70,0x34); + uVar11 = s_npoints_>__0_____depth____CV_32F_0045c648._40_8_; + uVar10 = s_npoints_>__0_____depth____CV_32F_0045c648._32_8_; + uVar9 = s_npoints_>__0_____depth____CV_32F_0045c648._24_8_; + uVar8 = s_npoints_>__0_____depth____CV_32F_0045c648._16_8_; + uVar7 = s_npoints_>__0_____depth____CV_32F_0045c648._8_8_; + uVar6 = s_npoints_>__0_____depth____CV_32F_0045c648._0_8_; + *(undefined4 *)(pcVar13 + 0x30) = s_npoints_>__0_____depth____CV_32F_0045c648._48_4_; + *(undefined8 *)pcVar13 = uVar6; + *(undefined8 *)(pcVar13 + 8) = uVar7; + *(undefined8 *)(pcVar13 + 0x10) = uVar8; + *(undefined8 *)(pcVar13 + 0x18) = uVar9; + *(undefined8 *)(pcVar13 + 0x20) = uVar10; + *(undefined8 *)(pcVar13 + 0x28) = uVar11; + error(-0xd7,(String *)&local_70,"double cv::contourArea(cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x157); + String::deallocate((String *)&local_70); + } + dVar22 = 0.0; + if (iVar12 != 0) { + if (uVar3 == 5) { + fVar18 = local_50[(long)iVar12 * 2 + -1]; + if (0 < iVar12) { + dVar22 = 0.0; + pfVar16 = local_50; + fVar21 = local_50[(long)iVar12 * 2 + -2]; + do { + fVar20 = *pfVar16; + pfVar1 = pfVar16 + 2; + dVar19 = (double)fVar18; + fVar18 = pfVar16[1]; + dVar22 = dVar22 + ((double)fVar21 * (double)fVar18 - dVar19 * (double)fVar20); + pfVar16 = pfVar1; + fVar21 = fVar20; + } while (pfVar1 != local_50 + ((ulong)(iVar12 - 1) + 1) * 2); + dVar22 = dVar22 * 0.5; + } + } + else { + fVar18 = local_50[(long)iVar12 * 2 + -1]; + if (0 < iVar12) { + dVar22 = 0.0; + pfVar16 = local_50; + fVar21 = local_50[(long)iVar12 * 2 + -2]; + do { + fVar20 = *pfVar16; + pfVar1 = pfVar16 + 2; + dVar19 = (double)(int)fVar18; + fVar18 = pfVar16[1]; + dVar22 = dVar22 + ((double)(int)fVar21 * (double)(int)fVar18 - + dVar19 * (double)(int)fVar20); + pfVar16 = pfVar1; + fVar21 = fVar20; + } while (pfVar1 != local_50 + ((ulong)(iVar12 - 1) + 1) * 2); + dVar22 = dVar22 * 0.5; + } + } + if (!param_2) { + dVar22 = ABS(dVar22); + } + } + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (float *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + puVar15 = local_20; + do { + *puVar15 = 0; + iVar12 = iVar12 + 1; + puVar15 = puVar15 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + auVar17._8_8_ = 0; + auVar17._0_8_ = dVar22; + return auVar17; +} + + +================================================================== + +### FUNC 001ebdd0 (7520 bytes) name=fitEllipse + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::fitEllipse(cv::_InputArray const&) */ + +void __thiscall cv::fitEllipse(cv *this,_InputArray *param_1) + +{ + int *piVar1; + uint uVar2; + int iVar3; + uint uVar4; + char cVar5; + bool bVar6; + undefined1 auVar7 [16]; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined4 uVar12; + undefined2 uVar13; + undefined8 uVar14; + undefined8 uVar15; + float *pfVar16; + int iVar17; + uint uVar18; + char *pcVar19; + ulong uVar20; + float *pfVar21; + double *pdVar22; + double *pdVar23; + undefined8 *puVar24; + Mat **ppMVar25; + uint *puVar26; + undefined4 *puVar27; + Mat *pMVar28; + float *pfVar29; + double *pdVar30; + uint uVar31; + long lVar32; + double *pdVar33; + float *in_x8; + ulong uVar34; + double *pdVar35; + float fVar36; + double dVar37; + double dVar38; + float fVar40; + float fVar41; + float fVar42; + undefined1 auVar39 [16]; + float fVar43; + double dVar44; + float fVar46; + float fVar47; + float fVar49; + undefined1 auVar45 [16]; + double dVar48; + float fVar50; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + undefined1 auVar55 [16]; + float fVar56; + undefined8 local_cd0; + undefined8 local_cc8; + undefined8 local_cc0; + undefined8 local_cb8; + double local_cb0; + double local_ca8; + double local_ca0; + double local_c98; + double local_c90; + double local_c88; + double local_c80; + double local_c78; + double local_c70; + double local_c68; + undefined4 local_c60; + int local_c5c; + uint local_c58; + undefined4 local_c54; + double *local_c50; + double *pdStack_c48; + double *local_c40; + double *pdStack_c38; + undefined8 local_c30; + long lStack_c28; + uint *local_c20; + undefined8 *local_c18; + undefined8 local_c10; + undefined8 uStack_c08; + undefined4 local_c00; + int local_bfc; + uint local_bf8; + undefined4 local_bf4; + double *local_bf0; + double *pdStack_be8; + double *local_be0; + double *pdStack_bd8; + undefined8 local_bd0; + long lStack_bc8; + uint *local_bc0; + undefined8 *local_bb8; + undefined8 local_bb0; + undefined8 uStack_ba8; + undefined8 local_ba0; + Mat *pMStack_b98; + double *local_b90; + double *pdStack_b88; + double *local_b80; + double *pdStack_b78; + undefined8 local_b70; + long lStack_b68; + Mat **local_b60; + undefined8 *local_b58; + undefined8 local_b50; + undefined8 uStack_b48; + undefined8 local_b40; + undefined8 uStack_b38; + double *local_b30; + double *pdStack_b28; + double *local_b20; + double *pdStack_b18; + undefined8 local_b10; + long lStack_b08; + undefined8 *local_b00; + undefined8 *local_af8; + undefined8 local_af0; + undefined8 uStack_ae8; + undefined8 local_ae0; + undefined8 uStack_ad8; + double *local_ad0; + double *pdStack_ac8; + double *local_ac0; + double *pdStack_ab8; + undefined8 local_ab0; + long lStack_aa8; + undefined8 *local_aa0; + undefined8 *local_a98; + undefined8 local_a90; + undefined8 uStack_a88; + undefined8 local_a80; + Mat *pMStack_a78; + double *local_a70; + double *pdStack_a68; + double *local_a60; + double *pdStack_a58; + undefined8 local_a50; + long lStack_a48; + Mat **local_a40; + undefined8 *local_a38; + undefined8 local_a30; + undefined8 uStack_a28; + undefined4 local_a20; + int local_a1c; + undefined8 local_a18; + double *local_a10; + double *pdStack_a08; + double *local_a00; + double *pdStack_9f8; + undefined8 local_9f0; + long lStack_9e8; + undefined8 *local_9e0; + undefined8 *local_9d8; + undefined8 local_9d0; + undefined8 local_9c8; + undefined4 local_9c0; + int local_9bc; + undefined8 local_9b8; + double *local_9b0; + double *pdStack_9a8; + double *local_9a0; + double *pdStack_998; + undefined8 local_990; + long lStack_988; + undefined8 *local_980; + undefined8 *local_978; + undefined8 local_970; + undefined8 local_968; + undefined8 local_960; + Mat *pMStack_958; + double *local_950; + double *pdStack_948; + double *local_940; + double *pdStack_938; + undefined8 local_930; + long lStack_928; + Mat **local_920; + undefined8 *local_918; + undefined8 local_910; + undefined8 uStack_908; + uint local_900; + int local_8fc; + undefined4 local_8f8; + undefined4 local_8f4; + float *local_8f0; + undefined8 local_8e8; + undefined8 local_8e0; + undefined8 local_8d8; + undefined8 local_8d0; + long local_8c8; + undefined4 *local_8c0; + undefined8 *local_8b8; + undefined8 local_8b0; + undefined8 local_8a8; + double *local_8a0; + ulong local_898; + double adStack_890 [136]; + double *local_450; + ulong local_448; + double adStack_440 [136]; + + iVar17 = _InputArray::kind((_InputArray *)this); + if (iVar17 == 0x10000) { + pMVar28 = *(Mat **)(this + 8); + local_8c0 = &local_8f8; + local_8b8 = &local_8b0; + local_900 = *(uint *)pMVar28; + local_8fc = *(int *)(pMVar28 + 4); + local_8f8 = *(undefined4 *)(pMVar28 + 8); + local_8f4 = *(undefined4 *)(pMVar28 + 0xc); + local_8f0 = *(float **)(pMVar28 + 0x10); + local_8e8 = *(undefined8 *)(pMVar28 + 0x18); + local_8e0 = *(undefined8 *)(pMVar28 + 0x20); + local_8d8 = *(undefined8 *)(pMVar28 + 0x28); + local_8d0 = *(undefined8 *)(pMVar28 + 0x30); + local_8c8 = *(long *)(pMVar28 + 0x38); + local_8a8 = 0; + local_8b0 = 0; + if (local_8c8 != 0) { + piVar1 = (int *)(local_8c8 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar28 + 4) < 3) { + local_8b0 = **(undefined8 **)(pMVar28 + 0x48); + local_8a8 = (*(undefined8 **)(pMVar28 + 0x48))[1]; + } + else { + local_8fc = 0; + Mat::copySize((Mat *)&local_900,pMVar28); + } + } + else { + _InputArray::getMat_((int)this); + } + uVar18 = Mat::checkVector((Mat *)&local_900,2,-1,true); + uVar2 = local_900 & 7; + if (((int)uVar18 < 0) || (1 < uVar2 - 4)) { + local_cd0 = 0; + local_cc8 = 0; + pcVar19 = (char *)String::allocate((String *)&local_cd0,0x2e); + uVar13 = s_n_>__0_____depth____CV_32F____de_0045c680._44_2_; + uVar12 = s_n_>__0_____depth____CV_32F____de_0045c680._40_4_; + uVar11 = s_n_>__0_____depth____CV_32F____de_0045c680._24_8_; + uVar10 = s_n_>__0_____depth____CV_32F____de_0045c680._16_8_; + uVar9 = s_n_>__0_____depth____CV_32F____de_0045c680._8_8_; + uVar8 = s_n_>__0_____depth____CV_32F____de_0045c680._0_8_; + *(undefined8 *)(pcVar19 + 0x20) = s_n_>__0_____depth____CV_32F____de_0045c680._32_8_; + *(undefined4 *)(pcVar19 + 0x28) = uVar12; + *(undefined2 *)(pcVar19 + 0x2c) = uVar13; + *(undefined8 *)pcVar19 = uVar8; + *(undefined8 *)(pcVar19 + 8) = uVar9; + *(undefined8 *)(pcVar19 + 0x10) = uVar10; + *(undefined8 *)(pcVar19 + 0x18) = uVar11; + error(-0xd7,(String *)&local_cd0,"cv::RotatedRect cv::fitEllipse(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x176); + String::deallocate((String *)&local_cd0); + } + *in_x8 = 0.0; + in_x8[1] = 0.0; + in_x8[2] = 0.0; + in_x8[3] = 0.0; + in_x8[4] = 0.0; + if ((int)uVar18 < 5) { + local_cc0 = 0; + local_cb8 = 0; + pcVar19 = (char *)String::allocate((String *)&local_cc0,0x34); + uVar15 = s_There_should_be_at_least_5_point_0045c6b0._40_8_; + uVar14 = s_There_should_be_at_least_5_point_0045c6b0._32_8_; + uVar11 = s_There_should_be_at_least_5_point_0045c6b0._24_8_; + uVar10 = s_There_should_be_at_least_5_point_0045c6b0._16_8_; + uVar9 = s_There_should_be_at_least_5_point_0045c6b0._8_8_; + uVar8 = s_There_should_be_at_least_5_point_0045c6b0._0_8_; + *(undefined4 *)(pcVar19 + 0x30) = s_There_should_be_at_least_5_point_0045c6b0._48_4_; + *(undefined8 *)pcVar19 = uVar8; + *(undefined8 *)(pcVar19 + 8) = uVar9; + *(undefined8 *)(pcVar19 + 0x10) = uVar10; + *(undefined8 *)(pcVar19 + 0x18) = uVar11; + *(undefined8 *)(pcVar19 + 0x20) = uVar14; + *(undefined8 *)(pcVar19 + 0x28) = uVar15; + error(-0xc9,(String *)&local_cc0,"cv::RotatedRect cv::fitEllipse(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x17b); + String::deallocate((String *)&local_cc0); + } + pfVar16 = local_8f0; + local_8a0 = adStack_890; + uVar34 = (ulong)(int)(uVar18 * 5); + local_898 = 0x88; + if (0x88 < uVar34) { + uVar20 = uVar34 << 3; + if (0xfe0000000000000 < uVar34) { + uVar20 = 0xffffffffffffffff; + } + local_8a0 = operator_new__(uVar20); + } + uVar20 = (ulong)(int)uVar18; + local_450 = adStack_440; + local_448 = 0x88; + local_898 = uVar34; + if (0x88 < uVar20) { + uVar34 = uVar20 << 3; + if (0xfe0000000000000 < uVar20) { + uVar34 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar34); + } + pdVar23 = local_450; + pdVar35 = local_8a0; + dVar38 = DAT_001edd40; + local_c18 = &local_c10; + local_bb8 = &local_bb0; + pdVar33 = local_450 + uVar20; + local_c40 = local_8a0 + uVar20 * 5; + local_c20 = &local_c58; + uStack_ba8 = _UNK_001edd28; + local_bb0 = _DAT_001edd20; + uStack_c08 = _UNK_001edd18; + local_c10 = _DAT_001edd10; + local_b58 = &local_b50; + local_bf4 = 1; + local_c54 = 5; + local_bc0 = &local_bf8; + local_c5c = 2; + local_b80 = (double *)&local_c60; + local_b60 = &pMStack_b98; + local_c30 = 0; + lStack_c28 = 0; + local_c60 = 0x42ff4006; + local_bfc = 2; + local_bd0 = 0; + lStack_bc8 = 0; + local_c00 = 0x42ff4006; + local_b70 = 0; + uStack_b48 = _UNK_001edd28; + local_b50 = _DAT_001edd20; + lStack_b68 = 0; + pMStack_b98 = _UNK_001edd38; + local_ba0 = _DAT_001edd30; + if ((int)uVar18 < 1) { + fVar56 = 0.0 / (float)(int)uVar18; + fVar50 = fVar56; + } + else { + fVar56 = 0.0; + if (uVar2 == 5) { + fVar50 = 0.0; + pfVar21 = pfVar16; + do { + pfVar29 = pfVar21 + 2; + fVar56 = fVar56 + *pfVar21; + fVar50 = fVar50 + pfVar21[1]; + pfVar21 = pfVar29; + } while (pfVar29 != pfVar16 + ((ulong)(uVar18 - 1) + 1) * 2); + fVar56 = fVar56 / (float)(int)uVar18; + fVar50 = fVar50 / (float)(int)uVar18; + pdVar22 = local_8a0; + pfVar21 = pfVar16 + 1; + pdVar30 = local_450; + do { + fVar36 = pfVar21[-1]; + pfVar29 = pfVar21 + 2; + fVar40 = *pfVar21; + *pdVar30 = dVar38; + dVar37 = (double)(fVar36 - fVar56); + dVar44 = (double)(fVar40 - fVar50); + pdVar22[3] = dVar37; + pdVar22[4] = dVar44; + pdVar22[1] = -(dVar44 * dVar44); + *pdVar22 = dVar37 * -dVar37; + pdVar22[2] = -dVar37 * dVar44; + pdVar22 = pdVar22 + 5; + pfVar21 = pfVar29; + pdVar30 = pdVar30 + 1; + } while (pfVar29 != pfVar16 + (ulong)(uVar18 - 1) * 2 + 3); + } + else { + pfVar21 = pfVar16; + fVar50 = fVar56; + do { + pfVar29 = pfVar21 + 2; + fVar56 = fVar56 + (float)(int)*pfVar21; + fVar50 = fVar50 + (float)(int)pfVar21[1]; + pfVar21 = pfVar29; + } while (pfVar29 != pfVar16 + ((ulong)(uVar18 - 1) + 1) * 2); + fVar56 = fVar56 / (float)(int)uVar18; + fVar50 = fVar50 / (float)(int)uVar18; + pdVar22 = local_8a0; + pfVar21 = pfVar16 + 1; + pdVar30 = local_450; + do { + fVar36 = pfVar21[-1]; + pfVar29 = pfVar21 + 2; + fVar40 = *pfVar21; + *pdVar30 = dVar38; + dVar37 = (double)((float)(int)fVar36 - fVar56); + dVar44 = (double)((float)(int)fVar40 - fVar50); + pdVar22[3] = dVar37; + pdVar22[4] = dVar44; + pdVar22[1] = -(dVar44 * dVar44); + *pdVar22 = dVar37 * -dVar37; + pdVar22[2] = -dVar37 * dVar44; + pdVar22 = pdVar22 + 5; + pfVar21 = pfVar29; + pdVar30 = pdVar30 + 1; + } while (pfVar29 != pfVar16 + (ulong)(uVar18 - 1) * 2 + 3); + } + } + local_a20 = 0x1010000; + local_9c0 = 0x1010000; + local_a10 = (double *)0x0; + local_9b0 = (double *)0x0; + local_950 = (double *)0x0; + local_960 = CONCAT44(local_960._4_4_,0x2010000); + local_c58 = uVar18; + local_c50 = pdVar35; + pdStack_c48 = pdVar35; + pdStack_c38 = local_c40; + local_bf8 = uVar18; + local_bf0 = local_450; + pdStack_be8 = local_450; + local_be0 = pdVar33; + pdStack_bd8 = pdVar33; + local_b90 = &local_c88; + pdStack_b88 = &local_c88; + pdStack_b78 = local_b80; + local_a18 = (Mat *)&local_c60; + local_9b8 = (Mat *)&local_c00; + pMStack_958 = (Mat *)&local_ba0; + local_448 = uVar20; + solve((_InputArray *)&local_a20,(_InputArray *)&local_9c0,(_OutputArray *)&local_960,1); + local_af8 = &local_af0; + local_b20 = pdVar35 + 4; + local_b00 = &uStack_b38; + local_b10 = 0; + uStack_b38 = _UNK_001edd58; + local_b40 = _DAT_001edd50; + lStack_b08 = 0; + uStack_ae8 = _UNK_001edd68; + local_af0 = _DAT_001edd60; + local_b30 = pdVar35; + pdStack_b28 = pdVar35; + pdStack_b18 = local_b20; + if (lStack_c28 != 0) { + piVar1 = (int *)(lStack_c28 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c60); + } + } + puVar24 = local_af8; + lStack_c28 = 0; + local_c50 = (double *)0x0; + pdStack_c38 = (double *)0x0; + local_c40 = (double *)0x0; + pdStack_c48 = (double *)0x0; + if (local_c5c < 1) { +LAB_001ec328: + local_c60 = (undefined4)local_b40; + if (2 < local_b40._4_4_) goto LAB_001ed404; + local_c54 = uStack_b38._4_4_; + local_c58 = (uint)uStack_b38; + local_c5c = local_b40._4_4_; + *local_c18 = *local_af8; + local_c18[1] = puVar24[1]; + } + else { + iVar17 = 0; + puVar26 = local_c20; + do { + *puVar26 = 0; + iVar17 = iVar17 + 1; + puVar26 = puVar26 + 1; + } while (iVar17 < local_c5c); + if (local_c5c < 3) goto LAB_001ec328; +LAB_001ed404: + local_c60 = (undefined4)local_b40; + Mat::copySize((Mat *)&local_c60,(Mat *)&local_b40); + } + pdStack_c38 = pdStack_b18; + local_c40 = local_b20; + lStack_c28 = lStack_b08; + local_c30 = local_b10; + pdStack_c48 = pdStack_b28; + local_c50 = local_b30; + if (lStack_b08 != 0) { + piVar1 = (int *)(lStack_b08 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_b40); + } + } + lStack_b08 = 0; + local_b30 = (double *)0x0; + pdStack_b18 = (double *)0x0; + local_b20 = (double *)0x0; + pdStack_b28 = (double *)0x0; + if (0 < local_b40._4_4_) { + iVar17 = 0; + puVar24 = local_b00; + do { + *(undefined4 *)puVar24 = 0; + iVar17 = iVar17 + 1; + puVar24 = (undefined8 *)((long)puVar24 + 4); + } while (iVar17 < local_b40._4_4_); + } + if (local_af8 != &local_af0) { + fastFree(local_af8); + } + local_a98 = &local_a90; + local_aa0 = &uStack_ad8; + uStack_ad8 = _UNK_001edd78; + local_ae0 = _DAT_001edd70; + local_ac0 = pdVar23 + 2; + local_ab0 = 0; + uStack_a88 = _UNK_001edd28; + local_a90 = _DAT_001edd20; + lStack_aa8 = 0; + local_ad0 = pdVar23; + pdStack_ac8 = pdVar23; + pdStack_ab8 = local_ac0; + if (lStack_bc8 != 0) { + piVar1 = (int *)(lStack_bc8 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c00); + } + } + puVar24 = local_a98; + lStack_bc8 = 0; + local_bf0 = (double *)0x0; + pdStack_bd8 = (double *)0x0; + local_be0 = (double *)0x0; + pdStack_be8 = (double *)0x0; + if (local_bfc < 1) { +LAB_001ec4c0: + local_c00 = (undefined4)local_ae0; + if (2 < local_ae0._4_4_) goto LAB_001ed414; + local_bf4 = uStack_ad8._4_4_; + local_bf8 = (uint)uStack_ad8; + local_bfc = local_ae0._4_4_; + *local_bb8 = *local_a98; + local_bb8[1] = puVar24[1]; + } + else { + iVar17 = 0; + puVar26 = local_bc0; + do { + *puVar26 = 0; + iVar17 = iVar17 + 1; + puVar26 = puVar26 + 1; + } while (iVar17 < local_bfc); + if (local_bfc < 3) goto LAB_001ec4c0; +LAB_001ed414: + local_c00 = (undefined4)local_ae0; + Mat::copySize((Mat *)&local_c00,(Mat *)&local_ae0); + } + pdStack_bd8 = pdStack_ab8; + local_be0 = local_ac0; + lStack_bc8 = lStack_aa8; + local_bd0 = local_ab0; + pdStack_be8 = pdStack_ac8; + local_bf0 = local_ad0; + if (lStack_aa8 != 0) { + piVar1 = (int *)(lStack_aa8 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_ae0); + } + } + lStack_aa8 = 0; + local_ad0 = (double *)0x0; + pdStack_ab8 = (double *)0x0; + local_ac0 = (double *)0x0; + pdStack_ac8 = (double *)0x0; + if (0 < local_ae0._4_4_) { + iVar17 = 0; + puVar24 = local_aa0; + do { + *(undefined4 *)puVar24 = 0; + iVar17 = iVar17 + 1; + puVar24 = (undefined8 *)((long)puVar24 + 4); + } while (iVar17 < local_ae0._4_4_); + } + if (local_a98 != &local_a90) { + fastFree(local_a98); + } + local_a38 = &local_a30; + local_a60 = &local_ca0; + local_a40 = &pMStack_a78; + local_a50 = 0; + pMStack_a78 = _UNK_001edd78; + local_a80 = _DAT_001edd70; + lStack_a48 = 0; + uStack_a28 = _UNK_001edd28; + local_a30 = _DAT_001edd20; + local_a70 = &local_cb0; + pdStack_a68 = &local_cb0; + pdStack_a58 = local_a60; + if (lStack_b68 != 0) { + piVar1 = (int *)(lStack_b68 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_ba0); + } + } + puVar24 = local_a38; + lStack_b68 = 0; + local_b90 = (double *)0x0; + pdStack_b78 = (double *)0x0; + local_b80 = (double *)0x0; + pdStack_b88 = (double *)0x0; + if (local_ba0._4_4_ < 1) { +LAB_001ec654: + if (2 < local_a80._4_4_) goto LAB_001ed444; + pMStack_b98 = pMStack_a78; + local_ba0 = local_a80; + *local_b58 = *local_a38; + local_b58[1] = puVar24[1]; + } + else { + iVar17 = 0; + ppMVar25 = local_b60; + do { + *(undefined4 *)ppMVar25 = 0; + iVar17 = iVar17 + 1; + ppMVar25 = (Mat **)((long)ppMVar25 + 4); + } while (iVar17 < local_ba0._4_4_); + if (local_ba0._4_4_ < 3) goto LAB_001ec654; +LAB_001ed444: + local_ba0 = CONCAT44(local_ba0._4_4_,(undefined4)local_a80); + Mat::copySize((Mat *)&local_ba0,(Mat *)&local_a80); + } + pdStack_b78 = pdStack_a58; + local_b80 = local_a60; + lStack_b68 = lStack_a48; + local_b70 = local_a50; + pdStack_b88 = pdStack_a68; + local_b90 = local_a70; + if (lStack_a48 != 0) { + piVar1 = (int *)(lStack_a48 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_a80); + } + } + lStack_a48 = 0; + local_a70 = (double *)0x0; + pdStack_a58 = (double *)0x0; + local_a60 = (double *)0x0; + pdStack_a68 = (double *)0x0; + if (0 < local_a80._4_4_) { + iVar17 = 0; + ppMVar25 = local_a40; + do { + *(undefined4 *)ppMVar25 = 0; + iVar17 = iVar17 + 1; + ppMVar25 = (Mat **)((long)ppMVar25 + 4); + } while (iVar17 < local_a80._4_4_); + } + if (local_a38 != &local_a30) { + fastFree(local_a38); + } + *pdVar35 = local_c88 + local_c88; + pdVar35[2] = local_c78; + pdVar35[1] = local_c78; + pdVar35[3] = local_c80 + local_c80; + *pdVar23 = local_c70; + pdVar23[1] = local_c68; + local_a20 = 0x1010000; + local_9c0 = 0x1010000; + local_a10 = (double *)0x0; + local_9b0 = (double *)0x0; + local_950 = (double *)0x0; + local_960 = CONCAT44(local_960._4_4_,0x2010000); + local_a18 = (Mat *)&local_c60; + local_9b8 = (Mat *)&local_c00; + pMStack_958 = (Mat *)&local_ba0; + solve((_InputArray *)&local_a20,(_InputArray *)&local_9c0,(_OutputArray *)&local_960,1); + local_a20 = 0x42ff4006; + local_9e0 = &local_a18; + local_9d8 = &local_9d0; + local_a1c = 2; + local_a00 = pdVar35 + uVar20 * 3; + local_9d0 = 0x18; + local_a18._4_4_ = 3; + local_9f0 = 0; + lStack_9e8 = 0; + local_9c8 = 8; + local_a10 = pdVar35; + pdStack_a08 = pdVar35; + pdStack_9f8 = local_a00; + local_a18._0_4_ = uVar18; + if (lStack_c28 != 0) { + piVar1 = (int *)(lStack_c28 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c60); + } + } + puVar24 = local_9d8; + lStack_c28 = 0; + local_c50 = (double *)0x0; + pdStack_c38 = (double *)0x0; + local_c40 = (double *)0x0; + pdStack_c48 = (double *)0x0; + if (local_c5c < 1) { +LAB_001ec88c: + local_c60 = local_a20; + if (2 < local_a1c) goto LAB_001ed434; + local_c54 = local_a18._4_4_; + local_c58 = (uint)local_a18; + local_c5c = local_a1c; + *local_c18 = *local_9d8; + local_c18[1] = puVar24[1]; + } + else { + iVar17 = 0; + puVar26 = local_c20; + do { + *puVar26 = 0; + iVar17 = iVar17 + 1; + puVar26 = puVar26 + 1; + } while (iVar17 < local_c5c); + if (local_c5c < 3) goto LAB_001ec88c; +LAB_001ed434: + local_c60 = local_a20; + Mat::copySize((Mat *)&local_c60,(Mat *)&local_a20); + } + pdStack_c38 = pdStack_9f8; + local_c40 = local_a00; + lStack_c28 = lStack_9e8; + local_c30 = local_9f0; + pdStack_c48 = pdStack_a08; + local_c50 = local_a10; + if (lStack_9e8 != 0) { + piVar1 = (int *)(lStack_9e8 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_a20); + } + } + lStack_9e8 = 0; + local_a10 = (double *)0x0; + pdStack_9f8 = (double *)0x0; + local_a00 = (double *)0x0; + pdStack_a08 = (double *)0x0; + if (0 < local_a1c) { + iVar17 = 0; + puVar24 = local_9e0; + do { + *(undefined4 *)puVar24 = 0; + iVar17 = iVar17 + 1; + puVar24 = (undefined8 *)((long)puVar24 + 4); + } while (iVar17 < local_a1c); + } + if (local_9d8 != &local_9d0) { + fastFree(local_9d8); + } + local_980 = &local_9b8; + local_970 = 8; + local_978 = &local_970; + local_968 = 8; + local_9bc = 2; + local_9b8._4_4_ = 1; + local_990 = 0; + lStack_988 = 0; + local_9c0 = 0x42ff4006; + local_9b0 = pdVar23; + pdStack_9a8 = pdVar23; + local_9a0 = pdVar33; + pdStack_998 = pdVar33; + local_9b8._0_4_ = uVar18; + if (lStack_bc8 != 0) { + piVar1 = (int *)(lStack_bc8 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c00); + } + } + puVar24 = local_978; + lStack_bc8 = 0; + local_bf0 = (double *)0x0; + pdStack_bd8 = (double *)0x0; + local_be0 = (double *)0x0; + pdStack_be8 = (double *)0x0; + if (local_bfc < 1) { +LAB_001eca30: + local_c00 = local_9c0; + if (2 < local_9bc) goto LAB_001ed424; + local_bf4 = local_9b8._4_4_; + local_bf8 = (uint)local_9b8; + local_bfc = local_9bc; + *local_bb8 = *local_978; + local_bb8[1] = puVar24[1]; + } + else { + iVar17 = 0; + puVar26 = local_bc0; + do { + *puVar26 = 0; + iVar17 = iVar17 + 1; + puVar26 = puVar26 + 1; + } while (iVar17 < local_bfc); + if (local_bfc < 3) goto LAB_001eca30; +LAB_001ed424: + local_c00 = local_9c0; + Mat::copySize((Mat *)&local_c00,(Mat *)&local_9c0); + } + pdStack_bd8 = pdStack_998; + local_be0 = local_9a0; + lStack_bc8 = lStack_988; + local_bd0 = local_990; + pdStack_be8 = pdStack_9a8; + local_bf0 = local_9b0; + if (lStack_988 != 0) { + piVar1 = (int *)(lStack_988 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_9c0); + } + } + lStack_988 = 0; + local_9b0 = (double *)0x0; + pdStack_998 = (double *)0x0; + local_9a0 = (double *)0x0; + pdStack_9a8 = (double *)0x0; + if (0 < local_9bc) { + iVar17 = 0; + puVar24 = local_980; + do { + *(undefined4 *)puVar24 = 0; + iVar17 = iVar17 + 1; + puVar24 = (undefined8 *)((long)puVar24 + 4); + } while (iVar17 < local_9bc); + } + if (local_978 != &local_970) { + fastFree(local_978); + } + local_918 = &local_910; + local_920 = &pMStack_958; + local_940 = &local_c70; + uStack_908 = _UNK_001edd28; + local_910 = _DAT_001edd20; + local_930 = 0; + lStack_928 = 0; + pMStack_958 = _UNK_001edd88; + local_960 = _DAT_001edd80; + local_950 = &local_c88; + pdStack_948 = &local_c88; + pdStack_938 = local_940; + if (lStack_b68 != 0) { + piVar1 = (int *)(lStack_b68 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_ba0); + } + } + puVar24 = local_918; + lStack_b68 = 0; + local_b90 = (double *)0x0; + pdStack_b78 = (double *)0x0; + local_b80 = (double *)0x0; + pdStack_b88 = (double *)0x0; + if (local_ba0._4_4_ < 1) { +LAB_001ecbc4: + if (local_960._4_4_ < 3) { + pMStack_b98 = pMStack_958; + local_ba0 = local_960; + *local_b58 = *local_918; + local_b58[1] = puVar24[1]; + goto LAB_001ecbfc; + } + } + else { + iVar17 = 0; + ppMVar25 = local_b60; + do { + *(undefined4 *)ppMVar25 = 0; + iVar17 = iVar17 + 1; + ppMVar25 = (Mat **)((long)ppMVar25 + 4); + } while (iVar17 < local_ba0._4_4_); + if (local_ba0._4_4_ < 3) goto LAB_001ecbc4; + } + local_ba0 = CONCAT44(local_ba0._4_4_,(undefined4)local_960); + Mat::copySize((Mat *)&local_ba0,(Mat *)&local_960); +LAB_001ecbfc: + pdStack_b78 = pdStack_938; + local_b80 = local_940; + lStack_b68 = lStack_928; + local_b70 = local_930; + pdStack_b88 = pdStack_948; + local_b90 = local_950; + if (lStack_928 != 0) { + piVar1 = (int *)(lStack_928 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_960); + } + } + lStack_928 = 0; + local_950 = (double *)0x0; + pdStack_938 = (double *)0x0; + local_940 = (double *)0x0; + pdStack_948 = (double *)0x0; + if (0 < local_960._4_4_) { + iVar17 = 0; + ppMVar25 = local_920; + do { + *(undefined4 *)ppMVar25 = 0; + iVar17 = iVar17 + 1; + ppMVar25 = (Mat **)((long)ppMVar25 + 4); + } while (iVar17 < local_960._4_4_); + } + if (local_918 != &local_910) { + fastFree(local_918); + } + if (0 < (int)uVar18) { + if (uVar2 == 5) { + if (((uVar18 < 5 || &local_cb0 < pdVar35 + uVar20 * 3 && pdVar35 < &local_ca0) || + &local_cb0 < pdVar23 + uVar20 && pdVar23 < &local_ca0) || + (pdVar35 < pdVar23 + uVar20 && pdVar23 < pdVar35 + uVar20 * 3)) { + pfVar21 = pfVar16 + 1; + do { + fVar36 = pfVar21[-1]; + pfVar29 = pfVar21 + 2; + fVar40 = *pfVar21; + *pdVar23 = 1.0; + dVar38 = (double)(fVar36 - fVar56) - local_cb0; + *pdVar35 = dVar38 * dVar38; + dVar38 = (double)(fVar40 - fVar50) - local_ca8; + pdVar35[1] = dVar38 * dVar38; + pdVar35[2] = ((double)(fVar36 - fVar56) - local_cb0) * + ((double)(fVar40 - fVar50) - local_ca8); + pdVar23 = pdVar23 + 1; + pfVar21 = pfVar29; + pdVar35 = pdVar35 + 3; + } while (pfVar29 != pfVar16 + (ulong)(uVar18 - 1) * 2 + 3); + } + else { + uVar2 = (uVar18 - 4 >> 2) + 1; + auVar55 = NEON_fmov(0x3ff0000000000000,8); + uVar31 = 0; + uVar4 = uVar2 * 4; + pdVar33 = pdVar35; + pdVar22 = pdVar23; + pfVar21 = pfVar16; + do { + fVar36 = *pfVar21; + fVar43 = pfVar21[1]; + fVar40 = pfVar21[2]; + fVar46 = pfVar21[3]; + fVar41 = pfVar21[4]; + fVar47 = pfVar21[5]; + fVar42 = pfVar21[6]; + fVar49 = pfVar21[7]; + pfVar21 = pfVar21 + 8; + uVar31 = uVar31 + 1; + pdVar22[1] = auVar55._8_8_; + *pdVar22 = auVar55._0_8_; + pdVar22[3] = auVar55._8_8_; + pdVar22[2] = auVar55._0_8_; + dVar53 = (double)(fVar36 - fVar56) - local_cb0; + dVar54 = (double)(fVar40 - fVar56) - local_cb0; + dVar44 = (double)(fVar41 - fVar56) - local_cb0; + dVar48 = (double)(fVar42 - fVar56) - local_cb0; + dVar51 = (double)(fVar43 - fVar50) - local_ca8; + dVar52 = (double)(fVar46 - fVar50) - local_ca8; + dVar38 = (double)(fVar47 - fVar50) - local_ca8; + dVar37 = (double)(fVar49 - fVar50) - local_ca8; + *pdVar33 = dVar53 * dVar53; + pdVar33[1] = dVar51 * dVar51; + pdVar33[2] = dVar53 * dVar51; + pdVar33[3] = dVar54 * dVar54; + pdVar33[4] = dVar52 * dVar52; + pdVar33[5] = dVar54 * dVar52; + pdVar33[6] = dVar44 * dVar44; + pdVar33[7] = dVar38 * dVar38; + pdVar33[8] = dVar44 * dVar38; + pdVar33[9] = dVar48 * dVar48; + pdVar33[10] = dVar37 * dVar37; + pdVar33[0xb] = dVar48 * dVar37; + pdVar33 = pdVar33 + 0xc; + pdVar22 = pdVar22 + 4; + } while (uVar31 < uVar2); + if (uVar4 != uVar18) { + uVar34 = -(ulong)((uVar2 & 0x3fffffff) >> 0x1d) & 0xfffffff800000000 | (ulong)uVar4 << 3; + fVar36 = *(float *)((long)pfVar16 + uVar34); + lVar32 = (long)(int)(uVar2 * 0xc); + fVar40 = *(float *)((long)pfVar16 + uVar34 + 4); + *(undefined8 *)((long)pdVar23 + uVar34) = 0x3ff0000000000000; + dVar38 = (double)(fVar36 - fVar56); + dVar44 = dVar38 - local_cb0; + dVar37 = (double)(fVar40 - fVar50); + pdVar35[lVar32] = dVar44 * dVar44; + dVar44 = dVar37 - local_ca8; + pdVar35[lVar32 + 1] = dVar44 * dVar44; + pdVar35[lVar32 + 2] = (dVar38 - local_cb0) * (dVar37 - local_ca8); + if ((int)(uVar4 + 1) < (int)uVar18) { + fVar36 = *(float *)((long)pfVar16 + uVar34 + 8); + lVar32 = (long)(int)((uVar4 + 1) * 3); + fVar40 = *(float *)((long)pfVar16 + uVar34 + 0xc); + *(undefined8 *)((long)pdVar23 + uVar34 + 8) = 0x3ff0000000000000; + dVar38 = (double)(fVar36 - fVar56); + dVar37 = (double)(fVar40 - fVar50); + dVar44 = dVar38 - local_cb0; + pdVar35[lVar32] = dVar44 * dVar44; + dVar44 = dVar37 - local_ca8; + pdVar35[lVar32 + 1] = dVar44 * dVar44; + pdVar35[lVar32 + 2] = (dVar38 - local_cb0) * (dVar37 - local_ca8); + if ((int)(uVar4 + 2) < (int)uVar18) { + fVar36 = *(float *)((long)pfVar16 + uVar34 + 0x10); + lVar32 = (long)(int)((uVar4 + 2) * 3); + fVar40 = *(float *)((long)pfVar16 + uVar34 + 0x14); + *(undefined8 *)((long)pdVar23 + uVar34 + 0x10) = 0x3ff0000000000000; + dVar38 = (double)(fVar36 - fVar56); + dVar44 = dVar38 - local_cb0; + dVar37 = (double)(fVar40 - fVar50); + pdVar35[lVar32] = dVar44 * dVar44; + dVar44 = dVar37 - local_ca8; + pdVar35[lVar32 + 1] = dVar44 * dVar44; + pdVar35[lVar32 + 2] = (dVar38 - local_cb0) * (dVar37 - local_ca8); + } + } + } + } + } + else if (((uVar18 < 5 || &local_cb0 < pdVar35 + uVar20 * 3 && pdVar35 < &local_ca0) || + &local_cb0 < pdVar23 + uVar20 && pdVar23 < &local_ca0) || + (pdVar35 < pdVar23 + uVar20 && pdVar23 < pdVar35 + uVar20 * 3)) { + pfVar21 = pfVar16 + 1; + do { + fVar36 = pfVar21[-1]; + pfVar29 = pfVar21 + 2; + fVar40 = *pfVar21; + *pdVar23 = 1.0; + dVar38 = (double)((float)(int)fVar36 - fVar56) - local_cb0; + *pdVar35 = dVar38 * dVar38; + dVar38 = (double)((float)(int)fVar40 - fVar50) - local_ca8; + pdVar35[1] = dVar38 * dVar38; + pdVar35[2] = ((double)((float)(int)fVar36 - fVar56) - local_cb0) * + ((double)((float)(int)fVar40 - fVar50) - local_ca8); + pdVar23 = pdVar23 + 1; + pfVar21 = pfVar29; + pdVar35 = pdVar35 + 3; + } while (pfVar29 != pfVar16 + (ulong)(uVar18 - 1) * 2 + 3); + } + else { + uVar2 = (uVar18 - 4 >> 2) + 1; + auVar55 = NEON_fmov(0x3ff0000000000000,8); + uVar31 = 0; + uVar4 = uVar2 * 4; + pdVar33 = pdVar23; + pdVar22 = pdVar35; + pfVar21 = pfVar16; + do { + fVar36 = *pfVar21; + fVar43 = pfVar21[1]; + fVar40 = pfVar21[2]; + fVar46 = pfVar21[3]; + fVar41 = pfVar21[4]; + fVar47 = pfVar21[5]; + fVar42 = pfVar21[6]; + fVar49 = pfVar21[7]; + pfVar21 = pfVar21 + 8; + uVar31 = uVar31 + 1; + pdVar33[1] = auVar55._8_8_; + *pdVar33 = auVar55._0_8_; + pdVar33[3] = auVar55._8_8_; + pdVar33[2] = auVar55._0_8_; + auVar39[4] = SUB41(fVar40,0); + auVar39._0_4_ = fVar36; + auVar39[5] = (char)((uint)fVar40 >> 8); + auVar39[6] = (char)((uint)fVar40 >> 0x10); + auVar39[7] = (char)((uint)fVar40 >> 0x18); + auVar39[8] = SUB41(fVar41,0); + auVar39[9] = (char)((uint)fVar41 >> 8); + auVar39[10] = (char)((uint)fVar41 >> 0x10); + auVar39[0xb] = (char)((uint)fVar41 >> 0x18); + auVar39[0xc] = SUB41(fVar42,0); + auVar39[0xd] = (char)((uint)fVar42 >> 8); + auVar39[0xe] = (char)((uint)fVar42 >> 0x10); + auVar39[0xf] = (char)((uint)fVar42 >> 0x18); + auVar45 = NEON_scvtf(auVar39,4); + auVar7[4] = SUB41(fVar46,0); + auVar7._0_4_ = fVar43; + auVar7[5] = (char)((uint)fVar46 >> 8); + auVar7[6] = (char)((uint)fVar46 >> 0x10); + auVar7[7] = (char)((uint)fVar46 >> 0x18); + auVar7[8] = SUB41(fVar47,0); + auVar7[9] = (char)((uint)fVar47 >> 8); + auVar7[10] = (char)((uint)fVar47 >> 0x10); + auVar7[0xb] = (char)((uint)fVar47 >> 0x18); + auVar7[0xc] = SUB41(fVar49,0); + auVar7[0xd] = (char)((uint)fVar49 >> 8); + auVar7[0xe] = (char)((uint)fVar49 >> 0x10); + auVar7[0xf] = (char)((uint)fVar49 >> 0x18); + auVar39 = NEON_scvtf(auVar7,4); + dVar53 = (double)(auVar45._0_4_ - fVar56) - local_cb0; + dVar54 = (double)(auVar45._4_4_ - fVar56) - local_cb0; + dVar44 = (double)(auVar45._8_4_ - fVar56) - local_cb0; + dVar48 = (double)(auVar45._12_4_ - fVar56) - local_cb0; + dVar51 = (double)(auVar39._0_4_ - fVar50) - local_ca8; + dVar52 = (double)(auVar39._4_4_ - fVar50) - local_ca8; + dVar38 = (double)(auVar39._8_4_ - fVar50) - local_ca8; + dVar37 = (double)(auVar39._12_4_ - fVar50) - local_ca8; + *pdVar22 = dVar53 * dVar53; + pdVar22[1] = dVar51 * dVar51; + pdVar22[2] = dVar53 * dVar51; + pdVar22[3] = dVar54 * dVar54; + pdVar22[4] = dVar52 * dVar52; + pdVar22[5] = dVar54 * dVar52; + pdVar22[6] = dVar44 * dVar44; + pdVar22[7] = dVar38 * dVar38; + pdVar22[8] = dVar44 * dVar38; + pdVar22[9] = dVar48 * dVar48; + pdVar22[10] = dVar37 * dVar37; + pdVar22[0xb] = dVar48 * dVar37; + pdVar33 = pdVar33 + 4; + pdVar22 = pdVar22 + 0xc; + } while (uVar31 < uVar2); + if (uVar4 != uVar18) { + uVar34 = -(ulong)((uVar2 & 0x3fffffff) >> 0x1d) & 0xfffffff800000000 | (ulong)uVar4 << 3; + iVar3 = *(int *)((long)pfVar16 + uVar34); + lVar32 = (long)(int)(uVar2 * 0xc); + iVar17 = *(int *)((long)pfVar16 + uVar34 + 4); + *(undefined8 *)((long)pdVar23 + uVar34) = 0x3ff0000000000000; + dVar38 = (double)((float)iVar3 - fVar56); + dVar37 = (double)((float)iVar17 - fVar50); + dVar44 = dVar38 - local_cb0; + pdVar35[lVar32] = dVar44 * dVar44; + dVar44 = dVar37 - local_ca8; + pdVar35[lVar32 + 1] = dVar44 * dVar44; + pdVar35[lVar32 + 2] = (dVar38 - local_cb0) * (dVar37 - local_ca8); + if ((int)(uVar4 + 1) < (int)uVar18) { + lVar32 = (long)(int)((uVar4 + 1) * 3); + iVar3 = *(int *)((long)pfVar16 + uVar34 + 8); + iVar17 = *(int *)((long)pfVar16 + uVar34 + 0xc); + *(undefined8 *)((long)pdVar23 + uVar34 + 8) = 0x3ff0000000000000; + dVar38 = (double)((float)iVar3 - fVar56); + dVar37 = (double)((float)iVar17 - fVar50); + dVar44 = dVar38 - local_cb0; + pdVar35[lVar32] = dVar44 * dVar44; + dVar44 = dVar37 - local_ca8; + pdVar35[lVar32 + 1] = dVar44 * dVar44; + pdVar35[lVar32 + 2] = (dVar38 - local_cb0) * (dVar37 - local_ca8); + if ((int)(uVar4 + 2) < (int)uVar18) { + iVar3 = *(int *)((long)pfVar16 + uVar34 + 0x10); + lVar32 = (long)(int)((uVar4 + 2) * 3); + iVar17 = *(int *)((long)pfVar16 + uVar34 + 0x14); + *(undefined8 *)((long)pdVar23 + uVar34 + 0x10) = 0x3ff0000000000000; + dVar38 = (double)((float)iVar3 - fVar56); + dVar37 = (double)((float)iVar17 - fVar50); + dVar44 = dVar38 - local_cb0; + pdVar35[lVar32] = dVar44 * dVar44; + dVar44 = dVar37 - local_ca8; + pdVar35[lVar32 + 1] = dVar44 * dVar44; + pdVar35[lVar32 + 2] = (dVar38 - local_cb0) * (dVar37 - local_ca8); + } + } + } + } + } + local_a20 = 0x1010000; + local_9c0 = 0x1010000; + local_a10 = (double *)0x0; + local_9b0 = (double *)0x0; + local_950 = (double *)0x0; + local_960 = CONCAT44(local_960._4_4_,0x2010000); + local_a18 = (Mat *)&local_c60; + local_9b8 = (Mat *)&local_c00; + pMStack_958 = (Mat *)&local_ba0; + solve((_InputArray *)&local_a20,(_InputArray *)&local_9c0,(_OutputArray *)&local_960,1); + local_c90 = atan2(local_c78,local_c80 - local_c88); + dVar38 = DAT_001edd90; + local_c90 = local_c90 * -0.5; + if (ABS(local_c78) <= DAT_001edd90) { + local_c78 = local_c80 - local_c88; + dVar37 = local_c80 + local_c88; + local_ca0 = dVar37 - local_c78; + } + else { + dVar37 = sin(local_c90 * -2.0); + local_c78 = local_c78 / dVar37; + dVar37 = local_c80 + local_c88; + local_ca0 = dVar37 - local_c78; + } + local_ca0 = ABS(local_ca0); + if (dVar38 < local_ca0) { + dVar44 = SQRT(2.0 / local_ca0); + if (NAN(dVar44)) { + dVar44 = ::sqrt(2.0 / local_ca0); + } + dVar37 = local_c88 + local_c80; + local_ca0 = dVar44; + } + local_c98 = ABS(local_c78 + dVar37); + dVar37 = local_c98; + if (dVar38 < local_c98) { + dVar37 = SQRT(2.0 / local_c98); + if (NAN(dVar37)) { + dVar37 = ::sqrt(2.0 / local_c98); + } + } + local_c98 = dVar37; + fVar36 = (float)(local_ca0 + local_ca0); + fVar40 = (float)(local_c98 + local_c98); + in_x8[2] = fVar36; + *in_x8 = fVar56 + (float)local_cb0; + in_x8[1] = fVar50 + (float)local_ca8; + in_x8[3] = fVar40; + if (fVar40 < fVar36) { + dVar37 = local_c90 * DAT_001edd98; + in_x8[3] = fVar36; + dVar38 = DAT_001edda0; + in_x8[2] = fVar40; + fVar50 = (float)(dVar37 / dVar38 + DAT_001edda8); + in_x8[4] = fVar50; + } + else { + fVar50 = in_x8[4]; + } + fVar56 = DAT_001eddb4; + if (fVar50 < DAT_001eddb0) { + fVar50 = fVar50 + DAT_001eddb4; + in_x8[4] = fVar50; + } + if (fVar56 < fVar50) { + in_x8[4] = fVar50 - fVar56; + } + if (lStack_b68 != 0) { + piVar1 = (int *)(lStack_b68 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_ba0); + } + } + lStack_b68 = 0; + local_b90 = (double *)0x0; + pdStack_b78 = (double *)0x0; + local_b80 = (double *)0x0; + pdStack_b88 = (double *)0x0; + if (0 < local_ba0._4_4_) { + iVar17 = 0; + ppMVar25 = local_b60; + do { + *(undefined4 *)ppMVar25 = 0; + iVar17 = iVar17 + 1; + ppMVar25 = (Mat **)((long)ppMVar25 + 4); + } while (iVar17 < local_ba0._4_4_); + } + if (local_b58 != &local_b50) { + fastFree(local_b58); + } + if (lStack_bc8 != 0) { + piVar1 = (int *)(lStack_bc8 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c00); + } + } + lStack_bc8 = 0; + local_bf0 = (double *)0x0; + pdStack_bd8 = (double *)0x0; + local_be0 = (double *)0x0; + pdStack_be8 = (double *)0x0; + if (0 < local_bfc) { + iVar17 = 0; + puVar26 = local_bc0; + do { + *puVar26 = 0; + iVar17 = iVar17 + 1; + puVar26 = puVar26 + 1; + } while (iVar17 < local_bfc); + } + if (local_bb8 != &local_bb0) { + fastFree(local_bb8); + } + if (lStack_c28 != 0) { + piVar1 = (int *)(lStack_c28 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c60); + } + } + lStack_c28 = 0; + local_c50 = (double *)0x0; + pdStack_c38 = (double *)0x0; + local_c40 = (double *)0x0; + pdStack_c48 = (double *)0x0; + if (0 < local_c5c) { + iVar17 = 0; + puVar26 = local_c20; + do { + *puVar26 = 0; + iVar17 = iVar17 + 1; + puVar26 = puVar26 + 1; + } while (iVar17 < local_c5c); + } + if (local_c18 != &local_c10) { + fastFree(local_c18); + } + if ((local_450 != adStack_440) && (local_450 != (double *)0x0)) { + operator_delete__(local_450); + } + if ((local_8a0 != adStack_890) && (local_8a0 != (double *)0x0)) { + operator_delete__(local_8a0); + } + if (local_8c8 != 0) { + piVar1 = (int *)(local_8c8 + 0x14); + do { + iVar17 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar17 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_900); + } + } + local_8c8 = 0; + local_8f0 = (float *)0x0; + local_8d8 = 0; + local_8e0 = 0; + local_8e8 = 0; + if (0 < local_8fc) { + iVar17 = 0; + puVar27 = local_8c0; + do { + *puVar27 = 0; + iVar17 = iVar17 + 1; + puVar27 = puVar27 + 1; + } while (iVar17 < local_8fc); + } + if (local_8b8 != &local_8b0) { + fastFree(local_8b8); + } + return; +} + + +================================================================== + +### FUNC 001eddc0 (2672 bytes) name=boundingRect + +/* cv::boundingRect(cv::_InputArray const&) */ + +void __thiscall cv::boundingRect(cv *this,_InputArray *param_1) + +{ + char cVar1; + bool bVar2; + undefined1 auVar3 [16]; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + uint uVar11; + int iVar12; + uint uVar13; + uint uVar14; + int iVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined2 uVar22; + int iVar23; + int iVar24; + int iVar25; + char *pcVar26; + ulong uVar27; + int iVar28; + Mat *pMVar29; + uint *puVar30; + int *piVar31; + uint *puVar32; + long lVar33; + long lVar34; + int iVar35; + int iVar36; + uint uVar37; + uint uVar38; + uint uVar39; + ulong uVar40; + int *piVar41; + undefined8 *in_x8; + int iVar42; + int iVar43; + uint uVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + uint uVar47; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + uint uVar50; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + uint uVar53; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + byte bVar56; + byte bVar57; + byte bVar58; + byte bVar59; + byte bVar60; + undefined1 uVar61; + byte bVar62; + undefined1 uVar63; + byte bVar64; + undefined1 uVar65; + byte bVar66; + byte bVar67; + undefined1 uVar68; + byte bVar69; + undefined1 uVar70; + byte bVar71; + undefined1 uVar72; + byte bVar73; + byte bVar74; + undefined1 uVar75; + byte bVar76; + undefined1 uVar77; + byte bVar78; + undefined1 uVar79; + byte bVar80; + byte bVar81; + byte bVar82; + byte bVar83; + byte bVar84; + byte bVar85; + undefined1 uVar86; + byte bVar87; + undefined1 uVar88; + byte bVar89; + undefined1 uVar90; + byte bVar91; + byte bVar92; + undefined1 uVar93; + byte bVar94; + undefined1 uVar95; + byte bVar96; + undefined1 uVar97; + byte bVar98; + byte bVar99; + undefined1 uVar100; + byte bVar101; + undefined1 uVar102; + byte bVar103; + undefined1 uVar104; + byte bVar105; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + undefined4 local_54; + uint *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + long *local_18; + long local_10; + long local_8; + + iVar23 = _InputArray::kind((_InputArray *)this); + if (iVar23 == 0x10000) { + pMVar29 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar29; + local_5c = *(int *)(pMVar29 + 4); + local_58 = *(int *)(pMVar29 + 8); + local_54 = *(undefined4 *)(pMVar29 + 0xc); + local_50 = *(uint **)(pMVar29 + 0x10); + local_48 = *(undefined8 *)(pMVar29 + 0x18); + local_40 = *(undefined8 *)(pMVar29 + 0x20); + local_38 = *(undefined8 *)(pMVar29 + 0x28); + local_30 = *(undefined8 *)(pMVar29 + 0x30); + local_28 = *(long *)(pMVar29 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar41 = (int *)(local_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar2) { + *piVar41 = *piVar41 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar29 + 4) < 3) { + local_10 = **(long **)(pMVar29 + 0x48); + local_8 = (*(long **)(pMVar29 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar29); + } + } + else { + _InputArray::getMat_((int)this); + } + if ((local_60 & 7) == 0) { + uVar47 = local_60 & 7; + if ((local_60 >> 3 & 0x1ff) != 0) { + local_80 = 0; + local_78 = 0; + pcVar26 = (char *)String::allocate((String *)&local_80,0x2b); + cVar1 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8[0x2a]; + uVar22 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._40_2_; + uVar19 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._24_8_; + uVar18 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._16_8_; + uVar17 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._8_8_; + uVar16 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._0_8_; + *(undefined8 *)(pcVar26 + 0x20) = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._32_8_; + *(undefined2 *)(pcVar26 + 0x28) = uVar22; + pcVar26[0x2a] = cVar1; + *(undefined8 *)pcVar26 = uVar16; + *(undefined8 *)(pcVar26 + 8) = uVar17; + *(undefined8 *)(pcVar26 + 0x10) = uVar18; + *(undefined8 *)(pcVar26 + 0x18) = uVar19; + error(-0xd7,(String *)&local_80,"cv::Rect cv::maskBoundingRect(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x25d); + String::deallocate((String *)&local_80); + } + iVar23 = local_20[1]; + if (*local_20 < 1) { + iVar25 = 0; + iVar43 = 0; + iVar24 = 0; + } + else { + iVar25 = -1; + iVar43 = -1; + iVar36 = -1; + iVar42 = 0; + puVar32 = local_50; + iVar24 = iVar23; + do { + piVar41 = (int *)((long)puVar32 + 3U & 0xfffffffffffffffc); + iVar35 = (int)piVar41 - (int)puVar32; + if (iVar23 < iVar35) { + iVar35 = iVar23; + } + if (iVar35 < 1) { +LAB_001ee12c: + if (iVar35 < iVar23) { + bVar2 = false; +LAB_001ee138: + uVar47 = iVar24 - iVar35; + uVar53 = iVar36 - iVar35; + if (((int)(uVar47 - 3) < 1) || (*piVar41 != 0)) { + uVar44 = 0; + } + else { + uVar44 = 0; + piVar31 = piVar41; + do { + piVar31 = piVar31 + 1; + uVar44 = uVar44 + 4; + if ((int)(uVar47 - 3) <= (int)uVar44) break; + } while (*piVar31 == 0); + } + uVar50 = uVar53; + if ((int)uVar44 < (int)uVar47) { + pcVar26 = (char *)((long)piVar41 + (long)(int)uVar44); + cVar1 = *(char *)((long)piVar41 + (long)(int)uVar44); + while (cVar1 == '\0') { + uVar44 = uVar44 + 1; + if (uVar44 == uVar47) goto LAB_001ee1a4; + pcVar26 = pcVar26 + 1; + cVar1 = *pcVar26; + } + uVar47 = uVar44; + if ((int)uVar53 < (int)uVar44) { + bVar2 = true; + uVar53 = uVar44; + uVar50 = uVar44; + } + else { + bVar2 = true; + } + } + else { +LAB_001ee1a4: + if ((int)uVar53 < (int)uVar44) { + uVar50 = uVar44 - 1; + } + } + uVar37 = (iVar23 - iVar35) - 1; + if ((int)uVar50 < (int)uVar37) { + if ((uVar37 & 3) != 3) { + if (*(char *)((long)piVar41 + (long)(int)uVar37) == '\0') { + pcVar26 = (char *)((long)piVar41 + (long)(int)uVar37); + while (uVar37 = uVar37 - 1, uVar37 != uVar50) { + if ((uVar37 & 3) == 3) { + if (((int)(uVar50 + 3) < (int)uVar37) && + (lVar34 = (long)piVar41 + (long)(int)uVar37, *(int *)(lVar34 + -3) == 0)) + goto LAB_001ee77c; + break; + } + pcVar26 = pcVar26 + -1; + if (*pcVar26 != '\0') break; + } + } + goto LAB_001ee1fc; + } + if ((int)uVar37 <= (int)(uVar50 + 3)) goto LAB_001ee204; + lVar33 = (long)(int)uVar37; + lVar34 = (long)piVar41 + lVar33; + if (*(int *)(lVar34 + -3) == 0) { +LAB_001ee77c: + do { + uVar37 = uVar37 - 4; + if ((int)uVar37 <= (int)(uVar50 + 3)) break; + piVar31 = (int *)(lVar34 + -7); + lVar34 = lVar34 + -4; + } while (*piVar31 == 0); + goto LAB_001ee1fc; + } +LAB_001ee208: + pcVar26 = (char *)((long)piVar41 + lVar33); + cVar1 = *(char *)((long)piVar41 + lVar33); + uVar38 = uVar37; + while (cVar1 == '\0') { + uVar38 = uVar38 - 1; + uVar37 = uVar50; + if (uVar38 == uVar50) goto LAB_001ee22c; + pcVar26 = pcVar26 + -1; + cVar1 = *pcVar26; + } + } + else { +LAB_001ee1fc: + if ((int)uVar50 < (int)uVar37) { +LAB_001ee204: + lVar33 = (long)(int)uVar37; + goto LAB_001ee208; + } +LAB_001ee22c: + uVar38 = uVar53; + if (!bVar2) { + uVar44 = uVar44 & 0xfffffffc; + if (((int)uVar44 < (int)(uVar37 - 2)) && + (*(int *)((long)piVar41 + (long)(int)uVar44) == 0)) { + piVar31 = (int *)((long)piVar41 + (long)(int)uVar44); + do { + uVar44 = uVar44 + 4; + if ((int)(uVar37 - 2) <= (int)uVar44) break; + piVar31 = piVar31 + 1; + } while (*piVar31 == 0); + } + if ((int)uVar37 < (int)uVar44) { +LAB_001ee298: + iVar24 = uVar47 + iVar35; + iVar36 = uVar53 + iVar35; + goto LAB_001ee2a0; + } + if (*(char *)((long)piVar41 + (long)(int)uVar44) == '\0') { + pcVar26 = (char *)((long)piVar41 + (long)(int)uVar44); + do { + uVar44 = uVar44 + 1; + if ((int)uVar37 < (int)uVar44) goto LAB_001ee298; + pcVar26 = pcVar26 + 1; + } while (*pcVar26 == '\0'); + } + } + } + iVar24 = uVar47 + iVar35; + iVar36 = uVar38 + iVar35; + goto LAB_001ee73c; + } + } + else { + if ((char)*puVar32 == '\0') { + iVar28 = 0; + puVar30 = puVar32; + do { + puVar30 = (uint *)((long)puVar30 + 1); + iVar28 = iVar28 + 1; + if (iVar28 == iVar35) goto LAB_001ee12c; + } while (*(char *)puVar30 == '\0'); + } + else { + iVar28 = 0; + } + if (iVar28 < iVar24) { + iVar24 = iVar28; + } + if (iVar36 < iVar28) { + iVar36 = iVar28; + } + if (iVar35 < iVar23) { + bVar2 = true; + goto LAB_001ee138; + } +LAB_001ee73c: + iVar25 = iVar42; + if (iVar43 < 0) { + iVar43 = iVar42; + } + } +LAB_001ee2a0: + iVar42 = iVar42 + 1; + puVar32 = (uint *)((long)puVar32 + *local_18); + } while (iVar42 != *local_20); + if (iVar24 < iVar23) { + uVar47 = (iVar36 - iVar24) + 1; + iVar25 = (iVar25 - iVar43) + 1; + } + else { + iVar43 = 0; + uVar47 = iVar36 + 1; + iVar25 = iVar25 + 1; + iVar24 = 0; + } + } + in_x8[1] = CONCAT44(iVar25,uVar47); + *in_x8 = CONCAT44(iVar43,iVar24); + goto LAB_001edf64; + } + iVar23 = Mat::checkVector((Mat *)&local_60,2,-1,true); + uVar47 = local_60 & 7; + if ((iVar23 < 0) || (1 < uVar47 - 4)) { + local_70 = 0; + local_68 = 0; + pcVar26 = (char *)String::allocate((String *)&local_70,0x34); + uVar21 = s_npoints_>__0_____depth____CV_32F_0045c648._40_8_; + uVar20 = s_npoints_>__0_____depth____CV_32F_0045c648._32_8_; + uVar19 = s_npoints_>__0_____depth____CV_32F_0045c648._24_8_; + uVar18 = s_npoints_>__0_____depth____CV_32F_0045c648._16_8_; + uVar17 = s_npoints_>__0_____depth____CV_32F_0045c648._8_8_; + uVar16 = s_npoints_>__0_____depth____CV_32F_0045c648._0_8_; + *(undefined4 *)(pcVar26 + 0x30) = s_npoints_>__0_____depth____CV_32F_0045c648._48_4_; + *(undefined8 *)pcVar26 = uVar16; + *(undefined8 *)(pcVar26 + 8) = uVar17; + *(undefined8 *)(pcVar26 + 0x10) = uVar18; + *(undefined8 *)(pcVar26 + 0x18) = uVar19; + *(undefined8 *)(pcVar26 + 0x20) = uVar20; + *(undefined8 *)(pcVar26 + 0x28) = uVar21; + error(-0xd7,(String *)&local_70,"cv::Rect cv::pointSetBoundingRect(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x1e7); + String::deallocate((String *)&local_70); + } + if (iVar23 == 0) { + in_x8[1] = 0; + *in_x8 = 0; + goto LAB_001edf64; + } + uVar53 = *local_50; + uVar44 = local_50[1]; + if (uVar47 == 5) { + uVar50 = 0x7fffffff; + uVar47 = uVar50; + if (-1 < (int)uVar53) { + uVar47 = 0; + } + if (-1 < (int)uVar44) { + uVar50 = 0; + } + uVar47 = uVar47 ^ uVar53; + uVar50 = uVar50 ^ uVar44; + uVar44 = uVar50; + uVar53 = uVar47; + if (1 < iVar23) { + uVar37 = (iVar23 - 5U >> 2) + 1; + iVar25 = uVar37 * 4; + if (iVar23 - 2U < 3) { + uVar27 = 1; + } + else { + auVar49._0_8_ = CONCAT44(uVar47,uVar47); + auVar49._8_4_ = uVar47; + auVar49._12_4_ = uVar47; + puVar32 = local_50 + 2; + auVar46._0_8_ = CONCAT44(uVar50,uVar50); + auVar46._8_4_ = uVar50; + auVar46._12_4_ = uVar50; + uVar47 = 0; + auVar52._8_8_ = auVar49._8_8_; + auVar52._0_8_ = auVar49._0_8_; + auVar55._8_8_ = auVar46._8_8_; + auVar55._0_8_ = auVar46._0_8_; + do { + uVar53 = *puVar32; + uVar39 = puVar32[1]; + uVar44 = puVar32[2]; + uVar11 = puVar32[3]; + uVar50 = puVar32[4]; + uVar13 = puVar32[5]; + uVar38 = puVar32[6]; + uVar14 = puVar32[7]; + puVar32 = puVar32 + 8; + uVar47 = uVar47 + 1; + iVar35 = -(uint)(-1 < (int)uVar53); + iVar28 = -(uint)(-1 < (int)uVar44); + iVar12 = -(uint)(-1 < (int)uVar50); + iVar15 = -(uint)(-1 < (int)uVar38); + iVar24 = -(uint)(-1 < (int)uVar39); + iVar43 = -(uint)(-1 < (int)uVar11); + iVar42 = -(uint)(-1 < (int)uVar13); + iVar36 = -(uint)(-1 < (int)uVar14); + bVar81 = ~(byte)iVar35 ^ (byte)uVar53; + bVar82 = ~(byte)((uint)iVar35 >> 8) ^ (byte)(uVar53 >> 8); + bVar83 = ~(byte)((uint)iVar35 >> 0x10) ^ (byte)(uVar53 >> 0x10); + bVar84 = ~(byte)((uint)iVar35 >> 0x18) & 0x7f ^ (byte)(uVar53 >> 0x18); + bVar85 = ~(byte)iVar28 ^ (byte)uVar44; + bVar87 = ~(byte)((uint)iVar28 >> 8) ^ (byte)(uVar44 >> 8); + bVar89 = ~(byte)((uint)iVar28 >> 0x10) ^ (byte)(uVar44 >> 0x10); + bVar91 = ~(byte)((uint)iVar28 >> 0x18) & 0x7f ^ (byte)(uVar44 >> 0x18); + bVar92 = ~(byte)iVar12 ^ (byte)uVar50; + bVar94 = ~(byte)((uint)iVar12 >> 8) ^ (byte)(uVar50 >> 8); + bVar96 = ~(byte)((uint)iVar12 >> 0x10) ^ (byte)(uVar50 >> 0x10); + bVar98 = ~(byte)((uint)iVar12 >> 0x18) & 0x7f ^ (byte)(uVar50 >> 0x18); + bVar99 = ~(byte)iVar15 ^ (byte)uVar38; + bVar101 = ~(byte)((uint)iVar15 >> 8) ^ (byte)(uVar38 >> 8); + bVar103 = ~(byte)((uint)iVar15 >> 0x10) ^ (byte)(uVar38 >> 0x10); + bVar105 = ~(byte)((uint)iVar15 >> 0x18) & 0x7f ^ (byte)(uVar38 >> 0x18); + bVar56 = ~(byte)iVar24 ^ (byte)uVar39; + bVar57 = ~(byte)((uint)iVar24 >> 8) ^ (byte)(uVar39 >> 8); + bVar58 = ~(byte)((uint)iVar24 >> 0x10) ^ (byte)(uVar39 >> 0x10); + bVar59 = ~(byte)((uint)iVar24 >> 0x18) & 0x7f ^ (byte)(uVar39 >> 0x18); + bVar60 = ~(byte)iVar43 ^ (byte)uVar11; + bVar62 = ~(byte)((uint)iVar43 >> 8) ^ (byte)(uVar11 >> 8); + bVar64 = ~(byte)((uint)iVar43 >> 0x10) ^ (byte)(uVar11 >> 0x10); + bVar66 = ~(byte)((uint)iVar43 >> 0x18) & 0x7f ^ (byte)(uVar11 >> 0x18); + bVar67 = ~(byte)iVar42 ^ (byte)uVar13; + bVar69 = ~(byte)((uint)iVar42 >> 8) ^ (byte)(uVar13 >> 8); + bVar71 = ~(byte)((uint)iVar42 >> 0x10) ^ (byte)(uVar13 >> 0x10); + bVar73 = ~(byte)((uint)iVar42 >> 0x18) & 0x7f ^ (byte)(uVar13 >> 0x18); + bVar74 = ~(byte)iVar36 ^ (byte)uVar14; + bVar76 = ~(byte)((uint)iVar36 >> 8) ^ (byte)(uVar14 >> 8); + bVar78 = ~(byte)((uint)iVar36 >> 0x10) ^ (byte)(uVar14 >> 0x10); + bVar80 = ~(byte)((uint)iVar36 >> 0x18) & 0x7f ^ (byte)(uVar14 >> 0x18); + auVar9[1] = bVar82; + auVar9[0] = bVar81; + auVar9[2] = bVar83; + auVar9[3] = bVar84; + auVar9[4] = bVar85; + auVar9[5] = bVar87; + auVar9[6] = bVar89; + auVar9[7] = bVar91; + auVar9[8] = bVar92; + auVar9[9] = bVar94; + auVar9[10] = bVar96; + auVar9[0xb] = bVar98; + auVar9[0xc] = bVar99; + auVar9[0xd] = bVar101; + auVar9[0xe] = bVar103; + auVar9[0xf] = bVar105; + auVar49 = NEON_smin(auVar49,auVar9,4); + auVar10[1] = bVar82; + auVar10[0] = bVar81; + auVar10[2] = bVar83; + auVar10[3] = bVar84; + auVar10[4] = bVar85; + auVar10[5] = bVar87; + auVar10[6] = bVar89; + auVar10[7] = bVar91; + auVar10[8] = bVar92; + auVar10[9] = bVar94; + auVar10[10] = bVar96; + auVar10[0xb] = bVar98; + auVar10[0xc] = bVar99; + auVar10[0xd] = bVar101; + auVar10[0xe] = bVar103; + auVar10[0xf] = bVar105; + auVar52 = NEON_smax(auVar52,auVar10,4); + auVar5[1] = bVar57; + auVar5[0] = bVar56; + auVar5[2] = bVar58; + auVar5[3] = bVar59; + auVar5[4] = bVar60; + auVar5[5] = bVar62; + auVar5[6] = bVar64; + auVar5[7] = bVar66; + auVar5[8] = bVar67; + auVar5[9] = bVar69; + auVar5[10] = bVar71; + auVar5[0xb] = bVar73; + auVar5[0xc] = bVar74; + auVar5[0xd] = bVar76; + auVar5[0xe] = bVar78; + auVar5[0xf] = bVar80; + auVar46 = NEON_smin(auVar46,auVar5,4); + auVar6[1] = bVar57; + auVar6[0] = bVar56; + auVar6[2] = bVar58; + auVar6[3] = bVar59; + auVar6[4] = bVar60; + auVar6[5] = bVar62; + auVar6[6] = bVar64; + auVar6[7] = bVar66; + auVar6[8] = bVar67; + auVar6[9] = bVar69; + auVar6[10] = bVar71; + auVar6[0xb] = bVar73; + auVar6[0xc] = bVar74; + auVar6[0xd] = bVar76; + auVar6[0xe] = bVar78; + auVar6[0xf] = bVar80; + auVar55 = NEON_smax(auVar55,auVar6,4); + } while (uVar47 < uVar37); + uVar50 = NEON_smaxv(auVar55,4); + uVar44 = NEON_sminv(auVar46,4); + uVar27 = (ulong)(iVar25 + 1); + uVar47 = NEON_smaxv(auVar52,4); + uVar53 = NEON_sminv(auVar49,4); + if (iVar25 == iVar23 + -1) goto LAB_001ee5e4; + } + uVar40 = -(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3; + uVar39 = *(uint *)((long)local_50 + uVar40 + 4); + uVar38 = 0x7fffffff; + uVar37 = uVar38; + if (-1 < (int)*(uint *)((long)local_50 + uVar40)) { + uVar37 = 0; + } + uVar37 = uVar37 ^ *(uint *)((long)local_50 + uVar40); + if (-1 < (int)uVar39) { + uVar38 = 0; + } + uVar38 = uVar38 ^ uVar39; + if ((int)uVar37 < (int)uVar53) { + uVar53 = uVar37; + } + if ((int)uVar47 < (int)uVar37) { + uVar47 = uVar37; + } + if ((int)uVar38 < (int)uVar44) { + uVar44 = uVar38; + } + if ((int)uVar50 < (int)uVar38) { + uVar50 = uVar38; + } + if ((int)uVar27 + 1 < iVar23) { + uVar11 = *(uint *)((long)local_50 + uVar40 + 8); + uVar39 = *(uint *)((long)local_50 + uVar40 + 0xc); + uVar38 = 0x7fffffff; + uVar37 = uVar38; + if (-1 < (int)uVar11) { + uVar37 = 0; + } + uVar37 = uVar37 ^ uVar11; + uVar11 = uVar38; + if (-1 < (int)uVar39) { + uVar11 = 0; + } + uVar11 = uVar11 ^ uVar39; + if ((int)uVar37 < (int)uVar53) { + uVar53 = uVar37; + } + if ((int)uVar47 < (int)uVar37) { + uVar47 = uVar37; + } + if ((int)uVar11 < (int)uVar44) { + uVar44 = uVar11; + } + if ((int)uVar50 < (int)uVar11) { + uVar50 = uVar11; + } + if ((int)uVar27 + 2 < iVar23) { + uVar11 = *(uint *)((long)local_50 + uVar40 + 0x10); + uVar39 = *(uint *)((long)local_50 + uVar40 + 0x14); + uVar37 = uVar38; + if (-1 < (int)uVar11) { + uVar37 = 0; + } + uVar37 = uVar37 ^ uVar11; + if (-1 < (int)uVar39) { + uVar38 = 0; + } + uVar38 = uVar38 ^ uVar39; + if ((int)uVar37 < (int)uVar53) { + uVar53 = uVar37; + } + if ((int)uVar47 < (int)uVar37) { + uVar47 = uVar37; + } + if ((int)uVar38 < (int)uVar44) { + uVar44 = uVar38; + } + if ((int)uVar50 < (int)uVar38) { + uVar50 = uVar38; + } + } + } + } +LAB_001ee5e4: + uVar38 = 0x7fffffff; + uVar37 = uVar38; + if (-1 < (int)uVar53) { + uVar37 = 0; + } + iVar23 = (int)(float)(uVar37 ^ uVar53); + if (-1 < (int)uVar44) { + uVar38 = 0; + } + uVar53 = iVar23 - (uint)((float)(uVar37 ^ uVar53) < (float)iVar23); + iVar23 = (int)(float)(uVar38 ^ uVar44); + uVar39 = 0x7fffffff; + uVar37 = uVar39; + if (-1 < (int)uVar47) { + uVar37 = 0; + } + uVar44 = iVar23 - (uint)((float)(uVar38 ^ uVar44) < (float)iVar23); + iVar23 = (int)(float)(uVar37 ^ uVar47); + if (-1 < (int)uVar50) { + uVar39 = 0; + } + iVar23 = ((iVar23 - (uint)((float)(uVar37 ^ uVar47) < (float)iVar23)) - uVar53) + 1; + iVar25 = (int)(float)(uVar39 ^ uVar50); + iVar25 = ((iVar25 - (uint)((float)(uVar39 ^ uVar50) < (float)iVar25)) - uVar44) + 1; + } + else if (iVar23 < 2) { + iVar25 = 1; + iVar23 = 1; + } + else { + uVar47 = (iVar23 - 5U >> 2) + 1; + iVar25 = uVar47 * 4; + if (iVar23 - 2U < 4) { + uVar27 = 1; + uVar50 = uVar44; + uVar47 = uVar53; +LAB_001ee2f4: + uVar40 = -(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3; + iVar25 = (int)uVar27; + uVar38 = *(uint *)((long)local_50 + uVar40); + uVar37 = *(uint *)((long)local_50 + uVar40 + 4); + if ((int)uVar38 < (int)uVar53) { + uVar53 = uVar38; + } + if ((int)uVar47 < (int)uVar38) { + uVar47 = uVar38; + } + if ((int)uVar37 < (int)uVar50) { + uVar50 = uVar37; + } + if ((int)uVar44 < (int)uVar37) { + uVar44 = uVar37; + } + if (iVar25 + 1 < iVar23) { + uVar38 = *(uint *)((long)local_50 + uVar40 + 8); + uVar37 = *(uint *)((long)local_50 + uVar40 + 0xc); + if ((int)uVar38 < (int)uVar53) { + uVar53 = uVar38; + } + if ((int)uVar47 < (int)uVar38) { + uVar47 = uVar38; + } + if ((int)uVar37 < (int)uVar50) { + uVar50 = uVar37; + } + if ((int)uVar44 < (int)uVar37) { + uVar44 = uVar37; + } + if (iVar25 + 2 < iVar23) { + uVar38 = *(uint *)((long)local_50 + uVar40 + 0x10); + uVar37 = *(uint *)((long)local_50 + uVar40 + 0x14); + if ((int)uVar38 < (int)uVar53) { + uVar53 = uVar38; + } + if ((int)uVar47 < (int)uVar38) { + uVar47 = uVar38; + } + if ((int)uVar37 < (int)uVar50) { + uVar50 = uVar37; + } + if ((int)uVar44 < (int)uVar37) { + uVar44 = uVar37; + } + if (iVar25 + 3 < iVar23) { + uVar38 = *(uint *)((long)local_50 + uVar40 + 0x18); + uVar37 = *(uint *)((long)local_50 + uVar40 + 0x1c); + if ((int)uVar38 < (int)uVar53) { + uVar53 = uVar38; + } + if ((int)uVar47 < (int)uVar38) { + uVar47 = uVar38; + } + if ((int)uVar37 < (int)uVar50) { + uVar50 = uVar37; + } + if ((int)uVar44 < (int)uVar37) { + uVar44 = uVar37; + } + } + } + } + } + else { + auVar54._0_8_ = CONCAT44(uVar53,uVar53); + auVar54._8_4_ = uVar53; + auVar54._12_4_ = uVar53; + puVar32 = local_50 + 2; + auVar51._0_8_ = CONCAT44(uVar44,uVar44); + auVar51._8_4_ = uVar44; + auVar51._12_4_ = uVar44; + uVar53 = 0; + auVar48._8_8_ = auVar54._8_8_; + auVar48._0_8_ = auVar54._0_8_; + auVar45._8_8_ = auVar51._8_8_; + auVar45._0_8_ = auVar51._0_8_; + do { + uVar44 = *puVar32; + puVar30 = puVar32 + 1; + uVar50 = puVar32[2]; + uVar61 = (undefined1)(uVar50 >> 8); + uVar63 = (undefined1)(uVar50 >> 0x10); + uVar65 = (undefined1)(uVar50 >> 0x18); + uVar39 = puVar32[3]; + uVar86 = (undefined1)(uVar39 >> 8); + uVar88 = (undefined1)(uVar39 >> 0x10); + uVar90 = (undefined1)(uVar39 >> 0x18); + uVar37 = puVar32[4]; + uVar68 = (undefined1)(uVar37 >> 8); + uVar70 = (undefined1)(uVar37 >> 0x10); + uVar72 = (undefined1)(uVar37 >> 0x18); + uVar11 = puVar32[5]; + uVar93 = (undefined1)(uVar11 >> 8); + uVar95 = (undefined1)(uVar11 >> 0x10); + uVar97 = (undefined1)(uVar11 >> 0x18); + uVar38 = puVar32[6]; + uVar75 = (undefined1)(uVar38 >> 8); + uVar77 = (undefined1)(uVar38 >> 0x10); + uVar79 = (undefined1)(uVar38 >> 0x18); + uVar13 = puVar32[7]; + uVar100 = (undefined1)(uVar13 >> 8); + uVar102 = (undefined1)(uVar13 >> 0x10); + uVar104 = (undefined1)(uVar13 >> 0x18); + puVar32 = puVar32 + 8; + uVar53 = uVar53 + 1; + auVar8[4] = (char)uVar50; + auVar8._0_4_ = uVar44; + auVar8[5] = uVar61; + auVar8[6] = uVar63; + auVar8[7] = uVar65; + auVar8[8] = (char)uVar37; + auVar7[4] = (char)uVar50; + auVar7._0_4_ = uVar44; + auVar7[5] = uVar61; + auVar7[6] = uVar63; + auVar7[7] = uVar65; + auVar7[8] = (char)uVar37; + auVar4[4] = (char)uVar39; + auVar4._0_4_ = *puVar30; + auVar4[5] = uVar86; + auVar4[6] = uVar88; + auVar4[7] = uVar90; + auVar4[8] = (char)uVar11; + auVar3[4] = (char)uVar39; + auVar3._0_4_ = *puVar30; + auVar3[5] = uVar86; + auVar3[6] = uVar88; + auVar3[7] = uVar90; + auVar3[8] = (char)uVar11; + auVar7[9] = uVar68; + auVar7[10] = uVar70; + auVar7[0xb] = uVar72; + auVar7[0xc] = (char)uVar38; + auVar7[0xd] = uVar75; + auVar7[0xe] = uVar77; + auVar7[0xf] = uVar79; + auVar54 = NEON_smin(auVar54,auVar7,4); + auVar8[9] = uVar68; + auVar8[10] = uVar70; + auVar8[0xb] = uVar72; + auVar8[0xc] = (char)uVar38; + auVar8[0xd] = uVar75; + auVar8[0xe] = uVar77; + auVar8[0xf] = uVar79; + auVar48 = NEON_smax(auVar48,auVar8,4); + auVar3[9] = uVar93; + auVar3[10] = uVar95; + auVar3[0xb] = uVar97; + auVar3[0xc] = (char)uVar13; + auVar3[0xd] = uVar100; + auVar3[0xe] = uVar102; + auVar3[0xf] = uVar104; + auVar51 = NEON_smin(auVar51,auVar3,4); + auVar4[9] = uVar93; + auVar4[10] = uVar95; + auVar4[0xb] = uVar97; + auVar4[0xc] = (char)uVar13; + auVar4[0xd] = uVar100; + auVar4[0xe] = uVar102; + auVar4[0xf] = uVar104; + auVar45 = NEON_smax(auVar45,auVar4,4); + } while (uVar53 < uVar47); + uVar44 = NEON_smaxv(auVar45,4); + uVar50 = NEON_sminv(auVar51,4); + uVar27 = (ulong)(iVar25 + 1); + uVar47 = NEON_smaxv(auVar48,4); + uVar53 = NEON_sminv(auVar54,4); + if (iVar25 != iVar23 + -1) goto LAB_001ee2f4; + } + iVar23 = (uVar47 - uVar53) + 1; + iVar25 = (uVar44 - uVar50) + 1; + uVar44 = uVar50; + } + in_x8[1] = CONCAT44(iVar25,iVar23); + *in_x8 = CONCAT44(uVar44,uVar53); +LAB_001edf64: + if (local_28 != 0) { + piVar41 = (int *)(local_28 + 0x14); + do { + iVar23 = *piVar41; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar2) { + *piVar41 = iVar23 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar23 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (uint *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar23 = 0; + piVar41 = local_20; + do { + *piVar41 = 0; + iVar23 = iVar23 + 1; + piVar41 = piVar41 + 1; + } while (iVar23 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 001ee878 (348 bytes) name=cvMinEnclosingCircle + +undefined8 cvMinEnclosingCircle(cv *param_1,undefined8 *param_2,float *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + float local_4d4; + undefined4 local_4d0; + undefined4 uStack_4cc; + undefined4 local_4c8 [2]; + Mat *local_4c0; + undefined4 local_4b8; + undefined4 local_4b4; + Mat aMStack_4b0 [4]; + int local_4ac; + undefined8 local_4a0; + undefined8 local_498; + undefined8 local_490; + undefined8 local_488; + long local_478; + undefined4 *local_470; + undefined1 *local_468; + undefined1 auStack_460 [16]; + undefined1 *local_450; + undefined8 local_448; + undefined1 auStack_440 [1088]; + + local_450 = auStack_440; + local_448 = 0x88; + cv::cvarrToMat(param_1,(void *)0x0,false,false,(int)&local_450,(AutoBuffer *)0x88); + local_4d0 = 0; + local_4b8 = 0; + uStack_4cc = 0; + local_4b4 = 0; + local_4c8[0] = 0x1010000; + local_4c0 = aMStack_4b0; + cv::minEnclosingCircle((_InputArray *)local_4c8,(Point_ *)&local_4d0,&local_4d4); + if (param_2 != (undefined8 *)0x0) { + *param_2 = CONCAT44(uStack_4cc,local_4d0); + } + if (param_3 != (float *)0x0) { + *param_3 = local_4d4; + } + if (local_478 != 0) { + piVar1 = (int *)(local_478 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_4b0); + } + } + local_478 = 0; + local_4a0 = 0; + local_488 = 0; + local_490 = 0; + local_498 = 0; + if (0 < local_4ac) { + iVar4 = 0; + do { + *local_470 = 0; + iVar4 = iVar4 + 1; + local_470 = local_470 + 1; + } while (iVar4 < local_4ac); + } + if (local_468 != auStack_460) { + cv::fastFree(local_468); + } + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + return 1; +} + + +================================================================== + +### FUNC 001eea20 (2444 bytes) name=cvContourArea + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvContourArea(cv *param_1,ulong param_2,int param_3) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + long lVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + uint uVar15; + int iVar16; + void *pvVar17; + char *pcVar18; + long lVar19; + void *pvVar20; + undefined8 *puVar21; + ulong uVar22; + int iVar23; + ulong uVar24; + void *pvVar25; + void *pvVar26; + ulong uVar27; + undefined1 auVar28 [16]; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + double dVar43; + void *local_590; + undefined4 local_568 [2]; + Mat *local_560; + undefined4 local_558; + undefined4 local_554; + undefined1 auStack_550 [32]; + undefined8 local_530; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_4f8; + undefined4 *local_4f0; + undefined1 *local_4e8; + undefined1 auStack_4e0 [16]; + undefined1 auStack_4d0 [96]; + undefined8 local_470; + undefined8 uStack_468; + undefined1 *local_450; + undefined8 local_448; + undefined1 auStack_440 [8]; + int *local_438; + int *local_428; + + uStack_468 = 0; + local_470 = 0; + if ((param_1 == (cv *)0x0) || (uVar15 = *(uint *)param_1, (uVar15 & 0xffff0000) != 0x42990000)) { + param_1 = (cv *)cvPointSeqFromMat(0x1000,param_1,auStack_4d0,auStack_550); +LAB_001eea9c: + uVar15 = cvSliceLength(param_2,param_1); + if (uVar15 == *(uint *)(param_1 + 0x28)) { +LAB_001eefd8: + local_450 = auStack_440; + local_448 = 0x88; + cv::cvarrToMat(param_1,(void *)0x0,false,false,(int)&local_450,(AutoBuffer *)0x88); + local_558 = 0; + local_554 = 0; + local_568[0] = 0x1010000; + local_560 = (Mat *)&local_530; + dVar33 = (double)cv::contourArea((_InputArray *)local_568,param_3 != 0); + if (local_4f8 != 0) { + piVar1 = (int *)(local_4f8 + 0x14); + do { + iVar16 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar16 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_530); + } + } + local_4f8 = 0; + local_520 = 0; + local_508 = 0; + local_510 = 0; + local_518 = 0; + if (0 < local_530._4_4_) { + iVar16 = 0; + do { + *local_4f0 = 0; + iVar16 = iVar16 + 1; + local_4f0 = local_4f0 + 1; + } while (iVar16 < local_530._4_4_); + } + if (local_4e8 != auStack_4e0) { + cv::fastFree(local_4e8); + } + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + goto LAB_001eed74; + } + } + else { + if (((uVar15 & 0x3000) == 0x1000) && ((uVar15 & 0xfff) - 0xc < 2)) goto LAB_001eea9c; + local_450 = (undefined1 *)0x0; + local_448 = 0; + pcVar18 = (char *)cv::String::allocate((String *)&local_450,0x19); + cVar6 = s_Unsupported_sequence_type_0045c718[0x18]; + uVar10 = s_Unsupported_sequence_type_0045c718._8_8_; + uVar9 = s_Unsupported_sequence_type_0045c718._0_8_; + *(undefined8 *)(pcVar18 + 0x10) = s_Unsupported_sequence_type_0045c718._16_8_; + pcVar18[0x18] = cVar6; + *(undefined8 *)pcVar18 = uVar9; + *(undefined8 *)(pcVar18 + 8) = uVar10; + cv::error(-5,(String *)&local_450,"double cvContourArea(const void*, CvSlice, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x39e); + cv::String::deallocate((String *)&local_450); + uVar15 = cvSliceLength(param_2,param_1); + if (uVar15 == *(uint *)(param_1 + 0x28)) goto LAB_001eefd8; + } + uVar15 = *(uint *)param_1 & 0xfff; + if (uVar15 != 0xc) { + local_450 = (undefined1 *)0x0; + local_448 = 0; + pvVar17 = (void *)cv::String::allocate((String *)&local_450,0x4b); + memcpy(pvVar17,"Only curves with integer coordinates are supported in case of contour slice", + 0x4b); + cv::error(-0xd2,(String *)&local_450,"double cvContourArea(const void*, CvSlice, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x3ae); + cv::String::deallocate((String *)&local_450); + uVar15 = *(uint *)param_1 & 0xfff; + } + uVar24 = param_2 & 0xffffffff; + if (1 < uVar15 - 0xc) { + local_450 = (undefined1 *)0x0; + local_448 = 0; + pcVar18 = (char *)cv::String::allocate((String *)&local_450,0x31); + uVar14 = s_contour____NULL____CV_IS_SEQ_POI_0045c788._40_8_; + uVar13 = s_contour____NULL____CV_IS_SEQ_POI_0045c788._32_8_; + uVar12 = s_contour____NULL____CV_IS_SEQ_POI_0045c788._24_8_; + uVar11 = s_contour____NULL____CV_IS_SEQ_POI_0045c788._16_8_; + uVar10 = s_contour____NULL____CV_IS_SEQ_POI_0045c788._8_8_; + uVar9 = s_contour____NULL____CV_IS_SEQ_POI_0045c788._0_8_; + pcVar18[0x30] = s_contour____NULL____CV_IS_SEQ_POI_0045c788[0x30]; + *(undefined8 *)pcVar18 = uVar9; + *(undefined8 *)(pcVar18 + 8) = uVar10; + *(undefined8 *)(pcVar18 + 0x10) = uVar11; + *(undefined8 *)(pcVar18 + 0x18) = uVar12; + *(undefined8 *)(pcVar18 + 0x20) = uVar13; + *(undefined8 *)(pcVar18 + 0x28) = uVar14; + cv::error(-0xd7,(String *)&local_450,"double icvContourSecArea(CvSeq*, CvSlice)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x301); + cv::String::deallocate((String *)&local_450); + } + iVar16 = cvSliceLength(uVar24 | ((long)param_2 >> 0x20) << 0x20,param_1); + if ((iVar16 < 3) || ((int)*(uint *)(param_1 + 0x28) < 1)) { + dVar33 = 0.0; + } + else { + pvVar17 = (void *)cv::cvAlloc(0x10); + cvStartReadSeq(param_1,&local_450,0); + cvSetSeqReaderPos(&local_450,uVar24,0); + piVar1 = local_438 + 2; + iVar2 = *local_438; + iVar3 = local_438[1]; + local_438 = piVar1; + if (local_428 <= piVar1) { + cvChangeSeqBlock(&local_450,1); + } + cvSetSeqReaderPos(&local_450,(long)param_2 >> 0x20 & 0xffffffff,0); + piVar1 = local_438 + 2; + iVar23 = *local_438; + iVar4 = local_438[1]; + local_438 = piVar1; + if (local_428 <= piVar1) { + cvChangeSeqBlock(&local_450,1); + } + dVar36 = (double)(iVar23 - iVar2); + dVar37 = (double)(iVar3 - iVar4); + pvVar25 = (void *)0x0; + uVar27 = 2; + bVar7 = false; + iVar23 = 0; + cvSetSeqReaderPos(&local_450,uVar24,0); + dVar43 = 0.0; + dVar32 = 0.0; + dVar31 = 0.0; + dVar40 = 0.0; + dVar41 = 0.0; + dVar42 = 0.0; + dVar33 = 0.0; + local_590 = pvVar17; + piVar1 = local_438; + while (uVar15 = (uint)uVar27, 0 < iVar16) { + iVar16 = iVar16 + -1; + local_438 = piVar1 + 2; + iVar4 = *piVar1; + iVar5 = piVar1[1]; + if (local_438 < local_428) { + if (!bVar7) goto LAB_001eecf0; +LAB_001eee00: + dVar35 = (double)iVar5; + dVar30 = (double)iVar3; + dVar34 = (double)iVar4; + dVar29 = (double)iVar2; + dVar38 = dVar36 * (dVar35 - dVar30) + (dVar34 - dVar29) * dVar37; + if ((ABS(dVar38) < DAT_001ef468) && (0 < iVar16)) { +LAB_001eee3c: + dVar33 = (dVar35 * dVar41 - dVar34 * dVar40) + dVar42; + pvVar20 = pvVar17; + pvVar26 = pvVar25; + uVar24 = uVar27; + if ((int)uVar15 <= iVar23) { + if (((local_590 == (void *)0x0) && (pvVar25 == (void *)0x0)) || (pvVar17 == (void *)0x0) + ) { + local_530 = 0; + local_528 = 0; + puVar21 = (undefined8 *)cv::String::allocate((String *)&local_530,0x31); + uVar14 = DAT_0045c7e8; + uVar13 = DAT_0045c7e0; + uVar12 = _LAB_0045c7d8; + uVar11 = DAT_0045c7d0; + uVar10 = DAT_0045c7c8; + uVar9 = DAT_0045c7c0; + *(undefined1 *)(puVar21 + 6) = DAT_0045c7f0; + *puVar21 = uVar9; + puVar21[1] = uVar10; + puVar21[2] = uVar11; + puVar21[3] = uVar12; + puVar21[4] = uVar13; + puVar21[5] = uVar14; + cv::error(-0xd7,(String *)&local_530, + "void icvMemCopy(double**, double**, double**, int*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp", + 0x2d5); + cv::String::deallocate((String *)&local_530); + } + uVar24 = (ulong)(uVar15 << 1); + uVar22 = -(ulong)((uVar15 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | uVar24 << 3; + if (pvVar25 == (void *)0x0) { + pvVar20 = (void *)cv::cvAlloc(uVar22); + memcpy(pvVar20,pvVar17,-(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3); + cv::cvFree_(local_590); + pvVar26 = pvVar20; + local_590 = pvVar25; + } + else { + pvVar20 = (void *)cv::cvAlloc(uVar22); + memcpy(pvVar20,pvVar17,-(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3); + cv::cvFree_(pvVar25); + pvVar26 = (void *)0x0; + local_590 = pvVar20; + } + } + dVar42 = 0.0; + dVar43 = 0.0; + *(double *)((long)pvVar20 + (long)iVar23 * 8) = + (dVar33 + (dVar34 * dVar32 - dVar35 * dVar31)) * 0.5; + iVar23 = iVar23 + 1; + pvVar17 = pvVar20; + pvVar25 = pvVar26; + uVar27 = uVar24; + dVar31 = dVar34; + dVar32 = dVar35; + } + else if (DAT_001ef470 <= dVar38 * dVar33) { + dVar43 = dVar35 * dVar41 - dVar34 * dVar40; +LAB_001eef48: + dVar42 = dVar42 + dVar43; + } + else { + if (ABS(dVar38) < DAT_001ef468) goto LAB_001eee3c; + dVar33 = dVar34 - dVar41; + dVar39 = -dVar37; + if (ABS(dVar33) <= DAT_001ef468) { + dVar33 = (dVar41 - dVar29) / dVar36; + } + else { + dVar33 = ((dVar35 - dVar40) * (dVar29 - dVar41) + (dVar40 - dVar30) * dVar33) / + (dVar33 * dVar39 - dVar36 * (dVar35 - dVar40)); + } + if ((dVar33 <= DAT_001ef468) || (DAT_001ef478 <= dVar33)) goto LAB_001eef48; + dVar29 = dVar29 + dVar33 * dVar36; + dVar30 = dVar30 + dVar33 * dVar39; + pvVar20 = pvVar17; + pvVar26 = pvVar25; + uVar24 = uVar27; + if ((int)uVar15 <= iVar23) { + if (((local_590 == (void *)0x0) && (pvVar25 == (void *)0x0)) || (pvVar17 == (void *)0x0) + ) { + local_530 = 0; + local_528 = 0; + puVar21 = (undefined8 *)cv::String::allocate((String *)&local_530,0x31); + uVar14 = DAT_0045c7e8; + uVar13 = DAT_0045c7e0; + uVar12 = _LAB_0045c7d8; + uVar11 = DAT_0045c7d0; + uVar10 = DAT_0045c7c8; + uVar9 = DAT_0045c7c0; + *(undefined1 *)(puVar21 + 6) = DAT_0045c7f0; + *puVar21 = uVar9; + puVar21[1] = uVar10; + puVar21[2] = uVar11; + puVar21[3] = uVar12; + puVar21[4] = uVar13; + puVar21[5] = uVar14; + cv::error(-0xd7,(String *)&local_530, + "void icvMemCopy(double**, double**, double**, int*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp", + 0x2d5); + cv::String::deallocate((String *)&local_530); + } + uVar24 = (ulong)(uVar15 << 1); + uVar22 = -(ulong)((uVar15 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | uVar24 << 3; + if (pvVar25 == (void *)0x0) { + pvVar20 = (void *)cv::cvAlloc(uVar22); + memcpy(pvVar20,pvVar17,-(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3); + cv::cvFree_(local_590); + pvVar26 = pvVar20; + local_590 = pvVar25; + } + else { + pvVar20 = (void *)cv::cvAlloc(uVar22); + memcpy(pvVar20,pvVar17,-(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3); + cv::cvFree_(pvVar25); + pvVar26 = (void *)0x0; + local_590 = pvVar20; + } + } + dVar43 = dVar35 * dVar29 - dVar34 * dVar30; + *(double *)((long)pvVar20 + (long)iVar23 * 8) = + (dVar42 + (dVar41 * dVar30 - dVar40 * dVar29) + (dVar32 * dVar29 - dVar31 * dVar30)) + * 0.5; + iVar23 = iVar23 + 1; + dVar42 = dVar43 + 0.0; + pvVar17 = pvVar20; + pvVar25 = pvVar26; + uVar27 = uVar24; + dVar31 = dVar29; + dVar32 = dVar30; + } + } + else { + cvChangeSeqBlock(&local_450,1); + if (bVar7) goto LAB_001eee00; +LAB_001eecf0: + dVar38 = 0.0; + dVar31 = (double)iVar4; + dVar32 = (double)iVar5; + } + dVar41 = (double)iVar4; + dVar40 = (double)iVar5; + bVar7 = true; + dVar33 = dVar38; + piVar1 = local_438; + } + pvVar20 = pvVar17; + local_438 = piVar1; + if ((int)uVar15 <= iVar23) { + if (((local_590 == (void *)0x0) && (pvVar25 == (void *)0x0)) || (pvVar17 == (void *)0x0)) { + local_530 = 0; + local_528 = 0; + puVar21 = (undefined8 *)cv::String::allocate((String *)&local_530,0x31); + uVar14 = DAT_0045c7e8; + uVar13 = DAT_0045c7e0; + uVar12 = _LAB_0045c7d8; + uVar11 = DAT_0045c7d0; + uVar10 = DAT_0045c7c8; + uVar9 = DAT_0045c7c0; + *(undefined1 *)(puVar21 + 6) = DAT_0045c7f0; + *puVar21 = uVar9; + puVar21[1] = uVar10; + puVar21[2] = uVar11; + puVar21[3] = uVar12; + puVar21[4] = uVar13; + puVar21[5] = uVar14; + cv::error(-0xd7,(String *)&local_530,"void icvMemCopy(double**, double**, double**, int*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x2d5); + cv::String::deallocate((String *)&local_530); + } + uVar24 = -(ulong)((uVar15 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar15 << 1) << 3; + if (pvVar25 == (void *)0x0) { + pvVar20 = (void *)cv::cvAlloc(uVar24); + memcpy(pvVar20,pvVar17,-(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3); + cv::cvFree_(local_590); + local_590 = (void *)0x0; + pvVar25 = pvVar20; + } + else { + pvVar20 = (void *)cv::cvAlloc(uVar24); + memcpy(pvVar20,pvVar17,-(uVar27 >> 0x1f) & 0xfffffff800000000 | uVar27 << 3); + cv::cvFree_(pvVar25); + pvVar25 = (void *)0x0; + local_590 = pvVar20; + } + } + lVar19 = 0; + dVar33 = 0.0; + *(double *)((long)pvVar20 + (long)iVar23 * 8) = + ((dVar32 * dVar41 - dVar31 * dVar40) + dVar42) * 0.5; + do { + lVar8 = lVar19 * 8; + lVar19 = lVar19 + 1; + dVar33 = dVar33 + ABS(*(double *)((long)pvVar20 + lVar8)); + } while ((int)lVar19 <= iVar23); + if (local_590 == (void *)0x0) { + if (pvVar25 != (void *)0x0) { + cv::cvFree_(pvVar25); + } + } + else { + cv::cvFree_(local_590); + } + } + if (param_3 == 0) { + dVar33 = ABS(dVar33); + } +LAB_001eed74: + auVar28._8_8_ = 0; + auVar28._0_8_ = dVar33; + return auVar28; +} + + +================================================================== + +### FUNC 001ef480 (888 bytes) name=cvArcLength + +undefined1 [16] cvArcLength(uint *param_1,ulong param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + char cVar5; + undefined4 uVar6; + uint uVar7; + char *pcVar8; + uint uVar9; + long lVar10; + float *pfVar11; + long lVar12; + int iVar13; + int iVar14; + undefined1 auVar15 [16]; + float fVar16; + float fVar17; + double dVar18; + undefined1 auStack_148 [32]; + undefined4 local_128; + undefined4 local_124; + undefined8 local_120; + undefined4 local_118; + undefined1 *local_110; + undefined4 local_108; + int local_104; + undefined1 local_100 [64]; + undefined8 local_c0; + undefined8 local_b8; + float *local_a8; + float *local_98; + float *local_88; + undefined1 auStack_80 [96]; + undefined8 local_20; + undefined8 uStack_18; + + uStack_18 = 0; + local_20 = 0; + local_104 = 0x10; + local_108 = 1; + local_124 = 0x40; + local_110 = local_100; + local_128 = 0x42424005; + local_120 = 0; + local_118 = 0; + if ((param_1 == (uint *)0x0) || (uVar1 = *param_1, (uVar1 & 0xffff0000) != 0x42990000)) { + uVar6 = 0x1000; + if (0 < (int)param_3) { + uVar6 = 0x5000; + } + param_1 = (uint *)cvPointSeqFromMat(uVar6,param_1,auStack_80,auStack_148); + param_3 = (uint)(0 < (int)param_3); + } + else { + if (((uVar1 & 0x3000) != 0x1000) || (1 < (uVar1 & 0xfff) - 0xc)) { + local_c0 = 0; + local_b8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_c0,0x19); + cVar5 = s_Unsupported_sequence_type_0045c718[0x18]; + uVar4 = s_Unsupported_sequence_type_0045c718._8_8_; + uVar3 = s_Unsupported_sequence_type_0045c718._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Unsupported_sequence_type_0045c718._16_8_; + pcVar8[0x18] = cVar5; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + cv::error(-5,(String *)&local_c0,"double cvArcLength(const void*, CvSlice, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x3c7); + cv::String::deallocate((String *)&local_c0); + } + if ((int)param_3 < 0) { + param_3 = *param_1 >> 0xe & 1; + } + } + if (1 < (int)param_1[10]) { + uVar1 = *param_1; + cvStartReadSeq(param_1,&local_c0,0); + cvSetSeqReaderPos(&local_c0,param_2 & 0xffffffff,0); + uVar7 = cvSliceLength(param_2,param_1); + uVar9 = 0; + if (param_3 == 0) { + uVar9 = (uint)(uVar7 == param_1[10]); + } + iVar2 = uVar7 - uVar9; + local_88 = local_a8; + local_a8 = local_a8 + 2; + if (local_98 <= local_a8) { + cvChangeSeqBlock(&local_c0,1); + } + if (0 < iVar2) { + iVar14 = 0; + dVar18 = 0.0; + iVar13 = 0; + do { + if ((uVar1 & 0xfff) == 0xd) { + fVar16 = *local_a8 - *local_88; + fVar17 = local_a8[1] - local_88[1]; + } + else { + fVar16 = (float)(int)*local_a8 - (float)(int)*local_88; + fVar17 = (float)(int)local_a8[1] - (float)(int)local_88[1]; + } + pfVar11 = (float *)((long)local_a8 + (long)(int)param_1[0xb]); + local_88 = local_a8; + local_a8 = pfVar11; + if (local_98 <= pfVar11) { + cvChangeSeqBlock(&local_c0,1); + } + if ((param_3 != 0) && (iVar2 + -2 == iVar13)) { + cvSetSeqReaderPos(&local_c0,(int)param_2,0); + } + lVar10 = (long)iVar14; + iVar14 = iVar14 + 1; + lVar12 = lVar10 * 4; + *(float *)(local_110 + lVar12) = fVar17 * fVar17 + fVar16 * fVar16; + if ((iVar14 == 0x10) || (iVar2 + -1 == iVar13)) { + local_104 = iVar14; + cvPow(0x3fe0000000000000,&local_128,&local_128); + pfVar11 = (float *)(local_110 + lVar12 + 4); + do { + pfVar11 = pfVar11 + -1; + dVar18 = dVar18 + (double)*pfVar11; + } while (pfVar11 != (float *)(local_110 + (iVar14 - lVar10) * 4 + -4)); + iVar14 = 0; + } + iVar13 = iVar13 + 1; + } while (iVar13 != iVar2); + goto LAB_001ef680; + } + } + dVar18 = 0.0; +LAB_001ef680: + auVar15._8_8_ = 0; + auVar15._0_8_ = dVar18; + return auVar15; +} + + +================================================================== + +### FUNC 001ef80c (332 bytes) name=cvFitEllipse2 + +undefined4 * cvFitEllipse2(undefined4 *param_1,cv *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_4e0; + undefined4 local_4dc; + undefined4 local_4d8; + undefined4 local_4d4; + undefined4 local_4d0; + undefined4 local_4c8 [2]; + Mat *local_4c0; + undefined4 local_4b8; + undefined4 local_4b4; + Mat aMStack_4b0 [4]; + int local_4ac; + undefined8 local_4a0; + undefined8 local_498; + undefined8 local_490; + undefined8 local_488; + long local_478; + undefined4 *local_470; + undefined1 *local_468; + undefined1 auStack_460 [16]; + undefined1 *local_450; + undefined8 local_448; + undefined1 auStack_440 [1088]; + + local_450 = auStack_440; + local_448 = 0x88; + cv::cvarrToMat(param_2,(void *)0x0,false,false,(int)&local_450,(AutoBuffer *)0x88); + local_4b8 = 0; + local_4b4 = 0; + local_4c8[0] = 0x1010000; + local_4c0 = aMStack_4b0; + cv::fitEllipse((cv *)local_4c8,(_InputArray *)local_4c8); + *param_1 = local_4e0; + param_1[1] = local_4dc; + param_1[2] = local_4d8; + param_1[3] = local_4d4; + param_1[4] = local_4d0; + if (local_478 != 0) { + piVar1 = (int *)(local_478 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_4b0); + } + } + local_478 = 0; + local_4a0 = 0; + local_488 = 0; + local_490 = 0; + local_498 = 0; + if (0 < local_4ac) { + iVar4 = 0; + do { + *local_470 = 0; + iVar4 = iVar4 + 1; + local_470 = local_470 + 1; + } while (iVar4 < local_4ac); + } + if (local_468 != auStack_460) { + cv::fastFree(local_468); + } + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + return param_1; +} + + +================================================================== + +### FUNC 001ef9a4 (3236 bytes) name=cvBoundingRect + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvBoundingRect(cv *param_1,int param_2) + +{ + char cVar1; + bool bVar2; + undefined1 auVar3 [16]; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + int iVar7; + int iVar8; + int iVar9; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined2 uVar18; + uint *puVar19; + int iVar20; + int iVar21; + cv *this; + char *pcVar22; + int *piVar23; + long lVar24; + ulong uVar25; + uint *puVar26; + int iVar27; + ulong uVar28; + AutoBuffer *in_x5; + long lVar29; + uint uVar30; + int *piVar31; + uint uVar32; + uint uVar33; + uint uVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + uint uVar37; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + uint uVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + uint uVar43; + int iVar44; + int iVar47; + int iVar48; + undefined1 auVar45 [16]; + uint uVar49; + int iVar50; + undefined1 auVar46 [16]; + byte bVar51; + byte bVar52; + byte bVar53; + byte bVar54; + byte bVar55; + byte bVar56; + byte bVar57; + byte bVar58; + byte bVar59; + byte bVar60; + byte bVar61; + byte bVar62; + byte bVar63; + byte bVar64; + byte bVar65; + byte bVar66; + uint uVar67; + undefined1 uVar69; + undefined1 uVar70; + undefined1 uVar71; + undefined1 uVar73; + undefined1 uVar74; + uint uVar72; + undefined1 uVar75; + undefined1 uVar77; + undefined1 uVar78; + uint uVar76; + undefined1 uVar79; + undefined1 auVar68 [16]; + undefined8 local_588; + undefined8 local_580; + undefined1 auStack_578 [32]; + undefined1 auStack_558 [40]; + uint local_530 [4]; + uint *local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_4f8; + undefined4 *local_4f0; + undefined1 *local_4e8; + undefined1 auStack_4e0 [16]; + undefined1 auStack_4d0 [96]; + undefined8 local_470; + undefined8 uStack_468; + undefined8 local_450; + undefined8 uStack_448; + char *local_440; + undefined8 local_438; + undefined8 local_430; + undefined8 local_428; + long local_418; + uint *local_410; + long *local_408; + long alStack_400 [128]; + + uStack_468 = 0; + local_470 = 0; + if ((param_1 == (cv *)0x0) || ((*(uint *)param_1 & 0xffff0000) != 0x42990000)) { + this = (cv *)cvGetMat(param_1,auStack_558,0,0); + if (1 < (*(uint *)this & 0xfff) - 0xc) { + if (1 < (*(uint *)this & 0xfff)) { + local_450._0_4_ = 0; + local_450._4_4_ = 0; + uStack_448 = 0; + in_x5 = (AutoBuffer *)cv::String::allocate((String *)&local_450,0x38); + uVar17 = DAT_0045c820; + uVar16 = DAT_0045c818; + uVar15 = _LAB_0045c810; + uVar14 = DAT_0045c808; + uVar13 = DAT_0045c800; + uVar12 = DAT_0045c7f8; + *(undefined8 *)(in_x5 + 0x30) = s_function_0045c828._0_8_; + *(undefined8 *)in_x5 = uVar12; + *(undefined8 *)(in_x5 + 8) = uVar13; + *(undefined8 *)(in_x5 + 0x10) = uVar14; + *(undefined8 *)(in_x5 + 0x18) = uVar15; + *(undefined8 *)(in_x5 + 0x20) = uVar16; + *(undefined8 *)(in_x5 + 0x28) = uVar17; + cv::error(-0xd2,(String *)&local_450,"CvRect cvBoundingRect(CvArr*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x438); + cv::String::deallocate((String *)&local_450); + } + cv::cvarrToMat(this,(void *)0x0,true,false,0,in_x5); + if ((1 < ((uint)local_450 & 7)) || (((uint)local_450 >> 3 & 0x1ff) != 0)) { + local_530[0] = 0; + local_530[1] = 0; + local_530[2] = 0; + local_530[3] = 0; + pcVar22 = (char *)cv::String::allocate((String *)local_530,0x2b); + cVar1 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8[0x2a]; + uVar18 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._40_2_; + uVar15 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._24_8_; + uVar14 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._16_8_; + uVar13 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._8_8_; + uVar12 = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._0_8_; + *(undefined8 *)(pcVar22 + 0x20) = s_img_depth___<__CV_8S_&&_img_chan_0045c6e8._32_8_; + *(undefined2 *)(pcVar22 + 0x28) = uVar18; + pcVar22[0x2a] = cVar1; + *(undefined8 *)pcVar22 = uVar12; + *(undefined8 *)(pcVar22 + 8) = uVar13; + *(undefined8 *)(pcVar22 + 0x10) = uVar14; + *(undefined8 *)(pcVar22 + 0x18) = uVar15; + cv::error(-0xd7,(String *)local_530,"cv::Rect cv::maskBoundingRect(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x25d); + cv::String::deallocate((String *)local_530); + } + uVar37 = local_410[1]; + if ((int)*local_410 < 1) { + iVar21 = 0; + iVar27 = 0; + uVar40 = 0; + uVar43 = 0; + } + else { + uVar67 = 0xffffffff; + uVar33 = 0; + uVar40 = 0xffffffff; + uVar34 = 0xffffffff; + uVar43 = uVar37; + do { + piVar31 = (int *)((ulong)(local_440 + 3) & 0xfffffffffffffffc); + uVar30 = (int)piVar31 - (int)local_440; + if ((int)uVar37 < (int)uVar30) { + uVar30 = uVar37; + } + if ((int)uVar30 < 1) { +LAB_001efba4: + if ((int)uVar30 < (int)uVar37) { + uVar43 = uVar43 - uVar30; + bVar2 = false; + uVar34 = uVar34 - uVar30; +joined_r0x001efbc4: + if (((int)(uVar43 - 3) < 1) || (*piVar31 != 0)) { + uVar72 = 0; + } + else { + uVar72 = 0; + piVar23 = piVar31; + do { + piVar23 = piVar23 + 1; + uVar72 = uVar72 + 4; + if ((int)(uVar43 - 3) <= (int)uVar72) break; + } while (*piVar23 == 0); + } + uVar76 = uVar34; + if ((int)uVar72 < (int)uVar43) { + pcVar22 = (char *)((long)piVar31 + (long)(int)uVar72); + cVar1 = *(char *)((long)piVar31 + (long)(int)uVar72); + while (cVar1 == '\0') { + uVar72 = uVar72 + 1; + if (uVar72 == uVar43) goto LAB_001efc1c; + pcVar22 = pcVar22 + 1; + cVar1 = *pcVar22; + } + uVar43 = uVar72; + if ((int)uVar34 < (int)uVar72) { + bVar2 = true; + uVar34 = uVar72; + uVar76 = uVar72; + } + else { + bVar2 = true; + } + } + else { +LAB_001efc1c: + if ((int)uVar34 < (int)uVar72) { + uVar76 = uVar72 - 1; + } + } + uVar49 = (uVar37 - uVar30) - 1; + if ((int)uVar76 < (int)uVar49) { + if ((uVar49 & 3) != 3) { + if (*(char *)((long)piVar31 + (long)(int)uVar49) == '\0') { + pcVar22 = (char *)((long)piVar31 + (long)(int)uVar49); + do { + uVar49 = uVar49 - 1; + if (uVar49 == uVar76) break; + if ((uVar49 & 3) == 3) { + if ((int)(uVar76 + 3) < (int)uVar49) { + iVar21 = *(int *)((long)piVar31 + (long)(int)uVar49 + -3); + lVar24 = (long)piVar31 + (long)(int)uVar49; + goto joined_r0x001efe8c; + } + break; + } + pcVar22 = pcVar22 + -1; + } while (*pcVar22 == '\0'); + } + goto LAB_001efc74; + } + if ((int)uVar49 <= (int)(uVar76 + 3)) goto LAB_001efc7c; + lVar29 = (long)(int)uVar49; + lVar24 = (long)piVar31 + lVar29; + if (*(int *)(lVar24 + -3) == 0) { + do { + uVar49 = uVar49 - 4; + if ((int)uVar49 <= (int)(uVar76 + 3)) { + if ((int)uVar49 <= (int)uVar76) goto LAB_001efca4; + goto LAB_001efc7c; + } + iVar21 = *(int *)(lVar24 + -7); + lVar24 = lVar24 + -4; +joined_r0x001efe8c: + } while (iVar21 == 0); + goto LAB_001efc74; + } +LAB_001efc80: + pcVar22 = (char *)(lVar29 + (long)piVar31); + cVar1 = *(char *)((long)piVar31 + lVar29); + uVar32 = uVar49; + while (cVar1 == '\0') { + uVar32 = uVar32 - 1; + uVar49 = uVar76; + if (uVar32 == uVar76) goto LAB_001efca4; + pcVar22 = pcVar22 + -1; + cVar1 = *pcVar22; + } + } + else { +LAB_001efc74: + if ((int)uVar76 < (int)uVar49) { +LAB_001efc7c: + lVar29 = (long)(int)uVar49; + goto LAB_001efc80; + } +LAB_001efca4: + uVar32 = uVar34; + if (!bVar2) { + uVar72 = uVar72 & 0xfffffffc; + if (((int)uVar72 < (int)(uVar49 - 2)) && + (*(int *)((long)piVar31 + (long)(int)uVar72) == 0)) { + piVar23 = (int *)((long)piVar31 + (long)(int)uVar72); + do { + uVar72 = uVar72 + 4; + if ((int)(uVar49 - 2) <= (int)uVar72) break; + piVar23 = piVar23 + 1; + } while (*piVar23 == 0); + } + if ((int)uVar49 < (int)uVar72) { +LAB_001efd10: + uVar43 = uVar43 + uVar30; + uVar34 = uVar34 + uVar30; + goto LAB_001efd18; + } + if (*(char *)((long)piVar31 + (long)(int)uVar72) == '\0') { + pcVar22 = (char *)((long)(int)uVar72 + (long)piVar31); + do { + uVar72 = uVar72 + 1; + if ((int)uVar49 < (int)uVar72) goto LAB_001efd10; + pcVar22 = pcVar22 + 1; + } while (*pcVar22 == '\0'); + } + } + } + uVar43 = uVar43 + uVar30; + uVar34 = uVar32 + uVar30; + goto LAB_001efe50; + } + } + else { + if (*local_440 == '\0') { + uVar72 = 0; + pcVar22 = local_440; + do { + pcVar22 = pcVar22 + 1; + uVar72 = uVar72 + 1; + if (uVar72 == uVar30) goto LAB_001efba4; + } while (*pcVar22 == '\0'); + } + else { + uVar72 = 0; + } + if ((int)uVar72 < (int)uVar43) { + uVar43 = uVar72; + } + if ((int)uVar34 < (int)uVar72) { + uVar34 = uVar72; + } + if ((int)uVar30 < (int)uVar37) { + uVar43 = uVar43 - uVar30; + bVar2 = true; + uVar34 = uVar34 - uVar30; + goto joined_r0x001efbc4; + } +LAB_001efe50: + uVar67 = uVar33; + if ((int)uVar40 < 0) { + uVar40 = uVar33; + } + } +LAB_001efd18: + uVar33 = uVar33 + 1; + local_440 = local_440 + *local_408; + } while (uVar33 != *local_410); + if ((int)uVar43 < (int)uVar37) { + iVar21 = (uVar67 - uVar40) + 1; + iVar27 = (uVar34 - uVar43) + 1; + } + else { + uVar40 = 0; + iVar21 = uVar67 + 1; + iVar27 = uVar34 + 1; + uVar43 = 0; + } + } + if (local_418 != 0) { + piVar31 = (int *)(local_418 + 0x14); + do { + iVar20 = *piVar31; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar2) { + *piVar31 = iVar20 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar20 == 1) { + cv::Mat::deallocate((Mat *)&local_450); + } + } + local_418 = 0; + local_440 = (char *)0x0; + local_428 = 0; + local_430 = 0; + local_438 = 0; + if (0 < local_450._4_4_) { + iVar20 = 0; + do { + *local_410 = 0; + iVar20 = iVar20 + 1; + local_410 = local_410 + 1; + } while (iVar20 < local_450._4_4_); + } + if (local_408 != alStack_400) { + cv::fastFree(local_408); + } + goto LAB_001efdc4; + } + param_1 = (cv *)cvPointSeqFromMat(0,this,auStack_4d0,auStack_578); +LAB_001effa4: + if (*(uint *)(param_1 + 0x28) == 0) { + iVar21 = 0; + iVar27 = 0; + uVar43 = 0; + uVar40 = 0; + goto LAB_001efdc4; + } + param_2 = 0; +LAB_001effd8: + local_450 = &local_440; + uStack_448 = 0x88; + cv::cvarrToMat(param_1,(void *)0x0,false,false,(int)&local_450,(AutoBuffer *)0x88); + iVar21 = cv::Mat::checkVector((Mat *)local_530,2,-1,true); + uVar37 = local_530[0] & 7; + if ((iVar21 < 0) || (1 < uVar37 - 4)) { + local_588 = 0; + local_580 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_588,0x34); + uVar17 = s_npoints_>__0_____depth____CV_32F_0045c648._40_8_; + uVar16 = s_npoints_>__0_____depth____CV_32F_0045c648._32_8_; + uVar15 = s_npoints_>__0_____depth____CV_32F_0045c648._24_8_; + uVar14 = s_npoints_>__0_____depth____CV_32F_0045c648._16_8_; + uVar13 = s_npoints_>__0_____depth____CV_32F_0045c648._8_8_; + uVar12 = s_npoints_>__0_____depth____CV_32F_0045c648._0_8_; + *(undefined4 *)(pcVar22 + 0x30) = s_npoints_>__0_____depth____CV_32F_0045c648._48_4_; + *(undefined8 *)pcVar22 = uVar12; + *(undefined8 *)(pcVar22 + 8) = uVar13; + *(undefined8 *)(pcVar22 + 0x10) = uVar14; + *(undefined8 *)(pcVar22 + 0x18) = uVar15; + *(undefined8 *)(pcVar22 + 0x20) = uVar16; + *(undefined8 *)(pcVar22 + 0x28) = uVar17; + cv::error(-0xd7,(String *)&local_588,"cv::Rect cv::pointSetBoundingRect(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x1e7); + cv::String::deallocate((String *)&local_588); + } + if (iVar21 == 0) { + iVar21 = 0; + iVar27 = 0; + uVar40 = 0; + uVar43 = 0; + } + else { + uVar40 = local_520[1]; + uVar43 = *local_520; + if (uVar37 == 5) { + uVar33 = 0x7fffffff; + uVar37 = uVar33; + if (-1 < (int)uVar43) { + uVar37 = 0; + } + if (-1 < (int)uVar40) { + uVar33 = 0; + } + uVar37 = uVar37 ^ uVar43; + uVar33 = uVar33 ^ uVar40; + uVar67 = uVar33; + uVar34 = uVar37; + if (1 < iVar21) { + uVar43 = (iVar21 - 5U >> 2) + 1; + iVar27 = uVar43 * 4; + if (iVar21 - 2U < 3) { + uVar28 = 1; + } + else { + auVar42._0_8_ = CONCAT44(uVar37,uVar37); + auVar42._8_4_ = uVar37; + auVar42._12_4_ = uVar37; + puVar26 = local_520 + 2; + auVar39._0_8_ = CONCAT44(uVar33,uVar33); + auVar39._8_4_ = uVar33; + auVar39._12_4_ = uVar33; + uVar37 = 0; + auVar36._8_8_ = auVar42._8_8_; + auVar36._0_8_ = auVar42._0_8_; + auVar68._8_8_ = auVar39._8_8_; + auVar68._0_8_ = auVar39._0_8_; + do { + uVar30 = *puVar26; + uVar40 = puVar26[1]; + uVar72 = puVar26[2]; + uVar33 = puVar26[3]; + uVar76 = puVar26[4]; + uVar34 = puVar26[5]; + uVar49 = puVar26[6]; + uVar67 = puVar26[7]; + puVar26 = puVar26 + 8; + uVar37 = uVar37 + 1; + iVar20 = -(uint)(-1 < (int)uVar30); + iVar7 = -(uint)(-1 < (int)uVar72); + iVar8 = -(uint)(-1 < (int)uVar76); + iVar9 = -(uint)(-1 < (int)uVar49); + iVar44 = -(uint)(-1 < (int)uVar40); + iVar47 = -(uint)(-1 < (int)uVar33); + iVar48 = -(uint)(-1 < (int)uVar34); + iVar50 = -(uint)(-1 < (int)uVar67); + uVar28 = CONCAT17(~(byte)((uint)iVar47 >> 0x18), + CONCAT16(~(byte)((uint)iVar47 >> 0x10), + CONCAT15(~(byte)((uint)iVar47 >> 8), + CONCAT14(~(byte)iVar47, + CONCAT13(~(byte)((uint)iVar44 >> 0x18), + CONCAT12(~(byte)((uint)iVar44 >> + 0x10), + CONCAT11(~(byte)((uint) + iVar44 >> 8),~(byte)iVar44))))))) & + 0x7fffffff7fffffff; + bVar51 = ~(byte)iVar20 ^ (byte)uVar30; + bVar52 = ~(byte)((uint)iVar20 >> 8) ^ (byte)(uVar30 >> 8); + bVar53 = ~(byte)((uint)iVar20 >> 0x10) ^ (byte)(uVar30 >> 0x10); + bVar54 = ~(byte)((uint)iVar20 >> 0x18) & 0x7f ^ (byte)(uVar30 >> 0x18); + bVar55 = ~(byte)iVar7 ^ (byte)uVar72; + bVar56 = ~(byte)((uint)iVar7 >> 8) ^ (byte)(uVar72 >> 8); + bVar57 = ~(byte)((uint)iVar7 >> 0x10) ^ (byte)(uVar72 >> 0x10); + bVar58 = ~(byte)((uint)iVar7 >> 0x18) & 0x7f ^ (byte)(uVar72 >> 0x18); + bVar59 = ~(byte)iVar8 ^ (byte)uVar76; + bVar60 = ~(byte)((uint)iVar8 >> 8) ^ (byte)(uVar76 >> 8); + bVar61 = ~(byte)((uint)iVar8 >> 0x10) ^ (byte)(uVar76 >> 0x10); + bVar62 = ~(byte)((uint)iVar8 >> 0x18) & 0x7f ^ (byte)(uVar76 >> 0x18); + bVar63 = ~(byte)iVar9 ^ (byte)uVar49; + bVar64 = ~(byte)((uint)iVar9 >> 8) ^ (byte)(uVar49 >> 8); + bVar65 = ~(byte)((uint)iVar9 >> 0x10) ^ (byte)(uVar49 >> 0x10); + bVar66 = ~(byte)((uint)iVar9 >> 0x18) & 0x7f ^ (byte)(uVar49 >> 0x18); + auVar46[0] = (byte)uVar28 ^ (byte)uVar40; + auVar46[1] = (byte)(uVar28 >> 8) ^ (byte)(uVar40 >> 8); + auVar46[2] = (byte)(uVar28 >> 0x10) ^ (byte)(uVar40 >> 0x10); + auVar46[3] = (byte)(uVar28 >> 0x18) ^ (byte)(uVar40 >> 0x18); + auVar46[4] = (byte)(uVar28 >> 0x20) ^ (byte)uVar33; + auVar46[5] = (byte)(uVar28 >> 0x28) ^ (byte)(uVar33 >> 8); + auVar46[6] = (byte)(uVar28 >> 0x30) ^ (byte)(uVar33 >> 0x10); + auVar46[7] = (byte)(uVar28 >> 0x38) ^ (byte)(uVar33 >> 0x18); + auVar46[8] = ~(byte)iVar48 ^ (byte)uVar34; + auVar46[9] = ~(byte)((uint)iVar48 >> 8) ^ (byte)(uVar34 >> 8); + auVar46[10] = ~(byte)((uint)iVar48 >> 0x10) ^ (byte)(uVar34 >> 0x10); + auVar46[0xb] = ~(byte)((uint)iVar48 >> 0x18) & 0x7f ^ (byte)(uVar34 >> 0x18); + auVar46[0xc] = ~(byte)iVar50 ^ (byte)uVar67; + auVar46[0xd] = ~(byte)((uint)iVar50 >> 8) ^ (byte)(uVar67 >> 8); + auVar46[0xe] = ~(byte)((uint)iVar50 >> 0x10) ^ (byte)(uVar67 >> 0x10); + auVar46[0xf] = ~(byte)((uint)iVar50 >> 0x18) & 0x7f ^ (byte)(uVar67 >> 0x18); + auVar5[1] = bVar52; + auVar5[0] = bVar51; + auVar5[2] = bVar53; + auVar5[3] = bVar54; + auVar5[4] = bVar55; + auVar5[5] = bVar56; + auVar5[6] = bVar57; + auVar5[7] = bVar58; + auVar5[8] = bVar59; + auVar5[9] = bVar60; + auVar5[10] = bVar61; + auVar5[0xb] = bVar62; + auVar5[0xc] = bVar63; + auVar5[0xd] = bVar64; + auVar5[0xe] = bVar65; + auVar5[0xf] = bVar66; + auVar42 = NEON_smin(auVar42,auVar5,4); + auVar6[1] = bVar52; + auVar6[0] = bVar51; + auVar6[2] = bVar53; + auVar6[3] = bVar54; + auVar6[4] = bVar55; + auVar6[5] = bVar56; + auVar6[6] = bVar57; + auVar6[7] = bVar58; + auVar6[8] = bVar59; + auVar6[9] = bVar60; + auVar6[10] = bVar61; + auVar6[0xb] = bVar62; + auVar6[0xc] = bVar63; + auVar6[0xd] = bVar64; + auVar6[0xe] = bVar65; + auVar6[0xf] = bVar66; + auVar36 = NEON_smax(auVar36,auVar6,4); + auVar39 = NEON_smin(auVar39,auVar46,4); + auVar68 = NEON_smax(auVar68,auVar46,4); + } while (uVar37 < uVar43); + uVar67 = NEON_smaxv(auVar68,4); + uVar33 = NEON_sminv(auVar39,4); + uVar28 = (ulong)(iVar27 + 1); + uVar34 = NEON_smaxv(auVar36,4); + uVar37 = NEON_sminv(auVar42,4); + if (iVar27 == iVar21 + -1) goto LAB_001f0578; + } + uVar25 = -(uVar28 >> 0x1f) & 0xfffffff800000000 | uVar28 << 3; + uVar30 = *(uint *)((long)local_520 + uVar25 + 4); + uVar40 = 0x7fffffff; + uVar43 = uVar40; + if (-1 < (int)*(uint *)((long)local_520 + uVar25)) { + uVar43 = 0; + } + uVar43 = uVar43 ^ *(uint *)((long)local_520 + uVar25); + if (-1 < (int)uVar30) { + uVar40 = 0; + } + uVar40 = uVar40 ^ uVar30; + if ((int)uVar43 < (int)uVar37) { + uVar37 = uVar43; + } + if ((int)uVar34 < (int)uVar43) { + uVar34 = uVar43; + } + if ((int)uVar40 < (int)uVar33) { + uVar33 = uVar40; + } + if ((int)uVar67 < (int)uVar40) { + uVar67 = uVar40; + } + if ((int)uVar28 + 1 < iVar21) { + uVar72 = *(uint *)((long)local_520 + uVar25 + 8); + uVar30 = *(uint *)((long)local_520 + uVar25 + 0xc); + uVar40 = 0x7fffffff; + uVar43 = uVar40; + if (-1 < (int)uVar72) { + uVar43 = 0; + } + uVar43 = uVar43 ^ uVar72; + uVar72 = uVar40; + if (-1 < (int)uVar30) { + uVar72 = 0; + } + uVar72 = uVar72 ^ uVar30; + if ((int)uVar43 < (int)uVar37) { + uVar37 = uVar43; + } + if ((int)uVar34 < (int)uVar43) { + uVar34 = uVar43; + } + if ((int)uVar72 < (int)uVar33) { + uVar33 = uVar72; + } + if ((int)uVar67 < (int)uVar72) { + uVar67 = uVar72; + } + if ((int)uVar28 + 2 < iVar21) { + uVar72 = *(uint *)((long)local_520 + uVar25 + 0x10); + uVar30 = *(uint *)((long)local_520 + uVar25 + 0x14); + uVar43 = uVar40; + if (-1 < (int)uVar72) { + uVar43 = 0; + } + uVar43 = uVar43 ^ uVar72; + if (-1 < (int)uVar30) { + uVar40 = 0; + } + uVar40 = uVar40 ^ uVar30; + if ((int)uVar43 < (int)uVar37) { + uVar37 = uVar43; + } + if ((int)uVar34 < (int)uVar43) { + uVar34 = uVar43; + } + if ((int)uVar40 < (int)uVar33) { + uVar33 = uVar40; + } + if ((int)uVar67 < (int)uVar40) { + uVar67 = uVar40; + } + } + } + } +LAB_001f0578: + uVar40 = 0x7fffffff; + uVar43 = uVar40; + if (-1 < (int)uVar37) { + uVar43 = 0; + } + iVar21 = (int)(float)(uVar43 ^ uVar37); + if (-1 < (int)uVar33) { + uVar40 = 0; + } + uVar43 = iVar21 - (uint)((float)(uVar43 ^ uVar37) < (float)iVar21); + iVar21 = (int)(float)(uVar40 ^ uVar33); + uVar30 = 0x7fffffff; + uVar37 = uVar30; + if (-1 < (int)uVar34) { + uVar37 = 0; + } + uVar40 = iVar21 - (uint)((float)(uVar40 ^ uVar33) < (float)iVar21); + iVar21 = (int)(float)(uVar37 ^ uVar34); + if (-1 < (int)uVar67) { + uVar30 = 0; + } + iVar27 = ((iVar21 - (uint)((float)(uVar37 ^ uVar34) < (float)iVar21)) - uVar43) + 1; + iVar21 = (int)(float)(uVar30 ^ uVar67); + iVar21 = ((iVar21 - (uint)((float)(uVar30 ^ uVar67) < (float)iVar21)) - uVar40) + 1; + } + else if (iVar21 < 2) { + iVar21 = 1; + iVar27 = 1; + } + else { + uVar37 = (iVar21 - 5U >> 2) + 1; + iVar27 = uVar37 * 4; + if (iVar21 - 2U < 4) { + uVar28 = 1; + uVar33 = uVar40; + uVar37 = uVar43; +LAB_001f015c: + uVar25 = -(uVar28 >> 0x1f) & 0xfffffff800000000 | uVar28 << 3; + iVar27 = (int)uVar28; + uVar67 = *(uint *)((long)local_520 + uVar25); + uVar34 = *(uint *)((long)local_520 + uVar25 + 4); + if ((int)uVar67 < (int)uVar37) { + uVar37 = uVar67; + } + if ((int)uVar43 < (int)uVar67) { + uVar43 = uVar67; + } + if ((int)uVar34 < (int)uVar40) { + uVar40 = uVar34; + } + if ((int)uVar33 < (int)uVar34) { + uVar33 = uVar34; + } + uVar34 = uVar43; + if (iVar27 + 1 < iVar21) { + uVar30 = *(uint *)((long)local_520 + uVar25 + 8); + uVar34 = *(uint *)((long)local_520 + uVar25 + 0xc); + uVar67 = uVar30; + if ((int)uVar37 < (int)uVar30) { + uVar67 = uVar37; + } + if ((int)uVar43 < (int)uVar30) { + uVar43 = uVar30; + } + if ((int)uVar34 < (int)uVar40) { + uVar40 = uVar34; + } + if ((int)uVar33 < (int)uVar34) { + uVar33 = uVar34; + } + uVar37 = uVar67; + uVar34 = uVar43; + if (iVar27 + 2 < iVar21) { + uVar34 = *(uint *)((long)local_520 + uVar25 + 0x10); + uVar37 = *(uint *)((long)local_520 + uVar25 + 0x14); + if ((int)uVar34 < (int)uVar67) { + uVar67 = uVar34; + } + if ((int)uVar43 < (int)uVar34) { + uVar43 = uVar34; + } + if ((int)uVar37 < (int)uVar40) { + uVar40 = uVar37; + } + if ((int)uVar33 < (int)uVar37) { + uVar33 = uVar37; + } + uVar37 = uVar67; + uVar34 = uVar43; + if (iVar27 + 3 < iVar21) { + uVar37 = *(uint *)((long)local_520 + uVar25 + 0x18); + uVar30 = *(uint *)((long)local_520 + uVar25 + 0x1c); + if ((int)uVar37 < (int)uVar67) { + uVar67 = uVar37; + } + if ((int)uVar43 < (int)uVar37) { + uVar43 = uVar37; + } + if ((int)uVar30 < (int)uVar40) { + uVar40 = uVar30; + } + uVar37 = uVar67; + uVar34 = uVar43; + if ((int)uVar33 < (int)uVar30) { + uVar33 = uVar30; + } + } + } + } + } + else { + auVar38._0_8_ = CONCAT44(uVar43,uVar43); + auVar38._8_4_ = uVar43; + auVar38._12_4_ = uVar43; + puVar26 = local_520 + 2; + auVar41._0_8_ = CONCAT44(uVar40,uVar40); + auVar41._8_4_ = uVar40; + auVar41._12_4_ = uVar40; + uVar43 = 0; + auVar45._8_8_ = auVar38._8_8_; + auVar45._0_8_ = auVar38._0_8_; + auVar35._8_8_ = auVar41._8_8_; + auVar35._0_8_ = auVar41._0_8_; + do { + uVar40 = *puVar26; + puVar19 = puVar26 + 1; + uVar33 = puVar26[2]; + uVar30 = puVar26[3]; + uVar34 = puVar26[4]; + uVar72 = puVar26[5]; + uVar67 = puVar26[6]; + uVar76 = puVar26[7]; + puVar26 = puVar26 + 8; + uVar43 = uVar43 + 1; + uVar69 = (undefined1)(uVar30 >> 8); + uVar70 = (undefined1)(uVar30 >> 0x10); + uVar71 = (undefined1)(uVar30 >> 0x18); + uVar73 = (undefined1)(uVar72 >> 8); + uVar74 = (undefined1)(uVar72 >> 0x10); + uVar75 = (undefined1)(uVar72 >> 0x18); + uVar77 = (undefined1)(uVar76 >> 8); + uVar78 = (undefined1)(uVar76 >> 0x10); + uVar79 = (undefined1)(uVar76 >> 0x18); + auVar10[4] = (char)uVar33; + auVar10._0_4_ = uVar40; + auVar10[5] = (char)(uVar33 >> 8); + auVar10[6] = (char)(uVar33 >> 0x10); + auVar10[7] = (char)(uVar33 >> 0x18); + auVar10[8] = (char)uVar34; + auVar10[9] = (char)(uVar34 >> 8); + auVar10[10] = (char)(uVar34 >> 0x10); + auVar10[0xb] = (char)(uVar34 >> 0x18); + auVar10[0xc] = (char)uVar67; + auVar10[0xd] = (char)(uVar67 >> 8); + auVar10[0xe] = (char)(uVar67 >> 0x10); + auVar10[0xf] = (char)(uVar67 >> 0x18); + auVar4[4] = (char)uVar30; + auVar4._0_4_ = *puVar19; + auVar4[5] = uVar69; + auVar4[6] = uVar70; + auVar4[7] = uVar71; + auVar4[8] = (char)uVar72; + auVar3[4] = (char)uVar30; + auVar3._0_4_ = *puVar19; + auVar3[5] = uVar69; + auVar3[6] = uVar70; + auVar3[7] = uVar71; + auVar3[8] = (char)uVar72; + auVar38 = NEON_smin(auVar38,auVar10,4); + auVar45 = NEON_smax(auVar45,auVar10,4); + auVar3[9] = uVar73; + auVar3[10] = uVar74; + auVar3[0xb] = uVar75; + auVar3[0xc] = (char)uVar76; + auVar3[0xd] = uVar77; + auVar3[0xe] = uVar78; + auVar3[0xf] = uVar79; + auVar41 = NEON_smin(auVar41,auVar3,4); + auVar4[9] = uVar73; + auVar4[10] = uVar74; + auVar4[0xb] = uVar75; + auVar4[0xc] = (char)uVar76; + auVar4[0xd] = uVar77; + auVar4[0xe] = uVar78; + auVar4[0xf] = uVar79; + auVar35 = NEON_smax(auVar35,auVar4,4); + } while (uVar43 < uVar37); + uVar33 = NEON_smaxv(auVar35,4); + uVar40 = NEON_sminv(auVar41,4); + uVar28 = (ulong)(iVar27 + 1); + uVar43 = NEON_smaxv(auVar45,4); + uVar37 = NEON_sminv(auVar38,4); + uVar34 = uVar43; + if (iVar27 != iVar21 + -1) goto LAB_001f015c; + } + uVar43 = uVar37; + iVar21 = (uVar33 - uVar40) + 1; + iVar27 = (uVar34 - uVar43) + 1; + } + } + if (local_4f8 != 0) { + piVar31 = (int *)(local_4f8 + 0x14); + do { + iVar20 = *piVar31; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar2) { + *piVar31 = iVar20 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar20 == 1) { + cv::Mat::deallocate((Mat *)local_530); + } + } + local_4f8 = 0; + local_520 = (uint *)0x0; + local_508 = 0; + local_510 = 0; + local_518 = 0; + if (0 < (int)local_530[1]) { + iVar20 = 0; + do { + *local_4f0 = 0; + iVar20 = iVar20 + 1; + local_4f0 = local_4f0 + 1; + } while (iVar20 < (int)local_530[1]); + } + if (local_4e8 != auStack_4e0) { + cv::fastFree(local_4e8); + } + if ((local_450 != &local_440) && (local_450 != (char **)0x0)) { + operator_delete__(local_450); + } + if (param_2 == 0) goto LAB_001efdc4; + } + else { + if (1 < (*(uint *)param_1 & 0xfff) - 0xc) { + local_450._0_4_ = 0; + local_450._4_4_ = 0; + uStack_448 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_450,0x19); + cVar1 = s_Unsupported_sequence_type_0045c718[0x18]; + uVar13 = s_Unsupported_sequence_type_0045c718._8_8_; + uVar12 = s_Unsupported_sequence_type_0045c718._0_8_; + *(undefined8 *)(pcVar22 + 0x10) = s_Unsupported_sequence_type_0045c718._16_8_; + pcVar22[0x18] = cVar1; + *(undefined8 *)pcVar22 = uVar12; + *(undefined8 *)(pcVar22 + 8) = uVar13; + cv::error(-5,(String *)&local_450,"CvRect cvBoundingRect(CvArr*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/shapedescr.cpp",0x424); + cv::String::deallocate((String *)&local_450); + } + if ((int)*(uint *)(param_1 + 4) < 0x80) goto LAB_001effa4; + if (param_2 == 0) { + return *(undefined1 (*) [16])(param_1 + 0x60); + } + if (*(uint *)(param_1 + 0x28) != 0) goto LAB_001effd8; + iVar21 = 0; + iVar27 = 0; + uVar40 = 0; + uVar43 = 0; + } + *(ulong *)(param_1 + 0x68) = CONCAT44(iVar21,iVar27); + *(ulong *)(param_1 + 0x60) = CONCAT44(uVar40,uVar43); +LAB_001efdc4: + auVar11._12_4_ = iVar21; + auVar11._8_4_ = iVar27; + auVar11._4_4_ = uVar40; + auVar11._0_4_ = uVar43; + return auVar11; +} + + +================================================================== + +### FUNC 001f06f8 (8 bytes) name=FUN_001f06f8 + +void FUN_001f06f8(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f0700 (8 bytes) name=FUN_001f0700 + +void FUN_001f0700(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f0708 (8 bytes) name=FUN_001f0708 + +void FUN_001f0708(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f0710 (8 bytes) name=FUN_001f0710 + +void FUN_001f0710(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f0718 (8 bytes) name=FUN_001f0718 + +void FUN_001f0718(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f0720 (4 bytes) name=FUN_001f0720 + +void FUN_001f0720(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0724 (4 bytes) name=FUN_001f0724 + +void FUN_001f0724(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0728 (4 bytes) name=FUN_001f0728 + +void FUN_001f0728(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f072c (4 bytes) name=FUN_001f072c + +void FUN_001f072c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0730 (4 bytes) name=FUN_001f0730 + +void FUN_001f0730(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0734 (4 bytes) name=FUN_001f0734 + +void FUN_001f0734(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0738 (4 bytes) name=FUN_001f0738 + +void FUN_001f0738(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f073c (4 bytes) name=FUN_001f073c + +void FUN_001f073c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0740 (4 bytes) name=FUN_001f0740 + +void FUN_001f0740(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0744 (4 bytes) name=FUN_001f0744 + +void FUN_001f0744(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0748 (4 bytes) name=FUN_001f0748 + +void FUN_001f0748(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f074c (4 bytes) name=FUN_001f074c + +void FUN_001f074c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0750 (4 bytes) name=FUN_001f0750 + +void FUN_001f0750(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0754 (4 bytes) name=FUN_001f0754 + +void FUN_001f0754(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0758 (4 bytes) name=FUN_001f0758 + +void FUN_001f0758(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f075c (4 bytes) name=FUN_001f075c + +void FUN_001f075c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0760 (4 bytes) name=FUN_001f0760 + +void FUN_001f0760(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0764 (4 bytes) name=FUN_001f0764 + +void FUN_001f0764(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0768 (4 bytes) name=FUN_001f0768 + +void FUN_001f0768(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f076c (4 bytes) name=FUN_001f076c + +void FUN_001f076c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0770 (4 bytes) name=FUN_001f0770 + +void FUN_001f0770(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0774 (4 bytes) name=FUN_001f0774 + +void FUN_001f0774(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0778 (4 bytes) name=FUN_001f0778 + +void FUN_001f0778(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f077c (4 bytes) name=FUN_001f077c + +void FUN_001f077c(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0780 (4 bytes) name=FUN_001f0780 + +void FUN_001f0780(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0784 (4 bytes) name=FUN_001f0784 + +void FUN_001f0784(void) + +{ + return; +} + + +================================================================== + +### FUNC 001f0788 (60 bytes) name=FUN_001f0788 + +void FUN_001f0788(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f07c4 (60 bytes) name=FUN_001f07c4 + +void FUN_001f07c4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0800 (60 bytes) name=FUN_001f0800 + +void FUN_001f0800(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f083c (60 bytes) name=FUN_001f083c + +void FUN_001f083c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0878 (60 bytes) name=FUN_001f0878 + +void FUN_001f0878(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f08b4 (60 bytes) name=FUN_001f08b4 + +void FUN_001f08b4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f08f0 (60 bytes) name=FUN_001f08f0 + +void FUN_001f08f0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f092c (60 bytes) name=FUN_001f092c + +void FUN_001f092c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0968 (60 bytes) name=FUN_001f0968 + +void FUN_001f0968(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f09a4 (60 bytes) name=FUN_001f09a4 + +void FUN_001f09a4(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f09e0 (60 bytes) name=FUN_001f09e0 + +void FUN_001f09e0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0a1c (60 bytes) name=FUN_001f0a1c + +void FUN_001f0a1c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0a58 (60 bytes) name=FUN_001f0a58 + +void FUN_001f0a58(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0a94 (60 bytes) name=FUN_001f0a94 + +void FUN_001f0a94(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0ad0 (60 bytes) name=FUN_001f0ad0 + +void FUN_001f0ad0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0b0c (60 bytes) name=FUN_001f0b0c + +void FUN_001f0b0c(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0b48 (60 bytes) name=FUN_001f0b48 + +void FUN_001f0b48(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0b84 (60 bytes) name=FUN_001f0b84 + +void FUN_001f0b84(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0bc0 (60 bytes) name=FUN_001f0bc0 + +void FUN_001f0bc0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0bfc (60 bytes) name=FUN_001f0bfc + +void FUN_001f0bfc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0c38 (60 bytes) name=FUN_001f0c38 + +void FUN_001f0c38(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0c74 (60 bytes) name=FUN_001f0c74 + +void FUN_001f0c74(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0cb0 (60 bytes) name=FUN_001f0cb0 + +void FUN_001f0cb0(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0cec (60 bytes) name=FUN_001f0cec + +void FUN_001f0cec(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0d28 (60 bytes) name=FUN_001f0d28 + +void FUN_001f0d28(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0d64 (60 bytes) name=FUN_001f0d64 + +void FUN_001f0d64(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 001f0da0 (192 bytes) name=FUN_001f0da0 + +void FUN_001f0da0(long param_1,double *param_2,long param_3,int param_4,int param_5) + +{ + double *pdVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + double *pdVar6; + long lVar7; + double dVar8; + double dVar9; + + iVar2 = (param_4 + -1) * param_5; + uVar3 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar7 = (long)param_5; + pdVar1 = param_2 + (ulong)(param_5 - 1) + 1; + param_3 = param_3 + lVar7 * 8; + do { + if ((int)uVar3 < 1) { + dVar8 = 0.0; + } + else { + dVar8 = 0.0; + iVar4 = 0; + pdVar6 = param_2; + do { + iVar4 = iVar4 + param_5; + dVar9 = *pdVar6; + pdVar6 = pdVar6 + lVar7; + dVar8 = dVar8 + dVar9 * dVar9; + } while (iVar4 < (int)uVar3); + } + *(double *)(param_3 + lVar7 * -8) = dVar8; + if (0 < iVar2) { + lVar5 = 0; + iVar4 = 0; + do { + iVar4 = iVar4 + param_5; + dVar9 = *(double *) + ((long)param_2 + + lVar5 + (-(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3)); + dVar8 = dVar8 + (dVar9 * dVar9 - + *(double *)((long)param_2 + lVar5) * *(double *)((long)param_2 + lVar5)); + *(double *)(param_3 + lVar5) = dVar8; + lVar5 = lVar5 + lVar7 * 8; + } while (iVar4 < iVar2); + } + param_2 = param_2 + 1; + param_3 = param_3 + 8; + } while (param_2 != pdVar1); + } + return; +} + + +================================================================== + +### FUNC 001f0e60 (212 bytes) name=FUN_001f0e60 + +void FUN_001f0e60(long param_1,float *param_2,long param_3,int param_4,int param_5) + +{ + float *pfVar1; + int iVar2; + int iVar3; + float *pfVar4; + int iVar5; + float *pfVar6; + double *pdVar7; + double *pdVar8; + long lVar9; + float fVar10; + double dVar11; + + iVar2 = (param_4 + -1) * param_5; + iVar3 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar9 = (long)param_5; + pfVar1 = param_2 + (ulong)(param_5 - 1) + 1; + pdVar7 = (double *)(param_3 + lVar9 * 8); + do { + if (iVar3 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar5 = 0; + pfVar6 = param_2; + do { + fVar10 = *pfVar6; + iVar5 = iVar5 + param_5; + pfVar6 = pfVar6 + lVar9; + dVar11 = dVar11 + (double)fVar10 * (double)fVar10; + } while (iVar5 < iVar3); + } + pdVar7[-lVar9] = dVar11; + if (0 < iVar2) { + iVar5 = 0; + pfVar6 = param_2; + pdVar8 = pdVar7; + do { + fVar10 = *pfVar6; + iVar5 = iVar5 + param_5; + pfVar4 = pfVar6 + iVar3; + pfVar6 = pfVar6 + lVar9; + dVar11 = dVar11 + ((double)*pfVar4 * (double)*pfVar4 - (double)fVar10 * (double)fVar10); + *pdVar8 = dVar11; + pdVar8 = pdVar8 + lVar9; + } while (iVar5 < iVar2); + } + param_2 = param_2 + 1; + pdVar7 = pdVar7 + 1; + } while (param_2 != pfVar1); + } + return; +} + + +================================================================== + +### FUNC 001f0f34 (212 bytes) name=FUN_001f0f34 + +void FUN_001f0f34(long param_1,short *param_2,long param_3,int param_4,int param_5) + +{ + short *psVar1; + short *psVar2; + short sVar3; + int iVar4; + int iVar5; + double *pdVar6; + int iVar7; + short *psVar8; + double *pdVar9; + long lVar10; + double dVar11; + + iVar4 = (param_4 + -1) * param_5; + iVar5 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar10 = (long)param_5; + psVar2 = param_2 + (ulong)(param_5 - 1) + 1; + pdVar6 = (double *)(param_3 + lVar10 * 8); + do { + if (iVar5 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar7 = 0; + psVar8 = param_2; + do { + sVar3 = *psVar8; + iVar7 = iVar7 + param_5; + psVar8 = psVar8 + lVar10; + dVar11 = dVar11 + (double)(int)sVar3 * (double)(int)sVar3; + } while (iVar7 < iVar5); + } + pdVar6[-lVar10] = dVar11; + if (0 < iVar4) { + iVar7 = 0; + psVar8 = param_2; + pdVar9 = pdVar6; + do { + sVar3 = *psVar8; + iVar7 = iVar7 + param_5; + psVar1 = psVar8 + iVar5; + psVar8 = psVar8 + lVar10; + dVar11 = dVar11 + ((double)(int)*psVar1 * (double)(int)*psVar1 - + (double)(int)sVar3 * (double)(int)sVar3); + *pdVar9 = dVar11; + pdVar9 = pdVar9 + lVar10; + } while (iVar7 < iVar4); + } + param_2 = param_2 + 1; + pdVar6 = pdVar6 + 1; + } while (param_2 != psVar2); + } + return; +} + + +================================================================== + +### FUNC 001f1008 (212 bytes) name=FUN_001f1008 + +void FUN_001f1008(long param_1,ushort *param_2,long param_3,int param_4,int param_5) + +{ + ushort *puVar1; + ushort *puVar2; + ushort uVar3; + int iVar4; + int iVar5; + double *pdVar6; + int iVar7; + ushort *puVar8; + double *pdVar9; + long lVar10; + double dVar11; + + iVar4 = (param_4 + -1) * param_5; + iVar5 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar10 = (long)param_5; + puVar2 = param_2 + (ulong)(param_5 - 1) + 1; + pdVar6 = (double *)(param_3 + lVar10 * 8); + do { + if (iVar5 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar7 = 0; + puVar8 = param_2; + do { + uVar3 = *puVar8; + iVar7 = iVar7 + param_5; + puVar8 = puVar8 + lVar10; + dVar11 = dVar11 + (double)uVar3 * (double)uVar3; + } while (iVar7 < iVar5); + } + pdVar6[-lVar10] = dVar11; + if (0 < iVar4) { + iVar7 = 0; + puVar8 = param_2; + pdVar9 = pdVar6; + do { + uVar3 = *puVar8; + iVar7 = iVar7 + param_5; + puVar1 = puVar8 + iVar5; + puVar8 = puVar8 + lVar10; + dVar11 = dVar11 + ((double)*puVar1 * (double)*puVar1 - (double)uVar3 * (double)uVar3); + *pdVar9 = dVar11; + pdVar9 = pdVar9 + lVar10; + } while (iVar7 < iVar4); + } + param_2 = param_2 + 1; + pdVar6 = pdVar6 + 1; + } while (param_2 != puVar2); + } + return; +} + + +================================================================== + +### FUNC 001f10dc (200 bytes) name=FUN_001f10dc + +void FUN_001f10dc(long param_1,byte *param_2,long param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte bVar2; + int iVar3; + int iVar4; + int iVar5; + long lVar6; + byte *pbVar7; + long lVar8; + double dVar9; + + iVar3 = (param_4 + -1) * param_5; + iVar4 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar8 = (long)param_5; + param_3 = param_3 + lVar8 * 8; + pbVar1 = param_2 + (ulong)(param_5 - 1) + 1; + do { + if (iVar4 < 1) { + dVar9 = 0.0; + } + else { + dVar9 = 0.0; + iVar5 = 0; + pbVar7 = param_2; + do { + bVar2 = *pbVar7; + iVar5 = iVar5 + param_5; + pbVar7 = pbVar7 + lVar8; + dVar9 = dVar9 + (double)bVar2 * (double)bVar2; + } while (iVar5 < iVar4); + } + lVar6 = 0; + *(double *)(param_3 + lVar8 * -8) = dVar9; + iVar5 = 0; + if (0 < iVar3) { + do { + iVar5 = iVar5 + param_5; + dVar9 = dVar9 + ((double)param_2[lVar6 + iVar4] * (double)param_2[lVar6 + iVar4] - + (double)param_2[lVar6] * (double)param_2[lVar6]); + *(double *)(param_3 + lVar6 * 8) = dVar9; + lVar6 = lVar6 + lVar8; + } while (iVar5 < iVar3); + } + param_2 = param_2 + 1; + param_3 = param_3 + 8; + } while (param_2 != pbVar1); + } + return; +} + + +================================================================== + +### FUNC 001f11a4 (180 bytes) name=FUN_001f11a4 + +void FUN_001f11a4(long param_1,byte *param_2,long param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte bVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + long lVar7; + byte *pbVar8; + long lVar9; + + iVar3 = (param_4 + -1) * param_5; + iVar4 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar9 = (long)param_5; + param_3 = param_3 + lVar9 * 4; + pbVar1 = param_2 + (ulong)(param_5 - 1) + 1; + do { + iVar5 = 0; + if (0 < iVar4) { + iVar6 = 0; + pbVar8 = param_2; + do { + bVar2 = *pbVar8; + iVar6 = iVar6 + param_5; + pbVar8 = pbVar8 + lVar9; + iVar5 = iVar5 + (uint)bVar2 * (uint)bVar2; + } while (iVar6 < iVar4); + } + *(int *)(param_3 + lVar9 * -4) = iVar5; + lVar7 = 0; + iVar6 = 0; + if (0 < iVar3) { + do { + iVar6 = iVar6 + param_5; + iVar5 = iVar5 + ((uint)param_2[lVar7 + iVar4] * (uint)param_2[lVar7 + iVar4] - + (uint)param_2[lVar7] * (uint)param_2[lVar7]); + *(int *)(param_3 + lVar7 * 4) = iVar5; + lVar7 = lVar7 + lVar9; + } while (iVar6 < iVar3); + } + param_2 = param_2 + 1; + param_3 = param_3 + 4; + } while (param_2 != pbVar1); + } + return; +} + + +================================================================== + +### FUNC 001f1258 (8 bytes) name=FUN_001f1258 + +void FUN_001f1258(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f1260 (8 bytes) name=FUN_001f1260 + +void FUN_001f1260(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f1268 (8 bytes) name=FUN_001f1268 + +void FUN_001f1268(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f1270 (8 bytes) name=FUN_001f1270 + +void FUN_001f1270(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f1278 (8 bytes) name=FUN_001f1278 + +void FUN_001f1278(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f1280 (8 bytes) name=FUN_001f1280 + +void FUN_001f1280(long param_1) + +{ + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 001f1288 (188 bytes) name=FUN_001f1288 + +void FUN_001f1288(long param_1,double *param_2,long param_3,int param_4,int param_5) + +{ + double *pdVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + double *pdVar6; + long lVar7; + double dVar8; + double dVar9; + + iVar2 = (param_4 + -1) * param_5; + uVar3 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar7 = (long)param_5; + pdVar1 = param_2 + (ulong)(param_5 - 1) + 1; + param_3 = param_3 + lVar7 * 8; + do { + if ((int)uVar3 < 1) { + dVar8 = 0.0; + } + else { + dVar8 = 0.0; + iVar4 = 0; + pdVar6 = param_2; + do { + iVar4 = iVar4 + param_5; + dVar9 = *pdVar6; + pdVar6 = pdVar6 + lVar7; + dVar8 = dVar8 + dVar9; + } while (iVar4 < (int)uVar3); + } + *(double *)(param_3 + lVar7 * -8) = dVar8; + if (0 < iVar2) { + lVar5 = 0; + iVar4 = 0; + do { + iVar4 = iVar4 + param_5; + dVar8 = dVar8 + (*(double *) + ((long)param_2 + + lVar5 + (-(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | + (ulong)uVar3 << 3)) - *(double *)((long)param_2 + lVar5)); + *(double *)(param_3 + lVar5) = dVar8; + lVar5 = lVar5 + lVar7 * 8; + } while (iVar4 < iVar2); + } + param_2 = param_2 + 1; + param_3 = param_3 + 8; + } while (param_2 != pdVar1); + } + return; +} + + +================================================================== + +### FUNC 001f1344 (204 bytes) name=FUN_001f1344 + +void FUN_001f1344(long param_1,float *param_2,long param_3,int param_4,int param_5) + +{ + float *pfVar1; + int iVar2; + int iVar3; + float *pfVar4; + int iVar5; + float *pfVar6; + double *pdVar7; + double *pdVar8; + long lVar9; + float fVar10; + double dVar11; + + iVar2 = (param_4 + -1) * param_5; + iVar3 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar9 = (long)param_5; + pfVar1 = param_2 + (ulong)(param_5 - 1) + 1; + pdVar7 = (double *)(param_3 + lVar9 * 8); + do { + if (iVar3 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar5 = 0; + pfVar6 = param_2; + do { + fVar10 = *pfVar6; + iVar5 = iVar5 + param_5; + pfVar6 = pfVar6 + lVar9; + dVar11 = dVar11 + (double)fVar10; + } while (iVar5 < iVar3); + } + pdVar7[-lVar9] = dVar11; + if (0 < iVar2) { + iVar5 = 0; + pfVar6 = param_2; + pdVar8 = pdVar7; + do { + pfVar4 = pfVar6 + iVar3; + iVar5 = iVar5 + param_5; + fVar10 = *pfVar6; + pfVar6 = pfVar6 + lVar9; + dVar11 = dVar11 + (double)(*pfVar4 - fVar10); + *pdVar8 = dVar11; + pdVar8 = pdVar8 + lVar9; + } while (iVar5 < iVar2); + } + param_2 = param_2 + 1; + pdVar7 = pdVar7 + 1; + } while (param_2 != pfVar1); + } + return; +} + + +================================================================== + +### FUNC 001f1410 (204 bytes) name=FUN_001f1410 + +void FUN_001f1410(long param_1,short *param_2,long param_3,int param_4,int param_5) + +{ + short *psVar1; + short *psVar2; + short sVar3; + int iVar4; + int iVar5; + double *pdVar6; + int iVar7; + short *psVar8; + double *pdVar9; + long lVar10; + double dVar11; + + iVar4 = (param_4 + -1) * param_5; + iVar5 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar10 = (long)param_5; + psVar2 = param_2 + (ulong)(param_5 - 1) + 1; + pdVar6 = (double *)(param_3 + lVar10 * 8); + do { + if (iVar5 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar7 = 0; + psVar8 = param_2; + do { + sVar3 = *psVar8; + iVar7 = iVar7 + param_5; + psVar8 = psVar8 + lVar10; + dVar11 = dVar11 + (double)(int)sVar3; + } while (iVar7 < iVar5); + } + pdVar6[-lVar10] = dVar11; + if (0 < iVar4) { + iVar7 = 0; + psVar8 = param_2; + pdVar9 = pdVar6; + do { + psVar1 = psVar8 + iVar5; + iVar7 = iVar7 + param_5; + sVar3 = *psVar8; + psVar8 = psVar8 + lVar10; + dVar11 = dVar11 + (double)((int)*psVar1 - (int)sVar3); + *pdVar9 = dVar11; + pdVar9 = pdVar9 + lVar10; + } while (iVar7 < iVar4); + } + param_2 = param_2 + 1; + pdVar6 = pdVar6 + 1; + } while (param_2 != psVar2); + } + return; +} + + +================================================================== + +### FUNC 001f14dc (180 bytes) name=FUN_001f14dc + +void FUN_001f14dc(long param_1,int *param_2,long param_3,int param_4,int param_5) + +{ + int *piVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + int iVar6; + long lVar7; + int *piVar8; + long lVar9; + + iVar3 = (param_4 + -1) * param_5; + uVar4 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar9 = (long)param_5; + piVar1 = param_2 + (ulong)(param_5 - 1) + 1; + param_3 = param_3 + lVar9 * 4; + do { + iVar5 = 0; + if (0 < (int)uVar4) { + iVar6 = 0; + piVar8 = param_2; + do { + iVar6 = iVar6 + param_5; + iVar2 = *piVar8; + piVar8 = piVar8 + lVar9; + iVar5 = iVar5 + iVar2; + } while (iVar6 < (int)uVar4); + } + *(int *)(param_3 + lVar9 * -4) = iVar5; + if (0 < iVar3) { + lVar7 = 0; + iVar6 = 0; + do { + iVar6 = iVar6 + param_5; + iVar5 = iVar5 + (*(int *)((long)param_2 + + lVar7 + (-(ulong)(uVar4 >> 0x1f) & 0xfffffffc00000000 | + (ulong)uVar4 << 2)) - *(int *)((long)param_2 + lVar7)); + *(int *)(param_3 + lVar7) = iVar5; + lVar7 = lVar7 + lVar9 * 4; + } while (iVar6 < iVar3); + } + param_2 = param_2 + 1; + param_3 = param_3 + 4; + } while (param_2 != piVar1); + } + return; +} + + +================================================================== + +### FUNC 001f1590 (188 bytes) name=FUN_001f1590 + +void FUN_001f1590(long param_1,short *param_2,long param_3,int param_4,int param_5) + +{ + short *psVar1; + short *psVar2; + short sVar3; + int iVar4; + int iVar5; + int iVar6; + int *piVar7; + int iVar8; + short *psVar9; + int *piVar10; + long lVar11; + + iVar4 = (param_4 + -1) * param_5; + iVar5 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar11 = (long)param_5; + psVar2 = param_2 + (ulong)(param_5 - 1) + 1; + piVar7 = (int *)(param_3 + lVar11 * 4); + do { + iVar6 = 0; + if (0 < iVar5) { + iVar8 = 0; + psVar9 = param_2; + do { + iVar8 = iVar8 + param_5; + sVar3 = *psVar9; + psVar9 = psVar9 + lVar11; + iVar6 = iVar6 + sVar3; + } while (iVar8 < iVar5); + } + piVar7[-lVar11] = iVar6; + if (0 < iVar4) { + iVar8 = 0; + psVar9 = param_2; + piVar10 = piVar7; + do { + psVar1 = psVar9 + iVar5; + iVar8 = iVar8 + param_5; + sVar3 = *psVar9; + psVar9 = psVar9 + lVar11; + iVar6 = iVar6 + ((int)*psVar1 - (int)sVar3); + *piVar10 = iVar6; + piVar10 = piVar10 + lVar11; + } while (iVar8 < iVar4); + } + param_2 = param_2 + 1; + piVar7 = piVar7 + 1; + } while (param_2 != psVar2); + } + return; +} + + +================================================================== + +### FUNC 001f164c (204 bytes) name=FUN_001f164c + +void FUN_001f164c(long param_1,ushort *param_2,long param_3,int param_4,int param_5) + +{ + ushort *puVar1; + ushort *puVar2; + ushort uVar3; + int iVar4; + int iVar5; + double *pdVar6; + int iVar7; + ushort *puVar8; + double *pdVar9; + long lVar10; + double dVar11; + + iVar4 = (param_4 + -1) * param_5; + iVar5 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar10 = (long)param_5; + puVar2 = param_2 + (ulong)(param_5 - 1) + 1; + pdVar6 = (double *)(param_3 + lVar10 * 8); + do { + if (iVar5 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar7 = 0; + puVar8 = param_2; + do { + uVar3 = *puVar8; + iVar7 = iVar7 + param_5; + puVar8 = puVar8 + lVar10; + dVar11 = dVar11 + (double)uVar3; + } while (iVar7 < iVar5); + } + pdVar6[-lVar10] = dVar11; + if (0 < iVar4) { + iVar7 = 0; + puVar8 = param_2; + pdVar9 = pdVar6; + do { + puVar1 = puVar8 + iVar5; + iVar7 = iVar7 + param_5; + uVar3 = *puVar8; + puVar8 = puVar8 + lVar10; + dVar11 = dVar11 + (double)(int)((uint)*puVar1 - (uint)uVar3); + *pdVar9 = dVar11; + pdVar9 = pdVar9 + lVar10; + } while (iVar7 < iVar4); + } + param_2 = param_2 + 1; + pdVar6 = pdVar6 + 1; + } while (param_2 != puVar2); + } + return; +} + + +================================================================== + +### FUNC 001f1718 (188 bytes) name=FUN_001f1718 + +void FUN_001f1718(long param_1,ushort *param_2,long param_3,int param_4,int param_5) + +{ + ushort *puVar1; + ushort *puVar2; + ushort uVar3; + int iVar4; + int iVar5; + int iVar6; + int *piVar7; + int iVar8; + ushort *puVar9; + int *piVar10; + long lVar11; + + iVar4 = (param_4 + -1) * param_5; + iVar5 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar11 = (long)param_5; + puVar2 = param_2 + (ulong)(param_5 - 1) + 1; + piVar7 = (int *)(param_3 + lVar11 * 4); + do { + iVar6 = 0; + if (0 < iVar5) { + iVar8 = 0; + puVar9 = param_2; + do { + iVar8 = iVar8 + param_5; + uVar3 = *puVar9; + puVar9 = puVar9 + lVar11; + iVar6 = iVar6 + (uint)uVar3; + } while (iVar8 < iVar5); + } + piVar7[-lVar11] = iVar6; + if (0 < iVar4) { + iVar8 = 0; + puVar9 = param_2; + piVar10 = piVar7; + do { + puVar1 = puVar9 + iVar5; + iVar8 = iVar8 + param_5; + uVar3 = *puVar9; + puVar9 = puVar9 + lVar11; + iVar6 = iVar6 + ((uint)*puVar1 - (uint)uVar3); + *piVar10 = iVar6; + piVar10 = piVar10 + lVar11; + } while (iVar8 < iVar4); + } + param_2 = param_2 + 1; + piVar7 = piVar7 + 1; + } while (param_2 != puVar2); + } + return; +} + + +================================================================== + +### FUNC 001f17d4 (192 bytes) name=FUN_001f17d4 + +void FUN_001f17d4(long param_1,byte *param_2,long param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte bVar2; + int iVar3; + int iVar4; + int iVar5; + long lVar6; + byte *pbVar7; + long lVar8; + double dVar9; + + iVar3 = (param_4 + -1) * param_5; + iVar4 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar8 = (long)param_5; + param_3 = param_3 + lVar8 * 8; + pbVar1 = param_2 + (ulong)(param_5 - 1) + 1; + do { + if (iVar4 < 1) { + dVar9 = 0.0; + } + else { + dVar9 = 0.0; + iVar5 = 0; + pbVar7 = param_2; + do { + bVar2 = *pbVar7; + iVar5 = iVar5 + param_5; + pbVar7 = pbVar7 + lVar8; + dVar9 = dVar9 + (double)bVar2; + } while (iVar5 < iVar4); + } + lVar6 = 0; + *(double *)(param_3 + lVar8 * -8) = dVar9; + iVar5 = 0; + if (0 < iVar3) { + do { + iVar5 = iVar5 + param_5; + dVar9 = dVar9 + (double)(int)((uint)param_2[lVar6 + iVar4] - (uint)param_2[lVar6]); + *(double *)(param_3 + lVar6 * 8) = dVar9; + lVar6 = lVar6 + lVar8; + } while (iVar5 < iVar3); + } + param_2 = param_2 + 1; + param_3 = param_3 + 8; + } while (param_2 != pbVar1); + } + return; +} + + +================================================================== + +### FUNC 001f1894 (176 bytes) name=FUN_001f1894 + +void FUN_001f1894(long param_1,byte *param_2,long param_3,int param_4,int param_5) + +{ + byte *pbVar1; + byte bVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + long lVar7; + byte *pbVar8; + long lVar9; + + iVar3 = (param_4 + -1) * param_5; + iVar4 = param_5 * *(int *)(param_1 + 8); + if (0 < param_5) { + lVar9 = (long)param_5; + param_3 = param_3 + lVar9 * 4; + pbVar1 = param_2 + (ulong)(param_5 - 1) + 1; + do { + iVar5 = 0; + if (0 < iVar4) { + iVar6 = 0; + pbVar8 = param_2; + do { + iVar6 = iVar6 + param_5; + bVar2 = *pbVar8; + pbVar8 = pbVar8 + lVar9; + iVar5 = iVar5 + (uint)bVar2; + } while (iVar6 < iVar4); + } + *(int *)(param_3 + lVar9 * -4) = iVar5; + lVar7 = 0; + iVar6 = 0; + if (0 < iVar3) { + do { + iVar6 = iVar6 + param_5; + iVar5 = iVar5 + ((uint)param_2[lVar7 + iVar4] - (uint)param_2[lVar7]); + *(int *)(param_3 + lVar7 * 4) = iVar5; + lVar7 = lVar7 + lVar9; + } while (iVar6 < iVar3); + } + param_2 = param_2 + 1; + param_3 = param_3 + 4; + } while (param_2 != pbVar1); + } + return; +} + + +================================================================== + +### FUNC 001f1944 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1948 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f194c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1950 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1954 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1958 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f195c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1960 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1964 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1968 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f196c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1970 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1974 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1978 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f197c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1980 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1984 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1988 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f198c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1990 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1994 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f1998 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f199c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f19a0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f19a4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f19a8 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 001f19ac (16 bytes) name=FUN_001f19ac + +void FUN_001f19ac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5110; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f19bc (44 bytes) name=FUN_001f19bc + +void FUN_001f19bc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5110; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f19e8 (16 bytes) name=FUN_001f19e8 + +void FUN_001f19e8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f54d0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f19f8 (44 bytes) name=FUN_001f19f8 + +void FUN_001f19f8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f54d0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1a24 (16 bytes) name=FUN_001f1a24 + +void FUN_001f1a24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f54a0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1a34 (44 bytes) name=FUN_001f1a34 + +void FUN_001f1a34(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f54a0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1a60 (16 bytes) name=FUN_001f1a60 + +void FUN_001f1a60(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5470; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1a70 (44 bytes) name=FUN_001f1a70 + +void FUN_001f1a70(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5470; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1a9c (16 bytes) name=FUN_001f1a9c + +void FUN_001f1a9c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5440; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1aac (44 bytes) name=FUN_001f1aac + +void FUN_001f1aac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5440; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1ad8 (16 bytes) name=FUN_001f1ad8 + +void FUN_001f1ad8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5410; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1ae8 (44 bytes) name=FUN_001f1ae8 + +void FUN_001f1ae8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5410; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1b14 (16 bytes) name=FUN_001f1b14 + +void FUN_001f1b14(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f53e0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1b24 (44 bytes) name=FUN_001f1b24 + +void FUN_001f1b24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f53e0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1b50 (16 bytes) name=FUN_001f1b50 + +void FUN_001f1b50(undefined8 *param_1) + +{ + *param_1 = &DAT_004f5290; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1b60 (44 bytes) name=FUN_001f1b60 + +void FUN_001f1b60(undefined8 *param_1) + +{ + *param_1 = &DAT_004f5290; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1b8c (16 bytes) name=FUN_001f1b8c + +void FUN_001f1b8c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5260; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1b9c (44 bytes) name=FUN_001f1b9c + +void FUN_001f1b9c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5260; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1bc8 (16 bytes) name=FUN_001f1bc8 + +void FUN_001f1bc8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5230; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1bd8 (44 bytes) name=FUN_001f1bd8 + +void FUN_001f1bd8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5230; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1c04 (16 bytes) name=FUN_001f1c04 + +void FUN_001f1c04(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5200; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1c14 (44 bytes) name=FUN_001f1c14 + +void FUN_001f1c14(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5200; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1c40 (16 bytes) name=FUN_001f1c40 + +void FUN_001f1c40(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f51d0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1c50 (44 bytes) name=FUN_001f1c50 + +void FUN_001f1c50(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f51d0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1c7c (16 bytes) name=FUN_001f1c7c + +void FUN_001f1c7c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f51a0; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1c8c (44 bytes) name=FUN_001f1c8c + +void FUN_001f1c8c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f51a0; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1cb8 (16 bytes) name=FUN_001f1cb8 + +void FUN_001f1cb8(undefined8 *param_1) + +{ + *param_1 = &DAT_004f5170; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1cc8 (44 bytes) name=FUN_001f1cc8 + +void FUN_001f1cc8(undefined8 *param_1) + +{ + *param_1 = &DAT_004f5170; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1cf4 (16 bytes) name=FUN_001f1cf4 + +void FUN_001f1cf4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5140; + FUN_001c8d00(); + return; +} + + +================================================================== + +### FUNC 001f1d04 (44 bytes) name=FUN_001f1d04 + +void FUN_001f1d04(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5140; + FUN_001c8d00(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1d30 (52 bytes) name=FUN_001f1d30 + +void FUN_001f1d30(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5380; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f1d64 (60 bytes) name=FUN_001f1d64 + +void FUN_001f1d64(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5380; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1da0 (52 bytes) name=FUN_001f1da0 + +void FUN_001f1da0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5080; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f1dd4 (60 bytes) name=FUN_001f1dd4 + +void FUN_001f1dd4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5080; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1e10 (52 bytes) name=FUN_001f1e10 + +void FUN_001f1e10(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5050; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f1e44 (60 bytes) name=FUN_001f1e44 + +void FUN_001f1e44(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5050; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1e80 (52 bytes) name=FUN_001f1e80 + +void FUN_001f1e80(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4ff0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f1eb4 (60 bytes) name=FUN_001f1eb4 + +void FUN_001f1eb4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4ff0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1ef0 (52 bytes) name=FUN_001f1ef0 + +void FUN_001f1ef0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5020; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f1f24 (60 bytes) name=FUN_001f1f24 + +void FUN_001f1f24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5020; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1f60 (52 bytes) name=FUN_001f1f60 + +void FUN_001f1f60(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4fc0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f1f94 (60 bytes) name=FUN_001f1f94 + +void FUN_001f1f94(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f4fc0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f1fd0 (52 bytes) name=FUN_001f1fd0 + +void FUN_001f1fd0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f53b0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f2004 (60 bytes) name=FUN_001f2004 + +void FUN_001f2004(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f53b0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f2040 (52 bytes) name=FUN_001f2040 + +void FUN_001f2040(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5350; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f2074 (60 bytes) name=FUN_001f2074 + +void FUN_001f2074(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5350; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f20b0 (52 bytes) name=FUN_001f20b0 + +void FUN_001f20b0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5320; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f20e4 (60 bytes) name=FUN_001f20e4 + +void FUN_001f20e4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f5320; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f2120 (52 bytes) name=FUN_001f2120 + +void FUN_001f2120(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f52f0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f2154 (60 bytes) name=FUN_001f2154 + +void FUN_001f2154(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f52f0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f2190 (52 bytes) name=FUN_001f2190 + +void FUN_001f2190(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f52c0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + return; +} + + +================================================================== + +### FUNC 001f21c4 (60 bytes) name=FUN_001f21c4 + +void FUN_001f21c4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f52c0; + if ((void *)param_1[4] != (void *)0x0) { + operator_delete((void *)param_1[4]); + } + FUN_001c8d24(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 001f2200 (2252 bytes) name=FUN_001f2200 + +void FUN_001f2200(uint *param_1,long param_2,int param_3) + +{ + byte *pbVar1; + long lVar2; + int iVar3; + int iVar4; + byte *pbVar5; + long lVar6; + long lVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + int iVar12; + byte bVar13; + byte bVar14; + byte bVar15; + byte bVar16; + int iVar17; + int iVar18; + byte *pbVar19; + int iVar20; + int iVar21; + ulong uVar22; + undefined1 uVar23; + int iVar24; + int iVar25; + byte *pbVar26; + ulong uVar27; + int *piVar28; + byte *pbVar29; + long lVar30; + int iVar31; + ulong uVar32; + ulong uVar33; + ulong uVar34; + long lVar35; + byte *pbVar36; + byte *pbVar37; + long lVar38; + long lVar39; + uint local_1160; + int local_1100 [16]; + int aiStack_10c0 [16]; + int aiStack_1080 [16]; + int aiStack_1040 [16]; + int aiStack_1000 [1024]; + + iVar9 = param_3 * param_3 >> 1; + uVar22 = *(ulong *)(param_1 + 0x14); + uVar11 = (*(int **)(param_2 + 0x40))[1]; + uVar33 = *(ulong *)(param_2 + 0x50); + iVar12 = **(int **)(param_2 + 0x40); + iVar3 = (*param_1 >> 3 & 0x1ff) + 1; + pbVar36 = *(byte **)(param_1 + 4); + iVar20 = (int)uVar22; + pbVar1 = pbVar36 + iVar12 * iVar20; + lVar38 = *(long *)(param_2 + 0x10); + if (0 < (int)uVar11) { + iVar18 = iVar12 + -1; + iVar10 = param_3 / 2; + lVar35 = (long)iVar3; + local_1160 = 0; + iVar17 = iVar3 * param_3; + iVar4 = iVar10 + 1; + uVar32 = uVar22; + uVar34 = uVar33; + pbVar37 = pbVar36; + lVar39 = lVar38; +LAB_001f2308: + memset(local_1100,0,lVar35 << 6); + memset(aiStack_1000,0,lVar35 << 10); + iVar31 = 0; + iVar21 = (int)uVar32; + pbVar19 = pbVar37; + if (-1 < iVar10) { + do { + iVar24 = 0; + pbVar26 = pbVar19; +LAB_001f236c: + do { + if (iVar31 == 0) { + if (0 < iVar17) { + pbVar29 = pbVar26; + iVar25 = iVar3; + do { + lVar30 = (long)iVar24 * 0x100 + (long)(int)(uint)*pbVar29; + iVar25 = iVar25 + iVar3; + lVar2 = (long)iVar24 * 0x10 + (long)((int)(uint)*pbVar29 >> 4); + aiStack_1000[lVar30] = aiStack_1000[lVar30] + iVar4; + pbVar29 = pbVar29 + lVar35; + local_1100[lVar2] = local_1100[lVar2] + iVar4; + } while (iVar25 - iVar3 < iVar17); + iVar24 = iVar24 + 1; + pbVar26 = pbVar26 + 1; + if (iVar24 == iVar3) break; + goto LAB_001f236c; + } + } + else if (0 < iVar17) { + pbVar29 = pbVar26; + iVar25 = iVar3; + do { + lVar30 = (long)iVar24 * 0x100 + (long)(int)(uint)*pbVar29; + iVar25 = iVar25 + iVar3; + lVar2 = (long)iVar24 * 0x10 + (long)((int)(uint)*pbVar29 >> 4); + aiStack_1000[lVar30] = aiStack_1000[lVar30] + 1; + pbVar29 = pbVar29 + lVar35; + local_1100[lVar2] = local_1100[lVar2] + 1; + } while (iVar25 - iVar3 < iVar17); + } + iVar24 = iVar24 + 1; + pbVar26 = pbVar26 + 1; + } while (iVar24 != iVar3); + if (iVar21 < 1) { + if ((iVar21 != 0) && (1 < iVar12 - iVar31)) { + pbVar19 = pbVar19 + iVar21; + } + } + else if (iVar31 < iVar18) { + pbVar19 = pbVar19 + iVar21; + } + iVar31 = iVar31 + 1; + } while (iVar31 != iVar4); + } + iVar31 = 0; + if (0 < iVar12) { + do { + uVar32 = 0; + piVar28 = local_1100; + do { + iVar24 = *piVar28; + if (iVar9 < iVar24) { + uVar23 = 0; + iVar25 = 0; + iVar24 = 0; + } + else { + iVar8 = iVar24 + piVar28[1]; + if (iVar9 < iVar8) { + uVar23 = 0x10; + iVar25 = 0x10; + } + else { + iVar24 = iVar8 + piVar28[2]; + if (iVar9 < iVar24) { + uVar23 = 0x20; + iVar25 = 0x20; + iVar24 = iVar8; + } + else { + iVar8 = iVar24 + piVar28[3]; + if (iVar9 < iVar8) { + uVar23 = 0x30; + iVar25 = 0x30; + } + else { + iVar24 = iVar8 + piVar28[4]; + if (iVar9 < iVar24) { + uVar23 = 0x40; + iVar25 = 0x40; + iVar24 = iVar8; + } + else { + iVar8 = iVar24 + piVar28[5]; + if (iVar9 < iVar8) { + uVar23 = 0x50; + iVar25 = 0x50; + } + else { + iVar24 = iVar8 + piVar28[6]; + if (iVar9 < iVar24) { + uVar23 = 0x60; + iVar25 = 0x60; + iVar24 = iVar8; + } + else { + iVar8 = iVar24 + piVar28[7]; + if (iVar9 < iVar8) { + uVar23 = 0x70; + iVar25 = 0x70; + } + else { + iVar24 = iVar8 + piVar28[8]; + if (iVar9 < iVar24) { + uVar23 = 0x80; + iVar25 = 0x80; + iVar24 = iVar8; + } + else { + iVar8 = iVar24 + piVar28[9]; + if (iVar9 < iVar8) { + uVar23 = 0x90; + iVar25 = 0x90; + } + else { + iVar24 = iVar8 + piVar28[10]; + if (iVar9 < iVar24) { + uVar23 = 0xa0; + iVar25 = 0xa0; + iVar24 = iVar8; + } + else { + iVar8 = iVar24 + piVar28[0xb]; + if (iVar9 < iVar8) { + uVar23 = 0xb0; + iVar25 = 0xb0; + } + else { + iVar24 = iVar8 + piVar28[0xc]; + if (iVar9 < iVar24) { + uVar23 = 0xc0; + iVar25 = 0xc0; + iVar24 = iVar8; + } + else { + iVar8 = iVar24 + piVar28[0xd]; + if (iVar9 < iVar8) { + uVar23 = 0xd0; + iVar25 = 0xd0; + } + else { + uVar23 = 0xf0; + iVar25 = 0xf0; + iVar24 = iVar8 + piVar28[0xe]; + if (iVar9 < iVar8 + piVar28[0xe]) { + uVar23 = 0xe0; + iVar25 = 0xe0; + iVar24 = iVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar27 = -((uVar32 & 0xffffffff) >> 0x1f) & 0xffffff0000000000 | + (uVar32 & 0xffffffff) << 8; + iVar24 = iVar24 + aiStack_1000[uVar27 + (long)iVar25]; + if (iVar24 <= iVar9) { + do { + iVar25 = iVar25 + 1; + iVar24 = iVar24 + aiStack_1000[uVar27 + (long)iVar25]; + } while (iVar24 <= iVar9); + uVar23 = (undefined1)iVar25; + } + *(undefined1 *)(lVar39 + uVar32) = uVar23; + uVar32 = uVar32 + 1; + piVar28 = piVar28 + 0x10; + } while ((int)uVar32 < iVar3); + if (iVar31 == iVar18) break; + if (iVar3 == 1) { + lVar30 = 0; + if (param_3 < 1) goto LAB_001f26f4; + do { + bVar13 = pbVar37[lVar30]; + bVar14 = pbVar19[lVar30]; + lVar30 = lVar30 + 1; + iVar24 = (int)(uint)bVar13 >> 4; + iVar25 = (int)(uint)bVar14 >> 4; + aiStack_1000[(int)(uint)bVar13] = aiStack_1000[(int)(uint)bVar13] + -1; + iVar8 = aiStack_1000[(int)(uint)bVar14]; + local_1100[iVar24] = local_1100[iVar24] + -1; + aiStack_1000[(int)(uint)bVar14] = iVar8 + 1; + local_1100[iVar25] = local_1100[iVar25] + 1; + } while ((int)lVar30 < param_3); + if (0 < iVar21) goto LAB_001f26fc; +LAB_001f285c: + if ((iVar21 != 0) && (pbVar36 <= pbVar19 + iVar21)) { + pbVar19 = pbVar19 + iVar21; + } + } + else { + if (iVar3 == 3) { + pbVar26 = pbVar37; + pbVar29 = pbVar19; + if (0 < param_3 * 3) { + do { + bVar13 = *pbVar26; + pbVar5 = pbVar26 + 3; + bVar14 = *pbVar29; + iVar24 = (int)(uint)bVar13 >> 4; + bVar15 = pbVar26[1]; + lVar30 = (ulong)bVar15 + 0x100; + bVar16 = pbVar26[2]; + aiStack_1000[(int)(uint)bVar13] = aiStack_1000[(int)(uint)bVar13] + -1; + lVar2 = (long)((int)(uint)bVar15 >> 4) + 0x10; + local_1100[iVar24] = local_1100[iVar24] + -1; + lVar6 = (ulong)bVar16 + 0x200; + iVar25 = local_1100[lVar2]; + lVar7 = (long)((int)(uint)bVar16 >> 4) + 0x20; + bVar13 = pbVar29[1]; + aiStack_1000[lVar30] = aiStack_1000[lVar30] + -1; + iVar24 = (int)(uint)bVar14 >> 4; + local_1100[lVar2] = iVar25 + -1; + iVar25 = local_1100[lVar7]; + aiStack_1000[lVar6] = aiStack_1000[lVar6] + -1; + local_1100[lVar7] = iVar25 + -1; + iVar25 = local_1100[iVar24]; + lVar30 = (long)(int)(uint)bVar13 + 0x100; + bVar15 = pbVar29[2]; + lVar2 = (long)((int)(uint)bVar13 >> 4) + 0x10; + aiStack_1000[(int)(uint)bVar14] = aiStack_1000[(int)(uint)bVar14] + 1; + local_1100[iVar24] = iVar25 + 1; + iVar24 = local_1100[lVar2]; + lVar6 = (long)(int)(uint)bVar15 + 0x200; + lVar7 = (long)((int)(uint)bVar15 >> 4) + 0x20; + aiStack_1000[lVar30] = aiStack_1000[lVar30] + 1; + local_1100[lVar2] = iVar24 + 1; + iVar24 = local_1100[lVar7]; + aiStack_1000[lVar6] = aiStack_1000[lVar6] + 1; + local_1100[lVar7] = iVar24 + 1; + pbVar26 = pbVar5; + pbVar29 = pbVar29 + 3; + } while ((int)pbVar5 - (int)pbVar37 < param_3 * 3); + } + } + else if (0 < param_3 * 4) { + pbVar26 = pbVar37; + pbVar29 = pbVar19 + 1; + do { + bVar13 = *pbVar26; + bVar14 = pbVar26[1]; + pbVar5 = pbVar29 + 4; + iVar24 = (int)(uint)bVar13 >> 4; + lVar30 = (ulong)bVar14 + 0x100; + bVar15 = pbVar26[2]; + iVar25 = local_1100[iVar24]; + aiStack_1000[(int)(uint)bVar13] = aiStack_1000[(int)(uint)bVar13] + -1; + lVar2 = (long)((int)(uint)bVar14 >> 4) + 0x10; + iVar8 = aiStack_1000[lVar30]; + local_1100[iVar24] = iVar25 + -1; + lVar6 = (ulong)bVar15 + 0x200; + bVar13 = pbVar26[3]; + iVar24 = local_1100[lVar2]; + aiStack_1000[lVar30] = iVar8 + -1; + lVar30 = (long)((int)(uint)bVar15 >> 4) + 0x20; + iVar25 = aiStack_1000[lVar6]; + local_1100[lVar2] = iVar24 + -1; + lVar2 = (long)(int)(uint)bVar13 + 0x300; + aiStack_1000[lVar6] = iVar25 + -1; + iVar24 = aiStack_1000[lVar2]; + lVar6 = (long)((int)(uint)bVar13 >> 4) + 0x30; + bVar13 = *pbVar29; + bVar14 = pbVar29[-1]; + local_1100[lVar30] = local_1100[lVar30] + -1; + aiStack_1000[lVar2] = iVar24 + -1; + lVar30 = (long)(int)(uint)bVar13 + 0x100; + iVar24 = (int)(uint)bVar14 >> 4; + iVar25 = aiStack_1000[(int)(uint)bVar14]; + bVar15 = pbVar29[1]; + local_1100[lVar6] = local_1100[lVar6] + -1; + aiStack_1000[(int)(uint)bVar14] = iVar25 + 1; + lVar2 = (long)((int)(uint)bVar13 >> 4) + 0x10; + iVar25 = aiStack_1000[lVar30]; + lVar6 = (long)(int)(uint)bVar15 + 0x200; + local_1100[iVar24] = local_1100[iVar24] + 1; + aiStack_1000[lVar30] = iVar25 + 1; + lVar30 = (long)((int)(uint)bVar15 >> 4) + 0x20; + iVar24 = aiStack_1000[lVar6]; + local_1100[lVar2] = local_1100[lVar2] + 1; + aiStack_1000[lVar6] = iVar24 + 1; + bVar13 = pbVar29[2]; + local_1100[lVar30] = local_1100[lVar30] + 1; + lVar30 = (ulong)bVar13 + 0x300; + lVar2 = (long)((int)(uint)bVar13 >> 4) + 0x30; + aiStack_1000[lVar30] = aiStack_1000[lVar30] + 1; + local_1100[lVar2] = local_1100[lVar2] + 1; + pbVar26 = pbVar26 + 4; + pbVar29 = pbVar5; + } while (pbVar5 != pbVar19 + (ulong)(param_3 * 4 - 1U >> 2) * 4 + 5); + } +LAB_001f26f4: + if (iVar21 < 1) goto LAB_001f285c; +LAB_001f26fc: + if (pbVar19 + iVar21 < pbVar1) { + pbVar19 = pbVar19 + iVar21; + } + } + if (iVar10 <= iVar31) { + pbVar37 = pbVar37 + iVar21; + } + iVar31 = iVar31 + 1; + lVar39 = lVar39 + (int)uVar34; + } while (iVar31 != iVar12); + } + local_1160 = local_1160 + 1; + if (local_1160 != uVar11) { + pbVar36 = pbVar36 + lVar35; + lVar38 = lVar38 + lVar35; + if ((local_1160 & 1) == 0) { + uVar34 = uVar33 & 0xffffffff; + uVar32 = uVar22 & 0xffffffff; + pbVar37 = pbVar36; + lVar39 = lVar38; + } + else { + uVar32 = (ulong)(uint)-iVar20; + uVar34 = (ulong)(uint)-(int)uVar33; + pbVar37 = pbVar36 + iVar18 * iVar20; + lVar39 = lVar38 + iVar18 * (int)uVar33; + } + goto LAB_001f2308; + } + } + return; +} + + +================================================================== + +### FUNC 001f2acc (876 bytes) name=FUN_001f2acc + +void FUN_001f2acc(long param_1,int *param_2) + +{ + long lVar1; + float *pfVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + long lVar7; + undefined2 uVar8; + undefined1 uVar9; + undefined4 *puVar10; + long lVar11; + long lVar12; + long lVar13; + int iVar14; + int iVar15; + float *pfVar16; + int iVar17; + long lVar18; + float *pfVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + undefined8 local_10; + undefined8 local_8; + + lVar13 = *(long *)(param_1 + 0x28); + iVar17 = *param_2; + iVar14 = param_2[1]; + iVar3 = *(int *)(*(long *)(lVar13 + 0x40) + 4); + if (iVar14 <= iVar17) { + return; + } + lVar18 = (long)iVar17; + do { + iVar4 = *(int *)(param_1 + 8); + uVar5 = *(int *)(param_1 + 0xc) * iVar4; + pfVar19 = (float *)(*(long *)(lVar13 + 0x10) + lVar18 * **(long **)(lVar13 + 0x48)); + pfVar2 = (float *)(*(long *)(*(long *)(param_1 + 0x20) + 0x10) + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2) + + (long)(*(int *)(param_1 + 0xc) + iVar17) * + **(long **)(*(long *)(param_1 + 0x20) + 0x48)); + if (iVar4 == 1) { + if (0 < iVar3) { + iVar4 = *(int *)(param_1 + 0x10); + lVar13 = 0; + iVar15 = 0; + fVar23 = *pfVar2; + if (iVar4 < 1) goto LAB_001f2df8; + do { + fVar25 = 0.0; + lVar12 = 0; + fVar24 = fVar25; + do { + lVar1 = lVar12 * 4; + lVar7 = lVar12 * 4; + lVar12 = lVar12 + 1; + fVar20 = ABS(pfVar2[iVar15 + *(int *)(*(long *)(param_1 + 0x18) + lVar1)] - fVar23) * + *(float *)(param_1 + 0x30); + iVar6 = (int)fVar20 - (uint)(fVar20 < (float)(int)fVar20); + lVar11 = ((long)iVar6 + 1) * 4; + fVar22 = *(float *)(*(long *)(param_1 + 0x40) + lVar11 + -4); + fVar22 = (fVar22 + (fVar20 - (float)iVar6) * + (*(float *)(*(long *)(param_1 + 0x40) + lVar11) - fVar22)) * + *(float *)(*(long *)(param_1 + 0x38) + lVar7); + fVar25 = fVar25 + fVar22 * pfVar2[iVar15 + *(int *)(*(long *)(param_1 + 0x18) + lVar1)]; + fVar24 = fVar24 + fVar22; + } while ((int)lVar12 < iVar4); + pfVar19[lVar13] = fVar25 / fVar24; + lVar13 = lVar13 + 1; + iVar15 = (int)lVar13; + while( true ) { + if (iVar3 <= iVar15) goto LAB_001f2d00; + iVar15 = (int)lVar13; + fVar23 = pfVar2[lVar13]; + if (0 < iVar4) break; +LAB_001f2df8: + pfVar19[lVar13] = -NAN; + lVar13 = lVar13 + 1; + iVar15 = (int)lVar13; + } + } while( true ); + } + } + else { + if (iVar4 != 3) { + local_10 = 0; + local_8 = 0; + puVar10 = (undefined4 *)cv::String::allocate((String *)&local_10,7); + uVar8 = DAT_0045d4e4; + *puVar10 = DAT_0045d4e0; + uVar9 = DAT_0045d4e6; + *(undefined2 *)(puVar10 + 1) = uVar8; + *(undefined1 *)((long)puVar10 + 6) = uVar9; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::BilateralFilter_32f_Invoker::operator()(const cv::Range&) const" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xc98); + cv::String::deallocate((String *)&local_10); + iVar14 = param_2[1]; + } + if (0 < iVar3 * 3) { + iVar4 = *(int *)(param_1 + 0x10); + lVar13 = 0; + pfVar16 = pfVar2; + do { + fVar22 = 0.0; + fVar23 = fVar22; + fVar24 = fVar22; + fVar25 = fVar22; + if (0 < iVar4) { + fVar23 = 0.0; + fVar24 = 0.0; + fVar25 = 0.0; + lVar12 = 0; + do { + lVar1 = lVar12 * 4; + lVar7 = lVar12 * 4; + lVar12 = lVar12 + 1; + lVar1 = lVar13 + *(int *)(*(long *)(param_1 + 0x18) + lVar1); + fVar20 = (ABS(pfVar2[lVar1 + 1] - pfVar16[1]) + ABS(pfVar2[lVar1] - *pfVar16) + + ABS(pfVar2[lVar1 + 2] - pfVar16[2])) * *(float *)(param_1 + 0x30); + iVar15 = (int)fVar20 - (uint)(fVar20 < (float)(int)fVar20); + lVar11 = ((long)iVar15 + 1) * 4; + fVar21 = *(float *)(*(long *)(param_1 + 0x40) + lVar11 + -4); + fVar20 = (fVar21 + (fVar20 - (float)iVar15) * + (*(float *)(*(long *)(param_1 + 0x40) + lVar11) - fVar21)) * + *(float *)(*(long *)(param_1 + 0x38) + lVar7); + fVar25 = fVar25 + fVar20 * pfVar2[lVar1]; + fVar24 = fVar24 + fVar20 * pfVar2[lVar1 + 1]; + fVar23 = fVar23 + fVar20 * pfVar2[lVar1 + 2]; + fVar22 = fVar22 + fVar20; + } while ((int)lVar12 < iVar4); + } + fVar22 = 1.0 / fVar22; + lVar13 = lVar13 + 3; + pfVar16 = pfVar16 + 3; + *pfVar19 = fVar25 * fVar22; + pfVar19[1] = fVar24 * fVar22; + pfVar19[2] = fVar23 * fVar22; + pfVar19 = pfVar19 + 3; + } while ((int)lVar13 < iVar3 * 3); + } + } +LAB_001f2d00: + iVar17 = iVar17 + 1; + lVar18 = lVar18 + 1; + if (iVar14 <= iVar17) { + return; + } + lVar13 = *(long *)(param_1 + 0x28); + } while( true ); +} + + +================================================================== + +### FUNC 001f2e4c (7620 bytes) name=FUN_001f2e4c + +void FUN_001f2e4c(uint *param_1,long param_2,int param_3) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + int iVar19; + long lVar20; + byte bVar21; + uint uVar22; + int iVar23; + int iVar24; + int iVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + int iVar33; + int iVar34; + int iVar35; + int iVar36; + int iVar37; + int iVar38; + int iVar39; + int iVar40; + int iVar41; + int iVar42; + int iVar43; + int iVar44; + int iVar45; + int iVar46; + int iVar47; + bool bVar48; + char cVar49; + int iVar50; + long lVar51; + long lVar52; + byte *pbVar53; + long lVar54; + long lVar55; + undefined1 (*pauVar56) [16]; + byte *pbVar57; + undefined1 (*pauVar58) [16]; + undefined1 (*pauVar59) [16]; + int iVar60; + int iVar61; + uint uVar62; + int iVar63; + undefined1 (*pauVar64) [16]; + undefined8 *puVar65; + long lVar66; + long lVar67; + undefined1 (*pauVar68) [16]; + undefined1 (*pauVar69) [16]; + int iVar70; + int iVar71; + uint uVar72; + undefined1 auVar73 [16]; + undefined1 auVar74 [16]; + undefined1 auVar75 [16]; + undefined1 auVar76 [16]; + undefined1 auVar77 [16]; + undefined1 auVar78 [16]; + undefined1 auVar79 [16]; + undefined1 auVar80 [16]; + undefined1 auVar81 [16]; + undefined1 auVar82 [16]; + undefined1 auVar83 [16]; + undefined1 auVar84 [16]; + undefined1 auVar85 [16]; + undefined1 auVar86 [16]; + undefined1 auVar87 [16]; + undefined1 auVar88 [16]; + undefined1 auVar89 [16]; + undefined1 auVar90 [16]; + undefined1 auVar91 [16]; + undefined1 auVar92 [16]; + undefined1 auVar93 [16]; + undefined1 auVar94 [16]; + undefined1 auVar95 [16]; + undefined1 auVar96 [16]; + undefined1 auVar97 [16]; + undefined1 auVar98 [16]; + undefined1 auVar99 [16]; + undefined1 auVar100 [16]; + undefined1 auVar101 [16]; + undefined1 auVar102 [16]; + undefined1 auVar103 [16]; + undefined1 auVar104 [16]; + undefined1 auVar105 [16]; + undefined1 auVar106 [16]; + undefined1 auVar107 [16]; + undefined1 auVar108 [16]; + undefined1 auVar109 [16]; + undefined1 auVar110 [16]; + long local_98; + int local_3c; + int local_30; + int local_2c; + int local_20; + + uVar22 = *param_1 >> 3 & 0x1ff; + local_98 = *(long *)(param_2 + 0x10); + iVar5 = uVar22 + 1; + iVar71 = (int)*(undefined8 *)(param_2 + 0x50); + pbVar53 = *(byte **)(param_1 + 4); + local_3c = **(int **)(param_2 + 0x40); + local_30 = (int)*(undefined8 *)(param_1 + 0x14); + iVar63 = (*(int **)(param_2 + 0x40))[1]; + cVar49 = cv::checkHardwareSupport(3); + if (cVar49 == '\0') { + cVar49 = cv::checkHardwareSupport(100); + } + if (param_3 != 3) { + if (param_3 != 5) { + return; + } + if (iVar63 == 1) { + iVar50 = local_3c + 1; + if (local_3c != 1) { + iVar63 = local_30 - iVar5; + goto LAB_001f4a64; + } + iVar50 = 2; + } + else { + if (local_3c != 1) { + uVar22 = iVar63 * iVar5; + if (local_3c < 1) { + return; + } + iVar61 = local_3c + -1; + iVar50 = iVar5 * -2; + uVar72 = iVar5 * 2; + iVar63 = (uVar22 - 0x10) + iVar50; + local_2c = 0; + local_20 = 1; + pbVar57 = pbVar53; +LAB_001f3340: + iVar60 = 0; + iVar46 = local_2c + -2; + if (iVar46 < 0) { + iVar46 = 0; + } + iVar47 = local_2c + -1; + local_2c = local_20; + if (iVar47 < 0) { + iVar47 = 0; + } + iVar70 = local_20; + if (iVar61 < local_20) { + iVar70 = iVar61; + } + iVar6 = local_20 + 1; + iVar23 = iVar61; + if (iVar6 < iVar61) { + iVar23 = iVar6; + } + iVar46 = local_30 * iVar46; + iVar47 = local_30 * iVar47; + iVar70 = local_30 * iVar70; + iVar23 = local_30 * iVar23; + uVar62 = uVar22; + if (cVar49 != '\0') { + uVar62 = uVar72; + } + do { + if ((int)uVar62 <= iVar60) { + do { + if (uVar62 == uVar22) { + bVar48 = local_20 == local_3c; + local_98 = local_98 + iVar71; + pbVar57 = pbVar57 + local_30; + local_20 = iVar6; + if (bVar48) { + return; + } + goto LAB_001f3340; + } + if (iVar60 <= iVar63) { + lVar51 = (long)iVar60; + lVar54 = 0; + do { + iVar60 = iVar60 + 0x10; + lVar67 = lVar51 + lVar54; + lVar66 = (lVar51 - (ulong)uVar72) + lVar54; + lVar52 = (lVar51 - iVar5) + lVar54; + lVar55 = iVar5 + lVar51 + lVar54; + lVar20 = (ulong)uVar72 + lVar51 + lVar54; + auVar90 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar55 + iVar47), + *(undefined1 (*) [16])(pbVar53 + lVar67 + iVar47),1); + auVar74 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar67 + iVar47), + *(undefined1 (*) [16])(pbVar53 + lVar55 + iVar47),1); + auVar102 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar20 + iVar46), + *(undefined1 (*) [16])(pbVar53 + lVar66 + iVar47),1); + auVar88 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar66 + iVar47), + *(undefined1 (*) [16])(pbVar53 + lVar20 + iVar46),1); + auVar104 = NEON_umax(auVar102,*(undefined1 (*) [16])(pbVar53 + lVar55 + iVar46),1) + ; + auVar73 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar52 + iVar70), + *(undefined1 (*) [16])(pbVar53 + lVar67 + iVar70),1); + auVar84 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar67 + iVar70), + *(undefined1 (*) [16])(pbVar53 + lVar52 + iVar70),1); + auVar87 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar52 + iVar23), + *(undefined1 (*) [16])(pbVar53 + lVar67 + iVar23),1); + auVar80 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar67 + iVar23), + *(undefined1 (*) [16])(pbVar53 + lVar52 + iVar23),1); + auVar85 = NEON_umax(auVar73,*(undefined1 (*) [16])(pbVar53 + lVar66 + iVar70),1); + auVar92 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar67 + iVar46), + *(undefined1 (*) [16])(pbVar53 + lVar52 + iVar46),1); + auVar94 = NEON_umin(*(undefined1 (*) [16])(pbVar57 + lVar66), + *(undefined1 (*) [16])(pbVar57 + lVar52),1); + auVar75 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar52 + iVar46), + *(undefined1 (*) [16])(pbVar53 + lVar67 + iVar46),1); + auVar76 = NEON_umin(*(undefined1 (*) [16])(pbVar57 + lVar55), + *(undefined1 (*) [16])(pbVar57 + lVar20),1); + auVar103 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar55 + iVar46),auVar102,1) + ; + auVar102 = NEON_umax(auVar88,auVar104,1); + lVar54 = lVar54 + 0x10; + auVar81 = NEON_umax(*(undefined1 (*) [16])(pbVar57 + lVar52), + *(undefined1 (*) [16])(pbVar57 + lVar66),1); + auVar86 = NEON_umax(*(undefined1 (*) [16])(pbVar57 + lVar20), + *(undefined1 (*) [16])(pbVar57 + lVar55),1); + auVar97 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar55 + iVar23), + *(undefined1 (*) [16])(pbVar53 + lVar20 + iVar23),1); + auVar96 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar20 + iVar70), + *(undefined1 (*) [16])(pbVar53 + lVar66 + iVar23),1); + auVar99 = NEON_umax(auVar94,*(undefined1 (*) [16])(pbVar53 + lVar20 + iVar47),1); + auVar82 = NEON_umax(auVar76,*(undefined1 (*) [16])(pbVar57 + lVar67),1); + auVar106 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar20 + iVar47),auVar94,1); + auVar79 = NEON_umax(auVar74,*(undefined1 (*) [16])(pbVar53 + lVar52 + iVar47),1); + auVar76 = NEON_umin(*(undefined1 (*) [16])(pbVar57 + lVar67),auVar76,1); + auVar94 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar52 + iVar47),auVar74,1); + auVar107 = NEON_umax(auVar97,auVar87,1); + auVar78 = NEON_umax(auVar90,auVar79,1); + auVar74 = NEON_umax(auVar86,auVar82,1); + auVar83 = NEON_umin(auVar82,auVar86,1); + auVar77 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar55 + iVar70),auVar96,1); + auVar97 = NEON_umin(auVar87,auVar97,1); + auVar82 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar20 + iVar23), + *(undefined1 (*) [16])(pbVar53 + lVar55 + iVar23),1); + auVar86 = NEON_umin(auVar79,auVar90,1); + auVar87 = NEON_umax(auVar75,*(undefined1 (*) [16])(pbVar53 + lVar66 + iVar46),1); + auVar91 = NEON_umax(auVar106,auVar94,1); + auVar89 = NEON_umin(auVar80,auVar82,1); + auVar73 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar66 + iVar70),auVar73,1); + auVar104 = NEON_umin(auVar104,auVar88,1); + auVar79 = NEON_umin(*(undefined1 (*) [16])(pbVar53 + lVar66 + iVar46),auVar75,1); + auVar75 = NEON_umax(auVar82,auVar80,1); + auVar82 = NEON_umax(auVar84,auVar85,1); + auVar88 = NEON_umin(auVar85,auVar84,1); + auVar101 = NEON_umax(auVar92,auVar87,1); + auVar84 = NEON_umax(auVar97,auVar77,1); + auVar85 = NEON_umin(auVar87,auVar92,1); + auVar95 = NEON_umax(auVar81,auVar99,1); + auVar105 = NEON_umax(auVar73,auVar76,1); + auVar92 = NEON_umax(*(undefined1 (*) [16])(pbVar53 + lVar66 + iVar23), + *(undefined1 (*) [16])(pbVar53 + lVar20 + iVar70),1); + auVar109 = NEON_umax(auVar103,auVar79,1); + auVar93 = NEON_umin(auVar101,auVar102,1); + auVar80 = NEON_umin(auVar99,auVar81,1); + auVar99 = NEON_umin(auVar74,auVar82,1); + auVar81 = NEON_umax(auVar96,*(undefined1 (*) [16])(pbVar53 + lVar55 + iVar70),1); + auVar108 = NEON_umin(auVar78,auVar95,1); + auVar90 = NEON_umin(auVar85,auVar104,1); + auVar100 = NEON_umax(auVar104,auVar85,1); + auVar96 = NEON_umin(auVar81,auVar92,1); + auVar104 = NEON_umin(auVar99,auVar105,1); + auVar98 = NEON_umin(auVar89,auVar107,1); + auVar87 = NEON_umin(auVar93,auVar109,1); + auVar92 = NEON_umax(auVar92,auVar81,1); + auVar110 = NEON_umax(auVar109,auVar93,1); + auVar89 = NEON_umax(auVar107,auVar89,1); + auVar93 = NEON_umin(auVar108,auVar91,1); + auVar109 = NEON_umax(auVar91,auVar108,1); + auVar81 = NEON_umin(auVar86,auVar80,1); + auVar80 = NEON_umax(auVar80,auVar86,1); + auVar85 = NEON_umax(auVar105,auVar99,1); + auVar107 = NEON_umin(auVar83,auVar88,1); + auVar83 = NEON_umax(auVar88,auVar83,1); + auVar105 = NEON_umin(auVar92,auVar89,1); + auVar88 = NEON_umax(auVar98,auVar96,1); + auVar99 = NEON_umin(auVar96,auVar98,1); + auVar86 = NEON_umin(auVar79,auVar103,1); + auVar98 = NEON_umin(auVar88,auVar75,1); + auVar75 = NEON_umax(auVar75,auVar88,1); + auVar91 = NEON_umin(auVar105,auVar84,1); + auVar108 = NEON_umax(auVar84,auVar105,1); + auVar79 = NEON_umax(auVar89,auVar92,1); + auVar89 = NEON_umax(auVar100,auVar110,1); + auVar78 = NEON_umax(auVar95,auVar78,1); + auVar77 = NEON_umin(auVar77,auVar97,1); + auVar96 = NEON_umax(auVar91,auVar99,1); + auVar92 = NEON_umax(auVar102,auVar101,1); + auVar103 = NEON_umin(auVar94,auVar106,1); + auVar94 = NEON_umax(auVar80,auVar109,1); + auVar80 = NEON_umin(auVar109,auVar80,1); + auVar88 = NEON_umin(auVar90,auVar87,1); + auVar106 = NEON_umin(auVar79,auVar75,1); + auVar84 = NEON_umax(auVar87,auVar90,1); + auVar87 = NEON_umax(auVar75,auVar79,1); + auVar75 = NEON_umax(auVar103,auVar86,1); + auVar90 = NEON_umin(auVar99,auVar91,1); + auVar95 = NEON_umin(auVar76,auVar73,1); + auVar91 = NEON_umax(auVar98,auVar108,1); + auVar105 = NEON_umin(auVar81,auVar93,1); + auVar76 = NEON_umax(auVar93,auVar81,1); + auVar79 = NEON_umax(auVar82,auVar74,1); + auVar73 = NEON_umin(auVar107,auVar104,1); + auVar109 = NEON_umax(auVar105,auVar88,1); + auVar99 = NEON_umin(auVar92,auVar78,1); + auVar101 = NEON_umin(auVar79,auVar106,1); + auVar102 = NEON_umax(auVar104,auVar107,1); + auVar97 = NEON_umax(auVar83,auVar85,1); + auVar81 = NEON_umin(auVar85,auVar83,1); + auVar86 = NEON_umin(auVar86,auVar103,1); + auVar83 = NEON_umax(auVar96,auVar102,1); + auVar74 = NEON_umin(auVar110,auVar100,1); + auVar85 = NEON_umin(auVar89,auVar94,1); + auVar82 = NEON_umin(auVar108,auVar98,1); + auVar93 = NEON_umin(auVar102,auVar96,1); + auVar98 = NEON_umax(auVar77,auVar95,1); + auVar100 = NEON_umin(auVar85,auVar75,1); + auVar96 = NEON_umax(auVar75,auVar85,1); + auVar108 = NEON_umin(auVar84,auVar76,1); + auVar75 = NEON_umin(auVar97,auVar91,1); + auVar84 = NEON_umax(auVar76,auVar84,1); + auVar85 = NEON_umin(auVar99,auVar109,1); + auVar99 = NEON_umax(auVar109,auVar99,1); + auVar107 = NEON_umin(auVar74,auVar80,1); + auVar104 = NEON_umax(auVar80,auVar74,1); + auVar74 = NEON_umax(auVar90,auVar73,1); + auVar92 = NEON_umax(auVar78,auVar92,1); + auVar76 = NEON_umin(auVar95,auVar77,1); + auVar102 = NEON_umin(auVar101,auVar74,1); + auVar86 = NEON_umax(auVar76,auVar86,1); + auVar91 = NEON_umax(auVar91,auVar97,1); + auVar76 = NEON_umax(auVar82,auVar81,1); + auVar78 = NEON_umin(auVar75,auVar98,1); + auVar103 = NEON_umax(auVar98,auVar75,1); + auVar98 = NEON_umin(auVar83,auVar87,1); + auVar97 = NEON_umax(auVar87,auVar83,1); + auVar87 = NEON_umax(auVar74,auVar101,1); + auVar95 = NEON_umin(auVar81,auVar82,1); + auVar80 = NEON_umin(auVar88,auVar105,1); + auVar77 = NEON_umin(auVar107,auVar85,1); + auVar75 = NEON_umax(auVar84,auVar96,1); + auVar74 = NEON_umax(auVar94,auVar89,1); + auVar101 = NEON_umax(auVar98,auVar103,1); + auVar89 = NEON_umin(auVar103,auVar98,1); + auVar82 = NEON_umin(auVar108,auVar100,1); + auVar83 = NEON_umin(auVar73,auVar90,1); + auVar105 = NEON_umax(auVar100,auVar108,1); + auVar98 = NEON_umin(auVar99,auVar104,1); + auVar73 = NEON_umax(auVar104,auVar99,1); + auVar104 = NEON_umin(auVar93,auVar78,1); + auVar88 = NEON_umax(auVar78,auVar93,1); + auVar78 = NEON_umin(auVar91,auVar97,1); + auVar97 = NEON_umax(auVar97,auVar91,1); + auVar90 = NEON_umax(auVar106,auVar79,1); + auVar100 = NEON_umin(auVar87,auVar76,1); + auVar81 = NEON_umax(auVar85,auVar107,1); + auVar79 = NEON_umax(auVar76,auVar87,1); + auVar103 = NEON_umin(auVar80,auVar82,1); + auVar85 = NEON_umin(auVar96,auVar84,1); + auVar96 = NEON_umax(auVar82,auVar80,1); + auVar93 = NEON_umin(auVar77,auVar105,1); + auVar76 = NEON_umin(auVar95,auVar102,1); + auVar82 = NEON_umin(auVar90,auVar97,1); + auVar99 = NEON_umax(auVar102,auVar95,1); + auVar80 = NEON_umax(auVar74,auVar73,1); + auVar87 = NEON_umin(auVar73,auVar74,1); + auVar94 = NEON_umin(auVar83,auVar104,1); + auVar102 = NEON_umin(auVar79,auVar78,1); + auVar95 = NEON_umax(auVar105,auVar77,1); + auVar91 = NEON_umax(auVar75,auVar98,1); + auVar74 = NEON_umax(auVar88,auVar76,1); + auVar84 = NEON_umax(auVar104,auVar83,1); + auVar79 = NEON_umax(auVar78,auVar79,1); + auVar104 = NEON_umin(auVar76,auVar88,1); + auVar78 = NEON_umax(auVar101,auVar100,1); + auVar73 = NEON_umin(auVar81,auVar85,1); + auVar83 = NEON_umin(auVar98,auVar75,1); + auVar77 = NEON_umax(auVar85,auVar81,1); + auVar81 = NEON_umin(auVar99,auVar89,1); + auVar88 = NEON_umax(auVar97,auVar90,1); + auVar76 = NEON_umax(auVar74,auVar95,1); + auVar79 = NEON_umin(auVar80,auVar79,1); + auVar85 = NEON_umin(auVar87,auVar102,1); + auVar102 = NEON_umin(auVar92,auVar82,1); + auVar87 = NEON_umax(auVar89,auVar99,1); + auVar80 = NEON_umin(auVar100,auVar101,1); + auVar74 = NEON_umin(auVar91,auVar78,1); + auVar78 = NEON_umax(auVar84,auVar96,1); + auVar75 = NEON_umax(auVar94,auVar103,1); + auVar82 = NEON_umax(auVar104,auVar93,1); + auVar74 = NEON_umax(auVar86,auVar74,1); + auVar76 = NEON_umin(auVar76,auVar88,1); + auVar73 = NEON_umax(auVar81,auVar73,1); + auVar82 = NEON_umin(auVar102,auVar82,1); + auVar94 = NEON_umin(auVar79,auVar78,1); + auVar102 = NEON_umin(auVar77,auVar87,1); + auVar75 = NEON_umax(auVar75,auVar85,1); + auVar79 = NEON_umin(auVar83,auVar80,1); + auVar76 = NEON_umin(auVar74,auVar76,1); + auVar102 = NEON_umax(auVar94,auVar102,1); + auVar74 = NEON_umin(auVar75,auVar73,1); + auVar73 = NEON_umax(auVar82,auVar79,1); + auVar102 = NEON_umax(auVar76,auVar102,1); + auVar73 = NEON_umin(auVar73,auVar74,1); + auVar73 = NEON_umax(auVar102,auVar73,1); + ((undefined8 *)(local_98 + lVar67))[1] = auVar73._8_8_; + *(undefined8 *)(local_98 + lVar67) = auVar73._0_8_; + } while (iVar60 <= iVar63); + } + uVar62 = uVar22; + } while ((int)uVar22 <= iVar60); + } + lVar54 = (long)iVar60; + iVar15 = iVar60 - iVar5; + if (iVar60 < iVar5) { + iVar15 = iVar60; + } + iVar7 = iVar50 + iVar60; + if (iVar60 < (int)uVar72) { + iVar7 = iVar15; + } + iVar19 = iVar60 + iVar5; + if ((int)(uVar22 - iVar5) <= iVar60) { + iVar19 = iVar60; + } + lVar51 = (long)iVar7; + iVar7 = iVar60 + uVar72; + if ((int)(uVar22 + iVar50) <= iVar60) { + iVar7 = iVar19; + } + lVar67 = (long)iVar7; + iVar60 = iVar60 + 1; + iVar24 = (uint)pbVar53[(long)iVar15 + (long)iVar46] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar46] - + (uint)pbVar53[lVar54 + iVar46]) + 0x100)]; + iVar25 = (uint)pbVar53[lVar67 + iVar46] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar67 + iVar46] - + (uint)pbVar53[lVar51 + iVar47]) + 0x100)]; + iVar7 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar46] - + (uint)pbVar53[lVar54 + iVar46]) + 0x100)] + + (uint)pbVar53[lVar54 + iVar46]; + iVar8 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar67 + iVar46] - + (uint)pbVar53[lVar51 + iVar47]) + 0x100)] + + (uint)pbVar53[lVar51 + iVar47]; + iVar26 = (uint)pbVar53[lVar51 + iVar46] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar46] - iVar24) + 0x100)]; + iVar24 = iVar24 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar46] - iVar24) + 0x100)]; + iVar9 = iVar25 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar19 + (long)iVar46] - iVar25) + + 0x100)]; + iVar27 = (uint)pbVar53[(long)iVar19 + (long)iVar46] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar19 + (long)iVar46] - iVar25) + 0x100) + ]; + iVar25 = iVar7 + (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar7) + 0x100]; + iVar24 = iVar24 - (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar7) + 0x100]; + iVar10 = iVar8 + (uint)(byte)PTR_DAT_00501b38[(iVar9 - iVar8) + 0x100]; + iVar9 = iVar9 - (uint)(byte)PTR_DAT_00501b38[(iVar9 - iVar8) + 0x100]; + iVar28 = iVar24 - (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar9) + 0x100]; + iVar9 = iVar9 + (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar9) + 0x100]; + iVar29 = (uint)pbVar53[lVar54 + iVar47] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar54 + iVar47] - + (uint)pbVar53[(long)iVar19 + (long)iVar47]) + 0x100)]; + iVar11 = iVar27 + (uint)(byte)PTR_DAT_00501b38[(iVar26 - iVar27) + 0x100]; + iVar30 = (uint)pbVar57[lVar51] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[lVar51] - (uint)pbVar57[iVar15]) + 0x100)]; + iVar31 = iVar25 - (uint)(byte)PTR_DAT_00501b38[(iVar25 - iVar10) + 0x100]; + iVar7 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar54 + iVar47] - + (uint)pbVar53[(long)iVar19 + (long)iVar47]) + 0x100)] + + (uint)pbVar53[(long)iVar19 + (long)iVar47]; + iVar8 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[lVar51] - (uint)pbVar57[iVar15]) + 0x100)] + + (uint)pbVar57[iVar15]; + iVar24 = iVar29 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar47] - iVar29) + + 0x100)]; + iVar12 = iVar30 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar67 + iVar47] - iVar30) + 0x100)]; + iVar32 = (uint)pbVar53[lVar67 + iVar47] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar67 + iVar47] - iVar30) + 0x100)]; + iVar33 = (uint)pbVar53[(long)iVar15 + (long)iVar47] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar47] - iVar29) + 0x100) + ]; + iVar30 = iVar31 - (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar11) + 0x100]; + iVar11 = iVar11 + (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar11) + 0x100]; + iVar13 = iVar8 + (uint)(byte)PTR_DAT_00501b38[(iVar12 - iVar8) + 0x100]; + iVar29 = iVar7 + (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar7) + 0x100]; + iVar24 = iVar24 - (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar7) + 0x100]; + iVar12 = iVar12 - (uint)(byte)PTR_DAT_00501b38[(iVar12 - iVar8) + 0x100]; + iVar8 = iVar32 + (uint)(byte)PTR_DAT_00501b38[(iVar33 - iVar32) + 0x100]; + iVar31 = iVar29 - (uint)(byte)PTR_DAT_00501b38[(iVar29 - iVar13) + 0x100]; + iVar13 = iVar13 + (uint)(byte)PTR_DAT_00501b38[(iVar29 - iVar13) + 0x100]; + iVar34 = iVar24 - (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar12) + 0x100]; + iVar12 = iVar12 + (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar12) + 0x100]; + iVar26 = iVar26 - (uint)(byte)PTR_DAT_00501b38[(iVar26 - iVar27) + 0x100]; + iVar10 = iVar10 + (uint)(byte)PTR_DAT_00501b38[(iVar25 - iVar10) + 0x100]; + iVar35 = iVar28 - (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar30) + 0x100]; + iVar7 = iVar9 + (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar9) + 0x100]; + iVar29 = iVar31 - (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar8) + 0x100]; + iVar8 = iVar8 + (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar8) + 0x100]; + iVar33 = iVar33 - (uint)(byte)PTR_DAT_00501b38[(iVar33 - iVar32) + 0x100]; + iVar30 = iVar30 + (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar30) + 0x100]; + iVar28 = iVar34 - (uint)(byte)PTR_DAT_00501b38[(iVar34 - iVar29) + 0x100]; + iVar27 = iVar12 + (uint)(byte)PTR_DAT_00501b38[(iVar8 - iVar12) + 0x100]; + iVar11 = iVar11 - (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar9) + 0x100]; + iVar29 = iVar29 + (uint)(byte)PTR_DAT_00501b38[(iVar34 - iVar29) + 0x100]; + iVar8 = iVar8 - (uint)(byte)PTR_DAT_00501b38[(iVar8 - iVar12) + 0x100]; + iVar24 = iVar33 + (uint)(byte)PTR_DAT_00501b38[(iVar26 - iVar33) + 0x100]; + iVar25 = iVar28 + (uint)(byte)PTR_DAT_00501b38[(iVar35 - iVar28) + 0x100]; + iVar31 = iVar10 - (uint)(byte)PTR_DAT_00501b38[(iVar10 - iVar13) + 0x100]; + iVar9 = iVar7 - (uint)(byte)PTR_DAT_00501b38[(iVar7 - iVar27) + 0x100]; + iVar12 = iVar30 - (uint)(byte)PTR_DAT_00501b38[(iVar30 - iVar29) + 0x100]; + iVar29 = iVar29 + (uint)(byte)PTR_DAT_00501b38[(iVar30 - iVar29) + 0x100]; + iVar27 = iVar27 + (uint)(byte)PTR_DAT_00501b38[(iVar7 - iVar27) + 0x100]; + iVar35 = iVar35 - (uint)(byte)PTR_DAT_00501b38[(iVar35 - iVar28) + 0x100]; + iVar7 = iVar25 + (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar25) + 0x100]; + iVar31 = iVar31 - (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar25) + 0x100]; + iVar25 = iVar8 + (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar8) + 0x100]; + iVar11 = iVar11 - (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar8) + 0x100]; + iVar8 = iVar24 + (uint)(byte)PTR_DAT_00501b38[(iVar9 - iVar24) + 0x100]; + iVar9 = iVar9 - (uint)(byte)PTR_DAT_00501b38[(iVar9 - iVar24) + 0x100]; + iVar24 = iVar31 + (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar31) + 0x100]; + iVar13 = iVar13 + (uint)(byte)PTR_DAT_00501b38[(iVar10 - iVar13) + 0x100]; + iVar36 = iVar12 - (uint)(byte)PTR_DAT_00501b38[(iVar12 - iVar9) + 0x100]; + iVar9 = iVar9 + (uint)(byte)PTR_DAT_00501b38[(iVar12 - iVar9) + 0x100]; + iVar12 = iVar29 + (uint)(byte)PTR_DAT_00501b38[(iVar8 - iVar29) + 0x100]; + iVar8 = iVar8 - (uint)(byte)PTR_DAT_00501b38[(iVar8 - iVar29) + 0x100]; + iVar11 = iVar11 - (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar31) + 0x100]; + iVar29 = iVar25 + (uint)(byte)PTR_DAT_00501b38[(iVar7 - iVar25) + 0x100]; + iVar7 = iVar7 - (uint)(byte)PTR_DAT_00501b38[(iVar7 - iVar25) + 0x100]; + iVar37 = (uint)pbVar57[iVar19] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[iVar19] - (uint)pbVar57[lVar67]) + 0x100)]; + iVar25 = iVar8 + (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar8) + 0x100]; + iVar10 = iVar12 + (uint)(byte)PTR_DAT_00501b38[(iVar7 - iVar12) + 0x100]; + iVar30 = iVar27 + (uint)(byte)PTR_DAT_00501b38[(iVar29 - iVar27) + 0x100]; + iVar28 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar23] - + (uint)pbVar53[lVar54 + iVar23]) + 0x100)] + + (uint)pbVar53[lVar54 + iVar23]; + iVar38 = (uint)pbVar53[(long)iVar15 + (long)iVar70] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar70] - + (uint)pbVar53[lVar54 + iVar70]) + 0x100)]; + iVar39 = (uint)pbVar53[lVar67 + iVar70] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar67 + iVar70] - + (uint)pbVar53[lVar51 + iVar23]) + 0x100)]; + iVar40 = (uint)pbVar53[(long)iVar15 + (long)iVar23] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar23] - + (uint)pbVar53[lVar54 + iVar23]) + 0x100)]; + iVar14 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar19 + (long)iVar23] - + (uint)pbVar53[lVar67 + iVar23]) + 0x100)] + + (uint)pbVar53[lVar67 + iVar23]; + iVar41 = (uint)pbVar53[(long)iVar19 + (long)iVar23] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar19 + (long)iVar23] - + (uint)pbVar53[lVar67 + iVar23]) + 0x100)]; + iVar31 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[iVar19] - (uint)pbVar57[lVar67]) + 0x100)] + + (uint)pbVar57[lVar67]; + iVar15 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar15 + (long)iVar70] - + (uint)pbVar53[lVar54 + iVar70]) + 0x100)] + + (uint)pbVar53[lVar54 + iVar70]; + iVar32 = iVar37 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[lVar54] - iVar37) + 0x100)]; + iVar16 = iVar38 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar70] - iVar38) + 0x100)]; + iVar34 = (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar67 + iVar70] - + (uint)pbVar53[lVar51 + iVar23]) + 0x100)] + + (uint)pbVar53[lVar51 + iVar23]; + iVar17 = iVar39 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar19 + (long)iVar70] - iVar39) + + 0x100)]; + iVar18 = iVar41 + (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar41) + 0x100]; + iVar42 = iVar28 - (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar14) + 0x100]; + iVar43 = (uint)pbVar57[lVar54] - + (uint)(byte)PTR_DAT_00501b38[(int)(((uint)pbVar57[lVar54] - iVar37) + 0x100)]; + iVar44 = (uint)pbVar53[lVar51 + iVar70] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar70] - iVar38) + 0x100)]; + iVar45 = (uint)pbVar53[(long)iVar19 + (long)iVar70] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[(long)iVar19 + (long)iVar70] - iVar39) + 0x100) + ]; + iVar19 = iVar34 + (uint)(byte)PTR_DAT_00501b38[(iVar17 - iVar34) + 0x100]; + iVar37 = iVar31 + (uint)(byte)PTR_DAT_00501b38[(iVar32 - iVar31) + 0x100]; + iVar38 = iVar15 + (uint)(byte)PTR_DAT_00501b38[(iVar16 - iVar15) + 0x100]; + iVar17 = iVar17 - (uint)(byte)PTR_DAT_00501b38[(iVar17 - iVar34) + 0x100]; + iVar40 = iVar40 - (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar41) + 0x100]; + iVar41 = iVar18 + (uint)(byte)PTR_DAT_00501b38[(iVar42 - iVar18) + 0x100]; + iVar42 = iVar42 - (uint)(byte)PTR_DAT_00501b38[(iVar42 - iVar18) + 0x100]; + iVar32 = iVar32 - (uint)(byte)PTR_DAT_00501b38[(iVar32 - iVar31) + 0x100]; + iVar16 = iVar16 - (uint)(byte)PTR_DAT_00501b38[(iVar16 - iVar15) + 0x100]; + iVar34 = iVar37 - (uint)(byte)PTR_DAT_00501b38[(iVar37 - iVar38) + 0x100]; + iVar14 = iVar14 + (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar14) + 0x100]; + iVar15 = iVar44 + (uint)(byte)PTR_DAT_00501b38[(iVar43 - iVar44) + 0x100]; + iVar28 = iVar40 + (uint)(byte)PTR_DAT_00501b38[(iVar45 - iVar40) + 0x100]; + iVar18 = iVar19 - (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar41) + 0x100]; + iVar31 = iVar42 + (uint)(byte)PTR_DAT_00501b38[(iVar17 - iVar42) + 0x100]; + iVar17 = iVar17 - (uint)(byte)PTR_DAT_00501b38[(iVar17 - iVar42) + 0x100]; + iVar43 = iVar43 - (uint)(byte)PTR_DAT_00501b38[(iVar43 - iVar44) + 0x100]; + iVar45 = iVar45 - (uint)(byte)PTR_DAT_00501b38[(iVar45 - iVar40) + 0x100]; + iVar41 = iVar41 + (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar41) + 0x100]; + iVar19 = iVar15 + (uint)(byte)PTR_DAT_00501b38[(iVar34 - iVar15) + 0x100]; + iVar34 = iVar34 - (uint)(byte)PTR_DAT_00501b38[(iVar34 - iVar15) + 0x100]; + iVar40 = iVar32 - (uint)(byte)PTR_DAT_00501b38[(iVar32 - iVar16) + 0x100]; + iVar16 = iVar16 + (uint)(byte)PTR_DAT_00501b38[(iVar32 - iVar16) + 0x100]; + iVar15 = iVar28 + (uint)(byte)PTR_DAT_00501b38[(iVar18 - iVar28) + 0x100]; + iVar18 = iVar18 - (uint)(byte)PTR_DAT_00501b38[(iVar18 - iVar28) + 0x100]; + iVar44 = iVar31 - (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar14) + 0x100]; + iVar14 = iVar14 + (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar14) + 0x100]; + iVar28 = iVar34 + (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar34) + 0x100]; + iVar31 = iVar16 + (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar16) + 0x100]; + iVar32 = iVar18 + (uint)(byte)PTR_DAT_00501b38[(iVar17 - iVar18) + 0x100]; + iVar39 = iVar44 + (uint)(byte)PTR_DAT_00501b38[(iVar15 - iVar44) + 0x100]; + iVar38 = iVar38 + (uint)(byte)PTR_DAT_00501b38[(iVar37 - iVar38) + 0x100]; + iVar40 = iVar40 - (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar34) + 0x100]; + iVar17 = iVar17 - (uint)(byte)PTR_DAT_00501b38[(iVar17 - iVar18) + 0x100]; + iVar34 = iVar14 + (uint)(byte)PTR_DAT_00501b38[(iVar41 - iVar14) + 0x100]; + iVar41 = iVar41 - (uint)(byte)PTR_DAT_00501b38[(iVar41 - iVar14) + 0x100]; + iVar37 = iVar45 + (uint)(byte)PTR_DAT_00501b38[(iVar43 - iVar45) + 0x100]; + iVar14 = iVar31 - (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar39) + 0x100]; + iVar18 = iVar32 + (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar32) + 0x100]; + iVar19 = iVar19 - (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar16) + 0x100]; + iVar15 = iVar15 - (uint)(byte)PTR_DAT_00501b38[(iVar15 - iVar44) + 0x100]; + iVar16 = iVar14 - (uint)(byte)PTR_DAT_00501b38[(iVar14 - iVar37) + 0x100]; + iVar39 = iVar39 + (uint)(byte)PTR_DAT_00501b38[(iVar31 - iVar39) + 0x100]; + iVar37 = iVar37 + (uint)(byte)PTR_DAT_00501b38[(iVar14 - iVar37) + 0x100]; + iVar31 = iVar17 + (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar17) + 0x100]; + iVar44 = iVar38 - (uint)(byte)PTR_DAT_00501b38[(iVar38 - iVar41) + 0x100]; + iVar28 = iVar28 - (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar32) + 0x100]; + iVar14 = iVar34 + (uint)(byte)PTR_DAT_00501b38[(iVar18 - iVar34) + 0x100]; + iVar18 = iVar18 - (uint)(byte)PTR_DAT_00501b38[(iVar18 - iVar34) + 0x100]; + iVar32 = iVar15 + (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar15) + 0x100]; + iVar19 = iVar19 - (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar15) + 0x100]; + iVar15 = iVar31 + (uint)(byte)PTR_DAT_00501b38[(iVar44 - iVar31) + 0x100]; + iVar44 = iVar44 - (uint)(byte)PTR_DAT_00501b38[(iVar44 - iVar31) + 0x100]; + iVar40 = iVar40 - (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar17) + 0x100]; + iVar43 = iVar43 - (uint)(byte)PTR_DAT_00501b38[(iVar43 - iVar45) + 0x100]; + iVar31 = iVar28 - (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar16) + 0x100]; + iVar16 = iVar16 + (uint)(byte)PTR_DAT_00501b38[(iVar28 - iVar16) + 0x100]; + iVar34 = iVar15 - (uint)(byte)PTR_DAT_00501b38[(iVar15 - iVar32) + 0x100]; + iVar32 = iVar32 + (uint)(byte)PTR_DAT_00501b38[(iVar15 - iVar32) + 0x100]; + iVar15 = iVar18 + (uint)(byte)PTR_DAT_00501b38[(iVar37 - iVar18) + 0x100]; + iVar17 = iVar39 - (uint)(byte)PTR_DAT_00501b38[(iVar39 - iVar14) + 0x100]; + iVar42 = iVar19 - (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar44) + 0x100]; + iVar37 = iVar37 - (uint)(byte)PTR_DAT_00501b38[(iVar37 - iVar18) + 0x100]; + iVar14 = iVar14 + (uint)(byte)PTR_DAT_00501b38[(iVar39 - iVar14) + 0x100]; + iVar41 = iVar41 + (uint)(byte)PTR_DAT_00501b38[(iVar38 - iVar41) + 0x100]; + iVar44 = iVar44 + (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar44) + 0x100]; + iVar19 = iVar31 + (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar31) + 0x100]; + iVar28 = iVar16 + (uint)(byte)PTR_DAT_00501b38[(iVar42 - iVar16) + 0x100]; + iVar29 = iVar29 - (uint)(byte)PTR_DAT_00501b38[(iVar29 - iVar27) + 0x100]; + iVar40 = iVar40 - (uint)(byte)PTR_DAT_00501b38[(iVar40 - iVar31) + 0x100]; + iVar28 = iVar28 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar9 + (uint)(byte)PTR_DAT_00501b38 + [(iVar11 - iVar9) + 0x100]) - + iVar28) + 0x100)]; + iVar30 = iVar30 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar30 - (iVar17 + (uint)(byte)PTR_DAT_00501b38 + [(iVar32 - iVar17) + + 0x100])) + 0x100)]; + iVar43 = iVar43 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar26 - (uint)(byte)PTR_DAT_00501b38 + [(iVar26 - iVar33) + 0x100]) - + iVar43) + 0x100)]; + iVar30 = iVar30 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar30 - (iVar19 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar36 + ( + uint)(byte)PTR_DAT_00501b38 + [(iVar35 - iVar36) + 0x100]) - iVar19) + + 0x100)])) + 0x100)]; + iVar42 = iVar42 - (uint)(byte)PTR_DAT_00501b38[(iVar42 - iVar16) + 0x100]; + iVar43 = iVar43 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar10 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar10 - (iVar15 + ( + uint)(byte)PTR_DAT_00501b38 + [(iVar34 - iVar15) + 0x100])) + 0x100)] + ) - iVar43) + 0x100)]; + iVar7 = iVar7 - (uint)(byte)PTR_DAT_00501b38[(iVar7 - iVar12) + 0x100]; + iVar43 = iVar43 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar43 - (iVar28 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar28 - ( + iVar14 + (uint)(byte)PTR_DAT_00501b38 + [(iVar41 - iVar14) + 0x100])) + + 0x100)])) + 0x100)]; + iVar40 = iVar40 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar35 - (uint)(byte)PTR_DAT_00501b38 + [(iVar35 - iVar36) + 0x100]) - + iVar40) + 0x100)]; + iVar19 = iVar44 - (uint)(byte)PTR_DAT_00501b38[(iVar44 - iVar37) + 0x100]; + iVar13 = iVar13 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar13 - (iVar41 - (uint)(byte)PTR_DAT_00501b38 + [(iVar41 - iVar14) + + 0x100])) + 0x100)]; + iVar40 = iVar40 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar29 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar29 - (iVar32 - ( + uint)(byte)PTR_DAT_00501b38 + [(iVar32 - iVar17) + 0x100])) + 0x100)] + ) - iVar40) + 0x100)]; + iVar13 = iVar13 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar13 - (iVar42 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar11 - ( + uint)(byte)PTR_DAT_00501b38 + [(iVar11 - iVar9) + 0x100]) - iVar42) + + 0x100)])) + 0x100)]; + iVar43 = iVar43 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar30 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar25 - (uint)(byte) + PTR_DAT_00501b38 + [(int)((iVar25 - (iVar37 + (uint)(byte) + PTR_DAT_00501b38[(iVar44 - iVar37) + 0x100])) + + 0x100)]) - iVar30) + 0x100)]) - iVar43) + 0x100)]; + iVar13 = iVar13 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar7 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar7 - (iVar34 - (uint + )(byte)PTR_DAT_00501b38[(iVar34 - iVar15) + 0x100] + )) + 0x100)]) - iVar13) + 0x100)]; + *(char *)(local_98 + lVar54) = + (char)iVar43 + + PTR_DAT_00501b38 + [(int)(((iVar13 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar13 - (iVar40 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar40 - + (iVar19 + + (uint)( + byte)PTR_DAT_00501b38 + [(int)(((iVar24 - (uint)(byte) + PTR_DAT_00501b38[(iVar24 - iVar8) + 0x100]) - + iVar19) + 0x100)])) + 0x100)])) + 0x100)]) - + iVar43) + 0x100)]; + } while( true ); + } + iVar50 = iVar63 + 1; + local_3c = iVar63; + } + iVar63 = 0; + iVar71 = iVar5; + local_30 = iVar5; +LAB_001f4a64: + if (local_3c < 1) { + return; + } + iVar61 = 0; + lVar54 = (long)-local_30; + do { + lVar51 = (long)local_30; + if (iVar50 + -2 <= iVar61) { + lVar51 = 0; + } + lVar67 = lVar51; + if (iVar61 < iVar50 + -3) { + lVar67 = (long)(local_30 << 1); + } + lVar66 = 0; + pbVar57 = pbVar53; + do { + if (iVar61 < 1) { + lVar52 = 0; + lVar55 = 0; + } + else { + lVar52 = lVar54; + lVar55 = (long)(local_30 * -2); + if (iVar61 == 1) { + lVar55 = lVar54; + } + } + pbVar1 = pbVar57 + lVar51; + pbVar2 = pbVar57 + lVar67; + pbVar3 = pbVar57 + lVar52; + pbVar4 = pbVar57 + lVar55; + bVar21 = *pbVar57; + pbVar57 = pbVar57 + 1; + iVar47 = (uint)*pbVar1 - + (uint)(byte)PTR_DAT_00501b38[(int)(((uint)*pbVar1 - (uint)*pbVar2) + 0x100)]; + iVar60 = (uint)*pbVar2 + + (uint)(byte)PTR_DAT_00501b38[(int)(((uint)*pbVar1 - (uint)*pbVar2) + 0x100)]; + iVar46 = (uint)*pbVar3 + + (uint)(byte)PTR_DAT_00501b38[(int)(((uint)*pbVar4 - (uint)*pbVar3) + 0x100)]; + iVar70 = (uint)bVar21 - (uint)(byte)PTR_DAT_00501b38[(int)(((uint)bVar21 - iVar47) + 0x100)] + ; + iVar47 = iVar47 + (uint)(byte)PTR_DAT_00501b38[(int)(((uint)bVar21 - iVar47) + 0x100)]; + iVar70 = iVar70 + (uint)(byte)PTR_DAT_00501b38 + [(int)((((uint)*pbVar4 - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)*pbVar4 - (uint)*pbVar3) + + 0x100)]) - iVar70) + 0x100)]; + iVar70 = iVar70 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar70 - (iVar60 + (uint)(byte)PTR_DAT_00501b38 + [(iVar47 - iVar60) + + 0x100])) + 0x100)]; + *(char *)(local_98 + lVar66) = + (char)iVar70 + + PTR_DAT_00501b38 + [(int)(((iVar46 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar46 - (iVar47 - (uint)(byte)PTR_DAT_00501b38 + [(iVar47 - iVar60) + + 0x100])) + + 0x100)]) - iVar70) + 0x100)]; + lVar66 = lVar66 + 1; + } while ((int)lVar66 < iVar5); + iVar61 = iVar61 + 1; + pbVar53 = pbVar53 + (long)(int)uVar22 + 1 + (long)iVar63; + local_98 = local_98 + iVar71; + } while (iVar61 != local_3c); + return; + } + if (iVar63 == 1) { + iVar50 = local_3c + 1; + if (local_3c != 1) { + iVar63 = local_30 - iVar5; + goto LAB_001f497c; + } + iVar50 = 2; + } + else { + if (local_3c != 1) { + iVar63 = iVar63 * iVar5; + if (local_3c < 1) { + return; + } + iVar61 = (iVar63 + -0x10) - iVar5; + iVar50 = 0; + lVar54 = (long)iVar5; + pbVar57 = pbVar53; +LAB_001f2f98: + iVar60 = 0; + iVar46 = iVar50 + -1; + iVar50 = iVar50 + 1; + if (iVar46 < 0) { + iVar46 = 0; + } + iVar47 = iVar50; + if (local_3c + -1 < iVar50) { + iVar47 = local_3c + -1; + } + iVar70 = iVar5; + if (cVar49 == '\0') { + iVar70 = iVar63; + } + iVar46 = local_30 * iVar46; + iVar47 = local_30 * iVar47; + do { + if (iVar70 <= iVar60) { + do { + if (iVar70 == iVar63) { + local_98 = local_98 + iVar71; + pbVar57 = pbVar57 + local_30; + if (iVar50 == local_3c) { + return; + } + goto LAB_001f2f98; + } + if (iVar60 <= iVar61) { + lVar51 = (long)iVar60; + pauVar59 = (undefined1 (*) [16])(pbVar53 + lVar51 + iVar46); + pauVar58 = (undefined1 (*) [16])(pbVar57 + lVar51); + pauVar56 = (undefined1 (*) [16])(pbVar53 + lVar51 + iVar47); + puVar65 = (undefined8 *)(local_98 + lVar51); + do { + pbVar1 = *pauVar56; + pbVar2 = *pauVar59; + auVar73 = *pauVar56; + pauVar69 = (undefined1 (*) [16])((long)pauVar58 - lVar54); + pauVar68 = (undefined1 (*) [16])((long)pauVar56 - lVar54); + pauVar64 = (undefined1 (*) [16])((long)pauVar59 - lVar54); + auVar102 = *pauVar59; + iVar60 = iVar60 + 0x10; + pauVar59 = pauVar59 + 1; + auVar77 = NEON_umin(*pauVar58,*(undefined1 (*) [16])(*pauVar58 + lVar54),1); + auVar79 = NEON_umin(auVar73,*(undefined1 (*) [16])(pbVar1 + lVar54),1); + auVar76 = NEON_umax(*(undefined1 (*) [16])(*pauVar58 + lVar54),*pauVar58,1); + pauVar58 = pauVar58 + 1; + auVar78 = NEON_umin(auVar102,*(undefined1 (*) [16])(pbVar2 + lVar54),1); + pauVar56 = pauVar56 + 1; + auVar74 = NEON_umax(*(undefined1 (*) [16])(pbVar1 + lVar54),auVar73,1); + auVar82 = NEON_umax(auVar79,*pauVar68,1); + auVar73 = NEON_umax(auVar77,*pauVar69,1); + auVar102 = NEON_umax(*(undefined1 (*) [16])(pbVar2 + lVar54),auVar102,1); + auVar94 = NEON_umax(auVar78,*pauVar64,1); + auVar75 = NEON_umin(auVar82,auVar74,1); + auVar86 = NEON_umin(auVar73,auVar76,1); + auVar74 = NEON_umax(auVar74,auVar82,1); + auVar76 = NEON_umax(auVar76,auVar73,1); + auVar73 = NEON_umin(auVar94,auVar102,1); + auVar82 = NEON_umin(auVar86,auVar75,1); + auVar102 = NEON_umax(auVar102,auVar94,1); + auVar76 = NEON_umin(auVar76,auVar74,1); + auVar94 = NEON_umin(*pauVar64,auVar78,1); + auVar74 = NEON_umax(auVar82,auVar73,1); + auVar82 = NEON_umin(*pauVar69,auVar77,1); + auVar75 = NEON_umax(auVar75,auVar86,1); + auVar73 = NEON_umin(auVar102,auVar76,1); + auVar76 = NEON_umin(*pauVar68,auVar79,1); + auVar82 = NEON_umax(auVar82,auVar94,1); + auVar102 = NEON_umin(auVar74,auVar75,1); + auVar74 = NEON_umax(auVar76,auVar82,1); + auVar76 = NEON_umin(auVar102,auVar73,1); + auVar73 = NEON_umax(auVar73,auVar102,1); + auVar102 = NEON_umax(auVar76,auVar74,1); + auVar73 = NEON_umin(auVar102,auVar73,1); + puVar65[1] = auVar73._8_8_; + *puVar65 = auVar73._0_8_; + puVar65 = puVar65 + 2; + } while (iVar60 <= iVar61); + } + iVar70 = iVar63; + } while (iVar63 <= iVar60); + } + iVar6 = iVar60 - iVar5; + if (iVar60 < iVar5) { + iVar6 = iVar60; + } + lVar51 = (long)iVar60; + iVar23 = iVar60 + iVar5; + if (iVar63 - iVar5 <= iVar60) { + iVar23 = iVar60; + } + lVar66 = (long)iVar6; + iVar60 = iVar60 + 1; + lVar67 = (long)iVar23; + iVar19 = (uint)pbVar57[lVar51] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[lVar51] - (uint)pbVar57[lVar67]) + 0x100)]; + iVar24 = (uint)pbVar53[lVar51 + iVar47] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar47] - (uint)pbVar53[lVar67 + iVar47] + ) + 0x100)]; + iVar6 = (uint)pbVar53[lVar67 + iVar47] + + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar47] - (uint)pbVar53[lVar67 + iVar47]) + + 0x100)]; + iVar8 = (uint)pbVar57[lVar67] + + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[lVar51] - (uint)pbVar57[lVar67]) + 0x100)]; + iVar25 = (uint)pbVar53[lVar51 + iVar46] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar46] - (uint)pbVar53[lVar67 + iVar46] + ) + 0x100)]; + iVar23 = iVar19 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar57[lVar66] - iVar19) + 0x100)]; + iVar15 = iVar24 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar66 + iVar47] - iVar24) + 0x100)]; + iVar7 = (uint)pbVar53[lVar67 + iVar46] + + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar51 + iVar46] - (uint)pbVar53[lVar67 + iVar46]) + + 0x100)]; + iVar9 = (uint)pbVar57[lVar66] - + (uint)(byte)PTR_DAT_00501b38[(int)(((uint)pbVar57[lVar66] - iVar19) + 0x100)]; + iVar19 = iVar25 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar66 + iVar46] - iVar25) + 0x100)]; + iVar11 = iVar23 - (uint)(byte)PTR_DAT_00501b38[(iVar23 - iVar8) + 0x100]; + iVar29 = iVar15 - (uint)(byte)PTR_DAT_00501b38[(iVar15 - iVar6) + 0x100]; + iVar8 = iVar8 + (uint)(byte)PTR_DAT_00501b38[(iVar23 - iVar8) + 0x100]; + iVar23 = iVar7 + (uint)(byte)PTR_DAT_00501b38[(iVar19 - iVar7) + 0x100]; + iVar12 = (uint)pbVar53[lVar66 + iVar47] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar66 + iVar47] - iVar24) + 0x100)]; + iVar24 = iVar11 - (uint)(byte)PTR_DAT_00501b38[(iVar11 - iVar29) + 0x100]; + iVar24 = iVar24 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar19 - (uint)(byte)PTR_DAT_00501b38 + [(iVar19 - iVar7) + 0x100]) - + iVar24) + 0x100)]; + iVar23 = iVar23 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar23 - (iVar8 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar8 - (iVar6 + + (uint)( + byte)PTR_DAT_00501b38[(iVar15 - iVar6) + 0x100])) + + 0x100)])) + 0x100)]; + iVar24 = iVar24 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar24 - (iVar29 + (uint)(byte)PTR_DAT_00501b38 + [(iVar11 - iVar29) + + 0x100])) + 0x100)]; + iVar6 = iVar24 - (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar23) + 0x100]; + iVar6 = iVar6 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar12 + (uint)(byte)PTR_DAT_00501b38 + [(int)(((iVar9 + (uint)(byte) + PTR_DAT_00501b38 + [(int)((((uint)pbVar53[lVar66 + iVar46] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar66 + + iVar46] + - iVar25) + 0x100)]) - + iVar9) + 0x100)]) - iVar12) + 0x100)]) - + iVar6) + 0x100)]; + *(char *)(local_98 + lVar51) = + (char)iVar6 - + PTR_DAT_00501b38 + [(int)((iVar6 - (iVar23 + (uint)(byte)PTR_DAT_00501b38[(iVar24 - iVar23) + 0x100])) + + 0x100)]; + } while( true ); + } + iVar50 = iVar63 + 1; + local_3c = iVar63; + } + iVar63 = 0; + iVar71 = iVar5; + local_30 = iVar5; +LAB_001f497c: + if (0 < local_3c) { + iVar61 = 0; + do { + lVar54 = 0; + lVar51 = (long)-local_30; + if (iVar61 < 1) { + lVar51 = 0; + } + lVar67 = (long)local_30; + if (iVar50 + -2 <= iVar61) { + lVar67 = 0; + } + do { + iVar60 = (uint)pbVar53[lVar54] + + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar54 + lVar51] - (uint)pbVar53[lVar54]) + 0x100 + )]; + iVar60 = iVar60 - (uint)(byte)PTR_DAT_00501b38 + [(int)((iVar60 - (uint)pbVar53[lVar54 + lVar67]) + 0x100)]; + *(char *)(local_98 + lVar54) = + (char)iVar60 + + PTR_DAT_00501b38 + [(int)((((uint)pbVar53[lVar54 + lVar51] - + (uint)(byte)PTR_DAT_00501b38 + [(int)(((uint)pbVar53[lVar54 + lVar51] - (uint)pbVar53[lVar54]) + + 0x100)]) - iVar60) + 0x100)]; + lVar54 = lVar54 + 1; + } while ((int)lVar54 < iVar5); + iVar61 = iVar61 + 1; + pbVar53 = pbVar53 + (long)(int)uVar22 + 1 + (long)iVar63; + local_98 = local_98 + iVar71; + } while (iVar61 != local_3c); + } + return; +} + + +================================================================== + +### FUNC 001f4c10 (29616 bytes) name=FUN_001f4c10 + +void FUN_001f4c10(uint *param_1,long param_2,int param_3) + +{ + uint uVar1; + int iVar2; + undefined1 (*pauVar3) [16]; + undefined1 (*pauVar4) [16]; + undefined1 (*pauVar5) [16]; + ushort *puVar6; + long lVar7; + ushort *puVar8; + ushort *puVar9; + long lVar10; + ushort *puVar11; + ushort uVar12; + ushort uVar13; + ushort uVar14; + ushort uVar15; + ushort uVar16; + ushort uVar17; + ushort uVar18; + ushort uVar19; + ushort uVar20; + ushort uVar21; + ushort uVar22; + ushort uVar23; + ushort uVar24; + ushort uVar25; + ushort uVar26; + ushort uVar27; + ushort uVar28; + ushort uVar29; + ushort uVar30; + ushort uVar31; + ushort uVar32; + ushort uVar33; + ushort uVar34; + ushort uVar35; + ushort uVar36; + ushort uVar37; + ushort uVar38; + ushort uVar39; + ushort uVar40; + uint uVar41; + int iVar42; + int iVar43; + int iVar44; + undefined1 *puVar45; + undefined1 *puVar46; + bool bVar47; + char cVar48; + undefined1 (*pauVar49) [16]; + ushort *puVar50; + undefined1 (*pauVar51) [16]; + int iVar52; + ulong uVar53; + ushort *puVar54; + long lVar55; + long lVar56; + undefined1 (*pauVar57) [16]; + int iVar58; + long lVar59; + long lVar60; + int iVar61; + long lVar62; + uint uVar63; + ushort *puVar64; + ushort *puVar65; + long lVar66; + ulong uVar67; + undefined8 *puVar68; + int iVar69; + uint uVar70; + long lVar71; + ulong uVar72; + long lVar73; + ushort *puVar74; + ulong uVar75; + ulong uVar76; + uint uVar77; + int iVar78; + uint uVar79; + ulong uVar80; + ulong uVar81; + ulong uVar82; + uint uVar83; + undefined1 auVar84 [16]; + undefined1 auVar85 [16]; + undefined1 auVar86 [16]; + undefined1 auVar87 [16]; + undefined1 auVar88 [16]; + undefined1 auVar89 [16]; + undefined1 auVar90 [16]; + undefined1 auVar91 [16]; + undefined1 auVar92 [16]; + undefined1 auVar93 [16]; + undefined1 auVar94 [16]; + undefined1 auVar95 [16]; + undefined1 auVar96 [16]; + undefined1 auVar97 [16]; + undefined1 auVar98 [16]; + undefined1 auVar99 [16]; + undefined1 auVar100 [16]; + undefined1 auVar101 [16]; + undefined1 auVar102 [16]; + undefined1 auVar103 [16]; + undefined1 auVar104 [16]; + undefined1 auVar105 [16]; + undefined1 auVar106 [16]; + undefined1 auVar107 [16]; + undefined1 auVar108 [16]; + undefined1 auVar109 [16]; + undefined1 auVar110 [16]; + undefined1 auVar111 [16]; + undefined1 auVar112 [16]; + undefined1 auVar113 [16]; + undefined1 auVar114 [16]; + undefined1 auVar115 [16]; + undefined1 auVar116 [16]; + undefined1 auVar117 [16]; + undefined1 auVar118 [16]; + undefined1 auVar119 [16]; + undefined1 auVar120 [16]; + undefined1 auVar121 [16]; + undefined1 auVar122 [16]; + undefined1 auVar123 [16]; + undefined1 auVar124 [16]; + undefined1 auVar125 [16]; + undefined1 auVar126 [16]; + undefined1 auVar127 [16]; + undefined1 auVar128 [16]; + undefined1 auVar129 [16]; + undefined1 auVar130 [16]; + undefined1 auVar131 [16]; + undefined1 auVar132 [16]; + undefined1 auVar133 [16]; + undefined1 auVar134 [16]; + undefined1 auVar135 [16]; + undefined1 auVar136 [16]; + ushort uVar137; + ushort uVar138; + undefined1 auVar139 [16]; + undefined1 auVar140 [16]; + undefined1 auVar141 [16]; + undefined1 auVar142 [16]; + undefined1 auVar143 [16]; + undefined1 auVar144 [16]; + undefined1 auVar145 [16]; + undefined1 auVar146 [16]; + long lVar147; + undefined1 auVar148 [16]; + long lVar149; + undefined1 auVar150 [16]; + undefined1 auVar151 [16]; + undefined1 auVar152 [16]; + undefined1 auVar153 [16]; + undefined1 auVar154 [16]; + undefined1 auVar155 [16]; + undefined1 auVar156 [16]; + undefined1 auVar157 [16]; + undefined1 auVar158 [16]; + undefined1 auVar159 [16]; + undefined1 auVar160 [16]; + undefined1 auVar161 [16]; + undefined1 auVar162 [16]; + undefined1 auVar163 [16]; + undefined1 auVar164 [16]; + undefined1 auVar165 [16]; + undefined1 auVar166 [16]; + undefined1 auVar167 [16]; + undefined1 auVar168 [16]; + undefined1 auVar169 [16]; + undefined1 auVar170 [16]; + undefined1 auVar171 [16]; + undefined1 auVar172 [16]; + undefined1 auVar173 [16]; + undefined1 auVar174 [16]; + undefined1 auVar175 [16]; + undefined1 auVar176 [16]; + undefined1 auVar177 [16]; + undefined1 auVar178 [16]; + undefined1 auVar179 [16]; + undefined1 auVar180 [16]; + undefined1 auVar181 [16]; + undefined1 auVar182 [16]; + undefined1 auVar183 [16]; + undefined1 auVar184 [16]; + undefined1 auVar185 [16]; + undefined1 auVar186 [16]; + undefined1 auVar187 [16]; + undefined1 auVar188 [16]; + undefined1 auVar189 [16]; + long local_90; + int local_34; + uint local_30; + int local_2c; + int local_20; + + uVar67 = *(ulong *)(param_2 + 0x50); + uVar41 = *param_1 >> 3 & 0x1ff; + local_90 = *(long *)(param_2 + 0x10); + uVar1 = uVar41 + 1; + uVar81 = uVar67 >> 1; + local_34 = **(int **)(param_2 + 0x40); + uVar83 = (uint)uVar81; + uVar80 = *(ulong *)(param_1 + 0x14); + puVar74 = *(ushort **)(param_1 + 4); + iVar69 = (*(int **)(param_2 + 0x40))[1]; + cVar48 = cv::checkHardwareSupport(3); + local_30 = (uint)(uVar80 >> 1); + if (cVar48 == '\0') { + cVar48 = cv::checkHardwareSupport(100); + } + if (param_3 != 3) { + if (param_3 != 5) { + return; + } + if (iVar69 == 1) { + iVar58 = local_34 + 1; + if (local_34 != 1) { + uVar67 = (ulong)(local_30 - uVar1); + goto LAB_001f64a4; + } + iVar58 = 2; + } + else { + if (local_34 != 1) { + uVar41 = iVar69 * uVar1; + if (local_34 < 1) { + return; + } + iVar61 = local_34 + -1; + iVar58 = uVar1 * -2; + uVar83 = uVar1 * 2; + iVar69 = (uVar41 - 8) + iVar58; + local_2c = 0; + local_20 = 1; + puVar64 = puVar74; +LAB_001f5078: + uVar80 = 0; + iVar52 = local_2c + -2; + if (iVar52 < 0) { + iVar52 = 0; + } + iVar44 = local_2c + -1; + local_2c = local_20; + if (iVar44 < 0) { + iVar44 = 0; + } + iVar42 = local_20; + if (iVar61 < local_20) { + iVar42 = iVar61; + } + iVar2 = local_20 + 1; + iVar43 = iVar61; + if (iVar2 < iVar61) { + iVar43 = iVar2; + } + iVar52 = local_30 * iVar52; + iVar44 = local_30 * iVar44; + iVar42 = local_30 * iVar42; + iVar43 = local_30 * iVar43; + uVar77 = uVar41; + if (cVar48 != '\0') { + uVar77 = uVar83; + } +LAB_001f50f8: + do { + if ((int)uVar77 <= (int)uVar80) { + do { + if (uVar77 == uVar41) { + bVar47 = local_20 == local_34; + local_90 = local_90 + + (-(uVar67 >> 0x20 & 1) & 0xfffffffe00000000 | (uVar81 & 0xffffffff) << 1) + ; + puVar64 = puVar64 + (int)local_30; + local_20 = iVar2; + if (bVar47) { + return; + } + goto LAB_001f5078; + } + iVar78 = (int)uVar80; + uVar77 = uVar41; + if (iVar69 < iVar78) goto LAB_001f50f8; + lVar59 = (long)iVar78; + lVar55 = 0; + do { + uVar63 = (int)uVar80 + 8; + uVar80 = (ulong)uVar63; + lVar62 = lVar55 + (lVar59 - (ulong)uVar83) * 2; + lVar71 = lVar55 + (lVar59 - (int)uVar1) * 2; + auVar86 = *(undefined1 (*) [16])((long)puVar74 + lVar62 + (long)iVar44 * 2); + lVar73 = lVar55 + ((int)uVar1 + lVar59) * 2; + lVar56 = lVar55 + ((ulong)uVar83 + lVar59) * 2; + lVar60 = lVar55 + (long)iVar78 * 2; + auVar166 = *(undefined1 (*) [16])((long)puVar74 + lVar73 + (long)iVar44 * 2); + auVar89 = *(undefined1 (*) [16])((long)puVar74 + lVar60 + (long)iVar44 * 2); + auVar140 = *(undefined1 (*) [16])((long)puVar74 + lVar56 + (long)iVar52 * 2); + auVar88 = *(undefined1 (*) [16])((long)puVar74 + lVar60 + (long)iVar42 * 2); + auVar167 = NEON_umax(auVar166,auVar89,2); + auVar174 = *(undefined1 (*) [16])((long)puVar74 + lVar60 + (long)iVar52 * 2); + auVar87 = *(undefined1 (*) [16])((long)puVar74 + lVar71 + (long)iVar52 * 2); + auVar103 = NEON_umin(auVar89,auVar166,2); + auVar166 = *(undefined1 (*) [16])((long)puVar74 + lVar73 + (long)iVar52 * 2); + auVar181 = NEON_umin(auVar140,auVar86,2); + auVar187 = *(undefined1 (*) [16])((long)puVar74 + lVar62 + (long)iVar42 * 2); + auVar89 = *(undefined1 (*) [16])((long)puVar74 + lVar62 + (long)iVar52 * 2); + auVar85 = *(undefined1 (*) [16])((long)puVar74 + lVar71 + (long)iVar42 * 2); + auVar161 = NEON_umax(auVar86,auVar140,2); + auVar86 = *(undefined1 (*) [16])((long)puVar74 + lVar60 + (long)iVar43 * 2); + auVar140 = *(undefined1 (*) [16])((long)puVar74 + lVar71 + (long)iVar43 * 2); + auVar183 = NEON_umax(auVar181,auVar166,2); + auVar84 = NEON_umin(auVar85,auVar88,2); + auVar96 = *(undefined1 (*) [16])((long)puVar74 + lVar56 + (long)iVar43 * 2); + auVar148 = NEON_umax(auVar88,auVar85,2); + auVar152 = NEON_umin(auVar140,auVar86,2); + auVar150 = NEON_umax(auVar84,auVar187,2); + auVar129 = NEON_umax(auVar86,auVar140,2); + auVar173 = NEON_umax(auVar174,auVar87,2); + auVar86 = *(undefined1 (*) [16])((long)puVar74 + lVar56 + (long)iVar44 * 2); + auVar175 = NEON_umin(*(undefined1 (*) [16])((long)puVar64 + lVar62), + *(undefined1 (*) [16])((long)puVar64 + lVar71),2); + auVar105 = NEON_umin(auVar87,auVar174,2); + auVar140 = *(undefined1 (*) [16])((long)puVar74 + lVar56 + (long)iVar42 * 2); + auVar88 = *(undefined1 (*) [16])((long)puVar74 + lVar73 + (long)iVar43 * 2); + auVar111 = NEON_umin(*(undefined1 (*) [16])((long)puVar64 + lVar73), + *(undefined1 (*) [16])((long)puVar64 + lVar56),2); + auVar174 = *(undefined1 (*) [16])((long)puVar74 + lVar62 + (long)iVar43 * 2); + auVar182 = NEON_umin(auVar166,auVar181,2); + auVar166 = *(undefined1 (*) [16])((long)puVar74 + lVar73 + (long)iVar42 * 2); + auVar85 = NEON_umax(auVar161,auVar183,2); + lVar55 = lVar55 + 0x10; + auVar139 = NEON_umax(*(undefined1 (*) [16])((long)puVar64 + lVar71), + *(undefined1 (*) [16])((long)puVar64 + lVar62),2); + auVar151 = NEON_umax(*(undefined1 (*) [16])((long)puVar64 + lVar56), + *(undefined1 (*) [16])((long)puVar64 + lVar73),2); + auVar87 = *(undefined1 (*) [16])((long)puVar74 + lVar71 + (long)iVar44 * 2); + auVar177 = NEON_umin(auVar88,auVar96,2); + auVar176 = NEON_umin(auVar140,auVar174,2); + auVar178 = NEON_umax(auVar175,auVar86,2); + auVar181 = NEON_umax(auVar111,*(undefined1 (*) [16])((long)puVar64 + lVar60),2); + auVar185 = NEON_umin(auVar86,auVar175,2); + auVar86 = NEON_umin(*(undefined1 (*) [16])((long)puVar64 + lVar60),auVar111,2); + auVar175 = NEON_umax(auVar103,auVar87,2); + auVar103 = NEON_umin(auVar87,auVar103,2); + auVar186 = NEON_umax(auVar177,auVar152,2); + auVar87 = NEON_umax(auVar151,auVar181,2); + auVar151 = NEON_umin(auVar181,auVar151,2); + auVar181 = NEON_umax(auVar167,auVar175,2); + auVar111 = NEON_umin(auVar166,auVar176,2); + auVar177 = NEON_umin(auVar152,auVar177,2); + auVar96 = NEON_umax(auVar96,auVar88,2); + auVar175 = NEON_umin(auVar175,auVar167,2); + auVar168 = NEON_umax(auVar185,auVar103,2); + auVar152 = NEON_umax(auVar105,auVar89,2); + auVar88 = NEON_umin(auVar187,auVar84,2); + auVar167 = NEON_umin(auVar129,auVar96,2); + auVar161 = NEON_umin(auVar183,auVar161,2); + auVar84 = NEON_umin(auVar89,auVar105,2); + auVar89 = NEON_umax(auVar148,auVar150,2); + auVar150 = NEON_umin(auVar150,auVar148,2); + auVar180 = NEON_umax(auVar173,auVar152,2); + auVar96 = NEON_umax(auVar96,auVar129,2); + auVar105 = NEON_umin(auVar152,auVar173,2); + auVar129 = NEON_umax(auVar177,auVar111,2); + auVar187 = NEON_umax(auVar139,auVar178,2); + auVar184 = NEON_umax(auVar88,auVar86,2); + auVar174 = NEON_umax(auVar174,auVar140,2); + auVar188 = NEON_umax(auVar182,auVar84,2); + auVar183 = NEON_umin(auVar180,auVar85,2); + auVar173 = NEON_umin(auVar87,auVar89,2); + auVar140 = NEON_umin(auVar178,auVar139,2); + auVar166 = NEON_umax(auVar176,auVar166,2); + auVar139 = NEON_umin(auVar181,auVar187,2); + auVar152 = NEON_umin(auVar105,auVar161,2); + auVar179 = NEON_umax(auVar161,auVar105,2); + auVar176 = NEON_umin(auVar166,auVar174,2); + auVar161 = NEON_umin(auVar173,auVar184,2); + auVar178 = NEON_umin(auVar167,auVar186,2); + auVar148 = NEON_umin(auVar183,auVar188,2); + auVar174 = NEON_umax(auVar174,auVar166,2); + auVar189 = NEON_umax(auVar188,auVar183,2); + auVar167 = NEON_umax(auVar186,auVar167,2); + auVar183 = NEON_umin(auVar139,auVar168,2); + auVar188 = NEON_umax(auVar168,auVar139,2); + auVar139 = NEON_umin(auVar175,auVar140,2); + auVar105 = NEON_umax(auVar140,auVar175,2); + auVar175 = NEON_umax(auVar184,auVar173,2); + auVar184 = NEON_umin(auVar151,auVar150,2); + auVar151 = NEON_umax(auVar150,auVar151,2); + auVar150 = NEON_umin(auVar174,auVar167,2); + auVar166 = NEON_umax(auVar178,auVar176,2); + auVar178 = NEON_umin(auVar176,auVar178,2); + auVar140 = NEON_umin(auVar84,auVar182,2); + auVar176 = NEON_umin(auVar166,auVar96,2); + auVar166 = NEON_umax(auVar96,auVar166,2); + auVar168 = NEON_umin(auVar150,auVar129,2); + auVar186 = NEON_umax(auVar129,auVar150,2); + auVar150 = NEON_umax(auVar167,auVar174,2); + auVar167 = NEON_umax(auVar179,auVar189,2); + auVar96 = NEON_umax(auVar187,auVar181,2); + auVar174 = NEON_umin(auVar111,auVar177,2); + auVar173 = NEON_umax(auVar168,auVar178,2); + auVar177 = NEON_umax(auVar85,auVar180,2); + auVar180 = NEON_umin(auVar103,auVar185,2); + auVar85 = NEON_umax(auVar105,auVar188,2); + auVar84 = NEON_umin(auVar188,auVar105,2); + auVar129 = NEON_umin(auVar152,auVar148,2); + auVar185 = NEON_umin(auVar150,auVar166,2); + auVar181 = NEON_umax(auVar148,auVar152,2); + auVar148 = NEON_umax(auVar166,auVar150,2); + auVar103 = NEON_umax(auVar180,auVar140,2); + auVar150 = NEON_umin(auVar178,auVar168,2); + auVar187 = NEON_umin(auVar86,auVar88,2); + auVar168 = NEON_umax(auVar176,auVar186,2); + auVar182 = NEON_umin(auVar139,auVar183,2); + auVar105 = NEON_umax(auVar183,auVar139,2); + auVar87 = NEON_umax(auVar89,auVar87,2); + auVar86 = NEON_umin(auVar184,auVar161,2); + auVar188 = NEON_umax(auVar182,auVar129,2); + auVar152 = NEON_umin(auVar177,auVar96,2); + auVar178 = NEON_umin(auVar87,auVar185,2); + auVar166 = NEON_umax(auVar161,auVar184,2); + auVar139 = NEON_umax(auVar151,auVar175,2); + auVar111 = NEON_umin(auVar175,auVar151,2); + auVar161 = NEON_umin(auVar140,auVar180,2); + auVar175 = NEON_umax(auVar173,auVar166,2); + auVar89 = NEON_umin(auVar189,auVar179,2); + auVar140 = NEON_umin(auVar167,auVar85,2); + auVar88 = NEON_umin(auVar186,auVar176,2); + auVar183 = NEON_umin(auVar166,auVar173,2); + auVar179 = NEON_umax(auVar174,auVar187,2); + auVar180 = NEON_umin(auVar140,auVar103,2); + auVar176 = NEON_umax(auVar103,auVar140,2); + auVar189 = NEON_umin(auVar181,auVar105,2); + auVar184 = NEON_umin(auVar139,auVar168,2); + auVar103 = NEON_umax(auVar105,auVar181,2); + auVar181 = NEON_umin(auVar152,auVar188,2); + auVar173 = NEON_umax(auVar188,auVar152,2); + auVar186 = NEON_umin(auVar89,auVar84,2); + auVar151 = NEON_umax(auVar84,auVar89,2); + auVar140 = NEON_umax(auVar150,auVar86,2); + auVar152 = NEON_umax(auVar96,auVar177,2); + auVar89 = NEON_umin(auVar187,auVar174,2); + auVar166 = NEON_umin(auVar178,auVar140,2); + auVar96 = NEON_umax(auVar89,auVar161,2); + auVar161 = NEON_umax(auVar168,auVar139,2); + auVar89 = NEON_umax(auVar88,auVar111,2); + auVar105 = NEON_umin(auVar184,auVar179,2); + auVar179 = NEON_umax(auVar179,auVar184,2); + auVar177 = NEON_umin(auVar175,auVar148,2); + auVar148 = NEON_umax(auVar148,auVar175,2); + auVar139 = NEON_umax(auVar140,auVar178,2); + auVar168 = NEON_umin(auVar111,auVar88,2); + auVar111 = NEON_umin(auVar129,auVar182,2); + auVar84 = NEON_umin(auVar186,auVar181,2); + auVar174 = NEON_umax(auVar103,auVar176,2); + auVar140 = NEON_umax(auVar85,auVar167,2); + auVar187 = NEON_umax(auVar177,auVar179,2); + auVar177 = NEON_umin(auVar179,auVar177,2); + auVar88 = NEON_umin(auVar189,auVar180,2); + auVar175 = NEON_umin(auVar86,auVar150,2); + auVar182 = NEON_umax(auVar180,auVar189,2); + auVar178 = NEON_umin(auVar173,auVar151,2); + auVar86 = NEON_umax(auVar151,auVar173,2); + auVar167 = NEON_umin(auVar183,auVar105,2); + auVar151 = NEON_umax(auVar105,auVar183,2); + auVar85 = NEON_umin(auVar161,auVar148,2); + auVar150 = NEON_umax(auVar148,auVar161,2); + auVar148 = NEON_umax(auVar185,auVar87,2); + auVar179 = NEON_umin(auVar139,auVar89,2); + auVar105 = NEON_umax(auVar181,auVar186,2); + auVar129 = NEON_umax(auVar89,auVar139,2); + auVar180 = NEON_umin(auVar111,auVar88,2); + auVar181 = NEON_umin(auVar176,auVar103,2); + auVar176 = NEON_umax(auVar88,auVar111,2); + auVar183 = NEON_umin(auVar84,auVar182,2); + auVar89 = NEON_umin(auVar168,auVar166,2); + auVar88 = NEON_umin(auVar148,auVar150,2); + auVar173 = NEON_umax(auVar166,auVar168,2); + auVar103 = NEON_umax(auVar140,auVar86,2); + auVar139 = NEON_umin(auVar86,auVar140,2); + auVar87 = NEON_umin(auVar175,auVar167,2); + auVar166 = NEON_umin(auVar129,auVar85,2); + auVar182 = NEON_umax(auVar182,auVar84,2); + auVar168 = NEON_umax(auVar174,auVar178,2); + auVar140 = NEON_umax(auVar151,auVar89,2); + auVar111 = NEON_umax(auVar167,auVar175,2); + auVar85 = NEON_umax(auVar85,auVar129,2); + auVar161 = NEON_umin(auVar89,auVar151,2); + auVar167 = NEON_umax(auVar187,auVar179,2); + auVar86 = NEON_umin(auVar105,auVar181,2); + auVar175 = NEON_umin(auVar178,auVar174,2); + auVar84 = NEON_umax(auVar181,auVar105,2); + auVar181 = NEON_umin(auVar173,auVar177,2); + auVar151 = NEON_umax(auVar150,auVar148,2); + auVar89 = NEON_umax(auVar140,auVar182,2); + auVar85 = NEON_umin(auVar103,auVar85,2); + auVar129 = NEON_umin(auVar139,auVar166,2); + auVar166 = NEON_umin(auVar152,auVar88,2); + auVar139 = NEON_umax(auVar177,auVar173,2); + auVar105 = NEON_umin(auVar179,auVar187,2); + auVar140 = NEON_umin(auVar168,auVar167,2); + auVar103 = NEON_umax(auVar111,auVar176,2); + auVar174 = NEON_umax(auVar87,auVar180,2); + auVar88 = NEON_umax(auVar161,auVar183,2); + auVar140 = NEON_umax(auVar96,auVar140,2); + auVar89 = NEON_umin(auVar89,auVar151,2); + auVar86 = NEON_umax(auVar181,auVar86,2); + auVar88 = NEON_umin(auVar166,auVar88,2); + auVar87 = NEON_umin(auVar85,auVar103,2); + auVar166 = NEON_umin(auVar84,auVar139,2); + auVar174 = NEON_umax(auVar174,auVar129,2); + auVar85 = NEON_umin(auVar175,auVar105,2); + auVar89 = NEON_umin(auVar140,auVar89,2); + auVar166 = NEON_umax(auVar87,auVar166,2); + auVar140 = NEON_umin(auVar174,auVar86,2); + auVar86 = NEON_umax(auVar88,auVar85,2); + auVar166 = NEON_umax(auVar89,auVar166,2); + auVar86 = NEON_umin(auVar86,auVar140,2); + auVar86 = NEON_umax(auVar166,auVar86,2); + ((undefined8 *)(local_90 + lVar60))[1] = auVar86._8_8_; + *(undefined8 *)(local_90 + lVar60) = auVar86._0_8_; + } while ((int)uVar63 <= iVar69); + } while ((int)uVar41 <= (int)uVar63); + } + uVar82 = -(uVar80 >> 0x1f) & 0xfffffffe00000000 | uVar80 << 1; + uVar79 = (uint)uVar80; + uVar63 = uVar79 - uVar1; + if ((int)uVar79 < (int)uVar1) { + uVar63 = uVar79; + } + uVar76 = -(ulong)(uVar63 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar63 << 1; + uVar70 = iVar58 + uVar79; + if ((int)uVar79 < (int)uVar83) { + uVar70 = uVar63; + } + uVar53 = -(ulong)(uVar70 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar70 << 1; + uVar18 = *(ushort *)((long)puVar74 + uVar76 + (long)iVar52 * 2); + uVar19 = *(ushort *)((long)puVar74 + uVar82 + (long)iVar52 * 2); + uVar63 = uVar79 + uVar1; + if ((int)(uVar41 - uVar1) <= (int)uVar79) { + uVar63 = uVar79; + } + uVar20 = *(ushort *)((long)puVar74 + uVar53 + (long)iVar52 * 2); + uVar70 = uVar79 + uVar83; + if ((int)(uVar41 + iVar58) <= (int)uVar79) { + uVar70 = uVar63; + } + uVar72 = -(ulong)(uVar70 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar70 << 1; + uVar40 = uVar18; + if (uVar19 < uVar18) { + uVar40 = uVar19; + } + if (uVar18 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar40 < uVar20) { + uVar19 = uVar40; + } + uVar75 = -(ulong)(uVar63 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar63 << 1; + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + uVar21 = *(ushort *)((long)puVar74 + uVar72 + (long)iVar52 * 2); + uVar22 = *(ushort *)((long)puVar74 + uVar53 + (long)iVar44 * 2); + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar23 = *(ushort *)((long)puVar74 + uVar75 + (long)iVar52 * 2); + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + uVar18 = uVar21; + if (uVar22 < uVar21) { + uVar18 = uVar22; + } + if (uVar21 < uVar22) { + uVar21 = uVar22; + } + uVar22 = uVar18; + if (uVar23 < uVar18) { + uVar22 = uVar23; + } + if (uVar18 < uVar23) { + uVar18 = uVar23; + } + uVar24 = *(ushort *)((long)puVar74 + uVar75 + (long)iVar44 * 2); + uVar25 = *(ushort *)((long)puVar74 + uVar82 + (long)iVar44 * 2); + uVar23 = uVar18; + if (uVar21 < uVar18) { + uVar23 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar22; + if (uVar19 < uVar22) { + uVar21 = uVar19; + } + if (uVar22 < uVar19) { + uVar22 = uVar19; + } + uVar19 = uVar18; + if (uVar20 < uVar18) { + uVar19 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar22 < uVar19) { + uVar20 = uVar22; + } + if (uVar19 < uVar22) { + uVar19 = uVar22; + } + uVar22 = uVar23; + if (uVar40 < uVar23) { + uVar22 = uVar40; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + uVar40 = uVar20; + if (uVar22 < uVar20) { + uVar40 = uVar22; + } + if (uVar20 < uVar22) { + uVar20 = uVar22; + } + uVar22 = uVar19; + if (uVar23 < uVar19) { + uVar22 = uVar23; + } + if (uVar19 < uVar23) { + uVar19 = uVar23; + } + uVar26 = *(ushort *)((long)puVar74 + uVar76 + (long)iVar44 * 2); + uVar27 = *(ushort *)((long)puVar64 + uVar53); + uVar23 = uVar24; + if (uVar25 < uVar24) { + uVar23 = uVar25; + } + if (uVar24 < uVar25) { + uVar24 = uVar25; + } + uVar25 = uVar23; + if (uVar26 < uVar23) { + uVar25 = uVar26; + } + if (uVar23 < uVar26) { + uVar23 = uVar26; + } + uVar28 = *(ushort *)((long)puVar64 + uVar76); + uVar29 = *(ushort *)((long)puVar74 + uVar72 + (long)iVar44 * 2); + uVar26 = uVar23; + if (uVar24 < uVar23) { + uVar26 = uVar24; + } + if (uVar23 < uVar24) { + uVar23 = uVar24; + } + uVar24 = uVar27; + if (uVar28 < uVar27) { + uVar24 = uVar28; + } + if (uVar27 < uVar28) { + uVar27 = uVar28; + } + uVar28 = uVar29; + if (uVar24 < uVar29) { + uVar28 = uVar24; + } + if (uVar29 < uVar24) { + uVar29 = uVar24; + } + uVar137 = *(ushort *)((long)puVar64 + uVar75); + uVar30 = *(ushort *)((long)puVar64 + uVar72); + uVar24 = uVar29; + if (uVar27 < uVar29) { + uVar24 = uVar27; + } + if (uVar29 < uVar27) { + uVar29 = uVar27; + } + uVar27 = uVar28; + if (uVar25 < uVar28) { + uVar27 = uVar25; + } + uVar80 = (ulong)(uVar79 + 1); + if (uVar28 < uVar25) { + uVar28 = uVar25; + } + uVar25 = uVar29; + if (uVar23 < uVar29) { + uVar25 = uVar23; + } + if (uVar29 < uVar23) { + uVar29 = uVar23; + } + uVar23 = uVar25; + if (uVar28 < uVar25) { + uVar23 = uVar28; + } + if (uVar25 < uVar28) { + uVar25 = uVar28; + } + uVar28 = uVar24; + if (uVar26 < uVar24) { + uVar28 = uVar26; + } + if (uVar24 < uVar26) { + uVar24 = uVar26; + } + uVar26 = uVar23; + if (uVar28 < uVar23) { + uVar26 = uVar28; + } + if (uVar23 < uVar28) { + uVar23 = uVar28; + } + uVar28 = uVar25; + if (uVar24 < uVar25) { + uVar28 = uVar24; + } + if (uVar25 < uVar24) { + uVar25 = uVar24; + } + uVar24 = uVar21; + if (uVar21 < uVar27) { + uVar24 = uVar27; + } + uVar12 = uVar19; + if (uVar25 < uVar19) { + uVar12 = uVar25; + } + if (uVar19 < uVar25) { + uVar19 = uVar25; + } + uVar25 = uVar12; + if (uVar24 < uVar12) { + uVar25 = uVar24; + } + if (uVar12 < uVar24) { + uVar12 = uVar24; + } + uVar24 = uVar20; + if (uVar23 < uVar20) { + uVar24 = uVar23; + } + if (uVar20 < uVar23) { + uVar20 = uVar23; + } + uVar23 = uVar25; + if (uVar24 < uVar25) { + uVar23 = uVar24; + } + if (uVar25 < uVar24) { + uVar25 = uVar24; + } + uVar31 = *(ushort *)((long)puVar64 + uVar82); + uVar24 = uVar12; + if (uVar20 < uVar12) { + uVar24 = uVar20; + } + uVar32 = *(ushort *)((long)puVar74 + uVar76 + (long)iVar42 * 2); + if (uVar12 < uVar20) { + uVar12 = uVar20; + } + uVar20 = uVar40; + if (uVar26 < uVar40) { + uVar20 = uVar26; + } + if (uVar40 < uVar26) { + uVar40 = uVar26; + } + uVar26 = uVar18; + if (uVar29 < uVar18) { + uVar26 = uVar29; + } + uVar17 = uVar40; + if (uVar26 < uVar40) { + uVar17 = uVar26; + } + if (uVar40 < uVar26) { + uVar40 = uVar26; + } + uVar138 = *(ushort *)((long)puVar74 + uVar53 + (long)iVar43 * 2); + uVar26 = uVar22; + if (uVar28 < uVar22) { + uVar26 = uVar28; + } + if (uVar22 < uVar28) { + uVar22 = uVar28; + } + uVar28 = uVar17; + if (uVar26 < uVar17) { + uVar28 = uVar26; + } + if (uVar17 < uVar26) { + uVar17 = uVar26; + } + uVar33 = *(ushort *)((long)puVar74 + uVar82 + (long)iVar42 * 2); + uVar26 = uVar40; + if (uVar22 < uVar40) { + uVar26 = uVar22; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar22 = uVar30; + if (uVar137 < uVar30) { + uVar22 = uVar137; + } + if (uVar30 < uVar137) { + uVar30 = uVar137; + } + uVar137 = uVar22; + if (uVar31 < uVar22) { + uVar137 = uVar31; + } + if (uVar22 < uVar31) { + uVar22 = uVar31; + } + uVar31 = *(ushort *)((long)puVar74 + uVar53 + (long)iVar42 * 2); + uVar14 = uVar22; + if (uVar30 < uVar22) { + uVar14 = uVar30; + } + if (uVar22 < uVar30) { + uVar22 = uVar30; + } + uVar30 = uVar32; + if (uVar33 < uVar32) { + uVar30 = uVar33; + } + if (uVar32 < uVar33) { + uVar32 = uVar33; + } + uVar33 = uVar31; + if (uVar30 < uVar31) { + uVar33 = uVar30; + } + if (uVar31 < uVar30) { + uVar31 = uVar30; + } + uVar34 = *(ushort *)((long)puVar74 + uVar72 + (long)iVar42 * 2); + uVar30 = uVar31; + if (uVar32 < uVar31) { + uVar30 = uVar32; + } + if (uVar31 < uVar32) { + uVar31 = uVar32; + } + uVar32 = uVar137; + if (uVar33 < uVar137) { + uVar32 = uVar33; + } + if (uVar137 < uVar33) { + uVar137 = uVar33; + } + uVar33 = uVar22; + if (uVar31 < uVar22) { + uVar33 = uVar31; + } + if (uVar22 < uVar31) { + uVar22 = uVar31; + } + uVar31 = uVar33; + if (uVar137 < uVar33) { + uVar31 = uVar137; + } + if (uVar33 < uVar137) { + uVar33 = uVar137; + } + uVar35 = *(ushort *)((long)puVar74 + uVar75 + (long)iVar42 * 2); + uVar36 = *(ushort *)((long)puVar74 + uVar75 + (long)iVar43 * 2); + uVar137 = uVar14; + if (uVar30 < uVar14) { + uVar137 = uVar30; + } + if (uVar14 < uVar30) { + uVar14 = uVar30; + } + uVar30 = uVar31; + if (uVar137 < uVar31) { + uVar30 = uVar137; + } + if (uVar31 < uVar137) { + uVar31 = uVar137; + } + uVar37 = *(ushort *)((long)puVar74 + uVar76 + (long)iVar43 * 2); + uVar137 = uVar33; + if (uVar14 < uVar33) { + uVar137 = uVar14; + } + uVar38 = *(ushort *)((long)puVar74 + uVar82 + (long)iVar43 * 2); + if (uVar33 < uVar14) { + uVar33 = uVar14; + } + uVar14 = uVar34; + if (uVar138 < uVar34) { + uVar14 = uVar138; + } + if (uVar34 < uVar138) { + uVar34 = uVar138; + } + uVar138 = uVar14; + if (uVar35 < uVar14) { + uVar138 = uVar35; + } + if (uVar14 < uVar35) { + uVar14 = uVar35; + } + uVar39 = *(ushort *)((long)puVar74 + uVar72 + (long)iVar43 * 2); + uVar35 = uVar14; + if (uVar34 < uVar14) { + uVar35 = uVar34; + } + if (uVar14 < uVar34) { + uVar14 = uVar34; + } + uVar34 = uVar37; + if (uVar38 < uVar37) { + uVar34 = uVar38; + } + if (uVar37 < uVar38) { + uVar37 = uVar38; + } + uVar38 = uVar39; + if (uVar36 < uVar39) { + uVar38 = uVar36; + } + if (uVar39 < uVar36) { + uVar39 = uVar36; + } + uVar36 = uVar38; + if (uVar34 < uVar38) { + uVar36 = uVar34; + } + if (uVar38 < uVar34) { + uVar38 = uVar34; + } + uVar34 = uVar39; + if (uVar37 < uVar39) { + uVar34 = uVar37; + } + if (uVar39 < uVar37) { + uVar39 = uVar37; + } + uVar37 = uVar34; + if (uVar38 < uVar34) { + uVar37 = uVar38; + } + if (uVar34 < uVar38) { + uVar34 = uVar38; + } + uVar38 = uVar36; + if (uVar138 < uVar36) { + uVar38 = uVar138; + } + if (uVar36 < uVar138) { + uVar36 = uVar138; + } + uVar138 = uVar34; + if (uVar14 < uVar34) { + uVar138 = uVar14; + } + if (uVar34 < uVar14) { + uVar34 = uVar14; + } + uVar14 = uVar138; + if (uVar36 < uVar138) { + uVar14 = uVar36; + } + if (uVar138 < uVar36) { + uVar138 = uVar36; + } + uVar36 = uVar37; + if (uVar35 < uVar37) { + uVar36 = uVar35; + } + if (uVar37 < uVar35) { + uVar37 = uVar35; + } + uVar35 = uVar37; + if (uVar39 < uVar37) { + uVar35 = uVar39; + } + if (uVar37 < uVar39) { + uVar37 = uVar39; + } + uVar39 = uVar14; + if (uVar36 < uVar14) { + uVar39 = uVar36; + } + if (uVar14 < uVar36) { + uVar14 = uVar36; + } + uVar36 = uVar35; + if (uVar138 < uVar35) { + uVar36 = uVar138; + } + if (uVar35 < uVar138) { + uVar35 = uVar138; + } + uVar138 = uVar37; + if (uVar34 < uVar37) { + uVar138 = uVar34; + } + if (uVar37 < uVar34) { + uVar37 = uVar34; + } + uVar34 = uVar38; + if (uVar38 < uVar32) { + uVar34 = uVar32; + } + uVar13 = uVar35; + if (uVar33 < uVar35) { + uVar13 = uVar33; + } + if (uVar35 < uVar33) { + uVar35 = uVar33; + } + uVar33 = uVar13; + if (uVar34 < uVar13) { + uVar33 = uVar34; + } + if (uVar13 < uVar34) { + uVar13 = uVar34; + } + uVar34 = uVar14; + if (uVar31 < uVar14) { + uVar34 = uVar31; + } + if (uVar14 < uVar31) { + uVar14 = uVar31; + } + uVar31 = uVar14; + if (uVar37 < uVar14) { + uVar31 = uVar37; + } + if (uVar14 < uVar37) { + uVar14 = uVar37; + } + uVar37 = uVar33; + if (uVar34 < uVar33) { + uVar37 = uVar34; + } + if (uVar33 < uVar34) { + uVar33 = uVar34; + } + uVar34 = uVar31; + if (uVar13 < uVar31) { + uVar34 = uVar13; + } + if (uVar31 < uVar13) { + uVar31 = uVar13; + } + uVar13 = uVar14; + if (uVar35 < uVar14) { + uVar13 = uVar35; + } + if (uVar14 < uVar35) { + uVar14 = uVar35; + } + uVar35 = uVar39; + if (uVar30 < uVar39) { + uVar35 = uVar30; + } + if (uVar39 < uVar30) { + uVar39 = uVar30; + } + uVar30 = uVar138; + if (uVar22 < uVar138) { + uVar30 = uVar22; + } + if (uVar138 < uVar22) { + uVar138 = uVar22; + } + uVar22 = uVar30; + if (uVar39 < uVar30) { + uVar22 = uVar39; + } + if (uVar30 < uVar39) { + uVar30 = uVar39; + } + uVar39 = uVar36; + if (uVar137 < uVar36) { + uVar39 = uVar137; + } + if (uVar36 < uVar137) { + uVar36 = uVar137; + } + uVar137 = uVar22; + if (uVar39 < uVar22) { + uVar137 = uVar39; + } + if (uVar22 < uVar39) { + uVar22 = uVar39; + } + uVar39 = uVar30; + if (uVar36 < uVar30) { + uVar39 = uVar36; + } + if (uVar30 < uVar36) { + uVar30 = uVar36; + } + uVar36 = uVar30; + if (uVar30 < uVar13) { + uVar36 = uVar13; + } + uVar16 = uVar40; + if (uVar40 < uVar19) { + uVar16 = uVar19; + } + if (uVar16 < uVar36) { + uVar36 = uVar16; + } + uVar16 = uVar35; + if (uVar35 < uVar20) { + uVar16 = uVar20; + } + if (uVar16 < uVar23) { + uVar16 = uVar23; + } + if (uVar16 < uVar37) { + uVar16 = uVar37; + } + if (uVar16 < uVar36) { + uVar36 = uVar16; + } + uVar16 = uVar22; + if (uVar22 < uVar34) { + uVar16 = uVar34; + } + uVar15 = uVar17; + if (uVar17 < uVar24) { + uVar15 = uVar24; + } + if (uVar15 < uVar16) { + uVar16 = uVar15; + } + if (uVar36 < uVar16) { + uVar36 = uVar16; + } + uVar16 = uVar28; + if (uVar28 < uVar25) { + uVar16 = uVar25; + } + if (uVar16 < uVar33) { + uVar16 = uVar33; + } + if (uVar16 < uVar137) { + uVar16 = uVar137; + } + uVar15 = uVar14; + if (uVar14 < uVar138) { + uVar15 = uVar138; + } + if (uVar15 < uVar16) { + uVar16 = uVar15; + } + if (uVar32 < uVar38) { + uVar38 = uVar32; + } + if (uVar27 < uVar21) { + uVar21 = uVar27; + } + if (uVar38 < uVar21) { + uVar38 = uVar21; + } + uVar21 = uVar39; + if (uVar39 < uVar31) { + uVar21 = uVar31; + } + uVar27 = uVar26; + if (uVar26 < uVar12) { + uVar27 = uVar12; + } + if (uVar27 < uVar21) { + uVar21 = uVar27; + } + if (uVar38 < uVar21) { + uVar38 = uVar21; + } + if (uVar38 < uVar16) { + uVar16 = uVar38; + } + if (uVar36 < uVar16) { + uVar36 = uVar16; + } + if (uVar35 < uVar37) { + uVar37 = uVar35; + } + if (uVar20 < uVar23) { + uVar23 = uVar20; + } + if (uVar37 < uVar23) { + uVar37 = uVar23; + } + if (uVar13 < uVar40) { + uVar40 = uVar13; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar30 < uVar40) { + uVar40 = uVar30; + } + if (uVar37 < uVar40) { + uVar37 = uVar40; + } + if (uVar34 < uVar22) { + uVar22 = uVar34; + } + if (uVar24 < uVar17) { + uVar17 = uVar24; + } + if (uVar22 < uVar17) { + uVar22 = uVar17; + } + if (uVar22 < uVar37) { + uVar37 = uVar22; + } + if (uVar18 < uVar29) { + uVar18 = uVar29; + } + if (uVar18 < uVar138) { + uVar138 = uVar18; + } + if (uVar14 < uVar138) { + uVar138 = uVar14; + } + if (uVar33 < uVar137) { + uVar137 = uVar33; + } + if (uVar25 < uVar28) { + uVar28 = uVar25; + } + if (uVar137 < uVar28) { + uVar137 = uVar28; + } + if (uVar137 < uVar138) { + uVar138 = uVar137; + } + if (uVar12 < uVar26) { + uVar26 = uVar12; + } + if (uVar31 < uVar26) { + uVar26 = uVar31; + } + if (uVar39 < uVar26) { + uVar26 = uVar39; + } + if (uVar138 < uVar26) { + uVar138 = uVar26; + } + if (uVar138 < uVar37) { + uVar37 = uVar138; + } + if (uVar36 < uVar37) { + uVar36 = uVar37; + } + *(ushort *)(local_90 + uVar82) = uVar36; + } while( true ); + } + iVar58 = iVar69 + 1; + local_34 = iVar69; + } + uVar67 = 0; + uVar83 = uVar1; + local_30 = uVar1; +LAB_001f64a4: + if (local_34 < 1) { + return; + } + iVar61 = iVar58 + -2; + lVar73 = (long)(int)local_30; + lVar71 = (long)(int)-local_30; + lVar62 = lVar73 * 2; + lVar60 = lVar71 * 2; + uVar81 = -(ulong)((local_30 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(local_30 << 1) << 1; + uVar80 = -(ulong)((-local_30 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(local_30 * -2) << 1; + puVar64 = (ushort *)(local_90 + 0x10); + lVar55 = uVar80 + 0x10; + lVar59 = uVar81 + 0x10; + iVar69 = 0; + do { + puVar65 = puVar64 + -8; + if (iVar69 < 1) { + if (iVar69 < iVar58 + -3) { + puVar54 = (ushort *)((long)puVar74 + uVar81); + if (iVar69 < iVar61) { + if ((uVar1 < 9 || + (puVar65 < (ushort *)((long)puVar74 + lVar59) && puVar54 < puVar64 || + puVar65 < puVar74 + lVar73 + 8 && puVar74 + lVar73 < puVar64)) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar40 = (puVar74 + lVar73)[lVar56]; + uVar19 = puVar54[lVar56]; + uVar20 = puVar74[lVar56]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar65[lVar56] = uVar20; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + uVar63 = uVar1; + if (uVar77 < uVar1) { + uVar63 = uVar77; + } + puVar54 = puVar74; + if (uVar63 == 0) { +LAB_001faeb4: + uVar82 = (ulong)uVar63; + } + else { + uVar40 = puVar74[lVar73]; + puVar54 = puVar74 + 1; + uVar19 = *(ushort *)((long)puVar74 + uVar81); + uVar20 = *puVar74; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-8] = uVar20; + if (uVar63 == 1) goto LAB_001faeb4; + uVar40 = puVar54[lVar73]; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 2; + uVar20 = puVar74[1]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-7] = uVar20; + if (uVar63 == 2) goto LAB_001faeb4; + uVar40 = puVar54[lVar73]; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 3; + uVar20 = puVar74[2]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-6] = uVar20; + if (uVar63 == 3) goto LAB_001faeb4; + uVar40 = puVar54[lVar73]; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 4; + uVar20 = puVar74[3]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-5] = uVar20; + if (uVar63 == 4) { + uVar82 = 4; + } + else { + uVar40 = puVar54[lVar73]; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 5; + uVar20 = puVar74[4]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-4] = uVar20; + if (uVar63 == 5) goto LAB_001faeb4; + uVar40 = puVar54[lVar73]; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 6; + uVar20 = puVar74[5]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-3] = uVar20; + if (uVar63 == 7) { + uVar40 = puVar54[lVar73]; + uVar82 = 7; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 7; + uVar20 = puVar74[6]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-2] = uVar20; + } + else { + uVar82 = 6; + } + } + } + uVar77 = ((uVar1 - uVar63) - 8 >> 3) + 1; + uVar79 = uVar77 * 8; + if (6 < uVar41 - uVar63) { + lVar66 = (ulong)uVar63 * 2; + lVar56 = 0; + uVar70 = 0; + do { + lVar147 = lVar56 + lVar66; + uVar70 = uVar70 + 1; + puVar6 = (ushort *)((long)puVar74 + lVar56 + lVar62 + lVar66); + puVar50 = (ushort *)((long)puVar74 + lVar147); + puVar8 = (ushort *)((long)puVar74 + lVar56 + uVar81 + lVar66); + lVar56 = lVar56 + 0x10; + auVar148._2_2_ = 0; + auVar148._0_2_ = *puVar6; + auVar148._4_2_ = puVar6[1]; + auVar148._6_2_ = 0; + auVar148._8_2_ = puVar6[2]; + auVar148._10_2_ = 0; + auVar148._12_2_ = puVar6[3]; + auVar148._14_2_ = 0; + auVar151._2_2_ = 0; + auVar151._0_2_ = puVar6[4]; + auVar151._4_2_ = puVar6[5]; + auVar151._6_2_ = 0; + auVar151._8_2_ = puVar6[6]; + auVar151._10_2_ = 0; + auVar151._12_2_ = puVar6[7]; + auVar151._14_2_ = 0; + puVar68 = (undefined8 *)((long)puVar65 + lVar147); + auVar129._2_2_ = 0; + auVar129._0_2_ = *puVar50; + auVar129._4_2_ = puVar50[1]; + auVar129._6_2_ = 0; + auVar129._8_2_ = puVar50[2]; + auVar129._10_2_ = 0; + auVar129._12_2_ = puVar50[3]; + auVar129._14_2_ = 0; + auVar111._2_2_ = 0; + auVar111._0_2_ = puVar50[4]; + auVar111._4_2_ = puVar50[5]; + auVar111._6_2_ = 0; + auVar111._8_2_ = puVar50[6]; + auVar111._10_2_ = 0; + auVar111._12_2_ = puVar50[7]; + auVar111._14_2_ = 0; + auVar139._2_2_ = 0; + auVar139._0_2_ = *puVar8; + auVar139._4_2_ = puVar8[1]; + auVar139._6_2_ = 0; + auVar139._8_2_ = puVar8[2]; + auVar139._10_2_ = 0; + auVar139._12_2_ = puVar8[3]; + auVar139._14_2_ = 0; + auVar181._2_2_ = 0; + auVar181._0_2_ = puVar8[4]; + auVar181._4_2_ = puVar8[5]; + auVar181._6_2_ = 0; + auVar181._8_2_ = puVar8[6]; + auVar181._10_2_ = 0; + auVar181._12_2_ = puVar8[7]; + auVar181._14_2_ = 0; + auVar140 = NEON_smin(auVar139,auVar148,4); + auVar89 = NEON_smin(auVar181,auVar151,4); + auVar166 = NEON_smax(auVar139,auVar148,4); + auVar86 = NEON_smax(auVar181,auVar151,4); + auVar84 = NEON_smax(auVar129,auVar140,4); + auVar96 = NEON_smax(auVar111,auVar89,4); + auVar85 = NEON_smin(auVar129,auVar140,4); + auVar87 = NEON_smin(auVar111,auVar89,4); + auVar174 = NEON_smin(auVar129,auVar166,4); + auVar88 = NEON_smin(auVar111,auVar86,4); + auVar140 = NEON_smax(auVar84,auVar166,4); + auVar166 = NEON_smax(auVar96,auVar86,4); + auVar89 = NEON_smax(auVar129,auVar85,4); + auVar86 = NEON_smax(auVar111,auVar87,4); + auVar174 = NEON_smin(auVar174,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar140,4); + auVar86 = NEON_smin(auVar86,auVar166,4); + auVar140 = NEON_smin(auVar88,auVar96,4); + auVar166 = NEON_smax(auVar174,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar175._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar175._8_2_ = auVar86._0_2_; + auVar175._10_2_ = auVar86._4_2_; + auVar175._12_2_ = auVar86._8_2_; + auVar175._14_2_ = auVar86._12_2_; + puVar68[1] = auVar175._8_8_; + *puVar68 = auVar175._0_8_; + } while (uVar70 < uVar77); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar63 == uVar79) goto LAB_001f6ed8; + } + uVar40 = puVar54[lVar73]; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + iVar52 = (int)uVar82; + uVar20 = *puVar54; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76) = uVar20; + if (iVar52 + 1 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 1]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 2); + uVar20 = puVar54[1]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar20; + if (iVar52 + 2 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 2]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 4); + uVar20 = puVar54[2]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar20; + if (iVar52 + 3 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 3]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 6); + uVar20 = puVar54[3]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar20; + if (iVar52 + 4 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 4]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 8); + uVar20 = puVar54[4]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar20; + if (iVar52 + 5 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 5]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 10); + uVar20 = puVar54[5]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar20; + if (iVar52 + 6 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 6]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 0xc); + uVar20 = puVar54[6]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar20; + if (uVar20 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar21; + if (uVar21 < uVar19) { + uVar40 = uVar19; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar20; + } + } + } + } + } + } + } + else { + if ((puVar65 < (ushort *)((long)puVar74 + lVar59) && puVar54 < puVar64 || + puVar65 < puVar74 + 8 && puVar74 < puVar64) || (uVar1 < 9)) { + lVar56 = 0; + do { + uVar20 = puVar74[lVar56]; + uVar19 = puVar54[lVar56]; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + if (uVar40 < uVar20) { + uVar40 = uVar20; + } + uVar21 = uVar18; + if (uVar18 < uVar19) { + uVar21 = uVar19; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + puVar65[lVar56] = uVar19; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001fbe84: + uVar82 = (ulong)uVar77; + } + else { + uVar19 = *puVar74; + uVar20 = *(ushort *)((long)puVar74 + uVar81); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-8] = uVar19; + puVar54 = puVar74 + 1; + if (uVar77 == 1) goto LAB_001fbe84; + uVar19 = puVar74[1]; + uVar20 = *(ushort *)((long)(puVar74 + 1) + uVar81); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-7] = uVar19; + puVar54 = puVar74 + 2; + if (uVar77 == 2) goto LAB_001fbe84; + uVar19 = puVar74[2]; + uVar20 = *(ushort *)((long)(puVar74 + 2) + uVar81); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-6] = uVar19; + puVar54 = puVar74 + 3; + if (uVar77 == 3) goto LAB_001fbe84; + uVar19 = puVar74[3]; + uVar20 = *(ushort *)((long)(puVar74 + 3) + uVar81); + puVar54 = puVar74 + 4; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-5] = uVar19; + if (uVar77 == 4) { + uVar82 = 4; + } + else { + uVar19 = puVar74[4]; + uVar20 = *(ushort *)((long)puVar54 + uVar81); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-4] = uVar19; + puVar54 = puVar74 + 5; + if (uVar77 == 5) goto LAB_001fbe84; + uVar19 = puVar74[5]; + uVar20 = *(ushort *)((long)(puVar74 + 5) + uVar81); + puVar54 = puVar74 + 6; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-3] = uVar19; + if (uVar77 == 7) { + uVar20 = puVar74[6]; + uVar82 = 7; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + puVar54 = puVar74 + 7; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + if (uVar40 < uVar20) { + uVar40 = uVar20; + } + uVar21 = uVar18; + if (uVar18 < uVar19) { + uVar21 = uVar19; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + puVar64[-2] = uVar19; + } + else { + uVar82 = 6; + } + } + } + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar56 = 0; + uVar70 = 0; + do { + uVar70 = uVar70 + 1; + lVar66 = lVar56 + (ulong)uVar77 * 2; + puVar6 = (ushort *)((long)puVar74 + lVar66); + puVar50 = (ushort *)((long)puVar74 + lVar56 + uVar81 + (ulong)uVar77 * 2); + puVar68 = (undefined8 *)((long)puVar65 + lVar66); + lVar56 = lVar56 + 0x10; + auVar96._2_2_ = 0; + auVar96._0_2_ = *puVar6; + auVar96._4_2_ = puVar6[1]; + auVar96._6_2_ = 0; + auVar96._8_2_ = puVar6[2]; + auVar96._10_2_ = 0; + auVar96._12_2_ = puVar6[3]; + auVar96._14_2_ = 0; + auVar105._2_2_ = 0; + auVar105._0_2_ = *puVar50; + auVar105._4_2_ = puVar50[1]; + auVar105._6_2_ = 0; + auVar105._8_2_ = puVar50[2]; + auVar105._10_2_ = 0; + auVar105._12_2_ = puVar50[3]; + auVar105._14_2_ = 0; + auVar89._2_2_ = 0; + auVar89._0_2_ = puVar6[4]; + auVar89._4_2_ = puVar6[5]; + auVar89._6_2_ = 0; + auVar89._8_2_ = puVar6[6]; + auVar89._10_2_ = 0; + auVar89._12_2_ = puVar6[7]; + auVar89._14_2_ = 0; + auVar84._2_2_ = 0; + auVar84._0_2_ = puVar50[4]; + auVar84._4_2_ = puVar50[5]; + auVar84._6_2_ = 0; + auVar84._8_2_ = puVar50[6]; + auVar84._10_2_ = 0; + auVar84._12_2_ = puVar50[7]; + auVar84._14_2_ = 0; + auVar88 = NEON_smin(auVar96,auVar105,4); + auVar166 = NEON_smax(auVar96,auVar105,4); + auVar140 = NEON_smin(auVar89,auVar84,4); + auVar86 = NEON_smax(auVar89,auVar84,4); + auVar105 = NEON_smax(auVar96,auVar88,4); + auVar84 = NEON_smin(auVar96,auVar88,4); + auVar103 = NEON_smax(auVar89,auVar140,4); + auVar85 = NEON_smin(auVar89,auVar140,4); + auVar87 = NEON_smin(auVar96,auVar166,4); + auVar174 = NEON_smin(auVar89,auVar86,4); + auVar88 = NEON_smax(auVar105,auVar166,4); + auVar140 = NEON_smax(auVar103,auVar86,4); + auVar166 = NEON_smax(auVar96,auVar84,4); + auVar86 = NEON_smax(auVar89,auVar85,4); + auVar87 = NEON_smin(auVar87,auVar105,4); + auVar166 = NEON_smin(auVar166,auVar88,4); + auVar86 = NEON_smin(auVar86,auVar140,4); + auVar89 = NEON_smin(auVar174,auVar103,4); + auVar166 = NEON_smax(auVar87,auVar166,4); + auVar86 = NEON_smax(auVar89,auVar86,4); + auVar103._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar103._8_2_ = auVar86._0_2_; + auVar103._10_2_ = auVar86._4_2_; + auVar103._12_2_ = auVar86._8_2_; + auVar103._14_2_ = auVar86._12_2_; + puVar68[1] = auVar103._8_8_; + *puVar68 = auVar103._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar79 == uVar1 - uVar77) goto LAB_001f6ed8; + } + uVar19 = *puVar54; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar20 = *(ushort *)((long)puVar54 + uVar81); + iVar52 = (int)uVar82; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76) = uVar19; + if (iVar52 + 1 < (int)uVar1) { + uVar19 = puVar54[1]; + uVar20 = *(ushort *)((long)puVar54 + uVar81 + 2); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar19; + if (iVar52 + 2 < (int)uVar1) { + uVar19 = puVar54[2]; + uVar20 = *(ushort *)((long)puVar54 + uVar81 + 4); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar19; + if (iVar52 + 3 < (int)uVar1) { + uVar19 = puVar54[3]; + uVar20 = *(ushort *)((long)puVar54 + uVar81 + 6); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar19; + if (iVar52 + 4 < (int)uVar1) { + uVar19 = puVar54[4]; + uVar20 = *(ushort *)((long)puVar54 + uVar81 + 8); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar19; + if (iVar52 + 5 < (int)uVar1) { + uVar19 = puVar54[5]; + uVar20 = *(ushort *)((long)puVar54 + uVar81 + 10); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar19 < uVar20) { + uVar40 = uVar20; + } + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar21; + if (uVar21 < uVar40) { + uVar20 = uVar40; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar19; + if (iVar52 + 6 < (int)uVar1) { + uVar20 = puVar54[6]; + uVar19 = *(ushort *)((long)puVar54 + uVar81 + 0xc); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + if (uVar40 < uVar20) { + uVar40 = uVar20; + } + uVar21 = uVar18; + if (uVar18 < uVar19) { + uVar21 = uVar19; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar19; + } + } + } + } + } + } + } + } + else { + if (iVar61 <= iVar69) { + if ((puVar65 < puVar74 + 8 && puVar74 < puVar64) || (uVar1 < 9)) { + lVar56 = 0; + do { + puVar65[lVar56] = puVar74[lVar56]; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001fbf0c: + uVar82 = (ulong)uVar77; + } + else { + puVar54 = puVar74 + 1; + puVar64[-8] = *puVar74; + if (uVar77 == 1) goto LAB_001fbf0c; + puVar64[-7] = puVar74[1]; + puVar54 = puVar74 + 2; + if (uVar77 == 2) goto LAB_001fbf0c; + puVar64[-6] = puVar74[2]; + puVar54 = puVar74 + 3; + if (uVar77 == 3) goto LAB_001fbf0c; + puVar64[-5] = puVar74[3]; + puVar54 = puVar74 + 4; + if (uVar77 == 4) { + uVar82 = 4; + } + else { + puVar64[-4] = puVar74[4]; + puVar54 = puVar74 + 5; + if (uVar77 == 5) goto LAB_001fbf0c; + puVar64[-3] = puVar74[5]; + puVar54 = puVar74 + 6; + if (uVar77 == 7) { + puVar54 = puVar74 + 7; + puVar64[-2] = puVar74[6]; + uVar82 = 7; + } + else { + uVar82 = 6; + } + } + } + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar56 = 0; + uVar70 = 0; + do { + lVar66 = lVar56 + (ulong)uVar77 * 2; + uVar70 = uVar70 + 1; + puVar68 = (undefined8 *)((long)puVar65 + lVar66); + lVar56 = lVar56 + 0x10; + auVar86 = *(undefined1 (*) [16])((long)puVar74 + lVar66); + puVar68[1] = auVar86._8_8_; + *puVar68 = auVar86._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar79 == uVar1 - uVar77) goto LAB_001f6ed8; + } + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + iVar52 = (int)uVar82; + *(ushort *)((long)puVar65 + uVar76) = *puVar54; + if (((((iVar52 + 1 < (int)uVar1) && + (*(ushort *)((long)puVar65 + uVar76 + 2) = puVar54[1], iVar52 + 2 < (int)uVar1)) + && (*(ushort *)((long)puVar65 + uVar76 + 4) = puVar54[2], iVar52 + 3 < (int)uVar1)) + && ((*(ushort *)((long)puVar65 + uVar76 + 6) = puVar54[3], iVar52 + 4 < (int)uVar1 + && (*(ushort *)((long)puVar65 + uVar76 + 8) = puVar54[4], + iVar52 + 5 < (int)uVar1)))) && + (*(ushort *)((long)puVar65 + uVar76 + 10) = puVar54[5], iVar52 + 6 < (int)uVar1)) { + *(ushort *)((long)puVar65 + uVar76 + 0xc) = puVar54[6]; + } + goto LAB_001f6ed8; + } + if ((puVar65 < puVar74 + lVar73 + 8 && puVar74 + lVar73 < puVar64 || + puVar65 < puVar74 + 8 && puVar74 < puVar64) || (uVar1 < 9)) { + lVar56 = 0; + do { + uVar19 = puVar74[lVar56]; + uVar20 = (puVar74 + lVar73)[lVar56]; + uVar18 = uVar20; + if (uVar19 < uVar20) { + uVar18 = uVar19; + } + uVar40 = uVar20; + if (uVar20 < uVar19) { + uVar40 = uVar19; + } + uVar21 = uVar18; + if (uVar18 < uVar19) { + uVar21 = uVar19; + } + uVar19 = uVar40; + if (uVar40 < uVar20) { + uVar19 = uVar20; + } + if (uVar19 < uVar21) { + uVar21 = uVar19; + } + if (uVar18 < uVar40) { + uVar40 = uVar18; + } + if (uVar40 < uVar21) { + uVar40 = uVar21; + } + puVar65[lVar56] = uVar40; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001fbc5c: + uVar82 = (ulong)uVar77; + } + else { + uVar19 = *puVar74; + uVar18 = puVar74[lVar73]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-8] = uVar20; + puVar54 = puVar74 + 1; + if (uVar77 == 1) goto LAB_001fbc5c; + uVar18 = (puVar74 + 1)[lVar73]; + uVar19 = puVar74[1]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-7] = uVar20; + puVar54 = puVar74 + 2; + if (uVar77 == 2) goto LAB_001fbc5c; + uVar18 = (puVar74 + 2)[lVar73]; + uVar19 = puVar74[2]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-6] = uVar20; + puVar54 = puVar74 + 3; + if (uVar77 == 3) goto LAB_001fbc5c; + uVar18 = (puVar74 + 3)[lVar73]; + puVar54 = puVar74 + 4; + uVar19 = puVar74[3]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-5] = uVar20; + if (uVar77 == 4) { + uVar82 = 4; + } + else { + uVar18 = puVar54[lVar73]; + uVar19 = puVar74[4]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-4] = uVar20; + puVar54 = puVar74 + 5; + if (uVar77 == 5) goto LAB_001fbc5c; + uVar18 = (puVar74 + 5)[lVar73]; + puVar54 = puVar74 + 6; + uVar19 = puVar74[5]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-3] = uVar20; + if (uVar77 == 7) { + uVar20 = puVar54[lVar73]; + uVar82 = 7; + uVar19 = puVar74[6]; + puVar54 = puVar74 + 7; + uVar18 = uVar20; + if (uVar19 < uVar20) { + uVar18 = uVar19; + } + uVar40 = uVar20; + if (uVar20 < uVar19) { + uVar40 = uVar19; + } + uVar21 = uVar18; + if (uVar18 < uVar19) { + uVar21 = uVar19; + } + uVar19 = uVar40; + if (uVar40 < uVar20) { + uVar19 = uVar20; + } + if (uVar19 < uVar21) { + uVar21 = uVar19; + } + if (uVar18 < uVar40) { + uVar40 = uVar18; + } + if (uVar40 < uVar21) { + uVar40 = uVar21; + } + puVar64[-2] = uVar40; + } + else { + uVar82 = 6; + } + } + } + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar66 = NEON_shl((ulong)uVar77,1); + lVar56 = 0; + uVar70 = 0; + do { + uVar70 = uVar70 + 1; + puVar6 = (ushort *)((long)puVar74 + lVar56 + lVar66 + lVar62); + puVar50 = (ushort *)((long)puVar74 + lVar56 + (lVar73 + (ulong)uVar77) * 2); + lVar147 = lVar56 + lVar66; + lVar56 = lVar56 + 0x10; + puVar8 = (ushort *)((long)puVar74 + lVar147); + puVar68 = (undefined8 *)((long)puVar65 + lVar147); + auVar88._2_2_ = 0; + auVar88._0_2_ = *puVar6; + auVar88._4_2_ = puVar6[1]; + auVar88._6_2_ = 0; + auVar88._8_2_ = puVar6[2]; + auVar88._10_2_ = 0; + auVar88._12_2_ = puVar6[3]; + auVar88._14_2_ = 0; + auVar140._2_2_ = 0; + auVar140._0_2_ = *puVar50; + auVar140._4_2_ = puVar50[1]; + auVar140._6_2_ = 0; + auVar140._8_2_ = puVar50[2]; + auVar140._10_2_ = 0; + auVar140._12_2_ = puVar50[3]; + auVar140._14_2_ = 0; + auVar87._2_2_ = 0; + auVar87._0_2_ = puVar6[4]; + auVar87._4_2_ = puVar6[5]; + auVar87._6_2_ = 0; + auVar87._8_2_ = puVar6[6]; + auVar87._10_2_ = 0; + auVar87._12_2_ = puVar6[7]; + auVar87._14_2_ = 0; + auVar86._2_2_ = 0; + auVar86._0_2_ = puVar50[4]; + auVar86._4_2_ = puVar50[5]; + auVar86._6_2_ = 0; + auVar86._8_2_ = puVar50[6]; + auVar86._10_2_ = 0; + auVar86._12_2_ = puVar50[7]; + auVar86._14_2_ = 0; + auVar174._2_2_ = 0; + auVar174._0_2_ = puVar8[4]; + auVar174._4_2_ = puVar8[5]; + auVar174._6_2_ = 0; + auVar174._8_2_ = puVar8[6]; + auVar174._10_2_ = 0; + auVar174._12_2_ = puVar8[7]; + auVar174._14_2_ = 0; + auVar85._2_2_ = 0; + auVar85._0_2_ = *puVar8; + auVar85._4_2_ = puVar8[1]; + auVar85._6_2_ = 0; + auVar85._8_2_ = puVar8[2]; + auVar85._10_2_ = 0; + auVar85._12_2_ = puVar8[3]; + auVar85._14_2_ = 0; + auVar89 = NEON_smin(auVar140,auVar88,4); + auVar166 = NEON_smin(auVar86,auVar87,4); + auVar140 = NEON_smax(auVar140,auVar88,4); + auVar86 = NEON_smax(auVar86,auVar87,4); + auVar84 = NEON_smax(auVar89,auVar85,4); + auVar96 = NEON_smax(auVar166,auVar174,4); + auVar89 = NEON_smin(auVar89,auVar85,4); + auVar166 = NEON_smin(auVar166,auVar174,4); + auVar87 = NEON_smin(auVar140,auVar85,4); + auVar88 = NEON_smax(auVar84,auVar140,4); + auVar89 = NEON_smax(auVar89,auVar85,4); + auVar166 = NEON_smax(auVar166,auVar174,4); + auVar140 = NEON_smin(auVar86,auVar174,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar174 = NEON_smin(auVar87,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar166 = NEON_smax(auVar174,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar166._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar166._8_2_ = auVar86._0_2_; + auVar166._10_2_ = auVar86._4_2_; + auVar166._12_2_ = auVar86._8_2_; + auVar166._14_2_ = auVar86._12_2_; + puVar68[1] = auVar166._8_8_; + *puVar68 = auVar166._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar79 == uVar1 - uVar77) goto LAB_001f6ed8; + } + uVar19 = *puVar54; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar18 = puVar54[lVar73]; + iVar52 = (int)uVar82; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76) = uVar20; + if (iVar52 + 1 < (int)uVar1) { + uVar19 = puVar54[1]; + uVar18 = puVar54[lVar73 + 1]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar20; + if (iVar52 + 2 < (int)uVar1) { + uVar18 = puVar54[lVar73 + 2]; + uVar19 = puVar54[2]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar20; + if (iVar52 + 3 < (int)uVar1) { + uVar18 = puVar54[lVar73 + 3]; + uVar19 = puVar54[3]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar20; + if (iVar52 + 4 < (int)uVar1) { + uVar18 = puVar54[lVar73 + 4]; + uVar19 = puVar54[4]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar20; + if (iVar52 + 5 < (int)uVar1) { + uVar19 = puVar54[5]; + uVar18 = puVar54[lVar73 + 5]; + uVar20 = uVar19; + if (uVar18 < uVar19) { + uVar20 = uVar18; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar20; + if (iVar52 + 6 < (int)uVar1) { + uVar19 = puVar54[6]; + uVar20 = puVar54[lVar73 + 6]; + uVar18 = uVar20; + if (uVar19 < uVar20) { + uVar18 = uVar19; + } + uVar40 = uVar20; + if (uVar20 < uVar19) { + uVar40 = uVar19; + } + uVar21 = uVar18; + if (uVar18 < uVar19) { + uVar21 = uVar19; + } + uVar19 = uVar40; + if (uVar40 < uVar20) { + uVar19 = uVar20; + } + if (uVar19 < uVar21) { + uVar21 = uVar19; + } + if (uVar18 < uVar40) { + uVar40 = uVar18; + } + if (uVar40 < uVar21) { + uVar40 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar40; + } + } + } + } + } + } + } + } + else { + puVar54 = puVar74 + lVar71 + 8; + if (iVar69 < iVar58 + -3) { + if (iVar69 < iVar61) { + if (iVar69 < 2) { + puVar6 = puVar74 + lVar71; + if (((uVar1 < 9 || + (puVar65 < puVar54 && puVar6 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + lVar59) && + (ushort *)((long)puVar74 + uVar81) < puVar64)) || + puVar65 < puVar74 + lVar73 + 8 && puVar74 + lVar73 < puVar64) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar40 = (puVar74 + lVar73)[lVar56]; + uVar18 = ((ushort *)((long)puVar74 + uVar81))[lVar56]; + uVar21 = puVar74[lVar56]; + uVar20 = puVar6[lVar56]; + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = uVar19; + if (uVar21 < uVar19) { + uVar40 = uVar21; + } + if (uVar19 < uVar21) { + uVar19 = uVar21; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar19; + if (uVar19 < uVar18) { + uVar40 = uVar18; + } + if (uVar40 < uVar21) { + uVar21 = uVar40; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar65[lVar56] = uVar20; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar6 >> 1) & 7) & 7; + uVar63 = uVar1; + if (uVar77 < uVar1) { + uVar63 = uVar77; + } + puVar54 = puVar74; + if (uVar63 == 0) { +LAB_001f7878: + uVar82 = (ulong)uVar63; + } + else { + uVar21 = puVar74[lVar73]; + puVar54 = puVar74 + 1; + uVar18 = *(ushort *)((long)puVar74 + uVar81); + uVar40 = *puVar74; + uVar20 = puVar74[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-8] = uVar20; + if (uVar63 == 1) goto LAB_001f7878; + uVar21 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar74[1]; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + puVar54 = puVar74 + 2; + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-7] = uVar20; + if (uVar63 == 2) goto LAB_001f7878; + uVar21 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar74[2]; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + puVar54 = puVar74 + 3; + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-6] = uVar20; + if (uVar63 != 3) { + uVar21 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar74[3]; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + puVar54 = puVar74 + 4; + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-5] = uVar20; + if (uVar63 != 4) { + uVar21 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar74[4]; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + puVar54 = puVar74 + 5; + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-4] = uVar20; + if (uVar63 != 5) { + uVar21 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar74[5]; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + puVar54 = puVar74 + 6; + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-3] = uVar20; + if (uVar63 == 7) { + uVar21 = puVar54[lVar73]; + uVar82 = 7; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar74[6]; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + puVar54 = puVar74 + 7; + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-2] = uVar20; + } + else { + uVar82 = 6; + } + goto LAB_001f73c0; + } + } + goto LAB_001f7878; + } + uVar82 = 3; + } +LAB_001f73c0: + uVar77 = ((uVar1 - uVar63) - 8 >> 3) + 1; + uVar79 = uVar77 * 8; + if (6 < uVar41 - uVar63) { + lVar66 = (ulong)uVar63 * 2; + lVar56 = 0; + uVar70 = 0; + lVar147 = NEON_shl(lVar71 + (ulong)uVar63,1); + do { + uVar70 = uVar70 + 1; + lVar149 = lVar56 + lVar66 + lVar60; + puVar6 = (ushort *)((long)puVar74 + lVar56 + uVar81 + lVar66); + puVar50 = (ushort *)((long)puVar74 + lVar56 + lVar62 + lVar66); + lVar7 = lVar56 + lVar66; + lVar10 = lVar56 + lVar147; + auVar124._2_2_ = 0; + auVar124._0_2_ = *puVar50; + auVar124._4_2_ = puVar50[1]; + auVar124._6_2_ = 0; + auVar124._8_2_ = puVar50[2]; + auVar124._10_2_ = 0; + auVar124._12_2_ = puVar50[3]; + auVar124._14_2_ = 0; + auVar120._2_2_ = 0; + auVar120._0_2_ = puVar50[4]; + auVar120._4_2_ = puVar50[5]; + auVar120._6_2_ = 0; + auVar120._8_2_ = puVar50[6]; + auVar120._10_2_ = 0; + auVar120._12_2_ = puVar50[7]; + auVar120._14_2_ = 0; + lVar56 = lVar56 + 0x10; + puVar50 = (ushort *)((long)puVar74 + lVar149); + auVar114._2_2_ = 0; + auVar114._0_2_ = *puVar6; + auVar114._4_2_ = puVar6[1]; + auVar114._6_2_ = 0; + auVar114._8_2_ = puVar6[2]; + auVar114._10_2_ = 0; + auVar114._12_2_ = puVar6[3]; + auVar114._14_2_ = 0; + auVar92._2_2_ = 0; + auVar92._0_2_ = puVar6[4]; + auVar92._4_2_ = puVar6[5]; + auVar92._6_2_ = 0; + auVar92._8_2_ = puVar6[6]; + auVar92._10_2_ = 0; + auVar92._12_2_ = puVar6[7]; + auVar92._14_2_ = 0; + puVar6 = (ushort *)((long)puVar74 + lVar10); + puVar8 = (ushort *)((long)puVar74 + lVar7); + puVar68 = (undefined8 *)((long)puVar65 + lVar7); + auVar89 = NEON_smin(auVar114,auVar124,4); + auVar174 = NEON_smax(auVar114,auVar124,4); + auVar107._2_2_ = 0; + auVar107._0_2_ = *puVar50; + auVar107._4_2_ = puVar50[1]; + auVar107._6_2_ = 0; + auVar107._8_2_ = puVar50[2]; + auVar107._10_2_ = 0; + auVar107._12_2_ = puVar50[3]; + auVar107._14_2_ = 0; + auVar170._2_2_ = 0; + auVar170._0_2_ = *puVar8; + auVar170._4_2_ = puVar8[1]; + auVar170._6_2_ = 0; + auVar170._8_2_ = puVar8[2]; + auVar170._10_2_ = 0; + auVar170._12_2_ = puVar8[3]; + auVar170._14_2_ = 0; + auVar156._2_2_ = 0; + auVar156._0_2_ = puVar8[4]; + auVar156._4_2_ = puVar8[5]; + auVar156._6_2_ = 0; + auVar156._8_2_ = puVar8[6]; + auVar156._10_2_ = 0; + auVar156._12_2_ = puVar8[7]; + auVar156._14_2_ = 0; + auVar142._2_2_ = 0; + auVar142._0_2_ = puVar50[4]; + auVar142._4_2_ = puVar50[5]; + auVar142._6_2_ = 0; + auVar142._8_2_ = puVar50[6]; + auVar142._10_2_ = 0; + auVar142._12_2_ = puVar50[7]; + auVar142._14_2_ = 0; + auVar166 = NEON_smin(auVar92,auVar120,4); + auVar163._2_2_ = 0; + auVar163._0_2_ = *puVar6; + auVar163._4_2_ = puVar6[1]; + auVar163._6_2_ = 0; + auVar163._8_2_ = puVar6[2]; + auVar163._10_2_ = 0; + auVar163._12_2_ = puVar6[3]; + auVar163._14_2_ = 0; + auVar132._2_2_ = 0; + auVar132._0_2_ = puVar6[4]; + auVar132._4_2_ = puVar6[5]; + auVar132._6_2_ = 0; + auVar132._8_2_ = puVar6[6]; + auVar132._10_2_ = 0; + auVar132._12_2_ = puVar6[7]; + auVar132._14_2_ = 0; + auVar86 = NEON_smax(auVar92,auVar120,4); + auVar84 = NEON_smax(auVar89,auVar170,4); + auVar96 = NEON_smax(auVar166,auVar156,4); + auVar88 = NEON_smax(auVar163,auVar107,4); + auVar89 = NEON_smin(auVar89,auVar170,4); + auVar140 = NEON_smax(auVar132,auVar142,4); + auVar85 = NEON_smin(auVar163,auVar107,4); + auVar166 = NEON_smin(auVar166,auVar156,4); + auVar87 = NEON_smin(auVar132,auVar142,4); + auVar88 = NEON_smin(auVar174,auVar88,4); + auVar89 = NEON_smax(auVar89,auVar85,4); + auVar140 = NEON_smin(auVar86,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar87,4); + auVar174 = NEON_smax(auVar84,auVar174,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar88 = NEON_smin(auVar88,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar174,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar166 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar99._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar99._8_2_ = auVar86._0_2_; + auVar99._10_2_ = auVar86._4_2_; + auVar99._12_2_ = auVar86._8_2_; + auVar99._14_2_ = auVar86._12_2_; + puVar68[1] = auVar99._8_8_; + *puVar68 = auVar99._0_8_; + } while (uVar70 < uVar77); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar63 == uVar79) goto LAB_001f6ed8; + } + uVar21 = puVar54[lVar73]; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + iVar52 = (int)uVar82; + uVar40 = *puVar54; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76) = uVar20; + if (iVar52 + 1 < (int)uVar1) { + uVar21 = puVar54[lVar73 + 1]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 2); + uVar40 = puVar54[1]; + uVar20 = puVar54[lVar71 + 1]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar20; + if (iVar52 + 2 < (int)uVar1) { + uVar21 = puVar54[lVar73 + 2]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 4); + uVar40 = puVar54[2]; + uVar20 = puVar54[lVar71 + 2]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar20; + if (iVar52 + 3 < (int)uVar1) { + uVar21 = puVar54[lVar73 + 3]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 6); + uVar40 = puVar54[3]; + uVar20 = puVar54[lVar71 + 3]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar20; + if (iVar52 + 4 < (int)uVar1) { + uVar21 = puVar54[lVar73 + 4]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 8); + uVar40 = puVar54[4]; + uVar20 = puVar54[lVar71 + 4]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar20; + if (iVar52 + 5 < (int)uVar1) { + uVar21 = puVar54[lVar73 + 5]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 10); + uVar40 = puVar54[5]; + uVar20 = puVar54[lVar71 + 5]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar20; + if (iVar52 + 6 < (int)uVar1) { + uVar21 = puVar54[lVar73 + 6]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 0xc); + uVar40 = puVar54[6]; + uVar20 = puVar54[lVar71 + 6]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar21 = uVar19; + if (uVar19 < uVar18) { + uVar21 = uVar18; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar20; + } + } + } + } + } + } + } + else { + puVar6 = (ushort *)((long)puVar74 + uVar80); + if ((((uVar1 < 9 || + (puVar65 < puVar54 && puVar74 + lVar71 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + lVar55) && puVar6 < puVar64)) || + puVar65 < (ushort *)((long)puVar74 + lVar59) && + (ushort *)((long)puVar74 + uVar81) < puVar64) || + puVar65 < puVar74 + lVar73 + 8 && puVar74 + lVar73 < puVar64) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar40 = puVar74[lVar56]; + uVar21 = puVar6[lVar56]; + uVar20 = (puVar74 + lVar71)[lVar56]; + uVar22 = (puVar74 + lVar73)[lVar56]; + uVar18 = ((ushort *)((long)puVar74 + uVar81))[lVar56]; + uVar19 = uVar18; + if (uVar22 < uVar18) { + uVar19 = uVar22; + } + if (uVar18 < uVar22) { + uVar18 = uVar22; + } + uVar22 = uVar19; + if (uVar40 < uVar19) { + uVar22 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar21) { + uVar40 = uVar21; + } + uVar23 = uVar18; + if (uVar40 < uVar18) { + uVar23 = uVar40; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar22 < uVar20) { + uVar22 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + puVar65[lVar56] = uVar23; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar6 >> 1) & 7) & 7; + uVar63 = uVar1; + if (uVar77 < uVar1) { + uVar63 = uVar77; + } + puVar54 = puVar74; + if (uVar63 == 0) { +LAB_001f6f0c: + uVar82 = (ulong)uVar63; + } + else { + uVar40 = puVar74[lVar73]; + puVar54 = puVar74 + 1; + uVar18 = *(ushort *)((long)puVar74 + uVar81); + uVar20 = *puVar74; + uVar21 = *(ushort *)((long)puVar74 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar74[lVar71]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + puVar64[-8] = uVar23; + if (uVar63 == 1) goto LAB_001f6f0c; + uVar40 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar20 = puVar74[1]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + uVar22 = puVar54[lVar71]; + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + puVar54 = puVar74 + 2; + uVar40 = uVar19; + if (uVar20 < uVar19) { + uVar40 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar22; + if (uVar22 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar22) { + uVar22 = uVar21; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-7] = uVar23; + if (uVar63 == 2) goto LAB_001f6f0c; + uVar40 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar20 = puVar74[2]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + uVar22 = puVar54[lVar71]; + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + puVar54 = puVar74 + 3; + uVar40 = uVar19; + if (uVar20 < uVar19) { + uVar40 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar22; + if (uVar22 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar22) { + uVar22 = uVar21; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-6] = uVar23; + if (uVar63 != 3) { + uVar40 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar20 = puVar74[3]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + uVar22 = puVar54[lVar71]; + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + puVar54 = puVar74 + 4; + uVar40 = uVar19; + if (uVar20 < uVar19) { + uVar40 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar22; + if (uVar22 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar22) { + uVar22 = uVar21; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-5] = uVar23; + if (uVar63 != 4) { + uVar40 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar20 = puVar74[4]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + uVar22 = puVar54[lVar71]; + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + puVar54 = puVar74 + 5; + uVar40 = uVar19; + if (uVar20 < uVar19) { + uVar40 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar22; + if (uVar22 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar22) { + uVar22 = uVar21; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-4] = uVar23; + if (uVar63 != 5) { + uVar40 = puVar54[lVar73]; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar20 = puVar74[5]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + uVar22 = puVar54[lVar71]; + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + puVar54 = puVar74 + 6; + uVar40 = uVar19; + if (uVar20 < uVar19) { + uVar40 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar22; + if (uVar22 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar22) { + uVar22 = uVar21; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-3] = uVar23; + if (uVar63 == 7) { + uVar40 = puVar54[lVar73]; + uVar82 = 7; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar20 = puVar74[6]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + uVar22 = puVar54[lVar71]; + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + puVar54 = puVar74 + 7; + uVar40 = uVar19; + if (uVar20 < uVar19) { + uVar40 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar22; + if (uVar22 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar22) { + uVar22 = uVar21; + } + if (uVar40 < uVar22) { + uVar40 = uVar22; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-2] = uVar23; + } + else { + uVar82 = 6; + } + goto LAB_001f69a4; + } + } + goto LAB_001f6f0c; + } + uVar82 = 3; + } +LAB_001f69a4: + uVar77 = ((uVar1 - uVar63) - 8 >> 3) + 1; + uVar79 = uVar77 * 8; + if (6 < uVar41 - uVar63) { + lVar66 = (ulong)uVar63 * 2; + lVar56 = 0; + uVar70 = 0; + do { + uVar70 = uVar70 + 1; + puVar6 = (ushort *)((long)puVar74 + lVar56 + uVar81 + lVar66); + lVar147 = lVar56 + lVar66; + puVar50 = (ushort *)((long)puVar74 + lVar56 + lVar62 + lVar66); + lVar149 = lVar56 + lVar66 + uVar80; + lVar7 = lVar56 + lVar60 + lVar66; + auVar123._2_2_ = 0; + auVar123._0_2_ = *puVar50; + auVar123._4_2_ = puVar50[1]; + auVar123._6_2_ = 0; + auVar123._8_2_ = puVar50[2]; + auVar123._10_2_ = 0; + auVar123._12_2_ = puVar50[3]; + auVar123._14_2_ = 0; + auVar119._2_2_ = 0; + auVar119._0_2_ = puVar50[4]; + auVar119._4_2_ = puVar50[5]; + auVar119._6_2_ = 0; + auVar119._8_2_ = puVar50[6]; + auVar119._10_2_ = 0; + auVar119._12_2_ = puVar50[7]; + auVar119._14_2_ = 0; + lVar56 = lVar56 + 0x10; + puVar50 = (ushort *)((long)puVar74 + lVar149); + puVar8 = (ushort *)((long)puVar74 + lVar7); + puVar9 = (ushort *)((long)puVar74 + lVar147); + puVar68 = (undefined8 *)((long)puVar65 + lVar147); + auVar106._2_2_ = 0; + auVar106._0_2_ = *puVar50; + auVar106._4_2_ = puVar50[1]; + auVar106._6_2_ = 0; + auVar106._8_2_ = puVar50[2]; + auVar106._10_2_ = 0; + auVar106._12_2_ = puVar50[3]; + auVar106._14_2_ = 0; + auVar113._2_2_ = 0; + auVar113._0_2_ = *puVar6; + auVar113._4_2_ = puVar6[1]; + auVar113._6_2_ = 0; + auVar113._8_2_ = puVar6[2]; + auVar113._10_2_ = 0; + auVar113._12_2_ = puVar6[3]; + auVar113._14_2_ = 0; + auVar91._2_2_ = 0; + auVar91._0_2_ = puVar6[4]; + auVar91._4_2_ = puVar6[5]; + auVar91._6_2_ = 0; + auVar91._8_2_ = puVar6[6]; + auVar91._10_2_ = 0; + auVar91._12_2_ = puVar6[7]; + auVar91._14_2_ = 0; + auVar141._2_2_ = 0; + auVar141._0_2_ = puVar50[4]; + auVar141._4_2_ = puVar50[5]; + auVar141._6_2_ = 0; + auVar141._8_2_ = puVar50[6]; + auVar141._10_2_ = 0; + auVar141._12_2_ = puVar50[7]; + auVar141._14_2_ = 0; + auVar89 = NEON_smin(auVar113,auVar123,4); + auVar162._2_2_ = 0; + auVar162._0_2_ = *puVar8; + auVar162._4_2_ = puVar8[1]; + auVar162._6_2_ = 0; + auVar162._8_2_ = puVar8[2]; + auVar162._10_2_ = 0; + auVar162._12_2_ = puVar8[3]; + auVar162._14_2_ = 0; + auVar131._2_2_ = 0; + auVar131._0_2_ = puVar8[4]; + auVar131._4_2_ = puVar8[5]; + auVar131._6_2_ = 0; + auVar131._8_2_ = puVar8[6]; + auVar131._10_2_ = 0; + auVar131._12_2_ = puVar8[7]; + auVar131._14_2_ = 0; + auVar174 = NEON_smax(auVar113,auVar123,4); + auVar169._2_2_ = 0; + auVar169._0_2_ = *puVar9; + auVar169._4_2_ = puVar9[1]; + auVar169._6_2_ = 0; + auVar169._8_2_ = puVar9[2]; + auVar169._10_2_ = 0; + auVar169._12_2_ = puVar9[3]; + auVar169._14_2_ = 0; + auVar155._2_2_ = 0; + auVar155._0_2_ = puVar9[4]; + auVar155._4_2_ = puVar9[5]; + auVar155._6_2_ = 0; + auVar155._8_2_ = puVar9[6]; + auVar155._10_2_ = 0; + auVar155._12_2_ = puVar9[7]; + auVar155._14_2_ = 0; + auVar166 = NEON_smin(auVar91,auVar119,4); + auVar140 = NEON_smax(auVar131,auVar141,4); + auVar86 = NEON_smax(auVar91,auVar119,4); + auVar84 = NEON_smax(auVar89,auVar169,4); + auVar96 = NEON_smax(auVar166,auVar155,4); + auVar88 = NEON_smax(auVar162,auVar106,4); + auVar89 = NEON_smin(auVar89,auVar169,4); + auVar85 = NEON_smin(auVar162,auVar106,4); + auVar166 = NEON_smin(auVar166,auVar155,4); + auVar87 = NEON_smin(auVar131,auVar141,4); + auVar88 = NEON_smin(auVar174,auVar88,4); + auVar89 = NEON_smax(auVar89,auVar85,4); + auVar140 = NEON_smin(auVar86,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar87,4); + auVar174 = NEON_smax(auVar84,auVar174,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar88 = NEON_smin(auVar88,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar174,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar166 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar98._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar98._8_2_ = auVar86._0_2_; + auVar98._10_2_ = auVar86._4_2_; + auVar98._12_2_ = auVar86._8_2_; + auVar98._14_2_ = auVar86._12_2_; + puVar68[1] = auVar98._8_8_; + *puVar68 = auVar98._0_8_; + } while (uVar70 < uVar77); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar63 == uVar79) goto LAB_001f6ed8; + } + uVar21 = puVar54[lVar73]; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar18 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = *puVar54; + uVar20 = puVar54[lVar71]; + uVar19 = uVar18; + if (uVar21 < uVar18) { + uVar19 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar22 = *(ushort *)((long)puVar54 + uVar80); + uVar21 = uVar19; + if (uVar40 < uVar19) { + uVar21 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar40 = uVar20; + if (uVar20 < uVar22) { + uVar40 = uVar22; + } + uVar23 = uVar18; + if (uVar40 < uVar18) { + uVar23 = uVar40; + } + if (uVar22 < uVar20) { + uVar20 = uVar22; + } + iVar52 = (int)uVar82; + if (uVar21 < uVar20) { + uVar21 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar21) { + uVar21 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar21) { + uVar23 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76) = uVar23; + if (iVar52 + 1 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 1]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 2); + uVar20 = puVar54[1]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 2); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar54[lVar71 + 1]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar23; + if (iVar52 + 2 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 2]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 4); + uVar20 = puVar54[2]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 4); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar54[lVar71 + 2]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar23; + if (iVar52 + 3 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 3]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 6); + uVar20 = puVar54[3]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 6); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar54[lVar71 + 3]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar23; + if (iVar52 + 4 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 4]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 8); + uVar20 = puVar54[4]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 8); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar54[lVar71 + 4]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar23; + if (iVar52 + 5 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 5]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 10); + uVar20 = puVar54[5]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 10); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar54[lVar71 + 5]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar23; + if (iVar52 + 6 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 6]; + uVar18 = *(ushort *)((long)puVar54 + uVar81 + 0xc); + uVar20 = puVar54[6]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 0xc); + uVar19 = uVar18; + if (uVar40 < uVar18) { + uVar19 = uVar40; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar40 = puVar54[lVar71 + 6]; + uVar22 = uVar19; + if (uVar20 < uVar19) { + uVar22 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar40; + if (uVar40 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar21 < uVar40) { + uVar40 = uVar21; + } + if (uVar22 < uVar40) { + uVar22 = uVar40; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar22) { + uVar22 = uVar20; + } + if (uVar19 < uVar23) { + uVar23 = uVar19; + } + if (uVar23 < uVar22) { + uVar23 = uVar22; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar23; + } + } + } + } + } + } + } + } + else { + if (iVar69 < 2) { + puVar6 = puVar74 + lVar71; + if ((uVar1 < 9 || + (puVar65 < puVar54 && puVar6 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + lVar59) && + (ushort *)((long)puVar74 + uVar81) < puVar64)) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar19 = puVar74[lVar56]; + uVar20 = ((ushort *)((long)puVar74 + uVar81))[lVar56]; + uVar40 = puVar6[lVar56]; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar21 = uVar19; + if (uVar19 < uVar20) { + uVar21 = uVar20; + } + uVar20 = uVar18; + if (uVar19 < uVar18) { + uVar20 = uVar19; + } + if (uVar18 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar40; + if (uVar40 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar18; + if (uVar18 < uVar21) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar40 < uVar21) { + uVar21 = uVar40; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar21 < uVar19) { + uVar21 = uVar19; + } + puVar65[lVar56] = uVar21; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar6 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001fbf3c: + uVar82 = (ulong)uVar77; + } + else { + uVar20 = *puVar74; + puVar54 = puVar74 + 1; + uVar40 = *(ushort *)((long)puVar74 + uVar81); + uVar19 = puVar74[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-8] = uVar19; + if (uVar77 == 1) goto LAB_001fbf3c; + uVar20 = puVar74[1]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 2; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-7] = uVar19; + if (uVar77 == 2) goto LAB_001fbf3c; + uVar20 = puVar74[2]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 3; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-6] = uVar19; + if (uVar77 != 3) { + uVar20 = puVar74[3]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 4; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-5] = uVar19; + if (uVar77 != 4) { + uVar20 = puVar74[4]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 5; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-4] = uVar19; + if (uVar77 != 5) { + uVar20 = puVar74[5]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 6; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-3] = uVar19; + if (uVar77 == 7) { + uVar20 = puVar74[6]; + uVar82 = 7; + uVar19 = *(ushort *)((long)puVar54 + uVar81); + uVar40 = puVar54[lVar71]; + puVar54 = puVar74 + 7; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar21 = uVar18; + if (uVar20 < uVar18) { + uVar21 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + if (uVar21 < uVar40) { + uVar21 = uVar40; + } + uVar20 = uVar18; + if (uVar18 < uVar19) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar21 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar21) { + uVar19 = uVar21; + } + puVar64[-2] = uVar19; + } + else { + uVar82 = 6; + } + goto LAB_001fa27c; + } + } + goto LAB_001fbf3c; + } + uVar82 = 3; + } +LAB_001fa27c: + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar66 = (ulong)uVar77 * 2; + lVar56 = 0; + uVar70 = 0; + lVar147 = NEON_shl(lVar71 + (ulong)uVar77,1); + do { + lVar149 = lVar56 + lVar66; + puVar6 = (ushort *)((long)puVar74 + lVar56 + lVar66 + uVar81); + puVar50 = (ushort *)((long)puVar74 + lVar149); + uVar70 = uVar70 + 1; + lVar7 = lVar56 + lVar66 + lVar60; + auVar160._2_2_ = 0; + auVar160._0_2_ = *puVar50; + auVar160._4_2_ = puVar50[1]; + auVar160._6_2_ = 0; + auVar160._8_2_ = puVar50[2]; + auVar160._10_2_ = 0; + auVar160._12_2_ = puVar50[3]; + auVar160._14_2_ = 0; + auVar146._2_2_ = 0; + auVar146._0_2_ = puVar50[4]; + auVar146._4_2_ = puVar50[5]; + auVar146._6_2_ = 0; + auVar146._8_2_ = puVar50[6]; + auVar146._10_2_ = 0; + auVar146._12_2_ = puVar50[7]; + auVar146._14_2_ = 0; + lVar10 = lVar56 + lVar147; + lVar56 = lVar56 + 0x10; + puVar50 = (ushort *)((long)puVar74 + lVar10); + puVar8 = (ushort *)((long)puVar74 + lVar7); + puVar68 = (undefined8 *)((long)puVar65 + lVar149); + auVar128._2_2_ = 0; + auVar128._0_2_ = *puVar6; + auVar128._4_2_ = puVar6[1]; + auVar128._6_2_ = 0; + auVar128._8_2_ = puVar6[2]; + auVar128._10_2_ = 0; + auVar128._12_2_ = puVar6[3]; + auVar128._14_2_ = 0; + auVar95._2_2_ = 0; + auVar95._0_2_ = puVar6[4]; + auVar95._4_2_ = puVar6[5]; + auVar95._6_2_ = 0; + auVar95._8_2_ = puVar6[6]; + auVar95._10_2_ = 0; + auVar95._12_2_ = puVar6[7]; + auVar95._14_2_ = 0; + auVar110._2_2_ = 0; + auVar110._0_2_ = *puVar8; + auVar110._4_2_ = puVar8[1]; + auVar110._6_2_ = 0; + auVar110._8_2_ = puVar8[2]; + auVar110._10_2_ = 0; + auVar110._12_2_ = puVar8[3]; + auVar110._14_2_ = 0; + auVar89 = NEON_smin(auVar160,auVar128,4); + auVar117._2_2_ = 0; + auVar117._0_2_ = *puVar50; + auVar117._4_2_ = puVar50[1]; + auVar117._6_2_ = 0; + auVar117._8_2_ = puVar50[2]; + auVar117._10_2_ = 0; + auVar117._12_2_ = puVar50[3]; + auVar117._14_2_ = 0; + auVar166 = NEON_smin(auVar95,auVar146,4); + auVar154._2_2_ = 0; + auVar154._0_2_ = puVar8[4]; + auVar154._4_2_ = puVar8[5]; + auVar154._6_2_ = 0; + auVar154._8_2_ = puVar8[6]; + auVar154._10_2_ = 0; + auVar154._12_2_ = puVar8[7]; + auVar154._14_2_ = 0; + auVar136._2_2_ = 0; + auVar136._0_2_ = puVar50[4]; + auVar136._4_2_ = puVar50[5]; + auVar136._6_2_ = 0; + auVar136._8_2_ = puVar50[6]; + auVar136._10_2_ = 0; + auVar136._12_2_ = puVar50[7]; + auVar136._14_2_ = 0; + auVar84 = NEON_smax(auVar89,auVar160,4); + auVar96 = NEON_smax(auVar166,auVar146,4); + auVar174 = NEON_smax(auVar117,auVar110,4); + auVar87 = NEON_smax(auVar160,auVar128,4); + auVar86 = NEON_smax(auVar95,auVar146,4); + auVar89 = NEON_smin(auVar89,auVar160,4); + auVar140 = NEON_smin(auVar117,auVar110,4); + auVar166 = NEON_smin(auVar166,auVar146,4); + auVar88 = NEON_smax(auVar136,auVar154,4); + auVar85 = NEON_smin(auVar136,auVar154,4); + auVar174 = NEON_smin(auVar87,auVar174,4); + auVar89 = NEON_smax(auVar89,auVar140,4); + auVar140 = NEON_smin(auVar86,auVar88,4); + auVar166 = NEON_smax(auVar166,auVar85,4); + auVar87 = NEON_smax(auVar84,auVar87,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar88 = NEON_smin(auVar174,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar87,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar166 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar102._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar102._8_2_ = auVar86._0_2_; + auVar102._10_2_ = auVar86._4_2_; + auVar102._12_2_ = auVar86._8_2_; + auVar102._14_2_ = auVar86._12_2_; + puVar68[1] = auVar102._8_8_; + *puVar68 = auVar102._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar77 == uVar79) goto LAB_001f6ed8; + } + uVar20 = *puVar54; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + iVar52 = (int)uVar82; + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76) = uVar19; + if (iVar52 + 1 < (int)uVar1) { + uVar20 = puVar54[1]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 2); + uVar19 = puVar54[lVar71 + 1]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar19; + if (iVar52 + 2 < (int)uVar1) { + uVar20 = puVar54[2]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 4); + uVar19 = puVar54[lVar71 + 2]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar19; + if (iVar52 + 3 < (int)uVar1) { + uVar20 = puVar54[3]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 6); + uVar19 = puVar54[lVar71 + 3]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar19; + if (iVar52 + 4 < (int)uVar1) { + uVar20 = puVar54[4]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 8); + uVar19 = puVar54[lVar71 + 4]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar19; + if (iVar52 + 5 < (int)uVar1) { + uVar20 = puVar54[5]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 10); + uVar19 = puVar54[lVar71 + 5]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar40) { + uVar21 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar19; + if (iVar52 + 6 < (int)uVar1) { + uVar19 = puVar54[6]; + uVar20 = *(ushort *)((long)puVar54 + uVar81 + 0xc); + uVar40 = puVar54[lVar71 + 6]; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar21 = uVar19; + if (uVar19 < uVar20) { + uVar21 = uVar20; + } + uVar20 = uVar18; + if (uVar19 < uVar18) { + uVar20 = uVar19; + } + if (uVar18 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar40; + if (uVar40 < uVar20) { + uVar19 = uVar20; + } + uVar20 = uVar18; + if (uVar18 < uVar21) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar40 < uVar21) { + uVar21 = uVar40; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar21 < uVar19) { + uVar21 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar21; + } + } + } + } + } + } + goto LAB_001f6ed8; + } + if (((uVar1 < 9 || + (puVar65 < puVar54 && puVar74 + lVar71 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + lVar55) && + (ushort *)((long)puVar74 + uVar80) < puVar64)) || + puVar65 < (ushort *)((long)puVar74 + lVar59) && + (ushort *)((long)puVar74 + uVar81) < puVar64) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar20 = puVar74[lVar56]; + uVar40 = ((ushort *)((long)puVar74 + uVar80))[lVar56]; + uVar19 = (puVar74 + lVar71)[lVar56]; + uVar21 = ((ushort *)((long)puVar74 + uVar81))[lVar56]; + uVar18 = uVar20; + if (uVar21 < uVar20) { + uVar18 = uVar21; + } + uVar22 = uVar20; + if (uVar20 < uVar21) { + uVar22 = uVar21; + } + uVar21 = uVar18; + if (uVar20 < uVar18) { + uVar21 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar40) { + uVar20 = uVar40; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar21 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar21) { + uVar21 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar21) { + uVar23 = uVar21; + } + puVar65[lVar56] = uVar23; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + uVar63 = uVar1; + if (uVar77 < uVar1) { + uVar63 = uVar77; + } + puVar54 = puVar74; + if (uVar63 == 0) { +LAB_001f9e7c: + uVar82 = (ulong)uVar63; + } + else { + uVar20 = *puVar74; + puVar54 = puVar74 + 1; + uVar40 = *(ushort *)((long)puVar74 + uVar81); + uVar21 = *(ushort *)((long)puVar74 + uVar80); + uVar19 = puVar74[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-8] = uVar23; + if (uVar63 == 1) goto LAB_001f9e7c; + uVar20 = puVar74[1]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 2; + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-7] = uVar23; + if (uVar63 == 2) goto LAB_001f9e7c; + uVar20 = puVar74[2]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 3; + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-6] = uVar23; + if (uVar63 != 3) { + uVar20 = puVar74[3]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 4; + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-5] = uVar23; + if (uVar63 != 4) { + uVar20 = puVar74[4]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 5; + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-4] = uVar23; + if (uVar63 != 5) { + uVar20 = puVar74[5]; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 6; + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-3] = uVar23; + if (uVar63 == 7) { + uVar20 = puVar74[6]; + uVar82 = 7; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 7; + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-2] = uVar23; + } + else { + uVar82 = 6; + } + goto LAB_001f7d1c; + } + } + goto LAB_001f9e7c; + } + uVar82 = 3; + } +LAB_001f7d1c: + uVar77 = ((uVar1 - uVar63) - 8 >> 3) + 1; + uVar79 = uVar77 * 8; + if (6 < uVar41 - uVar63) { + lVar66 = (ulong)uVar63 * 2; + lVar56 = 0; + uVar70 = 0; + do { + lVar147 = lVar56 + lVar66; + puVar6 = (ushort *)((long)puVar74 + lVar56 + uVar81 + lVar66); + puVar50 = (ushort *)((long)puVar74 + lVar147); + uVar70 = uVar70 + 1; + lVar149 = lVar56 + lVar66 + uVar80; + auVar157._2_2_ = 0; + auVar157._0_2_ = *puVar50; + auVar157._4_2_ = puVar50[1]; + auVar157._6_2_ = 0; + auVar157._8_2_ = puVar50[2]; + auVar157._10_2_ = 0; + auVar157._12_2_ = puVar50[3]; + auVar157._14_2_ = 0; + auVar143._2_2_ = 0; + auVar143._0_2_ = puVar50[4]; + auVar143._4_2_ = puVar50[5]; + auVar143._6_2_ = 0; + auVar143._8_2_ = puVar50[6]; + auVar143._10_2_ = 0; + auVar143._12_2_ = puVar50[7]; + auVar143._14_2_ = 0; + lVar7 = lVar56 + lVar60 + lVar66; + lVar56 = lVar56 + 0x10; + puVar50 = (ushort *)((long)puVar74 + lVar7); + puVar8 = (ushort *)((long)puVar74 + lVar149); + puVar68 = (undefined8 *)((long)puVar65 + lVar147); + auVar125._2_2_ = 0; + auVar125._0_2_ = *puVar6; + auVar125._4_2_ = puVar6[1]; + auVar125._6_2_ = 0; + auVar125._8_2_ = puVar6[2]; + auVar125._10_2_ = 0; + auVar125._12_2_ = puVar6[3]; + auVar125._14_2_ = 0; + auVar93._2_2_ = 0; + auVar93._0_2_ = puVar6[4]; + auVar93._4_2_ = puVar6[5]; + auVar93._6_2_ = 0; + auVar93._8_2_ = puVar6[6]; + auVar93._10_2_ = 0; + auVar93._12_2_ = puVar6[7]; + auVar93._14_2_ = 0; + auVar108._2_2_ = 0; + auVar108._0_2_ = *puVar8; + auVar108._4_2_ = puVar8[1]; + auVar108._6_2_ = 0; + auVar108._8_2_ = puVar8[2]; + auVar108._10_2_ = 0; + auVar108._12_2_ = puVar8[3]; + auVar108._14_2_ = 0; + auVar89 = NEON_smin(auVar157,auVar125,4); + auVar115._2_2_ = 0; + auVar115._0_2_ = *puVar50; + auVar115._4_2_ = puVar50[1]; + auVar115._6_2_ = 0; + auVar115._8_2_ = puVar50[2]; + auVar115._10_2_ = 0; + auVar115._12_2_ = puVar50[3]; + auVar115._14_2_ = 0; + auVar166 = NEON_smin(auVar143,auVar93,4); + auVar153._2_2_ = 0; + auVar153._0_2_ = puVar8[4]; + auVar153._4_2_ = puVar8[5]; + auVar153._6_2_ = 0; + auVar153._8_2_ = puVar8[6]; + auVar153._10_2_ = 0; + auVar153._12_2_ = puVar8[7]; + auVar153._14_2_ = 0; + auVar133._2_2_ = 0; + auVar133._0_2_ = puVar50[4]; + auVar133._4_2_ = puVar50[5]; + auVar133._6_2_ = 0; + auVar133._8_2_ = puVar50[6]; + auVar133._10_2_ = 0; + auVar133._12_2_ = puVar50[7]; + auVar133._14_2_ = 0; + auVar84 = NEON_smax(auVar89,auVar157,4); + auVar96 = NEON_smax(auVar166,auVar143,4); + auVar174 = NEON_smax(auVar115,auVar108,4); + auVar87 = NEON_smax(auVar157,auVar125,4); + auVar86 = NEON_smax(auVar143,auVar93,4); + auVar89 = NEON_smin(auVar89,auVar157,4); + auVar140 = NEON_smin(auVar115,auVar108,4); + auVar166 = NEON_smin(auVar166,auVar143,4); + auVar88 = NEON_smax(auVar133,auVar153,4); + auVar85 = NEON_smin(auVar133,auVar153,4); + auVar174 = NEON_smin(auVar87,auVar174,4); + auVar89 = NEON_smax(auVar89,auVar140,4); + auVar140 = NEON_smin(auVar86,auVar88,4); + auVar166 = NEON_smax(auVar166,auVar85,4); + auVar87 = NEON_smax(auVar84,auVar87,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar88 = NEON_smin(auVar174,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar87,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar166 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar100._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar100._8_2_ = auVar86._0_2_; + auVar100._10_2_ = auVar86._4_2_; + auVar100._12_2_ = auVar86._8_2_; + auVar100._14_2_ = auVar86._12_2_; + puVar68[1] = auVar100._8_8_; + *puVar68 = auVar100._0_8_; + } while (uVar70 < uVar77); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar63 == uVar79) goto LAB_001f6ed8; + } + uVar20 = *puVar54; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar40 = *(ushort *)((long)puVar54 + uVar81); + iVar52 = (int)uVar82; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76) = uVar23; + if (iVar52 + 1 < (int)uVar1) { + uVar20 = puVar54[1]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 2); + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 2); + uVar19 = puVar54[lVar71 + 1]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar23; + if (iVar52 + 2 < (int)uVar1) { + uVar20 = puVar54[2]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 4); + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 4); + uVar19 = puVar54[lVar71 + 2]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar23; + if (iVar52 + 3 < (int)uVar1) { + uVar20 = puVar54[3]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 6); + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 6); + uVar19 = puVar54[lVar71 + 3]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar23; + if (iVar52 + 4 < (int)uVar1) { + uVar20 = puVar54[4]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 8); + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 8); + uVar19 = puVar54[lVar71 + 4]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar23; + if (iVar52 + 5 < (int)uVar1) { + uVar20 = puVar54[5]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 10); + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 10); + uVar19 = puVar54[lVar71 + 5]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar23; + if (iVar52 + 6 < (int)uVar1) { + uVar20 = puVar54[6]; + uVar40 = *(ushort *)((long)puVar54 + uVar81 + 0xc); + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 0xc); + uVar19 = puVar54[lVar71 + 6]; + uVar18 = uVar20; + if (uVar40 < uVar20) { + uVar18 = uVar40; + } + uVar22 = uVar20; + if (uVar20 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar21) { + uVar20 = uVar21; + } + uVar23 = uVar22; + if (uVar20 < uVar22) { + uVar23 = uVar20; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + uVar19 = uVar18; + if (uVar18 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar40) { + uVar40 = uVar19; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar23; + } + } + } + } + } + } + } + } + else if (iVar69 < iVar61) { + puVar6 = puVar74 + lVar71; + if (iVar69 < 2) { + if ((uVar1 < 9 || + (puVar65 < puVar54 && puVar6 < puVar64 || + puVar65 < puVar74 + lVar73 + 8 && puVar74 + lVar73 < puVar64)) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar19 = (puVar74 + lVar73)[lVar56]; + uVar20 = puVar74[lVar56]; + uVar40 = puVar6[lVar56]; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + uVar21 = uVar19; + if (uVar19 < uVar20) { + uVar21 = uVar20; + } + if (uVar18 < uVar40) { + uVar18 = uVar40; + } + uVar20 = uVar21; + if (uVar21 < uVar19) { + uVar20 = uVar19; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar65[lVar56] = uVar19; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar6 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001f9d9c: + uVar82 = (ulong)uVar77; + } + else { + uVar40 = puVar74[lVar73]; + puVar54 = puVar74 + 1; + uVar19 = *puVar74; + uVar20 = puVar74[lVar71]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar64[-8] = uVar20; + if (uVar77 == 1) goto LAB_001f9d9c; + uVar40 = puVar54[lVar73]; + uVar19 = puVar74[1]; + uVar20 = puVar54[lVar71]; + puVar54 = puVar74 + 2; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar64[-7] = uVar20; + if (uVar77 == 2) goto LAB_001f9d9c; + uVar40 = puVar54[lVar73]; + uVar19 = puVar74[2]; + uVar20 = puVar54[lVar71]; + puVar54 = puVar74 + 3; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar64[-6] = uVar20; + if (uVar77 != 3) { + uVar40 = puVar54[lVar73]; + uVar19 = puVar74[3]; + uVar20 = puVar54[lVar71]; + puVar54 = puVar74 + 4; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar64[-5] = uVar20; + if (uVar77 != 4) { + uVar40 = puVar54[lVar73]; + uVar19 = puVar74[4]; + uVar20 = puVar54[lVar71]; + puVar54 = puVar74 + 5; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar64[-4] = uVar20; + if (uVar77 != 5) { + uVar40 = puVar54[lVar73]; + uVar19 = puVar74[5]; + uVar20 = puVar54[lVar71]; + puVar54 = puVar74 + 6; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + puVar64[-3] = uVar20; + if (uVar77 == 7) { + uVar40 = puVar54[lVar73]; + uVar82 = 7; + uVar20 = puVar74[6]; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 7; + uVar18 = uVar40; + if (uVar20 < uVar40) { + uVar18 = uVar20; + } + uVar21 = uVar40; + if (uVar40 < uVar20) { + uVar21 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar21) { + uVar18 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + puVar64[-2] = uVar19; + } + else { + uVar82 = 6; + } + goto LAB_001f8e10; + } + } + goto LAB_001f9d9c; + } + uVar82 = 3; + } +LAB_001f8e10: + uVar76 = (ulong)uVar77; + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar66 = uVar76 * 2; + lVar56 = 0; + lVar149 = NEON_shl(lVar71 + uVar76,1); + uVar70 = 0; + lVar147 = NEON_shl(lVar73 + uVar76,1); + do { + uVar70 = uVar70 + 1; + puVar6 = (ushort *)((long)puVar74 + lVar56 + lVar66 + lVar62); + puVar50 = (ushort *)((long)puVar74 + lVar56 + lVar147); + lVar7 = lVar56 + lVar66; + puVar8 = (ushort *)((long)puVar74 + lVar56 + lVar66 + lVar60); + puVar9 = (ushort *)((long)puVar74 + lVar7); + auVar127._2_2_ = 0; + auVar127._0_2_ = *puVar6; + auVar127._4_2_ = puVar6[1]; + auVar127._6_2_ = 0; + auVar127._8_2_ = puVar6[2]; + auVar127._10_2_ = 0; + auVar127._12_2_ = puVar6[3]; + auVar127._14_2_ = 0; + puVar11 = (ushort *)((long)puVar74 + lVar56 + lVar149); + auVar188._2_2_ = 0; + auVar188._0_2_ = *puVar50; + auVar188._4_2_ = puVar50[1]; + auVar188._6_2_ = 0; + auVar188._8_2_ = puVar50[2]; + auVar188._10_2_ = 0; + auVar188._12_2_ = puVar50[3]; + auVar188._14_2_ = 0; + auVar189._2_2_ = 0; + auVar189._0_2_ = puVar6[4]; + auVar189._4_2_ = puVar6[5]; + auVar189._6_2_ = 0; + auVar189._8_2_ = puVar6[6]; + auVar189._10_2_ = 0; + auVar189._12_2_ = puVar6[7]; + auVar189._14_2_ = 0; + lVar56 = lVar56 + 0x10; + puVar68 = (undefined8 *)((long)puVar65 + lVar7); + auVar184._2_2_ = 0; + auVar184._0_2_ = puVar50[4]; + auVar184._4_2_ = puVar50[5]; + auVar184._6_2_ = 0; + auVar184._8_2_ = puVar50[6]; + auVar184._10_2_ = 0; + auVar184._12_2_ = puVar50[7]; + auVar184._14_2_ = 0; + auVar186._2_2_ = 0; + auVar186._0_2_ = *puVar8; + auVar186._4_2_ = puVar8[1]; + auVar186._6_2_ = 0; + auVar186._8_2_ = puVar8[2]; + auVar186._10_2_ = 0; + auVar186._12_2_ = puVar8[3]; + auVar186._14_2_ = 0; + auVar89 = NEON_smin(auVar188,auVar127,4); + auVar145._2_2_ = 0; + auVar145._0_2_ = puVar8[4]; + auVar145._4_2_ = puVar8[5]; + auVar145._6_2_ = 0; + auVar145._8_2_ = puVar8[6]; + auVar145._10_2_ = 0; + auVar145._12_2_ = puVar8[7]; + auVar145._14_2_ = 0; + auVar174 = NEON_smax(auVar188,auVar127,4); + auVar172._2_2_ = 0; + auVar172._0_2_ = *puVar9; + auVar172._4_2_ = puVar9[1]; + auVar172._6_2_ = 0; + auVar172._8_2_ = puVar9[2]; + auVar172._10_2_ = 0; + auVar172._12_2_ = puVar9[3]; + auVar172._14_2_ = 0; + auVar159._2_2_ = 0; + auVar159._0_2_ = puVar9[4]; + auVar159._4_2_ = puVar9[5]; + auVar159._6_2_ = 0; + auVar159._8_2_ = puVar9[6]; + auVar159._10_2_ = 0; + auVar159._12_2_ = puVar9[7]; + auVar159._14_2_ = 0; + auVar166 = NEON_smin(auVar184,auVar189,4); + auVar86 = NEON_smax(auVar184,auVar189,4); + auVar165._2_2_ = 0; + auVar165._0_2_ = *puVar11; + auVar165._4_2_ = puVar11[1]; + auVar165._6_2_ = 0; + auVar165._8_2_ = puVar11[2]; + auVar165._10_2_ = 0; + auVar165._12_2_ = puVar11[3]; + auVar165._14_2_ = 0; + auVar135._2_2_ = 0; + auVar135._0_2_ = puVar11[4]; + auVar135._4_2_ = puVar11[5]; + auVar135._6_2_ = 0; + auVar135._8_2_ = puVar11[6]; + auVar135._10_2_ = 0; + auVar135._12_2_ = puVar11[7]; + auVar135._14_2_ = 0; + auVar84 = NEON_smax(auVar89,auVar172,4); + auVar96 = NEON_smax(auVar166,auVar159,4); + auVar88 = NEON_smax(auVar165,auVar186,4); + auVar89 = NEON_smin(auVar89,auVar172,4); + auVar140 = NEON_smax(auVar135,auVar145,4); + auVar85 = NEON_smin(auVar165,auVar186,4); + auVar166 = NEON_smin(auVar166,auVar159,4); + auVar87 = NEON_smin(auVar135,auVar145,4); + auVar88 = NEON_smin(auVar174,auVar88,4); + auVar89 = NEON_smax(auVar89,auVar85,4); + auVar140 = NEON_smin(auVar86,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar87,4); + auVar174 = NEON_smax(auVar84,auVar174,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar88 = NEON_smin(auVar88,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar174,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar166 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar185._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar185._8_2_ = auVar86._0_2_; + auVar185._10_2_ = auVar86._4_2_; + auVar185._12_2_ = auVar86._8_2_; + auVar185._14_2_ = auVar86._12_2_; + puVar68[1] = auVar185._8_8_; + *puVar68 = auVar185._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar77 == uVar79) goto LAB_001f6ed8; + } + uVar40 = puVar54[lVar73]; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar19 = *puVar54; + iVar52 = (int)uVar82; + uVar20 = puVar54[lVar71]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76) = uVar20; + if (iVar52 + 1 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 1]; + uVar19 = puVar54[1]; + uVar20 = puVar54[lVar71 + 1]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar20; + if (iVar52 + 2 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 2]; + uVar19 = puVar54[2]; + uVar20 = puVar54[lVar71 + 2]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar20; + if (iVar52 + 3 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 3]; + uVar19 = puVar54[3]; + uVar20 = puVar54[lVar71 + 3]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar20; + if (iVar52 + 4 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 4]; + uVar19 = puVar54[4]; + uVar20 = puVar54[lVar71 + 4]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar20; + if (iVar52 + 5 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 5]; + uVar19 = puVar54[5]; + uVar20 = puVar54[lVar71 + 5]; + uVar18 = uVar19; + if (uVar40 < uVar19) { + uVar18 = uVar40; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + uVar21 = uVar20; + if (uVar20 < uVar18) { + uVar21 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar19) { + uVar18 = uVar19; + } + if (uVar18 < uVar21) { + uVar21 = uVar18; + } + if (uVar40 < uVar20) { + uVar20 = uVar40; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar21) { + uVar20 = uVar21; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar20; + if (iVar52 + 6 < (int)uVar1) { + uVar40 = puVar54[lVar73 + 6]; + uVar20 = puVar54[6]; + uVar19 = puVar54[lVar71 + 6]; + uVar18 = uVar40; + if (uVar20 < uVar40) { + uVar18 = uVar20; + } + uVar21 = uVar40; + if (uVar40 < uVar20) { + uVar21 = uVar20; + } + uVar20 = uVar19; + if (uVar19 < uVar18) { + uVar20 = uVar18; + } + uVar18 = uVar40; + if (uVar40 < uVar21) { + uVar18 = uVar21; + } + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar19; + } + } + } + } + } + } + } + else { + puVar50 = puVar74 + lVar73; + if (((uVar1 < 9 || + (puVar65 < puVar54 && puVar6 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + lVar55) && + (ushort *)((long)puVar74 + uVar80) < puVar64)) || + puVar65 < puVar74 + lVar73 + 8 && puVar50 < puVar64) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar18 = puVar50[lVar56]; + uVar20 = puVar74[lVar56]; + uVar40 = ((ushort *)((long)puVar74 + uVar80))[lVar56]; + uVar19 = uVar18; + if (uVar20 < uVar18) { + uVar19 = uVar20; + } + uVar21 = uVar18; + if (uVar18 < uVar20) { + uVar21 = uVar20; + } + uVar22 = puVar6[lVar56]; + uVar20 = uVar22; + if (uVar22 < uVar40) { + uVar20 = uVar40; + } + uVar23 = uVar18; + if (uVar20 < uVar18) { + uVar23 = uVar20; + } + if (uVar40 < uVar22) { + uVar22 = uVar40; + } + if (uVar19 < uVar22) { + uVar19 = uVar22; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar21 < uVar23) { + uVar23 = uVar21; + } + if (uVar23 < uVar19) { + uVar23 = uVar19; + } + puVar65[lVar56] = uVar23; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar50 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001f8a90: + uVar82 = (ulong)uVar77; + } + else { + uVar20 = puVar74[lVar73]; + puVar54 = puVar74 + 1; + uVar18 = *puVar74; + uVar21 = *(ushort *)((long)puVar74 + uVar80); + uVar19 = puVar74[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-8] = uVar23; + if (uVar77 == 1) goto LAB_001f8a90; + uVar20 = puVar54[lVar73]; + uVar18 = puVar74[1]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + puVar54 = puVar74 + 2; + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-7] = uVar23; + if (uVar77 == 2) goto LAB_001f8a90; + uVar20 = puVar54[lVar73]; + uVar18 = puVar74[2]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + puVar54 = puVar74 + 3; + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-6] = uVar23; + if (uVar77 != 3) { + uVar20 = puVar54[lVar73]; + uVar18 = puVar74[3]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + puVar54 = puVar74 + 4; + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-5] = uVar23; + if (uVar77 != 4) { + uVar20 = puVar54[lVar73]; + uVar18 = puVar74[4]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + puVar54 = puVar74 + 5; + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-4] = uVar23; + if (uVar77 != 5) { + uVar20 = puVar54[lVar73]; + uVar18 = puVar74[5]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + puVar54 = puVar74 + 6; + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + puVar64[-3] = uVar23; + if (uVar77 == 7) { + uVar40 = puVar54[lVar73]; + uVar82 = 7; + uVar20 = puVar74[6]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + uVar18 = puVar54[lVar71]; + uVar19 = uVar40; + if (uVar20 < uVar40) { + uVar19 = uVar20; + } + uVar22 = uVar40; + if (uVar40 < uVar20) { + uVar22 = uVar20; + } + uVar20 = uVar18; + if (uVar18 < uVar21) { + uVar20 = uVar21; + } + puVar54 = puVar74 + 7; + uVar23 = uVar40; + if (uVar20 < uVar40) { + uVar23 = uVar20; + } + if (uVar21 < uVar18) { + uVar18 = uVar21; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + uVar18 = uVar22; + if (uVar22 < uVar40) { + uVar18 = uVar40; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar22 < uVar23) { + uVar23 = uVar22; + } + if (uVar23 < uVar19) { + uVar23 = uVar19; + } + puVar64[-2] = uVar23; + } + else { + uVar82 = 6; + } + goto LAB_001f85d0; + } + } + goto LAB_001f8a90; + } + uVar82 = 3; + } +LAB_001f85d0: + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar66 = (ulong)uVar77 * 2; + lVar56 = 0; + uVar70 = 0; + lVar147 = NEON_shl(lVar73 + (ulong)uVar77,1); + do { + puVar6 = (ushort *)((long)puVar74 + lVar56 + lVar62 + lVar66); + uVar70 = uVar70 + 1; + lVar149 = lVar56 + lVar66 + uVar80; + puVar50 = (ushort *)((long)puVar74 + lVar56 + lVar147); + lVar7 = lVar56 + lVar66; + auVar126._2_2_ = 0; + auVar126._0_2_ = *puVar6; + auVar126._4_2_ = puVar6[1]; + auVar126._6_2_ = 0; + auVar126._8_2_ = puVar6[2]; + auVar126._10_2_ = 0; + auVar126._12_2_ = puVar6[3]; + auVar126._14_2_ = 0; + auVar121._2_2_ = 0; + auVar121._0_2_ = puVar6[4]; + auVar121._4_2_ = puVar6[5]; + auVar121._6_2_ = 0; + auVar121._8_2_ = puVar6[6]; + auVar121._10_2_ = 0; + auVar121._12_2_ = puVar6[7]; + auVar121._14_2_ = 0; + lVar10 = lVar56 + lVar60 + lVar66; + lVar56 = lVar56 + 0x10; + puVar6 = (ushort *)((long)puVar74 + lVar149); + auVar116._2_2_ = 0; + auVar116._0_2_ = *puVar50; + auVar116._4_2_ = puVar50[1]; + auVar116._6_2_ = 0; + auVar116._8_2_ = puVar50[2]; + auVar116._10_2_ = 0; + auVar116._12_2_ = puVar50[3]; + auVar116._14_2_ = 0; + auVar94._2_2_ = 0; + auVar94._0_2_ = puVar50[4]; + auVar94._4_2_ = puVar50[5]; + auVar94._6_2_ = 0; + auVar94._8_2_ = puVar50[6]; + auVar94._10_2_ = 0; + auVar94._12_2_ = puVar50[7]; + auVar94._14_2_ = 0; + puVar50 = (ushort *)((long)puVar74 + lVar10); + puVar8 = (ushort *)((long)puVar74 + lVar7); + puVar68 = (undefined8 *)((long)puVar65 + lVar7); + auVar89 = NEON_smin(auVar116,auVar126,4); + auVar174 = NEON_smax(auVar116,auVar126,4); + auVar109._2_2_ = 0; + auVar109._0_2_ = *puVar6; + auVar109._4_2_ = puVar6[1]; + auVar109._6_2_ = 0; + auVar109._8_2_ = puVar6[2]; + auVar109._10_2_ = 0; + auVar109._12_2_ = puVar6[3]; + auVar109._14_2_ = 0; + auVar171._2_2_ = 0; + auVar171._0_2_ = *puVar8; + auVar171._4_2_ = puVar8[1]; + auVar171._6_2_ = 0; + auVar171._8_2_ = puVar8[2]; + auVar171._10_2_ = 0; + auVar171._12_2_ = puVar8[3]; + auVar171._14_2_ = 0; + auVar158._2_2_ = 0; + auVar158._0_2_ = puVar8[4]; + auVar158._4_2_ = puVar8[5]; + auVar158._6_2_ = 0; + auVar158._8_2_ = puVar8[6]; + auVar158._10_2_ = 0; + auVar158._12_2_ = puVar8[7]; + auVar158._14_2_ = 0; + auVar144._2_2_ = 0; + auVar144._0_2_ = puVar6[4]; + auVar144._4_2_ = puVar6[5]; + auVar144._6_2_ = 0; + auVar144._8_2_ = puVar6[6]; + auVar144._10_2_ = 0; + auVar144._12_2_ = puVar6[7]; + auVar144._14_2_ = 0; + auVar166 = NEON_smin(auVar94,auVar121,4); + auVar164._2_2_ = 0; + auVar164._0_2_ = *puVar50; + auVar164._4_2_ = puVar50[1]; + auVar164._6_2_ = 0; + auVar164._8_2_ = puVar50[2]; + auVar164._10_2_ = 0; + auVar164._12_2_ = puVar50[3]; + auVar164._14_2_ = 0; + auVar134._2_2_ = 0; + auVar134._0_2_ = puVar50[4]; + auVar134._4_2_ = puVar50[5]; + auVar134._6_2_ = 0; + auVar134._8_2_ = puVar50[6]; + auVar134._10_2_ = 0; + auVar134._12_2_ = puVar50[7]; + auVar134._14_2_ = 0; + auVar86 = NEON_smax(auVar94,auVar121,4); + auVar84 = NEON_smax(auVar89,auVar171,4); + auVar96 = NEON_smax(auVar166,auVar158,4); + auVar88 = NEON_smax(auVar164,auVar109,4); + auVar89 = NEON_smin(auVar89,auVar171,4); + auVar140 = NEON_smax(auVar134,auVar144,4); + auVar85 = NEON_smin(auVar164,auVar109,4); + auVar166 = NEON_smin(auVar166,auVar158,4); + auVar87 = NEON_smin(auVar134,auVar144,4); + auVar88 = NEON_smin(auVar174,auVar88,4); + auVar89 = NEON_smax(auVar89,auVar85,4); + auVar140 = NEON_smin(auVar86,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar87,4); + auVar174 = NEON_smax(auVar84,auVar174,4); + auVar86 = NEON_smax(auVar96,auVar86,4); + auVar88 = NEON_smin(auVar88,auVar84,4); + auVar89 = NEON_smin(auVar89,auVar174,4); + auVar86 = NEON_smin(auVar166,auVar86,4); + auVar140 = NEON_smin(auVar140,auVar96,4); + auVar166 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar140,auVar86,4); + auVar101._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar101._8_2_ = auVar86._0_2_; + auVar101._10_2_ = auVar86._4_2_; + auVar101._12_2_ = auVar86._8_2_; + auVar101._14_2_ = auVar86._12_2_; + puVar68[1] = auVar101._8_8_; + *puVar68 = auVar101._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar77 == uVar79) goto LAB_001f6ed8; + } + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar20 = puVar54[lVar73]; + uVar21 = *(ushort *)((long)puVar54 + uVar80); + iVar52 = (int)uVar82; + uVar18 = *puVar54; + uVar19 = puVar54[lVar71]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76) = uVar23; + if (iVar52 + 1 < (int)uVar1) { + uVar20 = puVar54[lVar73 + 1]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 2); + uVar19 = puVar54[lVar71 + 1]; + uVar18 = puVar54[1]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar23; + if (iVar52 + 2 < (int)uVar1) { + uVar20 = puVar54[lVar73 + 2]; + uVar18 = puVar54[2]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 4); + uVar19 = puVar54[lVar71 + 2]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar23; + if (iVar52 + 3 < (int)uVar1) { + uVar20 = puVar54[lVar73 + 3]; + uVar18 = puVar54[3]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 6); + uVar19 = puVar54[lVar71 + 3]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar23; + if (iVar52 + 4 < (int)uVar1) { + uVar20 = puVar54[lVar73 + 4]; + uVar18 = puVar54[4]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 8); + uVar19 = puVar54[lVar71 + 4]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar23; + if (iVar52 + 5 < (int)uVar1) { + uVar20 = puVar54[lVar73 + 5]; + uVar18 = puVar54[5]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 10); + uVar19 = puVar54[lVar71 + 5]; + uVar40 = uVar18; + if (uVar20 < uVar18) { + uVar40 = uVar20; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + uVar22 = uVar19; + if (uVar19 < uVar21) { + uVar22 = uVar21; + } + uVar23 = uVar20; + if (uVar22 < uVar20) { + uVar23 = uVar22; + } + if (uVar21 < uVar19) { + uVar19 = uVar21; + } + if (uVar40 < uVar19) { + uVar40 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar20 < uVar40) { + uVar40 = uVar20; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar23 < uVar40) { + uVar23 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar23; + if (iVar52 + 6 < (int)uVar1) { + uVar19 = puVar54[lVar73 + 6]; + uVar40 = puVar54[6]; + uVar21 = *(ushort *)((long)puVar54 + uVar80 + 0xc); + uVar18 = puVar54[lVar71 + 6]; + uVar20 = uVar19; + if (uVar40 < uVar19) { + uVar20 = uVar40; + } + uVar22 = uVar19; + if (uVar19 < uVar40) { + uVar22 = uVar40; + } + uVar40 = uVar18; + if (uVar18 < uVar21) { + uVar40 = uVar21; + } + uVar23 = uVar19; + if (uVar40 < uVar19) { + uVar23 = uVar40; + } + if (uVar21 < uVar18) { + uVar18 = uVar21; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + if (uVar19 < uVar22) { + uVar19 = uVar22; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar22 < uVar23) { + uVar23 = uVar22; + } + if (uVar23 < uVar20) { + uVar23 = uVar20; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar23; + } + } + } + } + } + } + } + } + else if (iVar69 < 2) { + if ((puVar65 < puVar54 && puVar74 + lVar71 < puVar64 || + puVar65 < puVar74 + 8 && puVar74 < puVar64) || (uVar1 < 9)) { + lVar56 = 0; + do { + uVar20 = puVar74[lVar56]; + uVar19 = (puVar74 + lVar71)[lVar56]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar65[lVar56] = uVar20; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + uVar63 = uVar1; + if (uVar77 < uVar1) { + uVar63 = uVar77; + } + puVar54 = puVar74; + if (uVar63 == 0) { +LAB_001f9e18: + uVar82 = (ulong)uVar63; + } + else { + puVar54 = puVar74 + 1; + uVar20 = *puVar74; + uVar19 = puVar74[lVar71]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-8] = uVar20; + if (uVar63 == 1) goto LAB_001f9e18; + uVar20 = puVar74[1]; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 2; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-7] = uVar20; + if (uVar63 == 2) goto LAB_001f9e18; + uVar20 = puVar74[2]; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 3; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-6] = uVar20; + if (uVar63 != 3) { + uVar20 = puVar74[3]; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 4; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-5] = uVar20; + if (uVar63 != 4) { + uVar20 = puVar74[4]; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 5; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + puVar64[-4] = uVar20; + if (uVar63 != 5) { + uVar20 = puVar74[5]; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 6; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + puVar64[-3] = uVar19; + if (uVar63 == 7) { + uVar20 = puVar74[6]; + uVar82 = 7; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 7; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar18) { + uVar20 = uVar18; + } + puVar64[-2] = uVar20; + } + else { + uVar82 = 6; + } + goto LAB_001f9acc; + } + } + goto LAB_001f9e18; + } + uVar82 = 3; + } +LAB_001f9acc: + uVar77 = ((uVar1 - uVar63) - 8 >> 3) + 1; + uVar79 = uVar77 * 8; + if (6 < uVar41 - uVar63) { + lVar66 = (ulong)uVar63 * 2; + lVar56 = 0; + uVar70 = 0; + do { + uVar70 = uVar70 + 1; + puVar6 = (ushort *)((long)puVar74 + lVar56 + (lVar71 + (ulong)uVar63) * 2); + puVar50 = (ushort *)((long)puVar74 + lVar56 + lVar66 + lVar60); + lVar147 = lVar56 + lVar66; + lVar56 = lVar56 + 0x10; + puVar8 = (ushort *)((long)puVar74 + lVar147); + puVar68 = (undefined8 *)((long)puVar65 + lVar147); + auVar167._2_2_ = 0; + auVar167._0_2_ = *puVar50; + auVar167._4_2_ = puVar50[1]; + auVar167._6_2_ = 0; + auVar167._8_2_ = puVar50[2]; + auVar167._10_2_ = 0; + auVar167._12_2_ = puVar50[3]; + auVar167._14_2_ = 0; + auVar152._2_2_ = 0; + auVar152._0_2_ = puVar50[4]; + auVar152._4_2_ = puVar50[5]; + auVar152._6_2_ = 0; + auVar152._8_2_ = puVar50[6]; + auVar152._10_2_ = 0; + auVar152._12_2_ = puVar50[7]; + auVar152._14_2_ = 0; + auVar173._2_2_ = 0; + auVar173._0_2_ = *puVar8; + auVar173._4_2_ = puVar8[1]; + auVar173._6_2_ = 0; + auVar173._8_2_ = puVar8[2]; + auVar173._10_2_ = 0; + auVar173._12_2_ = puVar8[3]; + auVar173._14_2_ = 0; + auVar168._2_2_ = 0; + auVar168._0_2_ = puVar8[4]; + auVar168._4_2_ = puVar8[5]; + auVar168._6_2_ = 0; + auVar168._8_2_ = puVar8[6]; + auVar168._10_2_ = 0; + auVar168._12_2_ = puVar8[7]; + auVar168._14_2_ = 0; + auVar161._2_2_ = 0; + auVar161._0_2_ = *puVar6; + auVar161._4_2_ = puVar6[1]; + auVar161._6_2_ = 0; + auVar161._8_2_ = puVar6[2]; + auVar161._10_2_ = 0; + auVar161._12_2_ = puVar6[3]; + auVar161._14_2_ = 0; + auVar150._2_2_ = 0; + auVar150._0_2_ = puVar6[4]; + auVar150._4_2_ = puVar6[5]; + auVar150._6_2_ = 0; + auVar150._8_2_ = puVar6[6]; + auVar150._10_2_ = 0; + auVar150._12_2_ = puVar6[7]; + auVar150._14_2_ = 0; + auVar140 = NEON_smin(auVar161,auVar167,4); + auVar89 = NEON_smin(auVar150,auVar152,4); + auVar166 = NEON_smax(auVar161,auVar167,4); + auVar86 = NEON_smax(auVar150,auVar152,4); + auVar174 = NEON_smax(auVar140,auVar173,4); + auVar88 = NEON_smax(auVar89,auVar168,4); + auVar140 = NEON_smin(auVar166,auVar173,4); + auVar166 = NEON_smin(auVar86,auVar168,4); + auVar89 = NEON_smin(auVar174,auVar173,4); + auVar86 = NEON_smin(auVar88,auVar168,4); + auVar89 = NEON_smax(auVar140,auVar89,4); + auVar86 = NEON_smax(auVar166,auVar86,4); + auVar177._0_8_ = + CONCAT26(auVar89._12_2_, + CONCAT24(auVar89._8_2_,CONCAT22(auVar89._4_2_,auVar89._0_2_))); + auVar177._8_2_ = auVar86._0_2_; + auVar177._10_2_ = auVar86._4_2_; + auVar177._12_2_ = auVar86._8_2_; + auVar177._14_2_ = auVar86._12_2_; + puVar68[1] = auVar177._8_8_; + *puVar68 = auVar177._0_8_; + } while (uVar70 < uVar77); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar1 - uVar63 == uVar79) goto LAB_001f6ed8; + } + uVar20 = *puVar54; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar19 = puVar54[lVar71]; + iVar52 = (int)uVar82; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76) = uVar20; + if (iVar52 + 1 < (int)uVar1) { + uVar20 = puVar54[1]; + uVar19 = puVar54[lVar71 + 1]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar20; + if (iVar52 + 2 < (int)uVar1) { + uVar20 = puVar54[2]; + uVar19 = puVar54[lVar71 + 2]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar20; + if (iVar52 + 3 < (int)uVar1) { + uVar20 = puVar54[3]; + uVar19 = puVar54[lVar71 + 3]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar20; + if (iVar52 + 4 < (int)uVar1) { + uVar20 = puVar54[4]; + uVar19 = puVar54[lVar71 + 4]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar20) { + uVar20 = uVar19; + } + if (uVar20 < uVar40) { + uVar20 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar20; + if (iVar52 + 5 < (int)uVar1) { + uVar20 = puVar54[5]; + uVar19 = puVar54[lVar71 + 5]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar20; + if (uVar18 < uVar20) { + uVar40 = uVar18; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar19; + if (iVar52 + 6 < (int)uVar1) { + uVar19 = puVar54[6]; + uVar20 = puVar54[lVar71 + 6]; + uVar18 = uVar19; + if (uVar19 < uVar20) { + uVar18 = uVar20; + } + uVar40 = uVar19; + if (uVar18 < uVar19) { + uVar40 = uVar18; + } + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar18 < uVar19) { + uVar19 = uVar18; + } + if (uVar19 < uVar40) { + uVar19 = uVar40; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar19; + } + } + } + } + } + } + } + else { + if ((uVar1 < 9 || + (puVar65 < puVar54 && puVar74 + lVar71 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + lVar55) && + (ushort *)((long)puVar74 + uVar80) < puVar64)) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar56 = 0; + do { + uVar40 = ((ushort *)((long)puVar74 + uVar80))[lVar56]; + uVar19 = (puVar74 + lVar71)[lVar56]; + uVar20 = puVar74[lVar56]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar65[lVar56] = uVar20; + lVar56 = lVar56 + 1; + } while ((int)lVar56 < (int)uVar1); + goto LAB_001f6ed8; + } + uVar77 = -((uint)((ulong)puVar74 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar54 = puVar74; + if (uVar77 == 0) { +LAB_001f9854: + uVar82 = (ulong)uVar77; + } + else { + uVar40 = *(ushort *)((long)puVar74 + uVar80); + uVar19 = puVar74[lVar71]; + puVar54 = puVar74 + 1; + uVar20 = *puVar74; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-8] = uVar20; + if (uVar77 == 1) goto LAB_001f9854; + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 2; + uVar20 = puVar74[1]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-7] = uVar20; + if (uVar77 == 2) goto LAB_001f9854; + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 3; + uVar20 = puVar74[2]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-6] = uVar20; + if (uVar77 != 3) { + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 4; + uVar20 = puVar74[3]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-5] = uVar20; + if (uVar77 != 4) { + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 5; + uVar20 = puVar74[4]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + puVar64[-4] = uVar20; + if (uVar77 != 5) { + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 6; + uVar20 = puVar74[5]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar20 < uVar21) { + uVar21 = uVar20; + } + if (uVar21 < uVar19) { + uVar21 = uVar19; + } + puVar64[-3] = uVar21; + if (uVar77 == 7) { + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar82 = 7; + uVar19 = puVar54[lVar71]; + puVar54 = puVar74 + 7; + uVar20 = puVar74[6]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + uVar18 = uVar20; + if (uVar19 < uVar20) { + uVar18 = uVar19; + } + if (uVar20 < uVar21) { + uVar21 = uVar20; + } + if (uVar21 < uVar18) { + uVar21 = uVar18; + } + puVar64[-2] = uVar21; + } + else { + uVar82 = 6; + } + goto LAB_001f94f4; + } + } + goto LAB_001f9854; + } + uVar82 = 3; + } +LAB_001f94f4: + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar66 = (ulong)uVar77 * 2; + lVar56 = 0; + uVar70 = 0; + do { + uVar70 = uVar70 + 1; + puVar6 = (ushort *)((long)puVar74 + lVar56 + lVar66 + lVar60); + puVar50 = (ushort *)((long)puVar74 + lVar56 + lVar66 + uVar80); + lVar147 = lVar56 + lVar66; + lVar56 = lVar56 + 0x10; + puVar8 = (ushort *)((long)puVar74 + lVar147); + puVar68 = (undefined8 *)((long)puVar65 + lVar147); + auVar179._2_2_ = 0; + auVar179._0_2_ = *puVar50; + auVar179._4_2_ = puVar50[1]; + auVar179._6_2_ = 0; + auVar179._8_2_ = puVar50[2]; + auVar179._10_2_ = 0; + auVar179._12_2_ = puVar50[3]; + auVar179._14_2_ = 0; + auVar187._2_2_ = 0; + auVar187._0_2_ = puVar50[4]; + auVar187._4_2_ = puVar50[5]; + auVar187._6_2_ = 0; + auVar187._8_2_ = puVar50[6]; + auVar187._10_2_ = 0; + auVar187._12_2_ = puVar50[7]; + auVar187._14_2_ = 0; + auVar182._2_2_ = 0; + auVar182._0_2_ = *puVar8; + auVar182._4_2_ = puVar8[1]; + auVar182._6_2_ = 0; + auVar182._8_2_ = puVar8[2]; + auVar182._10_2_ = 0; + auVar182._12_2_ = puVar8[3]; + auVar182._14_2_ = 0; + auVar180._2_2_ = 0; + auVar180._0_2_ = puVar8[4]; + auVar180._4_2_ = puVar8[5]; + auVar180._6_2_ = 0; + auVar180._8_2_ = puVar8[6]; + auVar180._10_2_ = 0; + auVar180._12_2_ = puVar8[7]; + auVar180._14_2_ = 0; + auVar178._2_2_ = 0; + auVar178._0_2_ = *puVar6; + auVar178._4_2_ = puVar6[1]; + auVar178._6_2_ = 0; + auVar178._8_2_ = puVar6[2]; + auVar178._10_2_ = 0; + auVar178._12_2_ = puVar6[3]; + auVar178._14_2_ = 0; + auVar183._2_2_ = 0; + auVar183._0_2_ = puVar6[4]; + auVar183._4_2_ = puVar6[5]; + auVar183._6_2_ = 0; + auVar183._8_2_ = puVar6[6]; + auVar183._10_2_ = 0; + auVar183._12_2_ = puVar6[7]; + auVar183._14_2_ = 0; + auVar140 = NEON_smin(auVar178,auVar179,4); + auVar89 = NEON_smin(auVar183,auVar187,4); + auVar166 = NEON_smax(auVar178,auVar179,4); + auVar86 = NEON_smax(auVar183,auVar187,4); + auVar174 = NEON_smax(auVar140,auVar182,4); + auVar88 = NEON_smax(auVar89,auVar180,4); + auVar140 = NEON_smin(auVar166,auVar182,4); + auVar166 = NEON_smin(auVar86,auVar180,4); + auVar89 = NEON_smin(auVar174,auVar182,4); + auVar86 = NEON_smin(auVar88,auVar180,4); + auVar89 = NEON_smax(auVar140,auVar89,4); + auVar86 = NEON_smax(auVar166,auVar86,4); + auVar176._0_8_ = + CONCAT26(auVar89._12_2_, + CONCAT24(auVar89._8_2_,CONCAT22(auVar89._4_2_,auVar89._0_2_))); + auVar176._8_2_ = auVar86._0_2_; + auVar176._10_2_ = auVar86._4_2_; + auVar176._12_2_ = auVar86._8_2_; + auVar176._14_2_ = auVar86._12_2_; + puVar68[1] = auVar176._8_8_; + *puVar68 = auVar176._0_8_; + } while (uVar70 < uVar63); + uVar82 = (ulong)((int)uVar82 + uVar79); + puVar54 = puVar54 + uVar79; + if (uVar79 == uVar1 - uVar77) goto LAB_001f6ed8; + } + uVar40 = *(ushort *)((long)puVar54 + uVar80); + uVar19 = puVar54[lVar71]; + uVar76 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + iVar52 = (int)uVar82; + uVar20 = *puVar54; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76) = uVar20; + if (iVar52 + 1 < (int)uVar1) { + uVar40 = *(ushort *)((long)puVar54 + uVar80 + 2); + uVar19 = puVar54[lVar71 + 1]; + uVar20 = puVar54[1]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 2) = uVar20; + if (iVar52 + 2 < (int)uVar1) { + uVar40 = *(ushort *)((long)puVar54 + uVar80 + 4); + uVar19 = puVar54[lVar71 + 2]; + uVar20 = puVar54[2]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 4) = uVar20; + if (iVar52 + 3 < (int)uVar1) { + uVar40 = *(ushort *)((long)puVar54 + uVar80 + 6); + uVar19 = puVar54[lVar71 + 3]; + uVar20 = puVar54[3]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 6) = uVar20; + if (iVar52 + 4 < (int)uVar1) { + uVar40 = *(ushort *)((long)puVar54 + uVar80 + 8); + uVar19 = puVar54[lVar71 + 4]; + uVar20 = puVar54[4]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar21 < uVar20) { + uVar20 = uVar21; + } + if (uVar20 < uVar19) { + uVar20 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 8) = uVar20; + if (iVar52 + 5 < (int)uVar1) { + uVar40 = *(ushort *)((long)puVar54 + uVar80 + 10); + uVar19 = puVar54[lVar71 + 5]; + uVar20 = puVar54[5]; + uVar18 = uVar19; + if (uVar19 < uVar40) { + uVar18 = uVar40; + } + uVar21 = uVar20; + if (uVar18 < uVar20) { + uVar21 = uVar18; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + uVar18 = uVar20; + if (uVar20 < uVar19) { + uVar18 = uVar19; + } + uVar19 = uVar20; + if (uVar18 < uVar20) { + uVar19 = uVar18; + } + if (uVar20 < uVar21) { + uVar21 = uVar20; + } + if (uVar21 < uVar19) { + uVar21 = uVar19; + } + *(ushort *)((long)puVar65 + uVar76 + 10) = uVar21; + if (iVar52 + 6 < (int)uVar1) { + uVar18 = puVar54[lVar71 + 6]; + uVar40 = *(ushort *)((long)puVar54 + uVar80 + 0xc); + uVar20 = puVar54[6]; + uVar19 = uVar18; + if (uVar18 < uVar40) { + uVar19 = uVar40; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar40 < uVar18) { + uVar18 = uVar40; + } + if (uVar18 < uVar20) { + uVar18 = uVar20; + } + if (uVar20 < uVar18) { + uVar18 = uVar20; + } + if (uVar20 < uVar19) { + uVar19 = uVar20; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar76 + 0xc) = uVar19; + } + } + } + } + } + } + } + } +LAB_001f6ed8: + iVar69 = iVar69 + 1; + puVar74 = (ushort *) + ((long)puVar74 + + (-(uVar67 >> 0x1f) & 0xfffffffe00000000 | uVar67 << 1) + ((long)(int)uVar41 + 1) * 2 + ); + puVar64 = puVar64 + (int)uVar83; + if (iVar69 == local_34) { + return; + } + } while( true ); + } + if (iVar69 == 1) { + iVar58 = local_34 + 1; + if (local_34 != 1) { + iVar69 = local_30 - uVar1; + goto LAB_001f5f7c; + } + iVar58 = 2; + } + else { + if (local_34 != 1) { + uVar41 = iVar69 * uVar1; + if (local_34 < 1) { + return; + } + lVar59 = (ulong)uVar1 * 2; + lVar55 = (ulong)uVar1 * -2; + iVar69 = 0; + iVar58 = (uVar41 - 8) - uVar1; + puVar64 = puVar74; +LAB_001f4d54: + iVar61 = iVar69 + -1; + iVar69 = iVar69 + 1; + if (iVar61 < 0) { + iVar61 = 0; + } + uVar80 = 0; + iVar52 = iVar69; + if (local_34 + -1 < iVar69) { + iVar52 = local_34 + -1; + } + uVar83 = uVar1; + if (cVar48 == '\0') { + uVar83 = uVar41; + } + iVar61 = local_30 * iVar61; + iVar52 = local_30 * iVar52; + do { + if ((int)uVar83 <= (int)uVar80) { + do { + if (uVar83 == uVar41) { + local_90 = local_90 + + (-(uVar67 >> 0x20 & 1) & 0xfffffffe00000000 | (uVar81 & 0xffffffff) << 1); + puVar64 = puVar64 + (int)local_30; + if (iVar69 == local_34) { + return; + } + goto LAB_001f4d54; + } + if ((int)uVar80 <= iVar58) { + uVar82 = -(uVar80 >> 0x1f) & 0xfffffffe00000000 | uVar80 << 1; + pauVar57 = (undefined1 (*) [16])((long)puVar74 + uVar82 + (long)iVar61 * 2); + pauVar51 = (undefined1 (*) [16])((long)puVar64 + uVar82); + pauVar49 = (undefined1 (*) [16])((long)puVar74 + uVar82 + (long)iVar52 * 2); + puVar68 = (undefined8 *)(local_90 + uVar82); + do { + puVar45 = *pauVar49; + puVar46 = *pauVar57; + auVar86 = *pauVar49; + pauVar3 = (undefined1 (*) [16])((long)pauVar51 + lVar55); + pauVar4 = (undefined1 (*) [16])((long)pauVar49 + lVar55); + pauVar5 = (undefined1 (*) [16])((long)pauVar57 + lVar55); + auVar166 = *pauVar57; + uVar83 = (int)uVar80 + 8; + uVar80 = (ulong)uVar83; + pauVar57 = pauVar57 + 1; + auVar84 = NEON_umin(*pauVar51,*(undefined1 (*) [16])(*pauVar51 + lVar59),2); + auVar85 = NEON_umin(auVar86,*(undefined1 (*) [16])(puVar45 + lVar59),2); + auVar89 = NEON_umax(*(undefined1 (*) [16])(*pauVar51 + lVar59),*pauVar51,2); + pauVar51 = pauVar51 + 1; + auVar103 = NEON_umin(auVar166,*(undefined1 (*) [16])(puVar46 + lVar59),2); + pauVar49 = pauVar49 + 1; + auVar140 = NEON_umax(*(undefined1 (*) [16])(puVar45 + lVar59),auVar86,2); + auVar88 = NEON_umax(auVar85,*pauVar4,2); + auVar86 = NEON_umax(auVar84,*pauVar3,2); + auVar166 = NEON_umax(*(undefined1 (*) [16])(puVar46 + lVar59),auVar166,2); + auVar87 = NEON_umax(auVar103,*pauVar5,2); + auVar174 = NEON_umin(auVar88,auVar140,2); + auVar96 = NEON_umin(auVar86,auVar89,2); + auVar140 = NEON_umax(auVar140,auVar88,2); + auVar89 = NEON_umax(auVar89,auVar86,2); + auVar86 = NEON_umin(auVar87,auVar166,2); + auVar88 = NEON_umin(auVar96,auVar174,2); + auVar166 = NEON_umax(auVar166,auVar87,2); + auVar89 = NEON_umin(auVar89,auVar140,2); + auVar87 = NEON_umin(*pauVar5,auVar103,2); + auVar140 = NEON_umax(auVar88,auVar86,2); + auVar88 = NEON_umin(*pauVar3,auVar84,2); + auVar174 = NEON_umax(auVar174,auVar96,2); + auVar86 = NEON_umin(auVar166,auVar89,2); + auVar89 = NEON_umin(*pauVar4,auVar85,2); + auVar88 = NEON_umax(auVar88,auVar87,2); + auVar166 = NEON_umin(auVar140,auVar174,2); + auVar140 = NEON_umax(auVar89,auVar88,2); + auVar89 = NEON_umin(auVar166,auVar86,2); + auVar86 = NEON_umax(auVar86,auVar166,2); + auVar166 = NEON_umax(auVar89,auVar140,2); + auVar86 = NEON_umin(auVar166,auVar86,2); + puVar68[1] = auVar86._8_8_; + *puVar68 = auVar86._0_8_; + puVar68 = puVar68 + 2; + } while ((int)uVar83 <= iVar58); + } + uVar83 = uVar41; + } while ((int)uVar41 <= (int)uVar80); + } + uVar63 = (uint)uVar80; + uVar77 = uVar63 - uVar1; + if ((int)uVar63 < (int)uVar1) { + uVar77 = uVar63; + } + uVar82 = -(uVar80 >> 0x1f) & 0xfffffffe00000000 | uVar80 << 1; + uVar79 = uVar63 + uVar1; + if ((int)(uVar41 - uVar1) <= (int)uVar63) { + uVar79 = uVar63; + } + uVar53 = -(ulong)(uVar77 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar77 << 1; + uVar76 = -(ulong)(uVar79 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar79 << 1; + uVar80 = (ulong)(uVar63 + 1); + uVar21 = *(ushort *)((long)puVar74 + uVar82 + (long)iVar61 * 2); + uVar22 = *(ushort *)((long)puVar64 + uVar82); + uVar18 = *(ushort *)((long)puVar74 + uVar76 + (long)iVar61 * 2); + uVar19 = *(ushort *)((long)puVar64 + uVar76); + uVar20 = *(ushort *)((long)puVar74 + uVar76 + (long)iVar52 * 2); + uVar40 = uVar18; + if (uVar21 < uVar18) { + uVar40 = uVar21; + } + if (uVar18 < uVar21) { + uVar18 = uVar21; + } + uVar23 = *(ushort *)((long)puVar74 + uVar82 + (long)iVar52 * 2); + uVar24 = *(ushort *)((long)puVar74 + uVar53 + (long)iVar61 * 2); + uVar21 = uVar19; + if (uVar22 < uVar19) { + uVar21 = uVar22; + } + if (uVar19 < uVar22) { + uVar19 = uVar22; + } + uVar22 = uVar20; + if (uVar23 < uVar20) { + uVar22 = uVar23; + } + uVar25 = *(ushort *)((long)puVar64 + uVar53); + uVar27 = *(ushort *)((long)puVar74 + uVar53 + (long)iVar52 * 2); + if (uVar20 < uVar23) { + uVar20 = uVar23; + } + uVar23 = uVar40; + if (uVar40 < uVar24) { + uVar23 = uVar24; + } + uVar26 = uVar21; + if (uVar25 < uVar21) { + uVar26 = uVar25; + } + if (uVar21 < uVar25) { + uVar21 = uVar25; + } + uVar25 = uVar22; + if (uVar27 < uVar22) { + uVar25 = uVar27; + } + if (uVar22 < uVar27) { + uVar22 = uVar27; + } + uVar27 = uVar21; + if (uVar19 < uVar21) { + uVar27 = uVar19; + } + uVar29 = uVar22; + if (uVar20 < uVar22) { + uVar29 = uVar20; + } + if (uVar21 < uVar19) { + uVar21 = uVar19; + } + uVar19 = uVar23; + if (uVar23 < uVar18) { + uVar19 = uVar18; + } + if (uVar19 < uVar21) { + uVar21 = uVar19; + } + uVar19 = uVar29; + if (uVar27 < uVar29) { + uVar19 = uVar27; + } + if (uVar29 < uVar27) { + uVar29 = uVar27; + } + if (uVar18 < uVar23) { + uVar23 = uVar18; + } + if (uVar19 < uVar23) { + uVar19 = uVar23; + } + if (uVar22 < uVar20) { + uVar22 = uVar20; + } + if (uVar22 < uVar21) { + uVar21 = uVar22; + } + if (uVar29 < uVar19) { + uVar19 = uVar29; + } + uVar18 = uVar19; + if (uVar21 < uVar19) { + uVar18 = uVar21; + } + if (uVar24 < uVar40) { + uVar40 = uVar24; + } + if (uVar26 < uVar40) { + uVar26 = uVar40; + } + if (uVar26 < uVar25) { + uVar26 = uVar25; + } + if (uVar26 < uVar18) { + uVar26 = uVar18; + } + if (uVar19 < uVar21) { + uVar19 = uVar21; + } + if (uVar19 < uVar26) { + uVar26 = uVar19; + } + *(ushort *)(local_90 + uVar82) = uVar26; + } while( true ); + } + iVar58 = iVar69 + 1; + local_34 = iVar69; + } + iVar69 = 0; + uVar83 = uVar1; + local_30 = uVar1; +LAB_001f5f7c: + if (0 < local_34) { + iVar61 = 0; + puVar64 = (ushort *)(local_90 + 0x10); + do { + puVar65 = puVar64 + -8; + uVar67 = -(ulong)(-local_30 >> 0x1f) & 0xfffffffe00000000 | (ulong)-local_30 << 1; + if (iVar61 < 1) { + uVar67 = 0; + } + uVar80 = -(ulong)(local_30 >> 0x1f) & 0xfffffffe00000000 | (ulong)local_30 << 1; + if (iVar58 + -2 <= iVar61) { + uVar80 = 0; + } + puVar54 = (ushort *)((long)puVar74 + uVar67); + puVar6 = (ushort *)((long)puVar74 + uVar80); + if ((uVar1 < 10 || + (puVar65 < (ushort *)((long)puVar74 + uVar67 + 0x10) && puVar54 < puVar64 || + puVar65 < (ushort *)((long)puVar74 + uVar80 + 0x10) && puVar6 < puVar64)) || + (puVar65 < puVar74 + 8 && puVar74 < puVar64)) { + lVar55 = 0; + do { + uVar20 = puVar54[lVar55]; + uVar19 = puVar74[lVar55]; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (puVar6[lVar55] < uVar19) { + uVar19 = puVar6[lVar55]; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar65[lVar55] = uVar19; + lVar55 = lVar55 + 1; + } while ((int)lVar55 < (int)uVar1); + } + else { + uVar77 = -((uint)((ulong)puVar54 >> 1) & 7) & 7; + if (uVar1 < uVar77) { + uVar77 = uVar1; + } + puVar50 = puVar74; + if (uVar77 == 0) { +LAB_001f6f00: + uVar81 = (ulong)uVar77; + } + else { + uVar19 = *puVar54; + puVar50 = puVar74 + 1; + uVar20 = *puVar74; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar6 < uVar19) { + uVar19 = *puVar6; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-8] = uVar19; + if (uVar77 == 1) goto LAB_001f6f00; + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar20 = puVar74[1]; + puVar54 = (ushort *)((long)puVar50 + uVar80); + puVar50 = puVar74 + 2; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar54 < uVar19) { + uVar19 = *puVar54; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-7] = uVar19; + if (uVar77 == 2) goto LAB_001f6f00; + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar20 = puVar74[2]; + puVar54 = (ushort *)((long)puVar50 + uVar80); + puVar50 = puVar74 + 3; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar54 < uVar19) { + uVar19 = *puVar54; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-6] = uVar19; + if (uVar77 == 3) goto LAB_001f6f00; + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar20 = puVar74[3]; + puVar54 = (ushort *)((long)puVar50 + uVar80); + puVar50 = puVar74 + 4; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar54 < uVar19) { + uVar19 = *puVar54; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-5] = uVar19; + if (uVar77 == 4) goto LAB_001f6f00; + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar20 = puVar74[4]; + puVar54 = (ushort *)((long)puVar50 + uVar80); + puVar50 = puVar74 + 5; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar54 < uVar19) { + uVar19 = *puVar54; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-4] = uVar19; + if (uVar77 == 5) goto LAB_001f6f00; + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar20 = puVar74[5]; + puVar54 = (ushort *)((long)puVar50 + uVar80); + puVar50 = puVar74 + 6; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar54 < uVar19) { + uVar19 = *puVar54; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-3] = uVar19; + if (uVar77 == 7) { + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar81 = 7; + uVar20 = puVar74[6]; + puVar54 = (ushort *)((long)puVar50 + uVar80); + puVar50 = puVar74 + 7; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*puVar54 < uVar19) { + uVar19 = *puVar54; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + puVar64[-2] = uVar19; + } + else { + uVar81 = 6; + } + } + uVar63 = ((uVar1 - uVar77) - 8 >> 3) + 1; + uVar79 = uVar63 * 8; + if (6 < uVar41 - uVar77) { + lVar59 = (ulong)uVar77 * 2; + lVar55 = 0; + uVar70 = 0; + do { + puVar54 = (ushort *)((long)puVar74 + lVar55 + lVar59); + puVar6 = (ushort *)((long)puVar74 + lVar55 + lVar59 + uVar67); + puVar68 = (undefined8 *)((long)puVar65 + lVar55 + lVar59); + puVar8 = (ushort *)((long)puVar74 + lVar55 + uVar80 + lVar59); + uVar70 = uVar70 + 1; + lVar55 = lVar55 + 0x10; + auVar130._2_2_ = 0; + auVar130._0_2_ = *puVar6; + auVar130._4_2_ = puVar6[1]; + auVar130._6_2_ = 0; + auVar130._8_2_ = puVar6[2]; + auVar130._10_2_ = 0; + auVar130._12_2_ = puVar6[3]; + auVar130._14_2_ = 0; + auVar118._2_2_ = 0; + auVar118._0_2_ = *puVar54; + auVar118._4_2_ = puVar54[1]; + auVar118._6_2_ = 0; + auVar118._8_2_ = puVar54[2]; + auVar118._10_2_ = 0; + auVar118._12_2_ = puVar54[3]; + auVar118._14_2_ = 0; + auVar112._2_2_ = 0; + auVar112._0_2_ = puVar6[4]; + auVar112._4_2_ = puVar6[5]; + auVar112._6_2_ = 0; + auVar112._8_2_ = puVar6[6]; + auVar112._10_2_ = 0; + auVar112._12_2_ = puVar6[7]; + auVar112._14_2_ = 0; + auVar90._2_2_ = 0; + auVar90._0_2_ = puVar54[4]; + auVar90._4_2_ = puVar54[5]; + auVar90._6_2_ = 0; + auVar90._8_2_ = puVar54[6]; + auVar90._10_2_ = 0; + auVar90._12_2_ = puVar54[7]; + auVar90._14_2_ = 0; + auVar104._2_2_ = 0; + auVar104._0_2_ = *puVar8; + auVar104._4_2_ = puVar8[1]; + auVar104._6_2_ = 0; + auVar104._8_2_ = puVar8[2]; + auVar104._10_2_ = 0; + auVar104._12_2_ = puVar8[3]; + auVar104._14_2_ = 0; + auVar122._2_2_ = 0; + auVar122._0_2_ = puVar8[4]; + auVar122._4_2_ = puVar8[5]; + auVar122._6_2_ = 0; + auVar122._8_2_ = puVar8[6]; + auVar122._10_2_ = 0; + auVar122._12_2_ = puVar8[7]; + auVar122._14_2_ = 0; + auVar89 = NEON_smax(auVar118,auVar130,4); + auVar166 = NEON_smax(auVar90,auVar112,4); + auVar140 = NEON_smin(auVar118,auVar130,4); + auVar86 = NEON_smin(auVar90,auVar112,4); + auVar89 = NEON_smin(auVar89,auVar104,4); + auVar166 = NEON_smin(auVar166,auVar122,4); + auVar89 = NEON_smax(auVar89,auVar140,4); + auVar86 = NEON_smax(auVar166,auVar86,4); + auVar97._0_8_ = + CONCAT26(auVar89._12_2_, + CONCAT24(auVar89._8_2_,CONCAT22(auVar89._4_2_,auVar89._0_2_))); + auVar97._8_2_ = auVar86._0_2_; + auVar97._10_2_ = auVar86._4_2_; + auVar97._12_2_ = auVar86._8_2_; + auVar97._14_2_ = auVar86._12_2_; + puVar68[1] = auVar97._8_8_; + *puVar68 = auVar97._0_8_; + } while (uVar70 < uVar63); + uVar81 = (ulong)((int)uVar81 + uVar79); + puVar50 = puVar50 + uVar79; + if (uVar79 == uVar1 - uVar77) goto LAB_001f6470; + } + uVar19 = *(ushort *)((long)puVar50 + uVar67); + uVar82 = -(uVar81 >> 0x1f) & 0xfffffffe00000000 | uVar81 << 1; + uVar20 = *puVar50; + iVar52 = (int)uVar81; + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (*(ushort *)((long)puVar50 + uVar80) < uVar19) { + uVar19 = *(ushort *)((long)puVar50 + uVar80); + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82) = uVar19; + if (iVar52 + 1 < (int)uVar1) { + uVar19 = *(ushort *)((long)puVar50 + uVar67 + 2); + uVar20 = puVar50[1]; + uVar40 = *(ushort *)((long)puVar50 + uVar80 + 2); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82 + 2) = uVar19; + if (iVar52 + 2 < (int)uVar1) { + uVar19 = *(ushort *)((long)puVar50 + uVar67 + 4); + uVar20 = puVar50[2]; + uVar40 = *(ushort *)((long)puVar50 + uVar80 + 4); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82 + 4) = uVar19; + if (iVar52 + 3 < (int)uVar1) { + uVar19 = *(ushort *)((long)puVar50 + uVar67 + 6); + uVar20 = puVar50[3]; + uVar40 = *(ushort *)((long)puVar50 + uVar80 + 6); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82 + 6) = uVar19; + if (iVar52 + 4 < (int)uVar1) { + uVar19 = *(ushort *)((long)puVar50 + uVar67 + 8); + uVar20 = puVar50[4]; + uVar40 = *(ushort *)((long)puVar50 + uVar80 + 8); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82 + 8) = uVar19; + if (iVar52 + 5 < (int)uVar1) { + uVar19 = *(ushort *)((long)puVar50 + uVar67 + 10); + uVar20 = puVar50[5]; + uVar40 = *(ushort *)((long)puVar50 + uVar80 + 10); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82 + 10) = uVar19; + if (iVar52 + 6 < (int)uVar1) { + uVar19 = *(ushort *)((long)puVar50 + uVar67 + 0xc); + uVar20 = puVar50[6]; + uVar40 = *(ushort *)((long)puVar50 + uVar80 + 0xc); + uVar18 = uVar19; + if (uVar20 < uVar19) { + uVar18 = uVar20; + } + if (uVar19 < uVar20) { + uVar19 = uVar20; + } + if (uVar40 < uVar19) { + uVar19 = uVar40; + } + if (uVar19 < uVar18) { + uVar19 = uVar18; + } + *(ushort *)((long)puVar65 + uVar82 + 0xc) = uVar19; + } + } + } + } + } + } + } +LAB_001f6470: + iVar61 = iVar61 + 1; + puVar74 = puVar74 + (long)iVar69 + (long)(int)uVar41 + 1; + puVar64 = puVar64 + (int)uVar83; + } while (iVar61 != local_34); + } + return; +} + + +================================================================== + +### FUNC 001fbfc0 (29628 bytes) name=FUN_001fbfc0 + +void FUN_001fbfc0(uint *param_1,long param_2,int param_3) + +{ + uint uVar1; + int iVar2; + undefined1 (*pauVar3) [16]; + undefined1 (*pauVar4) [16]; + undefined1 (*pauVar5) [16]; + short *psVar6; + long lVar7; + short *psVar8; + short *psVar9; + long lVar10; + short *psVar11; + short sVar12; + short sVar13; + short sVar14; + short sVar15; + short sVar16; + short sVar17; + short sVar18; + short sVar19; + short sVar20; + short sVar21; + short sVar22; + short sVar23; + short sVar24; + short sVar25; + short sVar26; + short sVar27; + short sVar28; + short sVar29; + short sVar30; + short sVar31; + short sVar32; + short sVar33; + short sVar34; + short sVar35; + short sVar36; + short sVar37; + short sVar38; + short sVar39; + short sVar40; + short sVar41; + short sVar42; + uint uVar43; + int iVar44; + int iVar45; + int iVar46; + undefined1 *puVar47; + undefined1 *puVar48; + bool bVar49; + char cVar50; + undefined1 (*pauVar51) [16]; + short *psVar52; + undefined1 (*pauVar53) [16]; + int iVar54; + ulong uVar55; + short *psVar56; + long lVar57; + long lVar58; + undefined1 (*pauVar59) [16]; + int iVar60; + long lVar61; + long lVar62; + int iVar63; + long lVar64; + uint uVar65; + short *psVar66; + short *psVar67; + long lVar68; + ulong uVar69; + undefined8 *puVar70; + int iVar71; + uint uVar72; + long lVar73; + ulong uVar74; + long lVar75; + short *psVar76; + ulong uVar77; + ulong uVar78; + uint uVar79; + int iVar80; + uint uVar81; + ulong uVar82; + ulong uVar83; + ulong uVar84; + uint uVar85; + undefined1 auVar86 [16]; + undefined1 auVar87 [16]; + undefined1 auVar88 [16]; + undefined1 auVar89 [16]; + undefined1 auVar90 [16]; + undefined1 auVar91 [16]; + undefined1 auVar92 [16]; + undefined1 auVar93 [16]; + undefined1 auVar94 [16]; + undefined1 auVar95 [16]; + undefined1 auVar96 [16]; + undefined1 auVar97 [16]; + undefined1 auVar98 [16]; + undefined1 auVar99 [16]; + undefined1 auVar100 [16]; + undefined1 auVar101 [16]; + undefined1 auVar102 [16]; + undefined1 auVar103 [16]; + undefined1 auVar104 [16]; + undefined1 auVar105 [16]; + undefined1 auVar106 [16]; + undefined1 auVar107 [16]; + undefined1 auVar108 [16]; + undefined1 auVar109 [16]; + undefined1 auVar110 [16]; + undefined1 auVar111 [16]; + undefined1 auVar112 [16]; + undefined1 auVar113 [16]; + undefined1 auVar114 [16]; + undefined1 auVar115 [16]; + undefined1 auVar116 [16]; + undefined1 auVar117 [16]; + undefined1 auVar118 [16]; + undefined1 auVar119 [16]; + undefined1 auVar120 [16]; + undefined1 auVar121 [16]; + undefined1 auVar122 [16]; + undefined1 auVar123 [16]; + undefined1 auVar124 [16]; + undefined1 auVar125 [16]; + undefined1 auVar126 [16]; + undefined1 auVar127 [16]; + undefined1 auVar128 [16]; + undefined1 auVar129 [16]; + undefined1 auVar130 [16]; + undefined1 auVar131 [16]; + undefined1 auVar132 [16]; + undefined1 auVar133 [16]; + undefined1 auVar134 [16]; + undefined1 auVar135 [16]; + undefined1 auVar136 [16]; + undefined1 auVar137 [16]; + undefined1 auVar138 [16]; + undefined1 auVar139 [16]; + undefined1 auVar140 [16]; + undefined1 auVar141 [16]; + undefined1 auVar142 [16]; + undefined1 auVar143 [16]; + undefined1 auVar144 [16]; + undefined1 auVar145 [16]; + undefined1 auVar146 [16]; + long lVar147; + undefined1 auVar148 [16]; + long lVar149; + undefined1 auVar150 [16]; + undefined1 auVar151 [16]; + undefined1 auVar152 [16]; + undefined1 auVar153 [16]; + undefined1 auVar154 [16]; + undefined1 auVar155 [16]; + undefined1 auVar156 [16]; + undefined1 auVar157 [16]; + undefined1 auVar158 [16]; + undefined1 auVar159 [16]; + undefined1 auVar160 [16]; + undefined1 auVar161 [16]; + undefined1 auVar162 [16]; + undefined1 auVar163 [16]; + undefined1 auVar164 [16]; + undefined1 auVar165 [16]; + undefined1 auVar166 [16]; + undefined1 auVar167 [16]; + undefined1 auVar168 [16]; + undefined1 auVar169 [16]; + undefined1 auVar170 [16]; + undefined1 auVar171 [16]; + undefined1 auVar172 [16]; + undefined1 auVar173 [16]; + undefined1 auVar174 [16]; + undefined1 auVar175 [16]; + undefined1 auVar176 [16]; + undefined1 auVar177 [16]; + undefined1 auVar178 [16]; + undefined1 auVar179 [16]; + undefined1 auVar180 [16]; + undefined1 auVar181 [16]; + undefined1 auVar182 [16]; + undefined1 auVar183 [16]; + undefined1 auVar184 [16]; + undefined1 auVar185 [16]; + undefined1 auVar186 [16]; + undefined1 auVar187 [16]; + undefined1 auVar188 [16]; + undefined1 auVar189 [16]; + long local_90; + int local_34; + uint local_30; + int local_2c; + int local_20; + + uVar69 = *(ulong *)(param_2 + 0x50); + uVar43 = *param_1 >> 3 & 0x1ff; + local_90 = *(long *)(param_2 + 0x10); + uVar1 = uVar43 + 1; + uVar83 = uVar69 >> 1; + local_34 = **(int **)(param_2 + 0x40); + uVar85 = (uint)uVar83; + uVar82 = *(ulong *)(param_1 + 0x14); + psVar76 = *(short **)(param_1 + 4); + iVar71 = (*(int **)(param_2 + 0x40))[1]; + cVar50 = cv::checkHardwareSupport(3); + local_30 = (uint)(uVar82 >> 1); + if (cVar50 == '\0') { + cVar50 = cv::checkHardwareSupport(100); + } + if (param_3 != 3) { + if (param_3 != 5) { + return; + } + if (iVar71 == 1) { + iVar60 = local_34 + 1; + if (local_34 != 1) { + uVar69 = (ulong)(local_30 - uVar1); + goto LAB_001fd85c; + } + iVar60 = 2; + } + else { + if (local_34 != 1) { + uVar43 = iVar71 * uVar1; + if (local_34 < 1) { + return; + } + iVar63 = local_34 + -1; + iVar60 = uVar1 * -2; + uVar85 = uVar1 * 2; + iVar71 = (uVar43 - 8) + iVar60; + local_2c = 0; + local_20 = 1; + psVar66 = psVar76; +LAB_001fc428: + uVar82 = 0; + iVar54 = local_2c + -2; + if (iVar54 < 0) { + iVar54 = 0; + } + iVar46 = local_2c + -1; + local_2c = local_20; + if (iVar46 < 0) { + iVar46 = 0; + } + iVar44 = local_20; + if (iVar63 < local_20) { + iVar44 = iVar63; + } + iVar2 = local_20 + 1; + iVar45 = iVar63; + if (iVar2 < iVar63) { + iVar45 = iVar2; + } + iVar54 = local_30 * iVar54; + iVar46 = local_30 * iVar46; + iVar44 = local_30 * iVar44; + iVar45 = local_30 * iVar45; + uVar79 = uVar43; + if (cVar50 != '\0') { + uVar79 = uVar85; + } +LAB_001fc4a8: + do { + if ((int)uVar79 <= (int)uVar82) { + do { + if (uVar79 == uVar43) { + bVar49 = local_20 == local_34; + local_90 = local_90 + + (-(uVar69 >> 0x20 & 1) & 0xfffffffe00000000 | (uVar83 & 0xffffffff) << 1) + ; + psVar66 = psVar66 + (int)local_30; + local_20 = iVar2; + if (bVar49) { + return; + } + goto LAB_001fc428; + } + iVar80 = (int)uVar82; + uVar79 = uVar43; + if (iVar71 < iVar80) goto LAB_001fc4a8; + lVar61 = (long)iVar80; + lVar57 = 0; + do { + uVar65 = (int)uVar82 + 8; + uVar82 = (ulong)uVar65; + lVar64 = lVar57 + (lVar61 - (ulong)uVar85) * 2; + lVar73 = lVar57 + (lVar61 - (int)uVar1) * 2; + auVar88 = *(undefined1 (*) [16])((long)psVar76 + lVar64 + (long)iVar46 * 2); + lVar75 = lVar57 + ((int)uVar1 + lVar61) * 2; + lVar58 = lVar57 + ((ulong)uVar85 + lVar61) * 2; + lVar62 = lVar57 + (long)iVar80 * 2; + auVar166 = *(undefined1 (*) [16])((long)psVar76 + lVar75 + (long)iVar46 * 2); + auVar91 = *(undefined1 (*) [16])((long)psVar76 + lVar62 + (long)iVar46 * 2); + auVar140 = *(undefined1 (*) [16])((long)psVar76 + lVar58 + (long)iVar54 * 2); + auVar90 = *(undefined1 (*) [16])((long)psVar76 + lVar62 + (long)iVar44 * 2); + auVar167 = NEON_smax(auVar166,auVar91,2); + auVar174 = *(undefined1 (*) [16])((long)psVar76 + lVar62 + (long)iVar54 * 2); + auVar89 = *(undefined1 (*) [16])((long)psVar76 + lVar73 + (long)iVar54 * 2); + auVar105 = NEON_smin(auVar91,auVar166,2); + auVar166 = *(undefined1 (*) [16])((long)psVar76 + lVar75 + (long)iVar54 * 2); + auVar181 = NEON_smin(auVar140,auVar88,2); + auVar187 = *(undefined1 (*) [16])((long)psVar76 + lVar64 + (long)iVar44 * 2); + auVar91 = *(undefined1 (*) [16])((long)psVar76 + lVar64 + (long)iVar54 * 2); + auVar87 = *(undefined1 (*) [16])((long)psVar76 + lVar73 + (long)iVar44 * 2); + auVar161 = NEON_smax(auVar88,auVar140,2); + auVar88 = *(undefined1 (*) [16])((long)psVar76 + lVar62 + (long)iVar45 * 2); + auVar140 = *(undefined1 (*) [16])((long)psVar76 + lVar73 + (long)iVar45 * 2); + auVar183 = NEON_smax(auVar181,auVar166,2); + auVar86 = NEON_smin(auVar87,auVar90,2); + auVar98 = *(undefined1 (*) [16])((long)psVar76 + lVar58 + (long)iVar45 * 2); + auVar148 = NEON_smax(auVar90,auVar87,2); + auVar152 = NEON_smin(auVar140,auVar88,2); + auVar150 = NEON_smax(auVar86,auVar187,2); + auVar131 = NEON_smax(auVar88,auVar140,2); + auVar173 = NEON_smax(auVar174,auVar89,2); + auVar88 = *(undefined1 (*) [16])((long)psVar76 + lVar58 + (long)iVar46 * 2); + auVar175 = NEON_smin(*(undefined1 (*) [16])((long)psVar66 + lVar64), + *(undefined1 (*) [16])((long)psVar66 + lVar73),2); + auVar107 = NEON_smin(auVar89,auVar174,2); + auVar140 = *(undefined1 (*) [16])((long)psVar76 + lVar58 + (long)iVar44 * 2); + auVar90 = *(undefined1 (*) [16])((long)psVar76 + lVar75 + (long)iVar45 * 2); + auVar113 = NEON_smin(*(undefined1 (*) [16])((long)psVar66 + lVar75), + *(undefined1 (*) [16])((long)psVar66 + lVar58),2); + auVar174 = *(undefined1 (*) [16])((long)psVar76 + lVar64 + (long)iVar45 * 2); + auVar182 = NEON_smin(auVar166,auVar181,2); + auVar166 = *(undefined1 (*) [16])((long)psVar76 + lVar75 + (long)iVar44 * 2); + auVar87 = NEON_smax(auVar161,auVar183,2); + lVar57 = lVar57 + 0x10; + auVar139 = NEON_smax(*(undefined1 (*) [16])((long)psVar66 + lVar73), + *(undefined1 (*) [16])((long)psVar66 + lVar64),2); + auVar151 = NEON_smax(*(undefined1 (*) [16])((long)psVar66 + lVar58), + *(undefined1 (*) [16])((long)psVar66 + lVar75),2); + auVar89 = *(undefined1 (*) [16])((long)psVar76 + lVar73 + (long)iVar46 * 2); + auVar177 = NEON_smin(auVar90,auVar98,2); + auVar176 = NEON_smin(auVar140,auVar174,2); + auVar178 = NEON_smax(auVar175,auVar88,2); + auVar181 = NEON_smax(auVar113,*(undefined1 (*) [16])((long)psVar66 + lVar62),2); + auVar185 = NEON_smin(auVar88,auVar175,2); + auVar88 = NEON_smin(*(undefined1 (*) [16])((long)psVar66 + lVar62),auVar113,2); + auVar175 = NEON_smax(auVar105,auVar89,2); + auVar105 = NEON_smin(auVar89,auVar105,2); + auVar186 = NEON_smax(auVar177,auVar152,2); + auVar89 = NEON_smax(auVar151,auVar181,2); + auVar151 = NEON_smin(auVar181,auVar151,2); + auVar181 = NEON_smax(auVar167,auVar175,2); + auVar113 = NEON_smin(auVar166,auVar176,2); + auVar177 = NEON_smin(auVar152,auVar177,2); + auVar98 = NEON_smax(auVar98,auVar90,2); + auVar175 = NEON_smin(auVar175,auVar167,2); + auVar168 = NEON_smax(auVar185,auVar105,2); + auVar152 = NEON_smax(auVar107,auVar91,2); + auVar90 = NEON_smin(auVar187,auVar86,2); + auVar167 = NEON_smin(auVar131,auVar98,2); + auVar161 = NEON_smin(auVar183,auVar161,2); + auVar86 = NEON_smin(auVar91,auVar107,2); + auVar91 = NEON_smax(auVar148,auVar150,2); + auVar150 = NEON_smin(auVar150,auVar148,2); + auVar180 = NEON_smax(auVar173,auVar152,2); + auVar98 = NEON_smax(auVar98,auVar131,2); + auVar107 = NEON_smin(auVar152,auVar173,2); + auVar131 = NEON_smax(auVar177,auVar113,2); + auVar187 = NEON_smax(auVar139,auVar178,2); + auVar184 = NEON_smax(auVar90,auVar88,2); + auVar174 = NEON_smax(auVar174,auVar140,2); + auVar188 = NEON_smax(auVar182,auVar86,2); + auVar183 = NEON_smin(auVar180,auVar87,2); + auVar173 = NEON_smin(auVar89,auVar91,2); + auVar140 = NEON_smin(auVar178,auVar139,2); + auVar166 = NEON_smax(auVar176,auVar166,2); + auVar139 = NEON_smin(auVar181,auVar187,2); + auVar152 = NEON_smin(auVar107,auVar161,2); + auVar179 = NEON_smax(auVar161,auVar107,2); + auVar176 = NEON_smin(auVar166,auVar174,2); + auVar161 = NEON_smin(auVar173,auVar184,2); + auVar178 = NEON_smin(auVar167,auVar186,2); + auVar148 = NEON_smin(auVar183,auVar188,2); + auVar174 = NEON_smax(auVar174,auVar166,2); + auVar189 = NEON_smax(auVar188,auVar183,2); + auVar167 = NEON_smax(auVar186,auVar167,2); + auVar183 = NEON_smin(auVar139,auVar168,2); + auVar188 = NEON_smax(auVar168,auVar139,2); + auVar139 = NEON_smin(auVar175,auVar140,2); + auVar107 = NEON_smax(auVar140,auVar175,2); + auVar175 = NEON_smax(auVar184,auVar173,2); + auVar184 = NEON_smin(auVar151,auVar150,2); + auVar151 = NEON_smax(auVar150,auVar151,2); + auVar150 = NEON_smin(auVar174,auVar167,2); + auVar166 = NEON_smax(auVar178,auVar176,2); + auVar178 = NEON_smin(auVar176,auVar178,2); + auVar140 = NEON_smin(auVar86,auVar182,2); + auVar176 = NEON_smin(auVar166,auVar98,2); + auVar166 = NEON_smax(auVar98,auVar166,2); + auVar168 = NEON_smin(auVar150,auVar131,2); + auVar186 = NEON_smax(auVar131,auVar150,2); + auVar150 = NEON_smax(auVar167,auVar174,2); + auVar167 = NEON_smax(auVar179,auVar189,2); + auVar98 = NEON_smax(auVar187,auVar181,2); + auVar174 = NEON_smin(auVar113,auVar177,2); + auVar173 = NEON_smax(auVar168,auVar178,2); + auVar177 = NEON_smax(auVar87,auVar180,2); + auVar180 = NEON_smin(auVar105,auVar185,2); + auVar87 = NEON_smax(auVar107,auVar188,2); + auVar86 = NEON_smin(auVar188,auVar107,2); + auVar131 = NEON_smin(auVar152,auVar148,2); + auVar185 = NEON_smin(auVar150,auVar166,2); + auVar181 = NEON_smax(auVar148,auVar152,2); + auVar148 = NEON_smax(auVar166,auVar150,2); + auVar105 = NEON_smax(auVar180,auVar140,2); + auVar150 = NEON_smin(auVar178,auVar168,2); + auVar187 = NEON_smin(auVar88,auVar90,2); + auVar168 = NEON_smax(auVar176,auVar186,2); + auVar182 = NEON_smin(auVar139,auVar183,2); + auVar107 = NEON_smax(auVar183,auVar139,2); + auVar89 = NEON_smax(auVar91,auVar89,2); + auVar88 = NEON_smin(auVar184,auVar161,2); + auVar188 = NEON_smax(auVar182,auVar131,2); + auVar152 = NEON_smin(auVar177,auVar98,2); + auVar178 = NEON_smin(auVar89,auVar185,2); + auVar166 = NEON_smax(auVar161,auVar184,2); + auVar139 = NEON_smax(auVar151,auVar175,2); + auVar113 = NEON_smin(auVar175,auVar151,2); + auVar161 = NEON_smin(auVar140,auVar180,2); + auVar175 = NEON_smax(auVar173,auVar166,2); + auVar91 = NEON_smin(auVar189,auVar179,2); + auVar140 = NEON_smin(auVar167,auVar87,2); + auVar90 = NEON_smin(auVar186,auVar176,2); + auVar183 = NEON_smin(auVar166,auVar173,2); + auVar179 = NEON_smax(auVar174,auVar187,2); + auVar180 = NEON_smin(auVar140,auVar105,2); + auVar176 = NEON_smax(auVar105,auVar140,2); + auVar189 = NEON_smin(auVar181,auVar107,2); + auVar184 = NEON_smin(auVar139,auVar168,2); + auVar105 = NEON_smax(auVar107,auVar181,2); + auVar181 = NEON_smin(auVar152,auVar188,2); + auVar173 = NEON_smax(auVar188,auVar152,2); + auVar186 = NEON_smin(auVar91,auVar86,2); + auVar151 = NEON_smax(auVar86,auVar91,2); + auVar140 = NEON_smax(auVar150,auVar88,2); + auVar152 = NEON_smax(auVar98,auVar177,2); + auVar91 = NEON_smin(auVar187,auVar174,2); + auVar166 = NEON_smin(auVar178,auVar140,2); + auVar98 = NEON_smax(auVar91,auVar161,2); + auVar161 = NEON_smax(auVar168,auVar139,2); + auVar91 = NEON_smax(auVar90,auVar113,2); + auVar107 = NEON_smin(auVar184,auVar179,2); + auVar179 = NEON_smax(auVar179,auVar184,2); + auVar177 = NEON_smin(auVar175,auVar148,2); + auVar148 = NEON_smax(auVar148,auVar175,2); + auVar139 = NEON_smax(auVar140,auVar178,2); + auVar168 = NEON_smin(auVar113,auVar90,2); + auVar113 = NEON_smin(auVar131,auVar182,2); + auVar86 = NEON_smin(auVar186,auVar181,2); + auVar174 = NEON_smax(auVar105,auVar176,2); + auVar140 = NEON_smax(auVar87,auVar167,2); + auVar187 = NEON_smax(auVar177,auVar179,2); + auVar177 = NEON_smin(auVar179,auVar177,2); + auVar90 = NEON_smin(auVar189,auVar180,2); + auVar175 = NEON_smin(auVar88,auVar150,2); + auVar182 = NEON_smax(auVar180,auVar189,2); + auVar178 = NEON_smin(auVar173,auVar151,2); + auVar88 = NEON_smax(auVar151,auVar173,2); + auVar167 = NEON_smin(auVar183,auVar107,2); + auVar151 = NEON_smax(auVar107,auVar183,2); + auVar87 = NEON_smin(auVar161,auVar148,2); + auVar150 = NEON_smax(auVar148,auVar161,2); + auVar148 = NEON_smax(auVar185,auVar89,2); + auVar179 = NEON_smin(auVar139,auVar91,2); + auVar107 = NEON_smax(auVar181,auVar186,2); + auVar131 = NEON_smax(auVar91,auVar139,2); + auVar180 = NEON_smin(auVar113,auVar90,2); + auVar181 = NEON_smin(auVar176,auVar105,2); + auVar176 = NEON_smax(auVar90,auVar113,2); + auVar183 = NEON_smin(auVar86,auVar182,2); + auVar91 = NEON_smin(auVar168,auVar166,2); + auVar90 = NEON_smin(auVar148,auVar150,2); + auVar173 = NEON_smax(auVar166,auVar168,2); + auVar105 = NEON_smax(auVar140,auVar88,2); + auVar139 = NEON_smin(auVar88,auVar140,2); + auVar89 = NEON_smin(auVar175,auVar167,2); + auVar166 = NEON_smin(auVar131,auVar87,2); + auVar182 = NEON_smax(auVar182,auVar86,2); + auVar168 = NEON_smax(auVar174,auVar178,2); + auVar140 = NEON_smax(auVar151,auVar91,2); + auVar113 = NEON_smax(auVar167,auVar175,2); + auVar87 = NEON_smax(auVar87,auVar131,2); + auVar161 = NEON_smin(auVar91,auVar151,2); + auVar167 = NEON_smax(auVar187,auVar179,2); + auVar88 = NEON_smin(auVar107,auVar181,2); + auVar175 = NEON_smin(auVar178,auVar174,2); + auVar86 = NEON_smax(auVar181,auVar107,2); + auVar181 = NEON_smin(auVar173,auVar177,2); + auVar151 = NEON_smax(auVar150,auVar148,2); + auVar91 = NEON_smax(auVar140,auVar182,2); + auVar87 = NEON_smin(auVar105,auVar87,2); + auVar131 = NEON_smin(auVar139,auVar166,2); + auVar166 = NEON_smin(auVar152,auVar90,2); + auVar139 = NEON_smax(auVar177,auVar173,2); + auVar107 = NEON_smin(auVar179,auVar187,2); + auVar140 = NEON_smin(auVar168,auVar167,2); + auVar105 = NEON_smax(auVar113,auVar176,2); + auVar174 = NEON_smax(auVar89,auVar180,2); + auVar90 = NEON_smax(auVar161,auVar183,2); + auVar140 = NEON_smax(auVar98,auVar140,2); + auVar91 = NEON_smin(auVar91,auVar151,2); + auVar88 = NEON_smax(auVar181,auVar88,2); + auVar90 = NEON_smin(auVar166,auVar90,2); + auVar89 = NEON_smin(auVar87,auVar105,2); + auVar166 = NEON_smin(auVar86,auVar139,2); + auVar174 = NEON_smax(auVar174,auVar131,2); + auVar87 = NEON_smin(auVar175,auVar107,2); + auVar91 = NEON_smin(auVar140,auVar91,2); + auVar166 = NEON_smax(auVar89,auVar166,2); + auVar140 = NEON_smin(auVar174,auVar88,2); + auVar88 = NEON_smax(auVar90,auVar87,2); + auVar166 = NEON_smax(auVar91,auVar166,2); + auVar88 = NEON_smin(auVar88,auVar140,2); + auVar88 = NEON_smax(auVar166,auVar88,2); + ((undefined8 *)(local_90 + lVar62))[1] = auVar88._8_8_; + *(undefined8 *)(local_90 + lVar62) = auVar88._0_8_; + } while ((int)uVar65 <= iVar71); + } while ((int)uVar43 <= (int)uVar65); + } + uVar84 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar81 = (uint)uVar82; + uVar65 = uVar81 - uVar1; + if ((int)uVar81 < (int)uVar1) { + uVar65 = uVar81; + } + uVar78 = -(ulong)(uVar65 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar65 << 1; + uVar72 = iVar60 + uVar81; + if ((int)uVar81 < (int)uVar85) { + uVar72 = uVar65; + } + uVar55 = -(ulong)(uVar72 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar72 << 1; + sVar18 = *(short *)((long)psVar76 + uVar78 + (long)iVar54 * 2); + sVar19 = *(short *)((long)psVar76 + uVar84 + (long)iVar54 * 2); + uVar65 = uVar81 + uVar1; + if ((int)(uVar43 - uVar1) <= (int)uVar81) { + uVar65 = uVar81; + } + sVar20 = *(short *)((long)psVar76 + uVar55 + (long)iVar54 * 2); + uVar72 = uVar81 + uVar85; + if ((int)(uVar43 + iVar60) <= (int)uVar81) { + uVar72 = uVar65; + } + uVar74 = -(ulong)(uVar72 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar72 << 1; + sVar42 = sVar18; + if (sVar19 < sVar18) { + sVar42 = sVar19; + } + if (sVar18 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar42 < sVar20) { + sVar19 = sVar42; + } + uVar77 = -(ulong)(uVar65 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar65 << 1; + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + sVar21 = *(short *)((long)psVar76 + uVar74 + (long)iVar54 * 2); + sVar22 = *(short *)((long)psVar76 + uVar55 + (long)iVar46 * 2); + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar23 = *(short *)((long)psVar76 + uVar77 + (long)iVar54 * 2); + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + sVar18 = sVar21; + if (sVar22 < sVar21) { + sVar18 = sVar22; + } + if (sVar21 < sVar22) { + sVar21 = sVar22; + } + sVar22 = sVar18; + if (sVar23 < sVar18) { + sVar22 = sVar23; + } + if (sVar18 < sVar23) { + sVar18 = sVar23; + } + sVar24 = *(short *)((long)psVar76 + uVar77 + (long)iVar46 * 2); + sVar25 = *(short *)((long)psVar76 + uVar84 + (long)iVar46 * 2); + sVar23 = sVar18; + if (sVar21 < sVar18) { + sVar23 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar22; + if (sVar19 < sVar22) { + sVar21 = sVar19; + } + if (sVar22 < sVar19) { + sVar22 = sVar19; + } + sVar19 = sVar18; + if (sVar20 < sVar18) { + sVar19 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar22 < sVar19) { + sVar20 = sVar22; + } + if (sVar19 < sVar22) { + sVar19 = sVar22; + } + sVar22 = sVar23; + if (sVar42 < sVar23) { + sVar22 = sVar42; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + sVar42 = sVar20; + if (sVar22 < sVar20) { + sVar42 = sVar22; + } + if (sVar20 < sVar22) { + sVar20 = sVar22; + } + sVar22 = sVar19; + if (sVar23 < sVar19) { + sVar22 = sVar23; + } + if (sVar19 < sVar23) { + sVar19 = sVar23; + } + sVar26 = *(short *)((long)psVar76 + uVar78 + (long)iVar46 * 2); + sVar27 = *(short *)((long)psVar66 + uVar55); + sVar23 = sVar24; + if (sVar25 < sVar24) { + sVar23 = sVar25; + } + if (sVar24 < sVar25) { + sVar24 = sVar25; + } + sVar25 = sVar23; + if (sVar26 < sVar23) { + sVar25 = sVar26; + } + if (sVar23 < sVar26) { + sVar23 = sVar26; + } + sVar28 = *(short *)((long)psVar66 + uVar78); + sVar29 = *(short *)((long)psVar76 + uVar74 + (long)iVar46 * 2); + sVar26 = sVar23; + if (sVar24 < sVar23) { + sVar26 = sVar24; + } + if (sVar23 < sVar24) { + sVar23 = sVar24; + } + sVar24 = sVar27; + if (sVar28 < sVar27) { + sVar24 = sVar28; + } + if (sVar27 < sVar28) { + sVar27 = sVar28; + } + sVar28 = sVar29; + if (sVar24 < sVar29) { + sVar28 = sVar24; + } + if (sVar29 < sVar24) { + sVar29 = sVar24; + } + sVar30 = *(short *)((long)psVar66 + uVar74); + uVar82 = (ulong)(uVar81 + 1); + sVar31 = *(short *)((long)psVar66 + uVar77); + sVar24 = sVar29; + if (sVar27 < sVar29) { + sVar24 = sVar27; + } + if (sVar29 < sVar27) { + sVar29 = sVar27; + } + sVar27 = sVar28; + if (sVar25 < sVar28) { + sVar27 = sVar25; + } + if (sVar28 < sVar25) { + sVar28 = sVar25; + } + sVar25 = sVar29; + if (sVar23 < sVar29) { + sVar25 = sVar23; + } + if (sVar29 < sVar23) { + sVar29 = sVar23; + } + sVar23 = sVar25; + if (sVar28 < sVar25) { + sVar23 = sVar28; + } + if (sVar25 < sVar28) { + sVar25 = sVar28; + } + sVar28 = sVar24; + if (sVar26 < sVar24) { + sVar28 = sVar26; + } + if (sVar24 < sVar26) { + sVar24 = sVar26; + } + sVar26 = sVar23; + if (sVar28 < sVar23) { + sVar26 = sVar28; + } + if (sVar23 < sVar28) { + sVar23 = sVar28; + } + sVar28 = sVar25; + if (sVar24 < sVar25) { + sVar28 = sVar24; + } + if (sVar25 < sVar24) { + sVar25 = sVar24; + } + sVar24 = sVar21; + if (sVar21 < sVar27) { + sVar24 = sVar27; + } + sVar12 = sVar19; + if (sVar25 < sVar19) { + sVar12 = sVar25; + } + if (sVar19 < sVar25) { + sVar19 = sVar25; + } + sVar25 = sVar12; + if (sVar24 < sVar12) { + sVar25 = sVar24; + } + if (sVar12 < sVar24) { + sVar12 = sVar24; + } + sVar24 = sVar20; + if (sVar23 < sVar20) { + sVar24 = sVar23; + } + if (sVar20 < sVar23) { + sVar20 = sVar23; + } + sVar23 = sVar25; + if (sVar24 < sVar25) { + sVar23 = sVar24; + } + if (sVar25 < sVar24) { + sVar25 = sVar24; + } + sVar32 = *(short *)((long)psVar66 + uVar84); + sVar24 = sVar12; + if (sVar20 < sVar12) { + sVar24 = sVar20; + } + sVar33 = *(short *)((long)psVar76 + uVar78 + (long)iVar44 * 2); + if (sVar12 < sVar20) { + sVar12 = sVar20; + } + sVar20 = sVar42; + if (sVar26 < sVar42) { + sVar20 = sVar26; + } + if (sVar42 < sVar26) { + sVar42 = sVar26; + } + sVar26 = sVar18; + if (sVar29 < sVar18) { + sVar26 = sVar29; + } + sVar17 = sVar42; + if (sVar26 < sVar42) { + sVar17 = sVar26; + } + if (sVar42 < sVar26) { + sVar42 = sVar26; + } + sVar26 = sVar22; + if (sVar28 < sVar22) { + sVar26 = sVar28; + } + if (sVar22 < sVar28) { + sVar22 = sVar28; + } + sVar28 = sVar17; + if (sVar26 < sVar17) { + sVar28 = sVar26; + } + if (sVar17 < sVar26) { + sVar17 = sVar26; + } + sVar34 = *(short *)((long)psVar76 + uVar84 + (long)iVar44 * 2); + sVar26 = sVar42; + if (sVar22 < sVar42) { + sVar26 = sVar22; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar22 = sVar30; + if (sVar31 < sVar30) { + sVar22 = sVar31; + } + if (sVar30 < sVar31) { + sVar30 = sVar31; + } + sVar31 = sVar22; + if (sVar32 < sVar22) { + sVar31 = sVar32; + } + if (sVar22 < sVar32) { + sVar22 = sVar32; + } + sVar32 = *(short *)((long)psVar76 + uVar55 + (long)iVar44 * 2); + sVar35 = *(short *)((long)psVar76 + uVar55 + (long)iVar45 * 2); + sVar14 = sVar22; + if (sVar30 < sVar22) { + sVar14 = sVar30; + } + if (sVar22 < sVar30) { + sVar22 = sVar30; + } + sVar30 = sVar33; + if (sVar34 < sVar33) { + sVar30 = sVar34; + } + if (sVar33 < sVar34) { + sVar33 = sVar34; + } + sVar34 = sVar32; + if (sVar30 < sVar32) { + sVar34 = sVar30; + } + if (sVar32 < sVar30) { + sVar32 = sVar30; + } + sVar36 = *(short *)((long)psVar76 + uVar74 + (long)iVar44 * 2); + sVar30 = sVar32; + if (sVar33 < sVar32) { + sVar30 = sVar33; + } + if (sVar32 < sVar33) { + sVar32 = sVar33; + } + sVar33 = sVar31; + if (sVar34 < sVar31) { + sVar33 = sVar34; + } + if (sVar31 < sVar34) { + sVar31 = sVar34; + } + sVar34 = sVar22; + if (sVar32 < sVar22) { + sVar34 = sVar32; + } + if (sVar22 < sVar32) { + sVar22 = sVar32; + } + sVar32 = sVar34; + if (sVar31 < sVar34) { + sVar32 = sVar31; + } + if (sVar34 < sVar31) { + sVar34 = sVar31; + } + sVar37 = *(short *)((long)psVar76 + uVar77 + (long)iVar44 * 2); + sVar38 = *(short *)((long)psVar76 + uVar77 + (long)iVar45 * 2); + sVar31 = sVar14; + if (sVar30 < sVar14) { + sVar31 = sVar30; + } + if (sVar14 < sVar30) { + sVar14 = sVar30; + } + sVar30 = sVar32; + if (sVar31 < sVar32) { + sVar30 = sVar31; + } + if (sVar32 < sVar31) { + sVar32 = sVar31; + } + sVar39 = *(short *)((long)psVar76 + uVar78 + (long)iVar45 * 2); + sVar31 = sVar34; + if (sVar14 < sVar34) { + sVar31 = sVar14; + } + sVar40 = *(short *)((long)psVar76 + uVar84 + (long)iVar45 * 2); + if (sVar34 < sVar14) { + sVar34 = sVar14; + } + sVar14 = sVar36; + if (sVar35 < sVar36) { + sVar14 = sVar35; + } + if (sVar36 < sVar35) { + sVar36 = sVar35; + } + sVar35 = sVar14; + if (sVar37 < sVar14) { + sVar35 = sVar37; + } + if (sVar14 < sVar37) { + sVar14 = sVar37; + } + sVar41 = *(short *)((long)psVar76 + uVar74 + (long)iVar45 * 2); + sVar37 = sVar14; + if (sVar36 < sVar14) { + sVar37 = sVar36; + } + if (sVar14 < sVar36) { + sVar14 = sVar36; + } + sVar36 = sVar39; + if (sVar40 < sVar39) { + sVar36 = sVar40; + } + if (sVar39 < sVar40) { + sVar39 = sVar40; + } + sVar40 = sVar41; + if (sVar38 < sVar41) { + sVar40 = sVar38; + } + if (sVar41 < sVar38) { + sVar41 = sVar38; + } + sVar38 = sVar40; + if (sVar36 < sVar40) { + sVar38 = sVar36; + } + if (sVar40 < sVar36) { + sVar40 = sVar36; + } + sVar36 = sVar41; + if (sVar39 < sVar41) { + sVar36 = sVar39; + } + if (sVar41 < sVar39) { + sVar41 = sVar39; + } + sVar39 = sVar36; + if (sVar40 < sVar36) { + sVar39 = sVar40; + } + if (sVar36 < sVar40) { + sVar36 = sVar40; + } + sVar40 = sVar38; + if (sVar35 < sVar38) { + sVar40 = sVar35; + } + if (sVar38 < sVar35) { + sVar38 = sVar35; + } + sVar35 = sVar36; + if (sVar14 < sVar36) { + sVar35 = sVar14; + } + if (sVar36 < sVar14) { + sVar36 = sVar14; + } + sVar14 = sVar35; + if (sVar38 < sVar35) { + sVar14 = sVar38; + } + if (sVar35 < sVar38) { + sVar35 = sVar38; + } + sVar38 = sVar39; + if (sVar37 < sVar39) { + sVar38 = sVar37; + } + if (sVar39 < sVar37) { + sVar39 = sVar37; + } + sVar37 = sVar39; + if (sVar41 < sVar39) { + sVar37 = sVar41; + } + if (sVar39 < sVar41) { + sVar39 = sVar41; + } + sVar41 = sVar14; + if (sVar38 < sVar14) { + sVar41 = sVar38; + } + if (sVar14 < sVar38) { + sVar14 = sVar38; + } + sVar38 = sVar37; + if (sVar35 < sVar37) { + sVar38 = sVar35; + } + if (sVar37 < sVar35) { + sVar37 = sVar35; + } + sVar35 = sVar39; + if (sVar36 < sVar39) { + sVar35 = sVar36; + } + if (sVar39 < sVar36) { + sVar39 = sVar36; + } + sVar36 = sVar40; + if (sVar40 < sVar33) { + sVar36 = sVar33; + } + sVar13 = sVar37; + if (sVar34 < sVar37) { + sVar13 = sVar34; + } + if (sVar37 < sVar34) { + sVar37 = sVar34; + } + sVar34 = sVar13; + if (sVar36 < sVar13) { + sVar34 = sVar36; + } + if (sVar13 < sVar36) { + sVar13 = sVar36; + } + sVar36 = sVar14; + if (sVar32 < sVar14) { + sVar36 = sVar32; + } + if (sVar14 < sVar32) { + sVar14 = sVar32; + } + sVar32 = sVar14; + if (sVar39 < sVar14) { + sVar32 = sVar39; + } + if (sVar14 < sVar39) { + sVar14 = sVar39; + } + sVar39 = sVar34; + if (sVar36 < sVar34) { + sVar39 = sVar36; + } + if (sVar34 < sVar36) { + sVar34 = sVar36; + } + sVar36 = sVar32; + if (sVar13 < sVar32) { + sVar36 = sVar13; + } + if (sVar32 < sVar13) { + sVar32 = sVar13; + } + sVar13 = sVar14; + if (sVar37 < sVar14) { + sVar13 = sVar37; + } + if (sVar14 < sVar37) { + sVar14 = sVar37; + } + sVar37 = sVar41; + if (sVar30 < sVar41) { + sVar37 = sVar30; + } + if (sVar41 < sVar30) { + sVar41 = sVar30; + } + sVar30 = sVar35; + if (sVar22 < sVar35) { + sVar30 = sVar22; + } + if (sVar35 < sVar22) { + sVar35 = sVar22; + } + sVar22 = sVar30; + if (sVar41 < sVar30) { + sVar22 = sVar41; + } + if (sVar30 < sVar41) { + sVar30 = sVar41; + } + sVar41 = sVar38; + if (sVar31 < sVar38) { + sVar41 = sVar31; + } + if (sVar38 < sVar31) { + sVar38 = sVar31; + } + sVar31 = sVar22; + if (sVar41 < sVar22) { + sVar31 = sVar41; + } + if (sVar22 < sVar41) { + sVar22 = sVar41; + } + sVar41 = sVar30; + if (sVar38 < sVar30) { + sVar41 = sVar38; + } + if (sVar30 < sVar38) { + sVar30 = sVar38; + } + sVar38 = sVar30; + if (sVar30 < sVar13) { + sVar38 = sVar13; + } + sVar16 = sVar42; + if (sVar42 < sVar19) { + sVar16 = sVar19; + } + if (sVar16 < sVar38) { + sVar38 = sVar16; + } + sVar16 = sVar37; + if (sVar37 < sVar20) { + sVar16 = sVar20; + } + if (sVar16 < sVar23) { + sVar16 = sVar23; + } + if (sVar16 < sVar39) { + sVar16 = sVar39; + } + if (sVar16 < sVar38) { + sVar38 = sVar16; + } + sVar16 = sVar22; + if (sVar22 < sVar36) { + sVar16 = sVar36; + } + sVar15 = sVar17; + if (sVar17 < sVar24) { + sVar15 = sVar24; + } + if (sVar15 < sVar16) { + sVar16 = sVar15; + } + if (sVar38 < sVar16) { + sVar38 = sVar16; + } + sVar16 = sVar28; + if (sVar28 < sVar25) { + sVar16 = sVar25; + } + if (sVar16 < sVar34) { + sVar16 = sVar34; + } + if (sVar16 < sVar31) { + sVar16 = sVar31; + } + sVar15 = sVar14; + if (sVar14 < sVar35) { + sVar15 = sVar35; + } + if (sVar15 < sVar16) { + sVar16 = sVar15; + } + if (sVar33 < sVar40) { + sVar40 = sVar33; + } + if (sVar27 < sVar21) { + sVar21 = sVar27; + } + if (sVar40 < sVar21) { + sVar40 = sVar21; + } + sVar21 = sVar41; + if (sVar41 < sVar32) { + sVar21 = sVar32; + } + sVar27 = sVar26; + if (sVar26 < sVar12) { + sVar27 = sVar12; + } + if (sVar27 < sVar21) { + sVar21 = sVar27; + } + if (sVar40 < sVar21) { + sVar40 = sVar21; + } + if (sVar40 < sVar16) { + sVar16 = sVar40; + } + if (sVar38 < sVar16) { + sVar38 = sVar16; + } + if (sVar37 < sVar39) { + sVar39 = sVar37; + } + if (sVar20 < sVar23) { + sVar23 = sVar20; + } + if (sVar39 < sVar23) { + sVar39 = sVar23; + } + if (sVar13 < sVar42) { + sVar42 = sVar13; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar30 < sVar42) { + sVar42 = sVar30; + } + if (sVar39 < sVar42) { + sVar39 = sVar42; + } + if (sVar36 < sVar22) { + sVar22 = sVar36; + } + if (sVar24 < sVar17) { + sVar17 = sVar24; + } + if (sVar22 < sVar17) { + sVar22 = sVar17; + } + if (sVar22 < sVar39) { + sVar39 = sVar22; + } + if (sVar18 < sVar29) { + sVar18 = sVar29; + } + if (sVar18 < sVar35) { + sVar35 = sVar18; + } + if (sVar14 < sVar35) { + sVar35 = sVar14; + } + if (sVar34 < sVar31) { + sVar31 = sVar34; + } + if (sVar25 < sVar28) { + sVar28 = sVar25; + } + if (sVar31 < sVar28) { + sVar31 = sVar28; + } + if (sVar31 < sVar35) { + sVar35 = sVar31; + } + if (sVar12 < sVar26) { + sVar26 = sVar12; + } + if (sVar32 < sVar26) { + sVar26 = sVar32; + } + if (sVar41 < sVar26) { + sVar26 = sVar41; + } + if (sVar35 < sVar26) { + sVar35 = sVar26; + } + if (sVar35 < sVar39) { + sVar39 = sVar35; + } + if (sVar38 < sVar39) { + sVar38 = sVar39; + } + *(short *)(local_90 + uVar84) = sVar38; + } while( true ); + } + iVar60 = iVar71 + 1; + local_34 = iVar71; + } + uVar69 = 0; + uVar85 = uVar1; + local_30 = uVar1; +LAB_001fd85c: + if (local_34 < 1) { + return; + } + iVar63 = iVar60 + -2; + lVar75 = (long)(int)local_30; + lVar73 = (long)(int)-local_30; + lVar64 = lVar75 * 2; + lVar62 = lVar73 * 2; + uVar83 = -(ulong)((local_30 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(local_30 << 1) << 1; + uVar82 = -(ulong)((-local_30 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(local_30 * -2) << 1; + psVar66 = (short *)(local_90 + 0x10); + lVar57 = uVar82 + 0x10; + lVar61 = uVar83 + 0x10; + iVar71 = 0; + do { + psVar67 = psVar66 + -8; + if (iVar71 < 1) { + if (iVar71 < iVar60 + -3) { + if (iVar71 < iVar63) { + if ((uVar1 < 9 || + (psVar67 < (short *)((long)psVar76 + lVar61) && + (short *)((long)psVar76 + uVar83) < psVar66 || + psVar67 < psVar76 + lVar75 + 8 && psVar76 + lVar75 < psVar66)) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar42 = (psVar76 + lVar75)[lVar58]; + sVar19 = ((short *)((long)psVar76 + uVar83))[lVar58]; + sVar20 = psVar76[lVar58]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar67[lVar58] = sVar20; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + uVar65 = uVar1; + if (uVar79 < uVar1) { + uVar65 = uVar79; + } + psVar56 = psVar76; + if (uVar65 == 0) { +LAB_0020226c: + uVar84 = (ulong)uVar65; + } + else { + sVar42 = psVar76[lVar75]; + psVar56 = psVar76 + 1; + sVar19 = *(short *)((long)psVar76 + uVar83); + sVar20 = *psVar76; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-8] = sVar20; + if (uVar65 == 1) goto LAB_0020226c; + sVar42 = psVar56[lVar75]; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 2; + sVar20 = psVar76[1]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-7] = sVar20; + if (uVar65 == 2) goto LAB_0020226c; + sVar42 = psVar56[lVar75]; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 3; + sVar20 = psVar76[2]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-6] = sVar20; + if (uVar65 == 3) goto LAB_0020226c; + sVar42 = psVar56[lVar75]; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 4; + sVar20 = psVar76[3]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-5] = sVar20; + if (uVar65 == 4) { + uVar84 = 4; + } + else { + sVar42 = psVar56[lVar75]; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 5; + sVar20 = psVar76[4]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-4] = sVar20; + if (uVar65 == 5) goto LAB_0020226c; + sVar42 = psVar56[lVar75]; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 6; + sVar20 = psVar76[5]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-3] = sVar20; + if (uVar65 == 7) { + sVar42 = psVar56[lVar75]; + uVar84 = 7; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 7; + sVar20 = psVar76[6]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + psVar66[-2] = sVar20; + } + else { + uVar84 = 6; + } + } + } + uVar79 = ((uVar1 - uVar65) - 8 >> 3) + 1; + uVar81 = uVar79 * 8; + if (6 < uVar43 - uVar65) { + lVar68 = (ulong)uVar65 * 2; + lVar58 = 0; + uVar72 = 0; + do { + lVar147 = lVar58 + lVar68; + uVar72 = uVar72 + 1; + psVar6 = (short *)((long)psVar76 + lVar58 + lVar64 + lVar68); + psVar52 = (short *)((long)psVar76 + lVar147); + psVar8 = (short *)((long)psVar76 + lVar58 + uVar83 + lVar68); + lVar58 = lVar58 + 0x10; + auVar148._0_4_ = (int)*psVar6; + auVar148._4_4_ = (int)psVar6[1]; + auVar148._8_4_ = (int)psVar6[2]; + auVar148._12_4_ = (int)psVar6[3]; + auVar151._0_4_ = (int)psVar6[4]; + auVar151._4_4_ = (int)psVar6[5]; + auVar151._8_4_ = (int)psVar6[6]; + auVar151._12_4_ = (int)psVar6[7]; + puVar70 = (undefined8 *)((long)psVar67 + lVar147); + auVar131._0_4_ = (int)*psVar52; + auVar131._4_4_ = (int)psVar52[1]; + auVar131._8_4_ = (int)psVar52[2]; + auVar131._12_4_ = (int)psVar52[3]; + auVar113._0_4_ = (int)psVar52[4]; + auVar113._4_4_ = (int)psVar52[5]; + auVar113._8_4_ = (int)psVar52[6]; + auVar113._12_4_ = (int)psVar52[7]; + auVar139._0_4_ = (int)*psVar8; + auVar139._4_4_ = (int)psVar8[1]; + auVar139._8_4_ = (int)psVar8[2]; + auVar139._12_4_ = (int)psVar8[3]; + auVar181._0_4_ = (int)psVar8[4]; + auVar181._4_4_ = (int)psVar8[5]; + auVar181._8_4_ = (int)psVar8[6]; + auVar181._12_4_ = (int)psVar8[7]; + auVar140 = NEON_smin(auVar139,auVar148,4); + auVar91 = NEON_smin(auVar181,auVar151,4); + auVar166 = NEON_smax(auVar139,auVar148,4); + auVar88 = NEON_smax(auVar181,auVar151,4); + auVar86 = NEON_smax(auVar131,auVar140,4); + auVar98 = NEON_smax(auVar113,auVar91,4); + auVar87 = NEON_smin(auVar131,auVar140,4); + auVar89 = NEON_smin(auVar113,auVar91,4); + auVar174 = NEON_smin(auVar131,auVar166,4); + auVar90 = NEON_smin(auVar113,auVar88,4); + auVar140 = NEON_smax(auVar86,auVar166,4); + auVar166 = NEON_smax(auVar98,auVar88,4); + auVar91 = NEON_smax(auVar131,auVar87,4); + auVar88 = NEON_smax(auVar113,auVar89,4); + auVar174 = NEON_smin(auVar174,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar140,4); + auVar88 = NEON_smin(auVar88,auVar166,4); + auVar140 = NEON_smin(auVar90,auVar98,4); + auVar166 = NEON_smax(auVar174,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar175._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar175._8_2_ = auVar88._0_2_; + auVar175._10_2_ = auVar88._4_2_; + auVar175._12_2_ = auVar88._8_2_; + auVar175._14_2_ = auVar88._12_2_; + puVar70[1] = auVar175._8_8_; + *puVar70 = auVar175._0_8_; + } while (uVar72 < uVar79); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar65 == uVar81) goto LAB_001fe290; + } + sVar42 = psVar56[lVar75]; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar19 = *(short *)((long)psVar56 + uVar83); + iVar54 = (int)uVar84; + sVar20 = *psVar56; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78) = sVar20; + if (iVar54 + 1 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 1]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 2); + sVar20 = psVar56[1]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar20; + if (iVar54 + 2 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 2]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 4); + sVar20 = psVar56[2]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar20; + if (iVar54 + 3 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 3]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 6); + sVar20 = psVar56[3]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar20; + if (iVar54 + 4 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 4]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 8); + sVar20 = psVar56[4]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar20; + if (iVar54 + 5 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 5]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 10); + sVar20 = psVar56[5]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar20; + if (iVar54 + 6 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 6]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 0xc); + sVar20 = psVar56[6]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar20; + if (sVar20 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar21; + if (sVar21 < sVar19) { + sVar42 = sVar19; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar20; + } + } + } + } + } + } + } + else { + if ((psVar67 < (short *)((long)psVar76 + lVar61) && + (short *)((long)psVar76 + uVar83) < psVar66 || + psVar67 < psVar76 + 8 && psVar76 < psVar66) || (uVar1 < 9)) { + lVar58 = 0; + do { + sVar20 = psVar76[lVar58]; + sVar19 = ((short *)((long)psVar76 + uVar83))[lVar58]; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + if (sVar42 < sVar20) { + sVar42 = sVar20; + } + sVar21 = sVar18; + if (sVar18 < sVar19) { + sVar21 = sVar19; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + psVar67[lVar58] = sVar19; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar56 = psVar76; + if (uVar79 == 0) { +LAB_00203240: + uVar84 = (ulong)uVar79; + } + else { + sVar19 = *psVar76; + sVar20 = *(short *)((long)psVar76 + uVar83); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-8] = sVar19; + psVar56 = psVar76 + 1; + if (uVar79 == 1) goto LAB_00203240; + sVar19 = psVar76[1]; + sVar20 = *(short *)((long)(psVar76 + 1) + uVar83); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-7] = sVar19; + psVar56 = psVar76 + 2; + if (uVar79 == 2) goto LAB_00203240; + sVar19 = psVar76[2]; + sVar20 = *(short *)((long)(psVar76 + 2) + uVar83); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-6] = sVar19; + psVar56 = psVar76 + 3; + if (uVar79 == 3) goto LAB_00203240; + sVar19 = psVar76[3]; + sVar20 = *(short *)((long)(psVar76 + 3) + uVar83); + psVar56 = psVar76 + 4; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-5] = sVar19; + if (uVar79 == 4) { + uVar84 = 4; + } + else { + sVar19 = psVar76[4]; + sVar20 = *(short *)((long)psVar56 + uVar83); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-4] = sVar19; + psVar56 = psVar76 + 5; + if (uVar79 == 5) goto LAB_00203240; + sVar19 = psVar76[5]; + sVar20 = *(short *)((long)(psVar76 + 5) + uVar83); + psVar56 = psVar76 + 6; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-3] = sVar19; + if (uVar79 == 7) { + sVar20 = psVar76[6]; + uVar84 = 7; + sVar19 = *(short *)((long)psVar56 + uVar83); + psVar56 = psVar76 + 7; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + if (sVar42 < sVar20) { + sVar42 = sVar20; + } + sVar21 = sVar18; + if (sVar18 < sVar19) { + sVar21 = sVar19; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + psVar66[-2] = sVar19; + } + else { + uVar84 = 6; + } + } + } + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar58 = 0; + uVar72 = 0; + do { + uVar72 = uVar72 + 1; + lVar68 = lVar58 + (ulong)uVar79 * 2; + psVar6 = (short *)((long)psVar76 + lVar68); + psVar52 = (short *)((long)psVar76 + lVar58 + uVar83 + (ulong)uVar79 * 2); + puVar70 = (undefined8 *)((long)psVar67 + lVar68); + lVar58 = lVar58 + 0x10; + auVar98._0_4_ = (int)*psVar6; + auVar98._4_4_ = (int)psVar6[1]; + auVar98._8_4_ = (int)psVar6[2]; + auVar98._12_4_ = (int)psVar6[3]; + auVar107._0_4_ = (int)*psVar52; + auVar107._4_4_ = (int)psVar52[1]; + auVar107._8_4_ = (int)psVar52[2]; + auVar107._12_4_ = (int)psVar52[3]; + auVar91._0_4_ = (int)psVar6[4]; + auVar91._4_4_ = (int)psVar6[5]; + auVar91._8_4_ = (int)psVar6[6]; + auVar91._12_4_ = (int)psVar6[7]; + auVar86._0_4_ = (int)psVar52[4]; + auVar86._4_4_ = (int)psVar52[5]; + auVar86._8_4_ = (int)psVar52[6]; + auVar86._12_4_ = (int)psVar52[7]; + auVar90 = NEON_smin(auVar98,auVar107,4); + auVar166 = NEON_smax(auVar98,auVar107,4); + auVar140 = NEON_smin(auVar91,auVar86,4); + auVar88 = NEON_smax(auVar91,auVar86,4); + auVar107 = NEON_smax(auVar98,auVar90,4); + auVar86 = NEON_smin(auVar98,auVar90,4); + auVar105 = NEON_smax(auVar91,auVar140,4); + auVar87 = NEON_smin(auVar91,auVar140,4); + auVar89 = NEON_smin(auVar98,auVar166,4); + auVar174 = NEON_smin(auVar91,auVar88,4); + auVar90 = NEON_smax(auVar107,auVar166,4); + auVar140 = NEON_smax(auVar105,auVar88,4); + auVar166 = NEON_smax(auVar98,auVar86,4); + auVar88 = NEON_smax(auVar91,auVar87,4); + auVar89 = NEON_smin(auVar89,auVar107,4); + auVar166 = NEON_smin(auVar166,auVar90,4); + auVar88 = NEON_smin(auVar88,auVar140,4); + auVar91 = NEON_smin(auVar174,auVar105,4); + auVar166 = NEON_smax(auVar89,auVar166,4); + auVar88 = NEON_smax(auVar91,auVar88,4); + auVar105._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar105._8_2_ = auVar88._0_2_; + auVar105._10_2_ = auVar88._4_2_; + auVar105._12_2_ = auVar88._8_2_; + auVar105._14_2_ = auVar88._12_2_; + puVar70[1] = auVar105._8_8_; + *puVar70 = auVar105._0_8_; + } while (uVar72 < uVar65); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar81 == uVar1 - uVar79) goto LAB_001fe290; + } + sVar19 = *psVar56; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar20 = *(short *)((long)psVar56 + uVar83); + iVar54 = (int)uVar84; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78) = sVar19; + if (iVar54 + 1 < (int)uVar1) { + sVar19 = psVar56[1]; + sVar20 = *(short *)((long)psVar56 + uVar83 + 2); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar19; + if (iVar54 + 2 < (int)uVar1) { + sVar19 = psVar56[2]; + sVar20 = *(short *)((long)psVar56 + uVar83 + 4); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar19; + if (iVar54 + 3 < (int)uVar1) { + sVar19 = psVar56[3]; + sVar20 = *(short *)((long)psVar56 + uVar83 + 6); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar19; + if (iVar54 + 4 < (int)uVar1) { + sVar19 = psVar56[4]; + sVar20 = *(short *)((long)psVar56 + uVar83 + 8); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar19; + if (iVar54 + 5 < (int)uVar1) { + sVar19 = psVar56[5]; + sVar20 = *(short *)((long)psVar56 + uVar83 + 10); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar20) { + sVar42 = sVar20; + } + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar21; + if (sVar21 < sVar42) { + sVar20 = sVar42; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar19; + if (iVar54 + 6 < (int)uVar1) { + sVar20 = psVar56[6]; + sVar19 = *(short *)((long)psVar56 + uVar83 + 0xc); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + if (sVar42 < sVar20) { + sVar42 = sVar20; + } + sVar21 = sVar18; + if (sVar18 < sVar19) { + sVar21 = sVar19; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar19; + } + } + } + } + } + } + } + } + else { + if (iVar63 <= iVar71) { + if ((psVar67 < psVar76 + 8 && psVar76 < psVar66) || (uVar1 < 9)) { + lVar58 = 0; + do { + psVar67[lVar58] = psVar76[lVar58]; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar56 = psVar76; + if (uVar79 == 0) { +LAB_002032c8: + uVar84 = (ulong)uVar79; + } + else { + psVar56 = psVar76 + 1; + psVar66[-8] = *psVar76; + if (uVar79 == 1) goto LAB_002032c8; + psVar66[-7] = psVar76[1]; + psVar56 = psVar76 + 2; + if (uVar79 == 2) goto LAB_002032c8; + psVar66[-6] = psVar76[2]; + psVar56 = psVar76 + 3; + if (uVar79 == 3) goto LAB_002032c8; + psVar66[-5] = psVar76[3]; + psVar56 = psVar76 + 4; + if (uVar79 == 4) { + uVar84 = 4; + } + else { + psVar66[-4] = psVar76[4]; + psVar56 = psVar76 + 5; + if (uVar79 == 5) goto LAB_002032c8; + psVar66[-3] = psVar76[5]; + psVar56 = psVar76 + 6; + if (uVar79 == 7) { + psVar56 = psVar76 + 7; + psVar66[-2] = psVar76[6]; + uVar84 = 7; + } + else { + uVar84 = 6; + } + } + } + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar58 = 0; + uVar72 = 0; + do { + lVar68 = lVar58 + (ulong)uVar79 * 2; + uVar72 = uVar72 + 1; + puVar70 = (undefined8 *)((long)psVar67 + lVar68); + lVar58 = lVar58 + 0x10; + auVar88 = *(undefined1 (*) [16])((long)psVar76 + lVar68); + puVar70[1] = auVar88._8_8_; + *puVar70 = auVar88._0_8_; + } while (uVar72 < uVar65); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar81 == uVar1 - uVar79) goto LAB_001fe290; + } + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + iVar54 = (int)uVar84; + *(short *)((long)psVar67 + uVar78) = *psVar56; + if (((((iVar54 + 1 < (int)uVar1) && + (*(short *)((long)psVar67 + uVar78 + 2) = psVar56[1], iVar54 + 2 < (int)uVar1)) && + (*(short *)((long)psVar67 + uVar78 + 4) = psVar56[2], iVar54 + 3 < (int)uVar1)) && + ((*(short *)((long)psVar67 + uVar78 + 6) = psVar56[3], iVar54 + 4 < (int)uVar1 && + (*(short *)((long)psVar67 + uVar78 + 8) = psVar56[4], iVar54 + 5 < (int)uVar1)))) + && (*(short *)((long)psVar67 + uVar78 + 10) = psVar56[5], iVar54 + 6 < (int)uVar1)) { + *(short *)((long)psVar67 + uVar78 + 0xc) = psVar56[6]; + } + goto LAB_001fe290; + } + if ((psVar67 < psVar76 + lVar75 + 8 && psVar76 + lVar75 < psVar66 || + psVar67 < psVar76 + 8 && psVar76 < psVar66) || (uVar1 < 9)) { + lVar58 = 0; + do { + sVar19 = psVar76[lVar58]; + sVar20 = (psVar76 + lVar75)[lVar58]; + sVar18 = sVar20; + if (sVar19 < sVar20) { + sVar18 = sVar19; + } + sVar42 = sVar20; + if (sVar20 < sVar19) { + sVar42 = sVar19; + } + sVar21 = sVar18; + if (sVar18 < sVar19) { + sVar21 = sVar19; + } + sVar19 = sVar42; + if (sVar42 < sVar20) { + sVar19 = sVar20; + } + if (sVar19 < sVar21) { + sVar21 = sVar19; + } + if (sVar18 < sVar42) { + sVar42 = sVar18; + } + if (sVar42 < sVar21) { + sVar42 = sVar21; + } + psVar67[lVar58] = sVar42; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar56 = psVar76; + if (uVar79 == 0) { +LAB_00203018: + uVar84 = (ulong)uVar79; + } + else { + sVar19 = *psVar76; + sVar18 = psVar76[lVar75]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-8] = sVar20; + psVar56 = psVar76 + 1; + if (uVar79 == 1) goto LAB_00203018; + sVar18 = (psVar76 + 1)[lVar75]; + sVar19 = psVar76[1]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-7] = sVar20; + psVar56 = psVar76 + 2; + if (uVar79 == 2) goto LAB_00203018; + sVar18 = (psVar76 + 2)[lVar75]; + sVar19 = psVar76[2]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-6] = sVar20; + psVar56 = psVar76 + 3; + if (uVar79 == 3) goto LAB_00203018; + sVar18 = (psVar76 + 3)[lVar75]; + psVar56 = psVar76 + 4; + sVar19 = psVar76[3]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-5] = sVar20; + if (uVar79 == 4) { + uVar84 = 4; + } + else { + sVar18 = psVar56[lVar75]; + sVar19 = psVar76[4]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-4] = sVar20; + psVar56 = psVar76 + 5; + if (uVar79 == 5) goto LAB_00203018; + sVar18 = (psVar76 + 5)[lVar75]; + psVar56 = psVar76 + 6; + sVar19 = psVar76[5]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-3] = sVar20; + if (uVar79 == 7) { + sVar20 = psVar56[lVar75]; + uVar84 = 7; + sVar19 = psVar76[6]; + psVar56 = psVar76 + 7; + sVar18 = sVar20; + if (sVar19 < sVar20) { + sVar18 = sVar19; + } + sVar42 = sVar20; + if (sVar20 < sVar19) { + sVar42 = sVar19; + } + sVar21 = sVar18; + if (sVar18 < sVar19) { + sVar21 = sVar19; + } + sVar19 = sVar42; + if (sVar42 < sVar20) { + sVar19 = sVar20; + } + if (sVar19 < sVar21) { + sVar21 = sVar19; + } + if (sVar18 < sVar42) { + sVar42 = sVar18; + } + if (sVar42 < sVar21) { + sVar42 = sVar21; + } + psVar66[-2] = sVar42; + } + else { + uVar84 = 6; + } + } + } + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar68 = NEON_shl((ulong)uVar79,1); + lVar58 = 0; + uVar72 = 0; + do { + uVar72 = uVar72 + 1; + psVar6 = (short *)((long)psVar76 + lVar58 + lVar68 + lVar64); + psVar52 = (short *)((long)psVar76 + lVar58 + (lVar75 + (ulong)uVar79) * 2); + lVar147 = lVar58 + lVar68; + lVar58 = lVar58 + 0x10; + psVar8 = (short *)((long)psVar76 + lVar147); + puVar70 = (undefined8 *)((long)psVar67 + lVar147); + auVar90._0_4_ = (int)*psVar6; + auVar90._4_4_ = (int)psVar6[1]; + auVar90._8_4_ = (int)psVar6[2]; + auVar90._12_4_ = (int)psVar6[3]; + auVar140._0_4_ = (int)*psVar52; + auVar140._4_4_ = (int)psVar52[1]; + auVar140._8_4_ = (int)psVar52[2]; + auVar140._12_4_ = (int)psVar52[3]; + auVar89._0_4_ = (int)psVar6[4]; + auVar89._4_4_ = (int)psVar6[5]; + auVar89._8_4_ = (int)psVar6[6]; + auVar89._12_4_ = (int)psVar6[7]; + auVar88._0_4_ = (int)psVar52[4]; + auVar88._4_4_ = (int)psVar52[5]; + auVar88._8_4_ = (int)psVar52[6]; + auVar88._12_4_ = (int)psVar52[7]; + auVar174._0_4_ = (int)psVar8[4]; + auVar174._4_4_ = (int)psVar8[5]; + auVar174._8_4_ = (int)psVar8[6]; + auVar174._12_4_ = (int)psVar8[7]; + auVar87._0_4_ = (int)*psVar8; + auVar87._4_4_ = (int)psVar8[1]; + auVar87._8_4_ = (int)psVar8[2]; + auVar87._12_4_ = (int)psVar8[3]; + auVar91 = NEON_smin(auVar140,auVar90,4); + auVar166 = NEON_smin(auVar88,auVar89,4); + auVar140 = NEON_smax(auVar140,auVar90,4); + auVar88 = NEON_smax(auVar88,auVar89,4); + auVar86 = NEON_smax(auVar91,auVar87,4); + auVar98 = NEON_smax(auVar166,auVar174,4); + auVar91 = NEON_smin(auVar91,auVar87,4); + auVar166 = NEON_smin(auVar166,auVar174,4); + auVar89 = NEON_smin(auVar140,auVar87,4); + auVar90 = NEON_smax(auVar86,auVar140,4); + auVar91 = NEON_smax(auVar91,auVar87,4); + auVar166 = NEON_smax(auVar166,auVar174,4); + auVar140 = NEON_smin(auVar88,auVar174,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar174 = NEON_smin(auVar89,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar90,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar166 = NEON_smax(auVar174,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar166._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar166._8_2_ = auVar88._0_2_; + auVar166._10_2_ = auVar88._4_2_; + auVar166._12_2_ = auVar88._8_2_; + auVar166._14_2_ = auVar88._12_2_; + puVar70[1] = auVar166._8_8_; + *puVar70 = auVar166._0_8_; + } while (uVar72 < uVar65); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar81 == uVar1 - uVar79) goto LAB_001fe290; + } + sVar19 = *psVar56; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar18 = psVar56[lVar75]; + iVar54 = (int)uVar84; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78) = sVar20; + if (iVar54 + 1 < (int)uVar1) { + sVar19 = psVar56[1]; + sVar18 = psVar56[lVar75 + 1]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar20; + if (iVar54 + 2 < (int)uVar1) { + sVar18 = psVar56[lVar75 + 2]; + sVar19 = psVar56[2]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar20; + if (iVar54 + 3 < (int)uVar1) { + sVar18 = psVar56[lVar75 + 3]; + sVar19 = psVar56[3]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar20; + if (iVar54 + 4 < (int)uVar1) { + sVar18 = psVar56[lVar75 + 4]; + sVar19 = psVar56[4]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar20; + if (iVar54 + 5 < (int)uVar1) { + sVar19 = psVar56[5]; + sVar18 = psVar56[lVar75 + 5]; + sVar20 = sVar19; + if (sVar18 < sVar19) { + sVar20 = sVar18; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar20; + if (iVar54 + 6 < (int)uVar1) { + sVar19 = psVar56[6]; + sVar20 = psVar56[lVar75 + 6]; + sVar18 = sVar20; + if (sVar19 < sVar20) { + sVar18 = sVar19; + } + sVar42 = sVar20; + if (sVar20 < sVar19) { + sVar42 = sVar19; + } + sVar21 = sVar18; + if (sVar18 < sVar19) { + sVar21 = sVar19; + } + sVar19 = sVar42; + if (sVar42 < sVar20) { + sVar19 = sVar20; + } + if (sVar19 < sVar21) { + sVar21 = sVar19; + } + if (sVar18 < sVar42) { + sVar42 = sVar18; + } + if (sVar42 < sVar21) { + sVar42 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar42; + } + } + } + } + } + } + } + } + else { + psVar56 = psVar76 + lVar73 + 8; + if (iVar71 < iVar60 + -3) { + if (iVar71 < iVar63) { + if (iVar71 < 2) { + psVar6 = psVar76 + lVar73; + if (((uVar1 < 9 || + (psVar67 < psVar56 && psVar6 < psVar66 || + psVar67 < (short *)((long)psVar76 + lVar61) && + (short *)((long)psVar76 + uVar83) < psVar66)) || + psVar67 < psVar76 + lVar75 + 8 && psVar76 + lVar75 < psVar66) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar42 = (psVar76 + lVar75)[lVar58]; + sVar18 = ((short *)((long)psVar76 + uVar83))[lVar58]; + sVar21 = psVar76[lVar58]; + sVar20 = psVar6[lVar58]; + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = sVar19; + if (sVar21 < sVar19) { + sVar42 = sVar21; + } + if (sVar19 < sVar21) { + sVar19 = sVar21; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar42 < sVar21) { + sVar21 = sVar42; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar67[lVar58] = sVar20; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar6 >> 1) & 7) & 7; + uVar65 = uVar1; + if (uVar79 < uVar1) { + uVar65 = uVar79; + } + psVar56 = psVar76; + if (uVar65 == 0) { +LAB_001fec30: + uVar84 = (ulong)uVar65; + } + else { + sVar21 = psVar76[lVar75]; + psVar56 = psVar76 + 1; + sVar18 = *(short *)((long)psVar76 + uVar83); + sVar42 = *psVar76; + sVar20 = psVar76[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-8] = sVar20; + if (uVar65 == 1) goto LAB_001fec30; + sVar21 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = psVar76[1]; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + psVar56 = psVar76 + 2; + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-7] = sVar20; + if (uVar65 == 2) goto LAB_001fec30; + sVar21 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = psVar76[2]; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + psVar56 = psVar76 + 3; + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-6] = sVar20; + if (uVar65 != 3) { + sVar21 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = psVar76[3]; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + psVar56 = psVar76 + 4; + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-5] = sVar20; + if (uVar65 != 4) { + sVar21 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = psVar76[4]; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + psVar56 = psVar76 + 5; + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-4] = sVar20; + if (uVar65 != 5) { + sVar21 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = psVar76[5]; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + psVar56 = psVar76 + 6; + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-3] = sVar20; + if (uVar65 == 7) { + sVar21 = psVar56[lVar75]; + uVar84 = 7; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = psVar76[6]; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + psVar56 = psVar76 + 7; + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-2] = sVar20; + } + else { + uVar84 = 6; + } + goto LAB_001fe778; + } + } + goto LAB_001fec30; + } + uVar84 = 3; + } +LAB_001fe778: + uVar79 = ((uVar1 - uVar65) - 8 >> 3) + 1; + uVar81 = uVar79 * 8; + if (6 < uVar43 - uVar65) { + lVar68 = (ulong)uVar65 * 2; + lVar58 = 0; + uVar72 = 0; + lVar147 = NEON_shl(lVar73 + (ulong)uVar65,1); + do { + uVar72 = uVar72 + 1; + lVar149 = lVar58 + lVar68 + lVar62; + psVar6 = (short *)((long)psVar76 + lVar58 + uVar83 + lVar68); + psVar52 = (short *)((long)psVar76 + lVar58 + lVar64 + lVar68); + lVar7 = lVar58 + lVar68; + lVar10 = lVar58 + lVar147; + auVar126._0_4_ = (int)*psVar52; + auVar126._4_4_ = (int)psVar52[1]; + auVar126._8_4_ = (int)psVar52[2]; + auVar126._12_4_ = (int)psVar52[3]; + auVar122._0_4_ = (int)psVar52[4]; + auVar122._4_4_ = (int)psVar52[5]; + auVar122._8_4_ = (int)psVar52[6]; + auVar122._12_4_ = (int)psVar52[7]; + lVar58 = lVar58 + 0x10; + psVar52 = (short *)((long)psVar76 + lVar149); + auVar116._0_4_ = (int)*psVar6; + auVar116._4_4_ = (int)psVar6[1]; + auVar116._8_4_ = (int)psVar6[2]; + auVar116._12_4_ = (int)psVar6[3]; + auVar94._0_4_ = (int)psVar6[4]; + auVar94._4_4_ = (int)psVar6[5]; + auVar94._8_4_ = (int)psVar6[6]; + auVar94._12_4_ = (int)psVar6[7]; + psVar6 = (short *)((long)psVar76 + lVar10); + psVar8 = (short *)((long)psVar76 + lVar7); + puVar70 = (undefined8 *)((long)psVar67 + lVar7); + auVar91 = NEON_smin(auVar116,auVar126,4); + auVar174 = NEON_smax(auVar116,auVar126,4); + auVar109._0_4_ = (int)*psVar52; + auVar109._4_4_ = (int)psVar52[1]; + auVar109._8_4_ = (int)psVar52[2]; + auVar109._12_4_ = (int)psVar52[3]; + auVar170._0_4_ = (int)*psVar8; + auVar170._4_4_ = (int)psVar8[1]; + auVar170._8_4_ = (int)psVar8[2]; + auVar170._12_4_ = (int)psVar8[3]; + auVar156._0_4_ = (int)psVar8[4]; + auVar156._4_4_ = (int)psVar8[5]; + auVar156._8_4_ = (int)psVar8[6]; + auVar156._12_4_ = (int)psVar8[7]; + auVar142._0_4_ = (int)psVar52[4]; + auVar142._4_4_ = (int)psVar52[5]; + auVar142._8_4_ = (int)psVar52[6]; + auVar142._12_4_ = (int)psVar52[7]; + auVar166 = NEON_smin(auVar94,auVar122,4); + auVar163._0_4_ = (int)*psVar6; + auVar163._4_4_ = (int)psVar6[1]; + auVar163._8_4_ = (int)psVar6[2]; + auVar163._12_4_ = (int)psVar6[3]; + auVar134._0_4_ = (int)psVar6[4]; + auVar134._4_4_ = (int)psVar6[5]; + auVar134._8_4_ = (int)psVar6[6]; + auVar134._12_4_ = (int)psVar6[7]; + auVar88 = NEON_smax(auVar94,auVar122,4); + auVar86 = NEON_smax(auVar91,auVar170,4); + auVar98 = NEON_smax(auVar166,auVar156,4); + auVar90 = NEON_smax(auVar163,auVar109,4); + auVar91 = NEON_smin(auVar91,auVar170,4); + auVar140 = NEON_smax(auVar134,auVar142,4); + auVar87 = NEON_smin(auVar163,auVar109,4); + auVar166 = NEON_smin(auVar166,auVar156,4); + auVar89 = NEON_smin(auVar134,auVar142,4); + auVar90 = NEON_smin(auVar174,auVar90,4); + auVar91 = NEON_smax(auVar91,auVar87,4); + auVar140 = NEON_smin(auVar88,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar89,4); + auVar174 = NEON_smax(auVar86,auVar174,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar90 = NEON_smin(auVar90,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar174,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar166 = NEON_smax(auVar90,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar101._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar101._8_2_ = auVar88._0_2_; + auVar101._10_2_ = auVar88._4_2_; + auVar101._12_2_ = auVar88._8_2_; + auVar101._14_2_ = auVar88._12_2_; + puVar70[1] = auVar101._8_8_; + *puVar70 = auVar101._0_8_; + } while (uVar72 < uVar79); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar65 == uVar81) goto LAB_001fe290; + } + sVar21 = psVar56[lVar75]; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar18 = *(short *)((long)psVar56 + uVar83); + iVar54 = (int)uVar84; + sVar42 = *psVar56; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78) = sVar20; + if (iVar54 + 1 < (int)uVar1) { + sVar21 = psVar56[lVar75 + 1]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 2); + sVar42 = psVar56[1]; + sVar20 = psVar56[lVar73 + 1]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar20; + if (iVar54 + 2 < (int)uVar1) { + sVar21 = psVar56[lVar75 + 2]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 4); + sVar42 = psVar56[2]; + sVar20 = psVar56[lVar73 + 2]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar20; + if (iVar54 + 3 < (int)uVar1) { + sVar21 = psVar56[lVar75 + 3]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 6); + sVar42 = psVar56[3]; + sVar20 = psVar56[lVar73 + 3]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar20; + if (iVar54 + 4 < (int)uVar1) { + sVar21 = psVar56[lVar75 + 4]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 8); + sVar42 = psVar56[4]; + sVar20 = psVar56[lVar73 + 4]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar20; + if (iVar54 + 5 < (int)uVar1) { + sVar21 = psVar56[lVar75 + 5]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 10); + sVar42 = psVar56[5]; + sVar20 = psVar56[lVar73 + 5]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar20; + if (iVar54 + 6 < (int)uVar1) { + sVar21 = psVar56[lVar75 + 6]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 0xc); + sVar42 = psVar56[6]; + sVar20 = psVar56[lVar73 + 6]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar20; + } + } + } + } + } + } + } + else { + psVar6 = (short *)((long)psVar76 + uVar82); + if ((((uVar1 < 9 || + (psVar67 < psVar56 && psVar76 + lVar73 < psVar66 || + psVar67 < (short *)((long)psVar76 + lVar57) && psVar6 < psVar66)) || + psVar67 < (short *)((long)psVar76 + lVar61) && + (short *)((long)psVar76 + uVar83) < psVar66) || + psVar67 < psVar76 + lVar75 + 8 && psVar76 + lVar75 < psVar66) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar42 = psVar76[lVar58]; + sVar21 = psVar6[lVar58]; + sVar20 = (psVar76 + lVar73)[lVar58]; + sVar22 = (psVar76 + lVar75)[lVar58]; + sVar18 = ((short *)((long)psVar76 + uVar83))[lVar58]; + sVar19 = sVar18; + if (sVar22 < sVar18) { + sVar19 = sVar22; + } + if (sVar18 < sVar22) { + sVar18 = sVar22; + } + sVar22 = sVar19; + if (sVar42 < sVar19) { + sVar22 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar23 = sVar18; + if (sVar42 < sVar18) { + sVar23 = sVar42; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar22 < sVar20) { + sVar22 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + psVar67[lVar58] = sVar23; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar6 >> 1) & 7) & 7; + uVar65 = uVar1; + if (uVar79 < uVar1) { + uVar65 = uVar79; + } + psVar56 = psVar76; + if (uVar65 == 0) { +LAB_001fe2c4: + uVar84 = (ulong)uVar65; + } + else { + sVar42 = psVar76[lVar75]; + psVar56 = psVar76 + 1; + sVar18 = *(short *)((long)psVar76 + uVar83); + sVar20 = *psVar76; + sVar21 = *(short *)((long)psVar76 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar76[lVar73]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + psVar66[-8] = sVar23; + if (uVar65 == 1) goto LAB_001fe2c4; + sVar42 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar76[1]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + sVar22 = psVar56[lVar73]; + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + psVar56 = psVar76 + 2; + sVar42 = sVar19; + if (sVar20 < sVar19) { + sVar42 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar22; + if (sVar22 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar22) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-7] = sVar23; + if (uVar65 == 2) goto LAB_001fe2c4; + sVar42 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar76[2]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + sVar22 = psVar56[lVar73]; + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + psVar56 = psVar76 + 3; + sVar42 = sVar19; + if (sVar20 < sVar19) { + sVar42 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar22; + if (sVar22 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar22) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-6] = sVar23; + if (uVar65 != 3) { + sVar42 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar76[3]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + sVar22 = psVar56[lVar73]; + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + psVar56 = psVar76 + 4; + sVar42 = sVar19; + if (sVar20 < sVar19) { + sVar42 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar22; + if (sVar22 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar22) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-5] = sVar23; + if (uVar65 != 4) { + sVar42 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar76[4]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + sVar22 = psVar56[lVar73]; + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + psVar56 = psVar76 + 5; + sVar42 = sVar19; + if (sVar20 < sVar19) { + sVar42 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar22; + if (sVar22 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar22) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-4] = sVar23; + if (uVar65 != 5) { + sVar42 = psVar56[lVar75]; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar76[5]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + sVar22 = psVar56[lVar73]; + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + psVar56 = psVar76 + 6; + sVar42 = sVar19; + if (sVar20 < sVar19) { + sVar42 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar22; + if (sVar22 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar22) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-3] = sVar23; + if (uVar65 == 7) { + sVar42 = psVar56[lVar75]; + uVar84 = 7; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar76[6]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + sVar22 = psVar56[lVar73]; + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + psVar56 = psVar76 + 7; + sVar42 = sVar19; + if (sVar20 < sVar19) { + sVar42 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar22; + if (sVar22 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar22) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar42 = sVar22; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-2] = sVar23; + } + else { + uVar84 = 6; + } + goto LAB_001fdd5c; + } + } + goto LAB_001fe2c4; + } + uVar84 = 3; + } +LAB_001fdd5c: + uVar79 = ((uVar1 - uVar65) - 8 >> 3) + 1; + uVar81 = uVar79 * 8; + if (6 < uVar43 - uVar65) { + lVar68 = (ulong)uVar65 * 2; + lVar58 = 0; + uVar72 = 0; + do { + uVar72 = uVar72 + 1; + psVar6 = (short *)((long)psVar76 + lVar58 + uVar83 + lVar68); + lVar147 = lVar58 + lVar68; + psVar52 = (short *)((long)psVar76 + lVar58 + lVar64 + lVar68); + lVar149 = lVar58 + lVar68 + uVar82; + lVar7 = lVar58 + lVar62 + lVar68; + auVar125._0_4_ = (int)*psVar52; + auVar125._4_4_ = (int)psVar52[1]; + auVar125._8_4_ = (int)psVar52[2]; + auVar125._12_4_ = (int)psVar52[3]; + auVar121._0_4_ = (int)psVar52[4]; + auVar121._4_4_ = (int)psVar52[5]; + auVar121._8_4_ = (int)psVar52[6]; + auVar121._12_4_ = (int)psVar52[7]; + lVar58 = lVar58 + 0x10; + psVar52 = (short *)((long)psVar76 + lVar149); + psVar8 = (short *)((long)psVar76 + lVar7); + psVar9 = (short *)((long)psVar76 + lVar147); + puVar70 = (undefined8 *)((long)psVar67 + lVar147); + auVar108._0_4_ = (int)*psVar52; + auVar108._4_4_ = (int)psVar52[1]; + auVar108._8_4_ = (int)psVar52[2]; + auVar108._12_4_ = (int)psVar52[3]; + auVar115._0_4_ = (int)*psVar6; + auVar115._4_4_ = (int)psVar6[1]; + auVar115._8_4_ = (int)psVar6[2]; + auVar115._12_4_ = (int)psVar6[3]; + auVar93._0_4_ = (int)psVar6[4]; + auVar93._4_4_ = (int)psVar6[5]; + auVar93._8_4_ = (int)psVar6[6]; + auVar93._12_4_ = (int)psVar6[7]; + auVar141._0_4_ = (int)psVar52[4]; + auVar141._4_4_ = (int)psVar52[5]; + auVar141._8_4_ = (int)psVar52[6]; + auVar141._12_4_ = (int)psVar52[7]; + auVar91 = NEON_smin(auVar115,auVar125,4); + auVar162._0_4_ = (int)*psVar8; + auVar162._4_4_ = (int)psVar8[1]; + auVar162._8_4_ = (int)psVar8[2]; + auVar162._12_4_ = (int)psVar8[3]; + auVar133._0_4_ = (int)psVar8[4]; + auVar133._4_4_ = (int)psVar8[5]; + auVar133._8_4_ = (int)psVar8[6]; + auVar133._12_4_ = (int)psVar8[7]; + auVar174 = NEON_smax(auVar115,auVar125,4); + auVar169._0_4_ = (int)*psVar9; + auVar169._4_4_ = (int)psVar9[1]; + auVar169._8_4_ = (int)psVar9[2]; + auVar169._12_4_ = (int)psVar9[3]; + auVar155._0_4_ = (int)psVar9[4]; + auVar155._4_4_ = (int)psVar9[5]; + auVar155._8_4_ = (int)psVar9[6]; + auVar155._12_4_ = (int)psVar9[7]; + auVar166 = NEON_smin(auVar93,auVar121,4); + auVar140 = NEON_smax(auVar133,auVar141,4); + auVar88 = NEON_smax(auVar93,auVar121,4); + auVar86 = NEON_smax(auVar91,auVar169,4); + auVar98 = NEON_smax(auVar166,auVar155,4); + auVar90 = NEON_smax(auVar162,auVar108,4); + auVar91 = NEON_smin(auVar91,auVar169,4); + auVar87 = NEON_smin(auVar162,auVar108,4); + auVar166 = NEON_smin(auVar166,auVar155,4); + auVar89 = NEON_smin(auVar133,auVar141,4); + auVar90 = NEON_smin(auVar174,auVar90,4); + auVar91 = NEON_smax(auVar91,auVar87,4); + auVar140 = NEON_smin(auVar88,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar89,4); + auVar174 = NEON_smax(auVar86,auVar174,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar90 = NEON_smin(auVar90,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar174,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar166 = NEON_smax(auVar90,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar100._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar100._8_2_ = auVar88._0_2_; + auVar100._10_2_ = auVar88._4_2_; + auVar100._12_2_ = auVar88._8_2_; + auVar100._14_2_ = auVar88._12_2_; + puVar70[1] = auVar100._8_8_; + *puVar70 = auVar100._0_8_; + } while (uVar72 < uVar79); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar65 == uVar81) goto LAB_001fe290; + } + sVar21 = psVar56[lVar75]; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar42 = *psVar56; + sVar20 = psVar56[lVar73]; + sVar19 = sVar18; + if (sVar21 < sVar18) { + sVar19 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar22 = *(short *)((long)psVar56 + uVar82); + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar22) { + sVar42 = sVar22; + } + sVar23 = sVar18; + if (sVar42 < sVar18) { + sVar23 = sVar42; + } + if (sVar22 < sVar20) { + sVar20 = sVar22; + } + iVar54 = (int)uVar84; + if (sVar21 < sVar20) { + sVar21 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar21) { + sVar21 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar21) { + sVar23 = sVar21; + } + *(short *)((long)psVar67 + uVar78) = sVar23; + if (iVar54 + 1 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 1]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 2); + sVar20 = psVar56[1]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 2); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar56[lVar73 + 1]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar23; + if (iVar54 + 2 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 2]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 4); + sVar20 = psVar56[2]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 4); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar56[lVar73 + 2]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar23; + if (iVar54 + 3 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 3]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 6); + sVar20 = psVar56[3]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 6); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar56[lVar73 + 3]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar23; + if (iVar54 + 4 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 4]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 8); + sVar20 = psVar56[4]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 8); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar56[lVar73 + 4]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar23; + if (iVar54 + 5 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 5]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 10); + sVar20 = psVar56[5]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 10); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar56[lVar73 + 5]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar23; + if (iVar54 + 6 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 6]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 0xc); + sVar20 = psVar56[6]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 0xc); + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar42 = psVar56[lVar73 + 6]; + sVar22 = sVar19; + if (sVar20 < sVar19) { + sVar22 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + sVar20 = sVar42; + if (sVar42 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar18; + if (sVar20 < sVar18) { + sVar23 = sVar20; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar22 < sVar42) { + sVar22 = sVar42; + } + sVar20 = sVar19; + if (sVar19 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar19 < sVar23) { + sVar23 = sVar19; + } + if (sVar23 < sVar22) { + sVar23 = sVar22; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar23; + } + } + } + } + } + } + } + } + else { + if (iVar71 < 2) { + psVar6 = psVar76 + lVar73; + if ((uVar1 < 9 || + (psVar67 < psVar56 && psVar6 < psVar66 || + psVar67 < (short *)((long)psVar76 + lVar61) && + (short *)((long)psVar76 + uVar83) < psVar66)) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar19 = psVar76[lVar58]; + sVar20 = ((short *)((long)psVar76 + uVar83))[lVar58]; + sVar42 = psVar6[lVar58]; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar21 = sVar19; + if (sVar19 < sVar20) { + sVar21 = sVar20; + } + sVar20 = sVar18; + if (sVar19 < sVar18) { + sVar20 = sVar19; + } + if (sVar18 < sVar19) { + sVar18 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + sVar19 = sVar18; + if (sVar18 < sVar21) { + sVar19 = sVar21; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar42 < sVar21) { + sVar21 = sVar42; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar21 < sVar20) { + sVar21 = sVar20; + } + psVar67[lVar58] = sVar21; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar6 >> 1) & 7) & 7; + uVar65 = uVar1; + if (uVar79 < uVar1) { + uVar65 = uVar79; + } + psVar56 = psVar76; + if (uVar65 == 0) { +LAB_002032f8: + uVar84 = (ulong)uVar65; + } + else { + sVar20 = *psVar76; + psVar56 = psVar76 + 1; + sVar42 = *(short *)((long)psVar76 + uVar83); + sVar19 = psVar76[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + psVar66[-8] = sVar19; + if (uVar65 == 1) goto LAB_002032f8; + sVar20 = psVar76[1]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 2; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + psVar66[-7] = sVar19; + if (uVar65 == 2) goto LAB_002032f8; + sVar20 = psVar76[2]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 3; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + psVar66[-6] = sVar19; + if (uVar65 != 3) { + sVar20 = psVar76[3]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 4; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + psVar66[-5] = sVar19; + if (uVar65 != 4) { + sVar20 = psVar76[4]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 5; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + psVar66[-4] = sVar19; + if (uVar65 != 5) { + sVar20 = psVar76[5]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 6; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + psVar66[-3] = sVar19; + if (uVar65 == 7) { + sVar42 = psVar76[6]; + uVar84 = 7; + sVar18 = *(short *)((long)psVar56 + uVar83); + sVar20 = psVar56[lVar73]; + psVar56 = psVar76 + 7; + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar21) { + sVar42 = sVar21; + } + sVar21 = sVar19; + if (sVar19 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar42) { + sVar42 = sVar21; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-2] = sVar20; + } + else { + uVar84 = 6; + } + goto LAB_00201634; + } + } + goto LAB_002032f8; + } + uVar84 = 3; + } +LAB_00201634: + uVar79 = ((uVar1 - uVar65) - 8 >> 3) + 1; + uVar81 = uVar79 * 8; + if (6 < uVar43 - uVar65) { + lVar68 = (ulong)uVar65 * 2; + lVar58 = 0; + uVar72 = 0; + lVar147 = NEON_shl(lVar73 + (ulong)uVar65,1); + do { + lVar149 = lVar58 + lVar68; + psVar6 = (short *)((long)psVar76 + lVar58 + lVar68 + uVar83); + psVar52 = (short *)((long)psVar76 + lVar149); + uVar72 = uVar72 + 1; + lVar7 = lVar58 + lVar68 + lVar62; + auVar160._0_4_ = (int)*psVar52; + auVar160._4_4_ = (int)psVar52[1]; + auVar160._8_4_ = (int)psVar52[2]; + auVar160._12_4_ = (int)psVar52[3]; + auVar146._0_4_ = (int)psVar52[4]; + auVar146._4_4_ = (int)psVar52[5]; + auVar146._8_4_ = (int)psVar52[6]; + auVar146._12_4_ = (int)psVar52[7]; + lVar10 = lVar58 + lVar147; + lVar58 = lVar58 + 0x10; + psVar52 = (short *)((long)psVar76 + lVar10); + psVar8 = (short *)((long)psVar76 + lVar7); + puVar70 = (undefined8 *)((long)psVar67 + lVar149); + auVar130._0_4_ = (int)*psVar6; + auVar130._4_4_ = (int)psVar6[1]; + auVar130._8_4_ = (int)psVar6[2]; + auVar130._12_4_ = (int)psVar6[3]; + auVar97._0_4_ = (int)psVar6[4]; + auVar97._4_4_ = (int)psVar6[5]; + auVar97._8_4_ = (int)psVar6[6]; + auVar97._12_4_ = (int)psVar6[7]; + auVar112._0_4_ = (int)*psVar8; + auVar112._4_4_ = (int)psVar8[1]; + auVar112._8_4_ = (int)psVar8[2]; + auVar112._12_4_ = (int)psVar8[3]; + auVar91 = NEON_smin(auVar160,auVar130,4); + auVar119._0_4_ = (int)*psVar52; + auVar119._4_4_ = (int)psVar52[1]; + auVar119._8_4_ = (int)psVar52[2]; + auVar119._12_4_ = (int)psVar52[3]; + auVar166 = NEON_smin(auVar97,auVar146,4); + auVar154._0_4_ = (int)psVar8[4]; + auVar154._4_4_ = (int)psVar8[5]; + auVar154._8_4_ = (int)psVar8[6]; + auVar154._12_4_ = (int)psVar8[7]; + auVar138._0_4_ = (int)psVar52[4]; + auVar138._4_4_ = (int)psVar52[5]; + auVar138._8_4_ = (int)psVar52[6]; + auVar138._12_4_ = (int)psVar52[7]; + auVar86 = NEON_smax(auVar91,auVar160,4); + auVar98 = NEON_smax(auVar166,auVar146,4); + auVar174 = NEON_smax(auVar119,auVar112,4); + auVar89 = NEON_smax(auVar160,auVar130,4); + auVar88 = NEON_smax(auVar97,auVar146,4); + auVar91 = NEON_smin(auVar91,auVar160,4); + auVar140 = NEON_smin(auVar119,auVar112,4); + auVar166 = NEON_smin(auVar166,auVar146,4); + auVar90 = NEON_smax(auVar138,auVar154,4); + auVar87 = NEON_smin(auVar138,auVar154,4); + auVar174 = NEON_smin(auVar89,auVar174,4); + auVar91 = NEON_smax(auVar91,auVar140,4); + auVar140 = NEON_smin(auVar88,auVar90,4); + auVar166 = NEON_smax(auVar166,auVar87,4); + auVar89 = NEON_smax(auVar86,auVar89,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar90 = NEON_smin(auVar174,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar89,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar166 = NEON_smax(auVar90,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar104._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar104._8_2_ = auVar88._0_2_; + auVar104._10_2_ = auVar88._4_2_; + auVar104._12_2_ = auVar88._8_2_; + auVar104._14_2_ = auVar88._12_2_; + puVar70[1] = auVar104._8_8_; + *puVar70 = auVar104._0_8_; + } while (uVar72 < uVar79); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar65 == uVar81) goto LAB_001fe290; + } + sVar20 = *psVar56; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar42 = *(short *)((long)psVar56 + uVar83); + iVar54 = (int)uVar84; + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + *(short *)((long)psVar67 + uVar78) = sVar19; + if (iVar54 + 1 < (int)uVar1) { + sVar20 = psVar56[1]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 2); + sVar19 = psVar56[lVar73 + 1]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar19; + if (iVar54 + 2 < (int)uVar1) { + sVar20 = psVar56[2]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 4); + sVar19 = psVar56[lVar73 + 2]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar19; + if (iVar54 + 3 < (int)uVar1) { + sVar20 = psVar56[3]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 6); + sVar19 = psVar56[lVar73 + 3]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar19; + if (iVar54 + 4 < (int)uVar1) { + sVar20 = psVar56[4]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 8); + sVar19 = psVar56[lVar73 + 4]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar19; + if (iVar54 + 5 < (int)uVar1) { + sVar20 = psVar56[5]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 10); + sVar19 = psVar56[lVar73 + 5]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar42) { + sVar21 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar18 < sVar19) { + sVar19 = sVar18; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar19; + if (iVar54 + 6 < (int)uVar1) { + sVar42 = psVar56[6]; + sVar18 = *(short *)((long)psVar56 + uVar83 + 0xc); + sVar20 = psVar56[lVar73 + 6]; + sVar19 = sVar18; + if (sVar42 < sVar18) { + sVar19 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar19; + if (sVar42 < sVar19) { + sVar21 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + if (sVar21 < sVar20) { + sVar21 = sVar20; + } + sVar42 = sVar19; + if (sVar19 < sVar18) { + sVar42 = sVar18; + } + if (sVar42 < sVar21) { + sVar21 = sVar42; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar20; + } + } + } + } + } + } + goto LAB_001fe290; + } + if (((uVar1 < 9 || + (psVar67 < psVar56 && psVar76 + lVar73 < psVar66 || + psVar67 < (short *)((long)psVar76 + lVar57) && + (short *)((long)psVar76 + uVar82) < psVar66)) || + psVar67 < (short *)((long)psVar76 + lVar61) && + (short *)((long)psVar76 + uVar83) < psVar66) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar20 = psVar76[lVar58]; + sVar42 = ((short *)((long)psVar76 + uVar82))[lVar58]; + sVar19 = (psVar76 + lVar73)[lVar58]; + sVar21 = ((short *)((long)psVar76 + uVar83))[lVar58]; + sVar18 = sVar20; + if (sVar21 < sVar20) { + sVar18 = sVar21; + } + sVar22 = sVar20; + if (sVar20 < sVar21) { + sVar22 = sVar21; + } + sVar21 = sVar18; + if (sVar20 < sVar18) { + sVar21 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar42) { + sVar20 = sVar42; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar21 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar21) { + sVar21 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar21) { + sVar23 = sVar21; + } + psVar67[lVar58] = sVar23; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + uVar65 = uVar1; + if (uVar79 < uVar1) { + uVar65 = uVar79; + } + psVar56 = psVar76; + if (uVar65 == 0) { +LAB_00201234: + uVar84 = (ulong)uVar65; + } + else { + sVar20 = *psVar76; + psVar56 = psVar76 + 1; + sVar42 = *(short *)((long)psVar76 + uVar83); + sVar21 = *(short *)((long)psVar76 + uVar82); + sVar19 = psVar76[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-8] = sVar23; + if (uVar65 == 1) goto LAB_00201234; + sVar20 = psVar76[1]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + psVar56 = psVar76 + 2; + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-7] = sVar23; + if (uVar65 == 2) goto LAB_00201234; + sVar20 = psVar76[2]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + psVar56 = psVar76 + 3; + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-6] = sVar23; + if (uVar65 != 3) { + sVar20 = psVar76[3]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + psVar56 = psVar76 + 4; + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-5] = sVar23; + if (uVar65 != 4) { + sVar20 = psVar76[4]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + psVar56 = psVar76 + 5; + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-4] = sVar23; + if (uVar65 != 5) { + sVar20 = psVar76[5]; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + psVar56 = psVar76 + 6; + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-3] = sVar23; + if (uVar65 == 7) { + sVar20 = psVar76[6]; + uVar84 = 7; + sVar42 = *(short *)((long)psVar56 + uVar83); + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + psVar56 = psVar76 + 7; + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-2] = sVar23; + } + else { + uVar84 = 6; + } + goto LAB_001ff0d4; + } + } + goto LAB_00201234; + } + uVar84 = 3; + } +LAB_001ff0d4: + uVar79 = ((uVar1 - uVar65) - 8 >> 3) + 1; + uVar81 = uVar79 * 8; + if (6 < uVar43 - uVar65) { + lVar68 = (ulong)uVar65 * 2; + lVar58 = 0; + uVar72 = 0; + do { + lVar147 = lVar58 + lVar68; + psVar6 = (short *)((long)psVar76 + lVar58 + uVar83 + lVar68); + psVar52 = (short *)((long)psVar76 + lVar147); + uVar72 = uVar72 + 1; + lVar149 = lVar58 + lVar68 + uVar82; + auVar157._0_4_ = (int)*psVar52; + auVar157._4_4_ = (int)psVar52[1]; + auVar157._8_4_ = (int)psVar52[2]; + auVar157._12_4_ = (int)psVar52[3]; + auVar143._0_4_ = (int)psVar52[4]; + auVar143._4_4_ = (int)psVar52[5]; + auVar143._8_4_ = (int)psVar52[6]; + auVar143._12_4_ = (int)psVar52[7]; + lVar7 = lVar58 + lVar62 + lVar68; + lVar58 = lVar58 + 0x10; + psVar52 = (short *)((long)psVar76 + lVar7); + psVar8 = (short *)((long)psVar76 + lVar149); + puVar70 = (undefined8 *)((long)psVar67 + lVar147); + auVar127._0_4_ = (int)*psVar6; + auVar127._4_4_ = (int)psVar6[1]; + auVar127._8_4_ = (int)psVar6[2]; + auVar127._12_4_ = (int)psVar6[3]; + auVar95._0_4_ = (int)psVar6[4]; + auVar95._4_4_ = (int)psVar6[5]; + auVar95._8_4_ = (int)psVar6[6]; + auVar95._12_4_ = (int)psVar6[7]; + auVar110._0_4_ = (int)*psVar8; + auVar110._4_4_ = (int)psVar8[1]; + auVar110._8_4_ = (int)psVar8[2]; + auVar110._12_4_ = (int)psVar8[3]; + auVar91 = NEON_smin(auVar157,auVar127,4); + auVar117._0_4_ = (int)*psVar52; + auVar117._4_4_ = (int)psVar52[1]; + auVar117._8_4_ = (int)psVar52[2]; + auVar117._12_4_ = (int)psVar52[3]; + auVar166 = NEON_smin(auVar143,auVar95,4); + auVar153._0_4_ = (int)psVar8[4]; + auVar153._4_4_ = (int)psVar8[5]; + auVar153._8_4_ = (int)psVar8[6]; + auVar153._12_4_ = (int)psVar8[7]; + auVar135._0_4_ = (int)psVar52[4]; + auVar135._4_4_ = (int)psVar52[5]; + auVar135._8_4_ = (int)psVar52[6]; + auVar135._12_4_ = (int)psVar52[7]; + auVar86 = NEON_smax(auVar91,auVar157,4); + auVar98 = NEON_smax(auVar166,auVar143,4); + auVar174 = NEON_smax(auVar117,auVar110,4); + auVar89 = NEON_smax(auVar157,auVar127,4); + auVar88 = NEON_smax(auVar143,auVar95,4); + auVar91 = NEON_smin(auVar91,auVar157,4); + auVar140 = NEON_smin(auVar117,auVar110,4); + auVar166 = NEON_smin(auVar166,auVar143,4); + auVar90 = NEON_smax(auVar135,auVar153,4); + auVar87 = NEON_smin(auVar135,auVar153,4); + auVar174 = NEON_smin(auVar89,auVar174,4); + auVar91 = NEON_smax(auVar91,auVar140,4); + auVar140 = NEON_smin(auVar88,auVar90,4); + auVar166 = NEON_smax(auVar166,auVar87,4); + auVar89 = NEON_smax(auVar86,auVar89,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar90 = NEON_smin(auVar174,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar89,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar166 = NEON_smax(auVar90,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar102._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar102._8_2_ = auVar88._0_2_; + auVar102._10_2_ = auVar88._4_2_; + auVar102._12_2_ = auVar88._8_2_; + auVar102._14_2_ = auVar88._12_2_; + puVar70[1] = auVar102._8_8_; + *puVar70 = auVar102._0_8_; + } while (uVar72 < uVar79); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar65 == uVar81) goto LAB_001fe290; + } + sVar20 = *psVar56; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar42 = *(short *)((long)psVar56 + uVar83); + iVar54 = (int)uVar84; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78) = sVar23; + if (iVar54 + 1 < (int)uVar1) { + sVar20 = psVar56[1]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 2); + sVar21 = *(short *)((long)psVar56 + uVar82 + 2); + sVar19 = psVar56[lVar73 + 1]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar23; + if (iVar54 + 2 < (int)uVar1) { + sVar20 = psVar56[2]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 4); + sVar21 = *(short *)((long)psVar56 + uVar82 + 4); + sVar19 = psVar56[lVar73 + 2]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar23; + if (iVar54 + 3 < (int)uVar1) { + sVar20 = psVar56[3]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 6); + sVar21 = *(short *)((long)psVar56 + uVar82 + 6); + sVar19 = psVar56[lVar73 + 3]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar23; + if (iVar54 + 4 < (int)uVar1) { + sVar20 = psVar56[4]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 8); + sVar21 = *(short *)((long)psVar56 + uVar82 + 8); + sVar19 = psVar56[lVar73 + 4]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar23; + if (iVar54 + 5 < (int)uVar1) { + sVar20 = psVar56[5]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 10); + sVar21 = *(short *)((long)psVar56 + uVar82 + 10); + sVar19 = psVar56[lVar73 + 5]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar23; + if (iVar54 + 6 < (int)uVar1) { + sVar20 = psVar56[6]; + sVar42 = *(short *)((long)psVar56 + uVar83 + 0xc); + sVar21 = *(short *)((long)psVar56 + uVar82 + 0xc); + sVar19 = psVar56[lVar73 + 6]; + sVar18 = sVar20; + if (sVar42 < sVar20) { + sVar18 = sVar42; + } + sVar22 = sVar20; + if (sVar20 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar20 = sVar19; + if (sVar19 < sVar21) { + sVar20 = sVar21; + } + sVar23 = sVar22; + if (sVar20 < sVar22) { + sVar23 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar23; + } + } + } + } + } + } + } + } + else if (iVar71 < iVar63) { + psVar6 = psVar76 + lVar73; + if (iVar71 < 2) { + if ((uVar1 < 9 || + (psVar67 < psVar56 && psVar6 < psVar66 || + psVar67 < psVar76 + lVar75 + 8 && psVar76 + lVar75 < psVar66)) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar19 = (psVar76 + lVar75)[lVar58]; + sVar20 = psVar76[lVar58]; + sVar42 = psVar6[lVar58]; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + sVar21 = sVar19; + if (sVar19 < sVar20) { + sVar21 = sVar20; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar20 = sVar21; + if (sVar21 < sVar19) { + sVar20 = sVar19; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar67[lVar58] = sVar19; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar6 >> 1) & 7) & 7; + uVar65 = uVar1; + if (uVar79 < uVar1) { + uVar65 = uVar79; + } + psVar56 = psVar76; + if (uVar65 == 0) { +LAB_00201154: + uVar84 = (ulong)uVar65; + } + else { + sVar42 = psVar76[lVar75]; + psVar56 = psVar76 + 1; + sVar19 = *psVar76; + sVar20 = psVar76[lVar73]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar66[-8] = sVar20; + if (uVar65 == 1) goto LAB_00201154; + sVar42 = psVar56[lVar75]; + sVar19 = psVar76[1]; + sVar20 = psVar56[lVar73]; + psVar56 = psVar76 + 2; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar66[-7] = sVar20; + if (uVar65 == 2) goto LAB_00201154; + sVar42 = psVar56[lVar75]; + sVar19 = psVar76[2]; + sVar20 = psVar56[lVar73]; + psVar56 = psVar76 + 3; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar66[-6] = sVar20; + if (uVar65 != 3) { + sVar42 = psVar56[lVar75]; + sVar19 = psVar76[3]; + sVar20 = psVar56[lVar73]; + psVar56 = psVar76 + 4; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar66[-5] = sVar20; + if (uVar65 != 4) { + sVar42 = psVar56[lVar75]; + sVar19 = psVar76[4]; + sVar20 = psVar56[lVar73]; + psVar56 = psVar76 + 5; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar66[-4] = sVar20; + if (uVar65 != 5) { + sVar42 = psVar56[lVar75]; + sVar19 = psVar76[5]; + sVar20 = psVar56[lVar73]; + psVar56 = psVar76 + 6; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + psVar66[-3] = sVar20; + if (uVar65 == 7) { + sVar20 = psVar56[lVar75]; + uVar84 = 7; + sVar18 = psVar76[6]; + sVar42 = psVar56[lVar73]; + psVar56 = psVar76 + 7; + sVar19 = sVar18; + if (sVar20 < sVar18) { + sVar19 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar18; + if (sVar18 < sVar20) { + sVar21 = sVar20; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-2] = sVar20; + } + else { + uVar84 = 6; + } + goto LAB_002001c8; + } + } + goto LAB_00201154; + } + uVar84 = 3; + } +LAB_002001c8: + uVar78 = (ulong)uVar65; + uVar79 = ((uVar1 - uVar65) - 8 >> 3) + 1; + uVar81 = uVar79 * 8; + if (6 < uVar43 - uVar65) { + lVar68 = uVar78 * 2; + lVar58 = 0; + lVar149 = NEON_shl(lVar73 + uVar78,1); + uVar72 = 0; + lVar147 = NEON_shl(lVar75 + uVar78,1); + do { + uVar72 = uVar72 + 1; + psVar6 = (short *)((long)psVar76 + lVar58 + lVar68 + lVar64); + psVar52 = (short *)((long)psVar76 + lVar58 + lVar147); + lVar7 = lVar58 + lVar68; + psVar8 = (short *)((long)psVar76 + lVar58 + lVar68 + lVar62); + psVar9 = (short *)((long)psVar76 + lVar7); + auVar129._0_4_ = (int)*psVar6; + auVar129._4_4_ = (int)psVar6[1]; + auVar129._8_4_ = (int)psVar6[2]; + auVar129._12_4_ = (int)psVar6[3]; + psVar11 = (short *)((long)psVar76 + lVar58 + lVar149); + auVar188._0_4_ = (int)*psVar52; + auVar188._4_4_ = (int)psVar52[1]; + auVar188._8_4_ = (int)psVar52[2]; + auVar188._12_4_ = (int)psVar52[3]; + auVar189._0_4_ = (int)psVar6[4]; + auVar189._4_4_ = (int)psVar6[5]; + auVar189._8_4_ = (int)psVar6[6]; + auVar189._12_4_ = (int)psVar6[7]; + lVar58 = lVar58 + 0x10; + puVar70 = (undefined8 *)((long)psVar67 + lVar7); + auVar184._0_4_ = (int)psVar52[4]; + auVar184._4_4_ = (int)psVar52[5]; + auVar184._8_4_ = (int)psVar52[6]; + auVar184._12_4_ = (int)psVar52[7]; + auVar186._0_4_ = (int)*psVar8; + auVar186._4_4_ = (int)psVar8[1]; + auVar186._8_4_ = (int)psVar8[2]; + auVar186._12_4_ = (int)psVar8[3]; + auVar91 = NEON_smin(auVar188,auVar129,4); + auVar145._0_4_ = (int)psVar8[4]; + auVar145._4_4_ = (int)psVar8[5]; + auVar145._8_4_ = (int)psVar8[6]; + auVar145._12_4_ = (int)psVar8[7]; + auVar174 = NEON_smax(auVar188,auVar129,4); + auVar172._0_4_ = (int)*psVar9; + auVar172._4_4_ = (int)psVar9[1]; + auVar172._8_4_ = (int)psVar9[2]; + auVar172._12_4_ = (int)psVar9[3]; + auVar159._0_4_ = (int)psVar9[4]; + auVar159._4_4_ = (int)psVar9[5]; + auVar159._8_4_ = (int)psVar9[6]; + auVar159._12_4_ = (int)psVar9[7]; + auVar166 = NEON_smin(auVar184,auVar189,4); + auVar88 = NEON_smax(auVar184,auVar189,4); + auVar165._0_4_ = (int)*psVar11; + auVar165._4_4_ = (int)psVar11[1]; + auVar165._8_4_ = (int)psVar11[2]; + auVar165._12_4_ = (int)psVar11[3]; + auVar137._0_4_ = (int)psVar11[4]; + auVar137._4_4_ = (int)psVar11[5]; + auVar137._8_4_ = (int)psVar11[6]; + auVar137._12_4_ = (int)psVar11[7]; + auVar86 = NEON_smax(auVar91,auVar172,4); + auVar98 = NEON_smax(auVar166,auVar159,4); + auVar90 = NEON_smax(auVar165,auVar186,4); + auVar91 = NEON_smin(auVar91,auVar172,4); + auVar140 = NEON_smax(auVar137,auVar145,4); + auVar87 = NEON_smin(auVar165,auVar186,4); + auVar166 = NEON_smin(auVar166,auVar159,4); + auVar89 = NEON_smin(auVar137,auVar145,4); + auVar90 = NEON_smin(auVar174,auVar90,4); + auVar91 = NEON_smax(auVar91,auVar87,4); + auVar140 = NEON_smin(auVar88,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar89,4); + auVar174 = NEON_smax(auVar86,auVar174,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar90 = NEON_smin(auVar90,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar174,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar166 = NEON_smax(auVar90,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar185._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar185._8_2_ = auVar88._0_2_; + auVar185._10_2_ = auVar88._4_2_; + auVar185._12_2_ = auVar88._8_2_; + auVar185._14_2_ = auVar88._12_2_; + puVar70[1] = auVar185._8_8_; + *puVar70 = auVar185._0_8_; + } while (uVar72 < uVar79); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar65 == uVar81) goto LAB_001fe290; + } + sVar42 = psVar56[lVar75]; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar19 = *psVar56; + iVar54 = (int)uVar84; + sVar20 = psVar56[lVar73]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78) = sVar20; + if (iVar54 + 1 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 1]; + sVar19 = psVar56[1]; + sVar20 = psVar56[lVar73 + 1]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar20; + if (iVar54 + 2 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 2]; + sVar19 = psVar56[2]; + sVar20 = psVar56[lVar73 + 2]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar20; + if (iVar54 + 3 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 3]; + sVar19 = psVar56[3]; + sVar20 = psVar56[lVar73 + 3]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar20; + if (iVar54 + 4 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 4]; + sVar19 = psVar56[4]; + sVar20 = psVar56[lVar73 + 4]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar20; + if (iVar54 + 5 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 5]; + sVar19 = psVar56[5]; + sVar20 = psVar56[lVar73 + 5]; + sVar18 = sVar19; + if (sVar42 < sVar19) { + sVar18 = sVar42; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + if (sVar18 < sVar21) { + sVar21 = sVar18; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar21) { + sVar20 = sVar21; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar20; + if (iVar54 + 6 < (int)uVar1) { + sVar20 = psVar56[lVar75 + 6]; + sVar18 = psVar56[6]; + sVar42 = psVar56[lVar73 + 6]; + sVar19 = sVar18; + if (sVar20 < sVar18) { + sVar19 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + sVar21 = sVar20; + if (sVar20 < sVar18) { + sVar21 = sVar18; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar20) { + sVar20 = sVar42; + } + if (sVar18 < sVar20) { + sVar20 = sVar18; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar20; + } + } + } + } + } + } + } + else { + psVar52 = psVar76 + lVar75; + if (((uVar1 < 9 || + (psVar67 < psVar56 && psVar6 < psVar66 || + psVar67 < (short *)((long)psVar76 + lVar57) && + (short *)((long)psVar76 + uVar82) < psVar66)) || + psVar67 < psVar76 + lVar75 + 8 && psVar52 < psVar66) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar20 = psVar52[lVar58]; + sVar18 = psVar76[lVar58]; + sVar42 = ((short *)((long)psVar76 + uVar82))[lVar58]; + sVar19 = sVar18; + if (sVar20 < sVar18) { + sVar19 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar21 = psVar6[lVar58]; + sVar22 = sVar21; + if (sVar21 < sVar42) { + sVar22 = sVar42; + } + if (sVar20 < sVar22) { + sVar22 = sVar20; + } + if (sVar42 < sVar21) { + sVar21 = sVar42; + } + if (sVar19 < sVar21) { + sVar19 = sVar21; + } + sVar42 = sVar18; + if (sVar18 < sVar20) { + sVar42 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar18 < sVar22) { + sVar22 = sVar18; + } + if (sVar22 < sVar19) { + sVar22 = sVar19; + } + psVar67[lVar58] = sVar22; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar52 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar56 = psVar76; + if (uVar79 == 0) { +LAB_001ffe48: + uVar84 = (ulong)uVar79; + } + else { + sVar20 = psVar76[lVar75]; + psVar56 = psVar76 + 1; + sVar18 = *psVar76; + sVar21 = *(short *)((long)psVar76 + uVar82); + sVar19 = psVar76[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-8] = sVar23; + if (uVar79 == 1) goto LAB_001ffe48; + sVar20 = psVar56[lVar75]; + sVar18 = psVar76[1]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + psVar56 = psVar76 + 2; + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-7] = sVar23; + if (uVar79 == 2) goto LAB_001ffe48; + sVar20 = psVar56[lVar75]; + sVar18 = psVar76[2]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + psVar56 = psVar76 + 3; + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-6] = sVar23; + if (uVar79 != 3) { + sVar20 = psVar56[lVar75]; + sVar18 = psVar76[3]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + psVar56 = psVar76 + 4; + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-5] = sVar23; + if (uVar79 != 4) { + sVar20 = psVar56[lVar75]; + sVar18 = psVar76[4]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + psVar56 = psVar76 + 5; + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-4] = sVar23; + if (uVar79 != 5) { + sVar20 = psVar56[lVar75]; + sVar18 = psVar76[5]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + psVar56 = psVar76 + 6; + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + psVar66[-3] = sVar23; + if (uVar79 == 7) { + sVar19 = psVar56[lVar75]; + uVar84 = 7; + sVar42 = psVar76[6]; + sVar21 = *(short *)((long)psVar56 + uVar82); + sVar18 = psVar56[lVar73]; + sVar20 = sVar19; + if (sVar42 < sVar19) { + sVar20 = sVar42; + } + sVar22 = sVar19; + if (sVar19 < sVar42) { + sVar22 = sVar42; + } + sVar42 = sVar18; + if (sVar18 < sVar21) { + sVar42 = sVar21; + } + psVar56 = psVar76 + 7; + if (sVar19 < sVar42) { + sVar42 = sVar19; + } + if (sVar21 < sVar18) { + sVar18 = sVar21; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar19 < sVar22) { + sVar19 = sVar22; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar22 < sVar42) { + sVar42 = sVar22; + } + if (sVar42 < sVar20) { + sVar42 = sVar20; + } + psVar66[-2] = sVar42; + } + else { + uVar84 = 6; + } + goto LAB_001ff988; + } + } + goto LAB_001ffe48; + } + uVar84 = 3; + } +LAB_001ff988: + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar68 = (ulong)uVar79 * 2; + lVar58 = 0; + uVar72 = 0; + lVar147 = NEON_shl(lVar75 + (ulong)uVar79,1); + do { + psVar6 = (short *)((long)psVar76 + lVar58 + lVar68 + lVar64); + uVar72 = uVar72 + 1; + lVar149 = lVar58 + lVar68 + uVar82; + psVar52 = (short *)((long)psVar76 + lVar58 + lVar147); + lVar7 = lVar58 + lVar68; + auVar128._0_4_ = (int)*psVar6; + auVar128._4_4_ = (int)psVar6[1]; + auVar128._8_4_ = (int)psVar6[2]; + auVar128._12_4_ = (int)psVar6[3]; + auVar123._0_4_ = (int)psVar6[4]; + auVar123._4_4_ = (int)psVar6[5]; + auVar123._8_4_ = (int)psVar6[6]; + auVar123._12_4_ = (int)psVar6[7]; + lVar10 = lVar58 + lVar68 + lVar62; + lVar58 = lVar58 + 0x10; + psVar6 = (short *)((long)psVar76 + lVar149); + auVar118._0_4_ = (int)*psVar52; + auVar118._4_4_ = (int)psVar52[1]; + auVar118._8_4_ = (int)psVar52[2]; + auVar118._12_4_ = (int)psVar52[3]; + auVar96._0_4_ = (int)psVar52[4]; + auVar96._4_4_ = (int)psVar52[5]; + auVar96._8_4_ = (int)psVar52[6]; + auVar96._12_4_ = (int)psVar52[7]; + psVar52 = (short *)((long)psVar76 + lVar10); + psVar8 = (short *)((long)psVar76 + lVar7); + puVar70 = (undefined8 *)((long)psVar67 + lVar7); + auVar91 = NEON_smin(auVar118,auVar128,4); + auVar174 = NEON_smax(auVar118,auVar128,4); + auVar111._0_4_ = (int)*psVar6; + auVar111._4_4_ = (int)psVar6[1]; + auVar111._8_4_ = (int)psVar6[2]; + auVar111._12_4_ = (int)psVar6[3]; + auVar171._0_4_ = (int)*psVar8; + auVar171._4_4_ = (int)psVar8[1]; + auVar171._8_4_ = (int)psVar8[2]; + auVar171._12_4_ = (int)psVar8[3]; + auVar158._0_4_ = (int)psVar8[4]; + auVar158._4_4_ = (int)psVar8[5]; + auVar158._8_4_ = (int)psVar8[6]; + auVar158._12_4_ = (int)psVar8[7]; + auVar144._0_4_ = (int)psVar6[4]; + auVar144._4_4_ = (int)psVar6[5]; + auVar144._8_4_ = (int)psVar6[6]; + auVar144._12_4_ = (int)psVar6[7]; + auVar166 = NEON_smin(auVar96,auVar123,4); + auVar164._0_4_ = (int)*psVar52; + auVar164._4_4_ = (int)psVar52[1]; + auVar164._8_4_ = (int)psVar52[2]; + auVar164._12_4_ = (int)psVar52[3]; + auVar136._0_4_ = (int)psVar52[4]; + auVar136._4_4_ = (int)psVar52[5]; + auVar136._8_4_ = (int)psVar52[6]; + auVar136._12_4_ = (int)psVar52[7]; + auVar88 = NEON_smax(auVar96,auVar123,4); + auVar86 = NEON_smax(auVar91,auVar171,4); + auVar98 = NEON_smax(auVar166,auVar158,4); + auVar90 = NEON_smax(auVar164,auVar111,4); + auVar91 = NEON_smin(auVar91,auVar171,4); + auVar140 = NEON_smax(auVar136,auVar144,4); + auVar87 = NEON_smin(auVar164,auVar111,4); + auVar166 = NEON_smin(auVar166,auVar158,4); + auVar89 = NEON_smin(auVar136,auVar144,4); + auVar90 = NEON_smin(auVar174,auVar90,4); + auVar91 = NEON_smax(auVar91,auVar87,4); + auVar140 = NEON_smin(auVar88,auVar140,4); + auVar166 = NEON_smax(auVar166,auVar89,4); + auVar174 = NEON_smax(auVar86,auVar174,4); + auVar88 = NEON_smax(auVar98,auVar88,4); + auVar90 = NEON_smin(auVar90,auVar86,4); + auVar91 = NEON_smin(auVar91,auVar174,4); + auVar88 = NEON_smin(auVar166,auVar88,4); + auVar140 = NEON_smin(auVar140,auVar98,4); + auVar166 = NEON_smax(auVar90,auVar91,4); + auVar88 = NEON_smax(auVar140,auVar88,4); + auVar103._0_8_ = + CONCAT26(auVar166._12_2_, + CONCAT24(auVar166._8_2_,CONCAT22(auVar166._4_2_,auVar166._0_2_))); + auVar103._8_2_ = auVar88._0_2_; + auVar103._10_2_ = auVar88._4_2_; + auVar103._12_2_ = auVar88._8_2_; + auVar103._14_2_ = auVar88._12_2_; + puVar70[1] = auVar103._8_8_; + *puVar70 = auVar103._0_8_; + } while (uVar72 < uVar65); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar79 == uVar81) goto LAB_001fe290; + } + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar20 = psVar56[lVar75]; + sVar21 = *(short *)((long)psVar56 + uVar82); + iVar54 = (int)uVar84; + sVar18 = *psVar56; + sVar19 = psVar56[lVar73]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78) = sVar23; + if (iVar54 + 1 < (int)uVar1) { + sVar20 = psVar56[lVar75 + 1]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 2); + sVar19 = psVar56[lVar73 + 1]; + sVar18 = psVar56[1]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar23; + if (iVar54 + 2 < (int)uVar1) { + sVar20 = psVar56[lVar75 + 2]; + sVar18 = psVar56[2]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 4); + sVar19 = psVar56[lVar73 + 2]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar23; + if (iVar54 + 3 < (int)uVar1) { + sVar20 = psVar56[lVar75 + 3]; + sVar18 = psVar56[3]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 6); + sVar19 = psVar56[lVar73 + 3]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar23; + if (iVar54 + 4 < (int)uVar1) { + sVar20 = psVar56[lVar75 + 4]; + sVar18 = psVar56[4]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 8); + sVar19 = psVar56[lVar73 + 4]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar23; + if (iVar54 + 5 < (int)uVar1) { + sVar20 = psVar56[lVar75 + 5]; + sVar18 = psVar56[5]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 10); + sVar19 = psVar56[lVar73 + 5]; + sVar42 = sVar18; + if (sVar20 < sVar18) { + sVar42 = sVar20; + } + if (sVar18 < sVar20) { + sVar18 = sVar20; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + sVar23 = sVar20; + if (sVar22 < sVar20) { + sVar23 = sVar22; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar42 < sVar19) { + sVar42 = sVar19; + } + if (sVar20 < sVar18) { + sVar20 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar23 < sVar42) { + sVar23 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar23; + if (iVar54 + 6 < (int)uVar1) { + sVar42 = psVar56[lVar75 + 6]; + sVar18 = psVar56[6]; + sVar21 = *(short *)((long)psVar56 + uVar82 + 0xc); + sVar19 = psVar56[lVar73 + 6]; + sVar20 = sVar18; + if (sVar42 < sVar18) { + sVar20 = sVar42; + } + if (sVar18 < sVar42) { + sVar18 = sVar42; + } + sVar22 = sVar19; + if (sVar19 < sVar21) { + sVar22 = sVar21; + } + if (sVar42 < sVar22) { + sVar22 = sVar42; + } + if (sVar21 < sVar19) { + sVar19 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + sVar19 = sVar18; + if (sVar18 < sVar42) { + sVar19 = sVar42; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar18 < sVar22) { + sVar22 = sVar18; + } + if (sVar22 < sVar20) { + sVar22 = sVar20; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar22; + } + } + } + } + } + } + } + } + else if (iVar71 < 2) { + if ((psVar67 < psVar56 && psVar76 + lVar73 < psVar66 || + psVar67 < psVar76 + 8 && psVar76 < psVar66) || (uVar1 < 9)) { + lVar58 = 0; + do { + sVar20 = psVar76[lVar58]; + sVar19 = (psVar76 + lVar73)[lVar58]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar67[lVar58] = sVar20; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar56 = psVar76; + if (uVar79 == 0) { +LAB_002011d0: + uVar84 = (ulong)uVar79; + } + else { + psVar56 = psVar76 + 1; + sVar20 = *psVar76; + sVar19 = psVar76[lVar73]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-8] = sVar20; + if (uVar79 == 1) goto LAB_002011d0; + sVar20 = psVar76[1]; + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 2; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-7] = sVar20; + if (uVar79 == 2) goto LAB_002011d0; + sVar20 = psVar76[2]; + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 3; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-6] = sVar20; + if (uVar79 != 3) { + sVar20 = psVar76[3]; + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 4; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-5] = sVar20; + if (uVar79 != 4) { + sVar20 = psVar76[4]; + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 5; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + psVar66[-4] = sVar20; + if (uVar79 != 5) { + sVar20 = psVar76[5]; + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 6; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + psVar66[-3] = sVar19; + if (uVar79 == 7) { + sVar20 = psVar76[6]; + uVar84 = 7; + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 7; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-2] = sVar19; + } + else { + uVar84 = 6; + } + goto LAB_00200e84; + } + } + goto LAB_002011d0; + } + uVar84 = 3; + } +LAB_00200e84: + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar68 = (ulong)uVar79 * 2; + lVar58 = 0; + uVar72 = 0; + do { + uVar72 = uVar72 + 1; + psVar6 = (short *)((long)psVar76 + lVar58 + (lVar73 + (ulong)uVar79) * 2); + psVar52 = (short *)((long)psVar76 + lVar58 + lVar68 + lVar62); + lVar147 = lVar58 + lVar68; + lVar58 = lVar58 + 0x10; + psVar8 = (short *)((long)psVar76 + lVar147); + puVar70 = (undefined8 *)((long)psVar67 + lVar147); + auVar167._0_4_ = (int)*psVar52; + auVar167._4_4_ = (int)psVar52[1]; + auVar167._8_4_ = (int)psVar52[2]; + auVar167._12_4_ = (int)psVar52[3]; + auVar152._0_4_ = (int)psVar52[4]; + auVar152._4_4_ = (int)psVar52[5]; + auVar152._8_4_ = (int)psVar52[6]; + auVar152._12_4_ = (int)psVar52[7]; + auVar173._0_4_ = (int)*psVar8; + auVar173._4_4_ = (int)psVar8[1]; + auVar173._8_4_ = (int)psVar8[2]; + auVar173._12_4_ = (int)psVar8[3]; + auVar168._0_4_ = (int)psVar8[4]; + auVar168._4_4_ = (int)psVar8[5]; + auVar168._8_4_ = (int)psVar8[6]; + auVar168._12_4_ = (int)psVar8[7]; + auVar161._0_4_ = (int)*psVar6; + auVar161._4_4_ = (int)psVar6[1]; + auVar161._8_4_ = (int)psVar6[2]; + auVar161._12_4_ = (int)psVar6[3]; + auVar150._0_4_ = (int)psVar6[4]; + auVar150._4_4_ = (int)psVar6[5]; + auVar150._8_4_ = (int)psVar6[6]; + auVar150._12_4_ = (int)psVar6[7]; + auVar140 = NEON_smin(auVar161,auVar167,4); + auVar91 = NEON_smin(auVar150,auVar152,4); + auVar166 = NEON_smax(auVar161,auVar167,4); + auVar88 = NEON_smax(auVar150,auVar152,4); + auVar174 = NEON_smax(auVar140,auVar173,4); + auVar90 = NEON_smax(auVar91,auVar168,4); + auVar140 = NEON_smin(auVar166,auVar173,4); + auVar166 = NEON_smin(auVar88,auVar168,4); + auVar91 = NEON_smin(auVar174,auVar173,4); + auVar88 = NEON_smin(auVar90,auVar168,4); + auVar91 = NEON_smax(auVar140,auVar91,4); + auVar88 = NEON_smax(auVar166,auVar88,4); + auVar177._0_8_ = + CONCAT26(auVar91._12_2_, + CONCAT24(auVar91._8_2_,CONCAT22(auVar91._4_2_,auVar91._0_2_))); + auVar177._8_2_ = auVar88._0_2_; + auVar177._10_2_ = auVar88._4_2_; + auVar177._12_2_ = auVar88._8_2_; + auVar177._14_2_ = auVar88._12_2_; + puVar70[1] = auVar177._8_8_; + *puVar70 = auVar177._0_8_; + } while (uVar72 < uVar65); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar1 - uVar79 == uVar81) goto LAB_001fe290; + } + sVar20 = *psVar56; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + sVar19 = psVar56[lVar73]; + iVar54 = (int)uVar84; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78) = sVar20; + if (iVar54 + 1 < (int)uVar1) { + sVar20 = psVar56[1]; + sVar19 = psVar56[lVar73 + 1]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar20; + if (iVar54 + 2 < (int)uVar1) { + sVar20 = psVar56[2]; + sVar19 = psVar56[lVar73 + 2]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar20; + if (iVar54 + 3 < (int)uVar1) { + sVar20 = psVar56[3]; + sVar19 = psVar56[lVar73 + 3]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar20; + if (iVar54 + 4 < (int)uVar1) { + sVar20 = psVar56[4]; + sVar19 = psVar56[lVar73 + 4]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar20) { + sVar20 = sVar19; + } + if (sVar20 < sVar42) { + sVar20 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar20; + if (iVar54 + 5 < (int)uVar1) { + sVar20 = psVar56[5]; + sVar19 = psVar56[lVar73 + 5]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar42 = sVar20; + if (sVar18 < sVar20) { + sVar42 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar19; + if (iVar54 + 6 < (int)uVar1) { + sVar20 = psVar56[6]; + sVar19 = psVar56[lVar73 + 6]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + if (sVar20 < sVar18) { + sVar18 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar19; + } + } + } + } + } + } + } + else { + if ((uVar1 < 9 || + (psVar67 < psVar56 && psVar76 + lVar73 < psVar66 || + psVar67 < (short *)((long)psVar76 + lVar57) && + (short *)((long)psVar76 + uVar82) < psVar66)) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar58 = 0; + do { + sVar20 = ((short *)((long)psVar76 + uVar82))[lVar58]; + sVar19 = (psVar76 + lVar73)[lVar58]; + sVar42 = psVar76[lVar58]; + sVar18 = sVar19; + if (sVar19 < sVar20) { + sVar18 = sVar20; + } + sVar21 = sVar42; + if (sVar18 < sVar42) { + sVar21 = sVar18; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + sVar18 = sVar42; + if (sVar42 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar42; + if (sVar18 < sVar42) { + sVar19 = sVar18; + } + if (sVar42 < sVar21) { + sVar21 = sVar42; + } + if (sVar21 < sVar19) { + sVar21 = sVar19; + } + psVar67[lVar58] = sVar21; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar1); + goto LAB_001fe290; + } + uVar79 = -((uint)((ulong)psVar76 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar56 = psVar76; + if (uVar79 == 0) { +LAB_00200c0c: + uVar84 = (ulong)uVar79; + } + else { + sVar42 = *(short *)((long)psVar76 + uVar82); + sVar19 = psVar76[lVar73]; + psVar56 = psVar76 + 1; + sVar20 = *psVar76; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-8] = sVar20; + if (uVar79 == 1) goto LAB_00200c0c; + sVar42 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 2; + sVar20 = psVar76[1]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-7] = sVar20; + if (uVar79 == 2) goto LAB_00200c0c; + sVar42 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 3; + sVar20 = psVar76[2]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-6] = sVar20; + if (uVar79 != 3) { + sVar42 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 4; + sVar20 = psVar76[3]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-5] = sVar20; + if (uVar79 != 4) { + sVar42 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 5; + sVar20 = psVar76[4]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + psVar66[-4] = sVar20; + if (uVar79 != 5) { + sVar42 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + psVar56 = psVar76 + 6; + sVar20 = psVar76[5]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar20 < sVar21) { + sVar21 = sVar20; + } + if (sVar21 < sVar19) { + sVar21 = sVar19; + } + psVar66[-3] = sVar21; + if (uVar79 == 7) { + sVar42 = *(short *)((long)psVar56 + uVar82); + uVar84 = 7; + sVar18 = psVar56[lVar73]; + psVar56 = psVar76 + 7; + sVar20 = psVar76[6]; + sVar19 = sVar18; + if (sVar18 < sVar42) { + sVar19 = sVar42; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar42 < sVar18) { + sVar18 = sVar42; + } + sVar42 = sVar20; + if (sVar20 < sVar18) { + sVar42 = sVar18; + } + if (sVar20 < sVar42) { + sVar42 = sVar20; + } + if (sVar20 < sVar19) { + sVar19 = sVar20; + } + if (sVar19 < sVar42) { + sVar19 = sVar42; + } + psVar66[-2] = sVar19; + } + else { + uVar84 = 6; + } + goto LAB_002008ac; + } + } + goto LAB_00200c0c; + } + uVar84 = 3; + } +LAB_002008ac: + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar68 = (ulong)uVar79 * 2; + lVar58 = 0; + uVar72 = 0; + do { + uVar72 = uVar72 + 1; + psVar6 = (short *)((long)psVar76 + lVar58 + lVar68 + lVar62); + psVar52 = (short *)((long)psVar76 + lVar58 + lVar68 + uVar82); + lVar147 = lVar58 + lVar68; + lVar58 = lVar58 + 0x10; + psVar8 = (short *)((long)psVar76 + lVar147); + puVar70 = (undefined8 *)((long)psVar67 + lVar147); + auVar179._0_4_ = (int)*psVar52; + auVar179._4_4_ = (int)psVar52[1]; + auVar179._8_4_ = (int)psVar52[2]; + auVar179._12_4_ = (int)psVar52[3]; + auVar187._0_4_ = (int)psVar52[4]; + auVar187._4_4_ = (int)psVar52[5]; + auVar187._8_4_ = (int)psVar52[6]; + auVar187._12_4_ = (int)psVar52[7]; + auVar182._0_4_ = (int)*psVar8; + auVar182._4_4_ = (int)psVar8[1]; + auVar182._8_4_ = (int)psVar8[2]; + auVar182._12_4_ = (int)psVar8[3]; + auVar180._0_4_ = (int)psVar8[4]; + auVar180._4_4_ = (int)psVar8[5]; + auVar180._8_4_ = (int)psVar8[6]; + auVar180._12_4_ = (int)psVar8[7]; + auVar178._0_4_ = (int)*psVar6; + auVar178._4_4_ = (int)psVar6[1]; + auVar178._8_4_ = (int)psVar6[2]; + auVar178._12_4_ = (int)psVar6[3]; + auVar183._0_4_ = (int)psVar6[4]; + auVar183._4_4_ = (int)psVar6[5]; + auVar183._8_4_ = (int)psVar6[6]; + auVar183._12_4_ = (int)psVar6[7]; + auVar140 = NEON_smin(auVar178,auVar179,4); + auVar91 = NEON_smin(auVar183,auVar187,4); + auVar166 = NEON_smax(auVar178,auVar179,4); + auVar88 = NEON_smax(auVar183,auVar187,4); + auVar174 = NEON_smax(auVar140,auVar182,4); + auVar90 = NEON_smax(auVar91,auVar180,4); + auVar140 = NEON_smin(auVar166,auVar182,4); + auVar166 = NEON_smin(auVar88,auVar180,4); + auVar91 = NEON_smin(auVar182,auVar174,4); + auVar88 = NEON_smin(auVar180,auVar90,4); + auVar91 = NEON_smax(auVar140,auVar91,4); + auVar88 = NEON_smax(auVar166,auVar88,4); + auVar176._0_8_ = + CONCAT26(auVar91._12_2_, + CONCAT24(auVar91._8_2_,CONCAT22(auVar91._4_2_,auVar91._0_2_))); + auVar176._8_2_ = auVar88._0_2_; + auVar176._10_2_ = auVar88._4_2_; + auVar176._12_2_ = auVar88._8_2_; + auVar176._14_2_ = auVar88._12_2_; + puVar70[1] = auVar176._8_8_; + *puVar70 = auVar176._0_8_; + } while (uVar72 < uVar65); + uVar84 = (ulong)((int)uVar84 + uVar81); + psVar56 = psVar56 + uVar81; + if (uVar81 == uVar1 - uVar79) goto LAB_001fe290; + } + sVar42 = *(short *)((long)psVar56 + uVar82); + sVar19 = psVar56[lVar73]; + uVar78 = -(uVar84 >> 0x1f) & 0xfffffffe00000000 | uVar84 << 1; + iVar54 = (int)uVar84; + sVar20 = *psVar56; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78) = sVar20; + if (iVar54 + 1 < (int)uVar1) { + sVar42 = *(short *)((long)psVar56 + uVar82 + 2); + sVar19 = psVar56[lVar73 + 1]; + sVar20 = psVar56[1]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 2) = sVar20; + if (iVar54 + 2 < (int)uVar1) { + sVar42 = *(short *)((long)psVar56 + uVar82 + 4); + sVar19 = psVar56[lVar73 + 2]; + sVar20 = psVar56[2]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 4) = sVar20; + if (iVar54 + 3 < (int)uVar1) { + sVar42 = *(short *)((long)psVar56 + uVar82 + 6); + sVar19 = psVar56[lVar73 + 3]; + sVar20 = psVar56[3]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 6) = sVar20; + if (iVar54 + 4 < (int)uVar1) { + sVar42 = *(short *)((long)psVar56 + uVar82 + 8); + sVar19 = psVar56[lVar73 + 4]; + sVar20 = psVar56[4]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 8) = sVar20; + if (iVar54 + 5 < (int)uVar1) { + sVar42 = *(short *)((long)psVar56 + uVar82 + 10); + sVar19 = psVar56[lVar73 + 5]; + sVar20 = psVar56[5]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar20 < sVar21) { + sVar21 = sVar20; + } + if (sVar21 < sVar19) { + sVar21 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 10) = sVar21; + if (iVar54 + 6 < (int)uVar1) { + sVar42 = *(short *)((long)psVar56 + uVar82 + 0xc); + sVar19 = psVar56[lVar73 + 6]; + sVar20 = psVar56[6]; + sVar18 = sVar19; + if (sVar19 < sVar42) { + sVar18 = sVar42; + } + sVar21 = sVar20; + if (sVar18 < sVar20) { + sVar21 = sVar18; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + sVar18 = sVar20; + if (sVar20 < sVar19) { + sVar18 = sVar19; + } + sVar19 = sVar20; + if (sVar18 < sVar20) { + sVar19 = sVar18; + } + if (sVar21 < sVar20) { + sVar20 = sVar21; + } + if (sVar20 < sVar19) { + sVar20 = sVar19; + } + *(short *)((long)psVar67 + uVar78 + 0xc) = sVar20; + } + } + } + } + } + } + } + } +LAB_001fe290: + iVar71 = iVar71 + 1; + psVar76 = (short *)((long)psVar76 + + (-(uVar69 >> 0x1f) & 0xfffffffe00000000 | uVar69 << 1) + + ((long)(int)uVar43 + 1) * 2); + psVar66 = psVar66 + (int)uVar85; + if (iVar71 == local_34) { + return; + } + } while( true ); + } + if (iVar71 == 1) { + iVar60 = local_34 + 1; + if (local_34 != 1) { + iVar71 = local_30 - uVar1; + goto LAB_001fd334; + } + iVar60 = 2; + } + else { + if (local_34 != 1) { + uVar43 = iVar71 * uVar1; + if (local_34 < 1) { + return; + } + lVar61 = (ulong)uVar1 * 2; + lVar57 = (ulong)uVar1 * -2; + iVar71 = 0; + iVar60 = (uVar43 - 8) - uVar1; + psVar66 = psVar76; +LAB_001fc104: + iVar63 = iVar71 + -1; + iVar71 = iVar71 + 1; + if (iVar63 < 0) { + iVar63 = 0; + } + uVar82 = 0; + iVar54 = iVar71; + if (local_34 + -1 < iVar71) { + iVar54 = local_34 + -1; + } + uVar85 = uVar1; + if (cVar50 == '\0') { + uVar85 = uVar43; + } + iVar63 = local_30 * iVar63; + iVar54 = local_30 * iVar54; + do { + if ((int)uVar85 <= (int)uVar82) { + do { + if (uVar85 == uVar43) { + local_90 = local_90 + + (-(uVar69 >> 0x20 & 1) & 0xfffffffe00000000 | (uVar83 & 0xffffffff) << 1); + psVar66 = psVar66 + (int)local_30; + if (iVar71 == local_34) { + return; + } + goto LAB_001fc104; + } + if ((int)uVar82 <= iVar60) { + uVar84 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + pauVar59 = (undefined1 (*) [16])((long)psVar76 + uVar84 + (long)iVar63 * 2); + pauVar53 = (undefined1 (*) [16])((long)psVar66 + uVar84); + pauVar51 = (undefined1 (*) [16])((long)psVar76 + uVar84 + (long)iVar54 * 2); + puVar70 = (undefined8 *)(local_90 + uVar84); + do { + puVar47 = *pauVar51; + puVar48 = *pauVar59; + auVar88 = *pauVar51; + pauVar3 = (undefined1 (*) [16])((long)pauVar53 + lVar57); + pauVar4 = (undefined1 (*) [16])((long)pauVar51 + lVar57); + pauVar5 = (undefined1 (*) [16])((long)pauVar59 + lVar57); + auVar166 = *pauVar59; + uVar85 = (int)uVar82 + 8; + uVar82 = (ulong)uVar85; + pauVar59 = pauVar59 + 1; + auVar86 = NEON_smin(*pauVar53,*(undefined1 (*) [16])(*pauVar53 + lVar61),2); + auVar87 = NEON_smin(auVar88,*(undefined1 (*) [16])(puVar47 + lVar61),2); + auVar91 = NEON_smax(*(undefined1 (*) [16])(*pauVar53 + lVar61),*pauVar53,2); + pauVar53 = pauVar53 + 1; + auVar105 = NEON_smin(auVar166,*(undefined1 (*) [16])(puVar48 + lVar61),2); + pauVar51 = pauVar51 + 1; + auVar140 = NEON_smax(*(undefined1 (*) [16])(puVar47 + lVar61),auVar88,2); + auVar90 = NEON_smax(auVar87,*pauVar4,2); + auVar88 = NEON_smax(auVar86,*pauVar3,2); + auVar166 = NEON_smax(*(undefined1 (*) [16])(puVar48 + lVar61),auVar166,2); + auVar89 = NEON_smax(auVar105,*pauVar5,2); + auVar174 = NEON_smin(auVar90,auVar140,2); + auVar98 = NEON_smin(auVar88,auVar91,2); + auVar140 = NEON_smax(auVar140,auVar90,2); + auVar91 = NEON_smax(auVar91,auVar88,2); + auVar88 = NEON_smin(auVar89,auVar166,2); + auVar90 = NEON_smin(auVar98,auVar174,2); + auVar166 = NEON_smax(auVar166,auVar89,2); + auVar91 = NEON_smin(auVar91,auVar140,2); + auVar89 = NEON_smin(*pauVar5,auVar105,2); + auVar140 = NEON_smax(auVar90,auVar88,2); + auVar90 = NEON_smin(*pauVar3,auVar86,2); + auVar174 = NEON_smax(auVar174,auVar98,2); + auVar88 = NEON_smin(auVar166,auVar91,2); + auVar91 = NEON_smin(*pauVar4,auVar87,2); + auVar90 = NEON_smax(auVar90,auVar89,2); + auVar166 = NEON_smin(auVar140,auVar174,2); + auVar140 = NEON_smax(auVar91,auVar90,2); + auVar91 = NEON_smin(auVar166,auVar88,2); + auVar88 = NEON_smax(auVar88,auVar166,2); + auVar166 = NEON_smax(auVar91,auVar140,2); + auVar88 = NEON_smin(auVar166,auVar88,2); + puVar70[1] = auVar88._8_8_; + *puVar70 = auVar88._0_8_; + puVar70 = puVar70 + 2; + } while ((int)uVar85 <= iVar60); + } + uVar85 = uVar43; + } while ((int)uVar43 <= (int)uVar82); + } + uVar65 = (uint)uVar82; + uVar79 = uVar65 - uVar1; + if ((int)uVar65 < (int)uVar1) { + uVar79 = uVar65; + } + uVar84 = -(uVar82 >> 0x1f) & 0xfffffffe00000000 | uVar82 << 1; + uVar81 = uVar65 + uVar1; + if ((int)(uVar43 - uVar1) <= (int)uVar65) { + uVar81 = uVar65; + } + uVar55 = -(ulong)(uVar79 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar79 << 1; + uVar78 = -(ulong)(uVar81 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar81 << 1; + uVar82 = (ulong)(uVar65 + 1); + sVar21 = *(short *)((long)psVar76 + uVar84 + (long)iVar63 * 2); + sVar22 = *(short *)((long)psVar66 + uVar84); + sVar18 = *(short *)((long)psVar76 + uVar78 + (long)iVar63 * 2); + sVar19 = *(short *)((long)psVar66 + uVar78); + sVar20 = *(short *)((long)psVar76 + uVar78 + (long)iVar54 * 2); + sVar42 = sVar18; + if (sVar21 < sVar18) { + sVar42 = sVar21; + } + if (sVar18 < sVar21) { + sVar18 = sVar21; + } + sVar23 = *(short *)((long)psVar76 + uVar84 + (long)iVar54 * 2); + sVar24 = *(short *)((long)psVar76 + uVar55 + (long)iVar63 * 2); + sVar21 = sVar19; + if (sVar22 < sVar19) { + sVar21 = sVar22; + } + if (sVar19 < sVar22) { + sVar19 = sVar22; + } + sVar22 = sVar20; + if (sVar23 < sVar20) { + sVar22 = sVar23; + } + sVar25 = *(short *)((long)psVar66 + uVar55); + sVar27 = *(short *)((long)psVar76 + uVar55 + (long)iVar54 * 2); + if (sVar20 < sVar23) { + sVar20 = sVar23; + } + sVar23 = sVar42; + if (sVar42 < sVar24) { + sVar23 = sVar24; + } + sVar26 = sVar21; + if (sVar25 < sVar21) { + sVar26 = sVar25; + } + if (sVar21 < sVar25) { + sVar21 = sVar25; + } + sVar25 = sVar22; + if (sVar27 < sVar22) { + sVar25 = sVar27; + } + if (sVar22 < sVar27) { + sVar22 = sVar27; + } + sVar27 = sVar21; + if (sVar19 < sVar21) { + sVar27 = sVar19; + } + sVar29 = sVar22; + if (sVar20 < sVar22) { + sVar29 = sVar20; + } + if (sVar21 < sVar19) { + sVar21 = sVar19; + } + sVar19 = sVar23; + if (sVar23 < sVar18) { + sVar19 = sVar18; + } + if (sVar19 < sVar21) { + sVar21 = sVar19; + } + sVar19 = sVar29; + if (sVar27 < sVar29) { + sVar19 = sVar27; + } + if (sVar29 < sVar27) { + sVar29 = sVar27; + } + if (sVar18 < sVar23) { + sVar23 = sVar18; + } + if (sVar19 < sVar23) { + sVar19 = sVar23; + } + if (sVar22 < sVar20) { + sVar22 = sVar20; + } + if (sVar22 < sVar21) { + sVar21 = sVar22; + } + if (sVar29 < sVar19) { + sVar19 = sVar29; + } + sVar18 = sVar19; + if (sVar21 < sVar19) { + sVar18 = sVar21; + } + if (sVar24 < sVar42) { + sVar42 = sVar24; + } + if (sVar26 < sVar42) { + sVar26 = sVar42; + } + if (sVar26 < sVar25) { + sVar26 = sVar25; + } + if (sVar26 < sVar18) { + sVar26 = sVar18; + } + if (sVar19 < sVar21) { + sVar19 = sVar21; + } + if (sVar19 < sVar26) { + sVar26 = sVar19; + } + *(short *)(local_90 + uVar84) = sVar26; + } while( true ); + } + iVar60 = iVar71 + 1; + local_34 = iVar71; + } + iVar71 = 0; + uVar85 = uVar1; + local_30 = uVar1; +LAB_001fd334: + if (0 < local_34) { + iVar63 = 0; + psVar66 = (short *)(local_90 + 0x10); + do { + psVar67 = psVar66 + -8; + uVar69 = -(ulong)(-local_30 >> 0x1f) & 0xfffffffe00000000 | (ulong)-local_30 << 1; + if (iVar63 < 1) { + uVar69 = 0; + } + uVar82 = -(ulong)(local_30 >> 0x1f) & 0xfffffffe00000000 | (ulong)local_30 << 1; + if (iVar60 + -2 <= iVar63) { + uVar82 = 0; + } + psVar56 = (short *)((long)psVar76 + uVar69); + psVar6 = (short *)((long)psVar76 + uVar82); + if ((uVar1 < 10 || + (psVar67 < (short *)((long)psVar76 + uVar69 + 0x10) && psVar56 < psVar66 || + psVar67 < (short *)((long)psVar76 + uVar82 + 0x10) && psVar6 < psVar66)) || + (psVar67 < psVar76 + 8 && psVar76 < psVar66)) { + lVar57 = 0; + do { + sVar20 = psVar56[lVar57]; + sVar19 = psVar76[lVar57]; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (psVar6[lVar57] < sVar19) { + sVar19 = psVar6[lVar57]; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar67[lVar57] = sVar19; + lVar57 = lVar57 + 1; + } while ((int)lVar57 < (int)uVar1); + } + else { + uVar79 = -((uint)((ulong)psVar56 >> 1) & 7) & 7; + if (uVar1 < uVar79) { + uVar79 = uVar1; + } + psVar52 = psVar76; + if (uVar79 == 0) { +LAB_001fe2b8: + uVar83 = (ulong)uVar79; + } + else { + sVar19 = *psVar56; + psVar52 = psVar76 + 1; + sVar20 = *psVar76; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar6 < sVar19) { + sVar19 = *psVar6; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-8] = sVar19; + if (uVar79 == 1) goto LAB_001fe2b8; + sVar19 = *(short *)((long)psVar52 + uVar69); + sVar20 = psVar76[1]; + psVar56 = (short *)((long)psVar52 + uVar82); + psVar52 = psVar76 + 2; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar56 < sVar19) { + sVar19 = *psVar56; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-7] = sVar19; + if (uVar79 == 2) goto LAB_001fe2b8; + sVar19 = *(short *)((long)psVar52 + uVar69); + sVar20 = psVar76[2]; + psVar56 = (short *)((long)psVar52 + uVar82); + psVar52 = psVar76 + 3; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar56 < sVar19) { + sVar19 = *psVar56; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-6] = sVar19; + if (uVar79 == 3) goto LAB_001fe2b8; + sVar19 = *(short *)((long)psVar52 + uVar69); + sVar20 = psVar76[3]; + psVar56 = (short *)((long)psVar52 + uVar82); + psVar52 = psVar76 + 4; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar56 < sVar19) { + sVar19 = *psVar56; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-5] = sVar19; + if (uVar79 == 4) goto LAB_001fe2b8; + sVar19 = *(short *)((long)psVar52 + uVar69); + sVar20 = psVar76[4]; + psVar56 = (short *)((long)psVar52 + uVar82); + psVar52 = psVar76 + 5; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar56 < sVar19) { + sVar19 = *psVar56; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-4] = sVar19; + if (uVar79 == 5) goto LAB_001fe2b8; + sVar19 = *(short *)((long)psVar52 + uVar69); + sVar20 = psVar76[5]; + psVar56 = (short *)((long)psVar52 + uVar82); + psVar52 = psVar76 + 6; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar56 < sVar19) { + sVar19 = *psVar56; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-3] = sVar19; + if (uVar79 == 7) { + sVar19 = *(short *)((long)psVar52 + uVar69); + uVar83 = 7; + sVar20 = psVar76[6]; + psVar56 = (short *)((long)psVar52 + uVar82); + psVar52 = psVar76 + 7; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*psVar56 < sVar19) { + sVar19 = *psVar56; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + psVar66[-2] = sVar19; + } + else { + uVar83 = 6; + } + } + uVar65 = ((uVar1 - uVar79) - 8 >> 3) + 1; + uVar81 = uVar65 * 8; + if (6 < uVar43 - uVar79) { + lVar61 = (ulong)uVar79 * 2; + lVar57 = 0; + uVar72 = 0; + do { + psVar56 = (short *)((long)psVar76 + lVar57 + lVar61); + psVar6 = (short *)((long)psVar76 + lVar57 + lVar61 + uVar69); + puVar70 = (undefined8 *)((long)psVar67 + lVar57 + lVar61); + psVar8 = (short *)((long)psVar76 + lVar57 + uVar82 + lVar61); + uVar72 = uVar72 + 1; + lVar57 = lVar57 + 0x10; + auVar132._0_4_ = (int)*psVar6; + auVar132._4_4_ = (int)psVar6[1]; + auVar132._8_4_ = (int)psVar6[2]; + auVar132._12_4_ = (int)psVar6[3]; + auVar120._0_4_ = (int)*psVar56; + auVar120._4_4_ = (int)psVar56[1]; + auVar120._8_4_ = (int)psVar56[2]; + auVar120._12_4_ = (int)psVar56[3]; + auVar114._0_4_ = (int)psVar6[4]; + auVar114._4_4_ = (int)psVar6[5]; + auVar114._8_4_ = (int)psVar6[6]; + auVar114._12_4_ = (int)psVar6[7]; + auVar92._0_4_ = (int)psVar56[4]; + auVar92._4_4_ = (int)psVar56[5]; + auVar92._8_4_ = (int)psVar56[6]; + auVar92._12_4_ = (int)psVar56[7]; + auVar106._0_4_ = (int)*psVar8; + auVar106._4_4_ = (int)psVar8[1]; + auVar106._8_4_ = (int)psVar8[2]; + auVar106._12_4_ = (int)psVar8[3]; + auVar124._0_4_ = (int)psVar8[4]; + auVar124._4_4_ = (int)psVar8[5]; + auVar124._8_4_ = (int)psVar8[6]; + auVar124._12_4_ = (int)psVar8[7]; + auVar91 = NEON_smax(auVar120,auVar132,4); + auVar166 = NEON_smax(auVar92,auVar114,4); + auVar140 = NEON_smin(auVar120,auVar132,4); + auVar88 = NEON_smin(auVar92,auVar114,4); + auVar91 = NEON_smin(auVar91,auVar106,4); + auVar166 = NEON_smin(auVar166,auVar124,4); + auVar91 = NEON_smax(auVar91,auVar140,4); + auVar88 = NEON_smax(auVar166,auVar88,4); + auVar99._0_8_ = + CONCAT26(auVar91._12_2_, + CONCAT24(auVar91._8_2_,CONCAT22(auVar91._4_2_,auVar91._0_2_))); + auVar99._8_2_ = auVar88._0_2_; + auVar99._10_2_ = auVar88._4_2_; + auVar99._12_2_ = auVar88._8_2_; + auVar99._14_2_ = auVar88._12_2_; + puVar70[1] = auVar99._8_8_; + *puVar70 = auVar99._0_8_; + } while (uVar72 < uVar65); + uVar83 = (ulong)((int)uVar83 + uVar81); + psVar52 = psVar52 + uVar81; + if (uVar81 == uVar1 - uVar79) goto LAB_001fd828; + } + sVar19 = *(short *)((long)psVar52 + uVar69); + uVar84 = -(uVar83 >> 0x1f) & 0xfffffffe00000000 | uVar83 << 1; + sVar20 = *psVar52; + iVar54 = (int)uVar83; + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (*(short *)((long)psVar52 + uVar82) < sVar19) { + sVar19 = *(short *)((long)psVar52 + uVar82); + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84) = sVar19; + if (iVar54 + 1 < (int)uVar1) { + sVar19 = *(short *)((long)psVar52 + uVar69 + 2); + sVar20 = psVar52[1]; + sVar42 = *(short *)((long)psVar52 + uVar82 + 2); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84 + 2) = sVar19; + if (iVar54 + 2 < (int)uVar1) { + sVar19 = *(short *)((long)psVar52 + uVar69 + 4); + sVar20 = psVar52[2]; + sVar42 = *(short *)((long)psVar52 + uVar82 + 4); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84 + 4) = sVar19; + if (iVar54 + 3 < (int)uVar1) { + sVar19 = *(short *)((long)psVar52 + uVar69 + 6); + sVar20 = psVar52[3]; + sVar42 = *(short *)((long)psVar52 + uVar82 + 6); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84 + 6) = sVar19; + if (iVar54 + 4 < (int)uVar1) { + sVar19 = *(short *)((long)psVar52 + uVar69 + 8); + sVar20 = psVar52[4]; + sVar42 = *(short *)((long)psVar52 + uVar82 + 8); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84 + 8) = sVar19; + if (iVar54 + 5 < (int)uVar1) { + sVar19 = *(short *)((long)psVar52 + uVar69 + 10); + sVar20 = psVar52[5]; + sVar42 = *(short *)((long)psVar52 + uVar82 + 10); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84 + 10) = sVar19; + if (iVar54 + 6 < (int)uVar1) { + sVar19 = *(short *)((long)psVar52 + uVar69 + 0xc); + sVar20 = psVar52[6]; + sVar42 = *(short *)((long)psVar52 + uVar82 + 0xc); + sVar18 = sVar19; + if (sVar20 < sVar19) { + sVar18 = sVar20; + } + if (sVar19 < sVar20) { + sVar19 = sVar20; + } + if (sVar42 < sVar19) { + sVar19 = sVar42; + } + if (sVar19 < sVar18) { + sVar19 = sVar18; + } + *(short *)((long)psVar67 + uVar84 + 0xc) = sVar19; + } + } + } + } + } + } + } +LAB_001fd828: + iVar63 = iVar63 + 1; + psVar76 = psVar76 + (long)iVar71 + (long)(int)uVar43 + 1; + psVar66 = psVar66 + (int)uVar85; + } while (iVar63 != local_34); + } + return; +} + + +================================================================== + +### FUNC 0020337c (768 bytes) name=FUN_0020337c + +void FUN_0020337c(long param_1,int *param_2) + +{ + int iVar1; + byte *pbVar2; + int iVar3; + byte bVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + long lVar14; + uint *puVar15; + int iVar16; + byte *pbVar17; + int iVar18; + int iVar19; + long lVar20; + undefined1 *puVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + + puVar15 = *(uint **)(param_1 + 0x10); + iVar16 = *param_2; + iVar18 = param_2[1]; + iVar1 = (*puVar15 >> 3 & 0x1ff) + 1; + iVar3 = *(int *)(*(long *)(puVar15 + 0x10) + 4); + if (iVar18 <= iVar16) { + return; + } + lVar11 = (long)iVar16; + do { + pbVar2 = (byte *)(*(long *)(*(long *)(param_1 + 8) + 0x10) + + (long)(*(int *)(param_1 + 0x18) * iVar1) + + (long)(*(int *)(param_1 + 0x18) + iVar16) * + **(long **)(*(long *)(param_1 + 8) + 0x48)); + puVar21 = (undefined1 *)(*(long *)(puVar15 + 4) + lVar11 * **(long **)(puVar15 + 0x12)); + if (iVar1 == 1) { + if (0 < iVar3) { + iVar18 = *(int *)(param_1 + 0x1c); + lVar20 = 0; + iVar19 = 0; + bVar4 = *pbVar2; + if (iVar18 < 1) goto LAB_0020362c; + do { + fVar24 = 0.0; + lVar14 = 0; + fVar23 = fVar24; + do { + lVar12 = lVar14 * 4; + lVar13 = lVar14 * 4; + lVar14 = lVar14 + 1; + uVar5 = (uint)pbVar2[iVar19 + *(int *)(*(long *)(param_1 + 0x20) + lVar12)] - + (uint)bVar4; + uVar6 = (int)uVar5 >> 0x1f; + fVar25 = *(float *)(*(long *)(param_1 + 0x28) + lVar13) * + *(float *)(*(long *)(param_1 + 0x30) + (long)(int)((uVar5 ^ uVar6) - uVar6) * 4 + ); + fVar23 = fVar23 + fVar25 * (float)pbVar2[iVar19 + *(int *)(*(long *)(param_1 + 0x20) + + lVar12)]; + fVar24 = fVar24 + fVar25; + } while ((int)lVar14 < iVar18); + lVar14 = lrintf(fVar23 / fVar24); + puVar21[lVar20] = (char)lVar14; + lVar20 = lVar20 + 1; + iVar18 = (int)lVar20; + while( true ) { + if (iVar3 <= iVar18) goto LAB_0020354c; + iVar18 = *(int *)(param_1 + 0x1c); + iVar19 = (int)lVar20; + bVar4 = pbVar2[lVar20]; + if (0 < iVar18) break; +LAB_0020362c: + lVar14 = lrintf(-NAN); + puVar21[lVar20] = (char)lVar14; + lVar20 = lVar20 + 1; + iVar18 = (int)lVar20; + } + } while( true ); + } + } + else { + lVar20 = 0; + pbVar17 = pbVar2; + if (0 < iVar3 * 3) { + do { + fVar23 = 0.0; + fVar24 = fVar23; + if (*(int *)(param_1 + 0x1c) < 1) { + fVar25 = 0.0; + fVar26 = 0.0; + } + else { + fVar25 = 0.0; + fVar26 = 0.0; + lVar14 = 0; + fVar23 = 0.0; + do { + lVar12 = lVar14 * 4; + lVar13 = lVar14 * 4; + lVar14 = lVar14 + 1; + lVar12 = *(int *)(*(long *)(param_1 + 0x20) + lVar12) + lVar20; + uVar5 = (uint)pbVar2[lVar12] - (uint)*pbVar17; + uVar6 = (uint)pbVar2[lVar12 + 1] - (uint)pbVar17[1]; + uVar7 = (uint)pbVar2[lVar12 + 2] - (uint)pbVar17[2]; + uVar9 = (int)uVar5 >> 0x1f; + uVar8 = (int)uVar6 >> 0x1f; + uVar10 = (int)uVar7 >> 0x1f; + fVar22 = *(float *)(*(long *)(param_1 + 0x28) + lVar13) * + *(float *)(*(long *)(param_1 + 0x30) + + (long)(int)(((uVar5 ^ uVar9) - uVar9) + ((uVar6 ^ uVar8) - uVar8) + + ((uVar7 ^ uVar10) - uVar10)) * 4); + fVar23 = fVar23 + fVar22 * (float)pbVar2[lVar12]; + fVar26 = fVar26 + fVar22 * (float)pbVar2[lVar12 + 1]; + fVar25 = fVar25 + fVar22 * (float)pbVar2[lVar12 + 2]; + fVar24 = fVar24 + fVar22; + } while ((int)lVar14 < *(int *)(param_1 + 0x1c)); + } + fVar24 = 1.0 / fVar24; + lVar20 = lVar20 + 3; + pbVar17 = pbVar17 + 3; + lVar14 = lrintf(fVar23 * fVar24); + lVar12 = lrintf(fVar26 * fVar24); + lVar13 = lrintf(fVar25 * fVar24); + *puVar21 = (char)lVar14; + puVar21[1] = (char)lVar12; + puVar21[2] = (char)lVar13; + puVar21 = puVar21 + 3; + } while ((int)lVar20 < iVar3 * 3); +LAB_0020354c: + iVar18 = param_2[1]; + } + } + iVar16 = iVar16 + 1; + lVar11 = lVar11 + 1; + if (iVar18 <= iVar16) { + return; + } + puVar15 = *(uint **)(param_1 + 0x10); + } while( true ); +} + + +================================================================== + +### FUNC 0020367c (16 bytes) name=FUN_0020367c + +void FUN_0020367c(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f50b0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 0020368c (44 bytes) name=FUN_0020368c + +void FUN_0020368c(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f50b0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002036b8 (16 bytes) name=FUN_002036b8 + +void FUN_002036b8(ParallelLoopBody *param_1) + +{ + *(undefined **)param_1 = &DAT_004f50e0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 002036c8 (44 bytes) name=FUN_002036c8 + +void FUN_002036c8(ParallelLoopBody *param_1) + +{ + *(undefined **)param_1 = &DAT_004f50e0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002036f4 (2272 bytes) name=FUN_002036f4 + +void FUN_002036f4(long param_1,ulong *param_2,long param_3,int param_4,int param_5,uint param_6) + +{ + uint uVar1; + uint uVar2; + ulong uVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + int iVar10; + ulong uVar11; + undefined8 uVar12; + undefined8 uVar13; + char cVar14; + uint uVar15; + long lVar16; + long lVar17; + long lVar18; + long lVar19; + long lVar20; + double *pdVar21; + char *pcVar22; + void *__dest; + uint uVar23; + long lVar24; + double *pdVar25; + double *pdVar26; + ulong uVar27; + undefined2 uVar28; + size_t __n; + int iVar29; + double *pdVar30; + int iVar31; + ulong *puVar32; + undefined2 uVar33; + double *pdVar34; + undefined2 uVar35; + ulong uVar36; + size_t sVar37; + undefined2 *puVar38; + ulong uVar39; + void *__src; + double dVar40; + double dVar41; + double dVar42; + double dVar43; + double dVar44; + int iVar45; + double dVar46; + double dVar47; + undefined2 *puVar48; + double *local_58; + undefined8 local_10; + undefined8 local_8; + + pdVar34 = *(double **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar37 = (long)__src - (long)pdVar34; + uVar27 = (long)sVar37 >> 3; + dVar47 = *(double *)(param_1 + 0x10); + local_58 = pdVar34; + if ((uint)uVar27 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar29 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar29 + -1) { + local_10 = 0; + local_8 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar14 = s_sumCount____ksize_1_0045d530[0x12]; + uVar13 = s_sumCount____ksize_1_0045d530._8_8_; + uVar12 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar22 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar22[0x12] = cVar14; + *(undefined8 *)pcVar22 = uVar12; + *(undefined8 *)(pcVar22 + 8) = uVar13; + cv::error(-0xd7,(String *)&local_10, + "void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int) [with ST = double; T = short int; uchar = unsigned char]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x99); + cv::String::deallocate((String *)&local_10); + iVar29 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar29 + -1; + goto LAB_002039a4; + } + sVar37 = -(ulong)(param_6 >> 0x1f) & 0xfffffff800000000 | (ulong)param_6 << 3; + } + else { + uVar39 = (ulong)(int)param_6; + if (uVar27 < uVar39) { + uVar11 = uVar39 - uVar27; + if (uVar11 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 3) < uVar11) { + if (0x1fffffffffffffff - uVar27 < uVar11) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar3 = uVar11; + if (uVar11 < uVar27) { + uVar3 = uVar27; + } + uVar3 = uVar3 + uVar27; + if ((uVar3 < uVar27) || (0x1fffffffffffffff < uVar3)) { + uVar36 = 0xfffffffffffffff8; +LAB_00203f88: + local_58 = operator_new(uVar36); + pdVar34 = *(double **)(param_1 + 0x20); + __n = (long)__src - (long)pdVar34; + uVar27 = (long)__n >> 3; + } + else { + uVar36 = uVar3 * 8; + if (uVar3 != 0) goto LAB_00203f88; + uVar36 = 0; + local_58 = (double *)0x0; + __n = sVar37; + } + memset((void *)((long)local_58 + sVar37),0,uVar11 * 8); + if (uVar27 != 0) { + memmove(local_58,pdVar34,__n); + } + __dest = (void *)((long)local_58 + uVar11 * 8 + __n); + sVar37 = *(long *)(param_1 + 0x28) - (long)__src; + if ((long)sVar37 >> 3 != 0) { + __dest = memmove(__dest,__src,sVar37); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(double **)(param_1 + 0x20) = local_58; + *(ulong *)(param_1 + 0x30) = (long)local_58 + uVar36; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar37; + } + else { + memset(__src,0,uVar11 * 8); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar11 * 8); + } + } + } + else if (uVar39 < uVar27) { + *(double **)(param_1 + 0x28) = pdVar34 + uVar39; + } + sVar37 = uVar39 << 3; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(local_58,0,sVar37); + iVar45 = *(int *)(param_1 + 0x18); + iVar29 = *(int *)(param_1 + 8); + if (iVar45 < iVar29 + -1) { + iVar8 = param_6 - 1; + uVar7 = param_6 - 2 >> 1; + uVar1 = uVar7 + 1; + uVar5 = uVar1 * 2; + if (iVar8 < 1) { + uVar5 = 0; + } + uVar9 = param_6 - uVar5; + lVar16 = (long)(int)uVar5; + pdVar34 = local_58 + lVar16; + uVar2 = (uint)((ulong)pdVar34 >> 3) & 1; + iVar31 = iVar45 + 1; + uVar4 = uVar9; + if (uVar2 < uVar9) { + uVar4 = uVar2; + } + iVar10 = uVar9 - uVar4; + uVar2 = (iVar10 - 2U >> 1) + 1; + iVar6 = uVar2 * 2; + puVar32 = param_2; + do { + pdVar26 = (double *)*puVar32; + if (0 < iVar8) { + pdVar21 = local_58; + pdVar25 = pdVar26; + if ((local_58 < pdVar26 + 4 && pdVar26 < local_58 + 4) || (uVar1 < 4)) { + do { + dVar40 = *pdVar25; + pdVar30 = pdVar21 + 2; + pdVar21[1] = pdVar21[1] + pdVar25[1]; + *pdVar21 = *pdVar21 + dVar40; + pdVar21 = pdVar30; + pdVar25 = pdVar25 + 2; + } while (pdVar30 != local_58 + ((ulong)uVar7 + 1) * 2); + } + else { + uVar15 = 0; + do { + uVar15 = uVar15 + 1; + dVar40 = *pdVar25; + pdVar21[1] = pdVar21[1] + pdVar25[1]; + *pdVar21 = *pdVar21 + dVar40; + pdVar21 = pdVar21 + 2; + pdVar25 = pdVar25 + 2; + } while (uVar15 < uVar1); + } + } + if ((int)uVar5 < (int)param_6) { + if ((pdVar34 < pdVar26 + lVar16 + 2 && pdVar26 + lVar16 < local_58 + lVar16 + 2) || + (uVar9 < 8)) { + lVar20 = 0; + do { + *(double *)((long)pdVar34 + lVar20) = + *(double *)((long)pdVar34 + lVar20) + + *(double *)((long)(pdVar26 + lVar16) + lVar20); + lVar20 = lVar20 + 8; + } while (lVar20 != ((ulong)(iVar8 - uVar5) + 1) * 8); + } + else { + uVar15 = uVar5; + if (uVar4 != 0) { + local_58[lVar16] = local_58[lVar16] + pdVar26[lVar16]; + uVar15 = uVar5 + 1; + } + if (iVar10 != 1) { + uVar23 = 0; + pdVar21 = local_58 + (ulong)uVar4 + lVar16; + pdVar25 = local_58 + (ulong)uVar4 + lVar16; + pdVar30 = pdVar26 + (ulong)uVar4 + lVar16; + do { + dVar41 = *pdVar30; + uVar23 = uVar23 + 1; + dVar40 = *pdVar25; + pdVar21[1] = pdVar25[1] + pdVar30[1]; + *pdVar21 = dVar40 + dVar41; + pdVar21 = pdVar21 + 2; + pdVar25 = pdVar25 + 2; + pdVar30 = pdVar30 + 2; + } while (uVar23 < uVar2); + uVar15 = uVar15 + iVar6; + if (iVar6 == iVar10) goto LAB_00203970; + } + uVar27 = -(ulong)(uVar15 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar15 << 3; + *(double *)((long)local_58 + uVar27) = + *(double *)((long)local_58 + uVar27) + *(double *)((long)pdVar26 + uVar27); + } + } +LAB_00203970: + puVar32 = puVar32 + 1; + *(int *)(param_1 + 0x18) = iVar31; + iVar31 = iVar31 + 1; + } while (iVar31 != iVar29); + param_2 = param_2 + (ulong)(uint)((iVar29 + -2) - iVar45) + 1; + } +LAB_002039a4: + if (param_5 != 0) { + iVar8 = param_6 - 1; + uVar1 = param_6 - 2 >> 1; + puVar48 = (undefined2 *)(param_3 + 2); + puVar32 = param_2 + (ulong)(param_5 - 1) + 1; + lVar16 = (ulong)uVar1 * 0x10 + 0x18; + iVar45 = (uVar1 + 1) * 2; + if (iVar8 < 1) { + iVar45 = 0; + } + lVar17 = (long)iVar45; + lVar20 = (ulong)(uint)(iVar8 - iVar45) + 1; + lVar24 = lVar17 * 8; + while( true ) { + uVar39 = *param_2; + uVar27 = param_2[1 - iVar29]; + uVar33 = 0x8000; + uVar35 = 0x7fff; + if (dVar47 == 1.0) { + if (0 < iVar8) { + pdVar34 = (double *)(uVar39 + 8); + pdVar26 = (double *)(uVar27 + 8); + pdVar21 = local_58; + puVar38 = puVar48; + do { + dVar40 = pdVar34[-1]; + dVar44 = *pdVar21; + dVar46 = pdVar21[1]; + dVar41 = *pdVar34; + lVar18 = lrint(dVar44 + dVar40); + uVar28 = (short)lVar18; + if ((0xffff < (int)lVar18 + 0x8000U) && (uVar28 = uVar35, (int)lVar18 < 1)) { + uVar28 = uVar33; + } + puVar38[-1] = uVar28; + lVar18 = lrint(dVar46 + dVar41); + uVar28 = (short)lVar18; + if ((0xffff < (int)lVar18 + 0x8000U) && (uVar28 = uVar35, (int)lVar18 < 1)) { + uVar28 = uVar33; + } + dVar43 = *pdVar26; + dVar42 = pdVar26[-1]; + *puVar38 = uVar28; + pdVar34 = pdVar34 + 2; + pdVar26 = pdVar26 + 2; + pdVar21[1] = (dVar46 + dVar41) - dVar43; + *pdVar21 = (dVar44 + dVar40) - dVar42; + pdVar21 = pdVar21 + 2; + puVar38 = puVar38 + 2; + } while (pdVar34 != (double *)(uVar39 + lVar16)); + } + if (iVar45 < (int)param_6) { + lVar18 = 0; + do { + dVar40 = local_58[lVar17 + lVar18] + *(double *)(uVar39 + lVar24 + lVar18 * 8); + lVar19 = lrint(dVar40); + uVar28 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar28 = uVar35, (int)lVar19 < 1)) { + uVar28 = uVar33; + } + dVar41 = *(double *)(uVar27 + lVar24 + lVar18 * 8); + puVar48[lVar17 + lVar18 + -1] = uVar28; + local_58[lVar17 + lVar18] = dVar40 - dVar41; + lVar18 = lVar18 + 1; + } while (lVar20 != lVar18); + } + } + else { + if (0 < iVar8) { + pdVar34 = (double *)(uVar39 + 8); + pdVar26 = (double *)(uVar27 + 8); + puVar38 = puVar48; + pdVar21 = local_58; + do { + dVar40 = pdVar34[-1]; + dVar44 = *pdVar21; + dVar46 = pdVar21[1]; + dVar41 = *pdVar34; + lVar18 = lrint(dVar47 * (dVar44 + dVar40)); + uVar28 = (short)lVar18; + if ((0xffff < (int)lVar18 + 0x8000U) && (uVar28 = uVar35, (int)lVar18 < 1)) { + uVar28 = uVar33; + } + puVar38[-1] = uVar28; + lVar18 = lrint(dVar47 * (dVar46 + dVar41)); + uVar28 = (short)lVar18; + if ((0xffff < (int)lVar18 + 0x8000U) && (uVar28 = uVar35, (int)lVar18 < 1)) { + uVar28 = uVar33; + } + dVar43 = *pdVar26; + dVar42 = pdVar26[-1]; + *puVar38 = uVar28; + pdVar34 = pdVar34 + 2; + pdVar26 = pdVar26 + 2; + pdVar21[1] = (dVar46 + dVar41) - dVar43; + *pdVar21 = (dVar44 + dVar40) - dVar42; + puVar38 = puVar38 + 2; + pdVar21 = pdVar21 + 2; + } while (pdVar34 != (double *)(uVar39 + lVar16)); + } + if (iVar45 < (int)param_6) { + lVar18 = 0; + do { + dVar40 = local_58[lVar17 + lVar18] + *(double *)(uVar39 + lVar24 + lVar18 * 8); + lVar19 = lrint(dVar47 * dVar40); + uVar28 = (short)lVar19; + if ((0xffff < (int)lVar19 + 0x8000U) && (uVar28 = uVar35, (int)lVar19 < 1)) { + uVar28 = uVar33; + } + dVar41 = *(double *)(uVar27 + lVar24 + lVar18 * 8); + puVar48[lVar17 + lVar18 + -1] = uVar28; + local_58[lVar17 + lVar18] = dVar40 - dVar41; + lVar18 = lVar18 + 1; + } while (lVar18 != lVar20); + } + } + puVar48 = (undefined2 *)((long)puVar48 + (long)param_4); + param_2 = param_2 + 1; + if (param_2 == puVar32) break; + iVar29 = *(int *)(param_1 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 00203fe8 (8128 bytes) name=FUN_00203fe8 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00203fe8(long param_1,uint *param_2,int param_3) + +{ + short *psVar1; + uint uVar2; + uint uVar3; + long lVar4; + uint uVar5; + uint uVar6; + uint uVar7; + long lVar8; + long lVar9; + long lVar10; + ushort *puVar11; + uint uVar12; + uint uVar13; + byte bVar14; + short sVar15; + ushort uVar16; + int iVar17; + int iVar18; + uint uVar19; + uint uVar20; + uint uVar21; + short sVar22; + short sVar23; + short sVar24; + short sVar25; + char cVar26; + uint uVar27; + char cVar28; + char cVar29; + ushort uVar30; + int iVar31; + uint uVar32; + int iVar33; + long lVar34; + long lVar35; + void *__s; + byte *pbVar36; + ulong uVar37; + long lVar38; + ushort *puVar39; + short *psVar40; + ushort uVar41; + uint uVar42; + short *__s_00; + long lVar43; + ushort uVar44; + long lVar45; + ushort uVar46; + uint uVar47; + long lVar48; + int iVar49; + ulong uVar50; + ushort uVar51; + int iVar52; + ushort *puVar53; + uint uVar54; + uint uVar55; + ushort uVar56; + char *pcVar57; + ushort uVar58; + uint uVar59; + ushort uVar60; + ulong uVar61; + ushort uVar62; + uint uVar63; + ushort uVar64; + ushort uVar65; + ushort uVar66; + ushort uVar67; + ushort uVar68; + short *__s_01; + ushort *puVar69; + ushort uVar70; + ushort uVar71; + int iVar72; + undefined8 uVar73; + undefined8 uVar74; + size_t __n; + undefined8 uVar75; + undefined8 uVar76; + int iVar77; + int iVar78; + long lVar79; + uint uVar80; + short *psVar81; + short *psVar82; + short *psVar83; + void *local_9f0; + long local_9e0; + int local_9d0; + long local_9c8; + uint local_998; + ushort auStack_900 [64]; + ushort local_880 [1088]; + + uVar12 = (param_3 + -1) / 2; + lVar34 = *(long *)(param_1 + 0x50); + uVar27 = *param_2 >> 3 & 0x1ff; + uVar13 = param_2[2]; + lVar35 = *(long *)(param_2 + 0x14); + iVar72 = uVar12 * 2; + uVar2 = uVar27 + 1; + uVar19 = 0; + if (uVar2 != 0) { + uVar19 = 0x200 / uVar2; + } + local_9f0 = (void *)0x0; + if ((int)param_2[3] < (int)uVar19) { + uVar19 = param_2[3]; + } + lVar43 = (long)(int)((iVar72 + uVar19) * 0x10 * uVar2 + 0x10); + if (lVar43 != 0) { + if (lVar43 < 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + local_9f0 = operator_new(lVar43 << 1); + memset(local_9f0,0,lVar43 << 1); + } + lVar43 = (long)(int)((iVar72 + uVar19) * 0x100 * uVar2 + 0x10); + if (lVar43 < 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + uVar61 = lVar43 << 1; + __s = operator_new(uVar61); + memset(__s,0,uVar61); + __s_01 = (short *)((long)__s + 0xfU & 0xfffffffffffffff0); + __s_00 = (short *)((long)local_9f0 + 0xfU & 0xfffffffffffffff0); + cVar28 = cv::checkHardwareSupport(3); + if (cVar28 == '\0') { + cVar28 = cv::checkHardwareSupport(100); + } + uVar42 = param_2[3]; + if (0 < (int)uVar42) { + sVar24 = (short)uVar12 + 2; + lVar43 = (long)(int)uVar2; + iVar17 = (uVar12 + 1) * uVar12 * 2; + __n = NEON_shl(lVar43,5); + iVar18 = uVar12 * -2; + uVar3 = iVar72 + 1; + uVar20 = uVar13 - 1; + sVar22 = (short)uVar3; + local_9c8 = 0; + local_9d0 = 0; + do { + lVar8 = *(long *)(param_1 + 0x10) + local_9c8; + uVar5 = uVar42 - local_9d0; + if ((int)uVar19 < (int)(uVar42 - local_9d0)) { + uVar5 = uVar19; + } + uVar5 = uVar5 + iVar72; + lVar9 = *(long *)(param_2 + 4) + local_9c8 + (int)(uVar12 * ~uVar27); + uVar42 = uVar5 * 0x10 * uVar2; + memset(__s_00,0,-(ulong)(uVar42 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar42 << 1); + uVar42 = uVar5 * 0x100 * uVar2; + memset(__s_01,0,-(ulong)(uVar42 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar42 << 1); + iVar78 = 0; + iVar52 = 0; + lVar48 = 0; + do { + if (0 < (int)uVar5) { + pbVar36 = (byte *)(lVar8 + lVar48); + iVar77 = iVar78 << 4; + uVar42 = 0; + do { + uVar54 = iVar77 + (uint)(*pbVar36 >> 4); + iVar77 = iVar77 + 0x10; + uVar61 = -(ulong)(uVar54 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar54 << 1; + *(short *)((long)__s_00 + uVar61) = sVar24 + *(short *)((long)__s_00 + uVar61); + bVar14 = *pbVar36; + pbVar36 = pbVar36 + lVar43; + iVar31 = uVar42 + (iVar52 + (uint)(bVar14 >> 4)) * uVar5; + uVar42 = uVar42 + 1; + uVar54 = (bVar14 & 0xf) + iVar31 * 0x10; + uVar61 = -(ulong)(uVar54 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar54 << 1; + *(short *)((long)__s_01 + uVar61) = sVar24 + *(short *)((long)__s_01 + uVar61); + } while (uVar42 != uVar5); + } + uVar42 = 1; + if (1 < (int)uVar12) { + do { + uVar54 = uVar42; + if ((int)uVar20 < (int)uVar42) { + uVar54 = uVar20; + } + if (0 < (int)uVar5) { + pbVar36 = (byte *)(lVar8 + (int)uVar54 * lVar34 + lVar48); + uVar54 = 0; + iVar77 = iVar78 << 4; + do { + uVar6 = iVar77 + (uint)(*pbVar36 >> 4); + iVar77 = iVar77 + 0x10; + uVar61 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + *(short *)((long)__s_00 + uVar61) = *(short *)((long)__s_00 + uVar61) + 1; + bVar14 = *pbVar36; + pbVar36 = pbVar36 + lVar43; + iVar31 = uVar54 + (iVar52 + (uint)(bVar14 >> 4)) * uVar5; + uVar54 = uVar54 + 1; + uVar6 = (bVar14 & 0xf) + iVar31 * 0x10; + uVar61 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + *(short *)((long)__s_01 + uVar61) = *(short *)((long)__s_01 + uVar61) + 1; + } while (uVar54 != uVar5); + } + uVar42 = uVar42 + 1; + } while (uVar42 != uVar12); + } + lVar48 = lVar48 + 1; + iVar52 = iVar52 + 0x10; + iVar78 = iVar78 + uVar5; + } while ((int)lVar48 < (int)uVar2); + if (0 < (int)uVar13) { + uVar54 = uVar5 - 1; + iVar52 = uVar5 - uVar12; + uVar61 = -(ulong)((uVar5 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)(uVar5 * 0x10) << 1; + uVar42 = uVar12 + 1 + iVar52; + local_9e0 = (long)(int)(uVar2 * uVar12); + local_998 = uVar12; + do { + iVar78 = iVar18 + -1 + local_998; + if (iVar78 < 0) { + iVar78 = 0; + } + uVar6 = local_998; + if ((int)uVar20 < (int)local_998) { + uVar6 = uVar20; + } + lVar45 = iVar78 * lVar34; + memset(local_880,0,lVar43 * 0x220); + memset(auStack_900,0,__n); + sVar25 = (short)((uVar12 & 0x7fff) << 1) + 1; + lVar48 = 0; + iVar77 = 0; + iVar78 = 0; + puVar69 = local_880; + psVar81 = __s_00 + (ulong)(iVar72 - 1) * 0x10 + 0x10; + psVar82 = __s_00; + psVar83 = __s_01; + do { + iVar31 = (int)lVar48; + if (0 < (int)uVar5) { + uVar47 = 0; + iVar49 = iVar77 << 4; + pbVar36 = (byte *)(lVar8 + lVar48 + lVar45); + do { + uVar80 = iVar49 + (uint)(*pbVar36 >> 4); + uVar37 = -(ulong)(uVar80 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar80 << 1; + *(short *)((long)__s_00 + uVar37) = *(short *)((long)__s_00 + uVar37) + -1; + uVar80 = (*pbVar36 & 0xf) + + (uVar47 + (iVar78 + (uint)(*pbVar36 >> 4)) * uVar5) * 0x10; + uVar37 = -(ulong)(uVar80 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar80 << 1; + *(short *)((long)__s_01 + uVar37) = *(short *)((long)__s_01 + uVar37) + -1; + uVar80 = iVar49 + (uint)(pbVar36[(int)uVar6 * lVar34 - lVar45] >> 4); + iVar49 = iVar49 + 0x10; + uVar37 = -(ulong)(uVar80 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar80 << 1; + *(short *)((long)__s_00 + uVar37) = *(short *)((long)__s_00 + uVar37) + 1; + iVar33 = uVar47 + (iVar78 + (uint)(pbVar36[(int)uVar6 * lVar34 - lVar45] >> 4)) * + uVar5; + uVar47 = uVar47 + 1; + uVar80 = (pbVar36[(int)uVar6 * lVar34 - lVar45] & 0xf) + iVar33 * 0x10; + uVar37 = -(ulong)(uVar80 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar80 << 1; + *(short *)((long)__s_01 + uVar37) = *(short *)((long)__s_01 + uVar37) + 1; + pbVar36 = pbVar36 + lVar43; + } while (uVar47 != uVar5); + } + iVar49 = 0; + puVar53 = puVar69; + psVar40 = psVar83; + do { + iVar49 = iVar49 + 1; + puVar53[0x10] = puVar53[0x10] + sVar22 * *psVar40; + puVar53[0x11] = puVar53[0x11] + sVar22 * psVar40[1]; + puVar53[0x12] = puVar53[0x12] + sVar22 * psVar40[2]; + puVar53[0x13] = puVar53[0x13] + sVar22 * psVar40[3]; + puVar53[0x14] = puVar53[0x14] + sVar22 * psVar40[4]; + puVar53[0x15] = puVar53[0x15] + sVar22 * psVar40[5]; + puVar53[0x16] = puVar53[0x16] + sVar22 * psVar40[6]; + puVar53[0x17] = puVar53[0x17] + sVar22 * psVar40[7]; + puVar53[0x18] = puVar53[0x18] + sVar22 * psVar40[8]; + puVar53[0x19] = puVar53[0x19] + sVar22 * psVar40[9]; + puVar53[0x1a] = puVar53[0x1a] + sVar22 * psVar40[10]; + puVar53[0x1b] = puVar53[0x1b] + sVar22 * psVar40[0xb]; + puVar53[0x1c] = puVar53[0x1c] + sVar22 * psVar40[0xc]; + puVar53[0x1d] = puVar53[0x1d] + sVar22 * psVar40[0xd]; + puVar53[0x1e] = puVar53[0x1e] + sVar22 * psVar40[0xe]; + psVar1 = psVar40 + 0xf; + psVar40 = (short *)((long)psVar40 + uVar61); + puVar53[0x1f] = puVar53[0x1f] + sVar22 * *psVar1; + puVar53 = puVar53 + 0x10; + } while (iVar49 != 0x10); + if (cVar28 == '\0') { + if (0 < iVar72) { + uVar56 = puVar69[4]; + uVar70 = puVar69[0xb]; + uVar68 = puVar69[0xc]; + uVar67 = puVar69[0xd]; + uVar66 = puVar69[0xe]; + uVar64 = *puVar69; + uVar62 = puVar69[1]; + uVar60 = puVar69[2]; + uVar58 = puVar69[3]; + uVar51 = puVar69[5]; + uVar30 = puVar69[9]; + uVar65 = puVar69[0xf]; + uVar46 = puVar69[6]; + uVar71 = puVar69[7]; + uVar44 = puVar69[8]; + uVar41 = puVar69[10]; + psVar40 = psVar82; + do { + psVar1 = psVar40 + 0x10; + uVar64 = uVar64 + *psVar40; + *puVar69 = uVar64; + uVar62 = uVar62 + psVar40[1]; + puVar69[1] = uVar62; + uVar60 = uVar60 + psVar40[2]; + puVar69[2] = uVar60; + uVar58 = uVar58 + psVar40[3]; + puVar69[3] = uVar58; + uVar56 = uVar56 + psVar40[4]; + puVar69[4] = uVar56; + uVar51 = uVar51 + psVar40[5]; + puVar69[5] = uVar51; + uVar46 = uVar46 + psVar40[6]; + puVar69[6] = uVar46; + uVar71 = uVar71 + psVar40[7]; + puVar69[7] = uVar71; + uVar44 = uVar44 + psVar40[8]; + puVar69[8] = uVar44; + uVar30 = uVar30 + psVar40[9]; + puVar69[9] = uVar30; + uVar41 = uVar41 + psVar40[10]; + puVar69[10] = uVar41; + uVar70 = uVar70 + psVar40[0xb]; + puVar69[0xb] = uVar70; + uVar68 = uVar68 + psVar40[0xc]; + puVar69[0xc] = uVar68; + uVar67 = uVar67 + psVar40[0xd]; + puVar69[0xd] = uVar67; + uVar66 = uVar66 + psVar40[0xe]; + puVar69[0xe] = uVar66; + uVar65 = uVar65 + psVar40[0xf]; + puVar69[0xf] = uVar65; + psVar40 = psVar1; + } while (psVar1 != psVar81); + } + if ((int)uVar12 < iVar52) { + uVar80 = 0; + lVar79 = NEON_shl((long)iVar31,4); + pcVar57 = (char *)(lVar9 + lVar48 + local_9e0); + lVar10 = lVar79 + iVar31; + uVar47 = uVar3; + do { + uVar21 = uVar47 - 1; + uVar32 = uVar21; + if ((int)uVar54 < (int)uVar21) { + uVar32 = uVar54; + } + uVar37 = -(ulong)((uVar32 + iVar77 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)((uVar32 + iVar77) * 0x10) << 1; + uVar64 = *(short *)((long)__s_00 + uVar37) + *puVar69; + *puVar69 = uVar64; + uVar62 = *(short *)((long)__s_00 + uVar37 + 2) + puVar69[1]; + puVar69[1] = uVar62; + uVar60 = *(short *)((long)__s_00 + uVar37 + 4) + puVar69[2]; + puVar69[2] = uVar60; + uVar58 = *(short *)((long)__s_00 + uVar37 + 6) + puVar69[3]; + puVar69[3] = uVar58; + uVar56 = *(short *)((long)__s_00 + uVar37 + 8) + puVar69[4]; + puVar69[4] = uVar56; + uVar51 = *(short *)((long)__s_00 + uVar37 + 10) + puVar69[5]; + puVar69[5] = uVar51; + uVar46 = *(short *)((long)__s_00 + uVar37 + 0xc) + puVar69[6]; + puVar69[6] = uVar46; + uVar71 = *(short *)((long)__s_00 + uVar37 + 0xe) + puVar69[7]; + puVar69[7] = uVar71; + uVar44 = *(short *)((long)__s_00 + uVar37 + 0x10) + puVar69[8]; + puVar69[8] = uVar44; + uVar30 = *(short *)((long)__s_00 + uVar37 + 0x12) + puVar69[9]; + puVar69[9] = uVar30; + uVar41 = *(short *)((long)__s_00 + uVar37 + 0x14) + puVar69[10]; + puVar69[10] = uVar41; + uVar70 = *(short *)((long)__s_00 + uVar37 + 0x16) + puVar69[0xb]; + puVar69[0xb] = uVar70; + uVar68 = *(short *)((long)__s_00 + uVar37 + 0x18) + puVar69[0xc]; + puVar69[0xc] = uVar68; + uVar67 = *(short *)((long)__s_00 + uVar37 + 0x1a) + puVar69[0xd]; + puVar69[0xd] = uVar67; + uVar66 = *(short *)((long)__s_00 + uVar37 + 0x1c) + puVar69[0xe]; + puVar69[0xe] = uVar66; + uVar65 = *(short *)((long)__s_00 + uVar37 + 0x1e) + puVar69[0xf]; + puVar69[0xf] = uVar65; + if (iVar17 < (int)(uint)uVar64) { + uVar32 = 0; + iVar31 = 0; + } + else { + uVar63 = (uint)uVar64 + (uint)uVar62; + iVar31 = 1; + uVar32 = (uint)uVar64; + if ((int)uVar63 <= iVar17) { + uVar32 = uVar63 + puVar69[2]; + if (iVar17 < (int)uVar32) { + iVar31 = 2; + uVar32 = uVar63; + } + else { + uVar63 = uVar32 + puVar69[3]; + if (iVar17 < (int)uVar63) { + iVar31 = 3; + } + else { + uVar32 = uVar63 + puVar69[4]; + if (iVar17 < (int)uVar32) { + iVar31 = 4; + uVar32 = uVar63; + } + else { + uVar63 = uVar32 + puVar69[5]; + if (iVar17 < (int)uVar63) { + iVar31 = 5; + } + else { + uVar32 = uVar63 + puVar69[6]; + if (iVar17 < (int)uVar32) { + iVar31 = 6; + uVar32 = uVar63; + } + else { + uVar63 = uVar32 + puVar69[7]; + if (iVar17 < (int)uVar63) { + iVar31 = 7; + } + else { + uVar32 = uVar63 + puVar69[8]; + if (iVar17 < (int)uVar32) { + iVar31 = 8; + uVar32 = uVar63; + } + else { + uVar63 = uVar32 + puVar69[9]; + if (iVar17 < (int)uVar63) { + iVar31 = 9; + } + else { + uVar32 = uVar63 + puVar69[10]; + if (iVar17 < (int)uVar32) { + iVar31 = 10; + uVar32 = uVar63; + } + else { + uVar63 = uVar32 + puVar69[0xb]; + if (iVar17 < (int)uVar63) { + iVar31 = 0xb; + } + else { + uVar32 = uVar63 + puVar69[0xc]; + if (iVar17 < (int)uVar32) { + iVar31 = 0xc; + uVar32 = uVar63; + } + else { + uVar63 = uVar32 + puVar69[0xd]; + if (iVar17 < (int)uVar63) { + iVar31 = 0xd; + } + else { + uVar55 = uVar63 + puVar69[0xe]; + if (iVar17 < (int)uVar55) { + iVar31 = 0xe; + uVar32 = uVar63; + } + else { + iVar31 = 0x10; + uVar32 = uVar55 + uVar65; + if (iVar17 < (int)(uVar55 + uVar65)) { + iVar31 = 0xf; + uVar32 = uVar55; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + lVar38 = (long)iVar31; + uVar16 = auStack_900[lVar79 + lVar38]; + if ((int)uVar80 < (int)(uint)uVar16) { + if ((int)uVar21 < (int)(uint)uVar16) { + puVar39 = local_880 + (lVar38 + lVar10 + 1) * 0x10; + } + else { + lVar4 = lVar38 + lVar10 + 1; + iVar49 = uVar5 * (iVar78 + iVar31); + puVar39 = local_880 + lVar4 * 0x10; + uVar64 = local_880[lVar4 * 0x10]; + uVar44 = local_880[lVar4 * 0x10 + 8]; + uVar62 = local_880[lVar4 * 0x10 + 1]; + uVar60 = local_880[lVar4 * 0x10 + 2]; + uVar58 = local_880[lVar4 * 0x10 + 3]; + uVar56 = local_880[lVar4 * 0x10 + 4]; + uVar51 = local_880[lVar4 * 0x10 + 5]; + uVar46 = local_880[lVar4 * 0x10 + 6]; + uVar71 = local_880[lVar4 * 0x10 + 7]; + uVar30 = local_880[lVar4 * 0x10 + 9]; + uVar41 = local_880[lVar4 * 0x10 + 10]; + uVar70 = local_880[lVar4 * 0x10 + 0xb]; + uVar68 = local_880[lVar4 * 0x10 + 0xc]; + uVar67 = local_880[lVar4 * 0x10 + 0xd]; + uVar66 = local_880[lVar4 * 0x10 + 0xe]; + uVar65 = local_880[lVar4 * 0x10 + 0xf]; + uVar63 = (uint)uVar16; + do { + uVar55 = uVar63 + 1; + uVar59 = uVar55 & 0xffff; + iVar33 = iVar18 + uVar63 + -1; + if ((int)(iVar18 + uVar63) < 1) { + iVar33 = 0; + } + uVar7 = iVar33 + iVar49; + uVar37 = -(ulong)((uVar7 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)(uVar7 * 0x10) << 1; + uVar64 = uVar64 - *(short *)((long)__s_01 + uVar37); + uVar7 = uVar54; + if ((int)uVar63 < (int)uVar5) { + uVar7 = uVar63; + } + *puVar39 = uVar64; + uVar7 = uVar7 + iVar49; + uVar50 = -(ulong)((uVar7 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)(uVar7 * 0x10) << 1; + uVar62 = uVar62 - *(short *)((long)__s_01 + uVar37 + 2); + local_880[lVar4 * 0x10 + 1] = uVar62; + uVar60 = uVar60 - *(short *)((long)__s_01 + uVar37 + 4); + local_880[lVar4 * 0x10 + 2] = uVar60; + uVar58 = uVar58 - *(short *)((long)__s_01 + uVar37 + 6); + local_880[lVar4 * 0x10 + 3] = uVar58; + uVar56 = uVar56 - *(short *)((long)__s_01 + uVar37 + 8); + local_880[lVar4 * 0x10 + 4] = uVar56; + uVar51 = uVar51 - *(short *)((long)__s_01 + uVar37 + 10); + local_880[lVar4 * 0x10 + 5] = uVar51; + uVar46 = uVar46 - *(short *)((long)__s_01 + uVar37 + 0xc); + local_880[lVar4 * 0x10 + 6] = uVar46; + uVar71 = uVar71 - *(short *)((long)__s_01 + uVar37 + 0xe); + local_880[lVar4 * 0x10 + 7] = uVar71; + uVar44 = uVar44 - *(short *)((long)__s_01 + uVar37 + 0x10); + local_880[lVar4 * 0x10 + 8] = uVar44; + uVar30 = uVar30 - *(short *)((long)__s_01 + uVar37 + 0x12); + local_880[lVar4 * 0x10 + 9] = uVar30; + uVar41 = uVar41 - *(short *)((long)__s_01 + uVar37 + 0x14); + local_880[lVar4 * 0x10 + 10] = uVar41; + uVar70 = uVar70 - *(short *)((long)__s_01 + uVar37 + 0x16); + local_880[lVar4 * 0x10 + 0xb] = uVar70; + uVar68 = uVar68 - *(short *)((long)__s_01 + uVar37 + 0x18); + local_880[lVar4 * 0x10 + 0xc] = uVar68; + uVar67 = uVar67 - *(short *)((long)__s_01 + uVar37 + 0x1a); + local_880[lVar4 * 0x10 + 0xd] = uVar67; + uVar66 = uVar66 - *(short *)((long)__s_01 + uVar37 + 0x1c); + local_880[lVar4 * 0x10 + 0xe] = uVar66; + uVar65 = uVar65 - *(short *)((long)__s_01 + uVar37 + 0x1e); + local_880[lVar4 * 0x10 + 0xf] = uVar65; + uVar64 = uVar64 + *(short *)((long)__s_01 + uVar50); + *puVar39 = uVar64; + uVar62 = uVar62 + *(short *)((long)__s_01 + uVar50 + 2); + local_880[lVar4 * 0x10 + 1] = uVar62; + uVar60 = uVar60 + *(short *)((long)__s_01 + uVar50 + 4); + local_880[lVar4 * 0x10 + 2] = uVar60; + uVar58 = uVar58 + *(short *)((long)__s_01 + uVar50 + 6); + local_880[lVar4 * 0x10 + 3] = uVar58; + uVar56 = uVar56 + *(short *)((long)__s_01 + uVar50 + 8); + local_880[lVar4 * 0x10 + 4] = uVar56; + uVar51 = uVar51 + *(short *)((long)__s_01 + uVar50 + 10); + local_880[lVar4 * 0x10 + 5] = uVar51; + uVar46 = uVar46 + *(short *)((long)__s_01 + uVar50 + 0xc); + local_880[lVar4 * 0x10 + 6] = uVar46; + uVar71 = uVar71 + *(short *)((long)__s_01 + uVar50 + 0xe); + local_880[lVar4 * 0x10 + 7] = uVar71; + uVar44 = uVar44 + *(short *)((long)__s_01 + uVar50 + 0x10); + local_880[lVar4 * 0x10 + 8] = uVar44; + uVar30 = uVar30 + *(short *)((long)__s_01 + uVar50 + 0x12); + local_880[lVar4 * 0x10 + 9] = uVar30; + uVar41 = uVar41 + *(short *)((long)__s_01 + uVar50 + 0x14); + local_880[lVar4 * 0x10 + 10] = uVar41; + uVar70 = uVar70 + *(short *)((long)__s_01 + uVar50 + 0x16); + local_880[lVar4 * 0x10 + 0xb] = uVar70; + uVar68 = uVar68 + *(short *)((long)__s_01 + uVar50 + 0x18); + local_880[lVar4 * 0x10 + 0xc] = uVar68; + uVar67 = uVar67 + *(short *)((long)__s_01 + uVar50 + 0x1a); + local_880[lVar4 * 0x10 + 0xd] = uVar67; + uVar66 = uVar66 + *(short *)((long)__s_01 + uVar50 + 0x1c); + local_880[lVar4 * 0x10 + 0xe] = uVar66; + uVar65 = uVar65 + *(short *)((long)__s_01 + uVar50 + 0x1e); + local_880[lVar4 * 0x10 + 0xf] = uVar65; + uVar63 = uVar59; + } while ((int)uVar59 <= (int)uVar21); + uVar64 = *puVar69; + uVar62 = puVar69[1]; + uVar60 = puVar69[2]; + uVar58 = puVar69[3]; + uVar56 = puVar69[4]; + uVar51 = puVar69[5]; + uVar46 = puVar69[6]; + uVar71 = puVar69[7]; + uVar44 = puVar69[8]; + uVar30 = puVar69[9]; + uVar41 = puVar69[10]; + uVar70 = puVar69[0xb]; + uVar68 = puVar69[0xc]; + uVar67 = puVar69[0xd]; + uVar66 = puVar69[0xe]; + uVar65 = puVar69[0xf]; + auStack_900[lVar79 + lVar38] = (ushort)uVar55; + } + } + else { + lVar4 = lVar38 + lVar10 + 1; + auStack_900[lVar79 + lVar38] = (ushort)uVar80; + uVar63 = uVar5; + if ((int)uVar21 < (int)uVar5) { + uVar63 = uVar47; + } + puVar39 = local_880 + lVar4 * 0x10; + puVar39[0] = 0; + puVar39[1] = 0; + puVar39[2] = 0; + puVar39[3] = 0; + puVar53 = local_880 + lVar4 * 0x10 + 4; + puVar53[0] = 0; + puVar53[1] = 0; + puVar53[2] = 0; + puVar53[3] = 0; + puVar53 = local_880 + lVar4 * 0x10 + 8; + puVar53[0] = 0; + puVar53[1] = 0; + puVar53[2] = 0; + puVar53[3] = 0; + puVar53 = local_880 + lVar4 * 0x10 + 0xc; + puVar53[0] = 0; + puVar53[1] = 0; + puVar53[2] = 0; + puVar53[3] = 0; + uVar55 = uVar80; + while (uVar55 = uVar55 & 0xffff, (int)uVar55 < (int)uVar63) { + uVar59 = uVar55 + uVar5 * (iVar31 + iVar78); + uVar64 = local_880[lVar4 * 0x10 + 1]; + uVar37 = -(ulong)((uVar59 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)(uVar59 * 0x10) << 1; + uVar62 = local_880[lVar4 * 0x10 + 2]; + uVar60 = local_880[lVar4 * 0x10 + 3]; + uVar58 = local_880[lVar4 * 0x10 + 4]; + uVar55 = uVar55 + 1; + uVar56 = local_880[lVar4 * 0x10 + 5]; + *puVar39 = *(short *)((long)__s_01 + uVar37) + *puVar39; + local_880[lVar4 * 0x10 + 1] = *(short *)((long)__s_01 + uVar37 + 2) + uVar64; + local_880[lVar4 * 0x10 + 2] = *(short *)((long)__s_01 + uVar37 + 4) + uVar62; + local_880[lVar4 * 0x10 + 3] = *(short *)((long)__s_01 + uVar37 + 6) + uVar60; + local_880[lVar4 * 0x10 + 4] = *(short *)((long)__s_01 + uVar37 + 8) + uVar58; + local_880[lVar4 * 0x10 + 5] = *(short *)((long)__s_01 + uVar37 + 10) + uVar56; + local_880[lVar4 * 0x10 + 6] = + *(short *)((long)__s_01 + uVar37 + 0xc) + local_880[lVar4 * 0x10 + 6]; + local_880[lVar4 * 0x10 + 7] = + *(short *)((long)__s_01 + uVar37 + 0xe) + local_880[lVar4 * 0x10 + 7]; + local_880[lVar4 * 0x10 + 8] = + *(short *)((long)__s_01 + uVar37 + 0x10) + local_880[lVar4 * 0x10 + 8]; + local_880[lVar4 * 0x10 + 9] = + *(short *)((long)__s_01 + uVar37 + 0x12) + local_880[lVar4 * 0x10 + 9]; + local_880[lVar4 * 0x10 + 10] = + *(short *)((long)__s_01 + uVar37 + 0x14) + local_880[lVar4 * 0x10 + 10]; + local_880[lVar4 * 0x10 + 0xb] = + *(short *)((long)__s_01 + uVar37 + 0x16) + local_880[lVar4 * 0x10 + 0xb]; + uVar64 = local_880[lVar4 * 0x10 + 0xd]; + uVar62 = local_880[lVar4 * 0x10 + 0xe]; + local_880[lVar4 * 0x10 + 0xc] = + *(short *)((long)__s_01 + uVar37 + 0x18) + local_880[lVar4 * 0x10 + 0xc]; + uVar60 = local_880[lVar4 * 0x10 + 0xf]; + sVar15 = *(short *)((long)__s_01 + uVar37 + 0x1a); + auStack_900[lVar79 + lVar38] = (ushort)uVar55; + local_880[lVar4 * 0x10 + 0xd] = sVar15 + uVar64; + local_880[lVar4 * 0x10 + 0xe] = + *(short *)((long)__s_01 + uVar37 + 0x1c) + uVar62; + local_880[lVar4 * 0x10 + 0xf] = + *(short *)((long)__s_01 + uVar37 + 0x1e) + uVar60; + } + if ((int)uVar55 <= (int)uVar21) { + uVar21 = uVar54 + (iVar31 + iVar78) * uVar5; + uVar37 = -(ulong)((uVar21 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)(uVar21 * 0x10) << 1; + sVar23 = (short)uVar47 - (short)uVar5; + local_880[lVar4 * 0x10] = + local_880[lVar4 * 0x10] + sVar23 * *(short *)((long)__s_01 + uVar37); + local_880[lVar4 * 0x10 + 1] = + local_880[lVar4 * 0x10 + 1] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 2); + local_880[lVar4 * 0x10 + 2] = + local_880[lVar4 * 0x10 + 2] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 4); + local_880[lVar4 * 0x10 + 3] = + local_880[lVar4 * 0x10 + 3] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 6); + local_880[lVar4 * 0x10 + 4] = + local_880[lVar4 * 0x10 + 4] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 8); + local_880[lVar4 * 0x10 + 5] = + local_880[lVar4 * 0x10 + 5] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 10); + local_880[lVar4 * 0x10 + 6] = + local_880[lVar4 * 0x10 + 6] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 0xc); + local_880[lVar4 * 0x10 + 7] = + local_880[lVar4 * 0x10 + 7] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 0xe); + local_880[lVar4 * 0x10 + 8] = + local_880[lVar4 * 0x10 + 8] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x10); + local_880[lVar4 * 0x10 + 9] = + local_880[lVar4 * 0x10 + 9] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x12); + local_880[lVar4 * 0x10 + 10] = + local_880[lVar4 * 0x10 + 10] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x14); + uVar64 = local_880[lVar4 * 0x10 + 0xc]; + uVar62 = local_880[lVar4 * 0x10 + 0xd]; + local_880[lVar4 * 0x10 + 0xb] = + local_880[lVar4 * 0x10 + 0xb] + + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x16); + uVar60 = local_880[lVar4 * 0x10 + 0xe]; + sVar15 = *(short *)((long)__s_01 + uVar37 + 0x18); + uVar58 = local_880[lVar4 * 0x10 + 0xf]; + auStack_900[lVar79 + lVar38] = (ushort)uVar80 + sVar25; + local_880[lVar4 * 0x10 + 0xc] = uVar64 + sVar23 * sVar15; + local_880[lVar4 * 0x10 + 0xd] = + uVar62 + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x1a); + local_880[lVar4 * 0x10 + 0xe] = + uVar60 + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x1c); + local_880[lVar4 * 0x10 + 0xf] = + uVar58 + sVar23 * *(short *)((long)__s_01 + uVar37 + 0x1e); + } + uVar64 = *puVar69; + uVar62 = puVar69[1]; + uVar60 = puVar69[2]; + uVar58 = puVar69[3]; + uVar56 = puVar69[4]; + uVar51 = puVar69[5]; + uVar46 = puVar69[6]; + uVar71 = puVar69[7]; + uVar44 = puVar69[8]; + uVar30 = puVar69[9]; + uVar41 = puVar69[10]; + uVar70 = puVar69[0xb]; + uVar68 = puVar69[0xc]; + uVar67 = puVar69[0xd]; + uVar66 = puVar69[0xe]; + uVar65 = puVar69[0xf]; + } + uVar21 = uVar80; + if ((int)uVar80 < 0) { + uVar21 = 0; + } + uVar37 = -(ulong)((uVar21 + iVar77 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)((uVar21 + iVar77) * 0x10) << 1; + *puVar69 = uVar64 - *(short *)((long)__s_00 + uVar37); + puVar69[1] = uVar62 - *(short *)((long)__s_00 + uVar37 + 2); + puVar69[2] = uVar60 - *(short *)((long)__s_00 + uVar37 + 4); + puVar69[3] = uVar58 - *(short *)((long)__s_00 + uVar37 + 6); + puVar69[4] = uVar56 - *(short *)((long)__s_00 + uVar37 + 8); + puVar69[5] = uVar51 - *(short *)((long)__s_00 + uVar37 + 10); + puVar69[6] = uVar46 - *(short *)((long)__s_00 + uVar37 + 0xc); + puVar69[7] = uVar71 - *(short *)((long)__s_00 + uVar37 + 0xe); + puVar69[8] = uVar44 - *(short *)((long)__s_00 + uVar37 + 0x10); + puVar69[9] = uVar30 - *(short *)((long)__s_00 + uVar37 + 0x12); + puVar69[10] = uVar41 - *(short *)((long)__s_00 + uVar37 + 0x14); + puVar69[0xb] = uVar70 - *(short *)((long)__s_00 + uVar37 + 0x16); + puVar69[0xc] = uVar68 - *(short *)((long)__s_00 + uVar37 + 0x18); + puVar69[0xd] = uVar67 - *(short *)((long)__s_00 + uVar37 + 0x1a); + puVar69[0xe] = uVar66 - *(short *)((long)__s_00 + uVar37 + 0x1c); + puVar69[0xf] = uVar65 - *(short *)((long)__s_00 + uVar37 + 0x1e); + cVar26 = (char)iVar31; + if (iVar17 < (int)(uVar32 + *puVar39)) { + *pcVar57 = cVar26 * '\x10'; + } + else { + iVar31 = uVar32 + *puVar39 + (uint)puVar39[1]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\x01'; + } + else { + iVar31 = iVar31 + (uint)puVar39[2]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\x02'; + } + else { + iVar31 = iVar31 + (uint)puVar39[3]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\x03'; + } + else { + iVar31 = iVar31 + (uint)puVar39[4]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\x04'; + } + else { + iVar31 = iVar31 + (uint)puVar39[5]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\x05'; + } + else { + iVar31 = iVar31 + (uint)puVar39[6]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\x06'; + } + else { + iVar31 = iVar31 + (uint)puVar39[7]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\a'; + } + else { + iVar31 = iVar31 + (uint)puVar39[8]; + if (iVar17 < iVar31) { + cVar29 = '\b'; +LAB_002052b8: + *pcVar57 = cVar29 + cVar26 * '\x10'; + } + else { + iVar31 = iVar31 + (uint)puVar39[9]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\t'; + } + else { + iVar31 = iVar31 + (uint)puVar39[10]; + if (iVar17 < iVar31) { + *pcVar57 = cVar26 * '\x10' + '\n'; + } + else { + iVar31 = iVar31 + (uint)puVar39[0xb]; + if (iVar31 <= iVar17) { + iVar31 = iVar31 + (uint)puVar39[0xc]; + if (iVar17 < iVar31) { + cVar29 = '\f'; + } + else { + iVar31 = iVar31 + (uint)puVar39[0xd]; + if (iVar17 < iVar31) { + cVar29 = '\r'; + } + else { + iVar31 = iVar31 + (uint)puVar39[0xe]; + if (iVar17 < iVar31) { + cVar29 = '\x0e'; + } + else { + cVar29 = '\x0f'; + if ((int)(iVar31 + (uint)puVar39[0xf]) <= iVar17) + goto LAB_00205120; + } + } + } + goto LAB_002052b8; + } + *pcVar57 = cVar26 * '\x10' + '\v'; + } + } + } + } + } + } + } + } + } + } + } +LAB_00205120: + uVar47 = uVar47 + 1; + uVar80 = uVar80 + 1; + pcVar57 = pcVar57 + lVar43; + } while (uVar47 != uVar42); + } + } + else { + psVar40 = psVar82; + if (0 < iVar72) { + do { + uVar76 = *(undefined8 *)(puVar69 + 4); + uVar75 = *(undefined8 *)puVar69; + psVar1 = psVar40 + 0x10; + uVar74 = *(undefined8 *)(psVar40 + 4); + uVar73 = *(undefined8 *)psVar40; + *(ulong *)(puVar69 + 4) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)puVar69 = + CONCAT26((short)((ulong)uVar73 >> 0x30) + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + uVar74 = *(undefined8 *)(psVar40 + 0xc); + uVar73 = *(undefined8 *)(psVar40 + 8); + uVar76 = *(undefined8 *)(puVar69 + 0xc); + uVar75 = *(undefined8 *)(puVar69 + 8); + *(ulong *)(puVar69 + 0xc) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)(puVar69 + 8) = + CONCAT26((short)((ulong)uVar73 >> 0x30) + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + psVar40 = psVar1; + } while (psVar1 != psVar81); + } + if ((int)uVar12 < iVar52) { + uVar80 = 0; + lVar79 = (long)iVar31 * 0x10; + lVar10 = (long)iVar31 * 0x11; + puVar53 = puVar69 + 8; + pcVar57 = (char *)(lVar9 + lVar48 + local_9e0); + uVar47 = uVar3; + do { + uVar21 = uVar47 - 1; + uVar74 = *(undefined8 *)(puVar69 + 4); + uVar73 = *(undefined8 *)puVar69; + uVar32 = uVar54; + if ((int)uVar21 < (int)uVar54) { + uVar32 = uVar21; + } + psVar40 = __s_00 + (int)((uVar32 + iVar77) * 0x10); + uVar76 = *(undefined8 *)(psVar40 + 4); + uVar75 = *(undefined8 *)psVar40; + *(ulong *)(puVar69 + 4) = + CONCAT26((short)((ulong)uVar76 >> 0x30) + (short)((ulong)uVar74 >> 0x30), + CONCAT24((short)((ulong)uVar76 >> 0x20) + + (short)((ulong)uVar74 >> 0x20), + CONCAT22((short)((ulong)uVar76 >> 0x10) + + (short)((ulong)uVar74 >> 0x10), + (short)uVar76 + (short)uVar74))); + *(ulong *)puVar69 = + CONCAT26((short)((ulong)uVar75 >> 0x30) + (short)((ulong)uVar73 >> 0x30), + CONCAT24((short)((ulong)uVar75 >> 0x20) + + (short)((ulong)uVar73 >> 0x20), + CONCAT22((short)((ulong)uVar75 >> 0x10) + + (short)((ulong)uVar73 >> 0x10), + (short)uVar75 + (short)uVar73))); + uVar74 = *(undefined8 *)(psVar40 + 0xc); + uVar73 = *(undefined8 *)(psVar40 + 8); + uVar76 = *(undefined8 *)(puVar69 + 0xc); + uVar75 = *(undefined8 *)puVar53; + *(ulong *)(puVar69 + 0xc) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)puVar53 = + CONCAT26((short)((ulong)uVar73 >> 0x30) + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + if (iVar17 < (int)(uint)*puVar69) { + uVar32 = 0; + iVar31 = 0; + } + else { + uVar32 = (uint)*puVar69; + uVar63 = uVar32 + puVar69[1]; + if (iVar17 < (int)uVar63) { + iVar31 = 1; + } + else { + iVar31 = 2; + uVar55 = uVar63 + puVar69[2]; + uVar32 = uVar63; + if ((int)uVar55 <= iVar17) { + uVar32 = uVar55 + puVar69[3]; + if (iVar17 < (int)uVar32) { + iVar31 = 3; + uVar32 = uVar55; + } + else { + iVar31 = 4; + uVar63 = uVar32 + puVar69[4]; + if ((int)uVar63 <= iVar17) { + uVar32 = uVar63 + puVar69[5]; + if (iVar17 < (int)uVar32) { + iVar31 = 5; + uVar32 = uVar63; + } + else { + iVar31 = 6; + uVar63 = uVar32 + puVar69[6]; + if ((int)uVar63 <= iVar17) { + uVar32 = uVar63 + puVar69[7]; + if (iVar17 < (int)uVar32) { + iVar31 = 7; + uVar32 = uVar63; + } + else { + iVar31 = 8; + uVar63 = uVar32 + puVar69[8]; + if ((int)uVar63 <= iVar17) { + uVar32 = uVar63 + puVar69[9]; + if (iVar17 < (int)uVar32) { + iVar31 = 9; + uVar32 = uVar63; + } + else { + iVar31 = 10; + uVar63 = uVar32 + puVar69[10]; + if ((int)uVar63 <= iVar17) { + uVar32 = uVar63 + puVar69[0xb]; + if (iVar17 < (int)uVar32) { + iVar31 = 0xb; + uVar32 = uVar63; + } + else { + iVar31 = 0xc; + uVar63 = uVar32 + puVar69[0xc]; + if ((int)uVar63 <= iVar17) { + uVar32 = uVar63 + puVar69[0xd]; + if (iVar17 < (int)uVar32) { + iVar31 = 0xd; + uVar32 = uVar63; + } + else { + iVar31 = 0xe; + uVar63 = uVar32 + puVar69[0xe]; + if ((int)uVar63 <= iVar17) { + iVar31 = 0x10; + uVar32 = uVar63 + puVar69[0xf]; + if (iVar17 < (int)(uVar63 + puVar69[0xf])) { + iVar31 = 0xf; + uVar32 = uVar63; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + lVar38 = (long)iVar31; + uVar64 = auStack_900[lVar79 + lVar38]; + if ((int)uVar80 < (int)(uint)uVar64) { + if ((int)(uint)uVar64 <= (int)uVar21) { + lVar4 = lVar38 + lVar10 + 1; + puVar11 = local_880 + lVar4 * 0x10; + puVar39 = local_880 + lVar4 * 0x10 + 8; + iVar49 = uVar5 * (iVar78 + iVar31); + uVar63 = (uint)uVar64; + do { + uVar55 = uVar63 + 1 & 0xffff; + if ((int)(iVar18 + uVar63) < 1) { + iVar33 = 0; + } + else { + iVar33 = iVar18 + uVar63 + -1; + } + uVar76 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 4); + uVar75 = *(undefined8 *)puVar11; + psVar40 = __s_01 + (iVar33 + iVar49) * 0x10; + uVar74 = *(undefined8 *)(psVar40 + 4); + uVar73 = *(undefined8 *)psVar40; + *(ulong *)(local_880 + lVar4 * 0x10 + 4) = + CONCAT26((short)((ulong)uVar74 >> 0x30) - + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) - + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) - + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 - (short)uVar76))); + *(ulong *)puVar11 = + CONCAT26((short)((ulong)uVar73 >> 0x30) - + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) - + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) - + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 - (short)uVar75))); + uVar74 = *(undefined8 *)(psVar40 + 0xc); + uVar73 = *(undefined8 *)(psVar40 + 8); + uVar76 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 0xc); + uVar75 = *(undefined8 *)puVar39; + *(ulong *)(local_880 + lVar4 * 0x10 + 0xc) = + CONCAT26((short)((ulong)uVar74 >> 0x30) - + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) - + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) - + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 - (short)uVar76))); + *(ulong *)puVar39 = + CONCAT26((short)((ulong)uVar73 >> 0x30) - + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) - + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) - + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 - (short)uVar75))); + uVar59 = uVar54; + if ((int)uVar63 < (int)uVar5) { + uVar59 = (uint)auStack_900[lVar79 + lVar38]; + } + uVar76 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 4); + uVar75 = *(undefined8 *)puVar11; + psVar40 = __s_01 + (int)((uVar59 + iVar49) * 0x10); + uVar74 = *(undefined8 *)(psVar40 + 4); + uVar73 = *(undefined8 *)psVar40; + *(ulong *)(local_880 + lVar4 * 0x10 + 4) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)puVar11 = + CONCAT26((short)((ulong)uVar73 >> 0x30) + + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + uVar74 = *(undefined8 *)(psVar40 + 0xc); + uVar73 = *(undefined8 *)(psVar40 + 8); + uVar76 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 0xc); + uVar75 = *(undefined8 *)puVar39; + *(ulong *)(local_880 + lVar4 * 0x10 + 0xc) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)puVar39 = + CONCAT26((short)((ulong)uVar73 >> 0x30) + + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + auStack_900[lVar79 + lVar38] = (ushort)(uVar63 + 1); + uVar63 = uVar55; + } while ((int)uVar55 <= (int)uVar21); + } + } + else { + lVar4 = lVar38 + lVar10 + 1; + auStack_900[lVar79 + lVar38] = (ushort)uVar80; + puVar39 = local_880 + lVar4 * 0x10; + uVar63 = uVar5; + if ((int)uVar21 < (int)uVar5) { + uVar63 = uVar47; + } + puVar39[0] = 0; + puVar39[1] = 0; + puVar39[2] = 0; + puVar39[3] = 0; + puVar11 = local_880 + lVar4 * 0x10 + 4; + puVar11[0] = 0; + puVar11[1] = 0; + puVar11[2] = 0; + puVar11[3] = 0; + puVar11 = local_880 + lVar4 * 0x10 + 8; + puVar11[0] = 0; + puVar11[1] = 0; + puVar11[2] = 0; + puVar11[3] = 0; + puVar11 = local_880 + lVar4 * 0x10 + 0xc; + puVar11[0] = 0; + puVar11[1] = 0; + puVar11[2] = 0; + puVar11[3] = 0; + uVar55 = uVar80; + while (uVar55 = uVar55 & 0xffff, (int)uVar55 < (int)uVar63) { + uVar76 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 4); + uVar75 = *(undefined8 *)puVar39; + psVar40 = __s_01 + (int)((uVar55 + uVar5 * (iVar78 + iVar31)) * 0x10); + uVar74 = *(undefined8 *)(psVar40 + 4); + uVar73 = *(undefined8 *)psVar40; + uVar55 = uVar55 + 1; + *(ulong *)(local_880 + lVar4 * 0x10 + 4) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)puVar39 = + CONCAT26((short)((ulong)uVar73 >> 0x30) + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + uVar74 = *(undefined8 *)(psVar40 + 0xc); + uVar73 = *(undefined8 *)(psVar40 + 8); + uVar76 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 0xc); + uVar75 = *(undefined8 *)(local_880 + lVar4 * 0x10 + 8); + *(ulong *)(local_880 + lVar4 * 0x10 + 0xc) = + CONCAT26((short)((ulong)uVar74 >> 0x30) + (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) + + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) + + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 + (short)uVar76))); + *(ulong *)(local_880 + lVar4 * 0x10 + 8) = + CONCAT26((short)((ulong)uVar73 >> 0x30) + (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) + + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) + + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 + (short)uVar75))); + auStack_900[lVar79 + lVar38] = (ushort)uVar55; + } + if ((int)uVar55 <= (int)uVar21) { + sVar15 = (short)uVar47 - (short)uVar5; + uVar21 = uVar54 + (iVar78 + iVar31) * uVar5; + uVar37 = -(ulong)((uVar21 & 0xfffffff) >> 0x1b) & 0xfffffffe00000000 | + (ulong)(uVar21 * 0x10) << 1; + local_880[lVar4 * 0x10] = + local_880[lVar4 * 0x10] + sVar15 * *(short *)((long)__s_01 + uVar37); + local_880[lVar4 * 0x10 + 1] = + local_880[lVar4 * 0x10 + 1] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 2); + local_880[lVar4 * 0x10 + 2] = + local_880[lVar4 * 0x10 + 2] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 4); + local_880[lVar4 * 0x10 + 3] = + local_880[lVar4 * 0x10 + 3] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 6); + uVar64 = local_880[lVar4 * 0x10 + 10]; + local_880[lVar4 * 0x10 + 4] = + local_880[lVar4 * 0x10 + 4] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 8); + local_880[lVar4 * 0x10 + 5] = + local_880[lVar4 * 0x10 + 5] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 10); + local_880[lVar4 * 0x10 + 6] = + local_880[lVar4 * 0x10 + 6] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0xc); + local_880[lVar4 * 0x10 + 7] = + local_880[lVar4 * 0x10 + 7] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0xe); + local_880[lVar4 * 0x10 + 8] = + local_880[lVar4 * 0x10 + 8] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x10); + uVar62 = local_880[lVar4 * 0x10 + 0xb]; + uVar60 = local_880[lVar4 * 0x10 + 0xd]; + local_880[lVar4 * 0x10 + 9] = + local_880[lVar4 * 0x10 + 9] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x12); + auStack_900[lVar79 + lVar38] = (ushort)uVar80 + sVar25; + local_880[lVar4 * 0x10 + 10] = + uVar64 + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x14); + local_880[lVar4 * 0x10 + 0xb] = + uVar62 + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x16); + local_880[lVar4 * 0x10 + 0xc] = + local_880[lVar4 * 0x10 + 0xc] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x18); + local_880[lVar4 * 0x10 + 0xd] = + uVar60 + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x1a); + local_880[lVar4 * 0x10 + 0xe] = + local_880[lVar4 * 0x10 + 0xe] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x1c); + local_880[lVar4 * 0x10 + 0xf] = + local_880[lVar4 * 0x10 + 0xf] + + sVar15 * *(short *)((long)__s_01 + uVar37 + 0x1e); + } + } + uVar21 = uVar80; + if ((int)uVar80 < 0) { + uVar21 = 0; + } + uVar74 = *(undefined8 *)(puVar69 + 4); + uVar73 = *(undefined8 *)puVar69; + lVar38 = lVar38 + lVar10 + 1; + psVar40 = __s_00 + (int)((uVar21 + iVar77) * 0x10); + uVar76 = *(undefined8 *)(psVar40 + 4); + uVar75 = *(undefined8 *)psVar40; + *(ulong *)(puVar69 + 4) = + CONCAT26((short)((ulong)uVar76 >> 0x30) - (short)((ulong)uVar74 >> 0x30), + CONCAT24((short)((ulong)uVar76 >> 0x20) - + (short)((ulong)uVar74 >> 0x20), + CONCAT22((short)((ulong)uVar76 >> 0x10) - + (short)((ulong)uVar74 >> 0x10), + (short)uVar76 - (short)uVar74))); + *(ulong *)puVar69 = + CONCAT26((short)((ulong)uVar75 >> 0x30) - (short)((ulong)uVar73 >> 0x30), + CONCAT24((short)((ulong)uVar75 >> 0x20) - + (short)((ulong)uVar73 >> 0x20), + CONCAT22((short)((ulong)uVar75 >> 0x10) - + (short)((ulong)uVar73 >> 0x10), + (short)uVar75 - (short)uVar73))); + uVar74 = *(undefined8 *)(psVar40 + 0xc); + uVar73 = *(undefined8 *)(psVar40 + 8); + uVar76 = *(undefined8 *)(puVar69 + 0xc); + uVar75 = *(undefined8 *)puVar53; + *(ulong *)(puVar69 + 0xc) = + CONCAT26((short)((ulong)uVar74 >> 0x30) - (short)((ulong)uVar76 >> 0x30), + CONCAT24((short)((ulong)uVar74 >> 0x20) - + (short)((ulong)uVar76 >> 0x20), + CONCAT22((short)((ulong)uVar74 >> 0x10) - + (short)((ulong)uVar76 >> 0x10), + (short)uVar74 - (short)uVar76))); + *(ulong *)puVar53 = + CONCAT26((short)((ulong)uVar73 >> 0x30) - (short)((ulong)uVar75 >> 0x30), + CONCAT24((short)((ulong)uVar73 >> 0x20) - + (short)((ulong)uVar75 >> 0x20), + CONCAT22((short)((ulong)uVar73 >> 0x10) - + (short)((ulong)uVar75 >> 0x10), + (short)uVar73 - (short)uVar75))); + iVar49 = uVar32 + local_880[lVar38 * 0x10]; + cVar26 = (char)iVar31; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 1]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\x01'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 2]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\x02'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 3]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\x03'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 4]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\x04'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 5]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\x05'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 6]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\x06'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 7]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\a'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 8]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\b'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 9]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\t'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 10]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\n'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 0xb]; + if (iVar17 < iVar49) { + cVar29 = '\v'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 0xc]; + if (iVar17 < iVar49) { + *pcVar57 = cVar26 * '\x10' + '\f'; + goto LAB_00205c10; + } + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 0xd]; + if (iVar17 < iVar49) { + cVar29 = '\r'; + } + else { + iVar49 = iVar49 + (uint)local_880[lVar38 * 0x10 + 0xe]; + if (iVar17 < iVar49) { + cVar29 = '\x0e'; + } + else { + cVar29 = '\x0f'; + if ((int)(iVar49 + (uint)local_880[lVar38 * 0x10 + 0xf + ]) <= iVar17) + goto LAB_00205c10; + } + } + } + *pcVar57 = cVar29 + cVar26 * '\x10'; + } + } + } + } + } + } + } + } + } + } + } +LAB_00205c10: + uVar47 = uVar47 + 1; + uVar80 = uVar80 + 1; + pcVar57 = pcVar57 + lVar43; + } while (uVar47 != uVar42); + } + } + puVar69 = puVar69 + 0x110; + lVar48 = lVar48 + 1; + iVar77 = iVar77 + uVar5; + iVar78 = iVar78 + 0x10; + psVar82 = (short *)((long)psVar82 + uVar61); + psVar81 = (short *)((long)psVar81 + uVar61); + psVar83 = psVar83 + (int)(uVar5 * 0x100); + } while ((int)lVar48 < (int)uVar2); + local_9e0 = local_9e0 + lVar35; + local_998 = local_998 + 1; + } while (local_998 != uVar12 + uVar13); + } + uVar42 = param_2[3]; + local_9d0 = local_9d0 + uVar19; + local_9c8 = local_9c8 + (int)(uVar19 * uVar2); + } while (local_9d0 < (int)uVar42); + } + operator_delete(__s); + if (local_9f0 != (void *)0x0) { + operator_delete(local_9f0); + } + return; +} + + +================================================================== + +### FUNC 00205fd0 (2704 bytes) name=FUN_00205fd0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00205fd0(long param_1,long *param_2,ulong *param_3,int param_4,int param_5,uint param_6) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + long *plVar4; + void *__dest; + uint uVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + int iVar19; + undefined1 auVar20 [16]; + char cVar21; + uint uVar22; + int iVar23; + int iVar24; + int *piVar25; + ulong uVar26; + long lVar27; + undefined1 (*pauVar28) [16]; + long lVar29; + char *pcVar30; + int *piVar31; + undefined8 *puVar32; + long lVar33; + undefined2 uVar34; + long lVar35; + ulong uVar36; + int *piVar37; + ulong *puVar38; + long lVar39; + ulong uVar40; + int *piVar41; + long lVar42; + int *piVar43; + int *piVar44; + size_t sVar45; + ulong uVar46; + void *__src; + size_t __n; + float fVar47; + int iVar48; + int iVar56; + int iVar57; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + int iVar59; + undefined1 auVar54 [16]; + undefined8 uVar58; + undefined1 auVar55 [16]; + undefined1 uVar60; + undefined1 uVar61; + undefined1 uVar62; + undefined1 uVar63; + undefined1 uVar64; + undefined1 uVar65; + undefined1 auVar66 [16]; + undefined1 auVar67 [16]; + ulong in_d4; + undefined8 uVar68; + double dVar69; + undefined1 uStack_78; + undefined7 uStack_77; + int *local_50; + undefined8 local_10; + undefined8 local_8; + + piVar43 = *(int **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar45 = (long)__src - (long)piVar43; + uVar36 = (long)sVar45 >> 2; + dVar69 = *(double *)(param_1 + 0x10); + local_50 = piVar43; + if ((uint)uVar36 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar23 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar23 + -1) { + local_10 = 0; + local_8 = 0; + pcVar30 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar21 = s_sumCount____ksize_1_0045d530[0x12]; + uVar68 = s_sumCount____ksize_1_0045d530._8_8_; + uVar58 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar30 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar30[0x12] = cVar21; + *(undefined8 *)pcVar30 = uVar58; + *(undefined8 *)(pcVar30 + 8) = uVar68; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x1ba); + cv::String::deallocate((String *)&local_10); + iVar23 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar23 + -1; + goto LAB_002062e8; + } + sVar45 = -(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2; + } + else { + uVar46 = (ulong)(int)param_6; + if (uVar36 < uVar46) { + uVar40 = uVar46 - uVar36; + if (uVar40 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 2) < uVar40) { + if (0x3fffffffffffffff - uVar36 < uVar40) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar26 = uVar40; + if (uVar40 < uVar36) { + uVar26 = uVar36; + } + uVar26 = uVar26 + uVar36; + if ((uVar26 < uVar36) || (0x3fffffffffffffff < uVar26)) { + uVar26 = 0xfffffffffffffffc; +LAB_00206a10: + local_50 = operator_new(uVar26); + piVar43 = *(int **)(param_1 + 0x20); + __n = (long)__src - (long)piVar43; + uVar36 = (long)__n >> 2; + } + else { + if (uVar26 != 0) { + uVar26 = uVar26 * 4; + goto LAB_00206a10; + } + uVar26 = 0; + local_50 = (int *)0x0; + __n = sVar45; + } + memset((void *)((long)local_50 + sVar45),0,uVar40 * 4); + if (uVar36 != 0) { + memmove(local_50,piVar43,__n); + } + sVar45 = *(long *)(param_1 + 0x28) - (long)__src; + __dest = (void *)((long)local_50 + uVar40 * 4 + __n); + if ((long)sVar45 >> 2 != 0) { + memmove(__dest,__src,sVar45); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(int **)(param_1 + 0x20) = local_50; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar45; + *(ulong *)(param_1 + 0x30) = (long)local_50 + uVar26; + } + else { + memset(__src,0,uVar40 * 4); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar40 * 4); + } + } + } + else if (uVar46 < uVar36) { + *(int **)(param_1 + 0x28) = piVar43 + uVar46; + } + sVar45 = uVar46 << 2; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(local_50,0,sVar45); + iVar23 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) < iVar23 + -1) { + uVar9 = param_6 - 4 >> 2; + uVar7 = (uVar9 + 1) * 4; + if ((int)(param_6 - 3) < 1) { + uVar7 = 0; + } + uVar1 = uVar7 + 1; + lVar39 = (long)(int)uVar7; + uVar10 = param_6 - uVar7; + in_d4 = (ulong)uVar1; + uVar2 = uVar7 + 2; + piVar43 = local_50 + lVar39; + uVar5 = -((uint)((ulong)piVar43 >> 2) & 3) & 3; + uVar36 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar6 = uVar10; + if (uVar5 < uVar10) { + uVar6 = uVar5; + } + uVar46 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + piVar41 = (int *)((long)local_50 + uVar36); + uVar5 = ((uVar10 - uVar6) - 4 >> 2) + 1; + piVar3 = (int *)((long)local_50 + uVar46); + iVar8 = uVar5 * 4; + do { + piVar37 = (int *)*param_2; + piVar25 = local_50; + piVar31 = piVar37; + if (0 < (int)(param_6 - 3)) { + do { + uVar68 = *(undefined8 *)(piVar25 + 2); + uVar58 = *(undefined8 *)piVar25; + iVar23 = *piVar31; + iVar16 = piVar31[1]; + iVar13 = piVar31[3]; + piVar44 = piVar25 + 4; + piVar25[2] = piVar31[2] + (int)uVar68; + piVar25[3] = iVar13 + (int)((ulong)uVar68 >> 0x20); + *piVar25 = iVar23 + (int)uVar58; + piVar25[1] = iVar16 + (int)((ulong)uVar58 >> 0x20); + piVar25 = piVar44; + piVar31 = piVar31 + 4; + } while (piVar44 != local_50 + ((ulong)uVar9 + 1) * 4); + } + if ((int)uVar7 < (int)param_6) { + if ((piVar43 < piVar37 + lVar39 + 4 && piVar37 + lVar39 < local_50 + lVar39 + 4) || + (uVar10 < 8)) { + lVar27 = 0; + do { + *(int *)((long)piVar43 + lVar27) = + *(int *)((long)piVar43 + lVar27) + *(int *)((long)(piVar37 + lVar39) + lVar27); + lVar27 = lVar27 + 4; + } while (lVar27 != ((ulong)((param_6 - 1) - uVar7) + 1) * 4); + } + else { + if (uVar6 == 0) { + uVar40 = (ulong)uVar7; + } + else { + local_50[lVar39] = local_50[lVar39] + piVar37[lVar39]; + if (uVar6 == 1) { + uVar40 = (ulong)uVar1; + } + else { + *piVar41 = *piVar41 + *(int *)((long)piVar37 + uVar36); + if (uVar6 == 3) { + uVar40 = (ulong)(uVar7 + 3); + *piVar3 = *piVar3 + *(int *)((long)piVar37 + uVar46); + } + else { + uVar40 = (ulong)uVar2; + } + } + } + if (2 < (uVar10 - 1) - uVar6) { + uVar22 = 0; + piVar25 = local_50 + (ulong)uVar6 + lVar39; + piVar31 = piVar37 + (ulong)uVar6 + lVar39; + piVar44 = local_50 + lVar39 + (ulong)uVar6; + do { + uVar68 = *(undefined8 *)piVar31; + uVar22 = uVar22 + 1; + uVar58 = *(undefined8 *)piVar44; + iVar23 = (int)((ulong)uVar58 >> 0x20) + (int)((ulong)uVar68 >> 0x20); + iVar16 = (int)((ulong)*(undefined8 *)(piVar44 + 2) >> 0x20) + + (int)((ulong)*(undefined8 *)(piVar31 + 2) >> 0x20); + *(ulong *)(piVar25 + 2) = + CONCAT17((char)((uint)iVar16 >> 0x18), + CONCAT16((char)((uint)iVar16 >> 0x10), + CONCAT15((char)((uint)iVar16 >> 8), + CONCAT14((char)iVar16, + (int)*(undefined8 *)(piVar44 + 2) + + (int)*(undefined8 *)(piVar31 + 2))))); + *(ulong *)piVar25 = + CONCAT17((char)((uint)iVar23 >> 0x18), + CONCAT16((char)((uint)iVar23 >> 0x10), + CONCAT15((char)((uint)iVar23 >> 8), + CONCAT14((char)iVar23,(int)uVar58 + (int)uVar68)))); + piVar25 = piVar25 + 4; + piVar31 = piVar31 + 4; + piVar44 = piVar44 + 4; + } while (uVar22 < uVar5); + uVar40 = (ulong)(uint)((int)uVar40 + iVar8); + if (iVar8 == uVar10 - uVar6) goto LAB_002062b8; + } + uVar26 = -(uVar40 >> 0x1f) & 0xfffffffc00000000 | uVar40 << 2; + *(int *)((long)local_50 + uVar26) = + *(int *)((long)local_50 + uVar26) + *(int *)((long)piVar37 + uVar26); + if ((int)uVar40 + 1 < (int)param_6) { + lVar27 = uVar26 + 4; + *(int *)((long)local_50 + lVar27) = + *(int *)((long)local_50 + lVar27) + *(int *)((long)piVar37 + lVar27); + if ((int)uVar40 + 2 < (int)param_6) { + lVar27 = uVar26 + 8; + *(int *)((long)local_50 + lVar27) = + *(int *)((long)local_50 + lVar27) + *(int *)((long)piVar37 + lVar27); + } + } + } + } +LAB_002062b8: + param_2 = param_2 + 1; + iVar16 = *(int *)(param_1 + 0x18) + 1; + iVar23 = *(int *)(param_1 + 8); + *(int *)(param_1 + 0x18) = iVar16; + } while (iVar16 < iVar23 + -1); + } +LAB_002062e8: + if (param_5 != 0) { + iVar16 = param_6 - 7; + uVar7 = param_6 - 8 >> 3; + iVar8 = (uVar7 + 1) * 8; + plVar4 = param_2 + (ulong)(param_5 - 1) + 1; + if (iVar16 < 1) { + iVar8 = 0; + } + lVar39 = (long)iVar8; + while( true ) { + lVar35 = *param_2; + lVar27 = param_2[1 - iVar23]; + if (dVar69 == 1.0) { + if (0 < iVar16) { + piVar43 = (int *)(lVar35 + 0x10); + pauVar28 = (undefined1 (*) [16])(local_50 + 4); + puVar32 = (undefined8 *)(lVar27 + 0x10); + puVar38 = param_3; + do { + piVar37 = piVar43 + -4; + auVar66 = *pauVar28; + piVar41 = piVar43 + -2; + uVar58 = *(undefined8 *)pauVar28[-1]; + iVar19 = *piVar43; + piVar3 = piVar43 + 1; + piVar25 = piVar43 + 2; + piVar31 = piVar43 + 3; + piVar43 = piVar43 + 8; + iVar23 = (int)uVar58 + (int)*(undefined8 *)piVar37; + iVar13 = (int)((ulong)uVar58 >> 0x20) + (int)((ulong)*(undefined8 *)piVar37 >> 0x20); + iVar14 = (int)*(undefined8 *)((long)pauVar28[-1] + 8) + (int)*(undefined8 *)piVar41; + iVar17 = (int)((ulong)*(undefined8 *)((long)pauVar28[-1] + 8) >> 0x20) + + (int)((ulong)*(undefined8 *)piVar41 >> 0x20); + auVar49._0_4_ = iVar19 + auVar66._0_4_; + auVar49._4_4_ = *piVar3 + auVar66._4_4_; + auVar49._8_4_ = *piVar25 + auVar66._8_4_; + auVar49._12_4_ = *piVar31 + auVar66._12_4_; + auVar11[4] = (char)iVar13; + auVar11._0_4_ = iVar23; + auVar11[5] = (char)((uint)iVar13 >> 8); + auVar11[6] = (char)((uint)iVar13 >> 0x10); + auVar11[7] = (char)((uint)iVar13 >> 0x18); + auVar11[8] = (char)iVar14; + auVar11[9] = (char)((uint)iVar14 >> 8); + auVar11[10] = (char)((uint)iVar14 >> 0x10); + auVar11[0xb] = (char)((uint)iVar14 >> 0x18); + auVar11[0xc] = (char)iVar17; + auVar11[0xd] = (char)((uint)iVar17 >> 8); + auVar11[0xe] = (char)((uint)iVar17 >> 0x10); + auVar11[0xf] = (char)((uint)iVar17 >> 0x18); + in_d4 = NEON_sqxtn(in_d4,auVar11,4); + uVar36 = NEON_sqxtn(auVar66._0_8_,auVar49,4); + puVar38[1] = uVar36; + *puVar38 = in_d4; + uVar58 = puVar32[-2]; + iVar13 = iVar13 - (int)((ulong)uVar58 >> 0x20); + iVar17 = iVar17 - (int)((ulong)puVar32[-1] >> 0x20); + *(ulong *)((long)pauVar28[-1] + 8) = + CONCAT17((char)((uint)iVar17 >> 0x18), + CONCAT16((char)((uint)iVar17 >> 0x10), + CONCAT15((char)((uint)iVar17 >> 8), + CONCAT14((char)iVar17,iVar14 - (int)puVar32[-1])))); + *(ulong *)pauVar28[-1] = + CONCAT17((char)((uint)iVar13 >> 0x18), + CONCAT16((char)((uint)iVar13 >> 0x10), + CONCAT15((char)((uint)iVar13 >> 8), + CONCAT14((char)iVar13,iVar23 - (int)uVar58)))); + uVar68 = puVar32[1]; + uVar58 = *puVar32; + puVar32 = puVar32 + 4; + *(int *)((long)*pauVar28 + 8) = auVar49._8_4_ - (int)uVar68; + *(int *)((long)*pauVar28 + 0xc) = auVar49._12_4_ - (int)((ulong)uVar68 >> 0x20); + *(int *)*pauVar28 = auVar49._0_4_ - (int)uVar58; + *(int *)((long)*pauVar28 + 4) = auVar49._4_4_ - (int)((ulong)uVar58 >> 0x20); + pauVar28 = pauVar28 + 2; + puVar38 = puVar38 + 2; + } while (pauVar28 != (undefined1 (*) [16])(local_50 + (ulong)uVar7 * 8 + 0xc)); + } + if (iVar8 < (int)param_6) { + lVar33 = 0; + do { + iVar23 = local_50[lVar39 + lVar33] + *(int *)(lVar35 + lVar39 * 4 + lVar33 * 4); + uVar34 = (undefined2)iVar23; + if ((0xffff < iVar23 + 0x8000U) && (uVar34 = 0x7fff, iVar23 < 1)) { + uVar34 = 0x8000; + } + iVar13 = *(int *)(lVar27 + lVar39 * 4 + lVar33 * 4); + *(undefined2 *)((long)param_3 + lVar33 * 2 + lVar39 * 2) = uVar34; + local_50[lVar39 + lVar33] = iVar23 - iVar13; + lVar33 = lVar33 + 1; + } while (lVar33 != (ulong)((param_6 - 1) - iVar8) + 1); + } + } + else { + fVar47 = (float)dVar69; + if (iVar16 < 1) { + iVar23 = 0; + } + else { + puVar32 = (undefined8 *)(lVar35 + 0x10); + iVar23 = 0; + piVar43 = local_50 + 4; + piVar41 = (int *)(lVar27 + 0x10); + puVar38 = param_3; + do { + iVar13 = piVar43[-4] + (int)puVar32[-2]; + iVar14 = piVar43[-3] + (int)((ulong)puVar32[-2] >> 0x20); + uVar60 = (undefined1)((uint)iVar14 >> 8); + uVar61 = (undefined1)((uint)iVar14 >> 0x10); + uVar62 = (undefined1)((uint)iVar14 >> 0x18); + iVar17 = piVar43[-2] + (int)puVar32[-1]; + iVar19 = piVar43[-1] + (int)((ulong)puVar32[-1] >> 0x20); + uVar63 = (undefined1)((uint)iVar19 >> 8); + uVar64 = (undefined1)((uint)iVar19 >> 0x10); + uVar65 = (undefined1)((uint)iVar19 >> 0x18); + iVar48 = (int)*puVar32 + *piVar43; + iVar56 = (int)((ulong)*puVar32 >> 0x20) + piVar43[1]; + iVar57 = (int)puVar32[1] + piVar43[2]; + iVar59 = (int)((ulong)puVar32[1] >> 0x20) + piVar43[3]; + auVar66[4] = (char)iVar14; + auVar66._0_4_ = iVar13; + auVar66[5] = uVar60; + auVar66[6] = uVar61; + auVar66[7] = uVar62; + auVar66[8] = (char)iVar17; + auVar66[9] = (char)((uint)iVar17 >> 8); + auVar66[10] = (char)((uint)iVar17 >> 0x10); + auVar66[0xb] = (char)((uint)iVar17 >> 0x18); + auVar66[0xc] = (char)iVar19; + auVar66[0xd] = uVar63; + auVar66[0xe] = uVar64; + auVar66[0xf] = uVar65; + auVar66 = NEON_scvtf(auVar66,4); + auVar67._0_8_ = CONCAT44(fVar47 * auVar66._4_4_,fVar47 * auVar66._0_4_); + auVar67._8_4_ = fVar47 * auVar66._8_4_; + auVar67._12_4_ = fVar47 * auVar66._12_4_; + if ((DAT_00531ed0 & 1) == 0) { + uStack_78 = SUB41(auVar67._8_4_,0); + uStack_77 = auVar67._9_7_; + iVar24 = __cxa_guard_acquire(&DAT_00531ed0); + auVar67[8] = uStack_78; + auVar67._9_7_ = uStack_77; + if (iVar24 != 0) { + auVar54._8_4_ = 0x80000000; + auVar54._0_8_ = 0x8000000080000000; + auVar54._12_4_ = 0x80000000; + uRam0000000000531eb8 = auVar54._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar24 = __cxa_guard_acquire(&DAT_00531ec8), iVar24 != 0)) { + auVar50._8_4_ = 0x3f000000; + auVar50._0_8_ = 0x3f0000003f000000; + auVar50._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar50._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + auVar20._4_4_ = iVar56; + auVar20._0_4_ = iVar48; + auVar20._8_4_ = iVar57; + auVar20._12_4_ = iVar59; + auVar66 = NEON_scvtf(auVar20,4); + auVar51._0_8_ = CONCAT44(fVar47 * auVar66._4_4_,fVar47 * auVar66._0_4_); + auVar51._8_4_ = fVar47 * auVar66._8_4_; + auVar51._12_4_ = fVar47 * auVar66._12_4_; + iVar24 = (int)(auVar67._4_4_ + + (float)CONCAT13(auVar67[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)(_DAT_00531ea0 >> 0x38), + CONCAT12(auVar67[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) + | (byte)(_DAT_00531ea0 >> 0x30), + CONCAT11(auVar67[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)(_DAT_00531ea0 >> 0x28), + auVar67[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)(_DAT_00531ea0 >> 0x20))))); + iVar15 = (int)(auVar67._8_4_ + + (float)CONCAT13(auVar67[0xb] & (byte)((ulong)uRam0000000000531eb8 >> 0x18) + | (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar67[10] & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar67[9] & + (byte)((ulong)uRam0000000000531eb8 >> 8) + | (byte)((ulong)uRam0000000000531ea8 >> + 8), + auVar67[8] & (byte)uRam0000000000531eb8 + | (byte)uRam0000000000531ea8)))); + iVar18 = (int)(auVar67._12_4_ + + (float)CONCAT13(auVar67[0xf] & (byte)((ulong)uRam0000000000531eb8 >> 0x38) + | (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12(auVar67[0xe] & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11(auVar67[0xd] & + (byte)((ulong)uRam0000000000531eb8 >> + 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + auVar67[0xc] & + (byte)((ulong)uRam0000000000531eb8 >> + 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x20))))); + uStack_78 = (undefined1)iVar15; + auVar12[4] = (char)iVar24; + auVar12._0_4_ = + (int)(auVar67._0_4_ + + (float)CONCAT13(auVar67[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)(_DAT_00531ea0 >> 0x18), + CONCAT12(auVar67[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)(_DAT_00531ea0 >> 0x10), + CONCAT11(auVar67[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)(_DAT_00531ea0 >> 8), + auVar67[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + auVar12[5] = (char)((uint)iVar24 >> 8); + auVar12[6] = (char)((uint)iVar24 >> 0x10); + auVar12[7] = (char)((uint)iVar24 >> 0x18); + if ((DAT_00531ed0 & 1) == 0) { + uVar58 = auVar51._8_8_; + iVar24 = __cxa_guard_acquire(&DAT_00531ed0); + auVar51._8_8_ = uVar58; + if (iVar24 != 0) { + auVar55._8_4_ = 0x80000000; + auVar55._0_8_ = 0x8000000080000000; + auVar55._12_4_ = 0x80000000; + uRam0000000000531eb8 = auVar55._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + uVar58 = auVar67._0_8_; + if ((DAT_00531ec8 & 1) == 0) { + iVar24 = __cxa_guard_acquire(&DAT_00531ec8); + uVar58 = auVar67._0_8_; + if (iVar24 != 0) { + auVar52._8_4_ = 0x3f000000; + auVar52._0_8_ = 0x3f0000003f000000; + auVar52._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar52._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + uVar58 = auVar67._0_8_; + } + } + in_d4 = _DAT_00531ea0; + iVar23 = iVar23 + 8; + auVar12[8] = uStack_78; + puVar32 = puVar32 + 4; + auVar12[9] = (char)((uint)iVar15 >> 8); + auVar12[10] = (char)((uint)iVar15 >> 0x10); + auVar12[0xb] = (char)((uint)iVar15 >> 0x18); + auVar12[0xc] = (char)iVar18; + auVar12[0xd] = (char)((uint)iVar18 >> 8); + auVar12[0xe] = (char)((uint)iVar18 >> 0x10); + auVar12[0xf] = (char)((uint)iVar18 >> 0x18); + uVar46 = NEON_sqxtn(uVar58,auVar12,4); + auVar53._0_8_ = + CONCAT44((int)(auVar51._4_4_ + + (float)CONCAT13(auVar51[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)(_DAT_00531ea0 >> 0x38), + CONCAT12(auVar51[6] & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)(_DAT_00531ea0 >> 0x30), + CONCAT11(auVar51[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28 + ) | (byte)(_DAT_00531ea0 >> + 0x28), + auVar51[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20 + ) | (byte)(_DAT_00531ea0 >> + 0x20))))), + (int)(auVar51._0_4_ + + (float)CONCAT13(auVar51[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)(_DAT_00531ea0 >> 0x18), + CONCAT12(auVar51[2] & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)(_DAT_00531ea0 >> 0x10), + CONCAT11(auVar51[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)(_DAT_00531ea0 >> 8), + auVar51[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0))))); + auVar53._8_4_ = + (int)(auVar51._8_4_ + + (float)CONCAT13(auVar51[0xb] & (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar51[10] & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar51[9] & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar51[8] & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + auVar53._12_4_ = + (int)(auVar51._12_4_ + + (float)CONCAT13(auVar51[0xf] & (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12(auVar51[0xe] & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11(auVar51[0xd] & + (byte)((ulong)uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> 0x28 + ), + auVar51[0xc] & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) + | (byte)((ulong)uRam0000000000531ea8 >> 0x20 + ))))); + uVar36 = NEON_sqxtn(auVar53._0_8_,auVar53,4); + puVar38[1] = uVar36; + *puVar38 = uVar46; + iVar24 = piVar41[-4]; + iVar15 = piVar41[-3]; + iVar18 = piVar41[-1]; + piVar43[-2] = iVar17 - piVar41[-2]; + piVar43[-1] = (int)(CONCAT17(uVar65,CONCAT16(uVar64,CONCAT15(uVar63,CONCAT14((char) + iVar19,iVar17)))) >> 0x20) - iVar18; + piVar43[-4] = iVar13 - iVar24; + piVar43[-3] = (int)(CONCAT17(uVar62,CONCAT16(uVar61,CONCAT15(uVar60,CONCAT14((char) + iVar14,iVar13)))) >> 0x20) - iVar15; + iVar13 = *piVar41; + iVar14 = piVar41[1]; + piVar3 = piVar41 + 2; + iVar17 = piVar41[3]; + piVar41 = piVar41 + 8; + piVar43[2] = iVar57 - *piVar3; + piVar43[3] = iVar59 - iVar17; + *piVar43 = iVar48 - iVar13; + piVar43[1] = iVar56 - iVar14; + piVar43 = piVar43 + 8; + puVar38 = puVar38 + 2; + } while (iVar23 < iVar16); + } + if (iVar23 < (int)param_6) { + lVar42 = (long)iVar23; + lVar33 = 0; + do { + iVar13 = local_50[lVar42 + lVar33] + *(int *)(lVar35 + lVar42 * 4 + lVar33 * 4); + lVar29 = lrint(dVar69 * (double)iVar13); + uVar34 = (undefined2)lVar29; + if ((0xffff < (int)lVar29 + 0x8000U) && (uVar34 = 0x7fff, (int)lVar29 < 1)) { + uVar34 = 0x8000; + } + iVar14 = *(int *)(lVar27 + lVar42 * 4 + lVar33 * 4); + *(undefined2 *)((long)param_3 + lVar33 * 2 + lVar42 * 2) = uVar34; + local_50[lVar42 + lVar33] = iVar13 - iVar14; + lVar33 = lVar33 + 1; + } while (lVar33 != (ulong)((param_6 - 1) - iVar23) + 1); + } + } + param_3 = (ulong *)((long)param_3 + (long)param_4); + param_2 = param_2 + 1; + if (param_2 == plVar4) break; + iVar23 = *(int *)(param_1 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 00206a74 (3408 bytes) name=FUN_00206a74 + +void FUN_00206a74(long param_1,ulong *param_2,double *param_3,int param_4,int param_5,uint param_6) + +{ + long lVar1; + uint uVar2; + uint uVar3; + double *pdVar4; + long lVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + int iVar10; + ulong uVar11; + undefined8 uVar12; + undefined8 uVar13; + char cVar14; + long lVar15; + double *pdVar16; + char *pcVar17; + void *__dest; + double *pdVar18; + ulong uVar19; + uint uVar20; + ulong *puVar21; + long lVar22; + double *pdVar23; + uint uVar24; + ulong uVar25; + double *pdVar26; + void *__src; + long lVar27; + size_t __n; + double *pdVar28; + int iVar29; + long lVar30; + double *pdVar31; + int iVar32; + double *pdVar33; + double *pdVar34; + double *pdVar35; + double *__src_00; + double *pdVar36; + ulong uVar37; + double *pdVar38; + double *pdVar39; + size_t sVar40; + long lVar41; + double dVar42; + double dVar43; + int iVar44; + double dVar45; + double dVar46; + double dVar47; + double dVar48; + int iVar49; + int iVar50; + undefined8 local_10; + undefined8 local_8; + + __src_00 = *(double **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar40 = (long)__src - (long)__src_00; + uVar25 = (long)sVar40 >> 3; + dVar48 = *(double *)(param_1 + 0x10); + if ((uint)uVar25 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar32 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar32 + -1) { + local_10 = 0; + local_8 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar14 = s_sumCount____ksize_1_0045d530[0x12]; + uVar13 = s_sumCount____ksize_1_0045d530._8_8_; + uVar12 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar17 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar17[0x12] = cVar14; + *(undefined8 *)pcVar17 = uVar12; + *(undefined8 *)(pcVar17 + 8) = uVar13; + cv::error(-0xd7,(String *)&local_10, + "void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int) [with ST = double; T = double; uchar = unsigned char]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x99); + cv::String::deallocate((String *)&local_10); + iVar32 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar32 + -1; + goto LAB_00206d08; + } + sVar40 = -(ulong)(param_6 >> 0x1f) & 0xfffffff800000000 | (ulong)param_6 << 3; + } + else { + uVar37 = (ulong)(int)param_6; + if (uVar25 < uVar37) { + uVar11 = uVar37 - uVar25; + if (uVar11 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 3) < uVar11) { + if (0x1fffffffffffffff - uVar25 < uVar11) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar19 = uVar11; + if (uVar11 < uVar25) { + uVar19 = uVar25; + } + uVar19 = uVar19 + uVar25; + if ((uVar19 < uVar25) || (0x1fffffffffffffff < uVar19)) { + uVar19 = 0xfffffffffffffff8; +LAB_00207774: + pdVar18 = operator_new(uVar19); + __src_00 = *(double **)(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar25 = (long)__n >> 3; + } + else { + if (uVar19 != 0) { + uVar19 = uVar19 * 8; + goto LAB_00207774; + } + pdVar18 = (double *)0x0; + uVar19 = 0; + __n = sVar40; + } + memset((void *)((long)pdVar18 + sVar40),0,uVar11 * 8); + if (uVar25 != 0) { + memmove(pdVar18,__src_00,__n); + } + __dest = (void *)((long)pdVar18 + uVar11 * 8 + __n); + sVar40 = *(long *)(param_1 + 0x28) - (long)__src; + if ((long)sVar40 >> 3 != 0) { + __dest = memmove(__dest,__src,sVar40); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(double **)(param_1 + 0x20) = pdVar18; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar40; + *(ulong *)(param_1 + 0x30) = (long)pdVar18 + uVar19; + __src_00 = pdVar18; + } + else { + memset(__src,0,uVar11 * 8); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar11 * 8); + } + } + } + else if (uVar37 < uVar25) { + *(double **)(param_1 + 0x28) = __src_00 + uVar37; + } + sVar40 = uVar37 << 3; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar40); + iVar50 = *(int *)(param_1 + 0x18); + iVar32 = *(int *)(param_1 + 8); + if (iVar50 < iVar32 + -1) { + iVar29 = iVar50 + 1; + uVar8 = param_6 - 2 >> 1; + iVar49 = param_6 - 1; + uVar2 = uVar8 + 1; + uVar7 = uVar2 * 2; + if (iVar49 < 1) { + uVar7 = 0; + } + uVar9 = param_6 - uVar7; + lVar15 = (long)(int)uVar7; + pdVar18 = __src_00 + lVar15; + uVar3 = (uint)((ulong)pdVar18 >> 3) & 1; + uVar6 = uVar9; + if (uVar3 < uVar9) { + uVar6 = uVar3; + } + iVar10 = uVar9 - uVar6; + uVar3 = (iVar10 - 2U >> 1) + 1; + iVar44 = uVar3 * 2; + puVar21 = param_2; + do { + pdVar16 = (double *)*puVar21; + if (0 < iVar49) { + pdVar23 = __src_00; + pdVar26 = pdVar16; + if ((__src_00 < pdVar16 + 4 && pdVar16 < __src_00 + 4) || (uVar2 < 4)) { + do { + dVar42 = *pdVar26; + pdVar28 = pdVar23 + 2; + pdVar23[1] = pdVar23[1] + pdVar26[1]; + *pdVar23 = *pdVar23 + dVar42; + pdVar23 = pdVar28; + pdVar26 = pdVar26 + 2; + } while (pdVar28 != __src_00 + ((ulong)uVar8 + 1) * 2); + } + else { + uVar20 = 0; + do { + uVar20 = uVar20 + 1; + dVar42 = *pdVar26; + pdVar23[1] = pdVar23[1] + pdVar26[1]; + *pdVar23 = *pdVar23 + dVar42; + pdVar23 = pdVar23 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar20 < uVar2); + } + } + if ((int)uVar7 < (int)param_6) { + if ((pdVar18 < pdVar16 + lVar15 + 2 && pdVar16 + lVar15 < __src_00 + lVar15 + 2) || + (uVar9 < 8)) { + lVar22 = 0; + do { + *(double *)((long)pdVar18 + lVar22) = + *(double *)((long)pdVar18 + lVar22) + + *(double *)((long)(pdVar16 + lVar15) + lVar22); + lVar22 = lVar22 + 8; + } while (lVar22 != ((ulong)(iVar49 - uVar7) + 1) * 8); + } + else { + uVar20 = uVar7; + if (uVar6 != 0) { + __src_00[lVar15] = __src_00[lVar15] + pdVar16[lVar15]; + uVar20 = uVar7 + 1; + } + if (iVar10 != 1) { + uVar24 = 0; + pdVar23 = __src_00 + lVar15 + (ulong)uVar6; + pdVar26 = __src_00 + (ulong)uVar6 + lVar15; + pdVar28 = pdVar16 + (ulong)uVar6 + lVar15; + do { + dVar43 = *pdVar28; + uVar24 = uVar24 + 1; + dVar42 = *pdVar23; + pdVar26[1] = pdVar23[1] + pdVar28[1]; + *pdVar26 = dVar42 + dVar43; + pdVar23 = pdVar23 + 2; + pdVar26 = pdVar26 + 2; + pdVar28 = pdVar28 + 2; + } while (uVar24 < uVar3); + uVar20 = uVar20 + iVar44; + if (iVar10 == iVar44) goto LAB_00206ce0; + } + uVar25 = -(ulong)(uVar20 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar20 << 3; + *(double *)((long)__src_00 + uVar25) = + *(double *)((long)__src_00 + uVar25) + *(double *)((long)pdVar16 + uVar25); + } + } +LAB_00206ce0: + *(int *)(param_1 + 0x18) = iVar29; + iVar29 = iVar29 + 1; + puVar21 = puVar21 + 1; + } while (iVar29 != iVar32); + param_2 = param_2 + (ulong)(uint)((iVar32 + -2) - iVar50) + 1; + } +LAB_00206d08: + if (param_5 != 0) { + iVar50 = param_6 - 1; + uVar8 = param_6 - 2 >> 1; + lVar15 = (long)param_4; + pdVar18 = param_3 + 1; + puVar21 = param_2 + 1; + pdVar16 = param_3 + 4; + pdVar23 = __src_00 + 4; + uVar2 = uVar8 + 1; + uVar7 = uVar2 * 2; + if (iVar50 < 1) { + uVar7 = 0; + } + uVar9 = param_6 - uVar7; + lVar27 = (long)(int)uVar7; + lVar22 = lVar27 + 2; + lVar30 = ((ulong)(iVar50 - uVar7) + 1) * 8; + pdVar26 = __src_00 + lVar27; + uVar3 = (uint)((ulong)pdVar26 >> 3) & 1; + pdVar28 = __src_00 + lVar27; + pdVar4 = __src_00 + lVar22; + uVar6 = uVar9; + if (uVar3 < uVar9) { + uVar6 = uVar3; + } + lVar1 = lVar22 * 8 + -0x10 + (ulong)uVar6 * 8; + iVar29 = uVar9 - uVar6; + uVar3 = (iVar29 - 2U >> 1) + 1; + iVar49 = uVar3 * 2; + do { + pdVar34 = (double *)puVar21[-1]; + pdVar33 = (double *)puVar21[-(long)iVar32]; + if (dVar48 == 1.0) { + if (0 < iVar50) { + if (((((uVar2 < 9 || __src_00 < pdVar16 && param_3 < pdVar23) || + __src_00 < pdVar34 + 4 && pdVar34 < pdVar23) || + __src_00 < pdVar33 + 4 && pdVar33 < pdVar23) || + param_3 < pdVar34 + 4 && pdVar34 < pdVar16) || + (param_3 < pdVar33 + 4 && pdVar33 < pdVar16)) { + pdVar31 = __src_00; + pdVar35 = pdVar18; + pdVar36 = pdVar33 + 1; + pdVar38 = pdVar34 + 1; + do { + dVar45 = pdVar38[-1]; + dVar42 = *pdVar31; + pdVar39 = pdVar38 + 2; + dVar47 = *pdVar38; + dVar43 = pdVar31[1]; + pdVar35[-1] = dVar42 + dVar45; + *pdVar35 = dVar43 + dVar47; + dVar46 = pdVar36[-1]; + pdVar31[1] = (dVar43 + dVar47) - *pdVar36; + *pdVar31 = (dVar42 + dVar45) - dVar46; + pdVar31 = pdVar31 + 2; + pdVar35 = pdVar35 + 2; + pdVar36 = pdVar36 + 2; + pdVar38 = pdVar39; + } while (pdVar39 != pdVar34 + (ulong)uVar8 * 2 + 3); + } + else { + uVar20 = 0; + pdVar31 = param_3; + pdVar35 = pdVar33; + pdVar36 = pdVar34; + pdVar38 = __src_00; + do { + dVar47 = pdVar36[1]; + dVar45 = *pdVar36; + uVar20 = uVar20 + 1; + dVar43 = pdVar38[1]; + dVar42 = *pdVar38; + pdVar31[1] = dVar43 + dVar47; + *pdVar31 = dVar42 + dVar45; + dVar46 = *pdVar35; + pdVar38[1] = (dVar43 + dVar47) - pdVar35[1]; + *pdVar38 = (dVar42 + dVar45) - dVar46; + pdVar31 = pdVar31 + 2; + pdVar35 = pdVar35 + 2; + pdVar36 = pdVar36 + 2; + pdVar38 = pdVar38 + 2; + } while (uVar20 < uVar2); + } + } + if ((int)uVar7 < (int)param_6) { + pdVar31 = param_3 + lVar22; + pdVar35 = param_3 + lVar27; + pdVar36 = pdVar34 + lVar27; + pdVar38 = pdVar33 + lVar27; + if (((((uVar9 < 7 || pdVar26 < pdVar31 && pdVar35 < pdVar4) || + pdVar26 < pdVar34 + lVar22 && pdVar36 < pdVar4) || + pdVar26 < pdVar33 + lVar22 && pdVar38 < pdVar4) || + pdVar35 < pdVar34 + lVar22 && pdVar36 < pdVar31) || + (pdVar35 < pdVar33 + lVar22 && pdVar38 < pdVar31)) { + lVar41 = 0; + do { + dVar42 = *(double *)((long)pdVar26 + lVar41) + *(double *)((long)pdVar36 + lVar41); + *(double *)((long)pdVar35 + lVar41) = dVar42; + *(double *)((long)pdVar26 + lVar41) = dVar42 - *(double *)((long)pdVar38 + lVar41); + lVar41 = lVar41 + 8; + } while (lVar41 != lVar30); + } + else { + uVar20 = uVar7; + if (uVar6 != 0) { + dVar43 = pdVar34[lVar27]; + dVar42 = *pdVar28; + param_3[lVar27] = dVar42 + dVar43; + *pdVar28 = (dVar42 + dVar43) - pdVar33[lVar27]; + uVar20 = uVar7 + 1; + if (uVar9 == 1) goto LAB_002070e4; + } + if (iVar29 != 1) { + lVar41 = 0; + uVar24 = 0; + do { + lVar5 = lVar41 + lVar1; + pdVar31 = (double *)((long)__src_00 + lVar41 + lVar1); + uVar24 = uVar24 + 1; + lVar41 = lVar41 + 0x10; + dVar42 = *(double *)((long)pdVar34 + lVar5) + *pdVar31; + dVar43 = ((double *)((long)pdVar34 + lVar5))[1] + pdVar31[1]; + ((double *)((long)param_3 + lVar5))[1] = dVar43; + *(double *)((long)param_3 + lVar5) = dVar42; + dVar45 = *(double *)((long)pdVar33 + lVar5); + pdVar31[1] = dVar43 - ((double *)((long)pdVar33 + lVar5))[1]; + *pdVar31 = dVar42 - dVar45; + } while (uVar24 < uVar3); + uVar20 = uVar20 + iVar49; + if (iVar49 == iVar29) goto LAB_002070e4; + } + uVar25 = -(ulong)(uVar20 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar20 << 3; + dVar42 = *(double *)((long)__src_00 + uVar25) + *(double *)((long)pdVar34 + uVar25); + *(double *)((long)param_3 + uVar25) = dVar42; + *(double *)((long)__src_00 + uVar25) = dVar42 - *(double *)((long)pdVar33 + uVar25); + } + } + } + else { + if (0 < iVar50) { + if (((((uVar2 < 7 || __src_00 < pdVar16 && param_3 < pdVar23) || + __src_00 < pdVar34 + 4 && pdVar34 < pdVar23) || + __src_00 < pdVar33 + 4 && pdVar33 < pdVar23) || + param_3 < pdVar34 + 4 && pdVar34 < pdVar16) || + (param_3 < pdVar33 + 4 && pdVar33 < pdVar16)) { + pdVar31 = __src_00; + pdVar35 = pdVar18; + pdVar36 = pdVar33 + 1; + pdVar38 = pdVar34 + 1; + do { + dVar45 = pdVar38[-1]; + dVar42 = *pdVar31; + pdVar39 = pdVar38 + 2; + dVar47 = *pdVar38; + dVar43 = pdVar31[1]; + pdVar35[-1] = dVar48 * (dVar42 + dVar45); + *pdVar35 = dVar48 * (dVar43 + dVar47); + dVar46 = pdVar36[-1]; + pdVar31[1] = (dVar43 + dVar47) - *pdVar36; + *pdVar31 = (dVar42 + dVar45) - dVar46; + pdVar31 = pdVar31 + 2; + pdVar35 = pdVar35 + 2; + pdVar36 = pdVar36 + 2; + pdVar38 = pdVar39; + } while (pdVar39 != pdVar34 + (ulong)uVar8 * 2 + 3); + } + else { + uVar20 = 0; + pdVar31 = param_3; + pdVar35 = pdVar33; + pdVar36 = pdVar34; + pdVar38 = __src_00; + do { + dVar47 = pdVar36[1]; + dVar45 = *pdVar36; + uVar20 = uVar20 + 1; + dVar43 = pdVar38[1]; + dVar42 = *pdVar38; + pdVar31[1] = (dVar43 + dVar47) * dVar48; + *pdVar31 = (dVar42 + dVar45) * dVar48; + dVar46 = *pdVar35; + pdVar38[1] = (dVar43 + dVar47) - pdVar35[1]; + *pdVar38 = (dVar42 + dVar45) - dVar46; + pdVar31 = pdVar31 + 2; + pdVar35 = pdVar35 + 2; + pdVar36 = pdVar36 + 2; + pdVar38 = pdVar38 + 2; + } while (uVar20 < uVar2); + } + } + if ((int)uVar7 < (int)param_6) { + pdVar31 = param_3 + lVar22; + pdVar35 = param_3 + lVar27; + pdVar36 = pdVar34 + lVar27; + pdVar38 = pdVar33 + lVar27; + if (((((uVar9 < 7 || pdVar26 < pdVar31 && pdVar35 < pdVar4) || + pdVar26 < pdVar34 + lVar22 && pdVar36 < pdVar4) || + pdVar26 < pdVar33 + lVar22 && pdVar38 < pdVar4) || + pdVar35 < pdVar34 + lVar22 && pdVar36 < pdVar31) || + (pdVar35 < pdVar33 + lVar22 && pdVar38 < pdVar31)) { + lVar41 = 0; + do { + dVar42 = *(double *)((long)pdVar26 + lVar41) + *(double *)((long)pdVar36 + lVar41); + *(double *)((long)pdVar35 + lVar41) = dVar48 * dVar42; + *(double *)((long)pdVar26 + lVar41) = dVar42 - *(double *)((long)pdVar38 + lVar41); + lVar41 = lVar41 + 8; + } while (lVar41 != lVar30); + } + else { + uVar20 = uVar7; + if (uVar6 != 0) { + dVar43 = pdVar34[lVar27]; + dVar42 = *pdVar28; + param_3[lVar27] = dVar48 * (dVar42 + dVar43); + *pdVar28 = (dVar42 + dVar43) - pdVar33[lVar27]; + uVar20 = uVar7 + 1; + if (uVar9 == 1) goto LAB_002070e4; + } + if (iVar29 != 1) { + lVar41 = 0; + uVar24 = 0; + do { + lVar5 = lVar41 + lVar1; + pdVar31 = (double *)((long)__src_00 + lVar41 + lVar1); + uVar24 = uVar24 + 1; + lVar41 = lVar41 + 0x10; + dVar42 = *(double *)((long)pdVar34 + lVar5) + *pdVar31; + dVar43 = ((double *)((long)pdVar34 + lVar5))[1] + pdVar31[1]; + ((double *)((long)param_3 + lVar5))[1] = dVar48 * dVar43; + *(double *)((long)param_3 + lVar5) = dVar48 * dVar42; + dVar45 = *(double *)((long)pdVar33 + lVar5); + pdVar31[1] = dVar43 - ((double *)((long)pdVar33 + lVar5))[1]; + *pdVar31 = dVar42 - dVar45; + } while (uVar24 < uVar3); + uVar20 = uVar20 + iVar49; + if (iVar49 == iVar29) goto LAB_002070e4; + } + uVar25 = -(ulong)(uVar20 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar20 << 3; + dVar42 = *(double *)((long)__src_00 + uVar25) + *(double *)((long)pdVar34 + uVar25); + *(double *)((long)param_3 + uVar25) = dVar48 * dVar42; + *(double *)((long)__src_00 + uVar25) = dVar42 - *(double *)((long)pdVar33 + uVar25); + } + } + } +LAB_002070e4: + puVar21 = puVar21 + 1; + param_3 = (double *)((long)param_3 + lVar15); + pdVar16 = (double *)((long)pdVar16 + lVar15); + pdVar18 = (double *)((long)pdVar18 + lVar15); + } while (puVar21 != param_2 + (ulong)(param_5 - 1) + 2); + } + return; +} + + +================================================================== + +### FUNC 002077d8 (3972 bytes) name=FUN_002077d8 + +void FUN_002077d8(long param_1,undefined8 *param_2,double *param_3,int param_4,int param_5, + uint param_6) + +{ + long lVar1; + uint uVar2; + uint uVar3; + long lVar4; + uint uVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + undefined8 uVar15; + undefined8 uVar16; + char cVar17; + undefined8 *puVar18; + char *pcVar19; + void *__dest; + double *pdVar20; + uint uVar21; + long lVar22; + long lVar23; + double *pdVar24; + double *pdVar25; + uint uVar26; + double *pdVar27; + double *pdVar28; + ulong uVar29; + double *pdVar30; + undefined8 *puVar31; + void *__src; + double *pdVar32; + size_t __n; + int iVar33; + int iVar34; + double *pdVar35; + double *pdVar36; + long lVar37; + long lVar38; + double *pdVar39; + uint uVar40; + long lVar41; + double *pdVar42; + double *pdVar43; + double *__src_00; + ulong uVar44; + double *pdVar45; + size_t sVar46; + int iVar47; + double dVar48; + double dVar49; + double dVar50; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + double dVar55; + double dVar56; + ulong uVar57; + int iVar58; + long lVar59; + long lVar60; + int iVar61; + undefined8 local_10; + undefined8 local_8; + + __src_00 = *(double **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar46 = (long)__src - (long)__src_00; + uVar29 = (long)sVar46 >> 3; + dVar56 = *(double *)(param_1 + 0x10); + if ((uint)uVar29 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar34 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar34 + -1) { + local_10 = 0; + local_8 = 0; + pcVar19 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar17 = s_sumCount____ksize_1_0045d530[0x12]; + uVar16 = s_sumCount____ksize_1_0045d530._8_8_; + uVar15 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar19 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar19[0x12] = cVar17; + *(undefined8 *)pcVar19 = uVar15; + *(undefined8 *)(pcVar19 + 8) = uVar16; + cv::error(-0xd7,(String *)&local_10, + "void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int) [with ST = double; T = float; uchar = unsigned char]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x99); + cv::String::deallocate((String *)&local_10); + iVar34 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar34 + -1; + goto LAB_00207a88; + } + sVar46 = -(ulong)(param_6 >> 0x1f) & 0xfffffff800000000 | (ulong)param_6 << 3; + } + else { + uVar44 = (ulong)(int)param_6; + if (uVar29 < uVar44) { + uVar10 = uVar44 - uVar29; + if (uVar10 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 3) < uVar10) { + if (0x1fffffffffffffff - uVar29 < uVar10) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar57 = uVar10; + if (uVar10 < uVar29) { + uVar57 = uVar29; + } + uVar57 = uVar57 + uVar29; + if ((uVar57 < uVar29) || (0x1fffffffffffffff < uVar57)) { + uVar57 = 0xfffffffffffffff8; +LAB_0020870c: + pdVar20 = operator_new(uVar57); + __src_00 = *(double **)(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar29 = (long)__n >> 3; + } + else { + if (uVar57 != 0) { + uVar57 = NEON_shl(uVar57,3); + goto LAB_0020870c; + } + pdVar20 = (double *)0x0; + uVar57 = 0; + __n = sVar46; + } + memset((void *)((long)pdVar20 + sVar46),0,uVar10 * 8); + if (uVar29 != 0) { + memmove(pdVar20,__src_00,__n); + } + __dest = (void *)((long)pdVar20 + uVar10 * 8 + __n); + sVar46 = *(long *)(param_1 + 0x28) - (long)__src; + if ((long)sVar46 >> 3 != 0) { + __dest = memmove(__dest,__src,sVar46); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(double **)(param_1 + 0x20) = pdVar20; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar46; + *(ulong *)(param_1 + 0x30) = (long)pdVar20 + uVar57; + __src_00 = pdVar20; + } + else { + memset(__src,0,uVar10 * 8); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar10 * 8); + } + } + } + else if (uVar44 < uVar29) { + *(double **)(param_1 + 0x28) = __src_00 + uVar44; + } + sVar46 = uVar44 << 3; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar46); + iVar58 = *(int *)(param_1 + 0x18); + iVar34 = *(int *)(param_1 + 8); + if (iVar58 < iVar34 + -1) { + uVar6 = param_6 - 2 >> 1; + iVar7 = param_6 - 1; + iVar33 = iVar58 + 1; + uVar2 = uVar6 + 1; + uVar5 = uVar2 * 2; + if (iVar7 < 1) { + uVar5 = 0; + } + uVar9 = param_6 - uVar5; + lVar22 = (long)(int)uVar5; + pdVar20 = __src_00 + lVar22; + uVar3 = (uint)((ulong)pdVar20 >> 3) & 1; + uVar8 = uVar9; + if (uVar3 < uVar9) { + uVar8 = uVar3; + } + iVar61 = uVar9 - uVar8; + uVar3 = (iVar61 - 2U >> 1) + 1; + iVar47 = uVar3 * 2; + puVar31 = param_2; + do { + pdVar32 = (double *)*puVar31; + if (0 < iVar7) { + pdVar25 = __src_00; + pdVar28 = pdVar32; + if ((__src_00 < pdVar32 + 4 && pdVar32 < __src_00 + 4) || (uVar2 < 4)) { + do { + dVar11 = *pdVar28; + pdVar39 = pdVar25 + 2; + pdVar25[1] = pdVar25[1] + pdVar28[1]; + *pdVar25 = *pdVar25 + dVar11; + pdVar25 = pdVar39; + pdVar28 = pdVar28 + 2; + } while (pdVar39 != __src_00 + ((ulong)uVar6 + 1) * 2); + } + else { + uVar21 = 0; + do { + uVar21 = uVar21 + 1; + dVar11 = *pdVar28; + pdVar25[1] = pdVar25[1] + pdVar28[1]; + *pdVar25 = *pdVar25 + dVar11; + pdVar25 = pdVar25 + 2; + pdVar28 = pdVar28 + 2; + } while (uVar21 < uVar2); + } + } + if ((int)uVar5 < (int)param_6) { + if ((pdVar20 < pdVar32 + lVar22 + 2 && pdVar32 + lVar22 < __src_00 + lVar22 + 2) || + (uVar9 < 8)) { + lVar23 = 0; + do { + *(double *)((long)pdVar20 + lVar23) = + *(double *)((long)pdVar20 + lVar23) + + *(double *)((long)(pdVar32 + lVar22) + lVar23); + lVar23 = lVar23 + 8; + } while (lVar23 != ((ulong)(iVar7 - uVar5) + 1) * 8); + } + else { + uVar21 = uVar5; + if (uVar8 != 0) { + __src_00[lVar22] = __src_00[lVar22] + pdVar32[lVar22]; + uVar21 = uVar5 + 1; + } + if (iVar61 != 1) { + uVar26 = 0; + pdVar25 = __src_00 + lVar22 + (ulong)uVar8; + pdVar28 = __src_00 + (ulong)uVar8 + lVar22; + pdVar39 = pdVar32 + (ulong)uVar8 + lVar22; + do { + dVar12 = *pdVar39; + uVar26 = uVar26 + 1; + dVar11 = *pdVar25; + pdVar28[1] = pdVar25[1] + pdVar39[1]; + *pdVar28 = dVar11 + dVar12; + pdVar25 = pdVar25 + 2; + pdVar28 = pdVar28 + 2; + pdVar39 = pdVar39 + 2; + } while (uVar26 < uVar3); + uVar21 = uVar21 + iVar47; + if (iVar61 == iVar47) goto LAB_00207a58; + } + uVar29 = -(ulong)(uVar21 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar21 << 3; + *(double *)((long)__src_00 + uVar29) = + *(double *)((long)__src_00 + uVar29) + *(double *)((long)pdVar32 + uVar29); + } + } +LAB_00207a58: + *(int *)(param_1 + 0x18) = iVar33; + iVar33 = iVar33 + 1; + puVar31 = puVar31 + 1; + } while (iVar33 != iVar34); + param_2 = param_2 + (ulong)(uint)((iVar34 + -2) - iVar58) + 1; + } +LAB_00207a88: + if (param_5 != 0) { + uVar8 = param_6 - 2; + uVar6 = uVar8 >> 1; + iVar7 = param_6 - 1; + uVar2 = (uVar6 - 1 >> 1) + 1; + iVar58 = uVar2 * 4; + puVar31 = param_2 + 1; + pdVar20 = __src_00 + 8; + uVar5 = uVar6 + 1; + iVar33 = uVar5 * 2; + if (uVar8 < 2) { + iVar58 = 0; + } + if (iVar7 < 1) { + iVar33 = 0; + } + lVar37 = (long)iVar58; + lVar38 = lVar37 * 4; + pdVar32 = __src_00 + lVar37; + lVar23 = (long)iVar33; + uVar3 = param_6 - iVar33; + lVar22 = lVar23 * 4; + lVar59 = NEON_shl((ulong)uVar5,3); + pdVar25 = __src_00 + lVar23; + uVar21 = (uint)((ulong)pdVar25 >> 3) & 1; + pdVar28 = __src_00 + lVar37 + 1; + uVar9 = uVar3; + if (uVar21 < uVar3) { + uVar9 = uVar21; + } + lVar4 = (ulong)(uint)(iVar7 - iVar33) + 1; + iVar58 = uVar3 - uVar9; + lVar60 = NEON_shl(lVar23 + (ulong)uVar3,2); + uVar26 = (uVar3 - 1) - uVar9; + lVar1 = lVar22 + (ulong)uVar9 * 4; + uVar21 = (iVar58 - 4U >> 2) + 1; + iVar61 = uVar21 * 4; + pdVar39 = __src_00 + lVar23 + 4; + do { + pdVar24 = (double *)puVar31[-1]; + pdVar27 = (double *)puVar31[-(long)iVar34]; + if (dVar56 == 1.0) { + if (0 < iVar7) { + if (((uVar5 < 4 || + __src_00 < (double *)((long)param_3 + lVar59) && + param_3 < __src_00 + (ulong)uVar5 * 2) || __src_00 < pdVar24 + 8 && pdVar24 < pdVar20 + ) || (__src_00 < pdVar27 + 8 && pdVar27 < pdVar20)) { + pdVar30 = __src_00; + pdVar36 = pdVar27 + 1; + pdVar42 = param_3; + pdVar35 = pdVar24 + 1; + do { + dVar14 = pdVar35[-1]; + pdVar45 = pdVar35 + 2; + dVar13 = *pdVar35; + dVar11 = *pdVar30; + dVar12 = pdVar30[1]; + dVar54 = *pdVar36; + dVar51 = pdVar36[-1]; + *(float *)pdVar42 = (float)(dVar11 + dVar14); + *(float *)((long)pdVar42 + 4) = (float)(dVar12 + dVar13); + *pdVar30 = (dVar11 + dVar14) - dVar51; + pdVar30[1] = (dVar12 + dVar13) - dVar54; + pdVar30 = pdVar30 + 2; + pdVar36 = pdVar36 + 2; + pdVar42 = pdVar42 + 1; + pdVar35 = pdVar45; + } while (pdVar45 != pdVar24 + (ulong)uVar6 * 2 + 3); + } + else { + if (1 < uVar8) { + pdVar30 = __src_00 + 2; + pdVar36 = pdVar24 + 2; + uVar40 = 0; + pdVar35 = pdVar27; + pdVar43 = param_3; + pdVar42 = pdVar24; + pdVar45 = __src_00; + do { + dVar54 = pdVar45[1]; + dVar12 = *pdVar45; + dVar51 = pdVar42[1]; + dVar11 = *pdVar42; + uVar40 = uVar40 + 1; + dVar48 = pdVar30[1]; + dVar13 = *pdVar30; + dVar52 = pdVar36[1]; + dVar50 = *pdVar36; + pdVar42 = pdVar42 + 4; + dVar49 = pdVar35[3]; + dVar14 = pdVar35[2]; + pdVar36 = pdVar36 + 4; + dVar55 = pdVar35[1]; + dVar53 = *pdVar35; + pdVar35 = pdVar35 + 4; + pdVar43[1] = (double)CONCAT44((float)(dVar48 + dVar52),(float)(dVar13 + dVar50)); + *pdVar43 = (double)CONCAT44((float)(dVar54 + dVar51),(float)(dVar12 + dVar11)); + pdVar45[1] = (dVar54 + dVar51) - dVar55; + *pdVar45 = (dVar12 + dVar11) - dVar53; + pdVar45 = pdVar45 + 4; + pdVar30[1] = (dVar48 + dVar52) - dVar49; + *pdVar30 = (dVar13 + dVar50) - dVar14; + pdVar30 = pdVar30 + 4; + pdVar43 = pdVar43 + 2; + } while (uVar40 < uVar2); + if (uVar5 == uVar2 * 2) goto LAB_00207d9c; + } + dVar14 = pdVar24[lVar37]; + dVar12 = *pdVar32; + dVar13 = pdVar24[lVar37 + 1]; + dVar11 = *pdVar28; + dVar54 = pdVar27[lVar37]; + dVar51 = pdVar27[lVar37 + 1]; + *(float *)((long)param_3 + lVar38) = (float)(dVar12 + dVar14); + *(float *)((long)param_3 + lVar38 + 4) = (float)(dVar11 + dVar13); + *pdVar32 = (dVar12 + dVar14) - dVar54; + *pdVar28 = (dVar11 + dVar13) - dVar51; + } + } +LAB_00207d9c: + if (iVar33 < (int)param_6) { + pdVar30 = (double *)((long)param_3 + lVar22); + if (((uVar3 < 7 || + pdVar30 < __src_00 + lVar23 + (ulong)uVar3 && + pdVar25 < (double *)((long)param_3 + lVar60)) || + pdVar25 < pdVar24 + lVar23 + 4 && pdVar24 + lVar23 < pdVar39) || + (pdVar25 < pdVar27 + lVar23 + 4 && pdVar27 + lVar23 < pdVar39)) { + lVar41 = 0; + do { + dVar12 = (pdVar27 + lVar23)[lVar41]; + dVar11 = pdVar25[lVar41] + (pdVar24 + lVar23)[lVar41]; + *(float *)((long)pdVar30 + lVar41 * 4) = (float)dVar11; + pdVar25[lVar41] = dVar11 - dVar12; + lVar41 = lVar41 + 1; + } while (lVar4 != lVar41); + } + else { + iVar47 = iVar33; + if (uVar9 != 0) { + dVar13 = pdVar24[lVar23]; + dVar11 = *pdVar25; + dVar12 = pdVar27[lVar23]; + *(float *)pdVar30 = (float)(dVar11 + dVar13); + *pdVar25 = (dVar11 + dVar13) - dVar12; + iVar47 = iVar33 + 1; + if (uVar3 == 1) goto LAB_00207fac; + } + if (2 < uVar26) { + uVar40 = 0; + pdVar30 = pdVar27 + (ulong)uVar9 + lVar23; + puVar18 = (undefined8 *)((long)param_3 + lVar1); + pdVar36 = __src_00 + lVar23 + (ulong)uVar9; + pdVar42 = __src_00 + (ulong)uVar9 + lVar23; + pdVar35 = pdVar24 + (ulong)uVar9 + lVar23; + do { + dVar55 = pdVar30[1]; + dVar53 = *pdVar30; + dVar49 = pdVar35[1]; + dVar14 = *pdVar35; + dVar48 = pdVar36[1]; + dVar13 = *pdVar36; + uVar40 = uVar40 + 1; + dVar52 = pdVar30[3]; + dVar50 = pdVar30[2]; + pdVar30 = pdVar30 + 4; + dVar54 = pdVar35[3]; + dVar12 = pdVar35[2]; + dVar51 = pdVar36[3]; + dVar11 = pdVar36[2]; + puVar18[1] = CONCAT44((float)(dVar54 + dVar51),(float)(dVar12 + dVar11)); + *puVar18 = CONCAT44((float)(dVar49 + dVar48),(float)(dVar14 + dVar13)); + pdVar42[1] = (dVar49 + dVar48) - dVar55; + *pdVar42 = (dVar14 + dVar13) - dVar53; + pdVar42[3] = (dVar54 + dVar51) - dVar52; + pdVar42[2] = (dVar12 + dVar11) - dVar50; + puVar18 = puVar18 + 2; + pdVar36 = pdVar36 + 4; + pdVar42 = pdVar42 + 4; + pdVar35 = pdVar35 + 4; + } while (uVar40 < uVar21); + iVar47 = iVar47 + iVar61; + if (iVar61 == iVar58) goto LAB_00207fac; + } + lVar41 = (long)iVar47; + dVar13 = pdVar24[lVar41]; + dVar11 = __src_00[lVar41]; + dVar12 = pdVar27[lVar41]; + *(float *)((long)param_3 + lVar41 * 4) = (float)(dVar11 + dVar13); + __src_00[lVar41] = (dVar11 + dVar13) - dVar12; + if (iVar47 + 1 < (int)param_6) { + lVar41 = (long)(iVar47 + 1); + dVar13 = pdVar24[lVar41]; + dVar11 = __src_00[lVar41]; + dVar12 = pdVar27[lVar41]; + *(float *)((long)param_3 + lVar41 * 4) = (float)(dVar11 + dVar13); + __src_00[lVar41] = (dVar11 + dVar13) - dVar12; + if (iVar47 + 2 < (int)param_6) { + lVar41 = (long)(iVar47 + 2); + dVar12 = pdVar24[lVar41]; + dVar11 = __src_00[lVar41]; + dVar13 = pdVar27[lVar41]; + *(float *)((long)param_3 + lVar41 * 4) = (float)(dVar11 + dVar12); + __src_00[lVar41] = (dVar11 + dVar12) - dVar13; + } + } + } + } + } + else { + if (0 < iVar7) { + if (((uVar5 < 4 || + __src_00 < (double *)((long)param_3 + lVar59) && + param_3 < __src_00 + (ulong)uVar5 * 2) || __src_00 < pdVar24 + 8 && pdVar24 < pdVar20 + ) || (__src_00 < pdVar27 + 8 && pdVar27 < pdVar20)) { + pdVar30 = __src_00; + pdVar36 = pdVar27 + 1; + pdVar42 = param_3; + pdVar35 = pdVar24 + 1; + do { + dVar14 = pdVar35[-1]; + pdVar45 = pdVar35 + 2; + dVar13 = *pdVar35; + dVar12 = *pdVar30; + dVar11 = pdVar30[1]; + dVar54 = *pdVar36; + dVar51 = pdVar36[-1]; + *(float *)pdVar42 = (float)(dVar56 * (dVar12 + dVar14)); + *(float *)((long)pdVar42 + 4) = (float)(dVar56 * (dVar11 + dVar13)); + *pdVar30 = (dVar12 + dVar14) - dVar51; + pdVar30[1] = (dVar11 + dVar13) - dVar54; + pdVar30 = pdVar30 + 2; + pdVar36 = pdVar36 + 2; + pdVar42 = pdVar42 + 1; + pdVar35 = pdVar45; + } while (pdVar45 != pdVar24 + (ulong)uVar6 * 2 + 3); + } + else { + if (1 < uVar8) { + pdVar30 = __src_00 + 2; + pdVar36 = pdVar24 + 2; + uVar40 = 0; + pdVar35 = pdVar27; + pdVar43 = param_3; + pdVar42 = pdVar24; + pdVar45 = __src_00; + do { + dVar49 = pdVar45[1]; + dVar14 = *pdVar45; + dVar48 = pdVar42[1]; + dVar13 = *pdVar42; + uVar40 = uVar40 + 1; + dVar54 = pdVar30[1]; + dVar12 = *pdVar30; + dVar51 = pdVar36[1]; + dVar11 = *pdVar36; + pdVar42 = pdVar42 + 4; + dVar55 = pdVar35[1]; + dVar53 = *pdVar35; + pdVar36 = pdVar36 + 4; + dVar52 = pdVar35[3]; + dVar50 = pdVar35[2]; + pdVar35 = pdVar35 + 4; + pdVar43[1] = (double)CONCAT44((float)((dVar54 + dVar51) * dVar56), + (float)((dVar12 + dVar11) * dVar56)); + *pdVar43 = (double)CONCAT44((float)((dVar49 + dVar48) * dVar56), + (float)((dVar14 + dVar13) * dVar56)); + pdVar45[1] = (dVar49 + dVar48) - dVar55; + *pdVar45 = (dVar14 + dVar13) - dVar53; + pdVar45 = pdVar45 + 4; + pdVar30[1] = (dVar54 + dVar51) - dVar52; + *pdVar30 = (dVar12 + dVar11) - dVar50; + pdVar30 = pdVar30 + 4; + pdVar43 = pdVar43 + 2; + } while (uVar40 < uVar2); + if (uVar5 == uVar2 * 2) goto LAB_0020814c; + } + dVar14 = pdVar24[lVar37]; + dVar12 = *pdVar32; + dVar13 = pdVar24[lVar37 + 1]; + dVar11 = *pdVar28; + dVar54 = pdVar27[lVar37]; + dVar51 = pdVar27[lVar37 + 1]; + *(float *)((long)param_3 + lVar38) = (float)(dVar56 * (dVar12 + dVar14)); + *(float *)((long)param_3 + lVar38 + 4) = (float)(dVar56 * (dVar11 + dVar13)); + *pdVar32 = (dVar12 + dVar14) - dVar54; + *pdVar28 = (dVar11 + dVar13) - dVar51; + } + } +LAB_0020814c: + if (iVar33 < (int)param_6) { + pdVar30 = (double *)((long)param_3 + lVar22); + if (((uVar3 < 7 || + pdVar30 < __src_00 + lVar23 + (ulong)uVar3 && + pdVar25 < (double *)((long)param_3 + lVar60)) || + pdVar25 < pdVar24 + lVar23 + 4 && pdVar24 + lVar23 < pdVar39) || + (pdVar25 < pdVar27 + lVar23 + 4 && pdVar27 + lVar23 < pdVar39)) { + lVar41 = 0; + do { + dVar12 = (pdVar27 + lVar23)[lVar41]; + dVar11 = pdVar25[lVar41] + (pdVar24 + lVar23)[lVar41]; + *(float *)((long)pdVar30 + lVar41 * 4) = (float)(dVar56 * dVar11); + pdVar25[lVar41] = dVar11 - dVar12; + lVar41 = lVar41 + 1; + } while (lVar41 != lVar4); + } + else { + iVar47 = iVar33; + if (uVar9 != 0) { + dVar13 = pdVar24[lVar23]; + dVar11 = *pdVar25; + dVar12 = pdVar27[lVar23]; + *(float *)pdVar30 = (float)(dVar56 * (dVar11 + dVar13)); + *pdVar25 = (dVar11 + dVar13) - dVar12; + iVar47 = iVar33 + 1; + if (uVar3 == 1) goto LAB_00207fac; + } + if (2 < uVar26) { + uVar40 = 0; + pdVar30 = pdVar27 + (ulong)uVar9 + lVar23; + puVar18 = (undefined8 *)((long)param_3 + lVar1); + pdVar36 = __src_00 + (ulong)uVar9 + lVar23; + pdVar42 = __src_00 + lVar23 + (ulong)uVar9; + pdVar35 = pdVar24 + (ulong)uVar9 + lVar23; + do { + dVar55 = pdVar30[1]; + dVar53 = *pdVar30; + dVar49 = pdVar35[1]; + dVar14 = *pdVar35; + dVar48 = pdVar42[1]; + dVar13 = *pdVar42; + uVar40 = uVar40 + 1; + dVar52 = pdVar30[3]; + dVar50 = pdVar30[2]; + pdVar30 = pdVar30 + 4; + dVar54 = pdVar35[3]; + dVar12 = pdVar35[2]; + dVar51 = pdVar42[3]; + dVar11 = pdVar42[2]; + puVar18[1] = CONCAT44((float)(dVar56 * (dVar54 + dVar51)), + (float)(dVar56 * (dVar12 + dVar11))); + *puVar18 = CONCAT44((float)(dVar56 * (dVar49 + dVar48)), + (float)(dVar56 * (dVar14 + dVar13))); + pdVar36[1] = (dVar49 + dVar48) - dVar55; + *pdVar36 = (dVar14 + dVar13) - dVar53; + pdVar36[3] = (dVar54 + dVar51) - dVar52; + pdVar36[2] = (dVar12 + dVar11) - dVar50; + puVar18 = puVar18 + 2; + pdVar36 = pdVar36 + 4; + pdVar42 = pdVar42 + 4; + pdVar35 = pdVar35 + 4; + } while (uVar40 < uVar21); + iVar47 = iVar47 + iVar61; + if (iVar61 == iVar58) goto LAB_00207fac; + } + lVar41 = (long)iVar47; + dVar13 = pdVar24[lVar41]; + dVar11 = __src_00[lVar41]; + dVar12 = pdVar27[lVar41]; + *(float *)((long)param_3 + lVar41 * 4) = (float)(dVar56 * (dVar11 + dVar13)); + __src_00[lVar41] = (dVar11 + dVar13) - dVar12; + if (iVar47 + 1 < (int)param_6) { + lVar41 = (long)(iVar47 + 1); + dVar13 = pdVar24[lVar41]; + dVar11 = __src_00[lVar41]; + dVar12 = pdVar27[lVar41]; + *(float *)((long)param_3 + lVar41 * 4) = (float)(dVar56 * (dVar11 + dVar13)); + __src_00[lVar41] = (dVar11 + dVar13) - dVar12; + if (iVar47 + 2 < (int)param_6) { + lVar41 = (long)(iVar47 + 2); + dVar12 = pdVar24[lVar41]; + dVar11 = __src_00[lVar41]; + dVar13 = pdVar27[lVar41]; + *(float *)((long)param_3 + lVar41 * 4) = (float)(dVar56 * (dVar11 + dVar12)); + __src_00[lVar41] = (dVar11 + dVar12) - dVar13; + } + } + } + } + } +LAB_00207fac: + puVar31 = puVar31 + 1; + param_3 = (double *)((long)param_3 + (long)param_4); + } while (puVar31 != param_2 + (ulong)(param_5 - 1) + 2); + } + return; +} + + +================================================================== + +### FUNC 00208770 (3392 bytes) name=FUN_00208770 + +void FUN_00208770(long param_1,long *param_2,float *param_3,int param_4,int param_5,uint param_6) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int *piVar4; + int *piVar5; + int *piVar6; + long *plVar7; + float *pfVar8; + float *pfVar9; + long lVar10; + long lVar11; + int *piVar12; + uint uVar13; + uint uVar14; + int iVar15; + uint uVar16; + int iVar17; + uint uVar18; + uint uVar19; + int *piVar20; + int *piVar21; + int *piVar22; + int *piVar23; + int *piVar24; + int iVar25; + char cVar26; + uint uVar27; + int iVar28; + ulong uVar29; + int *piVar30; + long lVar31; + char *pcVar32; + void *__dest; + undefined8 *puVar33; + undefined8 *puVar34; + undefined8 *puVar35; + float *pfVar36; + uint uVar37; + ulong uVar38; + undefined1 (*pauVar39) [16]; + void *__src; + long lVar40; + size_t __n; + long lVar41; + long lVar42; + long lVar43; + long lVar44; + long lVar45; + float *pfVar46; + long lVar47; + int *piVar48; + long lVar49; + ulong uVar50; + long lVar51; + undefined8 *__src_00; + undefined8 *puVar52; + ulong uVar53; + int *piVar54; + ulong uVar55; + size_t sVar56; + undefined8 uVar57; + float fVar58; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + undefined1 auVar64 [16]; + int iVar65; + double dVar66; + undefined8 uVar67; + undefined1 auVar68 [16]; + undefined1 auVar69 [16]; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + undefined1 auVar72 [16]; + undefined8 local_10; + undefined8 local_8; + + __src_00 = *(undefined8 **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar56 = (long)__src - (long)__src_00; + uVar38 = (long)sVar56 >> 2; + dVar66 = *(double *)(param_1 + 0x10); + if ((uint)uVar38 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar28 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar28 + -1) { + local_10 = 0; + local_8 = 0; + pcVar32 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar26 = s_sumCount____ksize_1_0045d530[0x12]; + uVar67 = s_sumCount____ksize_1_0045d530._8_8_; + uVar57 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar32 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar32[0x12] = cVar26; + *(undefined8 *)pcVar32 = uVar57; + *(undefined8 *)(pcVar32 + 8) = uVar67; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x3a2); + cv::String::deallocate((String *)&local_10); + iVar28 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar28 + -1; + goto LAB_00208a64; + } + sVar56 = -(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2; + } + else { + uVar55 = (ulong)(int)param_6; + if (uVar38 < uVar55) { + uVar53 = uVar55 - uVar38; + if (uVar53 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 2) < uVar53) { + if (0x3fffffffffffffff - uVar38 < uVar53) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar50 = uVar53; + if (uVar53 < uVar38) { + uVar50 = uVar38; + } + uVar50 = uVar50 + uVar38; + if ((uVar50 < uVar38) || (0x3fffffffffffffff < uVar50)) { + uVar50 = 0xfffffffffffffffc; +LAB_00209460: + puVar33 = operator_new(uVar50); + __src_00 = *(undefined8 **)(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar38 = (long)__n >> 2; + } + else { + if (uVar50 != 0) { + uVar50 = uVar50 * 4; + goto LAB_00209460; + } + puVar33 = (undefined8 *)0x0; + uVar50 = 0; + __n = sVar56; + } + memset((void *)((long)puVar33 + sVar56),0,uVar53 * 4); + if (uVar38 != 0) { + memmove(puVar33,__src_00,__n); + } + __dest = (void *)((long)puVar33 + uVar53 * 4 + __n); + sVar56 = *(long *)(param_1 + 0x28) - (long)__src; + if ((long)sVar56 >> 2 != 0) { + __dest = memmove(__dest,__src,sVar56); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(undefined8 **)(param_1 + 0x20) = puVar33; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar56; + *(ulong *)(param_1 + 0x30) = (long)puVar33 + uVar50; + __src_00 = puVar33; + } + else { + memset(__src,0,uVar53 * 4); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar53 * 4); + } + } + } + else if (uVar55 < uVar38) { + *(void **)(param_1 + 0x28) = (void *)((long)__src_00 + uVar55 * 4); + } + sVar56 = uVar55 << 2; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar56); + iVar28 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) < iVar28 + -1) { + uVar18 = param_6 - 4 >> 2; + uVar16 = (uVar18 + 1) * 4; + if ((int)(param_6 - 3) < 1) { + uVar16 = 0; + } + uVar1 = uVar16 + 1; + uVar19 = param_6 - uVar16; + lVar49 = (long)(int)uVar16; + uVar2 = uVar16 + 2; + lVar43 = (lVar49 + 4) * 4; + lVar45 = lVar43 + -0x10; + uVar38 = (long)__src_00 + lVar45; + uVar13 = -((uint)(uVar38 >> 2) & 3) & 3; + uVar55 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar14 = uVar19; + if (uVar13 < uVar19) { + uVar14 = uVar13; + } + piVar4 = (int *)((long)__src_00 + lVar49 * 4); + piVar5 = (int *)((long)__src_00 + uVar55); + uVar53 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + piVar6 = (int *)((long)__src_00 + uVar53); + lVar41 = lVar45 + (ulong)uVar14 * 4; + uVar13 = ((uVar19 - uVar14) - 4 >> 2) + 1; + iVar17 = uVar13 * 4; + do { + puVar35 = (undefined8 *)*param_2; + puVar33 = __src_00; + puVar34 = puVar35; + if (0 < (int)(param_6 - 3)) { + do { + uVar57 = *puVar34; + puVar52 = puVar33 + 2; + puVar33[1] = CONCAT44((int)((ulong)puVar34[1] >> 0x20) + (int)((ulong)puVar33[1] >> 0x20), + (int)puVar34[1] + (int)puVar33[1]); + *puVar33 = CONCAT44((int)((ulong)uVar57 >> 0x20) + (int)((ulong)*puVar33 >> 0x20), + (int)uVar57 + (int)*puVar33); + puVar33 = puVar52; + puVar34 = puVar34 + 2; + } while (puVar52 != __src_00 + ((ulong)uVar18 + 1) * 2); + } + if ((int)uVar16 < (int)param_6) { + if ((uVar38 < (ulong)((long)puVar35 + lVar43) && + (void *)((long)puVar35 + lVar45) < (void *)((long)__src_00 + lVar43)) || (uVar19 < 8)) + { + lVar31 = 0; + do { + *(int *)(uVar38 + lVar31) = + *(int *)(uVar38 + lVar31) + *(int *)((long)puVar35 + lVar45 + lVar31); + lVar31 = lVar31 + 4; + } while (lVar31 != ((ulong)((param_6 - 1) - uVar16) + 1) * 4); + } + else { + if (uVar14 == 0) { + uVar50 = (ulong)uVar16; + } + else { + *piVar4 = *piVar4 + *(int *)((long)puVar35 + lVar49 * 4); + if (uVar14 == 1) { + uVar50 = (ulong)uVar1; + } + else { + *piVar5 = *piVar5 + *(int *)((long)puVar35 + uVar55); + if (uVar14 == 3) { + uVar50 = (ulong)(uVar16 + 3); + *piVar6 = *piVar6 + *(int *)((long)puVar35 + uVar53); + } + else { + uVar50 = (ulong)uVar2; + } + } + } + if (2 < (uVar19 - 1) - uVar14) { + uVar27 = 0; + puVar33 = (undefined8 *)((long)__src_00 + (lVar49 + (ulong)uVar14) * 4); + puVar34 = (undefined8 *)((long)puVar35 + lVar41); + puVar52 = (undefined8 *)((long)__src_00 + lVar41); + do { + uVar67 = *puVar34; + uVar27 = uVar27 + 1; + uVar57 = *puVar33; + puVar52[1] = CONCAT44((int)((ulong)puVar33[1] >> 0x20) + + (int)((ulong)puVar34[1] >> 0x20), + (int)puVar33[1] + (int)puVar34[1]); + *puVar52 = CONCAT44((int)((ulong)uVar57 >> 0x20) + (int)((ulong)uVar67 >> 0x20), + (int)uVar57 + (int)uVar67); + puVar33 = puVar33 + 2; + puVar34 = puVar34 + 2; + puVar52 = puVar52 + 2; + } while (uVar27 < uVar13); + uVar50 = (ulong)(uint)((int)uVar50 + iVar17); + if (uVar19 - uVar14 == iVar17) goto LAB_00208a44; + } + uVar29 = -(uVar50 >> 0x1f) & 0xfffffffc00000000 | uVar50 << 2; + *(int *)((long)__src_00 + uVar29) = + *(int *)((long)__src_00 + uVar29) + *(int *)((long)puVar35 + uVar29); + if ((int)uVar50 + 1 < (int)param_6) { + lVar31 = uVar29 + 4; + *(int *)((long)__src_00 + lVar31) = + *(int *)((long)__src_00 + lVar31) + *(int *)((long)puVar35 + lVar31); + if ((int)uVar50 + 2 < (int)param_6) { + lVar31 = uVar29 + 8; + *(int *)((long)__src_00 + lVar31) = + *(int *)((long)__src_00 + lVar31) + *(int *)((long)puVar35 + lVar31); + } + } + } + } +LAB_00208a44: + param_2 = param_2 + 1; + iVar28 = *(int *)(param_1 + 8); + iVar3 = *(int *)(param_1 + 0x18) + 1; + *(int *)(param_1 + 0x18) = iVar3; + } while (iVar3 < iVar28 + -1); + } +LAB_00208a64: + if (param_5 == 0) { + return; + } + iVar17 = param_6 - 7; + uVar18 = param_6 - 8 >> 3; + uVar16 = (uVar18 + 1) * 8; + if (iVar17 < 1) { + uVar16 = 0; + } + plVar7 = param_2 + (ulong)(param_5 - 1) + 1; + uVar19 = param_6 - uVar16; + lVar41 = (long)(int)uVar16; + uVar1 = uVar16 + 1; + uVar2 = uVar16 + 2; + lVar43 = lVar41 + 4; + lVar45 = lVar43 * 4; + lVar49 = lVar45 + -0x10; + pfVar8 = (float *)((long)__src_00 + lVar49); + uVar13 = -((uint)((ulong)pfVar8 >> 2) & 3) & 3; + uVar38 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar14 = uVar19; + if (uVar13 < uVar19) { + uVar14 = uVar13; + } + lVar51 = lVar41 * 4; + pfVar36 = param_3 + 4; + lVar31 = lVar41 + (ulong)uVar14; + uVar55 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + piVar4 = (int *)((long)__src_00 + uVar55); + lVar44 = ((ulong)((param_6 - 1) - uVar16) + 1) * 4; + piVar5 = (int *)((long)__src_00 + lVar51); + pfVar9 = (float *)((long)__src_00 + lVar45); + piVar6 = (int *)((long)__src_00 + uVar38); + iVar3 = uVar19 - uVar14; + uVar27 = (uVar19 - 1) - uVar14; + lVar10 = lVar49 + (ulong)uVar14 * 4; + uVar13 = (iVar3 - 4U >> 2) + 1; + lVar40 = *param_2; + iVar65 = uVar13 * 4; + lVar42 = param_2[1 - iVar28]; + do { + if (dVar66 == 1.0) { + if (0 < iVar17) { + piVar30 = (int *)(__src_00 + 2); + piVar48 = (int *)(lVar40 + 0x10); + pauVar39 = (undefined1 (*) [16])(lVar42 + 0x10); + pfVar46 = pfVar36; + do { + piVar54 = piVar48 + -4; + iVar28 = *piVar48; + piVar12 = piVar48 + 1; + piVar20 = piVar48 + 2; + piVar21 = piVar48 + 3; + piVar22 = piVar48 + -3; + piVar23 = piVar48 + -2; + piVar24 = piVar48 + -1; + piVar48 = piVar48 + 8; + auVar59._0_4_ = piVar30[-4] + *piVar54; + auVar59._4_4_ = piVar30[-3] + *piVar22; + auVar59._8_4_ = piVar30[-2] + *piVar23; + auVar59._12_4_ = piVar30[-1] + *piVar24; + auVar62._0_4_ = iVar28 + *piVar30; + auVar62._4_4_ = *piVar12 + piVar30[1]; + auVar62._8_4_ = *piVar20 + piVar30[2]; + auVar62._12_4_ = *piVar21 + piVar30[3]; + auVar72 = NEON_scvtf(auVar59,4); + auVar68 = NEON_scvtf(auVar62,4); + *(long *)(pfVar46 + -2) = auVar72._8_8_; + *(long *)(pfVar46 + -4) = auVar72._0_8_; + *(long *)(pfVar46 + 2) = auVar68._8_8_; + *(long *)pfVar46 = auVar68._0_8_; + pfVar46 = pfVar46 + 8; + iVar28 = *(int *)pauVar39[-1]; + iVar15 = *(int *)(pauVar39[-1] + 4); + iVar25 = *(int *)(pauVar39[-1] + 0xc); + piVar30[-2] = auVar59._8_4_ - *(int *)(pauVar39[-1] + 8); + piVar30[-1] = auVar59._12_4_ - iVar25; + piVar30[-4] = auVar59._0_4_ - iVar28; + piVar30[-3] = auVar59._4_4_ - iVar15; + auVar68 = *pauVar39; + pauVar39 = pauVar39 + 2; + auVar63._0_8_ = CONCAT44(auVar62._4_4_ - auVar68._4_4_,auVar62._0_4_ - auVar68._0_4_); + auVar63._8_4_ = auVar62._8_4_ - auVar68._8_4_; + auVar63._12_4_ = auVar62._12_4_ - auVar68._12_4_; + *(long *)(piVar30 + 2) = auVar63._8_8_; + *(undefined8 *)piVar30 = auVar63._0_8_; + piVar30 = piVar30 + 8; + } while (piVar30 != (int *)(__src_00 + (ulong)uVar18 * 4 + 6)); + } + if ((int)uVar16 < (int)param_6) { + if (((uVar19 < 7 || + pfVar8 < (float *)(lVar40 + lVar45) && (float *)(lVar40 + lVar49) < pfVar9) || + pfVar8 < param_3 + lVar43 && param_3 + lVar41 < pfVar9) || + (pfVar8 < (float *)(lVar42 + lVar45) && (float *)(lVar42 + lVar49) < pfVar9)) { + lVar47 = 0; + do { + iVar15 = *(int *)(lVar42 + lVar49 + lVar47); + iVar28 = *(int *)((long)pfVar8 + lVar47) + *(int *)(lVar40 + lVar49 + lVar47); + *(float *)((long)(param_3 + lVar41) + lVar47) = (float)iVar28; + *(int *)((long)pfVar8 + lVar47) = iVar28 - iVar15; + lVar47 = lVar47 + 4; + } while (lVar47 != lVar44); + } + else { + if (uVar14 == 0) { + uVar53 = (ulong)uVar16; + } + else { + iVar15 = *(int *)(lVar42 + lVar51); + iVar28 = *piVar5 + *(int *)(lVar40 + lVar51); + param_3[lVar41] = (float)iVar28; + *piVar5 = iVar28 - iVar15; + if (uVar14 == 1) { + uVar53 = (ulong)uVar1; + } + else { + iVar15 = *(int *)(lVar42 + uVar38); + iVar28 = *piVar6 + *(int *)(lVar40 + uVar38); + *(float *)((long)param_3 + uVar38) = (float)iVar28; + *piVar6 = iVar28 - iVar15; + if (uVar14 == 3) { + iVar15 = *(int *)(lVar42 + uVar55); + uVar53 = (ulong)(uVar16 + 3); + iVar28 = *piVar4 + *(int *)(lVar40 + uVar55); + *(float *)((long)param_3 + uVar55) = (float)iVar28; + *piVar4 = iVar28 - iVar15; + } + else { + uVar53 = (ulong)uVar2; + } + } + } + if (2 < uVar27) { + lVar47 = 0; + uVar37 = 0; + do { + uVar37 = uVar37 + 1; + lVar11 = lVar47 + lVar10; + piVar30 = (int *)(lVar40 + lVar11); + piVar48 = (int *)((long)__src_00 + lVar47 + lVar31 * 4); + piVar12 = (int *)(lVar42 + lVar11); + auVar60._0_4_ = *piVar30 + *piVar48; + auVar60._4_4_ = piVar30[1] + piVar48[1]; + auVar60._8_4_ = piVar30[2] + piVar48[2]; + auVar60._12_4_ = piVar30[3] + piVar48[3]; + puVar33 = (undefined8 *)((long)__src_00 + lVar47 + lVar10); + lVar47 = lVar47 + 0x10; + auVar68 = NEON_scvtf(auVar60,4); + auVar61._0_8_ = CONCAT44(auVar60._4_4_ - piVar12[1],auVar60._0_4_ - *piVar12); + auVar61._8_4_ = auVar60._8_4_ - piVar12[2]; + auVar61._12_4_ = auVar60._12_4_ - piVar12[3]; + ((undefined8 *)((long)param_3 + lVar11))[1] = auVar68._8_8_; + *(undefined8 *)((long)param_3 + lVar11) = auVar68._0_8_; + puVar33[1] = auVar61._8_8_; + *puVar33 = auVar61._0_8_; + } while (uVar37 < uVar13); + uVar53 = (ulong)(uint)((int)uVar53 + iVar65); + if (iVar65 == iVar3) goto joined_r0x00208e64; + } + uVar50 = -(uVar53 >> 0x1f) & 0xfffffffc00000000 | uVar53 << 2; + iVar15 = *(int *)(lVar42 + uVar50); + iVar28 = *(int *)((long)__src_00 + uVar50) + *(int *)(lVar40 + uVar50); + *(float *)((long)param_3 + uVar50) = (float)iVar28; + *(int *)((long)__src_00 + uVar50) = iVar28 - iVar15; + if ((int)uVar53 + 1 < (int)param_6) { + lVar47 = uVar50 + 4; + iVar15 = *(int *)(lVar42 + lVar47); + iVar28 = *(int *)((long)__src_00 + lVar47) + *(int *)(lVar40 + lVar47); + *(float *)((long)param_3 + lVar47) = (float)iVar28; + *(int *)((long)__src_00 + lVar47) = iVar28 - iVar15; + if ((int)uVar53 + 2 < (int)param_6) { + lVar47 = uVar50 + 8; + iVar15 = *(int *)(lVar42 + lVar47); + iVar28 = *(int *)((long)__src_00 + lVar47) + *(int *)(lVar40 + lVar47); + *(float *)((long)param_3 + lVar47) = (float)iVar28; + *(int *)((long)__src_00 + lVar47) = iVar28 - iVar15; + } + } + } + } + } + else { + fVar58 = (float)dVar66; + if (0 < iVar17) { + piVar30 = (int *)(__src_00 + 2); + piVar48 = (int *)(lVar40 + 0x10); + pauVar39 = (undefined1 (*) [16])(lVar42 + 0x10); + pfVar46 = pfVar36; + do { + piVar54 = piVar48 + -4; + iVar28 = *piVar48; + piVar12 = piVar48 + 1; + piVar20 = piVar48 + 2; + piVar21 = piVar48 + 3; + piVar22 = piVar48 + -3; + piVar23 = piVar48 + -2; + piVar24 = piVar48 + -1; + piVar48 = piVar48 + 8; + auVar68._0_4_ = piVar30[-4] + *piVar54; + auVar68._4_4_ = piVar30[-3] + *piVar22; + auVar68._8_4_ = piVar30[-2] + *piVar23; + auVar68._12_4_ = piVar30[-1] + *piVar24; + auVar72._0_4_ = iVar28 + *piVar30; + auVar72._4_4_ = *piVar12 + piVar30[1]; + auVar72._8_4_ = *piVar20 + piVar30[2]; + auVar72._12_4_ = *piVar21 + piVar30[3]; + auVar71 = NEON_scvtf(auVar68,4); + auVar69 = NEON_scvtf(auVar72,4); + pfVar46[-2] = fVar58 * auVar71._8_4_; + pfVar46[-1] = fVar58 * auVar71._12_4_; + pfVar46[-4] = fVar58 * auVar71._0_4_; + pfVar46[-3] = fVar58 * auVar71._4_4_; + pfVar46[2] = fVar58 * auVar69._8_4_; + pfVar46[3] = fVar58 * auVar69._12_4_; + *pfVar46 = fVar58 * auVar69._0_4_; + pfVar46[1] = fVar58 * auVar69._4_4_; + pfVar46 = pfVar46 + 8; + iVar28 = *(int *)pauVar39[-1]; + iVar15 = *(int *)(pauVar39[-1] + 4); + iVar25 = *(int *)(pauVar39[-1] + 0xc); + piVar30[-2] = auVar68._8_4_ - *(int *)(pauVar39[-1] + 8); + piVar30[-1] = auVar68._12_4_ - iVar25; + piVar30[-4] = auVar68._0_4_ - iVar28; + piVar30[-3] = auVar68._4_4_ - iVar15; + auVar68 = *pauVar39; + pauVar39 = pauVar39 + 2; + auVar69._0_8_ = CONCAT44(auVar72._4_4_ - auVar68._4_4_,auVar72._0_4_ - auVar68._0_4_); + auVar69._8_4_ = auVar72._8_4_ - auVar68._8_4_; + auVar69._12_4_ = auVar72._12_4_ - auVar68._12_4_; + *(long *)(piVar30 + 2) = auVar69._8_8_; + *(undefined8 *)piVar30 = auVar69._0_8_; + piVar30 = piVar30 + 8; + } while (piVar30 != (int *)(__src_00 + (ulong)uVar18 * 4 + 6)); + } + if ((int)uVar16 < (int)param_6) { + if (((uVar19 < 6 || + pfVar8 < (float *)(lVar40 + lVar45) && (float *)(lVar40 + lVar49) < pfVar9) || + pfVar8 < param_3 + lVar43 && param_3 + lVar41 < pfVar9) || + (pfVar8 < (float *)(lVar42 + lVar45) && (float *)(lVar42 + lVar49) < pfVar9)) { + lVar47 = 0; + do { + iVar15 = *(int *)(lVar42 + lVar49 + lVar47); + iVar28 = *(int *)((long)pfVar8 + lVar47) + *(int *)(lVar40 + lVar49 + lVar47); + *(float *)((long)(param_3 + lVar41) + lVar47) = (float)(dVar66 * (double)iVar28); + *(int *)((long)pfVar8 + lVar47) = iVar28 - iVar15; + lVar47 = lVar47 + 4; + } while (lVar47 != lVar44); + } + else { + if (uVar14 == 0) { + uVar53 = (ulong)uVar16; + } + else { + iVar15 = *(int *)(lVar42 + lVar51); + iVar28 = *piVar5 + *(int *)(lVar40 + lVar51); + param_3[lVar41] = (float)(dVar66 * (double)iVar28); + *piVar5 = iVar28 - iVar15; + if (uVar14 == 1) { + uVar53 = (ulong)uVar1; + } + else { + iVar15 = *(int *)(lVar42 + uVar38); + iVar28 = *piVar6 + *(int *)(lVar40 + uVar38); + *(float *)((long)param_3 + uVar38) = (float)(dVar66 * (double)iVar28); + *piVar6 = iVar28 - iVar15; + if (uVar14 == 3) { + uVar53 = (ulong)(uVar16 + 3); + iVar15 = *(int *)(lVar42 + uVar55); + iVar28 = *piVar4 + *(int *)(lVar40 + uVar55); + *(float *)((long)param_3 + uVar55) = (float)(dVar66 * (double)iVar28); + *piVar4 = iVar28 - iVar15; + } + else { + uVar53 = (ulong)uVar2; + } + } + } + if (2 < uVar27) { + lVar47 = 0; + uVar37 = 0; + do { + uVar37 = uVar37 + 1; + lVar11 = lVar47 + lVar10; + piVar30 = (int *)((long)__src_00 + lVar47 + lVar31 * 4); + piVar48 = (int *)(lVar40 + lVar11); + uVar67 = ((undefined8 *)(lVar42 + lVar11))[1]; + uVar57 = *(undefined8 *)(lVar42 + lVar11); + puVar33 = (undefined8 *)((long)__src_00 + lVar47 + lVar10); + lVar47 = lVar47 + 0x10; + auVar71._0_8_ = (long)(*piVar48 + *piVar30); + auVar71._8_8_ = (long)(piVar48[1] + piVar30[1]); + auVar70._0_8_ = (long)(piVar48[2] + piVar30[2]); + auVar70._8_8_ = (long)(piVar48[3] + piVar30[3]); + auVar64._0_8_ = + CONCAT44((piVar48[1] + piVar30[1]) - (int)((ulong)uVar57 >> 0x20), + (*piVar48 + *piVar30) - (int)uVar57); + auVar64._8_4_ = (piVar48[2] + piVar30[2]) - (int)uVar67; + auVar64._12_4_ = (piVar48[3] + piVar30[3]) - (int)((ulong)uVar67 >> 0x20); + auVar68 = NEON_scvtf(auVar71,8); + auVar72 = NEON_scvtf(auVar70,8); + ((undefined8 *)((long)param_3 + lVar11))[1] = + CONCAT44((float)(dVar66 * auVar72._8_8_),(float)(dVar66 * auVar72._0_8_)); + *(undefined8 *)((long)param_3 + lVar11) = + CONCAT44((float)(dVar66 * auVar68._8_8_),(float)(dVar66 * auVar68._0_8_)); + puVar33[1] = auVar64._8_8_; + *puVar33 = auVar64._0_8_; + } while (uVar37 < uVar13); + uVar53 = (ulong)(uint)((int)uVar53 + iVar65); + if (iVar65 == iVar3) goto joined_r0x00208e64; + } + uVar50 = -(uVar53 >> 0x1f) & 0xfffffffc00000000 | uVar53 << 2; + iVar15 = *(int *)(lVar42 + uVar50); + iVar28 = *(int *)((long)__src_00 + uVar50) + *(int *)(lVar40 + uVar50); + *(float *)((long)param_3 + uVar50) = (float)(dVar66 * (double)iVar28); + *(int *)((long)__src_00 + uVar50) = iVar28 - iVar15; + if ((int)uVar53 + 1 < (int)param_6) { + lVar47 = uVar50 + 4; + iVar15 = *(int *)(lVar42 + lVar47); + iVar28 = *(int *)((long)__src_00 + lVar47) + *(int *)(lVar40 + lVar47); + *(float *)((long)param_3 + lVar47) = (float)(dVar66 * (double)iVar28); + *(int *)((long)__src_00 + lVar47) = iVar28 - iVar15; + if ((int)uVar53 + 2 < (int)param_6) { + lVar47 = uVar50 + 8; + iVar15 = *(int *)(lVar42 + lVar47); + iVar28 = *(int *)((long)__src_00 + lVar47) + *(int *)(lVar40 + lVar47); + *(float *)((long)param_3 + lVar47) = (float)(dVar66 * (double)iVar28); + *(int *)((long)__src_00 + lVar47) = iVar28 - iVar15; + } + } + } + } + } +joined_r0x00208e64: + param_2 = param_2 + 1; + if (param_2 == plVar7) { + s_sumCount____ksize_1_0045d530[0] = (char)s_sumCount____ksize_1_0045d530._0_8_; + s_sumCount____ksize_1_0045d530[1] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,1); + s_sumCount____ksize_1_0045d530[2] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,2); + s_sumCount____ksize_1_0045d530[3] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,3); + s_sumCount____ksize_1_0045d530[4] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,4); + s_sumCount____ksize_1_0045d530[5] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,5); + s_sumCount____ksize_1_0045d530[6] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,6); + s_sumCount____ksize_1_0045d530[7] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,7); + s_sumCount____ksize_1_0045d530[8] = (char)s_sumCount____ksize_1_0045d530._8_8_; + s_sumCount____ksize_1_0045d530[9] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,1); + s_sumCount____ksize_1_0045d530[10] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,2); + s_sumCount____ksize_1_0045d530[0xb] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,3); + s_sumCount____ksize_1_0045d530[0xc] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,4); + s_sumCount____ksize_1_0045d530[0xd] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,5); + s_sumCount____ksize_1_0045d530[0xe] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,6); + s_sumCount____ksize_1_0045d530[0xf] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,7); + s_sumCount____ksize_1_0045d530[0x10] = (char)s_sumCount____ksize_1_0045d530._16_2_; + s_sumCount____ksize_1_0045d530[0x11] = SUB21(s_sumCount____ksize_1_0045d530._16_2_,1); + return; + } + pfVar36 = (float *)((long)pfVar36 + (long)param_4); + param_3 = pfVar36 + -4; + lVar40 = *param_2; + lVar42 = param_2[1 - *(int *)(param_1 + 8)]; + } while( true ); +} + + +================================================================== + +### FUNC 002094c4 (3128 bytes) name=FUN_002094c4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002094c4(long param_1,undefined8 *param_2,int *param_3,int param_4,int param_5,uint param_6 + ) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + undefined8 *puVar4; + int *piVar5; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + uint uVar10; + uint uVar11; + int iVar12; + ulong uVar13; + ulong uVar14; + ulong uVar15; + ulong uVar16; + ulong uVar17; + ulong uVar18; + ulong uVar19; + ulong uVar20; + ulong uVar21; + ulong uVar22; + ulong uVar23; + ulong uVar24; + ulong uVar25; + ulong uVar26; + char cVar27; + uint uVar28; + int iVar29; + int *piVar30; + ulong uVar31; + long lVar32; + long lVar33; + char *pcVar34; + void *__dest; + int *piVar35; + int *piVar36; + ulong uVar37; + int *piVar38; + long lVar39; + size_t __n; + long lVar40; + long lVar41; + undefined8 *puVar42; + int *__src; + int *piVar43; + ulong uVar44; + ulong uVar45; + size_t sVar46; + ulong uVar47; + undefined8 *puVar48; + void *__src_00; + int *piVar49; + int iVar50; + int iVar51; + float fVar52; + int iVar57; + int iVar58; + int iVar59; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + float fVar60; + undefined8 uVar61; + float fVar62; + undefined8 uVar63; + double dVar64; + undefined8 local_10; + undefined8 local_8; + + __src = *(int **)(param_1 + 0x20); + __src_00 = *(void **)(param_1 + 0x28); + sVar46 = (long)__src_00 - (long)__src; + uVar37 = (long)sVar46 >> 2; + dVar64 = *(double *)(param_1 + 0x10); + if ((uint)uVar37 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar51 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar51 + -1) { + local_10 = 0; + local_8 = 0; + pcVar34 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar27 = s_sumCount____ksize_1_0045d530[0x12]; + uVar63 = s_sumCount____ksize_1_0045d530._8_8_; + uVar61 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar34 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar34[0x12] = cVar27; + *(undefined8 *)pcVar34 = uVar61; + *(undefined8 *)(pcVar34 + 8) = uVar63; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x308); + cv::String::deallocate((String *)&local_10); + iVar51 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar51 + -1; + goto LAB_002097f0; + } + sVar46 = -(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2; + } + else { + uVar47 = (ulong)(int)param_6; + if (uVar37 < uVar47) { + uVar45 = uVar47 - uVar37; + if (uVar45 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src_00 >> 2) < uVar45) { + if (0x3fffffffffffffff - uVar37 < uVar45) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar31 = uVar45; + if (uVar45 < uVar37) { + uVar31 = uVar37; + } + uVar31 = uVar31 + uVar37; + if ((uVar31 < uVar37) || (0x3fffffffffffffff < uVar31)) { + uVar44 = 0xfffffffffffffffc; +LAB_0020a0b8: + piVar35 = operator_new(uVar44); + __src = *(int **)(param_1 + 0x20); + __n = (long)__src_00 - (long)__src; + uVar37 = (long)__n >> 2; + } + else { + uVar44 = uVar31 * 4; + if (uVar31 != 0) goto LAB_0020a0b8; + uVar44 = 0; + piVar35 = (int *)0x0; + __n = sVar46; + } + memset((void *)((long)piVar35 + sVar46),0,uVar45 * 4); + if (uVar37 != 0) { + memmove(piVar35,__src,__n); + } + sVar46 = *(long *)(param_1 + 0x28) - (long)__src_00; + __dest = (void *)((long)piVar35 + uVar45 * 4 + __n); + if ((long)sVar46 >> 2 != 0) { + __dest = memmove(__dest,__src_00,sVar46); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(int **)(param_1 + 0x20) = piVar35; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar46; + *(ulong *)(param_1 + 0x30) = (long)piVar35 + uVar44; + __src = piVar35; + } + else { + memset(__src_00,0,uVar45 * 4); + *(void **)(param_1 + 0x28) = (void *)((long)__src_00 + uVar45 * 4); + } + } + } + else if (uVar47 < uVar37) { + *(int **)(param_1 + 0x28) = __src + uVar47; + } + sVar46 = uVar47 << 2; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src,0,sVar46); + iVar51 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) < iVar51 + -1) { + uVar10 = param_6 - 4 >> 2; + uVar8 = (uVar10 + 1) * 4; + if ((int)(param_6 - 3) < 1) { + uVar8 = 0; + } + uVar1 = uVar8 + 1; + lVar41 = (long)(int)uVar8; + uVar2 = uVar8 + 2; + piVar35 = __src + lVar41; + uVar11 = param_6 - uVar8; + uVar37 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar6 = -((uint)((ulong)piVar35 >> 2) & 3) & 3; + piVar3 = (int *)((long)__src + uVar37); + uVar7 = uVar11; + if (uVar6 < uVar11) { + uVar7 = uVar6; + } + uVar47 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + piVar43 = (int *)((long)__src + uVar47); + uVar6 = ((uVar11 - uVar7) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + do { + piVar38 = (int *)*param_2; + piVar30 = __src; + piVar36 = piVar38; + if (0 < (int)(param_6 - 3)) { + do { + uVar63 = *(undefined8 *)(piVar30 + 2); + uVar61 = *(undefined8 *)piVar30; + iVar51 = *piVar36; + iVar50 = piVar36[1]; + iVar57 = piVar36[3]; + piVar49 = piVar30 + 4; + piVar30[2] = piVar36[2] + (int)uVar63; + piVar30[3] = iVar57 + (int)((ulong)uVar63 >> 0x20); + *piVar30 = iVar51 + (int)uVar61; + piVar30[1] = iVar50 + (int)((ulong)uVar61 >> 0x20); + piVar30 = piVar49; + piVar36 = piVar36 + 4; + } while (piVar49 != __src + ((ulong)uVar10 + 1) * 4); + } + if ((int)uVar8 < (int)param_6) { + if ((piVar35 < piVar38 + lVar41 + 4 && piVar38 + lVar41 < __src + lVar41 + 4) || + (uVar11 < 8)) { + lVar39 = 0; + do { + *(int *)((long)piVar35 + lVar39) = + *(int *)((long)piVar35 + lVar39) + *(int *)((long)(piVar38 + lVar41) + lVar39); + lVar39 = lVar39 + 4; + } while (lVar39 != ((ulong)((param_6 - 1) - uVar8) + 1) * 4); + } + else { + if (uVar7 == 0) { + uVar45 = (ulong)uVar8; + } + else { + __src[lVar41] = __src[lVar41] + piVar38[lVar41]; + if (uVar7 == 1) { + uVar45 = (ulong)uVar1; + } + else { + *piVar3 = *piVar3 + *(int *)((long)piVar38 + uVar37); + if (uVar7 == 3) { + uVar45 = (ulong)(uVar8 + 3); + *piVar43 = *piVar43 + *(int *)((long)piVar38 + uVar47); + } + else { + uVar45 = (ulong)uVar2; + } + } + } + if (2 < (uVar11 - 1) - uVar7) { + uVar28 = 0; + piVar30 = __src + lVar41 + (ulong)uVar7; + piVar36 = __src + (ulong)uVar7 + lVar41; + piVar49 = piVar38 + (ulong)uVar7 + lVar41; + do { + uVar63 = *(undefined8 *)piVar49; + uVar28 = uVar28 + 1; + uVar61 = *(undefined8 *)piVar30; + *(ulong *)(piVar36 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar30 + 2) >> 0x20) + + (int)((ulong)*(undefined8 *)(piVar49 + 2) >> 0x20), + (int)*(undefined8 *)(piVar30 + 2) + (int)*(undefined8 *)(piVar49 + 2)); + *(ulong *)piVar36 = + CONCAT44((int)((ulong)uVar61 >> 0x20) + (int)((ulong)uVar63 >> 0x20), + (int)uVar61 + (int)uVar63); + piVar30 = piVar30 + 4; + piVar36 = piVar36 + 4; + piVar49 = piVar49 + 4; + } while (uVar28 < uVar6); + uVar45 = (ulong)(uint)((int)uVar45 + iVar9); + if (uVar11 - uVar7 == iVar9) goto LAB_002097c0; + } + uVar31 = -(uVar45 >> 0x1f) & 0xfffffffc00000000 | uVar45 << 2; + *(int *)((long)__src + uVar31) = + *(int *)((long)__src + uVar31) + *(int *)((long)piVar38 + uVar31); + if ((int)uVar45 + 1 < (int)param_6) { + lVar39 = uVar31 + 4; + *(int *)((long)__src + lVar39) = + *(int *)((long)__src + lVar39) + *(int *)((long)piVar38 + lVar39); + if ((int)uVar45 + 2 < (int)param_6) { + lVar39 = uVar31 + 8; + *(int *)((long)__src + lVar39) = + *(int *)((long)__src + lVar39) + *(int *)((long)piVar38 + lVar39); + } + } + } + } +LAB_002097c0: + param_2 = param_2 + 1; + iVar51 = *(int *)(param_1 + 8); + iVar50 = *(int *)(param_1 + 0x18) + 1; + *(int *)(param_1 + 0x18) = iVar50; + } while (iVar50 < iVar51 + -1); + } +LAB_002097f0: + if (param_5 == 0) { + return; + } + iVar9 = param_6 - 3; + uVar10 = param_6 - 4 >> 2; + puVar4 = param_2 + (ulong)(param_5 - 1) + 1; + uVar8 = (uVar10 + 1) * 4; + if (iVar9 < 1) { + uVar8 = 0; + } + uVar11 = param_6 - uVar8; + lVar39 = (long)(int)uVar8; + lVar41 = lVar39 + 4; + uVar1 = uVar8 + 1; + uVar2 = uVar8 + 2; + uVar37 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar47 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + lVar40 = lVar41 * 4 + -0x10; + piVar35 = __src + lVar41; + piVar3 = __src + lVar39; + uVar6 = -((uint)((ulong)piVar3 >> 2) & 3) & 3; + uVar7 = uVar11; + if (uVar6 < uVar11) { + uVar7 = uVar6; + } + uVar6 = ((uVar11 - uVar7) - 4 >> 2) + 1; + iVar50 = uVar6 * 4; + puVar42 = (undefined8 *)*param_2; + piVar43 = (int *)param_2[1 - iVar51]; + if (dVar64 != 1.0) goto LAB_00209c58; + do { + lVar32 = 0; + if (0 < iVar9) { + do { + piVar30 = (int *)((long)param_3 + lVar32); + puVar48 = (undefined8 *)((long)piVar43 + lVar32); + uVar63 = ((undefined8 *)((long)puVar42 + lVar32))[1]; + uVar61 = *(undefined8 *)((long)puVar42 + lVar32); + piVar36 = (int *)((long)__src + lVar32); + lVar32 = lVar32 + 0x10; + iVar51 = *piVar36 + (int)uVar61; + iVar57 = piVar36[1] + (int)((ulong)uVar61 >> 0x20); + iVar58 = piVar36[2] + (int)uVar63; + iVar59 = piVar36[3] + (int)((ulong)uVar63 >> 0x20); + piVar30[2] = iVar58; + piVar30[3] = iVar59; + *piVar30 = iVar51; + piVar30[1] = iVar57; + uVar63 = puVar48[1]; + uVar61 = *puVar48; + piVar36[2] = iVar58 - (int)uVar63; + piVar36[3] = iVar59 - (int)((ulong)uVar63 >> 0x20); + *piVar36 = iVar51 - (int)uVar61; + piVar36[1] = iVar57 - (int)((ulong)uVar61 >> 0x20); + } while (lVar32 != ((ulong)uVar10 + 1) * 0x10); + } + if ((int)uVar8 < (int)param_6) { + piVar30 = param_3 + lVar41; + piVar36 = param_3 + lVar39; + piVar38 = (int *)((long)puVar42 + lVar41 * 4); + piVar49 = (int *)((long)puVar42 + lVar40); + piVar5 = piVar43 + lVar39; + if (((((uVar11 < 8 || piVar3 < piVar30 && piVar36 < piVar35) || + piVar3 < piVar38 && piVar49 < piVar35) || piVar36 < piVar38 && piVar49 < piVar30) || + piVar3 < piVar43 + lVar41 && piVar5 < piVar35) || + (piVar36 < piVar43 + lVar41 && piVar5 < piVar30)) { + lVar32 = 0; + do { + iVar51 = *(int *)((long)piVar3 + lVar32) + *(int *)((long)piVar49 + lVar32); + *(int *)((long)piVar36 + lVar32) = iVar51; + *(int *)((long)piVar3 + lVar32) = iVar51 - *(int *)((long)piVar5 + lVar32); + lVar32 = lVar32 + 4; + } while (lVar32 != ((ulong)((param_6 - 1) - uVar8) + 1) * 4); + } + else { + if (uVar7 == 0) { + uVar45 = (ulong)uVar8; + } + else { + iVar51 = __src[lVar39] + *(int *)((long)puVar42 + lVar39 * 4); + param_3[lVar39] = iVar51; + __src[lVar39] = iVar51 - piVar43[lVar39]; + if (uVar7 == 1) { + uVar45 = (ulong)uVar1; + } + else { + iVar51 = *(int *)((long)__src + uVar37) + *(int *)((long)puVar42 + uVar37); + *(int *)((long)param_3 + uVar37) = iVar51; + *(int *)((long)__src + uVar37) = iVar51 - *(int *)((long)piVar43 + uVar37); + if (uVar7 == 3) { + uVar45 = (ulong)(uVar8 + 3); + iVar51 = *(int *)((long)__src + uVar47) + *(int *)((long)puVar42 + uVar47); + *(int *)((long)param_3 + uVar47) = iVar51; + *(int *)((long)__src + uVar47) = iVar51 - *(int *)((long)piVar43 + uVar47); + } + else { + uVar45 = (ulong)uVar2; + } + } + } + if (2 < (uVar11 - 1) - uVar7) { + lVar32 = 0; + uVar28 = 0; + do { + uVar28 = uVar28 + 1; + lVar33 = lVar32 + lVar40 + (ulong)uVar7 * 4; + lVar32 = lVar32 + 0x10; + piVar30 = (int *)((long)puVar42 + lVar33); + piVar36 = (int *)((long)param_3 + lVar33); + piVar38 = (int *)((long)__src + lVar33); + iVar51 = *piVar30 + (int)*(undefined8 *)piVar38; + iVar57 = piVar30[1] + (int)((ulong)*(undefined8 *)piVar38 >> 0x20); + iVar58 = piVar30[2] + (int)*(undefined8 *)(piVar38 + 2); + iVar59 = piVar30[3] + (int)((ulong)*(undefined8 *)(piVar38 + 2) >> 0x20); + piVar36[2] = iVar58; + piVar36[3] = iVar59; + *piVar36 = iVar51; + piVar36[1] = iVar57; + uVar63 = ((undefined8 *)((long)piVar43 + lVar33))[1]; + uVar61 = *(undefined8 *)((long)piVar43 + lVar33); + piVar38[2] = iVar58 - (int)uVar63; + piVar38[3] = iVar59 - (int)((ulong)uVar63 >> 0x20); + *piVar38 = iVar51 - (int)uVar61; + piVar38[1] = iVar57 - (int)((ulong)uVar61 >> 0x20); + } while (uVar28 < uVar6); + uVar45 = (ulong)(uint)((int)uVar45 + iVar50); + if (iVar50 == uVar11 - uVar7) goto joined_r0x00209c2c; + } + uVar31 = -(uVar45 >> 0x1f) & 0xfffffffc00000000 | uVar45 << 2; + iVar51 = *(int *)((long)__src + uVar31) + *(int *)((long)puVar42 + uVar31); + *(int *)((long)param_3 + uVar31) = iVar51; + *(int *)((long)__src + uVar31) = iVar51 - *(int *)((long)piVar43 + uVar31); + if ((int)uVar45 + 1 < (int)param_6) { + lVar32 = uVar31 + 4; + iVar51 = *(int *)((long)__src + lVar32) + *(int *)((long)puVar42 + lVar32); + *(int *)((long)param_3 + lVar32) = iVar51; + *(int *)((long)__src + lVar32) = iVar51 - *(int *)((long)piVar43 + lVar32); + if ((int)uVar45 + 2 < (int)param_6) { + lVar32 = uVar31 + 8; + iVar51 = *(int *)((long)__src + lVar32) + *(int *)((long)puVar42 + lVar32); + *(int *)((long)param_3 + lVar32) = iVar51; + *(int *)((long)__src + lVar32) = iVar51 - *(int *)((long)piVar43 + lVar32); + } + } + } + } +joined_r0x00209c2c: + while( true ) { + param_2 = param_2 + 1; + if (param_2 == puVar4) { + s_sumCount____ksize_1_0045d530[0] = (char)s_sumCount____ksize_1_0045d530._0_8_; + s_sumCount____ksize_1_0045d530[1] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,1); + s_sumCount____ksize_1_0045d530[2] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,2); + s_sumCount____ksize_1_0045d530[3] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,3); + s_sumCount____ksize_1_0045d530[4] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,4); + s_sumCount____ksize_1_0045d530[5] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,5); + s_sumCount____ksize_1_0045d530[6] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,6); + s_sumCount____ksize_1_0045d530[7] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,7); + s_sumCount____ksize_1_0045d530[8] = (char)s_sumCount____ksize_1_0045d530._8_8_; + s_sumCount____ksize_1_0045d530[9] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,1); + s_sumCount____ksize_1_0045d530[10] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,2); + s_sumCount____ksize_1_0045d530[0xb] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,3); + s_sumCount____ksize_1_0045d530[0xc] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,4); + s_sumCount____ksize_1_0045d530[0xd] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,5); + s_sumCount____ksize_1_0045d530[0xe] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,6); + s_sumCount____ksize_1_0045d530[0xf] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,7); + s_sumCount____ksize_1_0045d530[0x10] = (char)s_sumCount____ksize_1_0045d530._16_2_; + s_sumCount____ksize_1_0045d530[0x11] = SUB21(s_sumCount____ksize_1_0045d530._16_2_,1); + return; + } + param_3 = (int *)((long)param_3 + (long)param_4); + puVar42 = (undefined8 *)*param_2; + piVar43 = (int *)param_2[1 - *(int *)(param_1 + 8)]; + if (dVar64 == 1.0) break; +LAB_00209c58: + fVar52 = (float)dVar64; + if (iVar9 < 1) { + uVar45 = 0; + } + else { + uVar45 = 0; + piVar30 = piVar43; + piVar36 = param_3; + piVar38 = __src; + puVar48 = puVar42; + do { + iVar51 = *piVar38 + (int)*puVar48; + iVar57 = piVar38[1] + (int)((ulong)*puVar48 >> 0x20); + iVar58 = piVar38[2] + (int)puVar48[1]; + iVar59 = piVar38[3] + (int)((ulong)puVar48[1] >> 0x20); + auVar54._4_4_ = iVar57; + auVar54._0_4_ = iVar51; + auVar54._8_4_ = iVar58; + auVar54._12_4_ = iVar59; + auVar54 = NEON_scvtf(auVar54,4); + auVar55._0_8_ = CONCAT44(fVar52 * auVar54._4_4_,fVar52 * auVar54._0_4_); + auVar55._8_4_ = fVar52 * auVar54._8_4_; + auVar55._12_4_ = fVar52 * auVar54._12_4_; + if ((DAT_00531ed0 & 1) == 0) { + uVar61 = auVar55._8_8_; + iVar29 = __cxa_guard_acquire(&DAT_00531ed0); + auVar55._8_8_ = uVar61; + if (iVar29 != 0) { + auVar56._8_4_ = 0x80000000; + auVar56._0_8_ = 0x8000000080000000; + auVar56._12_4_ = 0x80000000; + uRam0000000000531eb8 = auVar56._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar29 = __cxa_guard_acquire(&DAT_00531ec8), iVar29 != 0)) { + auVar53._8_4_ = 0x3f000000; + auVar53._0_8_ = 0x3f0000003f000000; + auVar53._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar53._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + uVar28 = (int)uVar45 + 4; + uVar45 = (ulong)uVar28; + puVar48 = puVar48 + 2; + uVar31 = (ulong)_DAT_00531eb0 >> 0x20; + uVar44 = (ulong)_DAT_00531eb0 >> 0x28; + uVar13 = (ulong)_DAT_00531eb0 >> 0x30; + uVar14 = (ulong)_DAT_00531eb0 >> 0x38; + uVar15 = (ulong)uRam0000000000531eb8 >> 0x20; + uVar16 = (ulong)uRam0000000000531eb8 >> 0x28; + uVar17 = (ulong)uRam0000000000531eb8 >> 0x30; + uVar18 = (ulong)uRam0000000000531eb8 >> 0x38; + fVar60 = (float)CONCAT13(auVar55[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar55[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar55[1] & (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> 8), + auVar55[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0))); + uVar19 = (ulong)_DAT_00531ea0 >> 0x20; + uVar20 = (ulong)_DAT_00531ea0 >> 0x28; + uVar21 = (ulong)_DAT_00531ea0 >> 0x30; + uVar22 = (ulong)_DAT_00531ea0 >> 0x38; + fVar62 = (float)CONCAT13(auVar55[0xb] & (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar55[10] & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar55[9] & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar55[8] & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8))); + uVar23 = (ulong)uRam0000000000531ea8 >> 0x20; + uVar24 = (ulong)uRam0000000000531ea8 >> 0x28; + uVar25 = (ulong)uRam0000000000531ea8 >> 0x30; + uVar26 = (ulong)uRam0000000000531ea8 >> 0x38; + piVar36[2] = (int)(auVar55._8_4_ + fVar62); + piVar36[3] = (int)(auVar55._12_4_ + + (float)(CONCAT17(auVar55[0xf] & (byte)uVar18 | (byte)uVar26, + CONCAT16(auVar55[0xe] & (byte)uVar17 | (byte)uVar25, + CONCAT15(auVar55[0xd] & (byte)uVar16 | + (byte)uVar24, + CONCAT14(auVar55[0xc] & (byte)uVar15 + | (byte)uVar23,fVar62)))) >> + 0x20)); + *piVar36 = (int)(auVar55._0_4_ + fVar60); + piVar36[1] = (int)(auVar55._4_4_ + + (float)(CONCAT17(auVar55[7] & (byte)uVar14 | (byte)uVar22, + CONCAT16(auVar55[6] & (byte)uVar13 | (byte)uVar21, + CONCAT15(auVar55[5] & (byte)uVar44 | + (byte)uVar20, + CONCAT14(auVar55[4] & (byte)uVar31 | + (byte)uVar19,fVar60)))) >> + 0x20)); + iVar29 = *piVar30; + iVar12 = piVar30[1]; + *(ulong *)(piVar38 + 2) = CONCAT44(iVar59 - piVar30[3],iVar58 - piVar30[2]); + *(ulong *)piVar38 = CONCAT44(iVar57 - iVar12,iVar51 - iVar29); + piVar30 = piVar30 + 4; + piVar36 = piVar36 + 4; + piVar38 = piVar38 + 4; + } while ((int)uVar28 < iVar9); + } + if ((int)uVar45 < (int)param_6) { + uVar31 = -(uVar45 >> 0x1f) & 0xfffffffc00000000 | uVar45 << 2; + lVar32 = 0; + do { + iVar51 = *(int *)((long)__src + lVar32 + uVar31) + + *(int *)((long)puVar42 + lVar32 + uVar31); + lVar33 = lrint(dVar64 * (double)iVar51); + *(int *)((long)param_3 + lVar32 + uVar31) = (int)lVar33; + *(int *)((long)__src + lVar32 + uVar31) = + iVar51 - *(int *)((long)piVar43 + lVar32 + uVar31); + lVar32 = lVar32 + 4; + } while (lVar32 != ((ulong)((param_6 - 1) - (int)uVar45) + 1) * 4); + } + } + } while( true ); +} + + +================================================================== + +### FUNC 0020a110 (4688 bytes) name=FUN_0020a110 + +void FUN_0020a110(long param_1,undefined8 *param_2,double *param_3,int param_4,int param_5, + uint param_6) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int iVar6; + int iVar7; + long lVar8; + undefined8 *puVar9; + int *piVar10; + int *piVar11; + int *piVar12; + int iVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + int iVar18; + uint uVar19; + int iVar20; + char cVar21; + long lVar22; + int *piVar23; + char *pcVar24; + void *__dest; + int *piVar25; + uint uVar26; + long lVar27; + int *piVar28; + int *piVar29; + int *piVar30; + long lVar31; + int *piVar32; + ulong uVar33; + void *__src; + size_t __n; + int *piVar34; + double *pdVar35; + int *piVar36; + undefined8 *puVar37; + ulong uVar38; + ulong uVar39; + ulong uVar40; + int *piVar41; + int *__src_00; + uint uVar42; + ulong uVar43; + size_t sVar44; + long lVar45; + int *piVar46; + int *piVar47; + undefined8 uVar48; + long lVar49; + int iVar50; + int iVar51; + int iVar52; + int iVar53; + int iVar54; + double dVar55; + undefined1 in_q9 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + int iVar60; + undefined8 uVar61; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + undefined1 auVar64 [16]; + undefined1 auVar65 [16]; + undefined1 auVar66 [16]; + undefined1 auVar67 [16]; + long lVar68; + long lVar69; + long lVar70; + int iVar71; + undefined8 local_10; + undefined8 local_8; + + __src_00 = *(int **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + dVar55 = *(double *)(param_1 + 0x10); + sVar44 = (long)__src - (long)__src_00; + uVar33 = (long)sVar44 >> 2; + if ((uint)uVar33 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar50 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar50 + -1) { + local_10 = 0; + local_8 = 0; + pcVar24 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar21 = s_sumCount____ksize_1_0045d530[0x12]; + uVar61 = s_sumCount____ksize_1_0045d530._8_8_; + uVar48 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar24 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar24[0x12] = cVar21; + *(undefined8 *)pcVar24 = uVar48; + *(undefined8 *)(pcVar24 + 8) = uVar61; + cv::error(-0xd7,(String *)&local_10, + "void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int) [with ST = int; T = double; uchar = unsigned char]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x99); + cv::String::deallocate((String *)&local_10); + iVar50 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar50 + -1; + goto LAB_0020a4f0; + } + sVar44 = -(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2; + } + else { + uVar43 = (ulong)(int)param_6; + if (uVar33 < uVar43) { + uVar40 = uVar43 - uVar33; + if (uVar40 != 0) { + auVar63._8_8_ = 0; + auVar63._0_8_ = param_1 + 0x20; + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 2) < uVar40) { + if (0x3fffffffffffffff - uVar33 < uVar40) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar39 = uVar40; + if (uVar40 < uVar33) { + uVar39 = uVar33; + } + uVar39 = uVar39 + uVar33; + auVar66._8_8_ = in_q9._8_8_; + if ((uVar39 < uVar33) || (0x3fffffffffffffff < uVar39)) { + auVar66 = ZEXT816(0xfffffffffffffffc); +LAB_0020b310: + piVar25 = operator_new(auVar66._0_8_); + __src_00 = *(int **)(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar33 = (long)__n >> 2; + } + else { + if (uVar39 != 0) { + auVar66._0_8_ = NEON_shl(uVar39,2); + goto LAB_0020b310; + } + auVar66 = ZEXT816(0); + piVar25 = (int *)0x0; + __n = sVar44; + } + memset((void *)((long)piVar25 + sVar44),0,uVar40 * 4); + if (uVar33 != 0) { + memmove(piVar25,__src_00,__n); + } + __dest = (void *)((long)piVar25 + uVar40 * 4 + __n); + sVar44 = *(long *)(auVar63._0_8_ + 8) - (long)__src; + if ((long)sVar44 >> 2 != 0) { + __dest = memmove(__dest,__src,sVar44); + } + lVar45 = auVar66._0_8_; + lVar22 = auVar63._0_8_; + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + lVar45 = auVar66._0_8_; + lVar22 = auVar63._0_8_; + } + *(int **)(param_1 + 0x20) = piVar25; + *(size_t *)(lVar22 + 8) = (long)__dest + sVar44; + *(long *)(lVar22 + 0x10) = (long)piVar25 + lVar45; + __src_00 = piVar25; + } + else { + memset(__src,0,uVar40 * 4); + *(void **)(auVar63._0_8_ + 8) = (void *)((long)__src + uVar40 * 4); + } + } + } + else if (uVar43 < uVar33) { + *(int **)(param_1 + 0x28) = __src_00 + uVar43; + } + sVar44 = uVar43 << 2; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar44); + iVar50 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) < iVar50 + -1) { + uVar17 = param_6 - 2; + iVar18 = param_6 - 1; + uVar16 = uVar17 >> 1; + uVar2 = uVar16 + 1; + uVar3 = (uVar16 - 1 >> 1) + 1; + uVar14 = uVar2 * 2; + uVar15 = uVar3 * 4; + if (uVar17 < 2) { + uVar15 = 0; + } + if (iVar18 < 1) { + uVar14 = 0; + } + uVar19 = param_6 - uVar14; + lVar45 = (long)(int)uVar14; + uVar4 = uVar14 + 1; + uVar5 = uVar14 + 2; + uVar33 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + puVar9 = (undefined8 *)((long)__src_00 + uVar33); + uVar43 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar4 << 2; + piVar25 = (int *)((long)__src_00 + uVar43); + uVar40 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + piVar10 = (int *)((long)__src_00 + uVar40); + piVar11 = __src_00 + lVar45; + uVar15 = -((uint)((ulong)piVar11 >> 2) & 3) & 3; + uVar42 = uVar19; + if (uVar15 < uVar19) { + uVar42 = uVar15; + } + uVar15 = ((uVar19 - uVar42) - 4 >> 2) + 1; + iVar60 = uVar15 * 4; + do { + piVar34 = (int *)*param_2; + if (0 < iVar18) { + piVar29 = __src_00; + piVar32 = piVar34; + if ((__src_00 < piVar34 + 8 && piVar34 < __src_00 + 8) || (uVar2 < 4)) { + do { + piVar46 = piVar29 + 2; + *(ulong *)piVar29 = + CONCAT44((int)((ulong)*(undefined8 *)piVar29 >> 0x20) + + (int)((ulong)*(undefined8 *)piVar32 >> 0x20), + (int)*(undefined8 *)piVar29 + (int)*(undefined8 *)piVar32); + piVar29 = piVar46; + piVar32 = piVar32 + 2; + } while (piVar46 != __src_00 + ((ulong)uVar16 + 1) * 2); + } + else { + if (1 < uVar17) { + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + uVar48 = *(undefined8 *)piVar32; + *(ulong *)(piVar29 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar29 + 2) >> 0x20) + + (int)((ulong)*(undefined8 *)(piVar32 + 2) >> 0x20), + (int)*(undefined8 *)(piVar29 + 2) + (int)*(undefined8 *)(piVar32 + 2)); + *(ulong *)piVar29 = + CONCAT44((int)((ulong)*(undefined8 *)piVar29 >> 0x20) + + (int)((ulong)uVar48 >> 0x20),(int)*(undefined8 *)piVar29 + (int)uVar48); + piVar29 = piVar29 + 4; + piVar32 = piVar32 + 4; + } while (uVar26 < uVar3); + if (uVar2 == uVar3 * 2) goto LAB_0020a3a8; + } + uVar48 = *puVar9; + uVar61 = *(undefined8 *)((long)piVar34 + uVar33); + *puVar9 = CONCAT44((int)((ulong)uVar48 >> 0x20) + (int)((ulong)uVar61 >> 0x20), + (int)uVar48 + (int)uVar61); + } + } +LAB_0020a3a8: + if ((int)uVar14 < (int)param_6) { + if ((piVar11 < piVar34 + lVar45 + 4 && piVar34 + lVar45 < __src_00 + lVar45 + 4) || + (uVar19 < 8)) { + lVar22 = 0; + do { + *(int *)((long)piVar11 + lVar22) = + *(int *)((long)piVar11 + lVar22) + *(int *)((long)(piVar34 + lVar45) + lVar22); + lVar22 = lVar22 + 4; + } while (lVar22 != ((ulong)(iVar18 - uVar14) + 1) * 4); + } + else { + if (uVar42 == 0) { + uVar39 = (ulong)uVar14; + } + else { + __src_00[lVar45] = __src_00[lVar45] + piVar34[lVar45]; + if (uVar42 == 1) { + uVar39 = (ulong)uVar4; + } + else { + *piVar25 = *piVar25 + *(int *)((long)piVar34 + uVar43); + if (uVar42 == 3) { + uVar39 = (ulong)(uVar14 + 3); + *piVar10 = *piVar10 + *(int *)((long)piVar34 + uVar40); + } + else { + uVar39 = (ulong)uVar5; + } + } + } + if (2 < (uVar19 - 1) - uVar42) { + uVar26 = 0; + piVar29 = __src_00 + lVar45 + (ulong)uVar42; + piVar32 = __src_00 + (ulong)uVar42 + lVar45; + piVar46 = piVar34 + (ulong)uVar42 + lVar45; + do { + uVar61 = *(undefined8 *)piVar46; + uVar26 = uVar26 + 1; + uVar48 = *(undefined8 *)piVar29; + *(ulong *)(piVar32 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar29 + 2) >> 0x20) + + (int)((ulong)*(undefined8 *)(piVar46 + 2) >> 0x20), + (int)*(undefined8 *)(piVar29 + 2) + (int)*(undefined8 *)(piVar46 + 2)); + *(ulong *)piVar32 = + CONCAT44((int)((ulong)uVar48 >> 0x20) + (int)((ulong)uVar61 >> 0x20), + (int)uVar48 + (int)uVar61); + piVar29 = piVar29 + 4; + piVar32 = piVar32 + 4; + piVar46 = piVar46 + 4; + } while (uVar26 < uVar15); + uVar39 = (ulong)(uint)((int)uVar39 + iVar60); + if (uVar19 - uVar42 == iVar60) goto LAB_0020a4cc; + } + uVar38 = -(uVar39 >> 0x1f) & 0xfffffffc00000000 | uVar39 << 2; + *(int *)((long)__src_00 + uVar38) = + *(int *)((long)__src_00 + uVar38) + *(int *)((long)piVar34 + uVar38); + if ((int)uVar39 + 1 < (int)param_6) { + lVar22 = uVar38 + 4; + *(int *)((long)__src_00 + lVar22) = + *(int *)((long)__src_00 + lVar22) + *(int *)((long)piVar34 + lVar22); + if ((int)uVar39 + 2 < (int)param_6) { + lVar22 = uVar38 + 8; + *(int *)((long)__src_00 + lVar22) = + *(int *)((long)__src_00 + lVar22) + *(int *)((long)piVar34 + lVar22); + } + } + } + } +LAB_0020a4cc: + param_2 = param_2 + 1; + iVar50 = *(int *)(param_1 + 8); + iVar6 = *(int *)(param_1 + 0x18) + 1; + *(int *)(param_1 + 0x18) = iVar6; + } while (iVar6 < iVar50 + -1); + } +LAB_0020a4f0: + if (param_5 == 0) { + return; + } + uVar14 = param_6 - 2; + iVar6 = param_6 - 1; + piVar25 = __src_00 + 8; + uVar15 = uVar14 >> 1; + puVar9 = param_2 + (ulong)(param_5 - 1) + 1; + uVar2 = uVar15 + 1; + uVar3 = (uVar15 - 1 >> 1) + 1; + iVar60 = uVar2 * 2; + iVar18 = uVar3 * 4; + if (uVar14 < 2) { + iVar18 = 0; + } + if (iVar6 < 1) { + iVar60 = 0; + } + lVar69 = NEON_shl((ulong)uVar2,4); + uVar4 = param_6 - iVar60; + lVar22 = (long)iVar18; + iVar18 = iVar60 + 1; + lVar27 = (long)iVar60; + lVar45 = lVar27 + 4; + iVar7 = iVar60 + 2; + piVar10 = __src_00 + lVar27; + lVar49 = NEON_shl(lVar22,3); + uVar16 = -((uint)((ulong)piVar10 >> 2) & 3) & 3; + uVar17 = uVar4; + if (uVar16 < uVar4) { + uVar17 = uVar16; + } + uVar5 = (uVar4 - 1) - uVar17; + lVar68 = NEON_shl(lVar27,3); + iVar20 = uVar4 - uVar17; + lVar1 = lVar68 + (ulong)uVar17 * 8; + uVar16 = (iVar20 - 4U >> 2) + 1; + piVar11 = __src_00 + lVar22; + lVar70 = NEON_shl(lVar27 + (ulong)uVar4,3); + piVar34 = __src_00 + lVar22 + 1; + piVar29 = __src_00 + lVar45; + piVar32 = __src_00 + lVar27; + piVar46 = __src_00 + iVar18; + piVar12 = __src_00 + iVar7; + iVar71 = uVar16 * 4; + lVar8 = (ulong)(uint)(iVar6 - iVar60) + 1; + piVar28 = (int *)*param_2; + piVar30 = (int *)param_2[1 - iVar50]; + do { + if (dVar55 == 1.0) { + if (0 < iVar6) { + if (((uVar2 < 3 || + __src_00 < (int *)((long)param_3 + lVar69) && param_3 < __src_00 + (ulong)uVar2 * 2) || + __src_00 < piVar28 + 8 && piVar28 < piVar25) || + (__src_00 < piVar30 + 8 && piVar30 < piVar25)) { + pdVar35 = param_3; + piVar23 = __src_00; + piVar36 = piVar30 + 1; + piVar41 = piVar28 + 1; + do { + iVar50 = piVar41[-1]; + iVar51 = *piVar23; + piVar47 = piVar41 + 2; + iVar13 = *piVar41; + iVar52 = piVar23[1]; + iVar53 = *piVar36; + iVar54 = piVar36[-1]; + *pdVar35 = (double)(iVar51 + iVar50); + pdVar35[1] = (double)(iVar52 + iVar13); + *piVar23 = (iVar51 + iVar50) - iVar54; + piVar23[1] = (iVar52 + iVar13) - iVar53; + pdVar35 = pdVar35 + 2; + piVar23 = piVar23 + 2; + piVar36 = piVar36 + 2; + piVar41 = piVar47; + } while (piVar47 != piVar28 + (ulong)uVar15 * 2 + 3); + } + else { + if (1 < uVar14) { + uVar42 = 0; + pdVar35 = param_3; + piVar23 = piVar30; + piVar36 = piVar28; + piVar41 = __src_00; + do { + uVar42 = uVar42 + 1; + uVar61 = *(undefined8 *)(piVar23 + 2); + uVar48 = *(undefined8 *)piVar23; + iVar50 = *piVar41 + (int)*(undefined8 *)piVar36; + iVar51 = piVar41[1] + (int)((ulong)*(undefined8 *)piVar36 >> 0x20); + iVar52 = piVar41[2] + (int)*(undefined8 *)(piVar36 + 2); + iVar53 = piVar41[3] + (int)((ulong)*(undefined8 *)(piVar36 + 2) >> 0x20); + auVar62._0_8_ = (long)iVar50; + auVar62._8_8_ = (long)iVar51; + auVar56._0_8_ = (long)iVar52; + auVar56._8_8_ = (long)iVar53; + auVar63 = NEON_scvtf(auVar62,8); + pdVar35[1] = auVar63._8_8_; + *pdVar35 = auVar63._0_8_; + auVar63 = NEON_scvtf(auVar56,8); + pdVar35[3] = auVar63._8_8_; + pdVar35[2] = auVar63._0_8_; + *(ulong *)(piVar41 + 2) = + CONCAT44(iVar53 - (int)((ulong)uVar61 >> 0x20),iVar52 - (int)uVar61); + *(ulong *)piVar41 = + CONCAT44(iVar51 - (int)((ulong)uVar48 >> 0x20),iVar50 - (int)uVar48); + pdVar35 = pdVar35 + 4; + piVar23 = piVar23 + 4; + piVar36 = piVar36 + 4; + piVar41 = piVar41 + 4; + } while (uVar42 < uVar3); + if (uVar2 == uVar3 * 2) goto LAB_0020a874; + } + iVar50 = *piVar11; + iVar52 = piVar28[lVar22]; + iVar53 = piVar28[lVar22 + 1]; + iVar51 = *piVar34; + iVar54 = piVar30[lVar22 + 1]; + iVar13 = piVar30[lVar22]; + *(double *)((long)param_3 + lVar49) = (double)(iVar50 + iVar52); + *(double *)((long)param_3 + lVar49 + 8) = (double)(iVar51 + iVar53); + *piVar11 = (iVar50 + iVar52) - iVar13; + *piVar34 = (iVar51 + iVar53) - iVar54; + } + } +LAB_0020a874: + if (iVar60 < (int)param_6) { + pdVar35 = (double *)((long)param_3 + lVar68); + if (((uVar4 < 7 || + piVar10 < (int *)((long)param_3 + lVar70) && pdVar35 < __src_00 + lVar27 + (ulong)uVar4 + ) || piVar10 < piVar28 + lVar45 && piVar28 + lVar27 < piVar29) || + (piVar10 < piVar30 + lVar45 && piVar30 + lVar27 < piVar29)) { + lVar31 = 0; + do { + iVar51 = (piVar30 + lVar27)[lVar31]; + iVar50 = piVar10[lVar31] + (piVar28 + lVar27)[lVar31]; + pdVar35[lVar31] = (double)iVar50; + piVar10[lVar31] = iVar50 - iVar51; + lVar31 = lVar31 + 1; + } while (lVar8 != lVar31); + } + else { + iVar50 = iVar60; + if (uVar17 != 0) { + iVar51 = piVar30[lVar27]; + iVar50 = *piVar32; + iVar52 = piVar28[lVar27]; + *pdVar35 = (double)(iVar50 + iVar52); + *piVar32 = (iVar50 + iVar52) - iVar51; + iVar50 = iVar18; + if (uVar17 != 1) { + iVar51 = piVar30[iVar18]; + iVar50 = *piVar46; + iVar52 = piVar28[iVar18]; + param_3[iVar18] = (double)(iVar50 + iVar52); + *piVar46 = (iVar50 + iVar52) - iVar51; + iVar50 = iVar7; + if (uVar17 == 3) { + iVar51 = piVar28[iVar7]; + iVar50 = *piVar12; + iVar52 = piVar30[iVar7]; + param_3[iVar7] = (double)(iVar50 + iVar51); + *piVar12 = (iVar50 + iVar51) - iVar52; + iVar50 = iVar60 + 3; + } + } + if (uVar4 == uVar17) goto joined_r0x0020ab08; + } + if (2 < uVar5) { + uVar42 = 0; + piVar23 = __src_00 + (ulong)uVar17 + lVar27; + piVar36 = __src_00 + lVar27 + (ulong)uVar17; + puVar37 = (undefined8 *)((long)param_3 + lVar1); + piVar41 = piVar28 + (ulong)uVar17 + lVar27; + piVar47 = piVar30 + (ulong)uVar17 + lVar27; + do { + uVar42 = uVar42 + 1; + uVar61 = *(undefined8 *)(piVar47 + 2); + uVar48 = *(undefined8 *)piVar47; + iVar51 = *piVar41 + (int)*(undefined8 *)piVar36; + iVar52 = piVar41[1] + (int)((ulong)*(undefined8 *)piVar36 >> 0x20); + iVar53 = piVar41[2] + (int)*(undefined8 *)(piVar36 + 2); + iVar54 = piVar41[3] + (int)((ulong)*(undefined8 *)(piVar36 + 2) >> 0x20); + auVar64._0_8_ = (long)iVar51; + auVar64._8_8_ = (long)iVar52; + auVar57._0_8_ = (long)iVar53; + auVar57._8_8_ = (long)iVar54; + auVar63 = NEON_scvtf(auVar64,8); + puVar37[1] = auVar63._8_8_; + *puVar37 = auVar63._0_8_; + auVar63 = NEON_scvtf(auVar57,8); + puVar37[3] = auVar63._8_8_; + puVar37[2] = auVar63._0_8_; + *(ulong *)(piVar23 + 2) = + CONCAT44(iVar54 - (int)((ulong)uVar61 >> 0x20),iVar53 - (int)uVar61); + *(ulong *)piVar23 = + CONCAT44(iVar52 - (int)((ulong)uVar48 >> 0x20),iVar51 - (int)uVar48); + piVar23 = piVar23 + 4; + piVar36 = piVar36 + 4; + puVar37 = puVar37 + 4; + piVar41 = piVar41 + 4; + piVar47 = piVar47 + 4; + } while (uVar42 < uVar16); + iVar50 = iVar50 + iVar71; + if (iVar71 == iVar20) goto joined_r0x0020ab08; + } + iVar51 = iVar50 + 1; + iVar52 = __src_00[iVar50]; + iVar53 = piVar28[iVar50]; + iVar54 = piVar30[iVar50]; + param_3[iVar50] = (double)(iVar52 + iVar53); + __src_00[iVar50] = (iVar52 + iVar53) - iVar54; + if (iVar51 < (int)param_6) { + iVar50 = iVar50 + 2; + iVar52 = piVar28[iVar51]; + iVar53 = __src_00[iVar51]; + iVar54 = piVar30[iVar51]; + param_3[iVar51] = (double)(iVar53 + iVar52); + __src_00[iVar51] = (iVar53 + iVar52) - iVar54; + if (iVar50 < (int)param_6) { + iVar51 = __src_00[iVar50]; + iVar52 = piVar28[iVar50]; + iVar53 = piVar30[iVar50]; + param_3[iVar50] = (double)(iVar51 + iVar52); + __src_00[iVar50] = (iVar51 + iVar52) - iVar53; + } + } + } + } + } + else { + if (0 < iVar6) { + if (((uVar2 < 3 || + __src_00 < (int *)((long)param_3 + lVar69) && param_3 < __src_00 + (ulong)uVar2 * 2) || + __src_00 < piVar28 + 8 && piVar28 < piVar25) || + (__src_00 < piVar30 + 8 && piVar30 < piVar25)) { + piVar23 = __src_00; + piVar36 = piVar30 + 1; + pdVar35 = param_3; + piVar41 = piVar28 + 1; + do { + iVar50 = piVar41[-1]; + iVar51 = piVar23[1]; + piVar47 = piVar41 + 2; + iVar13 = *piVar41; + iVar52 = *piVar23; + iVar53 = piVar36[-1]; + iVar54 = *piVar36; + pdVar35[1] = dVar55 * (double)(iVar51 + iVar13); + *pdVar35 = dVar55 * (double)(iVar52 + iVar50); + *piVar23 = (iVar52 + iVar50) - iVar53; + piVar23[1] = (iVar51 + iVar13) - iVar54; + piVar23 = piVar23 + 2; + piVar36 = piVar36 + 2; + pdVar35 = pdVar35 + 2; + piVar41 = piVar47; + } while (piVar47 != piVar28 + (ulong)uVar15 * 2 + 3); + } + else { + if (1 < uVar14) { + uVar42 = 0; + pdVar35 = param_3; + piVar23 = piVar30; + piVar36 = piVar28; + piVar41 = __src_00; + do { + uVar42 = uVar42 + 1; + uVar61 = *(undefined8 *)(piVar23 + 2); + uVar48 = *(undefined8 *)piVar23; + iVar50 = *piVar41 + (int)*(undefined8 *)piVar36; + iVar51 = piVar41[1] + (int)((ulong)*(undefined8 *)piVar36 >> 0x20); + iVar52 = piVar41[2] + (int)*(undefined8 *)(piVar36 + 2); + iVar53 = piVar41[3] + (int)((ulong)*(undefined8 *)(piVar36 + 2) >> 0x20); + auVar65._0_8_ = (long)iVar50; + auVar65._8_8_ = (long)iVar51; + auVar58._0_8_ = (long)iVar52; + auVar58._8_8_ = (long)iVar53; + auVar66 = NEON_scvtf(auVar65,8); + auVar63 = NEON_scvtf(auVar58,8); + pdVar35[1] = dVar55 * auVar66._8_8_; + *pdVar35 = dVar55 * auVar66._0_8_; + pdVar35[3] = dVar55 * auVar63._8_8_; + pdVar35[2] = dVar55 * auVar63._0_8_; + *(ulong *)(piVar41 + 2) = + CONCAT44(iVar53 - (int)((ulong)uVar61 >> 0x20),iVar52 - (int)uVar61); + *(ulong *)piVar41 = + CONCAT44(iVar51 - (int)((ulong)uVar48 >> 0x20),iVar50 - (int)uVar48); + pdVar35 = pdVar35 + 4; + piVar23 = piVar23 + 4; + piVar36 = piVar36 + 4; + piVar41 = piVar41 + 4; + } while (uVar42 < uVar3); + if (uVar2 == uVar3 * 2) goto LAB_0020ac68; + } + iVar50 = *piVar11; + iVar52 = piVar28[lVar22]; + iVar53 = piVar28[lVar22 + 1]; + iVar51 = *piVar34; + iVar54 = piVar30[lVar22 + 1]; + iVar13 = piVar30[lVar22]; + *(double *)((long)param_3 + lVar49) = dVar55 * (double)(iVar50 + iVar52); + *(double *)((long)param_3 + lVar49 + 8) = dVar55 * (double)(iVar51 + iVar53); + *piVar11 = (iVar50 + iVar52) - iVar13; + *piVar34 = (iVar51 + iVar53) - iVar54; + } + } +LAB_0020ac68: + if (iVar60 < (int)param_6) { + pdVar35 = (double *)((long)param_3 + lVar68); + if (((uVar4 < 7 || + piVar10 < (int *)((long)param_3 + lVar70) && pdVar35 < __src_00 + lVar27 + (ulong)uVar4 + ) || piVar10 < piVar28 + lVar45 && piVar28 + lVar27 < piVar29) || + (piVar10 < piVar30 + lVar45 && piVar30 + lVar27 < piVar29)) { + lVar31 = 0; + do { + iVar51 = (piVar30 + lVar27)[lVar31]; + iVar50 = piVar10[lVar31] + (piVar28 + lVar27)[lVar31]; + pdVar35[lVar31] = dVar55 * (double)iVar50; + piVar10[lVar31] = iVar50 - iVar51; + lVar31 = lVar31 + 1; + } while (lVar31 != lVar8); + } + else { + iVar50 = iVar60; + if (uVar17 != 0) { + iVar51 = piVar30[lVar27]; + iVar50 = *piVar32; + iVar52 = piVar28[lVar27]; + *pdVar35 = dVar55 * (double)(iVar50 + iVar52); + *piVar32 = (iVar50 + iVar52) - iVar51; + iVar50 = iVar18; + if (uVar17 != 1) { + iVar51 = piVar30[iVar18]; + iVar50 = *piVar46; + iVar52 = piVar28[iVar18]; + param_3[iVar18] = dVar55 * (double)(iVar50 + iVar52); + *piVar46 = (iVar50 + iVar52) - iVar51; + iVar50 = iVar7; + if (uVar17 == 3) { + iVar51 = piVar28[iVar7]; + iVar50 = *piVar12; + iVar52 = piVar30[iVar7]; + param_3[iVar7] = dVar55 * (double)(iVar50 + iVar51); + *piVar12 = (iVar50 + iVar51) - iVar52; + iVar50 = iVar60 + 3; + } + } + if (uVar4 == uVar17) goto joined_r0x0020ab08; + } + if (2 < uVar5) { + uVar42 = 0; + piVar23 = __src_00 + lVar27 + (ulong)uVar17; + pdVar35 = (double *)((long)param_3 + lVar1); + piVar36 = piVar30 + (ulong)uVar17 + lVar27; + piVar41 = __src_00 + (ulong)uVar17 + lVar27; + piVar47 = piVar28 + (ulong)uVar17 + lVar27; + do { + uVar42 = uVar42 + 1; + uVar61 = *(undefined8 *)(piVar36 + 2); + uVar48 = *(undefined8 *)piVar36; + iVar51 = *piVar47 + (int)*(undefined8 *)piVar23; + iVar52 = piVar47[1] + (int)((ulong)*(undefined8 *)piVar23 >> 0x20); + iVar53 = piVar47[2] + (int)*(undefined8 *)(piVar23 + 2); + iVar54 = piVar47[3] + (int)((ulong)*(undefined8 *)(piVar23 + 2) >> 0x20); + auVar67._0_8_ = (long)iVar51; + auVar67._8_8_ = (long)iVar52; + auVar59._0_8_ = (long)iVar53; + auVar59._8_8_ = (long)iVar54; + auVar66 = NEON_scvtf(auVar67,8); + auVar63 = NEON_scvtf(auVar59,8); + pdVar35[1] = dVar55 * auVar66._8_8_; + *pdVar35 = dVar55 * auVar66._0_8_; + pdVar35[3] = dVar55 * auVar63._8_8_; + pdVar35[2] = dVar55 * auVar63._0_8_; + *(ulong *)(piVar41 + 2) = + CONCAT44(iVar54 - (int)((ulong)uVar61 >> 0x20),iVar53 - (int)uVar61); + *(ulong *)piVar41 = + CONCAT44(iVar52 - (int)((ulong)uVar48 >> 0x20),iVar51 - (int)uVar48); + piVar23 = piVar23 + 4; + pdVar35 = pdVar35 + 4; + piVar36 = piVar36 + 4; + piVar41 = piVar41 + 4; + piVar47 = piVar47 + 4; + } while (uVar42 < uVar16); + iVar50 = iVar50 + iVar71; + if (iVar71 == iVar20) goto joined_r0x0020ab08; + } + iVar51 = iVar50 + 1; + iVar52 = piVar28[iVar50]; + iVar53 = __src_00[iVar50]; + iVar54 = piVar30[iVar50]; + param_3[iVar50] = dVar55 * (double)(iVar53 + iVar52); + __src_00[iVar50] = (iVar53 + iVar52) - iVar54; + if (iVar51 < (int)param_6) { + iVar50 = iVar50 + 2; + iVar52 = piVar28[iVar51]; + iVar53 = __src_00[iVar51]; + iVar54 = piVar30[iVar51]; + param_3[iVar51] = dVar55 * (double)(iVar53 + iVar52); + __src_00[iVar51] = (iVar53 + iVar52) - iVar54; + if (iVar50 < (int)param_6) { + iVar51 = piVar28[iVar50]; + iVar52 = __src_00[iVar50]; + iVar53 = piVar30[iVar50]; + param_3[iVar50] = dVar55 * (double)(iVar52 + iVar51); + __src_00[iVar50] = (iVar52 + iVar51) - iVar53; + } + } + } + } + } +joined_r0x0020ab08: + param_2 = param_2 + 1; + if (param_2 == puVar9) { + s_sumCount____ksize_1_0045d530[0] = (char)s_sumCount____ksize_1_0045d530._0_8_; + s_sumCount____ksize_1_0045d530[1] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,1); + s_sumCount____ksize_1_0045d530[2] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,2); + s_sumCount____ksize_1_0045d530[3] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,3); + s_sumCount____ksize_1_0045d530[4] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,4); + s_sumCount____ksize_1_0045d530[5] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,5); + s_sumCount____ksize_1_0045d530[6] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,6); + s_sumCount____ksize_1_0045d530[7] = SUB81(s_sumCount____ksize_1_0045d530._0_8_,7); + s_sumCount____ksize_1_0045d530[8] = (char)s_sumCount____ksize_1_0045d530._8_8_; + s_sumCount____ksize_1_0045d530[9] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,1); + s_sumCount____ksize_1_0045d530[10] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,2); + s_sumCount____ksize_1_0045d530[0xb] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,3); + s_sumCount____ksize_1_0045d530[0xc] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,4); + s_sumCount____ksize_1_0045d530[0xd] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,5); + s_sumCount____ksize_1_0045d530[0xe] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,6); + s_sumCount____ksize_1_0045d530[0xf] = SUB81(s_sumCount____ksize_1_0045d530._8_8_,7); + s_sumCount____ksize_1_0045d530[0x10] = (char)s_sumCount____ksize_1_0045d530._16_2_; + s_sumCount____ksize_1_0045d530[0x11] = SUB21(s_sumCount____ksize_1_0045d530._16_2_,1); + return; + } + param_3 = (double *)((long)param_3 + (long)param_4); + piVar28 = (int *)*param_2; + piVar30 = (int *)param_2[1 - *(int *)(param_1 + 8)]; + } while( true ); +} + + +================================================================== + +### FUNC 0020b374 (2220 bytes) name=FUN_0020b374 + +void FUN_0020b374(long param_1,ulong *param_2,long param_3,int param_4,int param_5,uint param_6) + +{ + uint uVar1; + ulong uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + ulong uVar10; + undefined8 uVar11; + undefined8 uVar12; + char cVar13; + uint uVar14; + uint uVar15; + long lVar16; + long lVar17; + long lVar18; + long lVar19; + long lVar20; + double *pdVar21; + char *pcVar22; + void *__dest; + double *pdVar23; + uint uVar24; + double *pdVar25; + double *pdVar26; + ulong uVar27; + void *__src; + size_t __n; + int iVar28; + double *pdVar29; + int iVar30; + ulong *puVar31; + double *__src_00; + undefined1 *puVar32; + ulong uVar33; + size_t sVar34; + undefined1 *puVar35; + ulong uVar36; + long lVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + double dVar43; + int iVar44; + undefined8 local_10; + undefined8 local_8; + + __src_00 = *(double **)(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar34 = (long)__src - (long)__src_00; + uVar27 = (long)sVar34 >> 3; + dVar43 = *(double *)(param_1 + 0x10); + if ((uint)uVar27 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar28 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar28 + -1) { + local_10 = 0; + local_8 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar13 = s_sumCount____ksize_1_0045d530[0x12]; + uVar12 = s_sumCount____ksize_1_0045d530._8_8_; + uVar11 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar22 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar22[0x12] = cVar13; + *(undefined8 *)pcVar22 = uVar11; + *(undefined8 *)(pcVar22 + 8) = uVar12; + cv::error(-0xd7,(String *)&local_10, + "void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int) [with ST = double; T = unsigned char; uchar = unsigned char]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x99); + cv::String::deallocate((String *)&local_10); + iVar28 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar28 + -1; + goto LAB_0020b62c; + } + sVar34 = -(ulong)(param_6 >> 0x1f) & 0xfffffff800000000 | (ulong)param_6 << 3; + } + else { + uVar36 = (ulong)(int)param_6; + if (uVar27 < uVar36) { + uVar10 = uVar36 - uVar27; + if (uVar10 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 3) < uVar10) { + if (0x1fffffffffffffff - uVar27 < uVar10) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar2 = uVar10; + if (uVar10 < uVar27) { + uVar2 = uVar27; + } + uVar2 = uVar2 + uVar27; + if ((uVar2 < uVar27) || (0x1fffffffffffffff < uVar2)) { + uVar33 = 0xfffffffffffffff8; +LAB_0020bbd4: + pdVar23 = operator_new(uVar33); + __src_00 = *(double **)(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar27 = (long)__n >> 3; + } + else { + uVar33 = uVar2 * 8; + if (uVar2 != 0) goto LAB_0020bbd4; + uVar33 = 0; + pdVar23 = (double *)0x0; + __n = sVar34; + } + memset((void *)((long)pdVar23 + sVar34),0,uVar10 * 8); + if (uVar27 != 0) { + memmove(pdVar23,__src_00,__n); + } + __dest = (void *)((long)pdVar23 + uVar10 * 8 + __n); + sVar34 = *(long *)(param_1 + 0x28) - (long)__src; + if ((long)sVar34 >> 3 != 0) { + __dest = memmove(__dest,__src,sVar34); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(double **)(param_1 + 0x20) = pdVar23; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar34; + *(ulong *)(param_1 + 0x30) = (long)pdVar23 + uVar33; + __src_00 = pdVar23; + } + else { + memset(__src,0,uVar10 * 8); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar10 * 8); + } + } + } + else if (uVar36 < uVar27) { + *(double **)(param_1 + 0x28) = __src_00 + uVar36; + } + sVar34 = uVar36 << 3; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar34); + iVar44 = *(int *)(param_1 + 0x18); + iVar28 = *(int *)(param_1 + 8); + if (iVar44 < iVar28 + -1) { + iVar7 = param_6 - 1; + uVar6 = param_6 - 2 >> 1; + uVar15 = uVar6 + 1; + uVar4 = uVar15 * 2; + if (iVar7 < 1) { + uVar4 = 0; + } + uVar8 = param_6 - uVar4; + lVar16 = (long)(int)uVar4; + pdVar23 = __src_00 + lVar16; + uVar1 = (uint)((ulong)pdVar23 >> 3) & 1; + uVar3 = uVar8; + if (uVar1 < uVar8) { + uVar3 = uVar1; + } + iVar9 = uVar8 - uVar3; + uVar1 = (iVar9 - 2U >> 1) + 1; + iVar30 = iVar44 + 1; + iVar5 = uVar1 * 2; + puVar31 = param_2; + do { + pdVar26 = (double *)*puVar31; + if (0 < iVar7) { + pdVar21 = __src_00; + pdVar25 = pdVar26; + if ((__src_00 < pdVar26 + 4 && pdVar26 < __src_00 + 4) || (uVar15 < 4)) { + do { + dVar38 = *pdVar25; + pdVar29 = pdVar21 + 2; + pdVar21[1] = pdVar21[1] + pdVar25[1]; + *pdVar21 = *pdVar21 + dVar38; + pdVar21 = pdVar29; + pdVar25 = pdVar25 + 2; + } while (pdVar29 != __src_00 + ((ulong)uVar6 + 1) * 2); + } + else { + uVar14 = 0; + do { + uVar14 = uVar14 + 1; + dVar38 = *pdVar25; + pdVar21[1] = pdVar21[1] + pdVar25[1]; + *pdVar21 = *pdVar21 + dVar38; + pdVar21 = pdVar21 + 2; + pdVar25 = pdVar25 + 2; + } while (uVar14 < uVar15); + } + } + if ((int)uVar4 < (int)param_6) { + if ((pdVar23 < pdVar26 + lVar16 + 2 && pdVar26 + lVar16 < __src_00 + lVar16 + 2) || + (uVar8 < 8)) { + lVar20 = 0; + do { + *(double *)((long)pdVar23 + lVar20) = + *(double *)((long)pdVar23 + lVar20) + + *(double *)((long)(pdVar26 + lVar16) + lVar20); + lVar20 = lVar20 + 8; + } while (lVar20 != ((ulong)(iVar7 - uVar4) + 1) * 8); + } + else { + uVar14 = uVar4; + if (uVar3 != 0) { + __src_00[lVar16] = __src_00[lVar16] + pdVar26[lVar16]; + uVar14 = uVar4 + 1; + } + if (iVar9 != 1) { + uVar24 = 0; + pdVar21 = __src_00 + (ulong)uVar3 + lVar16; + pdVar25 = __src_00 + (ulong)uVar3 + lVar16; + pdVar29 = pdVar26 + (ulong)uVar3 + lVar16; + do { + dVar39 = *pdVar29; + uVar24 = uVar24 + 1; + dVar38 = *pdVar25; + pdVar21[1] = pdVar25[1] + pdVar29[1]; + *pdVar21 = dVar38 + dVar39; + pdVar21 = pdVar21 + 2; + pdVar25 = pdVar25 + 2; + pdVar29 = pdVar29 + 2; + } while (uVar24 < uVar1); + uVar14 = uVar14 + iVar5; + if (iVar5 == iVar9) goto LAB_0020b600; + } + uVar27 = -(ulong)(uVar14 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar14 << 3; + *(double *)((long)__src_00 + uVar27) = + *(double *)((long)__src_00 + uVar27) + *(double *)((long)pdVar26 + uVar27); + } + } +LAB_0020b600: + puVar31 = puVar31 + 1; + *(int *)(param_1 + 0x18) = iVar30; + iVar30 = iVar30 + 1; + } while (iVar30 != iVar28); + param_2 = param_2 + (ulong)(uint)((iVar28 + -2) - iVar44) + 1; + } +LAB_0020b62c: + if (param_5 != 0) { + iVar7 = param_6 - 1; + uVar15 = param_6 - 2 >> 1; + puVar35 = (undefined1 *)(param_3 + 1); + puVar31 = param_2 + (ulong)(param_5 - 1) + 1; + lVar16 = (ulong)uVar15 * 0x10 + 0x18; + iVar44 = (uVar15 + 1) * 2; + if (iVar7 < 1) { + iVar44 = 0; + } + lVar17 = (long)iVar44; + lVar20 = (ulong)(uint)(iVar7 - iVar44) + 1; + lVar37 = NEON_shl(lVar17,3); + while( true ) { + uVar36 = *param_2; + uVar27 = param_2[1 - iVar28]; + if (dVar43 == 1.0) { + if (0 < iVar7) { + pdVar23 = (double *)(uVar36 + 8); + pdVar26 = __src_00; + pdVar21 = (double *)(uVar27 + 8); + puVar32 = puVar35; + do { + dVar38 = pdVar23[-1]; + dVar41 = *pdVar26; + dVar42 = pdVar26[1]; + dVar39 = *pdVar23; + lVar18 = lrint(dVar41 + dVar38); + uVar15 = (uint)lVar18; + if (0xff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + puVar32[-1] = (char)uVar15; + lVar18 = lrint(dVar42 + dVar39); + uVar15 = (uint)lVar18; + if (0xff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + *puVar32 = (char)uVar15; + pdVar23 = pdVar23 + 2; + dVar40 = pdVar21[-1]; + pdVar26[1] = (dVar42 + dVar39) - *pdVar21; + *pdVar26 = (dVar41 + dVar38) - dVar40; + pdVar26 = pdVar26 + 2; + pdVar21 = pdVar21 + 2; + puVar32 = puVar32 + 2; + } while (pdVar23 != (double *)(uVar36 + lVar16)); + } + if (iVar44 < (int)param_6) { + lVar18 = 0; + do { + dVar38 = *(double *)((long)__src_00 + lVar18 * 8 + lVar37) + + *(double *)(uVar36 + lVar37 + lVar18 * 8); + lVar19 = lrint(dVar38); + uVar15 = (uint)lVar19; + if (0xff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + puVar35[lVar18 + lVar17 + -1] = (char)uVar15; + *(double *)((long)__src_00 + lVar18 * 8 + lVar37) = + dVar38 - *(double *)(uVar27 + lVar37 + lVar18 * 8); + lVar18 = lVar18 + 1; + } while (lVar20 != lVar18); + } + } + else { + if (0 < iVar7) { + pdVar23 = (double *)(uVar36 + 8); + puVar32 = puVar35; + pdVar26 = (double *)(uVar27 + 8); + pdVar21 = __src_00; + do { + dVar38 = pdVar23[-1]; + dVar41 = *pdVar21; + dVar42 = pdVar21[1]; + dVar39 = *pdVar23; + lVar18 = lrint(dVar43 * (dVar41 + dVar38)); + uVar15 = (uint)lVar18; + if (0xff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + puVar32[-1] = (char)uVar15; + lVar18 = lrint(dVar43 * (dVar42 + dVar39)); + uVar15 = (uint)lVar18; + if (0xff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + *puVar32 = (char)uVar15; + pdVar23 = pdVar23 + 2; + dVar40 = pdVar26[-1]; + pdVar21[1] = (dVar42 + dVar39) - *pdVar26; + *pdVar21 = (dVar41 + dVar38) - dVar40; + puVar32 = puVar32 + 2; + pdVar26 = pdVar26 + 2; + pdVar21 = pdVar21 + 2; + } while (pdVar23 != (double *)(uVar36 + lVar16)); + } + if (iVar44 < (int)param_6) { + lVar18 = 0; + do { + dVar38 = *(double *)((long)__src_00 + lVar18 * 8 + lVar37) + + *(double *)(uVar36 + lVar37 + lVar18 * 8); + lVar19 = lrint(dVar43 * dVar38); + uVar15 = (uint)lVar19; + if (0xff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + puVar35[lVar18 + lVar17 + -1] = (char)uVar15; + *(double *)((long)__src_00 + lVar18 * 8 + lVar37) = + dVar38 - *(double *)(uVar27 + lVar37 + lVar18 * 8); + lVar18 = lVar18 + 1; + } while (lVar18 != lVar20); + } + } + if (param_2 + 1 == puVar31) break; + puVar35 = puVar35 + param_4; + param_2 = param_2 + 1; + iVar28 = *(int *)(param_1 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 0020bc34 (2216 bytes) name=FUN_0020bc34 + +void FUN_0020bc34(long param_1,ulong *param_2,long param_3,int param_4,int param_5,uint param_6) + +{ + uint uVar1; + ulong uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + ulong uVar10; + undefined8 uVar11; + undefined8 uVar12; + char cVar13; + uint uVar14; + uint uVar15; + long lVar16; + long lVar17; + long lVar18; + long lVar19; + long lVar20; + double *pdVar21; + char *pcVar22; + void *__dest; + double *pdVar23; + uint uVar24; + long lVar25; + double *pdVar26; + double *pdVar27; + ulong uVar28; + size_t __n; + int iVar29; + double *pdVar30; + int iVar31; + ulong *puVar32; + double *__src; + undefined2 *puVar33; + ulong uVar34; + size_t sVar35; + ulong uVar36; + undefined2 *puVar37; + void *__src_00; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + int iVar43; + double dVar44; + double dVar45; + undefined8 local_10; + undefined8 local_8; + + __src = *(double **)(param_1 + 0x20); + __src_00 = *(void **)(param_1 + 0x28); + sVar35 = (long)__src_00 - (long)__src; + uVar28 = (long)sVar35 >> 3; + dVar45 = *(double *)(param_1 + 0x10); + if ((uint)uVar28 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar29 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar29 + -1) { + local_10 = 0; + local_8 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar13 = s_sumCount____ksize_1_0045d530[0x12]; + uVar12 = s_sumCount____ksize_1_0045d530._8_8_; + uVar11 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar22 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar22[0x12] = cVar13; + *(undefined8 *)pcVar22 = uVar11; + *(undefined8 *)(pcVar22 + 8) = uVar12; + cv::error(-0xd7,(String *)&local_10, + "void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int) [with ST = double; T = short unsigned int; uchar = unsigned char]" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x99); + cv::String::deallocate((String *)&local_10); + iVar29 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar29 + -1; + goto LAB_0020bee4; + } + sVar35 = -(ulong)(param_6 >> 0x1f) & 0xfffffff800000000 | (ulong)param_6 << 3; + } + else { + uVar36 = (ulong)(int)param_6; + if (uVar28 < uVar36) { + uVar10 = uVar36 - uVar28; + if (uVar10 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src_00 >> 3) < uVar10) { + if (0x1fffffffffffffff - uVar28 < uVar10) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar2 = uVar10; + if (uVar10 < uVar28) { + uVar2 = uVar28; + } + uVar2 = uVar2 + uVar28; + if ((uVar2 < uVar28) || (0x1fffffffffffffff < uVar2)) { + uVar34 = 0xfffffffffffffff8; +LAB_0020c498: + pdVar23 = operator_new(uVar34); + __src = *(double **)(param_1 + 0x20); + __n = (long)__src_00 - (long)__src; + uVar28 = (long)__n >> 3; + } + else { + uVar34 = uVar2 * 8; + if (uVar2 != 0) goto LAB_0020c498; + uVar34 = 0; + pdVar23 = (double *)0x0; + __n = sVar35; + } + memset((void *)((long)pdVar23 + sVar35),0,uVar10 * 8); + if (uVar28 != 0) { + memmove(pdVar23,__src,__n); + } + __dest = (void *)((long)pdVar23 + uVar10 * 8 + __n); + sVar35 = *(long *)(param_1 + 0x28) - (long)__src_00; + if ((long)sVar35 >> 3 != 0) { + __dest = memmove(__dest,__src_00,sVar35); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(double **)(param_1 + 0x20) = pdVar23; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar35; + *(ulong *)(param_1 + 0x30) = (long)pdVar23 + uVar34; + __src = pdVar23; + } + else { + memset(__src_00,0,uVar10 * 8); + *(void **)(param_1 + 0x28) = (void *)((long)__src_00 + uVar10 * 8); + } + } + } + else if (uVar36 < uVar28) { + *(double **)(param_1 + 0x28) = __src + uVar36; + } + sVar35 = uVar36 << 3; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src,0,sVar35); + iVar43 = *(int *)(param_1 + 0x18); + iVar29 = *(int *)(param_1 + 8); + if (iVar43 < iVar29 + -1) { + iVar7 = param_6 - 1; + uVar6 = param_6 - 2 >> 1; + uVar15 = uVar6 + 1; + uVar4 = uVar15 * 2; + if (iVar7 < 1) { + uVar4 = 0; + } + uVar8 = param_6 - uVar4; + lVar16 = (long)(int)uVar4; + pdVar23 = __src + lVar16; + uVar1 = (uint)((ulong)pdVar23 >> 3) & 1; + uVar3 = uVar8; + if (uVar1 < uVar8) { + uVar3 = uVar1; + } + iVar9 = uVar8 - uVar3; + uVar1 = (iVar9 - 2U >> 1) + 1; + iVar31 = iVar43 + 1; + iVar5 = uVar1 * 2; + puVar32 = param_2; + do { + pdVar27 = (double *)*puVar32; + if (0 < iVar7) { + pdVar21 = __src; + pdVar26 = pdVar27; + if ((__src < pdVar27 + 4 && pdVar27 < __src + 4) || (uVar15 < 4)) { + do { + dVar38 = *pdVar26; + pdVar30 = pdVar21 + 2; + pdVar21[1] = pdVar21[1] + pdVar26[1]; + *pdVar21 = *pdVar21 + dVar38; + pdVar21 = pdVar30; + pdVar26 = pdVar26 + 2; + } while (pdVar30 != __src + ((ulong)uVar6 + 1) * 2); + } + else { + uVar14 = 0; + do { + uVar14 = uVar14 + 1; + dVar38 = *pdVar26; + pdVar21[1] = pdVar21[1] + pdVar26[1]; + *pdVar21 = *pdVar21 + dVar38; + pdVar21 = pdVar21 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar14 < uVar15); + } + } + if ((int)uVar4 < (int)param_6) { + if ((pdVar23 < pdVar27 + lVar16 + 2 && pdVar27 + lVar16 < __src + lVar16 + 2) || (uVar8 < 8) + ) { + lVar20 = 0; + do { + *(double *)((long)pdVar23 + lVar20) = + *(double *)((long)pdVar23 + lVar20) + + *(double *)((long)(pdVar27 + lVar16) + lVar20); + lVar20 = lVar20 + 8; + } while (lVar20 != ((ulong)(iVar7 - uVar4) + 1) * 8); + } + else { + uVar14 = uVar4; + if (uVar3 != 0) { + __src[lVar16] = __src[lVar16] + pdVar27[lVar16]; + uVar14 = uVar4 + 1; + } + if (iVar9 != 1) { + uVar24 = 0; + pdVar21 = __src + (ulong)uVar3 + lVar16; + pdVar26 = __src + (ulong)uVar3 + lVar16; + pdVar30 = pdVar27 + (ulong)uVar3 + lVar16; + do { + dVar39 = *pdVar30; + uVar24 = uVar24 + 1; + dVar38 = *pdVar26; + pdVar21[1] = pdVar26[1] + pdVar30[1]; + *pdVar21 = dVar38 + dVar39; + pdVar21 = pdVar21 + 2; + pdVar26 = pdVar26 + 2; + pdVar30 = pdVar30 + 2; + } while (uVar24 < uVar1); + uVar14 = uVar14 + iVar5; + if (iVar5 == iVar9) goto LAB_0020beb8; + } + uVar28 = -(ulong)(uVar14 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar14 << 3; + *(double *)((long)__src + uVar28) = + *(double *)((long)__src + uVar28) + *(double *)((long)pdVar27 + uVar28); + } + } +LAB_0020beb8: + puVar32 = puVar32 + 1; + *(int *)(param_1 + 0x18) = iVar31; + iVar31 = iVar31 + 1; + } while (iVar31 != iVar29); + param_2 = param_2 + (ulong)(uint)((iVar29 + -2) - iVar43) + 1; + } +LAB_0020bee4: + if (param_5 != 0) { + iVar7 = param_6 - 1; + uVar15 = param_6 - 2 >> 1; + puVar37 = (undefined2 *)(param_3 + 2); + puVar32 = param_2 + (ulong)(param_5 - 1) + 1; + lVar16 = (ulong)uVar15 * 0x10 + 0x18; + iVar43 = (uVar15 + 1) * 2; + if (iVar7 < 1) { + iVar43 = 0; + } + lVar17 = (long)iVar43; + lVar20 = (ulong)(uint)(iVar7 - iVar43) + 1; + lVar25 = lVar17 * 8; + while( true ) { + uVar28 = *param_2; + uVar36 = param_2[1 - iVar29]; + if (dVar45 == 1.0) { + if (0 < iVar7) { + pdVar23 = (double *)(uVar36 + 8); + pdVar27 = (double *)(uVar28 + 8); + pdVar21 = __src; + puVar33 = puVar37; + do { + dVar38 = pdVar27[-1]; + dVar42 = *pdVar21; + dVar44 = pdVar21[1]; + dVar39 = *pdVar27; + lVar18 = lrint(dVar42 + dVar38); + uVar15 = (uint)lVar18; + if (0xffff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + puVar33[-1] = (short)uVar15; + lVar18 = lrint(dVar44 + dVar39); + uVar15 = (uint)lVar18; + if (0xffff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + dVar41 = *pdVar23; + dVar40 = pdVar23[-1]; + *puVar33 = (short)uVar15; + pdVar27 = pdVar27 + 2; + pdVar23 = pdVar23 + 2; + pdVar21[1] = (dVar44 + dVar39) - dVar41; + *pdVar21 = (dVar42 + dVar38) - dVar40; + pdVar21 = pdVar21 + 2; + puVar33 = puVar33 + 2; + } while (pdVar27 != (double *)(uVar28 + lVar16)); + } + if (iVar43 < (int)param_6) { + lVar18 = 0; + do { + dVar38 = __src[lVar17 + lVar18] + *(double *)(uVar28 + lVar25 + lVar18 * 8); + lVar19 = lrint(dVar38); + uVar15 = (uint)lVar19; + if (0xffff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + dVar39 = *(double *)(uVar36 + lVar25 + lVar18 * 8); + puVar37[lVar17 + lVar18 + -1] = (short)uVar15; + __src[lVar17 + lVar18] = dVar38 - dVar39; + lVar18 = lVar18 + 1; + } while (lVar20 != lVar18); + } + } + else { + if (0 < iVar7) { + pdVar23 = (double *)(uVar36 + 8); + pdVar27 = (double *)(uVar28 + 8); + puVar33 = puVar37; + pdVar21 = __src; + do { + dVar38 = pdVar27[-1]; + dVar42 = *pdVar21; + dVar44 = pdVar21[1]; + dVar39 = *pdVar27; + lVar18 = lrint(dVar45 * (dVar42 + dVar38)); + uVar15 = (uint)lVar18; + if (0xffff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + puVar33[-1] = (short)uVar15; + lVar18 = lrint(dVar45 * (dVar44 + dVar39)); + uVar15 = (uint)lVar18; + if (0xffff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + dVar41 = *pdVar23; + dVar40 = pdVar23[-1]; + *puVar33 = (short)uVar15; + pdVar27 = pdVar27 + 2; + pdVar23 = pdVar23 + 2; + pdVar21[1] = (dVar44 + dVar39) - dVar41; + *pdVar21 = (dVar42 + dVar38) - dVar40; + puVar33 = puVar33 + 2; + pdVar21 = pdVar21 + 2; + } while (pdVar27 != (double *)(uVar28 + lVar16)); + } + if (iVar43 < (int)param_6) { + lVar18 = 0; + do { + dVar38 = __src[lVar17 + lVar18] + *(double *)(uVar28 + lVar25 + lVar18 * 8); + lVar19 = lrint(dVar45 * dVar38); + uVar15 = (uint)lVar19; + if (0xffff < uVar15) { + uVar15 = -(uint)(0 < (int)uVar15); + } + dVar39 = *(double *)(uVar36 + lVar25 + lVar18 * 8); + puVar37[lVar17 + lVar18 + -1] = (short)uVar15; + __src[lVar17 + lVar18] = dVar38 - dVar39; + lVar18 = lVar18 + 1; + } while (lVar18 != lVar20); + } + } + if (param_2 + 1 == puVar32) break; + puVar37 = (undefined2 *)((long)puVar37 + (long)param_4); + param_2 = param_2 + 1; + iVar29 = *(int *)(param_1 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 0020c4f0 (2520 bytes) name=FUN_0020c4f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0020c4f0(long param_1,long *param_2,undefined8 *param_3,int param_4,int param_5, + uint param_6) + +{ + uint uVar1; + uint uVar2; + int iVar3; + long lVar4; + long *plVar5; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + uint uVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + int *piVar15; + int iVar16; + char cVar17; + uint uVar18; + int iVar19; + uint uVar20; + ulong uVar21; + long lVar22; + long lVar23; + char *pcVar24; + void *__dest; + undefined1 (*pauVar25) [16]; + int *piVar26; + undefined8 *puVar27; + undefined1 (*pauVar28) [16]; + long lVar29; + int *piVar30; + long lVar31; + ulong uVar32; + int *piVar33; + void *__src; + int *piVar34; + size_t __n; + long lVar35; + undefined1 (*__src_00) [16]; + ulong uVar36; + size_t sVar37; + undefined8 *puVar38; + ulong uVar39; + int *piVar40; + ulong uVar41; + float fVar42; + long lVar43; + undefined8 uVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined8 uVar49; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + int iVar54; + int iVar55; + int iVar56; + int iVar57; + int iVar58; + int iVar59; + int iVar60; + int iVar61; + undefined4 uVar62; + undefined4 uVar63; + undefined1 in_q4 [16]; + double dVar64; + undefined8 local_10; + undefined8 local_8; + + uVar63 = in_q4._4_4_; + uVar62 = in_q4._0_4_; + __src_00 = *(undefined1 (**) [16])(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar37 = (long)__src - (long)__src_00; + uVar32 = (long)sVar37 >> 2; + dVar64 = *(double *)(param_1 + 0x10); + if ((uint)uVar32 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar54 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar54 + -1) { + local_10 = 0; + local_8 = 0; + pcVar24 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar17 = s_sumCount____ksize_1_0045d530[0x12]; + uVar49 = s_sumCount____ksize_1_0045d530._8_8_; + uVar44 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar24 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar24[0x12] = cVar17; + *(undefined8 *)pcVar24 = uVar44; + *(undefined8 *)(pcVar24 + 8) = uVar49; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x10c); + cv::String::deallocate((String *)&local_10); + iVar54 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar54 + -1; + goto LAB_0020c818; + } + sVar37 = -(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2; + } + else { + uVar36 = (ulong)(int)param_6; + if (uVar32 < uVar36) { + uVar41 = uVar36 - uVar32; + if (uVar41 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 2) < uVar41) { + if (0x3fffffffffffffff - uVar32 < uVar41) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar39 = uVar41; + if (uVar41 < uVar32) { + uVar39 = uVar32; + } + uVar39 = uVar39 + uVar32; + if ((uVar39 < uVar32) || (0x3fffffffffffffff < uVar39)) { + uVar21 = 0xfffffffffffffffc; +LAB_0020ce7c: + pauVar25 = operator_new(uVar21); + __src_00 = *(undefined1 (**) [16])(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar32 = (long)__n >> 2; + } + else { + uVar21 = uVar39 * 4; + if (uVar39 != 0) goto LAB_0020ce7c; + uVar21 = 0; + pauVar25 = (undefined1 (*) [16])0x0; + __n = sVar37; + } + memset((void *)((long)pauVar25 + sVar37),0,uVar41 * 4); + if (uVar32 != 0) { + memmove(pauVar25,__src_00,__n); + } + sVar37 = *(long *)(param_1 + 0x28) - (long)__src; + __dest = (void *)((long)pauVar25 + uVar41 * 4 + __n); + if ((long)sVar37 >> 2 != 0) { + __dest = memmove(__dest,__src,sVar37); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(undefined1 (**) [16])(param_1 + 0x20) = pauVar25; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar37; + *(undefined1 **)(param_1 + 0x30) = *pauVar25 + uVar21; + __src_00 = pauVar25; + } + else { + memset(__src,0,uVar41 * 4); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar41 * 4); + } + } + } + else if (uVar36 < uVar32) { + *(undefined1 **)(param_1 + 0x28) = *__src_00 + uVar36 * 4; + } + sVar37 = uVar36 << 2; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar37); + iVar54 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) < iVar54 + -1) { + uVar20 = param_6 - 4 >> 2; + uVar8 = (uVar20 + 1) * 4; + if ((int)(param_6 - 3) < 1) { + uVar8 = 0; + } + uVar1 = uVar8 + 1; + lVar35 = (long)(int)uVar8; + uVar2 = uVar8 + 2; + lVar4 = lVar35 * 4; + piVar30 = (int *)(*__src_00 + lVar4); + uVar10 = param_6 - uVar8; + uVar32 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar6 = -((uint)((ulong)piVar30 >> 2) & 3) & 3; + uVar7 = uVar10; + if (uVar6 < uVar10) { + uVar7 = uVar6; + } + uVar41 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar6 = ((uVar10 - uVar7) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + uVar36 = (ulong)uVar7; + do { + piVar33 = (int *)*param_2; + pauVar25 = __src_00; + piVar26 = piVar33; + if (0 < (int)(param_6 - 3)) { + do { + auVar52 = *pauVar25; + iVar54 = *piVar26; + iVar3 = piVar26[1]; + iVar55 = piVar26[3]; + pauVar28 = pauVar25 + 1; + *(int *)(*pauVar25 + 8) = piVar26[2] + auVar52._8_4_; + *(int *)(*pauVar25 + 0xc) = iVar55 + auVar52._12_4_; + *(int *)*pauVar25 = iVar54 + auVar52._0_4_; + *(int *)(*pauVar25 + 4) = iVar3 + auVar52._4_4_; + pauVar25 = pauVar28; + piVar26 = piVar26 + 4; + } while (pauVar28 != __src_00 + (ulong)uVar20 + 1); + } + if ((int)uVar8 < (int)param_6) { + if ((piVar30 < piVar33 + lVar35 + 4 && piVar33 + lVar35 < __src_00[1] + lVar4) || + (uVar10 < 8)) { + lVar43 = 0; + do { + *(int *)((long)piVar30 + lVar43) = + *(int *)((long)piVar30 + lVar43) + *(int *)((long)(piVar33 + lVar35) + lVar43); + lVar43 = lVar43 + 4; + } while (lVar43 != ((ulong)((param_6 - 1) - uVar8) + 1) * 4); + } + else { + if (uVar7 == 0) { + uVar39 = (ulong)uVar8; + } + else { + *(int *)(*__src_00 + lVar35 * 4) = *(int *)(*__src_00 + lVar35 * 4) + piVar33[lVar35]; + if (uVar7 == 1) { + uVar39 = (ulong)uVar1; + } + else { + *(int *)(*__src_00 + uVar32) = + *(int *)(*__src_00 + uVar32) + *(int *)((long)piVar33 + uVar32); + if (uVar7 == 3) { + uVar39 = (ulong)(uVar8 + 3); + *(int *)(*__src_00 + uVar41) = + *(int *)(*__src_00 + uVar41) + *(int *)((long)piVar33 + uVar41); + } + else { + uVar39 = (ulong)uVar2; + } + } + } + if (2 < (uVar10 - 1) - uVar7) { + uVar18 = 0; + puVar27 = (undefined8 *)(*__src_00 + uVar36 * 4 + lVar4); + piVar26 = (int *)(*__src_00 + (lVar35 + uVar36) * 4); + piVar40 = piVar33 + uVar36 + lVar35; + do { + uVar18 = uVar18 + 1; + auVar52._0_8_ = + CONCAT44(piVar26[1] + (int)((ulong)*(undefined8 *)piVar40 >> 0x20), + *piVar26 + (int)*(undefined8 *)piVar40); + auVar52._8_4_ = piVar26[2] + (int)*(undefined8 *)(piVar40 + 2); + auVar52._12_4_ = piVar26[3] + (int)((ulong)*(undefined8 *)(piVar40 + 2) >> 0x20); + puVar27[1] = auVar52._8_8_; + *puVar27 = auVar52._0_8_; + puVar27 = puVar27 + 2; + piVar26 = piVar26 + 4; + piVar40 = piVar40 + 4; + } while (uVar18 < uVar6); + uVar39 = (ulong)(uint)((int)uVar39 + iVar9); + if (iVar9 == uVar10 - uVar7) goto LAB_0020c7e8; + } + uVar21 = -(uVar39 >> 0x1f) & 0xfffffffc00000000 | uVar39 << 2; + *(int *)(*__src_00 + uVar21) = + *(int *)(*__src_00 + uVar21) + *(int *)((long)piVar33 + uVar21); + if ((int)uVar39 + 1 < (int)param_6) { + lVar43 = uVar21 + 4; + *(int *)(*__src_00 + lVar43) = + *(int *)(*__src_00 + lVar43) + *(int *)((long)piVar33 + lVar43); + if ((int)uVar39 + 2 < (int)param_6) { + lVar43 = uVar21 + 8; + *(int *)(*__src_00 + lVar43) = + *(int *)(*__src_00 + lVar43) + *(int *)((long)piVar33 + lVar43); + } + } + } + } +LAB_0020c7e8: + param_2 = param_2 + 1; + iVar54 = *(int *)(param_1 + 8); + iVar3 = *(int *)(param_1 + 0x18) + 1; + *(int *)(param_1 + 0x18) = iVar3; + } while (iVar3 < iVar54 + -1); + } +LAB_0020c818: + if (param_5 != 0) { + iVar3 = param_6 - 7; + uVar8 = param_6 - 8 >> 3; + plVar5 = param_2 + (ulong)(param_5 - 1) + 1; + iVar9 = (uVar8 + 1) * 8; + if (iVar3 < 1) { + iVar9 = 0; + } + lVar35 = (long)iVar9; + lVar4 = (ulong)((param_6 - 1) - iVar9) + 1; + lVar43 = NEON_shl(lVar35,2); + while( true ) { + lVar29 = *param_2; + lVar22 = param_2[1 - iVar54]; + if (dVar64 == 1.0) { + if (0 < iVar3) { + piVar30 = (int *)(lVar29 + 0x10); + pauVar25 = __src_00 + 1; + pauVar28 = (undefined1 (*) [16])(lVar22 + 0x10); + puVar27 = param_3; + do { + piVar34 = piVar30 + -4; + uVar44 = *(undefined8 *)*pauVar25; + piVar26 = piVar30 + -2; + iVar54 = *piVar30; + piVar33 = piVar30 + 1; + piVar40 = piVar30 + 2; + piVar15 = piVar30 + 3; + piVar30 = piVar30 + 8; + auVar50._0_4_ = *(int *)pauVar25[-1] + (int)*(undefined8 *)piVar34; + auVar50._4_4_ = + *(int *)(pauVar25[-1] + 4) + (int)((ulong)*(undefined8 *)piVar34 >> 0x20); + auVar50._8_4_ = *(int *)(pauVar25[-1] + 8) + (int)*(undefined8 *)piVar26; + auVar50._12_4_ = + *(int *)(pauVar25[-1] + 0xc) + (int)((ulong)*(undefined8 *)piVar26 >> 0x20); + auVar45._0_4_ = iVar54 + (int)uVar44; + auVar45._4_4_ = *piVar33 + (int)((ulong)uVar44 >> 0x20); + auVar45._8_4_ = *piVar40 + (int)*(undefined8 *)(*pauVar25 + 8); + auVar45._12_4_ = *piVar15 + (int)((ulong)*(undefined8 *)(*pauVar25 + 8) >> 0x20); + uVar49 = NEON_sqxtun(CONCAT44(uVar63,uVar62),auVar50,4); + uVar62 = (undefined4)uVar49; + uVar63 = (undefined4)((ulong)uVar49 >> 0x20); + uVar44 = NEON_sqxtun(uVar44,auVar45,4); + auVar11._8_4_ = (int)uVar44; + auVar11._0_8_ = uVar49; + auVar11._12_4_ = (int)((ulong)uVar44 >> 0x20); + uVar44 = NEON_uqxtn(uVar49,auVar11,2); + *puVar27 = uVar44; + uVar49 = *(undefined8 *)(pauVar28[-1] + 8); + uVar44 = *(undefined8 *)pauVar28[-1]; + *(int *)(pauVar25[-1] + 8) = auVar50._8_4_ - (int)uVar49; + *(int *)(pauVar25[-1] + 0xc) = auVar50._12_4_ - (int)((ulong)uVar49 >> 0x20); + *(int *)pauVar25[-1] = auVar50._0_4_ - (int)uVar44; + *(int *)(pauVar25[-1] + 4) = auVar50._4_4_ - (int)((ulong)uVar44 >> 0x20); + auVar52 = *pauVar28; + pauVar28 = pauVar28 + 2; + auVar46._0_8_ = CONCAT44(auVar45._4_4_ - auVar52._4_4_,auVar45._0_4_ - auVar52._0_4_); + auVar46._8_4_ = auVar45._8_4_ - auVar52._8_4_; + auVar46._12_4_ = auVar45._12_4_ - auVar52._12_4_; + *(long *)(*pauVar25 + 8) = auVar46._8_8_; + *(undefined8 *)*pauVar25 = auVar46._0_8_; + pauVar25 = pauVar25 + 2; + puVar27 = puVar27 + 1; + } while (pauVar25 != __src_00 + (ulong)uVar8 * 2 + 3); + } + if (iVar9 < (int)param_6) { + lVar31 = 0; + do { + uVar20 = *(int *)(*__src_00 + lVar31 * 4 + lVar43) + + *(int *)(lVar29 + lVar43 + lVar31 * 4); + uVar1 = uVar20; + if (0xff < uVar20) { + uVar1 = -(uint)(0 < (int)uVar20); + } + *(char *)((long)param_3 + lVar31 + lVar35) = (char)uVar1; + *(uint *)(*__src_00 + lVar31 * 4 + lVar43) = + uVar20 - *(int *)(lVar22 + lVar43 + lVar31 * 4); + lVar31 = lVar31 + 1; + } while (lVar4 != lVar31); + } + } + else { + fVar42 = (float)dVar64; + if (0 < iVar3) { + puVar27 = (undefined8 *)(lVar29 + 0x10); + pauVar25 = __src_00 + 1; + pauVar28 = (undefined1 (*) [16])(lVar22 + 0x10); + puVar38 = param_3; + do { + uVar44 = *(undefined8 *)pauVar25[-1]; + iVar58 = (int)uVar44 + *(int *)(puVar27 + -2); + iVar59 = (int)((ulong)uVar44 >> 0x20) + *(int *)((long)puVar27 + -0xc); + iVar60 = (int)*(undefined8 *)(pauVar25[-1] + 8) + *(int *)(puVar27 + -1); + iVar61 = (int)((ulong)*(undefined8 *)(pauVar25[-1] + 8) >> 0x20) + + *(int *)((long)puVar27 + -4); + iVar54 = (int)*puVar27 + *(int *)*pauVar25; + iVar55 = (int)((ulong)*puVar27 >> 0x20) + *(int *)(*pauVar25 + 4); + iVar56 = (int)puVar27[1] + *(int *)(*pauVar25 + 8); + iVar57 = (int)((ulong)puVar27[1] >> 0x20) + *(int *)(*pauVar25 + 0xc); + auVar13._4_4_ = iVar59; + auVar13._0_4_ = iVar58; + auVar13._8_4_ = iVar60; + auVar13._12_4_ = iVar61; + auVar52 = NEON_scvtf(auVar13,4); + auVar53._0_8_ = CONCAT44(fVar42 * auVar52._4_4_,fVar42 * auVar52._0_4_); + auVar53._8_4_ = fVar42 * auVar52._8_4_; + auVar53._12_4_ = fVar42 * auVar52._12_4_; + if ((DAT_00531ec0 & 1) == 0) { + uVar44 = auVar53._8_8_; + iVar19 = __cxa_guard_acquire(&DAT_00531ec0); + auVar53._8_8_ = uVar44; + if (iVar19 != 0) { + auVar52 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar52._8_8_; + _DAT_00531e90 = auVar52._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar12._4_4_ = iVar55; + auVar12._0_4_ = iVar54; + auVar12._8_4_ = iVar56; + auVar12._12_4_ = iVar57; + auVar52 = NEON_scvtf(auVar12,4); + auVar47._0_8_ = CONCAT44(fVar42 * auVar52._4_4_,fVar42 * auVar52._0_4_); + auVar47._8_4_ = fVar42 * auVar52._8_4_; + auVar47._12_4_ = fVar42 * auVar52._12_4_; + auVar51._0_8_ = + CONCAT44((int)(auVar53._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar53._0_4_ + (float)_DAT_00531e90)); + auVar51._8_4_ = (int)(auVar53._8_4_ + (float)uRam0000000000531e98); + auVar51._12_4_ = (int)(auVar53._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + if ((DAT_00531ec0 & 1) == 0) { + uVar49 = auVar51._8_8_; + uVar44 = auVar47._8_8_; + iVar19 = __cxa_guard_acquire(&DAT_00531ec0); + auVar47._8_8_ = uVar44; + auVar51._8_8_ = uVar49; + if (iVar19 != 0) { + auVar52 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar52._8_8_; + _DAT_00531e90 = auVar52._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + uVar49 = NEON_uqxtn(auVar51._0_8_,auVar51,4); + puVar27 = puVar27 + 4; + uVar62 = (undefined4)uVar49; + uVar63 = (undefined4)((ulong)uVar49 >> 0x20); + auVar48._0_8_ = + CONCAT44((int)(auVar47._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar47._0_4_ + (float)_DAT_00531e90)); + auVar48._8_4_ = (int)(auVar47._8_4_ + (float)uRam0000000000531e98); + auVar48._12_4_ = (int)(auVar47._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar44 = NEON_uqxtn(auVar48._0_8_,auVar48,4); + auVar14._8_4_ = (int)uVar44; + auVar14._0_8_ = uVar49; + auVar14._12_4_ = (int)((ulong)uVar44 >> 0x20); + uVar44 = NEON_uqxtn(uVar44,auVar14,2); + *puVar38 = uVar44; + iVar19 = *(int *)pauVar28[-1]; + iVar16 = *(int *)(pauVar28[-1] + 4); + *(ulong *)(pauVar25[-1] + 8) = + CONCAT44(iVar61 - *(int *)(pauVar28[-1] + 0xc),iVar60 - *(int *)(pauVar28[-1] + 8)) + ; + *(ulong *)pauVar25[-1] = CONCAT44(iVar59 - iVar16,iVar58 - iVar19); + auVar52 = *pauVar28; + pauVar28 = pauVar28 + 2; + *(ulong *)(*pauVar25 + 8) = CONCAT44(iVar57 - auVar52._12_4_,iVar56 - auVar52._8_4_); + *(ulong *)*pauVar25 = CONCAT44(iVar55 - auVar52._4_4_,iVar54 - auVar52._0_4_); + pauVar25 = pauVar25 + 2; + puVar38 = puVar38 + 1; + } while (pauVar25 != __src_00 + (ulong)uVar8 * 2 + 3); + } + if (iVar9 < (int)param_6) { + lVar31 = 0; + do { + iVar54 = *(int *)(*__src_00 + lVar31 * 4 + lVar43) + + *(int *)(lVar29 + lVar43 + lVar31 * 4); + lVar23 = lrint(dVar64 * (double)iVar54); + uVar20 = (uint)lVar23; + if (0xff < uVar20) { + uVar20 = -(uint)(0 < (int)uVar20); + } + *(char *)((long)param_3 + lVar31 + lVar35) = (char)uVar20; + *(int *)(*__src_00 + lVar31 * 4 + lVar43) = + iVar54 - *(int *)(lVar22 + lVar43 + lVar31 * 4); + lVar31 = lVar31 + 1; + } while (lVar31 != lVar4); + } + } + param_3 = (undefined8 *)((long)param_3 + (long)param_4); + param_2 = param_2 + 1; + if (param_2 == plVar5) break; + iVar54 = *(int *)(param_1 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 0020cedc (2516 bytes) name=FUN_0020cedc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0020cedc(long param_1,long *param_2,undefined8 *param_3,int param_4,int param_5, + uint param_6) + +{ + uint uVar1; + uint uVar2; + int iVar3; + long lVar4; + long *plVar5; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + uint uVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + int *piVar13; + char cVar14; + uint uVar15; + int iVar16; + uint uVar17; + ulong uVar18; + long lVar19; + long lVar20; + char *pcVar21; + void *__dest; + undefined1 (*pauVar22) [16]; + int *piVar23; + undefined8 *puVar24; + undefined1 (*pauVar25) [16]; + long lVar26; + int *piVar27; + long lVar28; + ulong uVar29; + int *piVar30; + long lVar31; + void *__src; + int *piVar32; + size_t __n; + long lVar33; + undefined1 (*__src_00) [16]; + ulong uVar34; + size_t sVar35; + undefined8 *puVar36; + ulong uVar37; + int *piVar38; + ulong uVar39; + float fVar40; + undefined8 uVar41; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + int iVar51; + int iVar52; + int iVar53; + int iVar54; + undefined8 uVar55; + int iVar56; + int iVar57; + int iVar58; + undefined1 in_q4 [16]; + int iVar59; + double dVar60; + undefined8 local_10; + undefined8 local_8; + + iVar57 = in_q4._4_4_; + iVar56 = in_q4._0_4_; + __src_00 = *(undefined1 (**) [16])(param_1 + 0x20); + __src = *(void **)(param_1 + 0x28); + sVar35 = (long)__src - (long)__src_00; + uVar29 = (long)sVar35 >> 2; + dVar60 = *(double *)(param_1 + 0x10); + if ((uint)uVar29 == param_6) { + if (*(int *)(param_1 + 0x18) != 0) { + iVar51 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) != iVar51 + -1) { + local_10 = 0; + local_8 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar14 = s_sumCount____ksize_1_0045d530[0x12]; + uVar55 = s_sumCount____ksize_1_0045d530._8_8_; + uVar41 = s_sumCount____ksize_1_0045d530._0_8_; + *(undefined2 *)(pcVar21 + 0x10) = s_sumCount____ksize_1_0045d530._16_2_; + pcVar21[0x12] = cVar14; + *(undefined8 *)pcVar21 = uVar41; + *(undefined8 *)(pcVar21 + 8) = uVar55; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ColumnSum::operator()(const uchar**, uchar*, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x262); + cv::String::deallocate((String *)&local_10); + iVar51 = *(int *)(param_1 + 8); + } + param_2 = param_2 + (long)iVar51 + -1; + goto LAB_0020d204; + } + sVar35 = -(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2; + } + else { + uVar34 = (ulong)(int)param_6; + if (uVar29 < uVar34) { + uVar39 = uVar34 - uVar29; + if (uVar39 != 0) { + if ((ulong)(*(long *)(param_1 + 0x30) - (long)__src >> 2) < uVar39) { + if (0x3fffffffffffffff - uVar29 < uVar39) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar37 = uVar39; + if (uVar39 < uVar29) { + uVar37 = uVar29; + } + uVar37 = uVar37 + uVar29; + if ((uVar37 < uVar29) || (0x3fffffffffffffff < uVar37)) { + uVar18 = 0xfffffffffffffffc; +LAB_0020d864: + pauVar22 = operator_new(uVar18); + __src_00 = *(undefined1 (**) [16])(param_1 + 0x20); + __n = (long)__src - (long)__src_00; + uVar29 = (long)__n >> 2; + } + else { + uVar18 = uVar37 * 4; + if (uVar37 != 0) goto LAB_0020d864; + uVar18 = 0; + pauVar22 = (undefined1 (*) [16])0x0; + __n = sVar35; + } + memset((void *)((long)pauVar22 + sVar35),0,uVar39 * 4); + if (uVar29 != 0) { + memmove(pauVar22,__src_00,__n); + } + sVar35 = *(long *)(param_1 + 0x28) - (long)__src; + __dest = (void *)((long)pauVar22 + uVar39 * 4 + __n); + if ((long)sVar35 >> 2 != 0) { + __dest = memmove(__dest,__src,sVar35); + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete(*(void **)(param_1 + 0x20)); + } + *(undefined1 (**) [16])(param_1 + 0x20) = pauVar22; + *(size_t *)(param_1 + 0x28) = (long)__dest + sVar35; + *(undefined1 **)(param_1 + 0x30) = *pauVar22 + uVar18; + __src_00 = pauVar22; + } + else { + memset(__src,0,uVar39 * 4); + *(void **)(param_1 + 0x28) = (void *)((long)__src + uVar39 * 4); + } + } + } + else if (uVar34 < uVar29) { + *(undefined1 **)(param_1 + 0x28) = *__src_00 + uVar34 * 4; + } + sVar35 = uVar34 << 2; + *(undefined4 *)(param_1 + 0x18) = 0; + } + memset(__src_00,0,sVar35); + iVar51 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x18) < iVar51 + -1) { + uVar17 = param_6 - 4 >> 2; + uVar8 = (uVar17 + 1) * 4; + if ((int)(param_6 - 3) < 1) { + uVar8 = 0; + } + uVar1 = uVar8 + 1; + lVar33 = (long)(int)uVar8; + uVar2 = uVar8 + 2; + lVar4 = lVar33 * 4; + piVar27 = (int *)(*__src_00 + lVar4); + uVar10 = param_6 - uVar8; + uVar29 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar6 = -((uint)((ulong)piVar27 >> 2) & 3) & 3; + uVar7 = uVar10; + if (uVar6 < uVar10) { + uVar7 = uVar6; + } + uVar39 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar6 = ((uVar10 - uVar7) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + uVar34 = (ulong)uVar7; + do { + piVar30 = (int *)*param_2; + pauVar22 = __src_00; + piVar23 = piVar30; + if (0 < (int)(param_6 - 3)) { + do { + auVar49 = *pauVar22; + auVar42._0_8_ = CONCAT44(piVar23[1] + auVar49._4_4_,*piVar23 + auVar49._0_4_); + auVar42._8_4_ = piVar23[2] + auVar49._8_4_; + auVar42._12_4_ = piVar23[3] + auVar49._12_4_; + pauVar25 = pauVar22 + 1; + *(long *)(*pauVar22 + 8) = auVar42._8_8_; + *(undefined8 *)*pauVar22 = auVar42._0_8_; + pauVar22 = pauVar25; + piVar23 = piVar23 + 4; + } while (pauVar25 != __src_00 + (ulong)uVar17 + 1); + } + if ((int)uVar8 < (int)param_6) { + if ((piVar27 < piVar30 + lVar33 + 4 && piVar30 + lVar33 < __src_00[1] + lVar4) || + (uVar10 < 8)) { + lVar31 = 0; + do { + *(int *)((long)piVar27 + lVar31) = + *(int *)((long)piVar27 + lVar31) + *(int *)((long)(piVar30 + lVar33) + lVar31); + lVar31 = lVar31 + 4; + } while (lVar31 != ((ulong)((param_6 - 1) - uVar8) + 1) * 4); + } + else { + if (uVar7 == 0) { + uVar37 = (ulong)uVar8; + } + else { + *(int *)(*__src_00 + lVar33 * 4) = *(int *)(*__src_00 + lVar33 * 4) + piVar30[lVar33]; + if (uVar7 == 1) { + uVar37 = (ulong)uVar1; + } + else { + *(int *)(*__src_00 + uVar29) = + *(int *)(*__src_00 + uVar29) + *(int *)((long)piVar30 + uVar29); + if (uVar7 == 3) { + uVar37 = (ulong)(uVar8 + 3); + *(int *)(*__src_00 + uVar39) = + *(int *)(*__src_00 + uVar39) + *(int *)((long)piVar30 + uVar39); + } + else { + uVar37 = (ulong)uVar2; + } + } + } + if (2 < (uVar10 - 1) - uVar7) { + uVar15 = 0; + puVar24 = (undefined8 *)(*__src_00 + uVar34 * 4 + lVar4); + piVar23 = (int *)(*__src_00 + (lVar33 + uVar34) * 4); + piVar38 = piVar30 + uVar34 + lVar33; + do { + uVar15 = uVar15 + 1; + auVar49._0_8_ = + CONCAT44(piVar23[1] + (int)((ulong)*(undefined8 *)piVar38 >> 0x20), + *piVar23 + (int)*(undefined8 *)piVar38); + auVar49._8_4_ = piVar23[2] + (int)*(undefined8 *)(piVar38 + 2); + auVar49._12_4_ = piVar23[3] + (int)((ulong)*(undefined8 *)(piVar38 + 2) >> 0x20); + puVar24[1] = auVar49._8_8_; + *puVar24 = auVar49._0_8_; + puVar24 = puVar24 + 2; + piVar23 = piVar23 + 4; + piVar38 = piVar38 + 4; + } while (uVar15 < uVar6); + uVar37 = (ulong)(uint)((int)uVar37 + iVar9); + if (iVar9 == uVar10 - uVar7) goto LAB_0020d1d4; + } + uVar18 = -(uVar37 >> 0x1f) & 0xfffffffc00000000 | uVar37 << 2; + *(int *)(*__src_00 + uVar18) = + *(int *)(*__src_00 + uVar18) + *(int *)((long)piVar30 + uVar18); + if ((int)uVar37 + 1 < (int)param_6) { + lVar31 = uVar18 + 4; + *(int *)(*__src_00 + lVar31) = + *(int *)(*__src_00 + lVar31) + *(int *)((long)piVar30 + lVar31); + if ((int)uVar37 + 2 < (int)param_6) { + lVar31 = uVar18 + 8; + *(int *)(*__src_00 + lVar31) = + *(int *)(*__src_00 + lVar31) + *(int *)((long)piVar30 + lVar31); + } + } + } + } +LAB_0020d1d4: + param_2 = param_2 + 1; + iVar51 = *(int *)(param_1 + 8); + iVar3 = *(int *)(param_1 + 0x18) + 1; + *(int *)(param_1 + 0x18) = iVar3; + } while (iVar3 < iVar51 + -1); + } +LAB_0020d204: + if (param_5 != 0) { + iVar3 = param_6 - 7; + uVar8 = param_6 - 8 >> 3; + plVar5 = param_2 + (ulong)(param_5 - 1) + 1; + iVar9 = (uVar8 + 1) * 8; + if (iVar3 < 1) { + iVar9 = 0; + } + lVar4 = (ulong)((param_6 - 1) - iVar9) + 1; + lVar31 = (long)iVar9 * 4; + lVar33 = (long)iVar9 * 2; + while( true ) { + lVar26 = *param_2; + lVar19 = param_2[1 - iVar51]; + if (dVar60 == 1.0) { + if (0 < iVar3) { + piVar27 = (int *)(lVar26 + 0x10); + pauVar22 = __src_00 + 1; + pauVar25 = (undefined1 (*) [16])(lVar19 + 0x10); + puVar24 = param_3; + do { + piVar32 = piVar27 + -4; + uVar55 = *(undefined8 *)*pauVar22; + piVar23 = piVar27 + -2; + iVar51 = *piVar27; + piVar30 = piVar27 + 1; + piVar38 = piVar27 + 2; + piVar13 = piVar27 + 3; + piVar27 = piVar27 + 8; + auVar47._0_4_ = *(int *)pauVar22[-1] + (int)*(undefined8 *)piVar32; + auVar47._4_4_ = + *(int *)(pauVar22[-1] + 4) + (int)((ulong)*(undefined8 *)piVar32 >> 0x20); + auVar47._8_4_ = *(int *)(pauVar22[-1] + 8) + (int)*(undefined8 *)piVar23; + auVar47._12_4_ = + *(int *)(pauVar22[-1] + 0xc) + (int)((ulong)*(undefined8 *)piVar23 >> 0x20); + auVar43._0_4_ = iVar51 + (int)uVar55; + auVar43._4_4_ = *piVar30 + (int)((ulong)uVar55 >> 0x20); + auVar43._8_4_ = *piVar38 + (int)*(undefined8 *)(*pauVar22 + 8); + auVar43._12_4_ = *piVar13 + (int)((ulong)*(undefined8 *)(*pauVar22 + 8) >> 0x20); + uVar41 = NEON_sqxtun(CONCAT44(iVar57,iVar56),auVar47,4); + iVar56 = (int)uVar41; + iVar57 = (int)((ulong)uVar41 >> 0x20); + uVar55 = NEON_sqxtun(uVar55,auVar43,4); + puVar24[1] = uVar55; + *puVar24 = uVar41; + uVar55 = *(undefined8 *)(pauVar25[-1] + 8); + uVar41 = *(undefined8 *)pauVar25[-1]; + *(int *)(pauVar22[-1] + 8) = auVar47._8_4_ - (int)uVar55; + *(int *)(pauVar22[-1] + 0xc) = auVar47._12_4_ - (int)((ulong)uVar55 >> 0x20); + *(int *)pauVar22[-1] = auVar47._0_4_ - (int)uVar41; + *(int *)(pauVar22[-1] + 4) = auVar47._4_4_ - (int)((ulong)uVar41 >> 0x20); + auVar49 = *pauVar25; + pauVar25 = pauVar25 + 2; + auVar44._0_8_ = CONCAT44(auVar43._4_4_ - auVar49._4_4_,auVar43._0_4_ - auVar49._0_4_); + auVar44._8_4_ = auVar43._8_4_ - auVar49._8_4_; + auVar44._12_4_ = auVar43._12_4_ - auVar49._12_4_; + *(long *)(*pauVar22 + 8) = auVar44._8_8_; + *(undefined8 *)*pauVar22 = auVar44._0_8_; + pauVar22 = pauVar22 + 2; + puVar24 = puVar24 + 2; + } while (__src_00 + (ulong)uVar8 * 2 + 3 != pauVar22); + } + if (iVar9 < (int)param_6) { + lVar28 = 0; + do { + iVar51 = *(int *)(lVar19 + lVar31 + lVar28 * 4); + uVar17 = *(int *)(*__src_00 + lVar28 * 4 + lVar31) + + *(int *)(lVar26 + lVar31 + lVar28 * 4); + uVar1 = uVar17; + if (0xffff < uVar17) { + uVar1 = -(uint)(0 < (int)uVar17); + } + *(short *)((long)param_3 + lVar28 * 2 + lVar33) = (short)uVar1; + *(uint *)(*__src_00 + lVar28 * 4 + lVar31) = uVar17 - iVar51; + lVar28 = lVar28 + 1; + } while (lVar28 != lVar4); + } + } + else { + fVar40 = (float)dVar60; + if (0 < iVar3) { + puVar24 = (undefined8 *)(lVar26 + 0x10); + pauVar22 = __src_00 + 1; + pauVar25 = (undefined1 (*) [16])(lVar19 + 0x10); + puVar36 = param_3; + do { + uVar41 = *(undefined8 *)pauVar22[-1]; + iVar56 = (int)uVar41 + *(int *)(puVar24 + -2); + iVar57 = (int)((ulong)uVar41 >> 0x20) + *(int *)((long)puVar24 + -0xc); + iVar58 = (int)*(undefined8 *)(pauVar22[-1] + 8) + *(int *)(puVar24 + -1); + iVar59 = (int)((ulong)*(undefined8 *)(pauVar22[-1] + 8) >> 0x20) + + *(int *)((long)puVar24 + -4); + iVar51 = (int)*puVar24 + *(int *)*pauVar22; + iVar52 = (int)((ulong)*puVar24 >> 0x20) + *(int *)(*pauVar22 + 4); + iVar53 = (int)puVar24[1] + *(int *)(*pauVar22 + 8); + iVar54 = (int)((ulong)puVar24[1] >> 0x20) + *(int *)(*pauVar22 + 0xc); + auVar12._4_4_ = iVar57; + auVar12._0_4_ = iVar56; + auVar12._8_4_ = iVar58; + auVar12._12_4_ = iVar59; + auVar49 = NEON_scvtf(auVar12,4); + auVar50._0_8_ = CONCAT44(fVar40 * auVar49._4_4_,fVar40 * auVar49._0_4_); + auVar50._8_4_ = fVar40 * auVar49._8_4_; + auVar50._12_4_ = fVar40 * auVar49._12_4_; + if ((DAT_00531ec0 & 1) == 0) { + uVar41 = auVar50._8_8_; + iVar16 = __cxa_guard_acquire(&DAT_00531ec0); + auVar50._8_8_ = uVar41; + if (iVar16 != 0) { + auVar49 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar49._8_8_; + _DAT_00531e90 = auVar49._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar11._4_4_ = iVar52; + auVar11._0_4_ = iVar51; + auVar11._8_4_ = iVar53; + auVar11._12_4_ = iVar54; + auVar49 = NEON_scvtf(auVar11,4); + auVar45._0_8_ = CONCAT44(fVar40 * auVar49._4_4_,fVar40 * auVar49._0_4_); + auVar45._8_4_ = fVar40 * auVar49._8_4_; + auVar45._12_4_ = fVar40 * auVar49._12_4_; + auVar48._0_8_ = + CONCAT44((int)(auVar50._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar50._0_4_ + (float)_DAT_00531e90)); + auVar48._8_4_ = (int)(auVar50._8_4_ + (float)uRam0000000000531e98); + auVar48._12_4_ = (int)(auVar50._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + if ((DAT_00531ec0 & 1) == 0) { + uVar55 = auVar48._8_8_; + uVar41 = auVar45._8_8_; + iVar16 = __cxa_guard_acquire(&DAT_00531ec0); + auVar45._8_8_ = uVar41; + auVar48._8_8_ = uVar55; + if (iVar16 != 0) { + auVar49 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar49._8_8_; + _DAT_00531e90 = auVar49._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + uVar55 = NEON_uqxtn(auVar48._0_8_,auVar48,4); + puVar24 = puVar24 + 4; + auVar46._0_8_ = + CONCAT44((int)(auVar45._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar45._0_4_ + (float)_DAT_00531e90)); + auVar46._8_4_ = (int)(auVar45._8_4_ + (float)uRam0000000000531e98); + auVar46._12_4_ = (int)(auVar45._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar41 = NEON_uqxtn(auVar46._0_8_,auVar46,4); + puVar36[1] = uVar41; + *puVar36 = uVar55; + auVar49 = pauVar25[-1]; + *(int *)(pauVar22[-1] + 8) = iVar58 - auVar49._8_4_; + *(int *)(pauVar22[-1] + 0xc) = iVar59 - auVar49._12_4_; + *(int *)pauVar22[-1] = iVar56 - auVar49._0_4_; + *(int *)(pauVar22[-1] + 4) = iVar57 - auVar49._4_4_; + auVar49 = *pauVar25; + pauVar25 = pauVar25 + 2; + *(ulong *)(*pauVar22 + 8) = CONCAT44(iVar54 - auVar49._12_4_,iVar53 - auVar49._8_4_); + *(ulong *)*pauVar22 = CONCAT44(iVar52 - auVar49._4_4_,iVar51 - auVar49._0_4_); + pauVar22 = pauVar22 + 2; + puVar36 = puVar36 + 2; + } while (pauVar22 != __src_00 + (ulong)uVar8 * 2 + 3); + } + if (iVar9 < (int)param_6) { + lVar28 = 0; + do { + iVar51 = *(int *)(*__src_00 + lVar28 * 4 + lVar31) + + *(int *)(lVar26 + lVar31 + lVar28 * 4); + lVar20 = lrint(dVar60 * (double)iVar51); + uVar17 = (uint)lVar20; + if (0xffff < uVar17) { + uVar17 = -(uint)(0 < (int)uVar17); + } + iVar52 = *(int *)(lVar19 + lVar31 + lVar28 * 4); + *(short *)((long)param_3 + lVar28 * 2 + lVar33) = (short)uVar17; + *(int *)(*__src_00 + lVar28 * 4 + lVar31) = iVar51 - iVar52; + lVar28 = lVar28 + 1; + } while (lVar28 != lVar4); + } + } + param_3 = (undefined8 *)((long)param_3 + (long)param_4); + param_2 = param_2 + 1; + if (param_2 == plVar5) break; + iVar51 = *(int *)(param_1 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 0020d8c4 (1552 bytes) name=FUN_0020d8c4 + +undefined8 * FUN_0020d8c4(undefined8 *param_1,uint param_2,uint param_3,int param_4,int param_5) + +{ + long *plVar1; + uint uVar2; + char cVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + bool bVar9; + bool bVar10; + char *pcVar11; + undefined8 *puVar12; + long *plVar13; + undefined8 local_10; + undefined8 local_8; + + uVar2 = param_2 & 7; + if ((param_3 >> 3 & 0x1ff) + 1 != (param_2 >> 3 & 0x1ff) + 1) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x28); + uVar8 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_; + uVar7 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_; + uVar6 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_; + uVar5 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_; + *(undefined8 *)(pcVar11 + 0x20) = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_; + *(undefined8 *)pcVar11 = uVar5; + *(undefined8 *)(pcVar11 + 8) = uVar6; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_10, + "cv::Ptr cv::getRowSumFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x4bf); + cv::String::deallocate((String *)&local_10); + } + if (param_5 < 0) { + param_5 = param_4 / 2; + } + bVar9 = (param_3 & 7) == 4; + if ((uVar2 != 0) || (!bVar9)) { + bVar10 = (param_3 & 7) != 6; + if ((uVar2 != 0) || (bVar10)) { + if (uVar2 == 2) { + if (bVar9) { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &DAT_004f5170; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f5560; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + goto joined_r0x0020dac4; + } + if (!bVar10) { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f51a0; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f5590; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + goto joined_r0x0020dac4; + } + } + if ((uVar2 != 3) || (!bVar9)) { + if ((uVar2 == 4) && (bVar9)) { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f5200; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f55f0; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + else if ((uVar2 != 3) || (bVar10)) { + if ((uVar2 != 5) || (bVar10)) { + if ((uVar2 != 6) || (bVar10)) { + cv::format("Unsupported combination of source format (=%d), and buffer format (=%d)", + (String *)&local_10,(ulong)param_2,(ulong)param_3); + cv::error(-0xd5,(String *)&local_10, + "cv::Ptr cv::getRowSumFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x4d9); + cv::String::deallocate((String *)&local_10); + *param_1 = 0; + param_1[1] = 0; + return param_1; + } + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &DAT_004f5290; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f5680; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + else { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f5260; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f5650; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f5230; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f5620; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f51d0; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f55c0; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f5140; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&PTR_FUN_004f5530; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar12 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar12 + 1) = param_4; + *(int *)((long)puVar12 + 0xc) = param_5; + *puVar12 = &PTR_FUN_004f5110; + plVar13 = operator_new(0x20); + plVar13[2] = (long)puVar12; + *(undefined4 *)(plVar13 + 1) = 1; + *plVar13 = (long)&DAT_004f5500; + plVar1 = plVar13 + 1; + *param_1 = plVar13; + param_1[1] = puVar12; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } +joined_r0x0020dac4: + if (iVar4 != 1) { + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x20] = + (char)s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_; + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x21] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,1); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x22] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,2); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x23] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,3); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x24] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,4); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x25] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,5); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x26] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,6); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x27] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_,7); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x18] = + (char)s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_; + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x19] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,1); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x1a] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,2); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x1b] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,3); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x1c] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,4); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x1d] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,5); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x1e] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,6); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x1f] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_,7); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x10] = + (char)s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_; + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x11] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,1); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x12] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,2); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x13] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,3); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x14] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,4); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x15] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,5); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x16] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,6); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0x17] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_,7); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[8] = + (char)s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_; + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[9] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,1); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[10] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,2); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0xb] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,3); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0xc] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,4); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0xd] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,5); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0xe] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,6); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0xf] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_,7); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[0] = + (char)s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_; + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[1] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,1); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[2] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,2); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[3] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,3); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[4] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,4); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[5] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,5); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[6] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,6); + s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548[7] = + SUB81(s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_,7); + return param_1; + } + (**(code **)(*plVar13 + 0x10))(); + return param_1; +} + + +================================================================== + +### FUNC 0020df30 (2072 bytes) name=FUN_0020df30 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 * +FUN_0020df30(undefined8 *param_1,undefined8 param_2,uint param_3,uint param_4,int param_5, + int param_6) + +{ + long *plVar1; + uint uVar2; + char cVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + bool bVar9; + bool bVar10; + undefined8 *puVar11; + long *plVar12; + undefined8 local_10; + undefined8 local_8; + + uVar2 = param_4 & 7; + if ((param_3 >> 3 & 0x1ff) + 1 != (param_4 >> 3 & 0x1ff) + 1) { + local_10 = 0; + local_8 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_10,0x28); + uVar8 = DAT_0045d590; + uVar7 = _LAB_0045d588; + uVar6 = _DAT_0045d580; + uVar5 = DAT_0045d578; + puVar11[4] = s_dstType__0045d598._0_8_; + *puVar11 = uVar5; + puVar11[1] = uVar6; + puVar11[2] = uVar7; + puVar11[3] = uVar8; + cv::error(-0xd7,(String *)&local_10, + "cv::Ptr cv::getColumnSumFilter(int, int, int, int, double)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x4e3); + cv::String::deallocate((String *)&local_10); + } + if (param_6 < 0) { + param_6 = param_5 / 2; + } + bVar9 = (param_3 & 7) != 4; + if ((bVar9) || (uVar2 != 0)) { + bVar10 = (param_3 & 7) != 6; + if ((bVar10) || (uVar2 != 0)) { + if ((bVar9) || (uVar2 != 2)) { + if ((bVar10) || (uVar2 != 2)) { + if ((bVar9) || (uVar2 != 3)) { + if ((bVar10) || (uVar2 != 3)) { + if ((bVar9) || (uVar2 != 4)) { + if ((bVar9) || (uVar2 != 5)) { + if ((bVar10) || (uVar2 != 5)) { + if ((bVar9) || (uVar2 != 6)) { + if ((bVar10) || (uVar2 != 6)) { + cv::format("Unsupported combination of sum format (=%d), and destination format (=%d)" + ,(String *)&local_10,(ulong)param_3,(ulong)param_4); + cv::error(-0xd5,(String *)&local_10, + "cv::Ptr cv::getColumnSumFilter(int, int, int, int, double)" + , + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp" + ,0x501); + cv::String::deallocate((String *)&local_10); + *param_1 = 0; + param_1[1] = 0; + return param_1; + } + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f53b0; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5890; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f5380; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5860; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f5350; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5830; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f5080; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5800; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f5050; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f57d0; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f5320; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f57a0; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f4ff0; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5770; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f52f0; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5740; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f5020; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f5710; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f52c0; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f56e0; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + else { + puVar11 = operator_new(0x38); + FUN_001c8d08(); + *puVar11 = &PTR_FUN_004f4fc0; + puVar11[4] = 0; + puVar11[5] = 0; + puVar11[6] = 0; + *(int *)(puVar11 + 1) = param_5; + *(int *)((long)puVar11 + 0xc) = param_6; + *(undefined4 *)(puVar11 + 3) = 0; + puVar11[2] = param_2; + plVar12 = operator_new(0x20); + plVar12[2] = (long)puVar11; + *(undefined4 *)(plVar12 + 1) = 1; + *plVar12 = (long)&PTR_FUN_004f56b0; + plVar1 = plVar12 + 1; + *param_1 = plVar12; + param_1[1] = puVar11; + do { + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + do { + iVar4 = (int)*plVar1; + cVar3 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar9) { + *(int *)plVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar4 == 1) { + (**(code **)(*plVar12 + 0x10))(); + } + return param_1; +} + + +================================================================== + +### FUNC 0020e7ac (708 bytes) name=FUN_0020e7ac + +undefined8 * +FUN_0020e7ac(undefined8 *param_1,ulong param_2,undefined4 param_3,int *param_4,undefined4 *param_5, + char param_6,undefined4 param_7) + +{ + long *plVar1; + uint uVar2; + char cVar3; + bool bVar4; + uint uVar5; + long lVar6; + void *pvVar7; + undefined8 *puVar8; + int iVar9; + int iVar10; + undefined4 uVar11; + ulong uVar12; + double dVar13; + long *local_50; + undefined8 uStack_48; + long *local_40 [2]; + long *local_30 [2]; + undefined8 uStack_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uVar2 = (uint)param_2 & 7; + uVar12 = param_2 & 0xffffffff; + uVar5 = (uint)(uVar12 >> 3) & 0x1ff; + if (uVar2 < 5) { + if (param_6 == '\0') { + iVar9 = uVar5 * 8 + 4; + FUN_0020d8c4(local_40,param_2,iVar9,*param_4,*param_5); + iVar10 = param_4[1]; + uVar11 = param_5[1]; + dVar13 = 1.0; + } + else { + iVar10 = *param_4; + iVar9 = 0x800000; + if (((param_2 & 7) != 0) && (iVar9 = 0x8000, uVar2 != 2)) { + iVar9 = 0x10000; + } + if (iVar9 < iVar10 * param_4[1]) { + iVar9 = uVar5 * 8 + 6; + FUN_0020d8c4(local_40,uVar12,iVar9,iVar10,*param_5); + iVar10 = param_4[1]; + uVar11 = param_5[1]; + dVar13 = 1.0 / (double)(iVar10 * *param_4); + } + else { + iVar9 = uVar5 * 8 + 4; + FUN_0020d8c4(local_40,uVar12,iVar9,iVar10,*param_5); + iVar10 = param_4[1]; + uVar11 = param_5[1]; + dVar13 = 1.0 / (double)(iVar10 * *param_4); + } + } + } + else { + iVar9 = uVar5 * 8 + 6; + FUN_0020d8c4(local_40,param_2,iVar9,*param_4,*param_5); + iVar10 = param_4[1]; + uVar11 = param_5[1]; + dVar13 = 1.0; + if (param_6 != '\0') { + dVar13 = 1.0 / (double)(iVar10 * *param_4); + } + } + FUN_0020df30(local_30,dVar13,iVar9,param_3,iVar10,uVar11); + uStack_18 = 0; + uStack_20 = 0; + uStack_48 = 0; + local_50 = (long *)0x0; + uStack_8 = 0; + local_10 = 0; + pvVar7 = operator_new(0x130); + FUN_001d5aa4(pvVar7,&local_50,local_40,local_30,uVar12,param_3,iVar9,param_7,0xffffffff,&uStack_20 + ); + puVar8 = operator_new(0x20); + *(undefined4 *)(puVar8 + 1) = 1; + puVar8[2] = pvVar7; + *puVar8 = &PTR_FUN_004f3ca0; + *param_1 = puVar8; + plVar1 = local_50 + 1; + param_1[1] = pvVar7; + if (local_50 != (long *)0x0) { + do { + lVar6 = *plVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar4) { + *(int *)plVar1 = (int)lVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*local_50 + 0x10))(); + } + } + plVar1 = local_30[0] + 1; + if (local_30[0] != (long *)0x0) { + do { + lVar6 = *plVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar4) { + *(int *)plVar1 = (int)lVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*local_30[0] + 0x10))(); + } + } + plVar1 = local_40[0] + 1; + if (local_40[0] != (long *)0x0) { + do { + lVar6 = *plVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar4) { + *(int *)plVar1 = (int)lVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*local_40[0] + 0x10))(); + } + } + return param_1; +} + + +================================================================== + +### FUNC 0020eb14 (1128 bytes) name=boxFilter + +/* cv::boxFilter(cv::_InputArray const&, cv::_OutputArray const&, int, cv::Size_, + cv::Point_, bool, int) */ + +void cv::boxFilter(_InputArray *param_1,_InputArray *param_2,uint param_3,undefined4 *param_4, + undefined8 *param_5,char param_6,uint param_7) + +{ + long *plVar1; + uint uVar2; + char cVar3; + bool bVar4; + long lVar5; + int iVar6; + undefined4 uVar7; + undefined4 uVar8; + Mat *pMVar9; + int *piVar10; + undefined4 *puVar11; + undefined8 local_e8; + long *local_e0; + long *local_d8; + undefined8 local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar6 = _InputArray::kind(param_1); + if (iVar6 == 0x10000) { + pMVar9 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar9; + local_bc = *(int *)(pMVar9 + 4); + local_b8 = *(int *)(pMVar9 + 8); + local_b4 = *(int *)(pMVar9 + 0xc); + local_b0 = *(undefined8 *)(pMVar9 + 0x10); + local_a8 = *(undefined8 *)(pMVar9 + 0x18); + local_a0 = *(undefined8 *)(pMVar9 + 0x20); + local_98 = *(undefined8 *)(pMVar9 + 0x28); + local_90 = *(undefined8 *)(pMVar9 + 0x30); + local_88 = *(long *)(pMVar9 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar4) { + *piVar10 = *piVar10 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar9 + 0x48); + local_68 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar2 = local_c0 & 7; + if (-1 < (int)param_3) { + uVar2 = param_3; + } + local_5c = *local_80; + local_60 = local_80[1]; + _OutputArray::create + ((_OutputArray *)param_2,(Mat *)&local_60,(uVar2 & 7) + (local_c0 & 0xff8),0xffffffff,0, + 0); + iVar6 = _InputArray::kind(param_2); + if (iVar6 == 0x10000) { + pMVar9 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar9; + local_50 = *(undefined8 *)(pMVar9 + 0x10); + local_5c = *(int *)(pMVar9 + 4); + local_58 = *(undefined4 *)(pMVar9 + 8); + local_54 = *(undefined4 *)(pMVar9 + 0xc); + local_48 = *(undefined8 *)(pMVar9 + 0x18); + local_40 = *(undefined8 *)(pMVar9 + 0x20); + local_38 = *(undefined8 *)(pMVar9 + 0x28); + local_30 = *(undefined8 *)(pMVar9 + 0x30); + local_28 = *(long *)(pMVar9 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar4) { + *piVar10 = *piVar10 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar9 + 0x48); + local_8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (((param_7 == 0) || (param_6 == '\0')) || ((param_7 >> 4 & 1) == 0)) { + uVar8 = *param_4; + uVar7 = param_4[1]; + } + else { + if (local_b8 == 1) { + param_4[1] = 1; + uVar7 = 1; + } + else { + uVar7 = param_4[1]; + } + if (local_b4 == 1) { + *param_4 = 1; + uVar8 = 1; + } + else { + uVar8 = *param_4; + } + } + local_e8 = CONCAT44(uVar7,uVar8); + local_d0 = *param_5; + FUN_0020e7ac(&local_e0,local_c0 & 0xfff,local_60 & 0xfff,&local_e8,&local_d0,param_6,param_7); + local_d0 = 0; + local_c8 = 0xffffffff; + local_c4 = 0xffffffff; + local_e8 = 0; + (**(code **)(*local_d8 + 0x28))(local_d8,(Mat *)&local_c0,(Mat *)&local_60,&local_d0,&local_e8,0); + plVar1 = local_e0 + 1; + if (local_e0 != (long *)0x0) { + do { + lVar5 = *plVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar4) { + *(int *)plVar1 = (int)lVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar5 == 1) { + (**(code **)(*local_e0 + 0x10))(); + } + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar10; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar4) { + *piVar10 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + puVar11 = local_20; + do { + *puVar11 = 0; + iVar6 = iVar6 + 1; + puVar11 = puVar11 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar6 = *piVar10; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar4) { + *piVar10 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + piVar10 = local_80; + do { + *piVar10 = 0; + iVar6 = iVar6 + 1; + piVar10 = piVar10 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0020f000 (68 bytes) name=blur + +/* cv::blur(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_, cv::Point_, int) + */ + +void cv::blur(undefined8 param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4, + undefined4 param_5) + +{ + undefined8 local_10; + undefined8 local_8; + + local_8 = *param_4; + local_10 = *param_3; + boxFilter(param_1,param_2,0xffffffff,&local_10,&local_8,1,param_5); + return; +} + + +================================================================== + +### FUNC 0020f044 (2540 bytes) name=sqrBoxFilter + +/* cv::sqrBoxFilter(cv::_InputArray const&, cv::_OutputArray const&, int, cv::Size_, + cv::Point_, bool, int) */ + +void cv::sqrBoxFilter(_InputArray *param_1,_InputArray *param_2,uint param_3,int *param_4, + int *param_5,char param_6,int param_7) + +{ + long *plVar1; + int *piVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + char cVar7; + long lVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + bool bVar13; + int iVar14; + ulong uVar15; + char *pcVar16; + undefined8 *puVar17; + long *plVar18; + long *plVar19; + int iVar20; + Mat *pMVar21; + undefined4 *puVar22; + double dVar23; + uint local_150; + int local_138; + int iStack_134; + long *local_130; + undefined8 uStack_128; + long *local_120; + undefined8 *local_118; + long *local_110 [2]; + String aSStack_100 [16]; + undefined8 local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar15 = _InputArray::type(param_1,-1); + local_150 = (uint)((uVar15 & 0xffffffff) >> 3) & 0x1ff; + uVar4 = (uint)uVar15 & 7; + _InputArray::size((int)param_1); + if ((int)param_3 < 0) { + param_3 = 5; + if (4 < uVar4) { + param_3 = 6; + } + } + else { + param_3 = param_3 & 7; + } + if ((param_6 != '\0') && (param_7 != 0)) { + if (iStack_134 == 1) { + param_4[1] = 1; + } + if (local_138 == 1) { + *param_4 = 1; + } + } + iVar20 = 6; + if ((uVar15 & 7) == 0) { + iVar20 = 4; + } + uVar3 = iVar20 + local_150 * 8; + iVar20 = local_150 * 8 + param_3; + iVar14 = _InputArray::kind(param_1); + if (iVar14 == 0x10000) { + pMVar21 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar21; + local_bc = *(int *)(pMVar21 + 4); + local_b8 = *(undefined4 *)(pMVar21 + 8); + local_b4 = *(undefined4 *)(pMVar21 + 0xc); + local_b0 = *(undefined8 *)(pMVar21 + 0x10); + local_a8 = *(undefined8 *)(pMVar21 + 0x18); + local_a0 = *(undefined8 *)(pMVar21 + 0x20); + local_98 = *(undefined8 *)(pMVar21 + 0x28); + local_90 = *(undefined8 *)(pMVar21 + 0x30); + local_88 = *(long *)(pMVar21 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar13) { + *piVar2 = *piVar2 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + if (*(int *)(pMVar21 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar21 + 0x48); + local_68 = (*(undefined8 **)(pMVar21 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar21); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_60 = CONCAT44(iStack_134,local_138); + _OutputArray::create((_OutputArray *)param_2,(Mat *)&local_60,iVar20,0xffffffff,0,0); + iVar14 = _InputArray::kind(param_2); + if (iVar14 == 0x10000) { + pMVar21 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar6 = *(uint *)pMVar21; + local_50 = *(undefined8 *)(pMVar21 + 0x10); + local_60 = *(ulong *)pMVar21; + local_58 = *(undefined4 *)(pMVar21 + 8); + local_54 = *(undefined4 *)(pMVar21 + 0xc); + local_48 = *(undefined8 *)(pMVar21 + 0x18); + local_40 = *(undefined8 *)(pMVar21 + 0x20); + local_38 = *(undefined8 *)(pMVar21 + 0x28); + local_30 = *(undefined8 *)(pMVar21 + 0x30); + local_28 = *(long *)(pMVar21 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar13) { + *piVar2 = *piVar2 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + if (*(int *)(pMVar21 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar21 + 0x48); + local_8 = (*(undefined8 **)(pMVar21 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar6; + Mat::copySize((Mat *)&local_60,pMVar21); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iVar5 = *param_4; + iVar14 = *param_5; + if ((uVar3 >> 3) + 1 != local_150 + 1) { + local_f0 = 0; + local_e8 = 0; + pcVar16 = (char *)String::allocate((String *)&local_f0,0x28); + uVar12 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._24_8_; + uVar11 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._16_8_; + uVar10 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._8_8_; + uVar9 = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._0_8_; + *(undefined8 *)(pcVar16 + 0x20) = s_CV_MAT_CN_sumType_____CV_MAT_CN__0045d548._32_8_; + *(undefined8 *)pcVar16 = uVar9; + *(undefined8 *)(pcVar16 + 8) = uVar10; + *(undefined8 *)(pcVar16 + 0x10) = uVar11; + *(undefined8 *)(pcVar16 + 0x18) = uVar12; + error(-0xd7,(String *)&local_f0, + "cv::Ptr cv::getSqrRowSumFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x5b7); + String::deallocate((String *)&local_f0); + } + if (iVar14 < 0) { + iVar14 = iVar5 / 2; + } + bVar13 = (uVar15 & 7) != 0; + if (((uVar3 & 7) != 4) || (bVar13)) { + if ((uVar3 & 7) != 6) { +LAB_0020f7e8: + format("Unsupported combination of source format (=%d), and buffer format (=%d)",aSStack_100, + uVar15 & 0xffffffff,(ulong)uVar3); + error(-0xd5,aSStack_100, + "cv::Ptr cv::getSqrRowSumFilter(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x5cb); + String::deallocate(aSStack_100); + local_120 = (long *)0x0; + local_118 = (undefined8 *)0x0; + goto LAB_0020f338; + } + if (bVar13) { + if (uVar4 == 2) { + puVar17 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar17 + 1) = iVar5; + *(int *)((long)puVar17 + 0xc) = iVar14; + *puVar17 = &PTR_FUN_004f5440; + local_120 = operator_new(0x20); + *(undefined4 *)(local_120 + 1) = 1; + *local_120 = (long)&PTR_FUN_004f5920; + plVar1 = local_120 + 1; + local_120[2] = (long)puVar17; + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + do { + iVar14 = (int)*plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = iVar14 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + local_118 = puVar17; + } while (cVar7 != '\0'); + } + else if (uVar4 == 3) { + puVar17 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar17 + 1) = iVar5; + *(int *)((long)puVar17 + 0xc) = iVar14; + *puVar17 = &PTR_FUN_004f5470; + local_120 = operator_new(0x20); + *(undefined4 *)(local_120 + 1) = 1; + *local_120 = (long)&DAT_004f5950; + plVar1 = local_120 + 1; + local_120[2] = (long)puVar17; + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + do { + iVar14 = (int)*plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = iVar14 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + local_118 = puVar17; + } while (cVar7 != '\0'); + } + else if (uVar4 == 5) { + puVar17 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar17 + 1) = iVar5; + *(int *)((long)puVar17 + 0xc) = iVar14; + *puVar17 = &PTR_FUN_004f54a0; + local_120 = operator_new(0x20); + *(undefined4 *)(local_120 + 1) = 1; + *local_120 = (long)&PTR_FUN_004f5980; + plVar1 = local_120 + 1; + local_120[2] = (long)puVar17; + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + do { + iVar14 = (int)*plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = iVar14 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + local_118 = puVar17; + } while (cVar7 != '\0'); + } + else { + if (uVar4 != 6) goto LAB_0020f7e8; + puVar17 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar17 + 1) = iVar5; + *(int *)((long)puVar17 + 0xc) = iVar14; + *puVar17 = &PTR_FUN_004f54d0; + local_120 = operator_new(0x20); + *(undefined4 *)(local_120 + 1) = 1; + *local_120 = (long)&PTR_FUN_004f59b0; + plVar1 = local_120 + 1; + local_120[2] = (long)puVar17; + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + do { + iVar14 = (int)*plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = iVar14 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + local_118 = puVar17; + } while (cVar7 != '\0'); + } + } + else { + puVar17 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar17 + 1) = iVar5; + *(int *)((long)puVar17 + 0xc) = iVar14; + *puVar17 = &PTR_FUN_004f5410; + local_120 = operator_new(0x20); + *(undefined4 *)(local_120 + 1) = 1; + *local_120 = (long)&PTR_FUN_004f58f0; + plVar1 = local_120 + 1; + local_120[2] = (long)puVar17; + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + do { + iVar14 = (int)*plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = iVar14 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + local_118 = puVar17; + } while (cVar7 != '\0'); + } + } + else { + puVar17 = operator_new(0x10); + FUN_001c8ce4(); + *(int *)(puVar17 + 1) = iVar5; + *(int *)((long)puVar17 + 0xc) = iVar14; + *puVar17 = &PTR_FUN_004f53e0; + local_120 = operator_new(0x20); + *(undefined4 *)(local_120 + 1) = 1; + *local_120 = (long)&PTR_FUN_004f58c0; + plVar1 = local_120 + 1; + local_120[2] = (long)puVar17; + do { + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + do { + iVar14 = (int)*plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = iVar14 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + local_118 = puVar17; + } while (cVar7 != '\0'); + } + if (iVar14 == 1) { + (**(code **)(*local_120 + 0x10))(); + } +LAB_0020f338: + dVar23 = 1.0; + if (param_6 != '\0') { + dVar23 = 1.0 / (double)(param_4[1] * *param_4); + } + FUN_0020df30(local_110,dVar23,uVar3,iVar20,param_4[1],param_5[1]); + local_d8 = 0; + local_e0 = 0; + uStack_128 = 0; + local_130 = (long *)0x0; + uStack_c8 = 0; + local_d0 = 0; + plVar18 = operator_new(0x130); + FUN_001d5aa4(plVar18,&local_130,&local_120,local_110,uVar15 & 0xffffffff,iVar20,uVar3,param_7, + 0xffffffff,&local_e0); + plVar19 = operator_new(0x20); + *(undefined4 *)(plVar19 + 1) = 1; + plVar19[2] = (long)plVar18; + *plVar19 = (long)&PTR_FUN_004f3ca0; + plVar1 = local_130 + 1; + if (local_130 != (long *)0x0) { + do { + lVar8 = *plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)lVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if ((int)lVar8 == 1) { + (**(code **)(*local_130 + 0x10))(); + } + } + local_e0 = 0; + local_d8 = 0xffffffffffffffff; + local_f0 = 0; + (**(code **)(*plVar18 + 0x28))(plVar18,(Mat *)&local_c0,(Mat *)&local_60,&local_e0,&local_f0,0); + plVar1 = plVar19 + 1; + do { + lVar8 = *plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)lVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if ((int)lVar8 == 1) { + (**(code **)(*plVar19 + 0x10))(plVar19); + } + plVar1 = local_110[0] + 1; + if (local_110[0] != (long *)0x0) { + do { + lVar8 = *plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)lVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if ((int)lVar8 == 1) { + (**(code **)(*local_110[0] + 0x10))(); + } + } + plVar1 = local_120 + 1; + if (local_120 != (long *)0x0) { + do { + lVar8 = *plVar1; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar13) { + *(int *)plVar1 = (int)lVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if ((int)lVar8 == 1) { + (**(code **)(*local_120 + 0x10))(); + } + } + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar20 = *piVar2; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar13) { + *piVar2 = iVar20 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar20 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar20 = 0; + puVar22 = local_20; + do { + *puVar22 = 0; + iVar20 = iVar20 + 1; + puVar22 = puVar22 + 1; + } while (iVar20 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + iVar20 = *piVar2; + cVar7 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar13) { + *piVar2 = iVar20 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar20 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar20 = 0; + puVar22 = local_80; + do { + *puVar22 = 0; + iVar20 = iVar20 + 1; + puVar22 = puVar22 + 1; + } while (iVar20 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0020fbc0 (1264 bytes) name=getGaussianKernel + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::getGaussianKernel(int, double, int) */ + +void __thiscall cv::getGaussianKernel(cv *this,int param_1,double param_2,int param_3) + +{ + int iVar1; + int iVar2; + undefined1 auVar3 [16]; + double dVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + char *pcVar12; + ulong uVar13; + double *pdVar14; + undefined8 *puVar15; + uint uVar16; + long lVar17; + ulong uVar18; + double *pdVar19; + undefined8 *puVar20; + Mat *in_x8; + double *pdVar21; + undefined *puVar22; + float fVar23; + double dVar24; + double dVar25; + uint local_10 [4]; + + uVar9 = (uint)this; + if ((7 < (int)uVar9 || 0.0 < param_2) || + (iVar1 = (int)(((ulong)this & 0xffffffff) >> 0x1f), (uVar9 + iVar1 & 1) - iVar1 != 1)) { + puVar22 = (undefined *)0x0; + } + else { + puVar22 = &UNK_0045dbf0 + (long)((int)uVar9 >> 1) * 0x1c; + } + if (1 < param_1 - 5U) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar12 = (char *)String::allocate((String *)local_10,0x22); + uVar8 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._24_8_; + uVar7 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._16_8_; + uVar6 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._8_8_; + uVar5 = s_ktype____CV_32F____ktype____CV_6_0043e3a0._0_8_; + *(undefined2 *)(pcVar12 + 0x20) = s_ktype____CV_32F____ktype____CV_6_0043e3a0._32_2_; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + error(-0xd7,(String *)local_10,"cv::Mat cv::getGaussianKernel(int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x60d); + String::deallocate((String *)local_10); + } + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar6 = _UNK_002100d8; + uVar5 = _DAT_002100d0; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 8) = uVar6; + *(undefined8 *)in_x8 = uVar5; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + local_10[1] = 1; + local_10[0] = uVar9; + Mat::create(in_x8,2,(int *)local_10,param_1 & 0xfff); + pdVar21 = *(double **)(in_x8 + 0x10); + if (param_2 <= 0.0) { + param_2 = DAT_002100e8 + DAT_002100e0 * ((double)(int)(uVar9 - 1) * 0.5 + -1.0); + } + dVar25 = -0.5 / (param_2 * param_2); + if ((int)uVar9 < 1) { + return; + } + uVar16 = uVar9 - 1; + if (puVar22 == (undefined *)0x0) { + if (param_1 == 5) { + dVar24 = 0.0; + lVar17 = 0; + do { + dVar4 = (double)(int)lVar17 - (double)(int)uVar16 * 0.5; + dVar4 = ::exp(dVar25 * dVar4 * dVar4); + *(float *)((long)pdVar21 + lVar17 * 4) = (float)dVar4; + lVar17 = lVar17 + 1; + dVar24 = dVar24 + (double)(float)dVar4; + } while (lVar17 != (ulong)uVar16 + 1); + goto LAB_0020fe84; + } + dVar24 = 0.0; + lVar17 = 0; + do { + dVar4 = (double)(int)lVar17 - (double)(int)uVar16 * 0.5; + dVar4 = ::exp(dVar25 * dVar4 * dVar4); + pdVar21[lVar17] = dVar4; + lVar17 = lVar17 + 1; + dVar24 = dVar24 + dVar4; + } while (lVar17 != (ulong)uVar16 + 1); + } + else { + if (param_1 == 5) { + dVar24 = 0.0; + lVar17 = 0; + do { + fVar23 = *(float *)(puVar22 + lVar17 * 4); + *(float *)((long)pdVar21 + lVar17 * 4) = fVar23; + lVar17 = lVar17 + 1; + dVar24 = dVar24 + (double)fVar23; + } while ((int)lVar17 < (int)uVar9); +LAB_0020fe84: + uVar10 = -((uint)((ulong)pdVar21 >> 2) & 3) & 3; + if (uVar9 < uVar10) { + uVar10 = uVar9; + } + uVar13 = (ulong)uVar10; + dVar24 = 1.0 / dVar24; + if ((int)uVar9 < 5) { + uVar13 = (ulong)this & 0xffffffff; + } + else { + uVar18 = 0; + uVar11 = 0; + if (uVar10 == 0) goto LAB_0020ff20; + } + uVar11 = (uint)uVar13; + *(float *)pdVar21 = (float)((double)*(float *)pdVar21 * dVar24); + if ((uVar11 != 1) && + (*(float *)((long)pdVar21 + 4) = (float)((double)*(float *)((long)pdVar21 + 4) * dVar24), + uVar11 != 2)) { + *(float *)(pdVar21 + 1) = (float)((double)*(float *)(pdVar21 + 1) * dVar24); + if (uVar11 == 4) { + *(float *)((long)pdVar21 + 0xc) = + (float)((double)*(float *)((long)pdVar21 + 0xc) * dVar24); + } + else { + uVar13 = 3; + } + } + uVar18 = uVar13; + if (uVar9 == uVar11) { + return; + } +LAB_0020ff20: + uVar10 = ((uVar9 - uVar11) - 4 >> 2) + 1; + iVar1 = uVar10 * 4; + if (2 < uVar16 - uVar11) { + puVar15 = (undefined8 *)((long)pdVar21 + (ulong)uVar11 * 4); + uVar16 = 0; + puVar20 = puVar15; + do { + uVar16 = uVar16 + 1; + dVar25 = (double)(float)*puVar20 * dVar24; + dVar4 = (double)(float)((ulong)*puVar20 >> 0x20) * dVar24; + auVar3._8_4_ = SUB84(dVar4,0); + auVar3._0_8_ = dVar25; + auVar3._12_4_ = (int)((ulong)dVar4 >> 0x20); + puVar15[1] = CONCAT44((float)((double)(float)((ulong)puVar20[1] >> 0x20) * dVar24), + (float)((double)(float)puVar20[1] * dVar24)); + *puVar15 = CONCAT44((float)auVar3._8_8_,(float)dVar25); + puVar15 = puVar15 + 2; + puVar20 = puVar20 + 2; + } while (uVar16 < uVar10); + uVar18 = (ulong)(uint)((int)uVar18 + iVar1); + if (uVar9 - uVar11 == iVar1) { + return; + } + } + uVar13 = -(uVar18 >> 0x1f) & 0xfffffffc00000000 | uVar18 << 2; + *(float *)((long)pdVar21 + uVar13) = + (float)((double)*(float *)((long)pdVar21 + uVar13) * dVar24); + if ((int)uVar9 <= (int)uVar18 + 1) { + return; + } + *(float *)((long)pdVar21 + uVar13 + 4) = + (float)((double)*(float *)((long)pdVar21 + uVar13 + 4) * dVar24); + if ((int)uVar9 <= (int)uVar18 + 2) { + return; + } + *(float *)((long)pdVar21 + uVar13 + 8) = + (float)((double)*(float *)((long)pdVar21 + uVar13 + 8) * dVar24); + return; + } + dVar24 = 0.0; + lVar17 = 0; + do { + fVar23 = *(float *)(puVar22 + lVar17 * 4); + pdVar21[lVar17] = (double)fVar23; + lVar17 = lVar17 + 1; + dVar24 = dVar24 + (double)fVar23; + } while ((int)lVar17 < (int)uVar9); + } + uVar16 = (uint)((ulong)pdVar21 >> 3) & 1; + if (uVar9 < uVar16) { + uVar16 = uVar9; + } + uVar13 = (ulong)uVar16; + dVar24 = 1.0 / dVar24; + if ((int)uVar9 < 4) { + uVar13 = (ulong)this & 0xffffffff; + } + else { + uVar18 = 0; + uVar10 = 0; + if (uVar16 == 0) goto LAB_0020fdac; + } + uVar10 = (uint)uVar13; + *pdVar21 = *pdVar21 * dVar24; + if (uVar10 != 1) { + pdVar21[1] = pdVar21[1] * dVar24; + if (uVar10 == 3) { + pdVar21[2] = pdVar21[2] * dVar24; + } + else { + uVar13 = 2; + } + } + uVar18 = uVar13; + if (uVar9 == uVar10) { + return; + } +LAB_0020fdac: + iVar2 = uVar9 - uVar10; + uVar9 = (iVar2 - 2U >> 1) + 1; + iVar1 = uVar9 * 2; + if (iVar2 != 1) { + uVar16 = 0; + pdVar14 = pdVar21 + uVar10; + pdVar19 = pdVar21 + uVar10; + do { + dVar25 = *pdVar14; + uVar16 = uVar16 + 1; + pdVar19[1] = pdVar14[1] * dVar24; + *pdVar19 = dVar25 * dVar24; + pdVar14 = pdVar14 + 2; + pdVar19 = pdVar19 + 2; + } while (uVar16 < uVar9); + uVar18 = (ulong)(uint)((int)uVar18 + iVar1); + if (iVar2 == iVar1) { + return; + } + } + uVar13 = -(uVar18 >> 0x1f) & 0xfffffff800000000 | uVar18 << 3; + *(double *)((long)pdVar21 + uVar13) = *(double *)((long)pdVar21 + uVar13) * dVar24; + return; +} + + +================================================================== + +### FUNC 002100f0 (1692 bytes) name=FUN_002100f0 + +void FUN_002100f0(double param_1,double param_2,Mat *param_3,Mat *param_4,uint param_5,uint *param_6 + ) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + char cVar5; + bool bVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + int iVar12; + uint uVar13; + char *pcVar14; + undefined4 *puVar15; + long lVar16; + uint uVar17; + undefined8 *puVar18; + undefined8 *puVar19; + int iVar20; + undefined8 uVar21; + double dVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined8 uVar25; + undefined8 uVar26; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + uVar3 = param_5 & 7; + uVar2 = param_5 & 7; + if (param_2 <= 0.0) { + param_2 = param_1; + } + uVar17 = *param_6; + if ((int)uVar17 < 1) { + if (param_1 <= 0.0) { + if ((0 < (int)param_6[1]) || (param_2 <= 0.0)) goto LAB_00210148; +LAB_0021071c: + dVar22 = 3.0; + if (uVar3 != 0) { + dVar22 = 4.0; + } + lVar16 = lrint(dVar22 * param_2 * 2.0 + 1.0); + uVar17 = *param_6; + param_6[1] = (uint)lVar16 | 1; + } + else { + dVar22 = 3.0; + if ((param_5 & 7) != 0) { + dVar22 = 4.0; + } + lVar16 = lrint(dVar22 * param_1 * 2.0 + 1.0); + uVar17 = (uint)lVar16 | 1; + param_5 = param_6[1]; + *param_6 = uVar17; + if (((int)param_5 < 1) && (0.0 < param_2)) goto LAB_0021071c; + } + if (0 < (int)uVar17) { +LAB_002106c8: + if (((uVar17 & 1) != 0) && (uVar13 = param_6[1], 0 < (int)uVar13)) goto LAB_002106d8; + } +LAB_00210148: + local_60 = 0; + local_58 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_60,0x54); + uVar11 = s_ksize_width_>_0____ksize_width___0045d5f8._72_8_; + uVar10 = s_ksize_width_>_0____ksize_width___0045d5f8._64_8_; + uVar9 = s_ksize_width_>_0____ksize_width___0045d5f8._56_8_; + uVar8 = s_ksize_width_>_0____ksize_width___0045d5f8._48_8_; + uVar7 = s_ksize_width_>_0____ksize_width___0045d5f8._40_8_; + uVar26 = s_ksize_width_>_0____ksize_width___0045d5f8._32_8_; + uVar25 = s_ksize_width_>_0____ksize_width___0045d5f8._24_8_; + uVar24 = s_ksize_width_>_0____ksize_width___0045d5f8._16_8_; + uVar23 = s_ksize_width_>_0____ksize_width___0045d5f8._8_8_; + uVar21 = s_ksize_width_>_0____ksize_width___0045d5f8._0_8_; + param_5 = 0x45de30; + *(undefined4 *)(pcVar14 + 0x50) = s_ksize_width_>_0____ksize_width___0045d5f8._80_4_; + *(undefined8 *)pcVar14 = uVar21; + *(undefined8 *)(pcVar14 + 8) = uVar23; + *(undefined8 *)(pcVar14 + 0x10) = uVar24; + *(undefined8 *)(pcVar14 + 0x18) = uVar25; + *(undefined8 *)(pcVar14 + 0x20) = uVar26; + *(undefined8 *)(pcVar14 + 0x28) = uVar7; + *(undefined8 *)(pcVar14 + 0x30) = uVar8; + *(undefined8 *)(pcVar14 + 0x38) = uVar9; + *(undefined8 *)(pcVar14 + 0x40) = uVar10; + *(undefined8 *)(pcVar14 + 0x48) = uVar11; + cv::error(-0xd7,(String *)&local_60, + "void cv::createGaussianKernels(cv::Mat&, cv::Mat&, int, cv::Size, double, double)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0x643); + cv::String::deallocate((String *)&local_60); + uVar17 = *param_6; + } + else { + uVar13 = param_6[1]; + if ((int)uVar13 < 1) { + if (0.0 < param_2) goto LAB_0021071c; + goto LAB_002106c8; + } + if ((uVar17 & 1) == 0) goto LAB_00210148; +LAB_002106d8: + if ((uVar13 & 1) == 0) goto LAB_00210148; + } + if (param_1 < 0.0) { + param_1 = 0.0; + } + if (param_2 < 0.0) { + param_2 = 0.0; + } + uVar3 = uVar2; + if (uVar2 < 5) { + uVar3 = 5; + } + cv::getGaussianKernel((cv *)(ulong)uVar17,uVar3,param_1,param_5); + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(param_3 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_3 + 0x38) + 0x14); + do { + iVar12 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar12 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(param_3); + } + } + *(undefined8 *)(param_3 + 0x38) = 0; + *(undefined8 *)(param_3 + 0x10) = 0; + *(undefined8 *)(param_3 + 0x28) = 0; + *(undefined8 *)(param_3 + 0x20) = 0; + *(undefined8 *)(param_3 + 0x18) = 0; + if (*(int *)(param_3 + 4) < 1) { + *(undefined4 *)param_3 = (undefined4)local_60; +LAB_00210280: + if (2 < local_60._4_4_) goto LAB_0021028c; + *(int *)(param_3 + 4) = local_60._4_4_; + puVar18 = *(undefined8 **)(param_3 + 0x48); + *(undefined4 *)(param_3 + 8) = (undefined4)local_58; + *(undefined4 *)(param_3 + 0xc) = local_58._4_4_; + *puVar18 = *local_18; + puVar18[1] = local_18[1]; + } + else { + iVar12 = 0; + puVar15 = *(undefined4 **)(param_3 + 0x40); + do { + *puVar15 = 0; + iVar12 = iVar12 + 1; + puVar15 = puVar15 + 1; + } while (iVar12 < *(int *)(param_3 + 4)); + *(undefined4 *)param_3 = (undefined4)local_60; + if (*(int *)(param_3 + 4) < 3) goto LAB_00210280; +LAB_0021028c: + cv::Mat::copySize(param_3,(Mat *)&local_60); + } + iVar12 = (int)&local_50; + *(undefined8 *)(param_3 + 0x18) = uStack_48; + *(undefined8 *)(param_3 + 0x10) = local_50; + *(undefined8 *)(param_3 + 0x28) = uStack_38; + *(undefined8 *)(param_3 + 0x20) = local_40; + *(long *)(param_3 + 0x38) = lStack_28; + *(undefined8 *)(param_3 + 0x30) = local_30; + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar20 = *piVar1; + iVar12 = iVar20 + -1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar12; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar20 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_60._4_4_) { + iVar20 = 0; + puVar15 = local_20; + do { + *puVar15 = 0; + iVar20 = iVar20 + 1; + puVar15 = puVar15 + 1; + } while (iVar20 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if ((param_6[1] == *param_6) && (ABS(param_1 - param_2) < DAT_002107f0)) { + if (param_3 == param_4) { + return; + } + if (*(long *)(param_3 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_3 + 0x38) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(param_4 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_4 + 0x38) + 0x14); + do { + iVar12 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar12 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(param_4); + } + } + *(undefined8 *)(param_4 + 0x38) = 0; + *(undefined8 *)(param_4 + 0x10) = 0; + *(undefined8 *)(param_4 + 0x28) = 0; + *(undefined8 *)(param_4 + 0x20) = 0; + *(undefined8 *)(param_4 + 0x18) = 0; + if (*(int *)(param_4 + 4) < 1) { + *(undefined4 *)param_4 = *(undefined4 *)param_3; +LAB_00210608: + iVar12 = *(int *)(param_3 + 4); + if (iVar12 < 3) { + puVar19 = *(undefined8 **)(param_3 + 0x48); + puVar18 = *(undefined8 **)(param_4 + 0x48); + uVar4 = *(undefined4 *)(param_3 + 8); + *(undefined4 *)(param_4 + 0xc) = *(undefined4 *)(param_3 + 0xc); + *(int *)(param_4 + 4) = iVar12; + *(undefined4 *)(param_4 + 8) = uVar4; + *puVar18 = *puVar19; + puVar18[1] = puVar19[1]; + goto LAB_00210640; + } + } + else { + iVar12 = 0; + puVar15 = *(undefined4 **)(param_4 + 0x40); + do { + *puVar15 = 0; + iVar12 = iVar12 + 1; + puVar15 = puVar15 + 1; + } while (iVar12 < *(int *)(param_4 + 4)); + *(undefined4 *)param_4 = *(undefined4 *)param_3; + if (*(int *)(param_4 + 4) < 3) goto LAB_00210608; + } + cv::Mat::copySize(param_4,param_3); +LAB_00210640: + uVar26 = *(undefined8 *)(param_3 + 0x10); + uVar25 = *(undefined8 *)(param_3 + 0x28); + uVar24 = *(undefined8 *)(param_3 + 0x20); + uVar23 = *(undefined8 *)(param_3 + 0x38); + uVar21 = *(undefined8 *)(param_3 + 0x30); + *(undefined8 *)(param_4 + 0x18) = *(undefined8 *)(param_3 + 0x18); + *(undefined8 *)(param_4 + 0x10) = uVar26; + *(undefined8 *)(param_4 + 0x28) = uVar25; + *(undefined8 *)(param_4 + 0x20) = uVar24; + *(undefined8 *)(param_4 + 0x38) = uVar23; + *(undefined8 *)(param_4 + 0x30) = uVar21; + return; + } + if (uVar2 < 5) { + uVar2 = 5; + } + cv::getGaussianKernel((cv *)(ulong)param_6[1],uVar2,param_2,iVar12); + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(param_4 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_4 + 0x38) + 0x14); + do { + iVar12 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar12 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(param_4); + } + } + *(undefined8 *)(param_4 + 0x38) = 0; + *(undefined8 *)(param_4 + 0x10) = 0; + *(undefined8 *)(param_4 + 0x28) = 0; + *(undefined8 *)(param_4 + 0x20) = 0; + *(undefined8 *)(param_4 + 0x18) = 0; + if (*(int *)(param_4 + 4) < 1) { + *(undefined4 *)param_4 = (undefined4)local_60; +LAB_002103f0: + if (local_60._4_4_ < 3) { + *(int *)(param_4 + 4) = local_60._4_4_; + puVar18 = *(undefined8 **)(param_4 + 0x48); + *(undefined4 *)(param_4 + 8) = (undefined4)local_58; + *(undefined4 *)(param_4 + 0xc) = local_58._4_4_; + *puVar18 = *local_18; + puVar18[1] = local_18[1]; + goto LAB_00210408; + } + } + else { + iVar12 = 0; + puVar15 = *(undefined4 **)(param_4 + 0x40); + do { + *puVar15 = 0; + iVar12 = iVar12 + 1; + puVar15 = puVar15 + 1; + } while (iVar12 < *(int *)(param_4 + 4)); + *(undefined4 *)param_4 = (undefined4)local_60; + if (*(int *)(param_4 + 4) < 3) goto LAB_002103f0; + } + cv::Mat::copySize(param_4,(Mat *)&local_60); +LAB_00210408: + *(undefined8 *)(param_4 + 0x18) = uStack_48; + *(undefined8 *)(param_4 + 0x10) = local_50; + *(undefined8 *)(param_4 + 0x28) = uStack_38; + *(undefined8 *)(param_4 + 0x20) = local_40; + *(long *)(param_4 + 0x38) = lStack_28; + *(undefined8 *)(param_4 + 0x30) = local_30; + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar12 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar12 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_60._4_4_) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00210800 (592 bytes) name=FUN_00210800 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +FUN_00210800(undefined8 param_1,undefined4 param_2,undefined8 *param_3,undefined4 param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined8 *puVar5; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110 [2]; + Mat *local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8 [2]; + Mat *local_f0; + undefined4 local_e8; + undefined4 local_e4; + undefined8 local_e0; + undefined8 uStack_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_78 = &local_70; + local_18 = &local_10; + uStack_b8 = _UNK_00210aa8; + local_c0 = _DAT_00210aa0; + uStack_68 = 0; + local_70 = 0; + uStack_58 = _UNK_00210aa8; + local_60 = _DAT_00210aa0; + local_e0 = *param_3; + uStack_8 = 0; + local_10 = 0; + local_80 = &uStack_b8; + local_20 = &uStack_58; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + FUN_002100f0((Mat *)&local_c0,(Mat *)&local_60,param_2,&local_e0); + uStack_d8 = 0; + local_e0 = 0; + uStack_c8 = 0; + local_d0 = 0; + local_100 = 0; + local_fc = 0; + local_110[0] = 0x1010000; + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x1010000; + local_118 = 0xffffffff; + local_114 = 0xffffffff; + local_108 = (Mat *)&local_c0; + local_f0 = (Mat *)&local_60; + FUN_001d5c50(param_1,0,param_2,param_2,local_110,local_f8,&local_118,param_4,0xffffffff,&local_e0) + ; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar4 = 0; + puVar5 = local_20; + do { + *(undefined4 *)puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } while (iVar4 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar4 = 0; + puVar5 = local_80; + do { + *(undefined4 *)puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } while (iVar4 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + return param_1; +} + + +================================================================== + +### FUNC 00210ab0 (732 bytes) name=GaussianBlur + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::GaussianBlur(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_, double, double, + int) */ + +void cv::GaussianBlur(undefined8 param_1_00,undefined8 param_2_00,_InputArray *param_1, + _OutputArray *param_2,int *param_5,uint param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + uint uVar4; + int iVar5; + undefined8 *puVar6; + int local_100; + int local_fc; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + int local_d8; + int local_d4; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + uVar4 = _InputArray::type(param_1,-1); + _InputArray::size((int)param_1); + _OutputArray::create(param_2,(Mat *)&local_60,uVar4,0xffffffff,0,0); + if ((param_6 == 0) || ((param_6 >> 4 & 1) == 0)) { +LAB_00210b3c: + local_d8 = *param_5; + if (local_d8 != 1) { + local_d4 = param_5[1]; + goto LAB_00210b4c; + } + } + else { + if (local_fc == 1) { + param_5[1] = 1; + } + if (local_100 != 1) goto LAB_00210b3c; + *param_5 = 1; + } + local_d4 = param_5[1]; + local_d8 = 1; + if (local_d4 == 1) { + _InputArray::copyTo(param_1,param_2); + return; + } +LAB_00210b4c: + local_18 = &local_10; + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_20 = &uStack_58; + uStack_58 = _UNK_00210de8; + local_60 = _DAT_00210de0; + local_b0 = 0; + uStack_8 = 0; + local_10 = 0; + local_a8 = 0; + uStack_b8 = _UNK_00210de8; + local_c0 = _DAT_00210de0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + FUN_002100f0(param_1_00,param_2_00,(Mat *)&local_c0,(Mat *)&local_60,uVar4,&local_d8); + local_e0 = 0; + local_dc = 0; + local_f0[0] = 0x1010000; + local_c8 = 0; + local_c4 = 0; + local_d8 = 0x1010000; + local_f8 = 0xffffffff; + local_f4 = 0xffffffff; + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + sepFilter2D(0,param_1,param_2,uVar4 & 7,local_f0,&local_d8,&local_f8,param_6); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar5 = 0; + puVar6 = local_20; + do { + *(undefined4 *)puVar6 = 0; + iVar5 = iVar5 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } while (iVar5 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar5 = 0; + puVar6 = local_80; + do { + *(undefined4 *)puVar6 = 0; + iVar5 = iVar5 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } while (iVar5 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00210df0 (8436 bytes) name=medianBlur + +/* WARNING: Removing unreachable block (ram,0x00210fb0) */ +/* WARNING: Removing unreachable block (ram,0x00210fb4) */ +/* WARNING: Removing unreachable block (ram,0x00210fbc) */ +/* WARNING: Removing unreachable block (ram,0x00210fc4) */ +/* WARNING: Removing unreachable block (ram,0x00211730) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::medianBlur(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::medianBlur(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + undefined1 (*pauVar7) [16]; + undefined1 (*pauVar8) [16]; + undefined1 (*pauVar9) [16]; + uint uVar10; + uint uVar11; + uint uVar12; + int iVar13; + int iVar14; + bool bVar15; + uint uVar16; + int iVar17; + undefined1 *puVar18; + undefined1 *puVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined8 uVar25; + undefined2 uVar26; + char cVar27; + int iVar28; + undefined8 *puVar29; + char *pcVar30; + undefined1 (*pauVar31) [16]; + float *pfVar32; + int *piVar33; + Mat *pMVar34; + float *pfVar35; + float *pfVar36; + ulong uVar37; + ulong uVar38; + long lVar39; + ulong uVar40; + float *pfVar41; + ulong uVar42; + long lVar43; + ulong uVar44; + undefined1 (*pauVar45) [16]; + undefined1 (*pauVar46) [16]; + int iVar47; + uint uVar48; + uint uVar49; + int iVar50; + ulong uVar51; + int iVar52; + uint uVar53; + ulong uVar54; + uint uVar55; + float fVar56; + double dVar57; + float fVar58; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + float fVar62; + float fVar63; + undefined1 auVar64 [16]; + float fVar65; + undefined1 auVar66 [16]; + float fVar67; + undefined1 auVar68 [16]; + float fVar69; + undefined1 auVar70 [16]; + float fVar71; + undefined1 auVar72 [16]; + float fVar73; + undefined1 auVar74 [16]; + float fVar75; + undefined1 auVar76 [16]; + float fVar77; + undefined1 auVar78 [16]; + float fVar79; + undefined1 auVar80 [16]; + float fVar81; + float fVar82; + undefined1 auVar83 [16]; + undefined1 auVar84 [16]; + float fVar85; + undefined1 auVar86 [16]; + float fVar87; + undefined1 auVar88 [16]; + float fVar89; + undefined1 auVar90 [16]; + undefined1 auVar91 [16]; + float fVar92; + undefined1 auVar93 [16]; + float fVar94; + undefined1 auVar95 [16]; + undefined1 auVar96 [16]; + undefined1 auVar97 [16]; + float fVar98; + undefined1 auVar99 [16]; + float fVar100; + undefined1 auVar101 [16]; + float fVar102; + undefined1 auVar103 [16]; + float fVar104; + undefined1 auVar105 [16]; + float fVar106; + undefined1 auVar107 [16]; + undefined1 auVar108 [16]; + undefined1 auVar109 [16]; + float fVar110; + undefined1 auVar111 [16]; + float fVar112; + undefined1 auVar113 [16]; + undefined1 auVar114 [16]; + undefined1 auVar115 [16]; + undefined1 auVar116 [16]; + undefined1 auVar117 [16]; + undefined1 auVar118 [16]; + undefined1 auVar119 [16]; + float *local_210; + int local_1b4; + uint local_1a8; + int local_1a4; + undefined4 local_170 [2]; + Mat *local_168; + undefined4 local_160; + undefined4 local_15c; + undefined8 local_158; + Mat *local_150; + undefined4 local_148; + undefined4 local_144; + undefined8 local_140; + Mat *local_138; + ulong local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + int local_118; + int local_114; + float *local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + int *local_e0; + ulong *local_d8; + ulong local_d0; + ulong local_c8; + undefined8 local_c0; + undefined8 uStack_b8; + float *local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined8 *local_80; + ulong *local_78; + ulong local_70; + ulong uStack_68; + undefined8 local_60; + undefined8 local_58; + float *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + ulong *local_18; + ulong local_10; + ulong local_8; + + if ((param_3 % 2 != 1) || (iVar28 = _InputArray::dims(param_1,-1), 2 < iVar28)) { + local_60 = 0; + local_58 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_60,0x28); + uVar23 = DAT_0045d6a0; + uVar22 = DAT_0045d698; + uVar21 = _DAT_0045d690; + uVar20 = DAT_0045d688; + puVar29[4] = s___<__2_)_0045d6a8._0_8_; + *puVar29 = uVar20; + puVar29[1] = uVar21; + puVar29[2] = uVar22; + puVar29[3] = uVar23; + error(-0xd7,(String *)&local_60,"void cv::medianBlur(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xa4d); + String::deallocate((String *)&local_60); + } + if (param_3 < 2) { + _InputArray::copyTo(param_1,param_2); + return; + } + iVar28 = _InputArray::kind(param_1); + if (iVar28 == 0x10000) { + pMVar34 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar34; + local_11c = *(int *)(pMVar34 + 4); + local_118 = *(int *)(pMVar34 + 8); + local_114 = *(int *)(pMVar34 + 0xc); + local_110 = *(float **)(pMVar34 + 0x10); + uStack_108 = *(undefined8 *)(pMVar34 + 0x18); + local_100 = *(undefined8 *)(pMVar34 + 0x20); + uStack_f8 = *(undefined8 *)(pMVar34 + 0x28); + local_f0 = *(undefined8 *)(pMVar34 + 0x30); + lStack_e8 = *(long *)(pMVar34 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (lStack_e8 != 0) { + piVar33 = (int *)(lStack_e8 + 0x14); + do { + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = *piVar33 + 1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_d0 = **(ulong **)(pMVar34 + 0x48); + local_c8 = (*(ulong **)(pMVar34 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_60 = CONCAT44(*local_e0,local_e0[1]); + _OutputArray::create(param_2,(Mat *)&local_60,local_120 & 0xfff,0xffffffff,0,0); + iVar28 = _InputArray::kind((_InputArray *)param_2); + if (iVar28 == 0x10000) { + pMVar34 = *(Mat **)(param_2 + 8); + local_20 = (int *)&local_58; + local_18 = &local_10; + uVar16 = *(uint *)pMVar34; + local_50 = *(float **)(pMVar34 + 0x10); + local_60 = *(ulong *)pMVar34; + local_58 = *(undefined8 *)(pMVar34 + 8); + local_48 = *(undefined8 *)(pMVar34 + 0x18); + local_40 = *(undefined8 *)(pMVar34 + 0x20); + local_38 = *(undefined8 *)(pMVar34 + 0x28); + local_30 = *(undefined8 *)(pMVar34 + 0x30); + local_28 = *(long *)(pMVar34 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar33 = (int *)(local_28 + 0x14); + do { + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = *piVar33 + 1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_10 = **(ulong **)(pMVar34 + 0x48); + local_8 = (*(ulong **)(pMVar34 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar16; + Mat::copySize((Mat *)&local_60,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar37 = _DAT_00212f90; + uVar16 = param_3 - 3; + local_78 = &local_70; + local_80 = &uStack_b8; + auVar66 = ZEXT416(uVar16 & 0xfffffffd); + uStack_68 = 0; + local_70 = 0; + local_b0 = (float *)0x0; + uStack_a8 = 0; + local_a0 = 0; + uStack_98 = 0; + local_90 = 0; + uStack_b8 = _UNK_00212f98; + local_c0 = _DAT_00212f90; + lStack_88 = 0; + if ((uVar16 & 0xfffffffd) == 0) { + if (local_50 == local_110) { + local_130 = CONCAT44(uVar16,uVar16) & 0xfffffffdfffffffd; + local_140 = CONCAT44(local_140._4_4_,0x2010000); + local_138 = (Mat *)&local_c0; + Mat::copyTo((Mat *)&local_120,(_OutputArray *)&local_140); + uVar16 = (uint)local_c0; + } + else { + if (lStack_e8 != 0) { + piVar33 = (int *)(lStack_e8 + 0x14); + do { + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = *piVar33 + 1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + } + local_c0._4_4_ = (int)(uVar37 >> 0x20); + lStack_88 = 0; + local_b0 = (float *)0x0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (local_c0._4_4_ < 1) { +LAB_00211018: + if (2 < local_11c) goto LAB_00211024; + uStack_b8 = CONCAT44(local_114,local_118); + local_70 = *local_d8; + local_c0 = CONCAT44(local_11c,local_120); + uStack_68 = local_d8[1]; + uVar16 = local_120; + } + else { + iVar28 = 0; + puVar29 = local_80; + do { + *(undefined4 *)puVar29 = 0; + iVar28 = iVar28 + 1; + puVar29 = (undefined8 *)((long)puVar29 + 4); + } while (iVar28 < local_c0._4_4_); + if (local_c0._4_4_ < 3) goto LAB_00211018; +LAB_00211024: + local_c0 = CONCAT44(local_c0._4_4_,local_120); + Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + uVar16 = (uint)local_c0; + } + uStack_98 = uStack_f8; + local_a0 = local_100; + lStack_88 = lStack_e8; + local_90 = local_f0; + uStack_a8 = uStack_108; + local_b0 = local_110; + } + uVar37 = local_10; + pfVar36 = local_50; + pfVar35 = local_b0; + uVar10 = uVar16 & 7; + if ((uVar16 & 7) == 0) { + FUN_001f2e4c((Mat *)&local_c0,(Mat *)&local_60,param_3); + } + else if (uVar10 == 2) { + FUN_001f4c10((Mat *)&local_c0,(Mat *)&local_60,param_3); + } + else if (uVar10 == 3) { + FUN_001fbfc0((Mat *)&local_c0,(Mat *)&local_60,param_3); + } + else if (uVar10 == 5) { + uVar10 = uVar16 >> 3 & 0x1ff; + uVar16 = uVar10 + 1; + iVar28 = local_20[1]; + uVar51 = local_10 >> 2; + uVar54 = uVar51 & 0xffffffff; + local_1b4 = *local_20; + local_210 = local_50; + local_1a8 = (uint)(local_70 >> 2); + cVar27 = checkHardwareSupport(3); + iVar50 = auVar66._0_4_; + if (cVar27 == '\0') { + cVar27 = checkHardwareSupport(100); + iVar50 = auVar66._0_4_; + } + local_170[0] = CONCAT31(local_170[0]._1_3_,cVar27); + if (param_3 == 3) { + if (iVar28 == 1) { + iVar50 = local_1b4 + 1; + if (local_1b4 == 1) { + iVar50 = 2; + goto LAB_00212dc8; + } + iVar28 = local_1a8 - uVar16; + } + else { + if (local_1b4 != 1) { + uVar10 = iVar28 * uVar16; + if (0 < local_1b4) { + lVar43 = (ulong)uVar16 * 4; + lVar39 = (ulong)uVar16 * -4; + iVar28 = (uVar10 - 4) - uVar16; + pfVar32 = pfVar35; + iVar47 = 0; +LAB_002128ec: + iVar17 = iVar47 + 1; + uVar54 = 0; + iVar2 = iVar17; + if (local_1b4 + -1 < iVar17) { + iVar2 = local_1b4 + -1; + } + iVar50 = local_1a8 * iVar50; + iVar2 = local_1a8 * iVar2; + uVar55 = uVar16; + if (cVar27 == '\0') { + uVar55 = uVar10; + } + do { + if ((int)uVar55 <= (int)uVar54) { + do { + if (uVar10 == uVar55) { + pfVar36 = (float *)((long)pfVar36 + + (-(uVar37 >> 0x21 & 1) & 0xfffffffc00000000 | + (uVar51 & 0xffffffff) << 2)); + pfVar32 = pfVar32 + (int)local_1a8; + iVar50 = iVar47; + iVar47 = iVar17; + if (iVar17 == local_1b4) goto LAB_002110c4; + goto LAB_002128ec; + } + if ((int)uVar54 <= iVar28) { + uVar44 = -(uVar54 >> 0x1f) & 0xfffffffc00000000 | uVar54 << 2; + pauVar46 = (undefined1 (*) [16])((long)pfVar35 + uVar44 + (long)iVar2 * 4); + pauVar45 = (undefined1 (*) [16])((long)pfVar32 + uVar44); + pauVar31 = (undefined1 (*) [16])((long)pfVar35 + uVar44 + (long)iVar50 * 4); + puVar29 = (undefined8 *)((long)pfVar36 + uVar44); + do { + puVar18 = *pauVar46; + puVar19 = *pauVar31; + auVar66 = *pauVar46; + pauVar7 = (undefined1 (*) [16])((long)pauVar45 + lVar39); + pauVar8 = (undefined1 (*) [16])(lVar39 + (long)pauVar46); + pauVar9 = (undefined1 (*) [16])((long)pauVar31 + lVar39); + auVar61 = *pauVar31; + uVar55 = (int)uVar54 + 4; + uVar54 = (ulong)uVar55; + pauVar46 = pauVar46 + 1; + auVar113 = NEON_fmin(*pauVar45,*(undefined1 (*) [16])(*pauVar45 + lVar43),4) + ; + auVar59 = NEON_fmin(auVar66,*(undefined1 (*) [16])(puVar18 + lVar43),4); + auVar60 = NEON_fmax(*(undefined1 (*) [16])(*pauVar45 + lVar43),*pauVar45,4); + pauVar45 = pauVar45 + 1; + auVar68 = NEON_fmin(auVar61,*(undefined1 (*) [16])(puVar19 + lVar43),4); + pauVar31 = pauVar31 + 1; + auVar72 = NEON_fmax(*(undefined1 (*) [16])(puVar18 + lVar43),auVar66,4); + auVar78 = NEON_fmax(auVar59,*pauVar8,4); + auVar66 = NEON_fmax(auVar113,*pauVar7,4); + auVar61 = NEON_fmax(*(undefined1 (*) [16])(puVar19 + lVar43),auVar61,4); + auVar96 = NEON_fmax(auVar68,*pauVar9,4); + auVar91 = NEON_fmin(auVar78,auVar72,4); + auVar64 = NEON_fmin(auVar66,auVar60,4); + auVar72 = NEON_fmax(auVar72,auVar78,4); + auVar60 = NEON_fmax(auVar60,auVar66,4); + auVar66 = NEON_fmin(auVar96,auVar61,4); + auVar78 = NEON_fmin(auVar64,auVar91,4); + auVar61 = NEON_fmax(auVar61,auVar96,4); + auVar60 = NEON_fmin(auVar60,auVar72,4); + auVar96 = NEON_fmin(*pauVar9,auVar68,4); + auVar72 = NEON_fmax(auVar78,auVar66,4); + auVar78 = NEON_fmin(*pauVar7,auVar113,4); + auVar91 = NEON_fmax(auVar91,auVar64,4); + auVar66 = NEON_fmin(auVar61,auVar60,4); + auVar60 = NEON_fmin(*pauVar8,auVar59,4); + auVar78 = NEON_fmax(auVar78,auVar96,4); + auVar61 = NEON_fmin(auVar72,auVar91,4); + auVar72 = NEON_fmax(auVar60,auVar78,4); + auVar60 = NEON_fmin(auVar61,auVar66,4); + auVar66 = NEON_fmax(auVar66,auVar61,4); + auVar61 = NEON_fmax(auVar60,auVar72,4); + auVar66 = NEON_fmin(auVar61,auVar66,4); + puVar29[1] = auVar66._8_8_; + *puVar29 = auVar66._0_8_; + puVar29 = puVar29 + 2; + } while ((int)uVar55 <= iVar28); + } + uVar55 = uVar10; + } while ((int)uVar10 <= (int)uVar54); + } + uVar48 = (uint)uVar54; + uVar49 = uVar48 - uVar16; + if ((int)uVar48 < (int)uVar16) { + uVar49 = uVar48; + } + uVar54 = -(uVar54 >> 0x1f) & 0xfffffffc00000000 | uVar54 << 2; + uVar53 = uVar16 + uVar48; + if ((int)(uVar10 - uVar16) <= (int)uVar48) { + uVar53 = uVar48; + } + uVar38 = -(ulong)(uVar49 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar49 << 2; + uVar44 = -(ulong)(uVar53 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar53 << 2; + fVar87 = *(float *)((long)pfVar35 + uVar54 + (long)iVar50 * 4); + fVar79 = *(float *)((long)pfVar35 + uVar44 + (long)iVar50 * 4); + fVar98 = *(float *)((long)pfVar35 + uVar38 + (long)iVar50 * 4); + fVar77 = *(float *)((long)pfVar32 + uVar38); + fVar85 = *(float *)((long)pfVar32 + uVar54); + fVar63 = *(float *)((long)pfVar32 + uVar44); + fVar110 = *(float *)((long)pfVar35 + uVar38 + (long)iVar2 * 4); + fVar71 = *(float *)((long)pfVar35 + uVar54 + (long)iVar2 * 4); + fVar65 = *(float *)((long)pfVar35 + uVar44 + (long)iVar2 * 4); + fVar89 = fVar79; + if (fVar87 <= fVar79) { + fVar89 = fVar87; + fVar87 = fVar79; + } + fVar79 = fVar85; + if (fVar85 <= fVar63) { + fVar79 = fVar63; + fVar63 = fVar85; + } + fVar85 = fVar71; + if (fVar71 <= fVar65) { + fVar85 = fVar65; + fVar65 = fVar71; + } + fVar71 = fVar89; + if (fVar98 <= fVar89) { + fVar71 = fVar98; + fVar98 = fVar89; + } + fVar89 = fVar77; + if (fVar77 <= fVar63) { + fVar89 = fVar63; + fVar63 = fVar77; + } + fVar77 = fVar110; + if (fVar110 <= fVar65) { + fVar77 = fVar65; + fVar65 = fVar110; + } + fVar110 = fVar87; + if (fVar98 <= fVar87) { + fVar110 = fVar98; + fVar98 = fVar87; + } + fVar87 = fVar79; + if (fVar89 <= fVar79) { + fVar87 = fVar89; + fVar89 = fVar79; + } + fVar79 = fVar77; + if (fVar77 <= fVar85) { + fVar79 = fVar85; + fVar85 = fVar77; + } + if (fVar71 <= fVar63) { + fVar71 = fVar63; + } + if (fVar89 <= fVar79) { + fVar79 = fVar89; + } + fVar89 = fVar87; + if (fVar87 <= fVar85) { + fVar89 = fVar85; + fVar85 = fVar87; + } + if (fVar71 <= fVar65) { + fVar71 = fVar65; + } + if (fVar110 <= fVar85) { + fVar110 = fVar85; + } + if (fVar98 <= fVar79) { + fVar79 = fVar98; + } + if (fVar110 <= fVar89) { + fVar89 = fVar110; + } + fVar87 = fVar79; + if (fVar89 <= fVar79) { + fVar87 = fVar89; + fVar89 = fVar79; + } + if (fVar71 <= fVar87) { + fVar71 = fVar87; + } + if (fVar71 <= fVar89) { + fVar89 = fVar71; + } + *(float *)((long)pfVar36 + uVar54) = fVar89; + uVar54 = (ulong)(uVar48 + 1); + } while( true ); + } + goto LAB_002110c4; + } + iVar50 = iVar28 + 1; + local_1b4 = iVar28; +LAB_00212dc8: + iVar28 = 0; + uVar54 = (ulong)uVar16; + local_1a8 = uVar16; + } + if (0 < local_1b4) { + iVar47 = 0; + do { + lVar39 = 0; + uVar37 = -(ulong)(-local_1a8 >> 0x1f) & 0xfffffffc00000000 | (ulong)-local_1a8 << 2; + if (iVar47 < 1) { + uVar37 = 0; + } + uVar51 = -(ulong)(local_1a8 >> 0x1f) & 0xfffffffc00000000 | (ulong)local_1a8 << 2; + if (iVar50 + -2 <= iVar47) { + uVar51 = 0; + } + do { + fVar63 = *(float *)((long)pfVar35 + lVar39 * 4 + uVar37); + fVar87 = pfVar35[lVar39]; + fVar65 = *(float *)((long)pfVar35 + lVar39 * 4 + uVar51); + fVar89 = fVar63; + if (fVar63 <= fVar87) { + fVar89 = fVar87; + fVar87 = fVar63; + } + if (fVar65 < fVar89) { + fVar89 = fVar65; + } + if (fVar87 <= fVar89) { + fVar87 = fVar89; + } + pfVar36[lVar39] = fVar87; + lVar39 = lVar39 + 1; + } while ((int)lVar39 < (int)uVar16); + iVar47 = iVar47 + 1; + pfVar35 = pfVar35 + (long)iVar28 + (long)(int)uVar10 + 1; + pfVar36 = (float *)((long)pfVar36 + + (-(uVar54 >> 0x1f) & 0xfffffffc00000000 | uVar54 << 2)); + } while (iVar47 != local_1b4); + } + } + else if (param_3 == 5) { + if (iVar28 == 1) { + iVar50 = local_1b4 + 1; + if (local_1b4 == 1) { + iVar50 = 2; + goto LAB_00212c64; + } + iVar28 = local_1a8 - uVar16; + } + else { + if (local_1b4 != 1) { + uVar10 = iVar28 * uVar16; + if (0 < local_1b4) { + iVar47 = uVar16 * -2; + iVar17 = local_1b4 + -1; + iVar28 = (uVar10 - 4) + iVar47; + uVar55 = uVar16 * 2; + local_1a4 = 0; + pfVar32 = pfVar35; + pfVar36 = pfVar35; +LAB_002118f0: + uVar54 = 0; + iVar2 = local_1a4 + 1; + iVar13 = iVar2; + if (iVar17 < iVar2) { + iVar13 = iVar17; + } + iVar14 = iVar17; + if (local_1a4 + 2 < iVar17) { + iVar14 = local_1a4 + 2; + } + iVar50 = local_1a8 * iVar50; + iVar13 = iVar13 * local_1a8; + iVar14 = iVar14 * local_1a8; + uVar49 = uVar10; + if (cVar27 != '\0') { + uVar49 = uVar55; + } +LAB_00211954: + do { + if ((int)uVar49 <= (int)uVar54) { + do { + if (uVar10 == uVar49) { + local_210 = (float *)((long)local_210 + + (-(uVar37 >> 0x21 & 1) & 0xfffffffc00000000 | + (uVar51 & 0xffffffff) << 2)); + if (iVar2 == local_1b4) goto LAB_002110c4; + iVar50 = local_1a4 + -1; + if (iVar50 < 0) { + iVar50 = 0; + } + pfVar36 = pfVar36 + (int)local_1a8; + pfVar32 = pfVar35 + (int)(local_1a8 * iVar50); + iVar50 = local_1a4; + local_1a4 = iVar2; + goto LAB_002118f0; + } + iVar52 = (int)uVar54; + uVar49 = uVar10; + if (iVar28 < iVar52) goto LAB_00211954; + lVar43 = (long)iVar52; + lVar39 = 0; + do { + uVar48 = (int)uVar54 + 4; + uVar54 = (ulong)uVar48; + lVar3 = lVar39 + (lVar43 - (ulong)uVar55) * 4; + lVar4 = lVar39 + (lVar43 - (ulong)uVar16) * 4; + auVar66 = *(undefined1 (*) [16])((long)pfVar35 + lVar3 + (long)iVar50 * 4); + lVar5 = lVar39 + ((ulong)uVar16 + lVar43) * 4; + lVar6 = lVar39 + ((ulong)uVar55 + lVar43) * 4; + lVar1 = lVar39 + (long)iVar52 * 4; + auVar61 = *(undefined1 (*) [16])((long)pfVar35 + lVar5 + (long)iVar14 * 4); + auVar70 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar32 + lVar6),auVar66,4); + auVar60 = *(undefined1 (*) [16])((long)pfVar35 + lVar6 + (long)iVar14 * 4); + auVar97 = NEON_fmax(auVar66,*(undefined1 (*) [16])((long)pfVar32 + lVar6),4); + auVar66 = *(undefined1 (*) [16])((long)pfVar35 + lVar1 + (long)iVar14 * 4); + auVar107 = NEON_fmin(auVar61,auVar60,4); + auVar64 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar32 + lVar4), + *(undefined1 (*) [16])((long)pfVar32 + lVar1),4); + auVar72 = *(undefined1 (*) [16])((long)pfVar35 + lVar4 + (long)iVar14 * 4); + auVar90 = NEON_fmax(*(undefined1 (*) [16])((long)pfVar32 + lVar1), + *(undefined1 (*) [16])((long)pfVar32 + lVar4),4); + auVar68 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar36 + lVar3), + *(undefined1 (*) [16])((long)pfVar36 + lVar4),4); + auVar78 = *(undefined1 (*) [16])((long)pfVar35 + lVar5 + (long)iVar50 * 4); + auVar83 = NEON_fmax(*(undefined1 (*) [16])((long)pfVar36 + lVar4), + *(undefined1 (*) [16])((long)pfVar36 + lVar3),4); + auVar105 = NEON_fmin(auVar72,auVar66,4); + auVar76 = NEON_fmax(auVar66,auVar72,4); + auVar74 = NEON_fmax(auVar60,auVar61,4); + auVar66 = *(undefined1 (*) [16])((long)pfVar35 + lVar6 + (long)iVar13 * 4); + auVar61 = *(undefined1 (*) [16])((long)pfVar35 + lVar1 + (long)iVar50 * 4); + auVar113 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar36 + lVar5), + *(undefined1 (*) [16])((long)pfVar36 + lVar6),4); + auVar117 = *(undefined1 (*) [16])((long)pfVar35 + lVar4 + (long)iVar50 * 4); + auVar80 = NEON_fmax(*(undefined1 (*) [16])((long)pfVar36 + lVar6), + *(undefined1 (*) [16])((long)pfVar36 + lVar5),4); + auVar103 = NEON_fmax(auVar64,*(undefined1 (*) [16])((long)pfVar32 + lVar3),4); + auVar115 = NEON_fmin(auVar61,auVar78,4); + auVar60 = *(undefined1 (*) [16])((long)pfVar35 + lVar3 + (long)iVar14 * 4); + auVar86 = NEON_fmax(auVar78,auVar61,4); + auVar61 = *(undefined1 (*) [16])((long)pfVar35 + lVar6 + (long)iVar50 * 4); + auVar72 = *(undefined1 (*) [16])((long)pfVar35 + lVar3 + (long)iVar13 * 4); + auVar84 = NEON_fmax(auVar113,*(undefined1 (*) [16])((long)pfVar36 + lVar1),4); + auVar101 = NEON_fmax(auVar115,auVar117,4); + auVar78 = *(undefined1 (*) [16])((long)pfVar35 + lVar4 + (long)iVar13 * 4); + auVar91 = *(undefined1 (*) [16])((long)pfVar35 + lVar1 + (long)iVar13 * 4); + auVar111 = NEON_fmin(auVar66,auVar60,4); + auVar88 = NEON_fmax(auVar70,*(undefined1 (*) [16])((long)pfVar32 + lVar5),4); + auVar96 = *(undefined1 (*) [16])((long)pfVar35 + lVar5 + (long)iVar13 * 4); + auVar59 = NEON_fmin(auVar76,auVar74,4); + lVar39 = lVar39 + 0x10; + auVar99 = NEON_fmax(auVar60,auVar66,4); + auVar95 = NEON_fmax(auVar107,auVar105,4); + auVar66 = NEON_fmin(auVar78,auVar91,4); + auVar93 = NEON_fmax(auVar111,auVar96,4); + auVar78 = NEON_fmax(auVar91,auVar78,4); + auVar114 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar36 + lVar1),auVar113,4) + ; + auVar108 = NEON_fmin(auVar72,auVar66,4); + auVar66 = NEON_fmax(auVar66,auVar72,4); + auVar113 = NEON_fmin(auVar93,auVar99,4); + auVar109 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar32 + lVar3),auVar64,4); + auVar60 = NEON_fmax(auVar90,auVar103,4); + auVar99 = NEON_fmax(auVar99,auVar93,4); + auVar91 = NEON_fmin(auVar103,auVar90,4); + auVar118 = NEON_fmin(auVar117,auVar115,4); + auVar116 = NEON_fmin(auVar61,auVar68,4); + auVar72 = NEON_fmax(auVar68,auVar61,4); + auVar68 = NEON_fmin(auVar96,auVar111,4); + auVar64 = NEON_fmax(auVar78,auVar66,4); + auVar90 = NEON_fmax(auVar83,auVar72,4); + auVar93 = NEON_fmin(auVar66,auVar78,4); + auVar66 = NEON_fmin(*(undefined1 (*) [16])((long)pfVar32 + lVar5),auVar70,4); + auVar61 = NEON_fmax(auVar97,auVar88,4); + auVar78 = NEON_fmin(auVar88,auVar97,4); + auVar70 = NEON_fmin(auVar72,auVar83,4); + auVar103 = NEON_fmax(auVar66,auVar109,4); + auVar72 = NEON_fmax(auVar86,auVar101,4); + auVar88 = NEON_fmin(auVar91,auVar78,4); + auVar86 = NEON_fmin(auVar101,auVar86,4); + auVar111 = NEON_fmax(auVar78,auVar91,4); + auVar78 = NEON_fmax(auVar80,auVar84,4); + auVar117 = NEON_fmax(auVar116,auVar118,4); + auVar84 = NEON_fmin(auVar84,auVar80,4); + auVar91 = NEON_fmin(auVar105,auVar107,4); + auVar115 = NEON_fmax(auVar108,auVar114,4); + auVar114 = NEON_fmin(auVar114,auVar108,4); + auVar118 = NEON_fmin(auVar118,auVar116,4); + auVar108 = NEON_fmin(auVar78,auVar64,4); + auVar101 = NEON_fmin(auVar59,auVar95,4); + auVar96 = NEON_fmax(auVar95,auVar59,4); + auVar80 = NEON_fmin(auVar99,auVar96,4); + auVar97 = NEON_fmax(auVar96,auVar99,4); + auVar96 = NEON_fmin(auVar60,auVar61,4); + auVar83 = NEON_fmin(auVar96,auVar103,4); + auVar116 = NEON_fmax(auVar103,auVar96,4); + auVar96 = NEON_fmin(auVar72,auVar90,4); + auVar95 = NEON_fmin(auVar88,auVar83,4); + auVar59 = NEON_fmax(auVar74,auVar76,4); + auVar76 = NEON_fmax(auVar91,auVar68,4); + auVar74 = NEON_fmax(auVar101,auVar113,4); + auVar105 = NEON_fmin(auVar113,auVar101,4); + auVar113 = NEON_fmin(auVar109,auVar66,4); + auVar99 = NEON_fmin(auVar80,auVar76,4); + auVar103 = NEON_fmax(auVar76,auVar80,4); + auVar107 = NEON_fmin(auVar74,auVar59,4); + auVar59 = NEON_fmax(auVar59,auVar74,4); + auVar101 = NEON_fmin(auVar96,auVar117,4); + auVar117 = NEON_fmax(auVar117,auVar96,4); + auVar66 = NEON_fmin(auVar86,auVar70,4); + auVar70 = NEON_fmax(auVar70,auVar86,4); + auVar96 = NEON_fmin(auVar108,auVar115,4); + auVar76 = NEON_fmax(auVar61,auVar60,4); + auVar86 = NEON_fmax(auVar115,auVar108,4); + auVar61 = NEON_fmin(auVar84,auVar93,4); + auVar80 = NEON_fmax(auVar93,auVar84,4); + auVar93 = NEON_fmax(auVar70,auVar117,4); + auVar74 = NEON_fmax(auVar111,auVar116,4); + auVar119 = NEON_fmin(auVar61,auVar96,4); + auVar72 = NEON_fmax(auVar90,auVar72,4); + auVar115 = NEON_fmin(auVar66,auVar101,4); + auVar84 = NEON_fmax(auVar96,auVar61,4); + auVar61 = NEON_fmax(auVar101,auVar66,4); + auVar90 = NEON_fmax(auVar83,auVar88,4); + auVar83 = NEON_fmin(auVar116,auVar111,4); + auVar60 = NEON_fmax(auVar118,auVar113,4); + auVar96 = NEON_fmax(auVar64,auVar78,4); + auVar66 = NEON_fmax(auVar80,auVar86,4); + auVar78 = NEON_fmin(auVar74,auVar93,4); + auVar88 = NEON_fmin(auVar86,auVar80,4); + auVar101 = NEON_fmax(auVar115,auVar95,4); + auVar111 = NEON_fmin(auVar78,auVar60,4); + auVar80 = NEON_fmax(auVar60,auVar78,4); + auVar109 = NEON_fmin(auVar90,auVar61,4); + auVar90 = NEON_fmax(auVar61,auVar90,4); + auVar116 = NEON_fmin(auVar113,auVar118,4); + auVar64 = NEON_fmax(auVar72,auVar76,4); + auVar78 = NEON_fmin(auVar68,auVar91,4); + auVar91 = NEON_fmin(auVar105,auVar99,4); + auVar61 = NEON_fmax(auVar99,auVar105,4); + auVar113 = NEON_fmin(auVar97,auVar59,4); + auVar99 = NEON_fmax(auVar107,auVar103,4); + auVar60 = NEON_fmax(auVar59,auVar97,4); + auVar86 = NEON_fmax(auVar91,auVar119,4); + auVar59 = NEON_fmin(auVar117,auVar70,4); + auVar72 = NEON_fmin(auVar76,auVar72,4); + auVar70 = NEON_fmax(auVar61,auVar84,4); + auVar76 = NEON_fmin(auVar103,auVar107,4); + auVar103 = NEON_fmax(auVar78,auVar114,4); + auVar61 = NEON_fmin(auVar84,auVar61,4); + auVar108 = NEON_fmin(auVar95,auVar115,4); + auVar115 = NEON_fmin(auVar114,auVar78,4); + auVar107 = NEON_fmin(auVar66,auVar99,4); + auVar105 = NEON_fmin(auVar72,auVar101,4); + auVar78 = NEON_fmin(auVar96,auVar113,4); + auVar97 = NEON_fmax(auVar101,auVar72,4); + auVar101 = NEON_fmin(auVar83,auVar59,4); + auVar68 = NEON_fmax(auVar59,auVar83,4); + auVar84 = NEON_fmax(auVar68,auVar97,4); + auVar95 = NEON_fmax(auVar99,auVar66,4); + auVar66 = NEON_fmin(auVar107,auVar103,4); + auVar107 = NEON_fmax(auVar103,auVar107,4); + auVar103 = NEON_fmin(auVar70,auVar60,4); + auVar70 = NEON_fmax(auVar60,auVar70,4); + auVar60 = NEON_fmin(auVar78,auVar86,4); + auVar99 = NEON_fmax(auVar86,auVar78,4); + auVar59 = NEON_fmin(auVar88,auVar76,4); + auVar86 = NEON_fmax(auVar76,auVar88,4); + auVar72 = NEON_fmax(auVar93,auVar74,4); + auVar83 = NEON_fmax(auVar86,auVar99,4); + auVar88 = NEON_fmax(auVar103,auVar107,4); + auVar78 = NEON_fmin(auVar109,auVar111,4); + auVar111 = NEON_fmax(auVar111,auVar109,4); + auVar117 = NEON_fmin(auVar97,auVar68,4); + auVar97 = NEON_fmin(auVar61,auVar66,4); + auVar93 = NEON_fmax(auVar66,auVar61,4); + auVar76 = NEON_fmin(auVar80,auVar90,4); + auVar61 = NEON_fmax(auVar90,auVar80,4); + auVar74 = NEON_fmin(auVar101,auVar105,4); + auVar66 = NEON_fmax(auVar70,auVar95,4); + auVar68 = NEON_fmin(auVar95,auVar70,4); + auVar95 = NEON_fmin(auVar119,auVar91,4); + auVar90 = NEON_fmax(auVar105,auVar101,4); + auVar114 = NEON_fmin(auVar99,auVar86,4); + auVar101 = NEON_fmin(auVar108,auVar78,4); + auVar108 = NEON_fmax(auVar78,auVar108,4); + auVar91 = NEON_fmax(auVar61,auVar117,4); + auVar86 = NEON_fmin(auVar107,auVar103,4); + auVar78 = NEON_fmax(auVar113,auVar96,4); + auVar103 = NEON_fmax(auVar60,auVar59,4); + auVar107 = NEON_fmin(auVar74,auVar111,4); + auVar96 = NEON_fmin(auVar78,auVar66,4); + auVar113 = NEON_fmin(auVar95,auVar97,4); + auVar70 = NEON_fmax(auVar72,auVar84,4); + auVar99 = NEON_fmin(auVar84,auVar72,4); + auVar80 = NEON_fmax(auVar66,auVar78,4); + auVar66 = NEON_fmax(auVar88,auVar114,4); + auVar60 = NEON_fmin(auVar59,auVar60,4); + auVar105 = NEON_fmax(auVar111,auVar74,4); + auVar78 = NEON_fmax(auVar97,auVar95,4); + auVar84 = NEON_fmin(auVar60,auVar93,4); + auVar60 = NEON_fmax(auVar93,auVar60,4); + auVar93 = NEON_fmin(auVar91,auVar66,4); + auVar74 = NEON_fmin(auVar83,auVar68,4); + auVar72 = NEON_fmax(auVar68,auVar83,4); + auVar83 = NEON_fmin(auVar90,auVar76,4); + auVar59 = NEON_fmax(auVar76,auVar90,4); + auVar76 = NEON_fmin(auVar117,auVar61,4); + auVar90 = NEON_fmin(auVar103,auVar86,4); + auVar61 = NEON_fmin(auVar64,auVar96,4); + auVar66 = NEON_fmax(auVar115,auVar116,4); + auVar60 = NEON_fmax(auVar60,auVar105,4); + auVar96 = NEON_fmin(auVar70,auVar72,4); + auVar70 = NEON_fmax(auVar86,auVar103,4); + auVar68 = NEON_fmin(auVar114,auVar88,4); + auVar64 = NEON_fmax(auVar78,auVar108,4); + auVar91 = NEON_fmax(auVar113,auVar101,4); + auVar113 = NEON_fmin(auVar99,auVar74,4); + auVar78 = NEON_fmax(auVar84,auVar107,4); + auVar72 = NEON_fmax(auVar66,auVar93,4); + auVar60 = NEON_fmin(auVar60,auVar80,4); + auVar66 = NEON_fmax(auVar90,auVar83,4); + auVar78 = NEON_fmin(auVar61,auVar78,4); + auVar96 = NEON_fmin(auVar96,auVar64,4); + auVar61 = NEON_fmin(auVar59,auVar70,4); + auVar91 = NEON_fmax(auVar91,auVar113,4); + auVar59 = NEON_fmin(auVar76,auVar68,4); + auVar60 = NEON_fmin(auVar72,auVar60,4); + auVar61 = NEON_fmax(auVar96,auVar61,4); + auVar72 = NEON_fmin(auVar91,auVar66,4); + auVar66 = NEON_fmax(auVar78,auVar59,4); + auVar61 = NEON_fmax(auVar60,auVar61,4); + auVar66 = NEON_fmin(auVar66,auVar72,4); + auVar66 = NEON_fmax(auVar61,auVar66,4); + ((undefined8 *)((long)local_210 + lVar1))[1] = auVar66._8_8_; + *(undefined8 *)((long)local_210 + lVar1) = auVar66._0_8_; + } while ((int)uVar48 <= iVar28); + } while ((int)uVar10 <= (int)uVar48); + } + uVar44 = -(uVar54 >> 0x1f) & 0xfffffffc00000000 | uVar54 << 2; + uVar53 = (uint)uVar54; + uVar48 = uVar53 - uVar16; + if ((int)uVar53 < (int)uVar16) { + uVar48 = uVar53; + } + uVar54 = -(ulong)(uVar48 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar48 << 2; + uVar11 = uVar53 + iVar47; + if ((int)uVar53 < (int)uVar55) { + uVar11 = uVar48; + } + uVar48 = uVar16 + uVar53; + if ((int)(uVar10 - uVar16) <= (int)uVar53) { + uVar48 = uVar53; + } + fVar87 = *(float *)((long)pfVar32 + uVar54); + fVar89 = *(float *)((long)pfVar32 + uVar44); + uVar12 = uVar55 + uVar53; + if ((int)(uVar10 + iVar47) <= (int)uVar53) { + uVar12 = uVar48; + } + uVar42 = -(ulong)(uVar11 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar11 << 2; + uVar38 = -(ulong)(uVar48 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar48 << 2; + uVar40 = -(ulong)(uVar12 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar12 << 2; + fVar104 = *(float *)((long)pfVar32 + uVar42); + fVar92 = *(float *)((long)pfVar32 + uVar38); + fVar65 = *(float *)((long)pfVar32 + uVar40); + fVar75 = *(float *)((long)pfVar35 + uVar42 + (long)iVar50 * 4); + fVar94 = *(float *)((long)pfVar35 + uVar54 + (long)iVar50 * 4); + fVar67 = *(float *)((long)pfVar35 + uVar44 + (long)iVar50 * 4); + fVar98 = *(float *)((long)pfVar35 + uVar38 + (long)iVar50 * 4); + fVar56 = *(float *)((long)pfVar35 + uVar40 + (long)iVar50 * 4); + fVar85 = *(float *)((long)pfVar36 + uVar42); + fVar69 = *(float *)((long)pfVar36 + uVar54); + fVar102 = *(float *)((long)pfVar36 + uVar44); + fVar58 = *(float *)((long)pfVar36 + uVar38); + fVar110 = *(float *)((long)pfVar36 + uVar40); + fVar100 = *(float *)((long)pfVar35 + uVar42 + (long)iVar13 * 4); + fVar81 = *(float *)((long)pfVar35 + uVar54 + (long)iVar13 * 4); + fVar79 = *(float *)((long)pfVar35 + uVar44 + (long)iVar13 * 4); + fVar82 = *(float *)((long)pfVar35 + uVar38 + (long)iVar13 * 4); + fVar62 = *(float *)((long)pfVar35 + uVar40 + (long)iVar13 * 4); + fVar71 = *(float *)((long)pfVar35 + uVar42 + (long)iVar14 * 4); + fVar73 = *(float *)((long)pfVar35 + uVar54 + (long)iVar14 * 4); + fVar77 = *(float *)((long)pfVar35 + uVar44 + (long)iVar14 * 4); + fVar112 = *(float *)((long)pfVar35 + uVar38 + (long)iVar14 * 4); + fVar106 = *(float *)((long)pfVar35 + uVar40 + (long)iVar14 * 4); + fVar63 = fVar87; + if (fVar89 < fVar87) { + fVar63 = fVar89; + fVar89 = fVar87; + } + fVar87 = fVar104; + if (fVar104 <= fVar63) { + fVar87 = fVar63; + fVar63 = fVar104; + } + fVar104 = fVar89; + if (fVar87 <= fVar89) { + fVar104 = fVar87; + fVar87 = fVar89; + } + fVar89 = fVar75; + if (fVar75 < fVar65) { + fVar89 = fVar65; + fVar65 = fVar75; + } + fVar75 = fVar92; + if (fVar92 <= fVar65) { + fVar75 = fVar65; + fVar65 = fVar92; + } + fVar92 = fVar89; + if (fVar75 <= fVar89) { + fVar92 = fVar75; + fVar75 = fVar89; + } + fVar89 = fVar63; + if (fVar63 <= fVar65) { + fVar89 = fVar65; + fVar65 = fVar63; + } + fVar63 = fVar75; + if (fVar87 <= fVar75) { + fVar63 = fVar87; + fVar87 = fVar75; + } + fVar75 = fVar89; + if (fVar63 <= fVar89) { + fVar75 = fVar63; + fVar63 = fVar89; + } + fVar89 = fVar92; + if (fVar104 <= fVar92) { + fVar89 = fVar104; + fVar104 = fVar92; + } + fVar92 = fVar89; + if (fVar89 <= fVar75) { + fVar92 = fVar75; + fVar75 = fVar89; + } + fVar89 = fVar104; + if (fVar63 <= fVar104) { + fVar89 = fVar63; + fVar63 = fVar104; + } + fVar104 = fVar67; + if (fVar67 <= fVar98) { + fVar104 = fVar98; + fVar98 = fVar67; + } + fVar67 = fVar94; + if (fVar94 <= fVar98) { + fVar67 = fVar98; + fVar98 = fVar94; + } + fVar94 = fVar104; + if (fVar67 <= fVar104) { + fVar94 = fVar67; + fVar67 = fVar104; + } + fVar104 = fVar69; + if (fVar69 < fVar85) { + fVar104 = fVar85; + fVar85 = fVar69; + } + fVar69 = fVar56; + if (fVar56 <= fVar85) { + fVar69 = fVar85; + fVar85 = fVar56; + } + fVar56 = fVar104; + if (fVar69 <= fVar104) { + fVar56 = fVar69; + fVar69 = fVar104; + } + fVar104 = fVar85; + if (fVar98 <= fVar85) { + fVar104 = fVar98; + fVar98 = fVar85; + } + fVar85 = fVar69; + if (fVar67 <= fVar69) { + fVar85 = fVar67; + fVar67 = fVar69; + } + fVar69 = fVar98; + if (fVar85 <= fVar98) { + fVar69 = fVar85; + fVar85 = fVar98; + } + fVar98 = fVar56; + if (fVar94 <= fVar56) { + fVar98 = fVar94; + fVar94 = fVar56; + } + fVar56 = fVar98; + if (fVar98 <= fVar69) { + fVar56 = fVar69; + fVar69 = fVar98; + } + fVar98 = fVar94; + if (fVar85 <= fVar94) { + fVar98 = fVar85; + fVar85 = fVar94; + } + fVar94 = fVar104; + if (fVar65 <= fVar104) { + fVar94 = fVar65; + fVar65 = fVar104; + } + fVar104 = fVar85; + if (fVar63 <= fVar85) { + fVar104 = fVar63; + fVar63 = fVar85; + } + fVar85 = fVar65; + if (fVar104 <= fVar65) { + fVar85 = fVar104; + fVar104 = fVar65; + } + fVar65 = fVar92; + if (fVar92 <= fVar56) { + fVar65 = fVar56; + fVar56 = fVar92; + } + fVar92 = fVar85; + if (fVar56 <= fVar85) { + fVar92 = fVar56; + fVar56 = fVar85; + } + fVar85 = fVar65; + if (fVar104 <= fVar65) { + fVar85 = fVar104; + fVar104 = fVar65; + } + fVar65 = fVar75; + if (fVar75 <= fVar69) { + fVar65 = fVar69; + fVar69 = fVar75; + } + fVar75 = fVar67; + if (fVar87 <= fVar67) { + fVar75 = fVar87; + fVar87 = fVar67; + } + fVar67 = fVar65; + if (fVar75 <= fVar65) { + fVar67 = fVar75; + fVar75 = fVar65; + } + fVar65 = fVar89; + if (fVar89 <= fVar98) { + fVar65 = fVar98; + fVar98 = fVar89; + } + fVar89 = fVar67; + if (fVar98 <= fVar67) { + fVar89 = fVar98; + fVar98 = fVar67; + } + fVar67 = fVar65; + if (fVar75 <= fVar65) { + fVar67 = fVar75; + fVar75 = fVar65; + } + fVar65 = fVar69; + if (fVar69 <= fVar92) { + fVar65 = fVar92; + fVar92 = fVar69; + } + fVar69 = fVar89; + if (fVar89 <= fVar56) { + fVar69 = fVar56; + fVar56 = fVar89; + } + fVar89 = fVar85; + if (fVar98 <= fVar85) { + fVar89 = fVar98; + fVar98 = fVar85; + } + fVar85 = fVar67; + if (fVar67 <= fVar104) { + fVar85 = fVar104; + fVar104 = fVar67; + } + fVar67 = fVar63; + if (fVar75 <= fVar63) { + fVar67 = fVar75; + fVar75 = fVar63; + } + fVar63 = fVar58; + if (fVar58 <= fVar110) { + fVar63 = fVar110; + fVar110 = fVar58; + } + fVar58 = fVar102; + if (fVar102 <= fVar110) { + fVar58 = fVar110; + fVar110 = fVar102; + } + fVar102 = fVar63; + if (fVar58 <= fVar63) { + fVar102 = fVar58; + fVar58 = fVar63; + } + fVar63 = fVar81; + if (fVar79 < fVar81) { + fVar63 = fVar79; + fVar79 = fVar81; + } + fVar81 = fVar100; + if (fVar100 <= fVar63) { + fVar81 = fVar63; + fVar63 = fVar100; + } + fVar100 = fVar79; + if (fVar81 <= fVar79) { + fVar100 = fVar81; + fVar81 = fVar79; + } + fVar79 = fVar63; + if (fVar110 <= fVar63) { + fVar79 = fVar110; + fVar110 = fVar63; + } + fVar63 = fVar81; + if (fVar58 <= fVar81) { + fVar63 = fVar58; + fVar58 = fVar81; + } + fVar81 = fVar110; + if (fVar63 <= fVar110) { + fVar81 = fVar63; + fVar63 = fVar110; + } + fVar110 = fVar102; + if (fVar102 <= fVar100) { + fVar110 = fVar100; + fVar100 = fVar102; + } + fVar102 = fVar100; + if (fVar100 <= fVar81) { + fVar102 = fVar81; + fVar81 = fVar100; + } + fVar100 = fVar110; + if (fVar63 <= fVar110) { + fVar100 = fVar63; + fVar63 = fVar110; + } + fVar110 = fVar62; + if (fVar71 < fVar62) { + fVar110 = fVar71; + fVar71 = fVar62; + } + fVar62 = fVar82; + if (fVar82 <= fVar110) { + fVar62 = fVar110; + fVar110 = fVar82; + } + fVar82 = fVar71; + if (fVar62 <= fVar71) { + fVar82 = fVar62; + fVar62 = fVar71; + } + fVar71 = fVar73; + if (fVar73 <= fVar77) { + fVar71 = fVar77; + fVar77 = fVar73; + } + fVar73 = fVar112; + if (fVar112 <= fVar106) { + fVar73 = fVar106; + fVar106 = fVar112; + } + fVar112 = fVar77; + if (fVar77 <= fVar106) { + fVar112 = fVar106; + fVar106 = fVar77; + } + fVar77 = fVar73; + if (fVar71 <= fVar73) { + fVar77 = fVar71; + fVar71 = fVar73; + } + fVar73 = fVar112; + if (fVar77 <= fVar112) { + fVar73 = fVar77; + fVar77 = fVar112; + } + fVar112 = fVar110; + if (fVar110 <= fVar106) { + fVar112 = fVar106; + fVar106 = fVar110; + } + fVar110 = fVar77; + if (fVar62 <= fVar77) { + fVar110 = fVar62; + fVar62 = fVar77; + } + fVar77 = fVar112; + if (fVar110 <= fVar112) { + fVar77 = fVar110; + fVar110 = fVar112; + } + fVar112 = fVar82; + if (fVar82 <= fVar73) { + fVar112 = fVar73; + fVar73 = fVar82; + } + fVar82 = fVar112; + if (fVar112 <= fVar71) { + fVar82 = fVar71; + fVar71 = fVar112; + } + fVar112 = fVar73; + if (fVar73 <= fVar77) { + fVar112 = fVar77; + fVar77 = fVar73; + } + fVar73 = fVar71; + if (fVar110 <= fVar71) { + fVar73 = fVar110; + fVar110 = fVar71; + } + fVar71 = fVar82; + if (fVar82 < fVar62) { + fVar71 = fVar62; + fVar62 = fVar82; + } + fVar82 = fVar79; + if (fVar79 <= fVar106) { + fVar82 = fVar106; + fVar106 = fVar79; + } + fVar79 = fVar110; + if (fVar63 <= fVar110) { + fVar79 = fVar63; + fVar63 = fVar110; + } + fVar110 = fVar82; + if (fVar79 <= fVar82) { + fVar110 = fVar79; + fVar79 = fVar82; + } + fVar82 = fVar112; + if (fVar102 <= fVar112) { + fVar82 = fVar102; + fVar102 = fVar112; + } + fVar112 = fVar71; + if (fVar102 <= fVar71) { + fVar112 = fVar102; + fVar102 = fVar71; + } + fVar71 = fVar82; + if (fVar82 <= fVar110) { + fVar71 = fVar110; + fVar110 = fVar82; + } + fVar82 = fVar112; + if (fVar79 <= fVar112) { + fVar82 = fVar79; + fVar79 = fVar112; + } + fVar112 = fVar63; + if (fVar63 <= fVar102) { + fVar112 = fVar102; + fVar102 = fVar63; + } + fVar63 = fVar77; + if (fVar81 <= fVar77) { + fVar63 = fVar81; + fVar81 = fVar77; + } + fVar77 = fVar62; + if (fVar58 <= fVar62) { + fVar77 = fVar58; + fVar58 = fVar62; + } + fVar62 = fVar81; + if (fVar77 <= fVar81) { + fVar62 = fVar77; + fVar77 = fVar81; + } + fVar81 = fVar100; + if (fVar100 <= fVar73) { + fVar81 = fVar73; + fVar73 = fVar100; + } + fVar100 = fVar73; + if (fVar73 <= fVar62) { + fVar100 = fVar62; + fVar62 = fVar73; + } + fVar73 = fVar81; + if (fVar77 <= fVar81) { + fVar73 = fVar77; + fVar77 = fVar81; + } + fVar81 = fVar110; + if (fVar63 <= fVar110) { + fVar81 = fVar63; + fVar63 = fVar110; + } + fVar110 = fVar71; + if (fVar62 <= fVar71) { + fVar110 = fVar62; + fVar62 = fVar71; + } + fVar71 = fVar82; + if (fVar100 <= fVar82) { + fVar71 = fVar100; + fVar100 = fVar82; + } + fVar82 = fVar73; + if (fVar73 <= fVar79) { + fVar82 = fVar79; + fVar79 = fVar73; + } + fVar73 = fVar102; + if (fVar77 <= fVar102) { + fVar73 = fVar77; + fVar77 = fVar102; + } + fVar102 = fVar112; + if (fVar112 < fVar58) { + fVar102 = fVar58; + fVar58 = fVar112; + } + if (fVar94 <= fVar106) { + fVar94 = fVar106; + } + if (fVar85 <= fVar82) { + fVar82 = fVar85; + } + if (fVar82 <= fVar94) { + fVar82 = fVar94; + } + if (fVar69 <= fVar62) { + fVar69 = fVar62; + } + if (fVar69 <= fVar102) { + fVar102 = fVar69; + } + if (fVar82 <= fVar102) { + fVar102 = fVar82; + } + if (fVar65 <= fVar63) { + fVar65 = fVar63; + } + if (fVar75 <= fVar77) { + fVar77 = fVar75; + } + if (fVar77 <= fVar65) { + fVar65 = fVar77; + } + if (fVar98 <= fVar100) { + fVar100 = fVar98; + } + if (fVar100 <= fVar65) { + fVar100 = fVar65; + } + if (fVar102 < fVar100) { + fVar102 = fVar100; + } + if (fVar92 <= fVar81) { + fVar92 = fVar81; + } + if (fVar67 <= fVar73) { + fVar73 = fVar67; + } + if (fVar73 <= fVar92) { + fVar73 = fVar92; + } + if (fVar71 < fVar89) { + fVar71 = fVar89; + } + if (fVar71 < fVar73) { + fVar73 = fVar71; + } + if (fVar56 <= fVar110) { + fVar56 = fVar110; + } + if (fVar87 <= fVar58) { + fVar58 = fVar87; + } + if (fVar58 <= fVar56) { + fVar56 = fVar58; + } + if (fVar104 <= fVar79) { + fVar79 = fVar104; + } + if (fVar79 <= fVar56) { + fVar79 = fVar56; + } + if (fVar79 <= fVar73) { + fVar73 = fVar79; + } + if (fVar102 < fVar73) { + fVar102 = fVar73; + } + uVar54 = (ulong)(uVar53 + 1); + *(float *)((long)local_210 + uVar44) = fVar102; + } while( true ); + } + goto LAB_002110c4; + } + iVar50 = iVar28 + 1; + local_1b4 = iVar28; +LAB_00212c64: + iVar28 = 0; + uVar54 = (ulong)uVar16; + local_1a8 = uVar16; + } + if (0 < local_1b4) { + uVar16 = -local_1a8; + uVar37 = -(ulong)(uVar16 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar16 << 2; + iVar47 = 0; + do { + uVar51 = -(ulong)(local_1a8 >> 0x1f) & 0xfffffffc00000000 | (ulong)local_1a8 << 2; + if (iVar50 + -2 <= iVar47) { + uVar51 = 0; + } + pfVar32 = pfVar35; + pfVar41 = pfVar36; + uVar44 = -(ulong)((local_1a8 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(local_1a8 << 1) << 2; + if (iVar50 + -3 <= iVar47) { + uVar44 = uVar51; + } + do { + if (iVar47 < 1) { + uVar38 = 0; + uVar40 = 0; + } + else { + uVar38 = uVar37; + uVar40 = -(ulong)((uVar16 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(local_1a8 * -2) << 2; + if (iVar47 == 1) { + uVar40 = uVar37; + } + } + fVar87 = *(float *)((long)pfVar32 + uVar40); + fVar85 = *(float *)((long)pfVar32 + uVar38); + fVar98 = *pfVar32; + fVar65 = *(float *)((long)pfVar32 + uVar51); + fVar63 = *(float *)((long)pfVar32 + uVar44); + fVar89 = fVar85; + if (fVar87 <= fVar85) { + fVar89 = fVar87; + fVar87 = fVar85; + } + fVar85 = fVar65; + if (fVar65 <= fVar63) { + fVar85 = fVar63; + fVar63 = fVar65; + } + fVar65 = fVar98; + if (fVar98 <= fVar63) { + fVar65 = fVar63; + fVar63 = fVar98; + } + fVar98 = fVar85; + if (fVar65 <= fVar85) { + fVar98 = fVar65; + fVar65 = fVar85; + } + if (fVar89 <= fVar63) { + fVar89 = fVar63; + } + if (fVar89 <= fVar65) { + fVar65 = fVar89; + } + if (fVar87 <= fVar98) { + fVar98 = fVar87; + } + if (fVar98 <= fVar65) { + fVar98 = fVar65; + } + pfVar32 = pfVar32 + 1; + *pfVar41 = fVar98; + pfVar41 = pfVar41 + 1; + } while (pfVar35 + (long)(int)uVar10 + 1 != pfVar32); + iVar47 = iVar47 + 1; + pfVar35 = pfVar35 + (long)iVar28 + (long)(int)uVar10 + 1; + pfVar36 = (float *)((long)pfVar36 + + (-(uVar54 >> 0x1f) & 0xfffffffc00000000 | uVar54 << 2)); + } while (iVar47 != local_1b4); + } + } + } + else { + local_158 = 0; + local_150 = (Mat *)0x0; + String::allocate((String *)&local_158,0); + error(-0xd2,(String *)&local_158,"void cv::medianBlur(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xaa8); + String::deallocate((String *)&local_158); + } +LAB_002110c4: + if (lStack_88 != 0) { + piVar33 = (int *)(lStack_88 + 0x14); + do { + iVar28 = *piVar33; + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = iVar28 + -1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + if (iVar28 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = (float *)0x0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar28 = 0; + puVar29 = local_80; + do { + *(undefined4 *)puVar29 = 0; + iVar28 = iVar28 + 1; + puVar29 = (undefined8 *)((long)puVar29 + 4); + } while (iVar28 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_28 != 0) { + piVar33 = (int *)(local_28 + 0x14); + do { + iVar28 = *piVar33; + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = iVar28 + -1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + if (iVar28 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (float *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar28 = 0; + piVar33 = local_20; + do { + *piVar33 = 0; + iVar28 = iVar28 + 1; + piVar33 = piVar33 + 1; + } while (iVar28 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (lStack_e8 != 0) { + piVar33 = (int *)(lStack_e8 + 0x14); + do { + iVar28 = *piVar33; + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = iVar28 + -1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + if (iVar28 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + uStack_f8 = 0; + local_100 = 0; + if (0 < local_11c) { + iVar28 = 0; + piVar33 = local_e0; + do { + *piVar33 = 0; + iVar28 = iVar28 + 1; + piVar33 = piVar33 + 1; + } while (iVar28 < local_11c); + } + goto LAB_00211214; + } + local_138 = (Mat *)0x0; + local_140 = 0; + local_148 = 0; + uStack_128 = 0; + local_130 = 0; + local_144 = 0; + local_158 = CONCAT44(local_158._4_4_,0x2010000); + local_160 = 0; + local_15c = 0; + local_170[0] = 0x1010000; + local_168 = (Mat *)&local_120; + local_150 = (Mat *)&local_c0; + copyMakeBorder((_InputArray *)local_170,(_OutputArray *)&local_158,0,0,param_3 >> 1,param_3 >> 1,1 + ,(Scalar_ *)&local_140); + if (((local_c0 & 7) != 0) || ((uVar16 = local_120 >> 3 & 0x1ff, 1 < uVar16 - 2 && (uVar16 != 0)))) + { + local_140 = 0; + local_138 = (Mat *)0x0; + pcVar30 = (char *)String::allocate((String *)&local_140,0x37); + cVar27 = s_src_depth______CV_8U_____cn____1_0045d650[0x36]; + uVar26 = s_src_depth______CV_8U_____cn____1_0045d650._52_2_; + uVar25 = s_src_depth______CV_8U_____cn____1_0045d650._40_8_; + uVar24 = s_src_depth______CV_8U_____cn____1_0045d650._32_8_; + uVar23 = s_src_depth______CV_8U_____cn____1_0045d650._24_8_; + uVar22 = s_src_depth______CV_8U_____cn____1_0045d650._16_8_; + uVar21 = s_src_depth______CV_8U_____cn____1_0045d650._8_8_; + uVar20 = s_src_depth______CV_8U_____cn____1_0045d650._0_8_; + *(undefined4 *)(pcVar30 + 0x30) = s_src_depth______CV_8U_____cn____1_0045d650._48_4_; + *(undefined2 *)(pcVar30 + 0x34) = uVar26; + pcVar30[0x36] = cVar27; + *(undefined8 *)pcVar30 = uVar20; + *(undefined8 *)(pcVar30 + 8) = uVar21; + *(undefined8 *)(pcVar30 + 0x10) = uVar22; + *(undefined8 *)(pcVar30 + 0x18) = uVar23; + *(undefined8 *)(pcVar30 + 0x20) = uVar24; + *(undefined8 *)(pcVar30 + 0x28) = uVar25; + error(-0xd7,(String *)&local_140,"void cv::medianBlur(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xab1); + String::deallocate((String *)&local_140); + } + if (local_11c < 3) { + dVar57 = (double)(ulong)((long)local_114 * (long)local_118) * DAT_00212fa0; + if (dVar57 < 1.0) goto LAB_002116b8; +LAB_00211360: + iVar28 = 0x15; + iVar50 = 9; + if (4.0 <= dVar57) { + iVar50 = 5; + iVar28 = 9; + } + } + else { + lVar39 = 0; + uVar37 = 1; + do { + piVar33 = local_e0 + lVar39; + lVar39 = lVar39 + 1; + uVar37 = uVar37 * (long)*piVar33; + } while ((int)lVar39 < local_11c); + dVar57 = (double)uVar37 * DAT_00212fa0; + if (1.0 <= dVar57) goto LAB_00211360; +LAB_002116b8: + iVar28 = 0x27; + iVar50 = 0xf; + } + cVar27 = checkHardwareSupport(3); + if ((cVar27 == '\0') && (cVar27 = checkHardwareSupport(100), cVar27 == '\0')) { + iVar50 = iVar28; + } + if (iVar50 < param_3) { + FUN_00203fe8((Mat *)&local_c0,(Mat *)&local_60,param_3); + } + else { + FUN_001f2200(); + } + if (lStack_88 != 0) { + piVar33 = (int *)(lStack_88 + 0x14); + do { + iVar28 = *piVar33; + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = iVar28 + -1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + if (iVar28 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = (float *)0x0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar28 = 0; + puVar29 = local_80; + do { + *(undefined4 *)puVar29 = 0; + iVar28 = iVar28 + 1; + puVar29 = (undefined8 *)((long)puVar29 + 4); + } while (iVar28 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_28 != 0) { + piVar33 = (int *)(local_28 + 0x14); + do { + iVar28 = *piVar33; + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = iVar28 + -1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + if (iVar28 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (float *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar28 = 0; + piVar33 = local_20; + do { + *piVar33 = 0; + iVar28 = iVar28 + 1; + piVar33 = piVar33 + 1; + } while (iVar28 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (lStack_e8 != 0) { + piVar33 = (int *)(lStack_e8 + 0x14); + do { + iVar28 = *piVar33; + cVar27 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar15) { + *piVar33 = iVar28 + -1; + cVar27 = ExclusiveMonitorsStatus(); + } + } while (cVar27 != '\0'); + if (iVar28 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar28 = 0; + piVar33 = local_e0; + do { + *piVar33 = 0; + iVar28 = iVar28 + 1; + piVar33 = piVar33 + 1; + } while (iVar28 < local_11c); + } +LAB_00211214: + lStack_e8 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + local_110 = (float *)0x0; + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00212fb0 (3700 bytes) name=bilateralFilter + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::bilateralFilter(cv::_InputArray const&, cv::_OutputArray const&, int, double, double, int) */ + +void cv::bilateralFilter(_InputArray *param_1,_OutputArray *param_2,int param_3,double param_4, + double param_5,int param_6) + +{ + uint uVar1; + int iVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined2 uVar13; + undefined4 uVar14; + int iVar15; + int iVar16; + char *pcVar17; + _InputArray *p_Var18; + void *pvVar19; + void *pvVar20; + void *pvVar21; + int *piVar22; + uint *puVar23; + Mat *pMVar24; + Scalar_ **ppSVar25; + int iVar26; + size_t sVar27; + ulong uVar28; + ulong uVar29; + long lVar30; + _InputArray *this; + int iVar31; + float fVar32; + double dVar33; + int iVar34; + double dVar35; + double dVar36; + float fVar37; + int iVar38; + double local_2b8; + double local_2b0; + undefined8 local_2a8; + undefined8 local_2a0; + undefined8 local_298; + undefined8 local_290; + undefined8 local_288; + undefined8 local_280; + undefined4 local_278 [2]; + undefined4 *local_270; + undefined4 local_268; + undefined4 local_264; + undefined **local_260; + Mat *local_258; + undefined4 *local_250; + int local_248; + undefined4 local_244; + void *local_240; + void *local_238; + void *local_230; + undefined *local_228; + undefined8 local_220; + undefined4 local_218; + undefined4 local_214; + void *local_210; + _InputArray *local_208; + undefined4 *local_200; + float local_1f8; + void *local_1f0; + void *local_1e8; + undefined8 local_1e0; + Scalar_ *pSStack_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + Scalar_ **local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined8 local_180; + Scalar_ *pSStack_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + Scalar_ **local_140; + ulong *local_138; + ulong local_130 [2]; + uint local_120; + int local_11c; + uint local_118; + undefined4 local_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + uint *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + int local_bc; + int local_b8; + int local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + _InputArray *local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + _InputArray::size((int)param_1); + uVar14 = _InputArray::type(param_1,-1); + _OutputArray::create(param_2,(Scalar_ *)&local_60,uVar14,0xffffffff,0,0); + iVar15 = _InputArray::kind(param_1); + if (iVar15 == 0x10000) { + pMVar24 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar24; + local_11c = *(int *)(pMVar24 + 4); + local_118 = *(uint *)(pMVar24 + 8); + local_114 = *(undefined4 *)(pMVar24 + 0xc); + local_110 = *(long *)(pMVar24 + 0x10); + local_108 = *(undefined8 *)(pMVar24 + 0x18); + local_100 = *(undefined8 *)(pMVar24 + 0x20); + local_f8 = *(undefined8 *)(pMVar24 + 0x28); + local_f0 = *(undefined8 *)(pMVar24 + 0x30); + local_e8 = *(long *)(pMVar24 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar22 = (int *)(local_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = *piVar22 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar24 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar24 + 0x48); + local_c8 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar24); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar16 = _InputArray::kind((_InputArray *)param_2); + iVar15 = param_3 >> 1; + if (iVar16 == 0x10000) { + pMVar24 = *(Mat **)(param_2 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar24; + local_bc = *(int *)(pMVar24 + 4); + local_b8 = *(int *)(pMVar24 + 8); + local_b4 = *(int *)(pMVar24 + 0xc); + local_b0 = *(long *)(pMVar24 + 0x10); + local_a8 = *(undefined8 *)(pMVar24 + 0x18); + local_a0 = *(undefined8 *)(pMVar24 + 0x20); + local_98 = *(undefined8 *)(pMVar24 + 0x28); + local_90 = *(undefined8 *)(pMVar24 + 0x30); + local_88 = *(long *)(pMVar24 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar22 = (int *)(local_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = *piVar22 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar24 + 4)) { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar24); + goto LAB_00213080; + } + uVar29 = (ulong)local_120; + local_70 = **(undefined8 **)(pMVar24 + 0x48); + local_68 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + if ((local_120 & 7) != 0) goto LAB_0021308c; +LAB_002132ec: + iVar16 = ((uint)(uVar29 >> 3) & 0x1ff) + 1; + uVar1 = *local_e0; + if (((uVar29 & 0xfef) != 0) || (local_110 == local_b0)) { + local_298 = 0; + local_290 = 0; + pcVar17 = (char *)String::allocate((String *)&local_298,0x48); + uVar12 = s__src_type______CV_8UC1____src_ty_0045d6b8._56_8_; + uVar11 = s__src_type______CV_8UC1____src_ty_0045d6b8._48_8_; + uVar10 = s__src_type______CV_8UC1____src_ty_0045d6b8._40_8_; + uVar9 = s__src_type______CV_8UC1____src_ty_0045d6b8._32_8_; + uVar8 = s__src_type______CV_8UC1____src_ty_0045d6b8._24_8_; + uVar7 = s__src_type______CV_8UC1____src_ty_0045d6b8._16_8_; + uVar6 = s__src_type______CV_8UC1____src_ty_0045d6b8._8_8_; + uVar5 = s__src_type______CV_8UC1____src_ty_0045d6b8._0_8_; + *(undefined8 *)(pcVar17 + 0x40) = s__src_type______CV_8UC1____src_ty_0045d6b8._64_8_; + *(undefined8 *)pcVar17 = uVar5; + *(undefined8 *)(pcVar17 + 8) = uVar6; + *(undefined8 *)(pcVar17 + 0x10) = uVar7; + *(undefined8 *)(pcVar17 + 0x18) = uVar8; + *(undefined8 *)(pcVar17 + 0x20) = uVar9; + *(undefined8 *)(pcVar17 + 0x28) = uVar10; + *(undefined8 *)(pcVar17 + 0x30) = uVar11; + *(undefined8 *)(pcVar17 + 0x38) = uVar12; + error(-0xd7,(String *)&local_298, + "void cv::bilateralFilter_8u(const cv::Mat&, cv::Mat&, int, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xbfa); + String::deallocate((String *)&local_298); + } + if (param_4 <= 0.0) { + dVar36 = -0.5; + } + else { + dVar36 = -0.5 / (param_4 * param_4); + } + if (param_5 <= 0.0) { + dVar35 = -0.5; + param_5 = 1.0; + } + else { + dVar35 = -0.5 / (param_5 * param_5); + } + if (param_3 < 1) { + lVar30 = lrint(param_5 * 1.5); + iVar15 = (int)lVar30; + } + this = (_InputArray *)&local_1e0; + local_198 = &local_190; + local_1d0 = 0; + local_58 = (_InputArray *)0x0; + local_60 = 0; + if (iVar15 < 1) { + iVar15 = 1; + } + pSStack_1d8 = _UNK_00213fc8; + local_1e0 = _DAT_00213fc0; + local_1a0 = &pSStack_1d8; + uStack_48 = 0; + local_50 = 0; + uStack_188 = 0; + local_190 = 0; + iVar38 = iVar15 * 2 + 1; + local_1c8 = 0; + local_1c0 = 0; + local_1b8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x1010000); + local_218 = 0; + local_214 = 0; + local_228 = (undefined *)CONCAT44(local_228._4_4_,0x2010000); + local_220 = (Mat *)this; + pSStack_178 = (Scalar_ *)&local_120; + copyMakeBorder((_InputArray *)&local_180,(_OutputArray *)&local_228,iVar15,iVar15,iVar15,iVar15, + param_6,(Scalar_ *)&local_60); + uVar29 = (ulong)(uint)(iVar16 * 0x100) << 2; + pvVar19 = operator_new(uVar29); + iVar38 = iVar38 * iVar38; + memset(pvVar19,0,uVar29); + pvVar20 = operator_new((long)iVar38 << 2); + if (iVar38 == 0) { + pvVar21 = (void *)0x0; + } + else { + sVar27 = (long)iVar38 << 2; + memset(pvVar20,0,sVar27); + pvVar21 = operator_new(sVar27); + memset(pvVar21,0,sVar27); + } + lVar30 = 0; + do { + dVar33 = ::exp((double)((int)lVar30 * (int)lVar30) * dVar36); + *(float *)((long)pvVar19 + lVar30 * 4) = (float)dVar33; + lVar30 = lVar30 + 1; + } while ((int)lVar30 < iVar16 * 0x100); + uVar29 = 0; + iVar34 = -iVar15; + iVar38 = iVar34; + do { + iVar31 = iVar16 * iVar34; + iVar26 = iVar34; + do { + while( true ) { + dVar33 = (double)iVar38 * (double)iVar38 + (double)iVar26 * (double)iVar26; + dVar36 = SQRT(dVar33); + if (NAN(dVar36)) { + dVar36 = ::sqrt(dVar33); + } + if ((double)iVar15 < dVar36) break; + uVar28 = -(uVar29 >> 0x1f) & 0xfffffffc00000000 | uVar29 << 2; + iVar26 = iVar26 + 1; + uVar29 = (ulong)((int)uVar29 + 1); + dVar36 = ::exp(dVar36 * dVar36 * dVar35); + iVar2 = iVar31 + iVar38 * (int)local_190; + iVar31 = iVar31 + iVar16; + *(float *)((long)pvVar20 + uVar28) = (float)dVar36; + *(int *)((long)pvVar21 + uVar28) = iVar2; + if (iVar15 < iVar26) goto LAB_00213590; + } + iVar26 = iVar26 + 1; + iVar31 = iVar31 + iVar16; + } while (iVar26 <= iVar15); +LAB_00213590: + iVar38 = iVar38 + 1; + } while (iVar38 <= iVar15); + local_60 = (ulong)uVar1 << 0x20; + local_260 = &PTR_FUN_004f50b0; + local_244 = (undefined4)uVar29; + if (local_bc < 3) { + uVar29 = (long)local_b4 * (long)local_b8; + } + else { + lVar30 = 0; + uVar29 = 1; + do { + piVar22 = local_80 + lVar30; + lVar30 = lVar30 + 1; + uVar29 = uVar29 * (long)*piVar22; + } while ((int)lVar30 < local_bc); + } + local_258 = (Mat *)this; + local_250 = &local_c0; + local_248 = iVar15; + local_240 = pvVar21; + local_238 = pvVar20; + local_230 = pvVar19; + parallel_for_((Range *)&local_60,(ParallelLoopBody *)&local_260,(double)uVar29 * DAT_00213fd0); + local_260 = &PTR_FUN_004f50b0; + ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_260); + if (pvVar21 != (void *)0x0) { + operator_delete(pvVar21); + } + if (pvVar20 != (void *)0x0) { + operator_delete(pvVar20); + } + operator_delete(pvVar19); + if (local_1a8 != 0) { + piVar22 = (int *)(local_1a8 + 0x14); + do { + iVar15 = *piVar22; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)this); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar15 = 0; + ppSVar25 = local_1a0; + do { + *(undefined4 *)ppSVar25 = 0; + iVar15 = iVar15 + 1; + ppSVar25 = (Scalar_ **)((long)ppSVar25 + 4); + } while (iVar15 < local_1e0._4_4_); + } + } + else { + _InputArray::getMat_((int)param_2); +LAB_00213080: + uVar29 = (ulong)local_120; + if ((local_120 & 7) == 0) goto LAB_002132ec; +LAB_0021308c: + if ((local_120 & 7) != 5) { + local_2a8 = 0; + local_2a0 = 0; + pcVar17 = (char *)String::allocate((String *)&local_2a8,0x3d); + cVar3 = s_Bilateral_filtering_is_only_impl_0045d758[0x3c]; + uVar14 = s_Bilateral_filtering_is_only_impl_0045d758._56_4_; + uVar10 = s_Bilateral_filtering_is_only_impl_0045d758._40_8_; + uVar9 = s_Bilateral_filtering_is_only_impl_0045d758._32_8_; + uVar8 = s_Bilateral_filtering_is_only_impl_0045d758._24_8_; + uVar7 = s_Bilateral_filtering_is_only_impl_0045d758._16_8_; + uVar6 = s_Bilateral_filtering_is_only_impl_0045d758._8_8_; + uVar5 = s_Bilateral_filtering_is_only_impl_0045d758._0_8_; + *(undefined8 *)(pcVar17 + 0x30) = s_Bilateral_filtering_is_only_impl_0045d758._48_8_; + *(undefined4 *)(pcVar17 + 0x38) = uVar14; + pcVar17[0x3c] = cVar3; + *(undefined8 *)pcVar17 = uVar5; + *(undefined8 *)(pcVar17 + 8) = uVar6; + *(undefined8 *)(pcVar17 + 0x10) = uVar7; + *(undefined8 *)(pcVar17 + 0x18) = uVar8; + *(undefined8 *)(pcVar17 + 0x20) = uVar9; + *(undefined8 *)(pcVar17 + 0x28) = uVar10; + error(-0xd2,(String *)&local_2a8, + "void cv::bilateralFilter(cv::InputArray, cv::OutputArray, int, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xd62); + String::deallocate((String *)&local_2a8); + goto LAB_00213110; + } + uVar1 = *local_e0; + local_2b8 = -1.0; + iVar16 = ((uint)(uVar29 >> 3) & 0x1ff) + 1; + local_2b0 = 1.0; + if ((((uint)uVar29 & 0xfef) != 5) || (local_110 == local_b0)) { + local_288 = 0; + local_280 = 0; + pcVar17 = (char *)String::allocate((String *)&local_288,0x4a); + uVar13 = s__src_type______CV_32FC1____src_t_0045d708._72_2_; + uVar12 = s__src_type______CV_32FC1____src_t_0045d708._56_8_; + uVar11 = s__src_type______CV_32FC1____src_t_0045d708._48_8_; + uVar10 = s__src_type______CV_32FC1____src_t_0045d708._40_8_; + uVar9 = s__src_type______CV_32FC1____src_t_0045d708._32_8_; + uVar8 = s__src_type______CV_32FC1____src_t_0045d708._24_8_; + uVar7 = s__src_type______CV_32FC1____src_t_0045d708._16_8_; + uVar6 = s__src_type______CV_32FC1____src_t_0045d708._8_8_; + uVar5 = s__src_type______CV_32FC1____src_t_0045d708._0_8_; + *(undefined8 *)(pcVar17 + 0x40) = s__src_type______CV_32FC1____src_t_0045d708._64_8_; + *(undefined2 *)(pcVar17 + 0x48) = uVar13; + *(undefined8 *)pcVar17 = uVar5; + *(undefined8 *)(pcVar17 + 8) = uVar6; + *(undefined8 *)(pcVar17 + 0x10) = uVar7; + *(undefined8 *)(pcVar17 + 0x18) = uVar8; + *(undefined8 *)(pcVar17 + 0x20) = uVar9; + *(undefined8 *)(pcVar17 + 0x28) = uVar10; + *(undefined8 *)(pcVar17 + 0x30) = uVar11; + *(undefined8 *)(pcVar17 + 0x38) = uVar12; + error(-0xd7,(String *)&local_288, + "void cv::bilateralFilter_32f(const cv::Mat&, cv::Mat&, int, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xd04); + String::deallocate((String *)&local_288); + } + if (param_4 <= 0.0) { + dVar36 = -0.5; + param_4 = 1.0; + } + else { + dVar36 = -0.5 / (param_4 * param_4); + } + if (param_5 <= 0.0) { + dVar35 = -0.5; + param_5 = 1.0; + } + else { + dVar35 = -0.5 / (param_5 * param_5); + } + if (param_3 < 1) { + lVar30 = lrint(param_5 * 1.5); + iVar15 = (int)lVar30; + } + if (iVar15 < 1) { + iVar15 = 1; + } + iVar38 = iVar15 * 2 + 1; + Mat::reshape((int)(Mat *)&local_120,1); + this = (_InputArray *)&local_180; + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x1010000); + pSStack_178 = (Scalar_ *)&local_60; + p_Var18 = (_InputArray *)noArray(); + minMaxLoc(this,&local_2b8,&local_2b0,(Point_ *)0x0,(Point_ *)0x0,p_Var18); + if (local_28 != 0) { + piVar22 = (int *)(local_28 + 0x14); + do { + iVar34 = *piVar22; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = iVar34 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar34 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_60._4_4_) { + iVar34 = 0; + do { + iVar34 = iVar34 + 1; + *local_20 = 0; + local_20 = local_20 + 1; + } while (iVar34 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (ABS(local_2b8 - local_2b0) < DAT_00213fd8) { + local_268 = 0; + local_264 = 0; + local_278[0] = 0x2010000; + local_270 = &local_c0; + Mat::copyTo((Mat *)&local_120,(_OutputArray *)local_278); + goto LAB_00213110; + } + local_138 = local_130; + local_170 = 0; + local_168 = 0; + local_60 = 0; + local_140 = &pSStack_178; + pSStack_178 = _UNK_00213fc8; + local_180 = _DAT_00213fc0; + uStack_48 = 0; + local_50 = 0; + local_130[1] = 0; + local_130[0] = 0; + local_218 = 0; + local_214 = 0; + local_228 = (undefined *)CONCAT44(local_228._4_4_,0x2010000); + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + local_1d0 = 0; + local_1e0 = CONCAT44(local_1e0._4_4_,0x1010000); + local_220 = (Mat *)this; + pSStack_1d8 = (Scalar_ *)&local_120; + copyMakeBorder((_InputArray *)&local_1e0,(_OutputArray *)&local_228,iVar15,iVar15,iVar15,iVar15, + param_6,(Scalar_ *)&local_60); + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x3010000); + local_58 = this; + patchNaNs((_InputOutputArray *)&local_60,param_4 * -5.0); + iVar38 = iVar38 * iVar38; + pvVar19 = operator_new((long)iVar38 << 2); + if (iVar38 == 0) { + pvVar20 = (void *)0x0; + } + else { + sVar27 = (long)iVar38 << 2; + memset(pvVar19,0,sVar27); + pvVar20 = operator_new(sVar27); + memset(pvVar20,0,sVar27); + } + iVar38 = iVar16 * 0x1000; + dVar33 = local_2b0 - local_2b8; + uVar29 = (ulong)(iVar38 + 2) << 2; + pvVar21 = operator_new(uVar29); + lVar30 = 0; + memset(pvVar21,0,uVar29); + fVar32 = 1.0; + fVar37 = (float)iVar38 / ((float)dVar33 * (float)iVar16); + do { + while (fVar32 <= 0.0) { + *(undefined4 *)((long)pvVar21 + lVar30 * 4) = 0; + lVar30 = lVar30 + 1; + if (iVar38 + 1 < (int)lVar30) goto LAB_00213b28; + } + dVar33 = (double)((float)(int)lVar30 / fVar37); + dVar33 = ::exp(dVar33 * dVar33 * dVar36); + fVar32 = (float)dVar33; + *(float *)((long)pvVar21 + lVar30 * 4) = fVar32; + lVar30 = lVar30 + 1; + } while ((int)lVar30 <= iVar38 + 1); +LAB_00213b28: + iVar34 = -iVar15; + uVar29 = 0; + iVar38 = iVar34; + do { + iVar26 = iVar34; + iVar31 = iVar16 * iVar34; + do { + while( true ) { + dVar33 = (double)iVar38 * (double)iVar38 + (double)iVar26 * (double)iVar26; + dVar36 = SQRT(dVar33); + if (NAN(dVar36)) { + dVar36 = ::sqrt(dVar33); + } + if ((double)iVar15 < dVar36) break; + uVar28 = -(uVar29 >> 0x1f) & 0xfffffffc00000000 | uVar29 << 2; + iVar26 = iVar26 + 1; + uVar29 = (ulong)((int)uVar29 + 1); + dVar36 = ::exp(dVar36 * dVar36 * dVar35); + iVar2 = iVar31 + iVar38 * (int)(local_130[0] >> 2); + *(float *)((long)pvVar19 + uVar28) = (float)dVar36; + iVar31 = iVar31 + iVar16; + *(int *)((long)pvVar20 + uVar28) = iVar2; + if (iVar15 < iVar26) goto LAB_00213bc8; + } + iVar26 = iVar26 + 1; + iVar31 = iVar31 + iVar16; + } while (iVar26 <= iVar15); +LAB_00213bc8: + iVar38 = iVar38 + 1; + } while (iVar38 <= iVar15); + local_228 = &DAT_004f50e0; + local_220 = (Mat *)CONCAT44(iVar15,iVar16); + local_218 = (undefined4)uVar29; + local_60 = (ulong)uVar1 << 0x20; + if (local_bc < 3) { + uVar29 = (long)local_b4 * (long)local_b8; + } + else { + lVar30 = 0; + uVar29 = 1; + do { + piVar22 = local_80 + lVar30; + lVar30 = lVar30 + 1; + uVar29 = uVar29 * (long)*piVar22; + } while ((int)lVar30 < local_bc); + } + local_210 = pvVar20; + local_208 = this; + local_200 = &local_c0; + local_1f8 = fVar37; + local_1f0 = pvVar19; + local_1e8 = pvVar21; + parallel_for_((Range *)&local_60,(ParallelLoopBody *)&local_228,(double)uVar29 * DAT_00213fd0); + local_228 = &DAT_004f50e0; + ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_228); + operator_delete(pvVar21); + if (pvVar20 != (void *)0x0) { + operator_delete(pvVar20); + } + if (pvVar19 != (void *)0x0) { + operator_delete(pvVar19); + } + if (local_148 != 0) { + piVar22 = (int *)(local_148 + 0x14); + do { + iVar15 = *piVar22; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)this); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar15 = 0; + ppSVar25 = local_140; + do { + *(undefined4 *)ppSVar25 = 0; + iVar15 = iVar15 + 1; + ppSVar25 = (Scalar_ **)((long)ppSVar25 + 4); + } while (iVar15 < local_180._4_4_); + } + } + if (*(Mat **)(this + 0x48) != (Mat *)(this + 0x50)) { + fastFree(*(Mat **)(this + 0x48)); + } +LAB_00213110: + if (local_88 != 0) { + piVar22 = (int *)(local_88 + 0x14); + do { + iVar15 = *piVar22; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar15 = 0; + piVar22 = local_80; + do { + *piVar22 = 0; + iVar15 = iVar15 + 1; + piVar22 = piVar22 + 1; + } while (iVar15 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar22 = (int *)(local_e8 + 0x14); + do { + iVar15 = *piVar22; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar4) { + *piVar22 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar15 = 0; + puVar23 = local_e0; + do { + *puVar23 = 0; + iVar15 = iVar15 + 1; + puVar23 = puVar23 + 1; + } while (iVar15 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00213fe0 (1412 bytes) name=cvSmooth + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void cvSmooth(double param_1,double param_2,cv *param_3,cv *param_4,uint param_5,int param_6, + int param_7,AutoBuffer *param_8) + +{ + char cVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined1 uVar8; + bool bVar9; + void *__dest; + undefined8 *puVar10; + int *piVar11; + int iVar12; + int local_160; + int local_15c; + int local_158; + int local_154; + undefined8 local_150; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_8); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_8); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_a8 = local_108; + local_80 = (int *)&uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_a0 = local_100; + uStack_b8 = uStack_118; + uVar2 = uStack_b8; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar9) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + local_130 = (Mat *)&local_c0; + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_b8._4_4_ = (int)((ulong)uStack_118 >> 0x20); + uStack_68 = local_d8[1]; + bVar9 = uStack_b8._4_4_ != local_20[1]; + uStack_b8 = uVar2; + if ((bVar9) || (uStack_b8._0_4_ = (int)uStack_118, bVar9 = (int)uStack_b8 != *local_20, bVar9)) + goto LAB_0021410c; +LAB_0021441c: + if (param_5 != 0) { + if (((uint)local_c0 & 0xfff) != (local_60 & 0xfff)) goto LAB_0021410c; + goto LAB_0021415c; + } + if (param_7 < 1) { + param_7 = param_6; + } + } + else { + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + if ((local_80[1] == local_20[1]) && (*local_80 == *local_20)) goto LAB_0021441c; +LAB_0021410c: + local_150 = 0; + local_148 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_150,0x59); + memcpy(__dest,&DAT_0045d798,0x59); + cv::error(-0xd7,(String *)&local_150, + "void cvSmooth(const void*, void*, int, int, int, double, double)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xd6e); + cv::String::deallocate((String *)&local_150); +LAB_0021415c: + if (param_7 < 1) { + param_7 = param_6; + } + if (1 < param_5) { + if (param_5 == 2) { + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_140 = 0; + local_13c = 0; + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = param_6; + local_154 = param_7; + local_148 = (Mat *)&local_60; + cv::GaussianBlur(param_1,param_2,(_InputArray *)&local_150,&local_138,&local_158,1); + } + else if (param_5 == 3) { + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_140 = 0; + local_13c = 0; + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_148 = (Mat *)&local_60; + cv::medianBlur((_InputArray *)&local_150,(_OutputArray *)&local_138,param_6); + } + else { + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_140 = 0; + local_13c = 0; + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_148 = (Mat *)&local_60; + cv::bilateralFilter((_InputArray *)&local_150,(_OutputArray *)&local_138,param_6,param_1, + param_2,1); + } + goto LAB_002141c4; + } + } + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_140 = 0; + local_13c = 0; + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = -1; + local_154 = -1; + local_160 = param_6; + local_15c = param_7; + local_148 = (Mat *)&local_60; + cv::boxFilter(&local_150,&local_138,(uint)local_c0 & 7,&local_160,&local_158,param_5 & 1,1); +LAB_002141c4: + if (local_b0 != local_110) { + local_138 = 0; + local_130 = (Mat *)0x0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_138,0x33); + uVar8 = DAT_0045d82a; + uVar7 = _LAB_0045d820; + uVar6 = DAT_0045d818; + uVar5 = _LAB_0045d810; + uVar4 = _DAT_0045d808; + uVar3 = DAT_0045d800; + uVar2 = DAT_0045d7f8; + *(undefined2 *)(puVar10 + 6) = DAT_0045d828; + *(undefined1 *)((long)puVar10 + 0x32) = uVar8; + *puVar10 = uVar2; + puVar10[1] = uVar3; + puVar10[2] = uVar4; + puVar10[3] = uVar5; + puVar10[4] = uVar6; + puVar10[5] = uVar7; + cv::error(-0xcd,(String *)&local_138, + "void cvSmooth(const void*, void*, int, int, int, double, double)", + "/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp",0xd7e); + cv::String::deallocate((String *)&local_138); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar9) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar12 = 0; + piVar11 = local_80; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar9) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar9) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00214600 (9976 bytes) name=FUN_00214600 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00214600(double param_1,Mat *param_2,Mat *param_3,Mat *param_4,int *param_5,uint param_6, + int *param_7,uint param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + char cVar12; + bool bVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + uint uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined1 uVar25; + undefined2 uVar26; + undefined4 uVar27; + long *plVar28; + bool bVar29; + uint uVar30; + int iVar31; + int iVar32; + int iVar33; + int iVar34; + int iVar35; + char *pcVar36; + undefined8 *puVar37; + void *__dest; + long lVar38; + _InputArray *p_Var39; + Mat **ppMVar40; + undefined4 *puVar41; + int *piVar42; + int iVar43; + ulong uVar44; + ulong uVar45; + uint uVar46; + int iVar47; + uint uVar48; + uint local_5a8; + int local_510; + uint local_4d8; + int local_4d0; + int local_4cc; + int local_4c8; + int local_4c4; + int local_4c0; + int local_4bc; + int local_4b8; + int local_4b4; + void *local_4b0; + long local_4a8; + undefined8 local_4a0; + int local_498; + int local_494; + Mat *local_490; + undefined4 local_488; + undefined4 local_484; + undefined8 local_480; + undefined8 uStack_478; + void *local_470; + void *local_468; + void *local_460; + void *local_458; + undefined8 local_450; + long local_448; + int *local_440; + undefined8 *local_438; + undefined8 local_430; + undefined8 uStack_428; + undefined8 local_420; + undefined8 uStack_418; + undefined8 local_410; + undefined8 local_408; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + long local_3e8; + undefined8 *local_3e0; + undefined8 *local_3d8; + undefined8 local_3d0; + undefined8 uStack_3c8; + undefined8 local_3c0; + undefined8 uStack_3b8; + undefined8 local_3b0; + undefined8 local_3a8; + undefined8 local_3a0; + undefined8 local_398; + undefined8 local_390; + long local_388; + undefined8 *local_380; + undefined8 *local_378; + undefined8 local_370; + undefined8 uStack_368; + undefined8 local_360; + Mat *pMStack_358; + void *local_350; + void *local_348; + void *local_340; + void *local_338; + undefined8 local_330; + long local_328; + undefined4 *local_320; + long *local_318; + long alStack_310 [2]; + undefined8 local_300; + undefined8 uStack_2f8; + void *local_2f0; + void *local_2e8; + void *local_2e0; + void *local_2d8; + undefined8 local_2d0; + long local_2c8; + undefined4 *local_2c0; + long *local_2b8; + long alStack_2b0 [2]; + undefined8 local_2a0; + Mat *pMStack_298; + void *local_290; + void *pvStack_288; + void *local_280; + void *pvStack_278; + undefined8 local_270; + long lStack_268; + Mat **local_260; + long *local_258; + long local_250; + long lStack_248; + undefined8 local_240; + undefined8 uStack_238; + void *local_230; + void *pvStack_228; + void *local_220; + void *pvStack_218; + undefined8 local_210; + long lStack_208; + undefined8 *local_200; + long *local_1f8; + long local_1f0; + long lStack_1e8; + undefined8 local_1e0; + undefined8 local_1d8; + void *local_1d0; + void *pvStack_1c8; + void *local_1c0; + void *pvStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + long *local_198; + long local_190; + long local_188; + undefined8 local_180; + undefined8 uStack_178; + void *local_170; + void *pvStack_168; + void *local_160; + void *pvStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + long *local_138; + long local_130 [2]; + undefined8 local_120; + undefined8 uStack_118; + void *local_110; + void *local_108; + void *local_100; + void *local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + long *local_d8; + long alStack_d0 [2]; + int local_c0 [14]; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + undefined8 uStack_58; + void *local_50; + void *pvStack_48; + void *local_40; + void *pvStack_38; + undefined8 local_30; + long lStack_28; + undefined8 *local_20; + long *local_18; + long local_10; + long lStack_8; + + uStack_478 = *(Mat **)(param_3 + 8); + local_480 = *(ulong *)param_3; + local_438 = &local_430; + local_470 = *(void **)(param_3 + 0x10); + local_468 = *(void **)(param_3 + 0x18); + uStack_428 = 0; + local_430 = 0; + local_460 = *(void **)(param_3 + 0x20); + local_458 = *(void **)(param_3 + 0x28); + local_448 = *(long *)(param_3 + 0x38); + local_450 = *(undefined8 *)(param_3 + 0x30); + local_4b0 = (void *)0x0; + local_4a8 = 0; + local_4a0 = 0; + local_440 = (int *)&uStack_478; + iVar31 = *(int *)(param_3 + 4); + if (local_448 != 0) { + piVar42 = (int *)(local_448 + 0x14); + do { + cVar12 = '\x01'; + bVar29 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar29) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + iVar31 = *(int *)(param_3 + 4); + } + if (2 < iVar31) { + /* WARNING: Ignoring partial resolution of indirect */ + local_480._4_4_ = 0; + cv::Mat::copySize((Mat *)&local_480,param_3); + } + uVar18 = param_6 >> 3 & 0x1ff; + uVar6 = *(uint *)param_2 & 7; + uVar1 = (*(uint *)param_2 >> 3 & 0x1ff) + 1; + local_4d8 = (uint)local_480 & 7; + uVar7 = param_6 & 7; + uVar48 = ((uint)local_480 >> 3 & 0x1ff) + 1; + if (((2 < *(int *)(param_2 + 4)) || (2 < local_480._4_4_)) || (2 < *(int *)(param_4 + 4))) { + local_360 = 0; + pMStack_358 = (Mat *)0x0; + pcVar36 = (char *)cv::String::allocate((String *)&local_360,0x32); + uVar24 = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._40_8_; + uVar23 = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._32_8_; + uVar22 = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._24_8_; + uVar21 = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._16_8_; + uVar20 = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._8_8_; + uVar19 = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._0_8_; + *(undefined2 *)(pcVar36 + 0x30) = s_img_dims_<__2_&&_templ_dims_<__2_0045f750._48_2_; + *(undefined8 *)pcVar36 = uVar19; + *(undefined8 *)(pcVar36 + 8) = uVar20; + *(undefined8 *)(pcVar36 + 0x10) = uVar21; + *(undefined8 *)(pcVar36 + 0x18) = uVar22; + *(undefined8 *)(pcVar36 + 0x20) = uVar23; + *(undefined8 *)(pcVar36 + 0x28) = uVar24; + cv::error(-0xd7,(String *)&local_360, + "void cv::crossCorr(const cv::Mat&, const cv::Mat&, cv::Mat&, cv::Size, int, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x288); + cv::String::deallocate((String *)&local_360); + } + if (uVar6 != local_4d8) { + uVar30 = uVar6; + if (uVar6 < 5) { + uVar30 = 5; + } + if (local_4d8 != uVar30) { + local_50 = (void *)0x0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + uStack_58 = (Mat *)&local_480; + cv::Mat::convertTo(param_3,(_OutputArray *)&local_60,uVar30,1.0,0.0); + local_4d8 = (uint)local_480 & 7; + } + if ((uVar6 != local_4d8) && (local_4d8 != 5)) { + local_300 = 0; + uStack_2f8 = (Mat *)0x0; + puVar37 = (undefined8 *)cv::String::allocate((String *)&local_300,0x23); + uVar25 = DAT_0045f7f2; + uVar22 = _LAB_0045f7e8; + uVar21 = DAT_0045f7e0; + uVar20 = DAT_0045f7d8; + uVar19 = DAT_0045f7d0; + *(undefined2 *)(puVar37 + 4) = DAT_0045f7f0; + *(undefined1 *)((long)puVar37 + 0x22) = uVar25; + *puVar37 = uVar19; + puVar37[1] = uVar20; + puVar37[2] = uVar21; + puVar37[3] = uVar22; + cv::error(-0xd7,(String *)&local_300, + "void cv::crossCorr(const cv::Mat&, const cv::Mat&, cv::Mat&, cv::Size, int, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x290); + cv::String::deallocate((String *)&local_300); + } + } + if ((*(int *)(param_2 + 8) + (int)uStack_478 <= param_5[1]) || + (*(int *)(param_2 + 0xc) + uStack_478._4_4_ <= *param_5)) { + local_2a0 = 0; + pMStack_298 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_2a0,0x5b); + memcpy(__dest,&DAT_0045f7f8,0x5b); + cv::error(-0xd7,(String *)&local_2a0, + "void cv::crossCorr(const cv::Mat&, const cv::Mat&, cv::Mat&, cv::Size, int, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x292); + cv::String::deallocate((String *)&local_2a0); + } + if ((uVar18 != 0) && (param_1 != 0.0)) { + local_120 = 0; + uStack_118 = (Mat *)0x0; + puVar37 = (undefined8 *)cv::String::allocate((String *)&local_120,0x16); + uVar26 = _LAB_0045f86c; + uVar20 = DAT_0045f860; + uVar19 = DAT_0045f858; + *(undefined4 *)(puVar37 + 2) = DAT_0045f868; + *(undefined2 *)((long)puVar37 + 0x14) = uVar26; + *puVar37 = uVar19; + puVar37[1] = uVar20; + cv::error(-0xd7,(String *)&local_120, + "void cv::crossCorr(const cv::Mat&, const cv::Mat&, cv::Mat&, cv::Size, int, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x294); + cv::String::deallocate((String *)&local_120); + } + if ((((2 < *(int *)(param_4 + 4)) || (param_5[1] != *(int *)(param_4 + 8))) || + (*param_5 != *(int *)(param_4 + 0xc))) || + (((param_6 & 0xfff) != (*(uint *)param_4 & 0xfff) || (*(long *)(param_4 + 0x10) == 0)))) { + local_4c0 = param_5[1]; + local_4bc = *param_5; + cv::Mat::create(param_4,2,&local_4c0,param_6 & 0xfff); + } + local_5a8 = 6; + if (uVar6 < 2) { + uVar30 = local_4d8; + if (local_4d8 < 6) { + uVar30 = 5; + } + local_5a8 = uVar7; + if (uVar7 < uVar30) { + local_5a8 = uVar30; + } + } + lVar38 = lrint((double)uStack_478._4_4_ * 4.5); + iVar31 = (int)lVar38; + if ((int)lVar38 < 0x101 - uStack_478._4_4_) { + iVar31 = 0x101 - uStack_478._4_4_; + } + if (*(int *)(param_4 + 0xc) < iVar31) { + iVar31 = *(int *)(param_4 + 0xc); + } + lVar38 = lrint((double)(int)uStack_478 * 4.5); + iVar32 = (int)lVar38; + if ((int)lVar38 < 0x101 - (int)uStack_478) { + iVar32 = 0x101 - (int)uStack_478; + } + if (*(int *)(param_4 + 8) < iVar32) { + iVar32 = *(int *)(param_4 + 8); + } + iVar31 = cv::getOptimalDFTSize(iVar31 + uStack_478._4_4_ + -1); + if (iVar31 < 2) { + iVar31 = 2; + } + iVar32 = cv::getOptimalDFTSize(iVar32 + (int)uStack_478 + -1); + if (iVar32 < 1) { + local_c0[0] = 0; + local_c0[1] = 0; + local_c0[2] = 0; + local_c0[3] = 0; + pcVar36 = (char *)cv::String::allocate((String *)local_c0,0x1c); + uVar27 = s_the_input_arrays_are_too_big_0045f870._24_4_; + uVar20 = s_the_input_arrays_are_too_big_0045f870._8_8_; + uVar19 = s_the_input_arrays_are_too_big_0045f870._0_8_; + *(undefined8 *)(pcVar36 + 0x10) = s_the_input_arrays_are_too_big_0045f870._16_8_; + *(undefined4 *)(pcVar36 + 0x18) = uVar27; + *(undefined8 *)pcVar36 = uVar19; + *(undefined8 *)(pcVar36 + 8) = uVar20; + cv::error(-0xd3,(String *)local_c0, + "void cv::crossCorr(const cv::Mat&, const cv::Mat&, cv::Mat&, cv::Size, int, cv::Point, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x2a5); + cv::String::deallocate((String *)local_c0); + } + local_3d8 = &local_3d0; + uStack_418 = _UNK_00217048; + local_420 = _DAT_00217040; + iVar2 = (iVar31 - uStack_478._4_4_) + 1; + iVar3 = (iVar32 - (int)uStack_478) + 1; + if (*(int *)(param_4 + 0xc) < iVar2) { + iVar2 = *(int *)(param_4 + 0xc); + } + uStack_3c8 = 0; + local_3d0 = 0; + if (*(int *)(param_4 + 8) < iVar3) { + iVar3 = *(int *)(param_4 + 8); + } + local_4b8 = iVar32 * uVar48; + local_3e0 = &uStack_418; + local_410 = 0; + local_408 = 0; + local_400 = 0; + local_3f8 = 0; + local_3f0 = 0; + local_3e8 = 0; + local_4b4 = iVar31; + cv::Mat::create((Mat *)&local_420,2,&local_4b8,local_5a8); + local_378 = &local_370; + local_380 = &uStack_3b8; + uStack_3b8 = _UNK_00217048; + local_3c0 = _DAT_00217040; + local_3b0 = 0; + local_3a8 = 0; + local_3a0 = 0; + uStack_368 = 0; + local_370 = 0; + local_398 = 0; + local_390 = 0; + local_388 = 0; + local_498 = iVar32; + local_494 = iVar31; + cv::Mat::create((Mat *)&local_3c0,2,&local_498,local_5a8); + bVar29 = uVar48 != 1; + if ((local_5a8 == local_4d8) || (!bVar29)) { + iVar43 = 0; + } + else { + iVar43 = uStack_478._4_4_ * (int)uStack_478 * + (1 << (ulong)((uint)(0xfa50L >> (local_4d8 << 1)) & 3)); + } + if (((uVar6 != local_5a8) && (uVar1 != 1)) && + (iVar33 = (iVar2 + uStack_478._4_4_ + -1) * (iVar3 + (int)uStack_478 + -1) * + (1 << (ulong)((uint)(0xfa50L >> (uVar6 << 1)) & 3)), iVar43 < iVar33)) { + iVar43 = iVar33; + } + if (((1 < uVar1) || (uVar18 != 0 && uVar18 != 0xffffffff)) && + ((uVar7 != local_5a8 && + (iVar33 = iVar2 * iVar3 * (1 << (ulong)((uint)(0xfa50L >> (uVar7 << 1)) & 3)), iVar43 < iVar33 + )))) { + iVar43 = iVar33; + } + uVar44 = (ulong)iVar43; + uVar45 = local_4a8 - (long)local_4b0; + if (uVar45 < uVar44) { + std::vector>::_M_fill_insert + ((vector> *)&local_4b0,local_4a8, + uVar44 - uVar45); + } + else if (uVar44 < uVar45) { + local_4a8 = (long)local_4b0 + uVar44; + } + uVar46 = 0; + uVar30 = 0; + do { + local_140 = &uStack_178; + local_130[1] = 0; + local_130[0] = 0; + uStack_178 = uStack_478; + local_180 = local_480; + local_170 = local_470; + pvStack_168 = local_468; + local_160 = local_460; + pvStack_158 = local_458; + local_150 = local_450; + lStack_148 = local_448; + if (local_448 != 0) { + piVar42 = (int *)(local_448 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + local_138 = local_130; + if (2 < local_480._4_4_) { + local_180 = local_480 & 0xffffffff; + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_480); + } + local_60._0_4_ = 0; + local_60._4_4_ = uVar46; + uStack_58._0_4_ = iVar31; + uStack_58._4_4_ = iVar32; + cv::Mat::Mat((Mat *)local_c0,(Mat *)&local_420,(Mat *)&local_60); + local_60 = (ulong)uVar46 << 0x20; + uStack_58 = (Mat *)CONCAT44((int)uStack_478,uStack_478._4_4_); + cv::Mat::Mat((Mat *)&local_120,(Mat *)&local_420,(Mat *)&local_60); + if (bVar29) { + local_18 = &local_10; + if (local_5a8 == local_4d8) { + local_20 = &uStack_58; + lStack_8 = 0; + local_10 = 0; + uStack_58 = uStack_118; + local_60 = local_120; + local_50 = local_110; + pvStack_48 = local_108; + local_40 = local_100; + pvStack_38 = local_f8; + local_30 = local_f0; + lStack_28 = local_e8; + if (local_e8 != 0) { + piVar42 = (int *)(local_e8 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (local_120._4_4_ < 3) { + local_10 = *local_d8; + lStack_8 = local_d8[1]; + } + else { + local_60 = local_120 & 0xffffffff; + cv::Mat::copySize((Mat *)&local_60,(Mat *)&local_120); + } + if (lStack_28 != 0) { + piVar42 = (int *)(lStack_28 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + } + else { + iVar43 = 1 << (ulong)((uint)(0xfa50L >> (local_4d8 << 1)) & 3); + local_20 = &uStack_58; + uStack_58 = *(Mat **)local_440; + local_10 = (long)iVar43 * (long)local_440[1]; + lStack_8 = (long)iVar43; + local_50 = local_4b0; + pvStack_48 = local_4b0; + local_30 = 0; + lStack_28 = 0; + local_60 = CONCAT44(2,local_4d8 + 0x42ff0000 | 0x4000); + local_40 = (void *)((long)local_4b0 + local_10 * *local_440); + pvStack_38 = local_40; + } + if (lStack_148 != 0) { + piVar42 = (int *)(lStack_148 + 0x14); + do { + iVar43 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar43 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar43 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = (void *)0x0; + pvStack_158 = (void *)0x0; + local_160 = (void *)0x0; + pvStack_168 = (void *)0x0; + if (local_180._4_4_ < 1) { +LAB_00214f78: + if (2 < (int)local_60._4_4_) goto LAB_002164b4; + local_180 = local_60; + uStack_178 = uStack_58; + *local_138 = *local_18; + local_138[1] = local_18[1]; + } + else { + iVar43 = 0; + puVar37 = local_140; + do { + *(undefined4 *)puVar37 = 0; + iVar43 = iVar43 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar43 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_00214f78; +LAB_002164b4: + local_180 = CONCAT44(local_180._4_4_,(int)local_60); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_60); + } + pvStack_158 = pvStack_38; + local_160 = local_40; + lStack_148 = lStack_28; + local_150 = local_30; + pvStack_168 = pvStack_48; + local_170 = local_50; + if (lStack_28 != 0) { + piVar42 = (int *)(lStack_28 + 0x14); + do { + iVar43 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar43 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar43 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = (void *)0x0; + pvStack_38 = (void *)0x0; + local_40 = (void *)0x0; + pvStack_48 = (void *)0x0; + if (0 < (int)local_60._4_4_) { + iVar43 = 0; + puVar37 = local_20; + do { + *(undefined4 *)puVar37 = 0; + iVar43 = iVar43 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar43 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + local_60 = (ulong)uVar30; + cv::mixChannels((Mat *)&local_480,1,(Mat *)&local_180,1,(int *)&local_60,1); + } + if (local_110 != local_170) { + local_50 = (void *)0x0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + uStack_58 = (Mat *)&local_120; + cv::Mat::convertTo((Mat *)&local_180,(_OutputArray *)&local_60,(uint)local_120 & 7,1.0,0.0); + } + if (uStack_478._4_4_ < local_c0[3]) { + local_240 = (long)uStack_478 << 0x20; + local_1e0 = CONCAT44(local_c0[3],uStack_478._4_4_); + cv::Mat::Mat((Mat *)&local_60,(Mat *)local_c0,(Range *)&local_240,(Range *)&local_1e0); + local_1d8 = (Mat *)0x0; + local_1e0 = 0; + pvStack_1c8 = (void *)0x0; + local_1d0 = (void *)0x0; + cv::Mat::operator=((Mat *)&local_60,(Scalar_ *)&local_1e0); + if (lStack_28 != 0) { + piVar42 = (int *)(lStack_28 + 0x14); + do { + iVar43 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar43 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar43 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = (void *)0x0; + pvStack_38 = (void *)0x0; + local_40 = (void *)0x0; + pvStack_48 = (void *)0x0; + if (0 < (int)local_60._4_4_) { + iVar43 = 0; + puVar37 = local_20; + do { + *(undefined4 *)puVar37 = 0; + iVar43 = iVar43 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar43 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + } + local_1e0 = CONCAT44(local_1e0._4_4_,0x1010000); + local_50 = (void *)0x0; + local_1d0 = (void *)0x0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + local_1d8 = (Mat *)local_c0; + uStack_58 = (Mat *)local_c0; + cv::dft((_InputArray *)&local_1e0,(_OutputArray *)&local_60,0,(int)uStack_478); + if (local_e8 != 0) { + piVar42 = (int *)(local_e8 + 0x14); + do { + iVar43 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar43 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar43 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = (void *)0x0; + local_f8 = (void *)0x0; + local_100 = (void *)0x0; + local_108 = (void *)0x0; + if (0 < local_120._4_4_) { + iVar43 = 0; + puVar41 = local_e0; + do { + *puVar41 = 0; + iVar43 = iVar43 + 1; + puVar41 = puVar41 + 1; + } while (iVar43 < local_120._4_4_); + } + if (local_d8 != alStack_d0) { + cv::fastFree(local_d8); + } + if (local_88 != 0) { + piVar42 = (int *)(local_88 + 0x14); + do { + iVar43 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar43 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar43 == 1) { + cv::Mat::deallocate((Mat *)local_c0); + } + } + local_88 = 0; + local_c0[4] = 0; + local_c0[5] = 0; + local_c0[10] = 0; + local_c0[0xb] = 0; + local_c0[8] = 0; + local_c0[9] = 0; + local_c0[6] = 0; + local_c0[7] = 0; + if (0 < local_c0[1]) { + iVar43 = 0; + puVar41 = local_80; + do { + *puVar41 = 0; + iVar43 = iVar43 + 1; + puVar41 = puVar41 + 1; + } while (iVar43 < local_c0[1]); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (lStack_148 != 0) { + piVar42 = (int *)(lStack_148 + 0x14); + do { + iVar43 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar43 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar43 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = (void *)0x0; + pvStack_158 = (void *)0x0; + local_160 = (void *)0x0; + pvStack_168 = (void *)0x0; + if (0 < local_180._4_4_) { + iVar43 = 0; + puVar37 = local_140; + do { + *(undefined4 *)puVar37 = 0; + iVar43 = iVar43 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar43 < local_180._4_4_); + } + if (local_138 != local_130) { + cv::fastFree(local_138); + } + uVar30 = uVar30 + 1; + uVar46 = uVar46 + iVar32; + if (uVar30 == uVar48) { + iVar43 = 0; + if (iVar2 != 0) { + iVar43 = (iVar2 + *(int *)(param_4 + 0xc) + -1) / iVar2; + } + uVar48 = *(uint *)param_2; + local_4cc = **(int **)(param_2 + 0x40); + local_4d0 = (*(int **)(param_2 + 0x40))[1]; + local_140 = &uStack_178; + iVar33 = *(int *)(param_2 + 4); + local_180 = *(ulong *)param_2; + local_138 = local_130; + uStack_178 = *(Mat **)(param_2 + 8); + local_170 = *(void **)(param_2 + 0x10); + pvStack_168 = *(void **)(param_2 + 0x18); + iVar11 = 0; + if (iVar3 != 0) { + iVar11 = (iVar3 + *(int *)(param_4 + 8) + -1) / iVar3; + } + local_160 = *(void **)(param_2 + 0x20); + pvStack_158 = *(void **)(param_2 + 0x28); + local_150 = *(undefined8 *)(param_2 + 0x30); + lStack_148 = *(long *)(param_2 + 0x38); + local_4c8 = 0; + local_4c4 = 0; + local_130[1] = 0; + local_130[0] = 0; + if (lStack_148 != 0) { + piVar42 = (int *)(lStack_148 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + iVar33 = *(int *)(param_2 + 4); + } + if (2 < iVar33) { + local_180 = (ulong)uVar48; + cv::Mat::copySize((Mat *)&local_180,param_2); + } + if ((param_8 >> 4 & 1) == 0) { + cv::Mat::locateROI(param_2,(Size_ *)&local_4d0,(Point_ *)&local_4c8); + cv::Mat::adjustROI((Mat *)&local_180,local_4c4, + (local_4cc - *(int *)(param_2 + 8)) - local_4c4,local_4c8, + (local_4d0 - *(int *)(param_2 + 0xc)) - local_4c8); + } + if (0 < iVar43 * iVar11) { + local_510 = 0; + iVar33 = 1 << (ulong)((uint)(0xfa50L >> (uVar6 << 1)) & 3); + do { + iVar35 = 0; + if (iVar43 != 0) { + iVar35 = local_510 / iVar43; + } + iVar47 = iVar35 * iVar3; + iVar34 = (local_510 - iVar35 * iVar43) * iVar2; + iVar35 = *(int *)(param_4 + 0xc) - iVar34; + if (iVar2 < *(int *)(param_4 + 0xc) - iVar34) { + iVar35 = iVar2; + } + iVar8 = *(int *)(param_4 + 8) - iVar47; + if (iVar3 < *(int *)(param_4 + 8) - iVar47) { + iVar8 = iVar3; + } + iVar4 = (iVar34 - *param_7) + local_4c8; + iVar14 = iVar35 + uStack_478._4_4_ + -1; + iVar9 = iVar4; + if (iVar4 < 0) { + iVar9 = 0; + } + iVar15 = iVar8 + (int)uStack_478 + -1; + iVar5 = (iVar47 - param_7[1]) + local_4c4; + iVar10 = iVar5; + if (iVar5 < 0) { + iVar10 = 0; + } + iVar17 = iVar14 + iVar4; + if (uStack_178._4_4_ < iVar14 + iVar4) { + iVar17 = uStack_178._4_4_; + } + iVar16 = iVar15 + iVar5; + if ((int)uStack_178 < iVar15 + iVar5) { + iVar16 = (int)uStack_178; + } + local_c0[1] = iVar16; + local_c0[0] = iVar10; + local_60._0_4_ = iVar9; + local_60._4_4_ = iVar17; + cv::Mat::Mat((Mat *)&local_360,(Mat *)&local_180,(Range *)local_c0,(Range *)&local_60); + local_60 = 0; + uStack_58._0_4_ = iVar14; + uStack_58._4_4_ = iVar15; + cv::Mat::Mat((Mat *)&local_120,(Mat *)&local_3c0,(Mat *)&local_60); + iVar16 = iVar16 - iVar10; + iVar17 = iVar17 - iVar9; + local_60 = CONCAT44(iVar10 - iVar5,iVar9 - iVar4); + uStack_58 = (Mat *)CONCAT44(iVar16,iVar17); + cv::Mat::Mat((Mat *)&local_300,(Mat *)&local_3c0,(Mat *)&local_60); + uStack_58 = (Mat *)CONCAT44(iVar8,iVar35); + local_60 = CONCAT44(iVar47,iVar34); + cv::Mat::Mat((Mat *)local_c0,param_4,(Mat *)&local_60); + uVar48 = 0; + lVar38 = (long)iVar17 * (long)iVar33; + iVar47 = 0; + do { + lStack_248 = 0; + local_250 = 0; + pMStack_298 = pMStack_358; + local_2a0 = local_360; + local_270 = local_330; + local_290 = local_350; + pvStack_288 = local_348; + local_280 = local_340; + pvStack_278 = local_338; + lStack_268 = local_328; + if (local_328 != 0) { + piVar42 = (int *)(local_328 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + local_260 = &pMStack_298; + local_258 = &local_250; + if (local_360._4_4_ < 3) { + local_250 = *local_318; + lStack_248 = local_318[1]; + } + else { + local_2a0 = local_360 & 0xffffffff; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_360); + } + uStack_58 = (Mat *)0x0; + local_60 = 0; + pvStack_48 = (void *)0x0; + local_50 = (void *)0x0; + cv::Mat::operator=((Mat *)&local_3c0,(Scalar_ *)&local_60); + if (uVar1 != 1) { + local_200 = &uStack_238; + if (uVar6 == local_5a8) { + local_1f8 = &local_1f0; + lStack_1e8 = 0; + local_1f0 = 0; + uStack_238 = uStack_2f8; + local_240 = local_300; + local_210 = local_2d0; + local_230 = local_2f0; + pvStack_228 = local_2e8; + local_220 = local_2e0; + pvStack_218 = local_2d8; + lStack_208 = local_2c8; + if (local_2c8 != 0) { + piVar42 = (int *)(local_2c8 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (local_300._4_4_ < 3) { + local_1f0 = *local_2b8; + lStack_1e8 = local_2b8[1]; + } + else { + local_240 = local_300 & 0xffffffff; + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_300); + } + if (lStack_208 != 0) { + piVar42 = (int *)(lStack_208 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + } + else { + local_1f8 = &local_1f0; + local_230 = local_4b0; + local_220 = (void *)((long)local_4b0 + lVar38 * iVar16); + pvStack_228 = local_4b0; + local_240 = CONCAT44(2,uVar6 + 0x42ff0000 | 0x4000); + uStack_238 = (Mat *)CONCAT44(iVar17,iVar16); + local_210 = 0; + lStack_208 = 0; + pvStack_218 = local_220; + local_1f0 = lVar38; + lStack_1e8 = (long)iVar33; + } + if (lStack_268 == 0) { +LAB_0021585c: + if (0 < local_2a0._4_4_) goto LAB_0021587c; +LAB_00216a88: + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_240); +LAB_002158a8: + plVar28 = local_1f8; + if (2 < local_240._4_4_) goto LAB_00216730; + local_2a0 = CONCAT44(local_240._4_4_,(undefined4)local_2a0); + pMStack_298 = uStack_238; + *local_258 = *local_1f8; + local_258[1] = plVar28[1]; + } + else { + piVar42 = (int *)(lStack_268 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 != 1) goto LAB_0021585c; + cv::Mat::deallocate((Mat *)&local_2a0); + if (local_2a0._4_4_ < 1) goto LAB_00216a88; +LAB_0021587c: + iVar34 = 0; + ppMVar40 = local_260; + do { + *(undefined4 *)ppMVar40 = 0; + iVar34 = iVar34 + 1; + ppMVar40 = (Mat **)((long)ppMVar40 + 4); + } while (iVar34 < local_2a0._4_4_); + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_240); + if (local_2a0._4_4_ < 3) goto LAB_002158a8; +LAB_00216730: + lStack_268 = 0; + pvStack_278 = (void *)0x0; + local_280 = (void *)0x0; + pvStack_288 = (void *)0x0; + local_290 = (void *)0x0; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_240); + } + pvStack_278 = pvStack_218; + local_280 = local_220; + lStack_268 = lStack_208; + local_270 = local_210; + pvStack_288 = pvStack_228; + local_290 = local_230; + if (lStack_208 != 0) { + piVar42 = (int *)(lStack_208 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = (void *)0x0; + pvStack_218 = (void *)0x0; + local_220 = (void *)0x0; + pvStack_228 = (void *)0x0; + if (0 < local_240._4_4_) { + iVar34 = 0; + puVar37 = local_200; + do { + *(undefined4 *)puVar37 = 0; + iVar34 = iVar34 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar34 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + cv::fastFree(local_1f8); + } + local_60 = (ulong)uVar48; + cv::mixChannels((Mat *)&local_360,1,(Mat *)&local_2a0,1,(int *)&local_60,1); + } + if (local_2f0 != local_290) { + local_50 = (void *)0x0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + uStack_58 = (Mat *)&local_300; + cv::Mat::convertTo((Mat *)&local_2a0,(_OutputArray *)&local_60,(uint)local_300 & 7,1.0 + ,0.0); + } + if (iVar17 < iVar14 || iVar16 < iVar15) { + uStack_58 = (Mat *)0x0; + local_60 = 0; + pvStack_48 = (void *)0x0; + local_50 = (void *)0x0; + local_240 = CONCAT44(local_240._4_4_,0x1010000); + local_230 = (void *)0x0; + local_1d0 = (void *)0x0; + local_1e0 = CONCAT44(local_1e0._4_4_,0x2010000); + uStack_238 = (Mat *)&local_300; + local_1d8 = (Mat *)&local_120; + cv::copyMakeBorder((_InputArray *)&local_240,(_OutputArray *)&local_1e0,iVar10 - iVar5 + ,((int)uStack_118 - (int)uStack_2f8) + (iVar5 - iVar10), + iVar9 - iVar4, + (uStack_118._4_4_ - uStack_2f8._4_4_) + (iVar4 - iVar9), + param_8 | 0x10,(Scalar_ *)&local_60); + } + local_1e0._0_4_ = 0x1010000; + local_50 = (void *)0x0; + local_1d0 = (void *)0x0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + local_1d8 = (Mat *)&local_3c0; + uStack_58 = (Mat *)&local_3c0; + cv::dft((_InputArray *)&local_1e0,(_OutputArray *)&local_60,0,iVar15); + local_1e0._4_4_ = iVar47; + if (!bVar29) { + local_1e0._4_4_ = 0; + } + local_1e0._0_4_ = 0; + local_1d8 = (Mat *)CONCAT44(iVar32,iVar31); + cv::Mat::Mat((Mat *)&local_60,(Mat *)&local_420,(_InputArray *)&local_1e0); + local_498 = 0x1010000; + local_240._0_4_ = 0x1010000; + local_488 = 0; + local_484 = 0; + local_230 = (void *)0x0; + local_1d0 = (void *)0x0; + local_1e0._0_4_ = 0x2010000; + local_490 = (Mat *)&local_3c0; + uStack_238 = (Mat *)&local_60; + local_1d8 = (Mat *)&local_3c0; + cv::mulSpectrums((_InputArray *)&local_498,(_InputArray *)&local_240, + (_OutputArray *)&local_1e0,0,true); + local_240._0_4_ = 0x1010000; + local_230 = (void *)0x0; + local_1d0 = (void *)0x0; + local_1e0 = CONCAT44(local_1e0._4_4_,0x2010000); + uStack_238 = (Mat *)&local_3c0; + local_1d8 = (Mat *)&local_3c0; + cv::dft((_InputArray *)&local_240,(_OutputArray *)&local_1e0,3,iVar8); + local_240 = 0; + uStack_238 = (Mat *)CONCAT44(iVar8,iVar35); + cv::Mat::Mat((Mat *)&local_1e0,(Mat *)&local_3c0,(_InputArray *)&local_240); + if (lStack_1a8 != 0) { + piVar42 = (int *)(lStack_1a8 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (lStack_268 == 0) { +LAB_00215be4: + if (0 < local_2a0._4_4_) goto LAB_00215c04; +LAB_002167b8: + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); +LAB_00215c30: + plVar28 = local_198; + if (2 < local_1e0._4_4_) goto LAB_00216720; + local_2a0 = CONCAT44(local_1e0._4_4_,(undefined4)local_2a0); + pMStack_298 = local_1d8; + *local_258 = *local_198; + local_258[1] = plVar28[1]; + } + else { + piVar42 = (int *)(lStack_268 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 != 1) goto LAB_00215be4; + cv::Mat::deallocate((Mat *)&local_2a0); + if (local_2a0._4_4_ < 1) goto LAB_002167b8; +LAB_00215c04: + iVar34 = 0; + ppMVar40 = local_260; + do { + *(undefined4 *)ppMVar40 = 0; + iVar34 = iVar34 + 1; + ppMVar40 = (Mat **)((long)ppMVar40 + 4); + } while (iVar34 < local_2a0._4_4_); + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); + if (local_2a0._4_4_ < 3) goto LAB_00215c30; +LAB_00216720: + lStack_268 = 0; + pvStack_278 = (void *)0x0; + local_280 = (void *)0x0; + pvStack_288 = (void *)0x0; + local_290 = (void *)0x0; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_1e0); + } + pvStack_278 = pvStack_1b8; + local_280 = local_1c0; + lStack_268 = lStack_1a8; + local_270 = local_1b0; + pvStack_288 = pvStack_1c8; + local_290 = local_1d0; + if (lStack_1a8 != 0) { + piVar42 = (int *)(lStack_1a8 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = (void *)0x0; + pvStack_1b8 = (void *)0x0; + local_1c0 = (void *)0x0; + pvStack_1c8 = (void *)0x0; + if (0 < local_1e0._4_4_) { + iVar34 = 0; + puVar37 = local_1a0; + do { + *(undefined4 *)puVar37 = 0; + iVar34 = iVar34 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar34 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (uVar18 == 0) { + if (uVar48 == 0) { + local_1d0 = (void *)0x0; + local_1e0 = CONCAT44(local_1e0._4_4_,0x2010000); + local_1d8 = (Mat *)local_c0; + cv::Mat::convertTo((Mat *)&local_2a0,(_OutputArray *)&local_1e0,uVar7,1.0,param_1); + } + else { + if (local_5a8 != uVar7) { + iVar34 = 1 << (ulong)((uint)(0xfa50L >> (uVar7 << 1)) & 3); + local_190 = (long)iVar35 * (long)iVar34; + local_188 = (long)iVar34; + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1c0 = (void *)((long)local_4b0 + local_190 * iVar8); + local_230 = (void *)0x0; + local_240 = CONCAT44(local_240._4_4_,0x2010000); + local_1d8 = (Mat *)CONCAT44(iVar35,iVar8); + local_1d0 = local_4b0; + pvStack_1c8 = local_4b0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1e0 = CONCAT44(2,uVar7 + 0x42ff0000 | 0x4000); + uStack_238 = (Mat *)&local_1e0; + pvStack_1b8 = local_1c0; + cv::Mat::convertTo((Mat *)&local_2a0,(_OutputArray *)&local_240,uVar7,1.0,0.0); + if (lStack_1a8 != 0) { + piVar42 = (int *)(lStack_1a8 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (lStack_268 == 0) { +LAB_002168d4: + if (0 < local_2a0._4_4_) goto LAB_002168f4; +LAB_00216bdc: + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); +LAB_00216920: + plVar28 = local_198; + if (2 < local_1e0._4_4_) goto LAB_00216b84; + local_2a0 = CONCAT44(local_1e0._4_4_,(undefined4)local_2a0); + pMStack_298 = local_1d8; + *local_258 = *local_198; + local_258[1] = plVar28[1]; + } + else { + piVar42 = (int *)(lStack_268 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 != 1) goto LAB_002168d4; + cv::Mat::deallocate((Mat *)&local_2a0); + if (local_2a0._4_4_ < 1) goto LAB_00216bdc; +LAB_002168f4: + iVar34 = 0; + ppMVar40 = local_260; + do { + *(undefined4 *)ppMVar40 = 0; + iVar34 = iVar34 + 1; + ppMVar40 = (Mat **)((long)ppMVar40 + 4); + } while (iVar34 < local_2a0._4_4_); + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); + if (local_2a0._4_4_ < 3) goto LAB_00216920; +LAB_00216b84: + lStack_268 = 0; + pvStack_278 = (void *)0x0; + local_280 = (void *)0x0; + pvStack_288 = (void *)0x0; + local_290 = (void *)0x0; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_1e0); + } + pvStack_278 = pvStack_1b8; + local_280 = local_1c0; + lStack_268 = lStack_1a8; + local_270 = local_1b0; + pvStack_288 = pvStack_1c8; + local_290 = local_1d0; + if (lStack_1a8 != 0) { + piVar42 = (int *)(lStack_1a8 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = (void *)0x0; + pvStack_1b8 = (void *)0x0; + local_1c0 = (void *)0x0; + pvStack_1c8 = (void *)0x0; + if (0 < local_1e0._4_4_) { + iVar34 = 0; + puVar37 = local_1a0; + do { + *(undefined4 *)puVar37 = 0; + iVar34 = iVar34 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar34 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + } + local_488 = 0; + local_498 = 0x1010000; + local_240 = CONCAT44(local_240._4_4_,0x1010000); + local_484 = 0; + local_230 = (void *)0x0; + local_1d0 = (void *)0x0; + local_1e0 = CONCAT44(local_1e0._4_4_,0x2010000); + local_490 = (Mat *)&local_2a0; + uStack_238 = (Mat *)local_c0; + local_1d8 = (Mat *)local_c0; + p_Var39 = (_InputArray *)cv::noArray(); + cv::add((_InputArray *)&local_498,(_InputArray *)&local_240, + (_OutputArray *)&local_1e0,p_Var39,-1); + } + } + else { + if (local_5a8 != uVar7) { + iVar34 = 1 << (ulong)((uint)(0xfa50L >> (uVar7 << 1)) & 3); + local_190 = (long)iVar35 * (long)iVar34; + local_188 = (long)iVar34; + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1c0 = (void *)((long)local_4b0 + local_190 * iVar8); + local_230 = (void *)0x0; + local_240 = CONCAT44(local_240._4_4_,0x2010000); + local_1d8 = (Mat *)CONCAT44(iVar35,iVar8); + local_1d0 = local_4b0; + pvStack_1c8 = local_4b0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1e0 = CONCAT44(2,uVar7 + 0x42ff0000 | 0x4000); + uStack_238 = (Mat *)&local_1e0; + pvStack_1b8 = local_1c0; + cv::Mat::convertTo((Mat *)&local_2a0,(_OutputArray *)&local_240,uVar7,1.0,param_1); + if (lStack_1a8 != 0) { + piVar42 = (int *)(lStack_1a8 + 0x14); + do { + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = *piVar42 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (lStack_268 == 0) { +LAB_00215e24: + if (0 < local_2a0._4_4_) goto LAB_00215e44; +LAB_00216b78: + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); +LAB_00215e70: + plVar28 = local_198; + if (2 < local_1e0._4_4_) goto LAB_00216754; + local_2a0 = CONCAT44(local_1e0._4_4_,(undefined4)local_2a0); + pMStack_298 = local_1d8; + *local_258 = *local_198; + local_258[1] = plVar28[1]; + } + else { + piVar42 = (int *)(lStack_268 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 != 1) goto LAB_00215e24; + cv::Mat::deallocate((Mat *)&local_2a0); + if (local_2a0._4_4_ < 1) goto LAB_00216b78; +LAB_00215e44: + iVar34 = 0; + ppMVar40 = local_260; + do { + *(undefined4 *)ppMVar40 = 0; + iVar34 = iVar34 + 1; + ppMVar40 = (Mat **)((long)ppMVar40 + 4); + } while (iVar34 < local_2a0._4_4_); + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); + if (local_2a0._4_4_ < 3) goto LAB_00215e70; +LAB_00216754: + lStack_268 = 0; + pvStack_278 = (void *)0x0; + local_280 = (void *)0x0; + pvStack_288 = (void *)0x0; + local_290 = (void *)0x0; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_1e0); + } + pvStack_278 = pvStack_1b8; + local_280 = local_1c0; + lStack_268 = lStack_1a8; + local_270 = local_1b0; + pvStack_288 = pvStack_1c8; + local_290 = local_1d0; + if (lStack_1a8 != 0) { + piVar42 = (int *)(lStack_1a8 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = (void *)0x0; + pvStack_1b8 = (void *)0x0; + local_1c0 = (void *)0x0; + pvStack_1c8 = (void *)0x0; + if (0 < local_1e0._4_4_) { + iVar34 = 0; + puVar37 = local_1a0; + do { + *(undefined4 *)puVar37 = 0; + iVar34 = iVar34 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar34 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + } + local_1e0 = (ulong)uVar48 << 0x20; + cv::mixChannels((Mat *)&local_2a0,1,(Mat *)local_c0,1,(int *)&local_1e0,1); + } + if (lStack_28 != 0) { + piVar42 = (int *)(lStack_28 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = (void *)0x0; + pvStack_38 = (void *)0x0; + local_40 = (void *)0x0; + pvStack_48 = (void *)0x0; + if (0 < (int)local_60._4_4_) { + iVar34 = 0; + puVar37 = local_20; + do { + *(undefined4 *)puVar37 = 0; + iVar34 = iVar34 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar34 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (lStack_268 != 0) { + piVar42 = (int *)(lStack_268 + 0x14); + do { + iVar34 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar34 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar34 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = (void *)0x0; + pvStack_278 = (void *)0x0; + local_280 = (void *)0x0; + pvStack_288 = (void *)0x0; + if (0 < local_2a0._4_4_) { + iVar34 = 0; + ppMVar40 = local_260; + do { + *(undefined4 *)ppMVar40 = 0; + iVar34 = iVar34 + 1; + ppMVar40 = (Mat **)((long)ppMVar40 + 4); + } while (iVar34 < local_2a0._4_4_); + } + if (local_258 != &local_250) { + cv::fastFree(local_258); + } + uVar48 = uVar48 + 1; + iVar47 = iVar47 + iVar32; + } while (uVar48 != uVar1); + if (local_88 != 0) { + piVar42 = (int *)(local_88 + 0x14); + do { + iVar35 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar35 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar35 == 1) { + cv::Mat::deallocate((Mat *)local_c0); + } + } + local_88 = 0; + local_c0[4] = 0; + local_c0[5] = 0; + local_c0[10] = 0; + local_c0[0xb] = 0; + local_c0[8] = 0; + local_c0[9] = 0; + local_c0[6] = 0; + local_c0[7] = 0; + if (0 < local_c0[1]) { + iVar35 = 0; + puVar41 = local_80; + do { + *puVar41 = 0; + iVar35 = iVar35 + 1; + puVar41 = puVar41 + 1; + } while (iVar35 < local_c0[1]); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_2c8 != 0) { + piVar42 = (int *)(local_2c8 + 0x14); + do { + iVar35 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar35 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar35 == 1) { + cv::Mat::deallocate((Mat *)&local_300); + } + } + local_2c8 = 0; + local_2f0 = (void *)0x0; + local_2d8 = (void *)0x0; + local_2e0 = (void *)0x0; + local_2e8 = (void *)0x0; + if (0 < local_300._4_4_) { + iVar35 = 0; + puVar41 = local_2c0; + do { + *puVar41 = 0; + iVar35 = iVar35 + 1; + puVar41 = puVar41 + 1; + } while (iVar35 < local_300._4_4_); + } + if (local_2b8 != alStack_2b0) { + cv::fastFree(local_2b8); + } + if (local_e8 != 0) { + piVar42 = (int *)(local_e8 + 0x14); + do { + iVar35 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar35 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar35 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = (void *)0x0; + local_f8 = (void *)0x0; + local_100 = (void *)0x0; + local_108 = (void *)0x0; + if (0 < local_120._4_4_) { + iVar35 = 0; + puVar41 = local_e0; + do { + *puVar41 = 0; + iVar35 = iVar35 + 1; + puVar41 = puVar41 + 1; + } while (iVar35 < local_120._4_4_); + } + if (local_d8 != alStack_d0) { + cv::fastFree(local_d8); + } + if (local_328 != 0) { + piVar42 = (int *)(local_328 + 0x14); + do { + iVar35 = *piVar42; + cVar12 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar13) { + *piVar42 = iVar35 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar35 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + local_328 = 0; + local_350 = (void *)0x0; + local_338 = (void *)0x0; + local_340 = (void *)0x0; + local_348 = (void *)0x0; + if (0 < local_360._4_4_) { + iVar35 = 0; + puVar41 = local_320; + do { + *puVar41 = 0; + iVar35 = iVar35 + 1; + puVar41 = puVar41 + 1; + } while (iVar35 < local_360._4_4_); + } + if (local_318 != alStack_310) { + cv::fastFree(local_318); + } + local_510 = local_510 + 1; + } while (local_510 != iVar43 * iVar11); + } + if (lStack_148 != 0) { + piVar42 = (int *)(lStack_148 + 0x14); + do { + iVar31 = *piVar42; + cVar12 = '\x01'; + bVar29 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar29) { + *piVar42 = iVar31 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar31 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = (void *)0x0; + pvStack_158 = (void *)0x0; + local_160 = (void *)0x0; + pvStack_168 = (void *)0x0; + if (0 < local_180._4_4_) { + iVar31 = 0; + puVar37 = local_140; + do { + *(undefined4 *)puVar37 = 0; + iVar31 = iVar31 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar31 < local_180._4_4_); + } + if (local_138 != local_130) { + cv::fastFree(local_138); + } + if (local_388 != 0) { + piVar42 = (int *)(local_388 + 0x14); + do { + iVar31 = *piVar42; + cVar12 = '\x01'; + bVar29 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar29) { + *piVar42 = iVar31 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar31 == 1) { + cv::Mat::deallocate((Mat *)&local_3c0); + } + } + local_388 = 0; + local_3b0 = 0; + local_398 = 0; + local_3a0 = 0; + local_3a8 = 0; + if (0 < local_3c0._4_4_) { + iVar31 = 0; + puVar37 = local_380; + do { + *(undefined4 *)puVar37 = 0; + iVar31 = iVar31 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar31 < local_3c0._4_4_); + } + if (local_378 != &local_370) { + cv::fastFree(local_378); + } + if (local_3e8 != 0) { + piVar42 = (int *)(local_3e8 + 0x14); + do { + iVar31 = *piVar42; + cVar12 = '\x01'; + bVar29 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar29) { + *piVar42 = iVar31 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar31 == 1) { + cv::Mat::deallocate((Mat *)&local_420); + } + } + local_3e8 = 0; + local_410 = 0; + local_3f8 = 0; + local_400 = 0; + local_408 = 0; + if (0 < local_420._4_4_) { + iVar31 = 0; + puVar37 = local_3e0; + do { + *(undefined4 *)puVar37 = 0; + iVar31 = iVar31 + 1; + puVar37 = (undefined8 *)((long)puVar37 + 4); + } while (iVar31 < local_420._4_4_); + } + if (local_3d8 != &local_3d0) { + cv::fastFree(local_3d8); + } + if (local_448 != 0) { + piVar42 = (int *)(local_448 + 0x14); + do { + iVar31 = *piVar42; + cVar12 = '\x01'; + bVar29 = (bool)ExclusiveMonitorPass(piVar42,0x10); + if (bVar29) { + *piVar42 = iVar31 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar31 == 1) { + cv::Mat::deallocate((Mat *)&local_480); + } + } + local_448 = 0; + local_470 = (void *)0x0; + local_458 = (void *)0x0; + local_460 = (void *)0x0; + local_468 = (void *)0x0; + if (0 < local_480._4_4_) { + iVar31 = 0; + piVar42 = local_440; + do { + *piVar42 = 0; + iVar31 = iVar31 + 1; + piVar42 = piVar42 + 1; + } while (iVar31 < local_480._4_4_); + } + if (local_438 != &local_430) { + cv::fastFree(local_438); + } + if (local_4b0 != (void *)0x0) { + operator_delete(local_4b0); + } + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 00217050 (8548 bytes) name=FUN_00217050 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00217050(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3,uint param_4, + _InputArray *param_5) + +{ + int iVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + bool bVar14; + uint uVar15; + int iVar16; + int iVar17; + uint uVar18; + char *pcVar19; + _InputArray *p_Var20; + undefined8 *puVar21; + int *piVar22; + Mat *pMVar23; + Mat *extraout_x1; + _InputArray **pp_Var24; + Mat *extraout_x1_00; + undefined4 *puVar25; + Mat **ppMVar26; + uint uVar27; + uint uVar28; + double dVar29; + undefined1 auVar30 [16]; + double dVar31; + int local_d00; + int local_cfc; + int local_cf8; + int local_cf4; + undefined8 local_cf0; + undefined8 local_ce8; + undefined4 local_ce0 [2]; + Mat *local_cd8; + undefined4 local_cd0; + undefined4 local_ccc; + undefined4 local_cc8 [2]; + _InputArray *local_cc0; + undefined4 local_cb8; + undefined4 local_cb4; + undefined4 local_cb0 [2]; + Mat *local_ca8; + undefined4 local_ca0; + undefined4 local_c9c; + undefined4 local_c98 [2]; + Mat *local_c90; + undefined4 local_c88; + undefined4 local_c84; + double local_c80; + double local_c78; + double local_c70; + double dStack_c68; + double local_c60; + double local_c58; + double local_c50; + double dStack_c48; + uint local_c40; + int local_c3c; + int local_c38; + int local_c34; + undefined8 local_c30; + undefined8 local_c28; + undefined8 local_c20; + undefined8 local_c18; + undefined8 local_c10; + long local_c08; + int *local_c00; + undefined8 *local_bf8; + undefined8 local_bf0; + undefined8 local_be8; + uint local_be0; + int local_bdc; + int local_bd8; + int local_bd4; + undefined8 local_bd0; + undefined8 local_bc8; + undefined8 local_bc0; + undefined8 local_bb8; + undefined8 local_bb0; + long local_ba8; + int *local_ba0; + undefined8 *local_b98; + undefined8 local_b90; + undefined8 local_b88; + undefined4 local_b80; + int local_b7c; + undefined4 local_b78; + undefined4 local_b74; + undefined8 local_b70; + undefined8 local_b68; + undefined8 local_b60; + undefined8 local_b58; + undefined8 local_b50; + long local_b48; + undefined4 *local_b40; + undefined8 *local_b38; + undefined8 local_b30; + undefined8 local_b28; + uint local_b20; + int local_b1c; + undefined4 local_b18; + undefined4 local_b14; + undefined8 local_b10; + undefined8 local_b08; + undefined8 local_b00; + undefined8 local_af8; + undefined8 local_af0; + long local_ae8; + undefined4 *local_ae0; + undefined8 *local_ad8; + undefined8 local_ad0; + undefined8 local_ac8; + undefined8 uStack_ac0; + undefined8 local_ab8; + undefined8 local_ab0; + undefined8 local_aa8; + undefined8 local_aa0; + undefined8 local_a98; + undefined8 local_a90; + long local_a88; + undefined8 *local_a80; + undefined8 *local_a78; + undefined8 local_a70; + undefined8 local_a68; + undefined8 uStack_a60; + undefined8 local_a58; + undefined8 local_a50; + undefined8 local_a48; + undefined8 local_a40; + undefined8 local_a38; + undefined8 local_a30; + long local_a28; + undefined8 *local_a20; + undefined8 *local_a18; + undefined8 local_a10; + undefined8 local_a08; + undefined8 uStack_a00; + undefined8 local_9f8; + undefined8 local_9f0; + undefined8 local_9e8; + undefined8 local_9e0; + undefined8 local_9d8; + undefined8 local_9d0; + long local_9c8; + undefined8 *local_9c0; + undefined8 *local_9b8; + undefined8 local_9b0; + undefined8 local_9a8; + long *local_9a0 [2]; + Mat aMStack_990 [4]; + int local_98c; + undefined8 local_980; + undefined8 local_978; + undefined8 local_970; + undefined8 local_968; + long local_958; + undefined4 *local_950; + undefined1 *local_948; + undefined1 auStack_940 [16]; + Mat aMStack_930 [4]; + int local_92c; + undefined8 local_920; + undefined8 local_918; + undefined8 local_910; + undefined8 local_908; + long local_8f8; + undefined4 *local_8f0; + undefined1 *local_8e8; + undefined1 auStack_8e0 [16]; + Mat aMStack_8d0 [4]; + int local_8cc; + undefined8 local_8c0; + undefined8 local_8b8; + undefined8 local_8b0; + undefined8 local_8a8; + long local_898; + undefined4 *local_890; + undefined1 *local_888; + undefined1 auStack_880 [64]; + long *local_840 [2]; + Mat aMStack_830 [4]; + int local_82c; + undefined8 local_820; + undefined8 local_818; + undefined8 local_810; + undefined8 local_808; + long local_7f8; + undefined4 *local_7f0; + undefined1 *local_7e8; + undefined1 auStack_7e0 [16]; + Mat aMStack_7d0 [4]; + int local_7cc; + undefined8 local_7c0; + undefined8 local_7b8; + undefined8 local_7b0; + undefined8 local_7a8; + long local_798; + undefined4 *local_790; + undefined1 *local_788; + undefined1 auStack_780 [16]; + Mat aMStack_770 [4]; + int local_76c; + undefined8 local_760; + undefined8 local_758; + undefined8 local_750; + undefined8 local_748; + long local_738; + undefined4 *local_730; + undefined1 *local_728; + undefined1 auStack_720 [64]; + long *local_6e0 [2]; + Mat aMStack_6d0 [4]; + int local_6cc; + undefined8 local_6c0; + undefined8 local_6b8; + undefined8 local_6b0; + undefined8 local_6a8; + long local_698; + undefined4 *local_690; + undefined1 *local_688; + undefined1 auStack_680 [16]; + Mat aMStack_670 [4]; + int local_66c; + undefined8 local_660; + undefined8 local_658; + undefined8 local_650; + undefined8 local_648; + long local_638; + undefined4 *local_630; + undefined1 *local_628; + undefined1 auStack_620 [16]; + Mat aMStack_610 [4]; + int local_60c; + undefined8 local_600; + undefined8 local_5f8; + undefined8 local_5f0; + undefined8 local_5e8; + long local_5d8; + undefined4 *local_5d0; + undefined1 *local_5c8; + undefined1 auStack_5c0 [64]; + undefined4 local_580; + undefined4 uStack_57c; + Mat *local_578; + undefined4 local_570; + int local_56c; + undefined8 local_560; + undefined8 local_558; + undefined8 local_550; + undefined8 local_548; + long local_538; + undefined4 *local_530; + undefined1 *local_528; + undefined1 auStack_520 [16]; + Mat aMStack_510 [4]; + int local_50c; + undefined8 local_500; + undefined8 local_4f8; + undefined8 local_4f0; + undefined8 local_4e8; + long local_4d8; + undefined4 *local_4d0; + undefined1 *local_4c8; + undefined1 auStack_4c0 [16]; + Mat aMStack_4b0 [4]; + int local_4ac; + undefined8 local_4a0; + undefined8 local_498; + undefined8 local_490; + undefined8 local_488; + long local_478; + undefined4 *local_470; + undefined1 *local_468; + undefined1 auStack_460 [64]; + undefined8 local_420; + Mat *pMStack_418; + undefined8 local_410; + undefined8 local_408; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + long local_3e8; + Mat **local_3e0; + undefined4 **local_3d8; + undefined4 *local_3d0; + undefined1 *puStack_3c8; + undefined1 auStack_3c0 [16]; + Mat aMStack_3b0 [4]; + int local_3ac; + undefined8 local_3a0; + undefined8 local_398; + undefined8 local_390; + undefined8 local_388; + long local_378; + undefined4 *local_370; + undefined1 *local_368; + undefined1 auStack_360 [16]; + Mat aMStack_350 [4]; + int local_34c; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + undefined8 local_328; + long local_318; + undefined4 *local_310; + undefined1 *local_308; + undefined1 auStack_300 [64]; + undefined8 local_2c0; + Mat *pMStack_2b8; + undefined8 local_2b0; + undefined8 local_2a8; + undefined8 local_2a0; + undefined8 local_298; + undefined8 local_290; + long local_288; + Mat **local_280; + undefined4 **local_278; + undefined4 *local_270; + undefined1 *puStack_268; + undefined1 auStack_260 [16]; + Mat aMStack_250 [4]; + int local_24c; + undefined8 local_240; + undefined8 local_238; + undefined8 local_230; + undefined8 local_228; + long local_218; + undefined4 *local_210; + undefined1 *local_208; + undefined1 auStack_200 [16]; + Mat aMStack_1f0 [4]; + int local_1ec; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + long local_1b8; + undefined4 *local_1b0; + undefined1 *local_1a8; + undefined1 auStack_1a0 [64]; + undefined8 local_160; + _InputArray *local_158; + undefined8 local_150; + _InputArray *p_Stack_148; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + long local_128; + _InputArray **local_120; + undefined4 **local_118; + undefined4 *local_110; + undefined1 *local_108; + undefined1 auStack_100 [16]; + Mat aMStack_f0 [4]; + int local_ec; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + long local_b8; + undefined4 *local_b0; + undefined1 *local_a8; + undefined1 auStack_a0 [16]; + Mat aMStack_90 [4]; + int local_8c; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + long local_58; + undefined4 *local_50; + undefined1 *local_48; + undefined1 auStack_40 [64]; + + uVar15 = cv::_InputArray::type(param_1,-1); + if (5 < param_4) { + local_160 = (long *)0x0; + local_158 = (_InputArray *)0x0; + pcVar19 = (char *)cv::String::allocate((String *)&local_160,0x37); + cVar2 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890[0x36]; + uVar10 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._52_2_; + uVar9 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._40_8_; + uVar8 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._32_8_; + uVar7 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._24_8_; + uVar6 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._16_8_; + uVar5 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._8_8_; + uVar4 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._0_8_; + *(undefined4 *)(pcVar19 + 0x30) = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._48_4_; + *(undefined2 *)(pcVar19 + 0x34) = uVar10; + pcVar19[0x36] = cVar2; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + *(undefined8 *)(pcVar19 + 0x10) = uVar6; + *(undefined8 *)(pcVar19 + 0x18) = uVar7; + *(undefined8 *)(pcVar19 + 0x20) = uVar8; + *(undefined8 *)(pcVar19 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_160, + "void cv::matchTemplateMask(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x335); + cv::String::deallocate((String *)&local_160); + } + bVar14 = (uVar15 & 7) != 0; + if (((((uVar15 & 7) != 5) && (bVar14)) || + (uVar18 = cv::_InputArray::type(param_2,-1), uVar15 != uVar18)) || + (iVar16 = cv::_InputArray::dims(param_1,-1), 2 < iVar16)) { + local_160 = (long *)0x0; + local_158 = (_InputArray *)0x0; + pcVar19 = (char *)cv::String::allocate((String *)&local_160,0x50); + uVar13 = s__depth____CV_8U____depth____CV_3_0045f8c8._72_8_; + uVar12 = s__depth____CV_8U____depth____CV_3_0045f8c8._64_8_; + uVar11 = s__depth____CV_8U____depth____CV_3_0045f8c8._56_8_; + uVar9 = s__depth____CV_8U____depth____CV_3_0045f8c8._48_8_; + uVar8 = s__depth____CV_8U____depth____CV_3_0045f8c8._40_8_; + uVar7 = s__depth____CV_8U____depth____CV_3_0045f8c8._32_8_; + uVar6 = s__depth____CV_8U____depth____CV_3_0045f8c8._24_8_; + uVar5 = s__depth____CV_8U____depth____CV_3_0045f8c8._16_8_; + uVar4 = s__depth____CV_8U____depth____CV_3_0045f8c8._8_8_; + *(undefined8 *)pcVar19 = s__depth____CV_8U____depth____CV_3_0045f8c8._0_8_; + *(undefined8 *)(pcVar19 + 8) = uVar4; + *(undefined8 *)(pcVar19 + 0x10) = uVar5; + *(undefined8 *)(pcVar19 + 0x18) = uVar6; + *(undefined8 *)(pcVar19 + 0x20) = uVar7; + *(undefined8 *)(pcVar19 + 0x28) = uVar8; + *(undefined8 *)(pcVar19 + 0x30) = uVar9; + *(undefined8 *)(pcVar19 + 0x38) = uVar11; + *(undefined8 *)(pcVar19 + 0x40) = uVar12; + *(undefined8 *)(pcVar19 + 0x48) = uVar13; + cv::error(-0xd7,(String *)&local_160, + "void cv::matchTemplateMask(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x336); + cv::String::deallocate((String *)&local_160); + } + iVar16 = cv::_InputArray::kind(param_1); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_1 + 8); + local_c00 = &local_c38; + local_bf8 = &local_bf0; + local_c40 = *(uint *)pMVar23; + local_c3c = *(int *)(pMVar23 + 4); + local_c38 = *(int *)(pMVar23 + 8); + local_c34 = *(int *)(pMVar23 + 0xc); + local_c30 = *(undefined8 *)(pMVar23 + 0x10); + local_c28 = *(undefined8 *)(pMVar23 + 0x18); + local_c20 = *(undefined8 *)(pMVar23 + 0x20); + local_c18 = *(undefined8 *)(pMVar23 + 0x28); + local_c10 = *(undefined8 *)(pMVar23 + 0x30); + local_c08 = *(long *)(pMVar23 + 0x38); + local_be8 = 0; + local_bf0 = 0; + if (local_c08 != 0) { + piVar22 = (int *)(local_c08 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = *piVar22 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_bf0 = **(undefined8 **)(pMVar23 + 0x48); + local_be8 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_c3c = 0; + cv::Mat::copySize((Mat *)&local_c40,pMVar23); + } + } + else { + cv::_InputArray::getMat_((int)param_1); + } + iVar16 = cv::_InputArray::kind(param_2); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_2 + 8); + local_ba0 = &local_bd8; + local_b98 = &local_b90; + local_be0 = *(uint *)pMVar23; + local_bdc = *(int *)(pMVar23 + 4); + local_bd8 = *(int *)(pMVar23 + 8); + local_bd4 = *(int *)(pMVar23 + 0xc); + local_bd0 = *(undefined8 *)(pMVar23 + 0x10); + local_bc8 = *(undefined8 *)(pMVar23 + 0x18); + local_bc0 = *(undefined8 *)(pMVar23 + 0x20); + local_bb8 = *(undefined8 *)(pMVar23 + 0x28); + local_bb0 = *(undefined8 *)(pMVar23 + 0x30); + local_ba8 = *(long *)(pMVar23 + 0x38); + local_b88 = 0; + local_b90 = 0; + if (local_ba8 != 0) { + piVar22 = (int *)(local_ba8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = *piVar22 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_b90 = **(undefined8 **)(pMVar23 + 0x48); + local_b88 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_bdc = 0; + cv::Mat::copySize((Mat *)&local_be0,pMVar23); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + iVar16 = cv::_InputArray::kind(param_5); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_5 + 8); + local_b40 = &local_b78; + local_b38 = &local_b30; + local_b80 = *(undefined4 *)pMVar23; + local_b7c = *(int *)(pMVar23 + 4); + local_b78 = *(undefined4 *)(pMVar23 + 8); + local_b74 = *(undefined4 *)(pMVar23 + 0xc); + local_b70 = *(undefined8 *)(pMVar23 + 0x10); + local_b68 = *(undefined8 *)(pMVar23 + 0x18); + local_b60 = *(undefined8 *)(pMVar23 + 0x20); + local_b58 = *(undefined8 *)(pMVar23 + 0x28); + local_b50 = *(undefined8 *)(pMVar23 + 0x30); + local_b48 = *(long *)(pMVar23 + 0x38); + local_b28 = 0; + local_b30 = 0; + if (local_b48 != 0) { + piVar22 = (int *)(local_b48 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = *piVar22 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(pMVar23 + 4)) { + local_b7c = 0; + cv::Mat::copySize((Mat *)&local_b80,pMVar23); + goto LAB_002171a0; + } + local_b30 = **(undefined8 **)(pMVar23 + 0x48); + uVar18 = local_be0 & 7; + local_b28 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + if (bVar14) goto LAB_002171b0; +LAB_002181d0: + uVar28 = local_be0; + uVar27 = local_c40; + dVar31 = DAT_002196e8; + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + local_158 = (_InputArray *)&local_c40; + cv::Mat::convertTo((Mat *)&local_c40,(_OutputArray *)&local_160,(uVar15 & 0xff8) + 5, + DAT_002196e8,0.0); + if (uVar18 == 0) { +LAB_00218af0: + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + local_158 = (_InputArray *)&local_be0; + cv::Mat::convertTo((Mat *)&local_be0,(_OutputArray *)&local_160,(uVar28 & 0xff8) + 5,dVar31, + 0.0); + if (bVar14) goto LAB_002171b8; + } + local_158 = (_InputArray *)0x0; + local_160 = (long *)0x0; + p_Stack_148 = (_InputArray *)0x0; + local_150 = (long *)0x0; + local_570 = 0; + local_56c = 0; + local_580 = 0x1010000; + local_420 = (long *)CONCAT44(local_420._4_4_,0xc1020006); + local_410 = 0x400000001; + local_2b0 = 0; + local_2c0 = (double)CONCAT44(local_2c0._4_4_,0x2010000); + local_578 = (Mat *)&local_b80; + pMStack_418 = (Mat *)&local_160; + pMStack_2b8 = (Mat *)&local_b80; + cv::compare((_InputArray *)&local_580,(_InputArray *)&local_420,(_OutputArray *)&local_2c0,5); + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + local_158 = (_InputArray *)&local_b80; + cv::Mat::convertTo((Mat *)&local_b80,(_OutputArray *)&local_160,(uVar27 & 0xff8) + 5,dVar31,0.0) + ; + } + else { + cv::_InputArray::getMat_((int)param_5); +LAB_002171a0: + uVar18 = local_be0 & 7; + if (!bVar14) goto LAB_002181d0; +LAB_002171b0: + dVar31 = DAT_002196e8; + uVar28 = local_be0; + uVar27 = local_c40; + if (uVar18 == 0) goto LAB_00218af0; + } +LAB_002171b8: + iVar16 = (local_c34 - local_bd4) + 1; + iVar1 = (local_c38 - local_bd8) + 1; + local_160 = (long *)CONCAT44(iVar1,iVar16); + cv::_OutputArray::create((_OutputArray *)param_3,(Mat *)&local_160,5,0xffffffff,0,0); + iVar17 = cv::_InputArray::kind(param_3); + if (iVar17 == 0x10000) { + pMVar23 = *(Mat **)(param_3 + 8); + local_ae0 = &local_b18; + local_ad8 = &local_ad0; + local_b20 = *(uint *)pMVar23; + local_b1c = *(int *)(pMVar23 + 4); + local_b18 = *(undefined4 *)(pMVar23 + 8); + local_b14 = *(undefined4 *)(pMVar23 + 0xc); + local_b10 = *(undefined8 *)(pMVar23 + 0x10); + local_b08 = *(undefined8 *)(pMVar23 + 0x18); + local_b00 = *(undefined8 *)(pMVar23 + 0x20); + local_af8 = *(undefined8 *)(pMVar23 + 0x28); + local_af0 = *(undefined8 *)(pMVar23 + 0x30); + local_ae8 = *(long *)(pMVar23 + 0x38); + local_ac8 = 0; + local_ad0 = 0; + if (local_ae8 != 0) { + piVar22 = (int *)(local_ae8 + 0x14); + do { + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = *piVar22 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_ad0 = **(undefined8 **)(pMVar23 + 0x48); + local_ac8 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_b1c = 0; + cv::Mat::copySize((Mat *)&local_b20,pMVar23); + } + } + else { + cv::_InputArray::getMat_((int)param_3); + } + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x1010000); + local_158 = (_InputArray *)&local_c40; + cv::Mat::mul((_InputArray *)&local_c40,1.0); + local_a78 = &local_a70; + local_aa8 = 0; + local_aa0 = 0; + local_a80 = &local_ab8; + uStack_ac0 = DAT_002196f0; + local_a98 = 0; + local_a90 = 0; + local_a88 = 0; + local_ab8 = 0; + local_ab0 = 0; + local_a68 = 0; + local_a70 = 0; + (**(code **)(*local_9a0[0] + 0x18))(local_9a0[0],local_9a0,(Mat *)&uStack_ac0,0xffffffff); + if (local_898 != 0) { + piVar22 = (int *)(local_898 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_8d0); + } + } + local_898 = 0; + local_8c0 = 0; + local_8a8 = 0; + local_8b0 = 0; + local_8b8 = 0; + if (0 < local_8cc) { + iVar17 = 0; + do { + *local_890 = 0; + iVar17 = iVar17 + 1; + local_890 = local_890 + 1; + } while (iVar17 < local_8cc); + } + if (local_888 != auStack_880) { + cv::fastFree(local_888); + } + if (local_8f8 != 0) { + piVar22 = (int *)(local_8f8 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_930); + } + } + local_8f8 = 0; + local_920 = 0; + local_908 = 0; + local_910 = 0; + local_918 = 0; + if (0 < local_92c) { + iVar17 = 0; + do { + *local_8f0 = 0; + iVar17 = iVar17 + 1; + local_8f0 = local_8f0 + 1; + } while (iVar17 < local_92c); + } + if (local_8e8 != auStack_8e0) { + cv::fastFree(local_8e8); + } + if (local_958 != 0) { + piVar22 = (int *)(local_958 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_990); + } + } + local_958 = 0; + local_980 = 0; + local_968 = 0; + local_970 = 0; + local_978 = 0; + if (0 < local_98c) { + iVar17 = 0; + do { + *local_950 = 0; + iVar17 = iVar17 + 1; + local_950 = local_950 + 1; + } while (iVar17 < local_98c); + } + if (local_948 != auStack_940) { + cv::fastFree(local_948); + } + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x1010000); + local_158 = (_InputArray *)&local_b80; + cv::Mat::mul((_InputArray *)&local_b80,1.0); + local_a18 = &local_a10; + local_a48 = 0; + local_a40 = 0; + local_a38 = 0; + local_a30 = 0; + local_a20 = &local_a58; + uStack_a60 = DAT_002196f0; + local_a28 = 0; + local_a50 = 0; + local_a58 = 0; + local_a08 = 0; + local_a10 = 0; + (**(code **)(*local_840[0] + 0x18))(local_840[0],local_840,(Mat *)&uStack_a60,0xffffffff); + if (local_738 != 0) { + piVar22 = (int *)(local_738 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_770); + } + } + local_738 = 0; + local_760 = 0; + local_748 = 0; + local_750 = 0; + local_758 = 0; + if (0 < local_76c) { + iVar17 = 0; + do { + *local_730 = 0; + iVar17 = iVar17 + 1; + local_730 = local_730 + 1; + } while (iVar17 < local_76c); + } + if (local_728 != auStack_720) { + cv::fastFree(local_728); + } + if (local_798 != 0) { + piVar22 = (int *)(local_798 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_7d0); + } + } + local_798 = 0; + local_7c0 = 0; + local_7a8 = 0; + local_7b0 = 0; + local_7b8 = 0; + if (0 < local_7cc) { + iVar17 = 0; + do { + *local_790 = 0; + iVar17 = iVar17 + 1; + local_790 = local_790 + 1; + } while (iVar17 < local_7cc); + } + if (local_788 != auStack_780) { + cv::fastFree(local_788); + } + if (local_7f8 != 0) { + piVar22 = (int *)(local_7f8 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_830); + } + } + local_7f8 = 0; + local_820 = 0; + local_808 = 0; + local_810 = 0; + local_818 = 0; + if (0 < local_82c) { + iVar17 = 0; + do { + *local_7f0 = 0; + iVar17 = iVar17 + 1; + local_7f0 = local_7f0 + 1; + } while (iVar17 < local_82c); + } + if (local_7e8 != auStack_7e0) { + cv::fastFree(local_7e8); + } + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x1010000); + local_158 = (_InputArray *)&local_b80; + cv::Mat::mul((_InputArray *)&local_be0,1.0); + local_9b8 = &local_9b0; + local_9e8 = 0; + local_9e0 = 0; + local_9d8 = 0; + local_9d0 = 0; + local_9c0 = &local_9f8; + uStack_a00 = DAT_002196f0; + local_9c8 = 0; + local_9f0 = 0; + local_9f8 = 0; + local_9a8 = 0; + local_9b0 = 0; + (**(code **)(*local_6e0[0] + 0x18))(local_6e0[0],local_6e0,(Mat *)&uStack_a00,0xffffffff); + if (local_5d8 != 0) { + piVar22 = (int *)(local_5d8 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_610); + } + } + local_5d8 = 0; + local_600 = 0; + local_5e8 = 0; + local_5f0 = 0; + local_5f8 = 0; + if (0 < local_60c) { + iVar17 = 0; + do { + *local_5d0 = 0; + iVar17 = iVar17 + 1; + local_5d0 = local_5d0 + 1; + } while (iVar17 < local_60c); + } + if (local_5c8 != auStack_5c0) { + cv::fastFree(local_5c8); + } + if (local_638 != 0) { + piVar22 = (int *)(local_638 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_670); + } + } + local_638 = 0; + local_660 = 0; + local_648 = 0; + local_650 = 0; + local_658 = 0; + if (0 < local_66c) { + iVar17 = 0; + do { + *local_630 = 0; + iVar17 = iVar17 + 1; + local_630 = local_630 + 1; + } while (iVar17 < local_66c); + } + if (local_628 != auStack_620) { + cv::fastFree(local_628); + } + if (local_698 != 0) { + piVar22 = (int *)(local_698 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_6d0); + } + } + local_698 = 0; + local_6c0 = 0; + local_6a8 = 0; + local_6b0 = 0; + local_6b8 = 0; + if (0 < local_6cc) { + iVar17 = 0; + do { + *local_690 = 0; + iVar17 = iVar17 + 1; + local_690 = local_690 + 1; + } while (iVar17 < local_6cc); + } + if (local_688 != auStack_680) { + cv::fastFree(local_688); + } + pMStack_2b8 = (Mat *)&local_c80; + local_158 = (_InputArray *)&local_c60; + local_c78 = 0.0; + local_c80 = 0.0; + local_c58 = 0.0; + local_c60 = 0.0; + dStack_c68 = 0.0; + local_c70 = 0.0; + local_410 = 0; + dStack_c48 = 0.0; + local_c50 = 0.0; + local_2c0 = (double)CONCAT44(local_2c0._4_4_,0xc2020006); + local_420 = (long *)CONCAT44(local_420._4_4_,0x1010000); + local_2b0._0_4_ = 1; + local_2b0._4_4_ = 4; + local_160 = (long *)CONCAT44(local_160._4_4_,0xc2020006); + local_150 = (long *)0x400000001; + pMStack_418 = (Mat *)&uStack_a00; + p_Var20 = (_InputArray *)cv::noArray(); + cv::meanStdDev((_InputArray *)&local_420,(_OutputArray *)&local_2c0,(_OutputArray *)&local_160, + p_Var20); + dVar31 = (double)local_bd8 * (double)local_bd4 * + (local_c58 * local_c58 + local_c60 * local_c60 + local_c50 * local_c50 + + dStack_c48 * dStack_c48 + + local_c78 * local_c78 + local_c80 * local_c80 + local_c70 * local_c70 + + dStack_c68 * dStack_c68); + if (param_4 == 0) { + local_2b0 = 0; + local_2c0 = (double)CONCAT44(local_2c0._4_4_,0x1010000); + pMStack_2b8 = (Mat *)&uStack_a60; + cv::Mat::mul((_InputArray *)&local_be0,1.0); + local_118 = &local_110; + local_120 = &local_158; + local_160 = DAT_002196f0; + local_158 = (_InputArray *)0x0; + local_150 = (long *)0x0; + p_Stack_148 = (_InputArray *)0x0; + local_140 = 0; + local_138 = 0; + local_130 = 0; + local_128 = 0; + local_108 = (undefined1 *)0x0; + local_110 = (undefined4 *)0x0; + (**(code **)(*(long *)CONCAT44(uStack_57c,local_580) + 0x18)) + ((long *)CONCAT44(uStack_57c,local_580),&local_580,(Mat *)&local_160,0xffffffff); + if (local_478 != 0) { + piVar22 = (int *)(local_478 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_4b0); + } + } + local_478 = 0; + local_4a0 = 0; + local_488 = 0; + local_490 = 0; + local_498 = 0; + if (0 < local_4ac) { + iVar17 = 0; + do { + iVar17 = iVar17 + 1; + *local_470 = 0; + local_470 = local_470 + 1; + } while (iVar17 < local_4ac); + } + if (local_468 != auStack_460) { + cv::fastFree(local_468); + } + if (local_4d8 != 0) { + piVar22 = (int *)(local_4d8 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate(aMStack_510); + } + } + local_4d8 = 0; + local_500 = 0; + local_4e8 = 0; + local_4f0 = 0; + local_4f8 = 0; + if (0 < local_50c) { + iVar17 = 0; + do { + iVar17 = iVar17 + 1; + *local_4d0 = 0; + local_4d0 = local_4d0 + 1; + } while (iVar17 < local_50c); + } + if (local_4c8 != auStack_4c0) { + cv::fastFree(local_4c8); + } + if (local_538 != 0) { + piVar22 = (int *)(local_538 + 0x14); + do { + iVar17 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_570); + } + } + local_538 = 0; + local_560 = 0; + local_548 = 0; + local_550 = 0; + local_558 = 0; + if (0 < local_56c) { + iVar17 = 0; + do { + iVar17 = iVar17 + 1; + *local_530 = 0; + local_530 = local_530 + 1; + } while (iVar17 < local_56c); + } + if (local_528 != auStack_520) { + cv::fastFree(local_528); + } + local_278 = &local_270; + local_2b0 = 0; + local_280 = &pMStack_2b8; + puStack_268 = (undefined1 *)0x0; + local_270 = (undefined4 *)0x0; + local_2a8 = 0; + pMStack_2b8 = _UNK_00219708; + local_2c0 = _DAT_00219700; + local_2a0 = 0; + local_298 = 0; + local_290 = 0; + local_288 = 0; + local_d00 = iVar1; + local_cfc = iVar16; + cv::Mat::create((Mat *)&local_2c0,2,&local_d00,5); + local_580 = *(undefined4 *)((long)local_280 + 4); + local_420 = (long *)0x0; + FUN_00214600(ZEXT816(0),(_InputArray *)&local_c40,(Mat *)&local_160,(Mat *)&local_2c0,&local_580 + ,(uint)local_2c0 & 0xfff,(_InputArray *)&local_420); + local_580 = local_ae0[1]; + local_420 = (long *)0x0; + FUN_00214600(ZEXT816(0),(Mat *)&uStack_ac0,(_InputArray *)&local_b80,(Mat *)&local_b20, + &local_580,local_b20 & 0xfff,(_InputArray *)&local_420); + cv::operator*((cv *)&local_2c0,extraout_x1,2.0); + (**(code **)(*local_420 + 0x38))(local_420,(_InputArray *)&local_420,(Mat *)&local_b20); + if (local_318 != 0) { + piVar22 = (int *)(local_318 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate(aMStack_350); + } + } + local_318 = 0; + local_340 = 0; + local_328 = 0; + local_330 = 0; + local_338 = 0; + if (0 < local_34c) { + iVar16 = 0; + do { + *local_310 = 0; + iVar16 = iVar16 + 1; + local_310 = local_310 + 1; + } while (iVar16 < local_34c); + } + if (local_308 != auStack_300) { + cv::fastFree(local_308); + } + if (local_378 != 0) { + piVar22 = (int *)(local_378 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate(aMStack_3b0); + } + } + local_378 = 0; + local_3a0 = 0; + local_388 = 0; + local_390 = 0; + local_398 = 0; + if (0 < local_3ac) { + iVar16 = 0; + do { + *local_370 = 0; + iVar16 = iVar16 + 1; + local_370 = local_370 + 1; + } while (iVar16 < local_3ac); + } + if (local_368 != auStack_360) { + cv::fastFree(local_368); + } + if (local_3d8 != (undefined4 **)0x0) { + piVar22 = (int *)((long)local_3d8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_410); + } + } + local_3d8 = (undefined4 **)0x0; + local_400 = 0; + local_3e8 = 0; + local_3f0 = 0; + local_3f8 = 0; + if (0 < local_410._4_4_) { + iVar16 = 0; + puVar25 = local_3d0; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_410._4_4_); + } + if (puStack_3c8 != auStack_3c0) { + cv::fastFree(puStack_3c8); + } + local_cd0 = 0; + local_cc8[0] = 0xc1020006; + local_cb8 = 1; + local_ccc = 0; + local_cb4 = 4; + local_ce0[0] = 0x1010000; + local_ca0 = 0; + local_c9c = 0; + local_cb0[0] = 0x2010000; + pMStack_418 = (Mat *)0x0; + local_410 = 0; + local_408 = 0; + local_cd8 = (Mat *)&local_b20; + local_cc0 = (_InputArray *)&local_420; + local_ca8 = (Mat *)&local_b20; + local_420 = (long *)dVar31; + p_Var20 = (_InputArray *)cv::noArray(); + cv::add((_InputArray *)local_ce0,(_InputArray *)local_cc8,(_OutputArray *)local_cb0,p_Var20,-1); + if (local_288 != 0) { + piVar22 = (int *)(local_288 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_2c0); + } + } + local_288 = 0; + local_2b0._0_4_ = 0; + local_2b0._4_4_ = 0; + local_298 = 0; + local_2a0 = 0; + local_2a8 = 0; + if (0 < local_2c0._4_4_) { + iVar16 = 0; + ppMVar26 = local_280; + do { + *(undefined4 *)ppMVar26 = 0; + iVar16 = iVar16 + 1; + ppMVar26 = (Mat **)((long)ppMVar26 + 4); + } while (iVar16 < local_2c0._4_4_); + } + if (local_278 != &local_270) { + cv::fastFree(local_278); + } + if (local_128 != 0) { + piVar22 = (int *)(local_128 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_160); + } + } + local_128 = 0; + local_150 = (long *)0x0; + local_138 = 0; + local_140 = 0; + p_Stack_148 = (_InputArray *)0x0; + if (0 < local_160._4_4_) { + iVar16 = 0; + pp_Var24 = local_120; + do { + *(undefined4 *)pp_Var24 = 0; + iVar16 = iVar16 + 1; + pp_Var24 = (_InputArray **)((long)pp_Var24 + 4); + } while (iVar16 < local_160._4_4_); + } + if (local_118 != &local_110) { + cv::fastFree(local_118); + } + } + else if (param_4 == 3) { + if (dVar31 < DAT_00219710) { + auVar30 = NEON_fmov(0x3ff0000000000000,8); + local_158 = auVar30._8_8_; + local_160 = auVar30._0_8_; + local_150 = local_160; + p_Stack_148 = local_158; + cv::Mat::operator=((Mat *)&local_b20,(Scalar_ *)&local_160); + if (local_9c8 != 0) { + piVar22 = (int *)(local_9c8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&uStack_a00); + } + } + local_9c8 = 0; + local_9f0 = 0; + local_9d8 = 0; + local_9e0 = 0; + local_9e8 = 0; + if (0 < uStack_a00._4_4_) { + iVar16 = 0; + puVar21 = local_9c0; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < uStack_a00._4_4_); + } + if (local_9b8 != &local_9b0) { + cv::fastFree(local_9b8); + } + if (local_a28 != 0) { + piVar22 = (int *)(local_a28 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&uStack_a60); + } + } + local_a28 = 0; + local_a50 = 0; + local_a38 = 0; + local_a40 = 0; + local_a48 = 0; + if (0 < uStack_a60._4_4_) { + iVar16 = 0; + puVar21 = local_a20; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < uStack_a60._4_4_); + } + if (local_a18 != &local_a10) { + cv::fastFree(local_a18); + } + if (local_a88 != 0) { + piVar22 = (int *)(local_a88 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&uStack_ac0); + } + } + local_a88 = 0; + local_ab0 = 0; + local_a98 = 0; + local_aa0 = 0; + local_aa8 = 0; + if (0 < uStack_ac0._4_4_) { + iVar16 = 0; + puVar21 = local_a80; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < uStack_ac0._4_4_); + } + if (local_a78 != &local_a70) { + cv::fastFree(local_a78); + } + if (local_ae8 != 0) { + piVar22 = (int *)(local_ae8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_b20); + } + } + local_ae8 = 0; + local_b10 = 0; + local_af8 = 0; + local_b00 = 0; + local_b08 = 0; + if (0 < local_b1c) { + iVar16 = 0; + puVar25 = local_ae0; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_b1c); + } + if (local_ad8 != &local_ad0) { + cv::fastFree(local_ad8); + } + if (local_b48 != 0) { + piVar22 = (int *)(local_b48 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_b80); + } + } + local_b48 = 0; + local_b70 = 0; + local_b58 = 0; + local_b60 = 0; + local_b68 = 0; + if (0 < local_b7c) { + iVar16 = 0; + puVar25 = local_b40; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_b7c); + } + if (local_b38 != &local_b30) { + cv::fastFree(local_b38); + } + if (local_ba8 != 0) { + piVar22 = (int *)(local_ba8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_be0); + } + } + local_ba8 = 0; + local_bd0 = 0; + local_bb8 = 0; + local_bc0 = 0; + local_bc8 = 0; + if (0 < local_bdc) { + iVar16 = 0; + piVar22 = local_ba0; + do { + *piVar22 = 0; + iVar16 = iVar16 + 1; + piVar22 = piVar22 + 1; + } while (iVar16 < local_bdc); + } + if (local_b98 != &local_b90) { + cv::fastFree(local_b98); + } + if (local_c08 != 0) { + piVar22 = (int *)(local_c08 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_c40); + } + } + if (0 < local_c3c) { + iVar16 = 0; + piVar22 = local_c00; + do { + *piVar22 = 0; + iVar16 = iVar16 + 1; + piVar22 = piVar22 + 1; + } while (iVar16 < local_c3c); + } + goto LAB_00217c74; + } + local_3d8 = &local_3d0; + local_410 = 0; + local_3e0 = &pMStack_418; + puStack_3c8 = (undefined1 *)0x0; + local_3d0 = (undefined4 *)0x0; + local_408 = 0; + pMStack_418 = _UNK_00219708; + local_420 = (long *)_DAT_00219700; + local_400 = 0; + local_3f8 = 0; + local_3f0 = 0; + local_3e8 = 0; + local_cf8 = iVar1; + local_cf4 = iVar16; + cv::Mat::create((Mat *)&local_420,2,&local_cf8,5); + local_2c0._4_4_ = *(int *)local_3e0; + local_2c0._0_4_ = *(undefined4 *)((long)local_3e0 + 4); + local_160 = (long *)0x0; + FUN_00214600(ZEXT816(0),(Mat *)&uStack_ac0,(Mat *)&uStack_a60,(_InputArray *)&local_420, + (Mat *)&local_2c0,(uint)local_420 & 0xfff,(Mat *)&local_160); + local_2c0._4_4_ = *local_ae0; + local_2c0._0_4_ = local_ae0[1]; + local_160 = (long *)0x0; + FUN_00214600(ZEXT816(0),(_InputArray *)&local_c40,(Mat *)&uStack_a00,(Mat *)&local_b20, + (Mat *)&local_2c0,local_b20 & 0xfff,(Mat *)&local_160); + local_2c0 = (double)CONCAT44(local_2c0._4_4_,0x1010000); + local_2b0._0_4_ = 0; + local_2b0._4_4_ = 0; + local_150 = (long *)0x0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + pMStack_2b8 = (Mat *)&local_420; + local_158 = (_InputArray *)&local_420; + cv::sqrt((_InputArray *)&local_2c0,(_OutputArray *)&local_160); + cv::operator/((cv *)&local_420,1.0,extraout_x1_00); + local_570 = 0; + local_56c = 0; + local_580 = 0xc1060000; + local_578 = (Mat *)&local_2c0; + cv::Mat::mul((_InputArray *)&local_b20,1.0); + (**(code **)(*local_160 + 0x18))(local_160,(Mat *)&local_160,(Mat *)&local_b20,0xffffffff); + if (local_58 != 0) { + piVar22 = (int *)(local_58 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate(aMStack_90); + } + } + local_58 = 0; + local_80 = 0; + local_68 = 0; + local_70 = 0; + local_78 = 0; + if (0 < local_8c) { + iVar16 = 0; + do { + *local_50 = 0; + iVar16 = iVar16 + 1; + local_50 = local_50 + 1; + } while (iVar16 < local_8c); + } + if (local_48 != auStack_40) { + cv::fastFree(local_48); + } + if (local_b8 != 0) { + piVar22 = (int *)(local_b8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate(aMStack_f0); + } + } + local_b8 = 0; + local_e0 = 0; + local_c8 = 0; + local_d0 = 0; + local_d8 = 0; + if (0 < local_ec) { + iVar16 = 0; + do { + *local_b0 = 0; + iVar16 = iVar16 + 1; + local_b0 = local_b0 + 1; + } while (iVar16 < local_ec); + } + if (local_a8 != auStack_a0) { + cv::fastFree(local_a8); + } + if (local_118 != (undefined4 **)0x0) { + piVar22 = (int *)((long)local_118 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_150); + } + } + local_118 = (undefined4 **)0x0; + local_140 = 0; + local_128 = 0; + local_130 = 0; + local_138 = 0; + if (0 < local_150._4_4_) { + iVar16 = 0; + puVar25 = local_110; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_150._4_4_); + } + if (local_108 != auStack_100) { + cv::fastFree(local_108); + } + if (local_1b8 != 0) { + piVar22 = (int *)(local_1b8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate(aMStack_1f0); + } + } + local_1b8 = 0; + local_1e0 = 0; + local_1c8 = 0; + local_1d0 = 0; + local_1d8 = 0; + if (0 < local_1ec) { + iVar16 = 0; + do { + *local_1b0 = 0; + iVar16 = iVar16 + 1; + local_1b0 = local_1b0 + 1; + } while (iVar16 < local_1ec); + } + if (local_1a8 != auStack_1a0) { + cv::fastFree(local_1a8); + } + if (local_218 != 0) { + piVar22 = (int *)(local_218 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate(aMStack_250); + } + } + local_218 = 0; + local_240 = 0; + local_228 = 0; + local_230 = 0; + local_238 = 0; + if (0 < local_24c) { + iVar16 = 0; + do { + *local_210 = 0; + iVar16 = iVar16 + 1; + local_210 = local_210 + 1; + } while (iVar16 < local_24c); + } + if (local_208 != auStack_200) { + cv::fastFree(local_208); + } + if (local_278 != (undefined4 **)0x0) { + piVar22 = (int *)((long)local_278 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_2b0); + } + } + local_278 = (undefined4 **)0x0; + local_2a0 = 0; + local_288 = 0; + local_290 = 0; + local_298 = 0; + if (0 < local_2b0._4_4_) { + iVar16 = 0; + puVar25 = local_270; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_2b0._4_4_); + } + if (puStack_268 != auStack_260) { + cv::fastFree(puStack_268); + } + dVar29 = SQRT(dVar31); + if (NAN(dVar29)) { + dVar29 = sqrt(dVar31); + } + local_c88 = 0; + local_c84 = 0; + local_c98[0] = 0x2010000; + local_c90 = (Mat *)&local_b20; + cv::Mat::convertTo((Mat *)&local_b20,(_OutputArray *)local_c98,-1,1.0 / dVar29,0.0); + if (local_3e8 != 0) { + piVar22 = (int *)(local_3e8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_420); + } + } + local_3e8 = 0; + local_410 = 0; + local_3f8 = 0; + local_400 = 0; + local_408 = 0; + if (0 < local_420._4_4_) { + iVar16 = 0; + ppMVar26 = local_3e0; + do { + *(undefined4 *)ppMVar26 = 0; + iVar16 = iVar16 + 1; + ppMVar26 = (Mat **)((long)ppMVar26 + 4); + } while (iVar16 < local_420._4_4_); + } + if (local_3d8 != &local_3d0) { + cv::fastFree(local_3d8); + } + } + else { + local_cf0 = 0; + local_ce8 = 0; + cv::String::allocate((String *)&local_cf0,0); + cv::error(-0xd5,(String *)&local_cf0, + "void cv::matchTemplateMask(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x37e); + cv::String::deallocate((String *)&local_cf0); + } + if (local_9c8 != 0) { + piVar22 = (int *)(local_9c8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&uStack_a00); + } + } + local_9c8 = 0; + local_9f0 = 0; + local_9d8 = 0; + local_9e0 = 0; + local_9e8 = 0; + if (0 < uStack_a00._4_4_) { + iVar16 = 0; + puVar21 = local_9c0; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < uStack_a00._4_4_); + } + if (local_9b8 != &local_9b0) { + cv::fastFree(local_9b8); + } + if (local_a28 != 0) { + piVar22 = (int *)(local_a28 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&uStack_a60); + } + } + local_a28 = 0; + local_a50 = 0; + local_a38 = 0; + local_a40 = 0; + local_a48 = 0; + if (0 < uStack_a60._4_4_) { + iVar16 = 0; + puVar21 = local_a20; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < uStack_a60._4_4_); + } + if (local_a18 != &local_a10) { + cv::fastFree(local_a18); + } + if (local_a88 != 0) { + piVar22 = (int *)(local_a88 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&uStack_ac0); + } + } + local_a88 = 0; + local_ab0 = 0; + local_a98 = 0; + local_aa0 = 0; + local_aa8 = 0; + if (0 < uStack_ac0._4_4_) { + iVar16 = 0; + puVar21 = local_a80; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < uStack_ac0._4_4_); + } + if (local_a78 != &local_a70) { + cv::fastFree(local_a78); + } + if (local_ae8 != 0) { + piVar22 = (int *)(local_ae8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_b20); + } + } + local_ae8 = 0; + local_b10 = 0; + local_af8 = 0; + local_b00 = 0; + local_b08 = 0; + if (0 < local_b1c) { + iVar16 = 0; + puVar25 = local_ae0; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_b1c); + } + if (local_ad8 != &local_ad0) { + cv::fastFree(local_ad8); + } + if (local_b48 != 0) { + piVar22 = (int *)(local_b48 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_b80); + } + } + local_b48 = 0; + local_b70 = 0; + local_b58 = 0; + local_b60 = 0; + local_b68 = 0; + if (0 < local_b7c) { + iVar16 = 0; + puVar25 = local_b40; + do { + *puVar25 = 0; + iVar16 = iVar16 + 1; + puVar25 = puVar25 + 1; + } while (iVar16 < local_b7c); + } + if (local_b38 != &local_b30) { + cv::fastFree(local_b38); + } + if (local_ba8 != 0) { + piVar22 = (int *)(local_ba8 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_be0); + } + } + local_ba8 = 0; + local_bd0 = 0; + local_bb8 = 0; + local_bc0 = 0; + local_bc8 = 0; + if (0 < local_bdc) { + iVar16 = 0; + piVar22 = local_ba0; + do { + *piVar22 = 0; + iVar16 = iVar16 + 1; + piVar22 = piVar22 + 1; + } while (iVar16 < local_bdc); + } + if (local_b98 != &local_b90) { + cv::fastFree(local_b98); + } + if (local_c08 != 0) { + piVar22 = (int *)(local_c08 + 0x14); + do { + iVar16 = *piVar22; + cVar2 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar14) { + *piVar22 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + cv::Mat::deallocate((Mat *)&local_c40); + } + } + if (0 < local_c3c) { + iVar16 = 0; + piVar22 = local_c00; + do { + *piVar22 = 0; + iVar16 = iVar16 + 1; + piVar22 = piVar22 + 1; + } while (iVar16 < local_c3c); + } +LAB_00217c74: + local_c08 = 0; + local_c18 = 0; + local_c20 = 0; + local_c28 = 0; + local_c30 = 0; + if (local_bf8 != &local_bf0) { + cv::fastFree(local_bf8); + } + return; +} + + +================================================================== + +### FUNC 00219720 (5476 bytes) name=matchTemplate + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::matchTemplate(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int, + cv::_InputArray const&) */ + +void cv::matchTemplate(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4, + _InputArray *param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + bool bVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined2 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + bool bVar20; + bool bVar21; + char cVar22; + int iVar23; + int iVar24; + int iVar25; + uint uVar26; + int iVar27; + ulong uVar28; + char *pcVar29; + void *__dest; + _InputArray *p_Var30; + long lVar31; + undefined8 *puVar32; + int *piVar33; + Mat *pMVar34; + long lVar35; + _InputArray *p_Var36; + long lVar37; + float *pfVar38; + long lVar39; + long lVar40; + long lVar41; + long lVar42; + ulong uVar43; + long lVar44; + long lVar45; + long lVar46; + long lVar47; + long lVar48; + double dVar49; + undefined1 auVar50 [16]; + double dVar51; + double dVar52; + double __x; + float fVar53; + double dVar54; + double dVar55; + int local_360; + long local_350; + long local_348; + long local_340; + undefined4 local_2b8 [2]; + Mat *local_2b0; + undefined4 local_2a8; + undefined4 local_2a4; + double local_2a0; + Mat *local_298; + double local_290; + double dStack_288; + double local_280; + double local_278; + double local_270; + double dStack_268; + undefined4 local_260; + undefined4 uStack_25c; + Mat *local_258; + undefined4 local_250; + undefined4 uStack_24c; + double dStack_248; + uint local_240; + int iStack_23c; + int iStack_238; + int iStack_234; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + int *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + uint local_1e0; + int local_1dc; + int local_1d8; + int local_1d4; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + int *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + undefined8 uStack_178; + long local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined8 *local_140; + ulong *local_138; + ulong local_130 [2]; + undefined8 local_120; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined8 *local_e0; + ulong *local_d8; + ulong local_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + undefined4 local_b0; + undefined4 uStack_ac; + Mat *pMStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + long *local_18; + long local_10; + long local_8; + + cVar22 = _InputArray::empty(param_5); + if (cVar22 == '\0') { + FUN_00217050(param_1,param_2,param_3,param_4,param_5); + return; + } + uVar28 = _InputArray::type(param_1,-1); + uVar26 = (uint)uVar28 & 7; + uVar1 = ((uint)((uVar28 & 0xffffffff) >> 3) & 0x1ff) + 1; + if ((uint)param_4 < 6) { + if (uVar26 == 5) goto LAB_0021a4a0; +LAB_002197ec: + if ((uVar28 & 7) == 0) goto LAB_0021a4a0; +LAB_002197f0: + local_60 = 0; + local_58 = 0; + pcVar29 = (char *)String::allocate((String *)&local_60,0x50); + uVar19 = s__depth____CV_8U____depth____CV_3_0045f8c8._72_8_; + uVar18 = s__depth____CV_8U____depth____CV_3_0045f8c8._64_8_; + uVar17 = s__depth____CV_8U____depth____CV_3_0045f8c8._56_8_; + uVar15 = s__depth____CV_8U____depth____CV_3_0045f8c8._48_8_; + uVar14 = s__depth____CV_8U____depth____CV_3_0045f8c8._40_8_; + uVar13 = s__depth____CV_8U____depth____CV_3_0045f8c8._32_8_; + uVar12 = s__depth____CV_8U____depth____CV_3_0045f8c8._24_8_; + uVar11 = s__depth____CV_8U____depth____CV_3_0045f8c8._16_8_; + uVar10 = s__depth____CV_8U____depth____CV_3_0045f8c8._8_8_; + *(undefined8 *)pcVar29 = s__depth____CV_8U____depth____CV_3_0045f8c8._0_8_; + *(undefined8 *)(pcVar29 + 8) = uVar10; + *(undefined8 *)(pcVar29 + 0x10) = uVar11; + *(undefined8 *)(pcVar29 + 0x18) = uVar12; + *(undefined8 *)(pcVar29 + 0x20) = uVar13; + *(undefined8 *)(pcVar29 + 0x28) = uVar14; + *(undefined8 *)(pcVar29 + 0x30) = uVar15; + *(undefined8 *)(pcVar29 + 0x38) = uVar17; + *(undefined8 *)(pcVar29 + 0x40) = uVar18; + *(undefined8 *)(pcVar29 + 0x48) = uVar19; + error(-0xd7,(String *)&local_60, + "void cv::matchTemplate(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x38e); + String::deallocate((String *)&local_60); + } + else { + local_60 = 0; + local_58 = 0; + pcVar29 = (char *)String::allocate((String *)&local_60,0x37); + cVar3 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890[0x36]; + uVar16 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._52_2_; + uVar15 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._40_8_; + uVar14 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._32_8_; + uVar13 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._24_8_; + uVar12 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._16_8_; + uVar11 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._8_8_; + uVar10 = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._0_8_; + *(undefined4 *)(pcVar29 + 0x30) = s_CV_TM_SQDIFF_<__method_&&_method_0045f890._48_4_; + *(undefined2 *)(pcVar29 + 0x34) = uVar16; + pcVar29[0x36] = cVar3; + *(undefined8 *)pcVar29 = uVar10; + *(undefined8 *)(pcVar29 + 8) = uVar11; + *(undefined8 *)(pcVar29 + 0x10) = uVar12; + *(undefined8 *)(pcVar29 + 0x18) = uVar13; + *(undefined8 *)(pcVar29 + 0x20) = uVar14; + *(undefined8 *)(pcVar29 + 0x28) = uVar15; + error(-0xd7,(String *)&local_60, + "void cv::matchTemplate(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x38d); + String::deallocate((String *)&local_60); + if (uVar26 != 5) goto LAB_002197ec; +LAB_0021a4a0: + uVar26 = _InputArray::type(param_2,-1); + if (((uint)uVar28 != uVar26) || (iVar27 = _InputArray::dims(param_1,-1), 2 < iVar27)) + goto LAB_002197f0; + } + iVar25 = (int)param_1; + _InputArray::size(iVar25); + iVar27 = local_180._4_4_; + iVar23 = (int)param_2; + _InputArray::size(iVar23); + if (iVar27 < local_120._4_4_) { +LAB_002198ac: + _InputArray::size(iVar25); + iVar27 = local_180._4_4_; + _InputArray::size(iVar23); + if (local_120._4_4_ < iVar27) { +LAB_002198e8: + local_60 = 0; + local_58 = 0; + __dest = (void *)String::allocate((String *)&local_60,0x56); + memcpy(__dest,&DAT_0045f920,0x56); + error(-0xd7,(String *)&local_60, + "void cv::matchTemplate(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x393); + String::deallocate((String *)&local_60); + } + else { + _InputArray::size(iVar25); + iVar27 = (uint)local_c0; + _InputArray::size(iVar23); + if ((int)(uint)local_60 < iVar27) goto LAB_002198e8; + } + bVar21 = true; + bVar20 = bVar21; + if (1 < param_4 - 2U) goto LAB_0021994c; +LAB_0021a7ac: + cVar22 = '\0'; + iVar27 = 0; + } + else { + _InputArray::size(iVar25); + iVar27 = (uint)local_c0; + _InputArray::size(iVar23); + bVar21 = false; + if (iVar27 < (int)(uint)local_60) goto LAB_002198ac; + bVar20 = false; + if (param_4 - 2U < 2) goto LAB_0021a7ac; +LAB_0021994c: + bVar21 = bVar20; + iVar27 = 2; + if (param_4 - 4U < 2) { + iVar27 = 1; + cVar22 = '\0'; + } + } + bVar20 = param_4 == 5; + iVar24 = _InputArray::kind(param_1); + if (iVar24 == 0x10000) { + pMVar34 = *(Mat **)(param_1 + 8); + local_200 = &iStack_238; + local_1f8 = &local_1f0; + local_240 = *(uint *)pMVar34; + iStack_23c = *(int *)(pMVar34 + 4); + iStack_238 = *(int *)(pMVar34 + 8); + iStack_234 = *(int *)(pMVar34 + 0xc); + local_230 = *(undefined8 *)(pMVar34 + 0x10); + uStack_228 = *(undefined8 *)(pMVar34 + 0x18); + local_220 = *(undefined8 *)(pMVar34 + 0x20); + uStack_218 = *(undefined8 *)(pMVar34 + 0x28); + local_210 = *(undefined8 *)(pMVar34 + 0x30); + lStack_208 = *(long *)(pMVar34 + 0x38); + local_1e8 = 0; + local_1f0 = 0; + if (lStack_208 != 0) { + piVar33 = (int *)(lStack_208 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar4) { + *piVar33 = *piVar33 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_1f0 = **(undefined8 **)(pMVar34 + 0x48); + local_1e8 = (*(undefined8 **)(pMVar34 + 0x48))[1]; + } + else { + iStack_23c = 0; + Mat::copySize((Mat *)&local_240,pMVar34); + } + } + else { + _InputArray::getMat_(iVar25); + } + iVar25 = _InputArray::kind(param_2); + if (iVar25 == 0x10000) { + pMVar34 = *(Mat **)(param_2 + 8); + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1e0 = *(uint *)pMVar34; + local_1dc = *(int *)(pMVar34 + 4); + local_1d8 = *(int *)(pMVar34 + 8); + local_1d4 = *(int *)(pMVar34 + 0xc); + local_1d0 = *(undefined8 *)(pMVar34 + 0x10); + uStack_1c8 = *(undefined8 *)(pMVar34 + 0x18); + local_1c0 = *(undefined8 *)(pMVar34 + 0x20); + uStack_1b8 = *(undefined8 *)(pMVar34 + 0x28); + local_1b0 = *(undefined8 *)(pMVar34 + 0x30); + lStack_1a8 = *(long *)(pMVar34 + 0x38); + local_188 = 0; + local_190 = 0; + if (lStack_1a8 != 0) { + piVar33 = (int *)(lStack_1a8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar4) { + *piVar33 = *piVar33 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_190 = **(undefined8 **)(pMVar34 + 0x48); + local_188 = (*(undefined8 **)(pMVar34 + 0x48))[1]; + } + else { + local_1dc = 0; + Mat::copySize((Mat *)&local_1e0,pMVar34); + } + } + else { + _InputArray::getMat_(iVar23); + } + if (bVar21) { + local_c0 = CONCAT44(iStack_23c,local_240); + uStack_b8 = (Mat *)CONCAT44(iStack_234,iStack_238); + local_78 = &local_70; + local_80 = &uStack_b8; + local_b0 = (undefined4)local_230; + uStack_ac = (undefined4)((ulong)local_230 >> 0x20); + pMStack_a8 = (Mat *)uStack_228; + local_a0 = local_220; + uStack_98 = uStack_218; + local_90 = local_210; + lStack_88 = lStack_208; + uStack_68 = 0; + local_70 = 0; + if (lStack_208 != 0) { + piVar33 = (int *)(lStack_208 + 0x14); + do { + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = *piVar33 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iStack_23c < 3) { + local_70 = *local_1f8; + uStack_68 = local_1f8[1]; + } + else { + local_c0 = (ulong)local_240; + Mat::copySize((Mat *)&local_c0,(Mat *)&local_240); + } + if (lStack_1a8 != 0) { + piVar33 = (int *)(lStack_1a8 + 0x14); + do { + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = *piVar33 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_208 != 0) { + piVar33 = (int *)(lStack_208 + 0x14); + do { + iVar25 = *piVar33; + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar25 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + puVar32 = local_198; + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (iStack_23c < 1) { +LAB_00219ae4: + local_240 = local_1e0; + if (2 < local_1dc) goto LAB_0021a7b8; + iStack_234 = local_1d4; + iStack_238 = local_1d8; + iStack_23c = local_1dc; + *local_1f8 = *local_198; + local_1f8[1] = puVar32[1]; + } + else { + iVar25 = 0; + piVar33 = local_200; + do { + *piVar33 = 0; + iVar25 = iVar25 + 1; + piVar33 = piVar33 + 1; + } while (iVar25 < iStack_23c); + if (iStack_23c < 3) goto LAB_00219ae4; +LAB_0021a7b8: + local_240 = local_1e0; + Mat::copySize((Mat *)&local_240,(Mat *)&local_1e0); + } + uStack_218 = uStack_1b8; + local_220 = local_1c0; + lStack_208 = lStack_1a8; + local_210 = local_1b0; + uStack_228 = uStack_1c8; + local_230 = local_1d0; + if (lStack_88 != 0) { + piVar33 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = *piVar33 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar33 = (int *)(lStack_1a8 + 0x14); + do { + iVar25 = *piVar33; + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar25 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + puVar32 = local_78; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1dc < 1) { +LAB_00219bdc: + local_1e0 = (uint)local_c0; + if (2 < local_c0._4_4_) goto LAB_0021a7c8; + local_1d8 = (int)uStack_b8; + local_1d4 = uStack_b8._4_4_; + local_1dc = local_c0._4_4_; + *local_198 = *local_78; + local_198[1] = puVar32[1]; + } + else { + iVar25 = 0; + piVar33 = local_1a0; + do { + *piVar33 = 0; + iVar25 = iVar25 + 1; + piVar33 = piVar33 + 1; + } while (iVar25 < local_1dc); + if (local_1dc < 3) goto LAB_00219bdc; +LAB_0021a7c8: + local_1e0 = (uint)local_c0; + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_c0); + } + local_1d0 = CONCAT44(uStack_ac,local_b0); + uStack_1b8 = uStack_98; + local_1c0 = local_a0; + lStack_1a8 = lStack_88; + local_1b0 = local_90; + uStack_1c8 = pMStack_a8; + if (lStack_88 != 0) { + piVar33 = (int *)(lStack_88 + 0x14); + do { + iVar25 = *piVar33; + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar25 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_ac = 0; + uStack_98 = 0; + local_a0 = 0; + pMStack_a8 = (Mat *)0x0; + if (0 < local_c0._4_4_) { + iVar25 = 0; + puVar32 = local_80; + do { + *(undefined4 *)puVar32 = 0; + iVar25 = iVar25 + 1; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar25 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + } + local_60 = CONCAT44((iStack_238 - local_1d8) + 1,(iStack_234 - local_1d4) + 1); + _OutputArray::create(param_3,(Mat *)&local_60,5,0xffffffff,0,0); + iVar25 = _InputArray::kind((_InputArray *)param_3); + if (iVar25 == 0x10000) { + pMVar34 = *(Mat **)(param_3 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar26 = *(uint *)pMVar34; + local_50 = *(long *)(pMVar34 + 0x10); + local_60 = *(ulong *)pMVar34; + local_58 = *(undefined8 *)(pMVar34 + 8); + local_48 = *(undefined8 *)(pMVar34 + 0x18); + local_40 = *(undefined8 *)(pMVar34 + 0x20); + local_38 = *(undefined8 *)(pMVar34 + 0x28); + local_30 = *(undefined8 *)(pMVar34 + 0x30); + local_28 = *(long *)(pMVar34 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar33 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = *piVar33 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_10 = **(long **)(pMVar34 + 0x48); + local_8 = (*(long **)(pMVar34 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar26; + Mat::copySize((Mat *)&local_60,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_120 = CONCAT44(*(undefined4 *)local_20,*(undefined4 *)((long)local_20 + 4)); + local_c0 = 0; + FUN_00214600(ZEXT816(0),(Mat *)&local_240,(Mat *)&local_1e0,(Mat *)&local_60,(Mat *)&local_120, + (uint)local_60 & 0xfff,(cv *)&local_c0); + if (param_4 == 2) { +LAB_0021a9c4: + if (local_28 != 0) { + piVar33 = (int *)(local_28 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar27 = 0; + puVar32 = local_20; + do { + *(undefined4 *)puVar32 = 0; + iVar27 = iVar27 + 1; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar27 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (lStack_1a8 != 0) { + piVar33 = (int *)(lStack_1a8 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1dc) { + iVar27 = 0; + piVar33 = local_1a0; + do { + *piVar33 = 0; + iVar27 = iVar27 + 1; + piVar33 = piVar33 + 1; + } while (iVar27 < local_1dc); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (lStack_208 != 0) { + piVar33 = (int *)(lStack_208 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + if (0 < iStack_23c) { + iVar27 = 0; + piVar33 = local_200; + do { + *piVar33 = 0; + iVar27 = iVar27 + 1; + piVar33 = piVar33 + 1; + } while (iVar27 < iStack_23c); + } + } + else { + local_298 = (Mat *)0x0; + local_2a0 = 0.0; + local_d8 = local_d0; + local_278 = 0.0; + local_280 = 0.0; + uStack_118 = _UNK_0021add8; + local_120 = _DAT_0021add0; + local_138 = local_130; + local_d0[1] = 0; + local_d0[0] = 0; + local_140 = &uStack_178; + uStack_178 = _UNK_0021add8; + local_180 = _DAT_0021add0; + local_130[1] = 0; + local_130[0] = 0; + local_110 = 0; + dStack_288 = 0.0; + local_290 = 0.0; + local_108 = 0; + dStack_268 = 0.0; + local_270 = 0.0; + local_e0 = &uStack_118; + local_170 = 0; + local_168 = 0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + local_100 = 0; + local_f8 = 0; + local_f0 = 0; + local_e8 = 0; + __x = 1.0 / ((double)local_1d8 * (double)local_1d4); + if (param_4 == 4) { + p_Var36 = (_InputArray *)0x6; + local_250 = 0; + local_260 = 0x1010000; + uStack_24c = 0; + local_b0 = 0; + uStack_ac = 0; + local_c0._0_4_ = 0x2010000; + local_258 = (Mat *)&local_240; + uStack_b8 = (Mat *)&local_180; + integral((_InputArray *)&local_260,(_OutputArray *)&local_c0,6); + local_b0 = 0; + uStack_ac = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x1010000); + uStack_b8 = (Mat *)&local_1e0; + p_Var30 = (_InputArray *)noArray(); + mean((cv *)&local_c0,p_Var30,p_Var36); + lVar44 = 0; + dVar55 = 0.0; + dVar54 = 0.0; + lVar41 = (long)local_1d8; + uVar28 = -(ulong)(uVar1 * local_1d4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uVar1 * local_1d4) << 3; + local_340 = 0; + local_2a0 = (double)CONCAT44(uStack_25c,local_260); + local_298 = local_258; + local_290 = (double)CONCAT44(uStack_24c,local_250); + dStack_288 = dStack_248; + local_348 = 0; + local_350 = 0; + } + else { + local_c0._0_4_ = 0x2010000; + local_260 = 0x2010000; + local_2a8 = 0; + local_2a4 = 0; + local_2b8[0] = 0x1010000; + local_250 = 0; + uStack_24c = 0; + local_b0 = 0; + uStack_ac = 0; + local_2b0 = (Mat *)&local_240; + local_258 = (Mat *)&local_180; + uStack_b8 = (Mat *)&local_120; + integral((_InputArray *)local_2b8,(_OutputArray *)&local_260,(_OutputArray *)&local_c0,6,-1); + local_2a8 = 0; + local_2a4 = 0; + local_2b8[0] = 0x1010000; + local_260 = 0xc2020006; + local_250 = 1; + uStack_24c = 4; + local_c0 = CONCAT44(local_c0._4_4_,0xc2020006); + local_b0 = 1; + uStack_ac = 4; + local_2b0 = (Mat *)&local_1e0; + local_258 = (Mat *)&local_2a0; + uStack_b8 = (Mat *)&local_280; + p_Var30 = (_InputArray *)noArray(); + meanStdDev((_InputArray *)local_2b8,(_OutputArray *)&local_260,(_OutputArray *)&local_c0, + p_Var30); + dVar51 = local_278 * local_278 + local_280 * local_280 + local_270 * local_270 + + dStack_268 * dStack_268; + if ((dVar51 < DAT_0021ade0) && (bVar20)) { + auVar50 = NEON_fmov(0x3ff0000000000000,8); + uStack_b8 = auVar50._8_8_; + local_c0 = auVar50._0_8_; + local_b0 = auVar50._0_4_; + uStack_ac = auVar50._4_4_; + pMStack_a8 = uStack_b8; + Mat::operator=((Mat *)&local_60,(Scalar_ *)&local_c0); + if (local_e8 != 0) { + piVar33 = (int *)(local_e8 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_f8 = 0; + local_110 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar27 = 0; + puVar32 = local_e0; + do { + iVar27 = iVar27 + 1; + *(undefined4 *)puVar32 = 0; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar27 < local_120._4_4_); + } + if (local_d8 != local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar33 = (int *)(local_148 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar27 = 0; + puVar32 = local_140; + do { + *(undefined4 *)puVar32 = 0; + iVar27 = iVar27 + 1; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar27 < local_180._4_4_); + } + if (local_138 != local_130) { + fastFree(local_138); + } + goto LAB_0021a9c4; + } + dVar55 = dVar51 + local_2a0 * local_2a0 + (double)local_298 * (double)local_298 + + local_290 * local_290 + dStack_288 * dStack_288; + if (iVar27 != 1) { + local_298 = (Mat *)0x0; + local_2a0 = 0.0; + dStack_288 = 0.0; + local_290 = 0.0; + dVar51 = dVar55; + } + dVar54 = SQRT(dVar51); + dVar55 = dVar55 / __x; + if (NAN(dVar54)) { + dVar54 = ::sqrt(dVar51); + } + dVar51 = SQRT(__x); + if (NAN(dVar51)) { + dVar51 = ::sqrt(__x); + } + dVar54 = dVar54 / dVar51; + lVar41 = (long)local_1d8; + local_350 = local_110; + local_340 = local_110 + lVar41 * local_d0[0]; + uVar28 = -(ulong)(uVar1 * local_1d4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uVar1 * local_1d4) << 3; + local_348 = local_110 + uVar28; + lVar44 = local_340 + uVar28; + } + lVar41 = local_170 + lVar41 * local_130[0]; + if (local_170 == 0) { + uVar43 = 0; + } + else { + uVar43 = local_130[0] >> 3; + } + if (local_110 == 0) { + local_360 = 0; + } + else { + local_360 = (int)(local_d0[0] >> 3); + } + if (0 < (int)local_58) { + lVar39 = 0; + uVar43 = -(uVar43 >> 0x1f & 1) & 0xfffffff800000000 | (uVar43 & 0xffffffff) << 3; + lVar2 = (ulong)uVar1 * 8; + lVar40 = 0; + bVar21 = (param_4 & 0xfffffffdU) == 1; + lVar45 = local_170; + iVar25 = (int)local_58; + iVar23 = local_58._4_4_; + do { + if (0 < iVar23) { + lVar46 = lVar44 + lVar39; + lVar48 = local_348 + lVar39; + lVar31 = local_350 + lVar39; + lVar47 = local_340 + lVar39; + iVar25 = 0; + lVar35 = lVar45; + lVar37 = lVar41; + pfVar38 = (float *)(local_50 + lVar40 * *local_18); + do { + dVar49 = 0.0; + dVar51 = (double)*pfVar38; + if (iVar27 == 1) { + lVar42 = 0; + do { + lVar5 = lVar42 * 8; + lVar6 = lVar42 * 8; + lVar7 = lVar42 * 8; + lVar8 = lVar42 * 8; + lVar9 = lVar42 * 8; + lVar42 = lVar42 + 1; + dVar52 = ((*(double *)(lVar35 + lVar6) - *(double *)(lVar35 + uVar28 + lVar5)) - + *(double *)(lVar37 + lVar7)) + *(double *)(lVar37 + uVar28 + lVar8); + dVar49 = dVar49 + dVar52 * dVar52; + dVar51 = dVar51 - dVar52 * *(double *)((Mat *)&local_2a0 + lVar9); + } while ((int)lVar42 < (int)uVar1); + dVar49 = __x * dVar49; + if (cVar22 != '\0' || (bVar20 || bVar21)) goto LAB_0021a084; +LAB_0021a480: + fVar53 = (float)dVar51; + } + else { + if (cVar22 == '\0' && (!bVar20 && !bVar21)) goto LAB_0021a480; +LAB_0021a084: + dVar52 = 0.0; + lVar42 = 0; + do { + lVar5 = lVar42 * 8; + lVar6 = lVar42 * 8; + lVar7 = lVar42 * 8; + lVar8 = lVar42 * 8; + lVar42 = lVar42 + 1; + dVar52 = dVar52 + ((*(double *)(lVar31 + lVar5) - *(double *)(lVar48 + lVar6)) - + *(double *)(lVar47 + lVar7)) + *(double *)(lVar46 + lVar8); + } while ((int)lVar42 < (int)uVar1); + if ((cVar22 != '\0') && (dVar51 = (dVar52 - dVar51 * 2.0) + dVar55, dVar51 < 0.0)) { + dVar51 = 0.0; + } + if (!bVar20 && !bVar21) goto LAB_0021a480; + dVar52 = dVar52 - dVar49; + if (dVar52 < 0.0) { + dVar52 = 0.0; + } + dVar49 = SQRT(dVar52); + if (NAN(dVar49)) { + dVar49 = ::sqrt(dVar52); + } + dVar49 = dVar49 * dVar54; + iVar23 = local_58._4_4_; + if (dVar49 <= ABS(dVar51)) { + if (dVar49 * 1.125 <= ABS(dVar51)) { + fVar53 = (float)(param_4 == 1); + } + else if (dVar51 <= 0.0) { + fVar53 = -1.0; + } + else { + fVar53 = 1.0; + } + } + else { + fVar53 = (float)(dVar51 / dVar49); + } + } + iVar25 = iVar25 + 1; + lVar35 = lVar35 + lVar2; + lVar37 = lVar37 + lVar2; + *pfVar38 = fVar53; + lVar31 = lVar31 + lVar2; + lVar48 = lVar48 + lVar2; + lVar47 = lVar47 + lVar2; + lVar46 = lVar46 + lVar2; + pfVar38 = pfVar38 + 1; + } while (iVar25 < iVar23); + iVar25 = (int)local_58; + } + iVar24 = (int)lVar40; + lVar45 = lVar45 + uVar43; + lVar40 = lVar40 + 1; + lVar41 = lVar41 + uVar43; + lVar39 = lVar39 + (long)local_360 * 8; + } while (iVar24 + 1 < iVar25); + } + if (local_e8 != 0) { + piVar33 = (int *)(local_e8 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_f8 = 0; + local_110 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar27 = 0; + puVar32 = local_e0; + do { + iVar27 = iVar27 + 1; + *(undefined4 *)puVar32 = 0; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar27 < local_120._4_4_); + } + if (local_d8 != local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar33 = (int *)(local_148 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar27 = 0; + puVar32 = local_140; + do { + *(undefined4 *)puVar32 = 0; + iVar27 = iVar27 + 1; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar27 < local_180._4_4_); + } + if (local_138 != local_130) { + fastFree(local_138); + } + if (local_28 != 0) { + piVar33 = (int *)(local_28 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar27 = 0; + puVar32 = local_20; + do { + *(undefined4 *)puVar32 = 0; + iVar27 = iVar27 + 1; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar27 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (lStack_1a8 != 0) { + piVar33 = (int *)(lStack_1a8 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1dc) { + iVar27 = 0; + piVar33 = local_1a0; + do { + *piVar33 = 0; + iVar27 = iVar27 + 1; + piVar33 = piVar33 + 1; + } while (iVar27 < local_1dc); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (lStack_208 != 0) { + piVar33 = (int *)(lStack_208 + 0x14); + do { + iVar27 = *piVar33; + cVar22 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar21) { + *piVar33 = iVar27 + -1; + cVar22 = ExclusiveMonitorsStatus(); + } + } while (cVar22 != '\0'); + if (iVar27 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + if (0 < iStack_23c) { + iVar27 = 0; + piVar33 = local_200; + do { + *piVar33 = 0; + iVar27 = iVar27 + 1; + piVar33 = piVar33 + 1; + } while (iVar27 < iStack_23c); + } + } + lStack_208 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + local_230 = 0; + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + } + return; +} + + +================================================================== + +### FUNC 0021adf0 (812 bytes) name=cvMatchTemplate + +void cvMatchTemplate(cv *param_1,cv *param_2,cv *param_3,int param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + uint uVar4; + void *__dest; + _InputArray *p_Var5; + int iVar6; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + Mat aMStack_120 [4]; + int local_11c; + int local_118; + int local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + uVar4 = local_114 - local_b4 >> 0x1f; + if (((((local_114 - local_b4 ^ uVar4) - uVar4) + 1 != local_20[1]) || + (uVar4 = local_118 - local_b8 >> 0x1f, + ((local_118 - local_b8 ^ uVar4) - uVar4) + 1 != *local_20)) || ((local_60 & 0xfff) != 5)) { + local_138 = 0; + local_130 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_138,0x7e); + memcpy(__dest,&DAT_0045f978,0x7e); + cv::error(-0xd7,(String *)&local_138, + "void cvMatchTemplate(const CvArr*, const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/templmatch.cpp",0x445); + cv::String::deallocate((String *)&local_138); + } + local_128 = 0; + local_168[0] = 0x1010000; + local_150[0] = 0x1010000; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = 0; + local_154 = 0; + local_140 = 0; + local_13c = 0; + local_160 = aMStack_120; + local_148 = aMStack_c0; + local_130 = (Mat *)&local_60; + p_Var5 = (_InputArray *)cv::noArray(); + cv::matchTemplate((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138, + param_4,p_Var5); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + do { + *local_80 = 0; + iVar6 = iVar6 + 1; + local_80 = local_80 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate(aMStack_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar6 = 0; + do { + *local_e0 = 0; + iVar6 = iVar6 + 1; + local_e0 = local_e0 + 1; + } while (iVar6 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 0021b1a8 (312 bytes) name=FUN_0021b1a8 + +void FUN_0021b1a8(ParallelLoopBody *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f59e0; + if (*(long *)(param_1 + 0xa0) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0xa0) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 0x68)); + } + } + *(undefined8 *)(param_1 + 0xa0) = 0; + *(undefined8 *)(param_1 + 0x78) = 0; + *(undefined8 *)(param_1 + 0x90) = 0; + *(undefined8 *)(param_1 + 0x88) = 0; + *(undefined8 *)(param_1 + 0x80) = 0; + if (0 < *(int *)(param_1 + 0x6c)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0xa8); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0x6c)); + } + if (*(ParallelLoopBody **)(param_1 + 0xb0) != param_1 + 0xb8) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0xb0)); + } + if (*(long *)(param_1 + 0x40) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x40) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 8)); + } + } + *(undefined8 *)(param_1 + 0x40) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + if (0 < *(int *)(param_1 + 0xc)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0x48); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0xc)); + } + if (*(ParallelLoopBody **)(param_1 + 0x50) != param_1 + 0x58) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0x50)); + } + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 0021b320 (12624 bytes) name=FUN_0021b320 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0021b320(long param_1,undefined8 *param_2) + +{ + int *piVar1; + size_t __n; + byte *pbVar2; + undefined1 *puVar3; + ulong uVar4; + undefined4 uVar5; + undefined4 uVar6; + Range RVar7; + char cVar8; + bool bVar9; + short sVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined8 uVar15; + undefined8 uVar16; + undefined1 auVar17 [16]; + float fVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + char *pcVar24; + undefined8 *puVar25; + int iVar26; + uint uVar27; + undefined1 (*pauVar28) [16]; + byte *pbVar29; + long lVar30; + undefined8 *puVar31; + int iVar32; + long lVar33; + Range *pRVar34; + ulong uVar35; + long lVar36; + short *psVar37; + int iVar38; + long lVar39; + float *pfVar40; + unkbyte9 *pVar41; + int iVar42; + String *this; + ulong uVar43; + uint uVar44; + uint uVar45; + uint __c; + short sVar47; + float fVar48; + int iVar50; + short sVar75; + int iVar76; + short sVar78; + int iVar79; + short sVar81; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + short sVar74; + short sVar77; + short sVar80; + short sVar83; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + undefined1 auVar64 [16]; + float fVar49; + undefined1 auVar65 [16]; + undefined1 auVar66 [16]; + undefined1 auVar67 [16]; + undefined1 auVar68 [16]; + undefined1 auVar69 [16]; + int iVar82; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + undefined1 auVar72 [16]; + undefined1 auVar73 [16]; + undefined1 uVar84; + undefined1 uVar85; + byte bVar86; + byte bVar87; + byte bVar88; + byte bVar89; + undefined1 uVar90; + byte bVar91; + byte bVar92; + byte bVar93; + byte bVar94; + byte bVar95; + byte bVar96; + byte bVar97; + byte bVar98; + byte bVar99; + byte bVar100; + undefined1 uVar101; + byte bVar102; + undefined1 uVar103; + undefined1 uVar104; + undefined1 uVar105; + undefined1 uVar106; + undefined1 uVar107; + undefined1 uVar108; + undefined1 uVar109; + undefined2 uVar110; + undefined2 uVar111; + undefined4 local_210; + undefined4 local_20c; + undefined4 local_208; + undefined4 local_204; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + uint local_1c0; + int local_1bc; + undefined1 (*local_1b0) [16]; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + long local_188; + int *local_180; + ulong *local_178; + ulong local_170 [2]; + uint local_160; + int local_15c; + undefined8 *local_150; + undefined8 local_148; + undefined8 local_140; + undefined8 local_138; + long local_128; + undefined4 *local_120; + ulong *local_118; + ulong local_110 [2]; + undefined8 local_100; + undefined1 auStack_f8 [8]; + undefined1 local_f0 [8]; + undefined1 auStack_e8 [8]; + undefined1 local_e0 [8]; + undefined1 auStack_d8 [8]; + undefined1 local_d0 [8]; + undefined1 auStack_c8 [8]; + undefined1 local_c0 [8]; + undefined1 auStack_b8 [8]; + undefined1 local_b0 [8]; + undefined1 auStack_a8 [8]; + undefined1 local_a0 [8]; + undefined1 auStack_98 [8]; + undefined1 local_90 [8]; + undefined1 auStack_88 [8]; + undefined1 local_80 [8]; + undefined1 auStack_78 [8]; + undefined1 local_70 [8]; + undefined1 auStack_68 [8]; + undefined1 local_60 [8]; + undefined1 auStack_58 [8]; + undefined1 local_50 [8]; + undefined1 auStack_48 [8]; + undefined1 local_40 [8]; + undefined1 auStack_38 [8]; + undefined1 local_30 [8]; + undefined1 auStack_28 [8]; + undefined1 local_20 [8]; + undefined1 auStack_18 [8]; + undefined1 local_10 [8]; + undefined1 auStack_8 [8]; + uint uVar46; + + local_160 = 0x80000000; + local_15c = 0x7fffffff; + uVar5 = *(undefined4 *)param_2; + uVar6 = *(undefined4 *)((long)param_2 + 4); + local_100 = *param_2; + cv::Mat::Mat((Mat *)&local_1c0,(Mat *)(param_1 + 8),(Range *)&local_100,(Range *)&local_160); + local_210 = 0x80000000; + local_20c = 0x7fffffff; + local_208 = uVar5; + local_204 = uVar6; + cv::Mat::Mat((Mat *)&local_160,(Mat *)(param_1 + 0x68),(Range *)&local_208,(Range *)&local_210); + if ((local_1c0 & 7) != 0) { + if ((local_1c0 & 7) != 3) { + if ((local_1c0 & 7) != 5) goto LAB_0021b3d4; + fVar18 = (float)*(double *)(param_1 + 200); + uVar90 = (undefined1)((uint)fVar18 >> 0x18); + local_170[0] = local_170[0] >> 2; + iVar26 = *local_180; + local_110[0] = local_110[0] >> 2; + fVar49 = (float)*(double *)(param_1 + 0xd0); + iVar42 = local_180[1] + (local_1c0 >> 3 & 0x1ff) * local_180[1]; + uVar101 = (undefined1)((uint)fVar18 >> 0x10); + bVar86 = SUB41(fVar49,0); + bVar87 = (byte)((uint)fVar49 >> 8); + uVar111 = (undefined2)((uint)fVar49 >> 0x10); + bVar88 = (byte)((uint)fVar49 >> 0x10); + bVar89 = (byte)((uint)fVar49 >> 0x18); + uVar110 = SUB42(fVar49,0); + if (((local_1c0 >> 0xe & 1) == 0) || ((local_160 >> 0xe & 1) == 0)) { + switch(*(undefined4 *)(param_1 + 0xd8)) { + case 0: + if (iVar26 < 1) goto LAB_0021b3d4; + break; + case 1: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021dd00; + case 2: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021db10; + case 3: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021df00; + case 4: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021d930; + default: + goto switchD_0021e37c_default; + } + } + else { + iVar42 = iVar42 * iVar26; + switch(*(undefined4 *)(param_1 + 0xd8)) { + case 0: + iVar26 = 1; + break; + case 1: + iVar26 = 1; +LAB_0021dd00: + iVar32 = 0; + do { + if (iVar42 + -3 < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + iVar38 = iVar38 + 4; + iVar50 = -(uint)(*(float *)*pauVar28 <= fVar18); + iVar76 = -(uint)(*(float *)(*pauVar28 + 4) <= fVar18); + iVar79 = -(uint)(*(float *)(*pauVar28 + 8) <= fVar18); + iVar82 = -(uint)(*(float *)(*pauVar28 + 0xc) <= fVar18); + auVar70._0_8_ = + CONCAT17((byte)((uint)iVar76 >> 0x18) & bVar89, + CONCAT16((byte)((uint)iVar76 >> 0x10) & bVar88, + CONCAT15((byte)((uint)iVar76 >> 8) & bVar87, + CONCAT14((byte)iVar76 & bVar86, + CONCAT13((byte)((uint)iVar50 >> 0x18) & + bVar89,CONCAT12((byte)((uint) + iVar50 >> 0x10) & bVar88, + CONCAT11((byte)((uint)iVar50 >> 8) & bVar87, + (byte)iVar50 & bVar86))))))); + auVar70[8] = (byte)iVar79 & bVar86; + auVar70[9] = (byte)((uint)iVar79 >> 8) & bVar87; + auVar70[10] = (byte)((uint)iVar79 >> 0x10) & bVar88; + auVar70[0xb] = (byte)((uint)iVar79 >> 0x18) & bVar89; + auVar70[0xc] = (byte)iVar82 & bVar86; + auVar70[0xd] = (byte)((uint)iVar82 >> 8) & bVar87; + auVar70[0xe] = (byte)((uint)iVar82 >> 0x10) & bVar88; + auVar70[0xf] = (byte)((uint)iVar82 >> 0x18) & bVar89; + puVar25[1] = auVar70._8_8_; + *puVar25 = auVar70._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while (iVar38 < iVar42 + -3); + } + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 4; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 9)) { + lVar33 = 0; + do { + fVar48 = fVar49; + if (fVar18 < *(float *)(puVar3 + lVar33)) { + fVar48 = 0.0; + } + *(float *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = fVar48; + lVar33 = lVar33 + 4; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 4); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 2) & 3) & 3; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + iVar50 = iVar38; + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 4; + fVar48 = fVar49; + if (fVar18 < *(float *)(*local_1b0 + lVar33)) { + fVar48 = 0.0; + } + iVar50 = iVar38 + 1; + *(float *)((long)local_150 + lVar33) = fVar48; + if (uVar46 != 1) { + fVar48 = fVar49; + if (fVar18 < *(float *)(*local_1b0 + lVar33 + 4)) { + fVar48 = 0.0; + } + iVar50 = iVar38 + 2; + *(float *)((long)local_150 + lVar33 + 4) = fVar48; + if (uVar46 == 3) { + fVar48 = fVar49; + if (fVar18 < *(float *)(*local_1b0 + lVar33 + 8)) { + fVar48 = 0.0; + } + iVar50 = iVar38 + 3; + *(float *)((long)local_150 + lVar33 + 8) = fVar48; + } + } + } + uVar44 = 0; + uVar45 = ((uVar27 - uVar46) - 4 >> 2) + 1; + iVar38 = uVar45 * 4; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 4); + pfVar40 = (float *)(*local_1b0 + (ulong)uVar46 * 4 + lVar36); + do { + uVar44 = uVar44 + 1; + auVar71._0_4_ = -(uint)(*pfVar40 <= fVar18); + auVar71._4_4_ = -(uint)(pfVar40[1] <= fVar18); + auVar71._8_4_ = -(uint)(pfVar40[2] <= fVar18); + auVar71._12_4_ = -(uint)(pfVar40[3] <= fVar18); + auVar22._4_2_ = uVar110; + auVar22._0_4_ = fVar49; + auVar22._6_2_ = uVar111; + auVar22._8_2_ = uVar110; + auVar22._10_2_ = uVar111; + auVar22._12_2_ = uVar110; + auVar22._14_2_ = uVar111; + auVar67 = ZEXT816(0) ^ (ZEXT816(0) ^ auVar22) & auVar71; + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pfVar40 = pfVar40 + 4; + } while (uVar44 < uVar45); + uVar45 = iVar50 + iVar38; + if (uVar27 - uVar46 != iVar38) { + uVar43 = -(ulong)(uVar45 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar45 << 2; + fVar48 = fVar49; + if (fVar18 < *(float *)(*local_1b0 + uVar43)) { + fVar48 = 0.0; + } + *(float *)((long)local_150 + uVar43) = fVar48; + if ((int)(uVar45 + 1) < iVar42) { + fVar48 = fVar49; + if (fVar18 < *(float *)(*local_1b0 + uVar43 + 4)) { + fVar48 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 4) = fVar48; + if ((int)(uVar45 + 2) < iVar42) { + fVar48 = fVar49; + if (fVar18 < *(float *)(*local_1b0 + uVar43 + 8)) { + fVar48 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 8) = fVar48; + } + } + } + } + } + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 4); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 4); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + case 2: + iVar26 = 1; +LAB_0021db10: + uVar84 = SUB41(fVar18,0); + uVar85 = (undefined1)((uint)fVar18 >> 8); + iVar32 = 0; + do { + if (iVar42 + -3 < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + iVar38 = iVar38 + 4; + auVar11[4] = uVar84; + auVar11._0_4_ = fVar18; + auVar11[5] = uVar85; + auVar11[6] = uVar101; + auVar11[7] = uVar90; + auVar11[8] = uVar84; + auVar11[9] = uVar85; + auVar11[10] = uVar101; + auVar11[0xb] = uVar90; + auVar11[0xc] = uVar84; + auVar11[0xd] = uVar85; + auVar11[0xe] = uVar101; + auVar11[0xf] = uVar90; + auVar67 = NEON_fmin(*pauVar28,auVar11,4); + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while (iVar38 < iVar42 + -3); + } + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 4; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 9)) { + lVar33 = 0; + do { + fVar49 = fVar18; + if (*(float *)(puVar3 + lVar33) <= fVar18) { + fVar49 = *(float *)(puVar3 + lVar33); + } + *(float *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = fVar49; + lVar33 = lVar33 + 4; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 4); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 2) & 3) & 3; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + iVar50 = iVar38; + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 4; + fVar49 = fVar18; + if (*(float *)(*local_1b0 + lVar33) <= fVar18) { + fVar49 = *(float *)(*local_1b0 + lVar33); + } + iVar50 = iVar38 + 1; + *(float *)((long)local_150 + lVar33) = fVar49; + if (uVar46 != 1) { + fVar49 = fVar18; + if (*(float *)(*local_1b0 + lVar33 + 4) <= fVar18) { + fVar49 = *(float *)(*local_1b0 + lVar33 + 4); + } + iVar50 = iVar38 + 2; + *(float *)((long)local_150 + lVar33 + 4) = fVar49; + if (uVar46 == 3) { + fVar49 = fVar18; + if (*(float *)(*local_1b0 + lVar33 + 8) <= fVar18) { + fVar49 = *(float *)(*local_1b0 + lVar33 + 8); + } + iVar50 = iVar38 + 3; + *(float *)((long)local_150 + lVar33 + 8) = fVar49; + } + } + } + uVar45 = ((uVar27 - uVar46) - 4 >> 2) + 1; + uVar44 = 0; + iVar38 = uVar45 * 4; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 4); + pVar41 = (unkbyte9 *)(*local_1b0 + (ulong)uVar46 * 4 + lVar36); + do { + uVar15 = *(undefined8 *)((long)pVar41 + 8); + uVar103 = (undefined1)((ulong)uVar15 >> 8); + uVar104 = (undefined1)((ulong)uVar15 >> 0x10); + uVar105 = (undefined1)((ulong)uVar15 >> 0x18); + uVar106 = (undefined1)((ulong)uVar15 >> 0x20); + uVar107 = (undefined1)((ulong)uVar15 >> 0x28); + uVar108 = (undefined1)((ulong)uVar15 >> 0x30); + uVar109 = (undefined1)((ulong)uVar15 >> 0x38); + uVar44 = uVar44 + 1; + auVar68._0_4_ = -(uint)(fVar18 < (float)*(undefined8 *)pVar41); + auVar68._4_4_ = -(uint)(fVar18 < (float)((ulong)*(undefined8 *)pVar41 >> 0x20)); + auVar68._8_4_ = -(uint)(fVar18 < (float)uVar15); + auVar68._12_4_ = -(uint)(fVar18 < (float)((ulong)uVar15 >> 0x20)); + auVar12[4] = uVar84; + auVar12._0_4_ = fVar18; + auVar12[5] = uVar85; + auVar12[6] = uVar101; + auVar12[7] = uVar90; + auVar12[8] = uVar84; + auVar12[9] = uVar85; + auVar12[10] = uVar101; + auVar12[0xb] = uVar90; + auVar12[0xc] = uVar84; + auVar12[0xd] = uVar85; + auVar12[0xe] = uVar101; + auVar12[0xf] = uVar90; + auVar21[9] = uVar103; + auVar21._0_9_ = *pVar41; + auVar21[10] = uVar104; + auVar21[0xb] = uVar105; + auVar21[0xc] = uVar106; + auVar21[0xd] = uVar107; + auVar21[0xe] = uVar108; + auVar21[0xf] = uVar109; + auVar69[9] = uVar103; + auVar69._0_9_ = *pVar41; + auVar69[10] = uVar104; + auVar69[0xb] = uVar105; + auVar69[0xc] = uVar106; + auVar69[0xd] = uVar107; + auVar69[0xe] = uVar108; + auVar69[0xf] = uVar109; + auVar69 = auVar69 ^ (auVar21 ^ auVar12) & auVar68; + puVar25[1] = auVar69._8_8_; + *puVar25 = auVar69._0_8_; + puVar25 = puVar25 + 2; + pVar41 = pVar41 + 1; + } while (uVar44 < uVar45); + uVar45 = iVar50 + iVar38; + if (uVar27 - uVar46 != iVar38) { + uVar43 = -(ulong)(uVar45 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar45 << 2; + fVar49 = fVar18; + if (*(float *)(*local_1b0 + uVar43) <= fVar18) { + fVar49 = *(float *)(*local_1b0 + uVar43); + } + *(float *)((long)local_150 + uVar43) = fVar49; + if ((int)(uVar45 + 1) < iVar42) { + fVar49 = fVar18; + if (*(float *)(*local_1b0 + uVar43 + 4) <= fVar18) { + fVar49 = *(float *)(*local_1b0 + uVar43 + 4); + } + *(float *)((long)local_150 + uVar43 + 4) = fVar49; + if ((int)(uVar45 + 2) < iVar42) { + fVar49 = fVar18; + if (*(float *)(*local_1b0 + uVar43 + 8) <= fVar18) { + fVar49 = *(float *)(*local_1b0 + uVar43 + 8); + } + *(float *)((long)local_150 + uVar43 + 8) = fVar49; + } + } + } + } + } + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 4); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 4); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + case 3: + iVar26 = 1; +LAB_0021df00: + iVar32 = 0; + do { + if (iVar42 + -3 < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + auVar67 = *pauVar28; + iVar38 = iVar38 + 4; + iVar50 = -(uint)(fVar18 < auVar67._0_4_); + iVar76 = -(uint)(fVar18 < auVar67._4_4_); + iVar79 = -(uint)(fVar18 < auVar67._8_4_); + iVar82 = -(uint)(fVar18 < auVar67._12_4_); + auVar72._0_8_ = + CONCAT17(auVar67[7] & (byte)((uint)iVar76 >> 0x18), + CONCAT16(auVar67[6] & (byte)((uint)iVar76 >> 0x10), + CONCAT15(auVar67[5] & (byte)((uint)iVar76 >> 8), + CONCAT14(auVar67[4] & (byte)iVar76, + CONCAT13(auVar67[3] & + (byte)((uint)iVar50 >> 0x18), + CONCAT12(auVar67[2] & + (byte)((uint)iVar50 >> + 0x10), + CONCAT11(auVar67[1] & + (byte)((uint) + iVar50 >> 8),auVar67[0] & (byte)iVar50))))))); + auVar72[8] = auVar67[8] & (byte)iVar79; + auVar72[9] = auVar67[9] & (byte)((uint)iVar79 >> 8); + auVar72[10] = auVar67[10] & (byte)((uint)iVar79 >> 0x10); + auVar72[0xb] = auVar67[0xb] & (byte)((uint)iVar79 >> 0x18); + auVar72[0xc] = auVar67[0xc] & (byte)iVar82; + auVar72[0xd] = auVar67[0xd] & (byte)((uint)iVar82 >> 8); + auVar72[0xe] = auVar67[0xe] & (byte)((uint)iVar82 >> 0x10); + auVar72[0xf] = auVar67[0xf] & (byte)((uint)iVar82 >> 0x18); + puVar25[1] = auVar72._8_8_; + *puVar25 = auVar72._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while (iVar38 < iVar42 + -3); + } + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 4; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 9)) { + lVar33 = 0; + do { + fVar49 = *(float *)(puVar3 + lVar33); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + *(float *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = fVar49; + lVar33 = lVar33 + 4; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 4); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 2) & 3) & 3; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + iVar50 = iVar38; + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 4; + fVar49 = *(float *)(*local_1b0 + lVar33); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + iVar50 = iVar38 + 1; + *(float *)((long)local_150 + lVar33) = fVar49; + if (uVar46 != 1) { + fVar49 = *(float *)(*local_1b0 + lVar33 + 4); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + iVar50 = iVar38 + 2; + *(float *)((long)local_150 + lVar33 + 4) = fVar49; + if (uVar46 == 3) { + fVar49 = *(float *)(*local_1b0 + lVar33 + 8); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + iVar50 = iVar38 + 3; + *(float *)((long)local_150 + lVar33 + 8) = fVar49; + } + } + } + uVar44 = 0; + uVar45 = ((uVar27 - uVar46) - 4 >> 2) + 1; + iVar38 = uVar45 * 4; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 4); + pVar41 = (unkbyte9 *)(*local_1b0 + (ulong)uVar46 * 4 + lVar36); + do { + uVar15 = *(undefined8 *)((long)pVar41 + 8); + uVar44 = uVar44 + 1; + auVar73._0_4_ = -(uint)(fVar18 < (float)*(undefined8 *)pVar41); + auVar73._4_4_ = -(uint)(fVar18 < (float)((ulong)*(undefined8 *)pVar41 >> 0x20)); + auVar73._8_4_ = -(uint)(fVar18 < (float)uVar15); + auVar73._12_4_ = -(uint)(fVar18 < (float)((ulong)uVar15 >> 0x20)); + auVar20[9] = (char)((ulong)uVar15 >> 8); + auVar20._0_9_ = *pVar41; + auVar20[10] = (char)((ulong)uVar15 >> 0x10); + auVar20[0xb] = (char)((ulong)uVar15 >> 0x18); + auVar20[0xc] = (char)((ulong)uVar15 >> 0x20); + auVar20[0xd] = (char)((ulong)uVar15 >> 0x28); + auVar20[0xe] = (char)((ulong)uVar15 >> 0x30); + auVar20[0xf] = (char)((ulong)uVar15 >> 0x38); + auVar67 = ZEXT216(0) ^ (ZEXT216(0) ^ auVar20) & auVar73; + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pVar41 = pVar41 + 1; + } while (uVar44 < uVar45); + uVar45 = iVar50 + iVar38; + if (uVar27 - uVar46 != iVar38) { + uVar43 = -(ulong)(uVar45 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar45 << 2; + fVar49 = *(float *)(*local_1b0 + uVar43); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + *(float *)((long)local_150 + uVar43) = fVar49; + if ((int)(uVar45 + 1) < iVar42) { + fVar49 = *(float *)(*local_1b0 + uVar43 + 4); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 4) = fVar49; + if ((int)(uVar45 + 2) < iVar42) { + fVar49 = *(float *)(*local_1b0 + uVar43 + 8); + if (fVar49 <= fVar18) { + fVar49 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 8) = fVar49; + } + } + } + } + } + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 4); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 4); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + case 4: + iVar26 = 1; +LAB_0021d930: + iVar32 = 0; + do { + if (iVar42 + -3 < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + auVar67 = *pauVar28; + iVar38 = iVar38 + 4; + iVar50 = -(uint)(auVar67._0_4_ <= fVar18); + iVar76 = -(uint)(auVar67._4_4_ <= fVar18); + iVar79 = -(uint)(auVar67._8_4_ <= fVar18); + iVar82 = -(uint)(auVar67._12_4_ <= fVar18); + auVar65._0_8_ = + CONCAT17(auVar67[7] & (byte)((uint)iVar76 >> 0x18), + CONCAT16(auVar67[6] & (byte)((uint)iVar76 >> 0x10), + CONCAT15(auVar67[5] & (byte)((uint)iVar76 >> 8), + CONCAT14(auVar67[4] & (byte)iVar76, + CONCAT13(auVar67[3] & + (byte)((uint)iVar50 >> 0x18), + CONCAT12(auVar67[2] & + (byte)((uint)iVar50 >> + 0x10), + CONCAT11(auVar67[1] & + (byte)((uint) + iVar50 >> 8),auVar67[0] & (byte)iVar50))))))); + auVar65[8] = auVar67[8] & (byte)iVar79; + auVar65[9] = auVar67[9] & (byte)((uint)iVar79 >> 8); + auVar65[10] = auVar67[10] & (byte)((uint)iVar79 >> 0x10); + auVar65[0xb] = auVar67[0xb] & (byte)((uint)iVar79 >> 0x18); + auVar65[0xc] = auVar67[0xc] & (byte)iVar82; + auVar65[0xd] = auVar67[0xd] & (byte)((uint)iVar82 >> 8); + auVar65[0xe] = auVar67[0xe] & (byte)((uint)iVar82 >> 0x10); + auVar65[0xf] = auVar67[0xf] & (byte)((uint)iVar82 >> 0x18); + puVar25[1] = auVar65._8_8_; + *puVar25 = auVar65._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while (iVar38 < iVar42 + -3); + } + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 4; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 9)) { + lVar33 = 0; + do { + fVar49 = *(float *)(puVar3 + lVar33); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + *(float *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = fVar49; + lVar33 = lVar33 + 4; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 4); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 2) & 3) & 3; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + iVar50 = iVar38; + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 4; + fVar49 = *(float *)(*local_1b0 + lVar33); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + iVar50 = iVar38 + 1; + *(float *)((long)local_150 + lVar33) = fVar49; + if (uVar46 != 1) { + fVar49 = *(float *)(*local_1b0 + lVar33 + 4); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + iVar50 = iVar38 + 2; + *(float *)((long)local_150 + lVar33 + 4) = fVar49; + if (uVar46 == 3) { + fVar49 = *(float *)(*local_1b0 + lVar33 + 8); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + iVar50 = iVar38 + 3; + *(float *)((long)local_150 + lVar33 + 8) = fVar49; + } + } + } + uVar44 = 0; + uVar45 = ((uVar27 - uVar46) - 4 >> 2) + 1; + iVar38 = uVar45 * 4; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 4); + pVar41 = (unkbyte9 *)(*local_1b0 + (ulong)uVar46 * 4 + lVar36); + do { + uVar15 = *(undefined8 *)((long)pVar41 + 8); + uVar44 = uVar44 + 1; + auVar66._0_4_ = -(uint)((float)*(undefined8 *)pVar41 <= fVar18); + auVar66._4_4_ = -(uint)((float)((ulong)*(undefined8 *)pVar41 >> 0x20) <= fVar18); + auVar66._8_4_ = -(uint)((float)uVar15 <= fVar18); + auVar66._12_4_ = -(uint)((float)((ulong)uVar15 >> 0x20) <= fVar18); + auVar19[9] = (char)((ulong)uVar15 >> 8); + auVar19._0_9_ = *pVar41; + auVar19[10] = (char)((ulong)uVar15 >> 0x10); + auVar19[0xb] = (char)((ulong)uVar15 >> 0x18); + auVar19[0xc] = (char)((ulong)uVar15 >> 0x20); + auVar19[0xd] = (char)((ulong)uVar15 >> 0x28); + auVar19[0xe] = (char)((ulong)uVar15 >> 0x30); + auVar19[0xf] = (char)((ulong)uVar15 >> 0x38); + auVar67 = ZEXT216(0) ^ (ZEXT216(0) ^ auVar19) & auVar66; + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pVar41 = pVar41 + 1; + } while (uVar44 < uVar45); + uVar45 = iVar50 + iVar38; + if (uVar27 - uVar46 != iVar38) { + uVar43 = -(ulong)(uVar45 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar45 << 2; + fVar49 = *(float *)(*local_1b0 + uVar43); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + *(float *)((long)local_150 + uVar43) = fVar49; + if ((int)(uVar45 + 1) < iVar42) { + fVar49 = *(float *)(*local_1b0 + uVar43 + 4); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 4) = fVar49; + if ((int)(uVar45 + 2) < iVar42) { + fVar49 = *(float *)(*local_1b0 + uVar43 + 8); + if (fVar18 < fVar49) { + fVar49 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 8) = fVar49; + } + } + } + } + } + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 4); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 4); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + default: +switchD_0021e37c_default: + this = (String *)&local_1d0; + local_1d0 = 0; + local_1c8 = 0; + cv::String::allocate(this,0); + cv::error(-5,this,"void cv::thresh_32f(const cv::Mat&, cv::Mat&, float, float, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x387); + goto LAB_0021c788; + } + } + iVar32 = 0; + do { + if (iVar42 + -3 < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + iVar38 = iVar38 + 4; + iVar50 = -(uint)(fVar18 < *(float *)*pauVar28); + iVar76 = -(uint)(fVar18 < *(float *)(*pauVar28 + 4)); + iVar79 = -(uint)(fVar18 < *(float *)(*pauVar28 + 8)); + iVar82 = -(uint)(fVar18 < *(float *)(*pauVar28 + 0xc)); + auVar63._0_8_ = + CONCAT17((byte)((uint)iVar76 >> 0x18) & bVar89, + CONCAT16((byte)((uint)iVar76 >> 0x10) & bVar88, + CONCAT15((byte)((uint)iVar76 >> 8) & bVar87, + CONCAT14((byte)iVar76 & bVar86, + CONCAT13((byte)((uint)iVar50 >> 0x18) & bVar89, + CONCAT12((byte)((uint)iVar50 >> 0x10) + & bVar88,CONCAT11((byte)(( + uint)iVar50 >> 8) & bVar87,(byte)iVar50 & bVar86)) + ))))); + auVar63[8] = (byte)iVar79 & bVar86; + auVar63[9] = (byte)((uint)iVar79 >> 8) & bVar87; + auVar63[10] = (byte)((uint)iVar79 >> 0x10) & bVar88; + auVar63[0xb] = (byte)((uint)iVar79 >> 0x18) & bVar89; + auVar63[0xc] = (byte)iVar82 & bVar86; + auVar63[0xd] = (byte)((uint)iVar82 >> 8) & bVar87; + auVar63[0xe] = (byte)((uint)iVar82 >> 0x10) & bVar88; + auVar63[0xf] = (byte)((uint)iVar82 >> 0x18) & bVar89; + puVar25[1] = auVar63._8_8_; + *puVar25 = auVar63._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while (iVar38 < iVar42 + -3); + } + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 4; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 9)) { + lVar33 = 0; + do { + fVar48 = fVar49; + if (*(float *)(puVar3 + lVar33) <= fVar18) { + fVar48 = 0.0; + } + *(float *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = fVar48; + lVar33 = lVar33 + 4; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 4); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 2) & 3) & 3; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + iVar50 = iVar38; + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 4; + fVar48 = fVar49; + if (*(float *)(*local_1b0 + lVar33) <= fVar18) { + fVar48 = 0.0; + } + iVar50 = iVar38 + 1; + *(float *)((long)local_150 + lVar33) = fVar48; + if (uVar46 != 1) { + fVar48 = fVar49; + if (*(float *)(*local_1b0 + lVar33 + 4) <= fVar18) { + fVar48 = 0.0; + } + iVar50 = iVar38 + 2; + *(float *)((long)local_150 + lVar33 + 4) = fVar48; + if (uVar46 == 3) { + fVar48 = fVar49; + if (*(float *)(*local_1b0 + lVar33 + 8) <= fVar18) { + fVar48 = 0.0; + } + iVar50 = iVar38 + 3; + *(float *)((long)local_150 + lVar33 + 8) = fVar48; + } + } + } + uVar44 = 0; + uVar45 = ((uVar27 - uVar46) - 4 >> 2) + 1; + iVar38 = uVar45 * 4; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 4); + pfVar40 = (float *)(*local_1b0 + (ulong)uVar46 * 4 + lVar36); + do { + uVar44 = uVar44 + 1; + auVar64._0_4_ = -(uint)(fVar18 < *pfVar40); + auVar64._4_4_ = -(uint)(fVar18 < pfVar40[1]); + auVar64._8_4_ = -(uint)(fVar18 < pfVar40[2]); + auVar64._12_4_ = -(uint)(fVar18 < pfVar40[3]); + auVar23._4_2_ = uVar110; + auVar23._0_4_ = fVar49; + auVar23._6_2_ = uVar111; + auVar23._8_2_ = uVar110; + auVar23._10_2_ = uVar111; + auVar23._12_2_ = uVar110; + auVar23._14_2_ = uVar111; + auVar67 = ZEXT816(0) ^ (ZEXT816(0) ^ auVar23) & auVar64; + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pfVar40 = pfVar40 + 4; + } while (uVar44 < uVar45); + uVar45 = iVar50 + iVar38; + if (uVar27 - uVar46 != iVar38) { + uVar43 = -(ulong)(uVar45 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar45 << 2; + fVar48 = fVar49; + if (*(float *)(*local_1b0 + uVar43) <= fVar18) { + fVar48 = 0.0; + } + *(float *)((long)local_150 + uVar43) = fVar48; + if ((int)(uVar45 + 1) < iVar42) { + fVar48 = fVar49; + if (*(float *)(*local_1b0 + uVar43 + 4) <= fVar18) { + fVar48 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 4) = fVar48; + if ((int)(uVar45 + 2) < iVar42) { + fVar48 = fVar49; + if (*(float *)(*local_1b0 + uVar43 + 8) <= fVar18) { + fVar48 = 0.0; + } + *(float *)((long)local_150 + uVar43 + 8) = fVar48; + } + } + } + } + } + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 4); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 4); + } while (iVar32 < iVar26); + goto LAB_0021b3d4; + } + iVar32 = (int)*(double *)(param_1 + 200); + iVar38 = (int)*(double *)(param_1 + 0xd0); + local_170[0] = local_170[0] >> 1; + iVar26 = *local_180; + sVar10 = (short)iVar32; + iVar42 = local_180[1] + (local_1c0 >> 3 & 0x1ff) * local_180[1]; + uVar110 = (undefined2)iVar38; + local_110[0] = local_110[0] >> 1; + uVar101 = (undefined1)iVar32; + uVar90 = (undefined1)((uint)iVar32 >> 8); + bVar87 = (byte)iVar38; + bVar86 = (byte)((uint)iVar38 >> 8); + if (((local_1c0 >> 0xe & 1) == 0) || ((local_160 >> 0xe & 1) == 0)) { + switch(*(undefined4 *)(param_1 + 0xd8)) { + case 0: + if (iVar26 < 1) goto LAB_0021b3d4; + break; + case 1: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021d450; + case 2: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021d148; + case 3: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021ce70; + case 4: + if (iVar26 < 1) goto LAB_0021b3d4; + goto LAB_0021cb98; + default: + goto switchD_0021c884_default; + } + } + else { + iVar42 = iVar42 * iVar26; + local_170[0] = (ulong)iVar42; + local_110[0] = local_170[0]; + switch(*(undefined4 *)(param_1 + 0xd8)) { + case 0: + iVar26 = 1; + break; + case 1: + iVar26 = 1; +LAB_0021d450: + iVar32 = 0; + uVar6 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + uVar5 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + do { + if (iVar42 + -7 < 1) { + uVar43 = 0; + } + else { + uVar43 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + uVar27 = (int)uVar43 + 8; + uVar43 = (ulong)uVar27; + sVar47 = -(ushort)(sVar10 < *(short *)*pauVar28); + sVar74 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 2)); + sVar75 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 4)); + sVar77 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 6)); + sVar78 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 8)); + sVar80 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 10)); + sVar81 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 0xc)); + sVar83 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 0xe)); + auVar61._0_8_ = + CONCAT17(bVar86 & ~(byte)((ushort)sVar77 >> 8), + CONCAT16(bVar87 & ~(byte)sVar77, + CONCAT15(bVar86 & ~(byte)((ushort)sVar75 >> 8), + CONCAT14(bVar87 & ~(byte)sVar75, + CONCAT13(bVar86 & ~(byte)((ushort)sVar74 >> 8 + ), + CONCAT12(bVar87 & ~(byte)sVar74, + CONCAT11(bVar86 & ~(byte)(( + ushort)sVar47 >> 8),bVar87 & ~(byte)sVar47))))))); + auVar61[8] = bVar87 & ~(byte)sVar78; + auVar61[9] = bVar86 & ~(byte)((ushort)sVar78 >> 8); + auVar61[10] = bVar87 & ~(byte)sVar80; + auVar61[0xb] = bVar86 & ~(byte)((ushort)sVar80 >> 8); + auVar61[0xc] = bVar87 & ~(byte)sVar81; + auVar61[0xd] = bVar86 & ~(byte)((ushort)sVar81 >> 8); + auVar61[0xe] = bVar87 & ~(byte)sVar83; + auVar61[0xf] = bVar86 & ~(byte)((ushort)sVar83 >> 8); + puVar25[1] = auVar61._8_8_; + *puVar25 = auVar61._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while ((int)uVar27 < iVar42 + -7); + } + iVar38 = (int)uVar43; + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 2; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 0xd)) { + lVar33 = 0; + do { + uVar111 = uVar110; + if (sVar10 < *(short *)(puVar3 + lVar33)) { + uVar111 = 0; + } + *(undefined2 *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = uVar111; + lVar33 = lVar33 + 2; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 2); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 1) & 7) & 7; + if (uVar27 < uVar45) { + uVar45 = uVar27; + } + if (uVar45 != 0) { + lVar33 = (long)iVar38 * 2; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33) = uVar111; + if (uVar45 == 1) { + uVar43 = (ulong)(iVar38 + 1); + } + else { + uVar46 = iVar38 + 2; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33 + 2)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 2) = uVar111; + if (uVar45 != 2) { + uVar46 = iVar38 + 3; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33 + 4)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 4) = uVar111; + if (uVar45 != 3) { + uVar46 = iVar38 + 4; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33 + 6)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 6) = uVar111; + if (uVar45 != 4) { + uVar46 = iVar38 + 5; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33 + 8)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 8) = uVar111; + if (uVar45 != 5) { + uVar46 = iVar38 + 6; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33 + 10)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 10) = uVar111; + if (uVar45 == 7) { + uVar43 = (ulong)(iVar38 + 7); + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + lVar33 + 0xc)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 0xc) = uVar111; + goto LAB_0021d5e0; + } + } + } + } + } + uVar43 = (ulong)uVar46; + } + } +LAB_0021d5e0: + uVar46 = ((uVar27 - uVar45) - 8 >> 3) + 1; + iVar38 = uVar46 * 8; + if (6 < (uVar27 - 1) - uVar45) { + uVar44 = 0; + psVar37 = (short *)(*local_1b0 + (ulong)uVar45 * 2 + lVar36); + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar45 * 2); + do { + uVar44 = uVar44 + 1; + sVar47 = -(ushort)(psVar37[1] <= (short)((uint)uVar5 >> 0x10)); + sVar74 = -(ushort)(psVar37[2] <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar5)) >> 0x20)); + sVar75 = -(ushort)(psVar37[5] <= (short)((uint)uVar6 >> 0x10)); + sVar77 = -(ushort)(psVar37[6] <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar6)) >> 0x20)); + auVar62._0_8_ = + CONCAT17((byte)((ushort)-(ushort)(psVar37[3] <= sVar10) >> 8) & bVar86, + CONCAT16((byte)-(ushort)(psVar37[3] <= sVar10) & bVar87, + CONCAT15((byte)((ushort)sVar74 >> 8) & bVar86, + CONCAT14((byte)sVar74 & bVar87, + CONCAT13((byte)((ushort)sVar47 >> 8) & + bVar86,CONCAT12((byte)sVar47 & + bVar87,CONCAT11( + (byte)((ushort)-(ushort)(*psVar37 <= sVar10) >> 8) + & bVar86,(byte)-(ushort)(*psVar37 <= sVar10) & + bVar87))))))); + auVar62[8] = (byte)-(ushort)(psVar37[4] <= sVar10) & bVar87; + auVar62[9] = (byte)((ushort)-(ushort)(psVar37[4] <= sVar10) >> 8) & bVar86; + auVar62[10] = (byte)sVar75 & bVar87; + auVar62[0xb] = (byte)((ushort)sVar75 >> 8) & bVar86; + auVar62[0xc] = (byte)sVar77 & bVar87; + auVar62[0xd] = (byte)((ushort)sVar77 >> 8) & bVar86; + auVar62[0xe] = (byte)-(ushort)(psVar37[7] <= sVar10) & bVar87; + auVar62[0xf] = (byte)((ushort)-(ushort)(psVar37[7] <= sVar10) >> 8) & bVar86; + puVar25[1] = auVar62._8_8_; + *puVar25 = auVar62._0_8_; + psVar37 = psVar37 + 8; + puVar25 = puVar25 + 2; + } while (uVar44 < uVar46); + uVar43 = (ulong)(uint)((int)uVar43 + iVar38); + if (iVar38 == uVar27 - uVar45) goto LAB_0021d710; + } + uVar35 = -(uVar43 >> 0x1f) & 0xfffffffe00000000 | uVar43 << 1; + iVar38 = (int)uVar43; + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35) = uVar111; + if (iVar38 + 1 < iVar42) { + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35 + 2)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 2) = uVar111; + if (iVar38 + 2 < iVar42) { + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35 + 4)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 4) = uVar111; + if (iVar38 + 3 < iVar42) { + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35 + 6)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 6) = uVar111; + if (iVar38 + 4 < iVar42) { + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35 + 8)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 8) = uVar111; + if (iVar38 + 5 < iVar42) { + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35 + 10)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 10) = uVar111; + if (iVar38 + 6 < iVar42) { + uVar111 = uVar110; + if (sVar10 < *(short *)(*local_1b0 + uVar35 + 0xc)) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 0xc) = uVar111; + } + } + } + } + } + } + } + } +LAB_0021d710: + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 2); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 2); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + case 2: + iVar26 = 1; +LAB_0021d148: + iVar32 = 0; + do { + if (iVar42 + -7 < 1) { + uVar43 = 0; + } + else { + uVar43 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + uVar27 = (int)uVar43 + 8; + uVar43 = (ulong)uVar27; + auVar13[2] = uVar101; + auVar13._0_2_ = sVar10; + auVar13[3] = uVar90; + auVar13[4] = uVar101; + auVar13[5] = uVar90; + auVar13[6] = uVar101; + auVar13[7] = uVar90; + auVar13[8] = uVar101; + auVar13[9] = uVar90; + auVar13[10] = uVar101; + auVar13[0xb] = uVar90; + auVar13[0xc] = uVar101; + auVar13[0xd] = uVar90; + auVar13[0xe] = uVar101; + auVar13[0xf] = uVar90; + auVar67 = NEON_smin(*pauVar28,auVar13,2); + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while ((int)uVar27 < iVar42 + -7); + } + iVar38 = (int)uVar43; + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 2; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 0xd)) { + lVar33 = 0; + do { + sVar47 = *(short *)(puVar3 + lVar33); + if (sVar10 < *(short *)(puVar3 + lVar33)) { + sVar47 = sVar10; + } + *(short *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = sVar47; + lVar33 = lVar33 + 2; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 2); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 1) & 7) & 7; + if (uVar27 < uVar45) { + uVar45 = uVar27; + } + if (uVar45 != 0) { + lVar33 = (long)iVar38 * 2; + sVar47 = *(short *)(*local_1b0 + lVar33); + if (sVar10 < *(short *)(*local_1b0 + lVar33)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar33) = sVar47; + if (uVar45 == 1) { + uVar43 = (ulong)(iVar38 + 1); + } + else { + lVar39 = lVar33 + 2; + uVar46 = iVar38 + 2; + sVar47 = *(short *)(*local_1b0 + lVar39); + if (sVar10 < *(short *)(*local_1b0 + lVar39)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar39) = sVar47; + if (uVar45 != 2) { + lVar39 = lVar33 + 4; + uVar46 = iVar38 + 3; + sVar47 = *(short *)(*local_1b0 + lVar39); + if (sVar10 < *(short *)(*local_1b0 + lVar39)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar39) = sVar47; + if (uVar45 != 3) { + lVar39 = lVar33 + 6; + uVar46 = iVar38 + 4; + sVar47 = *(short *)(*local_1b0 + lVar39); + if (sVar10 < *(short *)(*local_1b0 + lVar39)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar39) = sVar47; + if (uVar45 != 4) { + lVar39 = lVar33 + 8; + uVar46 = iVar38 + 5; + sVar47 = *(short *)(*local_1b0 + lVar39); + if (sVar10 < *(short *)(*local_1b0 + lVar39)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar39) = sVar47; + if (uVar45 != 5) { + lVar39 = lVar33 + 10; + uVar46 = iVar38 + 6; + sVar47 = *(short *)(*local_1b0 + lVar39); + if (sVar10 < *(short *)(*local_1b0 + lVar39)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar39) = sVar47; + if (uVar45 == 7) { + lVar33 = lVar33 + 0xc; + uVar43 = (ulong)(iVar38 + 7); + sVar47 = *(short *)(*local_1b0 + lVar33); + if (sVar10 < *(short *)(*local_1b0 + lVar33)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar33) = sVar47; + goto LAB_0021d2e8; + } + } + } + } + } + uVar43 = (ulong)uVar46; + } + } +LAB_0021d2e8: + uVar46 = ((uVar27 - uVar45) - 8 >> 3) + 1; + iVar38 = uVar46 * 8; + if (6 < (uVar27 - 1) - uVar45) { + uVar44 = 0; + pauVar28 = (undefined1 (*) [16])(*local_1b0 + (ulong)uVar45 * 2 + lVar36); + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar45 * 2); + do { + uVar44 = uVar44 + 1; + auVar17[2] = uVar101; + auVar17._0_2_ = sVar10; + auVar17[3] = uVar90; + auVar17[4] = uVar101; + auVar17[5] = uVar90; + auVar17[6] = uVar101; + auVar17[7] = uVar90; + auVar17[8] = uVar101; + auVar17[9] = uVar90; + auVar17[10] = uVar101; + auVar17[0xb] = uVar90; + auVar17[0xc] = uVar101; + auVar17[0xd] = uVar90; + auVar17[0xe] = uVar101; + auVar17[0xf] = uVar90; + auVar67 = NEON_smin(auVar17,*pauVar28,2); + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + pauVar28 = pauVar28 + 1; + puVar25 = puVar25 + 2; + } while (uVar44 < uVar46); + uVar43 = (ulong)(uint)((int)uVar43 + iVar38); + if (uVar27 - uVar45 == iVar38) goto LAB_0021d430; + } + uVar35 = -(uVar43 >> 0x1f) & 0xfffffffe00000000 | uVar43 << 1; + iVar38 = (int)uVar43; + sVar47 = *(short *)(*local_1b0 + uVar35); + if (sVar10 < *(short *)(*local_1b0 + uVar35)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + uVar35) = sVar47; + if (iVar38 + 1 < iVar42) { + lVar36 = uVar35 + 2; + sVar47 = *(short *)(*local_1b0 + lVar36); + if (sVar10 < *(short *)(*local_1b0 + lVar36)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar36) = sVar47; + if (iVar38 + 2 < iVar42) { + lVar36 = uVar35 + 4; + sVar47 = *(short *)(*local_1b0 + lVar36); + if (sVar10 < *(short *)(*local_1b0 + lVar36)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar36) = sVar47; + if (iVar38 + 3 < iVar42) { + lVar36 = uVar35 + 6; + sVar47 = *(short *)(*local_1b0 + lVar36); + if (sVar10 < *(short *)(*local_1b0 + lVar36)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar36) = sVar47; + if (iVar38 + 4 < iVar42) { + lVar36 = uVar35 + 8; + sVar47 = *(short *)(*local_1b0 + lVar36); + if (sVar10 < *(short *)(*local_1b0 + lVar36)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar36) = sVar47; + if (iVar38 + 5 < iVar42) { + lVar36 = uVar35 + 10; + sVar47 = *(short *)(*local_1b0 + lVar36); + if (sVar10 < *(short *)(*local_1b0 + lVar36)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar36) = sVar47; + if (iVar38 + 6 < iVar42) { + lVar36 = uVar35 + 0xc; + sVar47 = *(short *)(*local_1b0 + lVar36); + if (sVar10 < *(short *)(*local_1b0 + lVar36)) { + sVar47 = sVar10; + } + *(short *)((long)local_150 + lVar36) = sVar47; + } + } + } + } + } + } + } + } +LAB_0021d430: + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 2); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 2); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + case 3: + iVar26 = 1; +LAB_0021ce70: + iVar32 = 0; + uVar6 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + uVar5 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + do { + if (iVar42 + -7 < 1) { + uVar43 = 0; + } + else { + uVar43 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + uVar16 = *(undefined8 *)(*pauVar28 + 8); + uVar15 = *(undefined8 *)*pauVar28; + uVar27 = (int)uVar43 + 8; + uVar43 = (ulong)uVar27; + sVar47 = -(ushort)(sVar10 < (short)uVar15); + sVar74 = -(ushort)(sVar10 < (short)((ulong)uVar15 >> 0x10)); + sVar75 = -(ushort)(sVar10 < (short)((ulong)uVar15 >> 0x20)); + sVar77 = -(ushort)(sVar10 < (short)((ulong)uVar15 >> 0x30)); + sVar78 = -(ushort)(sVar10 < (short)uVar16); + sVar80 = -(ushort)(sVar10 < (short)((ulong)uVar16 >> 0x10)); + sVar81 = -(ushort)(sVar10 < (short)((ulong)uVar16 >> 0x20)); + sVar83 = -(ushort)(sVar10 < (short)((ulong)uVar16 >> 0x30)); + auVar59._0_8_ = + CONCAT17((byte)((ushort)sVar77 >> 8) & (byte)((ulong)uVar15 >> 0x38), + CONCAT16((byte)sVar77 & (byte)((ulong)uVar15 >> 0x30), + CONCAT15((byte)((ushort)sVar75 >> 8) & + (byte)((ulong)uVar15 >> 0x28), + CONCAT14((byte)sVar75 & (byte)((ulong)uVar15 >> 0x20), + CONCAT13((byte)((ushort)sVar74 >> 8) & + (byte)((ulong)uVar15 >> 0x18), + CONCAT12((byte)sVar74 & + (byte)((ulong)uVar15 >> + 0x10), + CONCAT11((byte)((ushort) + sVar47 >> 8) & (byte)((ulong)uVar15 >> 8), + (byte)sVar47 & (byte)uVar15))))))); + auVar59[8] = (byte)sVar78 & (byte)uVar16; + auVar59[9] = (byte)((ushort)sVar78 >> 8) & (byte)((ulong)uVar16 >> 8); + auVar59[10] = (byte)sVar80 & (byte)((ulong)uVar16 >> 0x10); + auVar59[0xb] = (byte)((ushort)sVar80 >> 8) & (byte)((ulong)uVar16 >> 0x18); + auVar59[0xc] = (byte)sVar81 & (byte)((ulong)uVar16 >> 0x20); + auVar59[0xd] = (byte)((ushort)sVar81 >> 8) & (byte)((ulong)uVar16 >> 0x28); + auVar59[0xe] = (byte)sVar83 & (byte)((ulong)uVar16 >> 0x30); + auVar59[0xf] = (byte)((ushort)sVar83 >> 8) & (byte)((ulong)uVar16 >> 0x38); + puVar25[1] = auVar59._8_8_; + *puVar25 = auVar59._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while ((int)uVar27 < iVar42 + -7); + } + iVar38 = (int)uVar43; + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 2; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 0xd)) { + lVar33 = 0; + do { + sVar47 = *(short *)(puVar3 + lVar33); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = sVar47; + lVar33 = lVar33 + 2; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 2); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 1) & 7) & 7; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 2; + sVar47 = *(short *)(*local_1b0 + lVar33); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33) = sVar47; + if (uVar46 == 1) { + uVar43 = (ulong)(iVar38 + 1); + } + else { + uVar45 = iVar38 + 2; + sVar47 = *(short *)(*local_1b0 + lVar33 + 2); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 2) = sVar47; + if (uVar46 != 2) { + uVar45 = iVar38 + 3; + sVar47 = *(short *)(*local_1b0 + lVar33 + 4); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 4) = sVar47; + if (uVar46 != 3) { + uVar45 = iVar38 + 4; + sVar47 = *(short *)(*local_1b0 + lVar33 + 6); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 6) = sVar47; + if (uVar46 != 4) { + uVar45 = iVar38 + 5; + sVar47 = *(short *)(*local_1b0 + lVar33 + 8); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 8) = sVar47; + if (uVar46 != 5) { + uVar45 = iVar38 + 6; + sVar47 = *(short *)(*local_1b0 + lVar33 + 10); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 10) = sVar47; + if (uVar46 == 7) { + uVar43 = (ulong)(iVar38 + 7); + sVar47 = *(short *)(*local_1b0 + lVar33 + 0xc); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 0xc) = sVar47; + goto LAB_0021cff8; + } + } + } + } + } + uVar43 = (ulong)uVar45; + } + } +LAB_0021cff8: + uVar45 = ((uVar27 - uVar46) - 8 >> 3) + 1; + iVar38 = uVar45 * 8; + if (6 < (uVar27 - 1) - uVar46) { + uVar44 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 2); + puVar31 = (undefined8 *)(*local_1b0 + (ulong)uVar46 * 2 + lVar36); + do { + uVar16 = puVar31[1]; + uVar15 = *puVar31; + uVar44 = uVar44 + 1; + sVar47 = -(ushort)((short)uVar15 <= sVar10); + sVar74 = -(ushort)((short)((ulong)uVar15 >> 0x10) <= (short)((uint)uVar5 >> 0x10)) + ; + sVar75 = -(ushort)((short)((ulong)uVar15 >> 0x20) <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar5)) >> 0x20)); + sVar77 = -(ushort)((short)((ulong)uVar15 >> 0x30) <= sVar10); + sVar78 = -(ushort)((short)uVar16 <= sVar10); + sVar80 = -(ushort)((short)((ulong)uVar16 >> 0x10) <= (short)((uint)uVar6 >> 0x10)) + ; + sVar81 = -(ushort)((short)((ulong)uVar16 >> 0x20) <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar6)) >> 0x20)); + sVar83 = -(ushort)((short)((ulong)uVar16 >> 0x30) <= sVar10); + auVar60._0_8_ = + CONCAT17((byte)((ulong)uVar15 >> 0x38) & ~(byte)((ushort)sVar77 >> 8), + CONCAT16((byte)((ulong)uVar15 >> 0x30) & ~(byte)sVar77, + CONCAT15((byte)((ulong)uVar15 >> 0x28) & + ~(byte)((ushort)sVar75 >> 8), + CONCAT14((byte)((ulong)uVar15 >> 0x20) & + ~(byte)sVar75, + CONCAT13((byte)((ulong)uVar15 >> 0x18) & + ~(byte)((ushort)sVar74 >> 8), + CONCAT12((byte)((ulong)uVar15 >> + 0x10) & + ~(byte)sVar74, + CONCAT11((byte)((ulong) + uVar15 >> 8) & ~(byte)((ushort)sVar47 >> 8), + (byte)uVar15 & ~(byte)sVar47))))))); + auVar60[8] = (byte)uVar16 & ~(byte)sVar78; + auVar60[9] = (byte)((ulong)uVar16 >> 8) & ~(byte)((ushort)sVar78 >> 8); + auVar60[10] = (byte)((ulong)uVar16 >> 0x10) & ~(byte)sVar80; + auVar60[0xb] = (byte)((ulong)uVar16 >> 0x18) & ~(byte)((ushort)sVar80 >> 8); + auVar60[0xc] = (byte)((ulong)uVar16 >> 0x20) & ~(byte)sVar81; + auVar60[0xd] = (byte)((ulong)uVar16 >> 0x28) & ~(byte)((ushort)sVar81 >> 8); + auVar60[0xe] = (byte)((ulong)uVar16 >> 0x30) & ~(byte)sVar83; + auVar60[0xf] = (byte)((ulong)uVar16 >> 0x38) & ~(byte)((ushort)sVar83 >> 8); + puVar25[1] = auVar60._8_8_; + *puVar25 = auVar60._0_8_; + puVar25 = puVar25 + 2; + puVar31 = puVar31 + 2; + } while (uVar44 < uVar45); + uVar43 = (ulong)(uint)((int)uVar43 + iVar38); + if (uVar27 - uVar46 == iVar38) goto LAB_0021d128; + } + uVar35 = -(uVar43 >> 0x1f) & 0xfffffffe00000000 | uVar43 << 1; + iVar38 = (int)uVar43; + sVar47 = *(short *)(*local_1b0 + uVar35); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35) = sVar47; + if (iVar38 + 1 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 2); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 2) = sVar47; + if (iVar38 + 2 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 4); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 4) = sVar47; + if (iVar38 + 3 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 6); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 6) = sVar47; + if (iVar38 + 4 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 8); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 8) = sVar47; + if (iVar38 + 5 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 10); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 10) = sVar47; + if (iVar38 + 6 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 0xc); + if (sVar47 <= sVar10) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 0xc) = sVar47; + } + } + } + } + } + } + } + } +LAB_0021d128: + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 2); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 2); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + case 4: + iVar26 = 1; +LAB_0021cb98: + iVar32 = 0; + uVar6 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + uVar5 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + do { + if (iVar42 + -7 < 1) { + uVar43 = 0; + } + else { + uVar43 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + uVar16 = *(undefined8 *)(*pauVar28 + 8); + uVar15 = *(undefined8 *)*pauVar28; + uVar27 = (int)uVar43 + 8; + uVar43 = (ulong)uVar27; + sVar47 = -(ushort)(sVar10 < (short)uVar15); + sVar74 = -(ushort)(sVar10 < (short)((ulong)uVar15 >> 0x10)); + sVar75 = -(ushort)(sVar10 < (short)((ulong)uVar15 >> 0x20)); + sVar77 = -(ushort)(sVar10 < (short)((ulong)uVar15 >> 0x30)); + sVar78 = -(ushort)(sVar10 < (short)uVar16); + sVar80 = -(ushort)(sVar10 < (short)((ulong)uVar16 >> 0x10)); + sVar81 = -(ushort)(sVar10 < (short)((ulong)uVar16 >> 0x20)); + sVar83 = -(ushort)(sVar10 < (short)((ulong)uVar16 >> 0x30)); + auVar67._0_8_ = + CONCAT17((byte)((ulong)uVar15 >> 0x38) & ~(byte)((ushort)sVar77 >> 8), + CONCAT16((byte)((ulong)uVar15 >> 0x30) & ~(byte)sVar77, + CONCAT15((byte)((ulong)uVar15 >> 0x28) & + ~(byte)((ushort)sVar75 >> 8), + CONCAT14((byte)((ulong)uVar15 >> 0x20) & ~(byte)sVar75 + ,CONCAT13((byte)((ulong)uVar15 >> 0x18) & + ~(byte)((ushort)sVar74 >> 8), + CONCAT12((byte)((ulong)uVar15 >> + 0x10) & + ~(byte)sVar74, + CONCAT11((byte)((ulong) + uVar15 >> 8) & ~(byte)((ushort)sVar47 >> 8), + (byte)uVar15 & ~(byte)sVar47))))))); + auVar67[8] = (byte)uVar16 & ~(byte)sVar78; + auVar67[9] = (byte)((ulong)uVar16 >> 8) & ~(byte)((ushort)sVar78 >> 8); + auVar67[10] = (byte)((ulong)uVar16 >> 0x10) & ~(byte)sVar80; + auVar67[0xb] = (byte)((ulong)uVar16 >> 0x18) & ~(byte)((ushort)sVar80 >> 8); + auVar67[0xc] = (byte)((ulong)uVar16 >> 0x20) & ~(byte)sVar81; + auVar67[0xd] = (byte)((ulong)uVar16 >> 0x28) & ~(byte)((ushort)sVar81 >> 8); + auVar67[0xe] = (byte)((ulong)uVar16 >> 0x30) & ~(byte)sVar83; + auVar67[0xf] = (byte)((ulong)uVar16 >> 0x38) & ~(byte)((ushort)sVar83 >> 8); + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while ((int)uVar27 < iVar42 + -7); + } + iVar38 = (int)uVar43; + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 2; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 0xd)) { + lVar33 = 0; + do { + sVar47 = *(short *)(puVar3 + lVar33); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = sVar47; + lVar33 = lVar33 + 2; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 2); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 1) & 7) & 7; + uVar46 = uVar27; + if (uVar45 < uVar27) { + uVar46 = uVar45; + } + if (uVar46 != 0) { + lVar33 = (long)iVar38 * 2; + sVar47 = *(short *)(*local_1b0 + lVar33); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33) = sVar47; + if (uVar46 == 1) { + uVar43 = (ulong)(iVar38 + 1); + } + else { + uVar45 = iVar38 + 2; + sVar47 = *(short *)(*local_1b0 + lVar33 + 2); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 2) = sVar47; + if (uVar46 != 2) { + uVar45 = iVar38 + 3; + sVar47 = *(short *)(*local_1b0 + lVar33 + 4); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 4) = sVar47; + if (uVar46 != 3) { + uVar45 = iVar38 + 4; + sVar47 = *(short *)(*local_1b0 + lVar33 + 6); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 6) = sVar47; + if (uVar46 != 4) { + uVar45 = iVar38 + 5; + sVar47 = *(short *)(*local_1b0 + lVar33 + 8); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 8) = sVar47; + if (uVar46 != 5) { + uVar45 = iVar38 + 6; + sVar47 = *(short *)(*local_1b0 + lVar33 + 10); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 10) = sVar47; + if (uVar46 == 7) { + uVar43 = (ulong)(iVar38 + 7); + sVar47 = *(short *)(*local_1b0 + lVar33 + 0xc); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + lVar33 + 0xc) = sVar47; + goto LAB_0021cd20; + } + } + } + } + } + uVar43 = (ulong)uVar45; + } + } +LAB_0021cd20: + uVar45 = ((uVar27 - uVar46) - 8 >> 3) + 1; + iVar38 = uVar45 * 8; + if (6 < (uVar27 - 1) - uVar46) { + uVar44 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar46 * 2); + puVar31 = (undefined8 *)(*local_1b0 + (ulong)uVar46 * 2 + lVar36); + do { + uVar16 = puVar31[1]; + uVar15 = *puVar31; + uVar44 = uVar44 + 1; + sVar47 = -(ushort)((short)uVar15 <= sVar10); + sVar74 = -(ushort)((short)((ulong)uVar15 >> 0x10) <= (short)((uint)uVar5 >> 0x10)) + ; + sVar75 = -(ushort)((short)((ulong)uVar15 >> 0x20) <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar5)) >> 0x20)); + sVar77 = -(ushort)((short)((ulong)uVar15 >> 0x30) <= sVar10); + sVar78 = -(ushort)((short)uVar16 <= sVar10); + sVar80 = -(ushort)((short)((ulong)uVar16 >> 0x10) <= (short)((uint)uVar6 >> 0x10)) + ; + sVar81 = -(ushort)((short)((ulong)uVar16 >> 0x20) <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar6)) >> 0x20)); + sVar83 = -(ushort)((short)((ulong)uVar16 >> 0x30) <= sVar10); + auVar58._0_8_ = + CONCAT17((byte)((ushort)sVar77 >> 8) & (byte)((ulong)uVar15 >> 0x38), + CONCAT16((byte)sVar77 & (byte)((ulong)uVar15 >> 0x30), + CONCAT15((byte)((ushort)sVar75 >> 8) & + (byte)((ulong)uVar15 >> 0x28), + CONCAT14((byte)sVar75 & + (byte)((ulong)uVar15 >> 0x20), + CONCAT13((byte)((ushort)sVar74 >> 8) & + (byte)((ulong)uVar15 >> 0x18), + CONCAT12((byte)sVar74 & + (byte)((ulong)uVar15 >> + 0x10), + CONCAT11((byte)((ushort + )sVar47 >> 8) & (byte)((ulong)uVar15 >> 8), + (byte)sVar47 & (byte)uVar15))))))); + auVar58[8] = (byte)sVar78 & (byte)uVar16; + auVar58[9] = (byte)((ushort)sVar78 >> 8) & (byte)((ulong)uVar16 >> 8); + auVar58[10] = (byte)sVar80 & (byte)((ulong)uVar16 >> 0x10); + auVar58[0xb] = (byte)((ushort)sVar80 >> 8) & (byte)((ulong)uVar16 >> 0x18); + auVar58[0xc] = (byte)sVar81 & (byte)((ulong)uVar16 >> 0x20); + auVar58[0xd] = (byte)((ushort)sVar81 >> 8) & (byte)((ulong)uVar16 >> 0x28); + auVar58[0xe] = (byte)sVar83 & (byte)((ulong)uVar16 >> 0x30); + auVar58[0xf] = (byte)((ushort)sVar83 >> 8) & (byte)((ulong)uVar16 >> 0x38); + puVar25[1] = auVar58._8_8_; + *puVar25 = auVar58._0_8_; + puVar25 = puVar25 + 2; + puVar31 = puVar31 + 2; + } while (uVar44 < uVar45); + uVar43 = (ulong)(uint)((int)uVar43 + iVar38); + if (uVar27 - uVar46 == iVar38) goto LAB_0021ce50; + } + uVar35 = -(uVar43 >> 0x1f) & 0xfffffffe00000000 | uVar43 << 1; + iVar38 = (int)uVar43; + sVar47 = *(short *)(*local_1b0 + uVar35); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35) = sVar47; + if (iVar38 + 1 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 2); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 2) = sVar47; + if (iVar38 + 2 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 4); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 4) = sVar47; + if (iVar38 + 3 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 6); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 6) = sVar47; + if (iVar38 + 4 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 8); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 8) = sVar47; + if (iVar38 + 5 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 10); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 10) = sVar47; + if (iVar38 + 6 < iVar42) { + sVar47 = *(short *)(*local_1b0 + uVar35 + 0xc); + if (sVar10 < sVar47) { + sVar47 = 0; + } + *(short *)((long)local_150 + uVar35 + 0xc) = sVar47; + } + } + } + } + } + } + } + } +LAB_0021ce50: + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 2); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 2); + } while (iVar32 != iVar26); + goto LAB_0021b3d4; + default: +switchD_0021c884_default: + this = (String *)&local_1e0; + local_1e0 = 0; + local_1d8 = 0; + cv::String::allocate(this,0); + cv::error(-5,this,"void cv::thresh_16s(const cv::Mat&, cv::Mat&, short int, short int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x28c); +LAB_0021c788: + cv::String::deallocate(this); + goto LAB_0021b3d4; + } + } + iVar32 = 0; + uVar6 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + uVar5 = CONCAT13(uVar90,CONCAT12(uVar101,sVar10)); + do { + if (iVar42 + -7 < 1) { + uVar43 = 0; + } + else { + uVar43 = 0; + puVar25 = local_150; + pauVar28 = local_1b0; + do { + uVar27 = (int)uVar43 + 8; + uVar43 = (ulong)uVar27; + sVar47 = -(ushort)(sVar10 < *(short *)*pauVar28); + sVar74 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 2)); + sVar75 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 4)); + sVar77 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 6)); + sVar78 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 8)); + sVar80 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 10)); + sVar81 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 0xc)); + sVar83 = -(ushort)(sVar10 < *(short *)(*pauVar28 + 0xe)); + auVar56._0_8_ = + CONCAT17((byte)((ushort)sVar77 >> 8) & bVar86, + CONCAT16((byte)sVar77 & bVar87, + CONCAT15((byte)((ushort)sVar75 >> 8) & bVar86, + CONCAT14((byte)sVar75 & bVar87, + CONCAT13((byte)((ushort)sVar74 >> 8) & bVar86, + CONCAT12((byte)sVar74 & bVar87, + CONCAT11((byte)((ushort)sVar47 + >> 8) & bVar86, + (byte)sVar47 & bVar87) + )))))); + auVar56[8] = (byte)sVar78 & bVar87; + auVar56[9] = (byte)((ushort)sVar78 >> 8) & bVar86; + auVar56[10] = (byte)sVar80 & bVar87; + auVar56[0xb] = (byte)((ushort)sVar80 >> 8) & bVar86; + auVar56[0xc] = (byte)sVar81 & bVar87; + auVar56[0xd] = (byte)((ushort)sVar81 >> 8) & bVar86; + auVar56[0xe] = (byte)sVar83 & bVar87; + auVar56[0xf] = (byte)((ushort)sVar83 >> 8) & bVar86; + puVar25[1] = auVar56._8_8_; + *puVar25 = auVar56._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while ((int)uVar27 < iVar42 + -7); + } + iVar38 = (int)uVar43; + if (iVar38 < iVar42) { + uVar27 = iVar42 - iVar38; + lVar36 = (long)iVar38 * 2; + puVar3 = *local_1b0 + lVar36; + if (((undefined1 *)((long)local_150 + lVar36) < local_1b0[1] + lVar36 && + puVar3 < (undefined1 *)((long)local_150 + lVar36 + 0x10)) || (uVar27 < 0xd)) { + lVar33 = 0; + do { + uVar111 = uVar110; + if (*(short *)(puVar3 + lVar33) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((undefined1 *)((long)local_150 + lVar36) + lVar33) = uVar111; + lVar33 = lVar33 + 2; + } while (lVar33 != ((ulong)(uint)((iVar42 + -1) - iVar38) + 1) * 2); + } + else { + uVar45 = -((uint)((ulong)puVar3 >> 1) & 7) & 7; + if (uVar27 < uVar45) { + uVar45 = uVar27; + } + if (uVar45 != 0) { + lVar33 = (long)iVar38 * 2; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33) = uVar111; + if (uVar45 == 1) { + uVar43 = (ulong)(iVar38 + 1); + } + else { + uVar46 = iVar38 + 2; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33 + 2) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 2) = uVar111; + if (uVar45 != 2) { + uVar46 = iVar38 + 3; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33 + 4) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 4) = uVar111; + if (uVar45 != 3) { + uVar46 = iVar38 + 4; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33 + 6) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 6) = uVar111; + if (uVar45 != 4) { + uVar46 = iVar38 + 5; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33 + 8) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 8) = uVar111; + if (uVar45 != 5) { + uVar46 = iVar38 + 6; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33 + 10) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 10) = uVar111; + if (uVar45 == 7) { + uVar43 = (ulong)(iVar38 + 7); + uVar111 = uVar110; + if (*(short *)(*local_1b0 + lVar33 + 0xc) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + lVar33 + 0xc) = uVar111; + goto LAB_0021ca48; + } + } + } + } + } + uVar43 = (ulong)uVar46; + } + } +LAB_0021ca48: + uVar46 = ((uVar27 - uVar45) - 8 >> 3) + 1; + iVar38 = uVar46 * 8; + if (6 < (uVar27 - 1) - uVar45) { + uVar44 = 0; + psVar37 = (short *)(*local_1b0 + (ulong)uVar45 * 2 + lVar36); + puVar25 = (undefined8 *)((long)local_150 + lVar36 + (ulong)uVar45 * 2); + do { + uVar44 = uVar44 + 1; + sVar47 = -(ushort)(psVar37[1] <= (short)((uint)uVar5 >> 0x10)); + sVar74 = -(ushort)(psVar37[2] <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar5)) >> 0x20)); + sVar75 = -(ushort)(psVar37[5] <= (short)((uint)uVar6 >> 0x10)); + sVar77 = -(ushort)(psVar37[6] <= + (short)(CONCAT15(uVar90,CONCAT14(uVar101,uVar6)) >> 0x20)); + auVar57._0_8_ = + CONCAT17(bVar86 & ~(byte)((ushort)-(ushort)(psVar37[3] <= sVar10) >> 8), + CONCAT16(bVar87 & ~(byte)-(ushort)(psVar37[3] <= sVar10), + CONCAT15(bVar86 & ~(byte)((ushort)sVar74 >> 8), + CONCAT14(bVar87 & ~(byte)sVar74, + CONCAT13(bVar86 & ~(byte)((ushort)sVar47 >> 8 + ), + CONCAT12(bVar87 & ~(byte)sVar47, + CONCAT11(bVar86 & ~(byte)(( + ushort)-(ushort)(*psVar37 <= sVar10) >> 8), + bVar87 & ~(byte)-(ushort)(*psVar37 <= sVar10)))))) + )); + auVar57[8] = bVar87 & ~(byte)-(ushort)(psVar37[4] <= sVar10); + auVar57[9] = bVar86 & ~(byte)((ushort)-(ushort)(psVar37[4] <= sVar10) >> 8); + auVar57[10] = bVar87 & ~(byte)sVar75; + auVar57[0xb] = bVar86 & ~(byte)((ushort)sVar75 >> 8); + auVar57[0xc] = bVar87 & ~(byte)sVar77; + auVar57[0xd] = bVar86 & ~(byte)((ushort)sVar77 >> 8); + auVar57[0xe] = bVar87 & ~(byte)-(ushort)(psVar37[7] <= sVar10); + auVar57[0xf] = bVar86 & ~(byte)((ushort)-(ushort)(psVar37[7] <= sVar10) >> 8); + puVar25[1] = auVar57._8_8_; + *puVar25 = auVar57._0_8_; + psVar37 = psVar37 + 8; + puVar25 = puVar25 + 2; + } while (uVar44 < uVar46); + uVar43 = (ulong)(uint)((int)uVar43 + iVar38); + if (iVar38 == uVar27 - uVar45) goto LAB_0021cb78; + } + uVar35 = -(uVar43 >> 0x1f) & 0xfffffffe00000000 | uVar43 << 1; + iVar38 = (int)uVar43; + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35) = uVar111; + if (iVar38 + 1 < iVar42) { + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35 + 2) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 2) = uVar111; + if (iVar38 + 2 < iVar42) { + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35 + 4) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 4) = uVar111; + if (iVar38 + 3 < iVar42) { + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35 + 6) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 6) = uVar111; + if (iVar38 + 4 < iVar42) { + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35 + 8) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 8) = uVar111; + if (iVar38 + 5 < iVar42) { + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35 + 10) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 10) = uVar111; + if (iVar38 + 6 < iVar42) { + uVar111 = uVar110; + if (*(short *)(*local_1b0 + uVar35 + 0xc) <= sVar10) { + uVar111 = 0; + } + *(undefined2 *)((long)local_150 + uVar35 + 0xc) = uVar111; + } + } + } + } + } + } + } + } +LAB_0021cb78: + iVar32 = iVar32 + 1; + local_1b0 = (undefined1 (*) [16])(*local_1b0 + local_170[0] * 2); + local_150 = (undefined8 *)((long)local_150 + local_110[0] * 2); + } while (iVar32 < iVar26); + goto LAB_0021b3d4; + } + uVar27 = *(uint *)(param_1 + 0xd8); + uVar45 = (uint)*(double *)(param_1 + 200); + iVar26 = *local_180; + iVar42 = local_180[1] + (local_1c0 >> 3 & 0x1ff) * local_180[1]; + bVar86 = (byte)uVar45; + bVar87 = (byte)(int)*(double *)(param_1 + 0xd0); + uVar43 = local_170[0]; + uVar35 = local_110[0]; + if (((local_1c0 >> 0xe & 1) != 0) && ((local_160 >> 0xe & 1) != 0)) { + iVar42 = iVar42 * iVar26; + iVar26 = 1; + uVar43 = (ulong)iVar42; + uVar35 = uVar43; + } + if (uVar27 < 5) { + __c = uVar45 & 0xff; + uVar44 = (int)*(double *)(param_1 + 0xd0) & 0xff; + uVar46 = uVar45 & 0xff; + uVar45 = uVar45 & 0xff; + switch(uVar27) { + case 0: + memset((Range *)&local_100,0,(ulong)bVar86 + 1); + if (uVar46 != 0xff) { + memset((Range *)&local_100 + (ulong)bVar86 + 1,uVar44,(ulong)(0xfe - uVar46) + 1); + } + goto switchD_0021c89c_caseD_0; + case 1: + memset((Range *)&local_100,uVar44,(ulong)bVar86 + 1); + if (uVar46 != 0xff) { + memset((Range *)&local_100 + (ulong)bVar86 + 1,0,(ulong)(0xfe - __c) + 1); + } + goto switchD_0021c89c_caseD_1; + case 3: + __n = (ulong)bVar86 + 1; + memset((Range *)&local_100,0,__n); + iVar32 = uVar46 + 1; + if (iVar32 != 0x100) { + uVar46 = 0xff - uVar46; + uVar27 = -(int)__n & 0xf; + uVar4 = (ulong)uVar27; + if (uVar46 < uVar27) { + uVar4 = (ulong)uVar46; + } + if (uVar46 < 0x12) { + uVar4 = (ulong)uVar46; + } + uVar27 = (uint)uVar4; + if (uVar27 != 0) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 2; + if (uVar27 != 1) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 3; + if (uVar27 != 2) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 4; + if (uVar27 != 3) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 5; + if (uVar27 != 4) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 6; + if (uVar27 != 5) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 7; + if (uVar27 != 6) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 8; + if (uVar27 != 7) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 9; + if (uVar27 != 8) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 10; + if (uVar27 != 9) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0xb; + if (uVar27 != 10) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0xc; + if (uVar27 != 0xb) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0xd; + if (uVar27 != 0xc) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0xe; + if (uVar27 != 0xd) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0xf; + if (uVar27 != 0xe) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0x10; + if (uVar27 != 0xf) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = uVar45 + 0x11; + if (uVar27 == 0x11) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + iVar32 = __c + 0x12; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar27 == uVar46) goto switchD_0021c89c_caseD_3; + } + iVar38 = ((uVar46 - uVar27) - 0x10 >> 4) + 1; + if (0xe < (0xfe - __c) - uVar27) { + lVar36 = uVar4 + __n; + cVar8 = (char)iVar32; + *(ulong *)(auStack_f8 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e648 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e648, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e640 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e640, + CONCAT13(cVar8 + (char)((ulong)_UNK_0021e638 >> + 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e638, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e630 >> 0x20),cVar8 + (char)_DAT_0021e630 + ))))))); + *(ulong *)((Range *)&local_100 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e628 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e628, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e620 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e620, + CONCAT13(cVar8 + (char)((ulong)_UNK_0021e618 >> + 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e618, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e610 >> 0x20),cVar8 + (char)_DAT_0021e610 + ))))))); + if (iVar38 != 1) { + *(ulong *)(auStack_e8 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e688 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e688, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e680 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e680, + CONCAT13(cVar8 + (char)((ulong)_UNK_0021e678 >> + 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e678, + CONCAT11(cVar8 + (char)(( + ulong)_DAT_0021e670 >> 0x20), + cVar8 + (char)_DAT_0021e670))))))); + *(ulong *)(local_f0 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e668 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e668, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e660 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e660, + CONCAT13(cVar8 + (char)((ulong)_UNK_0021e608 >> + 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e608, + CONCAT11(cVar8 + (char)(( + ulong)_DAT_0021e600 >> 0x20), + cVar8 + (char)_DAT_0021e600))))))); + if (iVar38 != 2) { + *(ulong *)(auStack_d8 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e6c8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e6c8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e6c0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e6c0, + CONCAT13(cVar8 + (char)((ulong)_UNK_0021e6b8 + >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e6b8 + ,CONCAT11(cVar8 + (char)(( + ulong)_DAT_0021e6b0 >> 0x20), + cVar8 + (char)_DAT_0021e6b0))))))); + *(ulong *)(local_e0 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e6a8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e6a8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e6a0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e6a0, + CONCAT13(cVar8 + (char)((ulong)_UNK_0021e658 + >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e658 + ,CONCAT11(cVar8 + (char)(( + ulong)_DAT_0021e650 >> 0x20), + cVar8 + (char)_DAT_0021e650))))))); + if (iVar38 != 3) { + *(ulong *)(auStack_c8 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e708 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e708, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e700 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e700, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e6f8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e6f8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e6f0 >> 0x20),cVar8 + (char)_DAT_0021e6f0 + ))))))); + *(ulong *)(local_d0 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e6e8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e6e8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e6e0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e6e0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e698 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e698, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e690 >> 0x20),cVar8 + (char)_DAT_0021e690 + ))))))); + if (iVar38 != 4) { + *(ulong *)(auStack_b8 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e748 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e748, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e740 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e740, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e738 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e738, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e730 >> 0x20),cVar8 + (char)_DAT_0021e730 + ))))))); + *(ulong *)(local_c0 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e728 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e728, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e720 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e720, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e6d8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e6d8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e6d0 >> 0x20),cVar8 + (char)_DAT_0021e6d0 + ))))))); + if (iVar38 != 5) { + *(ulong *)(auStack_a8 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e788 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e788, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e780 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e780, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e778 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e778, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e770 >> 0x20),cVar8 + (char)_DAT_0021e770 + ))))))); + *(ulong *)(local_b0 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e768 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e768, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e760 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e760, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e718 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e718, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e710 >> 0x20),cVar8 + (char)_DAT_0021e710 + ))))))); + if (iVar38 != 6) { + *(ulong *)(auStack_98 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e7c8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e7c8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e7c0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e7c0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e7b8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e7b8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e7b0 >> 0x20),cVar8 + (char)_DAT_0021e7b0 + ))))))); + *(ulong *)(local_a0 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e7a8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e7a8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e7a0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e7a0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e758 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e758, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e750 >> 0x20),cVar8 + (char)_DAT_0021e750 + ))))))); + if (iVar38 != 7) { + *(ulong *)(auStack_88 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e808 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e808, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e800 >> 0x20) + ,CONCAT14(cVar8 + (char)_DAT_0021e800, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e7f8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e7f8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e7f0 >> 0x20),cVar8 + (char)_DAT_0021e7f0 + ))))))); + *(ulong *)(local_90 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e7e8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e7e8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e7e0 >> 0x20) + ,CONCAT14(cVar8 + (char)_DAT_0021e7e0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e798 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e798, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e790 >> 0x20),cVar8 + (char)_DAT_0021e790 + ))))))); + if (iVar38 != 8) { + *(ulong *)(auStack_78 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e848 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e848, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e840 >> + 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e840, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e838 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e838, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e830 >> 0x20),cVar8 + (char)_DAT_0021e830 + ))))))); + *(ulong *)(local_80 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e828 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e828, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e820 >> + 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e820, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e7d8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e7d8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e7d0 >> 0x20),cVar8 + (char)_DAT_0021e7d0 + ))))))); + if (iVar38 != 9) { + *(ulong *)(auStack_68 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e888 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e888, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e880 >> + 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e880, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e878 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e878, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e870 >> 0x20),cVar8 + (char)_DAT_0021e870 + ))))))); + *(ulong *)(local_70 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e868 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e868, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e860 >> + 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e860, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e818 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e818, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e810 >> 0x20),cVar8 + (char)_DAT_0021e810 + ))))))); + if (iVar38 != 10) { + *(ulong *)(auStack_58 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e8c8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e8c8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e8c0 >> + 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e8c0, + CONCAT13(cVar8 + (char)(( + ulong)_UNK_0021e8b8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e8b8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e8b0 >> 0x20),cVar8 + (char)_DAT_0021e8b0 + ))))))); + *(ulong *)(local_60 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e8a8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e8a8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e8a0 >> + 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e8a0, + CONCAT13(cVar8 + (char)(( + ulong)_UNK_0021e858 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e858, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e850 >> 0x20),cVar8 + (char)_DAT_0021e850 + ))))))); + if (iVar38 != 0xb) { + *(ulong *)(auStack_48 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e908 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e908, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e900 + >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e900 + ,CONCAT13(cVar8 + (char)(( + ulong)_UNK_0021e8f8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e8f8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e8f0 >> 0x20),cVar8 + (char)_DAT_0021e8f0 + ))))))); + *(ulong *)(local_50 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e8e8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e8e8, + CONCAT15(cVar8 + (char)((ulong)_DAT_0021e8e0 + >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e8e0 + ,CONCAT13(cVar8 + (char)(( + ulong)_UNK_0021e898 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e898, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e890 >> 0x20),cVar8 + (char)_DAT_0021e890 + ))))))); + if (iVar38 != 0xc) { + *(ulong *)(auStack_38 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e948 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e948, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e940 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e940, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e938 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e938, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e930 >> 0x20),cVar8 + (char)_DAT_0021e930 + ))))))); + *(ulong *)(local_40 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e928 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e928, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e920 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e920, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e8d8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e8d8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e8d0 >> 0x20),cVar8 + (char)_DAT_0021e8d0 + ))))))); + if (iVar38 != 0xd) { + *(ulong *)(auStack_28 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e988 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e988, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e980 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e980, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e978 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e978, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e970 >> 0x20),cVar8 + (char)_DAT_0021e970 + ))))))); + *(ulong *)(local_30 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e968 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e968, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e960 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e960, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e918 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e918, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e910 >> 0x20),cVar8 + (char)_DAT_0021e910 + ))))))); + if (iVar38 != 0xe) { + *(ulong *)(auStack_18 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e9c8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e9c8, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e9c0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e9c0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e9b8 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e9b8, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e9b0 >> 0x20),cVar8 + (char)_DAT_0021e9b0 + ))))))); + *(ulong *)(local_20 + lVar36) = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e9a8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e9a8, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e9a0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e9a0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e958 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e958, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e950 >> 0x20),cVar8 + (char)_DAT_0021e950 + ))))))); + if (iVar38 != 0xf) { + auVar51._0_8_ = + CONCAT17(cVar8 + (char)((ulong)_UNK_0021e9d8 >> 0x20), + CONCAT16(cVar8 + (char)_UNK_0021e9d8, + CONCAT15(cVar8 + (char)((ulong) + _DAT_0021e9d0 >> 0x20), + CONCAT14(cVar8 + (char)_DAT_0021e9d0, + CONCAT13(cVar8 + (char)((ulong) + _UNK_0021e998 >> 0x20), + CONCAT12(cVar8 + (char)_UNK_0021e998, + CONCAT11(cVar8 + (char)((ulong) + _DAT_0021e990 >> 0x20),cVar8 + (char)_DAT_0021e990 + ))))))); + auVar51[8] = cVar8 + (char)_DAT_0021e9e0; + auVar51[9] = cVar8 + (char)((ulong)_DAT_0021e9e0 >> 0x20); + auVar51[10] = cVar8 + (char)_UNK_0021e9e8; + auVar51[0xb] = cVar8 + (char)((ulong)_UNK_0021e9e8 >> 0x20); + auVar51[0xc] = cVar8 + (char)_DAT_0021e9f0; + auVar51[0xd] = cVar8 + (char)((ulong)_DAT_0021e9f0 >> 0x20); + auVar51[0xe] = cVar8 + (char)_UNK_0021e9f8; + auVar51[0xf] = cVar8 + (char)((ulong)_UNK_0021e9f8 >> 0x20); + *(long *)(auStack_8 + lVar36) = auVar51._8_8_; + *(undefined8 *)(local_10 + lVar36) = auVar51._0_8_; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar32 = iVar32 + iVar38 * 0x10; + if (iVar38 * 0x10 == uVar46 - uVar27) goto switchD_0021c89c_caseD_3; + } + iVar38 = iVar32 + 1; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar38 != 0x100) { + iVar50 = iVar32 + 2; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar50 != 0x100) { + iVar38 = iVar32 + 3; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar38 != 0x100) { + iVar50 = iVar32 + 4; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar50 != 0x100) { + iVar38 = iVar32 + 5; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar38 != 0x100) { + iVar50 = iVar32 + 6; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar50 != 0x100) { + iVar38 = iVar32 + 7; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar38 != 0x100) { + iVar50 = iVar32 + 8; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar50 != 0x100) { + iVar38 = iVar32 + 9; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar38 != 0x100) { + iVar50 = iVar32 + 10; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar50 != 0x100) { + iVar38 = iVar32 + 0xb; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar38 != 0x100) { + iVar50 = iVar32 + 0xc; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar50 != 0x100) { + iVar38 = iVar32 + 0xd; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar38 != 0x100) { + iVar32 = iVar32 + 0xe; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar32 != 0x100) { + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +switchD_0021c89c_caseD_3: + if (iVar26 < 1) goto LAB_0021b3d4; + lVar33 = 0; + lVar36 = 0; + iVar32 = 0; + do { + if (iVar42 + -0xf < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar33); + puVar31 = (undefined8 *)(*local_1b0 + lVar36); + do { + uVar16 = puVar31[1]; + bVar95 = (byte)((ulong)uVar16 >> 8); + bVar96 = (byte)((ulong)uVar16 >> 0x10); + bVar97 = (byte)((ulong)uVar16 >> 0x18); + bVar98 = (byte)((ulong)uVar16 >> 0x20); + bVar99 = (byte)((ulong)uVar16 >> 0x28); + bVar100 = (byte)((ulong)uVar16 >> 0x30); + bVar102 = (byte)((ulong)uVar16 >> 0x38); + uVar15 = *puVar31; + bVar87 = (byte)((ulong)uVar15 >> 8); + bVar88 = (byte)((ulong)uVar15 >> 0x10); + bVar89 = (byte)((ulong)uVar15 >> 0x18); + bVar91 = (byte)((ulong)uVar15 >> 0x20); + bVar92 = (byte)((ulong)uVar15 >> 0x28); + bVar93 = (byte)((ulong)uVar15 >> 0x30); + bVar94 = (byte)((ulong)uVar15 >> 0x38); + iVar38 = iVar38 + 0x10; + auVar52._0_8_ = + CONCAT17(-(bVar86 < bVar94) & bVar94, + CONCAT16(-(bVar86 < bVar93) & bVar93, + CONCAT15(-(bVar86 < bVar92) & bVar92, + CONCAT14(-(bVar86 < bVar91) & bVar91, + CONCAT13(-(bVar86 < bVar89) & bVar89, + CONCAT12(-(bVar86 < bVar88) & bVar88, + CONCAT11(-(bVar86 < bVar87) & + bVar87,-(bVar86 < ( + byte)uVar15) & (byte)uVar15))))))); + auVar52[8] = -(bVar86 < (byte)uVar16) & (byte)uVar16; + auVar52[9] = -(bVar86 < bVar95) & bVar95; + auVar52[10] = -(bVar86 < bVar96) & bVar96; + auVar52[0xb] = -(bVar86 < bVar97) & bVar97; + auVar52[0xc] = -(bVar86 < bVar98) & bVar98; + auVar52[0xd] = -(bVar86 < bVar99) & bVar99; + auVar52[0xe] = -(bVar86 < bVar100) & bVar100; + auVar52[0xf] = -(bVar86 < bVar102) & bVar102; + puVar25[1] = auVar52._8_8_; + *puVar25 = auVar52._0_8_; + puVar25 = puVar25 + 2; + puVar31 = puVar31 + 2; + } while (iVar38 < iVar42 + -0xf); + } + iVar32 = iVar32 + 1; + lVar36 = lVar36 + uVar43; + lVar33 = lVar33 + uVar35; + } while (iVar32 != iVar26); + goto LAB_0021c2ec; + case 4: + iVar32 = (uVar45 - 0xf >> 4) + 1; + iVar38 = iVar32 * 0x10; + if (uVar45 < 0xf) { + iVar38 = 0; +LAB_0021c578: + iVar32 = iVar38 + 1; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 2; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 3; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 4; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 5; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 6; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 7; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 8; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 9; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 10; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 0xb; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 0xc; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 0xd; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar38 = iVar38 + 0xe; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar38 <= (int)uVar45) { + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + auStack_f8 = (undefined1 [8])_UNK_0021e508; + local_100 = _DAT_0021e500; + if (iVar32 != 1) { + auStack_e8 = (undefined1 [8])_UNK_0021e518; + local_f0 = (undefined1 [8])_DAT_0021e510; + if (iVar32 != 2) { + auStack_d8 = (undefined1 [8])_UNK_0021e528; + local_e0 = (undefined1 [8])_DAT_0021e520; + if (iVar32 != 3) { + auStack_c8 = (undefined1 [8])_UNK_0021e538; + local_d0 = (undefined1 [8])_DAT_0021e530; + if (iVar32 != 4) { + auStack_b8 = (undefined1 [8])_UNK_0021e548; + local_c0 = (undefined1 [8])_DAT_0021e540; + if (iVar32 != 5) { + auStack_a8 = (undefined1 [8])_UNK_0021e558; + local_b0 = (undefined1 [8])_DAT_0021e550; + if (iVar32 != 6) { + auStack_98 = (undefined1 [8])_UNK_0021e568; + local_a0 = (undefined1 [8])_DAT_0021e560; + if (iVar32 != 7) { + auStack_88 = (undefined1 [8])_UNK_0021e578; + local_90 = (undefined1 [8])_DAT_0021e570; + if (iVar32 != 8) { + auStack_78 = (undefined1 [8])_UNK_0021e588; + local_80 = (undefined1 [8])_DAT_0021e580; + if (iVar32 != 9) { + auStack_68 = (undefined1 [8])_UNK_0021e598; + local_70 = (undefined1 [8])_DAT_0021e590; + if (iVar32 != 10) { + auStack_58 = (undefined1 [8])_UNK_0021e5a8; + local_60 = (undefined1 [8])_DAT_0021e5a0; + if (iVar32 != 0xb) { + auStack_48 = (undefined1 [8])_UNK_0021e5b8; + local_50 = (undefined1 [8])_DAT_0021e5b0; + if (iVar32 != 0xc) { + auStack_38 = (undefined1 [8])_UNK_0021e5c8; + local_40 = (undefined1 [8])_DAT_0021e5c0; + if (iVar32 != 0xd) { + auStack_28 = (undefined1 [8])_UNK_0021e5d8; + local_30 = (undefined1 [8])_DAT_0021e5d0; + if (iVar32 != 0xe) { + auStack_18 = (undefined1 [8])_UNK_0021e5e8; + local_20 = (undefined1 [8])_DAT_0021e5e0; + if (iVar32 != 0xf) { + auStack_8 = (undefined1 [8])_UNK_0021e5f8; + local_10 = (undefined1 [8])_DAT_0021e5f0; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (iVar38 != uVar45 + 1) goto LAB_0021c578; + } + if (uVar46 != 0xff) { + memset((Range *)&local_100 + (ulong)bVar86 + 1,0,(ulong)(0xfe - __c) + 1); + } + goto switchD_0021c89c_caseD_4; + } + iVar32 = (uVar45 - 0xf >> 4) + 1; + iVar38 = iVar32 * 0x10; + if (uVar45 < 0xf) { + iVar38 = 0; +LAB_0021c02c: + iVar32 = iVar38 + 1; + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 2; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 3; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 4; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 5; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 6; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 7; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 8; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 9; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 10; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 0xb; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar50 = iVar38 + 0xc; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar50 <= (int)uVar45) { + iVar32 = iVar38 + 0xd; + ((Range *)&local_100)[iVar50] = SUB41(iVar50,0); + if (iVar32 <= (int)uVar45) { + iVar38 = iVar38 + 0xe; + ((Range *)&local_100)[iVar32] = SUB41(iVar32,0); + if (iVar38 <= (int)uVar45) { + ((Range *)&local_100)[iVar38] = SUB41(iVar38,0); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + auStack_f8 = (undefined1 [8])_UNK_0021e508; + local_100 = _DAT_0021e500; + if (iVar32 != 1) { + auStack_e8 = (undefined1 [8])_UNK_0021e518; + local_f0 = (undefined1 [8])_DAT_0021e510; + if (iVar32 != 2) { + auStack_d8 = (undefined1 [8])_UNK_0021e528; + local_e0 = (undefined1 [8])_DAT_0021e520; + if (iVar32 != 3) { + auStack_c8 = (undefined1 [8])_UNK_0021e538; + local_d0 = (undefined1 [8])_DAT_0021e530; + if (iVar32 != 4) { + auStack_b8 = (undefined1 [8])_UNK_0021e548; + local_c0 = (undefined1 [8])_DAT_0021e540; + if (iVar32 != 5) { + auStack_a8 = (undefined1 [8])_UNK_0021e558; + local_b0 = (undefined1 [8])_DAT_0021e550; + if (iVar32 != 6) { + auStack_98 = (undefined1 [8])_UNK_0021e568; + local_a0 = (undefined1 [8])_DAT_0021e560; + if (iVar32 != 7) { + auStack_88 = (undefined1 [8])_UNK_0021e578; + local_90 = (undefined1 [8])_DAT_0021e570; + if (iVar32 != 8) { + auStack_78 = (undefined1 [8])_UNK_0021e588; + local_80 = (undefined1 [8])_DAT_0021e580; + if (iVar32 != 9) { + auStack_68 = (undefined1 [8])_UNK_0021e598; + local_70 = (undefined1 [8])_DAT_0021e590; + if (iVar32 != 10) { + auStack_58 = (undefined1 [8])_UNK_0021e5a8; + local_60 = (undefined1 [8])_DAT_0021e5a0; + if (iVar32 != 0xb) { + auStack_48 = (undefined1 [8])_UNK_0021e5b8; + local_50 = (undefined1 [8])_DAT_0021e5b0; + if (iVar32 != 0xc) { + auStack_38 = (undefined1 [8])_UNK_0021e5c8; + local_40 = (undefined1 [8])_DAT_0021e5c0; + if (iVar32 != 0xd) { + auStack_28 = (undefined1 [8])_UNK_0021e5d8; + local_30 = (undefined1 [8])_DAT_0021e5d0; + if (iVar32 != 0xe) { + auStack_18 = (undefined1 [8])_UNK_0021e5e8; + local_20 = (undefined1 [8])_DAT_0021e5e0; + if (iVar32 != 0xf) { + auStack_8 = (undefined1 [8])_UNK_0021e5f8; + local_10 = (undefined1 [8])_DAT_0021e5f0; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar45 + 1 != iVar38) goto LAB_0021c02c; + } + if (__c != 0xff) { + memset((Range *)&local_100 + (ulong)bVar86 + 1,__c,(ulong)(0xfe - __c) + 1); + } +switchD_0021c89c_caseD_2: + if (iVar26 < 1) goto LAB_0021b3d4; + lVar33 = 0; + lVar36 = 0; + iVar32 = 0; + do { + if (iVar42 + -0xf < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar33); + pauVar28 = (undefined1 (*) [16])(*local_1b0 + lVar36); + do { + iVar38 = iVar38 + 0x10; + auVar14[1] = bVar86; + auVar14[0] = bVar86; + auVar14[2] = bVar86; + auVar14[3] = bVar86; + auVar14[4] = bVar86; + auVar14[5] = bVar86; + auVar14[6] = bVar86; + auVar14[7] = bVar86; + auVar14[8] = bVar86; + auVar14[9] = bVar86; + auVar14[10] = bVar86; + auVar14[0xb] = bVar86; + auVar14[0xc] = bVar86; + auVar14[0xd] = bVar86; + auVar14[0xe] = bVar86; + auVar14[0xf] = bVar86; + auVar67 = NEON_umin(*pauVar28,auVar14,1); + puVar25[1] = auVar67._8_8_; + *puVar25 = auVar67._0_8_; + puVar25 = puVar25 + 2; + pauVar28 = pauVar28 + 1; + } while (iVar38 < iVar42 + -0xf); + } + iVar32 = iVar32 + 1; + lVar36 = lVar36 + uVar43; + lVar33 = lVar33 + uVar35; + } while (iVar32 != iVar26); + } + else { + local_1f0 = 0; + local_1e8 = 0; + pcVar24 = (char *)cv::String::allocate((String *)&local_1f0,0x16); + uVar110 = s_Unknown_threshold_type_0045fc20._20_2_; + uVar16 = s_Unknown_threshold_type_0045fc20._8_8_; + uVar15 = s_Unknown_threshold_type_0045fc20._0_8_; + *(undefined4 *)(pcVar24 + 0x10) = s_Unknown_threshold_type_0045fc20._16_4_; + *(undefined2 *)(pcVar24 + 0x14) = uVar110; + *(undefined8 *)pcVar24 = uVar15; + *(undefined8 *)(pcVar24 + 8) = uVar16; + cv::error(-5,(String *)&local_1f0, + "void cv::thresh_8u(const cv::Mat&, cv::Mat&, uchar, uchar, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0xa1); + cv::String::deallocate((String *)&local_1f0); + switch(uVar27) { + case 0: +switchD_0021c89c_caseD_0: + if (iVar26 < 1) goto LAB_0021b3d4; + lVar33 = 0; + lVar36 = 0; + iVar32 = 0; + do { + if (iVar42 + -0xf < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar33); + pbVar29 = *local_1b0 + lVar36; + do { + iVar38 = iVar38 + 0x10; + auVar54._0_8_ = + CONCAT17(-(bVar86 < pbVar29[7]) & bVar87, + CONCAT16(-(bVar86 < pbVar29[6]) & bVar87, + CONCAT15(-(bVar86 < pbVar29[5]) & bVar87, + CONCAT14(-(bVar86 < pbVar29[4]) & bVar87, + CONCAT13(-(bVar86 < pbVar29[3]) & bVar87, + CONCAT12(-(bVar86 < pbVar29[2]) & + bVar87,CONCAT11(-(bVar86 < + pbVar29[1]) & bVar87,-(bVar86 < *pbVar29) & bVar87 + ))))))); + auVar54[8] = -(bVar86 < pbVar29[8]) & bVar87; + auVar54[9] = -(bVar86 < pbVar29[9]) & bVar87; + auVar54[10] = -(bVar86 < pbVar29[10]) & bVar87; + auVar54[0xb] = -(bVar86 < pbVar29[0xb]) & bVar87; + auVar54[0xc] = -(bVar86 < pbVar29[0xc]) & bVar87; + auVar54[0xd] = -(bVar86 < pbVar29[0xd]) & bVar87; + auVar54[0xe] = -(bVar86 < pbVar29[0xe]) & bVar87; + auVar54[0xf] = -(bVar86 < pbVar29[0xf]) & bVar87; + puVar25[1] = auVar54._8_8_; + *puVar25 = auVar54._0_8_; + puVar25 = puVar25 + 2; + pbVar29 = pbVar29 + 0x10; + } while (iVar38 < iVar42 + -0xf); + } + iVar32 = iVar32 + 1; + lVar36 = lVar36 + uVar43; + lVar33 = lVar33 + uVar35; + } while (iVar32 != iVar26); + break; + case 1: +switchD_0021c89c_caseD_1: + if (iVar26 < 1) goto LAB_0021b3d4; + lVar33 = 0; + lVar36 = 0; + iVar32 = 0; + do { + if (iVar42 + -0xf < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar33); + pbVar29 = *local_1b0 + lVar36; + do { + iVar38 = iVar38 + 0x10; + auVar53._0_8_ = + CONCAT17(-(pbVar29[7] <= bVar86) & bVar87, + CONCAT16(-(pbVar29[6] <= bVar86) & bVar87, + CONCAT15(-(pbVar29[5] <= bVar86) & bVar87, + CONCAT14(-(pbVar29[4] <= bVar86) & bVar87, + CONCAT13(-(pbVar29[3] <= bVar86) & bVar87, + CONCAT12(-(pbVar29[2] <= bVar86) & + bVar87,CONCAT11(-(pbVar29[1] + <= bVar86) & + bVar87,-(* + pbVar29 <= bVar86) & bVar87))))))); + auVar53[8] = -(pbVar29[8] <= bVar86) & bVar87; + auVar53[9] = -(pbVar29[9] <= bVar86) & bVar87; + auVar53[10] = -(pbVar29[10] <= bVar86) & bVar87; + auVar53[0xb] = -(pbVar29[0xb] <= bVar86) & bVar87; + auVar53[0xc] = -(pbVar29[0xc] <= bVar86) & bVar87; + auVar53[0xd] = -(pbVar29[0xd] <= bVar86) & bVar87; + auVar53[0xe] = -(pbVar29[0xe] <= bVar86) & bVar87; + auVar53[0xf] = -(pbVar29[0xf] <= bVar86) & bVar87; + puVar25[1] = auVar53._8_8_; + *puVar25 = auVar53._0_8_; + puVar25 = puVar25 + 2; + pbVar29 = pbVar29 + 0x10; + } while (iVar38 < iVar42 + -0xf); + } + iVar32 = iVar32 + 1; + lVar36 = lVar36 + uVar43; + lVar33 = lVar33 + uVar35; + } while (iVar32 != iVar26); + break; + case 2: + goto switchD_0021c89c_caseD_2; + case 3: + goto switchD_0021c89c_caseD_3; + case 4: +switchD_0021c89c_caseD_4: + if (iVar26 < 1) goto LAB_0021b3d4; + lVar33 = 0; + lVar36 = 0; + iVar32 = 0; + do { + if (iVar42 + -0xf < 1) { + iVar38 = 0; + } + else { + iVar38 = 0; + puVar25 = (undefined8 *)((long)local_150 + lVar33); + puVar31 = (undefined8 *)(*local_1b0 + lVar36); + do { + uVar16 = puVar31[1]; + bVar95 = (byte)((ulong)uVar16 >> 8); + bVar96 = (byte)((ulong)uVar16 >> 0x10); + bVar97 = (byte)((ulong)uVar16 >> 0x18); + bVar98 = (byte)((ulong)uVar16 >> 0x20); + bVar99 = (byte)((ulong)uVar16 >> 0x28); + bVar100 = (byte)((ulong)uVar16 >> 0x30); + bVar102 = (byte)((ulong)uVar16 >> 0x38); + uVar15 = *puVar31; + bVar87 = (byte)((ulong)uVar15 >> 8); + bVar88 = (byte)((ulong)uVar15 >> 0x10); + bVar89 = (byte)((ulong)uVar15 >> 0x18); + bVar91 = (byte)((ulong)uVar15 >> 0x20); + bVar92 = (byte)((ulong)uVar15 >> 0x28); + bVar93 = (byte)((ulong)uVar15 >> 0x30); + bVar94 = (byte)((ulong)uVar15 >> 0x38); + iVar38 = iVar38 + 0x10; + auVar55._0_8_ = + CONCAT17(-(bVar94 <= bVar86) & bVar94, + CONCAT16(-(bVar93 <= bVar86) & bVar93, + CONCAT15(-(bVar92 <= bVar86) & bVar92, + CONCAT14(-(bVar91 <= bVar86) & bVar91, + CONCAT13(-(bVar89 <= bVar86) & bVar89, + CONCAT12(-(bVar88 <= bVar86) & bVar88, + CONCAT11(-(bVar87 <= bVar86) + & bVar87,-((byte) + uVar15 <= bVar86) & (byte)uVar15))))))); + auVar55[8] = -((byte)uVar16 <= bVar86) & (byte)uVar16; + auVar55[9] = -(bVar95 <= bVar86) & bVar95; + auVar55[10] = -(bVar96 <= bVar86) & bVar96; + auVar55[0xb] = -(bVar97 <= bVar86) & bVar97; + auVar55[0xc] = -(bVar98 <= bVar86) & bVar98; + auVar55[0xd] = -(bVar99 <= bVar86) & bVar99; + auVar55[0xe] = -(bVar100 <= bVar86) & bVar100; + auVar55[0xf] = -(bVar102 <= bVar86) & bVar102; + puVar25[1] = auVar55._8_8_; + *puVar25 = auVar55._0_8_; + puVar25 = puVar25 + 2; + puVar31 = puVar31 + 2; + } while (iVar38 < iVar42 + -0xf); + } + iVar32 = iVar32 + 1; + lVar36 = lVar36 + uVar43; + lVar33 = lVar33 + uVar35; + } while (iVar32 != iVar26); + break; + default: + local_200 = 0; + local_1f8 = 0; + cv::String::allocate((String *)&local_200,0); + cv::error(-5,(String *)&local_200, + "void cv::thresh_8u(const cv::Mat&, cv::Mat&, uchar, uchar, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x162); + cv::String::deallocate((String *)&local_200); + goto LAB_0021b3d4; + } + } +LAB_0021c2ec: + if (iVar38 < iVar42) { + uVar27 = (uint)((iVar42 + -4) - iVar38) >> 2; + lVar36 = 0; + lVar33 = (long)iVar38; + iVar32 = iVar38 + 4 + uVar27 * 4; + iVar50 = iVar38; + if (iVar38 < iVar42 + -3) { + iVar50 = iVar32; + } + lVar39 = 0; + iVar76 = 0; + do { + if (iVar38 < iVar42 + -3) { + pbVar29 = *local_1b0 + lVar33 + lVar39; + pRVar34 = (Range *)((long)local_150 + lVar33 + lVar36); + do { + pbVar2 = pbVar29 + 4; + RVar7 = ((Range *)&local_100)[pbVar29[1]]; + *pRVar34 = ((Range *)&local_100)[*pbVar29]; + pRVar34[1] = RVar7; + RVar7 = ((Range *)&local_100)[pbVar29[3]]; + pRVar34[2] = ((Range *)&local_100)[pbVar29[2]]; + pRVar34[3] = RVar7; + pbVar29 = pbVar2; + pRVar34 = pRVar34 + 4; + } while (pbVar2 != *local_1b0 + lVar33 + 4 + (ulong)uVar27 * 4 + lVar39); + if (iVar32 < iVar42) goto LAB_0021c39c; + } + else { +LAB_0021c39c: + lVar30 = 0; + do { + *(Range *)((long)local_150 + lVar30 + iVar50 + lVar36) = + ((Range *)&local_100)[(byte)(*local_1b0)[lVar30 + iVar50 + lVar39]]; + lVar30 = lVar30 + 1; + } while (iVar50 + (int)lVar30 < iVar42); + } + iVar76 = iVar76 + 1; + lVar39 = lVar39 + uVar43; + lVar36 = lVar36 + uVar35; + } while (iVar76 < iVar26); + } +LAB_0021b3d4: + if (local_128 != 0) { + piVar1 = (int *)(local_128 + 0x14); + do { + iVar26 = *piVar1; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar9) { + *piVar1 = iVar26 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar26 == 1) { + cv::Mat::deallocate((Mat *)&local_160); + } + } + local_128 = 0; + local_150 = (undefined8 *)0x0; + local_138 = 0; + local_140 = 0; + local_148 = 0; + if (0 < local_15c) { + iVar26 = 0; + do { + *local_120 = 0; + iVar26 = iVar26 + 1; + local_120 = local_120 + 1; + } while (iVar26 < local_15c); + } + if (local_118 != local_110) { + cv::fastFree(local_118); + } + if (local_188 != 0) { + piVar1 = (int *)(local_188 + 0x14); + do { + iVar26 = *piVar1; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar9) { + *piVar1 = iVar26 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar26 == 1) { + cv::Mat::deallocate((Mat *)&local_1c0); + } + } + local_188 = 0; + local_1b0 = (undefined1 (*) [16])0x0; + local_198 = 0; + local_1a0 = 0; + local_1a8 = 0; + if (0 < local_1bc) { + iVar26 = 0; + do { + *local_180 = 0; + iVar26 = iVar26 + 1; + local_180 = local_180 + 1; + } while (iVar26 < local_1bc); + } + if (local_178 != local_170) { + cv::fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 0021ea00 (320 bytes) name=FUN_0021ea00 + +void FUN_0021ea00(ParallelLoopBody *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f59e0; + if (*(long *)(param_1 + 0xa0) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0xa0) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 0x68)); + } + } + *(undefined8 *)(param_1 + 0xa0) = 0; + *(undefined8 *)(param_1 + 0x78) = 0; + *(undefined8 *)(param_1 + 0x90) = 0; + *(undefined8 *)(param_1 + 0x88) = 0; + *(undefined8 *)(param_1 + 0x80) = 0; + if (0 < *(int *)(param_1 + 0x6c)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0xa8); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0x6c)); + } + if (*(ParallelLoopBody **)(param_1 + 0xb0) != param_1 + 0xb8) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0xb0)); + } + if (*(long *)(param_1 + 0x40) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x40) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)(param_1 + 8)); + } + } + *(undefined8 *)(param_1 + 0x40) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + if (0 < *(int *)(param_1 + 0xc)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(param_1 + 0x48); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(param_1 + 0xc)); + } + if (*(ParallelLoopBody **)(param_1 + 0x50) != param_1 + 0x58) { + cv::fastFree(*(ParallelLoopBody **)(param_1 + 0x50)); + } + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0021eb80 (4900 bytes) name=threshold + +/* WARNING: Removing unreachable block (ram,0x0021eeac) */ +/* WARNING: Removing unreachable block (ram,0x0021eeb0) */ +/* WARNING: Removing unreachable block (ram,0x0021eeb8) */ +/* WARNING: Removing unreachable block (ram,0x0021eec0) */ +/* WARNING: Removing unreachable block (ram,0x0021fb58) */ +/* WARNING: Removing unreachable block (ram,0x0021eee8) */ +/* WARNING: Removing unreachable block (ram,0x0021eef0) */ +/* WARNING: Removing unreachable block (ram,0x0021ef04) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::threshold(cv::_InputArray const&, cv::_OutputArray const&, double, double, int) */ + +undefined1 [16] +cv::threshold(_InputArray *param_1,_OutputArray *param_2,double param_3,double param_4,int param_5) + +{ + long lVar1; + byte bVar2; + char cVar3; + bool bVar4; + int iVar5; + uint uVar6; + undefined1 auVar7 [16]; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined1 uVar14; + int iVar15; + uint uVar16; + int iVar17; + byte *pbVar18; + undefined8 *puVar19; + _InputArray *p_Var20; + int iVar21; + undefined4 *puVar22; + int *piVar23; + uint *puVar24; + byte *pbVar25; + undefined1 (*pauVar26) [16]; + Mat *pMVar27; + undefined1 (*pauVar28) [16]; + long lVar29; + ulong uVar30; + int iVar31; + uint uVar32; + int iVar33; + int iVar34; + int iVar35; + double dVar36; + double dVar37; + double dVar38; + undefined1 auVar39 [16]; + double dVar40; + undefined1 auVar41 [16]; + double dVar42; + double dVar43; + double dVar44; + double dVar45; + undefined8 local_5c0; + undefined8 local_5b8; + undefined8 local_5b0; + undefined8 local_5a8; + undefined8 local_5a0; + undefined8 local_598; + long local_590 [2]; + uint local_580; + int iStack_57c; + uint uStack_578; + int iStack_574; + undefined8 local_570; + undefined8 local_568; + undefined8 local_560; + undefined8 local_558; + undefined8 local_550; + long local_548; + uint *local_540; + undefined8 *local_538; + undefined8 local_530; + undefined8 local_528; + uint local_520; + int local_51c; + int local_518; + int local_514; + long local_510; + undefined8 uStack_508; + undefined8 local_500; + undefined8 uStack_4f8; + undefined8 local_4f0; + long lStack_4e8; + int *local_4e0; + undefined8 *local_4d8; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 uStack_4b8; + undefined8 local_4b0; + undefined8 uStack_4a8; + undefined8 local_4a0; + undefined8 uStack_498; + undefined8 local_490; + long lStack_488; + undefined8 *local_480; + undefined8 *local_478; + undefined8 local_470; + undefined8 uStack_468; + uint local_460; + int local_45c; + int local_458; + int local_454; + long local_450; + undefined8 local_448; + undefined8 local_440; + undefined8 local_438; + undefined8 local_430; + long local_428; + int *local_420; + undefined8 *local_418; + undefined8 local_410; + undefined8 local_408; + undefined8 local_400; + undefined8 uStack_3f8; + int local_3f0; + int local_3ec; + long local_3e8; + undefined8 uStack_3e0; + undefined8 local_3d8; + undefined8 uStack_3d0; + undefined8 local_3c8; + long lStack_3c0; + int *local_3b8; + undefined8 *local_3b0; + undefined8 local_3a8; + undefined8 local_3a0; + uint local_398; + int local_394; + undefined4 local_390; + undefined4 local_38c; + undefined8 local_388; + undefined8 uStack_380; + undefined8 local_378; + undefined8 uStack_370; + undefined8 local_368; + long lStack_360; + undefined4 *local_358; + undefined8 *local_350; + undefined8 local_348; + undefined8 local_340; + double local_338; + double dStack_330; + uint local_328; + undefined1 auStack_210 [480]; + undefined8 auStack_30 [4]; + undefined1 local_10 [16]; + + iVar15 = _InputArray::kind(param_1); + if (iVar15 == 0x10000) { + pMVar27 = *(Mat **)(param_1 + 8); + local_420 = &local_458; + local_418 = &local_410; + local_460 = *(uint *)pMVar27; + local_45c = *(int *)(pMVar27 + 4); + local_458 = *(int *)(pMVar27 + 8); + local_454 = *(int *)(pMVar27 + 0xc); + local_450 = *(long *)(pMVar27 + 0x10); + local_448 = *(undefined8 *)(pMVar27 + 0x18); + local_440 = *(undefined8 *)(pMVar27 + 0x20); + local_438 = *(undefined8 *)(pMVar27 + 0x28); + local_430 = *(undefined8 *)(pMVar27 + 0x30); + local_428 = *(long *)(pMVar27 + 0x38); + local_408 = 0; + local_410 = 0; + if (local_428 != 0) { + piVar23 = (int *)(local_428 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = *piVar23 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar27 + 4)) { + local_45c = 0; + Mat::copySize((Mat *)&local_460,pMVar27); + goto LAB_0021ebd4; + } + local_410 = **(undefined8 **)(pMVar27 + 0x48); + local_408 = (*(undefined8 **)(pMVar27 + 0x48))[1]; + if ((param_5 & 0xfffffff8U) == 0x18) goto LAB_0021f87c; +LAB_0021ebe4: + if ((param_5 & 0xfffffff8U) == 8) { + uVar16 = 0; + if ((local_460 & 0xfff) != 0) { + local_5b0 = 0; + local_5a8 = 0; + puVar19 = (undefined8 *)String::allocate((String *)&local_5b0,0x15); + uVar14 = DAT_0045fcd4; + uVar9 = _LAB_0045fcc8; + uVar8 = DAT_0045fcc0; + *(undefined4 *)(puVar19 + 2) = DAT_0045fcd0; + *(undefined1 *)((long)puVar19 + 0x14) = uVar14; + *puVar19 = uVar8; + puVar19[1] = uVar9; + error(-0xd7,(String *)&local_5b0, + "double cv::threshold(cv::InputArray, cv::OutputArray, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x4ae); + String::deallocate((String *)&local_5b0); + uVar16 = local_460 & 0xfff; + } + uVar8 = local_410; + iVar33 = local_420[1]; + iVar15 = *local_420; + if ((local_460 >> 0xe & 1) == 0) { + memset(&local_400,local_460 & 0x4000,0x400); + iVar17 = iVar33; + iVar34 = iVar15; + if (0 < iVar15) { + iVar35 = (int)uVar8; + goto LAB_0021f958; + } + } + else { + iVar35 = iVar33 * iVar15; + memset(&local_400,0,0x400); + iVar17 = iVar35; + iVar34 = 1; +LAB_0021f958: + uVar32 = iVar17 - 4U >> 2; + iVar31 = 0; + iVar21 = (uVar32 + 1) * 4; + if (iVar17 + -3 < 1) { + iVar21 = 0; + } + lVar29 = local_450; + do { + if (0 < iVar17 + -3) { + pbVar18 = (byte *)(lVar29 + 1); + do { + pbVar25 = pbVar18 + 4; + bVar2 = *pbVar18; + *(int *)((long)&local_400 + (long)(int)(uint)pbVar18[-1] * 4) = + *(int *)((long)&local_400 + (long)(int)(uint)pbVar18[-1] * 4) + 1; + *(int *)((long)&local_400 + (long)(int)(uint)bVar2 * 4) = + *(int *)((long)&local_400 + (long)(int)(uint)bVar2 * 4) + 1; + bVar2 = pbVar18[2]; + *(int *)((long)&local_400 + (long)(int)(uint)pbVar18[1] * 4) = + *(int *)((long)&local_400 + (long)(int)(uint)pbVar18[1] * 4) + 1; + *(int *)((long)&local_400 + (long)(int)(uint)bVar2 * 4) = + *(int *)((long)&local_400 + (long)(int)(uint)bVar2 * 4) + 1; + pbVar18 = pbVar25; + } while (pbVar25 != (byte *)(lVar29 + (ulong)uVar32 * 4 + 5)); + } + pbVar18 = (byte *)(lVar29 + iVar21); + if (iVar21 < iVar17) { + do { + pbVar25 = pbVar18 + 1; + *(int *)((long)&local_400 + (long)(int)(uint)*pbVar18 * 4) = + *(int *)((long)&local_400 + (long)(int)(uint)*pbVar18 * 4) + 1; + pbVar18 = pbVar25; + } while (pbVar25 != + (byte *)(lVar29 + (long)iVar21 + 1 + (ulong)(uint)((iVar17 + -1) - iVar21))); + } + iVar31 = iVar31 + 1; + lVar29 = lVar29 + iVar35; + } while (iVar31 < iVar34); + } + lVar29 = 0; + dVar38 = 0.0; + dVar45 = 1.0 / (double)(iVar17 * iVar34); + do { + lVar1 = lVar29 * 4; + iVar17 = (int)lVar29; + lVar29 = lVar29 + 1; + dVar38 = dVar38 + (double)*(int *)((long)&local_400 + lVar1) * (double)iVar17; + } while (lVar29 != 0x100); + dVar43 = 0.0; + lVar29 = 0; + param_3 = 0.0; + dVar42 = 0.0; + dVar40 = 0.0; + do { + dVar40 = dVar40 * dVar43; + dVar44 = dVar45 * (double)*(int *)((long)&local_400 + lVar29 * 4); + dVar43 = dVar43 + dVar44; + dVar36 = 1.0 - dVar43; + dVar37 = dVar36; + if (dVar43 <= dVar36) { + dVar37 = dVar43; + } + if (DAT_00220018 <= dVar37) { + dVar37 = dVar36; + if (dVar36 <= dVar43) { + dVar37 = dVar43; + } + if (dVar37 <= DAT_00220020) { + dVar40 = (dVar40 + (double)(int)lVar29 * dVar44) / dVar43; + dVar37 = dVar40 - (dVar45 * dVar38 - dVar40 * dVar43) / dVar36; + dVar37 = dVar37 * dVar43 * dVar36 * dVar37; + if (dVar42 < dVar37) { + param_3 = (double)(int)lVar29; + dVar42 = dVar37; + } + } + } + lVar29 = lVar29 + 1; + } while (lVar29 != 0x100); + } + else { + if ((param_5 & 0xfffffff8U) != 0x10) goto LAB_0021ebf4; + uVar16 = 0; + if ((local_460 & 0xfff) != 0) { + local_5a0 = 0; + local_598 = 0; + puVar19 = (undefined8 *)String::allocate((String *)&local_5a0,0x15); + uVar14 = DAT_0045fcd4; + uVar9 = _LAB_0045fcc8; + uVar8 = DAT_0045fcc0; + *(undefined4 *)(puVar19 + 2) = DAT_0045fcd0; + *(undefined1 *)((long)puVar19 + 0x14) = uVar14; + *puVar19 = uVar8; + puVar19[1] = uVar9; + error(-0xd7,(String *)&local_5a0, + "double cv::threshold(cv::InputArray, cv::OutputArray, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x4b3); + String::deallocate((String *)&local_5a0); + uVar16 = local_460 & 0xfff; + } + uVar8 = local_410; + iVar33 = local_420[1]; + iVar15 = *local_420; + if ((local_460 >> 0xe & 1) == 0) { + memset((undefined1 (*) [16])&local_400,local_460 & 0x4000,0x400); + if (0 < iVar15) { + iVar17 = (int)uVar8; + iVar34 = iVar33; + iVar35 = iVar15; + goto LAB_0021f410; + } + } + else { + iVar17 = iVar33 * iVar15; + memset((undefined1 (*) [16])&local_400,0,0x400); + iVar35 = 1; + iVar34 = iVar17; +LAB_0021f410: + uVar32 = iVar34 - 4U >> 2; + iVar31 = 0; + iVar21 = (uVar32 + 1) * 4; + if (iVar34 + -3 < 1) { + iVar21 = 0; + } + lVar29 = local_450; + do { + if (0 < iVar34 + -3) { + pbVar18 = (byte *)(lVar29 + 1); + do { + pbVar25 = pbVar18 + 4; + bVar2 = *pbVar18; + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)pbVar18[-1] * 4) = + *(int *)((long)*(undefined1 (*) [16])&local_400 + + (long)(int)(uint)pbVar18[-1] * 4) + 1; + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)bVar2 * 4) = + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)bVar2 * 4) + 1 + ; + bVar2 = pbVar18[2]; + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)pbVar18[1] * 4) = + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)pbVar18[1] * 4 + ) + 1; + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)bVar2 * 4) = + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)bVar2 * 4) + 1 + ; + pbVar18 = pbVar25; + } while (pbVar25 != (byte *)(lVar29 + (ulong)uVar32 * 4 + 5)); + } + pbVar18 = (byte *)(lVar29 + iVar21); + if (iVar21 < iVar34) { + do { + pbVar25 = pbVar18 + 1; + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)*pbVar18 * 4) = + *(int *)((long)*(undefined1 (*) [16])&local_400 + (long)(int)(uint)*pbVar18 * 4) + + 1; + pbVar18 = pbVar25; + } while (pbVar25 != + (byte *)(lVar29 + (long)iVar21 + 1 + (ulong)(uint)((iVar34 + -1) - iVar21))); + } + iVar31 = iVar31 + 1; + lVar29 = lVar29 + iVar17; + } while (iVar31 < iVar35); + } + lVar29 = 0; + do { + if (0 < *(int *)((long)*(undefined1 (*) [16])&local_400 + lVar29 * 4)) { + iVar17 = (int)lVar29 - (uint)((int)lVar29 != 0); + goto LAB_0021f514; + } + lVar29 = lVar29 + 1; + } while (lVar29 != 0x100); + iVar17 = 0; +LAB_0021f514: + iVar34 = 0xff; + piVar23 = (int *)register0x00000008; + do { + piVar23 = piVar23 + -1; + if (0 < *piVar23) { + if (iVar34 != 0xff) { + iVar34 = iVar34 + 1; + } + goto LAB_0021f540; + } + iVar34 = iVar34 + -1; + } while (iVar34 != 0); + iVar34 = 1; +LAB_0021f540: + lVar29 = 0; + iVar31 = 0; + iVar35 = 0; + do { + iVar21 = *(int *)((long)*(undefined1 (*) [16])&local_400 + lVar29 * 4); + if (iVar35 < iVar21) { + iVar35 = iVar21; + iVar31 = (int)lVar29; + } + lVar29 = lVar29 + 1; + } while (lVar29 != 0x100); + if (iVar31 - iVar17 < iVar34 - iVar31) { + pauVar26 = &local_10; + pauVar28 = (undefined1 (*) [16])&local_400; + do { + auVar39._8_8_ = _UNK_00220038; + auVar39._0_8_ = _DAT_00220030; + auVar41 = a64_TBL(ZEXT816(0),*pauVar26,auVar39); + auVar7._8_8_ = _UNK_00220038; + auVar7._0_8_ = _DAT_00220030; + auVar39 = a64_TBL(ZEXT816(0),*pauVar28,auVar7); + *(long *)((long)*pauVar28 + 8) = auVar41._8_8_; + *(long *)*pauVar28 = auVar41._0_8_; + *(long *)(*pauVar26 + 8) = auVar39._8_8_; + *(long *)*pauVar26 = auVar39._0_8_; + pauVar26 = pauVar26 + -1; + pauVar28 = pauVar28 + 1; + } while (pauVar26 != (undefined1 (*) [16])auStack_210); + iVar31 = 0xff - iVar31; + iVar5 = (0xff - iVar34) - iVar31; + iVar21 = 0x100 - iVar34; + dVar38 = (double)(0xff - iVar34); + if (iVar21 <= iVar31) { + bVar4 = true; + goto LAB_0021f5e4; + } + param_3 = dVar38 - 1.0; + } + else { + iVar21 = iVar17 + 1; + iVar5 = iVar17 - iVar31; + bVar4 = false; + dVar38 = (double)iVar17; + if (iVar31 < iVar21) { + param_3 = dVar38 - 1.0; + goto LAB_0021ec0c; + } +LAB_0021f5e4: + dVar45 = 0.0; + do { + dVar42 = (double)iVar5 * + (double)*(int *)((long)*(undefined1 (*) [16])&local_400 + (long)iVar21 * 4) + + (double)iVar21 * (double)iVar35; + dVar40 = (double)iVar21; + if (dVar42 <= dVar45) { + dVar42 = dVar45; + dVar40 = dVar38; + } + dVar38 = dVar40; + iVar21 = iVar21 + 1; + dVar45 = dVar42; + } while (iVar21 <= iVar31); + param_3 = dVar38 - 1.0; + if (!bVar4) goto LAB_0021ec0c; + } + param_3 = DAT_00220040 - param_3; + } + } + else { + _InputArray::getMat_((int)param_1); +LAB_0021ebd4: + if ((param_5 & 0xfffffff8U) != 0x18) goto LAB_0021ebe4; +LAB_0021f87c: + local_5c0 = 0; + local_5b8 = 0; + puVar19 = (undefined8 *)String::allocate((String *)&local_5c0,0x39); + uVar14 = LAB_0045fcb8; + uVar13 = DAT_0045fca8; + uVar12 = DAT_0045fca0; + uVar11 = DAT_0045fc98; + uVar10 = DAT_0045fc90; + uVar9 = DAT_0045fc88; + uVar8 = DAT_0045fc80; + puVar19[6] = DAT_0045fcb0; + *(undefined1 *)(puVar19 + 7) = uVar14; + *puVar19 = uVar8; + puVar19[1] = uVar9; + puVar19[2] = uVar10; + puVar19[3] = uVar11; + puVar19[4] = uVar12; + puVar19[5] = uVar13; + error(-0xd7,(String *)&local_5c0, + "double cv::threshold(cv::InputArray, cv::OutputArray, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x4ab); + String::deallocate((String *)&local_5c0); +LAB_0021ebf4: + iVar15 = *local_420; + uVar16 = local_460 & 0xfff; + iVar33 = local_420[1]; + } +LAB_0021ec0c: + uVar32 = param_5 & 7; + local_400._4_4_ = iVar15; + local_400._0_4_ = iVar33; + _OutputArray::create(param_2,(ParallelLoopBody *)&local_400,uVar16,0xffffffff,0,0); + iVar15 = _InputArray::kind((_InputArray *)param_2); + if (iVar15 != 0x10000) { + _InputArray::getMat_((int)param_2); +LAB_0021ec54: + uVar16 = local_460 & 7; + if (uVar16 != 0) goto LAB_0021ec60; +LAB_0021f744: + uVar6 = (int)param_3 - (uint)(param_3 < (double)(int)param_3); + param_3 = (double)(int)uVar6; + lVar29 = lrint(param_4); + uVar16 = uVar6; + if (uVar32 != 2) { + uVar16 = (uint)lVar29; + } + if (0xff < uVar16) { + bVar2 = -(0 < (int)uVar16); + uVar16 = (uint)bVar2; + if (0xfe < uVar6) goto LAB_0021f780; + goto LAB_0021fb64; + } + bVar2 = (byte)uVar16; + uVar16 = uVar16 & 0xff; + if (uVar6 < 0xff) goto LAB_0021fb64; +LAB_0021f780: + if (uVar32 < 2) { + if (uVar32 == 0) { + dVar38 = 0.0; + if ((int)uVar6 < 0xff) { + dVar38 = (double)bVar2; + } + } + else { + if (0xfe < (int)uVar6) goto LAB_0021f7b0; + dVar38 = 0.0; + } + goto LAB_0021fd98; + } + if ((-1 < (int)uVar6) || ((uVar32 - 2 & 0xfffffffd) != 0)) { + if (0xfe < (int)uVar6 && uVar32 == 3) { +LAB_0021f7b0: + if (uVar32 == 1) { + dVar38 = (double)bVar2; + goto LAB_0021fd98; + } + goto LAB_0021fdf8; + } + goto LAB_0021fe50; + } +LAB_0021fdf8: + dVar38 = 0.0; + goto LAB_0021fd98; + } + pMVar27 = *(Mat **)(param_2 + 8); + local_540 = &uStack_578; + local_538 = &local_530; + local_580 = *(uint *)pMVar27; + iStack_57c = *(int *)(pMVar27 + 4); + uStack_578 = *(uint *)(pMVar27 + 8); + iStack_574 = *(int *)(pMVar27 + 0xc); + local_570 = *(undefined8 *)(pMVar27 + 0x10); + local_568 = *(undefined8 *)(pMVar27 + 0x18); + local_560 = *(undefined8 *)(pMVar27 + 0x20); + local_558 = *(undefined8 *)(pMVar27 + 0x28); + local_550 = *(undefined8 *)(pMVar27 + 0x30); + local_548 = *(long *)(pMVar27 + 0x38); + local_528 = 0; + local_530 = 0; + if (local_548 != 0) { + piVar23 = (int *)(local_548 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = *piVar23 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar27 + 4)) { + iStack_57c = 0; + Mat::copySize((Mat *)&local_580,pMVar27); + goto LAB_0021ec54; + } + local_530 = **(undefined8 **)(pMVar27 + 0x48); + local_528 = (*(undefined8 **)(pMVar27 + 0x48))[1]; + uVar16 = local_460 & 7; + if (uVar16 == 0) goto LAB_0021f744; +LAB_0021ec60: + if (uVar16 == 3) { + iVar33 = (int)param_3 - (uint)(param_3 < (double)(int)param_3); + param_3 = (double)iVar33; + lVar29 = lrint(param_4); + iVar15 = iVar33; + if (uVar32 != 2) { + iVar15 = (int)lVar29; + } + if (iVar15 + 0x8000U < 0x10000) { + uVar16 = (uint)(short)iVar15; + } + else if (iVar15 < 1) { + uVar16 = 0xffff8000; + } + else { + uVar16 = 0x7fff; + } + if (0xfffe < iVar33 + 0x8000U) { + if (uVar32 < 2) { + if (uVar32 == 0) { + dVar38 = 0.0; + if (iVar33 < 0x7fff) goto LAB_0021fe14; + } + else { + if (0x7ffe < iVar33) goto LAB_0021fdf0; + dVar38 = 0.0; + } + } + else if ((-0x8001 < iVar33) || (dVar38 = 0.0, (uVar32 - 2 & 0xfffffffd) != 0)) { + if (iVar33 < 0x7fff || uVar32 != 3) { +LAB_0021fe50: + local_3f0 = 0; + uStack_3f8 = &local_580; + local_400 = (undefined **)CONCAT44(local_400._4_4_,0x2010000); + local_3ec = local_3f0; + Mat::copyTo((Mat *)&local_460,(_OutputArray *)&local_400); + goto LAB_0021f29c; + } +LAB_0021fdf0: + if (uVar32 != 1) goto LAB_0021fdf8; +LAB_0021fe14: + dVar38 = (double)(int)uVar16; + } +LAB_0021fd98: + uStack_3f8 = (uint *)&local_4c0; + local_400 = (undefined **)CONCAT44(local_400._4_4_,0xc1020006); + local_3f0 = 1; + local_3ec = 1; + local_4c0 = dVar38; + p_Var20 = (_InputArray *)noArray(); + Mat::setTo((Mat *)&local_580,(_InputArray *)&local_400,p_Var20); + goto LAB_0021f29c; + } +LAB_0021fb64: + param_4 = (double)(int)uVar16; + } + else if (uVar16 != 5) { + local_590[0] = 0; + local_590[1] = 0; + String::allocate((String *)local_590,0); + error(-0xd2,(String *)local_590, + "double cv::threshold(cv::InputArray, cv::OutputArray, double, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x4f3); + String::deallocate((String *)local_590); + } + local_4e0 = &local_518; + local_4d8 = &local_4d0; + local_590[0] = (ulong)uStack_578 << 0x20; + local_51c = local_45c; + local_518 = local_458; + local_514 = local_454; + local_510 = local_450; + uStack_508 = local_448; + local_500 = local_440; + uStack_4f8 = local_438; + local_4f0 = local_430; + lStack_4e8 = local_428; + local_4c8 = 0; + local_4d0 = 0; + if (local_428 != 0) { + piVar23 = (int *)(local_428 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = *piVar23 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + local_520 = local_460; + if (local_45c < 3) { + local_4d0 = *local_418; + local_4c8 = local_418[1]; + } + else { + local_51c = 0; + Mat::copySize((Mat *)&local_520,(Mat *)&local_460); + } + local_4c0 = (double)CONCAT44(iStack_57c,local_580); + uStack_4b8 = CONCAT44(iStack_574,uStack_578); + local_478 = &local_470; + local_480 = &uStack_4b8; + uStack_468 = 0; + local_470 = 0; + local_4b0 = local_570; + uStack_4a8 = local_568; + local_4a0 = local_560; + uStack_498 = local_558; + local_490 = local_550; + lStack_488 = local_548; + if (local_548 != 0) { + piVar23 = (int *)(local_548 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = *piVar23 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iStack_57c < 3) { + local_470 = *local_538; + uStack_468 = local_538[1]; + } + else { + local_4c0 = (double)(ulong)local_580; + Mat::copySize((Mat *)&local_4c0,(Mat *)&local_580); + } + local_3b8 = &local_3f0; + local_3b0 = &local_3a8; + local_358 = &local_390; + local_350 = &local_348; + local_400 = &PTR_FUN_004f59e0; + local_3f0 = 0; + local_3ec = 0; + local_3c8 = 0; + local_3a0 = 0; + local_3a8 = 0; + local_398 = 0x42ff0000; + local_394 = 0; + local_390 = 0; + local_38c = 0; + local_388 = 0; + uStack_380 = 0; + local_378 = 0; + uStack_370 = 0; + local_368 = 0; + lStack_360 = 0; + local_340 = 0; + local_348 = 0; + if (lStack_4e8 != 0) { + piVar23 = (int *)(lStack_4e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = *piVar23 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + lStack_3c0 = 0; + local_3e8 = 0; + uStack_3d0 = 0; + local_3d8 = 0; + uStack_3e0 = 0; + if (local_51c < 3) { + uStack_3f8 = (uint *)CONCAT44(local_51c,local_520); + local_3f0 = local_518; + local_3a8 = *local_4d8; + local_3ec = local_514; + local_3a0 = local_4d8[1]; + } + else { + uStack_3f8 = (uint *)(ulong)local_520; + Mat::copySize((Mat *)&uStack_3f8,(Mat *)&local_520); + } + uStack_3e0 = uStack_508; + local_3e8 = local_510; + uStack_3d0 = uStack_4f8; + local_3d8 = local_500; + lStack_3c0 = lStack_4e8; + local_3c8 = local_4f0; + if (lStack_488 != 0) { + piVar23 = (int *)(lStack_488 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = *piVar23 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_360 != 0) { + piVar23 = (int *)(lStack_360 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_398); + } + } + lStack_360 = 0; + local_388 = 0; + uStack_370 = 0; + local_378 = 0; + uStack_380 = 0; + if (local_394 < 1) { +LAB_0021f008: + local_398 = (uint)local_4c0; + if (2 < local_4c0._4_4_) goto LAB_0021f648; + local_394 = local_4c0._4_4_; + local_390 = (undefined4)uStack_4b8; + local_38c = uStack_4b8._4_4_; + *local_350 = *local_478; + local_350[1] = local_478[1]; + } + else { + iVar15 = 0; + puVar22 = local_358; + do { + *puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = puVar22 + 1; + } while (iVar15 < local_394); + if (local_394 < 3) goto LAB_0021f008; +LAB_0021f648: + local_398 = (uint)local_4c0; + Mat::copySize((Mat *)&local_398,(Mat *)&local_4c0); + } + uStack_380 = uStack_4a8; + local_388 = local_4b0; + uStack_370 = uStack_498; + local_378 = local_4a0; + lStack_360 = lStack_488; + local_368 = local_490; + if (iStack_57c < 3) { + uVar30 = (long)iStack_574 * (long)(int)uStack_578; + } + else { + lVar29 = 0; + uVar30 = 1; + do { + puVar24 = local_540 + lVar29; + lVar29 = lVar29 + 1; + uVar30 = uVar30 * (long)(int)*puVar24; + } while ((int)lVar29 < iStack_57c); + } + local_338 = param_3; + dStack_330 = param_4; + local_328 = uVar32; + parallel_for_((Range *)local_590,(ParallelLoopBody *)&local_400,(double)uVar30 * DAT_00220048); + local_400 = &PTR_FUN_004f59e0; + if (lStack_360 != 0) { + piVar23 = (int *)(lStack_360 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_398); + } + } + lStack_360 = 0; + local_388 = 0; + uStack_370 = 0; + local_378 = 0; + uStack_380 = 0; + if (0 < local_394) { + iVar15 = 0; + puVar22 = local_358; + do { + *puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = puVar22 + 1; + } while (iVar15 < local_394); + } + if (local_350 != &local_348) { + fastFree(local_350); + } + if (lStack_3c0 != 0) { + piVar23 = (int *)(lStack_3c0 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&uStack_3f8); + } + } + lStack_3c0 = 0; + local_3e8 = 0; + uStack_3d0 = 0; + local_3d8 = 0; + uStack_3e0 = 0; + if (0 < uStack_3f8._4_4_) { + iVar15 = 0; + piVar23 = local_3b8; + do { + *piVar23 = 0; + iVar15 = iVar15 + 1; + piVar23 = piVar23 + 1; + } while (iVar15 < uStack_3f8._4_4_); + } + if (local_3b0 != &local_3a8) { + fastFree(local_3b0); + } + ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_400); + if (lStack_488 != 0) { + piVar23 = (int *)(lStack_488 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_4c0); + } + } + lStack_488 = 0; + local_4b0 = 0; + uStack_498 = 0; + local_4a0 = 0; + uStack_4a8 = 0; + if (0 < local_4c0._4_4_) { + iVar15 = 0; + puVar19 = local_480; + do { + *(undefined4 *)puVar19 = 0; + iVar15 = iVar15 + 1; + puVar19 = (undefined8 *)((long)puVar19 + 4); + } while (iVar15 < local_4c0._4_4_); + } + if (local_478 != &local_470) { + fastFree(local_478); + } + if (lStack_4e8 != 0) { + piVar23 = (int *)(lStack_4e8 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_520); + } + } + lStack_4e8 = 0; + local_510 = 0; + uStack_4f8 = 0; + local_500 = 0; + uStack_508 = 0; + if (0 < local_51c) { + iVar15 = 0; + piVar23 = local_4e0; + do { + *piVar23 = 0; + iVar15 = iVar15 + 1; + piVar23 = piVar23 + 1; + } while (iVar15 < local_51c); + } + if (local_4d8 != &local_4d0) { + fastFree(local_4d8); + } +LAB_0021f29c: + if (local_548 != 0) { + piVar23 = (int *)(local_548 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_580); + } + } + local_548 = 0; + local_570 = 0; + local_558 = 0; + local_560 = 0; + local_568 = 0; + if (0 < iStack_57c) { + iVar15 = 0; + puVar24 = local_540; + do { + *puVar24 = 0; + iVar15 = iVar15 + 1; + puVar24 = puVar24 + 1; + } while (iVar15 < iStack_57c); + } + if (local_538 != &local_530) { + fastFree(local_538); + } + if (local_428 != 0) { + piVar23 = (int *)(local_428 + 0x14); + do { + iVar15 = *piVar23; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar4) { + *piVar23 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_460); + } + } + local_428 = 0; + local_450 = 0; + local_438 = 0; + local_440 = 0; + local_448 = 0; + if (0 < local_45c) { + iVar15 = 0; + piVar23 = local_420; + do { + *piVar23 = 0; + iVar15 = iVar15 + 1; + piVar23 = piVar23 + 1; + } while (iVar15 < local_45c); + } + if (local_418 != &local_410) { + fastFree(local_418); + } + auVar41._8_8_ = 0; + auVar41._0_8_ = param_3; + return auVar41; +} + + +================================================================== + +### FUNC 00220050 (2668 bytes) name=adaptiveThreshold + +/* WARNING: Removing unreachable block (ram,0x002201b0) */ +/* WARNING: Removing unreachable block (ram,0x002201b4) */ +/* WARNING: Removing unreachable block (ram,0x002201bc) */ +/* WARNING: Removing unreachable block (ram,0x002201c4) */ +/* WARNING: Removing unreachable block (ram,0x00220a64) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::adaptiveThreshold(cv::_InputArray const&, cv::_OutputArray const&, double, int, int, int, + double) */ + +void cv::adaptiveThreshold + (_InputArray *param_1,_OutputArray *param_2,double param_3,int param_4,int param_5, + int param_6,double param_7) + +{ + int iVar1; + Scalar_ SVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined1 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + int iVar11; + int iVar12; + uint uVar13; + char *pcVar14; + long lVar15; + undefined8 *puVar16; + Scalar_ *pSVar17; + long lVar18; + undefined4 *puVar19; + int *piVar20; + Mat *pMVar21; + long lVar22; + long lVar23; + long lVar24; + int iVar25; + undefined8 local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + undefined8 local_440; + undefined8 local_438; + Mat *local_430; + int local_428; + int local_424; + uint local_420; + int local_41c; + undefined4 local_418; + undefined4 local_414; + long local_410; + undefined8 uStack_408; + undefined8 local_400; + undefined8 uStack_3f8; + undefined8 local_3f0; + long lStack_3e8; + undefined4 *local_3e0; + long *local_3d8; + long local_3d0; + long local_3c8; + undefined8 local_3c0; + undefined8 uStack_3b8; + long local_3b0; + undefined8 uStack_3a8; + undefined8 local_3a0; + undefined8 uStack_398; + undefined8 local_390; + long lStack_388; + undefined8 *local_380; + long *local_378; + long local_370; + long lStack_368; + uint local_360; + int local_35c; + int local_358; + undefined4 local_354; + long local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + long local_328; + int *local_320; + long *local_318; + long local_310; + long local_308; + undefined8 local_300; + Mat *local_2f8; + undefined8 local_2f0; + undefined8 uStack_2e8; + + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar21 = *(Mat **)(param_1 + 8); + local_320 = &local_358; + local_318 = &local_310; + local_360 = *(uint *)pMVar21; + local_35c = *(int *)(pMVar21 + 4); + local_358 = *(int *)(pMVar21 + 8); + local_354 = *(undefined4 *)(pMVar21 + 0xc); + local_350 = *(long *)(pMVar21 + 0x10); + local_348 = *(undefined8 *)(pMVar21 + 0x18); + local_340 = *(undefined8 *)(pMVar21 + 0x20); + local_338 = *(undefined8 *)(pMVar21 + 0x28); + local_330 = *(undefined8 *)(pMVar21 + 0x30); + local_328 = *(long *)(pMVar21 + 0x38); + local_308 = 0; + local_310 = 0; + if (local_328 != 0) { + piVar20 = (int *)(local_328 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = *piVar20 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar21 + 4) < 3) { + local_310 = **(long **)(pMVar21 + 0x48); + local_308 = (*(long **)(pMVar21 + 0x48))[1]; + } + else { + local_35c = 0; + Mat::copySize((Mat *)&local_360,pMVar21); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((local_360 & 0xfff) != 0) { + local_468 = 0; + local_460 = 0; + puVar16 = (undefined8 *)String::allocate((String *)&local_468,0x15); + uVar7 = DAT_0045fcd4; + uVar6 = _LAB_0045fcc8; + uVar5 = DAT_0045fcc0; + *(undefined4 *)(puVar16 + 2) = DAT_0045fcd0; + *(undefined1 *)((long)puVar16 + 0x14) = uVar7; + *puVar16 = uVar5; + puVar16[1] = uVar6; + error(-0xd7,(String *)&local_468, + "void cv::adaptiveThreshold(cv::InputArray, cv::OutputArray, double, int, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x500); + String::deallocate((String *)&local_468); + } + if ((param_6 % 2 != 1) || (param_6 < 2)) { + local_458 = 0; + local_450 = 0; + pcVar14 = (char *)String::allocate((String *)&local_458,0x23); + cVar3 = s_blockSize___2____1____blockSize_>_0045fcd8[0x22]; + uVar9 = s_blockSize___2____1____blockSize_>_0045fcd8._24_8_; + uVar8 = s_blockSize___2____1____blockSize_>_0045fcd8._16_8_; + uVar6 = s_blockSize___2____1____blockSize_>_0045fcd8._8_8_; + uVar5 = s_blockSize___2____1____blockSize_>_0045fcd8._0_8_; + *(undefined2 *)(pcVar14 + 0x20) = s_blockSize___2____1____blockSize_>_0045fcd8._32_2_; + pcVar14[0x22] = cVar3; + *(undefined8 *)pcVar14 = uVar5; + *(undefined8 *)(pcVar14 + 8) = uVar6; + *(undefined8 *)(pcVar14 + 0x10) = uVar8; + *(undefined8 *)(pcVar14 + 0x18) = uVar9; + error(-0xd7,(String *)&local_458, + "void cv::adaptiveThreshold(cv::InputArray, cv::OutputArray, double, int, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x501); + String::deallocate((String *)&local_458); + } + iVar11 = local_320[1]; + iVar25 = *local_320; + local_300 = CONCAT44(iVar25,iVar11); + _OutputArray::create(param_2,(Scalar_ *)&local_300,local_360 & 0xfff,0xffffffff,0,0); + iVar12 = _InputArray::kind((_InputArray *)param_2); + if (iVar12 == 0x10000) { + pMVar21 = *(Mat **)(param_2 + 8); + local_3e0 = &local_418; + local_3d8 = &local_3d0; + local_420 = *(uint *)pMVar21; + local_41c = *(int *)(pMVar21 + 4); + local_418 = *(undefined4 *)(pMVar21 + 8); + local_414 = *(undefined4 *)(pMVar21 + 0xc); + local_410 = *(long *)(pMVar21 + 0x10); + uStack_408 = *(undefined8 *)(pMVar21 + 0x18); + local_400 = *(undefined8 *)(pMVar21 + 0x20); + uStack_3f8 = *(undefined8 *)(pMVar21 + 0x28); + local_3f0 = *(undefined8 *)(pMVar21 + 0x30); + lStack_3e8 = *(long *)(pMVar21 + 0x38); + local_3c8 = 0; + local_3d0 = 0; + if (lStack_3e8 != 0) { + piVar20 = (int *)(lStack_3e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = *piVar20 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar21 + 4) < 3) { + local_3d0 = **(long **)(pMVar21 + 0x48); + local_3c8 = (*(long **)(pMVar21 + 0x48))[1]; + uVar5 = _DAT_00220b70; + } + else { + local_41c = 0; + Mat::copySize((Mat *)&local_420,pMVar21); + uVar5 = _DAT_00220b70; + } + } + else { + _InputArray::getMat_((int)param_2); + uVar5 = _DAT_00220b70; + } + _DAT_00220b70 = uVar5; + if (param_3 < 0.0) { + local_2f8 = (Mat *)0x0; + local_300 = 0; + uStack_2e8 = 0; + local_2f0 = 0; + Mat::operator=((Mat *)&local_420,(Scalar_ *)&local_300); + if (lStack_3e8 != 0) { + piVar20 = (int *)(lStack_3e8 + 0x14); + do { + iVar11 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_420); + } + } + lStack_3e8 = 0; + local_410 = 0; + uStack_3f8 = 0; + local_400 = 0; + uStack_408 = 0; + if (0 < local_41c) { + iVar11 = 0; + puVar19 = local_3e0; + do { + *puVar19 = 0; + iVar11 = iVar11 + 1; + puVar19 = puVar19 + 1; + } while (iVar11 < local_41c); + } + if (local_3d8 != &local_3d0) { + fastFree(local_3d8); + } + if (local_328 != 0) { + piVar20 = (int *)(local_328 + 0x14); + do { + iVar11 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_360); + } + } + if (0 < local_35c) { + iVar11 = 0; + piVar20 = local_320; + do { + *piVar20 = 0; + iVar11 = iVar11 + 1; + piVar20 = piVar20 + 1; + } while (iVar11 < local_35c); + } + goto LAB_00220524; + } + lStack_368 = 0; + local_370 = 0; + local_3b0 = 0; + uStack_3a8 = 0; + local_3a0 = 0; + uStack_398 = 0; + local_390 = 0; + lStack_388 = 0; + local_3c0 = uVar5; + uStack_3b8 = _UNK_00220b78; + local_380 = &uStack_3b8; + local_378 = &local_370; + if (local_350 != local_410) { + if (lStack_3e8 != 0) { + piVar20 = (int *)(lStack_3e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = *piVar20 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + local_3c0._4_4_ = (int)((ulong)uVar5 >> 0x20); + if (local_3c0._4_4_ < 1) { +LAB_00220218: + if (2 < local_41c) goto LAB_00220224; + uStack_3b8 = CONCAT44(local_414,local_418); + local_370 = *local_3d8; + local_3c0 = CONCAT44(local_41c,local_420); + lStack_368 = local_3d8[1]; + } + else { + iVar12 = 0; + puVar16 = &uStack_3b8; + do { + *(undefined4 *)puVar16 = 0; + iVar12 = iVar12 + 1; + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (iVar12 < local_3c0._4_4_); + if (local_3c0._4_4_ < 3) goto LAB_00220218; +LAB_00220224: + local_3c0 = CONCAT44(local_3c0._4_4_,local_420); + lStack_368 = 0; + local_370 = 0; + local_390 = 0; + lStack_388 = 0; + uStack_398 = 0; + local_3a0 = 0; + uStack_3a8 = 0; + local_3b0 = 0; + Mat::copySize((Mat *)&local_3c0,(Mat *)&local_420); + } + uStack_398 = uStack_3f8; + local_3a0 = local_400; + lStack_388 = lStack_3e8; + local_390 = local_3f0; + uStack_3a8 = uStack_408; + local_3b0 = local_410; + } + if (param_4 == 0) { + local_438 = CONCAT44(local_438._4_4_,0x1010000); + local_2f0 = 0; + local_300 = CONCAT44(local_300._4_4_,0x2010000); + local_458 = CONCAT44(param_6,param_6); + local_448 = 0xffffffffffffffff; + local_430 = (Mat *)&local_360; + local_428 = param_4; + local_424 = param_4; + local_2f8 = (Mat *)&local_3c0; + boxFilter(&local_438,(Scalar_ *)&local_300,local_360 & 0xfff,&local_458,&local_448,1,1); + } + else if (param_4 == 1) { + local_428 = 0; + local_424 = 0; + local_438 = CONCAT44(local_438._4_4_,0x1010000); + local_2f0 = 0; + local_300 = CONCAT44(local_300._4_4_,0x2010000); + local_448 = CONCAT44(param_6,param_6); + local_430 = (Mat *)&local_360; + local_2f8 = (Mat *)&local_3c0; + GaussianBlur(0,0,&local_438,(Scalar_ *)&local_300,&local_448,1); + } + else { + local_448 = 0; + local_440 = 0; + pcVar14 = (char *)String::allocate((String *)&local_448,0x2d); + cVar3 = s_Unknown_unsupported_adaptive_thr_0045fd00[0x2c]; + uVar10 = s_Unknown_unsupported_adaptive_thr_0045fd00._40_4_; + uVar9 = s_Unknown_unsupported_adaptive_thr_0045fd00._24_8_; + uVar8 = s_Unknown_unsupported_adaptive_thr_0045fd00._16_8_; + uVar6 = s_Unknown_unsupported_adaptive_thr_0045fd00._8_8_; + uVar5 = s_Unknown_unsupported_adaptive_thr_0045fd00._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s_Unknown_unsupported_adaptive_thr_0045fd00._32_8_; + *(undefined4 *)(pcVar14 + 0x28) = uVar10; + pcVar14[0x2c] = cVar3; + *(undefined8 *)pcVar14 = uVar5; + *(undefined8 *)(pcVar14 + 8) = uVar6; + *(undefined8 *)(pcVar14 + 0x10) = uVar8; + *(undefined8 *)(pcVar14 + 0x18) = uVar9; + error(-0xce,(String *)&local_448, + "void cv::adaptiveThreshold(cv::InputArray, cv::OutputArray, double, int, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x518); + String::deallocate((String *)&local_448); + } + lVar15 = lrint(param_3); + uVar13 = (uint)lVar15; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + if (param_5 == 0) { + pSVar17 = (Scalar_ *)&local_300; + iVar12 = -0xff; + do { + iVar1 = iVar12 + 1; + SVar2 = SUB41(uVar13,0); + if (iVar12 <= (int)-((uint)((double)(int)param_7 < param_7) + (int)param_7)) { + SVar2 = (Scalar_)0x0; + } + *pSVar17 = SVar2; + pSVar17 = pSVar17 + 1; + iVar12 = iVar1; + } while (iVar1 != 0x201); + } + else if (param_5 == 1) { + pSVar17 = (Scalar_ *)&local_300; + iVar12 = -0xff; + do { + iVar1 = iVar12 + 1; + SVar2 = SUB41(uVar13,0); + if ((int)((uint)(param_7 < (double)(int)param_7) - (int)param_7) < iVar12) { + SVar2 = (Scalar_)0x0; + } + *pSVar17 = SVar2; + pSVar17 = pSVar17 + 1; + iVar12 = iVar1; + } while (iVar1 != 0x201); + } + else { + local_438 = 0; + local_430 = (Mat *)0x0; + puVar16 = (undefined8 *)String::allocate((String *)&local_438,0x22); + uVar9 = _LAB_0045fd48; + uVar8 = _DAT_0045fd40; + uVar6 = DAT_0045fd38; + uVar5 = DAT_0045fd30; + *(undefined2 *)(puVar16 + 4) = _LAB_0045fd50; + *puVar16 = uVar5; + puVar16[1] = uVar6; + puVar16[2] = uVar8; + puVar16[3] = uVar9; + error(-0xce,(String *)&local_438, + "void cv::adaptiveThreshold(cv::InputArray, cv::OutputArray, double, int, int, int, double)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x526); + String::deallocate((String *)&local_438); + } + if ((((local_360 >> 0xe & 1) == 0) || (((uint)local_3c0 >> 0xe & 1) == 0)) || + ((local_420 >> 0xe & 1) == 0)) { + if (0 < iVar25) goto LAB_00220358; + } + else { + iVar11 = iVar11 * iVar25; + iVar25 = 1; +LAB_00220358: + lVar15 = 0; + do { + lVar24 = *local_318; + lVar22 = *local_378; + lVar18 = *local_3d8; + if (0 < iVar11) { + lVar23 = 0; + do { + *(Scalar_ *)(local_410 + lVar15 * lVar18 + lVar23) = + ((Scalar_ *)&local_300) + [(int)(((uint)*(byte *)(local_350 + lVar15 * lVar24 + lVar23) - + (uint)*(byte *)(local_3b0 + lVar15 * lVar22 + lVar23)) + 0xff)]; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < iVar11); + } + lVar15 = lVar15 + 1; + } while ((int)lVar15 < iVar25); + } + if (lStack_388 != 0) { + piVar20 = (int *)(lStack_388 + 0x14); + do { + iVar11 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_3c0); + } + } + lStack_388 = 0; + local_3b0 = 0; + uStack_398 = 0; + local_3a0 = 0; + uStack_3a8 = 0; + if (0 < local_3c0._4_4_) { + iVar11 = 0; + puVar16 = local_380; + do { + *(undefined4 *)puVar16 = 0; + iVar11 = iVar11 + 1; + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (iVar11 < local_3c0._4_4_); + } + if (local_378 != &local_370) { + fastFree(local_378); + } + if (lStack_3e8 != 0) { + piVar20 = (int *)(lStack_3e8 + 0x14); + do { + iVar11 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_420); + } + } + lStack_3e8 = 0; + local_410 = 0; + uStack_3f8 = 0; + local_400 = 0; + uStack_408 = 0; + if (0 < local_41c) { + iVar11 = 0; + puVar19 = local_3e0; + do { + *puVar19 = 0; + iVar11 = iVar11 + 1; + puVar19 = puVar19 + 1; + } while (iVar11 < local_41c); + } + if (local_3d8 != &local_3d0) { + fastFree(local_3d8); + } + if (local_328 != 0) { + piVar20 = (int *)(local_328 + 0x14); + do { + iVar11 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_360); + } + } + if (0 < local_35c) { + iVar11 = 0; + piVar20 = local_320; + do { + *piVar20 = 0; + iVar11 = iVar11 + 1; + piVar20 = piVar20 + 1; + } while (iVar11 < local_35c); + } +LAB_00220524: + local_328 = 0; + local_338 = 0; + local_340 = 0; + local_348 = 0; + local_350 = 0; + if (local_318 != &local_310) { + fastFree(local_318); + } + return; +} + + +================================================================== + +### FUNC 00220b80 (1112 bytes) name=cvThreshold + +undefined1 [16] +cvThreshold(double param_1,double param_2,cv *param_3,cv *param_4,int param_5,undefined8 param_6, + undefined8 param_7,AutoBuffer *param_8) + +{ + char cVar1; + bool bVar2; + void *__dest; + int *piVar3; + undefined8 *puVar4; + int *piVar5; + int iVar6; + undefined1 auVar7 [16]; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_8); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_8); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_a8 = local_108; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_a0 = local_100; + uStack_b8 = uStack_118; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + if (local_e8 != 0) { + piVar3 = (int *)(local_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_68 = local_d8[1]; + iVar6 = local_20[-1]; + if (iVar6 == local_e0[-1]) { +LAB_00220f28: + if (iVar6 == 2) { + if ((*local_20 == *local_e0) && (local_20[1] == local_e0[1])) goto LAB_00220f70; + } + else if (iVar6 < 1) { +LAB_00220f70: + if (((local_60 >> 3 & 0x1ff) + 1 == (local_120 >> 3 & 0x1ff) + 1) && + (((local_60 & 7) == (local_120 & 7) || ((local_120 & 7) == 0)))) goto LAB_00220cdc; + } + else if (*local_20 == *local_e0) { + piVar3 = local_20; + piVar5 = local_e0; + do { + piVar5 = piVar5 + 1; + if (piVar3 == local_20 + (iVar6 - 1)) goto LAB_00220f70; + piVar3 = piVar3 + 1; + } while (*piVar3 == *piVar5); + } + } + } + else { + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + iVar6 = local_20[-1]; + if (iVar6 == local_e0[-1]) goto LAB_00220f28; + } + local_138 = 0; + local_130 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_138,0x70); + memcpy(__dest,&DAT_0045fd58,0x70); + cv::error(-0xd7,(String *)&local_138,"double cvThreshold(const void*, void*, double, double, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x53f); + cv::String::deallocate((String *)&local_138); +LAB_00220cdc: + local_128 = 0; + local_124 = 0; + local_138._0_4_ = 0x2010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = (Mat *)&local_60; + local_130 = (Mat *)&local_120; + auVar7._0_8_ = cv::threshold((_InputArray *)local_150,(_OutputArray *)&local_138,param_1,param_2, + param_5); + if (local_b0 != local_110) { + local_128 = 0; + local_124 = 0; + local_138._0_4_ = 0x2010000; + local_130 = (Mat *)&local_c0; + cv::Mat::convertTo((Mat *)&local_120,(_OutputArray *)&local_138,(uint)local_c0 & 7,1.0,0.0); + } + if (local_88 != 0) { + piVar3 = (int *)(local_88 + 0x14); + do { + iVar6 = *piVar3; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar6 = 0; + puVar4 = local_80; + do { + *(undefined4 *)puVar4 = 0; + iVar6 = iVar6 + 1; + puVar4 = (undefined8 *)((long)puVar4 + 4); + } while (iVar6 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar3 = (int *)(local_e8 + 0x14); + do { + iVar6 = *piVar3; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar6 = 0; + do { + *local_e0 = 0; + iVar6 = iVar6 + 1; + local_e0 = local_e0 + 1; + } while (iVar6 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_28 != 0) { + piVar3 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar3; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + auVar7._8_8_ = 0; + return auVar7; +} + + +================================================================== + +### FUNC 00221064 (728 bytes) name=cvAdaptiveThreshold + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvAdaptiveThreshold(double param_1,double param_2,cv *param_3,cv *param_4,int param_5, + int param_6,int param_7,AutoBuffer *param_8) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + int *piVar9; + int iVar10; + int *piVar11; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_8); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_8); + iVar10 = local_80[-1]; + if (iVar10 == local_20[-1]) { + if (iVar10 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002212f8; + } + else if (iVar10 < 1) { +LAB_002212f8: + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) goto LAB_0022114c; + } + else if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_002212f8; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_d8,0x30); + uVar7 = s_t_type___0045fdf8._0_8_; + uVar6 = _LAB_0045fdf0; + uVar5 = _LAB_0045fde8; + uVar4 = DAT_0045fde0; + uVar3 = DAT_0045fdd8; + *puVar8 = DAT_0045fdd0; + puVar8[1] = uVar3; + puVar8[2] = uVar4; + puVar8[3] = uVar5; + puVar8[4] = uVar6; + puVar8[5] = uVar7; + cv::error(-0xd7,(String *)&local_d8, + "void cvAdaptiveThreshold(const void*, void*, double, int, int, int, double)", + "/builds/master_pack-android/opencv/modules/imgproc/src/thresh.cpp",0x54d); + cv::String::deallocate((String *)&local_d8); +LAB_0022114c: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::adaptiveThreshold + ((_InputArray *)local_f0,(_OutputArray *)&local_d8,param_1,param_5,param_6,param_7, + param_2); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0022139c (716 bytes) name=cvPointSeqFromMat + +long cvPointSeqFromMat(uint param_1,uint *param_2,long param_3,long param_4) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + char cVar7; + char *pcVar8; + void *pvVar9; + uint uVar10; + ulong uVar11; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + + if ((param_3 == 0 || param_4 == 0) || (param_2 == (uint *)0x0)) { + local_28 = 0; + local_20 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_28,0x2d); + cVar7 = s_arr____0____contour_header____0___0045ff80[0x2c]; + uVar6 = s_arr____0____contour_header____0___0045ff80._40_4_; + uVar5 = s_arr____0____contour_header____0___0045ff80._24_8_; + uVar4 = s_arr____0____contour_header____0___0045ff80._16_8_; + uVar3 = s_arr____0____contour_header____0___0045ff80._8_8_; + uVar2 = s_arr____0____contour_header____0___0045ff80._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_arr____0____contour_header____0___0045ff80._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar6; + pcVar8[0x2c] = cVar7; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-0xd7,(String *)&local_28, + "CvSeq* cvPointSeqFromMat(int, const CvArr*, CvContour*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/utils.cpp",0x2f); + cv::String::deallocate((String *)&local_28); + if (param_2 != (uint *)0x0) { + uVar1 = *param_2; + goto joined_r0x00221628; + } + } + else { + uVar1 = *param_2; +joined_r0x00221628: + if (((((uVar1 & 0xffff0000) == 0x42420000) && (0 < (int)param_2[9])) && (0 < (int)param_2[8])) + && (*(long *)(param_2 + 6) != 0)) goto LAB_00221458; + } + local_28 = 0; + local_20 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_28,0x21); + uVar5 = s_Input_array_is_not_a_valid_matri_0045fff8._24_8_; + uVar4 = s_Input_array_is_not_a_valid_matri_0045fff8._16_8_; + uVar3 = s_Input_array_is_not_a_valid_matri_0045fff8._8_8_; + uVar2 = s_Input_array_is_not_a_valid_matri_0045fff8._0_8_; + pcVar8[0x20] = s_Input_array_is_not_a_valid_matri_0045fff8[0x20]; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-5,(String *)&local_28, + "CvSeq* cvPointSeqFromMat(int, const CvArr*, CvContour*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/utils.cpp",0x36); + cv::String::deallocate((String *)&local_28); + uVar1 = *param_2; +LAB_00221458: + uVar11 = (ulong)uVar1; + if (((uVar1 >> 3 & 0x1ff) == 0) && (param_2[9] == 2)) { + param_2 = (uint *)cvReshape(param_2,&local_28); + uVar11 = (ulong)*param_2; + } + uVar1 = (uint)uVar11 & 0xfff; + if (1 < uVar1 - 0xc) { + local_38 = 0; + local_30 = 0; + pvVar9 = (void *)cv::String::allocate((String *)&local_38,0x57); + memcpy(pvVar9, + "The matrix can not be converted to point sequence because of inappropriate element type" + ,0x57); + cv::error(-0xd2,(String *)&local_38, + "CvSeq* cvPointSeqFromMat(int, const CvArr*, CvContour*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/utils.cpp",0x3f); + cv::String::deallocate((String *)&local_38); + } + uVar10 = param_2[9]; + if (((uVar10 != 1) && (param_2[8] != 1)) || ((*param_2 >> 0xe & 1) == 0)) { + local_38 = 0; + local_30 = 0; + pvVar9 = (void *)cv::String::allocate((String *)&local_38,0x4b); + memcpy(pvVar9,"The matrix converted to point sequence must be 1-dimensional and continuous",0x4b + ); + cv::error(-5,(String *)&local_38, + "CvSeq* cvPointSeqFromMat(int, const CvArr*, CvContour*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/utils.cpp",0x44); + cv::String::deallocate((String *)&local_38); + uVar10 = param_2[9]; + } + cvMakeSeqHeaderForArray + (uVar1 | param_1 & 0x7000,0x80, + ((uint)(uVar11 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar11 & 7) << 1)) & 3),*(undefined8 *)(param_2 + 6), + uVar10 * param_2[8],param_3,param_4); + return param_3; +} + + +================================================================== + +### FUNC 002216b8 (656 bytes) name=cvCopyMakeBorder + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvCopyMakeBorder(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,cv *param_6,undefined8 param_7,int param_8,undefined8 param_9, + AutoBuffer *param_10) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 *puVar6; + int iVar7; + undefined4 local_110 [2]; + Mat *local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8 [2]; + Mat *local_f0; + undefined4 local_e8; + undefined4 local_e4; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_10); + iVar7 = (int)((ulong)param_7 >> 0x20); + if ((local_60 & 0xfff) != (local_c0 & 0xfff)) { + local_e0 = 0; + local_d8 = 0; + puVar6 = (undefined8 *)cv::String::allocate((String *)&local_e0,0x18); + uVar5 = _LAB_004600d0; + uVar4 = _LAB_004600c8; + puVar6[2] = _LAB_004600d8; + *puVar6 = uVar4; + puVar6[1] = uVar5; + cv::error(-0xd7,(String *)&local_e0, + "void cvCopyMakeBorder(const CvArr*, CvArr*, CvPoint, int, CvScalar)", + "/builds/master_pack-android/opencv/modules/imgproc/src/utils.cpp",0x56); + cv::String::deallocate((String *)&local_e0); + } + local_100 = 0; + local_fc = 0; + local_110[0] = 0x1010000; + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x2010000; + local_108 = (Mat *)&local_c0; + local_f0 = (Mat *)&local_60; + local_e0 = param_1; + local_d8 = param_2; + local_d0 = param_3; + uStack_c8 = param_4; + cv::copyMakeBorder((_InputArray *)local_110,(_OutputArray *)local_f8,iVar7, + (local_58 - local_b8) - iVar7,(int)param_7,(local_54 - local_b4) - (int)param_7 + ,param_8,(Scalar_ *)&local_e0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + do { + *local_20 = 0; + iVar7 = iVar7 + 1; + local_20 = local_20 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + do { + *local_80 = 0; + iVar7 = iVar7 + 1; + local_80 = local_80 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002219a8 (2076 bytes) name=FUN_002219a8 + +uint FUN_002219a8(double param_1,int *param_2,int param_3,int *param_4,byte param_5, + undefined8 *param_6) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + bool bVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + long lVar8; + ulong uVar9; + uint uVar10; + int iVar11; + ulong uVar12; + ulong uVar13; + uint uVar14; + long lVar15; + int iVar16; + int iVar17; + int iVar18; + int *piVar19; + int iVar20; + int *piVar21; + int *piVar22; + uint uVar23; + ulong uVar24; + ulong uVar25; + int iVar26; + int iVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + + uVar24 = param_6[1]; + piVar22 = (int *)*param_6; + if (param_3 == 0) { + return 0; + } + param_1 = param_1 * param_1; + if (param_5 == 0) { + if ((*param_2 == param_2[(long)param_3 * 2 + -2]) && + (iVar11 = 1, param_2[(long)param_3 * 2 + -1] == param_2[1])) goto LAB_002219f8; + if (uVar24 == 0) { + param_6[1] = 0; + } + bVar4 = false; + *piVar22 = 0; + piVar22[1] = param_3 + -1; + uVar12 = 1; + iVar11 = param_3; + } + else { + iVar11 = 3; +LAB_002219f8: + iVar26 = 0; + uVar12 = 0; + iVar20 = 0; + do { + while( true ) { + iVar16 = (int)uVar12 + iVar26; + iVar18 = 0; + if (param_3 != 0) { + iVar18 = iVar16 / param_3; + } + uVar10 = iVar16 - iVar18 * param_3; + uVar5 = -(ulong)(uVar10 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar10 << 3; + uVar10 = uVar10 + 1; + if (param_3 <= (int)uVar10) { + uVar10 = 0; + } + uVar12 = (ulong)uVar10; + iVar18 = *(int *)((long)param_2 + uVar5); + iVar16 = *(int *)((long)param_2 + uVar5 + 4); + if (param_3 < 2) break; + dVar31 = 0.0; + iVar17 = 1; + iVar27 = iVar26; + do { + uVar5 = -(uVar12 >> 0x1f) & 0xfffffff800000000 | uVar12 << 3; + uVar10 = (int)uVar12 + 1; + if (param_3 <= (int)uVar10) { + uVar10 = 0; + } + uVar12 = (ulong)uVar10; + dVar28 = (double)(*(int *)((long)param_2 + uVar5) - iVar18); + dVar30 = (double)(*(int *)((long)param_2 + uVar5 + 4) - iVar16); + dVar28 = dVar30 * dVar30 + dVar28 * dVar28; + iVar26 = iVar17; + if (dVar28 <= dVar31) { + iVar26 = iVar27; + dVar28 = dVar31; + } + dVar31 = dVar28; + iVar17 = iVar17 + 1; + iVar27 = iVar26; + } while (iVar17 != param_3); + iVar20 = iVar20 + 1; + if (iVar20 == iVar11) goto LAB_00221aa4; + } + iVar20 = iVar20 + 1; + dVar31 = 0.0; + } while (iVar20 != iVar11); +LAB_00221aa4: + if (dVar31 <= param_1) { + *param_4 = iVar18; + uVar10 = 1; + param_4[1] = iVar16; + goto LAB_00221c9c; + } + iVar11 = 0; + if (param_3 != 0) { + iVar11 = (int)uVar10 / param_3; + } + iVar20 = uVar10 - iVar11 * param_3; + iVar11 = 0; + if (param_3 != 0) { + iVar11 = (iVar20 + iVar26) / param_3; + } + iVar11 = (iVar20 + iVar26) - iVar11 * param_3; + if (uVar24 == 0) { + param_6[1] = 0; + *piVar22 = iVar11; + piVar22[1] = iVar20; +LAB_00222174: + uVar5 = uVar24 * 3 >> 1; + if (uVar24 < uVar5) { + uVar5 = 1; + *param_6 = param_6 + 2; + param_6[1] = 1; + *(undefined4 *)(param_6 + 2) = 0; + *(undefined4 *)((long)param_6 + 0x14) = 0; + if (piVar22 != (int *)(param_6 + 2)) { + operator_delete__(piVar22); + piVar22 = (int *)*param_6; + uVar5 = param_6[1]; + } + } + else { + param_6[1] = uVar5; + } + } + else { + *piVar22 = iVar11; + piVar22[1] = iVar20; + uVar5 = uVar24; + if (uVar24 < 2) goto LAB_00222174; + } + piVar22[2] = iVar20; + piVar22[3] = iVar11; + uVar12 = 2; + bVar4 = true; + uVar24 = uVar5; + } + uVar5 = 0; + piVar3 = (int *)(param_6 + 2); + do { + while( true ) { + uVar25 = uVar12 - 1; + piVar19 = piVar22 + uVar25 * 2; + uVar23 = piVar22[uVar25 * 2]; + uVar14 = piVar19[1]; + uVar10 = uVar23 + 1; + uVar6 = -(ulong)(uVar23 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar23 << 3; + uVar13 = -(ulong)(uVar14 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar14 << 3; + if (param_3 <= (int)uVar10) { + uVar10 = 0; + } + iVar26 = *(int *)((long)param_2 + uVar6); + iVar20 = *(int *)((long)param_2 + uVar6 + 4); + if (uVar10 != uVar14) break; +LAB_00221e1c: + uVar12 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + uVar5 = (ulong)((int)uVar5 + 1); + *(int *)((long)param_4 + uVar12) = iVar26; + *(int *)((long)param_4 + uVar12 + 4) = iVar20; + uVar12 = uVar25; + if (uVar25 == 0) goto LAB_00221c78; + } + dVar31 = 0.0; + dVar28 = (double)(*(int *)((long)param_2 + uVar13) - iVar26); + dVar30 = (double)(*(int *)((long)param_2 + uVar13 + 4) - iVar20); + do { + uVar6 = -(ulong)(uVar10 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar10 << 3; + uVar10 = uVar10 + 1; + if (param_3 <= (int)uVar10) { + uVar10 = 0; + } + iVar16 = uVar10 + param_3 + -1; + dVar29 = ABS((double)(*(int *)((long)param_2 + uVar6 + 4) - iVar20) * dVar28 - + (double)(*(int *)((long)param_2 + uVar6) - iVar26) * dVar30); + if (dVar31 < dVar29) { + iVar11 = 0; + if (param_3 != 0) { + iVar11 = iVar16 / param_3; + } + iVar11 = iVar16 - iVar11 * param_3; + dVar31 = dVar29; + } + } while (uVar10 != uVar14); + if (dVar31 * dVar31 <= (dVar30 * dVar30 + dVar28 * dVar28) * param_1) goto LAB_00221e1c; + if (uVar24 <= uVar25) { + uVar6 = param_6[1]; + uVar24 = uVar24 * 3 >> 1; + if (uVar6 < uVar24) { + piVar19 = (int *)*param_6; + uVar13 = uVar24; + if (uVar6 < uVar24) { + uVar13 = uVar6; + } + piVar22 = piVar3; + if (0x88 < uVar24) { + uVar7 = uVar24 << 3; + if (0xfe0000000000000 < uVar24) { + uVar7 = 0xffffffffffffffff; + } + piVar22 = operator_new__(uVar7); + uVar7 = (uVar24 - 2 >> 1) + 1; + uVar9 = 0; + piVar21 = piVar22; + do { + uVar9 = uVar9 + 1; + piVar21[2] = 0; + piVar21[3] = 0; + piVar21[0] = 0; + piVar21[1] = 0; + piVar21 = piVar21 + 4; + } while (uVar9 < uVar7); + if (uVar24 != uVar7 * 2) { + piVar22[uVar7 * 4] = 0; + piVar22[uVar7 * 4 + 1] = 0; + } + } + *param_6 = piVar22; + param_6[1] = uVar24; + if ((piVar19 != piVar22) && (uVar13 != 0)) { + uVar7 = 0; + do { + *(undefined8 *)(piVar22 + uVar7 * 2) = *(undefined8 *)(piVar19 + uVar7 * 2); + uVar7 = uVar7 + 1; + } while (uVar7 != uVar13); + } + lVar15 = uVar24 - uVar6; + uVar13 = (lVar15 - 2U >> 1) + 1; + lVar8 = uVar13 * 2; + if (lVar15 == 1) { +LAB_002220b4: + piVar22[uVar6 * 2] = 0; + piVar22[uVar6 * 2 + 1] = 0; + } + else { + uVar7 = 0; + piVar21 = piVar22 + uVar6 * 2; + do { + uVar7 = uVar7 + 1; + piVar21[2] = 0; + piVar21[3] = 0; + piVar21[0] = 0; + piVar21[1] = 0; + piVar21 = piVar21 + 4; + } while (uVar7 < uVar13); + uVar6 = uVar6 + lVar8; + if (lVar8 - lVar15 != 0) goto LAB_002220b4; + } + if ((piVar19 != piVar3) && (piVar19 != (int *)0x0)) { + operator_delete__(piVar19); + uVar24 = param_6[1]; + piVar22 = (int *)*param_6; + } + piVar19 = piVar22 + uVar25 * 2; + } + else { + piVar22 = (int *)*param_6; + param_6[1] = uVar24; + piVar19 = piVar22 + uVar25 * 2; + } + } + *piVar19 = iVar11; + piVar19[1] = uVar14; + if (uVar24 <= uVar12) { + uVar6 = param_6[1]; + uVar24 = uVar24 * 3 >> 1; + if (uVar6 < uVar24) { + piVar19 = (int *)*param_6; + uVar13 = uVar24; + if (uVar6 < uVar24) { + uVar13 = uVar6; + } + piVar22 = piVar3; + if (0x88 < uVar24) { + uVar25 = uVar24 << 3; + if (0xfe0000000000000 < uVar24) { + uVar25 = 0xffffffffffffffff; + } + piVar22 = operator_new__(uVar25); + uVar25 = (uVar24 - 2 >> 1) + 1; + uVar7 = 0; + piVar21 = piVar22; + do { + uVar7 = uVar7 + 1; + piVar21[2] = 0; + piVar21[3] = 0; + piVar21[0] = 0; + piVar21[1] = 0; + piVar21 = piVar21 + 4; + } while (uVar7 < uVar25); + if (uVar24 != uVar25 * 2) { + piVar22[uVar25 * 4] = 0; + piVar22[uVar25 * 4 + 1] = 0; + } + } + *param_6 = piVar22; + param_6[1] = uVar24; + if ((piVar19 != piVar22) && (uVar13 != 0)) { + uVar25 = 0; + do { + *(undefined8 *)(piVar22 + uVar25 * 2) = *(undefined8 *)(piVar19 + uVar25 * 2); + uVar25 = uVar25 + 1; + } while (uVar25 != uVar13); + } + lVar15 = uVar24 - uVar6; + uVar13 = (lVar15 - 2U >> 1) + 1; + lVar8 = uVar13 * 2; + if (lVar15 == 1) { +LAB_00221f54: + piVar22[uVar6 * 2] = 0; + piVar22[uVar6 * 2 + 1] = 0; + } + else { + uVar25 = 0; + piVar21 = piVar22 + uVar6 * 2; + do { + uVar25 = uVar25 + 1; + piVar21[2] = 0; + piVar21[3] = 0; + piVar21[0] = 0; + piVar21[1] = 0; + piVar21 = piVar21 + 4; + } while (uVar25 < uVar13); + uVar6 = uVar6 + lVar8; + if (lVar15 != lVar8) goto LAB_00221f54; + } + if ((piVar19 != piVar3) && (piVar19 != (int *)0x0)) { + operator_delete__(piVar19); + uVar24 = param_6[1]; + piVar22 = (int *)*param_6; + } + } + else { + param_6[1] = uVar24; + piVar22 = (int *)*param_6; + } + } + uVar6 = uVar12 + 1; + piVar22[uVar12 * 2] = uVar23; + piVar22[uVar12 * 2 + 1] = iVar11; + uVar12 = uVar6; + } while (uVar6 != 0); +LAB_00221c78: + uVar10 = (uint)uVar5; + if (!bVar4) { + lVar8 = (long)(int)uVar10; + uVar10 = uVar10 + 1; + *(undefined8 *)(param_4 + lVar8 * 2) = *(undefined8 *)(param_2 + (long)param_3 * 2 + -2); + } +LAB_00221c9c: + if (param_5 == 0) { + uVar12 = 1; + uVar24 = 0; + } + else { + uVar12 = (ulong)uVar10; + uVar24 = -(ulong)(uVar10 - 1 >> 0x1f) & 0xfffffff800000000 | (ulong)(uVar10 - 1) << 3; + } + iVar20 = *(int *)((long)param_4 + uVar24); + iVar11 = *(int *)((long)param_4 + uVar24 + 4); + if ((int)uVar12 < (int)uVar10) { + uVar24 = -(uVar12 >> 0x1f) & 0xfffffff800000000 | uVar12 << 3; + uVar14 = (int)uVar12 + 1; + } + else { + uVar24 = 0; + uVar14 = 1; + uVar12 = 0; + } + uVar23 = param_5 ^ 1; + iVar26 = uVar10 - uVar23; + if ((int)uVar10 <= (int)uVar14) { + uVar14 = 0; + } + uVar5 = (ulong)uVar14; + iVar18 = *(int *)((long)param_4 + uVar24); + iVar16 = *(int *)((long)param_4 + uVar24 + 4); + uVar14 = uVar10; + if (((int)uVar23 < iVar26) && (2 < (int)uVar10)) { + do { + uVar24 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + uVar2 = (int)uVar5 + 1; + iVar27 = *(int *)((long)param_4 + uVar24); + iVar17 = *(int *)((long)param_4 + uVar24 + 4); + if ((int)uVar10 <= (int)uVar2) { + uVar2 = 0; + } + uVar5 = (ulong)uVar2; + dVar30 = (double)(iVar27 - iVar20); + uVar24 = -(uVar12 >> 0x1f) & 0xfffffff800000000 | uVar12 << 3; + dVar31 = (double)(iVar17 - iVar11); + dVar28 = (double)(iVar18 - iVar20) * dVar31 - (double)(iVar16 - iVar11) * dVar30; + if ((((dVar31 * dVar31 + dVar30 * dVar30) * param_1 * 0.5 < dVar28 * dVar28) || + (uVar6 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3, + dVar31 == 0.0 || dVar30 == 0.0)) || + ((double)((iVar16 - iVar11) * (iVar17 - iVar16) + (iVar18 - iVar20) * (iVar27 - iVar18)) < + 0.0)) { + *(int *)((long)param_4 + uVar24) = iVar18; + uVar2 = (int)uVar12 + 1; + uVar12 = (ulong)uVar2; + *(int *)((long)param_4 + uVar24 + 4) = iVar16; + iVar20 = iVar18; + iVar11 = iVar16; + if ((int)uVar10 <= (int)uVar2) { + uVar12 = 0; + } + } + else { + *(int *)((long)param_4 + uVar24) = iVar27; + uVar1 = (int)uVar12 + 1; + *(int *)((long)param_4 + uVar24 + 4) = iVar17; + uVar2 = uVar2 + 1; + if ((int)uVar10 <= (int)uVar1) { + uVar1 = 0; + } + uVar12 = (ulong)uVar1; + uVar14 = uVar14 - 1; + if ((int)uVar10 <= (int)uVar2) { + uVar2 = 0; + } + uVar5 = (ulong)uVar2; + uVar23 = uVar23 + 1; + iVar20 = iVar27; + iVar11 = iVar17; + iVar27 = *(int *)((long)param_4 + uVar6); + iVar17 = *(int *)((long)param_4 + uVar6 + 4); + } + iVar16 = iVar17; + iVar18 = iVar27; + uVar23 = uVar23 + 1; + } while (((int)uVar23 < iVar26) && (2 < (int)uVar14)); + } + if (param_5 == 0) { + uVar24 = -(uVar12 >> 0x1f) & 0xfffffff800000000 | uVar12 << 3; + *(int *)((long)param_4 + uVar24) = iVar18; + *(int *)((long)param_4 + uVar24 + 4) = iVar16; + } + return uVar14; +} + + +================================================================== + +### FUNC 002221c4 (2088 bytes) name=FUN_002221c4 + +uint FUN_002221c4(double param_1,float *param_2,int param_3,float *param_4,byte param_5, + undefined8 *param_6) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + bool bVar4; + ulong uVar5; + ulong uVar6; + long lVar7; + ulong uVar8; + uint uVar9; + uint uVar10; + ulong uVar11; + ulong uVar12; + ulong uVar13; + long lVar14; + int iVar15; + uint uVar16; + int iVar17; + int iVar18; + int *piVar19; + ulong uVar20; + int *piVar21; + ulong uVar22; + int *piVar23; + int iVar24; + int iVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + + uVar20 = param_6[1]; + piVar19 = (int *)*param_6; + if (param_3 == 0) { + return 0; + } + param_1 = param_1 * param_1; + if (param_5 == 0) { + if ((*param_2 == param_2[(long)param_3 * 2 + -2]) && + (param_2[(long)param_3 * 2 + -1] == param_2[1])) { + iVar17 = 1; + goto LAB_00222214; + } + if (uVar20 == 0) { + param_6[1] = 0; + } + bVar4 = false; + *piVar19 = 0; + piVar19[1] = param_3 + -1; + uVar11 = 1; + iVar17 = param_3; + } + else { + iVar17 = 3; +LAB_00222214: + iVar24 = 0; + uVar11 = 0; + iVar15 = 0; + do { + while( true ) { + iVar18 = (int)uVar11 + iVar24; + iVar25 = 0; + if (param_3 != 0) { + iVar25 = iVar18 / param_3; + } + uVar10 = iVar18 - iVar25 * param_3; + uVar9 = uVar10 + 1; + uVar5 = -(ulong)(uVar10 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar10 << 3; + if (param_3 <= (int)uVar9) { + uVar9 = 0; + } + uVar11 = (ulong)uVar9; + fVar31 = *(float *)((long)param_2 + uVar5); + fVar30 = *(float *)((long)param_2 + uVar5 + 4); + if (param_3 < 2) break; + dVar29 = 0.0; + iVar18 = 1; + iVar25 = iVar24; + do { + uVar5 = -(uVar11 >> 0x1f) & 0xfffffff800000000 | uVar11 << 3; + uVar9 = (int)uVar11 + 1; + if (param_3 <= (int)uVar9) { + uVar9 = 0; + } + uVar11 = (ulong)uVar9; + dVar26 = (double)(*(float *)((long)param_2 + uVar5) - fVar31); + dVar28 = (double)(*(float *)((long)param_2 + uVar5 + 4) - fVar30); + dVar26 = dVar28 * dVar28 + dVar26 * dVar26; + iVar24 = iVar18; + if (dVar26 <= dVar29) { + iVar24 = iVar25; + dVar26 = dVar29; + } + dVar29 = dVar26; + iVar18 = iVar18 + 1; + iVar25 = iVar24; + } while (iVar18 != param_3); + iVar15 = iVar15 + 1; + if (iVar15 == iVar17) goto LAB_002222c0; + } + iVar15 = iVar15 + 1; + dVar29 = 0.0; + } while (iVar15 != iVar17); +LAB_002222c0: + if (dVar29 <= param_1) { + *param_4 = fVar31; + uVar9 = 1; + param_4[1] = fVar30; + goto LAB_002224bc; + } + iVar17 = 0; + if (param_3 != 0) { + iVar17 = (int)uVar9 / param_3; + } + iVar15 = uVar9 - iVar17 * param_3; + iVar17 = 0; + if (param_3 != 0) { + iVar17 = (iVar15 + iVar24) / param_3; + } + iVar17 = (iVar15 + iVar24) - iVar17 * param_3; + if (uVar20 == 0) { + param_6[1] = 0; + *piVar19 = iVar17; + piVar19[1] = iVar15; +LAB_0022299c: + uVar5 = uVar20 * 3 >> 1; + if (uVar20 < uVar5) { + uVar5 = 1; + *param_6 = param_6 + 2; + param_6[1] = 1; + *(undefined4 *)(param_6 + 2) = 0; + *(undefined4 *)((long)param_6 + 0x14) = 0; + if (piVar19 != (int *)(param_6 + 2)) { + operator_delete__(piVar19); + piVar19 = (int *)*param_6; + uVar5 = param_6[1]; + } + } + else { + param_6[1] = uVar5; + } + } + else { + *piVar19 = iVar17; + piVar19[1] = iVar15; + uVar5 = uVar20; + if (uVar20 < 2) goto LAB_0022299c; + } + piVar19[2] = iVar15; + piVar19[3] = iVar17; + uVar11 = 2; + bVar4 = true; + uVar20 = uVar5; + } + uVar5 = 0; + piVar3 = (int *)(param_6 + 2); + do { + while( true ) { + uVar22 = uVar11 - 1; + piVar21 = piVar19 + uVar22 * 2; + uVar16 = piVar19[uVar22 * 2]; + uVar10 = piVar21[1]; + uVar9 = uVar16 + 1; + uVar12 = -(ulong)(uVar16 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar16 << 3; + uVar13 = -(ulong)(uVar10 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar10 << 3; + if (param_3 <= (int)uVar9) { + uVar9 = 0; + } + fVar31 = *(float *)((long)param_2 + uVar12); + fVar30 = *(float *)((long)param_2 + uVar12 + 4); + if (uVar9 != uVar10) break; +LAB_00222638: + uVar11 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + uVar5 = (ulong)((int)uVar5 + 1); + *(float *)((long)param_4 + uVar11) = fVar31; + *(float *)((long)param_4 + uVar11 + 4) = fVar30; + uVar11 = uVar22; + if (uVar22 == 0) goto LAB_00222498; + } + dVar29 = 0.0; + dVar26 = (double)(*(float *)((long)param_2 + uVar13) - fVar31); + dVar28 = (double)(*(float *)((long)param_2 + uVar13 + 4) - fVar30); + do { + uVar12 = -(ulong)(uVar9 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar9 << 3; + uVar9 = uVar9 + 1; + if (param_3 <= (int)uVar9) { + uVar9 = 0; + } + iVar15 = uVar9 + param_3 + -1; + dVar27 = ABS((double)(*(float *)((long)param_2 + uVar12 + 4) - fVar30) * dVar26 - + (double)(*(float *)((long)param_2 + uVar12) - fVar31) * dVar28); + if (dVar29 < dVar27) { + iVar17 = 0; + if (param_3 != 0) { + iVar17 = iVar15 / param_3; + } + iVar17 = iVar15 - iVar17 * param_3; + dVar29 = dVar27; + } + } while (uVar9 != uVar10); + if (dVar29 * dVar29 <= (dVar28 * dVar28 + dVar26 * dVar26) * param_1) goto LAB_00222638; + if (uVar20 <= uVar22) { + uVar12 = param_6[1]; + uVar20 = uVar20 * 3 >> 1; + if (uVar12 < uVar20) { + piVar21 = (int *)*param_6; + uVar13 = uVar20; + if (uVar12 < uVar20) { + uVar13 = uVar12; + } + piVar19 = piVar3; + if (0x88 < uVar20) { + uVar6 = uVar20 << 3; + if (0xfe0000000000000 < uVar20) { + uVar6 = 0xffffffffffffffff; + } + piVar19 = operator_new__(uVar6); + uVar6 = (uVar20 - 2 >> 1) + 1; + uVar8 = 0; + piVar23 = piVar19; + do { + uVar8 = uVar8 + 1; + piVar23[2] = 0; + piVar23[3] = 0; + piVar23[0] = 0; + piVar23[1] = 0; + piVar23 = piVar23 + 4; + } while (uVar8 < uVar6); + if (uVar20 != uVar6 * 2) { + piVar19[uVar6 * 4] = 0; + piVar19[uVar6 * 4 + 1] = 0; + } + } + *param_6 = piVar19; + param_6[1] = uVar20; + if ((piVar21 != piVar19) && (uVar13 != 0)) { + uVar6 = 0; + do { + *(undefined8 *)(piVar19 + uVar6 * 2) = *(undefined8 *)(piVar21 + uVar6 * 2); + uVar6 = uVar6 + 1; + } while (uVar6 != uVar13); + } + lVar14 = uVar20 - uVar12; + uVar13 = (lVar14 - 2U >> 1) + 1; + lVar7 = uVar13 * 2; + if (lVar14 == 1) { +LAB_002228dc: + piVar19[uVar12 * 2] = 0; + piVar19[uVar12 * 2 + 1] = 0; + } + else { + uVar6 = 0; + piVar23 = piVar19 + uVar12 * 2; + do { + uVar6 = uVar6 + 1; + piVar23[2] = 0; + piVar23[3] = 0; + piVar23[0] = 0; + piVar23[1] = 0; + piVar23 = piVar23 + 4; + } while (uVar6 < uVar13); + uVar12 = uVar12 + lVar7; + if (lVar7 - lVar14 != 0) goto LAB_002228dc; + } + if ((piVar21 != piVar3) && (piVar21 != (int *)0x0)) { + operator_delete__(piVar21); + uVar20 = param_6[1]; + piVar19 = (int *)*param_6; + } + piVar21 = piVar19 + uVar22 * 2; + } + else { + piVar19 = (int *)*param_6; + param_6[1] = uVar20; + piVar21 = piVar19 + uVar22 * 2; + } + } + *piVar21 = iVar17; + piVar21[1] = uVar10; + if (uVar20 <= uVar11) { + uVar12 = param_6[1]; + uVar20 = uVar20 * 3 >> 1; + if (uVar12 < uVar20) { + piVar21 = (int *)*param_6; + uVar13 = uVar20; + if (uVar12 < uVar20) { + uVar13 = uVar12; + } + piVar19 = piVar3; + if (0x88 < uVar20) { + uVar22 = uVar20 << 3; + if (0xfe0000000000000 < uVar20) { + uVar22 = 0xffffffffffffffff; + } + piVar19 = operator_new__(uVar22); + uVar22 = (uVar20 - 2 >> 1) + 1; + uVar6 = 0; + piVar23 = piVar19; + do { + uVar6 = uVar6 + 1; + piVar23[2] = 0; + piVar23[3] = 0; + piVar23[0] = 0; + piVar23[1] = 0; + piVar23 = piVar23 + 4; + } while (uVar6 < uVar22); + if (uVar20 != uVar22 * 2) { + piVar19[uVar22 * 4] = 0; + piVar19[uVar22 * 4 + 1] = 0; + } + } + *param_6 = piVar19; + param_6[1] = uVar20; + if ((piVar21 != piVar19) && (uVar13 != 0)) { + uVar22 = 0; + do { + *(undefined8 *)(piVar19 + uVar22 * 2) = *(undefined8 *)(piVar21 + uVar22 * 2); + uVar22 = uVar22 + 1; + } while (uVar22 != uVar13); + } + lVar14 = uVar20 - uVar12; + uVar13 = (lVar14 - 2U >> 1) + 1; + lVar7 = uVar13 * 2; + if (lVar14 == 1) { +LAB_0022277c: + piVar19[uVar12 * 2] = 0; + piVar19[uVar12 * 2 + 1] = 0; + } + else { + uVar22 = 0; + piVar23 = piVar19 + uVar12 * 2; + do { + uVar22 = uVar22 + 1; + piVar23[2] = 0; + piVar23[3] = 0; + piVar23[0] = 0; + piVar23[1] = 0; + piVar23 = piVar23 + 4; + } while (uVar22 < uVar13); + uVar12 = uVar12 + lVar7; + if (lVar14 != lVar7) goto LAB_0022277c; + } + if ((piVar21 != piVar3) && (piVar21 != (int *)0x0)) { + operator_delete__(piVar21); + uVar20 = param_6[1]; + piVar19 = (int *)*param_6; + } + } + else { + param_6[1] = uVar20; + piVar19 = (int *)*param_6; + } + } + uVar12 = uVar11 + 1; + piVar19[uVar11 * 2] = uVar16; + piVar19[uVar11 * 2 + 1] = iVar17; + uVar11 = uVar12; + } while (uVar12 != 0); +LAB_00222498: + uVar9 = (uint)uVar5; + if (!bVar4) { + lVar7 = (long)(int)uVar9; + uVar9 = uVar9 + 1; + *(undefined8 *)(param_4 + lVar7 * 2) = *(undefined8 *)(param_2 + (long)param_3 * 2 + -2); + } +LAB_002224bc: + if (param_5 == 0) { + uVar11 = 1; + uVar20 = 0; + } + else { + uVar11 = (ulong)uVar9; + uVar20 = -(ulong)(uVar9 - 1 >> 0x1f) & 0xfffffff800000000 | (ulong)(uVar9 - 1) << 3; + } + fVar30 = *(float *)((long)param_4 + uVar20); + fVar31 = *(float *)((long)param_4 + uVar20 + 4); + if ((int)uVar11 < (int)uVar9) { + uVar20 = -(uVar11 >> 0x1f) & 0xfffffff800000000 | uVar11 << 3; + uVar10 = (int)uVar11 + 1; + } + else { + uVar20 = 0; + uVar10 = 1; + uVar11 = 0; + } + uVar16 = param_5 ^ 1; + iVar17 = uVar9 - uVar16; + if ((int)uVar9 <= (int)uVar10) { + uVar10 = 0; + } + uVar5 = (ulong)uVar10; + fVar33 = *(float *)((long)param_4 + uVar20); + fVar32 = *(float *)((long)param_4 + uVar20 + 4); + uVar10 = uVar9; + if (((int)uVar16 < iVar17) && (2 < (int)uVar9)) { + fVar34 = fVar33; + do { + uVar20 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + uVar2 = (int)uVar5 + 1; + fVar35 = *(float *)((long)param_4 + uVar20); + if ((int)uVar9 <= (int)uVar2) { + uVar2 = 0; + } + uVar5 = (ulong)uVar2; + fVar36 = *(float *)((long)param_4 + uVar20 + 4); + uVar20 = -(uVar11 >> 0x1f) & 0xfffffff800000000 | uVar11 << 3; + dVar28 = (double)(fVar35 - fVar30); + dVar29 = (double)(fVar36 - fVar31); + dVar26 = (double)(fVar34 - fVar30) * dVar29 - (double)(fVar32 - fVar31) * dVar28; + if ((((dVar29 * dVar29 + dVar28 * dVar28) * param_1 * 0.5 < dVar26 * dVar26) || + (uVar12 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3, + dVar29 == 0.0 || dVar28 == 0.0)) || + ((fVar34 - fVar30) * (fVar35 - fVar34) + (fVar36 - fVar32) * (fVar32 - fVar31) < 0.0)) { + uVar2 = (int)uVar11 + 1; + uVar11 = (ulong)uVar2; + *(float *)((long)param_4 + uVar20) = fVar34; + *(float *)((long)param_4 + uVar20 + 4) = fVar32; + fVar33 = fVar35; + fVar30 = fVar34; + fVar31 = fVar32; + if ((int)uVar9 <= (int)uVar2) { + uVar11 = 0; + } + } + else { + uVar1 = (int)uVar11 + 1; + uVar2 = uVar2 + 1; + *(float *)((long)param_4 + uVar20) = fVar35; + *(float *)((long)param_4 + uVar20 + 4) = fVar36; + if ((int)uVar9 <= (int)uVar1) { + uVar1 = 0; + } + uVar11 = (ulong)uVar1; + uVar10 = uVar10 - 1; + uVar16 = uVar16 + 1; + if ((int)uVar9 <= (int)uVar2) { + uVar2 = 0; + } + uVar5 = (ulong)uVar2; + fVar33 = *(float *)((long)param_4 + uVar12); + fVar30 = fVar35; + fVar31 = fVar36; + fVar36 = *(float *)((long)param_4 + uVar12 + 4); + } + fVar32 = fVar36; + uVar16 = uVar16 + 1; + } while (((int)uVar16 < iVar17) && (fVar34 = fVar33, 2 < (int)uVar10)); + } + if (param_5 == 0) { + uVar20 = -(uVar11 >> 0x1f) & 0xfffffff800000000 | uVar11 << 3; + *(float *)((long)param_4 + uVar20) = fVar33; + *(float *)((long)param_4 + uVar20 + 4) = fVar32; + } + return uVar10; +} + + +================================================================== + +### FUNC 002229f0 (2568 bytes) name=FUN_002229f0 + +undefined8 FUN_002229f0(uint *param_1,int param_2,undefined8 param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined8 uVar4; + uint uVar5; + char cVar6; + int iVar7; + int iVar8; + int iVar9; + double dVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + ulong uVar14; + uint *puVar15; + char *pcVar16; + undefined8 uVar17; + uint *puVar18; + uint *puVar19; + long lVar20; + uint *puVar21; + long lVar22; + int iVar23; + int iVar24; + int iVar25; + int iVar26; + int iVar27; + uint *puVar28; + uint uVar29; + ulong uVar30; + float fVar31; + uint uVar32; + uint *puVar33; + uint uVar34; + uint *puVar35; + float fVar36; + double dVar37; + double __x; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + uint local_568 [4]; + uint *local_558; + undefined1 auStack_550 [24]; + uint *local_538; + uint *local_528; + undefined1 auStack_520 [24]; + char *local_508; + char *local_4f8; + char *local_4e8; + char local_4e0; + uint local_4dc; + uint local_4d8; + char acStack_4d4 [20]; + uint *local_4c0; + ulong local_4b8; + uint local_4b0 [300]; + + uVar29 = param_1[10]; + uVar30 = (ulong)(int)(uVar29 + 8); + puVar15 = local_4b0; + do { + *puVar15 = 0; + puVar35 = puVar15 + 6; + puVar15[1] = 0; + puVar15 = puVar35; + } while (puVar35 != (uint *)&stack0x00000000); + puVar15 = local_4b0; + local_4b8 = 0x32; + if (0x32 < uVar30) { + uVar14 = 0xffffffffffffffff; + if (uVar30 < 0x550000000000001) { + uVar14 = uVar30 * 0x18; + } + local_4c0 = puVar15; + puVar15 = operator_new__(uVar14); + puVar35 = puVar15; + uVar14 = uVar30; + do { + *puVar35 = 0; + uVar14 = uVar14 - 1; + puVar35[1] = 0; + puVar35 = puVar35 + 6; + } while (uVar14 != 0); + uVar29 = param_1[10]; + } + local_4dc = 0; + local_4d8 = 0; + local_568[0] = 0; + local_568[1] = 0; + uVar34 = param_1[0x18]; + uVar5 = param_1[0x19]; + local_4c0 = puVar15; + local_4b8 = uVar30; + if ((((*param_1 & 0x3000) != 0x1000) || (param_1[0xb] != 1)) || ((*param_1 >> 0xe & 1) == 0)) { + local_588 = 0; + local_580 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_588,0x20); + uVar11 = s_CV_IS_SEQ_CHAIN_CONTOUR__chain___00460220._24_8_; + uVar4 = s_CV_IS_SEQ_CHAIN_CONTOUR__chain___00460220._16_8_; + uVar17 = s_CV_IS_SEQ_CHAIN_CONTOUR__chain___00460220._8_8_; + *(undefined8 *)pcVar16 = s_CV_IS_SEQ_CHAIN_CONTOUR__chain___00460220._0_8_; + *(undefined8 *)(pcVar16 + 8) = uVar17; + *(undefined8 *)(pcVar16 + 0x10) = uVar4; + *(undefined8 *)(pcVar16 + 0x18) = uVar11; + cv::error(-0xd7,(String *)&local_588, + "CvSeq* icvApproximateChainTC89(CvChain*, int, CvMemStorage*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x4a); + cv::String::deallocate((String *)&local_588); + } + if (param_2 < 0x80) { + local_578 = 0; + local_570 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_578,0x25); + cVar6 = s_header_size_>___int_sizeof_CvCon_00460290[0x24]; + uVar12 = s_header_size_>___int_sizeof_CvCon_00460290._24_8_; + uVar11 = s_header_size_>___int_sizeof_CvCon_00460290._16_8_; + uVar4 = s_header_size_>___int_sizeof_CvCon_00460290._8_8_; + uVar17 = s_header_size_>___int_sizeof_CvCon_00460290._0_8_; + *(undefined4 *)(pcVar16 + 0x20) = s_header_size_>___int_sizeof_CvCon_00460290._32_4_; + pcVar16[0x24] = cVar6; + *(undefined8 *)pcVar16 = uVar17; + *(undefined8 *)(pcVar16 + 8) = uVar4; + *(undefined8 *)(pcVar16 + 0x10) = uVar11; + *(undefined8 *)(pcVar16 + 0x18) = uVar12; + cv::error(-0xd7,(String *)&local_578, + "CvSeq* icvApproximateChainTC89(CvChain*, int, CvMemStorage*, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x4b); + cv::String::deallocate((String *)&local_578); + } + cvStartWriteSeq(*param_1 & 0xfffff000 | 0xc,param_2,8,param_3,auStack_550); + if (param_1[10] == 0) { + if (local_528 <= local_538) { + cvCreateSeqBlock(auStack_550); + } + *local_538 = uVar34; + local_538[1] = uVar5; + local_538 = local_538 + 2; + uVar17 = cvEndWriteSeq(auStack_550); + goto LAB_00222c30; + } + cvStartReadChainPoints(param_1,auStack_520); + local_558 = (uint *)0x0; + puVar35 = local_568; + if ((int)uVar29 < 1) { + uVar29 = 0; + } + else { + uVar34 = 0; + puVar33 = puVar15; + do { + while( true ) { + uVar1 = local_4d8; + uVar5 = local_4dc; + cVar6 = *local_4e8; + local_4e8 = local_508; + if (local_508 == (char *)0x0) { + iVar13 = (int)local_4e0; + } + else { + pcVar16 = local_508 + 1; + local_4e0 = *local_508; + local_508 = pcVar16; + if (local_4f8 <= pcVar16) { + cvChangeSeqBlock(auStack_520,1); + } + iVar13 = (int)local_4e0; + local_4dc = (int)acStack_4d4[(long)iVar13 * 2] + local_4dc; + local_4d8 = (int)acStack_4d4[(long)iVar13 * 2 + 1] + local_4d8; + } + uVar32 = *(uint *)(&DAT_004601e0 + (long)((iVar13 - cVar6) + 7) * 4); + if (param_4 < 3) break; + if (uVar32 != 0) { + *(uint **)(puVar35 + 4) = puVar33; + puVar35 = puVar33; + } + uVar34 = uVar34 + 1; + puVar33[3] = uVar32; + *puVar33 = uVar5; + puVar33[1] = uVar1; + puVar33 = puVar33 + 6; + if (uVar34 == uVar29) goto LAB_00222d74; + } + if ((uVar32 != 0) || (param_4 == 1)) { + if (local_528 <= local_538) { + cvCreateSeqBlock(auStack_550); + } + *local_538 = uVar5; + local_538[1] = uVar1; + local_538 = local_538 + 2; + } + uVar34 = uVar34 + 1; + puVar33 = puVar33 + 6; + } while (uVar34 != uVar29); + } +LAB_00222d74: + puVar33 = local_558; + dVar10 = DAT_00223440; + if (2 < param_4) { + puVar35[4] = 0; + puVar35[5] = 0; + puVar35 = local_558; +LAB_00222da0: + iVar13 = 1; + iVar27 = (int)((long)puVar35 - (long)puVar15 >> 3) * -0x55555555; + uVar5 = puVar15[(long)iVar27 * 6]; + uVar34 = puVar15[(long)iVar27 * 6 + 1]; + iVar25 = 0; + iVar26 = 0; + iVar24 = iVar27; + iVar23 = iVar27; + do { + iVar23 = iVar23 + 1; + iVar24 = iVar24 + -1; + uVar1 = uVar29; + if (-1 < iVar24) { + uVar1 = 0; + } + uVar32 = uVar29; + if (iVar23 < (int)uVar29) { + uVar32 = 0; + } + iVar8 = puVar15[(long)(int)(iVar23 - uVar32) * 6] - puVar15[(long)(int)(uVar1 + iVar24) * 6]; + iVar9 = puVar15[(long)(int)(iVar23 - uVar32) * 6 + 1] - + puVar15[(long)(int)(uVar1 + iVar24) * 6 + 1]; + iVar7 = iVar9 * iVar9 + iVar8 * iVar8; + iVar8 = (puVar15[(long)(int)(uVar1 + iVar24) * 6 + 1] - uVar34) * iVar8 + + (uVar5 - puVar15[(long)(int)(uVar1 + iVar24) * 6]) * iVar9; + if (iVar13 != 1) { + if (iVar7 <= iVar25) goto LAB_00222ea0; + fVar31 = (float)iVar26 * (float)iVar7 - (float)iVar25 * (float)iVar8; + if (iVar26 < 1) { + if ((-1 < (int)fVar31) && (iVar26 < 0)) goto LAB_00222ea0; + } + else if ((int)fVar31 < 1) goto LAB_00222ea0; + } + iVar13 = iVar13 + 1; + iVar25 = iVar7; + iVar26 = iVar8; + } while( true ); + } + goto LAB_00223130; +LAB_00222ea0: + uVar1 = iVar13 - 1; + puVar35[2] = uVar1; + if (param_4 == 4) { + iVar24 = uVar1 + iVar27; + iVar27 = (1 - iVar13) + iVar27; + fVar31 = 0.0; + uVar32 = uVar1; + do { + uVar2 = uVar29; + if (-1 < iVar27) { + uVar2 = 0; + } + uVar3 = uVar29; + if (iVar24 < (int)uVar29) { + uVar3 = 0; + } + iVar13 = puVar15[(long)(int)(uVar2 + iVar27) * 6] - uVar5; + iVar23 = puVar15[(long)(int)(iVar24 - uVar3) * 6] - uVar5; + iVar25 = puVar15[(long)(int)(uVar2 + iVar27) * 6 + 1] - uVar34; + iVar26 = puVar15[(long)(int)(iVar24 - uVar3) * 6 + 1] - uVar34; + if ((iVar25 == 0 && iVar13 == 0) || (iVar26 == 0 && iVar23 == 0)) break; + __x = ((double)iVar25 * (double)iVar25 + (double)iVar13 * (double)iVar13) * + ((double)iVar26 * (double)iVar26 + (double)iVar23 * (double)iVar23); + dVar37 = SQRT(__x); + if (NAN(dVar37)) { + dVar37 = sqrt(__x); + } + fVar36 = (float)((double)(float)((double)(iVar25 * iVar26 + iVar13 * iVar23) / dVar37) + + dVar10); + if (((int)fVar36 <= (int)fVar31) && ((int)uVar32 < (int)uVar1)) break; + uVar32 = uVar32 - 1; + iVar27 = iVar27 + 1; + iVar24 = iVar24 + -1; + fVar31 = fVar36; + } while (uVar32 != 0); + puVar35[3] = (uint)fVar31; + } + puVar35 = *(uint **)(puVar35 + 4); + puVar19 = local_568; + if (puVar35 == (uint *)0x0) goto LAB_00222ec4; + goto LAB_00222da0; +LAB_00222fd0: + if (iVar13 != 1) { +LAB_00222fd8: + if (iVar13 == 2) { + uVar29 = puVar18[3]; + uVar34 = puVar28[3]; + if ((uVar29 != uVar34 && (int)uVar34 <= (int)uVar29) || + ((uVar29 == uVar34 && ((int)puVar18[2] <= (int)puVar28[2])))) { + *(uint **)(puVar18 + 4) = puVar19; + } + else { + *(uint **)(puVar21 + 4) = puVar28; + } + } + else { + *(uint **)(*(long *)(puVar21 + 4) + 0x10) = puVar28; + } + if (*(uint **)(puVar28 + 4) == (uint *)0x0) goto LAB_002230fc; + iVar13 = 1; + puVar19 = *(uint **)(puVar28 + 4); + } + goto LAB_00223000; +LAB_00222ec4: + do { + iVar13 = (int)((long)puVar33 - (long)puVar15 >> 3) * -0x55555555; + puVar35 = puVar33; + if (0 < (int)puVar33[2] >> 1) { + iVar27 = 1; + iVar24 = iVar13; + do { + iVar24 = iVar24 + 1; + iVar13 = iVar13 + -1; + uVar34 = uVar29; + if (-1 < iVar13) { + uVar34 = 0; + } + if ((int)puVar33[3] < (int)puVar15[(long)(int)(uVar34 + iVar13) * 6 + 3]) { +LAB_00222f50: + *(undefined8 *)(puVar19 + 4) = *(undefined8 *)(puVar33 + 4); + puVar33[3] = 0; + puVar35 = puVar19; + break; + } + uVar34 = uVar29; + if (iVar24 < (int)uVar29) { + uVar34 = 0; + } + if ((int)puVar33[3] < (int)puVar15[(long)(int)(iVar24 - uVar34) * 6 + 3]) goto LAB_00222f50; + iVar27 = iVar27 + 1; + } while (iVar27 <= (int)puVar33[2] >> 1); + } + puVar33 = *(uint **)(puVar33 + 4); + puVar18 = local_558; + puVar21 = local_568; + puVar19 = puVar35; + } while (puVar33 != (uint *)0x0); + do { + puVar35 = puVar18; + if (puVar18[2] == 1) { + iVar13 = (int)((long)puVar18 - (long)puVar15 >> 3) * -0x55555555; + iVar27 = iVar13 + -1; + iVar13 = iVar13 + 1; + uVar34 = uVar29; + if (-1 < iVar27) { + uVar34 = 0; + } + uVar5 = uVar29; + if (iVar13 < (int)uVar29) { + uVar5 = 0; + } + if (((int)puVar18[3] <= (int)puVar15[(long)(int)(uVar34 + iVar27) * 6 + 3]) || + ((int)puVar18[3] <= (int)puVar15[(long)(int)(iVar13 - uVar5) * 6 + 3])) { + *(undefined8 *)(puVar21 + 4) = *(undefined8 *)(puVar18 + 4); + puVar18[3] = 0; + puVar35 = puVar21; + } + } + puVar33 = puVar18 + 4; + puVar18 = *(uint **)puVar33; + puVar21 = puVar35; + } while (*(uint **)puVar33 != (uint *)0x0); + puVar35 = local_558; + if (param_4 != 4) { + if (puVar15[3] == 0) goto LAB_00222fc0; + lVar22 = (long)(int)uVar29; + if (puVar15[lVar22 * 6 + -3] == 0) goto LAB_00222fc0; + if ((int)uVar29 < 2) { + if (uVar29 == 1) goto LAB_002230fc; +LAB_002232d4: + uVar34 = 1; + } + else { + if (puVar15[9] == 0) goto LAB_002232d4; + uVar34 = 1; + puVar33 = puVar15 + 3; + do { + uVar34 = uVar34 + 1; + *puVar33 = 0; + if (uVar34 == uVar29) goto LAB_002230fc; + puVar19 = puVar33 + 0xc; + puVar33 = puVar33 + 6; + } while (*puVar19 != 0); + } + iVar13 = uVar29 - 2; + if ((0 < iVar13) && (puVar15[lVar22 * 6 + -9] != 0)) { + puVar35 = puVar15 + lVar22 * 6 + -8; + puVar33 = puVar15 + lVar22 * 6 + -3; + do { + puVar35[0] = 0; + puVar35[1] = 0; + iVar13 = iVar13 + -1; + *puVar33 = 0; + if (iVar13 == 0) break; + puVar19 = puVar33 + -0xc; + puVar35 = puVar35 + -6; + puVar33 = puVar33 + -6; + } while (*puVar19 != 0); + } + if (uVar34 - 1 == 0) { + lVar20 = 0; + if (uVar29 - 1 == iVar13 + 1) { + lVar20 = *(long *)(puVar15 + 4); + puVar35 = puVar15 + lVar22 * 6; + uVar17 = *(undefined8 *)puVar15; + uVar4 = *(undefined8 *)(puVar15 + 2); + puVar35[4] = 0; + puVar35[5] = 0; + *(undefined8 *)puVar35 = uVar17; + *(undefined8 *)(puVar35 + 2) = uVar4; + *(uint **)(puVar15 + lVar22 * 6 + -2) = puVar35; + lVar20 = (long)((int)(lVar20 - (long)puVar15 >> 3) * -0x55555555) * 0x18; + } + } + else { + lVar20 = (long)(int)(uVar34 - 1) * 0x18; + } + local_558 = (uint *)((long)puVar15 + lVar20); +LAB_00222fc0: + iVar13 = 1; + puVar15 = local_568; + puVar33 = local_568; + puVar19 = local_558; +LAB_00223000: + while (puVar28 = puVar19, puVar21 = puVar33, puVar18 = puVar15, + puVar19 = *(uint **)(puVar28 + 4), puVar15 = puVar28, puVar33 = puVar28, + puVar35 = local_558, puVar19 != (uint *)0x0) { + if (0x17 < (ulong)((long)puVar19 + (-0x18 - (long)puVar28))) goto LAB_00222fd0; + iVar13 = iVar13 + 1; + puVar33 = puVar21; + } + if (iVar13 != 1) goto LAB_00222fd8; + } +LAB_002230fc: + do { + if (local_528 <= local_538) { + cvCreateSeqBlock(auStack_550); + } + *(undefined8 *)local_538 = *(undefined8 *)puVar35; + puVar15 = puVar35 + 4; + local_538 = local_538 + 2; + puVar35 = *(uint **)puVar15; + } while (*(uint **)puVar15 != (uint *)0x0); +LAB_00223130: + uVar17 = cvEndWriteSeq(auStack_550); +LAB_00222c30: + if ((local_4c0 != local_4b0) && (local_4c0 != (uint *)0x0)) { + operator_delete__(local_4c0); + } + return uVar17; +} + + +================================================================== + +### FUNC 00223448 (548 bytes) name=cvApproxChains + +long cvApproxChains(long param_1,long param_2,int param_3,int param_4,int param_5) + +{ + code *pcVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + int iVar6; + long lVar7; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "CvSeq* cvApproxChains(CvSeq*, CvMemStorage*, int, double, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x187); + cv::String::deallocate((String *)&local_10); + } + if ((3 < param_3 - 1U) || (param_4 < 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10, + "CvSeq* cvApproxChains(CvSeq*, CvMemStorage*, int, double, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x189); + cv::String::deallocate((String *)&local_10); + } + if (param_1 == 0) { + lVar7 = 0; + } + else { + lVar7 = 0; + lVar5 = 0; + lVar4 = 0; + while( true ) { + iVar6 = *(int *)(param_1 + 0x28); + lVar2 = lVar5; + if (param_4 <= iVar6) { + if (3 < param_3 - 1U) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10, + "CvSeq* cvApproxChains(CvSeq*, CvMemStorage*, int, double, int, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x19c); + cv::String::deallocate((String *)&local_10); + /* WARNING: Does not return */ + pcVar1 = (code *)SoftwareBreakpoint(1000,0x2235d0); + (*pcVar1)(); + } + lVar2 = FUN_002229f0(param_1,0x80,param_2,param_3); + if (*(int *)(lVar2 + 0x28) < 1) { + iVar6 = -1; + lVar2 = lVar5; + } + else { + cvBoundingRect(lVar2,1); + *(long *)(lVar2 + 0x18) = lVar4; + *(long *)(lVar2 + 8) = lVar5; + if (lVar5 == 0) { + if (lVar4 != 0) { + *(long *)(lVar4 + 0x20) = lVar2; + } + } + else { + *(long *)(lVar5 + 0x10) = lVar2; + } + if (lVar7 == 0) { + lVar7 = lVar2; + } + } + } + if (param_5 == 0) break; + lVar3 = param_1; + lVar5 = lVar2; + if ((iVar6 < param_4) || (*(long *)(param_1 + 0x20) == 0)) { + while (param_1 = *(long *)(lVar3 + 0x10), param_1 == 0) { + lVar3 = *(long *)(lVar3 + 0x18); + if (lVar3 == 0) { + return lVar7; + } + lVar5 = lVar4; + if (lVar4 != 0) { + lVar4 = *(long *)(lVar4 + 0x18); + } + } + } + else { + lVar5 = 0; + param_1 = *(long *)(param_1 + 0x20); + lVar4 = lVar2; + } + } + } + return lVar7; +} + + +================================================================== + +### FUNC 002236a8 (1528 bytes) name=approxPolyDP + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::approxPolyDP(cv::_InputArray const&, cv::_OutputArray const&, double, bool) */ + +void cv::approxPolyDP(_InputArray *param_1,_OutputArray *param_2,double param_3,bool param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + undefined8 *puVar11; + ulong uVar12; + undefined8 **ppuVar13; + undefined4 *puVar14; + Mat *pMVar15; + uint uVar16; + ulong uVar17; + undefined8 **ppuVar18; + undefined8 *puVar19; + ulong uVar20; + undefined8 local_980; + undefined8 local_978; + undefined8 local_970; + undefined8 local_968; + uint local_960; + int local_95c; + undefined4 local_958; + undefined4 local_954; + undefined8 local_950; + undefined8 local_948; + undefined8 local_940; + undefined8 local_938; + undefined8 local_930; + long local_928; + undefined4 *local_920; + undefined8 *local_918; + undefined8 local_910; + undefined8 local_908; + uint local_900; + int local_8fc; + undefined4 local_8f8; + undefined4 local_8f4; + undefined8 **local_8f0; + undefined8 **local_8e8; + long local_8e0; + long local_8d8; + undefined8 local_8d0; + long local_8c8; + undefined4 *local_8c0; + long *local_8b8; + long local_8b0; + long local_8a8; + undefined8 **local_8a0; + ulong local_898; + undefined8 *apuStack_890 [137]; + ulong local_448; + undefined8 auStack_440 [136]; + + iVar10 = _InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_920 = &local_958; + local_918 = &local_910; + local_960 = *(uint *)pMVar15; + local_95c = *(int *)(pMVar15 + 4); + local_958 = *(undefined4 *)(pMVar15 + 8); + local_954 = *(undefined4 *)(pMVar15 + 0xc); + local_950 = *(undefined8 *)(pMVar15 + 0x10); + local_948 = *(undefined8 *)(pMVar15 + 0x18); + local_940 = *(undefined8 *)(pMVar15 + 0x20); + local_938 = *(undefined8 *)(pMVar15 + 0x28); + local_930 = *(undefined8 *)(pMVar15 + 0x30); + local_928 = *(long *)(pMVar15 + 0x38); + local_908 = 0; + local_910 = 0; + if (local_928 != 0) { + piVar1 = (int *)(local_928 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_910 = **(undefined8 **)(pMVar15 + 0x48); + local_908 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_95c = 0; + Mat::copySize((Mat *)&local_960,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar10 = Mat::checkVector((Mat *)&local_960,2,-1,true); + uVar16 = local_960 & 7; + if ((iVar10 < 0) || (1 < uVar16 - 4)) { + local_980 = 0; + local_978 = 0; + puVar11 = (undefined8 *)String::allocate((String *)&local_980,0x34); + uVar9 = DAT_004602e0; + uVar8 = DAT_004602d8; + uVar7 = DAT_004602d0; + uVar6 = _LAB_004602c8; + uVar5 = DAT_004602c0; + uVar4 = DAT_004602b8; + *(undefined4 *)(puVar11 + 6) = DAT_004602e8; + *puVar11 = uVar4; + puVar11[1] = uVar5; + puVar11[2] = uVar6; + puVar11[3] = uVar7; + puVar11[4] = uVar8; + puVar11[5] = uVar9; + error(-0xd7,(String *)&local_980, + "void cv::approxPolyDP(cv::InputArray, cv::OutputArray, double, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2a7); + String::deallocate((String *)&local_980); + } + if (iVar10 == 0) { + _OutputArray::release(param_2); + if (local_928 != 0) { + piVar1 = (int *)(local_928 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_960); + } + } + if (0 < local_95c) { + iVar10 = 0; + puVar14 = local_920; + do { + *puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = puVar14 + 1; + } while (iVar10 < local_95c); + } + goto LAB_00223ab4; + } + uVar20 = (ulong)iVar10; + ppuVar13 = apuStack_890; + do { + ppuVar18 = ppuVar13 + 2; + ppuVar13[1] = (undefined8 *)0x0; + *ppuVar13 = (undefined8 *)0x0; + ppuVar13 = ppuVar18; + } while (ppuVar18 != apuStack_890 + 0x88); + local_8a0 = apuStack_890; + local_898 = 0x88; + if (0x88 < uVar20) { + uVar12 = uVar20 << 3; + if (0xfe0000000000000 < uVar20) { + uVar12 = 0xffffffffffffffff; + } + local_8a0 = operator_new__(uVar12); + uVar12 = (uVar20 - 2 >> 1) + 1; + ppuVar13 = local_8a0; + if (iVar10 != 1) { + uVar17 = 0; + do { + ppuVar13[1] = (undefined8 *)0x0; + *ppuVar13 = (undefined8 *)0x0; + uVar17 = uVar17 + 1; + ppuVar13 = ppuVar13 + 2; + } while (uVar17 < uVar12); + ppuVar13 = local_8a0 + uVar12 * 2; + if (uVar20 == uVar12 * 2) goto LAB_00223830; + } + *(undefined4 *)ppuVar13 = 0; + *(undefined4 *)((long)ppuVar13 + 4) = 0; + } +LAB_00223830: + puVar11 = auStack_440; + do { + puVar19 = puVar11 + 2; + puVar11[1] = 0; + *puVar11 = 0; + puVar11 = puVar19; + } while (puVar19 != (undefined8 *)&stack0x00000000); + apuStack_890[0x88] = auStack_440; + local_448 = 0x88; + local_898 = uVar20; + if (0x88 < uVar20) { + uVar12 = uVar20 << 3; + if (0xfe0000000000000 < uVar20) { + uVar12 = 0xffffffffffffffff; + } + apuStack_890[0x88] = operator_new__(uVar12); + uVar12 = (uVar20 - 2 >> 1) + 1; + puVar11 = apuStack_890[0x88]; + if (iVar10 != 1) { + uVar17 = 0; + do { + puVar11[1] = 0; + *puVar11 = 0; + uVar17 = uVar17 + 1; + puVar11 = puVar11 + 2; + } while (uVar17 < uVar12); + puVar11 = apuStack_890[0x88] + uVar12 * 2; + if (uVar20 == uVar12 * 2) goto LAB_002238c8; + } + *(undefined4 *)puVar11 = 0; + *(undefined4 *)((long)puVar11 + 4) = 0; + } +LAB_002238c8: + ppuVar13 = local_8a0; + local_448 = uVar20; + if (uVar16 == 4) { + uVar20 = FUN_002219a8(param_3,local_950,iVar10,local_8a0,param_4,apuStack_890 + 0x88); + local_8f8 = (undefined4)uVar20; + uVar20 = -(uVar20 >> 0x1f & 1) & 0xfffffff800000000 | (uVar20 & 0xffffffff) << 3; + local_8b0 = 8; + uVar16 = 0xc; + } + else if (uVar16 == 5) { + uVar20 = FUN_002221c4(param_3,local_950,iVar10,local_8a0,param_4,apuStack_890 + 0x88); + local_8f8 = (undefined4)uVar20; + uVar20 = -(uVar20 >> 0x1f & 1) & 0xfffffff800000000 | (uVar20 & 0xffffffff) << 3; + local_8b0 = 8; + uVar16 = 0xd; + } + else { + local_970 = 0; + local_968 = 0; + String::allocate((String *)&local_970,0); + error(-0xd2,(String *)&local_970, + "void cv::approxPolyDP(cv::InputArray, cv::OutputArray, double, bool)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2b9); + String::deallocate((String *)&local_970); + uVar16 = uVar16 + 8; + uVar20 = 0; + local_8f8 = 0; + local_8b0 = (long)(2 << (ulong)((uint)(0xfa50L >> ((uVar16 & 7) << 1)) & 3)); + } + local_8c0 = &local_8f8; + local_8e0 = (long)ppuVar13 + uVar20; + local_900 = uVar16 + 0x42ff0000 | 0x4000; + local_8b8 = &local_8b0; + local_8fc = 2; + local_8f4 = 1; + local_8f0 = ppuVar13; + local_8e8 = ppuVar13; + local_8d0 = 0; + local_8c8 = 0; + local_8d8 = local_8e0; + local_8a8 = local_8b0; + Mat::copyTo((Mat *)&local_900,param_2); + if (local_8c8 != 0) { + piVar1 = (int *)(local_8c8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_900); + } + } + local_8c8 = 0; + local_8f0 = (undefined8 **)0x0; + local_8d8 = 0; + local_8e0 = 0; + local_8e8 = (undefined8 **)0x0; + if (0 < local_8fc) { + iVar10 = 0; + puVar14 = local_8c0; + do { + *puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = puVar14 + 1; + } while (iVar10 < local_8fc); + } + if (local_8b8 != &local_8b0) { + fastFree(local_8b8); + } + if ((apuStack_890[0x88] != auStack_440) && (apuStack_890[0x88] != (undefined8 *)0x0)) { + operator_delete__(apuStack_890[0x88]); + } + if ((local_8a0 != apuStack_890) && (local_8a0 != (undefined8 **)0x0)) { + operator_delete__(local_8a0); + } + if (local_928 != 0) { + piVar1 = (int *)(local_928 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_960); + } + } + if (0 < local_95c) { + iVar10 = 0; + puVar14 = local_920; + do { + *puVar14 = 0; + iVar10 = iVar10 + 1; + puVar14 = puVar14 + 1; + } while (iVar10 < local_95c); + } +LAB_00223ab4: + local_928 = 0; + local_938 = 0; + local_940 = 0; + local_948 = 0; + local_950 = 0; + if (local_918 != &local_910) { + fastFree(local_918); + } + return; +} + + +================================================================== + +### FUNC 00223d48 (2316 bytes) name=cvApproxPoly + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +long cvApproxPoly(double param_1,uint *param_2,uint param_3,long param_4,int param_5,int param_6) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined1 uVar13; + undefined2 uVar14; + long lVar15; + uint uVar16; + undefined4 uVar17; + undefined8 **ppuVar18; + undefined8 *puVar19; + undefined8 *puVar20; + char *pcVar21; + ulong uVar22; + undefined8 **ppuVar23; + long lVar24; + uint uVar25; + uint *puVar26; + String *this; + long lVar27; + long lVar28; + long lVar29; + ulong uVar30; + undefined8 local_9f0; + undefined8 local_9e8; + long local_9e0; + long local_9d8; + undefined8 local_9d0; + undefined8 local_9c8; + undefined8 local_9c0; + undefined8 local_9b8; + undefined8 local_9b0; + undefined8 local_9a8; + undefined8 local_9a0; + undefined8 local_998; + undefined8 local_990; + undefined8 local_988; + undefined8 local_980; + undefined8 local_978; + undefined8 local_970; + undefined8 local_968; + undefined8 local_960; + undefined8 local_958; + undefined8 local_950; + undefined8 local_948; + undefined1 auStack_940 [32]; + undefined1 auStack_920 [96]; + undefined8 local_8c0; + undefined8 uStack_8b8; + undefined8 **local_8a0; + ulong local_898; + undefined8 *apuStack_890 [137]; + undefined8 local_448; + undefined8 auStack_440 [136]; + + ppuVar18 = apuStack_890; + do { + ppuVar23 = ppuVar18 + 2; + ppuVar18[1] = (undefined8 *)0x0; + *ppuVar18 = (undefined8 *)0x0; + ppuVar18 = ppuVar23; + } while (ppuVar23 != apuStack_890 + 0x88); + local_8a0 = apuStack_890; + local_898 = 0x88; + puVar20 = auStack_440; + do { + puVar19 = puVar20 + 2; + puVar20[1] = 0; + *puVar20 = 0; + puVar20 = puVar19; + } while (puVar19 != (undefined8 *)&stack0x00000000); + uStack_8b8 = 0; + local_8c0 = 0; + apuStack_890[0x88] = auStack_440; + local_448 = 100; + if ((param_2 == (uint *)0x0) || (uVar1 = *param_2, (uVar1 & 0xffff0000) != 0x42990000)) { + uVar17 = 0x5000; + if (param_6 == 0) { + uVar17 = 0x1000; + } + param_2 = (uint *)cvPointSeqFromMat(uVar17,param_2,auStack_920,auStack_940); + param_6 = 0; +LAB_00223e44: + if (param_4 == 0) { + local_9e0 = param_4; + local_9d8 = param_4; + pcVar21 = (char *)cv::String::allocate((String *)&local_9e0,0x15); + cVar4 = s_NULL_storage_pointer_004602f0[0x14]; + uVar3 = s_NULL_storage_pointer_004602f0._8_8_; + uVar2 = s_NULL_storage_pointer_004602f0._0_8_; + *(undefined4 *)(pcVar21 + 0x10) = s_NULL_storage_pointer_004602f0._16_4_; + pcVar21[0x14] = cVar4; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_9e0, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2e0); + cv::String::deallocate((String *)&local_9e0); + } + } + else { + if (((uVar1 & 0x3000) != 0x1000) || (1 < (uVar1 & 0xfff) - 0xc)) { + local_9f0 = 0; + local_9e8 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_9f0,0x19); + cVar4 = s_Unsupported_sequence_type_0045c718[0x18]; + uVar3 = s_Unsupported_sequence_type_0045c718._8_8_; + uVar2 = s_Unsupported_sequence_type_0045c718._0_8_; + *(undefined8 *)(pcVar21 + 0x10) = s_Unsupported_sequence_type_0045c718._16_8_; + pcVar21[0x18] = cVar4; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + cv::error(-5,(String *)&local_9f0, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2d1); + cv::String::deallocate((String *)&local_9f0); + } + if (param_4 == 0) { + param_4 = *(long *)(param_2 + 0x12); + goto LAB_00223e44; + } + } + if ((int)param_3 < 0) { + local_9d0 = 0; + local_9c8 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_9d0,0x58); + uVar12 = s_header_size_is_negative__Pass_0_t_00460308._72_8_; + uVar11 = s_header_size_is_negative__Pass_0_t_00460308._64_8_; + uVar10 = s_header_size_is_negative__Pass_0_t_00460308._56_8_; + uVar9 = s_header_size_is_negative__Pass_0_t_00460308._48_8_; + uVar8 = s_header_size_is_negative__Pass_0_t_00460308._40_8_; + uVar7 = s_header_size_is_negative__Pass_0_t_00460308._32_8_; + uVar6 = s_header_size_is_negative__Pass_0_t_00460308._24_8_; + uVar5 = s_header_size_is_negative__Pass_0_t_00460308._16_8_; + uVar3 = s_header_size_is_negative__Pass_0_t_00460308._8_8_; + uVar2 = s_header_size_is_negative__Pass_0_t_00460308._0_8_; + *(undefined8 *)(pcVar21 + 0x50) = s_header_size_is_negative__Pass_0_t_00460308._80_8_; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + *(undefined8 *)(pcVar21 + 0x10) = uVar5; + *(undefined8 *)(pcVar21 + 0x18) = uVar6; + *(undefined8 *)(pcVar21 + 0x20) = uVar7; + *(undefined8 *)(pcVar21 + 0x28) = uVar8; + *(undefined8 *)(pcVar21 + 0x30) = uVar9; + *(undefined8 *)(pcVar21 + 0x38) = uVar10; + *(undefined8 *)(pcVar21 + 0x40) = uVar11; + *(undefined8 *)(pcVar21 + 0x48) = uVar12; + cv::error(-0xd3,(String *)&local_9d0, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2e4); + cv::String::deallocate((String *)&local_9d0); + } + else if (param_3 == 0) { + param_3 = param_2[1]; + } + if ((*param_2 & 0x3000) == 0x1000) { + if ((*param_2 & 0xfff) - 0xc < 2) goto LAB_00223ed8; + if (param_2[0xb] != 1) goto LAB_00223e6c; + this = (String *)&local_9c0; + local_9c0 = 0; + local_9b8 = 0; + pcVar21 = (char *)cv::String::allocate(this,0x38); + uVar8 = s_Input_curves_are_not_polygonal__U_00460368._40_8_; + uVar7 = s_Input_curves_are_not_polygonal__U_00460368._32_8_; + uVar6 = s_Input_curves_are_not_polygonal__U_00460368._24_8_; + uVar5 = s_Input_curves_are_not_polygonal__U_00460368._16_8_; + uVar3 = s_Input_curves_are_not_polygonal__U_00460368._8_8_; + uVar2 = s_Input_curves_are_not_polygonal__U_00460368._0_8_; + *(undefined8 *)(pcVar21 + 0x30) = s_Input_curves_are_not_polygonal__U_00460368._48_8_; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + *(undefined8 *)(pcVar21 + 0x10) = uVar5; + *(undefined8 *)(pcVar21 + 0x18) = uVar6; + *(undefined8 *)(pcVar21 + 0x20) = uVar7; + *(undefined8 *)(pcVar21 + 0x28) = uVar8; + cv::error(-5,this,"CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2ee); + } + else { +LAB_00223e6c: + this = (String *)&local_9b0; + local_9b0 = 0; + local_9a8 = 0; + puVar20 = (undefined8 *)cv::String::allocate(this,0x1d); + uVar13 = LAB_004603c4; + uVar17 = _LAB_004603c0; + uVar3 = DAT_004603b0; + uVar2 = DAT_004603a8; + puVar20[2] = DAT_004603b8; + *(undefined4 *)(puVar20 + 3) = uVar17; + *(undefined1 *)((long)puVar20 + 0x1c) = uVar13; + *puVar20 = uVar2; + puVar20[1] = uVar3; + cv::error(-5,this,"CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2f2); + } + cv::String::deallocate(this); +LAB_00223ed8: + if (param_3 == 0) { + param_3 = param_2[1]; + } + if ((int)param_3 < 0x80) { + local_9a0 = 0; + local_998 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_9a0,0x37); + cVar4 = s_New_header_size_must_be_non_less_004603c8[0x36]; + uVar14 = s_New_header_size_must_be_non_less_004603c8._52_2_; + uVar8 = s_New_header_size_must_be_non_less_004603c8._40_8_; + uVar7 = s_New_header_size_must_be_non_less_004603c8._32_8_; + uVar6 = s_New_header_size_must_be_non_less_004603c8._24_8_; + uVar5 = s_New_header_size_must_be_non_less_004603c8._16_8_; + uVar3 = s_New_header_size_must_be_non_less_004603c8._8_8_; + uVar2 = s_New_header_size_must_be_non_less_004603c8._0_8_; + *(undefined4 *)(pcVar21 + 0x30) = s_New_header_size_must_be_non_less_004603c8._48_4_; + *(undefined2 *)(pcVar21 + 0x34) = uVar14; + pcVar21[0x36] = cVar4; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + *(undefined8 *)(pcVar21 + 0x10) = uVar5; + *(undefined8 *)(pcVar21 + 0x18) = uVar6; + *(undefined8 *)(pcVar21 + 0x20) = uVar7; + *(undefined8 *)(pcVar21 + 0x28) = uVar8; + cv::error(-0xc9,(String *)&local_9a0, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2fa); + cv::String::deallocate((String *)&local_9a0); + } + if (param_5 != 0) { + local_990 = 0; + local_988 = 0; + puVar20 = (undefined8 *)cv::String::allocate((String *)&local_990,0x1c); + uVar17 = DAT_00460418; + uVar3 = DAT_00460408; + uVar2 = _LAB_00460400; + puVar20[2] = _DAT_00460410; + *(undefined4 *)(puVar20 + 3) = uVar17; + *puVar20 = uVar2; + puVar20[1] = uVar3; + cv::error(-0xd3,(String *)&local_990, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x2fd); + cv::String::deallocate((String *)&local_990); + } + lVar27 = 0; + lVar28 = 0; + lVar29 = 0; +LAB_00223f1c: + if (param_5 != 0) goto LAB_00224140; +LAB_00223f24: + if (param_1 < 0.0) { + local_980 = 0; + local_978 = 0; + puVar20 = (undefined8 *)cv::String::allocate((String *)&local_980,0x1d); + uVar13 = DAT_0046043c; + uVar17 = DAT_00460438; + uVar3 = DAT_00460428; + uVar2 = _DAT_00460420; + puVar20[2] = DAT_00460430; + *(undefined4 *)(puVar20 + 3) = uVar17; + *(undefined1 *)((long)puVar20 + 0x1c) = uVar13; + *puVar20 = uVar2; + puVar20[1] = uVar3; + cv::error(-0xd3,(String *)&local_980, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x307); + cv::String::deallocate((String *)&local_980); + } + if (1 < (*param_2 & 0xfff) - 0xc) { + local_970 = 0; + local_968 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_970,0x48); + uVar8 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._40_8_; + uVar7 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._32_8_; + uVar6 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._24_8_; + uVar5 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._16_8_; + uVar3 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._8_8_; + uVar2 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._0_8_; + *(undefined8 *)(pcVar21 + 0x40) = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._64_8_; + uVar10 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._56_8_; + uVar9 = s_CV_SEQ_ELTYPE_src_seq_____CV_32S_00460440._48_8_; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + *(undefined8 *)(pcVar21 + 0x10) = uVar5; + *(undefined8 *)(pcVar21 + 0x18) = uVar6; + *(undefined8 *)(pcVar21 + 0x20) = uVar7; + *(undefined8 *)(pcVar21 + 0x28) = uVar8; + *(undefined8 *)(pcVar21 + 0x30) = uVar9; + *(undefined8 *)(pcVar21 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_970, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x30a); + cv::String::deallocate((String *)&local_970); + } + uVar1 = param_2[10]; + uVar30 = (ulong)(int)(uVar1 << 1); + if (local_898 < uVar30) { + if (local_8a0 != apuStack_890) { + if (local_8a0 != (undefined8 **)0x0) { + operator_delete__(local_8a0); + } + local_8a0 = apuStack_890; + local_898 = 0x88; + } + if (uVar30 < 0x89) { + ppuVar23 = apuStack_890; + } + else { + uVar22 = uVar30 << 3; + if (0xfe0000000000000 < uVar30) { + uVar22 = 0xffffffffffffffff; + } + ppuVar23 = operator_new__(uVar22); + uVar22 = 0; + ppuVar18 = ppuVar23; + do { + uVar22 = uVar22 + 1; + ppuVar18[1] = (undefined8 *)0x0; + *ppuVar18 = (undefined8 *)0x0; + ppuVar18 = ppuVar18 + 2; + local_8a0 = ppuVar23; + local_898 = uVar30; + } while (uVar22 < (uVar30 - 2 >> 1) + 1); + } + lVar24 = *(long *)(param_2 + 0x16); + ppuVar18 = ppuVar23 + (int)uVar1; + uVar16 = *param_2; + uVar25 = uVar16 >> 0xe & 1; + if (lVar24 == *(long *)(lVar24 + 8)) { +LAB_0022428c: + ppuVar23 = *(undefined8 ***)(lVar24 + 0x18); + goto joined_r0x00224088; + } + } + else { + lVar24 = *(long *)(param_2 + 0x16); + uVar16 = *param_2; + uVar25 = uVar16 >> 0xe & 1; + ppuVar18 = local_8a0 + (int)uVar1; + ppuVar23 = local_8a0; + local_898 = uVar30; + if (lVar24 == *(long *)(lVar24 + 8)) goto LAB_0022428c; + } + cvCvtSeqToArray(param_2,ppuVar23,0x3fffffff00000000); + uVar16 = *param_2; +joined_r0x00224088: + if ((uVar16 & 0xfff) == 0xc) { + uVar17 = FUN_002219a8(param_1,ppuVar23,uVar1,ppuVar18,uVar25,apuStack_890 + 0x88); + } + else if ((uVar16 & 0xfff) == 0xd) { + uVar17 = FUN_002221c4(param_1,ppuVar23,uVar1,ppuVar18,uVar25,apuStack_890 + 0x88); + } + else { + local_960 = 0; + local_958 = 0; + cv::String::allocate((String *)&local_960,0); + cv::error(-0xd2,(String *)&local_960, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x31d); + cv::String::deallocate((String *)&local_960); + uVar17 = 0; + } + lVar24 = cvCreateSeq(*param_2,(long)(int)param_3,(long)(int)param_2[0xb],param_4); + cvSeqPushMulti(lVar24,ppuVar18,uVar17,0); + if (0x7f < (int)param_3) goto LAB_002241a8; +LAB_00224104: + *(long *)(lVar24 + 0x18) = lVar27; + *(long *)(lVar24 + 8) = lVar28; + if (lVar28 == 0) goto LAB_002241c0; +LAB_00224110: + *(long *)(lVar28 + 0x10) = lVar24; + do { + puVar26 = param_2; + lVar15 = lVar27; + if (lVar29 == 0) { + lVar29 = lVar24; + } + while( true ) { + lVar27 = lVar24; + if (param_6 == 0) goto LAB_002241d8; + param_2 = *(uint **)(puVar26 + 8); + lVar28 = lVar27; + if (param_2 == (uint *)0x0) goto LAB_00224248; + lVar28 = 0; + if (param_5 == 0) goto LAB_00223f24; +LAB_00224140: + local_950 = 0; + local_948 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_950,0x1c); + uVar17 = s_Invalid_approximation_method_00460490._24_4_; + uVar3 = s_Invalid_approximation_method_00460490._8_8_; + uVar2 = s_Invalid_approximation_method_00460490._0_8_; + *(undefined8 *)(pcVar21 + 0x10) = s_Invalid_approximation_method_00460490._16_8_; + *(undefined4 *)(pcVar21 + 0x18) = uVar17; + *(undefined8 *)pcVar21 = uVar2; + *(undefined8 *)(pcVar21 + 8) = uVar3; + cv::error(-5,(String *)&local_950, + "CvSeq* cvApproxPoly(const void*, int, CvMemStorage*, int, double, int)", + "/builds/master_pack-android/opencv/modules/imgproc/src/approx.cpp",0x325); + cv::String::deallocate((String *)&local_950); + lVar24 = 0; + if ((int)param_3 < 0x80) goto LAB_00224104; +LAB_002241a8: + cvBoundingRect(lVar24,1); + *(long *)(lVar24 + 0x18) = lVar27; + *(long *)(lVar24 + 8) = lVar28; + if (lVar28 != 0) goto LAB_00224110; +LAB_002241c0: + if (lVar27 == 0) break; + *(long *)(lVar27 + 0x20) = lVar24; + puVar26 = param_2; + lVar15 = lVar27; + if (lVar29 == 0) { + lVar29 = lVar24; + } + } + } while( true ); +LAB_00224248: + lVar27 = lVar15; + param_2 = *(uint **)(puVar26 + 4); + if (param_2 == (uint *)0x0) { + puVar26 = *(uint **)(puVar26 + 6); + if (puVar26 == (uint *)0x0) { +LAB_002241d8: + if ((apuStack_890[0x88] != auStack_440) && (apuStack_890[0x88] != (undefined8 *)0x0)) { + operator_delete__(apuStack_890[0x88]); + } + if ((local_8a0 != apuStack_890) && (local_8a0 != (undefined8 **)0x0)) { + operator_delete__(local_8a0); + } + return lVar29; + } + lVar15 = lVar27; + lVar28 = lVar27; + if (lVar27 != 0) { + lVar15 = *(long *)(lVar27 + 0x18); + } + goto LAB_00224248; + } + goto LAB_00223f1c; +} + + +================================================================== + +### FUNC 00224740 (3260 bytes) name=integral + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::integral(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, + cv::_OutputArray const&, int, int) */ + +void cv::integral(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,int param_5,int param_6) + +{ + int iVar1; + int iVar2; + int *piVar3; + int iVar4; + uint uVar5; + uint uVar6; + uint uVar7; + bool bVar8; + bool bVar9; + bool bVar10; + bool bVar11; + char cVar12; + int iVar13; + int iVar14; + uint uVar15; + ulong uVar16; + undefined4 *puVar17; + undefined8 *puVar18; + Mat *pMVar19; + undefined8 *puVar20; + code *pcVar21; + int local_258; + int local_254; + undefined8 local_250; + undefined8 local_248; + undefined8 local_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined8 *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + undefined4 local_178; + undefined4 local_174; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + int local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + int local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar16 = _InputArray::type(param_1,-1); + uVar7 = (uint)(uVar16 >> 3) & 0x1ff; + uVar5 = (uint)uVar16 & 7; + if (param_5 < 1) { + uVar15 = 4; + if ((uVar16 & 7) != 0) { + uVar15 = 6; + } + } + else { + uVar15 = param_5 & 7; + } + uVar6 = param_6 & 7; + iVar14 = uVar7 * 8; + if (param_6 < 1) { + uVar6 = 6; + } + _InputArray::size((int)param_1); + iVar4 = iVar14 + uVar15; + iVar1 = local_258 + 1; + iVar2 = local_254 + 1; + local_60 = iVar1; + local_5c = iVar2; + _OutputArray::create(param_2,(Mat *)&local_60,iVar4,0xffffffff,0,0); + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar19 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar19; + local_bc = *(int *)(pMVar19 + 4); + local_b8 = *(undefined4 *)(pMVar19 + 8); + local_b4 = *(undefined4 *)(pMVar19 + 0xc); + local_b0 = *(undefined8 *)(pMVar19 + 0x10); + local_a8 = *(undefined8 *)(pMVar19 + 0x18); + local_a0 = *(undefined8 *)(pMVar19 + 0x20); + local_98 = *(undefined8 *)(pMVar19 + 0x28); + local_90 = *(undefined8 *)(pMVar19 + 0x30); + local_88 = *(long *)(pMVar19 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar3 = (int *)(local_88 + 0x14); + do { + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = *piVar3 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar19 + 0x48); + local_68 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar13 = _InputArray::kind((_InputArray *)param_2); + if (iVar13 == 0x10000) { + pMVar19 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(int *)pMVar19; + local_50 = *(undefined8 *)(pMVar19 + 0x10); + local_5c = *(int *)(pMVar19 + 4); + local_58 = *(undefined4 *)(pMVar19 + 8); + local_54 = *(undefined4 *)(pMVar19 + 0xc); + local_48 = *(undefined8 *)(pMVar19 + 0x18); + local_40 = *(undefined8 *)(pMVar19 + 0x20); + local_38 = *(undefined8 *)(pMVar19 + 0x28); + local_30 = *(undefined8 *)(pMVar19 + 0x30); + local_28 = *(long *)(pMVar19 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar3 = (int *)(local_28 + 0x14); + do { + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = *piVar3 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar19 + 0x48); + local_8 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_1f8 = &local_1f0; + local_198 = &local_190; + local_200 = &uStack_238; + uStack_1e8 = 0; + local_1f0 = 0; + uStack_188 = 0; + local_190 = 0; + local_1a0 = &uStack_1d8; + uStack_238 = _UNK_00225508; + local_240 = _DAT_00225500; + uStack_1d8 = _UNK_00225508; + local_1e0 = _DAT_00225500; + local_230 = 0; + uStack_228 = 0; + local_220 = 0; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + cVar12 = _OutputArray::needed(param_3); + if (cVar12 != '\0') { + local_120 = iVar1; + local_11c = iVar2; + _OutputArray::create(param_3,&local_120,iVar14 + uVar6,0xffffffff,0,0); + iVar14 = _InputArray::kind((_InputArray *)param_3); + if (iVar14 == 0x10000) { + pMVar19 = *(Mat **)(param_3 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(undefined4 *)pMVar19; + local_17c = *(int *)(pMVar19 + 4); + local_178 = *(undefined4 *)(pMVar19 + 8); + local_174 = *(undefined4 *)(pMVar19 + 0xc); + local_170 = *(undefined8 *)(pMVar19 + 0x10); + uStack_168 = *(undefined8 *)(pMVar19 + 0x18); + local_160 = *(undefined8 *)(pMVar19 + 0x20); + uStack_158 = *(undefined8 *)(pMVar19 + 0x28); + local_150 = *(undefined8 *)(pMVar19 + 0x30); + lStack_148 = *(long *)(pMVar19 + 0x38); + local_128 = 0; + local_130 = 0; + if (lStack_148 != 0) { + piVar3 = (int *)(lStack_148 + 0x14); + do { + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = *piVar3 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar19 + 0x48); + local_128 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if (lStack_148 != 0) { + piVar3 = (int *)(lStack_148 + 0x14); + do { + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = *piVar3 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (lStack_208 != 0) { + piVar3 = (int *)(lStack_208 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + puVar20 = local_138; + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_240._4_4_ < 1) { +LAB_002249bc: + if (2 < local_17c) goto LAB_002249c8; + uStack_238 = CONCAT44(local_174,local_178); + local_240 = CONCAT44(local_17c,local_180); + *local_1f8 = *local_138; + local_1f8[1] = puVar20[1]; + } + else { + iVar14 = 0; + puVar18 = local_200; + do { + *(undefined4 *)puVar18 = 0; + iVar14 = iVar14 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar14 < local_240._4_4_); + if (local_240._4_4_ < 3) goto LAB_002249bc; +LAB_002249c8: + local_240 = CONCAT44(local_240._4_4_,local_180); + Mat::copySize((Mat *)&local_240,(Mat *)&local_180); + } + uStack_218 = uStack_158; + local_220 = local_160; + lStack_208 = lStack_148; + local_210 = local_150; + uStack_228 = uStack_168; + local_230 = local_170; + if (lStack_148 != 0) { + piVar3 = (int *)(lStack_148 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar14 = 0; + puVar17 = local_140; + do { + *puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < local_17c); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + } + cVar12 = _OutputArray::needed(param_4); + if (cVar12 != '\0') { + local_120 = iVar1; + local_11c = iVar2; + _OutputArray::create(param_4,(Mat *)&local_120,iVar4,0xffffffff,0,0); + iVar14 = _InputArray::kind((_InputArray *)param_4); + if (iVar14 == 0x10000) { + pMVar19 = *(Mat **)(param_4 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(int *)pMVar19; + local_110 = *(undefined8 *)(pMVar19 + 0x10); + local_11c = *(int *)(pMVar19 + 4); + local_118 = *(undefined4 *)(pMVar19 + 8); + local_114 = *(undefined4 *)(pMVar19 + 0xc); + uStack_108 = *(undefined8 *)(pMVar19 + 0x18); + local_100 = *(undefined8 *)(pMVar19 + 0x20); + uStack_f8 = *(undefined8 *)(pMVar19 + 0x28); + local_f0 = *(undefined8 *)(pMVar19 + 0x30); + lStack_e8 = *(long *)(pMVar19 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (lStack_e8 != 0) { + piVar3 = (int *)(lStack_e8 + 0x14); + do { + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = *piVar3 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar19 + 0x48); + local_c8 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_4); + } + if (lStack_e8 != 0) { + piVar3 = (int *)(lStack_e8 + 0x14); + do { + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = *piVar3 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (lStack_1a8 != 0) { + piVar3 = (int *)(lStack_1a8 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + puVar20 = local_d8; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_00225030: + if (2 < local_11c) goto LAB_0022503c; + uStack_1d8 = CONCAT44(local_114,local_118); + local_1e0 = CONCAT44(local_11c,local_120); + *local_198 = *local_d8; + local_198[1] = puVar20[1]; + } + else { + iVar14 = 0; + puVar18 = local_1a0; + do { + *(undefined4 *)puVar18 = 0; + iVar14 = iVar14 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar14 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_00225030; +LAB_0022503c: + local_1e0 = CONCAT44(local_1e0._4_4_,local_120); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_120); + } + uStack_1b8 = uStack_f8; + local_1c0 = local_100; + lStack_1a8 = lStack_e8; + local_1b0 = local_f0; + uStack_1c8 = uStack_108; + local_1d0 = local_110; + if (lStack_e8 != 0) { + piVar3 = (int *)(lStack_e8 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar14 = 0; + puVar17 = local_e0; + do { + *puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + } + bVar8 = (uVar16 & 7) == 0; + if ((uVar15 == 4) && (bVar8)) { + if (uVar6 == 6) { + pcVar21 = FUN_00226e04; + goto LAB_00224bac; + } + if (uVar6 == 5) { + pcVar21 = FUN_0022c2f0; + goto LAB_00224bac; + } + if (uVar6 == 4) { + pcVar21 = FUN_002277b8; + goto LAB_00224bac; + } + bVar10 = false; +LAB_00224abc: + bVar8 = false; + bVar11 = false; + bVar9 = bVar10; + } + else { + bVar9 = uVar15 == 5; + bVar10 = bVar9 && bVar8; + if (bVar9 && bVar8) { + if (uVar6 == 6) { + pcVar21 = FUN_0022817c; + goto LAB_00224bac; + } + if (uVar6 == 5) { + pcVar21 = FUN_0022cc38; + goto LAB_00224bac; + } + goto LAB_00224abc; + } + bVar10 = uVar15 == 6; + bVar11 = uVar6 == 6; + if ((bVar10 && bVar8) && (bVar11)) { + pcVar21 = FUN_00228ac4; + goto LAB_00224bac; + } + bVar8 = bVar10 && bVar11; + if ((bVar10 && bVar11) && (uVar5 == 2)) { + pcVar21 = FUN_00229444; + goto LAB_00224bac; + } + if ((bVar10 && bVar11) && (uVar5 == 3)) { + pcVar21 = FUN_00229da4; + goto LAB_00224bac; + } + } + if ((!bVar9) || (uVar5 != 5)) { + if (bVar8) { + if (uVar5 == 5) { + pcVar21 = FUN_0022b05c; + goto LAB_00224bac; + } + goto LAB_00224ae4; + } + } + else { + if (bVar11) { + pcVar21 = FUN_0022a6f0; + goto LAB_00224bac; + } + if (uVar6 == 5) { + pcVar21 = FUN_0022d514; + goto LAB_00224bac; + } +LAB_00224ae4: + if ((bVar8) && (uVar5 == 6)) { + pcVar21 = FUN_0022b938; + goto LAB_00224bac; + } + } + local_250 = 0; + local_248 = 0; + String::allocate((String *)&local_250,0); + error(-0xd2,(String *)&local_250, + "void cv::integral(cv::InputArray, cv::OutputArray, cv::OutputArray, cv::OutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/imgproc/src/sumpixels.cpp",0x212); + String::deallocate((String *)&local_250); + pcVar21 = (code *)0x0; +LAB_00224bac: + local_11c = *local_80; + local_120 = local_80[1]; + (*pcVar21)(local_b0,local_70,local_50,local_10,local_230,local_1f0,local_1d0,local_190,&local_120, + uVar7 + 1); + if (lStack_1a8 != 0) { + piVar3 = (int *)(lStack_1a8 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar14 = 0; + puVar20 = local_1a0; + do { + *(undefined4 *)puVar20 = 0; + iVar14 = iVar14 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar14 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (lStack_208 != 0) { + piVar3 = (int *)(lStack_208 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar14 = 0; + puVar20 = local_200; + do { + *(undefined4 *)puVar20 = 0; + iVar14 = iVar14 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar14 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + } + if (local_28 != 0) { + piVar3 = (int *)(local_28 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar14 = 0; + puVar17 = local_20; + do { + *puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar3 = (int *)(local_88 + 0x14); + do { + iVar14 = *piVar3; + cVar12 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar8) { + *piVar3 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar14 = 0; + puVar17 = local_80; + do { + *puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00225510 (72 bytes) name=integral + +/* cv::integral(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::integral(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + _OutputArray *p_Var1; + _OutputArray *p_Var2; + + p_Var1 = (_OutputArray *)noArray(); + p_Var2 = (_OutputArray *)noArray(); + integral(param_1,param_2,p_Var1,p_Var2,param_3,-1); + return; +} + + +================================================================== + +### FUNC 00225558 (80 bytes) name=integral + +/* cv::integral(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, int, int) + */ + +void cv::integral(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3,int param_4, + int param_5) + +{ + _OutputArray *p_Var1; + + p_Var1 = (_OutputArray *)noArray(); + integral(param_1,param_2,param_3,p_Var1,param_4,param_5); + return; +} + + +================================================================== + +### FUNC 002255b0 (3384 bytes) name=cvIntegral + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvIntegral(cv *param_1,cv *param_2,cv *param_3,Mat *param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 *puVar14; + char *pcVar15; + AutoBuffer *pAVar16; + undefined8 *puVar17; + int iVar18; + AutoBuffer *pAVar19; + Mat *pMVar20; + undefined4 local_390 [2]; + Mat *local_388; + undefined4 local_380; + undefined4 local_37c; + undefined8 local_378; + Mat *local_370; + undefined4 local_368; + undefined4 local_364; + uint local_360; + int iStack_35c; + undefined8 uStack_358; + long local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + long local_328; + undefined4 *local_320; + undefined8 *local_318; + undefined8 auStack_310 [2]; + undefined8 local_300; + undefined8 uStack_2f8; + long local_2f0; + undefined8 local_2e8; + undefined8 local_2e0; + undefined8 local_2d8; + undefined8 local_2d0; + long local_2c8; + undefined8 *local_2c0; + undefined8 *local_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + undefined8 local_2a0; + undefined8 uStack_298; + long local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + undefined8 *local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 uStack_248; + undefined8 local_240; + undefined8 uStack_238; + long local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + AutoBuffer *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + undefined8 uStack_1d8; + long local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined8 local_180; + undefined8 uStack_178; + long local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined4 local_120; + int local_11c; + Mat *local_118; + long local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined4 local_c0; + int local_bc; + Mat *local_b8; + long local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_300 = CONCAT44(iStack_35c,local_360); + local_2b8 = &local_2b0; + local_2c0 = &uStack_2f8; + uStack_2a8 = 0; + local_2b0 = 0; + uStack_2f8 = uStack_358; + local_2d0 = local_330; + local_2f0 = local_350; + local_2e8 = local_348; + local_2e0 = local_340; + local_2d8 = local_338; + local_2c8 = local_328; + if (local_328 != 0) { + piVar1 = (int *)(local_328 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_35c < 3) { + local_2b0 = *local_318; + uStack_2a8 = local_318[1]; + } + else { + local_300 = (ulong)local_360; + cv::Mat::copySize((Mat *)&local_300,(Mat *)&local_360); + } + local_258 = &local_250; + local_1f8 = &local_1f0; + local_198 = &local_190; + local_138 = &local_130; + uStack_248 = 0; + local_250 = 0; + local_260 = &uStack_298; + uStack_1e8 = 0; + local_1f0 = 0; + uStack_298 = _UNK_00226458; + local_2a0 = _DAT_00226450; + uStack_238 = _UNK_00226458; + local_240 = _DAT_00226450; + uStack_1d8 = _UNK_00226458; + local_1e0 = _DAT_00226450; + local_290 = 0; + uStack_188 = 0; + local_190 = 0; + uStack_288 = 0; + uStack_178 = _UNK_00226458; + local_180 = _DAT_00226450; + local_280 = 0; + uStack_278 = 0; + pAVar16 = (AutoBuffer *)&uStack_238; + local_270 = 0; + local_1a0 = &uStack_1d8; + lStack_268 = 0; + local_140 = &uStack_178; + local_230 = 0; + uStack_228 = 0; + local_220 = 0; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_170 = 0; + uStack_168 = 0; + uStack_128 = 0; + local_130 = 0; + local_160 = 0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_200 = pAVar16; + if (param_3 == (cv *)0x0) { + pMVar20 = (Mat *)0x0; + if (param_4 != (Mat *)0x0) goto LAB_00225a18; +LAB_002261a0: + local_388 = (Mat *)0x0; + local_390[0] = 0x2000000; + local_370 = param_4; + } + else { + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,pAVar16); + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + puVar17 = local_d8; + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_240._4_4_ < 1) { +LAB_0022583c: + if (2 < local_11c) goto LAB_002260fc; + uStack_238 = local_118; + local_240 = CONCAT44(local_11c,local_120); + *local_1f8 = *local_d8; + local_1f8[1] = puVar17[1]; + } + else { + iVar18 = 0; + pAVar19 = local_200; + do { + *(undefined4 *)pAVar19 = 0; + iVar18 = iVar18 + 1; + pAVar19 = pAVar19 + 4; + } while (iVar18 < local_240._4_4_); + if (local_240._4_4_ < 3) goto LAB_0022583c; +LAB_002260fc: + local_240 = CONCAT44(local_240._4_4_,local_120); + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_120); + } + uStack_218 = uStack_f8; + local_220 = local_100; + lStack_208 = lStack_e8; + local_210 = local_f0; + uStack_228 = uStack_108; + local_230 = local_110; + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + puVar17 = local_1f8; + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (local_2a0._4_4_ < 1) { +LAB_00225930: + if (2 < local_240._4_4_) goto LAB_00226138; + uStack_298 = uStack_238; + local_2a0 = local_240; + *local_258 = *local_1f8; + local_258[1] = puVar17[1]; + } + else { + iVar18 = 0; + puVar14 = local_260; + do { + *(undefined4 *)puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar18 < local_2a0._4_4_); + if (local_2a0._4_4_ < 3) goto LAB_00225930; +LAB_00226138: + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_240); + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_240); + } + uStack_278 = uStack_218; + local_280 = local_220; + lStack_268 = lStack_208; + local_270 = local_210; + uStack_288 = uStack_228; + local_290 = local_230; + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar18 = 0; + do { + *local_e0 = 0; + iVar18 = iVar18 + 1; + local_e0 = local_e0 + 1; + } while (iVar18 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + local_388 = (Mat *)&local_240; + pMVar20 = (Mat *)&local_240; + if (param_4 != (Mat *)0x0) { +LAB_00225a18: + cv::cvarrToMat((cv *)param_4,(void *)0x0,true,false,0,pAVar16); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar17 = local_78; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_00225ac4: + if (2 < local_bc) goto LAB_00226118; + uStack_178 = local_b8; + local_180 = CONCAT44(local_bc,local_c0); + *local_138 = *local_78; + local_138[1] = puVar17[1]; + } + else { + iVar18 = 0; + puVar14 = local_140; + do { + *(undefined4 *)puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar18 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_00225ac4; +LAB_00226118: + local_180 = CONCAT44(local_180._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_c0); + } + uStack_158 = uStack_98; + local_160 = local_a0; + lStack_148 = lStack_88; + local_150 = local_90; + uStack_168 = uStack_a8; + local_170 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar17 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_00225bb8: + if (2 < local_180._4_4_) goto LAB_00226128; + uStack_1d8 = uStack_178; + local_1e0 = local_180; + *local_198 = *local_138; + local_198[1] = puVar17[1]; + } + else { + iVar18 = 0; + puVar14 = local_1a0; + do { + *(undefined4 *)puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar18 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_00225bb8; +LAB_00226128: + local_1e0 = CONCAT44(local_1e0._4_4_,(undefined4)local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar18 = 0; + do { + *local_80 = 0; + iVar18 = iVar18 + 1; + local_80 = local_80 + 1; + } while (iVar18 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + param_4 = (Mat *)&local_180; + local_388 = pMVar20; + if (pMVar20 == (Mat *)0x0) goto LAB_002261a0; + } + local_390[0] = 0x2010000; + local_370 = param_4; + } + local_b0 = 0; + local_110 = 0; + if (local_370 == (Mat *)0x0) { + local_378 = CONCAT44(local_378._4_4_,0x2000000); + } + else { + local_378 = CONCAT44(local_378._4_4_,0x2010000); + } + local_364 = 0; + local_c0 = 0x2010000; + local_120 = 0x1010000; + local_37c = 0; + local_380 = 0; + local_368 = local_364; + local_118 = aMStack_60; + local_b8 = (Mat *)&local_360; + cv::integral((_InputArray *)&local_120,(_OutputArray *)&local_c0,(_OutputArray *)local_390, + (_OutputArray *)&local_378,local_360 & 7,-1); + if (((local_350 != local_2f0) || (local_230 != local_290)) || (local_170 != local_1d0)) { + local_378 = 0; + local_370 = (Mat *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_378,0x51); + uVar13 = s_sum_data____sum0_data____sqsum_d_004605e8._72_8_; + uVar12 = s_sum_data____sum0_data____sqsum_d_004605e8._64_8_; + uVar11 = s_sum_data____sum0_data____sqsum_d_004605e8._56_8_; + uVar10 = s_sum_data____sum0_data____sqsum_d_004605e8._48_8_; + uVar9 = s_sum_data____sum0_data____sqsum_d_004605e8._40_8_; + uVar8 = s_sum_data____sum0_data____sqsum_d_004605e8._32_8_; + uVar7 = s_sum_data____sum0_data____sqsum_d_004605e8._24_8_; + uVar6 = s_sum_data____sum0_data____sqsum_d_004605e8._16_8_; + uVar5 = s_sum_data____sum0_data____sqsum_d_004605e8._8_8_; + uVar4 = s_sum_data____sum0_data____sqsum_d_004605e8._0_8_; + pcVar15[0x50] = s_sum_data____sum0_data____sqsum_d_004605e8[0x50]; + *(undefined8 *)pcVar15 = uVar4; + *(undefined8 *)(pcVar15 + 8) = uVar5; + *(undefined8 *)(pcVar15 + 0x10) = uVar6; + *(undefined8 *)(pcVar15 + 0x18) = uVar7; + *(undefined8 *)(pcVar15 + 0x20) = uVar8; + *(undefined8 *)(pcVar15 + 0x28) = uVar9; + *(undefined8 *)(pcVar15 + 0x30) = uVar10; + *(undefined8 *)(pcVar15 + 0x38) = uVar11; + *(undefined8 *)(pcVar15 + 0x40) = uVar12; + *(undefined8 *)(pcVar15 + 0x48) = uVar13; + cv::error(-0xd7,(String *)&local_378,"void cvIntegral(const CvArr*, CvArr*, CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/imgproc/src/sumpixels.cpp",0x239); + cv::String::deallocate((String *)&local_378); + } + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar18 = 0; + puVar17 = local_140; + do { + *(undefined4 *)puVar17 = 0; + iVar18 = iVar18 + 1; + puVar17 = (undefined8 *)((long)puVar17 + 4); + } while (iVar18 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar18 = 0; + puVar17 = local_1a0; + do { + *(undefined4 *)puVar17 = 0; + iVar18 = iVar18 + 1; + puVar17 = (undefined8 *)((long)puVar17 + 4); + } while (iVar18 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar18 = 0; + pAVar16 = local_200; + do { + *(undefined4 *)pAVar16 = 0; + iVar18 = iVar18 + 1; + pAVar16 = pAVar16 + 4; + } while (iVar18 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + cv::fastFree(local_1f8); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_2a0._4_4_) { + iVar18 = 0; + puVar17 = local_260; + do { + *(undefined4 *)puVar17 = 0; + iVar18 = iVar18 + 1; + puVar17 = (undefined8 *)((long)puVar17 + 4); + } while (iVar18 < local_2a0._4_4_); + } + if (local_258 != &local_250) { + cv::fastFree(local_258); + } + if (local_2c8 != 0) { + piVar1 = (int *)(local_2c8 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_300); + } + } + local_2c8 = 0; + local_2f0 = 0; + local_2d8 = 0; + local_2e0 = 0; + local_2e8 = 0; + if (0 < local_300._4_4_) { + iVar18 = 0; + puVar17 = local_2c0; + do { + *(undefined4 *)puVar17 = 0; + iVar18 = iVar18 + 1; + puVar17 = (undefined8 *)((long)puVar17 + 4); + } while (iVar18 < local_300._4_4_); + } + if (local_2b8 != &local_2b0) { + cv::fastFree(local_2b8); + } + if (local_328 != 0) { + piVar1 = (int *)(local_328 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + local_328 = 0; + local_350 = 0; + local_338 = 0; + local_340 = 0; + local_348 = 0; + if (0 < iStack_35c) { + iVar18 = 0; + do { + *local_320 = 0; + iVar18 = iVar18 + 1; + local_320 = local_320 + 1; + } while (iVar18 < iStack_35c); + } + if (local_318 != auStack_310) { + cv::fastFree(local_318); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar18 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar18 = 0; + do { + *local_20 = 0; + iVar18 = iVar18 + 1; + local_20 = local_20 + 1; + } while (iVar18 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00226460 (2468 bytes) name=FUN_00226460 + +void FUN_00226460(byte *param_1,int param_2,void *param_3,ulong param_4,void *param_5,ulong param_6, + void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + byte *pbVar3; + int iVar4; + int iVar5; + byte bVar6; + bool bVar7; + uint uVar8; + int iVar9; + long lVar10; + ulong uVar11; + undefined1 *puVar12; + long lVar13; + uint uVar14; + uint uVar15; + long lVar16; + uint uVar17; + int iVar18; + undefined1 *puVar19; + int iVar20; + int *piVar21; + int iVar22; + byte *pbVar23; + int *piVar24; + long lVar25; + double *pdVar26; + long lVar27; + long lVar28; + int *piVar29; + undefined1 *puVar30; + long lVar31; + int *piVar32; + double *pdVar33; + int iVar34; + long lVar35; + ulong uVar36; + long lVar37; + uint *puVar38; + int iVar39; + double dVar40; + double dVar41; + long lVar42; + int *piVar43; + int *piVar44; + long lVar45; + long lVar46; + int *local_440; + undefined1 auStack_420 [1056]; + + iVar39 = (int)(param_4 >> 2); + iVar34 = (int)(param_8 >> 2); + uVar8 = param_10 + param_10 * *param_9; + *param_9 = param_10 * *param_9; + iVar22 = (int)(param_6 >> 3); + memset(param_3,0,-(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2); + piVar43 = (int *)((long)param_3 + (long)(param_10 + iVar39) * 4); + if (param_5 == (void *)0x0) { + pdVar33 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_0022656c; +LAB_00226528: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + local_440 = (int *)((long)param_7 + (long)(param_10 + iVar34) * 4); + bVar7 = local_440 == (int *)0x0; + if (pdVar33 == (double *)0x0) { + if (bVar7) { +LAB_0022656c: + iVar22 = param_9[1]; + if (iVar22 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar34 = 0; + do { + if (0 < param_10) { + piVar24 = piVar43 + lVar1; + pbVar23 = param_1; + do { + *(undefined4 *) + ((long)piVar43 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2 + )) = 0; + if (0 < *param_9) { + lVar10 = 0; + iVar18 = 0; + iVar22 = 0; + do { + iVar22 = iVar22 + param_10; + iVar18 = iVar18 + (uint)pbVar23[lVar10]; + piVar43[lVar10] = + *(int *)((long)piVar43 + + lVar10 * 4 + + (-(ulong)((uint)-iVar39 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar39 << 2)) + iVar18; + lVar10 = lVar10 + param_10; + } while (iVar22 < *param_9); + } + piVar43 = piVar43 + 1; + pbVar23 = pbVar23 + 1; + } while (piVar43 != piVar24); + param_1 = param_1 + lVar1; + iVar22 = param_9[1]; + piVar43 = piVar24; + } + iVar34 = iVar34 + 1; + piVar43 = (int *)((long)piVar43 + + (-(ulong)((uint)(iVar39 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar39 - param_10) << 2)); + param_1 = param_1 + (param_2 - param_10); + } while (iVar34 < iVar22); + return; + } + } + else if (bVar7) goto LAB_00226ca8; + puVar2 = auStack_420; + uVar36 = (ulong)(param_10 + *param_9); + if (0x108 < uVar36) { + uVar11 = uVar36 << 2; + if (0x1fc0000000000000 < uVar36) { + uVar11 = 0xffffffffffffffff; + } + puVar12 = operator_new__(uVar11); + bVar7 = puVar12 != puVar2; + puVar2 = puVar12; + } + puVar12 = puVar2; + if (0 < param_10) { + iVar18 = -param_10; + lVar1 = (ulong)(param_10 - 1) + 1; + lVar10 = (long)param_10; + piVar32 = piVar43 + lVar1; + piVar24 = local_440; + pbVar23 = param_1; + do { + piVar24[iVar18] = 0; + piVar43[iVar18] = 0; + if (0 < *param_9) { + if (pdVar33 == (double *)0x0) { + iVar20 = 0; + iVar9 = 0; + lVar16 = 0; + do { + bVar6 = pbVar23[lVar16]; + iVar9 = iVar9 + param_10; + piVar24[lVar16] = (uint)bVar6; + *(uint *)(puVar12 + lVar16 * 4) = (uint)bVar6; + iVar20 = iVar20 + (uint)bVar6; + piVar43[lVar16] = iVar20; + lVar16 = lVar16 + lVar10; + iVar4 = *param_9; + } while (iVar9 < iVar4); + } + else { + dVar41 = 0.0; + lVar16 = 0; + iVar20 = 0; + iVar9 = 0; + do { + bVar6 = pbVar23[lVar16]; + iVar9 = iVar9 + param_10; + piVar24[lVar16] = (uint)bVar6; + *(uint *)(puVar12 + lVar16 * 4) = (uint)bVar6; + uVar8 = (uint)bVar6; + iVar20 = iVar20 + uVar8; + piVar43[lVar16] = iVar20; + iVar4 = *param_9; + dVar41 = dVar41 + (double)uVar8 * (double)uVar8; + pdVar33[lVar16] = dVar41; + lVar16 = lVar16 + lVar10; + } while (iVar9 < iVar4); + } + if (param_10 == iVar4) { + *(undefined4 *)(puVar12 + lVar10 * 4) = 0; + } + } + if (pdVar33 != (double *)0x0) { + pdVar33[iVar18] = 0.0; + pdVar33 = pdVar33 + 1; + } + piVar43 = piVar43 + 1; + pbVar23 = pbVar23 + 1; + piVar24 = piVar24 + 1; + puVar12 = puVar12 + 4; + } while (piVar43 != piVar32); + param_1 = param_1 + lVar1; + local_440 = local_440 + lVar1; + piVar43 = piVar32; + puVar12 = puVar2 + lVar1 * 4; + } + iVar18 = param_9[1]; + if (1 < iVar18) { + lVar31 = (long)param_10; + lVar16 = (long)-param_10; + lVar10 = (ulong)(param_10 - 1) + 1; + lVar46 = NEON_shl(lVar31,3); + uVar36 = -(ulong)((uint)-iVar39 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar39 << 2; + lVar28 = lVar31 * 4; + lVar13 = (lVar31 + iVar39) * -4; + iVar9 = 1; + lVar42 = NEON_shl(lVar16,3); + lVar45 = NEON_shl(lVar10,2); + lVar1 = lVar31 * -0xc + (long)(param_10 - iVar34) * 4; + do { + piVar43 = (int *)((long)piVar43 + + (-(ulong)((uint)(iVar39 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar39 - param_10) << 2)); + if (pdVar33 != (double *)0x0) { + pdVar33 = (double *) + ((long)pdVar33 + + (-(ulong)((uint)(iVar22 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar22 - param_10) << 3)); + } + param_1 = param_1 + (param_2 - param_10); + local_440 = (int *)((long)local_440 + + (-(ulong)((uint)(iVar34 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar34 - param_10) << 2)); + puVar12 = puVar12 + lVar16 * 4; + if (0 < param_10) { + pbVar23 = param_1 + lVar31; + puVar30 = puVar12 + lVar28; + piVar21 = local_440 + lVar31; + piVar44 = (int *)((long)local_440 + + (-(ulong)((uint)-iVar34 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar34 << 2)); + piVar29 = piVar43 + lVar31; + pbVar3 = param_1 + lVar10; + puVar19 = puVar12; + piVar24 = piVar43; + piVar32 = local_440; + do { + bVar6 = *param_1; + uVar17 = (uint)bVar6; + uVar8 = (uint)bVar6; + piVar24[lVar16] = 0; + dVar41 = (double)uVar17 * (double)bVar6; + uVar15 = (uint)bVar6; + uVar14 = (uint)bVar6; + iVar18 = param_10; + if (pdVar33 == (double *)0x0) { + piVar32[lVar16] = *piVar44; + *piVar24 = (uint)bVar6 + *(int *)((long)piVar24 + uVar36); + *piVar32 = uVar14 + *piVar44 + *(int *)(puVar19 + lVar28); + iVar20 = *param_9; + if (iVar20 - param_10 <= param_10) goto LAB_00226c48; + lVar27 = 0; + lVar35 = lVar46; + uVar8 = uVar17; + do { + lVar25 = lVar35; + iVar20 = *(int *)(puVar30 + lVar27 * 4); + iVar18 = iVar18 + param_10; + lVar37 = lVar31 * 2 + lVar27; + puVar38 = (uint *)(puVar19 + lVar25); + *(uint *)(puVar19 + lVar27 * 4) = iVar20 + uVar14; + bVar6 = pbVar23[lVar27]; + uVar14 = (uint)bVar6; + uVar15 = (uint)bVar6; + uVar8 = uVar8 + uVar15; + piVar29[lVar27] = *(int *)((long)piVar24 + lVar25 + lVar13) + uVar8; + piVar21[lVar27] = + (uint)bVar6 + *(int *)(puVar19 + lVar25) + + *(int *)((long)piVar32 + lVar25 + lVar1) + iVar20; + lVar27 = lVar37 - lVar31; + iVar20 = *param_9; + dVar41 = dVar41 + (double)bVar6 * (double)uVar15; + lVar35 = lVar25 + lVar28; + } while (iVar18 < iVar20 - param_10); + } + else { + *(undefined8 *)((long)pdVar33 + lVar42) = 0; + piVar32[lVar16] = *piVar44; + dVar40 = *(double *) + ((long)pdVar33 + + (-(ulong)((uint)-iVar22 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar22 << 3)); + *piVar24 = uVar14 + *(int *)((long)piVar24 + uVar36); + iVar20 = *piVar44; + iVar4 = *(int *)(puVar19 + lVar28); + *pdVar33 = dVar41 + dVar40; + *piVar32 = uVar14 + iVar20 + iVar4; + iVar20 = *param_9; + if (param_10 < iVar20 - param_10) { + lVar35 = 0; + lVar27 = lVar46; + uVar8 = uVar17; + uVar14 = uVar15; + do { + lVar25 = lVar27; + iVar20 = *(int *)(puVar30 + lVar35 * 4); + iVar18 = iVar18 + param_10; + dVar40 = *(double *)((long)pdVar33 + lVar35 * 8 + lVar46 + (long)iVar22 * -8); + lVar37 = lVar35 + lVar31 * 2; + *(uint *)(puVar19 + lVar35 * 4) = iVar20 + uVar14; + puVar38 = (uint *)(puVar19 + lVar25); + bVar6 = pbVar23[lVar35]; + uVar14 = (uint)bVar6; + uVar15 = (uint)bVar6; + uVar8 = uVar8 + bVar6; + piVar29[lVar35] = *(int *)((long)piVar24 + lVar25 + lVar13) + uVar8; + iVar4 = *(int *)(puVar19 + lVar25); + iVar5 = *(int *)((long)piVar32 + lVar25 + lVar1); + dVar41 = dVar41 + (double)bVar6 * (double)(uint)bVar6; + *(double *)((long)pdVar33 + lVar35 * 8 + lVar46) = dVar40 + dVar41; + piVar21[lVar35] = (uint)bVar6 + iVar4 + iVar5 + iVar20; + lVar35 = lVar37 - lVar31; + iVar20 = *param_9; + lVar27 = lVar25 + lVar28; + } while (iVar18 < iVar20 - param_10); + } + else { +LAB_00226c48: + puVar38 = (uint *)(puVar19 + lVar28); + lVar25 = lVar28; + lVar37 = lVar31; + } + } + if (param_10 < iVar20) { + uVar14 = *puVar38; + *(uint *)(puVar19 + (long)(iVar18 - param_10) * 4) = uVar14 + uVar15; + bVar6 = param_1[lVar37]; + uVar15 = (uint)bVar6; + *(uint *)((long)piVar24 + lVar25) = piVar24[iVar18 - iVar39] + uVar8 + bVar6; + if (pdVar33 != (double *)0x0) { + pdVar33[lVar37] = + pdVar33[iVar18 - iVar22] + dVar41 + (double)uVar15 * (double)(uint)bVar6; + } + *(uint *)((long)piVar32 + lVar25) = + uVar15 + uVar14 + piVar32[(iVar18 - iVar34) - param_10]; + *puVar38 = uVar15; + } + piVar24 = piVar24 + 1; + if (pdVar33 != (double *)0x0) { + pdVar33 = pdVar33 + 1; + } + piVar32 = piVar32 + 1; + puVar19 = puVar19 + 4; + param_1 = param_1 + 1; + puVar30 = puVar30 + 4; + pbVar23 = pbVar23 + 1; + piVar29 = piVar29 + 1; + piVar21 = piVar21 + 1; + piVar44 = piVar44 + 1; + } while (param_1 != pbVar3); + piVar43 = (int *)((long)piVar43 + lVar45); + puVar12 = puVar12 + lVar45; + local_440 = (int *)((long)local_440 + lVar45); + iVar18 = param_9[1]; + param_1 = pbVar3; + } + iVar9 = iVar9 + 1; + } while (iVar9 < iVar18); + } + if (bVar7) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar33 = (double *)((long)param_5 + (long)(param_10 + iVar22) * 8); + if (param_7 != (void *)0x0) goto LAB_00226528; + if (pdVar33 == (double *)0x0) goto LAB_0022656c; +LAB_00226ca8: + iVar34 = param_9[1]; + if (0 < iVar34) { + lVar1 = (ulong)(param_10 - 1) + 1; + iVar18 = 0; + do { + if (0 < param_10) { + piVar24 = piVar43 + lVar1; + pdVar26 = pdVar33; + pbVar23 = param_1; + do { + piVar43[-param_10] = 0; + iVar34 = *param_9; + pdVar26[-param_10] = 0.0; + if (0 < iVar34) { + dVar41 = 0.0; + lVar10 = 0; + iVar9 = 0; + iVar34 = 0; + do { + bVar6 = pbVar23[lVar10]; + iVar34 = iVar34 + param_10; + dVar40 = *(double *) + ((long)pdVar26 + + lVar10 * 8 + + (-(ulong)((uint)-iVar22 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar22 << 3)); + iVar9 = iVar9 + (uint)bVar6; + piVar43[lVar10] = + *(int *)((long)piVar43 + + lVar10 * 4 + + (-(ulong)((uint)-iVar39 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar39 << 2)) + iVar9; + iVar20 = *param_9; + dVar41 = dVar41 + (double)bVar6 * (double)bVar6; + pdVar26[lVar10] = dVar41 + dVar40; + lVar10 = lVar10 + param_10; + } while (iVar34 < iVar20); + } + piVar43 = piVar43 + 1; + pbVar23 = pbVar23 + 1; + pdVar26 = pdVar26 + 1; + } while (piVar43 != piVar24); + pdVar33 = pdVar33 + lVar1; + param_1 = param_1 + lVar1; + iVar34 = param_9[1]; + piVar43 = piVar24; + } + iVar18 = iVar18 + 1; + piVar43 = (int *)((long)piVar43 + + (-(ulong)((uint)(iVar39 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar39 - param_10) << 2)); + pdVar33 = (double *) + ((long)pdVar33 + + (-(ulong)((uint)(iVar22 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar22 - param_10) << 3)); + param_1 = param_1 + (param_2 - param_10); + } while (iVar18 < iVar34); + } + } + return; +} + + +================================================================== + +### FUNC 00226e04 (52 bytes) name=FUN_00226e04 + +void FUN_00226e04(void) + +{ + FUN_00226460(); + return; +} + + +================================================================== + +### FUNC 00226e38 (2432 bytes) name=FUN_00226e38 + +void FUN_00226e38(byte *param_1,int param_2,void *param_3,ulong param_4,void *param_5,ulong param_6, + void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + byte *pbVar3; + byte bVar4; + int iVar5; + bool bVar6; + int iVar7; + int iVar8; + long lVar9; + ulong uVar10; + undefined1 *puVar11; + long lVar12; + uint uVar13; + uint uVar14; + undefined1 *puVar15; + int iVar16; + int *piVar17; + byte *pbVar18; + int iVar19; + int *piVar20; + long lVar21; + int *piVar22; + long lVar23; + int *piVar24; + int iVar25; + undefined1 *puVar26; + uint *puVar27; + long lVar28; + int *piVar29; + long lVar30; + long lVar31; + ulong uVar32; + long lVar33; + int iVar34; + uint uVar35; + int *piVar36; + long lVar37; + long lVar38; + int *piVar39; + int *piVar40; + undefined1 auStack_420 [1056]; + + iVar7 = *param_9; + iVar5 = (int)(param_4 >> 2); + *param_9 = param_10 * iVar7; + iVar25 = (int)(param_6 >> 2); + uVar35 = param_10 + param_10 * iVar7; + iVar7 = (int)(param_8 >> 2); + memset(param_3,0,-(ulong)(uVar35 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar35 << 2); + piVar36 = (int *)((long)param_3 + (long)(param_10 + iVar5) * 4); + if (param_5 == (void *)0x0) { + piVar29 = (int *)0x0; + if (param_7 == (void *)0x0) goto LAB_00226f54; +LAB_00226f10: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + piVar22 = (int *)((long)param_7 + (long)(param_10 + iVar7) * 4); + bVar6 = piVar22 == (int *)0x0; + if (piVar29 == (int *)0x0) { + if (bVar6) { +LAB_00226f54: + iVar7 = param_9[1]; + if (iVar7 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar25 = 0; + do { + if (0 < param_10) { + piVar29 = piVar36 + lVar1; + pbVar18 = param_1; + do { + *(undefined4 *) + ((long)piVar36 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2 + )) = 0; + if (0 < *param_9) { + lVar9 = 0; + iVar16 = 0; + iVar7 = 0; + do { + iVar7 = iVar7 + param_10; + iVar16 = iVar16 + (uint)pbVar18[lVar9]; + piVar36[lVar9] = + *(int *)((long)piVar36 + + lVar9 * 4 + + (-(ulong)((uint)-iVar5 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar5 << 2)) + iVar16; + lVar9 = lVar9 + param_10; + } while (iVar7 < *param_9); + } + piVar36 = piVar36 + 1; + pbVar18 = pbVar18 + 1; + } while (piVar36 != piVar29); + param_1 = param_1 + lVar1; + iVar7 = param_9[1]; + piVar36 = piVar29; + } + iVar25 = iVar25 + 1; + piVar36 = (int *)((long)piVar36 + + (-(ulong)((uint)(iVar5 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar5 - param_10) << 2)); + param_1 = param_1 + (param_2 - param_10); + } while (iVar25 < iVar7); + return; + } + } + else if (bVar6) goto LAB_00227674; + puVar2 = auStack_420; + uVar32 = (ulong)(param_10 + *param_9); + if (0x108 < uVar32) { + uVar10 = uVar32 << 2; + if (0x1fc0000000000000 < uVar32) { + uVar10 = 0xffffffffffffffff; + } + puVar11 = operator_new__(uVar10); + bVar6 = puVar11 != puVar2; + puVar2 = puVar11; + } + puVar11 = puVar2; + if (0 < param_10) { + lVar9 = (long)param_10; + lVar1 = (ulong)(param_10 - 1) + 1; + piVar24 = piVar36 + lVar1; + uVar32 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + piVar20 = piVar22; + pbVar18 = param_1; + do { + *(undefined4 *)((long)piVar20 + uVar32) = 0; + *(undefined4 *)((long)piVar36 + uVar32) = 0; + if (0 < *param_9) { + if (piVar29 == (int *)0x0) { + iVar8 = 0; + iVar16 = 0; + lVar12 = 0; + do { + bVar4 = pbVar18[lVar12]; + iVar16 = iVar16 + param_10; + piVar20[lVar12] = (uint)bVar4; + *(uint *)(puVar11 + lVar12 * 4) = (uint)bVar4; + iVar8 = iVar8 + (uint)bVar4; + piVar36[lVar12] = iVar8; + lVar12 = lVar12 + lVar9; + iVar34 = *param_9; + } while (iVar16 < iVar34); + } + else { + lVar12 = 0; + iVar19 = 0; + iVar8 = 0; + iVar16 = 0; + do { + bVar4 = pbVar18[lVar12]; + iVar16 = iVar16 + param_10; + piVar20[lVar12] = (uint)bVar4; + *(uint *)(puVar11 + lVar12 * 4) = (uint)bVar4; + uVar35 = (uint)bVar4; + iVar8 = iVar8 + uVar35; + iVar19 = iVar19 + uVar35 * uVar35; + piVar36[lVar12] = iVar8; + piVar29[lVar12] = iVar19; + lVar12 = lVar12 + lVar9; + iVar34 = *param_9; + } while (iVar16 < iVar34); + } + if (param_10 == iVar34) { + *(undefined4 *)(puVar11 + lVar9 * 4) = 0; + } + } + if (piVar29 != (int *)0x0) { + *(undefined4 *)((long)piVar29 + uVar32) = 0; + piVar29 = piVar29 + 1; + } + piVar36 = piVar36 + 1; + pbVar18 = pbVar18 + 1; + piVar20 = piVar20 + 1; + puVar11 = puVar11 + 4; + } while (piVar36 != piVar24); + param_1 = param_1 + lVar1; + piVar22 = piVar22 + lVar1; + piVar36 = piVar24; + puVar11 = puVar2 + lVar1 * 4; + } + iVar16 = param_9[1]; + if (1 < iVar16) { + lVar9 = (ulong)(param_10 - 1) + 1; + uVar10 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + uVar32 = -(ulong)((uint)-iVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar5 << 2; + lVar28 = (long)param_10; + lVar12 = (lVar28 + iVar5) * -4; + lVar23 = lVar28 * 4; + lVar38 = NEON_shl(lVar28,3); + iVar8 = 1; + lVar37 = NEON_shl(lVar9,2); + lVar1 = lVar28 * -0xc + (long)(param_10 - iVar7) * 4; + do { + piVar36 = (int *)((long)piVar36 + + (-(ulong)((uint)(iVar5 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar5 - param_10) << 2)); + puVar11 = puVar11 + uVar10; + if (piVar29 != (int *)0x0) { + piVar29 = (int *)((long)piVar29 + + (-(ulong)((uint)(iVar25 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar25 - param_10) << 2)); + } + param_1 = param_1 + (param_2 - param_10); + piVar22 = (int *)((long)piVar22 + + (-(ulong)((uint)(iVar7 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar7 - param_10) << 2)); + if (0 < param_10) { + piVar17 = piVar22 + lVar28; + piVar40 = (int *)((long)piVar22 + + (-(ulong)((uint)-iVar7 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar7 << 2)); + puVar26 = puVar11 + lVar23; + pbVar18 = param_1 + lVar28; + piVar24 = piVar36 + lVar28; + pbVar3 = param_1 + lVar9; + puVar15 = puVar11; + piVar20 = piVar36; + piVar39 = piVar22; + do { + bVar4 = *param_1; + uVar35 = (uint)bVar4; + iVar34 = (uint)bVar4 * (uint)bVar4; + *(undefined4 *)((long)piVar20 + uVar10) = 0; + uVar14 = (uint)bVar4; + uVar13 = (uint)bVar4; + iVar16 = param_10; + if (piVar29 == (int *)0x0) { + *(int *)((long)piVar39 + uVar10) = *piVar40; + *piVar20 = uVar13 + *(int *)((long)piVar20 + uVar32); + *piVar39 = uVar13 + *piVar40 + *(int *)(puVar15 + lVar23); + iVar19 = *param_9; + if (iVar19 - param_10 <= param_10) goto LAB_00227614; + lVar21 = 0; + lVar31 = lVar38; + uVar13 = uVar14; + do { + lVar33 = lVar31; + iVar19 = *(int *)(puVar26 + lVar21 * 4); + iVar16 = iVar16 + param_10; + lVar30 = lVar28 * 2 + lVar21; + puVar27 = (uint *)(puVar15 + lVar33); + *(uint *)(puVar15 + lVar21 * 4) = iVar19 + uVar13; + bVar4 = pbVar18[lVar21]; + uVar13 = (uint)bVar4; + uVar14 = (uint)bVar4; + uVar35 = uVar35 + uVar14; + piVar24[lVar21] = *(int *)((long)piVar20 + lVar33 + lVar12) + uVar35; + iVar34 = iVar34 + uVar14 * bVar4; + piVar17[lVar21] = + (uint)bVar4 + *(int *)(puVar15 + lVar33) + + *(int *)((long)piVar39 + lVar33 + lVar1) + iVar19; + lVar21 = lVar30 - lVar28; + iVar19 = *param_9; + lVar31 = lVar33 + lVar23; + } while (iVar16 < iVar19 - param_10); + } + else { + *(undefined4 *)((long)piVar29 + uVar10) = 0; + *(int *)((long)piVar39 + uVar10) = *piVar40; + *piVar20 = uVar14 + *(int *)((long)piVar20 + uVar32); + *piVar29 = iVar34 + *(int *)((long)piVar29 + + (-(ulong)((uint)-iVar25 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar25 << 2)); + *piVar39 = uVar13 + *piVar40 + *(int *)(puVar15 + lVar23); + iVar19 = *param_9; + if (param_10 < iVar19 - param_10) { + lVar31 = 0; + lVar21 = lVar38; + do { + lVar33 = lVar21; + iVar19 = *(int *)(puVar26 + lVar31 * 4); + iVar16 = iVar16 + param_10; + lVar30 = lVar31 + lVar28 * 2; + puVar27 = (uint *)(puVar15 + lVar33); + *(uint *)(puVar15 + lVar31 * 4) = iVar19 + uVar13; + bVar4 = pbVar18[lVar31]; + uVar13 = (uint)bVar4; + uVar14 = (uint)bVar4; + uVar35 = uVar35 + bVar4; + piVar24[lVar31] = *(int *)((long)piVar20 + lVar33 + lVar12) + uVar35; + iVar34 = iVar34 + (uint)bVar4 * (uint)bVar4; + piVar29[lVar28 + lVar31] = + *(int *)((long)piVar29 + lVar33 + (lVar28 + iVar25) * -4) + iVar34; + piVar17[lVar31] = + (uint)bVar4 + *(int *)(puVar15 + lVar33) + + *(int *)((long)piVar39 + lVar33 + lVar1) + iVar19; + lVar31 = lVar30 - lVar28; + iVar19 = *param_9; + lVar21 = lVar33 + lVar23; + } while (iVar16 < iVar19 - param_10); + } + else { +LAB_00227614: + puVar27 = (uint *)(puVar15 + lVar23); + lVar30 = lVar28; + lVar33 = lVar23; + } + } + if (param_10 < iVar19) { + uVar13 = *puVar27; + *(uint *)(puVar15 + (long)(iVar16 - param_10) * 4) = uVar13 + uVar14; + bVar4 = param_1[lVar30]; + *(uint *)((long)piVar20 + lVar33) = piVar20[iVar16 - iVar5] + uVar35 + bVar4; + uVar35 = (uint)bVar4; + if (piVar29 != (int *)0x0) { + *(uint *)((long)piVar29 + lVar33) = + piVar29[iVar16 - iVar25] + iVar34 + bVar4 * uVar35; + } + *(uint *)((long)piVar39 + lVar33) = + uVar35 + uVar13 + piVar39[(iVar16 - iVar7) - param_10]; + *puVar27 = uVar35; + } + piVar20 = piVar20 + 1; + if (piVar29 != (int *)0x0) { + piVar29 = piVar29 + 1; + } + puVar15 = puVar15 + 4; + puVar26 = puVar26 + 4; + param_1 = param_1 + 1; + pbVar18 = pbVar18 + 1; + piVar24 = piVar24 + 1; + piVar17 = piVar17 + 1; + piVar39 = piVar39 + 1; + piVar40 = piVar40 + 1; + } while (param_1 != pbVar3); + piVar36 = (int *)((long)piVar36 + lVar37); + puVar11 = puVar11 + lVar37; + piVar22 = (int *)((long)piVar22 + lVar37); + iVar16 = param_9[1]; + param_1 = pbVar3; + } + iVar8 = iVar8 + 1; + } while (iVar8 < iVar16); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + piVar29 = (int *)((long)param_5 + (long)(param_10 + iVar25) * 4); + if (param_7 != (void *)0x0) goto LAB_00226f10; + if (piVar29 == (int *)0x0) goto LAB_00226f54; +LAB_00227674: + iVar7 = param_9[1]; + if (0 < iVar7) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar32 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + iVar16 = 0; + do { + if (0 < param_10) { + piVar20 = piVar36 + lVar1; + piVar22 = piVar29; + pbVar18 = param_1; + do { + *(undefined4 *)((long)piVar36 + uVar32) = 0; + *(undefined4 *)((long)piVar22 + uVar32) = 0; + if (0 < *param_9) { + lVar9 = 0; + iVar34 = 0; + iVar8 = 0; + iVar7 = 0; + do { + bVar4 = pbVar18[lVar9]; + iVar7 = iVar7 + param_10; + iVar19 = *(int *)((long)piVar22 + + lVar9 * 4 + + (-(ulong)((uint)-iVar25 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar25 << 2)); + iVar8 = iVar8 + (uint)bVar4; + iVar34 = iVar34 + (uint)bVar4 * (uint)bVar4; + piVar36[lVar9] = + *(int *)((long)piVar36 + + lVar9 * 4 + + (-(ulong)((uint)-iVar5 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar5 << 2)) + iVar8; + piVar22[lVar9] = iVar34 + iVar19; + lVar9 = lVar9 + param_10; + } while (iVar7 < *param_9); + } + piVar36 = piVar36 + 1; + pbVar18 = pbVar18 + 1; + piVar22 = piVar22 + 1; + } while (piVar36 != piVar20); + piVar29 = piVar29 + lVar1; + param_1 = param_1 + lVar1; + iVar7 = param_9[1]; + piVar36 = piVar20; + } + iVar16 = iVar16 + 1; + piVar36 = (int *)((long)piVar36 + + (-(ulong)((uint)(iVar5 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar5 - param_10) << 2)); + piVar29 = (int *)((long)piVar29 + + (-(ulong)((uint)(iVar25 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar25 - param_10) << 2)); + param_1 = param_1 + (param_2 - param_10); + } while (iVar16 < iVar7); + } + } + return; +} + + +================================================================== + +### FUNC 002277b8 (52 bytes) name=FUN_002277b8 + +void FUN_002277b8(void) + +{ + FUN_00226e38(); + return; +} + + +================================================================== + +### FUNC 002277ec (2448 bytes) name=FUN_002277ec + +void FUN_002277ec(byte *param_1,int param_2,void *param_3,ulong param_4,void *param_5,ulong param_6, + void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + uint uVar3; + byte *pbVar4; + byte bVar5; + bool bVar6; + int iVar7; + long lVar8; + ulong uVar9; + undefined1 *puVar10; + long lVar11; + long lVar12; + long lVar13; + long lVar14; + undefined1 *puVar15; + int iVar16; + byte *pbVar17; + undefined1 *puVar18; + double *pdVar19; + float *pfVar20; + float *pfVar21; + float *pfVar22; + long lVar23; + long lVar24; + float *pfVar25; + long lVar26; + int iVar27; + double *pdVar28; + long lVar29; + ulong uVar30; + int iVar31; + int iVar32; + int iVar33; + double dVar34; + float fVar35; + float fVar36; + double dVar37; + float fVar38; + float *pfVar39; + float fVar40; + float fVar41; + long lVar42; + int iVar43; + long lVar44; + int iVar45; + float *local_448; + undefined1 auStack_420 [1056]; + + iVar31 = *param_9; + iVar32 = (int)(param_4 >> 2); + *param_9 = param_10 * iVar31; + uVar3 = param_10 + param_10 * iVar31; + iVar31 = (int)(param_8 >> 2); + iVar33 = (int)(param_6 >> 3); + memset(param_3,0,-(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2); + pfVar39 = (float *)((long)param_3 + (long)(param_10 + iVar32) * 4); + if (param_5 == (void *)0x0) { + pdVar28 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_002278f0; +LAB_002278b0: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + local_448 = (float *)((long)param_7 + (long)(param_10 + iVar31) * 4); + bVar6 = local_448 == (float *)0x0; + if (pdVar28 == (double *)0x0) { + if (bVar6) { +LAB_002278f0: + iVar31 = param_9[1]; + if (iVar31 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar33 = 0; + do { + if (0 < param_10) { + iVar43 = *param_9; + pfVar20 = pfVar39 + lVar1; + pbVar17 = param_1; + do { + *(undefined4 *) + ((long)pfVar39 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2 + )) = 0; + if (0 < iVar43) { + fVar35 = 0.0; + lVar8 = 0; + iVar7 = 0; + do { + iVar7 = iVar7 + param_10; + fVar35 = fVar35 + (float)pbVar17[lVar8]; + pfVar39[lVar8] = + *(float *)((long)pfVar39 + + lVar8 * 4 + + (-(ulong)((uint)-iVar32 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar32 << 2)) + fVar35; + lVar8 = lVar8 + param_10; + } while (iVar7 < iVar43); + } + pfVar39 = pfVar39 + 1; + pbVar17 = pbVar17 + 1; + } while (pfVar39 != pfVar20); + param_1 = param_1 + lVar1; + pfVar39 = pfVar20; + } + iVar33 = iVar33 + 1; + param_1 = param_1 + (param_2 - param_10); + pfVar39 = (float *)((long)pfVar39 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar32 - param_10) << 2)); + } while (iVar33 != iVar31); + return; + } + } + else if (bVar6) goto LAB_00228024; + puVar2 = auStack_420; + uVar30 = (ulong)(param_10 + *param_9); + if (0x108 < uVar30) { + uVar9 = uVar30 << 2; + if (0x1fc0000000000000 < uVar30) { + uVar9 = 0xffffffffffffffff; + } + puVar10 = operator_new__(uVar9); + bVar6 = puVar10 != puVar2; + puVar2 = puVar10; + } + puVar10 = puVar2; + if (0 < param_10) { + iVar7 = -param_10; + lVar1 = (ulong)(param_10 - 1) + 1; + lVar8 = (long)param_10; + iVar43 = *param_9; + pfVar22 = pfVar39 + lVar1; + pfVar20 = local_448; + pbVar17 = param_1; + do { + pfVar20[iVar7] = 0.0; + pfVar39[iVar7] = 0.0; + if (iVar43 < 1) { +LAB_00227ffc: + if (pdVar28 != (double *)0x0) { +LAB_00227b14: + pdVar28[iVar7] = 0.0; + pdVar28 = pdVar28 + 1; + } + } + else { + if (pdVar28 != (double *)0x0) { + dVar37 = 0.0; + lVar14 = 0; + fVar35 = 0.0; + iVar16 = 0; + do { + bVar5 = pbVar17[lVar14]; + iVar16 = iVar16 + param_10; + dVar37 = dVar37 + (double)bVar5 * (double)bVar5; + fVar35 = fVar35 + (float)bVar5; + pfVar20[lVar14] = (float)bVar5; + *(float *)(puVar10 + lVar14 * 4) = (float)bVar5; + pfVar39[lVar14] = fVar35; + pdVar28[lVar14] = dVar37; + lVar14 = lVar14 + lVar8; + } while (iVar16 < iVar43); + if (param_10 == iVar43) goto LAB_00227ff8; + goto LAB_00227b14; + } + fVar35 = 0.0; + iVar16 = 0; + lVar14 = 0; + do { + iVar16 = iVar16 + param_10; + fVar38 = (float)pbVar17[lVar14]; + fVar35 = fVar35 + (float)pbVar17[lVar14]; + pfVar20[lVar14] = fVar38; + *(float *)(puVar10 + lVar14 * 4) = fVar38; + pfVar39[lVar14] = fVar35; + lVar14 = lVar14 + lVar8; + } while (iVar16 < iVar43); + if (param_10 == iVar43) { +LAB_00227ff8: + *(undefined4 *)(puVar10 + lVar8 * 4) = 0; + goto LAB_00227ffc; + } + } + pfVar39 = pfVar39 + 1; + pbVar17 = pbVar17 + 1; + pfVar20 = pfVar20 + 1; + puVar10 = puVar10 + 4; + } while (pfVar39 != pfVar22); + param_1 = param_1 + lVar1; + local_448 = local_448 + lVar1; + puVar10 = puVar2 + lVar1 * 4; + pfVar39 = pfVar22; + } + iVar43 = param_9[1]; + if (1 < iVar43) { + lVar14 = (long)-param_10; + lVar8 = (ulong)(param_10 - 1) + 1; + lVar24 = (long)param_10; + lVar44 = NEON_shl(lVar14,3); + lVar23 = lVar24 * 4; + lVar11 = (lVar24 + iVar32) * -4; + lVar42 = NEON_shl(lVar8,2); + iVar7 = 1; + uVar30 = -(ulong)((uint)-iVar32 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar32 << 2; + lVar1 = lVar24 * -0xc + (long)(param_10 - iVar31) * 4; + do { + pfVar39 = (float *)((long)pfVar39 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar32 - param_10) << 2)); + if (pdVar28 != (double *)0x0) { + pdVar28 = (double *) + ((long)pdVar28 + + (-(ulong)((uint)(iVar33 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar33 - param_10) << 3)); + } + param_1 = param_1 + (param_2 - param_10); + local_448 = (float *)((long)local_448 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar31 - param_10) << 2)); + puVar10 = puVar10 + lVar14 * 4; + if (0 < param_10) { + pbVar17 = param_1 + lVar24; + iVar45 = *param_9; + pfVar25 = (float *)((long)local_448 + + (-(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar31 << 2)); + puVar18 = puVar10 + lVar23; + iVar16 = iVar45 - param_10; + pbVar4 = param_1 + lVar8; + puVar15 = puVar10; + pfVar20 = pfVar39; + pfVar22 = local_448; + do { + bVar5 = *param_1; + pfVar20[lVar14] = 0.0; + fVar38 = (float)bVar5; + fVar35 = *pfVar25; + dVar37 = (double)bVar5 * (double)bVar5; + iVar27 = param_10; + if (pdVar28 == (double *)0x0) { + pfVar22[lVar14] = fVar35; + *pfVar20 = fVar38 + *(float *)((long)pfVar20 + uVar30); + *pfVar22 = fVar38 + *pfVar25 + *(float *)(puVar15 + lVar23); + if (iVar16 <= param_10) goto LAB_00228004; + lVar13 = 0; + lVar12 = lVar24 * 8; + fVar35 = fVar38; + do { + lVar26 = lVar12; + fVar36 = *(float *)(puVar18 + lVar13 * 4); + iVar27 = iVar27 + param_10; + lVar29 = lVar24 * 2 + lVar13; + pfVar21 = (float *)(puVar15 + lVar26); + *(float *)(puVar15 + lVar13 * 4) = fVar36 + fVar35; + bVar5 = pbVar17[lVar13]; + fVar35 = (float)bVar5; + fVar38 = fVar38 + fVar35; + dVar37 = dVar37 + (double)bVar5 * (double)bVar5; + pfVar20[lVar24 + lVar13] = *(float *)((long)pfVar20 + lVar26 + lVar11) + fVar38; + pfVar22[lVar24 + lVar13] = + fVar35 + *(float *)(puVar15 + lVar26) + + *(float *)((long)pfVar22 + lVar26 + lVar1) + fVar36; + lVar13 = lVar29 - lVar24; + lVar12 = lVar26 + lVar23; + } while (iVar27 < iVar16); + } + else { + *(undefined8 *)((long)pdVar28 + lVar44) = 0; + dVar34 = *(double *) + ((long)pdVar28 + + (-(ulong)((uint)-iVar33 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar33 << 3)); + pfVar22[lVar14] = fVar35; + *pfVar20 = fVar38 + *(float *)((long)pfVar20 + uVar30); + fVar35 = *pfVar25; + fVar36 = *(float *)(puVar15 + lVar23); + *pdVar28 = dVar37 + dVar34; + *pfVar22 = fVar38 + fVar35 + fVar36; + if (param_10 < iVar16) { + lVar12 = 0; + lVar13 = lVar24 * 8; + fVar35 = fVar38; + do { + lVar26 = lVar13; + fVar41 = *(float *)(puVar18 + lVar12 * 4); + iVar27 = iVar27 + param_10; + dVar34 = pdVar28[(lVar24 + lVar12) - (long)iVar33]; + lVar29 = lVar12 + lVar24 * 2; + pfVar21 = (float *)(puVar15 + lVar26); + *(float *)(puVar15 + lVar12 * 4) = fVar41 + fVar35; + bVar5 = pbVar17[lVar12]; + fVar35 = (float)bVar5; + fVar38 = fVar38 + fVar35; + dVar37 = dVar37 + (double)bVar5 * (double)bVar5; + pfVar20[lVar24 + lVar12] = *(float *)((long)pfVar20 + lVar26 + lVar11) + fVar38; + fVar36 = *(float *)(puVar15 + lVar26); + fVar40 = *(float *)((long)pfVar22 + lVar26 + lVar1); + pdVar28[lVar24 + lVar12] = dVar34 + dVar37; + pfVar22[lVar24 + lVar12] = fVar35 + fVar36 + fVar40 + fVar41; + lVar12 = lVar29 - lVar24; + lVar13 = lVar26 + lVar23; + } while (iVar27 < iVar16); + } + else { +LAB_00228004: + pfVar21 = (float *)(puVar15 + lVar23); + lVar26 = lVar23; + lVar29 = lVar24; + fVar35 = fVar38; + } + } + if (param_10 < iVar45) { + fVar36 = *pfVar21; + *(float *)(puVar15 + (long)(iVar27 - param_10) * 4) = fVar36 + fVar35; + bVar5 = param_1[lVar29]; + fVar35 = (float)bVar5; + *(float *)((long)pfVar20 + lVar26) = pfVar20[iVar27 - iVar32] + fVar38 + fVar35; + if (pdVar28 != (double *)0x0) { + pdVar28[lVar29] = pdVar28[iVar27 - iVar33] + dVar37 + (double)bVar5 * (double)bVar5; + } + *(float *)((long)pfVar22 + lVar26) = + fVar35 + fVar36 + pfVar22[(iVar27 - iVar31) - param_10]; + *pfVar21 = fVar35; + } + if (pdVar28 != (double *)0x0) { + pdVar28 = pdVar28 + 1; + } + param_1 = param_1 + 1; + pfVar20 = pfVar20 + 1; + pfVar22 = pfVar22 + 1; + puVar15 = puVar15 + 4; + pfVar25 = pfVar25 + 1; + puVar18 = puVar18 + 4; + pbVar17 = pbVar17 + 1; + } while (param_1 != pbVar4); + pfVar39 = (float *)((long)pfVar39 + lVar42); + puVar10 = puVar10 + lVar42; + local_448 = (float *)((long)local_448 + lVar42); + param_1 = pbVar4; + } + iVar7 = iVar7 + 1; + } while (iVar7 < iVar43); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar28 = (double *)((long)param_5 + (long)(param_10 + iVar33) * 8); + if (param_7 != (void *)0x0) goto LAB_002278b0; + if (pdVar28 == (double *)0x0) goto LAB_002278f0; +LAB_00228024: + iVar31 = param_9[1]; + if (0 < iVar31) { + lVar1 = (ulong)(param_10 - 1) + 1; + iVar43 = 0; + do { + if (0 < param_10) { + iVar7 = *param_9; + pfVar20 = pfVar39 + lVar1; + pdVar19 = pdVar28; + pbVar17 = param_1; + do { + pfVar39[-param_10] = 0.0; + pdVar19[-param_10] = 0.0; + if (0 < iVar7) { + dVar37 = 0.0; + lVar8 = 0; + fVar35 = 0.0; + iVar16 = 0; + do { + bVar5 = pbVar17[lVar8]; + iVar16 = iVar16 + param_10; + dVar34 = *(double *) + ((long)pdVar19 + + lVar8 * 8 + + (-(ulong)((uint)-iVar33 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar33 << 3)); + dVar37 = dVar37 + (double)bVar5 * (double)bVar5; + fVar35 = fVar35 + (float)bVar5; + pfVar39[lVar8] = + *(float *)((long)pfVar39 + + lVar8 * 4 + + (-(ulong)((uint)-iVar32 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar32 << 2)) + fVar35; + pdVar19[lVar8] = dVar37 + dVar34; + lVar8 = lVar8 + param_10; + } while (iVar16 < iVar7); + } + pfVar39 = pfVar39 + 1; + pbVar17 = pbVar17 + 1; + pdVar19 = pdVar19 + 1; + } while (pfVar39 != pfVar20); + param_1 = param_1 + lVar1; + pdVar28 = pdVar28 + lVar1; + pfVar39 = pfVar20; + } + iVar43 = iVar43 + 1; + param_1 = param_1 + (param_2 - param_10); + pfVar39 = (float *)((long)pfVar39 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar32 - param_10) << 2)); + pdVar28 = (double *) + ((long)pdVar28 + + (-(ulong)((uint)(iVar33 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar33 - param_10) << 3)); + } while (iVar43 != iVar31); + } + } + return; +} + + +================================================================== + +### FUNC 0022817c (52 bytes) name=FUN_0022817c + +void FUN_0022817c(void) + +{ + FUN_002277ec(); + return; +} + + +================================================================== + +### FUNC 002281b0 (2324 bytes) name=FUN_002281b0 + +void FUN_002281b0(byte *param_1,int param_2,void *param_3,ulong param_4,void *param_5,ulong param_6, + void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + uint uVar3; + byte *pbVar4; + byte bVar5; + bool bVar6; + int iVar7; + ulong uVar8; + undefined1 *puVar9; + long lVar10; + long lVar11; + long lVar12; + int iVar13; + undefined1 *puVar14; + byte *pbVar15; + double *pdVar16; + double *pdVar17; + undefined1 *puVar18; + double *pdVar19; + long lVar20; + long lVar21; + int iVar22; + double *pdVar23; + double *pdVar24; + double *pdVar25; + ulong uVar26; + long lVar27; + int iVar28; + int iVar29; + long lVar30; + int iVar31; + long lVar32; + double dVar33; + double dVar34; + double dVar35; + double *pdVar36; + double dVar37; + long lVar38; + int iVar39; + long lVar40; + int iVar41; + undefined1 auStack_440 [1088]; + + iVar28 = *param_9; + iVar22 = (int)(param_6 >> 3); + *param_9 = param_10 * iVar28; + iVar31 = (int)(param_4 >> 3); + uVar3 = param_10 + param_10 * iVar28; + iVar28 = (int)(param_8 >> 3); + memset(param_3,0,-(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3); + pdVar36 = (double *)((long)param_3 + (long)(param_10 + iVar31) * 8); + if (param_5 == (void *)0x0) { + pdVar25 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_002282b8; +LAB_00228278: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar16 = (double *)((long)param_7 + (long)(param_10 + iVar28) * 8); + bVar6 = pdVar16 == (double *)0x0; + if (pdVar25 == (double *)0x0) { + if (bVar6) { +LAB_002282b8: + iVar28 = param_9[1]; + if (iVar28 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar22 = 0; + do { + if (0 < param_10) { + pdVar25 = pdVar36 + lVar1; + iVar39 = *param_9; + pbVar15 = param_1; + do { + *(undefined8 *) + ((long)pdVar36 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3 + )) = 0; + if (0 < iVar39) { + dVar35 = 0.0; + lVar11 = 0; + iVar7 = 0; + do { + iVar7 = iVar7 + param_10; + dVar35 = dVar35 + (double)pbVar15[lVar11]; + pdVar36[lVar11] = + *(double *) + ((long)pdVar36 + + lVar11 * 8 + + (-(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar31 << 3)) + dVar35; + lVar11 = lVar11 + param_10; + } while (iVar7 < iVar39); + } + pdVar36 = pdVar36 + 1; + pbVar15 = pbVar15 + 1; + } while (pdVar36 != pdVar25); + param_1 = param_1 + lVar1; + pdVar36 = pdVar25; + } + iVar22 = iVar22 + 1; + param_1 = param_1 + (param_2 - param_10); + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar31 - param_10) << 3)); + } while (iVar22 != iVar28); + return; + } + } + else if (bVar6) goto LAB_00228980; + puVar2 = auStack_440; + uVar26 = (ulong)(param_10 + *param_9); + if (0x88 < uVar26) { + uVar8 = uVar26 << 3; + if (0xfe0000000000000 < uVar26) { + uVar8 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar8); + bVar6 = puVar9 != puVar2; + puVar2 = puVar9; + } + puVar9 = puVar2; + if (0 < param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + lVar11 = (long)param_10; + iVar39 = *param_9; + pdVar23 = pdVar36 + lVar1; + uVar26 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + pdVar17 = pdVar16; + pbVar15 = param_1; + do { + *(undefined8 *)((long)pdVar17 + uVar26) = 0; + *(undefined8 *)((long)pdVar36 + uVar26) = 0; + if (iVar39 < 1) { +LAB_00228958: + if (pdVar25 != (double *)0x0) { +LAB_002284cc: + *(undefined8 *)((long)pdVar25 + uVar26) = 0; + pdVar25 = pdVar25 + 1; + } + } + else { + if (pdVar25 != (double *)0x0) { + dVar35 = 0.0; + lVar10 = 0; + iVar7 = 0; + dVar37 = 0.0; + do { + iVar7 = iVar7 + param_10; + dVar34 = (double)pbVar15[lVar10]; + dVar33 = (double)pbVar15[lVar10]; + pdVar17[lVar10] = dVar34; + dVar35 = dVar35 + dVar33 * dVar34; + dVar37 = dVar37 + dVar33; + *(double *)(puVar9 + lVar10 * 8) = dVar34; + pdVar36[lVar10] = dVar37; + pdVar25[lVar10] = dVar35; + lVar10 = lVar10 + lVar11; + } while (iVar7 < iVar39); + if (param_10 == iVar39) goto LAB_00228954; + goto LAB_002284cc; + } + dVar35 = 0.0; + iVar7 = 0; + lVar10 = 0; + do { + iVar7 = iVar7 + param_10; + dVar37 = (double)pbVar15[lVar10]; + dVar35 = dVar35 + (double)pbVar15[lVar10]; + pdVar17[lVar10] = dVar37; + *(double *)(puVar9 + lVar10 * 8) = dVar37; + pdVar36[lVar10] = dVar35; + lVar10 = lVar10 + lVar11; + } while (iVar7 < iVar39); + if (param_10 == iVar39) { +LAB_00228954: + *(undefined8 *)(puVar9 + lVar11 * 8) = 0; + goto LAB_00228958; + } + } + pdVar36 = pdVar36 + 1; + pbVar15 = pbVar15 + 1; + pdVar17 = pdVar17 + 1; + puVar9 = puVar9 + 8; + } while (pdVar36 != pdVar23); + param_1 = param_1 + lVar1; + pdVar16 = pdVar16 + lVar1; + puVar9 = puVar2 + lVar1 * 8; + pdVar36 = pdVar23; + } + iVar39 = param_9[1]; + if (1 < iVar39) { + lVar21 = (long)param_10; + lVar11 = (ulong)(param_10 - 1) + 1; + lVar10 = (lVar21 + iVar31) * -8; + lVar40 = NEON_shl(lVar21,4); + lVar38 = NEON_shl(lVar11,3); + iVar7 = 1; + lVar1 = lVar21 * -0x18 + (long)(param_10 - iVar28) * 8; + lVar20 = lVar21 * 8; + uVar8 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + uVar26 = -(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-iVar31 << 3; + do { + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar31 - param_10) << 3)); + if (pdVar25 != (double *)0x0) { + pdVar25 = (double *) + ((long)pdVar25 + + (-(ulong)((uint)(iVar22 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar22 - param_10) << 3)); + } + param_1 = param_1 + (param_2 - param_10); + pdVar16 = (double *) + ((long)pdVar16 + + (-(ulong)((uint)(iVar28 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar28 - param_10) << 3)); + puVar9 = puVar9 + uVar8; + if (0 < param_10) { + pbVar15 = param_1 + lVar21; + iVar41 = *param_9; + pdVar24 = (double *) + ((long)pdVar16 + + (-(ulong)((uint)-iVar28 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar28 << 3)); + puVar18 = puVar9 + lVar20; + iVar13 = iVar41 - param_10; + pbVar4 = param_1 + lVar11; + puVar14 = puVar9; + pdVar17 = pdVar36; + pdVar23 = pdVar16; + do { + bVar5 = *param_1; + *(undefined8 *)((long)pdVar17 + uVar8) = 0; + dVar35 = (double)bVar5; + dVar37 = dVar35 * (double)bVar5; + iVar29 = param_10; + if (pdVar25 == (double *)0x0) { + *(double *)((long)pdVar23 + uVar8) = *pdVar24; + *pdVar17 = dVar35 + *(double *)((long)pdVar17 + uVar26); + *pdVar23 = dVar35 + *pdVar24 + *(double *)(puVar14 + lVar20); + if (iVar13 <= param_10) goto LAB_00228960; + lVar12 = 0; + lVar32 = lVar40; + dVar33 = dVar35; + do { + lVar30 = lVar32; + dVar34 = *(double *)(puVar18 + lVar12 * 8); + iVar29 = iVar29 + param_10; + lVar27 = lVar21 * 2 + lVar12; + pdVar19 = (double *)(puVar14 + lVar30); + *(double *)(puVar14 + lVar12 * 8) = dVar34 + dVar33; + dVar33 = (double)pbVar15[lVar12]; + dVar35 = dVar35 + dVar33; + dVar37 = dVar37 + (double)pbVar15[lVar12] * dVar33; + pdVar17[lVar21 + lVar12] = *(double *)((long)pdVar17 + lVar30 + lVar10) + dVar35; + pdVar23[lVar21 + lVar12] = + dVar33 + *(double *)(puVar14 + lVar30) + + *(double *)((long)pdVar23 + lVar30 + lVar1) + dVar34; + lVar12 = lVar27 - lVar21; + lVar32 = lVar30 + lVar20; + } while (iVar29 < iVar13); + } + else { + *(undefined8 *)((long)pdVar25 + uVar8) = 0; + *(double *)((long)pdVar23 + uVar8) = *pdVar24; + *pdVar17 = dVar35 + *(double *)((long)pdVar17 + uVar26); + *pdVar25 = dVar37 + *(double *) + ((long)pdVar25 + + (-(ulong)((uint)-iVar22 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar22 << 3)); + *pdVar23 = dVar35 + *pdVar24 + *(double *)(puVar14 + lVar20); + if (param_10 < iVar13) { + lVar32 = 0; + lVar12 = lVar40; + dVar33 = dVar35; + do { + lVar30 = lVar12; + dVar34 = *(double *)(puVar18 + lVar32 * 8); + iVar29 = iVar29 + param_10; + lVar27 = lVar32 + lVar21 * 2; + pdVar19 = (double *)(puVar14 + lVar30); + *(double *)(puVar14 + lVar32 * 8) = dVar34 + dVar33; + dVar33 = (double)pbVar15[lVar32]; + dVar35 = dVar35 + dVar33; + dVar37 = dVar37 + (double)pbVar15[lVar32] * dVar33; + pdVar17[lVar21 + lVar32] = *(double *)((long)pdVar17 + lVar30 + lVar10) + dVar35; + pdVar25[lVar21 + lVar32] = + *(double *)((long)pdVar25 + lVar30 + (lVar21 + iVar22) * -8) + dVar37; + pdVar23[lVar21 + lVar32] = + dVar33 + *(double *)(puVar14 + lVar30) + + *(double *)((long)pdVar23 + lVar30 + lVar1) + dVar34; + lVar32 = lVar27 - lVar21; + lVar12 = lVar30 + lVar20; + } while (iVar29 < iVar13); + } + else { +LAB_00228960: + pdVar19 = (double *)(puVar14 + lVar20); + lVar27 = lVar21; + lVar30 = lVar20; + dVar33 = dVar35; + } + } + if (param_10 < iVar41) { + dVar34 = *pdVar19; + *(double *)(puVar14 + (long)(iVar29 - param_10) * 8) = dVar34 + dVar33; + bVar5 = param_1[lVar27]; + dVar33 = (double)bVar5; + *(double *)((long)pdVar17 + lVar30) = pdVar17[iVar29 - iVar31] + dVar35 + dVar33; + if (pdVar25 != (double *)0x0) { + *(double *)((long)pdVar25 + lVar30) = + pdVar25[iVar29 - iVar22] + dVar37 + (double)bVar5 * dVar33; + } + *(double *)((long)pdVar23 + lVar30) = + dVar33 + dVar34 + pdVar23[(iVar29 - iVar28) - param_10]; + *pdVar19 = dVar33; + } + param_1 = param_1 + 1; + if (pdVar25 != (double *)0x0) { + pdVar25 = pdVar25 + 1; + } + pdVar17 = pdVar17 + 1; + pdVar23 = pdVar23 + 1; + puVar14 = puVar14 + 8; + pdVar24 = pdVar24 + 1; + puVar18 = puVar18 + 8; + pbVar15 = pbVar15 + 1; + } while (param_1 != pbVar4); + pdVar36 = (double *)((long)pdVar36 + lVar38); + puVar9 = puVar9 + lVar38; + pdVar16 = (double *)((long)pdVar16 + lVar38); + param_1 = pbVar4; + } + iVar7 = iVar7 + 1; + } while (iVar7 < iVar39); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar25 = (double *)((long)param_5 + (long)(param_10 + iVar22) * 8); + if (param_7 != (void *)0x0) goto LAB_00228278; + if (pdVar25 == (double *)0x0) goto LAB_002282b8; +LAB_00228980: + iVar28 = param_9[1]; + if (0 < iVar28) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar26 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + iVar39 = 0; + do { + if (0 < param_10) { + pdVar17 = pdVar36 + lVar1; + iVar7 = *param_9; + pdVar16 = pdVar25; + pbVar15 = param_1; + do { + *(undefined8 *)((long)pdVar36 + uVar26) = 0; + *(undefined8 *)((long)pdVar16 + uVar26) = 0; + if (0 < iVar7) { + dVar35 = 0.0; + lVar11 = 0; + iVar13 = 0; + dVar37 = 0.0; + do { + iVar13 = iVar13 + param_10; + dVar33 = *(double *) + ((long)pdVar16 + + lVar11 * 8 + + (-(ulong)((uint)-iVar22 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar22 << 3)); + dVar34 = (double)pbVar15[lVar11]; + dVar37 = dVar37 + dVar34; + dVar35 = dVar35 + (double)pbVar15[lVar11] * dVar34; + pdVar36[lVar11] = + *(double *) + ((long)pdVar36 + + lVar11 * 8 + + (-(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar31 << 3)) + dVar37; + pdVar16[lVar11] = dVar35 + dVar33; + lVar11 = lVar11 + param_10; + } while (iVar13 < iVar7); + } + pdVar36 = pdVar36 + 1; + pbVar15 = pbVar15 + 1; + pdVar16 = pdVar16 + 1; + } while (pdVar36 != pdVar17); + param_1 = param_1 + lVar1; + pdVar25 = pdVar25 + lVar1; + pdVar36 = pdVar17; + } + iVar39 = iVar39 + 1; + param_1 = param_1 + (param_2 - param_10); + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar31 - param_10) << 3)); + pdVar25 = (double *) + ((long)pdVar25 + + (-(ulong)((uint)(iVar22 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar22 - param_10) << 3)); + } while (iVar39 != iVar28); + } + } + return; +} + + +================================================================== + +### FUNC 00228ac4 (52 bytes) name=FUN_00228ac4 + +void FUN_00228ac4(void) + +{ + FUN_002281b0(); + return; +} + + +================================================================== + +### FUNC 00228af8 (2380 bytes) name=FUN_00228af8 + +void FUN_00228af8(ushort *param_1,ulong param_2,void *param_3,ulong param_4,void *param_5, + ulong param_6,void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + uint uVar3; + int iVar4; + ushort uVar5; + bool bVar6; + int iVar7; + double *pdVar8; + ulong uVar9; + undefined1 *puVar10; + long lVar11; + long lVar12; + int iVar13; + undefined1 *puVar14; + ushort *puVar15; + ushort *puVar16; + undefined1 *puVar17; + double *pdVar18; + double *pdVar19; + long lVar20; + long lVar21; + double *pdVar22; + double *pdVar23; + int iVar24; + int iVar25; + double *pdVar26; + ulong uVar27; + long lVar28; + int iVar29; + long lVar30; + long lVar31; + int iVar32; + double dVar33; + double dVar34; + double dVar35; + double *pdVar36; + double dVar37; + long lVar38; + double dVar39; + int iVar40; + long lVar41; + long lVar42; + int iVar43; + undefined1 auStack_440 [1088]; + + iVar32 = *param_9; + iVar4 = (int)(param_6 >> 3); + iVar29 = (int)(param_4 >> 3); + *param_9 = param_10 * iVar32; + iVar24 = (int)(param_8 >> 3); + uVar3 = param_10 + param_10 * iVar32; + memset(param_3,0,-(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3); + pdVar36 = (double *)((long)param_3 + (long)(param_10 + iVar29) * 8); + iVar32 = (int)(param_2 >> 1); + if (param_5 == (void *)0x0) { + pdVar26 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_00228c10; +LAB_00228bc8: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar8 = (double *)((long)param_7 + (long)(param_10 + iVar24) * 8); + bVar6 = pdVar8 == (double *)0x0; + if (pdVar26 == (double *)0x0) { + if (bVar6) { +LAB_00228c10: + iVar4 = param_9[1]; + if (iVar4 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar24 = 0; + do { + if (0 < param_10) { + pdVar26 = pdVar36 + lVar1; + iVar40 = *param_9; + puVar16 = param_1; + do { + *(undefined8 *) + ((long)pdVar36 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3 + )) = 0; + if (0 < iVar40) { + dVar35 = 0.0; + iVar7 = 0; + pdVar8 = pdVar36; + puVar15 = puVar16; + do { + uVar5 = *puVar15; + iVar7 = iVar7 + param_10; + puVar15 = puVar15 + param_10; + dVar35 = dVar35 + (double)uVar5; + *pdVar8 = pdVar8[-iVar29] + dVar35; + pdVar8 = pdVar8 + param_10; + } while (iVar7 < iVar40); + } + pdVar36 = pdVar36 + 1; + puVar16 = puVar16 + 1; + } while (pdVar36 != pdVar26); + param_1 = param_1 + lVar1; + pdVar36 = pdVar26; + } + iVar24 = iVar24 + 1; + param_1 = (ushort *) + ((long)param_1 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar32 - param_10) << 1)); + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uint)(iVar29 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar29 - param_10) << 3)); + } while (iVar24 != iVar4); + return; + } + } + else if (bVar6) goto LAB_002292fc; + puVar2 = auStack_440; + uVar27 = (ulong)(param_10 + *param_9); + if (0x88 < uVar27) { + uVar9 = uVar27 << 3; + if (0xfe0000000000000 < uVar27) { + uVar9 = 0xffffffffffffffff; + } + puVar10 = operator_new__(uVar9); + bVar6 = puVar10 != puVar2; + puVar2 = puVar10; + } + puVar10 = puVar2; + if (0 < param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + lVar20 = (long)param_10; + iVar40 = *param_9; + pdVar22 = pdVar36 + lVar1; + lVar21 = lVar20 * 8; + uVar27 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + pdVar19 = pdVar8; + puVar16 = param_1; + do { + *(undefined8 *)((long)pdVar19 + uVar27) = 0; + *(undefined8 *)((long)pdVar36 + uVar27) = 0; + if (iVar40 < 1) { +LAB_002292d4: + if (pdVar26 != (double *)0x0) { +LAB_00228e3c: + *(undefined8 *)((long)pdVar26 + uVar27) = 0; + pdVar26 = pdVar26 + 1; + } + } + else { + if (pdVar26 != (double *)0x0) { + dVar35 = 0.0; + lVar11 = 0; + iVar7 = 0; + dVar37 = 0.0; + puVar15 = puVar16; + do { + uVar5 = *puVar15; + iVar7 = iVar7 + param_10; + puVar15 = puVar15 + lVar20; + dVar34 = (double)uVar5; + dVar33 = (double)uVar5; + *(double *)((long)pdVar19 + lVar11) = dVar34; + dVar35 = dVar35 + dVar33 * dVar34; + dVar37 = dVar37 + dVar33; + *(double *)(puVar10 + lVar11) = dVar34; + *(double *)((long)pdVar36 + lVar11) = dVar37; + *(double *)((long)pdVar26 + lVar11) = dVar35; + lVar11 = lVar11 + lVar21; + } while (iVar7 < iVar40); + if (param_10 == iVar40) goto LAB_002292d0; + goto LAB_00228e3c; + } + dVar35 = 0.0; + iVar7 = 0; + lVar11 = 0; + puVar15 = puVar16; + do { + uVar5 = *puVar15; + iVar7 = iVar7 + param_10; + puVar15 = puVar15 + lVar20; + dVar37 = (double)uVar5; + dVar35 = dVar35 + (double)uVar5; + *(double *)((long)pdVar19 + lVar11) = dVar37; + *(double *)(puVar10 + lVar11) = dVar37; + *(double *)((long)pdVar36 + lVar11) = dVar35; + lVar11 = lVar11 + lVar21; + } while (iVar7 < iVar40); + if (param_10 == iVar40) { +LAB_002292d0: + *(undefined8 *)(puVar10 + lVar21) = 0; + goto LAB_002292d4; + } + } + pdVar36 = pdVar36 + 1; + puVar16 = puVar16 + 1; + pdVar19 = pdVar19 + 1; + puVar10 = puVar10 + 8; + } while (pdVar36 != pdVar22); + param_1 = param_1 + lVar1; + pdVar8 = pdVar8 + lVar1; + puVar10 = puVar2 + lVar1 * 8; + pdVar36 = pdVar22; + } + iVar40 = param_9[1]; + if (1 < iVar40) { + lVar11 = (long)param_10; + lVar1 = (ulong)(param_10 - 1) + 1; + lVar41 = NEON_shl(lVar1,1); + lVar42 = NEON_shl(lVar11,4); + lVar21 = lVar11 * 8; + lVar20 = (lVar11 + iVar29) * -8; + lVar38 = NEON_shl(lVar1,3); + uVar9 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + uVar27 = -(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-iVar29 << 3; + iVar7 = 1; + lVar1 = lVar11 * -0x18 + (long)(param_10 - iVar24) * 8; + do { + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uint)(iVar29 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar29 - param_10) << 3)); + if (pdVar26 != (double *)0x0) { + pdVar26 = (double *) + ((long)pdVar26 + + (-(ulong)((uint)(iVar4 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar4 - param_10) << 3)); + } + param_1 = (ushort *) + ((long)param_1 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar32 - param_10) << 1)); + pdVar8 = (double *) + ((long)pdVar8 + + (-(ulong)((uint)(iVar24 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar24 - param_10) << 3)); + puVar10 = puVar10 + uVar9; + if (0 < param_10) { + puVar16 = param_1 + lVar11; + iVar43 = *param_9; + pdVar23 = (double *) + ((long)pdVar8 + + (-(ulong)((uint)-iVar24 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar24 << 3)); + puVar17 = puVar10 + lVar21; + iVar13 = iVar43 - param_10; + puVar15 = (ushort *)((long)param_1 + lVar41); + puVar14 = puVar10; + pdVar19 = pdVar36; + pdVar22 = pdVar8; + do { + uVar5 = *param_1; + *(undefined8 *)((long)pdVar19 + uVar9) = 0; + dVar37 = (double)uVar5; + dVar35 = dVar37 * (double)uVar5; + iVar25 = param_10; + if (pdVar26 == (double *)0x0) { + *(double *)((long)pdVar22 + uVar9) = *pdVar23; + *pdVar19 = dVar37 + *(double *)((long)pdVar19 + uVar27); + *pdVar22 = dVar37 + *pdVar23 + *(double *)(puVar14 + lVar21); + if (iVar13 <= param_10) goto LAB_002292dc; + lVar31 = 0; + lVar30 = lVar42; + dVar33 = dVar37; + do { + lVar28 = lVar30; + uVar5 = puVar16[lVar31]; + iVar25 = iVar25 + param_10; + dVar39 = *(double *)(puVar17 + lVar31 * 8); + lVar12 = lVar11 * 2 + lVar31; + pdVar18 = (double *)(puVar14 + lVar28); + dVar34 = dVar39 + dVar33; + dVar33 = (double)uVar5; + *(double *)(puVar14 + lVar31 * 8) = dVar34; + dVar37 = dVar37 + dVar33; + dVar35 = dVar35 + (double)uVar5 * dVar33; + pdVar19[lVar11 + lVar31] = *(double *)((long)pdVar19 + lVar28 + lVar20) + dVar37; + pdVar22[lVar11 + lVar31] = + dVar33 + *(double *)(puVar14 + lVar28) + + *(double *)((long)pdVar22 + lVar28 + lVar1) + dVar39; + lVar31 = lVar12 - lVar11; + lVar30 = lVar28 + lVar21; + } while (iVar25 < iVar13); + } + else { + *(undefined8 *)((long)pdVar26 + uVar9) = 0; + *(double *)((long)pdVar22 + uVar9) = *pdVar23; + *pdVar19 = dVar37 + *(double *)((long)pdVar19 + uVar27); + *pdVar26 = dVar35 + *(double *) + ((long)pdVar26 + + (-(ulong)((uint)-iVar4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar4 << 3)); + *pdVar22 = dVar37 + *pdVar23 + *(double *)(puVar14 + lVar21); + if (param_10 < iVar13) { + lVar30 = 0; + lVar31 = lVar42; + dVar33 = dVar37; + do { + lVar28 = lVar31; + uVar5 = puVar16[lVar30]; + iVar25 = iVar25 + param_10; + dVar39 = *(double *)(puVar17 + lVar30 * 8); + lVar12 = lVar30 + lVar11 * 2; + pdVar18 = (double *)(puVar14 + lVar28); + dVar34 = dVar39 + dVar33; + dVar33 = (double)uVar5; + *(double *)(puVar14 + lVar30 * 8) = dVar34; + dVar37 = dVar37 + dVar33; + dVar35 = dVar35 + (double)uVar5 * dVar33; + pdVar19[lVar11 + lVar30] = *(double *)((long)pdVar19 + lVar28 + lVar20) + dVar37; + pdVar26[lVar11 + lVar30] = + *(double *)((long)pdVar26 + lVar28 + (lVar11 + iVar4) * -8) + dVar35; + pdVar22[lVar11 + lVar30] = + dVar33 + *(double *)(puVar14 + lVar28) + + *(double *)((long)pdVar22 + lVar28 + lVar1) + dVar39; + lVar30 = lVar12 - lVar11; + lVar31 = lVar28 + lVar21; + } while (iVar25 < iVar13); + } + else { +LAB_002292dc: + pdVar18 = (double *)(puVar14 + lVar21); + lVar12 = lVar11; + lVar28 = lVar21; + dVar33 = dVar37; + } + } + if (param_10 < iVar43) { + uVar5 = param_1[lVar12]; + dVar34 = *pdVar18; + dVar39 = (double)uVar5; + *(double *)(puVar14 + (long)(iVar25 - param_10) * 8) = dVar34 + dVar33; + *(double *)((long)pdVar19 + lVar28) = pdVar19[iVar25 - iVar29] + dVar37 + dVar39; + if (pdVar26 != (double *)0x0) { + *(double *)((long)pdVar26 + lVar28) = + pdVar26[iVar25 - iVar4] + dVar35 + (double)uVar5 * dVar39; + } + *(double *)((long)pdVar22 + lVar28) = + dVar39 + dVar34 + pdVar22[(iVar25 - iVar24) - param_10]; + *pdVar18 = dVar39; + } + param_1 = param_1 + 1; + if (pdVar26 != (double *)0x0) { + pdVar26 = pdVar26 + 1; + } + pdVar19 = pdVar19 + 1; + pdVar22 = pdVar22 + 1; + puVar14 = puVar14 + 8; + pdVar23 = pdVar23 + 1; + puVar17 = puVar17 + 8; + puVar16 = puVar16 + 1; + } while (param_1 != puVar15); + pdVar36 = (double *)((long)pdVar36 + lVar38); + puVar10 = puVar10 + lVar38; + pdVar8 = (double *)((long)pdVar8 + lVar38); + param_1 = puVar15; + } + iVar7 = iVar7 + 1; + } while (iVar7 < iVar40); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar26 = (double *)((long)param_5 + (long)(param_10 + iVar4) * 8); + if (param_7 != (void *)0x0) goto LAB_00228bc8; + if (pdVar26 == (double *)0x0) goto LAB_00228c10; +LAB_002292fc: + iVar24 = param_9[1]; + if (0 < iVar24) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar27 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + iVar40 = 0; + do { + if (0 < param_10) { + pdVar19 = pdVar36 + lVar1; + iVar7 = *param_9; + pdVar8 = pdVar26; + puVar16 = param_1; + do { + *(undefined8 *)((long)pdVar36 + uVar27) = 0; + *(undefined8 *)((long)pdVar8 + uVar27) = 0; + if (0 < iVar7) { + dVar35 = 0.0; + lVar20 = 0; + iVar13 = 0; + dVar37 = 0.0; + puVar15 = puVar16; + do { + uVar5 = *puVar15; + iVar13 = iVar13 + param_10; + dVar33 = *(double *) + ((long)pdVar8 + + lVar20 + (-(ulong)((uint)-iVar4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar4 << 3)); + puVar15 = puVar15 + param_10; + dVar34 = (double)uVar5; + dVar37 = dVar37 + dVar34; + dVar35 = dVar35 + (double)uVar5 * dVar34; + *(double *)((long)pdVar36 + lVar20) = + *(double *) + ((long)pdVar36 + + lVar20 + (-(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar29 << 3)) + dVar37; + *(double *)((long)pdVar8 + lVar20) = dVar35 + dVar33; + lVar20 = lVar20 + (long)param_10 * 8; + } while (iVar13 < iVar7); + } + pdVar36 = pdVar36 + 1; + puVar16 = puVar16 + 1; + pdVar8 = pdVar8 + 1; + } while (pdVar36 != pdVar19); + param_1 = param_1 + lVar1; + pdVar26 = pdVar26 + lVar1; + pdVar36 = pdVar19; + } + iVar40 = iVar40 + 1; + param_1 = (ushort *) + ((long)param_1 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar32 - param_10) << 1)); + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uint)(iVar29 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar29 - param_10) << 3)); + pdVar26 = (double *) + ((long)pdVar26 + + (-(ulong)((uint)(iVar4 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar4 - param_10) << 3)); + } while (iVar40 != iVar24); + } + } + return; +} + + +================================================================== + +### FUNC 00229444 (52 bytes) name=FUN_00229444 + +void FUN_00229444(void) + +{ + FUN_00228af8(); + return; +} + + +================================================================== + +### FUNC 00229478 (2348 bytes) name=FUN_00229478 + +void FUN_00229478(short *param_1,ulong param_2,void *param_3,ulong param_4,void *param_5, + ulong param_6,void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + uint uVar3; + int iVar4; + short sVar5; + bool bVar6; + int iVar7; + double *pdVar8; + ulong uVar9; + undefined1 *puVar10; + long lVar11; + long lVar12; + int iVar13; + undefined1 *puVar14; + short *psVar15; + short *psVar16; + undefined1 *puVar17; + double *pdVar18; + double *pdVar19; + long lVar20; + long lVar21; + double *pdVar22; + double *pdVar23; + int iVar24; + int iVar25; + double *pdVar26; + ulong uVar27; + long lVar28; + int iVar29; + long lVar30; + long lVar31; + int iVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double *pdVar37; + long lVar38; + double dVar39; + int iVar40; + long lVar41; + long lVar42; + int iVar43; + undefined1 auStack_440 [1088]; + + iVar32 = *param_9; + iVar4 = (int)(param_6 >> 3); + iVar29 = (int)(param_4 >> 3); + *param_9 = param_10 * iVar32; + iVar24 = (int)(param_8 >> 3); + uVar3 = param_10 + param_10 * iVar32; + memset(param_3,0,-(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3); + pdVar37 = (double *)((long)param_3 + (long)(param_10 + iVar29) * 8); + iVar32 = (int)(param_2 >> 1); + if (param_5 == (void *)0x0) { + pdVar26 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_00229590; +LAB_00229548: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar8 = (double *)((long)param_7 + (long)(param_10 + iVar24) * 8); + bVar6 = pdVar8 == (double *)0x0; + if (pdVar26 == (double *)0x0) { + if (bVar6) { +LAB_00229590: + iVar4 = param_9[1]; + if (iVar4 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar24 = 0; + do { + if (0 < param_10) { + pdVar26 = pdVar37 + lVar1; + iVar40 = *param_9; + psVar16 = param_1; + do { + *(undefined8 *) + ((long)pdVar37 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3 + )) = 0; + if (0 < iVar40) { + dVar35 = 0.0; + iVar7 = 0; + pdVar8 = pdVar37; + psVar15 = psVar16; + do { + sVar5 = *psVar15; + iVar7 = iVar7 + param_10; + psVar15 = psVar15 + param_10; + dVar35 = dVar35 + (double)(int)sVar5; + *pdVar8 = pdVar8[-iVar29] + dVar35; + pdVar8 = pdVar8 + param_10; + } while (iVar7 < iVar40); + } + pdVar37 = pdVar37 + 1; + psVar16 = psVar16 + 1; + } while (pdVar37 != pdVar26); + param_1 = param_1 + lVar1; + pdVar37 = pdVar26; + } + iVar24 = iVar24 + 1; + param_1 = (short *)((long)param_1 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar32 - param_10) << 1)); + pdVar37 = (double *) + ((long)pdVar37 + + (-(ulong)((uint)(iVar29 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar29 - param_10) << 3)); + } while (iVar24 != iVar4); + return; + } + } + else if (bVar6) goto LAB_00229c60; + puVar2 = auStack_440; + uVar27 = (ulong)(param_10 + *param_9); + if (0x88 < uVar27) { + uVar9 = uVar27 << 3; + if (0xfe0000000000000 < uVar27) { + uVar9 = 0xffffffffffffffff; + } + puVar10 = operator_new__(uVar9); + bVar6 = puVar10 != puVar2; + puVar2 = puVar10; + } + puVar10 = puVar2; + if (0 < param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + lVar20 = (long)param_10; + iVar40 = *param_9; + pdVar22 = pdVar37 + lVar1; + lVar21 = lVar20 * 8; + uVar27 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + pdVar19 = pdVar8; + psVar16 = param_1; + do { + *(undefined8 *)((long)pdVar19 + uVar27) = 0; + *(undefined8 *)((long)pdVar37 + uVar27) = 0; + if (iVar40 < 1) { +LAB_00229c38: + if (pdVar26 != (double *)0x0) { +LAB_002297b8: + *(undefined8 *)((long)pdVar26 + uVar27) = 0; + pdVar26 = pdVar26 + 1; + } + } + else { + dVar35 = 0.0; + if (pdVar26 != (double *)0x0) { + dVar36 = 0.0; + lVar11 = 0; + iVar7 = 0; + psVar15 = psVar16; + do { + sVar5 = *psVar15; + iVar7 = iVar7 + param_10; + psVar15 = psVar15 + lVar20; + dVar33 = (double)(int)sVar5; + dVar35 = dVar35 + dVar33 * dVar33; + dVar36 = dVar36 + dVar33; + *(double *)((long)pdVar19 + lVar11) = dVar33; + *(double *)(puVar10 + lVar11) = dVar33; + *(double *)((long)pdVar37 + lVar11) = dVar36; + *(double *)((long)pdVar26 + lVar11) = dVar35; + lVar11 = lVar11 + lVar21; + } while (iVar7 < iVar40); + if (param_10 == iVar40) goto LAB_00229c34; + goto LAB_002297b8; + } + iVar7 = 0; + lVar11 = 0; + psVar15 = psVar16; + do { + sVar5 = *psVar15; + iVar7 = iVar7 + param_10; + psVar15 = psVar15 + lVar20; + dVar36 = (double)(int)sVar5; + dVar35 = dVar35 + dVar36; + *(double *)((long)pdVar19 + lVar11) = dVar36; + *(double *)(puVar10 + lVar11) = dVar36; + *(double *)((long)pdVar37 + lVar11) = dVar35; + lVar11 = lVar11 + lVar21; + } while (iVar7 < iVar40); + if (param_10 == iVar40) { +LAB_00229c34: + *(undefined8 *)(puVar10 + lVar21) = 0; + goto LAB_00229c38; + } + } + pdVar37 = pdVar37 + 1; + psVar16 = psVar16 + 1; + pdVar19 = pdVar19 + 1; + puVar10 = puVar10 + 8; + } while (pdVar37 != pdVar22); + param_1 = param_1 + lVar1; + pdVar8 = pdVar8 + lVar1; + puVar10 = puVar2 + lVar1 * 8; + pdVar37 = pdVar22; + } + iVar40 = param_9[1]; + if (1 < iVar40) { + lVar11 = (long)param_10; + lVar1 = (ulong)(param_10 - 1) + 1; + lVar41 = NEON_shl(lVar1,1); + lVar42 = NEON_shl(lVar11,4); + lVar21 = lVar11 * 8; + lVar20 = (lVar11 + iVar29) * -8; + lVar38 = NEON_shl(lVar1,3); + uVar9 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + uVar27 = -(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-iVar29 << 3; + iVar7 = 1; + lVar1 = lVar11 * -0x18 + (long)(param_10 - iVar24) * 8; + do { + pdVar37 = (double *) + ((long)pdVar37 + + (-(ulong)((uint)(iVar29 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar29 - param_10) << 3)); + if (pdVar26 != (double *)0x0) { + pdVar26 = (double *) + ((long)pdVar26 + + (-(ulong)((uint)(iVar4 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar4 - param_10) << 3)); + } + param_1 = (short *)((long)param_1 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar32 - param_10) << 1)); + pdVar8 = (double *) + ((long)pdVar8 + + (-(ulong)((uint)(iVar24 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar24 - param_10) << 3)); + puVar10 = puVar10 + uVar9; + if (0 < param_10) { + psVar16 = param_1 + lVar11; + iVar43 = *param_9; + pdVar23 = (double *) + ((long)pdVar8 + + (-(ulong)((uint)-iVar24 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar24 << 3)); + puVar17 = puVar10 + lVar21; + iVar13 = iVar43 - param_10; + psVar15 = (short *)((long)param_1 + lVar41); + puVar14 = puVar10; + pdVar19 = pdVar37; + pdVar22 = pdVar8; + do { + sVar5 = *param_1; + *(undefined8 *)((long)pdVar19 + uVar9) = 0; + dVar36 = (double)(int)sVar5; + dVar35 = dVar36 * dVar36; + iVar25 = param_10; + if (pdVar26 == (double *)0x0) { + *(double *)((long)pdVar22 + uVar9) = *pdVar23; + *pdVar19 = dVar36 + *(double *)((long)pdVar19 + uVar27); + *pdVar22 = dVar36 + *pdVar23 + *(double *)(puVar14 + lVar21); + if (iVar13 <= param_10) goto LAB_00229c40; + lVar31 = 0; + lVar30 = lVar42; + dVar33 = dVar36; + do { + lVar28 = lVar30; + iVar25 = iVar25 + param_10; + dVar39 = *(double *)(puVar17 + lVar31 * 8); + lVar12 = lVar11 * 2 + lVar31; + pdVar18 = (double *)(puVar14 + lVar28); + dVar34 = dVar39 + dVar33; + dVar33 = (double)(int)psVar16[lVar31]; + *(double *)(puVar14 + lVar31 * 8) = dVar34; + dVar36 = dVar36 + dVar33; + dVar35 = dVar35 + dVar33 * dVar33; + pdVar19[lVar11 + lVar31] = *(double *)((long)pdVar19 + lVar28 + lVar20) + dVar36; + pdVar22[lVar11 + lVar31] = + dVar33 + *(double *)(puVar14 + lVar28) + + *(double *)((long)pdVar22 + lVar28 + lVar1) + dVar39; + lVar31 = lVar12 - lVar11; + lVar30 = lVar28 + lVar21; + } while (iVar25 < iVar13); + } + else { + *(undefined8 *)((long)pdVar26 + uVar9) = 0; + *(double *)((long)pdVar22 + uVar9) = *pdVar23; + *pdVar19 = dVar36 + *(double *)((long)pdVar19 + uVar27); + *pdVar26 = dVar35 + *(double *) + ((long)pdVar26 + + (-(ulong)((uint)-iVar4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar4 << 3)); + *pdVar22 = dVar36 + *pdVar23 + *(double *)(puVar14 + lVar21); + if (param_10 < iVar13) { + lVar30 = 0; + lVar31 = lVar42; + dVar33 = dVar36; + do { + lVar28 = lVar31; + iVar25 = iVar25 + param_10; + dVar39 = *(double *)(puVar17 + lVar30 * 8); + lVar12 = lVar30 + lVar11 * 2; + pdVar18 = (double *)(puVar14 + lVar28); + dVar34 = dVar39 + dVar33; + dVar33 = (double)(int)psVar16[lVar30]; + *(double *)(puVar14 + lVar30 * 8) = dVar34; + dVar36 = dVar36 + dVar33; + dVar35 = dVar35 + dVar33 * dVar33; + pdVar19[lVar11 + lVar30] = *(double *)((long)pdVar19 + lVar28 + lVar20) + dVar36; + pdVar26[lVar11 + lVar30] = + *(double *)((long)pdVar26 + lVar28 + (lVar11 + iVar4) * -8) + dVar35; + pdVar22[lVar11 + lVar30] = + dVar33 + *(double *)(puVar14 + lVar28) + + *(double *)((long)pdVar22 + lVar28 + lVar1) + dVar39; + lVar30 = lVar12 - lVar11; + lVar31 = lVar28 + lVar21; + } while (iVar25 < iVar13); + } + else { +LAB_00229c40: + pdVar18 = (double *)(puVar14 + lVar21); + lVar12 = lVar11; + lVar28 = lVar21; + dVar33 = dVar36; + } + } + if (param_10 < iVar43) { + dVar39 = *pdVar18; + dVar34 = (double)(int)param_1[lVar12]; + *(double *)(puVar14 + (long)(iVar25 - param_10) * 8) = dVar39 + dVar33; + *(double *)((long)pdVar19 + lVar28) = pdVar19[iVar25 - iVar29] + dVar36 + dVar34; + if (pdVar26 != (double *)0x0) { + *(double *)((long)pdVar26 + lVar28) = + pdVar26[iVar25 - iVar4] + dVar35 + dVar34 * dVar34; + } + *(double *)((long)pdVar22 + lVar28) = + dVar34 + dVar39 + pdVar22[(iVar25 - iVar24) - param_10]; + *pdVar18 = dVar34; + } + param_1 = param_1 + 1; + if (pdVar26 != (double *)0x0) { + pdVar26 = pdVar26 + 1; + } + pdVar19 = pdVar19 + 1; + pdVar22 = pdVar22 + 1; + puVar14 = puVar14 + 8; + pdVar23 = pdVar23 + 1; + puVar17 = puVar17 + 8; + psVar16 = psVar16 + 1; + } while (param_1 != psVar15); + pdVar37 = (double *)((long)pdVar37 + lVar38); + puVar10 = puVar10 + lVar38; + pdVar8 = (double *)((long)pdVar8 + lVar38); + param_1 = psVar15; + } + iVar7 = iVar7 + 1; + } while (iVar7 < iVar40); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar26 = (double *)((long)param_5 + (long)(param_10 + iVar4) * 8); + if (param_7 != (void *)0x0) goto LAB_00229548; + if (pdVar26 == (double *)0x0) goto LAB_00229590; +LAB_00229c60: + iVar24 = param_9[1]; + if (0 < iVar24) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar27 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + iVar40 = 0; + do { + if (0 < param_10) { + pdVar19 = pdVar37 + lVar1; + iVar7 = *param_9; + pdVar8 = pdVar26; + psVar16 = param_1; + do { + *(undefined8 *)((long)pdVar37 + uVar27) = 0; + *(undefined8 *)((long)pdVar8 + uVar27) = 0; + if (0 < iVar7) { + dVar35 = 0.0; + lVar20 = 0; + iVar13 = 0; + dVar36 = 0.0; + psVar15 = psVar16; + do { + sVar5 = *psVar15; + iVar13 = iVar13 + param_10; + dVar34 = *(double *) + ((long)pdVar8 + + lVar20 + (-(ulong)((uint)-iVar4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar4 << 3)); + psVar15 = psVar15 + param_10; + dVar33 = (double)(int)sVar5; + dVar35 = dVar35 + dVar33 * dVar33; + dVar36 = dVar36 + dVar33; + *(double *)((long)pdVar37 + lVar20) = + *(double *) + ((long)pdVar37 + + lVar20 + (-(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar29 << 3)) + dVar36; + *(double *)((long)pdVar8 + lVar20) = dVar35 + dVar34; + lVar20 = lVar20 + (long)param_10 * 8; + } while (iVar13 < iVar7); + } + pdVar37 = pdVar37 + 1; + psVar16 = psVar16 + 1; + pdVar8 = pdVar8 + 1; + } while (pdVar37 != pdVar19); + param_1 = param_1 + lVar1; + pdVar26 = pdVar26 + lVar1; + pdVar37 = pdVar19; + } + iVar40 = iVar40 + 1; + param_1 = (short *)((long)param_1 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar32 - param_10) << 1)); + pdVar37 = (double *) + ((long)pdVar37 + + (-(ulong)((uint)(iVar29 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar29 - param_10) << 3)); + pdVar26 = (double *) + ((long)pdVar26 + + (-(ulong)((uint)(iVar4 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar4 - param_10) << 3)); + } while (iVar40 != iVar24); + } + } + return; +} + + +================================================================== + +### FUNC 00229da4 (52 bytes) name=FUN_00229da4 + +void FUN_00229da4(void) + +{ + FUN_00229478(); + return; +} + + +================================================================== + +### FUNC 00229dd8 (2328 bytes) name=FUN_00229dd8 + +void FUN_00229dd8(float *param_1,ulong param_2,void *param_3,ulong param_4,void *param_5, + ulong param_6,void *param_7,ulong param_8,uint *param_9,uint param_10) + +{ + long lVar1; + undefined1 *puVar2; + float *pfVar3; + int iVar4; + bool bVar5; + int iVar6; + long lVar7; + ulong uVar8; + undefined1 *puVar9; + long lVar10; + int iVar11; + int iVar12; + long lVar13; + long lVar14; + double *pdVar15; + float *pfVar16; + double *pdVar17; + long lVar18; + undefined1 *puVar19; + float *pfVar20; + float *pfVar21; + float *pfVar22; + uint uVar23; + long lVar24; + undefined1 *puVar25; + float *pfVar26; + long lVar27; + float *pfVar28; + double *pdVar29; + ulong uVar30; + int iVar31; + uint uVar32; + long lVar33; + int iVar34; + float fVar35; + float fVar36; + double dVar37; + float fVar38; + float fVar39; + double dVar40; + double dVar41; + float *pfVar42; + long lVar43; + uint uVar44; + long lVar45; + float fVar46; + undefined1 auStack_420 [1056]; + + iVar11 = (int)(param_6 >> 3); + uVar44 = *param_9; + iVar34 = (int)(param_4 >> 2); + iVar31 = (int)(param_8 >> 2); + *param_9 = param_10 * uVar44; + uVar44 = param_10 + param_10 * uVar44; + memset(param_3,0,-(ulong)(uVar44 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar44 << 2); + pfVar42 = (float *)((long)param_3 + (long)(int)(param_10 + iVar34) * 4); + iVar4 = (int)(param_2 >> 2); + if (param_5 == (void *)0x0) { + pdVar29 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_00229ee4; +LAB_00229ea4: + memset(param_7,0, + -(ulong)(param_10 + *param_9 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(param_10 + *param_9) << 2); + pfVar16 = (float *)((long)param_7 + (long)(int)(param_10 + iVar31) * 4); + bVar5 = pfVar16 == (float *)0x0; + if (pdVar29 == (double *)0x0) { + if (bVar5) { +LAB_00229ee4: + uVar44 = param_9[1]; + if ((int)uVar44 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + uVar23 = 0; + do { + if (0 < (int)param_10) { + pfVar21 = pfVar42 + lVar1; + uVar32 = *param_9; + pfVar16 = param_1; + do { + *(undefined4 *) + ((long)pfVar42 + + (-(ulong)(-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_10 << 2)) = 0; + if (0 < (int)uVar32) { + fVar36 = 0.0; + lVar7 = 0; + iVar11 = 0; + do { + iVar11 = iVar11 + param_10; + fVar36 = fVar36 + *(float *)((long)pfVar16 + lVar7); + *(float *)((long)pfVar42 + lVar7) = + *(float *)((long)pfVar42 + + lVar7 + (-(ulong)((uint)-iVar34 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar34 << 2)) + fVar36; + lVar7 = lVar7 + (long)(int)param_10 * 4; + } while (iVar11 < (int)uVar32); + } + pfVar42 = pfVar42 + 1; + pfVar16 = pfVar16 + 1; + } while (pfVar42 != pfVar21); + param_1 = param_1 + lVar1; + pfVar42 = pfVar21; + } + uVar23 = uVar23 + 1; + param_1 = (float *)((long)param_1 + + (-(ulong)(iVar4 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar4 - param_10) << 2)); + pfVar42 = (float *)((long)pfVar42 + + (-(ulong)(iVar34 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar34 - param_10) << 2)); + } while (uVar23 != uVar44); + return; + } + } + else if (bVar5) goto LAB_0022a59c; + puVar2 = auStack_420; + uVar30 = (ulong)(int)(param_10 + *param_9); + if (0x108 < uVar30) { + uVar8 = uVar30 << 2; + if (0x1fc0000000000000 < uVar30) { + uVar8 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar8); + bVar5 = puVar9 != puVar2; + puVar2 = puVar9; + } + puVar9 = puVar2; + if (0 < (int)param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + iVar6 = -param_10; + uVar30 = -(ulong)(param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_10 << 2; + uVar44 = *param_9; + pfVar28 = pfVar42 + lVar1; + pfVar20 = pfVar16; + pfVar21 = param_1; + do { + pfVar20[iVar6] = 0.0; + pfVar42[iVar6] = 0.0; + if ((int)uVar44 < 1) { +LAB_0022a574: + if (pdVar29 != (double *)0x0) { +LAB_0022a0fc: + pdVar29[iVar6] = 0.0; + pdVar29 = pdVar29 + 1; + } + } + else { + if (pdVar29 != (double *)0x0) { + dVar40 = 0.0; + lVar7 = 0; + fVar36 = 0.0; + iVar12 = 0; + pdVar17 = pdVar29; + do { + fVar35 = *(float *)((long)pfVar21 + lVar7); + iVar12 = iVar12 + param_10; + fVar36 = fVar36 + fVar35; + *(float *)((long)pfVar20 + lVar7) = fVar35; + *(float *)(puVar9 + lVar7) = fVar35; + dVar40 = dVar40 + (double)fVar35 * (double)fVar35; + *(float *)((long)pfVar42 + lVar7) = fVar36; + lVar7 = lVar7 + uVar30; + *pdVar17 = dVar40; + pdVar17 = pdVar17 + (int)param_10; + } while (iVar12 < (int)uVar44); + if (param_10 == uVar44) goto LAB_0022a570; + goto LAB_0022a0fc; + } + fVar36 = 0.0; + iVar12 = 0; + lVar7 = 0; + do { + fVar35 = *(float *)((long)pfVar21 + lVar7); + iVar12 = iVar12 + param_10; + fVar36 = fVar36 + fVar35; + *(float *)((long)pfVar20 + lVar7) = fVar35; + *(float *)(puVar9 + lVar7) = fVar35; + *(float *)((long)pfVar42 + lVar7) = fVar36; + lVar7 = lVar7 + uVar30; + } while (iVar12 < (int)uVar44); + if (param_10 == uVar44) { +LAB_0022a570: + *(undefined4 *)(puVar9 + uVar30) = 0; + goto LAB_0022a574; + } + } + pfVar42 = pfVar42 + 1; + pfVar21 = pfVar21 + 1; + pfVar20 = pfVar20 + 1; + puVar9 = puVar9 + 4; + } while (pfVar42 != pfVar28); + param_1 = param_1 + lVar1; + pfVar16 = pfVar16 + lVar1; + puVar9 = puVar2 + lVar1 * 4; + pfVar42 = pfVar28; + } + uVar44 = param_9[1]; + if (1 < (int)uVar44) { + lVar7 = (long)(int)-param_10; + lVar27 = (long)(int)param_10; + lVar24 = lVar27 * 4; + lVar45 = NEON_shl(lVar7,3); + lVar10 = (lVar27 + iVar34) * -4; + lVar43 = NEON_shl((ulong)(param_10 - 1) + 1,2); + iVar6 = 1; + lVar1 = lVar27 * -0xc + (long)(int)(param_10 - iVar31) * 4; + uVar30 = -(ulong)((uint)-iVar34 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar34 << 2; + do { + pfVar42 = (float *)((long)pfVar42 + + (-(ulong)(iVar34 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar34 - param_10) << 2)); + if (pdVar29 != (double *)0x0) { + pdVar29 = (double *) + ((long)pdVar29 + + (-(ulong)(iVar11 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar11 - param_10) << 3)); + } + param_1 = (float *)((long)param_1 + + (-(ulong)(iVar4 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar4 - param_10) << 2)); + pfVar16 = (float *)((long)pfVar16 + + (-(ulong)(iVar31 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar31 - param_10) << 2)); + puVar9 = puVar9 + lVar7 * 4; + if (0 < (int)param_10) { + pfVar22 = param_1 + lVar27; + uVar23 = *param_9; + pfVar28 = (float *)((long)pfVar16 + + (-(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar31 << 2)); + iVar12 = uVar23 - param_10; + puVar25 = puVar9 + lVar24; + pfVar3 = (float *)((long)param_1 + lVar43); + puVar19 = puVar9; + pfVar21 = pfVar42; + pfVar20 = pfVar16; + do { + fVar35 = *param_1; + pfVar21[lVar7] = 0.0; + fVar36 = *pfVar28; + dVar40 = (double)fVar35 * (double)fVar35; + uVar32 = param_10; + if (pdVar29 == (double *)0x0) { + pfVar20[lVar7] = fVar36; + *pfVar21 = fVar35 + *(float *)((long)pfVar21 + uVar30); + *pfVar20 = fVar35 + *pfVar28 + *(float *)(puVar19 + lVar24); + if (iVar12 <= (int)param_10) goto LAB_0022a57c; + lVar14 = 0; + lVar13 = lVar27 * 8; + fVar36 = fVar35; + do { + lVar18 = lVar13; + fVar38 = *(float *)(puVar25 + lVar14 * 4); + uVar32 = uVar32 + param_10; + lVar33 = lVar27 * 2 + lVar14; + pfVar26 = (float *)(puVar19 + lVar18); + *(float *)(puVar19 + lVar14 * 4) = fVar38 + fVar36; + fVar36 = pfVar22[lVar14]; + fVar35 = fVar35 + fVar36; + dVar40 = dVar40 + (double)fVar36 * (double)fVar36; + pfVar21[lVar27 + lVar14] = *(float *)((long)pfVar21 + lVar18 + lVar10) + fVar35; + pfVar20[lVar27 + lVar14] = + fVar36 + *(float *)(puVar19 + lVar18) + + *(float *)((long)pfVar20 + lVar18 + lVar1) + fVar38; + lVar14 = lVar33 - lVar27; + lVar13 = lVar18 + lVar24; + } while ((int)uVar32 < iVar12); + } + else { + *(undefined8 *)((long)pdVar29 + lVar45) = 0; + dVar37 = *(double *) + ((long)pdVar29 + + (-(ulong)((uint)-iVar11 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar11 << 3)); + pfVar20[lVar7] = fVar36; + *pfVar21 = fVar35 + *(float *)((long)pfVar21 + uVar30); + fVar36 = *pfVar28; + fVar38 = *(float *)(puVar19 + lVar24); + *pdVar29 = dVar40 + dVar37; + *pfVar20 = fVar35 + fVar36 + fVar38; + if ((int)param_10 < iVar12) { + lVar13 = 0; + lVar14 = lVar27 * 8; + fVar36 = fVar35; + do { + lVar18 = lVar14; + fVar46 = *(float *)(puVar25 + lVar13 * 4); + uVar32 = uVar32 + param_10; + dVar37 = pdVar29[(lVar27 + lVar13) - (long)iVar11]; + lVar33 = lVar13 + lVar27 * 2; + pfVar26 = (float *)(puVar19 + lVar18); + *(float *)(puVar19 + lVar13 * 4) = fVar46 + fVar36; + fVar36 = pfVar22[lVar13]; + fVar35 = fVar35 + fVar36; + dVar40 = dVar40 + (double)fVar36 * (double)fVar36; + pfVar21[lVar27 + lVar13] = *(float *)((long)pfVar21 + lVar18 + lVar10) + fVar35; + fVar38 = *(float *)(puVar19 + lVar18); + fVar39 = *(float *)((long)pfVar20 + lVar18 + lVar1); + pdVar29[lVar27 + lVar13] = dVar37 + dVar40; + pfVar20[lVar27 + lVar13] = fVar36 + fVar38 + fVar39 + fVar46; + lVar13 = lVar33 - lVar27; + lVar14 = lVar18 + lVar24; + } while ((int)uVar32 < iVar12); + } + else { +LAB_0022a57c: + pfVar26 = (float *)(puVar19 + lVar24); + lVar18 = lVar24; + lVar33 = lVar27; + fVar36 = fVar35; + } + } + if ((int)param_10 < (int)uVar23) { + fVar38 = *pfVar26; + *(float *)(puVar19 + (long)(int)(uVar32 - param_10) * 4) = fVar38 + fVar36; + fVar36 = *(float *)((long)param_1 + lVar18); + *(float *)((long)pfVar21 + lVar18) = pfVar21[(int)(uVar32 - iVar34)] + fVar35 + fVar36 + ; + if (pdVar29 != (double *)0x0) { + pdVar29[lVar33] = + pdVar29[(int)(uVar32 - iVar11)] + dVar40 + (double)fVar36 * (double)fVar36; + } + *(float *)((long)pfVar20 + lVar18) = + fVar38 + fVar36 + pfVar20[(int)((uVar32 - iVar31) - param_10)]; + *pfVar26 = fVar36; + } + param_1 = param_1 + 1; + if (pdVar29 != (double *)0x0) { + pdVar29 = pdVar29 + 1; + } + pfVar21 = pfVar21 + 1; + pfVar20 = pfVar20 + 1; + puVar19 = puVar19 + 4; + pfVar28 = pfVar28 + 1; + puVar25 = puVar25 + 4; + pfVar22 = pfVar22 + 1; + } while (param_1 != pfVar3); + pfVar42 = (float *)((long)pfVar42 + lVar43); + puVar9 = puVar9 + lVar43; + pfVar16 = (float *)((long)pfVar16 + lVar43); + param_1 = pfVar3; + } + iVar6 = iVar6 + 1; + } while (iVar6 < (int)uVar44); + } + if (bVar5) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)(param_10 + *param_9 >> 0x1f) & 0xfffffff800000000 | + (ulong)(param_10 + *param_9) << 3); + pdVar29 = (double *)((long)param_5 + (long)(int)(param_10 + iVar11) * 8); + if (param_7 != (void *)0x0) goto LAB_00229ea4; + if (pdVar29 == (double *)0x0) goto LAB_00229ee4; +LAB_0022a59c: + uVar44 = param_9[1]; + if (0 < (int)uVar44) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar23 = 0; + do { + if (0 < (int)param_10) { + pfVar21 = pfVar42 + lVar1; + uVar32 = *param_9; + pfVar16 = param_1; + pdVar17 = pdVar29; + do { + pfVar42[(int)-param_10] = 0.0; + pdVar17[(int)-param_10] = 0.0; + if (0 < (int)uVar32) { + dVar40 = 0.0; + lVar7 = 0; + fVar36 = 0.0; + iVar31 = 0; + pdVar15 = pdVar17; + do { + iVar31 = iVar31 + param_10; + dVar41 = (double)*(float *)((long)pfVar16 + lVar7); + fVar36 = fVar36 + *(float *)((long)pfVar16 + lVar7); + dVar37 = pdVar15[-iVar11]; + dVar40 = dVar40 + dVar41 * dVar41; + *(float *)((long)pfVar42 + lVar7) = + *(float *)((long)pfVar42 + + lVar7 + (-(ulong)((uint)-iVar34 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar34 << 2)) + fVar36; + lVar7 = lVar7 + (long)(int)param_10 * 4; + *pdVar15 = dVar40 + dVar37; + pdVar15 = pdVar15 + (int)param_10; + } while (iVar31 < (int)uVar32); + } + pfVar42 = pfVar42 + 1; + pfVar16 = pfVar16 + 1; + pdVar17 = pdVar17 + 1; + } while (pfVar42 != pfVar21); + param_1 = param_1 + lVar1; + pdVar29 = pdVar29 + lVar1; + pfVar42 = pfVar21; + } + uVar23 = uVar23 + 1; + param_1 = (float *)((long)param_1 + + (-(ulong)(iVar4 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar4 - param_10) << 2)); + pfVar42 = (float *)((long)pfVar42 + + (-(ulong)(iVar34 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar34 - param_10) << 2)); + pdVar29 = (double *) + ((long)pdVar29 + + (-(ulong)(iVar11 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar11 - param_10) << 3)); + } while (uVar23 != uVar44); + } + } + return; +} + + +================================================================== + +### FUNC 0022a6f0 (52 bytes) name=FUN_0022a6f0 + +void FUN_0022a6f0(void) + +{ + FUN_00229dd8(); + return; +} + + +================================================================== + +### FUNC 0022a724 (2360 bytes) name=FUN_0022a724 + +void FUN_0022a724(float *param_1,ulong param_2,void *param_3,ulong param_4,void *param_5, + ulong param_6,void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + uint uVar3; + int iVar4; + int iVar5; + bool bVar6; + double *pdVar7; + ulong uVar8; + undefined1 *puVar9; + long lVar10; + int iVar11; + long lVar12; + int iVar13; + undefined1 *puVar14; + float *pfVar15; + long lVar16; + undefined1 *puVar17; + float *pfVar18; + double *pdVar19; + long lVar20; + long lVar21; + long lVar22; + long lVar23; + double *pdVar24; + double *pdVar25; + int iVar26; + long lVar27; + double *pdVar28; + int iVar29; + ulong uVar30; + double *pdVar31; + int iVar32; + int iVar33; + double dVar34; + double dVar35; + float fVar36; + double dVar37; + double dVar38; + double *pdVar39; + long lVar40; + int iVar41; + long lVar42; + long lVar43; + double dVar44; + undefined1 auStack_440 [1088]; + + iVar33 = *param_9; + iVar4 = (int)(param_6 >> 3); + iVar32 = (int)(param_4 >> 3); + *param_9 = param_10 * iVar33; + iVar26 = (int)(param_8 >> 3); + uVar3 = param_10 + param_10 * iVar33; + memset(param_3,0,-(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3); + pdVar39 = (double *)((long)param_3 + (long)(param_10 + iVar32) * 8); + iVar33 = (int)(param_2 >> 2); + if (param_5 == (void *)0x0) { + pdVar28 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_0022a83c; +LAB_0022a7f4: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar7 = (double *)((long)param_7 + (long)(param_10 + iVar26) * 8); + bVar6 = pdVar7 == (double *)0x0; + if (pdVar28 == (double *)0x0) { + if (bVar6) { +LAB_0022a83c: + iVar4 = param_9[1]; + if (iVar4 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar26 = 0; + do { + if (0 < param_10) { + pdVar28 = pdVar39 + lVar1; + iVar41 = *param_9; + pfVar18 = param_1; + do { + *(undefined8 *) + ((long)pdVar39 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3 + )) = 0; + if (0 < iVar41) { + dVar37 = 0.0; + iVar13 = 0; + pdVar7 = pdVar39; + pfVar15 = pfVar18; + do { + fVar36 = *pfVar15; + iVar13 = iVar13 + param_10; + pfVar15 = pfVar15 + param_10; + dVar37 = dVar37 + (double)fVar36; + *pdVar7 = pdVar7[-iVar32] + dVar37; + pdVar7 = pdVar7 + param_10; + } while (iVar13 < iVar41); + } + pdVar39 = pdVar39 + 1; + pfVar18 = pfVar18 + 1; + } while (pdVar39 != pdVar28); + param_1 = param_1 + lVar1; + pdVar39 = pdVar28; + } + iVar26 = iVar26 + 1; + param_1 = (float *)((long)param_1 + + (-(ulong)((uint)(iVar33 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar33 - param_10) << 2)); + pdVar39 = (double *) + ((long)pdVar39 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar32 - param_10) << 3)); + } while (iVar26 != iVar4); + return; + } + } + else if (bVar6) goto LAB_0022af18; + puVar2 = auStack_440; + uVar30 = (ulong)(param_10 + *param_9); + if (0x88 < uVar30) { + uVar8 = uVar30 << 3; + if (0xfe0000000000000 < uVar30) { + uVar8 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar8); + bVar6 = puVar9 != puVar2; + puVar2 = puVar9; + } + puVar9 = puVar2; + if (0 < param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + lVar22 = (long)param_10; + iVar41 = *param_9; + pdVar24 = pdVar39 + lVar1; + lVar23 = lVar22 * 8; + uVar30 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + pdVar19 = pdVar7; + pfVar18 = param_1; + do { + *(undefined8 *)((long)pdVar19 + uVar30) = 0; + *(undefined8 *)((long)pdVar39 + uVar30) = 0; + if (iVar41 < 1) { +LAB_0022aef0: + if (pdVar28 != (double *)0x0) { +LAB_0022aa6c: + *(undefined8 *)((long)pdVar28 + uVar30) = 0; + pdVar28 = pdVar28 + 1; + } + } + else { + dVar37 = 0.0; + if (pdVar28 != (double *)0x0) { + dVar38 = 0.0; + lVar10 = 0; + iVar13 = 0; + pfVar15 = pfVar18; + do { + fVar36 = *pfVar15; + iVar13 = iVar13 + param_10; + pfVar15 = pfVar15 + lVar22; + dVar34 = (double)fVar36; + dVar37 = dVar37 + dVar34 * dVar34; + dVar38 = dVar38 + dVar34; + *(double *)((long)pdVar19 + lVar10) = dVar34; + *(double *)(puVar9 + lVar10) = dVar34; + *(double *)((long)pdVar39 + lVar10) = dVar38; + *(double *)((long)pdVar28 + lVar10) = dVar37; + lVar10 = lVar10 + lVar23; + } while (iVar13 < iVar41); + if (param_10 == iVar41) goto LAB_0022aeec; + goto LAB_0022aa6c; + } + iVar13 = 0; + lVar10 = 0; + pfVar15 = pfVar18; + do { + fVar36 = *pfVar15; + iVar13 = iVar13 + param_10; + pfVar15 = pfVar15 + lVar22; + dVar38 = (double)fVar36; + dVar37 = dVar37 + dVar38; + *(double *)((long)pdVar19 + lVar10) = dVar38; + *(double *)(puVar9 + lVar10) = dVar38; + *(double *)((long)pdVar39 + lVar10) = dVar37; + lVar10 = lVar10 + lVar23; + } while (iVar13 < iVar41); + if (param_10 == iVar41) { +LAB_0022aeec: + *(undefined8 *)(puVar9 + lVar23) = 0; + goto LAB_0022aef0; + } + } + pdVar39 = pdVar39 + 1; + pfVar18 = pfVar18 + 1; + pdVar19 = pdVar19 + 1; + puVar9 = puVar9 + 8; + } while (pdVar39 != pdVar24); + param_1 = param_1 + lVar1; + pdVar7 = pdVar7 + lVar1; + puVar9 = puVar2 + lVar1 * 8; + pdVar39 = pdVar24; + } + iVar41 = param_9[1]; + if (1 < iVar41) { + lVar10 = (long)param_10; + lVar22 = (ulong)(param_10 - 1) + 1; + lVar23 = (lVar10 + iVar32) * -8; + lVar42 = NEON_shl(lVar10,2); + lVar1 = (lVar10 - lVar42) * 8 + (long)(param_10 - iVar26) * 8; + lVar43 = NEON_shl(lVar22,2); + lVar40 = NEON_shl(lVar22,3); + lVar22 = lVar10 * 8; + iVar13 = 1; + uVar30 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + uVar8 = -(ulong)((uint)-iVar32 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-iVar32 << 3; + do { + pdVar39 = (double *) + ((long)pdVar39 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar32 - param_10) << 3)); + if (pdVar28 != (double *)0x0) { + pdVar28 = (double *) + ((long)pdVar28 + + (-(ulong)((uint)(iVar4 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar4 - param_10) << 3)); + } + param_1 = (float *)((long)param_1 + + (-(ulong)((uint)(iVar33 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar33 - param_10) << 2)); + pdVar7 = (double *) + ((long)pdVar7 + + (-(ulong)((uint)(iVar26 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar26 - param_10) << 3)); + puVar9 = puVar9 + uVar30; + if (0 < param_10) { + iVar11 = *param_9; + pdVar25 = (double *) + ((long)pdVar7 + + (-(ulong)((uint)-iVar26 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar26 << 3)); + iVar5 = iVar11 - param_10; + puVar17 = puVar9 + lVar22; + pfVar18 = (float *)((long)param_1 + lVar43); + lVar16 = (long)param_1 + lVar42; + puVar14 = puVar9; + pdVar19 = pdVar39; + pdVar24 = pdVar7; + do { + fVar36 = *param_1; + *(undefined8 *)((long)pdVar19 + uVar30) = 0; + dVar38 = (double)fVar36; + dVar37 = dVar38 * dVar38; + iVar29 = param_10; + if (pdVar28 == (double *)0x0) { + *(double *)((long)pdVar24 + uVar30) = *pdVar25; + *pdVar19 = dVar38 + *(double *)((long)pdVar19 + uVar8); + *pdVar24 = dVar38 + *pdVar25 + *(double *)(puVar14 + lVar22); + if (iVar5 <= param_10) goto LAB_0022aef8; + lVar21 = 0; + lVar20 = lVar10 << 4; + dVar34 = dVar38; + do { + lVar27 = lVar20; + dVar44 = *(double *)(puVar17 + lVar21 * 8); + iVar29 = iVar29 + param_10; + dVar35 = dVar44 + dVar34; + lVar12 = lVar10 * 2 + lVar21; + dVar34 = (double)*(float *)(lVar16 + lVar21 * 4); + pdVar31 = (double *)(puVar14 + lVar27); + *(double *)(puVar14 + lVar21 * 8) = dVar35; + dVar38 = dVar38 + dVar34; + dVar37 = dVar37 + dVar34 * dVar34; + pdVar19[lVar10 + lVar21] = *(double *)((long)pdVar19 + lVar27 + lVar23) + dVar38; + pdVar24[lVar10 + lVar21] = + dVar34 + *(double *)(puVar14 + lVar27) + + *(double *)((long)pdVar24 + lVar27 + lVar1) + dVar44; + lVar21 = lVar12 - lVar10; + lVar20 = lVar27 + lVar22; + } while (iVar29 < iVar5); + } + else { + *(undefined8 *)((long)pdVar28 + uVar30) = 0; + *(double *)((long)pdVar24 + uVar30) = *pdVar25; + *pdVar19 = dVar38 + *(double *)((long)pdVar19 + uVar8); + *pdVar28 = dVar37 + *(double *) + ((long)pdVar28 + + (-(ulong)((uint)-iVar4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar4 << 3)); + *pdVar24 = dVar38 + *pdVar25 + *(double *)(puVar14 + lVar22); + if (param_10 < iVar5) { + lVar20 = 0; + lVar21 = lVar10 << 4; + dVar34 = dVar38; + do { + lVar27 = lVar21; + dVar44 = *(double *)(puVar17 + lVar20 * 8); + iVar29 = iVar29 + param_10; + dVar35 = dVar44 + dVar34; + lVar12 = lVar20 + lVar10 * 2; + dVar34 = (double)*(float *)(lVar16 + lVar20 * 4); + pdVar31 = (double *)(puVar14 + lVar27); + *(double *)(puVar14 + lVar20 * 8) = dVar35; + dVar38 = dVar38 + dVar34; + dVar37 = dVar37 + dVar34 * dVar34; + pdVar19[lVar10 + lVar20] = *(double *)((long)pdVar19 + lVar27 + lVar23) + dVar38; + pdVar28[lVar10 + lVar20] = + *(double *)((long)pdVar28 + lVar27 + (lVar10 + iVar4) * -8) + dVar37; + pdVar24[lVar10 + lVar20] = + dVar34 + *(double *)(puVar14 + lVar27) + + *(double *)((long)pdVar24 + lVar27 + lVar1) + dVar44; + lVar20 = lVar12 - lVar10; + lVar21 = lVar27 + lVar22; + } while (iVar29 < iVar5); + } + else { +LAB_0022aef8: + pdVar31 = (double *)(puVar14 + lVar22); + lVar12 = lVar10; + lVar27 = lVar22; + dVar34 = dVar38; + } + } + if (param_10 < iVar11) { + dVar44 = *pdVar31; + dVar35 = (double)param_1[lVar12]; + *(double *)(puVar14 + (long)(iVar29 - param_10) * 8) = dVar44 + dVar34; + *(double *)((long)pdVar19 + lVar27) = pdVar19[iVar29 - iVar32] + dVar38 + dVar35; + if (pdVar28 != (double *)0x0) { + *(double *)((long)pdVar28 + lVar27) = + pdVar28[iVar29 - iVar4] + dVar37 + dVar35 * dVar35; + } + *(double *)((long)pdVar24 + lVar27) = + dVar35 + dVar44 + pdVar24[(iVar29 - iVar26) - param_10]; + *pdVar31 = dVar35; + } + param_1 = param_1 + 1; + if (pdVar28 != (double *)0x0) { + pdVar28 = pdVar28 + 1; + } + pdVar19 = pdVar19 + 1; + pdVar24 = pdVar24 + 1; + puVar14 = puVar14 + 8; + pdVar25 = pdVar25 + 1; + puVar17 = puVar17 + 8; + lVar16 = lVar16 + 4; + } while (param_1 != pfVar18); + pdVar39 = (double *)((long)pdVar39 + lVar40); + puVar9 = puVar9 + lVar40; + pdVar7 = (double *)((long)pdVar7 + lVar40); + param_1 = pfVar18; + } + iVar13 = iVar13 + 1; + } while (iVar13 < iVar41); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(param_10 + *param_9) << 3); + pdVar28 = (double *)((long)param_5 + (long)(param_10 + iVar4) * 8); + if (param_7 != (void *)0x0) goto LAB_0022a7f4; + if (pdVar28 == (double *)0x0) goto LAB_0022a83c; +LAB_0022af18: + iVar26 = param_9[1]; + if (0 < iVar26) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar30 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-param_10 << 3; + iVar41 = 0; + do { + if (0 < param_10) { + pdVar19 = pdVar39 + lVar1; + iVar13 = *param_9; + pdVar7 = pdVar28; + pfVar18 = param_1; + do { + *(undefined8 *)((long)pdVar39 + uVar30) = 0; + *(undefined8 *)((long)pdVar7 + uVar30) = 0; + if (0 < iVar13) { + dVar37 = 0.0; + lVar22 = 0; + iVar11 = 0; + dVar38 = 0.0; + pfVar15 = pfVar18; + do { + iVar11 = iVar11 + param_10; + dVar34 = (double)*pfVar15; + pfVar15 = pfVar15 + param_10; + dVar35 = *(double *) + ((long)pdVar7 + + lVar22 + (-(ulong)((uint)-iVar4 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar4 << 3)); + dVar37 = dVar37 + dVar34 * dVar34; + dVar38 = dVar38 + dVar34; + *(double *)((long)pdVar39 + lVar22) = + *(double *) + ((long)pdVar39 + + lVar22 + (-(ulong)((uint)-iVar32 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar32 << 3)) + dVar38; + *(double *)((long)pdVar7 + lVar22) = dVar37 + dVar35; + lVar22 = lVar22 + (long)param_10 * 8; + } while (iVar11 < iVar13); + } + pdVar39 = pdVar39 + 1; + pfVar18 = pfVar18 + 1; + pdVar7 = pdVar7 + 1; + } while (pdVar39 != pdVar19); + param_1 = param_1 + lVar1; + pdVar28 = pdVar28 + lVar1; + pdVar39 = pdVar19; + } + iVar41 = iVar41 + 1; + param_1 = (float *)((long)param_1 + + (-(ulong)((uint)(iVar33 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar33 - param_10) << 2)); + pdVar39 = (double *) + ((long)pdVar39 + + (-(ulong)((uint)(iVar32 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar32 - param_10) << 3)); + pdVar28 = (double *) + ((long)pdVar28 + + (-(ulong)((uint)(iVar4 - param_10) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar4 - param_10) << 3)); + } while (iVar41 != iVar26); + } + } + return; +} + + +================================================================== + +### FUNC 0022b05c (52 bytes) name=FUN_0022b05c + +void FUN_0022b05c(void) + +{ + FUN_0022a724(); + return; +} + + +================================================================== + +### FUNC 0022b090 (2216 bytes) name=FUN_0022b090 + +void FUN_0022b090(double *param_1,ulong param_2,void *param_3,ulong param_4,void *param_5, + ulong param_6,void *param_7,ulong param_8,uint *param_9,uint param_10) + +{ + long lVar1; + undefined1 *puVar2; + double *pdVar3; + int iVar4; + long lVar5; + bool bVar6; + int iVar7; + int iVar8; + ulong uVar9; + undefined1 *puVar10; + uint uVar11; + int iVar12; + long lVar13; + double *pdVar14; + double *pdVar15; + undefined1 *puVar16; + double *pdVar17; + double *pdVar18; + double *pdVar19; + double *pdVar20; + double *pdVar21; + long lVar22; + undefined1 *puVar23; + long lVar24; + uint uVar25; + double *pdVar26; + double *pdVar27; + long lVar28; + int iVar29; + ulong uVar30; + long lVar31; + int iVar32; + double dVar33; + double dVar34; + double dVar35; + double *pdVar36; + double dVar37; + long lVar38; + uint uVar39; + long lVar40; + undefined1 auStack_440 [1088]; + + uVar39 = *param_9; + iVar7 = (int)(param_6 >> 3); + iVar29 = (int)(param_4 >> 3); + *param_9 = param_10 * uVar39; + uVar39 = param_10 + param_10 * uVar39; + iVar12 = (int)(param_8 >> 3); + memset(param_3,0,-(ulong)(uVar39 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar39 << 3); + pdVar36 = (double *)((long)param_3 + (long)(int)(param_10 + iVar29) * 8); + iVar32 = (int)(param_2 >> 3); + if (param_5 == (void *)0x0) { + pdVar14 = (double *)0x0; + if (param_7 == (void *)0x0) goto LAB_0022b1ac; +LAB_0022b160: + memset(param_7,0, + -(ulong)(param_10 + *param_9 >> 0x1f) & 0xfffffff800000000 | + (ulong)(param_10 + *param_9) << 3); + pdVar19 = (double *)((long)param_7 + (long)(int)(param_10 + iVar12) * 8); + bVar6 = pdVar19 == (double *)0x0; + if (pdVar14 == (double *)0x0) { + if (bVar6) { +LAB_0022b1ac: + uVar39 = param_9[1]; + if ((int)uVar39 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + uVar25 = 0; + do { + if (0 < (int)param_10) { + pdVar19 = pdVar36 + lVar1; + uVar11 = *param_9; + pdVar14 = param_1; + do { + *(undefined8 *) + ((long)pdVar36 + + (-(ulong)(-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)-param_10 << 3)) = 0; + if (0 < (int)uVar11) { + dVar34 = 0.0; + lVar13 = 0; + iVar7 = 0; + do { + iVar7 = iVar7 + param_10; + dVar34 = dVar34 + *(double *)((long)pdVar14 + lVar13); + *(double *)((long)pdVar36 + lVar13) = + *(double *) + ((long)pdVar36 + + lVar13 + (-(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar29 << 3)) + dVar34; + lVar13 = lVar13 + (long)(int)param_10 * 8; + } while (iVar7 < (int)uVar11); + } + pdVar36 = pdVar36 + 1; + pdVar14 = pdVar14 + 1; + } while (pdVar36 != pdVar19); + param_1 = param_1 + lVar1; + pdVar36 = pdVar19; + } + uVar25 = uVar25 + 1; + param_1 = (double *) + ((long)param_1 + + (-(ulong)(iVar32 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar32 - param_10) << 3)); + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)(iVar29 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar29 - param_10) << 3)); + } while (uVar25 != uVar39); + return; + } + } + else if (bVar6) goto LAB_0022b804; + puVar2 = auStack_440; + uVar30 = (ulong)(int)(param_10 + *param_9); + if (0x88 < uVar30) { + uVar9 = uVar30 << 3; + if (0xfe0000000000000 < uVar30) { + uVar9 = 0xffffffffffffffff; + } + puVar10 = operator_new__(uVar9); + bVar6 = puVar10 != puVar2; + puVar2 = puVar10; + } + puVar10 = puVar2; + if (0 < (int)param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar9 = -(ulong)(-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)-param_10 << 3; + uVar39 = *param_9; + pdVar27 = pdVar36 + lVar1; + uVar30 = -(ulong)(param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)param_10 << 3; + pdVar15 = pdVar19; + pdVar17 = param_1; + do { + *(undefined8 *)((long)pdVar15 + uVar9) = 0; + *(undefined8 *)((long)pdVar36 + uVar9) = 0; + if ((int)uVar39 < 1) { +LAB_0022b7e0: + if (pdVar14 != (double *)0x0) { +LAB_0022b3ac: + *(undefined8 *)((long)pdVar14 + uVar9) = 0; + pdVar14 = pdVar14 + 1; + } + } + else { + dVar34 = 0.0; + if (pdVar14 != (double *)0x0) { + dVar35 = 0.0; + lVar13 = 0; + iVar8 = 0; + do { + dVar33 = *(double *)((long)pdVar17 + lVar13); + iVar8 = iVar8 + param_10; + dVar34 = dVar34 + dVar33 * dVar33; + dVar35 = dVar35 + dVar33; + *(double *)((long)pdVar15 + lVar13) = dVar33; + *(double *)(puVar10 + lVar13) = dVar33; + *(double *)((long)pdVar36 + lVar13) = dVar35; + *(double *)((long)pdVar14 + lVar13) = dVar34; + lVar13 = lVar13 + uVar30; + } while (iVar8 < (int)uVar39); + if (param_10 == uVar39) goto LAB_0022b7dc; + goto LAB_0022b3ac; + } + iVar8 = 0; + lVar13 = 0; + do { + dVar35 = *(double *)((long)pdVar17 + lVar13); + iVar8 = iVar8 + param_10; + dVar34 = dVar34 + dVar35; + *(double *)((long)pdVar15 + lVar13) = dVar35; + *(double *)(puVar10 + lVar13) = dVar35; + *(double *)((long)pdVar36 + lVar13) = dVar34; + lVar13 = lVar13 + uVar30; + } while (iVar8 < (int)uVar39); + if (param_10 == uVar39) { +LAB_0022b7dc: + *(undefined8 *)(puVar10 + uVar30) = 0; + goto LAB_0022b7e0; + } + } + pdVar36 = pdVar36 + 1; + pdVar17 = pdVar17 + 1; + pdVar15 = pdVar15 + 1; + puVar10 = puVar10 + 8; + } while (pdVar36 != pdVar27); + param_1 = param_1 + lVar1; + pdVar19 = pdVar19 + lVar1; + puVar10 = puVar2 + lVar1 * 8; + pdVar36 = pdVar27; + } + uVar39 = param_9[1]; + if (1 < (int)uVar39) { + lVar13 = (long)(int)param_10; + lVar38 = NEON_shl((ulong)(param_10 - 1) + 1,3); + lVar24 = lVar13 * 8; + uVar30 = -(ulong)(-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)-param_10 << 3; + uVar9 = -(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)-iVar29 << 3; + lVar40 = NEON_shl(lVar13,4); + lVar28 = (lVar13 + iVar29) * -8; + iVar8 = 1; + lVar1 = lVar13 * -0x18 + (long)(int)(param_10 - iVar12) * 8; + do { + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)(iVar29 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar29 - param_10) << 3)); + if (pdVar14 != (double *)0x0) { + pdVar14 = (double *) + ((long)pdVar14 + + (-(ulong)(iVar7 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar7 - param_10) << 3)); + } + param_1 = (double *) + ((long)param_1 + + (-(ulong)(iVar32 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar32 - param_10) << 3)); + pdVar19 = (double *) + ((long)pdVar19 + + (-(ulong)(iVar12 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar12 - param_10) << 3)); + puVar10 = puVar10 + uVar30; + if (0 < (int)param_10) { + pdVar21 = param_1 + lVar13; + pdVar18 = pdVar19 + lVar13; + uVar25 = *param_9; + iVar4 = uVar25 - param_10; + pdVar27 = (double *) + ((long)pdVar19 + + (-(ulong)((uint)-iVar12 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar12 << 3)); + puVar23 = puVar10 + lVar24; + pdVar20 = pdVar36 + lVar13; + pdVar3 = (double *)((long)param_1 + lVar38); + puVar16 = puVar10; + pdVar17 = pdVar36; + pdVar15 = pdVar19; + do { + dVar35 = *param_1; + *(undefined8 *)((long)pdVar17 + uVar30) = 0; + dVar33 = dVar35 * dVar35; + dVar34 = dVar35; + uVar11 = param_10; + if (pdVar14 == (double *)0x0) { + *(double *)((long)pdVar15 + uVar30) = *pdVar27; + *pdVar17 = dVar35 + *(double *)((long)pdVar17 + uVar9); + *pdVar15 = dVar35 + *pdVar27 + *(double *)(puVar16 + lVar24); + if (iVar4 <= (int)param_10) goto LAB_0022b7e8; + lVar22 = 0; + lVar5 = lVar40; + do { + lVar31 = lVar5; + dVar37 = *(double *)(puVar23 + lVar22); + uVar11 = uVar11 + param_10; + pdVar26 = (double *)(puVar16 + lVar31); + *(double *)(puVar16 + lVar22) = dVar37 + dVar35; + dVar35 = *(double *)((long)pdVar21 + lVar22); + dVar34 = dVar34 + dVar35; + dVar33 = dVar33 + dVar35 * dVar35; + *(double *)((long)pdVar20 + lVar22) = + *(double *)((long)pdVar17 + lVar31 + lVar28) + dVar34; + *(double *)((long)pdVar18 + lVar22) = + dVar35 + *(double *)(puVar16 + lVar31) + + *(double *)((long)pdVar15 + lVar31 + lVar1) + dVar37; + lVar22 = lVar22 + lVar24; + lVar5 = lVar31 + lVar24; + } while ((int)uVar11 < iVar4); + } + else { + *(undefined8 *)((long)pdVar14 + uVar30) = 0; + *(double *)((long)pdVar15 + uVar30) = *pdVar27; + *pdVar17 = dVar35 + *(double *)((long)pdVar17 + uVar9); + *pdVar14 = dVar33 + *(double *) + ((long)pdVar14 + + (-(ulong)((uint)-iVar7 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar7 << 3)); + *pdVar15 = dVar35 + *pdVar27 + *(double *)(puVar16 + lVar24); + if ((int)param_10 < iVar4) { + lVar22 = 0; + lVar5 = lVar40; + do { + lVar31 = lVar5; + dVar37 = *(double *)(puVar23 + lVar22); + uVar11 = uVar11 + param_10; + pdVar26 = (double *)(puVar16 + lVar31); + *(double *)(puVar16 + lVar22) = dVar37 + dVar35; + dVar35 = *(double *)((long)pdVar21 + lVar22); + dVar34 = dVar34 + dVar35; + dVar33 = dVar33 + dVar35 * dVar35; + *(double *)((long)pdVar20 + lVar22) = + *(double *)((long)pdVar17 + lVar31 + lVar28) + dVar34; + *(double *)((long)pdVar14 + lVar22 + lVar24) = + *(double *)((long)pdVar14 + lVar31 + (lVar13 + iVar7) * -8) + dVar33; + *(double *)((long)pdVar18 + lVar22) = + dVar35 + *(double *)(puVar16 + lVar31) + + *(double *)((long)pdVar15 + lVar31 + lVar1) + dVar37; + lVar22 = lVar22 + lVar24; + lVar5 = lVar31 + lVar24; + } while ((int)uVar11 < iVar4); + } + else { +LAB_0022b7e8: + pdVar26 = (double *)(puVar16 + lVar24); + lVar31 = lVar24; + } + } + if ((int)param_10 < (int)uVar25) { + dVar37 = *pdVar26; + *(double *)(puVar16 + (long)(int)(uVar11 - param_10) * 8) = dVar37 + dVar35; + dVar35 = *(double *)((long)param_1 + lVar31); + *(double *)((long)pdVar17 + lVar31) = + pdVar17[(int)(uVar11 - iVar29)] + dVar34 + dVar35; + if (pdVar14 != (double *)0x0) { + *(double *)((long)pdVar14 + lVar31) = + pdVar14[(int)(uVar11 - iVar7)] + dVar33 + dVar35 * dVar35; + } + *(double *)((long)pdVar15 + lVar31) = + dVar37 + dVar35 + pdVar15[(int)((uVar11 - iVar12) - param_10)]; + *pdVar26 = dVar35; + } + param_1 = param_1 + 1; + if (pdVar14 != (double *)0x0) { + pdVar14 = pdVar14 + 1; + } + pdVar17 = pdVar17 + 1; + pdVar15 = pdVar15 + 1; + puVar16 = puVar16 + 8; + pdVar27 = pdVar27 + 1; + puVar23 = puVar23 + 8; + pdVar21 = pdVar21 + 1; + pdVar20 = pdVar20 + 1; + pdVar18 = pdVar18 + 1; + } while (param_1 != pdVar3); + pdVar36 = (double *)((long)pdVar36 + lVar38); + puVar10 = puVar10 + lVar38; + pdVar19 = (double *)((long)pdVar19 + lVar38); + param_1 = pdVar3; + } + iVar8 = iVar8 + 1; + } while (iVar8 < (int)uVar39); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)(param_10 + *param_9 >> 0x1f) & 0xfffffff800000000 | + (ulong)(param_10 + *param_9) << 3); + pdVar14 = (double *)((long)param_5 + (long)(int)(param_10 + iVar7) * 8); + if (param_7 != (void *)0x0) goto LAB_0022b160; + if (pdVar14 == (double *)0x0) goto LAB_0022b1ac; +LAB_0022b804: + uVar39 = param_9[1]; + if (0 < (int)uVar39) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar30 = -(ulong)(-param_10 >> 0x1f) & 0xfffffff800000000 | (ulong)-param_10 << 3; + uVar25 = 0; + do { + if (0 < (int)param_10) { + pdVar15 = pdVar36 + lVar1; + uVar11 = *param_9; + pdVar17 = pdVar14; + pdVar19 = param_1; + do { + *(undefined8 *)((long)pdVar36 + uVar30) = 0; + *(undefined8 *)((long)pdVar17 + uVar30) = 0; + if (0 < (int)uVar11) { + dVar34 = 0.0; + lVar13 = 0; + iVar12 = 0; + dVar35 = 0.0; + do { + dVar33 = *(double *)((long)pdVar19 + lVar13); + iVar12 = iVar12 + param_10; + dVar34 = dVar34 + dVar33 * dVar33; + dVar35 = dVar35 + dVar33; + dVar33 = *(double *) + ((long)pdVar17 + + lVar13 + (-(ulong)((uint)-iVar7 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar7 << 3)); + *(double *)((long)pdVar36 + lVar13) = + *(double *) + ((long)pdVar36 + + lVar13 + (-(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)-iVar29 << 3)) + dVar35; + *(double *)((long)pdVar17 + lVar13) = dVar34 + dVar33; + lVar13 = lVar13 + (long)(int)param_10 * 8; + } while (iVar12 < (int)uVar11); + } + pdVar36 = pdVar36 + 1; + pdVar19 = pdVar19 + 1; + pdVar17 = pdVar17 + 1; + } while (pdVar36 != pdVar15); + param_1 = param_1 + lVar1; + pdVar14 = pdVar14 + lVar1; + pdVar36 = pdVar15; + } + uVar25 = uVar25 + 1; + param_1 = (double *) + ((long)param_1 + + (-(ulong)(iVar32 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar32 - param_10) << 3)); + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)(iVar29 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar29 - param_10) << 3)); + pdVar14 = (double *) + ((long)pdVar14 + + (-(ulong)(iVar7 - param_10 >> 0x1f) & 0xfffffff800000000 | + (ulong)(iVar7 - param_10) << 3)); + } while (uVar25 != uVar39); + } + } + return; +} + + +================================================================== + +### FUNC 0022b938 (52 bytes) name=FUN_0022b938 + +void FUN_0022b938(void) + +{ + FUN_0022b090(); + return; +} + + +================================================================== + +### FUNC 0022b96c (2436 bytes) name=FUN_0022b96c + +void FUN_0022b96c(byte *param_1,int param_2,void *param_3,ulong param_4,void *param_5,ulong param_6, + void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + byte *pbVar3; + int iVar4; + int iVar5; + byte bVar6; + bool bVar7; + int iVar8; + uint uVar9; + int iVar10; + ulong uVar11; + undefined1 *puVar12; + uint uVar13; + uint uVar14; + long lVar15; + long lVar16; + long lVar17; + int iVar18; + uint uVar19; + int *piVar20; + int *piVar21; + byte *pbVar22; + undefined1 *puVar23; + float *pfVar24; + int iVar25; + long lVar26; + int iVar27; + long lVar28; + int *piVar29; + undefined1 *puVar30; + long lVar31; + int *piVar32; + float *pfVar33; + long lVar34; + ulong uVar35; + uint *puVar36; + long lVar37; + int iVar38; + float fVar39; + float fVar40; + int *piVar41; + int *piVar42; + long lVar43; + long lVar44; + int *local_440; + undefined1 auStack_420 [1056]; + + iVar8 = (int)(param_6 >> 2); + iVar38 = (int)(param_4 >> 2); + uVar9 = param_10 + param_10 * *param_9; + iVar27 = (int)(param_8 >> 2); + *param_9 = param_10 * *param_9; + memset(param_3,0,-(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar9 << 2); + piVar41 = (int *)((long)param_3 + (long)(param_10 + iVar38) * 4); + if (param_5 == (void *)0x0) { + pfVar33 = (float *)0x0; + if (param_7 == (void *)0x0) goto LAB_0022ba80; +LAB_0022ba3c: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + local_440 = (int *)((long)param_7 + (long)(param_10 + iVar27) * 4); + bVar7 = local_440 == (int *)0x0; + if (pfVar33 == (float *)0x0) { + if (bVar7) { +LAB_0022ba80: + iVar8 = param_9[1]; + if (iVar8 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar27 = 0; + do { + if (0 < param_10) { + piVar20 = piVar41 + lVar1; + pbVar22 = param_1; + do { + *(undefined4 *) + ((long)piVar41 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2 + )) = 0; + if (0 < *param_9) { + lVar15 = 0; + iVar18 = 0; + iVar8 = 0; + do { + iVar8 = iVar8 + param_10; + iVar18 = iVar18 + (uint)pbVar22[lVar15]; + piVar41[lVar15] = + *(int *)((long)piVar41 + + lVar15 * 4 + + (-(ulong)((uint)-iVar38 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar38 << 2)) + iVar18; + lVar15 = lVar15 + param_10; + } while (iVar8 < *param_9); + } + piVar41 = piVar41 + 1; + pbVar22 = pbVar22 + 1; + } while (piVar41 != piVar20); + param_1 = param_1 + lVar1; + iVar8 = param_9[1]; + piVar41 = piVar20; + } + iVar27 = iVar27 + 1; + piVar41 = (int *)((long)piVar41 + + (-(ulong)((uint)(iVar38 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar38 - param_10) << 2)); + param_1 = param_1 + (param_2 - param_10); + } while (iVar27 < iVar8); + return; + } + } + else if (bVar7) goto LAB_0022c1a0; + puVar2 = auStack_420; + uVar35 = (ulong)(param_10 + *param_9); + if (0x108 < uVar35) { + uVar11 = uVar35 << 2; + if (0x1fc0000000000000 < uVar35) { + uVar11 = 0xffffffffffffffff; + } + puVar12 = operator_new__(uVar11); + bVar7 = puVar12 != puVar2; + puVar2 = puVar12; + } + puVar12 = puVar2; + if (0 < param_10) { + lVar15 = (long)param_10; + lVar1 = (ulong)(param_10 - 1) + 1; + piVar32 = piVar41 + lVar1; + uVar35 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + piVar20 = local_440; + pbVar22 = param_1; + do { + *(undefined4 *)((long)piVar20 + uVar35) = 0; + *(undefined4 *)((long)piVar41 + uVar35) = 0; + if (0 < *param_9) { + if (pfVar33 == (float *)0x0) { + iVar10 = 0; + iVar18 = 0; + lVar16 = 0; + do { + bVar6 = pbVar22[lVar16]; + iVar18 = iVar18 + param_10; + piVar20[lVar16] = (uint)bVar6; + *(uint *)(puVar12 + lVar16 * 4) = (uint)bVar6; + iVar10 = iVar10 + (uint)bVar6; + piVar41[lVar16] = iVar10; + lVar16 = lVar16 + lVar15; + iVar25 = *param_9; + } while (iVar18 < iVar25); + } + else { + fVar40 = 0.0; + lVar16 = 0; + iVar10 = 0; + iVar18 = 0; + do { + bVar6 = pbVar22[lVar16]; + iVar18 = iVar18 + param_10; + piVar20[lVar16] = (uint)bVar6; + *(uint *)(puVar12 + lVar16 * 4) = (uint)bVar6; + uVar9 = (uint)bVar6; + iVar10 = iVar10 + uVar9; + piVar41[lVar16] = iVar10; + iVar25 = *param_9; + fVar40 = fVar40 + (float)uVar9 * (float)uVar9; + pfVar33[lVar16] = fVar40; + lVar16 = lVar16 + lVar15; + } while (iVar18 < iVar25); + } + if (param_10 == iVar25) { + *(undefined4 *)(puVar12 + lVar15 * 4) = 0; + } + } + if (pfVar33 != (float *)0x0) { + *(undefined4 *)((long)pfVar33 + uVar35) = 0; + pfVar33 = pfVar33 + 1; + } + piVar41 = piVar41 + 1; + pbVar22 = pbVar22 + 1; + piVar20 = piVar20 + 1; + puVar12 = puVar12 + 4; + } while (piVar41 != piVar32); + param_1 = param_1 + lVar1; + local_440 = local_440 + lVar1; + piVar41 = piVar32; + puVar12 = puVar2 + lVar1 * 4; + } + iVar18 = param_9[1]; + if (1 < iVar18) { + lVar15 = (ulong)(param_10 - 1) + 1; + lVar31 = (long)param_10; + uVar35 = -(ulong)((uint)-iVar38 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar38 << 2; + uVar11 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + lVar16 = (lVar31 + iVar38) * -4; + lVar28 = lVar31 * 4; + lVar44 = NEON_shl(lVar31,3); + iVar10 = 1; + lVar43 = NEON_shl(lVar15,2); + lVar1 = lVar31 * -0xc + (long)(param_10 - iVar27) * 4; + do { + piVar41 = (int *)((long)piVar41 + + (-(ulong)((uint)(iVar38 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar38 - param_10) << 2)); + puVar12 = puVar12 + uVar11; + if (pfVar33 != (float *)0x0) { + pfVar33 = (float *)((long)pfVar33 + + (-(ulong)((uint)(iVar8 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar8 - param_10) << 2)); + } + param_1 = param_1 + (param_2 - param_10); + local_440 = (int *)((long)local_440 + + (-(ulong)((uint)(iVar27 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar27 - param_10) << 2)); + if (0 < param_10) { + pbVar22 = param_1 + lVar31; + piVar21 = local_440 + lVar31; + piVar42 = (int *)((long)local_440 + + (-(ulong)((uint)-iVar27 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar27 << 2)); + puVar30 = puVar12 + lVar28; + piVar29 = piVar41 + lVar31; + pbVar3 = param_1 + lVar15; + puVar23 = puVar12; + piVar20 = piVar41; + piVar32 = local_440; + do { + bVar6 = *param_1; + uVar19 = (uint)bVar6; + uVar9 = (uint)bVar6; + *(undefined4 *)((long)piVar20 + uVar11) = 0; + fVar40 = (float)uVar19 * (float)bVar6; + uVar14 = (uint)bVar6; + uVar13 = (uint)bVar6; + iVar18 = param_10; + if (pfVar33 == (float *)0x0) { + *(int *)((long)piVar32 + uVar11) = *piVar42; + *piVar20 = (uint)bVar6 + *(int *)((long)piVar20 + uVar35); + *piVar32 = uVar13 + *piVar42 + *(int *)(puVar23 + lVar28); + iVar25 = *param_9; + if (iVar25 - param_10 <= param_10) goto LAB_0022c140; + lVar26 = 0; + lVar37 = lVar44; + uVar9 = uVar19; + do { + lVar17 = lVar37; + iVar25 = *(int *)(puVar30 + lVar26 * 4); + iVar18 = iVar18 + param_10; + lVar34 = lVar31 * 2 + lVar26; + puVar36 = (uint *)(puVar23 + lVar17); + *(uint *)(puVar23 + lVar26 * 4) = iVar25 + uVar13; + bVar6 = pbVar22[lVar26]; + uVar13 = (uint)bVar6; + uVar14 = (uint)bVar6; + uVar9 = uVar9 + uVar14; + piVar29[lVar26] = *(int *)((long)piVar20 + lVar17 + lVar16) + uVar9; + piVar21[lVar26] = + (uint)bVar6 + *(int *)(puVar23 + lVar17) + + *(int *)((long)piVar32 + lVar17 + lVar1) + iVar25; + lVar26 = lVar34 - lVar31; + iVar25 = *param_9; + fVar40 = fVar40 + (float)bVar6 * (float)uVar14; + lVar37 = lVar17 + lVar28; + } while (iVar18 < iVar25 - param_10); + } + else { + *(undefined4 *)((long)pfVar33 + uVar11) = 0; + *(int *)((long)piVar32 + uVar11) = *piVar42; + fVar39 = *(float *)((long)pfVar33 + + (-(ulong)((uint)-iVar8 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar8 << 2)); + *piVar20 = uVar13 + *(int *)((long)piVar20 + uVar35); + iVar25 = *piVar42; + iVar4 = *(int *)(puVar23 + lVar28); + *pfVar33 = fVar40 + fVar39; + *piVar32 = uVar13 + iVar25 + iVar4; + iVar25 = *param_9; + if (param_10 < iVar25 - param_10) { + lVar37 = 0; + lVar26 = lVar44; + uVar9 = uVar19; + uVar13 = uVar14; + do { + lVar17 = lVar26; + iVar25 = *(int *)(puVar30 + lVar37 * 4); + iVar18 = iVar18 + param_10; + fVar39 = *(float *)((long)pfVar33 + lVar17 + (lVar31 + iVar8) * -4); + lVar34 = lVar37 + lVar31 * 2; + *(uint *)(puVar23 + lVar37 * 4) = iVar25 + uVar13; + puVar36 = (uint *)(puVar23 + lVar17); + bVar6 = pbVar22[lVar37]; + uVar13 = (uint)bVar6; + uVar14 = (uint)bVar6; + uVar9 = uVar9 + bVar6; + piVar29[lVar37] = *(int *)((long)piVar20 + lVar17 + lVar16) + uVar9; + iVar4 = *(int *)(puVar23 + lVar17); + iVar5 = *(int *)((long)piVar32 + lVar17 + lVar1); + fVar40 = fVar40 + (float)bVar6 * (float)(uint)bVar6; + pfVar33[lVar31 + lVar37] = fVar39 + fVar40; + piVar21[lVar37] = (uint)bVar6 + iVar4 + iVar5 + iVar25; + lVar37 = lVar34 - lVar31; + iVar25 = *param_9; + lVar26 = lVar17 + lVar28; + } while (iVar18 < iVar25 - param_10); + } + else { +LAB_0022c140: + puVar36 = (uint *)(puVar23 + lVar28); + lVar17 = lVar28; + lVar34 = lVar31; + } + } + if (param_10 < iVar25) { + uVar13 = *puVar36; + *(uint *)(puVar23 + (long)(iVar18 - param_10) * 4) = uVar13 + uVar14; + bVar6 = param_1[lVar34]; + uVar14 = (uint)bVar6; + *(uint *)((long)piVar20 + lVar17) = piVar20[iVar18 - iVar38] + uVar9 + bVar6; + if (pfVar33 != (float *)0x0) { + *(float *)((long)pfVar33 + lVar17) = + pfVar33[iVar18 - iVar8] + fVar40 + (float)uVar14 * (float)(uint)bVar6; + } + *(uint *)((long)piVar32 + lVar17) = + uVar14 + uVar13 + piVar32[(iVar18 - iVar27) - param_10]; + *puVar36 = uVar14; + } + piVar20 = piVar20 + 1; + if (pfVar33 != (float *)0x0) { + pfVar33 = pfVar33 + 1; + } + piVar32 = piVar32 + 1; + puVar23 = puVar23 + 4; + param_1 = param_1 + 1; + puVar30 = puVar30 + 4; + pbVar22 = pbVar22 + 1; + piVar29 = piVar29 + 1; + piVar21 = piVar21 + 1; + piVar42 = piVar42 + 1; + } while (param_1 != pbVar3); + piVar41 = (int *)((long)piVar41 + lVar43); + puVar12 = puVar12 + lVar43; + local_440 = (int *)((long)local_440 + lVar43); + iVar18 = param_9[1]; + param_1 = pbVar3; + } + iVar10 = iVar10 + 1; + } while (iVar10 < iVar18); + } + if (bVar7) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + pfVar33 = (float *)((long)param_5 + (long)(param_10 + iVar8) * 4); + if (param_7 != (void *)0x0) goto LAB_0022ba3c; + if (pfVar33 == (float *)0x0) goto LAB_0022ba80; +LAB_0022c1a0: + iVar27 = param_9[1]; + if (0 < iVar27) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar35 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + iVar18 = 0; + do { + if (0 < param_10) { + piVar20 = piVar41 + lVar1; + pfVar24 = pfVar33; + pbVar22 = param_1; + do { + *(undefined4 *)((long)piVar41 + uVar35) = 0; + iVar27 = *param_9; + *(undefined4 *)((long)pfVar24 + uVar35) = 0; + if (0 < iVar27) { + fVar40 = 0.0; + lVar15 = 0; + iVar10 = 0; + iVar27 = 0; + do { + bVar6 = pbVar22[lVar15]; + iVar27 = iVar27 + param_10; + fVar39 = *(float *)((long)pfVar24 + + lVar15 * 4 + + (-(ulong)((uint)-iVar8 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar8 << 2)); + iVar10 = iVar10 + (uint)bVar6; + piVar41[lVar15] = + *(int *)((long)piVar41 + + lVar15 * 4 + + (-(ulong)((uint)-iVar38 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar38 << 2)) + iVar10; + iVar25 = *param_9; + fVar40 = fVar40 + (float)bVar6 * (float)bVar6; + pfVar24[lVar15] = fVar40 + fVar39; + lVar15 = lVar15 + param_10; + } while (iVar27 < iVar25); + } + piVar41 = piVar41 + 1; + pbVar22 = pbVar22 + 1; + pfVar24 = pfVar24 + 1; + } while (piVar41 != piVar20); + pfVar33 = pfVar33 + lVar1; + param_1 = param_1 + lVar1; + iVar27 = param_9[1]; + piVar41 = piVar20; + } + iVar18 = iVar18 + 1; + piVar41 = (int *)((long)piVar41 + + (-(ulong)((uint)(iVar38 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar38 - param_10) << 2)); + pfVar33 = (float *)((long)pfVar33 + + (-(ulong)((uint)(iVar8 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar8 - param_10) << 2)); + param_1 = param_1 + (param_2 - param_10); + } while (iVar18 < iVar27); + } + } + return; +} + + +================================================================== + +### FUNC 0022c2f0 (52 bytes) name=FUN_0022c2f0 + +void FUN_0022c2f0(void) + +{ + FUN_0022b96c(); + return; +} + + +================================================================== + +### FUNC 0022c324 (2324 bytes) name=FUN_0022c324 + +void FUN_0022c324(byte *param_1,int param_2,void *param_3,ulong param_4,void *param_5,ulong param_6, + void *param_7,ulong param_8,int *param_9,int param_10) + +{ + long lVar1; + undefined1 *puVar2; + uint uVar3; + byte *pbVar4; + byte bVar5; + bool bVar6; + int iVar7; + ulong uVar8; + undefined1 *puVar9; + long lVar10; + long lVar11; + long lVar12; + int iVar13; + undefined1 *puVar14; + byte *pbVar15; + float *pfVar16; + float *pfVar17; + undefined1 *puVar18; + float *pfVar19; + long lVar20; + long lVar21; + int iVar22; + float *pfVar23; + float *pfVar24; + float *pfVar25; + ulong uVar26; + long lVar27; + int iVar28; + int iVar29; + long lVar30; + int iVar31; + long lVar32; + float fVar33; + float fVar34; + float fVar35; + float *pfVar36; + float fVar37; + long lVar38; + int iVar39; + long lVar40; + int iVar41; + undefined1 auStack_420 [1056]; + + iVar28 = *param_9; + iVar22 = (int)(param_6 >> 2); + *param_9 = param_10 * iVar28; + iVar31 = (int)(param_4 >> 2); + uVar3 = param_10 + param_10 * iVar28; + iVar28 = (int)(param_8 >> 2); + memset(param_3,0,-(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2); + pfVar36 = (float *)((long)param_3 + (long)(param_10 + iVar31) * 4); + if (param_5 == (void *)0x0) { + pfVar25 = (float *)0x0; + if (param_7 == (void *)0x0) goto LAB_0022c42c; +LAB_0022c3ec: + memset(param_7,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + pfVar16 = (float *)((long)param_7 + (long)(param_10 + iVar28) * 4); + bVar6 = pfVar16 == (float *)0x0; + if (pfVar25 == (float *)0x0) { + if (bVar6) { +LAB_0022c42c: + iVar28 = param_9[1]; + if (iVar28 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + iVar22 = 0; + do { + if (0 < param_10) { + pfVar25 = pfVar36 + lVar1; + iVar39 = *param_9; + pbVar15 = param_1; + do { + *(undefined4 *) + ((long)pfVar36 + + (-(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2 + )) = 0; + if (0 < iVar39) { + fVar35 = 0.0; + lVar11 = 0; + iVar7 = 0; + do { + iVar7 = iVar7 + param_10; + fVar35 = fVar35 + (float)pbVar15[lVar11]; + pfVar36[lVar11] = + *(float *)((long)pfVar36 + + lVar11 * 4 + + (-(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar31 << 2)) + fVar35; + lVar11 = lVar11 + param_10; + } while (iVar7 < iVar39); + } + pfVar36 = pfVar36 + 1; + pbVar15 = pbVar15 + 1; + } while (pfVar36 != pfVar25); + param_1 = param_1 + lVar1; + pfVar36 = pfVar25; + } + iVar22 = iVar22 + 1; + param_1 = param_1 + (param_2 - param_10); + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar31 - param_10) << 2)); + } while (iVar22 != iVar28); + return; + } + } + else if (bVar6) goto LAB_0022caf4; + puVar2 = auStack_420; + uVar26 = (ulong)(param_10 + *param_9); + if (0x108 < uVar26) { + uVar8 = uVar26 << 2; + if (0x1fc0000000000000 < uVar26) { + uVar8 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar8); + bVar6 = puVar9 != puVar2; + puVar2 = puVar9; + } + puVar9 = puVar2; + if (0 < param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + lVar11 = (long)param_10; + iVar39 = *param_9; + pfVar23 = pfVar36 + lVar1; + uVar26 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + pfVar17 = pfVar16; + pbVar15 = param_1; + do { + *(undefined4 *)((long)pfVar17 + uVar26) = 0; + *(undefined4 *)((long)pfVar36 + uVar26) = 0; + if (iVar39 < 1) { +LAB_0022cacc: + if (pfVar25 != (float *)0x0) { +LAB_0022c640: + *(undefined4 *)((long)pfVar25 + uVar26) = 0; + pfVar25 = pfVar25 + 1; + } + } + else { + if (pfVar25 != (float *)0x0) { + fVar35 = 0.0; + lVar10 = 0; + iVar7 = 0; + fVar37 = 0.0; + do { + iVar7 = iVar7 + param_10; + fVar34 = (float)pbVar15[lVar10]; + fVar33 = (float)pbVar15[lVar10]; + pfVar17[lVar10] = fVar34; + fVar35 = fVar35 + fVar33 * fVar34; + fVar37 = fVar37 + fVar33; + *(float *)(puVar9 + lVar10 * 4) = fVar34; + pfVar36[lVar10] = fVar37; + pfVar25[lVar10] = fVar35; + lVar10 = lVar10 + lVar11; + } while (iVar7 < iVar39); + if (param_10 == iVar39) goto LAB_0022cac8; + goto LAB_0022c640; + } + fVar35 = 0.0; + iVar7 = 0; + lVar10 = 0; + do { + iVar7 = iVar7 + param_10; + fVar37 = (float)pbVar15[lVar10]; + fVar35 = fVar35 + (float)pbVar15[lVar10]; + pfVar17[lVar10] = fVar37; + *(float *)(puVar9 + lVar10 * 4) = fVar37; + pfVar36[lVar10] = fVar35; + lVar10 = lVar10 + lVar11; + } while (iVar7 < iVar39); + if (param_10 == iVar39) { +LAB_0022cac8: + *(undefined4 *)(puVar9 + lVar11 * 4) = 0; + goto LAB_0022cacc; + } + } + pfVar36 = pfVar36 + 1; + pbVar15 = pbVar15 + 1; + pfVar17 = pfVar17 + 1; + puVar9 = puVar9 + 4; + } while (pfVar36 != pfVar23); + param_1 = param_1 + lVar1; + pfVar16 = pfVar16 + lVar1; + puVar9 = puVar2 + lVar1 * 4; + pfVar36 = pfVar23; + } + iVar39 = param_9[1]; + if (1 < iVar39) { + lVar21 = (long)param_10; + lVar11 = (ulong)(param_10 - 1) + 1; + lVar20 = lVar21 * 4; + lVar10 = (lVar21 + iVar31) * -4; + lVar40 = NEON_shl(lVar21,3); + lVar38 = NEON_shl(lVar11,2); + iVar7 = 1; + lVar1 = lVar21 * -0xc + (long)(param_10 - iVar28) * 4; + uVar8 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + uVar26 = -(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar31 << 2; + do { + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar31 - param_10) << 2)); + if (pfVar25 != (float *)0x0) { + pfVar25 = (float *)((long)pfVar25 + + (-(ulong)((uint)(iVar22 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar22 - param_10) << 2)); + } + param_1 = param_1 + (param_2 - param_10); + pfVar16 = (float *)((long)pfVar16 + + (-(ulong)((uint)(iVar28 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar28 - param_10) << 2)); + puVar9 = puVar9 + uVar8; + if (0 < param_10) { + pbVar15 = param_1 + lVar21; + iVar41 = *param_9; + pfVar24 = (float *)((long)pfVar16 + + (-(ulong)((uint)-iVar28 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar28 << 2)); + puVar18 = puVar9 + lVar20; + iVar13 = iVar41 - param_10; + pbVar4 = param_1 + lVar11; + puVar14 = puVar9; + pfVar17 = pfVar36; + pfVar23 = pfVar16; + do { + bVar5 = *param_1; + *(undefined4 *)((long)pfVar17 + uVar8) = 0; + fVar35 = (float)bVar5; + fVar37 = fVar35 * (float)bVar5; + iVar29 = param_10; + if (pfVar25 == (float *)0x0) { + *(float *)((long)pfVar23 + uVar8) = *pfVar24; + *pfVar17 = fVar35 + *(float *)((long)pfVar17 + uVar26); + *pfVar23 = fVar35 + *pfVar24 + *(float *)(puVar14 + lVar20); + if (iVar13 <= param_10) goto LAB_0022cad4; + lVar12 = 0; + lVar32 = lVar40; + fVar33 = fVar35; + do { + lVar30 = lVar32; + fVar34 = *(float *)(puVar18 + lVar12 * 4); + iVar29 = iVar29 + param_10; + lVar27 = lVar21 * 2 + lVar12; + pfVar19 = (float *)(puVar14 + lVar30); + *(float *)(puVar14 + lVar12 * 4) = fVar34 + fVar33; + fVar33 = (float)pbVar15[lVar12]; + fVar35 = fVar35 + fVar33; + fVar37 = fVar37 + (float)pbVar15[lVar12] * fVar33; + pfVar17[lVar21 + lVar12] = *(float *)((long)pfVar17 + lVar30 + lVar10) + fVar35; + pfVar23[lVar21 + lVar12] = + fVar33 + *(float *)(puVar14 + lVar30) + + *(float *)((long)pfVar23 + lVar30 + lVar1) + fVar34; + lVar12 = lVar27 - lVar21; + lVar32 = lVar30 + lVar20; + } while (iVar29 < iVar13); + } + else { + *(undefined4 *)((long)pfVar25 + uVar8) = 0; + *(float *)((long)pfVar23 + uVar8) = *pfVar24; + *pfVar17 = fVar35 + *(float *)((long)pfVar17 + uVar26); + *pfVar25 = fVar37 + *(float *)((long)pfVar25 + + (-(ulong)((uint)-iVar22 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar22 << 2)); + *pfVar23 = fVar35 + *pfVar24 + *(float *)(puVar14 + lVar20); + if (param_10 < iVar13) { + lVar32 = 0; + lVar12 = lVar40; + fVar33 = fVar35; + do { + lVar30 = lVar12; + fVar34 = *(float *)(puVar18 + lVar32 * 4); + iVar29 = iVar29 + param_10; + lVar27 = lVar32 + lVar21 * 2; + pfVar19 = (float *)(puVar14 + lVar30); + *(float *)(puVar14 + lVar32 * 4) = fVar34 + fVar33; + fVar33 = (float)pbVar15[lVar32]; + fVar35 = fVar35 + fVar33; + fVar37 = fVar37 + (float)pbVar15[lVar32] * fVar33; + pfVar17[lVar21 + lVar32] = *(float *)((long)pfVar17 + lVar30 + lVar10) + fVar35; + pfVar25[lVar21 + lVar32] = + *(float *)((long)pfVar25 + lVar30 + (lVar21 + iVar22) * -4) + fVar37; + pfVar23[lVar21 + lVar32] = + fVar33 + *(float *)(puVar14 + lVar30) + + *(float *)((long)pfVar23 + lVar30 + lVar1) + fVar34; + lVar32 = lVar27 - lVar21; + lVar12 = lVar30 + lVar20; + } while (iVar29 < iVar13); + } + else { +LAB_0022cad4: + pfVar19 = (float *)(puVar14 + lVar20); + lVar27 = lVar21; + lVar30 = lVar20; + fVar33 = fVar35; + } + } + if (param_10 < iVar41) { + fVar34 = *pfVar19; + *(float *)(puVar14 + (long)(iVar29 - param_10) * 4) = fVar34 + fVar33; + bVar5 = param_1[lVar27]; + fVar33 = (float)bVar5; + *(float *)((long)pfVar17 + lVar30) = pfVar17[iVar29 - iVar31] + fVar35 + fVar33; + if (pfVar25 != (float *)0x0) { + *(float *)((long)pfVar25 + lVar30) = + pfVar25[iVar29 - iVar22] + fVar37 + (float)bVar5 * fVar33; + } + *(float *)((long)pfVar23 + lVar30) = + fVar33 + fVar34 + pfVar23[(iVar29 - iVar28) - param_10]; + *pfVar19 = fVar33; + } + param_1 = param_1 + 1; + if (pfVar25 != (float *)0x0) { + pfVar25 = pfVar25 + 1; + } + pfVar17 = pfVar17 + 1; + pfVar23 = pfVar23 + 1; + puVar14 = puVar14 + 4; + pfVar24 = pfVar24 + 1; + puVar18 = puVar18 + 4; + pbVar15 = pbVar15 + 1; + } while (param_1 != pbVar4); + pfVar36 = (float *)((long)pfVar36 + lVar38); + puVar9 = puVar9 + lVar38; + pfVar16 = (float *)((long)pfVar16 + lVar38); + param_1 = pbVar4; + } + iVar7 = iVar7 + 1; + } while (iVar7 < iVar39); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)((uint)(param_10 + *param_9) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(param_10 + *param_9) << 2); + pfVar25 = (float *)((long)param_5 + (long)(param_10 + iVar22) * 4); + if (param_7 != (void *)0x0) goto LAB_0022c3ec; + if (pfVar25 == (float *)0x0) goto LAB_0022c42c; +LAB_0022caf4: + iVar28 = param_9[1]; + if (0 < iVar28) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar26 = -(ulong)((uint)-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-param_10 << 2; + iVar39 = 0; + do { + if (0 < param_10) { + pfVar17 = pfVar36 + lVar1; + iVar7 = *param_9; + pfVar16 = pfVar25; + pbVar15 = param_1; + do { + *(undefined4 *)((long)pfVar36 + uVar26) = 0; + *(undefined4 *)((long)pfVar16 + uVar26) = 0; + if (0 < iVar7) { + fVar37 = 0.0; + lVar11 = 0; + iVar13 = 0; + fVar35 = fVar37; + do { + iVar13 = iVar13 + param_10; + fVar33 = *(float *)((long)pfVar16 + + lVar11 * 4 + + (-(ulong)((uint)-iVar22 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar22 << 2)); + fVar34 = (float)pbVar15[lVar11]; + fVar35 = fVar35 + fVar34; + fVar37 = fVar37 + (float)pbVar15[lVar11] * fVar34; + pfVar36[lVar11] = + *(float *)((long)pfVar36 + + lVar11 * 4 + + (-(ulong)((uint)-iVar31 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar31 << 2)) + fVar35; + pfVar16[lVar11] = fVar37 + fVar33; + lVar11 = lVar11 + param_10; + } while (iVar13 < iVar7); + } + pfVar36 = pfVar36 + 1; + pbVar15 = pbVar15 + 1; + pfVar16 = pfVar16 + 1; + } while (pfVar36 != pfVar17); + param_1 = param_1 + lVar1; + pfVar25 = pfVar25 + lVar1; + pfVar36 = pfVar17; + } + iVar39 = iVar39 + 1; + param_1 = param_1 + (param_2 - param_10); + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)((uint)(iVar31 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar31 - param_10) << 2)); + pfVar25 = (float *)((long)pfVar25 + + (-(ulong)((uint)(iVar22 - param_10) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar22 - param_10) << 2)); + } while (iVar39 != iVar28); + } + } + return; +} + + +================================================================== + +### FUNC 0022cc38 (52 bytes) name=FUN_0022cc38 + +void FUN_0022cc38(void) + +{ + FUN_0022c324(); + return; +} + + +================================================================== + +### FUNC 0022cc6c (2216 bytes) name=FUN_0022cc6c + +void FUN_0022cc6c(float *param_1,ulong param_2,void *param_3,ulong param_4,void *param_5, + ulong param_6,void *param_7,ulong param_8,uint *param_9,uint param_10) + +{ + long lVar1; + undefined1 *puVar2; + float *pfVar3; + int iVar4; + long lVar5; + bool bVar6; + int iVar7; + int iVar8; + ulong uVar9; + undefined1 *puVar10; + uint uVar11; + int iVar12; + long lVar13; + float *pfVar14; + float *pfVar15; + undefined1 *puVar16; + float *pfVar17; + float *pfVar18; + float *pfVar19; + float *pfVar20; + float *pfVar21; + long lVar22; + undefined1 *puVar23; + long lVar24; + uint uVar25; + float *pfVar26; + float *pfVar27; + long lVar28; + int iVar29; + ulong uVar30; + long lVar31; + int iVar32; + float fVar33; + float fVar34; + float fVar35; + float *pfVar36; + float fVar37; + long lVar38; + uint uVar39; + long lVar40; + undefined1 auStack_420 [1056]; + + uVar39 = *param_9; + iVar7 = (int)(param_6 >> 2); + iVar29 = (int)(param_4 >> 2); + *param_9 = param_10 * uVar39; + uVar39 = param_10 + param_10 * uVar39; + iVar12 = (int)(param_8 >> 2); + memset(param_3,0,-(ulong)(uVar39 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar39 << 2); + pfVar36 = (float *)((long)param_3 + (long)(int)(param_10 + iVar29) * 4); + iVar32 = (int)(param_2 >> 2); + if (param_5 == (void *)0x0) { + pfVar14 = (float *)0x0; + if (param_7 == (void *)0x0) goto LAB_0022cd88; +LAB_0022cd3c: + memset(param_7,0, + -(ulong)(param_10 + *param_9 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(param_10 + *param_9) << 2); + pfVar19 = (float *)((long)param_7 + (long)(int)(param_10 + iVar12) * 4); + bVar6 = pfVar19 == (float *)0x0; + if (pfVar14 == (float *)0x0) { + if (bVar6) { +LAB_0022cd88: + uVar39 = param_9[1]; + if ((int)uVar39 < 1) { + return; + } + lVar1 = (ulong)(param_10 - 1) + 1; + uVar25 = 0; + do { + if (0 < (int)param_10) { + pfVar19 = pfVar36 + lVar1; + uVar11 = *param_9; + pfVar14 = param_1; + do { + *(undefined4 *) + ((long)pfVar36 + + (-(ulong)(-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_10 << 2)) = 0; + if (0 < (int)uVar11) { + fVar34 = 0.0; + lVar13 = 0; + iVar7 = 0; + do { + iVar7 = iVar7 + param_10; + fVar34 = fVar34 + *(float *)((long)pfVar14 + lVar13); + *(float *)((long)pfVar36 + lVar13) = + *(float *)((long)pfVar36 + + lVar13 + (-(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar29 << 2)) + fVar34; + lVar13 = lVar13 + (long)(int)param_10 * 4; + } while (iVar7 < (int)uVar11); + } + pfVar36 = pfVar36 + 1; + pfVar14 = pfVar14 + 1; + } while (pfVar36 != pfVar19); + param_1 = param_1 + lVar1; + pfVar36 = pfVar19; + } + uVar25 = uVar25 + 1; + param_1 = (float *)((long)param_1 + + (-(ulong)(iVar32 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar32 - param_10) << 2)); + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)(iVar29 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar29 - param_10) << 2)); + } while (uVar25 != uVar39); + return; + } + } + else if (bVar6) goto LAB_0022d3e0; + puVar2 = auStack_420; + uVar30 = (ulong)(int)(param_10 + *param_9); + if (0x108 < uVar30) { + uVar9 = uVar30 << 2; + if (0x1fc0000000000000 < uVar30) { + uVar9 = 0xffffffffffffffff; + } + puVar10 = operator_new__(uVar9); + bVar6 = puVar10 != puVar2; + puVar2 = puVar10; + } + puVar10 = puVar2; + if (0 < (int)param_10) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar9 = -(ulong)(-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_10 << 2; + uVar39 = *param_9; + pfVar27 = pfVar36 + lVar1; + uVar30 = -(ulong)(param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_10 << 2; + pfVar15 = pfVar19; + pfVar17 = param_1; + do { + *(undefined4 *)((long)pfVar15 + uVar9) = 0; + *(undefined4 *)((long)pfVar36 + uVar9) = 0; + if ((int)uVar39 < 1) { +LAB_0022d3bc: + if (pfVar14 != (float *)0x0) { +LAB_0022cf88: + *(undefined4 *)((long)pfVar14 + uVar9) = 0; + pfVar14 = pfVar14 + 1; + } + } + else { + fVar34 = 0.0; + if (pfVar14 != (float *)0x0) { + fVar35 = 0.0; + lVar13 = 0; + iVar8 = 0; + do { + fVar33 = *(float *)((long)pfVar17 + lVar13); + iVar8 = iVar8 + param_10; + fVar34 = fVar34 + fVar33 * fVar33; + fVar35 = fVar35 + fVar33; + *(float *)((long)pfVar15 + lVar13) = fVar33; + *(float *)(puVar10 + lVar13) = fVar33; + *(float *)((long)pfVar36 + lVar13) = fVar35; + *(float *)((long)pfVar14 + lVar13) = fVar34; + lVar13 = lVar13 + uVar30; + } while (iVar8 < (int)uVar39); + if (param_10 == uVar39) goto LAB_0022d3b8; + goto LAB_0022cf88; + } + iVar8 = 0; + lVar13 = 0; + do { + fVar35 = *(float *)((long)pfVar17 + lVar13); + iVar8 = iVar8 + param_10; + fVar34 = fVar34 + fVar35; + *(float *)((long)pfVar15 + lVar13) = fVar35; + *(float *)(puVar10 + lVar13) = fVar35; + *(float *)((long)pfVar36 + lVar13) = fVar34; + lVar13 = lVar13 + uVar30; + } while (iVar8 < (int)uVar39); + if (param_10 == uVar39) { +LAB_0022d3b8: + *(undefined4 *)(puVar10 + uVar30) = 0; + goto LAB_0022d3bc; + } + } + pfVar36 = pfVar36 + 1; + pfVar17 = pfVar17 + 1; + pfVar15 = pfVar15 + 1; + puVar10 = puVar10 + 4; + } while (pfVar36 != pfVar27); + param_1 = param_1 + lVar1; + pfVar19 = pfVar19 + lVar1; + puVar10 = puVar2 + lVar1 * 4; + pfVar36 = pfVar27; + } + uVar39 = param_9[1]; + if (1 < (int)uVar39) { + lVar13 = (long)(int)param_10; + lVar38 = NEON_shl((ulong)(param_10 - 1) + 1,2); + lVar24 = lVar13 * 4; + uVar30 = -(ulong)(-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_10 << 2; + uVar9 = -(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uint)-iVar29 << 2; + lVar40 = NEON_shl(lVar13,3); + lVar28 = (lVar13 + iVar29) * -4; + iVar8 = 1; + lVar1 = lVar13 * -0xc + (long)(int)(param_10 - iVar12) * 4; + do { + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)(iVar29 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar29 - param_10) << 2)); + if (pfVar14 != (float *)0x0) { + pfVar14 = (float *)((long)pfVar14 + + (-(ulong)(iVar7 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar7 - param_10) << 2)); + } + param_1 = (float *)((long)param_1 + + (-(ulong)(iVar32 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar32 - param_10) << 2)); + pfVar19 = (float *)((long)pfVar19 + + (-(ulong)(iVar12 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar12 - param_10) << 2)); + puVar10 = puVar10 + uVar30; + if (0 < (int)param_10) { + pfVar21 = param_1 + lVar13; + pfVar18 = pfVar19 + lVar13; + uVar25 = *param_9; + iVar4 = uVar25 - param_10; + pfVar27 = (float *)((long)pfVar19 + + (-(ulong)((uint)-iVar12 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar12 << 2)); + puVar23 = puVar10 + lVar24; + pfVar20 = pfVar36 + lVar13; + pfVar3 = (float *)((long)param_1 + lVar38); + puVar16 = puVar10; + pfVar17 = pfVar36; + pfVar15 = pfVar19; + do { + fVar34 = *param_1; + *(undefined4 *)((long)pfVar17 + uVar30) = 0; + fVar35 = fVar34 * fVar34; + uVar11 = param_10; + if (pfVar14 == (float *)0x0) { + *(float *)((long)pfVar15 + uVar30) = *pfVar27; + *pfVar17 = fVar34 + *(float *)((long)pfVar17 + uVar9); + *pfVar15 = fVar34 + *pfVar27 + *(float *)(puVar16 + lVar24); + if (iVar4 <= (int)param_10) goto LAB_0022d3c4; + lVar22 = 0; + lVar5 = lVar40; + fVar33 = fVar34; + do { + lVar31 = lVar5; + fVar37 = *(float *)(puVar23 + lVar22); + uVar11 = uVar11 + param_10; + pfVar26 = (float *)(puVar16 + lVar31); + *(float *)(puVar16 + lVar22) = fVar37 + fVar33; + fVar33 = *(float *)((long)pfVar21 + lVar22); + fVar34 = fVar34 + fVar33; + fVar35 = fVar35 + fVar33 * fVar33; + *(float *)((long)pfVar20 + lVar22) = + *(float *)((long)pfVar17 + lVar31 + lVar28) + fVar34; + *(float *)((long)pfVar18 + lVar22) = + fVar33 + *(float *)(puVar16 + lVar31) + + *(float *)((long)pfVar15 + lVar31 + lVar1) + fVar37; + lVar22 = lVar22 + lVar24; + lVar5 = lVar31 + lVar24; + } while ((int)uVar11 < iVar4); + } + else { + *(undefined4 *)((long)pfVar14 + uVar30) = 0; + *(float *)((long)pfVar15 + uVar30) = *pfVar27; + *pfVar17 = fVar34 + *(float *)((long)pfVar17 + uVar9); + *pfVar14 = fVar35 + *(float *)((long)pfVar14 + + (-(ulong)((uint)-iVar7 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar7 << 2)); + *pfVar15 = fVar34 + *pfVar27 + *(float *)(puVar16 + lVar24); + if ((int)param_10 < iVar4) { + lVar22 = 0; + lVar5 = lVar40; + fVar33 = fVar34; + do { + lVar31 = lVar5; + fVar37 = *(float *)(puVar23 + lVar22); + uVar11 = uVar11 + param_10; + pfVar26 = (float *)(puVar16 + lVar31); + *(float *)(puVar16 + lVar22) = fVar37 + fVar33; + fVar33 = *(float *)((long)pfVar21 + lVar22); + fVar34 = fVar34 + fVar33; + fVar35 = fVar35 + fVar33 * fVar33; + *(float *)((long)pfVar20 + lVar22) = + *(float *)((long)pfVar17 + lVar31 + lVar28) + fVar34; + *(float *)((long)pfVar14 + lVar22 + lVar24) = + *(float *)((long)pfVar14 + lVar31 + (lVar13 + iVar7) * -4) + fVar35; + *(float *)((long)pfVar18 + lVar22) = + fVar33 + *(float *)(puVar16 + lVar31) + + *(float *)((long)pfVar15 + lVar31 + lVar1) + fVar37; + lVar22 = lVar22 + lVar24; + lVar5 = lVar31 + lVar24; + } while ((int)uVar11 < iVar4); + } + else { +LAB_0022d3c4: + pfVar26 = (float *)(puVar16 + lVar24); + lVar31 = lVar24; + fVar33 = fVar34; + } + } + if ((int)param_10 < (int)uVar25) { + fVar37 = *pfVar26; + *(float *)(puVar16 + (long)(int)(uVar11 - param_10) * 4) = fVar37 + fVar33; + fVar33 = *(float *)((long)param_1 + lVar31); + *(float *)((long)pfVar17 + lVar31) = pfVar17[(int)(uVar11 - iVar29)] + fVar34 + fVar33 + ; + if (pfVar14 != (float *)0x0) { + *(float *)((long)pfVar14 + lVar31) = + pfVar14[(int)(uVar11 - iVar7)] + fVar35 + fVar33 * fVar33; + } + *(float *)((long)pfVar15 + lVar31) = + fVar37 + fVar33 + pfVar15[(int)((uVar11 - iVar12) - param_10)]; + *pfVar26 = fVar33; + } + param_1 = param_1 + 1; + if (pfVar14 != (float *)0x0) { + pfVar14 = pfVar14 + 1; + } + pfVar17 = pfVar17 + 1; + pfVar15 = pfVar15 + 1; + puVar16 = puVar16 + 4; + pfVar27 = pfVar27 + 1; + puVar23 = puVar23 + 4; + pfVar21 = pfVar21 + 1; + pfVar20 = pfVar20 + 1; + pfVar18 = pfVar18 + 1; + } while (param_1 != pfVar3); + pfVar36 = (float *)((long)pfVar36 + lVar38); + puVar10 = puVar10 + lVar38; + pfVar19 = (float *)((long)pfVar19 + lVar38); + param_1 = pfVar3; + } + iVar8 = iVar8 + 1; + } while (iVar8 < (int)uVar39); + } + if (bVar6) { + operator_delete__(puVar2); + } + } + else { + memset(param_5,0, + -(ulong)(param_10 + *param_9 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(param_10 + *param_9) << 2); + pfVar14 = (float *)((long)param_5 + (long)(int)(param_10 + iVar7) * 4); + if (param_7 != (void *)0x0) goto LAB_0022cd3c; + if (pfVar14 == (float *)0x0) goto LAB_0022cd88; +LAB_0022d3e0: + uVar39 = param_9[1]; + if (0 < (int)uVar39) { + lVar1 = (ulong)(param_10 - 1) + 1; + uVar30 = -(ulong)(-param_10 >> 0x1f) & 0xfffffffc00000000 | (ulong)-param_10 << 2; + uVar25 = 0; + do { + if (0 < (int)param_10) { + pfVar15 = pfVar36 + lVar1; + uVar11 = *param_9; + pfVar17 = pfVar14; + pfVar19 = param_1; + do { + *(undefined4 *)((long)pfVar36 + uVar30) = 0; + *(undefined4 *)((long)pfVar17 + uVar30) = 0; + if (0 < (int)uVar11) { + fVar34 = 0.0; + lVar13 = 0; + iVar12 = 0; + fVar35 = 0.0; + do { + fVar33 = *(float *)((long)pfVar19 + lVar13); + iVar12 = iVar12 + param_10; + fVar34 = fVar34 + fVar33 * fVar33; + fVar35 = fVar35 + fVar33; + fVar33 = *(float *)((long)pfVar17 + + lVar13 + (-(ulong)((uint)-iVar7 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar7 << 2)); + *(float *)((long)pfVar36 + lVar13) = + *(float *)((long)pfVar36 + + lVar13 + (-(ulong)((uint)-iVar29 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)-iVar29 << 2)) + fVar35; + *(float *)((long)pfVar17 + lVar13) = fVar34 + fVar33; + lVar13 = lVar13 + (long)(int)param_10 * 4; + } while (iVar12 < (int)uVar11); + } + pfVar36 = pfVar36 + 1; + pfVar19 = pfVar19 + 1; + pfVar17 = pfVar17 + 1; + } while (pfVar36 != pfVar15); + param_1 = param_1 + lVar1; + pfVar14 = pfVar14 + lVar1; + pfVar36 = pfVar15; + } + uVar25 = uVar25 + 1; + param_1 = (float *)((long)param_1 + + (-(ulong)(iVar32 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar32 - param_10) << 2)); + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)(iVar29 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar29 - param_10) << 2)); + pfVar14 = (float *)((long)pfVar14 + + (-(ulong)(iVar7 - param_10 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(iVar7 - param_10) << 2)); + } while (uVar25 != uVar39); + } + } + return; +} + + +================================================================== + +### FUNC 0022d514 (52 bytes) name=FUN_0022d514 + +void FUN_0022d514(void) + +{ + FUN_0022cc6c(); + return; +} + + +================================================================== + +### FUNC 0022d548 (136 bytes) name=fastMalloc + +/* cv::fastMalloc(unsigned long) */ + +ulong cv::fastMalloc(ulong param_1) + +{ + void *pvVar1; + ulong uVar2; + String aSStack_10 [16]; + + pvVar1 = malloc(param_1 + 0x18); + if (pvVar1 == (void *)0x0) { + format("Failed to allocate %lu bytes",aSStack_10,param_1); + error(-4,aSStack_10,"void* cv::OutOfMemoryError(size_t)", + "/builds/master_pack-android/opencv/modules/core/src/alloc.cpp",0x34); + String::deallocate(aSStack_10); + uVar2 = 0; + } + else { + uVar2 = (long)pvVar1 + 0x17U & 0xfffffffffffffff0; + *(void **)(uVar2 - 8) = pvVar1; + } + return uVar2; +} + + +================================================================== + +### FUNC 0022d5e4 (16 bytes) name=fastFree + +/* cv::fastFree(void*) */ + +void cv::fastFree(void *param_1) + +{ + if (param_1 != (void *)0x0) { + free(*(void **)((long)param_1 + -8)); + return; + } + return; +} + + +================================================================== + +### FUNC 0022d5f4 (4 bytes) name=cvAlloc + +void cv::cvAlloc(ulong param_1) + +{ + (*(code *)PTR_fastMalloc_004ffbc8)(); + return; +} + + +================================================================== + +### FUNC 0022d5f8 (4 bytes) name=cvFree_ + +void cv::cvFree_(void *param_1) + +{ + (*(code *)PTR_fastFree_00500e90)(); + return; +} + + +================================================================== + +### FUNC 0022d5fc (720 bytes) name=FUN_0022d5fc + +void FUN_0022d5fc(double *param_1,long param_2,double *param_3,long param_4,double *param_5, + long param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + double *pdVar12; + double *pdVar13; + ulong uVar14; + uint uVar15; + long lVar16; + double *pdVar17; + uint uVar18; + double *pdVar19; + long lVar20; + int iVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + + iVar4 = *param_7; + iVar21 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar20 = (long)iVar5; + lVar3 = lVar20 + 2; + pdVar19 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar19 && param_5 < param_1 + 8 || + param_3 < pdVar19 && param_5 < param_3 + 8) || (uVar1 < 6)) { + pdVar13 = param_5 + 1; + pdVar12 = param_3; + pdVar17 = param_1; + do { + pdVar9 = pdVar13 + 4; + dVar22 = *pdVar17; + dVar25 = *pdVar12; + *pdVar13 = pdVar17[1] + pdVar12[1]; + pdVar13[-1] = dVar22 + dVar25; + dVar22 = pdVar17[2]; + dVar25 = pdVar12[2]; + pdVar13[2] = pdVar17[3] + pdVar12[3]; + pdVar13[1] = dVar22 + dVar25; + pdVar13 = pdVar9; + pdVar12 = pdVar12 + 4; + pdVar17 = pdVar17 + 4; + } while (pdVar9 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar18 = 0; + pdVar12 = param_3; + pdVar13 = param_1; + pdVar17 = param_5; + do { + pdVar9 = pdVar13 + 1; + dVar23 = *pdVar13; + pdVar10 = pdVar12 + 1; + dVar27 = *pdVar12; + dVar25 = pdVar13[3]; + dVar22 = pdVar13[2]; + dVar26 = pdVar12[3]; + dVar24 = pdVar12[2]; + uVar18 = uVar18 + 1; + pdVar13 = pdVar13 + 4; + pdVar12 = pdVar12 + 4; + pdVar17[1] = *pdVar9 + *pdVar10; + *pdVar17 = dVar23 + dVar27; + pdVar17[3] = dVar25 + dVar26; + pdVar17[2] = dVar22 + dVar24; + pdVar17 = pdVar17 + 4; + } while (uVar18 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar13 = param_1 + lVar20; + pdVar12 = param_5 + lVar20; + if ((pdVar13 < param_5 + lVar3 && pdVar12 < param_1 + lVar3 || + param_3 + lVar20 < param_5 + lVar3 && pdVar12 < param_3 + lVar3) || (uVar8 < 9)) { + lVar16 = 0; + do { + *(double *)((long)pdVar12 + lVar16) = + *(double *)((long)pdVar13 + lVar16) + + *(double *)((long)(param_3 + lVar20) + lVar16); + lVar16 = lVar16 + 8; + } while (lVar16 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar13 >> 3) & 1; + uVar18 = uVar8; + if (uVar2 < uVar8) { + uVar18 = uVar2; + } + iVar11 = iVar5; + if (uVar18 != 0) { + param_5[lVar20] = param_1[lVar20] + param_3[lVar20]; + iVar11 = iVar5 + 1; + } + uVar15 = 0; + uVar2 = ((uVar8 - uVar18) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar13 = param_5 + (ulong)uVar18 + lVar20; + pdVar12 = param_3 + (ulong)uVar18 + lVar20; + pdVar17 = param_1 + (ulong)uVar18 + lVar20; + do { + dVar22 = *pdVar12; + uVar15 = uVar15 + 1; + dVar25 = *pdVar17; + pdVar13[1] = pdVar12[1] + pdVar17[1]; + *pdVar13 = dVar22 + dVar25; + pdVar13 = pdVar13 + 2; + pdVar12 = pdVar12 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar15 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar18 != iVar6) { + uVar14 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar14) = + *(double *)((long)param_1 + uVar14) + *(double *)((long)param_3 + uVar14); + } + } + } + iVar21 = iVar21 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_3 = (double *)((long)param_3 + param_4); + param_5 = (double *)((long)param_5 + param_6); + pdVar19 = (double *)((long)pdVar19 + param_6); + } while (iVar21 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022d8cc (720 bytes) name=FUN_0022d8cc + +void FUN_0022d8cc(double *param_1,long param_2,double *param_3,long param_4,double *param_5, + long param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + double *pdVar12; + double *pdVar13; + ulong uVar14; + uint uVar15; + long lVar16; + double *pdVar17; + uint uVar18; + double *pdVar19; + long lVar20; + int iVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + + iVar4 = *param_7; + iVar21 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar20 = (long)iVar5; + lVar3 = lVar20 + 2; + pdVar19 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar19 && param_5 < param_1 + 8 || + param_3 < pdVar19 && param_5 < param_3 + 8) || (uVar1 < 6)) { + pdVar13 = param_5 + 1; + pdVar12 = param_3; + pdVar17 = param_1; + do { + pdVar9 = pdVar13 + 4; + dVar22 = *pdVar17; + dVar25 = *pdVar12; + *pdVar13 = pdVar17[1] - pdVar12[1]; + pdVar13[-1] = dVar22 - dVar25; + dVar22 = pdVar17[2]; + dVar25 = pdVar12[2]; + pdVar13[2] = pdVar17[3] - pdVar12[3]; + pdVar13[1] = dVar22 - dVar25; + pdVar13 = pdVar9; + pdVar12 = pdVar12 + 4; + pdVar17 = pdVar17 + 4; + } while (pdVar9 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar18 = 0; + pdVar12 = param_3; + pdVar13 = param_1; + pdVar17 = param_5; + do { + pdVar9 = pdVar13 + 1; + dVar23 = *pdVar13; + pdVar10 = pdVar12 + 1; + dVar27 = *pdVar12; + dVar25 = pdVar13[3]; + dVar22 = pdVar13[2]; + dVar26 = pdVar12[3]; + dVar24 = pdVar12[2]; + uVar18 = uVar18 + 1; + pdVar13 = pdVar13 + 4; + pdVar12 = pdVar12 + 4; + pdVar17[1] = *pdVar9 - *pdVar10; + *pdVar17 = dVar23 - dVar27; + pdVar17[3] = dVar25 - dVar26; + pdVar17[2] = dVar22 - dVar24; + pdVar17 = pdVar17 + 4; + } while (uVar18 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar13 = param_1 + lVar20; + pdVar12 = param_5 + lVar20; + if ((pdVar13 < param_5 + lVar3 && pdVar12 < param_1 + lVar3 || + param_3 + lVar20 < param_5 + lVar3 && pdVar12 < param_3 + lVar3) || (uVar8 < 9)) { + lVar16 = 0; + do { + *(double *)((long)pdVar12 + lVar16) = + *(double *)((long)pdVar13 + lVar16) - + *(double *)((long)(param_3 + lVar20) + lVar16); + lVar16 = lVar16 + 8; + } while (lVar16 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar13 >> 3) & 1; + uVar18 = uVar8; + if (uVar2 < uVar8) { + uVar18 = uVar2; + } + iVar11 = iVar5; + if (uVar18 != 0) { + param_5[lVar20] = param_1[lVar20] - param_3[lVar20]; + iVar11 = iVar5 + 1; + } + uVar15 = 0; + uVar2 = ((uVar8 - uVar18) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar13 = param_5 + (ulong)uVar18 + lVar20; + pdVar12 = param_3 + (ulong)uVar18 + lVar20; + pdVar17 = param_1 + (ulong)uVar18 + lVar20; + do { + dVar25 = *pdVar12; + uVar15 = uVar15 + 1; + dVar22 = *pdVar17; + pdVar13[1] = pdVar17[1] - pdVar12[1]; + *pdVar13 = dVar22 - dVar25; + pdVar13 = pdVar13 + 2; + pdVar12 = pdVar12 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar15 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar18 != iVar6) { + uVar14 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar14) = + *(double *)((long)param_1 + uVar14) - *(double *)((long)param_3 + uVar14); + } + } + } + iVar21 = iVar21 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_3 = (double *)((long)param_3 + param_4); + param_5 = (double *)((long)param_5 + param_6); + pdVar19 = (double *)((long)pdVar19 + param_6); + } while (iVar21 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022db9c (796 bytes) name=FUN_0022db9c + +void FUN_0022db9c(double *param_1,long param_2,double *param_3,long param_4,double *param_5, + long param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + double *pdVar12; + double *pdVar13; + double *pdVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + ulong uVar20; + double *pdVar21; + uint uVar22; + uint uVar23; + double *pdVar24; + long lVar25; + double *pdVar26; + double *pdVar27; + double *pdVar28; + double *pdVar29; + long lVar30; + int iVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + + iVar4 = *param_7; + iVar31 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar30 = (long)iVar5; + lVar3 = lVar30 + 2; + pdVar29 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar29 && param_5 < param_1 + 8 || + param_3 < pdVar29 && param_5 < param_3 + 8) || (uVar1 < 0xb)) { + pdVar21 = param_5 + 1; + pdVar24 = param_3; + pdVar26 = param_1; + do { + dVar36 = pdVar26[1]; + dVar32 = pdVar24[1]; + dVar33 = *pdVar24; + if (*pdVar24 <= *pdVar26) { + dVar33 = *pdVar26; + } + pdVar21[-1] = dVar33; + if (dVar32 <= dVar36) { + dVar32 = dVar36; + } + *pdVar21 = dVar32; + dVar36 = pdVar26[3]; + dVar32 = pdVar24[3]; + dVar33 = pdVar24[2]; + if (pdVar24[2] <= pdVar26[2]) { + dVar33 = pdVar26[2]; + } + pdVar21[1] = dVar33; + if (dVar32 <= dVar36) { + dVar32 = dVar36; + } + pdVar28 = pdVar21 + 4; + pdVar21[2] = dVar32; + pdVar21 = pdVar28; + pdVar24 = pdVar24 + 4; + pdVar26 = pdVar26 + 4; + } while (pdVar28 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + pdVar21 = param_1 + 2; + pdVar24 = param_3 + 2; + uVar22 = 0; + pdVar27 = param_5; + pdVar28 = param_3; + pdVar26 = param_1; + do { + pdVar9 = pdVar26 + 1; + dVar40 = *pdVar26; + dVar36 = *pdVar26; + pdVar14 = pdVar26 + 1; + dVar32 = *pdVar26; + pdVar13 = pdVar26 + 1; + pdVar10 = pdVar28 + 1; + dVar41 = *pdVar28; + dVar33 = *pdVar28; + pdVar12 = pdVar28 + 1; + uVar22 = uVar22 + 1; + dVar37 = pdVar21[1]; + dVar34 = *pdVar21; + dVar18 = *pdVar21; + dVar19 = pdVar21[1]; + dVar16 = *pdVar21; + dVar17 = pdVar21[1]; + dVar39 = pdVar24[1]; + dVar38 = *pdVar24; + dVar35 = *pdVar24; + dVar15 = pdVar24[1]; + pdVar26 = pdVar26 + 4; + pdVar28 = pdVar28 + 4; + pdVar21 = pdVar21 + 4; + pdVar24 = pdVar24 + 4; + pdVar27[1] = (double)((ulong)*pdVar14 ^ + ((ulong)*pdVar13 ^ (ulong)*pdVar12) & -(ulong)(*pdVar9 < *pdVar10)) + ; + *pdVar27 = (double)((ulong)dVar36 ^ + ((ulong)dVar32 ^ (ulong)dVar33) & -(ulong)(dVar40 < dVar41)); + pdVar27[3] = (double)((ulong)dVar19 ^ + ((ulong)dVar17 ^ (ulong)dVar15) & -(ulong)(dVar37 < dVar39)); + pdVar27[2] = (double)((ulong)dVar18 ^ + ((ulong)dVar16 ^ (ulong)dVar35) & -(ulong)(dVar34 < dVar38)); + pdVar27 = pdVar27 + 4; + } while (uVar22 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar21 = param_1 + lVar30; + pdVar24 = param_5 + lVar30; + if ((pdVar21 < param_5 + lVar3 && pdVar24 < param_1 + lVar3 || + param_3 + lVar30 < param_5 + lVar3 && pdVar24 < param_3 + lVar3) || (uVar8 < 7)) { + lVar25 = 0; + do { + dVar33 = *(double *)((long)(param_3 + lVar30) + lVar25); + if (dVar33 <= *(double *)((long)pdVar21 + lVar25)) { + dVar33 = *(double *)((long)pdVar21 + lVar25); + } + *(double *)((long)pdVar24 + lVar25) = dVar33; + lVar25 = lVar25 + 8; + } while (lVar25 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar21 >> 3) & 1; + uVar22 = uVar8; + if (uVar2 < uVar8) { + uVar22 = uVar2; + } + iVar11 = iVar5; + if (uVar22 != 0) { + dVar33 = param_3[lVar30]; + if (param_3[lVar30] <= param_1[lVar30]) { + dVar33 = param_1[lVar30]; + } + param_5[lVar30] = dVar33; + iVar11 = iVar5 + 1; + } + uVar23 = 0; + uVar2 = ((uVar8 - uVar22) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar21 = param_5 + (ulong)uVar22 + lVar30; + pdVar24 = param_3 + (ulong)uVar22 + lVar30; + pdVar26 = param_1 + (ulong)uVar22 + lVar30; + do { + dVar33 = *pdVar26; + dVar32 = pdVar26[1]; + uVar23 = uVar23 + 1; + dVar35 = *pdVar24; + dVar36 = *pdVar24; + pdVar21[1] = (double)((ulong)dVar32 ^ + ((ulong)dVar32 ^ (ulong)pdVar24[1]) & -(ulong)(dVar32 < pdVar24[1]) + ); + *pdVar21 = (double)((ulong)dVar33 ^ + ((ulong)dVar33 ^ (ulong)dVar36) & -(ulong)(dVar33 < dVar35)); + pdVar21 = pdVar21 + 2; + pdVar24 = pdVar24 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar23 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar22 != iVar6) { + uVar20 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + dVar33 = *(double *)((long)param_3 + uVar20); + if (*(double *)((long)param_3 + uVar20) <= *(double *)((long)param_1 + uVar20)) { + dVar33 = *(double *)((long)param_1 + uVar20); + } + *(double *)((long)param_5 + uVar20) = dVar33; + } + } + } + iVar31 = iVar31 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_3 = (double *)((long)param_3 + param_4); + param_5 = (double *)((long)param_5 + param_6); + pdVar29 = (double *)((long)pdVar29 + param_6); + } while (iVar31 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022deb8 (796 bytes) name=FUN_0022deb8 + +void FUN_0022deb8(double *param_1,long param_2,double *param_3,long param_4,double *param_5, + long param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + double *pdVar12; + double *pdVar13; + double *pdVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + ulong uVar20; + double *pdVar21; + uint uVar22; + uint uVar23; + double *pdVar24; + long lVar25; + double *pdVar26; + double *pdVar27; + double *pdVar28; + double *pdVar29; + long lVar30; + int iVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + + iVar4 = *param_7; + iVar31 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar30 = (long)iVar5; + lVar3 = lVar30 + 2; + pdVar29 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar29 && param_5 < param_1 + 8 || + param_3 < pdVar29 && param_5 < param_3 + 8) || (uVar1 < 0xb)) { + pdVar21 = param_5 + 1; + pdVar24 = param_3; + pdVar26 = param_1; + do { + dVar36 = pdVar26[1]; + dVar32 = pdVar24[1]; + dVar33 = *pdVar24; + if (*pdVar26 <= *pdVar24) { + dVar33 = *pdVar26; + } + pdVar21[-1] = dVar33; + if (dVar36 <= dVar32) { + dVar32 = dVar36; + } + *pdVar21 = dVar32; + dVar36 = pdVar26[3]; + dVar32 = pdVar24[3]; + dVar33 = pdVar24[2]; + if (pdVar26[2] <= pdVar24[2]) { + dVar33 = pdVar26[2]; + } + pdVar21[1] = dVar33; + if (dVar36 <= dVar32) { + dVar32 = dVar36; + } + pdVar28 = pdVar21 + 4; + pdVar21[2] = dVar32; + pdVar21 = pdVar28; + pdVar24 = pdVar24 + 4; + pdVar26 = pdVar26 + 4; + } while (pdVar28 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + pdVar21 = param_1 + 2; + pdVar24 = param_3 + 2; + uVar22 = 0; + pdVar27 = param_5; + pdVar28 = param_3; + pdVar26 = param_1; + do { + pdVar9 = pdVar26 + 1; + dVar40 = *pdVar26; + dVar36 = *pdVar26; + pdVar14 = pdVar26 + 1; + dVar32 = *pdVar26; + pdVar13 = pdVar26 + 1; + pdVar10 = pdVar28 + 1; + dVar41 = *pdVar28; + dVar33 = *pdVar28; + pdVar12 = pdVar28 + 1; + uVar22 = uVar22 + 1; + dVar37 = pdVar21[1]; + dVar34 = *pdVar21; + dVar18 = *pdVar21; + dVar19 = pdVar21[1]; + dVar16 = *pdVar21; + dVar17 = pdVar21[1]; + dVar39 = pdVar24[1]; + dVar38 = *pdVar24; + dVar35 = *pdVar24; + dVar15 = pdVar24[1]; + pdVar26 = pdVar26 + 4; + pdVar28 = pdVar28 + 4; + pdVar21 = pdVar21 + 4; + pdVar24 = pdVar24 + 4; + pdVar27[1] = (double)((ulong)*pdVar14 ^ + ((ulong)*pdVar13 ^ (ulong)*pdVar12) & -(ulong)(*pdVar10 < *pdVar9)) + ; + *pdVar27 = (double)((ulong)dVar36 ^ + ((ulong)dVar32 ^ (ulong)dVar33) & -(ulong)(dVar41 < dVar40)); + pdVar27[3] = (double)((ulong)dVar19 ^ + ((ulong)dVar17 ^ (ulong)dVar15) & -(ulong)(dVar39 < dVar37)); + pdVar27[2] = (double)((ulong)dVar18 ^ + ((ulong)dVar16 ^ (ulong)dVar35) & -(ulong)(dVar38 < dVar34)); + pdVar27 = pdVar27 + 4; + } while (uVar22 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar21 = param_1 + lVar30; + pdVar24 = param_5 + lVar30; + if ((pdVar21 < param_5 + lVar3 && pdVar24 < param_1 + lVar3 || + param_3 + lVar30 < param_5 + lVar3 && pdVar24 < param_3 + lVar3) || (uVar8 < 7)) { + lVar25 = 0; + do { + dVar33 = *(double *)((long)(param_3 + lVar30) + lVar25); + if (*(double *)((long)pdVar21 + lVar25) <= dVar33) { + dVar33 = *(double *)((long)pdVar21 + lVar25); + } + *(double *)((long)pdVar24 + lVar25) = dVar33; + lVar25 = lVar25 + 8; + } while (lVar25 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar21 >> 3) & 1; + uVar22 = uVar8; + if (uVar2 < uVar8) { + uVar22 = uVar2; + } + iVar11 = iVar5; + if (uVar22 != 0) { + dVar33 = param_3[lVar30]; + if (param_1[lVar30] <= param_3[lVar30]) { + dVar33 = param_1[lVar30]; + } + param_5[lVar30] = dVar33; + iVar11 = iVar5 + 1; + } + uVar23 = 0; + uVar2 = ((uVar8 - uVar22) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar21 = param_5 + (ulong)uVar22 + lVar30; + pdVar24 = param_3 + (ulong)uVar22 + lVar30; + pdVar26 = param_1 + (ulong)uVar22 + lVar30; + do { + dVar33 = *pdVar26; + dVar32 = pdVar26[1]; + uVar23 = uVar23 + 1; + dVar35 = *pdVar24; + dVar36 = *pdVar24; + pdVar21[1] = (double)((ulong)dVar32 ^ + ((ulong)dVar32 ^ (ulong)pdVar24[1]) & -(ulong)(pdVar24[1] < dVar32) + ); + *pdVar21 = (double)((ulong)dVar33 ^ + ((ulong)dVar33 ^ (ulong)dVar36) & -(ulong)(dVar35 < dVar33)); + pdVar21 = pdVar21 + 2; + pdVar24 = pdVar24 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar23 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar22 != iVar6) { + uVar20 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + dVar33 = *(double *)((long)param_3 + uVar20); + if (*(double *)((long)param_1 + uVar20) <= *(double *)((long)param_3 + uVar20)) { + dVar33 = *(double *)((long)param_1 + uVar20); + } + *(double *)((long)param_5 + uVar20) = dVar33; + } + } + } + iVar31 = iVar31 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_3 = (double *)((long)param_3 + param_4); + param_5 = (double *)((long)param_5 + param_6); + pdVar29 = (double *)((long)pdVar29 + param_6); + } while (iVar31 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022e1d4 (720 bytes) name=FUN_0022e1d4 + +void FUN_0022e1d4(double *param_1,long param_2,double *param_3,long param_4,double *param_5, + long param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + double *pdVar12; + double *pdVar13; + ulong uVar14; + uint uVar15; + long lVar16; + double *pdVar17; + uint uVar18; + double *pdVar19; + long lVar20; + int iVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + + iVar4 = *param_7; + iVar21 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar20 = (long)iVar5; + lVar3 = lVar20 + 2; + pdVar19 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar19 && param_5 < param_1 + 8 || + param_3 < pdVar19 && param_5 < param_3 + 8) || (uVar1 < 5)) { + pdVar13 = param_5 + 1; + pdVar12 = param_3; + pdVar17 = param_1; + do { + pdVar9 = pdVar13 + 4; + dVar22 = *pdVar17; + dVar25 = *pdVar12; + *pdVar13 = ABS(pdVar17[1] - pdVar12[1]); + pdVar13[-1] = ABS(dVar22 - dVar25); + dVar22 = pdVar17[2]; + dVar25 = pdVar12[2]; + pdVar13[2] = ABS(pdVar17[3] - pdVar12[3]); + pdVar13[1] = ABS(dVar22 - dVar25); + pdVar13 = pdVar9; + pdVar12 = pdVar12 + 4; + pdVar17 = pdVar17 + 4; + } while (pdVar9 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar18 = 0; + pdVar12 = param_3; + pdVar13 = param_1; + pdVar17 = param_5; + do { + pdVar9 = pdVar13 + 1; + dVar23 = *pdVar13; + pdVar10 = pdVar12 + 1; + dVar27 = *pdVar12; + dVar25 = pdVar13[3]; + dVar22 = pdVar13[2]; + dVar26 = pdVar12[3]; + dVar24 = pdVar12[2]; + uVar18 = uVar18 + 1; + pdVar13 = pdVar13 + 4; + pdVar12 = pdVar12 + 4; + pdVar17[1] = ABS(*pdVar9 - *pdVar10); + *pdVar17 = ABS(dVar23 - dVar27); + pdVar17[3] = ABS(dVar25 - dVar26); + pdVar17[2] = ABS(dVar22 - dVar24); + pdVar17 = pdVar17 + 4; + } while (uVar18 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar13 = param_1 + lVar20; + pdVar12 = param_5 + lVar20; + if ((pdVar13 < param_5 + lVar3 && pdVar12 < param_1 + lVar3 || + param_3 + lVar20 < param_5 + lVar3 && pdVar12 < param_3 + lVar3) || (uVar8 < 7)) { + lVar16 = 0; + do { + *(double *)((long)pdVar12 + lVar16) = + ABS(*(double *)((long)pdVar13 + lVar16) - + *(double *)((long)(param_3 + lVar20) + lVar16)); + lVar16 = lVar16 + 8; + } while (lVar16 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar13 >> 3) & 1; + uVar18 = uVar8; + if (uVar2 < uVar8) { + uVar18 = uVar2; + } + iVar11 = iVar5; + if (uVar18 != 0) { + param_5[lVar20] = ABS(param_1[lVar20] - param_3[lVar20]); + iVar11 = iVar5 + 1; + } + uVar15 = 0; + uVar2 = ((uVar8 - uVar18) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar13 = param_5 + (ulong)uVar18 + lVar20; + pdVar12 = param_3 + (ulong)uVar18 + lVar20; + pdVar17 = param_1 + (ulong)uVar18 + lVar20; + do { + dVar25 = *pdVar12; + uVar15 = uVar15 + 1; + dVar22 = *pdVar17; + pdVar13[1] = ABS(pdVar17[1] - pdVar12[1]); + *pdVar13 = ABS(dVar22 - dVar25); + pdVar13 = pdVar13 + 2; + pdVar12 = pdVar12 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar15 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar18 != iVar6) { + uVar14 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar14) = + ABS(*(double *)((long)param_1 + uVar14) - *(double *)((long)param_3 + uVar14)); + } + } + } + iVar21 = iVar21 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_3 = (double *)((long)param_3 + param_4); + param_5 = (double *)((long)param_5 + param_6); + pdVar19 = (double *)((long)pdVar19 + param_6); + } while (iVar21 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022e4a4 (1500 bytes) name=FUN_0022e4a4 + +void FUN_0022e4a4(double *param_1,ulong param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + ulong uVar12; + double *pdVar13; + double *pdVar14; + uint uVar15; + long lVar16; + double *pdVar17; + uint uVar18; + double *pdVar19; + long lVar20; + int iVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + + param_6 = param_6 >> 3; + dVar28 = *param_8; + iVar4 = *param_7; + iVar5 = param_7[1]; + iVar21 = iVar5 + -1; + if (dVar28 == 1.0) { + if (iVar5 != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar20 = (long)iVar5; + lVar3 = lVar20 + 2; + pdVar19 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar19 && param_5 < param_1 + 8 || + param_3 < pdVar19 && param_5 < param_3 + 8) || (uVar1 < 6)) { + pdVar14 = param_5 + 1; + pdVar13 = param_3; + pdVar17 = param_1; + do { + pdVar9 = pdVar14 + 4; + dVar28 = *pdVar17; + dVar22 = *pdVar13; + *pdVar14 = pdVar17[1] * pdVar13[1]; + pdVar14[-1] = dVar28 * dVar22; + dVar28 = pdVar17[2]; + dVar22 = pdVar13[2]; + pdVar14[2] = pdVar17[3] * pdVar13[3]; + pdVar14[1] = dVar28 * dVar22; + pdVar14 = pdVar9; + pdVar13 = pdVar13 + 4; + pdVar17 = pdVar17 + 4; + } while (pdVar9 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar18 = 0; + pdVar13 = param_3; + pdVar14 = param_1; + pdVar17 = param_5; + do { + pdVar9 = pdVar14 + 1; + dVar25 = *pdVar14; + pdVar10 = pdVar13 + 1; + dVar26 = *pdVar13; + dVar22 = pdVar14[3]; + dVar28 = pdVar14[2]; + dVar24 = pdVar13[3]; + dVar23 = pdVar13[2]; + uVar18 = uVar18 + 1; + pdVar14 = pdVar14 + 4; + pdVar13 = pdVar13 + 4; + pdVar17[1] = *pdVar9 * *pdVar10; + *pdVar17 = dVar25 * dVar26; + pdVar17[3] = dVar22 * dVar24; + pdVar17[2] = dVar28 * dVar23; + pdVar17 = pdVar17 + 4; + } while (uVar18 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar14 = param_1 + lVar20; + pdVar13 = param_5 + lVar20; + if ((pdVar14 < param_5 + lVar3 && pdVar13 < param_1 + lVar3 || + param_3 + lVar20 < param_5 + lVar3 && pdVar13 < param_3 + lVar3) || (uVar8 < 9)) { + lVar16 = 0; + do { + *(double *)((long)pdVar13 + lVar16) = + *(double *)((long)pdVar14 + lVar16) * + *(double *)((long)(param_3 + lVar20) + lVar16); + lVar16 = lVar16 + 8; + } while (lVar16 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar18 = (uint)((ulong)pdVar14 >> 3) & 1; + if (uVar8 < uVar18) { + uVar18 = uVar8; + } + iVar11 = iVar5; + if (uVar18 != 0) { + param_5[lVar20] = param_1[lVar20] * param_3[lVar20]; + iVar11 = iVar5 + 1; + } + uVar15 = 0; + uVar2 = ((uVar8 - uVar18) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar14 = param_5 + (ulong)uVar18 + lVar20; + pdVar13 = param_3 + (ulong)uVar18 + lVar20; + pdVar17 = param_1 + (ulong)uVar18 + lVar20; + do { + dVar28 = *pdVar13; + uVar15 = uVar15 + 1; + dVar22 = *pdVar17; + pdVar14[1] = pdVar13[1] * pdVar17[1]; + *pdVar14 = dVar28 * dVar22; + pdVar14 = pdVar14 + 2; + pdVar13 = pdVar13 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar15 < uVar2); + uVar2 = iVar11 + iVar6; + if (iVar6 != uVar8 - uVar18) { + uVar12 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar12) = + *(double *)((long)param_1 + uVar12) * *(double *)((long)param_3 + uVar12); + } + } + } + iVar21 = iVar21 + -1; + param_1 = param_1 + (param_2 >> 3); + param_3 = param_3 + (param_4 >> 3); + param_5 = param_5 + param_6; + pdVar19 = pdVar19 + param_6; + } while (iVar21 != -1); + return; + } + } + else if (iVar5 != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar20 = (long)iVar5; + lVar3 = lVar20 + 2; + pdVar19 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar19 && param_5 < param_1 + 8 || + param_3 < pdVar19 && param_5 < param_3 + 8) || (uVar1 < 5)) { + pdVar14 = param_5 + 1; + pdVar13 = param_3; + pdVar17 = param_1; + do { + dVar22 = *pdVar17; + pdVar9 = pdVar14 + 4; + dVar25 = *pdVar13; + *pdVar14 = dVar28 * pdVar17[1] * pdVar13[1]; + pdVar14[-1] = dVar28 * dVar22 * dVar25; + dVar22 = pdVar17[2]; + dVar25 = pdVar13[2]; + pdVar14[2] = dVar28 * pdVar17[3] * pdVar13[3]; + pdVar14[1] = dVar28 * dVar22 * dVar25; + pdVar14 = pdVar9; + pdVar13 = pdVar13 + 4; + pdVar17 = pdVar17 + 4; + } while (pdVar9 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar18 = 0; + pdVar13 = param_3; + pdVar14 = param_1; + pdVar17 = param_5; + do { + pdVar9 = pdVar14 + 1; + dVar23 = *pdVar14; + pdVar10 = pdVar13 + 1; + dVar27 = *pdVar13; + dVar25 = pdVar14[3]; + dVar22 = pdVar14[2]; + dVar26 = pdVar13[3]; + dVar24 = pdVar13[2]; + uVar18 = uVar18 + 1; + pdVar14 = pdVar14 + 4; + pdVar13 = pdVar13 + 4; + pdVar17[1] = dVar28 * *pdVar9 * *pdVar10; + *pdVar17 = dVar28 * dVar23 * dVar27; + pdVar17[3] = dVar28 * dVar25 * dVar26; + pdVar17[2] = dVar28 * dVar22 * dVar24; + pdVar17 = pdVar17 + 4; + } while (uVar18 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar14 = param_1 + lVar20; + pdVar13 = param_5 + lVar20; + if ((pdVar14 < param_5 + lVar3 && pdVar13 < param_1 + lVar3 || + param_3 + lVar20 < param_5 + lVar3 && pdVar13 < param_3 + lVar3) || (uVar8 < 8)) { + lVar16 = 0; + do { + *(double *)((long)pdVar13 + lVar16) = + dVar28 * *(double *)((long)pdVar14 + lVar16) * + *(double *)((long)(param_3 + lVar20) + lVar16); + lVar16 = lVar16 + 8; + } while (lVar16 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar14 >> 3) & 1; + uVar18 = uVar8; + if (uVar2 < uVar8) { + uVar18 = uVar2; + } + iVar11 = iVar5; + if (uVar18 != 0) { + param_5[lVar20] = dVar28 * param_1[lVar20] * param_3[lVar20]; + iVar11 = iVar5 + 1; + } + uVar15 = 0; + uVar2 = ((uVar8 - uVar18) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar14 = param_5 + (ulong)uVar18 + lVar20; + pdVar13 = param_3 + (ulong)uVar18 + lVar20; + pdVar17 = param_1 + (ulong)uVar18 + lVar20; + do { + dVar22 = *pdVar17; + uVar15 = uVar15 + 1; + dVar25 = *pdVar13; + pdVar14[1] = dVar28 * pdVar17[1] * pdVar13[1]; + *pdVar14 = dVar28 * dVar22 * dVar25; + pdVar14 = pdVar14 + 2; + pdVar13 = pdVar13 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar15 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar18 != iVar6) { + uVar12 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar12) = + dVar28 * *(double *)((long)param_1 + uVar12) * *(double *)((long)param_3 + uVar12); + } + } + } + iVar21 = iVar21 + -1; + param_1 = param_1 + (param_2 >> 3); + param_3 = param_3 + (param_4 >> 3); + param_5 = param_5 + param_6; + pdVar19 = pdVar19 + param_6; + } while (iVar21 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022ea80 (128 bytes) name=FUN_0022ea80 + +void FUN_0022ea80(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + int *param_7,double *param_8) + +{ + int iVar1; + long lVar2; + int iVar3; + double dVar4; + double dVar5; + double dVar6; + + dVar6 = *param_8; + iVar1 = *param_7; + iVar3 = param_7[1] + -1; + if (param_7[1] != 0) { + do { + lVar2 = 0; + if (0 < iVar1) { + do { + dVar5 = *(double *)(param_3 + lVar2 * 8); + dVar4 = 0.0; + if (dVar5 != 0.0) { + dVar4 = (dVar6 * *(double *)(param_1 + lVar2 * 8)) / dVar5; + } + *(double *)(param_5 + lVar2 * 8) = dVar4; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < iVar1); + } + iVar3 = iVar3 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffff8); + param_3 = param_3 + (param_4 & 0xfffffffffffffff8); + param_5 = param_5 + (param_6 & 0xfffffffffffffff8); + } while (iVar3 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022eb00 (1220 bytes) name=FUN_0022eb00 + +void FUN_0022eb00(float *param_1,ulong param_2,float *param_3,ulong param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + long lVar5; + float *pfVar6; + undefined8 *puVar7; + int iVar8; + uint uVar9; + int iVar10; + uint uVar11; + uint uVar12; + ulong uVar13; + float *pfVar14; + long lVar15; + float *pfVar16; + ulong uVar17; + float *pfVar18; + uint uVar19; + float *pfVar20; + int iVar21; + long lVar22; + ulong uVar23; + uint uVar24; + float *pfVar25; + uint uVar26; + float fVar27; + undefined8 uVar28; + undefined8 uVar29; + double dVar30; + double dVar31; + double dVar32; + float fVar33; + undefined8 uVar34; + undefined8 uVar35; + + iVar8 = *param_7; + dVar32 = *param_8; + iVar21 = param_7[1] + -1; + dVar31 = param_8[1]; + dVar30 = param_8[2]; + if (param_7[1] != 0) { + uVar11 = iVar8 - 4U >> 2; + uVar1 = uVar11 + 1; + uVar9 = uVar1 * 4; + if (iVar8 + -3 < 1) { + uVar9 = 0; + } + uVar2 = uVar9 + 1; + lVar22 = (long)(int)uVar9; + uVar3 = uVar9 + 2; + lVar5 = lVar22 + 4; + uVar12 = iVar8 - uVar9; + pfVar14 = (float *)(param_5 + 0x40); + uVar13 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar23 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + do { + pfVar18 = pfVar14 + -0x10; + if (0 < iVar8 + -3) { + if ((param_1 + 0x10 <= pfVar18 || pfVar14 <= param_1) && + (param_3 + 0x10 <= pfVar18 || pfVar14 <= param_3)) { + lVar15 = 0; + uVar19 = 0; + if (1 < uVar1) { + do { + puVar7 = (undefined8 *)((long)pfVar18 + lVar15); + uVar19 = uVar19 + 1; + uVar29 = ((undefined8 *)((long)param_3 + lVar15))[1]; + uVar28 = *(undefined8 *)((long)param_3 + lVar15); + uVar35 = ((undefined8 *)((long)param_1 + lVar15))[1]; + uVar34 = *(undefined8 *)((long)param_1 + lVar15); + lVar15 = lVar15 + 0x10; + puVar7[1] = CONCAT44((float)(dVar30 + dVar31 * (double)(float)((ulong)uVar29 >> 0x20) + + dVar32 * (double)(float)((ulong)uVar35 >> 0x20 + )), + (float)(dVar30 + dVar31 * (double)(float)uVar29 + + dVar32 * (double)(float)uVar35)); + *puVar7 = CONCAT44((float)(dVar30 + dVar31 * (double)(float)((ulong)uVar28 >> 0x20) + + dVar32 * (double)(float)((ulong)uVar34 >> 0x20)), + (float)(dVar30 + dVar31 * (double)(float)uVar28 + + dVar32 * (double)(float)uVar34)); + } while (uVar19 < uVar1); + goto LAB_0022ec8c; + } + } + pfVar16 = pfVar14 + -0xf; + pfVar20 = param_3; + pfVar25 = param_1; + do { + fVar33 = *pfVar20; + pfVar6 = pfVar16 + 4; + fVar27 = *pfVar25; + *pfVar16 = (float)(dVar30 + dVar31 * (double)pfVar20[1] + (double)pfVar25[1] * dVar32); + pfVar16[-1] = (float)(dVar30 + dVar31 * (double)fVar33 + (double)fVar27 * dVar32); + fVar27 = pfVar20[2]; + fVar33 = pfVar25[2]; + pfVar16[2] = (float)(dVar30 + dVar31 * (double)pfVar20[3] + (double)pfVar25[3] * dVar32); + pfVar16[1] = (float)(dVar30 + dVar31 * (double)fVar27 + (double)fVar33 * dVar32); + pfVar16 = pfVar6; + pfVar20 = pfVar20 + 4; + pfVar25 = pfVar25 + 4; + } while (pfVar6 != pfVar18 + (ulong)uVar11 * 4 + 5); + } +LAB_0022ec8c: + if ((int)uVar9 < iVar8) { + pfVar16 = param_1 + lVar22; + pfVar20 = pfVar18 + lVar22; + if ((pfVar16 < pfVar18 + lVar5 && pfVar20 < param_1 + lVar5 || + param_3 + lVar22 < pfVar18 + lVar5 && pfVar20 < param_3 + lVar5) || (uVar12 < 7)) { + lVar15 = 0; + do { + *(float *)((long)pfVar20 + lVar15) = + (float)(dVar30 + dVar31 * (double)*(float *)((long)(param_3 + lVar22) + lVar15) + + (double)*(float *)((long)pfVar16 + lVar15) * dVar32); + lVar15 = lVar15 + 4; + } while (lVar15 != ((ulong)((iVar8 + -1) - uVar9) + 1) * 4); + } + else { + uVar19 = -((uint)((ulong)pfVar16 >> 2) & 3) & 3; + if (uVar12 < uVar19) { + uVar19 = uVar12; + } + uVar24 = uVar9; + if (((uVar19 != 0) && + (pfVar18[lVar22] = + (float)(dVar30 + dVar31 * (double)param_3[lVar22] + + (double)param_1[lVar22] * dVar32), uVar24 = uVar2, uVar19 != 1) + ) && (*(float *)((long)pfVar18 + uVar13) = + (float)(dVar30 + dVar31 * (double)*(float *)((long)param_3 + uVar13) + + (double)*(float *)((long)param_1 + uVar13) * dVar32), + uVar24 = uVar3, uVar19 == 3)) { + *(float *)((long)pfVar18 + uVar23) = + (float)(dVar30 + dVar31 * (double)*(float *)((long)param_3 + uVar23) + + (double)*(float *)((long)param_1 + uVar23) * dVar32); + uVar24 = uVar9 + 3; + } + uVar26 = 0; + uVar4 = ((uVar12 - uVar19) - 4 >> 2) + 1; + iVar10 = uVar4 * 4; + pfVar16 = pfVar18 + (ulong)uVar19 + lVar22; + pfVar20 = param_1 + (ulong)uVar19 + lVar22; + pfVar25 = param_3 + (ulong)uVar19 + lVar22; + do { + uVar28 = *(undefined8 *)pfVar25; + uVar26 = uVar26 + 1; + uVar29 = *(undefined8 *)pfVar20; + *(ulong *)(pfVar16 + 2) = + CONCAT44((float)(dVar30 + dVar31 * (double)(float)((ulong)*(undefined8 *) + (pfVar25 + 2) >> 0x20) + + dVar32 * (double)(float)((ulong)*(undefined8 *) + (pfVar20 + 2) >> 0x20)), + (float)(dVar30 + dVar31 * (double)(float)*(undefined8 *)(pfVar25 + 2) + + dVar32 * (double)(float)*(undefined8 *)(pfVar20 + 2))); + *(ulong *)pfVar16 = + CONCAT44((float)(dVar30 + dVar31 * (double)(float)((ulong)uVar28 >> 0x20) + + dVar32 * (double)(float)((ulong)uVar29 >> 0x20)), + (float)(dVar30 + dVar31 * (double)(float)uVar28 + + dVar32 * (double)(float)uVar29)); + pfVar16 = pfVar16 + 4; + pfVar20 = pfVar20 + 4; + pfVar25 = pfVar25 + 4; + } while (uVar26 < uVar4); + uVar24 = uVar24 + iVar10; + if (uVar12 - uVar19 != iVar10) { + uVar17 = -(ulong)(uVar24 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar24 << 2; + *(float *)((long)pfVar18 + uVar17) = + (float)(dVar30 + dVar31 * (double)*(float *)((long)param_3 + uVar17) + + (double)*(float *)((long)param_1 + uVar17) * dVar32); + if ((int)(uVar24 + 1) < iVar8) { + lVar15 = uVar17 + 4; + *(float *)((long)pfVar18 + lVar15) = + (float)(dVar30 + dVar31 * (double)*(float *)((long)param_3 + lVar15) + + (double)*(float *)((long)param_1 + lVar15) * dVar32); + if ((int)(uVar24 + 2) < iVar8) { + lVar15 = uVar17 + 8; + *(float *)((long)pfVar18 + lVar15) = + (float)(dVar30 + dVar31 * (double)*(float *)((long)param_3 + lVar15) + + (double)*(float *)((long)param_1 + lVar15) * dVar32); + } + } + } + } + } + iVar21 = iVar21 + -1; + param_1 = (float *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_3 = (float *)((long)param_3 + (param_4 & 0xfffffffffffffffc)); + pfVar14 = (float *)((long)pfVar14 + (param_6 & 0xfffffffffffffffc)); + } while (iVar21 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022efc4 (848 bytes) name=FUN_0022efc4 + +void FUN_0022efc4(double *param_1,ulong param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + double *pdVar9; + double *pdVar10; + int iVar11; + double *pdVar12; + double *pdVar13; + ulong uVar14; + long lVar15; + uint uVar16; + double *pdVar17; + uint uVar18; + double *pdVar19; + long lVar20; + int iVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + + iVar4 = *param_7; + dVar30 = *param_8; + iVar21 = param_7[1] + -1; + dVar29 = param_8[1]; + dVar28 = param_8[2]; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + lVar20 = (long)iVar5; + lVar3 = lVar20 + 2; + uVar8 = iVar4 - iVar5; + pdVar19 = param_5 + 8; + do { + if (0 < iVar4 + -3) { + if ((param_1 < pdVar19 && param_5 < param_1 + 8 || + param_3 < pdVar19 && param_5 < param_3 + 8) || (uVar1 < 4)) { + pdVar13 = param_5 + 1; + pdVar12 = param_3; + pdVar17 = param_1; + do { + dVar22 = *pdVar12; + pdVar9 = pdVar13 + 4; + dVar23 = *pdVar17; + *pdVar13 = dVar28 + dVar29 * pdVar12[1] + pdVar17[1] * dVar30; + pdVar13[-1] = dVar28 + dVar29 * dVar22 + dVar23 * dVar30; + dVar22 = pdVar12[2]; + dVar23 = pdVar17[2]; + pdVar13[2] = dVar28 + dVar29 * pdVar12[3] + pdVar17[3] * dVar30; + pdVar13[1] = dVar28 + dVar29 * dVar22 + dVar23 * dVar30; + pdVar13 = pdVar9; + pdVar12 = pdVar12 + 4; + pdVar17 = pdVar17 + 4; + } while (pdVar9 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar18 = 0; + pdVar12 = param_3; + pdVar13 = param_1; + pdVar17 = param_5; + do { + pdVar9 = pdVar12 + 1; + dVar24 = *pdVar12; + pdVar10 = pdVar13 + 1; + dVar27 = *pdVar13; + dVar23 = pdVar12[3]; + dVar22 = pdVar12[2]; + dVar26 = pdVar13[3]; + dVar25 = pdVar13[2]; + uVar18 = uVar18 + 1; + pdVar13 = pdVar13 + 4; + pdVar12 = pdVar12 + 4; + pdVar17[1] = dVar28 + dVar29 * *pdVar9 + dVar30 * *pdVar10; + *pdVar17 = dVar28 + dVar29 * dVar24 + dVar30 * dVar27; + pdVar17[3] = dVar28 + dVar29 * dVar23 + dVar30 * dVar26; + pdVar17[2] = dVar28 + dVar29 * dVar22 + dVar30 * dVar25; + pdVar17 = pdVar17 + 4; + } while (uVar18 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar13 = param_1 + lVar20; + pdVar12 = param_5 + lVar20; + if ((pdVar13 < param_5 + lVar3 && pdVar12 < param_1 + lVar3 || + param_3 + lVar20 < param_5 + lVar3 && pdVar12 < param_3 + lVar3) || (uVar8 < 7)) { + lVar15 = 0; + do { + *(double *)((long)pdVar12 + lVar15) = + dVar28 + dVar29 * *(double *)((long)(param_3 + lVar20) + lVar15) + + *(double *)((long)pdVar13 + lVar15) * dVar30; + lVar15 = lVar15 + 8; + } while (lVar15 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar18 = (uint)((ulong)pdVar13 >> 3) & 1; + if (uVar8 < uVar18) { + uVar18 = uVar8; + } + iVar11 = iVar5; + if (uVar18 != 0) { + param_5[lVar20] = dVar28 + dVar29 * param_3[lVar20] + param_1[lVar20] * dVar30; + iVar11 = iVar5 + 1; + } + uVar16 = 0; + uVar2 = ((uVar8 - uVar18) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar13 = param_5 + (ulong)uVar18 + lVar20; + pdVar12 = param_3 + (ulong)uVar18 + lVar20; + pdVar17 = param_1 + (ulong)uVar18 + lVar20; + do { + dVar22 = *pdVar12; + uVar16 = uVar16 + 1; + dVar23 = *pdVar17; + pdVar13[1] = dVar28 + dVar29 * pdVar12[1] + dVar30 * pdVar17[1]; + *pdVar13 = dVar28 + dVar29 * dVar22 + dVar30 * dVar23; + pdVar13 = pdVar13 + 2; + pdVar12 = pdVar12 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar16 < uVar2); + uVar2 = iVar11 + iVar6; + if (uVar8 - uVar18 != iVar6) { + uVar14 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar14) = + dVar28 + dVar29 * *(double *)((long)param_3 + uVar14) + + *(double *)((long)param_1 + uVar14) * dVar30; + } + } + } + iVar21 = iVar21 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_3 = (double *)((long)param_3 + (param_4 & 0xfffffffffffffff8)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + pdVar19 = (double *)((long)pdVar19 + (param_6 & 0xfffffffffffffff8)); + } while (iVar21 != -1); + } + return; +} + + +================================================================== + +### FUNC 0022f320 (5876 bytes) name=FUN_0022f320 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0022f320(double *param_1,ulong param_2,double *param_3,ulong param_4,byte *param_5, + long param_6,int *param_7,int *param_8) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + double *pdVar7; + double *pdVar8; + double *pdVar9; + double *pdVar10; + double *pdVar11; + double *pdVar12; + double *pdVar13; + double *pdVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + uint uVar19; + uint uVar20; + int iVar21; + uint uVar22; + double *pdVar23; + double *pdVar24; + double *pdVar25; + double *pdVar26; + double *pdVar27; + double *pdVar28; + double *pdVar29; + double *pdVar30; + undefined8 uVar31; + undefined8 uVar32; + double *pdVar33; + int iVar34; + double *pdVar35; + ulong uVar36; + long lVar37; + long lVar38; + byte *pbVar39; + double *pdVar40; + byte bVar41; + uint uVar42; + uint uVar43; + int iVar44; + double dVar45; + double dVar46; + double dVar47; + double dVar48; + double dVar49; + double dVar50; + long lVar51; + long lVar52; + byte bVar53; + double dVar54; + byte bVar55; + double dVar56; + double dVar57; + long lVar58; + double dVar59; + double dVar60; + double dVar61; + double dVar62; + double dVar63; + double dVar64; + double dVar65; + long lVar66; + long lVar67; + + param_2 = param_2 >> 3; + param_4 = param_4 >> 3; + iVar44 = *param_8; + iVar15 = param_7[1]; + iVar16 = *param_7; + if (iVar44 - 2U < 2) { + pdVar33 = param_3; + uVar36 = param_4; + param_3 = param_1; + param_4 = param_2; + if (iVar44 != 2) { + bVar41 = 0; + goto LAB_0022f3e8; + } + } + else { + pdVar33 = param_1; + uVar36 = param_2; + if (iVar44 != 4) { + if (iVar44 != 1) { + if (iVar44 == 5) { + bVar41 = 0xff; + } + else { + if (iVar44 != 0) { + return; + } + bVar41 = 0; + } + iVar44 = iVar15 + -1; + if (iVar15 == 0) { + return; + } + uVar20 = iVar16 - 4; + iVar21 = iVar16 + -3; + lVar66 = NEON_shl(param_2,3); + lVar67 = NEON_shl(param_4,3); + uVar19 = uVar20 >> 2; + uVar1 = uVar19 + 1; + iVar17 = uVar1 * 4; + lVar52 = NEON_shl((ulong)uVar1,5); + lVar58 = NEON_shl((ulong)uVar1,2); + uVar2 = (uVar19 - 3 >> 2) + 1; + iVar15 = uVar2 * 0x10; + if (uVar20 < 0xc) { + iVar15 = 0; + } + if (iVar21 < 1) { + iVar17 = 0; + } + iVar3 = iVar15 + 4; + iVar4 = iVar15 + 8; + uVar22 = iVar16 - iVar17; + lVar37 = (long)iVar17; + lVar51 = NEON_shl(lVar37 + (ulong)uVar22,3); + do { + uVar32 = _UNK_00230a28; + uVar31 = _DAT_00230a20; + if (0 < iVar21) { + if ((param_1 < param_5 + lVar58 && param_5 < (byte *)((long)param_1 + lVar52) || + param_3 < param_5 + lVar58 && param_5 < (byte *)((long)param_3 + lVar52)) || + (uVar1 < 4)) { + pdVar33 = param_3 + 1; + pbVar39 = param_5; + pdVar35 = param_1; + do { + pdVar40 = pdVar33 + 4; + dVar63 = pdVar33[-1]; + dVar65 = *pdVar35; + pbVar39[1] = -(pdVar35[1] == *pdVar33) ^ bVar41; + *pbVar39 = -(dVar65 == dVar63) ^ bVar41; + dVar63 = pdVar33[1]; + dVar65 = pdVar35[2]; + pbVar39[3] = -(pdVar35[3] == pdVar33[2]) ^ bVar41; + pbVar39[2] = -(dVar65 == dVar63) ^ bVar41; + pdVar33 = pdVar40; + pbVar39 = pbVar39 + 4; + pdVar35 = pdVar35 + 4; + } while (pdVar40 != param_3 + (ulong)uVar19 * 4 + 5); + } + else { + if (0xb < uVar20) { + uVar43 = 0; + pbVar39 = param_5; + pdVar35 = param_3; + pdVar33 = param_1; + do { + dVar45 = pdVar33[1]; + dVar63 = *pdVar33; + dVar64 = pdVar35[1]; + dVar62 = *pdVar35; + dVar50 = pdVar33[7]; + dVar49 = pdVar33[6]; + pdVar40 = pdVar33 + 8; + dVar59 = pdVar35[5]; + dVar57 = pdVar35[4]; + pdVar7 = pdVar35 + 8; + dVar56 = pdVar35[7]; + dVar54 = pdVar35[6]; + pdVar8 = pdVar33 + 10; + dVar48 = pdVar33[3]; + dVar47 = pdVar33[2]; + pdVar9 = pdVar35 + 10; + dVar61 = pdVar35[3]; + dVar60 = pdVar35[2]; + dVar46 = pdVar33[5]; + dVar65 = pdVar33[4]; + pdVar10 = pdVar33 + 0xc; + pdVar11 = pdVar35 + 0xc; + pdVar12 = pdVar33 + 0xe; + pdVar13 = pdVar35 + 0xe; + pdVar25 = pdVar33 + 9; + pdVar26 = pdVar35 + 9; + pdVar24 = pdVar33 + 0xb; + pdVar23 = pdVar33 + 0xd; + pdVar29 = pdVar35 + 0xb; + bVar53 = (byte)uVar31; + bVar55 = (byte)uVar32; + pdVar14 = pdVar33 + 0xf; + pdVar28 = pdVar35 + 0xd; + pdVar27 = pdVar35 + 0xf; + uVar43 = uVar43 + 1; + pdVar33 = pdVar33 + 0x10; + pdVar35 = pdVar35 + 0x10; + *(ulong *)(pbVar39 + 8) = + CONCAT17(-(-(*pdVar14 == *pdVar27) & bVar55) ^ bVar41, + CONCAT16(-(-(*pdVar12 == *pdVar13) & bVar53) ^ bVar41, + CONCAT15(-(-(*pdVar23 == *pdVar28) & bVar55) ^ bVar41, + CONCAT14(-(-(*pdVar10 == *pdVar11) & bVar53) ^ + bVar41,CONCAT13(-(-(*pdVar24 == *pdVar29) + & bVar55) ^ bVar41, + CONCAT12(-(-(*pdVar8 == + *pdVar9) & + bVar53) ^ + bVar41,CONCAT11( + -(-(*pdVar25 == *pdVar26) & bVar55) ^ bVar41, + -(-(*pdVar40 == *pdVar7) & bVar53) ^ bVar41))))))) + ; + *(ulong *)pbVar39 = + CONCAT17(-(-(dVar50 == dVar56) & bVar55) ^ bVar41, + CONCAT16(-(-(dVar49 == dVar54) & bVar53) ^ bVar41, + CONCAT15(-(-(dVar46 == dVar59) & bVar55) ^ bVar41, + CONCAT14(-(-(dVar65 == dVar57) & bVar53) ^ bVar41, + CONCAT13(-(-(dVar48 == dVar61) & bVar55) + ^ bVar41,CONCAT12(-(-(dVar47 == + dVar60) & + bVar53) ^ + bVar41, + CONCAT11(-(-(dVar45 == dVar64) & bVar55) ^ bVar41, + -(-(dVar63 == dVar62) & bVar53) ^ bVar41) + )))))); + pbVar39 = pbVar39 + 0x10; + } while (uVar43 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_00230460; + } + dVar65 = param_1[(long)iVar15 + 1]; + dVar63 = param_3[(long)iVar15 + 1]; + param_5[iVar15] = -(param_1[iVar15] == param_3[iVar15]) ^ bVar41; + param_5[(long)iVar15 + 1] = -(dVar65 == dVar63) ^ bVar41; + dVar63 = param_3[(long)iVar15 + 3]; + dVar65 = param_1[(long)iVar15 + 3]; + param_5[(long)iVar15 + 2] = + -(param_1[(long)iVar15 + 2] == param_3[(long)iVar15 + 2]) ^ bVar41; + param_5[(long)iVar15 + 3] = -(dVar65 == dVar63) ^ bVar41; + if (iVar3 < iVar21) { + dVar65 = param_1[(long)iVar3 + 1]; + dVar63 = param_3[(long)iVar3 + 1]; + param_5[iVar3] = -(param_1[iVar3] == param_3[iVar3]) ^ bVar41; + param_5[(long)iVar3 + 1] = -(dVar65 == dVar63) ^ bVar41; + dVar63 = param_3[(long)iVar3 + 3]; + dVar65 = param_1[(long)iVar3 + 3]; + param_5[(long)iVar3 + 2] = + -(param_1[(long)iVar3 + 2] == param_3[(long)iVar3 + 2]) ^ bVar41; + param_5[(long)iVar3 + 3] = -(dVar65 == dVar63) ^ bVar41; + if (iVar4 < iVar21) { + dVar65 = param_1[(long)iVar4 + 1]; + dVar63 = param_3[(long)iVar4 + 1]; + param_5[iVar4] = -(param_1[iVar4] == param_3[iVar4]) ^ bVar41; + param_5[(long)iVar4 + 1] = -(dVar65 == dVar63) ^ bVar41; + dVar63 = param_3[(long)iVar4 + 3]; + dVar65 = param_1[(long)iVar4 + 3]; + param_5[(long)iVar4 + 2] = + -(param_1[(long)iVar4 + 2] == param_3[(long)iVar4 + 2]) ^ bVar41; + param_5[(long)iVar4 + 3] = -(dVar65 == dVar63) ^ bVar41; + } + } + } + } +LAB_00230460: + if (iVar17 < iVar16) { + pdVar33 = param_1 + lVar37; + pdVar35 = param_3 + lVar37; + pbVar39 = param_5 + lVar37; + if ((pdVar33 < param_5 + lVar37 + (ulong)uVar22 && + pbVar39 < (byte *)((long)param_1 + lVar51) || + pdVar35 < param_5 + lVar37 + (ulong)uVar22 && + pbVar39 < (byte *)((long)param_3 + lVar51)) || (uVar22 < 0x12)) { + lVar38 = 0; + do { + pbVar39[lVar38] = bVar41 ^ -(pdVar33[lVar38] == pdVar35[lVar38]); + lVar38 = lVar38 + 1; + } while (lVar38 != (ulong)(uint)((iVar16 + -1) - iVar17) + 1); + } + else { + uVar5 = (uint)((ulong)pdVar33 >> 3) & 1; + uVar43 = uVar22; + if (uVar5 < uVar22) { + uVar43 = uVar5; + } + iVar34 = iVar17; + if (uVar43 != 0) { + *pbVar39 = bVar41 ^ -(*pdVar33 == *pdVar35); + iVar34 = iVar17 + 1; + } + uVar32 = _UNK_00230a28; + uVar31 = _DAT_00230a20; + uVar42 = 0; + uVar5 = ((uVar22 - uVar43) - 0x10 >> 4) + 1; + iVar18 = uVar5 * 0x10; + pbVar39 = param_5 + lVar37 + (ulong)uVar43; + pdVar33 = param_3 + (ulong)uVar43 + lVar37; + pdVar35 = param_1 + (ulong)uVar43 + lVar37; + do { + dVar45 = pdVar35[1]; + dVar63 = *pdVar35; + dVar64 = pdVar33[1]; + dVar62 = *pdVar33; + uVar42 = uVar42 + 1; + dVar61 = pdVar35[3]; + dVar60 = pdVar35[2]; + dVar50 = pdVar33[3]; + dVar49 = pdVar33[2]; + dVar48 = pdVar33[5]; + dVar47 = pdVar33[4]; + bVar53 = (byte)uVar31; + bVar55 = (byte)uVar32; + dVar59 = pdVar35[5]; + dVar57 = pdVar35[4]; + dVar56 = pdVar33[7]; + dVar54 = pdVar33[6]; + dVar46 = pdVar35[7]; + dVar65 = pdVar35[6]; + *(ulong *)(pbVar39 + 8) = + CONCAT17(-(-(pdVar35[0xf] == pdVar33[0xf]) & bVar55) ^ bVar41, + CONCAT16(-(-(pdVar35[0xe] == pdVar33[0xe]) & bVar53) ^ bVar41, + CONCAT15(-(-(pdVar35[0xd] == pdVar33[0xd]) & bVar55) ^ bVar41 + ,CONCAT14(-(-(pdVar35[0xc] == pdVar33[0xc]) & bVar53 + ) ^ bVar41, + CONCAT13(-(-(pdVar35[0xb] == pdVar33[0xb]) + & bVar55) ^ bVar41, + CONCAT12(-(-(pdVar35[10] == + pdVar33[10]) & bVar53 + ) ^ bVar41, + CONCAT11(-(-(pdVar35[9] + == pdVar33[9 + ]) & bVar55) ^ bVar41, + -(-(pdVar35[8] == pdVar33[8]) & bVar53) ^ bVar41)) + ))))); + *(ulong *)pbVar39 = + CONCAT17(-(-(dVar46 == dVar56) & bVar55) ^ bVar41, + CONCAT16(-(-(dVar65 == dVar54) & bVar53) ^ bVar41, + CONCAT15(-(-(dVar59 == dVar48) & bVar55) ^ bVar41, + CONCAT14(-(-(dVar57 == dVar47) & bVar53) ^ bVar41, + CONCAT13(-(-(dVar61 == dVar50) & bVar55) ^ + bVar41,CONCAT12(-(-(dVar60 == + dVar49) & + bVar53) ^ bVar41, + CONCAT11(-(-( + dVar45 == dVar64) & bVar55) ^ bVar41, + -(-(dVar63 == dVar62) & bVar53) ^ bVar41))))))); + pbVar39 = pbVar39 + 0x10; + pdVar33 = pdVar33 + 0x10; + pdVar35 = pdVar35 + 0x10; + } while (uVar42 < uVar5); + iVar34 = iVar34 + iVar18; + if (uVar22 - uVar43 != iVar18) { + iVar18 = iVar34 + 1; + param_5[iVar34] = bVar41 ^ -(param_1[iVar34] == param_3[iVar34]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 2; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 3; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] == param_3[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 4; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 5; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] == param_3[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 6; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 7; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] == param_3[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 8; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 9; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] == param_3[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 10; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 0xb; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] == param_3[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 0xc; + param_5[iVar18] = + bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 0xd; + param_5[iVar6] = + bVar41 ^ -(param_1[iVar6] == param_3[iVar6]); + if (iVar18 < iVar16) { + iVar34 = iVar34 + 0xe; + param_5[iVar18] = + bVar41 ^ -(param_1[iVar18] == param_3[iVar18]); + if (iVar34 < iVar16) { + param_5[iVar34] = + bVar41 ^ -(param_1[iVar34] == param_3[iVar34]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar44 = iVar44 + -1; + param_1 = (double *)((long)param_1 + lVar66); + param_3 = (double *)((long)param_3 + lVar67); + param_5 = param_5 + param_6; + if (iVar44 == -1) { + return; + } + } while( true ); + } + bVar41 = 0; + param_1 = param_3; + param_2 = param_4; + goto LAB_0022f3e8; + } + } + bVar41 = 0xff; + param_1 = param_3; + param_2 = param_4; +LAB_0022f3e8: + iVar44 = iVar15 + -1; + if (iVar15 != 0) { + iVar21 = iVar16 + -3; + uVar20 = iVar16 - 4; + uVar19 = uVar20 >> 2; + uVar1 = uVar19 + 1; + lVar52 = NEON_shl(uVar36,3); + iVar17 = uVar1 * 4; + lVar58 = NEON_shl(param_2,3); + uVar2 = (uVar19 - 3 >> 2) + 1; + iVar15 = uVar2 * 0x10; + if (uVar20 < 0xc) { + iVar15 = 0; + } + lVar66 = NEON_shl((ulong)uVar1,5); + iVar3 = iVar15 + 4; + if (iVar21 < 1) { + iVar17 = 0; + } + iVar4 = iVar15 + 8; + uVar22 = iVar16 - iVar17; + lVar67 = (long)iVar17; + lVar37 = NEON_shl(lVar67 + (ulong)uVar22,3); + do { + uVar32 = _UNK_00230a28; + uVar31 = _DAT_00230a20; + if (0 < iVar21) { + if ((pdVar33 < param_5 + (ulong)uVar1 * 4 && param_5 < (byte *)((long)pdVar33 + lVar66) || + param_1 < param_5 + (ulong)uVar1 * 4 && param_5 < (byte *)((long)param_1 + lVar66)) || + (uVar1 < 4)) { + pdVar35 = param_1 + 1; + pbVar39 = param_5; + pdVar40 = pdVar33; + do { + pdVar7 = pdVar35 + 4; + dVar63 = pdVar35[-1]; + dVar65 = *pdVar40; + pbVar39[1] = -(*pdVar35 < pdVar40[1]) ^ bVar41; + *pbVar39 = -(dVar63 < dVar65) ^ bVar41; + dVar63 = pdVar35[1]; + dVar65 = pdVar40[2]; + pbVar39[3] = -(pdVar35[2] < pdVar40[3]) ^ bVar41; + pbVar39[2] = -(dVar63 < dVar65) ^ bVar41; + pdVar35 = pdVar7; + pbVar39 = pbVar39 + 4; + pdVar40 = pdVar40 + 4; + } while (pdVar7 != param_1 + (ulong)uVar19 * 4 + 5); + } + else { + if (0xb < uVar20) { + uVar43 = 0; + pbVar39 = param_5; + pdVar40 = param_1; + pdVar35 = pdVar33; + do { + dVar45 = pdVar35[1]; + dVar63 = *pdVar35; + dVar64 = pdVar40[1]; + dVar62 = *pdVar40; + dVar50 = pdVar35[7]; + dVar49 = pdVar35[6]; + pdVar7 = pdVar35 + 8; + dVar59 = pdVar40[5]; + dVar57 = pdVar40[4]; + pdVar8 = pdVar40 + 8; + dVar56 = pdVar40[7]; + dVar54 = pdVar40[6]; + pdVar9 = pdVar35 + 10; + dVar48 = pdVar35[3]; + dVar47 = pdVar35[2]; + pdVar10 = pdVar40 + 10; + dVar61 = pdVar40[3]; + dVar60 = pdVar40[2]; + dVar46 = pdVar35[5]; + dVar65 = pdVar35[4]; + pdVar11 = pdVar35 + 0xc; + pdVar12 = pdVar40 + 0xc; + pdVar13 = pdVar35 + 0xe; + pdVar14 = pdVar40 + 0xe; + pdVar26 = pdVar35 + 9; + pdVar29 = pdVar40 + 9; + pdVar25 = pdVar35 + 0xb; + pdVar24 = pdVar35 + 0xd; + pdVar30 = pdVar40 + 0xb; + bVar53 = (byte)uVar31; + bVar55 = (byte)uVar32; + pdVar23 = pdVar35 + 0xf; + pdVar28 = pdVar40 + 0xd; + pdVar27 = pdVar40 + 0xf; + uVar43 = uVar43 + 1; + pdVar35 = pdVar35 + 0x10; + pdVar40 = pdVar40 + 0x10; + *(ulong *)(pbVar39 + 8) = + CONCAT17(-(-(*pdVar27 < *pdVar23) & bVar55) ^ bVar41, + CONCAT16(-(-(*pdVar14 < *pdVar13) & bVar53) ^ bVar41, + CONCAT15(-(-(*pdVar28 < *pdVar24) & bVar55) ^ bVar41, + CONCAT14(-(-(*pdVar12 < *pdVar11) & bVar53) ^ bVar41, + CONCAT13(-(-(*pdVar30 < *pdVar25) & bVar55) ^ + bVar41,CONCAT12(-(-(*pdVar10 < + *pdVar9) & bVar53 + ) ^ bVar41, + CONCAT11(-(-(* + pdVar29 < *pdVar26) & bVar55) ^ bVar41, + -(-(*pdVar8 < *pdVar7) & bVar53) ^ bVar41))))))); + *(ulong *)pbVar39 = + CONCAT17(-(-(dVar56 < dVar50) & bVar55) ^ bVar41, + CONCAT16(-(-(dVar54 < dVar49) & bVar53) ^ bVar41, + CONCAT15(-(-(dVar59 < dVar46) & bVar55) ^ bVar41, + CONCAT14(-(-(dVar57 < dVar65) & bVar53) ^ bVar41, + CONCAT13(-(-(dVar61 < dVar48) & bVar55) ^ + bVar41,CONCAT12(-(-(dVar60 < dVar47) + & bVar53) ^ bVar41, + CONCAT11(-(-(dVar64 + < dVar45) & bVar55) ^ bVar41, + -(-(dVar62 < dVar63) & bVar53) ^ bVar41))))))); + pbVar39 = pbVar39 + 0x10; + } while (uVar43 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_0022f96c; + } + dVar65 = pdVar33[(long)iVar15 + 1]; + dVar63 = param_1[(long)iVar15 + 1]; + param_5[iVar15] = -(param_1[iVar15] < pdVar33[iVar15]) ^ bVar41; + param_5[(long)iVar15 + 1] = -(dVar63 < dVar65) ^ bVar41; + dVar63 = param_1[(long)iVar15 + 3]; + dVar65 = pdVar33[(long)iVar15 + 3]; + param_5[(long)iVar15 + 2] = + -(param_1[(long)iVar15 + 2] < pdVar33[(long)iVar15 + 2]) ^ bVar41; + param_5[(long)iVar15 + 3] = -(dVar63 < dVar65) ^ bVar41; + if (iVar3 < iVar21) { + dVar65 = pdVar33[(long)iVar3 + 1]; + dVar63 = param_1[(long)iVar3 + 1]; + param_5[iVar3] = -(param_1[iVar3] < pdVar33[iVar3]) ^ bVar41; + param_5[(long)iVar3 + 1] = -(dVar63 < dVar65) ^ bVar41; + dVar63 = param_1[(long)iVar3 + 3]; + dVar65 = pdVar33[(long)iVar3 + 3]; + param_5[(long)iVar3 + 2] = + -(param_1[(long)iVar3 + 2] < pdVar33[(long)iVar3 + 2]) ^ bVar41; + param_5[(long)iVar3 + 3] = -(dVar63 < dVar65) ^ bVar41; + if (iVar4 < iVar21) { + dVar65 = pdVar33[(long)iVar4 + 1]; + dVar63 = param_1[(long)iVar4 + 1]; + param_5[iVar4] = -(param_1[iVar4] < pdVar33[iVar4]) ^ bVar41; + param_5[(long)iVar4 + 1] = -(dVar63 < dVar65) ^ bVar41; + dVar63 = param_1[(long)iVar4 + 3]; + dVar65 = pdVar33[(long)iVar4 + 3]; + param_5[(long)iVar4 + 2] = + -(param_1[(long)iVar4 + 2] < pdVar33[(long)iVar4 + 2]) ^ bVar41; + param_5[(long)iVar4 + 3] = -(dVar63 < dVar65) ^ bVar41; + } + } + } + } +LAB_0022f96c: + if (iVar17 < iVar16) { + pdVar35 = pdVar33 + lVar67; + pdVar40 = param_1 + lVar67; + pbVar39 = param_5 + lVar67; + if ((pdVar35 < param_5 + lVar67 + (ulong)uVar22 && + pbVar39 < (byte *)((long)pdVar33 + lVar37) || + pdVar40 < param_5 + lVar67 + (ulong)uVar22 && + pbVar39 < (byte *)((long)param_1 + lVar37)) || (uVar22 < 0x12)) { + lVar51 = 0; + do { + pbVar39[lVar51] = bVar41 ^ -(pdVar40[lVar51] < pdVar35[lVar51]); + lVar51 = lVar51 + 1; + } while (lVar51 != (ulong)(uint)((iVar16 + -1) - iVar17) + 1); + } + else { + uVar43 = (uint)((ulong)pdVar35 >> 3) & 1; + if (uVar22 < uVar43) { + uVar43 = uVar22; + } + iVar34 = iVar17; + if (uVar43 != 0) { + *pbVar39 = bVar41 ^ -(*pdVar40 < *pdVar35); + iVar34 = iVar17 + 1; + } + uVar32 = _UNK_00230a28; + uVar31 = _DAT_00230a20; + uVar42 = 0; + uVar5 = ((uVar22 - uVar43) - 0x10 >> 4) + 1; + iVar18 = uVar5 * 0x10; + pbVar39 = param_5 + lVar67 + (ulong)uVar43; + pdVar35 = pdVar33 + (ulong)uVar43 + lVar67; + pdVar40 = param_1 + (ulong)uVar43 + lVar67; + do { + dVar45 = pdVar35[1]; + dVar63 = *pdVar35; + dVar64 = pdVar40[1]; + dVar62 = *pdVar40; + uVar42 = uVar42 + 1; + dVar61 = pdVar35[3]; + dVar60 = pdVar35[2]; + dVar50 = pdVar40[3]; + dVar49 = pdVar40[2]; + dVar48 = pdVar40[5]; + dVar47 = pdVar40[4]; + bVar53 = (byte)uVar31; + bVar55 = (byte)uVar32; + dVar59 = pdVar35[5]; + dVar57 = pdVar35[4]; + dVar56 = pdVar40[7]; + dVar54 = pdVar40[6]; + dVar46 = pdVar35[7]; + dVar65 = pdVar35[6]; + *(ulong *)(pbVar39 + 8) = + CONCAT17(-(-(pdVar40[0xf] < pdVar35[0xf]) & bVar55) ^ bVar41, + CONCAT16(-(-(pdVar40[0xe] < pdVar35[0xe]) & bVar53) ^ bVar41, + CONCAT15(-(-(pdVar40[0xd] < pdVar35[0xd]) & bVar55) ^ bVar41, + CONCAT14(-(-(pdVar40[0xc] < pdVar35[0xc]) & bVar53) ^ + bVar41,CONCAT13(-(-(pdVar40[0xb] < pdVar35[0xb] + ) & bVar55) ^ bVar41, + CONCAT12(-(-(pdVar40[10] < + pdVar35[10]) & + bVar53) ^ bVar41, + CONCAT11(-(-(pdVar40[9 + ] < pdVar35[9]) & bVar55) ^ bVar41, + -(-(pdVar40[8] < pdVar35[8]) & bVar53) ^ bVar41))) + )))); + *(ulong *)pbVar39 = + CONCAT17(-(-(dVar56 < dVar46) & bVar55) ^ bVar41, + CONCAT16(-(-(dVar54 < dVar65) & bVar53) ^ bVar41, + CONCAT15(-(-(dVar48 < dVar59) & bVar55) ^ bVar41, + CONCAT14(-(-(dVar47 < dVar57) & bVar53) ^ bVar41, + CONCAT13(-(-(dVar50 < dVar61) & bVar55) ^ + bVar41,CONCAT12(-(-(dVar49 < dVar60) & + bVar53) ^ bVar41, + CONCAT11(-(-(dVar64 < + dVar45) & bVar55) ^ bVar41, + -(-(dVar62 < dVar63) & bVar53) ^ bVar41))))))); + pbVar39 = pbVar39 + 0x10; + pdVar35 = pdVar35 + 0x10; + pdVar40 = pdVar40 + 0x10; + } while (uVar42 < uVar5); + iVar34 = iVar18 + iVar34; + if (iVar18 != uVar22 - uVar43) { + iVar18 = iVar34 + 1; + param_5[iVar34] = bVar41 ^ -(param_1[iVar34] < pdVar33[iVar34]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 2; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 3; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] < pdVar33[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 4; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 5; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] < pdVar33[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 6; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 7; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] < pdVar33[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 8; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 9; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] < pdVar33[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 10; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 0xb; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] < pdVar33[iVar6]); + if (iVar18 < iVar16) { + iVar6 = iVar34 + 0xc; + param_5[iVar18] = bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar6 < iVar16) { + iVar18 = iVar34 + 0xd; + param_5[iVar6] = bVar41 ^ -(param_1[iVar6] < pdVar33[iVar6]); + if (iVar18 < iVar16) { + iVar34 = iVar34 + 0xe; + param_5[iVar18] = + bVar41 ^ -(param_1[iVar18] < pdVar33[iVar18]); + if (iVar34 < iVar16) { + param_5[iVar34] = + bVar41 ^ -(param_1[iVar34] < pdVar33[iVar34]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar44 = iVar44 + -1; + pdVar33 = (double *)((long)pdVar33 + lVar52); + param_1 = (double *)((long)param_1 + lVar58); + param_5 = param_5 + param_6; + } while (iVar44 != -1); + } + return; +} + + +================================================================== + +### FUNC 00230a30 (452 bytes) name=FUN_00230a30 + +void FUN_00230a30(double *param_1,ulong param_2,double *param_3,ulong param_4,long param_5, + ulong param_6,char *param_7,long param_8,int *param_9) + +{ + int iVar1; + int iVar2; + uint uVar3; + char *pcVar4; + long lVar5; + double *pdVar6; + double *pdVar7; + double *pdVar8; + char cVar9; + char cVar10; + int iVar11; + long lVar12; + + iVar1 = *param_9; + iVar11 = param_9[1] + -1; + if (param_9[1] != 0) { + uVar3 = iVar1 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (iVar1 + -3 < 1) { + iVar2 = 0; + } + lVar12 = (long)iVar2; + do { + if (0 < iVar1 + -3) { + pdVar8 = (double *)(param_5 + 0x18); + pcVar4 = param_7; + pdVar6 = param_1; + pdVar7 = param_3; + do { + cVar10 = '\0'; + if (*pdVar7 <= *pdVar6) { + cVar10 = -(*pdVar6 <= pdVar8[-3]); + } + cVar9 = '\0'; + if (pdVar7[1] <= pdVar6[1]) { + cVar9 = -(pdVar6[1] <= pdVar8[-2]); + } + *pcVar4 = cVar10; + cVar10 = '\0'; + pcVar4[1] = cVar9; + if (pdVar7[2] <= pdVar6[2]) { + cVar10 = -(pdVar6[2] <= pdVar8[-1]); + } + cVar9 = '\0'; + if (pdVar7[3] <= pdVar6[3]) { + cVar9 = -(pdVar6[3] <= *pdVar8); + } + pdVar8 = pdVar8 + 4; + pcVar4[2] = cVar10; + pcVar4[3] = cVar9; + pdVar7 = pdVar7 + 4; + pdVar6 = pdVar6 + 4; + pcVar4 = pcVar4 + 4; + } while (pdVar8 != (double *)(param_5 + (ulong)uVar3 * 0x20 + 0x38)); + } + if (iVar2 < iVar1) { + lVar5 = 0; + do { + cVar10 = '\0'; + if (param_3[lVar12 + lVar5] <= param_1[lVar12 + lVar5]) { + cVar10 = -(param_1[lVar12 + lVar5] <= *(double *)(param_5 + lVar12 * 8 + lVar5 * 8)); + } + param_7[lVar5 + lVar12] = cVar10; + lVar5 = lVar5 + 1; + } while (lVar5 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + iVar11 = iVar11 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_3 = (double *)((long)param_3 + (param_4 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffff8); + param_7 = param_7 + param_8; + } while (iVar11 != -1); + } + return; +} + + +================================================================== + +### FUNC 00230bf4 (536 bytes) name=FUN_00230bf4 + +void FUN_00230bf4(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + long param_7,long param_8,int *param_9) + +{ + char *pcVar1; + int iVar2; + char *pcVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + int iVar7; + uint uVar8; + int iVar9; + int iVar10; + long lVar11; + char *pcVar12; + long lVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + long lVar17; + int iVar18; + char cVar20; + char cVar21; + char cVar22; + char cVar23; + char cVar24; + char cVar25; + undefined8 uVar19; + char cVar26; + char cVar28; + char cVar29; + char cVar30; + char cVar31; + char cVar32; + char cVar33; + undefined8 uVar27; + char cVar34; + undefined8 uVar35; + undefined8 uVar36; + undefined8 uVar37; + undefined8 uVar38; + + iVar18 = param_9[1]; + iVar7 = *param_9; + if (iVar18 != 0) { + iVar9 = iVar7 + -0xf; + iVar2 = (iVar7 - 0x10U & 0xfffffff0) + 0x10; + if (iVar9 < 1) { + iVar2 = 0; + } + uVar8 = (uint)((iVar7 + -4) - iVar2) >> 2; + lVar17 = (long)iVar2; + do { + lVar11 = 0; + if (0 < iVar9) { + do { + puVar4 = (undefined8 *)(param_3 + lVar11); + puVar5 = (undefined8 *)(param_5 + lVar11); + puVar6 = (undefined8 *)(param_7 + lVar11); + uVar27 = ((undefined8 *)(param_1 + lVar11))[1]; + uVar19 = *(undefined8 *)(param_1 + lVar11); + lVar11 = lVar11 + 0x10; + uVar36 = puVar4[1]; + uVar35 = *puVar4; + uVar38 = puVar5[1]; + uVar37 = *puVar5; + cVar20 = (char)((ulong)uVar19 >> 8); + cVar21 = (char)((ulong)uVar19 >> 0x10); + cVar22 = (char)((ulong)uVar19 >> 0x18); + cVar23 = (char)((ulong)uVar19 >> 0x20); + cVar24 = (char)((ulong)uVar19 >> 0x28); + cVar25 = (char)((ulong)uVar19 >> 0x30); + cVar26 = (char)((ulong)uVar19 >> 0x38); + cVar28 = (char)((ulong)uVar27 >> 8); + cVar29 = (char)((ulong)uVar27 >> 0x10); + cVar30 = (char)((ulong)uVar27 >> 0x18); + cVar31 = (char)((ulong)uVar27 >> 0x20); + cVar32 = (char)((ulong)uVar27 >> 0x28); + cVar33 = (char)((ulong)uVar27 >> 0x30); + cVar34 = (char)((ulong)uVar27 >> 0x38); + puVar6[1] = CONCAT17(-((char)((ulong)uVar36 >> 0x38) <= cVar34) & + ~-((char)((ulong)uVar38 >> 0x38) < cVar34), + CONCAT16(-((char)((ulong)uVar36 >> 0x30) <= cVar33) & + ~-((char)((ulong)uVar38 >> 0x30) < cVar33), + CONCAT15(-((char)((ulong)uVar36 >> 0x28) <= cVar32) & + ~-((char)((ulong)uVar38 >> 0x28) < cVar32), + CONCAT14(-((char)((ulong)uVar36 >> 0x20) <= cVar31) + & ~-((char)((ulong)uVar38 >> 0x20) < + cVar31), + CONCAT13(-((char)((ulong)uVar36 >> 0x18) + <= cVar30) & + ~-((char)((ulong)uVar38 >> 0x18) + < cVar30), + CONCAT12(-((char)((ulong)uVar36 + >> 0x10) <= + cVar29) & + ~-((char)((ulong)uVar38 + >> 0x10) < + cVar29), + CONCAT11(-((char)((ulong + )uVar36 >> 8) <= cVar28) & + ~-((char)((ulong)uVar38 >> 8) < cVar28), + -((char)uVar36 <= (char)uVar27) & + ~-((char)uVar38 < (char)uVar27)))))))); + *puVar6 = CONCAT17(-((char)((ulong)uVar35 >> 0x38) <= cVar26) & + ~-((char)((ulong)uVar37 >> 0x38) < cVar26), + CONCAT16(-((char)((ulong)uVar35 >> 0x30) <= cVar25) & + ~-((char)((ulong)uVar37 >> 0x30) < cVar25), + CONCAT15(-((char)((ulong)uVar35 >> 0x28) <= cVar24) & + ~-((char)((ulong)uVar37 >> 0x28) < cVar24), + CONCAT14(-((char)((ulong)uVar35 >> 0x20) <= cVar23) & + ~-((char)((ulong)uVar37 >> 0x20) < cVar23), + CONCAT13(-((char)((ulong)uVar35 >> 0x18) <= + cVar22) & + ~-((char)((ulong)uVar37 >> 0x18) < + cVar22), + CONCAT12(-((char)((ulong)uVar35 >> + 0x10) <= cVar21) & + ~-((char)((ulong)uVar37 >> + 0x10) < cVar21), + CONCAT11(-((char)((ulong) + uVar35 >> 8) <= cVar20) & + ~-((char)((ulong)uVar37 >> 8) < cVar20), + -((char)uVar35 <= (char)uVar19) & + ~-((char)uVar37 < (char)uVar19)))))))); + } while ((int)lVar11 < iVar9); + } + iVar10 = iVar2; + if (iVar2 < iVar7 + -3) { + pcVar15 = (char *)(param_1 + lVar17); + pcVar14 = (char *)(param_7 + lVar17); + pcVar16 = (char *)(param_5 + lVar17); + pcVar12 = (char *)(param_3 + lVar17); + do { + cVar20 = '\0'; + cVar21 = '\0'; + cVar22 = '\0'; + cVar23 = '\0'; + if (*pcVar12 <= *pcVar15) { + cVar20 = -(*pcVar15 <= *pcVar16); + } + if (pcVar12[1] <= pcVar15[1]) { + cVar21 = -(pcVar15[1] <= pcVar16[1]); + } + *pcVar14 = cVar20; + pcVar14[1] = cVar21; + if (pcVar12[2] <= pcVar15[2]) { + cVar22 = -(pcVar15[2] <= pcVar16[2]); + } + pcVar1 = pcVar15 + 3; + pcVar3 = pcVar12 + 4; + pcVar15 = pcVar15 + 4; + if ((int)(uint)(byte)pcVar12[3] <= (int)*pcVar1) { + cVar23 = -(*pcVar1 <= pcVar16[3]); + } + pcVar14[2] = cVar22; + pcVar14[3] = cVar23; + pcVar16 = pcVar16 + 4; + pcVar14 = pcVar14 + 4; + pcVar12 = pcVar3; + iVar10 = iVar2 + 4 + uVar8 * 4; + } while (pcVar3 != (char *)(param_3 + lVar17 + 4 + (ulong)uVar8 * 4)); + } + lVar11 = (long)iVar10; + if (iVar10 < iVar7) { + lVar13 = 0; + do { + cVar21 = '\0'; + cVar20 = *(char *)(param_1 + lVar11 + lVar13); + if (*(char *)(param_3 + lVar11 + lVar13) <= cVar20) { + cVar21 = -(cVar20 <= *(char *)(param_5 + lVar11 + lVar13)); + } + *(char *)(param_7 + lVar11 + lVar13) = cVar21; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar7 + -1) - iVar10) + 1); + } + iVar18 = iVar18 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + param_7 = param_7 + param_8; + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 00230e0c (2740 bytes) name=FUN_00230e0c + +void FUN_00230e0c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + long lVar4; + byte *pbVar5; + int iVar6; + uint uVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + int iVar12; + uint uVar13; + int iVar14; + int iVar15; + int iVar16; + undefined4 uVar17; + undefined4 uVar18; + undefined4 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined4 uVar22; + undefined1 auVar23 [16]; + unkbyte10 Var24; + byte bVar25; + int iVar26; + undefined1 (*pauVar27) [16]; + byte *pbVar28; + char *pcVar29; + undefined8 *puVar30; + unkbyte10 *pVar31; + byte *pbVar32; + long lVar33; + uint uVar34; + unkbyte10 *pVar35; + uint uVar36; + undefined1 (*pauVar37) [16]; + long lVar38; + int iVar39; + long lVar40; + undefined8 *puVar41; + long lVar42; + byte bVar43; + byte bVar44; + undefined4 uVar45; + undefined4 uVar48; + undefined4 uVar49; + undefined4 uVar50; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined4 uVar51; + undefined4 uVar53; + undefined4 uVar54; + undefined1 auVar52 [16]; + undefined4 uVar55; + undefined4 uVar56; + undefined4 uVar57; + undefined4 uVar58; + undefined4 uVar59; + + iVar39 = param_7[1]; + iVar8 = *param_7; + if (iVar39 != 0) { + uVar11 = iVar8 - 0x20; + iVar9 = ((uVar11 >> 5) + 1) * 0x20; + if ((int)uVar11 < 0) { + iVar9 = 0; + } + iVar12 = iVar8 + -3; + uVar13 = (iVar8 + -4) - iVar9; + lVar40 = (long)iVar9; + uVar10 = uVar13 >> 2; + uVar1 = (uVar10 - 3 >> 2) + 1; + iVar6 = iVar9 + 4 + uVar10 * 4; + lVar3 = lVar40 + 0x40; + do { + if (-1 < (int)uVar11) { + pauVar27 = (undefined1 (*) [16])(param_1 + 0x10); + pVar31 = (unkbyte10 *)(param_3 + 0x10); + puVar30 = (undefined8 *)(param_5 + 0x10); + do { + pauVar37 = pauVar27 + -1; + pVar35 = pVar31 + -1; + auVar46 = *pauVar27; + uVar20 = *(undefined8 *)((long)pVar31 + 8); + Var24 = *pVar31; + pauVar27 = pauVar27 + 2; + uVar21 = *(undefined8 *)((long)pVar31 + -8); + pVar31 = pVar31 + 2; + auVar23[9] = (char)((ulong)uVar21 >> 8); + auVar23._0_9_ = *(unkbyte9 *)pVar35; + auVar23[10] = (char)((ulong)uVar21 >> 0x10); + auVar23[0xb] = (char)((ulong)uVar21 >> 0x18); + auVar23[0xc] = (char)((ulong)uVar21 >> 0x20); + auVar23[0xd] = (char)((ulong)uVar21 >> 0x28); + auVar23[0xe] = (char)((ulong)uVar21 >> 0x30); + auVar23[0xf] = (char)((ulong)uVar21 >> 0x38); + auVar52 = NEON_uabd(*pauVar37,auVar23,1); + puVar30[-1] = auVar52._8_8_; + puVar30[-2] = auVar52._0_8_; + auVar52._10_2_ = (short)((ulong)uVar20 >> 0x10); + auVar52._0_10_ = Var24; + auVar52._12_2_ = (short)((ulong)uVar20 >> 0x20); + auVar52._14_2_ = (short)((ulong)uVar20 >> 0x30); + auVar52 = NEON_uabd(auVar46,auVar52,1); + puVar30[1] = auVar52._8_8_; + *puVar30 = auVar52._0_8_; + puVar30 = puVar30 + 4; + } while (pauVar27 != (undefined1 (*) [16])(param_1 + (ulong)(uVar11 >> 5) * 0x20 + 0x30)); + } + iVar16 = iVar9; + if (iVar9 < iVar12) { + pbVar28 = (byte *)(param_1 + lVar40); + pcVar29 = (char *)(param_5 + lVar40); + pbVar32 = (byte *)(param_3 + lVar40); + iVar16 = iVar6; + if ((pbVar28 < (byte *)(param_5 + lVar3) && pcVar29 < (char *)(param_1 + lVar3) || + pbVar32 < (byte *)(param_5 + lVar3) && pcVar29 < (char *)(param_3 + lVar3)) || + (uVar10 + 1 < 4)) { + do { + pbVar5 = pbVar28 + 4; + bVar43 = *pbVar32; + bVar44 = *pbVar28; + bVar25 = (byte)((int)((uint)pbVar28[1] - (uint)pbVar32[1]) >> 0x1f); + pcVar29[1] = ((byte)((uint)pbVar28[1] - (uint)pbVar32[1]) ^ bVar25) - bVar25; + bVar25 = (byte)((int)((uint)bVar44 - (uint)bVar43) >> 0x1f); + *pcVar29 = ((byte)((uint)bVar44 - (uint)bVar43) ^ bVar25) - bVar25; + bVar43 = pbVar32[2]; + bVar44 = pbVar28[2]; + bVar25 = (byte)((int)((uint)pbVar28[3] - (uint)pbVar32[3]) >> 0x1f); + pcVar29[3] = ((byte)((uint)pbVar28[3] - (uint)pbVar32[3]) ^ bVar25) - bVar25; + bVar25 = (byte)((int)((uint)bVar44 - (uint)bVar43) >> 0x1f); + pcVar29[2] = ((byte)((uint)bVar44 - (uint)bVar43) ^ bVar25) - bVar25; + pbVar28 = pbVar5; + pcVar29 = pcVar29 + 4; + pbVar32 = pbVar32 + 4; + } while (pbVar5 != (byte *)(param_1 + lVar40 + 4 + (ulong)uVar10 * 4)); + } + else { + iVar26 = iVar9; + if (0xb < uVar13) { + uVar34 = 0; + do { + uVar34 = uVar34 + 1; + uVar21 = *(undefined8 *)(pbVar32 + 8); + uVar20 = *(undefined8 *)pbVar32; + bVar43 = (byte)((ulong)uVar20 >> 0x28); + bVar44 = (byte)((ulong)uVar21 >> 0x28); + uVar56 = MP_INT_ABS((CONCAT12(pbVar28[1],(ushort)*pbVar28) & 0xffff) - + (uint)(byte)uVar20); + uVar57 = MP_INT_ABS((uint)pbVar28[1] - (uint)(byte)((ulong)uVar20 >> 8)); + uVar58 = MP_INT_ABS((uint)pbVar28[2] - (uint)(byte)((ulong)uVar20 >> 0x10)); + uVar59 = MP_INT_ABS((uint)pbVar28[3] - (uint)(byte)((ulong)uVar20 >> 0x18)); + uVar51 = MP_INT_ABS((uint)pbVar28[4] - + (CONCAT12(bVar43,(ushort)(byte)((ulong)uVar20 >> 0x20)) & 0xffff)) + ; + uVar53 = MP_INT_ABS((uint)pbVar28[5] - (uint)bVar43); + uVar54 = MP_INT_ABS((uint)pbVar28[6] - (uint)(byte)((ulong)uVar20 >> 0x30)); + uVar55 = MP_INT_ABS((uint)pbVar28[7] - (uint)(byte)((ulong)uVar20 >> 0x38)); + uVar17 = MP_INT_ABS((CONCAT12(pbVar28[9],(ushort)pbVar28[8]) & 0xffff) - + (uint)(byte)uVar21); + uVar18 = MP_INT_ABS((uint)pbVar28[9] - (uint)(byte)((ulong)uVar21 >> 8)); + uVar19 = MP_INT_ABS((uint)pbVar28[10] - (uint)(byte)((ulong)uVar21 >> 0x10)); + uVar22 = MP_INT_ABS((uint)pbVar28[0xb] - (uint)(byte)((ulong)uVar21 >> 0x18)); + uVar45 = MP_INT_ABS((uint)pbVar28[0xc] - + (CONCAT12(bVar44,(ushort)(byte)((ulong)uVar21 >> 0x20)) & 0xffff)) + ; + uVar48 = MP_INT_ABS((uint)pbVar28[0xd] - (uint)bVar44); + uVar49 = MP_INT_ABS((uint)pbVar28[0xe] - (uint)(byte)((ulong)uVar21 >> 0x30)); + uVar50 = MP_INT_ABS((uint)pbVar28[0xf] - (uint)(byte)((ulong)uVar21 >> 0x38)); + auVar46._0_8_ = + CONCAT17((char)uVar55, + CONCAT16((char)uVar54, + CONCAT15((char)uVar53, + CONCAT14((char)uVar51, + CONCAT13((char)uVar59, + CONCAT12((char)uVar58, + CONCAT11((char)uVar57, + (char)uVar56)))))) + ); + auVar46[8] = (char)uVar17; + auVar46[9] = (char)uVar18; + auVar46[10] = (char)uVar19; + auVar46[0xb] = (char)uVar22; + auVar46[0xc] = (char)uVar45; + auVar46[0xd] = (char)uVar48; + auVar46[0xe] = (char)uVar49; + auVar46[0xf] = (char)uVar50; + *(long *)(pcVar29 + 8) = auVar46._8_8_; + *(undefined8 *)pcVar29 = auVar46._0_8_; + pbVar28 = pbVar28 + 0x10; + pcVar29 = pcVar29 + 0x10; + pbVar32 = pbVar32 + 0x10; + } while (uVar34 < uVar1); + iVar26 = iVar9 + uVar1 * 0x10; + if (uVar10 + 1 == uVar1 * 4) goto LAB_00231178; + } + lVar33 = (long)iVar26; + lVar38 = lVar33 + 1; + lVar42 = lVar33 + 2; + lVar4 = lVar33 + 3; + iVar14 = (uint)*(byte *)(param_1 + lVar33) - (uint)*(byte *)(param_3 + lVar33); + iVar15 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar33) = ((byte)iVar14 ^ bVar43) - bVar43; + bVar43 = (byte)(iVar15 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar15 ^ bVar43) - bVar43; + iVar14 = (uint)*(byte *)(param_1 + lVar42) - (uint)*(byte *)(param_3 + lVar42); + iVar15 = (uint)*(byte *)(param_1 + lVar4) - (uint)*(byte *)(param_3 + lVar4); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar42) = ((byte)iVar14 ^ bVar43) - bVar43; + bVar43 = (byte)(iVar15 >> 0x1f); + *(byte *)(param_5 + lVar4) = ((byte)iVar15 ^ bVar43) - bVar43; + if (iVar26 + 4 < iVar12) { + lVar33 = (long)(iVar26 + 4); + lVar38 = lVar33 + 1; + lVar42 = lVar33 + 2; + lVar4 = lVar33 + 3; + iVar14 = (uint)*(byte *)(param_1 + lVar33) - (uint)*(byte *)(param_3 + lVar33); + iVar15 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar33) = ((byte)iVar14 ^ bVar43) - bVar43; + bVar43 = (byte)(iVar15 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar15 ^ bVar43) - bVar43; + iVar14 = (uint)*(byte *)(param_1 + lVar42) - (uint)*(byte *)(param_3 + lVar42); + iVar15 = (uint)*(byte *)(param_1 + lVar4) - (uint)*(byte *)(param_3 + lVar4); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar42) = ((byte)iVar14 ^ bVar43) - bVar43; + bVar43 = (byte)(iVar15 >> 0x1f); + *(byte *)(param_5 + lVar4) = ((byte)iVar15 ^ bVar43) - bVar43; + if (iVar26 + 8 < iVar12) { + lVar33 = (long)(iVar26 + 8); + lVar38 = lVar33 + 1; + lVar42 = lVar33 + 2; + lVar4 = lVar33 + 3; + iVar26 = (uint)*(byte *)(param_1 + lVar33) - (uint)*(byte *)(param_3 + lVar33); + iVar14 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar26 >> 0x1f); + *(byte *)(param_5 + lVar33) = ((byte)iVar26 ^ bVar43) - bVar43; + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + iVar26 = (uint)*(byte *)(param_1 + lVar42) - (uint)*(byte *)(param_3 + lVar42); + iVar14 = (uint)*(byte *)(param_1 + lVar4) - (uint)*(byte *)(param_3 + lVar4); + bVar43 = (byte)(iVar26 >> 0x1f); + *(byte *)(param_5 + lVar42) = ((byte)iVar26 ^ bVar43) - bVar43; + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar4) = ((byte)iVar14 ^ bVar43) - bVar43; + } + } + } + } +LAB_00231178: + if (iVar16 < iVar8) { + lVar42 = (long)iVar16; + uVar34 = iVar8 - iVar16; + lVar38 = lVar42 + 0x10; + pbVar28 = (byte *)(param_1 + lVar42); + pcVar29 = (char *)(param_5 + lVar42); + pbVar32 = (byte *)(param_3 + lVar42); + if ((pbVar28 < (byte *)(param_5 + lVar38) && pcVar29 < (char *)(param_1 + lVar38) || + pbVar32 < (byte *)(param_5 + lVar38) && pcVar29 < (char *)(param_3 + lVar38)) || + (uVar34 < 0x12)) { + lVar38 = 0; + do { + bVar43 = (byte)((int)((uint)pbVar28[lVar38] - (uint)pbVar32[lVar38]) >> 0x1f); + pcVar29[lVar38] = + ((byte)((uint)pbVar28[lVar38] - (uint)pbVar32[lVar38]) ^ bVar43) - bVar43; + lVar38 = lVar38 + 1; + } while (lVar38 != (ulong)(uint)((iVar8 + -1) - iVar16) + 1); + } + else { + uVar7 = -(int)pbVar28 & 0xf; + if (uVar34 < uVar7) { + uVar7 = uVar34; + } + iVar26 = iVar16; + if (uVar7 != 0) { + iVar26 = iVar16 + 1; + bVar43 = (byte)((int)((uint)*pbVar28 - (uint)*pbVar32) >> 0x1f); + *pcVar29 = ((byte)((uint)*pbVar28 - (uint)*pbVar32) ^ bVar43) - bVar43; + if (uVar7 != 1) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 2; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 2) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 3; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 3) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 4; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 4) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 5; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 5) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 6; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38) + ; + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 6) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 7; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 7) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 8; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 8) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 9; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 9) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 10; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 10) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 0xb; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 0xb) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 0xc; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 0xc) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 0xd; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43; + if (uVar7 != 0xd) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 0xe; + iVar14 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar14 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar14 ^ bVar43) - bVar43 + ; + if (uVar7 == 0xf) { + lVar38 = (long)iVar26; + iVar26 = iVar16 + 0xf; + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = + ((byte)iVar16 ^ bVar43) - bVar43; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar2 = ((uVar34 - uVar7) - 0x10 >> 4) + 1; + iVar16 = uVar2 * 0x10; + if (0xe < (uVar34 - 1) - uVar7) { + lVar42 = lVar42 + (ulong)uVar7; + uVar36 = 0; + puVar30 = (undefined8 *)(param_5 + lVar42); + puVar41 = (undefined8 *)(param_3 + lVar42); + pbVar28 = (byte *)(param_1 + lVar42); + do { + uVar36 = uVar36 + 1; + uVar21 = puVar41[1]; + uVar20 = *puVar41; + bVar43 = (byte)((ulong)uVar20 >> 0x28); + bVar44 = (byte)((ulong)uVar21 >> 0x28); + uVar56 = MP_INT_ABS((CONCAT12(pbVar28[1],(ushort)*pbVar28) & 0xffff) - + (uint)(byte)uVar20); + uVar57 = MP_INT_ABS((uint)pbVar28[1] - (uint)(byte)((ulong)uVar20 >> 8)); + uVar58 = MP_INT_ABS((uint)pbVar28[2] - (uint)(byte)((ulong)uVar20 >> 0x10)); + uVar59 = MP_INT_ABS((uint)pbVar28[3] - (uint)(byte)((ulong)uVar20 >> 0x18)); + uVar51 = MP_INT_ABS((uint)pbVar28[4] - + (CONCAT12(bVar43,(ushort)(byte)((ulong)uVar20 >> 0x20)) & 0xffff)) + ; + uVar53 = MP_INT_ABS((uint)pbVar28[5] - (uint)bVar43); + uVar54 = MP_INT_ABS((uint)pbVar28[6] - (uint)(byte)((ulong)uVar20 >> 0x30)); + uVar55 = MP_INT_ABS((uint)pbVar28[7] - (uint)(byte)((ulong)uVar20 >> 0x38)); + uVar17 = MP_INT_ABS((CONCAT12(pbVar28[9],(ushort)pbVar28[8]) & 0xffff) - + (uint)(byte)uVar21); + uVar18 = MP_INT_ABS((uint)pbVar28[9] - (uint)(byte)((ulong)uVar21 >> 8)); + uVar19 = MP_INT_ABS((uint)pbVar28[10] - (uint)(byte)((ulong)uVar21 >> 0x10)); + uVar22 = MP_INT_ABS((uint)pbVar28[0xb] - (uint)(byte)((ulong)uVar21 >> 0x18)); + uVar45 = MP_INT_ABS((uint)pbVar28[0xc] - + (CONCAT12(bVar44,(ushort)(byte)((ulong)uVar21 >> 0x20)) & 0xffff)) + ; + uVar48 = MP_INT_ABS((uint)pbVar28[0xd] - (uint)bVar44); + uVar49 = MP_INT_ABS((uint)pbVar28[0xe] - (uint)(byte)((ulong)uVar21 >> 0x30)); + uVar50 = MP_INT_ABS((uint)pbVar28[0xf] - (uint)(byte)((ulong)uVar21 >> 0x38)); + auVar47._0_8_ = + CONCAT17((char)uVar55, + CONCAT16((char)uVar54, + CONCAT15((char)uVar53, + CONCAT14((char)uVar51, + CONCAT13((char)uVar59, + CONCAT12((char)uVar58, + CONCAT11((char)uVar57, + (char)uVar56)))))) + ); + auVar47[8] = (char)uVar17; + auVar47[9] = (char)uVar18; + auVar47[10] = (char)uVar19; + auVar47[0xb] = (char)uVar22; + auVar47[0xc] = (char)uVar45; + auVar47[0xd] = (char)uVar48; + auVar47[0xe] = (char)uVar49; + auVar47[0xf] = (char)uVar50; + puVar30[1] = auVar47._8_8_; + *puVar30 = auVar47._0_8_; + puVar30 = puVar30 + 2; + puVar41 = puVar41 + 2; + pbVar28 = pbVar28 + 0x10; + } while (uVar36 < uVar2); + iVar26 = iVar26 + iVar16; + if (uVar34 - uVar7 == iVar16) goto LAB_002317a4; + } + lVar38 = (long)iVar26; + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 1 < iVar8) { + lVar38 = (long)(iVar26 + 1); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 2 < iVar8) { + lVar38 = (long)(iVar26 + 2); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 3 < iVar8) { + lVar38 = (long)(iVar26 + 3); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 4 < iVar8) { + lVar38 = (long)(iVar26 + 4); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 5 < iVar8) { + lVar38 = (long)(iVar26 + 5); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 6 < iVar8) { + lVar38 = (long)(iVar26 + 6); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - (uint)*(byte *)(param_3 + lVar38) + ; + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 7 < iVar8) { + lVar38 = (long)(iVar26 + 7); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 8 < iVar8) { + lVar38 = (long)(iVar26 + 8); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 9 < iVar8) { + lVar38 = (long)(iVar26 + 9); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 10 < iVar8) { + lVar38 = (long)(iVar26 + 10); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 0xb < iVar8) { + lVar38 = (long)(iVar26 + 0xb); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 0xc < iVar8) { + lVar38 = (long)(iVar26 + 0xc); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 0xd < iVar8) { + lVar38 = (long)(iVar26 + 0xd); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43; + if (iVar26 + 0xe < iVar8) { + lVar38 = (long)(iVar26 + 0xe); + iVar16 = (uint)*(byte *)(param_1 + lVar38) - + (uint)*(byte *)(param_3 + lVar38); + bVar43 = (byte)(iVar16 >> 0x1f); + *(byte *)(param_5 + lVar38) = ((byte)iVar16 ^ bVar43) - bVar43 + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002317a4: + iVar39 = iVar39 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar39 != 0); + } + return; +} + + +================================================================== + +### FUNC 002318c0 (2040 bytes) name=FUN_002318c0 + +void FUN_002318c0(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + long lVar3; + byte *pbVar4; + int iVar5; + uint uVar6; + int iVar7; + byte bVar8; + byte bVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + undefined8 *puVar18; + byte *pbVar19; + undefined8 *puVar20; + byte *pbVar21; + undefined8 *puVar22; + byte *pbVar23; + uint uVar24; + uint uVar25; + long lVar26; + long lVar27; + int iVar28; + long lVar29; + long lVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + undefined8 uVar37; + undefined8 uVar38; + + iVar28 = param_7[1]; + iVar7 = *param_7; + if (iVar28 != 0) { + uVar13 = iVar7 - 0x20; + iVar10 = ((uVar13 >> 5) + 1) * 0x20; + if ((int)uVar13 < 0) { + iVar10 = 0; + } + iVar14 = iVar7 + -3; + uVar15 = (iVar7 + -4) - iVar10; + lVar29 = (long)iVar10; + uVar12 = uVar15 >> 2; + uVar1 = (uVar12 - 3 >> 2) + 1; + iVar5 = iVar10 + 4 + uVar12 * 4; + lVar2 = lVar29 + 0x40; + do { + if (-1 < (int)uVar13) { + puVar18 = (undefined8 *)(param_1 + 0x10); + puVar22 = (undefined8 *)(param_3 + 0x10); + puVar20 = (undefined8 *)(param_5 + 0x10); + do { + uVar36 = puVar18[1]; + uVar35 = *puVar18; + uVar38 = puVar18[-1]; + uVar37 = puVar18[-2]; + puVar18 = puVar18 + 4; + uVar34 = puVar22[-1]; + uVar33 = puVar22[-2]; + uVar32 = puVar22[1]; + uVar31 = *puVar22; + puVar22 = puVar22 + 4; + puVar20[-1] = CONCAT17((byte)((ulong)uVar34 >> 0x38) & (byte)((ulong)uVar38 >> 0x38), + CONCAT16((byte)((ulong)uVar34 >> 0x30) & + (byte)((ulong)uVar38 >> 0x30), + CONCAT15((byte)((ulong)uVar34 >> 0x28) & + (byte)((ulong)uVar38 >> 0x28), + CONCAT14((byte)((ulong)uVar34 >> 0x20) & + (byte)((ulong)uVar38 >> 0x20), + CONCAT13((byte)((ulong)uVar34 >> 0x18) & + (byte)((ulong)uVar38 >> 0x18), + CONCAT12((byte)((ulong)uVar34 + >> 0x10) & + (byte)((ulong)uVar38 + >> 0x10), + CONCAT11((byte)((ulong + )uVar34 >> 8) & (byte)((ulong)uVar38 >> 8), + (byte)uVar34 & (byte)uVar38))))))); + puVar20[-2] = CONCAT17((byte)((ulong)uVar33 >> 0x38) & (byte)((ulong)uVar37 >> 0x38), + CONCAT16((byte)((ulong)uVar33 >> 0x30) & + (byte)((ulong)uVar37 >> 0x30), + CONCAT15((byte)((ulong)uVar33 >> 0x28) & + (byte)((ulong)uVar37 >> 0x28), + CONCAT14((byte)((ulong)uVar33 >> 0x20) & + (byte)((ulong)uVar37 >> 0x20), + CONCAT13((byte)((ulong)uVar33 >> 0x18) & + (byte)((ulong)uVar37 >> 0x18), + CONCAT12((byte)((ulong)uVar33 + >> 0x10) & + (byte)((ulong)uVar37 + >> 0x10), + CONCAT11((byte)((ulong + )uVar33 >> 8) & (byte)((ulong)uVar37 >> 8), + (byte)uVar33 & (byte)uVar37))))))); + puVar20[1] = CONCAT17((byte)((ulong)uVar32 >> 0x38) & (byte)((ulong)uVar36 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) & + (byte)((ulong)uVar36 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) & + (byte)((ulong)uVar36 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) & + (byte)((ulong)uVar36 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18) & + (byte)((ulong)uVar36 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> + 0x10) & + (byte)((ulong)uVar36 >> + 0x10), + CONCAT11((byte)((ulong) + uVar32 >> 8) & (byte)((ulong)uVar36 >> 8), + (byte)uVar32 & (byte)uVar36))))))); + *puVar20 = CONCAT17((byte)((ulong)uVar31 >> 0x38) & (byte)((ulong)uVar35 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) & (byte)((ulong)uVar35 >> 0x30) + ,CONCAT15((byte)((ulong)uVar31 >> 0x28) & + (byte)((ulong)uVar35 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) & + (byte)((ulong)uVar35 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) & + (byte)((ulong)uVar35 >> 0x18), + CONCAT12((byte)((ulong)uVar31 >> + 0x10) & + (byte)((ulong)uVar35 >> + 0x10), + CONCAT11((byte)((ulong) + uVar31 >> 8) & (byte)((ulong)uVar35 >> 8), + (byte)uVar31 & (byte)uVar35))))))); + puVar20 = puVar20 + 4; + } while (puVar18 != (undefined8 *)(param_1 + (ulong)(uVar13 >> 5) * 0x20 + 0x30)); + } + iVar11 = iVar10; + if (iVar10 < iVar14) { + pbVar19 = (byte *)(param_1 + lVar29); + pbVar21 = (byte *)(param_5 + lVar29); + pbVar23 = (byte *)(param_3 + lVar29); + iVar11 = iVar5; + if ((pbVar19 < (byte *)(param_5 + lVar2) && pbVar21 < (byte *)(param_1 + lVar2) || + pbVar23 < (byte *)(param_5 + lVar2) && pbVar21 < (byte *)(param_3 + lVar2)) || + (uVar12 + 1 < 5)) { + do { + pbVar4 = pbVar19 + 4; + bVar8 = *pbVar23; + bVar9 = *pbVar19; + pbVar21[1] = pbVar23[1] & pbVar19[1]; + *pbVar21 = bVar8 & bVar9; + bVar8 = pbVar19[2]; + bVar9 = pbVar23[2]; + pbVar21[3] = pbVar23[3] & pbVar19[3]; + pbVar21[2] = bVar9 & bVar8; + pbVar19 = pbVar4; + pbVar21 = pbVar21 + 4; + pbVar23 = pbVar23 + 4; + } while (pbVar4 != (byte *)(param_1 + lVar29 + 4 + (ulong)uVar12 * 4)); + } + else { + iVar17 = iVar10; + if (0xb < uVar15) { + uVar24 = 0; + do { + uVar32 = *(undefined8 *)(pbVar23 + 8); + uVar31 = *(undefined8 *)pbVar23; + uVar24 = uVar24 + 1; + uVar34 = *(undefined8 *)(pbVar19 + 8); + uVar33 = *(undefined8 *)pbVar19; + *(ulong *)(pbVar21 + 8) = + CONCAT17((byte)((ulong)uVar32 >> 0x38) & (byte)((ulong)uVar34 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) & (byte)((ulong)uVar34 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) & + (byte)((ulong)uVar34 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) & + (byte)((ulong)uVar34 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18) & + (byte)((ulong)uVar34 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> + 0x10) & + (byte)((ulong)uVar34 >> + 0x10), + CONCAT11((byte)((ulong) + uVar32 >> 8) & (byte)((ulong)uVar34 >> 8), + (byte)uVar32 & (byte)uVar34))))))); + *(ulong *)pbVar21 = + CONCAT17((byte)((ulong)uVar31 >> 0x38) & (byte)((ulong)uVar33 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) & (byte)((ulong)uVar33 >> 0x30), + CONCAT15((byte)((ulong)uVar31 >> 0x28) & + (byte)((ulong)uVar33 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) & + (byte)((ulong)uVar33 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) & + (byte)((ulong)uVar33 >> 0x18), + CONCAT12((byte)((ulong)uVar31 >> + 0x10) & + (byte)((ulong)uVar33 >> + 0x10), + CONCAT11((byte)((ulong) + uVar31 >> 8) & (byte)((ulong)uVar33 >> 8), + (byte)uVar31 & (byte)uVar33))))))); + pbVar19 = pbVar19 + 0x10; + pbVar21 = pbVar21 + 0x10; + pbVar23 = pbVar23 + 0x10; + } while (uVar24 < uVar1); + iVar17 = iVar10 + uVar1 * 0x10; + if (uVar12 + 1 == uVar1 * 4) goto LAB_00231b58; + } + lVar26 = (long)iVar17; + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = *(byte *)(param_3 + lVar26) & *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 & bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = *(byte *)(param_3 + lVar30) & *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 & bVar9; + if (iVar17 + 4 < iVar14) { + lVar26 = (long)(iVar17 + 4); + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = *(byte *)(param_3 + lVar26) & *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 & bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = *(byte *)(param_3 + lVar30) & *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 & bVar9; + if (iVar17 + 8 < iVar14) { + lVar26 = (long)(iVar17 + 8); + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = + *(byte *)(param_3 + lVar26) & *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 & bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = + *(byte *)(param_3 + lVar30) & *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 & bVar9; + } + } + } + } +LAB_00231b58: + if (iVar11 < iVar7) { + lVar30 = (long)iVar11; + uVar24 = iVar7 - iVar11; + lVar27 = lVar30 + 0x10; + pbVar19 = (byte *)(param_1 + lVar30); + pbVar21 = (byte *)(param_5 + lVar30); + pbVar23 = (byte *)(param_3 + lVar30); + if ((pbVar19 < (byte *)(param_5 + lVar27) && pbVar21 < (byte *)(param_1 + lVar27) || + pbVar23 < (byte *)(param_5 + lVar27) && pbVar21 < (byte *)(param_3 + lVar27)) || + (uVar24 < 0x14)) { + lVar27 = 0; + do { + pbVar21[lVar27] = pbVar23[lVar27] & pbVar19[lVar27]; + lVar27 = lVar27 + 1; + } while (lVar27 != (ulong)(uint)((iVar7 + -1) - iVar11) + 1); + } + else { + uVar6 = -(int)pbVar19 & 0xf; + uVar16 = uVar24; + if (uVar6 < uVar24) { + uVar16 = uVar6; + } + iVar17 = iVar11; + if (uVar16 != 0) { + iVar17 = iVar11 + 1; + *pbVar21 = *pbVar23 & *pbVar19; + if (uVar16 != 1) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 2; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 2) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 3; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 3) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 4; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 4) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 5; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 5) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 6; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 6) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 7; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 7) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 8; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 8) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 9; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 9) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 10; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 10) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xb; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 0xb) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xc; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 0xc) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xd; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (uVar16 != 0xd) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xe; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27) + ; + if (uVar16 == 0xf) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xf; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & + *(byte *)(param_1 + lVar27); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar6 = ((uVar24 - uVar16) - 0x10 >> 4) + 1; + iVar11 = uVar6 * 0x10; + if (0xe < (uVar24 - 1) - uVar16) { + lVar30 = lVar30 + (ulong)uVar16; + uVar25 = 0; + puVar18 = (undefined8 *)(param_5 + lVar30); + puVar22 = (undefined8 *)(param_3 + lVar30); + puVar20 = (undefined8 *)(param_1 + lVar30); + do { + uVar32 = puVar22[1]; + uVar31 = *puVar22; + uVar25 = uVar25 + 1; + uVar34 = puVar20[1]; + uVar33 = *puVar20; + puVar18[1] = CONCAT17((byte)((ulong)uVar32 >> 0x38) & (byte)((ulong)uVar34 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) & + (byte)((ulong)uVar34 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) & + (byte)((ulong)uVar34 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) & + (byte)((ulong)uVar34 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18 + ) & (byte)((ulong) + uVar34 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> 0x10) & + (byte)((ulong)uVar34 >> 0x10), + CONCAT11((byte)((ulong)uVar32 >> 8) & + (byte)((ulong)uVar34 >> 8), + (byte)uVar32 & (byte)uVar34))))) + )); + *puVar18 = CONCAT17((byte)((ulong)uVar31 >> 0x38) & (byte)((ulong)uVar33 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) & + (byte)((ulong)uVar33 >> 0x30), + CONCAT15((byte)((ulong)uVar31 >> 0x28) & + (byte)((ulong)uVar33 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) & + (byte)((ulong)uVar33 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) + & (byte)((ulong)uVar33 >> 0x18 + ), + CONCAT12((byte)((ulong)uVar31 + >> 0x10) & + (byte)((ulong)uVar33 + >> 0x10), + CONCAT11((byte)(( + ulong)uVar31 >> 8) & (byte)((ulong)uVar33 >> 8), + (byte)uVar31 & (byte)uVar33))))))); + puVar18 = puVar18 + 2; + puVar22 = puVar22 + 2; + puVar20 = puVar20 + 2; + } while (uVar25 < uVar6); + iVar17 = iVar17 + iVar11; + if (uVar24 - uVar16 == iVar11) goto LAB_00231fd8; + } + lVar27 = (long)iVar17; + *(byte *)(param_5 + lVar27) = *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 1 < iVar7) { + lVar27 = (long)(iVar17 + 1); + *(byte *)(param_5 + lVar27) = *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 2 < iVar7) { + lVar27 = (long)(iVar17 + 2); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 3 < iVar7) { + lVar27 = (long)(iVar17 + 3); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 4 < iVar7) { + lVar27 = (long)(iVar17 + 4); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 5 < iVar7) { + lVar27 = (long)(iVar17 + 5); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 6 < iVar7) { + lVar27 = (long)(iVar17 + 6); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 7 < iVar7) { + lVar27 = (long)(iVar17 + 7); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 8 < iVar7) { + lVar27 = (long)(iVar17 + 8); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 9 < iVar7) { + lVar27 = (long)(iVar17 + 9); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 10 < iVar7) { + lVar27 = (long)(iVar17 + 10); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 0xb < iVar7) { + lVar27 = (long)(iVar17 + 0xb); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 0xc < iVar7) { + lVar27 = (long)(iVar17 + 0xc); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 0xd < iVar7) { + lVar27 = (long)(iVar17 + 0xd); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27); + if (iVar17 + 0xe < iVar7) { + lVar27 = (long)(iVar17 + 0xe); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) & *(byte *)(param_1 + lVar27) + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00231fd8: + iVar28 = iVar28 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar28 != 0); + } + return; +} + + +================================================================== + +### FUNC 002320b8 (2040 bytes) name=FUN_002320b8 + +void FUN_002320b8(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + long lVar3; + byte *pbVar4; + int iVar5; + uint uVar6; + int iVar7; + byte bVar8; + byte bVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + undefined8 *puVar18; + byte *pbVar19; + undefined8 *puVar20; + byte *pbVar21; + undefined8 *puVar22; + byte *pbVar23; + uint uVar24; + uint uVar25; + long lVar26; + long lVar27; + int iVar28; + long lVar29; + long lVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + undefined8 uVar37; + undefined8 uVar38; + + iVar28 = param_7[1]; + iVar7 = *param_7; + if (iVar28 != 0) { + uVar13 = iVar7 - 0x20; + iVar10 = ((uVar13 >> 5) + 1) * 0x20; + if ((int)uVar13 < 0) { + iVar10 = 0; + } + iVar14 = iVar7 + -3; + uVar15 = (iVar7 + -4) - iVar10; + lVar29 = (long)iVar10; + uVar12 = uVar15 >> 2; + uVar1 = (uVar12 - 3 >> 2) + 1; + iVar5 = iVar10 + 4 + uVar12 * 4; + lVar2 = lVar29 + 0x40; + do { + if (-1 < (int)uVar13) { + puVar18 = (undefined8 *)(param_1 + 0x10); + puVar22 = (undefined8 *)(param_3 + 0x10); + puVar20 = (undefined8 *)(param_5 + 0x10); + do { + uVar36 = puVar18[1]; + uVar35 = *puVar18; + uVar38 = puVar18[-1]; + uVar37 = puVar18[-2]; + puVar18 = puVar18 + 4; + uVar34 = puVar22[-1]; + uVar33 = puVar22[-2]; + uVar32 = puVar22[1]; + uVar31 = *puVar22; + puVar22 = puVar22 + 4; + puVar20[-1] = CONCAT17((byte)((ulong)uVar34 >> 0x38) | (byte)((ulong)uVar38 >> 0x38), + CONCAT16((byte)((ulong)uVar34 >> 0x30) | + (byte)((ulong)uVar38 >> 0x30), + CONCAT15((byte)((ulong)uVar34 >> 0x28) | + (byte)((ulong)uVar38 >> 0x28), + CONCAT14((byte)((ulong)uVar34 >> 0x20) | + (byte)((ulong)uVar38 >> 0x20), + CONCAT13((byte)((ulong)uVar34 >> 0x18) | + (byte)((ulong)uVar38 >> 0x18), + CONCAT12((byte)((ulong)uVar34 + >> 0x10) | + (byte)((ulong)uVar38 + >> 0x10), + CONCAT11((byte)((ulong + )uVar34 >> 8) | (byte)((ulong)uVar38 >> 8), + (byte)uVar34 | (byte)uVar38))))))); + puVar20[-2] = CONCAT17((byte)((ulong)uVar33 >> 0x38) | (byte)((ulong)uVar37 >> 0x38), + CONCAT16((byte)((ulong)uVar33 >> 0x30) | + (byte)((ulong)uVar37 >> 0x30), + CONCAT15((byte)((ulong)uVar33 >> 0x28) | + (byte)((ulong)uVar37 >> 0x28), + CONCAT14((byte)((ulong)uVar33 >> 0x20) | + (byte)((ulong)uVar37 >> 0x20), + CONCAT13((byte)((ulong)uVar33 >> 0x18) | + (byte)((ulong)uVar37 >> 0x18), + CONCAT12((byte)((ulong)uVar33 + >> 0x10) | + (byte)((ulong)uVar37 + >> 0x10), + CONCAT11((byte)((ulong + )uVar33 >> 8) | (byte)((ulong)uVar37 >> 8), + (byte)uVar33 | (byte)uVar37))))))); + puVar20[1] = CONCAT17((byte)((ulong)uVar32 >> 0x38) | (byte)((ulong)uVar36 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) | + (byte)((ulong)uVar36 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) | + (byte)((ulong)uVar36 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) | + (byte)((ulong)uVar36 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18) | + (byte)((ulong)uVar36 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> + 0x10) | + (byte)((ulong)uVar36 >> + 0x10), + CONCAT11((byte)((ulong) + uVar32 >> 8) | (byte)((ulong)uVar36 >> 8), + (byte)uVar32 | (byte)uVar36))))))); + *puVar20 = CONCAT17((byte)((ulong)uVar31 >> 0x38) | (byte)((ulong)uVar35 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) | (byte)((ulong)uVar35 >> 0x30) + ,CONCAT15((byte)((ulong)uVar31 >> 0x28) | + (byte)((ulong)uVar35 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) | + (byte)((ulong)uVar35 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) | + (byte)((ulong)uVar35 >> 0x18), + CONCAT12((byte)((ulong)uVar31 >> + 0x10) | + (byte)((ulong)uVar35 >> + 0x10), + CONCAT11((byte)((ulong) + uVar31 >> 8) | (byte)((ulong)uVar35 >> 8), + (byte)uVar31 | (byte)uVar35))))))); + puVar20 = puVar20 + 4; + } while (puVar18 != (undefined8 *)(param_1 + (ulong)(uVar13 >> 5) * 0x20 + 0x30)); + } + iVar11 = iVar10; + if (iVar10 < iVar14) { + pbVar19 = (byte *)(param_1 + lVar29); + pbVar21 = (byte *)(param_5 + lVar29); + pbVar23 = (byte *)(param_3 + lVar29); + iVar11 = iVar5; + if ((pbVar19 < (byte *)(param_5 + lVar2) && pbVar21 < (byte *)(param_1 + lVar2) || + pbVar23 < (byte *)(param_5 + lVar2) && pbVar21 < (byte *)(param_3 + lVar2)) || + (uVar12 + 1 < 5)) { + do { + pbVar4 = pbVar19 + 4; + bVar8 = *pbVar23; + bVar9 = *pbVar19; + pbVar21[1] = pbVar23[1] | pbVar19[1]; + *pbVar21 = bVar8 | bVar9; + bVar8 = pbVar19[2]; + bVar9 = pbVar23[2]; + pbVar21[3] = pbVar23[3] | pbVar19[3]; + pbVar21[2] = bVar9 | bVar8; + pbVar19 = pbVar4; + pbVar21 = pbVar21 + 4; + pbVar23 = pbVar23 + 4; + } while (pbVar4 != (byte *)(param_1 + lVar29 + 4 + (ulong)uVar12 * 4)); + } + else { + iVar17 = iVar10; + if (0xb < uVar15) { + uVar24 = 0; + do { + uVar32 = *(undefined8 *)(pbVar23 + 8); + uVar31 = *(undefined8 *)pbVar23; + uVar24 = uVar24 + 1; + uVar34 = *(undefined8 *)(pbVar19 + 8); + uVar33 = *(undefined8 *)pbVar19; + *(ulong *)(pbVar21 + 8) = + CONCAT17((byte)((ulong)uVar32 >> 0x38) | (byte)((ulong)uVar34 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) | (byte)((ulong)uVar34 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) | + (byte)((ulong)uVar34 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) | + (byte)((ulong)uVar34 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18) | + (byte)((ulong)uVar34 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> + 0x10) | + (byte)((ulong)uVar34 >> + 0x10), + CONCAT11((byte)((ulong) + uVar32 >> 8) | (byte)((ulong)uVar34 >> 8), + (byte)uVar32 | (byte)uVar34))))))); + *(ulong *)pbVar21 = + CONCAT17((byte)((ulong)uVar31 >> 0x38) | (byte)((ulong)uVar33 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) | (byte)((ulong)uVar33 >> 0x30), + CONCAT15((byte)((ulong)uVar31 >> 0x28) | + (byte)((ulong)uVar33 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) | + (byte)((ulong)uVar33 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) | + (byte)((ulong)uVar33 >> 0x18), + CONCAT12((byte)((ulong)uVar31 >> + 0x10) | + (byte)((ulong)uVar33 >> + 0x10), + CONCAT11((byte)((ulong) + uVar31 >> 8) | (byte)((ulong)uVar33 >> 8), + (byte)uVar31 | (byte)uVar33))))))); + pbVar19 = pbVar19 + 0x10; + pbVar21 = pbVar21 + 0x10; + pbVar23 = pbVar23 + 0x10; + } while (uVar24 < uVar1); + iVar17 = iVar10 + uVar1 * 0x10; + if (uVar12 + 1 == uVar1 * 4) goto LAB_00232350; + } + lVar26 = (long)iVar17; + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = *(byte *)(param_3 + lVar26) | *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 | bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = *(byte *)(param_3 + lVar30) | *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 | bVar9; + if (iVar17 + 4 < iVar14) { + lVar26 = (long)(iVar17 + 4); + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = *(byte *)(param_3 + lVar26) | *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 | bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = *(byte *)(param_3 + lVar30) | *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 | bVar9; + if (iVar17 + 8 < iVar14) { + lVar26 = (long)(iVar17 + 8); + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = + *(byte *)(param_3 + lVar26) | *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 | bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = + *(byte *)(param_3 + lVar30) | *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 | bVar9; + } + } + } + } +LAB_00232350: + if (iVar11 < iVar7) { + lVar30 = (long)iVar11; + uVar24 = iVar7 - iVar11; + lVar27 = lVar30 + 0x10; + pbVar19 = (byte *)(param_1 + lVar30); + pbVar21 = (byte *)(param_5 + lVar30); + pbVar23 = (byte *)(param_3 + lVar30); + if ((pbVar19 < (byte *)(param_5 + lVar27) && pbVar21 < (byte *)(param_1 + lVar27) || + pbVar23 < (byte *)(param_5 + lVar27) && pbVar21 < (byte *)(param_3 + lVar27)) || + (uVar24 < 0x14)) { + lVar27 = 0; + do { + pbVar21[lVar27] = pbVar23[lVar27] | pbVar19[lVar27]; + lVar27 = lVar27 + 1; + } while (lVar27 != (ulong)(uint)((iVar7 + -1) - iVar11) + 1); + } + else { + uVar6 = -(int)pbVar19 & 0xf; + uVar16 = uVar24; + if (uVar6 < uVar24) { + uVar16 = uVar6; + } + iVar17 = iVar11; + if (uVar16 != 0) { + iVar17 = iVar11 + 1; + *pbVar21 = *pbVar23 | *pbVar19; + if (uVar16 != 1) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 2; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 2) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 3; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 3) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 4; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 4) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 5; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 5) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 6; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 6) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 7; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 7) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 8; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 8) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 9; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 9) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 10; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 10) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xb; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 0xb) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xc; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 0xc) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xd; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (uVar16 != 0xd) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xe; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27) + ; + if (uVar16 == 0xf) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xf; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | + *(byte *)(param_1 + lVar27); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar6 = ((uVar24 - uVar16) - 0x10 >> 4) + 1; + iVar11 = uVar6 * 0x10; + if (0xe < (uVar24 - 1) - uVar16) { + lVar30 = lVar30 + (ulong)uVar16; + uVar25 = 0; + puVar18 = (undefined8 *)(param_5 + lVar30); + puVar22 = (undefined8 *)(param_3 + lVar30); + puVar20 = (undefined8 *)(param_1 + lVar30); + do { + uVar32 = puVar22[1]; + uVar31 = *puVar22; + uVar25 = uVar25 + 1; + uVar34 = puVar20[1]; + uVar33 = *puVar20; + puVar18[1] = CONCAT17((byte)((ulong)uVar32 >> 0x38) | (byte)((ulong)uVar34 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) | + (byte)((ulong)uVar34 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) | + (byte)((ulong)uVar34 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) | + (byte)((ulong)uVar34 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18 + ) | (byte)((ulong) + uVar34 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> 0x10) | + (byte)((ulong)uVar34 >> 0x10), + CONCAT11((byte)((ulong)uVar32 >> 8) | + (byte)((ulong)uVar34 >> 8), + (byte)uVar32 | (byte)uVar34))))) + )); + *puVar18 = CONCAT17((byte)((ulong)uVar31 >> 0x38) | (byte)((ulong)uVar33 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) | + (byte)((ulong)uVar33 >> 0x30), + CONCAT15((byte)((ulong)uVar31 >> 0x28) | + (byte)((ulong)uVar33 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) | + (byte)((ulong)uVar33 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) + | (byte)((ulong)uVar33 >> 0x18 + ), + CONCAT12((byte)((ulong)uVar31 + >> 0x10) | + (byte)((ulong)uVar33 + >> 0x10), + CONCAT11((byte)(( + ulong)uVar31 >> 8) | (byte)((ulong)uVar33 >> 8), + (byte)uVar31 | (byte)uVar33))))))); + puVar18 = puVar18 + 2; + puVar22 = puVar22 + 2; + puVar20 = puVar20 + 2; + } while (uVar25 < uVar6); + iVar17 = iVar17 + iVar11; + if (uVar24 - uVar16 == iVar11) goto LAB_002327d0; + } + lVar27 = (long)iVar17; + *(byte *)(param_5 + lVar27) = *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 1 < iVar7) { + lVar27 = (long)(iVar17 + 1); + *(byte *)(param_5 + lVar27) = *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 2 < iVar7) { + lVar27 = (long)(iVar17 + 2); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 3 < iVar7) { + lVar27 = (long)(iVar17 + 3); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 4 < iVar7) { + lVar27 = (long)(iVar17 + 4); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 5 < iVar7) { + lVar27 = (long)(iVar17 + 5); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 6 < iVar7) { + lVar27 = (long)(iVar17 + 6); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 7 < iVar7) { + lVar27 = (long)(iVar17 + 7); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 8 < iVar7) { + lVar27 = (long)(iVar17 + 8); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 9 < iVar7) { + lVar27 = (long)(iVar17 + 9); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 10 < iVar7) { + lVar27 = (long)(iVar17 + 10); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 0xb < iVar7) { + lVar27 = (long)(iVar17 + 0xb); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 0xc < iVar7) { + lVar27 = (long)(iVar17 + 0xc); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 0xd < iVar7) { + lVar27 = (long)(iVar17 + 0xd); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27); + if (iVar17 + 0xe < iVar7) { + lVar27 = (long)(iVar17 + 0xe); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) | *(byte *)(param_1 + lVar27) + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002327d0: + iVar28 = iVar28 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar28 != 0); + } + return; +} + + +================================================================== + +### FUNC 002328b0 (2040 bytes) name=FUN_002328b0 + +void FUN_002328b0(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + long lVar3; + byte *pbVar4; + int iVar5; + uint uVar6; + int iVar7; + byte bVar8; + byte bVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + undefined8 *puVar18; + byte *pbVar19; + undefined8 *puVar20; + byte *pbVar21; + undefined8 *puVar22; + byte *pbVar23; + uint uVar24; + uint uVar25; + long lVar26; + long lVar27; + int iVar28; + long lVar29; + long lVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + undefined8 uVar37; + undefined8 uVar38; + + iVar28 = param_7[1]; + iVar7 = *param_7; + if (iVar28 != 0) { + uVar13 = iVar7 - 0x20; + iVar10 = ((uVar13 >> 5) + 1) * 0x20; + if ((int)uVar13 < 0) { + iVar10 = 0; + } + iVar14 = iVar7 + -3; + uVar15 = (iVar7 + -4) - iVar10; + lVar29 = (long)iVar10; + uVar12 = uVar15 >> 2; + uVar1 = (uVar12 - 3 >> 2) + 1; + iVar5 = iVar10 + 4 + uVar12 * 4; + lVar2 = lVar29 + 0x40; + do { + if (-1 < (int)uVar13) { + puVar18 = (undefined8 *)(param_1 + 0x10); + puVar22 = (undefined8 *)(param_3 + 0x10); + puVar20 = (undefined8 *)(param_5 + 0x10); + do { + uVar36 = puVar18[1]; + uVar35 = *puVar18; + uVar38 = puVar18[-1]; + uVar37 = puVar18[-2]; + puVar18 = puVar18 + 4; + uVar34 = puVar22[-1]; + uVar33 = puVar22[-2]; + uVar32 = puVar22[1]; + uVar31 = *puVar22; + puVar22 = puVar22 + 4; + puVar20[-1] = CONCAT17((byte)((ulong)uVar34 >> 0x38) ^ (byte)((ulong)uVar38 >> 0x38), + CONCAT16((byte)((ulong)uVar34 >> 0x30) ^ + (byte)((ulong)uVar38 >> 0x30), + CONCAT15((byte)((ulong)uVar34 >> 0x28) ^ + (byte)((ulong)uVar38 >> 0x28), + CONCAT14((byte)((ulong)uVar34 >> 0x20) ^ + (byte)((ulong)uVar38 >> 0x20), + CONCAT13((byte)((ulong)uVar34 >> 0x18) ^ + (byte)((ulong)uVar38 >> 0x18), + CONCAT12((byte)((ulong)uVar34 + >> 0x10) ^ + (byte)((ulong)uVar38 + >> 0x10), + CONCAT11((byte)((ulong + )uVar34 >> 8) ^ (byte)((ulong)uVar38 >> 8), + (byte)uVar34 ^ (byte)uVar38))))))); + puVar20[-2] = CONCAT17((byte)((ulong)uVar33 >> 0x38) ^ (byte)((ulong)uVar37 >> 0x38), + CONCAT16((byte)((ulong)uVar33 >> 0x30) ^ + (byte)((ulong)uVar37 >> 0x30), + CONCAT15((byte)((ulong)uVar33 >> 0x28) ^ + (byte)((ulong)uVar37 >> 0x28), + CONCAT14((byte)((ulong)uVar33 >> 0x20) ^ + (byte)((ulong)uVar37 >> 0x20), + CONCAT13((byte)((ulong)uVar33 >> 0x18) ^ + (byte)((ulong)uVar37 >> 0x18), + CONCAT12((byte)((ulong)uVar33 + >> 0x10) ^ + (byte)((ulong)uVar37 + >> 0x10), + CONCAT11((byte)((ulong + )uVar33 >> 8) ^ (byte)((ulong)uVar37 >> 8), + (byte)uVar33 ^ (byte)uVar37))))))); + puVar20[1] = CONCAT17((byte)((ulong)uVar32 >> 0x38) ^ (byte)((ulong)uVar36 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) ^ + (byte)((ulong)uVar36 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) ^ + (byte)((ulong)uVar36 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) ^ + (byte)((ulong)uVar36 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18) ^ + (byte)((ulong)uVar36 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> + 0x10) ^ + (byte)((ulong)uVar36 >> + 0x10), + CONCAT11((byte)((ulong) + uVar32 >> 8) ^ (byte)((ulong)uVar36 >> 8), + (byte)uVar32 ^ (byte)uVar36))))))); + *puVar20 = CONCAT17((byte)((ulong)uVar31 >> 0x38) ^ (byte)((ulong)uVar35 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) ^ (byte)((ulong)uVar35 >> 0x30) + ,CONCAT15((byte)((ulong)uVar31 >> 0x28) ^ + (byte)((ulong)uVar35 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) ^ + (byte)((ulong)uVar35 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) ^ + (byte)((ulong)uVar35 >> 0x18), + CONCAT12((byte)((ulong)uVar31 >> + 0x10) ^ + (byte)((ulong)uVar35 >> + 0x10), + CONCAT11((byte)((ulong) + uVar31 >> 8) ^ (byte)((ulong)uVar35 >> 8), + (byte)uVar31 ^ (byte)uVar35))))))); + puVar20 = puVar20 + 4; + } while (puVar18 != (undefined8 *)(param_1 + (ulong)(uVar13 >> 5) * 0x20 + 0x30)); + } + iVar11 = iVar10; + if (iVar10 < iVar14) { + pbVar19 = (byte *)(param_1 + lVar29); + pbVar21 = (byte *)(param_5 + lVar29); + pbVar23 = (byte *)(param_3 + lVar29); + iVar11 = iVar5; + if ((pbVar19 < (byte *)(param_5 + lVar2) && pbVar21 < (byte *)(param_1 + lVar2) || + pbVar23 < (byte *)(param_5 + lVar2) && pbVar21 < (byte *)(param_3 + lVar2)) || + (uVar12 + 1 < 5)) { + do { + pbVar4 = pbVar19 + 4; + bVar8 = *pbVar23; + bVar9 = *pbVar19; + pbVar21[1] = pbVar23[1] ^ pbVar19[1]; + *pbVar21 = bVar8 ^ bVar9; + bVar8 = pbVar19[2]; + bVar9 = pbVar23[2]; + pbVar21[3] = pbVar23[3] ^ pbVar19[3]; + pbVar21[2] = bVar9 ^ bVar8; + pbVar19 = pbVar4; + pbVar21 = pbVar21 + 4; + pbVar23 = pbVar23 + 4; + } while (pbVar4 != (byte *)(param_1 + lVar29 + 4 + (ulong)uVar12 * 4)); + } + else { + iVar17 = iVar10; + if (0xb < uVar15) { + uVar24 = 0; + do { + uVar32 = *(undefined8 *)(pbVar23 + 8); + uVar31 = *(undefined8 *)pbVar23; + uVar24 = uVar24 + 1; + uVar34 = *(undefined8 *)(pbVar19 + 8); + uVar33 = *(undefined8 *)pbVar19; + *(ulong *)(pbVar21 + 8) = + CONCAT17((byte)((ulong)uVar32 >> 0x38) ^ (byte)((ulong)uVar34 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) ^ (byte)((ulong)uVar34 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) ^ + (byte)((ulong)uVar34 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) ^ + (byte)((ulong)uVar34 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18) ^ + (byte)((ulong)uVar34 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> + 0x10) ^ + (byte)((ulong)uVar34 >> + 0x10), + CONCAT11((byte)((ulong) + uVar32 >> 8) ^ (byte)((ulong)uVar34 >> 8), + (byte)uVar32 ^ (byte)uVar34))))))); + *(ulong *)pbVar21 = + CONCAT17((byte)((ulong)uVar31 >> 0x38) ^ (byte)((ulong)uVar33 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) ^ (byte)((ulong)uVar33 >> 0x30), + CONCAT15((byte)((ulong)uVar31 >> 0x28) ^ + (byte)((ulong)uVar33 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) ^ + (byte)((ulong)uVar33 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) ^ + (byte)((ulong)uVar33 >> 0x18), + CONCAT12((byte)((ulong)uVar31 >> + 0x10) ^ + (byte)((ulong)uVar33 >> + 0x10), + CONCAT11((byte)((ulong) + uVar31 >> 8) ^ (byte)((ulong)uVar33 >> 8), + (byte)uVar31 ^ (byte)uVar33))))))); + pbVar19 = pbVar19 + 0x10; + pbVar21 = pbVar21 + 0x10; + pbVar23 = pbVar23 + 0x10; + } while (uVar24 < uVar1); + iVar17 = iVar10 + uVar1 * 0x10; + if (uVar12 + 1 == uVar1 * 4) goto LAB_00232b48; + } + lVar26 = (long)iVar17; + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = *(byte *)(param_3 + lVar26) ^ *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 ^ bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = *(byte *)(param_3 + lVar30) ^ *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 ^ bVar9; + if (iVar17 + 4 < iVar14) { + lVar26 = (long)(iVar17 + 4); + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = *(byte *)(param_3 + lVar26) ^ *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 ^ bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = *(byte *)(param_3 + lVar30) ^ *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 ^ bVar9; + if (iVar17 + 8 < iVar14) { + lVar26 = (long)(iVar17 + 8); + lVar27 = lVar26 + 1; + lVar30 = lVar26 + 2; + lVar3 = lVar26 + 3; + bVar8 = *(byte *)(param_3 + lVar27); + bVar9 = *(byte *)(param_1 + lVar27); + *(byte *)(param_5 + lVar26) = + *(byte *)(param_3 + lVar26) ^ *(byte *)(param_1 + lVar26); + *(byte *)(param_5 + lVar27) = bVar8 ^ bVar9; + bVar8 = *(byte *)(param_3 + lVar3); + bVar9 = *(byte *)(param_1 + lVar3); + *(byte *)(param_5 + lVar30) = + *(byte *)(param_3 + lVar30) ^ *(byte *)(param_1 + lVar30); + *(byte *)(param_5 + lVar3) = bVar8 ^ bVar9; + } + } + } + } +LAB_00232b48: + if (iVar11 < iVar7) { + lVar30 = (long)iVar11; + uVar24 = iVar7 - iVar11; + lVar27 = lVar30 + 0x10; + pbVar19 = (byte *)(param_1 + lVar30); + pbVar21 = (byte *)(param_5 + lVar30); + pbVar23 = (byte *)(param_3 + lVar30); + if ((pbVar19 < (byte *)(param_5 + lVar27) && pbVar21 < (byte *)(param_1 + lVar27) || + pbVar23 < (byte *)(param_5 + lVar27) && pbVar21 < (byte *)(param_3 + lVar27)) || + (uVar24 < 0x14)) { + lVar27 = 0; + do { + pbVar21[lVar27] = pbVar23[lVar27] ^ pbVar19[lVar27]; + lVar27 = lVar27 + 1; + } while (lVar27 != (ulong)(uint)((iVar7 + -1) - iVar11) + 1); + } + else { + uVar6 = -(int)pbVar19 & 0xf; + uVar16 = uVar24; + if (uVar6 < uVar24) { + uVar16 = uVar6; + } + iVar17 = iVar11; + if (uVar16 != 0) { + iVar17 = iVar11 + 1; + *pbVar21 = *pbVar23 ^ *pbVar19; + if (uVar16 != 1) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 2; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 2) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 3; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 3) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 4; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 4) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 5; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 5) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 6; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 6) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 7; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 7) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 8; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 8) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 9; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 9) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 10; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 10) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xb; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 0xb) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xc; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 0xc) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xd; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (uVar16 != 0xd) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xe; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27) + ; + if (uVar16 == 0xf) { + lVar27 = (long)iVar17; + iVar17 = iVar11 + 0xf; + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ + *(byte *)(param_1 + lVar27); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar6 = ((uVar24 - uVar16) - 0x10 >> 4) + 1; + iVar11 = uVar6 * 0x10; + if (0xe < (uVar24 - 1) - uVar16) { + lVar30 = lVar30 + (ulong)uVar16; + uVar25 = 0; + puVar18 = (undefined8 *)(param_5 + lVar30); + puVar22 = (undefined8 *)(param_3 + lVar30); + puVar20 = (undefined8 *)(param_1 + lVar30); + do { + uVar32 = puVar22[1]; + uVar31 = *puVar22; + uVar25 = uVar25 + 1; + uVar34 = puVar20[1]; + uVar33 = *puVar20; + puVar18[1] = CONCAT17((byte)((ulong)uVar32 >> 0x38) ^ (byte)((ulong)uVar34 >> 0x38), + CONCAT16((byte)((ulong)uVar32 >> 0x30) ^ + (byte)((ulong)uVar34 >> 0x30), + CONCAT15((byte)((ulong)uVar32 >> 0x28) ^ + (byte)((ulong)uVar34 >> 0x28), + CONCAT14((byte)((ulong)uVar32 >> 0x20) ^ + (byte)((ulong)uVar34 >> 0x20), + CONCAT13((byte)((ulong)uVar32 >> 0x18 + ) ^ (byte)((ulong) + uVar34 >> 0x18), + CONCAT12((byte)((ulong)uVar32 >> 0x10) ^ + (byte)((ulong)uVar34 >> 0x10), + CONCAT11((byte)((ulong)uVar32 >> 8) ^ + (byte)((ulong)uVar34 >> 8), + (byte)uVar32 ^ (byte)uVar34))))) + )); + *puVar18 = CONCAT17((byte)((ulong)uVar31 >> 0x38) ^ (byte)((ulong)uVar33 >> 0x38), + CONCAT16((byte)((ulong)uVar31 >> 0x30) ^ + (byte)((ulong)uVar33 >> 0x30), + CONCAT15((byte)((ulong)uVar31 >> 0x28) ^ + (byte)((ulong)uVar33 >> 0x28), + CONCAT14((byte)((ulong)uVar31 >> 0x20) ^ + (byte)((ulong)uVar33 >> 0x20), + CONCAT13((byte)((ulong)uVar31 >> 0x18) + ^ (byte)((ulong)uVar33 >> 0x18 + ), + CONCAT12((byte)((ulong)uVar31 + >> 0x10) ^ + (byte)((ulong)uVar33 + >> 0x10), + CONCAT11((byte)(( + ulong)uVar31 >> 8) ^ (byte)((ulong)uVar33 >> 8), + (byte)uVar31 ^ (byte)uVar33))))))); + puVar18 = puVar18 + 2; + puVar22 = puVar22 + 2; + puVar20 = puVar20 + 2; + } while (uVar25 < uVar6); + iVar17 = iVar17 + iVar11; + if (uVar24 - uVar16 == iVar11) goto LAB_00232fc8; + } + lVar27 = (long)iVar17; + *(byte *)(param_5 + lVar27) = *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 1 < iVar7) { + lVar27 = (long)(iVar17 + 1); + *(byte *)(param_5 + lVar27) = *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 2 < iVar7) { + lVar27 = (long)(iVar17 + 2); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 3 < iVar7) { + lVar27 = (long)(iVar17 + 3); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 4 < iVar7) { + lVar27 = (long)(iVar17 + 4); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 5 < iVar7) { + lVar27 = (long)(iVar17 + 5); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 6 < iVar7) { + lVar27 = (long)(iVar17 + 6); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 7 < iVar7) { + lVar27 = (long)(iVar17 + 7); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 8 < iVar7) { + lVar27 = (long)(iVar17 + 8); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 9 < iVar7) { + lVar27 = (long)(iVar17 + 9); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 10 < iVar7) { + lVar27 = (long)(iVar17 + 10); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 0xb < iVar7) { + lVar27 = (long)(iVar17 + 0xb); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 0xc < iVar7) { + lVar27 = (long)(iVar17 + 0xc); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 0xd < iVar7) { + lVar27 = (long)(iVar17 + 0xd); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27); + if (iVar17 + 0xe < iVar7) { + lVar27 = (long)(iVar17 + 0xe); + *(byte *)(param_5 + lVar27) = + *(byte *)(param_3 + lVar27) ^ *(byte *)(param_1 + lVar27) + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00232fc8: + iVar28 = iVar28 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar28 != 0); + } + return; +} + + +================================================================== + +### FUNC 002330a8 (1712 bytes) name=FUN_002330a8 + +void FUN_002330a8(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + undefined8 *puVar3; + byte *pbVar4; + int iVar5; + uint uVar6; + int iVar7; + byte bVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + int iVar13; + uint uVar14; + uint uVar15; + int iVar16; + undefined8 *puVar17; + byte *pbVar18; + byte *pbVar19; + undefined8 *puVar20; + uint uVar21; + long lVar22; + long lVar23; + int iVar24; + long lVar25; + uint uVar26; + undefined8 uVar27; + undefined8 uVar28; + undefined8 uVar29; + undefined8 uVar30; + + iVar24 = param_7[1]; + iVar7 = *param_7; + if (iVar24 != 0) { + uVar12 = iVar7 - 0x20; + iVar9 = ((uVar12 >> 5) + 1) * 0x20; + if ((int)uVar12 < 0) { + iVar9 = 0; + } + iVar13 = iVar7 + -3; + uVar14 = (iVar7 + -4) - iVar9; + uVar11 = uVar14 >> 2; + lVar25 = (long)iVar9; + uVar1 = (uVar11 - 3 >> 2) + 1; + iVar5 = iVar9 + 4 + uVar11 * 4; + do { + if (-1 < (int)uVar12) { + puVar20 = (undefined8 *)(param_5 + 0x10); + puVar17 = (undefined8 *)(param_1 + 0x10); + do { + uVar28 = puVar17[1]; + uVar27 = *puVar17; + puVar3 = puVar17 + 4; + uVar30 = puVar17[-1]; + uVar29 = puVar17[-2]; + puVar20[-1] = CONCAT17(~(byte)((ulong)uVar30 >> 0x38), + CONCAT16(~(byte)((ulong)uVar30 >> 0x30), + CONCAT15(~(byte)((ulong)uVar30 >> 0x28), + CONCAT14(~(byte)((ulong)uVar30 >> 0x20), + CONCAT13(~(byte)((ulong)uVar30 >> 0x18), + CONCAT12(~(byte)((ulong)uVar30 + >> 0x10), + CONCAT11(~(byte)(( + ulong)uVar30 >> 8),~(byte)uVar30))))))); + puVar20[-2] = CONCAT17(~(byte)((ulong)uVar29 >> 0x38), + CONCAT16(~(byte)((ulong)uVar29 >> 0x30), + CONCAT15(~(byte)((ulong)uVar29 >> 0x28), + CONCAT14(~(byte)((ulong)uVar29 >> 0x20), + CONCAT13(~(byte)((ulong)uVar29 >> 0x18), + CONCAT12(~(byte)((ulong)uVar29 + >> 0x10), + CONCAT11(~(byte)(( + ulong)uVar29 >> 8),~(byte)uVar29))))))); + puVar20[1] = CONCAT17(~(byte)((ulong)uVar28 >> 0x38), + CONCAT16(~(byte)((ulong)uVar28 >> 0x30), + CONCAT15(~(byte)((ulong)uVar28 >> 0x28), + CONCAT14(~(byte)((ulong)uVar28 >> 0x20), + CONCAT13(~(byte)((ulong)uVar28 >> 0x18), + CONCAT12(~(byte)((ulong)uVar28 + >> 0x10), + CONCAT11(~(byte)((ulong + )uVar28 >> 8),~(byte)uVar28))))))); + *puVar20 = CONCAT17(~(byte)((ulong)uVar27 >> 0x38), + CONCAT16(~(byte)((ulong)uVar27 >> 0x30), + CONCAT15(~(byte)((ulong)uVar27 >> 0x28), + CONCAT14(~(byte)((ulong)uVar27 >> 0x20), + CONCAT13(~(byte)((ulong)uVar27 >> 0x18), + CONCAT12(~(byte)((ulong)uVar27 >> + 0x10), + CONCAT11(~(byte)((ulong) + uVar27 >> 8),~(byte)uVar27))))))); + puVar20 = puVar20 + 4; + puVar17 = puVar3; + } while (puVar3 != (undefined8 *)(param_1 + (ulong)(uVar12 >> 5) * 0x20 + 0x30)); + } + iVar10 = iVar9; + if (iVar9 < iVar13) { + pbVar18 = (byte *)(param_1 + lVar25); + pbVar19 = (byte *)(param_5 + lVar25); + iVar10 = iVar5; + if ((pbVar18 < (byte *)(param_5 + lVar25 + 0x40) && + pbVar19 < (byte *)(param_1 + lVar25 + 0x40)) || (uVar11 + 1 < 5)) { + do { + pbVar4 = pbVar18 + 4; + bVar8 = *pbVar18; + pbVar19[1] = ~pbVar18[1]; + *pbVar19 = ~bVar8; + bVar8 = pbVar18[2]; + pbVar19[3] = ~pbVar18[3]; + pbVar19[2] = ~bVar8; + pbVar18 = pbVar4; + pbVar19 = pbVar19 + 4; + } while (pbVar4 != (byte *)(param_1 + lVar25 + 4 + (ulong)uVar11 * 4)); + } + else { + iVar16 = iVar9; + if (0xb < uVar14) { + uVar21 = 0; + do { + uVar28 = *(undefined8 *)(pbVar18 + 8); + uVar27 = *(undefined8 *)pbVar18; + uVar21 = uVar21 + 1; + *(ulong *)(pbVar19 + 8) = + CONCAT17(~(byte)((ulong)uVar28 >> 0x38), + CONCAT16(~(byte)((ulong)uVar28 >> 0x30), + CONCAT15(~(byte)((ulong)uVar28 >> 0x28), + CONCAT14(~(byte)((ulong)uVar28 >> 0x20), + CONCAT13(~(byte)((ulong)uVar28 >> 0x18), + CONCAT12(~(byte)((ulong)uVar28 >> + 0x10), + CONCAT11(~(byte)((ulong) + uVar28 >> 8),~(byte)uVar28))))))); + *(ulong *)pbVar19 = + CONCAT17(~(byte)((ulong)uVar27 >> 0x38), + CONCAT16(~(byte)((ulong)uVar27 >> 0x30), + CONCAT15(~(byte)((ulong)uVar27 >> 0x28), + CONCAT14(~(byte)((ulong)uVar27 >> 0x20), + CONCAT13(~(byte)((ulong)uVar27 >> 0x18), + CONCAT12(~(byte)((ulong)uVar27 >> + 0x10), + CONCAT11(~(byte)((ulong) + uVar27 >> 8),~(byte)uVar27))))))); + pbVar18 = pbVar18 + 0x10; + pbVar19 = pbVar19 + 0x10; + } while (uVar21 < uVar1); + iVar16 = iVar9 + uVar1 * 0x10; + if (uVar11 + 1 == uVar1 * 4) goto LAB_002332bc; + } + lVar22 = (long)iVar16; + bVar8 = *(byte *)(param_1 + lVar22 + 1); + *(byte *)(param_5 + lVar22) = ~*(byte *)(param_1 + lVar22); + *(byte *)(param_5 + lVar22 + 1) = ~bVar8; + bVar8 = *(byte *)(param_1 + lVar22 + 3); + *(byte *)(param_5 + lVar22 + 2) = ~*(byte *)(param_1 + lVar22 + 2); + *(byte *)(param_5 + lVar22 + 3) = ~bVar8; + if (iVar16 + 4 < iVar13) { + lVar22 = (long)(iVar16 + 4); + bVar8 = *(byte *)(param_1 + lVar22 + 1); + *(byte *)(param_5 + lVar22) = ~*(byte *)(param_1 + lVar22); + *(byte *)(param_5 + lVar22 + 1) = ~bVar8; + bVar8 = *(byte *)(param_1 + lVar22 + 3); + *(byte *)(param_5 + lVar22 + 2) = ~*(byte *)(param_1 + lVar22 + 2); + *(byte *)(param_5 + lVar22 + 3) = ~bVar8; + if (iVar16 + 8 < iVar13) { + lVar22 = (long)(iVar16 + 8); + bVar8 = *(byte *)(param_1 + lVar22 + 1); + *(byte *)(param_5 + lVar22) = ~*(byte *)(param_1 + lVar22); + *(byte *)(param_5 + lVar22 + 1) = ~bVar8; + bVar8 = *(byte *)(param_1 + lVar22 + 3); + *(byte *)(param_5 + lVar22 + 2) = ~*(byte *)(param_1 + lVar22 + 2); + *(byte *)(param_5 + lVar22 + 3) = ~bVar8; + } + } + } + } +LAB_002332bc: + if (iVar10 < iVar7) { + lVar22 = (long)iVar10; + uVar21 = iVar7 - iVar10; + pbVar18 = (byte *)(param_1 + lVar22); + pbVar19 = (byte *)(param_5 + lVar22); + if ((pbVar18 < (byte *)(param_5 + lVar22 + 0x10) && + pbVar19 < (byte *)(param_1 + lVar22 + 0x10)) || (uVar21 < 0x14)) { + lVar22 = 0; + do { + pbVar19[lVar22] = ~pbVar18[lVar22]; + lVar22 = lVar22 + 1; + } while (lVar22 != (ulong)(uint)((iVar7 + -1) - iVar10) + 1); + } + else { + uVar6 = -(int)pbVar18 & 0xf; + uVar15 = uVar21; + if (uVar6 < uVar21) { + uVar15 = uVar6; + } + iVar16 = iVar10; + if (uVar15 != 0) { + iVar16 = iVar10 + 1; + *pbVar19 = ~*pbVar18; + if (uVar15 != 1) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 2; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 2) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 3; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 3) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 4; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 4) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 5; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 5) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 6; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 6) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 7; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 7) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 8; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 8) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 9; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 9) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 10; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 10) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 0xb; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 0xb) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 0xc; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 0xc) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 0xd; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 != 0xd) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 0xe; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + if (uVar15 == 0xf) { + lVar23 = (long)iVar16; + iVar16 = iVar10 + 0xf; + *(byte *)(param_5 + lVar23) = ~*(byte *)(param_1 + lVar23); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar6 = ((uVar21 - uVar15) - 0x10 >> 4) + 1; + iVar10 = uVar6 * 0x10; + if (0xe < (uVar21 - 1) - uVar15) { + uVar26 = 0; + puVar20 = (undefined8 *)(param_5 + lVar22 + (ulong)uVar15); + puVar17 = (undefined8 *)(param_1 + lVar22 + (ulong)uVar15); + do { + uVar28 = puVar17[1]; + uVar27 = *puVar17; + uVar26 = uVar26 + 1; + puVar20[1] = CONCAT17(~(byte)((ulong)uVar28 >> 0x38), + CONCAT16(~(byte)((ulong)uVar28 >> 0x30), + CONCAT15(~(byte)((ulong)uVar28 >> 0x28), + CONCAT14(~(byte)((ulong)uVar28 >> 0x20), + CONCAT13(~(byte)((ulong)uVar28 >> + 0x18), + CONCAT12(~(byte)((ulong) + uVar28 >> 0x10), + CONCAT11(~(byte)((ulong)uVar28 >> 8),~(byte)uVar28 + ))))))); + *puVar20 = CONCAT17(~(byte)((ulong)uVar27 >> 0x38), + CONCAT16(~(byte)((ulong)uVar27 >> 0x30), + CONCAT15(~(byte)((ulong)uVar27 >> 0x28), + CONCAT14(~(byte)((ulong)uVar27 >> 0x20), + CONCAT13(~(byte)((ulong)uVar27 >> 0x18) + ,CONCAT12(~(byte)((ulong) + uVar27 >> 0x10), + CONCAT11(~(byte)((ulong)uVar27 >> 8),~(byte)uVar27 + ))))))); + puVar20 = puVar20 + 2; + puVar17 = puVar17 + 2; + } while (uVar26 < uVar6); + iVar16 = iVar16 + iVar10; + if (uVar21 - uVar15 == iVar10) goto LAB_0023369c; + } + iVar10 = iVar16 + 1; + *(byte *)(param_5 + iVar16) = ~*(byte *)(param_1 + iVar16); + if (iVar10 < iVar7) { + iVar2 = iVar16 + 2; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar2 < iVar7) { + iVar10 = iVar16 + 3; + *(byte *)(param_5 + iVar2) = ~*(byte *)(param_1 + iVar2); + if (iVar10 < iVar7) { + iVar2 = iVar16 + 4; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar2 < iVar7) { + iVar10 = iVar16 + 5; + *(byte *)(param_5 + iVar2) = ~*(byte *)(param_1 + iVar2); + if (iVar10 < iVar7) { + iVar2 = iVar16 + 6; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar2 < iVar7) { + iVar10 = iVar16 + 7; + *(byte *)(param_5 + iVar2) = ~*(byte *)(param_1 + iVar2); + if (iVar10 < iVar7) { + iVar2 = iVar16 + 8; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar2 < iVar7) { + iVar10 = iVar16 + 9; + *(byte *)(param_5 + iVar2) = ~*(byte *)(param_1 + iVar2); + if (iVar10 < iVar7) { + iVar2 = iVar16 + 10; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar2 < iVar7) { + iVar10 = iVar16 + 0xb; + *(byte *)(param_5 + iVar2) = ~*(byte *)(param_1 + iVar2); + if (iVar10 < iVar7) { + iVar2 = iVar16 + 0xc; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar2 < iVar7) { + iVar10 = iVar16 + 0xd; + *(byte *)(param_5 + iVar2) = ~*(byte *)(param_1 + iVar2); + if (iVar10 < iVar7) { + iVar16 = iVar16 + 0xe; + *(byte *)(param_5 + iVar10) = ~*(byte *)(param_1 + iVar10); + if (iVar16 < iVar7) { + *(byte *)(param_5 + iVar16) = ~*(byte *)(param_1 + iVar16); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0023369c: + iVar24 = iVar24 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 00233758 (964 bytes) name=FUN_00233758 + +void FUN_00233758(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + float *pfVar3; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + undefined8 *puVar12; + undefined8 *puVar13; + float *pfVar14; + undefined8 *puVar15; + ulong uVar16; + undefined8 *puVar17; + float *pfVar18; + int iVar19; + undefined8 *puVar20; + float *pfVar21; + uint uVar22; + long lVar23; + uint uVar24; + int iVar25; + long lVar26; + long lVar27; + long lVar28; + float fVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + float fVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + long lVar37; + + iVar25 = param_7[1]; + iVar7 = *param_7; + if (iVar25 != 0) { + uVar10 = iVar7 - 8U >> 3; + iVar8 = (uVar10 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar11 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar26 = ((long)iVar8 + 0x10) * 4; + lVar27 = lVar26 + -0x40; + lVar37 = NEON_shl((long)iVar8 + 4 + (ulong)uVar11 * 4,2); + iVar4 = iVar8 + 4 + uVar11 * 4; + do { + if (0 < iVar7 + -7) { + puVar15 = (undefined8 *)(param_1 + 0x10); + puVar20 = (undefined8 *)(param_3 + 0x10); + puVar17 = (undefined8 *)(param_5 + 0x10); + do { + uVar31 = puVar15[1]; + uVar30 = *puVar15; + puVar12 = puVar15 + -1; + uVar32 = puVar15[-2]; + puVar15 = puVar15 + 4; + puVar13 = puVar20 + -1; + uVar36 = puVar20[-2]; + uVar35 = puVar20[1]; + uVar34 = *puVar20; + puVar20 = puVar20 + 4; + puVar17[-1] = CONCAT44((float)((ulong)*puVar12 >> 0x20) + (float)((ulong)*puVar13 >> 0x20) + ,(float)*puVar12 + (float)*puVar13); + puVar17[-2] = CONCAT44((float)((ulong)uVar32 >> 0x20) + (float)((ulong)uVar36 >> 0x20), + (float)uVar32 + (float)uVar36); + puVar17[1] = CONCAT44((float)((ulong)uVar31 >> 0x20) + (float)((ulong)uVar35 >> 0x20), + (float)uVar31 + (float)uVar35); + *puVar17 = CONCAT44((float)((ulong)uVar30 >> 0x20) + (float)((ulong)uVar34 >> 0x20), + (float)uVar30 + (float)uVar34); + puVar17 = puVar17 + 4; + } while (puVar15 != (undefined8 *)(param_1 + (ulong)uVar10 * 0x20 + 0x30)); + } + iVar9 = iVar8; + if (iVar8 < iVar7 + -3) { + pfVar14 = (float *)(param_1 + lVar27); + pfVar18 = (float *)(param_5 + lVar27); + pfVar21 = (float *)(param_3 + lVar27); + iVar9 = iVar4; + if ((pfVar14 < (float *)(param_5 + lVar26) && pfVar18 < (float *)(param_1 + lVar26) || + pfVar21 < (float *)(param_5 + lVar26) && pfVar18 < (float *)(param_3 + lVar26)) || + (uVar11 + 1 < 4)) { + do { + pfVar3 = pfVar14 + 4; + fVar33 = *pfVar21; + fVar29 = *pfVar14; + pfVar18[1] = pfVar14[1] + pfVar21[1]; + *pfVar18 = fVar29 + fVar33; + fVar29 = pfVar14[2]; + fVar33 = pfVar21[2]; + pfVar18[3] = pfVar14[3] + pfVar21[3]; + pfVar18[2] = fVar29 + fVar33; + pfVar14 = pfVar3; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (pfVar3 != (float *)(param_1 + lVar37)); + } + else { + uVar22 = 0; + do { + uVar30 = *(undefined8 *)pfVar14; + uVar22 = uVar22 + 1; + uVar31 = *(undefined8 *)pfVar21; + *(ulong *)(pfVar18 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar14 + 2) >> 0x20) + + (float)((ulong)*(undefined8 *)(pfVar21 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar14 + 2) + (float)*(undefined8 *)(pfVar21 + 2)) + ; + *(ulong *)pfVar18 = + CONCAT44((float)((ulong)uVar30 >> 0x20) + (float)((ulong)uVar31 >> 0x20), + (float)uVar30 + (float)uVar31); + pfVar14 = pfVar14 + 4; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (uVar22 < uVar11 + 1); + } + } + if (iVar9 < iVar7) { + uVar22 = iVar7 - iVar9; + lVar23 = ((long)iVar9 + 4) * 4; + lVar28 = lVar23 + -0x10; + uVar16 = param_5 + lVar28; + uVar5 = param_1 + lVar28; + if ((uVar16 < (ulong)(param_1 + lVar23) && uVar5 < (ulong)(param_5 + lVar23) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar23) && + uVar16 < (ulong)(param_3 + lVar23)) || (uVar22 < 9)) { + lVar23 = 0; + do { + *(float *)(uVar16 + lVar23) = + *(float *)(uVar5 + lVar23) + *(float *)(param_3 + lVar28 + lVar23); + lVar23 = lVar23 + 4; + } while (lVar23 != ((ulong)(uint)((iVar7 + -1) - iVar9) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + if (uVar22 < uVar6) { + uVar6 = uVar22; + } + iVar19 = iVar9; + if (uVar6 != 0) { + lVar23 = (long)iVar9 * 4; + iVar19 = iVar9 + 1; + *(float *)(param_5 + lVar23) = + *(float *)(param_1 + lVar23) + *(float *)(param_3 + lVar23); + if (uVar6 != 1) { + lVar2 = lVar23 + 4; + iVar19 = iVar9 + 2; + *(float *)(param_5 + lVar2) = + *(float *)(param_1 + lVar2) + *(float *)(param_3 + lVar2); + if (uVar6 == 3) { + lVar23 = lVar23 + 8; + iVar19 = iVar9 + 3; + *(float *)(param_5 + lVar23) = + *(float *)(param_1 + lVar23) + *(float *)(param_3 + lVar23); + } + } + } + uVar24 = 0; + lVar28 = lVar28 + (ulong)uVar6 * 4; + uVar1 = ((uVar22 - uVar6) - 4 >> 2) + 1; + iVar9 = uVar1 * 4; + puVar15 = (undefined8 *)(param_5 + lVar28); + puVar20 = (undefined8 *)(param_3 + lVar28); + puVar17 = (undefined8 *)(param_1 + lVar28); + do { + uVar30 = *puVar20; + uVar24 = uVar24 + 1; + uVar31 = *puVar17; + puVar15[1] = CONCAT44((float)((ulong)puVar20[1] >> 0x20) + + (float)((ulong)puVar17[1] >> 0x20), + (float)puVar20[1] + (float)puVar17[1]); + *puVar15 = CONCAT44((float)((ulong)uVar30 >> 0x20) + (float)((ulong)uVar31 >> 0x20), + (float)uVar30 + (float)uVar31); + puVar15 = puVar15 + 2; + puVar20 = puVar20 + 2; + puVar17 = puVar17 + 2; + } while (uVar24 < uVar1); + uVar1 = iVar19 + iVar9; + if (uVar22 - uVar6 != iVar9) { + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(float *)(param_5 + uVar16) = + *(float *)(param_1 + uVar16) + *(float *)(param_3 + uVar16); + if ((int)(uVar1 + 1) < iVar7) { + lVar28 = uVar16 + 4; + *(float *)(param_5 + lVar28) = + *(float *)(param_1 + lVar28) + *(float *)(param_3 + lVar28); + if ((int)(uVar1 + 2) < iVar7) { + lVar28 = uVar16 + 8; + *(float *)(param_5 + lVar28) = + *(float *)(param_1 + lVar28) + *(float *)(param_3 + lVar28); + } + } + } + } + } + iVar25 = iVar25 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar25 != 0); + } + return; +} + + +================================================================== + +### FUNC 00233b1c (964 bytes) name=FUN_00233b1c + +void FUN_00233b1c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + float *pfVar3; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + undefined8 *puVar12; + undefined8 *puVar13; + float *pfVar14; + undefined8 *puVar15; + ulong uVar16; + undefined8 *puVar17; + float *pfVar18; + int iVar19; + undefined8 *puVar20; + float *pfVar21; + uint uVar22; + long lVar23; + uint uVar24; + int iVar25; + long lVar26; + long lVar27; + long lVar28; + float fVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + float fVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + long lVar37; + + iVar25 = param_7[1]; + iVar7 = *param_7; + if (iVar25 != 0) { + uVar10 = iVar7 - 8U >> 3; + iVar8 = (uVar10 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar11 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar26 = ((long)iVar8 + 0x10) * 4; + lVar27 = lVar26 + -0x40; + lVar37 = NEON_shl((long)iVar8 + 4 + (ulong)uVar11 * 4,2); + iVar4 = iVar8 + 4 + uVar11 * 4; + do { + if (0 < iVar7 + -7) { + puVar15 = (undefined8 *)(param_1 + 0x10); + puVar20 = (undefined8 *)(param_3 + 0x10); + puVar17 = (undefined8 *)(param_5 + 0x10); + do { + uVar31 = puVar15[1]; + uVar30 = *puVar15; + puVar12 = puVar15 + -1; + uVar32 = puVar15[-2]; + puVar15 = puVar15 + 4; + puVar13 = puVar20 + -1; + uVar36 = puVar20[-2]; + uVar35 = puVar20[1]; + uVar34 = *puVar20; + puVar20 = puVar20 + 4; + puVar17[-1] = CONCAT44((float)((ulong)*puVar12 >> 0x20) - (float)((ulong)*puVar13 >> 0x20) + ,(float)*puVar12 - (float)*puVar13); + puVar17[-2] = CONCAT44((float)((ulong)uVar32 >> 0x20) - (float)((ulong)uVar36 >> 0x20), + (float)uVar32 - (float)uVar36); + puVar17[1] = CONCAT44((float)((ulong)uVar31 >> 0x20) - (float)((ulong)uVar35 >> 0x20), + (float)uVar31 - (float)uVar35); + *puVar17 = CONCAT44((float)((ulong)uVar30 >> 0x20) - (float)((ulong)uVar34 >> 0x20), + (float)uVar30 - (float)uVar34); + puVar17 = puVar17 + 4; + } while (puVar15 != (undefined8 *)(param_1 + (ulong)uVar10 * 0x20 + 0x30)); + } + iVar9 = iVar8; + if (iVar8 < iVar7 + -3) { + pfVar14 = (float *)(param_1 + lVar27); + pfVar18 = (float *)(param_5 + lVar27); + pfVar21 = (float *)(param_3 + lVar27); + iVar9 = iVar4; + if ((pfVar14 < (float *)(param_5 + lVar26) && pfVar18 < (float *)(param_1 + lVar26) || + pfVar21 < (float *)(param_5 + lVar26) && pfVar18 < (float *)(param_3 + lVar26)) || + (uVar11 + 1 < 4)) { + do { + pfVar3 = pfVar14 + 4; + fVar33 = *pfVar21; + fVar29 = *pfVar14; + pfVar18[1] = pfVar14[1] - pfVar21[1]; + *pfVar18 = fVar29 - fVar33; + fVar29 = pfVar14[2]; + fVar33 = pfVar21[2]; + pfVar18[3] = pfVar14[3] - pfVar21[3]; + pfVar18[2] = fVar29 - fVar33; + pfVar14 = pfVar3; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (pfVar3 != (float *)(param_1 + lVar37)); + } + else { + uVar22 = 0; + do { + uVar30 = *(undefined8 *)pfVar14; + uVar22 = uVar22 + 1; + uVar31 = *(undefined8 *)pfVar21; + *(ulong *)(pfVar18 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar14 + 2) >> 0x20) - + (float)((ulong)*(undefined8 *)(pfVar21 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar14 + 2) - (float)*(undefined8 *)(pfVar21 + 2)) + ; + *(ulong *)pfVar18 = + CONCAT44((float)((ulong)uVar30 >> 0x20) - (float)((ulong)uVar31 >> 0x20), + (float)uVar30 - (float)uVar31); + pfVar14 = pfVar14 + 4; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (uVar22 < uVar11 + 1); + } + } + if (iVar9 < iVar7) { + uVar22 = iVar7 - iVar9; + lVar23 = ((long)iVar9 + 4) * 4; + lVar28 = lVar23 + -0x10; + uVar16 = param_5 + lVar28; + uVar5 = param_1 + lVar28; + if ((uVar16 < (ulong)(param_1 + lVar23) && uVar5 < (ulong)(param_5 + lVar23) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar23) && + uVar16 < (ulong)(param_3 + lVar23)) || (uVar22 < 9)) { + lVar23 = 0; + do { + *(float *)(uVar16 + lVar23) = + *(float *)(uVar5 + lVar23) - *(float *)(param_3 + lVar28 + lVar23); + lVar23 = lVar23 + 4; + } while (lVar23 != ((ulong)(uint)((iVar7 + -1) - iVar9) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + if (uVar22 < uVar6) { + uVar6 = uVar22; + } + iVar19 = iVar9; + if (uVar6 != 0) { + lVar23 = (long)iVar9 * 4; + iVar19 = iVar9 + 1; + *(float *)(param_5 + lVar23) = + *(float *)(param_1 + lVar23) - *(float *)(param_3 + lVar23); + if (uVar6 != 1) { + lVar2 = lVar23 + 4; + iVar19 = iVar9 + 2; + *(float *)(param_5 + lVar2) = + *(float *)(param_1 + lVar2) - *(float *)(param_3 + lVar2); + if (uVar6 == 3) { + lVar23 = lVar23 + 8; + iVar19 = iVar9 + 3; + *(float *)(param_5 + lVar23) = + *(float *)(param_1 + lVar23) - *(float *)(param_3 + lVar23); + } + } + } + uVar24 = 0; + lVar28 = lVar28 + (ulong)uVar6 * 4; + uVar1 = ((uVar22 - uVar6) - 4 >> 2) + 1; + iVar9 = uVar1 * 4; + puVar15 = (undefined8 *)(param_5 + lVar28); + puVar20 = (undefined8 *)(param_3 + lVar28); + puVar17 = (undefined8 *)(param_1 + lVar28); + do { + uVar31 = *puVar20; + uVar24 = uVar24 + 1; + uVar30 = *puVar17; + puVar15[1] = CONCAT44((float)((ulong)puVar17[1] >> 0x20) - + (float)((ulong)puVar20[1] >> 0x20), + (float)puVar17[1] - (float)puVar20[1]); + *puVar15 = CONCAT44((float)((ulong)uVar30 >> 0x20) - (float)((ulong)uVar31 >> 0x20), + (float)uVar30 - (float)uVar31); + puVar15 = puVar15 + 2; + puVar20 = puVar20 + 2; + puVar17 = puVar17 + 2; + } while (uVar24 < uVar1); + uVar1 = iVar19 + iVar9; + if (uVar22 - uVar6 != iVar9) { + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(float *)(param_5 + uVar16) = + *(float *)(param_1 + uVar16) - *(float *)(param_3 + uVar16); + if ((int)(uVar1 + 1) < iVar7) { + lVar28 = uVar16 + 4; + *(float *)(param_5 + lVar28) = + *(float *)(param_1 + lVar28) - *(float *)(param_3 + lVar28); + if ((int)(uVar1 + 2) < iVar7) { + lVar28 = uVar16 + 8; + *(float *)(param_5 + lVar28) = + *(float *)(param_1 + lVar28) - *(float *)(param_3 + lVar28); + } + } + } + } + } + iVar25 = iVar25 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar25 != 0); + } + return; +} + + +================================================================== + +### FUNC 00233ee0 (1092 bytes) name=FUN_00233ee0 + +void FUN_00233ee0(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + long lVar1; + float *pfVar2; + int iVar3; + ulong uVar4; + uint uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [12]; + undefined1 (*pauVar15) [12]; + undefined1 *puVar16; + undefined1 (*pauVar17) [16]; + long lVar18; + undefined8 *puVar19; + ulong uVar20; + float *pfVar21; + uint uVar22; + float *pfVar23; + int iVar24; + undefined1 (*pauVar25) [12]; + float *pfVar26; + long lVar27; + uint uVar28; + undefined1 (*pauVar29) [16]; + int iVar30; + long lVar31; + long lVar32; + float fVar33; + float fVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + float fVar38; + long lVar39; + + iVar30 = param_7[1]; + iVar7 = *param_7; + if (iVar30 != 0) { + uVar10 = iVar7 - 8U >> 3; + iVar8 = (uVar10 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar11 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar31 = ((long)iVar8 + 0x10) * 4; + lVar32 = lVar31 + -0x40; + lVar39 = NEON_shl((long)iVar8 + 4 + (ulong)uVar11 * 4,2); + iVar3 = iVar8 + 4 + uVar11 * 4; + do { + if (0 < iVar7 + -7) { + pauVar17 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar25 = (undefined1 (*) [12])(param_3 + 0x10); + puVar19 = (undefined8 *)(param_5 + 0x10); + do { + pauVar29 = pauVar17 + -1; + pauVar15 = pauVar25 + -2; + auVar12 = *pauVar17; + pauVar17 = pauVar17 + 2; + puVar16 = *pauVar25; + auVar14 = *pauVar25; + pauVar25 = (undefined1 (*) [12])(pauVar25[2] + 8); + auVar37 = NEON_fmax(*pauVar29,*(undefined1 (*) [16])(*pauVar15 + 8),4); + auVar35._12_4_ = (int)((ulong)*(undefined8 *)(puVar16 + 8) >> 0x20); + auVar35._0_12_ = auVar14; + auVar35 = NEON_fmax(auVar12,auVar35,4); + puVar19[-1] = auVar37._8_8_; + puVar19[-2] = auVar37._0_8_; + puVar19[1] = auVar35._8_8_; + *puVar19 = auVar35._0_8_; + puVar19 = puVar19 + 4; + } while (pauVar17 != (undefined1 (*) [16])(param_1 + (ulong)uVar10 * 0x20 + 0x30)); + } + iVar9 = iVar8; + if (iVar8 < iVar7 + -3) { + pfVar21 = (float *)(param_1 + lVar32); + pfVar23 = (float *)(param_5 + lVar32); + pfVar26 = (float *)(param_3 + lVar32); + iVar9 = iVar3; + if ((pfVar21 < (float *)(param_5 + lVar31) && pfVar23 < (float *)(param_1 + lVar31) || + pfVar26 < (float *)(param_5 + lVar31) && pfVar23 < (float *)(param_3 + lVar31)) || + (uVar11 + 1 < 5)) { + do { + fVar38 = pfVar21[1]; + fVar34 = pfVar26[1]; + fVar33 = *pfVar26; + if (*pfVar26 <= *pfVar21) { + fVar33 = *pfVar21; + } + *pfVar23 = fVar33; + if (fVar34 <= fVar38) { + fVar34 = fVar38; + } + pfVar23[1] = fVar34; + pfVar2 = pfVar21 + 4; + fVar38 = pfVar21[3]; + fVar34 = pfVar26[3]; + fVar33 = pfVar26[2]; + if (pfVar26[2] <= pfVar21[2]) { + fVar33 = pfVar21[2]; + } + pfVar23[2] = fVar33; + if (fVar34 <= fVar38) { + fVar34 = fVar38; + } + pfVar23[3] = fVar34; + pfVar21 = pfVar2; + pfVar23 = pfVar23 + 4; + pfVar26 = pfVar26 + 4; + } while (pfVar2 != (float *)(param_1 + lVar39)); + } + else { + lVar18 = 0; + uVar22 = 0; + do { + pauVar25 = (undefined1 (*) [12])((long)pfVar26 + lVar18); + puVar19 = (undefined8 *)((long)pfVar23 + lVar18); + uVar22 = uVar22 + 1; + auVar35 = *(undefined1 (*) [16])((long)pfVar21 + lVar18); + fVar33 = (float)((ulong)*(undefined8 *)(*pauVar25 + 8) >> 0x20); + lVar18 = lVar18 + 0x10; + auVar37._0_4_ = -(uint)(auVar35._0_4_ < (float)*(undefined8 *)*pauVar25); + auVar37._4_4_ = + -(uint)(auVar35._4_4_ < (float)((ulong)*(undefined8 *)*pauVar25 >> 0x20)); + auVar37._8_4_ = -(uint)(auVar35._8_4_ < (float)*(undefined8 *)(*pauVar25 + 8)); + auVar37._12_4_ = -(uint)(auVar35._12_4_ < fVar33); + auVar12._12_4_ = fVar33; + auVar12._0_12_ = *pauVar25; + auVar35 = auVar35 ^ (auVar35 ^ auVar12) & auVar37; + puVar19[1] = auVar35._8_8_; + *puVar19 = auVar35._0_8_; + } while (uVar22 < uVar11 + 1); + } + } + if (iVar9 < iVar7) { + uVar22 = iVar7 - iVar9; + lVar27 = ((long)iVar9 + 4) * 4; + lVar18 = lVar27 + -0x10; + uVar20 = param_5 + lVar18; + uVar4 = param_1 + lVar18; + if ((uVar20 < (ulong)(param_1 + lVar27) && uVar4 < (ulong)(param_5 + lVar27) || + (ulong)(param_3 + lVar18) < (ulong)(param_5 + lVar27) && + uVar20 < (ulong)(param_3 + lVar27)) || (uVar22 < 8)) { + lVar27 = 0; + do { + fVar33 = *(float *)(param_3 + lVar18 + lVar27); + if (fVar33 <= *(float *)(uVar4 + lVar27)) { + fVar33 = *(float *)(uVar4 + lVar27); + } + *(float *)(uVar20 + lVar27) = fVar33; + lVar27 = lVar27 + 4; + } while (lVar27 != ((ulong)(uint)((iVar7 + -1) - iVar9) + 1) * 4); + } + else { + uVar5 = -((uint)(uVar4 >> 2) & 3) & 3; + uVar6 = uVar22; + if (uVar5 < uVar22) { + uVar6 = uVar5; + } + iVar24 = iVar9; + if (uVar6 != 0) { + lVar27 = (long)iVar9 * 4; + fVar33 = *(float *)(param_3 + lVar27); + if (*(float *)(param_3 + lVar27) <= *(float *)(param_1 + lVar27)) { + fVar33 = *(float *)(param_1 + lVar27); + } + iVar24 = iVar9 + 1; + *(float *)(param_5 + lVar27) = fVar33; + if (uVar6 != 1) { + lVar1 = lVar27 + 4; + fVar33 = *(float *)(param_3 + lVar1); + if (*(float *)(param_3 + lVar1) <= *(float *)(param_1 + lVar1)) { + fVar33 = *(float *)(param_1 + lVar1); + } + iVar24 = iVar9 + 2; + *(float *)(param_5 + lVar1) = fVar33; + if (uVar6 == 3) { + lVar27 = lVar27 + 8; + fVar33 = *(float *)(param_3 + lVar27); + if (*(float *)(param_3 + lVar27) <= *(float *)(param_1 + lVar27)) { + fVar33 = *(float *)(param_1 + lVar27); + } + iVar24 = iVar9 + 3; + *(float *)(param_5 + lVar27) = fVar33; + } + } + } + uVar28 = 0; + lVar18 = lVar18 + (ulong)uVar6 * 4; + uVar5 = ((uVar22 - uVar6) - 4 >> 2) + 1; + iVar9 = uVar5 * 4; + puVar19 = (undefined8 *)(param_5 + lVar18); + pauVar25 = (undefined1 (*) [12])(param_3 + lVar18); + pauVar17 = (undefined1 (*) [16])(param_1 + lVar18); + do { + auVar35 = *pauVar17; + uVar28 = uVar28 + 1; + fVar33 = (float)((ulong)*(undefined8 *)(*pauVar25 + 8) >> 0x20); + auVar36._0_4_ = -(uint)(auVar35._0_4_ < (float)*(undefined8 *)*pauVar25); + auVar36._4_4_ = + -(uint)(auVar35._4_4_ < (float)((ulong)*(undefined8 *)*pauVar25 >> 0x20)); + auVar36._8_4_ = -(uint)(auVar35._8_4_ < (float)*(undefined8 *)(*pauVar25 + 8)); + auVar36._12_4_ = -(uint)(auVar35._12_4_ < fVar33); + auVar13._12_4_ = fVar33; + auVar13._0_12_ = *pauVar25; + auVar35 = auVar35 ^ (auVar35 ^ auVar13) & auVar36; + puVar19[1] = auVar35._8_8_; + *puVar19 = auVar35._0_8_; + puVar19 = puVar19 + 2; + pauVar25 = (undefined1 (*) [12])(pauVar25[1] + 4); + pauVar17 = pauVar17 + 1; + } while (uVar28 < uVar5); + uVar5 = iVar24 + iVar9; + if (uVar22 - uVar6 != iVar9) { + uVar20 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + fVar33 = *(float *)(param_3 + uVar20); + if (*(float *)(param_3 + uVar20) <= *(float *)(param_1 + uVar20)) { + fVar33 = *(float *)(param_1 + uVar20); + } + *(float *)(param_5 + uVar20) = fVar33; + if ((int)(uVar5 + 1) < iVar7) { + lVar18 = uVar20 + 4; + fVar33 = *(float *)(param_3 + lVar18); + if (*(float *)(param_3 + lVar18) <= *(float *)(param_1 + lVar18)) { + fVar33 = *(float *)(param_1 + lVar18); + } + *(float *)(param_5 + lVar18) = fVar33; + if ((int)(uVar5 + 2) < iVar7) { + lVar18 = uVar20 + 8; + fVar33 = *(float *)(param_3 + lVar18); + if (*(float *)(param_3 + lVar18) <= *(float *)(param_1 + lVar18)) { + fVar33 = *(float *)(param_1 + lVar18); + } + *(float *)(param_5 + lVar18) = fVar33; + } + } + } + } + } + iVar30 = iVar30 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar30 != 0); + } + return; +} + + +================================================================== + +### FUNC 00234324 (964 bytes) name=FUN_00234324 + +void FUN_00234324(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + undefined8 *puVar2; + long lVar3; + float *pfVar4; + int iVar5; + ulong uVar6; + uint uVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + undefined8 *puVar14; + float *pfVar15; + undefined8 *puVar16; + ulong uVar17; + undefined8 *puVar18; + float *pfVar19; + int iVar20; + float *pfVar21; + uint uVar22; + long lVar23; + uint uVar24; + int iVar25; + long lVar26; + long lVar27; + long lVar28; + float fVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + float fVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + long lVar37; + + iVar25 = param_7[1]; + iVar8 = *param_7; + if (iVar25 != 0) { + uVar11 = iVar8 - 8U >> 3; + iVar9 = (uVar11 + 1) * 8; + if (iVar8 + -7 < 1) { + iVar9 = 0; + } + uVar12 = (uint)((iVar8 + -4) - iVar9) >> 2; + lVar26 = ((long)iVar9 + 0x10) * 4; + lVar27 = lVar26 + -0x40; + lVar37 = NEON_shl((long)iVar9 + 4 + (ulong)uVar12 * 4,2); + iVar5 = iVar9 + 4 + uVar12 * 4; + do { + if (0 < iVar8 + -7) { + puVar16 = (undefined8 *)(param_3 + 0x10); + puVar18 = (undefined8 *)(param_5 + 0x10); + puVar14 = (undefined8 *)(param_1 + 0x10); + do { + uVar31 = puVar14[1]; + uVar30 = *puVar14; + uVar35 = puVar16[1]; + uVar34 = *puVar16; + puVar2 = puVar14 + 4; + uVar32 = puVar14[-2]; + puVar13 = puVar16 + -1; + uVar36 = puVar16[-2]; + puVar16 = puVar16 + 4; + puVar18[-1] = CONCAT44(ABS((float)((ulong)puVar14[-1] >> 0x20) - + (float)((ulong)*puVar13 >> 0x20)), + ABS((float)puVar14[-1] - (float)*puVar13)); + puVar18[-2] = CONCAT44(ABS((float)((ulong)uVar32 >> 0x20) - (float)((ulong)uVar36 >> 0x20) + ),ABS((float)uVar32 - (float)uVar36)); + puVar18[1] = CONCAT44(ABS((float)((ulong)uVar31 >> 0x20) - (float)((ulong)uVar35 >> 0x20)) + ,ABS((float)uVar31 - (float)uVar35)); + *puVar18 = CONCAT44(ABS((float)((ulong)uVar30 >> 0x20) - (float)((ulong)uVar34 >> 0x20)), + ABS((float)uVar30 - (float)uVar34)); + puVar18 = puVar18 + 4; + puVar14 = puVar2; + } while (puVar2 != (undefined8 *)(param_1 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar10 = iVar9; + if (iVar9 < iVar8 + -3) { + pfVar15 = (float *)(param_1 + lVar27); + pfVar19 = (float *)(param_5 + lVar27); + pfVar21 = (float *)(param_3 + lVar27); + iVar10 = iVar5; + if ((pfVar15 < (float *)(param_5 + lVar26) && pfVar19 < (float *)(param_1 + lVar26) || + pfVar21 < (float *)(param_5 + lVar26) && pfVar19 < (float *)(param_3 + lVar26)) || + (uVar12 + 1 < 3)) { + do { + pfVar4 = pfVar15 + 4; + fVar33 = *pfVar21; + fVar29 = *pfVar15; + pfVar19[1] = ABS(pfVar15[1] - pfVar21[1]); + *pfVar19 = ABS(fVar29 - fVar33); + fVar29 = pfVar15[2]; + fVar33 = pfVar21[2]; + pfVar19[3] = ABS(pfVar15[3] - pfVar21[3]); + pfVar19[2] = ABS(fVar29 - fVar33); + pfVar15 = pfVar4; + pfVar19 = pfVar19 + 4; + pfVar21 = pfVar21 + 4; + } while (pfVar4 != (float *)(param_1 + lVar37)); + } + else { + uVar22 = 0; + do { + uVar30 = *(undefined8 *)pfVar15; + uVar22 = uVar22 + 1; + uVar31 = *(undefined8 *)pfVar21; + *(ulong *)(pfVar19 + 2) = + CONCAT44(ABS((float)((ulong)*(undefined8 *)(pfVar15 + 2) >> 0x20) - + (float)((ulong)*(undefined8 *)(pfVar21 + 2) >> 0x20)), + ABS((float)*(undefined8 *)(pfVar15 + 2) - + (float)*(undefined8 *)(pfVar21 + 2))); + *(ulong *)pfVar19 = + CONCAT44(ABS((float)((ulong)uVar30 >> 0x20) - (float)((ulong)uVar31 >> 0x20)), + ABS((float)uVar30 - (float)uVar31)); + pfVar15 = pfVar15 + 4; + pfVar19 = pfVar19 + 4; + pfVar21 = pfVar21 + 4; + } while (uVar22 < uVar12 + 1); + } + } + if (iVar10 < iVar8) { + uVar22 = iVar8 - iVar10; + lVar23 = ((long)iVar10 + 4) * 4; + lVar28 = lVar23 + -0x10; + uVar17 = param_5 + lVar28; + uVar6 = param_1 + lVar28; + if ((uVar17 < (ulong)(param_1 + lVar23) && uVar6 < (ulong)(param_5 + lVar23) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar23) && + uVar17 < (ulong)(param_3 + lVar23)) || (uVar22 < 8)) { + lVar23 = 0; + do { + *(float *)(uVar17 + lVar23) = + ABS(*(float *)(uVar6 + lVar23) - *(float *)(param_3 + lVar28 + lVar23)); + lVar23 = lVar23 + 4; + } while (lVar23 != ((ulong)(uint)((iVar8 + -1) - iVar10) + 1) * 4); + } + else { + uVar7 = -((uint)(uVar6 >> 2) & 3) & 3; + if (uVar22 < uVar7) { + uVar7 = uVar22; + } + iVar20 = iVar10; + if (uVar7 != 0) { + lVar23 = (long)iVar10 * 4; + iVar20 = iVar10 + 1; + *(float *)(param_5 + lVar23) = + ABS(*(float *)(param_1 + lVar23) - *(float *)(param_3 + lVar23)); + if (uVar7 != 1) { + lVar3 = lVar23 + 4; + iVar20 = iVar10 + 2; + *(float *)(param_5 + lVar3) = + ABS(*(float *)(param_1 + lVar3) - *(float *)(param_3 + lVar3)); + if (uVar7 == 3) { + lVar23 = lVar23 + 8; + iVar20 = iVar10 + 3; + *(float *)(param_5 + lVar23) = + ABS(*(float *)(param_1 + lVar23) - *(float *)(param_3 + lVar23)); + } + } + } + uVar24 = 0; + lVar28 = lVar28 + (ulong)uVar7 * 4; + uVar1 = ((uVar22 - uVar7) - 4 >> 2) + 1; + iVar10 = uVar1 * 4; + puVar16 = (undefined8 *)(param_5 + lVar28); + puVar18 = (undefined8 *)(param_3 + lVar28); + puVar14 = (undefined8 *)(param_1 + lVar28); + do { + uVar31 = *puVar18; + uVar24 = uVar24 + 1; + uVar30 = *puVar14; + puVar16[1] = CONCAT44(ABS((float)((ulong)puVar14[1] >> 0x20) - + (float)((ulong)puVar18[1] >> 0x20)), + ABS((float)puVar14[1] - (float)puVar18[1])); + *puVar16 = CONCAT44(ABS((float)((ulong)uVar30 >> 0x20) - (float)((ulong)uVar31 >> 0x20)) + ,ABS((float)uVar30 - (float)uVar31)); + puVar16 = puVar16 + 2; + puVar18 = puVar18 + 2; + puVar14 = puVar14 + 2; + } while (uVar24 < uVar1); + uVar1 = iVar20 + iVar10; + if (uVar22 - uVar7 != iVar10) { + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(float *)(param_5 + uVar17) = + ABS(*(float *)(param_1 + uVar17) - *(float *)(param_3 + uVar17)); + if ((int)(uVar1 + 1) < iVar8) { + lVar28 = uVar17 + 4; + *(float *)(param_5 + lVar28) = + ABS(*(float *)(param_1 + lVar28) - *(float *)(param_3 + lVar28)); + if ((int)(uVar1 + 2) < iVar8) { + lVar28 = uVar17 + 8; + *(float *)(param_5 + lVar28) = + ABS(*(float *)(param_1 + lVar28) - *(float *)(param_3 + lVar28)); + } + } + } + } + } + iVar25 = iVar25 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar25 != 0); + } + return; +} + + +================================================================== + +### FUNC 002346e8 (964 bytes) name=FUN_002346e8 + +void FUN_002346e8(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + int *piVar3; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + undefined8 *puVar14; + int *piVar15; + undefined8 *puVar16; + ulong uVar17; + undefined8 *puVar18; + int *piVar19; + int iVar20; + undefined8 *puVar21; + int *piVar22; + uint uVar23; + long lVar24; + uint uVar25; + int iVar26; + long lVar27; + long lVar28; + long lVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + undefined8 uVar35; + long lVar36; + + iVar26 = param_7[1]; + iVar7 = *param_7; + if (iVar26 != 0) { + uVar11 = iVar7 - 8U >> 3; + iVar9 = (uVar11 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar9 = 0; + } + uVar12 = (uint)((iVar7 + -4) - iVar9) >> 2; + lVar27 = ((long)iVar9 + 0x10) * 4; + lVar28 = lVar27 + -0x40; + lVar36 = NEON_shl((long)iVar9 + 4 + (ulong)uVar12 * 4,2); + iVar4 = iVar9 + 4 + uVar12 * 4; + do { + if (0 < iVar7 + -7) { + puVar16 = (undefined8 *)(param_1 + 0x10); + puVar21 = (undefined8 *)(param_3 + 0x10); + puVar18 = (undefined8 *)(param_5 + 0x10); + do { + uVar31 = puVar16[1]; + uVar30 = *puVar16; + puVar13 = puVar16 + -1; + uVar32 = puVar16[-2]; + puVar16 = puVar16 + 4; + puVar14 = puVar21 + -1; + uVar35 = puVar21[-2]; + uVar34 = puVar21[1]; + uVar33 = *puVar21; + puVar21 = puVar21 + 4; + puVar18[-1] = CONCAT44((int)((ulong)*puVar13 >> 0x20) + (int)((ulong)*puVar14 >> 0x20), + (int)*puVar13 + (int)*puVar14); + puVar18[-2] = CONCAT44((int)((ulong)uVar32 >> 0x20) + (int)((ulong)uVar35 >> 0x20), + (int)uVar32 + (int)uVar35); + puVar18[1] = CONCAT44((int)((ulong)uVar31 >> 0x20) + (int)((ulong)uVar34 >> 0x20), + (int)uVar31 + (int)uVar34); + *puVar18 = CONCAT44((int)((ulong)uVar30 >> 0x20) + (int)((ulong)uVar33 >> 0x20), + (int)uVar30 + (int)uVar33); + puVar18 = puVar18 + 4; + } while (puVar16 != (undefined8 *)(param_1 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar10 = iVar9; + if (iVar9 < iVar7 + -3) { + piVar15 = (int *)(param_1 + lVar28); + piVar19 = (int *)(param_5 + lVar28); + piVar22 = (int *)(param_3 + lVar28); + iVar10 = iVar4; + if ((piVar15 < (int *)(param_5 + lVar27) && piVar19 < (int *)(param_1 + lVar27) || + piVar22 < (int *)(param_5 + lVar27) && piVar19 < (int *)(param_3 + lVar27)) || + (uVar12 + 1 < 4)) { + do { + piVar3 = piVar15 + 4; + iVar20 = *piVar15; + iVar8 = *piVar22; + piVar19[1] = piVar15[1] + piVar22[1]; + *piVar19 = iVar20 + iVar8; + iVar20 = piVar15[2]; + iVar8 = piVar22[2]; + piVar19[3] = piVar15[3] + piVar22[3]; + piVar19[2] = iVar20 + iVar8; + piVar15 = piVar3; + piVar19 = piVar19 + 4; + piVar22 = piVar22 + 4; + } while (piVar3 != (int *)(param_1 + lVar36)); + } + else { + uVar23 = 0; + do { + uVar30 = *(undefined8 *)piVar15; + uVar23 = uVar23 + 1; + uVar31 = *(undefined8 *)piVar22; + *(ulong *)(piVar19 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar15 + 2) >> 0x20) + + (int)((ulong)*(undefined8 *)(piVar22 + 2) >> 0x20), + (int)*(undefined8 *)(piVar15 + 2) + (int)*(undefined8 *)(piVar22 + 2)); + *(ulong *)piVar19 = + CONCAT44((int)((ulong)uVar30 >> 0x20) + (int)((ulong)uVar31 >> 0x20), + (int)uVar30 + (int)uVar31); + piVar15 = piVar15 + 4; + piVar19 = piVar19 + 4; + piVar22 = piVar22 + 4; + } while (uVar23 < uVar12 + 1); + } + } + if (iVar10 < iVar7) { + uVar23 = iVar7 - iVar10; + lVar24 = ((long)iVar10 + 4) * 4; + lVar29 = lVar24 + -0x10; + uVar17 = param_5 + lVar29; + uVar5 = param_1 + lVar29; + if ((uVar17 < (ulong)(param_1 + lVar24) && uVar5 < (ulong)(param_5 + lVar24) || + (ulong)(param_3 + lVar29) < (ulong)(param_5 + lVar24) && + uVar17 < (ulong)(param_3 + lVar24)) || (uVar23 < 9)) { + lVar24 = 0; + do { + *(int *)(uVar17 + lVar24) = + *(int *)(uVar5 + lVar24) + *(int *)(param_3 + lVar29 + lVar24); + lVar24 = lVar24 + 4; + } while (lVar24 != ((ulong)(uint)((iVar7 + -1) - iVar10) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + if (uVar23 < uVar6) { + uVar6 = uVar23; + } + iVar20 = iVar10; + if (uVar6 != 0) { + lVar24 = (long)iVar10 * 4; + iVar20 = iVar10 + 1; + *(int *)(param_5 + lVar24) = *(int *)(param_1 + lVar24) + *(int *)(param_3 + lVar24); + if (uVar6 != 1) { + lVar2 = lVar24 + 4; + iVar20 = iVar10 + 2; + *(int *)(param_5 + lVar2) = *(int *)(param_1 + lVar2) + *(int *)(param_3 + lVar2); + if (uVar6 == 3) { + lVar24 = lVar24 + 8; + iVar20 = iVar10 + 3; + *(int *)(param_5 + lVar24) = *(int *)(param_1 + lVar24) + *(int *)(param_3 + lVar24) + ; + } + } + } + uVar25 = 0; + lVar29 = lVar29 + (ulong)uVar6 * 4; + uVar1 = ((uVar23 - uVar6) - 4 >> 2) + 1; + iVar10 = uVar1 * 4; + puVar16 = (undefined8 *)(param_5 + lVar29); + puVar21 = (undefined8 *)(param_3 + lVar29); + puVar18 = (undefined8 *)(param_1 + lVar29); + do { + uVar30 = *puVar21; + uVar25 = uVar25 + 1; + uVar31 = *puVar18; + puVar16[1] = CONCAT44((int)((ulong)puVar21[1] >> 0x20) + + (int)((ulong)puVar18[1] >> 0x20),(int)puVar21[1] + (int)puVar18[1] + ); + *puVar16 = CONCAT44((int)((ulong)uVar30 >> 0x20) + (int)((ulong)uVar31 >> 0x20), + (int)uVar30 + (int)uVar31); + puVar16 = puVar16 + 2; + puVar21 = puVar21 + 2; + puVar18 = puVar18 + 2; + } while (uVar25 < uVar1); + uVar1 = iVar20 + iVar10; + if (uVar23 - uVar6 != iVar10) { + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(int *)(param_5 + uVar17) = *(int *)(param_1 + uVar17) + *(int *)(param_3 + uVar17); + if ((int)(uVar1 + 1) < iVar7) { + lVar29 = uVar17 + 4; + *(int *)(param_5 + lVar29) = *(int *)(param_1 + lVar29) + *(int *)(param_3 + lVar29); + if ((int)(uVar1 + 2) < iVar7) { + lVar29 = uVar17 + 8; + *(int *)(param_5 + lVar29) = *(int *)(param_1 + lVar29) + *(int *)(param_3 + lVar29) + ; + } + } + } + } + } + iVar26 = iVar26 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar26 != 0); + } + return; +} + + +================================================================== + +### FUNC 00234aac (964 bytes) name=FUN_00234aac + +void FUN_00234aac(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + int *piVar3; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + undefined8 *puVar14; + int *piVar15; + undefined8 *puVar16; + ulong uVar17; + undefined8 *puVar18; + int *piVar19; + int iVar20; + undefined8 *puVar21; + int *piVar22; + uint uVar23; + long lVar24; + uint uVar25; + int iVar26; + long lVar27; + long lVar28; + long lVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + undefined8 uVar35; + long lVar36; + + iVar26 = param_7[1]; + iVar7 = *param_7; + if (iVar26 != 0) { + uVar11 = iVar7 - 8U >> 3; + iVar9 = (uVar11 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar9 = 0; + } + uVar12 = (uint)((iVar7 + -4) - iVar9) >> 2; + lVar27 = ((long)iVar9 + 0x10) * 4; + lVar28 = lVar27 + -0x40; + lVar36 = NEON_shl((long)iVar9 + 4 + (ulong)uVar12 * 4,2); + iVar4 = iVar9 + 4 + uVar12 * 4; + do { + if (0 < iVar7 + -7) { + puVar16 = (undefined8 *)(param_1 + 0x10); + puVar21 = (undefined8 *)(param_3 + 0x10); + puVar18 = (undefined8 *)(param_5 + 0x10); + do { + uVar31 = puVar16[1]; + uVar30 = *puVar16; + puVar13 = puVar16 + -1; + uVar32 = puVar16[-2]; + puVar16 = puVar16 + 4; + puVar14 = puVar21 + -1; + uVar35 = puVar21[-2]; + uVar34 = puVar21[1]; + uVar33 = *puVar21; + puVar21 = puVar21 + 4; + puVar18[-1] = CONCAT44((int)((ulong)*puVar13 >> 0x20) - (int)((ulong)*puVar14 >> 0x20), + (int)*puVar13 - (int)*puVar14); + puVar18[-2] = CONCAT44((int)((ulong)uVar32 >> 0x20) - (int)((ulong)uVar35 >> 0x20), + (int)uVar32 - (int)uVar35); + puVar18[1] = CONCAT44((int)((ulong)uVar31 >> 0x20) - (int)((ulong)uVar34 >> 0x20), + (int)uVar31 - (int)uVar34); + *puVar18 = CONCAT44((int)((ulong)uVar30 >> 0x20) - (int)((ulong)uVar33 >> 0x20), + (int)uVar30 - (int)uVar33); + puVar18 = puVar18 + 4; + } while (puVar16 != (undefined8 *)(param_1 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar10 = iVar9; + if (iVar9 < iVar7 + -3) { + piVar15 = (int *)(param_1 + lVar28); + piVar19 = (int *)(param_5 + lVar28); + piVar22 = (int *)(param_3 + lVar28); + iVar10 = iVar4; + if ((piVar15 < (int *)(param_5 + lVar27) && piVar19 < (int *)(param_1 + lVar27) || + piVar22 < (int *)(param_5 + lVar27) && piVar19 < (int *)(param_3 + lVar27)) || + (uVar12 + 1 < 4)) { + do { + piVar3 = piVar15 + 4; + iVar20 = *piVar22; + iVar8 = *piVar15; + piVar19[1] = piVar15[1] - piVar22[1]; + *piVar19 = iVar8 - iVar20; + iVar20 = piVar15[2]; + iVar8 = piVar22[2]; + piVar19[3] = piVar15[3] - piVar22[3]; + piVar19[2] = iVar20 - iVar8; + piVar15 = piVar3; + piVar19 = piVar19 + 4; + piVar22 = piVar22 + 4; + } while (piVar3 != (int *)(param_1 + lVar36)); + } + else { + uVar23 = 0; + do { + uVar30 = *(undefined8 *)piVar15; + uVar23 = uVar23 + 1; + uVar31 = *(undefined8 *)piVar22; + *(ulong *)(piVar19 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar15 + 2) >> 0x20) - + (int)((ulong)*(undefined8 *)(piVar22 + 2) >> 0x20), + (int)*(undefined8 *)(piVar15 + 2) - (int)*(undefined8 *)(piVar22 + 2)); + *(ulong *)piVar19 = + CONCAT44((int)((ulong)uVar30 >> 0x20) - (int)((ulong)uVar31 >> 0x20), + (int)uVar30 - (int)uVar31); + piVar15 = piVar15 + 4; + piVar19 = piVar19 + 4; + piVar22 = piVar22 + 4; + } while (uVar23 < uVar12 + 1); + } + } + if (iVar10 < iVar7) { + uVar23 = iVar7 - iVar10; + lVar24 = ((long)iVar10 + 4) * 4; + lVar29 = lVar24 + -0x10; + uVar17 = param_5 + lVar29; + uVar5 = param_1 + lVar29; + if ((uVar17 < (ulong)(param_1 + lVar24) && uVar5 < (ulong)(param_5 + lVar24) || + (ulong)(param_3 + lVar29) < (ulong)(param_5 + lVar24) && + uVar17 < (ulong)(param_3 + lVar24)) || (uVar23 < 9)) { + lVar24 = 0; + do { + *(int *)(uVar17 + lVar24) = + *(int *)(uVar5 + lVar24) - *(int *)(param_3 + lVar29 + lVar24); + lVar24 = lVar24 + 4; + } while (lVar24 != ((ulong)(uint)((iVar7 + -1) - iVar10) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + if (uVar23 < uVar6) { + uVar6 = uVar23; + } + iVar20 = iVar10; + if (uVar6 != 0) { + lVar24 = (long)iVar10 * 4; + iVar20 = iVar10 + 1; + *(int *)(param_5 + lVar24) = *(int *)(param_1 + lVar24) - *(int *)(param_3 + lVar24); + if (uVar6 != 1) { + lVar2 = lVar24 + 4; + iVar20 = iVar10 + 2; + *(int *)(param_5 + lVar2) = *(int *)(param_1 + lVar2) - *(int *)(param_3 + lVar2); + if (uVar6 == 3) { + lVar24 = lVar24 + 8; + iVar20 = iVar10 + 3; + *(int *)(param_5 + lVar24) = *(int *)(param_1 + lVar24) - *(int *)(param_3 + lVar24) + ; + } + } + } + uVar25 = 0; + lVar29 = lVar29 + (ulong)uVar6 * 4; + uVar1 = ((uVar23 - uVar6) - 4 >> 2) + 1; + iVar10 = uVar1 * 4; + puVar16 = (undefined8 *)(param_5 + lVar29); + puVar21 = (undefined8 *)(param_3 + lVar29); + puVar18 = (undefined8 *)(param_1 + lVar29); + do { + uVar31 = *puVar21; + uVar25 = uVar25 + 1; + uVar30 = *puVar18; + puVar16[1] = CONCAT44((int)((ulong)puVar18[1] >> 0x20) - + (int)((ulong)puVar21[1] >> 0x20),(int)puVar18[1] - (int)puVar21[1] + ); + *puVar16 = CONCAT44((int)((ulong)uVar30 >> 0x20) - (int)((ulong)uVar31 >> 0x20), + (int)uVar30 - (int)uVar31); + puVar16 = puVar16 + 2; + puVar21 = puVar21 + 2; + puVar18 = puVar18 + 2; + } while (uVar25 < uVar1); + uVar1 = iVar20 + iVar10; + if (uVar23 - uVar6 != iVar10) { + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(int *)(param_5 + uVar17) = *(int *)(param_1 + uVar17) - *(int *)(param_3 + uVar17); + if ((int)(uVar1 + 1) < iVar7) { + lVar29 = uVar17 + 4; + *(int *)(param_5 + lVar29) = *(int *)(param_1 + lVar29) - *(int *)(param_3 + lVar29); + if ((int)(uVar1 + 2) < iVar7) { + lVar29 = uVar17 + 8; + *(int *)(param_5 + lVar29) = *(int *)(param_1 + lVar29) - *(int *)(param_3 + lVar29) + ; + } + } + } + } + } + iVar26 = iVar26 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar26 != 0); + } + return; +} + + +================================================================== + +### FUNC 00234e70 (1008 bytes) name=FUN_00234e70 + +void FUN_00234e70(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + int iVar3; + ulong uVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined1 auVar13 [16]; + undefined1 (*pauVar14) [16]; + undefined8 *puVar15; + ulong uVar16; + int iVar17; + int *piVar18; + undefined1 (*pauVar19) [16]; + uint uVar20; + long lVar21; + uint uVar22; + undefined1 (*pauVar23) [16]; + undefined1 (*pauVar24) [16]; + int iVar25; + long lVar26; + long lVar27; + long lVar28; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + long lVar31; + + iVar25 = param_7[1]; + iVar6 = *param_7; + if (iVar25 != 0) { + uVar11 = iVar6 - 8U >> 3; + iVar9 = (uVar11 + 1) * 8; + if (iVar6 + -7 < 1) { + iVar9 = 0; + } + uVar12 = (uint)((iVar6 + -4) - iVar9) >> 2; + lVar26 = ((long)iVar9 + 0x10) * 4; + lVar27 = lVar26 + -0x40; + lVar31 = NEON_shl((long)iVar9 + 4 + (ulong)uVar12 * 4,2); + iVar3 = iVar9 + 4 + uVar12 * 4; + do { + if (0 < iVar6 + -7) { + pauVar14 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar19 = (undefined1 (*) [16])(param_3 + 0x10); + puVar15 = (undefined8 *)(param_5 + 0x10); + do { + pauVar24 = pauVar14 + -1; + pauVar23 = pauVar19 + -1; + auVar29 = *pauVar14; + pauVar14 = pauVar14 + 2; + auVar13 = *pauVar19; + pauVar19 = pauVar19 + 2; + auVar30 = NEON_smax(*pauVar24,*pauVar23,4); + auVar29 = NEON_smax(auVar29,auVar13,4); + puVar15[-1] = auVar30._8_8_; + puVar15[-2] = auVar30._0_8_; + puVar15[1] = auVar29._8_8_; + *puVar15 = auVar29._0_8_; + puVar15 = puVar15 + 4; + } while (pauVar14 != (undefined1 (*) [16])(param_1 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar10 = iVar9; + if (iVar9 < iVar6 + -3) { + pauVar14 = (undefined1 (*) [16])(param_1 + lVar27); + piVar18 = (int *)(param_5 + lVar27); + pauVar19 = (undefined1 (*) [16])(param_3 + lVar27); + iVar10 = iVar3; + if ((pauVar14 < (undefined1 (*) [16])(param_5 + lVar26) && + piVar18 < (int *)(param_1 + lVar26) || + pauVar19 < (undefined1 (*) [16])(param_5 + lVar26) && + piVar18 < (int *)(param_3 + lVar26)) || (uVar12 + 1 < 4)) { + do { + pauVar23 = pauVar14 + 1; + iVar7 = *(int *)*pauVar14; + iVar8 = *(int *)*pauVar19; + iVar17 = *(int *)(*pauVar19 + 4); + if (*(int *)(*pauVar19 + 4) < *(int *)(*pauVar14 + 4)) { + iVar17 = *(int *)(*pauVar14 + 4); + } + piVar18[1] = iVar17; + if (iVar8 < iVar7) { + iVar8 = iVar7; + } + *piVar18 = iVar8; + iVar7 = *(int *)(*pauVar14 + 8); + iVar8 = *(int *)(*pauVar19 + 8); + iVar17 = *(int *)(*pauVar19 + 0xc); + if (*(int *)(*pauVar19 + 0xc) < *(int *)(*pauVar14 + 0xc)) { + iVar17 = *(int *)(*pauVar14 + 0xc); + } + piVar18[3] = iVar17; + if (iVar8 < iVar7) { + iVar8 = iVar7; + } + piVar18[2] = iVar8; + pauVar14 = pauVar23; + piVar18 = piVar18 + 4; + pauVar19 = pauVar19 + 1; + } while (pauVar23 != (undefined1 (*) [16])(param_1 + lVar31)); + } + else { + uVar20 = 0; + do { + uVar20 = uVar20 + 1; + auVar29 = NEON_smax(*pauVar19,*pauVar14,4); + *(long *)(piVar18 + 2) = auVar29._8_8_; + *(long *)piVar18 = auVar29._0_8_; + pauVar14 = pauVar14 + 1; + piVar18 = piVar18 + 4; + pauVar19 = pauVar19 + 1; + } while (uVar20 < uVar12 + 1); + } + } + if (iVar10 < iVar6) { + uVar20 = iVar6 - iVar10; + lVar21 = ((long)iVar10 + 4) * 4; + lVar28 = lVar21 + -0x10; + uVar16 = param_5 + lVar28; + uVar4 = param_1 + lVar28; + if ((uVar16 < (ulong)(param_1 + lVar21) && uVar4 < (ulong)(param_5 + lVar21) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar21) && + uVar16 < (ulong)(param_3 + lVar21)) || (uVar20 < 9)) { + lVar21 = 0; + do { + iVar17 = *(int *)(param_3 + lVar28 + lVar21); + if (iVar17 < *(int *)(uVar4 + lVar21)) { + iVar17 = *(int *)(uVar4 + lVar21); + } + *(int *)(uVar16 + lVar21) = iVar17; + lVar21 = lVar21 + 4; + } while (lVar21 != ((ulong)(uint)((iVar6 + -1) - iVar10) + 1) * 4); + } + else { + uVar5 = -((uint)(uVar4 >> 2) & 3) & 3; + if (uVar20 < uVar5) { + uVar5 = uVar20; + } + iVar17 = iVar10; + if (uVar5 != 0) { + lVar21 = (long)iVar10 * 4; + iVar17 = iVar10 + 1; + iVar8 = *(int *)(param_3 + lVar21); + if (*(int *)(param_3 + lVar21) < *(int *)(param_1 + lVar21)) { + iVar8 = *(int *)(param_1 + lVar21); + } + *(int *)(param_5 + lVar21) = iVar8; + if (uVar5 != 1) { + lVar2 = lVar21 + 4; + iVar17 = iVar10 + 2; + iVar8 = *(int *)(param_3 + lVar2); + if (*(int *)(param_3 + lVar2) < *(int *)(param_1 + lVar2)) { + iVar8 = *(int *)(param_1 + lVar2); + } + *(int *)(param_5 + lVar2) = iVar8; + if (uVar5 == 3) { + lVar21 = lVar21 + 8; + iVar17 = iVar10 + 3; + iVar10 = *(int *)(param_3 + lVar21); + if (*(int *)(param_3 + lVar21) < *(int *)(param_1 + lVar21)) { + iVar10 = *(int *)(param_1 + lVar21); + } + *(int *)(param_5 + lVar21) = iVar10; + } + } + } + uVar22 = 0; + lVar28 = lVar28 + (ulong)uVar5 * 4; + uVar1 = ((uVar20 - uVar5) - 4 >> 2) + 1; + iVar10 = uVar1 * 4; + puVar15 = (undefined8 *)(param_5 + lVar28); + pauVar14 = (undefined1 (*) [16])(param_3 + lVar28); + pauVar19 = (undefined1 (*) [16])(param_1 + lVar28); + do { + uVar22 = uVar22 + 1; + auVar29 = NEON_smax(*pauVar14,*pauVar19,4); + puVar15[1] = auVar29._8_8_; + *puVar15 = auVar29._0_8_; + puVar15 = puVar15 + 2; + pauVar14 = pauVar14 + 1; + pauVar19 = pauVar19 + 1; + } while (uVar22 < uVar1); + uVar1 = iVar17 + iVar10; + if (uVar20 - uVar5 != iVar10) { + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + iVar10 = *(int *)(param_3 + uVar16); + if (*(int *)(param_3 + uVar16) < *(int *)(param_1 + uVar16)) { + iVar10 = *(int *)(param_1 + uVar16); + } + *(int *)(param_5 + uVar16) = iVar10; + if ((int)(uVar1 + 1) < iVar6) { + lVar28 = uVar16 + 4; + iVar10 = *(int *)(param_3 + lVar28); + if (*(int *)(param_3 + lVar28) < *(int *)(param_1 + lVar28)) { + iVar10 = *(int *)(param_1 + lVar28); + } + *(int *)(param_5 + lVar28) = iVar10; + if ((int)(uVar1 + 2) < iVar6) { + lVar28 = uVar16 + 8; + iVar10 = *(int *)(param_3 + lVar28); + if (*(int *)(param_3 + lVar28) < *(int *)(param_1 + lVar28)) { + iVar10 = *(int *)(param_1 + lVar28); + } + *(int *)(param_5 + lVar28) = iVar10; + } + } + } + } + } + iVar25 = iVar25 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar25 != 0); + } + return; +} + + +================================================================== + +### FUNC 00235260 (1096 bytes) name=FUN_00235260 + +void FUN_00235260(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + undefined8 *puVar1; + long lVar2; + int *piVar3; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + int iVar8; + uint uVar9; + uint uVar10; + uint uVar11; + undefined8 *puVar12; + undefined8 *puVar13; + int *piVar14; + undefined8 *puVar15; + ulong uVar16; + undefined8 *puVar17; + int *piVar18; + int *piVar19; + uint uVar20; + long lVar21; + uint uVar22; + undefined8 *puVar23; + int iVar24; + long lVar25; + long lVar26; + long lVar27; + int iVar28; + int iVar29; + int iVar30; + undefined8 uVar31; + int iVar32; + int iVar33; + undefined8 uVar34; + int iVar35; + int iVar36; + int iVar37; + int iVar38; + int iVar39; + undefined8 uVar40; + undefined8 uVar41; + long lVar42; + + iVar24 = param_7[1]; + iVar7 = *param_7; + if (iVar24 != 0) { + uVar9 = iVar7 - 8U >> 3; + iVar8 = (uVar9 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar10 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar25 = ((long)iVar8 + 0x10) * 4; + lVar26 = lVar25 + -0x40; + lVar42 = NEON_shl((long)iVar8 + 4 + (ulong)uVar10 * 4,2); + iVar4 = iVar8 + 4 + uVar10 * 4; + do { + if (0 < iVar7 + -7) { + puVar15 = (undefined8 *)(param_3 + 0x10); + puVar17 = (undefined8 *)(param_5 + 0x10); + puVar13 = (undefined8 *)(param_1 + 0x10); + do { + puVar23 = puVar15 + -2; + uVar34 = puVar13[1]; + uVar31 = *puVar13; + uVar41 = puVar15[1]; + uVar40 = *puVar15; + puVar1 = puVar13 + 4; + puVar12 = puVar15 + -1; + puVar15 = puVar15 + 4; + iVar28 = (int)puVar13[-2]; + iVar33 = (int)*puVar23; + iVar29 = (int)((ulong)puVar13[-2] >> 0x20); + iVar35 = (int)((ulong)*puVar23 >> 0x20); + iVar30 = (int)puVar13[-1]; + iVar36 = (int)*puVar12; + iVar32 = (int)((ulong)puVar13[-1] >> 0x20); + iVar37 = (int)((ulong)*puVar12 >> 0x20); + puVar17[-1] = CONCAT44((iVar32 - iVar37) + (iVar37 - iVar32) * 2 * (uint)(iVar32 < iVar37) + ,(iVar30 - iVar36) + + (int)(CONCAT44(iVar37 - iVar32,iVar36 - iVar30) >> 0x1e) * 2 * + (uint)(iVar30 < iVar36)); + puVar17[-2] = CONCAT44((iVar29 - iVar35) + (iVar35 - iVar29) * 2 * (uint)(iVar29 < iVar35) + ,(iVar28 - iVar33) + + (iVar33 - iVar28) * 2 * (uint)(iVar28 < iVar33)); + iVar28 = (int)uVar31; + iVar33 = (int)uVar40; + iVar29 = (int)((ulong)uVar31 >> 0x20); + iVar35 = (int)((ulong)uVar40 >> 0x20); + iVar30 = (int)uVar34; + iVar36 = (int)uVar41; + iVar32 = (int)((ulong)uVar34 >> 0x20); + iVar37 = (int)((ulong)uVar41 >> 0x20); + puVar17[1] = CONCAT44((iVar32 - iVar37) + (iVar37 - iVar32) * 2 * (uint)(iVar32 < iVar37), + (iVar30 - iVar36) + + (int)(CONCAT44(iVar37 - iVar32,iVar36 - iVar30) >> 0x1e) * 2 * + (uint)(iVar30 < iVar36)); + *puVar17 = CONCAT44((iVar29 - iVar35) + (iVar35 - iVar29) * 2 * (uint)(iVar29 < iVar35), + (iVar28 - iVar33) + (iVar33 - iVar28) * 2 * (uint)(iVar28 < iVar33)); + puVar17 = puVar17 + 4; + puVar13 = puVar1; + } while (puVar1 != (undefined8 *)(param_1 + (ulong)uVar9 * 0x20 + 0x30)); + } + iVar28 = iVar8; + if (iVar8 < iVar7 + -3) { + piVar14 = (int *)(param_1 + lVar26); + piVar18 = (int *)(param_5 + lVar26); + piVar19 = (int *)(param_3 + lVar26); + iVar28 = iVar4; + if ((piVar14 < (int *)(param_5 + lVar25) && piVar18 < (int *)(param_1 + lVar25) || + piVar19 < (int *)(param_5 + lVar25) && piVar18 < (int *)(param_3 + lVar25)) || + (uVar10 + 1 < 3)) { + do { + piVar3 = piVar14 + 4; + iVar29 = *piVar19; + iVar30 = *piVar14; + uVar20 = piVar14[1] - piVar19[1] >> 0x1f; + piVar18[1] = (piVar14[1] - piVar19[1] ^ uVar20) - uVar20; + uVar20 = iVar30 - iVar29 >> 0x1f; + *piVar18 = (iVar30 - iVar29 ^ uVar20) - uVar20; + iVar29 = piVar19[2]; + iVar30 = piVar14[2]; + uVar20 = piVar14[3] - piVar19[3] >> 0x1f; + piVar18[3] = (piVar14[3] - piVar19[3] ^ uVar20) - uVar20; + uVar20 = iVar30 - iVar29 >> 0x1f; + piVar18[2] = (iVar30 - iVar29 ^ uVar20) - uVar20; + piVar14 = piVar3; + piVar18 = piVar18 + 4; + piVar19 = piVar19 + 4; + } while (piVar3 != (int *)(param_1 + lVar42)); + } + else { + uVar20 = 0; + do { + uVar20 = uVar20 + 1; + iVar29 = (int)*(undefined8 *)piVar14; + iVar35 = (int)*(undefined8 *)piVar19; + iVar30 = (int)((ulong)*(undefined8 *)piVar14 >> 0x20); + iVar36 = (int)((ulong)*(undefined8 *)piVar19 >> 0x20); + iVar32 = (int)*(undefined8 *)(piVar14 + 2); + iVar37 = (int)*(undefined8 *)(piVar19 + 2); + iVar33 = (int)((ulong)*(undefined8 *)(piVar14 + 2) >> 0x20); + iVar38 = (int)((ulong)*(undefined8 *)(piVar19 + 2) >> 0x20); + *(ulong *)(piVar18 + 2) = + CONCAT44((iVar33 - iVar38) + (iVar38 - iVar33) * 2 * (uint)(iVar33 < iVar38), + (iVar32 - iVar37) + + (int)(CONCAT44(iVar38 - iVar33,iVar37 - iVar32) >> 0x1e) * 2 * + (uint)(iVar32 < iVar37)); + *(ulong *)piVar18 = + CONCAT44((iVar30 - iVar36) + (iVar36 - iVar30) * 2 * (uint)(iVar30 < iVar36), + (iVar29 - iVar35) + (iVar35 - iVar29) * 2 * (uint)(iVar29 < iVar35)); + piVar14 = piVar14 + 4; + piVar18 = piVar18 + 4; + piVar19 = piVar19 + 4; + } while (uVar20 < uVar10 + 1); + } + } + if (iVar28 < iVar7) { + uVar20 = iVar7 - iVar28; + lVar21 = ((long)iVar28 + 4) * 4; + lVar27 = lVar21 + -0x10; + uVar16 = param_5 + lVar27; + uVar5 = param_1 + lVar27; + if ((uVar16 < (ulong)(param_1 + lVar21) && uVar5 < (ulong)(param_5 + lVar21) || + (ulong)(param_3 + lVar27) < (ulong)(param_5 + lVar21) && + uVar16 < (ulong)(param_3 + lVar21)) || (uVar20 < 8)) { + lVar21 = 0; + do { + uVar20 = *(int *)(uVar5 + lVar21) - *(int *)(param_3 + lVar27 + lVar21); + uVar6 = (int)uVar20 >> 0x1f; + *(uint *)(uVar16 + lVar21) = (uVar20 ^ uVar6) - uVar6; + lVar21 = lVar21 + 4; + } while (lVar21 != ((ulong)(uint)((iVar7 + -1) - iVar28) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + if (uVar20 < uVar6) { + uVar6 = uVar20; + } + iVar29 = iVar28; + if (uVar6 != 0) { + lVar21 = (long)iVar28 * 4; + iVar29 = iVar28 + 1; + uVar11 = *(int *)(param_1 + lVar21) - *(int *)(param_3 + lVar21); + uVar22 = (int)uVar11 >> 0x1f; + *(uint *)(param_5 + lVar21) = (uVar11 ^ uVar22) - uVar22; + if (uVar6 != 1) { + lVar2 = lVar21 + 4; + iVar29 = iVar28 + 2; + uVar11 = *(int *)(param_1 + lVar2) - *(int *)(param_3 + lVar2); + uVar22 = (int)uVar11 >> 0x1f; + *(uint *)(param_5 + lVar2) = (uVar11 ^ uVar22) - uVar22; + if (uVar6 == 3) { + lVar21 = lVar21 + 8; + iVar29 = iVar28 + 3; + uVar11 = *(int *)(param_1 + lVar21) - *(int *)(param_3 + lVar21); + uVar22 = (int)uVar11 >> 0x1f; + *(uint *)(param_5 + lVar21) = (uVar11 ^ uVar22) - uVar22; + } + } + } + uVar22 = 0; + lVar27 = lVar27 + (ulong)uVar6 * 4; + uVar11 = ((uVar20 - uVar6) - 4 >> 2) + 1; + iVar28 = uVar11 * 4; + puVar15 = (undefined8 *)(param_5 + lVar27); + puVar17 = (undefined8 *)(param_3 + lVar27); + puVar13 = (undefined8 *)(param_1 + lVar27); + do { + uVar22 = uVar22 + 1; + iVar30 = (int)*puVar13; + iVar36 = (int)*puVar17; + iVar32 = (int)((ulong)*puVar13 >> 0x20); + iVar37 = (int)((ulong)*puVar17 >> 0x20); + iVar33 = (int)puVar13[1]; + iVar38 = (int)puVar17[1]; + iVar35 = (int)((ulong)puVar13[1] >> 0x20); + iVar39 = (int)((ulong)puVar17[1] >> 0x20); + puVar15[1] = CONCAT44((iVar35 - iVar39) + + (iVar39 - iVar35) * 2 * (uint)(iVar35 < iVar39), + (iVar33 - iVar38) + + (int)(CONCAT44(iVar39 - iVar35,iVar38 - iVar33) >> 0x1e) * 2 * + (uint)(iVar33 < iVar38)); + *puVar15 = CONCAT44((iVar32 - iVar37) + (iVar37 - iVar32) * 2 * (uint)(iVar32 < iVar37), + (iVar30 - iVar36) + (iVar36 - iVar30) * 2 * (uint)(iVar30 < iVar36)) + ; + puVar15 = puVar15 + 2; + puVar17 = puVar17 + 2; + puVar13 = puVar13 + 2; + } while (uVar22 < uVar11); + uVar11 = iVar29 + iVar28; + if (uVar20 - uVar6 != iVar28) { + uVar16 = -(ulong)(uVar11 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar11 << 2; + uVar20 = *(int *)(param_1 + uVar16) - *(int *)(param_3 + uVar16); + uVar6 = (int)uVar20 >> 0x1f; + *(uint *)(param_5 + uVar16) = (uVar20 ^ uVar6) - uVar6; + if ((int)(uVar11 + 1) < iVar7) { + lVar27 = uVar16 + 4; + uVar20 = *(int *)(param_1 + lVar27) - *(int *)(param_3 + lVar27); + uVar6 = (int)uVar20 >> 0x1f; + *(uint *)(param_5 + lVar27) = (uVar20 ^ uVar6) - uVar6; + if ((int)(uVar11 + 2) < iVar7) { + lVar27 = uVar16 + 8; + uVar20 = *(int *)(param_1 + lVar27) - *(int *)(param_3 + lVar27); + uVar6 = (int)uVar20 >> 0x1f; + *(uint *)(param_5 + lVar27) = (uVar20 ^ uVar6) - uVar6; + } + } + } + } + } + iVar24 = iVar24 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 002356a8 (1696 bytes) name=FUN_002356a8 + +void FUN_002356a8(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + ushort *puVar4; + uint uVar5; + ulong uVar6; + uint uVar7; + int iVar8; + ushort uVar9; + ushort uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + int iVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined1 auVar18 [16]; + unkbyte10 Var19; + ushort uVar20; + undefined1 (*pauVar21) [16]; + ushort *puVar22; + ulong uVar23; + undefined8 *puVar24; + ulong uVar25; + int iVar26; + short *psVar27; + unkbyte10 *pVar28; + ushort *puVar29; + uint uVar30; + undefined1 (*pauVar31) [16]; + long lVar32; + undefined1 (*pauVar33) [16]; + undefined8 *puVar34; + int iVar35; + long lVar36; + long lVar37; + uint uVar38; + long lVar39; + undefined4 uVar40; + undefined4 uVar41; + undefined4 uVar42; + undefined4 uVar43; + undefined4 uVar44; + undefined4 uVar46; + undefined4 uVar47; + undefined1 auVar45 [16]; + undefined4 uVar48; + long lVar49; + + iVar35 = param_7[1]; + iVar8 = *param_7; + if (iVar35 != 0) { + uVar13 = iVar8 - 0x10; + uVar11 = ((uVar13 >> 4) + 1) * 0x10; + if ((int)uVar13 < 0) { + uVar11 = 0; + } + uVar14 = (iVar8 + -4) - uVar11; + lVar36 = ((long)(int)uVar11 + 0x20) * 2; + lVar37 = lVar36 + -0x40; + uVar12 = uVar14 >> 2; + uVar1 = (uVar12 - 1 >> 1) + 1; + uVar5 = uVar11 + 4 + uVar12 * 4; + lVar49 = NEON_shl((long)(int)uVar11 + 4 + (ulong)uVar12 * 4,1); + do { + if (-1 < (int)uVar13) { + pauVar21 = (undefined1 (*) [16])(param_1 + 0x10); + pVar28 = (unkbyte10 *)(param_3 + 0x10); + puVar24 = (undefined8 *)(param_5 + 0x10); + do { + pauVar33 = pauVar21 + -1; + pauVar31 = (undefined1 (*) [16])(pVar28 + -1); + auVar18 = *pauVar21; + uVar16 = *(undefined8 *)((long)pVar28 + 8); + Var19 = *pVar28; + pauVar21 = pauVar21 + 2; + pVar28 = pVar28 + 2; + auVar45 = NEON_uabd(*pauVar33,*pauVar31,2); + puVar24[-1] = auVar45._8_8_; + puVar24[-2] = auVar45._0_8_; + auVar45._10_2_ = (short)((ulong)uVar16 >> 0x10); + auVar45._0_10_ = Var19; + auVar45._12_2_ = (short)((ulong)uVar16 >> 0x20); + auVar45._14_2_ = (short)((ulong)uVar16 >> 0x30); + auVar45 = NEON_uabd(auVar18,auVar45,2); + puVar24[1] = auVar45._8_8_; + *puVar24 = auVar45._0_8_; + puVar24 = puVar24 + 4; + } while (pauVar21 != (undefined1 (*) [16])(param_1 + (ulong)(uVar13 >> 4) * 0x20 + 0x30)); + } + uVar2 = uVar11; + if ((int)uVar11 < iVar8 + -3) { + puVar22 = (ushort *)(param_1 + lVar37); + psVar27 = (short *)(param_5 + lVar37); + puVar29 = (ushort *)(param_3 + lVar37); + uVar2 = uVar5; + if ((puVar22 < (ushort *)(param_5 + lVar36) && psVar27 < (short *)(param_1 + lVar36) || + puVar29 < (ushort *)(param_5 + lVar36) && psVar27 < (short *)(param_3 + lVar36)) || + (uVar12 + 1 < 3)) { + do { + puVar4 = puVar22 + 4; + uVar9 = *puVar29; + uVar10 = *puVar22; + uVar20 = (ushort)((int)((uint)puVar22[1] - (uint)puVar29[1]) >> 0x1f); + psVar27[1] = ((ushort)((uint)puVar22[1] - (uint)puVar29[1]) ^ uVar20) - uVar20; + uVar20 = (ushort)((int)((uint)uVar10 - (uint)uVar9) >> 0x1f); + *psVar27 = ((ushort)((uint)uVar10 - (uint)uVar9) ^ uVar20) - uVar20; + uVar9 = puVar29[2]; + uVar10 = puVar22[2]; + uVar20 = (ushort)((int)((uint)puVar22[3] - (uint)puVar29[3]) >> 0x1f); + psVar27[3] = ((ushort)((uint)puVar22[3] - (uint)puVar29[3]) ^ uVar20) - uVar20; + uVar20 = (ushort)((int)((uint)uVar10 - (uint)uVar9) >> 0x1f); + psVar27[2] = ((ushort)((uint)uVar10 - (uint)uVar9) ^ uVar20) - uVar20; + puVar22 = puVar4; + psVar27 = psVar27 + 4; + puVar29 = puVar29 + 4; + } while (puVar4 != (ushort *)(param_1 + lVar49)); + } + else { + uVar30 = uVar11; + if (3 < uVar14) { + uVar30 = 0; + do { + uVar17 = *(undefined8 *)(puVar29 + 4); + uVar16 = *(undefined8 *)puVar29; + uVar30 = uVar30 + 1; + uVar44 = MP_INT_ABS((uint)*puVar22 - (uint)(ushort)uVar16); + uVar46 = MP_INT_ABS((uint)puVar22[1] - (uint)(ushort)((ulong)uVar16 >> 0x10)); + uVar47 = MP_INT_ABS((uint)puVar22[2] - (uint)(ushort)((ulong)uVar16 >> 0x20)); + uVar48 = MP_INT_ABS((uint)puVar22[3] - (uint)(ushort)((ulong)uVar16 >> 0x30)); + uVar40 = MP_INT_ABS((uint)puVar22[4] - (uint)(ushort)uVar17); + uVar41 = MP_INT_ABS((uint)puVar22[5] - (uint)(ushort)((ulong)uVar17 >> 0x10)); + uVar42 = MP_INT_ABS((uint)puVar22[6] - (uint)(ushort)((ulong)uVar17 >> 0x20)); + uVar43 = MP_INT_ABS((uint)puVar22[7] - (uint)(ushort)((ulong)uVar17 >> 0x30)); + *(ulong *)(psVar27 + 4) = + CONCAT26((short)uVar43, + CONCAT24((short)uVar42,CONCAT22((short)uVar41,(short)uVar40))); + *(ulong *)psVar27 = + CONCAT26((short)uVar48, + CONCAT24((short)uVar47,CONCAT22((short)uVar46,(short)uVar44))); + puVar22 = puVar22 + 8; + psVar27 = psVar27 + 8; + puVar29 = puVar29 + 8; + } while (uVar30 < uVar1); + uVar30 = uVar11 + uVar1 * 8; + if (uVar12 + 1 == uVar1 * 2) goto LAB_002358e4; + } + uVar23 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar30 << 1; + lVar39 = uVar23 + 2; + lVar32 = uVar23 + 4; + lVar3 = uVar23 + 6; + iVar15 = (uint)*(ushort *)(param_1 + uVar23) - (uint)*(ushort *)(param_3 + uVar23); + iVar26 = (uint)*(ushort *)(param_1 + lVar39) - (uint)*(ushort *)(param_3 + lVar39); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + uVar23) = ((ushort)iVar15 ^ uVar9) - uVar9; + uVar9 = (ushort)(iVar26 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar26 ^ uVar9) - uVar9; + iVar15 = (uint)*(ushort *)(param_1 + lVar32) - (uint)*(ushort *)(param_3 + lVar32); + iVar26 = (uint)*(ushort *)(param_1 + lVar3) - (uint)*(ushort *)(param_3 + lVar3); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar32) = ((ushort)iVar15 ^ uVar9) - uVar9; + uVar9 = (ushort)(iVar26 >> 0x1f); + *(ushort *)(param_5 + lVar3) = ((ushort)iVar26 ^ uVar9) - uVar9; + } + } +LAB_002358e4: + uVar23 = (ulong)uVar2; + if ((int)uVar2 < iVar8) { + uVar30 = iVar8 - uVar2; + lVar32 = ((long)(int)uVar2 + 8) * 2; + lVar39 = lVar32 + -0x10; + uVar25 = param_5 + lVar39; + uVar6 = param_1 + lVar39; + if ((uVar25 < (ulong)(param_1 + lVar32) && uVar6 < (ulong)(param_5 + lVar32) || + (ulong)(param_3 + lVar39) < (ulong)(param_5 + lVar32) && + uVar25 < (ulong)(param_3 + lVar32)) || (uVar30 < 10)) { + lVar32 = 0; + do { + iVar15 = (uint)*(ushort *)(uVar6 + lVar32) - + (uint)*(ushort *)(param_3 + lVar39 + lVar32); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(uVar25 + lVar32) = ((ushort)iVar15 ^ uVar9) - uVar9; + lVar32 = lVar32 + 2; + } while (lVar32 != ((ulong)((iVar8 + -1) - uVar2) + 1) * 2); + } + else { + uVar7 = -((uint)(uVar6 >> 1) & 7) & 7; + if (uVar30 < uVar7) { + uVar7 = uVar30; + } + if (uVar7 != 0) { + lVar32 = (long)(int)uVar2 * 2; + uVar38 = uVar2 + 1; + iVar15 = (uint)*(ushort *)(param_1 + lVar32) - (uint)*(ushort *)(param_3 + lVar32); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar32) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (uVar7 != 1) { + lVar3 = lVar32 + 2; + uVar38 = uVar2 + 2; + iVar15 = (uint)*(ushort *)(param_1 + lVar3) - (uint)*(ushort *)(param_3 + lVar3); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar3) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (uVar7 != 2) { + lVar3 = lVar32 + 4; + uVar38 = uVar2 + 3; + iVar15 = (uint)*(ushort *)(param_1 + lVar3) - (uint)*(ushort *)(param_3 + lVar3); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar3) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (uVar7 != 3) { + lVar3 = lVar32 + 6; + uVar38 = uVar2 + 4; + iVar15 = (uint)*(ushort *)(param_1 + lVar3) - (uint)*(ushort *)(param_3 + lVar3); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar3) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (uVar7 != 4) { + lVar3 = lVar32 + 8; + uVar38 = uVar2 + 5; + iVar15 = (uint)*(ushort *)(param_1 + lVar3) - (uint)*(ushort *)(param_3 + lVar3) + ; + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar3) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (uVar7 != 5) { + lVar3 = lVar32 + 10; + uVar38 = uVar2 + 6; + iVar15 = (uint)*(ushort *)(param_1 + lVar3) - + (uint)*(ushort *)(param_3 + lVar3); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar3) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (uVar7 == 7) { + lVar32 = lVar32 + 0xc; + uVar23 = (ulong)(uVar2 + 7); + iVar15 = (uint)*(ushort *)(param_1 + lVar32) - + (uint)*(ushort *)(param_3 + lVar32); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar32) = ((ushort)iVar15 ^ uVar9) - uVar9; + goto LAB_00235a94; + } + } + } + } + } + } + uVar23 = (ulong)uVar38; + } +LAB_00235a94: + uVar2 = ((uVar30 - uVar7) - 8 >> 3) + 1; + iVar15 = uVar2 * 8; + if (6 < (uVar30 - 1) - uVar7) { + lVar39 = lVar39 + (ulong)uVar7 * 2; + uVar38 = 0; + puVar24 = (undefined8 *)(param_5 + lVar39); + puVar34 = (undefined8 *)(param_3 + lVar39); + puVar22 = (ushort *)(param_1 + lVar39); + do { + uVar17 = puVar34[1]; + uVar16 = *puVar34; + uVar38 = uVar38 + 1; + uVar44 = MP_INT_ABS((uint)*puVar22 - (uint)(ushort)uVar16); + uVar46 = MP_INT_ABS((uint)puVar22[1] - (uint)(ushort)((ulong)uVar16 >> 0x10)); + uVar47 = MP_INT_ABS((uint)puVar22[2] - (uint)(ushort)((ulong)uVar16 >> 0x20)); + uVar48 = MP_INT_ABS((uint)puVar22[3] - (uint)(ushort)((ulong)uVar16 >> 0x30)); + uVar40 = MP_INT_ABS((uint)puVar22[4] - (uint)(ushort)uVar17); + uVar41 = MP_INT_ABS((uint)puVar22[5] - (uint)(ushort)((ulong)uVar17 >> 0x10)); + uVar42 = MP_INT_ABS((uint)puVar22[6] - (uint)(ushort)((ulong)uVar17 >> 0x20)); + uVar43 = MP_INT_ABS((uint)puVar22[7] - (uint)(ushort)((ulong)uVar17 >> 0x30)); + puVar24[1] = CONCAT26((short)uVar43, + CONCAT24((short)uVar42,CONCAT22((short)uVar41,(short)uVar40))); + *puVar24 = CONCAT26((short)uVar48, + CONCAT24((short)uVar47,CONCAT22((short)uVar46,(short)uVar44))); + puVar24 = puVar24 + 2; + puVar34 = puVar34 + 2; + puVar22 = puVar22 + 8; + } while (uVar38 < uVar2); + uVar23 = (ulong)(uint)((int)uVar23 + iVar15); + if (uVar30 - uVar7 == iVar15) goto LAB_00235c30; + } + uVar25 = -(uVar23 >> 0x1f) & 0xfffffffe00000000 | uVar23 << 1; + iVar26 = (int)uVar23; + iVar15 = (uint)*(ushort *)(param_1 + uVar25) - (uint)*(ushort *)(param_3 + uVar25); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + uVar25) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (iVar26 + 1 < iVar8) { + lVar39 = uVar25 + 2; + iVar15 = (uint)*(ushort *)(param_1 + lVar39) - (uint)*(ushort *)(param_3 + lVar39); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (iVar26 + 2 < iVar8) { + lVar39 = uVar25 + 4; + iVar15 = (uint)*(ushort *)(param_1 + lVar39) - (uint)*(ushort *)(param_3 + lVar39); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (iVar26 + 3 < iVar8) { + lVar39 = uVar25 + 6; + iVar15 = (uint)*(ushort *)(param_1 + lVar39) - (uint)*(ushort *)(param_3 + lVar39); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (iVar26 + 4 < iVar8) { + lVar39 = uVar25 + 8; + iVar15 = (uint)*(ushort *)(param_1 + lVar39) - (uint)*(ushort *)(param_3 + lVar39) + ; + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (iVar26 + 5 < iVar8) { + lVar39 = uVar25 + 10; + iVar15 = (uint)*(ushort *)(param_1 + lVar39) - + (uint)*(ushort *)(param_3 + lVar39); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar15 ^ uVar9) - uVar9; + if (iVar26 + 6 < iVar8) { + lVar39 = uVar25 + 0xc; + iVar15 = (uint)*(ushort *)(param_1 + lVar39) - + (uint)*(ushort *)(param_3 + lVar39); + uVar9 = (ushort)(iVar15 >> 0x1f); + *(ushort *)(param_5 + lVar39) = ((ushort)iVar15 ^ uVar9) - uVar9; + } + } + } + } + } + } + } + } +LAB_00235c30: + iVar35 = iVar35 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar35 != 0); + } + return; +} + + +================================================================== + +### FUNC 00235d48 (1564 bytes) name=FUN_00235d48 + +void FUN_00235d48(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + uint uVar4; + ulong uVar5; + ulong uVar6; + uint uVar7; + short sVar8; + int iVar9; + short sVar10; + short sVar11; + short sVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + undefined1 auVar17 [16]; + undefined1 *puVar18; + undefined1 (*pauVar19) [16]; + undefined1 (*pauVar20) [16]; + ulong uVar21; + undefined8 *puVar22; + ulong uVar23; + int iVar24; + short *psVar25; + uint uVar26; + undefined1 (*pauVar27) [16]; + long lVar28; + undefined1 (*pauVar29) [16]; + int iVar30; + long lVar31; + long lVar32; + uint uVar33; + long lVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + long lVar37; + + iVar30 = param_7[1]; + iVar9 = *param_7; + if (iVar30 != 0) { + uVar15 = iVar9 - 0x10; + uVar13 = ((uVar15 >> 4) + 1) * 0x10; + if ((int)uVar15 < 0) { + uVar13 = 0; + } + uVar16 = (iVar9 + -4) - uVar13; + lVar31 = ((long)(int)uVar13 + 0x20) * 2; + lVar32 = lVar31 + -0x40; + uVar14 = uVar16 >> 2; + uVar1 = (uVar14 - 1 >> 1) + 1; + uVar4 = uVar13 + 4 + uVar14 * 4; + lVar37 = NEON_shl((long)(int)uVar13 + 4 + (ulong)uVar14 * 4,1); + do { + if (-1 < (int)uVar15) { + pauVar19 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar20 = (undefined1 (*) [16])(param_3 + 0x10); + puVar22 = (undefined8 *)(param_5 + 0x10); + do { + pauVar29 = pauVar19 + -1; + pauVar27 = pauVar20 + -1; + auVar35 = *pauVar19; + pauVar19 = pauVar19 + 2; + auVar17 = *pauVar20; + pauVar20 = pauVar20 + 2; + auVar36 = NEON_smax(*pauVar29,*pauVar27,2); + auVar35 = NEON_smax(auVar35,auVar17,2); + puVar22[-1] = auVar36._8_8_; + puVar22[-2] = auVar36._0_8_; + puVar22[1] = auVar35._8_8_; + *puVar22 = auVar35._0_8_; + puVar22 = puVar22 + 4; + } while (pauVar19 != (undefined1 (*) [16])(param_1 + (ulong)(uVar15 >> 4) * 0x20 + 0x30)); + } + uVar2 = uVar13; + if ((int)uVar13 < iVar9 + -3) { + pauVar19 = (undefined1 (*) [16])(param_1 + lVar32); + psVar25 = (short *)(param_5 + lVar32); + pauVar20 = (undefined1 (*) [16])(param_3 + lVar32); + uVar2 = uVar4; + if ((pauVar19 < (undefined1 (*) [16])(param_5 + lVar31) && + psVar25 < (short *)(param_1 + lVar31) || + pauVar20 < (undefined1 (*) [16])(param_5 + lVar31) && + psVar25 < (short *)(param_3 + lVar31)) || (uVar14 + 1 < 4)) { + do { + puVar18 = *pauVar19; + sVar11 = *(short *)*pauVar19; + sVar12 = *(short *)*pauVar20; + sVar10 = *(short *)*pauVar20; + sVar8 = *(short *)(*pauVar20 + 2); + if (*(short *)(*pauVar20 + 2) < *(short *)(*pauVar19 + 2)) { + sVar8 = *(short *)(*pauVar19 + 2); + } + psVar25[1] = sVar8; + if (sVar10 < sVar11) { + sVar12 = sVar11; + } + *psVar25 = sVar12; + sVar10 = *(short *)(*pauVar19 + 4); + sVar12 = *(short *)(*pauVar20 + 4); + sVar8 = *(short *)(*pauVar20 + 6); + if (*(short *)(*pauVar20 + 6) < *(short *)(*pauVar19 + 6)) { + sVar8 = *(short *)(*pauVar19 + 6); + } + sVar11 = *(short *)(*pauVar20 + 4); + psVar25[3] = sVar8; + if (sVar11 < sVar10) { + sVar12 = sVar10; + } + psVar25[2] = sVar12; + pauVar20 = (undefined1 (*) [16])(*pauVar20 + 8); + pauVar19 = (undefined1 (*) [16])(puVar18 + 8); + psVar25 = psVar25 + 4; + } while ((undefined1 (*) [16])(puVar18 + 8) != (undefined1 (*) [16])(param_1 + lVar37)); + } + else { + uVar26 = uVar13; + if (3 < uVar16) { + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + auVar35 = NEON_smax(*pauVar20,*pauVar19,2); + *(long *)(psVar25 + 4) = auVar35._8_8_; + *(long *)psVar25 = auVar35._0_8_; + pauVar20 = pauVar20 + 1; + pauVar19 = pauVar19 + 1; + psVar25 = psVar25 + 8; + } while (uVar26 < uVar1); + uVar26 = uVar13 + uVar1 * 8; + if (uVar14 + 1 == uVar1 * 2) goto LAB_00235f60; + } + uVar21 = -(ulong)(uVar26 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar26 << 1; + lVar34 = uVar21 + 2; + lVar28 = uVar21 + 4; + lVar3 = uVar21 + 6; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + sVar12 = *(short *)(param_3 + uVar21); + if (*(short *)(param_3 + uVar21) < *(short *)(param_1 + uVar21)) { + sVar12 = *(short *)(param_1 + uVar21); + } + *(short *)(param_5 + uVar21) = sVar12; + *(short *)(param_5 + lVar34) = sVar8; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_3 + lVar3) < *(short *)(param_1 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + sVar12 = *(short *)(param_3 + lVar28); + if (*(short *)(param_3 + lVar28) < *(short *)(param_1 + lVar28)) { + sVar12 = *(short *)(param_1 + lVar28); + } + *(short *)(param_5 + lVar28) = sVar12; + *(short *)(param_5 + lVar3) = sVar8; + } + } +LAB_00235f60: + uVar21 = (ulong)uVar2; + if ((int)uVar2 < iVar9) { + uVar26 = iVar9 - uVar2; + lVar28 = ((long)(int)uVar2 + 8) * 2; + lVar34 = lVar28 + -0x10; + uVar23 = param_5 + lVar34; + uVar5 = param_1 + lVar34; + uVar6 = param_3 + lVar34; + if ((uVar23 < (ulong)(param_1 + lVar28) && uVar5 < (ulong)(param_5 + lVar28) || + uVar6 < (ulong)(param_5 + lVar28) && uVar23 < (ulong)(param_3 + lVar28)) || + (uVar26 < 0xc)) { + lVar34 = 0; + do { + sVar8 = *(short *)(uVar6 + lVar34); + if (*(short *)(uVar6 + lVar34) < *(short *)(uVar5 + lVar34)) { + sVar8 = *(short *)(uVar5 + lVar34); + } + *(short *)(uVar23 + lVar34) = sVar8; + lVar34 = lVar34 + 2; + } while (lVar34 != ((ulong)((iVar9 + -1) - uVar2) + 1) * 2); + } + else { + uVar7 = -((uint)(uVar5 >> 1) & 7) & 7; + if (uVar26 < uVar7) { + uVar7 = uVar26; + } + if (uVar7 != 0) { + lVar28 = (long)(int)uVar2 * 2; + uVar33 = uVar2 + 1; + sVar8 = *(short *)(param_3 + lVar28); + if (*(short *)(param_3 + lVar28) < *(short *)(param_1 + lVar28)) { + sVar8 = *(short *)(param_1 + lVar28); + } + *(short *)(param_5 + lVar28) = sVar8; + if (uVar7 != 1) { + lVar3 = lVar28 + 2; + uVar33 = uVar2 + 2; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_3 + lVar3) < *(short *)(param_1 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 2) { + lVar3 = lVar28 + 4; + uVar33 = uVar2 + 3; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_3 + lVar3) < *(short *)(param_1 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 3) { + lVar3 = lVar28 + 6; + uVar33 = uVar2 + 4; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_3 + lVar3) < *(short *)(param_1 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 4) { + lVar3 = lVar28 + 8; + uVar33 = uVar2 + 5; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_3 + lVar3) < *(short *)(param_1 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 5) { + lVar3 = lVar28 + 10; + uVar33 = uVar2 + 6; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_3 + lVar3) < *(short *)(param_1 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 == 7) { + lVar28 = lVar28 + 0xc; + uVar21 = (ulong)(uVar2 + 7); + sVar8 = *(short *)(param_3 + lVar28); + if (*(short *)(param_3 + lVar28) < *(short *)(param_1 + lVar28)) { + sVar8 = *(short *)(param_1 + lVar28); + } + *(short *)(param_5 + lVar28) = sVar8; + goto LAB_002360f4; + } + } + } + } + } + } + uVar21 = (ulong)uVar33; + } +LAB_002360f4: + uVar2 = ((uVar26 - uVar7) - 8 >> 3) + 1; + iVar24 = uVar2 * 8; + if (6 < (uVar26 - 1) - uVar7) { + lVar34 = lVar34 + (ulong)uVar7 * 2; + uVar33 = 0; + puVar22 = (undefined8 *)(param_5 + lVar34); + pauVar19 = (undefined1 (*) [16])(param_3 + lVar34); + pauVar20 = (undefined1 (*) [16])(param_1 + lVar34); + do { + uVar33 = uVar33 + 1; + auVar35 = NEON_smax(*pauVar19,*pauVar20,2); + puVar22[1] = auVar35._8_8_; + *puVar22 = auVar35._0_8_; + puVar22 = puVar22 + 2; + pauVar19 = pauVar19 + 1; + pauVar20 = pauVar20 + 1; + } while (uVar33 < uVar2); + uVar21 = (ulong)(uint)((int)uVar21 + iVar24); + if (uVar26 - uVar7 == iVar24) goto LAB_00236260; + } + uVar23 = -(uVar21 >> 0x1f) & 0xfffffffe00000000 | uVar21 << 1; + iVar24 = (int)uVar21; + sVar8 = *(short *)(param_3 + uVar23); + if (*(short *)(param_3 + uVar23) < *(short *)(param_1 + uVar23)) { + sVar8 = *(short *)(param_1 + uVar23); + } + *(short *)(param_5 + uVar23) = sVar8; + if (iVar24 + 1 < iVar9) { + lVar34 = uVar23 + 2; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 2 < iVar9) { + lVar34 = uVar23 + 4; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 3 < iVar9) { + lVar34 = uVar23 + 6; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 4 < iVar9) { + lVar34 = uVar23 + 8; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 5 < iVar9) { + lVar34 = uVar23 + 10; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 6 < iVar9) { + lVar34 = uVar23 + 0xc; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_3 + lVar34) < *(short *)(param_1 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + } + } + } + } + } + } + } + } +LAB_00236260: + iVar30 = iVar30 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar30 != 0); + } + return; +} + + +================================================================== + +### FUNC 00236364 (1480 bytes) name=FUN_00236364 + +void FUN_00236364(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + uint uVar4; + ulong uVar5; + uint uVar6; + int iVar7; + ushort uVar8; + ushort uVar9; + ushort uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + undefined1 auVar15 [16]; + undefined1 *puVar16; + undefined1 (*pauVar17) [16]; + ulong uVar18; + undefined8 *puVar19; + ulong uVar20; + int iVar21; + ushort *puVar22; + undefined1 (*pauVar23) [16]; + uint uVar24; + undefined1 (*pauVar25) [16]; + long lVar26; + undefined1 (*pauVar27) [16]; + int iVar28; + long lVar29; + long lVar30; + uint uVar31; + long lVar32; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + long lVar35; + + iVar28 = param_7[1]; + iVar7 = *param_7; + if (iVar28 != 0) { + uVar13 = iVar7 - 0x10; + uVar11 = ((uVar13 >> 4) + 1) * 0x10; + if ((int)uVar13 < 0) { + uVar11 = 0; + } + uVar14 = (iVar7 + -4) - uVar11; + lVar29 = ((long)(int)uVar11 + 0x20) * 2; + lVar30 = lVar29 + -0x40; + uVar12 = uVar14 >> 2; + uVar1 = (uVar12 - 1 >> 1) + 1; + uVar4 = uVar11 + 4 + uVar12 * 4; + lVar35 = NEON_shl((long)(int)uVar11 + 4 + (ulong)uVar12 * 4,1); + do { + if (-1 < (int)uVar13) { + pauVar17 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar23 = (undefined1 (*) [16])(param_3 + 0x10); + puVar19 = (undefined8 *)(param_5 + 0x10); + do { + pauVar27 = pauVar17 + -1; + pauVar25 = pauVar23 + -1; + auVar33 = *pauVar17; + pauVar17 = pauVar17 + 2; + auVar15 = *pauVar23; + pauVar23 = pauVar23 + 2; + auVar34 = NEON_umax(*pauVar27,*pauVar25,2); + auVar33 = NEON_umax(auVar33,auVar15,2); + puVar19[-1] = auVar34._8_8_; + puVar19[-2] = auVar34._0_8_; + puVar19[1] = auVar33._8_8_; + *puVar19 = auVar33._0_8_; + puVar19 = puVar19 + 4; + } while (pauVar17 != (undefined1 (*) [16])(param_1 + (ulong)(uVar13 >> 4) * 0x20 + 0x30)); + } + uVar2 = uVar11; + if ((int)uVar11 < iVar7 + -3) { + pauVar17 = (undefined1 (*) [16])(param_1 + lVar30); + puVar22 = (ushort *)(param_5 + lVar30); + pauVar23 = (undefined1 (*) [16])(param_3 + lVar30); + uVar2 = uVar4; + if ((pauVar17 < (undefined1 (*) [16])(param_5 + lVar29) && + puVar22 < (ushort *)(param_1 + lVar29) || + pauVar23 < (undefined1 (*) [16])(param_5 + lVar29) && + puVar22 < (ushort *)(param_3 + lVar29)) || (uVar12 + 1 < 4)) { + do { + puVar16 = *pauVar17; + uVar9 = *(ushort *)*pauVar17; + uVar10 = *(ushort *)*pauVar23; + uVar8 = *(ushort *)(*pauVar23 + 2); + if (*(ushort *)(*pauVar23 + 2) < *(ushort *)(*pauVar17 + 2)) { + uVar8 = *(ushort *)(*pauVar17 + 2); + } + puVar22[1] = uVar8; + if (uVar10 < uVar9) { + uVar10 = uVar9; + } + *puVar22 = uVar10; + uVar9 = *(ushort *)(*pauVar17 + 4); + uVar10 = *(ushort *)(*pauVar23 + 4); + uVar8 = *(ushort *)(*pauVar23 + 6); + if (*(ushort *)(*pauVar23 + 6) < *(ushort *)(*pauVar17 + 6)) { + uVar8 = *(ushort *)(*pauVar17 + 6); + } + puVar22[3] = uVar8; + if (uVar10 < uVar9) { + uVar10 = uVar9; + } + puVar22[2] = uVar10; + pauVar17 = (undefined1 (*) [16])(puVar16 + 8); + puVar22 = puVar22 + 4; + pauVar23 = (undefined1 (*) [16])(*pauVar23 + 8); + } while ((undefined1 (*) [16])(puVar16 + 8) != (undefined1 (*) [16])(param_1 + lVar35)); + } + else { + uVar24 = uVar11; + if (3 < uVar14) { + uVar24 = 0; + do { + uVar24 = uVar24 + 1; + auVar33 = NEON_umax(*pauVar23,*pauVar17,2); + *(long *)(puVar22 + 4) = auVar33._8_8_; + *(long *)puVar22 = auVar33._0_8_; + pauVar17 = pauVar17 + 1; + puVar22 = puVar22 + 8; + pauVar23 = pauVar23 + 1; + } while (uVar24 < uVar1); + uVar24 = uVar11 + uVar1 * 8; + if (uVar12 + 1 == uVar1 * 2) goto LAB_0023656c; + } + uVar18 = -(ulong)(uVar24 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar24 << 1; + lVar32 = uVar18 + 2; + lVar26 = uVar18 + 4; + lVar3 = uVar18 + 6; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + uVar10 = *(ushort *)(param_3 + uVar18); + if (*(ushort *)(param_3 + uVar18) < *(ushort *)(param_1 + uVar18)) { + uVar10 = *(ushort *)(param_1 + uVar18); + } + *(ushort *)(param_5 + uVar18) = uVar10; + *(ushort *)(param_5 + lVar32) = uVar8; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_3 + lVar3) < *(ushort *)(param_1 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + uVar10 = *(ushort *)(param_3 + lVar26); + if (*(ushort *)(param_3 + lVar26) < *(ushort *)(param_1 + lVar26)) { + uVar10 = *(ushort *)(param_1 + lVar26); + } + *(ushort *)(param_5 + lVar26) = uVar10; + *(ushort *)(param_5 + lVar3) = uVar8; + } + } +LAB_0023656c: + uVar18 = (ulong)uVar2; + if ((int)uVar2 < iVar7) { + uVar24 = iVar7 - uVar2; + lVar26 = ((long)(int)uVar2 + 8) * 2; + lVar32 = lVar26 + -0x10; + uVar20 = param_5 + lVar32; + uVar5 = param_1 + lVar32; + if ((uVar20 < (ulong)(param_1 + lVar26) && uVar5 < (ulong)(param_5 + lVar26) || + (ulong)(param_3 + lVar32) < (ulong)(param_5 + lVar26) && + uVar20 < (ulong)(param_3 + lVar26)) || (uVar24 < 0xc)) { + lVar26 = 0; + do { + uVar8 = *(ushort *)(param_3 + lVar32 + lVar26); + if (uVar8 < *(ushort *)(uVar5 + lVar26)) { + uVar8 = *(ushort *)(uVar5 + lVar26); + } + *(ushort *)(uVar20 + lVar26) = uVar8; + lVar26 = lVar26 + 2; + } while (lVar26 != ((ulong)((iVar7 + -1) - uVar2) + 1) * 2); + } + else { + uVar6 = -((uint)(uVar5 >> 1) & 7) & 7; + if (uVar24 < uVar6) { + uVar6 = uVar24; + } + if (uVar6 != 0) { + lVar26 = (long)(int)uVar2 * 2; + uVar8 = *(ushort *)(param_3 + lVar26); + if (*(ushort *)(param_3 + lVar26) < *(ushort *)(param_1 + lVar26)) { + uVar8 = *(ushort *)(param_1 + lVar26); + } + *(ushort *)(param_5 + lVar26) = uVar8; + if (uVar6 == 1) { + uVar18 = (ulong)(uVar2 + 1); + } + else { + lVar3 = lVar26 + 2; + uVar31 = uVar2 + 2; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_3 + lVar3) < *(ushort *)(param_1 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 2) { + lVar3 = lVar26 + 4; + uVar31 = uVar2 + 3; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_3 + lVar3) < *(ushort *)(param_1 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 3) { + lVar3 = lVar26 + 6; + uVar31 = uVar2 + 4; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_3 + lVar3) < *(ushort *)(param_1 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 4) { + lVar3 = lVar26 + 8; + uVar31 = uVar2 + 5; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_3 + lVar3) < *(ushort *)(param_1 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 5) { + lVar3 = lVar26 + 10; + uVar31 = uVar2 + 6; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_3 + lVar3) < *(ushort *)(param_1 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 == 7) { + lVar26 = lVar26 + 0xc; + uVar18 = (ulong)(uVar2 + 7); + uVar8 = *(ushort *)(param_3 + lVar26); + if (*(ushort *)(param_3 + lVar26) < *(ushort *)(param_1 + lVar26)) { + uVar8 = *(ushort *)(param_1 + lVar26); + } + *(ushort *)(param_5 + lVar26) = uVar8; + goto LAB_002366e4; + } + } + } + } + } + uVar18 = (ulong)uVar31; + } + } +LAB_002366e4: + uVar2 = ((uVar24 - uVar6) - 8 >> 3) + 1; + iVar21 = uVar2 * 8; + if (6 < (uVar24 - 1) - uVar6) { + lVar32 = lVar32 + (ulong)uVar6 * 2; + uVar31 = 0; + puVar19 = (undefined8 *)(param_5 + lVar32); + pauVar17 = (undefined1 (*) [16])(param_3 + lVar32); + pauVar23 = (undefined1 (*) [16])(param_1 + lVar32); + do { + uVar31 = uVar31 + 1; + auVar33 = NEON_umax(*pauVar17,*pauVar23,2); + puVar19[1] = auVar33._8_8_; + *puVar19 = auVar33._0_8_; + puVar19 = puVar19 + 2; + pauVar17 = pauVar17 + 1; + pauVar23 = pauVar23 + 1; + } while (uVar31 < uVar2); + uVar18 = (ulong)(uint)((int)uVar18 + iVar21); + if (uVar24 - uVar6 == iVar21) goto LAB_00236834; + } + uVar20 = -(uVar18 >> 0x1f) & 0xfffffffe00000000 | uVar18 << 1; + iVar21 = (int)uVar18; + uVar8 = *(ushort *)(param_3 + uVar20); + if (*(ushort *)(param_3 + uVar20) < *(ushort *)(param_1 + uVar20)) { + uVar8 = *(ushort *)(param_1 + uVar20); + } + *(ushort *)(param_5 + uVar20) = uVar8; + if (iVar21 + 1 < iVar7) { + lVar32 = uVar20 + 2; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 2 < iVar7) { + lVar32 = uVar20 + 4; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 3 < iVar7) { + lVar32 = uVar20 + 6; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 4 < iVar7) { + lVar32 = uVar20 + 8; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 5 < iVar7) { + lVar32 = uVar20 + 10; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 6 < iVar7) { + lVar32 = uVar20 + 0xc; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_3 + lVar32) < *(ushort *)(param_1 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + } + } + } + } + } + } + } + } +LAB_00236834: + iVar28 = iVar28 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar28 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023692c (2416 bytes) name=FUN_0023692c + +void FUN_0023692c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + long lVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + uint uVar7; + char cVar8; + int iVar9; + byte bVar10; + char cVar11; + char cVar12; + int iVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + uint uVar18; + undefined1 auVar19 [16]; + uint uVar20; + undefined1 *puVar21; + int iVar22; + undefined1 (*pauVar23) [16]; + undefined1 (*pauVar24) [16]; + undefined8 *puVar25; + char *pcVar26; + uint uVar27; + undefined1 (*pauVar28) [16]; + uint uVar29; + undefined1 (*pauVar30) [16]; + long lVar31; + long lVar32; + int iVar33; + long lVar34; + long lVar35; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + + iVar33 = param_7[1]; + iVar9 = *param_7; + if (iVar33 != 0) { + uVar16 = iVar9 - 0x20; + iVar13 = ((uVar16 >> 5) + 1) * 0x20; + if ((int)uVar16 < 0) { + iVar13 = 0; + } + iVar17 = iVar9 + -3; + uVar18 = (iVar9 + -4) - iVar13; + lVar34 = (long)iVar13; + uVar15 = uVar18 >> 2; + uVar1 = (uVar15 - 3 >> 2) + 1; + iVar4 = iVar13 + 4 + uVar15 * 4; + lVar2 = lVar34 + 0x40; + do { + if (-1 < (int)uVar16) { + pauVar23 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar24 = (undefined1 (*) [16])(param_3 + 0x10); + puVar25 = (undefined8 *)(param_5 + 0x10); + do { + pauVar30 = pauVar23 + -1; + pauVar28 = pauVar24 + -1; + auVar36 = *pauVar23; + pauVar23 = pauVar23 + 2; + auVar19 = *pauVar24; + pauVar24 = pauVar24 + 2; + auVar37 = NEON_smax(*pauVar30,*pauVar28,1); + auVar36 = NEON_smax(auVar36,auVar19,1); + puVar25[-1] = auVar37._8_8_; + puVar25[-2] = auVar37._0_8_; + puVar25[1] = auVar36._8_8_; + *puVar25 = auVar36._0_8_; + puVar25 = puVar25 + 4; + } while (pauVar23 != (undefined1 (*) [16])(param_1 + (ulong)(uVar16 >> 5) * 0x20 + 0x30)); + } + iVar14 = iVar13; + if (iVar13 < iVar17) { + pauVar23 = (undefined1 (*) [16])(param_1 + lVar34); + pcVar26 = (char *)(param_5 + lVar34); + pauVar24 = (undefined1 (*) [16])(param_3 + lVar34); + iVar14 = iVar4; + if ((pauVar23 < (undefined1 (*) [16])(param_5 + lVar2) && + pcVar26 < (char *)(param_1 + lVar2) || + pauVar24 < (undefined1 (*) [16])(param_5 + lVar2) && + pcVar26 < (char *)(param_3 + lVar2)) || (uVar15 + 1 < 5)) { + do { + puVar21 = *pauVar23; + cVar11 = (*pauVar23)[0]; + cVar12 = (*pauVar24)[0]; + bVar10 = (*pauVar24)[0]; + cVar8 = (*pauVar24)[1]; + if ((int)(uint)(byte)(*pauVar24)[1] < (int)(char)(*pauVar23)[1]) { + cVar8 = (*pauVar23)[1]; + } + pcVar26[1] = cVar8; + if ((int)(uint)bVar10 < (int)cVar11) { + cVar12 = cVar11; + } + *pcVar26 = cVar12; + cVar11 = (*pauVar23)[2]; + cVar12 = (*pauVar24)[2]; + cVar8 = (*pauVar24)[3]; + if ((int)(uint)(byte)(*pauVar24)[3] < (int)(char)(*pauVar23)[3]) { + cVar8 = (*pauVar23)[3]; + } + bVar10 = (*pauVar24)[2]; + pcVar26[3] = cVar8; + if ((int)(uint)bVar10 < (int)cVar11) { + cVar12 = cVar11; + } + pcVar26[2] = cVar12; + pauVar24 = (undefined1 (*) [16])(*pauVar24 + 4); + pauVar23 = (undefined1 (*) [16])(puVar21 + 4); + pcVar26 = pcVar26 + 4; + } while ((undefined1 (*) [16])(puVar21 + 4) != + (undefined1 (*) [16])(param_1 + lVar34 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar22 = iVar13; + if (0xb < uVar18) { + uVar27 = 0; + do { + uVar27 = uVar27 + 1; + auVar36 = NEON_smax(*pauVar24,*pauVar23,1); + *(long *)(pcVar26 + 8) = auVar36._8_8_; + *(long *)pcVar26 = auVar36._0_8_; + pauVar24 = pauVar24 + 1; + pauVar23 = pauVar23 + 1; + pcVar26 = pcVar26 + 0x10; + } while (uVar27 < uVar1); + iVar22 = iVar13 + uVar1 * 0x10; + if (uVar15 + 1 == uVar1 * 4) goto LAB_00236c24; + } + lVar31 = (long)iVar22; + lVar32 = lVar31 + 1; + lVar35 = lVar31 + 2; + lVar3 = lVar31 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + cVar12 = *(char *)(param_3 + lVar31); + if (*(char *)(param_3 + lVar31) < *(char *)(param_1 + lVar31)) { + cVar12 = *(char *)(param_1 + lVar31); + } + *(char *)(param_5 + lVar31) = cVar12; + *(char *)(param_5 + lVar32) = cVar8; + cVar8 = *(char *)(param_3 + lVar3); + if (*(char *)(param_3 + lVar3) < *(char *)(param_1 + lVar3)) { + cVar8 = *(char *)(param_1 + lVar3); + } + cVar12 = *(char *)(param_3 + lVar35); + if (*(char *)(param_3 + lVar35) < *(char *)(param_1 + lVar35)) { + cVar12 = *(char *)(param_1 + lVar35); + } + *(char *)(param_5 + lVar35) = cVar12; + *(char *)(param_5 + lVar3) = cVar8; + if (iVar22 + 4 < iVar17) { + lVar31 = (long)(iVar22 + 4); + lVar32 = lVar31 + 1; + lVar35 = lVar31 + 2; + lVar3 = lVar31 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + cVar12 = *(char *)(param_3 + lVar31); + if (*(char *)(param_3 + lVar31) < *(char *)(param_1 + lVar31)) { + cVar12 = *(char *)(param_1 + lVar31); + } + *(char *)(param_5 + lVar31) = cVar12; + *(char *)(param_5 + lVar32) = cVar8; + cVar8 = *(char *)(param_3 + lVar3); + if (*(char *)(param_3 + lVar3) < *(char *)(param_1 + lVar3)) { + cVar8 = *(char *)(param_1 + lVar3); + } + cVar12 = *(char *)(param_3 + lVar35); + if (*(char *)(param_3 + lVar35) < *(char *)(param_1 + lVar35)) { + cVar12 = *(char *)(param_1 + lVar35); + } + *(char *)(param_5 + lVar35) = cVar12; + *(char *)(param_5 + lVar3) = cVar8; + if (iVar22 + 8 < iVar17) { + lVar31 = (long)(iVar22 + 8); + lVar32 = lVar31 + 1; + lVar35 = lVar31 + 2; + lVar3 = lVar31 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + cVar12 = *(char *)(param_3 + lVar31); + if (*(char *)(param_3 + lVar31) < *(char *)(param_1 + lVar31)) { + cVar12 = *(char *)(param_1 + lVar31); + } + *(char *)(param_5 + lVar31) = cVar12; + *(char *)(param_5 + lVar32) = cVar8; + cVar8 = *(char *)(param_3 + lVar3); + if (*(char *)(param_3 + lVar3) < *(char *)(param_1 + lVar3)) { + cVar8 = *(char *)(param_1 + lVar3); + } + cVar12 = *(char *)(param_3 + lVar35); + if (*(char *)(param_3 + lVar35) < *(char *)(param_1 + lVar35)) { + cVar12 = *(char *)(param_1 + lVar35); + } + *(char *)(param_5 + lVar35) = cVar12; + *(char *)(param_5 + lVar3) = cVar8; + } + } + } + } +LAB_00236c24: + if (iVar14 < iVar9) { + lVar35 = (long)iVar14; + uVar27 = iVar9 - iVar14; + lVar32 = lVar35 + 0x10; + pcVar26 = (char *)(param_1 + lVar35); + pcVar5 = (char *)(param_5 + lVar35); + pcVar6 = (char *)(param_3 + lVar35); + if ((pcVar26 < (char *)(param_5 + lVar32) && pcVar5 < (char *)(param_1 + lVar32) || + pcVar6 < (char *)(param_5 + lVar32) && pcVar5 < (char *)(param_3 + lVar32)) || + (uVar27 < 0x14)) { + lVar32 = 0; + do { + cVar8 = pcVar6[lVar32]; + if (pcVar6[lVar32] < pcVar26[lVar32]) { + cVar8 = pcVar26[lVar32]; + } + pcVar5[lVar32] = cVar8; + lVar32 = lVar32 + 1; + } while (lVar32 != (ulong)(uint)((iVar9 + -1) - iVar14) + 1); + } + else { + uVar7 = -(int)pcVar26 & 0xf; + uVar20 = uVar27; + if (uVar7 < uVar27) { + uVar20 = uVar7; + } + iVar22 = iVar14; + if (uVar20 != 0) { + iVar22 = iVar14 + 1; + cVar8 = *pcVar6; + if (*pcVar6 < *pcVar26) { + cVar8 = *pcVar26; + } + *pcVar5 = cVar8; + if (uVar20 != 1) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 2; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 2) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 3) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 4; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 4) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 5; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 5) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 6; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 6) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 7; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 7) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 8; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 8) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 9; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 9) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 10; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 10) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xb; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 0xb) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xc; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 0xc) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xd; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 0xd) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xe; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) + { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 == 0xf) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xf; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < + *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar7 = ((uVar27 - uVar20) - 0x10 >> 4) + 1; + iVar14 = uVar7 * 0x10; + if (0xe < (uVar27 - 1) - uVar20) { + lVar35 = lVar35 + (ulong)uVar20; + uVar29 = 0; + puVar25 = (undefined8 *)(param_5 + lVar35); + pauVar23 = (undefined1 (*) [16])(param_3 + lVar35); + pauVar24 = (undefined1 (*) [16])(param_1 + lVar35); + do { + uVar29 = uVar29 + 1; + auVar36 = NEON_smax(*pauVar23,*pauVar24,1); + puVar25[1] = auVar36._8_8_; + *puVar25 = auVar36._0_8_; + puVar25 = puVar25 + 2; + pauVar23 = pauVar23 + 1; + pauVar24 = pauVar24 + 1; + } while (uVar29 < uVar7); + iVar22 = iVar22 + iVar14; + if (uVar27 - uVar20 == iVar14) goto LAB_00237194; + } + lVar32 = (long)iVar22; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 1 < iVar9) { + lVar32 = (long)(iVar22 + 1); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 2 < iVar9) { + lVar32 = (long)(iVar22 + 2); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 3 < iVar9) { + lVar32 = (long)(iVar22 + 3); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 4 < iVar9) { + lVar32 = (long)(iVar22 + 4); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 5 < iVar9) { + lVar32 = (long)(iVar22 + 5); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 6 < iVar9) { + lVar32 = (long)(iVar22 + 6); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 7 < iVar9) { + lVar32 = (long)(iVar22 + 7); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 8 < iVar9) { + lVar32 = (long)(iVar22 + 8); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 9 < iVar9) { + lVar32 = (long)(iVar22 + 9); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 10 < iVar9) { + lVar32 = (long)(iVar22 + 10); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xb < iVar9) { + lVar32 = (long)(iVar22 + 0xb); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xc < iVar9) { + lVar32 = (long)(iVar22 + 0xc); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xd < iVar9) { + lVar32 = (long)(iVar22 + 0xd); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xe < iVar9) { + lVar32 = (long)(iVar22 + 0xe); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_3 + lVar32) < *(char *)(param_1 + lVar32)) + { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00237194: + iVar33 = iVar33 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar33 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023729c (488 bytes) name=FUN_0023729c + +void FUN_0023729c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + byte *pbVar1; + int iVar2; + char cVar3; + byte bVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined1 auVar8 [16]; + int iVar9; + undefined *puVar10; + undefined1 (*pauVar11) [16]; + byte *pbVar12; + long lVar13; + undefined8 *puVar14; + char *pcVar15; + undefined1 (*pauVar16) [16]; + byte *pbVar17; + undefined1 (*pauVar18) [16]; + long lVar19; + undefined1 (*pauVar20) [16]; + int iVar21; + long lVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + + iVar21 = param_7[1]; + iVar2 = *param_7; + if (iVar21 != 0) { + uVar7 = iVar2 - 0x20; + iVar5 = ((uVar7 >> 5) + 1) * 0x20; + if ((int)uVar7 < 0) { + iVar5 = 0; + } + uVar6 = (uint)((iVar2 + -4) - iVar5) >> 2; + lVar22 = (long)iVar5; + do { + if (-1 < (int)uVar7) { + pauVar11 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar16 = (undefined1 (*) [16])(param_3 + 0x10); + puVar14 = (undefined8 *)(param_5 + 0x10); + do { + pauVar20 = pauVar11 + -1; + pauVar18 = pauVar16 + -1; + auVar23 = *pauVar11; + pauVar11 = pauVar11 + 2; + auVar8 = *pauVar16; + pauVar16 = pauVar16 + 2; + auVar24 = NEON_umax(*pauVar20,*pauVar18,1); + auVar23 = NEON_umax(auVar23,auVar8,1); + puVar14[-1] = auVar24._8_8_; + puVar14[-2] = auVar24._0_8_; + puVar14[1] = auVar23._8_8_; + *puVar14 = auVar23._0_8_; + puVar14 = puVar14 + 4; + } while (pauVar11 != (undefined1 (*) [16])(param_1 + (ulong)(uVar7 >> 5) * 0x20 + 0x30)); + } + iVar9 = iVar5; + if (iVar5 < iVar2 + -3) { + pbVar12 = (byte *)(param_1 + lVar22); + pcVar15 = (char *)(param_5 + lVar22); + pbVar17 = (byte *)(param_3 + lVar22); + do { + puVar10 = PTR_DAT_00501c00; + pbVar1 = pbVar12 + 4; + bVar4 = pbVar12[1]; + cVar3 = PTR_DAT_00501c00[(int)(((uint)pbVar17[1] - (uint)bVar4) + 0x100)]; + *pcVar15 = *pbVar12 + PTR_DAT_00501c00[(int)(((uint)*pbVar17 - (uint)*pbVar12) + 0x100)]; + pcVar15[1] = bVar4 + cVar3; + bVar4 = pbVar12[2]; + cVar3 = puVar10[(int)(((uint)pbVar17[2] - (uint)bVar4) + 0x100)]; + pcVar15[3] = pbVar12[3] + puVar10[(int)(((uint)pbVar17[3] - (uint)pbVar12[3]) + 0x100)]; + pcVar15[2] = bVar4 + cVar3; + pbVar12 = pbVar1; + pcVar15 = pcVar15 + 4; + pbVar17 = pbVar17 + 4; + iVar9 = iVar5 + 4 + uVar6 * 4; + } while (pbVar1 != (byte *)(param_1 + lVar22 + 4 + (ulong)uVar6 * 4)); + } + lVar19 = (long)iVar9; + if (iVar9 < iVar2) { + lVar13 = 0; + do { + bVar4 = *(byte *)(param_1 + lVar19 + lVar13); + *(byte *)(param_5 + lVar19 + lVar13) = + bVar4 + PTR_DAT_00501c00 + [(int)(((uint)*(byte *)(param_3 + lVar19 + lVar13) - (uint)bVar4) + 0x100)]; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar2 + -1) - iVar9) + 1); + } + iVar21 = iVar21 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar21 != 0); + } + return; +} + + +================================================================== + +### FUNC 00237484 (1092 bytes) name=FUN_00237484 + +void FUN_00237484(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + long lVar1; + float *pfVar2; + int iVar3; + ulong uVar4; + uint uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [12]; + undefined1 (*pauVar15) [12]; + undefined1 *puVar16; + undefined1 (*pauVar17) [16]; + long lVar18; + undefined8 *puVar19; + ulong uVar20; + float *pfVar21; + uint uVar22; + float *pfVar23; + int iVar24; + undefined1 (*pauVar25) [12]; + float *pfVar26; + long lVar27; + uint uVar28; + undefined1 (*pauVar29) [16]; + int iVar30; + long lVar31; + long lVar32; + float fVar33; + float fVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + float fVar38; + long lVar39; + + iVar30 = param_7[1]; + iVar7 = *param_7; + if (iVar30 != 0) { + uVar10 = iVar7 - 8U >> 3; + iVar8 = (uVar10 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar11 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar31 = ((long)iVar8 + 0x10) * 4; + lVar32 = lVar31 + -0x40; + lVar39 = NEON_shl((long)iVar8 + 4 + (ulong)uVar11 * 4,2); + iVar3 = iVar8 + 4 + uVar11 * 4; + do { + if (0 < iVar7 + -7) { + pauVar17 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar25 = (undefined1 (*) [12])(param_3 + 0x10); + puVar19 = (undefined8 *)(param_5 + 0x10); + do { + pauVar29 = pauVar17 + -1; + pauVar15 = pauVar25 + -2; + auVar12 = *pauVar17; + pauVar17 = pauVar17 + 2; + puVar16 = *pauVar25; + auVar14 = *pauVar25; + pauVar25 = (undefined1 (*) [12])(pauVar25[2] + 8); + auVar37 = NEON_fmin(*pauVar29,*(undefined1 (*) [16])(*pauVar15 + 8),4); + auVar35._12_4_ = (int)((ulong)*(undefined8 *)(puVar16 + 8) >> 0x20); + auVar35._0_12_ = auVar14; + auVar35 = NEON_fmin(auVar12,auVar35,4); + puVar19[-1] = auVar37._8_8_; + puVar19[-2] = auVar37._0_8_; + puVar19[1] = auVar35._8_8_; + *puVar19 = auVar35._0_8_; + puVar19 = puVar19 + 4; + } while (pauVar17 != (undefined1 (*) [16])(param_1 + (ulong)uVar10 * 0x20 + 0x30)); + } + iVar9 = iVar8; + if (iVar8 < iVar7 + -3) { + pfVar21 = (float *)(param_1 + lVar32); + pfVar23 = (float *)(param_5 + lVar32); + pfVar26 = (float *)(param_3 + lVar32); + iVar9 = iVar3; + if ((pfVar21 < (float *)(param_5 + lVar31) && pfVar23 < (float *)(param_1 + lVar31) || + pfVar26 < (float *)(param_5 + lVar31) && pfVar23 < (float *)(param_3 + lVar31)) || + (uVar11 + 1 < 5)) { + do { + fVar38 = pfVar21[1]; + fVar34 = pfVar26[1]; + fVar33 = *pfVar26; + if (*pfVar21 <= *pfVar26) { + fVar33 = *pfVar21; + } + *pfVar23 = fVar33; + if (fVar38 <= fVar34) { + fVar34 = fVar38; + } + pfVar23[1] = fVar34; + pfVar2 = pfVar21 + 4; + fVar38 = pfVar21[3]; + fVar34 = pfVar26[3]; + fVar33 = pfVar26[2]; + if (pfVar21[2] <= pfVar26[2]) { + fVar33 = pfVar21[2]; + } + pfVar23[2] = fVar33; + if (fVar38 <= fVar34) { + fVar34 = fVar38; + } + pfVar23[3] = fVar34; + pfVar21 = pfVar2; + pfVar23 = pfVar23 + 4; + pfVar26 = pfVar26 + 4; + } while (pfVar2 != (float *)(param_1 + lVar39)); + } + else { + lVar18 = 0; + uVar22 = 0; + do { + pauVar25 = (undefined1 (*) [12])((long)pfVar26 + lVar18); + puVar19 = (undefined8 *)((long)pfVar23 + lVar18); + uVar22 = uVar22 + 1; + auVar35 = *(undefined1 (*) [16])((long)pfVar21 + lVar18); + fVar33 = (float)((ulong)*(undefined8 *)(*pauVar25 + 8) >> 0x20); + lVar18 = lVar18 + 0x10; + auVar37._0_4_ = -(uint)((float)*(undefined8 *)*pauVar25 < auVar35._0_4_); + auVar37._4_4_ = + -(uint)((float)((ulong)*(undefined8 *)*pauVar25 >> 0x20) < auVar35._4_4_); + auVar37._8_4_ = -(uint)((float)*(undefined8 *)(*pauVar25 + 8) < auVar35._8_4_); + auVar37._12_4_ = -(uint)(fVar33 < auVar35._12_4_); + auVar12._12_4_ = fVar33; + auVar12._0_12_ = *pauVar25; + auVar35 = auVar35 ^ (auVar35 ^ auVar12) & auVar37; + puVar19[1] = auVar35._8_8_; + *puVar19 = auVar35._0_8_; + } while (uVar22 < uVar11 + 1); + } + } + if (iVar9 < iVar7) { + uVar22 = iVar7 - iVar9; + lVar27 = ((long)iVar9 + 4) * 4; + lVar18 = lVar27 + -0x10; + uVar20 = param_5 + lVar18; + uVar4 = param_1 + lVar18; + if ((uVar20 < (ulong)(param_1 + lVar27) && uVar4 < (ulong)(param_5 + lVar27) || + (ulong)(param_3 + lVar18) < (ulong)(param_5 + lVar27) && + uVar20 < (ulong)(param_3 + lVar27)) || (uVar22 < 8)) { + lVar27 = 0; + do { + fVar33 = *(float *)(param_3 + lVar18 + lVar27); + if (*(float *)(uVar4 + lVar27) <= fVar33) { + fVar33 = *(float *)(uVar4 + lVar27); + } + *(float *)(uVar20 + lVar27) = fVar33; + lVar27 = lVar27 + 4; + } while (lVar27 != ((ulong)(uint)((iVar7 + -1) - iVar9) + 1) * 4); + } + else { + uVar5 = -((uint)(uVar4 >> 2) & 3) & 3; + uVar6 = uVar22; + if (uVar5 < uVar22) { + uVar6 = uVar5; + } + iVar24 = iVar9; + if (uVar6 != 0) { + lVar27 = (long)iVar9 * 4; + fVar33 = *(float *)(param_3 + lVar27); + if (*(float *)(param_1 + lVar27) <= *(float *)(param_3 + lVar27)) { + fVar33 = *(float *)(param_1 + lVar27); + } + iVar24 = iVar9 + 1; + *(float *)(param_5 + lVar27) = fVar33; + if (uVar6 != 1) { + lVar1 = lVar27 + 4; + fVar33 = *(float *)(param_3 + lVar1); + if (*(float *)(param_1 + lVar1) <= *(float *)(param_3 + lVar1)) { + fVar33 = *(float *)(param_1 + lVar1); + } + iVar24 = iVar9 + 2; + *(float *)(param_5 + lVar1) = fVar33; + if (uVar6 == 3) { + lVar27 = lVar27 + 8; + fVar33 = *(float *)(param_3 + lVar27); + if (*(float *)(param_1 + lVar27) <= *(float *)(param_3 + lVar27)) { + fVar33 = *(float *)(param_1 + lVar27); + } + iVar24 = iVar9 + 3; + *(float *)(param_5 + lVar27) = fVar33; + } + } + } + uVar28 = 0; + lVar18 = lVar18 + (ulong)uVar6 * 4; + uVar5 = ((uVar22 - uVar6) - 4 >> 2) + 1; + iVar9 = uVar5 * 4; + puVar19 = (undefined8 *)(param_5 + lVar18); + pauVar25 = (undefined1 (*) [12])(param_3 + lVar18); + pauVar17 = (undefined1 (*) [16])(param_1 + lVar18); + do { + auVar35 = *pauVar17; + uVar28 = uVar28 + 1; + fVar33 = (float)((ulong)*(undefined8 *)(*pauVar25 + 8) >> 0x20); + auVar36._0_4_ = -(uint)((float)*(undefined8 *)*pauVar25 < auVar35._0_4_); + auVar36._4_4_ = + -(uint)((float)((ulong)*(undefined8 *)*pauVar25 >> 0x20) < auVar35._4_4_); + auVar36._8_4_ = -(uint)((float)*(undefined8 *)(*pauVar25 + 8) < auVar35._8_4_); + auVar36._12_4_ = -(uint)(fVar33 < auVar35._12_4_); + auVar13._12_4_ = fVar33; + auVar13._0_12_ = *pauVar25; + auVar35 = auVar35 ^ (auVar35 ^ auVar13) & auVar36; + puVar19[1] = auVar35._8_8_; + *puVar19 = auVar35._0_8_; + puVar19 = puVar19 + 2; + pauVar25 = (undefined1 (*) [12])(pauVar25[1] + 4); + pauVar17 = pauVar17 + 1; + } while (uVar28 < uVar5); + uVar5 = iVar24 + iVar9; + if (uVar22 - uVar6 != iVar9) { + uVar20 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + fVar33 = *(float *)(param_3 + uVar20); + if (*(float *)(param_1 + uVar20) <= *(float *)(param_3 + uVar20)) { + fVar33 = *(float *)(param_1 + uVar20); + } + *(float *)(param_5 + uVar20) = fVar33; + if ((int)(uVar5 + 1) < iVar7) { + lVar18 = uVar20 + 4; + fVar33 = *(float *)(param_3 + lVar18); + if (*(float *)(param_1 + lVar18) <= *(float *)(param_3 + lVar18)) { + fVar33 = *(float *)(param_1 + lVar18); + } + *(float *)(param_5 + lVar18) = fVar33; + if ((int)(uVar5 + 2) < iVar7) { + lVar18 = uVar20 + 8; + fVar33 = *(float *)(param_3 + lVar18); + if (*(float *)(param_1 + lVar18) <= *(float *)(param_3 + lVar18)) { + fVar33 = *(float *)(param_1 + lVar18); + } + *(float *)(param_5 + lVar18) = fVar33; + } + } + } + } + } + iVar30 = iVar30 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar30 != 0); + } + return; +} + + +================================================================== + +### FUNC 002378c8 (1008 bytes) name=FUN_002378c8 + +void FUN_002378c8(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + int iVar3; + ulong uVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined1 auVar13 [16]; + undefined1 (*pauVar14) [16]; + undefined8 *puVar15; + ulong uVar16; + int iVar17; + int *piVar18; + undefined1 (*pauVar19) [16]; + uint uVar20; + long lVar21; + uint uVar22; + undefined1 (*pauVar23) [16]; + undefined1 (*pauVar24) [16]; + int iVar25; + long lVar26; + long lVar27; + long lVar28; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + long lVar31; + + iVar25 = param_7[1]; + iVar6 = *param_7; + if (iVar25 != 0) { + uVar11 = iVar6 - 8U >> 3; + iVar9 = (uVar11 + 1) * 8; + if (iVar6 + -7 < 1) { + iVar9 = 0; + } + uVar12 = (uint)((iVar6 + -4) - iVar9) >> 2; + lVar26 = ((long)iVar9 + 0x10) * 4; + lVar27 = lVar26 + -0x40; + lVar31 = NEON_shl((long)iVar9 + 4 + (ulong)uVar12 * 4,2); + iVar3 = iVar9 + 4 + uVar12 * 4; + do { + if (0 < iVar6 + -7) { + pauVar14 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar19 = (undefined1 (*) [16])(param_3 + 0x10); + puVar15 = (undefined8 *)(param_5 + 0x10); + do { + pauVar24 = pauVar14 + -1; + pauVar23 = pauVar19 + -1; + auVar29 = *pauVar14; + pauVar14 = pauVar14 + 2; + auVar13 = *pauVar19; + pauVar19 = pauVar19 + 2; + auVar30 = NEON_smin(*pauVar24,*pauVar23,4); + auVar29 = NEON_smin(auVar29,auVar13,4); + puVar15[-1] = auVar30._8_8_; + puVar15[-2] = auVar30._0_8_; + puVar15[1] = auVar29._8_8_; + *puVar15 = auVar29._0_8_; + puVar15 = puVar15 + 4; + } while (pauVar14 != (undefined1 (*) [16])(param_1 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar10 = iVar9; + if (iVar9 < iVar6 + -3) { + pauVar14 = (undefined1 (*) [16])(param_1 + lVar27); + piVar18 = (int *)(param_5 + lVar27); + pauVar19 = (undefined1 (*) [16])(param_3 + lVar27); + iVar10 = iVar3; + if ((pauVar14 < (undefined1 (*) [16])(param_5 + lVar26) && + piVar18 < (int *)(param_1 + lVar26) || + pauVar19 < (undefined1 (*) [16])(param_5 + lVar26) && + piVar18 < (int *)(param_3 + lVar26)) || (uVar12 + 1 < 4)) { + do { + pauVar23 = pauVar14 + 1; + iVar7 = *(int *)*pauVar14; + iVar8 = *(int *)*pauVar19; + iVar17 = *(int *)(*pauVar19 + 4); + if (*(int *)(*pauVar14 + 4) < *(int *)(*pauVar19 + 4)) { + iVar17 = *(int *)(*pauVar14 + 4); + } + piVar18[1] = iVar17; + if (iVar7 < iVar8) { + iVar8 = iVar7; + } + *piVar18 = iVar8; + iVar7 = *(int *)(*pauVar14 + 8); + iVar8 = *(int *)(*pauVar19 + 8); + iVar17 = *(int *)(*pauVar19 + 0xc); + if (*(int *)(*pauVar14 + 0xc) < *(int *)(*pauVar19 + 0xc)) { + iVar17 = *(int *)(*pauVar14 + 0xc); + } + piVar18[3] = iVar17; + if (iVar7 < iVar8) { + iVar8 = iVar7; + } + piVar18[2] = iVar8; + pauVar14 = pauVar23; + piVar18 = piVar18 + 4; + pauVar19 = pauVar19 + 1; + } while (pauVar23 != (undefined1 (*) [16])(param_1 + lVar31)); + } + else { + uVar20 = 0; + do { + uVar20 = uVar20 + 1; + auVar29 = NEON_smin(*pauVar19,*pauVar14,4); + *(long *)(piVar18 + 2) = auVar29._8_8_; + *(long *)piVar18 = auVar29._0_8_; + pauVar14 = pauVar14 + 1; + piVar18 = piVar18 + 4; + pauVar19 = pauVar19 + 1; + } while (uVar20 < uVar12 + 1); + } + } + if (iVar10 < iVar6) { + uVar20 = iVar6 - iVar10; + lVar21 = ((long)iVar10 + 4) * 4; + lVar28 = lVar21 + -0x10; + uVar16 = param_5 + lVar28; + uVar4 = param_1 + lVar28; + if ((uVar16 < (ulong)(param_1 + lVar21) && uVar4 < (ulong)(param_5 + lVar21) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar21) && + uVar16 < (ulong)(param_3 + lVar21)) || (uVar20 < 9)) { + lVar21 = 0; + do { + iVar17 = *(int *)(param_3 + lVar28 + lVar21); + if (*(int *)(uVar4 + lVar21) < iVar17) { + iVar17 = *(int *)(uVar4 + lVar21); + } + *(int *)(uVar16 + lVar21) = iVar17; + lVar21 = lVar21 + 4; + } while (lVar21 != ((ulong)(uint)((iVar6 + -1) - iVar10) + 1) * 4); + } + else { + uVar5 = -((uint)(uVar4 >> 2) & 3) & 3; + if (uVar20 < uVar5) { + uVar5 = uVar20; + } + iVar17 = iVar10; + if (uVar5 != 0) { + lVar21 = (long)iVar10 * 4; + iVar17 = iVar10 + 1; + iVar8 = *(int *)(param_3 + lVar21); + if (*(int *)(param_1 + lVar21) < *(int *)(param_3 + lVar21)) { + iVar8 = *(int *)(param_1 + lVar21); + } + *(int *)(param_5 + lVar21) = iVar8; + if (uVar5 != 1) { + lVar2 = lVar21 + 4; + iVar17 = iVar10 + 2; + iVar8 = *(int *)(param_3 + lVar2); + if (*(int *)(param_1 + lVar2) < *(int *)(param_3 + lVar2)) { + iVar8 = *(int *)(param_1 + lVar2); + } + *(int *)(param_5 + lVar2) = iVar8; + if (uVar5 == 3) { + lVar21 = lVar21 + 8; + iVar17 = iVar10 + 3; + iVar10 = *(int *)(param_3 + lVar21); + if (*(int *)(param_1 + lVar21) < *(int *)(param_3 + lVar21)) { + iVar10 = *(int *)(param_1 + lVar21); + } + *(int *)(param_5 + lVar21) = iVar10; + } + } + } + uVar22 = 0; + lVar28 = lVar28 + (ulong)uVar5 * 4; + uVar1 = ((uVar20 - uVar5) - 4 >> 2) + 1; + iVar10 = uVar1 * 4; + puVar15 = (undefined8 *)(param_5 + lVar28); + pauVar14 = (undefined1 (*) [16])(param_3 + lVar28); + pauVar19 = (undefined1 (*) [16])(param_1 + lVar28); + do { + uVar22 = uVar22 + 1; + auVar29 = NEON_smin(*pauVar14,*pauVar19,4); + puVar15[1] = auVar29._8_8_; + *puVar15 = auVar29._0_8_; + puVar15 = puVar15 + 2; + pauVar14 = pauVar14 + 1; + pauVar19 = pauVar19 + 1; + } while (uVar22 < uVar1); + uVar1 = iVar17 + iVar10; + if (uVar20 - uVar5 != iVar10) { + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + iVar10 = *(int *)(param_3 + uVar16); + if (*(int *)(param_1 + uVar16) < *(int *)(param_3 + uVar16)) { + iVar10 = *(int *)(param_1 + uVar16); + } + *(int *)(param_5 + uVar16) = iVar10; + if ((int)(uVar1 + 1) < iVar6) { + lVar28 = uVar16 + 4; + iVar10 = *(int *)(param_3 + lVar28); + if (*(int *)(param_1 + lVar28) < *(int *)(param_3 + lVar28)) { + iVar10 = *(int *)(param_1 + lVar28); + } + *(int *)(param_5 + lVar28) = iVar10; + if ((int)(uVar1 + 2) < iVar6) { + lVar28 = uVar16 + 8; + iVar10 = *(int *)(param_3 + lVar28); + if (*(int *)(param_1 + lVar28) < *(int *)(param_3 + lVar28)) { + iVar10 = *(int *)(param_1 + lVar28); + } + *(int *)(param_5 + lVar28) = iVar10; + } + } + } + } + } + iVar25 = iVar25 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar25 != 0); + } + return; +} + + +================================================================== + +### FUNC 00237cb8 (1564 bytes) name=FUN_00237cb8 + +void FUN_00237cb8(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + uint uVar4; + ulong uVar5; + ulong uVar6; + uint uVar7; + short sVar8; + int iVar9; + short sVar10; + short sVar11; + short sVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + undefined1 auVar17 [16]; + undefined1 *puVar18; + undefined1 (*pauVar19) [16]; + undefined1 (*pauVar20) [16]; + ulong uVar21; + undefined8 *puVar22; + ulong uVar23; + int iVar24; + short *psVar25; + uint uVar26; + undefined1 (*pauVar27) [16]; + long lVar28; + undefined1 (*pauVar29) [16]; + int iVar30; + long lVar31; + long lVar32; + uint uVar33; + long lVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + long lVar37; + + iVar30 = param_7[1]; + iVar9 = *param_7; + if (iVar30 != 0) { + uVar15 = iVar9 - 0x10; + uVar13 = ((uVar15 >> 4) + 1) * 0x10; + if ((int)uVar15 < 0) { + uVar13 = 0; + } + uVar16 = (iVar9 + -4) - uVar13; + lVar31 = ((long)(int)uVar13 + 0x20) * 2; + lVar32 = lVar31 + -0x40; + uVar14 = uVar16 >> 2; + uVar1 = (uVar14 - 1 >> 1) + 1; + uVar4 = uVar13 + 4 + uVar14 * 4; + lVar37 = NEON_shl((long)(int)uVar13 + 4 + (ulong)uVar14 * 4,1); + do { + if (-1 < (int)uVar15) { + pauVar19 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar20 = (undefined1 (*) [16])(param_3 + 0x10); + puVar22 = (undefined8 *)(param_5 + 0x10); + do { + pauVar29 = pauVar19 + -1; + pauVar27 = pauVar20 + -1; + auVar35 = *pauVar19; + pauVar19 = pauVar19 + 2; + auVar17 = *pauVar20; + pauVar20 = pauVar20 + 2; + auVar36 = NEON_smin(*pauVar29,*pauVar27,2); + auVar35 = NEON_smin(auVar35,auVar17,2); + puVar22[-1] = auVar36._8_8_; + puVar22[-2] = auVar36._0_8_; + puVar22[1] = auVar35._8_8_; + *puVar22 = auVar35._0_8_; + puVar22 = puVar22 + 4; + } while (pauVar19 != (undefined1 (*) [16])(param_1 + (ulong)(uVar15 >> 4) * 0x20 + 0x30)); + } + uVar2 = uVar13; + if ((int)uVar13 < iVar9 + -3) { + pauVar19 = (undefined1 (*) [16])(param_1 + lVar32); + psVar25 = (short *)(param_5 + lVar32); + pauVar20 = (undefined1 (*) [16])(param_3 + lVar32); + uVar2 = uVar4; + if ((pauVar19 < (undefined1 (*) [16])(param_5 + lVar31) && + psVar25 < (short *)(param_1 + lVar31) || + pauVar20 < (undefined1 (*) [16])(param_5 + lVar31) && + psVar25 < (short *)(param_3 + lVar31)) || (uVar14 + 1 < 4)) { + do { + puVar18 = *pauVar19; + sVar11 = *(short *)*pauVar19; + sVar12 = *(short *)*pauVar20; + sVar10 = *(short *)*pauVar20; + sVar8 = *(short *)(*pauVar20 + 2); + if (*(short *)(*pauVar19 + 2) < *(short *)(*pauVar20 + 2)) { + sVar8 = *(short *)(*pauVar19 + 2); + } + psVar25[1] = sVar8; + if (sVar11 < sVar10) { + sVar12 = sVar11; + } + *psVar25 = sVar12; + sVar10 = *(short *)(*pauVar19 + 4); + sVar12 = *(short *)(*pauVar20 + 4); + sVar8 = *(short *)(*pauVar20 + 6); + if (*(short *)(*pauVar19 + 6) < *(short *)(*pauVar20 + 6)) { + sVar8 = *(short *)(*pauVar19 + 6); + } + sVar11 = *(short *)(*pauVar20 + 4); + psVar25[3] = sVar8; + if (sVar10 < sVar11) { + sVar12 = sVar10; + } + psVar25[2] = sVar12; + pauVar20 = (undefined1 (*) [16])(*pauVar20 + 8); + pauVar19 = (undefined1 (*) [16])(puVar18 + 8); + psVar25 = psVar25 + 4; + } while ((undefined1 (*) [16])(puVar18 + 8) != (undefined1 (*) [16])(param_1 + lVar37)); + } + else { + uVar26 = uVar13; + if (3 < uVar16) { + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + auVar35 = NEON_smin(*pauVar20,*pauVar19,2); + *(long *)(psVar25 + 4) = auVar35._8_8_; + *(long *)psVar25 = auVar35._0_8_; + pauVar20 = pauVar20 + 1; + pauVar19 = pauVar19 + 1; + psVar25 = psVar25 + 8; + } while (uVar26 < uVar1); + uVar26 = uVar13 + uVar1 * 8; + if (uVar14 + 1 == uVar1 * 2) goto LAB_00237ed0; + } + uVar21 = -(ulong)(uVar26 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar26 << 1; + lVar34 = uVar21 + 2; + lVar28 = uVar21 + 4; + lVar3 = uVar21 + 6; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + sVar12 = *(short *)(param_3 + uVar21); + if (*(short *)(param_1 + uVar21) < *(short *)(param_3 + uVar21)) { + sVar12 = *(short *)(param_1 + uVar21); + } + *(short *)(param_5 + uVar21) = sVar12; + *(short *)(param_5 + lVar34) = sVar8; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_1 + lVar3) < *(short *)(param_3 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + sVar12 = *(short *)(param_3 + lVar28); + if (*(short *)(param_1 + lVar28) < *(short *)(param_3 + lVar28)) { + sVar12 = *(short *)(param_1 + lVar28); + } + *(short *)(param_5 + lVar28) = sVar12; + *(short *)(param_5 + lVar3) = sVar8; + } + } +LAB_00237ed0: + uVar21 = (ulong)uVar2; + if ((int)uVar2 < iVar9) { + uVar26 = iVar9 - uVar2; + lVar28 = ((long)(int)uVar2 + 8) * 2; + lVar34 = lVar28 + -0x10; + uVar23 = param_5 + lVar34; + uVar5 = param_1 + lVar34; + uVar6 = param_3 + lVar34; + if ((uVar23 < (ulong)(param_1 + lVar28) && uVar5 < (ulong)(param_5 + lVar28) || + uVar6 < (ulong)(param_5 + lVar28) && uVar23 < (ulong)(param_3 + lVar28)) || + (uVar26 < 0xc)) { + lVar34 = 0; + do { + sVar8 = *(short *)(uVar6 + lVar34); + if (*(short *)(uVar5 + lVar34) < *(short *)(uVar6 + lVar34)) { + sVar8 = *(short *)(uVar5 + lVar34); + } + *(short *)(uVar23 + lVar34) = sVar8; + lVar34 = lVar34 + 2; + } while (lVar34 != ((ulong)((iVar9 + -1) - uVar2) + 1) * 2); + } + else { + uVar7 = -((uint)(uVar5 >> 1) & 7) & 7; + if (uVar26 < uVar7) { + uVar7 = uVar26; + } + if (uVar7 != 0) { + lVar28 = (long)(int)uVar2 * 2; + uVar33 = uVar2 + 1; + sVar8 = *(short *)(param_3 + lVar28); + if (*(short *)(param_1 + lVar28) < *(short *)(param_3 + lVar28)) { + sVar8 = *(short *)(param_1 + lVar28); + } + *(short *)(param_5 + lVar28) = sVar8; + if (uVar7 != 1) { + lVar3 = lVar28 + 2; + uVar33 = uVar2 + 2; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_1 + lVar3) < *(short *)(param_3 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 2) { + lVar3 = lVar28 + 4; + uVar33 = uVar2 + 3; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_1 + lVar3) < *(short *)(param_3 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 3) { + lVar3 = lVar28 + 6; + uVar33 = uVar2 + 4; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_1 + lVar3) < *(short *)(param_3 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 4) { + lVar3 = lVar28 + 8; + uVar33 = uVar2 + 5; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_1 + lVar3) < *(short *)(param_3 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 != 5) { + lVar3 = lVar28 + 10; + uVar33 = uVar2 + 6; + sVar8 = *(short *)(param_3 + lVar3); + if (*(short *)(param_1 + lVar3) < *(short *)(param_3 + lVar3)) { + sVar8 = *(short *)(param_1 + lVar3); + } + *(short *)(param_5 + lVar3) = sVar8; + if (uVar7 == 7) { + lVar28 = lVar28 + 0xc; + uVar21 = (ulong)(uVar2 + 7); + sVar8 = *(short *)(param_3 + lVar28); + if (*(short *)(param_1 + lVar28) < *(short *)(param_3 + lVar28)) { + sVar8 = *(short *)(param_1 + lVar28); + } + *(short *)(param_5 + lVar28) = sVar8; + goto LAB_00238064; + } + } + } + } + } + } + uVar21 = (ulong)uVar33; + } +LAB_00238064: + uVar2 = ((uVar26 - uVar7) - 8 >> 3) + 1; + iVar24 = uVar2 * 8; + if (6 < (uVar26 - 1) - uVar7) { + lVar34 = lVar34 + (ulong)uVar7 * 2; + uVar33 = 0; + puVar22 = (undefined8 *)(param_5 + lVar34); + pauVar19 = (undefined1 (*) [16])(param_3 + lVar34); + pauVar20 = (undefined1 (*) [16])(param_1 + lVar34); + do { + uVar33 = uVar33 + 1; + auVar35 = NEON_smin(*pauVar19,*pauVar20,2); + puVar22[1] = auVar35._8_8_; + *puVar22 = auVar35._0_8_; + puVar22 = puVar22 + 2; + pauVar19 = pauVar19 + 1; + pauVar20 = pauVar20 + 1; + } while (uVar33 < uVar2); + uVar21 = (ulong)(uint)((int)uVar21 + iVar24); + if (uVar26 - uVar7 == iVar24) goto LAB_002381d0; + } + uVar23 = -(uVar21 >> 0x1f) & 0xfffffffe00000000 | uVar21 << 1; + iVar24 = (int)uVar21; + sVar8 = *(short *)(param_3 + uVar23); + if (*(short *)(param_1 + uVar23) < *(short *)(param_3 + uVar23)) { + sVar8 = *(short *)(param_1 + uVar23); + } + *(short *)(param_5 + uVar23) = sVar8; + if (iVar24 + 1 < iVar9) { + lVar34 = uVar23 + 2; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 2 < iVar9) { + lVar34 = uVar23 + 4; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 3 < iVar9) { + lVar34 = uVar23 + 6; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 4 < iVar9) { + lVar34 = uVar23 + 8; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 5 < iVar9) { + lVar34 = uVar23 + 10; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + if (iVar24 + 6 < iVar9) { + lVar34 = uVar23 + 0xc; + sVar8 = *(short *)(param_3 + lVar34); + if (*(short *)(param_1 + lVar34) < *(short *)(param_3 + lVar34)) { + sVar8 = *(short *)(param_1 + lVar34); + } + *(short *)(param_5 + lVar34) = sVar8; + } + } + } + } + } + } + } + } +LAB_002381d0: + iVar30 = iVar30 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar30 != 0); + } + return; +} + + +================================================================== + +### FUNC 002382d4 (1480 bytes) name=FUN_002382d4 + +void FUN_002382d4(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + uint uVar2; + long lVar3; + uint uVar4; + ulong uVar5; + uint uVar6; + int iVar7; + ushort uVar8; + ushort uVar9; + ushort uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + undefined1 auVar15 [16]; + undefined1 *puVar16; + undefined1 (*pauVar17) [16]; + ulong uVar18; + undefined8 *puVar19; + ulong uVar20; + int iVar21; + ushort *puVar22; + undefined1 (*pauVar23) [16]; + uint uVar24; + undefined1 (*pauVar25) [16]; + long lVar26; + undefined1 (*pauVar27) [16]; + int iVar28; + long lVar29; + long lVar30; + uint uVar31; + long lVar32; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + long lVar35; + + iVar28 = param_7[1]; + iVar7 = *param_7; + if (iVar28 != 0) { + uVar13 = iVar7 - 0x10; + uVar11 = ((uVar13 >> 4) + 1) * 0x10; + if ((int)uVar13 < 0) { + uVar11 = 0; + } + uVar14 = (iVar7 + -4) - uVar11; + lVar29 = ((long)(int)uVar11 + 0x20) * 2; + lVar30 = lVar29 + -0x40; + uVar12 = uVar14 >> 2; + uVar1 = (uVar12 - 1 >> 1) + 1; + uVar4 = uVar11 + 4 + uVar12 * 4; + lVar35 = NEON_shl((long)(int)uVar11 + 4 + (ulong)uVar12 * 4,1); + do { + if (-1 < (int)uVar13) { + pauVar17 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar23 = (undefined1 (*) [16])(param_3 + 0x10); + puVar19 = (undefined8 *)(param_5 + 0x10); + do { + pauVar27 = pauVar17 + -1; + pauVar25 = pauVar23 + -1; + auVar33 = *pauVar17; + pauVar17 = pauVar17 + 2; + auVar15 = *pauVar23; + pauVar23 = pauVar23 + 2; + auVar34 = NEON_umin(*pauVar27,*pauVar25,2); + auVar33 = NEON_umin(auVar33,auVar15,2); + puVar19[-1] = auVar34._8_8_; + puVar19[-2] = auVar34._0_8_; + puVar19[1] = auVar33._8_8_; + *puVar19 = auVar33._0_8_; + puVar19 = puVar19 + 4; + } while (pauVar17 != (undefined1 (*) [16])(param_1 + (ulong)(uVar13 >> 4) * 0x20 + 0x30)); + } + uVar2 = uVar11; + if ((int)uVar11 < iVar7 + -3) { + pauVar17 = (undefined1 (*) [16])(param_1 + lVar30); + puVar22 = (ushort *)(param_5 + lVar30); + pauVar23 = (undefined1 (*) [16])(param_3 + lVar30); + uVar2 = uVar4; + if ((pauVar17 < (undefined1 (*) [16])(param_5 + lVar29) && + puVar22 < (ushort *)(param_1 + lVar29) || + pauVar23 < (undefined1 (*) [16])(param_5 + lVar29) && + puVar22 < (ushort *)(param_3 + lVar29)) || (uVar12 + 1 < 4)) { + do { + puVar16 = *pauVar17; + uVar9 = *(ushort *)*pauVar17; + uVar10 = *(ushort *)*pauVar23; + uVar8 = *(ushort *)(*pauVar23 + 2); + if (*(ushort *)(*pauVar17 + 2) < *(ushort *)(*pauVar23 + 2)) { + uVar8 = *(ushort *)(*pauVar17 + 2); + } + puVar22[1] = uVar8; + if (uVar9 < uVar10) { + uVar10 = uVar9; + } + *puVar22 = uVar10; + uVar9 = *(ushort *)(*pauVar17 + 4); + uVar10 = *(ushort *)(*pauVar23 + 4); + uVar8 = *(ushort *)(*pauVar23 + 6); + if (*(ushort *)(*pauVar17 + 6) < *(ushort *)(*pauVar23 + 6)) { + uVar8 = *(ushort *)(*pauVar17 + 6); + } + puVar22[3] = uVar8; + if (uVar9 < uVar10) { + uVar10 = uVar9; + } + puVar22[2] = uVar10; + pauVar17 = (undefined1 (*) [16])(puVar16 + 8); + puVar22 = puVar22 + 4; + pauVar23 = (undefined1 (*) [16])(*pauVar23 + 8); + } while ((undefined1 (*) [16])(puVar16 + 8) != (undefined1 (*) [16])(param_1 + lVar35)); + } + else { + uVar24 = uVar11; + if (3 < uVar14) { + uVar24 = 0; + do { + uVar24 = uVar24 + 1; + auVar33 = NEON_umin(*pauVar23,*pauVar17,2); + *(long *)(puVar22 + 4) = auVar33._8_8_; + *(long *)puVar22 = auVar33._0_8_; + pauVar17 = pauVar17 + 1; + puVar22 = puVar22 + 8; + pauVar23 = pauVar23 + 1; + } while (uVar24 < uVar1); + uVar24 = uVar11 + uVar1 * 8; + if (uVar12 + 1 == uVar1 * 2) goto LAB_002384dc; + } + uVar18 = -(ulong)(uVar24 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar24 << 1; + lVar32 = uVar18 + 2; + lVar26 = uVar18 + 4; + lVar3 = uVar18 + 6; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + uVar10 = *(ushort *)(param_3 + uVar18); + if (*(ushort *)(param_1 + uVar18) < *(ushort *)(param_3 + uVar18)) { + uVar10 = *(ushort *)(param_1 + uVar18); + } + *(ushort *)(param_5 + uVar18) = uVar10; + *(ushort *)(param_5 + lVar32) = uVar8; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_1 + lVar3) < *(ushort *)(param_3 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + uVar10 = *(ushort *)(param_3 + lVar26); + if (*(ushort *)(param_1 + lVar26) < *(ushort *)(param_3 + lVar26)) { + uVar10 = *(ushort *)(param_1 + lVar26); + } + *(ushort *)(param_5 + lVar26) = uVar10; + *(ushort *)(param_5 + lVar3) = uVar8; + } + } +LAB_002384dc: + uVar18 = (ulong)uVar2; + if ((int)uVar2 < iVar7) { + uVar24 = iVar7 - uVar2; + lVar26 = ((long)(int)uVar2 + 8) * 2; + lVar32 = lVar26 + -0x10; + uVar20 = param_5 + lVar32; + uVar5 = param_1 + lVar32; + if ((uVar20 < (ulong)(param_1 + lVar26) && uVar5 < (ulong)(param_5 + lVar26) || + (ulong)(param_3 + lVar32) < (ulong)(param_5 + lVar26) && + uVar20 < (ulong)(param_3 + lVar26)) || (uVar24 < 0xc)) { + lVar26 = 0; + do { + uVar8 = *(ushort *)(param_3 + lVar32 + lVar26); + if (*(ushort *)(uVar5 + lVar26) < uVar8) { + uVar8 = *(ushort *)(uVar5 + lVar26); + } + *(ushort *)(uVar20 + lVar26) = uVar8; + lVar26 = lVar26 + 2; + } while (lVar26 != ((ulong)((iVar7 + -1) - uVar2) + 1) * 2); + } + else { + uVar6 = -((uint)(uVar5 >> 1) & 7) & 7; + if (uVar24 < uVar6) { + uVar6 = uVar24; + } + if (uVar6 != 0) { + lVar26 = (long)(int)uVar2 * 2; + uVar8 = *(ushort *)(param_3 + lVar26); + if (*(ushort *)(param_1 + lVar26) < *(ushort *)(param_3 + lVar26)) { + uVar8 = *(ushort *)(param_1 + lVar26); + } + *(ushort *)(param_5 + lVar26) = uVar8; + if (uVar6 == 1) { + uVar18 = (ulong)(uVar2 + 1); + } + else { + lVar3 = lVar26 + 2; + uVar31 = uVar2 + 2; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_1 + lVar3) < *(ushort *)(param_3 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 2) { + lVar3 = lVar26 + 4; + uVar31 = uVar2 + 3; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_1 + lVar3) < *(ushort *)(param_3 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 3) { + lVar3 = lVar26 + 6; + uVar31 = uVar2 + 4; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_1 + lVar3) < *(ushort *)(param_3 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 4) { + lVar3 = lVar26 + 8; + uVar31 = uVar2 + 5; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_1 + lVar3) < *(ushort *)(param_3 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 != 5) { + lVar3 = lVar26 + 10; + uVar31 = uVar2 + 6; + uVar8 = *(ushort *)(param_3 + lVar3); + if (*(ushort *)(param_1 + lVar3) < *(ushort *)(param_3 + lVar3)) { + uVar8 = *(ushort *)(param_1 + lVar3); + } + *(ushort *)(param_5 + lVar3) = uVar8; + if (uVar6 == 7) { + lVar26 = lVar26 + 0xc; + uVar18 = (ulong)(uVar2 + 7); + uVar8 = *(ushort *)(param_3 + lVar26); + if (*(ushort *)(param_1 + lVar26) < *(ushort *)(param_3 + lVar26)) { + uVar8 = *(ushort *)(param_1 + lVar26); + } + *(ushort *)(param_5 + lVar26) = uVar8; + goto LAB_00238654; + } + } + } + } + } + uVar18 = (ulong)uVar31; + } + } +LAB_00238654: + uVar2 = ((uVar24 - uVar6) - 8 >> 3) + 1; + iVar21 = uVar2 * 8; + if (6 < (uVar24 - 1) - uVar6) { + lVar32 = lVar32 + (ulong)uVar6 * 2; + uVar31 = 0; + puVar19 = (undefined8 *)(param_5 + lVar32); + pauVar17 = (undefined1 (*) [16])(param_3 + lVar32); + pauVar23 = (undefined1 (*) [16])(param_1 + lVar32); + do { + uVar31 = uVar31 + 1; + auVar33 = NEON_umin(*pauVar17,*pauVar23,2); + puVar19[1] = auVar33._8_8_; + *puVar19 = auVar33._0_8_; + puVar19 = puVar19 + 2; + pauVar17 = pauVar17 + 1; + pauVar23 = pauVar23 + 1; + } while (uVar31 < uVar2); + uVar18 = (ulong)(uint)((int)uVar18 + iVar21); + if (uVar24 - uVar6 == iVar21) goto LAB_002387a4; + } + uVar20 = -(uVar18 >> 0x1f) & 0xfffffffe00000000 | uVar18 << 1; + iVar21 = (int)uVar18; + uVar8 = *(ushort *)(param_3 + uVar20); + if (*(ushort *)(param_1 + uVar20) < *(ushort *)(param_3 + uVar20)) { + uVar8 = *(ushort *)(param_1 + uVar20); + } + *(ushort *)(param_5 + uVar20) = uVar8; + if (iVar21 + 1 < iVar7) { + lVar32 = uVar20 + 2; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 2 < iVar7) { + lVar32 = uVar20 + 4; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 3 < iVar7) { + lVar32 = uVar20 + 6; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 4 < iVar7) { + lVar32 = uVar20 + 8; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 5 < iVar7) { + lVar32 = uVar20 + 10; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + if (iVar21 + 6 < iVar7) { + lVar32 = uVar20 + 0xc; + uVar8 = *(ushort *)(param_3 + lVar32); + if (*(ushort *)(param_1 + lVar32) < *(ushort *)(param_3 + lVar32)) { + uVar8 = *(ushort *)(param_1 + lVar32); + } + *(ushort *)(param_5 + lVar32) = uVar8; + } + } + } + } + } + } + } + } +LAB_002387a4: + iVar28 = iVar28 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar28 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023889c (2416 bytes) name=FUN_0023889c + +void FUN_0023889c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + long lVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + uint uVar7; + char cVar8; + int iVar9; + byte bVar10; + char cVar11; + char cVar12; + int iVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + uint uVar18; + undefined1 auVar19 [16]; + uint uVar20; + undefined1 *puVar21; + int iVar22; + undefined1 (*pauVar23) [16]; + undefined1 (*pauVar24) [16]; + undefined8 *puVar25; + char *pcVar26; + uint uVar27; + undefined1 (*pauVar28) [16]; + uint uVar29; + undefined1 (*pauVar30) [16]; + long lVar31; + long lVar32; + int iVar33; + long lVar34; + long lVar35; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + + iVar33 = param_7[1]; + iVar9 = *param_7; + if (iVar33 != 0) { + uVar16 = iVar9 - 0x20; + iVar13 = ((uVar16 >> 5) + 1) * 0x20; + if ((int)uVar16 < 0) { + iVar13 = 0; + } + iVar17 = iVar9 + -3; + uVar18 = (iVar9 + -4) - iVar13; + lVar34 = (long)iVar13; + uVar15 = uVar18 >> 2; + uVar1 = (uVar15 - 3 >> 2) + 1; + iVar4 = iVar13 + 4 + uVar15 * 4; + lVar2 = lVar34 + 0x40; + do { + if (-1 < (int)uVar16) { + pauVar23 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar24 = (undefined1 (*) [16])(param_3 + 0x10); + puVar25 = (undefined8 *)(param_5 + 0x10); + do { + pauVar30 = pauVar23 + -1; + pauVar28 = pauVar24 + -1; + auVar36 = *pauVar23; + pauVar23 = pauVar23 + 2; + auVar19 = *pauVar24; + pauVar24 = pauVar24 + 2; + auVar37 = NEON_smin(*pauVar30,*pauVar28,1); + auVar36 = NEON_smin(auVar36,auVar19,1); + puVar25[-1] = auVar37._8_8_; + puVar25[-2] = auVar37._0_8_; + puVar25[1] = auVar36._8_8_; + *puVar25 = auVar36._0_8_; + puVar25 = puVar25 + 4; + } while (pauVar23 != (undefined1 (*) [16])(param_1 + (ulong)(uVar16 >> 5) * 0x20 + 0x30)); + } + iVar14 = iVar13; + if (iVar13 < iVar17) { + pauVar23 = (undefined1 (*) [16])(param_1 + lVar34); + pcVar26 = (char *)(param_5 + lVar34); + pauVar24 = (undefined1 (*) [16])(param_3 + lVar34); + iVar14 = iVar4; + if ((pauVar23 < (undefined1 (*) [16])(param_5 + lVar2) && + pcVar26 < (char *)(param_1 + lVar2) || + pauVar24 < (undefined1 (*) [16])(param_5 + lVar2) && + pcVar26 < (char *)(param_3 + lVar2)) || (uVar15 + 1 < 5)) { + do { + puVar21 = *pauVar23; + cVar11 = (*pauVar23)[0]; + cVar12 = (*pauVar24)[0]; + bVar10 = (*pauVar24)[0]; + cVar8 = (*pauVar24)[1]; + if ((int)(char)(*pauVar23)[1] < (int)(uint)(byte)(*pauVar24)[1]) { + cVar8 = (*pauVar23)[1]; + } + pcVar26[1] = cVar8; + if ((int)cVar11 < (int)(uint)bVar10) { + cVar12 = cVar11; + } + *pcVar26 = cVar12; + cVar11 = (*pauVar23)[2]; + cVar12 = (*pauVar24)[2]; + cVar8 = (*pauVar24)[3]; + if ((int)(char)(*pauVar23)[3] < (int)(uint)(byte)(*pauVar24)[3]) { + cVar8 = (*pauVar23)[3]; + } + bVar10 = (*pauVar24)[2]; + pcVar26[3] = cVar8; + if ((int)cVar11 < (int)(uint)bVar10) { + cVar12 = cVar11; + } + pcVar26[2] = cVar12; + pauVar24 = (undefined1 (*) [16])(*pauVar24 + 4); + pauVar23 = (undefined1 (*) [16])(puVar21 + 4); + pcVar26 = pcVar26 + 4; + } while ((undefined1 (*) [16])(puVar21 + 4) != + (undefined1 (*) [16])(param_1 + lVar34 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar22 = iVar13; + if (0xb < uVar18) { + uVar27 = 0; + do { + uVar27 = uVar27 + 1; + auVar36 = NEON_smin(*pauVar24,*pauVar23,1); + *(long *)(pcVar26 + 8) = auVar36._8_8_; + *(long *)pcVar26 = auVar36._0_8_; + pauVar24 = pauVar24 + 1; + pauVar23 = pauVar23 + 1; + pcVar26 = pcVar26 + 0x10; + } while (uVar27 < uVar1); + iVar22 = iVar13 + uVar1 * 0x10; + if (uVar15 + 1 == uVar1 * 4) goto LAB_00238b94; + } + lVar31 = (long)iVar22; + lVar32 = lVar31 + 1; + lVar35 = lVar31 + 2; + lVar3 = lVar31 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + cVar12 = *(char *)(param_3 + lVar31); + if (*(char *)(param_1 + lVar31) < *(char *)(param_3 + lVar31)) { + cVar12 = *(char *)(param_1 + lVar31); + } + *(char *)(param_5 + lVar31) = cVar12; + *(char *)(param_5 + lVar32) = cVar8; + cVar8 = *(char *)(param_3 + lVar3); + if (*(char *)(param_1 + lVar3) < *(char *)(param_3 + lVar3)) { + cVar8 = *(char *)(param_1 + lVar3); + } + cVar12 = *(char *)(param_3 + lVar35); + if (*(char *)(param_1 + lVar35) < *(char *)(param_3 + lVar35)) { + cVar12 = *(char *)(param_1 + lVar35); + } + *(char *)(param_5 + lVar35) = cVar12; + *(char *)(param_5 + lVar3) = cVar8; + if (iVar22 + 4 < iVar17) { + lVar31 = (long)(iVar22 + 4); + lVar32 = lVar31 + 1; + lVar35 = lVar31 + 2; + lVar3 = lVar31 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + cVar12 = *(char *)(param_3 + lVar31); + if (*(char *)(param_1 + lVar31) < *(char *)(param_3 + lVar31)) { + cVar12 = *(char *)(param_1 + lVar31); + } + *(char *)(param_5 + lVar31) = cVar12; + *(char *)(param_5 + lVar32) = cVar8; + cVar8 = *(char *)(param_3 + lVar3); + if (*(char *)(param_1 + lVar3) < *(char *)(param_3 + lVar3)) { + cVar8 = *(char *)(param_1 + lVar3); + } + cVar12 = *(char *)(param_3 + lVar35); + if (*(char *)(param_1 + lVar35) < *(char *)(param_3 + lVar35)) { + cVar12 = *(char *)(param_1 + lVar35); + } + *(char *)(param_5 + lVar35) = cVar12; + *(char *)(param_5 + lVar3) = cVar8; + if (iVar22 + 8 < iVar17) { + lVar31 = (long)(iVar22 + 8); + lVar32 = lVar31 + 1; + lVar35 = lVar31 + 2; + lVar3 = lVar31 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + cVar12 = *(char *)(param_3 + lVar31); + if (*(char *)(param_1 + lVar31) < *(char *)(param_3 + lVar31)) { + cVar12 = *(char *)(param_1 + lVar31); + } + *(char *)(param_5 + lVar31) = cVar12; + *(char *)(param_5 + lVar32) = cVar8; + cVar8 = *(char *)(param_3 + lVar3); + if (*(char *)(param_1 + lVar3) < *(char *)(param_3 + lVar3)) { + cVar8 = *(char *)(param_1 + lVar3); + } + cVar12 = *(char *)(param_3 + lVar35); + if (*(char *)(param_1 + lVar35) < *(char *)(param_3 + lVar35)) { + cVar12 = *(char *)(param_1 + lVar35); + } + *(char *)(param_5 + lVar35) = cVar12; + *(char *)(param_5 + lVar3) = cVar8; + } + } + } + } +LAB_00238b94: + if (iVar14 < iVar9) { + lVar35 = (long)iVar14; + uVar27 = iVar9 - iVar14; + lVar32 = lVar35 + 0x10; + pcVar26 = (char *)(param_1 + lVar35); + pcVar5 = (char *)(param_5 + lVar35); + pcVar6 = (char *)(param_3 + lVar35); + if ((pcVar26 < (char *)(param_5 + lVar32) && pcVar5 < (char *)(param_1 + lVar32) || + pcVar6 < (char *)(param_5 + lVar32) && pcVar5 < (char *)(param_3 + lVar32)) || + (uVar27 < 0x14)) { + lVar32 = 0; + do { + cVar8 = pcVar6[lVar32]; + if (pcVar26[lVar32] < pcVar6[lVar32]) { + cVar8 = pcVar26[lVar32]; + } + pcVar5[lVar32] = cVar8; + lVar32 = lVar32 + 1; + } while (lVar32 != (ulong)(uint)((iVar9 + -1) - iVar14) + 1); + } + else { + uVar7 = -(int)pcVar26 & 0xf; + uVar20 = uVar27; + if (uVar7 < uVar27) { + uVar20 = uVar7; + } + iVar22 = iVar14; + if (uVar20 != 0) { + iVar22 = iVar14 + 1; + cVar8 = *pcVar6; + if (*pcVar26 < *pcVar6) { + cVar8 = *pcVar26; + } + *pcVar5 = cVar8; + if (uVar20 != 1) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 2; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 2) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 3; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 3) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 4; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 4) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 5; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 5) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 6; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 6) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 7; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 7) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 8; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 8) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 9; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 9) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 10; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 10) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xb; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 0xb) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xc; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 0xc) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xd; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 != 0xd) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xe; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) + { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (uVar20 == 0xf) { + lVar32 = (long)iVar22; + iVar22 = iVar14 + 0xf; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < + *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar7 = ((uVar27 - uVar20) - 0x10 >> 4) + 1; + iVar14 = uVar7 * 0x10; + if (0xe < (uVar27 - 1) - uVar20) { + lVar35 = lVar35 + (ulong)uVar20; + uVar29 = 0; + puVar25 = (undefined8 *)(param_5 + lVar35); + pauVar23 = (undefined1 (*) [16])(param_3 + lVar35); + pauVar24 = (undefined1 (*) [16])(param_1 + lVar35); + do { + uVar29 = uVar29 + 1; + auVar36 = NEON_smin(*pauVar23,*pauVar24,1); + puVar25[1] = auVar36._8_8_; + *puVar25 = auVar36._0_8_; + puVar25 = puVar25 + 2; + pauVar23 = pauVar23 + 1; + pauVar24 = pauVar24 + 1; + } while (uVar29 < uVar7); + iVar22 = iVar22 + iVar14; + if (uVar27 - uVar20 == iVar14) goto LAB_00239104; + } + lVar32 = (long)iVar22; + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 1 < iVar9) { + lVar32 = (long)(iVar22 + 1); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 2 < iVar9) { + lVar32 = (long)(iVar22 + 2); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 3 < iVar9) { + lVar32 = (long)(iVar22 + 3); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 4 < iVar9) { + lVar32 = (long)(iVar22 + 4); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 5 < iVar9) { + lVar32 = (long)(iVar22 + 5); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 6 < iVar9) { + lVar32 = (long)(iVar22 + 6); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 7 < iVar9) { + lVar32 = (long)(iVar22 + 7); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 8 < iVar9) { + lVar32 = (long)(iVar22 + 8); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 9 < iVar9) { + lVar32 = (long)(iVar22 + 9); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 10 < iVar9) { + lVar32 = (long)(iVar22 + 10); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xb < iVar9) { + lVar32 = (long)(iVar22 + 0xb); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xc < iVar9) { + lVar32 = (long)(iVar22 + 0xc); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xd < iVar9) { + lVar32 = (long)(iVar22 + 0xd); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + if (iVar22 + 0xe < iVar9) { + lVar32 = (long)(iVar22 + 0xe); + cVar8 = *(char *)(param_3 + lVar32); + if (*(char *)(param_1 + lVar32) < *(char *)(param_3 + lVar32)) + { + cVar8 = *(char *)(param_1 + lVar32); + } + *(char *)(param_5 + lVar32) = cVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00239104: + iVar33 = iVar33 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar33 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023920c (488 bytes) name=FUN_0023920c + +void FUN_0023920c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + byte *pbVar1; + int iVar2; + char cVar3; + byte bVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined1 auVar8 [16]; + int iVar9; + undefined *puVar10; + undefined1 (*pauVar11) [16]; + byte *pbVar12; + long lVar13; + undefined8 *puVar14; + char *pcVar15; + undefined1 (*pauVar16) [16]; + byte *pbVar17; + undefined1 (*pauVar18) [16]; + long lVar19; + undefined1 (*pauVar20) [16]; + int iVar21; + long lVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + + iVar21 = param_7[1]; + iVar2 = *param_7; + if (iVar21 != 0) { + uVar7 = iVar2 - 0x20; + iVar5 = ((uVar7 >> 5) + 1) * 0x20; + if ((int)uVar7 < 0) { + iVar5 = 0; + } + uVar6 = (uint)((iVar2 + -4) - iVar5) >> 2; + lVar22 = (long)iVar5; + do { + if (-1 < (int)uVar7) { + pauVar11 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar16 = (undefined1 (*) [16])(param_3 + 0x10); + puVar14 = (undefined8 *)(param_5 + 0x10); + do { + pauVar20 = pauVar11 + -1; + pauVar18 = pauVar16 + -1; + auVar23 = *pauVar11; + pauVar11 = pauVar11 + 2; + auVar8 = *pauVar16; + pauVar16 = pauVar16 + 2; + auVar24 = NEON_umin(*pauVar20,*pauVar18,1); + auVar23 = NEON_umin(auVar23,auVar8,1); + puVar14[-1] = auVar24._8_8_; + puVar14[-2] = auVar24._0_8_; + puVar14[1] = auVar23._8_8_; + *puVar14 = auVar23._0_8_; + puVar14 = puVar14 + 4; + } while (pauVar11 != (undefined1 (*) [16])(param_1 + (ulong)(uVar7 >> 5) * 0x20 + 0x30)); + } + iVar9 = iVar5; + if (iVar5 < iVar2 + -3) { + pbVar12 = (byte *)(param_1 + lVar22); + pcVar15 = (char *)(param_5 + lVar22); + pbVar17 = (byte *)(param_3 + lVar22); + do { + puVar10 = PTR_DAT_00501c00; + pbVar1 = pbVar12 + 4; + bVar4 = pbVar12[1]; + cVar3 = PTR_DAT_00501c00[(int)(((uint)bVar4 - (uint)pbVar17[1]) + 0x100)]; + *pcVar15 = *pbVar12 - PTR_DAT_00501c00[(int)(((uint)*pbVar12 - (uint)*pbVar17) + 0x100)]; + pcVar15[1] = bVar4 - cVar3; + bVar4 = pbVar12[2]; + cVar3 = puVar10[(int)(((uint)bVar4 - (uint)pbVar17[2]) + 0x100)]; + pcVar15[3] = pbVar12[3] - puVar10[(int)(((uint)pbVar12[3] - (uint)pbVar17[3]) + 0x100)]; + pcVar15[2] = bVar4 - cVar3; + pbVar12 = pbVar1; + pcVar15 = pcVar15 + 4; + pbVar17 = pbVar17 + 4; + iVar9 = iVar5 + 4 + uVar6 * 4; + } while (pbVar1 != (byte *)(param_1 + lVar22 + 4 + (ulong)uVar6 * 4)); + } + lVar19 = (long)iVar9; + if (iVar9 < iVar2) { + lVar13 = 0; + do { + bVar4 = *(byte *)(param_1 + lVar19 + lVar13); + *(byte *)(param_5 + lVar19 + lVar13) = + bVar4 - PTR_DAT_00501c00 + [(int)(((uint)bVar4 - (uint)*(byte *)(param_3 + lVar19 + lVar13)) + 0x100)]; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar2 + -1) - iVar9) + 1); + } + iVar21 = iVar21 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar21 != 0); + } + return; +} + + +================================================================== + +### FUNC 002393f4 (564 bytes) name=FUN_002393f4 + +void FUN_002393f4(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + short *psVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined1 auVar7 [16]; + uint uVar8; + undefined1 (*pauVar9) [16]; + short *psVar10; + long lVar11; + undefined8 *puVar12; + undefined2 *puVar13; + undefined1 (*pauVar14) [16]; + short *psVar15; + ulong uVar16; + undefined2 uVar17; + undefined2 uVar18; + undefined2 uVar19; + undefined1 (*pauVar20) [16]; + undefined2 uVar21; + undefined1 (*pauVar22) [16]; + int iVar23; + long lVar24; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + + iVar23 = param_7[1]; + iVar3 = *param_7; + if (iVar23 != 0) { + uVar6 = iVar3 - 0x10; + uVar4 = ((uVar6 >> 4) + 1) * 0x10; + if ((int)uVar6 < 0) { + uVar4 = 0; + } + uVar5 = (iVar3 + -4) - uVar4 >> 2; + lVar24 = (long)(int)uVar4 * 2; + do { + if (-1 < (int)uVar6) { + pauVar9 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar14 = (undefined1 (*) [16])(param_3 + 0x10); + puVar12 = (undefined8 *)(param_5 + 0x10); + do { + pauVar22 = pauVar9 + -1; + pauVar20 = pauVar14 + -1; + auVar25 = *pauVar9; + pauVar9 = pauVar9 + 2; + auVar7 = *pauVar14; + pauVar14 = pauVar14 + 2; + auVar26 = NEON_sqadd(*pauVar22,*pauVar20,2); + auVar25 = NEON_sqadd(auVar25,auVar7,2); + puVar12[-1] = auVar26._8_8_; + puVar12[-2] = auVar26._0_8_; + puVar12[1] = auVar25._8_8_; + *puVar12 = auVar25._0_8_; + puVar12 = puVar12 + 4; + } while (pauVar9 != (undefined1 (*) [16])(param_1 + (ulong)(uVar6 >> 4) * 0x20 + 0x30)); + } + uVar17 = 0x8000; + uVar18 = 0x7fff; + uVar8 = uVar4; + if ((int)uVar4 < iVar3 + -3) { + psVar10 = (short *)(param_1 + lVar24); + puVar13 = (undefined2 *)(param_5 + lVar24); + psVar15 = (short *)(param_3 + lVar24); + do { + iVar2 = (int)*psVar10 + (int)*psVar15; + uVar21 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar21 = uVar18, iVar2 < 1)) { + uVar21 = uVar17; + } + iVar2 = (int)psVar10[1] + (int)psVar15[1]; + uVar19 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar19 = uVar18, iVar2 < 1)) { + uVar19 = uVar17; + } + *puVar13 = uVar21; + puVar13[1] = uVar19; + iVar2 = (int)psVar10[2] + (int)psVar15[2]; + uVar21 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar21 = 0x7fff, iVar2 < 1)) { + uVar21 = 0x8000; + } + psVar1 = psVar10 + 3; + psVar10 = psVar10 + 4; + iVar2 = (int)*psVar1 + (int)psVar15[3]; + uVar19 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar19 = 0x7fff, iVar2 < 1)) { + uVar19 = 0x8000; + } + puVar13[2] = uVar21; + puVar13[3] = uVar19; + puVar13 = puVar13 + 4; + psVar15 = psVar15 + 4; + uVar8 = uVar4 + 4 + uVar5 * 4; + } while (psVar10 != (short *)(param_1 + ((long)(int)uVar4 + 4 + (ulong)uVar5 * 4) * 2)); + } + if ((int)uVar8 < iVar3) { + uVar16 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + lVar11 = 0; + do { + iVar2 = (int)*(short *)(param_1 + uVar16 + lVar11) + + (int)*(short *)(param_3 + uVar16 + lVar11); + uVar21 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar21 = uVar18, iVar2 < 1)) { + uVar21 = uVar17; + } + *(undefined2 *)(param_5 + uVar16 + lVar11) = uVar21; + lVar11 = lVar11 + 2; + } while (lVar11 != ((ulong)((iVar3 + -1) - uVar8) + 1) * 2); + } + iVar23 = iVar23 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 00239628 (1640 bytes) name=FUN_00239628 + +void FUN_00239628(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + uint uVar1; + long lVar2; + uint uVar3; + uint uVar4; + uint uVar5; + ushort *puVar6; + ulong uVar7; + uint uVar8; + int iVar9; + ushort uVar10; + ushort uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + unkbyte10 Var20; + undefined1 (*pauVar21) [16]; + ulong uVar22; + undefined8 *puVar23; + ushort *puVar24; + int iVar25; + undefined2 *puVar26; + unkbyte10 *pVar27; + ushort *puVar28; + long lVar29; + ulong uVar30; + uint uVar31; + undefined1 (*pauVar32) [16]; + long lVar33; + undefined1 (*pauVar34) [16]; + int iVar35; + long lVar36; + long lVar37; + uint uVar38; + undefined8 *puVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + long lVar47; + + iVar35 = param_7[1]; + iVar9 = *param_7; + if (iVar35 != 0) { + uVar14 = iVar9 - 0x10; + uVar12 = ((uVar14 >> 4) + 1) * 0x10; + if ((int)uVar14 < 0) { + uVar12 = 0; + } + uVar15 = (iVar9 + -4) - uVar12; + lVar36 = ((long)(int)uVar12 + 0x20) * 2; + lVar37 = lVar36 + -0x40; + uVar13 = uVar15 >> 2; + uVar1 = (uVar13 - 1 >> 1) + 1; + uVar3 = uVar12 + 4 + uVar13 * 4; + lVar47 = NEON_shl((long)(int)uVar12 + 4 + (ulong)uVar13 * 4,1); + do { + if (-1 < (int)uVar14) { + pauVar21 = (undefined1 (*) [16])(param_1 + 0x10); + pVar27 = (unkbyte10 *)(param_3 + 0x10); + puVar23 = (undefined8 *)(param_5 + 0x10); + do { + pauVar34 = pauVar21 + -1; + pauVar32 = (undefined1 (*) [16])(pVar27 + -1); + auVar45 = *pauVar21; + pauVar21 = pauVar21 + 2; + uVar16 = *(undefined8 *)((long)pVar27 + 8); + Var20 = *pVar27; + pVar27 = pVar27 + 2; + auVar43 = NEON_uqadd(*pauVar34,*pauVar32,2); + auVar40._10_2_ = (short)((ulong)uVar16 >> 0x10); + auVar40._0_10_ = Var20; + auVar40._12_2_ = (short)((ulong)uVar16 >> 0x20); + auVar40._14_2_ = (short)((ulong)uVar16 >> 0x30); + auVar40 = NEON_uqadd(auVar45,auVar40,2); + puVar23[-1] = auVar43._8_8_; + puVar23[-2] = auVar43._0_8_; + puVar23[1] = auVar40._8_8_; + *puVar23 = auVar40._0_8_; + puVar23 = puVar23 + 4; + } while (pauVar21 != (undefined1 (*) [16])(param_1 + (ulong)(uVar14 >> 4) * 0x20 + 0x30)); + } + uVar5 = uVar12; + if ((int)uVar12 < iVar9 + -3) { + puVar24 = (ushort *)(param_1 + lVar37); + puVar26 = (undefined2 *)(param_5 + lVar37); + puVar28 = (ushort *)(param_3 + lVar37); + uVar5 = uVar3; + if ((puVar24 < (ushort *)(param_5 + lVar36) && puVar26 < (undefined2 *)(param_1 + lVar36) || + puVar28 < (ushort *)(param_5 + lVar36) && puVar26 < (undefined2 *)(param_3 + lVar36)) + || (uVar13 + 1 < 3)) { + do { + puVar6 = puVar24 + 4; + uVar10 = puVar24[1]; + uVar31 = (uint)*puVar24 + (uint)*puVar28; + uVar11 = puVar28[1]; + if (0xffff < uVar31) { + uVar31 = 0xffffffff; + } + *puVar26 = (short)uVar31; + uVar31 = (uint)uVar10 + (uint)uVar11; + if (0xffff < uVar31) { + uVar31 = 0xffffffff; + } + puVar26[1] = (short)uVar31; + uVar31 = (uint)puVar24[2] + (uint)puVar28[2]; + uVar38 = (uint)puVar24[3] + (uint)puVar28[3]; + if (0xffff < uVar31) { + uVar31 = 0xffffffff; + } + puVar26[2] = (short)uVar31; + if (0xffff < uVar38) { + uVar38 = 0xffffffff; + } + puVar26[3] = (short)uVar38; + puVar24 = puVar6; + puVar26 = puVar26 + 4; + puVar28 = puVar28 + 4; + } while (puVar6 != (ushort *)(param_1 + lVar47)); + } + else { + uVar31 = uVar12; + if (3 < uVar15) { + lVar29 = 0; + uVar31 = 0; + do { + puVar6 = (ushort *)((long)puVar28 + lVar29); + puVar23 = (undefined8 *)((long)puVar26 + lVar29); + uVar31 = uVar31 + 1; + uVar17 = ((undefined8 *)((long)puVar24 + lVar29))[1]; + uVar16 = *(undefined8 *)((long)puVar24 + lVar29); + lVar29 = lVar29 + 0x10; + auVar44._0_4_ = (uint)*puVar6 + (uint)(ushort)uVar16; + auVar44._4_4_ = (uint)puVar6[1] + (uint)(ushort)((ulong)uVar16 >> 0x10); + auVar44._8_4_ = (uint)puVar6[2] + (uint)(ushort)((ulong)uVar16 >> 0x20); + auVar44._12_4_ = (uint)puVar6[3] + (uint)(ushort)((ulong)uVar16 >> 0x30); + auVar41._0_4_ = (uint)puVar6[4] + (uint)(ushort)uVar17; + auVar41._4_4_ = (uint)puVar6[5] + (uint)(ushort)((ulong)uVar17 >> 0x10); + auVar41._8_4_ = (uint)puVar6[6] + (uint)(ushort)((ulong)uVar17 >> 0x20); + auVar41._12_4_ = (uint)puVar6[7] + (uint)(ushort)((ulong)uVar17 >> 0x30); + auVar45._8_4_ = 0xffff; + auVar45._0_8_ = 0xffff0000ffff; + auVar45._12_4_ = 0xffff; + auVar45 = NEON_smin(auVar44,auVar45,4); + auVar43._8_4_ = 0xffff; + auVar43._0_8_ = 0xffff0000ffff; + auVar43._12_4_ = 0xffff; + auVar40 = NEON_smin(auVar41,auVar43,4); + puVar23[1] = CONCAT26(auVar40._12_2_, + CONCAT24(auVar40._8_2_,CONCAT22(auVar40._4_2_,auVar40._0_2_))); + *puVar23 = CONCAT26(auVar45._12_2_, + CONCAT24(auVar45._8_2_,CONCAT22(auVar45._4_2_,auVar45._0_2_))); + } while (uVar31 < uVar1); + uVar31 = uVar12 + uVar1 * 8; + if (uVar13 + 1 == uVar1 * 2) goto LAB_00239878; + } + uVar22 = -(ulong)(uVar31 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar31 << 1; + lVar29 = uVar22 + 2; + lVar33 = uVar22 + 4; + lVar2 = uVar22 + 6; + uVar31 = (uint)*(ushort *)(param_1 + uVar22) + (uint)*(ushort *)(param_3 + uVar22); + uVar38 = (uint)*(ushort *)(param_1 + lVar29) + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar31) { + uVar31 = 0xffffffff; + } + *(short *)(param_5 + uVar22) = (short)uVar31; + if (0xffff < uVar38) { + uVar38 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar38; + uVar31 = (uint)*(ushort *)(param_1 + lVar33) + (uint)*(ushort *)(param_3 + lVar33); + uVar38 = (uint)*(ushort *)(param_1 + lVar2) + (uint)*(ushort *)(param_3 + lVar2); + if (0xffff < uVar31) { + uVar31 = 0xffffffff; + } + *(short *)(param_5 + lVar33) = (short)uVar31; + if (0xffff < uVar38) { + uVar38 = 0xffffffff; + } + *(short *)(param_5 + lVar2) = (short)uVar38; + } + } +LAB_00239878: + uVar22 = (ulong)uVar5; + if ((int)uVar5 < iVar9) { + uVar31 = iVar9 - uVar5; + lVar33 = ((long)(int)uVar5 + 8) * 2; + lVar29 = lVar33 + -0x10; + uVar30 = param_5 + lVar29; + uVar7 = param_1 + lVar29; + if ((uVar30 < (ulong)(param_1 + lVar33) && uVar7 < (ulong)(param_5 + lVar33) || + (ulong)(param_3 + lVar29) < (ulong)(param_5 + lVar33) && + uVar30 < (ulong)(param_3 + lVar33)) || (uVar31 < 0xb)) { + lVar33 = 0; + do { + uVar31 = (uint)*(ushort *)(uVar7 + lVar33) + + (uint)*(ushort *)(param_3 + lVar29 + lVar33); + if (0xffff < uVar31) { + uVar31 = 0xffffffff; + } + *(short *)(uVar30 + lVar33) = (short)uVar31; + lVar33 = lVar33 + 2; + } while (lVar33 != ((ulong)((iVar9 + -1) - uVar5) + 1) * 2); + } + else { + uVar38 = -((uint)(uVar7 >> 1) & 7) & 7; + uVar8 = uVar31; + if (uVar38 < uVar31) { + uVar8 = uVar38; + } + if (uVar8 != 0) { + lVar33 = (long)(int)uVar5 * 2; + uVar38 = uVar5 + 1; + uVar4 = (uint)*(ushort *)(param_1 + lVar33) + (uint)*(ushort *)(param_3 + lVar33); + if (0xffff < uVar4) { + uVar4 = 0xffffffff; + } + *(short *)(param_5 + lVar33) = (short)uVar4; + if (uVar8 != 1) { + lVar2 = lVar33 + 2; + uVar38 = uVar5 + 2; + uVar4 = (uint)*(ushort *)(param_1 + lVar2) + (uint)*(ushort *)(param_3 + lVar2); + if (0xffff < uVar4) { + uVar4 = 0xffffffff; + } + *(short *)(param_5 + lVar2) = (short)uVar4; + if (uVar8 != 2) { + lVar2 = lVar33 + 4; + uVar38 = uVar5 + 3; + uVar4 = (uint)*(ushort *)(param_1 + lVar2) + (uint)*(ushort *)(param_3 + lVar2); + if (0xffff < uVar4) { + uVar4 = 0xffffffff; + } + *(short *)(param_5 + lVar2) = (short)uVar4; + if (uVar8 != 3) { + lVar2 = lVar33 + 6; + uVar38 = uVar5 + 4; + uVar4 = (uint)*(ushort *)(param_1 + lVar2) + (uint)*(ushort *)(param_3 + lVar2); + if (0xffff < uVar4) { + uVar4 = 0xffffffff; + } + *(short *)(param_5 + lVar2) = (short)uVar4; + if (uVar8 != 4) { + lVar2 = lVar33 + 8; + uVar38 = uVar5 + 5; + uVar4 = (uint)*(ushort *)(param_1 + lVar2) + (uint)*(ushort *)(param_3 + lVar2); + if (0xffff < uVar4) { + uVar4 = 0xffffffff; + } + *(short *)(param_5 + lVar2) = (short)uVar4; + if (uVar8 != 5) { + lVar2 = lVar33 + 10; + uVar38 = uVar5 + 6; + uVar4 = (uint)*(ushort *)(param_1 + lVar2) + + (uint)*(ushort *)(param_3 + lVar2); + if (0xffff < uVar4) { + uVar4 = 0xffffffff; + } + *(short *)(param_5 + lVar2) = (short)uVar4; + if (uVar8 == 7) { + lVar33 = lVar33 + 0xc; + uVar22 = (ulong)(uVar5 + 7); + uVar5 = (uint)*(ushort *)(param_1 + lVar33) + + (uint)*(ushort *)(param_3 + lVar33); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar33) = (short)uVar5; + goto LAB_00239a0c; + } + } + } + } + } + } + uVar22 = (ulong)uVar38; + } +LAB_00239a0c: + uVar5 = ((uVar31 - uVar8) - 8 >> 3) + 1; + iVar25 = uVar5 * 8; + if (6 < (uVar31 - 1) - uVar8) { + lVar29 = lVar29 + (ulong)uVar8 * 2; + uVar38 = 0; + puVar23 = (undefined8 *)(param_5 + lVar29); + puVar24 = (ushort *)(param_3 + lVar29); + puVar39 = (undefined8 *)(param_1 + lVar29); + do { + uVar17 = puVar39[1]; + uVar16 = *puVar39; + uVar38 = uVar38 + 1; + auVar46._0_4_ = (uint)*puVar24 + (uint)(ushort)uVar16; + auVar46._4_4_ = (uint)puVar24[1] + (uint)(ushort)((ulong)uVar16 >> 0x10); + auVar46._8_4_ = (uint)puVar24[2] + (uint)(ushort)((ulong)uVar16 >> 0x20); + auVar46._12_4_ = (uint)puVar24[3] + (uint)(ushort)((ulong)uVar16 >> 0x30); + auVar42._0_4_ = (uint)puVar24[4] + (uint)(ushort)uVar17; + auVar42._4_4_ = (uint)puVar24[5] + (uint)(ushort)((ulong)uVar17 >> 0x10); + auVar42._8_4_ = (uint)puVar24[6] + (uint)(ushort)((ulong)uVar17 >> 0x20); + auVar42._12_4_ = (uint)puVar24[7] + (uint)(ushort)((ulong)uVar17 >> 0x30); + auVar18._8_4_ = 0xffff; + auVar18._0_8_ = 0xffff0000ffff; + auVar18._12_4_ = 0xffff; + auVar45 = NEON_smin(auVar46,auVar18,4); + auVar19._8_4_ = 0xffff; + auVar19._0_8_ = 0xffff0000ffff; + auVar19._12_4_ = 0xffff; + auVar40 = NEON_smin(auVar42,auVar19,4); + puVar23[1] = CONCAT26(auVar40._12_2_, + CONCAT24(auVar40._8_2_,CONCAT22(auVar40._4_2_,auVar40._0_2_))); + *puVar23 = CONCAT26(auVar45._12_2_, + CONCAT24(auVar45._8_2_,CONCAT22(auVar45._4_2_,auVar45._0_2_))); + puVar23 = puVar23 + 2; + puVar24 = puVar24 + 8; + puVar39 = puVar39 + 2; + } while (uVar38 < uVar5); + uVar22 = (ulong)(uint)((int)uVar22 + iVar25); + if (uVar31 - uVar8 == iVar25) goto LAB_00239b8c; + } + uVar30 = -(uVar22 >> 0x1f) & 0xfffffffe00000000 | uVar22 << 1; + iVar25 = (int)uVar22; + uVar5 = (uint)*(ushort *)(param_1 + uVar30) + (uint)*(ushort *)(param_3 + uVar30); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + uVar30) = (short)uVar5; + if (iVar25 + 1 < iVar9) { + lVar29 = uVar30 + 2; + uVar5 = (uint)*(ushort *)(param_1 + lVar29) + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar5; + if (iVar25 + 2 < iVar9) { + lVar29 = uVar30 + 4; + uVar5 = (uint)*(ushort *)(param_1 + lVar29) + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar5; + if (iVar25 + 3 < iVar9) { + lVar29 = uVar30 + 6; + uVar5 = (uint)*(ushort *)(param_1 + lVar29) + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar5; + if (iVar25 + 4 < iVar9) { + lVar29 = uVar30 + 8; + uVar5 = (uint)*(ushort *)(param_1 + lVar29) + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar5; + if (iVar25 + 5 < iVar9) { + lVar29 = uVar30 + 10; + uVar5 = (uint)*(ushort *)(param_1 + lVar29) + + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar5; + if (iVar25 + 6 < iVar9) { + lVar29 = uVar30 + 0xc; + uVar5 = (uint)*(ushort *)(param_1 + lVar29) + + (uint)*(ushort *)(param_3 + lVar29); + if (0xffff < uVar5) { + uVar5 = 0xffffffff; + } + *(short *)(param_5 + lVar29) = (short)uVar5; + } + } + } + } + } + } + } + } +LAB_00239b8c: + iVar35 = iVar35 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar35 != 0); + } + return; +} + + +================================================================== + +### FUNC 00239c90 (536 bytes) name=FUN_00239c90 + +void FUN_00239c90(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined1 auVar8 [16]; + undefined1 (*pauVar9) [16]; + char *pcVar10; + long lVar11; + undefined8 *puVar12; + undefined1 *puVar13; + undefined1 (*pauVar14) [16]; + char *pcVar15; + long lVar16; + undefined1 uVar17; + undefined1 uVar18; + undefined1 uVar19; + undefined1 (*pauVar20) [16]; + undefined1 uVar21; + undefined1 (*pauVar22) [16]; + int iVar23; + long lVar24; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + + iVar23 = param_7[1]; + iVar4 = *param_7; + if (iVar23 != 0) { + uVar7 = iVar4 - 0x20; + iVar5 = ((uVar7 >> 5) + 1) * 0x20; + if ((int)uVar7 < 0) { + iVar5 = 0; + } + uVar6 = (uint)((iVar4 + -4) - iVar5) >> 2; + lVar24 = (long)iVar5; + do { + if (-1 < (int)uVar7) { + pauVar9 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar14 = (undefined1 (*) [16])(param_3 + 0x10); + puVar12 = (undefined8 *)(param_5 + 0x10); + do { + pauVar22 = pauVar9 + -1; + pauVar20 = pauVar14 + -1; + auVar25 = *pauVar9; + pauVar9 = pauVar9 + 2; + auVar8 = *pauVar14; + pauVar14 = pauVar14 + 2; + auVar26 = NEON_sqadd(*pauVar22,*pauVar20,1); + auVar25 = NEON_sqadd(auVar25,auVar8,1); + puVar12[-1] = auVar26._8_8_; + puVar12[-2] = auVar26._0_8_; + puVar12[1] = auVar25._8_8_; + *puVar12 = auVar25._0_8_; + puVar12 = puVar12 + 4; + } while (pauVar9 != (undefined1 (*) [16])(param_1 + (ulong)(uVar7 >> 5) * 0x20 + 0x30)); + } + uVar17 = 0x80; + uVar18 = 0x7f; + iVar2 = iVar5; + if (iVar5 < iVar4 + -3) { + pcVar10 = (char *)(param_1 + lVar24); + puVar13 = (undefined1 *)(param_5 + lVar24); + pcVar15 = (char *)(param_3 + lVar24); + do { + iVar2 = (int)*pcVar10 + (int)*pcVar15; + uVar21 = (char)iVar2; + if ((0xff < iVar2 + 0x80U) && (uVar21 = uVar18, iVar2 < 1)) { + uVar21 = uVar17; + } + iVar2 = (int)pcVar10[1] + (int)pcVar15[1]; + uVar19 = (char)iVar2; + if ((0xff < iVar2 + 0x80U) && (uVar19 = uVar18, iVar2 < 1)) { + uVar19 = uVar17; + } + *puVar13 = uVar21; + puVar13[1] = uVar19; + iVar2 = (int)pcVar10[2] + (int)pcVar15[2]; + uVar21 = (char)iVar2; + if ((0xff < iVar2 + 0x80U) && (uVar21 = 0x7f, iVar2 < 1)) { + uVar21 = 0x80; + } + pcVar1 = pcVar10 + 3; + pcVar10 = pcVar10 + 4; + iVar2 = (int)*pcVar1 + (uint)(byte)pcVar15[3]; + uVar19 = (char)iVar2; + if ((0xff < iVar2 + 0x80U) && (uVar19 = 0x7f, iVar2 < 1)) { + uVar19 = 0x80; + } + puVar13[2] = uVar21; + puVar13[3] = uVar19; + puVar13 = puVar13 + 4; + pcVar15 = pcVar15 + 4; + iVar2 = iVar5 + 4 + uVar6 * 4; + } while (pcVar10 != (char *)(param_1 + lVar24 + 4 + (ulong)uVar6 * 4)); + } + lVar16 = (long)iVar2; + if (iVar2 < iVar4) { + lVar11 = 0; + do { + iVar3 = (int)*(char *)(param_1 + lVar16 + lVar11) + + (int)*(char *)(param_3 + lVar16 + lVar11); + uVar21 = (char)iVar3; + if ((0xff < iVar3 + 0x80U) && (uVar21 = uVar18, iVar3 < 1)) { + uVar21 = uVar17; + } + *(undefined1 *)(param_5 + lVar16 + lVar11) = uVar21; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar4 + -1) - iVar2) + 1); + } + iVar23 = iVar23 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 00239ea8 (468 bytes) name=FUN_00239ea8 + +void FUN_00239ea8(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + byte *pbVar1; + int iVar2; + undefined1 uVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined1 auVar7 [16]; + int iVar8; + undefined *puVar9; + undefined1 (*pauVar10) [16]; + byte *pbVar11; + long lVar12; + undefined8 *puVar13; + undefined1 *puVar14; + undefined1 (*pauVar15) [16]; + byte *pbVar16; + undefined1 (*pauVar17) [16]; + long lVar18; + undefined1 (*pauVar19) [16]; + int iVar20; + long lVar21; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + + iVar20 = param_7[1]; + iVar2 = *param_7; + if (iVar20 != 0) { + uVar6 = iVar2 - 0x20; + iVar4 = ((uVar6 >> 5) + 1) * 0x20; + if ((int)uVar6 < 0) { + iVar4 = 0; + } + uVar5 = (uint)((iVar2 + -4) - iVar4) >> 2; + lVar21 = (long)iVar4; + do { + if (-1 < (int)uVar6) { + pauVar10 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar15 = (undefined1 (*) [16])(param_3 + 0x10); + puVar13 = (undefined8 *)(param_5 + 0x10); + do { + pauVar19 = pauVar10 + -1; + pauVar17 = pauVar15 + -1; + auVar22 = *pauVar10; + pauVar10 = pauVar10 + 2; + auVar7 = *pauVar15; + pauVar15 = pauVar15 + 2; + auVar23 = NEON_uqadd(*pauVar19,*pauVar17,1); + auVar22 = NEON_uqadd(auVar22,auVar7,1); + puVar13[-1] = auVar23._8_8_; + puVar13[-2] = auVar23._0_8_; + puVar13[1] = auVar22._8_8_; + *puVar13 = auVar22._0_8_; + puVar13 = puVar13 + 4; + } while (pauVar10 != (undefined1 (*) [16])(param_1 + (ulong)(uVar6 >> 5) * 0x20 + 0x30)); + } + iVar8 = iVar4; + if (iVar4 < iVar2 + -3) { + pbVar11 = (byte *)(param_1 + lVar21); + puVar14 = (undefined1 *)(param_5 + lVar21); + pbVar16 = (byte *)(param_3 + lVar21); + do { + puVar9 = PTR_DAT_00501c00; + pbVar1 = pbVar11 + 4; + uVar3 = PTR_DAT_00501c00[(int)((uint)*pbVar11 + (uint)*pbVar16 + 0x100)]; + puVar14[1] = PTR_DAT_00501c00[(int)((uint)pbVar11[1] + (uint)pbVar16[1] + 0x100)]; + *puVar14 = uVar3; + uVar3 = puVar9[(int)((uint)pbVar11[2] + (uint)pbVar16[2] + 0x100)]; + puVar14[3] = puVar9[(int)((uint)pbVar11[3] + (uint)pbVar16[3] + 0x100)]; + puVar14[2] = uVar3; + pbVar11 = pbVar1; + puVar14 = puVar14 + 4; + pbVar16 = pbVar16 + 4; + iVar8 = iVar4 + 4 + uVar5 * 4; + } while (pbVar1 != (byte *)(param_1 + lVar21 + 4 + (ulong)uVar5 * 4)); + } + lVar18 = (long)iVar8; + if (iVar8 < iVar2) { + lVar12 = 0; + do { + *(undefined *)(param_5 + lVar18 + lVar12) = + PTR_DAT_00501c00 + [(int)((uint)*(byte *)(param_1 + lVar18 + lVar12) + + (uint)*(byte *)(param_3 + lVar18 + lVar12) + 0x100)]; + lVar12 = lVar12 + 1; + } while (lVar12 != (ulong)(uint)((iVar2 + -1) - iVar8) + 1); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023a07c (1368 bytes) name=FUN_0023a07c + +void FUN_0023a07c(int *param_1,ulong param_2,int *param_3,ulong param_4,long param_5,ulong param_6, + int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined4 *puVar4; + int *piVar5; + undefined8 *puVar6; + int iVar7; + int iVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + ulong uVar13; + long lVar14; + long lVar15; + long lVar16; + int *piVar17; + ulong uVar18; + uint uVar19; + int *piVar20; + int *piVar21; + uint uVar22; + int iVar23; + undefined4 *puVar24; + ulong uVar25; + int *piVar26; + int *piVar27; + uint uVar28; + undefined8 uVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + double dVar33; + int iVar34; + + dVar33 = *param_8; + iVar7 = *param_7; + iVar34 = param_7[1]; + if (dVar33 == 1.0) { + iVar23 = iVar34 + -1; + if (iVar34 != 0) { + uVar11 = iVar7 - 4U >> 2; + uVar9 = uVar11 + 1; + uVar10 = uVar9 * 4; + if (iVar7 + -3 < 1) { + uVar10 = 0; + } + uVar1 = uVar10 + 1; + lVar15 = (long)(int)uVar10; + uVar12 = iVar7 - uVar10; + uVar2 = uVar10 + 2; + lVar14 = lVar15 + 4; + piVar26 = (int *)(param_5 + 0x40); + uVar25 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar13 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + do { + piVar27 = piVar26 + -0x10; + if (0 < iVar7 + -3) { + if ((param_1 + 0x10 <= piVar27 || piVar26 <= param_1) && + (param_3 + 0x10 <= piVar27 || piVar26 <= param_3)) { + lVar16 = 0; + uVar19 = 0; + if (3 < uVar9) { + do { + puVar6 = (undefined8 *)((long)piVar27 + lVar16); + uVar19 = uVar19 + 1; + uVar30 = ((undefined8 *)((long)param_1 + lVar16))[1]; + uVar29 = *(undefined8 *)((long)param_1 + lVar16); + uVar32 = ((undefined8 *)((long)param_3 + lVar16))[1]; + uVar31 = *(undefined8 *)((long)param_3 + lVar16); + lVar16 = lVar16 + 0x10; + puVar6[1] = CONCAT44((int)((ulong)uVar30 >> 0x20) * (int)((ulong)uVar32 >> 0x20), + (int)uVar30 * (int)uVar32); + *puVar6 = CONCAT44((int)((ulong)uVar29 >> 0x20) * (int)((ulong)uVar31 >> 0x20), + (int)uVar29 * (int)uVar31); + } while (uVar19 < uVar9); + goto LAB_0023a3bc; + } + } + piVar17 = piVar26 + -0xf; + piVar20 = param_3; + piVar21 = param_1; + do { + piVar5 = piVar17 + 4; + iVar34 = *piVar21; + iVar8 = *piVar20; + *piVar17 = piVar21[1] * piVar20[1]; + piVar17[-1] = iVar34 * iVar8; + iVar34 = piVar21[2]; + iVar8 = piVar20[2]; + piVar17[2] = piVar21[3] * piVar20[3]; + piVar17[1] = iVar34 * iVar8; + piVar17 = piVar5; + piVar20 = piVar20 + 4; + piVar21 = piVar21 + 4; + } while (piVar5 != piVar27 + (ulong)uVar11 * 4 + 5); + } +LAB_0023a3bc: + if ((int)uVar10 < iVar7) { + piVar17 = param_1 + lVar15; + piVar20 = piVar27 + lVar15; + if ((piVar17 < piVar27 + lVar14 && piVar20 < param_1 + lVar14 || + param_3 + lVar15 < piVar27 + lVar14 && piVar20 < param_3 + lVar14) || (uVar12 < 9)) { + lVar16 = 0; + do { + *(int *)((long)piVar20 + lVar16) = + *(int *)((long)piVar17 + lVar16) * *(int *)((long)(param_3 + lVar15) + lVar16); + lVar16 = lVar16 + 4; + } while (lVar16 != ((ulong)((iVar7 + -1) - uVar10) + 1) * 4); + } + else { + uVar19 = -((uint)((ulong)piVar17 >> 2) & 3) & 3; + if (uVar12 < uVar19) { + uVar19 = uVar12; + } + uVar28 = uVar10; + if (((uVar19 != 0) && + (piVar27[lVar15] = param_1[lVar15] * param_3[lVar15], uVar28 = uVar1, uVar19 != 1)) + && (*(int *)((long)piVar27 + uVar25) = + *(int *)((long)param_1 + uVar25) * *(int *)((long)param_3 + uVar25), + uVar28 = uVar2, uVar19 == 3)) { + *(int *)((long)piVar27 + uVar13) = + *(int *)((long)param_1 + uVar13) * *(int *)((long)param_3 + uVar13); + uVar28 = uVar10 + 3; + } + uVar22 = 0; + uVar3 = ((uVar12 - uVar19) - 4 >> 2) + 1; + iVar34 = uVar3 * 4; + piVar17 = piVar27 + (ulong)uVar19 + lVar15; + piVar20 = param_3 + (ulong)uVar19 + lVar15; + piVar21 = param_1 + (ulong)uVar19 + lVar15; + do { + uVar29 = *(undefined8 *)piVar20; + uVar22 = uVar22 + 1; + uVar30 = *(undefined8 *)piVar21; + *(ulong *)(piVar17 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar20 + 2) >> 0x20) * + (int)((ulong)*(undefined8 *)(piVar21 + 2) >> 0x20), + (int)*(undefined8 *)(piVar20 + 2) * (int)*(undefined8 *)(piVar21 + 2)); + *(ulong *)piVar17 = + CONCAT44((int)((ulong)uVar29 >> 0x20) * (int)((ulong)uVar30 >> 0x20), + (int)uVar29 * (int)uVar30); + piVar17 = piVar17 + 4; + piVar20 = piVar20 + 4; + piVar21 = piVar21 + 4; + } while (uVar22 < uVar3); + uVar28 = uVar28 + iVar34; + if (iVar34 != uVar12 - uVar19) { + uVar18 = -(ulong)(uVar28 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar28 << 2; + *(int *)((long)piVar27 + uVar18) = + *(int *)((long)param_1 + uVar18) * *(int *)((long)param_3 + uVar18); + if ((int)(uVar28 + 1) < iVar7) { + lVar16 = uVar18 + 4; + *(int *)((long)piVar27 + lVar16) = + *(int *)((long)param_1 + lVar16) * *(int *)((long)param_3 + lVar16); + if ((int)(uVar28 + 2) < iVar7) { + lVar16 = uVar18 + 8; + *(int *)((long)piVar27 + lVar16) = + *(int *)((long)param_1 + lVar16) * *(int *)((long)param_3 + lVar16); + } + } + } + } + } + iVar23 = iVar23 + -1; + param_1 = param_1 + (param_2 >> 2); + param_3 = param_3 + (param_4 >> 2); + piVar26 = piVar26 + (param_6 >> 2); + } while (iVar23 != -1); + } + } + else if (iVar34 != 0) { + uVar10 = iVar7 - 4U >> 2; + uVar9 = (uVar10 + 1) * 4; + if (iVar7 + -3 < 1) { + uVar9 = 0; + } + uVar13 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar9 << 2; + do { + if (0 < iVar7 + -3) { + puVar24 = (undefined4 *)(param_5 + 4); + piVar26 = param_3; + piVar27 = param_1; + do { + puVar4 = puVar24 + 4; + lVar14 = lrint(dVar33 * (double)*piVar27 * (double)*piVar26); + lVar15 = lrint(dVar33 * (double)piVar27[1] * (double)piVar26[1]); + puVar24[-1] = (int)lVar14; + *puVar24 = (int)lVar15; + lVar14 = lrint(dVar33 * (double)piVar27[2] * (double)piVar26[2]); + lVar15 = lrint(dVar33 * (double)piVar27[3] * (double)piVar26[3]); + puVar24[1] = (int)lVar14; + puVar24[2] = (int)lVar15; + puVar24 = puVar4; + piVar26 = piVar26 + 4; + piVar27 = piVar27 + 4; + } while (puVar4 != (undefined4 *)(param_5 + (ulong)uVar10 * 0x10 + 0x14)); + } + if ((int)uVar9 < iVar7) { + lVar14 = 0; + do { + lVar15 = lrint(dVar33 * (double)*(int *)((long)param_1 + lVar14 + uVar13) * + (double)*(int *)((long)param_3 + lVar14 + uVar13)); + *(int *)(param_5 + uVar13 + lVar14) = (int)lVar15; + lVar14 = lVar14 + 4; + } while (lVar14 != ((ulong)((iVar7 + -1) - uVar9) + 1) * 4); + } + iVar34 = iVar34 + -1; + param_1 = param_1 + (param_2 >> 2); + param_3 = param_3 + (param_4 >> 2); + param_5 = param_5 + (param_6 >> 2) * 4; + } while (iVar34 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023a5d4 (564 bytes) name=FUN_0023a5d4 + +void FUN_0023a5d4(int *param_1,ulong param_2,int *param_3,ulong param_4,long param_5,ulong param_6, + int *param_7,double *param_8) + +{ + undefined4 *puVar1; + int iVar2; + uint uVar3; + uint uVar4; + long lVar5; + long lVar6; + undefined4 *puVar7; + ulong uVar8; + int *piVar9; + int *piVar10; + double dVar11; + double dVar12; + double dVar13; + int iVar14; + + dVar11 = *param_8; + iVar14 = param_7[1]; + iVar2 = *param_7; + dVar12 = param_8[1]; + dVar13 = param_8[2]; + if (iVar14 != 0) { + uVar4 = iVar2 - 4U >> 2; + uVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + uVar3 = 0; + } + uVar8 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + do { + if (0 < iVar2 + -3) { + puVar7 = (undefined4 *)(param_5 + 4); + piVar9 = param_1; + piVar10 = param_3; + do { + puVar1 = puVar7 + 4; + lVar5 = lrint(dVar13 + dVar12 * (double)*piVar10 + (double)*piVar9 * dVar11); + lVar6 = lrint(dVar13 + dVar12 * (double)piVar10[1] + (double)piVar9[1] * dVar11); + puVar7[-1] = (int)lVar5; + *puVar7 = (int)lVar6; + lVar5 = lrint(dVar13 + dVar12 * (double)piVar10[2] + (double)piVar9[2] * dVar11); + lVar6 = lrint(dVar13 + dVar12 * (double)piVar10[3] + (double)piVar9[3] * dVar11); + puVar7[1] = (int)lVar5; + puVar7[2] = (int)lVar6; + puVar7 = puVar1; + piVar9 = piVar9 + 4; + piVar10 = piVar10 + 4; + } while (puVar1 != (undefined4 *)(param_5 + (ulong)uVar4 * 0x10 + 0x14)); + } + if ((int)uVar3 < iVar2) { + lVar5 = 0; + do { + lVar6 = lrint(dVar13 + dVar12 * (double)*(int *)((long)param_3 + lVar5 + uVar8) + + (double)*(int *)((long)param_1 + lVar5 + uVar8) * dVar11); + *(int *)(param_5 + uVar8 + lVar5) = (int)lVar6; + lVar5 = lVar5 + 4; + } while (lVar5 != ((ulong)((iVar2 + -1) - uVar3) + 1) * 4); + } + iVar14 = iVar14 + -1; + param_1 = (int *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_3 = (int *)((long)param_3 + (param_4 & 0xfffffffffffffffc)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar14 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023a808 (564 bytes) name=FUN_0023a808 + +void FUN_0023a808(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + short *psVar1; + short *psVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int iVar7; + undefined1 auVar8 [16]; + uint uVar9; + undefined1 (*pauVar10) [16]; + short *psVar11; + long lVar12; + undefined8 *puVar13; + undefined2 *puVar14; + undefined1 (*pauVar15) [16]; + short *psVar16; + ulong uVar17; + undefined2 uVar18; + undefined2 uVar19; + undefined2 uVar20; + undefined1 (*pauVar21) [16]; + undefined2 uVar22; + undefined1 (*pauVar23) [16]; + int iVar24; + long lVar25; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + + iVar24 = param_7[1]; + iVar3 = *param_7; + if (iVar24 != 0) { + uVar6 = iVar3 - 0x10; + uVar4 = ((uVar6 >> 4) + 1) * 0x10; + if ((int)uVar6 < 0) { + uVar4 = 0; + } + uVar5 = (iVar3 + -4) - uVar4 >> 2; + lVar25 = (long)(int)uVar4 * 2; + do { + if (-1 < (int)uVar6) { + pauVar10 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar15 = (undefined1 (*) [16])(param_3 + 0x10); + puVar13 = (undefined8 *)(param_5 + 0x10); + do { + pauVar23 = pauVar10 + -1; + pauVar21 = pauVar15 + -1; + auVar26 = *pauVar10; + pauVar10 = pauVar10 + 2; + auVar8 = *pauVar15; + pauVar15 = pauVar15 + 2; + auVar27 = NEON_sqsub(*pauVar23,*pauVar21,2); + auVar26 = NEON_sqsub(auVar26,auVar8,2); + puVar13[-1] = auVar27._8_8_; + puVar13[-2] = auVar27._0_8_; + puVar13[1] = auVar26._8_8_; + *puVar13 = auVar26._0_8_; + puVar13 = puVar13 + 4; + } while (pauVar10 != (undefined1 (*) [16])(param_1 + (ulong)(uVar6 >> 4) * 0x20 + 0x30)); + } + uVar18 = 0x8000; + uVar19 = 0x7fff; + uVar9 = uVar4; + if ((int)uVar4 < iVar3 + -3) { + psVar16 = (short *)(param_3 + lVar25); + puVar14 = (undefined2 *)(param_5 + lVar25); + psVar11 = (short *)(param_1 + lVar25); + do { + iVar7 = (int)*psVar11 - (int)*psVar16; + uVar22 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar22 = uVar19, iVar7 < 1)) { + uVar22 = uVar18; + } + iVar7 = (int)psVar11[1] - (int)psVar16[1]; + uVar20 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar20 = uVar19, iVar7 < 1)) { + uVar20 = uVar18; + } + *puVar14 = uVar22; + puVar14[1] = uVar20; + iVar7 = (int)psVar11[2] - (int)psVar16[2]; + uVar22 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar22 = 0x7fff, iVar7 < 1)) { + uVar22 = 0x8000; + } + psVar1 = psVar16 + 3; + psVar2 = psVar11 + 4; + psVar16 = psVar16 + 4; + iVar7 = (int)psVar11[3] - (int)*psVar1; + uVar20 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar20 = 0x7fff, iVar7 < 1)) { + uVar20 = 0x8000; + } + puVar14[2] = uVar22; + puVar14[3] = uVar20; + puVar14 = puVar14 + 4; + psVar11 = psVar2; + uVar9 = uVar4 + 4 + uVar5 * 4; + } while (psVar2 != (short *)(param_1 + ((long)(int)uVar4 + 4 + (ulong)uVar5 * 4) * 2)); + } + if ((int)uVar9 < iVar3) { + uVar17 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar9 << 1; + lVar12 = 0; + do { + iVar7 = (int)*(short *)(param_1 + uVar17 + lVar12) - + (int)*(short *)(param_3 + uVar17 + lVar12); + uVar22 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar22 = uVar19, iVar7 < 1)) { + uVar22 = uVar18; + } + *(undefined2 *)(param_5 + uVar17 + lVar12) = uVar22; + lVar12 = lVar12 + 2; + } while (lVar12 != ((ulong)((iVar3 + -1) - uVar9) + 1) * 2); + } + iVar24 = iVar24 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023aa3c (468 bytes) name=FUN_0023aa3c + +void FUN_0023aa3c(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + ushort *puVar1; + int iVar2; + ushort uVar3; + ushort uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + undefined1 auVar10 [16]; + undefined1 (*pauVar11) [16]; + ushort *puVar12; + undefined8 *puVar13; + long lVar14; + undefined1 (*pauVar15) [16]; + undefined2 *puVar16; + ulong uVar17; + undefined1 (*pauVar18) [16]; + ushort *puVar19; + undefined1 (*pauVar20) [16]; + int iVar21; + long lVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + + iVar21 = param_7[1]; + iVar2 = *param_7; + if (iVar21 != 0) { + uVar7 = iVar2 - 0x10; + uVar5 = ((uVar7 >> 4) + 1) * 0x10; + if ((int)uVar7 < 0) { + uVar5 = 0; + } + uVar6 = (iVar2 + -4) - uVar5 >> 2; + lVar22 = (long)(int)uVar5 * 2; + do { + if (-1 < (int)uVar7) { + pauVar11 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar15 = (undefined1 (*) [16])(param_3 + 0x10); + puVar13 = (undefined8 *)(param_5 + 0x10); + do { + pauVar20 = pauVar11 + -1; + pauVar18 = pauVar15 + -1; + auVar23 = *pauVar11; + pauVar11 = pauVar11 + 2; + auVar10 = *pauVar15; + pauVar15 = pauVar15 + 2; + auVar24 = NEON_uqsub(*pauVar20,*pauVar18,2); + auVar23 = NEON_uqsub(auVar23,auVar10,2); + puVar13[-1] = auVar24._8_8_; + puVar13[-2] = auVar24._0_8_; + puVar13[1] = auVar23._8_8_; + *puVar13 = auVar23._0_8_; + puVar13 = puVar13 + 4; + } while (pauVar11 != (undefined1 (*) [16])(param_1 + (ulong)(uVar7 >> 4) * 0x20 + 0x30)); + } + uVar8 = uVar5; + if ((int)uVar5 < iVar2 + -3) { + puVar12 = (ushort *)(param_1 + lVar22); + puVar16 = (undefined2 *)(param_5 + lVar22); + puVar19 = (ushort *)(param_3 + lVar22); + do { + puVar1 = puVar12 + 4; + uVar3 = puVar12[1]; + uVar8 = (uint)*puVar12 - (uint)*puVar19; + uVar4 = puVar19[1]; + if (0xffff < uVar8) { + uVar8 = 0; + } + *puVar16 = (short)uVar8; + uVar8 = (uint)uVar3 - (uint)uVar4; + if (0xffff < uVar8) { + uVar8 = 0; + } + puVar16[1] = (short)uVar8; + uVar8 = (uint)puVar12[2] - (uint)puVar19[2]; + uVar9 = (uint)puVar12[3] - (uint)puVar19[3]; + if (0xffff < uVar8) { + uVar8 = 0; + } + puVar16[2] = (short)uVar8; + if (0xffff < uVar9) { + uVar9 = 0; + } + puVar16[3] = (short)uVar9; + puVar12 = puVar1; + puVar16 = puVar16 + 4; + puVar19 = puVar19 + 4; + uVar8 = uVar5 + 4 + uVar6 * 4; + } while (puVar1 != (ushort *)(param_1 + ((long)(int)uVar5 + 4 + (ulong)uVar6 * 4) * 2)); + } + if ((int)uVar8 < iVar2) { + uVar17 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + lVar14 = 0; + do { + uVar9 = (uint)*(ushort *)(param_1 + uVar17 + lVar14) - + (uint)*(ushort *)(param_3 + uVar17 + lVar14); + if (0xffff < uVar9) { + uVar9 = 0; + } + *(short *)(param_5 + uVar17 + lVar14) = (short)uVar9; + lVar14 = lVar14 + 2; + } while (lVar14 != ((ulong)((iVar2 + -1) - uVar8) + 1) * 2); + } + iVar21 = iVar21 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar21 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023ac10 (536 bytes) name=FUN_0023ac10 + +void FUN_0023ac10(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + char *pcVar2; + int iVar3; + int iVar4; + uint uVar5; + uint uVar6; + int iVar7; + int iVar8; + undefined1 auVar9 [16]; + undefined1 (*pauVar10) [16]; + char *pcVar11; + long lVar12; + undefined8 *puVar13; + undefined1 *puVar14; + undefined1 (*pauVar15) [16]; + char *pcVar16; + long lVar17; + undefined1 uVar18; + undefined1 uVar19; + undefined1 uVar20; + undefined1 (*pauVar21) [16]; + undefined1 uVar22; + undefined1 (*pauVar23) [16]; + int iVar24; + long lVar25; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + + iVar24 = param_7[1]; + iVar3 = *param_7; + if (iVar24 != 0) { + uVar6 = iVar3 - 0x20; + iVar4 = ((uVar6 >> 5) + 1) * 0x20; + if ((int)uVar6 < 0) { + iVar4 = 0; + } + uVar5 = (uint)((iVar3 + -4) - iVar4) >> 2; + lVar25 = (long)iVar4; + do { + if (-1 < (int)uVar6) { + pauVar10 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar15 = (undefined1 (*) [16])(param_3 + 0x10); + puVar13 = (undefined8 *)(param_5 + 0x10); + do { + pauVar23 = pauVar10 + -1; + pauVar21 = pauVar15 + -1; + auVar26 = *pauVar10; + pauVar10 = pauVar10 + 2; + auVar9 = *pauVar15; + pauVar15 = pauVar15 + 2; + auVar27 = NEON_sqsub(*pauVar23,*pauVar21,1); + auVar26 = NEON_sqsub(auVar26,auVar9,1); + puVar13[-1] = auVar27._8_8_; + puVar13[-2] = auVar27._0_8_; + puVar13[1] = auVar26._8_8_; + *puVar13 = auVar26._0_8_; + puVar13 = puVar13 + 4; + } while (pauVar10 != (undefined1 (*) [16])(param_1 + (ulong)(uVar6 >> 5) * 0x20 + 0x30)); + } + uVar18 = 0x80; + uVar19 = 0x7f; + iVar7 = iVar4; + if (iVar4 < iVar3 + -3) { + pcVar16 = (char *)(param_3 + lVar25); + puVar14 = (undefined1 *)(param_5 + lVar25); + pcVar11 = (char *)(param_1 + lVar25); + do { + iVar7 = (int)*pcVar11 - (int)*pcVar16; + uVar22 = (char)iVar7; + if ((0xff < iVar7 + 0x80U) && (uVar22 = uVar19, iVar7 < 1)) { + uVar22 = uVar18; + } + iVar7 = (int)pcVar11[1] - (int)pcVar16[1]; + uVar20 = (char)iVar7; + if ((0xff < iVar7 + 0x80U) && (uVar20 = uVar19, iVar7 < 1)) { + uVar20 = uVar18; + } + *puVar14 = uVar22; + puVar14[1] = uVar20; + iVar7 = (int)pcVar11[2] - (int)pcVar16[2]; + uVar22 = (char)iVar7; + if ((0xff < iVar7 + 0x80U) && (uVar22 = 0x7f, iVar7 < 1)) { + uVar22 = 0x80; + } + pcVar1 = pcVar16 + 3; + pcVar2 = pcVar11 + 4; + pcVar16 = pcVar16 + 4; + iVar7 = (uint)(byte)pcVar11[3] - (int)*pcVar1; + uVar20 = (char)iVar7; + if ((0xff < iVar7 + 0x80U) && (uVar20 = 0x7f, iVar7 < 1)) { + uVar20 = 0x80; + } + puVar14[2] = uVar22; + puVar14[3] = uVar20; + puVar14 = puVar14 + 4; + pcVar11 = pcVar2; + iVar7 = iVar4 + 4 + uVar5 * 4; + } while (pcVar2 != (char *)(param_1 + lVar25 + 4 + (ulong)uVar5 * 4)); + } + lVar17 = (long)iVar7; + if (iVar7 < iVar3) { + lVar12 = 0; + do { + iVar8 = (int)*(char *)(param_1 + lVar17 + lVar12) - + (int)*(char *)(param_3 + lVar17 + lVar12); + uVar22 = (char)iVar8; + if ((0xff < iVar8 + 0x80U) && (uVar22 = uVar19, iVar8 < 1)) { + uVar22 = uVar18; + } + *(undefined1 *)(param_5 + lVar17 + lVar12) = uVar22; + lVar12 = lVar12 + 1; + } while (lVar12 != (ulong)(uint)((iVar3 + -1) - iVar7) + 1); + } + iVar24 = iVar24 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023ae28 (468 bytes) name=FUN_0023ae28 + +void FUN_0023ae28(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + byte *pbVar1; + int iVar2; + undefined1 uVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined1 auVar7 [16]; + int iVar8; + undefined *puVar9; + undefined1 (*pauVar10) [16]; + byte *pbVar11; + long lVar12; + undefined8 *puVar13; + undefined1 *puVar14; + undefined1 (*pauVar15) [16]; + byte *pbVar16; + undefined1 (*pauVar17) [16]; + long lVar18; + undefined1 (*pauVar19) [16]; + int iVar20; + long lVar21; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + + iVar20 = param_7[1]; + iVar2 = *param_7; + if (iVar20 != 0) { + uVar6 = iVar2 - 0x20; + iVar4 = ((uVar6 >> 5) + 1) * 0x20; + if ((int)uVar6 < 0) { + iVar4 = 0; + } + uVar5 = (uint)((iVar2 + -4) - iVar4) >> 2; + lVar21 = (long)iVar4; + do { + if (-1 < (int)uVar6) { + pauVar10 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar15 = (undefined1 (*) [16])(param_3 + 0x10); + puVar13 = (undefined8 *)(param_5 + 0x10); + do { + pauVar19 = pauVar10 + -1; + pauVar17 = pauVar15 + -1; + auVar22 = *pauVar10; + pauVar10 = pauVar10 + 2; + auVar7 = *pauVar15; + pauVar15 = pauVar15 + 2; + auVar23 = NEON_uqsub(*pauVar19,*pauVar17,1); + auVar22 = NEON_uqsub(auVar22,auVar7,1); + puVar13[-1] = auVar23._8_8_; + puVar13[-2] = auVar23._0_8_; + puVar13[1] = auVar22._8_8_; + *puVar13 = auVar22._0_8_; + puVar13 = puVar13 + 4; + } while (pauVar10 != (undefined1 (*) [16])(param_1 + (ulong)(uVar6 >> 5) * 0x20 + 0x30)); + } + iVar8 = iVar4; + if (iVar4 < iVar2 + -3) { + pbVar11 = (byte *)(param_1 + lVar21); + puVar14 = (undefined1 *)(param_5 + lVar21); + pbVar16 = (byte *)(param_3 + lVar21); + do { + puVar9 = PTR_DAT_00501c00; + pbVar1 = pbVar11 + 4; + uVar3 = PTR_DAT_00501c00[(int)(((uint)*pbVar11 - (uint)*pbVar16) + 0x100)]; + puVar14[1] = PTR_DAT_00501c00[(int)(((uint)pbVar11[1] - (uint)pbVar16[1]) + 0x100)]; + *puVar14 = uVar3; + uVar3 = puVar9[(int)(((uint)pbVar11[2] - (uint)pbVar16[2]) + 0x100)]; + puVar14[3] = puVar9[(int)(((uint)pbVar11[3] - (uint)pbVar16[3]) + 0x100)]; + puVar14[2] = uVar3; + pbVar11 = pbVar1; + puVar14 = puVar14 + 4; + pbVar16 = pbVar16 + 4; + iVar8 = iVar4 + 4 + uVar5 * 4; + } while (pbVar1 != (byte *)(param_1 + lVar21 + 4 + (ulong)uVar5 * 4)); + } + lVar18 = (long)iVar8; + if (iVar8 < iVar2) { + lVar12 = 0; + do { + *(undefined *)(param_5 + lVar18 + lVar12) = + PTR_DAT_00501c00 + [(int)(((uint)*(byte *)(param_1 + lVar18 + lVar12) - + (uint)*(byte *)(param_3 + lVar18 + lVar12)) + 0x100)]; + lVar12 = lVar12 + 1; + } while (lVar12 != (ulong)(uint)((iVar2 + -1) - iVar8) + 1); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023affc (556 bytes) name=FUN_0023affc + +void FUN_0023affc(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + short *psVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined1 auVar7 [16]; + uint uVar8; + uint uVar9; + int iVar10; + undefined1 (*pauVar11) [16]; + int iVar12; + undefined2 *puVar13; + long lVar14; + undefined1 (*pauVar15) [16]; + short *psVar16; + ulong uVar17; + undefined1 (*pauVar18) [16]; + short *psVar19; + int iVar20; + long lVar21; + undefined1 (*pauVar22) [16]; + undefined2 uVar23; + undefined2 uVar25; + undefined2 uVar26; + undefined2 uVar27; + undefined2 uVar28; + undefined2 uVar29; + undefined2 uVar30; + undefined1 auVar24 [16]; + undefined2 uVar31; + undefined2 uVar32; + undefined2 uVar34; + undefined2 uVar35; + undefined2 uVar36; + undefined2 uVar37; + undefined2 uVar38; + undefined2 uVar39; + undefined1 auVar33 [16]; + undefined2 uVar40; + + iVar20 = param_7[1]; + iVar2 = *param_7; + if (iVar20 != 0) { + uVar5 = iVar2 - 0x10; + uVar3 = ((uVar5 >> 4) + 1) * 0x10; + if ((int)uVar5 < 0) { + uVar3 = 0; + } + uVar4 = (iVar2 + -4) - uVar3 >> 2; + lVar21 = (long)(int)uVar3 * 2; + do { + if (-1 < (int)uVar5) { + pauVar11 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar15 = (undefined1 (*) [16])(param_3 + 0x10); + puVar13 = (undefined2 *)(param_5 + 0x10); + do { + pauVar22 = pauVar11 + -1; + pauVar18 = pauVar15 + -1; + auVar24 = *pauVar11; + pauVar11 = pauVar11 + 2; + auVar7 = *pauVar15; + pauVar15 = pauVar15 + 2; + auVar33 = NEON_sqsub(*pauVar22,*pauVar18,2); + auVar24 = NEON_sqsub(auVar24,auVar7,2); + uVar32 = MP_INT_ABS(auVar33._0_2_); + uVar34 = MP_INT_ABS(auVar33._2_2_); + uVar35 = MP_INT_ABS(auVar33._4_2_); + uVar36 = MP_INT_ABS(auVar33._6_2_); + uVar37 = MP_INT_ABS(auVar33._8_2_); + uVar38 = MP_INT_ABS(auVar33._10_2_); + uVar39 = MP_INT_ABS(auVar33._12_2_); + uVar40 = MP_INT_ABS(auVar33._14_2_); + uVar23 = MP_INT_ABS(auVar24._0_2_); + uVar25 = MP_INT_ABS(auVar24._2_2_); + uVar26 = MP_INT_ABS(auVar24._4_2_); + uVar27 = MP_INT_ABS(auVar24._6_2_); + uVar28 = MP_INT_ABS(auVar24._8_2_); + uVar29 = MP_INT_ABS(auVar24._10_2_); + uVar30 = MP_INT_ABS(auVar24._12_2_); + uVar31 = MP_INT_ABS(auVar24._14_2_); + puVar13[-4] = uVar37; + puVar13[-3] = uVar38; + puVar13[-2] = uVar39; + puVar13[-1] = uVar40; + puVar13[-8] = uVar32; + puVar13[-7] = uVar34; + puVar13[-6] = uVar35; + puVar13[-5] = uVar36; + puVar13[4] = uVar28; + puVar13[5] = uVar29; + puVar13[6] = uVar30; + puVar13[7] = uVar31; + *puVar13 = uVar23; + puVar13[1] = uVar25; + puVar13[2] = uVar26; + puVar13[3] = uVar27; + puVar13 = puVar13 + 0x10; + } while (pauVar11 != (undefined1 (*) [16])(param_1 + (ulong)(uVar5 >> 4) * 0x20 + 0x30)); + } + uVar8 = uVar3; + if ((int)uVar3 < iVar2 + -3) { + psVar16 = (short *)(param_1 + lVar21); + puVar13 = (undefined2 *)(param_5 + lVar21); + psVar19 = (short *)(param_3 + lVar21); + do { + psVar1 = psVar16 + 4; + uVar8 = (int)*psVar16 - (int)*psVar19 >> 0x1f; + iVar12 = ((int)*psVar16 - (int)*psVar19 ^ uVar8) - uVar8; + uVar8 = (int)psVar16[1] - (int)psVar19[1] >> 0x1f; + uVar23 = (undefined2)iVar12; + iVar10 = ((int)psVar16[1] - (int)psVar19[1] ^ uVar8) - uVar8; + if (0x7fff < iVar12) { + uVar23 = 0x7fff; + } + *puVar13 = uVar23; + uVar23 = (undefined2)iVar10; + if (0x7fff < iVar10) { + uVar23 = 0x7fff; + } + puVar13[1] = uVar23; + uVar8 = (int)psVar16[2] - (int)psVar19[2] >> 0x1f; + iVar12 = ((int)psVar16[2] - (int)psVar19[2] ^ uVar8) - uVar8; + uVar8 = (int)psVar16[3] - (int)psVar19[3] >> 0x1f; + iVar10 = ((int)psVar16[3] - (int)psVar19[3] ^ uVar8) - uVar8; + uVar23 = (undefined2)iVar12; + if (0x7fff < iVar12) { + uVar23 = 0x7fff; + } + uVar25 = (undefined2)iVar10; + puVar13[2] = uVar23; + if (0x7fff < iVar10) { + uVar25 = 0x7fff; + } + puVar13[3] = uVar25; + psVar16 = psVar1; + puVar13 = puVar13 + 4; + psVar19 = psVar19 + 4; + uVar8 = uVar3 + 4 + uVar4 * 4; + } while (psVar1 != (short *)(param_1 + ((long)(int)uVar3 + 4 + (ulong)uVar4 * 4) * 2)); + } + if ((int)uVar8 < iVar2) { + uVar17 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + lVar14 = 0; + do { + uVar6 = (int)*(short *)(param_1 + uVar17 + lVar14) - + (int)*(short *)(param_3 + uVar17 + lVar14); + uVar9 = (int)uVar6 >> 0x1f; + iVar10 = (uVar6 ^ uVar9) - uVar9; + uVar23 = (undefined2)iVar10; + if (0x7fff < iVar10) { + uVar23 = 0x7fff; + } + *(undefined2 *)(param_5 + uVar17 + lVar14) = uVar23; + lVar14 = lVar14 + 2; + } while (lVar14 != ((ulong)((iVar2 + -1) - uVar8) + 1) * 2); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023b228 (540 bytes) name=FUN_0023b228 + +void FUN_0023b228(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined1 auVar7 [16]; + uint uVar8; + int iVar9; + undefined1 (*pauVar10) [16]; + int iVar11; + undefined1 *puVar12; + long lVar13; + undefined1 (*pauVar14) [16]; + char *pcVar15; + undefined1 (*pauVar16) [16]; + byte *pbVar17; + long lVar18; + int iVar19; + long lVar20; + undefined1 (*pauVar21) [16]; + undefined1 uVar22; + undefined1 uVar24; + undefined1 uVar25; + undefined1 uVar26; + undefined1 uVar27; + undefined1 uVar28; + undefined1 uVar29; + undefined1 uVar30; + undefined1 uVar31; + undefined1 uVar32; + undefined1 uVar33; + undefined1 uVar34; + undefined1 uVar35; + undefined1 uVar36; + undefined1 uVar37; + undefined1 auVar23 [16]; + undefined1 uVar38; + undefined1 uVar39; + undefined1 uVar41; + undefined1 uVar42; + undefined1 uVar43; + undefined1 uVar44; + undefined1 uVar45; + undefined1 uVar46; + undefined1 uVar47; + undefined1 uVar48; + undefined1 uVar49; + undefined1 uVar50; + undefined1 uVar51; + undefined1 uVar52; + undefined1 uVar53; + undefined1 uVar54; + undefined1 auVar40 [16]; + undefined1 uVar55; + + iVar19 = param_7[1]; + iVar2 = *param_7; + if (iVar19 != 0) { + uVar5 = iVar2 - 0x20; + iVar3 = ((uVar5 >> 5) + 1) * 0x20; + if ((int)uVar5 < 0) { + iVar3 = 0; + } + uVar4 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar20 = (long)iVar3; + do { + if (-1 < (int)uVar5) { + pauVar10 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar14 = (undefined1 (*) [16])(param_3 + 0x10); + puVar12 = (undefined1 *)(param_5 + 0x10); + do { + pauVar21 = pauVar10 + -1; + pauVar16 = pauVar14 + -1; + auVar23 = *pauVar10; + pauVar10 = pauVar10 + 2; + auVar7 = *pauVar14; + pauVar14 = pauVar14 + 2; + auVar40 = NEON_sqsub(*pauVar21,*pauVar16,1); + auVar23 = NEON_sqsub(auVar23,auVar7,1); + uVar39 = MP_INT_ABS(auVar40[0]); + uVar41 = MP_INT_ABS(auVar40[1]); + uVar42 = MP_INT_ABS(auVar40[2]); + uVar43 = MP_INT_ABS(auVar40[3]); + uVar44 = MP_INT_ABS(auVar40[4]); + uVar45 = MP_INT_ABS(auVar40[5]); + uVar46 = MP_INT_ABS(auVar40[6]); + uVar47 = MP_INT_ABS(auVar40[7]); + uVar48 = MP_INT_ABS(auVar40[8]); + uVar49 = MP_INT_ABS(auVar40[9]); + uVar50 = MP_INT_ABS(auVar40[10]); + uVar51 = MP_INT_ABS(auVar40[0xb]); + uVar52 = MP_INT_ABS(auVar40[0xc]); + uVar53 = MP_INT_ABS(auVar40[0xd]); + uVar54 = MP_INT_ABS(auVar40[0xe]); + uVar55 = MP_INT_ABS(auVar40[0xf]); + uVar22 = MP_INT_ABS(auVar23[0]); + uVar24 = MP_INT_ABS(auVar23[1]); + uVar25 = MP_INT_ABS(auVar23[2]); + uVar26 = MP_INT_ABS(auVar23[3]); + uVar27 = MP_INT_ABS(auVar23[4]); + uVar28 = MP_INT_ABS(auVar23[5]); + uVar29 = MP_INT_ABS(auVar23[6]); + uVar30 = MP_INT_ABS(auVar23[7]); + uVar31 = MP_INT_ABS(auVar23[8]); + uVar32 = MP_INT_ABS(auVar23[9]); + uVar33 = MP_INT_ABS(auVar23[10]); + uVar34 = MP_INT_ABS(auVar23[0xb]); + uVar35 = MP_INT_ABS(auVar23[0xc]); + uVar36 = MP_INT_ABS(auVar23[0xd]); + uVar37 = MP_INT_ABS(auVar23[0xe]); + uVar38 = MP_INT_ABS(auVar23[0xf]); + puVar12[-8] = uVar48; + puVar12[-7] = uVar49; + puVar12[-6] = uVar50; + puVar12[-5] = uVar51; + puVar12[-4] = uVar52; + puVar12[-3] = uVar53; + puVar12[-2] = uVar54; + puVar12[-1] = uVar55; + puVar12[-0x10] = uVar39; + puVar12[-0xf] = uVar41; + puVar12[-0xe] = uVar42; + puVar12[-0xd] = uVar43; + puVar12[-0xc] = uVar44; + puVar12[-0xb] = uVar45; + puVar12[-10] = uVar46; + puVar12[-9] = uVar47; + puVar12[8] = uVar31; + puVar12[9] = uVar32; + puVar12[10] = uVar33; + puVar12[0xb] = uVar34; + puVar12[0xc] = uVar35; + puVar12[0xd] = uVar36; + puVar12[0xe] = uVar37; + puVar12[0xf] = uVar38; + *puVar12 = uVar22; + puVar12[1] = uVar24; + puVar12[2] = uVar25; + puVar12[3] = uVar26; + puVar12[4] = uVar27; + puVar12[5] = uVar28; + puVar12[6] = uVar29; + puVar12[7] = uVar30; + puVar12 = puVar12 + 0x20; + } while (pauVar10 != (undefined1 (*) [16])(param_1 + (ulong)(uVar5 >> 5) * 0x20 + 0x30)); + } + iVar9 = iVar3; + if (iVar3 < iVar2 + -3) { + pcVar15 = (char *)(param_1 + lVar20); + puVar12 = (undefined1 *)(param_5 + lVar20); + pbVar17 = (byte *)(param_3 + lVar20); + do { + pcVar1 = pcVar15 + 4; + uVar6 = (int)((int)*pcVar15 - (uint)*pbVar17) >> 0x1f; + iVar11 = ((int)*pcVar15 - (uint)*pbVar17 ^ uVar6) - uVar6; + uVar6 = (int)((uint)(byte)pcVar15[1] - (uint)pbVar17[1]) >> 0x1f; + uVar22 = (undefined1)iVar11; + iVar9 = ((uint)(byte)pcVar15[1] - (uint)pbVar17[1] ^ uVar6) - uVar6; + if (0x7f < iVar11) { + uVar22 = 0x7f; + } + *puVar12 = uVar22; + uVar22 = (undefined1)iVar9; + if (0x7f < iVar9) { + uVar22 = 0x7f; + } + puVar12[1] = uVar22; + uVar6 = (int)((uint)(byte)pcVar15[2] - (uint)pbVar17[2]) >> 0x1f; + iVar11 = ((uint)(byte)pcVar15[2] - (uint)pbVar17[2] ^ uVar6) - uVar6; + uVar6 = (int)((uint)(byte)pcVar15[3] - (uint)pbVar17[3]) >> 0x1f; + iVar9 = ((uint)(byte)pcVar15[3] - (uint)pbVar17[3] ^ uVar6) - uVar6; + uVar22 = (undefined1)iVar11; + if (0x7f < iVar11) { + uVar22 = 0x7f; + } + uVar24 = (undefined1)iVar9; + puVar12[2] = uVar22; + if (0x7f < iVar9) { + uVar24 = 0x7f; + } + puVar12[3] = uVar24; + pcVar15 = pcVar1; + puVar12 = puVar12 + 4; + pbVar17 = pbVar17 + 4; + iVar9 = iVar3 + 4 + uVar4 * 4; + } while (pcVar1 != (char *)(param_1 + lVar20 + 4 + (ulong)uVar4 * 4)); + } + lVar18 = (long)iVar9; + if (iVar9 < iVar2) { + lVar13 = 0; + do { + uVar6 = (int)*(char *)(param_1 + lVar18 + lVar13) - + (int)*(char *)(param_3 + lVar18 + lVar13); + uVar8 = (int)uVar6 >> 0x1f; + iVar11 = (uVar6 ^ uVar8) - uVar8; + uVar22 = (undefined1)iVar11; + if (0x7f < iVar11) { + uVar22 = 0x7f; + } + *(undefined1 *)(param_5 + lVar18 + lVar13) = uVar22; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar2 + -1) - iVar9) + 1); + } + iVar19 = iVar19 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar19 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023b444 (432 bytes) name=FUN_0023b444 + +void FUN_0023b444(long param_1,ulong param_2,undefined1 (*param_3) [16],ulong param_4,uint *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + float *pfVar6; + float *pfVar7; + float *pfVar8; + float *pfVar9; + float *pfVar10; + float *pfVar11; + char cVar12; + float *pfVar13; + long lVar14; + float *pfVar15; + undefined1 (*pauVar16) [16]; + ulong uVar17; + ulong uVar18; + undefined1 (*pauVar19) [16]; + uint *puVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + undefined1 auVar25 [16]; + float fVar26; + float fVar29; + float fVar30; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar31; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + float fVar34; + + iVar2 = *param_7; + fVar34 = (float)*param_8; + iVar3 = param_7[1]; + cVar12 = cv::checkHardwareSupport(3); + if (cVar12 == '\0') { + cVar12 = cv::checkHardwareSupport(100); + } + if (iVar3 != 0) { + do { + uVar17 = 0; + if ((cVar12 != '\0') && (0 < iVar2 + -7)) { + pfVar13 = (float *)(param_1 + 0x10); + pauVar19 = param_3; + puVar20 = param_5; + do { + pfVar15 = pfVar13 + -4; + fVar21 = *pfVar13; + pfVar6 = pfVar13 + 1; + pfVar7 = pfVar13 + 2; + pfVar8 = pfVar13 + 3; + pauVar16 = pauVar19 + 1; + auVar4 = *pauVar19; + uVar1 = (int)uVar17 + 8; + uVar17 = (ulong)uVar1; + pfVar9 = pfVar13 + -3; + pfVar10 = pfVar13 + -2; + pfVar11 = pfVar13 + -1; + pauVar19 = pauVar19 + 2; + pfVar13 = pfVar13 + 8; + auVar5 = *pauVar16; + auVar32 = NEON_frecpe(auVar4,4); + auVar27 = NEON_frecps(auVar4,auVar32,4); + auVar25 = NEON_frecpe(auVar5,4); + auVar28._0_4_ = auVar32._0_4_ * auVar27._0_4_; + auVar28._4_4_ = auVar32._4_4_ * auVar27._4_4_; + auVar28._8_4_ = auVar32._8_4_ * auVar27._8_4_; + auVar28._12_4_ = auVar32._12_4_ * auVar27._12_4_; + auVar27 = NEON_frecps(auVar5,auVar25,4); + auVar33 = NEON_frecps(auVar4,auVar28,4); + auVar32._0_4_ = auVar25._0_4_ * auVar27._0_4_; + auVar32._4_4_ = auVar25._4_4_ * auVar27._4_4_; + auVar32._8_4_ = auVar25._8_4_ * auVar27._8_4_; + auVar32._12_4_ = auVar25._12_4_ * auVar27._12_4_; + auVar27 = NEON_frecps(auVar5,auVar32,4); + fVar26 = fVar34 * *pfVar15 * auVar28._0_4_ * auVar33._0_4_; + fVar29 = fVar34 * *pfVar9 * auVar28._4_4_ * auVar33._4_4_; + fVar30 = fVar34 * *pfVar10 * auVar28._8_4_ * auVar33._8_4_; + fVar31 = fVar34 * *pfVar11 * auVar28._12_4_ * auVar33._12_4_; + fVar21 = fVar34 * fVar21 * auVar32._0_4_ * auVar27._0_4_; + fVar22 = fVar34 * *pfVar6 * auVar32._4_4_ * auVar27._4_4_; + fVar23 = fVar34 * *pfVar7 * auVar32._8_4_ * auVar27._8_4_; + fVar24 = fVar34 * *pfVar8 * auVar32._12_4_ * auVar27._12_4_; + puVar20[2] = (uint)fVar30 ^ (uint)fVar30 & -(uint)(auVar4._8_4_ == 0.0); + puVar20[3] = (uint)fVar31 ^ (uint)fVar31 & -(uint)(auVar4._12_4_ == 0.0); + *puVar20 = (uint)fVar26 ^ (uint)fVar26 & -(uint)(auVar4._0_4_ == 0.0); + puVar20[1] = (uint)fVar29 ^ (uint)fVar29 & -(uint)(auVar4._4_4_ == 0.0); + puVar20[6] = (uint)fVar23 ^ (uint)fVar23 & -(uint)(auVar5._8_4_ == 0.0); + puVar20[7] = (uint)fVar24 ^ (uint)fVar24 & -(uint)(auVar5._12_4_ == 0.0); + puVar20[4] = (uint)fVar21 ^ (uint)fVar21 & -(uint)(auVar5._0_4_ == 0.0); + puVar20[5] = (uint)fVar22 ^ (uint)fVar22 & -(uint)(auVar5._4_4_ == 0.0); + puVar20 = puVar20 + 8; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar17 < iVar2) { + uVar18 = -(uVar17 >> 0x1f) & 0xfffffffc00000000 | uVar17 << 2; + lVar14 = 0; + do { + fVar21 = 0.0; + if (*(float *)(*param_3 + lVar14 + uVar18) != 0.0) { + fVar21 = (fVar34 * *(float *)(param_1 + uVar18 + lVar14)) / + *(float *)(*param_3 + lVar14 + uVar18); + } + *(float *)((long)param_5 + lVar14 + uVar18) = fVar21; + lVar14 = lVar14 + 4; + } while (lVar14 != ((ulong)(uint)((iVar2 + -1) - (int)uVar17) + 1) * 4); + } + iVar3 = iVar3 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_3 = (undefined1 (*) [16])(*param_3 + (param_4 & 0xfffffffffffffffc)); + param_5 = (uint *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar3 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023b5f4 (700 bytes) name=FUN_0023b5f4 + +void FUN_0023b5f4(long param_1,ulong param_2,long param_3,ulong param_4,undefined8 *param_5, + long param_6,int *param_7,int *param_8) + +{ + bool bVar1; + ulong uVar2; + int iVar3; + int iVar4; + undefined8 *puVar5; + long lVar6; + undefined8 *puVar7; + long lVar8; + long lVar9; + long lVar10; + undefined8 *puVar11; + byte bVar12; + int iVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined4 uVar22; + undefined4 uVar23; + undefined4 uVar24; + undefined4 uVar25; + + iVar13 = *param_8; + param_2 = param_2 >> 1; + param_4 = param_4 >> 1; + if (iVar13 - 2U < 2) { + lVar6 = param_3; + uVar2 = param_4; + if (iVar13 == 2) { + bVar12 = 0xff; + iVar13 = 4; + goto LAB_0023b784; + } + iVar13 = 1; + param_3 = param_1; + param_4 = param_2; + } + else { + lVar6 = param_1; + uVar2 = param_2; + if (iVar13 == 4) { + bVar12 = 0xff; + param_1 = param_3; + param_2 = param_4; + goto LAB_0023b784; + } + if (iVar13 != 1) { + bVar1 = iVar13 == 0; + if ((iVar13 != 5) && (!bVar1)) { + return; + } + iVar13 = param_7[1]; + param_7[1] = iVar13 + -1; + if (iVar13 == 0) { + return; + } + iVar13 = *param_7; + if (bVar1) goto LAB_0023b73c; +LAB_0023b660: + uVar22 = 0xffffffff; + uVar23 = 0xffffffff; + uVar24 = 0xffffffff; + uVar25 = 0xffffffff; + if (iVar13 < 0x10) goto LAB_0023b748; + do { + puVar7 = (undefined8 *)(param_1 + 0x10); + puVar5 = (undefined8 *)(param_3 + 0x10); + iVar3 = 0; + puVar11 = param_5; + do { + uVar21 = puVar7[1]; + uVar20 = *puVar7; + iVar3 = iVar3 + 0x10; + uVar19 = puVar7[-1]; + uVar18 = puVar7[-2]; + puVar7 = puVar7 + 4; + uVar17 = puVar5[-1]; + uVar16 = puVar5[-2]; + uVar15 = puVar5[1]; + uVar14 = *puVar5; + puVar5 = puVar5 + 4; + puVar11[1] = CONCAT17(-((short)((ulong)uVar15 >> 0x30) == (short)((ulong)uVar21 >> 0x30)) + ^ (byte)((uint)uVar25 >> 0x18), + CONCAT16(-((short)((ulong)uVar15 >> 0x20) == + (short)((ulong)uVar21 >> 0x20)) ^ + (byte)((uint)uVar25 >> 0x10), + CONCAT15(-((short)((ulong)uVar15 >> 0x10) == + (short)((ulong)uVar21 >> 0x10)) ^ + (byte)((uint)uVar25 >> 8), + CONCAT14(-((short)uVar15 == (short)uVar21) ^ + (byte)uVar25, + CONCAT13(-((short)((ulong)uVar14 >> 0x30) + == (short)((ulong)uVar20 >> + 0x30)) ^ + (byte)((uint)uVar24 >> 0x18), + CONCAT12(-((short)((ulong)uVar14 + >> 0x20) == + (short)((ulong)uVar20 + >> 0x20)) ^ + (byte)((uint)uVar24 >> + 0x10), + CONCAT11(-((short)(( + ulong)uVar14 >> 0x10) == + (short)((ulong)uVar20 >> 0x10)) ^ + (byte)((uint)uVar24 >> 8), + -((short)uVar14 == (short)uVar20) ^ (byte)uVar24)) + ))))); + *puVar11 = CONCAT17(-((short)((ulong)uVar17 >> 0x30) == (short)((ulong)uVar19 >> 0x30)) ^ + (byte)((uint)uVar23 >> 0x18), + CONCAT16(-((short)((ulong)uVar17 >> 0x20) == + (short)((ulong)uVar19 >> 0x20)) ^ + (byte)((uint)uVar23 >> 0x10), + CONCAT15(-((short)((ulong)uVar17 >> 0x10) == + (short)((ulong)uVar19 >> 0x10)) ^ + (byte)((uint)uVar23 >> 8), + CONCAT14(-((short)uVar17 == (short)uVar19) ^ + (byte)uVar23, + CONCAT13(-((short)((ulong)uVar16 >> 0x30) + == (short)((ulong)uVar18 >> 0x30) + ) ^ (byte)((uint)uVar22 >> 0x18), + CONCAT12(-((short)((ulong)uVar16 + >> 0x20) == + (short)((ulong)uVar18 >> + 0x20)) ^ + (byte)((uint)uVar22 >> + 0x10), + CONCAT11(-((short)((ulong + )uVar16 >> 0x10) == (short)((ulong)uVar18 >> 0x10) + ) ^ (byte)((uint)uVar22 >> 8), + -((short)uVar16 == (short)uVar18) ^ (byte)uVar22)) + ))))); + iVar13 = *param_7; + puVar11 = puVar11 + 2; + } while (iVar3 < iVar13 + -0xf); + while( true ) { + if (iVar3 < iVar13) { + lVar8 = (long)iVar3; + lVar6 = 0; + lVar9 = lVar8 * 2; + do { + iVar3 = iVar3 + 1; + *(char *)((long)param_5 + lVar6 + lVar8) = + -!bVar1 ^ -(*(short *)(param_1 + lVar9 + lVar6 * 2) == + *(short *)(param_3 + lVar9 + lVar6 * 2)); + lVar6 = lVar6 + 1; + iVar13 = *param_7; + } while (iVar3 < iVar13); + } + iVar3 = param_7[1]; + param_1 = param_1 + param_2 * 2; + param_3 = param_3 + param_4 * 2; + param_5 = (undefined8 *)((long)param_5 + param_6); + param_7[1] = iVar3 + -1; + if (iVar3 == 0) { + return; + } + if (!bVar1) goto LAB_0023b660; +LAB_0023b73c: + uVar22 = 0; + uVar23 = 0; + uVar24 = 0; + uVar25 = 0; + if (0xf < iVar13) break; +LAB_0023b748: + iVar3 = 0; + } + } while( true ); + } + } + bVar12 = 0; + param_1 = param_3; + param_2 = param_4; +LAB_0023b784: + iVar3 = param_7[1]; + param_7[1] = iVar3 + -1; + if (iVar3 == 0) { + return; + } + iVar3 = *param_7; + if (iVar13 == 1) goto LAB_0023b890; +LAB_0023b7a8: + uVar22 = 0xffffffff; + uVar23 = 0xffffffff; + uVar24 = 0xffffffff; + uVar25 = 0xffffffff; + if (iVar3 < 0x10) goto LAB_0023b89c; + do { + puVar7 = (undefined8 *)(lVar6 + 0x10); + puVar5 = (undefined8 *)(param_1 + 0x10); + iVar4 = 0; + puVar11 = param_5; + do { + uVar21 = puVar7[1]; + uVar20 = *puVar7; + iVar4 = iVar4 + 0x10; + uVar19 = puVar7[-1]; + uVar18 = puVar7[-2]; + puVar7 = puVar7 + 4; + uVar17 = puVar5[-1]; + uVar16 = puVar5[-2]; + uVar15 = puVar5[1]; + uVar14 = *puVar5; + puVar5 = puVar5 + 4; + puVar11[1] = CONCAT17(~-((short)((ulong)uVar21 >> 0x30) <= (short)((ulong)uVar15 >> 0x30)) ^ + (byte)((uint)uVar25 >> 0x18), + CONCAT16(~-((short)((ulong)uVar21 >> 0x20) <= + (short)((ulong)uVar15 >> 0x20)) ^ + (byte)((uint)uVar25 >> 0x10), + CONCAT15(~-((short)((ulong)uVar21 >> 0x10) <= + (short)((ulong)uVar15 >> 0x10)) ^ + (byte)((uint)uVar25 >> 8), + CONCAT14(~-((short)uVar21 <= (short)uVar15) ^ + (byte)uVar25, + CONCAT13(~-((short)((ulong)uVar20 >> 0x30) <= + (short)((ulong)uVar14 >> 0x30)) ^ + (byte)((uint)uVar24 >> 0x18), + CONCAT12(~-((short)((ulong)uVar20 >> + 0x20) <= + (short)((ulong)uVar14 >> + 0x20)) ^ + (byte)((uint)uVar24 >> 0x10 + ),CONCAT11(~-((short) + ((ulong)uVar20 >> 0x10) <= + (short)((ulong)uVar14 >> 0x10)) ^ + (byte)((uint)uVar24 >> 8), + ~-((short)uVar20 <= (short)uVar14) ^ (byte)uVar24) + )))))); + *puVar11 = CONCAT17(~-((short)((ulong)uVar19 >> 0x30) <= (short)((ulong)uVar17 >> 0x30)) ^ + (byte)((uint)uVar23 >> 0x18), + CONCAT16(~-((short)((ulong)uVar19 >> 0x20) <= + (short)((ulong)uVar17 >> 0x20)) ^ (byte)((uint)uVar23 >> 0x10), + CONCAT15(~-((short)((ulong)uVar19 >> 0x10) <= + (short)((ulong)uVar17 >> 0x10)) ^ + (byte)((uint)uVar23 >> 8), + CONCAT14(~-((short)uVar19 <= (short)uVar17) ^ + (byte)uVar23, + CONCAT13(~-((short)((ulong)uVar18 >> 0x30) <= + (short)((ulong)uVar16 >> 0x30)) ^ + (byte)((uint)uVar22 >> 0x18), + CONCAT12(~-((short)((ulong)uVar18 >> + 0x20) <= + (short)((ulong)uVar16 >> + 0x20)) ^ + (byte)((uint)uVar22 >> 0x10), + CONCAT11(~-((short)((ulong) + uVar18 >> 0x10) <= (short)((ulong)uVar16 >> 0x10)) + ^ (byte)((uint)uVar22 >> 8), + ~-((short)uVar18 <= (short)uVar16) ^ (byte)uVar22) + )))))); + iVar3 = *param_7; + puVar11 = puVar11 + 2; + } while (iVar4 < iVar3 + -0xf); + while( true ) { + if (iVar4 < iVar3) { + lVar9 = (long)iVar4; + lVar8 = 0; + lVar10 = lVar9 * 2; + do { + iVar4 = iVar4 + 1; + *(byte *)((long)param_5 + lVar8 + lVar9) = + bVar12 ^ -(*(short *)(param_1 + lVar10 + lVar8 * 2) < + *(short *)(lVar6 + lVar10 + lVar8 * 2)); + lVar8 = lVar8 + 1; + iVar3 = *param_7; + } while (iVar4 < iVar3); + } + iVar4 = param_7[1]; + lVar6 = lVar6 + uVar2 * 2; + param_1 = param_1 + param_2 * 2; + param_5 = (undefined8 *)((long)param_5 + param_6); + param_7[1] = iVar4 + -1; + if (iVar4 == 0) { + return; + } + if (iVar13 != 1) goto LAB_0023b7a8; +LAB_0023b890: + uVar22 = 0; + uVar23 = 0; + uVar24 = 0; + uVar25 = 0; + if (0xf < iVar3) break; +LAB_0023b89c: + iVar4 = 0; + } + } while( true ); +} + + +================================================================== + +### FUNC 0023b8b0 (572 bytes) name=FUN_0023b8b0 + +void FUN_0023b8b0(undefined8 *param_1,long param_2,undefined8 *param_3,long param_4, + undefined8 *param_5,long param_6,int *param_7,int *param_8) + +{ + bool bVar1; + undefined8 *puVar2; + int iVar3; + int iVar4; + long lVar5; + undefined8 *puVar6; + undefined8 *puVar7; + undefined8 *puVar8; + long lVar9; + long lVar10; + byte bVar11; + int iVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined4 uVar17; + undefined4 uVar18; + undefined4 uVar19; + undefined4 uVar20; + + iVar12 = *param_8; + if (iVar12 - 2U < 2) { + puVar2 = param_3; + lVar5 = param_4; + if (iVar12 == 2) { + bVar11 = 0xff; + iVar12 = 4; + goto LAB_0023ba00; + } + iVar12 = 1; + param_3 = param_1; + param_4 = param_2; + } + else { + puVar2 = param_1; + lVar5 = param_2; + if (iVar12 == 4) { + bVar11 = 0xff; + param_1 = param_3; + param_2 = param_4; + goto LAB_0023ba00; + } + if (iVar12 != 1) { + bVar1 = iVar12 == 0; + if ((iVar12 != 5) && (!bVar1)) { + return; + } + iVar12 = param_7[1]; + param_7[1] = iVar12 + -1; + if (iVar12 == 0) { + return; + } + iVar12 = *param_7; + if (bVar1) goto LAB_0023b9b8; +LAB_0023b90c: + uVar17 = 0xffffffff; + uVar18 = 0xffffffff; + uVar19 = 0xffffffff; + uVar20 = 0xffffffff; + if (iVar12 < 0x10) goto LAB_0023b9c4; + do { + iVar3 = 0; + puVar2 = param_5; + puVar6 = param_3; + puVar7 = param_1; + do { + uVar16 = puVar7[1]; + uVar15 = *puVar7; + iVar3 = iVar3 + 0x10; + uVar14 = puVar6[1]; + uVar13 = *puVar6; + puVar2[1] = CONCAT17(-((char)((ulong)uVar14 >> 0x38) == (char)((ulong)uVar16 >> 0x38)) ^ + (byte)((uint)uVar20 >> 0x18), + CONCAT16(-((char)((ulong)uVar14 >> 0x30) == + (char)((ulong)uVar16 >> 0x30)) ^ + (byte)((uint)uVar20 >> 0x10), + CONCAT15(-((char)((ulong)uVar14 >> 0x28) == + (char)((ulong)uVar16 >> 0x28)) ^ + (byte)((uint)uVar20 >> 8), + CONCAT14(-((char)((ulong)uVar14 >> 0x20) == + (char)((ulong)uVar16 >> 0x20)) ^ + (byte)uVar20, + CONCAT13(-((char)((ulong)uVar14 >> 0x18) + == (char)((ulong)uVar16 >> 0x18) + ) ^ (byte)((uint)uVar19 >> 0x18) + ,CONCAT12(-((char)((ulong)uVar14 + >> 0x10) == + (char)((ulong)uVar16 + >> 0x10)) ^ + (byte)((uint)uVar19 >> + 0x10), + CONCAT11(-((char)(( + ulong)uVar14 >> 8) == (char)((ulong)uVar16 >> 8)) + ^ (byte)((uint)uVar19 >> 8), + -((char)uVar14 == (char)uVar16) ^ (byte)uVar19)))) + ))); + *puVar2 = CONCAT17(-((char)((ulong)uVar13 >> 0x38) == (char)((ulong)uVar15 >> 0x38)) ^ + (byte)((uint)uVar18 >> 0x18), + CONCAT16(-((char)((ulong)uVar13 >> 0x30) == + (char)((ulong)uVar15 >> 0x30)) ^ (byte)((uint)uVar18 >> 0x10) + ,CONCAT15(-((char)((ulong)uVar13 >> 0x28) == + (char)((ulong)uVar15 >> 0x28)) ^ + (byte)((uint)uVar18 >> 8), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) == + (char)((ulong)uVar15 >> 0x20)) ^ + (byte)uVar18, + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == + (char)((ulong)uVar15 >> 0x18)) ^ + (byte)((uint)uVar17 >> 0x18), + CONCAT12(-((char)((ulong)uVar13 >> + 0x10) == + (char)((ulong)uVar15 >> + 0x10)) ^ + (byte)((uint)uVar17 >> + 0x10), + CONCAT11(-((char)((ulong) + uVar13 >> 8) == (char)((ulong)uVar15 >> 8)) ^ + (byte)((uint)uVar17 >> 8), + -((char)uVar13 == (char)uVar15) ^ (byte)uVar17)))) + ))); + iVar12 = *param_7; + puVar2 = puVar2 + 2; + puVar6 = puVar6 + 2; + puVar7 = puVar7 + 2; + } while (iVar3 < iVar12 + -0xf); + while( true ) { + if (iVar3 < iVar12) { + lVar5 = 0; + lVar9 = (long)iVar3; + do { + iVar3 = iVar3 + 1; + *(char *)((long)param_5 + lVar5 + lVar9) = + -!bVar1 ^ -(*(char *)((long)param_1 + lVar5 + lVar9) == + *(char *)((long)param_3 + lVar5 + lVar9)); + lVar5 = lVar5 + 1; + iVar12 = *param_7; + } while (iVar3 < iVar12); + } + iVar3 = param_7[1]; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_3 = (undefined8 *)((long)param_3 + param_4); + param_5 = (undefined8 *)((long)param_5 + param_6); + param_7[1] = iVar3 + -1; + if (iVar3 == 0) { + return; + } + if (!bVar1) goto LAB_0023b90c; +LAB_0023b9b8: + uVar17 = 0; + uVar18 = 0; + uVar19 = 0; + uVar20 = 0; + if (0xf < iVar12) break; +LAB_0023b9c4: + iVar3 = 0; + } + } while( true ); + } + } + bVar11 = 0; + param_1 = param_3; + param_2 = param_4; +LAB_0023ba00: + iVar3 = param_7[1]; + param_7[1] = iVar3 + -1; + if (iVar3 == 0) { + return; + } + iVar3 = *param_7; + if (iVar12 == 1) goto LAB_0023bacc; +LAB_0023ba1c: + uVar17 = 0xffffffff; + uVar18 = 0xffffffff; + uVar19 = 0xffffffff; + uVar20 = 0xffffffff; + if (iVar3 < 0x10) goto LAB_0023bad8; + do { + iVar4 = 0; + puVar6 = param_5; + puVar7 = param_1; + puVar8 = puVar2; + do { + uVar14 = puVar8[1]; + uVar13 = *puVar8; + iVar4 = iVar4 + 0x10; + uVar16 = puVar7[1]; + uVar15 = *puVar7; + puVar6[1] = CONCAT17(-((byte)((ulong)uVar16 >> 0x38) < (byte)((ulong)uVar14 >> 0x38)) ^ + (byte)((uint)uVar20 >> 0x18), + CONCAT16(-((byte)((ulong)uVar16 >> 0x30) < (byte)((ulong)uVar14 >> 0x30)) + ^ (byte)((uint)uVar20 >> 0x10), + CONCAT15(-((byte)((ulong)uVar16 >> 0x28) < + (byte)((ulong)uVar14 >> 0x28)) ^ + (byte)((uint)uVar20 >> 8), + CONCAT14(-((byte)((ulong)uVar16 >> 0x20) < + (byte)((ulong)uVar14 >> 0x20)) ^ (byte)uVar20 + ,CONCAT13(-((byte)((ulong)uVar16 >> 0x18) < + (byte)((ulong)uVar14 >> 0x18)) ^ + (byte)((uint)uVar19 >> 0x18), + CONCAT12(-((byte)((ulong)uVar16 >> + 0x10) < + (byte)((ulong)uVar14 >> + 0x10)) ^ + (byte)((uint)uVar19 >> 0x10 + ),CONCAT11(-((byte)(( + ulong)uVar16 >> 8) < (byte)((ulong)uVar14 >> 8)) ^ + (byte)((uint)uVar19 >> 8), + -((byte)uVar16 < (byte)uVar14) ^ (byte)uVar19))))) + )); + *puVar6 = CONCAT17(-((byte)((ulong)uVar15 >> 0x38) < (byte)((ulong)uVar13 >> 0x38)) ^ + (byte)((uint)uVar18 >> 0x18), + CONCAT16(-((byte)((ulong)uVar15 >> 0x30) < (byte)((ulong)uVar13 >> 0x30)) ^ + (byte)((uint)uVar18 >> 0x10), + CONCAT15(-((byte)((ulong)uVar15 >> 0x28) < + (byte)((ulong)uVar13 >> 0x28)) ^ + (byte)((uint)uVar18 >> 8), + CONCAT14(-((byte)((ulong)uVar15 >> 0x20) < + (byte)((ulong)uVar13 >> 0x20)) ^ (byte)uVar18, + CONCAT13(-((byte)((ulong)uVar15 >> 0x18) < + (byte)((ulong)uVar13 >> 0x18)) ^ + (byte)((uint)uVar17 >> 0x18), + CONCAT12(-((byte)((ulong)uVar15 >> 0x10 + ) < + (byte)((ulong)uVar13 >> 0x10) + ) ^ (byte)((uint)uVar17 >> + 0x10), + CONCAT11(-((byte)((ulong) + uVar15 >> 8) < (byte)((ulong)uVar13 >> 8)) ^ + (byte)((uint)uVar17 >> 8), + -((byte)uVar15 < (byte)uVar13) ^ (byte)uVar17))))) + )); + iVar3 = *param_7; + puVar6 = puVar6 + 2; + puVar7 = puVar7 + 2; + puVar8 = puVar8 + 2; + } while (iVar4 < iVar3 + -0xf); + while( true ) { + if (iVar4 < iVar3) { + lVar9 = 0; + lVar10 = (long)iVar4; + do { + iVar4 = iVar4 + 1; + *(byte *)((long)param_5 + lVar9 + lVar10) = + bVar11 ^ -(*(byte *)((long)param_1 + lVar9 + lVar10) < + *(byte *)((long)puVar2 + lVar9 + lVar10)); + lVar9 = lVar9 + 1; + iVar3 = *param_7; + } while (iVar4 < iVar3); + } + iVar4 = param_7[1]; + puVar2 = (undefined8 *)((long)puVar2 + lVar5); + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + param_6); + param_7[1] = iVar4 + -1; + if (iVar4 == 0) { + return; + } + if (iVar12 != 1) goto LAB_0023ba1c; +LAB_0023bacc: + uVar17 = 0; + uVar18 = 0; + uVar19 = 0; + uVar20 = 0; + if (0xf < iVar3) break; +LAB_0023bad8: + iVar4 = 0; + } + } while( true ); +} + + +================================================================== + +### FUNC 0023baec (536 bytes) name=FUN_0023baec + +void FUN_0023baec(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + long param_7,long param_8,int *param_9) + +{ + byte *pbVar1; + int iVar2; + byte *pbVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + int iVar7; + uint uVar8; + int iVar9; + int iVar10; + long lVar11; + byte *pbVar12; + long lVar13; + char *pcVar14; + byte *pbVar15; + byte *pbVar16; + char cVar17; + char cVar18; + char cVar19; + char cVar20; + long lVar21; + int iVar22; + byte bVar24; + byte bVar25; + byte bVar26; + byte bVar27; + byte bVar28; + byte bVar29; + undefined8 uVar23; + byte bVar30; + byte bVar32; + byte bVar33; + byte bVar34; + byte bVar35; + byte bVar36; + byte bVar37; + undefined8 uVar31; + byte bVar38; + undefined8 uVar39; + undefined8 uVar40; + undefined8 uVar41; + undefined8 uVar42; + + iVar22 = param_9[1]; + iVar7 = *param_9; + if (iVar22 != 0) { + iVar9 = iVar7 + -0xf; + iVar2 = (iVar7 - 0x10U & 0xfffffff0) + 0x10; + if (iVar9 < 1) { + iVar2 = 0; + } + uVar8 = (uint)((iVar7 + -4) - iVar2) >> 2; + lVar21 = (long)iVar2; + do { + lVar11 = 0; + if (0 < iVar9) { + do { + puVar4 = (undefined8 *)(param_3 + lVar11); + puVar5 = (undefined8 *)(param_5 + lVar11); + puVar6 = (undefined8 *)(param_7 + lVar11); + uVar31 = ((undefined8 *)(param_1 + lVar11))[1]; + uVar23 = *(undefined8 *)(param_1 + lVar11); + lVar11 = lVar11 + 0x10; + uVar42 = puVar4[1]; + uVar41 = *puVar4; + uVar40 = puVar5[1]; + uVar39 = *puVar5; + bVar24 = (byte)((ulong)uVar23 >> 8); + bVar25 = (byte)((ulong)uVar23 >> 0x10); + bVar26 = (byte)((ulong)uVar23 >> 0x18); + bVar27 = (byte)((ulong)uVar23 >> 0x20); + bVar28 = (byte)((ulong)uVar23 >> 0x28); + bVar29 = (byte)((ulong)uVar23 >> 0x30); + bVar30 = (byte)((ulong)uVar23 >> 0x38); + bVar32 = (byte)((ulong)uVar31 >> 8); + bVar33 = (byte)((ulong)uVar31 >> 0x10); + bVar34 = (byte)((ulong)uVar31 >> 0x18); + bVar35 = (byte)((ulong)uVar31 >> 0x20); + bVar36 = (byte)((ulong)uVar31 >> 0x28); + bVar37 = (byte)((ulong)uVar31 >> 0x30); + bVar38 = (byte)((ulong)uVar31 >> 0x38); + puVar6[1] = CONCAT17(-(bVar38 <= (byte)((ulong)uVar40 >> 0x38)) & + -((byte)((ulong)uVar42 >> 0x38) <= bVar38), + CONCAT16(-(bVar37 <= (byte)((ulong)uVar40 >> 0x30)) & + -((byte)((ulong)uVar42 >> 0x30) <= bVar37), + CONCAT15(-(bVar36 <= (byte)((ulong)uVar40 >> 0x28)) & + -((byte)((ulong)uVar42 >> 0x28) <= bVar36), + CONCAT14(-(bVar35 <= (byte)((ulong)uVar40 >> 0x20)) + & -((byte)((ulong)uVar42 >> 0x20) <= + bVar35), + CONCAT13(-(bVar34 <= + (byte)((ulong)uVar40 >> 0x18)) & + -((byte)((ulong)uVar42 >> 0x18) + <= bVar34), + CONCAT12(-(bVar33 <= + (byte)((ulong)uVar40 >> + 0x10)) & + -((byte)((ulong)uVar42 + >> 0x10) <= + bVar33),CONCAT11(-( + bVar32 <= (byte)((ulong)uVar40 >> 8)) & + -((byte)((ulong)uVar42 >> 8) <= bVar32), + -((byte)uVar31 <= (byte)uVar40) & + -((byte)uVar42 <= (byte)uVar31)))))))); + *puVar6 = CONCAT17(-(bVar30 <= (byte)((ulong)uVar39 >> 0x38)) & + -((byte)((ulong)uVar41 >> 0x38) <= bVar30), + CONCAT16(-(bVar29 <= (byte)((ulong)uVar39 >> 0x30)) & + -((byte)((ulong)uVar41 >> 0x30) <= bVar29), + CONCAT15(-(bVar28 <= (byte)((ulong)uVar39 >> 0x28)) & + -((byte)((ulong)uVar41 >> 0x28) <= bVar28), + CONCAT14(-(bVar27 <= (byte)((ulong)uVar39 >> 0x20)) & + -((byte)((ulong)uVar41 >> 0x20) <= bVar27), + CONCAT13(-(bVar26 <= + (byte)((ulong)uVar39 >> 0x18)) & + -((byte)((ulong)uVar41 >> 0x18) <= + bVar26),CONCAT12(-(bVar25 <= + (byte)((ulong) + uVar39 >> 0x10)) & + -((byte)((ulong)uVar41 >> 0x10) <= bVar25), + CONCAT11(-(bVar24 <= (byte)((ulong)uVar39 >> 8)) & + -((byte)((ulong)uVar41 >> 8) <= bVar24), + -((byte)uVar23 <= (byte)uVar39) & + -((byte)uVar41 <= (byte)uVar23)))))))); + } while ((int)lVar11 < iVar9); + } + iVar10 = iVar2; + if (iVar2 < iVar7 + -3) { + pbVar15 = (byte *)(param_1 + lVar21); + pcVar14 = (char *)(param_7 + lVar21); + pbVar16 = (byte *)(param_5 + lVar21); + pbVar12 = (byte *)(param_3 + lVar21); + do { + cVar20 = '\0'; + cVar19 = '\0'; + cVar18 = '\0'; + cVar17 = '\0'; + if (*pbVar12 <= *pbVar15) { + cVar20 = -(*pbVar15 <= *pbVar16); + } + if (pbVar12[1] <= pbVar15[1]) { + cVar19 = -(pbVar15[1] <= pbVar16[1]); + } + *pcVar14 = cVar20; + pcVar14[1] = cVar19; + if (pbVar12[2] <= pbVar15[2]) { + cVar18 = -(pbVar15[2] <= pbVar16[2]); + } + pbVar1 = pbVar15 + 3; + pbVar3 = pbVar12 + 4; + pbVar15 = pbVar15 + 4; + if (pbVar12[3] <= *pbVar1) { + cVar17 = -(*pbVar1 <= pbVar16[3]); + } + pcVar14[2] = cVar18; + pcVar14[3] = cVar17; + pbVar16 = pbVar16 + 4; + pcVar14 = pcVar14 + 4; + pbVar12 = pbVar3; + iVar10 = iVar2 + 4 + uVar8 * 4; + } while (pbVar3 != (byte *)(param_3 + lVar21 + 4 + (ulong)uVar8 * 4)); + } + lVar11 = (long)iVar10; + if (iVar10 < iVar7) { + lVar13 = 0; + do { + cVar20 = '\0'; + bVar24 = *(byte *)(param_1 + lVar11 + lVar13); + if (*(byte *)(param_3 + lVar11 + lVar13) <= bVar24) { + cVar20 = -(bVar24 <= *(byte *)(param_5 + lVar11 + lVar13)); + } + *(char *)(param_7 + lVar11 + lVar13) = cVar20; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar7 + -1) - iVar10) + 1); + } + iVar22 = iVar22 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + param_7 = param_7 + param_8; + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023bd04 (368 bytes) name=FUN_0023bd04 + +void FUN_0023bd04(undefined8 param_1,undefined8 param_2,long param_3,ulong param_4,uint *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + char cVar6; + undefined1 (*pauVar7) [16]; + long lVar8; + ulong uVar9; + ulong uVar10; + uint *puVar11; + float fVar12; + float fVar14; + float fVar15; + undefined1 auVar13 [16]; + float fVar16; + undefined1 auVar17 [16]; + float fVar18; + float fVar21; + float fVar22; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + float fVar23; + undefined1 auVar24 [16]; + float fVar25; + + iVar2 = *param_7; + iVar3 = param_7[1]; + fVar25 = (float)*param_8; + cVar6 = cv::checkHardwareSupport(3); + if (cVar6 == '\0') { + cVar6 = cv::checkHardwareSupport(100); + } + if (iVar3 != 0) { + do { + uVar9 = 0; + if ((cVar6 != '\0') && (0 < iVar2 + -7)) { + pauVar7 = (undefined1 (*) [16])(param_3 + 0x10); + puVar11 = param_5; + do { + auVar4 = *pauVar7; + uVar1 = (int)uVar9 + 8; + uVar9 = (ulong)uVar1; + auVar5 = pauVar7[-1]; + pauVar7 = pauVar7 + 2; + auVar24 = NEON_frecpe(auVar4,4); + auVar17 = NEON_frecpe(auVar5,4); + auVar19 = NEON_frecps(auVar4,auVar24,4); + auVar13 = NEON_frecps(auVar5,auVar17,4); + auVar20._0_4_ = auVar24._0_4_ * auVar19._0_4_; + auVar20._4_4_ = auVar24._4_4_ * auVar19._4_4_; + auVar20._8_4_ = auVar24._8_4_ * auVar19._8_4_; + auVar20._12_4_ = auVar24._12_4_ * auVar19._12_4_; + auVar19._0_4_ = auVar17._0_4_ * auVar13._0_4_; + auVar19._4_4_ = auVar17._4_4_ * auVar13._4_4_; + auVar19._8_4_ = auVar17._8_4_ * auVar13._8_4_; + auVar19._12_4_ = auVar17._12_4_ * auVar13._12_4_; + auVar17 = NEON_frecps(auVar4,auVar20,4); + auVar13 = NEON_frecps(auVar5,auVar19,4); + fVar18 = fVar25 * auVar20._0_4_ * auVar17._0_4_; + fVar21 = fVar25 * auVar20._4_4_ * auVar17._4_4_; + fVar22 = fVar25 * auVar20._8_4_ * auVar17._8_4_; + fVar23 = fVar25 * auVar20._12_4_ * auVar17._12_4_; + fVar12 = fVar25 * auVar19._0_4_ * auVar13._0_4_; + fVar14 = fVar25 * auVar19._4_4_ * auVar13._4_4_; + fVar15 = fVar25 * auVar19._8_4_ * auVar13._8_4_; + fVar16 = fVar25 * auVar19._12_4_ * auVar13._12_4_; + puVar11[2] = (uint)fVar15 ^ (uint)fVar15 & -(uint)(auVar5._8_4_ == 0.0); + puVar11[3] = (uint)fVar16 ^ (uint)fVar16 & -(uint)(auVar5._12_4_ == 0.0); + *puVar11 = (uint)fVar12 ^ (uint)fVar12 & -(uint)(auVar5._0_4_ == 0.0); + puVar11[1] = (uint)fVar14 ^ (uint)fVar14 & -(uint)(auVar5._4_4_ == 0.0); + puVar11[6] = (uint)fVar22 ^ (uint)fVar22 & -(uint)(auVar4._8_4_ == 0.0); + puVar11[7] = (uint)fVar23 ^ (uint)fVar23 & -(uint)(auVar4._12_4_ == 0.0); + puVar11[4] = (uint)fVar18 ^ (uint)fVar18 & -(uint)(auVar4._0_4_ == 0.0); + puVar11[5] = (uint)fVar21 ^ (uint)fVar21 & -(uint)(auVar4._4_4_ == 0.0); + puVar11 = puVar11 + 8; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar9 < iVar2) { + uVar10 = -(uVar9 >> 0x1f) & 0xfffffffc00000000 | uVar9 << 2; + lVar8 = 0; + do { + fVar12 = 0.0; + fVar14 = *(float *)(param_3 + uVar10 + lVar8); + if (fVar14 != 0.0) { + fVar12 = fVar25 / fVar14; + } + *(float *)((long)param_5 + lVar8 + uVar10) = fVar12; + lVar8 = lVar8 + 4; + } while (lVar8 != ((ulong)(uint)((iVar2 + -1) - (int)uVar9) + 1) * 4); + } + iVar3 = iVar3 + -1; + param_3 = param_3 + (param_4 & 0xfffffffffffffffc); + param_5 = (uint *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar3 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023be74 (652 bytes) name=FUN_0023be74 + +void FUN_0023be74(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + undefined8 *param_7,long param_8,int *param_9) + +{ + ushort *puVar1; + undefined8 *puVar2; + char *pcVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined8 *puVar8; + char *pcVar9; + long lVar10; + undefined8 *puVar11; + ushort *puVar12; + undefined8 *puVar13; + ushort *puVar14; + ushort *puVar15; + char cVar16; + int iVar17; + char cVar18; + undefined8 *puVar19; + char cVar20; + char cVar21; + long lVar22; + int iVar23; + long lVar24; + long lVar25; + ushort uVar27; + ushort uVar28; + undefined8 uVar26; + ushort uVar29; + ushort uVar31; + ushort uVar32; + undefined8 uVar30; + ushort uVar33; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + undefined8 uVar37; + undefined8 uVar38; + undefined8 uVar39; + undefined8 uVar40; + undefined8 uVar41; + ushort uVar43; + ushort uVar44; + undefined8 uVar42; + ushort uVar45; + ushort uVar47; + ushort uVar48; + undefined8 uVar46; + ushort uVar49; + + iVar23 = param_9[1]; + iVar4 = *param_9; + if (iVar23 != 0) { + uVar6 = iVar4 - 0x10U >> 4; + iVar5 = (uVar6 + 1) * 0x10; + if (iVar4 + -0xf < 1) { + iVar5 = 0; + } + lVar25 = (long)iVar5; + uVar7 = (uint)((iVar4 + -4) - iVar5) >> 2; + lVar24 = lVar25 * 2; + do { + if (0 < iVar4 + -0xf) { + puVar8 = (undefined8 *)(param_1 + 0x10); + puVar11 = (undefined8 *)(param_5 + 0x10); + puVar13 = (undefined8 *)(param_3 + 0x10); + puVar19 = param_7; + do { + uVar30 = puVar8[1]; + uVar26 = *puVar8; + uVar35 = puVar11[1]; + uVar34 = *puVar11; + puVar2 = puVar8 + 4; + uVar46 = puVar8[-1]; + uVar42 = puVar8[-2]; + uVar41 = puVar13[1]; + uVar40 = *puVar13; + uVar37 = puVar11[-1]; + uVar36 = puVar11[-2]; + uVar39 = puVar13[-1]; + uVar38 = puVar13[-2]; + uVar27 = (ushort)((ulong)uVar26 >> 0x10); + uVar28 = (ushort)((ulong)uVar26 >> 0x20); + uVar29 = (ushort)((ulong)uVar26 >> 0x30); + uVar31 = (ushort)((ulong)uVar30 >> 0x10); + uVar32 = (ushort)((ulong)uVar30 >> 0x20); + uVar33 = (ushort)((ulong)uVar30 >> 0x30); + uVar43 = (ushort)((ulong)uVar42 >> 0x10); + uVar44 = (ushort)((ulong)uVar42 >> 0x20); + uVar45 = (ushort)((ulong)uVar42 >> 0x30); + uVar47 = (ushort)((ulong)uVar46 >> 0x10); + uVar48 = (ushort)((ulong)uVar46 >> 0x20); + uVar49 = (ushort)((ulong)uVar46 >> 0x30); + puVar19[1] = CONCAT17(-(uVar33 <= (ushort)((ulong)uVar35 >> 0x30)) & + -((ushort)((ulong)uVar41 >> 0x30) <= uVar33), + CONCAT16(-(uVar32 <= (ushort)((ulong)uVar35 >> 0x20)) & + -((ushort)((ulong)uVar41 >> 0x20) <= uVar32), + CONCAT15(-(uVar31 <= (ushort)((ulong)uVar35 >> 0x10)) & + -((ushort)((ulong)uVar41 >> 0x10) <= uVar31), + CONCAT14(-((ushort)uVar30 <= (ushort)uVar35) & + -((ushort)uVar41 <= (ushort)uVar30), + CONCAT13(-(uVar29 <= + (ushort)((ulong)uVar34 >> 0x30) + ) & -((ushort)((ulong)uVar40 >> + 0x30) <= uVar29), + CONCAT12(-(uVar28 <= + (ushort)((ulong)uVar34 + >> 0x20)) & + -((ushort)((ulong) + uVar40 >> 0x20) <= uVar28), + CONCAT11(-(uVar27 <= + (ushort)((ulong)uVar34 >> 0x10)) & + -((ushort)((ulong)uVar40 >> 0x10) <= + uVar27),-((ushort)uVar26 <= + (ushort)uVar34) & + -((ushort)uVar40 <= + (ushort)uVar26)))))))); + *puVar19 = CONCAT17(-(uVar49 <= (ushort)((ulong)uVar37 >> 0x30)) & + -((ushort)((ulong)uVar39 >> 0x30) <= uVar49), + CONCAT16(-(uVar48 <= (ushort)((ulong)uVar37 >> 0x20)) & + -((ushort)((ulong)uVar39 >> 0x20) <= uVar48), + CONCAT15(-(uVar47 <= (ushort)((ulong)uVar37 >> 0x10)) & + -((ushort)((ulong)uVar39 >> 0x10) <= uVar47), + CONCAT14(-((ushort)uVar46 <= (ushort)uVar37) & + -((ushort)uVar39 <= (ushort)uVar46), + CONCAT13(-(uVar45 <= + (ushort)((ulong)uVar36 >> 0x30)) + & -((ushort)((ulong)uVar38 >> 0x30 + ) <= uVar45), + CONCAT12(-(uVar44 <= + (ushort)((ulong)uVar36 + >> 0x20)) & + -((ushort)((ulong)uVar38 + >> 0x20) <= + uVar44),CONCAT11(-( + uVar43 <= (ushort)((ulong)uVar36 >> 0x10)) & + -((ushort)((ulong)uVar38 >> 0x10) <= uVar43), + -((ushort)uVar42 <= (ushort)uVar36) & + -((ushort)uVar38 <= (ushort)uVar42)))))))); + puVar8 = puVar2; + puVar11 = puVar11 + 4; + puVar13 = puVar13 + 4; + puVar19 = puVar19 + 2; + } while (puVar2 != (undefined8 *)(param_1 + (ulong)uVar6 * 0x20 + 0x30)); + } + iVar17 = iVar5; + if (iVar5 < iVar4 + -3) { + puVar12 = (ushort *)(param_1 + lVar24); + puVar15 = (ushort *)(param_5 + lVar24); + pcVar9 = (char *)((long)param_7 + lVar25); + puVar14 = (ushort *)(param_3 + lVar24); + do { + cVar21 = '\0'; + cVar20 = '\0'; + cVar18 = '\0'; + cVar16 = '\0'; + if (*puVar14 <= *puVar12) { + cVar21 = -(*puVar12 <= *puVar15); + } + if (puVar14[1] <= puVar12[1]) { + cVar20 = -(puVar12[1] <= puVar15[1]); + } + *pcVar9 = cVar21; + pcVar9[1] = cVar20; + if (puVar14[2] <= puVar12[2]) { + cVar18 = -(puVar12[2] <= puVar15[2]); + } + puVar1 = puVar12 + 3; + puVar12 = puVar12 + 4; + if (puVar14[3] <= *puVar1) { + cVar16 = -(*puVar1 <= puVar15[3]); + } + pcVar9[2] = cVar18; + pcVar3 = pcVar9 + 4; + puVar15 = puVar15 + 4; + pcVar9[3] = cVar16; + pcVar9 = pcVar3; + puVar14 = puVar14 + 4; + iVar17 = iVar5 + 4 + uVar7 * 4; + } while (pcVar3 != (char *)((long)param_7 + lVar25 + 4 + (ulong)uVar7 * 4)); + } + if (iVar17 < iVar4) { + lVar22 = (long)iVar17 * 2; + lVar10 = 0; + do { + uVar27 = *(ushort *)(param_1 + lVar22 + lVar10 * 2); + cVar21 = '\0'; + if (*(ushort *)(param_3 + lVar22 + lVar10 * 2) <= uVar27) { + cVar21 = -(uVar27 <= *(ushort *)(param_5 + lVar22 + lVar10 * 2)); + } + *(char *)((long)param_7 + lVar10 + iVar17) = cVar21; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(uint)((iVar4 + -1) - iVar17) + 1); + } + iVar23 = iVar23 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffe); + param_3 = param_3 + (param_4 & 0xfffffffffffffffe); + param_5 = param_5 + (param_6 & 0xfffffffffffffffe); + param_7 = (undefined8 *)((long)param_7 + param_8); + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023c100 (652 bytes) name=FUN_0023c100 + +void FUN_0023c100(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + undefined8 *param_7,long param_8,int *param_9) + +{ + short *psVar1; + char *pcVar2; + int iVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined8 *puVar7; + char *pcVar8; + long lVar9; + undefined8 *puVar10; + short *psVar11; + undefined8 *puVar12; + short *psVar13; + short *psVar14; + char cVar15; + int iVar16; + char cVar17; + undefined8 *puVar18; + char cVar19; + char cVar20; + long lVar21; + int iVar22; + long lVar23; + long lVar24; + short sVar26; + short sVar27; + undefined8 uVar25; + short sVar28; + short sVar30; + short sVar31; + undefined8 uVar29; + short sVar32; + short sVar34; + short sVar35; + undefined8 uVar33; + short sVar36; + short sVar38; + short sVar39; + undefined8 uVar37; + short sVar40; + undefined8 uVar41; + undefined8 uVar42; + undefined8 uVar43; + undefined8 uVar44; + undefined8 uVar45; + undefined8 uVar46; + undefined8 uVar47; + undefined8 uVar48; + + iVar22 = param_9[1]; + iVar3 = *param_9; + if (iVar22 != 0) { + uVar5 = iVar3 - 0x10U >> 4; + iVar4 = (uVar5 + 1) * 0x10; + if (iVar3 + -0xf < 1) { + iVar4 = 0; + } + lVar24 = (long)iVar4; + uVar6 = (uint)((iVar3 + -4) - iVar4) >> 2; + lVar23 = lVar24 * 2; + do { + if (0 < iVar3 + -0xf) { + puVar7 = (undefined8 *)(param_1 + 0x10); + puVar12 = (undefined8 *)(param_3 + 0x10); + puVar10 = (undefined8 *)(param_5 + 0x10); + puVar18 = param_7; + do { + uVar29 = puVar7[1]; + uVar25 = *puVar7; + uVar37 = puVar7[-1]; + uVar33 = puVar7[-2]; + puVar7 = puVar7 + 4; + uVar42 = puVar12[-1]; + uVar41 = puVar12[-2]; + uVar46 = puVar10[-1]; + uVar45 = puVar10[-2]; + uVar44 = puVar12[1]; + uVar43 = *puVar12; + puVar12 = puVar12 + 4; + uVar48 = puVar10[1]; + uVar47 = *puVar10; + puVar10 = puVar10 + 4; + sVar34 = (short)((ulong)uVar33 >> 0x10); + sVar35 = (short)((ulong)uVar33 >> 0x20); + sVar36 = (short)((ulong)uVar33 >> 0x30); + sVar38 = (short)((ulong)uVar37 >> 0x10); + sVar39 = (short)((ulong)uVar37 >> 0x20); + sVar40 = (short)((ulong)uVar37 >> 0x30); + sVar26 = (short)((ulong)uVar25 >> 0x10); + sVar27 = (short)((ulong)uVar25 >> 0x20); + sVar28 = (short)((ulong)uVar25 >> 0x30); + sVar30 = (short)((ulong)uVar29 >> 0x10); + sVar31 = (short)((ulong)uVar29 >> 0x20); + sVar32 = (short)((ulong)uVar29 >> 0x30); + puVar18[1] = CONCAT17(-((short)((ulong)uVar44 >> 0x30) <= sVar32) & + ~-((short)((ulong)uVar48 >> 0x30) < sVar32), + CONCAT16(-((short)((ulong)uVar44 >> 0x20) <= sVar31) & + ~-((short)((ulong)uVar48 >> 0x20) < sVar31), + CONCAT15(-((short)((ulong)uVar44 >> 0x10) <= sVar30) & + ~-((short)((ulong)uVar48 >> 0x10) < sVar30), + CONCAT14(-((short)uVar44 <= (short)uVar29) & + ~-((short)uVar48 < (short)uVar29), + CONCAT13(-((short)((ulong)uVar43 >> 0x30) + <= sVar28) & + ~-((short)((ulong)uVar47 >> 0x30 + ) < sVar28), + CONCAT12(-((short)((ulong)uVar43 + >> 0x20) <= + sVar27) & + ~-((short)((ulong) + uVar47 >> 0x20) < sVar27), + CONCAT11(-((short)((ulong)uVar43 >> 0x10) <= + sVar26) & + ~-((short)((ulong)uVar47 >> 0x10) < + sVar26), + -((short)uVar43 <= (short)uVar25) & + ~-((short)uVar47 < (short)uVar25)))))))); + *puVar18 = CONCAT17(-((short)((ulong)uVar42 >> 0x30) <= sVar40) & + ~-((short)((ulong)uVar46 >> 0x30) < sVar40), + CONCAT16(-((short)((ulong)uVar42 >> 0x20) <= sVar39) & + ~-((short)((ulong)uVar46 >> 0x20) < sVar39), + CONCAT15(-((short)((ulong)uVar42 >> 0x10) <= sVar38) & + ~-((short)((ulong)uVar46 >> 0x10) < sVar38), + CONCAT14(-((short)uVar42 <= (short)uVar37) & + ~-((short)uVar46 < (short)uVar37), + CONCAT13(-((short)((ulong)uVar41 >> 0x30) + <= sVar36) & + ~-((short)((ulong)uVar45 >> 0x30) + < sVar36), + CONCAT12(-((short)((ulong)uVar41 + >> 0x20) <= + sVar35) & + ~-((short)((ulong)uVar45 + >> 0x20) < + sVar35), + CONCAT11(-((short)((ulong + )uVar41 >> 0x10) <= sVar34) & + ~-((short)((ulong)uVar45 >> 0x10) < sVar34), + -((short)uVar41 <= (short)uVar33) & + ~-((short)uVar45 < (short)uVar33)))))))); + puVar18 = puVar18 + 2; + } while (puVar7 != (undefined8 *)(param_1 + (ulong)uVar5 * 0x20 + 0x30)); + } + iVar16 = iVar4; + if (iVar4 < iVar3 + -3) { + psVar11 = (short *)(param_1 + lVar23); + psVar14 = (short *)(param_5 + lVar23); + pcVar8 = (char *)((long)param_7 + lVar24); + psVar13 = (short *)(param_3 + lVar23); + do { + cVar20 = '\0'; + cVar19 = '\0'; + cVar17 = '\0'; + cVar15 = '\0'; + if (*psVar13 <= *psVar11) { + cVar20 = -(*psVar11 <= *psVar14); + } + if (psVar13[1] <= psVar11[1]) { + cVar19 = -(psVar11[1] <= psVar14[1]); + } + *pcVar8 = cVar20; + pcVar8[1] = cVar19; + if (psVar13[2] <= psVar11[2]) { + cVar17 = -(psVar11[2] <= psVar14[2]); + } + psVar1 = psVar11 + 3; + psVar11 = psVar11 + 4; + if (psVar13[3] <= *psVar1) { + cVar15 = -(*psVar1 <= psVar14[3]); + } + pcVar8[2] = cVar17; + pcVar2 = pcVar8 + 4; + psVar14 = psVar14 + 4; + pcVar8[3] = cVar15; + pcVar8 = pcVar2; + psVar13 = psVar13 + 4; + iVar16 = iVar4 + 4 + uVar6 * 4; + } while (pcVar2 != (char *)((long)param_7 + lVar24 + 4 + (ulong)uVar6 * 4)); + } + if (iVar16 < iVar3) { + lVar21 = (long)iVar16 * 2; + lVar9 = 0; + do { + sVar26 = *(short *)(param_1 + lVar21 + lVar9 * 2); + cVar20 = '\0'; + if (*(short *)(param_3 + lVar21 + lVar9 * 2) <= sVar26) { + cVar20 = -(sVar26 <= *(short *)(param_5 + lVar21 + lVar9 * 2)); + } + *(char *)((long)param_7 + lVar9 + iVar16) = cVar20; + lVar9 = lVar9 + 1; + } while (lVar9 != (ulong)(uint)((iVar3 + -1) - iVar16) + 1); + } + iVar22 = iVar22 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffe); + param_3 = param_3 + (param_4 & 0xfffffffffffffffe); + param_5 = param_5 + (param_6 & 0xfffffffffffffffe); + param_7 = (undefined8 *)((long)param_7 + param_8); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023c38c (656 bytes) name=FUN_0023c38c + +void FUN_0023c38c(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + undefined8 *param_7,long param_8,int *param_9) + +{ + int *piVar1; + char *pcVar2; + int iVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 *puVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 *puVar12; + undefined8 *puVar13; + char *pcVar14; + long lVar15; + undefined8 *puVar16; + int *piVar17; + undefined8 *puVar18; + int *piVar19; + undefined8 *puVar20; + int *piVar21; + char cVar22; + undefined8 *puVar23; + char cVar24; + undefined8 *puVar25; + char cVar26; + undefined8 *puVar27; + char cVar28; + long lVar29; + int iVar30; + long lVar31; + long lVar32; + int iVar33; + undefined8 uVar34; + int iVar35; + int iVar36; + int iVar37; + int iVar38; + int iVar39; + int iVar40; + int iVar41; + undefined8 uVar42; + undefined8 uVar43; + + iVar30 = param_9[1]; + iVar3 = *param_9; + if (iVar30 != 0) { + uVar5 = iVar3 - 8U >> 3; + iVar4 = (uVar5 + 1) * 8; + if (iVar3 + -7 < 1) { + iVar4 = 0; + } + lVar32 = (long)iVar4; + uVar6 = (uint)((iVar3 + -4) - iVar4) >> 2; + lVar31 = lVar32 * 4; + do { + if (0 < iVar3 + -7) { + puVar13 = (undefined8 *)(param_1 + 0x10); + puVar18 = (undefined8 *)(param_3 + 0x10); + puVar16 = (undefined8 *)(param_5 + 0x10); + puVar25 = param_7; + do { + puVar27 = puVar13 + -2; + puVar23 = puVar18 + -2; + puVar20 = puVar16 + -2; + puVar7 = puVar13 + 1; + uVar34 = *puVar13; + puVar8 = puVar13 + -1; + puVar13 = puVar13 + 4; + puVar9 = puVar18 + -1; + puVar11 = puVar16 + -1; + puVar10 = puVar18 + 1; + uVar42 = *puVar18; + puVar18 = puVar18 + 4; + puVar12 = puVar16 + 1; + uVar43 = *puVar16; + puVar16 = puVar16 + 4; + iVar38 = (int)*puVar27; + iVar39 = (int)((ulong)*puVar27 >> 0x20); + iVar40 = (int)*puVar8; + iVar41 = (int)((ulong)*puVar8 >> 0x20); + iVar33 = (int)uVar34; + iVar35 = (int)((ulong)uVar34 >> 0x20); + iVar36 = (int)*puVar7; + iVar37 = (int)((ulong)*puVar7 >> 0x20); + *puVar25 = CONCAT17(-((int)((ulong)*puVar10 >> 0x20) <= iVar37) & + ~-((int)((ulong)*puVar12 >> 0x20) < iVar37), + CONCAT16(-((int)*puVar10 <= iVar36) & ~-((int)*puVar12 < iVar36), + CONCAT15(-((int)((ulong)uVar42 >> 0x20) <= iVar35) & + ~-((int)((ulong)uVar43 >> 0x20) < iVar35), + CONCAT14(-((int)uVar42 <= iVar33) & + ~-((int)uVar43 < iVar33), + CONCAT13(-((int)((ulong)*puVar9 >> 0x20) <= + iVar41) & + ~-((int)((ulong)*puVar11 >> 0x20) + < iVar41), + CONCAT12(-((int)*puVar9 <= iVar40) + & ~-((int)*puVar11 < + iVar40), + CONCAT11(-((int)((ulong)* + puVar23 >> 0x20) <= iVar39) & + ~-((int)((ulong)*puVar20 >> 0x20) < iVar39), + -((int)*puVar23 <= iVar38) & + ~-((int)*puVar20 < iVar38)))))))); + puVar25 = puVar25 + 1; + } while (puVar13 != (undefined8 *)(param_1 + (ulong)uVar5 * 0x20 + 0x30)); + } + iVar33 = iVar4; + if (iVar4 < iVar3 + -3) { + piVar17 = (int *)(param_1 + lVar31); + piVar21 = (int *)(param_5 + lVar31); + pcVar14 = (char *)((long)param_7 + lVar32); + piVar19 = (int *)(param_3 + lVar31); + do { + cVar28 = '\0'; + cVar26 = '\0'; + cVar24 = '\0'; + cVar22 = '\0'; + if (*piVar19 <= *piVar17) { + cVar28 = -(*piVar17 <= *piVar21); + } + if (piVar19[1] <= piVar17[1]) { + cVar26 = -(piVar17[1] <= piVar21[1]); + } + *pcVar14 = cVar28; + pcVar14[1] = cVar26; + if (piVar19[2] <= piVar17[2]) { + cVar24 = -(piVar17[2] <= piVar21[2]); + } + piVar1 = piVar17 + 3; + piVar17 = piVar17 + 4; + if (piVar19[3] <= *piVar1) { + cVar22 = -(*piVar1 <= piVar21[3]); + } + pcVar14[2] = cVar24; + pcVar2 = pcVar14 + 4; + piVar21 = piVar21 + 4; + pcVar14[3] = cVar22; + pcVar14 = pcVar2; + piVar19 = piVar19 + 4; + iVar33 = iVar4 + 4 + uVar6 * 4; + } while (pcVar2 != (char *)((long)param_7 + lVar32 + 4 + (ulong)uVar6 * 4)); + } + if (iVar33 < iVar3) { + lVar29 = (long)iVar33 * 4; + lVar15 = 0; + do { + iVar35 = *(int *)(param_1 + lVar29 + lVar15 * 4); + cVar28 = '\0'; + if (*(int *)(param_3 + lVar29 + lVar15 * 4) <= iVar35) { + cVar28 = -(iVar35 <= *(int *)(param_5 + lVar29 + lVar15 * 4)); + } + *(char *)((long)param_7 + lVar15 + iVar33) = cVar28; + lVar15 = lVar15 + 1; + } while (lVar15 != (ulong)(uint)((iVar3 + -1) - iVar33) + 1); + } + iVar30 = iVar30 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_3 = param_3 + (param_4 & 0xfffffffffffffffc); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + param_7 = (undefined8 *)((long)param_7 + param_8); + } while (iVar30 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023c61c (644 bytes) name=FUN_0023c61c + +void FUN_0023c61c(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + undefined8 *param_7,long param_8,int *param_9) + +{ + undefined8 *puVar1; + char *pcVar2; + int iVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined8 *puVar7; + char *pcVar8; + long lVar9; + undefined8 *puVar10; + float *pfVar11; + int iVar12; + undefined8 *puVar13; + float *pfVar14; + undefined8 *puVar15; + float *pfVar16; + int iVar17; + long lVar18; + long lVar19; + long lVar20; + char cVar21; + char cVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + + iVar17 = param_9[1]; + iVar3 = *param_9; + if (iVar17 != 0) { + uVar5 = iVar3 - 8U >> 3; + iVar4 = (uVar5 + 1) * 8; + if (iVar3 + -7 < 1) { + iVar4 = 0; + } + uVar6 = (uint)((iVar3 + -4) - iVar4) >> 2; + lVar19 = (long)iVar4; + lVar18 = lVar19 * 4; + do { + if (0 < iVar3 + -7) { + puVar7 = (undefined8 *)(param_1 + 0x10); + puVar10 = (undefined8 *)(param_5 + 0x10); + puVar13 = (undefined8 *)(param_3 + 0x10); + puVar15 = param_7; + do { + puVar1 = puVar7 + 4; + fVar23 = (float)*puVar7; + fVar24 = (float)((ulong)*puVar7 >> 0x20); + fVar25 = (float)puVar7[1]; + fVar26 = (float)((ulong)puVar7[1] >> 0x20); + fVar27 = (float)puVar7[-2]; + fVar28 = (float)((ulong)puVar7[-2] >> 0x20); + fVar29 = (float)puVar7[-1]; + fVar30 = (float)((ulong)puVar7[-1] >> 0x20); + *puVar15 = CONCAT17(-(fVar26 <= (float)((ulong)puVar10[1] >> 0x20)) & + -((float)((ulong)puVar13[1] >> 0x20) <= fVar26), + CONCAT16(-(fVar25 <= (float)puVar10[1]) & + -((float)puVar13[1] <= fVar25), + CONCAT15(-(fVar24 <= (float)((ulong)*puVar10 >> 0x20)) & + -((float)((ulong)*puVar13 >> 0x20) <= fVar24), + CONCAT14(-(fVar23 <= (float)*puVar10) & + -((float)*puVar13 <= fVar23), + CONCAT13(-(fVar30 <= + (float)((ulong)puVar10[-1] >> + 0x20)) & + -((float)((ulong)puVar13[-1] >> + 0x20) <= fVar30), + CONCAT12(-(fVar29 <= + (float)puVar10[-1]) & + -((float)puVar13[-1] <= + fVar29),CONCAT11(-( + fVar28 <= (float)((ulong)puVar10[-2] >> 0x20)) & + -((float)((ulong)puVar13[-2] >> 0x20) <= fVar28), + -(fVar27 <= (float)puVar10[-2]) & + -((float)puVar13[-2] <= fVar27)))))))); + puVar7 = puVar1; + puVar10 = puVar10 + 4; + puVar13 = puVar13 + 4; + puVar15 = puVar15 + 1; + } while (puVar1 != (undefined8 *)(param_1 + (ulong)uVar5 * 0x20 + 0x30)); + } + iVar12 = iVar4; + if (iVar4 < iVar3 + -3) { + pfVar14 = (float *)(param_3 + lVar18); + pfVar11 = (float *)(param_1 + lVar18); + pfVar16 = (float *)(param_5 + lVar18); + pcVar8 = (char *)((long)param_7 + lVar19); + do { + cVar21 = '\0'; + if (*pfVar14 <= *pfVar11) { + cVar21 = -(*pfVar11 <= *pfVar16); + } + cVar22 = '\0'; + if (pfVar14[1] <= pfVar11[1]) { + cVar22 = -(pfVar11[1] <= pfVar16[1]); + } + *pcVar8 = cVar21; + cVar21 = '\0'; + pcVar8[1] = cVar22; + if (pfVar14[2] <= pfVar11[2]) { + cVar21 = -(pfVar11[2] <= pfVar16[2]); + } + cVar22 = '\0'; + if (pfVar14[3] <= pfVar11[3]) { + cVar22 = -(pfVar11[3] <= pfVar16[3]); + } + pcVar8[2] = cVar21; + pcVar2 = pcVar8 + 4; + pfVar14 = pfVar14 + 4; + pcVar8[3] = cVar22; + pfVar11 = pfVar11 + 4; + pfVar16 = pfVar16 + 4; + pcVar8 = pcVar2; + iVar12 = iVar4 + 4 + uVar6 * 4; + } while (pcVar2 != (char *)((long)param_7 + lVar19 + 4 + (ulong)uVar6 * 4)); + } + if (iVar12 < iVar3) { + lVar20 = (long)iVar12 * 4; + lVar9 = 0; + do { + fVar23 = *(float *)(param_1 + lVar20 + lVar9 * 4); + cVar21 = '\0'; + if (*(float *)(param_3 + lVar20 + lVar9 * 4) <= fVar23) { + cVar21 = -(fVar23 <= *(float *)(param_5 + lVar20 + lVar9 * 4)); + } + *(char *)((long)param_7 + lVar9 + iVar12) = cVar21; + lVar9 = lVar9 + 1; + } while (lVar9 != (ulong)(uint)((iVar3 + -1) - iVar12) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_3 = param_3 + (param_4 & 0xfffffffffffffffc); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + param_7 = (undefined8 *)((long)param_7 + param_8); + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 0023c8a0 (108 bytes) name=FUN_0023c8a0 + +void FUN_0023c8a0(undefined8 param_1,undefined8 param_2,long param_3,ulong param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + long lVar2; + int iVar3; + double dVar4; + double dVar5; + double dVar6; + + iVar1 = *param_7; + dVar6 = *param_8; + iVar3 = param_7[1] + -1; + if (param_7[1] != 0) { + do { + lVar2 = 0; + if (0 < iVar1) { + do { + dVar4 = 0.0; + dVar5 = *(double *)(param_3 + lVar2 * 8); + if (dVar5 != 0.0) { + dVar4 = dVar6 / dVar5; + } + *(double *)(param_5 + lVar2 * 8) = dVar4; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < iVar1); + } + iVar3 = iVar3 + -1; + param_3 = param_3 + (param_4 & 0xfffffffffffffff8); + param_5 = param_5 + (param_6 & 0xfffffffffffffff8); + } while (iVar3 != -1); + } + return; +} + + +================================================================== + +### FUNC 0023c90c name=FUN_0023c90c DECOMPILE FAILED + +### FUNC 0023e05c (5716 bytes) name=FUN_0023e05c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0023e05c(byte *param_1,ulong param_2,byte *param_3,ulong param_4,byte *param_5,long param_6 + ,int *param_7,int *param_8) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + ushort uVar10; + ushort uVar11; + short sVar12; + short sVar13; + int iVar14; + int iVar15; + int iVar16; + uint uVar17; + ulong uVar18; + bool bVar19; + int iVar20; + undefined8 *puVar21; + byte *pbVar22; + byte *pbVar23; + int iVar24; + uint uVar25; + ushort *puVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + int iVar30; + ushort *puVar31; + byte bVar32; + long lVar33; + uint uVar34; + long lVar35; + long lVar36; + long lVar37; + byte bVar38; + long lVar39; + long lVar40; + long lVar41; + uint uVar42; + long lVar43; + long lVar44; + ulong uVar45; + long lVar46; + uint uVar47; + long lVar48; + int iVar49; + int iVar50; + undefined8 uVar51; + uint5 uVar52; + undefined8 uVar53; + ulong uVar54; + undefined8 uVar55; + uint3 uVar56; + undefined8 uVar57; + undefined8 uVar58; + undefined8 uVar59; + undefined8 uVar60; + long lVar61; + undefined8 uVar62; + long lVar63; + byte bVar64; + byte bVar65; + long lVar66; + long lVar67; + long lVar68; + long lVar69; + long lVar70; + long lVar71; + long lVar72; + undefined8 local_10; + undefined8 local_8; + + iVar50 = *param_8; + iVar9 = *param_7; + param_2 = param_2 >> 1; + iVar49 = param_7[1]; + param_4 = param_4 >> 1; + if (iVar50 - 2U < 2) { + bVar19 = iVar50 != 2; + iVar50 = 4; + if (bVar19) { + iVar50 = 1; + } + pbVar28 = param_3; + uVar45 = param_4; + if (iVar50 == 1) { +LAB_0023eb90: + bVar38 = 0; + bVar32 = 0; + } + else { +LAB_0023e1ac: + bVar38 = 0xff; + bVar32 = 0xff; + } + if (iVar49 != 0) { + uVar1 = iVar9 - 8U >> 3; + iVar16 = iVar9 + -3; + iVar3 = iVar9 + -7; + iVar14 = (uVar1 + 1) * 8; + lVar63 = ((ulong)uVar1 + 1) * 0x10; + if (iVar50 == 1) goto LAB_0023e9d8; + do { + if (iVar50 == 4) { + if (iVar3 < 1) goto LAB_0023eb9c; + pbVar23 = pbVar28; + pbVar27 = param_5; + pbVar29 = param_1; + do { + pbVar22 = pbVar23 + 0x10; + uVar57 = *(undefined8 *)(pbVar23 + 8); + uVar55 = *(undefined8 *)pbVar23; + uVar53 = *(undefined8 *)(pbVar29 + 8); + uVar51 = *(undefined8 *)pbVar29; + *(ulong *)pbVar27 = + CONCAT17(-((ushort)((ulong)uVar57 >> 0x30) <= (ushort)((ulong)uVar53 >> 0x30)), + CONCAT16(-((ushort)((ulong)uVar57 >> 0x20) <= + (ushort)((ulong)uVar53 >> 0x20)), + CONCAT15(-((ushort)((ulong)uVar57 >> 0x10) <= + (ushort)((ulong)uVar53 >> 0x10)), + CONCAT14(-((ushort)uVar57 <= (ushort)uVar53), + CONCAT13(-((ushort)((ulong)uVar55 >> 0x30) <= + (ushort)((ulong)uVar51 >> 0x30)), + CONCAT12(-((ushort)((ulong)uVar55 >> + 0x20) <= + (ushort)((ulong)uVar51 >> + 0x20)), + CONCAT11(-((ushort)((ulong) + uVar55 >> 0x10) <= (ushort)((ulong)uVar51 >> 0x10) + ),-((ushort)uVar55 <= (ushort)uVar51)))))))); + pbVar23 = pbVar22; + pbVar27 = pbVar27 + 8; + pbVar29 = pbVar29 + 0x10; + iVar20 = iVar14; + } while (pbVar22 != pbVar28 + lVar63); + } + else if (iVar50 == 0) { + if (iVar3 < 1) { + iVar20 = 0; + } + else { + pbVar23 = pbVar28; + pbVar27 = param_5; + pbVar29 = param_1; + do { + pbVar22 = pbVar23 + 0x10; + uVar53 = *(undefined8 *)(pbVar23 + 8); + uVar51 = *(undefined8 *)pbVar23; + uVar57 = *(undefined8 *)(pbVar29 + 8); + uVar55 = *(undefined8 *)pbVar29; + *(ulong *)pbVar27 = + CONCAT17(-((short)((ulong)uVar53 >> 0x30) == (short)((ulong)uVar57 >> 0x30)), + CONCAT16(-((short)((ulong)uVar53 >> 0x20) == + (short)((ulong)uVar57 >> 0x20)), + CONCAT15(-((short)((ulong)uVar53 >> 0x10) == + (short)((ulong)uVar57 >> 0x10)), + CONCAT14(-((short)uVar53 == (short)uVar57), + CONCAT13(-((short)((ulong)uVar51 >> 0x30) == + (short)((ulong)uVar55 >> 0x30)), + CONCAT12(-((short)((ulong)uVar51 >> + 0x20) == + (short)((ulong)uVar55 >> + 0x20)), + CONCAT11(-((short)((ulong) + uVar51 >> 0x10) == (short)((ulong)uVar55 >> 0x10)) + ,-((short)uVar51 == (short)uVar55)))))))); + pbVar23 = pbVar22; + pbVar27 = pbVar27 + 8; + pbVar29 = pbVar29 + 0x10; + iVar20 = iVar14; + } while (pbVar22 != pbVar28 + lVar63); + } + } + else { + iVar20 = 0; + if ((iVar50 == 5) && (0 < iVar3)) { + pbVar23 = pbVar28; + pbVar27 = param_5; + pbVar29 = param_1; + do { + pbVar22 = pbVar23 + 0x10; + uVar53 = *(undefined8 *)(pbVar23 + 8); + uVar51 = *(undefined8 *)pbVar23; + uVar57 = *(undefined8 *)(pbVar29 + 8); + uVar55 = *(undefined8 *)pbVar29; + *(ulong *)pbVar27 = + CONCAT17(~-((short)((ulong)uVar53 >> 0x30) == (short)((ulong)uVar57 >> 0x30)), + CONCAT16(~-((short)((ulong)uVar53 >> 0x20) == + (short)((ulong)uVar57 >> 0x20)), + CONCAT15(~-((short)((ulong)uVar53 >> 0x10) == + (short)((ulong)uVar57 >> 0x10)), + CONCAT14(~-((short)uVar53 == (short)uVar57), + CONCAT13(~-((short)((ulong)uVar51 >> 0x30) == + (short)((ulong)uVar55 >> 0x30)), + CONCAT12(~-((short)((ulong)uVar51 >> + 0x20) == + (short)((ulong)uVar55 >> + 0x20)), + CONCAT11(~-((short)((ulong) + uVar51 >> 0x10) == (short)((ulong)uVar55 >> 0x10)) + ,~-((short)uVar51 == (short)uVar55)))))))); + pbVar23 = pbVar22; + pbVar27 = pbVar27 + 8; + pbVar29 = pbVar29 + 0x10; + iVar20 = iVar14; + } while (pbVar22 != pbVar28 + lVar63); + } + } +LAB_0023e244: + if (iVar20 < iVar16) { + uVar47 = (iVar9 + -4) - iVar20; + lVar33 = (long)iVar20; + uVar2 = uVar47 >> 2; + pbVar23 = param_5 + lVar33; + uVar1 = uVar2 + 1; + lVar67 = lVar33 + (ulong)uVar1 * 4; + lVar35 = lVar67 * 2; + puVar31 = (ushort *)(pbVar28 + lVar33 * 2); + puVar26 = (ushort *)(param_1 + lVar33 * 2); + if ((pbVar23 < pbVar28 + lVar35 && puVar31 < param_5 + lVar67 || + pbVar23 < param_1 + lVar35 && puVar26 < param_5 + lVar67) || (uVar1 < 4)) { + do { + pbVar27 = pbVar23 + 4; + uVar10 = *puVar26; + uVar11 = *puVar31; + pbVar23[1] = -(puVar26[1] < puVar31[1]) ^ bVar32; + *pbVar23 = -(uVar10 < uVar11) ^ bVar32; + uVar10 = puVar26[2]; + uVar11 = puVar31[2]; + pbVar23[3] = -(puVar26[3] < puVar31[3]) ^ bVar32; + pbVar23[2] = -(uVar10 < uVar11) ^ bVar32; + puVar26 = puVar26 + 4; + pbVar23 = pbVar27; + puVar31 = puVar31 + 4; + } while (pbVar27 != param_5 + lVar33 + 4 + (ulong)uVar2 * 4); + } + else { + uVar42 = (uVar2 - 3 >> 2) + 1; + iVar24 = iVar20; + if (0xb < uVar47) { + uVar47 = 0; + do { + uVar47 = uVar47 + 1; + uVar62 = *(undefined8 *)(puVar26 + 4); + uVar60 = *(undefined8 *)puVar26; + uVar57 = *(undefined8 *)(puVar31 + 4); + uVar55 = *(undefined8 *)puVar31; + uVar59 = *(undefined8 *)(puVar26 + 0xc); + uVar58 = *(undefined8 *)(puVar26 + 8); + uVar53 = *(undefined8 *)(puVar31 + 0xc); + uVar51 = *(undefined8 *)(puVar31 + 8); + uVar56 = CONCAT12(-((ushort)((ulong)uVar62 >> 0x10) < + (ushort)((ulong)uVar57 >> 0x10)), + (ushort)(-((ushort)uVar62 < (ushort)uVar57) & 1)) & 0x1ffff; + uVar52 = CONCAT14(-((ushort)((ulong)uVar59 >> 0x20) < + (ushort)((ulong)uVar53 >> 0x20)), + (uint)(CONCAT12(-((ushort)((ulong)uVar59 >> 0x10) < + (ushort)((ulong)uVar53 >> 0x10)), + (ushort)(-((ushort)uVar59 < (ushort)uVar53) & 1)) + & 0x1ffff)) & 0x1ffffffff; + *(ulong *)(pbVar23 + 8) = + CONCAT17(-(-((ushort)((ulong)uVar59 >> 0x30) < (ushort)((ulong)uVar53 >> 0x30)) + & 1U) ^ bVar32, + CONCAT16(-(char)(uVar52 >> 0x20) ^ bVar32, + CONCAT15(-(char)(uVar52 >> 0x10) ^ bVar32, + CONCAT14(-(char)uVar52 ^ bVar32, + CONCAT13(-(-((ushort)((ulong)uVar58 >> 0x30 + ) < + (ushort)((ulong)uVar51 >> 0x30) + ) & 1U) ^ bVar32, + CONCAT12(-(-((ushort)((ulong) + uVar58 >> 0x20) < (ushort)((ulong)uVar51 >> 0x20)) + & 1U) ^ bVar32, + CONCAT11(-(-((ushort)((ulong)uVar58 >> 0x10) < + (ushort)((ulong)uVar51 >> 0x10)) & 1U) + ^ bVar32,-(-((ushort)uVar58 < + (ushort)uVar51) & 1U) ^ + bVar32))))))); + *(ulong *)pbVar23 = + CONCAT17(-(-((ushort)((ulong)uVar62 >> 0x30) < (ushort)((ulong)uVar57 >> 0x30)) + & 1U) ^ bVar32, + CONCAT16(-(-((ushort)((ulong)uVar62 >> 0x20) < + (ushort)((ulong)uVar57 >> 0x20)) & 1U) ^ bVar32, + CONCAT15(-(char)(uVar56 >> 0x10) ^ bVar32, + CONCAT14(-(char)uVar56 ^ bVar32, + CONCAT13(-(-((ushort)((ulong)uVar60 >> 0x30 + ) < + (ushort)((ulong)uVar55 >> 0x30) + ) & 1U) ^ bVar32, + CONCAT12(-(-((ushort)((ulong) + uVar60 >> 0x20) < (ushort)((ulong)uVar55 >> 0x20)) + & 1U) ^ bVar32, + CONCAT11(-(-((ushort)((ulong)uVar60 >> 0x10) < + (ushort)((ulong)uVar55 >> 0x10)) & 1U) + ^ bVar32,-(-((ushort)uVar60 < + (ushort)uVar55) & 1U) ^ + bVar32))))))); + puVar26 = puVar26 + 0x10; + pbVar23 = pbVar23 + 0x10; + puVar31 = puVar31 + 0x10; + } while (uVar47 < uVar42); + iVar24 = iVar20 + uVar42 * 0x10; + if (uVar1 == uVar42 * 4) goto LAB_0023e4e8; + } + lVar33 = (long)iVar24; + lVar67 = lVar33 * 2; + uVar10 = *(ushort *)(pbVar28 + lVar67 + 2); + uVar11 = *(ushort *)(param_1 + lVar67 + 2); + param_5[lVar33] = + -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)) ^ bVar32; + param_5[lVar33 + 1] = -(uVar11 < uVar10) ^ bVar32; + uVar10 = *(ushort *)(pbVar28 + lVar67 + 4); + uVar11 = *(ushort *)(param_1 + lVar67 + 4); + param_5[lVar33 + 3] = + -(*(ushort *)(param_1 + lVar67 + 6) < *(ushort *)(pbVar28 + lVar67 + 6)) ^ bVar32; + param_5[lVar33 + 2] = -(uVar11 < uVar10) ^ bVar32; + if (iVar24 + 4 < iVar16) { + lVar33 = (long)(iVar24 + 4); + lVar67 = lVar33 * 2; + uVar10 = *(ushort *)(pbVar28 + lVar67 + 2); + uVar11 = *(ushort *)(param_1 + lVar67 + 2); + param_5[lVar33] = + -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)) ^ bVar32; + param_5[lVar33 + 1] = -(uVar11 < uVar10) ^ bVar32; + uVar10 = *(ushort *)(pbVar28 + lVar67 + 4); + uVar11 = *(ushort *)(param_1 + lVar67 + 4); + param_5[lVar33 + 3] = + -(*(ushort *)(param_1 + lVar67 + 6) < *(ushort *)(pbVar28 + lVar67 + 6)) ^ bVar32 + ; + param_5[lVar33 + 2] = -(uVar11 < uVar10) ^ bVar32; + if (iVar24 + 8 < iVar16) { + lVar67 = (long)(iVar24 + 8); + lVar33 = lVar67 * 2; + uVar10 = *(ushort *)(pbVar28 + lVar33 + 2); + uVar11 = *(ushort *)(param_1 + lVar33 + 2); + param_5[lVar67] = + -(*(ushort *)(param_1 + lVar33) < *(ushort *)(pbVar28 + lVar33)) ^ bVar32; + param_5[lVar67 + 1] = -(uVar11 < uVar10) ^ bVar32; + uVar10 = *(ushort *)(param_1 + lVar33 + 4); + uVar11 = *(ushort *)(pbVar28 + lVar33 + 4); + param_5[lVar67 + 3] = + -(*(ushort *)(param_1 + lVar33 + 6) < *(ushort *)(pbVar28 + lVar33 + 6)) ^ + bVar32; + param_5[lVar67 + 2] = -(uVar10 < uVar11) ^ bVar32; + } + } + } +LAB_0023e4e8: + iVar20 = iVar20 + 4 + uVar2 * 4; + } + if (iVar20 < iVar9) { + lVar33 = (long)iVar20; + uVar1 = iVar9 - iVar20; + lVar35 = (lVar33 + (ulong)uVar1) * 2; + lVar67 = lVar33 * 2; + pbVar23 = param_5 + lVar33; + puVar31 = (ushort *)(pbVar28 + lVar67); + puVar26 = (ushort *)(param_1 + lVar67); + if ((pbVar23 < pbVar28 + lVar35 && puVar31 < param_5 + lVar33 + (ulong)uVar1 || + pbVar23 < param_1 + lVar35 && puVar26 < param_5 + lVar33 + (ulong)uVar1) || + (uVar1 < 0x12)) { + lVar67 = 0; + do { + pbVar23[lVar67] = bVar38 ^ -(puVar26[lVar67] < puVar31[lVar67]); + lVar67 = lVar67 + 1; + } while (lVar67 != (ulong)(uint)((iVar9 + -1) - iVar20) + 1); + } + else { + uVar2 = -((uint)((ulong)puVar31 >> 1) & 7) & 7; + if (uVar1 < uVar2) { + uVar2 = uVar1; + } + iVar24 = iVar20; + if (uVar2 != 0) { + iVar24 = iVar20 + 1; + *pbVar23 = bVar38 ^ -(*puVar26 < *puVar31); + if (uVar2 != 1) { + lVar35 = (long)iVar24; + iVar24 = iVar20 + 2; + lVar37 = lVar35 * 2; + param_5[lVar35] = + bVar38 ^ -(*(ushort *)(param_1 + lVar37) < *(ushort *)(pbVar28 + lVar37)); + if (uVar2 != 2) { + lVar35 = (long)iVar24; + iVar24 = iVar20 + 3; + lVar37 = lVar35 * 2; + param_5[lVar35] = + bVar38 ^ -(*(ushort *)(param_1 + lVar37) < *(ushort *)(pbVar28 + lVar37)); + if (uVar2 != 3) { + lVar35 = (long)iVar24; + iVar24 = iVar20 + 4; + lVar37 = lVar35 * 2; + param_5[lVar35] = + bVar38 ^ -(*(ushort *)(param_1 + lVar37) < *(ushort *)(pbVar28 + lVar37)); + if (uVar2 != 4) { + lVar35 = (long)iVar24; + iVar24 = iVar20 + 5; + lVar37 = lVar35 * 2; + param_5[lVar35] = + bVar38 ^ -(*(ushort *)(param_1 + lVar37) < *(ushort *)(pbVar28 + lVar37)) + ; + if (uVar2 != 5) { + lVar35 = (long)iVar24; + iVar24 = iVar20 + 6; + lVar37 = lVar35 * 2; + param_5[lVar35] = + bVar38 ^ -(*(ushort *)(param_1 + lVar37) < + *(ushort *)(pbVar28 + lVar37)); + if (uVar2 == 7) { + lVar35 = (long)iVar24; + iVar24 = iVar20 + 7; + lVar37 = lVar35 * 2; + param_5[lVar35] = + bVar38 ^ -(*(ushort *)(param_1 + lVar37) < + *(ushort *)(pbVar28 + lVar37)); + } + } + } + } + } + } + } + uVar47 = ((uVar1 - uVar2) - 0x10 >> 4) + 1; + iVar20 = uVar47 * 0x10; + if (0xe < (uVar1 - 1) - uVar2) { + lVar67 = lVar67 + (ulong)uVar2 * 2; + uVar42 = 0; + pbVar23 = pbVar28 + lVar67; + pbVar27 = param_5 + (ulong)uVar2 + lVar33; + pbVar29 = param_1 + lVar67; + do { + uVar42 = uVar42 + 1; + uVar62 = *(undefined8 *)(pbVar29 + 8); + uVar60 = *(undefined8 *)pbVar29; + uVar59 = *(undefined8 *)(pbVar23 + 8); + uVar58 = *(undefined8 *)pbVar23; + uVar57 = *(undefined8 *)(pbVar29 + 0x18); + uVar55 = *(undefined8 *)(pbVar29 + 0x10); + uVar53 = *(undefined8 *)(pbVar23 + 0x18); + uVar51 = *(undefined8 *)(pbVar23 + 0x10); + bVar65 = -((ushort)((ulong)uVar62 >> 0x30) < (ushort)((ulong)uVar59 >> 0x30)); + uVar56 = CONCAT12(-((ushort)((ulong)uVar62 >> 0x10) < + (ushort)((ulong)uVar59 >> 0x10)), + (ushort)(-((ushort)uVar62 < (ushort)uVar59) & 1)) & 0x1ffff; + bVar64 = -((ushort)uVar55 < (ushort)uVar51); + uVar52 = CONCAT14(-((ushort)((ulong)uVar57 >> 0x20) < + (ushort)((ulong)uVar53 >> 0x20)), + (uint)(CONCAT12(-((ushort)((ulong)uVar57 >> 0x10) < + (ushort)((ulong)uVar53 >> 0x10)), + (ushort)(-((ushort)uVar57 < (ushort)uVar53) & 1)) + & 0x1ffff)) & 0x1ffffffff; + uVar18 = (ulong)CONCAT15(bVar65,CONCAT14(-((ushort)((ulong)uVar62 >> 0x20) < + (ushort)((ulong)uVar59 >> 0x20)), + CONCAT13((char)(uVar56 >> 0x10), + CONCAT12((char)uVar56, + CONCAT11(-((ushort)(( + ulong)uVar60 >> 0x30) < + (ushort)((ulong)uVar58 >> 0x30)), + -((ushort)((ulong)uVar60 >> 0x20) < + (ushort)((ulong)uVar58 >> 0x20))))))) & + 0x101ffff0101; + uVar54 = CONCAT17(-((ushort)((ulong)uVar57 >> 0x30) < + (ushort)((ulong)uVar53 >> 0x30)), + CONCAT16((char)(uVar52 >> 0x20), + CONCAT15((char)(uVar52 >> 0x10), + CONCAT14((char)uVar52, + CONCAT13(-((ushort)((ulong)uVar55 >> + 0x30) < + (ushort)((ulong)uVar51 >> + 0x30)), + CONCAT12(-((ushort)((ulong) + uVar55 >> 0x20) < (ushort)((ulong)uVar51 >> 0x20)) + ,CONCAT11(-((ushort)((ulong)uVar55 >> 0x10) < + (ushort)((ulong)uVar51 >> 0x10)),bVar64 + ))))))) & 0x1ffffff01010101; + *(ulong *)(pbVar27 + 8) = + CONCAT17(-(char)(uVar54 >> 0x38) ^ bVar38, + CONCAT16(-(char)(uVar54 >> 0x30) ^ bVar38, + CONCAT15(-(char)(uVar54 >> 0x28) ^ bVar38, + CONCAT14(-(char)(uVar54 >> 0x20) ^ bVar38, + CONCAT13(-(char)(uVar54 >> 0x18) ^ bVar38, + CONCAT12(-(char)(uVar54 >> 0x10) ^ + bVar38,CONCAT11(-(char)( + uVar54 >> 8) ^ bVar38,-(bVar64 & 1) ^ bVar38)))))) + ); + *(ulong *)pbVar27 = + CONCAT17(-(bVar65 & 1) ^ bVar38, + CONCAT16(-(char)(uVar18 >> 0x20) ^ bVar38, + CONCAT15(-(char)(uVar18 >> 0x18) ^ bVar38, + CONCAT14(-(char)(uVar18 >> 0x10) ^ bVar38, + CONCAT13(-(char)(uVar18 >> 8) ^ bVar38, + CONCAT12(-(char)uVar18 ^ bVar38, + CONCAT11(-(-((ushort)(( + ulong)uVar60 >> 0x10) < + (ushort)((ulong)uVar58 >> 0x10)) & 1U) ^ bVar38, + -(-((ushort)uVar60 < (ushort)uVar58) & 1U) ^ + bVar38))))))); + pbVar23 = pbVar23 + 0x20; + pbVar27 = pbVar27 + 0x10; + pbVar29 = pbVar29 + 0x20; + } while (uVar42 < uVar47); + iVar24 = iVar24 + iVar20; + if (iVar20 == uVar1 - uVar2) goto LAB_0023e9bc; + } + iVar20 = iVar24 + 1; + lVar67 = (long)iVar24 * 2; + param_5[iVar24] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar4 = iVar24 + 2; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)); + if (iVar4 < iVar9) { + iVar20 = iVar24 + 3; + lVar67 = (long)iVar4 * 2; + param_5[iVar4] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar4 = iVar24 + 4; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)); + if (iVar4 < iVar9) { + iVar20 = iVar24 + 5; + lVar67 = (long)iVar4 * 2; + param_5[iVar4] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar4 = iVar24 + 6; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < *(ushort *)(pbVar28 + lVar67)) + ; + if (iVar4 < iVar9) { + iVar20 = iVar24 + 7; + lVar67 = (long)iVar4 * 2; + param_5[iVar4] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar4 = iVar24 + 8; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar4 < iVar9) { + iVar20 = iVar24 + 9; + lVar67 = (long)iVar4 * 2; + param_5[iVar4] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar4 = iVar24 + 10; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar4 < iVar9) { + iVar20 = iVar24 + 0xb; + lVar67 = (long)iVar4 * 2; + param_5[iVar4] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar4 = iVar24 + 0xc; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar4 < iVar9) { + iVar20 = iVar24 + 0xd; + lVar67 = (long)iVar4 * 2; + param_5[iVar4] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar20 < iVar9) { + iVar24 = iVar24 + 0xe; + lVar67 = (long)iVar20 * 2; + param_5[iVar20] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + if (iVar24 < iVar9) { + lVar67 = (long)iVar24 * 2; + param_5[iVar24] = + bVar38 ^ -(*(ushort *)(param_1 + lVar67) < + *(ushort *)(pbVar28 + lVar67)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0023e9bc: + iVar49 = iVar49 + -1; + pbVar28 = pbVar28 + uVar45 * 2; + param_1 = param_1 + param_2 * 2; + param_5 = param_5 + param_6; + if (iVar49 == 0) { + return; + } + } while (iVar50 != 1); +LAB_0023e9d8: + if (iVar3 < 1) { +LAB_0023eb9c: + iVar20 = 0; + } + else { + pbVar23 = pbVar28; + pbVar27 = param_5; + pbVar29 = param_1; + do { + pbVar22 = pbVar23 + 0x10; + uVar53 = *(undefined8 *)(pbVar23 + 8); + uVar51 = *(undefined8 *)pbVar23; + uVar57 = *(undefined8 *)(pbVar29 + 8); + uVar55 = *(undefined8 *)pbVar29; + *(ulong *)pbVar27 = + CONCAT17(-((ushort)((ulong)uVar57 >> 0x30) < (ushort)((ulong)uVar53 >> 0x30)), + CONCAT16(-((ushort)((ulong)uVar57 >> 0x20) < (ushort)((ulong)uVar53 >> 0x20) + ),CONCAT15(-((ushort)((ulong)uVar57 >> 0x10) < + (ushort)((ulong)uVar53 >> 0x10)), + CONCAT14(-((ushort)uVar57 < (ushort)uVar53), + CONCAT13(-((ushort)((ulong)uVar55 >> 0x30) < + (ushort)((ulong)uVar51 >> 0x30)), + CONCAT12(-((ushort)((ulong)uVar55 >> + 0x20) < + (ushort)((ulong)uVar51 >> + 0x20)), + CONCAT11(-((ushort)((ulong) + uVar55 >> 0x10) < (ushort)((ulong)uVar51 >> 0x10)) + ,-((ushort)uVar55 < (ushort)uVar51)))))))); + pbVar23 = pbVar22; + pbVar27 = pbVar27 + 8; + pbVar29 = pbVar29 + 0x10; + iVar20 = iVar14; + } while (pbVar22 != pbVar28 + lVar63); + } + goto LAB_0023e244; + } + } + else { + if (iVar50 == 5 || iVar50 == 0) { + if (iVar50 == 4 || iVar50 == 1) goto LAB_0023e1a4; + } + else { + if (iVar50 == 4 || iVar50 == 1) { +LAB_0023e1a4: + pbVar28 = param_1; + param_1 = param_3; + uVar45 = param_2; + param_2 = param_4; + if (iVar50 == 1) goto LAB_0023eb90; + goto LAB_0023e1ac; + } + local_10 = 0; + local_8 = 0; + puVar21 = (undefined8 *)cv::String::allocate((String *)&local_10,0x44); + uVar62 = _LAB_00460708; + uVar60 = DAT_00460700; + uVar59 = DAT_004606f8; + uVar58 = DAT_004606f0; + uVar57 = DAT_004606e8; + uVar55 = DAT_004606e0; + uVar53 = DAT_004606d8; + uVar51 = DAT_004606d0; + *(undefined4 *)(puVar21 + 8) = DAT_00460710; + *puVar21 = uVar51; + puVar21[1] = uVar53; + puVar21[2] = uVar55; + puVar21[3] = uVar57; + puVar21[4] = uVar58; + puVar21[5] = uVar59; + puVar21[6] = uVar60; + puVar21[7] = uVar62; + cv::error(-0xd7,(String *)&local_10,"cv::Cmp_SIMD::Cmp_SIMD(int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1075); + cv::String::deallocate((String *)&local_10); + } + if (iVar50 == 5) { + bVar38 = 0xff; + bVar32 = 0xff; + } + else { + if (iVar50 != 0) { + return; + } + bVar32 = 0; + bVar38 = 0; + } + iVar50 = iVar49 + -1; + if (iVar49 != 0) { + uVar42 = iVar9 - 4; + iVar16 = iVar9 + -3; + uVar47 = uVar42 >> 2; + uVar1 = uVar47 + 1; + uVar2 = (uVar47 - 3 >> 2) + 1; + iVar49 = uVar2 * 0x10; + lVar67 = NEON_shl(param_2,1); + iVar14 = uVar1 * 4; + lVar63 = NEON_shl(param_4,1); + if (uVar42 < 0xc) { + iVar49 = 0; + } + lVar33 = (long)iVar49; + if (iVar16 < 1) { + iVar14 = 0; + } + lVar43 = (long)iVar14; + lVar41 = (ulong)uVar1 * 8; + iVar3 = iVar14 + 1; + lVar66 = NEON_shl((ulong)uVar1,2); + lVar37 = (long)(iVar49 + 4); + lVar35 = (long)(iVar49 + 8); + iVar20 = iVar14 + 2; + iVar24 = iVar14 + 3; + iVar4 = iVar14 + 4; + iVar5 = iVar14 + 5; + lVar48 = lVar33 * 2; + lVar46 = lVar37 * 2; + iVar6 = iVar14 + 6; + lVar44 = lVar35 * 2; + uVar17 = iVar9 - iVar14; + lVar72 = NEON_shl((long)iVar3,1); + lVar71 = NEON_shl((long)iVar20,1); + lVar70 = NEON_shl((long)iVar24,1); + lVar69 = NEON_shl((long)iVar4,1); + lVar68 = NEON_shl((long)iVar5,1); + lVar61 = NEON_shl((long)iVar6,1); + lVar40 = (lVar43 + (ulong)uVar17) * 2; + lVar39 = lVar43 * 2; + do { + if (0 < iVar16) { + if ((param_1 < param_5 + lVar66 && param_5 < param_1 + lVar41 || + param_3 < param_5 + lVar66 && param_5 < param_3 + lVar41) || (uVar1 < 4)) { + pbVar28 = param_3 + 2; + pbVar23 = param_5; + pbVar27 = param_1; + do { + pbVar29 = pbVar28 + 8; + sVar12 = *(short *)(pbVar28 + -2); + sVar13 = *(short *)pbVar27; + pbVar23[1] = -(*(short *)(pbVar27 + 2) == *(short *)pbVar28) ^ bVar32; + *pbVar23 = -(sVar13 == sVar12) ^ bVar32; + sVar12 = *(short *)(pbVar28 + 2); + sVar13 = *(short *)(pbVar27 + 4); + pbVar23[3] = -(*(short *)(pbVar27 + 6) == *(short *)(pbVar28 + 4)) ^ bVar32; + pbVar23[2] = -(sVar13 == sVar12) ^ bVar32; + pbVar28 = pbVar29; + pbVar23 = pbVar23 + 4; + pbVar27 = pbVar27 + 8; + } while (pbVar29 != param_3 + (ulong)uVar47 * 8 + 10); + } + else { + if (0xb < uVar42) { + uVar25 = 0; + pbVar28 = param_3; + pbVar23 = param_1; + pbVar27 = param_5; + do { + uVar25 = uVar25 + 1; + uVar62 = *(undefined8 *)(pbVar28 + 8); + uVar60 = *(undefined8 *)pbVar28; + uVar57 = *(undefined8 *)(pbVar23 + 8); + uVar55 = *(undefined8 *)pbVar23; + uVar59 = *(undefined8 *)(pbVar28 + 0x18); + uVar58 = *(undefined8 *)(pbVar28 + 0x10); + uVar53 = *(undefined8 *)(pbVar23 + 0x18); + uVar51 = *(undefined8 *)(pbVar23 + 0x10); + *(ulong *)(pbVar27 + 8) = + CONCAT17(-(-((short)((ulong)uVar53 >> 0x30) == (short)((ulong)uVar59 >> 0x30)) + & 1U) ^ bVar32, + CONCAT16(-(-((short)((ulong)uVar53 >> 0x20) == + (short)((ulong)uVar59 >> 0x20)) & 1U) ^ bVar32, + CONCAT15(-(-((short)((ulong)uVar53 >> 0x10) == + (short)((ulong)uVar59 >> 0x10)) & 1U) ^ bVar32, + CONCAT14(-(-((short)uVar53 == (short)uVar59) & 1U) ^ + bVar32,CONCAT13(-(-((short)((ulong)uVar51 + >> 0x30) == + (short)((ulong)uVar58 >> + 0x30)) & 1U) ^ + bVar32,CONCAT12(-(-((short) + ((ulong)uVar51 >> 0x20) == + (short)((ulong)uVar58 >> 0x20)) & 1U) ^ bVar32, + CONCAT11(-(-((short)((ulong)uVar51 >> 0x10) == + (short)((ulong)uVar58 >> 0x10)) & 1U) + ^ bVar32,-(-((short)uVar51 == + (short)uVar58) & 1U) ^ bVar32 + ))))))); + *(ulong *)pbVar27 = + CONCAT17(-(-((short)((ulong)uVar57 >> 0x30) == (short)((ulong)uVar62 >> 0x30)) + & 1U) ^ bVar32, + CONCAT16(-(-((short)((ulong)uVar57 >> 0x20) == + (short)((ulong)uVar62 >> 0x20)) & 1U) ^ bVar32, + CONCAT15(-(-((short)((ulong)uVar57 >> 0x10) == + (short)((ulong)uVar62 >> 0x10)) & 1U) ^ bVar32, + CONCAT14(-(-((short)uVar57 == (short)uVar62) & 1U) ^ + bVar32,CONCAT13(-(-((short)((ulong)uVar55 + >> 0x30) == + (short)((ulong)uVar60 >> + 0x30)) & 1U) ^ + bVar32,CONCAT12(-(-((short) + ((ulong)uVar55 >> 0x20) == + (short)((ulong)uVar60 >> 0x20)) & 1U) ^ bVar32, + CONCAT11(-(-((short)((ulong)uVar55 >> 0x10) == + (short)((ulong)uVar60 >> 0x10)) & 1U) + ^ bVar32,-(-((short)uVar55 == + (short)uVar60) & 1U) ^ bVar32 + ))))))); + pbVar28 = pbVar28 + 0x20; + pbVar23 = pbVar23 + 0x20; + pbVar27 = pbVar27 + 0x10; + } while (uVar25 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_0023f0c0; + } + sVar12 = *(short *)(param_1 + lVar48 + 2); + sVar13 = *(short *)(param_3 + lVar48 + 2); + param_5[lVar33] = + -(*(short *)(param_1 + lVar48) == *(short *)(param_3 + lVar48)) ^ bVar32; + param_5[lVar33 + 1] = -(sVar12 == sVar13) ^ bVar32; + sVar12 = *(short *)(param_3 + lVar48 + 6); + sVar13 = *(short *)(param_1 + lVar48 + 6); + param_5[lVar33 + 2] = + -(*(short *)(param_1 + lVar48 + 4) == *(short *)(param_3 + lVar48 + 4)) ^ bVar32; + param_5[lVar33 + 3] = -(sVar13 == sVar12) ^ bVar32; + if (iVar49 + 4 < iVar16) { + sVar12 = *(short *)(param_1 + lVar46 + 2); + sVar13 = *(short *)(param_3 + lVar46 + 2); + param_5[lVar37] = + -(*(short *)(param_1 + lVar46) == *(short *)(param_3 + lVar46)) ^ bVar32; + param_5[lVar37 + 1] = -(sVar12 == sVar13) ^ bVar32; + sVar12 = *(short *)(param_3 + lVar46 + 6); + sVar13 = *(short *)(param_1 + lVar46 + 6); + param_5[lVar37 + 2] = + -(*(short *)(param_1 + lVar46 + 4) == *(short *)(param_3 + lVar46 + 4)) ^ bVar32; + param_5[lVar37 + 3] = -(sVar13 == sVar12) ^ bVar32; + if (iVar49 + 8 < iVar16) { + sVar12 = *(short *)(param_1 + lVar44 + 2); + sVar13 = *(short *)(param_3 + lVar44 + 2); + param_5[lVar35] = + -(*(short *)(param_1 + lVar44) == *(short *)(param_3 + lVar44)) ^ bVar32; + param_5[lVar35 + 1] = -(sVar12 == sVar13) ^ bVar32; + sVar12 = *(short *)(param_3 + lVar44 + 6); + sVar13 = *(short *)(param_1 + lVar44 + 6); + param_5[lVar35 + 2] = + -(*(short *)(param_1 + lVar44 + 4) == *(short *)(param_3 + lVar44 + 4)) ^ + bVar32; + param_5[lVar35 + 3] = -(sVar13 == sVar12) ^ bVar32; + } + } + } + } +LAB_0023f0c0: + if (iVar14 < iVar9) { + pbVar28 = param_1 + lVar39; + pbVar23 = param_5 + lVar43; + pbVar27 = param_3 + lVar39; + if ((pbVar28 < param_5 + lVar43 + (ulong)uVar17 && pbVar23 < param_1 + lVar40 || + pbVar27 < param_5 + lVar43 + (ulong)uVar17 && pbVar23 < param_3 + lVar40) || + (uVar17 < 0x12)) { + lVar36 = 0; + do { + pbVar23[lVar36] = + bVar38 ^ -(*(short *)(pbVar28 + lVar36 * 2) == *(short *)(pbVar27 + lVar36 * 2)); + lVar36 = lVar36 + 1; + } while (lVar36 != (ulong)(uint)((iVar9 + -1) - iVar14) + 1); + } + else { + uVar25 = -((uint)((ulong)pbVar28 >> 1) & 7) & 7; + uVar8 = uVar17; + if (uVar25 < uVar17) { + uVar8 = uVar25; + } + iVar30 = iVar14; + if ((((uVar8 != 0) && + (*pbVar23 = bVar38 ^ -(*(short *)pbVar28 == *(short *)pbVar27), iVar30 = iVar3, + uVar8 != 1)) && + (param_5[iVar3] = + bVar38 ^ -(*(short *)(param_1 + lVar72) == *(short *)(param_3 + lVar72)), + iVar30 = iVar20, uVar8 != 2)) && + (((param_5[iVar20] = + bVar38 ^ -(*(short *)(param_1 + lVar71) == *(short *)(param_3 + lVar71)), + iVar30 = iVar24, uVar8 != 3 && + (param_5[iVar24] = + bVar38 ^ -(*(short *)(param_1 + lVar70) == *(short *)(param_3 + lVar70)), + iVar30 = iVar4, uVar8 != 4)) && + ((param_5[iVar4] = + bVar38 ^ -(*(short *)(param_1 + lVar69) == *(short *)(param_3 + lVar69)), + iVar30 = iVar5, uVar8 != 5 && + (param_5[iVar5] = + bVar38 ^ -(*(short *)(param_1 + lVar68) == *(short *)(param_3 + lVar68)), + iVar30 = iVar6, uVar8 == 7)))))) { + param_5[iVar6] = + bVar38 ^ -(*(short *)(param_1 + lVar61) == *(short *)(param_3 + lVar61)); + iVar30 = iVar14 + 7; + } + uVar25 = ((uVar17 - uVar8) - 0x10 >> 4) + 1; + iVar15 = uVar25 * 0x10; + if (0xe < (uVar17 - 1) - uVar8) { + lVar36 = lVar39 + (ulong)uVar8 * 2; + uVar34 = 0; + pbVar28 = param_3 + lVar36; + pbVar23 = param_5 + lVar43 + (ulong)uVar8; + pbVar27 = param_1 + lVar36; + do { + uVar34 = uVar34 + 1; + uVar62 = *(undefined8 *)(pbVar28 + 8); + uVar60 = *(undefined8 *)pbVar28; + uVar59 = *(undefined8 *)(pbVar27 + 8); + uVar58 = *(undefined8 *)pbVar27; + uVar57 = *(undefined8 *)(pbVar28 + 0x18); + uVar55 = *(undefined8 *)(pbVar28 + 0x10); + uVar53 = *(undefined8 *)(pbVar27 + 0x18); + uVar51 = *(undefined8 *)(pbVar27 + 0x10); + bVar65 = -((short)((ulong)uVar59 >> 0x30) == (short)((ulong)uVar62 >> 0x30)); + bVar64 = -((short)((ulong)uVar53 >> 0x30) == (short)((ulong)uVar57 >> 0x30)); + uVar45 = (ulong)CONCAT15(bVar65,CONCAT14(-((short)((ulong)uVar59 >> 0x20) == + (short)((ulong)uVar62 >> 0x20)), + CONCAT13(-((short)((ulong)uVar59 >> 0x10) + == (short)((ulong)uVar62 >> 0x10) + ),CONCAT12(-((short)uVar59 == + (short)uVar62), + CONCAT11(-((short)(( + ulong)uVar58 >> 0x30) == + (short)((ulong)uVar60 >> 0x30)), + -((short)((ulong)uVar58 >> 0x20) == + (short)((ulong)uVar60 >> 0x20))))))) & + 0x10101010101; + uVar18 = (ulong)CONCAT15(bVar64,CONCAT14(-((short)((ulong)uVar53 >> 0x20) == + (short)((ulong)uVar57 >> 0x20)), + CONCAT13(-((short)((ulong)uVar53 >> 0x10) + == (short)((ulong)uVar57 >> 0x10) + ),CONCAT12(-((short)uVar53 == + (short)uVar57), + CONCAT11(-((short)(( + ulong)uVar51 >> 0x30) == + (short)((ulong)uVar55 >> 0x30)), + -((short)((ulong)uVar51 >> 0x20) == + (short)((ulong)uVar55 >> 0x20))))))) & + 0x10101010101; + *(ulong *)(pbVar23 + 8) = + CONCAT17(-(bVar64 & 1) ^ bVar38, + CONCAT16(-(char)(uVar18 >> 0x20) ^ bVar38, + CONCAT15(-(char)(uVar18 >> 0x18) ^ bVar38, + CONCAT14(-(char)(uVar18 >> 0x10) ^ bVar38, + CONCAT13(-(char)(uVar18 >> 8) ^ bVar38, + CONCAT12(-(char)uVar18 ^ bVar38, + CONCAT11(-(-((short)(( + ulong)uVar51 >> 0x10) == + (short)((ulong)uVar55 >> 0x10)) & 1U) ^ bVar38, + -(-((short)uVar51 == (short)uVar55) & 1U) ^ bVar38 + ))))))); + *(ulong *)pbVar23 = + CONCAT17(-(bVar65 & 1) ^ bVar38, + CONCAT16(-(char)(uVar45 >> 0x20) ^ bVar38, + CONCAT15(-(char)(uVar45 >> 0x18) ^ bVar38, + CONCAT14(-(char)(uVar45 >> 0x10) ^ bVar38, + CONCAT13(-(char)(uVar45 >> 8) ^ bVar38, + CONCAT12(-(char)uVar45 ^ bVar38, + CONCAT11(-(-((short)(( + ulong)uVar58 >> 0x10) == + (short)((ulong)uVar60 >> 0x10)) & 1U) ^ bVar38, + -(-((short)uVar58 == (short)uVar60) & 1U) ^ bVar38 + ))))))); + pbVar28 = pbVar28 + 0x20; + pbVar23 = pbVar23 + 0x10; + pbVar27 = pbVar27 + 0x20; + } while (uVar34 < uVar25); + iVar30 = iVar30 + iVar15; + if (uVar17 - uVar8 == iVar15) goto LAB_0023f584; + } + iVar15 = iVar30 + 1; + lVar36 = (long)iVar30 * 2; + param_5[iVar30] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36)); + if (iVar15 < iVar9) { + iVar7 = iVar30 + 2; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36)); + if (iVar7 < iVar9) { + iVar15 = iVar30 + 3; + lVar36 = (long)iVar7 * 2; + param_5[iVar7] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36)); + if (iVar15 < iVar9) { + iVar7 = iVar30 + 4; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36)); + if (iVar7 < iVar9) { + iVar15 = iVar30 + 5; + lVar36 = (long)iVar7 * 2; + param_5[iVar7] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36)); + if (iVar15 < iVar9) { + iVar7 = iVar30 + 6; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36)); + if (iVar7 < iVar9) { + iVar15 = iVar30 + 7; + lVar36 = (long)iVar7 * 2; + param_5[iVar7] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == *(short *)(param_3 + lVar36) + ); + if (iVar15 < iVar9) { + iVar7 = iVar30 + 8; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar7 < iVar9) { + iVar15 = iVar30 + 9; + lVar36 = (long)iVar7 * 2; + param_5[iVar7] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar15 < iVar9) { + iVar7 = iVar30 + 10; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar7 < iVar9) { + iVar15 = iVar30 + 0xb; + lVar36 = (long)iVar7 * 2; + param_5[iVar7] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar15 < iVar9) { + iVar7 = iVar30 + 0xc; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar7 < iVar9) { + iVar15 = iVar30 + 0xd; + lVar36 = (long)iVar7 * 2; + param_5[iVar7] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar15 < iVar9) { + iVar30 = iVar30 + 0xe; + lVar36 = (long)iVar15 * 2; + param_5[iVar15] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + if (iVar30 < iVar9) { + lVar36 = (long)iVar30 * 2; + param_5[iVar30] = + bVar38 ^ -(*(short *)(param_1 + lVar36) == + *(short *)(param_3 + lVar36)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0023f584: + iVar50 = iVar50 + -1; + param_1 = param_1 + lVar67; + param_3 = param_3 + lVar63; + param_5 = param_5 + param_6; + } while (iVar50 != -1); + } + } + return; +} + + +================================================================== + +### FUNC 0023f6c4 (6164 bytes) name=FUN_0023f6c4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0023f6c4(byte *param_1,ulong param_2,byte *param_3,ulong param_4,byte *param_5,long param_6 + ,int *param_7,int *param_8) + +{ + uint uVar1; + uint uVar2; + int iVar3; + byte *pbVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + byte *pbVar10; + byte *pbVar11; + uint3 uVar12; + uint3 uVar13; + uint3 uVar14; + uint5 uVar15; + uint5 uVar16; + uint5 uVar17; + ulong uVar18; + ulong uVar19; + bool bVar20; + int iVar21; + int iVar22; + undefined8 *puVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + long lVar27; + long lVar28; + byte *pbVar29; + long lVar30; + byte *pbVar31; + byte bVar32; + long lVar33; + byte bVar34; + uint uVar35; + long lVar36; + byte *pbVar37; + long lVar38; + uint uVar39; + long lVar40; + long lVar41; + byte *pbVar42; + long lVar43; + uint uVar44; + ulong uVar45; + int iVar46; + int iVar47; + uint uVar48; + long lVar49; + long lVar50; + int iVar51; + undefined8 uVar52; + long lVar53; + undefined8 uVar54; + long lVar55; + undefined8 uVar56; + undefined8 uVar57; + undefined8 uVar58; + undefined8 uVar59; + undefined8 uVar60; + undefined8 uVar61; + int iVar62; + byte bVar63; + byte bVar64; + long lVar65; + long lVar66; + long lVar67; + undefined8 local_10; + undefined8 local_8; + + iVar47 = *param_8; + iVar6 = *param_7; + param_2 = param_2 >> 2; + iVar46 = param_7[1]; + param_4 = param_4 >> 2; + if (iVar47 - 2U < 2) { + bVar20 = iVar47 != 2; + iVar47 = 4; + if (bVar20) { + iVar47 = 1; + } + pbVar37 = param_1; + uVar45 = param_4; + if (iVar47 == 1) { +LAB_002403ac: + bVar34 = 0; + bVar32 = 0; + } + else { +LAB_0023f814: + bVar34 = 0xff; + bVar32 = 0xff; + } + if (iVar46 != 0) { + iVar8 = iVar6 + -7; + uVar1 = iVar6 - 8U >> 3; + lVar27 = (ulong)uVar1 * 0x20 + 0x30; + pbVar31 = param_3 + 0x10; + pbVar42 = pbVar37 + 0x10; + iVar7 = iVar6 + -3; + iVar62 = (uVar1 + 1) * 8; + if (iVar47 == 1) goto LAB_00240150; + do { + if (iVar47 == 4) { + if (iVar8 < 1) goto LAB_002403b8; + pbVar24 = pbVar31; + pbVar25 = pbVar42; + pbVar26 = param_5; + do { + pbVar29 = pbVar25 + -0x10; + pbVar4 = pbVar24 + 0x20; + pbVar10 = pbVar25 + -8; + pbVar11 = pbVar25 + 8; + uVar52 = *(undefined8 *)pbVar25; + pbVar25 = pbVar25 + 0x20; + *(ulong *)pbVar26 = + CONCAT17(~-((int)((ulong)*(undefined8 *)pbVar11 >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar24 + 8) >> 0x20)), + CONCAT16(~-((int)*(undefined8 *)pbVar11 < + (int)*(undefined8 *)(pbVar24 + 8)), + CONCAT15(~-((int)((ulong)uVar52 >> 0x20) < + (int)((ulong)*(undefined8 *)pbVar24 >> 0x20)), + CONCAT14(~-((int)uVar52 < (int)*(undefined8 *)pbVar24), + CONCAT13(~-((int)((ulong)*(undefined8 *)pbVar10 + >> 0x20) < + (int)((ulong)*(undefined8 *) + (pbVar24 + -8) >> 0x20 + )), + CONCAT12(~-((int)*(undefined8 *) + pbVar10 < + (int)*(undefined8 *) + (pbVar24 + -8)), + CONCAT11(~-((int)((ulong)*( + undefined8 *)pbVar29 >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar24 + -0x10) >> + 0x20)), + ~-((int)*(undefined8 *)pbVar29 < + (int)*(undefined8 *)(pbVar24 + -0x10))))))))); + pbVar24 = pbVar4; + pbVar26 = pbVar26 + 8; + iVar21 = iVar62; + } while (pbVar4 != param_3 + lVar27); + } + else if (iVar47 == 0) { + if (iVar8 < 1) { + iVar21 = 0; + } + else { + pbVar24 = pbVar31; + pbVar25 = pbVar42; + pbVar26 = param_5; + do { + pbVar29 = pbVar25 + -0x10; + pbVar4 = pbVar24 + 0x20; + pbVar10 = pbVar25 + -8; + pbVar11 = pbVar25 + 8; + uVar52 = *(undefined8 *)pbVar25; + pbVar25 = pbVar25 + 0x20; + *(ulong *)pbVar26 = + CONCAT17(-((int)((ulong)*(undefined8 *)(pbVar24 + 8) >> 0x20) == + (int)((ulong)*(undefined8 *)pbVar11 >> 0x20)), + CONCAT16(-((int)*(undefined8 *)(pbVar24 + 8) == + (int)*(undefined8 *)pbVar11), + CONCAT15(-((int)((ulong)*(undefined8 *)pbVar24 >> 0x20) == + (int)((ulong)uVar52 >> 0x20)), + CONCAT14(-((int)*(undefined8 *)pbVar24 == (int)uVar52) + ,CONCAT13(-((int)((ulong)*(undefined8 *) + (pbVar24 + -8) >> + 0x20) == + (int)((ulong)*(undefined8 *) + pbVar10 >> 0x20)), + CONCAT12(-((int)*(undefined8 *) + (pbVar24 + -8) == + (int)*(undefined8 *) + pbVar10), + CONCAT11(-((int)((ulong)*( + undefined8 *)(pbVar24 + -0x10) >> 0x20) == + (int)((ulong)*(undefined8 *)pbVar29 >> 0x20)), + -((int)*(undefined8 *)(pbVar24 + -0x10) == + (int)*(undefined8 *)pbVar29)))))))); + pbVar24 = pbVar4; + pbVar26 = pbVar26 + 8; + iVar21 = iVar62; + } while (pbVar4 != param_3 + lVar27); + } + } + else { + iVar21 = 0; + if ((iVar47 == 5) && (0 < iVar8)) { + pbVar25 = pbVar31; + pbVar24 = pbVar42; + pbVar26 = param_5; + do { + pbVar4 = pbVar25 + 0x20; + *(ulong *)pbVar26 = + CONCAT17(~-((int)((ulong)*(undefined8 *)(pbVar25 + 8) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar24 + 8) >> 0x20)), + CONCAT16(~-((int)*(undefined8 *)(pbVar25 + 8) == + (int)*(undefined8 *)(pbVar24 + 8)), + CONCAT15(~-((int)((ulong)*(undefined8 *)pbVar25 >> 0x20) == + (int)((ulong)*(undefined8 *)pbVar24 >> 0x20)), + CONCAT14(~-((int)*(undefined8 *)pbVar25 == + (int)*(undefined8 *)pbVar24), + CONCAT13(~-((int)((ulong)*(undefined8 *) + (pbVar25 + -8) >> + 0x20) == + (int)((ulong)*(undefined8 *) + (pbVar24 + -8) >> + 0x20)), + CONCAT12(~-((int)*(undefined8 *) + (pbVar25 + -8) == + (int)*(undefined8 *) + (pbVar24 + -8)), + CONCAT11(~-((int)((ulong)*( + undefined8 *)(pbVar25 + -0x10) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar24 + -0x10) >> + 0x20)), + ~-((int)*(undefined8 *)(pbVar25 + -0x10) == + (int)*(undefined8 *)(pbVar24 + -0x10))))))))); + pbVar25 = pbVar4; + pbVar24 = pbVar24 + 0x20; + pbVar26 = pbVar26 + 8; + iVar21 = iVar62; + } while (pbVar4 != param_3 + lVar27); + } + } +LAB_0023f914: + if (iVar21 < iVar7) { + lVar66 = (long)iVar21; + pbVar25 = param_5 + lVar66; + uVar39 = (iVar6 + -4) - iVar21; + uVar2 = uVar39 >> 2; + pbVar24 = param_3 + lVar66 * 4; + uVar1 = uVar2 + 1; + lVar65 = lVar66 + (ulong)uVar1 * 4; + lVar28 = lVar65 * 4; + pbVar26 = pbVar37 + lVar66 * 4; + if ((pbVar25 < param_3 + lVar28 && pbVar24 < param_5 + lVar65 || + pbVar25 < pbVar37 + lVar28 && pbVar26 < param_5 + lVar65) || (uVar1 < 4)) { + do { + pbVar4 = pbVar25 + 4; + iVar22 = *(int *)pbVar26; + iVar51 = *(int *)pbVar24; + pbVar25[1] = -(*(int *)(pbVar26 + 4) < *(int *)(pbVar24 + 4)) ^ bVar32; + *pbVar25 = -(iVar22 < iVar51) ^ bVar32; + iVar22 = *(int *)(pbVar24 + 8); + iVar51 = *(int *)(pbVar26 + 8); + pbVar25[3] = -(*(int *)(pbVar26 + 0xc) < *(int *)(pbVar24 + 0xc)) ^ bVar32; + pbVar25[2] = -(iVar51 < iVar22) ^ bVar32; + pbVar26 = pbVar26 + 0x10; + pbVar25 = pbVar4; + pbVar24 = pbVar24 + 0x10; + } while (pbVar4 != param_5 + lVar66 + 4 + (ulong)uVar2 * 4); + } + else { + uVar44 = (uVar2 - 3 >> 2) + 1; + iVar22 = iVar21; + if (0xb < uVar39) { + uVar39 = 0; + do { + uVar54 = *(undefined8 *)(pbVar24 + 8); + uVar52 = *(undefined8 *)pbVar24; + uVar39 = uVar39 + 1; + uVar57 = *(undefined8 *)(pbVar26 + 8); + uVar56 = *(undefined8 *)pbVar26; + uVar60 = *(undefined8 *)(pbVar24 + 0x18); + uVar58 = *(undefined8 *)(pbVar24 + 0x10); + uVar61 = *(undefined8 *)(pbVar26 + 0x18); + uVar59 = *(undefined8 *)(pbVar26 + 0x10); + *(ulong *)(pbVar25 + 8) = + CONCAT17(-(-((int)((ulong)*(undefined8 *)(pbVar26 + 0x38) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar24 + 0x38) >> 0x20)) & 1U) ^ + bVar32,CONCAT16(-(-((int)*(undefined8 *)(pbVar26 + 0x38) < + (int)*(undefined8 *)(pbVar24 + 0x38)) & 1U) ^ + bVar32,CONCAT15(-(-((int)((ulong)*(undefined8 *) + (pbVar26 + 0x30) >> + 0x20) < + (int)((ulong)*(undefined8 *) + (pbVar24 + 0x30) >> + 0x20)) & 1U) ^ bVar32, + CONCAT14(-(-((int)*(undefined8 *) + (pbVar26 + 0x30) < + (int)*(undefined8 *) + (pbVar24 + 0x30)) & + 1U) ^ bVar32, + CONCAT13(-(-((int)((ulong)*( + undefined8 *)(pbVar26 + 0x28) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar24 + 0x28) >> + 0x20)) & 1U) ^ bVar32, + CONCAT12(-(-((int)*(undefined8 *)(pbVar26 + 0x28) + < (int)*(undefined8 *)(pbVar24 + 0x28) + ) & 1U) ^ bVar32, + CONCAT11(-(-((int)((ulong)*(undefined8 *) + (pbVar26 + + 0x20) >> 0x20) + < (int)((ulong)*(undefined8 * + )(pbVar24 + + 0x20) >> + 0x20)) & 1U) ^ bVar32, + -(-((int)*(undefined8 *) + (pbVar26 + 0x20) < + (int)*(undefined8 *) + (pbVar24 + 0x20)) & 1U) + ^ bVar32))))))); + *(ulong *)pbVar25 = + CONCAT17(-(-((int)((ulong)uVar61 >> 0x20) < (int)((ulong)uVar60 >> 0x20)) & 1U) + ^ bVar32,CONCAT16(-(-((int)uVar61 < (int)uVar60) & 1U) ^ bVar32, + CONCAT15(-(-((int)((ulong)uVar59 >> 0x20) < + (int)((ulong)uVar58 >> 0x20)) & 1U) ^ + bVar32,CONCAT14(-(-((int)uVar59 < + (int)uVar58) & 1U) ^ + bVar32,CONCAT13(-(-((int)(( + ulong)uVar57 >> 0x20) < + (int)((ulong)uVar54 >> 0x20)) & 1U) ^ bVar32, + CONCAT12(-(-((int)uVar57 < (int)uVar54) & 1U) ^ + bVar32,CONCAT11(-(-((int)((ulong)uVar56 + >> 0x20) < + (int)((ulong)uVar52 >> + 0x20)) & 1U) ^ + bVar32,-(-((int)uVar56 < + (int)uVar52) & + 1U) ^ bVar32))))) + )); + pbVar26 = pbVar26 + 0x40; + pbVar25 = pbVar25 + 0x10; + pbVar24 = pbVar24 + 0x40; + } while (uVar39 < uVar44); + iVar22 = iVar21 + uVar44 * 0x10; + if (uVar1 == uVar44 * 4) goto LAB_0023fc6c; + } + lVar66 = (long)iVar22; + lVar65 = lVar66 * 4; + iVar51 = *(int *)(param_3 + lVar65 + 4); + iVar3 = *(int *)(pbVar37 + lVar65 + 4); + param_5[lVar66] = -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)) ^ bVar32; + param_5[lVar66 + 1] = -(iVar3 < iVar51) ^ bVar32; + iVar51 = *(int *)(param_3 + lVar65 + 8); + iVar3 = *(int *)(pbVar37 + lVar65 + 8); + param_5[lVar66 + 3] = + -(*(int *)(pbVar37 + lVar65 + 0xc) < *(int *)(param_3 + lVar65 + 0xc)) ^ bVar32; + param_5[lVar66 + 2] = -(iVar3 < iVar51) ^ bVar32; + if (iVar22 + 4 < iVar7) { + lVar66 = (long)(iVar22 + 4); + lVar65 = lVar66 * 4; + iVar51 = *(int *)(param_3 + lVar65 + 4); + iVar3 = *(int *)(pbVar37 + lVar65 + 4); + param_5[lVar66] = -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)) ^ bVar32; + param_5[lVar66 + 1] = -(iVar3 < iVar51) ^ bVar32; + iVar51 = *(int *)(param_3 + lVar65 + 8); + iVar3 = *(int *)(pbVar37 + lVar65 + 8); + param_5[lVar66 + 3] = + -(*(int *)(pbVar37 + lVar65 + 0xc) < *(int *)(param_3 + lVar65 + 0xc)) ^ bVar32; + param_5[lVar66 + 2] = -(iVar3 < iVar51) ^ bVar32; + if (iVar22 + 8 < iVar7) { + lVar65 = (long)(iVar22 + 8); + lVar66 = lVar65 * 4; + iVar22 = *(int *)(param_3 + lVar66 + 4); + iVar51 = *(int *)(pbVar37 + lVar66 + 4); + param_5[lVar65] = + -(*(int *)(pbVar37 + lVar66) < *(int *)(param_3 + lVar66)) ^ bVar32; + param_5[lVar65 + 1] = -(iVar51 < iVar22) ^ bVar32; + iVar22 = *(int *)(pbVar37 + lVar66 + 8); + iVar51 = *(int *)(param_3 + lVar66 + 8); + param_5[lVar65 + 3] = + -(*(int *)(pbVar37 + lVar66 + 0xc) < *(int *)(param_3 + lVar66 + 0xc)) ^ bVar32 + ; + param_5[lVar65 + 2] = -(iVar22 < iVar51) ^ bVar32; + } + } + } +LAB_0023fc6c: + iVar21 = iVar21 + 4 + uVar2 * 4; + } + if (iVar21 < iVar6) { + lVar66 = (long)iVar21; + uVar1 = iVar6 - iVar21; + lVar28 = (lVar66 + (ulong)uVar1) * 4; + lVar65 = lVar66 * 4; + pbVar25 = param_5 + lVar66; + pbVar24 = param_3 + lVar65; + if ((pbVar25 < param_3 + lVar28 && pbVar24 < param_5 + lVar66 + (ulong)uVar1 || + pbVar25 < pbVar37 + lVar28 && pbVar37 + lVar65 < param_5 + lVar66 + (ulong)uVar1) || + (uVar1 < 0x12)) { + lVar66 = 0; + do { + pbVar25[lVar66] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65 + lVar66 * 4) < + *(int *)(pbVar24 + lVar66 * 4)); + lVar66 = lVar66 + 1; + } while (lVar66 != (ulong)(uint)((iVar6 + -1) - iVar21) + 1); + } + else { + uVar2 = -((uint)((ulong)pbVar24 >> 2) & 3) & 3; + if (uVar1 < uVar2) { + uVar2 = uVar1; + } + iVar22 = iVar21; + if (uVar2 != 0) { + iVar22 = iVar21 + 1; + *pbVar25 = bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (uVar2 != 1) { + lVar28 = (long)iVar22; + iVar22 = iVar21 + 2; + lVar30 = lVar28 * 4; + param_5[lVar28] = + bVar34 ^ -(*(int *)(pbVar37 + lVar30) < *(int *)(param_3 + lVar30)); + if (uVar2 == 3) { + lVar28 = (long)iVar22; + iVar22 = iVar21 + 3; + lVar30 = lVar28 * 4; + param_5[lVar28] = + bVar34 ^ -(*(int *)(pbVar37 + lVar30) < *(int *)(param_3 + lVar30)); + } + } + } + uVar39 = ((uVar1 - uVar2) - 0x10 >> 4) + 1; + iVar21 = uVar39 * 0x10; + if (uVar1 - 0xf != uVar2) { + lVar65 = lVar65 + (ulong)uVar2 * 4; + uVar44 = 0; + pbVar25 = param_3 + lVar65; + pbVar24 = param_5 + (ulong)uVar2 + lVar66; + pbVar26 = pbVar37 + lVar65; + do { + uVar44 = uVar44 + 1; + bVar63 = -((int)((ulong)*(undefined8 *)(pbVar26 + 0x18) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 0x18) >> 0x20)); + bVar64 = -((int)((ulong)*(undefined8 *)(pbVar26 + 0x38) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 0x38) >> 0x20)); + uVar12 = CONCAT12(-((int)((ulong)*(undefined8 *)pbVar26 >> 0x20) < + (int)((ulong)*(undefined8 *)pbVar25 >> 0x20)), + (ushort)(-((int)*(undefined8 *)pbVar26 < + (int)*(undefined8 *)pbVar25) & 1)) & 0x1ffff; + uVar13 = CONCAT12(-((int)((ulong)*(undefined8 *)(pbVar26 + 0x10) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 0x10) >> 0x20)), + (ushort)(-((int)*(undefined8 *)(pbVar26 + 0x10) < + (int)*(undefined8 *)(pbVar25 + 0x10)) & 1)) & 0x1ffff; + uVar14 = CONCAT12(-((int)((ulong)*(undefined8 *)(pbVar26 + 0x20) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 0x20) >> 0x20)), + (ushort)(-((int)*(undefined8 *)(pbVar26 + 0x20) < + (int)*(undefined8 *)(pbVar25 + 0x20)) & 1)) & 0x1ffff; + uVar15 = CONCAT14(-((int)*(undefined8 *)(pbVar26 + 0x38) < + (int)*(undefined8 *)(pbVar25 + 0x38)), + (uint)(CONCAT12(-((int)((ulong)*(undefined8 *)(pbVar26 + 0x30) >> + 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 0x30) >> + 0x20)), + (ushort)(-((int)*(undefined8 *)(pbVar26 + 0x30) < + (int)*(undefined8 *)(pbVar25 + 0x30)) & + 1)) & 0x1ffff)) & 0x1ffffffff; + uVar18 = (ulong)CONCAT15(bVar63,CONCAT14(-((int)*(undefined8 *)(pbVar26 + 0x18) < + (int)*(undefined8 *)(pbVar25 + 0x18)), + CONCAT13((char)(uVar13 >> 0x10), + CONCAT12((char)uVar13, + CONCAT11(-((int)((ulong)* + (undefined8 *)(pbVar26 + 8) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 8) >> 0x20) + ),-((int)*(undefined8 *)(pbVar26 + 8) < + (int)*(undefined8 *)(pbVar25 + 8))))))) & + 0x101ffff0101; + uVar19 = (ulong)CONCAT15(bVar64,CONCAT14((char)(uVar15 >> 0x20), + CONCAT13((char)(uVar15 >> 0x10), + CONCAT12((char)uVar15, + CONCAT11(-((int)((ulong)* + (undefined8 *)(pbVar26 + 0x28) >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar25 + 0x28) >> + 0x20)), + -((int)*(undefined8 *)(pbVar26 + 0x28) < + (int)*(undefined8 *)(pbVar25 + 0x28))))))) & + 0x1ffffff0101; + *(ulong *)(pbVar24 + 8) = + CONCAT17(-(bVar64 & 1) ^ bVar34, + CONCAT16(-(char)(uVar19 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar19 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar19 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar19 >> 8) ^ bVar34, + CONCAT12(-(char)uVar19 ^ bVar34, + CONCAT11(-(char)(uVar14 + >> 0x10) ^ bVar34,-(char)uVar14 ^ bVar34))))))); + *(ulong *)pbVar24 = + CONCAT17(-(bVar63 & 1) ^ bVar34, + CONCAT16(-(char)(uVar18 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar18 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar18 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar18 >> 8) ^ bVar34, + CONCAT12(-(char)uVar18 ^ bVar34, + CONCAT11(-(char)(uVar12 + >> 0x10) ^ bVar34,-(char)uVar12 ^ bVar34))))))); + pbVar25 = pbVar25 + 0x40; + pbVar24 = pbVar24 + 0x10; + pbVar26 = pbVar26 + 0x40; + } while (uVar44 < uVar39); + iVar22 = iVar22 + iVar21; + if (iVar21 == uVar1 - uVar2) goto LAB_0024012c; + } + iVar21 = iVar22 + 1; + lVar65 = (long)iVar22 * 4; + param_5[iVar22] = bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar21 < iVar6) { + iVar51 = iVar22 + 2; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar51 < iVar6) { + iVar21 = iVar22 + 3; + lVar65 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar21 < iVar6) { + iVar51 = iVar22 + 4; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar51 < iVar6) { + iVar21 = iVar22 + 5; + lVar65 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar21 < iVar6) { + iVar51 = iVar22 + 6; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar51 < iVar6) { + iVar21 = iVar22 + 7; + lVar65 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar21 < iVar6) { + iVar51 = iVar22 + 8; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)); + if (iVar51 < iVar6) { + iVar21 = iVar22 + 9; + lVar65 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < *(int *)(param_3 + lVar65)) + ; + if (iVar21 < iVar6) { + iVar51 = iVar22 + 10; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < + *(int *)(param_3 + lVar65)); + if (iVar51 < iVar6) { + iVar21 = iVar22 + 0xb; + lVar65 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < + *(int *)(param_3 + lVar65)); + if (iVar21 < iVar6) { + iVar51 = iVar22 + 0xc; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < + *(int *)(param_3 + lVar65)); + if (iVar51 < iVar6) { + iVar21 = iVar22 + 0xd; + lVar65 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < + *(int *)(param_3 + lVar65)); + if (iVar21 < iVar6) { + iVar22 = iVar22 + 0xe; + lVar65 = (long)iVar21 * 4; + param_5[iVar21] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < + *(int *)(param_3 + lVar65)); + if (iVar22 < iVar6) { + lVar65 = (long)iVar22 * 4; + param_5[iVar22] = + bVar34 ^ -(*(int *)(pbVar37 + lVar65) < + *(int *)(param_3 + lVar65)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0024012c: + iVar46 = iVar46 + -1; + param_5 = param_5 + param_6; + pbVar31 = pbVar31 + uVar45 * 4; + pbVar42 = pbVar42 + param_2 * 4; + if (iVar46 == 0) { + return; + } + pbVar37 = pbVar42 + -0x10; + param_3 = pbVar31 + -0x10; + } while (iVar47 != 1); +LAB_00240150: + if (iVar8 < 1) { +LAB_002403b8: + iVar21 = 0; + } + else { + pbVar24 = pbVar31; + pbVar25 = pbVar42; + pbVar26 = param_5; + do { + pbVar29 = pbVar25 + -0x10; + pbVar4 = pbVar24 + 0x20; + pbVar10 = pbVar25 + -8; + pbVar11 = pbVar25 + 8; + uVar52 = *(undefined8 *)pbVar25; + pbVar25 = pbVar25 + 0x20; + *(ulong *)pbVar26 = + CONCAT17(-((int)((ulong)*(undefined8 *)pbVar11 >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar24 + 8) >> 0x20)), + CONCAT16(-((int)*(undefined8 *)pbVar11 < (int)*(undefined8 *)(pbVar24 + 8)), + CONCAT15(-((int)((ulong)uVar52 >> 0x20) < + (int)((ulong)*(undefined8 *)pbVar24 >> 0x20)), + CONCAT14(-((int)uVar52 < (int)*(undefined8 *)pbVar24), + CONCAT13(-((int)((ulong)*(undefined8 *)pbVar10 >> + 0x20) < + (int)((ulong)*(undefined8 *) + (pbVar24 + -8) >> 0x20)), + CONCAT12(-((int)*(undefined8 *)pbVar10 < + (int)*(undefined8 *) + (pbVar24 + -8)), + CONCAT11(-((int)((ulong)*( + undefined8 *)pbVar29 >> 0x20) < + (int)((ulong)*(undefined8 *)(pbVar24 + -0x10) >> + 0x20)), + -((int)*(undefined8 *)pbVar29 < + (int)*(undefined8 *)(pbVar24 + -0x10))))))))); + pbVar24 = pbVar4; + pbVar26 = pbVar26 + 8; + iVar21 = iVar62; + } while (pbVar4 != param_3 + lVar27); + } + goto LAB_0023f914; + } + } + else { + if (iVar47 == 5 || iVar47 == 0) { + if (iVar47 == 4 || iVar47 == 1) goto LAB_0023f80c; + } + else { + if (iVar47 == 4 || iVar47 == 1) { +LAB_0023f80c: + pbVar37 = param_3; + param_3 = param_1; + uVar45 = param_2; + param_2 = param_4; + if (iVar47 == 1) goto LAB_002403ac; + goto LAB_0023f814; + } + local_10 = 0; + local_8 = 0; + puVar23 = (undefined8 *)cv::String::allocate((String *)&local_10,0x44); + uVar61 = _LAB_00460708; + uVar60 = DAT_00460700; + uVar59 = DAT_004606f8; + uVar58 = DAT_004606f0; + uVar57 = DAT_004606e8; + uVar56 = DAT_004606e0; + uVar54 = DAT_004606d8; + uVar52 = DAT_004606d0; + *(undefined4 *)(puVar23 + 8) = DAT_00460710; + *puVar23 = uVar52; + puVar23[1] = uVar54; + puVar23[2] = uVar56; + puVar23[3] = uVar57; + puVar23[4] = uVar58; + puVar23[5] = uVar59; + puVar23[6] = uVar60; + puVar23[7] = uVar61; + cv::error(-0xd7,(String *)&local_10,"cv::Cmp_SIMD::Cmp_SIMD(int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x10a5); + cv::String::deallocate((String *)&local_10); + } + if (iVar47 == 5) { + bVar34 = 0xff; + bVar32 = 0xff; + } + else { + if (iVar47 != 0) { + return; + } + bVar34 = 0; + bVar32 = 0; + } + iVar47 = iVar46 + -1; + if (iVar46 != 0) { + uVar44 = iVar6 - 4; + iVar8 = iVar6 + -3; + uVar39 = uVar44 >> 2; + uVar1 = uVar39 + 1; + uVar2 = (uVar39 - 3 >> 2) + 1; + iVar46 = uVar2 * 0x10; + if (uVar44 < 0xc) { + iVar46 = 0; + } + lVar65 = NEON_shl(param_2,2); + iVar7 = uVar1 * 4; + lVar27 = (long)iVar46; + lVar66 = NEON_shl(param_4,2); + if (iVar8 < 1) { + iVar7 = 0; + } + lVar53 = NEON_shl((ulong)uVar1,4); + lVar67 = NEON_shl((ulong)uVar1,2); + lVar28 = (long)(iVar46 + 4); + lVar30 = (long)(iVar46 + 8); + lVar43 = lVar27 * 4; + iVar62 = iVar7 + 1; + lVar40 = lVar30 * 4; + lVar41 = lVar28 * 4; + iVar21 = iVar7 + 2; + uVar9 = iVar6 - iVar7; + lVar33 = (long)iVar7; + lVar49 = NEON_shl((long)iVar62,2); + lVar55 = NEON_shl(lVar33 + (ulong)uVar9,2); + lVar50 = NEON_shl((long)iVar21,2); + lVar38 = lVar33 * 4; + do { + if (0 < iVar8) { + if ((param_1 < param_5 + lVar67 && param_5 < param_1 + lVar53 || + param_3 < param_5 + lVar67 && param_5 < param_3 + lVar53) || (uVar1 < 4)) { + pbVar37 = param_3 + 4; + pbVar31 = param_5; + pbVar42 = param_1; + do { + pbVar25 = pbVar37 + 0x10; + iVar22 = *(int *)pbVar42; + iVar51 = *(int *)(pbVar37 + -4); + pbVar31[1] = -(*(int *)(pbVar42 + 4) == *(int *)pbVar37) ^ bVar32; + *pbVar31 = -(iVar22 == iVar51) ^ bVar32; + iVar22 = *(int *)(pbVar37 + 4); + iVar51 = *(int *)(pbVar42 + 8); + pbVar31[3] = -(*(int *)(pbVar42 + 0xc) == *(int *)(pbVar37 + 8)) ^ bVar32; + pbVar31[2] = -(iVar51 == iVar22) ^ bVar32; + pbVar37 = pbVar25; + pbVar31 = pbVar31 + 4; + pbVar42 = pbVar42 + 0x10; + } while (pbVar25 != param_3 + (ulong)uVar39 * 0x10 + 0x14); + } + else { + if (0xb < uVar44) { + uVar35 = 0; + pbVar37 = param_3; + pbVar31 = param_1; + pbVar42 = param_5; + do { + uVar61 = *(undefined8 *)(pbVar31 + 8); + uVar60 = *(undefined8 *)pbVar31; + uVar59 = *(undefined8 *)(pbVar37 + 8); + uVar58 = *(undefined8 *)pbVar37; + uVar35 = uVar35 + 1; + uVar56 = *(undefined8 *)(pbVar31 + 0x18); + uVar52 = *(undefined8 *)(pbVar31 + 0x10); + uVar57 = *(undefined8 *)(pbVar37 + 0x18); + uVar54 = *(undefined8 *)(pbVar37 + 0x10); + *(ulong *)(pbVar42 + 8) = + CONCAT17(-(-((int)((ulong)*(undefined8 *)(pbVar31 + 0x38) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar37 + 0x38) >> 0x20)) & 1U) ^ + bVar32,CONCAT16(-(-((int)*(undefined8 *)(pbVar31 + 0x38) == + (int)*(undefined8 *)(pbVar37 + 0x38)) & 1U) ^ + bVar32,CONCAT15(-(-((int)((ulong)*(undefined8 *) + (pbVar31 + 0x30) >> + 0x20) == + (int)((ulong)*(undefined8 *) + (pbVar37 + 0x30) >> + 0x20)) & 1U) ^ bVar32, + CONCAT14(-(-((int)*(undefined8 *) + (pbVar31 + 0x30) == + (int)*(undefined8 *) + (pbVar37 + 0x30)) & + 1U) ^ bVar32, + CONCAT13(-(-((int)((ulong)*( + undefined8 *)(pbVar31 + 0x28) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar37 + 0x28) >> + 0x20)) & 1U) ^ bVar32, + CONCAT12(-(-((int)*(undefined8 *)(pbVar31 + 0x28) + == (int)*(undefined8 *) + (pbVar37 + 0x28)) & 1U) ^ + bVar32,CONCAT11(-(-((int)((ulong)*( + undefined8 *)(pbVar31 + 0x20) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar37 + 0x20) >> + 0x20)) & 1U) ^ bVar32, + -(-((int)*(undefined8 *)(pbVar31 + 0x20) == + (int)*(undefined8 *)(pbVar37 + 0x20)) & 1U) ^ + bVar32))))))); + *(ulong *)pbVar42 = + CONCAT17(-(-((int)((ulong)uVar56 >> 0x20) == (int)((ulong)uVar57 >> 0x20)) & 1U + ) ^ bVar32, + CONCAT16(-(-((int)uVar56 == (int)uVar57) & 1U) ^ bVar32, + CONCAT15(-(-((int)((ulong)uVar52 >> 0x20) == + (int)((ulong)uVar54 >> 0x20)) & 1U) ^ bVar32, + CONCAT14(-(-((int)uVar52 == (int)uVar54) & 1U) ^ + bVar32,CONCAT13(-(-((int)((ulong)uVar61 >> + 0x20) == + (int)((ulong)uVar59 >> + 0x20)) & 1U) ^ + bVar32,CONCAT12(-(-((int) + uVar61 == (int)uVar59) & 1U) ^ bVar32, + CONCAT11(-(-((int)((ulong)uVar60 >> 0x20) == + (int)((ulong)uVar58 >> 0x20)) & 1U) ^ + bVar32,-(-((int)uVar60 == (int)uVar58) & + 1U) ^ bVar32))))))); + pbVar37 = pbVar37 + 0x40; + pbVar31 = pbVar31 + 0x40; + pbVar42 = pbVar42 + 0x10; + } while (uVar35 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_002408fc; + } + iVar22 = *(int *)(param_1 + lVar43 + 4); + iVar51 = *(int *)(param_3 + lVar43 + 4); + param_5[lVar27] = -(*(int *)(param_1 + lVar43) == *(int *)(param_3 + lVar43)) ^ bVar32; + param_5[lVar27 + 1] = -(iVar22 == iVar51) ^ bVar32; + iVar22 = *(int *)(param_3 + lVar43 + 0xc); + iVar51 = *(int *)(param_1 + lVar43 + 0xc); + param_5[lVar27 + 2] = + -(*(int *)(param_1 + lVar43 + 8) == *(int *)(param_3 + lVar43 + 8)) ^ bVar32; + param_5[lVar27 + 3] = -(iVar51 == iVar22) ^ bVar32; + if (iVar46 + 4 < iVar8) { + iVar22 = *(int *)(param_1 + lVar41 + 4); + iVar51 = *(int *)(param_3 + lVar41 + 4); + param_5[lVar28] = -(*(int *)(param_1 + lVar41) == *(int *)(param_3 + lVar41)) ^ bVar32 + ; + param_5[lVar28 + 1] = -(iVar22 == iVar51) ^ bVar32; + iVar22 = *(int *)(param_3 + lVar41 + 0xc); + iVar51 = *(int *)(param_1 + lVar41 + 0xc); + param_5[lVar28 + 2] = + -(*(int *)(param_1 + lVar41 + 8) == *(int *)(param_3 + lVar41 + 8)) ^ bVar32; + param_5[lVar28 + 3] = -(iVar51 == iVar22) ^ bVar32; + if (iVar46 + 8 < iVar8) { + iVar22 = *(int *)(param_1 + lVar40 + 4); + iVar51 = *(int *)(param_3 + lVar40 + 4); + param_5[lVar30] = + -(*(int *)(param_1 + lVar40) == *(int *)(param_3 + lVar40)) ^ bVar32; + param_5[lVar30 + 1] = -(iVar22 == iVar51) ^ bVar32; + iVar22 = *(int *)(param_3 + lVar40 + 0xc); + iVar51 = *(int *)(param_1 + lVar40 + 0xc); + param_5[lVar30 + 2] = + -(*(int *)(param_1 + lVar40 + 8) == *(int *)(param_3 + lVar40 + 8)) ^ bVar32; + param_5[lVar30 + 3] = -(iVar51 == iVar22) ^ bVar32; + } + } + } + } +LAB_002408fc: + if (iVar7 < iVar6) { + pbVar37 = param_1 + lVar38; + pbVar31 = param_3 + lVar38; + pbVar42 = param_5 + lVar33; + if ((pbVar37 < param_5 + lVar33 + (ulong)uVar9 && pbVar42 < param_1 + lVar55 || + pbVar31 < param_5 + lVar33 + (ulong)uVar9 && pbVar42 < param_3 + lVar55) || + (uVar9 < 0x12)) { + lVar36 = 0; + do { + pbVar42[lVar36] = + bVar34 ^ -(*(int *)(pbVar37 + lVar36 * 4) == *(int *)(pbVar31 + lVar36 * 4)); + lVar36 = lVar36 + 1; + } while (lVar36 != (ulong)(uint)((iVar6 + -1) - iVar7) + 1); + } + else { + uVar35 = -((uint)((ulong)pbVar37 >> 2) & 3) & 3; + uVar5 = uVar9; + if (uVar35 < uVar9) { + uVar5 = uVar35; + } + iVar22 = iVar7; + if (((uVar5 != 0) && + (*pbVar42 = bVar34 ^ -(*(int *)pbVar37 == *(int *)pbVar31), iVar22 = iVar62, + uVar5 != 1)) && + (param_5[iVar62] = + bVar34 ^ -(*(int *)(param_1 + lVar49) == *(int *)(param_3 + lVar49)), + iVar22 = iVar21, uVar5 == 3)) { + param_5[iVar21] = bVar34 ^ -(*(int *)(param_1 + lVar50) == *(int *)(param_3 + lVar50)) + ; + iVar22 = iVar7 + 3; + } + uVar35 = ((uVar9 - uVar5) - 0x10 >> 4) + 1; + iVar51 = uVar35 * 0x10; + if ((uVar9 - 1) - uVar5 != 0xe) { + uVar48 = 0; + lVar36 = lVar38 + (ulong)uVar5 * 4; + pbVar37 = param_1 + lVar36; + pbVar31 = param_3 + lVar36; + pbVar42 = param_5 + lVar33 + (ulong)uVar5; + do { + uVar48 = uVar48 + 1; + bVar64 = -((int)((ulong)*(undefined8 *)(pbVar37 + 0x18) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 0x18) >> 0x20)); + bVar63 = -((int)((ulong)*(undefined8 *)(pbVar37 + 0x38) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 0x38) >> 0x20)); + uVar12 = CONCAT12(-((int)((ulong)*(undefined8 *)pbVar37 >> 0x20) == + (int)((ulong)*(undefined8 *)pbVar31 >> 0x20)), + (ushort)(-((int)*(undefined8 *)pbVar37 == + (int)*(undefined8 *)pbVar31) & 1)) & 0x1ffff; + uVar15 = CONCAT14(-((int)*(undefined8 *)(pbVar37 + 0x18) == + (int)*(undefined8 *)(pbVar31 + 0x18)), + (uint)(CONCAT12(-((int)((ulong)*(undefined8 *)(pbVar37 + 0x10) >> + 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 0x10) >> + 0x20)), + (ushort)(-((int)*(undefined8 *)(pbVar37 + 0x10) == + (int)*(undefined8 *)(pbVar31 + 0x10)) & + 1)) & 0x1ffff)) & 0x1ffffffff; + uVar16 = CONCAT14(-((int)*(undefined8 *)(pbVar37 + 0x28) == + (int)*(undefined8 *)(pbVar31 + 0x28)), + (uint)(CONCAT12(-((int)((ulong)*(undefined8 *)(pbVar37 + 0x20) >> + 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 0x20) >> + 0x20)), + (ushort)(-((int)*(undefined8 *)(pbVar37 + 0x20) == + (int)*(undefined8 *)(pbVar31 + 0x20)) & + 1)) & 0x1ffff)) & 0x1ffffffff; + uVar17 = CONCAT14(-((int)*(undefined8 *)(pbVar37 + 0x38) == + (int)*(undefined8 *)(pbVar31 + 0x38)), + (uint)(CONCAT12(-((int)((ulong)*(undefined8 *)(pbVar37 + 0x30) >> + 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 0x30) >> + 0x20)), + (ushort)(-((int)*(undefined8 *)(pbVar37 + 0x30) == + (int)*(undefined8 *)(pbVar31 + 0x30)) & + 1)) & 0x1ffff)) & 0x1ffffffff; + uVar45 = (ulong)CONCAT15(bVar64,CONCAT14((char)(uVar15 >> 0x20), + CONCAT13((char)(uVar15 >> 0x10), + CONCAT12((char)uVar15, + CONCAT11(-((int)((ulong)* + (undefined8 *)(pbVar37 + 8) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 8) >> 0x20) + ),-((int)*(undefined8 *)(pbVar37 + 8) == + (int)*(undefined8 *)(pbVar31 + 8))))))) & + 0x1ffffff0101; + uVar18 = (ulong)CONCAT15(bVar63,CONCAT14((char)(uVar17 >> 0x20), + CONCAT13((char)(uVar17 >> 0x10), + CONCAT12((char)uVar17, + CONCAT11(-((int)((ulong)* + (undefined8 *)(pbVar37 + 0x28) >> 0x20) == + (int)((ulong)*(undefined8 *)(pbVar31 + 0x28) >> + 0x20)),(char)(uVar16 >> 0x20)))))) & + 0x1ffffff01ff; + *(ulong *)(pbVar42 + 8) = + CONCAT17(-(bVar63 & 1) ^ bVar34, + CONCAT16(-(char)(uVar18 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar18 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar18 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar18 >> 8) ^ bVar34, + CONCAT12(-(char)uVar18 ^ bVar34, + CONCAT11(-(char)(uVar16 + >> 0x10) ^ bVar34,-(char)uVar16 ^ bVar34))))))); + *(ulong *)pbVar42 = + CONCAT17(-(bVar64 & 1) ^ bVar34, + CONCAT16(-(char)(uVar45 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar45 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar45 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar45 >> 8) ^ bVar34, + CONCAT12(-(char)uVar45 ^ bVar34, + CONCAT11(-(char)(uVar12 + >> 0x10) ^ bVar34,-(char)uVar12 ^ bVar34))))))); + pbVar37 = pbVar37 + 0x40; + pbVar31 = pbVar31 + 0x40; + pbVar42 = pbVar42 + 0x10; + } while (uVar48 < uVar35); + iVar22 = iVar22 + iVar51; + if (uVar9 - uVar5 == iVar51) goto LAB_00240dc0; + } + iVar51 = iVar22 + 1; + lVar36 = (long)iVar22 * 4; + param_5[iVar22] = bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar51 < iVar6) { + iVar3 = iVar22 + 2; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)) + ; + if (iVar3 < iVar6) { + iVar51 = iVar22 + 3; + lVar36 = (long)iVar3 * 4; + param_5[iVar3] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar51 < iVar6) { + iVar3 = iVar22 + 4; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar3 < iVar6) { + iVar51 = iVar22 + 5; + lVar36 = (long)iVar3 * 4; + param_5[iVar3] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar51 < iVar6) { + iVar3 = iVar22 + 6; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar3 < iVar6) { + iVar51 = iVar22 + 7; + lVar36 = (long)iVar3 * 4; + param_5[iVar3] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar51 < iVar6) { + iVar3 = iVar22 + 8; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36)); + if (iVar3 < iVar6) { + iVar51 = iVar22 + 9; + lVar36 = (long)iVar3 * 4; + param_5[iVar3] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == *(int *)(param_3 + lVar36) + ); + if (iVar51 < iVar6) { + iVar3 = iVar22 + 10; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == + *(int *)(param_3 + lVar36)); + if (iVar3 < iVar6) { + iVar51 = iVar22 + 0xb; + lVar36 = (long)iVar3 * 4; + param_5[iVar3] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == + *(int *)(param_3 + lVar36)); + if (iVar51 < iVar6) { + iVar3 = iVar22 + 0xc; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == + *(int *)(param_3 + lVar36)); + if (iVar3 < iVar6) { + iVar51 = iVar22 + 0xd; + lVar36 = (long)iVar3 * 4; + param_5[iVar3] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == + *(int *)(param_3 + lVar36)); + if (iVar51 < iVar6) { + iVar22 = iVar22 + 0xe; + lVar36 = (long)iVar51 * 4; + param_5[iVar51] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == + *(int *)(param_3 + lVar36)); + if (iVar22 < iVar6) { + lVar36 = (long)iVar22 * 4; + param_5[iVar22] = + bVar34 ^ -(*(int *)(param_1 + lVar36) == + *(int *)(param_3 + lVar36)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00240dc0: + iVar47 = iVar47 + -1; + param_1 = param_1 + lVar65; + param_3 = param_3 + lVar66; + param_5 = param_5 + param_6; + } while (iVar47 != -1); + } + } + return; +} + + +================================================================== + +### FUNC 00240eec (5856 bytes) name=FUN_00240eec + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00240eec(float *param_1,ulong param_2,float *param_3,ulong param_4,byte *param_5, + long param_6,int *param_7,int *param_8) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + int iVar8; + uint uVar9; + ulong uVar10; + float *pfVar11; + float *pfVar12; + uint3 uVar13; + uint3 uVar14; + uint3 uVar15; + uint3 uVar16; + ulong uVar17; + ulong uVar18; + bool bVar19; + int iVar20; + int iVar21; + undefined8 *puVar22; + float *pfVar23; + float *pfVar24; + float *pfVar25; + float *pfVar26; + float *pfVar27; + float *pfVar28; + long lVar29; + byte *pbVar30; + int iVar31; + long lVar32; + byte bVar33; + byte bVar34; + uint uVar35; + uint uVar36; + uint uVar37; + float *pfVar38; + ulong uVar39; + int iVar40; + int iVar41; + float fVar42; + undefined8 uVar43; + long lVar44; + long lVar45; + float fVar46; + byte bVar48; + undefined8 uVar47; + undefined8 uVar49; + undefined8 uVar50; + uint uVar51; + long lVar52; + byte bVar53; + int iVar54; + long lVar55; + undefined8 uVar56; + undefined8 uVar57; + undefined8 uVar58; + undefined8 uVar59; + int iVar60; + long lVar61; + long lVar62; + long lVar63; + undefined8 local_10; + undefined8 local_8; + + iVar41 = *param_8; + iVar7 = *param_7; + param_2 = param_2 >> 2; + iVar40 = param_7[1]; + param_4 = param_4 >> 2; + if (iVar41 - 2U < 2) { + bVar19 = iVar41 != 2; + iVar41 = 4; + if (bVar19) { + iVar41 = 1; + } + pfVar26 = param_1; + uVar39 = param_4; + if (iVar41 == 1) { +LAB_00241adc: + bVar34 = 0; + bVar33 = 0; + } + else { +LAB_0024103c: + bVar34 = 0xff; + bVar33 = 0xff; + } + if (iVar40 != 0) { + iVar8 = iVar7 + -7; + uVar1 = iVar7 - 8U >> 3; + uVar10 = (ulong)uVar1; + pfVar28 = param_3 + 4; + pfVar38 = pfVar26 + 4; + iVar3 = iVar7 + -3; + iVar60 = (uVar1 + 1) * 8; + if (iVar41 == 1) goto LAB_00241888; + do { + if (iVar41 == 4) { + if (iVar8 < 1) goto LAB_00241ae8; + pfVar23 = pfVar28; + pfVar24 = pfVar38; + pbVar30 = param_5; + do { + pfVar27 = pfVar24 + -4; + pfVar25 = pfVar23 + 8; + pfVar12 = pfVar24 + -2; + pfVar11 = pfVar24 + 2; + uVar43 = *(undefined8 *)pfVar24; + pfVar24 = pfVar24 + 8; + *(ulong *)pbVar30 = + CONCAT17(-((float)((ulong)*(undefined8 *)(pfVar23 + 2) >> 0x20) <= + (float)((ulong)*(undefined8 *)pfVar11 >> 0x20)), + CONCAT16(-((float)*(undefined8 *)(pfVar23 + 2) <= + (float)*(undefined8 *)pfVar11), + CONCAT15(-((float)((ulong)*(undefined8 *)pfVar23 >> 0x20) <= + (float)((ulong)uVar43 >> 0x20)), + CONCAT14(-((float)*(undefined8 *)pfVar23 <= + (float)uVar43), + CONCAT13(-((float)((ulong)*(undefined8 *) + (pfVar23 + -2) >> + 0x20) <= + (float)((ulong)*(undefined8 *)pfVar12 + >> 0x20)), + CONCAT12(-((float)*(undefined8 *) + (pfVar23 + -2) <= + (float)*(undefined8 *) + pfVar12), + CONCAT11(-((float)((ulong)*( + undefined8 *)(pfVar23 + -4) >> 0x20) <= + (float)((ulong)*(undefined8 *)pfVar27 >> 0x20)), + -((float)*(undefined8 *)(pfVar23 + -4) <= + (float)*(undefined8 *)pfVar27)))))))); + pfVar23 = pfVar25; + pbVar30 = pbVar30 + 8; + iVar20 = iVar60; + } while (pfVar25 != param_3 + uVar10 * 8 + 0xc); + } + else if (iVar41 == 0) { + if (iVar8 < 1) { + iVar20 = 0; + } + else { + pfVar23 = pfVar28; + pfVar24 = pfVar38; + pbVar30 = param_5; + do { + pfVar27 = pfVar24 + -4; + pfVar25 = pfVar23 + 8; + pfVar11 = pfVar24 + -2; + pfVar12 = pfVar24 + 2; + uVar43 = *(undefined8 *)pfVar24; + pfVar24 = pfVar24 + 8; + *(ulong *)pbVar30 = + CONCAT17(-((float)((ulong)*(undefined8 *)(pfVar23 + 2) >> 0x20) == + (float)((ulong)*(undefined8 *)pfVar12 >> 0x20)), + CONCAT16(-((float)*(undefined8 *)(pfVar23 + 2) == + (float)*(undefined8 *)pfVar12), + CONCAT15(-((float)((ulong)*(undefined8 *)pfVar23 >> 0x20) == + (float)((ulong)uVar43 >> 0x20)), + CONCAT14(-((float)*(undefined8 *)pfVar23 == + (float)uVar43), + CONCAT13(-((float)((ulong)*(undefined8 *) + (pfVar23 + -2) >> + 0x20) == + (float)((ulong)*(undefined8 *) + pfVar11 >> 0x20)), + CONCAT12(-((float)*(undefined8 *) + (pfVar23 + -2) == + (float)*(undefined8 *) + pfVar11), + CONCAT11(-((float)((ulong)* + (undefined8 *)(pfVar23 + -4) >> 0x20) == + (float)((ulong)*(undefined8 *)pfVar27 >> 0x20)), + -((float)*(undefined8 *)(pfVar23 + -4) == + (float)*(undefined8 *)pfVar27)))))))); + pfVar23 = pfVar25; + pbVar30 = pbVar30 + 8; + iVar20 = iVar60; + } while (pfVar25 != param_3 + uVar10 * 8 + 0xc); + } + } + else { + iVar20 = 0; + if ((iVar41 == 5) && (0 < iVar8)) { + pfVar24 = pfVar28; + pfVar23 = pfVar38; + pbVar30 = param_5; + do { + pfVar25 = pfVar24 + 8; + *(ulong *)pbVar30 = + CONCAT17(~-((float)((ulong)*(undefined8 *)(pfVar24 + 2) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar23 + 2) >> 0x20)), + CONCAT16(~-((float)*(undefined8 *)(pfVar24 + 2) == + (float)*(undefined8 *)(pfVar23 + 2)), + CONCAT15(~-((float)((ulong)*(undefined8 *)pfVar24 >> 0x20) == + (float)((ulong)*(undefined8 *)pfVar23 >> 0x20)), + CONCAT14(~-((float)*(undefined8 *)pfVar24 == + (float)*(undefined8 *)pfVar23), + CONCAT13(~-((float)((ulong)*(undefined8 *) + (pfVar24 + -2) >> + 0x20) == + (float)((ulong)*(undefined8 *) + (pfVar23 + -2) >> + 0x20)), + CONCAT12(~-((float)*(undefined8 *) + (pfVar24 + -2) + == (float)*(undefined8 *) + (pfVar23 + -2) + ),CONCAT11(~-((float)(( + ulong)*(undefined8 *)(pfVar24 + -4) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar23 + -4) >> + 0x20)), + ~-((float)*(undefined8 *)(pfVar24 + -4) == + (float)*(undefined8 *)(pfVar23 + -4))))))))); + pfVar24 = pfVar25; + pfVar23 = pfVar23 + 8; + pbVar30 = pbVar30 + 8; + iVar20 = iVar60; + } while (pfVar25 != param_3 + uVar10 * 8 + 0xc); + } + } +LAB_0024113c: + if (iVar20 < iVar3) { + lVar62 = (long)iVar20; + pfVar24 = (float *)(param_5 + lVar62); + uVar35 = (iVar7 + -4) - iVar20; + uVar2 = uVar35 >> 2; + pfVar23 = param_3 + lVar62; + uVar1 = uVar2 + 1; + lVar61 = lVar62 + (ulong)uVar1 * 4; + pfVar25 = pfVar26 + lVar62; + if ((pfVar24 < param_3 + lVar61 && pfVar23 < param_5 + lVar61 || + pfVar24 < pfVar26 + lVar61 && pfVar25 < param_5 + lVar61) || (uVar1 < 4)) { + do { + pfVar11 = pfVar24 + 1; + fVar42 = *pfVar23; + fVar46 = *pfVar25; + *(byte *)((long)pfVar24 + 1) = -(pfVar25[1] < pfVar23[1]) ^ bVar33; + *(byte *)pfVar24 = -(fVar46 < fVar42) ^ bVar33; + fVar42 = pfVar23[2]; + fVar46 = pfVar25[2]; + *(byte *)((long)pfVar24 + 3) = -(pfVar25[3] < pfVar23[3]) ^ bVar33; + *(byte *)((long)pfVar24 + 2) = -(fVar46 < fVar42) ^ bVar33; + pfVar25 = pfVar25 + 4; + pfVar24 = pfVar11; + pfVar23 = pfVar23 + 4; + } while (pfVar11 != (float *)(param_5 + lVar62 + 4 + (ulong)uVar2 * 4)); + } + else { + uVar37 = (uVar2 - 3 >> 2) + 1; + iVar21 = iVar20; + if (0xb < uVar35) { + uVar35 = 0; + do { + uVar57 = *(undefined8 *)(pfVar25 + 2); + uVar56 = *(undefined8 *)pfVar25; + uVar50 = *(undefined8 *)(pfVar23 + 2); + uVar49 = *(undefined8 *)pfVar23; + uVar35 = uVar35 + 1; + uVar59 = *(undefined8 *)(pfVar25 + 6); + uVar58 = *(undefined8 *)(pfVar25 + 4); + uVar47 = *(undefined8 *)(pfVar23 + 6); + uVar43 = *(undefined8 *)(pfVar23 + 4); + *(ulong *)(pfVar24 + 2) = + CONCAT17(-(-((float)((ulong)*(undefined8 *)(pfVar25 + 0xe) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar23 + 0xe) >> 0x20)) & 1U) ^ + bVar33,CONCAT16(-(-((float)*(undefined8 *)(pfVar25 + 0xe) < + (float)*(undefined8 *)(pfVar23 + 0xe)) & 1U) ^ + bVar33,CONCAT15(-(-((float)((ulong)*(undefined8 *) + (pfVar25 + 0xc) >> + 0x20) < + (float)((ulong)*(undefined8 *) + (pfVar23 + 0xc) >> + 0x20)) & 1U) ^ bVar33, + CONCAT14(-(-((float)*(undefined8 *) + (pfVar25 + 0xc) < + (float)*(undefined8 *) + (pfVar23 + 0xc)) & + 1U) ^ bVar33, + CONCAT13(-(-((float)((ulong)* + (undefined8 *)(pfVar25 + 10) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar23 + 10) >> + 0x20)) & 1U) ^ bVar33, + CONCAT12(-(-((float)*(undefined8 *)(pfVar25 + 10) + < (float)*(undefined8 *)(pfVar23 + 10) + ) & 1U) ^ bVar33, + CONCAT11(-(-((float)((ulong)*(undefined8 + *)(pfVar25 + + 8) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar23 + 8) >> + 0x20)) & 1U) ^ bVar33, + -(-((float)*(undefined8 *)(pfVar25 + 8) < + (float)*(undefined8 *)(pfVar23 + 8)) & 1U) ^ + bVar33))))))); + *(ulong *)pfVar24 = + CONCAT17(-(-((float)((ulong)uVar59 >> 0x20) < (float)((ulong)uVar47 >> 0x20)) & + 1U) ^ bVar33, + CONCAT16(-(-((float)uVar59 < (float)uVar47) & 1U) ^ bVar33, + CONCAT15(-(-((float)((ulong)uVar58 >> 0x20) < + (float)((ulong)uVar43 >> 0x20)) & 1U) ^ bVar33, + CONCAT14(-(-((float)uVar58 < (float)uVar43) & 1U) ^ + bVar33,CONCAT13(-(-((float)((ulong)uVar57 + >> 0x20) < + (float)((ulong)uVar50 >> + 0x20)) & 1U) ^ + bVar33,CONCAT12(-(-((float) + uVar57 < (float)uVar50) & 1U) ^ bVar33, + CONCAT11(-(-((float)((ulong)uVar56 >> 0x20) < + (float)((ulong)uVar49 >> 0x20)) & 1U) + ^ bVar33,-(-((float)uVar56 < + (float)uVar49) & 1U) ^ bVar33 + ))))))); + pfVar25 = pfVar25 + 0x10; + pfVar24 = pfVar24 + 4; + pfVar23 = pfVar23 + 0x10; + } while (uVar35 < uVar37); + iVar21 = iVar20 + uVar37 * 0x10; + if (uVar1 == uVar37 * 4) goto LAB_00241404; + } + iVar4 = iVar21 + 4; + fVar46 = pfVar26[(long)iVar21 + 1]; + fVar42 = param_3[(long)iVar21 + 1]; + param_5[iVar21] = -(pfVar26[iVar21] < param_3[iVar21]) ^ bVar33; + param_5[(long)iVar21 + 1] = -(fVar46 < fVar42) ^ bVar33; + fVar42 = param_3[(long)iVar21 + 2]; + fVar46 = pfVar26[(long)iVar21 + 2]; + param_5[(long)iVar21 + 3] = + -(pfVar26[(long)iVar21 + 3] < param_3[(long)iVar21 + 3]) ^ bVar33; + param_5[(long)iVar21 + 2] = -(fVar46 < fVar42) ^ bVar33; + if (iVar4 < iVar3) { + iVar21 = iVar21 + 8; + fVar46 = pfVar26[(long)iVar4 + 1]; + fVar42 = param_3[(long)iVar4 + 1]; + param_5[iVar4] = -(pfVar26[iVar4] < param_3[iVar4]) ^ bVar33; + param_5[(long)iVar4 + 1] = -(fVar46 < fVar42) ^ bVar33; + fVar42 = param_3[(long)iVar4 + 2]; + fVar46 = pfVar26[(long)iVar4 + 2]; + param_5[(long)iVar4 + 3] = + -(pfVar26[(long)iVar4 + 3] < param_3[(long)iVar4 + 3]) ^ bVar33; + param_5[(long)iVar4 + 2] = -(fVar46 < fVar42) ^ bVar33; + if (iVar21 < iVar3) { + fVar46 = pfVar26[(long)iVar21 + 1]; + fVar42 = param_3[(long)iVar21 + 1]; + param_5[iVar21] = -(pfVar26[iVar21] < param_3[iVar21]) ^ bVar33; + param_5[(long)iVar21 + 1] = -(fVar46 < fVar42) ^ bVar33; + fVar42 = param_3[(long)iVar21 + 2]; + fVar46 = pfVar26[(long)iVar21 + 2]; + param_5[(long)iVar21 + 3] = + -(pfVar26[(long)iVar21 + 3] < param_3[(long)iVar21 + 3]) ^ bVar33; + param_5[(long)iVar21 + 2] = -(fVar46 < fVar42) ^ bVar33; + } + } + } +LAB_00241404: + iVar20 = iVar20 + 4 + uVar2 * 4; + } + if (iVar20 < iVar7) { + lVar62 = (long)iVar20; + uVar1 = iVar7 - iVar20; + lVar61 = lVar62 + (ulong)uVar1; + pfVar24 = (float *)(param_5 + lVar62); + pfVar23 = param_3 + lVar62; + if ((pfVar24 < param_3 + lVar61 && pfVar23 < param_5 + lVar61 || + pfVar24 < pfVar26 + lVar61 && pfVar26 + lVar62 < param_5 + lVar61) || (uVar1 < 0x12)) + { + lVar61 = 0; + do { + *(byte *)((long)pfVar24 + lVar61) = + bVar34 ^ -((pfVar26 + lVar62)[lVar61] < pfVar23[lVar61]); + lVar61 = lVar61 + 1; + } while (lVar61 != (ulong)(uint)((iVar7 + -1) - iVar20) + 1); + } + else { + uVar2 = -((uint)((ulong)pfVar23 >> 2) & 3) & 3; + if (uVar1 < uVar2) { + uVar2 = uVar1; + } + iVar21 = iVar20; + if (uVar2 != 0) { + iVar4 = iVar20 + 1; + *(byte *)pfVar24 = bVar34 ^ -(pfVar26[lVar62] < param_3[lVar62]); + iVar21 = iVar4; + if (uVar2 != 1) { + iVar21 = iVar20 + 2; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (uVar2 == 3) { + param_5[iVar21] = bVar34 ^ -(pfVar26[iVar21] < param_3[iVar21]); + iVar21 = iVar20 + 3; + } + } + } + uVar35 = ((uVar1 - uVar2) - 0x10 >> 4) + 1; + iVar20 = uVar35 * 0x10; + if (uVar1 - 0xf != uVar2) { + uVar37 = 0; + pfVar24 = param_3 + (ulong)uVar2 + lVar62; + pbVar30 = param_5 + (ulong)uVar2 + lVar62; + pfVar23 = pfVar26 + (ulong)uVar2 + lVar62; + do { + uVar37 = uVar37 + 1; + bVar53 = -((float)((ulong)*(undefined8 *)(pfVar23 + 6) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 6) >> 0x20)); + bVar48 = -((float)((ulong)*(undefined8 *)(pfVar23 + 0xe) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 0xe) >> 0x20)); + uVar13 = CONCAT12(-((float)((ulong)*(undefined8 *)pfVar23 >> 0x20) < + (float)((ulong)*(undefined8 *)pfVar24 >> 0x20)), + (ushort)(-((float)*(undefined8 *)pfVar23 < + (float)*(undefined8 *)pfVar24) & 1)) & 0x1ffff; + uVar14 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar23 + 4) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 4) >> 0x20)), + (ushort)(-((float)*(undefined8 *)(pfVar23 + 4) < + (float)*(undefined8 *)(pfVar24 + 4)) & 1)) & 0x1ffff; + uVar15 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar23 + 8) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 8) >> 0x20)), + (ushort)(-((float)*(undefined8 *)(pfVar23 + 8) < + (float)*(undefined8 *)(pfVar24 + 8)) & 1)) & 0x1ffff; + uVar16 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar23 + 0xc) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 0xc) >> 0x20)), + (ushort)(-((float)*(undefined8 *)(pfVar23 + 0xc) < + (float)*(undefined8 *)(pfVar24 + 0xc)) & 1)) & 0x1ffff; + uVar17 = (ulong)CONCAT15(bVar53,CONCAT14(-((float)*(undefined8 *)(pfVar23 + 6) < + (float)*(undefined8 *)(pfVar24 + 6)), + CONCAT13((char)(uVar14 >> 0x10), + CONCAT12((char)uVar14, + CONCAT11(-((float)((ulong + )*(undefined8 *)(pfVar23 + 2) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 2) >> + 0x20)), + -((float)*(undefined8 *)(pfVar23 + 2) < + (float)*(undefined8 *)(pfVar24 + 2))))))) & + 0x101ffff0101; + uVar18 = (ulong)CONCAT15(bVar48,CONCAT14(-((float)*(undefined8 *)(pfVar23 + 0xe) < + (float)*(undefined8 *)(pfVar24 + 0xe)), + CONCAT13((char)(uVar16 >> 0x10), + CONCAT12((char)uVar16, + CONCAT11(-((float)((ulong + )*(undefined8 *)(pfVar23 + 10) >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar24 + 10) >> + 0x20)), + -((float)*(undefined8 *)(pfVar23 + 10) < + (float)*(undefined8 *)(pfVar24 + 10))))))) & + 0x101ffff0101; + *(ulong *)(pbVar30 + 8) = + CONCAT17(-(bVar48 & 1) ^ bVar34, + CONCAT16(-(char)(uVar18 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar18 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar18 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar18 >> 8) ^ bVar34, + CONCAT12(-(char)uVar18 ^ bVar34, + CONCAT11(-(char)(uVar15 + >> 0x10) ^ bVar34,-(char)uVar15 ^ bVar34))))))); + *(ulong *)pbVar30 = + CONCAT17(-(bVar53 & 1) ^ bVar34, + CONCAT16(-(char)(uVar17 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar17 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar17 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar17 >> 8) ^ bVar34, + CONCAT12(-(char)uVar17 ^ bVar34, + CONCAT11(-(char)(uVar13 + >> 0x10) ^ bVar34,-(char)uVar13 ^ bVar34))))))); + pfVar24 = pfVar24 + 0x10; + pbVar30 = pbVar30 + 0x10; + pfVar23 = pfVar23 + 0x10; + } while (uVar37 < uVar35); + iVar21 = iVar21 + iVar20; + if (iVar20 == uVar1 - uVar2) goto LAB_00241864; + } + iVar20 = iVar21 + 1; + param_5[iVar21] = bVar34 ^ -(pfVar26[iVar21] < param_3[iVar21]); + if (iVar20 < iVar7) { + iVar4 = iVar21 + 2; + param_5[iVar20] = bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar4 < iVar7) { + iVar20 = iVar21 + 3; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (iVar20 < iVar7) { + iVar4 = iVar21 + 4; + param_5[iVar20] = bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar4 < iVar7) { + iVar20 = iVar21 + 5; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (iVar20 < iVar7) { + iVar4 = iVar21 + 6; + param_5[iVar20] = bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar4 < iVar7) { + iVar20 = iVar21 + 7; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (iVar20 < iVar7) { + iVar4 = iVar21 + 8; + param_5[iVar20] = bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar4 < iVar7) { + iVar20 = iVar21 + 9; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (iVar20 < iVar7) { + iVar4 = iVar21 + 10; + param_5[iVar20] = bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar4 < iVar7) { + iVar20 = iVar21 + 0xb; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (iVar20 < iVar7) { + iVar4 = iVar21 + 0xc; + param_5[iVar20] = bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar4 < iVar7) { + iVar20 = iVar21 + 0xd; + param_5[iVar4] = bVar34 ^ -(pfVar26[iVar4] < param_3[iVar4]); + if (iVar20 < iVar7) { + iVar21 = iVar21 + 0xe; + param_5[iVar20] = + bVar34 ^ -(pfVar26[iVar20] < param_3[iVar20]); + if (iVar21 < iVar7) { + param_5[iVar21] = + bVar34 ^ -(pfVar26[iVar21] < param_3[iVar21]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00241864: + iVar40 = iVar40 + -1; + param_5 = param_5 + param_6; + pfVar28 = pfVar28 + uVar39; + pfVar38 = pfVar38 + param_2; + if (iVar40 == 0) { + return; + } + pfVar26 = pfVar38 + -4; + param_3 = pfVar28 + -4; + } while (iVar41 != 1); +LAB_00241888: + if (iVar8 < 1) { +LAB_00241ae8: + iVar20 = 0; + } + else { + pfVar23 = pfVar28; + pfVar24 = pfVar38; + pbVar30 = param_5; + do { + pfVar27 = pfVar24 + -4; + pfVar25 = pfVar23 + 8; + pfVar11 = pfVar24 + -2; + pfVar12 = pfVar24 + 2; + uVar43 = *(undefined8 *)pfVar24; + pfVar24 = pfVar24 + 8; + *(ulong *)pbVar30 = + CONCAT17(-((float)((ulong)*(undefined8 *)pfVar12 >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar23 + 2) >> 0x20)), + CONCAT16(-((float)*(undefined8 *)pfVar12 < + (float)*(undefined8 *)(pfVar23 + 2)), + CONCAT15(-((float)((ulong)uVar43 >> 0x20) < + (float)((ulong)*(undefined8 *)pfVar23 >> 0x20)), + CONCAT14(-((float)uVar43 < (float)*(undefined8 *)pfVar23), + CONCAT13(-((float)((ulong)*(undefined8 *)pfVar11 + >> 0x20) < + (float)((ulong)*(undefined8 *) + (pfVar23 + -2) >> 0x20) + ),CONCAT12(-((float)*(undefined8 *) + pfVar11 < + (float)*(undefined8 *) + (pfVar23 + -2)), + CONCAT11(-((float)((ulong)*( + undefined8 *)pfVar27 >> 0x20) < + (float)((ulong)*(undefined8 *)(pfVar23 + -4) >> + 0x20)), + -((float)*(undefined8 *)pfVar27 < + (float)*(undefined8 *)(pfVar23 + -4))))))))); + pfVar23 = pfVar25; + pbVar30 = pbVar30 + 8; + iVar20 = iVar60; + } while (pfVar25 != param_3 + uVar10 * 8 + 0xc); + } + goto LAB_0024113c; + } + } + else { + if (iVar41 == 5 || iVar41 == 0) { + if (iVar41 == 4 || iVar41 == 1) goto LAB_00241034; + } + else { + if (iVar41 == 4 || iVar41 == 1) { +LAB_00241034: + pfVar26 = param_3; + param_3 = param_1; + uVar39 = param_2; + param_2 = param_4; + if (iVar41 == 1) goto LAB_00241adc; + goto LAB_0024103c; + } + local_10 = 0; + local_8 = 0; + puVar22 = (undefined8 *)cv::String::allocate((String *)&local_10,0x44); + uVar59 = _LAB_00460708; + uVar58 = DAT_00460700; + uVar57 = DAT_004606f8; + uVar56 = DAT_004606f0; + uVar50 = DAT_004606e8; + uVar49 = DAT_004606e0; + uVar47 = DAT_004606d8; + uVar43 = DAT_004606d0; + *(undefined4 *)(puVar22 + 8) = DAT_00460710; + *puVar22 = uVar43; + puVar22[1] = uVar47; + puVar22[2] = uVar49; + puVar22[3] = uVar50; + puVar22[4] = uVar56; + puVar22[5] = uVar57; + puVar22[6] = uVar58; + puVar22[7] = uVar59; + cv::error(-0xd7,(String *)&local_10,"cv::Cmp_SIMD::Cmp_SIMD(int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x10da); + cv::String::deallocate((String *)&local_10); + } + if (iVar41 == 5) { + bVar34 = 0xff; + bVar33 = 0xff; + } + else { + if (iVar41 != 0) { + return; + } + bVar34 = 0; + bVar33 = 0; + } + iVar41 = iVar40 + -1; + if (iVar40 != 0) { + uVar37 = iVar7 - 4; + iVar8 = iVar7 + -3; + uVar35 = uVar37 >> 2; + uVar1 = uVar35 + 1; + uVar2 = (uVar35 - 3 >> 2) + 1; + iVar40 = uVar2 * 0x10; + lVar61 = NEON_shl(param_2,2); + if (uVar37 < 0xc) { + iVar40 = 0; + } + lVar62 = NEON_shl(param_4,2); + iVar60 = uVar1 * 4; + iVar3 = iVar40 + 4; + if (iVar8 < 1) { + iVar60 = 0; + } + lVar52 = NEON_shl((ulong)uVar1,4); + lVar63 = NEON_shl((ulong)uVar1,2); + iVar20 = iVar40 + 8; + iVar21 = iVar60 + 1; + iVar4 = iVar60 + 2; + uVar9 = iVar7 - iVar60; + lVar32 = (long)iVar60; + lVar44 = NEON_shl((long)iVar21,2); + lVar55 = NEON_shl(lVar32 + (ulong)uVar9,2); + lVar45 = NEON_shl((long)iVar4,2); + do { + if (0 < iVar8) { + if ((param_1 < param_5 + lVar63 && param_5 < (byte *)((long)param_1 + lVar52) || + param_3 < param_5 + lVar63 && param_5 < (byte *)((long)param_3 + lVar52)) || + (uVar1 < 4)) { + pfVar26 = param_3 + 1; + pbVar30 = param_5; + pfVar28 = param_1; + do { + pfVar38 = pfVar26 + 4; + fVar42 = *pfVar28; + fVar46 = pfVar26[-1]; + pbVar30[1] = -(pfVar28[1] == *pfVar26) ^ bVar33; + *pbVar30 = -(fVar42 == fVar46) ^ bVar33; + fVar46 = pfVar26[1]; + fVar42 = pfVar28[2]; + pbVar30[3] = -(pfVar28[3] == pfVar26[2]) ^ bVar33; + pbVar30[2] = -(fVar42 == fVar46) ^ bVar33; + pfVar26 = pfVar38; + pbVar30 = pbVar30 + 4; + pfVar28 = pfVar28 + 4; + } while (pfVar38 != param_3 + (ulong)uVar35 * 4 + 5); + } + else { + if (0xb < uVar37) { + uVar36 = 0; + pfVar26 = param_3; + pfVar28 = param_1; + pbVar30 = param_5; + do { + uVar50 = *(undefined8 *)(pfVar28 + 2); + uVar49 = *(undefined8 *)pfVar28; + uVar59 = *(undefined8 *)(pfVar26 + 2); + uVar58 = *(undefined8 *)pfVar26; + uVar36 = uVar36 + 1; + uVar47 = *(undefined8 *)(pfVar28 + 6); + uVar43 = *(undefined8 *)(pfVar28 + 4); + uVar57 = *(undefined8 *)(pfVar26 + 6); + uVar56 = *(undefined8 *)(pfVar26 + 4); + *(ulong *)(pbVar30 + 8) = + CONCAT17(-(-((float)((ulong)*(undefined8 *)(pfVar28 + 0xe) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar26 + 0xe) >> 0x20)) & 1U) ^ + bVar33,CONCAT16(-(-((float)*(undefined8 *)(pfVar28 + 0xe) == + (float)*(undefined8 *)(pfVar26 + 0xe)) & 1U) ^ + bVar33,CONCAT15(-(-((float)((ulong)*(undefined8 *) + (pfVar28 + 0xc) >> + 0x20) == + (float)((ulong)*(undefined8 *) + (pfVar26 + 0xc) >> + 0x20)) & 1U) ^ bVar33, + CONCAT14(-(-((float)*(undefined8 *) + (pfVar28 + 0xc) + == (float)*(undefined8 *) + (pfVar26 + 0xc) + ) & 1U) ^ bVar33, + CONCAT13(-(-((float)((ulong)* + (undefined8 *)(pfVar28 + 10) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar26 + 10) >> + 0x20)) & 1U) ^ bVar33, + CONCAT12(-(-((float)*(undefined8 *)(pfVar28 + 10) + == (float)*(undefined8 *) + (pfVar26 + 10)) & 1U) ^ + bVar33,CONCAT11(-(-((float)((ulong)*( + undefined8 *)(pfVar28 + 8) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar26 + 8) >> + 0x20)) & 1U) ^ bVar33, + -(-((float)*(undefined8 *)(pfVar28 + 8) == + (float)*(undefined8 *)(pfVar26 + 8)) & 1U) ^ + bVar33))))))); + *(ulong *)pbVar30 = + CONCAT17(-(-((float)((ulong)uVar47 >> 0x20) == (float)((ulong)uVar57 >> 0x20)) + & 1U) ^ bVar33, + CONCAT16(-(-((float)uVar47 == (float)uVar57) & 1U) ^ bVar33, + CONCAT15(-(-((float)((ulong)uVar43 >> 0x20) == + (float)((ulong)uVar56 >> 0x20)) & 1U) ^ bVar33, + CONCAT14(-(-((float)uVar43 == (float)uVar56) & 1U) ^ + bVar33,CONCAT13(-(-((float)((ulong)uVar50 + >> 0x20) == + (float)((ulong)uVar59 >> + 0x20)) & 1U) ^ + bVar33,CONCAT12(-(-((float) + uVar50 == (float)uVar59) & 1U) ^ bVar33, + CONCAT11(-(-((float)((ulong)uVar49 >> 0x20) == + (float)((ulong)uVar58 >> 0x20)) & 1U) + ^ bVar33,-(-((float)uVar49 == + (float)uVar58) & 1U) ^ bVar33 + ))))))); + pfVar26 = pfVar26 + 0x10; + pfVar28 = pfVar28 + 0x10; + pbVar30 = pbVar30 + 0x10; + } while (uVar36 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_00242000; + } + fVar46 = param_1[(long)iVar40 + 1]; + fVar42 = param_3[(long)iVar40 + 1]; + param_5[iVar40] = -(param_1[iVar40] == param_3[iVar40]) ^ bVar33; + param_5[(long)iVar40 + 1] = -(fVar46 == fVar42) ^ bVar33; + fVar46 = param_1[(long)iVar40 + 3]; + fVar42 = param_3[(long)iVar40 + 3]; + param_5[(long)iVar40 + 2] = + -(param_1[(long)iVar40 + 2] == param_3[(long)iVar40 + 2]) ^ bVar33; + param_5[(long)iVar40 + 3] = -(fVar46 == fVar42) ^ bVar33; + if (iVar3 < iVar8) { + fVar46 = param_1[(long)iVar3 + 1]; + fVar42 = param_3[(long)iVar3 + 1]; + param_5[iVar3] = -(param_1[iVar3] == param_3[iVar3]) ^ bVar33; + param_5[(long)iVar3 + 1] = -(fVar46 == fVar42) ^ bVar33; + fVar46 = param_1[(long)iVar3 + 3]; + fVar42 = param_3[(long)iVar3 + 3]; + param_5[(long)iVar3 + 2] = + -(param_1[(long)iVar3 + 2] == param_3[(long)iVar3 + 2]) ^ bVar33; + param_5[(long)iVar3 + 3] = -(fVar46 == fVar42) ^ bVar33; + if (iVar20 < iVar8) { + fVar46 = param_1[(long)iVar20 + 1]; + fVar42 = param_3[(long)iVar20 + 1]; + param_5[iVar20] = -(param_1[iVar20] == param_3[iVar20]) ^ bVar33; + param_5[(long)iVar20 + 1] = -(fVar46 == fVar42) ^ bVar33; + fVar46 = param_1[(long)iVar20 + 3]; + fVar42 = param_3[(long)iVar20 + 3]; + param_5[(long)iVar20 + 2] = + -(param_1[(long)iVar20 + 2] == param_3[(long)iVar20 + 2]) ^ bVar33; + param_5[(long)iVar20 + 3] = -(fVar46 == fVar42) ^ bVar33; + } + } + } + } +LAB_00242000: + if (iVar60 < iVar7) { + pfVar26 = param_1 + lVar32; + pbVar30 = param_5 + lVar32; + pfVar28 = param_3 + lVar32; + if ((pfVar26 < param_5 + lVar32 + (ulong)uVar9 && + pbVar30 < (byte *)((long)param_1 + lVar55) || + pfVar28 < param_5 + lVar32 + (ulong)uVar9 && + pbVar30 < (byte *)((long)param_3 + lVar55)) || (uVar9 < 0x12)) { + lVar29 = 0; + do { + pbVar30[lVar29] = bVar34 ^ -(pfVar26[lVar29] == pfVar28[lVar29]); + lVar29 = lVar29 + 1; + } while (lVar29 != (ulong)(uint)((iVar7 + -1) - iVar60) + 1); + } + else { + uVar36 = -((uint)((ulong)pfVar26 >> 2) & 3) & 3; + uVar6 = uVar9; + if (uVar36 < uVar9) { + uVar6 = uVar36; + } + iVar31 = iVar60; + if (((uVar6 != 0) && + (*pbVar30 = bVar34 ^ -(*pfVar26 == *pfVar28), iVar31 = iVar21, uVar6 != 1)) && + (param_5[iVar21] = + bVar34 ^ -(*(float *)((long)param_1 + lVar44) == + *(float *)((long)param_3 + lVar44)), iVar31 = iVar4, uVar6 == 3)) { + param_5[iVar4] = + bVar34 ^ -(*(float *)((long)param_1 + lVar45) == + *(float *)((long)param_3 + lVar45)); + iVar31 = iVar60 + 3; + } + uVar36 = ((uVar9 - uVar6) - 0x10 >> 4) + 1; + iVar54 = uVar36 * 0x10; + if ((uVar9 - 1) - uVar6 != 0xe) { + uVar51 = 0; + pfVar26 = param_1 + (ulong)uVar6 + lVar32; + pfVar28 = param_3 + (ulong)uVar6 + lVar32; + pbVar30 = param_5 + lVar32 + (ulong)uVar6; + do { + uVar51 = uVar51 + 1; + bVar53 = -((float)((ulong)*(undefined8 *)(pfVar26 + 6) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 6) >> 0x20)); + bVar48 = -((float)((ulong)*(undefined8 *)(pfVar26 + 0xe) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 0xe) >> 0x20)); + uVar13 = CONCAT12(-((float)((ulong)*(undefined8 *)pfVar26 >> 0x20) == + (float)((ulong)*(undefined8 *)pfVar28 >> 0x20)), + (ushort)(-((float)*(undefined8 *)pfVar26 == + (float)*(undefined8 *)pfVar28) & 1)) & 0x1ffff; + uVar14 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar26 + 4) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 4) >> 0x20)), + (ushort)(-((float)*(undefined8 *)(pfVar26 + 4) == + (float)*(undefined8 *)(pfVar28 + 4)) & 1)) & 0x1ffff; + uVar15 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar26 + 8) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 8) >> 0x20)), + (ushort)(-((float)*(undefined8 *)(pfVar26 + 8) == + (float)*(undefined8 *)(pfVar28 + 8)) & 1)) & 0x1ffff; + uVar16 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar26 + 0xc) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 0xc) >> 0x20)), + (ushort)(-((float)*(undefined8 *)(pfVar26 + 0xc) == + (float)*(undefined8 *)(pfVar28 + 0xc)) & 1)) & 0x1ffff; + uVar39 = (ulong)CONCAT15(bVar53,CONCAT14(-((float)*(undefined8 *)(pfVar26 + 6) == + (float)*(undefined8 *)(pfVar28 + 6)), + CONCAT13((char)(uVar14 >> 0x10), + CONCAT12((char)uVar14, + CONCAT11(-((float)((ulong + )*(undefined8 *)(pfVar26 + 2) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 2) >> + 0x20)), + -((float)*(undefined8 *)(pfVar26 + 2) == + (float)*(undefined8 *)(pfVar28 + 2))))))) & + 0x101ffff0101; + uVar10 = (ulong)CONCAT15(bVar48,CONCAT14(-((float)*(undefined8 *)(pfVar26 + 0xe) == + (float)*(undefined8 *)(pfVar28 + 0xe)), + CONCAT13((char)(uVar16 >> 0x10), + CONCAT12((char)uVar16, + CONCAT11(-((float)((ulong + )*(undefined8 *)(pfVar26 + 10) >> 0x20) == + (float)((ulong)*(undefined8 *)(pfVar28 + 10) >> + 0x20)), + -((float)*(undefined8 *)(pfVar26 + 10) == + (float)*(undefined8 *)(pfVar28 + 10))))))) & + 0x101ffff0101; + *(ulong *)(pbVar30 + 8) = + CONCAT17(-(bVar48 & 1) ^ bVar34, + CONCAT16(-(char)(uVar10 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar10 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar10 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar10 >> 8) ^ bVar34, + CONCAT12(-(char)uVar10 ^ bVar34, + CONCAT11(-(char)(uVar15 + >> 0x10) ^ bVar34,-(char)uVar15 ^ bVar34))))))); + *(ulong *)pbVar30 = + CONCAT17(-(bVar53 & 1) ^ bVar34, + CONCAT16(-(char)(uVar39 >> 0x20) ^ bVar34, + CONCAT15(-(char)(uVar39 >> 0x18) ^ bVar34, + CONCAT14(-(char)(uVar39 >> 0x10) ^ bVar34, + CONCAT13(-(char)(uVar39 >> 8) ^ bVar34, + CONCAT12(-(char)uVar39 ^ bVar34, + CONCAT11(-(char)(uVar13 + >> 0x10) ^ bVar34,-(char)uVar13 ^ bVar34))))))); + pfVar26 = pfVar26 + 0x10; + pfVar28 = pfVar28 + 0x10; + pbVar30 = pbVar30 + 0x10; + } while (uVar51 < uVar36); + iVar31 = iVar31 + iVar54; + if (uVar9 - uVar6 == iVar54) goto LAB_002424c0; + } + iVar54 = iVar31 + 1; + param_5[iVar31] = bVar34 ^ -(param_1[iVar31] == param_3[iVar31]); + if (iVar54 < iVar7) { + iVar5 = iVar31 + 2; + param_5[iVar54] = bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar5 < iVar7) { + iVar54 = iVar31 + 3; + param_5[iVar5] = bVar34 ^ -(param_1[iVar5] == param_3[iVar5]); + if (iVar54 < iVar7) { + iVar5 = iVar31 + 4; + param_5[iVar54] = bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar5 < iVar7) { + iVar54 = iVar31 + 5; + param_5[iVar5] = bVar34 ^ -(param_1[iVar5] == param_3[iVar5]); + if (iVar54 < iVar7) { + iVar5 = iVar31 + 6; + param_5[iVar54] = bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar5 < iVar7) { + iVar54 = iVar31 + 7; + param_5[iVar5] = bVar34 ^ -(param_1[iVar5] == param_3[iVar5]); + if (iVar54 < iVar7) { + iVar5 = iVar31 + 8; + param_5[iVar54] = bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar5 < iVar7) { + iVar54 = iVar31 + 9; + param_5[iVar5] = bVar34 ^ -(param_1[iVar5] == param_3[iVar5]); + if (iVar54 < iVar7) { + iVar5 = iVar31 + 10; + param_5[iVar54] = bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar5 < iVar7) { + iVar54 = iVar31 + 0xb; + param_5[iVar5] = bVar34 ^ -(param_1[iVar5] == param_3[iVar5]); + if (iVar54 < iVar7) { + iVar5 = iVar31 + 0xc; + param_5[iVar54] = bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar5 < iVar7) { + iVar54 = iVar31 + 0xd; + param_5[iVar5] = bVar34 ^ -(param_1[iVar5] == param_3[iVar5]); + if (iVar54 < iVar7) { + iVar31 = iVar31 + 0xe; + param_5[iVar54] = + bVar34 ^ -(param_1[iVar54] == param_3[iVar54]); + if (iVar31 < iVar7) { + param_5[iVar31] = + bVar34 ^ -(param_1[iVar31] == param_3[iVar31]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002424c0: + iVar41 = iVar41 + -1; + param_1 = (float *)((long)param_1 + lVar61); + param_3 = (float *)((long)param_3 + lVar62); + param_5 = param_5 + param_6; + } while (iVar41 != -1); + } + } + return; +} + + +================================================================== + +### FUNC 002425e0 (1148 bytes) name=FUN_002425e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002425e0(undefined1 (*param_1) [16],ulong param_2,undefined1 (*param_3) [16],ulong param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + uint uVar7; + long lVar8; + long lVar9; + short sVar10; + long lVar11; + undefined8 *puVar12; + ushort *puVar13; + ulong uVar14; + undefined2 *puVar15; + undefined1 (*pauVar16) [16]; + ushort *puVar17; + undefined1 (*pauVar18) [16]; + undefined8 uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined8 uVar26; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + float fVar31; + int iVar32; + int iVar33; + + iVar1 = *param_7; + iVar33 = param_7[1]; + fVar29 = (float)*param_8; + fVar30 = (float)param_8[1]; + fVar31 = (float)param_8[2]; + if (iVar33 != 0) { + uVar3 = iVar1 - 8U >> 3; + uVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + uVar2 = 0; + } + uVar4 = (iVar1 + -4) - uVar2 >> 2; + lVar11 = (long)(int)uVar2 * 2; + do { + if (0 < iVar1 + -7) { + puVar12 = param_5; + pauVar16 = param_1; + pauVar18 = param_3; + do { + auVar21 = *pauVar16; + auVar22 = *pauVar18; + pauVar16 = pauVar16 + 1; + pauVar18 = pauVar18 + 1; + auVar24._2_2_ = 0; + auVar24._0_2_ = auVar21._0_2_; + auVar24._4_2_ = auVar21._2_2_; + auVar24._6_2_ = 0; + auVar24._8_2_ = auVar21._4_2_; + auVar24._10_2_ = 0; + auVar24._12_2_ = auVar21._6_2_; + auVar24._14_2_ = 0; + auVar28._2_2_ = 0; + auVar28._0_2_ = auVar22._0_2_; + auVar28._4_2_ = auVar22._2_2_; + auVar28._6_2_ = 0; + auVar28._8_2_ = auVar22._4_2_; + auVar28._10_2_ = 0; + auVar28._12_2_ = auVar22._6_2_; + auVar28._14_2_ = 0; + auVar24 = NEON_ucvtf(auVar24,4); + auVar28 = NEON_ucvtf(auVar28,4); + auVar25._0_8_ = + CONCAT44(auVar24._4_4_ * fVar29 + auVar28._4_4_ * fVar30 + fVar31, + auVar24._0_4_ * fVar29 + auVar28._0_4_ * fVar30 + fVar31); + auVar25._8_4_ = auVar24._8_4_ * fVar29 + auVar28._8_4_ * fVar30 + fVar31; + auVar25._12_4_ = auVar24._12_4_ * fVar29 + auVar28._12_4_ * fVar30 + fVar31; + if ((DAT_00531ec0 & 1) == 0) { + uVar26 = auVar25._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531ec0); + auVar25._8_8_ = uVar26; + if (iVar5 != 0) { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar20._2_2_ = 0; + auVar20._0_2_ = auVar21._8_2_; + auVar20._4_2_ = auVar21._10_2_; + auVar20._6_2_ = 0; + auVar20._8_2_ = auVar21._12_2_; + auVar20._10_2_ = 0; + auVar20._12_2_ = auVar21._14_2_; + auVar20._14_2_ = 0; + auVar27._2_2_ = 0; + auVar27._0_2_ = auVar22._8_2_; + auVar27._4_2_ = auVar22._10_2_; + auVar27._6_2_ = 0; + auVar27._8_2_ = auVar22._12_2_; + auVar27._10_2_ = 0; + auVar27._12_2_ = auVar22._14_2_; + auVar27._14_2_ = 0; + auVar21 = NEON_ucvtf(auVar20,4); + auVar24 = NEON_ucvtf(auVar27,4); + iVar5 = (int)(auVar25._0_4_ + (float)_DAT_00531e90); + iVar32 = (int)(auVar25._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar22._0_8_ = + CONCAT44(auVar21._4_4_ * fVar29 + auVar24._4_4_ * fVar30 + fVar31, + auVar21._0_4_ * fVar29 + auVar24._0_4_ * fVar30 + fVar31); + auVar22._8_4_ = auVar21._8_4_ * fVar29 + auVar24._8_4_ * fVar30 + fVar31; + auVar22._12_4_ = auVar21._12_4_ * fVar29 + auVar24._12_4_ * fVar30 + fVar31; + auVar21._4_4_ = iVar32; + auVar21._0_4_ = iVar5; + auVar21._8_4_ = (int)(auVar25._8_4_ + (float)uRam0000000000531e98); + auVar21._12_4_ = (int)(auVar25._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar26 = NEON_uqxtn(CONCAT44(iVar32,iVar5),auVar21,4); + if ((DAT_00531ec0 & 1) == 0) { + uVar19 = auVar22._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531ec0); + auVar22._8_8_ = uVar19; + if (iVar5 != 0) { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar23._0_8_ = + CONCAT44((int)(auVar22._4_4_ + DAT_00531e90_4),(int)(auVar22._0_4_ + _DAT_00531e90)); + auVar23._8_4_ = (int)(auVar22._8_4_ + (float)uRam0000000000531e98); + auVar23._12_4_ = (int)(auVar22._12_4_ + uRam0000000000531e98._4_4_); + uVar19 = NEON_uqxtn(auVar23._0_8_,auVar23,4); + puVar12[1] = uVar19; + *puVar12 = uVar26; + puVar12 = puVar12 + 2; + } while (pauVar16 != param_1 + (ulong)uVar3 + 1); + } + uVar6 = uVar2; + if ((int)uVar2 < iVar1 + -3) { + puVar13 = (ushort *)(*param_1 + lVar11); + puVar15 = (undefined2 *)((long)param_5 + lVar11); + puVar17 = (ushort *)(*param_3 + lVar11); + do { + lVar8 = lrintf(fVar31 + fVar30 * (float)*puVar17 + (float)*puVar13 * fVar29); + uVar6 = (uint)lVar8; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + lVar8 = lrintf(fVar31 + fVar30 * (float)puVar17[1] + (float)puVar13[1] * fVar29); + uVar7 = (uint)lVar8; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *puVar15 = (short)uVar6; + puVar15[1] = (short)uVar7; + lVar8 = lrintf(fVar31 + fVar30 * (float)puVar17[2] + (float)puVar13[2] * fVar29); + uVar6 = (uint)lVar8; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + lVar8 = lrintf(fVar31 + fVar30 * (float)puVar17[3] + (float)puVar13[3] * fVar29); + uVar7 = (uint)lVar8; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + puVar13 = puVar13 + 4; + puVar15[2] = (short)uVar6; + puVar15[3] = (short)uVar7; + puVar17 = puVar17 + 4; + puVar15 = puVar15 + 4; + uVar6 = uVar2 + 4 + uVar4 * 4; + } while (puVar13 != (ushort *)(*param_1 + (long)(int)uVar2 * 2 + 8 + (ulong)uVar4 * 8)); + } + if ((int)uVar6 < iVar1) { + lVar8 = 0; + uVar14 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + do { + lVar9 = lrintf(fVar31 + fVar30 * (float)*(ushort *)(*param_3 + lVar8 + uVar14) + + (float)*(ushort *)(*param_1 + lVar8 + uVar14) * fVar29); + sVar10 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar10 = -(ushort)(0 < (int)(uint)lVar9); + } + *(short *)((long)param_5 + lVar8 + uVar14) = sVar10; + lVar8 = lVar8 + 2; + } while (lVar8 != ((ulong)((iVar1 + -1) - uVar6) + 1) * 2); + } + iVar33 = iVar33 + -1; + param_1 = (undefined1 (*) [16])(*param_1 + (param_2 & 0xfffffffffffffffe)); + param_3 = (undefined1 (*) [16])(*param_3 + (param_4 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar33 != 0); + } + return; +} + + +================================================================== + +### FUNC 00242a5c (2016 bytes) name=FUN_00242a5c + +void FUN_00242a5c(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + int *param_7,double *param_8) + +{ + uint uVar1; + long lVar2; + float *pfVar3; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + undefined8 *puVar12; + undefined8 *puVar13; + ulong uVar14; + float *pfVar15; + undefined8 *puVar16; + undefined8 *puVar17; + float *pfVar18; + int iVar19; + undefined8 *puVar20; + float *pfVar21; + uint uVar22; + long lVar23; + int iVar24; + long lVar25; + long lVar26; + uint uVar27; + long lVar28; + float fVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + float fVar35; + undefined8 uVar36; + float fVar37; + long lVar38; + + iVar7 = *param_7; + iVar24 = param_7[1]; + fVar35 = (float)*param_8; + if (fVar35 == 1.0) { + if (iVar24 != 0) { + uVar10 = iVar7 - 8U >> 3; + iVar8 = (uVar10 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar11 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar25 = ((long)iVar8 + 0x10) * 4; + lVar38 = NEON_shl((long)iVar8 + 4 + (ulong)uVar11 * 4,2); + lVar26 = lVar25 + -0x40; + iVar4 = iVar8 + 4 + uVar11 * 4; + do { + if (0 < iVar7 + -7) { + puVar16 = (undefined8 *)(param_1 + 0x10); + puVar20 = (undefined8 *)(param_3 + 0x10); + puVar17 = (undefined8 *)(param_5 + 0x10); + do { + uVar31 = puVar16[1]; + uVar30 = *puVar16; + puVar12 = puVar16 + -1; + uVar32 = puVar16[-2]; + puVar16 = puVar16 + 4; + puVar13 = puVar20 + -1; + uVar36 = puVar20[-2]; + uVar34 = puVar20[1]; + uVar33 = *puVar20; + puVar20 = puVar20 + 4; + puVar17[-1] = CONCAT44((float)((ulong)*puVar12 >> 0x20) * + (float)((ulong)*puVar13 >> 0x20), + (float)*puVar12 * (float)*puVar13); + puVar17[-2] = CONCAT44((float)((ulong)uVar32 >> 0x20) * (float)((ulong)uVar36 >> 0x20), + (float)uVar32 * (float)uVar36); + puVar17[1] = CONCAT44((float)((ulong)uVar31 >> 0x20) * (float)((ulong)uVar34 >> 0x20), + (float)uVar31 * (float)uVar34); + *puVar17 = CONCAT44((float)((ulong)uVar30 >> 0x20) * (float)((ulong)uVar33 >> 0x20), + (float)uVar30 * (float)uVar33); + puVar17 = puVar17 + 4; + } while (puVar16 != (undefined8 *)(param_1 + (ulong)uVar10 * 0x20 + 0x30)); + } + iVar9 = iVar8; + if (iVar8 < iVar7 + -3) { + pfVar15 = (float *)(param_1 + lVar26); + pfVar18 = (float *)(param_5 + lVar26); + pfVar21 = (float *)(param_3 + lVar26); + iVar9 = iVar4; + if ((pfVar15 < (float *)(param_5 + lVar25) && pfVar18 < (float *)(param_1 + lVar25) || + pfVar21 < (float *)(param_5 + lVar25) && pfVar18 < (float *)(param_3 + lVar25)) || + (uVar11 + 1 < 4)) { + do { + pfVar3 = pfVar15 + 4; + fVar29 = *pfVar21; + fVar35 = *pfVar15; + pfVar18[1] = pfVar15[1] * pfVar21[1]; + *pfVar18 = fVar35 * fVar29; + fVar35 = pfVar15[2]; + fVar29 = pfVar21[2]; + pfVar18[3] = pfVar15[3] * pfVar21[3]; + pfVar18[2] = fVar35 * fVar29; + pfVar15 = pfVar3; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (pfVar3 != (float *)(param_1 + lVar38)); + } + else { + uVar22 = 0; + do { + uVar30 = *(undefined8 *)pfVar15; + uVar22 = uVar22 + 1; + uVar31 = *(undefined8 *)pfVar21; + *(ulong *)(pfVar18 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar15 + 2) >> 0x20) * + (float)((ulong)*(undefined8 *)(pfVar21 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar15 + 2) * + (float)*(undefined8 *)(pfVar21 + 2)); + *(ulong *)pfVar18 = + CONCAT44((float)((ulong)uVar30 >> 0x20) * (float)((ulong)uVar31 >> 0x20), + (float)uVar30 * (float)uVar31); + pfVar15 = pfVar15 + 4; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (uVar22 < uVar11 + 1); + } + } + if (iVar9 < iVar7) { + uVar22 = iVar7 - iVar9; + lVar23 = ((long)iVar9 + 4) * 4; + lVar28 = lVar23 + -0x10; + uVar14 = param_5 + lVar28; + uVar5 = param_1 + lVar28; + if ((uVar14 < (ulong)(param_1 + lVar23) && uVar5 < (ulong)(param_5 + lVar23) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar23) && + uVar14 < (ulong)(param_3 + lVar23)) || (uVar22 < 9)) { + lVar23 = 0; + do { + *(float *)(uVar14 + lVar23) = + *(float *)(uVar5 + lVar23) * *(float *)(param_3 + lVar28 + lVar23); + lVar23 = lVar23 + 4; + } while (lVar23 != ((ulong)(uint)((iVar7 + -1) - iVar9) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + if (uVar22 < uVar6) { + uVar6 = uVar22; + } + iVar19 = iVar9; + if (uVar6 != 0) { + lVar23 = (long)iVar9 * 4; + iVar19 = iVar9 + 1; + *(float *)(param_5 + lVar23) = + *(float *)(param_1 + lVar23) * *(float *)(param_3 + lVar23); + if (uVar6 != 1) { + lVar2 = lVar23 + 4; + iVar19 = iVar9 + 2; + *(float *)(param_5 + lVar2) = + *(float *)(param_1 + lVar2) * *(float *)(param_3 + lVar2); + if (uVar6 == 3) { + lVar23 = lVar23 + 8; + iVar19 = iVar9 + 3; + *(float *)(param_5 + lVar23) = + *(float *)(param_1 + lVar23) * *(float *)(param_3 + lVar23); + } + } + } + uVar27 = 0; + lVar28 = lVar28 + (ulong)uVar6 * 4; + uVar1 = ((uVar22 - uVar6) - 4 >> 2) + 1; + iVar9 = uVar1 * 4; + puVar16 = (undefined8 *)(param_1 + lVar28); + puVar20 = (undefined8 *)(param_3 + lVar28); + puVar17 = (undefined8 *)(param_5 + lVar28); + do { + uVar30 = *puVar20; + uVar27 = uVar27 + 1; + uVar31 = *puVar16; + puVar17[1] = CONCAT44((float)((ulong)puVar20[1] >> 0x20) * + (float)((ulong)puVar16[1] >> 0x20), + (float)puVar20[1] * (float)puVar16[1]); + *puVar17 = CONCAT44((float)((ulong)uVar30 >> 0x20) * (float)((ulong)uVar31 >> 0x20), + (float)uVar30 * (float)uVar31); + puVar16 = puVar16 + 2; + puVar20 = puVar20 + 2; + puVar17 = puVar17 + 2; + } while (uVar27 < uVar1); + uVar1 = iVar9 + iVar19; + if (iVar9 != uVar22 - uVar6) { + uVar14 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(float *)(param_5 + uVar14) = + *(float *)(param_1 + uVar14) * *(float *)(param_3 + uVar14); + if ((int)(uVar1 + 1) < iVar7) { + lVar28 = uVar14 + 4; + *(float *)(param_5 + lVar28) = + *(float *)(param_1 + lVar28) * *(float *)(param_3 + lVar28); + if ((int)(uVar1 + 2) < iVar7) { + lVar28 = uVar14 + 8; + *(float *)(param_5 + lVar28) = + *(float *)(param_1 + lVar28) * *(float *)(param_3 + lVar28); + } + } + } + } + } + iVar24 = iVar24 + -1; + param_1 = param_1 + (param_2 >> 2) * 4; + param_3 = param_3 + (param_4 >> 2) * 4; + param_5 = param_5 + (param_6 >> 2) * 4; + } while (iVar24 != 0); + return; + } + } + else if (iVar24 != 0) { + uVar10 = iVar7 - 8U >> 3; + iVar8 = (uVar10 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar8 = 0; + } + uVar11 = (uint)((iVar7 + -4) - iVar8) >> 2; + lVar25 = ((long)iVar8 + 0x10) * 4; + lVar38 = NEON_shl((long)iVar8 + 4 + (ulong)uVar11 * 4,2); + lVar26 = lVar25 + -0x40; + iVar4 = iVar8 + 4 + uVar11 * 4; + do { + if (0 < iVar7 + -7) { + puVar16 = (undefined8 *)(param_1 + 0x10); + puVar20 = (undefined8 *)(param_3 + 0x10); + puVar17 = (undefined8 *)(param_5 + 0x10); + do { + uVar31 = puVar16[1]; + uVar30 = *puVar16; + puVar12 = puVar16 + -1; + uVar32 = puVar16[-2]; + puVar16 = puVar16 + 4; + puVar13 = puVar20 + -1; + uVar36 = puVar20[-2]; + uVar34 = puVar20[1]; + uVar33 = *puVar20; + puVar20 = puVar20 + 4; + puVar17[-1] = CONCAT44((float)((ulong)*puVar12 >> 0x20) * (float)((ulong)*puVar13 >> 0x20) + * fVar35,(float)*puVar12 * (float)*puVar13 * fVar35); + puVar17[-2] = CONCAT44((float)((ulong)uVar32 >> 0x20) * (float)((ulong)uVar36 >> 0x20) * + fVar35,(float)uVar32 * (float)uVar36 * fVar35); + puVar17[1] = CONCAT44((float)((ulong)uVar31 >> 0x20) * (float)((ulong)uVar34 >> 0x20) * + fVar35,(float)uVar31 * (float)uVar34 * fVar35); + *puVar17 = CONCAT44((float)((ulong)uVar30 >> 0x20) * (float)((ulong)uVar33 >> 0x20) * + fVar35,(float)uVar30 * (float)uVar33 * fVar35); + puVar17 = puVar17 + 4; + } while (puVar16 != (undefined8 *)(param_1 + (ulong)uVar10 * 0x20 + 0x30)); + } + iVar9 = iVar8; + if (iVar8 < iVar7 + -3) { + pfVar15 = (float *)(param_1 + lVar26); + pfVar18 = (float *)(param_5 + lVar26); + pfVar21 = (float *)(param_3 + lVar26); + iVar9 = iVar4; + if ((pfVar15 < (float *)(param_5 + lVar25) && pfVar18 < (float *)(param_1 + lVar25) || + pfVar21 < (float *)(param_5 + lVar25) && pfVar18 < (float *)(param_3 + lVar25)) || + (uVar11 + 1 < 3)) { + do { + pfVar3 = pfVar15 + 4; + fVar29 = *pfVar15; + fVar37 = *pfVar21; + pfVar18[1] = fVar35 * pfVar15[1] * pfVar21[1]; + *pfVar18 = fVar35 * fVar29 * fVar37; + fVar29 = pfVar15[2]; + fVar37 = pfVar21[2]; + pfVar18[3] = fVar35 * pfVar15[3] * pfVar21[3]; + pfVar18[2] = fVar35 * fVar29 * fVar37; + pfVar15 = pfVar3; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (pfVar3 != (float *)(param_1 + lVar38)); + } + else { + uVar22 = 0; + do { + uVar30 = *(undefined8 *)pfVar15; + uVar22 = uVar22 + 1; + uVar31 = *(undefined8 *)pfVar21; + *(ulong *)(pfVar18 + 2) = + CONCAT44(fVar35 * (float)((ulong)*(undefined8 *)(pfVar15 + 2) >> 0x20) * + (float)((ulong)*(undefined8 *)(pfVar21 + 2) >> 0x20), + fVar35 * (float)*(undefined8 *)(pfVar15 + 2) * + (float)*(undefined8 *)(pfVar21 + 2)); + *(ulong *)pfVar18 = + CONCAT44(fVar35 * (float)((ulong)uVar30 >> 0x20) * (float)((ulong)uVar31 >> 0x20), + fVar35 * (float)uVar30 * (float)uVar31); + pfVar15 = pfVar15 + 4; + pfVar18 = pfVar18 + 4; + pfVar21 = pfVar21 + 4; + } while (uVar22 < uVar11 + 1); + } + } + if (iVar9 < iVar7) { + uVar22 = iVar7 - iVar9; + lVar23 = ((long)iVar9 + 4) * 4; + lVar28 = lVar23 + -0x10; + uVar14 = param_5 + lVar28; + uVar5 = param_1 + lVar28; + if ((uVar14 < (ulong)(param_1 + lVar23) && uVar5 < (ulong)(param_5 + lVar23) || + (ulong)(param_3 + lVar28) < (ulong)(param_5 + lVar23) && + uVar14 < (ulong)(param_3 + lVar23)) || (uVar22 < 8)) { + lVar23 = 0; + do { + *(float *)(uVar14 + lVar23) = + fVar35 * *(float *)(uVar5 + lVar23) * *(float *)(param_3 + lVar28 + lVar23); + lVar23 = lVar23 + 4; + } while (lVar23 != ((ulong)(uint)((iVar7 + -1) - iVar9) + 1) * 4); + } + else { + uVar6 = -((uint)(uVar5 >> 2) & 3) & 3; + uVar1 = uVar22; + if (uVar6 < uVar22) { + uVar1 = uVar6; + } + iVar19 = iVar9; + if (uVar1 != 0) { + lVar23 = (long)iVar9 * 4; + iVar19 = iVar9 + 1; + *(float *)(param_5 + lVar23) = + fVar35 * *(float *)(param_1 + lVar23) * *(float *)(param_3 + lVar23); + if (uVar1 != 1) { + lVar2 = lVar23 + 4; + iVar19 = iVar9 + 2; + *(float *)(param_5 + lVar2) = + fVar35 * *(float *)(param_1 + lVar2) * *(float *)(param_3 + lVar2); + if (uVar1 == 3) { + lVar23 = lVar23 + 8; + iVar19 = iVar9 + 3; + *(float *)(param_5 + lVar23) = + fVar35 * *(float *)(param_1 + lVar23) * *(float *)(param_3 + lVar23); + } + } + } + uVar27 = 0; + lVar28 = lVar28 + (ulong)uVar1 * 4; + uVar6 = ((uVar22 - uVar1) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + puVar16 = (undefined8 *)(param_5 + lVar28); + puVar20 = (undefined8 *)(param_3 + lVar28); + puVar17 = (undefined8 *)(param_1 + lVar28); + do { + uVar30 = *puVar17; + uVar27 = uVar27 + 1; + uVar31 = *puVar20; + puVar16[1] = CONCAT44(fVar35 * (float)((ulong)puVar17[1] >> 0x20) * + (float)((ulong)puVar20[1] >> 0x20), + fVar35 * (float)puVar17[1] * (float)puVar20[1]); + *puVar16 = CONCAT44(fVar35 * (float)((ulong)uVar30 >> 0x20) * + (float)((ulong)uVar31 >> 0x20), + fVar35 * (float)uVar30 * (float)uVar31); + puVar16 = puVar16 + 2; + puVar20 = puVar20 + 2; + puVar17 = puVar17 + 2; + } while (uVar27 < uVar6); + uVar6 = iVar19 + iVar9; + if (uVar22 - uVar1 != iVar9) { + uVar14 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar6 << 2; + *(float *)(param_5 + uVar14) = + fVar35 * *(float *)(param_1 + uVar14) * *(float *)(param_3 + uVar14); + if ((int)(uVar6 + 1) < iVar7) { + lVar28 = uVar14 + 4; + *(float *)(param_5 + lVar28) = + fVar35 * *(float *)(param_1 + lVar28) * *(float *)(param_3 + lVar28); + if ((int)(uVar6 + 2) < iVar7) { + lVar28 = uVar14 + 8; + *(float *)(param_5 + lVar28) = + fVar35 * *(float *)(param_1 + lVar28) * *(float *)(param_3 + lVar28); + } + } + } + } + } + iVar24 = iVar24 + -1; + param_1 = param_1 + (param_2 >> 2) * 4; + param_3 = param_3 + (param_4 >> 2) * 4; + param_5 = param_5 + (param_6 >> 2) * 4; + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 0024323c (1004 bytes) name=FUN_0024323c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_0024323c(float param_1,short *param_2,short *param_3,undefined8 *param_4,int param_5) + +{ + undefined1 auVar1 [16]; + undefined1 auVar2 [16]; + undefined1 auVar3 [16]; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + float fVar9; + undefined8 uVar10; + undefined1 auVar12 [12]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined8 uVar25; + undefined1 auVar19 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar26; + float fVar28; + float fVar29; + undefined1 auVar27 [16]; + float fVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 uVar35; + undefined1 uVar36; + undefined1 uVar37; + undefined1 auVar11 [12]; + undefined1 auVar13 [16]; + undefined1 auVar20 [16]; + + param_5 = param_5 + -7; + if (param_1 == 1.0) { + if (0 < param_5) { + iVar8 = 0; + do { + auVar15._0_4_ = (int)*param_2; + auVar15._4_4_ = (int)param_2[1]; + auVar15._8_4_ = (int)param_2[2]; + auVar15._12_4_ = (int)param_2[3]; + auVar27 = NEON_scvtf(auVar15,4); + auVar16._0_4_ = (int)*param_3; + auVar16._4_4_ = (int)param_3[1]; + auVar16._8_4_ = (int)param_3[2]; + auVar16._12_4_ = (int)param_3[3]; + auVar31._0_4_ = (int)param_3[4]; + auVar31._4_4_ = (int)param_3[5]; + auVar31._8_4_ = (int)param_3[6]; + auVar31._12_4_ = (int)param_3[7]; + auVar17 = NEON_scvtf(auVar16,4); + auVar1._4_4_ = (int)param_2[5]; + auVar1._0_4_ = (int)param_2[4]; + auVar1._8_4_ = (int)param_2[6]; + auVar1._12_4_ = (int)param_2[7]; + auVar33 = NEON_scvtf(auVar1,4); + auVar32 = NEON_scvtf(auVar31,4); + auVar18._0_8_ = CONCAT44(auVar27._4_4_ * auVar17._4_4_,auVar27._0_4_ * auVar17._0_4_); + auVar18._8_4_ = auVar27._8_4_ * auVar17._8_4_; + auVar18._12_4_ = auVar27._12_4_ * auVar17._12_4_; + fVar26 = auVar33._0_4_ * auVar32._0_4_; + fVar28 = auVar33._4_4_ * auVar32._4_4_; + fVar29 = auVar33._8_4_ * auVar32._8_4_; + fVar30 = auVar33._12_4_ * auVar32._12_4_; + if ((DAT_00531ed0 & 1) == 0) { + uVar25 = auVar18._8_8_; + iVar7 = __cxa_guard_acquire(&DAT_00531ed0); + auVar18._8_8_ = uVar25; + if (iVar7 != 0) { + auVar19._8_4_ = 0x80000000; + auVar19._0_8_ = 0x8000000080000000; + auVar19._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar19._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = (int)(auVar18._0_4_ + + (float)CONCAT13(auVar18[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + bRam0000000000531ea3, + CONCAT12(auVar18[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11(auVar18[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + bRam0000000000531ea1, + auVar18[0] & (byte)_DAT_00531eb0 | + DAT_00531ea0)))); + iVar4 = (int)(auVar18._4_4_ + + (float)CONCAT13(auVar18[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT12(auVar18[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + bRam0000000000531ea6, + CONCAT11(auVar18[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + auVar18[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4)))); + uVar35 = (undefined1)((uint)iVar4 >> 8); + uVar36 = (undefined1)((uint)iVar4 >> 0x10); + uVar37 = (undefined1)((uint)iVar4 >> 0x18); + iVar5 = (int)(auVar18._8_4_ + + (float)CONCAT13(auVar18[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + bRam0000000000531eab, + CONCAT12(auVar18[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + bRam0000000000531eaa, + CONCAT11(auVar18[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + bRam0000000000531ea9, + auVar18[8] & (byte)_uRam0000000000531eb8 | + bRam0000000000531ea8)))); + iVar6 = (int)(auVar18._12_4_ + + (float)CONCAT13(auVar18[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + bRam0000000000531eaf, + CONCAT12(auVar18[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + bRam0000000000531eae, + CONCAT11(auVar18[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28) + | bRam0000000000531ead, + auVar18[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) + | bRam0000000000531eac)))); + auVar2[4] = (char)iVar4; + auVar2._0_4_ = iVar7; + auVar2[5] = uVar35; + auVar2[6] = uVar36; + auVar2[7] = uVar37; + auVar2[8] = (char)iVar5; + auVar2[9] = (char)((uint)iVar5 >> 8); + auVar2[10] = (char)((uint)iVar5 >> 0x10); + auVar2[0xb] = (char)((uint)iVar5 >> 0x18); + auVar2[0xc] = (char)iVar6; + auVar2[0xd] = (char)((uint)iVar6 >> 8); + auVar2[0xe] = (char)((uint)iVar6 >> 0x10); + auVar2[0xf] = (char)((uint)iVar6 >> 0x18); + uVar25 = NEON_sqxtn(CONCAT17(uVar37,CONCAT16(uVar36,CONCAT15(uVar35,CONCAT14((char)iVar4, + iVar7)))), + auVar2,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar24._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar8 = iVar8 + 8; + param_2 = param_2 + 8; + param_3 = param_3 + 8; + fVar9 = (float)CONCAT13((byte)((uint)fVar26 >> 0x18) & bRam0000000000531eb3 | + bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar26 >> 0x10) & bRam0000000000531eb2 | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar26 >> 8) & DAT_00531eb0_1 | + bRam0000000000531ea1, + SUB41(fVar26,0) & DAT_00531eb0 | DAT_00531ea0))); + auVar11._0_8_ = + CONCAT17((byte)((uint)fVar28 >> 0x18) & bRam0000000000531eb7 | bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar28 >> 0x10) & bRam0000000000531eb6 | + bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar28 >> 8) & bRam0000000000531eb5 | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar28,0) & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar9)))); + auVar11[8] = SUB41(fVar29,0) & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar11[9] = (byte)((uint)fVar29 >> 8) & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar11[10] = (byte)((uint)fVar29 >> 0x10) & bRam0000000000531eba | bRam0000000000531eaa; + auVar11[0xb] = (byte)((uint)fVar29 >> 0x18) & bRam0000000000531ebb | bRam0000000000531eab; + auVar13[0xc] = SUB41(fVar30,0) & bRam0000000000531ebc | bRam0000000000531eac; + auVar13._0_12_ = auVar11; + auVar13[0xd] = (byte)((uint)fVar30 >> 8) & bRam0000000000531ebd | bRam0000000000531ead; + auVar13[0xe] = (byte)((uint)fVar30 >> 0x10) & bRam0000000000531ebe | bRam0000000000531eae; + auVar13[0xf] = (byte)((uint)fVar30 >> 0x18) & bRam0000000000531ebf | bRam0000000000531eaf; + auVar14._0_8_ = + CONCAT44((int)(fVar28 + (float)((ulong)auVar11._0_8_ >> 0x20)),(int)(fVar26 + fVar9)); + auVar14._8_4_ = (int)(fVar29 + auVar11._8_4_); + auVar14._12_4_ = (int)(fVar30 + auVar13._12_4_); + uVar10 = NEON_sqxtn(auVar14._0_8_,auVar14,4); + param_4[1] = uVar10; + *param_4 = uVar25; + param_4 = param_4 + 2; + } while (iVar8 < param_5); + return iVar8; + } + } + else if (0 < param_5) { + iVar8 = 0; + do { + auVar34._0_4_ = (int)param_2[4]; + auVar34._4_4_ = (int)param_2[5]; + auVar34._8_4_ = (int)param_2[6]; + auVar34._12_4_ = (int)param_2[7]; + auVar32._0_4_ = (int)*param_2; + auVar32._4_4_ = (int)param_2[1]; + auVar32._8_4_ = (int)param_2[2]; + auVar32._12_4_ = (int)param_2[3]; + auVar32 = NEON_scvtf(auVar32,4); + auVar33._0_4_ = (int)*param_3; + auVar33._4_4_ = (int)param_3[1]; + auVar33._8_4_ = (int)param_3[2]; + auVar33._12_4_ = (int)param_3[3]; + auVar27 = NEON_scvtf(auVar34,4); + auVar33 = NEON_scvtf(auVar33,4); + auVar17._4_4_ = (int)param_3[5]; + auVar17._0_4_ = (int)param_3[4]; + auVar17._8_4_ = (int)param_3[6]; + auVar17._12_4_ = (int)param_3[7]; + auVar17 = NEON_scvtf(auVar17,4); + fVar26 = param_1 * auVar27._0_4_ * auVar17._0_4_; + fVar28 = param_1 * auVar27._4_4_ * auVar17._4_4_; + fVar29 = param_1 * auVar27._8_4_ * auVar17._8_4_; + fVar30 = param_1 * auVar27._12_4_ * auVar17._12_4_; + auVar27._0_8_ = + CONCAT44(param_1 * auVar32._4_4_ * auVar33._4_4_,param_1 * auVar32._0_4_ * auVar33._0_4_) + ; + auVar27._8_4_ = param_1 * auVar32._8_4_ * auVar33._8_4_; + auVar27._12_4_ = param_1 * auVar32._12_4_ * auVar33._12_4_; + if ((DAT_00531ed0 & 1) == 0) { + uVar25 = auVar27._8_8_; + iVar7 = __cxa_guard_acquire(&DAT_00531ed0); + auVar27._8_8_ = uVar25; + if (iVar7 != 0) { + auVar22._8_4_ = 0x80000000; + auVar22._0_8_ = 0x8000000080000000; + auVar22._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar22._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = (int)(auVar27._0_4_ + + (float)CONCAT13(auVar27[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + bRam0000000000531ea3, + CONCAT12(auVar27[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11(auVar27[1] & (byte)((ulong)_DAT_00531eb0 >> 8) + | bRam0000000000531ea1, + auVar27[0] & (byte)_DAT_00531eb0 | DAT_00531ea0 + )))); + iVar4 = (int)(auVar27._4_4_ + + (float)CONCAT13(auVar27[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT12(auVar27[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + bRam0000000000531ea6, + CONCAT11(auVar27[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + auVar27[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4)))); + uVar35 = (undefined1)((uint)iVar4 >> 8); + uVar36 = (undefined1)((uint)iVar4 >> 0x10); + uVar37 = (undefined1)((uint)iVar4 >> 0x18); + iVar5 = (int)(auVar27._8_4_ + + (float)CONCAT13(auVar27[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + bRam0000000000531eab, + CONCAT12(auVar27[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + bRam0000000000531eaa, + CONCAT11(auVar27[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + bRam0000000000531ea9, + auVar27[8] & (byte)_uRam0000000000531eb8 | + bRam0000000000531ea8)))); + iVar6 = (int)(auVar27._12_4_ + + (float)CONCAT13(auVar27[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + bRam0000000000531eaf, + CONCAT12(auVar27[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + bRam0000000000531eae, + CONCAT11(auVar27[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28) | + bRam0000000000531ead, + auVar27[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + bRam0000000000531eac)))); + auVar3[4] = (char)iVar4; + auVar3._0_4_ = iVar7; + auVar3[5] = uVar35; + auVar3[6] = uVar36; + auVar3[7] = uVar37; + auVar3[8] = (char)iVar5; + auVar3[9] = (char)((uint)iVar5 >> 8); + auVar3[10] = (char)((uint)iVar5 >> 0x10); + auVar3[0xb] = (char)((uint)iVar5 >> 0x18); + auVar3[0xc] = (char)iVar6; + auVar3[0xd] = (char)((uint)iVar6 >> 8); + auVar3[0xe] = (char)((uint)iVar6 >> 0x10); + auVar3[0xf] = (char)((uint)iVar6 >> 0x18); + uVar25 = NEON_sqxtn(CONCAT17(uVar37,CONCAT16(uVar36,CONCAT15(uVar35,CONCAT14((char)iVar4,iVar7 + )))),auVar3,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) { + auVar23._8_4_ = 0x80000000; + auVar23._0_8_ = 0x8000000080000000; + auVar23._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar23._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar8 = iVar8 + 8; + param_2 = param_2 + 8; + param_3 = param_3 + 8; + fVar9 = (float)CONCAT13((byte)((uint)fVar26 >> 0x18) & bRam0000000000531eb3 | + bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar26 >> 0x10) & bRam0000000000531eb2 | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar26 >> 8) & DAT_00531eb0_1 | + bRam0000000000531ea1, + SUB41(fVar26,0) & DAT_00531eb0 | DAT_00531ea0))); + auVar12._0_8_ = + CONCAT17((byte)((uint)fVar28 >> 0x18) & bRam0000000000531eb7 | bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar28 >> 0x10) & bRam0000000000531eb6 | + bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar28 >> 8) & bRam0000000000531eb5 | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar28,0) & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar9)))); + auVar12[8] = SUB41(fVar29,0) & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar12[9] = (byte)((uint)fVar29 >> 8) & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar12[10] = (byte)((uint)fVar29 >> 0x10) & bRam0000000000531eba | bRam0000000000531eaa; + auVar12[0xb] = (byte)((uint)fVar29 >> 0x18) & bRam0000000000531ebb | bRam0000000000531eab; + auVar20[0xc] = SUB41(fVar30,0) & bRam0000000000531ebc | bRam0000000000531eac; + auVar20._0_12_ = auVar12; + auVar20[0xd] = (byte)((uint)fVar30 >> 8) & bRam0000000000531ebd | bRam0000000000531ead; + auVar20[0xe] = (byte)((uint)fVar30 >> 0x10) & bRam0000000000531ebe | bRam0000000000531eae; + auVar20[0xf] = (byte)((uint)fVar30 >> 0x18) & bRam0000000000531ebf | bRam0000000000531eaf; + auVar21._0_8_ = + CONCAT44((int)(fVar28 + (float)((ulong)auVar12._0_8_ >> 0x20)),(int)(fVar26 + fVar9)); + auVar21._8_4_ = (int)(fVar29 + auVar12._8_4_); + auVar21._12_4_ = (int)(fVar30 + auVar20._12_4_); + uVar10 = NEON_sqxtn(auVar21._0_8_,auVar21,4); + param_4[1] = uVar10; + *param_4 = uVar25; + param_4 = param_4 + 2; + } while (iVar8 < param_5); + return iVar8; + } + return 0; +} + + +================================================================== + +### FUNC 00243628 (1208 bytes) name=FUN_00243628 + +void FUN_00243628(long param_1,ulong param_2,long param_3,ulong param_4,long param_5,ulong param_6, + int *param_7,double *param_8) + +{ + short *psVar1; + short *psVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + long lVar8; + ulong uVar9; + undefined2 uVar10; + short *psVar11; + undefined2 *puVar12; + short *psVar13; + long lVar14; + undefined2 uVar15; + undefined2 uVar16; + undefined2 uVar17; + ulong uVar18; + float fVar19; + int iVar20; + + iVar3 = *param_7; + iVar20 = param_7[1]; + fVar19 = (float)*param_8; + if (fVar19 == 1.0) { + if (iVar20 != 0) { + do { + uVar18 = FUN_0024323c(0x3f800000,param_1,param_3,param_5,iVar3); + iVar7 = (int)uVar18; + uVar15 = 0x7fff; + uVar16 = 0x8000; + if (iVar7 < iVar3 + -3) { + lVar14 = (long)iVar7 * 2; + psVar13 = (short *)(param_3 + lVar14); + uVar6 = (uint)((iVar3 + -4) - iVar7) >> 2; + puVar12 = (undefined2 *)(param_5 + lVar14); + psVar11 = (short *)(param_1 + lVar14); + do { + iVar5 = (int)*psVar11 * (int)*psVar13; + uVar17 = (short)iVar5; + if ((0xffff < iVar5 + 0x8000U) && (uVar17 = uVar15, iVar5 < 1)) { + uVar17 = uVar16; + } + iVar5 = (int)psVar11[1] * (int)psVar13[1]; + uVar10 = (short)iVar5; + if ((0xffff < iVar5 + 0x8000U) && (uVar10 = uVar15, iVar5 < 1)) { + uVar10 = uVar16; + } + *puVar12 = uVar17; + puVar12[1] = uVar10; + iVar5 = (int)psVar11[2] * (int)psVar13[2]; + uVar17 = (short)iVar5; + if ((0xffff < iVar5 + 0x8000U) && (uVar17 = 0x7fff, iVar5 < 1)) { + uVar17 = 0x8000; + } + psVar1 = psVar13 + 3; + psVar2 = psVar11 + 4; + psVar13 = psVar13 + 4; + iVar5 = (int)psVar11[3] * (int)*psVar1; + uVar10 = (short)iVar5; + if ((0xffff < iVar5 + 0x8000U) && (uVar10 = 0x7fff, iVar5 < 1)) { + uVar10 = 0x8000; + } + puVar12[2] = uVar17; + puVar12[3] = uVar10; + puVar12 = puVar12 + 4; + psVar11 = psVar2; + } while (psVar2 != (short *)(param_1 + ((long)iVar7 + 4 + (ulong)uVar6 * 4) * 2)); + uVar18 = (ulong)(iVar7 + 4 + uVar6 * 4); + } + if ((int)uVar18 < iVar3) { + lVar14 = 0; + uVar9 = -(uVar18 >> 0x1f & 1) & 0xfffffffe00000000 | (uVar18 & 0xffffffff) << 1; + do { + iVar7 = (int)*(short *)(param_1 + uVar9 + lVar14) * + (int)*(short *)(param_3 + uVar9 + lVar14); + uVar17 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar17 = uVar15, iVar7 < 1)) { + uVar17 = uVar16; + } + *(undefined2 *)(param_5 + uVar9 + lVar14) = uVar17; + lVar14 = lVar14 + 2; + } while (lVar14 != ((ulong)(uint)((iVar3 + -1) - (int)uVar18) + 1) * 2); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + (param_2 >> 1) * 2; + param_3 = param_3 + (param_4 >> 1) * 2; + param_5 = param_5 + (param_6 >> 1) * 2; + } while (iVar20 != 0); + } + } + else if (iVar20 != 0) { + do { + uVar6 = FUN_0024323c(fVar19,param_1,param_3,param_5,iVar3); + uVar15 = 0x8000; + uVar16 = 0x7fff; + if ((int)uVar6 < iVar3 + -3) { + lVar14 = (long)(int)uVar6 * 2; + psVar13 = (short *)(param_1 + lVar14); + uVar4 = (iVar3 + -4) - uVar6 >> 2; + puVar12 = (undefined2 *)(param_5 + lVar14); + psVar11 = (short *)(param_3 + lVar14); + do { + lVar14 = lrintf(fVar19 * (float)(int)*psVar13 * (float)(int)*psVar11); + uVar17 = (short)lVar14; + if ((0xffff < (int)lVar14 + 0x8000U) && (uVar17 = uVar16, (int)lVar14 < 1)) { + uVar17 = uVar15; + } + lVar14 = lrintf(fVar19 * (float)(int)psVar13[1] * (float)(int)psVar11[1]); + uVar10 = (short)lVar14; + if ((0xffff < (int)lVar14 + 0x8000U) && (uVar10 = uVar16, (int)lVar14 < 1)) { + uVar10 = uVar15; + } + *puVar12 = uVar17; + puVar12[1] = uVar10; + lVar14 = lrintf(fVar19 * (float)(int)psVar13[2] * (float)(int)psVar11[2]); + uVar17 = (short)lVar14; + if ((0xffff < (int)lVar14 + 0x8000U) && (uVar17 = 0x7fff, (int)lVar14 < 1)) { + uVar17 = 0x8000; + } + psVar1 = psVar13 + 3; + psVar13 = psVar13 + 4; + lVar14 = lrintf(fVar19 * (float)(int)*psVar1 * (float)(int)psVar11[3]); + uVar10 = (short)lVar14; + if ((0xffff < (int)lVar14 + 0x8000U) && (uVar10 = 0x7fff, (int)lVar14 < 1)) { + uVar10 = 0x8000; + } + puVar12[2] = uVar17; + puVar12[3] = uVar10; + puVar12 = puVar12 + 4; + psVar11 = psVar11 + 4; + } while (psVar13 != (short *)(param_1 + ((long)(int)uVar6 + 4 + (ulong)uVar4 * 4) * 2)); + uVar6 = uVar6 + 4 + uVar4 * 4; + } + if ((int)uVar6 < iVar3) { + lVar14 = 0; + uVar18 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + do { + lVar8 = lrintf(fVar19 * (float)(int)*(short *)(param_1 + uVar18 + lVar14) * + (float)(int)*(short *)(param_3 + uVar18 + lVar14)); + uVar17 = (short)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar17 = uVar16, (int)lVar8 < 1)) { + uVar17 = uVar15; + } + *(undefined2 *)(param_5 + uVar18 + lVar14) = uVar17; + lVar14 = lVar14 + 2; + } while (lVar14 != ((ulong)((iVar3 + -1) - uVar6) + 1) * 2); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + (param_2 >> 1) * 2; + param_3 = param_3 + (param_4 >> 1) * 2; + param_5 = param_5 + (param_6 >> 1) * 2; + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 00243ae0 (1040 bytes) name=FUN_00243ae0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_00243ae0(float param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4, + int param_5) + +{ + undefined1 auVar1 [16]; + undefined1 auVar2 [16]; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + float fVar8; + undefined1 auVar10 [12]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + float fVar22; + float fVar26; + float fVar27; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar28; + undefined1 auVar25 [16]; + undefined8 uVar29; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined8 uVar33; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 uVar37; + undefined1 uVar38; + undefined1 uVar39; + undefined1 auVar9 [12]; + undefined1 auVar11 [16]; + undefined1 auVar18 [16]; + + param_5 = param_5 + -7; + if (param_1 == 1.0) { + if (0 < param_5) { + iVar7 = 0; + do { + uVar33 = *param_2; + uVar29 = *param_3; + auVar13._0_4_ = (int)(short)(char)uVar33; + auVar13._4_4_ = (int)(short)(char)((ulong)uVar33 >> 8); + auVar13._8_4_ = (int)(short)(char)((ulong)uVar33 >> 0x10); + auVar13._12_4_ = (int)(short)(char)((ulong)uVar33 >> 0x18); + auVar24 = NEON_scvtf(auVar13,4); + auVar14._0_4_ = (int)(short)(char)uVar29; + auVar14._4_4_ = (int)(short)(char)((ulong)uVar29 >> 8); + auVar14._8_4_ = (int)(short)(char)((ulong)uVar29 >> 0x10); + auVar14._12_4_ = (int)(short)(char)((ulong)uVar29 >> 0x18); + auVar34._0_4_ = (int)(short)(char)((ulong)uVar33 >> 0x20); + auVar34._4_4_ = (int)(short)(char)((ulong)uVar33 >> 0x28); + auVar34._8_4_ = (int)(short)(char)((ulong)uVar33 >> 0x30); + auVar34._12_4_ = (int)(short)(char)((ulong)uVar33 >> 0x38); + auVar15 = NEON_scvtf(auVar14,4); + auVar35 = NEON_scvtf(auVar34,4); + auVar30._0_4_ = (int)(short)(char)((ulong)uVar29 >> 0x20); + auVar30._4_4_ = (int)(short)(char)((ulong)uVar29 >> 0x28); + auVar30._8_4_ = (int)(short)(char)((ulong)uVar29 >> 0x30); + auVar30._12_4_ = (int)(short)(char)((ulong)uVar29 >> 0x38); + auVar31 = NEON_scvtf(auVar30,4); + auVar16._0_8_ = CONCAT44(auVar24._4_4_ * auVar15._4_4_,auVar24._0_4_ * auVar15._0_4_); + auVar16._8_4_ = auVar24._8_4_ * auVar15._8_4_; + auVar16._12_4_ = auVar24._12_4_ * auVar15._12_4_; + fVar22 = auVar35._0_4_ * auVar31._0_4_; + fVar26 = auVar35._4_4_ * auVar31._4_4_; + fVar27 = auVar35._8_4_ * auVar31._8_4_; + fVar28 = auVar35._12_4_ * auVar31._12_4_; + if ((DAT_00531ed0 & 1) == 0) { + uVar29 = auVar16._8_8_; + iVar6 = __cxa_guard_acquire(&DAT_00531ed0); + auVar16._8_8_ = uVar29; + if (iVar6 != 0) { + auVar17._8_4_ = 0x80000000; + auVar17._0_8_ = 0x8000000080000000; + auVar17._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar17._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ec8), iVar6 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar6 = (int)(auVar16._0_4_ + + (float)CONCAT13(auVar16[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + bRam0000000000531ea3, + CONCAT12(auVar16[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11(auVar16[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + bRam0000000000531ea1, + auVar16[0] & (byte)_DAT_00531eb0 | + DAT_00531ea0)))); + iVar3 = (int)(auVar16._4_4_ + + (float)CONCAT13(auVar16[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT12(auVar16[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + bRam0000000000531ea6, + CONCAT11(auVar16[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + auVar16[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4)))); + uVar37 = (undefined1)((uint)iVar3 >> 8); + uVar38 = (undefined1)((uint)iVar3 >> 0x10); + uVar39 = (undefined1)((uint)iVar3 >> 0x18); + iVar4 = (int)(auVar16._8_4_ + + (float)CONCAT13(auVar16[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + bRam0000000000531eab, + CONCAT12(auVar16[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + bRam0000000000531eaa, + CONCAT11(auVar16[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + bRam0000000000531ea9, + auVar16[8] & (byte)_uRam0000000000531eb8 | + bRam0000000000531ea8)))); + iVar5 = (int)(auVar16._12_4_ + + (float)CONCAT13(auVar16[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + bRam0000000000531eaf, + CONCAT12(auVar16[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + bRam0000000000531eae, + CONCAT11(auVar16[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28) + | bRam0000000000531ead, + auVar16[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) + | bRam0000000000531eac)))); + auVar1[4] = (char)iVar3; + auVar1._0_4_ = iVar6; + auVar1[5] = uVar37; + auVar1[6] = uVar38; + auVar1[7] = uVar39; + auVar1[8] = (char)iVar4; + auVar1[9] = (char)((uint)iVar4 >> 8); + auVar1[10] = (char)((uint)iVar4 >> 0x10); + auVar1[0xb] = (char)((uint)iVar4 >> 0x18); + auVar1[0xc] = (char)iVar5; + auVar1[0xd] = (char)((uint)iVar5 >> 8); + auVar1[0xe] = (char)((uint)iVar5 >> 0x10); + auVar1[0xf] = (char)((uint)iVar5 >> 0x18); + uVar29 = NEON_sqxtn(CONCAT17(uVar39,CONCAT16(uVar38,CONCAT15(uVar37,CONCAT14((char)iVar3, + iVar6)))), + auVar1,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ed0), iVar6 != 0)) { + auVar21._8_4_ = 0x80000000; + auVar21._0_8_ = 0x8000000080000000; + auVar21._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar21._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ec8), iVar6 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = iVar7 + 8; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + fVar8 = (float)CONCAT13((byte)((uint)fVar22 >> 0x18) & bRam0000000000531eb3 | + bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar22 >> 0x10) & bRam0000000000531eb2 | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar22 >> 8) & DAT_00531eb0_1 | + bRam0000000000531ea1, + SUB41(fVar22,0) & DAT_00531eb0 | DAT_00531ea0))); + auVar9._0_8_ = CONCAT17((byte)((uint)fVar26 >> 0x18) & bRam0000000000531eb7 | + bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar26 >> 0x10) & bRam0000000000531eb6 | + bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar26 >> 8) & bRam0000000000531eb5 | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar26,0) & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar8)))); + auVar9[8] = SUB41(fVar27,0) & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar9[9] = (byte)((uint)fVar27 >> 8) & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar9[10] = (byte)((uint)fVar27 >> 0x10) & bRam0000000000531eba | bRam0000000000531eaa; + auVar9[0xb] = (byte)((uint)fVar27 >> 0x18) & bRam0000000000531ebb | bRam0000000000531eab; + auVar11[0xc] = SUB41(fVar28,0) & bRam0000000000531ebc | bRam0000000000531eac; + auVar11._0_12_ = auVar9; + auVar11[0xd] = (byte)((uint)fVar28 >> 8) & bRam0000000000531ebd | bRam0000000000531ead; + auVar11[0xe] = (byte)((uint)fVar28 >> 0x10) & bRam0000000000531ebe | bRam0000000000531eae; + auVar11[0xf] = (byte)((uint)fVar28 >> 0x18) & bRam0000000000531ebf | bRam0000000000531eaf; + auVar12._0_8_ = + CONCAT44((int)(fVar26 + (float)((ulong)auVar9._0_8_ >> 0x20)),(int)(fVar22 + fVar8)); + auVar12._8_4_ = (int)(fVar27 + auVar9._8_4_); + auVar12._12_4_ = (int)(fVar28 + auVar11._12_4_); + uVar33 = NEON_sqxtn(auVar12._0_8_,auVar12,4); + auVar23._8_8_ = uVar33; + auVar23._0_8_ = uVar29; + uVar29 = NEON_sqxtn(uVar33,auVar23,2); + *param_4 = uVar29; + param_4 = param_4 + 1; + } while (iVar7 < param_5); + return iVar7; + } + } + else if (0 < param_5) { + iVar7 = 0; + do { + uVar29 = *param_2; + uVar33 = *param_3; + auVar35._0_4_ = (int)(short)(char)uVar29; + auVar35._4_4_ = (int)(short)(char)((ulong)uVar29 >> 8); + auVar35._8_4_ = (int)(short)(char)((ulong)uVar29 >> 0x10); + auVar35._12_4_ = (int)(short)(char)((ulong)uVar29 >> 0x18); + auVar32 = NEON_scvtf(auVar35,4); + auVar36._0_4_ = (int)(short)(char)uVar33; + auVar36._4_4_ = (int)(short)(char)((ulong)uVar33 >> 8); + auVar36._8_4_ = (int)(short)(char)((ulong)uVar33 >> 0x10); + auVar36._12_4_ = (int)(short)(char)((ulong)uVar33 >> 0x18); + auVar35 = NEON_scvtf(auVar36,4); + auVar24._0_4_ = (int)(short)(char)((ulong)uVar29 >> 0x20); + auVar24._4_4_ = (int)(short)(char)((ulong)uVar29 >> 0x28); + auVar24._8_4_ = (int)(short)(char)((ulong)uVar29 >> 0x30); + auVar24._12_4_ = (int)(short)(char)((ulong)uVar29 >> 0x38); + auVar36 = NEON_scvtf(auVar24,4); + auVar31._0_4_ = (int)(short)(char)((ulong)uVar33 >> 0x20); + auVar31._4_4_ = (int)(short)(char)((ulong)uVar33 >> 0x28); + auVar31._8_4_ = (int)(short)(char)((ulong)uVar33 >> 0x30); + auVar31._12_4_ = (int)(short)(char)((ulong)uVar33 >> 0x38); + auVar24 = NEON_scvtf(auVar31,4); + auVar15._0_8_ = + CONCAT44(param_1 * auVar32._4_4_ * auVar35._4_4_,param_1 * auVar32._0_4_ * auVar35._0_4_) + ; + auVar15._8_4_ = param_1 * auVar32._8_4_ * auVar35._8_4_; + auVar15._12_4_ = param_1 * auVar32._12_4_ * auVar35._12_4_; + fVar22 = param_1 * auVar36._0_4_ * auVar24._0_4_; + fVar26 = param_1 * auVar36._4_4_ * auVar24._4_4_; + fVar27 = param_1 * auVar36._8_4_ * auVar24._8_4_; + fVar28 = param_1 * auVar36._12_4_ * auVar24._12_4_; + if ((DAT_00531ed0 & 1) == 0) { + uVar29 = auVar15._8_8_; + iVar6 = __cxa_guard_acquire(&DAT_00531ed0); + auVar15._8_8_ = uVar29; + if (iVar6 != 0) { + auVar32._8_4_ = 0x80000000; + auVar32._0_8_ = 0x8000000080000000; + auVar32._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar32._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ec8), iVar6 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar6 = (int)(auVar15._0_4_ + + (float)CONCAT13(auVar15[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + bRam0000000000531ea3, + CONCAT12(auVar15[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11(auVar15[1] & (byte)((ulong)_DAT_00531eb0 >> 8) + | bRam0000000000531ea1, + auVar15[0] & (byte)_DAT_00531eb0 | DAT_00531ea0 + )))); + iVar3 = (int)(auVar15._4_4_ + + (float)CONCAT13(auVar15[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT12(auVar15[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + bRam0000000000531ea6, + CONCAT11(auVar15[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + auVar15[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4)))); + uVar37 = (undefined1)((uint)iVar3 >> 8); + uVar38 = (undefined1)((uint)iVar3 >> 0x10); + uVar39 = (undefined1)((uint)iVar3 >> 0x18); + iVar4 = (int)(auVar15._8_4_ + + (float)CONCAT13(auVar15[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + bRam0000000000531eab, + CONCAT12(auVar15[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + bRam0000000000531eaa, + CONCAT11(auVar15[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + bRam0000000000531ea9, + auVar15[8] & (byte)_uRam0000000000531eb8 | + bRam0000000000531ea8)))); + iVar5 = (int)(auVar15._12_4_ + + (float)CONCAT13(auVar15[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + bRam0000000000531eaf, + CONCAT12(auVar15[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + bRam0000000000531eae, + CONCAT11(auVar15[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28) | + bRam0000000000531ead, + auVar15[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + bRam0000000000531eac)))); + auVar2[4] = (char)iVar3; + auVar2._0_4_ = iVar6; + auVar2[5] = uVar37; + auVar2[6] = uVar38; + auVar2[7] = uVar39; + auVar2[8] = (char)iVar4; + auVar2[9] = (char)((uint)iVar4 >> 8); + auVar2[10] = (char)((uint)iVar4 >> 0x10); + auVar2[0xb] = (char)((uint)iVar4 >> 0x18); + auVar2[0xc] = (char)iVar5; + auVar2[0xd] = (char)((uint)iVar5 >> 8); + auVar2[0xe] = (char)((uint)iVar5 >> 0x10); + auVar2[0xf] = (char)((uint)iVar5 >> 0x18); + uVar29 = NEON_sqxtn(CONCAT17(uVar39,CONCAT16(uVar38,CONCAT15(uVar37,CONCAT14((char)iVar3,iVar6 + )))),auVar2,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ed0), iVar6 != 0)) { + auVar20._8_4_ = 0x80000000; + auVar20._0_8_ = 0x8000000080000000; + auVar20._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar20._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ec8), iVar6 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = iVar7 + 8; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + fVar8 = (float)CONCAT13((byte)((uint)fVar22 >> 0x18) & bRam0000000000531eb3 | + bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar22 >> 0x10) & bRam0000000000531eb2 | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar22 >> 8) & DAT_00531eb0_1 | + bRam0000000000531ea1, + SUB41(fVar22,0) & DAT_00531eb0 | DAT_00531ea0))); + auVar10._0_8_ = + CONCAT17((byte)((uint)fVar26 >> 0x18) & bRam0000000000531eb7 | bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar26 >> 0x10) & bRam0000000000531eb6 | + bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar26 >> 8) & bRam0000000000531eb5 | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar26,0) & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar8)))); + auVar10[8] = SUB41(fVar27,0) & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar10[9] = (byte)((uint)fVar27 >> 8) & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar10[10] = (byte)((uint)fVar27 >> 0x10) & bRam0000000000531eba | bRam0000000000531eaa; + auVar10[0xb] = (byte)((uint)fVar27 >> 0x18) & bRam0000000000531ebb | bRam0000000000531eab; + auVar18[0xc] = SUB41(fVar28,0) & bRam0000000000531ebc | bRam0000000000531eac; + auVar18._0_12_ = auVar10; + auVar18[0xd] = (byte)((uint)fVar28 >> 8) & bRam0000000000531ebd | bRam0000000000531ead; + auVar18[0xe] = (byte)((uint)fVar28 >> 0x10) & bRam0000000000531ebe | bRam0000000000531eae; + auVar18[0xf] = (byte)((uint)fVar28 >> 0x18) & bRam0000000000531ebf | bRam0000000000531eaf; + auVar19._0_8_ = + CONCAT44((int)(fVar26 + (float)((ulong)auVar10._0_8_ >> 0x20)),(int)(fVar22 + fVar8)); + auVar19._8_4_ = (int)(fVar27 + auVar10._8_4_); + auVar19._12_4_ = (int)(fVar28 + auVar18._12_4_); + uVar33 = NEON_sqxtn(auVar19._0_8_,auVar19,4); + auVar25._8_8_ = uVar33; + auVar25._0_8_ = uVar29; + uVar29 = NEON_sqxtn(uVar33,auVar25,2); + *param_4 = uVar29; + param_4 = param_4 + 1; + } while (iVar7 < param_5); + return iVar7; + } + return 0; +} + + +================================================================== + +### FUNC 00243ef0 (1104 bytes) name=FUN_00243ef0 + +void FUN_00243ef0(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7,double *param_8) + +{ + char *pcVar1; + char *pcVar2; + int iVar3; + uint uVar4; + int iVar5; + int iVar6; + long lVar7; + long lVar8; + undefined1 uVar9; + char *pcVar10; + undefined1 *puVar11; + char *pcVar12; + long lVar13; + undefined1 uVar14; + undefined1 uVar15; + undefined1 uVar16; + int iVar17; + float fVar18; + + iVar3 = *param_7; + iVar17 = param_7[1]; + fVar18 = (float)*param_8; + if (fVar18 == 1.0) { + if (iVar17 != 0) { + do { + iVar6 = FUN_00243ae0(0x3f800000,param_1,param_3,param_5,iVar3); + uVar15 = 0x80; + uVar16 = 0x7f; + if (iVar6 < iVar3 + -3) { + lVar13 = (long)iVar6; + uVar4 = (uint)((iVar3 + -4) - iVar6) >> 2; + pcVar12 = (char *)(param_3 + lVar13); + puVar11 = (undefined1 *)(param_5 + lVar13); + pcVar10 = (char *)(param_1 + lVar13); + do { + iVar5 = (int)*pcVar10 * (int)*pcVar12; + uVar14 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar14 = uVar16, iVar5 < 1)) { + uVar14 = uVar15; + } + iVar5 = (int)pcVar10[1] * (int)pcVar12[1]; + uVar9 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar9 = uVar16, iVar5 < 1)) { + uVar9 = uVar15; + } + *puVar11 = uVar14; + puVar11[1] = uVar9; + iVar5 = (int)pcVar10[2] * (int)pcVar12[2]; + uVar14 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar14 = 0x7f, iVar5 < 1)) { + uVar14 = 0x80; + } + pcVar1 = pcVar12 + 3; + pcVar2 = pcVar10 + 4; + pcVar12 = pcVar12 + 4; + iVar5 = (uint)(byte)pcVar10[3] * (int)*pcVar1; + uVar9 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar9 = 0x7f, iVar5 < 1)) { + uVar9 = 0x80; + } + puVar11[2] = uVar14; + puVar11[3] = uVar9; + puVar11 = puVar11 + 4; + pcVar10 = pcVar2; + } while (pcVar2 != (char *)(param_1 + lVar13 + 4 + (ulong)uVar4 * 4)); + iVar6 = iVar6 + 4 + uVar4 * 4; + } + if (iVar6 < iVar3) { + lVar13 = 0; + lVar7 = (long)iVar6; + do { + iVar5 = (int)*(char *)(param_1 + lVar7 + lVar13) * + (int)*(char *)(param_3 + lVar7 + lVar13); + uVar14 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar14 = uVar16, iVar5 < 1)) { + uVar14 = uVar15; + } + *(undefined1 *)(param_5 + lVar7 + lVar13) = uVar14; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar3 + -1) - iVar6) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar17 != 0); + } + } + else if (iVar17 != 0) { + do { + iVar6 = FUN_00243ae0(fVar18,param_1,param_3,param_5,iVar3); + uVar15 = 0x80; + uVar16 = 0x7f; + if (iVar6 < iVar3 + -3) { + lVar13 = (long)iVar6; + pcVar12 = (char *)(param_1 + lVar13); + uVar4 = (uint)((iVar3 + -4) - iVar6) >> 2; + puVar11 = (undefined1 *)(param_5 + lVar13); + pcVar10 = (char *)(param_3 + lVar13); + do { + lVar7 = lrintf(fVar18 * (float)(int)*pcVar12 * (float)(int)*pcVar10); + uVar14 = (char)lVar7; + if ((0xff < (int)lVar7 + 0x80U) && (uVar14 = uVar16, (int)lVar7 < 1)) { + uVar14 = uVar15; + } + lVar7 = lrintf(fVar18 * (float)(int)pcVar12[1] * (float)(int)pcVar10[1]); + uVar9 = (char)lVar7; + if ((0xff < (int)lVar7 + 0x80U) && (uVar9 = uVar16, (int)lVar7 < 1)) { + uVar9 = uVar15; + } + *puVar11 = uVar14; + puVar11[1] = uVar9; + lVar7 = lrintf(fVar18 * (float)(int)pcVar12[2] * (float)(int)pcVar10[2]); + uVar14 = (char)lVar7; + if ((0xff < (int)lVar7 + 0x80U) && (uVar14 = 0x7f, (int)lVar7 < 1)) { + uVar14 = 0x80; + } + pcVar1 = pcVar12 + 3; + pcVar12 = pcVar12 + 4; + lVar7 = lrintf(fVar18 * (float)(int)*pcVar1 * (float)(byte)pcVar10[3]); + uVar9 = (char)lVar7; + if ((0xff < (int)lVar7 + 0x80U) && (uVar9 = 0x7f, (int)lVar7 < 1)) { + uVar9 = 0x80; + } + puVar11[2] = uVar14; + puVar11[3] = uVar9; + puVar11 = puVar11 + 4; + pcVar10 = pcVar10 + 4; + } while (pcVar12 != (char *)(param_1 + lVar13 + 4 + (ulong)uVar4 * 4)); + iVar6 = iVar6 + 4 + uVar4 * 4; + } + if (iVar6 < iVar3) { + lVar13 = 0; + lVar7 = (long)iVar6; + do { + lVar8 = lrintf(fVar18 * (float)(int)*(char *)(param_1 + lVar7 + lVar13) * + (float)(int)*(char *)(param_3 + lVar7 + lVar13)); + uVar14 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar14 = uVar16, (int)lVar8 < 1)) { + uVar14 = uVar15; + } + *(undefined1 *)(param_5 + lVar7 + lVar13) = uVar14; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar3 + -1) - iVar6) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 00244340 (1216 bytes) name=FUN_00244340 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00244340(undefined8 *param_1,long param_2,undefined8 *param_3,long param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 auVar1 [16]; + float fVar2; + float fVar3; + float fVar4; + int iVar5; + uint uVar6; + long lVar7; + int iVar8; + undefined8 *puVar9; + long lVar10; + undefined1 *puVar11; + undefined8 *puVar12; + byte *pbVar13; + long lVar14; + byte *pbVar15; + undefined8 *puVar16; + undefined1 uVar17; + undefined1 uVar18; + undefined1 uVar19; + float fVar20; + undefined8 uVar21; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + byte bVar28; + byte bVar29; + byte bVar30; + byte bVar31; + byte bVar32; + byte bVar33; + undefined1 auVar34 [16]; + undefined8 uVar35; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + float fVar38; + undefined1 auVar39 [12]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + float fVar44; + double dVar45; + float fVar46; + double dVar47; + float fVar48; + double dVar49; + undefined1 auVar22 [12]; + undefined1 auVar23 [16]; + undefined1 auVar40 [16]; + + dVar47 = param_8[1]; + iVar5 = param_7[1]; + dVar49 = param_8[2]; + dVar45 = *param_8; + param_7[1] = iVar5 + -1; + fVar44 = (float)dVar45; + fVar46 = (float)dVar47; + fVar48 = (float)dVar49; + if (iVar5 != 0) { + iVar5 = *param_7; + do { + if (iVar5 < 8) { + iVar8 = 0; + } + else { + iVar8 = 0; + puVar9 = param_3; + puVar12 = param_1; + puVar16 = param_5; + do { + uVar21 = *puVar12; + uVar35 = *puVar9; + uVar17 = (undefined1)((ulong)uVar21 >> 8); + uVar19 = (undefined1)((ulong)uVar21 >> 0x28); + uVar18 = (undefined1)((ulong)uVar35 >> 8); + auVar25._6_2_ = 0; + auVar25._0_6_ = + (uint6)CONCAT14(uVar17,(uint)CONCAT12(uVar17,(ushort)(byte)uVar21)) & 0xffff0000ffff; + auVar25[8] = (char)((ulong)uVar21 >> 0x10); + auVar25._9_3_ = 0; + auVar25[0xc] = (char)((ulong)uVar21 >> 0x18); + auVar25._13_3_ = 0; + auVar37._6_2_ = 0; + auVar37._0_6_ = + (uint6)CONCAT14(uVar19,(uint)CONCAT12(uVar19,(ushort)(byte)((ulong)uVar21 >> 0x20))) + & 0xffff0000ffff; + auVar37[8] = (char)((ulong)uVar21 >> 0x30); + auVar37._9_3_ = 0; + auVar37[0xc] = (char)((ulong)uVar21 >> 0x38); + auVar37._13_3_ = 0; + auVar25 = NEON_ucvtf(auVar25,4); + auVar34 = NEON_ucvtf(auVar37,4); + auVar43._6_2_ = 0; + auVar43._0_6_ = + (uint6)CONCAT14(uVar18,(uint)CONCAT12(uVar18,(ushort)(byte)uVar35)) & 0xffff0000ffff; + auVar43[8] = (char)((ulong)uVar35 >> 0x10); + auVar43._9_3_ = 0; + auVar43[0xc] = (char)((ulong)uVar35 >> 0x18); + auVar43._13_3_ = 0; + auVar43 = NEON_ucvtf(auVar43,4); + auVar36._1_3_ = 0; + auVar36[0] = (byte)((ulong)uVar35 >> 0x20); + auVar36[4] = (char)((ulong)uVar35 >> 0x28); + auVar36._5_3_ = 0; + auVar36[8] = (char)((ulong)uVar35 >> 0x30); + auVar36._9_3_ = 0; + auVar36[0xc] = (char)((ulong)uVar35 >> 0x38); + auVar36._13_3_ = 0; + auVar37 = NEON_ucvtf(auVar36,4); + fVar38 = auVar34._0_4_ * fVar44 + auVar37._0_4_ * fVar46 + fVar48; + fVar2 = auVar34._4_4_ * fVar44 + auVar37._4_4_ * fVar46 + fVar48; + bVar28 = (byte)((uint)fVar2 >> 8); + bVar29 = (byte)((uint)fVar2 >> 0x10); + bVar30 = (byte)((uint)fVar2 >> 0x18); + fVar3 = auVar34._8_4_ * fVar44 + auVar37._8_4_ * fVar46 + fVar48; + fVar4 = auVar34._12_4_ * fVar44 + auVar37._12_4_ * fVar46 + fVar48; + bVar31 = (byte)((uint)fVar4 >> 8); + bVar32 = (byte)((uint)fVar4 >> 0x10); + bVar33 = (byte)((uint)fVar4 >> 0x18); + auVar34._0_8_ = + CONCAT44(auVar25._4_4_ * fVar44 + auVar43._4_4_ * fVar46 + fVar48, + auVar25._0_4_ * fVar44 + auVar43._0_4_ * fVar46 + fVar48); + auVar34._8_4_ = auVar25._8_4_ * fVar44 + auVar43._8_4_ * fVar46 + fVar48; + auVar34._12_4_ = auVar25._12_4_ * fVar44 + auVar43._12_4_ * fVar46 + fVar48; + if ((DAT_00531ed0 & 1) == 0) { + uVar21 = auVar34._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531ed0); + auVar34._8_8_ = uVar21; + if (iVar5 != 0) { + auVar26._8_4_ = 0x80000000; + auVar26._0_8_ = 0x8000000080000000; + auVar26._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar26._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531ec8); + if (iVar5 != 0) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + } + fVar20 = (float)CONCAT13(auVar34[3] & bRam0000000000531eb3 | bRam0000000000531ea3, + CONCAT12(auVar34[2] & bRam0000000000531eb2 | bRam0000000000531ea2 + ,CONCAT11(auVar34[1] & DAT_00531eb0_1 | + bRam0000000000531ea1, + auVar34[0] & DAT_00531eb0 | DAT_00531ea0))); + auVar39._0_8_ = + CONCAT17(auVar34[7] & bRam0000000000531eb7 | bRam0000000000531ea7, + CONCAT16(auVar34[6] & bRam0000000000531eb6 | bRam0000000000531ea6, + CONCAT15(auVar34[5] & bRam0000000000531eb5 | bRam0000000000531ea5, + CONCAT14(auVar34[4] & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar20)))); + auVar39[8] = auVar34[8] & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar39[9] = auVar34[9] & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar39[10] = auVar34[10] & bRam0000000000531eba | bRam0000000000531eaa; + auVar39[0xb] = auVar34[0xb] & bRam0000000000531ebb | bRam0000000000531eab; + auVar40[0xc] = auVar34[0xc] & bRam0000000000531ebc | bRam0000000000531eac; + auVar40._0_12_ = auVar39; + auVar40[0xd] = auVar34[0xd] & bRam0000000000531ebd | bRam0000000000531ead; + auVar40[0xe] = auVar34[0xe] & bRam0000000000531ebe | bRam0000000000531eae; + auVar40[0xf] = auVar34[0xf] & bRam0000000000531ebf | bRam0000000000531eaf; + auVar41._0_8_ = + CONCAT44((int)(auVar34._4_4_ + (float)((ulong)auVar39._0_8_ >> 0x20)), + (int)(auVar34._0_4_ + fVar20)); + auVar41._8_4_ = (int)(auVar34._8_4_ + auVar39._8_4_); + auVar41._12_4_ = (int)(auVar34._12_4_ + auVar40._12_4_); + auVar42._8_8_ = auVar41._8_8_; + auVar42._0_8_ = NEON_sqxtun(auVar41._0_8_,auVar41,4); + if ((DAT_00531ed0 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531ed0); + if (iVar5 != 0) { + auVar27._8_4_ = 0x80000000; + auVar27._0_8_ = 0x8000000080000000; + auVar27._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar27._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + uVar21 = auVar42._0_8_; + if (((DAT_00531ec8 & 1) == 0) && + (iVar5 = __cxa_guard_acquire(&DAT_00531ec8), uVar21 = auVar42._0_8_, iVar5 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + uVar21 = auVar42._0_8_; + } + iVar8 = iVar8 + 8; + puVar12 = puVar12 + 1; + puVar9 = puVar9 + 1; + fVar20 = (float)CONCAT13((byte)((uint)fVar38 >> 0x18) & bRam0000000000531eb3 | + bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar38 >> 0x10) & bRam0000000000531eb2 | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar38 >> 8) & DAT_00531eb0_1 | + bRam0000000000531ea1, + SUB41(fVar38,0) & DAT_00531eb0 | DAT_00531ea0)) + ); + auVar22._0_8_ = + CONCAT17(bVar30 & bRam0000000000531eb7 | bRam0000000000531ea7, + CONCAT16(bVar29 & bRam0000000000531eb6 | bRam0000000000531ea6, + CONCAT15(bVar28 & bRam0000000000531eb5 | bRam0000000000531ea5, + CONCAT14(SUB41(fVar2,0) & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar20)))); + auVar22[8] = SUB41(fVar3,0) & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar22[9] = (byte)((uint)fVar3 >> 8) & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar22[10] = (byte)((uint)fVar3 >> 0x10) & bRam0000000000531eba | bRam0000000000531eaa; + auVar22[0xb] = (byte)((uint)fVar3 >> 0x18) & bRam0000000000531ebb | bRam0000000000531eab; + auVar23[0xc] = SUB41(fVar4,0) & bRam0000000000531ebc | bRam0000000000531eac; + auVar23._0_12_ = auVar22; + auVar23[0xd] = bVar31 & bRam0000000000531ebd | bRam0000000000531ead; + auVar23[0xe] = bVar32 & bRam0000000000531ebe | bRam0000000000531eae; + auVar23[0xf] = bVar33 & bRam0000000000531ebf | bRam0000000000531eaf; + auVar24._0_8_ = + CONCAT44((int)((float)(CONCAT17(bVar30,CONCAT16(bVar29,CONCAT15(bVar28,CONCAT14(SUB41 + (fVar2,0),fVar38)))) >> 0x20) + + (float)((ulong)auVar22._0_8_ >> 0x20)),(int)(fVar38 + fVar20)); + auVar24._8_4_ = (int)(fVar3 + auVar22._8_4_); + auVar24._12_4_ = + (int)((float)(CONCAT17(bVar33,CONCAT16(bVar32,CONCAT15(bVar31,CONCAT14(SUB41(fVar4,0) + ,fVar3)))) >> + 0x20) + auVar23._12_4_); + uVar35 = NEON_sqxtun(auVar24._0_8_,auVar24,4); + auVar1[8] = (char)uVar35; + auVar1._0_8_ = uVar21; + auVar1[9] = (char)((ulong)uVar35 >> 8); + auVar1[10] = (char)((ulong)uVar35 >> 0x10); + auVar1[0xb] = (char)((ulong)uVar35 >> 0x18); + auVar1[0xc] = (char)((ulong)uVar35 >> 0x20); + auVar1[0xd] = (char)((ulong)uVar35 >> 0x28); + auVar1[0xe] = (char)((ulong)uVar35 >> 0x30); + auVar1[0xf] = (char)((ulong)uVar35 >> 0x38); + uVar21 = NEON_uqxtn(uVar35,auVar1,2); + *puVar16 = uVar21; + iVar5 = *param_7; + puVar16 = puVar16 + 1; + } while (iVar8 < iVar5 + -7); + } + if (iVar8 < iVar5 + -3) { + lVar10 = (long)iVar8; + pbVar13 = (byte *)((long)param_3 + lVar10); + pbVar15 = (byte *)((long)param_1 + lVar10); + puVar11 = (undefined1 *)((long)param_5 + lVar10); + do { + fVar38 = fVar46 * *(float *)(PTR_DAT_00501fd0 + (long)(int)(pbVar13[1] + 0x80) * 4) + + fVar44 * *(float *)(PTR_DAT_00501fd0 + (long)(int)(pbVar15[1] + 0x80) * 4) + + fVar48; + lVar10 = lrintf(fVar46 * *(float *)(PTR_DAT_00501fd0 + (long)(int)(*pbVar13 + 0x80) * 4) + + fVar44 * *(float *)(PTR_DAT_00501fd0 + (long)(int)(*pbVar15 + 0x80) * 4) + + fVar48); + uVar6 = (uint)lVar10; + if (0xff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + *puVar11 = (char)uVar6; + lVar10 = lrintf(fVar38); + uVar6 = (uint)lVar10; + if (0xff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + puVar11[1] = (char)uVar6; + auVar34 = ZEXT416((uint)(fVar46 * *(float *)(PTR_DAT_00501fd0 + + (long)(int)(pbVar13[3] + 0x80) * 4) + + fVar44 * *(float *)(PTR_DAT_00501fd0 + + (long)(int)(pbVar15[3] + 0x80) * 4) + fVar48)) + ; + lVar10 = lrintf(fVar46 * *(float *)(PTR_DAT_00501fd0 + (long)(int)(pbVar13[2] + 0x80) * 4) + + fVar44 * *(float *)(PTR_DAT_00501fd0 + + (long)(int)(pbVar15[2] + 0x80) * 4) + fVar48); + uVar6 = (uint)lVar10; + if (0xff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + puVar11[2] = (char)uVar6; + lVar10 = lrintf(auVar34._0_4_); + uVar6 = (uint)lVar10; + if (0xff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + puVar11[3] = (char)uVar6; + iVar8 = iVar8 + 4; + pbVar15 = pbVar15 + 4; + iVar5 = *param_7; + pbVar13 = pbVar13 + 4; + puVar11 = puVar11 + 4; + } while (iVar8 < iVar5 + -3); + } + if (iVar8 < iVar5) { + lVar10 = 0; + lVar14 = (long)iVar8; + do { + lVar7 = lrintf(fVar46 * *(float *)(PTR_DAT_00501fd0 + + (long)(int)(*(byte *)((long)param_3 + lVar10 + lVar14) + + 0x80) * 4) + + fVar44 * *(float *)(PTR_DAT_00501fd0 + + (long)(int)(*(byte *)((long)param_1 + lVar10 + lVar14) + + 0x80) * 4) + fVar48); + uVar6 = (uint)lVar7; + if (0xff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + iVar8 = iVar8 + 1; + *(char *)((long)param_5 + lVar10 + lVar14) = (char)uVar6; + lVar10 = lVar10 + 1; + iVar5 = *param_7; + } while (iVar8 < iVar5); + } + iVar8 = param_7[1]; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_3 = (undefined8 *)((long)param_3 + param_4); + param_5 = (undefined8 *)((long)param_5 + param_6); + param_7[1] = iVar8 + -1; + } while (iVar8 != 0); + } + return; +} + + +================================================================== + +### FUNC 00244800 (1236 bytes) name=FUN_00244800 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00244800(undefined8 *param_1,long param_2,undefined8 *param_3,long param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined4 uVar3; + undefined6 uVar4; + undefined1 auVar5 [16]; + short sVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + undefined1 auVar11 [16]; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + long lVar16; + long lVar17; + undefined1 uVar18; + int iVar19; + undefined8 *puVar20; + char *pcVar21; + undefined8 *puVar22; + long lVar23; + undefined1 *puVar24; + char *pcVar25; + undefined8 *puVar26; + char cVar27; + char cVar28; + char cVar29; + char cVar30; + char cVar31; + float fVar32; + undefined8 uVar33; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + byte bVar41; + byte bVar42; + char cVar43; + byte bVar44; + byte bVar45; + byte bVar46; + byte bVar47; + undefined1 auVar48 [16]; + undefined8 uVar49; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + float fVar52; + float fVar53; + float fVar54; + undefined1 uVar55; + undefined1 uVar56; + undefined1 uVar57; + int iVar58; + float fStack_4c; + undefined1 auVar34 [12]; + undefined1 auVar35 [16]; + + iVar58 = param_7[1]; + iVar1 = *param_7; + fVar52 = (float)*param_8; + fVar53 = (float)param_8[1]; + fVar54 = (float)param_8[2]; + if (iVar58 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar19 = 0; + } + else { + iVar19 = 0; + puVar20 = param_3; + puVar22 = param_1; + puVar26 = param_5; + do { + uVar33 = *puVar22; + cVar43 = (char)((ulong)uVar33 >> 0x38); + cVar27 = (char)((ulong)uVar33 >> 8); + cVar28 = (char)((ulong)uVar33 >> 0x10); + cVar29 = (char)((ulong)uVar33 >> 0x18); + cVar30 = (char)((ulong)uVar33 >> 0x28); + cVar31 = (char)((ulong)uVar33 >> 0x30); + uVar3 = CONCAT13(cVar27 >> 7,CONCAT12(cVar27,(short)(char)uVar33)); + uVar4 = CONCAT15(cVar28 >> 7,CONCAT14(cVar28,uVar3)); + auVar37._0_4_ = (int)(short)(char)uVar33; + auVar37._4_4_ = (int)(short)((uint)uVar3 >> 0x10); + auVar37._8_4_ = (int)(short)((uint6)uVar4 >> 0x20); + auVar37._12_4_ = (int)(short)(CONCAT17(cVar29 >> 7,CONCAT16(cVar29,uVar4)) >> 0x30); + auVar37 = NEON_scvtf(auVar37,4); + uVar49 = *puVar20; + sVar6 = (short)(char)((ulong)uVar33 >> 0x20); + uVar3 = CONCAT13(cVar30 >> 7,CONCAT12(cVar30,sVar6)); + uVar4 = CONCAT15(cVar31 >> 7,CONCAT14(cVar31,uVar3)); + auVar51._0_4_ = (int)sVar6; + auVar51._4_4_ = (int)(short)((uint)uVar3 >> 0x10); + auVar51._8_4_ = (int)(short)((uint6)uVar4 >> 0x20); + auVar51._12_4_ = (int)(short)(CONCAT17(cVar43 >> 7,CONCAT16(cVar43,uVar4)) >> 0x30); + auVar38._4_4_ = (int)(short)(char)((ulong)uVar49 >> 8); + auVar38._0_4_ = (int)(short)(char)uVar49; + auVar38._8_4_ = (int)(short)(char)((ulong)uVar49 >> 0x10); + auVar38._12_4_ = (int)(short)(char)((ulong)uVar49 >> 0x18); + auVar38 = NEON_scvtf(auVar38,4); + auVar50._0_4_ = (int)(short)(char)((ulong)uVar49 >> 0x20); + auVar50._4_4_ = (int)(short)(char)((ulong)uVar49 >> 0x28); + auVar50._8_4_ = (int)(short)(char)((ulong)uVar49 >> 0x30); + auVar50._12_4_ = (int)(short)(char)((ulong)uVar49 >> 0x38); + auVar48 = NEON_scvtf(auVar51,4); + auVar51 = NEON_scvtf(auVar50,4); + fVar7 = auVar48._0_4_ * fVar52 + auVar51._0_4_ * fVar53 + fVar54; + fVar8 = auVar48._4_4_ * fVar52 + auVar51._4_4_ * fVar53 + fVar54; + bVar41 = (byte)((uint)fVar8 >> 8); + bVar42 = (byte)((uint)fVar8 >> 0x10); + bVar44 = (byte)((uint)fVar8 >> 0x18); + fVar9 = auVar48._8_4_ * fVar52 + auVar51._8_4_ * fVar53 + fVar54; + fVar10 = auVar48._12_4_ * fVar52 + auVar51._12_4_ * fVar53 + fVar54; + bVar45 = (byte)((uint)fVar10 >> 8); + bVar46 = (byte)((uint)fVar10 >> 0x10); + bVar47 = (byte)((uint)fVar10 >> 0x18); + auVar48._0_8_ = + CONCAT44(auVar37._4_4_ * fVar52 + auVar38._4_4_ * fVar53 + fVar54, + auVar37._0_4_ * fVar52 + auVar38._0_4_ * fVar53 + fVar54); + auVar48._8_4_ = auVar37._8_4_ * fVar52 + auVar38._8_4_ * fVar53 + fVar54; + auVar48._12_4_ = auVar37._12_4_ * fVar52 + auVar38._12_4_ * fVar53 + fVar54; + fStack_4c = (float)(CONCAT17(bVar44,CONCAT16(bVar42,CONCAT15(bVar41,CONCAT14(SUB41(fVar8,0 + ),fVar7)))) >> 0x20); + if ((DAT_00531ed0 & 1) == 0) { + uVar33 = auVar48._8_8_; + iVar15 = __cxa_guard_acquire(&DAT_00531ed0); + auVar48._8_8_ = uVar33; + if (iVar15 != 0) { + auVar39._8_4_ = 0x80000000; + auVar39._0_8_ = 0x8000000080000000; + auVar39._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar39._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar15 = __cxa_guard_acquire(&DAT_00531ec8), iVar15 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar15 = (int)(auVar48._0_4_ + + (float)CONCAT13(auVar48[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + bRam0000000000531ea3, + CONCAT12(auVar48[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11(auVar48[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + bRam0000000000531ea1, + auVar48[0] & (byte)_DAT_00531eb0 | + DAT_00531ea0)))); + iVar12 = (int)(auVar48._4_4_ + + (float)CONCAT13(auVar48[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT12(auVar48[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + bRam0000000000531ea6, + CONCAT11(auVar48[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + auVar48[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4)))); + uVar55 = (undefined1)((uint)iVar12 >> 8); + uVar56 = (undefined1)((uint)iVar12 >> 0x10); + uVar57 = (undefined1)((uint)iVar12 >> 0x18); + iVar13 = (int)(auVar48._8_4_ + + (float)CONCAT13(auVar48[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) + | bRam0000000000531eab, + CONCAT12(auVar48[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + bRam0000000000531eaa, + CONCAT11(auVar48[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) + | bRam0000000000531ea9, + auVar48[8] & (byte)_uRam0000000000531eb8 | + bRam0000000000531ea8)))); + iVar14 = (int)(auVar48._12_4_ + + (float)CONCAT13(auVar48[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) + | bRam0000000000531eaf, + CONCAT12(auVar48[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + bRam0000000000531eae, + CONCAT11(auVar48[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x28) | bRam0000000000531ead, + auVar48[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x20) | bRam0000000000531eac)))); + auVar11[4] = (char)iVar12; + auVar11._0_4_ = iVar15; + auVar11[5] = uVar55; + auVar11[6] = uVar56; + auVar11[7] = uVar57; + auVar11[8] = (char)iVar13; + auVar11[9] = (char)((uint)iVar13 >> 8); + auVar11[10] = (char)((uint)iVar13 >> 0x10); + auVar11[0xb] = (char)((uint)iVar13 >> 0x18); + auVar11[0xc] = (char)iVar14; + auVar11[0xd] = (char)((uint)iVar14 >> 8); + auVar11[0xe] = (char)((uint)iVar14 >> 0x10); + auVar11[0xf] = (char)((uint)iVar14 >> 0x18); + uVar33 = NEON_sqxtn(CONCAT17(uVar57,CONCAT16(uVar56,CONCAT15(uVar55,CONCAT14((char)iVar12, + iVar15)))), + auVar11,4); + if (((DAT_00531ed0 & 1) == 0) && + (iVar15 = __cxa_guard_acquire(&DAT_00531ed0), iVar15 != 0)) { + auVar40._8_4_ = 0x80000000; + auVar40._0_8_ = 0x8000000080000000; + auVar40._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar40._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar15 = __cxa_guard_acquire(&DAT_00531ec8), iVar15 != 0)) { + bRam0000000000531ea8 = 0; + bRam0000000000531ea9 = 0; + bRam0000000000531eaa = 0; + bRam0000000000531eab = 0x3f; + bRam0000000000531eac = 0; + bRam0000000000531ead = 0; + bRam0000000000531eae = 0; + bRam0000000000531eaf = 0x3f; + DAT_00531ea0 = 0; + bRam0000000000531ea1 = 0; + bRam0000000000531ea2 = 0; + bRam0000000000531ea3 = 0x3f; + bRam0000000000531ea4 = 0; + bRam0000000000531ea5 = 0; + bRam0000000000531ea6 = 0; + bRam0000000000531ea7 = 0x3f; + __cxa_guard_release(&DAT_00531ec8); + } + iVar19 = iVar19 + 8; + puVar22 = puVar22 + 1; + puVar20 = puVar20 + 1; + fVar32 = (float)CONCAT13((byte)((uint)fVar7 >> 0x18) & bRam0000000000531eb3 | + bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar7 >> 0x10) & bRam0000000000531eb2 | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar7 >> 8) & DAT_00531eb0_1 | + bRam0000000000531ea1, + SUB41(fVar7,0) & DAT_00531eb0 | DAT_00531ea0))) + ; + auVar34._0_8_ = + CONCAT17(bVar44 & bRam0000000000531eb7 | bRam0000000000531ea7, + CONCAT16(bVar42 & bRam0000000000531eb6 | bRam0000000000531ea6, + CONCAT15(bVar41 & bRam0000000000531eb5 | bRam0000000000531ea5, + CONCAT14(SUB41(fVar8,0) & bRam0000000000531eb4 | + bRam0000000000531ea4,fVar32)))); + auVar34[8] = SUB41(fVar9,0) & (byte)uRam0000000000531eb8 | bRam0000000000531ea8; + auVar34[9] = (byte)((uint)fVar9 >> 8) & uRam0000000000531eb8._1_1_ | bRam0000000000531ea9; + auVar34[10] = (byte)((uint)fVar9 >> 0x10) & bRam0000000000531eba | bRam0000000000531eaa; + auVar34[0xb] = (byte)((uint)fVar9 >> 0x18) & bRam0000000000531ebb | bRam0000000000531eab; + auVar35[0xc] = SUB41(fVar10,0) & bRam0000000000531ebc | bRam0000000000531eac; + auVar35._0_12_ = auVar34; + auVar35[0xd] = bVar45 & bRam0000000000531ebd | bRam0000000000531ead; + auVar35[0xe] = bVar46 & bRam0000000000531ebe | bRam0000000000531eae; + auVar35[0xf] = bVar47 & bRam0000000000531ebf | bRam0000000000531eaf; + auVar36._0_8_ = + CONCAT44((int)(fStack_4c + (float)((ulong)auVar34._0_8_ >> 0x20)), + (int)(fVar7 + fVar32)); + auVar36._8_4_ = (int)(fVar9 + auVar34._8_4_); + auVar36._12_4_ = + (int)((float)(CONCAT17(bVar47,CONCAT16(bVar46,CONCAT15(bVar45,CONCAT14(SUB41(fVar10,0 + ),fVar9)))) >> 0x20) + auVar35._12_4_); + uVar49 = NEON_sqxtn(auVar36._0_8_,auVar36,4); + auVar5[8] = (char)uVar49; + auVar5._0_8_ = uVar33; + auVar5[9] = (char)((ulong)uVar49 >> 8); + auVar5[10] = (char)((ulong)uVar49 >> 0x10); + auVar5[0xb] = (char)((ulong)uVar49 >> 0x18); + auVar5[0xc] = (char)((ulong)uVar49 >> 0x20); + auVar5[0xd] = (char)((ulong)uVar49 >> 0x28); + auVar5[0xe] = (char)((ulong)uVar49 >> 0x30); + auVar5[0xf] = (char)((ulong)uVar49 >> 0x38); + uVar33 = NEON_sqxtn(uVar49,auVar5,2); + *puVar26 = uVar33; + puVar26 = puVar26 + 1; + } while (iVar19 < iVar1 + -7); + } + if (iVar19 < iVar1 + -3) { + lVar23 = (long)iVar19; + pcVar21 = (char *)((long)param_1 + lVar23); + pcVar25 = (char *)((long)param_3 + lVar23); + uVar2 = (uint)((iVar1 + -4) - iVar19) >> 2; + puVar24 = (undefined1 *)((long)param_5 + lVar23); + do { + lVar16 = lrintf(fVar54 + fVar53 * (float)(int)*pcVar25 + (float)(int)*pcVar21 * fVar52); + uVar56 = 0x80; + uVar57 = 0x7f; + uVar55 = (char)lVar16; + if ((0xff < (int)lVar16 + 0x80U) && (uVar55 = uVar57, (int)lVar16 < 1)) { + uVar55 = uVar56; + } + lVar16 = lrintf(fVar54 + fVar53 * (float)(int)pcVar25[1] + (float)(int)pcVar21[1] * fVar52 + ); + uVar18 = (char)lVar16; + if ((0xff < (int)lVar16 + 0x80U) && (uVar18 = uVar57, (int)lVar16 < 1)) { + uVar18 = uVar56; + } + *puVar24 = uVar55; + puVar24[1] = uVar18; + lVar16 = lrintf(fVar54 + fVar53 * (float)(int)pcVar25[2] + (float)(int)pcVar21[2] * fVar52 + ); + uVar55 = (char)lVar16; + if ((0xff < (int)lVar16 + 0x80U) && (uVar55 = uVar57, (int)lVar16 < 1)) { + uVar55 = uVar56; + } + lVar16 = lrintf(fVar54 + fVar53 * (float)(int)pcVar25[3] + (float)(int)pcVar21[3] * fVar52 + ); + uVar18 = (char)lVar16; + if ((0xff < (int)lVar16 + 0x80U) && (uVar18 = uVar57, (int)lVar16 < 1)) { + uVar18 = uVar56; + } + pcVar21 = pcVar21 + 4; + puVar24[2] = uVar55; + pcVar25 = pcVar25 + 4; + puVar24[3] = uVar18; + puVar24 = puVar24 + 4; + } while (pcVar21 != (char *)((long)param_1 + lVar23 + 4 + (ulong)uVar2 * 4)); + iVar19 = iVar19 + 4 + uVar2 * 4; + } + if (iVar19 < iVar1) { + lVar23 = 0; + lVar16 = (long)iVar19; + do { + lVar17 = lrintf(fVar54 + fVar53 * (float)(int)*(char *)((long)param_3 + lVar23 + lVar16) + + (float)(int)*(char *)((long)param_1 + lVar23 + lVar16) * fVar52); + uVar55 = (undefined1)lVar17; + if ((0xff < (int)lVar17 + 0x80U) && (uVar55 = 0x7f, (int)lVar17 < 1)) { + uVar55 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar23 + lVar16) = uVar55; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar1 + -1) - iVar19) + 1); + } + iVar58 = iVar58 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_3 = (undefined8 *)((long)param_3 + param_4); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar58 != 0); + } + return; +} + + +================================================================== + +### FUNC 00244cd4 (1316 bytes) name=FUN_00244cd4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00244cd4(undefined1 (*param_1) [16],ulong param_2,undefined8 *param_3,ulong param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + long lVar4; + undefined2 uVar5; + undefined8 *puVar6; + short *psVar7; + ulong uVar8; + undefined1 (*pauVar9) [16]; + long lVar10; + undefined2 *puVar11; + short *psVar12; + ulong uVar13; + undefined2 uVar14; + undefined8 *puVar15; + undefined2 uVar16; + undefined2 uVar17; + undefined8 uVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + float fVar27; + float fVar28; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined8 uVar31; + char cVar32; + char cVar33; + char cVar34; + float fVar35; + float fVar36; + float fVar37; + undefined8 uVar38; + short *psVar39; + undefined1 auVar40 [12]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + int iVar44; + float local_60; + float fStack_5c; + undefined1 auVar41 [16]; + + iVar2 = *param_7; + iVar44 = param_7[1]; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + fVar37 = (float)param_8[2]; + if (iVar44 != 0) { + do { + if (iVar2 + -7 < 1) { + uVar13 = 0; + } + else { + uVar13 = 0; + puVar6 = param_3; + pauVar9 = param_1; + puVar15 = param_5; + do { + auVar21 = *pauVar9; + uVar18 = puVar6[1]; + uVar38 = *puVar6; + auVar29._0_4_ = (int)auVar21._0_2_; + auVar29._4_4_ = (int)auVar21._2_2_; + auVar29._8_4_ = (int)auVar21._4_2_; + auVar29._12_4_ = (int)auVar21._6_2_; + auVar43._0_4_ = (int)(short)uVar38; + auVar43._4_4_ = (int)(short)((ulong)uVar38 >> 0x10); + auVar43._8_4_ = (int)(short)((ulong)uVar38 >> 0x20); + auVar43._12_4_ = (int)(short)((ulong)uVar38 >> 0x30); + auVar29 = NEON_scvtf(auVar29,4); + auVar43 = NEON_scvtf(auVar43,4); + auVar30._0_8_ = + CONCAT44(auVar29._4_4_ * fVar35 + auVar43._4_4_ * fVar36 + fVar37, + auVar29._0_4_ * fVar35 + auVar43._0_4_ * fVar36 + fVar37); + auVar30._8_4_ = auVar29._8_4_ * fVar35 + auVar43._8_4_ * fVar36 + fVar37; + auVar30._12_4_ = auVar29._12_4_ * fVar35 + auVar43._12_4_ * fVar36 + fVar37; + if ((DAT_00531ed0 & 1) == 0) { + uVar31 = auVar30._8_8_; + iVar3 = __cxa_guard_acquire(&DAT_00531ed0); + auVar30._8_8_ = uVar31; + if (iVar3 != 0) { + auVar25._8_4_ = 0x80000000; + auVar25._0_8_ = 0x8000000080000000; + auVar25._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar25._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar3 = __cxa_guard_acquire(&DAT_00531ec8), iVar3 != 0)) + { + auVar19._8_4_ = 0x3f000000; + auVar19._0_8_ = 0x3f0000003f000000; + auVar19._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar19._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(auVar19,uVar38,&DAT_00531ec8); + } + auVar20._0_4_ = (int)auVar21._8_2_; + auVar20._4_4_ = (int)auVar21._10_2_; + auVar20._8_4_ = (int)auVar21._12_2_; + auVar20._12_4_ = (int)auVar21._14_2_; + auVar29 = NEON_scvtf(auVar20,4); + cVar32 = (char)((short)((ulong)uVar18 >> 0x10) >> 0xf); + cVar33 = (char)((short)((ulong)uVar18 >> 0x20) >> 0xf); + cVar34 = (char)((long)uVar18 >> 0x3f); + auVar21[3] = (undefined1)((short)uVar18 >> 0xf); + auVar21._0_3_ = (int3)(short)uVar18; + auVar21[4] = (char)((ulong)uVar18 >> 0x10); + auVar21[5] = (char)((ulong)uVar18 >> 0x18); + auVar21[6] = cVar32; + auVar21[7] = cVar32; + auVar21[8] = (char)((ulong)uVar18 >> 0x20); + auVar21[9] = (char)((ulong)uVar18 >> 0x28); + auVar21[10] = cVar33; + auVar21[0xb] = cVar33; + auVar21[0xc] = (char)((ulong)uVar18 >> 0x30); + auVar21[0xd] = (char)((ulong)uVar18 >> 0x38); + auVar21[0xe] = cVar34; + auVar21[0xf] = cVar34; + auVar21 = NEON_scvtf(auVar21,4); + fVar27 = (float)CONCAT13(auVar30[3] & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar30[2] & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar30[1] & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + auVar30[0] & DAT_00531eb0 | (byte)_DAT_00531ea0 + ))); + auVar40._0_8_ = + CONCAT17(auVar30[7] & bRam0000000000531eb7 | (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16(auVar30[6] & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15(auVar30[5] & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(auVar30[4] & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar27)))); + auVar40[8] = auVar30[8] & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar40[9] = auVar30[9] & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar40[10] = auVar30[10] & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar40[0xb] = auVar30[0xb] & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar41[0xc] = auVar30[0xc] & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar41._0_12_ = auVar40; + auVar41[0xd] = auVar30[0xd] & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar41[0xe] = auVar30[0xe] & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar41[0xf] = auVar30[0xf] & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar22._0_4_ = auVar29._0_4_ * fVar35 + auVar21._0_4_ * fVar36 + fVar37; + auVar22._4_4_ = auVar29._4_4_ * fVar35 + auVar21._4_4_ * fVar36 + fVar37; + auVar22._8_4_ = auVar29._8_4_ * fVar35 + auVar21._8_4_ * fVar36 + fVar37; + auVar22._12_4_ = auVar29._12_4_ * fVar35 + auVar21._12_4_ * fVar36 + fVar37; + auVar42._0_8_ = + CONCAT44((int)(auVar30._4_4_ + (float)((ulong)auVar40._0_8_ >> 0x20)), + (int)(auVar30._0_4_ + fVar27)); + auVar42._8_4_ = (int)(auVar30._8_4_ + auVar40._8_4_); + auVar42._12_4_ = (int)(auVar30._12_4_ + auVar41._12_4_); + uVar38 = NEON_sqxtn(auVar42._0_8_,auVar42,4); + if ((DAT_00531ed0 & 1) == 0) { + uVar18 = auVar22._8_8_; + iVar3 = __cxa_guard_acquire(&DAT_00531ed0); + auVar22._8_8_ = uVar18; + if (iVar3 != 0) { + auVar26._8_4_ = 0x80000000; + auVar26._0_8_ = 0x8000000080000000; + auVar26._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar26._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + local_60 = auVar22._0_4_; + fStack_5c = auVar22._4_4_; + if (((DAT_00531ec8 & 1) == 0) && (iVar3 = __cxa_guard_acquire(&DAT_00531ec8), iVar3 != 0)) + { + auVar23._8_4_ = 0x3f000000; + auVar23._0_8_ = 0x3f0000003f000000; + auVar23._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar23._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + uVar1 = (int)uVar13 + 8; + uVar13 = (ulong)uVar1; + pauVar9 = pauVar9 + 1; + puVar6 = puVar6 + 2; + fVar27 = (float)CONCAT13(auVar22[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar22[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar22[1] & (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> 8), + auVar22[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0))); + fVar28 = (float)CONCAT13(auVar22[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar22[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar22[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar22[8] & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8))); + auVar24._0_8_ = + CONCAT44((int)(fStack_5c + + (float)(CONCAT17(auVar22[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16(auVar22[6] & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15(auVar22[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) + | (byte)((ulong)_DAT_00531ea0 >> + 0x28), + CONCAT14(auVar22[4] & + (byte)((ulong)_DAT_00531eb0 + >> 0x20) | + (byte)((ulong)_DAT_00531ea0 + >> 0x20),fVar27)))) + >> 0x20)),(int)(local_60 + fVar27)); + auVar24._8_4_ = (int)(auVar22._8_4_ + fVar28); + auVar24._12_4_ = + (int)(auVar22._12_4_ + + (float)(CONCAT17(auVar22[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT16(auVar22[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT15(auVar22[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> 0x28) + ,CONCAT14(auVar22[0xc] & + (byte)((ulong)_uRam0000000000531eb8 + >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 + >> 0x20),fVar28)))) >> 0x20)) + ; + uVar18 = NEON_sqxtn(auVar24._0_8_,auVar24,4); + puVar15[1] = uVar18; + *puVar15 = uVar38; + puVar15 = puVar15 + 2; + } while ((int)uVar1 < iVar2 + -7); + } + iVar3 = (int)uVar13; + if (iVar3 < iVar2 + -3) { + lVar10 = (long)iVar3 * 2; + uVar1 = (uint)((iVar2 + -4) - iVar3) >> 2; + psVar7 = (short *)(*param_1 + lVar10); + psVar12 = (short *)((long)param_3 + lVar10); + puVar11 = (undefined2 *)((long)param_5 + lVar10); + psVar39 = (short *)(*param_1 + (long)iVar3 * 2 + 8 + (ulong)uVar1 * 8); + do { + lVar10 = lrintf(fVar37 + fVar36 * (float)(int)*psVar12 + (float)(int)*psVar7 * fVar35); + uVar14 = 0x8000; + uVar16 = 0x7fff; + uVar17 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar17 = uVar16, (int)lVar10 < 1)) { + uVar17 = uVar14; + } + lVar10 = lrintf(fVar37 + fVar36 * (float)(int)psVar12[1] + (float)(int)psVar7[1] * fVar35) + ; + uVar5 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar5 = uVar16, (int)lVar10 < 1)) { + uVar5 = uVar14; + } + *puVar11 = uVar17; + puVar11[1] = uVar5; + lVar10 = lrintf(fVar37 + fVar36 * (float)(int)psVar12[2] + (float)(int)psVar7[2] * fVar35) + ; + uVar17 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar17 = uVar16, (int)lVar10 < 1)) { + uVar17 = uVar14; + } + lVar10 = lrintf(fVar37 + fVar36 * (float)(int)psVar12[3] + (float)(int)psVar7[3] * fVar35) + ; + uVar5 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar5 = uVar16, (int)lVar10 < 1)) { + uVar5 = uVar14; + } + psVar7 = psVar7 + 4; + puVar11[2] = uVar17; + psVar12 = psVar12 + 4; + puVar11[3] = uVar5; + puVar11 = puVar11 + 4; + } while (psVar7 != psVar39); + uVar13 = (ulong)(iVar3 + 4 + uVar1 * 4); + } + if ((int)uVar13 < iVar2) { + uVar8 = -(uVar13 >> 0x1f) & 0xfffffffe00000000 | uVar13 << 1; + lVar10 = 0; + do { + lVar4 = lrintf(fVar37 + fVar36 * (float)(int)*(short *)((long)param_3 + lVar10 + uVar8) + + (float)(int)*(short *)(*param_1 + lVar10 + uVar8) * fVar35); + uVar17 = (undefined2)lVar4; + if ((0xffff < (int)lVar4 + 0x8000U) && (uVar17 = 0x7fff, (int)lVar4 < 1)) { + uVar17 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar10 + uVar8) = uVar17; + lVar10 = lVar10 + 2; + } while (lVar10 != ((ulong)(uint)((iVar2 + -1) - (int)uVar13) + 1) * 2); + } + iVar44 = iVar44 + -1; + param_1 = (undefined1 (*) [16])(*param_1 + (param_2 & 0xfffffffffffffffe)); + param_3 = (undefined8 *)((long)param_3 + (param_4 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar44 != 0); + } + return; +} + + +================================================================== + +### FUNC 002451f8 (904 bytes) name=FUN_002451f8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002451f8(undefined8 param_1,undefined8 param_2,short *param_3,ulong param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + undefined1 auVar3 [16]; + char cVar4; + int iVar5; + long lVar6; + undefined2 uVar7; + ulong uVar8; + ulong uVar9; + short *psVar10; + long lVar11; + undefined8 *puVar12; + long lVar13; + float fVar14; + undefined8 uVar15; + undefined1 auVar17 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + short sVar23; + short sVar27; + short sVar28; + short sVar29; + short sVar30; + undefined1 auVar24 [12]; + short sVar31; + short sVar32; + short sVar33; + undefined1 auVar26 [16]; + float fVar34; + float fVar36; + float fVar37; + undefined1 auVar35 [16]; + float fVar38; + undefined8 uVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + float fVar44; + double dVar45; + int iVar46; + undefined1 auVar16 [12]; + undefined1 auVar18 [16]; + undefined1 auVar25 [16]; + + iVar2 = *param_7; + dVar45 = *param_8; + iVar46 = param_7[1]; + cVar4 = cv::checkHardwareSupport(3); + if (cVar4 == '\0') { + cVar4 = cv::checkHardwareSupport(100); + } + fVar44 = (float)dVar45; + if (iVar46 != 0) { + do { + uVar9 = 0; + if ((cVar4 != '\0') && (psVar10 = param_3, puVar12 = param_5, 0 < iVar2 + -7)) { + do { + sVar23 = *psVar10; + sVar27 = psVar10[1]; + sVar28 = psVar10[2]; + sVar29 = psVar10[3]; + sVar30 = psVar10[4]; + sVar31 = psVar10[5]; + sVar32 = psVar10[6]; + sVar33 = psVar10[7]; + auVar35._0_4_ = (int)sVar30; + auVar35._4_4_ = (int)sVar31; + auVar35._8_4_ = (int)sVar32; + auVar35._12_4_ = (int)sVar33; + auVar40 = NEON_scvtf(auVar35,4); + auVar26._0_4_ = (int)sVar23; + auVar26._4_4_ = (int)sVar27; + auVar26._8_4_ = (int)sVar28; + auVar26._12_4_ = (int)sVar29; + auVar21 = NEON_scvtf(auVar26,4); + auVar41 = NEON_frecpe(auVar40,4); + auVar35 = NEON_frecpe(auVar21,4); + auVar43 = NEON_frecps(auVar40,auVar41,4); + auVar26 = NEON_frecps(auVar21,auVar35,4); + auVar42._0_4_ = auVar41._0_4_ * auVar43._0_4_; + auVar42._4_4_ = auVar41._4_4_ * auVar43._4_4_; + auVar42._8_4_ = auVar41._8_4_ * auVar43._8_4_; + auVar42._12_4_ = auVar41._12_4_ * auVar43._12_4_; + auVar41._0_4_ = auVar35._0_4_ * auVar26._0_4_; + auVar41._4_4_ = auVar35._4_4_ * auVar26._4_4_; + auVar41._8_4_ = auVar35._8_4_ * auVar26._8_4_; + auVar41._12_4_ = auVar35._12_4_ * auVar26._12_4_; + auVar35 = NEON_frecps(auVar40,auVar42,4); + auVar26 = NEON_frecps(auVar21,auVar41,4); + fVar34 = fVar44 * auVar42._0_4_ * auVar35._0_4_; + fVar36 = fVar44 * auVar42._4_4_ * auVar35._4_4_; + fVar37 = fVar44 * auVar42._8_4_ * auVar35._8_4_; + fVar38 = fVar44 * auVar42._12_4_ * auVar35._12_4_; + auVar21._0_8_ = + CONCAT44(fVar44 * auVar41._4_4_ * auVar26._4_4_, + fVar44 * auVar41._0_4_ * auVar26._0_4_); + auVar21._8_4_ = fVar44 * auVar41._8_4_ * auVar26._8_4_; + auVar21._12_4_ = fVar44 * auVar41._12_4_ * auVar26._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar15 = auVar21._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531f08); + auVar21._8_8_ = uVar15; + if (iVar5 != 0) { + auVar40._8_4_ = 0x80000000; + auVar40._0_8_ = 0x8000000080000000; + auVar40._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar40._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f00), iVar5 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar43[1] = bRam0000000000531ee1; + auVar43[0] = DAT_00531ee0; + auVar43[2] = bRam0000000000531ee2; + auVar43[3] = bRam0000000000531ee3; + auVar43[4] = bRam0000000000531ee4; + auVar43[5] = bRam0000000000531ee5; + auVar43[6] = bRam0000000000531ee6; + auVar43[7] = bRam0000000000531ee7; + auVar43[8] = bRam0000000000531ee8; + auVar43[9] = bRam0000000000531ee9; + auVar43[10] = bRam0000000000531eea; + auVar43[0xb] = bRam0000000000531eeb; + auVar43[0xc] = bRam0000000000531eec; + auVar43[0xd] = bRam0000000000531eed; + auVar43[0xe] = bRam0000000000531eee; + auVar43[0xf] = bRam0000000000531eef; + fVar14 = (float)CONCAT13(auVar21[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar21[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar21[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar21[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar24._0_8_ = + CONCAT17(auVar21[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar21[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar21[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar21[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar14)))); + auVar24[8] = auVar21[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar24[9] = auVar21[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar24[10] = auVar21[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar24[0xb] = auVar21[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar25[0xc] = auVar21[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar25._0_12_ = auVar24; + auVar25[0xd] = auVar21[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar25[0xe] = auVar21[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar25[0xf] = auVar21[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar17._0_8_ = + CONCAT44((int)(auVar21._4_4_ + (float)((ulong)auVar24._0_8_ >> 0x20)), + (int)(auVar21._0_4_ + fVar14)); + auVar17._8_4_ = (int)(auVar21._8_4_ + auVar24._8_4_); + auVar17._12_4_ = (int)(auVar21._12_4_ + auVar25._12_4_); + if (((DAT_00531f08 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f08), iVar5 != 0)) + { + auVar22._8_4_ = 0x80000000; + auVar22._0_8_ = 0x8000000080000000; + auVar22._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar22._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar15 = auVar43._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531f00); + uVar15 = auVar43._0_8_; + if (iVar5 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar15 = auVar43._0_8_; + } + } + uVar1 = (int)uVar9 + 8; + uVar9 = (ulong)uVar1; + auVar3._8_8_ = auVar17._8_8_; + auVar3._0_8_ = auVar17._0_8_; + uVar39 = NEON_sqxtn(uVar15,auVar3,4); + sVar23 = -(ushort)(sVar23 == 0); + sVar27 = -(ushort)(sVar27 == 0); + sVar28 = -(ushort)(sVar28 == 0); + sVar29 = -(ushort)(sVar29 == 0); + sVar30 = -(ushort)(sVar30 == 0); + sVar31 = -(ushort)(sVar31 == 0); + sVar32 = -(ushort)(sVar32 == 0); + sVar33 = -(ushort)(sVar33 == 0); + fVar14 = (float)CONCAT13((byte)((uint)fVar34 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar34 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar34 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar34,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar16._0_8_ = + CONCAT17((byte)((uint)fVar36 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar36 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar36 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar36,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar14)))); + auVar16[8] = SUB41(fVar37,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar16[9] = (byte)((uint)fVar37 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar16[10] = (byte)((uint)fVar37 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar16[0xb] = (byte)((uint)fVar37 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar18[0xc] = SUB41(fVar38,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar18._0_12_ = auVar16; + auVar18[0xd] = (byte)((uint)fVar38 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar18[0xe] = (byte)((uint)fVar38 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar18[0xf] = (byte)((uint)fVar38 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar19._0_8_ = + CONCAT44((int)(fVar36 + (float)((ulong)auVar16._0_8_ >> 0x20)),(int)(fVar34 + fVar14) + ); + auVar19._8_4_ = (int)(fVar37 + auVar16._8_4_); + auVar19._12_4_ = (int)(fVar38 + auVar18._12_4_); + uVar15 = NEON_sqxtn(auVar19._0_8_,auVar19,4); + auVar20._0_8_ = + CONCAT17((byte)((ulong)uVar39 >> 0x38) & ~(byte)((ushort)sVar29 >> 8), + CONCAT16((byte)((ulong)uVar39 >> 0x30) & ~(byte)sVar29, + CONCAT15((byte)((ulong)uVar39 >> 0x28) & + ~(byte)((ushort)sVar28 >> 8), + CONCAT14((byte)((ulong)uVar39 >> 0x20) & ~(byte)sVar28, + CONCAT13((byte)((ulong)uVar39 >> 0x18) & + ~(byte)((ushort)sVar27 >> 8), + CONCAT12((byte)((ulong)uVar39 >> 0x10) & + ~(byte)sVar27, + CONCAT11((byte)((ulong)uVar39 + >> 8) & + ~(byte)((ushort)sVar23 + >> 8), + (byte)uVar39 & + ~(byte)sVar23))))))); + auVar20[8] = (byte)uVar15 & ~(byte)sVar30; + auVar20[9] = (byte)((ulong)uVar15 >> 8) & ~(byte)((ushort)sVar30 >> 8); + auVar20[10] = (byte)((ulong)uVar15 >> 0x10) & ~(byte)sVar31; + auVar20[0xb] = (byte)((ulong)uVar15 >> 0x18) & ~(byte)((ushort)sVar31 >> 8); + auVar20[0xc] = (byte)((ulong)uVar15 >> 0x20) & ~(byte)sVar32; + auVar20[0xd] = (byte)((ulong)uVar15 >> 0x28) & ~(byte)((ushort)sVar32 >> 8); + auVar20[0xe] = (byte)((ulong)uVar15 >> 0x30) & ~(byte)sVar33; + auVar20[0xf] = (byte)((ulong)uVar15 >> 0x38) & ~(byte)((ushort)sVar33 >> 8); + puVar12[1] = auVar20._8_8_; + *puVar12 = auVar20._0_8_; + psVar10 = psVar10 + 8; + puVar12 = puVar12 + 2; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar9 < iVar2) { + uVar8 = -(uVar9 >> 0x1f) & 0xfffffffe00000000 | uVar9 << 1; + lVar11 = 0; + lVar13 = ((ulong)(uint)((iVar2 + -1) - (int)uVar9) + 1) * 2; + do { + while( true ) { + uVar7 = 0; + iVar5 = (int)*(short *)((long)param_3 + lVar11 + uVar8); + if (iVar5 != 0) break; +LAB_002454c4: + *(undefined2 *)((long)param_5 + lVar11 + uVar8) = uVar7; + lVar11 = lVar11 + 2; + if (lVar11 == lVar13) goto LAB_00245514; + } + lVar6 = lrintf(fVar44 / (float)iVar5); + uVar7 = (undefined2)lVar6; + if ((int)lVar6 + 0x8000U < 0x10000) goto LAB_002454c4; + uVar7 = 0x7fff; + if ((int)lVar6 < 1) { + uVar7 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar11 + uVar8) = uVar7; + lVar11 = lVar11 + 2; + } while (lVar11 != lVar13); + } +LAB_00245514: + iVar46 = iVar46 + -1; + param_3 = (short *)((long)param_3 + (param_4 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar46 != 0); + } + return; +} + + +================================================================== + +### FUNC 00245580 (920 bytes) name=FUN_00245580 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00245580(undefined8 param_1,undefined8 param_2,undefined8 *param_3,long param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + long lVar1; + int iVar2; + undefined1 auVar3 [16]; + char cVar4; + int iVar5; + int iVar6; + long lVar7; + undefined1 uVar8; + long lVar9; + undefined8 *puVar10; + long lVar11; + undefined8 *puVar12; + short sVar13; + undefined8 uVar14; + short sVar19; + short sVar20; + short sVar22; + short sVar23; + short sVar24; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + short sVar21; + short sVar25; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + float fVar26; + float fVar27; + float fVar35; + undefined1 auVar29 [12]; + float fVar36; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + float fVar37; + undefined1 auVar38 [16]; + undefined8 uVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + float fVar43; + double dVar44; + int iVar45; + undefined1 auVar28 [12]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + + iVar2 = *param_7; + dVar44 = *param_8; + iVar45 = param_7[1]; + cVar4 = cv::checkHardwareSupport(3); + if (cVar4 == '\0') { + cVar4 = cv::checkHardwareSupport(100); + } + fVar43 = (float)dVar44; + if (iVar45 != 0) { + do { + iVar6 = 0; + if ((cVar4 != '\0') && (puVar10 = param_3, puVar12 = param_5, 0 < iVar2 + -7)) { + do { + uVar14 = *puVar10; + sVar19 = (short)(char)((ulong)uVar14 >> 8); + sVar20 = (short)(char)((ulong)uVar14 >> 0x10); + sVar21 = (short)(char)((ulong)uVar14 >> 0x18); + sVar22 = (short)(char)((ulong)uVar14 >> 0x20); + sVar23 = (short)(char)((ulong)uVar14 >> 0x28); + sVar24 = (short)(char)((ulong)uVar14 >> 0x30); + sVar25 = (short)(char)((ulong)uVar14 >> 0x38); + auVar33._0_4_ = (int)(short)(char)uVar14; + auVar33._4_4_ = (int)sVar19; + auVar33._8_4_ = (int)sVar20; + auVar33._12_4_ = (int)sVar21; + auVar17 = NEON_scvtf(auVar33,4); + auVar40._0_4_ = (int)sVar22; + auVar40._4_4_ = (int)sVar23; + auVar40._8_4_ = (int)sVar24; + auVar40._12_4_ = (int)sVar25; + auVar40 = NEON_scvtf(auVar40,4); + auVar38 = NEON_frecpe(auVar17,4); + auVar41 = NEON_frecpe(auVar40,4); + auVar33 = NEON_frecps(auVar17,auVar38,4); + auVar42 = NEON_frecps(auVar40,auVar41,4); + auVar34._0_4_ = auVar38._0_4_ * auVar33._0_4_; + auVar34._4_4_ = auVar38._4_4_ * auVar33._4_4_; + auVar34._8_4_ = auVar38._8_4_ * auVar33._8_4_; + auVar34._12_4_ = auVar38._12_4_ * auVar33._12_4_; + auVar38._0_4_ = auVar41._0_4_ * auVar42._0_4_; + auVar38._4_4_ = auVar41._4_4_ * auVar42._4_4_; + auVar38._8_4_ = auVar41._8_4_ * auVar42._8_4_; + auVar38._12_4_ = auVar41._12_4_ * auVar42._12_4_; + auVar33 = NEON_frecps(auVar17,auVar34,4); + auVar40 = NEON_frecps(auVar40,auVar38,4); + auVar17._0_8_ = + CONCAT44(fVar43 * auVar34._4_4_ * auVar33._4_4_, + fVar43 * auVar34._0_4_ * auVar33._0_4_); + auVar17._8_4_ = fVar43 * auVar34._8_4_ * auVar33._8_4_; + auVar17._12_4_ = fVar43 * auVar34._12_4_ * auVar33._12_4_; + fVar27 = fVar43 * auVar38._0_4_ * auVar40._0_4_; + fVar35 = fVar43 * auVar38._4_4_ * auVar40._4_4_; + fVar36 = fVar43 * auVar38._8_4_ * auVar40._8_4_; + fVar37 = fVar43 * auVar38._12_4_ * auVar40._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar39 = auVar17._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531f08); + auVar17._8_8_ = uVar39; + if (iVar5 != 0) { + auVar41._8_4_ = 0x80000000; + auVar41._0_8_ = 0x8000000080000000; + auVar41._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar41._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f00), iVar5 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar42[1] = bRam0000000000531ee1; + auVar42[0] = DAT_00531ee0; + auVar42[2] = bRam0000000000531ee2; + auVar42[3] = bRam0000000000531ee3; + auVar42[4] = bRam0000000000531ee4; + auVar42[5] = bRam0000000000531ee5; + auVar42[6] = bRam0000000000531ee6; + auVar42[7] = bRam0000000000531ee7; + auVar42[8] = bRam0000000000531ee8; + auVar42[9] = bRam0000000000531ee9; + auVar42[10] = bRam0000000000531eea; + auVar42[0xb] = bRam0000000000531eeb; + auVar42[0xc] = bRam0000000000531eec; + auVar42[0xd] = bRam0000000000531eed; + auVar42[0xe] = bRam0000000000531eee; + auVar42[0xf] = bRam0000000000531eef; + fVar26 = (float)CONCAT13(auVar17[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar17[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar17[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar17[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar28._0_8_ = + CONCAT17(auVar17[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar17[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar17[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar17[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar26)))); + auVar28[8] = auVar17[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar28[9] = auVar17[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar28[10] = auVar17[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar28[0xb] = auVar17[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar30[0xc] = auVar17[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar30._0_12_ = auVar28; + auVar30[0xd] = auVar17[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar30[0xe] = auVar17[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar30[0xf] = auVar17[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar15._0_8_ = + CONCAT44((int)(auVar17._4_4_ + (float)((ulong)auVar28._0_8_ >> 0x20)), + (int)(auVar17._0_4_ + fVar26)); + auVar15._8_4_ = (int)(auVar17._8_4_ + auVar28._8_4_); + auVar15._12_4_ = (int)(auVar17._12_4_ + auVar30._12_4_); + if (((DAT_00531f08 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f08), iVar5 != 0)) + { + auVar18._8_4_ = 0x80000000; + auVar18._0_8_ = 0x8000000080000000; + auVar18._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar18._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar39 = auVar42._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531f00); + uVar39 = auVar42._0_8_; + if (iVar5 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar39 = auVar42._0_8_; + } + } + iVar6 = iVar6 + 8; + auVar3._8_8_ = auVar15._8_8_; + auVar3._0_8_ = auVar15._0_8_; + uVar39 = NEON_sqxtn(uVar39,auVar3,4); + sVar13 = -(ushort)((char)uVar14 == 0); + sVar19 = -(ushort)(sVar19 == 0); + sVar20 = -(ushort)(sVar20 == 0); + sVar21 = -(ushort)(sVar21 == 0); + sVar22 = -(ushort)(sVar22 == 0); + sVar23 = -(ushort)(sVar23 == 0); + sVar24 = -(ushort)(sVar24 == 0); + sVar25 = -(ushort)(sVar25 == 0); + fVar26 = (float)CONCAT13((byte)((uint)fVar27 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar27 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar27 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar27,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar29._0_8_ = + CONCAT17((byte)((uint)fVar35 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar35 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar35 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar35,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar26)))); + auVar29[8] = SUB41(fVar36,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar29[9] = (byte)((uint)fVar36 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar29[10] = (byte)((uint)fVar36 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar29[0xb] = (byte)((uint)fVar36 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar31[0xc] = SUB41(fVar37,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar31._0_12_ = auVar29; + auVar31[0xd] = (byte)((uint)fVar37 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar31[0xe] = (byte)((uint)fVar37 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar31[0xf] = (byte)((uint)fVar37 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar32._0_8_ = + CONCAT44((int)(fVar35 + (float)((ulong)auVar29._0_8_ >> 0x20)),(int)(fVar27 + fVar26) + ); + auVar32._8_4_ = (int)(fVar36 + auVar29._8_4_); + auVar32._12_4_ = (int)(fVar37 + auVar31._12_4_); + uVar14 = NEON_sqxtn(auVar32._0_8_,auVar32,4); + auVar16._0_8_ = + CONCAT17((byte)((ulong)uVar39 >> 0x38) & ~(byte)((ushort)sVar21 >> 8), + CONCAT16((byte)((ulong)uVar39 >> 0x30) & ~(byte)sVar21, + CONCAT15((byte)((ulong)uVar39 >> 0x28) & + ~(byte)((ushort)sVar20 >> 8), + CONCAT14((byte)((ulong)uVar39 >> 0x20) & ~(byte)sVar20, + CONCAT13((byte)((ulong)uVar39 >> 0x18) & + ~(byte)((ushort)sVar19 >> 8), + CONCAT12((byte)((ulong)uVar39 >> 0x10) & + ~(byte)sVar19, + CONCAT11((byte)((ulong)uVar39 + >> 8) & + ~(byte)((ushort)sVar13 + >> 8), + (byte)uVar39 & + ~(byte)sVar13))))))); + auVar16[8] = (byte)uVar14 & ~(byte)sVar22; + auVar16[9] = (byte)((ulong)uVar14 >> 8) & ~(byte)((ushort)sVar22 >> 8); + auVar16[10] = (byte)((ulong)uVar14 >> 0x10) & ~(byte)sVar23; + auVar16[0xb] = (byte)((ulong)uVar14 >> 0x18) & ~(byte)((ushort)sVar23 >> 8); + auVar16[0xc] = (byte)((ulong)uVar14 >> 0x20) & ~(byte)sVar24; + auVar16[0xd] = (byte)((ulong)uVar14 >> 0x28) & ~(byte)((ushort)sVar24 >> 8); + auVar16[0xe] = (byte)((ulong)uVar14 >> 0x30) & ~(byte)sVar25; + auVar16[0xf] = (byte)((ulong)uVar14 >> 0x38) & ~(byte)((ushort)sVar25 >> 8); + uVar14 = NEON_sqxtn(auVar16._0_8_,auVar16,2); + *puVar12 = uVar14; + puVar10 = puVar10 + 1; + puVar12 = puVar12 + 1; + } while (iVar6 < iVar2 + -7); + } + if (iVar6 < iVar2) { + lVar11 = 0; + lVar9 = (long)iVar6; + lVar1 = (ulong)(uint)((iVar2 + -1) - iVar6) + 1; + do { + while( true ) { + uVar8 = 0; + iVar6 = (int)*(char *)((long)param_3 + lVar11 + lVar9); + if (iVar6 != 0) break; +LAB_0024584c: + *(undefined1 *)((long)param_5 + lVar11 + lVar9) = uVar8; + lVar11 = lVar11 + 1; + if (lVar11 == lVar1) goto LAB_002458ac; + } + lVar7 = lrintf(fVar43 / (float)iVar6); + uVar8 = (undefined1)lVar7; + if ((int)lVar7 + 0x80U < 0x100) goto LAB_0024584c; + uVar8 = 0x7f; + if ((int)lVar7 < 1) { + uVar8 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar11 + lVar9) = uVar8; + lVar11 = lVar11 + 1; + } while (lVar11 != lVar1); + } +LAB_002458ac: + iVar45 = iVar45 + -1; + param_3 = (undefined8 *)((long)param_3 + param_4); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar45 != 0); + } + return; +} + + +================================================================== + +### FUNC 00245918 (892 bytes) name=FUN_00245918 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00245918(undefined8 param_1,undefined8 param_2,ushort *param_3,ulong param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + ushort uVar2; + ushort uVar3; + ushort uVar4; + ushort uVar5; + ushort uVar6; + ushort uVar7; + ushort uVar8; + ushort uVar9; + undefined1 auVar10 [16]; + char cVar11; + int iVar12; + uint uVar13; + long lVar14; + ulong uVar15; + long lVar16; + ushort *puVar17; + long lVar18; + ulong uVar19; + undefined8 *puVar20; + float fVar21; + undefined8 uVar22; + undefined1 auVar24 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + short sVar30; + short sVar34; + short sVar35; + short sVar36; + short sVar37; + undefined1 auVar31 [12]; + short sVar38; + short sVar39; + short sVar40; + undefined1 auVar33 [16]; + float fVar41; + float fVar43; + float fVar44; + undefined1 auVar42 [16]; + float fVar45; + undefined8 uVar46; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + float fVar51; + double dVar52; + int iVar53; + undefined1 auVar23 [12]; + undefined1 auVar25 [16]; + undefined1 auVar32 [16]; + + iVar1 = *param_7; + dVar52 = *param_8; + iVar53 = param_7[1]; + cVar11 = cv::checkHardwareSupport(3); + if (cVar11 == '\0') { + cVar11 = cv::checkHardwareSupport(100); + } + fVar51 = (float)dVar52; + if (iVar53 != 0) { + do { + uVar15 = 0; + if ((cVar11 != '\0') && (puVar17 = param_3, puVar20 = param_5, 0 < iVar1 + -7)) { + do { + uVar2 = *puVar17; + uVar3 = puVar17[1]; + uVar4 = puVar17[2]; + uVar5 = puVar17[3]; + uVar6 = puVar17[4]; + uVar7 = puVar17[5]; + uVar8 = puVar17[6]; + uVar9 = puVar17[7]; + auVar42._2_2_ = 0; + auVar42._0_2_ = uVar6; + auVar42._4_2_ = uVar7; + auVar42._6_2_ = 0; + auVar42._8_2_ = uVar8; + auVar42._10_2_ = 0; + auVar42._12_2_ = uVar9; + auVar42._14_2_ = 0; + auVar47 = NEON_scvtf(auVar42,4); + auVar33._2_2_ = 0; + auVar33._0_2_ = uVar2; + auVar33._4_2_ = uVar3; + auVar33._6_2_ = 0; + auVar33._8_2_ = uVar4; + auVar33._10_2_ = 0; + auVar33._12_2_ = uVar5; + auVar33._14_2_ = 0; + auVar28 = NEON_scvtf(auVar33,4); + auVar48 = NEON_frecpe(auVar47,4); + auVar42 = NEON_frecpe(auVar28,4); + auVar50 = NEON_frecps(auVar47,auVar48,4); + auVar33 = NEON_frecps(auVar28,auVar42,4); + auVar49._0_4_ = auVar48._0_4_ * auVar50._0_4_; + auVar49._4_4_ = auVar48._4_4_ * auVar50._4_4_; + auVar49._8_4_ = auVar48._8_4_ * auVar50._8_4_; + auVar49._12_4_ = auVar48._12_4_ * auVar50._12_4_; + auVar48._0_4_ = auVar42._0_4_ * auVar33._0_4_; + auVar48._4_4_ = auVar42._4_4_ * auVar33._4_4_; + auVar48._8_4_ = auVar42._8_4_ * auVar33._8_4_; + auVar48._12_4_ = auVar42._12_4_ * auVar33._12_4_; + auVar42 = NEON_frecps(auVar47,auVar49,4); + auVar33 = NEON_frecps(auVar28,auVar48,4); + fVar41 = fVar51 * auVar49._0_4_ * auVar42._0_4_; + fVar43 = fVar51 * auVar49._4_4_ * auVar42._4_4_; + fVar44 = fVar51 * auVar49._8_4_ * auVar42._8_4_; + fVar45 = fVar51 * auVar49._12_4_ * auVar42._12_4_; + auVar28._0_8_ = + CONCAT44(fVar51 * auVar48._4_4_ * auVar33._4_4_, + fVar51 * auVar48._0_4_ * auVar33._0_4_); + auVar28._8_4_ = fVar51 * auVar48._8_4_ * auVar33._8_4_; + auVar28._12_4_ = fVar51 * auVar48._12_4_ * auVar33._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar22 = auVar28._8_8_; + iVar12 = __cxa_guard_acquire(&DAT_00531f08); + auVar28._8_8_ = uVar22; + if (iVar12 != 0) { + auVar47._8_4_ = 0x80000000; + auVar47._0_8_ = 0x8000000080000000; + auVar47._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar47._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531f00), iVar12 != 0)) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar50[1] = bRam0000000000531ee1; + auVar50[0] = DAT_00531ee0; + auVar50[2] = bRam0000000000531ee2; + auVar50[3] = bRam0000000000531ee3; + auVar50[4] = bRam0000000000531ee4; + auVar50[5] = bRam0000000000531ee5; + auVar50[6] = bRam0000000000531ee6; + auVar50[7] = bRam0000000000531ee7; + auVar50[8] = bRam0000000000531ee8; + auVar50[9] = bRam0000000000531ee9; + auVar50[10] = bRam0000000000531eea; + auVar50[0xb] = bRam0000000000531eeb; + auVar50[0xc] = bRam0000000000531eec; + auVar50[0xd] = bRam0000000000531eed; + auVar50[0xe] = bRam0000000000531eee; + auVar50[0xf] = bRam0000000000531eef; + fVar21 = (float)CONCAT13(auVar28[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar28[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar28[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar28[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar31._0_8_ = + CONCAT17(auVar28[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar28[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar28[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar28[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar21)))); + auVar31[8] = auVar28[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar31[9] = auVar28[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar31[10] = auVar28[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar31[0xb] = auVar28[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar32[0xc] = auVar28[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar32._0_12_ = auVar31; + auVar32[0xd] = auVar28[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar32[0xe] = auVar28[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar32[0xf] = auVar28[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar24._0_8_ = + CONCAT44((int)(auVar28._4_4_ + (float)((ulong)auVar31._0_8_ >> 0x20)), + (int)(auVar28._0_4_ + fVar21)); + auVar24._8_4_ = (int)(auVar28._8_4_ + auVar31._8_4_); + auVar24._12_4_ = (int)(auVar28._12_4_ + auVar32._12_4_); + if (((DAT_00531f08 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531f08), iVar12 != 0)) { + auVar29._8_4_ = 0x80000000; + auVar29._0_8_ = 0x8000000080000000; + auVar29._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar29._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar22 = auVar50._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar12 = __cxa_guard_acquire(&DAT_00531f00); + uVar22 = auVar50._0_8_; + if (iVar12 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar22 = auVar50._0_8_; + } + } + uVar13 = (int)uVar15 + 8; + uVar15 = (ulong)uVar13; + auVar10._8_8_ = auVar24._8_8_; + auVar10._0_8_ = auVar24._0_8_; + uVar46 = NEON_sqxtun(uVar22,auVar10,4); + sVar30 = -(ushort)(uVar2 == 0); + sVar34 = -(ushort)(uVar3 == 0); + sVar35 = -(ushort)(uVar4 == 0); + sVar36 = -(ushort)(uVar5 == 0); + sVar37 = -(ushort)(uVar6 == 0); + sVar38 = -(ushort)(uVar7 == 0); + sVar39 = -(ushort)(uVar8 == 0); + sVar40 = -(ushort)(uVar9 == 0); + fVar21 = (float)CONCAT13((byte)((uint)fVar41 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar41 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar41 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar41,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar23._0_8_ = + CONCAT17((byte)((uint)fVar43 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar43 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar43 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar43,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar21)))); + auVar23[8] = SUB41(fVar44,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar23[9] = (byte)((uint)fVar44 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar23[10] = (byte)((uint)fVar44 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar23[0xb] = (byte)((uint)fVar44 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar25[0xc] = SUB41(fVar45,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar25._0_12_ = auVar23; + auVar25[0xd] = (byte)((uint)fVar45 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar25[0xe] = (byte)((uint)fVar45 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar25[0xf] = (byte)((uint)fVar45 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar26._0_8_ = + CONCAT44((int)(fVar43 + (float)((ulong)auVar23._0_8_ >> 0x20)),(int)(fVar41 + fVar21) + ); + auVar26._8_4_ = (int)(fVar44 + auVar23._8_4_); + auVar26._12_4_ = (int)(fVar45 + auVar25._12_4_); + uVar22 = NEON_sqxtun(auVar26._0_8_,auVar26,4); + auVar27._0_8_ = + CONCAT17((byte)((ulong)uVar46 >> 0x38) & ~(byte)((ushort)sVar36 >> 8), + CONCAT16((byte)((ulong)uVar46 >> 0x30) & ~(byte)sVar36, + CONCAT15((byte)((ulong)uVar46 >> 0x28) & + ~(byte)((ushort)sVar35 >> 8), + CONCAT14((byte)((ulong)uVar46 >> 0x20) & ~(byte)sVar35, + CONCAT13((byte)((ulong)uVar46 >> 0x18) & + ~(byte)((ushort)sVar34 >> 8), + CONCAT12((byte)((ulong)uVar46 >> 0x10) & + ~(byte)sVar34, + CONCAT11((byte)((ulong)uVar46 + >> 8) & + ~(byte)((ushort)sVar30 + >> 8), + (byte)uVar46 & + ~(byte)sVar30))))))); + auVar27[8] = (byte)uVar22 & ~(byte)sVar37; + auVar27[9] = (byte)((ulong)uVar22 >> 8) & ~(byte)((ushort)sVar37 >> 8); + auVar27[10] = (byte)((ulong)uVar22 >> 0x10) & ~(byte)sVar38; + auVar27[0xb] = (byte)((ulong)uVar22 >> 0x18) & ~(byte)((ushort)sVar38 >> 8); + auVar27[0xc] = (byte)((ulong)uVar22 >> 0x20) & ~(byte)sVar39; + auVar27[0xd] = (byte)((ulong)uVar22 >> 0x28) & ~(byte)((ushort)sVar39 >> 8); + auVar27[0xe] = (byte)((ulong)uVar22 >> 0x30) & ~(byte)sVar40; + auVar27[0xf] = (byte)((ulong)uVar22 >> 0x38) & ~(byte)((ushort)sVar40 >> 8); + puVar20[1] = auVar27._8_8_; + *puVar20 = auVar27._0_8_; + puVar17 = puVar17 + 8; + puVar20 = puVar20 + 2; + } while ((int)uVar13 < iVar1 + -7); + } + if ((int)uVar15 < iVar1) { + uVar19 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + lVar18 = 0; + lVar16 = ((ulong)(uint)((iVar1 + -1) - (int)uVar15) + 1) * 2; + do { + while (uVar2 = *(ushort *)((long)param_3 + lVar18 + uVar19), uVar2 == 0) { + *(undefined2 *)((long)param_5 + lVar18 + uVar19) = 0; + lVar18 = lVar18 + 2; + if (lVar18 == lVar16) goto LAB_00245c28; + } + lVar14 = lrintf(fVar51 / (float)uVar2); + uVar13 = (uint)lVar14; + if (0xffff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + *(short *)((long)param_5 + lVar18 + uVar19) = (short)uVar13; + lVar18 = lVar18 + 2; + } while (lVar18 != lVar16); + } +LAB_00245c28: + iVar53 = iVar53 + -1; + param_3 = (ushort *)((long)param_3 + (param_4 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar53 != 0); + } + return; +} + + +================================================================== + +### FUNC 00245c94 (916 bytes) name=FUN_00245c94 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00245c94(double param_1,undefined8 *param_2,long param_3,undefined8 *param_4,long param_5, + int *param_6) + +{ + undefined1 auVar1 [16]; + char cVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + int iVar7; + undefined8 *puVar8; + long lVar9; + long lVar10; + undefined8 *puVar11; + char cVar12; + char cVar13; + char cVar14; + byte bVar15; + char cVar16; + char cVar17; + char cVar18; + short sVar19; + short sVar25; + short sVar27; + short sVar28; + short sVar29; + undefined1 auVar21 [16]; + short sVar26; + short sVar30; + undefined1 auVar22 [16]; + undefined8 uVar20; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar31; + float fVar32; + float fVar40; + undefined1 auVar34 [12]; + float fVar41; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + float fVar42; + undefined1 auVar43 [16]; + undefined8 uVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + float fVar48; + undefined1 auVar33 [12]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + + cVar2 = cv::checkHardwareSupport(3); + if (cVar2 == '\0') { + cVar2 = cv::checkHardwareSupport(100); + } + iVar3 = param_6[1]; + fVar48 = (float)param_1; + param_6[1] = iVar3 + -1; + if (iVar3 != 0) { + iVar3 = *param_6; + do { + iVar7 = 0; + if ((cVar2 != '\0') && (puVar8 = param_2, puVar11 = param_4, 0 < iVar3 + -7)) { + do { + uVar20 = *puVar8; + cVar12 = (char)((ulong)uVar20 >> 8); + cVar13 = (char)((ulong)uVar20 >> 0x10); + cVar14 = (char)((ulong)uVar20 >> 0x18); + bVar15 = (byte)((ulong)uVar20 >> 0x20); + cVar16 = (char)((ulong)uVar20 >> 0x28); + cVar17 = (char)((ulong)uVar20 >> 0x30); + cVar18 = (char)((ulong)uVar20 >> 0x38); + auVar38._6_2_ = 0; + auVar38._0_6_ = + (uint6)CONCAT14(cVar12,(uint)CONCAT12(cVar12,(ushort)(byte)uVar20)) & 0xffff0000ffff; + auVar38[8] = cVar13; + auVar38._9_3_ = 0; + auVar38[0xc] = cVar14; + auVar38._13_3_ = 0; + auVar23 = NEON_scvtf(auVar38,4); + auVar45._1_3_ = 0; + auVar45[0] = bVar15; + auVar45[4] = cVar16; + auVar45._5_3_ = 0; + auVar45[8] = cVar17; + auVar45._9_3_ = 0; + auVar45[0xc] = cVar18; + auVar45._13_3_ = 0; + auVar45 = NEON_scvtf(auVar45,4); + auVar43 = NEON_frecpe(auVar23,4); + auVar46 = NEON_frecpe(auVar45,4); + auVar38 = NEON_frecps(auVar23,auVar43,4); + auVar47 = NEON_frecps(auVar45,auVar46,4); + auVar39._0_4_ = auVar43._0_4_ * auVar38._0_4_; + auVar39._4_4_ = auVar43._4_4_ * auVar38._4_4_; + auVar39._8_4_ = auVar43._8_4_ * auVar38._8_4_; + auVar39._12_4_ = auVar43._12_4_ * auVar38._12_4_; + auVar43._0_4_ = auVar46._0_4_ * auVar47._0_4_; + auVar43._4_4_ = auVar46._4_4_ * auVar47._4_4_; + auVar43._8_4_ = auVar46._8_4_ * auVar47._8_4_; + auVar43._12_4_ = auVar46._12_4_ * auVar47._12_4_; + auVar38 = NEON_frecps(auVar23,auVar39,4); + auVar45 = NEON_frecps(auVar45,auVar43,4); + auVar23._0_8_ = + CONCAT44(fVar48 * auVar39._4_4_ * auVar38._4_4_, + fVar48 * auVar39._0_4_ * auVar38._0_4_); + auVar23._8_4_ = fVar48 * auVar39._8_4_ * auVar38._8_4_; + auVar23._12_4_ = fVar48 * auVar39._12_4_ * auVar38._12_4_; + fVar32 = fVar48 * auVar43._0_4_ * auVar45._0_4_; + fVar40 = fVar48 * auVar43._4_4_ * auVar45._4_4_; + fVar41 = fVar48 * auVar43._8_4_ * auVar45._8_4_; + fVar42 = fVar48 * auVar43._12_4_ * auVar45._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar44 = auVar23._8_8_; + iVar4 = __cxa_guard_acquire(&DAT_00531f08); + auVar23._8_8_ = uVar44; + if (iVar4 != 0) { + auVar46._8_4_ = 0x80000000; + auVar46._0_8_ = 0x8000000080000000; + auVar46._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar46._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531f00), iVar4 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar47[1] = bRam0000000000531ee1; + auVar47[0] = DAT_00531ee0; + auVar47[2] = bRam0000000000531ee2; + auVar47[3] = bRam0000000000531ee3; + auVar47[4] = bRam0000000000531ee4; + auVar47[5] = bRam0000000000531ee5; + auVar47[6] = bRam0000000000531ee6; + auVar47[7] = bRam0000000000531ee7; + auVar47[8] = bRam0000000000531ee8; + auVar47[9] = bRam0000000000531ee9; + auVar47[10] = bRam0000000000531eea; + auVar47[0xb] = bRam0000000000531eeb; + auVar47[0xc] = bRam0000000000531eec; + auVar47[0xd] = bRam0000000000531eed; + auVar47[0xe] = bRam0000000000531eee; + auVar47[0xf] = bRam0000000000531eef; + fVar31 = (float)CONCAT13(auVar23[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar23[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar23[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar23[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar33._0_8_ = + CONCAT17(auVar23[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar23[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar23[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar23[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar31)))); + auVar33[8] = auVar23[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar33[9] = auVar23[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar33[10] = auVar23[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar33[0xb] = auVar23[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar35[0xc] = auVar23[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar35._0_12_ = auVar33; + auVar35[0xd] = auVar23[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar35[0xe] = auVar23[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar35[0xf] = auVar23[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar21._0_8_ = + CONCAT44((int)(auVar23._4_4_ + (float)((ulong)auVar33._0_8_ >> 0x20)), + (int)(auVar23._0_4_ + fVar31)); + auVar21._8_4_ = (int)(auVar23._8_4_ + auVar33._8_4_); + auVar21._12_4_ = (int)(auVar23._12_4_ + auVar35._12_4_); + if (((DAT_00531f08 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531f08), iVar4 != 0)) + { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar24._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar44 = auVar47._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531f00); + uVar44 = auVar47._0_8_; + if (iVar4 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar44 = auVar47._0_8_; + } + } + iVar7 = iVar7 + 8; + auVar1._8_8_ = auVar21._8_8_; + auVar1._0_8_ = auVar21._0_8_; + uVar44 = NEON_sqxtun(uVar44,auVar1,4); + sVar19 = -(ushort)((byte)uVar20 == 0); + sVar25 = -(ushort)(cVar13 == '\0'); + sVar26 = -(ushort)(cVar14 == '\0'); + sVar27 = -(ushort)(bVar15 == 0); + sVar28 = -(ushort)(cVar16 == '\0'); + sVar29 = -(ushort)(cVar17 == '\0'); + sVar30 = -(ushort)(cVar18 == '\0'); + fVar31 = (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar32 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar32 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar32,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar34._0_8_ = + CONCAT17((byte)((uint)fVar40 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar40 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar40 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar40,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar31)))); + auVar34[8] = SUB41(fVar41,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar34[9] = (byte)((uint)fVar41 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar34[10] = (byte)((uint)fVar41 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar34[0xb] = (byte)((uint)fVar41 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar36[0xc] = SUB41(fVar42,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar36._0_12_ = auVar34; + auVar36[0xd] = (byte)((uint)fVar42 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar36[0xe] = (byte)((uint)fVar42 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar36[0xf] = (byte)((uint)fVar42 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar37._0_8_ = + CONCAT44((int)(fVar40 + (float)((ulong)auVar34._0_8_ >> 0x20)),(int)(fVar32 + fVar31) + ); + auVar37._8_4_ = (int)(fVar41 + auVar34._8_4_); + auVar37._12_4_ = (int)(fVar42 + auVar36._12_4_); + uVar20 = NEON_sqxtun(auVar37._0_8_,auVar37,4); + auVar22._0_8_ = + CONCAT17((byte)((ulong)uVar44 >> 0x38) & ~(byte)((ushort)sVar26 >> 8), + CONCAT16((byte)((ulong)uVar44 >> 0x30) & ~(byte)sVar26, + CONCAT15((byte)((ulong)uVar44 >> 0x28) & + ~(byte)((ushort)sVar25 >> 8), + CONCAT14((byte)((ulong)uVar44 >> 0x20) & ~(byte)sVar25, + CONCAT13((byte)((ulong)uVar44 >> 0x18) & + ~(byte)((ushort)-(ushort)(cVar12 == '\0' + ) >> 8), + CONCAT12((byte)((ulong)uVar44 >> 0x10) & + ~(byte)-(ushort)(cVar12 == '\0' + ), + CONCAT11((byte)((ulong)uVar44 + >> 8) & + ~(byte)((ushort)sVar19 + >> 8), + (byte)uVar44 & + ~(byte)sVar19))))))); + auVar22[8] = (byte)uVar20 & ~(byte)sVar27; + auVar22[9] = (byte)((ulong)uVar20 >> 8) & ~(byte)((ushort)sVar27 >> 8); + auVar22[10] = (byte)((ulong)uVar20 >> 0x10) & ~(byte)sVar28; + auVar22[0xb] = (byte)((ulong)uVar20 >> 0x18) & ~(byte)((ushort)sVar28 >> 8); + auVar22[0xc] = (byte)((ulong)uVar20 >> 0x20) & ~(byte)sVar29; + auVar22[0xd] = (byte)((ulong)uVar20 >> 0x28) & ~(byte)((ushort)sVar29 >> 8); + auVar22[0xe] = (byte)((ulong)uVar20 >> 0x30) & ~(byte)sVar30; + auVar22[0xf] = (byte)((ulong)uVar20 >> 0x38) & ~(byte)((ushort)sVar30 >> 8); + uVar20 = NEON_uqxtn(auVar22._0_8_,auVar22,2); + *puVar11 = uVar20; + puVar8 = puVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar7 < iVar3 + -7); + iVar3 = *param_6; + } + if (iVar7 < iVar3) { + lVar9 = 0; + lVar10 = (long)iVar7; + do { + while (bVar15 = *(byte *)((long)param_2 + lVar9 + lVar10), bVar15 == 0) { + iVar7 = iVar7 + 1; + *(undefined1 *)((long)param_4 + lVar9 + lVar10) = 0; + lVar9 = lVar9 + 1; + iVar3 = *param_6; + if (iVar3 <= iVar7) goto LAB_00245fb8; + } + lVar6 = lrintf(fVar48 / (float)bVar15); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + iVar7 = iVar7 + 1; + *(char *)((long)param_4 + lVar9 + lVar10) = (char)uVar5; + lVar9 = lVar9 + 1; + iVar3 = *param_6; + } while (iVar7 < iVar3); + } +LAB_00245fb8: + iVar7 = param_6[1]; + param_2 = (undefined8 *)((long)param_2 + param_3); + param_4 = (undefined8 *)((long)param_4 + param_5); + param_6[1] = iVar7 + -1; + } while (iVar7 != 0); + } + return; +} + + +================================================================== + +### FUNC 00246028 (60 bytes) name=FUN_00246028 + +void FUN_00246028(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 *param_7,undefined8 *param_8) + +{ + undefined8 local_8; + + local_8 = *param_7; + FUN_00245c94(*param_8,param_3,param_4,param_5,param_6,&local_8); + return; +} + + +================================================================== + +### FUNC 00246064 (1040 bytes) name=FUN_00246064 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00246064(undefined8 *param_1,long param_2,undefined8 *param_3,long param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + long lVar1; + int iVar2; + undefined1 auVar3 [16]; + char cVar4; + int iVar5; + uint uVar6; + long lVar7; + int iVar8; + long lVar9; + undefined8 *puVar10; + long lVar11; + undefined8 *puVar12; + undefined8 *puVar13; + char cVar14; + undefined1 uVar15; + char cVar16; + char cVar17; + byte bVar18; + char cVar19; + char cVar20; + char cVar21; + short sVar22; + undefined8 uVar23; + short sVar32; + short sVar34; + short sVar35; + short sVar36; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + short sVar33; + short sVar37; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + float fVar38; + float fVar39; + float fVar45; + undefined1 auVar41 [12]; + float fVar46; + undefined1 auVar44 [16]; + float fVar47; + undefined8 uVar48; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + float fVar56; + double dVar57; + int iVar58; + undefined8 local_8; + undefined1 auVar40 [12]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + + if (param_1 == (undefined8 *)0x0) { + local_8 = *(undefined8 *)param_7; + auVar28._0_8_ = *param_8; + auVar28._8_8_ = 0; + FUN_00245c94(auVar28,param_3,param_4,param_5,param_6,&local_8); + } + else { + iVar2 = *param_7; + dVar57 = *param_8; + iVar58 = param_7[1]; + cVar4 = cv::checkHardwareSupport(3); + if (cVar4 == '\0') { + cVar4 = cv::checkHardwareSupport(100); + } + fVar56 = (float)dVar57; + if (iVar58 != 0) { + do { + iVar8 = 0; + if ((cVar4 != '\0') && + (puVar10 = param_3, puVar12 = param_1, puVar13 = param_5, 0 < iVar2 + -7)) { + do { + uVar23 = *puVar10; + cVar14 = (char)((ulong)uVar23 >> 8); + cVar16 = (char)((ulong)uVar23 >> 0x10); + cVar17 = (char)((ulong)uVar23 >> 0x18); + bVar18 = (byte)((ulong)uVar23 >> 0x20); + cVar19 = (char)((ulong)uVar23 >> 0x28); + cVar20 = (char)((ulong)uVar23 >> 0x30); + cVar21 = (char)((ulong)uVar23 >> 0x38); + auVar51._6_2_ = 0; + auVar51._0_6_ = + (uint6)CONCAT14(cVar14,(uint)CONCAT12(cVar14,(ushort)(byte)uVar23)) & + 0xffff0000ffff; + auVar51[8] = cVar16; + auVar51._9_3_ = 0; + auVar51[0xc] = cVar17; + auVar51._13_3_ = 0; + auVar55._1_3_ = 0; + auVar55[0] = bVar18; + auVar55[4] = cVar19; + auVar55._5_3_ = 0; + auVar55[8] = cVar20; + auVar55._9_3_ = 0; + auVar55[0xc] = cVar21; + auVar55._13_3_ = 0; + auVar51 = NEON_scvtf(auVar51,4); + auVar49 = NEON_scvtf(auVar55,4); + auVar28 = NEON_frecpe(auVar51,4); + auVar52 = NEON_frecpe(auVar49,4); + uVar48 = *puVar12; + uVar15 = (undefined1)((ulong)uVar48 >> 8); + auVar55 = NEON_frecps(auVar51,auVar28,4); + auVar54 = NEON_frecps(auVar49,auVar52,4); + auVar29._0_4_ = auVar28._0_4_ * auVar55._0_4_; + auVar29._4_4_ = auVar28._4_4_ * auVar55._4_4_; + auVar29._8_4_ = auVar28._8_4_ * auVar55._8_4_; + auVar29._12_4_ = auVar28._12_4_ * auVar55._12_4_; + auVar53._0_4_ = auVar52._0_4_ * auVar54._0_4_; + auVar53._4_4_ = auVar52._4_4_ * auVar54._4_4_; + auVar53._8_4_ = auVar52._8_4_ * auVar54._8_4_; + auVar53._12_4_ = auVar52._12_4_ * auVar54._12_4_; + auVar52._6_2_ = 0; + auVar52._0_6_ = + (uint6)CONCAT14(uVar15,(uint)CONCAT12(uVar15,(ushort)(byte)uVar48)) & + 0xffff0000ffff; + auVar52[8] = (char)((ulong)uVar48 >> 0x10); + auVar52._9_3_ = 0; + auVar52[0xc] = (char)((ulong)uVar48 >> 0x18); + auVar52._13_3_ = 0; + auVar54._1_3_ = 0; + auVar54[0] = (byte)((ulong)uVar48 >> 0x20); + auVar54[4] = (char)((ulong)uVar48 >> 0x28); + auVar54._5_3_ = 0; + auVar54[8] = (char)((ulong)uVar48 >> 0x30); + auVar54._9_3_ = 0; + auVar54[0xc] = (char)((ulong)uVar48 >> 0x38); + auVar54._13_3_ = 0; + auVar55 = NEON_frecps(auVar51,auVar29,4); + auVar28 = NEON_scvtf(auVar52,4); + auVar52 = NEON_scvtf(auVar54,4); + auVar54 = NEON_frecps(auVar49,auVar53,4); + auVar49._0_8_ = + CONCAT44(fVar56 * auVar28._4_4_ * auVar29._4_4_ * auVar55._4_4_, + fVar56 * auVar28._0_4_ * auVar29._0_4_ * auVar55._0_4_); + auVar49._8_4_ = fVar56 * auVar28._8_4_ * auVar29._8_4_ * auVar55._8_4_; + auVar49._12_4_ = fVar56 * auVar28._12_4_ * auVar29._12_4_ * auVar55._12_4_; + fVar39 = fVar56 * auVar52._0_4_ * auVar53._0_4_ * auVar54._0_4_; + fVar45 = fVar56 * auVar52._4_4_ * auVar53._4_4_ * auVar54._4_4_; + fVar46 = fVar56 * auVar52._8_4_ * auVar53._8_4_ * auVar54._8_4_; + fVar47 = fVar56 * auVar52._12_4_ * auVar53._12_4_ * auVar54._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar48 = auVar49._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531f08); + auVar49._8_8_ = uVar48; + if (iVar5 != 0) { + auVar30._8_4_ = 0x80000000; + auVar30._0_8_ = 0x8000000080000000; + auVar30._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar30._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && + (iVar5 = __cxa_guard_acquire(&DAT_00531f00), iVar5 != 0)) { + auVar24._8_4_ = 0x3f000000; + auVar24._0_8_ = 0x3f0000003f000000; + auVar24._12_4_ = 0x3f000000; + uRam0000000000531ee8 = auVar24._8_8_; + _DAT_00531ee0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531f00); + } + auVar50._8_8_ = uRam0000000000531ee8; + auVar50._0_8_ = _DAT_00531ee0; + fVar38 = (float)CONCAT13(auVar49[3] & bRam0000000000531ef3 | + (byte)((ulong)_DAT_00531ee0 >> 0x18), + CONCAT12(auVar49[2] & bRam0000000000531ef2 | + (byte)((ulong)_DAT_00531ee0 >> 0x10), + CONCAT11(auVar49[1] & DAT_00531ef0_1 | + (byte)((ulong)_DAT_00531ee0 >> 8), + auVar49[0] & DAT_00531ef0 | + (byte)_DAT_00531ee0))); + auVar40._0_8_ = + CONCAT17(auVar49[7] & bRam0000000000531ef7 | (byte)((ulong)_DAT_00531ee0 >> 0x38), + CONCAT16(auVar49[6] & bRam0000000000531ef6 | + (byte)((ulong)_DAT_00531ee0 >> 0x30), + CONCAT15(auVar49[5] & bRam0000000000531ef5 | + (byte)((ulong)_DAT_00531ee0 >> 0x28), + CONCAT14(auVar49[4] & bRam0000000000531ef4 | + (byte)((ulong)_DAT_00531ee0 >> 0x20),fVar38)))) + ; + auVar40[8] = auVar49[8] & (byte)uRam0000000000531ef8 | (byte)uRam0000000000531ee8; + auVar40[9] = auVar49[9] & uRam0000000000531ef8._1_1_ | + (byte)((ulong)uRam0000000000531ee8 >> 8); + auVar40[10] = auVar49[10] & bRam0000000000531efa | + (byte)((ulong)uRam0000000000531ee8 >> 0x10); + auVar40[0xb] = auVar49[0xb] & bRam0000000000531efb | + (byte)((ulong)uRam0000000000531ee8 >> 0x18); + auVar42[0xc] = auVar49[0xc] & bRam0000000000531efc | + (byte)((ulong)uRam0000000000531ee8 >> 0x20); + auVar42._0_12_ = auVar40; + auVar42[0xd] = auVar49[0xd] & bRam0000000000531efd | + (byte)((ulong)uRam0000000000531ee8 >> 0x28); + auVar42[0xe] = auVar49[0xe] & bRam0000000000531efe | + (byte)((ulong)uRam0000000000531ee8 >> 0x30); + auVar42[0xf] = auVar49[0xf] & bRam0000000000531eff | + (byte)((ulong)uRam0000000000531ee8 >> 0x38); + auVar25._0_8_ = + CONCAT44((int)(auVar49._4_4_ + (float)((ulong)auVar40._0_8_ >> 0x20)), + (int)(auVar49._0_4_ + fVar38)); + auVar25._8_4_ = (int)(auVar49._8_4_ + auVar40._8_4_); + auVar25._12_4_ = (int)(auVar49._12_4_ + auVar42._12_4_); + if (((DAT_00531f08 & 1) == 0) && + (iVar5 = __cxa_guard_acquire(&DAT_00531f08), iVar5 != 0)) { + auVar31._8_4_ = 0x80000000; + auVar31._0_8_ = 0x8000000080000000; + auVar31._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar31._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar48 = auVar50._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531f00); + uVar48 = auVar50._0_8_; + if (iVar5 != 0) { + auVar26._8_4_ = 0x3f000000; + auVar26._0_8_ = 0x3f0000003f000000; + auVar26._12_4_ = 0x3f000000; + uRam0000000000531ee8 = auVar26._8_8_; + _DAT_00531ee0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531f00); + uVar48 = auVar50._0_8_; + } + } + iVar8 = iVar8 + 8; + auVar3._8_8_ = auVar25._8_8_; + auVar3._0_8_ = auVar25._0_8_; + uVar48 = NEON_sqxtun(uVar48,auVar3,4); + sVar22 = -(ushort)((byte)uVar23 == 0); + sVar32 = -(ushort)(cVar16 == '\0'); + sVar33 = -(ushort)(cVar17 == '\0'); + sVar34 = -(ushort)(bVar18 == 0); + sVar35 = -(ushort)(cVar19 == '\0'); + sVar36 = -(ushort)(cVar20 == '\0'); + sVar37 = -(ushort)(cVar21 == '\0'); + fVar38 = (float)CONCAT13((byte)((uint)fVar39 >> 0x18) & bRam0000000000531ef3 | + (byte)((ulong)_DAT_00531ee0 >> 0x18), + CONCAT12((byte)((uint)fVar39 >> 0x10) & bRam0000000000531ef2 | + (byte)((ulong)_DAT_00531ee0 >> 0x10), + CONCAT11((byte)((uint)fVar39 >> 8) & DAT_00531ef0_1 | + (byte)((ulong)_DAT_00531ee0 >> 8), + SUB41(fVar39,0) & DAT_00531ef0 | + (byte)_DAT_00531ee0))); + auVar41._0_8_ = + CONCAT17((byte)((uint)fVar45 >> 0x18) & bRam0000000000531ef7 | + (byte)((ulong)_DAT_00531ee0 >> 0x38), + CONCAT16((byte)((uint)fVar45 >> 0x10) & bRam0000000000531ef6 | + (byte)((ulong)_DAT_00531ee0 >> 0x30), + CONCAT15((byte)((uint)fVar45 >> 8) & bRam0000000000531ef5 | + (byte)((ulong)_DAT_00531ee0 >> 0x28), + CONCAT14(SUB41(fVar45,0) & bRam0000000000531ef4 | + (byte)((ulong)_DAT_00531ee0 >> 0x20),fVar38)))) + ; + auVar41[8] = SUB41(fVar46,0) & (byte)uRam0000000000531ef8 | (byte)uRam0000000000531ee8; + auVar41[9] = (byte)((uint)fVar46 >> 8) & uRam0000000000531ef8._1_1_ | + (byte)((ulong)uRam0000000000531ee8 >> 8); + auVar41[10] = (byte)((uint)fVar46 >> 0x10) & bRam0000000000531efa | + (byte)((ulong)uRam0000000000531ee8 >> 0x10); + auVar41[0xb] = (byte)((uint)fVar46 >> 0x18) & bRam0000000000531efb | + (byte)((ulong)uRam0000000000531ee8 >> 0x18); + auVar43[0xc] = SUB41(fVar47,0) & bRam0000000000531efc | + (byte)((ulong)uRam0000000000531ee8 >> 0x20); + auVar43._0_12_ = auVar41; + auVar43[0xd] = (byte)((uint)fVar47 >> 8) & bRam0000000000531efd | + (byte)((ulong)uRam0000000000531ee8 >> 0x28); + auVar43[0xe] = (byte)((uint)fVar47 >> 0x10) & bRam0000000000531efe | + (byte)((ulong)uRam0000000000531ee8 >> 0x30); + auVar43[0xf] = (byte)((uint)fVar47 >> 0x18) & bRam0000000000531eff | + (byte)((ulong)uRam0000000000531ee8 >> 0x38); + auVar44._0_8_ = + CONCAT44((int)(fVar45 + (float)((ulong)auVar41._0_8_ >> 0x20)), + (int)(fVar39 + fVar38)); + auVar44._8_4_ = (int)(fVar46 + auVar41._8_4_); + auVar44._12_4_ = (int)(fVar47 + auVar43._12_4_); + uVar23 = NEON_sqxtun(auVar44._0_8_,auVar44,4); + auVar27._0_8_ = + CONCAT17((byte)((ulong)uVar48 >> 0x38) & ~(byte)((ushort)sVar33 >> 8), + CONCAT16((byte)((ulong)uVar48 >> 0x30) & ~(byte)sVar33, + CONCAT15((byte)((ulong)uVar48 >> 0x28) & + ~(byte)((ushort)sVar32 >> 8), + CONCAT14((byte)((ulong)uVar48 >> 0x20) & ~(byte)sVar32, + CONCAT13((byte)((ulong)uVar48 >> 0x18) & + ~(byte)((ushort)-(ushort)(cVar14 == + '\0') >> 8), + CONCAT12((byte)((ulong)uVar48 >> 0x10) + & ~(byte)-(ushort)(cVar14 == + '\0'), + CONCAT11((byte)((ulong)uVar48 + >> 8) & + ~(byte)((ushort) + sVar22 >> 8),(byte)uVar48 & ~(byte)sVar22))))))); + auVar27[8] = (byte)uVar23 & ~(byte)sVar34; + auVar27[9] = (byte)((ulong)uVar23 >> 8) & ~(byte)((ushort)sVar34 >> 8); + auVar27[10] = (byte)((ulong)uVar23 >> 0x10) & ~(byte)sVar35; + auVar27[0xb] = (byte)((ulong)uVar23 >> 0x18) & ~(byte)((ushort)sVar35 >> 8); + auVar27[0xc] = (byte)((ulong)uVar23 >> 0x20) & ~(byte)sVar36; + auVar27[0xd] = (byte)((ulong)uVar23 >> 0x28) & ~(byte)((ushort)sVar36 >> 8); + auVar27[0xe] = (byte)((ulong)uVar23 >> 0x30) & ~(byte)sVar37; + auVar27[0xf] = (byte)((ulong)uVar23 >> 0x38) & ~(byte)((ushort)sVar37 >> 8); + uVar23 = NEON_uqxtn(auVar27._0_8_,auVar27,2); + *puVar13 = uVar23; + puVar10 = puVar10 + 1; + puVar12 = puVar12 + 1; + puVar13 = puVar13 + 1; + } while (iVar8 < iVar2 + -7); + } + if (iVar8 < iVar2) { + lVar11 = 0; + lVar9 = (long)iVar8; + lVar1 = (ulong)(uint)((iVar2 + -1) - iVar8) + 1; + do { + while( true ) { + bVar18 = *(byte *)((long)param_3 + lVar11 + lVar9); + if (bVar18 == 0) break; + lVar7 = lrintf((fVar56 * (float)*(byte *)((long)param_1 + lVar11 + lVar9)) / + (float)bVar18); + uVar6 = (uint)lVar7; + if (0xff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + *(char *)((long)param_5 + lVar11 + lVar9) = (char)uVar6; + lVar11 = lVar11 + 1; + if (lVar11 == lVar1) goto LAB_002463c4; + } + *(undefined1 *)((long)param_5 + lVar11 + lVar9) = 0; + lVar11 = lVar11 + 1; + } while (lVar11 != lVar1); + } +LAB_002463c4: + iVar58 = iVar58 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_3 = (undefined8 *)((long)param_3 + param_4); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar58 != 0); + } + } + return; +} + + +================================================================== + +### FUNC 00246474 (888 bytes) name=FUN_00246474 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00246474(undefined8 param_1,undefined8 param_2,long param_3,ulong param_4,byte *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + char cVar3; + int iVar4; + long lVar5; + undefined1 (*pauVar6) [16]; + long lVar7; + ulong uVar8; + long lVar9; + byte *pbVar10; + ulong uVar11; + float fVar12; + int iVar17; + int iVar18; + int iVar19; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar20 [12]; + int iVar21; + float fVar22; + int iVar24; + float fVar25; + int iVar26; + float fVar27; + int iVar28; + undefined1 auVar23 [16]; + float fVar29; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + float fVar34; + double dVar35; + int iVar36; + int local_50; + int iStack_4c; + int iStack_48; + int iStack_44; + int local_40; + int iStack_3c; + int iStack_38; + int iStack_34; + byte local_20; + byte bStack_1f; + byte bStack_1e; + byte bStack_1d; + byte bStack_1c; + byte bStack_1b; + byte bStack_1a; + byte bStack_19; + byte bStack_18; + byte bStack_17; + byte bStack_16; + byte bStack_15; + byte bStack_14; + byte bStack_13; + byte bStack_12; + byte bStack_11; + undefined1 auVar13 [12]; + undefined1 auVar14 [16]; + + iVar2 = *param_7; + dVar35 = *param_8; + iVar36 = param_7[1]; + cVar3 = cv::checkHardwareSupport(3); + if (cVar3 == '\0') { + cVar3 = cv::checkHardwareSupport(100); + } + fVar34 = (float)dVar35; + if (iVar36 != 0) { + do { + uVar8 = 0; + if ((cVar3 != '\0') && (0 < iVar2 + -7)) { + pauVar6 = (undefined1 (*) [16])(param_3 + 0x10); + pbVar10 = param_5; + do { + auVar14 = *pauVar6; + auVar33 = NEON_scvtf(auVar14,4); + auVar15 = pauVar6[-1]; + auVar32 = NEON_frecpe(auVar33,4); + auVar16 = NEON_scvtf(auVar15,4); + auVar30 = NEON_frecps(auVar33,auVar32,4); + auVar23 = NEON_frecpe(auVar16,4); + auVar31._0_4_ = auVar32._0_4_ * auVar30._0_4_; + auVar31._4_4_ = auVar32._4_4_ * auVar30._4_4_; + auVar31._8_4_ = auVar32._8_4_ * auVar30._8_4_; + auVar31._12_4_ = auVar32._12_4_ * auVar30._12_4_; + auVar30 = NEON_frecps(auVar16,auVar23,4); + auVar33 = NEON_frecps(auVar33,auVar31,4); + auVar32._0_4_ = auVar23._0_4_ * auVar30._0_4_; + auVar32._4_4_ = auVar23._4_4_ * auVar30._4_4_; + auVar32._8_4_ = auVar23._8_4_ * auVar30._8_4_; + auVar32._12_4_ = auVar23._12_4_ * auVar30._12_4_; + auVar30 = NEON_frecps(auVar16,auVar32,4); + fVar22 = fVar34 * auVar31._0_4_ * auVar33._0_4_; + fVar25 = fVar34 * auVar31._4_4_ * auVar33._4_4_; + fVar27 = fVar34 * auVar31._8_4_ * auVar33._8_4_; + fVar29 = fVar34 * auVar31._12_4_ * auVar33._12_4_; + auVar16._0_4_ = fVar34 * auVar32._0_4_ * auVar30._0_4_; + auVar16._4_4_ = fVar34 * auVar32._4_4_ * auVar30._4_4_; + auVar16._8_4_ = fVar34 * auVar32._8_4_ * auVar30._8_4_; + auVar16._12_4_ = fVar34 * auVar32._12_4_ * auVar30._12_4_; + if ((DAT_00531f08 & 1) == 0) { + bStack_18 = SUB41(auVar16._8_4_,0); + bStack_17 = (byte)((uint)auVar16._8_4_ >> 8); + bStack_16 = (byte)((uint)auVar16._8_4_ >> 0x10); + bStack_15 = (byte)((uint)auVar16._8_4_ >> 0x18); + bStack_14 = SUB41(auVar16._12_4_,0); + bStack_13 = (byte)((uint)auVar16._12_4_ >> 8); + bStack_12 = (byte)((uint)auVar16._12_4_ >> 0x10); + bStack_11 = (byte)((uint)auVar16._12_4_ >> 0x18); + bStack_1c = SUB41(auVar16._4_4_,0); + bStack_1b = (byte)((uint)auVar16._4_4_ >> 8); + bStack_1a = (byte)((uint)auVar16._4_4_ >> 0x10); + bStack_19 = (byte)((uint)auVar16._4_4_ >> 0x18); + iVar4 = __cxa_guard_acquire(&DAT_00531f08); + auVar16[4] = bStack_1c; + auVar16[5] = bStack_1b; + auVar16[6] = bStack_1a; + auVar16[7] = bStack_19; + auVar16[8] = bStack_18; + auVar16[9] = bStack_17; + auVar16[10] = bStack_16; + auVar16[0xb] = bStack_15; + auVar16[0xc] = bStack_14; + auVar16[0xd] = bStack_13; + auVar16[0xe] = bStack_12; + auVar16[0xf] = bStack_11; + if (iVar4 != 0) { + auVar30._8_4_ = 0x80000000; + auVar30._0_8_ = 0x8000000080000000; + auVar30._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar30._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if ((DAT_00531f00 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531f00); + if (iVar4 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + } + fVar12 = (float)CONCAT13(auVar16[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar16[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar16[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar16[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar20._0_8_ = + CONCAT17(auVar16[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar16[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar16[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar16[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar12)))); + auVar20[8] = auVar16[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar20[9] = auVar16[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar20[10] = auVar16[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar20[0xb] = auVar16[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar23[0xc] = auVar16[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar23._0_12_ = auVar20; + auVar23[0xd] = auVar16[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar23[0xe] = auVar16[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar23[0xf] = auVar16[0xf] & bRam0000000000531eff | bRam0000000000531eef; + iVar4 = (int)(auVar16._0_4_ + fVar12); + iVar17 = (int)(auVar16._4_4_ + (float)((ulong)auVar20._0_8_ >> 0x20)); + iVar18 = (int)(auVar16._8_4_ + auVar20._8_4_); + iVar19 = (int)(auVar16._12_4_ + auVar23._12_4_); + bStack_18 = (byte)iVar18; + bStack_17 = (byte)((uint)iVar18 >> 8); + bStack_16 = (byte)((uint)iVar18 >> 0x10); + bStack_15 = (byte)((uint)iVar18 >> 0x18); + bStack_14 = (byte)iVar19; + bStack_13 = (byte)((uint)iVar19 >> 8); + bStack_12 = (byte)((uint)iVar19 >> 0x10); + bStack_11 = (byte)((uint)iVar19 >> 0x18); + local_20 = (byte)iVar4; + bStack_1f = (byte)((uint)iVar4 >> 8); + bStack_1e = (byte)((uint)iVar4 >> 0x10); + bStack_1d = (byte)((uint)iVar4 >> 0x18); + bStack_1c = (byte)iVar17; + bStack_1b = (byte)((uint)iVar17 >> 8); + bStack_1a = (byte)((uint)iVar17 >> 0x10); + bStack_19 = (byte)((uint)iVar17 >> 0x18); + if (((DAT_00531f08 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531f08), iVar4 != 0)) + { + auVar33._8_4_ = 0x80000000; + auVar33._0_8_ = 0x8000000080000000; + auVar33._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar33._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + if (((DAT_00531f00 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531f00), iVar4 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + uVar1 = (int)uVar8 + 8; + uVar8 = (ulong)uVar1; + pauVar6 = pauVar6 + 2; + local_50 = auVar15._0_4_; + iStack_4c = auVar15._4_4_; + iStack_48 = auVar15._8_4_; + iStack_44 = auVar15._12_4_; + local_40 = auVar14._0_4_; + iStack_3c = auVar14._4_4_; + iStack_38 = auVar14._8_4_; + iStack_34 = auVar14._12_4_; + iVar4 = -(uint)(local_50 == 0); + iVar17 = -(uint)(iStack_4c == 0); + iVar18 = -(uint)(iStack_48 == 0); + iVar19 = -(uint)(iStack_44 == 0); + iVar21 = -(uint)(local_40 == 0); + iVar24 = -(uint)(iStack_3c == 0); + iVar26 = -(uint)(iStack_38 == 0); + iVar28 = -(uint)(iStack_34 == 0); + fVar12 = (float)CONCAT13((byte)((uint)fVar22 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar22 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar22 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar22,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar13._0_8_ = + CONCAT17((byte)((uint)fVar25 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar25 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar25 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar25,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar12)))); + auVar13[8] = SUB41(fVar27,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar13[9] = (byte)((uint)fVar27 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar13[10] = (byte)((uint)fVar27 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar13[0xb] = (byte)((uint)fVar27 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar14[0xc] = SUB41(fVar29,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar14._0_12_ = auVar13; + auVar14[0xd] = (byte)((uint)fVar29 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar14[0xe] = (byte)((uint)fVar29 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar14[0xf] = (byte)((uint)fVar29 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + pbVar10[8] = bStack_18 & ~(byte)iVar18; + pbVar10[9] = bStack_17 & ~(byte)((uint)iVar18 >> 8); + pbVar10[10] = bStack_16 & ~(byte)((uint)iVar18 >> 0x10); + pbVar10[0xb] = bStack_15 & ~(byte)((uint)iVar18 >> 0x18); + pbVar10[0xc] = bStack_14 & ~(byte)iVar19; + pbVar10[0xd] = bStack_13 & ~(byte)((uint)iVar19 >> 8); + pbVar10[0xe] = bStack_12 & ~(byte)((uint)iVar19 >> 0x10); + pbVar10[0xf] = bStack_11 & ~(byte)((uint)iVar19 >> 0x18); + *pbVar10 = local_20 & ~(byte)iVar4; + pbVar10[1] = bStack_1f & ~(byte)((uint)iVar4 >> 8); + pbVar10[2] = bStack_1e & ~(byte)((uint)iVar4 >> 0x10); + pbVar10[3] = bStack_1d & ~(byte)((uint)iVar4 >> 0x18); + pbVar10[4] = bStack_1c & ~(byte)iVar17; + pbVar10[5] = bStack_1b & ~(byte)((uint)iVar17 >> 8); + pbVar10[6] = bStack_1a & ~(byte)((uint)iVar17 >> 0x10); + pbVar10[7] = bStack_19 & ~(byte)((uint)iVar17 >> 0x18); + iVar4 = (int)(fVar22 + fVar12); + iVar17 = (int)(fVar25 + (float)((ulong)auVar13._0_8_ >> 0x20)); + iVar18 = (int)(fVar27 + auVar13._8_4_); + iVar19 = (int)(fVar29 + auVar14._12_4_); + auVar15._0_8_ = + CONCAT17((byte)((uint)iVar17 >> 0x18) & ~(byte)((uint)iVar24 >> 0x18), + CONCAT16((byte)((uint)iVar17 >> 0x10) & ~(byte)((uint)iVar24 >> 0x10), + CONCAT15((byte)((uint)iVar17 >> 8) & ~(byte)((uint)iVar24 >> 8), + CONCAT14((byte)iVar17 & ~(byte)iVar24, + CONCAT13((byte)((uint)iVar4 >> 0x18) & + ~(byte)((uint)iVar21 >> 0x18), + CONCAT12((byte)((uint)iVar4 >> 0x10) & + ~(byte)((uint)iVar21 >> 0x10), + CONCAT11((byte)((uint)iVar4 >> + 8) & + ~(byte)((uint)iVar21 + >> 8), + (byte)iVar4 & + ~(byte)iVar21))))))); + auVar15[8] = (byte)iVar18 & ~(byte)iVar26; + auVar15[9] = (byte)((uint)iVar18 >> 8) & ~(byte)((uint)iVar26 >> 8); + auVar15[10] = (byte)((uint)iVar18 >> 0x10) & ~(byte)((uint)iVar26 >> 0x10); + auVar15[0xb] = (byte)((uint)iVar18 >> 0x18) & ~(byte)((uint)iVar26 >> 0x18); + auVar15[0xc] = (byte)iVar19 & ~(byte)iVar28; + auVar15[0xd] = (byte)((uint)iVar19 >> 8) & ~(byte)((uint)iVar28 >> 8); + auVar15[0xe] = (byte)((uint)iVar19 >> 0x10) & ~(byte)((uint)iVar28 >> 0x10); + auVar15[0xf] = (byte)((uint)iVar19 >> 0x18) & ~(byte)((uint)iVar28 >> 0x18); + *(long *)(pbVar10 + 0x18) = auVar15._8_8_; + *(undefined8 *)(pbVar10 + 0x10) = auVar15._0_8_; + pbVar10 = pbVar10 + 0x20; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar8 < iVar2) { + uVar11 = -(uVar8 >> 0x1f) & 0xfffffffc00000000 | uVar8 << 2; + lVar7 = 0; + lVar9 = ((ulong)(uint)((iVar2 + -1) - (int)uVar8) + 1) * 4; + do { + while (iVar4 = *(int *)(param_3 + uVar11 + lVar7), iVar4 != 0) { + lVar5 = lrintf(fVar34 / (float)iVar4); + *(int *)(param_5 + lVar7 + uVar11) = (int)lVar5; + lVar7 = lVar7 + 4; + if (lVar7 == lVar9) goto LAB_00246780; + } + pbVar10 = param_5 + lVar7 + uVar11; + pbVar10[0] = 0; + pbVar10[1] = 0; + pbVar10[2] = 0; + pbVar10[3] = 0; + lVar7 = lVar7 + 4; + } while (lVar7 != lVar9); + } +LAB_00246780: + iVar36 = iVar36 + -1; + param_3 = param_3 + (param_4 & 0xfffffffffffffffc); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar36 != 0); + } + return; +} + + +================================================================== + +### FUNC 002467ec (992 bytes) name=FUN_002467ec + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002467ec(long param_1,ulong param_2,undefined1 (*param_3) [16],ulong param_4,byte *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + char cVar3; + int iVar4; + long lVar5; + ulong uVar6; + long lVar7; + undefined1 (*pauVar8) [16]; + long lVar9; + byte *pbVar10; + ulong uVar11; + undefined1 (*pauVar12) [16]; + float fVar13; + int iVar18; + int iVar19; + int iVar20; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + float fVar21; + float fVar24; + undefined1 auVar22 [12]; + float fVar25; + undefined1 auVar23 [16]; + float fVar26; + int iVar27; + int iVar29; + int iVar30; + int iVar31; + undefined1 auVar28 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + float fVar37; + double dVar38; + int iVar39; + undefined1 auVar40 [16]; + int local_60; + int iStack_5c; + int iStack_58; + int iStack_54; + int local_50; + int iStack_4c; + int iStack_48; + int iStack_44; + byte local_30; + byte bStack_2f; + byte bStack_2e; + byte bStack_2d; + byte bStack_2c; + byte bStack_2b; + byte bStack_2a; + byte bStack_29; + byte bStack_28; + byte bStack_27; + byte bStack_26; + byte bStack_25; + byte bStack_24; + byte bStack_23; + byte bStack_22; + byte bStack_21; + undefined1 auVar14 [12]; + undefined1 auVar15 [16]; + + dVar38 = *param_8; + iVar2 = *param_7; + iVar39 = param_7[1]; + cVar3 = cv::checkHardwareSupport(3); + if (cVar3 == '\0') { + cVar3 = cv::checkHardwareSupport(100); + } + fVar37 = (float)dVar38; + if (iVar39 != 0) { + do { + uVar6 = 0; + if ((cVar3 != '\0') && (0 < iVar2 + -7)) { + pauVar12 = (undefined1 (*) [16])(param_1 + 0x10); + pauVar8 = param_3; + pbVar10 = param_5; + do { + auVar15 = *pauVar8; + auVar23 = NEON_scvtf(*pauVar12,4); + auVar16 = pauVar8[1]; + auVar40 = NEON_scvtf(auVar15,4); + auVar36 = NEON_scvtf(auVar16,4); + auVar17 = NEON_scvtf(pauVar12[-1],4); + auVar35 = NEON_frecpe(auVar40,4); + auVar32 = NEON_frecpe(auVar36,4); + auVar33 = NEON_frecps(auVar40,auVar35,4); + auVar28 = NEON_frecps(auVar36,auVar32,4); + auVar34._0_4_ = auVar35._0_4_ * auVar33._0_4_; + auVar34._4_4_ = auVar35._4_4_ * auVar33._4_4_; + auVar34._8_4_ = auVar35._8_4_ * auVar33._8_4_; + auVar34._12_4_ = auVar35._12_4_ * auVar33._12_4_; + auVar33._0_4_ = auVar32._0_4_ * auVar28._0_4_; + auVar33._4_4_ = auVar32._4_4_ * auVar28._4_4_; + auVar33._8_4_ = auVar32._8_4_ * auVar28._8_4_; + auVar33._12_4_ = auVar32._12_4_ * auVar28._12_4_; + auVar32 = NEON_frecps(auVar40,auVar34,4); + auVar35 = NEON_frecps(auVar36,auVar33,4); + auVar28._0_4_ = fVar37 * auVar17._0_4_ * auVar34._0_4_ * auVar32._0_4_; + auVar28._4_4_ = fVar37 * auVar17._4_4_ * auVar34._4_4_ * auVar32._4_4_; + auVar28._8_4_ = fVar37 * auVar17._8_4_ * auVar34._8_4_ * auVar32._8_4_; + auVar28._12_4_ = fVar37 * auVar17._12_4_ * auVar34._12_4_ * auVar32._12_4_; + fVar21 = fVar37 * auVar23._0_4_ * auVar33._0_4_ * auVar35._0_4_; + fVar24 = fVar37 * auVar23._4_4_ * auVar33._4_4_ * auVar35._4_4_; + fVar25 = fVar37 * auVar23._8_4_ * auVar33._8_4_ * auVar35._8_4_; + fVar26 = fVar37 * auVar23._12_4_ * auVar33._12_4_ * auVar35._12_4_; + if ((DAT_00531f08 & 1) == 0) { + bStack_28 = SUB41(auVar28._8_4_,0); + bStack_27 = (byte)((uint)auVar28._8_4_ >> 8); + bStack_26 = (byte)((uint)auVar28._8_4_ >> 0x10); + bStack_25 = (byte)((uint)auVar28._8_4_ >> 0x18); + bStack_24 = SUB41(auVar28._12_4_,0); + bStack_23 = (byte)((uint)auVar28._12_4_ >> 8); + bStack_22 = (byte)((uint)auVar28._12_4_ >> 0x10); + bStack_21 = (byte)((uint)auVar28._12_4_ >> 0x18); + bStack_2c = SUB41(auVar28._4_4_,0); + bStack_2b = (byte)((uint)auVar28._4_4_ >> 8); + bStack_2a = (byte)((uint)auVar28._4_4_ >> 0x10); + bStack_29 = (byte)((uint)auVar28._4_4_ >> 0x18); + iVar4 = __cxa_guard_acquire(&DAT_00531f08); + auVar28[4] = bStack_2c; + auVar28[5] = bStack_2b; + auVar28[6] = bStack_2a; + auVar28[7] = bStack_29; + auVar28[8] = bStack_28; + auVar28[9] = bStack_27; + auVar28[10] = bStack_26; + auVar28[0xb] = bStack_25; + auVar28[0xc] = bStack_24; + auVar28[0xd] = bStack_23; + auVar28[0xe] = bStack_22; + auVar28[0xf] = bStack_21; + if (iVar4 != 0) { + auVar17._8_4_ = 0x80000000; + auVar17._0_8_ = 0x8000000080000000; + auVar17._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar17._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if ((DAT_00531f00 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531f00); + if (iVar4 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + } + fVar13 = (float)CONCAT13(auVar28[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar28[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar28[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar28[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar22._0_8_ = + CONCAT17(auVar28[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar28[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar28[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar28[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar13)))); + auVar22[8] = auVar28[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar22[9] = auVar28[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar22[10] = auVar28[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar22[0xb] = auVar28[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar32[0xc] = auVar28[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar32._0_12_ = auVar22; + auVar32[0xd] = auVar28[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar32[0xe] = auVar28[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar32[0xf] = auVar28[0xf] & bRam0000000000531eff | bRam0000000000531eef; + iVar4 = (int)(auVar28._0_4_ + fVar13); + iVar18 = (int)(auVar28._4_4_ + (float)((ulong)auVar22._0_8_ >> 0x20)); + iVar19 = (int)(auVar28._8_4_ + auVar22._8_4_); + iVar20 = (int)(auVar28._12_4_ + auVar32._12_4_); + bStack_28 = (byte)iVar19; + bStack_27 = (byte)((uint)iVar19 >> 8); + bStack_26 = (byte)((uint)iVar19 >> 0x10); + bStack_25 = (byte)((uint)iVar19 >> 0x18); + bStack_24 = (byte)iVar20; + bStack_23 = (byte)((uint)iVar20 >> 8); + bStack_22 = (byte)((uint)iVar20 >> 0x10); + bStack_21 = (byte)((uint)iVar20 >> 0x18); + local_30 = (byte)iVar4; + bStack_2f = (byte)((uint)iVar4 >> 8); + bStack_2e = (byte)((uint)iVar4 >> 0x10); + bStack_2d = (byte)((uint)iVar4 >> 0x18); + bStack_2c = (byte)iVar18; + bStack_2b = (byte)((uint)iVar18 >> 8); + bStack_2a = (byte)((uint)iVar18 >> 0x10); + bStack_29 = (byte)((uint)iVar18 >> 0x18); + if (((DAT_00531f08 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531f08), iVar4 != 0)) + { + auVar23._8_4_ = 0x80000000; + auVar23._0_8_ = 0x8000000080000000; + auVar23._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar23._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + if (((DAT_00531f00 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531f00), iVar4 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + uVar1 = (int)uVar6 + 8; + uVar6 = (ulong)uVar1; + pauVar8 = pauVar8 + 2; + pauVar12 = pauVar12 + 2; + local_60 = auVar15._0_4_; + iStack_5c = auVar15._4_4_; + iStack_58 = auVar15._8_4_; + iStack_54 = auVar15._12_4_; + iVar4 = -(uint)(local_60 == 0); + iVar18 = -(uint)(iStack_5c == 0); + iVar19 = -(uint)(iStack_58 == 0); + iVar20 = -(uint)(iStack_54 == 0); + local_50 = auVar16._0_4_; + iStack_4c = auVar16._4_4_; + iStack_48 = auVar16._8_4_; + iStack_44 = auVar16._12_4_; + iVar27 = -(uint)(local_50 == 0); + iVar29 = -(uint)(iStack_4c == 0); + iVar30 = -(uint)(iStack_48 == 0); + iVar31 = -(uint)(iStack_44 == 0); + fVar13 = (float)CONCAT13((byte)((uint)fVar21 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar21 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar21 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar21,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar14._0_8_ = + CONCAT17((byte)((uint)fVar24 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar24 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar24 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar24,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar13)))); + auVar14[8] = SUB41(fVar25,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar14[9] = (byte)((uint)fVar25 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar14[10] = (byte)((uint)fVar25 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar14[0xb] = (byte)((uint)fVar25 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar15[0xc] = SUB41(fVar26,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar15._0_12_ = auVar14; + auVar15[0xd] = (byte)((uint)fVar26 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar15[0xe] = (byte)((uint)fVar26 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar15[0xf] = (byte)((uint)fVar26 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + pbVar10[8] = bStack_28 & ~(byte)iVar19; + pbVar10[9] = bStack_27 & ~(byte)((uint)iVar19 >> 8); + pbVar10[10] = bStack_26 & ~(byte)((uint)iVar19 >> 0x10); + pbVar10[0xb] = bStack_25 & ~(byte)((uint)iVar19 >> 0x18); + pbVar10[0xc] = bStack_24 & ~(byte)iVar20; + pbVar10[0xd] = bStack_23 & ~(byte)((uint)iVar20 >> 8); + pbVar10[0xe] = bStack_22 & ~(byte)((uint)iVar20 >> 0x10); + pbVar10[0xf] = bStack_21 & ~(byte)((uint)iVar20 >> 0x18); + *pbVar10 = local_30 & ~(byte)iVar4; + pbVar10[1] = bStack_2f & ~(byte)((uint)iVar4 >> 8); + pbVar10[2] = bStack_2e & ~(byte)((uint)iVar4 >> 0x10); + pbVar10[3] = bStack_2d & ~(byte)((uint)iVar4 >> 0x18); + pbVar10[4] = bStack_2c & ~(byte)iVar18; + pbVar10[5] = bStack_2b & ~(byte)((uint)iVar18 >> 8); + pbVar10[6] = bStack_2a & ~(byte)((uint)iVar18 >> 0x10); + pbVar10[7] = bStack_29 & ~(byte)((uint)iVar18 >> 0x18); + iVar4 = (int)(fVar21 + fVar13); + iVar18 = (int)(fVar24 + (float)((ulong)auVar14._0_8_ >> 0x20)); + iVar19 = (int)(fVar25 + auVar14._8_4_); + iVar20 = (int)(fVar26 + auVar15._12_4_); + auVar16._0_8_ = + CONCAT17((byte)((uint)iVar18 >> 0x18) & ~(byte)((uint)iVar29 >> 0x18), + CONCAT16((byte)((uint)iVar18 >> 0x10) & ~(byte)((uint)iVar29 >> 0x10), + CONCAT15((byte)((uint)iVar18 >> 8) & ~(byte)((uint)iVar29 >> 8), + CONCAT14((byte)iVar18 & ~(byte)iVar29, + CONCAT13((byte)((uint)iVar4 >> 0x18) & + ~(byte)((uint)iVar27 >> 0x18), + CONCAT12((byte)((uint)iVar4 >> 0x10) & + ~(byte)((uint)iVar27 >> 0x10), + CONCAT11((byte)((uint)iVar4 >> + 8) & + ~(byte)((uint)iVar27 + >> 8), + (byte)iVar4 & + ~(byte)iVar27))))))); + auVar16[8] = (byte)iVar19 & ~(byte)iVar30; + auVar16[9] = (byte)((uint)iVar19 >> 8) & ~(byte)((uint)iVar30 >> 8); + auVar16[10] = (byte)((uint)iVar19 >> 0x10) & ~(byte)((uint)iVar30 >> 0x10); + auVar16[0xb] = (byte)((uint)iVar19 >> 0x18) & ~(byte)((uint)iVar30 >> 0x18); + auVar16[0xc] = (byte)iVar20 & ~(byte)iVar31; + auVar16[0xd] = (byte)((uint)iVar20 >> 8) & ~(byte)((uint)iVar31 >> 8); + auVar16[0xe] = (byte)((uint)iVar20 >> 0x10) & ~(byte)((uint)iVar31 >> 0x10); + auVar16[0xf] = (byte)((uint)iVar20 >> 0x18) & ~(byte)((uint)iVar31 >> 0x18); + *(long *)(pbVar10 + 0x18) = auVar16._8_8_; + *(undefined8 *)(pbVar10 + 0x10) = auVar16._0_8_; + pbVar10 = pbVar10 + 0x20; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar6 < iVar2) { + uVar11 = -(uVar6 >> 0x1f) & 0xfffffffc00000000 | uVar6 << 2; + lVar9 = 0; + lVar7 = ((ulong)(uint)((iVar2 + -1) - (int)uVar6) + 1) * 4; + do { + while( true ) { + if (*(int *)(*param_3 + lVar9 + uVar11) == 0) break; + lVar5 = lrintf((fVar37 * (float)*(int *)(param_1 + uVar11 + lVar9)) / + (float)*(int *)(*param_3 + lVar9 + uVar11)); + *(int *)(param_5 + lVar9 + uVar11) = (int)lVar5; + lVar9 = lVar9 + 4; + if (lVar9 == lVar7) goto LAB_00246b48; + } + pbVar10 = param_5 + lVar9 + uVar11; + pbVar10[0] = 0; + pbVar10[1] = 0; + pbVar10[2] = 0; + pbVar10[3] = 0; + lVar9 = lVar9 + 4; + } while (lVar9 != lVar7); + } +LAB_00246b48: + iVar39 = iVar39 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_3 = (undefined1 (*) [16])(*param_3 + (param_4 & 0xfffffffffffffffc)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar39 != 0); + } + return; +} + + +================================================================== + +### FUNC 00246bcc (1020 bytes) name=FUN_00246bcc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00246bcc(short *param_1,ulong param_2,short *param_3,ulong param_4,undefined8 *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + undefined1 auVar3 [16]; + char cVar4; + int iVar5; + long lVar6; + undefined2 uVar7; + ulong uVar8; + short *psVar9; + short *psVar10; + long lVar11; + long lVar12; + undefined8 *puVar13; + ulong uVar14; + float fVar15; + float fVar16; + undefined8 uVar17; + float fVar26; + undefined1 auVar19 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + float fVar25; + float fVar27; + undefined1 auVar24 [16]; + short sVar28; + short sVar31; + short sVar32; + short sVar33; + short sVar34; + undefined1 auVar29 [12]; + short sVar35; + short sVar36; + short sVar37; + undefined1 auVar38 [16]; + undefined8 uVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + float fVar47; + double dVar48; + int iVar49; + undefined1 auVar18 [12]; + undefined1 auVar20 [16]; + undefined1 auVar30 [16]; + + dVar48 = *param_8; + iVar2 = *param_7; + iVar49 = param_7[1]; + cVar4 = cv::checkHardwareSupport(3); + if (cVar4 == '\0') { + cVar4 = cv::checkHardwareSupport(100); + } + fVar47 = (float)dVar48; + if (iVar49 != 0) { + do { + uVar8 = 0; + if ((cVar4 != '\0') && + (psVar9 = param_3, psVar10 = param_1, puVar13 = param_5, 0 < iVar2 + -7)) { + do { + sVar28 = *psVar9; + sVar31 = psVar9[1]; + sVar32 = psVar9[2]; + sVar33 = psVar9[3]; + sVar34 = psVar9[4]; + sVar35 = psVar9[5]; + sVar36 = psVar9[6]; + sVar37 = psVar9[7]; + auVar46._0_4_ = (int)sVar34; + auVar46._4_4_ = (int)sVar35; + auVar46._8_4_ = (int)sVar36; + auVar46._12_4_ = (int)sVar37; + auVar40 = NEON_scvtf(auVar46,4); + auVar42 = NEON_frecpe(auVar40,4); + auVar38._0_4_ = (int)sVar28; + auVar38._4_4_ = (int)sVar31; + auVar38._8_4_ = (int)sVar32; + auVar38._12_4_ = (int)sVar33; + auVar38 = NEON_scvtf(auVar38,4); + auVar46 = NEON_frecps(auVar40,auVar42,4); + auVar23 = NEON_frecpe(auVar38,4); + auVar43._0_4_ = auVar42._0_4_ * auVar46._0_4_; + auVar43._4_4_ = auVar42._4_4_ * auVar46._4_4_; + auVar43._8_4_ = auVar42._8_4_ * auVar46._8_4_; + auVar43._12_4_ = auVar42._12_4_ * auVar46._12_4_; + auVar44._0_4_ = (int)psVar10[4]; + auVar44._4_4_ = (int)psVar10[5]; + auVar44._8_4_ = (int)psVar10[6]; + auVar44._12_4_ = (int)psVar10[7]; + auVar44 = NEON_scvtf(auVar44,4); + auVar45 = NEON_frecps(auVar38,auVar23,4); + auVar46 = NEON_frecps(auVar40,auVar43,4); + auVar42._0_4_ = (int)*psVar10; + auVar42._4_4_ = (int)psVar10[1]; + auVar42._8_4_ = (int)psVar10[2]; + auVar42._12_4_ = (int)psVar10[3]; + auVar40._0_4_ = auVar23._0_4_ * auVar45._0_4_; + auVar40._4_4_ = auVar23._4_4_ * auVar45._4_4_; + auVar40._8_4_ = auVar23._8_4_ * auVar45._8_4_; + auVar40._12_4_ = auVar23._12_4_ * auVar45._12_4_; + auVar42 = NEON_scvtf(auVar42,4); + auVar38 = NEON_frecps(auVar38,auVar40,4); + fVar16 = fVar47 * auVar44._0_4_ * auVar43._0_4_ * auVar46._0_4_; + fVar25 = fVar47 * auVar44._4_4_ * auVar43._4_4_ * auVar46._4_4_; + fVar26 = fVar47 * auVar44._8_4_ * auVar43._8_4_ * auVar46._8_4_; + fVar27 = fVar47 * auVar44._12_4_ * auVar43._12_4_ * auVar46._12_4_; + auVar23._0_8_ = + CONCAT44(fVar47 * auVar42._4_4_ * auVar40._4_4_ * auVar38._4_4_, + fVar47 * auVar42._0_4_ * auVar40._0_4_ * auVar38._0_4_); + auVar23._8_4_ = fVar47 * auVar42._8_4_ * auVar40._8_4_ * auVar38._8_4_; + auVar23._12_4_ = fVar47 * auVar42._12_4_ * auVar40._12_4_ * auVar38._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar17 = auVar23._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531f08); + auVar23._8_8_ = uVar17; + if (iVar5 != 0) { + auVar45._8_4_ = 0x80000000; + auVar45._0_8_ = 0x8000000080000000; + auVar45._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar45._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f00), iVar5 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar41[1] = bRam0000000000531ee1; + auVar41[0] = DAT_00531ee0; + auVar41[2] = bRam0000000000531ee2; + auVar41[3] = bRam0000000000531ee3; + auVar41[4] = bRam0000000000531ee4; + auVar41[5] = bRam0000000000531ee5; + auVar41[6] = bRam0000000000531ee6; + auVar41[7] = bRam0000000000531ee7; + auVar41[8] = bRam0000000000531ee8; + auVar41[9] = bRam0000000000531ee9; + auVar41[10] = bRam0000000000531eea; + auVar41[0xb] = bRam0000000000531eeb; + auVar41[0xc] = bRam0000000000531eec; + auVar41[0xd] = bRam0000000000531eed; + auVar41[0xe] = bRam0000000000531eee; + auVar41[0xf] = bRam0000000000531eef; + fVar15 = (float)CONCAT13(auVar23[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar23[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar23[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar23[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar29._0_8_ = + CONCAT17(auVar23[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar23[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar23[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar23[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar15)))); + auVar29[8] = auVar23[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar29[9] = auVar23[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar29[10] = auVar23[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar29[0xb] = auVar23[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar30[0xc] = auVar23[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar30._0_12_ = auVar29; + auVar30[0xd] = auVar23[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar30[0xe] = auVar23[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar30[0xf] = auVar23[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar19._0_8_ = + CONCAT44((int)(auVar23._4_4_ + (float)((ulong)auVar29._0_8_ >> 0x20)), + (int)(auVar23._0_4_ + fVar15)); + auVar19._8_4_ = (int)(auVar23._8_4_ + auVar29._8_4_); + auVar19._12_4_ = (int)(auVar23._12_4_ + auVar30._12_4_); + if (((DAT_00531f08 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f08), iVar5 != 0)) + { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar24._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar17 = auVar41._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531f00); + uVar17 = auVar41._0_8_; + if (iVar5 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar17 = auVar41._0_8_; + } + } + uVar1 = (int)uVar8 + 8; + uVar8 = (ulong)uVar1; + auVar3._8_8_ = auVar19._8_8_; + auVar3._0_8_ = auVar19._0_8_; + uVar39 = NEON_sqxtn(uVar17,auVar3,4); + sVar28 = -(ushort)(sVar28 == 0); + sVar31 = -(ushort)(sVar31 == 0); + sVar32 = -(ushort)(sVar32 == 0); + sVar33 = -(ushort)(sVar33 == 0); + sVar34 = -(ushort)(sVar34 == 0); + sVar35 = -(ushort)(sVar35 == 0); + sVar36 = -(ushort)(sVar36 == 0); + sVar37 = -(ushort)(sVar37 == 0); + fVar15 = (float)CONCAT13((byte)((uint)fVar16 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar16 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar16 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar16,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar18._0_8_ = + CONCAT17((byte)((uint)fVar25 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar25 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar25 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar25,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar15)))); + auVar18[8] = SUB41(fVar26,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar18[9] = (byte)((uint)fVar26 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar18[10] = (byte)((uint)fVar26 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar18[0xb] = (byte)((uint)fVar26 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar20[0xc] = SUB41(fVar27,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar20._0_12_ = auVar18; + auVar20[0xd] = (byte)((uint)fVar27 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar20[0xe] = (byte)((uint)fVar27 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar20[0xf] = (byte)((uint)fVar27 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar21._0_8_ = + CONCAT44((int)(fVar25 + (float)((ulong)auVar18._0_8_ >> 0x20)),(int)(fVar16 + fVar15) + ); + auVar21._8_4_ = (int)(fVar26 + auVar18._8_4_); + auVar21._12_4_ = (int)(fVar27 + auVar20._12_4_); + uVar17 = NEON_sqxtn(auVar21._0_8_,auVar21,4); + auVar22._0_8_ = + CONCAT17((byte)((ulong)uVar39 >> 0x38) & ~(byte)((ushort)sVar33 >> 8), + CONCAT16((byte)((ulong)uVar39 >> 0x30) & ~(byte)sVar33, + CONCAT15((byte)((ulong)uVar39 >> 0x28) & + ~(byte)((ushort)sVar32 >> 8), + CONCAT14((byte)((ulong)uVar39 >> 0x20) & ~(byte)sVar32, + CONCAT13((byte)((ulong)uVar39 >> 0x18) & + ~(byte)((ushort)sVar31 >> 8), + CONCAT12((byte)((ulong)uVar39 >> 0x10) & + ~(byte)sVar31, + CONCAT11((byte)((ulong)uVar39 + >> 8) & + ~(byte)((ushort)sVar28 + >> 8), + (byte)uVar39 & + ~(byte)sVar28))))))); + auVar22[8] = (byte)uVar17 & ~(byte)sVar34; + auVar22[9] = (byte)((ulong)uVar17 >> 8) & ~(byte)((ushort)sVar34 >> 8); + auVar22[10] = (byte)((ulong)uVar17 >> 0x10) & ~(byte)sVar35; + auVar22[0xb] = (byte)((ulong)uVar17 >> 0x18) & ~(byte)((ushort)sVar35 >> 8); + auVar22[0xc] = (byte)((ulong)uVar17 >> 0x20) & ~(byte)sVar36; + auVar22[0xd] = (byte)((ulong)uVar17 >> 0x28) & ~(byte)((ushort)sVar36 >> 8); + auVar22[0xe] = (byte)((ulong)uVar17 >> 0x30) & ~(byte)sVar37; + auVar22[0xf] = (byte)((ulong)uVar17 >> 0x38) & ~(byte)((ushort)sVar37 >> 8); + puVar13[1] = auVar22._8_8_; + *puVar13 = auVar22._0_8_; + psVar9 = psVar9 + 8; + psVar10 = psVar10 + 8; + puVar13 = puVar13 + 2; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar8 < iVar2) { + uVar14 = -(uVar8 >> 0x1f) & 0xfffffffe00000000 | uVar8 << 1; + lVar11 = 0; + lVar12 = ((ulong)(uint)((iVar2 + -1) - (int)uVar8) + 1) * 2; + do { + while( true ) { + uVar7 = 0; + iVar5 = (int)*(short *)((long)param_3 + lVar11 + uVar14); + if (iVar5 != 0) break; +LAB_00246ee8: + *(undefined2 *)((long)param_5 + lVar11 + uVar14) = uVar7; + lVar11 = lVar11 + 2; + if (lVar11 == lVar12) goto LAB_00246f44; + } + lVar6 = lrintf((fVar47 * (float)(int)*(short *)((long)param_1 + lVar11 + uVar14)) / + (float)iVar5); + uVar7 = (undefined2)lVar6; + if ((int)lVar6 + 0x8000U < 0x10000) goto LAB_00246ee8; + uVar7 = 0x7fff; + if ((int)lVar6 < 1) { + uVar7 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar11 + uVar14) = uVar7; + lVar11 = lVar11 + 2; + } while (lVar11 != lVar12); + } +LAB_00246f44: + iVar49 = iVar49 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_3 = (short *)((long)param_3 + (param_4 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar49 != 0); + } + return; +} + + +================================================================== + +### FUNC 00246fc8 (1004 bytes) name=FUN_00246fc8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00246fc8(undefined8 *param_1,long param_2,undefined8 *param_3,long param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + long lVar1; + int iVar2; + undefined1 auVar3 [16]; + char cVar4; + int iVar5; + long lVar6; + int iVar7; + undefined1 uVar8; + long lVar9; + undefined8 *puVar10; + undefined8 *puVar11; + long lVar12; + undefined8 *puVar13; + short sVar14; + undefined8 uVar15; + short sVar22; + short sVar23; + short sVar25; + short sVar26; + short sVar27; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + short sVar24; + short sVar28; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + float fVar29; + float fVar30; + float fVar36; + undefined1 auVar32 [12]; + float fVar37; + undefined1 auVar35 [16]; + float fVar38; + undefined8 uVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + float fVar46; + double dVar47; + int iVar48; + undefined1 auVar31 [12]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + + iVar2 = *param_7; + dVar47 = *param_8; + iVar48 = param_7[1]; + cVar4 = cv::checkHardwareSupport(3); + if (cVar4 == '\0') { + cVar4 = cv::checkHardwareSupport(100); + } + fVar46 = (float)dVar47; + if (iVar48 != 0) { + do { + iVar7 = 0; + if ((cVar4 != '\0') && + (puVar10 = param_3, puVar11 = param_1, puVar13 = param_5, 0 < iVar2 + -7)) { + do { + uVar15 = *puVar10; + sVar22 = (short)(char)((ulong)uVar15 >> 8); + sVar23 = (short)(char)((ulong)uVar15 >> 0x10); + sVar24 = (short)(char)((ulong)uVar15 >> 0x18); + sVar25 = (short)(char)((ulong)uVar15 >> 0x20); + sVar26 = (short)(char)((ulong)uVar15 >> 0x28); + sVar27 = (short)(char)((ulong)uVar15 >> 0x30); + sVar28 = (short)(char)((ulong)uVar15 >> 0x38); + auVar42._0_4_ = (int)(short)(char)uVar15; + auVar42._4_4_ = (int)sVar22; + auVar42._8_4_ = (int)sVar23; + auVar42._12_4_ = (int)sVar24; + auVar40._0_4_ = (int)sVar25; + auVar40._4_4_ = (int)sVar26; + auVar40._8_4_ = (int)sVar27; + auVar40._12_4_ = (int)sVar28; + auVar42 = NEON_scvtf(auVar42,4); + auVar40 = NEON_scvtf(auVar40,4); + auVar18 = NEON_frecpe(auVar42,4); + auVar43 = NEON_frecpe(auVar40,4); + uVar39 = *puVar11; + auVar45 = NEON_frecps(auVar42,auVar18,4); + auVar44 = NEON_frecps(auVar40,auVar43,4); + auVar19._0_4_ = auVar18._0_4_ * auVar45._0_4_; + auVar19._4_4_ = auVar18._4_4_ * auVar45._4_4_; + auVar19._8_4_ = auVar18._8_4_ * auVar45._8_4_; + auVar19._12_4_ = auVar18._12_4_ * auVar45._12_4_; + auVar45._0_4_ = auVar43._0_4_ * auVar44._0_4_; + auVar45._4_4_ = auVar43._4_4_ * auVar44._4_4_; + auVar45._8_4_ = auVar43._8_4_ * auVar44._8_4_; + auVar45._12_4_ = auVar43._12_4_ * auVar44._12_4_; + auVar43._0_4_ = (int)(short)(char)uVar39; + auVar43._4_4_ = (int)(short)(char)((ulong)uVar39 >> 8); + auVar43._8_4_ = (int)(short)(char)((ulong)uVar39 >> 0x10); + auVar43._12_4_ = (int)(short)(char)((ulong)uVar39 >> 0x18); + auVar44._0_4_ = (int)(short)(char)((ulong)uVar39 >> 0x20); + auVar44._4_4_ = (int)(short)(char)((ulong)uVar39 >> 0x28); + auVar44._8_4_ = (int)(short)(char)((ulong)uVar39 >> 0x30); + auVar44._12_4_ = (int)(short)(char)((ulong)uVar39 >> 0x38); + auVar42 = NEON_frecps(auVar42,auVar19,4); + auVar43 = NEON_scvtf(auVar43,4); + auVar44 = NEON_scvtf(auVar44,4); + auVar40 = NEON_frecps(auVar40,auVar45,4); + auVar18._0_8_ = + CONCAT44(fVar46 * auVar43._4_4_ * auVar19._4_4_ * auVar42._4_4_, + fVar46 * auVar43._0_4_ * auVar19._0_4_ * auVar42._0_4_); + auVar18._8_4_ = fVar46 * auVar43._8_4_ * auVar19._8_4_ * auVar42._8_4_; + auVar18._12_4_ = fVar46 * auVar43._12_4_ * auVar19._12_4_ * auVar42._12_4_; + fVar30 = fVar46 * auVar44._0_4_ * auVar45._0_4_ * auVar40._0_4_; + fVar36 = fVar46 * auVar44._4_4_ * auVar45._4_4_ * auVar40._4_4_; + fVar37 = fVar46 * auVar44._8_4_ * auVar45._8_4_ * auVar40._8_4_; + fVar38 = fVar46 * auVar44._12_4_ * auVar45._12_4_ * auVar40._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar39 = auVar18._8_8_; + iVar5 = __cxa_guard_acquire(&DAT_00531f08); + auVar18._8_8_ = uVar39; + if (iVar5 != 0) { + auVar20._8_4_ = 0x80000000; + auVar20._0_8_ = 0x8000000080000000; + auVar20._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar20._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f00), iVar5 != 0)) + { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar41[1] = bRam0000000000531ee1; + auVar41[0] = DAT_00531ee0; + auVar41[2] = bRam0000000000531ee2; + auVar41[3] = bRam0000000000531ee3; + auVar41[4] = bRam0000000000531ee4; + auVar41[5] = bRam0000000000531ee5; + auVar41[6] = bRam0000000000531ee6; + auVar41[7] = bRam0000000000531ee7; + auVar41[8] = bRam0000000000531ee8; + auVar41[9] = bRam0000000000531ee9; + auVar41[10] = bRam0000000000531eea; + auVar41[0xb] = bRam0000000000531eeb; + auVar41[0xc] = bRam0000000000531eec; + auVar41[0xd] = bRam0000000000531eed; + auVar41[0xe] = bRam0000000000531eee; + auVar41[0xf] = bRam0000000000531eef; + fVar29 = (float)CONCAT13(auVar18[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar18[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar18[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar18[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar31._0_8_ = + CONCAT17(auVar18[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar18[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar18[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar18[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar29)))); + auVar31[8] = auVar18[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar31[9] = auVar18[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar31[10] = auVar18[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar31[0xb] = auVar18[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar33[0xc] = auVar18[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar33._0_12_ = auVar31; + auVar33[0xd] = auVar18[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar33[0xe] = auVar18[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar33[0xf] = auVar18[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar16._0_8_ = + CONCAT44((int)(auVar18._4_4_ + (float)((ulong)auVar31._0_8_ >> 0x20)), + (int)(auVar18._0_4_ + fVar29)); + auVar16._8_4_ = (int)(auVar18._8_4_ + auVar31._8_4_); + auVar16._12_4_ = (int)(auVar18._12_4_ + auVar33._12_4_); + if (((DAT_00531f08 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531f08), iVar5 != 0)) + { + auVar21._8_4_ = 0x80000000; + auVar21._0_8_ = 0x8000000080000000; + auVar21._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar21._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar39 = auVar41._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531f00); + uVar39 = auVar41._0_8_; + if (iVar5 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar39 = auVar41._0_8_; + } + } + iVar7 = iVar7 + 8; + auVar3._8_8_ = auVar16._8_8_; + auVar3._0_8_ = auVar16._0_8_; + uVar39 = NEON_sqxtn(uVar39,auVar3,4); + sVar14 = -(ushort)((char)uVar15 == 0); + sVar22 = -(ushort)(sVar22 == 0); + sVar23 = -(ushort)(sVar23 == 0); + sVar24 = -(ushort)(sVar24 == 0); + sVar25 = -(ushort)(sVar25 == 0); + sVar26 = -(ushort)(sVar26 == 0); + sVar27 = -(ushort)(sVar27 == 0); + sVar28 = -(ushort)(sVar28 == 0); + fVar29 = (float)CONCAT13((byte)((uint)fVar30 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar30 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar30 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar30,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar32._0_8_ = + CONCAT17((byte)((uint)fVar36 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar36 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar36 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar36,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar29)))); + auVar32[8] = SUB41(fVar37,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar32[9] = (byte)((uint)fVar37 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar32[10] = (byte)((uint)fVar37 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar32[0xb] = (byte)((uint)fVar37 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar34[0xc] = SUB41(fVar38,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar34._0_12_ = auVar32; + auVar34[0xd] = (byte)((uint)fVar38 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar34[0xe] = (byte)((uint)fVar38 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar34[0xf] = (byte)((uint)fVar38 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar35._0_8_ = + CONCAT44((int)(fVar36 + (float)((ulong)auVar32._0_8_ >> 0x20)),(int)(fVar30 + fVar29) + ); + auVar35._8_4_ = (int)(fVar37 + auVar32._8_4_); + auVar35._12_4_ = (int)(fVar38 + auVar34._12_4_); + uVar15 = NEON_sqxtn(auVar35._0_8_,auVar35,4); + auVar17._0_8_ = + CONCAT17((byte)((ulong)uVar39 >> 0x38) & ~(byte)((ushort)sVar24 >> 8), + CONCAT16((byte)((ulong)uVar39 >> 0x30) & ~(byte)sVar24, + CONCAT15((byte)((ulong)uVar39 >> 0x28) & + ~(byte)((ushort)sVar23 >> 8), + CONCAT14((byte)((ulong)uVar39 >> 0x20) & ~(byte)sVar23, + CONCAT13((byte)((ulong)uVar39 >> 0x18) & + ~(byte)((ushort)sVar22 >> 8), + CONCAT12((byte)((ulong)uVar39 >> 0x10) & + ~(byte)sVar22, + CONCAT11((byte)((ulong)uVar39 + >> 8) & + ~(byte)((ushort)sVar14 + >> 8), + (byte)uVar39 & + ~(byte)sVar14))))))); + auVar17[8] = (byte)uVar15 & ~(byte)sVar25; + auVar17[9] = (byte)((ulong)uVar15 >> 8) & ~(byte)((ushort)sVar25 >> 8); + auVar17[10] = (byte)((ulong)uVar15 >> 0x10) & ~(byte)sVar26; + auVar17[0xb] = (byte)((ulong)uVar15 >> 0x18) & ~(byte)((ushort)sVar26 >> 8); + auVar17[0xc] = (byte)((ulong)uVar15 >> 0x20) & ~(byte)sVar27; + auVar17[0xd] = (byte)((ulong)uVar15 >> 0x28) & ~(byte)((ushort)sVar27 >> 8); + auVar17[0xe] = (byte)((ulong)uVar15 >> 0x30) & ~(byte)sVar28; + auVar17[0xf] = (byte)((ulong)uVar15 >> 0x38) & ~(byte)((ushort)sVar28 >> 8); + uVar15 = NEON_sqxtn(auVar17._0_8_,auVar17,2); + *puVar13 = uVar15; + puVar10 = puVar10 + 1; + puVar11 = puVar11 + 1; + puVar13 = puVar13 + 1; + } while (iVar7 < iVar2 + -7); + } + if (iVar7 < iVar2) { + lVar12 = 0; + lVar9 = (long)iVar7; + lVar1 = (ulong)(uint)((iVar2 + -1) - iVar7) + 1; + do { + while( true ) { + uVar8 = 0; + iVar7 = (int)*(char *)((long)param_3 + lVar12 + lVar9); + if (iVar7 != 0) break; +LAB_002472b4: + *(undefined1 *)((long)param_5 + lVar12 + lVar9) = uVar8; + lVar12 = lVar12 + 1; + if (lVar12 == lVar1) goto LAB_00247330; + } + lVar6 = lrintf((fVar46 * (float)(int)*(char *)((long)param_1 + lVar12 + lVar9)) / + (float)iVar7); + uVar8 = (undefined1)lVar6; + if ((int)lVar6 + 0x80U < 0x100) goto LAB_002472b4; + uVar8 = 0x7f; + if ((int)lVar6 < 1) { + uVar8 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar12 + lVar9) = uVar8; + lVar12 = lVar12 + 1; + } while (lVar12 != lVar1); + } +LAB_00247330: + iVar48 = iVar48 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_3 = (undefined8 *)((long)param_3 + param_4); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar48 != 0); + } + return; +} + + +================================================================== + +### FUNC 002473b4 (1008 bytes) name=FUN_002473b4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002473b4(ushort *param_1,ulong param_2,ushort *param_3,ulong param_4,undefined8 *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + ushort uVar2; + ushort uVar3; + ushort uVar4; + ushort uVar5; + ushort uVar6; + ushort uVar7; + ushort uVar8; + ushort uVar9; + undefined1 auVar10 [16]; + char cVar11; + int iVar12; + uint uVar13; + long lVar14; + ulong uVar15; + ushort *puVar16; + long lVar17; + ushort *puVar18; + long lVar19; + ulong uVar20; + undefined8 *puVar21; + float fVar22; + float fVar23; + undefined8 uVar24; + float fVar33; + undefined1 auVar26 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + float fVar32; + float fVar34; + undefined1 auVar31 [16]; + short sVar35; + short sVar38; + short sVar39; + short sVar40; + short sVar41; + undefined1 auVar36 [12]; + short sVar42; + short sVar43; + short sVar44; + undefined1 auVar45 [16]; + undefined8 uVar46; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + float fVar54; + double dVar55; + int iVar56; + undefined1 auVar25 [12]; + undefined1 auVar27 [16]; + undefined1 auVar37 [16]; + + dVar55 = *param_8; + iVar1 = *param_7; + iVar56 = param_7[1]; + cVar11 = cv::checkHardwareSupport(3); + if (cVar11 == '\0') { + cVar11 = cv::checkHardwareSupport(100); + } + fVar54 = (float)dVar55; + if (iVar56 != 0) { + do { + uVar15 = 0; + if ((cVar11 != '\0') && + (puVar16 = param_3, puVar18 = param_1, puVar21 = param_5, 0 < iVar1 + -7)) { + do { + uVar2 = *puVar16; + uVar3 = puVar16[1]; + uVar4 = puVar16[2]; + uVar5 = puVar16[3]; + uVar6 = puVar16[4]; + uVar7 = puVar16[5]; + uVar8 = puVar16[6]; + uVar9 = puVar16[7]; + auVar53._2_2_ = 0; + auVar53._0_2_ = uVar6; + auVar53._4_2_ = uVar7; + auVar53._6_2_ = 0; + auVar53._8_2_ = uVar8; + auVar53._10_2_ = 0; + auVar53._12_2_ = uVar9; + auVar53._14_2_ = 0; + auVar47 = NEON_scvtf(auVar53,4); + auVar49 = NEON_frecpe(auVar47,4); + auVar45._2_2_ = 0; + auVar45._0_2_ = uVar2; + auVar45._4_2_ = uVar3; + auVar45._6_2_ = 0; + auVar45._8_2_ = uVar4; + auVar45._10_2_ = 0; + auVar45._12_2_ = uVar5; + auVar45._14_2_ = 0; + auVar45 = NEON_scvtf(auVar45,4); + auVar53 = NEON_frecps(auVar47,auVar49,4); + auVar30 = NEON_frecpe(auVar45,4); + auVar50._0_4_ = auVar49._0_4_ * auVar53._0_4_; + auVar50._4_4_ = auVar49._4_4_ * auVar53._4_4_; + auVar50._8_4_ = auVar49._8_4_ * auVar53._8_4_; + auVar50._12_4_ = auVar49._12_4_ * auVar53._12_4_; + auVar51._2_2_ = 0; + auVar51._0_2_ = puVar18[4]; + auVar51._4_2_ = puVar18[5]; + auVar51._6_2_ = 0; + auVar51._8_2_ = puVar18[6]; + auVar51._10_2_ = 0; + auVar51._12_2_ = puVar18[7]; + auVar51._14_2_ = 0; + auVar51 = NEON_scvtf(auVar51,4); + auVar52 = NEON_frecps(auVar45,auVar30,4); + auVar53 = NEON_frecps(auVar47,auVar50,4); + auVar49._2_2_ = 0; + auVar49._0_2_ = *puVar18; + auVar49._4_2_ = puVar18[1]; + auVar49._6_2_ = 0; + auVar49._8_2_ = puVar18[2]; + auVar49._10_2_ = 0; + auVar49._12_2_ = puVar18[3]; + auVar49._14_2_ = 0; + auVar47._0_4_ = auVar30._0_4_ * auVar52._0_4_; + auVar47._4_4_ = auVar30._4_4_ * auVar52._4_4_; + auVar47._8_4_ = auVar30._8_4_ * auVar52._8_4_; + auVar47._12_4_ = auVar30._12_4_ * auVar52._12_4_; + auVar49 = NEON_scvtf(auVar49,4); + auVar45 = NEON_frecps(auVar45,auVar47,4); + fVar23 = fVar54 * auVar51._0_4_ * auVar50._0_4_ * auVar53._0_4_; + fVar32 = fVar54 * auVar51._4_4_ * auVar50._4_4_ * auVar53._4_4_; + fVar33 = fVar54 * auVar51._8_4_ * auVar50._8_4_ * auVar53._8_4_; + fVar34 = fVar54 * auVar51._12_4_ * auVar50._12_4_ * auVar53._12_4_; + auVar30._0_8_ = + CONCAT44(fVar54 * auVar49._4_4_ * auVar47._4_4_ * auVar45._4_4_, + fVar54 * auVar49._0_4_ * auVar47._0_4_ * auVar45._0_4_); + auVar30._8_4_ = fVar54 * auVar49._8_4_ * auVar47._8_4_ * auVar45._8_4_; + auVar30._12_4_ = fVar54 * auVar49._12_4_ * auVar47._12_4_ * auVar45._12_4_; + if ((DAT_00531f08 & 1) == 0) { + uVar24 = auVar30._8_8_; + iVar12 = __cxa_guard_acquire(&DAT_00531f08); + auVar30._8_8_ = uVar24; + if (iVar12 != 0) { + auVar52._8_4_ = 0x80000000; + auVar52._0_8_ = 0x8000000080000000; + auVar52._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar52._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + } + if (((DAT_00531f00 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531f00), iVar12 != 0)) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + } + auVar48[1] = bRam0000000000531ee1; + auVar48[0] = DAT_00531ee0; + auVar48[2] = bRam0000000000531ee2; + auVar48[3] = bRam0000000000531ee3; + auVar48[4] = bRam0000000000531ee4; + auVar48[5] = bRam0000000000531ee5; + auVar48[6] = bRam0000000000531ee6; + auVar48[7] = bRam0000000000531ee7; + auVar48[8] = bRam0000000000531ee8; + auVar48[9] = bRam0000000000531ee9; + auVar48[10] = bRam0000000000531eea; + auVar48[0xb] = bRam0000000000531eeb; + auVar48[0xc] = bRam0000000000531eec; + auVar48[0xd] = bRam0000000000531eed; + auVar48[0xe] = bRam0000000000531eee; + auVar48[0xf] = bRam0000000000531eef; + fVar22 = (float)CONCAT13(auVar30[3] & bRam0000000000531ef3 | bRam0000000000531ee3, + CONCAT12(auVar30[2] & bRam0000000000531ef2 | bRam0000000000531ee2 + ,CONCAT11(auVar30[1] & DAT_00531ef0_1 | + bRam0000000000531ee1, + auVar30[0] & DAT_00531ef0 | DAT_00531ee0))); + auVar36._0_8_ = + CONCAT17(auVar30[7] & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16(auVar30[6] & bRam0000000000531ef6 | bRam0000000000531ee6, + CONCAT15(auVar30[5] & bRam0000000000531ef5 | bRam0000000000531ee5, + CONCAT14(auVar30[4] & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar22)))); + auVar36[8] = auVar30[8] & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar36[9] = auVar30[9] & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9; + auVar36[10] = auVar30[10] & bRam0000000000531efa | bRam0000000000531eea; + auVar36[0xb] = auVar30[0xb] & bRam0000000000531efb | bRam0000000000531eeb; + auVar37[0xc] = auVar30[0xc] & bRam0000000000531efc | bRam0000000000531eec; + auVar37._0_12_ = auVar36; + auVar37[0xd] = auVar30[0xd] & bRam0000000000531efd | bRam0000000000531eed; + auVar37[0xe] = auVar30[0xe] & bRam0000000000531efe | bRam0000000000531eee; + auVar37[0xf] = auVar30[0xf] & bRam0000000000531eff | bRam0000000000531eef; + auVar26._0_8_ = + CONCAT44((int)(auVar30._4_4_ + (float)((ulong)auVar36._0_8_ >> 0x20)), + (int)(auVar30._0_4_ + fVar22)); + auVar26._8_4_ = (int)(auVar30._8_4_ + auVar36._8_4_); + auVar26._12_4_ = (int)(auVar30._12_4_ + auVar37._12_4_); + if (((DAT_00531f08 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531f08), iVar12 != 0)) { + auVar31._8_4_ = 0x80000000; + auVar31._0_8_ = 0x8000000080000000; + auVar31._12_4_ = 0x80000000; + _uRam0000000000531ef8 = auVar31._8_8_; + _DAT_00531ef0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531f08); + } + uVar24 = auVar48._0_8_; + if ((DAT_00531f00 & 1) == 0) { + iVar12 = __cxa_guard_acquire(&DAT_00531f00); + uVar24 = auVar48._0_8_; + if (iVar12 != 0) { + bRam0000000000531ee8 = 0; + bRam0000000000531ee9 = 0; + bRam0000000000531eea = 0; + bRam0000000000531eeb = 0x3f; + bRam0000000000531eec = 0; + bRam0000000000531eed = 0; + bRam0000000000531eee = 0; + bRam0000000000531eef = 0x3f; + DAT_00531ee0 = 0; + bRam0000000000531ee1 = 0; + bRam0000000000531ee2 = 0; + bRam0000000000531ee3 = 0x3f; + bRam0000000000531ee4 = 0; + bRam0000000000531ee5 = 0; + bRam0000000000531ee6 = 0; + bRam0000000000531ee7 = 0x3f; + __cxa_guard_release(&DAT_00531f00); + uVar24 = auVar48._0_8_; + } + } + uVar13 = (int)uVar15 + 8; + uVar15 = (ulong)uVar13; + auVar10._8_8_ = auVar26._8_8_; + auVar10._0_8_ = auVar26._0_8_; + uVar46 = NEON_sqxtun(uVar24,auVar10,4); + sVar35 = -(ushort)(uVar2 == 0); + sVar38 = -(ushort)(uVar3 == 0); + sVar39 = -(ushort)(uVar4 == 0); + sVar40 = -(ushort)(uVar5 == 0); + sVar41 = -(ushort)(uVar6 == 0); + sVar42 = -(ushort)(uVar7 == 0); + sVar43 = -(ushort)(uVar8 == 0); + sVar44 = -(ushort)(uVar9 == 0); + fVar22 = (float)CONCAT13((byte)((uint)fVar23 >> 0x18) & bRam0000000000531ef3 | + bRam0000000000531ee3, + CONCAT12((byte)((uint)fVar23 >> 0x10) & bRam0000000000531ef2 | + bRam0000000000531ee2, + CONCAT11((byte)((uint)fVar23 >> 8) & DAT_00531ef0_1 | + bRam0000000000531ee1, + SUB41(fVar23,0) & DAT_00531ef0 | DAT_00531ee0)) + ); + auVar25._0_8_ = + CONCAT17((byte)((uint)fVar32 >> 0x18) & bRam0000000000531ef7 | bRam0000000000531ee7, + CONCAT16((byte)((uint)fVar32 >> 0x10) & bRam0000000000531ef6 | + bRam0000000000531ee6, + CONCAT15((byte)((uint)fVar32 >> 8) & bRam0000000000531ef5 | + bRam0000000000531ee5, + CONCAT14(SUB41(fVar32,0) & bRam0000000000531ef4 | + bRam0000000000531ee4,fVar22)))); + auVar25[8] = SUB41(fVar33,0) & (byte)uRam0000000000531ef8 | bRam0000000000531ee8; + auVar25[9] = (byte)((uint)fVar33 >> 8) & uRam0000000000531ef8._1_1_ | bRam0000000000531ee9 + ; + auVar25[10] = (byte)((uint)fVar33 >> 0x10) & bRam0000000000531efa | bRam0000000000531eea; + auVar25[0xb] = (byte)((uint)fVar33 >> 0x18) & bRam0000000000531efb | bRam0000000000531eeb; + auVar27[0xc] = SUB41(fVar34,0) & bRam0000000000531efc | bRam0000000000531eec; + auVar27._0_12_ = auVar25; + auVar27[0xd] = (byte)((uint)fVar34 >> 8) & bRam0000000000531efd | bRam0000000000531eed; + auVar27[0xe] = (byte)((uint)fVar34 >> 0x10) & bRam0000000000531efe | bRam0000000000531eee; + auVar27[0xf] = (byte)((uint)fVar34 >> 0x18) & bRam0000000000531eff | bRam0000000000531eef; + auVar28._0_8_ = + CONCAT44((int)(fVar32 + (float)((ulong)auVar25._0_8_ >> 0x20)),(int)(fVar23 + fVar22) + ); + auVar28._8_4_ = (int)(fVar33 + auVar25._8_4_); + auVar28._12_4_ = (int)(fVar34 + auVar27._12_4_); + uVar24 = NEON_sqxtun(auVar28._0_8_,auVar28,4); + auVar29._0_8_ = + CONCAT17((byte)((ulong)uVar46 >> 0x38) & ~(byte)((ushort)sVar40 >> 8), + CONCAT16((byte)((ulong)uVar46 >> 0x30) & ~(byte)sVar40, + CONCAT15((byte)((ulong)uVar46 >> 0x28) & + ~(byte)((ushort)sVar39 >> 8), + CONCAT14((byte)((ulong)uVar46 >> 0x20) & ~(byte)sVar39, + CONCAT13((byte)((ulong)uVar46 >> 0x18) & + ~(byte)((ushort)sVar38 >> 8), + CONCAT12((byte)((ulong)uVar46 >> 0x10) & + ~(byte)sVar38, + CONCAT11((byte)((ulong)uVar46 + >> 8) & + ~(byte)((ushort)sVar35 + >> 8), + (byte)uVar46 & + ~(byte)sVar35))))))); + auVar29[8] = (byte)uVar24 & ~(byte)sVar41; + auVar29[9] = (byte)((ulong)uVar24 >> 8) & ~(byte)((ushort)sVar41 >> 8); + auVar29[10] = (byte)((ulong)uVar24 >> 0x10) & ~(byte)sVar42; + auVar29[0xb] = (byte)((ulong)uVar24 >> 0x18) & ~(byte)((ushort)sVar42 >> 8); + auVar29[0xc] = (byte)((ulong)uVar24 >> 0x20) & ~(byte)sVar43; + auVar29[0xd] = (byte)((ulong)uVar24 >> 0x28) & ~(byte)((ushort)sVar43 >> 8); + auVar29[0xe] = (byte)((ulong)uVar24 >> 0x30) & ~(byte)sVar44; + auVar29[0xf] = (byte)((ulong)uVar24 >> 0x38) & ~(byte)((ushort)sVar44 >> 8); + puVar21[1] = auVar29._8_8_; + *puVar21 = auVar29._0_8_; + puVar16 = puVar16 + 8; + puVar18 = puVar18 + 8; + puVar21 = puVar21 + 2; + } while ((int)uVar13 < iVar1 + -7); + } + if ((int)uVar15 < iVar1) { + uVar20 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + lVar17 = 0; + lVar19 = ((ulong)(uint)((iVar1 + -1) - (int)uVar15) + 1) * 2; + do { + while( true ) { + uVar2 = *(ushort *)((long)param_3 + lVar17 + uVar20); + if (uVar2 == 0) break; + lVar14 = lrintf((fVar54 * (float)*(ushort *)((long)param_1 + lVar17 + uVar20)) / + (float)uVar2); + uVar13 = (uint)lVar14; + if (0xffff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + *(short *)((long)param_5 + lVar17 + uVar20) = (short)uVar13; + lVar17 = lVar17 + 2; + if (lVar17 == lVar19) goto LAB_00247720; + } + *(undefined2 *)((long)param_5 + lVar17 + uVar20) = 0; + lVar17 = lVar17 + 2; + } while (lVar17 != lVar19); + } +LAB_00247720: + iVar56 = iVar56 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_3 = (ushort *)((long)param_3 + (param_4 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar56 != 0); + } + return; +} + + +================================================================== + +### FUNC 002477a4 (3040 bytes) name=FUN_002477a4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002477a4(ushort *param_1,ulong param_2,undefined1 (*param_3) [16],ulong param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + ushort *puVar11; + int iVar12; + uint uVar13; + uint uVar14; + undefined8 *puVar15; + ulong uVar16; + long lVar17; + long lVar18; + ushort *puVar19; + ushort *puVar20; + short sVar21; + long lVar22; + long lVar23; + long lVar24; + ushort *puVar25; + long lVar26; + uint uVar27; + undefined1 (*pauVar28) [16]; + undefined1 (*pauVar29) [16]; + uint uVar30; + ushort *puVar31; + ulong uVar32; + undefined2 *puVar33; + undefined8 uVar34; + float fVar44; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + float fVar57; + undefined4 uVar58; + undefined4 uVar59; + int iVar60; + int iVar61; + + iVar3 = *param_7; + iVar61 = param_7[1]; + fVar57 = (float)*param_8; + if (fVar57 == 1.0) { + if (iVar61 != 0) { + uVar5 = iVar3 - 8U >> 3; + lVar22 = NEON_shl(param_6 >> 1,1); + uVar4 = (uVar5 + 1) * 8; + if (iVar3 + -7 < 1) { + uVar4 = 0; + } + uVar7 = (iVar3 + -4) - uVar4; + uVar14 = uVar7 >> 2; + lVar18 = (long)(int)uVar4; + uVar13 = uVar4 + 4 + uVar14 * 4; + uVar6 = (uVar14 - 1 >> 1) + 1; + lVar17 = lVar18 * 2; + do { + if (0 < iVar3 + -7) { + pauVar28 = param_3; + puVar31 = param_1; + puVar15 = param_5; + do { + auVar53 = *pauVar28; + puVar19 = puVar31 + 4; + puVar20 = puVar31 + 5; + puVar25 = puVar31 + 6; + puVar11 = puVar31 + 7; + auVar39._2_2_ = 0; + auVar39._0_2_ = *puVar31; + auVar39._4_2_ = puVar31[1]; + auVar39._6_2_ = 0; + auVar39._8_2_ = puVar31[2]; + auVar39._10_2_ = 0; + auVar39._12_2_ = puVar31[3]; + auVar39._14_2_ = 0; + auVar46 = NEON_ucvtf(auVar39,4); + puVar31 = puVar31 + 8; + auVar45._2_2_ = 0; + auVar45._0_2_ = auVar53._0_2_; + auVar45._4_2_ = auVar53._2_2_; + auVar45._6_2_ = 0; + auVar45._8_2_ = auVar53._4_2_; + auVar45._10_2_ = 0; + auVar45._12_2_ = auVar53._6_2_; + auVar45._14_2_ = 0; + auVar56._2_2_ = 0; + auVar56._0_2_ = *puVar19; + auVar56._4_2_ = *puVar20; + auVar56._6_2_ = 0; + auVar56._8_2_ = *puVar25; + auVar56._10_2_ = 0; + auVar56._12_2_ = *puVar11; + auVar56._14_2_ = 0; + auVar39 = NEON_ucvtf(auVar45,4); + pauVar28 = pauVar28 + 1; + auVar56 = NEON_ucvtf(auVar56,4); + auVar50._2_2_ = 0; + auVar50._0_2_ = auVar53._8_2_; + auVar50._4_2_ = auVar53._10_2_; + auVar50._6_2_ = 0; + auVar50._8_2_ = auVar53._12_2_; + auVar50._10_2_ = 0; + auVar50._12_2_ = auVar53._14_2_; + auVar50._14_2_ = 0; + auVar45 = NEON_ucvtf(auVar50,4); + fVar57 = auVar46._0_4_ * auVar39._0_4_; + fVar44 = auVar46._4_4_ * auVar39._4_4_; + auVar47._0_8_ = CONCAT44(fVar44,fVar57); + auVar47._8_4_ = auVar46._8_4_ * auVar39._8_4_; + auVar47._12_4_ = auVar46._12_4_ * auVar39._12_4_; + auVar53 = auVar47; + if ((DAT_00531ec0 & 1) == 0) { + iVar12 = __cxa_guard_acquire(&DAT_00531ec0); + auVar53._8_8_ = auVar47._8_8_; + auVar53._0_8_ = auVar47._0_8_; + if (iVar12 == 0) goto LAB_00247fe8; + auVar53 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar53._8_8_; + _DAT_00531e90 = auVar53._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar12 = (int)(fVar57 + (float)_DAT_00531e90); + iVar60 = (int)(fVar44 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar10._4_4_ = iVar60; + auVar10._0_4_ = iVar12; + auVar10._8_4_ = (int)(auVar47._8_4_ + (float)uRam0000000000531e98); + auVar10._12_4_ = (int)(auVar47._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar34 = NEON_uqxtn(CONCAT44(iVar60,iVar12),auVar10,4); + uVar58 = (undefined4)uVar34; + uVar59 = (undefined4)((ulong)uVar34 >> 0x20); + } + else { +LAB_00247fe8: + iVar12 = (int)(auVar53._0_4_ + (float)_DAT_00531e90); + iVar60 = (int)(auVar53._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar46._4_4_ = iVar60; + auVar46._0_4_ = iVar12; + auVar46._8_4_ = (int)(auVar53._8_4_ + (float)uRam0000000000531e98); + auVar46._12_4_ = (int)(auVar53._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar34 = NEON_uqxtn(CONCAT44(iVar60,iVar12),auVar46,4); + uVar58 = (undefined4)uVar34; + uVar59 = (undefined4)((ulong)uVar34 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531ec0), iVar12 != 0)) { + auVar53 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar53._8_8_; + _DAT_00531e90 = auVar53._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar43._0_8_ = + CONCAT44((int)(auVar56._4_4_ * auVar45._4_4_ + DAT_00531e90_4), + (int)(auVar56._0_4_ * auVar45._0_4_ + _DAT_00531e90)); + auVar43._8_4_ = (int)(auVar56._8_4_ * auVar45._8_4_ + (float)uRam0000000000531e98); + auVar43._12_4_ = (int)(auVar56._12_4_ * auVar45._12_4_ + uRam0000000000531e98._4_4_); + uVar34 = NEON_uqxtn(auVar43._0_8_,auVar43,4); + puVar15[1] = uVar34; + *puVar15 = CONCAT44(uVar59,uVar58); + puVar15 = puVar15 + 2; + } while (puVar31 != param_1 + ((ulong)uVar5 + 1) * 8); + } + uVar1 = uVar4; + if ((int)uVar4 < iVar3 + -3) { + puVar31 = (ushort *)((long)param_5 + lVar17 + 0x40); + puVar19 = param_1 + lVar18; + puVar20 = (ushort *)((long)param_5 + lVar17); + puVar25 = (ushort *)(*param_3 + lVar17); + uVar1 = uVar13; + if ((puVar19 < puVar31 && puVar20 < param_1 + lVar18 + 0x20 || + puVar25 < puVar31 && puVar20 < param_3[4] + lVar17) || (uVar14 + 1 < 3)) { + do { + puVar31 = puVar19 + 4; + iVar12 = (uint)*puVar19 * (uint)*puVar25; + iVar60 = (uint)puVar19[1] * (uint)puVar25[1]; + if (0xffff < iVar12) { + iVar12 = -1; + } + *puVar20 = (ushort)iVar12; + if (0xffff < iVar60) { + iVar60 = -1; + } + puVar20[1] = (ushort)iVar60; + iVar12 = (uint)puVar19[2] * (uint)puVar25[2]; + iVar60 = (uint)puVar19[3] * (uint)puVar25[3]; + if (0xffff < iVar12) { + iVar12 = -1; + } + if (0xffff < iVar60) { + iVar60 = -1; + } + puVar20[2] = (ushort)iVar12; + puVar20[3] = (ushort)iVar60; + puVar19 = puVar31; + puVar20 = puVar20 + 4; + puVar25 = puVar25 + 4; + } while (puVar31 != param_1 + lVar18 + 4 + (ulong)uVar14 * 4); + } + else { + uVar27 = uVar4; + if (3 < uVar7) { + lVar26 = 0; + uVar27 = 0; + do { + auVar54._8_4_ = 0xffff; + auVar54._0_8_ = 0xffff0000ffff; + auVar54._12_4_ = 0xffff; + puVar15 = (undefined8 *)((long)puVar20 + lVar26); + auVar53 = *(undefined1 (*) [16])((long)puVar19 + lVar26); + uVar27 = uVar27 + 1; + auVar39 = *(undefined1 (*) [16])((long)puVar25 + lVar26); + lVar26 = lVar26 + 0x10; + auVar45 = NEON_umull(auVar39._0_8_,auVar53._0_8_,2); + auVar41._0_4_ = (uint)auVar39._8_2_ * (uint)auVar53._8_2_; + auVar41._4_4_ = (uint)auVar39._10_2_ * (uint)auVar53._10_2_; + auVar41._8_4_ = (uint)auVar39._12_2_ * (uint)auVar53._12_2_; + auVar41._12_4_ = (uint)auVar39._14_2_ * (uint)auVar53._14_2_; + auVar39 = NEON_smin(auVar45,auVar54,4); + auVar53 = NEON_smin(auVar41,auVar54,4); + auVar48._0_8_ = + CONCAT26(auVar39._12_2_, + CONCAT24(auVar39._8_2_,CONCAT22(auVar39._4_2_,auVar39._0_2_))); + auVar48._8_2_ = auVar53._0_2_; + auVar48._10_2_ = auVar53._4_2_; + auVar48._12_2_ = auVar53._8_2_; + auVar48._14_2_ = auVar53._12_2_; + puVar15[1] = auVar48._8_8_; + *puVar15 = auVar48._0_8_; + } while (uVar27 < uVar6); + uVar27 = uVar4 + uVar6 * 8; + if (uVar14 + 1 == uVar6 * 2) goto LAB_00247b4c; + } + uVar32 = -(ulong)(uVar27 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar27 << 1; + lVar26 = uVar32 + 2; + lVar23 = uVar32 + 4; + lVar24 = uVar32 + 6; + iVar12 = (uint)*(ushort *)((long)param_1 + uVar32) * + (uint)*(ushort *)(*param_3 + uVar32); + iVar60 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + uVar32) = (short)iVar12; + if (0xffff < iVar60) { + iVar60 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar60; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar23) * + (uint)*(ushort *)(*param_3 + lVar23); + iVar60 = (uint)*(ushort *)((long)param_1 + lVar24) * + (uint)*(ushort *)(*param_3 + lVar24); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar23) = (short)iVar12; + if (0xffff < iVar60) { + iVar60 = -1; + } + *(short *)((long)param_5 + lVar24) = (short)iVar60; + } + } +LAB_00247b4c: + uVar32 = (ulong)uVar1; + if ((int)uVar1 < iVar3) { + lVar23 = (long)(int)uVar1; + lVar26 = lVar23 * 2; + puVar31 = (ushort *)((long)param_5 + lVar26); + uVar27 = iVar3 - uVar1; + puVar19 = param_1 + lVar23; + puVar20 = (ushort *)((long)param_5 + lVar26 + 0x10); + if ((puVar31 < param_1 + lVar23 + 8 && puVar19 < puVar20 || + *param_3 + lVar26 < puVar20 && puVar31 < param_3[1] + lVar26) || (uVar27 < 0xb)) { + lVar23 = 0; + do { + iVar12 = (uint)*(ushort *)((long)puVar19 + lVar23) * + (uint)*(ushort *)((long)(*param_3 + lVar26) + lVar23); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)puVar31 + lVar23) = (short)iVar12; + lVar23 = lVar23 + 2; + } while (lVar23 != ((ulong)((iVar3 + -1) - uVar1) + 1) * 2); + } + else { + uVar2 = -((uint)((ulong)puVar19 >> 1) & 7) & 7; + if (uVar27 < uVar2) { + uVar2 = uVar27; + } + if (uVar2 != 0) { + lVar24 = lVar23 * 2; + iVar12 = (uint)param_1[lVar23] * (uint)*(ushort *)(*param_3 + lVar24); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24) = (short)iVar12; + if (uVar2 == 1) { + uVar32 = (ulong)(uVar1 + 1); + } + else { + uVar30 = uVar1 + 2; + iVar12 = (uint)param_1[lVar23 + 1] * (uint)*(ushort *)(*param_3 + lVar24 + 2); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24 + 2) = (short)iVar12; + if (uVar2 != 2) { + uVar30 = uVar1 + 3; + iVar12 = (uint)param_1[lVar23 + 2] * (uint)*(ushort *)(*param_3 + lVar24 + 4); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24 + 4) = (short)iVar12; + if (uVar2 != 3) { + uVar30 = uVar1 + 4; + iVar12 = (uint)param_1[lVar23 + 3] * (uint)*(ushort *)(*param_3 + lVar24 + 6); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24 + 6) = (short)iVar12; + if (uVar2 != 4) { + uVar30 = uVar1 + 5; + iVar12 = (uint)param_1[lVar23 + 4] * (uint)*(ushort *)(*param_3 + lVar24 + 8); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24 + 8) = (short)iVar12; + if (uVar2 != 5) { + uVar30 = uVar1 + 6; + iVar12 = (uint)param_1[lVar23 + 5] * + (uint)*(ushort *)(*param_3 + lVar24 + 10); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24 + 10) = (short)iVar12; + if (uVar2 == 7) { + uVar32 = (ulong)(uVar1 + 7); + iVar12 = (uint)param_1[lVar23 + 6] * + (uint)*(ushort *)(*param_3 + lVar24 + 0xc); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar24 + 0xc) = (short)iVar12; + goto LAB_00247cf0; + } + } + } + } + } + uVar32 = (ulong)uVar30; + } + } +LAB_00247cf0: + uVar1 = ((uVar27 - uVar2) - 8 >> 3) + 1; + iVar12 = uVar1 * 8; + if (6 < (uVar27 - 1) - uVar2) { + lVar24 = (ulong)uVar2 * 2; + uVar30 = 0; + puVar15 = (undefined8 *)((long)param_5 + lVar26 + lVar24); + pauVar28 = (undefined1 (*) [16])(*param_3 + lVar24 + lVar26); + pauVar29 = (undefined1 (*) [16])(param_1 + (ulong)uVar2 + lVar23); + do { + auVar53 = *pauVar29; + auVar55._8_4_ = 0xffff; + auVar55._0_8_ = 0xffff0000ffff; + auVar55._12_4_ = 0xffff; + auVar39 = *pauVar28; + uVar30 = uVar30 + 1; + auVar45 = NEON_umull(auVar39._0_8_,auVar53._0_8_,2); + auVar42._0_4_ = (uint)auVar39._8_2_ * (uint)auVar53._8_2_; + auVar42._4_4_ = (uint)auVar39._10_2_ * (uint)auVar53._10_2_; + auVar42._8_4_ = (uint)auVar39._12_2_ * (uint)auVar53._12_2_; + auVar42._12_4_ = (uint)auVar39._14_2_ * (uint)auVar53._14_2_; + auVar39 = NEON_smin(auVar45,auVar55,4); + auVar53 = NEON_smin(auVar42,auVar55,4); + auVar49._0_8_ = + CONCAT26(auVar39._12_2_, + CONCAT24(auVar39._8_2_,CONCAT22(auVar39._4_2_,auVar39._0_2_))); + auVar49._8_2_ = auVar53._0_2_; + auVar49._10_2_ = auVar53._4_2_; + auVar49._12_2_ = auVar53._8_2_; + auVar49._14_2_ = auVar53._12_2_; + puVar15[1] = auVar49._8_8_; + *puVar15 = auVar49._0_8_; + puVar15 = puVar15 + 2; + pauVar28 = pauVar28 + 1; + pauVar29 = pauVar29 + 1; + } while (uVar30 < uVar1); + uVar32 = (ulong)(uint)((int)uVar32 + iVar12); + if (iVar12 == uVar27 - uVar2) goto LAB_00247e7c; + } + uVar16 = -(uVar32 >> 0x1f) & 0xfffffffe00000000 | uVar32 << 1; + iVar60 = (int)uVar32; + iVar12 = (uint)*(ushort *)((long)param_1 + uVar16) * + (uint)*(ushort *)(*param_3 + uVar16); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + uVar16) = (short)iVar12; + if (iVar60 + 1 < iVar3) { + lVar26 = uVar16 + 2; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar12; + if (iVar60 + 2 < iVar3) { + lVar26 = uVar16 + 4; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar12; + if (iVar60 + 3 < iVar3) { + lVar26 = uVar16 + 6; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar12; + if (iVar60 + 4 < iVar3) { + lVar26 = uVar16 + 8; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar12; + if (iVar60 + 5 < iVar3) { + lVar26 = uVar16 + 10; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar12; + if (iVar60 + 6 < iVar3) { + lVar26 = uVar16 + 0xc; + iVar12 = (uint)*(ushort *)((long)param_1 + lVar26) * + (uint)*(ushort *)(*param_3 + lVar26); + if (0xffff < iVar12) { + iVar12 = -1; + } + *(short *)((long)param_5 + lVar26) = (short)iVar12; + } + } + } + } + } + } + } + } +LAB_00247e7c: + iVar61 = iVar61 + -1; + param_1 = param_1 + (param_2 >> 1); + param_3 = (undefined1 (*) [16])(*param_3 + (param_4 >> 1) * 2); + param_5 = (undefined8 *)((long)param_5 + lVar22); + } while (iVar61 != 0); + } + } + else if (iVar61 != 0) { + uVar5 = iVar3 - 8U >> 3; + uVar4 = (uVar5 + 1) * 8; + if (iVar3 + -7 < 1) { + uVar4 = 0; + } + uVar6 = (iVar3 + -4) - uVar4 >> 2; + lVar22 = (long)(int)uVar4; + do { + if (0 < iVar3 + -7) { + puVar15 = param_5; + pauVar28 = param_3; + puVar31 = param_1; + do { + auVar53 = *pauVar28; + auVar51._2_2_ = 0; + auVar51._0_2_ = puVar31[4]; + auVar51._4_2_ = puVar31[5]; + auVar51._6_2_ = 0; + auVar51._8_2_ = puVar31[6]; + auVar51._10_2_ = 0; + auVar51._12_2_ = puVar31[7]; + auVar51._14_2_ = 0; + auVar37._2_2_ = 0; + auVar37._0_2_ = *puVar31; + auVar37._4_2_ = puVar31[1]; + auVar37._6_2_ = 0; + auVar37._8_2_ = puVar31[2]; + auVar37._10_2_ = 0; + auVar37._12_2_ = puVar31[3]; + auVar37._14_2_ = 0; + auVar45 = NEON_ucvtf(auVar37,4); + auVar38._2_2_ = 0; + auVar38._0_2_ = auVar53._0_2_; + auVar38._4_2_ = auVar53._2_2_; + auVar38._6_2_ = 0; + auVar38._8_2_ = auVar53._4_2_; + auVar38._10_2_ = 0; + auVar38._12_2_ = auVar53._6_2_; + auVar38._14_2_ = 0; + auVar47 = NEON_ucvtf(auVar51,4); + puVar31 = puVar31 + 8; + auVar39 = NEON_ucvtf(auVar38,4); + pauVar28 = pauVar28 + 1; + auVar52._2_2_ = 0; + auVar52._0_2_ = auVar53._8_2_; + auVar52._4_2_ = auVar53._10_2_; + auVar52._6_2_ = 0; + auVar52._8_2_ = auVar53._12_2_; + auVar52._10_2_ = 0; + auVar52._12_2_ = auVar53._14_2_; + auVar52._14_2_ = 0; + auVar53 = NEON_ucvtf(auVar52,4); + auVar40._0_4_ = auVar45._0_4_ * auVar39._0_4_ * fVar57; + auVar40._4_4_ = auVar45._4_4_ * auVar39._4_4_ * fVar57; + auVar40._8_4_ = auVar45._8_4_ * auVar39._8_4_ * fVar57; + auVar40._12_4_ = auVar45._12_4_ * auVar39._12_4_ * fVar57; + auVar35 = auVar40; + if ((DAT_00531ec0 & 1) == 0) { + iVar12 = __cxa_guard_acquire(&DAT_00531ec0); + auVar35._4_4_ = auVar40._4_4_; + auVar35._0_4_ = auVar40._0_4_; + auVar35._8_8_ = auVar40._8_8_; + if (iVar12 == 0) goto LAB_002478e4; + auVar39 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar39._8_8_; + _DAT_00531e90 = auVar39._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar12 = (int)(auVar40._0_4_ + (float)_DAT_00531e90); + iVar60 = (int)(auVar40._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar8._4_4_ = iVar60; + auVar8._0_4_ = iVar12; + auVar8._8_4_ = (int)(auVar40._8_4_ + (float)uRam0000000000531e98); + auVar8._12_4_ = (int)(auVar40._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar34 = NEON_uqxtn(CONCAT44(iVar60,iVar12),auVar8,4); + uVar58 = (undefined4)uVar34; + uVar59 = (undefined4)((ulong)uVar34 >> 0x20); + } + else { +LAB_002478e4: + iVar12 = (int)(auVar35._0_4_ + (float)_DAT_00531e90); + iVar60 = (int)(auVar35._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar9._4_4_ = iVar60; + auVar9._0_4_ = iVar12; + auVar9._8_4_ = (int)(auVar35._8_4_ + (float)uRam0000000000531e98); + auVar9._12_4_ = (int)(auVar35._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar34 = NEON_uqxtn(CONCAT44(iVar60,iVar12),auVar9,4); + uVar58 = (undefined4)uVar34; + uVar59 = (undefined4)((ulong)uVar34 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531ec0), iVar12 != 0)) { + auVar39 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar39._8_8_; + _DAT_00531e90 = auVar39._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar36._0_8_ = + CONCAT44((int)(auVar47._4_4_ * auVar53._4_4_ * fVar57 + DAT_00531e90_4), + (int)(auVar47._0_4_ * auVar53._0_4_ * fVar57 + _DAT_00531e90)); + auVar36._8_4_ = + (int)(auVar47._8_4_ * auVar53._8_4_ * fVar57 + (float)uRam0000000000531e98); + auVar36._12_4_ = + (int)(auVar47._12_4_ * auVar53._12_4_ * fVar57 + uRam0000000000531e98._4_4_); + uVar34 = NEON_uqxtn(auVar36._0_8_,auVar36,4); + puVar15[1] = uVar34; + *puVar15 = CONCAT44(uVar59,uVar58); + puVar15 = puVar15 + 2; + } while (puVar31 != param_1 + ((ulong)uVar5 + 1) * 8); + } + uVar13 = uVar4; + if ((int)uVar4 < iVar3 + -3) { + puVar31 = param_1 + lVar22; + puVar19 = (ushort *)(*param_3 + lVar22 * 2); + puVar33 = (undefined2 *)((long)param_5 + lVar22 * 2); + do { + lVar17 = lrintf(fVar57 * (float)*puVar31 * (float)*puVar19); + uVar13 = (uint)lVar17; + if (0xffff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + lVar17 = lrintf(fVar57 * (float)puVar31[1] * (float)puVar19[1]); + uVar14 = (uint)lVar17; + if (0xffff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + *puVar33 = (short)uVar13; + puVar33[1] = (short)uVar14; + lVar17 = lrintf(fVar57 * (float)puVar31[2] * (float)puVar19[2]); + uVar13 = (uint)lVar17; + if (0xffff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + lVar17 = lrintf(fVar57 * (float)puVar31[3] * (float)puVar19[3]); + uVar14 = (uint)lVar17; + if (0xffff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + puVar31 = puVar31 + 4; + puVar33[2] = (short)uVar13; + puVar33[3] = (short)uVar14; + puVar19 = puVar19 + 4; + puVar33 = puVar33 + 4; + uVar13 = uVar4 + 4 + uVar6 * 4; + } while (puVar31 != param_1 + lVar22 + 4 + (ulong)uVar6 * 4); + } + if ((int)uVar13 < iVar3) { + lVar17 = 0; + uVar32 = -(ulong)(uVar13 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar13 << 1; + do { + lVar18 = lrintf(fVar57 * (float)*(ushort *)((long)param_1 + lVar17 + uVar32) * + (float)*(ushort *)(*param_3 + lVar17 + uVar32)); + sVar21 = (short)lVar18; + if (0xffff < (uint)lVar18) { + sVar21 = -(ushort)(0 < (int)(uint)lVar18); + } + *(short *)((long)param_5 + lVar17 + uVar32) = sVar21; + lVar17 = lVar17 + 2; + } while (lVar17 != ((ulong)((iVar3 + -1) - uVar13) + 1) * 2); + } + iVar61 = iVar61 + -1; + param_1 = param_1 + (param_2 >> 1); + param_3 = (undefined1 (*) [16])(*param_3 + (param_4 >> 1) * 2); + param_5 = (undefined8 *)((long)param_5 + (param_6 >> 1) * 2); + } while (iVar61 != 0); + } + return; +} + + +================================================================== + +### FUNC 00248384 (3860 bytes) name=FUN_00248384 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00248384(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7,double *param_8) + +{ + int iVar1; + long lVar2; + byte *pbVar3; + byte *pbVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + char cVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + int iVar23; + int iVar24; + uint uVar25; + uint uVar26; + long lVar27; + byte *pbVar28; + undefined8 *puVar29; + undefined1 *puVar30; + long lVar31; + byte *pbVar32; + long lVar33; + uint uVar34; + uint uVar35; + long lVar36; + long lVar37; + undefined1 uVar38; + undefined1 uVar39; + float fVar40; + float fVar51; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined8 uVar57; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined8 uVar61; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + undefined1 auVar64 [16]; + undefined1 auVar65 [16]; + float fVar66; + undefined4 uVar67; + undefined4 uVar68; + int iVar69; + int iVar70; + int iVar71; + undefined1 auVar45 [16]; + + iVar5 = *param_7; + iVar71 = param_7[1]; + fVar66 = (float)*param_8; + if (fVar66 == 1.0) { + if (iVar71 != 0) { + iVar9 = iVar5 + -7; + iVar1 = (iVar5 - 8U & 0xfffffff8) + 8; + if (iVar9 < 1) { + iVar1 = 0; + } + uVar26 = (iVar5 + -4) - iVar1; + lVar36 = (long)iVar1; + iVar69 = iVar5 + -3; + uVar25 = uVar26 >> 2; + iVar23 = iVar1 + 4 + uVar25 * 4; + uVar6 = (uVar25 - 3 >> 2) + 1; + lVar31 = lVar36 + 0x40; + do { + if (0 < iVar9) { + lVar37 = 0; + do { + uVar61 = *(undefined8 *)(param_1 + lVar37); + uVar57 = *(undefined8 *)(param_3 + lVar37); + uVar38 = (undefined1)((ulong)uVar61 >> 8); + uVar39 = (undefined1)((ulong)uVar57 >> 8); + auVar62._6_2_ = 0; + auVar62._0_6_ = + (uint6)CONCAT14(uVar38,(uint)CONCAT12(uVar38,(ushort)(byte)uVar61)) & + 0xffff0000ffff; + auVar62[8] = (char)((ulong)uVar61 >> 0x10); + auVar62._9_3_ = 0; + auVar62[0xc] = (char)((ulong)uVar61 >> 0x18); + auVar62._13_3_ = 0; + auVar53._6_2_ = 0; + auVar53._0_6_ = + (uint6)CONCAT14(uVar39,(uint)CONCAT12(uVar39,(ushort)(byte)uVar57)) & + 0xffff0000ffff; + auVar53[8] = (char)((ulong)uVar57 >> 0x10); + auVar53._9_3_ = 0; + auVar53[0xc] = (char)((ulong)uVar57 >> 0x18); + auVar53._13_3_ = 0; + auVar62 = NEON_ucvtf(auVar62,4); + auVar44 = NEON_ucvtf(auVar53,4); + auVar63._1_3_ = 0; + auVar63[0] = (byte)((ulong)uVar61 >> 0x20); + auVar63[4] = (char)((ulong)uVar61 >> 0x28); + auVar63._5_3_ = 0; + auVar63[8] = (char)((ulong)uVar61 >> 0x30); + auVar63._9_3_ = 0; + auVar63[0xc] = (char)((ulong)uVar61 >> 0x38); + auVar63._13_3_ = 0; + auVar60._1_3_ = 0; + auVar60[0] = (byte)((ulong)uVar57 >> 0x20); + auVar60[4] = (char)((ulong)uVar57 >> 0x28); + auVar60._5_3_ = 0; + auVar60[8] = (char)((ulong)uVar57 >> 0x30); + auVar60._9_3_ = 0; + auVar60[0xc] = (char)((ulong)uVar57 >> 0x38); + auVar60._13_3_ = 0; + auVar63 = NEON_ucvtf(auVar63,4); + auVar53 = NEON_ucvtf(auVar60,4); + fVar66 = auVar62._0_4_ * auVar44._0_4_; + fVar40 = auVar62._4_4_ * auVar44._4_4_; + auVar59._0_8_ = CONCAT44(fVar40,fVar66); + auVar59._8_4_ = auVar62._8_4_ * auVar44._8_4_; + auVar59._12_4_ = auVar62._12_4_ * auVar44._12_4_; + auVar44 = auVar59; + if ((DAT_00531ec0 & 1) == 0) { + iVar24 = __cxa_guard_acquire(&DAT_00531ec0); + auVar44._8_8_ = auVar59._8_8_; + auVar44._0_8_ = auVar59._0_8_; + if (iVar24 == 0) goto LAB_00248ef4; + auVar44 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar44._8_8_; + _DAT_00531e90 = auVar44._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar24 = (int)(fVar66 + (float)_DAT_00531e90); + iVar70 = (int)(fVar40 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar21._4_4_ = iVar70; + auVar21._0_4_ = iVar24; + auVar21._8_4_ = (int)(auVar59._8_4_ + (float)uRam0000000000531e98); + auVar21._12_4_ = (int)(auVar59._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar57 = NEON_uqxtn(CONCAT44(iVar70,iVar24),auVar21,4); + uVar67 = (undefined4)uVar57; + uVar68 = (undefined4)((ulong)uVar57 >> 0x20); + } + else { +LAB_00248ef4: + iVar24 = (int)(auVar44._0_4_ + (float)_DAT_00531e90); + iVar70 = (int)(auVar44._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar22._4_4_ = iVar70; + auVar22._0_4_ = iVar24; + auVar22._8_4_ = (int)(auVar44._8_4_ + (float)uRam0000000000531e98); + auVar22._12_4_ = (int)(auVar44._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar57 = NEON_uqxtn(CONCAT44(iVar70,iVar24),auVar22,4); + uVar67 = (undefined4)uVar57; + uVar68 = (undefined4)((ulong)uVar57 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && + (iVar24 = __cxa_guard_acquire(&DAT_00531ec0), iVar24 != 0)) { + auVar44 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar44._8_8_; + _DAT_00531e90 = auVar44._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + puVar29 = (undefined8 *)(param_5 + lVar37); + lVar37 = lVar37 + 8; + auVar56._4_4_ = uVar68; + auVar56._0_4_ = uVar67; + auVar50._0_8_ = + CONCAT44((int)(auVar63._4_4_ * auVar53._4_4_ + DAT_00531e90_4), + (int)(auVar63._0_4_ * auVar53._0_4_ + _DAT_00531e90)); + auVar50._8_4_ = (int)(auVar63._8_4_ * auVar53._8_4_ + (float)uRam0000000000531e98); + auVar50._12_4_ = (int)(auVar63._12_4_ * auVar53._12_4_ + uRam0000000000531e98._4_4_); + uVar57 = NEON_uqxtn(auVar50._0_8_,auVar50,4); + auVar56._8_8_ = uVar57; + uVar57 = NEON_uqxtn(uVar57,auVar56,2); + *puVar29 = uVar57; + } while ((int)lVar37 < iVar9); + } + iVar24 = iVar1; + if (iVar1 < iVar69) { + pbVar28 = (byte *)(param_1 + lVar36); + puVar30 = (undefined1 *)(param_5 + lVar36); + pbVar32 = (byte *)(param_3 + lVar36); + iVar24 = iVar23; + if ((pbVar28 < (byte *)(param_5 + lVar31) && puVar30 < (undefined1 *)(param_1 + lVar31) || + pbVar32 < (byte *)(param_5 + lVar31) && puVar30 < (undefined1 *)(param_3 + lVar31)) + || (uVar25 + 1 < 4)) { + do { + pbVar3 = pbVar28 + 4; + uVar34 = (uint)*pbVar28 * (uint)*pbVar32; + uVar7 = (uint)pbVar28[1] * (uint)pbVar32[1]; + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *puVar30 = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + puVar30[1] = (char)uVar7; + uVar34 = (uint)pbVar28[2] * (uint)pbVar32[2]; + uVar7 = (uint)pbVar28[3] * (uint)pbVar32[3]; + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + puVar30[2] = (char)uVar34; + puVar30[3] = (char)uVar7; + pbVar28 = pbVar3; + puVar30 = puVar30 + 4; + pbVar32 = pbVar32 + 4; + } while (pbVar3 != (byte *)(param_1 + lVar36 + 4 + (ulong)uVar25 * 4)); + } + else { + iVar70 = iVar1; + if (0xb < uVar26) { + lVar37 = 0; + uVar34 = 0; + do { + pbVar3 = pbVar28 + lVar37; + pbVar4 = pbVar32 + lVar37; + puVar29 = (undefined8 *)(puVar30 + lVar37); + uVar34 = uVar34 + 1; + lVar37 = lVar37 + 0x10; + auVar53 = NEON_umull((ulong)CONCAT16(pbVar4[3], + (uint6)CONCAT14(pbVar4[2], + (uint)CONCAT12(pbVar4[1], + (ushort)*pbVar4) + )), + (ulong)CONCAT16(pbVar3[3], + (uint6)CONCAT14(pbVar3[2], + (uint)CONCAT12(pbVar3[1], + (ushort)*pbVar3) + )),2); + auVar54._0_4_ = (uint)pbVar4[4] * (uint)pbVar3[4]; + auVar54._4_4_ = (uint)pbVar4[5] * (uint)pbVar3[5]; + auVar54._8_4_ = (uint)pbVar4[6] * (uint)pbVar3[6]; + auVar54._12_4_ = (uint)pbVar4[7] * (uint)pbVar3[7]; + auVar44 = NEON_umull((ulong)CONCAT16(pbVar4[0xb], + (uint6)CONCAT14(pbVar4[10], + (uint)CONCAT12(pbVar4[9], + (ushort)pbVar4[8 + ]))), + (ulong)CONCAT16(pbVar3[0xb], + (uint6)CONCAT14(pbVar3[10], + (uint)CONCAT12(pbVar3[9], + (ushort)pbVar3[8 + ]))),2); + auVar46._0_4_ = (uint)pbVar4[0xc] * (uint)pbVar3[0xc]; + auVar46._4_4_ = (uint)pbVar4[0xd] * (uint)pbVar3[0xd]; + auVar46._8_4_ = (uint)pbVar4[0xe] * (uint)pbVar3[0xe]; + auVar46._12_4_ = (uint)pbVar4[0xf] * (uint)pbVar3[0xf]; + auVar11._8_4_ = 0xff; + auVar11._0_8_ = 0xff000000ff; + auVar11._12_4_ = 0xff; + auVar62 = NEON_smin(auVar53,auVar11,4); + auVar12._8_4_ = 0xff; + auVar12._0_8_ = 0xff000000ff; + auVar12._12_4_ = 0xff; + auVar53 = NEON_smin(auVar54,auVar12,4); + auVar13._8_4_ = 0xff; + auVar13._0_8_ = 0xff000000ff; + auVar13._12_4_ = 0xff; + auVar59 = NEON_smin(auVar44,auVar13,4); + auVar14._8_4_ = 0xff; + auVar14._0_8_ = 0xff000000ff; + auVar14._12_4_ = 0xff; + auVar44 = NEON_smin(auVar46,auVar14,4); + auVar47._0_8_ = + CONCAT17(auVar53[0xc], + CONCAT16(auVar53[8], + CONCAT15(auVar53[4], + CONCAT14(auVar53[0], + CONCAT13(auVar62[0xc], + CONCAT12(auVar62[8], + CONCAT11(auVar62[4], + auVar62[0])))))) + ); + auVar47[8] = auVar59[0]; + auVar47[9] = auVar59[4]; + auVar47[10] = auVar59[8]; + auVar47[0xb] = auVar59[0xc]; + auVar47[0xc] = auVar44[0]; + auVar47[0xd] = auVar44[4]; + auVar47[0xe] = auVar44[8]; + auVar47[0xf] = auVar44[0xc]; + puVar29[1] = auVar47._8_8_; + *puVar29 = auVar47._0_8_; + } while (uVar34 < uVar6); + iVar70 = iVar1 + uVar6 * 0x10; + if (uVar25 + 1 == uVar6 * 4) goto LAB_00248820; + } + lVar33 = (long)iVar70; + lVar37 = lVar33 + 1; + lVar27 = lVar33 + 2; + lVar2 = lVar33 + 3; + uVar34 = (uint)*(byte *)(param_1 + lVar33) * (uint)*(byte *)(param_3 + lVar33); + uVar7 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar33) = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar7; + uVar34 = (uint)*(byte *)(param_1 + lVar27) * (uint)*(byte *)(param_3 + lVar27); + uVar7 = (uint)*(byte *)(param_1 + lVar2) * (uint)*(byte *)(param_3 + lVar2); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar27) = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + *(char *)(param_5 + lVar2) = (char)uVar7; + if (iVar70 + 4 < iVar69) { + lVar33 = (long)(iVar70 + 4); + lVar37 = lVar33 + 1; + lVar27 = lVar33 + 2; + lVar2 = lVar33 + 3; + uVar34 = (uint)*(byte *)(param_1 + lVar33) * (uint)*(byte *)(param_3 + lVar33); + uVar7 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar33) = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar7; + uVar34 = (uint)*(byte *)(param_1 + lVar27) * (uint)*(byte *)(param_3 + lVar27); + uVar7 = (uint)*(byte *)(param_1 + lVar2) * (uint)*(byte *)(param_3 + lVar2); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar27) = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + *(char *)(param_5 + lVar2) = (char)uVar7; + if (iVar70 + 8 < iVar69) { + lVar33 = (long)(iVar70 + 8); + lVar37 = lVar33 + 1; + lVar27 = lVar33 + 2; + lVar2 = lVar33 + 3; + uVar34 = (uint)*(byte *)(param_1 + lVar33) * (uint)*(byte *)(param_3 + lVar33); + uVar7 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar33) = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar7; + uVar34 = (uint)*(byte *)(param_1 + lVar27) * (uint)*(byte *)(param_3 + lVar27); + uVar7 = (uint)*(byte *)(param_1 + lVar2) * (uint)*(byte *)(param_3 + lVar2); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar27) = (char)uVar34; + if (0xff < uVar7) { + uVar7 = 0xffffffff; + } + *(char *)(param_5 + lVar2) = (char)uVar7; + } + } + } + } +LAB_00248820: + if (iVar24 < iVar5) { + lVar27 = (long)iVar24; + lVar37 = lVar27 + 0x10; + pbVar28 = (byte *)(param_1 + lVar27); + puVar30 = (undefined1 *)(param_5 + lVar27); + pbVar32 = (byte *)(param_3 + lVar27); + uVar34 = iVar5 - iVar24; + if ((pbVar28 < (byte *)(param_5 + lVar37) && puVar30 < (undefined1 *)(param_1 + lVar37) || + pbVar32 < (byte *)(param_5 + lVar37) && puVar30 < (undefined1 *)(param_3 + lVar37)) + || (uVar34 < 0x13)) { + lVar37 = 0; + do { + uVar34 = (uint)pbVar28[lVar37] * (uint)pbVar32[lVar37]; + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + puVar30[lVar37] = (char)uVar34; + lVar37 = lVar37 + 1; + } while (lVar37 != (ulong)(uint)((iVar5 + -1) - iVar24) + 1); + } + else { + uVar7 = -(int)pbVar28 & 0xf; + if (uVar34 < uVar7) { + uVar7 = uVar34; + } + iVar70 = iVar24; + if (uVar7 != 0) { + iVar70 = iVar24 + 1; + uVar8 = (uint)*pbVar28 * (uint)*pbVar32; + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *puVar30 = (char)uVar8; + if (uVar7 != 1) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 2; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 2) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 3; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 3) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 4; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 4) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 5; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 5) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 6; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 6) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 7; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 7) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 8; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 8) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 9; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 9) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 10; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 10) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 0xb; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 0xb) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 0xc; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 0xc) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 0xd; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 != 0xd) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 0xe; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + if (uVar7 == 0xf) { + lVar37 = (long)iVar70; + iVar70 = iVar24 + 0xf; + uVar8 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar8) { + uVar8 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar8 = ((uVar34 - uVar7) - 0x10 >> 4) + 1; + iVar24 = uVar8 * 0x10; + if (0xe < (uVar34 - 1) - uVar7) { + lVar27 = (ulong)uVar7 + lVar27; + uVar35 = 0; + puVar29 = (undefined8 *)(param_5 + lVar27); + pbVar28 = (byte *)(param_3 + lVar27); + pbVar32 = (byte *)(param_1 + lVar27); + do { + uVar35 = uVar35 + 1; + auVar53 = NEON_umull((ulong)CONCAT16(pbVar28[3], + (uint6)CONCAT14(pbVar28[2], + (uint)CONCAT12(pbVar28[1], + (ushort)*pbVar28 + ))), + (ulong)CONCAT16(pbVar32[3], + (uint6)CONCAT14(pbVar32[2], + (uint)CONCAT12(pbVar32[1], + (ushort)*pbVar32 + ))),2); + auVar55._0_4_ = (uint)pbVar28[4] * (uint)pbVar32[4]; + auVar55._4_4_ = (uint)pbVar28[5] * (uint)pbVar32[5]; + auVar55._8_4_ = (uint)pbVar28[6] * (uint)pbVar32[6]; + auVar55._12_4_ = (uint)pbVar28[7] * (uint)pbVar32[7]; + auVar44 = NEON_umull((ulong)CONCAT16(pbVar28[0xb], + (uint6)CONCAT14(pbVar28[10], + (uint)CONCAT12(pbVar28[9], + (ushort)pbVar28[ + 8]))), + (ulong)CONCAT16(pbVar32[0xb], + (uint6)CONCAT14(pbVar32[10], + (uint)CONCAT12(pbVar32[9], + (ushort)pbVar32[ + 8]))),2); + auVar48._0_4_ = (uint)pbVar28[0xc] * (uint)pbVar32[0xc]; + auVar48._4_4_ = (uint)pbVar28[0xd] * (uint)pbVar32[0xd]; + auVar48._8_4_ = (uint)pbVar28[0xe] * (uint)pbVar32[0xe]; + auVar48._12_4_ = (uint)pbVar28[0xf] * (uint)pbVar32[0xf]; + auVar15._8_4_ = 0xff; + auVar15._0_8_ = 0xff000000ff; + auVar15._12_4_ = 0xff; + auVar62 = NEON_smin(auVar53,auVar15,4); + auVar16._8_4_ = 0xff; + auVar16._0_8_ = 0xff000000ff; + auVar16._12_4_ = 0xff; + auVar53 = NEON_smin(auVar55,auVar16,4); + auVar17._8_4_ = 0xff; + auVar17._0_8_ = 0xff000000ff; + auVar17._12_4_ = 0xff; + auVar59 = NEON_smin(auVar44,auVar17,4); + auVar18._8_4_ = 0xff; + auVar18._0_8_ = 0xff000000ff; + auVar18._12_4_ = 0xff; + auVar44 = NEON_smin(auVar48,auVar18,4); + auVar49._0_8_ = + CONCAT17(auVar53[0xc], + CONCAT16(auVar53[8], + CONCAT15(auVar53[4], + CONCAT14(auVar53[0], + CONCAT13(auVar62[0xc], + CONCAT12(auVar62[8], + CONCAT11(auVar62[4], + auVar62[0])))))) + ); + auVar49[8] = auVar59[0]; + auVar49[9] = auVar59[4]; + auVar49[10] = auVar59[8]; + auVar49[0xb] = auVar59[0xc]; + auVar49[0xc] = auVar44[0]; + auVar49[0xd] = auVar44[4]; + auVar49[0xe] = auVar44[8]; + auVar49[0xf] = auVar44[0xc]; + puVar29[1] = auVar49._8_8_; + *puVar29 = auVar49._0_8_; + puVar29 = puVar29 + 2; + pbVar28 = pbVar28 + 0x10; + pbVar32 = pbVar32 + 0x10; + } while (uVar35 < uVar8); + iVar70 = iVar70 + iVar24; + if (iVar24 == uVar34 - uVar7) goto LAB_00248de4; + } + lVar37 = (long)iVar70; + uVar34 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 1 < iVar5) { + lVar37 = (long)(iVar70 + 1); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 2 < iVar5) { + lVar37 = (long)(iVar70 + 2); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 3 < iVar5) { + lVar37 = (long)(iVar70 + 3); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 4 < iVar5) { + lVar37 = (long)(iVar70 + 4); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 5 < iVar5) { + lVar37 = (long)(iVar70 + 5); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * (uint)*(byte *)(param_3 + lVar37) + ; + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 6 < iVar5) { + lVar37 = (long)(iVar70 + 6); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 7 < iVar5) { + lVar37 = (long)(iVar70 + 7); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 8 < iVar5) { + lVar37 = (long)(iVar70 + 8); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 9 < iVar5) { + lVar37 = (long)(iVar70 + 9); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 10 < iVar5) { + lVar37 = (long)(iVar70 + 10); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 0xb < iVar5) { + lVar37 = (long)(iVar70 + 0xb); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 0xc < iVar5) { + lVar37 = (long)(iVar70 + 0xc); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 0xd < iVar5) { + lVar37 = (long)(iVar70 + 0xd); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + if (iVar70 + 0xe < iVar5) { + lVar37 = (long)(iVar70 + 0xe); + uVar34 = (uint)*(byte *)(param_1 + lVar37) * + (uint)*(byte *)(param_3 + lVar37); + if (0xff < uVar34) { + uVar34 = 0xffffffff; + } + *(char *)(param_5 + lVar37) = (char)uVar34; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00248de4: + iVar71 = iVar71 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar71 != 0); + } + } + else if (iVar71 != 0) { + iVar9 = iVar5 + -7; + iVar1 = (iVar5 - 8U & 0xfffffff8) + 8; + if (iVar9 < 1) { + iVar1 = 0; + } + uVar6 = (uint)((iVar5 + -4) - iVar1) >> 2; + lVar31 = (long)iVar1; + do { + if (0 < iVar9) { + lVar36 = 0; + do { + uVar61 = *(undefined8 *)(param_3 + lVar36); + uVar38 = (undefined1)((ulong)uVar61 >> 8); + uVar57 = *(undefined8 *)(param_1 + lVar36); + uVar39 = (undefined1)((ulong)uVar57 >> 8); + auVar64._6_2_ = 0; + auVar64._0_6_ = + (uint6)CONCAT14(uVar38,(uint)CONCAT12(uVar38,(ushort)(byte)uVar61)) & 0xffff0000ffff; + auVar64[8] = (char)((ulong)uVar61 >> 0x10); + auVar64._9_3_ = 0; + auVar64[0xc] = (char)((ulong)uVar61 >> 0x18); + auVar64._13_3_ = 0; + auVar43._6_2_ = 0; + auVar43._0_6_ = + (uint6)CONCAT14(uVar39,(uint)CONCAT12(uVar39,(ushort)(byte)uVar57)) & 0xffff0000ffff; + auVar43[8] = (char)((ulong)uVar57 >> 0x10); + auVar43._9_3_ = 0; + auVar43[0xc] = (char)((ulong)uVar57 >> 0x18); + auVar43._13_3_ = 0; + auVar53 = NEON_ucvtf(auVar43,4); + auVar44 = NEON_ucvtf(auVar64,4); + auVar65._1_3_ = 0; + auVar65[0] = (byte)((ulong)uVar61 >> 0x20); + auVar65[4] = (char)((ulong)uVar61 >> 0x28); + auVar65._5_3_ = 0; + auVar65[8] = (char)((ulong)uVar61 >> 0x30); + auVar65._9_3_ = 0; + auVar65[0xc] = (char)((ulong)uVar61 >> 0x38); + auVar65._13_3_ = 0; + auVar58._1_3_ = 0; + auVar58[0] = (byte)((ulong)uVar57 >> 0x20); + auVar58[4] = (char)((ulong)uVar57 >> 0x28); + auVar58._5_3_ = 0; + auVar58[8] = (char)((ulong)uVar57 >> 0x30); + auVar58._9_3_ = 0; + auVar58[0xc] = (char)((ulong)uVar57 >> 0x38); + auVar58._13_3_ = 0; + auVar62 = NEON_ucvtf(auVar58,4); + auVar59 = NEON_ucvtf(auVar65,4); + fVar40 = fVar66 * auVar53._0_4_ * auVar44._0_4_; + fVar51 = fVar66 * auVar53._4_4_ * auVar44._4_4_; + auVar45._0_8_ = CONCAT44(fVar51,fVar40); + auVar45._8_4_ = fVar66 * auVar53._8_4_ * auVar44._8_4_; + auVar45._12_4_ = fVar66 * auVar53._12_4_ * auVar44._12_4_; + auVar41 = auVar45; + if ((DAT_00531ec0 & 1) == 0) { + iVar23 = __cxa_guard_acquire(&DAT_00531ec0); + auVar41._8_8_ = auVar45._8_8_; + auVar41._0_8_ = auVar45._0_8_; + if (iVar23 == 0) goto LAB_00248484; + auVar44 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar44._8_8_; + _DAT_00531e90 = auVar44._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar23 = (int)(fVar40 + (float)_DAT_00531e90); + iVar69 = (int)(fVar51 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar19._4_4_ = iVar69; + auVar19._0_4_ = iVar23; + auVar19._8_4_ = (int)(auVar45._8_4_ + (float)uRam0000000000531e98); + auVar19._12_4_ = (int)(auVar45._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar57 = NEON_uqxtn(CONCAT44(iVar69,iVar23),auVar19,4); + uVar67 = (undefined4)uVar57; + uVar68 = (undefined4)((ulong)uVar57 >> 0x20); + } + else { +LAB_00248484: + iVar23 = (int)(auVar41._0_4_ + (float)_DAT_00531e90); + iVar69 = (int)(auVar41._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar20._4_4_ = iVar69; + auVar20._0_4_ = iVar23; + auVar20._8_4_ = (int)(auVar41._8_4_ + (float)uRam0000000000531e98); + auVar20._12_4_ = (int)(auVar41._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar57 = NEON_uqxtn(CONCAT44(iVar69,iVar23),auVar20,4); + uVar67 = (undefined4)uVar57; + uVar68 = (undefined4)((ulong)uVar57 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && + (iVar23 = __cxa_guard_acquire(&DAT_00531ec0), iVar23 != 0)) { + auVar44 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar44._8_8_; + _DAT_00531e90 = auVar44._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + puVar29 = (undefined8 *)(param_5 + lVar36); + lVar36 = lVar36 + 8; + auVar52._4_4_ = uVar68; + auVar52._0_4_ = uVar67; + auVar42._0_8_ = + CONCAT44((int)(fVar66 * auVar62._4_4_ * auVar59._4_4_ + DAT_00531e90_4), + (int)(fVar66 * auVar62._0_4_ * auVar59._0_4_ + _DAT_00531e90)); + auVar42._8_4_ = + (int)(fVar66 * auVar62._8_4_ * auVar59._8_4_ + (float)uRam0000000000531e98); + auVar42._12_4_ = + (int)(fVar66 * auVar62._12_4_ * auVar59._12_4_ + uRam0000000000531e98._4_4_); + uVar57 = NEON_uqxtn(auVar42._0_8_,auVar42,4); + auVar52._8_8_ = uVar57; + uVar57 = NEON_uqxtn(uVar57,auVar52,2); + *puVar29 = uVar57; + } while ((int)lVar36 < iVar9); + } + iVar23 = iVar1; + if (iVar1 < iVar5 + -3) { + pbVar28 = (byte *)(param_1 + lVar31); + pbVar32 = (byte *)(param_3 + lVar31); + puVar30 = (undefined1 *)(param_5 + lVar31); + do { + lVar36 = lrintf(fVar66 * (float)*pbVar28 * (float)*pbVar32); + uVar25 = (uint)lVar36; + if (0xff < uVar25) { + uVar25 = -(uint)(0 < (int)uVar25); + } + lVar36 = lrintf(fVar66 * (float)pbVar28[1] * (float)pbVar32[1]); + uVar26 = (uint)lVar36; + if (0xff < uVar26) { + uVar26 = -(uint)(0 < (int)uVar26); + } + *puVar30 = (char)uVar25; + puVar30[1] = (char)uVar26; + lVar36 = lrintf(fVar66 * (float)pbVar28[2] * (float)pbVar32[2]); + uVar25 = (uint)lVar36; + if (0xff < uVar25) { + uVar25 = -(uint)(0 < (int)uVar25); + } + lVar36 = lrintf(fVar66 * (float)pbVar28[3] * (float)pbVar32[3]); + uVar26 = (uint)lVar36; + if (0xff < uVar26) { + uVar26 = -(uint)(0 < (int)uVar26); + } + pbVar28 = pbVar28 + 4; + puVar30[2] = (char)uVar25; + puVar30[3] = (char)uVar26; + pbVar32 = pbVar32 + 4; + puVar30 = puVar30 + 4; + iVar23 = iVar1 + 4 + uVar6 * 4; + } while (pbVar28 != (byte *)(param_1 + lVar31 + 4 + (ulong)uVar6 * 4)); + } + if (iVar23 < iVar5) { + lVar36 = 0; + lVar37 = (long)iVar23; + do { + lVar27 = lrintf(fVar66 * (float)*(byte *)(param_1 + lVar37 + lVar36) * + (float)*(byte *)(param_3 + lVar37 + lVar36)); + cVar10 = (char)lVar27; + if (0xff < (uint)lVar27) { + cVar10 = -(0 < (int)(uint)lVar27); + } + *(char *)(param_5 + lVar37 + lVar36) = cVar10; + lVar36 = lVar36 + 1; + } while (lVar36 != (ulong)(uint)((iVar5 + -1) - iVar23) + 1); + } + iVar71 = iVar71 + -1; + param_1 = param_1 + param_2; + param_3 = param_3 + param_4; + param_5 = param_5 + param_6; + } while (iVar71 != 0); + } + return; +} + + +================================================================== + +### FUNC 00249298 (7884 bytes) name=FUN_00249298 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00249298(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _InputArray *param_4,undefined8 *param_5,char param_6,int param_7) + +{ + uint uVar1; + ulong uVar2; + ulong uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + bool bVar10; + bool bVar11; + byte bVar12; + byte bVar13; + char cVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + int iVar19; + uint uVar21; + int iVar22; + ulong uVar23; + ulong uVar24; + void *__dest; + char *pcVar25; + code *pcVar26; + code *pcVar27; + ulong uVar28; + undefined8 *puVar29; + long lVar30; + Mat *pMVar31; + undefined8 *puVar32; + int *piVar33; + undefined4 *puVar34; + ulong uVar35; + ulong uVar36; + undefined8 *puVar37; + ulong uVar38; + _InputArray *p_Var39; + ulong uVar40; + long lVar41; + uint uVar42; + byte bVar43; + uint uVar44; + uint uVar45; + code *pcVar46; + undefined8 uVar47; + uint uVar48; + Mat *local_678; + Mat *local_670; + Mat *local_668; + int local_650; + int iStack_64c; + int local_648; + int iStack_644; + ulong local_640; + int local_638 [2]; + int local_630 [4]; + uchar *local_620; + long local_618; + undefined8 *local_610; + long local_608; + Mat *local_600; + Mat *local_5f8; + Mat *local_5f0; + Mat *local_5e8; + undefined8 local_5e0; + NAryMatIterator aNStack_5d8 [32]; + ulong local_5b8; + ulong local_5b0; + uint local_598; + int local_594; + undefined4 local_590; + undefined4 local_58c; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + undefined8 local_568; + long local_560; + undefined4 *local_558; + undefined8 *local_550; + undefined8 local_548; + undefined8 local_540; + undefined8 local_538; + int local_530; + int local_52c; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_500; + int *local_4f8; + undefined8 *local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + uint local_4d8; + int local_4d4; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + undefined8 *local_498; + undefined8 *local_490; + undefined8 local_488; + undefined8 local_480; + uint local_478; + int local_474; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + long local_440; + undefined8 *local_438; + undefined8 *local_430; + undefined8 local_428; + undefined8 local_420; + undefined8 local_418; + ulong local_410; + undefined8 local_408; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + long local_3e0; + ulong *local_3d8; + undefined8 *local_3d0; + undefined8 local_3c8; + undefined8 local_3c0; + int iVar20; + + iVar15 = cv::_InputArray::kind(param_1); + iVar16 = cv::_InputArray::kind(param_2); + uVar23 = cv::_InputArray::type(param_1,-1); + uVar42 = (uint)uVar23; + uVar48 = uVar42 & 7; + uVar21 = ((uint)((uVar23 & 0xffffffff) >> 3) & 0x1ff) + 1; + uVar24 = cv::_InputArray::type(param_2,-1); + uVar45 = (uint)uVar24; + iVar17 = cv::_InputArray::dims(param_1,-1); + iVar18 = cv::_InputArray::dims(param_2,-1); + iVar19 = (int)param_2; + iVar20 = (int)param_1; + p_Var39 = param_1; + uVar44 = uVar21; + if (iVar17 < 3) { + cv::_InputArray::size(iVar20); + if (2 < iVar18) goto LAB_00249368; + cv::_InputArray::size(iVar19); + bVar13 = cv::_InputArray::empty(param_4); + bVar43 = bVar13 ^ 1; + if (iVar15 == iVar16) { + if (local_648 == local_650) { + if ((iStack_64c == iStack_644) && (bVar12 = bVar13 & uVar42 == uVar45, bVar12 != 0)) { + local_418 = (undefined8 *)CONCAT44(iStack_64c,local_648); + cv::_OutputArray::create + ((_OutputArray *)param_3,(Mat *)&local_418,uVar23 & 0xffffffff,0xffffffff,0,0); + if (param_6 == '\0') { + pcVar26 = (code *)param_5[(int)uVar48]; + } + else { + pcVar26 = (code *)*param_5; + uVar44 = uVar21 << (ulong)((uint)(0xfa50L >> (uVar48 << 1)) & 3); + } + iVar17 = cv::_InputArray::kind(param_1); + if (iVar17 == 0x10000) { + pMVar31 = *(Mat **)(param_1 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(uint *)pMVar31; + local_4c8 = *(undefined8 *)(pMVar31 + 0x10); + local_4d4 = *(int *)(pMVar31 + 4); + local_4d0 = *(undefined8 **)(pMVar31 + 8); + local_4c0 = *(undefined8 *)(pMVar31 + 0x18); + local_4b8 = *(undefined8 *)(pMVar31 + 0x20); + local_4b0 = *(undefined8 *)(pMVar31 + 0x28); + local_4a8 = *(undefined8 *)(pMVar31 + 0x30); + local_4a0 = *(long *)(pMVar31 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar33 = (int *)(local_4a0 + 0x14); + do { + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (2 < *(int *)(pMVar31 + 4)) { + local_4d4 = 0; + cv::Mat::copySize((Mat *)&local_4d8,pMVar31); + } + } + else { + cv::_InputArray::getMat_(iVar20); + } + local_678 = (Mat *)&local_4d8; + iVar17 = cv::_InputArray::kind(param_2); + if (iVar17 == 0x10000) { + pMVar31 = *(Mat **)(param_2 + 8); + local_438 = &local_470; + local_430 = &local_428; + local_478 = *(uint *)pMVar31; + local_468 = *(undefined8 *)(pMVar31 + 0x10); + local_474 = *(int *)(pMVar31 + 4); + local_470 = *(undefined8 *)(pMVar31 + 8); + local_460 = *(undefined8 *)(pMVar31 + 0x18); + local_458 = *(undefined8 *)(pMVar31 + 0x20); + local_450 = *(undefined8 *)(pMVar31 + 0x28); + local_448 = *(undefined8 *)(pMVar31 + 0x30); + local_440 = *(long *)(pMVar31 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar33 = (int *)(local_440 + 0x14); + do { + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (*(int *)(pMVar31 + 4) < 3) { + local_428 = **(undefined8 **)(pMVar31 + 0x48); + local_420 = (*(undefined8 **)(pMVar31 + 0x48))[1]; + } + else { + local_474 = 0; + cv::Mat::copySize((Mat *)&local_478,pMVar31); + } + } + else { + cv::_InputArray::getMat_(iVar19); + } + iVar17 = cv::_InputArray::kind(param_3); + if (iVar17 == 0x10000) { + pMVar31 = *(Mat **)(param_3 + 8); + uVar1 = *(uint *)pMVar31; + local_3d8 = &local_410; + local_408 = *(undefined8 *)(pMVar31 + 0x10); + local_3d0 = &local_3c8; + local_418 = *(undefined8 **)pMVar31; + local_410 = *(ulong *)(pMVar31 + 8); + local_400 = *(undefined8 *)(pMVar31 + 0x18); + local_3f8 = *(undefined8 *)(pMVar31 + 0x20); + local_3f0 = *(undefined8 *)(pMVar31 + 0x28); + local_3e8 = *(undefined8 *)(pMVar31 + 0x30); + local_3e0 = *(long *)(pMVar31 + 0x38); + local_3c0 = 0; + local_3c8 = 0; + if (local_3e0 != 0) { + piVar33 = (int *)(local_3e0 + 0x14); + do { + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (*(int *)(pMVar31 + 4) < 3) { + local_3c8 = **(undefined8 **)(pMVar31 + 0x48); + local_3c0 = (*(undefined8 **)(pMVar31 + 0x48))[1]; + } + else { + local_418 = (undefined8 *)(ulong)uVar1; + cv::Mat::copySize((Mat *)&local_418,pMVar31); + } + } + else { + cv::_InputArray::getMat_((int)param_3); + } + iVar18 = (int)local_4d0; + iVar17 = local_4d0._4_4_; + if ((local_4d8 & local_478 & 0x4000 & (uint)local_418) != 0) { + lVar41 = (long)local_4d0._4_4_ * (long)(int)local_4d0; + iVar22 = (int)lVar41; + if (lVar41 - iVar22 == 0) { + iVar17 = iVar22; + } + if (lVar41 - iVar22 == 0) { + iVar18 = 1; + } + } + iVar22 = (int)((long)iVar17 * (long)(int)uVar44); + if ((long)iVar22 == (long)iVar17 * (long)(int)uVar44) { + local_538 = CONCAT44(iVar18,iVar22); + (*pcVar26)(local_4c8,local_488,local_468,local_428,local_408,local_3c8,&local_538,0); + cv::Mat::release((Mat *)&local_418); + if (local_3d0 != &local_3c8) { + cv::fastFree(local_3d0); + } + cv::Mat::release((Mat *)&local_478); + if (local_430 != &local_428) { + cv::fastFree(local_430); + } + cv::Mat::release(local_678); + if (local_490 == &local_488) { + return; + } + cv::fastFree(local_490); + return; + } + cv::Mat::release((Mat *)&local_418); + if (local_3d0 != &local_3c8) { + cv::fastFree(local_3d0); + } + cv::Mat::release((Mat *)&local_478); + if (local_430 != &local_428) { + cv::fastFree(local_430); + } + cv::Mat::release(local_678); + if (local_490 != &local_488) { + cv::fastFree(local_490); + } + goto LAB_00249394; + } + } + } + if (param_7 != 0xc) goto LAB_002493a0; +LAB_002494e4: + bVar10 = true; + } + else { + if (iVar18 < 3) { + cv::_InputArray::size(iVar19); + bVar12 = cv::_InputArray::empty(param_4); + bVar43 = bVar12 ^ 1; + } + else { +LAB_00249368: + bVar12 = cv::_InputArray::empty(param_4); + bVar43 = bVar12 ^ 1; + } +LAB_00249394: + bVar13 = bVar12; + if (param_7 == 0xc) goto LAB_002494e4; +LAB_002493a0: + bVar10 = iVar15 == 0x20000; + bVar11 = iVar16 == 0x20000; + if (((char)(bVar10 + bVar11) == '\x01') || + (bVar12 = cv::_InputArray::sameSize(param_1,param_2), bVar12 <= (uVar42 != uVar45))) { + iVar17 = cv::_InputArray::dims(param_1,-1); + if ((iVar17 < 3) && (cVar14 = cv::_InputArray::isContinuous(param_1,-1), cVar14 != '\0')) { + uVar1 = ((uint)((uVar24 & 0xffffffff) >> 3) & 0x1ff) + 1; + cv::_InputArray::size(iVar20); + if ((uint)local_418 == 1) { + if (((iVar15 == 0x20000) || (!bVar11)) && + (((local_418._4_4_ == 1 || (uVar1 == local_418._4_4_)) || + (((local_418._4_4_ == 4 && (iVar15 = cv::_InputArray::type(param_1,-1), iVar15 == 6)) + && (uVar1 < 5)))))) goto LAB_0024ae70; + } + else if ((local_418._4_4_ == 1) && + (((iVar15 == 0x20000 || (!bVar11)) && (uVar1 == (uint)local_418)))) { +LAB_0024ae70: + uVar48 = uVar45 & 7; + bVar10 = true; + p_Var39 = param_2; + param_2 = param_1; + uVar21 = uVar1; + uVar44 = uVar1; + uVar42 = uVar45; + goto LAB_00249580; + } + } + iVar15 = cv::_InputArray::dims(param_2,-1); + if ((iVar15 < 3) && (cVar14 = cv::_InputArray::isContinuous(param_2,-1), cVar14 != '\0')) { + cv::_InputArray::size(iVar19); + if ((uint)local_418 == 1) { + if ((iVar16 == 0x20000) || (!bVar10)) { + if ((local_418._4_4_ == 1) || (uVar21 == local_418._4_4_)) goto LAB_002494e4; + if (((local_418._4_4_ == 4) && (iVar15 = cv::_InputArray::type(param_2,-1), iVar15 == 6) + ) && (uVar21 < 5)) { + bVar10 = true; + goto LAB_00249580; + } + } + } + else if (((local_418._4_4_ == 1) && ((iVar16 == 0x20000 || (!bVar10)))) && + (uVar21 == (uint)local_418)) goto LAB_002494e4; + } + local_418 = (undefined8 *)0x0; + local_410 = 0; + __dest = (void *)cv::String::allocate((String *)&local_418,0x82); + memcpy(__dest,&DAT_00460758,0x82); + cv::error(-0xd1,(String *)&local_418, + "void cv::binary_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, void (* const*)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x625); + bVar10 = true; + cv::String::deallocate((String *)&local_418); + } + else { + cVar14 = cv::_InputArray::sameSize(param_1,param_2); + if ((cVar14 == '\0') || (uVar42 != uVar45)) { + local_418 = (undefined8 *)0x0; + local_410 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_418,0x29); + cVar14 = s_psrc1_>sameSize__psrc2_____type1_004607f0[0x28]; + uVar6 = s_psrc1_>sameSize__psrc2_____type1_004607f0._24_8_; + uVar5 = s_psrc1_>sameSize__psrc2_____type1_004607f0._16_8_; + uVar4 = s_psrc1_>sameSize__psrc2_____type1_004607f0._8_8_; + uVar47 = s_psrc1_>sameSize__psrc2_____type1_004607f0._0_8_; + *(undefined8 *)(pcVar25 + 0x20) = s_psrc1_>sameSize__psrc2_____type1_004607f0._32_8_; + pcVar25[0x28] = cVar14; + *(undefined8 *)pcVar25 = uVar47; + *(undefined8 *)(pcVar25 + 8) = uVar4; + *(undefined8 *)(pcVar25 + 0x10) = uVar5; + *(undefined8 *)(pcVar25 + 0x18) = uVar6; + cv::error(-0xd7,(String *)&local_418, + "void cv::binary_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, void (* const*)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x62a); + bVar10 = false; + cv::String::deallocate((String *)&local_418); + } + else { + bVar10 = false; + } + } + } +LAB_00249580: + local_640 = (ulong)(int)(uVar21 << (ulong)((uint)(0xfa50L >> (uVar48 << 1)) & 3)); + uVar23 = 0; + if (local_640 != 0) { + uVar23 = (local_640 + 0x3ff) / local_640; + } + if (bVar43 == 0) { + pcVar26 = (code *)0x0; + bVar11 = false; + } + else { + uVar21 = cv::_InputArray::type(param_4,-1); + if ((1 < uVar21) || (cVar14 = cv::_InputArray::sameSize(param_4,p_Var39), cVar14 == '\0')) { + local_418 = (undefined8 *)0x0; + local_410 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_418,0x3c); + uVar9 = s__mtype____CV_8U____mtype____CV_8_00460820._56_4_; + uVar8 = s__mtype____CV_8U____mtype____CV_8_00460820._40_8_; + uVar7 = s__mtype____CV_8U____mtype____CV_8_00460820._32_8_; + uVar6 = s__mtype____CV_8U____mtype____CV_8_00460820._24_8_; + uVar5 = s__mtype____CV_8U____mtype____CV_8_00460820._16_8_; + uVar4 = s__mtype____CV_8U____mtype____CV_8_00460820._8_8_; + uVar47 = s__mtype____CV_8U____mtype____CV_8_00460820._0_8_; + *(undefined8 *)(pcVar25 + 0x30) = s__mtype____CV_8U____mtype____CV_8_00460820._48_8_; + *(undefined4 *)(pcVar25 + 0x38) = uVar9; + *(undefined8 *)pcVar25 = uVar47; + *(undefined8 *)(pcVar25 + 8) = uVar4; + *(undefined8 *)(pcVar25 + 0x10) = uVar5; + *(undefined8 *)(pcVar25 + 0x18) = uVar6; + *(undefined8 *)(pcVar25 + 0x20) = uVar7; + *(undefined8 *)(pcVar25 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_418, + "void cv::binary_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, void (* const*)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x635); + cv::String::deallocate((String *)&local_418); + } + bVar11 = true; + pcVar26 = (code *)FUN_0028cd18(local_640); + cVar14 = cv::_InputArray::sameSize(param_3,p_Var39); + if (cVar14 != '\0') { + uVar21 = cv::_InputArray::type(param_3,-1); + bVar11 = uVar21 != uVar42; + } + } + local_418 = &local_408; + local_410 = 0x408; + cv::_OutputArray::createSameSize((_OutputArray *)param_3,p_Var39,uVar42); + if (bVar13 < bVar11) { + local_4d0 = &local_538; + local_4c8 = 0x100000001; + local_468 = 0; + local_478 = 0; + local_470 = 0; + local_538 = 0; + local_4d8 = 0xc1020006; + cv::_OutputArray::setTo + ((_OutputArray *)param_3,(_InputArray *)&local_4d8,(_InputArray *)&local_478); + } + iVar15 = cv::_InputArray::kind(p_Var39); + if (iVar15 == 0x10000) { + pMVar31 = *(Mat **)(p_Var39 + 8); + local_558 = &local_590; + local_550 = &local_548; + local_598 = *(uint *)pMVar31; + local_594 = *(int *)(pMVar31 + 4); + local_590 = *(undefined4 *)(pMVar31 + 8); + local_58c = *(undefined4 *)(pMVar31 + 0xc); + local_588 = *(undefined8 *)(pMVar31 + 0x10); + local_580 = *(undefined8 *)(pMVar31 + 0x18); + local_578 = *(undefined8 *)(pMVar31 + 0x20); + local_570 = *(undefined8 *)(pMVar31 + 0x28); + local_568 = *(undefined8 *)(pMVar31 + 0x30); + local_560 = *(long *)(pMVar31 + 0x38); + local_540 = 0; + local_548 = 0; + if (local_560 != 0) { + piVar33 = (int *)(local_560 + 0x14); + do { + cVar14 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar11) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (2 < *(int *)(pMVar31 + 4)) { + local_594 = 0; + cv::Mat::copySize((Mat *)&local_598,pMVar31); + } + } + else { + cv::_InputArray::getMat_((int)p_Var39); + } + local_668 = (Mat *)&local_598; + iVar15 = cv::_InputArray::kind(param_2); + if (iVar15 == 0x10000) { + pMVar31 = *(Mat **)(param_2 + 8); + local_4f8 = &local_530; + local_4f0 = &local_4e8; + local_528 = *(undefined8 *)(pMVar31 + 0x10); + local_538 = *(undefined8 *)pMVar31; + local_530 = *(int *)(pMVar31 + 8); + local_52c = *(int *)(pMVar31 + 0xc); + local_520 = *(undefined8 *)(pMVar31 + 0x18); + local_518 = *(undefined8 *)(pMVar31 + 0x20); + local_510 = *(undefined8 *)(pMVar31 + 0x28); + local_508 = *(undefined8 *)(pMVar31 + 0x30); + local_500 = *(long *)(pMVar31 + 0x38); + local_4e0 = 0; + local_4e8 = 0; + if (local_500 != 0) { + piVar33 = (int *)(local_500 + 0x14); + do { + cVar14 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar11) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (2 < *(int *)(pMVar31 + 4)) { + /* WARNING: Ignoring partial resolution of indirect */ + local_538._4_4_ = 0; + cv::Mat::copySize((Mat *)&local_538,pMVar31); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + local_670 = (Mat *)&local_538; + iVar15 = cv::_InputArray::kind(param_3); + if (iVar15 == 0x10000) { + pMVar31 = *(Mat **)(param_3 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(uint *)pMVar31; + local_4c8 = *(undefined8 *)(pMVar31 + 0x10); + local_4d4 = *(int *)(pMVar31 + 4); + local_4d0 = *(undefined8 **)(pMVar31 + 8); + local_4c0 = *(undefined8 *)(pMVar31 + 0x18); + local_4b8 = *(undefined8 *)(pMVar31 + 0x20); + local_4b0 = *(undefined8 *)(pMVar31 + 0x28); + local_4a8 = *(undefined8 *)(pMVar31 + 0x30); + local_4a0 = *(long *)(pMVar31 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar33 = (int *)(local_4a0 + 0x14); + do { + cVar14 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar11) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (2 < *(int *)(pMVar31 + 4)) { + local_4d4 = 0; + cv::Mat::copySize((Mat *)&local_4d8,pMVar31); + } + } + else { + cv::_InputArray::getMat_((int)param_3); + } + local_678 = (Mat *)&local_4d8; + iVar15 = cv::_InputArray::kind(param_4); + if (iVar15 == 0x10000) { + local_438 = &local_470; + local_430 = &local_428; + pMVar31 = *(Mat **)(param_4 + 8); + local_478 = *(uint *)pMVar31; + local_468 = *(undefined8 *)(pMVar31 + 0x10); + local_474 = *(int *)(pMVar31 + 4); + local_470 = *(undefined8 *)(pMVar31 + 8); + local_460 = *(undefined8 *)(pMVar31 + 0x18); + local_458 = *(undefined8 *)(pMVar31 + 0x20); + local_450 = *(undefined8 *)(pMVar31 + 0x28); + local_448 = *(undefined8 *)(pMVar31 + 0x30); + local_440 = *(long *)(pMVar31 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar33 = (int *)(local_440 + 0x14); + do { + cVar14 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar11) { + *piVar33 = *piVar33 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (*(int *)(pMVar31 + 4) < 3) { + local_428 = **(undefined8 **)(pMVar31 + 0x48); + local_420 = (*(undefined8 **)(pMVar31 + 0x48))[1]; + } + else { + local_474 = 0; + cv::Mat::copySize((Mat *)&local_478,pMVar31); + } + } + else { + cv::_InputArray::getMat_((int)param_4); + } + if (param_6 == '\0') { + pcVar46 = (code *)param_5[(int)uVar48]; + } + else { + pcVar46 = (code *)*param_5; + uVar44 = (uint)local_640; + } + if (!bVar10) { + local_600 = local_668; + local_5f8 = local_670; + local_5e0 = 0; + local_5f0 = local_678; + local_5e8 = (Mat *)&local_478; + cv::NAryMatIterator::NAryMatIterator(aNStack_5d8,&local_600,&local_620,-1); + uVar24 = local_5b0; + if (0x7fffffff < (long)(int)uVar44 * local_5b0) { + iVar15 = 0; + if (uVar44 != 0) { + iVar15 = 0x7fffffff / (int)uVar44; + } + uVar24 = (ulong)iVar15; + } + if (bVar43 == 0) { + puVar32 = (undefined8 *)0x0; + uVar23 = local_410; + } + else { + if (uVar23 < uVar24) { + uVar24 = uVar23; + } + uVar40 = uVar24 * local_640; + puVar32 = local_418; + uVar23 = uVar40; + if (local_410 <= uVar40 && uVar40 - local_410 != 0) { + if (local_418 != &local_408) { + if (local_418 != (undefined8 *)0x0) { + operator_delete__(local_418); + } + local_418 = &local_408; + local_410 = 0x408; + } + puVar32 = &local_408; + uVar23 = local_410; + if (0x408 < uVar40) { + local_418 = operator_new__(uVar40); + puVar32 = local_418; + uVar23 = uVar40; + } + } + } + local_410 = uVar23; + uVar23 = 0; + if (local_5b8 != 0) { + do { + uVar40 = local_5b0; + uVar35 = uVar24; + if (local_5b0 != 0) { + do { + uVar36 = uVar24; + if (uVar40 < uVar24) { + uVar36 = uVar40; + } + puVar29 = puVar32; + if (bVar43 == 0) { + puVar29 = local_610; + } + iVar15 = (int)uVar36; + local_630[1] = 1; + local_630[0] = uVar44 * iVar15; + (*pcVar46)(local_620,0,local_618,0,puVar29,0,local_630,0); + if (bVar43 != 0) { + local_630[1] = 1; + local_630[0] = iVar15; + (*pcVar26)(puVar32,0,local_608,0,local_610,0,local_630,&local_640); + local_608 = local_608 + iVar15; + } + lVar41 = (long)(iVar15 * (int)local_640); + local_620 = local_620 + lVar41; + local_618 = local_618 + lVar41; + local_610 = (undefined8 *)((long)local_610 + lVar41); + bVar10 = uVar35 < local_5b0; + uVar40 = uVar40 - uVar24; + uVar35 = uVar35 + uVar24; + } while (bVar10); + } + uVar23 = uVar23 + 1; + cv::NAryMatIterator::operator++(aNStack_5d8); + } while (uVar23 < local_5b8); + } + goto LAB_00249d80; + } + local_600 = local_668; + local_5e8 = (Mat *)0x0; + local_5f8 = local_678; + local_5f0 = (Mat *)&local_478; + cv::NAryMatIterator::NAryMatIterator(aNStack_5d8,&local_600,&local_620,-1); + if (local_5b0 < uVar23) { + uVar23 = local_5b0; + } + lVar41 = 2; + if (bVar43 == 0) { + lVar41 = 1; + } + lVar30 = uVar23 * local_640; + uVar24 = lVar41 * lVar30 + 0x20; + puVar32 = local_418; + if (local_410 < uVar24) { + if (local_418 != &local_408) { + if (local_418 != (undefined8 *)0x0) { + operator_delete__(local_418); + } + local_418 = &local_408; + local_410 = 0x408; + } + if (uVar24 < 0x409) { + lVar30 = uVar23 * local_640; + puVar32 = &local_408; + uVar24 = local_410; + } + else { + local_418 = operator_new__(uVar24); + lVar30 = uVar23 * local_640; + puVar32 = local_418; + } + } + local_410 = uVar24; + uVar24 = (ulong)((long)puVar32 + lVar30 + 0xf) & 0xfffffffffffffff0; + if (local_538._4_4_ < 3) { + iVar15 = local_52c * local_530; + } + else { + iVar15 = 1; + lVar41 = 0; + do { + piVar33 = local_4f8 + lVar41; + lVar41 = lVar41 + 1; + iVar15 = iVar15 * *piVar33; + } while ((int)lVar41 < local_538._4_4_); + } + uVar21 = local_598 & 7; + iVar16 = (local_598 >> 3 & 0x1ff) + 1; + uVar40 = (ulong)(iVar16 << (ulong)((uint)(0xfa50L >> (uVar21 << 1)) & 3)); + pcVar27 = (code *)FUN_00283fe0((uint)local_538 & 7,local_598 & 0xfff); + local_638[1] = 1; + local_638[0] = iVar15; + if (iVar16 < iVar15) { + local_638[0] = iVar16; + } + (*pcVar27)(local_528,1,0,1,puVar32,1,local_638,0); + if (iVar15 < iVar16) { + if (iVar15 != 1) { + local_630[0] = 0; + local_630[1] = 0; + local_630[2] = 0; + local_630[3] = 0; + pcVar25 = (char *)cv::String::allocate((String *)local_630,8); + *(undefined8 *)pcVar25 = s_scn____1_004607e0._0_8_; + cv::error(-0xd7,(String *)local_630, + "void cv::convertAndUnrollScalar(const cv::Mat&, int, uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x588); + cv::String::deallocate((String *)local_630); + } + uVar35 = 0x88442211UL >> (uVar21 << 2) & 0xf; + if (uVar35 < uVar40) { + uVar36 = uVar40 - uVar35; + if (((undefined8 *)((long)puVar32 + uVar35) < puVar32 + 2) || (uVar36 < 0x16)) { + uVar36 = uVar35; + do { + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + uVar36 = uVar36 + 1; + } while (uVar40 != uVar36); + } + else { + uVar3 = -(long)puVar32 & 0xfU; + if (uVar36 < (-(long)puVar32 & 0xfU)) { + uVar3 = uVar36; + } + uVar28 = uVar35; + if (uVar3 != 0) { + *(undefined1 *)((long)puVar32 + uVar35) = *(undefined1 *)puVar32; + uVar28 = uVar35 + 1; + if (uVar3 != 1) { + *(undefined1 *)((long)puVar32 + uVar35 + 1) = *(undefined1 *)((long)puVar32 + 1); + uVar28 = uVar35 + 2; + if (uVar3 != 2) { + *(undefined1 *)((long)puVar32 + uVar35 + 2) = *(undefined1 *)((long)puVar32 + 2); + uVar28 = uVar35 + 3; + if (uVar3 != 3) { + *(undefined1 *)((long)puVar32 + uVar35 + 3) = *(undefined1 *)((long)puVar32 + 3); + uVar28 = uVar35 + 4; + if (uVar3 != 4) { + *(undefined1 *)((long)puVar32 + uVar35 + 4) = *(undefined1 *)((long)puVar32 + 4); + uVar28 = uVar35 + 5; + if (uVar3 != 5) { + *(undefined1 *)((long)puVar32 + uVar35 + 5) = *(undefined1 *)((long)puVar32 + 5) + ; + uVar28 = uVar35 + 6; + if (uVar3 != 6) { + *(undefined1 *)((long)puVar32 + uVar35 + 6) = + *(undefined1 *)((long)puVar32 + 6); + uVar28 = uVar35 + 7; + if (uVar3 != 7) { + *(undefined1 *)((long)puVar32 + uVar35 + 7) = + *(undefined1 *)((long)puVar32 + 7); + uVar28 = uVar35 + 8; + if (uVar3 != 8) { + *(undefined1 *)((long)puVar32 + uVar35 + 8) = *(undefined1 *)(puVar32 + 1) + ; + uVar28 = uVar35 + 9; + if (uVar3 != 9) { + *(undefined1 *)((long)puVar32 + uVar35 + 9) = + *(undefined1 *)((long)puVar32 + 9); + uVar28 = uVar35 + 10; + if (uVar3 != 10) { + *(undefined1 *)((long)puVar32 + uVar35 + 10) = + *(undefined1 *)((long)puVar32 + 10); + uVar28 = uVar35 + 0xb; + if (uVar3 != 0xb) { + *(undefined1 *)((long)puVar32 + uVar35 + 0xb) = + *(undefined1 *)((long)puVar32 + 0xb); + uVar28 = uVar35 + 0xc; + if (uVar3 != 0xc) { + *(undefined1 *)((long)puVar32 + uVar35 + 0xc) = + *(undefined1 *)((long)puVar32 + 0xc); + uVar28 = uVar35 + 0xd; + if (uVar3 != 0xd) { + *(undefined1 *)((long)puVar32 + uVar35 + 0xd) = + *(undefined1 *)((long)puVar32 + 0xd); + uVar28 = uVar35 + 0xe; + if (uVar3 == 0xf) { + *(undefined1 *)((long)puVar32 + uVar35 + 0xe) = + *(undefined1 *)((long)puVar32 + 0xe); + uVar28 = uVar35 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar2 = ((uVar36 - uVar3) - 0x10 >> 4) + 1; + lVar41 = uVar2 * 0x10; + if (0xe < (uVar36 - 1) - uVar3) { + uVar38 = 0; + puVar29 = (undefined8 *)((long)puVar32 + uVar3); + puVar37 = (undefined8 *)((long)puVar32 + uVar3 + uVar35); + do { + uVar47 = *puVar29; + uVar38 = uVar38 + 1; + puVar37[1] = puVar29[1]; + *puVar37 = uVar47; + puVar29 = puVar29 + 2; + puVar37 = puVar37 + 2; + } while (uVar38 < uVar2); + uVar28 = uVar28 + lVar41; + if (lVar41 - (uVar36 - uVar3) == 0) goto LAB_0024a480; + } + uVar36 = uVar28 + 1; + *(undefined1 *)((long)puVar32 + uVar28) = *(undefined1 *)((long)puVar32 + (uVar28 - uVar35)) + ; + if (uVar36 < uVar40) { + uVar3 = uVar28 + 2; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar3 < uVar40) { + uVar36 = uVar28 + 3; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar35)); + if (uVar36 < uVar40) { + uVar3 = uVar28 + 4; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar3 < uVar40) { + uVar36 = uVar28 + 5; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar35)); + if (uVar36 < uVar40) { + uVar3 = uVar28 + 6; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar3 < uVar40) { + uVar36 = uVar28 + 7; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar35)); + if (uVar36 < uVar40) { + uVar3 = uVar28 + 8; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar3 < uVar40) { + uVar36 = uVar28 + 9; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar35)); + if (uVar36 < uVar40) { + uVar3 = uVar28 + 10; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar3 < uVar40) { + uVar36 = uVar28 + 0xb; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar35)); + if (uVar36 < uVar40) { + uVar3 = uVar28 + 0xc; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar3 < uVar40) { + uVar36 = uVar28 + 0xd; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar35)); + if (uVar36 < uVar40) { + uVar28 = uVar28 + 0xe; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar35)); + if (uVar28 < uVar40) { + *(undefined1 *)((long)puVar32 + uVar28) = + *(undefined1 *)((long)puVar32 + (uVar28 - uVar35)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0024a480: + uVar35 = uVar23 * uVar40; + if (uVar40 < uVar35) { + uVar36 = uVar35 - uVar40; + if (((undefined8 *)((long)puVar32 + uVar40) < puVar32 + 2) || (uVar36 < 0x16)) { + puVar29 = puVar32; + do { + *(undefined1 *)((long)puVar29 + uVar40) = *(undefined1 *)puVar29; + puVar29 = (undefined8 *)((long)puVar29 + 1); + } while (puVar29 != (undefined8 *)((long)puVar32 + uVar36)); + } + else { + uVar3 = uVar36; + if ((-(long)puVar32 & 0xfU) < uVar36) { + uVar3 = -(long)puVar32 & 0xfU; + } + uVar28 = uVar40; + if (uVar3 != 0) { + *(undefined1 *)((long)puVar32 + uVar40) = *(undefined1 *)puVar32; + uVar28 = uVar40 + 1; + if (uVar3 != 1) { + *(undefined1 *)((long)puVar32 + uVar40 + 1) = *(undefined1 *)((long)puVar32 + 1); + uVar28 = uVar40 + 2; + if (uVar3 != 2) { + *(undefined1 *)((long)puVar32 + uVar40 + 2) = *(undefined1 *)((long)puVar32 + 2); + uVar28 = uVar40 + 3; + if (uVar3 != 3) { + *(undefined1 *)((long)puVar32 + uVar40 + 3) = *(undefined1 *)((long)puVar32 + 3); + uVar28 = uVar40 + 4; + if (uVar3 != 4) { + *(undefined1 *)((long)puVar32 + uVar40 + 4) = *(undefined1 *)((long)puVar32 + 4); + uVar28 = uVar40 + 5; + if (uVar3 != 5) { + *(undefined1 *)((long)puVar32 + uVar40 + 5) = *(undefined1 *)((long)puVar32 + 5); + uVar28 = uVar40 + 6; + if (uVar3 != 6) { + *(undefined1 *)((long)puVar32 + uVar40 + 6) = *(undefined1 *)((long)puVar32 + 6) + ; + uVar28 = uVar40 + 7; + if (uVar3 != 7) { + *(undefined1 *)((long)puVar32 + uVar40 + 7) = + *(undefined1 *)((long)puVar32 + 7); + uVar28 = uVar40 + 8; + if (uVar3 != 8) { + *(undefined1 *)((long)puVar32 + uVar40 + 8) = *(undefined1 *)(puVar32 + 1); + uVar28 = uVar40 + 9; + if (uVar3 != 9) { + *(undefined1 *)((long)puVar32 + uVar40 + 9) = + *(undefined1 *)((long)puVar32 + 9); + uVar28 = uVar40 + 10; + if (uVar3 != 10) { + *(undefined1 *)((long)puVar32 + uVar40 + 10) = + *(undefined1 *)((long)puVar32 + 10); + uVar28 = uVar40 + 0xb; + if (uVar3 != 0xb) { + *(undefined1 *)((long)puVar32 + uVar40 + 0xb) = + *(undefined1 *)((long)puVar32 + 0xb); + uVar28 = uVar40 + 0xc; + if (uVar3 != 0xc) { + *(undefined1 *)((long)puVar32 + uVar40 + 0xc) = + *(undefined1 *)((long)puVar32 + 0xc); + uVar28 = uVar40 + 0xd; + if (uVar3 != 0xd) { + *(undefined1 *)((long)puVar32 + uVar40 + 0xd) = + *(undefined1 *)((long)puVar32 + 0xd); + uVar28 = uVar40 + 0xe; + if (uVar3 == 0xf) { + *(undefined1 *)((long)puVar32 + uVar40 + 0xe) = + *(undefined1 *)((long)puVar32 + 0xe); + uVar28 = uVar40 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar2 = ((uVar36 - uVar3) - 0x10 >> 4) + 1; + lVar41 = uVar2 * 0x10; + if (0xe < (uVar36 - 1) - uVar3) { + uVar38 = 0; + puVar29 = (undefined8 *)((long)puVar32 + uVar3); + puVar37 = (undefined8 *)((long)puVar32 + uVar3 + uVar40); + do { + uVar47 = *puVar29; + uVar38 = uVar38 + 1; + puVar37[1] = puVar29[1]; + *puVar37 = uVar47; + puVar29 = puVar29 + 2; + puVar37 = puVar37 + 2; + } while (uVar38 < uVar2); + uVar28 = uVar28 + lVar41; + if (lVar41 - (uVar36 - uVar3) == 0) goto LAB_0024a7a0; + } + uVar36 = uVar28 + 1; + *(undefined1 *)((long)puVar32 + uVar28) = *(undefined1 *)((long)puVar32 + (uVar28 - uVar40)); + if (uVar36 <= uVar35 && uVar35 - uVar36 != 0) { + uVar3 = uVar28 + 2; + *(undefined1 *)((long)puVar32 + uVar36) = *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)) + ; + if (uVar3 <= uVar35 && uVar35 - uVar3 != 0) { + uVar36 = uVar28 + 3; + *(undefined1 *)((long)puVar32 + uVar3) = *(undefined1 *)((long)puVar32 + (uVar3 - uVar40)) + ; + if (uVar36 < uVar35) { + uVar3 = uVar28 + 4; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)); + if (uVar3 <= uVar35 && uVar35 - uVar3 != 0) { + uVar36 = uVar28 + 5; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar40)); + if (uVar36 <= uVar35 && uVar35 - uVar36 != 0) { + uVar3 = uVar28 + 6; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)); + if (uVar3 <= uVar35 && uVar35 - uVar3 != 0) { + uVar36 = uVar28 + 7; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar40)); + if (uVar36 <= uVar35 && uVar35 - uVar36 != 0) { + uVar3 = uVar28 + 8; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)); + if (uVar3 <= uVar35 && uVar35 - uVar3 != 0) { + uVar36 = uVar28 + 9; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar40)); + if (uVar36 <= uVar35 && uVar35 - uVar36 != 0) { + uVar3 = uVar28 + 10; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)); + if (uVar3 <= uVar35 && uVar35 - uVar3 != 0) { + uVar36 = uVar28 + 0xb; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar40)); + if (uVar36 <= uVar35 && uVar35 - uVar36 != 0) { + uVar3 = uVar28 + 0xc; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)); + if (uVar3 <= uVar35 && uVar35 - uVar3 != 0) { + uVar36 = uVar28 + 0xd; + *(undefined1 *)((long)puVar32 + uVar3) = + *(undefined1 *)((long)puVar32 + (uVar3 - uVar40)); + if (uVar36 <= uVar35 && uVar35 - uVar36 != 0) { + uVar28 = uVar28 + 0xe; + *(undefined1 *)((long)puVar32 + uVar36) = + *(undefined1 *)((long)puVar32 + (uVar36 - uVar40)); + if (uVar28 <= uVar35 && uVar35 - uVar28 != 0) { + *(undefined1 *)((long)puVar32 + uVar28) = + *(undefined1 *)((long)puVar32 + (uVar28 - uVar40)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0024a7a0: + uVar40 = 0; + while (uVar40 < local_5b8) { + if (local_5b0 == 0) { +LAB_0024a844: + uVar40 = uVar40 + 1; + cv::NAryMatIterator::operator++(aNStack_5d8); + } + else { + uVar35 = local_5b0; + uVar36 = uVar23; + if (bVar43 == 0) { + do { + uVar3 = uVar23; + if (uVar35 < uVar23) { + uVar3 = uVar35; + } + local_630[1] = 1; + local_630[0] = uVar44 * (int)uVar3; + (*pcVar46)(local_620,0,puVar32,0,local_618,0,local_630,0); + uVar35 = uVar35 - uVar23; + lVar41 = (long)((int)uVar3 * (int)local_640); + local_620 = local_620 + lVar41; + local_618 = local_618 + lVar41; + bVar10 = uVar36 < local_5b0; + uVar36 = uVar36 + uVar23; + } while (bVar10); + goto LAB_0024a844; + } + do { + uVar3 = uVar23; + if (uVar35 < uVar23) { + uVar3 = uVar35; + } + iVar15 = (int)uVar3; + local_630[1] = 1; + local_630[0] = uVar44 * iVar15; + (*pcVar46)(local_620,0,puVar32,0,uVar24,0,local_630,0); + local_630[1] = 1; + local_630[0] = iVar15; + (*pcVar26)(uVar24,0,local_610,0,local_618,0,local_630,&local_640); + uVar35 = uVar35 - uVar23; + local_610 = (undefined8 *)((long)local_610 + uVar3); + lVar41 = (long)(iVar15 * (int)local_640); + local_620 = local_620 + lVar41; + local_618 = local_618 + lVar41; + bVar10 = uVar36 < local_5b0; + uVar36 = uVar36 + uVar23; + } while (bVar10); + uVar40 = uVar40 + 1; + cv::NAryMatIterator::operator++(aNStack_5d8); + } + } +LAB_00249d80: + if (local_440 != 0) { + piVar33 = (int *)(local_440 + 0x14); + do { + iVar15 = *piVar33; + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar15 = 0; + puVar32 = local_438; + do { + *(undefined4 *)puVar32 = 0; + iVar15 = iVar15 + 1; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar15 < local_474); + } + if (local_430 != &local_428) { + cv::fastFree(local_430); + } + if (local_4a0 != 0) { + piVar33 = (int *)(local_4a0 + 0x14); + do { + iVar15 = *piVar33; + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate(local_678); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar15 = 0; + puVar32 = local_498; + do { + iVar15 = iVar15 + 1; + *(undefined4 *)puVar32 = 0; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (iVar15 < local_4d4); + } + if (local_490 != &local_488) { + cv::fastFree(local_490); + } + if (local_500 != 0) { + piVar33 = (int *)(local_500 + 0x14); + do { + iVar15 = *piVar33; + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate(local_670); + } + } + local_500 = 0; + local_528 = 0; + local_510 = 0; + local_518 = 0; + local_520 = 0; + if (0 < local_538._4_4_) { + iVar15 = 0; + piVar33 = local_4f8; + do { + iVar15 = iVar15 + 1; + *piVar33 = 0; + piVar33 = piVar33 + 1; + } while (iVar15 < local_538._4_4_); + } + if (local_4f0 != &local_4e8) { + cv::fastFree(local_4f0); + } + if (local_560 != 0) { + piVar33 = (int *)(local_560 + 0x14); + do { + iVar15 = *piVar33; + cVar14 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar10) { + *piVar33 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate(local_668); + } + } + local_560 = 0; + local_588 = 0; + local_570 = 0; + local_578 = 0; + local_580 = 0; + if (0 < local_594) { + iVar15 = 0; + puVar34 = local_558; + do { + iVar15 = iVar15 + 1; + *puVar34 = 0; + puVar34 = puVar34 + 1; + } while (iVar15 < local_594); + } + if (local_550 != &local_548) { + cv::fastFree(local_550); + } + if ((local_418 != &local_408) && (local_418 != (undefined8 *)0x0)) { + operator_delete__(local_418); + } + return; +} + + +================================================================== + +### FUNC 0024b2e8 (160 bytes) name=operator== + +/* cv::MatSize::TEMPNAMEPLACEHOLDERVALUE(cv::MatSize const&) const */ + +bool __thiscall cv::MatSize::operator==(MatSize *this,MatSize *param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + int *piVar4; + + piVar4 = *(int **)this; + piVar3 = *(int **)param_1; + iVar2 = piVar4[-1]; + if (iVar2 == piVar3[-1]) { + if (iVar2 != 2) { + if (0 < iVar2) { + if (*piVar4 != *piVar3) { + return false; + } + piVar1 = piVar4 + (iVar2 - 1); + while (piVar3 = piVar3 + 1, piVar4 != piVar1) { + piVar4 = piVar4 + 1; + if (*piVar4 != *piVar3) { + return false; + } + } + } + return true; + } + if (*piVar4 == *piVar3) { + return piVar4[1] == piVar3[1]; + } + } + return false; +} + + +================================================================== + +### FUNC 0024b388 (316 bytes) name=FUN_0024b388 + +bool FUN_0024b388(_InputArray *param_1,ulong param_2,int param_3,int param_4) + +{ + uint uVar1; + char cVar2; + int iVar3; + int local_8; + uint local_4; + + iVar3 = cv::_InputArray::dims(param_1,-1); + if ((iVar3 < 3) && (cVar2 = cv::_InputArray::isContinuous(param_1,-1), cVar2 != '\0')) { + cv::_InputArray::size((int)param_1); + if (local_8 != 1) { + if (local_4 != 1) { + return false; + } + if ((param_4 == 0x20000) && (param_3 != 0x20000)) { + return false; + } + return local_8 == ((uint)((param_2 & 0xffffffff) >> 3) & 0x1ff) + 1; + } + if (param_4 != 0x20000 || param_3 == 0x20000) { + uVar1 = ((uint)((param_2 & 0xffffffff) >> 3) & 0x1ff) + 1; + if (local_4 == 1) { + return (bool)cVar2; + } + if (local_4 == uVar1) { + return (bool)cVar2; + } + if (local_4 != 4) { + return false; + } + iVar3 = cv::_InputArray::type(param_1,-1); + return iVar3 == 6 && uVar1 < 5; + } + } + return false; +} + + +================================================================== + +### FUNC 0024b4c4 (2012 bytes) name=FUN_0024b4c4 + +void FUN_0024b4c4(uint *param_1,ulong param_2,undefined1 *param_3,long param_4) + +{ + long lVar1; + int iVar2; + ulong uVar3; + ulong uVar4; + undefined1 *puVar5; + uint uVar6; + code *pcVar7; + char *pcVar8; + ulong uVar9; + ulong uVar10; + undefined8 *puVar11; + ulong uVar12; + undefined8 *puVar13; + int iVar14; + long lVar15; + ulong uVar16; + ulong uVar17; + undefined8 uVar18; + int local_10 [4]; + + if ((int)param_1[1] < 3) { + iVar14 = param_1[3] * param_1[2]; + } + else { + lVar15 = 0; + iVar14 = 1; + do { + lVar1 = lVar15 * 4; + lVar15 = lVar15 + 1; + iVar14 = iVar14 * *(int *)(*(long *)(param_1 + 0x10) + lVar1); + } while ((int)lVar15 < (int)param_1[1]); + } + uVar6 = (uint)param_2 & 7; + iVar2 = ((uint)(param_2 >> 3) & 0x1ff) + 1; + pcVar7 = (code *)FUN_00283fe0(*param_1 & 7); + local_10[0] = iVar14; + if (iVar2 < iVar14) { + local_10[0] = iVar2; + } + local_10[1] = 1; + (*pcVar7)(*(undefined8 *)(param_1 + 4),1,0,1,param_3,1,(String *)local_10,0); + uVar17 = (ulong)(iVar2 << (ulong)((uint)(0xfa50L >> (uVar6 << 1)) & 3)); + if (iVar14 < iVar2) { + if (iVar14 != 1) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar8 = (char *)cv::String::allocate((String *)local_10,8); + *(undefined8 *)pcVar8 = s_scn____1_004607e0._0_8_; + cv::error(-0xd7,(String *)local_10, + "void cv::convertAndUnrollScalar(const cv::Mat&, int, uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x588); + cv::String::deallocate((String *)local_10); + } + uVar9 = 0x88442211UL >> (uVar6 << 2) & 0xf; + if (uVar9 < uVar17) { + uVar12 = uVar17 - uVar9; + if ((uVar12 < 0x16) || (param_3 + uVar9 < param_3 + 0x10)) { + uVar12 = uVar9; + do { + param_3[uVar12] = param_3[uVar12 - uVar9]; + uVar12 = uVar12 + 1; + } while (uVar17 != uVar12); + } + else { + uVar4 = uVar12; + if ((-(long)param_3 & 0xfU) < uVar12) { + uVar4 = -(long)param_3 & 0xfU; + } + uVar10 = uVar9; + if (uVar4 != 0) { + param_3[uVar9] = *param_3; + uVar10 = uVar9 + 1; + if (uVar4 != 1) { + param_3[uVar9 + 1] = param_3[1]; + uVar10 = uVar9 + 2; + if (uVar4 != 2) { + param_3[uVar9 + 2] = param_3[2]; + uVar10 = uVar9 + 3; + if (uVar4 != 3) { + param_3[uVar9 + 3] = param_3[3]; + uVar10 = uVar9 + 4; + if (uVar4 != 4) { + param_3[uVar9 + 4] = param_3[4]; + uVar10 = uVar9 + 5; + if (uVar4 != 5) { + param_3[uVar9 + 5] = param_3[5]; + uVar10 = uVar9 + 6; + if (uVar4 != 6) { + param_3[uVar9 + 6] = param_3[6]; + uVar10 = uVar9 + 7; + if (uVar4 != 7) { + param_3[uVar9 + 7] = param_3[7]; + uVar10 = uVar9 + 8; + if (uVar4 != 8) { + param_3[uVar9 + 8] = param_3[8]; + uVar10 = uVar9 + 9; + if (uVar4 != 9) { + param_3[uVar9 + 9] = param_3[9]; + uVar10 = uVar9 + 10; + if (uVar4 != 10) { + param_3[uVar9 + 10] = param_3[10]; + uVar10 = uVar9 + 0xb; + if (uVar4 != 0xb) { + param_3[uVar9 + 0xb] = param_3[0xb]; + uVar10 = uVar9 + 0xc; + if (uVar4 != 0xc) { + param_3[uVar9 + 0xc] = param_3[0xc]; + uVar10 = uVar9 + 0xd; + if (uVar4 != 0xd) { + param_3[uVar9 + 0xd] = param_3[0xd]; + uVar10 = uVar9 + 0xe; + if (uVar4 == 0xf) { + param_3[uVar9 + 0xe] = param_3[0xe]; + uVar10 = uVar9 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar3 = ((uVar12 - uVar4) - 0x10 >> 4) + 1; + lVar15 = uVar3 * 0x10; + if (0xe < (uVar12 - 1) - uVar4) { + uVar16 = 0; + puVar11 = (undefined8 *)(param_3 + uVar4); + puVar13 = (undefined8 *)(param_3 + uVar4 + uVar9); + do { + uVar18 = *puVar11; + uVar16 = uVar16 + 1; + puVar13[1] = puVar11[1]; + *puVar13 = uVar18; + puVar11 = puVar11 + 2; + puVar13 = puVar13 + 2; + } while (uVar16 < uVar3); + uVar10 = uVar10 + lVar15; + if (uVar12 - uVar4 == lVar15) goto LAB_0024b8ec; + } + uVar12 = uVar10 + 1; + param_3[uVar10] = param_3[uVar10 - uVar9]; + if (uVar12 < uVar17) { + uVar4 = uVar10 + 2; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar4 < uVar17) { + uVar12 = uVar10 + 3; + param_3[uVar4] = param_3[uVar4 - uVar9]; + if (uVar12 < uVar17) { + uVar4 = uVar10 + 4; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar4 < uVar17) { + uVar12 = uVar10 + 5; + param_3[uVar4] = param_3[uVar4 - uVar9]; + if (uVar12 < uVar17) { + uVar4 = uVar10 + 6; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar4 < uVar17) { + uVar12 = uVar10 + 7; + param_3[uVar4] = param_3[uVar4 - uVar9]; + if (uVar12 < uVar17) { + uVar4 = uVar10 + 8; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar4 < uVar17) { + uVar12 = uVar10 + 9; + param_3[uVar4] = param_3[uVar4 - uVar9]; + if (uVar12 < uVar17) { + uVar4 = uVar10 + 10; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar4 < uVar17) { + uVar12 = uVar10 + 0xb; + param_3[uVar4] = param_3[uVar4 - uVar9]; + if (uVar12 < uVar17) { + uVar4 = uVar10 + 0xc; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar4 < uVar17) { + uVar12 = uVar10 + 0xd; + param_3[uVar4] = param_3[uVar4 - uVar9]; + if (uVar12 < uVar17) { + uVar10 = uVar10 + 0xe; + param_3[uVar12] = param_3[uVar12 - uVar9]; + if (uVar10 < uVar17) { + param_3[uVar10] = param_3[uVar10 - uVar9]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0024b8ec: + uVar9 = uVar17 * param_4; + if (uVar17 < uVar9) { + uVar12 = uVar9 - uVar17; + if ((param_3 + uVar17 < param_3 + 0x10) || (uVar12 < 0x16)) { + puVar5 = param_3 + uVar12; + do { + param_3[uVar17] = *param_3; + param_3 = param_3 + 1; + } while (param_3 != puVar5); + return; + } + uVar4 = uVar12; + if ((-(long)param_3 & 0xfU) < uVar12) { + uVar4 = -(long)param_3 & 0xfU; + } + uVar10 = uVar17; + if (uVar4 != 0) { + param_3[uVar17] = *param_3; + uVar10 = uVar17 + 1; + if (uVar4 != 1) { + param_3[uVar17 + 1] = param_3[1]; + uVar10 = uVar17 + 2; + if (uVar4 != 2) { + param_3[uVar17 + 2] = param_3[2]; + uVar10 = uVar17 + 3; + if (uVar4 != 3) { + param_3[uVar17 + 3] = param_3[3]; + uVar10 = uVar17 + 4; + if (uVar4 != 4) { + param_3[uVar17 + 4] = param_3[4]; + uVar10 = uVar17 + 5; + if (uVar4 != 5) { + param_3[uVar17 + 5] = param_3[5]; + uVar10 = uVar17 + 6; + if (uVar4 != 6) { + param_3[uVar17 + 6] = param_3[6]; + uVar10 = uVar17 + 7; + if (uVar4 != 7) { + param_3[uVar17 + 7] = param_3[7]; + uVar10 = uVar17 + 8; + if (uVar4 != 8) { + param_3[uVar17 + 8] = param_3[8]; + uVar10 = uVar17 + 9; + if (uVar4 != 9) { + param_3[uVar17 + 9] = param_3[9]; + uVar10 = uVar17 + 10; + if (uVar4 != 10) { + param_3[uVar17 + 10] = param_3[10]; + uVar10 = uVar17 + 0xb; + if (uVar4 != 0xb) { + param_3[uVar17 + 0xb] = param_3[0xb]; + uVar10 = uVar17 + 0xc; + if (uVar4 != 0xc) { + param_3[uVar17 + 0xc] = param_3[0xc]; + uVar10 = uVar17 + 0xd; + if (uVar4 != 0xd) { + param_3[uVar17 + 0xd] = param_3[0xd]; + uVar10 = uVar17 + 0xe; + if (uVar4 == 0xf) { + param_3[uVar17 + 0xe] = param_3[0xe]; + uVar10 = uVar17 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar3 = ((uVar12 - uVar4) - 0x10 >> 4) + 1; + lVar15 = uVar3 * 0x10; + if (0xe < (uVar12 - 1) - uVar4) { + uVar16 = 0; + puVar11 = (undefined8 *)(param_3 + uVar4); + puVar13 = (undefined8 *)(param_3 + uVar4 + uVar17); + do { + uVar18 = *puVar11; + uVar16 = uVar16 + 1; + puVar13[1] = puVar11[1]; + *puVar13 = uVar18; + puVar11 = puVar11 + 2; + puVar13 = puVar13 + 2; + } while (uVar16 < uVar3); + uVar10 = uVar10 + lVar15; + if (uVar12 - uVar4 == lVar15) { + return; + } + } + uVar12 = uVar10 + 1; + param_3[uVar10] = param_3[uVar10 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar4 = uVar10 + 2; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar4 < uVar9) { + uVar12 = uVar10 + 3; + param_3[uVar4] = param_3[uVar4 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar4 = uVar10 + 4; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar4 <= uVar9 && uVar9 - uVar4 != 0) { + uVar12 = uVar10 + 5; + param_3[uVar4] = param_3[uVar4 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar4 = uVar10 + 6; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar4 <= uVar9 && uVar9 - uVar4 != 0) { + uVar12 = uVar10 + 7; + param_3[uVar4] = param_3[uVar4 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar4 = uVar10 + 8; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar4 <= uVar9 && uVar9 - uVar4 != 0) { + uVar12 = uVar10 + 9; + param_3[uVar4] = param_3[uVar4 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar4 = uVar10 + 10; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar4 <= uVar9 && uVar9 - uVar4 != 0) { + uVar12 = uVar10 + 0xb; + param_3[uVar4] = param_3[uVar4 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar4 = uVar10 + 0xc; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar4 <= uVar9 && uVar9 - uVar4 != 0) { + uVar12 = uVar10 + 0xd; + param_3[uVar4] = param_3[uVar4 - uVar17]; + if (uVar12 <= uVar9 && uVar9 - uVar12 != 0) { + uVar10 = uVar10 + 0xe; + param_3[uVar12] = param_3[uVar12 - uVar17]; + if (uVar10 <= uVar9 && uVar9 - uVar10 != 0) { + param_3[uVar10] = param_3[uVar10 - uVar17]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0024bcb4 (8272 bytes) name=FUN_0024bcb4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0024bcb4(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4,uint param_5,long param_6,char param_7,undefined8 param_8) + +{ + ulong uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + undefined8 uVar9; + uint uVar10; + uint uVar11; + bool bVar12; + bool bVar13; + bool bVar14; + byte bVar15; + char cVar16; + byte bVar17; + byte bVar18; + int iVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + int iVar25; + uint uVar26; + ulong uVar27; + ulong uVar28; + char *pcVar29; + void *pvVar30; + undefined8 *puVar31; + code *pcVar32; + code *pcVar33; + code *pcVar34; + code *pcVar35; + code *pcVar36; + ulong uVar37; + long lVar38; + long lVar39; + ulong uVar40; + int *piVar41; + undefined4 *puVar42; + Mat *pMVar43; + code *pcVar44; + ulong uVar45; + uint uVar46; + long lVar47; + uint uVar48; + code *pcVar49; + uint uVar50; + code *pcVar51; + uint uVar52; + _InputArray *p_Var53; + uint uVar54; + ulong uVar55; + uint uVar56; + uint uVar57; + code *pcVar58; + code *local_6e0; + code *local_6b8; + code *local_6a0; + code *local_698; + code *local_690; + code *local_680; + NAryMatIterator *local_678; + ulong local_670; + Mat *local_668; + Mat *local_660; + Mat *local_658; + Mat *local_650; + Mat *local_648; + undefined8 local_640; + undefined8 local_638; + long local_630; + int local_628; + undefined4 local_624; + code *local_620; + code *local_618; + long local_610; + long local_608; + Mat *local_600; + Mat *local_5f8; + Mat *local_5f0; + Mat *local_5e8; + undefined8 local_5e0; + NAryMatIterator aNStack_5d8 [32]; + ulong local_5b8; + ulong local_5b0; + undefined4 local_598; + int local_594; + undefined4 local_590; + undefined4 local_58c; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + undefined8 local_568; + long local_560; + undefined4 *local_558; + undefined8 *local_550; + undefined8 local_548; + undefined8 local_540; + int local_538; + int local_534; + undefined4 local_530; + undefined4 local_52c; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_500; + undefined4 *local_4f8; + undefined8 *local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + undefined8 local_4d8; + int local_4d0; + int local_4cc; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + int *local_498; + undefined8 *local_490; + undefined8 local_488; + undefined8 local_480; + uint local_478; + int local_474; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + long local_440; + undefined8 *local_438; + undefined8 *local_430; + undefined8 local_428; + undefined8 local_420; + undefined8 local_418; + undefined8 *local_410; + long local_408; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + long local_3e0; + undefined8 **local_3d8; + undefined8 *local_3d0; + undefined8 local_3c8; + undefined8 local_3c0; + + iVar19 = cv::_InputArray::kind(param_1); + iVar20 = cv::_InputArray::kind(param_2); + bVar15 = cv::_InputArray::empty(param_4); + uVar27 = cv::_InputArray::type(param_1,-1); + uVar52 = (uint)uVar27; + uVar57 = ((uint)((uVar27 & 0xffffffff) >> 3) & 0x1ff) + 1; + uVar46 = uVar52 & 7; + uVar28 = cv::_InputArray::type(param_2,-1); + uVar50 = (uint)uVar28; + iVar21 = cv::_InputArray::dims(param_1,-1); + uVar48 = ((uint)((uVar28 & 0xffffffff) >> 3) & 0x1ff) + 1; + iVar22 = cv::_InputArray::dims(param_2,-1); + iVar23 = (int)param_1; + if (iVar21 < 3) { + cv::_InputArray::size(iVar23); + } + else { + local_640 = 0; + } + iVar24 = (int)param_2; + if (iVar22 < 3) { + cv::_InputArray::size(iVar24); + } + else { + local_638 = 0; + } + iVar25 = cv::_InputArray::dims(param_1,-1); + if ((iVar25 < 3) && (bVar18 = cv::_InputArray::isContinuous(param_1,-1), bVar18 != 0)) { + cv::_InputArray::size(iVar23); + if ((uint)local_418 == 1) { + if (iVar19 != 0x20000 && iVar20 == 0x20000) goto LAB_0024bdd0; + if (((local_418._4_4_ != 1) && (uVar48 != local_418._4_4_)) && + (bVar18 = 0, local_418._4_4_ == 4)) { + iVar25 = cv::_InputArray::type(param_1,-1); + bVar18 = iVar25 == 6 && uVar48 < 5; + } + } + else { + bVar18 = 0; + if ((local_418._4_4_ == 1) && ((iVar19 == 0x20000 || (bVar18 = 0, iVar20 != 0x20000)))) { + bVar18 = uVar48 == (uint)local_418; + } + } + } + else { +LAB_0024bdd0: + bVar18 = 0; + } + iVar25 = cv::_InputArray::dims(param_2,-1); + if ((iVar25 < 3) && (bVar17 = cv::_InputArray::isContinuous(param_2,-1), bVar17 != 0)) { + cv::_InputArray::size(iVar24); + if ((uint)local_418 == 1) { + if (iVar20 != 0x20000 && iVar19 == 0x20000) goto LAB_0024bde8; + if ((local_418._4_4_ != 1) && (uVar57 != local_418._4_4_)) { + if (local_418._4_4_ == 4) { + iVar25 = cv::_InputArray::type(param_2,-1); + bVar17 = iVar25 == 6 && uVar57 < 5; + } + else { + bVar17 = 0; + } + } + } + else { + bVar17 = 0; + if ((local_418._4_4_ == 1) && ((iVar20 == 0x20000 || (iVar19 != 0x20000)))) { + bVar17 = uVar57 == (uint)local_418; + } + } + } + else { +LAB_0024bde8: + bVar17 = 0; + } + if ((uVar57 == 1) || (iVar19 == iVar20)) { + if ((int)local_640 != (int)local_638) { +LAB_0024be1c: + iVar21 = cv::_InputArray::dims(param_1,-1); + goto joined_r0x0024cc74; + } + if (local_640._4_4_ == local_638._4_4_) { + if (((((iVar21 < 3) && (iVar22 < 3)) && (bVar15 != 0)) && (uVar52 == uVar50)) && + ((((cVar16 = cv::_OutputArray::fixedType(param_3), cVar16 == '\0' && + (((int)param_5 < 0 || (uVar46 == (param_5 & 7))))) || + ((cVar16 = cv::_OutputArray::fixedType(param_3), cVar16 != '\0' && + (uVar26 = cv::_InputArray::type((_InputArray *)param_3,-1), uVar52 == uVar26)))) && + (bVar18 != (bVar17 ^ 1))))) { + cv::_OutputArray::createSameSize(param_3,param_1,uVar52); + iVar19 = cv::_InputArray::kind(param_1); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_1 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4c8 = *(undefined8 *)(pMVar43 + 0x10); + local_4d8 = *(undefined8 *)pMVar43; + local_4d0 = *(int *)(pMVar43 + 8); + local_4cc = *(int *)(pMVar43 + 0xc); + local_4c0 = *(undefined8 *)(pMVar43 + 0x18); + local_4b8 = *(undefined8 *)(pMVar43 + 0x20); + local_4b0 = *(undefined8 *)(pMVar43 + 0x28); + local_4a8 = *(undefined8 *)(pMVar43 + 0x30); + local_4a0 = *(long *)(pMVar43 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar41 = (int *)(local_4a0 + 0x14); + do { + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + /* WARNING: Ignoring partial resolution of indirect */ + local_4d8._4_4_ = 0; + cv::Mat::copySize((Mat *)&local_4d8,pMVar43); + } + } + else { + cv::_InputArray::getMat_(iVar23); + } + local_658 = (Mat *)&local_4d8; + iVar19 = cv::_InputArray::kind(param_2); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_2 + 8); + local_438 = &local_470; + local_430 = &local_428; + local_478 = *(uint *)pMVar43; + local_468 = *(undefined8 *)(pMVar43 + 0x10); + local_474 = *(int *)(pMVar43 + 4); + local_470 = *(undefined8 *)(pMVar43 + 8); + local_460 = *(undefined8 *)(pMVar43 + 0x18); + local_458 = *(undefined8 *)(pMVar43 + 0x20); + local_450 = *(undefined8 *)(pMVar43 + 0x28); + local_448 = *(undefined8 *)(pMVar43 + 0x30); + local_440 = *(long *)(pMVar43 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar41 = (int *)(local_440 + 0x14); + do { + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + local_474 = 0; + cv::Mat::copySize((Mat *)&local_478,pMVar43); + } + } + else { + cv::_InputArray::getMat_(iVar24); + } + local_660 = (Mat *)&local_478; + iVar19 = cv::_InputArray::kind((_InputArray *)param_3); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_3 + 8); + local_3d8 = &local_410; + local_3d0 = &local_3c8; + local_408 = *(long *)(pMVar43 + 0x10); + local_418 = *(code **)pMVar43; + local_410 = *(undefined8 **)(pMVar43 + 8); + local_400 = *(undefined8 *)(pMVar43 + 0x18); + local_3f8 = *(undefined8 *)(pMVar43 + 0x20); + local_3f0 = *(undefined8 *)(pMVar43 + 0x28); + local_3e8 = *(undefined8 *)(pMVar43 + 0x30); + local_3e0 = *(long *)(pMVar43 + 0x38); + local_3c0 = 0; + local_3c8 = 0; + if (local_3e0 != 0) { + piVar41 = (int *)(local_3e0 + 0x14); + do { + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + /* WARNING: Ignoring partial resolution of indirect */ + local_418._4_4_ = 0; + cv::Mat::copySize((Mat *)&local_418,pMVar43); + } + } + else { + cv::_InputArray::getMat_((int)param_3); + } + local_668 = (Mat *)&local_418; + iVar19 = ((uint)local_4d8 >> 3 & 0x1ff) + 1; + if ((((uint)local_4d8 & local_478 & 0x4000 & (uint)local_418) == 0) || + (lVar39 = (long)local_4cc * (long)local_4d0 * (long)iVar19, local_538 = (int)lVar39, + lVar39 - local_538 != 0)) { + local_538 = iVar19 * local_4cc; + local_534 = local_4d0; + } + else { + local_534 = 1; + } + (**(code **)(param_6 + (long)(int)uVar46 * 8)) + (local_4c8,local_488,local_468,local_428,local_408,local_3c8,&local_538,param_8); + cv::Mat::release(local_668); + if (local_3d0 != &local_3c8) { + cv::fastFree(local_3d0); + } + cv::Mat::release(local_660); + if (local_430 != &local_428) { + cv::fastFree(local_430); + } + cv::Mat::release(local_658); + puVar31 = local_490; + if (local_490 == &local_488) { + return; + } + goto LAB_0024c8d0; + } + goto LAB_0024be08; + } + if (iVar21 != iVar22) goto LAB_0024be1c; +LAB_0024bfb8: + uVar26 = uVar50 & 7; + if (((local_640._4_4_ != local_638._4_4_) || (uVar57 != uVar48)) || + ((((iVar19 == 0x20000 || (iVar20 == 0x20000)) && ((int)local_640 == 1)) && + ((local_640._4_4_ == 4 || (local_640._4_4_ == 1)))))) goto LAB_0024be1c; + bVar14 = false; + bVar12 = false; + uVar48 = uVar57; + uVar54 = uVar26; +LAB_0024c004: + if (-1 < (int)param_5) goto LAB_0024c00c; +LAB_0024bf00: + cVar16 = cv::_OutputArray::fixedType(param_3); + if (cVar16 != '\0') { + param_5 = cv::_InputArray::type((_InputArray *)param_3,-1); + goto LAB_0024c00c; + } + param_5 = uVar46; + if (bVar12 < (uVar50 != uVar52)) { + local_418 = (code *)0x0; + local_410 = (undefined8 *)0x0; + pvVar30 = (void *)cv::String::allocate((String *)&local_418,0x88); + memcpy(pvVar30,&DAT_00460900,0x88); + cv::error(-5,(String *)&local_418, + "void cv::arithm_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, int, void (**)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x7db); + cv::String::deallocate((String *)&local_418); + } +LAB_0024c01c: + uVar56 = param_5; + if (uVar46 != uVar26) goto LAB_0024c028; + } + else { +LAB_0024be08: + if (iVar21 != iVar22) goto LAB_0024be1c; + if ((int)local_640 == (int)local_638) goto LAB_0024bfb8; + iVar21 = cv::_InputArray::dims(param_1,-1); +joined_r0x0024cc74: + if (iVar21 < 3) { + uVar26 = uVar50 & 7; + cVar16 = cv::_InputArray::isContinuous(param_1,-1); + if (cVar16 == '\0') goto LAB_0024be30; + cv::_InputArray::size(iVar23); + if ((uint)local_418 != 1) { + if ((local_418._4_4_ == 1) && + (((iVar19 == 0x20000 || (iVar20 != 0x20000)) && (uVar48 == (uint)local_418)))) + goto LAB_0024ccec; + goto LAB_0024be30; + } + if (((iVar19 != 0x20000) && (iVar20 == 0x20000)) || + (((local_418._4_4_ != 1 && (uVar48 != local_418._4_4_)) && + (((local_418._4_4_ != 4 || (iVar21 = cv::_InputArray::type(param_1,-1), iVar21 != 6)) || + (4 < uVar48)))))) goto LAB_0024be30; +LAB_0024ccec: + local_638 = local_640; + bVar14 = true; + p_Var53 = param_1; + param_1 = param_2; + uVar56 = uVar48; + uVar48 = uVar57; + uVar54 = uVar46; + uVar10 = uVar50; + uVar11 = uVar52; + uVar57 = uVar50; + uVar50 = uVar52; + if (uVar52 == 6) goto LAB_0024cd38; +LAB_0024be5c: + uVar50 = uVar11; + uVar52 = uVar10; + local_418 = (code *)0x0; + local_410 = (undefined8 *)0x0; + pcVar29 = (char *)cv::String::allocate((String *)&local_418,0x37); + cVar16 = s_type2____CV_64F_____sz2_height___00460990[0x36]; + uVar8 = s_type2____CV_64F_____sz2_height___00460990._52_2_; + uVar7 = s_type2____CV_64F_____sz2_height___00460990._40_8_; + uVar6 = s_type2____CV_64F_____sz2_height___00460990._32_8_; + uVar5 = s_type2____CV_64F_____sz2_height___00460990._24_8_; + uVar4 = s_type2____CV_64F_____sz2_height___00460990._16_8_; + uVar3 = s_type2____CV_64F_____sz2_height___00460990._8_8_; + uVar2 = s_type2____CV_64F_____sz2_height___00460990._0_8_; + *(undefined4 *)(pcVar29 + 0x30) = s_type2____CV_64F_____sz2_height___00460990._48_4_; + *(undefined2 *)(pcVar29 + 0x34) = uVar8; + pcVar29[0x36] = cVar16; + *(undefined8 *)pcVar29 = uVar2; + *(undefined8 *)(pcVar29 + 8) = uVar3; + *(undefined8 *)(pcVar29 + 0x10) = uVar4; + *(undefined8 *)(pcVar29 + 0x18) = uVar5; + *(undefined8 *)(pcVar29 + 0x20) = uVar6; + *(undefined8 *)(pcVar29 + 0x28) = uVar7; + cv::error(-0xd7,(String *)&local_418, + "void cv::arithm_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, int, void (**)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x7c5); + cv::String::deallocate((String *)&local_418); + param_2 = p_Var53; + uVar46 = uVar26; + uVar57 = uVar56; + } + else { +LAB_0024be30: + cVar16 = FUN_0024b388(param_2,uVar27 & 0xffffffff,iVar20,iVar19); + if (cVar16 == '\0') { + local_418 = (code *)0x0; + local_410 = (undefined8 *)0x0; + pvVar30 = (void *)cv::String::allocate((String *)&local_418,0x99); + memcpy(pvVar30,&DAT_00460860,0x99); + cv::error(-0xd1,(String *)&local_418, + "void cv::arithm_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, int, void (**)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x7c3); + cv::String::deallocate((String *)&local_418); + } + bVar14 = false; + p_Var53 = param_2; + uVar26 = uVar46; + uVar56 = uVar57; + uVar54 = uVar50 & 7; + uVar10 = uVar52; + uVar11 = uVar50; + uVar57 = uVar52; + if (uVar50 != 6) goto LAB_0024be5c; +LAB_0024cd38: + uVar52 = uVar57; + param_2 = p_Var53; + uVar46 = uVar26; + uVar57 = uVar56; + if ((local_638._4_4_ != 4) && (uVar10 = uVar52, uVar11 = uVar50, local_638._4_4_ != 1)) + goto LAB_0024be5c; + } + if (param_7 == '\0') { + iVar19 = cv::_InputArray::kind(param_2); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_2 + 8); + local_3d8 = &local_410; + local_3d0 = &local_3c8; + local_408 = *(long *)(pMVar43 + 0x10); + local_418 = *(code **)pMVar43; + local_410 = *(undefined8 **)(pMVar43 + 8); + local_400 = *(undefined8 *)(pMVar43 + 0x18); + local_3f8 = *(undefined8 *)(pMVar43 + 0x20); + local_3f0 = *(undefined8 *)(pMVar43 + 0x28); + local_3e8 = *(undefined8 *)(pMVar43 + 0x30); + local_3e0 = *(long *)(pMVar43 + 0x38); + local_3c0 = 0; + local_3c8 = 0; + if (local_3e0 != 0) { + piVar41 = (int *)(local_3e0 + 0x14); + do { + cVar16 = '\x01'; + bVar12 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar12) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + /* WARNING: Ignoring partial resolution of indirect */ + local_418._4_4_ = 0; + cv::Mat::copySize((Mat *)&local_418,pMVar43); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + lVar47 = local_408; + local_668 = (Mat *)&local_418; + lVar39 = 0; + iVar20 = -0x80000000; + iVar19 = 0x7fffffff; + do { + lVar38 = lrint(*(double *)(lVar47 + lVar39 * 8)); + iVar21 = (int)lVar38; + if ((double)iVar21 != *(double *)(lVar47 + lVar39 * 8)) { + if ((int)lVar39 < (int)uVar57) { + if ((uVar46 == 5) || (uVar46 < 4)) { + uVar26 = 5; + } + else { + uVar26 = 6; + } + goto LAB_0024d6e8; + } + break; + } + lVar39 = lVar39 + 1; + if (iVar21 < iVar19) { + iVar19 = iVar21; + } + if (iVar20 < iVar21) { + iVar20 = iVar21; + } + } while ((int)lVar39 < (int)uVar57); + if (((((0xff < iVar20) || (uVar26 = 0, iVar19 < 0)) && + ((0x7f < iVar20 || (uVar26 = 1, iVar19 < -0x80)))) && + ((0xffff < iVar20 || (uVar26 = 2, iVar19 < 0)))) && + ((0x7fff < iVar20 || (uVar26 = 3, iVar19 < -0x8000)))) { + uVar26 = 4; + } +LAB_0024d6e8: + cv::Mat::release(local_668); + if (local_3d0 != &local_3c8) { + cv::fastFree(local_3d0); + } + bVar12 = true; + goto LAB_0024c004; + } + uVar26 = 6; + bVar12 = true; + if ((int)param_5 < 0) goto LAB_0024bf00; +LAB_0024c00c: + param_5 = param_5 & 7; + if (uVar46 == param_5) goto LAB_0024c01c; +LAB_0024c028: + if (param_7 == '\0') { + if (uVar46 < 2) { + uVar56 = 3; + if (1 < uVar26) goto LAB_0024d5d8; + } + else if (uVar46 < 5) { +LAB_0024d5d8: + uVar56 = uVar26; + if (uVar26 < 5) { + uVar56 = param_5; + if (param_5 < 4) { + uVar56 = 4; + } + if (param_5 < 5) { + uVar56 = 4; + } + goto LAB_0024c068; + } + } + else { + uVar56 = uVar46; + if (uVar46 < uVar26) { + uVar56 = uVar26; + } + } + if (uVar56 < param_5) { + uVar56 = param_5; + } + if ((param_5 < 5) && ((uVar46 < 5 || (uVar26 < 5)))) { + uVar56 = 4; + } + } + else { + if (uVar26 < 5) { + uVar26 = 5; + } + uVar56 = param_5; + if (param_5 < uVar46) { + uVar56 = uVar46; + } + if (uVar56 < uVar26) { + uVar56 = uVar26; + } + } + } +LAB_0024c068: + iVar19 = (uVar57 - 1) * 8; + bVar18 = bVar15 ^ 1; + param_5 = iVar19 + param_5; + uVar56 = iVar19 + uVar56; + if (bVar15 == 1) { +LAB_0024d1d4: + cv::_OutputArray::createSameSize(param_3,param_1,param_5); + } + else { + uVar26 = cv::_InputArray::type(param_4,-1); + if ((1 < uVar26) || (cVar16 = cv::_InputArray::sameSize(param_4,param_1), cVar16 == '\0')) { + local_418 = (code *)0x0; + local_410 = (undefined8 *)0x0; + puVar31 = (undefined8 *)cv::String::allocate((String *)&local_418,0x40); + uVar9 = s___psrc1__00460a00._0_8_; + uVar7 = _LAB_004609f8; + uVar6 = _DAT_004609f0; + uVar5 = DAT_004609e8; + uVar4 = _LAB_004609e0; + uVar3 = DAT_004609d8; + uVar2 = DAT_004609d0; + *puVar31 = DAT_004609c8; + puVar31[1] = uVar2; + puVar31[2] = uVar3; + puVar31[3] = uVar4; + puVar31[4] = uVar5; + puVar31[5] = uVar6; + puVar31[6] = uVar7; + puVar31[7] = uVar9; + cv::error(-0xd7,(String *)&local_418, + "void cv::arithm_op(cv::InputArray, cv::InputArray, cv::OutputArray, cv::InputArray, int, void (**)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x7fb); + cv::String::deallocate((String *)&local_418); + } + cVar16 = cv::_InputArray::sameSize((_InputArray *)param_3,param_1); + if ((cVar16 != '\0') && + (uVar26 = cv::_InputArray::type((_InputArray *)param_3,-1), param_5 == uVar26)) + goto LAB_0024d1d4; + cv::_OutputArray::createSameSize(param_3,param_1,param_5); + local_410 = &local_4d8; + local_4d8 = 0; + local_418 = (code *)CONCAT44(local_418._4_4_,0xc1020006); + local_408 = 0x100000001; + local_468 = 0; + local_478 = 0; + local_470 = 0; + cv::_OutputArray::setTo(param_3,(_InputArray *)&local_418,(_InputArray *)&local_478); + } + pcVar58 = (code *)0x0; + if (uVar52 != uVar56) { + pcVar58 = (code *)FUN_00283fe0(uVar52,uVar56); + } + local_690 = pcVar58; + if ((uVar50 != uVar52) && (local_690 = (code *)0x0, uVar50 != uVar56)) { + local_690 = (code *)FUN_00283fe0(uVar50,uVar56); + } + local_6b8 = (code *)0x0; + if (param_5 != uVar56) { + local_6b8 = (code *)FUN_00283fe0(uVar56,param_5); + } + local_630 = (long)(int)((param_5 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((param_5 & 7) << 1)) & 3)); + lVar39 = (long)(int)(uVar57 << (ulong)((uint)(0xfa50L >> (uVar46 << 1)) & 3)); + uVar28 = (ulong)(int)((uVar56 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (ulong)((uVar56 & 7) << 1)) & 3)); + uVar27 = 0; + if (uVar28 != 0) { + uVar27 = (uVar28 + 0x3ff) / uVar28; + } + pcVar32 = (code *)FUN_0028cd18(); + iVar19 = cv::_InputArray::kind(param_1); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_1 + 8); + local_558 = &local_590; + local_550 = &local_548; + local_598 = *(undefined4 *)pMVar43; + local_594 = *(int *)(pMVar43 + 4); + local_590 = *(undefined4 *)(pMVar43 + 8); + local_58c = *(undefined4 *)(pMVar43 + 0xc); + local_588 = *(undefined8 *)(pMVar43 + 0x10); + local_580 = *(undefined8 *)(pMVar43 + 0x18); + local_578 = *(undefined8 *)(pMVar43 + 0x20); + local_570 = *(undefined8 *)(pMVar43 + 0x28); + local_568 = *(undefined8 *)(pMVar43 + 0x30); + local_560 = *(long *)(pMVar43 + 0x38); + local_540 = 0; + local_548 = 0; + if (local_560 != 0) { + piVar41 = (int *)(local_560 + 0x14); + do { + cVar16 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar13) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + local_594 = 0; + cv::Mat::copySize((Mat *)&local_598,pMVar43); + } + } + else { + cv::_InputArray::getMat_((int)param_1); + } + local_650 = (Mat *)&local_598; + iVar19 = cv::_InputArray::kind(param_2); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_2 + 8); + local_4f8 = &local_530; + local_4f0 = &local_4e8; + local_538 = *(int *)pMVar43; + local_528 = *(undefined8 *)(pMVar43 + 0x10); + local_534 = *(int *)(pMVar43 + 4); + local_530 = *(undefined4 *)(pMVar43 + 8); + local_52c = *(undefined4 *)(pMVar43 + 0xc); + local_520 = *(undefined8 *)(pMVar43 + 0x18); + local_518 = *(undefined8 *)(pMVar43 + 0x20); + local_510 = *(undefined8 *)(pMVar43 + 0x28); + local_508 = *(undefined8 *)(pMVar43 + 0x30); + local_500 = *(long *)(pMVar43 + 0x38); + local_4e0 = 0; + local_4e8 = 0; + if (local_500 != 0) { + piVar41 = (int *)(local_500 + 0x14); + do { + cVar16 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar13) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + local_534 = 0; + cv::Mat::copySize((Mat *)&local_538,pMVar43); + } + } + else { + cv::_InputArray::getMat_((int)param_2); + } + local_648 = (Mat *)&local_538; + iVar19 = cv::_InputArray::kind((_InputArray *)param_3); + if (iVar19 == 0x10000) { + pMVar43 = *(Mat **)(param_3 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4c8 = *(undefined8 *)(pMVar43 + 0x10); + local_4d8 = *(undefined8 *)pMVar43; + local_4d0 = *(int *)(pMVar43 + 8); + local_4cc = *(int *)(pMVar43 + 0xc); + local_4c0 = *(undefined8 *)(pMVar43 + 0x18); + local_4b8 = *(undefined8 *)(pMVar43 + 0x20); + local_4b0 = *(undefined8 *)(pMVar43 + 0x28); + local_4a8 = *(undefined8 *)(pMVar43 + 0x30); + local_4a0 = *(long *)(pMVar43 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar41 = (int *)(local_4a0 + 0x14); + do { + cVar16 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar13) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + /* WARNING: Ignoring partial resolution of indirect */ + local_4d8._4_4_ = 0; + cv::Mat::copySize((Mat *)&local_4d8,pMVar43); + } + } + else { + cv::_InputArray::getMat_((int)param_3); + } + local_658 = (Mat *)&local_4d8; + iVar19 = cv::_InputArray::kind(param_4); + if (iVar19 == 0x10000) { + local_438 = &local_470; + local_430 = &local_428; + pMVar43 = *(Mat **)(param_4 + 8); + local_478 = *(uint *)pMVar43; + local_468 = *(undefined8 *)(pMVar43 + 0x10); + local_474 = *(int *)(pMVar43 + 4); + local_470 = *(undefined8 *)(pMVar43 + 8); + local_460 = *(undefined8 *)(pMVar43 + 0x18); + local_458 = *(undefined8 *)(pMVar43 + 0x20); + local_450 = *(undefined8 *)(pMVar43 + 0x28); + local_448 = *(undefined8 *)(pMVar43 + 0x30); + local_440 = *(long *)(pMVar43 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar41 = (int *)(local_440 + 0x14); + do { + cVar16 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar13) { + *piVar41 = *piVar41 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar43 + 4)) { + local_474 = 0; + cv::Mat::copySize((Mat *)&local_478,pMVar43); + } + } + else { + cv::_InputArray::getMat_((int)param_4); + } + local_660 = (Mat *)&local_478; + uVar45 = uVar28; + if (pcVar58 == (code *)0x0) { + uVar45 = 0; + } + bVar13 = local_690 != (code *)0x0; + local_418 = (code *)&local_408; + local_410 = (undefined8 *)0x408; + if ((bVar13) || (uVar40 = 0, bVar12)) { + uVar40 = uVar28; + } + uVar55 = uVar28; + if (local_6b8 == (code *)0x0) { + uVar55 = 0; + } + lVar47 = 0; + if (bVar18 != 0) { + lVar47 = local_630; + } + lVar47 = uVar40 + uVar45 + uVar55 + lVar47; + pcVar33 = *(code **)(param_6 + ((ulong)uVar56 & 7) * 8); + if (bVar12) { + local_600 = local_650; + local_5f8 = local_658; + local_5e8 = (Mat *)0x0; + local_5f0 = local_660; + cv::NAryMatIterator::NAryMatIterator(aNStack_5d8,&local_600,(uchar **)&local_620,-1); + if (local_5b0 < uVar27) { + uVar27 = local_5b0; + } + puVar31 = (undefined8 *)(lVar47 * uVar27 + 0x40); + if (local_410 < puVar31) { + if (local_418 != (code *)&local_408) { + if (local_418 != (code *)0x0) { + operator_delete__(local_418); + } + local_418 = (code *)&local_408; + local_410 = (undefined8 *)0x408; + } + pcVar34 = (code *)&local_408; + if ((undefined8 *)0x408 < puVar31) { + pcVar34 = operator_new__((ulong)puVar31); + local_418 = pcVar34; + local_410 = puVar31; + } + pcVar49 = pcVar34; + if (pcVar58 == (code *)0x0) goto LAB_0024d574; +LAB_0024cf2c: + pcVar34 = (code *)((ulong)(pcVar49 + uVar27 * uVar28 + 0xf) & 0xfffffffffffffff0); + pcVar51 = pcVar34 + uVar27 * uVar28 + 0xf; + } + else { + pcVar34 = local_418; + pcVar49 = local_418; + local_410 = puVar31; + if (pcVar58 != (code *)0x0) goto LAB_0024cf2c; +LAB_0024d574: + pcVar51 = pcVar34 + uVar27 * uVar28 + 0xf; + pcVar49 = pcVar58; + } + uVar40 = (ulong)pcVar51 & 0xfffffffffffffff0; + uVar45 = uVar40; + if (local_6b8 != (code *)0x0) { + uVar45 = uVar40 + uVar27 * uVar28 + 0xf & 0xfffffffffffffff0; + } + local_678 = aNStack_5d8; + if (bVar18 == 0) { + uVar45 = uVar40; + } + FUN_0024b4c4(local_648,uVar56,pcVar34,uVar27); + local_6a0 = (code *)0x0; + while (local_6a0 < local_5b8) { + uVar28 = local_5b0; + uVar55 = uVar27; + if (local_5b0 != 0) { + do { + pcVar51 = local_618; + uVar1 = uVar28; + if (uVar27 < uVar28) { + uVar1 = uVar27; + } + iVar19 = uVar57 * (int)uVar1; + pcVar35 = local_620; + if (pcVar58 != (code *)0x0) { + local_624 = 1; + local_628 = iVar19; + (*pcVar58)(); + pcVar35 = pcVar49; + } + pcVar36 = pcVar35; + pcVar44 = pcVar34; + if (bVar14) { + pcVar36 = pcVar34; + pcVar44 = pcVar35; + } + if ((local_6b8 == (code *)0x0 & bVar15) == 0) { + local_624 = 1; + local_628 = iVar19; + (*pcVar33)(); + if (bVar15 == 0) { + uVar37 = uVar40; + if (local_6b8 != (code *)0x0) { + local_624 = 1; + local_628 = iVar19; + (*local_6b8)(uVar40,1,0,1,uVar45,1,&local_628,0); + uVar37 = uVar45; + } + local_624 = 1; + local_628 = (int)uVar1; + (*pcVar32)(uVar37,1,local_610,1,pcVar51,1,&local_628,&local_630); + local_610 = local_610 + uVar1; + } + else { + local_624 = 1; + local_628 = iVar19; + (*local_6b8)(uVar40,1,0,1,pcVar51,1,&local_628,0); + } + } + else { + local_624 = 1; + local_628 = iVar19; + (*pcVar33)(pcVar36,1,pcVar44,1,pcVar51,1,&local_628,param_8); + } + local_620 = local_620 + uVar1 * lVar39; + local_618 = local_618 + uVar1 * local_630; + bVar12 = uVar55 < local_5b0; + uVar28 = uVar28 - uVar27; + uVar55 = uVar55 + uVar27; + } while (bVar12); + } + local_6a0 = (code *)((long)local_6a0 + 1); + cv::NAryMatIterator::operator++(local_678); + } + } + else { + local_600 = local_650; + local_5f8 = local_648; + local_5f0 = local_658; + local_5e0 = 0; + local_5e8 = local_660; + cv::NAryMatIterator::NAryMatIterator(aNStack_5d8,&local_600,(uchar **)&local_620,-1); + bVar14 = pcVar58 != (code *)0x0; + if (((bVar15 <= bVar14) || (bVar13)) || (local_6b8 != (code *)0x0)) { + if (local_5b0 < uVar27) { + uVar27 = local_5b0; + } + puVar31 = (undefined8 *)(uVar27 * lVar47 + 0x40); + if (local_410 < puVar31) goto LAB_0024c424; +LAB_0024d384: + local_6a0 = local_418; + local_410 = puVar31; + if (bVar14) goto LAB_0024c46c; +LAB_0024d39c: + local_698 = local_6a0; + local_6a0 = (code *)0x0; + if (bVar13) goto LAB_0024c488; +LAB_0024d3b0: + local_6e0 = local_698; + local_698 = (code *)0x0; + if (local_6b8 != (code *)0x0) goto LAB_0024c4a4; +LAB_0024d3c4: + local_680 = local_6e0; + } + else { + puVar31 = (undefined8 *)(local_5b0 * lVar47 + 0x40); + uVar27 = local_5b0; + if (puVar31 <= local_410) goto LAB_0024d384; +LAB_0024c424: + if (local_418 != (code *)&local_408) { + if (local_418 != (code *)0x0) { + operator_delete__(local_418); + } + local_418 = (code *)&local_408; + local_410 = (undefined8 *)0x408; + } + local_6a0 = (code *)&local_408; + if ((undefined8 *)0x408 < puVar31) { + local_6a0 = operator_new__((ulong)puVar31); + local_418 = local_6a0; + local_410 = puVar31; + } + if (!bVar14) goto LAB_0024d39c; +LAB_0024c46c: + local_698 = (code *)((ulong)(local_6a0 + uVar27 * uVar28 + 0xf) & 0xfffffffffffffff0); + if (!bVar13) goto LAB_0024d3b0; +LAB_0024c488: + local_6e0 = (code *)((ulong)(local_698 + uVar27 * uVar28 + 0xf) & 0xfffffffffffffff0); + if (local_6b8 == (code *)0x0) goto LAB_0024d3c4; +LAB_0024c4a4: + local_680 = (code *)((ulong)(local_6e0 + uVar27 * uVar28 + 0xf) & 0xfffffffffffffff0); + } + local_670 = 0; + if (bVar18 == 0) { + local_680 = local_6e0; + } + if (local_5b8 != 0) { + do { + uVar28 = local_5b0; + uVar45 = uVar27; + if (local_5b0 != 0) { + do { + lVar47 = local_610; + pcVar34 = local_618; + uVar40 = uVar27; + if (uVar28 < uVar27) { + uVar40 = uVar28; + } + iVar20 = (int)uVar40; + iVar19 = uVar57 * iVar20; + if (bVar14) { + local_624 = 1; + local_628 = iVar19; + (*pcVar58)(local_620,1,0,1,local_6a0,1,&local_628,0); + pcVar49 = local_6a0; + pcVar51 = local_6a0; + if (local_620 != local_618) { +LAB_0024c5b0: + pcVar51 = pcVar34; + if (bVar13) { + local_624 = 1; + local_628 = iVar19; + (*local_690)(pcVar34,1,0,1,local_698,1,&local_628,0); + pcVar51 = local_698; + } + } + } + else { + pcVar49 = local_620; + pcVar51 = local_620; + if (local_620 != local_618) goto LAB_0024c5b0; + } + local_624 = 1; + if ((local_6b8 == (code *)0x0 & bVar15) == 0) { + local_628 = iVar19; + (*pcVar33)(pcVar49,1,pcVar51,1,local_6e0,0,&local_628,param_8); + if (bVar15 == 0) { + pcVar34 = local_6e0; + if (local_6b8 != (code *)0x0) { + local_624 = 1; + local_628 = iVar19; + (*local_6b8)(local_6e0,1,0,1,local_680,1,&local_628,0); + pcVar34 = local_680; + } + local_624 = 1; + local_628 = iVar20; + (*pcVar32)(pcVar34,1,local_608,1,lVar47,1,&local_628,&local_630); + local_608 = local_608 + iVar20; + } + else { + local_624 = 1; + local_628 = iVar19; + (*local_6b8)(local_6e0,1,0,1,lVar47,1,&local_628,0); + } + } + else { + local_628 = iVar19; + (*pcVar33)(pcVar49,1,pcVar51,1,lVar47,1,&local_628,param_8); + } + lVar47 = (long)iVar20; + local_610 = local_610 + lVar47 * local_630; + local_620 = local_620 + lVar47 * lVar39; + local_618 = local_618 + + lVar47 * (int)(uVar48 << (ulong)((uint)(0xfa50L >> (uVar54 << 1)) & 3)); + bVar12 = uVar45 < local_5b0; + uVar28 = uVar28 - uVar27; + uVar45 = uVar45 + uVar27; + } while (bVar12); + } + local_670 = local_670 + 1; + cv::NAryMatIterator::operator++(aNStack_5d8); + } while (local_670 < local_5b8); + } + } + if ((local_418 != (code *)&local_408) && (local_418 != (code *)0x0)) { + operator_delete__(local_418); + } + if (local_440 != 0) { + piVar41 = (int *)(local_440 + 0x14); + do { + iVar19 = *piVar41; + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = iVar19 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar19 == 1) { + cv::Mat::deallocate(local_660); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar19 = 0; + puVar31 = local_438; + do { + iVar19 = iVar19 + 1; + *(undefined4 *)puVar31 = 0; + puVar31 = (undefined8 *)((long)puVar31 + 4); + } while (iVar19 < local_474); + } + if (local_430 != &local_428) { + cv::fastFree(local_430); + } + if (local_4a0 != 0) { + piVar41 = (int *)(local_4a0 + 0x14); + do { + iVar19 = *piVar41; + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = iVar19 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar19 == 1) { + cv::Mat::deallocate(local_658); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d8._4_4_) { + iVar19 = 0; + piVar41 = local_498; + do { + iVar19 = iVar19 + 1; + *piVar41 = 0; + piVar41 = piVar41 + 1; + } while (iVar19 < local_4d8._4_4_); + } + if (local_490 != &local_488) { + cv::fastFree(local_490); + } + if (local_500 != 0) { + piVar41 = (int *)(local_500 + 0x14); + do { + iVar19 = *piVar41; + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = iVar19 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar19 == 1) { + cv::Mat::deallocate(local_648); + } + } + local_500 = 0; + local_528 = 0; + local_510 = 0; + local_518 = 0; + local_520 = 0; + if (0 < local_534) { + iVar19 = 0; + puVar42 = local_4f8; + do { + iVar19 = iVar19 + 1; + *puVar42 = 0; + puVar42 = puVar42 + 1; + } while (iVar19 < local_534); + } + if (local_4f0 != &local_4e8) { + cv::fastFree(local_4f0); + } + if (local_560 != 0) { + piVar41 = (int *)(local_560 + 0x14); + do { + iVar19 = *piVar41; + cVar16 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar41,0x10); + if (bVar14) { + *piVar41 = iVar19 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar19 == 1) { + cv::Mat::deallocate(local_650); + } + } + local_560 = 0; + local_588 = 0; + local_570 = 0; + local_578 = 0; + local_580 = 0; + if (0 < local_594) { + iVar19 = 0; + puVar42 = local_558; + do { + iVar19 = iVar19 + 1; + *puVar42 = 0; + puVar42 = puVar42 + 1; + } while (iVar19 < local_594); + } + puVar31 = local_550; + if (local_550 == &local_548) { + return; + } +LAB_0024c8d0: + cv::fastFree(puVar31); + return; +} + + +================================================================== + +### FUNC 0024deac (48 bytes) name=bitwise_and + +/* cv::bitwise_and(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, + cv::_InputArray const&) */ + +void cv::bitwise_and(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + FUN_00249298(); + return; +} + + +================================================================== + +### FUNC 0024dedc (48 bytes) name=bitwise_or + +/* cv::bitwise_or(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, + cv::_InputArray const&) */ + +void cv::bitwise_or(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + FUN_00249298(); + return; +} + + +================================================================== + +### FUNC 0024df0c (48 bytes) name=bitwise_xor + +/* cv::bitwise_xor(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, + cv::_InputArray const&) */ + +void cv::bitwise_xor(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + FUN_00249298(); + return; +} + + +================================================================== + +### FUNC 0024df3c (64 bytes) name=bitwise_not + +/* cv::bitwise_not(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray const&) */ + +void cv::bitwise_not(_InputArray *param_1,_OutputArray *param_2,_InputArray *param_3) + +{ + code *local_8; + + local_8 = FUN_002330a8; + FUN_00249298(param_1,param_1,param_2,param_3,&local_8,1,0xc); + return; +} + + +================================================================== + +### FUNC 0024df7c (68 bytes) name=max + +/* cv::max(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::max(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + undefined8 uVar1; + + uVar1 = noArray(); + FUN_00249298(param_1,param_2,param_3,uVar1,&PTR_FUN_00509200,0,0xe); + return; +} + + +================================================================== + +### FUNC 0024dfc0 (68 bytes) name=min + +/* cv::min(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::min(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + undefined8 uVar1; + + uVar1 = noArray(); + FUN_00249298(param_1,param_2,param_3,uVar1,&PTR_FUN_00509240,0,0xd); + return; +} + + +================================================================== + +### FUNC 0024e004 (116 bytes) name=max + +/* cv::max(cv::Mat const&, cv::Mat const&, cv::Mat&) */ + +void cv::max(Mat *param_1,Mat *param_2,Mat *param_3) + +{ + undefined8 uVar1; + undefined4 local_48 [2]; + Mat *local_40; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [2]; + Mat *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + Mat *local_10; + undefined4 local_8; + undefined4 local_4; + + local_48[0] = 0x2010000; + local_30[0] = 0x1010000; + local_18[0] = 0x1010000; + local_38 = 0; + local_34 = 0; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_40 = param_3; + local_28 = param_1; + local_10 = param_2; + uVar1 = noArray(); + FUN_00249298(local_30,local_18,local_48,uVar1,&PTR_FUN_00509200,0,0xe); + return; +} + + +================================================================== + +### FUNC 0024e078 (116 bytes) name=min + +/* cv::min(cv::Mat const&, cv::Mat const&, cv::Mat&) */ + +void cv::min(Mat *param_1,Mat *param_2,Mat *param_3) + +{ + undefined8 uVar1; + undefined4 local_48 [2]; + Mat *local_40; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [2]; + Mat *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + Mat *local_10; + undefined4 local_8; + undefined4 local_4; + + local_48[0] = 0x2010000; + local_30[0] = 0x1010000; + local_18[0] = 0x1010000; + local_38 = 0; + local_34 = 0; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_40 = param_3; + local_28 = param_1; + local_10 = param_2; + uVar1 = noArray(); + FUN_00249298(local_30,local_18,local_48,uVar1,&PTR_FUN_00509240,0,0xd); + return; +} + + +================================================================== + +### FUNC 0024e0ec (116 bytes) name=max + +/* cv::max(cv::UMat const&, cv::UMat const&, cv::UMat&) */ + +void cv::max(UMat *param_1,UMat *param_2,UMat *param_3) + +{ + undefined8 uVar1; + undefined4 local_48 [2]; + UMat *local_40; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [2]; + UMat *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + UMat *local_10; + undefined4 local_8; + undefined4 local_4; + + local_48[0] = 0x20a0000; + local_30[0] = 0x10a0000; + local_18[0] = 0x10a0000; + local_38 = 0; + local_34 = 0; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_40 = param_3; + local_28 = param_1; + local_10 = param_2; + uVar1 = noArray(); + FUN_00249298(local_30,local_18,local_48,uVar1,&PTR_FUN_00509200,0,0xe); + return; +} + + +================================================================== + +### FUNC 0024e160 (116 bytes) name=min + +/* cv::min(cv::UMat const&, cv::UMat const&, cv::UMat&) */ + +void cv::min(UMat *param_1,UMat *param_2,UMat *param_3) + +{ + undefined8 uVar1; + undefined4 local_48 [2]; + UMat *local_40; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [2]; + UMat *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + UMat *local_10; + undefined4 local_8; + undefined4 local_4; + + local_48[0] = 0x20a0000; + local_30[0] = 0x10a0000; + local_18[0] = 0x10a0000; + local_38 = 0; + local_34 = 0; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_40 = param_3; + local_28 = param_1; + local_10 = param_2; + uVar1 = noArray(); + FUN_00249298(local_30,local_18,local_48,uVar1,&PTR_FUN_00509240,0,0xd); + return; +} + + +================================================================== + +### FUNC 0024e1d4 (20 bytes) name=add + +/* cv::add(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray + const&, int) */ + +void cv::add(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,_InputArray *param_4, + int param_5) + +{ + FUN_0024bcb4(); + return; +} + + +================================================================== + +### FUNC 0024e1e8 (20 bytes) name=subtract + +/* cv::subtract(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, + cv::_InputArray const&, int) */ + +void cv::subtract(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _InputArray *param_4,int param_5) + +{ + FUN_0024bcb4(); + return; +} + + +================================================================== + +### FUNC 0024e1fc (72 bytes) name=absdiff + +/* cv::absdiff(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::absdiff(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + undefined8 uVar1; + + uVar1 = noArray(); + FUN_0024bcb4(param_1,param_2,param_3,uVar1,0xffffffff,&PTR_FUN_00509180,0,0); + return; +} + + +================================================================== + +### FUNC 0024e244 (100 bytes) name=multiply + +/* cv::multiply(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, double, + int) */ + +void cv::multiply(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,double param_4, + int param_5) + +{ + undefined8 uVar1; + double local_8; + + local_8 = param_4; + uVar1 = noArray(); + FUN_0024bcb4(param_1,param_2,param_3,uVar1,param_5,&PTR_FUN_005091c0,1,&local_8); + return; +} + + +================================================================== + +### FUNC 0024e2a8 (100 bytes) name=divide + +/* cv::divide(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, double, int) + */ + +void cv::divide(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,double param_4, + int param_5) + +{ + undefined8 uVar1; + double local_8; + + local_8 = param_4; + uVar1 = noArray(); + FUN_0024bcb4(param_1,param_2,param_3,uVar1,param_5,&PTR_FUN_005090c0,1,&local_8); + return; +} + + +================================================================== + +### FUNC 0024e30c (104 bytes) name=divide + +/* cv::divide(double, cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::divide(double param_1,_InputArray *param_2,_OutputArray *param_3,int param_4) + +{ + undefined8 uVar1; + double local_8; + + local_8 = param_1; + uVar1 = noArray(); + FUN_0024bcb4(param_2,param_2,param_3,uVar1,param_4,&PTR_FUN_00509100,1,&local_8); + return; +} + + +================================================================== + +### FUNC 0024e374 (96 bytes) name=addWeighted + +/* cv::addWeighted(cv::_InputArray const&, double, cv::_InputArray const&, double, double, + cv::_OutputArray const&, int) */ + +void cv::addWeighted(_InputArray *param_1,double param_2,_InputArray *param_3,double param_4, + double param_5,_OutputArray *param_6,int param_7) + +{ + undefined8 uVar1; + double local_18; + double local_10; + double local_8; + + local_18 = param_2; + local_10 = param_4; + local_8 = param_5; + uVar1 = noArray(); + FUN_0024bcb4(param_1,param_3,param_6,uVar1,param_7,&PTR_FUN_00509040,1,&local_18); + return; +} + + +================================================================== + +### FUNC 0024e3e0 (7368 bytes) name=compare + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::compare(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::compare(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4) + +{ + ulong uVar1; + ulong uVar2; + long lVar3; + uint uVar4; + uint uVar5; + bool bVar6; + bool bVar7; + ulong uVar8; + uint uVar9; + ulong uVar10; + char cVar11; + int iVar12; + int iVar13; + int iVar14; + void *pvVar15; + ulong uVar16; + int *piVar17; + ulong *puVar18; + ulong uVar19; + undefined8 *puVar20; + code *pcVar21; + char *pcVar22; + ulong uVar23; + ulong uVar24; + undefined8 *puVar25; + Mat *pMVar26; + Mat **ppMVar27; + ulong uVar28; + long lVar29; + undefined8 *puVar30; + ulong uVar31; + code *pcVar32; + undefined8 uVar33; + int local_694 [3]; + int local_688 [2]; + uchar *local_680; + long local_678; + double local_670 [2]; + uint local_660; + int local_65c; + int local_658; + int local_654; + undefined8 local_650; + undefined8 uStack_648; + undefined8 local_640; + undefined8 uStack_638; + undefined8 local_630; + long lStack_628; + int *local_620; + undefined8 *local_618; + undefined8 local_610; + undefined8 local_608; + uint local_600; + int local_5fc; + int local_5f8; + int local_5f4; + undefined8 local_5f0; + undefined8 uStack_5e8; + ulong local_5e0; + ulong uStack_5d8; + undefined8 local_5d0; + long lStack_5c8; + int *local_5c0; + undefined8 *local_5b8; + undefined8 local_5b0; + undefined8 local_5a8; + undefined8 local_5a0; + undefined8 local_598; + undefined8 local_590; + undefined8 uStack_588; + undefined8 local_580; + undefined8 uStack_578; + undefined8 local_570; + long lStack_568; + undefined4 *local_560; + undefined8 *local_558; + undefined8 auStack_550 [2]; + uint local_540; + int iStack_53c; + int local_538; + int iStack_534; + undefined8 local_530; + undefined8 uStack_528; + ulong local_520; + ulong uStack_518; + undefined8 local_510; + long lStack_508; + undefined4 *local_500; + undefined8 *local_4f8; + undefined8 auStack_4f0 [2]; + undefined8 local_4e0; + Mat *pMStack_4d8; + Mat *local_4d0; + Mat *pMStack_4c8; + int *local_4c0; + int *local_4b8; + undefined8 local_4b0; + long local_4a8; + Mat **local_4a0; + undefined8 *local_498; + undefined8 local_490; + undefined8 uStack_488; + undefined4 local_478; + int local_474; + undefined8 local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + long local_440; + undefined4 *local_438; + undefined8 *local_430; + undefined8 auStack_428 [2]; + undefined8 local_418; + ulong local_410; + undefined8 local_408; + undefined8 local_400; + ulong local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + long local_3e0; + ulong *local_3d8; + undefined8 *local_3d0; + undefined8 local_3c8; + undefined8 local_3c0; + + local_694[0] = param_4; + if (5 < (uint)param_4) { + local_418 = (undefined8 *)0x0; + local_410 = 0; + pvVar15 = (void *)String::allocate((String *)&local_418,0x5c); + memcpy(pvVar15, + "op == CMP_LT || op == CMP_LE || op == CMP_EQ || op == CMP_NE || op == CMP_GE || op == CMP_GT" + ,0x5c); + error(-0xd7,(String *)&local_418, + "void cv::compare(cv::InputArray, cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x137c); + String::deallocate((String *)&local_418); + } + iVar12 = _InputArray::kind(param_1); + iVar13 = _InputArray::kind(param_2); + cVar11 = iVar12 == 0x20000; + if (iVar13 == 0x20000) { + cVar11 = cVar11 + '\x01'; + } + if ((cVar11 == '\x01') || (cVar11 = _InputArray::sameSize(param_1,param_2), cVar11 == '\0')) { +LAB_0024e4c0: + uVar16 = _InputArray::type(param_2,-1); + iVar12 = _InputArray::kind(param_1); + iVar13 = _InputArray::kind(param_2); + iVar14 = _InputArray::dims(param_1,-1); + if ((iVar14 < 3) && (cVar11 = _InputArray::isContinuous(param_1,-1), cVar11 != '\0')) { + _InputArray::size((int)param_1); + if ((uint)local_418 == 1) { + if (((iVar12 == 0x20000) || (iVar13 != 0x20000)) && + (((uVar4 = ((uint)((uVar16 & 0xffffffff) >> 3) & 0x1ff) + 1, local_418._4_4_ == 1 || + (uVar4 == local_418._4_4_)) || + (((local_418._4_4_ == 4 && (iVar12 = _InputArray::type(param_1,-1), iVar12 == 6)) && + (uVar4 < 5)))))) goto LAB_0024fa48; + } + else if ((local_418._4_4_ == 1) && + (((iVar12 == 0x20000 || (iVar13 != 0x20000)) && + ((uint)local_418 == ((uint)((uVar16 & 0xffffffff) >> 3) & 0x1ff) + 1)))) { +LAB_0024fa48: + if (local_694[0] == 3) { + local_694[0] = 1; + } + else if (local_694[0] == 4) { + local_694[0] = 2; + } + else if (local_694[0] == 2) { + local_694[0] = 4; + } + else if (local_694[0] == 1) { + local_694[0] = 3; + } + compare(param_2,param_1,param_3,local_694[0]); + return; + } + } + uVar16 = _InputArray::type(param_1,-1); + iVar12 = _InputArray::kind(param_2); + iVar13 = _InputArray::kind(param_1); + iVar14 = _InputArray::dims(param_2,-1); + if ((iVar14 < 3) && (cVar11 = _InputArray::isContinuous(param_2,-1), cVar11 != '\0')) { + _InputArray::size((int)param_2); + if ((uint)local_418 == 1) { + if ((iVar12 == 0x20000) || (iVar13 != 0x20000)) { + uVar4 = ((uint)((uVar16 & 0xffffffff) >> 3) & 0x1ff) + 1; + if ((local_418._4_4_ == 1) || (uVar4 == local_418._4_4_)) goto LAB_0024ed84; + if (((local_418._4_4_ == 4) && (iVar12 = _InputArray::type(param_2,-1), iVar12 == 6)) && + (uVar4 < 5)) { + bVar7 = true; + goto LAB_0024e594; + } + } + } + else if (((local_418._4_4_ == 1) && ((iVar12 == 0x20000 || (iVar13 != 0x20000)))) && + ((uint)local_418 == ((uint)((uVar16 & 0xffffffff) >> 3) & 0x1ff) + 1)) { +LAB_0024ed84: + bVar7 = true; + goto LAB_0024e594; + } + } + local_418 = (undefined8 *)0x0; + local_410 = 0; + pvVar15 = (void *)String::allocate((String *)&local_418,0x8b); + memcpy(pvVar15,&DAT_00460a70,0x8b); + error(-0xd1,(String *)&local_418, + "void cv::compare(cv::InputArray, cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x138f); + bVar7 = true; + String::deallocate((String *)&local_418); + } + else { + iVar12 = _InputArray::type(param_1,-1); + iVar13 = _InputArray::type(param_2,-1); + if (iVar12 != iVar13) goto LAB_0024e4c0; + bVar7 = false; + } +LAB_0024e594: + iVar12 = _InputArray::kind(param_1); + iVar13 = _InputArray::kind(param_2); + iVar14 = _InputArray::kind(param_1); + if (iVar14 == 0x10000) { + pMVar26 = *(Mat **)(param_1 + 8); + local_620 = &local_658; + local_618 = &local_610; + local_660 = *(uint *)pMVar26; + local_65c = *(int *)(pMVar26 + 4); + local_658 = *(int *)(pMVar26 + 8); + local_654 = *(int *)(pMVar26 + 0xc); + local_650 = *(undefined8 *)(pMVar26 + 0x10); + uStack_648 = *(undefined8 *)(pMVar26 + 0x18); + local_640 = *(undefined8 *)(pMVar26 + 0x20); + uStack_638 = *(undefined8 *)(pMVar26 + 0x28); + local_630 = *(undefined8 *)(pMVar26 + 0x30); + lStack_628 = *(long *)(pMVar26 + 0x38); + local_608 = 0; + local_610 = 0; + if (lStack_628 != 0) { + piVar17 = (int *)(lStack_628 + 0x14); + do { + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = *piVar17 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (*(int *)(pMVar26 + 4) < 3) { + local_610 = **(undefined8 **)(pMVar26 + 0x48); + local_608 = (*(undefined8 **)(pMVar26 + 0x48))[1]; + } + else { + local_65c = 0; + Mat::copySize((Mat *)&local_660,pMVar26); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar14 = _InputArray::kind(param_2); + if (iVar14 == 0x10000) { + pMVar26 = *(Mat **)(param_2 + 8); + local_5c0 = &local_5f8; + local_5b8 = &local_5b0; + local_600 = *(uint *)pMVar26; + local_5fc = *(int *)(pMVar26 + 4); + local_5f8 = *(int *)(pMVar26 + 8); + local_5f4 = *(int *)(pMVar26 + 0xc); + local_5f0 = *(undefined8 *)(pMVar26 + 0x10); + uStack_5e8 = *(undefined8 *)(pMVar26 + 0x18); + local_5e0 = *(ulong *)(pMVar26 + 0x20); + uStack_5d8 = *(ulong *)(pMVar26 + 0x28); + local_5d0 = *(undefined8 *)(pMVar26 + 0x30); + lStack_5c8 = *(long *)(pMVar26 + 0x38); + local_5a8 = 0; + local_5b0 = 0; + if (lStack_5c8 != 0) { + piVar17 = (int *)(lStack_5c8 + 0x14); + do { + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = *piVar17 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (2 < *(int *)(pMVar26 + 4)) { + local_5fc = 0; + Mat::copySize((Mat *)&local_600,pMVar26); + goto LAB_0024e5fc; + } + if (iVar12 == iVar13) goto LAB_0024ef08; +LAB_0024e61c: + uVar9 = local_600; + uVar4 = local_660 & 7; + _OutputArray::create(param_3,local_65c,local_620,local_660 & 0xff8,-1,false,0); + Mat::reshape((int)(Mat *)&local_660,1); + if (lStack_568 != 0) { + piVar17 = (int *)(lStack_568 + 0x14); + do { + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = *piVar17 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (lStack_628 != 0) { + piVar17 = (int *)(lStack_628 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + puVar20 = local_558; + lStack_628 = 0; + local_650 = 0; + uStack_638 = 0; + local_640 = 0; + uStack_648 = 0; + if (local_65c < 1) { +LAB_0024e6ec: + local_660 = (uint)local_5a0; + if (2 < local_5a0._4_4_) goto LAB_0024f220; + local_654 = local_598._4_4_; + local_658 = (int)local_598; + local_65c = local_5a0._4_4_; + *local_618 = *local_558; + local_618[1] = puVar20[1]; + } + else { + iVar12 = 0; + piVar17 = local_620; + do { + *piVar17 = 0; + iVar12 = iVar12 + 1; + piVar17 = piVar17 + 1; + } while (iVar12 < local_65c); + if (local_65c < 3) goto LAB_0024e6ec; +LAB_0024f220: + local_660 = (uint)local_5a0; + Mat::copySize((Mat *)&local_660,(Mat *)&local_5a0); + } + uStack_638 = uStack_578; + local_640 = local_580; + lStack_628 = lStack_568; + local_630 = local_570; + uStack_648 = uStack_588; + local_650 = local_590; + if (lStack_568 != 0) { + piVar17 = (int *)(lStack_568 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_5a0); + } + } + lStack_568 = 0; + local_590 = 0; + uStack_578 = 0; + local_580 = 0; + uStack_588 = 0; + if (0 < local_5a0._4_4_) { + iVar12 = 0; + do { + *local_560 = 0; + iVar12 = iVar12 + 1; + local_560 = local_560 + 1; + } while (iVar12 < local_5a0._4_4_); + } + if (local_558 != auStack_550) { + fastFree(local_558); + } + Mat::reshape((int)(Mat *)&local_600,1); + if (lStack_508 != 0) { + piVar17 = (int *)(lStack_508 + 0x14); + do { + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = *piVar17 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (lStack_5c8 != 0) { + piVar17 = (int *)(lStack_5c8 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = 0; + uStack_5d8 = 0; + local_5e0 = 0; + uStack_5e8 = 0; + if (local_5fc < 1) { +LAB_0024e890: + local_600 = local_540; + if (2 < iStack_53c) goto LAB_0024f210; + local_5f4 = iStack_534; + local_5f8 = local_538; + local_5fc = iStack_53c; + *local_5b8 = *local_4f8; + local_5b8[1] = local_4f8[1]; + } + else { + iVar12 = 0; + piVar17 = local_5c0; + do { + iVar12 = iVar12 + 1; + *piVar17 = 0; + piVar17 = piVar17 + 1; + } while (iVar12 < local_5fc); + if (local_5fc < 3) goto LAB_0024e890; +LAB_0024f210: + local_600 = local_540; + Mat::copySize((Mat *)&local_600,(Mat *)&local_540); + } + uStack_5d8 = uStack_518; + local_5e0 = local_520; + lStack_5c8 = lStack_508; + local_5d0 = local_510; + uStack_5e8 = uStack_528; + local_5f0 = local_530; + if (lStack_508 != 0) { + piVar17 = (int *)(lStack_508 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_540); + } + } + lStack_508 = 0; + local_530 = 0; + uStack_518 = 0; + local_520 = 0; + uStack_528 = 0; + if (0 < iStack_53c) { + iVar12 = 0; + do { + *local_500 = 0; + iVar12 = iVar12 + 1; + local_500 = local_500 + 1; + } while (iVar12 < iStack_53c); + } + if (local_4f8 != auStack_4f0) { + fastFree(local_4f8); + } + iVar12 = _InputArray::kind((_InputArray *)param_3); + if (iVar12 == 0x10000) { + pMVar26 = *(Mat **)(param_3 + 8); + local_3d8 = &local_410; + local_3d0 = &local_3c8; + uVar5 = *(uint *)pMVar26; + local_408 = *(undefined8 *)(pMVar26 + 0x10); + local_418 = *(undefined8 **)pMVar26; + local_410 = *(ulong *)(pMVar26 + 8); + local_400 = *(undefined8 *)(pMVar26 + 0x18); + local_3f8 = *(ulong *)(pMVar26 + 0x20); + local_3f0 = *(undefined8 *)(pMVar26 + 0x28); + local_3e8 = *(undefined8 *)(pMVar26 + 0x30); + local_3e0 = *(long *)(pMVar26 + 0x38); + local_3c0 = 0; + local_3c8 = 0; + if (local_3e0 != 0) { + piVar17 = (int *)(local_3e0 + 0x14); + do { + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = *piVar17 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (*(int *)(pMVar26 + 4) < 3) { + local_3c8 = **(undefined8 **)(pMVar26 + 0x48); + local_3c0 = (*(undefined8 **)(pMVar26 + 0x48))[1]; + } + else { + local_418 = (undefined8 *)(ulong)uVar5; + Mat::copySize((Mat *)&local_418,pMVar26); + } + } + else { + _InputArray::getMat_((int)param_3); + } + Mat::reshape((int)(NAryMatIterator *)&local_418,1); + if (local_3e0 != 0) { + piVar17 = (int *)(local_3e0 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar6) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_418); + } + } + local_3e0 = 0; + local_408 = 0; + local_3f0 = 0; + local_3f8 = 0; + local_400 = 0; + if (0 < (int)local_418._4_4_) { + iVar12 = 0; + puVar18 = local_3d8; + do { + *(undefined4 *)puVar18 = 0; + iVar12 = iVar12 + 1; + puVar18 = (ulong *)((long)puVar18 + 4); + } while (iVar12 < (int)local_418._4_4_); + } + if (local_3d0 != &local_3c8) { + fastFree(local_3d0); + } + if (local_65c < 1) { + uVar16 = 0x3ff; + uVar19 = 0; + } + else { + uVar19 = local_618[(long)local_65c + -1]; + uVar16 = uVar19 + 0x3ff; + } + pcVar32 = (code *)(&PTR_FUN_004f5a00)[(int)uVar4]; + if (bVar7) { + local_590 = 0; + local_5a0 = (Mat *)&local_660; + local_598 = (Mat *)&local_478; + NAryMatIterator::NAryMatIterator + ((NAryMatIterator *)&local_540,(Mat **)&local_5a0,&local_680,-1); + uVar10 = uStack_518; + uVar8 = 0; + if (uVar19 != 0) { + uVar8 = uVar16 / uVar19; + } + puVar20 = &local_408; + if (uStack_518 < uVar8) { + uVar8 = uStack_518; + } + local_410 = 0x408; + uVar16 = uVar8 * uVar19; + if (0x408 < uVar16) { + local_418 = puVar20; + puVar20 = operator_new__(uVar16); + } + local_418 = puVar20; + local_410 = uVar16; + if (uVar4 < 5) { + local_670[0] = 0.0; + pcVar21 = (code *)FUN_00283fe0(uVar9 & 7,6); + local_4e0 = (Mat *)0x100000001; + (*pcVar21)(); + if (*(double *)(&DAT_00461300 + (long)(int)uVar4 * 8) <= local_670[0]) { + if (local_670[0] <= *(double *)(&DAT_00460df0 + (long)(int)uVar4 * 8)) { + lVar29 = lrint(local_670[0]); + local_688[0] = (int)lVar29; + local_4d0 = (Mat *)local_688; + if ((double)local_688[0] != local_670[0]) { + if (local_694[0] - 2U < 2) { + local_688[0] = (int)local_670[0] + (uint)((double)(int)local_670[0] < local_670[0]); + } + else { + if ((local_694[0] != 1) && (local_694[0] != 4)) goto LAB_0024fc5c; + local_688[0] = (int)local_670[0] - (uint)(local_670[0] < (double)(int)local_670[0]); + } + } + local_4c0 = local_688 + 1; + local_498 = &local_490; + local_4b0 = 0; + local_4a8 = 0; + local_4a0 = &pMStack_4d8; + pMStack_4d8 = _UNK_00250288; + local_4e0 = _DAT_00250280; + uStack_488 = _UNK_00250298; + local_490 = _DAT_00250290; + pMStack_4c8 = local_4d0; + local_4b8 = local_4c0; + FUN_0024b4c4((Mat *)&local_4e0,uVar4,puVar20,uVar8); + if (local_4a8 != 0) { + piVar17 = (int *)(local_4a8 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_4e0); + } + } + local_4a8 = 0; + local_4d0 = (Mat *)0x0; + local_4b8 = (int *)0x0; + local_4c0 = (int *)0x0; + pMStack_4c8 = (Mat *)0x0; + if (0 < local_4e0._4_4_) { + iVar12 = 0; + ppMVar27 = local_4a0; + do { + *(undefined4 *)ppMVar27 = 0; + iVar12 = iVar12 + 1; + ppMVar27 = (Mat **)((long)ppMVar27 + 4); + } while (iVar12 < local_4e0._4_4_); + } + if (local_498 != &local_490) { + fastFree(local_498); + } + goto LAB_0024f930; + } + local_4e0 = DAT_00250270; + if (2 < local_694[0] - 3U) goto LAB_0024fc64; + } + else { + local_4e0 = DAT_00250270; + if (1 < local_694[0] - 1U) { +LAB_0024fc5c: + local_4e0 = DAT_00250270; + if (local_694[0] != 5) { +LAB_0024fc64: + local_4e0 = (Mat *)0x0; + } + } + } + pMStack_4d8 = local_4e0; + local_4d0 = local_4e0; + pMStack_4c8 = local_4e0; + Mat::operator=((Mat *)&local_478,(Scalar_ *)&local_4e0); + if ((local_418 != &local_408) && (local_418 != (undefined8 *)0x0)) { + operator_delete__(local_418); + } + Mat::release((Mat *)&local_478); + if (local_430 != auStack_428) { +LAB_0024f110: + fastFree(local_430); + } + goto LAB_0024f114; + } + if (local_5fc < 3) { + iVar12 = local_5f4 * local_5f8; + } + else { + iVar12 = 1; + lVar29 = 0; + do { + piVar17 = local_5c0 + lVar29; + lVar29 = lVar29 + 1; + iVar12 = iVar12 * *piVar17; + } while ((int)lVar29 < local_5fc); + } + uVar16 = (ulong)(1 << (ulong)((uint)(0xfa50L >> (ulong)(uVar4 << 1)) & 3)); + pcVar21 = (code *)FUN_00283fe0(local_600 & 7,uVar4); + local_688[0] = iVar12; + if (0 < iVar12) { + local_688[0] = 1; + } + local_688[1] = 1; + (*pcVar21)(local_5f0,1,0,1,puVar20,1,local_688,0); + if (iVar12 < 1) { + local_670[0] = 0.0; + local_670[1] = 0.0; + pcVar22 = (char *)String::allocate((String *)local_670,8); + *(undefined8 *)pcVar22 = s_scn____1_004607e0._0_8_; + error(-0xd7,(String *)local_670, + "void cv::convertAndUnrollScalar(const cv::Mat&, int, uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x588); + String::deallocate((String *)local_670); + uVar23 = 0x88442211UL >> (uVar4 << 2) & 0xf; + if (uVar23 < uVar16) { + uVar28 = uVar16 - uVar23; + if (((undefined8 *)((long)puVar20 + uVar23) < puVar20 + 2) || (uVar28 < 0x16)) { + uVar28 = uVar23; + do { + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar23)); + uVar28 = uVar28 + 1; + } while (uVar16 != uVar28); + } + else { + uVar2 = -(long)puVar20 & 0xfU; + if (uVar28 < (-(long)puVar20 & 0xfU)) { + uVar2 = uVar28; + } + uVar24 = uVar23; + if (uVar2 != 0) { + *(undefined1 *)((long)puVar20 + uVar23) = *(undefined1 *)puVar20; + uVar24 = uVar23 + 1; + if (uVar2 != 1) { + *(undefined1 *)((long)puVar20 + uVar23 + 1) = *(undefined1 *)((long)puVar20 + 1); + uVar24 = uVar23 + 2; + if (uVar2 != 2) { + *(undefined1 *)((long)puVar20 + uVar23 + 2) = *(undefined1 *)((long)puVar20 + 2); + uVar24 = uVar23 + 3; + if (uVar2 != 3) { + *(undefined1 *)((long)puVar20 + uVar23 + 3) = *(undefined1 *)((long)puVar20 + 3) + ; + uVar24 = uVar23 + 4; + if (uVar2 != 4) { + *(undefined1 *)((long)puVar20 + uVar23 + 4) = + *(undefined1 *)((long)puVar20 + 4); + uVar24 = uVar23 + 5; + if (uVar2 != 5) { + *(undefined1 *)((long)puVar20 + uVar23 + 5) = + *(undefined1 *)((long)puVar20 + 5); + uVar24 = uVar23 + 6; + if (uVar2 != 6) { + *(undefined1 *)((long)puVar20 + uVar23 + 6) = + *(undefined1 *)((long)puVar20 + 6); + uVar24 = uVar23 + 7; + if (uVar2 != 7) { + *(undefined1 *)((long)puVar20 + uVar23 + 7) = + *(undefined1 *)((long)puVar20 + 7); + uVar24 = uVar23 + 8; + if (uVar2 != 8) { + *(undefined1 *)((long)puVar20 + uVar23 + 8) = + *(undefined1 *)(puVar20 + 1); + uVar24 = uVar23 + 9; + if (uVar2 != 9) { + *(undefined1 *)((long)puVar20 + uVar23 + 9) = + *(undefined1 *)((long)puVar20 + 9); + uVar24 = uVar23 + 10; + if (uVar2 != 10) { + *(undefined1 *)((long)puVar20 + uVar23 + 10) = + *(undefined1 *)((long)puVar20 + 10); + uVar24 = uVar23 + 0xb; + if (uVar2 != 0xb) { + *(undefined1 *)((long)puVar20 + uVar23 + 0xb) = + *(undefined1 *)((long)puVar20 + 0xb); + uVar24 = uVar23 + 0xc; + if (uVar2 != 0xc) { + *(undefined1 *)((long)puVar20 + uVar23 + 0xc) = + *(undefined1 *)((long)puVar20 + 0xc); + uVar24 = uVar23 + 0xd; + if (uVar2 != 0xd) { + *(undefined1 *)((long)puVar20 + uVar23 + 0xd) = + *(undefined1 *)((long)puVar20 + 0xd); + uVar24 = uVar23 + 0xe; + if (uVar2 == 0xf) { + *(undefined1 *)((long)puVar20 + uVar23 + 0xe) = + *(undefined1 *)((long)puVar20 + 0xe); + uVar24 = uVar23 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar28 - uVar2) - 0x10 >> 4) + 1; + uVar31 = 0; + lVar29 = uVar1 * 0x10; + puVar25 = (undefined8 *)((long)puVar20 + uVar2); + puVar30 = (undefined8 *)((long)puVar20 + uVar2 + uVar23); + do { + uVar33 = *puVar25; + uVar31 = uVar31 + 1; + puVar30[1] = puVar25[1]; + *puVar30 = uVar33; + puVar25 = puVar25 + 2; + puVar30 = puVar30 + 2; + } while (uVar31 < uVar1); + lVar3 = uVar24 + lVar29; + if (lVar29 - (uVar28 - uVar2) != 0) { + uVar28 = lVar3 + 1; + *(undefined1 *)((long)puVar20 + lVar3) = + *(undefined1 *)((long)puVar20 + (lVar3 - uVar23)); + if (uVar28 < uVar16) { + uVar2 = lVar3 + 2; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar23)); + if (uVar2 < uVar16) { + uVar28 = lVar3 + 3; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar23)); + if (uVar28 < uVar16) { + uVar2 = lVar3 + 4; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar23)); + if (uVar2 < uVar16) { + uVar28 = lVar3 + 5; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar23)); + if (uVar28 < uVar16) { + uVar2 = lVar3 + 6; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar23)); + if (uVar2 < uVar16) { + uVar28 = lVar3 + 7; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar23)); + if ((uVar28 < uVar16) && + (*(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar23)), + lVar3 + 8U < uVar16)) { + *(undefined1 *)((long)puVar20 + 7) = + *(undefined1 *)((long)puVar20 + (7 - uVar23)); + } + } + } + } + } + } + } + } + } + } + } + uVar23 = uVar8 * uVar16; + if (uVar16 < uVar23) { + uVar28 = uVar23 - uVar16; + if (((undefined8 *)((long)puVar20 + uVar16) < puVar20 + 2) || (uVar28 < 0x16)) { + puVar25 = puVar20; + do { + *(undefined1 *)((long)puVar25 + uVar16) = *(undefined1 *)puVar25; + puVar25 = (undefined8 *)((long)puVar25 + 1); + } while (puVar25 != (undefined8 *)((long)puVar20 + uVar28)); + } + else { + uVar2 = uVar28; + if ((-(long)puVar20 & 0xfU) < uVar28) { + uVar2 = -(long)puVar20 & 0xfU; + } + uVar24 = uVar16; + if (uVar2 != 0) { + *(undefined1 *)((long)puVar20 + uVar16) = *(undefined1 *)puVar20; + uVar24 = uVar16 + 1; + if (uVar2 != 1) { + *(undefined1 *)((long)puVar20 + uVar16 + 1) = *(undefined1 *)((long)puVar20 + 1); + uVar24 = uVar16 + 2; + if (uVar2 != 2) { + *(undefined1 *)((long)puVar20 + uVar16 + 2) = *(undefined1 *)((long)puVar20 + 2); + uVar24 = uVar16 + 3; + if (uVar2 != 3) { + *(undefined1 *)((long)puVar20 + uVar16 + 3) = *(undefined1 *)((long)puVar20 + 3); + uVar24 = uVar16 + 4; + if (uVar2 != 4) { + *(undefined1 *)((long)puVar20 + uVar16 + 4) = *(undefined1 *)((long)puVar20 + 4) + ; + uVar24 = uVar16 + 5; + if (uVar2 != 5) { + *(undefined1 *)((long)puVar20 + uVar16 + 5) = + *(undefined1 *)((long)puVar20 + 5); + uVar24 = uVar16 + 6; + if (uVar2 != 6) { + *(undefined1 *)((long)puVar20 + uVar16 + 6) = + *(undefined1 *)((long)puVar20 + 6); + uVar24 = uVar16 + 7; + if (uVar2 != 7) { + *(undefined1 *)((long)puVar20 + uVar16 + 7) = + *(undefined1 *)((long)puVar20 + 7); + uVar24 = uVar16 + 8; + if (uVar2 != 8) { + *(undefined1 *)((long)puVar20 + uVar16 + 8) = + *(undefined1 *)(puVar20 + 1); + uVar24 = uVar16 + 9; + if (uVar2 != 9) { + *(undefined1 *)((long)puVar20 + uVar16 + 9) = + *(undefined1 *)((long)puVar20 + 9); + uVar24 = uVar16 + 10; + if (uVar2 != 10) { + *(undefined1 *)((long)puVar20 + uVar16 + 10) = + *(undefined1 *)((long)puVar20 + 10); + uVar24 = uVar16 + 0xb; + if (uVar2 != 0xb) { + *(undefined1 *)((long)puVar20 + uVar16 + 0xb) = + *(undefined1 *)((long)puVar20 + 0xb); + uVar24 = uVar16 + 0xc; + if (uVar2 != 0xc) { + *(undefined1 *)((long)puVar20 + uVar16 + 0xc) = + *(undefined1 *)((long)puVar20 + 0xc); + uVar24 = uVar16 + 0xd; + if (uVar2 != 0xd) { + *(undefined1 *)((long)puVar20 + uVar16 + 0xd) = + *(undefined1 *)((long)puVar20 + 0xd); + uVar24 = uVar16 + 0xe; + if (uVar2 == 0xf) { + *(undefined1 *)((long)puVar20 + uVar16 + 0xe) = + *(undefined1 *)((long)puVar20 + 0xe); + uVar24 = uVar16 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar28 - uVar2) - 0x10 >> 4) + 1; + lVar29 = uVar1 * 0x10; + if (0xe < (uVar28 - 1) - uVar2) { + uVar31 = 0; + puVar25 = (undefined8 *)((long)puVar20 + uVar2); + puVar30 = (undefined8 *)((long)puVar20 + uVar16 + uVar2); + do { + uVar33 = *puVar25; + uVar31 = uVar31 + 1; + puVar30[1] = puVar25[1]; + *puVar30 = uVar33; + puVar25 = puVar25 + 2; + puVar30 = puVar30 + 2; + } while (uVar31 < uVar1); + uVar24 = uVar24 + lVar29; + if (uVar28 - uVar2 == lVar29) goto LAB_0024f930; + } + uVar28 = uVar24 + 1; + *(undefined1 *)((long)puVar20 + uVar24) = + *(undefined1 *)((long)puVar20 + (uVar24 - uVar16)); + if (uVar28 <= uVar23 && uVar23 - uVar28 != 0) { + uVar2 = uVar24 + 2; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar2 <= uVar23 && uVar23 - uVar2 != 0) { + uVar28 = uVar24 + 3; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar16)); + if (uVar28 < uVar23) { + uVar2 = uVar24 + 4; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar2 < uVar23) { + uVar28 = uVar24 + 5; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar16)); + if (uVar28 <= uVar23 && uVar23 - uVar28 != 0) { + uVar2 = uVar24 + 6; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar2 <= uVar23 && uVar23 - uVar2 != 0) { + uVar28 = uVar24 + 7; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar16)); + if (uVar28 <= uVar23 && uVar23 - uVar28 != 0) { + uVar2 = uVar24 + 8; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar2 <= uVar23 && uVar23 - uVar2 != 0) { + uVar28 = uVar24 + 9; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar16)); + if (uVar28 <= uVar23 && uVar23 - uVar28 != 0) { + uVar2 = uVar24 + 10; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar2 <= uVar23 && uVar23 - uVar2 != 0) { + uVar28 = uVar24 + 0xb; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar16)); + if (uVar28 <= uVar23 && uVar23 - uVar28 != 0) { + uVar2 = uVar24 + 0xc; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar2 <= uVar23 && uVar23 - uVar2 != 0) { + uVar28 = uVar24 + 0xd; + *(undefined1 *)((long)puVar20 + uVar2) = + *(undefined1 *)((long)puVar20 + (uVar2 - uVar16)); + if (uVar28 < uVar23) { + uVar24 = uVar24 + 0xe; + *(undefined1 *)((long)puVar20 + uVar28) = + *(undefined1 *)((long)puVar20 + (uVar28 - uVar16)); + if (uVar24 < uVar23) { + *(undefined1 *)((long)puVar20 + uVar24) = + *(undefined1 *)((long)puVar20 + (uVar24 - uVar16)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0024f930: + for (uVar16 = 0; uVar16 < local_520; uVar16 = uVar16 + 1) { + uVar23 = uVar10; + uVar28 = uVar8; + if (uVar10 != 0) { + do { + uVar2 = uVar8; + if (uVar23 < uVar8) { + uVar2 = uVar23; + } + iVar12 = (int)uVar2; + local_4e0 = (Mat *)CONCAT44(1,iVar12); + (*pcVar32)(local_680,0,puVar20,0,local_678,0,&local_4e0,local_694); + local_678 = local_678 + iVar12; + local_680 = local_680 + (long)iVar12 * uVar19; + bVar7 = uVar28 < uVar10; + uVar23 = uVar23 - uVar8; + uVar28 = uVar28 + uVar8; + } while (bVar7); + } + NAryMatIterator::operator++((NAryMatIterator *)&local_540); + } + if ((local_418 != &local_408) && (local_418 != (undefined8 *)0x0)) { + operator_delete__(local_418); + } + } + else { + pMStack_4c8 = (Mat *)0x0; + local_4e0 = (Mat *)&local_660; + pMStack_4d8 = (Mat *)&local_600; + local_4d0 = (Mat *)&local_478; + NAryMatIterator::NAryMatIterator + ((NAryMatIterator *)&local_418,(Mat **)&local_4e0,(uchar **)&local_540,-1); + uVar33 = local_3f0; + for (uVar16 = 0; uVar16 < local_3f8; uVar16 = uVar16 + 1) { + local_5a0 = (Mat *)CONCAT44(1,(int)uVar33); + (*pcVar32)(CONCAT44(iStack_53c,local_540),0,CONCAT44(iStack_534,local_538),0,local_530,0, + (Mat *)&local_5a0,local_694); + NAryMatIterator::operator++((NAryMatIterator *)&local_418); + } + } + if (local_440 != 0) { + piVar17 = (int *)(local_440 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar12 = 0; + do { + *local_438 = 0; + iVar12 = iVar12 + 1; + local_438 = local_438 + 1; + } while (iVar12 < local_474); + } + if (local_430 != auStack_428) { + fastFree(local_430); + } + if (lStack_5c8 != 0) { + piVar17 = (int *)(lStack_5c8 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = 0; + uStack_5d8 = 0; + local_5e0 = 0; + uStack_5e8 = 0; + if (0 < local_5fc) { + iVar12 = 0; + piVar17 = local_5c0; + do { + iVar12 = iVar12 + 1; + *piVar17 = 0; + piVar17 = piVar17 + 1; + } while (iVar12 < local_5fc); + } + if (local_5b8 != &local_5b0) { + fastFree(local_5b8); + } + if (lStack_628 != 0) { + piVar17 = (int *)(lStack_628 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + if (0 < local_65c) { + iVar12 = 0; + piVar17 = local_620; + do { + *piVar17 = 0; + iVar12 = iVar12 + 1; + piVar17 = piVar17 + 1; + } while (iVar12 < local_65c); + } + } + else { + _InputArray::getMat_((int)param_2); +LAB_0024e5fc: + if (iVar12 != iVar13) goto LAB_0024e61c; +LAB_0024ef08: + if ((2 < local_65c) || (2 < local_5fc)) goto LAB_0024e61c; + if ((local_620[1] != local_5c0[1]) || + ((*local_620 != *local_5c0 || ((local_660 & 0xfff) != (local_600 & 0xfff))))) + goto LAB_0024e61c; + local_418 = (undefined8 *)CONCAT44(*local_620,local_620[1]); + _OutputArray::create(param_3,(Mat *)&local_418,local_660 & 0xff8,0xffffffff,0,0); + iVar12 = _InputArray::kind((_InputArray *)param_3); + if (iVar12 == 0x10000) { + pMVar26 = *(Mat **)(param_3 + 8); + uVar4 = *(uint *)pMVar26; + local_3d8 = &local_410; + local_408 = *(undefined8 *)(pMVar26 + 0x10); + local_3d0 = &local_3c8; + local_418 = *(undefined8 **)pMVar26; + local_410 = *(ulong *)(pMVar26 + 8); + local_400 = *(undefined8 *)(pMVar26 + 0x18); + local_3f8 = *(ulong *)(pMVar26 + 0x20); + local_3f0 = *(undefined8 *)(pMVar26 + 0x28); + local_3e8 = *(undefined8 *)(pMVar26 + 0x30); + local_3e0 = *(long *)(pMVar26 + 0x38); + local_3c0 = 0; + local_3c8 = 0; + if (local_3e0 != 0) { + piVar17 = (int *)(local_3e0 + 0x14); + do { + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = *piVar17 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (*(int *)(pMVar26 + 4) < 3) { + local_3c8 = **(undefined8 **)(pMVar26 + 0x48); + local_3c0 = (*(undefined8 **)(pMVar26 + 0x48))[1]; + } + else { + local_418 = (undefined8 *)(ulong)uVar4; + Mat::copySize((Mat *)&local_418,pMVar26); + } + } + else { + _InputArray::getMat_((int)param_3); + } + iVar12 = (local_660 >> 3 & 0x1ff) + 1; + if (((local_660 & local_600 & 0x4000 & (uint)local_418) == 0) || + (uVar16 = (long)local_654 * (long)local_658 * (long)iVar12, uVar16 - (long)(int)uVar16 != 0)) + { + uVar16 = (ulong)(uint)(local_654 * iVar12); + local_474 = local_658; + } + else { + local_474 = 1; + } + local_478 = (undefined4)uVar16; + (*(code *)(&PTR_FUN_004f5a00)[(int)(local_660 & 7)]) + (local_650,local_610,local_5f0,local_5b0,local_408,local_3c8,&local_478,local_694); + if (local_3e0 != 0) { + piVar17 = (int *)(local_3e0 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_418); + } + } + local_3e0 = 0; + local_408 = 0; + local_3f0 = 0; + local_3f8 = 0; + local_400 = 0; + if (0 < (int)local_418._4_4_) { + iVar12 = 0; + puVar18 = local_3d8; + do { + *(undefined4 *)puVar18 = 0; + iVar12 = iVar12 + 1; + puVar18 = (ulong *)((long)puVar18 + 4); + } while (iVar12 < (int)local_418._4_4_); + } + local_430 = local_3d0; + if (local_3d0 != &local_3c8) goto LAB_0024f110; +LAB_0024f114: + if (lStack_5c8 != 0) { + piVar17 = (int *)(lStack_5c8 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = 0; + uStack_5d8 = 0; + local_5e0 = 0; + uStack_5e8 = 0; + if (0 < local_5fc) { + iVar12 = 0; + piVar17 = local_5c0; + do { + iVar12 = iVar12 + 1; + *piVar17 = 0; + piVar17 = piVar17 + 1; + } while (iVar12 < local_5fc); + } + if (local_5b8 != &local_5b0) { + fastFree(local_5b8); + } + if (lStack_628 != 0) { + piVar17 = (int *)(lStack_628 + 0x14); + do { + iVar12 = *piVar17; + cVar11 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = iVar12 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + if (0 < local_65c) { + iVar12 = 0; + piVar17 = local_620; + do { + *piVar17 = 0; + iVar12 = iVar12 + 1; + piVar17 = piVar17 + 1; + } while (iVar12 < local_65c); + } + } + lStack_628 = 0; + uStack_638 = 0; + local_640 = 0; + uStack_648 = 0; + local_650 = 0; + if (local_618 != &local_610) { + fastFree(local_618); + } + return; +} + + +================================================================== + +### FUNC 002502a0 (6824 bytes) name=inRange + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::inRange(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_OutputArray const&) */ + +void cv::inRange(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _OutputArray *param_4) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + uint uVar4; + uint uVar5; + int *piVar6; + long lVar7; + undefined8 *puVar8; + uint uVar9; + Mat **ppMVar10; + byte bVar11; + ulong uVar12; + undefined8 uVar13; + undefined2 uVar14; + bool bVar15; + char cVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + uint uVar21; + uint uVar22; + uint uVar23; + void *pvVar24; + char *pcVar25; + ulong uVar26; + byte *pbVar27; + undefined8 *puVar28; + code *pcVar29; + long lVar30; + long lVar31; + ulong uVar32; + uint *puVar33; + byte *pbVar34; + Mat *pMVar35; + undefined8 *puVar36; + uchar *puVar37; + ulong uVar38; + ulong uVar39; + ulong uVar40; + uchar *puVar41; + ulong uVar42; + byte *pbVar43; + code *pcVar44; + uint uVar45; + long lVar46; + ulong uVar47; + ulong uVar48; + undefined8 uVar49; + Mat *local_7c0; + uchar *local_7b8; + Mat *local_7a8; + ulong local_790; + int local_768 [3]; + undefined4 local_75c; + undefined8 local_758; + undefined8 local_750; + undefined8 local_748; + undefined8 local_740; + undefined8 local_738; + undefined8 local_730; + undefined8 local_728; + undefined8 local_720; + undefined8 local_718; + undefined8 local_710; + undefined8 local_708; + undefined8 local_700; + Mat *local_6f8; + Mat *local_6f0; + undefined8 local_6e8; + uchar *local_6e0; + byte *pbStack_6d8; + ulong local_6d0; + Mat *local_6c0; + Mat *local_6b8; + Mat *local_6b0; + Mat *local_6a8; + undefined8 local_6a0; + NAryMatIterator aNStack_698 [32]; + ulong local_678; + ulong local_670; + uint local_658; + int local_654; + int local_650; + undefined4 local_64c; + undefined8 local_648; + undefined8 local_640; + undefined8 local_638; + undefined8 local_630; + undefined8 local_628; + long local_620; + int *local_618; + undefined8 *local_610; + undefined8 local_608; + undefined8 local_600; + uint local_5f8; + int local_5f4; + uint local_5f0; + int local_5ec; + undefined8 local_5e8; + undefined8 local_5e0; + undefined8 local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + long local_5c0; + uint *local_5b8; + undefined8 *local_5b0; + undefined8 local_5a8; + undefined8 local_5a0; + uint local_598; + int local_594; + uint local_590; + int local_58c; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + undefined8 local_568; + long local_560; + uint *local_558; + undefined8 *local_550; + undefined8 local_548; + undefined8 local_540; + undefined4 local_538; + undefined4 local_534; + undefined4 local_530; + undefined4 local_52c; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_500; + undefined4 *local_4f8; + undefined8 *local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + undefined4 local_4d8; + undefined4 local_4d4; + uint local_4d0 [2]; + ulong local_4c8; + ulong local_4c0; + long local_4b8; + long local_4b0; + undefined8 local_4a8; + undefined8 local_4a0; + uint *local_498; + undefined8 *local_490; + undefined8 local_488; + undefined8 local_480; + uint local_478; + int local_474; + uint local_470 [2]; + long local_468; + long local_460; + long local_458; + long local_450; + undefined8 local_448; + long local_440; + uint *local_438; + undefined8 *local_430; + undefined8 local_428; + undefined8 local_420; + byte *local_418; + ulong local_410; + byte abStack_408 [1032]; + + iVar17 = _InputArray::kind(param_1); + iVar18 = _InputArray::kind(param_2); + iVar19 = _InputArray::kind(param_3); + iVar20 = _InputArray::kind(param_1); + if (iVar20 == 0x10000) { + pMVar35 = *(Mat **)(param_1 + 8); + local_618 = &local_650; + local_610 = &local_608; + local_658 = *(uint *)pMVar35; + local_654 = *(int *)(pMVar35 + 4); + local_650 = *(int *)(pMVar35 + 8); + local_64c = *(undefined4 *)(pMVar35 + 0xc); + local_648 = *(undefined8 *)(pMVar35 + 0x10); + local_640 = *(undefined8 *)(pMVar35 + 0x18); + local_638 = *(undefined8 *)(pMVar35 + 0x20); + local_630 = *(undefined8 *)(pMVar35 + 0x28); + local_628 = *(undefined8 *)(pMVar35 + 0x30); + local_620 = *(long *)(pMVar35 + 0x38); + local_600 = 0; + local_608 = 0; + if (local_620 != 0) { + piVar6 = (int *)(local_620 + 0x14); + do { + cVar16 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar15) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar35 + 4)) { + local_654 = 0; + Mat::copySize((Mat *)&local_658,pMVar35); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_7c0 = (Mat *)&local_658; + iVar20 = _InputArray::kind(param_2); + if (iVar20 == 0x10000) { + pMVar35 = *(Mat **)(param_2 + 8); + local_5b8 = &local_5f0; + local_5b0 = &local_5a8; + local_5f8 = *(uint *)pMVar35; + local_5f4 = *(int *)(pMVar35 + 4); + local_5f0 = *(uint *)(pMVar35 + 8); + local_5ec = *(int *)(pMVar35 + 0xc); + local_5e8 = *(undefined8 *)(pMVar35 + 0x10); + local_5e0 = *(undefined8 *)(pMVar35 + 0x18); + local_5d8 = *(undefined8 *)(pMVar35 + 0x20); + local_5d0 = *(undefined8 *)(pMVar35 + 0x28); + local_5c8 = *(undefined8 *)(pMVar35 + 0x30); + local_5c0 = *(long *)(pMVar35 + 0x38); + local_5a0 = 0; + local_5a8 = 0; + if (local_5c0 != 0) { + piVar6 = (int *)(local_5c0 + 0x14); + do { + cVar16 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar15) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (*(int *)(pMVar35 + 4) < 3) { + local_5a8 = **(undefined8 **)(pMVar35 + 0x48); + local_5a0 = (*(undefined8 **)(pMVar35 + 0x48))[1]; + } + else { + local_5f4 = 0; + Mat::copySize((Mat *)&local_5f8,pMVar35); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iVar20 = _InputArray::kind(param_3); + if (iVar20 == 0x10000) { + pMVar35 = *(Mat **)(param_3 + 8); + local_558 = &local_590; + local_550 = &local_548; + local_598 = *(uint *)pMVar35; + local_594 = *(int *)(pMVar35 + 4); + local_590 = *(uint *)(pMVar35 + 8); + local_58c = *(int *)(pMVar35 + 0xc); + local_588 = *(undefined8 *)(pMVar35 + 0x10); + local_580 = *(undefined8 *)(pMVar35 + 0x18); + local_578 = *(undefined8 *)(pMVar35 + 0x20); + local_570 = *(undefined8 *)(pMVar35 + 0x28); + local_568 = *(undefined8 *)(pMVar35 + 0x30); + local_560 = *(long *)(pMVar35 + 0x38); + local_540 = 0; + local_548 = 0; + if (local_560 != 0) { + piVar6 = (int *)(local_560 + 0x14); + do { + cVar16 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar15) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (*(int *)(pMVar35 + 4) < 3) { + local_548 = **(undefined8 **)(pMVar35 + 0x48); + local_540 = (*(undefined8 **)(pMVar35 + 0x48))[1]; + } + else { + local_594 = 0; + Mat::copySize((Mat *)&local_598,pMVar35); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if (((iVar17 == 0x20000) || (iVar18 != 0x20000)) && + (cVar16 = MatSize::operator==((MatSize *)&local_618,(MatSize *)&local_5b8), cVar16 != '\0')) { + uVar21 = 0; + uVar48 = (ulong)local_658; + if ((local_658 & 0xfff) != (local_5f8 & 0xfff)) goto LAB_00250394; + goto LAB_00250404; + } + uVar48 = (ulong)local_658; +LAB_00250394: + if ((local_5f4 < 3) && ((local_5f8 >> 0xe & 1) != 0)) { + uVar21 = local_5b8[1]; + uVar22 = *local_5b8; + if (((uVar21 != 1) && (uVar22 != 1)) || + ((uVar4 = ((uint)(uVar48 >> 3) & 0x1ff) + 1, iVar18 != 0x20000 && (iVar17 == 0x20000)))) + goto LAB_002503a4; + bVar15 = uVar21 == 1; + if (((bVar15) && (uVar22 == 1)) || + (((uVar22 == uVar4 && (bVar15)) || ((uVar21 == uVar4 && (uVar22 == 1)))))) { + uVar21 = 1; + } + else if ((((uVar22 != 4) || (!bVar15)) || (4 < uVar4)) || (uVar21 = 1, (local_5f8 & 0xfff) != 6) + ) goto LAB_002503a4; + } + else { +LAB_002503a4: + local_758 = 0; + local_750 = 0; + pvVar24 = (void *)String::allocate((String *)&local_758,0x59); + memcpy(pvVar24, + "The lower bounary is neither an array of the same size and same type as src, nor a scalar" + ,0x59); + error(-0xd1,(String *)&local_758, + "void cv::inRange(cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1640); + String::deallocate((String *)&local_758); + uVar48 = (ulong)local_658; + uVar21 = 1; + } +LAB_00250404: + if (((iVar19 == 0x20000) && (iVar17 != 0x20000)) || + ((cVar16 = MatSize::operator==((MatSize *)&local_618,(MatSize *)&local_558), cVar16 == '\0' || + (uVar22 = 0, ((uint)uVar48 & 0xfff) != (local_598 & 0xfff))))) { + if ((local_594 < 3) && ((local_598 >> 0xe & 1) != 0)) { + uVar22 = local_558[1]; + uVar4 = *local_558; + if (((uVar22 != 1) && (uVar4 != 1)) || + ((uVar5 = ((uint)(uVar48 >> 3) & 0x1ff) + 1, iVar19 != 0x20000 && (iVar17 == 0x20000)))) + goto LAB_0025041c; + bVar15 = uVar22 != 1; + if ((((bVar15) || (uVar4 != 1)) && ((uVar4 != uVar5 || (bVar15)))) && + ((uVar22 != uVar5 || (uVar4 != 1)))) { + if ((((uVar4 == 4) && (!bVar15)) && (uVar5 < 5)) && (uVar22 = 1, (local_598 & 0xfff) == 6)) + goto LAB_00250474; + goto LAB_0025041c; + } + } + else { +LAB_0025041c: + local_748 = 0; + local_740 = 0; + pvVar24 = (void *)String::allocate((String *)&local_748,0x59); + memcpy(pvVar24, + "The upper bounary is neither an array of the same size and same type as src, nor a scalar" + ,0x59); + error(-0xd1,(String *)&local_748, + "void cv::inRange(cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1649); + String::deallocate((String *)&local_748); + } + uVar22 = 1; + } +LAB_00250474: + if (uVar21 != uVar22) { + local_738 = 0; + local_730 = 0; + pcVar25 = (char *)String::allocate((String *)&local_738,0x14); + uVar13 = s_lbScalar____ubScalar_00460bc0._8_8_; + uVar49 = s_lbScalar____ubScalar_00460bc0._0_8_; + *(undefined4 *)(pcVar25 + 0x10) = s_lbScalar____ubScalar_00460bc0._16_4_; + *(undefined8 *)pcVar25 = uVar49; + *(undefined8 *)(pcVar25 + 8) = uVar13; + error(-0xd7,(String *)&local_738, + "void cv::inRange(cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x164d); + String::deallocate((String *)&local_738); + } + uVar5 = local_658 >> 3 & 0x1ff; + uVar9 = local_658 & 7; + uVar4 = uVar5 + 1; + if (local_654 < 1) { + uVar48 = 0x3ff; + uVar26 = 0; + } + else { + uVar26 = local_610[(long)local_654 + -1]; + uVar48 = uVar26 + 0x3ff; + } + uVar12 = 0; + if (uVar26 != 0) { + uVar12 = uVar48 / uVar26; + } + _OutputArray::create(param_4,local_654,local_618,0,-1,false,0); + iVar17 = _InputArray::kind((_InputArray *)param_4); + if (iVar17 == 0x10000) { + pMVar35 = *(Mat **)(param_4 + 8); + local_4f8 = &local_530; + local_4f0 = &local_4e8; + local_538 = *(undefined4 *)pMVar35; + local_534 = *(undefined4 *)(pMVar35 + 4); + local_530 = *(undefined4 *)(pMVar35 + 8); + local_52c = *(undefined4 *)(pMVar35 + 0xc); + local_528 = *(undefined8 *)(pMVar35 + 0x10); + local_520 = *(undefined8 *)(pMVar35 + 0x18); + local_518 = *(undefined8 *)(pMVar35 + 0x20); + local_510 = *(undefined8 *)(pMVar35 + 0x28); + local_508 = *(undefined8 *)(pMVar35 + 0x30); + local_500 = *(long *)(pMVar35 + 0x38); + local_4e0 = 0; + local_4e8 = 0; + if (local_500 != 0) { + piVar6 = (int *)(local_500 + 0x14); + do { + cVar16 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar15) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar35 + 4)) { + local_534 = 0; + Mat::copySize((Mat *)&local_538,pMVar35); + } + } + else { + _InputArray::getMat_((int)param_4); + } + local_7a8 = (Mat *)&local_538; + pcVar44 = (code *)(&PTR_FUN_004f5a40)[(int)uVar9]; + ppMVar10 = &local_6f8; + if ((uVar22 & uVar21) == 0) { + ppMVar10 = &local_6c0; + } + local_6e8 = 0; + local_6f8 = local_7c0; + local_6f0 = local_7a8; + local_6a0 = 0; + local_6c0 = local_7c0; + local_6b8 = local_7a8; + local_6b0 = (Mat *)&local_5f8; + local_6a8 = (Mat *)&local_598; + NAryMatIterator::NAryMatIterator(aNStack_698,ppMVar10,&local_6e0,-1); + lVar46 = (long)(int)uVar4; + if (local_670 < uVar12) { + uVar12 = local_670; + } + pbVar27 = abStack_408; + local_418 = pbVar27; + uVar48 = (long)(int)(uVar4 * 2) * 4 + 0x80 + + (lVar46 + uVar26 * (long)(int)(uVar21 + uVar22)) * uVar12; + local_410 = 0x408; + if (uVar48 < 0x409) { + local_410 = uVar48; + } + else { + pbVar27 = operator_new__(uVar48); + } + uVar47 = (ulong)(pbVar27 + uVar12 * lVar46 + 0xf) & 0xfffffffffffffff0; + local_418 = pbVar27; + local_410 = uVar48; + if ((uVar22 & uVar21) == 0) { + uVar47 = 0; + local_7b8 = (uchar *)0x0; + goto LAB_00250ea8; + } + local_7b8 = (uchar *)(uVar47 + uVar12 * uVar26 + 0xf & 0xfffffffffffffff0); + if ((local_5f8 & 0xfff) != (local_598 & 0xfff)) { + local_728 = 0; + local_720 = 0; + puVar28 = (undefined8 *)String::allocate((String *)&local_728,0x16); + uVar14 = _LAB_00460bec; + uVar13 = DAT_00460be0; + uVar49 = DAT_00460bd8; + *(undefined4 *)(puVar28 + 2) = _LAB_00460be8; + *(undefined2 *)((long)puVar28 + 0x14) = uVar14; + *puVar28 = uVar49; + puVar28[1] = uVar13; + error(-0xd7,(String *)&local_728, + "void cv::inRange(cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1668); + String::deallocate((String *)&local_728); + } + uVar23 = local_5f8 & 7; + if ((uVar23 != uVar9) && (uVar9 < 4)) { + uVar48 = (ulong)(local_7b8 + uVar12 * uVar26 + 0xf) & 0xfffffffffffffff0; + lVar7 = uVar48 + lVar46 * 4; + pcVar29 = (code *)FUN_00283fe0(uVar23,4); + local_474 = 1; + local_478 = uVar4; + (*pcVar29)(); + local_474 = 1; + local_478 = uVar4; + (*pcVar29)(local_588,1,0,1,lVar7,1,(Mat *)&local_478,0); + lVar30 = lrint(*(double *)(&DAT_00461300 + (long)(int)uVar9 * 8)); + iVar17 = (int)lVar30; + lVar31 = lrint(*(double *)(&DAT_00460df0 + (long)(int)uVar9 * 8)); + lVar30 = 0; + do { + while ((iVar18 = *(int *)(lVar7 + lVar30 * 4), iVar19 = *(int *)(uVar48 + lVar30 * 4), + iVar19 <= iVar18 && iVar19 <= (int)lVar31 && (iVar17 <= iVar18))) { + lVar30 = lVar30 + 1; + if ((int)uVar4 <= (int)lVar30) goto LAB_00250844; + } + *(int *)(uVar48 + lVar30 * 4) = iVar17 + 1; + *(int *)(lVar7 + lVar30 * 4) = iVar17; + lVar30 = lVar30 + 1; + } while ((int)lVar30 < (int)uVar4); +LAB_00250844: + local_498 = local_4d0; + local_4d4 = 2; + local_4d0[1] = 1; + local_490 = &local_488; + local_488 = 4; + local_480 = 4; + local_4a8 = 0; + local_4a0 = 0; + local_4d8 = 0x42ff4004; + local_4d0[0] = uVar4; + local_4c8 = uVar48; + local_4c0 = uVar48; + local_4b8 = lVar7; + local_4b0 = lVar7; + Mat::operator=((Mat *)&local_5f8,(Mat *)&local_4d8); + Mat::release((Mat *)&local_4d8); + if (local_490 != &local_488) { + fastFree(local_490); + } + local_438 = local_470; + local_430 = &local_428; + local_474 = 2; + local_458 = lVar7 + lVar46 * 4; + local_428 = 4; + local_420 = 4; + local_470[1] = 1; + local_448 = 0; + local_440 = 0; + local_478 = 0x42ff4004; + local_470[0] = uVar4; + local_468 = lVar7; + local_460 = lVar7; + local_450 = local_458; + Mat::operator=((Mat *)&local_598,(Mat *)&local_478); + if (local_440 != 0) { + piVar6 = (int *)(local_440 + 0x14); + do { + iVar17 = *piVar6; + cVar16 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar15) { + *piVar6 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar17 = 0; + puVar33 = local_438; + do { + *puVar33 = 0; + iVar17 = iVar17 + 1; + puVar33 = puVar33 + 1; + } while (iVar17 < local_474); + } + if (local_430 != &local_428) { + fastFree(local_430); + } + uVar23 = local_5f8 & 7; + } + if (local_5f4 < 3) { + iVar17 = local_5ec * local_5f0; + } + else { + iVar17 = 1; + lVar30 = 0; + do { + puVar33 = local_5b8 + lVar30; + lVar30 = lVar30 + 1; + iVar17 = iVar17 * *puVar33; + } while ((int)lVar30 < local_5f4); + } + uVar9 = local_658 & 7; + iVar18 = (local_658 >> 3 & 0x1ff) + 1; + uVar48 = (ulong)(iVar18 << (ulong)((uint)(0xfa50L >> (uVar9 << 1)) & 3)); + pcVar29 = (code *)FUN_00283fe0(uVar23,local_658 & 0xfff); + local_768[0] = iVar17; + if (iVar18 < iVar17) { + local_768[0] = iVar18; + } + local_768[1] = 1; + (*pcVar29)(local_5e8,1,0,1,uVar47,1,local_768,0); + if (iVar17 < iVar18) { + if (iVar17 != 1) { + local_718 = 0; + local_710 = 0; + pcVar25 = (char *)String::allocate((String *)&local_718,8); + *(undefined8 *)pcVar25 = s_scn____1_004607e0._0_8_; + error(-0xd7,(String *)&local_718, + "void cv::convertAndUnrollScalar(const cv::Mat&, int, uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x588); + String::deallocate((String *)&local_718); + } + uVar42 = 0x88442211UL >> (uVar9 << 2) & 0xf; + if (uVar42 < uVar48) { + puVar28 = (undefined8 *)(uVar47 + uVar42); + uVar39 = uVar48 - uVar42; + if ((puVar28 < (undefined8 *)(uVar47 + 0x10)) || (uVar39 < 0x10)) { + lVar30 = uVar47 - uVar42; + do { + *(undefined1 *)(uVar47 + uVar42) = *(undefined1 *)(lVar30 + uVar42); + uVar42 = uVar42 + 1; + } while (uVar48 != uVar42); + } + else { + uVar38 = (uVar39 - 0x10 >> 4) + 1; + lVar30 = uVar38 * 0x10; + uVar40 = uVar42; + if (0xe < uVar48 + ~uVar42) { + uVar40 = 0; + puVar36 = puVar28; + do { + puVar8 = (undefined8 *)((long)puVar36 + (uVar47 - (long)puVar28)); + uVar40 = uVar40 + 1; + uVar49 = *puVar8; + puVar36[1] = puVar8[1]; + *puVar36 = uVar49; + puVar36 = puVar36 + 2; + } while (uVar40 < uVar38); + uVar40 = lVar30 + uVar42; + if (lVar30 - uVar39 == 0) goto LAB_00250a60; + } + uVar39 = uVar40 + 1; + *(undefined1 *)(uVar47 + uVar40) = *(undefined1 *)(uVar47 + (uVar40 - uVar42)); + if (uVar39 < uVar48) { + uVar38 = uVar40 + 2; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar42)); + if (uVar38 < uVar48) { + uVar39 = uVar40 + 3; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar42)); + if (uVar39 < uVar48) { + uVar38 = uVar40 + 4; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar42)); + if (uVar38 < uVar48) { + uVar39 = uVar40 + 5; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar42)); + if (uVar39 < uVar48) { + uVar38 = uVar40 + 6; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar42)); + if (uVar38 < uVar48) { + uVar39 = uVar40 + 7; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar42)); + if (uVar39 < uVar48) { + uVar38 = uVar40 + 8; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar42)) + ; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 9; + *(undefined1 *)(uVar47 + uVar38) = + *(undefined1 *)(uVar47 + (uVar38 - uVar42)); + if (uVar39 < uVar48) { + uVar38 = uVar40 + 10; + *(undefined1 *)(uVar47 + uVar39) = + *(undefined1 *)(uVar47 + (uVar39 - uVar42)); + if (uVar38 < uVar48) { + uVar39 = uVar40 + 0xb; + *(undefined1 *)(uVar47 + uVar38) = + *(undefined1 *)(uVar47 + (uVar38 - uVar42)); + if (uVar39 < uVar48) { + uVar38 = uVar40 + 0xc; + *(undefined1 *)(uVar47 + uVar39) = + *(undefined1 *)(uVar47 + (uVar39 - uVar42)); + if (uVar38 < uVar48) { + uVar39 = uVar40 + 0xd; + *(undefined1 *)(uVar47 + uVar38) = + *(undefined1 *)(uVar47 + (uVar38 - uVar42)); + if (uVar39 < uVar48) { + uVar40 = uVar40 + 0xe; + *(undefined1 *)(uVar47 + uVar39) = + *(undefined1 *)(uVar47 + (uVar39 - uVar42)); + if (uVar40 < uVar48) { + *(undefined1 *)(uVar47 + uVar40) = + *(undefined1 *)(uVar47 + (uVar40 - uVar42)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00250a60: + uVar42 = uVar12 * uVar48; + if (uVar48 < uVar42) { + puVar28 = (undefined8 *)(uVar47 + uVar48); + uVar39 = uVar42 - uVar48; + if ((puVar28 < (undefined8 *)(uVar47 + 0x10)) || (uVar39 < 0x10)) { + lVar30 = uVar47 - uVar48; + do { + *(undefined1 *)(uVar47 + uVar48) = *(undefined1 *)(lVar30 + uVar48); + uVar48 = uVar48 + 1; + } while (uVar48 != uVar42); + } + else { + uVar38 = (uVar39 - 0x10 >> 4) + 1; + lVar30 = uVar38 * 0x10; + uVar40 = uVar48; + if (0xe < ~uVar48 + uVar42) { + uVar40 = 0; + puVar36 = puVar28; + do { + puVar8 = (undefined8 *)((long)puVar36 + (uVar47 - (long)puVar28)); + uVar40 = uVar40 + 1; + uVar49 = *puVar8; + puVar36[1] = puVar8[1]; + *puVar36 = uVar49; + puVar36 = puVar36 + 2; + } while (uVar40 < uVar38); + uVar40 = lVar30 + uVar48; + if (lVar30 - uVar39 == 0) goto LAB_00250c30; + } + uVar39 = uVar40 + 1; + *(undefined1 *)(uVar47 + uVar40) = *(undefined1 *)(uVar47 + (uVar40 - uVar48)); + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 2; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 3; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar48)); + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 4; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 5; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar48)); + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 6; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 7; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar48)); + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 8; + *(undefined1 *)(uVar47 + uVar39) = *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 9; + *(undefined1 *)(uVar47 + uVar38) = *(undefined1 *)(uVar47 + (uVar38 - uVar48)) + ; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 10; + *(undefined1 *)(uVar47 + uVar39) = + *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 0xb; + *(undefined1 *)(uVar47 + uVar38) = + *(undefined1 *)(uVar47 + (uVar38 - uVar48)); + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 0xc; + *(undefined1 *)(uVar47 + uVar39) = + *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 0xd; + *(undefined1 *)(uVar47 + uVar38) = + *(undefined1 *)(uVar47 + (uVar38 - uVar48)); + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar40 = uVar40 + 0xe; + *(undefined1 *)(uVar47 + uVar39) = + *(undefined1 *)(uVar47 + (uVar39 - uVar48)); + if (uVar40 <= uVar42 && uVar42 - uVar40 != 0) { + *(undefined1 *)(uVar47 + uVar40) = + *(undefined1 *)(uVar47 + (uVar40 - uVar48)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00250c30: + if (local_594 < 3) { + iVar17 = local_58c * local_590; + } + else { + lVar30 = 0; + iVar17 = 1; + do { + puVar33 = local_558 + lVar30; + lVar30 = lVar30 + 1; + iVar17 = iVar17 * *puVar33; + } while ((int)lVar30 < local_594); + } + uVar9 = local_658 & 7; + iVar18 = (local_658 >> 3 & 0x1ff) + 1; + uVar48 = (ulong)(iVar18 << (ulong)((uint)(0xfa50L >> (uVar9 << 1)) & 3)); + pcVar29 = (code *)FUN_00283fe0(local_598 & 7,local_658 & 0xfff); + local_75c = 1; + local_768[2] = iVar17; + if (iVar18 < iVar17) { + local_768[2] = iVar18; + } + (*pcVar29)(local_588,1,0,1,local_7b8,1,local_768 + 2,0); + if (iVar17 < iVar18) { + if (iVar17 != 1) { + local_708 = 0; + local_700 = 0; + pcVar25 = (char *)String::allocate((String *)&local_708,8); + *(undefined8 *)pcVar25 = s_scn____1_004607e0._0_8_; + error(-0xd7,(String *)&local_708, + "void cv::convertAndUnrollScalar(const cv::Mat&, int, uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x588); + String::deallocate((String *)&local_708); + } + uVar42 = 0x88442211UL >> (uVar9 << 2) & 0xf; + if (uVar42 < uVar48) { + puVar41 = local_7b8 + uVar42; + uVar39 = uVar48 - uVar42; + if ((puVar41 < local_7b8 + 0x10) || (uVar39 < 0x10)) { + uVar39 = uVar42; + do { + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + uVar39 = uVar39 + 1; + } while (uVar48 != uVar39); + } + else { + uVar38 = (uVar39 - 0x10 >> 4) + 1; + lVar30 = uVar38 * 0x10; + uVar40 = uVar42; + if (0xe < uVar48 + ~uVar42) { + uVar40 = 0; + puVar37 = puVar41; + do { + uVar40 = uVar40 + 1; + uVar49 = *(undefined8 *)(puVar37 + ((long)local_7b8 - (long)puVar41)); + *(undefined8 *)(puVar37 + 8) = + *(undefined8 *)(puVar37 + ((long)local_7b8 - (long)puVar41) + 8); + *(undefined8 *)puVar37 = uVar49; + puVar37 = puVar37 + 0x10; + } while (uVar40 < uVar38); + uVar40 = lVar30 + uVar42; + if (lVar30 - uVar39 == 0) goto LAB_00250cd8; + } + uVar39 = uVar40 + 1; + local_7b8[uVar40] = local_7b8[uVar40 - uVar42]; + if (uVar39 < uVar48) { + uVar38 = uVar40 + 2; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 3; + local_7b8[uVar38] = local_7b8[uVar38 - uVar42]; + if (uVar39 < uVar48) { + uVar38 = uVar40 + 4; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 5; + local_7b8[uVar38] = local_7b8[uVar38 - uVar42]; + if (uVar39 < uVar48) { + uVar38 = uVar40 + 6; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 7; + local_7b8[uVar38] = local_7b8[uVar38 - uVar42]; + if (uVar39 < uVar48) { + uVar38 = uVar40 + 8; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 9; + local_7b8[uVar38] = local_7b8[uVar38 - uVar42]; + if (uVar39 < uVar48) { + uVar38 = uVar40 + 10; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 0xb; + local_7b8[uVar38] = local_7b8[uVar38 - uVar42]; + if (uVar39 < uVar48) { + uVar38 = uVar40 + 0xc; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar38 < uVar48) { + uVar39 = uVar40 + 0xd; + local_7b8[uVar38] = local_7b8[uVar38 - uVar42]; + if (uVar39 < uVar48) { + uVar40 = uVar40 + 0xe; + local_7b8[uVar39] = local_7b8[uVar39 - uVar42]; + if (uVar40 < uVar48) { + local_7b8[uVar40] = local_7b8[uVar40 - uVar42]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00250cd8: + uVar42 = uVar12 * uVar48; + if (uVar48 < uVar42) { + puVar41 = local_7b8 + uVar48; + uVar39 = uVar42 - uVar48; + if ((puVar41 < local_7b8 + 0x10) || (uVar39 < 0x10)) { + uVar39 = uVar48; + do { + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + uVar39 = uVar39 + 1; + } while (uVar39 != uVar42); + } + else { + uVar38 = (uVar39 - 0x10 >> 4) + 1; + uVar32 = uVar38 * 0x10; + uVar40 = uVar48; + if (0xe < ~uVar48 + uVar42) { + uVar40 = 0; + puVar37 = puVar41; + do { + uVar40 = uVar40 + 1; + uVar49 = *(undefined8 *)(puVar37 + ((long)local_7b8 - (long)puVar41)); + *(undefined8 *)(puVar37 + 8) = + *(undefined8 *)(puVar37 + ((long)local_7b8 - (long)puVar41) + 8); + *(undefined8 *)puVar37 = uVar49; + puVar37 = puVar37 + 0x10; + } while (uVar40 < uVar38); + uVar40 = uVar32 + uVar48; + if (uVar39 == uVar32) goto LAB_00250ea8; + } + uVar39 = uVar40 + 1; + local_7b8[uVar40] = local_7b8[uVar40 - uVar48]; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 2; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 3; + local_7b8[uVar38] = local_7b8[uVar38 - uVar48]; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 4; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar38 < uVar42) { + uVar39 = uVar40 + 5; + local_7b8[uVar38] = local_7b8[uVar38 - uVar48]; + if (uVar39 < uVar42) { + uVar38 = uVar40 + 6; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 7; + local_7b8[uVar38] = local_7b8[uVar38 - uVar48]; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 8; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 9; + local_7b8[uVar38] = local_7b8[uVar38 - uVar48]; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 10; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 0xb; + local_7b8[uVar38] = local_7b8[uVar38 - uVar48]; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar38 = uVar40 + 0xc; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar38 <= uVar42 && uVar42 - uVar38 != 0) { + uVar39 = uVar40 + 0xd; + local_7b8[uVar38] = local_7b8[uVar38 - uVar48]; + if (uVar39 <= uVar42 && uVar42 - uVar39 != 0) { + uVar40 = uVar40 + 0xe; + local_7b8[uVar39] = local_7b8[uVar39 - uVar48]; + if (uVar40 <= uVar42 && uVar42 - uVar40 != 0) { + local_7b8[uVar40] = local_7b8[uVar40 - uVar48]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00250ea8: + uVar9 = uVar4 & 3; + local_790 = 0; + uVar23 = uVar9; + if (uVar9 == 0) { + uVar23 = 4; + } + if (local_678 != 0) { + do { + uVar48 = local_670; + uVar42 = uVar12; + if (local_670 != 0) { + do { + uVar38 = local_6d0; + uVar39 = uVar12; + if (uVar48 < uVar12) { + uVar39 = uVar48; + } + uVar40 = (ulong)(int)uVar39; + lVar30 = uVar40 * uVar26; + puVar41 = local_7b8; + if (uVar21 == 0) { + local_6d0 = local_6d0 + lVar30; + if (uVar22 == 0) { + iVar17 = 3; +LAB_00250f3c: + puVar41 = (&local_6e0)[iVar17]; + (&local_6e0)[iVar17] = puVar41 + lVar30; + } + } + else { + uVar38 = uVar47; + if (uVar22 == 0) { + iVar17 = 2; + goto LAB_00250f3c; + } + } + pbVar34 = pbVar27; + if (uVar4 == 1) { + pbVar34 = pbStack_6d8; + } + local_478 = uVar4 * (int)uVar39; + local_474 = 1; + (*pcVar44)(local_6e0,0,uVar38,0,puVar41,0,pbVar34,0,&local_478); + if (uVar4 != 1) { + if (uVar9 == 0) { +LAB_00250f9c: + uVar39 = 0; + pbVar34 = pbVar27; + uVar45 = uVar23; + if (uVar40 != 0) { + do { + pbVar43 = pbVar34 + 1; + bVar11 = *pbVar34; + pbVar1 = pbVar34 + 2; + pbVar2 = pbVar34 + 3; + pbVar34 = pbVar34 + lVar46; + pbStack_6d8[uVar39] = *pbVar43 & bVar11 & *pbVar1 & *pbVar2; + uVar39 = uVar39 + 1; + } while (uVar39 < uVar40); + } +LAB_00250fdc: + if (uVar4 <= uVar45) goto LAB_00251058; + } + else { + if (uVar9 != 1) { + if (uVar9 == 2) { + uVar39 = 0; + pbVar34 = pbVar27; + if (uVar40 != 0) { + do { + pbVar43 = pbVar34 + 1; + bVar11 = *pbVar34; + pbVar34 = pbVar34 + lVar46; + pbStack_6d8[uVar39] = *pbVar43 & bVar11; + uVar39 = uVar39 + 1; + } while (uVar39 < uVar40); + } + uVar45 = 2; + } + else { + if (uVar9 != 3) goto LAB_00250f9c; + uVar39 = 0; + pbVar34 = pbVar27; + if (uVar40 != 0) { + do { + pbVar43 = pbVar34 + 1; + bVar11 = *pbVar34; + pbVar1 = pbVar34 + 2; + pbVar34 = pbVar34 + lVar46; + pbStack_6d8[uVar39] = *pbVar43 & bVar11 & *pbVar1; + uVar39 = uVar39 + 1; + } while (uVar39 < uVar40); + } + uVar45 = 3; + } + goto LAB_00250fdc; + } + uVar39 = 0; + pbVar34 = pbVar27; + if (uVar40 != 0) { + do { + bVar11 = *pbVar34; + pbVar34 = pbVar34 + lVar46; + pbStack_6d8[uVar39] = bVar11; + uVar39 = uVar39 + 1; + } while (uVar39 < uVar40); + } + uVar45 = 1; + } + pbVar34 = pbVar27 + (int)uVar45; + do { + uVar39 = 0; + pbVar43 = pbVar34; + if (uVar40 != 0) { + do { + bVar11 = *pbVar43; + pbVar1 = pbVar43 + 1; + pbVar2 = pbVar43 + 2; + pbVar3 = pbVar43 + 3; + pbVar43 = pbVar43 + lVar46; + pbStack_6d8[uVar39] = bVar11 & *pbVar1 & pbStack_6d8[uVar39] & *pbVar2 & *pbVar3; + uVar39 = uVar39 + 1; + } while (uVar39 < uVar40); + } + pbVar34 = pbVar34 + 4; + } while (pbVar34 != pbVar27 + (long)(int)uVar45 + 4 + (ulong)(uVar5 - uVar45 >> 2) * 4); + } +LAB_00251058: + uVar48 = uVar48 - uVar12; + pbStack_6d8 = pbStack_6d8 + uVar40; + local_6e0 = local_6e0 + lVar30; + bVar15 = uVar42 < local_670; + uVar42 = uVar42 + uVar12; + } while (bVar15); + } + local_790 = local_790 + 1; + NAryMatIterator::operator++(aNStack_698); + } while (local_790 < local_678); + } + if ((local_418 != abStack_408) && (local_418 != (byte *)0x0)) { + operator_delete__(local_418); + } + Mat::release(local_7a8); + if (local_4f0 != &local_4e8) { + fastFree(local_4f0); + } + if (local_560 != 0) { + piVar6 = (int *)(local_560 + 0x14); + do { + iVar17 = *piVar6; + cVar16 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar15) { + *piVar6 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_598); + } + } + local_560 = 0; + local_588 = 0; + local_570 = 0; + local_578 = 0; + local_580 = 0; + if (0 < local_594) { + iVar17 = 0; + puVar33 = local_558; + do { + *puVar33 = 0; + iVar17 = iVar17 + 1; + puVar33 = puVar33 + 1; + } while (iVar17 < local_594); + } + if (local_550 != &local_548) { + fastFree(local_550); + } + Mat::release((Mat *)&local_5f8); + if (local_5b0 != &local_5a8) { + fastFree(local_5b0); + } + Mat::release(local_7c0); + if (local_610 != &local_608) { + fastFree(local_610); + } + return; +} + + +================================================================== + +### FUNC 00251eb0 (668 bytes) name=cvNot + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvNot(cv *param_1,cv *param_2) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + _InputArray *p_Var9; + int *piVar10; + int iVar11; + int *piVar12; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_0025210c; + } + else if (iVar11 < 1) { +LAB_0025210c: + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) goto LAB_00251f78; + } + else if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_0025210c; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_d8,0x30); + uVar7 = s_t_type___0045fdf8._0_8_; + uVar6 = _LAB_0045fdf0; + uVar5 = _LAB_0045fde8; + uVar4 = DAT_0045fde0; + uVar3 = DAT_0045fdd8; + *puVar8 = DAT_0045fdd0; + puVar8[1] = uVar3; + puVar8[2] = uVar4; + puVar8[3] = uVar5; + puVar8[4] = uVar6; + puVar8[5] = uVar7; + cv::error(-0xd7,(String *)&local_d8,"void cvNot(const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16a5); + cv::String::deallocate((String *)&local_d8); +LAB_00251f78: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + p_Var9 = (_InputArray *)cv::noArray(); + cv::bitwise_not((_InputArray *)local_f0,(_OutputArray *)&local_d8,p_Var9); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002521b0 (1560 bytes) name=cvAnd + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvAnd(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + int *piVar10; + undefined8 *puVar11; + undefined8 *puVar12; + int *piVar13; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = &local_190; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + local_1a0 = &local_1d8; + local_1e0 = DAT_002528a0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1d8 = 0; + local_188 = 0; + local_190 = 0; + iVar9 = local_e0[-1]; + if (iVar9 == local_20[-1]) { + if (iVar9 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_0025277c; + goto LAB_00252290; + } + if (0 < iVar9) { + if (*local_e0 == *local_20) { + piVar10 = local_e0; + piVar13 = local_20; + do { + piVar13 = piVar13 + 1; + if (piVar10 == local_e0 + (iVar9 - 1)) goto LAB_0025277c; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar13); + } + goto LAB_00252290; + } +LAB_0025277c: + if ((local_120 & 0xfff) != (local_60 & 0xfff)) goto LAB_00252290; + } + else { +LAB_00252290: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_1f8,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(param_6 + 0x30) = _LAB_00460c20; + *(undefined8 *)param_6 = uVar3; + *(undefined8 *)(param_6 + 8) = uVar4; + *(undefined8 *)(param_6 + 0x10) = uVar5; + *(undefined8 *)(param_6 + 0x18) = uVar6; + *(undefined8 *)(param_6 + 0x20) = uVar7; + *(undefined8 *)(param_6 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_1f8, + "void cvAnd(const CvArr*, const CvArr*, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16af); + cv::String::deallocate((String *)&local_1f8); + } + if (param_4 == (cv *)0x0) goto LAB_00252468; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar10 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar12 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002523ac: + if (2 < local_17c) goto LAB_002523b8; + local_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar12[1]; + } + else { + iVar9 = 0; + puVar11 = local_1a0; + do { + *(undefined4 *)puVar11 = 0; + iVar9 = iVar9 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar9 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002523ac; +LAB_002523b8: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar9 = 0; + do { + *local_140 = 0; + iVar9 = iVar9 + 1; + local_140 = local_140 + 1; + } while (iVar9 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } +LAB_00252468: + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + local_170 = 0; + local_180 = 0x1010000; + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_220 = (Mat *)&local_120; + local_208 = aMStack_c0; + local_1f0 = (Mat *)&local_60; + local_178 = (Mat *)&local_1e0; + cv::bitwise_and((_InputArray *)local_228,(_InputArray *)local_210,(_OutputArray *)&local_1f8, + (_InputArray *)&local_180); + if (lStack_1a8 != 0) { + piVar10 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar9 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar9 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002528a8 (1560 bytes) name=cvOr + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvOr(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + int *piVar10; + undefined8 *puVar11; + undefined8 *puVar12; + int *piVar13; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = &local_190; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + local_1a0 = &local_1d8; + local_1e0 = DAT_00252f98; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1d8 = 0; + local_188 = 0; + local_190 = 0; + iVar9 = local_e0[-1]; + if (iVar9 == local_20[-1]) { + if (iVar9 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_00252e74; + goto LAB_00252988; + } + if (0 < iVar9) { + if (*local_e0 == *local_20) { + piVar10 = local_e0; + piVar13 = local_20; + do { + piVar13 = piVar13 + 1; + if (piVar10 == local_e0 + (iVar9 - 1)) goto LAB_00252e74; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar13); + } + goto LAB_00252988; + } +LAB_00252e74: + if ((local_120 & 0xfff) != (local_60 & 0xfff)) goto LAB_00252988; + } + else { +LAB_00252988: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_1f8,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(param_6 + 0x30) = _LAB_00460c20; + *(undefined8 *)param_6 = uVar3; + *(undefined8 *)(param_6 + 8) = uVar4; + *(undefined8 *)(param_6 + 0x10) = uVar5; + *(undefined8 *)(param_6 + 0x18) = uVar6; + *(undefined8 *)(param_6 + 0x20) = uVar7; + *(undefined8 *)(param_6 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_1f8, + "void cvOr(const CvArr*, const CvArr*, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16bb); + cv::String::deallocate((String *)&local_1f8); + } + if (param_4 == (cv *)0x0) goto LAB_00252b60; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar10 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar12 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_00252aa4: + if (2 < local_17c) goto LAB_00252ab0; + local_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar12[1]; + } + else { + iVar9 = 0; + puVar11 = local_1a0; + do { + *(undefined4 *)puVar11 = 0; + iVar9 = iVar9 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar9 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_00252aa4; +LAB_00252ab0: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar9 = 0; + do { + *local_140 = 0; + iVar9 = iVar9 + 1; + local_140 = local_140 + 1; + } while (iVar9 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } +LAB_00252b60: + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + local_170 = 0; + local_180 = 0x1010000; + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_220 = (Mat *)&local_120; + local_208 = aMStack_c0; + local_1f0 = (Mat *)&local_60; + local_178 = (Mat *)&local_1e0; + cv::bitwise_or((_InputArray *)local_228,(_InputArray *)local_210,(_OutputArray *)&local_1f8, + (_InputArray *)&local_180); + if (lStack_1a8 != 0) { + piVar10 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar9 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar9 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00252fa0 (1560 bytes) name=cvXor + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvXor(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + int *piVar10; + undefined8 *puVar11; + undefined8 *puVar12; + int *piVar13; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = &local_190; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + local_1a0 = &local_1d8; + local_1e0 = DAT_00253690; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1d8 = 0; + local_188 = 0; + local_190 = 0; + iVar9 = local_e0[-1]; + if (iVar9 == local_20[-1]) { + if (iVar9 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_0025356c; + goto LAB_00253080; + } + if (0 < iVar9) { + if (*local_e0 == *local_20) { + piVar10 = local_e0; + piVar13 = local_20; + do { + piVar13 = piVar13 + 1; + if (piVar10 == local_e0 + (iVar9 - 1)) goto LAB_0025356c; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar13); + } + goto LAB_00253080; + } +LAB_0025356c: + if ((local_120 & 0xfff) != (local_60 & 0xfff)) goto LAB_00253080; + } + else { +LAB_00253080: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_1f8,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(param_6 + 0x30) = _LAB_00460c20; + *(undefined8 *)param_6 = uVar3; + *(undefined8 *)(param_6 + 8) = uVar4; + *(undefined8 *)(param_6 + 0x10) = uVar5; + *(undefined8 *)(param_6 + 0x18) = uVar6; + *(undefined8 *)(param_6 + 0x20) = uVar7; + *(undefined8 *)(param_6 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_1f8, + "void cvXor(const CvArr*, const CvArr*, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16c7); + cv::String::deallocate((String *)&local_1f8); + } + if (param_4 == (cv *)0x0) goto LAB_00253258; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar10 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar12 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_0025319c: + if (2 < local_17c) goto LAB_002531a8; + local_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar12[1]; + } + else { + iVar9 = 0; + puVar11 = local_1a0; + do { + *(undefined4 *)puVar11 = 0; + iVar9 = iVar9 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar9 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_0025319c; +LAB_002531a8: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar9 = 0; + do { + *local_140 = 0; + iVar9 = iVar9 + 1; + local_140 = local_140 + 1; + } while (iVar9 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } +LAB_00253258: + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + local_170 = 0; + local_180 = 0x1010000; + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_220 = (Mat *)&local_120; + local_208 = aMStack_c0; + local_1f0 = (Mat *)&local_60; + local_178 = (Mat *)&local_1e0; + cv::bitwise_xor((_InputArray *)local_228,(_InputArray *)local_210,(_OutputArray *)&local_1f8, + (_InputArray *)&local_180); + if (lStack_1a8 != 0) { + piVar10 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar9 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar9 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00253698 (1452 bytes) name=cvAndS + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvAndS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5, + cv *param_6,cv *param_7,undefined8 param_8,undefined8 param_9,AutoBuffer *param_10) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int *piVar10; + int iVar11; + int *piVar12; + undefined4 local_1e0 [2]; + Mat *local_1d8; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_10); + local_138 = &local_130; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + local_140 = &local_178; + local_180 = DAT_00253cf0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_178 = 0; + local_128 = 0; + local_130 = 0; + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_00253bec; + goto LAB_00253768; + } + if (0 < iVar11) { + if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_00253bec; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + goto LAB_00253768; + } +LAB_00253bec: + if ((local_c0 & 0xfff) != (local_60 & 0xfff)) goto LAB_00253768; + } + else { +LAB_00253768: + local_198 = 0; + local_190 = (Mat *)0x0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_198,0x30); + uVar7 = s_t_type___0045fdf8._0_8_; + uVar6 = _LAB_0045fdf0; + uVar5 = _LAB_0045fde8; + uVar4 = DAT_0045fde0; + uVar3 = DAT_0045fdd8; + param_10 = (AutoBuffer *)&DAT_0045fdd0; + *puVar8 = DAT_0045fdd0; + puVar8[1] = uVar3; + puVar8[2] = uVar4; + puVar8[3] = uVar5; + puVar8[4] = uVar6; + puVar8[5] = uVar7; + cv::error(-0xd7,(String *)&local_198,"void cvAndS(const CvArr*, CvScalar, CvArr*, const CvArr*)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16d2); + cv::String::deallocate((String *)&local_198); + } + if (param_7 == (cv *)0x0) goto LAB_00253958; + cv::cvarrToMat(param_7,(void *)0x0,true,false,0,param_10); + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar8 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_0025387c: + if (2 < local_120._4_4_) goto LAB_00253b64; + local_178 = local_118; + local_180 = local_120; + *local_138 = *local_d8; + local_138[1] = puVar8[1]; + } + else { + iVar11 = 0; + puVar9 = local_140; + do { + *(undefined4 *)puVar9 = 0; + iVar11 = iVar11 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar11 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_0025387c; +LAB_00253b64: + local_180 = CONCAT44(local_180._4_4_,(undefined4)local_120); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar11 = 0; + do { + *local_e0 = 0; + iVar11 = iVar11 + 1; + local_e0 = local_e0 + 1; + } while (iVar11 < local_120._4_4_); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00253958: + local_1b8 = 1; + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_1d0 = 0; + local_1cc = 0; + local_1e0[0] = 0x1010000; + local_1c8[0] = 0xc1020006; + local_1b4 = 4; + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x2010000; + local_1d8 = (Mat *)&local_c0; + local_1c0 = (Mat *)&local_120; + local_1a8 = (Mat *)&local_60; + local_190 = (Mat *)&local_180; + local_120 = param_1; + local_118 = param_2; + local_110 = param_3; + uStack_108 = param_4; + cv::bitwise_and((_InputArray *)local_1e0,(_InputArray *)local_1c8,(_OutputArray *)local_1b0, + (_InputArray *)&local_198); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar11 = 0; + puVar8 = local_140; + do { + *(undefined4 *)puVar8 = 0; + iVar11 = iVar11 + 1; + puVar8 = (undefined8 *)((long)puVar8 + 4); + } while (iVar11 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00253cf8 (1452 bytes) name=cvOrS + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvOrS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5, + cv *param_6,cv *param_7,undefined8 param_8,undefined8 param_9,AutoBuffer *param_10) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int *piVar10; + int iVar11; + int *piVar12; + undefined4 local_1e0 [2]; + Mat *local_1d8; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_10); + local_138 = &local_130; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + local_140 = &local_178; + local_180 = DAT_00254350; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_178 = 0; + local_128 = 0; + local_130 = 0; + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_0025424c; + goto LAB_00253dc8; + } + if (0 < iVar11) { + if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_0025424c; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + goto LAB_00253dc8; + } +LAB_0025424c: + if ((local_c0 & 0xfff) != (local_60 & 0xfff)) goto LAB_00253dc8; + } + else { +LAB_00253dc8: + local_198 = 0; + local_190 = (Mat *)0x0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_198,0x30); + uVar7 = s_t_type___0045fdf8._0_8_; + uVar6 = _LAB_0045fdf0; + uVar5 = _LAB_0045fde8; + uVar4 = DAT_0045fde0; + uVar3 = DAT_0045fdd8; + param_10 = (AutoBuffer *)&DAT_0045fdd0; + *puVar8 = DAT_0045fdd0; + puVar8[1] = uVar3; + puVar8[2] = uVar4; + puVar8[3] = uVar5; + puVar8[4] = uVar6; + puVar8[5] = uVar7; + cv::error(-0xd7,(String *)&local_198,"void cvOrS(const CvArr*, CvScalar, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16dd); + cv::String::deallocate((String *)&local_198); + } + if (param_7 == (cv *)0x0) goto LAB_00253fb8; + cv::cvarrToMat(param_7,(void *)0x0,true,false,0,param_10); + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar8 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_00253edc: + if (2 < local_120._4_4_) goto LAB_002541c4; + local_178 = local_118; + local_180 = local_120; + *local_138 = *local_d8; + local_138[1] = puVar8[1]; + } + else { + iVar11 = 0; + puVar9 = local_140; + do { + *(undefined4 *)puVar9 = 0; + iVar11 = iVar11 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar11 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_00253edc; +LAB_002541c4: + local_180 = CONCAT44(local_180._4_4_,(undefined4)local_120); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar11 = 0; + do { + *local_e0 = 0; + iVar11 = iVar11 + 1; + local_e0 = local_e0 + 1; + } while (iVar11 < local_120._4_4_); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00253fb8: + local_1b8 = 1; + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_1d0 = 0; + local_1cc = 0; + local_1e0[0] = 0x1010000; + local_1c8[0] = 0xc1020006; + local_1b4 = 4; + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x2010000; + local_1d8 = (Mat *)&local_c0; + local_1c0 = (Mat *)&local_120; + local_1a8 = (Mat *)&local_60; + local_190 = (Mat *)&local_180; + local_120 = param_1; + local_118 = param_2; + local_110 = param_3; + uStack_108 = param_4; + cv::bitwise_or((_InputArray *)local_1e0,(_InputArray *)local_1c8,(_OutputArray *)local_1b0, + (_InputArray *)&local_198); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar11 = 0; + puVar8 = local_140; + do { + *(undefined4 *)puVar8 = 0; + iVar11 = iVar11 + 1; + puVar8 = (undefined8 *)((long)puVar8 + 4); + } while (iVar11 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00254358 (1452 bytes) name=cvXorS + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvXorS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5, + cv *param_6,cv *param_7,undefined8 param_8,undefined8 param_9,AutoBuffer *param_10) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int *piVar10; + int iVar11; + int *piVar12; + undefined4 local_1e0 [2]; + Mat *local_1d8; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_10); + local_138 = &local_130; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + local_140 = &local_178; + local_180 = DAT_002549b0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_178 = 0; + local_128 = 0; + local_130 = 0; + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002548ac; + goto LAB_00254428; + } + if (0 < iVar11) { + if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_002548ac; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + goto LAB_00254428; + } +LAB_002548ac: + if ((local_c0 & 0xfff) != (local_60 & 0xfff)) goto LAB_00254428; + } + else { +LAB_00254428: + local_198 = 0; + local_190 = (Mat *)0x0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_198,0x30); + uVar7 = s_t_type___0045fdf8._0_8_; + uVar6 = _LAB_0045fdf0; + uVar5 = _LAB_0045fde8; + uVar4 = DAT_0045fde0; + uVar3 = DAT_0045fdd8; + param_10 = (AutoBuffer *)&DAT_0045fdd0; + *puVar8 = DAT_0045fdd0; + puVar8[1] = uVar3; + puVar8[2] = uVar4; + puVar8[3] = uVar5; + puVar8[4] = uVar6; + puVar8[5] = uVar7; + cv::error(-0xd7,(String *)&local_198,"void cvXorS(const CvArr*, CvScalar, CvArr*, const CvArr*)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16e8); + cv::String::deallocate((String *)&local_198); + } + if (param_7 == (cv *)0x0) goto LAB_00254618; + cv::cvarrToMat(param_7,(void *)0x0,true,false,0,param_10); + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar8 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_0025453c: + if (2 < local_120._4_4_) goto LAB_00254824; + local_178 = local_118; + local_180 = local_120; + *local_138 = *local_d8; + local_138[1] = puVar8[1]; + } + else { + iVar11 = 0; + puVar9 = local_140; + do { + *(undefined4 *)puVar9 = 0; + iVar11 = iVar11 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar11 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_0025453c; +LAB_00254824: + local_180 = CONCAT44(local_180._4_4_,(undefined4)local_120); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar11 = 0; + do { + *local_e0 = 0; + iVar11 = iVar11 + 1; + local_e0 = local_e0 + 1; + } while (iVar11 < local_120._4_4_); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00254618: + local_1b8 = 1; + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_1d0 = 0; + local_1cc = 0; + local_1e0[0] = 0x1010000; + local_1c8[0] = 0xc1020006; + local_1b4 = 4; + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x2010000; + local_1d8 = (Mat *)&local_c0; + local_1c0 = (Mat *)&local_120; + local_1a8 = (Mat *)&local_60; + local_190 = (Mat *)&local_180; + local_120 = param_1; + local_118 = param_2; + local_110 = param_3; + uStack_108 = param_4; + cv::bitwise_xor((_InputArray *)local_1e0,(_InputArray *)local_1c8,(_OutputArray *)local_1b0, + (_InputArray *)&local_198); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar11 = 0; + puVar8 = local_140; + do { + *(undefined4 *)puVar8 = 0; + iVar11 = iVar11 + 1; + puVar8 = (undefined8 *)((long)puVar8 + 4); + } while (iVar11 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002549b8 (1584 bytes) name=cvAdd + +void cvAdd(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + int iVar10; + int *piVar11; + undefined8 *puVar12; + undefined8 *puVar13; + int *piVar14; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = &local_190; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + local_1a0 = &local_1d8; + local_1e0 = DAT_002550c0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1d8 = 0; + local_188 = 0; + local_190 = 0; + iVar10 = local_e0[-1]; + if (iVar10 == local_20[-1]) { + if (iVar10 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_00254f94; + goto LAB_00254a98; + } + if (0 < iVar10) { + if (*local_e0 == *local_20) { + piVar11 = local_e0; + piVar14 = local_20; + do { + piVar14 = piVar14 + 1; + if (piVar11 == local_e0 + (iVar10 - 1)) goto LAB_00254f94; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar14); + } + goto LAB_00254a98; + } +LAB_00254f94: + if ((local_120 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1) goto LAB_00254a98; + } + else { +LAB_00254a98: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_1f8,0x3a); + uVar9 = s_src1_size____dst_size____src1_ch_00460c28._56_2_; + uVar8 = s_src1_size____dst_size____src1_ch_00460c28._40_8_; + uVar7 = s_src1_size____dst_size____src1_ch_00460c28._32_8_; + uVar6 = s_src1_size____dst_size____src1_ch_00460c28._24_8_; + uVar5 = s_src1_size____dst_size____src1_ch_00460c28._16_8_; + uVar4 = s_src1_size____dst_size____src1_ch_00460c28._8_8_; + uVar3 = s_src1_size____dst_size____src1_ch_00460c28._0_8_; + *(undefined8 *)(param_6 + 0x30) = s_src1_size____dst_size____src1_ch_00460c28._48_8_; + *(undefined2 *)(param_6 + 0x38) = uVar9; + *(undefined8 *)param_6 = uVar3; + *(undefined8 *)(param_6 + 8) = uVar4; + *(undefined8 *)(param_6 + 0x10) = uVar5; + *(undefined8 *)(param_6 + 0x18) = uVar6; + *(undefined8 *)(param_6 + 0x20) = uVar7; + *(undefined8 *)(param_6 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_1f8, + "void cvAdd(const CvArr*, const CvArr*, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16f3); + cv::String::deallocate((String *)&local_1f8); + } + if (param_4 == (cv *)0x0) goto LAB_00254c78; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar11 = (int *)(lStack_1a8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar13 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_00254bbc: + if (2 < local_17c) goto LAB_00254bc8; + local_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar13[1]; + } + else { + iVar10 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar10 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_00254bbc; +LAB_00254bc8: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar10 = 0; + do { + *local_140 = 0; + iVar10 = iVar10 + 1; + local_140 = local_140 + 1; + } while (iVar10 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } +LAB_00254c78: + local_170 = 0; + local_180 = 0x1010000; + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + local_220 = (Mat *)&local_120; + local_208 = aMStack_c0; + local_1f0 = (Mat *)&local_60; + local_178 = (Mat *)&local_1e0; + cv::add((_InputArray *)local_228,(_InputArray *)local_210,(_OutputArray *)&local_1f8, + (_InputArray *)&local_180,local_60 & 0xfff); + if (lStack_1a8 != 0) { + piVar11 = (int *)(lStack_1a8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar10 = 0; + puVar13 = local_1a0; + do { + *(undefined4 *)puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar10 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002550c8 (1584 bytes) name=cvSub + +void cvSub(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + int iVar10; + int *piVar11; + undefined8 *puVar12; + undefined8 *puVar13; + int *piVar14; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = &local_190; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + local_1a0 = &local_1d8; + local_1e0 = DAT_002557d0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_1d8 = 0; + local_188 = 0; + local_190 = 0; + iVar10 = local_e0[-1]; + if (iVar10 == local_20[-1]) { + if (iVar10 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_002556a4; + goto LAB_002551a8; + } + if (0 < iVar10) { + if (*local_e0 == *local_20) { + piVar11 = local_e0; + piVar14 = local_20; + do { + piVar14 = piVar14 + 1; + if (piVar11 == local_e0 + (iVar10 - 1)) goto LAB_002556a4; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar14); + } + goto LAB_002551a8; + } +LAB_002556a4: + if ((local_120 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1) goto LAB_002551a8; + } + else { +LAB_002551a8: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_1f8,0x3a); + uVar9 = s_src1_size____dst_size____src1_ch_00460c28._56_2_; + uVar8 = s_src1_size____dst_size____src1_ch_00460c28._40_8_; + uVar7 = s_src1_size____dst_size____src1_ch_00460c28._32_8_; + uVar6 = s_src1_size____dst_size____src1_ch_00460c28._24_8_; + uVar5 = s_src1_size____dst_size____src1_ch_00460c28._16_8_; + uVar4 = s_src1_size____dst_size____src1_ch_00460c28._8_8_; + uVar3 = s_src1_size____dst_size____src1_ch_00460c28._0_8_; + *(undefined8 *)(param_6 + 0x30) = s_src1_size____dst_size____src1_ch_00460c28._48_8_; + *(undefined2 *)(param_6 + 0x38) = uVar9; + *(undefined8 *)param_6 = uVar3; + *(undefined8 *)(param_6 + 8) = uVar4; + *(undefined8 *)(param_6 + 0x10) = uVar5; + *(undefined8 *)(param_6 + 0x18) = uVar6; + *(undefined8 *)(param_6 + 0x20) = uVar7; + *(undefined8 *)(param_6 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_1f8, + "void cvSub(const CvArr*, const CvArr*, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x16fe); + cv::String::deallocate((String *)&local_1f8); + } + if (param_4 == (cv *)0x0) goto LAB_00255388; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar11 = (int *)(lStack_1a8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar13 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002552cc: + if (2 < local_17c) goto LAB_002552d8; + local_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar13[1]; + } + else { + iVar10 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar10 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002552cc; +LAB_002552d8: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar10 = 0; + do { + *local_140 = 0; + iVar10 = iVar10 + 1; + local_140 = local_140 + 1; + } while (iVar10 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } +LAB_00255388: + local_170 = 0; + local_180 = 0x1010000; + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + local_220 = (Mat *)&local_120; + local_208 = aMStack_c0; + local_1f0 = (Mat *)&local_60; + local_178 = (Mat *)&local_1e0; + cv::subtract((_InputArray *)local_228,(_InputArray *)local_210,(_OutputArray *)&local_1f8, + (_InputArray *)&local_180,local_60 & 0xfff); + if (lStack_1a8 != 0) { + piVar11 = (int *)(lStack_1a8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar10 = 0; + puVar13 = local_1a0; + do { + *(undefined4 *)puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar10 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002557d8 (1484 bytes) name=cvAddS + +void cvAddS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5, + cv *param_6,cv *param_7,undefined8 param_8,undefined8 param_9,AutoBuffer *param_10) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + undefined8 *puVar10; + int *piVar11; + int iVar12; + undefined8 *puVar13; + int *piVar14; + undefined4 local_1e0 [2]; + Mat *local_1d8; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_10); + local_138 = &local_130; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + local_140 = &local_178; + local_180 = DAT_00255e50; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_178 = 0; + local_128 = 0; + local_130 = 0; + iVar12 = local_80[-1]; + if (iVar12 == local_20[-1]) { + if (iVar12 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_00255d44; + goto LAB_002558a8; + } + if (0 < iVar12) { + if (*local_80 == *local_20) { + piVar11 = local_80; + piVar14 = local_20; + do { + piVar14 = piVar14 + 1; + if (piVar11 == local_80 + (iVar12 - 1)) goto LAB_00255d44; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar14); + } + goto LAB_002558a8; + } +LAB_00255d44: + if ((local_c0 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1) goto LAB_002558a8; + } + else { +LAB_002558a8: + local_198 = 0; + local_190 = (Mat *)0x0; + param_10 = (AutoBuffer *)cv::String::allocate((String *)&local_198,0x3a); + uVar9 = s_src1_size____dst_size____src1_ch_00460c28._56_2_; + uVar8 = s_src1_size____dst_size____src1_ch_00460c28._40_8_; + uVar7 = s_src1_size____dst_size____src1_ch_00460c28._32_8_; + uVar6 = s_src1_size____dst_size____src1_ch_00460c28._24_8_; + uVar5 = s_src1_size____dst_size____src1_ch_00460c28._16_8_; + uVar4 = s_src1_size____dst_size____src1_ch_00460c28._8_8_; + uVar3 = s_src1_size____dst_size____src1_ch_00460c28._0_8_; + *(undefined8 *)(param_10 + 0x30) = s_src1_size____dst_size____src1_ch_00460c28._48_8_; + *(undefined2 *)(param_10 + 0x38) = uVar9; + *(undefined8 *)param_10 = uVar3; + *(undefined8 *)(param_10 + 8) = uVar4; + *(undefined8 *)(param_10 + 0x10) = uVar5; + *(undefined8 *)(param_10 + 0x18) = uVar6; + *(undefined8 *)(param_10 + 0x20) = uVar7; + *(undefined8 *)(param_10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_198,"void cvAddS(const CvArr*, CvScalar, CvArr*, const CvArr*)" + ,"/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1709); + cv::String::deallocate((String *)&local_198); + } + if (param_7 == (cv *)0x0) goto LAB_00255aa8; + cv::cvarrToMat(param_7,(void *)0x0,true,false,0,param_10); + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar13 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_002559cc: + if (2 < local_120._4_4_) goto LAB_00255cbc; + local_178 = local_118; + local_180 = local_120; + *local_138 = *local_d8; + local_138[1] = puVar13[1]; + } + else { + iVar12 = 0; + puVar10 = local_140; + do { + *(undefined4 *)puVar10 = 0; + iVar12 = iVar12 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar12 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_002559cc; +LAB_00255cbc: + local_180 = CONCAT44(local_180._4_4_,(undefined4)local_120); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_120._4_4_); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00255aa8: + local_1b8 = 1; + local_1d0 = 0; + local_1cc = 0; + local_1e0[0] = 0x1010000; + local_1c8[0] = 0xc1020006; + local_1b4 = 4; + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x2010000; + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_1d8 = (Mat *)&local_c0; + local_1c0 = (Mat *)&local_120; + local_1a8 = (Mat *)&local_60; + local_190 = (Mat *)&local_180; + local_120 = param_1; + local_118 = param_2; + local_110 = param_3; + uStack_108 = param_4; + cv::add((_InputArray *)local_1e0,(_InputArray *)local_1c8,(_OutputArray *)local_1b0, + (_InputArray *)&local_198,local_60 & 0xfff); + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar12 = 0; + puVar13 = local_140; + do { + *(undefined4 *)puVar13 = 0; + iVar12 = iVar12 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar12 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00255e58 (1484 bytes) name=cvSubRS + +void cvSubRS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5 + ,cv *param_6,cv *param_7,undefined8 param_8,undefined8 param_9,AutoBuffer *param_10) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + undefined8 *puVar10; + int *piVar11; + int iVar12; + undefined8 *puVar13; + int *piVar14; + undefined4 local_1e0 [2]; + Mat *local_1d8; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_10); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_10); + local_138 = &local_130; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + local_140 = &local_178; + local_180 = DAT_002564d0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_178 = 0; + local_128 = 0; + local_130 = 0; + iVar12 = local_80[-1]; + if (iVar12 == local_20[-1]) { + if (iVar12 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002563c4; + goto LAB_00255f28; + } + if (0 < iVar12) { + if (*local_80 == *local_20) { + piVar11 = local_80; + piVar14 = local_20; + do { + piVar14 = piVar14 + 1; + if (piVar11 == local_80 + (iVar12 - 1)) goto LAB_002563c4; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar14); + } + goto LAB_00255f28; + } +LAB_002563c4: + if ((local_c0 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1) goto LAB_00255f28; + } + else { +LAB_00255f28: + local_198 = 0; + local_190 = (Mat *)0x0; + param_10 = (AutoBuffer *)cv::String::allocate((String *)&local_198,0x3a); + uVar9 = s_src1_size____dst_size____src1_ch_00460c28._56_2_; + uVar8 = s_src1_size____dst_size____src1_ch_00460c28._40_8_; + uVar7 = s_src1_size____dst_size____src1_ch_00460c28._32_8_; + uVar6 = s_src1_size____dst_size____src1_ch_00460c28._24_8_; + uVar5 = s_src1_size____dst_size____src1_ch_00460c28._16_8_; + uVar4 = s_src1_size____dst_size____src1_ch_00460c28._8_8_; + uVar3 = s_src1_size____dst_size____src1_ch_00460c28._0_8_; + *(undefined8 *)(param_10 + 0x30) = s_src1_size____dst_size____src1_ch_00460c28._48_8_; + *(undefined2 *)(param_10 + 0x38) = uVar9; + *(undefined8 *)param_10 = uVar3; + *(undefined8 *)(param_10 + 8) = uVar4; + *(undefined8 *)(param_10 + 0x10) = uVar5; + *(undefined8 *)(param_10 + 0x18) = uVar6; + *(undefined8 *)(param_10 + 0x20) = uVar7; + *(undefined8 *)(param_10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_198, + "void cvSubRS(const CvArr*, CvScalar, CvArr*, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1714); + cv::String::deallocate((String *)&local_198); + } + if (param_7 == (cv *)0x0) goto LAB_00256128; + cv::cvarrToMat(param_7,(void *)0x0,true,false,0,param_10); + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar13 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_0025604c: + if (2 < local_120._4_4_) goto LAB_0025633c; + local_178 = local_118; + local_180 = local_120; + *local_138 = *local_d8; + local_138[1] = puVar13[1]; + } + else { + iVar12 = 0; + puVar10 = local_140; + do { + *(undefined4 *)puVar10 = 0; + iVar12 = iVar12 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar12 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_0025604c; +LAB_0025633c: + local_180 = CONCAT44(local_180._4_4_,(undefined4)local_120); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_120._4_4_); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00256128: + local_1d0 = 1; + local_1e0[0] = 0xc1020006; + local_1cc = 4; + local_1b8 = 0; + local_1b4 = 0; + local_1c8[0] = 0x1010000; + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x2010000; + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_1d8 = (Mat *)&local_120; + local_1c0 = (Mat *)&local_c0; + local_1a8 = (Mat *)&local_60; + local_190 = (Mat *)&local_180; + local_120 = param_1; + local_118 = param_2; + local_110 = param_3; + uStack_108 = param_4; + cv::subtract((_InputArray *)local_1e0,(_InputArray *)local_1c8,(_OutputArray *)local_1b0, + (_InputArray *)&local_198,local_60 & 0xfff); + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar12 = 0; + puVar13 = local_140; + do { + *(undefined4 *)puVar13 = 0; + iVar12 = iVar12 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar12 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002564d8 (912 bytes) name=cvMul + +void cvMul(double param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,undefined8 param_6, + AutoBuffer *param_7) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + char *pcVar10; + int *piVar11; + int iVar12; + int *piVar13; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_7); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_7); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_7); + iVar12 = local_e0[-1]; + if (iVar12 == local_20[-1]) { + if (iVar12 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_0025681c; + } + else if (iVar12 < 1) { +LAB_0025681c: + if ((local_120 >> 3 & 0x1ff) + 1 == (local_60 >> 3 & 0x1ff) + 1) goto LAB_002565e4; + } + else if (*local_e0 == *local_20) { + piVar11 = local_e0; + piVar13 = local_20; + do { + piVar13 = piVar13 + 1; + if (piVar11 == local_e0 + (iVar12 - 1)) goto LAB_0025681c; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar13); + } + } + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_138,0x3a); + uVar9 = s_src1_size____dst_size____src1_ch_00460c28._56_2_; + uVar8 = s_src1_size____dst_size____src1_ch_00460c28._40_8_; + uVar7 = s_src1_size____dst_size____src1_ch_00460c28._32_8_; + uVar6 = s_src1_size____dst_size____src1_ch_00460c28._24_8_; + uVar5 = s_src1_size____dst_size____src1_ch_00460c28._16_8_; + uVar4 = s_src1_size____dst_size____src1_ch_00460c28._8_8_; + uVar3 = s_src1_size____dst_size____src1_ch_00460c28._0_8_; + *(undefined8 *)(pcVar10 + 0x30) = s_src1_size____dst_size____src1_ch_00460c28._48_8_; + *(undefined2 *)(pcVar10 + 0x38) = uVar9; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_138,"void cvMul(const CvArr*, const CvArr*, CvArr*, double)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1720); + cv::String::deallocate((String *)&local_138); +LAB_002565e4: + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_160 = (Mat *)&local_120; + local_148 = aMStack_c0; + local_130 = (Mat *)&local_60; + cv::multiply((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138,param_1, + local_60 & 0xfff); + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002568f8 (1200 bytes) name=cvDiv + +void cvDiv(double param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5,undefined8 param_6, + AutoBuffer *param_7) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + int iVar10; + int *piVar11; + undefined8 *puVar12; + int *piVar13; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + uint local_180; + int local_17c; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + long local_148; + int *local_140; + undefined1 *local_138; + undefined1 auStack_130 [16]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + undefined8 uStack_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + int local_5c; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_7); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_7); + local_78 = &local_70; + local_b0 = 0; + local_a8 = 0; + local_80 = &local_b8; + uStack_c0 = DAT_00256e58; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_b8 = 0; + local_68 = 0; + local_70 = 0; + iVar10 = local_140[-1]; + if (iVar10 == local_e0[-1]) { + if (iVar10 == 2) { + if ((*local_140 == *local_e0) && (local_140[1] == local_e0[1])) goto LAB_00256d18; + } + else if (iVar10 < 1) { +LAB_00256d18: + if ((local_180 >> 3 & 0x1ff) + 1 == (local_120 >> 3 & 0x1ff) + 1) goto joined_r0x00256d38; + } + else if (*local_140 == *local_e0) { + piVar11 = local_140; + piVar13 = local_e0; + do { + piVar13 = piVar13 + 1; + if (piVar11 == local_140 + (iVar10 - 1)) goto LAB_00256d18; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar13); + } + } + local_198 = 0; + local_190 = (Mat *)0x0; + param_7 = (AutoBuffer *)cv::String::allocate((String *)&local_198,0x3a); + uVar9 = s_src2_size____dst_size____src2_ch_00460c68._56_2_; + uVar8 = s_src2_size____dst_size____src2_ch_00460c68._40_8_; + uVar7 = s_src2_size____dst_size____src2_ch_00460c68._32_8_; + uVar6 = s_src2_size____dst_size____src2_ch_00460c68._24_8_; + uVar5 = s_src2_size____dst_size____src2_ch_00460c68._16_8_; + uVar4 = s_src2_size____dst_size____src2_ch_00460c68._8_8_; + uVar3 = s_src2_size____dst_size____src2_ch_00460c68._0_8_; + *(undefined8 *)(param_7 + 0x30) = s_src2_size____dst_size____src2_ch_00460c68._48_8_; + *(undefined2 *)(param_7 + 0x38) = uVar9; + *(undefined8 *)param_7 = uVar3; + *(undefined8 *)(param_7 + 8) = uVar4; + *(undefined8 *)(param_7 + 0x10) = uVar5; + *(undefined8 *)(param_7 + 0x18) = uVar6; + *(undefined8 *)(param_7 + 0x20) = uVar7; + *(undefined8 *)(param_7 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_198,"void cvDiv(const CvArr*, const CvArr*, CvArr*, double)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x172a); + cv::String::deallocate((String *)&local_198); +joined_r0x00256d38: + if (param_2 == (cv *)0x0) { + local_188 = 0; + local_198._4_4_ = (undefined4)((ulong)local_198 >> 0x20); + local_198 = CONCAT44(local_198._4_4_,0x1010000); + local_50 = 0; + local_60 = 0x2010000; + local_190 = (Mat *)&local_180; + local_184 = local_188; + local_58 = (Mat *)&local_120; + cv::divide(param_1,(_InputArray *)&local_198,(_OutputArray *)&local_60,local_120 & 0xfff); + } + else { + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_7); + local_1b8 = 0; + local_1b4 = 0; + local_1c8[0] = 0x1010000; + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x1010000; + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x2010000); + local_1c0 = (Mat *)&local_60; + local_1a8 = (Mat *)&local_180; + local_190 = (Mat *)&local_120; + cv::divide((_InputArray *)local_1c8,(_InputArray *)local_1b0,(_OutputArray *)&local_198,param_1, + local_120 & 0xfff); + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&uStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < uStack_c0._4_4_) { + iVar10 = 0; + puVar12 = local_80; + do { + *(undefined4 *)puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar10 < uStack_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_148 != 0) { + piVar11 = (int *)(local_148 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar10 = 0; + do { + *local_140 = 0; + iVar10 = iVar10 + 1; + local_140 = local_140 + 1; + } while (iVar10 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + return; +} + + +================================================================== + +### FUNC 00256e60 (936 bytes) name=cvAddWeighted + +void cvAddWeighted(double param_1,double param_2,double param_3,cv *param_4,cv *param_5,cv *param_6, + undefined8 param_7,undefined8 param_8,AutoBuffer *param_9) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + char *pcVar10; + int *piVar11; + int iVar12; + int *piVar13; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_9); + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,param_9); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_9); + iVar12 = local_e0[-1]; + if (iVar12 == local_20[-1]) { + if (iVar12 == 2) { + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_002571bc; + } + else if (iVar12 < 1) { +LAB_002571bc: + if ((local_120 >> 3 & 0x1ff) + 1 == (local_60 >> 3 & 0x1ff) + 1) goto LAB_00256f78; + } + else if (*local_e0 == *local_20) { + piVar11 = local_e0; + piVar13 = local_20; + do { + piVar13 = piVar13 + 1; + if (piVar11 == local_e0 + (iVar12 - 1)) goto LAB_002571bc; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar13); + } + } + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_138,0x3a); + uVar9 = s_src1_size____dst_size____src1_ch_00460c28._56_2_; + uVar8 = s_src1_size____dst_size____src1_ch_00460c28._40_8_; + uVar7 = s_src1_size____dst_size____src1_ch_00460c28._32_8_; + uVar6 = s_src1_size____dst_size____src1_ch_00460c28._24_8_; + uVar5 = s_src1_size____dst_size____src1_ch_00460c28._16_8_; + uVar4 = s_src1_size____dst_size____src1_ch_00460c28._8_8_; + uVar3 = s_src1_size____dst_size____src1_ch_00460c28._0_8_; + *(undefined8 *)(pcVar10 + 0x30) = s_src1_size____dst_size____src1_ch_00460c28._48_8_; + *(undefined2 *)(pcVar10 + 0x38) = uVar9; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_138, + "void cvAddWeighted(const CvArr*, double, const CvArr*, double, double, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x173a); + cv::String::deallocate((String *)&local_138); +LAB_00256f78: + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_160 = (Mat *)&local_120; + local_148 = aMStack_c0; + local_130 = (Mat *)&local_60; + cv::addWeighted((_InputArray *)local_168,param_1,(_InputArray *)local_150,param_2,param_3, + (_OutputArray *)&local_138,local_60 & 0xfff); + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00257294 (876 bytes) name=cvAbsDiff + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvAbsDiff(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + int iVar10; + int *piVar11; + int *piVar12; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + iVar10 = local_e0[-1]; + if (iVar10 == local_80[-1]) { + if (iVar10 == 2) { + if ((*local_e0 == *local_80) && (local_e0[1] == local_80[1])) goto LAB_002575c0; + } + else if (iVar10 < 1) { +LAB_002575c0: + if ((local_120 & 0xfff) == (local_c0 & 0xfff)) goto LAB_0025736c; + } + else if (*local_e0 == *local_80) { + piVar11 = local_e0; + piVar12 = local_80; + do { + piVar12 = piVar12 + 1; + if (piVar11 == local_e0 + (iVar10 - 1)) goto LAB_002575c0; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar12); + } + } + local_138 = 0; + local_130 = (Mat *)0x0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_138,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(puVar9 + 6) = _LAB_00460c20; + *puVar9 = uVar3; + puVar9[1] = uVar4; + puVar9[2] = uVar5; + puVar9[3] = uVar6; + puVar9[4] = uVar7; + puVar9[5] = uVar8; + cv::error(-0xd7,(String *)&local_138,"void cvAbsDiff(const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1743); + cv::String::deallocate((String *)&local_138); +LAB_0025736c: + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_160 = (Mat *)&local_120; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = aMStack_60; + local_130 = (Mat *)&local_c0; + cv::absdiff((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138); + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00257688 (768 bytes) name=cvAbsDiffS + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvAbsDiffS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5,cv *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + int *piVar10; + int iVar11; + int *piVar12; + AutoBuffer *in_x5; + undefined4 local_128 [2]; + Mat *local_120; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110 [2]; + undefined8 *local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8 [2]; + Mat *local_f0; + undefined4 local_e8; + undefined4 local_e4; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,in_x5); + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_00257944; + } + else if (iVar11 < 1) { +LAB_00257944: + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) goto LAB_00257770; + } + else if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_00257944; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + } + local_e0 = 0; + local_d8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_e0,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(puVar9 + 6) = _LAB_00460c20; + *puVar9 = uVar3; + puVar9[1] = uVar4; + puVar9[2] = uVar5; + puVar9[3] = uVar6; + puVar9[4] = uVar7; + puVar9[5] = uVar8; + cv::error(-0xd7,(String *)&local_e0,"void cvAbsDiffS(const CvArr*, CvArr*, CvScalar)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x174d); + cv::String::deallocate((String *)&local_e0); +LAB_00257770: + local_108 = &local_e0; + local_100 = 1; + local_fc = 4; + local_118 = 0; + local_114 = 0; + local_128[0] = 0x1010000; + local_110[0] = 0xc1020006; + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x2010000; + local_120 = (Mat *)&local_c0; + local_f0 = (Mat *)&local_60; + local_e0 = param_1; + local_d8 = param_2; + local_d0 = param_3; + uStack_c8 = param_4; + cv::absdiff((_InputArray *)local_128,(_InputArray *)local_110,(_OutputArray *)local_f8); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002579e8 (1072 bytes) name=cvInRange + +void cvInRange(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + char *pcVar8; + int iVar9; + int *piVar10; + int *piVar11; + undefined4 local_1e0 [2]; + Mat *local_1d8; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + Mat *local_1c0; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + Mat aMStack_180 [4]; + int local_17c; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + long local_148; + int *local_140; + undefined1 *local_138; + undefined1 auStack_130 [16]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + iVar9 = local_140[-1]; + if (iVar9 == local_e0[-1]) { + if (iVar9 == 2) { + if ((*local_140 == *local_e0) && (local_140[1] == local_e0[1])) goto LAB_00257de4; + } + else if (iVar9 < 1) { +LAB_00257de4: + if ((local_120 & 0xfff) == 0) goto LAB_00257acc; + } + else if (*local_140 == *local_e0) { + piVar10 = local_140; + piVar11 = local_e0; + do { + piVar11 = piVar11 + 1; + if (piVar10 == local_140 + (iVar9 - 1)) goto LAB_00257de4; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar11); + } + } + local_198 = 0; + local_190 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_198,0x2c); + uVar7 = s_src1_size____dst_size____dst_typ_00460ca8._40_4_; + uVar6 = s_src1_size____dst_size____dst_typ_00460ca8._24_8_; + uVar5 = s_src1_size____dst_size____dst_typ_00460ca8._16_8_; + uVar4 = s_src1_size____dst_size____dst_typ_00460ca8._8_8_; + uVar3 = s_src1_size____dst_size____dst_typ_00460ca8._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_src1_size____dst_size____dst_typ_00460ca8._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar7; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + cv::error(-0xd7,(String *)&local_198, + "void cvInRange(const void*, const void*, const void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1758); + cv::String::deallocate((String *)&local_198); +LAB_00257acc: + local_1d0 = 0; + local_1cc = 0; + local_1e0[0] = 0x1010000; + local_1d8 = aMStack_180; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_1b8 = 0; + local_1b4 = 0; + local_1c8[0] = 0x1010000; + local_1c0 = aMStack_c0; + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x2010000); + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x1010000; + local_1a8 = aMStack_60; + local_190 = (Mat *)&local_120; + cv::inRange((_InputArray *)local_1e0,(_InputArray *)local_1c8,(_InputArray *)local_1b0, + (_OutputArray *)&local_198); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_148 != 0) { + piVar10 = (int *)(local_148 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar9 = 0; + do { + *local_140 = 0; + iVar9 = iVar9 + 1; + local_140 = local_140 + 1; + } while (iVar9 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + return; +} + + +================================================================== + +### FUNC 00257ec8 (840 bytes) name=cvInRangeS + +void cvInRangeS(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8, + cv *param_9,cv *param_10) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + char *pcVar8; + int *piVar9; + int iVar10; + int *piVar11; + AutoBuffer *in_x5; + undefined4 local_160 [2]; + Mat *local_158; + undefined4 local_150; + undefined4 local_14c; + undefined4 local_148 [2]; + undefined8 *local_140; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130 [2]; + undefined8 *local_128; + undefined4 local_120; + undefined4 local_11c; + undefined4 local_118 [2]; + Mat *local_110; + undefined4 local_108; + undefined4 local_104; + undefined8 uStack_100; + undefined8 uStack_f8; + undefined8 local_f0; + undefined8 uStack_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_9,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_10,(void *)0x0,true,false,0,in_x5); + iVar10 = local_80[-1]; + if (iVar10 == local_20[-1]) { + if (iVar10 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002581d8; + } + else if (iVar10 < 1) { +LAB_002581d8: + if ((local_60 & 0xfff) == 0) goto LAB_00257fc4; + } + else if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_002581d8; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + local_e0 = 0; + local_d8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_e0,0x2c); + uVar7 = s_src1_size____dst_size____dst_typ_00460ca8._40_4_; + uVar6 = s_src1_size____dst_size____dst_typ_00460ca8._24_8_; + uVar5 = s_src1_size____dst_size____dst_typ_00460ca8._16_8_; + uVar4 = s_src1_size____dst_size____dst_typ_00460ca8._8_8_; + uVar3 = s_src1_size____dst_size____dst_typ_00460ca8._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_src1_size____dst_size____dst_typ_00460ca8._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar7; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + cv::error(-0xd7,(String *)&local_e0,"void cvInRangeS(const void*, CvScalar, CvScalar, void*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1762); + cv::String::deallocate((String *)&local_e0); +LAB_00257fc4: + local_128 = &local_e0; + local_140 = &uStack_100; + local_150 = 0; + local_14c = 0; + local_160[0] = 0x1010000; + local_148[0] = 0xc1020006; + local_138 = 1; + local_134 = 4; + local_130[0] = 0xc1020006; + local_120 = 1; + local_11c = 4; + local_108 = 0; + local_104 = 0; + local_118[0] = 0x2010000; + local_158 = aMStack_c0; + local_110 = (Mat *)&local_60; + uStack_100 = param_1; + uStack_f8 = param_2; + local_f0 = param_3; + uStack_e8 = param_4; + local_e0 = param_5; + local_d8 = param_6; + local_d0 = param_7; + uStack_c8 = param_8; + cv::inRange((_InputArray *)local_160,(_InputArray *)local_148,(_InputArray *)local_130, + (_OutputArray *)local_118); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00258270 (880 bytes) name=cvCmp + +void cvCmp(cv *param_1,cv *param_2,cv *param_3,int param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + char *pcVar8; + int iVar9; + int *piVar10; + int *piVar11; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + Mat aMStack_120 [4]; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + iVar9 = local_e0[-1]; + if (iVar9 == local_80[-1]) { + if (iVar9 == 2) { + if ((*local_e0 == *local_80) && (local_e0[1] == local_80[1])) goto LAB_002585ac; + } + else if (iVar9 < 1) { +LAB_002585ac: + if ((local_c0 & 0xfff) == 0) goto LAB_00258350; + } + else if (*local_e0 == *local_80) { + piVar10 = local_e0; + piVar11 = local_80; + do { + piVar11 = piVar11 + 1; + if (piVar10 == local_e0 + (iVar9 - 1)) goto LAB_002585ac; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar11); + } + } + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_138,0x2c); + uVar7 = s_src1_size____dst_size____dst_typ_00460ca8._40_4_; + uVar6 = s_src1_size____dst_size____dst_typ_00460ca8._24_8_; + uVar5 = s_src1_size____dst_size____dst_typ_00460ca8._16_8_; + uVar4 = s_src1_size____dst_size____dst_typ_00460ca8._8_8_; + uVar3 = s_src1_size____dst_size____dst_typ_00460ca8._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_src1_size____dst_size____dst_typ_00460ca8._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar7; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + cv::error(-0xd7,(String *)&local_138,"void cvCmp(const void*, const void*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x176c); + cv::String::deallocate((String *)&local_138); +LAB_00258350: + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_160 = aMStack_120; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = aMStack_60; + local_130 = (Mat *)&local_c0; + cv::compare((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138,param_4); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00258668 (720 bytes) name=cvCmpS + +void cvCmpS(undefined8 param_1,cv *param_2,cv *param_3,int param_4,undefined8 param_5, + undefined8 param_6,AutoBuffer *param_7) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + char *pcVar8; + int *piVar9; + int iVar10; + int *piVar11; + undefined8 local_118 [2]; + undefined4 local_108 [2]; + Mat *local_100; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + undefined8 *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + local_118[0] = param_1; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_7); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_7); + iVar10 = local_80[-1]; + if (iVar10 == local_20[-1]) { + if (iVar10 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_00258900; + } + else if (iVar10 < 1) { +LAB_00258900: + if ((local_60 & 0xfff) == 0) goto LAB_00258748; + } + else if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_00258900; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_d8,0x2c); + uVar7 = s_src1_size____dst_size____dst_typ_00460ca8._40_4_; + uVar6 = s_src1_size____dst_size____dst_typ_00460ca8._24_8_; + uVar5 = s_src1_size____dst_size____dst_typ_00460ca8._16_8_; + uVar4 = s_src1_size____dst_size____dst_typ_00460ca8._8_8_; + uVar3 = s_src1_size____dst_size____dst_typ_00460ca8._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_src1_size____dst_size____dst_typ_00460ca8._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar7; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + cv::error(-0xd7,(String *)&local_d8,"void cvCmpS(const void*, double, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1776); + cv::String::deallocate((String *)&local_d8); +LAB_00258748: + local_f8 = 0; + local_f4 = 0; + local_108[0] = 0x1010000; + local_f0[0] = 0xc1020006; + local_e0 = 1; + local_dc = 1; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_100 = aMStack_c0; + local_e8 = local_118; + local_d0 = (Mat *)&local_60; + cv::compare((_InputArray *)local_108,(_InputArray *)local_f0,(_OutputArray *)&local_d8,param_4); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0025899c (804 bytes) name=cvMin + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMin(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + uint *puVar11; + int iVar12; + uint *puVar13; + undefined8 local_130; + undefined8 local_128; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + uint *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + uint *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + uVar2 = local_e0[-1]; + if (uVar2 == local_80[-1]) { + if (uVar2 == 2) { + if ((*local_e0 == *local_80) && (local_e0[1] == local_80[1])) goto LAB_00258c80; + } + else if ((int)uVar2 < 1) { +LAB_00258c80: + if ((local_120 & 0xfff) == (local_c0 & 0xfff)) goto LAB_00258a74; + } + else if (*local_e0 == *local_80) { + puVar11 = local_e0; + puVar13 = local_80; + do { + puVar13 = puVar13 + 1; + if (puVar11 == local_e0 + (uVar2 - 1)) goto LAB_00258c80; + puVar11 = puVar11 + 1; + param_6 = (AutoBuffer *)(ulong)*puVar13; + } while (*puVar11 == *puVar13); + } + } + local_130 = 0; + local_128 = 0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_130,0x32); + uVar10 = _LAB_00460c18; + uVar9 = DAT_00460c10; + uVar8 = DAT_00460c08; + uVar7 = DAT_00460c00; + uVar6 = DAT_00460bf8; + uVar5 = DAT_00460bf0; + *(undefined2 *)(param_6 + 0x30) = _LAB_00460c20; + *(undefined8 *)param_6 = uVar5; + *(undefined8 *)(param_6 + 8) = uVar6; + *(undefined8 *)(param_6 + 0x10) = uVar7; + *(undefined8 *)(param_6 + 0x18) = uVar8; + *(undefined8 *)(param_6 + 0x20) = uVar9; + *(undefined8 *)(param_6 + 0x28) = uVar10; + cv::error(-0xd7,(String *)&local_130,"void cvMin(const void*, const void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1780); + cv::String::deallocate((String *)&local_130); +LAB_00258a74: + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::min((Mat *)&local_120,aMStack_60,(Mat *)&local_c0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00258d48 (804 bytes) name=cvMax + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMax(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + uint *puVar11; + int iVar12; + uint *puVar13; + undefined8 local_130; + undefined8 local_128; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + uint *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + uint *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + uVar2 = local_e0[-1]; + if (uVar2 == local_80[-1]) { + if (uVar2 == 2) { + if ((*local_e0 == *local_80) && (local_e0[1] == local_80[1])) goto LAB_0025902c; + } + else if ((int)uVar2 < 1) { +LAB_0025902c: + if ((local_120 & 0xfff) == (local_c0 & 0xfff)) goto LAB_00258e20; + } + else if (*local_e0 == *local_80) { + puVar11 = local_e0; + puVar13 = local_80; + do { + puVar13 = puVar13 + 1; + if (puVar11 == local_e0 + (uVar2 - 1)) goto LAB_0025902c; + puVar11 = puVar11 + 1; + param_6 = (AutoBuffer *)(ulong)*puVar13; + } while (*puVar11 == *puVar13); + } + } + local_130 = 0; + local_128 = 0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_130,0x32); + uVar10 = _LAB_00460c18; + uVar9 = DAT_00460c10; + uVar8 = DAT_00460c08; + uVar7 = DAT_00460c00; + uVar6 = DAT_00460bf8; + uVar5 = DAT_00460bf0; + *(undefined2 *)(param_6 + 0x30) = _LAB_00460c20; + *(undefined8 *)param_6 = uVar5; + *(undefined8 *)(param_6 + 8) = uVar6; + *(undefined8 *)(param_6 + 0x10) = uVar7; + *(undefined8 *)(param_6 + 0x18) = uVar8; + *(undefined8 *)(param_6 + 0x20) = uVar9; + *(undefined8 *)(param_6 + 0x28) = uVar10; + cv::error(-0xd7,(String *)&local_130,"void cvMax(const void*, const void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x178a); + cv::String::deallocate((String *)&local_130); +LAB_00258e20: + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::max((Mat *)&local_120,aMStack_60,(Mat *)&local_c0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002590f4 (724 bytes) name=cvMinS + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMinS(undefined8 param_1,cv *param_2,cv *param_3) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + int *piVar10; + int iVar11; + int *piVar12; + AutoBuffer *in_x5; + undefined8 local_118 [2]; + undefined4 local_108 [2]; + Mat *local_100; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + undefined8 *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + local_118[0] = param_1; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,in_x5); + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_00259384; + } + else if (iVar11 < 1) { +LAB_00259384: + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) goto LAB_002591d0; + } + else if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_00259384; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_d8,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(puVar9 + 6) = _LAB_00460c20; + *puVar9 = uVar3; + puVar9[1] = uVar4; + puVar9[2] = uVar5; + puVar9[3] = uVar6; + puVar9[4] = uVar7; + puVar9[5] = uVar8; + cv::error(-0xd7,(String *)&local_d8,"void cvMinS(const void*, double, void*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x1794); + cv::String::deallocate((String *)&local_d8); +LAB_002591d0: + local_f8 = 0; + local_f4 = 0; + local_108[0] = 0x1010000; + local_f0[0] = 0xc1020006; + local_e0 = 1; + local_dc = 1; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_100 = (Mat *)&local_c0; + local_e8 = local_118; + local_d0 = (Mat *)&local_60; + cv::min((_InputArray *)local_108,(_InputArray *)local_f0,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00259428 (724 bytes) name=cvMaxS + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMaxS(undefined8 param_1,cv *param_2,cv *param_3) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + int *piVar10; + int iVar11; + int *piVar12; + AutoBuffer *in_x5; + undefined8 local_118 [2]; + undefined4 local_108 [2]; + Mat *local_100; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + undefined8 *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + local_118[0] = param_1; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,in_x5); + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002596b8; + } + else if (iVar11 < 1) { +LAB_002596b8: + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) goto LAB_00259504; + } + else if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_002596b8; + piVar10 = piVar10 + 1; + } while (*piVar10 == *piVar12); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_d8,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(puVar9 + 6) = _LAB_00460c20; + *puVar9 = uVar3; + puVar9[1] = uVar4; + puVar9[2] = uVar5; + puVar9[3] = uVar6; + puVar9[4] = uVar7; + puVar9[5] = uVar8; + cv::error(-0xd7,(String *)&local_d8,"void cvMaxS(const void*, double, void*)", + "/builds/master_pack-android/opencv/modules/core/src/arithm.cpp",0x179e); + cv::String::deallocate((String *)&local_d8); +LAB_00259504: + local_f8 = 0; + local_f4 = 0; + local_108[0] = 0x1010000; + local_f0[0] = 0xc1020006; + local_e0 = 1; + local_dc = 1; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_100 = (Mat *)&local_c0; + local_e8 = local_118; + local_d0 = (Mat *)&local_60; + cv::max((_InputArray *)local_108,(_InputArray *)local_f0,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0025975c (268 bytes) name=cvSetIPLAllocators + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvSetIPLAllocators(long param_1,long param_2,long param_3,long param_4,long param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + char cVar10; + undefined8 *puVar11; + undefined8 local_10; + undefined8 local_8; + + cVar10 = param_1 != 0; + if (param_2 != 0) { + cVar10 = cVar10 + '\x01'; + } + if (param_3 != 0) { + cVar10 = cVar10 + '\x01'; + } + if (param_4 != 0) { + cVar10 = cVar10 + '\x01'; + } + if (param_5 != 0) { + cVar10 = cVar10 + '\x01'; + } + if ((cVar10 != '\x05') && (cVar10 != '\0')) { + local_10 = 0; + local_8 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_10,0x45); + uVar9 = _LAB_00461700; + uVar8 = _LAB_004616f8; + uVar7 = _DAT_004616f0; + uVar6 = DAT_004616e8; + uVar5 = DAT_004616e0; + uVar4 = DAT_004616d8; + uVar3 = DAT_004616d0; + uVar2 = DAT_004616c8; + uVar1 = DAT_004616c0; + *(undefined1 *)((long)puVar11 + 0x44) = LAB_00461704; + *(undefined4 *)(puVar11 + 8) = uVar9; + *puVar11 = uVar1; + puVar11[1] = uVar2; + puVar11[2] = uVar3; + puVar11[3] = uVar4; + puVar11[4] = uVar5; + puVar11[5] = uVar6; + puVar11[6] = uVar7; + puVar11[7] = uVar8; + cv::error(-5,(String *)&local_10, + "void cvSetIPLAllocators(Cv_iplCreateImageHeader, Cv_iplAllocateImageData, Cv_iplDeallocate, Cv_iplCreateROI, Cv_iplCloneImage)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x51); + cv::String::deallocate((String *)&local_10); + } + DAT_00531f10 = param_1; + DAT_00531f18 = param_2; + DAT_00531f20 = param_3; + DAT_00531f28 = param_4; + DAT_00531f30 = param_5; + return; +} + + +================================================================== + +### FUNC 0025987c (392 bytes) name=cvCreateMatHeader + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvCreateMatHeader(uint param_1,uint param_2,uint param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + char cVar5; + uint *puVar6; + undefined8 *puVar7; + char *pcVar8; + undefined8 local_10; + undefined8 local_8; + + if (((int)param_1 < 0) || ((int)param_2 < 1)) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined8 *)cv::String::allocate((String *)&local_10,0x1c); + uVar4 = DAT_00461760; + uVar3 = _LAB_00461750; + uVar2 = _LAB_00461748; + puVar7[2] = DAT_00461758; + *(undefined4 *)(puVar7 + 3) = uVar4; + *puVar7 = uVar2; + puVar7[1] = uVar3; + cv::error(-0xc9,(String *)&local_10,"CvMat* cvCreateMatHeader(int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x77); + cv::String::deallocate((String *)&local_10); + } + uVar1 = ((param_3 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((param_3 & 7) << 1)) & 3)) * + param_2; + if ((int)uVar1 < 1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar5 = s_Invalid_matrix_type_00461768[0x12]; + uVar3 = s_Invalid_matrix_type_00461768._8_8_; + uVar2 = s_Invalid_matrix_type_00461768._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_Invalid_matrix_type_00461768._16_2_; + pcVar8[0x12] = cVar5; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd2,(String *)&local_10,"CvMat* cvCreateMatHeader(int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x7b); + cv::String::deallocate((String *)&local_10); + } + puVar6 = (uint *)cv::cvAlloc(0x28); + puVar6[1] = uVar1; + puVar6[8] = param_1; + *puVar6 = param_3 & 0xfff | 0x42424000; + puVar6[9] = param_2; + puVar6[6] = 0; + puVar6[7] = 0; + puVar6[2] = 0; + puVar6[3] = 0; + puVar6[4] = 1; + if (0x7fffffff < (long)(int)uVar1 * (long)(int)param_1) { + *puVar6 = param_3 & 0xfff | 0x42420000; + } + return; +} + + +================================================================== + +### FUNC 00259a2c (528 bytes) name=cvInitMatHeader + +uint * cvInitMatHeader(uint *param_1,uint param_2,uint param_3,uint param_4,undefined8 param_5, + uint param_6) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + char *pcVar5; + uint uVar6; + uint *local_10; + uint *local_8; + + if (param_1 == (uint *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvMat* cvInitMatHeader(CvMat*, int, int, int, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x92); + cv::String::deallocate((String *)&local_10); + } + if (((int)param_2 < 0) || ((int)param_3 < 1)) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar4 = s_Non_positive_cols_or_rows_00461780[0x18]; + uVar3 = s_Non_positive_cols_or_rows_00461780._8_8_; + uVar2 = s_Non_positive_cols_or_rows_00461780._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_Non_positive_cols_or_rows_00461780._16_8_; + pcVar5[0x18] = cVar4; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + cv::error(-0xc9,(String *)&local_10,"CvMat* cvInitMatHeader(CvMat*, int, int, int, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x98); + cv::String::deallocate((String *)&local_10); + } + uVar1 = param_4 & 0xfff | 0x42420000; + param_1[8] = param_2; + param_1[9] = param_3; + *param_1 = uVar1; + *(undefined8 *)(param_1 + 6) = param_5; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_3 = param_3 * ((param_4 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((param_4 & 7) << 1)) & 3)); + if ((param_6 == 0) || (param_6 == 0x7fffffff)) { + param_1[1] = param_3; + uVar6 = 0x4000; + param_6 = param_3; + } + else { + if ((int)param_6 < (int)param_3) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd,(String *)&local_10,"CvMat* cvInitMatHeader(CvMat*, int, int, int, void*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa8); + cv::String::deallocate((String *)&local_10); + param_2 = param_1[8]; + } + param_1[1] = param_6; + if (param_2 == 1) { + uVar6 = param_4 & 0xfff | 0x42424000; + goto LAB_00259afc; + } + uVar6 = 0; + if (param_3 == param_6) { + uVar6 = 0x4000; + param_6 = param_3; + } + } + uVar6 = uVar6 | uVar1; + if (0x7fffffff < (long)(int)param_6 * (long)(int)param_2) { + uVar6 = uVar1; + } +LAB_00259afc: + *param_1 = uVar6; + return param_1; +} + + +================================================================== + +### FUNC 00259c78 (352 bytes) name=cvReleaseMat + +void cvReleaseMat(undefined8 *param_1) + +{ + uint uVar1; + int iVar2; + int *piVar3; + uint *puVar4; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-9,(String *)&local_10,"void cvReleaseMat(CvMat**)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xbd); + cv::String::deallocate((String *)&local_10); + } + puVar4 = (uint *)*param_1; + if (puVar4 == (uint *)0x0) { + return; + } + if ((*puVar4 & 0xffff0000) == 0x42420000) { + if (((int)puVar4[9] < 0) || ((int)puVar4[8] < 0)) goto LAB_00259cb4; + *param_1 = 0; +LAB_00259d78: + if (((int)puVar4[9] < 1) || ((int)puVar4[8] < 1)) goto LAB_00259d18; + } + else if ((*puVar4 & 0xffff0000) == 0x42430000) { + *param_1 = 0; + } + else { +LAB_00259cb4: + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xce,(String *)&local_10,"void cvReleaseMat(CvMat**)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc4); + cv::String::deallocate((String *)&local_10); + uVar1 = *puVar4; + *param_1 = 0; + if ((uVar1 & 0xffff0000) == 0x42420000) goto LAB_00259d78; + if ((uVar1 & 0xffff0000) != 0x42430000) goto LAB_00259d18; + } + if (*(long *)(puVar4 + 6) != 0) { + piVar3 = *(int **)(puVar4 + 2); + puVar4[6] = 0; + puVar4[7] = 0; + if ((piVar3 != (int *)0x0) && (iVar2 = *piVar3, *piVar3 = iVar2 + -1, iVar2 + -1 == 0)) { + cv::cvFree_(piVar3); + } + puVar4[2] = 0; + puVar4[3] = 0; + } +LAB_00259d18: + cv::cvFree_(puVar4); + return; +} + + +================================================================== + +### FUNC 00259e00 (816 bytes) name=cvInitMatNDHeader + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint * cvInitMatNDHeader(uint *param_1,uint param_2,long param_3,ulong param_4,undefined8 param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined2 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + char cVar7; + char *pcVar8; + undefined8 *puVar9; + uint uVar10; + long lVar11; + uint uVar12; + uint *puVar13; + uint *local_10; + uint *local_8; + + lVar11 = (long)(int)(((uint)(param_4 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)param_4 & 7) << 1)) & 3)); + if (param_1 == (uint *)0x0) { + local_10 = param_1; + local_8 = param_1; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x1a); + uVar3 = _LAB_004617b8; + uVar2 = DAT_004617a8; + uVar1 = DAT_004617a0; + puVar9[2] = DAT_004617b0; + *(undefined2 *)(puVar9 + 3) = uVar3; + *puVar9 = uVar1; + puVar9[1] = uVar2; + cv::error(-0x1b,(String *)&local_10, + "CvMatND* cvInitMatNDHeader(CvMatND*, int, const int*, int, void*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xed); + cv::String::deallocate((String *)&local_10); + } + if (param_3 == 0) { + local_10 = (uint *)param_3; + local_8 = (uint *)param_3; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar2 = s_NULL__pointer_004617c0._8_8_; + uVar1 = s_NULL__pointer_004617c0._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_NULL__pointer_004617c0._16_4_; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10, + "CvMatND* cvInitMatNDHeader(CvMatND*, int, const int*, int, void*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xf3); + cv::String::deallocate((String *)&local_10); + } + uVar12 = param_2 - 1; + if (0x1f < uVar12) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x2e); + uVar3 = s_non_positive_or_too_large_number_004617d8._44_2_; + uVar6 = s_non_positive_or_too_large_number_004617d8._40_4_; + uVar5 = s_non_positive_or_too_large_number_004617d8._24_8_; + uVar4 = s_non_positive_or_too_large_number_004617d8._16_8_; + uVar2 = s_non_positive_or_too_large_number_004617d8._8_8_; + uVar1 = s_non_positive_or_too_large_number_004617d8._0_8_; + *(undefined8 *)(pcVar8 + 0x20) = s_non_positive_or_too_large_number_004617d8._32_8_; + *(undefined4 *)(pcVar8 + 0x28) = uVar6; + *(undefined2 *)(pcVar8 + 0x2c) = uVar3; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-0xd3,(String *)&local_10, + "CvMatND* cvInitMatNDHeader(CvMatND*, int, const int*, int, void*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xf7); + cv::String::deallocate((String *)&local_10); + } + if (-1 < (int)uVar12) { + puVar13 = (uint *)(param_3 + (long)(int)uVar12 * 4); + do { + while( true ) { + uVar10 = *puVar13; + if ((int)uVar10 < 0) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar7 = s_one_of_dimesion_sizes_is_non_pos_00461808[0x24]; + uVar5 = s_one_of_dimesion_sizes_is_non_pos_00461808._24_8_; + uVar4 = s_one_of_dimesion_sizes_is_non_pos_00461808._16_8_; + uVar2 = s_one_of_dimesion_sizes_is_non_pos_00461808._8_8_; + uVar1 = s_one_of_dimesion_sizes_is_non_pos_00461808._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_one_of_dimesion_sizes_is_non_pos_00461808._32_4_; + pcVar8[0x24] = cVar7; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-0xc9,(String *)&local_10, + "CvMatND* cvInitMatNDHeader(CvMatND*, int, const int*, int, void*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xfc); + cv::String::deallocate((String *)&local_10); + uVar10 = *puVar13; + } + param_1[(long)(int)uVar12 * 2 + 8] = uVar10; + if (lVar11 < 0x80000000) break; + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar2 = s_The_array_is_too_big_00461830._8_8_; + uVar1 = s_The_array_is_too_big_00461830._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_The_array_is_too_big_00461830._16_4_; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10, + "CvMatND* cvInitMatNDHeader(CvMatND*, int, const int*, int, void*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xff); + uVar10 = uVar12 - 1; + cv::String::deallocate((String *)&local_10); + param_1[(long)(int)uVar12 * 2 + 9] = (uint)lVar11; + lVar11 = lVar11 * (int)*puVar13; + puVar13 = puVar13 + -1; + uVar12 = uVar10; + if (uVar10 == 0xffffffff) goto LAB_00259f30; + } + param_1[(long)(int)uVar12 * 2 + 9] = (uint)lVar11; + uVar12 = uVar12 - 1; + lVar11 = lVar11 * (int)*puVar13; + puVar13 = puVar13 + -1; + } while (uVar12 != 0xffffffff); +LAB_00259f30: + if (0x7fffffff < lVar11) { + uVar12 = 0x42430000; + goto LAB_00259f40; + } + } + uVar12 = 0x42434000; +LAB_00259f40: + param_1[1] = param_2; + *(undefined8 *)(param_1 + 6) = param_5; + *param_1 = uVar12 | (uint)param_4 & 0xfff; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + return param_1; +} + + +================================================================== + +### FUNC 0025a194 (220 bytes) name=cvCreateMatNDHeader + +long cvCreateMatNDHeader(int param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + long lVar8; + undefined8 local_10; + undefined8 local_8; + + if (0x1f < param_1 - 1U) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x2e); + uVar6 = s_non_positive_or_too_large_number_004617d8._44_2_; + uVar5 = s_non_positive_or_too_large_number_004617d8._40_4_; + uVar4 = s_non_positive_or_too_large_number_004617d8._24_8_; + uVar3 = s_non_positive_or_too_large_number_004617d8._16_8_; + uVar2 = s_non_positive_or_too_large_number_004617d8._8_8_; + uVar1 = s_non_positive_or_too_large_number_004617d8._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_non_positive_or_too_large_number_004617d8._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + cv::error(-0xd3,(String *)&local_10,"CvMatND* cvCreateMatNDHeader(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x11e); + cv::String::deallocate((String *)&local_10); + } + lVar8 = cv::cvAlloc(0x120); + cvInitMatNDHeader(lVar8,param_1,param_2,param_3,0); + *(undefined4 *)(lVar8 + 0x10) = 1; + return lVar8; +} + + +================================================================== + +### FUNC 0025a284 (776 bytes) name=cvNextNArraySlice + +bool cvNextNArraySlice(int *param_1) + +{ + long lVar1; + int iVar2; + int iVar3; + int iVar4; + long lVar5; + long lVar6; + long lVar7; + int iVar8; + int iVar9; + + iVar9 = param_1[1]; + if (0 < iVar9) { + iVar2 = *param_1; + do { + iVar8 = iVar9 + -1; + lVar7 = (long)iVar8; + if (iVar2 < 1) { + iVar4 = param_1[lVar7 + 0x18]; + param_1[lVar7 + 0x18] = iVar4 + -1; + if (0 < iVar4 + -1) break; + iVar9 = *(int *)(*(long *)(param_1 + 0x38) + lVar7 * 8 + 0x20); + } + else { + lVar1 = *(long *)(param_1 + 0x38) + lVar7 * 8; + iVar4 = *(int *)(lVar1 + 0x24); + lVar6 = *(long *)(param_1 + 4) + (long)iVar4; + *(long *)(param_1 + 4) = lVar6; + if (iVar2 != 1) { + lVar5 = (lVar7 + 4) * 8; + *(long *)(param_1 + 6) = + *(long *)(param_1 + 6) + (long)*(int *)(*(long *)(param_1 + 0x3a) + lVar5 + 4); + if (((((iVar2 != 2) && + (*(long *)(param_1 + 8) = + *(long *)(param_1 + 8) + (long)*(int *)(*(long *)(param_1 + 0x3c) + lVar5 + 4) + , iVar2 != 3)) && + (*(long *)(param_1 + 10) = + *(long *)(param_1 + 10) + (long)*(int *)(*(long *)(param_1 + 0x3e) + lVar5 + 4) + , iVar2 != 4)) && + ((*(long *)(param_1 + 0xc) = + *(long *)(param_1 + 0xc) + + (long)*(int *)(*(long *)(param_1 + 0x40) + lVar5 + 4), iVar2 != 5 && + (*(long *)(param_1 + 0xe) = + *(long *)(param_1 + 0xe) + + (long)*(int *)(*(long *)(param_1 + 0x42) + lVar5 + 4), iVar2 != 6)))) && + ((*(long *)(param_1 + 0x10) = + *(long *)(param_1 + 0x10) + + (long)*(int *)(*(long *)(param_1 + 0x44) + lVar5 + 4), iVar2 != 7 && + ((*(long *)(param_1 + 0x12) = + *(long *)(param_1 + 0x12) + + (long)*(int *)(*(long *)(param_1 + 0x46) + lVar5 + 4), iVar2 != 8 && + (*(long *)(param_1 + 0x14) = + *(long *)(param_1 + 0x14) + + (long)*(int *)(*(long *)(param_1 + 0x48) + lVar5 + 4), iVar2 != 9)))))) { + *(long *)(param_1 + 0x16) = + *(long *)(param_1 + 0x16) + + (long)*(int *)(*(long *)(param_1 + 0x4a) + lVar7 * 8 + 0x24); + } + } + iVar3 = param_1[lVar7 + 0x18]; + param_1[lVar7 + 0x18] = iVar3 + -1; + if (0 < iVar3 + -1) break; + iVar9 = *(int *)(lVar1 + 0x20); + *(long *)(param_1 + 4) = lVar6 - (long)iVar9 * (long)iVar4; + if (iVar2 != 1) { + lVar6 = (lVar7 + 4) * 8; + *(long *)(param_1 + 6) = + *(long *)(param_1 + 6) - + (long)*(int *)(*(long *)(param_1 + 0x3a) + lVar6 + 4) * (long)iVar9; + if ((((iVar2 != 2) && + (*(long *)(param_1 + 8) = + *(long *)(param_1 + 8) - + (long)*(int *)(*(long *)(param_1 + 0x3c) + lVar6 + 4) * (long)iVar9, iVar2 != 3 + )) && (*(long *)(param_1 + 10) = + *(long *)(param_1 + 10) - + (long)*(int *)(*(long *)(param_1 + 0x3e) + lVar6 + 4) * (long)iVar9, + iVar2 != 4)) && + (((*(long *)(param_1 + 0xc) = + *(long *)(param_1 + 0xc) - + (long)*(int *)(*(long *)(param_1 + 0x40) + lVar6 + 4) * (long)iVar9, iVar2 != 5 + && (*(long *)(param_1 + 0xe) = + *(long *)(param_1 + 0xe) - + (long)*(int *)(*(long *)(param_1 + 0x42) + lVar6 + 4) * (long)iVar9, + iVar2 != 6)) && + ((*(long *)(param_1 + 0x10) = + *(long *)(param_1 + 0x10) - + (long)*(int *)(*(long *)(param_1 + 0x44) + lVar6 + 4) * (long)iVar9, iVar2 != 7 + && ((*(long *)(param_1 + 0x12) = + *(long *)(param_1 + 0x12) - + (long)*(int *)(*(long *)(param_1 + 0x46) + lVar6 + 4) * (long)iVar9, + iVar2 != 8 && + (*(long *)(param_1 + 0x14) = + *(long *)(param_1 + 0x14) - + (long)*(int *)(*(long *)(param_1 + 0x48) + lVar6 + 4) * (long)iVar9, + iVar2 != 9)))))))) { + *(long *)(param_1 + 0x16) = + *(long *)(param_1 + 0x16) - + (long)*(int *)(*(long *)(param_1 + 0x4a) + lVar7 * 8 + 0x24) * (long)iVar9; + } + } + } + param_1[lVar7 + 0x18] = iVar9; + iVar9 = iVar8; + } while (0 < iVar8); + } + return 0 < iVar9; +} + + +================================================================== + +### FUNC 0025a58c (804 bytes) name=cvCreateSparseMat + +uint * cvCreateSparseMat(uint param_1,int *param_2,ulong param_3) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + char cVar6; + undefined2 uVar7; + char *pcVar8; + uint *puVar9; + undefined8 uVar10; + void *__s; + ulong uVar11; + int *piVar12; + int *local_10; + int *local_8; + + uVar1 = (uint)(0x88442211L >> (((uint)param_3 & 7) << 2)) & 0xf; + iVar2 = uVar1 + ((uint)(param_3 >> 3) & 0x1ff) * uVar1; + if (iVar2 == 0) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar6 = s_invalid_array_data_type_00461848[0x16]; + uVar7 = s_invalid_array_data_type_00461848._20_2_; + uVar3 = s_invalid_array_data_type_00461848._8_8_; + uVar10 = s_invalid_array_data_type_00461848._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_invalid_array_data_type_00461848._16_4_; + *(undefined2 *)(pcVar8 + 0x14) = uVar7; + pcVar8[0x16] = cVar6; + *(undefined8 *)pcVar8 = uVar10; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd2,(String *)&local_10,"CvSparseMat* cvCreateSparseMat(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x221); + cv::String::deallocate((String *)&local_10); + } + if (0x3ff < param_1 - 1) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x18); + uVar3 = s_bad_number_of_dimensions_00461860._8_8_; + uVar10 = s_bad_number_of_dimensions_00461860._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_bad_number_of_dimensions_00461860._16_8_; + *(undefined8 *)pcVar8 = uVar10; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10,"CvSparseMat* cvCreateSparseMat(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x224); + cv::String::deallocate((String *)&local_10); + } + if (param_2 == (int *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar3 = s_NULL__pointer_004617c0._8_8_; + uVar10 = s_NULL__pointer_004617c0._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_NULL__pointer_004617c0._16_4_; + *(undefined8 *)pcVar8 = uVar10; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_10,"CvSparseMat* cvCreateSparseMat(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x227); + cv::String::deallocate((String *)&local_10); + } + if (0 < (int)param_1) { + piVar12 = param_2; + do { + while (*piVar12 < 1) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar6 = s_one_of_dimesion_sizes_is_non_pos_00461808[0x24]; + uVar5 = s_one_of_dimesion_sizes_is_non_pos_00461808._24_8_; + uVar4 = s_one_of_dimesion_sizes_is_non_pos_00461808._16_8_; + uVar3 = s_one_of_dimesion_sizes_is_non_pos_00461808._8_8_; + uVar10 = s_one_of_dimesion_sizes_is_non_pos_00461808._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_one_of_dimesion_sizes_is_non_pos_00461808._32_4_; + pcVar8[0x24] = cVar6; + *(undefined8 *)pcVar8 = uVar10; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-0xc9,(String *)&local_10,"CvSparseMat* cvCreateSparseMat(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x22c); + piVar12 = piVar12 + 1; + cv::String::deallocate((String *)&local_10); + if (piVar12 == param_2 + (ulong)(param_1 - 1) + 1) goto LAB_0025a69c; + } + piVar12 = piVar12 + 1; + } while (piVar12 != param_2 + (ulong)(param_1 - 1) + 1); +LAB_0025a69c: + if (0x20 < (int)param_1) { + uVar11 = (long)(int)(param_1 - 0x20) * 4 + 0xb8; + goto LAB_0025a6b0; + } + } + uVar11 = 0xb8; +LAB_0025a6b0: + puVar9 = (uint *)cv::cvAlloc(uVar11); + puVar9[1] = param_1; + puVar9[2] = 0; + puVar9[3] = 0; + *puVar9 = (uint)param_3 & 0xfff | 0x42440000; + puVar9[4] = 1; + memcpy(puVar9 + 0xd,param_2,-(ulong)(param_1 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_1 << 2); + uVar1 = -uVar1 & uVar1 + 0xf; + puVar9[0xb] = uVar1; + uVar1 = iVar2 + uVar1 + 3 & 0xfffffffc; + puVar9[0xc] = uVar1; + uVar10 = cvCreateMemStorage(0x1000); + uVar10 = cvCreateSet(0,0x70,uVar1 + param_1 * 4 + 0xf & 0xfffffff0,uVar10); + *(undefined8 *)(puVar9 + 6) = uVar10; + puVar9[10] = 0x400; + __s = (void *)cv::cvAlloc(0x2000); + *(void **)(puVar9 + 8) = __s; + memset(__s,0,0x2000); + return puVar9; +} + + +================================================================== + +### FUNC 0025a900 (240 bytes) name=cvReleaseSparseMat + +void cvReleaseSparseMat(undefined8 *param_1) + +{ + uint *puVar1; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-9,(String *)&local_10,"void cvReleaseSparseMat(CvSparseMat**)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x24d); + cv::String::deallocate((String *)&local_10); + } + puVar1 = (uint *)*param_1; + if (puVar1 != (uint *)0x0) { + if ((*puVar1 & 0xffff0000) != 0x42440000) { + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xce,(String *)&local_10,"void cvReleaseSparseMat(CvSparseMat**)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x254); + cv::String::deallocate((String *)&local_10); + } + *param_1 = 0; + local_10 = *(undefined8 **)(*(long *)(puVar1 + 6) + 0x48); + cvReleaseMemStorage((String *)&local_10); + cv::cvFree_(*(void **)(puVar1 + 8)); + puVar1[8] = 0; + puVar1[9] = 0; + cv::cvFree_(puVar1); + } + return; +} + + +================================================================== + +### FUNC 0025aa18 (204 bytes) name=cvCloneSparseMat + +undefined8 cvCloneSparseMat(uint *param_1) + +{ + uint uVar1; + undefined8 uVar2; + undefined2 uVar3; + char cVar4; + char *pcVar5; + undefined8 uVar6; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == (uint *)0x0) || (uVar1 = *param_1, (uVar1 & 0xffff0000) != 0x42440000)) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x1b); + cVar4 = s_Invalid_sparse_array_header_00461880[0x1a]; + uVar3 = s_Invalid_sparse_array_header_00461880._24_2_; + uVar2 = s_Invalid_sparse_array_header_00461880._8_8_; + uVar6 = s_Invalid_sparse_array_header_00461880._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_Invalid_sparse_array_header_00461880._16_8_; + *(undefined2 *)(pcVar5 + 0x18) = uVar3; + pcVar5[0x1a] = cVar4; + *(undefined8 *)pcVar5 = uVar6; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-5,(String *)&local_10,"CvSparseMat* cvCloneSparseMat(const CvSparseMat*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x265); + cv::String::deallocate((String *)&local_10); + uVar1 = *param_1; + } + uVar6 = cvCreateSparseMat(param_1[1],param_1 + 0xd,uVar1); + cvCopy(param_1,uVar6,0); + return uVar6; +} + + +================================================================== + +### FUNC 0025aaf8 (388 bytes) name=cvInitSparseMatIterator + +long cvInitSparseMatIterator(uint *param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + uint uVar7; + long *plVar8; + uint uVar9; + undefined8 *local_10; + undefined8 *local_8; + + if ((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42440000)) { + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x1c); + uVar3 = s_Invalid_sparse_matrix_header_004618a0._24_4_; + uVar2 = s_Invalid_sparse_matrix_header_004618a0._8_8_; + uVar1 = s_Invalid_sparse_matrix_header_004618a0._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_Invalid_sparse_matrix_header_004618a0._16_8_; + *(undefined4 *)(pcVar5 + 0x18) = uVar3; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-5,(String *)&local_10, + "CvSparseNode* cvInitSparseMatIterator(const CvSparseMat*, CvSparseMatIterator*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x274); + cv::String::deallocate((String *)&local_10); + } + if (param_2 == (undefined8 *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar4 = s_NULL_iterator_pointer_004618c0[0x14]; + uVar2 = s_NULL_iterator_pointer_004618c0._8_8_; + uVar1 = s_NULL_iterator_pointer_004618c0._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_NULL_iterator_pointer_004618c0._16_4_; + pcVar5[0x14] = cVar4; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10, + "CvSparseNode* cvInitSparseMatIterator(const CvSparseMat*, CvSparseMatIterator*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x277); + cv::String::deallocate((String *)&local_10); + } + uVar9 = param_1[10]; + *param_2 = param_1; + param_2[1] = 0; + if (0 < (int)uVar9) { + plVar8 = *(long **)(param_1 + 8); + lVar6 = *plVar8; + uVar7 = 0; + if (lVar6 == 0) { + do { + plVar8 = plVar8 + 1; + uVar7 = uVar7 + 1; + if (uVar7 == uVar9) goto LAB_0025abcc; + lVar6 = *plVar8; + } while (lVar6 == 0); + } + else { + uVar7 = 0; + } + param_2[1] = lVar6; + *(uint *)(param_2 + 2) = uVar7; + return lVar6; + } + uVar9 = 0; +LAB_0025abcc: + *(uint *)(param_2 + 2) = uVar9; + return 0; +} + + +================================================================== + +### FUNC 0025aca4 (1024 bytes) name=FUN_0025aca4 + +void * FUN_0025aca4(uint *param_1,uint *param_2,uint *param_3,int param_4,uint *param_5) + +{ + uint uVar1; + undefined8 uVar2; + undefined4 uVar3; + long lVar4; + void *pvVar5; + char *pcVar6; + uint uVar7; + undefined8 *puVar8; + uint uVar9; + uint *puVar10; + uint *puVar11; + uint *puVar12; + uint uVar13; + int iVar14; + uint uVar15; + ulong uVar16; + uint *local_18; + uint *local_10; + uint local_8; + + if (param_5 == (uint *)0x0) { + uVar7 = param_1[1]; + uVar15 = 0; + uVar13 = uVar15; + if (0 < (int)uVar7) { + iVar14 = 0; + puVar12 = param_2; + do { + uVar13 = *puVar12; + if (param_1[(long)iVar14 + 0xd] <= uVar13) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar6 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar3 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + *(undefined8 *)(pcVar6 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar6 + 0x18) = uVar3; + *(undefined2 *)(pcVar6 + 0x1c) = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + *(undefined8 *)pcVar6 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar6 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar7 = param_1[1]; + } + iVar14 = iVar14 + 1; + puVar12 = puVar12 + 1; + uVar15 = uVar13 + uVar15 * 0x5bd1e995; + } while (iVar14 < (int)uVar7); + goto LAB_0025acdc; + } + } + else { + uVar15 = *param_5; +LAB_0025acdc: + uVar13 = uVar15 & 0x7fffffff; + } + uVar7 = param_1[10]; + uVar15 = uVar15 & uVar7 - 1; + uVar16 = (ulong)uVar15; + if (param_4 < -1) { + pvVar5 = (void *)0x0; + } + else { + for (puVar12 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)uVar15 * 8); + puVar12 != (uint *)0x0; puVar12 = *(uint **)(puVar12 + 2)) { + if (*puVar12 == uVar13) { + uVar15 = param_1[1]; + if ((int)uVar15 < 1) { + if (uVar15 == 0) { +LAB_0025ad68: + pvVar5 = (void *)((long)puVar12 + (long)(int)param_1[0xb]); + if (pvVar5 != (void *)0x0) goto LAB_0025ae2c; + goto LAB_0025ad74; + } + } + else if (*param_2 == *(uint *)((long)puVar12 + (long)(int)param_1[0xc])) { + uVar9 = 0; + puVar10 = (uint *)((long)puVar12 + (long)(int)param_1[0xc] + 4); + puVar11 = param_2; + do { + puVar11 = puVar11 + 1; + uVar9 = uVar9 + 1; + if (uVar9 == uVar15) goto LAB_0025ad68; + uVar1 = *puVar10; + puVar10 = puVar10 + 1; + } while (*puVar11 == uVar1); + } + } + } + pvVar5 = (void *)0x0; + } +LAB_0025ad74: + if (param_4 == 0) goto LAB_0025ae2c; + lVar4 = *(long *)(param_1 + 6); + uVar15 = uVar7 * 2; + if (*(int *)(lVar4 + 0x68) < (int)(uVar7 * 3)) { + local_18 = *(uint **)(lVar4 + 0x60); + if (local_18 == (uint *)0x0) goto LAB_0025af84; +LAB_0025ad9c: + uVar15 = *local_18; + iVar14 = *(int *)(lVar4 + 0x68); + *(undefined8 *)(lVar4 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar15 & 0x3ffffff; + *(int *)(lVar4 + 0x68) = iVar14 + 1; + } + else { + if ((int)uVar15 < 0x400) { + uVar15 = 0x400; + } + pvVar5 = (void *)cv::cvAlloc((long)(int)(uVar15 << 3)); + memset(pvVar5,0,(long)(int)(uVar15 << 3)); + puVar12 = (uint *)cvInitSparseMatIterator(param_1,&local_18); + if (puVar12 != (uint *)0x0) { + uVar7 = uVar15 - 1; + while( true ) { + puVar10 = *(uint **)(local_10 + 2); + puVar11 = puVar12; + while (puVar12 = puVar10, puVar12 != (uint *)0x0) { + lVar4 = (ulong)(uVar7 & *puVar11) * 8; + *(undefined8 *)(puVar11 + 2) = *(undefined8 *)((long)pvVar5 + lVar4); + *(uint **)((long)pvVar5 + lVar4) = puVar11; + puVar11 = puVar12; + local_10 = puVar12; + puVar10 = *(uint **)(puVar12 + 2); + } + uVar9 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar9) break; + uVar16 = -(ulong)(uVar9 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar9 << 3; + puVar8 = (undefined8 *)(*(long *)(local_18 + 8) + uVar16); + puVar12 = *(uint **)(*(long *)(local_18 + 8) + uVar16); + local_8 = uVar9; + while (puVar12 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_0025af44; + puVar8 = puVar8 + 1; + puVar12 = (uint *)*puVar8; + } + lVar4 = (ulong)(uVar7 & *puVar11) * 8; + *(undefined8 *)(puVar11 + 2) = *(undefined8 *)((long)pvVar5 + lVar4); + *(uint **)((long)pvVar5 + lVar4) = puVar11; + local_10 = puVar12; + } +LAB_0025af44: + lVar4 = (ulong)(uVar7 & *puVar11) * 8; + *(undefined8 *)(puVar11 + 2) = *(undefined8 *)((long)pvVar5 + lVar4); + *(uint **)((long)pvVar5 + lVar4) = puVar11; + local_8 = uVar9; + } + uVar16 = (ulong)(uVar15 - 1 & uVar13); + cv::cvFree_(*(void **)(param_1 + 8)); + *(void **)(param_1 + 8) = pvVar5; + lVar4 = *(long *)(param_1 + 6); + param_1[10] = uVar15; + local_18 = *(uint **)(lVar4 + 0x60); + if (local_18 != (uint *)0x0) goto LAB_0025ad9c; +LAB_0025af84: + cvSetAdd(lVar4,local_18,&local_18); + } + puVar12 = local_18; + lVar4 = *(long *)(param_1 + 8); + uVar16 = -(uVar16 >> 0x1f) & 0xfffffff800000000 | uVar16 << 3; + uVar15 = param_1[0xc]; + uVar7 = param_1[1]; + *(undefined8 *)(local_18 + 2) = *(undefined8 *)(lVar4 + uVar16); + *local_18 = uVar13; + *(uint **)(lVar4 + uVar16) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar15),param_2,(long)(int)uVar7 << 2); + pvVar5 = (void *)((long)puVar12 + (long)(int)param_1[0xb]); + if (0 < param_4) { + memset(pvVar5,0,(long)(int)((*param_1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*param_1 & 7) << 1)) & 3))); + } +LAB_0025ae2c: + if (param_3 != (uint *)0x0) { + *param_3 = *param_1 & 0xfff; + } + return pvVar5; +} + + +================================================================== + +### FUNC 0025b0b8 (912 bytes) name=cvCreateData + +void cvCreateData(uint *param_1) + +{ + ulong uVar1; + uint uVar2; + long lVar3; + undefined8 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + code *pcVar9; + int iVar10; + char *pcVar11; + undefined4 *puVar12; + undefined8 uVar13; + uint uVar14; + ulong uVar15; + long lVar16; + undefined8 local_10; + undefined8 local_8; + + if (param_1 != (uint *)0x0) { + uVar14 = *param_1; + if ((uVar14 & 0xffff0000) == 0x42420000) { + if (-1 < (int)param_1[9]) { + uVar14 = param_1[8]; + if (-1 < (int)uVar14) { + uVar2 = param_1[1]; + if (uVar14 == 0) { + return; + } + if (param_1[9] == 0) { + return; + } + if (*(long *)(param_1 + 6) != 0) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar5 = s_Data_is_already_allocated_004618f8[0x18]; + uVar4 = s_Data_is_already_allocated_004618f8._8_8_; + uVar13 = s_Data_is_already_allocated_004618f8._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_Data_is_already_allocated_004618f8._16_8_; + pcVar11[0x18] = cVar5; + *(undefined8 *)pcVar11 = uVar13; + *(undefined8 *)(pcVar11 + 8) = uVar4; + cv::error(-2,(String *)&local_10,"void cvCreateData(CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x32e); + cv::String::deallocate((String *)&local_10); + uVar14 = param_1[8]; + } + lVar16 = (long)(int)uVar2; + if (lVar16 == 0) { + lVar16 = (long)(int)(((*param_1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*param_1 & 7) << 1)) & 3)) * param_1[9] + ); + } + uVar15 = (int)uVar14 * lVar16; + goto LAB_0025b3cc; + } + } + } + else { + if (uVar14 == 0x90) { + if (*(long *)(param_1 + 0x16) != 0) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar5 = s_Data_is_already_allocated_004618f8[0x18]; + uVar4 = s_Data_is_already_allocated_004618f8._8_8_; + uVar13 = s_Data_is_already_allocated_004618f8._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_Data_is_already_allocated_004618f8._16_8_; + pcVar11[0x18] = cVar5; + *(undefined8 *)pcVar11 = uVar13; + *(undefined8 *)(pcVar11 + 8) = uVar4; + cv::error(-2,(String *)&local_10,"void cvCreateData(CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x340); + cv::String::deallocate((String *)&local_10); + } + pcVar9 = DAT_00531f18; + if (DAT_00531f18 == (code *)0x0) { + uVar13 = cv::cvAlloc((long)(int)param_1[0x14]); + *(undefined8 *)(param_1 + 0x22) = uVar13; + *(undefined8 *)(param_1 + 0x16) = uVar13; + return; + } + uVar14 = param_1[4]; + uVar2 = param_1[10]; + if ((uVar14 - 0x20 & 0xffffffdf) == 0) { + param_1[4] = 8; + iVar10 = 4; + if (uVar14 != 0x20) { + iVar10 = 8; + } + param_1[10] = iVar10 * uVar2; + } + (*pcVar9)(param_1,0,0); + param_1[10] = uVar2; + param_1[4] = uVar14; + return; + } + if ((uVar14 & 0xffff0000) == 0x42430000) { + if (param_1[8] == 0) { + return; + } + uVar2 = uVar14; + if (*(long *)(param_1 + 6) != 0) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar5 = s_Data_is_already_allocated_004618f8[0x18]; + uVar4 = s_Data_is_already_allocated_004618f8._8_8_; + uVar13 = s_Data_is_already_allocated_004618f8._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_Data_is_already_allocated_004618f8._16_8_; + pcVar11[0x18] = cVar5; + *(undefined8 *)pcVar11 = uVar13; + *(undefined8 *)(pcVar11 + 8) = uVar4; + cv::error(-2,(String *)&local_10,"void cvCreateData(CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x361); + cv::String::deallocate((String *)&local_10); + uVar2 = *param_1; + } + uVar15 = (ulong)(int)((uVar14 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar14 & 7) << 1)) & 3)); + if ((uVar2 >> 0xe & 1) == 0) { + iVar10 = param_1[1] - 1; + if (-1 < iVar10) { + do { + lVar16 = (long)iVar10; + lVar3 = (long)iVar10; + iVar10 = iVar10 + -1; + if (uVar15 < (ulong)((long)(int)param_1[lVar3 * 2 + 8] * + (long)(int)param_1[lVar16 * 2 + 9])) { + uVar15 = (long)(int)param_1[lVar3 * 2 + 8] * (long)(int)param_1[lVar16 * 2 + 9]; + } + } while (iVar10 != -1); + } + } + else { + uVar1 = (long)(int)param_1[9]; + if (param_1[9] == 0) { + uVar1 = uVar15; + } + uVar15 = uVar1 * (long)(int)param_1[8]; + } +LAB_0025b3cc: + puVar12 = (undefined4 *)cv::cvAlloc(uVar15 + 0x14); + *(undefined4 **)(param_1 + 2) = puVar12; + *(ulong *)(param_1 + 6) = (long)puVar12 + 0x13U & 0xfffffffffffffff0; + *puVar12 = 1; + return; + } + } + } + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar8 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar7 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar6 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar13 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar11 + 0x24) = uVar8; + *(undefined8 *)pcVar11 = uVar13; + *(undefined8 *)(pcVar11 + 8) = uVar4; + *(undefined8 *)(pcVar11 + 0x10) = uVar6; + *(undefined8 *)(pcVar11 + 0x18) = uVar7; + cv::error(-5,(String *)&local_10,"void cvCreateData(CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x37a); + cv::String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 0025b498 (36 bytes) name=cvCreateMat + +undefined8 cvCreateMat(void) + +{ + undefined8 uVar1; + + uVar1 = cvCreateMatHeader(); + cvCreateData(); + return uVar1; +} + + +================================================================== + +### FUNC 0025b4bc (216 bytes) name=cvCloneMat + +undefined8 cvCloneMat(uint *param_1) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + undefined8 uVar5; + undefined8 local_10; + undefined8 local_8; + + if ((((param_1 == (uint *)0x0) || (uVar1 = *param_1, (uVar1 & 0xffff0000) != 0x42420000)) || + (uVar3 = param_1[9], (int)uVar3 < 1)) || (uVar2 = param_1[8], (int)uVar2 < 1)) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)cv::String::allocate((String *)&local_10,0x10); + uVar5 = s_Bad_CvMat_header_00461940._8_8_; + *(undefined8 *)pcVar4 = s_Bad_CvMat_header_00461940._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar5; + cv::error(-5,(String *)&local_10,"CvMat* cvCloneMat(const CvMat*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xd3); + cv::String::deallocate((String *)&local_10); + uVar2 = param_1[8]; + uVar3 = param_1[9]; + uVar1 = *param_1; + } + uVar5 = cvCreateMatHeader(uVar2,uVar3,uVar1); + if (*(long *)(param_1 + 6) != 0) { + cvCreateData(); + cvCopy(param_1,uVar5,0); + } + return uVar5; +} + + +================================================================== + +### FUNC 0025b5a8 (36 bytes) name=cvCreateMatND + +undefined8 cvCreateMatND(void) + +{ + undefined8 uVar1; + + uVar1 = cvCreateMatNDHeader(); + cvCreateData(); + return uVar1; +} + + +================================================================== + +### FUNC 0025b5cc (1200 bytes) name=cvCloneMatND + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +cv * cvCloneMatND(cv *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + cv *this; + char *pcVar9; + int iVar10; + int iVar11; + AutoBuffer *in_x5; + long lVar12; + undefined4 uVar13; + undefined4 uVar14; + undefined4 uVar15; + undefined4 uVar16; + undefined4 uVar17; + undefined4 uVar18; + undefined4 uVar19; + undefined4 uVar20; + AutoBuffer local_180; + undefined1 uStack_17f; + undefined1 uStack_17e; + undefined1 uStack_17d; + undefined1 uStack_17c; + undefined1 uStack_17b; + undefined1 uStack_17a; + undefined1 uStack_179; + undefined1 uStack_178; + undefined1 uStack_177; + undefined1 uStack_176; + undefined1 uStack_175; + undefined1 uStack_174; + undefined1 uStack_173; + undefined1 uStack_172; + undefined1 uStack_171; + undefined1 uStack_170; + undefined1 uStack_16f; + undefined1 uStack_16e; + undefined1 uStack_16d; + undefined1 uStack_16c; + undefined1 uStack_16b; + undefined1 uStack_16a; + undefined1 uStack_169; + undefined1 uStack_168; + undefined1 uStack_167; + undefined1 uStack_166; + undefined1 uStack_165; + undefined1 uStack_164; + undefined1 uStack_163; + undefined1 uStack_162; + undefined1 uStack_161; + undefined8 local_158; + Mat *local_150; + undefined4 local_148; + undefined4 local_144; + Mat aMStack_140 [4]; + int local_13c; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + long local_108; + undefined4 *local_100; + undefined1 *local_f8; + undefined1 auStack_f0 [16]; + Mat aMStack_e0 [4]; + int local_dc; + long local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + long local_a8; + undefined4 *local_a0; + undefined1 *local_98; + undefined1 auStack_90 [16]; + undefined8 local_80; + undefined8 uStack_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + + if ((param_1 == (cv *)0x0) || ((*(uint *)param_1 & 0xffff0000) != 0x42430000)) { + local_80 = 0; + uStack_78 = 0; + in_x5 = (AutoBuffer *)cv::String::allocate((String *)&local_80,0x12); + uVar7 = DAT_00461960; + uVar6 = DAT_00461958; + *(undefined2 *)(in_x5 + 0x10) = _LAB_00461968; + *(undefined8 *)in_x5 = uVar6; + *(undefined8 *)(in_x5 + 8) = uVar7; + cv::error(-5,(String *)&local_80,"CvMatND* cvCloneMatND(const CvMatND*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x12d); + cv::String::deallocate((String *)&local_80); + } + iVar11 = *(int *)(param_1 + 4); + if (0x20 < iVar11) { + local_80 = 0; + uStack_78 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_80,0x17); + cVar4 = s_src_>dims_<__CV_MAX_DIM_00461970[0x16]; + uVar8 = s_src_>dims_<__CV_MAX_DIM_00461970._20_2_; + uVar7 = s_src_>dims_<__CV_MAX_DIM_00461970._8_8_; + uVar6 = s_src_>dims_<__CV_MAX_DIM_00461970._0_8_; + in_x5 = (AutoBuffer *)(ulong)(byte)s_src_>dims_<__CV_MAX_DIM_00461970[0x16]; + *(undefined4 *)(pcVar9 + 0x10) = s_src_>dims_<__CV_MAX_DIM_00461970._16_4_; + *(undefined2 *)(pcVar9 + 0x14) = uVar8; + pcVar9[0x16] = cVar4; + *(undefined8 *)pcVar9 = uVar6; + *(undefined8 *)(pcVar9 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_80,"CvMatND* cvCloneMatND(const CvMatND*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x12f); + cv::String::deallocate((String *)&local_80); + iVar11 = *(int *)(param_1 + 4); + } + if (0 < iVar11) { + iVar1 = (iVar11 - 5U >> 2) + 1; + iVar10 = iVar1 * 4; + if (iVar11 - 1U < 4) { + iVar10 = 0; + } + else { + uVar13 = *(undefined4 *)(param_1 + 0x20); + uVar17 = *(undefined4 *)(param_1 + 0x24); + uVar14 = *(undefined4 *)(param_1 + 0x28); + uVar18 = *(undefined4 *)(param_1 + 0x2c); + uVar15 = *(undefined4 *)(param_1 + 0x30); + uVar19 = *(undefined4 *)(param_1 + 0x34); + uVar16 = *(undefined4 *)(param_1 + 0x38); + uVar20 = *(undefined4 *)(param_1 + 0x3c); + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_78 = CONCAT17(uStack_171, + CONCAT16(uStack_172,CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15)))); + local_80 = CONCAT17(uStack_179, + CONCAT16(uStack_17a,CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)))); + if (iVar1 != 1) { + uVar13 = *(undefined4 *)(param_1 + 0x40); + uVar17 = *(undefined4 *)(param_1 + 0x44); + uVar14 = *(undefined4 *)(param_1 + 0x48); + uVar18 = *(undefined4 *)(param_1 + 0x4c); + uVar15 = *(undefined4 *)(param_1 + 0x50); + uVar19 = *(undefined4 *)(param_1 + 0x54); + uVar16 = *(undefined4 *)(param_1 + 0x58); + uVar20 = *(undefined4 *)(param_1 + 0x5c); + in_x5 = &local_180; + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_68 = CONCAT17(uStack_171, + CONCAT16(uStack_172,CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15)))); + local_70 = CONCAT17(uStack_179, + CONCAT16(uStack_17a,CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)))); + if (iVar1 != 2) { + uVar13 = *(undefined4 *)(param_1 + 0x60); + uVar17 = *(undefined4 *)(param_1 + 100); + uVar14 = *(undefined4 *)(param_1 + 0x68); + uVar18 = *(undefined4 *)(param_1 + 0x6c); + uVar15 = *(undefined4 *)(param_1 + 0x70); + uVar19 = *(undefined4 *)(param_1 + 0x74); + uVar16 = *(undefined4 *)(param_1 + 0x78); + uVar20 = *(undefined4 *)(param_1 + 0x7c); + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_58 = CONCAT17(uStack_171, + CONCAT16(uStack_172,CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15))) + ); + local_60 = CONCAT17(uStack_179, + CONCAT16(uStack_17a,CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)))) + ; + if (iVar1 != 3) { + uVar13 = *(undefined4 *)(param_1 + 0x80); + uVar17 = *(undefined4 *)(param_1 + 0x84); + uVar14 = *(undefined4 *)(param_1 + 0x88); + uVar18 = *(undefined4 *)(param_1 + 0x8c); + uVar15 = *(undefined4 *)(param_1 + 0x90); + uVar19 = *(undefined4 *)(param_1 + 0x94); + uVar16 = *(undefined4 *)(param_1 + 0x98); + uVar20 = *(undefined4 *)(param_1 + 0x9c); + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_48 = CONCAT17(uStack_171, + CONCAT16(uStack_172, + CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15)))); + local_50 = CONCAT17(uStack_179, + CONCAT16(uStack_17a,CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)) + )); + if (iVar1 != 4) { + uVar13 = *(undefined4 *)(param_1 + 0xa0); + uVar17 = *(undefined4 *)(param_1 + 0xa4); + uVar14 = *(undefined4 *)(param_1 + 0xa8); + uVar18 = *(undefined4 *)(param_1 + 0xac); + uVar15 = *(undefined4 *)(param_1 + 0xb0); + uVar19 = *(undefined4 *)(param_1 + 0xb4); + uVar16 = *(undefined4 *)(param_1 + 0xb8); + uVar20 = *(undefined4 *)(param_1 + 0xbc); + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_38 = CONCAT17(uStack_171, + CONCAT16(uStack_172, + CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15)))); + local_40 = CONCAT17(uStack_179, + CONCAT16(uStack_17a, + CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)))); + if (iVar1 != 5) { + uVar13 = *(undefined4 *)(param_1 + 0xc0); + uVar17 = *(undefined4 *)(param_1 + 0xc4); + uVar14 = *(undefined4 *)(param_1 + 200); + uVar18 = *(undefined4 *)(param_1 + 0xcc); + uVar15 = *(undefined4 *)(param_1 + 0xd0); + uVar19 = *(undefined4 *)(param_1 + 0xd4); + uVar16 = *(undefined4 *)(param_1 + 0xd8); + uVar20 = *(undefined4 *)(param_1 + 0xdc); + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_28 = CONCAT17(uStack_171, + CONCAT16(uStack_172, + CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15)))); + local_30 = CONCAT17(uStack_179, + CONCAT16(uStack_17a, + CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)))); + if (iVar1 != 6) { + uVar13 = *(undefined4 *)(param_1 + 0xe0); + uVar17 = *(undefined4 *)(param_1 + 0xe4); + uVar14 = *(undefined4 *)(param_1 + 0xe8); + uVar18 = *(undefined4 *)(param_1 + 0xec); + uVar15 = *(undefined4 *)(param_1 + 0xf0); + uVar19 = *(undefined4 *)(param_1 + 0xf4); + uVar16 = *(undefined4 *)(param_1 + 0xf8); + uVar20 = *(undefined4 *)(param_1 + 0xfc); + local_180 = SUB41(uVar13,0); + uStack_17f = (undefined1)((uint)uVar13 >> 8); + uStack_17e = (undefined1)((uint)uVar13 >> 0x10); + uStack_17d = (undefined1)((uint)uVar13 >> 0x18); + uStack_17c = (undefined1)uVar14; + uStack_17b = (undefined1)((uint)uVar14 >> 8); + uStack_17a = (undefined1)((uint)uVar14 >> 0x10); + uStack_179 = (undefined1)((uint)uVar14 >> 0x18); + uStack_178 = (undefined1)uVar15; + uStack_177 = (undefined1)((uint)uVar15 >> 8); + uStack_176 = (undefined1)((uint)uVar15 >> 0x10); + uStack_175 = (undefined1)((uint)uVar15 >> 0x18); + uStack_174 = (undefined1)uVar16; + uStack_173 = (undefined1)((uint)uVar16 >> 8); + uStack_172 = (undefined1)((uint)uVar16 >> 0x10); + uStack_171 = (undefined1)((uint)uVar16 >> 0x18); + uStack_170 = (undefined1)uVar17; + uStack_16f = (undefined1)((uint)uVar17 >> 8); + uStack_16e = (undefined1)((uint)uVar17 >> 0x10); + uStack_16d = (undefined1)((uint)uVar17 >> 0x18); + uStack_16c = (undefined1)uVar18; + uStack_16b = (undefined1)((uint)uVar18 >> 8); + uStack_16a = (undefined1)((uint)uVar18 >> 0x10); + uStack_169 = (undefined1)((uint)uVar18 >> 0x18); + uStack_168 = (undefined1)uVar19; + uStack_167 = (undefined1)((uint)uVar19 >> 8); + uStack_166 = (undefined1)((uint)uVar19 >> 0x10); + uStack_165 = (undefined1)((uint)uVar19 >> 0x18); + uStack_164 = (undefined1)uVar20; + uStack_163 = (undefined1)((uint)uVar20 >> 8); + uStack_162 = (undefined1)((uint)uVar20 >> 0x10); + uStack_161 = (undefined1)((uint)uVar20 >> 0x18); + uStack_18 = CONCAT17(uStack_171, + CONCAT16(uStack_172, + CONCAT15(uStack_173,CONCAT14(uStack_174,uVar15)))); + local_20 = CONCAT17(uStack_179, + CONCAT16(uStack_17a, + CONCAT15(uStack_17b,CONCAT14(uStack_17c,uVar13)))); + } + } + } + } + } + } + if (iVar11 == iVar10) goto LAB_0025b804; + } + iVar1 = iVar10 + 1; + *(undefined4 *)((String *)&local_80 + (long)iVar10 * 4) = + *(undefined4 *)(param_1 + (long)iVar10 * 8 + 0x20); + if (iVar1 < iVar11) { + iVar2 = iVar10 + 2; + *(undefined4 *)((String *)&local_80 + (long)iVar1 * 4) = + *(undefined4 *)(param_1 + (long)iVar1 * 8 + 0x20); + if (iVar2 < iVar11) { + iVar1 = iVar10 + 3; + *(undefined4 *)((String *)&local_80 + (long)iVar2 * 4) = + *(undefined4 *)(param_1 + (long)iVar2 * 8 + 0x20); + if (iVar1 < iVar11) { + iVar2 = iVar10 + 4; + *(undefined4 *)((String *)&local_80 + (long)iVar1 * 4) = + *(undefined4 *)(param_1 + (long)iVar1 * 8 + 0x20); + if (iVar2 < iVar11) { + iVar1 = iVar10 + 5; + *(undefined4 *)((String *)&local_80 + (long)iVar2 * 4) = + *(undefined4 *)(param_1 + (long)iVar2 * 8 + 0x20); + if (iVar1 < iVar11) { + iVar10 = iVar10 + 6; + *(undefined4 *)((String *)&local_80 + (long)iVar1 * 4) = + *(undefined4 *)(param_1 + (long)iVar1 * 8 + 0x20); + if (iVar10 < iVar11) { + *(undefined4 *)((String *)&local_80 + (long)iVar10 * 4) = + *(undefined4 *)(param_1 + (long)iVar10 * 8 + 0x20); + } + } + } + } + } + } + } +LAB_0025b804: + this = (cv *)cvCreateMatNDHeader(iVar11,(String *)&local_80,*(undefined4 *)param_1); + if (*(long *)(param_1 + 0x18) != 0) { + cvCreateData(); + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(this,(void *)0x0,true,false,0,in_x5); + lVar12 = *(long *)(this + 0x18); + local_148 = 0; + local_144 = 0; + local_158 = CONCAT44(local_158._4_4_,0x2010000); + local_150 = aMStack_e0; + cv::Mat::copyTo(aMStack_140,(_OutputArray *)&local_158); + if (local_d0 != lVar12) { + local_158 = 0; + local_150 = (Mat *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_158,0x12); + uVar7 = s__dst_data____data0_00461988._8_8_; + uVar6 = s__dst_data____data0_00461988._0_8_; + *(undefined2 *)(pcVar9 + 0x10) = s__dst_data____data0_00461988._16_2_; + *(undefined8 *)pcVar9 = uVar6; + *(undefined8 *)(pcVar9 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_158,"CvMatND* cvCloneMatND(const CvMatND*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x13e); + cv::String::deallocate((String *)&local_158); + } + if (local_a8 != 0) { + piVar3 = (int *)(local_a8 + 0x14); + do { + iVar11 = *piVar3; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar5) { + *piVar3 = iVar11 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate(aMStack_e0); + } + } + local_a8 = 0; + local_d0 = 0; + local_b8 = 0; + local_c0 = 0; + local_c8 = 0; + if (0 < local_dc) { + iVar11 = 0; + do { + *local_a0 = 0; + iVar11 = iVar11 + 1; + local_a0 = local_a0 + 1; + } while (iVar11 < local_dc); + } + if (local_98 != auStack_90) { + cv::fastFree(local_98); + } + if (local_108 != 0) { + piVar3 = (int *)(local_108 + 0x14); + do { + iVar11 = *piVar3; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar5) { + *piVar3 = iVar11 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate(aMStack_140); + } + } + local_108 = 0; + local_130 = 0; + local_118 = 0; + local_120 = 0; + local_128 = 0; + if (0 < local_13c) { + iVar11 = 0; + do { + *local_100 = 0; + iVar11 = iVar11 + 1; + local_100 = local_100 + 1; + } while (iVar11 < local_13c); + } + if (local_f8 != auStack_f0) { + cv::fastFree(local_f8); + } + } + return this; +} + + +================================================================== + +### FUNC 0025bb08 (312 bytes) name=cvReleaseData + +void cvReleaseData(uint *param_1) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + char *pcVar8; + int *piVar9; + void *pvVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 != (uint *)0x0) { + uVar1 = *param_1 & 0xffff0000; + if (uVar1 == 0x42420000) { + if ((0 < (int)param_1[9]) && (0 < (int)param_1[8])) goto LAB_0025bbd8; + } + else { + if (uVar1 == 0x42430000) { +LAB_0025bbd8: + if (*(long *)(param_1 + 6) == 0) { + return; + } + piVar9 = *(int **)(param_1 + 2); + param_1[6] = 0; + param_1[7] = 0; + if ((piVar9 != (int *)0x0) && (iVar2 = *piVar9, *piVar9 = iVar2 + -1, iVar2 + -1 == 0)) { + cv::cvFree_(piVar9); + } + param_1[2] = 0; + param_1[3] = 0; + return; + } + if (*param_1 == 0x90) { + if (DAT_00531f20 == (code *)0x0) { + pvVar10 = *(void **)(param_1 + 0x22); + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + cv::cvFree_(pvVar10); + return; + } + (*DAT_00531f20)(param_1,2); + return; + } + } + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar7 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar6 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar8 + 0x24) = uVar7; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + cv::error(-5,(String *)&local_10,"void cvReleaseData(CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x3eb); + cv::String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 0025bc54 (1176 bytes) name=cvSetData + +void cvSetData(uint *param_1,long param_2,uint param_3) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + undefined8 uVar7; + undefined8 uVar8; + char cVar9; + uint uVar10; + uint uVar11; + char *pcVar12; + ulong uVar13; + uint uVar14; + uint uVar15; + long lVar16; + int iVar17; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (uint *)0x0) goto LAB_0025bca0; + uVar10 = *param_1; + uVar13 = (ulong)uVar10; + if ((uVar10 & 0xffff0000) == 0x42420000) { + uVar11 = param_1[9]; + uVar10 = 0x42420000; + if ((0 < (int)uVar11) && (0 < (int)param_1[8])) goto LAB_0025bd3c; +LAB_0025bf08: + if ((0 < (int)uVar11) && (uVar14 = param_1[8], 0 < (int)uVar14)) { + uVar10 = (uint)uVar13 & 0xfff; + uVar11 = uVar11 * (((uint)(uVar13 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar13 & 7) << 1)) & 3)); + if ((param_3 == 0) || (param_3 == 0x7fffffff)) { + param_1[1] = uVar11; + *(long *)(param_1 + 6) = param_2; + uVar15 = 0x4000; + param_3 = uVar11; + } + else { + if (((int)param_3 < (int)uVar11) && (param_2 != 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd,(String *)&local_10,"void cvSetData(CvArr*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x392); + cv::String::deallocate((String *)&local_10); + uVar14 = param_1[8]; + } + param_1[1] = param_3; + *(long *)(param_1 + 6) = param_2; + if (uVar14 == 1) { + *param_1 = uVar10 | 0x42424000; + return; + } + uVar15 = 0; + if (uVar11 == param_3) { + uVar15 = 0x4000; + param_3 = uVar11; + } + } + if (0x7fffffff < (long)(int)param_3 * (long)(int)uVar14) { + uVar15 = 0; + } + *param_1 = uVar10 | 0x42420000 | uVar15; + return; + } + } + else { + if ((uVar10 & 0xffff0000) != 0x42430000) { + if (uVar10 != 0x90) goto LAB_0025bca0; + goto LAB_0025bebc; + } +LAB_0025bd3c: + cvReleaseData(param_1); + uVar11 = *param_1; + uVar13 = (ulong)uVar11; + uVar10 = uVar11 & 0xffff0000; + if (uVar10 == 0x42420000) { + uVar11 = param_1[9]; + goto LAB_0025bf08; + } + if (uVar11 == 0x90) { +LAB_0025bebc: + iVar17 = ((int)(uint)(byte)param_1[4] >> 3) * param_1[2]; + uVar10 = param_1[0xb]; + uVar11 = iVar17 * param_1[10]; + if ((param_3 == 0x7fffffff) || ((int)uVar10 < 2)) { + param_1[0x18] = uVar11; + } + else { + if (((int)param_3 < (int)uVar11) && (param_2 != 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd,(String *)&local_10,"void cvSetData(CvArr*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x3a7); + cv::String::deallocate((String *)&local_10); + uVar10 = param_1[0xb]; + } + param_1[0x18] = param_3; + uVar11 = param_3; + } + param_1[0x14] = uVar11 * uVar10; + *(long *)(param_1 + 0x22) = param_2; + *(long *)(param_1 + 0x16) = param_2; + if ((((param_3 | (uint)param_2) & 7) == 0) && + (param_3 == (iVar17 * param_1[10] + 7 & 0xfffffff8))) { + param_1[9] = 8; + return; + } + param_1[9] = 4; + return; + } + } + if (uVar10 == 0x42430000) { + if (param_3 != 0x7fffffff) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x3b); + cVar9 = s_For_multidimensional_array_only_C_004619a0[0x3a]; + uVar6 = s_For_multidimensional_array_only_C_004619a0._56_2_; + uVar8 = s_For_multidimensional_array_only_C_004619a0._40_8_; + uVar7 = s_For_multidimensional_array_only_C_004619a0._32_8_; + uVar5 = s_For_multidimensional_array_only_C_004619a0._24_8_; + uVar4 = s_For_multidimensional_array_only_C_004619a0._16_8_; + uVar3 = s_For_multidimensional_array_only_C_004619a0._8_8_; + uVar2 = s_For_multidimensional_array_only_C_004619a0._0_8_; + *(undefined8 *)(pcVar12 + 0x30) = s_For_multidimensional_array_only_C_004619a0._48_8_; + *(undefined2 *)(pcVar12 + 0x38) = uVar6; + pcVar12[0x3a] = cVar9; + *(undefined8 *)pcVar12 = uVar2; + *(undefined8 *)(pcVar12 + 8) = uVar3; + *(undefined8 *)(pcVar12 + 0x10) = uVar4; + *(undefined8 *)(pcVar12 + 0x18) = uVar5; + *(undefined8 *)(pcVar12 + 0x20) = uVar7; + *(undefined8 *)(pcVar12 + 0x28) = uVar8; + cv::error(-0xd,(String *)&local_10,"void cvSetData(CvArr*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x3c0); + cv::String::deallocate((String *)&local_10); + uVar13 = (ulong)*param_1; + } + *(long *)(param_1 + 6) = param_2; + iVar17 = param_1[1] - 1; + lVar16 = (long)(int)(((uint)(uVar13 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar13 & 7) << 1)) & 3)); + if (iVar17 < 0) { + return; + } + do { + if (0x7fffffff < lVar16) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar3 = s_The_array_is_too_big_00461830._8_8_; + uVar2 = s_The_array_is_too_big_00461830._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s_The_array_is_too_big_00461830._16_4_; + *(undefined8 *)pcVar12 = uVar2; + *(undefined8 *)(pcVar12 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10,"void cvSetData(CvArr*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x3c8); + cv::String::deallocate((String *)&local_10); + } + iVar1 = iVar17 + -1; + uVar10 = param_1[(long)iVar17 * 2 + 8]; + param_1[(long)iVar17 * 2 + 9] = (uint)lVar16; + lVar16 = lVar16 * (int)uVar10; + iVar17 = iVar1; + } while (iVar1 != -1); + return; + } +LAB_0025bca0: + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar6 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar2 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar12 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar12 + 0x24) = uVar6; + *(undefined8 *)pcVar12 = uVar2; + *(undefined8 *)(pcVar12 + 8) = uVar3; + *(undefined8 *)(pcVar12 + 0x10) = uVar4; + *(undefined8 *)(pcVar12 + 0x18) = uVar5; + cv::error(-5,(String *)&local_10,"void cvSetData(CvArr*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x3ce); + cv::String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 0025c150 (296 bytes) name=cvGetElemType + +uint cvGetElemType(uint *param_1) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char *pcVar7; + int iVar8; + undefined8 local_10; + undefined8 local_8; + + if (param_1 != (uint *)0x0) { + uVar1 = *param_1; + if ((uVar1 & 0xffff0000) == 0x42420000) { + if ((0 < (int)param_1[9]) && (0 < (int)param_1[8])) goto LAB_0025c1d8; + } + else { + if (((uVar1 & 0xffff0000) + 0xbdbd0000 & 0xfffe0000) == 0) { +LAB_0025c1d8: + return uVar1 & 0xfff; + } + if ((uVar1 == 0x90) && (*(long *)(param_1 + 0x16) != 0)) { + iVar8 = 0x14; + if (-1 < (int)param_1[4]) { + iVar8 = 0; + } + return (0x43160520 >> (iVar8 + ((param_1[4] & 0xf0) >> 2) & 0x1f) & 7U) + + (param_1[2] - 1) * 8; + } + } + } + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar6 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar2 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar7 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar7 + 0x24) = uVar6; + *(undefined8 *)pcVar7 = uVar2; + *(undefined8 *)(pcVar7 + 8) = uVar3; + *(undefined8 *)(pcVar7 + 0x10) = uVar4; + *(undefined8 *)(pcVar7 + 0x18) = uVar5; + cv::error(-5,(String *)&local_10,"int cvGetElemType(const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x448); + cv::String::deallocate((String *)&local_10); + return 0xffffffff; +} + + +================================================================== + +### FUNC 0025c28c (692 bytes) name=cvGetDims + +ulong cvGetDims(uint *param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + uint *puVar9; + uint uVar10; + char *pcVar11; + uint *puVar12; + long lVar13; + uint *puVar14; + ulong uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + undefined8 local_10; + undefined8 local_8; + + if (param_1 != (uint *)0x0) { + uVar2 = *param_1 & 0xffff0000; + if (uVar2 == 0x42420000) { + if ((0 < (int)param_1[9]) && (0 < (int)param_1[8])) { + if (param_2 == (uint *)0x0) { + return 2; + } + *param_2 = param_1[8]; + param_2[1] = param_1[9]; + return 2; + } + } + else { + if ((*param_1 == 0x90) && (*(long *)(param_1 + 0x16) != 0)) { + if (param_2 == (uint *)0x0) { + return 2; + } + *param_2 = param_1[0xb]; + param_2[1] = param_1[10]; + return 2; + } + if (uVar2 == 0x42430000) { + uVar2 = param_1[1]; + uVar15 = (ulong)uVar2; + if (param_2 == (uint *)0x0) { + return uVar15; + } + if ((int)uVar2 < 1) { + return uVar15; + } + puVar12 = param_1 + 8; + if ((puVar12 < param_2 + (int)uVar2 && param_2 < param_1 + ((long)(int)uVar2 + 4) * 2) || + (uVar2 < 9)) { + do { + puVar14 = puVar12 + 2; + *param_2 = *puVar12; + param_2 = param_2 + 1; + puVar12 = puVar14; + } while (puVar14 != param_1 + ((ulong)(uVar2 - 1) + 5) * 2); + return uVar15; + } + uVar10 = 0; + uVar1 = (uVar2 - 5 >> 2) + 1; + uVar3 = uVar1 * 4; + puVar14 = param_2; + do { + uVar16 = *puVar12; + uVar17 = puVar12[2]; + puVar9 = puVar12 + 4; + uVar18 = puVar12[6]; + puVar12 = puVar12 + 8; + uVar10 = uVar10 + 1; + *(ulong *)(puVar14 + 2) = + CONCAT17((char)(uVar18 >> 0x18), + CONCAT16((char)(uVar18 >> 0x10), + CONCAT15((char)(uVar18 >> 8),CONCAT14((char)uVar18,*puVar9)))); + *(ulong *)puVar14 = + CONCAT17((char)(uVar17 >> 0x18), + CONCAT16((char)(uVar17 >> 0x10), + CONCAT15((char)(uVar17 >> 8),CONCAT14((char)uVar17,uVar16)))); + puVar14 = puVar14 + 4; + } while (uVar10 < uVar1); + if (uVar2 == uVar3) { + return uVar15; + } + lVar13 = (long)(int)uVar3; + param_2[lVar13] = param_1[lVar13 * 2 + 8]; + if ((int)uVar2 <= (int)(uVar3 + 1)) { + return uVar15; + } + param_2[lVar13 + 1] = param_1[(long)(int)(uVar3 + 1) * 2 + 8]; + if ((int)uVar2 <= (int)(uVar3 + 2)) { + return uVar15; + } + param_2[lVar13 + 2] = param_1[(long)(int)(uVar3 + 2) * 2 + 8]; + if ((int)uVar2 <= (int)(uVar3 + 3)) { + return uVar15; + } + param_2[lVar13 + 3] = param_1[(long)(int)(uVar3 + 3) * 2 + 8]; + if ((int)(uVar3 + 4) < (int)uVar2) { + param_2[lVar13 + 4] = param_1[(long)(int)(uVar3 + 4) * 2 + 8]; + if ((int)uVar2 <= (int)(uVar3 + 5)) { + return uVar15; + } + param_2[lVar13 + 5] = param_1[(long)(int)(uVar3 + 5) * 2 + 8]; + if ((int)(uVar3 + 6) < (int)uVar2) { + param_2[lVar13 + 6] = param_1[(long)(int)(uVar3 + 6) * 2 + 8]; + return uVar15; + } + return uVar15; + } + return uVar15; + } + if (uVar2 == 0x42440000) { + uVar15 = (ulong)param_1[1]; + if (param_2 != (uint *)0x0) { + memcpy(param_2,param_1 + 0xd, + -(ulong)(param_1[1] >> 0x1f) & 0xfffffffc00000000 | uVar15 << 2); + return uVar15; + } + return uVar15; + } + } + } + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar8 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar7 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar6 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar11 + 0x24) = uVar8; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar6; + *(undefined8 *)(pcVar11 + 0x18) = uVar7; + cv::error(-5,(String *)&local_10,"int cvGetDims(const CvArr*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x47e); + cv::String::deallocate((String *)&local_10); + return 0xffffffff; +} + + +================================================================== + +### FUNC 0025c554 (792 bytes) name=cvGetDimSize + +uint cvGetDimSize(uint *param_1,uint param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + char cVar6; + uint uVar7; + char *pcVar8; + undefined8 local_10; + undefined8 local_8; + + if (param_1 != (uint *)0x0) { + uVar7 = *param_1 & 0xffff0000; + if (uVar7 == 0x42420000) { + if (((0 < (int)param_1[9]) && (0 < (int)param_1[8])) && (*(long *)(param_1 + 6) != 0)) { + if (param_2 == 0) { + return param_1[8]; + } + if (param_2 == 1) { + return param_1[9]; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar6 = s_bad_dimension_index_004619e0[0x12]; + uVar2 = s_bad_dimension_index_004619e0._8_8_; + uVar1 = s_bad_dimension_index_004619e0._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_bad_dimension_index_004619e0._16_2_; + pcVar8[0x12] = cVar6; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10,"int cvGetDimSize(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x497); + goto LAB_0025c700; + } + } + else { + if ((*param_1 == 0x90) && (*(long *)(param_1 + 0x16) != 0)) { + if (param_2 == 0) { + if (*(long *)(param_1 + 0xc) == 0) { + uVar7 = param_1[0xb]; + } + else { + uVar7 = *(uint *)(*(long *)(param_1 + 0xc) + 0x10); + } + } + else { + if (param_2 != 1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar6 = s_bad_dimension_index_004619e0[0x12]; + uVar2 = s_bad_dimension_index_004619e0._8_8_; + uVar1 = s_bad_dimension_index_004619e0._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_bad_dimension_index_004619e0._16_2_; + pcVar8[0x12] = cVar6; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10,"int cvGetDimSize(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4a7); + goto LAB_0025c700; + } + if (*(long *)(param_1 + 0xc) == 0) { + uVar7 = param_1[10]; + } + else { + uVar7 = *(uint *)(*(long *)(param_1 + 0xc) + 0xc); + } + } + return uVar7; + } + if (uVar7 == 0x42430000) { + if (param_1[1] <= param_2) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar6 = s_bad_dimension_index_004619e0[0x12]; + uVar2 = s_bad_dimension_index_004619e0._8_8_; + uVar1 = s_bad_dimension_index_004619e0._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_bad_dimension_index_004619e0._16_2_; + pcVar8[0x12] = cVar6; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10,"int cvGetDimSize(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4af); + cv::String::deallocate((String *)&local_10); + } + return param_1[(long)(int)param_2 * 2 + 8]; + } + if (uVar7 == 0x42440000) { + if (param_1[1] <= param_2) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar6 = s_bad_dimension_index_004619e0[0x12]; + uVar2 = s_bad_dimension_index_004619e0._8_8_; + uVar1 = s_bad_dimension_index_004619e0._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_bad_dimension_index_004619e0._16_2_; + pcVar8[0x12] = cVar6; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10,"int cvGetDimSize(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4b8); + cv::String::deallocate((String *)&local_10); + } + return param_1[(long)(int)param_2 + 0xd]; + } + } + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar5 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar2 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar1 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar8 + 0x24) = uVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar3; + *(undefined8 *)(pcVar8 + 0x18) = uVar4; + cv::error(-5,(String *)&local_10,"int cvGetDimSize(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4bd); +LAB_0025c700: + cv::String::deallocate((String *)&local_10); + return 0xffffffff; +} + + +================================================================== + +### FUNC 0025c8d0 (280 bytes) name=cvGetSize + +ulong cvGetSize(uint *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + char *pcVar5; + ulong uVar6; + ulong uVar7; + undefined8 local_10; + undefined8 local_8; + + if (param_1 != (uint *)0x0) { + if ((*param_1 & 0xffff0000) == 0x42420000) { + if ((-1 < (int)param_1[9]) && (-1 < (int)param_1[8])) { + return CONCAT44(param_1[8],param_1[9]); + } + } + else if (*param_1 == 0x90) { + if (*(long *)(param_1 + 0xc) != 0) { + return *(ulong *)(*(long *)(param_1 + 0xc) + 0xc); + } + uVar7 = (ulong)param_1[10]; + uVar6 = (ulong)param_1[0xb]; + goto LAB_0025c968; + } + } + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x21); + uVar4 = s_Array_should_be_CvMat_or_IplImag_004619f8._24_8_; + uVar3 = s_Array_should_be_CvMat_or_IplImag_004619f8._16_8_; + uVar2 = s_Array_should_be_CvMat_or_IplImag_004619f8._8_8_; + uVar1 = s_Array_should_be_CvMat_or_IplImag_004619f8._0_8_; + pcVar5[0x20] = s_Array_should_be_CvMat_or_IplImag_004619f8[0x20]; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + *(undefined8 *)(pcVar5 + 0x10) = uVar3; + *(undefined8 *)(pcVar5 + 0x18) = uVar4; + cv::error(-5,(String *)&local_10,"CvSize cvGetSize(const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4e0); + cv::String::deallocate((String *)&local_10); + uVar6 = 0; + uVar7 = 0; +LAB_0025c968: + return uVar7 | uVar6 << 0x20; +} + + +================================================================== + +### FUNC 0025c9fc (952 bytes) name=cvScalarToRawData + +void cvScalarToRawData(long param_1,void *param_2,ulong param_3,int param_4) + +{ + int iVar1; + uint uVar2; + undefined2 *puVar3; + undefined1 *puVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + char cVar9; + uint uVar10; + int iVar11; + char *pcVar12; + float *pfVar13; + undefined8 *puVar14; + ulong uVar15; + long lVar16; + undefined1 uVar17; + undefined2 uVar18; + uint uVar19; + ulong uVar20; + void *__dest; + undefined4 *puVar21; + undefined8 local_10; + undefined8 local_8; + + uVar20 = param_3 >> 3 & 0x1ff; + uVar19 = (uint)uVar20; + iVar1 = uVar19 + 1; + uVar2 = (uint)param_3 & 7; + if (3 < uVar19) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x2b); + cVar9 = s_The_number_of_channels_must_be_1_00461a20[0x2a]; + uVar18 = s_The_number_of_channels_must_be_1_00461a20._40_2_; + uVar8 = s_The_number_of_channels_must_be_1_00461a20._24_8_; + uVar7 = s_The_number_of_channels_must_be_1_00461a20._16_8_; + uVar6 = s_The_number_of_channels_must_be_1_00461a20._8_8_; + uVar5 = s_The_number_of_channels_must_be_1_00461a20._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_The_number_of_channels_must_be_1_00461a20._32_8_; + *(undefined2 *)(pcVar12 + 0x28) = uVar18; + pcVar12[0x2a] = cVar9; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + cv::error(-0xd3,(String *)&local_10,"void cvScalarToRawData(const CvScalar*, void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x5bc); + cv::String::deallocate((String *)&local_10); + } + switch(uVar2) { + case 0: + uVar15 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + uVar10 = (uint)uVar15; + puVar4 = (undefined1 *)((long)param_2 + (long)(int)uVar19); + while( true ) { + if (0xff < uVar10) { + uVar15 = (ulong)-(uint)(0 < (int)uVar15); + } + uVar19 = (int)uVar20 - 1; + uVar20 = (ulong)uVar19; + *puVar4 = (char)uVar15; + if (uVar19 == 0xffffffff) break; + uVar15 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + uVar10 = (uint)uVar15; + puVar4 = puVar4 + -1; + } + break; + case 1: + lVar16 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + iVar11 = (int)lVar16; + uVar17 = (undefined1)lVar16; + puVar4 = (undefined1 *)((long)param_2 + (long)(int)uVar19); + while( true ) { + if ((0xff < iVar11 + 0x80U) && (uVar17 = 0x7f, (int)lVar16 < 1)) { + uVar17 = 0x80; + } + uVar19 = (int)uVar20 - 1; + uVar20 = (ulong)uVar19; + *puVar4 = uVar17; + if (uVar19 == 0xffffffff) break; + lVar16 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + iVar11 = (int)lVar16; + uVar17 = (undefined1)lVar16; + puVar4 = puVar4 + -1; + } + break; + case 2: + uVar15 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + uVar10 = (uint)uVar15; + puVar3 = (undefined2 *)((long)param_2 + (long)(int)uVar19 * 2); + while( true ) { + if (0xffff < uVar10) { + uVar15 = (ulong)-(uint)(0 < (int)uVar15); + } + uVar19 = (int)uVar20 - 1; + uVar20 = (ulong)uVar19; + *puVar3 = (short)uVar15; + if (uVar19 == 0xffffffff) break; + uVar15 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + uVar10 = (uint)uVar15; + puVar3 = puVar3 + -1; + } + break; + case 3: + lVar16 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + iVar11 = (int)lVar16; + uVar18 = (undefined2)lVar16; + puVar3 = (undefined2 *)((long)param_2 + (long)(int)uVar19 * 2); + while( true ) { + if ((0xffff < iVar11 + 0x8000U) && (uVar18 = 0x7fff, (int)lVar16 < 1)) { + uVar18 = 0x8000; + } + uVar19 = (int)uVar20 - 1; + uVar20 = (ulong)uVar19; + *puVar3 = uVar18; + if (uVar19 == 0xffffffff) break; + lVar16 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + iVar11 = (int)lVar16; + uVar18 = (undefined2)lVar16; + puVar3 = puVar3 + -1; + } + break; + case 4: + puVar21 = (undefined4 *)((long)param_2 + (long)(int)uVar19 * 4); + lVar16 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + *puVar21 = (int)lVar16; + while (uVar19 = uVar19 - 1, uVar19 != 0xffffffff) { + puVar21 = puVar21 + -1; + lVar16 = lrint(*(double *)(param_1 + (long)(int)uVar19 * 8)); + *puVar21 = (int)lVar16; + } + break; + case 5: + pfVar13 = (float *)((long)param_2 + (long)(int)uVar19 * 4); + *pfVar13 = (float)*(double *)(param_1 + (long)(int)uVar19 * 8); + while (uVar19 = uVar19 - 1, uVar19 != 0xffffffff) { + pfVar13 = pfVar13 + -1; + *pfVar13 = (float)*(double *)(param_1 + (long)(int)uVar19 * 8); + } + break; + case 6: + puVar14 = (undefined8 *)((long)param_2 + (long)(int)uVar19 * 8); + *puVar14 = *(undefined8 *)(param_1 + (long)(int)uVar19 * 8); + while (uVar19 = uVar19 - 1, uVar19 != 0xffffffff) { + puVar14 = puVar14 + -1; + *puVar14 = *(undefined8 *)(param_1 + (long)(int)uVar19 * 8); + } + break; + default: + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x11,(String *)&local_10,"void cvScalarToRawData(const CvScalar*, void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x5ea); + cv::String::deallocate((String *)&local_10); + } + if (param_4 != 0) { + iVar1 = iVar1 << (ulong)((uint)(0xfa50L >> (uVar2 << 1)) & 3); + uVar20 = (ulong)(((uint)(0x88442211L >> (uVar2 << 2)) & 0xf) * 0xc); + __dest = (void *)((long)param_2 + (uVar20 - (long)iVar1)); + do { + uVar2 = (int)uVar20 - iVar1; + uVar20 = (ulong)uVar2; + memcpy(__dest,param_2,(long)iVar1); + __dest = (void *)((long)__dest + (long)-iVar1); + } while (iVar1 < (int)uVar2); + } + return; +} + + +================================================================== + +### FUNC 0025cddc (708 bytes) name=cvRawDataToScalar + +void cvRawDataToScalar(long param_1,uint param_2,undefined8 *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + char cVar6; + char *pcVar7; + long lVar8; + uint uVar9; + float *pfVar10; + undefined8 *puVar11; + byte *pbVar12; + ushort *puVar13; + short *psVar14; + int *piVar15; + undefined8 local_10; + undefined8 local_8; + + uVar9 = param_2 >> 3 & 0x1ff; + if (3 < uVar9) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x2b); + cVar6 = s_The_number_of_channels_must_be_1_00461a20[0x2a]; + uVar5 = s_The_number_of_channels_must_be_1_00461a20._40_2_; + uVar4 = s_The_number_of_channels_must_be_1_00461a20._24_8_; + uVar3 = s_The_number_of_channels_must_be_1_00461a20._16_8_; + uVar2 = s_The_number_of_channels_must_be_1_00461a20._8_8_; + uVar1 = s_The_number_of_channels_must_be_1_00461a20._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_number_of_channels_must_be_1_00461a20._32_8_; + *(undefined2 *)(pcVar7 + 0x28) = uVar5; + pcVar7[0x2a] = cVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + cv::error(-0xd3,(String *)&local_10,"void cvRawDataToScalar(const void*, int, CvScalar*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x605); + cv::String::deallocate((String *)&local_10); + } + *param_3 = 0; + param_3[1] = 0; + param_3[2] = 0; + param_3[3] = 0; + switch(param_2 & 7) { + case 0: + lVar8 = (long)(int)uVar9; + pbVar12 = (byte *)(param_1 + lVar8); + while( true ) { + uVar9 = uVar9 - 1; + param_3[lVar8] = (double)*(float *)(PTR_DAT_00501fd0 + (long)(int)(*pbVar12 + 0x80) * 4); + if (uVar9 == 0xffffffff) break; + lVar8 = (long)(int)uVar9; + pbVar12 = pbVar12 + -1; + } + break; + case 1: + lVar8 = (long)(int)uVar9; + pcVar7 = (char *)(param_1 + lVar8); + while( true ) { + uVar9 = uVar9 - 1; + param_3[lVar8] = (double)*(float *)(PTR_DAT_00501fd0 + (long)(*pcVar7 + 0x80) * 4); + if (uVar9 == 0xffffffff) break; + lVar8 = (long)(int)uVar9; + pcVar7 = pcVar7 + -1; + } + break; + case 2: + puVar13 = (ushort *)(param_1 + (long)(int)uVar9 * 2); + param_3[(int)uVar9] = (double)*puVar13; + while (uVar9 = uVar9 - 1, uVar9 != 0xffffffff) { + puVar13 = puVar13 + -1; + param_3[(int)uVar9] = (double)*puVar13; + } + break; + case 3: + psVar14 = (short *)(param_1 + (long)(int)uVar9 * 2); + param_3[(int)uVar9] = (double)(int)*psVar14; + while (uVar9 = uVar9 - 1, uVar9 != 0xffffffff) { + psVar14 = psVar14 + -1; + param_3[(int)uVar9] = (double)(int)*psVar14; + } + break; + case 4: + piVar15 = (int *)(param_1 + (long)(int)uVar9 * 4); + param_3[(int)uVar9] = (double)*piVar15; + while (uVar9 = uVar9 - 1, uVar9 != 0xffffffff) { + piVar15 = piVar15 + -1; + param_3[(int)uVar9] = (double)*piVar15; + } + break; + case 5: + pfVar10 = (float *)(param_1 + (long)(int)uVar9 * 4); + param_3[(int)uVar9] = (double)*pfVar10; + while (uVar9 = uVar9 - 1, uVar9 != 0xffffffff) { + pfVar10 = pfVar10 + -1; + param_3[(int)uVar9] = (double)*pfVar10; + } + break; + case 6: + puVar11 = (undefined8 *)(param_1 + (long)(int)uVar9 * 8); + param_3[(int)uVar9] = *puVar11; + while (uVar9 = uVar9 - 1, uVar9 != 0xffffffff) { + puVar11 = puVar11 + -1; + param_3[(int)uVar9] = *puVar11; + } + break; + default: + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x11,(String *)&local_10,"void cvRawDataToScalar(const void*, int, CvScalar*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x629); + cv::String::deallocate((String *)&local_10); + } + return; +} + + +================================================================== + +### FUNC 0025d0c8 (1292 bytes) name=cvPtr2D + +long cvPtr2D(uint *param_1,uint param_2,uint param_3,uint *param_4) + +{ + int iVar1; + int iVar2; + uint uVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + char cVar10; + undefined4 uVar11; + long lVar12; + char *pcVar13; + long lVar14; + int *piVar15; + int iVar16; + uint uVar17; + uint uVar18; + uint local_10 [4]; + + if (param_1 == (uint *)0x0) { +LAB_0025d188: + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar13 = (char *)cv::String::allocate((String *)local_10,0x26); + uVar9 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar8 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar7 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar6 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar13 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar13 + 0x24) = uVar9; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + *(undefined8 *)(pcVar13 + 0x10) = uVar7; + *(undefined8 *)(pcVar13 + 0x18) = uVar8; + cv::error(-5,(String *)local_10,"uchar* cvPtr2D(const CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x730); + cv::String::deallocate((String *)local_10); + return 0; + } + uVar18 = *param_1; + uVar17 = uVar18 & 0xffff0000; + if (uVar17 == 0x42420000) { + if (((0 < (int)param_1[9]) && (0 < (int)param_1[8])) && (*(long *)(param_1 + 6) != 0)) { + if ((param_1[8] <= param_2) || (param_1[9] <= param_3)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar13 = (char *)cv::String::allocate((String *)local_10,0x15); + cVar10 = s_index_is_out_of_range_00461a50[0x14]; + uVar6 = s_index_is_out_of_range_00461a50._8_8_; + uVar5 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar13 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar13[0x14] = cVar10; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + cv::error(-0xd3,(String *)local_10,"uchar* cvPtr2D(const CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x6e4); + cv::String::deallocate((String *)local_10); + uVar18 = *param_1; + } + if (param_4 != (uint *)0x0) { + *param_4 = uVar18 & 0xfff; + } + return *(long *)(param_1 + 6) + + (long)(int)param_2 * (long)(int)param_1[1] + + (long)(int)(((uVar18 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar18 & 7) << 1)) & 3)) * param_3); + } + goto LAB_0025d188; + } + if ((uVar18 != 0x90) || (lVar12 = *(long *)(param_1 + 0x16), lVar12 == 0)) { + if (uVar17 == 0x42430000) { + lVar12 = *(long *)(param_1 + 6); + if (lVar12 != 0) { + if (((param_1[1] != 2) || (param_1[8] <= param_2)) || (param_1[10] <= param_3)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar13 = (char *)cv::String::allocate((String *)local_10,0x15); + cVar10 = s_index_is_out_of_range_00461a50[0x14]; + uVar6 = s_index_is_out_of_range_00461a50._8_8_; + uVar5 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar13 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar13[0x14] = cVar10; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + cv::error(-0xd3,(String *)local_10,"uchar* cvPtr2D(const CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x723); + cv::String::deallocate((String *)local_10); + lVar12 = *(long *)(param_1 + 6); + } + lVar12 = lVar12 + (long)(int)(param_3 * param_1[0xb]) + + (long)(int)param_2 * (long)(int)param_1[9]; + if (param_4 == (uint *)0x0) { + return lVar12; + } + *param_4 = *param_1 & 0xfff; + return lVar12; + } + } + else if (uVar17 == 0x42440000) { + local_10[1] = param_3; + local_10[0] = param_2; + lVar12 = FUN_0025aca4(param_1,local_10,param_4,1,0); + return lVar12; + } + goto LAB_0025d188; + } + iVar16 = (int)(uint)(byte)param_1[4] >> 3; + if (param_1[7] == 0) { + lVar14 = *(long *)(param_1 + 0xc); + iVar16 = iVar16 * param_1[2]; + if (lVar14 != 0) { + uVar17 = *(uint *)(lVar14 + 0xc); + uVar18 = *(uint *)(lVar14 + 0x10); + lVar12 = lVar12 + (int)(iVar16 * *(int *)(lVar14 + 4) + *(int *)(lVar14 + 8) * param_1[0x18]); + goto LAB_0025d248; + } + } + else { + piVar15 = *(int **)(param_1 + 0xc); + if (piVar15 != (int *)0x0) { + iVar1 = piVar15[1]; + iVar2 = piVar15[2]; + uVar3 = param_1[0x18]; + iVar4 = *piVar15; + uVar17 = piVar15[3]; + uVar18 = piVar15[4]; + if (iVar4 == 0) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar13 = (char *)cv::String::allocate((String *)local_10,0x2d); + cVar10 = s_COI_must_be_non_null_in_case_of_p_00461a68[0x2c]; + uVar11 = s_COI_must_be_non_null_in_case_of_p_00461a68._40_4_; + uVar8 = s_COI_must_be_non_null_in_case_of_p_00461a68._24_8_; + uVar7 = s_COI_must_be_non_null_in_case_of_p_00461a68._16_8_; + uVar6 = s_COI_must_be_non_null_in_case_of_p_00461a68._8_8_; + uVar5 = s_COI_must_be_non_null_in_case_of_p_00461a68._0_8_; + *(undefined8 *)(pcVar13 + 0x20) = s_COI_must_be_non_null_in_case_of_p_00461a68._32_8_; + *(undefined4 *)(pcVar13 + 0x28) = uVar11; + pcVar13[0x2c] = cVar10; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + *(undefined8 *)(pcVar13 + 0x10) = uVar7; + *(undefined8 *)(pcVar13 + 0x18) = uVar8; + cv::error(-0x18,(String *)local_10,"uchar* cvPtr2D(const CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x703); + cv::String::deallocate((String *)local_10); + } + lVar12 = lVar12 + (long)(int)(iVar16 * iVar1 + iVar2 * uVar3) + + (long)(int)((iVar4 + -1) * param_1[0x14]); + goto LAB_0025d248; + } + } + uVar18 = param_1[0xb]; + uVar17 = param_1[10]; +LAB_0025d248: + if ((uVar17 <= param_3) || (uVar18 <= param_2)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar13 = (char *)cv::String::allocate((String *)local_10,0x15); + cVar10 = s_index_is_out_of_range_00461a50[0x14]; + uVar6 = s_index_is_out_of_range_00461a50._8_8_; + uVar5 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar13 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar13[0x14] = cVar10; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + cv::error(-0xd3,(String *)local_10,"uchar* cvPtr2D(const CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x70f); + cv::String::deallocate((String *)local_10); + } + lVar12 = lVar12 + (int)(param_3 * iVar16 + param_2 * param_1[0x18]); + if (param_4 == (uint *)0x0) { + return lVar12; + } + uVar17 = param_1[4]; + uVar18 = param_1[2] - 1; + iVar16 = 0x14; + if (-1 < (int)uVar17) { + iVar16 = 0; + } + if (3 < uVar18) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + cv::String::allocate((String *)local_10,0); + cv::error(-0xd2,(String *)local_10,"uchar* cvPtr2D(const CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x717); + cv::String::deallocate((String *)local_10); + uVar18 = param_1[2] - 1; + } + *param_4 = (0x43160520 >> (iVar16 + ((uVar17 & 0xf0) >> 2) & 0x1f) & 7U) + uVar18 * 8; + return lVar12; +} + + +================================================================== + +### FUNC 0025d64c (1024 bytes) name=cvPtr1D + +long cvPtr1D(uint *param_1,uint param_2,uint *param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + long lVar8; + uint *puVar9; + char *pcVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint local_1004; + undefined8 local_1000; + undefined8 local_ff8; + uint *puVar10; + + local_1004 = param_2; + if (param_1 != (uint *)0x0) { + uVar1 = *param_1; + uVar12 = uVar1 & 0xffff0000; + if (uVar12 == 0x42420000) { + uVar12 = param_1[9]; + if (((0 < (int)uVar12) && (uVar13 = param_1[8], 0 < (int)uVar13)) && + (*(long *)(param_1 + 6) != 0)) { + iVar14 = (uVar1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3); + if (param_3 != (uint *)0x0) { + *param_3 = uVar1 & 0xfff; + uVar13 = param_1[8]; + uVar12 = param_1[9]; + } + if (((uVar13 + uVar12) - 1 <= param_2) && (uVar13 * uVar12 <= param_2)) { + local_1000 = 0; + local_ff8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_1000,0x15); + cVar7 = s_index_is_out_of_range_00461a50[0x14]; + uVar3 = s_index_is_out_of_range_00461a50._8_8_; + uVar2 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar11[0x14] = cVar7; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_1000,"uchar* cvPtr1D(const CvArr*, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x680); + cv::String::deallocate((String *)&local_1000); + param_2 = local_1004; + } + if ((*param_1 >> 0xe & 1) == 0) { + uVar12 = param_1[9]; + if (uVar12 == 1) { + lVar8 = 0; + } + else { + uVar1 = 0; + if (uVar12 != 0) { + uVar1 = (int)param_2 / (int)uVar12; + } + lVar8 = (long)(int)(iVar14 * (param_2 - uVar12 * uVar1)); + param_2 = uVar1; + } + return *(long *)(param_1 + 6) + lVar8 + (long)(int)param_2 * (long)(int)param_1[1]; + } + return *(long *)(param_1 + 6) + (long)(int)param_2 * (long)iVar14; + } + } + else { + if (uVar1 == 0x90) { + if (*(long *)(param_1 + 0xc) == 0) { + uVar12 = param_1[10]; + } + else { + uVar12 = *(uint *)(*(long *)(param_1 + 0xc) + 0xc); + } + iVar14 = 0; + if (uVar12 != 0) { + iVar14 = (int)param_2 / (int)uVar12; + } + lVar8 = cvPtr2D(param_1,iVar14,param_2 - uVar12 * iVar14); + return lVar8; + } + if (uVar12 == 0x42430000) { + if (*(long *)(param_1 + 6) != 0) { + uVar12 = param_1[8]; + if (param_3 != (uint *)0x0) { + *param_3 = uVar1 & 0xfff; + } + if (1 < (int)param_1[1]) { + puVar9 = param_1 + 10; + do { + puVar10 = puVar9 + 2; + uVar12 = uVar12 * *puVar9; + puVar9 = puVar10; + } while (puVar10 != param_1 + ((ulong)(param_1[1] - 2) + 6) * 2); + } + if (uVar12 <= param_2) { + local_1000 = 0; + local_ff8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_1000,0x15); + cVar7 = s_index_is_out_of_range_00461a50[0x14]; + uVar3 = s_index_is_out_of_range_00461a50._8_8_; + uVar2 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar11[0x14] = cVar7; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_1000,"uchar* cvPtr1D(const CvArr*, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x6a5); + cv::String::deallocate((String *)&local_1000); + } + if ((*param_1 >> 0xe & 1) == 0) { + lVar8 = *(long *)(param_1 + 6); + iVar14 = param_1[1] - 1; + if (iVar14 < 0) { + return lVar8; + } + do { + uVar12 = param_1[(long)iVar14 * 2 + 8]; + if (uVar12 != 0) { + uVar1 = 0; + if (uVar12 != 0) { + uVar1 = (int)local_1004 / (int)uVar12; + } + lVar8 = lVar8 + (int)((local_1004 - uVar1 * uVar12) * param_1[(long)iVar14 * 2 + 9]) + ; + local_1004 = uVar1; + } + iVar14 = iVar14 + -1; + } while (iVar14 != -1); + return lVar8; + } + return *(long *)(param_1 + 6) + + (long)(int)((uVar1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3)) * + (long)(int)local_1004; + } + } + else if (uVar12 == 0x42440000) { + if (param_1[1] == 1) { + lVar8 = FUN_0025aca4(param_1,&local_1004,param_3,1,0); + } + else { + iVar14 = param_1[1] - 1; + if (-1 < iVar14) { + do { + uVar12 = param_1[(long)iVar14 + 0xd]; + local_1004 = 0; + if (uVar12 != 0) { + local_1004 = (int)param_2 / (int)uVar12; + } + *(uint *)((String *)&local_1000 + (long)iVar14 * 4) = param_2 - uVar12 * local_1004; + iVar14 = iVar14 + -1; + param_2 = local_1004; + } while (iVar14 != -1); + } + lVar8 = FUN_0025aca4(param_1,(String *)&local_1000,param_3,1,0); + } + return lVar8; + } + } + } + local_1000 = 0; + local_ff8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_1000,0x26); + uVar6 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar2 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar11 + 0x24) = uVar6; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + *(undefined8 *)(pcVar11 + 0x10) = uVar4; + *(undefined8 *)(pcVar11 + 0x18) = uVar5; + cv::error(-5,(String *)&local_1000,"uchar* cvPtr1D(const CvArr*, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x6d1); + cv::String::deallocate((String *)&local_1000); + return 0; +} + + +================================================================== + +### FUNC 0025da88 (904 bytes) name=cvGetRawData + +void cvGetRawData(uint *param_1,undefined8 *param_2,uint *param_3,uint *param_4) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + undefined4 uVar7; + uint *puVar8; + uint uVar9; + char *pcVar10; + undefined8 uVar11; + uint uVar12; + uint uVar13; + uint *puVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + uint uVar19; + uint uVar20; + uint uVar21; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (uint *)0x0) { +LAB_0025dad4: + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar6 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar11 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar10 + 0x24) = uVar6; + *(undefined8 *)pcVar10 = uVar11; + *(undefined8 *)(pcVar10 + 8) = uVar3; + *(undefined8 *)(pcVar10 + 0x10) = uVar4; + *(undefined8 *)(pcVar10 + 0x18) = uVar5; + cv::error(-5,(String *)&local_10,"void cvGetRawData(const CvArr*, uchar**, int*, CvSize*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x438); + cv::String::deallocate((String *)&local_10); + return; + } + uVar12 = *param_1; + if ((uVar12 & 0xffff0000) == 0x42420000) { + if (((0 < (int)param_1[9]) && (0 < (int)param_1[8])) && (*(long *)(param_1 + 6) != 0)) { + if (param_3 != (uint *)0x0) { + *param_3 = param_1[1]; + } + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 6); + } + if (param_4 == (uint *)0x0) { + return; + } + uVar12 = param_1[8]; + *param_4 = param_1[9]; + param_4[1] = uVar12; + return; + } + goto LAB_0025dad4; + } + if ((uVar12 == 0x90) && (*(long *)(param_1 + 0x16) != 0)) { + if (param_3 != (uint *)0x0) { + *param_3 = param_1[0x18]; + } + if (param_2 != (undefined8 *)0x0) { + uVar11 = cvPtr2D(param_1,0,0,0); + *param_2 = uVar11; + } + if (param_4 == (uint *)0x0) { + return; + } + if (*(long *)(param_1 + 0xc) == 0) { + *(undefined8 *)param_4 = *(undefined8 *)(param_1 + 10); + return; + } + *(undefined8 *)param_4 = *(undefined8 *)(*(long *)(param_1 + 0xc) + 0xc); + return; + } + if (((uVar12 & 0xffff0000) != 0x42430000) || (*(long *)(param_1 + 6) == 0)) goto LAB_0025dad4; + if ((uVar12 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x2c); + uVar7 = s_Only_continuous_nD_arrays_are_su_00461a98._40_4_; + uVar5 = s_Only_continuous_nD_arrays_are_su_00461a98._24_8_; + uVar4 = s_Only_continuous_nD_arrays_are_su_00461a98._16_8_; + uVar3 = s_Only_continuous_nD_arrays_are_su_00461a98._8_8_; + uVar11 = s_Only_continuous_nD_arrays_are_su_00461a98._0_8_; + *(undefined8 *)(pcVar10 + 0x20) = s_Only_continuous_nD_arrays_are_su_00461a98._32_8_; + *(undefined4 *)(pcVar10 + 0x28) = uVar7; + *(undefined8 *)pcVar10 = uVar11; + *(undefined8 *)(pcVar10 + 8) = uVar3; + *(undefined8 *)(pcVar10 + 0x10) = uVar4; + *(undefined8 *)(pcVar10 + 0x18) = uVar5; + cv::error(-5,(String *)&local_10,"void cvGetRawData(const CvArr*, uchar**, int*, CvSize*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x41b); + cv::String::deallocate((String *)&local_10); + } + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 6); + } + if (param_3 != (uint *)0x0) { + if (param_4 == (uint *)0x0) goto LAB_0025ddd8; + } + else if (param_4 == (uint *)0x0) { + return; + } + uVar12 = param_1[1]; + uVar9 = param_1[8]; + if ((int)uVar12 < 3) { + uVar12 = param_1[10]; + } + else { + uVar1 = (uVar12 - 6 >> 2) + 1; + iVar2 = uVar1 * 4; + if (uVar12 - 2 < 7) { + iVar15 = 2; + uVar9 = uVar9 * param_1[10]; +LAB_0025dcd0: + uVar9 = uVar9 * param_1[(long)iVar15 * 2 + 8]; + if (iVar15 + 1 < (int)uVar12) { + uVar9 = uVar9 * param_1[(long)(iVar15 + 1) * 2 + 8]; + if (iVar15 + 2 < (int)uVar12) { + uVar9 = uVar9 * param_1[(long)(iVar15 + 2) * 2 + 8]; + if (iVar15 + 3 < (int)uVar12) { + uVar9 = uVar9 * param_1[(long)(iVar15 + 3) * 2 + 8]; + if (iVar15 + 4 < (int)uVar12) { + uVar9 = uVar9 * param_1[(long)(iVar15 + 4) * 2 + 8]; + if (iVar15 + 5 < (int)uVar12) { + uVar9 = uVar9 * param_1[(long)(iVar15 + 5) * 2 + 8]; + } + } + } + } + } + } + else { + iVar15 = 1; + iVar16 = 1; + iVar17 = 1; + iVar18 = 1; + puVar14 = param_1 + 10; + uVar13 = 0; + do { + uVar19 = *puVar14; + uVar20 = puVar14[2]; + puVar8 = puVar14 + 4; + uVar21 = puVar14[6]; + puVar14 = puVar14 + 8; + uVar13 = uVar13 + 1; + iVar15 = iVar15 * uVar19; + iVar16 = iVar16 * (int)(CONCAT17((char)(uVar20 >> 0x18), + CONCAT16((char)(uVar20 >> 0x10), + CONCAT15((char)(uVar20 >> 8), + CONCAT14((char)uVar20,uVar19)))) >> 0x20) + ; + iVar17 = iVar17 * *puVar8; + iVar18 = iVar18 * (int)(CONCAT17((char)(uVar21 >> 0x18), + CONCAT16((char)(uVar21 >> 0x10), + CONCAT15((char)(uVar21 >> 8), + CONCAT14((char)uVar21,*puVar8)))) >> 0x20 + ); + } while (uVar13 < uVar1); + uVar9 = uVar9 * iVar18 * iVar17 * iVar16 * iVar15; + if (uVar12 - 1 != iVar2) { + iVar15 = iVar2 + 2; + uVar9 = uVar9 * param_1[(long)(iVar2 + 1) * 2 + 8]; + if (iVar15 < (int)uVar12) goto LAB_0025dcd0; + } + } + uVar12 = 1; + } + *param_4 = uVar12; + param_4[1] = uVar9; +LAB_0025ddd8: + if (param_3 == (uint *)0x0) { + return; + } + *param_3 = param_1[9]; + return; +} + + +================================================================== + +### FUNC 0025de38 (504 bytes) name=cvPtr3D + +long cvPtr3D(uint *param_1,uint param_2,uint param_3,uint param_4,uint *param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + char cVar6; + long lVar7; + char *pcVar8; + uint local_10 [4]; + + if (param_1 != (uint *)0x0) { + if ((*param_1 & 0xffff0000) == 0x42430000) { + lVar7 = *(long *)(param_1 + 6); + if (lVar7 == 0) goto LAB_0025debc; + if ((((param_1[1] != 3) || (param_1[8] <= param_2)) || (param_1[10] <= param_3)) || + (param_1[0xc] <= param_4)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar8 = (char *)cv::String::allocate((String *)local_10,0x15); + cVar6 = s_index_is_out_of_range_00461a50[0x14]; + uVar2 = s_index_is_out_of_range_00461a50._8_8_; + uVar1 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar8[0x14] = cVar6; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0xd3,(String *)local_10,"uchar* cvPtr3D(const CvArr*, int, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x744); + cv::String::deallocate((String *)local_10); + lVar7 = *(long *)(param_1 + 6); + } + lVar7 = lVar7 + (long)(int)(param_4 * param_1[0xd]) + + (long)(int)param_3 * (long)(int)param_1[0xb] + + (long)(int)param_2 * (long)(int)param_1[9]; + if (param_5 != (uint *)0x0) { + *param_5 = *param_1 & 0xfff; + return lVar7; + } + } + else { + if ((*param_1 & 0xffff0000) != 0x42440000) goto LAB_0025debc; + local_10[1] = param_3; + local_10[0] = param_2; + local_10[2] = param_4; + lVar7 = FUN_0025aca4(param_1,local_10,param_5,1,0); + } + return lVar7; + } +LAB_0025debc: + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar8 = (char *)cv::String::allocate((String *)local_10,0x26); + uVar5 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar3 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar2 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar1 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar8 + 0x24) = uVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar3; + *(undefined8 *)(pcVar8 + 0x18) = uVar4; + cv::error(-5,(String *)local_10,"uchar* cvPtr3D(const CvArr*, int, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x753); + cv::String::deallocate((String *)local_10); + return 0; +} + + +================================================================== + +### FUNC 0025e058 (684 bytes) name=cvPtrND + +long cvPtrND(uint *param_1,uint *param_2,uint *param_3,undefined4 param_4,undefined8 param_5) + +{ + int iVar1; + uint uVar2; + long lVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + char cVar9; + long lVar10; + char *pcVar11; + uint uVar12; + int iVar13; + uint *local_10; + uint *local_8; + + if (param_2 == (uint *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar9 = s_NULL_pointer_to_indices_00461ac8[0x16]; + uVar8 = s_NULL_pointer_to_indices_00461ac8._20_2_; + uVar5 = s_NULL_pointer_to_indices_00461ac8._8_8_; + uVar4 = s_NULL_pointer_to_indices_00461ac8._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_NULL_pointer_to_indices_00461ac8._16_4_; + *(undefined2 *)(pcVar11 + 0x14) = uVar8; + pcVar11[0x16] = cVar9; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + cv::error(-0x1b,(String *)&local_10, + "uchar* cvPtrND(const CvArr*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x761); + cv::String::deallocate((String *)&local_10); + } + if (param_1 != (uint *)0x0) { + uVar12 = *param_1 & 0xffff0000; + if (uVar12 == 0x42440000) { + lVar10 = FUN_0025aca4(param_1,param_2,param_3,param_4,param_5); + return lVar10; + } + if (uVar12 == 0x42430000) { + lVar10 = *(long *)(param_1 + 6); + if (lVar10 != 0) { + uVar12 = param_1[1]; + if (0 < (int)uVar12) { + iVar13 = 0; + do { + while( true ) { + uVar2 = *param_2; + if (uVar2 < param_1[(long)iVar13 * 2 + 8]) break; + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar9 = s_index_is_out_of_range_00461a50[0x14]; + uVar5 = s_index_is_out_of_range_00461a50._8_8_; + uVar4 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar11[0x14] = cVar9; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + cv::error(-0xd3,(String *)&local_10, + "uchar* cvPtrND(const CvArr*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x76f); + iVar1 = iVar13 + 1; + cv::String::deallocate((String *)&local_10); + uVar12 = param_1[1]; + lVar10 = lVar10 + (long)(int)*param_2 * (long)(int)param_1[(long)iVar13 * 2 + 9]; + param_2 = param_2 + 1; + iVar13 = iVar1; + if ((int)uVar12 <= iVar1) goto LAB_0025e1d4; + } + lVar3 = (long)iVar13; + iVar13 = iVar13 + 1; + param_2 = param_2 + 1; + lVar10 = lVar10 + (long)(int)uVar2 * (long)(int)param_1[lVar3 * 2 + 9]; + } while (iVar13 < (int)uVar12); + } +LAB_0025e1d4: + if (param_3 == (uint *)0x0) { + return lVar10; + } + *param_3 = *param_1 & 0xfff; + return lVar10; + } + } + else if (uVar12 == 0x42420000) { + if ((0 < (int)param_1[9]) && (0 < (int)param_1[8])) goto LAB_0025e0c4; + } + else if (*param_1 == 0x90) { +LAB_0025e0c4: + lVar10 = cvPtr2D(param_1,*param_2,param_2[1],param_3); + return lVar10; + } + } + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar8 = s_unrecognized_or_unsupported_arra_00461918._36_2_; + uVar7 = s_unrecognized_or_unsupported_arra_00461918._24_8_; + uVar6 = s_unrecognized_or_unsupported_arra_00461918._16_8_; + uVar5 = s_unrecognized_or_unsupported_arra_00461918._8_8_; + uVar4 = s_unrecognized_or_unsupported_arra_00461918._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s_unrecognized_or_unsupported_arra_00461918._32_4_; + *(undefined2 *)(pcVar11 + 0x24) = uVar8; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar6; + *(undefined8 *)(pcVar11 + 0x18) = uVar7; + cv::error(-5,(String *)&local_10, + "uchar* cvPtrND(const CvArr*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x779); + cv::String::deallocate((String *)&local_10); + return 0; +} + + +================================================================== + +### FUNC 0025e340 (784 bytes) name=cvGet1D + +undefined1 [16] cvGet1D(uint *param_1,uint param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + long lVar6; + char *pcVar7; + uint *puVar8; + uint uVar9; + uint *puVar10; + uint *puVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint uVar15; + undefined1 auVar16 [16]; + uint local_54 [5]; + ulong local_40 [4]; + undefined8 local_20; + undefined8 local_18; + + local_54[0] = param_2; + local_40[1] = 0; + local_40[0] = 0; + local_54[4] = 0; + local_40[3] = 0; + local_40[2] = 0; + if (param_1 != (uint *)0x0) { + uVar9 = *param_1; + if ((uVar9 & 0xffff0000) == 0x42420000) { + uVar12 = param_1[9]; + if ((((0 < (int)uVar12) && (uVar13 = param_1[8], 0 < (int)uVar13)) && + (lVar6 = *(long *)(param_1 + 6), lVar6 != 0)) && ((uVar9 >> 0xe & 1) != 0)) { + local_54[4] = uVar9 & 0xfff; + if (((uVar12 + uVar13) - 1 <= param_2) && (uVar12 * uVar13 <= param_2)) { + local_20 = 0; + local_18 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_20,0x15); + cVar5 = s_index_is_out_of_range_00461a50[0x14]; + uVar2 = s_index_is_out_of_range_00461a50._8_8_; + uVar1 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar7[0x14] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_20,"CvScalar cvGet1D(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x792); + cv::String::deallocate((String *)&local_20); + lVar6 = *(long *)(param_1 + 6); + } + lVar6 = lVar6 + (long)(int)((uVar9 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar9 & 7) << 1)) & 3)) * + (long)(int)param_2; + goto LAB_0025e3b0; + } + } + else if ((uVar9 & 0xffff0000) == 0x42440000) { + uVar12 = param_1[1]; + if ((int)uVar12 < 2) { + if (uVar12 == 1) { + lVar6 = 0; + uVar15 = 0; + do { + uVar9 = local_54[lVar6]; + iVar14 = (int)lVar6; + if (param_1[(long)iVar14 + 0xd] <= uVar9) { + local_20 = 0; + local_18 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_20,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar1 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar3; + *(undefined2 *)(pcVar7 + 0x1c) = uVar4; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_20, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_20); + uVar12 = param_1[1]; + } + lVar6 = lVar6 + 1; + uVar15 = uVar9 + uVar15 * 0x5bd1e995; + } while (iVar14 + 1 < (int)uVar12); + uVar9 = *param_1; + uVar13 = uVar15 & 0x7fffffff; + } + else { + uVar13 = 0; + uVar15 = 0; + } + for (puVar8 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar15 & param_1[10] - 1) * 8) + ; lVar6 = 0, puVar8 != (uint *)0x0; puVar8 = *(uint **)(puVar8 + 2)) { + if (*puVar8 == uVar13) { + if ((int)uVar12 < 1) { + if (uVar12 == 0) { +LAB_0025e628: + lVar6 = (long)puVar8 + (long)(int)param_1[0xb]; + break; + } + } + else { + puVar10 = (uint *)((long)puVar8 + (long)(int)param_1[0xc]); + if (local_54[0] == *(uint *)((long)puVar8 + (long)(int)param_1[0xc])) { + puVar11 = local_54; + uVar15 = 0; + do { + puVar11 = puVar11 + 1; + uVar15 = uVar15 + 1; + if (uVar15 == uVar12) goto LAB_0025e628; + puVar10 = puVar10 + 1; + } while (*puVar11 == *puVar10); + } + } + } + } + local_54[4] = uVar9 & 0xfff; + goto LAB_0025e3b0; + } + } + } + lVar6 = cvPtr1D(param_1,param_2,local_54 + 4); +LAB_0025e3b0: + if (lVar6 != 0) { + cvRawDataToScalar(lVar6,local_54[4],local_40); + } + auVar16._8_8_ = 0; + auVar16._0_8_ = local_40[0]; + return auVar16; +} + + +================================================================== + +### FUNC 0025e678 (840 bytes) name=cvGet2D + +undefined1 [16] cvGet2D(uint *param_1,uint param_2,uint param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + long lVar7; + char *pcVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint *puVar12; + uint *puVar13; + uint *puVar14; + uint uVar15; + int iVar16; + undefined1 auVar17 [16]; + uint local_4c; + uint local_48 [2]; + ulong local_40 [4]; + undefined8 local_20; + undefined8 local_18; + + local_4c = 0; + local_40[1] = 0; + local_40[0] = 0; + local_40[3] = 0; + local_40[2] = 0; + if (param_1 != (uint *)0x0) { + uVar9 = *param_1; + if ((uVar9 & 0xffff0000) == 0x42420000) { + if (((0 < (int)param_1[9]) && (0 < (int)param_1[8])) && + (lVar7 = *(long *)(param_1 + 6), lVar7 != 0)) { + if ((param_1[8] <= param_2) || (param_1[9] <= param_3)) { + local_20 = 0; + local_18 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_20,0x15); + cVar6 = s_index_is_out_of_range_00461a50[0x14]; + uVar3 = s_index_is_out_of_range_00461a50._8_8_; + uVar2 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar8[0x14] = cVar6; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_20,"CvScalar cvGet2D(const CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x7b0); + cv::String::deallocate((String *)&local_20); + uVar9 = *param_1; + lVar7 = *(long *)(param_1 + 6); + } + local_4c = uVar9 & 0xfff; + lVar7 = lVar7 + (long)(int)param_2 * (long)(int)param_1[1] + + (long)(int)(((uVar9 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar9 & 7) << 1)) & 3)) * param_3); + goto LAB_0025e6f4; + } + } + else if ((uVar9 & 0xffff0000) == 0x42440000) { + uVar15 = param_1[1]; + local_48[0] = param_2; + local_48[1] = param_3; + if ((int)uVar15 < 1) { + uVar10 = 0; + uVar11 = 0; + } + else { + lVar7 = 0; + uVar11 = 0; + do { + while( true ) { + uVar9 = local_48[lVar7]; + iVar16 = (int)lVar7; + if (uVar9 < param_1[(long)iVar16 + 0xd]) break; + local_20 = 0; + local_18 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_20,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + *(undefined8 *)(pcVar8 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar4; + *(undefined2 *)(pcVar8 + 0x1c) = uVar5; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_20, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_20); + uVar15 = param_1[1]; + lVar7 = lVar7 + 1; + uVar11 = uVar9 + uVar11 * 0x5bd1e995; + if ((int)uVar15 <= iVar16 + 1) goto LAB_0025e90c; + } + lVar7 = lVar7 + 1; + uVar11 = uVar9 + uVar11 * 0x5bd1e995; + } while (iVar16 + 1 < (int)uVar15); +LAB_0025e90c: + uVar9 = *param_1; + uVar10 = uVar11 & 0x7fffffff; + } + puVar13 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar11 & param_1[10] - 1) * 8); + if (puVar13 != (uint *)0x0) { + do { + if (*puVar13 == uVar10) { + if ((int)uVar15 < 1) { + if (uVar15 == 0) { +LAB_0025e990: + lVar7 = (long)puVar13 + (long)(int)param_1[0xb]; + goto LAB_0025e9a0; + } + } + else if (param_2 == *(uint *)((long)puVar13 + (long)(int)param_1[0xc])) { + uVar11 = 0; + puVar12 = (uint *)((long)puVar13 + (long)(int)param_1[0xc] + 4); + puVar14 = local_48; + do { + puVar14 = puVar14 + 1; + uVar11 = uVar11 + 1; + if (uVar11 == uVar15) goto LAB_0025e990; + uVar1 = *puVar12; + puVar12 = puVar12 + 1; + } while (*puVar14 == uVar1); + } + } + puVar13 = *(uint **)(puVar13 + 2); + } while (puVar13 != (uint *)0x0); + } + lVar7 = 0; +LAB_0025e9a0: + local_4c = uVar9 & 0xfff; + goto LAB_0025e6f4; + } + } + lVar7 = cvPtr2D(param_1,param_2,param_3,&local_4c); +LAB_0025e6f4: + if (lVar7 != 0) { + cvRawDataToScalar(lVar7,local_4c,local_40); + } + auVar17._8_8_ = 0; + auVar17._0_8_ = local_40[0]; + return auVar17; +} + + +================================================================== + +### FUNC 0025e9e8 (608 bytes) name=cvGet3D + +undefined1 [16] cvGet3D(uint *param_1,uint param_2,undefined8 param_3,undefined8 param_4) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + long lVar6; + char *pcVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint *puVar11; + uint *puVar12; + uint *puVar13; + uint uVar14; + int iVar15; + undefined1 auVar16 [16]; + uint local_54; + uint local_50 [4]; + ulong local_40 [4]; + undefined8 local_20; + undefined8 local_18; + + local_54 = 0; + local_40[1] = 0; + local_40[0] = 0; + local_40[3] = 0; + local_40[2] = 0; + if ((param_1 == (uint *)0x0) || (uVar8 = *param_1, (uVar8 & 0xffff0000) != 0x42440000)) { + lVar6 = cvPtr3D(param_1,param_2,param_3,param_4,&local_54); + } + else { + uVar14 = param_1[1]; + local_50[0] = param_2; + local_50[1] = (int)param_3; + local_50[2] = (int)param_4; + if ((int)uVar14 < 1) { + uVar9 = 0; + uVar10 = 0; + } + else { + lVar6 = 0; + uVar10 = 0; + do { + while( true ) { + uVar8 = local_50[lVar6]; + iVar15 = (int)lVar6; + if (uVar8 < param_1[(long)iVar15 + 0xd]) break; + local_20 = 0; + local_18 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_20,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + *(undefined8 *)(pcVar7 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar4; + *(undefined2 *)(pcVar7 + 0x1c) = uVar5; + *(undefined8 *)pcVar7 = uVar2; + *(undefined8 *)(pcVar7 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_20, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_20); + uVar14 = param_1[1]; + lVar6 = lVar6 + 1; + uVar10 = uVar8 + uVar10 * 0x5bd1e995; + if ((int)uVar14 <= iVar15 + 1) goto LAB_0025eb94; + } + lVar6 = lVar6 + 1; + uVar10 = uVar8 + uVar10 * 0x5bd1e995; + } while (iVar15 + 1 < (int)uVar14); +LAB_0025eb94: + uVar8 = *param_1; + uVar9 = uVar10 & 0x7fffffff; + } + puVar12 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar10 & param_1[10] - 1) * 8); + if (puVar12 != (uint *)0x0) { + do { + if (*puVar12 == uVar9) { + if ((int)uVar14 < 1) { + if (uVar14 == 0) { +LAB_0025ec18: + lVar6 = (long)puVar12 + (long)(int)param_1[0xb]; + goto LAB_0025ec28; + } + } + else if (param_2 == *(uint *)((long)puVar12 + (long)(int)param_1[0xc])) { + uVar10 = 0; + puVar11 = (uint *)((long)puVar12 + (long)(int)param_1[0xc] + 4); + puVar13 = local_50; + do { + puVar13 = puVar13 + 1; + uVar10 = uVar10 + 1; + if (uVar10 == uVar14) goto LAB_0025ec18; + uVar1 = *puVar11; + puVar11 = puVar11 + 1; + } while (*puVar13 == uVar1); + } + } + puVar12 = *(uint **)(puVar12 + 2); + } while (puVar12 != (uint *)0x0); + } + lVar6 = 0; +LAB_0025ec28: + local_54 = uVar8 & 0xfff; + } + if (lVar6 != 0) { + cvRawDataToScalar(lVar6,local_54,local_40); + } + auVar16._8_8_ = 0; + auVar16._0_8_ = local_40[0]; + return auVar16; +} + + +================================================================== + +### FUNC 0025ec5c (600 bytes) name=cvGetND + +undefined1 [16] cvGetND(uint *param_1,uint *param_2) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + long lVar6; + char *pcVar7; + uint uVar8; + uint uVar9; + uint *puVar10; + uint *puVar11; + uint *puVar12; + uint uVar13; + int iVar14; + uint uVar15; + undefined1 auVar16 [16]; + uint local_44; + ulong local_40 [4]; + undefined8 local_20; + undefined8 local_18; + + local_44 = 0; + local_40[1] = 0; + local_40[0] = 0; + local_40[3] = 0; + local_40[2] = 0; + if ((param_1 == (uint *)0x0) || (uVar8 = *param_1, (uVar8 & 0xffff0000) != 0x42440000)) { + lVar6 = cvPtrND(param_1,param_2,&local_44,1,0); + } + else { + uVar13 = param_1[1]; + uVar9 = 0; + uVar15 = 0; + if (0 < (int)uVar13) { + uVar15 = 0; + iVar14 = 0; + puVar11 = param_2; + do { + while (uVar8 = *puVar11, param_1[(long)iVar14 + 0xd] <= uVar8) { + local_20 = 0; + local_18 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_20,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + *(undefined8 *)(pcVar7 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar4; + *(undefined2 *)(pcVar7 + 0x1c) = uVar5; + *(undefined8 *)pcVar7 = uVar2; + *(undefined8 *)(pcVar7 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_20, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + iVar14 = iVar14 + 1; + puVar11 = puVar11 + 1; + cv::String::deallocate((String *)&local_20); + uVar13 = param_1[1]; + uVar15 = uVar8 + uVar15 * 0x5bd1e995; + if ((int)uVar13 <= iVar14) goto LAB_0025ee0c; + } + iVar14 = iVar14 + 1; + puVar11 = puVar11 + 1; + uVar15 = uVar8 + uVar15 * 0x5bd1e995; + } while (iVar14 < (int)uVar13); +LAB_0025ee0c: + uVar8 = *param_1; + uVar9 = uVar15 & 0x7fffffff; + } + for (puVar11 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar15 & param_1[10] - 1) * 8); + puVar11 != (uint *)0x0; puVar11 = *(uint **)(puVar11 + 2)) { + if (*puVar11 == uVar9) { + if ((int)uVar13 < 1) { + if (uVar13 == 0) { +LAB_0025ee90: + lVar6 = (long)puVar11 + (long)(int)param_1[0xb]; + goto LAB_0025eea0; + } + } + else if (*param_2 == *(uint *)((long)puVar11 + (long)(int)param_1[0xc])) { + uVar15 = 0; + puVar10 = (uint *)((long)puVar11 + (long)(int)param_1[0xc] + 4); + puVar12 = param_2; + do { + puVar12 = puVar12 + 1; + uVar15 = uVar15 + 1; + if (uVar15 == uVar13) goto LAB_0025ee90; + uVar1 = *puVar10; + puVar10 = puVar10 + 1; + } while (*puVar12 == uVar1); + } + } + } + lVar6 = 0; +LAB_0025eea0: + local_44 = uVar8 & 0xfff; + } + if (lVar6 != 0) { + cvRawDataToScalar(lVar6,local_44,local_40); + } + auVar16._8_8_ = 0; + auVar16._0_8_ = local_40[0]; + return auVar16; +} + + +================================================================== + +### FUNC 0025eec8 (1172 bytes) name=cvGetReal1D + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvGetReal1D(uint *param_1,uint param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined1 uVar8; + float *pfVar9; + undefined8 *puVar10; + char *pcVar11; + uint *puVar12; + uint *puVar13; + uint uVar14; + uint *puVar15; + uint uVar16; + uint uVar17; + int iVar18; + long lVar19; + uint uVar20; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + uint local_24 [5]; + undefined8 local_10; + undefined8 local_8; + + local_24[0] = param_2; + local_24[4] = 0; + if (param_1 != (uint *)0x0) { + uVar16 = *param_1; + if ((uVar16 & 0xffff0000) == 0x42420000) { + uVar14 = param_1[9]; + if ((((0 < (int)uVar14) && (uVar17 = param_1[8], 0 < (int)uVar17)) && + (lVar19 = *(long *)(param_1 + 6), lVar19 != 0)) && ((uVar16 >> 0xe & 1) != 0)) { + local_24[4] = uVar16 & 0xfff; + if (((uVar14 + uVar17) - 1 <= param_2) && (uVar14 * uVar17 <= param_2)) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar5 = s_index_is_out_of_range_00461a50[0x14]; + uVar2 = s_index_is_out_of_range_00461a50._8_8_; + uVar1 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar11[0x14] = cVar5; + *(undefined8 *)pcVar11 = uVar1; + *(undefined8 *)(pcVar11 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10,"double cvGetReal1D(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x801); + cv::String::deallocate((String *)&local_10); + lVar19 = *(long *)(param_1 + 6); + } + pfVar9 = (float *)(lVar19 + (long)(int)((uVar16 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar16 & 7) << 1)) & 3)) + * (long)(int)param_2); + goto joined_r0x0025f18c; + } + } + else if ((uVar16 & 0xffff0000) == 0x42440000) { + uVar14 = param_1[1]; + if ((int)uVar14 < 2) { + if (uVar14 == 1) { + lVar19 = 0; + uVar20 = 0; + do { + uVar16 = local_24[lVar19]; + iVar18 = (int)lVar19; + if (param_1[(long)iVar18 + 0xd] <= uVar16) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar1 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + *(undefined2 *)(pcVar11 + 0x1c) = uVar4; + *(undefined8 *)pcVar11 = uVar1; + *(undefined8 *)(pcVar11 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_10, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_10); + uVar14 = param_1[1]; + } + lVar19 = lVar19 + 1; + uVar20 = uVar16 + uVar20 * 0x5bd1e995; + } while (iVar18 + 1 < (int)uVar14); + uVar16 = *param_1; + uVar17 = uVar20 & 0x7fffffff; + } + else { + uVar17 = 0; + uVar20 = 0; + } + for (puVar15 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar20 & param_1[10] - 1) * 8 + ); puVar15 != (uint *)0x0; puVar15 = *(uint **)(puVar15 + 2)) { + if (*puVar15 == uVar17) { + if ((int)uVar14 < 1) { + if (uVar14 == 0) { +LAB_0025f32c: + pfVar9 = (float *)((long)puVar15 + (long)(int)param_1[0xb]); + goto LAB_0025f334; + } + } + else { + puVar12 = (uint *)((long)puVar15 + (long)(int)param_1[0xc]); + if (local_24[0] == *(uint *)((long)puVar15 + (long)(int)param_1[0xc])) { + puVar13 = local_24; + uVar20 = 0; + do { + puVar13 = puVar13 + 1; + uVar20 = uVar20 + 1; + if (uVar20 == uVar14) goto LAB_0025f32c; + puVar12 = puVar12 + 1; + } while (*puVar13 == *puVar12); + } + } + } + } + pfVar9 = (float *)0x0; +LAB_0025f334: + local_24[4] = uVar16 & 0xfff; + goto joined_r0x0025f18c; + } + } + } + pfVar9 = (float *)cvPtr1D(param_1,param_2,local_24 + 4); +joined_r0x0025f18c: + if (pfVar9 == (float *)0x0) { + s_One_of_indices_is_out_of_range_004618d8[0] = + (char)s_One_of_indices_is_out_of_range_004618d8._0_8_; + s_One_of_indices_is_out_of_range_004618d8[1] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,1); + s_One_of_indices_is_out_of_range_004618d8[2] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,2); + s_One_of_indices_is_out_of_range_004618d8[3] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,3); + s_One_of_indices_is_out_of_range_004618d8[4] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,4); + s_One_of_indices_is_out_of_range_004618d8[5] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,5); + s_One_of_indices_is_out_of_range_004618d8[6] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,6); + s_One_of_indices_is_out_of_range_004618d8[7] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,7); + s_One_of_indices_is_out_of_range_004618d8[8] = + (char)s_One_of_indices_is_out_of_range_004618d8._8_8_; + s_One_of_indices_is_out_of_range_004618d8[9] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,1); + s_One_of_indices_is_out_of_range_004618d8[10] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,2); + s_One_of_indices_is_out_of_range_004618d8[0xb] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,3); + s_One_of_indices_is_out_of_range_004618d8[0xc] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,4); + s_One_of_indices_is_out_of_range_004618d8[0xd] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,5); + s_One_of_indices_is_out_of_range_004618d8[0xe] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,6); + s_One_of_indices_is_out_of_range_004618d8[0xf] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,7); + s_One_of_indices_is_out_of_range_004618d8[0x10] = + (char)s_One_of_indices_is_out_of_range_004618d8._16_8_; + s_One_of_indices_is_out_of_range_004618d8[0x11] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,1); + s_One_of_indices_is_out_of_range_004618d8[0x12] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,2); + s_One_of_indices_is_out_of_range_004618d8[0x13] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,3); + s_One_of_indices_is_out_of_range_004618d8[0x14] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,4); + s_One_of_indices_is_out_of_range_004618d8[0x15] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,5); + s_One_of_indices_is_out_of_range_004618d8[0x16] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,6); + s_One_of_indices_is_out_of_range_004618d8[0x17] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,7); + s_One_of_indices_is_out_of_range_004618d8[0x18] = + (char)s_One_of_indices_is_out_of_range_004618d8._24_4_; + s_One_of_indices_is_out_of_range_004618d8[0x19] = + SUB41(s_One_of_indices_is_out_of_range_004618d8._24_4_,1); + s_One_of_indices_is_out_of_range_004618d8[0x1a] = + SUB41(s_One_of_indices_is_out_of_range_004618d8._24_4_,2); + s_One_of_indices_is_out_of_range_004618d8[0x1b] = + SUB41(s_One_of_indices_is_out_of_range_004618d8._24_4_,3); + s_One_of_indices_is_out_of_range_004618d8[0x1c] = + (char)s_One_of_indices_is_out_of_range_004618d8._28_2_; + s_One_of_indices_is_out_of_range_004618d8[0x1d] = + SUB21(s_One_of_indices_is_out_of_range_004618d8._28_2_,1); + s_index_is_out_of_range_00461a50[0] = (char)s_index_is_out_of_range_00461a50._0_8_; + s_index_is_out_of_range_00461a50[1] = SUB81(s_index_is_out_of_range_00461a50._0_8_,1); + s_index_is_out_of_range_00461a50[2] = SUB81(s_index_is_out_of_range_00461a50._0_8_,2); + s_index_is_out_of_range_00461a50[3] = SUB81(s_index_is_out_of_range_00461a50._0_8_,3); + s_index_is_out_of_range_00461a50[4] = SUB81(s_index_is_out_of_range_00461a50._0_8_,4); + s_index_is_out_of_range_00461a50[5] = SUB81(s_index_is_out_of_range_00461a50._0_8_,5); + s_index_is_out_of_range_00461a50[6] = SUB81(s_index_is_out_of_range_00461a50._0_8_,6); + s_index_is_out_of_range_00461a50[7] = SUB81(s_index_is_out_of_range_00461a50._0_8_,7); + s_index_is_out_of_range_00461a50[8] = (char)s_index_is_out_of_range_00461a50._8_8_; + s_index_is_out_of_range_00461a50[9] = SUB81(s_index_is_out_of_range_00461a50._8_8_,1); + s_index_is_out_of_range_00461a50[10] = SUB81(s_index_is_out_of_range_00461a50._8_8_,2); + s_index_is_out_of_range_00461a50[0xb] = SUB81(s_index_is_out_of_range_00461a50._8_8_,3); + s_index_is_out_of_range_00461a50[0xc] = SUB81(s_index_is_out_of_range_00461a50._8_8_,4); + s_index_is_out_of_range_00461a50[0xd] = SUB81(s_index_is_out_of_range_00461a50._8_8_,5); + s_index_is_out_of_range_00461a50[0xe] = SUB81(s_index_is_out_of_range_00461a50._8_8_,6); + s_index_is_out_of_range_00461a50[0xf] = SUB81(s_index_is_out_of_range_00461a50._8_8_,7); + s_index_is_out_of_range_00461a50[0x10] = (char)s_index_is_out_of_range_00461a50._16_4_; + s_index_is_out_of_range_00461a50[0x11] = SUB41(s_index_is_out_of_range_00461a50._16_4_,1); + s_index_is_out_of_range_00461a50[0x12] = SUB41(s_index_is_out_of_range_00461a50._16_4_,2); + s_index_is_out_of_range_00461a50[0x13] = SUB41(s_index_is_out_of_range_00461a50._16_4_,3); + return ZEXT816(0); + } + if ((local_24[4] >> 3 & 0x1ff) != 0) { + local_10 = 0; + local_8 = 0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_10,0x2d); + uVar8 = DAT_00461b0c; + uVar3 = DAT_00461b08; + uVar7 = DAT_00461af8; + uVar6 = _LAB_00461af0; + uVar2 = DAT_00461ae8; + uVar1 = DAT_00461ae0; + puVar10[4] = DAT_00461b00; + *(undefined4 *)(puVar10 + 5) = uVar3; + *(undefined1 *)((long)puVar10 + 0x2c) = uVar8; + *puVar10 = uVar1; + puVar10[1] = uVar2; + puVar10[2] = uVar6; + puVar10[3] = uVar7; + cv::error(-0xf,(String *)&local_10,"double cvGetReal1D(const CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x80d); + cv::String::deallocate((String *)&local_10); + } + switch(local_24[4]) { + case 0: + auVar26._0_8_ = (double)*(byte *)pfVar9; + auVar26._8_8_ = 0; + return auVar26; + case 1: + auVar25._0_8_ = (double)(int)(char)*(byte *)pfVar9; + auVar25._8_8_ = 0; + return auVar25; + case 2: + auVar24._0_8_ = (double)*(ushort *)pfVar9; + auVar24._8_8_ = 0; + return auVar24; + case 3: + auVar23._0_8_ = (double)(int)(short)*(ushort *)pfVar9; + auVar23._8_8_ = 0; + return auVar23; + case 4: + auVar22._0_8_ = (double)(int)*pfVar9; + auVar22._8_8_ = 0; + return auVar22; + case 5: + auVar21._0_8_ = (double)*pfVar9; + auVar21._8_8_ = 0; + return auVar21; + case 6: + auVar27._0_8_ = *(ulong *)pfVar9; + auVar27._8_8_ = 0; + return auVar27; + default: + return ZEXT816(0); + } +} + + +================================================================== + +### FUNC 0025f398 (1248 bytes) name=cvGetReal2D + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvGetReal2D(uint *param_1,uint param_2,uint param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined1 uVar9; + float *pfVar10; + undefined8 *puVar11; + char *pcVar12; + uint uVar13; + uint *puVar14; + uint *puVar15; + uint uVar16; + uint *puVar17; + uint uVar18; + uint uVar19; + int iVar20; + long lVar21; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + uint local_1c; + uint local_18 [2]; + undefined8 local_10; + undefined8 local_8; + + local_1c = 0; + if (param_1 != (uint *)0x0) { + uVar13 = *param_1; + if ((uVar13 & 0xffff0000) == 0x42420000) { + if (((0 < (int)param_1[9]) && (0 < (int)param_1[8])) && + (lVar21 = *(long *)(param_1 + 6), lVar21 != 0)) { + if ((param_1[8] <= param_2) || (param_1[9] <= param_3)) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar6 = s_index_is_out_of_range_00461a50[0x14]; + uVar3 = s_index_is_out_of_range_00461a50._8_8_; + uVar2 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar12[0x14] = cVar6; + *(undefined8 *)pcVar12 = uVar2; + *(undefined8 *)(pcVar12 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10,"double cvGetReal2D(const CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x823); + cv::String::deallocate((String *)&local_10); + uVar13 = *param_1; + lVar21 = *(long *)(param_1 + 6); + } + local_1c = uVar13 & 0xfff; + pfVar10 = (float *)(lVar21 + (long)(int)param_2 * (long)(int)param_1[1] + + (long)(int)(((uVar13 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3) + ) * param_3)); + goto joined_r0x0025f5a0; + } + } + else if ((uVar13 & 0xffff0000) == 0x42440000) { + uVar16 = param_1[1]; + local_18[0] = param_2; + local_18[1] = param_3; + if ((int)uVar16 < 1) { + uVar18 = 0; + uVar19 = 0; + } + else { + lVar21 = 0; + uVar19 = 0; + do { + while( true ) { + uVar13 = local_18[lVar21]; + iVar20 = (int)lVar21; + if (uVar13 < param_1[(long)iVar20 + 0xd]) break; + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x1e); + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar12 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar4; + *(undefined2 *)(pcVar12 + 0x1c) = uVar5; + *(undefined8 *)pcVar12 = uVar2; + *(undefined8 *)(pcVar12 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_10); + uVar16 = param_1[1]; + lVar21 = lVar21 + 1; + uVar19 = uVar13 + uVar19 * 0x5bd1e995; + if ((int)uVar16 <= iVar20 + 1) goto LAB_0025f7c4; + } + lVar21 = lVar21 + 1; + uVar19 = uVar13 + uVar19 * 0x5bd1e995; + } while (iVar20 + 1 < (int)uVar16); +LAB_0025f7c4: + uVar13 = *param_1; + uVar18 = uVar19 & 0x7fffffff; + } + puVar17 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar19 & param_1[10] - 1) * 8); + if (puVar17 != (uint *)0x0) { + do { + if (*puVar17 == uVar18) { + if ((int)uVar16 < 1) { + if (uVar16 == 0) { +LAB_0025f848: + pfVar10 = (float *)((long)puVar17 + (long)(int)param_1[0xb]); + goto LAB_0025f858; + } + } + else if (param_2 == *(uint *)((long)puVar17 + (long)(int)param_1[0xc])) { + uVar19 = 0; + puVar14 = (uint *)((long)puVar17 + (long)(int)param_1[0xc] + 4); + puVar15 = local_18; + do { + puVar15 = puVar15 + 1; + uVar19 = uVar19 + 1; + if (uVar19 == uVar16) goto LAB_0025f848; + uVar1 = *puVar14; + puVar14 = puVar14 + 1; + } while (*puVar15 == uVar1); + } + } + puVar17 = *(uint **)(puVar17 + 2); + } while (puVar17 != (uint *)0x0); + } + pfVar10 = (float *)0x0; +LAB_0025f858: + local_1c = uVar13 & 0xfff; + goto joined_r0x0025f5a0; + } + } + pfVar10 = (float *)cvPtr2D(param_1,param_2,param_3,&local_1c); +joined_r0x0025f5a0: + if (pfVar10 != (float *)0x0) { + if ((local_1c >> 3 & 0x1ff) != 0) { + local_10 = 0; + local_8 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_10,0x2d); + uVar9 = DAT_00461b0c; + uVar4 = DAT_00461b08; + uVar8 = DAT_00461af8; + uVar7 = _LAB_00461af0; + uVar3 = DAT_00461ae8; + uVar2 = DAT_00461ae0; + puVar11[4] = DAT_00461b00; + *(undefined4 *)(puVar11 + 5) = uVar4; + *(undefined1 *)((long)puVar11 + 0x2c) = uVar9; + *puVar11 = uVar2; + puVar11[1] = uVar3; + puVar11[2] = uVar7; + puVar11[3] = uVar8; + cv::error(-0xf,(String *)&local_10,"double cvGetReal2D(const CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x833); + cv::String::deallocate((String *)&local_10); + } + switch(local_1c) { + case 0: + auVar27._0_8_ = (double)*(byte *)pfVar10; + auVar27._8_8_ = 0; + return auVar27; + case 1: + auVar26._0_8_ = (double)(int)(char)*(byte *)pfVar10; + auVar26._8_8_ = 0; + return auVar26; + case 2: + auVar25._0_8_ = (double)*(ushort *)pfVar10; + auVar25._8_8_ = 0; + return auVar25; + case 3: + auVar24._0_8_ = (double)(int)(short)*(ushort *)pfVar10; + auVar24._8_8_ = 0; + return auVar24; + case 4: + auVar23._0_8_ = (double)(int)*pfVar10; + auVar23._8_8_ = 0; + return auVar23; + case 5: + auVar22._0_8_ = (double)*pfVar10; + auVar22._8_8_ = 0; + return auVar22; + case 6: + auVar28._0_8_ = *(ulong *)pfVar10; + auVar28._8_8_ = 0; + return auVar28; + default: + return ZEXT816(0); + } + } + s_One_of_indices_is_out_of_range_004618d8[0] = + (char)s_One_of_indices_is_out_of_range_004618d8._0_8_; + s_One_of_indices_is_out_of_range_004618d8[1] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,1); + s_One_of_indices_is_out_of_range_004618d8[2] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,2); + s_One_of_indices_is_out_of_range_004618d8[3] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,3); + s_One_of_indices_is_out_of_range_004618d8[4] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,4); + s_One_of_indices_is_out_of_range_004618d8[5] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,5); + s_One_of_indices_is_out_of_range_004618d8[6] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,6); + s_One_of_indices_is_out_of_range_004618d8[7] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._0_8_,7); + s_One_of_indices_is_out_of_range_004618d8[8] = + (char)s_One_of_indices_is_out_of_range_004618d8._8_8_; + s_One_of_indices_is_out_of_range_004618d8[9] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,1); + s_One_of_indices_is_out_of_range_004618d8[10] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,2); + s_One_of_indices_is_out_of_range_004618d8[0xb] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,3); + s_One_of_indices_is_out_of_range_004618d8[0xc] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,4); + s_One_of_indices_is_out_of_range_004618d8[0xd] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,5); + s_One_of_indices_is_out_of_range_004618d8[0xe] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,6); + s_One_of_indices_is_out_of_range_004618d8[0xf] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._8_8_,7); + s_One_of_indices_is_out_of_range_004618d8[0x10] = + (char)s_One_of_indices_is_out_of_range_004618d8._16_8_; + s_One_of_indices_is_out_of_range_004618d8[0x11] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,1); + s_One_of_indices_is_out_of_range_004618d8[0x12] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,2); + s_One_of_indices_is_out_of_range_004618d8[0x13] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,3); + s_One_of_indices_is_out_of_range_004618d8[0x14] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,4); + s_One_of_indices_is_out_of_range_004618d8[0x15] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,5); + s_One_of_indices_is_out_of_range_004618d8[0x16] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,6); + s_One_of_indices_is_out_of_range_004618d8[0x17] = + SUB81(s_One_of_indices_is_out_of_range_004618d8._16_8_,7); + s_One_of_indices_is_out_of_range_004618d8[0x18] = + (char)s_One_of_indices_is_out_of_range_004618d8._24_4_; + s_One_of_indices_is_out_of_range_004618d8[0x19] = + SUB41(s_One_of_indices_is_out_of_range_004618d8._24_4_,1); + s_One_of_indices_is_out_of_range_004618d8[0x1a] = + SUB41(s_One_of_indices_is_out_of_range_004618d8._24_4_,2); + s_One_of_indices_is_out_of_range_004618d8[0x1b] = + SUB41(s_One_of_indices_is_out_of_range_004618d8._24_4_,3); + s_One_of_indices_is_out_of_range_004618d8[0x1c] = + (char)s_One_of_indices_is_out_of_range_004618d8._28_2_; + s_One_of_indices_is_out_of_range_004618d8[0x1d] = + SUB21(s_One_of_indices_is_out_of_range_004618d8._28_2_,1); + s_index_is_out_of_range_00461a50[0] = (char)s_index_is_out_of_range_00461a50._0_8_; + s_index_is_out_of_range_00461a50[1] = SUB81(s_index_is_out_of_range_00461a50._0_8_,1); + s_index_is_out_of_range_00461a50[2] = SUB81(s_index_is_out_of_range_00461a50._0_8_,2); + s_index_is_out_of_range_00461a50[3] = SUB81(s_index_is_out_of_range_00461a50._0_8_,3); + s_index_is_out_of_range_00461a50[4] = SUB81(s_index_is_out_of_range_00461a50._0_8_,4); + s_index_is_out_of_range_00461a50[5] = SUB81(s_index_is_out_of_range_00461a50._0_8_,5); + s_index_is_out_of_range_00461a50[6] = SUB81(s_index_is_out_of_range_00461a50._0_8_,6); + s_index_is_out_of_range_00461a50[7] = SUB81(s_index_is_out_of_range_00461a50._0_8_,7); + s_index_is_out_of_range_00461a50[8] = (char)s_index_is_out_of_range_00461a50._8_8_; + s_index_is_out_of_range_00461a50[9] = SUB81(s_index_is_out_of_range_00461a50._8_8_,1); + s_index_is_out_of_range_00461a50[10] = SUB81(s_index_is_out_of_range_00461a50._8_8_,2); + s_index_is_out_of_range_00461a50[0xb] = SUB81(s_index_is_out_of_range_00461a50._8_8_,3); + s_index_is_out_of_range_00461a50[0xc] = SUB81(s_index_is_out_of_range_00461a50._8_8_,4); + s_index_is_out_of_range_00461a50[0xd] = SUB81(s_index_is_out_of_range_00461a50._8_8_,5); + s_index_is_out_of_range_00461a50[0xe] = SUB81(s_index_is_out_of_range_00461a50._8_8_,6); + s_index_is_out_of_range_00461a50[0xf] = SUB81(s_index_is_out_of_range_00461a50._8_8_,7); + s_index_is_out_of_range_00461a50[0x10] = (char)s_index_is_out_of_range_00461a50._16_4_; + s_index_is_out_of_range_00461a50[0x11] = SUB41(s_index_is_out_of_range_00461a50._16_4_,1); + s_index_is_out_of_range_00461a50[0x12] = SUB41(s_index_is_out_of_range_00461a50._16_4_,2); + s_index_is_out_of_range_00461a50[0x13] = SUB41(s_index_is_out_of_range_00461a50._16_4_,3); + return ZEXT816(0); +} + + +================================================================== + +### FUNC 0025f8b4 (1016 bytes) name=cvGetReal3D + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvGetReal3D(uint *param_1,uint param_2,undefined8 param_3,undefined8 param_4) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined1 uVar8; + float *pfVar9; + undefined8 *puVar10; + char *pcVar11; + uint uVar12; + uint *puVar13; + uint *puVar14; + uint uVar15; + uint *puVar16; + uint uVar17; + uint uVar18; + int iVar19; + long lVar20; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + uint local_24; + uint local_20 [4]; + undefined8 local_10; + undefined8 local_8; + + local_24 = 0; + if ((param_1 == (uint *)0x0) || (uVar12 = *param_1, (uVar12 & 0xffff0000) != 0x42440000)) { + pfVar9 = (float *)cvPtr3D(param_1,param_2,param_3,param_4,&local_24); + } + else { + uVar15 = param_1[1]; + local_20[0] = param_2; + local_20[1] = (int)param_3; + local_20[2] = (int)param_4; + if ((int)uVar15 < 1) { + uVar17 = 0; + uVar18 = 0; + } + else { + lVar20 = 0; + uVar18 = 0; + do { + while( true ) { + uVar12 = local_20[lVar20]; + iVar19 = (int)lVar20; + if (uVar12 < param_1[(long)iVar19 + 0xd]) break; + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x1e); + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar4; + *(undefined2 *)(pcVar11 + 0x1c) = uVar5; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_10); + uVar15 = param_1[1]; + lVar20 = lVar20 + 1; + uVar18 = uVar12 + uVar18 * 0x5bd1e995; + if ((int)uVar15 <= iVar19 + 1) goto LAB_0025fbd4; + } + lVar20 = lVar20 + 1; + uVar18 = uVar12 + uVar18 * 0x5bd1e995; + } while (iVar19 + 1 < (int)uVar15); +LAB_0025fbd4: + uVar12 = *param_1; + uVar17 = uVar18 & 0x7fffffff; + } + puVar16 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar18 & param_1[10] - 1) * 8); + if (puVar16 != (uint *)0x0) { + do { + if (*puVar16 == uVar17) { + if ((int)uVar15 < 1) { + if (uVar15 == 0) { +LAB_0025fc58: + pfVar9 = (float *)((long)puVar16 + (long)(int)param_1[0xb]); + goto LAB_0025fc8c; + } + } + else if (param_2 == *(uint *)((long)puVar16 + (long)(int)param_1[0xc])) { + uVar18 = 0; + puVar13 = (uint *)((long)puVar16 + (long)(int)param_1[0xc] + 4); + puVar14 = local_20; + do { + puVar14 = puVar14 + 1; + uVar18 = uVar18 + 1; + if (uVar18 == uVar15) goto LAB_0025fc58; + uVar1 = *puVar13; + puVar13 = puVar13 + 1; + } while (*puVar14 == uVar1); + } + } + puVar16 = *(uint **)(puVar16 + 2); + } while (puVar16 != (uint *)0x0); + } + pfVar9 = (float *)0x0; +LAB_0025fc8c: + local_24 = uVar12 & 0xfff; + } + if (pfVar9 != (float *)0x0) { + if ((local_24 >> 3 & 0x1ff) != 0) { + local_10 = 0; + local_8 = 0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_10,0x2d); + uVar8 = DAT_00461b0c; + uVar4 = DAT_00461b08; + uVar7 = DAT_00461af8; + uVar6 = _LAB_00461af0; + uVar3 = DAT_00461ae8; + uVar2 = DAT_00461ae0; + puVar10[4] = DAT_00461b00; + *(undefined4 *)(puVar10 + 5) = uVar4; + *(undefined1 *)((long)puVar10 + 0x2c) = uVar8; + *puVar10 = uVar2; + puVar10[1] = uVar3; + puVar10[2] = uVar6; + puVar10[3] = uVar7; + cv::error(-0xf,(String *)&local_10,"double cvGetReal3D(const CvArr*, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x84f); + cv::String::deallocate((String *)&local_10); + } + switch(local_24) { + case 0: + auVar26._0_8_ = (double)*(byte *)pfVar9; + auVar26._8_8_ = 0; + return auVar26; + case 1: + auVar25._0_8_ = (double)(int)(char)*(byte *)pfVar9; + auVar25._8_8_ = 0; + return auVar25; + case 2: + auVar24._0_8_ = (double)*(ushort *)pfVar9; + auVar24._8_8_ = 0; + return auVar24; + case 3: + auVar23._0_8_ = (double)(int)(short)*(ushort *)pfVar9; + auVar23._8_8_ = 0; + return auVar23; + case 4: + auVar22._0_8_ = (double)(int)*pfVar9; + auVar22._8_8_ = 0; + return auVar22; + case 5: + auVar21._0_8_ = (double)*pfVar9; + auVar21._8_8_ = 0; + return auVar21; + case 6: + auVar27._0_8_ = *(ulong *)pfVar9; + auVar27._8_8_ = 0; + return auVar27; + default: + return ZEXT816(0); + } + } + return ZEXT816(0); +} + + +================================================================== + +### FUNC 0025fcd4 (1008 bytes) name=cvGetRealND + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvGetRealND(uint *param_1,uint *param_2) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined1 uVar8; + float *pfVar9; + undefined8 *puVar10; + char *pcVar11; + uint uVar12; + uint *puVar13; + uint *puVar14; + uint uVar15; + uint *puVar16; + uint uVar17; + int iVar18; + uint uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + uint local_14; + undefined8 local_10; + undefined8 local_8; + + local_14 = 0; + if ((param_1 == (uint *)0x0) || (uVar12 = *param_1, (uVar12 & 0xffff0000) != 0x42440000)) { + pfVar9 = (float *)cvPtrND(param_1,param_2,&local_14,1,0); + } + else { + uVar15 = param_1[1]; + uVar17 = 0; + uVar19 = 0; + if (0 < (int)uVar15) { + uVar19 = 0; + iVar18 = 0; + puVar16 = param_2; + do { + while (uVar12 = *puVar16, param_1[(long)iVar18 + 0xd] <= uVar12) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x1e); + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar4; + *(undefined2 *)(pcVar11 + 0x1c) = uVar5; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + iVar18 = iVar18 + 1; + puVar16 = puVar16 + 1; + cv::String::deallocate((String *)&local_10); + uVar15 = param_1[1]; + uVar19 = uVar12 + uVar19 * 0x5bd1e995; + if ((int)uVar15 <= iVar18) goto LAB_0025fff8; + } + iVar18 = iVar18 + 1; + puVar16 = puVar16 + 1; + uVar19 = uVar12 + uVar19 * 0x5bd1e995; + } while (iVar18 < (int)uVar15); +LAB_0025fff8: + uVar12 = *param_1; + uVar17 = uVar19 & 0x7fffffff; + } + for (puVar16 = *(uint **)(*(long *)(param_1 + 8) + (long)(int)(uVar19 & param_1[10] - 1) * 8); + puVar16 != (uint *)0x0; puVar16 = *(uint **)(puVar16 + 2)) { + if (*puVar16 == uVar17) { + if ((int)uVar15 < 1) { + if (uVar15 == 0) { +LAB_0026007c: + pfVar9 = (float *)((long)puVar16 + (long)(int)param_1[0xb]); + goto LAB_002600b0; + } + } + else if (*param_2 == *(uint *)((long)puVar16 + (long)(int)param_1[0xc])) { + uVar19 = 0; + puVar13 = (uint *)((long)puVar16 + (long)(int)param_1[0xc] + 4); + puVar14 = param_2; + do { + puVar14 = puVar14 + 1; + uVar19 = uVar19 + 1; + if (uVar19 == uVar15) goto LAB_0026007c; + uVar1 = *puVar13; + puVar13 = puVar13 + 1; + } while (*puVar14 == uVar1); + } + } + } + pfVar9 = (float *)0x0; +LAB_002600b0: + local_14 = uVar12 & 0xfff; + } + if (pfVar9 == (float *)0x0) { + return ZEXT816(0); + } + if ((local_14 >> 3 & 0x1ff) != 0) { + local_10 = 0; + local_8 = 0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_10,0x2d); + uVar8 = DAT_00461b0c; + uVar4 = DAT_00461b08; + uVar7 = DAT_00461af8; + uVar6 = _LAB_00461af0; + uVar3 = DAT_00461ae8; + uVar2 = DAT_00461ae0; + puVar10[4] = DAT_00461b00; + *(undefined4 *)(puVar10 + 5) = uVar4; + *(undefined1 *)((long)puVar10 + 0x2c) = uVar8; + *puVar10 = uVar2; + puVar10[1] = uVar3; + puVar10[2] = uVar6; + puVar10[3] = uVar7; + cv::error(-0xf,(String *)&local_10,"double cvGetRealND(const CvArr*, const int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x868); + cv::String::deallocate((String *)&local_10); + } + switch(local_14) { + case 0: + auVar25._0_8_ = (double)*(byte *)pfVar9; + auVar25._8_8_ = 0; + return auVar25; + case 1: + auVar24._0_8_ = (double)(int)(char)*(byte *)pfVar9; + auVar24._8_8_ = 0; + return auVar24; + case 2: + auVar23._0_8_ = (double)*(ushort *)pfVar9; + auVar23._8_8_ = 0; + return auVar23; + case 3: + auVar22._0_8_ = (double)(int)(short)*(ushort *)pfVar9; + auVar22._8_8_ = 0; + return auVar22; + case 4: + auVar21._0_8_ = (double)(int)*pfVar9; + auVar21._8_8_ = 0; + return auVar21; + case 5: + auVar20._0_8_ = (double)*pfVar9; + auVar20._8_8_ = 0; + return auVar20; + case 6: + auVar26._0_8_ = *(ulong *)pfVar9; + auVar26._8_8_ = 0; + return auVar26; + default: + return ZEXT816(0); + } +} + + +================================================================== + +### FUNC 002600ec (1208 bytes) name=cvSet1D + +void cvSet1D(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + uint *param_5,uint param_6) + +{ + uint uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + long lVar6; + char *pcVar7; + uint *puVar8; + void *__s; + uint *puVar9; + uint *puVar10; + undefined8 *puVar11; + undefined8 uVar12; + uint uVar13; + int iVar14; + uint uVar15; + uint uVar16; + ulong uVar17; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + uint local_24 [3]; + uint *local_18; + uint *local_10; + uint local_8; + + local_24[0] = param_6; + local_24[2] = 0; + local_48 = param_1; + local_40 = param_2; + local_38 = param_3; + local_30 = param_4; + if (param_5 != (uint *)0x0) { + uVar13 = *param_5; + if ((uVar13 & 0xffff0000) == 0x42420000) { + uVar15 = param_5[9]; + if ((((0 < (int)uVar15) && (uVar16 = param_5[8], 0 < (int)uVar16)) && + (lVar6 = *(long *)(param_5 + 6), lVar6 != 0)) && ((uVar13 >> 0xe & 1) != 0)) { + local_24[2] = uVar13 & 0xfff; + if (((uVar15 + uVar16) - 1 <= param_6) && (uVar15 * uVar16 <= param_6)) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar7 = (char *)cv::String::allocate((String *)&local_18,0x15); + cVar5 = s_index_is_out_of_range_00461a50[0x14]; + uVar2 = s_index_is_out_of_range_00461a50._8_8_; + uVar12 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar7[0x14] = cVar5; + *(undefined8 *)pcVar7 = uVar12; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_18,"void cvSet1D(CvArr*, int, CvScalar)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x883); + cv::String::deallocate((String *)&local_18); + lVar6 = *(long *)(param_5 + 6); + } + lVar6 = lVar6 + (long)(int)((uVar13 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3)) * + (long)(int)param_6; + goto LAB_0026015c; + } + } + else if ((uVar13 & 0xffff0000) == 0x42440000) { + uVar13 = param_5[1]; + if ((int)uVar13 < 2) { + if (uVar13 == 1) { + lVar6 = 0; + uVar16 = 0; + do { + uVar15 = local_24[lVar6]; + iVar14 = (int)lVar6; + if (param_5[(long)iVar14 + 0xd] <= uVar15) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar7 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar12 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar3; + *(undefined2 *)(pcVar7 + 0x1c) = uVar4; + *(undefined8 *)pcVar7 = uVar12; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar13 = param_5[1]; + } + lVar6 = lVar6 + 1; + uVar16 = uVar15 + uVar16 * 0x5bd1e995; + } while (iVar14 + 1 < (int)uVar13); + uVar15 = uVar16 & 0x7fffffff; + } + else { + uVar15 = 0; + uVar16 = 0; + } + uVar1 = param_5[10]; + uVar16 = uVar16 & uVar1 - 1; + uVar17 = -(ulong)(uVar16 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar16 << 3; + for (puVar9 = *(uint **)(*(long *)(param_5 + 8) + uVar17); puVar9 != (uint *)0x0; + puVar9 = *(uint **)(puVar9 + 2)) { + if (*puVar9 == uVar15) { + if ((int)uVar13 < 1) { + if (uVar13 == 0) { +LAB_002603b4: + lVar6 = (long)puVar9 + (long)(int)param_5[0xb]; + if (lVar6 != 0) goto LAB_002603c0; + break; + } + } + else { + puVar10 = (uint *)((long)puVar9 + (long)(int)param_5[0xc]); + if (local_24[0] == *(uint *)((long)puVar9 + (long)(int)param_5[0xc])) { + puVar8 = local_24; + uVar16 = 0; + do { + puVar8 = puVar8 + 1; + uVar16 = uVar16 + 1; + if (uVar16 == uVar13) goto LAB_002603b4; + puVar10 = puVar10 + 1; + } while (*puVar8 == *puVar10); + } + } + } + } + lVar6 = *(long *)(param_5 + 6); + uVar13 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar6 + 0x68)) { + if ((int)uVar13 < 0x400) { + uVar13 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar13 << 3)); + memset(__s,0,(long)(int)(uVar13 << 3)); + puVar9 = (uint *)cvInitSparseMatIterator(param_5,&local_18); + if (puVar9 != (uint *)0x0) { + uVar16 = uVar13 - 1; + while( true ) { + puVar8 = *(uint **)(local_10 + 2); + puVar10 = puVar9; + while (puVar9 = puVar8, puVar9 != (uint *)0x0) { + lVar6 = (ulong)(uVar16 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + puVar10 = puVar9; + local_10 = puVar9; + puVar8 = *(uint **)(puVar9 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar11 = (undefined8 *)(*(long *)(local_18 + 8) + uVar17); + puVar9 = *(uint **)(*(long *)(local_18 + 8) + uVar17); + local_8 = uVar1; + while (puVar9 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00260520; + puVar11 = puVar11 + 1; + puVar9 = (uint *)*puVar11; + } + lVar6 = (ulong)(uVar16 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + local_10 = puVar9; + } +LAB_00260520: + lVar6 = (ulong)(uVar16 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + local_8 = uVar1; + } + uVar17 = (ulong)(uVar13 - 1 & uVar15) << 3; + cv::cvFree_(*(void **)(param_5 + 8)); + *(void **)(param_5 + 8) = __s; + lVar6 = *(long *)(param_5 + 6); + param_5[10] = uVar13; + } + local_18 = *(uint **)(lVar6 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar6,0,&local_18); + } + else { + uVar13 = *local_18; + iVar14 = *(int *)(lVar6 + 0x68); + *(undefined8 *)(lVar6 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar13 & 0x3ffffff; + *(int *)(lVar6 + 0x68) = iVar14 + 1; + } + puVar9 = local_18; + lVar6 = *(long *)(param_5 + 8); + uVar13 = param_5[0xc]; + uVar16 = param_5[1]; + uVar12 = *(undefined8 *)(lVar6 + uVar17); + *local_18 = uVar15; + *(undefined8 *)(local_18 + 2) = uVar12; + *(uint **)(lVar6 + uVar17) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar13),local_24,(long)(int)uVar16 << 2); + lVar6 = (long)puVar9 + (long)(int)param_5[0xb]; +LAB_002603c0: + local_24[2] = *param_5 & 0xfff; + goto LAB_0026015c; + } + } + } + lVar6 = cvPtr1D(param_5,param_6,local_24 + 2); +LAB_0026015c: + cvScalarToRawData(&local_48,lVar6,local_24[2],0); + return; +} + + +================================================================== + +### FUNC 002605cc (1240 bytes) name=cvSet2D + +void cvSet2D(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + uint *param_5,uint param_6,uint param_7) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + long lVar7; + char *pcVar8; + void *__s; + uint *puVar9; + undefined8 *puVar10; + uint *puVar11; + undefined8 uVar12; + uint uVar13; + uint *puVar14; + int iVar15; + uint uVar16; + uint uVar17; + ulong uVar18; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + uint local_24; + uint local_20 [2]; + uint *local_18; + uint *local_10; + uint local_8; + + local_24 = 0; + local_50 = param_1; + local_48 = param_2; + local_40 = param_3; + local_38 = param_4; + if (param_5 != (uint *)0x0) { + uVar13 = *param_5; + if ((uVar13 & 0xffff0000) == 0x42420000) { + if (((0 < (int)param_5[9]) && (0 < (int)param_5[8])) && + (lVar7 = *(long *)(param_5 + 6), lVar7 != 0)) { + if ((param_5[8] <= param_6) || (param_5[9] <= param_7)) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_18,0x15); + cVar6 = s_index_is_out_of_range_00461a50[0x14]; + uVar3 = s_index_is_out_of_range_00461a50._8_8_; + uVar12 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar8[0x14] = cVar6; + *(undefined8 *)pcVar8 = uVar12; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18,"void cvSet2D(CvArr*, int, int, CvScalar)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x89d); + cv::String::deallocate((String *)&local_18); + uVar13 = *param_5; + lVar7 = *(long *)(param_5 + 6); + } + local_24 = uVar13 & 0xfff; + lVar7 = lVar7 + (long)(int)param_6 * (long)(int)param_5[1] + + (long)(int)(((uVar13 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3)) * param_7); + goto LAB_00260648; + } + } + else if ((uVar13 & 0xffff0000) == 0x42440000) { + uVar13 = param_5[1]; + local_20[0] = param_6; + local_20[1] = param_7; + if ((int)uVar13 < 1) { + uVar16 = 0; + uVar17 = 0; + } + else { + lVar7 = 0; + uVar17 = 0; + do { + while( true ) { + uVar16 = local_20[lVar7]; + iVar15 = (int)lVar7; + if (uVar16 < param_5[(long)iVar15 + 0xd]) break; + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar12 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar4; + *(undefined2 *)(pcVar8 + 0x1c) = uVar5; + *(undefined8 *)pcVar8 = uVar12; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar13 = param_5[1]; + lVar7 = lVar7 + 1; + uVar17 = uVar16 + uVar17 * 0x5bd1e995; + if ((int)uVar13 <= iVar15 + 1) goto LAB_00260834; + } + lVar7 = lVar7 + 1; + uVar17 = uVar16 + uVar17 * 0x5bd1e995; + } while (iVar15 + 1 < (int)uVar13); +LAB_00260834: + uVar16 = uVar17 & 0x7fffffff; + } + uVar1 = param_5[10]; + uVar17 = uVar17 & uVar1 - 1; + uVar18 = -(ulong)(uVar17 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar17 << 3; + puVar14 = *(uint **)(*(long *)(param_5 + 8) + uVar18); + if (puVar14 != (uint *)0x0) { + do { + if (*puVar14 == uVar16) { + if ((int)uVar13 < 1) { + if (uVar13 == 0) { +LAB_002608b8: + lVar7 = (long)puVar14 + (long)(int)param_5[0xb]; + if (lVar7 != 0) goto LAB_0026093c; + break; + } + } + else if (param_6 == *(uint *)((long)puVar14 + (long)(int)param_5[0xc])) { + uVar17 = 0; + puVar9 = (uint *)((long)puVar14 + (long)(int)param_5[0xc] + 4); + puVar11 = local_20; + do { + puVar11 = puVar11 + 1; + uVar17 = uVar17 + 1; + if (uVar17 == uVar13) goto LAB_002608b8; + uVar2 = *puVar9; + puVar9 = puVar9 + 1; + } while (*puVar11 == uVar2); + } + } + puVar14 = *(uint **)(puVar14 + 2); + } while (puVar14 != (uint *)0x0); + } + lVar7 = *(long *)(param_5 + 6); + uVar13 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar7 + 0x68)) { + if ((int)uVar13 < 0x400) { + uVar13 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar13 << 3)); + memset(__s,0,(long)(int)(uVar13 << 3)); + puVar14 = (uint *)cvInitSparseMatIterator(param_5,&local_18); + if (puVar14 != (uint *)0x0) { + uVar17 = uVar13 - 1; + while( true ) { + puVar9 = *(uint **)(local_10 + 2); + puVar11 = puVar14; + while (puVar14 = puVar9, puVar14 != (uint *)0x0) { + lVar7 = (ulong)(uVar17 & *puVar11) * 8; + *(undefined8 *)(puVar11 + 2) = *(undefined8 *)((long)__s + lVar7); + *(uint **)((long)__s + lVar7) = puVar11; + puVar11 = puVar14; + local_10 = puVar14; + puVar9 = *(uint **)(puVar14 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar10 = (undefined8 *)(*(long *)(local_18 + 8) + uVar18); + puVar14 = *(uint **)(*(long *)(local_18 + 8) + uVar18); + local_8 = uVar1; + while (puVar14 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00260a20; + puVar10 = puVar10 + 1; + puVar14 = (uint *)*puVar10; + } + lVar7 = (ulong)(uVar17 & *puVar11) * 8; + *(undefined8 *)(puVar11 + 2) = *(undefined8 *)((long)__s + lVar7); + *(uint **)((long)__s + lVar7) = puVar11; + local_10 = puVar14; + } +LAB_00260a20: + lVar7 = (ulong)(uVar17 & *puVar11) * 8; + *(undefined8 *)(puVar11 + 2) = *(undefined8 *)((long)__s + lVar7); + *(uint **)((long)__s + lVar7) = puVar11; + local_8 = uVar1; + } + uVar18 = (ulong)(uVar13 - 1 & uVar16) << 3; + cv::cvFree_(*(void **)(param_5 + 8)); + *(void **)(param_5 + 8) = __s; + lVar7 = *(long *)(param_5 + 6); + param_5[10] = uVar13; + } + local_18 = *(uint **)(lVar7 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar7,0,&local_18); + } + else { + uVar13 = *local_18; + iVar15 = *(int *)(lVar7 + 0x68); + *(undefined8 *)(lVar7 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar13 & 0x3ffffff; + *(int *)(lVar7 + 0x68) = iVar15 + 1; + } + puVar14 = local_18; + lVar7 = *(long *)(param_5 + 8); + uVar13 = param_5[0xc]; + uVar17 = param_5[1]; + uVar12 = *(undefined8 *)(lVar7 + uVar18); + *local_18 = uVar16; + *(undefined8 *)(local_18 + 2) = uVar12; + *(uint **)(lVar7 + uVar18) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar13),local_20,(long)(int)uVar17 << 2); + lVar7 = (long)puVar14 + (long)(int)param_5[0xb]; +LAB_0026093c: + local_24 = *param_5 & 0xfff; + goto LAB_00260648; + } + } + lVar7 = cvPtr2D(param_5,param_6,param_7,&local_24); +LAB_00260648: + cvScalarToRawData(&local_50,lVar7,local_24,0); + return; +} + + +================================================================== + +### FUNC 00260acc (1008 bytes) name=cvSet3D + +void cvSet3D(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + uint *param_5,uint param_6,undefined8 param_7,undefined8 param_8) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + long lVar6; + char *pcVar7; + void *__s; + uint *puVar8; + undefined8 *puVar9; + uint *puVar10; + undefined8 uVar11; + uint uVar12; + uint *puVar13; + int iVar14; + uint uVar15; + uint uVar16; + ulong uVar17; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + uint local_2c; + uint local_28 [4]; + uint *local_18; + uint *local_10; + uint local_8; + + local_2c = 0; + local_50 = param_1; + local_48 = param_2; + local_40 = param_3; + local_38 = param_4; + if ((param_5 == (uint *)0x0) || ((*param_5 & 0xffff0000) != 0x42440000)) { + lVar6 = cvPtr3D(param_5,param_6,param_7,param_8,&local_2c); + } + else { + uVar12 = param_5[1]; + local_28[0] = param_6; + local_28[1] = (int)param_7; + local_28[2] = (int)param_8; + if ((int)uVar12 < 1) { + uVar15 = 0; + uVar16 = 0; + } + else { + lVar6 = 0; + uVar16 = 0; + do { + while( true ) { + uVar15 = local_28[lVar6]; + iVar14 = (int)lVar6; + if (uVar15 < param_5[(long)iVar14 + 0xd]) break; + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar7 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar11 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar4; + *(undefined2 *)(pcVar7 + 0x1c) = uVar5; + *(undefined8 *)pcVar7 = uVar11; + *(undefined8 *)(pcVar7 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar12 = param_5[1]; + lVar6 = lVar6 + 1; + uVar16 = uVar15 + uVar16 * 0x5bd1e995; + if ((int)uVar12 <= iVar14 + 1) goto LAB_00260c4c; + } + lVar6 = lVar6 + 1; + uVar16 = uVar15 + uVar16 * 0x5bd1e995; + } while (iVar14 + 1 < (int)uVar12); +LAB_00260c4c: + uVar15 = uVar16 & 0x7fffffff; + } + uVar1 = param_5[10]; + uVar16 = uVar16 & uVar1 - 1; + uVar17 = -(ulong)(uVar16 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar16 << 3; + puVar13 = *(uint **)(*(long *)(param_5 + 8) + uVar17); + if (puVar13 != (uint *)0x0) { + do { + if (*puVar13 == uVar15) { + if ((int)uVar12 < 1) { + if (uVar12 == 0) { +LAB_00260cd0: + lVar6 = (long)puVar13 + (long)(int)param_5[0xb]; + if (lVar6 != 0) goto LAB_00260d54; + break; + } + } + else if (param_6 == *(uint *)((long)puVar13 + (long)(int)param_5[0xc])) { + uVar16 = 0; + puVar8 = (uint *)((long)puVar13 + (long)(int)param_5[0xc] + 4); + puVar10 = local_28; + do { + puVar10 = puVar10 + 1; + uVar16 = uVar16 + 1; + if (uVar16 == uVar12) goto LAB_00260cd0; + uVar2 = *puVar8; + puVar8 = puVar8 + 1; + } while (*puVar10 == uVar2); + } + } + puVar13 = *(uint **)(puVar13 + 2); + } while (puVar13 != (uint *)0x0); + } + lVar6 = *(long *)(param_5 + 6); + uVar12 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar6 + 0x68)) { + if ((int)uVar12 < 0x400) { + uVar12 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar12 << 3)); + memset(__s,0,(long)(int)(uVar12 << 3)); + puVar13 = (uint *)cvInitSparseMatIterator(param_5,&local_18); + if (puVar13 != (uint *)0x0) { + uVar16 = uVar12 - 1; + while( true ) { + puVar8 = *(uint **)(local_10 + 2); + puVar10 = puVar13; + while (puVar13 = puVar8, puVar13 != (uint *)0x0) { + lVar6 = (ulong)(uVar16 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + puVar10 = puVar13; + local_10 = puVar13; + puVar8 = *(uint **)(puVar13 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar9 = (undefined8 *)(*(long *)(local_18 + 8) + uVar17); + puVar13 = *(uint **)(*(long *)(local_18 + 8) + uVar17); + local_8 = uVar1; + while (puVar13 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00260e38; + puVar9 = puVar9 + 1; + puVar13 = (uint *)*puVar9; + } + lVar6 = (ulong)(uVar16 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + local_10 = puVar13; + } +LAB_00260e38: + lVar6 = (ulong)(uVar16 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + local_8 = uVar1; + } + uVar17 = (ulong)(uVar12 - 1 & uVar15) << 3; + cv::cvFree_(*(void **)(param_5 + 8)); + *(void **)(param_5 + 8) = __s; + lVar6 = *(long *)(param_5 + 6); + param_5[10] = uVar12; + } + local_18 = *(uint **)(lVar6 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar6,0,&local_18); + } + else { + uVar12 = *local_18; + iVar14 = *(int *)(lVar6 + 0x68); + *(undefined8 *)(lVar6 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar12 & 0x3ffffff; + *(int *)(lVar6 + 0x68) = iVar14 + 1; + } + puVar13 = local_18; + lVar6 = *(long *)(param_5 + 8); + uVar12 = param_5[0xc]; + uVar16 = param_5[1]; + uVar11 = *(undefined8 *)(lVar6 + uVar17); + *local_18 = uVar15; + *(undefined8 *)(local_18 + 2) = uVar11; + *(uint **)(lVar6 + uVar17) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar12),local_28,(long)(int)uVar16 << 2); + lVar6 = (long)puVar13 + (long)(int)param_5[0xb]; +LAB_00260d54: + local_2c = *param_5 & 0xfff; + } + cvScalarToRawData(&local_50,lVar6,local_2c,0); + return; +} + + +================================================================== + +### FUNC 00260ed0 (1000 bytes) name=cvSetND + +void cvSetND(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + uint *param_5,uint *param_6) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + long lVar6; + char *pcVar7; + void *__s; + uint *puVar8; + undefined8 *puVar9; + uint *puVar10; + undefined8 uVar11; + uint uVar12; + uint *puVar13; + int iVar14; + uint uVar15; + uint uVar16; + ulong uVar17; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + uint local_1c; + uint *local_18; + uint *local_10; + uint local_8; + + local_1c = 0; + local_40 = param_1; + local_38 = param_2; + local_30 = param_3; + local_28 = param_4; + if ((param_5 == (uint *)0x0) || ((*param_5 & 0xffff0000) != 0x42440000)) { + lVar6 = cvPtrND(param_5,param_6,&local_1c,1,0); + } + else { + uVar12 = param_5[1]; + uVar15 = 0; + uVar16 = 0; + if (0 < (int)uVar12) { + uVar16 = 0; + iVar14 = 0; + puVar13 = param_6; + do { + while (uVar15 = *puVar13, uVar15 < param_5[(long)iVar14 + 0xd]) { + iVar14 = iVar14 + 1; + puVar13 = puVar13 + 1; + uVar16 = uVar15 + uVar16 * 0x5bd1e995; + if ((int)uVar12 <= iVar14) goto LAB_00261054; + } + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar7 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar5 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar11 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar4; + *(undefined2 *)(pcVar7 + 0x1c) = uVar5; + *(undefined8 *)pcVar7 = uVar11; + *(undefined8 *)(pcVar7 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + iVar14 = iVar14 + 1; + puVar13 = puVar13 + 1; + cv::String::deallocate((String *)&local_18); + uVar12 = param_5[1]; + uVar16 = uVar15 + uVar16 * 0x5bd1e995; + } while (iVar14 < (int)uVar12); +LAB_00261054: + uVar15 = uVar16 & 0x7fffffff; + } + uVar1 = param_5[10]; + uVar16 = uVar16 & uVar1 - 1; + uVar17 = -(ulong)(uVar16 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar16 << 3; + for (puVar13 = *(uint **)(*(long *)(param_5 + 8) + uVar17); puVar13 != (uint *)0x0; + puVar13 = *(uint **)(puVar13 + 2)) { + if (*puVar13 == uVar15) { + if ((int)uVar12 < 1) { + if (uVar12 == 0) { +LAB_002610d8: + lVar6 = (long)puVar13 + (long)(int)param_5[0xb]; + if (lVar6 != 0) goto LAB_0026115c; + break; + } + } + else if (*param_6 == *(uint *)((long)puVar13 + (long)(int)param_5[0xc])) { + uVar16 = 0; + puVar8 = (uint *)((long)puVar13 + (long)(int)param_5[0xc] + 4); + puVar10 = param_6; + do { + puVar10 = puVar10 + 1; + uVar16 = uVar16 + 1; + if (uVar16 == uVar12) goto LAB_002610d8; + uVar2 = *puVar8; + puVar8 = puVar8 + 1; + } while (*puVar10 == uVar2); + } + } + } + lVar6 = *(long *)(param_5 + 6); + uVar16 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar6 + 0x68)) { + if ((int)uVar16 < 0x400) { + uVar16 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar16 << 3)); + memset(__s,0,(long)(int)(uVar16 << 3)); + puVar13 = (uint *)cvInitSparseMatIterator(param_5,&local_18); + if (puVar13 != (uint *)0x0) { + uVar12 = uVar16 - 1; + while( true ) { + puVar8 = *(uint **)(local_10 + 2); + puVar10 = puVar13; + while (puVar13 = puVar8, puVar13 != (uint *)0x0) { + lVar6 = (ulong)(uVar12 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + puVar10 = puVar13; + local_10 = puVar13; + puVar8 = *(uint **)(puVar13 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar9 = (undefined8 *)(*(long *)(local_18 + 8) + uVar17); + puVar13 = *(uint **)(*(long *)(local_18 + 8) + uVar17); + local_8 = uVar1; + while (puVar13 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00261240; + puVar9 = puVar9 + 1; + puVar13 = (uint *)*puVar9; + } + lVar6 = (ulong)(uVar12 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + local_10 = puVar13; + } +LAB_00261240: + lVar6 = (ulong)(uVar12 & *puVar10) * 8; + *(undefined8 *)(puVar10 + 2) = *(undefined8 *)((long)__s + lVar6); + *(uint **)((long)__s + lVar6) = puVar10; + local_8 = uVar1; + } + uVar17 = (ulong)(uVar16 - 1 & uVar15) << 3; + cv::cvFree_(*(void **)(param_5 + 8)); + *(void **)(param_5 + 8) = __s; + lVar6 = *(long *)(param_5 + 6); + param_5[10] = uVar16; + } + local_18 = *(uint **)(lVar6 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar6,0,&local_18); + } + else { + uVar16 = *local_18; + iVar14 = *(int *)(lVar6 + 0x68); + *(undefined8 *)(lVar6 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar16 & 0x3ffffff; + *(int *)(lVar6 + 0x68) = iVar14 + 1; + } + puVar13 = local_18; + lVar6 = *(long *)(param_5 + 8); + uVar16 = param_5[0xc]; + uVar12 = param_5[1]; + uVar11 = *(undefined8 *)(lVar6 + uVar17); + *local_18 = uVar15; + *(undefined8 *)(local_18 + 2) = uVar11; + *(uint **)(lVar6 + uVar17) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar16),param_6,(long)(int)uVar12 << 2); + lVar6 = (long)puVar13 + (long)(int)param_5[0xb]; +LAB_0026115c: + local_1c = *param_5 & 0xfff; + } + cvScalarToRawData(&local_40,lVar6,local_1c,0); + return; +} + + +================================================================== + +### FUNC 002612cc (1584 bytes) name=cvSetReal1D + +void cvSetReal1D(double param_1,uint *param_2,uint param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined4 uVar3; + char cVar4; + undefined8 uVar5; + undefined8 uVar6; + uint uVar7; + double *pdVar8; + char *pcVar9; + void *__s; + undefined2 uVar11; + uint *puVar12; + undefined1 uVar13; + ulong uVar14; + uint *puVar15; + undefined8 *puVar16; + uint uVar17; + undefined8 uVar18; + uint *puVar19; + int iVar20; + uint uVar21; + uint local_24 [3]; + uint *local_18; + uint *local_10; + uint local_8; + long lVar10; + + local_24[0] = param_3; + local_24[2] = 0; + if (param_2 != (uint *)0x0) { + uVar17 = *param_2; + if ((uVar17 & 0xffff0000) == 0x42420000) { + uVar7 = param_2[9]; + if ((((0 < (int)uVar7) && (uVar21 = param_2[8], 0 < (int)uVar21)) && + (lVar10 = *(long *)(param_2 + 6), lVar10 != 0)) && ((uVar17 >> 0xe & 1) != 0)) { + local_24[2] = uVar17 & 0xfff; + uVar14 = (ulong)local_24[2]; + if (((uVar7 + uVar21) - 1 <= param_3) && (uVar7 * uVar21 <= param_3)) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x15); + cVar4 = s_index_is_out_of_range_00461a50[0x14]; + uVar2 = s_index_is_out_of_range_00461a50._8_8_; + uVar18 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar9 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar9[0x14] = cVar4; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_18,"void cvSetReal1D(CvArr*, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x8df); + cv::String::deallocate((String *)&local_18); + lVar10 = *(long *)(param_2 + 6); + uVar14 = (ulong)local_24[2]; + } + pdVar8 = (double *) + (lVar10 + (long)(int)((uVar17 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar17 & 7) << 1)) & 3)) * + (long)(int)param_3); + goto LAB_00261334; + } + } + else if ((uVar17 & 0xffff0000) == 0x42440000) { + uVar17 = param_2[1]; + if ((int)uVar17 < 2) { + if (uVar17 == 1) { + lVar10 = 0; + uVar21 = 0; + do { + uVar7 = local_24[lVar10]; + iVar20 = (int)lVar10; + if (param_2[(long)iVar20 + 0xd] <= uVar7) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar11 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar18 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar3; + *(undefined2 *)(pcVar9 + 0x1c) = uVar11; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar2; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar17 = param_2[1]; + } + lVar10 = lVar10 + 1; + uVar21 = uVar7 + uVar21 * 0x5bd1e995; + } while (iVar20 + 1 < (int)uVar17); + uVar7 = uVar21 & 0x7fffffff; + } + else { + uVar7 = 0; + uVar21 = 0; + } + uVar1 = param_2[10]; + uVar21 = uVar21 & uVar1 - 1; + uVar14 = -(ulong)(uVar21 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar21 << 3; + for (puVar19 = *(uint **)(*(long *)(param_2 + 8) + uVar14); puVar19 != (uint *)0x0; + puVar19 = *(uint **)(puVar19 + 2)) { + if (*puVar19 == uVar7) { + if ((int)uVar17 < 1) { + if (uVar17 == 0) { +LAB_0026170c: + pdVar8 = (double *)((long)puVar19 + (long)(int)param_2[0xb]); + if (pdVar8 != (double *)0x0) goto LAB_00261718; + break; + } + } + else { + puVar12 = (uint *)((long)puVar19 + (long)(int)param_2[0xc]); + if (local_24[0] == *(uint *)((long)puVar19 + (long)(int)param_2[0xc])) { + puVar15 = local_24; + uVar21 = 0; + do { + puVar15 = puVar15 + 1; + uVar21 = uVar21 + 1; + if (uVar21 == uVar17) goto LAB_0026170c; + puVar12 = puVar12 + 1; + } while (*puVar15 == *puVar12); + } + } + } + } + lVar10 = *(long *)(param_2 + 6); + uVar17 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar10 + 0x68)) { + if ((int)uVar17 < 0x400) { + uVar17 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar17 << 3)); + memset(__s,0,(long)(int)(uVar17 << 3)); + puVar19 = (uint *)cvInitSparseMatIterator(param_2,&local_18); + if (puVar19 != (uint *)0x0) { + uVar21 = uVar17 - 1; + while( true ) { + puVar15 = *(uint **)(local_10 + 2); + puVar12 = puVar19; + while (puVar19 = puVar15, puVar19 != (uint *)0x0) { + lVar10 = (ulong)(uVar21 & *puVar12) * 8; + *(undefined8 *)(puVar12 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar12; + puVar12 = puVar19; + local_10 = puVar19; + puVar15 = *(uint **)(puVar19 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar14 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar16 = (undefined8 *)(*(long *)(local_18 + 8) + uVar14); + puVar19 = *(uint **)(*(long *)(local_18 + 8) + uVar14); + local_8 = uVar1; + while (puVar19 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00261878; + puVar16 = puVar16 + 1; + puVar19 = (uint *)*puVar16; + } + lVar10 = (ulong)(uVar21 & *puVar12) * 8; + *(undefined8 *)(puVar12 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar12; + local_10 = puVar19; + } +LAB_00261878: + lVar10 = (ulong)(uVar21 & *puVar12) * 8; + *(undefined8 *)(puVar12 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar12; + local_8 = uVar1; + } + uVar14 = (ulong)(uVar17 - 1 & uVar7) << 3; + cv::cvFree_(*(void **)(param_2 + 8)); + *(void **)(param_2 + 8) = __s; + lVar10 = *(long *)(param_2 + 6); + param_2[10] = uVar17; + } + local_18 = *(uint **)(lVar10 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar10,0,&local_18); + } + else { + uVar17 = *local_18; + iVar20 = *(int *)(lVar10 + 0x68); + *(undefined8 *)(lVar10 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar17 & 0x3ffffff; + *(int *)(lVar10 + 0x68) = iVar20 + 1; + } + puVar19 = local_18; + lVar10 = *(long *)(param_2 + 8); + uVar17 = param_2[0xc]; + uVar21 = param_2[1]; + uVar18 = *(undefined8 *)(lVar10 + uVar14); + *local_18 = uVar7; + *(undefined8 *)(local_18 + 2) = uVar18; + *(uint **)(lVar10 + uVar14) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar17),local_24,(long)(int)uVar21 << 2); + pdVar8 = (double *)((long)puVar19 + (long)(int)param_2[0xb]); +LAB_00261718: + local_24[2] = *param_2 & 0xfff; + uVar14 = (ulong)local_24[2]; + goto LAB_00261334; + } + } + } + pdVar8 = (double *)cvPtr1D(param_2,param_3,local_24 + 2); + uVar14 = (ulong)local_24[2]; +LAB_00261334: + if ((uVar14 >> 3 & 0x1ff) != 0) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x2d); + cVar4 = s_cvSetReal__support_only_single_c_00461b10[0x2c]; + uVar3 = s_cvSetReal__support_only_single_c_00461b10._40_4_; + uVar6 = s_cvSetReal__support_only_single_c_00461b10._24_8_; + uVar5 = s_cvSetReal__support_only_single_c_00461b10._16_8_; + uVar2 = s_cvSetReal__support_only_single_c_00461b10._8_8_; + uVar18 = s_cvSetReal__support_only_single_c_00461b10._0_8_; + *(undefined8 *)(pcVar9 + 0x20) = s_cvSetReal__support_only_single_c_00461b10._32_8_; + *(undefined4 *)(pcVar9 + 0x28) = uVar3; + pcVar9[0x2c] = cVar4; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar2; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + cv::error(-0xf,(String *)&local_18,"void cvSetReal1D(CvArr*, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x8e9); + cv::String::deallocate((String *)&local_18); + } + uVar17 = local_24[2]; + if (pdVar8 != (double *)0x0) { + if ((int)local_24[2] < 5) { + lVar10 = lrint(param_1); + uVar7 = (uint)lVar10; + switch(uVar17) { + case 0: + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *(char *)pdVar8 = (char)uVar7; + break; + case 1: + uVar13 = (undefined1)lVar10; + if ((0xff < uVar7 + 0x80) && (uVar13 = 0x7f, (int)uVar7 < 1)) { + uVar13 = 0x80; + } + *(undefined1 *)pdVar8 = uVar13; + break; + case 2: + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + *(short *)pdVar8 = (short)uVar7; + break; + case 3: + uVar11 = (undefined2)lVar10; + if ((0xffff < uVar7 + 0x8000) && (uVar11 = 0x7fff, (int)uVar7 < 1)) { + uVar11 = 0x8000; + } + *(undefined2 *)pdVar8 = uVar11; + break; + case 4: + *(uint *)pdVar8 = uVar7; + } + } + else { + if (local_24[2] == 5) { + *(float *)pdVar8 = (float)param_1; + return; + } + if (local_24[2] == 6) { + *pdVar8 = param_1; + } + } + } + return; +} + + +================================================================== + +### FUNC 00261938 (1588 bytes) name=cvSetReal2D + +void cvSetReal2D(double param_1,uint *param_2,uint param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + double *pdVar8; + char *pcVar9; + long lVar10; + uint *puVar11; + void *__s; + undefined2 uVar12; + undefined1 uVar13; + ulong uVar14; + uint *puVar15; + undefined8 *puVar16; + uint *puVar17; + undefined8 uVar18; + uint uVar19; + int iVar20; + uint uVar21; + uint uVar22; + uint local_24; + uint local_20 [2]; + uint *local_18; + uint *local_10; + uint local_8; + + local_24 = 0; + if (param_2 != (uint *)0x0) { + uVar19 = *param_2; + if ((uVar19 & 0xffff0000) == 0x42420000) { + if (((0 < (int)param_2[9]) && (0 < (int)param_2[8])) && + (lVar10 = *(long *)(param_2 + 6), lVar10 != 0)) { + if ((param_2[8] <= param_3) || (param_2[9] <= param_4)) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x15); + cVar5 = s_index_is_out_of_range_00461a50[0x14]; + uVar3 = s_index_is_out_of_range_00461a50._8_8_; + uVar18 = s_index_is_out_of_range_00461a50._0_8_; + *(undefined4 *)(pcVar9 + 0x10) = s_index_is_out_of_range_00461a50._16_4_; + pcVar9[0x14] = cVar5; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18,"void cvSetReal2D(CvArr*, int, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x8fc); + cv::String::deallocate((String *)&local_18); + uVar19 = *param_2; + lVar10 = *(long *)(param_2 + 6); + } + local_24 = uVar19 & 0xfff; + uVar14 = (ulong)local_24; + pdVar8 = (double *) + (lVar10 + (long)(int)param_3 * (long)(int)param_2[1] + + (long)(int)(((uVar19 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar19 & 7) << 1)) & 3)) * + param_4)); + goto LAB_002619ac; + } + } + else if ((uVar19 & 0xffff0000) == 0x42440000) { + uVar19 = param_2[1]; + local_20[0] = param_3; + local_20[1] = param_4; + if ((int)uVar19 < 1) { + uVar21 = 0; + uVar22 = 0; + } + else { + lVar10 = 0; + uVar22 = 0; + do { + while( true ) { + uVar21 = local_20[lVar10]; + iVar20 = (int)lVar10; + if (uVar21 < param_2[(long)iVar20 + 0xd]) break; + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar12 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar18 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar4; + *(undefined2 *)(pcVar9 + 0x1c) = uVar12; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar19 = param_2[1]; + lVar10 = lVar10 + 1; + uVar22 = uVar21 + uVar22 * 0x5bd1e995; + if ((int)uVar19 <= iVar20 + 1) goto LAB_00261c64; + } + lVar10 = lVar10 + 1; + uVar22 = uVar21 + uVar22 * 0x5bd1e995; + } while (iVar20 + 1 < (int)uVar19); +LAB_00261c64: + uVar21 = uVar22 & 0x7fffffff; + } + uVar1 = param_2[10]; + uVar22 = uVar22 & uVar1 - 1; + uVar14 = -(ulong)(uVar22 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar22 << 3; + puVar11 = *(uint **)(*(long *)(param_2 + 8) + uVar14); + if (puVar11 != (uint *)0x0) { + do { + if (*puVar11 == uVar21) { + if ((int)uVar19 < 1) { + if (uVar19 == 0) { +LAB_00261ce8: + pdVar8 = (double *)((long)puVar11 + (long)(int)param_2[0xb]); + if (pdVar8 != (double *)0x0) goto LAB_00261d6c; + break; + } + } + else if (param_3 == *(uint *)((long)puVar11 + (long)(int)param_2[0xc])) { + uVar22 = 0; + puVar15 = (uint *)((long)puVar11 + (long)(int)param_2[0xc] + 4); + puVar17 = local_20; + do { + puVar17 = puVar17 + 1; + uVar22 = uVar22 + 1; + if (uVar22 == uVar19) goto LAB_00261ce8; + uVar2 = *puVar15; + puVar15 = puVar15 + 1; + } while (*puVar17 == uVar2); + } + } + puVar11 = *(uint **)(puVar11 + 2); + } while (puVar11 != (uint *)0x0); + } + lVar10 = *(long *)(param_2 + 6); + uVar19 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar10 + 0x68)) { + if ((int)uVar19 < 0x400) { + uVar19 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar19 << 3)); + memset(__s,0,(long)(int)(uVar19 << 3)); + puVar11 = (uint *)cvInitSparseMatIterator(param_2,&local_18); + if (puVar11 != (uint *)0x0) { + uVar22 = uVar19 - 1; + while( true ) { + puVar15 = *(uint **)(local_10 + 2); + puVar17 = puVar11; + while (puVar11 = puVar15, puVar11 != (uint *)0x0) { + lVar10 = (ulong)(uVar22 & *puVar17) * 8; + *(undefined8 *)(puVar17 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar17; + puVar17 = puVar11; + local_10 = puVar11; + puVar15 = *(uint **)(puVar11 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar14 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar16 = (undefined8 *)(*(long *)(local_18 + 8) + uVar14); + puVar11 = *(uint **)(*(long *)(local_18 + 8) + uVar14); + local_8 = uVar1; + while (puVar11 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00261ee0; + puVar16 = puVar16 + 1; + puVar11 = (uint *)*puVar16; + } + lVar10 = (ulong)(uVar22 & *puVar17) * 8; + *(undefined8 *)(puVar17 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar17; + local_10 = puVar11; + } +LAB_00261ee0: + lVar10 = (ulong)(uVar22 & *puVar17) * 8; + *(undefined8 *)(puVar17 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar17; + local_8 = uVar1; + } + uVar14 = (ulong)(uVar19 - 1 & uVar21) << 3; + cv::cvFree_(*(void **)(param_2 + 8)); + *(void **)(param_2 + 8) = __s; + lVar10 = *(long *)(param_2 + 6); + param_2[10] = uVar19; + } + local_18 = *(uint **)(lVar10 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar10,0,&local_18); + } + else { + uVar19 = *local_18; + iVar20 = *(int *)(lVar10 + 0x68); + *(undefined8 *)(lVar10 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar19 & 0x3ffffff; + *(int *)(lVar10 + 0x68) = iVar20 + 1; + } + puVar11 = local_18; + lVar10 = *(long *)(param_2 + 8); + uVar19 = param_2[0xc]; + uVar22 = param_2[1]; + uVar18 = *(undefined8 *)(lVar10 + uVar14); + *local_18 = uVar21; + *(undefined8 *)(local_18 + 2) = uVar18; + *(uint **)(lVar10 + uVar14) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar19),local_20,(long)(int)uVar22 << 2); + pdVar8 = (double *)((long)puVar11 + (long)(int)param_2[0xb]); +LAB_00261d6c: + local_24 = *param_2 & 0xfff; + uVar14 = (ulong)local_24; + goto LAB_002619ac; + } + } + pdVar8 = (double *)cvPtr2D(param_2,param_3,param_4,&local_24); + uVar14 = (ulong)local_24; +LAB_002619ac: + if ((uVar14 >> 3 & 0x1ff) != 0) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x2d); + cVar5 = s_cvSetReal__support_only_single_c_00461b10[0x2c]; + uVar4 = s_cvSetReal__support_only_single_c_00461b10._40_4_; + uVar7 = s_cvSetReal__support_only_single_c_00461b10._24_8_; + uVar6 = s_cvSetReal__support_only_single_c_00461b10._16_8_; + uVar3 = s_cvSetReal__support_only_single_c_00461b10._8_8_; + uVar18 = s_cvSetReal__support_only_single_c_00461b10._0_8_; + *(undefined8 *)(pcVar9 + 0x20) = s_cvSetReal__support_only_single_c_00461b10._32_8_; + *(undefined4 *)(pcVar9 + 0x28) = uVar4; + pcVar9[0x2c] = cVar5; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar3; + *(undefined8 *)(pcVar9 + 0x10) = uVar6; + *(undefined8 *)(pcVar9 + 0x18) = uVar7; + cv::error(-0xf,(String *)&local_18,"void cvSetReal2D(CvArr*, int, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x90b); + cv::String::deallocate((String *)&local_18); + } + uVar19 = local_24; + if (pdVar8 != (double *)0x0) { + if ((int)local_24 < 5) { + lVar10 = lrint(param_1); + uVar21 = (uint)lVar10; + switch(uVar19) { + case 0: + if (0xff < uVar21) { + uVar21 = -(uint)(0 < (int)uVar21); + } + *(char *)pdVar8 = (char)uVar21; + break; + case 1: + uVar13 = (undefined1)lVar10; + if ((0xff < uVar21 + 0x80) && (uVar13 = 0x7f, (int)uVar21 < 1)) { + uVar13 = 0x80; + } + *(undefined1 *)pdVar8 = uVar13; + break; + case 2: + if (0xffff < uVar21) { + uVar21 = -(uint)(0 < (int)uVar21); + } + *(short *)pdVar8 = (short)uVar21; + break; + case 3: + uVar12 = (undefined2)lVar10; + if ((0xffff < uVar21 + 0x8000) && (uVar12 = 0x7fff, (int)uVar21 < 1)) { + uVar12 = 0x8000; + } + *(undefined2 *)pdVar8 = uVar12; + break; + case 4: + *(uint *)pdVar8 = uVar21; + } + } + else if (local_24 == 5) { + *(float *)pdVar8 = (float)param_1; + } + else if (local_24 == 6) { + *pdVar8 = param_1; + } + } + return; +} + + +================================================================== + +### FUNC 00261fa8 (1356 bytes) name=cvSetReal3D + +void cvSetReal3D(double param_1,uint *param_2,uint param_3,undefined8 param_4,undefined8 param_5) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + double *pdVar8; + char *pcVar9; + long lVar10; + void *__s; + undefined2 uVar11; + undefined1 uVar12; + uint *puVar13; + undefined8 *puVar14; + uint *puVar15; + undefined8 uVar16; + uint uVar17; + uint *puVar18; + int iVar19; + uint uVar20; + uint uVar21; + ulong uVar22; + uint local_2c; + uint local_28 [4]; + uint *local_18; + uint *local_10; + uint local_8; + + local_2c = 0; + if ((param_2 == (uint *)0x0) || ((*param_2 & 0xffff0000) != 0x42440000)) { + pdVar8 = (double *)cvPtr3D(param_2,param_3,param_4,param_5,&local_2c); + } + else { + uVar17 = param_2[1]; + local_28[0] = param_3; + local_28[1] = (int)param_4; + local_28[2] = (int)param_5; + if ((int)uVar17 < 1) { + uVar20 = 0; + uVar21 = 0; + } + else { + lVar10 = 0; + uVar21 = 0; + do { + while( true ) { + uVar20 = local_28[lVar10]; + iVar19 = (int)lVar10; + if (uVar20 < param_2[(long)iVar19 + 0xd]) break; + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar11 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar16 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar4; + *(undefined2 *)(pcVar9 + 0x1c) = uVar11; + *(undefined8 *)pcVar9 = uVar16; + *(undefined8 *)(pcVar9 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + cv::String::deallocate((String *)&local_18); + uVar17 = param_2[1]; + lVar10 = lVar10 + 1; + uVar21 = uVar20 + uVar21 * 0x5bd1e995; + if ((int)uVar17 <= iVar19 + 1) goto LAB_002621ec; + } + lVar10 = lVar10 + 1; + uVar21 = uVar20 + uVar21 * 0x5bd1e995; + } while (iVar19 + 1 < (int)uVar17); +LAB_002621ec: + uVar20 = uVar21 & 0x7fffffff; + } + uVar1 = param_2[10]; + uVar21 = uVar21 & uVar1 - 1; + uVar22 = -(ulong)(uVar21 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar21 << 3; + puVar18 = *(uint **)(*(long *)(param_2 + 8) + uVar22); + if (puVar18 != (uint *)0x0) { + do { + if (*puVar18 == uVar20) { + if ((int)uVar17 < 1) { + if (uVar17 == 0) { +LAB_00262270: + pdVar8 = (double *)((long)puVar18 + (long)(int)param_2[0xb]); + if (pdVar8 != (double *)0x0) goto LAB_002622f4; + break; + } + } + else if (param_3 == *(uint *)((long)puVar18 + (long)(int)param_2[0xc])) { + uVar21 = 0; + puVar13 = (uint *)((long)puVar18 + (long)(int)param_2[0xc] + 4); + puVar15 = local_28; + do { + puVar15 = puVar15 + 1; + uVar21 = uVar21 + 1; + if (uVar21 == uVar17) goto LAB_00262270; + uVar2 = *puVar13; + puVar13 = puVar13 + 1; + } while (*puVar15 == uVar2); + } + } + puVar18 = *(uint **)(puVar18 + 2); + } while (puVar18 != (uint *)0x0); + } + lVar10 = *(long *)(param_2 + 6); + uVar17 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar10 + 0x68)) { + if ((int)uVar17 < 0x400) { + uVar17 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar17 << 3)); + memset(__s,0,(long)(int)(uVar17 << 3)); + puVar18 = (uint *)cvInitSparseMatIterator(param_2,&local_18); + if (puVar18 != (uint *)0x0) { + uVar21 = uVar17 - 1; + while( true ) { + puVar13 = *(uint **)(local_10 + 2); + puVar15 = puVar18; + while (puVar18 = puVar13, puVar18 != (uint *)0x0) { + lVar10 = (ulong)(uVar21 & *puVar15) * 8; + *(undefined8 *)(puVar15 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar15; + puVar15 = puVar18; + local_10 = puVar18; + puVar13 = *(uint **)(puVar18 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar22 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar14 = (undefined8 *)(*(long *)(local_18 + 8) + uVar22); + puVar18 = *(uint **)(*(long *)(local_18 + 8) + uVar22); + local_8 = uVar1; + while (puVar18 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_00262468; + puVar14 = puVar14 + 1; + puVar18 = (uint *)*puVar14; + } + lVar10 = (ulong)(uVar21 & *puVar15) * 8; + *(undefined8 *)(puVar15 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar15; + local_10 = puVar18; + } +LAB_00262468: + lVar10 = (ulong)(uVar21 & *puVar15) * 8; + *(undefined8 *)(puVar15 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar15; + local_8 = uVar1; + } + uVar22 = (ulong)(uVar17 - 1 & uVar20) << 3; + cv::cvFree_(*(void **)(param_2 + 8)); + *(void **)(param_2 + 8) = __s; + lVar10 = *(long *)(param_2 + 6); + param_2[10] = uVar17; + } + local_18 = *(uint **)(lVar10 + 0x60); + if (local_18 == (uint *)0x0) { + cvSetAdd(lVar10,0,&local_18); + } + else { + uVar17 = *local_18; + iVar19 = *(int *)(lVar10 + 0x68); + *(undefined8 *)(lVar10 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar17 & 0x3ffffff; + *(int *)(lVar10 + 0x68) = iVar19 + 1; + } + puVar18 = local_18; + lVar10 = *(long *)(param_2 + 8); + uVar17 = param_2[0xc]; + uVar21 = param_2[1]; + uVar16 = *(undefined8 *)(lVar10 + uVar22); + *local_18 = uVar20; + *(undefined8 *)(local_18 + 2) = uVar16; + *(uint **)(lVar10 + uVar22) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar17),local_28,(long)(int)uVar21 << 2); + pdVar8 = (double *)((long)puVar18 + (long)(int)param_2[0xb]); +LAB_002622f4: + local_2c = *param_2 & 0xfff; + } + if ((local_2c >> 3 & 0x1ff) != 0) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x2d); + cVar7 = s_cvSetReal__support_only_single_c_00461b10[0x2c]; + uVar4 = s_cvSetReal__support_only_single_c_00461b10._40_4_; + uVar6 = s_cvSetReal__support_only_single_c_00461b10._24_8_; + uVar5 = s_cvSetReal__support_only_single_c_00461b10._16_8_; + uVar3 = s_cvSetReal__support_only_single_c_00461b10._8_8_; + uVar16 = s_cvSetReal__support_only_single_c_00461b10._0_8_; + /* catch() { ... } // from try @ 002620dc with catch @ 0026204c */ + *(undefined8 *)(pcVar9 + 0x20) = s_cvSetReal__support_only_single_c_00461b10._32_8_; + *(undefined4 *)(pcVar9 + 0x28) = uVar4; + /* try { // try from 0026206c to 0036206f has its CatchHandler @ 002620a8 */ + pcVar9[0x2c] = cVar7; + *(undefined8 *)pcVar9 = uVar16; + *(undefined8 *)(pcVar9 + 8) = uVar3; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + cv::error(-0xf,(String *)&local_18,"void cvSetReal3D(CvArr*, int, int, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x920); + cv::String::deallocate((String *)&local_18); + } + uVar17 = local_2c; + if (pdVar8 != (double *)0x0) { + if ((int)local_2c < 5) { + lVar10 = lrint(param_1); + uVar20 = (uint)lVar10; + /* try { // try from 002620dc to 003620df has its CatchHandler @ 0026204c */ + switch(uVar17) { + case 0: + if (0xff < uVar20) { + uVar20 = -(uint)(0 < (int)uVar20); + } + *(char *)pdVar8 = (char)uVar20; + break; + case 1: + uVar12 = (undefined1)lVar10; + if ((0xff < uVar20 + 0x80) && (uVar12 = 0x7f, (int)uVar20 < 1)) { + uVar12 = 0x80; + } + *(undefined1 *)pdVar8 = uVar12; + break; + case 2: + if (0xffff < uVar20) { + uVar20 = -(uint)(0 < (int)uVar20); + } + *(short *)pdVar8 = (short)uVar20; + break; + case 3: + uVar11 = (undefined2)lVar10; + if ((0xffff < uVar20 + 0x8000) && (uVar11 = 0x7fff, (int)uVar20 < 1)) { + uVar11 = 0x8000; + } + *(undefined2 *)pdVar8 = uVar11; + break; + case 4: + *(uint *)pdVar8 = uVar20; + } + } + else if (local_2c == 5) { + *(float *)pdVar8 = (float)param_1; + } + else if (local_2c == 6) { + *pdVar8 = param_1; + } + } + /* catch() { ... } // from try @ 0026206c with catch @ 002620a8 */ + return; +} + + +================================================================== + +### FUNC 0026251c (1348 bytes) name=cvSetRealND + +void cvSetRealND(double param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + double *pdVar8; + char *pcVar9; + long lVar10; + void *__s; + undefined2 uVar11; + undefined1 uVar12; + uint *puVar13; + undefined8 *puVar14; + uint *puVar15; + undefined8 uVar16; + uint uVar17; + uint *puVar18; + int iVar19; + uint uVar20; + uint uVar21; + ulong uVar22; + uint local_1c; + uint *local_18; + uint *local_10; + uint local_8; + + local_1c = 0; + if ((param_2 == (uint *)0x0) || ((*param_2 & 0xffff0000) != 0x42440000)) { + pdVar8 = (double *)cvPtrND(param_2,param_3,&local_1c,1,0); + } + else { + uVar17 = param_2[1]; + uVar20 = 0; + uVar21 = 0; + if (0 < (int)uVar17) { + uVar21 = 0; + iVar19 = 0; + puVar18 = param_3; + do { + while (uVar20 = *puVar18, uVar20 < param_2[(long)iVar19 + 0xd]) { + iVar19 = iVar19 + 1; + puVar18 = puVar18 + 1; + uVar21 = uVar20 + uVar21 * 0x5bd1e995; + if ((int)uVar17 <= iVar19) goto LAB_00262764; + } + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x1e); + uVar11 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar4 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar16 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar4; + *(undefined2 *)(pcVar9 + 0x1c) = uVar11; + *(undefined8 *)pcVar9 = uVar16; + *(undefined8 *)(pcVar9 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_18, + "uchar* icvGetNodePtr(CvSparseMat*, const int*, int*, int, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x299); + iVar19 = iVar19 + 1; + puVar18 = puVar18 + 1; + cv::String::deallocate((String *)&local_18); + uVar17 = param_2[1]; + uVar21 = uVar20 + uVar21 * 0x5bd1e995; + } while (iVar19 < (int)uVar17); +LAB_00262764: + uVar20 = uVar21 & 0x7fffffff; + } + uVar1 = param_2[10]; + uVar21 = uVar21 & uVar1 - 1; + uVar22 = -(ulong)(uVar21 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar21 << 3; + for (puVar18 = *(uint **)(*(long *)(param_2 + 8) + uVar22); puVar18 != (uint *)0x0; + puVar18 = *(uint **)(puVar18 + 2)) { + if (*puVar18 == uVar20) { + if ((int)uVar17 < 1) { + if (uVar17 == 0) { +LAB_002627e8: + pdVar8 = (double *)((long)puVar18 + (long)(int)param_2[0xb]); + if (pdVar8 != (double *)0x0) goto LAB_0026286c; + break; + } + } + else if (*param_3 == *(uint *)((long)puVar18 + (long)(int)param_2[0xc])) { + uVar21 = 0; + puVar13 = (uint *)((long)puVar18 + (long)(int)param_2[0xc] + 4); + puVar15 = param_3; + do { + puVar15 = puVar15 + 1; + uVar21 = uVar21 + 1; + if (uVar21 == uVar17) goto LAB_002627e8; + uVar2 = *puVar13; + puVar13 = puVar13 + 1; + } while (*puVar15 == uVar2); + } + } + } + lVar10 = *(long *)(param_2 + 6); + uVar21 = uVar1 * 2; + if ((int)(uVar1 * 3) <= *(int *)(lVar10 + 0x68)) { + if ((int)uVar21 < 0x400) { + uVar21 = 0x400; + } + __s = (void *)cv::cvAlloc((long)(int)(uVar21 << 3)); + memset(__s,0,(long)(int)(uVar21 << 3)); + puVar18 = (uint *)cvInitSparseMatIterator(param_2,&local_18); + if (puVar18 != (uint *)0x0) { + uVar17 = uVar21 - 1; + while( true ) { + puVar13 = *(uint **)(local_10 + 2); + puVar15 = puVar18; + while (puVar18 = puVar13, puVar18 != (uint *)0x0) { + lVar10 = (ulong)(uVar17 & *puVar15) * 8; + *(undefined8 *)(puVar15 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar15; + puVar15 = puVar18; + local_10 = puVar18; + puVar13 = *(uint **)(puVar18 + 2); + } + uVar1 = local_8 + 1; + if ((int)local_18[10] <= (int)uVar1) break; + uVar22 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar14 = (undefined8 *)(*(long *)(local_18 + 8) + uVar22); + puVar18 = *(uint **)(*(long *)(local_18 + 8) + uVar22); + local_8 = uVar1; + while (puVar18 == (uint *)0x0) { + local_8 = local_8 + 1; + if (local_8 == local_18[10]) goto LAB_002629e0; + puVar14 = puVar14 + 1; + puVar18 = (uint *)*puVar14; + } + lVar10 = (ulong)(uVar17 & *puVar15) * 8; + *(undefined8 *)(puVar15 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar15; + local_10 = puVar18; + } +LAB_002629e0: + lVar10 = (ulong)(uVar17 & *puVar15) * 8; + *(undefined8 *)(puVar15 + 2) = *(undefined8 *)((long)__s + lVar10); + *(uint **)((long)__s + lVar10) = puVar15; + local_8 = uVar1; + } + uVar22 = (ulong)(uVar21 - 1 & uVar20) << 3; + cv::cvFree_(*(void **)(param_2 + 8)); + *(void **)(param_2 + 8) = __s; + lVar10 = *(long *)(param_2 + 6); + param_2[10] = uVar21; + } + local_18 = *(uint **)(lVar10 + 0x60); + if (local_18 == (uint *)0x0) { + /* try { // try from 00262a50 to 00362aa3 has its CatchHandler @ 00262a50 + catch() { ... } // from try @ 00262a50 with catch @ 00262a50 + catch() { ... } // from try @ 00262ab4 with catch @ 00262a50 + catch() { ... } // from try @ 00262b04 with catch @ 00262a50 */ + cvSetAdd(lVar10,0,&local_18); + } + else { + uVar21 = *local_18; + iVar19 = *(int *)(lVar10 + 0x68); + *(undefined8 *)(lVar10 + 0x60) = *(undefined8 *)(local_18 + 2); + *local_18 = uVar21 & 0x3ffffff; + *(int *)(lVar10 + 0x68) = iVar19 + 1; + } + puVar18 = local_18; + lVar10 = *(long *)(param_2 + 8); + uVar21 = param_2[0xc]; + uVar17 = param_2[1]; + uVar16 = *(undefined8 *)(lVar10 + uVar22); + *local_18 = uVar20; + *(undefined8 *)(local_18 + 2) = uVar16; + *(uint **)(lVar10 + uVar22) = local_18; + memcpy((void *)((long)local_18 + (long)(int)uVar21),param_3,(long)(int)uVar17 << 2); + pdVar8 = (double *)((long)puVar18 + (long)(int)param_2[0xb]); +LAB_0026286c: + local_1c = *param_2 & 0xfff; + } + if ((local_1c >> 3 & 0x1ff) != 0) { + local_18 = (uint *)0x0; + local_10 = (uint *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_18,0x2d); + cVar7 = s_cvSetReal__support_only_single_c_00461b10[0x2c]; + uVar4 = s_cvSetReal__support_only_single_c_00461b10._40_4_; + uVar6 = s_cvSetReal__support_only_single_c_00461b10._24_8_; + uVar5 = s_cvSetReal__support_only_single_c_00461b10._16_8_; + uVar3 = s_cvSetReal__support_only_single_c_00461b10._8_8_; + uVar16 = s_cvSetReal__support_only_single_c_00461b10._0_8_; + *(undefined8 *)(pcVar9 + 0x20) = s_cvSetReal__support_only_single_c_00461b10._32_8_; + *(undefined4 *)(pcVar9 + 0x28) = uVar4; + pcVar9[0x2c] = cVar7; + *(undefined8 *)pcVar9 = uVar16; + *(undefined8 *)(pcVar9 + 8) = uVar3; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + cv::error(-0xf,(String *)&local_18,"void cvSetRealND(CvArr*, const int*, double)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x933); + cv::String::deallocate((String *)&local_18); + } + uVar20 = local_1c; + if (pdVar8 != (double *)0x0) { + if ((int)local_1c < 5) { + lVar10 = lrint(param_1); + uVar21 = (uint)lVar10; + switch(uVar20) { + case 0: + if (0xff < uVar21) { + uVar21 = -(uint)(0 < (int)uVar21); + } + *(char *)pdVar8 = (char)uVar21; + break; + case 1: + uVar12 = (undefined1)lVar10; + if ((0xff < uVar21 + 0x80) && (uVar12 = 0x7f, (int)uVar21 < 1)) { + uVar12 = 0x80; + } + *(undefined1 *)pdVar8 = uVar12; + break; + case 2: + if (0xffff < uVar21) { + uVar21 = -(uint)(0 < (int)uVar21); + } + *(short *)pdVar8 = (short)uVar21; + break; + case 3: + uVar11 = (undefined2)lVar10; + if ((0xffff < uVar21 + 0x8000) && (uVar11 = 0x7fff, (int)uVar21 < 1)) { + uVar11 = 0x8000; + } + *(undefined2 *)pdVar8 = uVar11; + break; + case 4: + *(uint *)pdVar8 = uVar21; + } + } + else if (local_1c == 5) { + *(float *)pdVar8 = (float)param_1; + } + else if (local_1c == 6) { + *pdVar8 = param_1; + } + } + return; +} + + +================================================================== + +### FUNC 00262a88 (648 bytes) name=cvClearND + +void cvClearND(uint *param_1,uint *param_2) + +{ + uint uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + void *__s; + char *pcVar5; + uint *puVar6; + long lVar7; + undefined8 uVar8; + uint *puVar9; + uint *puVar10; + uint uVar11; + uint *puVar12; + uint uVar13; + int iVar14; + uint uVar15; + ulong uVar16; + uint local_10 [4]; + + /* try { // try from 00262aa4 to 00362ab3 has its CatchHandler @ 00262b04 */ + /* try { // try from 00262ab4 to 00362af3 has its CatchHandler @ 00262a50 */ + if ((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42440000)) { + __s = (void *)cvPtrND(param_1,param_2,local_10,1,0); + if (__s != (void *)0x0) { + /* try { // try from 00262af4 to 00362b03 has its CatchHandler @ 00262b04 */ + /* catch() { ... } // from try @ 00262aa4 with catch @ 00262b04 + catch() { ... } // from try @ 00262af4 with catch @ 00262b04 + try { // try from 00262b04 to 00362b2b has its CatchHandler @ 00262a50 */ + memset(__s,0,(long)(int)((local_10[0] >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((local_10[0] & 7) << 1)) & 3))); + } + } + else { + uVar11 = param_1[1]; + uVar13 = 0; + uVar15 = 0; + if (0 < (int)uVar11) { + uVar15 = 0; + iVar14 = 0; + puVar12 = param_2; + do { + while (uVar13 = *puVar12, uVar13 < param_1[(long)iVar14 + 0xd]) { + iVar14 = iVar14 + 1; + puVar12 = puVar12 + 1; + uVar15 = uVar13 + uVar15 * 0x5bd1e995; + if ((int)uVar11 <= iVar14) goto LAB_00262c14; + } + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar5 = (char *)cv::String::allocate((String *)local_10,0x1e); + uVar4 = s_One_of_indices_is_out_of_range_004618d8._28_2_; + uVar3 = s_One_of_indices_is_out_of_range_004618d8._24_4_; + uVar2 = s_One_of_indices_is_out_of_range_004618d8._8_8_; + uVar8 = s_One_of_indices_is_out_of_range_004618d8._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_One_of_indices_is_out_of_range_004618d8._16_8_; + *(undefined4 *)(pcVar5 + 0x18) = uVar3; + *(undefined2 *)(pcVar5 + 0x1c) = uVar4; + *(undefined8 *)pcVar5 = uVar8; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd3,(String *)local_10, + "void icvDeleteNode(CvSparseMat*, const int*, unsigned int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x2f7); + iVar14 = iVar14 + 1; + puVar12 = puVar12 + 1; + cv::String::deallocate((String *)local_10); + uVar11 = param_1[1]; + uVar15 = uVar13 + uVar15 * 0x5bd1e995; + } while (iVar14 < (int)uVar11); +LAB_00262c14: + uVar13 = uVar15 & 0x7fffffff; + } + uVar15 = uVar15 & param_1[10] - 1; + uVar16 = -(ulong)(uVar15 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar15 << 3; + puVar12 = *(uint **)(*(long *)(param_1 + 8) + uVar16); + if (puVar12 != (uint *)0x0) { + puVar6 = (uint *)0x0; + do { + if (*puVar12 == uVar13) { + if ((int)uVar11 < 1) { + if (uVar11 == 0) { +LAB_00262ca4: + if (puVar6 == (uint *)0x0) { + *(undefined8 *)(*(long *)(param_1 + 8) + uVar16) = *(undefined8 *)(puVar12 + 2); + } + else { + *(undefined8 *)(puVar6 + 2) = *(undefined8 *)(puVar12 + 2); + } + lVar7 = *(long *)(param_1 + 6); + /* try { // try from 00262cb8 to 00362d3f has its CatchHandler @ 00262cb8 + catch() { ... } // from try @ 00262cb8 with catch @ 00262cb8 + catch() { ... } // from try @ 00262d50 with catch @ 00262cb8 */ + uVar8 = *(undefined8 *)(lVar7 + 0x60); + *puVar12 = *puVar12 & 0x3ffffff | 0x80000000; + *(undefined8 *)(puVar12 + 2) = uVar8; + *(uint **)(lVar7 + 0x60) = puVar12; + *(int *)(lVar7 + 0x68) = *(int *)(lVar7 + 0x68) + -1; + return; + } + } + else if (*param_2 == *(uint *)((long)puVar12 + (long)(int)param_1[0xc])) { + uVar15 = 0; + puVar9 = (uint *)((long)puVar12 + (long)(int)param_1[0xc] + 4); + puVar10 = param_2; + do { + puVar10 = puVar10 + 1; + uVar15 = uVar15 + 1; + if (uVar15 == uVar11) goto LAB_00262ca4; + uVar1 = *puVar9; + puVar9 = puVar9 + 1; + } while (*puVar10 == uVar1); + } + } + puVar10 = puVar12 + 2; + puVar6 = puVar12; + puVar12 = *(uint **)puVar10; + } while (*(uint **)puVar10 != (uint *)0x0); + } + } + return; +} + + +================================================================== + +### FUNC 00262d24 (2024 bytes) name=cvGetMat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint * cvGetMat(uint *param_1,uint *param_2,int *param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined2 uVar8; + char cVar9; + undefined8 uVar10; + undefined8 uVar11; + uint *puVar12; + undefined8 *puVar13; + char *pcVar14; + void *__dest; + uint uVar15; + int iVar16; + int *piVar17; + uint uVar18; + uint *puVar19; + undefined8 uVar20; + ulong uVar21; + int iVar22; + int iVar23; + int iVar24; + int iVar25; + uint uVar26; + uint uVar27; + uint uVar28; + int *local_10; + int *local_8; + + /* try { // try from 00262d40 to 00362d4f has its CatchHandler @ 00262d50 */ + if ((param_1 == (uint *)0x0) || (param_2 == (uint *)0x0)) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x1c); + uVar7 = s_NULL_array_pointer_is_passed_00461b40._24_4_; + uVar4 = s_NULL_array_pointer_is_passed_00461b40._8_8_; + uVar20 = s_NULL_array_pointer_is_passed_00461b40._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_NULL_array_pointer_is_passed_00461b40._16_8_; + *(undefined4 *)(pcVar14 + 0x18) = uVar7; + *(undefined8 *)pcVar14 = uVar20; + *(undefined8 *)(pcVar14 + 8) = uVar4; + cv::error(-0x1b,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x958); + cv::String::deallocate((String *)&local_10); + if (param_1 != (uint *)0x0) goto LAB_00262d50; + } + else { +LAB_00262d50: + /* catch() { ... } // from try @ 00262d40 with catch @ 00262d50 + try { // try from 00262d50 to 00362d77 has its CatchHandler @ 00262cb8 */ + uVar1 = *param_1; + if ((uVar1 & 0xffff0000) == 0x42420000) { + if ((0 < (int)param_1[9]) && (0 < (int)param_1[8])) { + local_10 = *(int **)(param_1 + 6); + iVar16 = 0; + if (local_10 == (int *)0x0) { + local_8 = local_10; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x20); + uVar5 = s_The_matrix_has_NULL_data_pointer_00461b60._24_8_; + uVar4 = s_The_matrix_has_NULL_data_pointer_00461b60._16_8_; + uVar20 = s_The_matrix_has_NULL_data_pointer_00461b60._8_8_; + *(undefined8 *)pcVar14 = s_The_matrix_has_NULL_data_pointer_00461b60._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar20; + *(undefined8 *)(pcVar14 + 0x10) = uVar4; + *(undefined8 *)(pcVar14 + 0x18) = uVar5; + cv::error(-0x1b,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x95d); + cv::String::deallocate((String *)&local_10); + } + goto LAB_00262f58; + } + } + else if (uVar1 == 0x90) { + /* try { // try from 00262e28 to 00362e2f has its CatchHandler @ 00263374 */ + piVar17 = *(int **)(param_1 + 0x16); + if (piVar17 == (int *)0x0) { + local_10 = piVar17; + local_8 = piVar17; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar9 = s_The_image_has_NULL_data_pointer_00461b88[0x1e]; + uVar8 = s_The_image_has_NULL_data_pointer_00461b88._28_2_; + uVar7 = s_The_image_has_NULL_data_pointer_00461b88._24_4_; + uVar4 = s_The_image_has_NULL_data_pointer_00461b88._8_8_; + uVar20 = s_The_image_has_NULL_data_pointer_00461b88._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_The_image_has_NULL_data_pointer_00461b88._16_8_; + *(undefined4 *)(pcVar14 + 0x18) = uVar7; + *(undefined2 *)(pcVar14 + 0x1c) = uVar8; + pcVar14[0x1e] = cVar9; + *(undefined8 *)pcVar14 = uVar20; + *(undefined8 *)(pcVar14 + 8) = uVar4; + cv::error(-0x1b,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x967); + cv::String::deallocate((String *)&local_10); + } + /* try { // try from 00262e38 to 00362e3f has its CatchHandler @ 0026336c */ + uVar1 = param_1[2]; + /* try { // try from 00262e40 to 00362f07 has its CatchHandler @ 00262dbc */ + iVar16 = 0x14; + if (-1 < (int)param_1[4]) { + iVar16 = 0; + } + uVar2 = 0x43160520 >> (iVar16 + ((param_1[4] & 0xf0) >> 2) & 0x1f); + piVar17 = *(int **)(param_1 + 0xc); + if ((int)uVar1 < 2) { + if (piVar17 == (int *)0x0) { + iVar22 = (uVar2 & 7) + (uVar1 - 1) * 8; + goto LAB_0026345c; + } + iVar16 = *piVar17; + uVar21 = (ulong)((uVar2 & 7) + (uVar1 - 1) * 8); + } + else { + if (piVar17 == (int *)0x0) { + iVar22 = (uVar2 & 7) + (uVar1 - 1) * 8; + if (param_1[7] != 0) { + local_10 = piVar17; + local_8 = piVar17; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x28); + uVar6 = s_Pixel_order_should_be_used_with_c_00461c28._24_8_; + uVar5 = s_Pixel_order_should_be_used_with_c_00461c28._16_8_; + uVar4 = s_Pixel_order_should_be_used_with_c_00461c28._8_8_; + uVar20 = s_Pixel_order_should_be_used_with_c_00461c28._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s_Pixel_order_should_be_used_with_c_00461c28._32_8_; + *(undefined8 *)pcVar14 = uVar20; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + cv::error(-0xce,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x995); + cv::String::deallocate((String *)&local_10); + } +LAB_0026345c: + iVar16 = 0; + cvInitMatHeader(param_2,param_1[0xb],param_1[10],iVar22,*(undefined8 *)(param_1 + 0x16), + param_1[0x18]); + param_1 = param_2; + goto LAB_00262f58; + } + if (param_1[7] == 1) { + iVar22 = *piVar17; + if (iVar22 == 0) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x3f); + memcpy(__dest,&DAT_00461ba8,0x3f); + cv::error(-0xce,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x977); + cv::String::deallocate((String *)&local_10); + piVar17 = *(int **)(param_1 + 0xc); + iVar22 = *piVar17; + } + /* try { // try from 00263348 to 0036334f has its CatchHandler @ 0026339c */ + /* catch() { ... } // from try @ 00262e38 with catch @ 0026336c */ + iVar16 = 0; + /* catch() { ... } // from try @ 00262e28 with catch @ 00263374 */ + cvInitMatHeader(param_2,piVar17[4],piVar17[3],uVar2 & 0xf, + *(long *)(param_1 + 0x16) + + (long)(int)(param_1[0x18] * piVar17[2]) + + (long)(int)(((uVar2 >> 3 & 1) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar2 & 7) << 1)) & 3)) * + piVar17[1]) + (long)(int)((iVar22 + -1) * param_1[0x14])); + param_1 = param_2; + goto LAB_00262f58; + } + iVar16 = *piVar17; + uVar21 = (ulong)((uVar2 & 7) + (uVar1 - 1) * 8); + if (0x200 < (int)uVar1) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x38); + uVar11 = s_The_image_is_interleaved_and_has_00461be8._40_8_; + uVar10 = s_The_image_is_interleaved_and_has_00461be8._32_8_; + uVar6 = s_The_image_is_interleaved_and_has_00461be8._24_8_; + uVar5 = s_The_image_is_interleaved_and_has_00461be8._16_8_; + uVar4 = s_The_image_is_interleaved_and_has_00461be8._8_8_; + uVar20 = s_The_image_is_interleaved_and_has_00461be8._0_8_; + *(undefined8 *)(pcVar14 + 0x30) = s_The_image_is_interleaved_and_has_00461be8._48_8_; + *(undefined8 *)pcVar14 = uVar20; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + *(undefined8 *)(pcVar14 + 0x20) = uVar10; + *(undefined8 *)(pcVar14 + 0x28) = uVar11; + cv::error(-0xf,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x987); + cv::String::deallocate((String *)&local_10); + piVar17 = *(int **)(param_1 + 0xc); + } + } + /* try { // try from 00262f08 to 00362f0f has its CatchHandler @ 0026339c */ + /* try { // try from 00262f10 to 00363347 has its CatchHandler @ 00262dbc */ + cvInitMatHeader(param_2,piVar17[4],piVar17[3],uVar21, + *(long *)(param_1 + 0x16) + + (long)(int)(param_1[0x18] * piVar17[2]) + + (long)(int)((((uint)(uVar21 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar21 & 7) << 1)) & 3)) * + piVar17[1]),param_1[0x18]); + param_1 = param_2; + goto LAB_00262f58; + } + if ((param_4 != 0) && ((uVar1 & 0xffff0000) == 0x42430000)) { + local_10 = *(int **)(param_1 + 6); + uVar2 = param_1[8]; + if (local_10 == (int *)0x0) { + /* catch() { ... } // from try @ 00262e1c with catch @ 0026337c */ + local_8 = local_10; + /* catch() { ... } // from try @ 00262e10 with catch @ 0026338c */ + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x21); + uVar6 = s_Input_array_has_NULL_data_pointe_00461c58._24_8_; + uVar5 = s_Input_array_has_NULL_data_pointe_00461c58._16_8_; + uVar4 = s_Input_array_has_NULL_data_pointe_00461c58._8_8_; + uVar20 = s_Input_array_has_NULL_data_pointe_00461c58._0_8_; + /* catch() { ... } // from try @ 00262e00 with catch @ 00263394 */ + /* catch() { ... } // from try @ 00262f08 with catch @ 0026339c + catch() { ... } // from try @ 00263348 with catch @ 0026339c */ + pcVar14[0x20] = s_Input_array_has_NULL_data_pointe_00461c58[0x20]; + *(undefined8 *)pcVar14 = uVar20; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + /* try { // try from 002633d4 to 003633db has its CatchHandler @ 002633e4 */ + cv::error(-0x1b,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9a3); + /* try { // try from 002633dc to 003633e7 has its CatchHandler @ 00262dbc */ + cv::String::deallocate((String *)&local_10); + uVar1 = *param_1; + /* catch() { ... } // from try @ 002633d4 with catch @ 002633e4 */ + } + if ((uVar1 >> 0xe & 1) == 0) { + local_10 = (int *)0x0; + local_8 = (int *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x2c); + uVar7 = s_Only_continuous_nD_arrays_are_su_00461a98._40_4_; + uVar6 = s_Only_continuous_nD_arrays_are_su_00461a98._24_8_; + uVar5 = s_Only_continuous_nD_arrays_are_su_00461a98._16_8_; + uVar4 = s_Only_continuous_nD_arrays_are_su_00461a98._8_8_; + uVar20 = s_Only_continuous_nD_arrays_are_su_00461a98._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s_Only_continuous_nD_arrays_are_su_00461a98._32_8_; + *(undefined4 *)(pcVar14 + 0x28) = uVar7; + *(undefined8 *)pcVar14 = uVar20; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + cv::error(-5,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9a6); + cv::String::deallocate((String *)&local_10); + uVar1 = *param_1; + } + uVar3 = param_1[1]; + if ((int)uVar3 < 3) { + if (uVar3 == 1) { + uVar15 = 1; + } + else { + uVar15 = param_1[10]; + } + } + else { + uVar15 = (uVar3 - 6 >> 2) + 1; + iVar16 = uVar15 * 4; + if (uVar3 - 2 < 7) { + uVar15 = param_1[10]; + iVar22 = 2; +LAB_00263178: + uVar15 = uVar15 * param_1[(long)iVar22 * 2 + 8]; + if (iVar22 + 1 < (int)uVar3) { + uVar15 = uVar15 * param_1[(long)(iVar22 + 1) * 2 + 8]; + if (iVar22 + 2 < (int)uVar3) { + uVar15 = uVar15 * param_1[(long)(iVar22 + 2) * 2 + 8]; + if (iVar22 + 3 < (int)uVar3) { + uVar15 = uVar15 * param_1[(long)(iVar22 + 3) * 2 + 8]; + if (iVar22 + 4 < (int)uVar3) { + uVar15 = uVar15 * param_1[(long)(iVar22 + 4) * 2 + 8]; + if (iVar22 + 5 < (int)uVar3) { + uVar15 = uVar15 * param_1[(long)(iVar22 + 5) * 2 + 8]; + } + } + } + } + } + } + else { + iVar22 = 1; + iVar23 = 1; + iVar24 = 1; + iVar25 = 1; + /* try { // try from 00262dbc to 00362dff has its CatchHandler @ 00262dbc + catch() { ... } // from try @ 00262dbc with catch @ 00262dbc + catch() { ... } // from try @ 00262e40 with catch @ 00262dbc + catch() { ... } // from try @ 00262f10 with catch @ 00262dbc + catch() { ... } // from try @ 002633dc with catch @ 00262dbc */ + puVar19 = param_1 + 10; + uVar18 = 0; + do { + uVar26 = *puVar19; + uVar27 = puVar19[2]; + puVar12 = puVar19 + 4; + uVar28 = puVar19[6]; + puVar19 = puVar19 + 8; + uVar18 = uVar18 + 1; + iVar22 = iVar22 * uVar26; + iVar23 = iVar23 * (int)(CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8), + CONCAT14((char)uVar27,uVar26)))) >> + 0x20); + iVar24 = iVar24 * *puVar12; + iVar25 = iVar25 * (int)(CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8), + CONCAT14((char)uVar28,*puVar12)))) >> + 0x20); + } while (uVar18 < uVar15); + /* try { // try from 00262e00 to 00362e07 has its CatchHandler @ 00263394 */ + uVar15 = iVar25 * iVar24 * iVar23 * iVar22; + if (uVar3 - 1 != iVar16) { + iVar22 = iVar16 + 2; + /* try { // try from 00262e10 to 00362e13 has its CatchHandler @ 0026338c */ + /* try { // try from 00262e1c to 00362e1f has its CatchHandler @ 0026337c */ + uVar15 = uVar15 * param_1[(long)(iVar16 + 1) * 2 + 8]; + if (iVar22 < (int)uVar3) goto LAB_00263178; + } + } + } + param_2[2] = 0; + param_2[3] = 0; + param_2[4] = 0; + uVar20 = *(undefined8 *)(param_1 + 6); + param_2[9] = uVar15; + uVar15 = ((uVar1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3)) * + uVar15; + *(undefined8 *)(param_2 + 6) = uVar20; + param_2[8] = uVar2; + *param_2 = uVar1 & 0xfff | 0x42424000; + param_2[1] = uVar15; + if ((int)uVar2 < 2) { + param_2[1] = 0; + iVar16 = 0; + param_1 = param_2; + } + else if ((long)(int)uVar15 * (long)(int)uVar2 < 0x80000000) { + iVar16 = 0; + param_1 = param_2; + } + else { + iVar16 = 0; + *param_2 = uVar1 & 0xfff | 0x42420000; + param_1 = param_2; + } + goto LAB_00262f58; + } + } + local_10 = (int *)0x0; + local_8 = (int *)0x0; + puVar13 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar8 = DAT_00461ca4; + uVar6 = DAT_00461c98; + uVar5 = DAT_00461c90; + uVar4 = DAT_00461c88; + uVar20 = _DAT_00461c80; + *(undefined4 *)(puVar13 + 4) = DAT_00461ca0; + *(undefined2 *)((long)puVar13 + 0x24) = uVar8; + *puVar13 = uVar20; + puVar13[1] = uVar4; + puVar13[2] = uVar5; + puVar13[3] = uVar6; + cv::error(-0xce,(String *)&local_10,"CvMat* cvGetMat(const CvArr*, CvMat*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9be); + iVar16 = 0; + cv::String::deallocate((String *)&local_10); + param_1 = (uint *)0x0; +LAB_00262f58: + if (param_3 != (int *)0x0) { + *param_3 = iVar16; + } + return param_1; +} + + +================================================================== + +### FUNC 002635c0 (524 bytes) name=cvGetSubRect + +uint * cvGetSubRect(uint *param_1,uint *param_2,undefined8 param_3,undefined8 param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + long lVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint *local_38; + uint *local_30; + undefined1 auStack_28 [40]; + + if ((((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42420000)) || + ((int)param_1[9] < 1)) || (((int)param_1[8] < 1 || (*(long *)(param_1 + 6) == 0)))) { + param_1 = (uint *)cvGetMat(param_1,auStack_28,0,0); + } + if (param_2 == (uint *)0x0) { + local_38 = param_2; + local_30 = param_2; + cv::String::allocate((String *)&local_38,0); + cv::error(-0x1b,(String *)&local_38,"CvMat* cvGetSubRect(const CvArr*, CvMat*, CvRect)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4f1); + cv::String::deallocate((String *)&local_38); + } + uVar8 = (uint)((ulong)param_3 >> 0x20); + uVar9 = (uint)param_3; + uVar6 = (uint)param_4; + uVar7 = (uint)((ulong)param_4 >> 0x20); + if ((int)(uVar8 | uVar9 | uVar6 | uVar7) < 0) { + local_38 = (uint *)0x0; + local_30 = (uint *)0x0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xc9,(String *)&local_38,"CvMat* cvGetSubRect(const CvArr*, CvMat*, CvRect)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4f4); + cv::String::deallocate((String *)&local_38); + } + uVar4 = param_1[9]; + if (((int)uVar4 < (int)(uVar6 + uVar9)) || ((int)param_1[8] < (int)(uVar8 + uVar7))) { + local_38 = (uint *)0x0; + local_30 = (uint *)0x0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xc9,(String *)&local_38,"CvMat* cvGetSubRect(const CvArr*, CvMat*, CvRect)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x4f8); + cv::String::deallocate((String *)&local_38); + uVar4 = param_1[9]; + } + uVar1 = *param_1; + uVar2 = param_1[1]; + uVar3 = 0xffffbfff; + if ((int)uVar4 <= (int)uVar6) { + uVar3 = 0xffffffff; + } + lVar5 = *(long *)(param_1 + 6); + uVar4 = 0x4000; + if (1 < (int)uVar7) { + uVar4 = 0; + } + param_2[1] = uVar2; + param_2[8] = uVar7; + param_2[9] = uVar6; + *param_2 = uVar4 | uVar3 & uVar1; + param_2[2] = 0; + param_2[3] = 0; + *(long *)(param_2 + 6) = + lVar5 + (long)(int)uVar2 * (long)(int)uVar8 + + (long)(int)(((uVar1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3)) * uVar9); + return param_2; +} + + +================================================================== + +### FUNC 00263808 (468 bytes) name=cvGetRows + +uint * cvGetRows(uint *param_1,uint *param_2,uint param_3,uint param_4,int param_5) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint *local_38; + uint *local_30; + undefined1 auStack_28 [40]; + + if ((((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42420000)) || + ((int)param_1[9] < 1)) || (((int)param_1[8] < 1 || (*(long *)(param_1 + 6) == 0)))) { + param_1 = (uint *)cvGetMat(param_1,auStack_28,0,0); + } + if (param_2 == (uint *)0x0) { + local_38 = param_2; + local_30 = param_2; + cv::String::allocate((String *)&local_38,0); + cv::error(-0x1b,(String *)&local_38,"CvMat* cvGetRows(const CvArr*, CvMat*, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x51e); + cv::String::deallocate((String *)&local_38); + } + if (((param_1[8] <= param_3) || (param_1[8] < param_4)) || (param_5 < 1)) { + local_38 = (uint *)0x0; + local_30 = (uint *)0x0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xd3,(String *)&local_38,"CvMat* cvGetRows(const CvArr*, CvMat*, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x522); + cv::String::deallocate((String *)&local_38); + } + param_4 = param_4 - param_3; + uVar3 = param_1[1]; + if (param_5 != 1) { + iVar1 = param_4 + param_5; + uVar3 = param_5 * uVar3; + param_4 = 0; + if (param_5 != 0) { + param_4 = (iVar1 + -1) / param_5; + } + } + param_2[1] = uVar3; + param_2[8] = param_4; + param_2[9] = param_1[9]; + if ((int)param_4 < 2) { + param_2[1] = 0; + uVar3 = 0; + if (param_4 == 1) { + uVar3 = 0x4000; + } + uVar2 = 0xffffffff; + *(long *)(param_2 + 6) = *(long *)(param_1 + 6) + (long)(int)param_3 * (long)(int)param_1[1]; + uVar3 = uVar3 | *param_1; + } + else { + uVar2 = 0xffffbfff; + if (param_5 == 1) { + uVar2 = 0xffffffff; + } + *(long *)(param_2 + 6) = *(long *)(param_1 + 6) + (long)(int)param_3 * (long)(int)param_1[1]; + uVar3 = *param_1; + } + param_2[2] = 0; + param_2[3] = 0; + param_2[4] = 0; + *param_2 = uVar3 & uVar2; + return param_2; +} + + +================================================================== + +### FUNC 00263a04 (420 bytes) name=cvGetCols + +uint * cvGetCols(uint *param_1,uint *param_2,uint param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint *local_38; + uint *local_30; + undefined1 auStack_28 [40]; + + if ((((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42420000)) || + ((int)param_1[9] < 1)) || (((int)param_1[8] < 1 || (*(long *)(param_1 + 6) == 0)))) { + param_1 = (uint *)cvGetMat(param_1,auStack_28,0,0); + } + if (param_2 == (uint *)0x0) { + local_38 = param_2; + local_30 = param_2; + cv::String::allocate((String *)&local_38,0); + cv::error(-0x1b,(String *)&local_38,"CvMat* cvGetCols(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x552); + cv::String::deallocate((String *)&local_38); + } + uVar3 = param_1[9]; + if ((uVar3 <= param_3) || (uVar3 < param_4)) { + local_38 = (uint *)0x0; + local_30 = (uint *)0x0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xd3,(String *)&local_38,"CvMat* cvGetCols(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x557); + cv::String::deallocate((String *)&local_38); + } + uVar1 = param_1[8]; + param_2[8] = uVar1; + param_2[9] = param_4 - param_3; + uVar2 = *param_1; + param_2[1] = param_1[1]; + *(long *)(param_2 + 6) = + *(long *)(param_1 + 6) + + (long)(int)((uVar2 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar2 & 7) << 1)) & 3)) * + (long)(int)param_3; + if (((int)uVar3 <= (int)(param_4 - param_3)) || (uVar3 = 0xffffbfff, (int)uVar1 < 2)) { + uVar3 = 0xffffffff; + } + param_2[2] = 0; + param_2[3] = 0; + param_2[4] = 0; + *param_2 = uVar3 & uVar2; + return param_2; +} + + +================================================================== + +### FUNC 00263bd0 (580 bytes) name=cvGetDiag + +uint * cvGetDiag(uint *param_1,uint *param_2,int param_3) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint *local_38; + uint *local_30; + undefined1 auStack_28 [40]; + + if ((((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42420000)) || + ((int)param_1[9] < 1)) || (((int)param_1[8] < 1 || (*(long *)(param_1 + 6) == 0)))) { + param_1 = (uint *)cvGetMat(param_1,auStack_28,0,0); + } + if (param_2 == (uint *)0x0) { + local_38 = param_2; + local_30 = param_2; + cv::String::allocate((String *)&local_38,0); + cv::error(-0x1b,(String *)&local_38,"CvMat* cvGetDiag(const CvArr*, CvMat*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x57c); + cv::String::deallocate((String *)&local_38); + } + uVar2 = *param_1; + iVar1 = (uVar2 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar2 & 7) << 1)) & 3); + if (param_3 < 0) { + uVar4 = param_3 + param_1[8]; + if ((int)uVar4 < 1) { + local_38 = (uint *)0x0; + local_30 = (uint *)0x0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xd3,(String *)&local_38,"CvMat* cvGetDiag(const CvArr*, CvMat*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x598); + cv::String::deallocate((String *)&local_38); + uVar2 = *param_1; + } + uVar3 = param_1[1]; + uVar4 = -(uint)((int)param_1[9] <= (int)uVar4) & (uVar4 ^ param_1[9]) ^ uVar4; + *(long *)(param_2 + 6) = *(long *)(param_1 + 6) - (long)(int)(uVar3 * param_3); + } + else { + uVar4 = param_1[9] - param_3; + if ((int)uVar4 < 1) { + local_38 = (uint *)0x0; + local_30 = (uint *)0x0; + cv::String::allocate((String *)&local_38,0); + cv::error(-0xd3,(String *)&local_38,"CvMat* cvGetDiag(const CvArr*, CvMat*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x58e); + cv::String::deallocate((String *)&local_38); + uVar2 = *param_1; + } + uVar3 = param_1[8]; + *(long *)(param_2 + 6) = *(long *)(param_1 + 6) + (long)(param_3 * iVar1); + uVar4 = -(uint)((int)uVar3 <= (int)uVar4) & (uVar4 ^ uVar3) ^ uVar4; + uVar3 = param_1[1]; + } + param_2[8] = uVar4; + param_2[9] = 1; + if ((int)uVar4 < 2) { + param_2[1] = uVar3; + *param_2 = uVar2 | 0x4000; + } + else { + param_2[1] = iVar1 + uVar3; + *param_2 = uVar2 & 0xffffbfff; + } + param_2[2] = 0; + param_2[3] = 0; + param_2[4] = 0; + return param_2; +} + + +================================================================== + +### FUNC 00263e50 (3152 bytes) name=cvInitNArrayIterator + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvInitNArrayIterator + (uint param_1,long param_2,uint *param_3,uint *param_4,uint *param_5,uint param_6) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + undefined1 uVar8; + char cVar9; + undefined8 uVar10; + undefined8 uVar11; + code *pcVar12; + uint uVar13; + undefined8 *puVar14; + char *pcVar15; + uint *puVar16; + uint *puVar17; + long lVar18; + long lVar19; + long lVar20; + uint *puVar21; + uint uVar22; + uint *puVar23; + long lVar24; + int iVar25; + uint uVar26; + uint uVar27; + uint uVar28; + int local_3c; + long local_38; + long local_30; + uint *local_28; + uint *local_20; + + if (9 < param_1 - 1) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + puVar14 = (undefined8 *)cv::String::allocate((String *)&local_28,0x1a); + uVar7 = _LAB_00461cc0; + uVar3 = DAT_00461cb0; + uVar2 = DAT_00461ca8; + puVar14[2] = DAT_00461cb8; + *(undefined2 *)(puVar14 + 3) = uVar7; + *puVar14 = uVar2; + puVar14[1] = uVar3; + cv::error(-0xd3,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x189); + cv::String::deallocate((String *)&local_28); + } + if ((param_2 == 0) || (param_4 == (uint *)0x0)) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + puVar14 = (undefined8 *)cv::String::allocate((String *)&local_28,0x27); + uVar8 = DAT_00461cee; + uVar7 = DAT_00461cec; + uVar6 = DAT_00461ce0; + uVar5 = _DAT_00461cd8; + uVar3 = DAT_00461cd0; + uVar2 = DAT_00461cc8; + *(undefined4 *)(puVar14 + 4) = DAT_00461ce8; + *(undefined2 *)((long)puVar14 + 0x24) = uVar7; + *(undefined1 *)((long)puVar14 + 0x26) = uVar8; + *puVar14 = uVar2; + puVar14[1] = uVar3; + puVar14[2] = uVar5; + puVar14[3] = uVar6; + cv::error(-0x1b,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x18c); + cv::String::deallocate((String *)&local_28); + } + if (param_5 == (uint *)0x0) { + local_28 = param_5; + local_20 = param_5; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x18); + uVar3 = s_Iterator_pointer_is_NULL_00461cf0._8_8_; + uVar2 = s_Iterator_pointer_is_NULL_00461cf0._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s_Iterator_pointer_is_NULL_00461cf0._16_8_; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",399); + cv::String::deallocate((String *)&local_28); + } + if ((int)param_1 < 0) { + /* WARNING: Does not return */ + pcVar12 = (code *)SoftwareBreakpoint(1000,0x264a1c); + (*pcVar12)(); + } + lVar24 = 0; + uVar22 = 0xffffffff; + puVar23 = (uint *)0x0; + puVar17 = param_5 + 0x38; + do { + iVar25 = (int)lVar24; + puVar16 = param_3; + if (iVar25 < (int)param_1) { + puVar16 = *(uint **)(param_2 + lVar24 * 8); + } + if (puVar16 == (uint *)0x0) { + if (iVar25 < (int)param_1) { + local_28 = puVar16; + local_20 = puVar16; + puVar14 = (undefined8 *)cv::String::allocate((String *)&local_28,0x27); + uVar8 = DAT_00461cee; + uVar7 = DAT_00461cec; + uVar6 = DAT_00461ce0; + uVar5 = _DAT_00461cd8; + uVar3 = DAT_00461cd0; + uVar2 = DAT_00461cc8; + *(undefined4 *)(puVar14 + 4) = DAT_00461ce8; + *(undefined2 *)((long)puVar14 + 0x24) = uVar7; + *(undefined1 *)((long)puVar14 + 0x26) = uVar8; + *puVar14 = uVar2; + puVar14[1] = uVar3; + puVar14[2] = uVar5; + puVar14[3] = uVar6; + cv::error(-0x1b,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x199); + cv::String::deallocate((String *)&local_28); + } + break; + } + uVar13 = *puVar16; + uVar26 = uVar13 & 0xffff0000; + if (uVar26 == 0x42430000) { + if (*(long *)(puVar16 + 6) == 0) { + local_3c = 0; + if (param_4 == (uint *)0x0) goto LAB_002646ec; +LAB_002644d0: + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x20); + uVar5 = s_The_matrix_has_NULL_data_pointer_00461b60._24_8_; + uVar3 = s_The_matrix_has_NULL_data_pointer_00461b60._16_8_; + uVar2 = s_The_matrix_has_NULL_data_pointer_00461b60._8_8_; + *(undefined8 *)pcVar15 = s_The_matrix_has_NULL_data_pointer_00461b60._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar2; + *(undefined8 *)(pcVar15 + 0x10) = uVar3; + *(undefined8 *)(pcVar15 + 0x18) = uVar5; + cv::error(-0x1b,(String *)&local_28,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x154); + cv::String::deallocate((String *)&local_28); + goto joined_r0x00264530; + } + } + else { + local_3c = 0; + puVar21 = param_4; + if (param_4 == (uint *)0x0) { +LAB_002646ec: + local_3c = 0; + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x1c); + uVar4 = s_NULL_array_pointer_is_passed_00461b40._24_4_; + uVar3 = s_NULL_array_pointer_is_passed_00461b40._8_8_; + uVar2 = s_NULL_array_pointer_is_passed_00461b40._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s_NULL_array_pointer_is_passed_00461b40._16_8_; + *(undefined4 *)(pcVar15 + 0x18) = uVar4; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_28,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x14f); + puVar21 = (uint *)0x0; + cv::String::deallocate((String *)&local_28); + uVar13 = *puVar16; + uVar26 = uVar13 & 0xffff0000; + if (uVar26 == 0x42430000) { + if (*(long *)(puVar16 + 6) == 0) goto LAB_002644d0; + goto joined_r0x00264530; + } + } + if (uVar13 == 0x90) { + puVar16 = (uint *)cvGetMat(puVar16,&local_28,&local_3c,0); + if ((puVar16 != (uint *)0x0) && ((*puVar16 & 0xffff0000) == 0x42420000)) goto LAB_002647a4; +LAB_00263f50: + local_38 = 0; + local_30 = 0; + puVar14 = (undefined8 *)cv::String::allocate((String *)&local_38,0x26); + uVar7 = DAT_00461ca4; + uVar6 = DAT_00461c98; + uVar5 = DAT_00461c90; + uVar3 = DAT_00461c88; + uVar2 = _DAT_00461c80; + *(undefined4 *)(puVar14 + 4) = DAT_00461ca0; + *(undefined2 *)((long)puVar14 + 0x24) = uVar7; + *puVar14 = uVar2; + puVar14[1] = uVar3; + puVar14[2] = uVar5; + puVar14[3] = uVar6; + cv::error(-5,(String *)&local_38,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x160); + cv::String::deallocate((String *)&local_38); + lVar18 = *(long *)(puVar16 + 6); + } + else { + if (uVar26 != 0x42420000) goto LAB_00263f50; +LAB_002647a4: + if (((int)puVar16[9] < 1) || ((int)puVar16[8] < 1)) goto LAB_00263f50; + lVar18 = *(long *)(puVar16 + 6); + } + if (lVar18 == 0) { + local_38 = lVar18; + local_30 = lVar18; + pcVar15 = (char *)cv::String::allocate((String *)&local_38,0x21); + uVar6 = s_Input_array_has_NULL_data_pointe_00461c58._24_8_; + uVar5 = s_Input_array_has_NULL_data_pointe_00461c58._16_8_; + uVar3 = s_Input_array_has_NULL_data_pointe_00461c58._8_8_; + uVar2 = s_Input_array_has_NULL_data_pointe_00461c58._0_8_; + pcVar15[0x20] = s_Input_array_has_NULL_data_pointe_00461c58[0x20]; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + cv::error(-0x1b,(String *)&local_38,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x163); + cv::String::deallocate((String *)&local_38); + lVar18 = *(long *)(puVar16 + 6); + } + puVar21[4] = 0; + *(long *)(puVar21 + 6) = lVar18; + uVar26 = *puVar16; + *puVar21 = uVar26; + puVar21[1] = 2; + puVar21[2] = 0; + puVar21[3] = 0; + puVar21[8] = puVar16[8]; + puVar21[9] = puVar16[1]; + puVar21[10] = puVar16[9]; + puVar21[0xb] = (uVar26 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar26 & 7) << 1)) & 3); + puVar16 = puVar21; +joined_r0x00264530: + if (local_3c != 0) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x1b); + cVar9 = s_COI_set_is_not_allowed_here_00461d10[0x1a]; + uVar7 = s_COI_set_is_not_allowed_here_00461d10._24_2_; + uVar3 = s_COI_set_is_not_allowed_here_00461d10._8_8_; + uVar2 = s_COI_set_is_not_allowed_here_00461d10._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s_COI_set_is_not_allowed_here_00461d10._16_8_; + *(undefined2 *)(pcVar15 + 0x18) = uVar7; + pcVar15[0x1a] = cVar9; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + cv::error(-0x18,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1a4); + cv::String::deallocate((String *)&local_28); + } + } + *(uint **)puVar17 = puVar16; + uVar26 = puVar16[1]; + puVar21 = puVar16; + if (iVar25 != 0) { + if (uVar26 != puVar23[1]) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x2f); + cVar9 = s_Number_of_dimensions_is_the_same_00461d30[0x2e]; + uVar7 = s_Number_of_dimensions_is_the_same_00461d30._44_2_; + uVar4 = s_Number_of_dimensions_is_the_same_00461d30._40_4_; + uVar6 = s_Number_of_dimensions_is_the_same_00461d30._24_8_; + uVar5 = s_Number_of_dimensions_is_the_same_00461d30._16_8_; + uVar3 = s_Number_of_dimensions_is_the_same_00461d30._8_8_; + uVar2 = s_Number_of_dimensions_is_the_same_00461d30._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_Number_of_dimensions_is_the_same_00461d30._32_8_; + *(undefined4 *)(pcVar15 + 0x28) = uVar4; + *(undefined2 *)(pcVar15 + 0x2c) = uVar7; + pcVar15[0x2e] = cVar9; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + cv::error(-0xd1,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1ad); + cv::String::deallocate((String *)&local_28); + } + if (iVar25 < (int)param_1) { + uVar26 = param_6 & 3; + if (uVar26 == 1) { + if (((*puVar23 ^ *puVar16) & 0xff8) != 0) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x31); + uVar11 = s_Number_of_channels_is_not_the_sa_00461d90._40_8_; + uVar10 = s_Number_of_channels_is_not_the_sa_00461d90._32_8_; + uVar6 = s_Number_of_channels_is_not_the_sa_00461d90._24_8_; + uVar5 = s_Number_of_channels_is_not_the_sa_00461d90._16_8_; + uVar3 = s_Number_of_channels_is_not_the_sa_00461d90._8_8_; + uVar2 = s_Number_of_channels_is_not_the_sa_00461d90._0_8_; + pcVar15[0x30] = s_Number_of_channels_is_not_the_sa_00461d90[0x30]; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + *(undefined8 *)(pcVar15 + 0x20) = uVar10; + *(undefined8 *)(pcVar15 + 0x28) = uVar11; + cv::error(-0xcd,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1bb); + goto LAB_00264600; + } + } + else if (uVar26 == 2) { + if (((*puVar23 ^ *puVar16) & 0xff8) != 0) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x24); + uVar6 = s_Depth_is_not_the_same_for_all_ar_00461dc8._24_8_; + uVar5 = s_Depth_is_not_the_same_for_all_ar_00461dc8._16_8_; + uVar3 = s_Depth_is_not_the_same_for_all_ar_00461dc8._8_8_; + uVar2 = s_Depth_is_not_the_same_for_all_ar_00461dc8._0_8_; + *(undefined4 *)(pcVar15 + 0x20) = s_Depth_is_not_the_same_for_all_ar_00461dc8._32_4_; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + cv::error(-0xcd,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1c0); + goto LAB_00264600; + } + } + else if ((uVar26 == 0) && (((*puVar23 ^ *puVar16) & 0xfff) != 0)) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x28); + uVar6 = s_Data_type_is_not_the_same_for_al_00461d60._24_8_; + uVar5 = s_Data_type_is_not_the_same_for_al_00461d60._16_8_; + uVar3 = s_Data_type_is_not_the_same_for_al_00461d60._8_8_; + uVar2 = s_Data_type_is_not_the_same_for_al_00461d60._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_Data_type_is_not_the_same_for_al_00461d60._32_8_; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + cv::error(-0xcd,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1b6); +LAB_00264600: + cv::String::deallocate((String *)&local_28); + } + } + else if ((*puVar16 & 0xffe) != 0) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x27); + cVar9 = s_Mask_should_have_8uC1_or_8sC1_da_00461df0[0x26]; + uVar7 = s_Mask_should_have_8uC1_or_8sC1_da_00461df0._36_2_; + uVar6 = s_Mask_should_have_8uC1_or_8sC1_da_00461df0._24_8_; + uVar5 = s_Mask_should_have_8uC1_or_8sC1_da_00461df0._16_8_; + uVar3 = s_Mask_should_have_8uC1_or_8sC1_da_00461df0._8_8_; + uVar2 = s_Mask_should_have_8uC1_or_8sC1_da_00461df0._0_8_; + *(undefined4 *)(pcVar15 + 0x20) = s_Mask_should_have_8uC1_or_8sC1_da_00461df0._32_4_; + *(undefined2 *)(pcVar15 + 0x24) = uVar7; + pcVar15[0x26] = cVar9; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + cv::error(-0xd0,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1c7); + goto LAB_00264600; + } + uVar26 = puVar16[1]; + puVar21 = puVar23; + if (((param_6 & 4) == 0) && (0 < (int)uVar26)) { + iVar25 = 0; + do { + if (puVar16[((long)iVar25 + 4) * 2] != puVar23[((long)iVar25 + 4) * 2]) { + local_28 = (uint *)0x0; + local_20 = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_28,0x2b); + cVar9 = s_Dimension_sizes_are_the_same_for_00461e18[0x2a]; + uVar7 = s_Dimension_sizes_are_the_same_for_00461e18._40_2_; + uVar6 = s_Dimension_sizes_are_the_same_for_00461e18._24_8_; + uVar5 = s_Dimension_sizes_are_the_same_for_00461e18._16_8_; + uVar3 = s_Dimension_sizes_are_the_same_for_00461e18._8_8_; + uVar2 = s_Dimension_sizes_are_the_same_for_00461e18._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_Dimension_sizes_are_the_same_for_00461e18._32_8_; + *(undefined2 *)(pcVar15 + 0x28) = uVar7; + pcVar15[0x2a] = cVar9; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + cv::error(-0xd1,(String *)&local_28, + "int cvInitNArrayIterator(int, CvArr**, const CvArr*, CvMatND*, CvNArrayIterator*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x1cf); + cv::String::deallocate((String *)&local_28); + uVar26 = puVar16[1]; + } + iVar25 = iVar25 + 1; + } while (iVar25 < (int)uVar26); + } + } + uVar26 = uVar26 - 1; + lVar18 = (long)(int)((*puVar16 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*puVar16 & 7) << 1)) & 3)); + if ((int)uVar22 < (int)uVar26) { + lVar19 = (long)(int)uVar26; + lVar20 = (long)(int)puVar16[lVar19 * 2 + 9]; + if (lVar18 == lVar20) { + while( true ) { + uVar26 = uVar26 - 1; + lVar18 = (int)puVar16[lVar19 * 2 + 8] * lVar20; + if (uVar26 == uVar22) break; + lVar20 = (long)(int)puVar16[lVar19 * 2 + 7]; + if (lVar20 != lVar18) goto LAB_00264204; + lVar19 = (long)(int)uVar26; + } + } + if ((0x7fffffff < lVar18) && (uVar26 == uVar22)) { + uVar26 = uVar26 + 1; + } + } +LAB_00264204: + *(uint **)puVar17 = puVar16; + if ((int)uVar22 < (int)uVar26) { + uVar22 = uVar26; + } + lVar24 = lVar24 + 1; + *(undefined8 *)(puVar17 + -0x34) = *(undefined8 *)(puVar16 + 6); + param_4 = param_4 + 0x48; + puVar23 = puVar21; + puVar17 = puVar17 + 2; + } while ((int)lVar24 <= (int)param_1); + uVar26 = 1; + uVar13 = puVar23[1] - 1; + if ((int)uVar22 < (int)uVar13) { + do { + lVar24 = (long)(int)uVar13; + uVar13 = uVar13 - 1; + uVar26 = uVar26 * puVar23[lVar24 * 2 + 8]; + } while (uVar13 != uVar22); + } + uVar13 = uVar22 + 1; + param_5[1] = uVar13; + *param_5 = param_1; + param_5[2] = uVar26; + param_5[3] = 1; + if (uVar13 != 0) { + puVar17 = puVar23 + 8; + puVar16 = param_5 + 0x18; + if ((puVar17 < param_5 + (ulong)uVar13 + 0x18 && puVar16 < puVar23 + ((ulong)uVar13 + 4) * 2) || + (uVar13 < 9)) { + do { + puVar21 = puVar17 + 2; + *puVar16 = *puVar17; + puVar17 = puVar21; + puVar16 = puVar16 + 1; + } while (puVar21 != puVar23 + ((ulong)uVar22 + 5) * 2); + } + else { + uVar26 = *puVar17; + uVar27 = puVar23[10]; + uVar28 = puVar23[0xe]; + *(ulong *)(param_5 + 0x1a) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8),CONCAT14((char)uVar28,puVar23[0xc])))); + *(ulong *)puVar16 = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))); + iVar25 = (uVar22 - 4 >> 2) + 1; + uVar26 = puVar23[0x10]; + uVar27 = puVar23[0x12]; + uVar28 = puVar23[0x16]; + uVar22 = iVar25 * 4; + *(ulong *)(param_5 + 0x1e) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8),CONCAT14((char)uVar28,puVar23[0x14])))); + *(ulong *)(param_5 + 0x1c) = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))); + if (iVar25 != 2) { + uVar26 = puVar23[0x18]; + uVar27 = puVar23[0x1a]; + uVar28 = puVar23[0x1e]; + *(ulong *)(param_5 + 0x22) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8),CONCAT14((char)uVar28,puVar23[0x1c])))); + *(ulong *)(param_5 + 0x20) = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))); + if (iVar25 != 3) { + uVar26 = puVar23[0x20]; + uVar27 = puVar23[0x22]; + uVar28 = puVar23[0x26]; + *(ulong *)(param_5 + 0x26) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8),CONCAT14((char)uVar28,puVar23[0x24]))) + ); + *(ulong *)(param_5 + 0x24) = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))); + if (iVar25 != 4) { + uVar26 = puVar23[0x28]; + uVar27 = puVar23[0x2a]; + uVar28 = puVar23[0x2e]; + *(ulong *)(param_5 + 0x2a) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8),CONCAT14((char)uVar28,puVar23[0x2c]) + ))); + *(ulong *)(param_5 + 0x28) = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))); + if (iVar25 != 5) { + uVar26 = puVar23[0x30]; + uVar27 = puVar23[0x32]; + uVar28 = puVar23[0x36]; + *(ulong *)(param_5 + 0x2e) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8), + CONCAT14((char)uVar28,puVar23[0x34])))); + *(ulong *)(param_5 + 0x2c) = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))); + if (iVar25 != 6) { + uVar26 = puVar23[0x38]; + uVar27 = puVar23[0x3a]; + uVar28 = puVar23[0x3e]; + *(ulong *)(param_5 + 0x32) = + CONCAT17((char)(uVar28 >> 0x18), + CONCAT16((char)(uVar28 >> 0x10), + CONCAT15((char)(uVar28 >> 8), + CONCAT14((char)uVar28,puVar23[0x3c])))); + *(ulong *)(param_5 + 0x30) = + CONCAT17((char)(uVar27 >> 0x18), + CONCAT16((char)(uVar27 >> 0x10), + CONCAT15((char)(uVar27 >> 8),CONCAT14((char)uVar27,uVar26)))) + ; + } + } + } + } + } + if (uVar22 != uVar13) { + iVar25 = uVar22 + 1; + param_5[(long)(int)uVar22 + 0x18] = puVar23[(long)(int)uVar22 * 2 + 8]; + if (iVar25 < (int)uVar13) { + iVar1 = uVar22 + 2; + param_5[(long)iVar25 + 0x18] = puVar23[(long)iVar25 * 2 + 8]; + if (iVar1 < (int)uVar13) { + iVar25 = uVar22 + 3; + param_5[(long)iVar1 + 0x18] = puVar23[(long)iVar1 * 2 + 8]; + if (iVar25 < (int)uVar13) { + iVar1 = uVar22 + 4; + param_5[(long)iVar25 + 0x18] = puVar23[(long)iVar25 * 2 + 8]; + if (iVar1 < (int)uVar13) { + iVar25 = uVar22 + 5; + param_5[(long)iVar1 + 0x18] = puVar23[(long)iVar1 * 2 + 8]; + if (iVar25 < (int)uVar13) { + iVar1 = uVar22 + 6; + param_5[(long)iVar25 + 0x18] = puVar23[(long)iVar25 * 2 + 8]; + if (iVar1 < (int)uVar13) { + param_5[(long)iVar1 + 0x18] = puVar23[(long)iVar1 * 2 + 8]; + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00264bcc (4444 bytes) name=cvReshapeMatND + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +String * cvReshapeMatND(String *param_1,int param_2,String *param_3,int param_4,int param_5, + int *param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + bool bVar11; + String *pSVar12; + int iVar14; + uint uVar15; + undefined8 *puVar16; + char *pcVar17; + void *pvVar18; + uint *puVar19; + uint uVar20; + int *piVar21; + int iVar22; + long lVar23; + uint uVar24; + int iVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + undefined4 uVar31; + undefined4 uVar32; + undefined8 uVar33; + uint local_15c; + long local_158; + long local_150; + undefined8 local_148; + undefined8 local_140; + undefined4 local_138; + undefined4 uStack_134; + long local_130; + int local_128; + int iStack_124; + undefined8 local_120; + int *local_118; + undefined4 local_110; + long local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8; + int local_f4; + String *pSVar13; + + bVar11 = param_1 == (String *)0x0; + local_15c = 0; + if ((bVar11) || (param_3 == (String *)0x0)) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x2b); + cVar5 = s_NULL_pointer_to_array_or_destina_00461e48[0x2a]; + uVar4 = s_NULL_pointer_to_array_or_destina_00461e48._40_2_; + uVar3 = s_NULL_pointer_to_array_or_destina_00461e48._24_8_; + uVar2 = s_NULL_pointer_to_array_or_destina_00461e48._16_8_; + uVar1 = s_NULL_pointer_to_array_or_destina_00461e48._8_8_; + uVar33 = s_NULL_pointer_to_array_or_destina_00461e48._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s_NULL_pointer_to_array_or_destina_00461e48._32_8_; + *(undefined2 *)(pcVar17 + 0x28) = uVar4; + pcVar17[0x2a] = cVar5; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0x1b,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9d0); + cv::String::deallocate((String *)&local_120); + } + uVar24 = (uint)bVar11; + if (param_4 == 0 && param_5 == 0) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + puVar16 = (undefined8 *)cv::String::allocate((String *)&local_120,0x30); + uVar6 = s_my_call__00461ea0._0_8_; + uVar3 = DAT_00461e98; + uVar2 = _DAT_00461e90; + uVar1 = DAT_00461e88; + uVar33 = DAT_00461e80; + *puVar16 = DAT_00461e78; + puVar16[1] = uVar33; + puVar16[2] = uVar1; + puVar16[3] = uVar2; + puVar16[4] = uVar3; + puVar16[5] = uVar6; + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9d3); + param_6 = (int *)0x0; + cv::String::deallocate((String *)&local_120); + iVar14 = cvGetDims(param_1,0); + param_5 = iVar14; +LAB_00264cb4: + if (2 < param_5) { + if (param_2 != 0x120) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x23); + cVar5 = s_The_output_header_should_be_CvMa_00462018[0x22]; + uVar3 = s_The_output_header_should_be_CvMa_00462018._24_8_; + uVar2 = s_The_output_header_should_be_CvMa_00462018._16_8_; + uVar1 = s_The_output_header_should_be_CvMa_00462018._8_8_; + uVar33 = s_The_output_header_should_be_CvMa_00462018._0_8_; + *(undefined2 *)(pcVar17 + 0x20) = s_The_output_header_should_be_CvMa_00462018._32_2_; + pcVar17[0x22] = cVar5; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0xc9,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa39); + cv::String::deallocate((String *)&local_120); + } + if (param_6 == (int *)0x0) { + if (((bVar11) || (uVar24 = *(uint *)param_1, (uVar24 & 0xffff0000) != 0x42430000)) || + (*(long *)(param_1 + 0x18) == 0)) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x1f); + cVar5 = s_The_input_array_must_be_CvMatND_00462040[0x1e]; + uVar4 = s_The_input_array_must_be_CvMatND_00462040._28_2_; + uVar31 = s_The_input_array_must_be_CvMatND_00462040._24_4_; + uVar1 = s_The_input_array_must_be_CvMatND_00462040._8_8_; + uVar33 = s_The_input_array_must_be_CvMatND_00462040._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_The_input_array_must_be_CvMatND_00462040._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar31; + *(undefined2 *)(pcVar17 + 0x1c) = uVar4; + pcVar17[0x1e] = cVar5; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa3e); + cv::String::deallocate((String *)&local_120); + uVar24 = *(uint *)param_1; + } + iVar14 = *(int *)(param_1 + (long)(*(int *)(param_1 + 4) + -1) * 8 + 0x20) + + (uVar24 >> 3 & 0x1ff) * + *(int *)(param_1 + (long)(*(int *)(param_1 + 4) + -1) * 8 + 0x20); + iVar25 = 0; + if (param_4 != 0) { + iVar25 = iVar14 / param_4; + } + if (iVar25 * param_4 != iVar14) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pvVar18 = (void *)cv::String::allocate((String *)&local_120,0x47); + memcpy(pvVar18,&DAT_00462060,0x47); + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa48); + cv::String::deallocate((String *)&local_120); + } + if (param_1 != param_3) { + memcpy(param_3,param_1,0x120); + *(undefined8 *)(param_3 + 8) = 0; + *(undefined4 *)(param_3 + 0x10) = 0; + } + uVar24 = *(uint *)param_3; + *(int *)(param_3 + (long)(*(int *)(param_3 + 4) + -1) * 8 + 0x20) = iVar25; + *(uint *)param_3 = (uVar24 & 7) + (param_4 + -1) * 8 | uVar24 & 0xfffff000; + goto joined_r0x0026549c; + } + if (param_4 != 0) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pvVar18 = (void *)cv::String::allocate((String *)&local_120,0x5f); + memcpy(pvVar18, + "Simultaneous change of shape and number of channels is not supported. Do it by 2 separate calls" + ,0x5f); + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa5f); + cv::String::deallocate((String *)&local_120); + } + if (uVar24 == 0) { + uVar15 = *(uint *)param_1; + uVar20 = uVar15 & 0xffff0000; + if (uVar20 != 0x42430000) { + local_15c = uVar24; + if (uVar15 == 0x90) { + param_1 = (String *)cvGetMat(param_1,&local_148,&local_15c,0); + if (param_1 == (String *)0x0) goto LAB_00264d78; + uVar20 = *(uint *)param_1 & 0xffff0000; + } + if (((uVar20 != 0x42420000) || (*(int *)(param_1 + 0x24) < 1)) || + (*(int *)(param_1 + 0x20) < 1)) goto LAB_00264d78; + goto LAB_00264dd8; + } + piVar21 = *(int **)(param_1 + 0x18); + if (piVar21 == (int *)0x0) { + param_1 = (String *)&local_120; + local_15c = 0; + local_120 = piVar21; + local_118 = piVar21; + pcVar17 = (char *)cv::String::allocate(param_1,0x20); + uVar2 = s_The_matrix_has_NULL_data_pointer_00461b60._24_8_; + uVar1 = s_The_matrix_has_NULL_data_pointer_00461b60._16_8_; + uVar33 = s_The_matrix_has_NULL_data_pointer_00461b60._8_8_; + *(undefined8 *)pcVar17 = s_The_matrix_has_NULL_data_pointer_00461b60._0_8_; + *(undefined8 *)(pcVar17 + 8) = uVar33; + *(undefined8 *)(pcVar17 + 0x10) = uVar1; + *(undefined8 *)(pcVar17 + 0x18) = uVar2; + cv::error(-0x1b,param_1,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x154); + cv::String::deallocate(param_1); + uVar15 = (uint)local_120; + } + } + else { + local_15c = 0; + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x1c); + uVar31 = s_NULL_array_pointer_is_passed_00461b40._24_4_; + uVar1 = s_NULL_array_pointer_is_passed_00461b40._8_8_; + uVar33 = s_NULL_array_pointer_is_passed_00461b40._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_NULL_array_pointer_is_passed_00461b40._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar31; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + cv::error(-0x1b,(String *)&local_120,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x14f); + param_1 = (String *)0x0; + cv::String::deallocate((String *)&local_120); +LAB_00264d78: + local_120 = (int *)0x0; + local_118 = (int *)0x0; + puVar16 = (undefined8 *)cv::String::allocate((String *)&local_120,0x26); + uVar4 = DAT_00461ca4; + uVar3 = DAT_00461c98; + uVar2 = DAT_00461c90; + uVar1 = DAT_00461c88; + uVar33 = _DAT_00461c80; + *(undefined4 *)(puVar16 + 4) = DAT_00461ca0; + *(undefined2 *)((long)puVar16 + 0x24) = uVar4; + *puVar16 = uVar33; + puVar16[1] = uVar1; + puVar16[2] = uVar2; + puVar16[3] = uVar3; + cv::error(-5,(String *)&local_120,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x160); + cv::String::deallocate((String *)&local_120); +LAB_00264dd8: + local_120 = *(int **)(param_1 + 0x18); + if (local_120 == (int *)0x0) { + local_118 = local_120; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x21); + uVar3 = s_Input_array_has_NULL_data_pointe_00461c58._24_8_; + uVar2 = s_Input_array_has_NULL_data_pointe_00461c58._16_8_; + uVar1 = s_Input_array_has_NULL_data_pointe_00461c58._8_8_; + uVar33 = s_Input_array_has_NULL_data_pointe_00461c58._0_8_; + pcVar17[0x20] = s_Input_array_has_NULL_data_pointe_00461c58[0x20]; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0x1b,(String *)&local_120,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x163); + cv::String::deallocate((String *)&local_120); + local_120 = *(int **)(param_1 + 0x18); + } + local_108 = (long)local_120; + local_110 = 0; + local_118 = (int *)0x0; + uVar15 = *(uint *)param_1; + local_120 = (int *)CONCAT44(2,uVar15); + local_100 = *(undefined4 *)(param_1 + 0x20); + local_fc = *(undefined4 *)(param_1 + 4); + local_f8 = *(undefined4 *)(param_1 + 0x24); + local_f4 = (uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3); + param_1 = (String *)&local_120; + } + if ((uVar15 >> 0xe & 1) != 0) { + local_148 = 0; + local_140 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_148,0x2a); + uVar4 = s_Non_continuous_nD_arrays_are_not_00462108._40_2_; + uVar3 = s_Non_continuous_nD_arrays_are_not_00462108._24_8_; + uVar2 = s_Non_continuous_nD_arrays_are_not_00462108._16_8_; + uVar1 = s_Non_continuous_nD_arrays_are_not_00462108._8_8_; + uVar33 = s_Non_continuous_nD_arrays_are_not_00462108._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s_Non_continuous_nD_arrays_are_not_00462108._32_8_; + *(undefined2 *)(pcVar17 + 0x28) = uVar4; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-5,(String *)&local_148, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa68); + cv::String::deallocate((String *)&local_148); + } + iVar25 = *(int *)(param_1 + 0x20); + if (1 < iVar14) { + uVar24 = (iVar14 - 6U >> 2) + 1; + iVar22 = uVar24 * 4; + if (iVar14 - 2U < 7) { + iVar30 = 1; + } + else { + iVar26 = 1; + iVar27 = 1; + iVar28 = 1; + iVar29 = 1; + pSVar13 = param_1 + 0x28; + uVar20 = 0; + do { + iVar30 = *(int *)pSVar13; + uVar31 = *(undefined4 *)(pSVar13 + 8); + pSVar12 = pSVar13 + 0x10; + uVar32 = *(undefined4 *)(pSVar13 + 0x18); + pSVar13 = pSVar13 + 0x20; + uVar20 = uVar20 + 1; + iVar26 = iVar26 * iVar30; + iVar27 = iVar27 * (int)(CONCAT17((char)((uint)uVar31 >> 0x18), + CONCAT16((char)((uint)uVar31 >> 0x10), + CONCAT15((char)((uint)uVar31 >> 8), + CONCAT14((char)uVar31,iVar30)))) >> + 0x20); + iVar28 = iVar28 * *(int *)pSVar12; + iVar29 = iVar29 * (int)(CONCAT17((char)((uint)uVar32 >> 0x18), + CONCAT16((char)((uint)uVar32 >> 0x10), + CONCAT15((char)((uint)uVar32 >> 8), + CONCAT14((char)uVar32,*(int *)pSVar12 + )))) >> 0x20); + } while (uVar20 < uVar24); + iVar30 = iVar22 + 1; + iVar25 = iVar25 * iVar29 * iVar28 * iVar27 * iVar26; + if (iVar22 == iVar14 + -1) goto LAB_00264f5c; + } + iVar25 = iVar25 * *(int *)(param_1 + (long)iVar30 * 8 + 0x20); + if (iVar30 + 1 < iVar14) { + iVar25 = iVar25 * *(int *)(param_1 + (long)(iVar30 + 1) * 8 + 0x20); + if (iVar30 + 2 < iVar14) { + iVar25 = iVar25 * *(int *)(param_1 + (long)(iVar30 + 2) * 8 + 0x20); + if (iVar30 + 3 < iVar14) { + iVar25 = iVar25 * *(int *)(param_1 + (long)(iVar30 + 3) * 8 + 0x20); + if (iVar30 + 4 < iVar14) { + iVar25 = iVar25 * *(int *)(param_1 + (long)(iVar30 + 4) * 8 + 0x20); + if (iVar30 + 5 < iVar14) { + iVar25 = iVar25 * *(int *)(param_1 + (long)(iVar30 + 5) * 8 + 0x20); + if (iVar30 + 6 < iVar14) { + iVar25 = iVar25 * *(int *)(param_1 + (long)(iVar30 + 6) * 8 + 0x20); + } + } + } + } + } + } + } +LAB_00264f5c: + lVar23 = 0; + iVar14 = 1; + do { + while (piVar21 = param_6 + lVar23, *piVar21 < 1) { + local_148 = 0; + local_140 = 0; + puVar16 = (undefined8 *)cv::String::allocate((String *)&local_148,0x2a); + uVar33 = DAT_00462158; + *(undefined2 *)(puVar16 + 5) = DAT_00462160; + puVar16[4] = uVar33; + uVar2 = DAT_00462150; + uVar1 = DAT_00462148; + uVar33 = _DAT_00462140; + *puVar16 = DAT_00462138; + puVar16[1] = uVar33; + puVar16[2] = uVar1; + puVar16[3] = uVar2; + cv::error(-0xc9,(String *)&local_148, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa73); + cv::String::deallocate((String *)&local_148); + piVar21 = param_6 + lVar23; + lVar23 = lVar23 + 1; + iVar14 = iVar14 * *piVar21; + if (param_5 <= (int)lVar23) goto LAB_00265014; + } + lVar23 = lVar23 + 1; + iVar14 = iVar14 * *piVar21; + } while ((int)lVar23 < param_5); +LAB_00265014: + if (iVar25 != iVar14) { + local_148 = 0; + local_140 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_148,0x42); + uVar7 = s_Number_of_elements_in_the_origin_00462168._40_8_; + uVar6 = s_Number_of_elements_in_the_origin_00462168._32_8_; + uVar3 = s_Number_of_elements_in_the_origin_00462168._24_8_; + uVar2 = s_Number_of_elements_in_the_origin_00462168._16_8_; + uVar1 = s_Number_of_elements_in_the_origin_00462168._8_8_; + uVar33 = s_Number_of_elements_in_the_origin_00462168._0_8_; + *(undefined2 *)(pcVar17 + 0x40) = s_Number_of_elements_in_the_origin_00462168._64_2_; + uVar9 = s_Number_of_elements_in_the_origin_00462168._56_8_; + uVar8 = s_Number_of_elements_in_the_origin_00462168._48_8_; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + *(undefined8 *)(pcVar17 + 0x20) = uVar6; + *(undefined8 *)(pcVar17 + 0x28) = uVar7; + *(undefined8 *)(pcVar17 + 0x30) = uVar8; + *(undefined8 *)(pcVar17 + 0x38) = uVar9; + cv::error(-0xc9,(String *)&local_148, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa79); + cv::String::deallocate((String *)&local_148); + } + if (param_1 != param_3) { + *(undefined8 *)(param_3 + 8) = 0; + *(undefined4 *)(param_3 + 0x10) = 0; + } + uVar24 = *(uint *)param_1; + iVar25 = param_5 + -1; + *(uint *)param_3 = uVar24; + *(int *)(param_3 + 4) = param_5; + lVar23 = (long)iVar25; + *(undefined8 *)(param_3 + 0x18) = *(undefined8 *)(param_1 + 0x18); + iVar14 = (uVar24 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar24 & 7) << 1)) & 3); + piVar21 = param_6 + lVar23; + while( true ) { + iVar22 = *piVar21; + iVar25 = iVar25 + -1; + *(int *)(param_3 + lVar23 * 8 + 0x24) = iVar14; + *(int *)(param_3 + lVar23 * 8 + 0x20) = iVar22; + iVar14 = iVar14 * *piVar21; + if (iVar25 == -1) break; + lVar23 = (long)iVar25; + piVar21 = piVar21 + -1; + } + goto joined_r0x0026549c; + } + } + else { + iVar14 = cvGetDims(param_1,0); + if (param_5 == 0) { + param_6 = (int *)0x0; + param_5 = iVar14; + goto LAB_00264cb4; + } + if (param_5 != 1) { + if (0x1f < param_5 - 1U) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x2e); + uVar4 = s_Non_positive_or_too_large_number_00461eb0._44_2_; + uVar31 = s_Non_positive_or_too_large_number_00461eb0._40_4_; + uVar3 = s_Non_positive_or_too_large_number_00461eb0._24_8_; + uVar2 = s_Non_positive_or_too_large_number_00461eb0._16_8_; + uVar1 = s_Non_positive_or_too_large_number_00461eb0._8_8_; + uVar33 = s_Non_positive_or_too_large_number_00461eb0._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s_Non_positive_or_too_large_number_00461eb0._32_8_; + *(undefined4 *)(pcVar17 + 0x28) = uVar31; + *(undefined2 *)(pcVar17 + 0x2c) = uVar4; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0xd3,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9e3); + cv::String::deallocate((String *)&local_120); + } + if (param_6 == (int *)0x0) { + local_120 = param_6; + local_118 = param_6; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x25); + cVar5 = s_New_dimension_sizes_are_not_spec_00461ee0[0x24]; + uVar3 = s_New_dimension_sizes_are_not_spec_00461ee0._24_8_; + uVar2 = s_New_dimension_sizes_are_not_spec_00461ee0._16_8_; + uVar1 = s_New_dimension_sizes_are_not_spec_00461ee0._8_8_; + uVar33 = s_New_dimension_sizes_are_not_spec_00461ee0._0_8_; + *(undefined4 *)(pcVar17 + 0x20) = s_New_dimension_sizes_are_not_spec_00461ee0._32_4_; + pcVar17[0x24] = cVar5; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0x1b,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9e5); + cv::String::deallocate((String *)&local_120); + } + goto LAB_00264cb4; + } + param_6 = (int *)0x0; + } + if ((param_2 != 0x28) && (param_2 != 0x120)) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x2c); + uVar31 = s_The_output_header_should_be_CvMa_00461f08._40_4_; + uVar3 = s_The_output_header_should_be_CvMa_00461f08._24_8_; + uVar2 = s_The_output_header_should_be_CvMa_00461f08._16_8_; + uVar1 = s_The_output_header_should_be_CvMa_00461f08._8_8_; + uVar33 = s_The_output_header_should_be_CvMa_00461f08._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s_The_output_header_should_be_CvMa_00461f08._32_8_; + *(undefined4 *)(pcVar17 + 0x28) = uVar31; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x9f1); + cv::String::deallocate((String *)&local_120); + } + if (param_1 == param_3) { + uVar33 = *(undefined8 *)(param_1 + 8); + uVar31 = *(undefined4 *)(param_1 + 0x10); + } + else { + uVar31 = 0; + uVar33 = 0; + } + if ((((uVar24 != 0) || (uVar24 = *(uint *)param_1, (uVar24 & 0xffff0000) != 0x42420000)) || + (iVar14 = *(int *)(param_1 + 0x24), iVar14 < 1)) || + ((local_128 = *(int *)(param_1 + 0x20), local_128 < 1 || (*(long *)(param_1 + 0x18) == 0)))) { + param_1 = (String *)cvGetMat(param_1,&local_148,&local_15c,1); + uVar24 = *(uint *)param_1; + iVar14 = *(int *)(param_1 + 0x24); + local_128 = *(int *)(param_1 + 0x20); + } + iVar25 = (uVar24 >> 3 & 0x1ff) + 1; + if (param_4 == 0) { + param_4 = iVar25; + } + iVar25 = iVar25 * iVar14; + if (param_6 == (int *)0x0) { + if ((param_5 == 1) || (iVar25 < param_4)) { + iVar14 = 0; + if (param_4 != 0) { + iVar14 = (iVar25 * local_128) / param_4; + } + goto LAB_00265308; + } + iVar22 = 0; + if (param_4 != 0) { + iVar22 = iVar25 / param_4; + } + iStack_124 = iVar22; + iVar14 = local_128; + if (iVar25 != param_4 * iVar22) goto LAB_002653a4; + } + else { + iVar14 = *param_6; +LAB_00265308: + if (iVar14 != local_128) { + iVar22 = iVar25 * local_128; + if ((uVar24 >> 0xe & 1) == 0) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x45); + cVar5 = s_The_matrix_is_not_continuous_so_t_00461f38[0x44]; + uVar10 = s_The_matrix_is_not_continuous_so_t_00461f38._56_8_; + uVar9 = s_The_matrix_is_not_continuous_so_t_00461f38._48_8_; + uVar8 = s_The_matrix_is_not_continuous_so_t_00461f38._40_8_; + uVar7 = s_The_matrix_is_not_continuous_so_t_00461f38._32_8_; + uVar6 = s_The_matrix_is_not_continuous_so_t_00461f38._24_8_; + uVar3 = s_The_matrix_is_not_continuous_so_t_00461f38._16_8_; + uVar2 = s_The_matrix_is_not_continuous_so_t_00461f38._8_8_; + uVar1 = s_The_matrix_is_not_continuous_so_t_00461f38._0_8_; + *(undefined4 *)(pcVar17 + 0x40) = s_The_matrix_is_not_continuous_so_t_00461f38._64_4_; + pcVar17[0x44] = cVar5; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar6; + *(undefined8 *)(pcVar17 + 0x20) = uVar7; + *(undefined8 *)(pcVar17 + 0x28) = uVar8; + *(undefined8 *)(pcVar17 + 0x30) = uVar9; + *(undefined8 *)(pcVar17 + 0x38) = uVar10; + cv::error(-0xd,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa13); + cv::String::deallocate((String *)&local_120); + } + iVar25 = 0; + if (iVar14 != 0) { + iVar25 = iVar22 / iVar14; + } + if (iVar25 * iVar14 != iVar22) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pvVar18 = (void *)cv::String::allocate((String *)&local_120,0x4e); + memcpy(pvVar18,&DAT_00461f80,0x4e); + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa19); + cv::String::deallocate((String *)&local_120); + } + } + iVar22 = 0; + if (param_4 != 0) { + iVar22 = iVar25 / param_4; + } + local_128 = iVar14; + iStack_124 = iVar22; + if ((param_4 * iVar22 != iVar25) || + ((param_6 != (int *)0x0 && (bVar11 = iVar22 != param_6[1], iVar22 = param_6[1], bVar11)))) { +LAB_002653a4: + iVar14 = local_128; + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x44); + uVar8 = s_The_total_matrix_width_is_not_di_00461fd0._40_8_; + uVar7 = s_The_total_matrix_width_is_not_di_00461fd0._32_8_; + uVar6 = s_The_total_matrix_width_is_not_di_00461fd0._24_8_; + uVar3 = s_The_total_matrix_width_is_not_di_00461fd0._16_8_; + uVar2 = s_The_total_matrix_width_is_not_di_00461fd0._8_8_; + uVar1 = s_The_total_matrix_width_is_not_di_00461fd0._0_8_; + *(undefined4 *)(pcVar17 + 0x40) = s_The_total_matrix_width_is_not_di_00461fd0._64_4_; + uVar10 = s_The_total_matrix_width_is_not_di_00461fd0._56_8_; + uVar9 = s_The_total_matrix_width_is_not_di_00461fd0._48_8_; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar6; + *(undefined8 *)(pcVar17 + 0x20) = uVar7; + *(undefined8 *)(pcVar17 + 0x28) = uVar8; + *(undefined8 *)(pcVar17 + 0x30) = uVar9; + *(undefined8 *)(pcVar17 + 0x38) = uVar10; + cv::error(-5,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa22); + cv::String::deallocate((String *)&local_120); + iVar22 = iStack_124; + } + } + puVar19 = (uint *)&local_148; + uVar24 = (*(uint *)param_1 & 7) + (param_4 + -1) * 8 | *(uint *)param_1 & 0xfffff000; + local_140 = uVar33; + local_138 = uVar31; + local_148 = CONCAT44(((*(uint *)param_1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)param_1 & 7) << 1)) & 3)) * iVar22 & + -(uint)(1 < iVar14),uVar24); + if (param_2 == 0x28) { + *(ulong *)(param_3 + 0x20) = CONCAT44(iStack_124,local_128); + *(undefined8 *)param_3 = local_148; + *(undefined8 *)(param_3 + 8) = uVar33; + *(ulong *)(param_3 + 0x10) = CONCAT44(uStack_134,uVar31); + *(long *)(param_3 + 0x18) = local_130; + goto joined_r0x0026549c; + } + if (param_3 == (String *)0x0) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x1c); + uVar31 = s_NULL_array_pointer_is_passed_00461b40._24_4_; + uVar1 = s_NULL_array_pointer_is_passed_00461b40._8_8_; + uVar33 = s_NULL_array_pointer_is_passed_00461b40._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_NULL_array_pointer_is_passed_00461b40._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar31; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + cv::error(-0x1b,(String *)&local_120,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x14f); + cv::String::deallocate((String *)&local_120); + uVar24 = (uint)local_148; + } + uVar20 = uVar24 & 0xffff0000; + if (uVar20 == 0x42430000) { + if (local_130 == 0) { + local_120 = (int *)local_130; + local_118 = (int *)local_130; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x20); + uVar2 = s_The_matrix_has_NULL_data_pointer_00461b60._24_8_; + uVar1 = s_The_matrix_has_NULL_data_pointer_00461b60._16_8_; + uVar33 = s_The_matrix_has_NULL_data_pointer_00461b60._8_8_; + *(undefined8 *)pcVar17 = s_The_matrix_has_NULL_data_pointer_00461b60._0_8_; + *(undefined8 *)(pcVar17 + 8) = uVar33; + *(undefined8 *)(pcVar17 + 0x10) = uVar1; + *(undefined8 *)(pcVar17 + 0x18) = uVar2; + cv::error(-0x1b,(String *)&local_120,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x154); + cv::String::deallocate((String *)&local_120); + } + } + else { + if (uVar24 == 0x90) { + puVar19 = (uint *)cvGetMat(puVar19,&local_120,0,0); + if (puVar19 != (uint *)0x0) { + uVar20 = *puVar19 & 0xffff0000; + goto LAB_00265568; + } +LAB_00265574: + local_158 = 0; + local_150 = 0; + puVar16 = (undefined8 *)cv::String::allocate((String *)&local_158,0x26); + uVar4 = DAT_00461ca4; + uVar3 = DAT_00461c98; + uVar2 = DAT_00461c90; + uVar1 = DAT_00461c88; + uVar33 = _DAT_00461c80; + *(undefined4 *)(puVar16 + 4) = DAT_00461ca0; + *(undefined2 *)((long)puVar16 + 0x24) = uVar4; + *puVar16 = uVar33; + puVar16[1] = uVar1; + puVar16[2] = uVar2; + puVar16[3] = uVar3; + cv::error(-5,(String *)&local_158,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x160); + cv::String::deallocate((String *)&local_158); + } + else { +LAB_00265568: + if (((uVar20 != 0x42420000) || ((int)puVar19[9] < 1)) || ((int)puVar19[8] < 1)) + goto LAB_00265574; + } + lVar23 = *(long *)(puVar19 + 6); + if (lVar23 == 0) { + local_158 = lVar23; + local_150 = lVar23; + pcVar17 = (char *)cv::String::allocate((String *)&local_158,0x21); + uVar3 = s_Input_array_has_NULL_data_pointe_00461c58._24_8_; + uVar2 = s_Input_array_has_NULL_data_pointe_00461c58._16_8_; + uVar1 = s_Input_array_has_NULL_data_pointe_00461c58._8_8_; + uVar33 = s_Input_array_has_NULL_data_pointe_00461c58._0_8_; + pcVar17[0x20] = s_Input_array_has_NULL_data_pointe_00461c58[0x20]; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0x1b,(String *)&local_158,"CvMatND* cvGetMatND(const CvArr*, CvMatND*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0x163); + cv::String::deallocate((String *)&local_158); + lVar23 = *(long *)(puVar19 + 6); + } + *(long *)(param_3 + 0x18) = lVar23; + *(undefined8 *)(param_3 + 8) = 0; + uVar24 = *puVar19; + *(uint *)param_3 = uVar24; + *(undefined4 *)(param_3 + 0x10) = 0; + *(undefined4 *)(param_3 + 4) = 2; + uVar20 = puVar19[1]; + *(uint *)(param_3 + 0x20) = puVar19[8]; + *(uint *)(param_3 + 0x24) = uVar20; + *(uint *)(param_3 + 0x28) = puVar19[9]; + *(uint *)(param_3 + 0x2c) = + (uVar24 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar24 & 7) << 1)) & 3); + } + if (0 < param_5) { + *(int *)(param_3 + 4) = param_5; + } +joined_r0x0026549c: + if (local_15c != 0) { + local_120 = (int *)0x0; + local_118 = (int *)0x0; + pcVar17 = (char *)cv::String::allocate((String *)&local_120,0x26); + uVar4 = s_COI_is_not_supported_by_this_ope_004621b0._36_2_; + uVar3 = s_COI_is_not_supported_by_this_ope_004621b0._24_8_; + uVar2 = s_COI_is_not_supported_by_this_ope_004621b0._16_8_; + uVar1 = s_COI_is_not_supported_by_this_ope_004621b0._8_8_; + uVar33 = s_COI_is_not_supported_by_this_ope_004621b0._0_8_; + *(undefined4 *)(pcVar17 + 0x20) = s_COI_is_not_supported_by_this_ope_004621b0._32_4_; + *(undefined2 *)(pcVar17 + 0x24) = uVar4; + *(undefined8 *)pcVar17 = uVar33; + *(undefined8 *)(pcVar17 + 8) = uVar1; + *(undefined8 *)(pcVar17 + 0x10) = uVar2; + *(undefined8 *)(pcVar17 + 0x18) = uVar3; + cv::error(-0x18,(String *)&local_120, + "CvArr* cvReshapeMatND(const CvArr*, int, CvArr*, int, int, int*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xa90); + cv::String::deallocate((String *)&local_120); + } + return param_3; +} + + +================================================================== + +### FUNC 00265f08 (1100 bytes) name=cvReshape + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint * cvReshape(uint *param_1,uint *param_2,int param_3,uint param_4) + +{ + undefined8 uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + undefined4 uVar11; + uint uVar12; + undefined8 *puVar13; + void *__dest; + char *pcVar14; + uint uVar15; + int iVar16; + int local_14; + uint *local_10; + uint *local_8; + + if (param_2 == (uint *)0x0) { + local_10 = param_2; + local_8 = param_2; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xaa0); + cv::String::deallocate((String *)&local_10); + } + if ((((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42420000)) || + ((int)param_1[9] < 1)) || (((int)param_1[8] < 1 || (*(long *)(param_1 + 6) == 0)))) { + local_14 = 0; + param_1 = (uint *)cvGetMat(param_1,param_2,&local_14,1); + if (local_14 != 0) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar3 = s_COI_is_not_supported_004621d8._8_8_; + uVar1 = s_COI_is_not_supported_004621d8._0_8_; + *(undefined4 *)(pcVar14 + 0x10) = s_COI_is_not_supported_004621d8._16_4_; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar3; + cv::error(-0x18,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xaa7); + cv::String::deallocate((String *)&local_10); + } + } + if (param_3 == 0) { + param_3 = (*param_1 >> 3 & 0x1ff) + 1; + } + else if (3 < param_3 - 1U) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xf,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xaad); + cv::String::deallocate((String *)&local_10); + } + if (param_1 != param_2) { + uVar1 = *(undefined8 *)(param_1 + 2); + *(undefined8 *)param_2 = *(undefined8 *)param_1; + *(undefined8 *)(param_2 + 2) = uVar1; + uVar12 = param_2[4]; + uVar1 = *(undefined8 *)(param_1 + 6); + *(undefined8 *)(param_2 + 4) = *(undefined8 *)(param_1 + 4); + *(undefined8 *)(param_2 + 6) = uVar1; + *(undefined8 *)(param_2 + 8) = *(undefined8 *)(param_1 + 8); + param_2[2] = 0; + param_2[3] = 0; + param_2[4] = uVar12; + } + uVar12 = *param_1; + iVar16 = param_1[9] + (uVar12 >> 3 & 0x1ff) * param_1[9]; + if (iVar16 < param_3) { +LAB_00265fcc: + uVar15 = param_1[8]; + if (param_4 == 0) { + param_4 = 0; + if (param_3 != 0) { + param_4 = (int)(uVar15 * iVar16) / param_3; + } + if (param_4 == 0) goto LAB_00265fe0; + } +LAB_002660b4: + if (param_4 != uVar15) { + uVar15 = iVar16 * uVar15; + if ((uVar12 >> 0xe & 1) == 0) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + puVar13 = (undefined8 *)cv::String::allocate((String *)&local_10,0x48); + uVar9 = _DAT_00462228; + uVar8 = DAT_00462220; + uVar7 = DAT_00462218; + uVar6 = DAT_00462210; + uVar5 = DAT_00462208; + uVar4 = DAT_00462200; + uVar3 = DAT_004621f8; + uVar1 = DAT_004621f0; + puVar13[8] = s_changed_00462230._0_8_; + *puVar13 = uVar1; + puVar13[1] = uVar3; + puVar13[2] = uVar4; + puVar13[3] = uVar5; + puVar13[4] = uVar6; + puVar13[5] = uVar7; + puVar13[6] = uVar8; + puVar13[7] = uVar9; + cv::error(-0xd,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xac6); + cv::String::deallocate((String *)&local_10); + } + if (uVar15 < param_4) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x16); + uVar10 = s_Bad_new_number_of_rows_00462240._20_2_; + uVar3 = s_Bad_new_number_of_rows_00462240._8_8_; + uVar1 = s_Bad_new_number_of_rows_00462240._0_8_; + *(undefined4 *)(pcVar14 + 0x10) = s_Bad_new_number_of_rows_00462240._16_4_; + *(undefined2 *)(pcVar14 + 0x14) = uVar10; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar3; + cv::error(-0xd3,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xac9); + cv::String::deallocate((String *)&local_10); + } + iVar16 = 0; + if (param_4 != 0) { + iVar16 = (int)uVar15 / (int)param_4; + } + if (iVar16 * param_4 != uVar15) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x4e); + memcpy(__dest,&DAT_00461f80,0x4e); + cv::error(-5,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xacf); + cv::String::deallocate((String *)&local_10); + } + param_2[8] = param_4; + uVar12 = *param_1; + param_2[1] = ((uint)(0x88442211L >> ((uVar12 & 7) << 2)) & 0xf) * iVar16; + goto LAB_00265fec; + } + } + else { + iVar2 = 0; + if (param_3 != 0) { + iVar2 = iVar16 / param_3; + } + if (iVar16 != iVar2 * param_3) goto LAB_00265fcc; + uVar15 = param_1[8]; + if (param_4 != 0) goto LAB_002660b4; + } +LAB_00265fe0: + param_2[8] = uVar15; + param_2[1] = param_1[1]; +LAB_00265fec: + uVar15 = 0; + if (param_3 != 0) { + uVar15 = iVar16 / param_3; + } + if (uVar15 * param_3 != iVar16) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + puVar13 = (undefined8 *)cv::String::allocate((String *)&local_10,0x3e); + uVar10 = DAT_00462294; + uVar11 = DAT_00462290; + uVar7 = DAT_00462280; + uVar6 = DAT_00462278; + uVar5 = DAT_00462270; + uVar4 = _LAB_00462268; + uVar3 = DAT_00462260; + uVar1 = DAT_00462258; + puVar13[6] = DAT_00462288; + *(undefined4 *)(puVar13 + 7) = uVar11; + *(undefined2 *)((long)puVar13 + 0x3c) = uVar10; + *puVar13 = uVar1; + puVar13[1] = uVar3; + puVar13[2] = uVar4; + puVar13[3] = uVar5; + puVar13[4] = uVar6; + puVar13[5] = uVar7; + cv::error(-0xf,(String *)&local_10,"CvMat* cvReshape(const CvArr*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xad9); + cv::String::deallocate((String *)&local_10); + uVar12 = *param_1; + } + param_2[9] = uVar15; + *param_2 = (uVar12 & 7) + (param_3 + -1) * 8 | uVar12 & 0xfffff000; + return param_2; +} + + +================================================================== + +### FUNC 002663e0 (912 bytes) name=cvInitImageHeader + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 * +cvInitImageHeader(undefined8 *param_1,long param_2,uint param_3,int param_4,uint param_5,int param_6 + ) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined2 uVar4; + undefined4 uVar5; + char cVar6; + ulong uVar7; + undefined4 *puVar8; + undefined8 *puVar9; + int iVar10; + char *pcVar11; + int iVar12; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x16); + uVar4 = DAT_004622ac; + uVar3 = DAT_004622a0; + uVar2 = _DAT_00462298; + *(undefined4 *)(puVar9 + 2) = DAT_004622a8; + *(undefined2 *)((long)puVar9 + 0x14) = uVar4; + *puVar9 = uVar2; + puVar9[1] = uVar3; + cv::error(-9,(String *)&local_10, + "IplImage* cvInitImageHeader(IplImage*, CvSize, int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xb67); + cv::String::deallocate((String *)&local_10); + } + *param_1 = 0; + param_1[1] = 0; + uVar1 = param_4 - 1; + 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; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + *(undefined4 *)param_1 = 0x90; + iVar12 = (int)param_2; + iVar10 = (int)((ulong)param_2 >> 0x20); + if (uVar1 < 4) { + uVar7 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar1 << 4; + pcVar11 = *(char **)((long)&PTR_DAT_004f5a88 + uVar7); + strncpy((char *)((long)param_1 + 0x14),*(char **)((long)&PTR_DAT_004f5a80 + uVar7),4); + strncpy((char *)(param_1 + 3),pcVar11,4); + } + else { + strncpy((char *)((long)param_1 + 0x14),"",4); + strncpy((char *)(param_1 + 3),"",4); + } + if ((iVar12 < 0) || (param_2 < 0)) { + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0xd); + cVar6 = s_Bad_input_roi_004622b0[0xc]; + uVar5 = s_Bad_input_roi_004622b0._8_4_; + *(undefined8 *)pcVar11 = s_Bad_input_roi_004622b0._0_8_; + *(undefined4 *)(pcVar11 + 8) = uVar5; + pcVar11[0xc] = cVar6; + cv::error(-0x19,(String *)&local_10, + "IplImage* cvInitImageHeader(IplImage*, CvSize, int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xb71); + cv::String::deallocate((String *)&local_10); + } + if (((((param_3 != 1) && (((param_3 & 0x7fffffff) - 8 & 0xfffffff7) != 0)) && + ((param_3 & 0x7fffffff) != 0x20)) && (param_3 != 0x40)) || (param_4 < 0)) { + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x12); + uVar3 = s_Unsupported_format_004622c0._8_8_; + uVar2 = s_Unsupported_format_004622c0._0_8_; + *(undefined2 *)(pcVar11 + 0x10) = s_Unsupported_format_004622c0._16_2_; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0x11,(String *)&local_10, + "IplImage* cvInitImageHeader(IplImage*, CvSize, int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xb78); + cv::String::deallocate((String *)&local_10); + } + if (1 < param_5) { + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x10); + uVar2 = s_Bad_input_origin_004622d8._8_8_; + *(undefined8 *)pcVar11 = s_Bad_input_origin_004622d8._0_8_; + *(undefined8 *)(pcVar11 + 8) = uVar2; + cv::error(-0x14,(String *)&local_10, + "IplImage* cvInitImageHeader(IplImage*, CvSize, int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xb7a); + cv::String::deallocate((String *)&local_10); + } + if ((param_6 - 4U & 0xfffffffb) != 0) { + local_10 = (undefined8 *)0x0; + local_8 = (undefined8 *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0xf); + cVar6 = s_Bad_input_align_004622f0[0xe]; + uVar4 = s_Bad_input_align_004622f0._12_2_; + uVar5 = s_Bad_input_align_004622f0._8_4_; + *(undefined8 *)pcVar11 = s_Bad_input_align_004622f0._0_8_; + *(undefined4 *)(pcVar11 + 8) = uVar5; + *(undefined2 *)(pcVar11 + 0xc) = uVar4; + pcVar11[0xe] = cVar6; + cv::error(-0x15,(String *)&local_10, + "IplImage* cvInitImageHeader(IplImage*, CvSize, int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xb7d); + cv::String::deallocate((String *)&local_10); + } + puVar8 = (undefined4 *)param_1[6]; + *(int *)(param_1 + 5) = iVar12; + *(int *)((long)param_1 + 0x2c) = iVar10; + if (puVar8 != (undefined4 *)0x0) { + *puVar8 = 0; + puVar8[2] = 0; + puVar8[1] = 0; + puVar8[3] = iVar12; + puVar8[4] = iVar10; + } + if (param_4 < 1) { + param_4 = 1; + } + *(int *)(param_1 + 1) = param_4; + *(uint *)(param_1 + 2) = param_3; + *(int *)((long)param_1 + 0x24) = param_6; + *(uint *)(param_1 + 4) = param_5; + uVar1 = param_6 + -1 + (param_4 * iVar12 * (param_3 & 0x7fffffff) + 7 >> 3) & -param_6; + *(uint *)(param_1 + 0xc) = uVar1; + *(uint *)(param_1 + 10) = iVar10 * uVar1; + return param_1; +} + + +================================================================== + +### FUNC 002667d4 (456 bytes) name=cvGetImage + +uint * cvGetImage(uint *param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + uint *puVar3; + uint *local_10; + uint *local_8; + + if (param_2 == (uint *)0x0) { + local_10 = param_2; + local_8 = param_2; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"IplImage* cvGetImage(const CvArr*, IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xaeb); + cv::String::deallocate((String *)&local_10); + } + if (param_1 != (uint *)0x0) { + if (*param_1 == 0x90) { + return param_1; + } + if ((((*param_1 & 0xffff0000) == 0x42420000) && (0 < (int)param_1[9])) && (0 < (int)param_1[8])) + goto LAB_0026684c; + } + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xce,(String *)&local_10,"IplImage* cvGetImage(const CvArr*, IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xaf2); + cv::String::deallocate((String *)&local_10); +LAB_0026684c: + puVar3 = *(uint **)(param_1 + 6); + if (puVar3 == (uint *)0x0) { + local_10 = puVar3; + local_8 = puVar3; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"IplImage* cvGetImage(const CvArr*, IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xaf5); + cv::String::deallocate((String *)&local_10); + } + uVar1 = *param_1 & 7; + if ((uVar1 - 3 < 2) || (uVar2 = 0, uVar1 == 1)) { + uVar2 = 0x80000000; + } + cvInitImageHeader(param_2,CONCAT44(param_1[8],param_1[9]), + uVar2 | ((uint)(0x88442211L >> (uVar1 << 2)) & 0xf) << 3, + (*param_1 >> 3 & 0x1ff) + 1,0,4); + cvSetData(param_2,*(undefined8 *)(param_1 + 6),param_1[1]); + return param_2; +} + + +================================================================== + +### FUNC 002669d8 (216 bytes) name=cvCreateImageHeader + +undefined8 cvCreateImageHeader(undefined8 param_1,undefined4 param_2,int param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined1 *puVar3; + undefined1 *puVar4; + ulong uVar5; + + if (DAT_00531f10 == (code *)0x0) { + uVar2 = cv::cvAlloc(0x90); + cvInitImageHeader(uVar2,param_1,param_2,param_3,0,4); + } + else { + uVar1 = param_3 - 1; + if (uVar1 < 4) { + uVar5 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar1 << 4; + puVar3 = *(undefined1 **)((long)&PTR_DAT_004f5a80 + uVar5); + puVar4 = *(undefined1 **)((long)&PTR_DAT_004f5a88 + uVar5); + } + else { + puVar3 = &DAT_00472008; + puVar4 = puVar3; + } + uVar2 = (*DAT_00531f10)(param_3,0,param_2,puVar3,puVar4,0,0,4,(int)param_1, + (int)((ulong)param_1 >> 0x20),0,0,0,0); + } + return uVar2; +} + + +================================================================== + +### FUNC 00266ab0 (36 bytes) name=cvCreateImage + +undefined8 cvCreateImage(void) + +{ + undefined8 uVar1; + + uVar1 = cvCreateImageHeader(); + cvCreateData(); + return uVar1; +} + + +================================================================== + +### FUNC 00266ad4 (164 bytes) name=cvReleaseImageHeader + +void cvReleaseImageHeader(undefined8 *param_1) + +{ + void *pvVar1; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvReleaseImageHeader(IplImage**)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xb9a); + cv::String::deallocate((String *)&local_10); + } + pvVar1 = (void *)*param_1; + if (pvVar1 != (void *)0x0) { + *param_1 = 0; + if (DAT_00531f20 == (code *)0x0) { + cv::cvFree_(*(void **)((long)pvVar1 + 0x30)); + *(undefined8 *)((long)pvVar1 + 0x30) = 0; + cv::cvFree_(pvVar1); + } + else { + (*DAT_00531f20)(pvVar1,5); + } + } + return; +} + + +================================================================== + +### FUNC 00266b8c (140 bytes) name=cvReleaseImage + +void cvReleaseImage(long *param_1) + +{ + long *local_10; + long *local_8; + + if (param_1 == (long *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvReleaseImage(IplImage**)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xbb2); + cv::String::deallocate((String *)&local_10); + } + local_10 = (long *)*param_1; + if (local_10 != (long *)0x0) { + *param_1 = 0; + cvReleaseData(local_10); + cvReleaseImageHeader(&local_10); + } + return; +} + + +================================================================== + +### FUNC 00266c2c (508 bytes) name=cvSetImageROI + +void cvSetImageROI(long param_1,long param_2,long param_3) + +{ + void *__dest; + long lVar1; + undefined8 uVar2; + undefined4 *puVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-9,(String *)&local_10,"void cvSetImageROI(IplImage*, CvRect)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xbc3); + cv::String::deallocate((String *)&local_10); + } + iVar8 = (int)param_3; + iVar6 = (int)param_2; + iVar7 = (int)((ulong)param_2 >> 0x20); + iVar9 = (int)((ulong)param_3 >> 0x20); + if ((((iVar8 < 0) || (param_3 < 0)) || (iVar4 = *(int *)(param_1 + 0x28), iVar4 <= iVar6)) || + (((iVar5 = *(int *)(param_1 + 0x2c), iVar5 <= iVar7 || (iVar6 + iVar8 < (int)(uint)(0 < iVar8)) + ) || (iVar9 + iVar7 < (int)(uint)(0 < iVar9))))) { + local_10 = 0; + local_8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_10,0xb8); + memcpy(__dest,&DAT_00462300,0xb8); + cv::error(-0xd7,(String *)&local_10,"void cvSetImageROI(IplImage*, CvRect)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xbc9); + cv::String::deallocate((String *)&local_10); + iVar4 = *(int *)(param_1 + 0x28); + iVar5 = *(int *)(param_1 + 0x2c); + } + iVar9 = iVar9 + iVar7; + iVar8 = iVar6 + iVar8; + lVar1 = *(long *)(param_1 + 0x30); + if (iVar6 < 0) { + iVar6 = 0; + } + if (param_2 < 0) { + iVar7 = 0; + } + if (iVar8 < iVar4) { + iVar4 = iVar8; + } + if (iVar9 < iVar5) { + iVar5 = iVar9; + } + if (lVar1 == 0) { + if (DAT_00531f28 == (code *)0x0) { + puVar3 = (undefined4 *)cv::cvAlloc(0x14); + *puVar3 = 0; + puVar3[1] = iVar6; + puVar3[2] = iVar7; + puVar3[3] = iVar4 - iVar6; + puVar3[4] = iVar5 - iVar7; + *(undefined4 **)(param_1 + 0x30) = puVar3; + } + else { + uVar2 = (*DAT_00531f28)(); + *(undefined8 *)(param_1 + 0x30) = uVar2; + } + return; + } + *(ulong *)(lVar1 + 0xc) = CONCAT44(iVar5 - iVar7,iVar4 - iVar6); + *(ulong *)(lVar1 + 4) = CONCAT44(iVar7,iVar6); + return; +} + + +================================================================== + +### FUNC 00266e50 (152 bytes) name=cvResetImageROI + +void cvResetImageROI(long param_1) + +{ + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-9,(String *)&local_10,"void cvResetImageROI(IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xbe6); + cv::String::deallocate((String *)&local_10); + } + if (*(void **)(param_1 + 0x30) != (void *)0x0) { + if (DAT_00531f20 == (code *)0x0) { + cv::cvFree_(*(void **)(param_1 + 0x30)); + *(undefined8 *)(param_1 + 0x30) = 0; + } + else { + (*DAT_00531f20)(param_1,4); + *(undefined8 *)(param_1 + 0x30) = 0; + } + } + return; +} + + +================================================================== + +### FUNC 00266efc (216 bytes) name=cvGetImageROI + +undefined1 [16] cvGetImageROI(long param_1) + +{ + undefined1 auVar1 [16]; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + undefined4 uVar5; + char *pcVar6; + undefined4 uVar7; + undefined4 uVar8; + long lVar9; + undefined4 uVar10; + long local_10; + long lStack_8; + + if (param_1 == 0) { + local_10 = param_1; + lStack_8 = param_1; + pcVar6 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar4 = s_Null_pointer_to_image_004623c0[0x14]; + uVar3 = s_Null_pointer_to_image_004623c0._8_8_; + uVar2 = s_Null_pointer_to_image_004623c0._0_8_; + *(undefined4 *)(pcVar6 + 0x10) = s_Null_pointer_to_image_004623c0._16_4_; + pcVar6[0x14] = cVar4; + *(undefined8 *)pcVar6 = uVar2; + *(undefined8 *)(pcVar6 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_10,"CvRect cvGetImageROI(const IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xbfc); + cv::String::deallocate((String *)&local_10); + } + lVar9 = *(long *)(param_1 + 0x30); + if (lVar9 == 0) { + uVar7 = *(undefined4 *)(param_1 + 0x28); + uVar8 = 0; + uVar5 = *(undefined4 *)(param_1 + 0x2c); + uVar10 = uVar8; + } + else { + uVar8 = *(undefined4 *)(lVar9 + 4); + uVar7 = *(undefined4 *)(lVar9 + 0xc); + uVar5 = *(undefined4 *)(lVar9 + 0x10); + uVar10 = *(undefined4 *)(lVar9 + 8); + } + auVar1._12_4_ = uVar5; + auVar1._8_4_ = uVar7; + auVar1._4_4_ = uVar10; + auVar1._0_4_ = uVar8; + return auVar1; +} + + +================================================================== + +### FUNC 00266fe8 (300 bytes) name=cvSetImageCOI + +void cvSetImageCOI(long param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + uint *puVar4; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-9,(String *)&local_10,"void cvSetImageCOI(IplImage*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc0c); + cv::String::deallocate((String *)&local_10); + } + if (*(uint *)(param_1 + 8) < param_2) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x18,(String *)&local_10,"void cvSetImageCOI(IplImage*, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc0f); + cv::String::deallocate((String *)&local_10); + puVar4 = *(uint **)(param_1 + 0x30); + } + else { + puVar4 = *(uint **)(param_1 + 0x30); + } + if (puVar4 == (uint *)0x0) { + if (param_2 != 0) { + uVar1 = *(uint *)(param_1 + 0x28); + uVar2 = *(uint *)(param_1 + 0x2c); + if (DAT_00531f28 == (code *)0x0) { + puVar4 = (uint *)cv::cvAlloc(0x14); + *puVar4 = param_2; + puVar4[1] = 0; + puVar4[2] = 0; + puVar4[3] = uVar1; + puVar4[4] = uVar2; + *(uint **)(param_1 + 0x30) = puVar4; + } + else { + uVar3 = (*DAT_00531f28)(param_2,0); + *(undefined8 *)(param_1 + 0x30) = uVar3; + } + } + } + else { + *puVar4 = param_2; + } + return; +} + + +================================================================== + +### FUNC 0026713c (116 bytes) name=cvGetImageCOI + +undefined4 cvGetImageCOI(long param_1) + +{ + undefined4 uVar1; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-9,(String *)&local_10,"int cvGetImageCOI(const IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc23); + cv::String::deallocate((String *)&local_10); + } + uVar1 = 0; + if (*(undefined4 **)(param_1 + 0x30) != (undefined4 *)0x0) { + uVar1 = **(undefined4 **)(param_1 + 0x30); + } + return uVar1; +} + + +================================================================== + +### FUNC 002671c4 (376 bytes) name=cvCloneImage + +void * cvCloneImage(int *param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + int iVar6; + undefined8 uVar7; + char *pcVar8; + void *__dest; + undefined4 *puVar9; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == (int *)0x0) || (*param_1 != 0x90)) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x10); + uVar7 = s_Bad_image_header_004623d8._8_8_; + *(undefined8 *)pcVar8 = s_Bad_image_header_004623d8._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar7; + cv::error(-5,(String *)&local_10,"IplImage* cvCloneImage(const IplImage*)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc2f); + cv::String::deallocate((String *)&local_10); + } + if (DAT_00531f30 == (code *)0x0) { + __dest = (void *)cv::cvAlloc(0x90); + memcpy(__dest,param_1,0x90); + *(undefined8 *)((long)__dest + 0x30) = 0; + *(undefined8 *)((long)__dest + 0x88) = 0; + puVar9 = *(undefined4 **)(param_1 + 0xc); + *(undefined8 *)((long)__dest + 0x58) = 0; + if (puVar9 != (undefined4 *)0x0) { + uVar1 = puVar9[1]; + uVar2 = *puVar9; + uVar3 = puVar9[2]; + uVar4 = puVar9[3]; + uVar5 = puVar9[4]; + if (DAT_00531f28 == (code *)0x0) { + puVar9 = (undefined4 *)cv::cvAlloc(0x14); + *puVar9 = uVar2; + puVar9[1] = uVar1; + puVar9[2] = uVar3; + puVar9[3] = uVar4; + puVar9[4] = uVar5; + } + else { + puVar9 = (undefined4 *)(*DAT_00531f28)(uVar2); + } + *(undefined4 **)((long)__dest + 0x30) = puVar9; + } + if (*(long *)(param_1 + 0x16) != 0) { + iVar6 = param_1[0x14]; + cvCreateData(__dest); + memcpy(*(void **)((long)__dest + 0x58),*(void **)(param_1 + 0x16),(long)iVar6); + return __dest; + } + } + else { + __dest = (void *)(*DAT_00531f30)(param_1); + } + return __dest; +} + + +================================================================== + +### FUNC 00267350 (572 bytes) name=cvCheckTermCriteria + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvCheckTermCriteria(double param_1,ulong param_2,double param_3,uint param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined1 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + undefined8 *puVar8; + void *pvVar9; + double dVar10; + undefined1 auVar11 [16]; + undefined8 local_10; + undefined8 local_8; + + if ((param_2 & 0xfffffffc) != 0) { + local_10 = 0; + local_8 = 0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_10,0x1d); + uVar4 = LAB_0046240c; + uVar3 = DAT_00462408; + uVar2 = _LAB_004623f8; + uVar1 = DAT_004623f0; + puVar8[2] = DAT_00462400; + *(undefined4 *)(puVar8 + 3) = uVar3; + *(undefined1 *)((long)puVar8 + 0x1c) = uVar4; + *puVar8 = uVar1; + puVar8[1] = uVar2; + cv::error(-5,(String *)&local_10, + "CvTermCriteria cvCheckTermCriteria(CvTermCriteria, double, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc5d); + cv::String::deallocate((String *)&local_10); + } + if (((param_2 & 1) != 0) && (param_4 = (uint)(param_2 >> 0x20), (int)param_4 < 1)) { + local_10 = 0; + local_8 = 0; + pvVar9 = (void *)cv::String::allocate((String *)&local_10,0x3f); + memcpy(pvVar9,&DAT_00462410,0x3f); + cv::error(-5,(String *)&local_10, + "CvTermCriteria cvCheckTermCriteria(CvTermCriteria, double, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc63); + cv::String::deallocate((String *)&local_10); + } + if (((uint)param_2 >> 1 & 1) == 0) { + param_3 = (double)(float)param_1; + } + else if (param_3 < 0.0) { + local_10 = 0; + local_8 = 0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_10,0x27); + uVar4 = DAT_00462476; + uVar7 = DAT_00462474; + uVar6 = _DAT_00462468; + uVar5 = DAT_00462460; + uVar2 = DAT_00462458; + uVar1 = DAT_00462450; + *(undefined4 *)(puVar8 + 4) = DAT_00462470; + *(undefined2 *)((long)puVar8 + 0x24) = uVar7; + *(undefined1 *)((long)puVar8 + 0x26) = uVar4; + *puVar8 = uVar1; + puVar8[1] = uVar2; + puVar8[2] = uVar5; + puVar8[3] = uVar6; + cv::error(-5,(String *)&local_10, + "CvTermCriteria cvCheckTermCriteria(CvTermCriteria, double, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc6a); + cv::String::deallocate((String *)&local_10); + } + if ((param_2 & 3) == 0) { + local_10 = 0; + local_8 = 0; + pvVar9 = (void *)cv::String::allocate((String *)&local_10,0x4d); + memcpy(pvVar9,"Neither accuracy nor maximum iterations number flags are set in criteria type", + 0x4d); + cv::error(-5,(String *)&local_10, + "CvTermCriteria cvCheckTermCriteria(CvTermCriteria, double, int)", + "/builds/master_pack-android/opencv/modules/core/src/array.cpp",0xc72); + cv::String::deallocate((String *)&local_10); + } + if (param_3 <= 0.0) { + dVar10 = 0.0; + } + else { + dVar10 = (double)(float)param_3; + } + if ((int)param_4 < 1) { + param_4 = 1; + } + auVar11._8_8_ = dVar10; + auVar11._0_8_ = (ulong)param_4 << 0x20 | 3; + return auVar11; +} + + +================================================================== + +### FUNC 002675dc (32 bytes) name=operator() + +/* cv::DefaultDeleter::TEMPNAMEPLACEHOLDERVALUE(CvMat*) const */ + +void __thiscall cv::DefaultDeleter::operator()(DefaultDeleter *this,CvMat *param_1) + +{ + cvReleaseMat(); + return; +} + + +================================================================== + +### FUNC 002675fc (32 bytes) name=operator() + +/* cv::DefaultDeleter<_IplImage>::TEMPNAMEPLACEHOLDERVALUE(_IplImage*) const */ + +void __thiscall +cv::DefaultDeleter<_IplImage>::operator()(DefaultDeleter<_IplImage> *this,_IplImage *param_1) + +{ + cvReleaseImage(); + return; +} + + +================================================================== + +### FUNC 0026761c (32 bytes) name=operator() + +/* cv::DefaultDeleter::TEMPNAMEPLACEHOLDERVALUE(CvMatND*) const */ + +void __thiscall +cv::DefaultDeleter::operator()(DefaultDeleter *this,CvMatND *param_1) + +{ + cvReleaseMat(); + return; +} + + +================================================================== + +### FUNC 0026763c (32 bytes) name=operator() + +/* cv::DefaultDeleter::TEMPNAMEPLACEHOLDERVALUE(CvSparseMat*) const */ + +void __thiscall +cv::DefaultDeleter::operator()(DefaultDeleter *this,CvSparseMat *param_1) + +{ + cvReleaseSparseMat(); + return; +} + + +================================================================== + +### FUNC 0026765c (32 bytes) name=operator() + +/* cv::DefaultDeleter::TEMPNAMEPLACEHOLDERVALUE(CvMemStorage*) const */ + +void __thiscall +cv::DefaultDeleter::operator() + (DefaultDeleter *this,CvMemStorage *param_1) + +{ + cvReleaseMemStorage(); + return; +} + + +================================================================== + +### FUNC 0026767c (32 bytes) name=operator() + +/* cv::DefaultDeleter::TEMPNAMEPLACEHOLDERVALUE(CvFileStorage*) const */ + +void __thiscall +cv::DefaultDeleter::operator() + (DefaultDeleter *this,CvFileStorage *param_1) + +{ + cvReleaseFileStorage(); + return; +} + + +================================================================== + +### FUNC 0026769c (272 bytes) name=FUN_0026769c + +void FUN_0026769c(long param_1,long param_2,long param_3,long param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + undefined1 uVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + undefined1 *puVar8; + undefined1 *puVar9; + int iVar10; + long lVar11; + undefined1 *puVar12; + long lVar13; + undefined1 *puVar14; + + if (0 < param_6) { + iVar6 = param_5 + -1; + uVar5 = param_5 - 2U >> 1; + lVar13 = 0; + lVar1 = (ulong)uVar5 + 1; + iVar4 = (uVar5 + 1) * 2; + do { + puVar12 = *(undefined1 **)(param_1 + lVar13 * 8); + puVar14 = *(undefined1 **)(param_3 + lVar13 * 8); + iVar7 = *(int *)(param_2 + lVar13 * 4); + iVar2 = *(int *)(param_4 + lVar13 * 4); + if (puVar12 == (undefined1 *)0x0) { + iVar7 = 0; + if (0 < iVar6) { + iVar7 = 0; + puVar12 = puVar14; + do { + puVar12[iVar2] = 0; + iVar7 = iVar7 + 2; + *puVar12 = 0; + puVar12 = puVar12 + (iVar2 << 1); + } while (iVar7 < iVar6); + puVar14 = puVar14 + lVar1 * (iVar2 << 1); + iVar7 = iVar4; + } + if (iVar7 < param_5) { + *puVar14 = 0; + } + } + else { + if (iVar6 < 1) { + iVar7 = 0; + } + else { + iVar10 = 0; + lVar11 = (long)(iVar7 << 1); + puVar8 = puVar12; + puVar9 = puVar14; + do { + iVar10 = iVar10 + 2; + uVar3 = puVar8[iVar7]; + *puVar9 = *puVar8; + puVar8 = puVar8 + lVar11; + puVar9[iVar2] = uVar3; + puVar9 = puVar9 + (iVar2 << 1); + } while (iVar10 < iVar6); + puVar12 = puVar12 + lVar11 * lVar1; + puVar14 = puVar14 + lVar1 * (iVar2 << 1); + iVar7 = iVar4; + } + if (iVar7 < param_5) { + *puVar14 = *puVar12; + } + } + lVar13 = lVar13 + 1; + } while ((int)lVar13 < param_6); + } + return; +} + + +================================================================== + +### FUNC 002677ac (272 bytes) name=FUN_002677ac + +void FUN_002677ac(long param_1,long param_2,long param_3,long param_4,int param_5,int param_6) + +{ + long lVar1; + uint uVar2; + undefined2 uVar3; + int iVar4; + uint uVar5; + int iVar6; + undefined2 *puVar7; + undefined2 *puVar8; + int iVar9; + ulong uVar10; + ulong uVar11; + undefined2 *puVar12; + long lVar13; + undefined2 *puVar14; + + if (0 < param_6) { + iVar6 = param_5 + -1; + uVar5 = param_5 - 2U >> 1; + lVar13 = 0; + lVar1 = (ulong)uVar5 + 1; + iVar4 = (uVar5 + 1) * 2; + do { + puVar12 = *(undefined2 **)(param_1 + lVar13 * 8); + puVar14 = *(undefined2 **)(param_3 + lVar13 * 8); + uVar5 = *(uint *)(param_2 + lVar13 * 4); + uVar2 = *(uint *)(param_4 + lVar13 * 4); + if (puVar12 == (undefined2 *)0x0) { + iVar9 = 0; + if (0 < iVar6) { + uVar10 = -(ulong)((uVar2 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar2 << 1) << 1; + iVar9 = 0; + puVar12 = puVar14; + do { + *(undefined2 *) + ((long)puVar12 + (-(ulong)(uVar2 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar2 << 1)) = + 0; + iVar9 = iVar9 + 2; + *puVar12 = 0; + puVar12 = (undefined2 *)((long)puVar12 + uVar10); + } while (iVar9 < iVar6); + puVar14 = (undefined2 *)((long)puVar14 + lVar1 * uVar10); + iVar9 = iVar4; + } + if (iVar9 < param_5) { + *puVar14 = 0; + } + } + else { + if (iVar6 < 1) { + iVar9 = 0; + } + else { + iVar9 = 0; + uVar11 = -(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar5 << 1) << 1; + uVar10 = -(ulong)((uVar2 & 0x7fffffff) >> 0x1e) & 0xfffffffe00000000 | + (ulong)(uVar2 << 1) << 1; + puVar7 = puVar12; + puVar8 = puVar14; + do { + iVar9 = iVar9 + 2; + uVar3 = *(undefined2 *) + ((long)puVar7 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1)); + *puVar8 = *puVar7; + puVar7 = (undefined2 *)((long)puVar7 + uVar11); + *(undefined2 *) + ((long)puVar8 + (-(ulong)(uVar2 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar2 << 1)) = + uVar3; + puVar8 = (undefined2 *)((long)puVar8 + uVar10); + } while (iVar9 < iVar6); + puVar12 = (undefined2 *)((long)puVar12 + uVar11 * lVar1); + puVar14 = (undefined2 *)((long)puVar14 + lVar1 * uVar10); + iVar9 = iVar4; + } + if (iVar9 < param_5) { + *puVar14 = *puVar12; + } + } + lVar13 = lVar13 + 1; + } while ((int)lVar13 < param_6); + } + return; +} + + +================================================================== + +### FUNC 002678bc (272 bytes) name=FUN_002678bc + +void FUN_002678bc(long param_1,long param_2,long param_3,long param_4,int param_5,int param_6) + +{ + long lVar1; + uint uVar2; + undefined4 uVar3; + int iVar4; + uint uVar5; + int iVar6; + undefined4 *puVar7; + undefined4 *puVar8; + int iVar9; + ulong uVar10; + ulong uVar11; + undefined4 *puVar12; + long lVar13; + undefined4 *puVar14; + + if (0 < param_6) { + iVar6 = param_5 + -1; + uVar5 = param_5 - 2U >> 1; + lVar13 = 0; + lVar1 = (ulong)uVar5 + 1; + iVar4 = (uVar5 + 1) * 2; + do { + puVar12 = *(undefined4 **)(param_1 + lVar13 * 8); + puVar14 = *(undefined4 **)(param_3 + lVar13 * 8); + uVar5 = *(uint *)(param_2 + lVar13 * 4); + uVar2 = *(uint *)(param_4 + lVar13 * 4); + if (puVar12 == (undefined4 *)0x0) { + iVar9 = 0; + if (0 < iVar6) { + uVar10 = -(ulong)((uVar2 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar2 << 1) << 2; + iVar9 = 0; + puVar12 = puVar14; + do { + *(undefined4 *) + ((long)puVar12 + (-(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2)) = + 0; + iVar9 = iVar9 + 2; + *puVar12 = 0; + puVar12 = (undefined4 *)((long)puVar12 + uVar10); + } while (iVar9 < iVar6); + puVar14 = (undefined4 *)((long)puVar14 + lVar1 * uVar10); + iVar9 = iVar4; + } + if (iVar9 < param_5) { + *puVar14 = 0; + } + } + else { + if (iVar6 < 1) { + iVar9 = 0; + } + else { + iVar9 = 0; + uVar11 = -(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar5 << 1) << 2; + uVar10 = -(ulong)((uVar2 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar2 << 1) << 2; + puVar7 = puVar12; + puVar8 = puVar14; + do { + iVar9 = iVar9 + 2; + uVar3 = *(undefined4 *) + ((long)puVar7 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2)); + *puVar8 = *puVar7; + puVar7 = (undefined4 *)((long)puVar7 + uVar11); + *(undefined4 *) + ((long)puVar8 + (-(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2)) = + uVar3; + puVar8 = (undefined4 *)((long)puVar8 + uVar10); + } while (iVar9 < iVar6); + puVar12 = (undefined4 *)((long)puVar12 + uVar11 * lVar1); + puVar14 = (undefined4 *)((long)puVar14 + lVar1 * uVar10); + iVar9 = iVar4; + } + if (iVar9 < param_5) { + *puVar14 = *puVar12; + } + } + lVar13 = lVar13 + 1; + } while ((int)lVar13 < param_6); + } + return; +} + + +================================================================== + +### FUNC 002679cc (272 bytes) name=FUN_002679cc + +void FUN_002679cc(long param_1,long param_2,long param_3,long param_4,int param_5,int param_6) + +{ + long lVar1; + uint uVar2; + int iVar3; + uint uVar4; + int iVar5; + undefined8 *puVar6; + undefined8 *puVar7; + int iVar8; + undefined8 uVar9; + ulong uVar10; + ulong uVar11; + undefined8 *puVar12; + long lVar13; + undefined8 *puVar14; + + if (0 < param_6) { + iVar5 = param_5 + -1; + uVar4 = param_5 - 2U >> 1; + lVar13 = 0; + lVar1 = (ulong)uVar4 + 1; + iVar3 = (uVar4 + 1) * 2; + do { + puVar12 = *(undefined8 **)(param_1 + lVar13 * 8); + puVar14 = *(undefined8 **)(param_3 + lVar13 * 8); + uVar4 = *(uint *)(param_2 + lVar13 * 4); + uVar2 = *(uint *)(param_4 + lVar13 * 4); + if (puVar12 == (undefined8 *)0x0) { + iVar8 = 0; + if (0 < iVar5) { + uVar10 = -(ulong)((uVar2 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar2 << 1) << 3; + iVar8 = 0; + puVar12 = puVar14; + do { + *(undefined8 *) + ((long)puVar12 + (-(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3)) = + 0; + iVar8 = iVar8 + 2; + *puVar12 = 0; + puVar12 = (undefined8 *)((long)puVar12 + uVar10); + } while (iVar8 < iVar5); + puVar14 = (undefined8 *)((long)puVar14 + lVar1 * uVar10); + iVar8 = iVar3; + } + if (iVar8 < param_5) { + *puVar14 = 0; + } + } + else { + if (iVar5 < 1) { + iVar8 = 0; + } + else { + iVar8 = 0; + uVar11 = -(ulong)((uVar4 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar4 << 1) << 3; + uVar10 = -(ulong)((uVar2 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar2 << 1) << 3; + puVar6 = puVar12; + puVar7 = puVar14; + do { + iVar8 = iVar8 + 2; + uVar9 = *(undefined8 *) + ((long)puVar6 + + (-(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3)); + *puVar7 = *puVar6; + puVar6 = (undefined8 *)((long)puVar6 + uVar11); + *(undefined8 *) + ((long)puVar7 + (-(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3)) = + uVar9; + puVar7 = (undefined8 *)((long)puVar7 + uVar10); + } while (iVar8 < iVar5); + puVar12 = (undefined8 *)((long)puVar12 + uVar11 * lVar1); + puVar14 = (undefined8 *)((long)puVar14 + lVar1 * uVar10); + iVar8 = iVar3; + } + if (iVar8 < param_5) { + *puVar14 = *puVar12; + } + } + lVar13 = lVar13 + 1; + } while ((int)lVar13 < param_6); + } + return; +} + + +================================================================== + +### FUNC 00267adc (680 bytes) name=FUN_00267adc + +void FUN_00267adc(int *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + int *piVar11; + undefined8 *puVar12; + ulong uVar13; + ulong uVar14; + int iVar15; + ulong uVar16; + ulong uVar17; + ulong uVar18; + long lVar19; + uint uVar20; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + double dVar25; + double dVar26; + + dVar26 = *param_8; + iVar6 = *param_7; + dVar25 = param_8[1]; + iVar15 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar6 - 4U >> 2) + 1; + uVar7 = uVar1 * 4; + if (iVar6 + -3 < 1) { + uVar7 = 0; + } + uVar2 = uVar7 + 1; + uVar9 = iVar6 - uVar7; + uVar3 = uVar7 + 2; + lVar19 = (long)(int)uVar7; + uVar4 = uVar7 + 3; + uVar18 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar17 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + uVar16 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar4 << 2; + do { + if (0 < iVar6 + -3) { + uVar10 = 0; + puVar12 = param_5; + piVar11 = param_1; + do { + uVar10 = uVar10 + 1; + auVar23._0_8_ = (long)*piVar11; + auVar23._8_8_ = (long)piVar11[1]; + auVar21._0_8_ = (long)piVar11[2]; + auVar21._8_8_ = (long)piVar11[3]; + auVar23 = NEON_scvtf(auVar23,8); + auVar21 = NEON_scvtf(auVar21,8); + puVar12[1] = CONCAT44((float)(dVar25 + dVar26 * auVar21._8_8_), + (float)(dVar25 + dVar26 * auVar21._0_8_)); + *puVar12 = CONCAT44((float)(dVar25 + dVar26 * auVar23._8_8_), + (float)(dVar25 + dVar26 * auVar23._0_8_)); + puVar12 = puVar12 + 2; + piVar11 = piVar11 + 4; + } while (uVar10 < uVar1); + } + if ((int)uVar7 < iVar6) { + uVar10 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar13 = (ulong)uVar10; + if (uVar9 < uVar10) { + uVar13 = (ulong)uVar9; + } + if (uVar9 < 5) { + uVar13 = (ulong)uVar9; + } + uVar10 = (uint)uVar13; + if (uVar10 == 0) { + uVar14 = (ulong)uVar7; + } + else { + *(float *)((long)param_5 + lVar19 * 4) = + (float)(dVar25 + (double)param_1[lVar19] * dVar26); + if (uVar10 == 1) { + uVar14 = (ulong)uVar2; + } + else { + *(float *)((long)param_5 + uVar18) = + (float)(dVar25 + (double)*(int *)((long)param_1 + uVar18) * dVar26); + if (uVar10 == 2) { + uVar14 = (ulong)uVar3; + } + else { + *(float *)((long)param_5 + uVar17) = + (float)(dVar25 + (double)*(int *)((long)param_1 + uVar17) * dVar26); + if (uVar10 == 4) { + uVar14 = (ulong)(uVar7 + 4); + *(float *)((long)param_5 + uVar16) = + (float)(dVar25 + (double)*(int *)((long)param_1 + uVar16) * dVar26); + } + else { + uVar14 = (ulong)uVar4; + } + } + } + if (uVar10 == uVar9) goto LAB_00267d38; + } + uVar5 = ((uVar9 - uVar10) - 4 >> 2) + 1; + iVar8 = uVar5 * 4; + if (2 < (uVar9 - 1) - uVar10) { + uVar20 = 0; + piVar11 = param_1 + uVar13 + lVar19; + puVar12 = (undefined8 *)((long)param_5 + (uVar13 + lVar19) * 4); + do { + uVar20 = uVar20 + 1; + auVar24._0_8_ = (long)*piVar11; + auVar24._8_8_ = (long)piVar11[1]; + auVar22._0_8_ = (long)piVar11[2]; + auVar22._8_8_ = (long)piVar11[3]; + auVar23 = NEON_scvtf(auVar24,8); + auVar21 = NEON_scvtf(auVar22,8); + puVar12[1] = CONCAT44((float)(dVar25 + dVar26 * auVar21._8_8_), + (float)(dVar25 + dVar26 * auVar21._0_8_)); + *puVar12 = CONCAT44((float)(dVar25 + dVar26 * auVar23._8_8_), + (float)(dVar25 + dVar26 * auVar23._0_8_)); + piVar11 = piVar11 + 4; + puVar12 = puVar12 + 2; + } while (uVar20 < uVar5); + uVar14 = (ulong)(uint)((int)uVar14 + iVar8); + if (iVar8 == uVar9 - uVar10) goto LAB_00267d38; + } + uVar13 = -(uVar14 >> 0x1f) & 0xfffffffc00000000 | uVar14 << 2; + *(float *)((long)param_5 + uVar13) = + (float)(dVar25 + (double)*(int *)((long)param_1 + uVar13) * dVar26); + if ((int)uVar14 + 1 < iVar6) { + *(float *)((long)param_5 + uVar13 + 4) = + (float)(dVar25 + (double)*(int *)((long)param_1 + uVar13 + 4) * dVar26); + if ((int)uVar14 + 2 < iVar6) { + *(float *)((long)param_5 + uVar13 + 8) = + (float)(dVar25 + (double)*(int *)((long)param_1 + uVar13 + 8) * dVar26); + } + } + } +LAB_00267d38: + iVar15 = iVar15 + -1; + param_1 = (int *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar15 != -1); + } + return; +} + + +================================================================== + +### FUNC 00267d84 (764 bytes) name=FUN_00267d84 + +void FUN_00267d84(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + double *pdVar11; + uint uVar12; + int iVar13; + undefined8 *puVar14; + int iVar15; + long lVar16; + uint uVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + long lVar22; + long lVar23; + + dVar21 = *param_8; + iVar7 = *param_7; + dVar20 = param_8[1]; + iVar15 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar7 - 4U >> 2) + 1; + iVar8 = uVar1 * 4; + if (iVar7 + -3 < 1) { + iVar8 = 0; + } + iVar2 = iVar8 + 1; + uVar10 = iVar7 - iVar8; + lVar16 = (long)iVar8; + iVar3 = iVar8 + 2; + iVar4 = iVar8 + 3; + iVar5 = iVar8 + 4; + lVar23 = NEON_shl((long)iVar4,2); + lVar22 = NEON_shl((long)iVar5,2); + do { + if (0 < iVar7 + -3) { + uVar12 = 0; + pdVar11 = param_1; + puVar14 = param_5; + do { + uVar12 = uVar12 + 1; + dVar19 = pdVar11[1]; + dVar18 = *pdVar11; + puVar14[1] = CONCAT44((float)(dVar20 + dVar21 * pdVar11[3]), + (float)(dVar20 + dVar21 * pdVar11[2])); + *puVar14 = CONCAT44((float)(dVar20 + dVar21 * dVar19),(float)(dVar20 + dVar21 * dVar18)); + pdVar11 = pdVar11 + 4; + puVar14 = puVar14 + 2; + } while (uVar12 < uVar1); + } + if (iVar8 < iVar7) { + uVar12 = (uint)((ulong)param_1 >> 3) & 1; + if (uVar10 < uVar12) { + uVar12 = uVar10; + } + if (uVar10 < 6) { + uVar12 = uVar10; + } + iVar13 = iVar8; + if (uVar12 != 0) { + *(float *)((long)param_5 + lVar16 * 4) = (float)(dVar20 + param_1[lVar16] * dVar21); + iVar13 = iVar2; + if ((((uVar12 != 1) && + (*(float *)((long)param_5 + (long)iVar2 * 4) = + (float)(dVar20 + param_1[iVar2] * dVar21), iVar13 = iVar3, uVar12 != 2)) && + (*(float *)((long)param_5 + (long)iVar3 * 4) = + (float)(dVar20 + param_1[iVar3] * dVar21), iVar13 = iVar4, uVar12 != 3)) && + (*(float *)((long)param_5 + lVar23) = (float)(dVar20 + param_1[iVar4] * dVar21), + iVar13 = iVar5, uVar12 == 5)) { + *(float *)((long)param_5 + lVar22) = (float)(dVar20 + param_1[iVar5] * dVar21); + iVar13 = iVar8 + 5; + } + if (uVar12 == uVar10) goto LAB_00268028; + } + uVar6 = ((uVar10 - uVar12) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + if (2 < (uVar10 - 1) - uVar12) { + uVar17 = 0; + pdVar11 = param_1 + (ulong)uVar12 + lVar16; + puVar14 = (undefined8 *)((long)param_5 + ((ulong)uVar12 + lVar16) * 4); + do { + uVar17 = uVar17 + 1; + dVar19 = pdVar11[1]; + dVar18 = *pdVar11; + puVar14[1] = CONCAT44((float)(dVar20 + dVar21 * pdVar11[3]), + (float)(dVar20 + dVar21 * pdVar11[2])); + *puVar14 = CONCAT44((float)(dVar20 + dVar21 * dVar19),(float)(dVar20 + dVar21 * dVar18)) + ; + pdVar11 = pdVar11 + 4; + puVar14 = puVar14 + 2; + } while (uVar17 < uVar6); + iVar13 = iVar13 + iVar9; + if (iVar9 == uVar10 - uVar12) goto LAB_00268028; + } + iVar9 = iVar13 + 1; + *(float *)((long)param_5 + (long)iVar13 * 4) = (float)(dVar20 + param_1[iVar13] * dVar21); + if (iVar9 < iVar7) { + iVar13 = iVar13 + 2; + *(float *)((long)param_5 + (long)iVar9 * 4) = (float)(dVar20 + param_1[iVar9] * dVar21); + if (iVar13 < iVar7) { + *(float *)((long)param_5 + (long)iVar13 * 4) = + (float)(dVar20 + param_1[iVar13] * dVar21); + } + } + } +LAB_00268028: + iVar15 = iVar15 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar15 != -1); + } + return; +} + + +================================================================== + +### FUNC 00268080 (2236 bytes) name=FUN_00268080 + +void FUN_00268080(double *param_1,long param_2,undefined8 param_3,undefined8 param_4,double *param_5 + ,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + byte *pbVar5; + int iVar6; + byte bVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + int iVar13; + uint uVar14; + byte bVar15; + byte bVar16; + byte bVar17; + byte bVar18; + byte bVar19; + long lVar20; + byte *pbVar21; + double *pdVar22; + long lVar23; + int iVar24; + int iVar25; + long lVar26; + double *pdVar27; + uint uVar28; + uint uVar29; + long lVar30; + long lVar31; + double dVar32; + double dVar33; + undefined1 auVar34 [16]; + long lVar35; + long lVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + long lVar52; + long lVar53; + long lVar54; + + dVar33 = *param_8; + iVar6 = *param_7; + iVar25 = param_7[1] + -1; + dVar32 = param_8[1]; + if (param_7[1] != 0) { + uVar12 = iVar6 - 4; + iVar13 = iVar6 + -3; + uVar11 = uVar12 >> 2; + uVar1 = uVar11 + 1; + uVar2 = (uVar11 - 3 >> 2) + 1; + iVar8 = uVar2 * 0x10; + if (uVar12 < 0xc) { + iVar8 = 0; + } + iVar9 = uVar1 * 4; + if (iVar13 < 1) { + iVar9 = 0; + } + uVar14 = iVar6 - iVar9; + lVar26 = (long)iVar9; + lVar35 = NEON_shl((ulong)uVar1,2); + lVar20 = (long)iVar8; + lVar31 = (long)(iVar8 + 4); + lVar53 = NEON_shl(lVar20,3); + lVar30 = (long)(iVar8 + 8); + lVar52 = NEON_shl(lVar31,3); + lVar54 = NEON_shl(lVar26 + (ulong)uVar14,3); + lVar36 = NEON_shl(lVar30,3); + do { + if (0 < iVar13) { + if ((param_1 < param_5 + (ulong)uVar1 * 4 && param_5 < (double *)((long)param_1 + lVar35)) + || (uVar1 < 4)) { + pbVar21 = (byte *)((long)param_1 + 1); + pdVar22 = param_5; + do { + pbVar5 = pbVar21 + 4; + bVar7 = pbVar21[-1]; + pdVar22[1] = dVar32 + (double)*pbVar21 * dVar33; + *pdVar22 = dVar32 + (double)bVar7 * dVar33; + bVar7 = pbVar21[1]; + pdVar22[3] = dVar32 + (double)pbVar21[2] * dVar33; + pdVar22[2] = dVar32 + (double)bVar7 * dVar33; + pbVar21 = pbVar5; + pdVar22 = pdVar22 + 4; + } while (pbVar5 != (byte *)((long)param_1 + (ulong)uVar11 * 4 + 5)); + } + else { + if (0xb < uVar12) { + uVar28 = 0; + pdVar22 = param_1; + pdVar27 = param_5; + do { + bVar7 = *(byte *)((long)pdVar22 + 10); + bVar15 = *(byte *)((long)pdVar22 + 0xb); + bVar16 = *(byte *)((long)pdVar22 + 0xc); + bVar17 = *(byte *)((long)pdVar22 + 0xd); + bVar18 = *(byte *)((long)pdVar22 + 0xe); + bVar19 = *(byte *)((long)pdVar22 + 0xf); + uVar28 = uVar28 + 1; + auVar47._0_8_ = + (long)(int)(CONCAT12(*(byte *)((long)pdVar22 + 1),(ushort)*(byte *)pdVar22) & + 0xffff); + auVar47._8_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 1); + auVar43._0_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 2); + auVar43._8_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 3); + auVar46._0_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 4); + auVar46._8_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 5); + auVar37._0_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 6); + auVar37._8_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 7); + auVar41 = NEON_scvtf(auVar47,8); + auVar40 = NEON_scvtf(auVar43,8); + auVar47 = NEON_scvtf(auVar46,8); + auVar37 = NEON_scvtf(auVar37,8); + auVar42._0_8_ = + (long)(int)(CONCAT12(*(byte *)((long)pdVar22 + 9),(ushort)*(byte *)(pdVar22 + 1)) + & 0xffff); + auVar42._8_8_ = (long)(int)(uint)*(byte *)((long)pdVar22 + 9); + pdVar27[1] = dVar32 + dVar33 * auVar41._8_8_; + *pdVar27 = dVar32 + dVar33 * auVar41._0_8_; + auVar43 = NEON_scvtf(auVar42,8); + auVar41._0_8_ = (long)(int)(uint)bVar7; + auVar41._8_8_ = (long)(int)(uint)bVar15; + pdVar27[3] = dVar32 + dVar33 * auVar40._8_8_; + pdVar27[2] = dVar32 + dVar33 * auVar40._0_8_; + auVar41 = NEON_scvtf(auVar41,8); + auVar50._0_8_ = (long)(int)(uint)bVar16; + auVar50._8_8_ = (long)(int)(uint)bVar17; + auVar40._0_8_ = (long)(int)(uint)bVar18; + auVar40._8_8_ = (long)(int)(uint)bVar19; + pdVar27[5] = dVar32 + dVar33 * auVar47._8_8_; + pdVar27[4] = dVar32 + dVar33 * auVar47._0_8_; + pdVar27[7] = dVar32 + dVar33 * auVar37._8_8_; + pdVar27[6] = dVar32 + dVar33 * auVar37._0_8_; + auVar40 = NEON_scvtf(auVar40,8); + auVar37 = NEON_scvtf(auVar50,8); + pdVar27[9] = dVar32 + dVar33 * auVar43._8_8_; + pdVar27[8] = dVar32 + dVar33 * auVar43._0_8_; + pdVar27[0xb] = dVar32 + dVar33 * auVar41._8_8_; + pdVar27[10] = dVar32 + dVar33 * auVar41._0_8_; + pdVar27[0xd] = dVar32 + dVar33 * auVar37._8_8_; + pdVar27[0xc] = dVar32 + dVar33 * auVar37._0_8_; + pdVar27[0xf] = dVar32 + dVar33 * auVar40._8_8_; + pdVar27[0xe] = dVar32 + dVar33 * auVar40._0_8_; + pdVar22 = pdVar22 + 2; + pdVar27 = pdVar27 + 0x10; + } while (uVar28 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_00268510; + } + bVar7 = *(byte *)((long)param_1 + lVar20 + 1); + *(double *)((long)param_5 + lVar53) = + dVar32 + (double)*(byte *)((long)param_1 + lVar20) * dVar33; + *(double *)((long)param_5 + lVar53 + 8) = dVar32 + (double)bVar7 * dVar33; + bVar7 = *(byte *)((long)param_1 + lVar20 + 3); + *(double *)((long)param_5 + lVar53 + 0x10) = + dVar32 + (double)*(byte *)((long)param_1 + lVar20 + 2) * dVar33; + *(double *)((long)param_5 + lVar53 + 0x18) = dVar32 + (double)bVar7 * dVar33; + if (iVar8 + 4 < iVar13) { + bVar7 = *(byte *)((long)param_1 + lVar31 + 1); + *(double *)((long)param_5 + lVar52) = + dVar32 + (double)*(byte *)((long)param_1 + lVar31) * dVar33; + *(double *)((long)param_5 + lVar52 + 8) = dVar32 + (double)bVar7 * dVar33; + bVar7 = *(byte *)((long)param_1 + lVar31 + 3); + *(double *)((long)param_5 + lVar52 + 0x10) = + dVar32 + (double)*(byte *)((long)param_1 + lVar31 + 2) * dVar33; + *(double *)((long)param_5 + lVar52 + 0x18) = dVar32 + (double)bVar7 * dVar33; + if (iVar8 + 8 < iVar13) { + bVar7 = *(byte *)((long)param_1 + lVar30 + 1); + *(double *)((long)param_5 + lVar36) = + dVar32 + (double)*(byte *)((long)param_1 + lVar30) * dVar33; + *(double *)((long)param_5 + lVar36 + 8) = dVar32 + (double)bVar7 * dVar33; + bVar7 = *(byte *)((long)param_1 + lVar30 + 3); + *(double *)((long)param_5 + lVar36 + 0x10) = + dVar32 + (double)*(byte *)((long)param_1 + lVar30 + 2) * dVar33; + *(double *)((long)param_5 + lVar36 + 0x18) = dVar32 + (double)bVar7 * dVar33; + } + } + } + } +LAB_00268510: + if (iVar9 < iVar6) { + pdVar22 = param_5 + lVar26; + pbVar21 = (byte *)((long)param_1 + lVar26); + if ((pdVar22 < (double *)((long)param_1 + lVar26 + (ulong)uVar14) && + pbVar21 < (byte *)((long)param_5 + lVar54)) || (uVar14 < 0x14)) { + lVar23 = 0; + do { + pdVar22[lVar23] = dVar32 + (double)pbVar21[lVar23] * dVar33; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar6 + -1) - iVar9) + 1); + } + else { + uVar28 = (uint)((ulong)pdVar22 >> 3) & 1; + if (uVar14 < uVar28) { + uVar28 = uVar14; + } + iVar24 = iVar9; + if (uVar28 != 0) { + *pdVar22 = dVar32 + (double)*pbVar21 * dVar33; + iVar24 = iVar9 + 1; + } + uVar3 = ((uVar14 - uVar28) - 0x10 >> 4) + 1; + uVar29 = 0; + iVar10 = uVar3 * 0x10; + pdVar22 = param_5 + (ulong)uVar28 + lVar26; + pbVar21 = (byte *)((long)param_1 + lVar26 + (ulong)uVar28); + do { + bVar7 = pbVar21[0xc]; + bVar15 = pbVar21[0xd]; + bVar16 = pbVar21[0xe]; + bVar17 = pbVar21[0xf]; + uVar29 = uVar29 + 1; + auVar48._0_8_ = (long)(int)(CONCAT12(pbVar21[1],(ushort)*pbVar21) & 0xffff); + auVar48._8_8_ = (long)(int)(uint)pbVar21[1]; + auVar51._0_8_ = (long)(int)(uint)pbVar21[2]; + auVar51._8_8_ = (long)(int)(uint)pbVar21[3]; + auVar44._0_8_ = (long)(int)(uint)pbVar21[4]; + auVar44._8_8_ = (long)(int)(uint)pbVar21[5]; + auVar38._0_8_ = (long)(int)(uint)pbVar21[6]; + auVar38._8_8_ = (long)(int)(uint)pbVar21[7]; + auVar41 = NEON_scvtf(auVar48,8); + auVar43 = NEON_scvtf(auVar51,8); + auVar49._0_8_ = (long)(int)(CONCAT12(pbVar21[9],(ushort)pbVar21[8]) & 0xffff); + auVar49._8_8_ = (long)(int)(uint)pbVar21[9]; + auVar40 = NEON_scvtf(auVar44,8); + auVar37 = NEON_scvtf(auVar38,8); + auVar39._0_8_ = (long)(int)(uint)pbVar21[10]; + auVar39._8_8_ = (long)(int)(uint)pbVar21[0xb]; + pdVar22[1] = dVar32 + dVar33 * auVar41._8_8_; + *pdVar22 = dVar32 + dVar33 * auVar41._0_8_; + auVar50 = NEON_scvtf(auVar49,8); + auVar41 = NEON_scvtf(auVar39,8); + pdVar22[3] = dVar32 + dVar33 * auVar43._8_8_; + pdVar22[2] = dVar32 + dVar33 * auVar43._0_8_; + auVar45._0_8_ = (long)(int)(uint)bVar7; + auVar45._8_8_ = (long)(int)(uint)bVar15; + auVar34._0_8_ = (long)(int)(uint)bVar16; + auVar34._8_8_ = (long)(int)(uint)bVar17; + pdVar22[5] = dVar32 + dVar33 * auVar40._8_8_; + pdVar22[4] = dVar32 + dVar33 * auVar40._0_8_; + auVar43 = NEON_scvtf(auVar45,8); + auVar40 = NEON_scvtf(auVar34,8); + pdVar22[7] = dVar32 + dVar33 * auVar37._8_8_; + pdVar22[6] = dVar32 + dVar33 * auVar37._0_8_; + pdVar22[9] = dVar32 + dVar33 * auVar50._8_8_; + pdVar22[8] = dVar32 + dVar33 * auVar50._0_8_; + pdVar22[0xb] = dVar32 + dVar33 * auVar41._8_8_; + pdVar22[10] = dVar32 + dVar33 * auVar41._0_8_; + pdVar22[0xd] = dVar32 + dVar33 * auVar43._8_8_; + pdVar22[0xc] = dVar32 + dVar33 * auVar43._0_8_; + pdVar22[0xf] = dVar32 + dVar33 * auVar40._8_8_; + pdVar22[0xe] = dVar32 + dVar33 * auVar40._0_8_; + pdVar22 = pdVar22 + 0x10; + pbVar21 = pbVar21 + 0x10; + } while (uVar29 < uVar3); + iVar24 = iVar24 + iVar10; + if (uVar14 - uVar28 != iVar10) { + iVar10 = iVar24 + 1; + param_5[iVar24] = dVar32 + (double)*(byte *)((long)param_1 + (long)iVar24) * dVar33; + if (iVar10 < iVar6) { + iVar4 = iVar24 + 2; + param_5[iVar10] = dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) * dVar33; + if (iVar4 < iVar6) { + iVar10 = iVar24 + 3; + param_5[iVar4] = dVar32 + (double)*(byte *)((long)param_1 + (long)iVar4) * dVar33; + if (iVar10 < iVar6) { + iVar4 = iVar24 + 4; + param_5[iVar10] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) * dVar33; + if (iVar4 < iVar6) { + iVar10 = iVar24 + 5; + param_5[iVar4] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar4) * dVar33; + if (iVar10 < iVar6) { + iVar4 = iVar24 + 6; + param_5[iVar10] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) * dVar33; + if (iVar4 < iVar6) { + iVar10 = iVar24 + 7; + param_5[iVar4] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar4) * dVar33; + if (iVar10 < iVar6) { + iVar4 = iVar24 + 8; + param_5[iVar10] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) * dVar33; + if (iVar4 < iVar6) { + iVar10 = iVar24 + 9; + param_5[iVar4] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar4) * dVar33; + if (iVar10 < iVar6) { + iVar4 = iVar24 + 10; + param_5[iVar10] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) * dVar33 + ; + if (iVar4 < iVar6) { + iVar10 = iVar24 + 0xb; + param_5[iVar4] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar4) * + dVar33; + if (iVar10 < iVar6) { + iVar4 = iVar24 + 0xc; + param_5[iVar10] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) * + dVar33; + if (iVar4 < iVar6) { + iVar10 = iVar24 + 0xd; + param_5[iVar4] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar4) * + dVar33; + if (iVar10 < iVar6) { + iVar24 = iVar24 + 0xe; + param_5[iVar10] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar10) + * dVar33; + if (iVar24 < iVar6) { + param_5[iVar24] = + dVar32 + (double)*(byte *)((long)param_1 + (long)iVar24 + ) * dVar33; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar25 = iVar25 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar25 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026893c (2236 bytes) name=FUN_0026893c + +void FUN_0026893c(double *param_1,long param_2,undefined8 param_3,undefined8 param_4,double *param_5 + ,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + char *pcVar5; + int iVar6; + byte bVar7; + char cVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint uVar15; + char cVar16; + char cVar17; + char cVar18; + char cVar19; + char cVar20; + long lVar21; + char *pcVar22; + double *pdVar23; + long lVar24; + int iVar25; + int iVar26; + long lVar27; + double *pdVar28; + uint uVar29; + uint uVar30; + long lVar31; + long lVar32; + double dVar33; + double dVar34; + undefined1 auVar35 [16]; + long lVar36; + long lVar37; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + long lVar53; + long lVar54; + long lVar55; + + dVar34 = *param_8; + iVar6 = *param_7; + iVar26 = param_7[1] + -1; + dVar33 = param_8[1]; + if (param_7[1] != 0) { + uVar13 = iVar6 - 4; + iVar14 = iVar6 + -3; + uVar12 = uVar13 >> 2; + uVar1 = uVar12 + 1; + uVar2 = (uVar12 - 3 >> 2) + 1; + iVar9 = uVar2 * 0x10; + if (uVar13 < 0xc) { + iVar9 = 0; + } + iVar10 = uVar1 * 4; + if (iVar14 < 1) { + iVar10 = 0; + } + uVar15 = iVar6 - iVar10; + lVar27 = (long)iVar10; + lVar36 = NEON_shl((ulong)uVar1,2); + lVar21 = (long)iVar9; + lVar32 = (long)(iVar9 + 4); + lVar54 = NEON_shl(lVar21,3); + lVar31 = (long)(iVar9 + 8); + lVar53 = NEON_shl(lVar32,3); + lVar55 = NEON_shl(lVar27 + (ulong)uVar15,3); + lVar37 = NEON_shl(lVar31,3); + do { + if (0 < iVar14) { + if ((param_1 < param_5 + (ulong)uVar1 * 4 && param_5 < (double *)((long)param_1 + lVar36)) + || (uVar1 < 4)) { + pcVar22 = (char *)((long)param_1 + 1); + pdVar23 = param_5; + do { + pcVar5 = pcVar22 + 4; + bVar7 = pcVar22[-1]; + pdVar23[1] = dVar33 + (double)(int)*pcVar22 * dVar34; + *pdVar23 = dVar33 + (double)bVar7 * dVar34; + bVar7 = pcVar22[1]; + pdVar23[3] = dVar33 + (double)(byte)pcVar22[2] * dVar34; + pdVar23[2] = dVar33 + (double)bVar7 * dVar34; + pcVar22 = pcVar5; + pdVar23 = pdVar23 + 4; + } while (pcVar5 != (char *)((long)param_1 + (ulong)uVar12 * 4 + 5)); + } + else { + if (0xb < uVar13) { + uVar29 = 0; + pdVar23 = param_1; + pdVar28 = param_5; + do { + cVar8 = *(char *)((long)pdVar23 + 10); + cVar16 = *(char *)((long)pdVar23 + 0xb); + cVar17 = *(char *)((long)pdVar23 + 0xc); + cVar18 = *(char *)((long)pdVar23 + 0xd); + cVar19 = *(char *)((long)pdVar23 + 0xe); + cVar20 = *(char *)((long)pdVar23 + 0xf); + uVar29 = uVar29 + 1; + auVar48._0_8_ = (long)(int)(short)*(char *)pdVar23; + auVar48._8_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 1); + auVar44._0_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 2); + auVar44._8_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 3); + auVar47._0_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 4); + auVar47._8_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 5); + auVar38._0_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 6); + auVar38._8_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 7); + auVar42 = NEON_scvtf(auVar48,8); + auVar41 = NEON_scvtf(auVar44,8); + auVar48 = NEON_scvtf(auVar47,8); + auVar38 = NEON_scvtf(auVar38,8); + auVar43._0_8_ = (long)(int)(short)*(char *)(pdVar23 + 1); + auVar43._8_8_ = (long)(int)(short)*(char *)((long)pdVar23 + 9); + pdVar28[1] = dVar33 + dVar34 * auVar42._8_8_; + *pdVar28 = dVar33 + dVar34 * auVar42._0_8_; + auVar44 = NEON_scvtf(auVar43,8); + auVar42._0_8_ = (long)(int)(short)cVar8; + auVar42._8_8_ = (long)(int)(short)cVar16; + pdVar28[3] = dVar33 + dVar34 * auVar41._8_8_; + pdVar28[2] = dVar33 + dVar34 * auVar41._0_8_; + auVar42 = NEON_scvtf(auVar42,8); + auVar51._0_8_ = (long)(int)(short)cVar17; + auVar51._8_8_ = (long)(int)(short)cVar18; + auVar41._0_8_ = (long)(int)(short)cVar19; + auVar41._8_8_ = (long)(int)(short)cVar20; + pdVar28[5] = dVar33 + dVar34 * auVar48._8_8_; + pdVar28[4] = dVar33 + dVar34 * auVar48._0_8_; + pdVar28[7] = dVar33 + dVar34 * auVar38._8_8_; + pdVar28[6] = dVar33 + dVar34 * auVar38._0_8_; + auVar41 = NEON_scvtf(auVar41,8); + auVar38 = NEON_scvtf(auVar51,8); + pdVar28[9] = dVar33 + dVar34 * auVar44._8_8_; + pdVar28[8] = dVar33 + dVar34 * auVar44._0_8_; + pdVar28[0xb] = dVar33 + dVar34 * auVar42._8_8_; + pdVar28[10] = dVar33 + dVar34 * auVar42._0_8_; + /* try { // try from 00268c68 to 00368c6b has its CatchHandler @ 00268c74 */ + /* catch(type#1 @ 00000000) { ... } // from try @ 00268c68 with catch @ 00268c74 + */ + pdVar28[0xd] = dVar33 + dVar34 * auVar38._8_8_; + pdVar28[0xc] = dVar33 + dVar34 * auVar38._0_8_; + pdVar28[0xf] = dVar33 + dVar34 * auVar41._8_8_; + pdVar28[0xe] = dVar33 + dVar34 * auVar41._0_8_; + pdVar23 = pdVar23 + 2; + pdVar28 = pdVar28 + 0x10; + } while (uVar29 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_00268dcc; + } + /* try { // try from 00268c9c to 00368c9f has its CatchHandler @ 00268cfc */ + cVar8 = *(char *)((long)param_1 + lVar21 + 1); + *(double *)((long)param_5 + lVar54) = + dVar33 + (double)(int)*(char *)((long)param_1 + lVar21) * dVar34; + *(double *)((long)param_5 + lVar54 + 8) = dVar33 + (double)(int)cVar8 * dVar34; + cVar8 = *(char *)((long)param_1 + lVar21 + 3); + /* try { // try from 00268ce4 to 00368ce7 has its CatchHandler @ 00268cf8 */ + *(double *)((long)param_5 + lVar54 + 0x10) = + dVar33 + (double)(int)*(char *)((long)param_1 + lVar21 + 2) * dVar34; + /* catch() { ... } // from try @ 00268ce4 with catch @ 00268cf8 */ + *(double *)((long)param_5 + lVar54 + 0x18) = dVar33 + (double)(int)cVar8 * dVar34; + /* catch() { ... } // from try @ 00268c9c with catch @ 00268cfc */ + if (iVar9 + 4 < iVar14) { + cVar8 = *(char *)((long)param_1 + lVar32 + 1); + *(double *)((long)param_5 + lVar53) = + dVar33 + (double)(int)*(char *)((long)param_1 + lVar32) * dVar34; + *(double *)((long)param_5 + lVar53 + 8) = dVar33 + (double)(int)cVar8 * dVar34; + cVar8 = *(char *)((long)param_1 + lVar32 + 3); + *(double *)((long)param_5 + lVar53 + 0x10) = + dVar33 + (double)(int)*(char *)((long)param_1 + lVar32 + 2) * dVar34; + *(double *)((long)param_5 + lVar53 + 0x18) = dVar33 + (double)(int)cVar8 * dVar34; + if (iVar9 + 8 < iVar14) { + cVar8 = *(char *)((long)param_1 + lVar31 + 1); + *(double *)((long)param_5 + lVar37) = + dVar33 + (double)(int)*(char *)((long)param_1 + lVar31) * dVar34; + *(double *)((long)param_5 + lVar37 + 8) = dVar33 + (double)(int)cVar8 * dVar34; + cVar8 = *(char *)((long)param_1 + lVar31 + 3); + *(double *)((long)param_5 + lVar37 + 0x10) = + dVar33 + (double)(int)*(char *)((long)param_1 + lVar31 + 2) * dVar34; + *(double *)((long)param_5 + lVar37 + 0x18) = dVar33 + (double)(int)cVar8 * dVar34; + } + } + } + } +LAB_00268dcc: + if (iVar10 < iVar6) { + pdVar23 = param_5 + lVar27; + pcVar22 = (char *)((long)param_1 + lVar27); + if ((pdVar23 < (double *)((long)param_1 + lVar27 + (ulong)uVar15) && + pcVar22 < (char *)((long)param_5 + lVar55)) || (uVar15 < 0x14)) { + lVar24 = 0; + do { + pdVar23[lVar24] = dVar33 + (double)(int)pcVar22[lVar24] * dVar34; + lVar24 = lVar24 + 1; + } while (lVar24 != (ulong)(uint)((iVar6 + -1) - iVar10) + 1); + } + else { + uVar3 = (uint)((ulong)pdVar23 >> 3) & 1; + uVar29 = uVar15; + if (uVar3 < uVar15) { + uVar29 = uVar3; + } + iVar25 = iVar10; + if (uVar29 != 0) { + *pdVar23 = dVar33 + (double)(int)*pcVar22 * dVar34; + iVar25 = iVar10 + 1; + } + uVar3 = ((uVar15 - uVar29) - 0x10 >> 4) + 1; + uVar30 = 0; + iVar11 = uVar3 * 0x10; + pdVar23 = param_5 + (ulong)uVar29 + lVar27; + pcVar22 = (char *)((long)param_1 + lVar27 + (ulong)uVar29); + do { + cVar8 = pcVar22[0xc]; + cVar16 = pcVar22[0xd]; + cVar17 = pcVar22[0xe]; + cVar18 = pcVar22[0xf]; + uVar30 = uVar30 + 1; + auVar49._0_8_ = (long)(int)(short)*pcVar22; + auVar49._8_8_ = (long)(int)(short)pcVar22[1]; + auVar52._0_8_ = (long)(int)(short)pcVar22[2]; + auVar52._8_8_ = (long)(int)(short)pcVar22[3]; + auVar45._0_8_ = (long)(int)(short)pcVar22[4]; + auVar45._8_8_ = (long)(int)(short)pcVar22[5]; + auVar39._0_8_ = (long)(int)(short)pcVar22[6]; + auVar39._8_8_ = (long)(int)(short)pcVar22[7]; + auVar42 = NEON_scvtf(auVar49,8); + auVar44 = NEON_scvtf(auVar52,8); + auVar50._0_8_ = (long)(int)(short)pcVar22[8]; + auVar50._8_8_ = (long)(int)(short)pcVar22[9]; + auVar41 = NEON_scvtf(auVar45,8); + auVar38 = NEON_scvtf(auVar39,8); + auVar40._0_8_ = (long)(int)(short)pcVar22[10]; + auVar40._8_8_ = (long)(int)(short)pcVar22[0xb]; + pdVar23[1] = dVar33 + dVar34 * auVar42._8_8_; + *pdVar23 = dVar33 + dVar34 * auVar42._0_8_; + auVar51 = NEON_scvtf(auVar50,8); + auVar42 = NEON_scvtf(auVar40,8); + pdVar23[3] = dVar33 + dVar34 * auVar44._8_8_; + pdVar23[2] = dVar33 + dVar34 * auVar44._0_8_; + auVar46._0_8_ = (long)(int)(short)cVar8; + auVar46._8_8_ = (long)(int)(short)cVar16; + auVar35._0_8_ = (long)(int)(short)cVar17; + auVar35._8_8_ = (long)(int)(short)cVar18; + pdVar23[5] = dVar33 + dVar34 * auVar41._8_8_; + pdVar23[4] = dVar33 + dVar34 * auVar41._0_8_; + auVar44 = NEON_scvtf(auVar46,8); + auVar41 = NEON_scvtf(auVar35,8); + pdVar23[7] = dVar33 + dVar34 * auVar38._8_8_; + pdVar23[6] = dVar33 + dVar34 * auVar38._0_8_; + pdVar23[9] = dVar33 + dVar34 * auVar51._8_8_; + pdVar23[8] = dVar33 + dVar34 * auVar51._0_8_; + pdVar23[0xb] = dVar33 + dVar34 * auVar42._8_8_; + pdVar23[10] = dVar33 + dVar34 * auVar42._0_8_; + pdVar23[0xd] = dVar33 + dVar34 * auVar44._8_8_; + pdVar23[0xc] = dVar33 + dVar34 * auVar44._0_8_; + pdVar23[0xf] = dVar33 + dVar34 * auVar41._8_8_; + pdVar23[0xe] = dVar33 + dVar34 * auVar41._0_8_; + pdVar23 = pdVar23 + 0x10; + pcVar22 = pcVar22 + 0x10; + } while (uVar30 < uVar3); + iVar25 = iVar25 + iVar11; + if (uVar15 - uVar29 != iVar11) { + iVar11 = iVar25 + 1; + param_5[iVar25] = dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar25) * dVar34 + ; + if (iVar11 < iVar6) { + iVar4 = iVar25 + 2; + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar11) * dVar34; + if (iVar4 < iVar6) { + iVar11 = iVar25 + 3; + param_5[iVar4] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar4) * dVar34; + if (iVar11 < iVar6) { + iVar4 = iVar25 + 4; + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar11) * dVar34; + if (iVar4 < iVar6) { + iVar11 = iVar25 + 5; + param_5[iVar4] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar4) * dVar34; + if (iVar11 < iVar6) { + iVar4 = iVar25 + 6; + /* try { // try from 00269000 to 0036936b has its CatchHandler @ 00269000 + catch() { ... } // from try @ 00269000 with catch @ 00269000 + catch() { ... } // from try @ 0026937c with catch @ 00269000 + catch() { ... } // from try @ 002693ec with catch @ 00269000 + catch() { ... } // from try @ 00269410 with catch @ 00269000 + catch() { ... } // from try @ 00269434 with catch @ 00269000 + catch() { ... } // from try @ 00269458 with catch @ 00269000 + catch() { ... } // from try @ 0026947c with catch @ 00269000 */ + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar11) * dVar34; + if (iVar4 < iVar6) { + iVar11 = iVar25 + 7; + param_5[iVar4] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar4) * dVar34; + if (iVar11 < iVar6) { + iVar4 = iVar25 + 8; + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar11) * + dVar34; + if (iVar4 < iVar6) { + iVar11 = iVar25 + 9; + param_5[iVar4] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar4) * + dVar34; + if (iVar11 < iVar6) { + iVar4 = iVar25 + 10; + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar11) * + dVar34; + if (iVar4 < iVar6) { + iVar11 = iVar25 + 0xb; + param_5[iVar4] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar4) * + dVar34; + if (iVar11 < iVar6) { + iVar4 = iVar25 + 0xc; + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar11) + * dVar34; + if (iVar4 < iVar6) { + iVar11 = iVar25 + 0xd; + param_5[iVar4] = + dVar33 + (double)(int)*(char *)((long)param_1 + (long)iVar4 + ) * dVar34; + if (iVar11 < iVar6) { + iVar25 = iVar25 + 0xe; + param_5[iVar11] = + dVar33 + (double)(int)*(char *)((long)param_1 + + (long)iVar11) * dVar34; + if (iVar25 < iVar6) { + param_5[iVar25] = + dVar33 + (double)(int)*(char *)((long)param_1 + + (long)iVar25) * dVar34; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar26 = iVar26 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar26 != -1); + } + return; +} + + +================================================================== + +### FUNC 002691f8 (1484 bytes) name=FUN_002691f8 + +void FUN_002691f8(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + double *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + ushort uVar12; + ushort uVar13; + ushort uVar14; + int iVar15; + int iVar16; + int iVar17; + uint uVar18; + uint uVar19; + undefined1 auVar20 [16]; + ushort *puVar21; + int iVar22; + long lVar23; + double *pdVar24; + uint uVar25; + int iVar26; + long lVar27; + uint uVar28; + double dVar29; + double dVar30; + long lVar31; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + long lVar39; + long lVar40; + long lVar41; + long lVar42; + long lVar43; + long lVar44; + long lVar45; + long lVar46; + long lVar47; + long lVar48; + long lVar49; + long lVar50; + long lVar51; + + dVar30 = *param_8; + iVar11 = *param_7; + dVar29 = param_8[1]; + iVar26 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar18 = iVar11 - 4; + iVar1 = (uVar18 >> 2) + 1; + uVar2 = ((uVar18 >> 2) - 1 >> 1) + 1; + iVar15 = iVar1 * 4; + iVar16 = uVar2 * 8; + if (uVar18 < 4) { + iVar16 = 0; + } + if (iVar11 + -3 < 1) { + iVar15 = 0; + } + iVar3 = iVar15 + 1; + lVar23 = (long)iVar15; + lVar27 = (long)iVar16; + iVar16 = iVar15 + 2; + iVar4 = iVar15 + 3; + iVar5 = iVar15 + 4; + lVar31 = NEON_shl(lVar23,3); + iVar6 = iVar15 + 5; + iVar7 = iVar15 + 6; + iVar8 = iVar15 + 7; + lVar51 = NEON_shl(lVar23,1); + uVar19 = iVar11 - iVar15; + lVar50 = NEON_shl((long)iVar3,3); + lVar42 = NEON_shl((long)iVar3,1); + lVar49 = NEON_shl((long)iVar16,3); + lVar41 = NEON_shl((long)iVar16,1); + lVar48 = NEON_shl((long)iVar4,3); + lVar40 = NEON_shl((long)iVar4,1); + lVar47 = NEON_shl((long)iVar5,3); + /* try { // try from 0026936c to 0036937b has its CatchHandler @ 002694e0 */ + lVar39 = NEON_shl((long)iVar5,1); + /* try { // try from 0026937c to 003693db has its CatchHandler @ 00269000 */ + lVar46 = NEON_shl((long)iVar6,3); + lVar45 = NEON_shl((long)iVar7,3); + lVar44 = NEON_shl((long)iVar8,3); + lVar43 = NEON_shl((long)iVar8,1); + do { + if (0 < iVar11 + -3) { + if (3 < uVar18) { + uVar25 = 0; + pdVar24 = param_5; + puVar21 = param_1; + do { + uVar12 = puVar21[4]; + uVar13 = puVar21[5]; + uVar25 = uVar25 + 1; + /* try { // try from 002693dc to 003693eb has its CatchHandler @ 002694d4 */ + auVar36._0_8_ = (long)(int)(uint)*puVar21; + auVar36._8_8_ = (long)(int)(uint)puVar21[1]; + auVar34._0_8_ = (long)(int)(uint)puVar21[2]; + auVar34._8_8_ = (long)(int)(uint)puVar21[3]; + /* try { // try from 002693ec to 003693ff has its CatchHandler @ 00269000 */ + auVar32._0_8_ = (long)(int)(uint)puVar21[6]; + auVar32._8_8_ = (long)(int)(uint)puVar21[7]; + auVar37 = NEON_scvtf(auVar36,8); + /* try { // try from 00269400 to 0036940f has its CatchHandler @ 002694c8 */ + auVar34 = NEON_scvtf(auVar34,8); + auVar32 = NEON_scvtf(auVar32,8); + pdVar24[1] = dVar29 + dVar30 * auVar37._8_8_; + *pdVar24 = dVar29 + dVar30 * auVar37._0_8_; + auVar37._8_8_ = (long)(int)(uint)uVar13; + auVar37._0_8_ = (long)(int)(uint)uVar12; + /* try { // try from 00269410 to 00369423 has its CatchHandler @ 00269000 */ + auVar37 = NEON_scvtf(auVar37,8); + pdVar24[3] = dVar29 + dVar30 * auVar34._8_8_; + pdVar24[2] = dVar29 + dVar30 * auVar34._0_8_; + /* try { // try from 00269424 to 00369433 has its CatchHandler @ 002694bc */ + pdVar24[5] = dVar29 + dVar30 * auVar37._8_8_; + pdVar24[4] = dVar29 + dVar30 * auVar37._0_8_; + pdVar24[7] = dVar29 + dVar30 * auVar32._8_8_; + pdVar24[6] = dVar29 + dVar30 * auVar32._0_8_; + /* try { // try from 00269434 to 00369447 has its CatchHandler @ 00269000 */ + pdVar24 = pdVar24 + 8; + puVar21 = puVar21 + 8; + } while (uVar25 < uVar2); + /* try { // try from 00269448 to 00369457 has its CatchHandler @ 002694b0 */ + if (iVar1 == uVar2 * 2) goto LAB_0026948c; + } + uVar12 = param_1[lVar27 + 1]; + uVar13 = param_1[lVar27 + 2]; + /* try { // try from 00269458 to 0036946b has its CatchHandler @ 00269000 */ + uVar14 = param_1[lVar27 + 3]; + /* try { // try from 0026946c to 0036947b has its CatchHandler @ 002694a4 */ + /* try { // try from 0026947c to 003694f3 has its CatchHandler @ 00269000 */ + param_5[lVar27] = dVar29 + (double)param_1[lVar27] * dVar30; + param_5[lVar27 + 1] = dVar29 + (double)uVar12 * dVar30; + param_5[lVar27 + 2] = dVar29 + (double)uVar13 * dVar30; + param_5[lVar27 + 3] = dVar29 + (double)uVar14 * dVar30; + } +LAB_0026948c: + if (iVar15 < iVar11) { + uVar25 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar19 < uVar25) { + uVar25 = uVar19; + } + /* catch() { ... } // from try @ 0026946c with catch @ 002694a4 */ + if (uVar19 < 9) { + uVar25 = uVar19; + } + iVar22 = iVar15; + if (uVar25 != 0) { + /* catch() { ... } // from try @ 00269448 with catch @ 002694b0 */ + /* catch() { ... } // from try @ 00269424 with catch @ 002694bc */ + *(double *)((long)param_5 + lVar31) = + dVar29 + (double)*(ushort *)((long)param_1 + lVar51) * dVar30; + iVar22 = iVar3; + /* catch() { ... } // from try @ 00269400 with catch @ 002694c8 */ + /* catch() { ... } // from try @ 002693dc with catch @ 002694d4 */ + /* catch() { ... } // from try @ 0026936c with catch @ 002694e0 */ + if ((((uVar25 != 1) && + (*(double *)((long)param_5 + lVar50) = + dVar29 + (double)*(ushort *)((long)param_1 + lVar42) * dVar30, iVar22 = iVar16, + uVar25 != 2)) && + (*(double *)((long)param_5 + lVar49) = + dVar29 + (double)*(ushort *)((long)param_1 + lVar41) * dVar30, iVar22 = iVar4, + uVar25 != 3)) && + (((*(double *)((long)param_5 + lVar48) = + dVar29 + (double)*(ushort *)((long)param_1 + lVar40) * dVar30, iVar22 = iVar5, + uVar25 != 4 && + (*(double *)((long)param_5 + lVar47) = + dVar29 + (double)*(ushort *)((long)param_1 + lVar39) * dVar30, iVar22 = iVar6, + uVar25 != 5)) && + ((*(double *)((long)param_5 + lVar46) = dVar29 + (double)param_1[iVar6] * dVar30, + iVar22 = iVar7, uVar25 != 6 && + (*(double *)((long)param_5 + lVar45) = dVar29 + (double)param_1[iVar7] * dVar30, + iVar22 = iVar8, uVar25 == 8)))))) { + *(double *)((long)param_5 + lVar44) = + dVar29 + (double)*(ushort *)((long)param_1 + lVar43) * dVar30; + iVar22 = iVar15 + 8; + } + if (uVar25 == uVar19) goto LAB_00269744; + } + uVar9 = ((uVar19 - uVar25) - 8 >> 3) + 1; + iVar17 = uVar9 * 8; + if (6 < (uVar19 - 1) - uVar25) { + uVar28 = 0; + puVar21 = param_1 + (ulong)uVar25 + lVar23; + pdVar24 = param_5 + (ulong)uVar25 + lVar23; + do { + uVar12 = puVar21[4]; + uVar13 = puVar21[5]; + uVar28 = uVar28 + 1; + auVar38._0_8_ = (long)(int)(uint)*puVar21; + auVar38._8_8_ = (long)(int)(uint)puVar21[1]; + auVar35._0_8_ = (long)(int)(uint)puVar21[2]; + auVar35._8_8_ = (long)(int)(uint)puVar21[3]; + auVar33._0_8_ = (long)(int)(uint)puVar21[6]; + auVar33._8_8_ = (long)(int)(uint)puVar21[7]; + auVar34 = NEON_scvtf(auVar38,8); + auVar32 = NEON_scvtf(auVar35,8); + auVar37 = NEON_scvtf(auVar33,8); + pdVar24[1] = dVar29 + dVar30 * auVar34._8_8_; + *pdVar24 = dVar29 + dVar30 * auVar34._0_8_; + auVar20._8_8_ = (long)(int)(uint)uVar13; + auVar20._0_8_ = (long)(int)(uint)uVar12; + auVar34 = NEON_scvtf(auVar20,8); + pdVar24[3] = dVar29 + dVar30 * auVar32._8_8_; + pdVar24[2] = dVar29 + dVar30 * auVar32._0_8_; + pdVar24[5] = dVar29 + dVar30 * auVar34._8_8_; + pdVar24[4] = dVar29 + dVar30 * auVar34._0_8_; + pdVar24[7] = dVar29 + dVar30 * auVar37._8_8_; + pdVar24[6] = dVar29 + dVar30 * auVar37._0_8_; + puVar21 = puVar21 + 8; + pdVar24 = pdVar24 + 8; + } while (uVar28 < uVar9); + iVar22 = iVar22 + iVar17; + if (iVar17 == uVar19 - uVar25) goto LAB_00269744; + } + iVar17 = iVar22 + 1; + param_5[iVar22] = dVar29 + (double)param_1[iVar22] * dVar30; + if (iVar17 < iVar11) { + iVar10 = iVar22 + 2; + param_5[iVar17] = dVar29 + (double)param_1[iVar17] * dVar30; + if (iVar10 < iVar11) { + iVar17 = iVar22 + 3; + param_5[iVar10] = dVar29 + (double)param_1[iVar10] * dVar30; + if (iVar17 < iVar11) { + iVar10 = iVar22 + 4; + param_5[iVar17] = dVar29 + (double)param_1[iVar17] * dVar30; + if (iVar10 < iVar11) { + iVar17 = iVar22 + 5; + param_5[iVar10] = dVar29 + (double)param_1[iVar10] * dVar30; + if (iVar17 < iVar11) { + iVar22 = iVar22 + 6; + param_5[iVar17] = dVar29 + (double)param_1[iVar17] * dVar30; + if (iVar22 < iVar11) { + param_5[iVar22] = dVar29 + (double)param_1[iVar22] * dVar30; + } + } + } + } + } + } + } +LAB_00269744: + iVar26 = iVar26 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar26 != -1); + } + return; +} + + +================================================================== + +### FUNC 002697c4 (1484 bytes) name=FUN_002697c4 + +void FUN_002697c4(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,double *param_5 + ,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + short sVar12; + short sVar13; + short sVar14; + int iVar15; + int iVar16; + int iVar17; + uint uVar18; + uint uVar19; + undefined1 auVar20 [16]; + double *pdVar21; + int iVar22; + long lVar23; + int iVar24; + uint uVar25; + short *psVar26; + long lVar27; + uint uVar28; + double dVar29; + double dVar30; + long lVar31; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + long lVar39; + long lVar40; + long lVar41; + long lVar42; + long lVar43; + long lVar44; + long lVar45; + long lVar46; + long lVar47; + long lVar48; + long lVar49; + long lVar50; + long lVar51; + + dVar30 = *param_8; + iVar11 = *param_7; + dVar29 = param_8[1]; + iVar24 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar18 = iVar11 - 4; + iVar1 = (uVar18 >> 2) + 1; + uVar2 = ((uVar18 >> 2) - 1 >> 1) + 1; + iVar15 = iVar1 * 4; + iVar16 = uVar2 * 8; + if (uVar18 < 4) { + iVar16 = 0; + } + if (iVar11 + -3 < 1) { + iVar15 = 0; + } + iVar3 = iVar15 + 1; + lVar23 = (long)iVar15; + lVar27 = (long)iVar16; + iVar16 = iVar15 + 2; + iVar4 = iVar15 + 3; + iVar5 = iVar15 + 4; + lVar31 = NEON_shl(lVar23,3); + iVar6 = iVar15 + 5; + iVar7 = iVar15 + 6; + iVar8 = iVar15 + 7; + lVar51 = NEON_shl(lVar23,1); + uVar19 = iVar11 - iVar15; + lVar50 = NEON_shl((long)iVar3,3); + lVar42 = NEON_shl((long)iVar3,1); + lVar49 = NEON_shl((long)iVar16,3); + lVar41 = NEON_shl((long)iVar16,1); + lVar48 = NEON_shl((long)iVar4,3); + lVar40 = NEON_shl((long)iVar4,1); + lVar47 = NEON_shl((long)iVar5,3); + lVar39 = NEON_shl((long)iVar5,1); + lVar46 = NEON_shl((long)iVar6,3); + lVar45 = NEON_shl((long)iVar7,3); + lVar44 = NEON_shl((long)iVar8,3); + lVar43 = NEON_shl((long)iVar8,1); + do { + if (0 < iVar11 + -3) { + if (3 < uVar18) { + uVar25 = 0; + pdVar21 = param_5; + psVar26 = param_1; + do { + sVar12 = psVar26[4]; + sVar13 = psVar26[5]; + uVar25 = uVar25 + 1; + auVar36._0_8_ = (long)(int)*psVar26; + auVar36._8_8_ = (long)(int)psVar26[1]; + auVar34._0_8_ = (long)(int)psVar26[2]; + auVar34._8_8_ = (long)(int)psVar26[3]; + auVar32._0_8_ = (long)(int)psVar26[6]; + auVar32._8_8_ = (long)(int)psVar26[7]; + auVar37 = NEON_scvtf(auVar36,8); + auVar34 = NEON_scvtf(auVar34,8); + auVar32 = NEON_scvtf(auVar32,8); + pdVar21[1] = dVar29 + dVar30 * auVar37._8_8_; + *pdVar21 = dVar29 + dVar30 * auVar37._0_8_; + auVar37._8_8_ = (long)(int)sVar13; + auVar37._0_8_ = (long)(int)sVar12; + auVar37 = NEON_scvtf(auVar37,8); + pdVar21[3] = dVar29 + dVar30 * auVar34._8_8_; + pdVar21[2] = dVar29 + dVar30 * auVar34._0_8_; + pdVar21[5] = dVar29 + dVar30 * auVar37._8_8_; + pdVar21[4] = dVar29 + dVar30 * auVar37._0_8_; + pdVar21[7] = dVar29 + dVar30 * auVar32._8_8_; + pdVar21[6] = dVar29 + dVar30 * auVar32._0_8_; + pdVar21 = pdVar21 + 8; + psVar26 = psVar26 + 8; + } while (uVar25 < uVar2); + if (iVar1 == uVar2 * 2) goto LAB_00269a58; + } + sVar12 = param_1[lVar27 + 1]; + sVar13 = param_1[lVar27 + 2]; + sVar14 = param_1[lVar27 + 3]; + param_5[lVar27] = dVar29 + (double)(int)param_1[lVar27] * dVar30; + param_5[lVar27 + 1] = dVar29 + (double)(int)sVar12 * dVar30; + param_5[lVar27 + 2] = dVar29 + (double)(int)sVar13 * dVar30; + param_5[lVar27 + 3] = dVar29 + (double)(int)sVar14 * dVar30; + } +LAB_00269a58: + if (iVar15 < iVar11) { + uVar25 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar19 < uVar25) { + uVar25 = uVar19; + } + if (uVar19 < 9) { + uVar25 = uVar19; + } + iVar22 = iVar15; + if (uVar25 != 0) { + *(double *)((long)param_5 + lVar31) = + dVar29 + (double)(int)*(short *)((long)param_1 + lVar51) * dVar30; + iVar22 = iVar3; + if ((((uVar25 != 1) && + (*(double *)((long)param_5 + lVar50) = + dVar29 + (double)(int)*(short *)((long)param_1 + lVar42) * dVar30, + iVar22 = iVar16, uVar25 != 2)) && + (*(double *)((long)param_5 + lVar49) = + dVar29 + (double)(int)*(short *)((long)param_1 + lVar41) * dVar30, + iVar22 = iVar4, uVar25 != 3)) && + (((*(double *)((long)param_5 + lVar48) = + dVar29 + (double)(int)*(short *)((long)param_1 + lVar40) * dVar30, + iVar22 = iVar5, uVar25 != 4 && + (*(double *)((long)param_5 + lVar47) = + dVar29 + (double)(int)*(short *)((long)param_1 + lVar39) * dVar30, + iVar22 = iVar6, uVar25 != 5)) && + ((*(double *)((long)param_5 + lVar46) = dVar29 + (double)(int)param_1[iVar6] * dVar30, + iVar22 = iVar7, uVar25 != 6 && + (*(double *)((long)param_5 + lVar45) = dVar29 + (double)(int)param_1[iVar7] * dVar30, + iVar22 = iVar8, uVar25 == 8)))))) { + *(double *)((long)param_5 + lVar44) = + dVar29 + (double)(int)*(short *)((long)param_1 + lVar43) * dVar30; + iVar22 = iVar15 + 8; + } + if (uVar25 == uVar19) goto LAB_00269d10; + } + uVar9 = ((uVar19 - uVar25) - 8 >> 3) + 1; + iVar17 = uVar9 * 8; + if (6 < (uVar19 - 1) - uVar25) { + uVar28 = 0; + pdVar21 = param_5 + (ulong)uVar25 + lVar23; + psVar26 = param_1 + (ulong)uVar25 + lVar23; + do { + sVar12 = psVar26[4]; + sVar13 = psVar26[5]; + uVar28 = uVar28 + 1; + auVar38._0_8_ = (long)(int)*psVar26; + auVar38._8_8_ = (long)(int)psVar26[1]; + auVar35._0_8_ = (long)(int)psVar26[2]; + auVar35._8_8_ = (long)(int)psVar26[3]; + auVar33._0_8_ = (long)(int)psVar26[6]; + auVar33._8_8_ = (long)(int)psVar26[7]; + auVar34 = NEON_scvtf(auVar38,8); + auVar32 = NEON_scvtf(auVar35,8); + auVar37 = NEON_scvtf(auVar33,8); + pdVar21[1] = dVar29 + dVar30 * auVar34._8_8_; + *pdVar21 = dVar29 + dVar30 * auVar34._0_8_; + auVar20._8_8_ = (long)(int)sVar13; + auVar20._0_8_ = (long)(int)sVar12; + auVar34 = NEON_scvtf(auVar20,8); + pdVar21[3] = dVar29 + dVar30 * auVar32._8_8_; + pdVar21[2] = dVar29 + dVar30 * auVar32._0_8_; + pdVar21[5] = dVar29 + dVar30 * auVar34._8_8_; + pdVar21[4] = dVar29 + dVar30 * auVar34._0_8_; + pdVar21[7] = dVar29 + dVar30 * auVar37._8_8_; + pdVar21[6] = dVar29 + dVar30 * auVar37._0_8_; + pdVar21 = pdVar21 + 8; + psVar26 = psVar26 + 8; + } while (uVar28 < uVar9); + iVar22 = iVar22 + iVar17; + if (iVar17 == uVar19 - uVar25) goto LAB_00269d10; + } + iVar17 = iVar22 + 1; + param_5[iVar22] = dVar29 + (double)(int)param_1[iVar22] * dVar30; + if (iVar17 < iVar11) { + iVar10 = iVar22 + 2; + param_5[iVar17] = dVar29 + (double)(int)param_1[iVar17] * dVar30; + if (iVar10 < iVar11) { + iVar17 = iVar22 + 3; + param_5[iVar10] = dVar29 + (double)(int)param_1[iVar10] * dVar30; + if (iVar17 < iVar11) { + iVar10 = iVar22 + 4; + param_5[iVar17] = dVar29 + (double)(int)param_1[iVar17] * dVar30; + if (iVar10 < iVar11) { + iVar17 = iVar22 + 5; + param_5[iVar10] = dVar29 + (double)(int)param_1[iVar10] * dVar30; + if (iVar17 < iVar11) { + iVar22 = iVar22 + 6; + param_5[iVar17] = dVar29 + (double)(int)param_1[iVar17] * dVar30; + if (iVar22 < iVar11) { + param_5[iVar22] = dVar29 + (double)(int)param_1[iVar22] * dVar30; + } + } + } + } + } + } + } +LAB_00269d10: + iVar24 = iVar24 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar24 != -1); + } + return; +} + + +================================================================== + +### FUNC 00269d90 (788 bytes) name=FUN_00269d90 + +void FUN_00269d90(int *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,double *param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + int *piVar11; + uint uVar12; + int iVar13; + double *pdVar14; + int iVar15; + long lVar16; + uint uVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + double dVar22; + double dVar23; + long lVar24; + long lVar25; + + dVar23 = *param_8; + iVar7 = *param_7; + dVar22 = param_8[1]; + iVar15 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar7 - 4U >> 2) + 1; + iVar8 = uVar1 * 4; + if (iVar7 + -3 < 1) { + iVar8 = 0; + } + iVar2 = iVar8 + 1; + uVar10 = iVar7 - iVar8; + lVar16 = (long)iVar8; + iVar3 = iVar8 + 2; + iVar4 = iVar8 + 3; + iVar5 = iVar8 + 4; + lVar25 = NEON_shl((long)iVar4,3); + lVar24 = NEON_shl((long)iVar5,3); + do { + if (0 < iVar7 + -3) { + uVar12 = 0; + pdVar14 = param_5; + piVar11 = param_1; + do { + uVar12 = uVar12 + 1; + auVar20._0_8_ = (long)*piVar11; + auVar20._8_8_ = (long)piVar11[1]; + auVar18._0_8_ = (long)piVar11[2]; + auVar18._8_8_ = (long)piVar11[3]; + auVar20 = NEON_scvtf(auVar20,8); + auVar18 = NEON_scvtf(auVar18,8); + pdVar14[1] = dVar22 + dVar23 * auVar20._8_8_; + *pdVar14 = dVar22 + dVar23 * auVar20._0_8_; + pdVar14[3] = dVar22 + dVar23 * auVar18._8_8_; + pdVar14[2] = dVar22 + dVar23 * auVar18._0_8_; + pdVar14 = pdVar14 + 4; + piVar11 = piVar11 + 4; + } while (uVar12 < uVar1); + } + if (iVar8 < iVar7) { + uVar12 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar10 < uVar12) { + uVar12 = uVar10; + } + if (uVar10 < 6) { + uVar12 = uVar10; + } + iVar13 = iVar8; + if (uVar12 != 0) { + param_5[lVar16] = dVar22 + (double)param_1[lVar16] * dVar23; + iVar13 = iVar2; + if ((((uVar12 != 1) && + (param_5[iVar2] = dVar22 + (double)param_1[iVar2] * dVar23, iVar13 = iVar3, + uVar12 != 2)) && + (param_5[iVar3] = dVar22 + (double)param_1[iVar3] * dVar23, iVar13 = iVar4, + uVar12 != 3)) && + (*(double *)((long)param_5 + lVar25) = dVar22 + (double)param_1[iVar4] * dVar23, + iVar13 = iVar5, uVar12 == 5)) { + *(double *)((long)param_5 + lVar24) = dVar22 + (double)param_1[iVar5] * dVar23; + iVar13 = iVar8 + 5; + } + if (uVar12 == uVar10) goto LAB_0026a04c; + } + uVar6 = ((uVar10 - uVar12) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + if (2 < (uVar10 - 1) - uVar12) { + uVar17 = 0; + piVar11 = param_1 + (ulong)uVar12 + lVar16; + pdVar14 = param_5 + (ulong)uVar12 + lVar16; + do { + uVar17 = uVar17 + 1; + auVar21._0_8_ = (long)*piVar11; + auVar21._8_8_ = (long)piVar11[1]; + auVar19._0_8_ = (long)piVar11[2]; + auVar19._8_8_ = (long)piVar11[3]; + auVar20 = NEON_scvtf(auVar21,8); + auVar18 = NEON_scvtf(auVar19,8); + pdVar14[1] = dVar22 + dVar23 * auVar20._8_8_; + *pdVar14 = dVar22 + dVar23 * auVar20._0_8_; + pdVar14[3] = dVar22 + dVar23 * auVar18._8_8_; + pdVar14[2] = dVar22 + dVar23 * auVar18._0_8_; + piVar11 = piVar11 + 4; + pdVar14 = pdVar14 + 4; + } while (uVar17 < uVar6); + iVar13 = iVar13 + iVar9; + if (iVar9 == uVar10 - uVar12) goto LAB_0026a04c; + } + iVar9 = iVar13 + 1; + param_5[iVar13] = dVar22 + (double)param_1[iVar13] * dVar23; + if (iVar9 < iVar7) { + iVar13 = iVar13 + 2; + param_5[iVar9] = dVar22 + (double)param_1[iVar9] * dVar23; + if (iVar13 < iVar7) { + param_5[iVar13] = dVar22 + (double)param_1[iVar13] * dVar23; + } + } + } +LAB_0026a04c: + iVar15 = iVar15 + -1; + param_1 = (int *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar15 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026a0a4 (772 bytes) name=FUN_0026a0a4 + +void FUN_0026a0a4(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + double *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint uVar10; + undefined8 *puVar11; + uint uVar12; + int iVar13; + double *pdVar14; + int iVar15; + long lVar16; + uint uVar17; + undefined8 uVar18; + undefined8 uVar19; + double dVar20; + double dVar21; + long lVar22; + long lVar23; + + dVar21 = *param_8; + iVar7 = *param_7; + dVar20 = param_8[1]; + iVar15 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar7 - 4U >> 2) + 1; + iVar8 = uVar1 * 4; + if (iVar7 + -3 < 1) { + iVar8 = 0; + } + iVar2 = iVar8 + 1; + uVar10 = iVar7 - iVar8; + lVar16 = (long)iVar8; + iVar3 = iVar8 + 2; + iVar4 = iVar8 + 3; + iVar5 = iVar8 + 4; + lVar23 = NEON_shl((long)iVar4,3); + lVar22 = NEON_shl((long)iVar5,3); + do { + if (0 < iVar7 + -3) { + uVar12 = 0; + pdVar14 = param_5; + puVar11 = param_1; + do { + uVar19 = puVar11[1]; + uVar18 = *puVar11; + uVar12 = uVar12 + 1; + pdVar14[1] = dVar20 + dVar21 * (double)(float)((ulong)uVar18 >> 0x20); + *pdVar14 = dVar20 + dVar21 * (double)(float)uVar18; + pdVar14[3] = dVar20 + dVar21 * (double)(float)((ulong)uVar19 >> 0x20); + pdVar14[2] = dVar20 + dVar21 * (double)(float)uVar19; + pdVar14 = pdVar14 + 4; + puVar11 = puVar11 + 2; + } while (uVar12 < uVar1); + } + if (iVar8 < iVar7) { + uVar12 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar10 < uVar12) { + uVar12 = uVar10; + } + if (uVar10 < 6) { + uVar12 = uVar10; + } + iVar13 = iVar8; + if (uVar12 != 0) { + param_5[lVar16] = dVar20 + (double)*(float *)((long)param_1 + lVar16 * 4) * dVar21; + iVar13 = iVar2; + if ((((uVar12 != 1) && + (param_5[iVar2] = + dVar20 + (double)*(float *)((long)param_1 + (long)iVar2 * 4) * dVar21, + iVar13 = iVar3, uVar12 != 2)) && + (param_5[iVar3] = + dVar20 + (double)*(float *)((long)param_1 + (long)iVar3 * 4) * dVar21, + iVar13 = iVar4, uVar12 != 3)) && + (*(double *)((long)param_5 + lVar23) = + dVar20 + (double)*(float *)((long)param_1 + (long)iVar4 * 4) * dVar21, + iVar13 = iVar5, uVar12 == 5)) { + *(double *)((long)param_5 + lVar22) = + dVar20 + (double)*(float *)((long)param_1 + (long)iVar5 * 4) * dVar21; + iVar13 = iVar8 + 5; + } + if (uVar12 == uVar10) goto LAB_0026a350; + } + uVar6 = ((uVar10 - uVar12) - 4 >> 2) + 1; + iVar9 = uVar6 * 4; + if (2 < (uVar10 - 1) - uVar12) { + uVar17 = 0; + puVar11 = (undefined8 *)((long)param_1 + ((ulong)uVar12 + lVar16) * 4); + pdVar14 = param_5 + (ulong)uVar12 + lVar16; + do { + uVar19 = puVar11[1]; + uVar18 = *puVar11; + uVar17 = uVar17 + 1; + pdVar14[1] = dVar20 + dVar21 * (double)(float)((ulong)uVar18 >> 0x20); + *pdVar14 = dVar20 + dVar21 * (double)(float)uVar18; + pdVar14[3] = dVar20 + dVar21 * (double)(float)((ulong)uVar19 >> 0x20); + pdVar14[2] = dVar20 + dVar21 * (double)(float)uVar19; + puVar11 = puVar11 + 2; + pdVar14 = pdVar14 + 4; + } while (uVar17 < uVar6); + iVar13 = iVar13 + iVar9; + if (iVar9 == uVar10 - uVar12) goto LAB_0026a350; + } + iVar9 = iVar13 + 1; + param_5[iVar13] = dVar20 + (double)*(float *)((long)param_1 + (long)iVar13 * 4) * dVar21; + if (iVar9 < iVar7) { + iVar13 = iVar13 + 2; + param_5[iVar9] = dVar20 + (double)*(float *)((long)param_1 + (long)iVar9 * 4) * dVar21; + if (iVar13 < iVar7) { + param_5[iVar13] = dVar20 + (double)*(float *)((long)param_1 + (long)iVar13 * 4) * dVar21 + ; + } + } + } +LAB_0026a350: + iVar15 = iVar15 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar15 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026a3a8 (620 bytes) name=FUN_0026a3a8 + +void FUN_0026a3a8(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + double *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + double *pdVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + double *pdVar10; + ulong uVar11; + uint uVar12; + double *pdVar13; + long lVar14; + uint uVar15; + int iVar16; + long lVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + + dVar22 = *param_8; + iVar4 = *param_7; + dVar21 = param_8[1]; + iVar16 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + uVar1 = uVar7 + 1; + iVar5 = uVar1 * 4; + if (iVar4 + -3 < 1) { + iVar5 = 0; + } + uVar8 = iVar4 - iVar5; + lVar17 = (long)iVar5; + do { + if (0 < iVar4 + -3) { + if ((param_1 < param_5 + 8 && param_5 < param_1 + 8) || (uVar1 < 4)) { + pdVar10 = param_5 + 1; + pdVar13 = param_1; + do { + pdVar3 = pdVar10 + 4; + dVar18 = *pdVar13; + *pdVar10 = dVar21 + pdVar13[1] * dVar22; + pdVar10[-1] = dVar21 + dVar18 * dVar22; + dVar18 = pdVar13[2]; + pdVar10[2] = dVar21 + pdVar13[3] * dVar22; + pdVar10[1] = dVar21 + dVar18 * dVar22; + pdVar10 = pdVar3; + pdVar13 = pdVar13 + 4; + } while (pdVar3 != param_5 + (ulong)uVar7 * 4 + 5); + } + else { + uVar15 = 0; + pdVar10 = param_1; + pdVar13 = param_5; + do { + dVar20 = *pdVar10; + uVar15 = uVar15 + 1; + dVar19 = pdVar10[3]; + dVar18 = pdVar10[2]; + pdVar13[1] = dVar21 + dVar22 * pdVar10[1]; + *pdVar13 = dVar21 + dVar22 * dVar20; + pdVar13[3] = dVar21 + dVar22 * dVar19; + pdVar13[2] = dVar21 + dVar22 * dVar18; + pdVar10 = pdVar10 + 4; + pdVar13 = pdVar13 + 4; + } while (uVar15 < uVar1); + } + } + if (iVar5 < iVar4) { + pdVar10 = param_1 + lVar17; + if ((pdVar10 < param_5 + lVar17 + 2 && param_5 + lVar17 < param_1 + lVar17 + 2) || + (uVar8 < 9)) { + lVar14 = 0; + do { + *(double *)((long)(param_5 + lVar17) + lVar14) = + dVar21 + *(double *)((long)pdVar10 + lVar14) * dVar22; + lVar14 = lVar14 + 8; + } while (lVar14 != ((ulong)(uint)((iVar4 + -1) - iVar5) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar10 >> 3) & 1; + uVar15 = uVar8; + if (uVar2 < uVar8) { + uVar15 = uVar2; + } + iVar9 = iVar5; + if (uVar15 != 0) { + param_5[lVar17] = dVar21 + param_1[lVar17] * dVar22; + iVar9 = iVar5 + 1; + } + uVar12 = 0; + uVar2 = ((uVar8 - uVar15) - 2 >> 1) + 1; + iVar6 = uVar2 * 2; + pdVar10 = param_5 + (ulong)uVar15 + lVar17; + pdVar13 = param_1 + (ulong)uVar15 + lVar17; + do { + dVar18 = *pdVar13; + uVar12 = uVar12 + 1; + pdVar10[1] = dVar21 + dVar22 * pdVar13[1]; + *pdVar10 = dVar21 + dVar22 * dVar18; + pdVar10 = pdVar10 + 2; + pdVar13 = pdVar13 + 2; + } while (uVar12 < uVar2); + uVar2 = iVar9 + iVar6; + if (uVar8 - uVar15 != iVar6) { + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_5 + uVar11) = + dVar21 + *(double *)((long)param_1 + uVar11) * dVar22; + } + } + } + iVar16 = iVar16 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar16 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026a614 (612 bytes) name=FUN_0026a614 + +void FUN_0026a614(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + double dVar10; + undefined8 *puVar11; + uint uVar12; + int iVar13; + double *pdVar14; + uint uVar15; + int iVar16; + long lVar17; + double dVar18; + + iVar6 = *param_7; + iVar16 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar6 - 4U >> 2) + 1; + iVar7 = uVar1 * 4; + if (iVar6 + -3 < 1) { + iVar7 = 0; + } + iVar2 = iVar7 + 1; + uVar9 = iVar6 - iVar7; + lVar17 = (long)iVar7; + iVar3 = iVar7 + 2; + iVar4 = iVar7 + 3; + do { + if (0 < iVar6 + -3) { + uVar12 = 0; + pdVar14 = param_1; + puVar11 = param_5; + do { + uVar12 = uVar12 + 1; + dVar18 = pdVar14[1]; + dVar10 = *pdVar14; + puVar11[1] = CONCAT44((float)pdVar14[3],(float)pdVar14[2]); + *puVar11 = CONCAT44((float)dVar18,(float)dVar10); + pdVar14 = pdVar14 + 4; + puVar11 = puVar11 + 2; + } while (uVar12 < uVar1); + } + if (iVar7 < iVar6) { + uVar12 = (uint)((ulong)param_1 >> 3) & 1; + if (uVar9 < uVar12) { + uVar12 = uVar9; + } + if (uVar9 < 5) { + uVar12 = uVar9; + } + iVar13 = iVar7; + if (uVar12 != 0) { + *(float *)((long)param_5 + lVar17 * 4) = (float)param_1[lVar17]; + iVar13 = iVar2; + if (((uVar12 != 1) && + (*(float *)((long)param_5 + (long)iVar2 * 4) = (float)param_1[iVar2], iVar13 = iVar3, + uVar12 != 2)) && + (*(float *)((long)param_5 + (long)iVar3 * 4) = (float)param_1[iVar3], iVar13 = iVar4, + uVar12 == 4)) { + *(float *)((long)param_5 + (long)iVar4 * 4) = (float)param_1[iVar4]; + iVar13 = iVar7 + 4; + } + if (uVar12 == uVar9) goto LAB_0026a828; + } + uVar5 = ((uVar9 - uVar12) - 4 >> 2) + 1; + iVar8 = uVar5 * 4; + if (2 < (uVar9 - 1) - uVar12) { + uVar15 = 0; + puVar11 = (undefined8 *)((long)param_5 + ((ulong)uVar12 + lVar17) * 4); + pdVar14 = param_1 + (ulong)uVar12 + lVar17; + do { + dVar18 = pdVar14[1]; + dVar10 = *pdVar14; + uVar15 = uVar15 + 1; + puVar11[1] = CONCAT44((float)pdVar14[3],(float)pdVar14[2]); + *puVar11 = CONCAT44((float)dVar18,(float)dVar10); + puVar11 = puVar11 + 2; + pdVar14 = pdVar14 + 4; + } while (uVar15 < uVar5); + iVar13 = iVar13 + iVar8; + if (iVar8 == uVar9 - uVar12) goto LAB_0026a828; + } + iVar8 = iVar13 + 1; + *(float *)((long)param_5 + (long)iVar13 * 4) = (float)param_1[iVar13]; + if (iVar8 < iVar6) { + iVar13 = iVar13 + 2; + *(float *)((long)param_5 + (long)iVar8 * 4) = (float)param_1[iVar8]; + if (iVar13 < iVar6) { + *(float *)((long)param_5 + (long)iVar13 * 4) = (float)param_1[iVar13]; + } + } + } +LAB_0026a828: + iVar16 = iVar16 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar16 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026a878 (1948 bytes) name=FUN_0026a878 + +void FUN_0026a878(double *param_1,long param_2,undefined8 param_3,undefined8 param_4,double *param_5 + ,ulong param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + byte *pbVar5; + int iVar6; + byte bVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + int iVar13; + uint uVar14; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [13]; + undefined1 auVar18 [13]; + undefined1 auVar19 [13]; + undefined1 auVar20 [13]; + undefined1 auVar21 [13]; + undefined1 auVar22 [13]; + undefined1 auVar23 [13]; + byte bVar24; + byte bVar25; + byte bVar26; + byte bVar27; + byte bVar28; + byte *pbVar29; + long lVar30; + double *pdVar31; + int iVar32; + long lVar33; + long lVar34; + int iVar35; + uint uVar36; + double *pdVar37; + long lVar38; + uint uVar39; + long lVar40; + ulong uVar41; + undefined1 auVar42 [16]; + ulong uVar43; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + long lVar46; + long lVar47; + long lVar48; + long lVar49; + ulong uVar50; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + ulong uVar54; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + undefined1 auVar62 [16]; + + iVar6 = *param_7; + iVar32 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar12 = iVar6 - 4; + iVar13 = iVar6 + -3; + uVar11 = uVar12 >> 2; + uVar1 = uVar11 + 1; + uVar2 = (uVar11 - 3 >> 2) + 1; + iVar8 = uVar2 * 0x10; + if (uVar12 < 0xc) { + iVar8 = 0; + } + iVar9 = uVar1 * 4; + if (iVar13 < 1) { + iVar9 = 0; + } + uVar14 = iVar6 - iVar9; + lVar34 = (long)iVar8; + lVar46 = NEON_shl((ulong)uVar1,2); + lVar33 = (long)iVar9; + lVar49 = NEON_shl(lVar34,3); + lVar40 = (long)(iVar8 + 4); + lVar38 = (long)(iVar8 + 8); + lVar48 = NEON_shl(lVar40,3); + lVar47 = NEON_shl(lVar38,3); + do { + if (0 < iVar13) { + if ((param_1 < param_5 + (ulong)uVar1 * 4 && param_5 < (double *)((long)param_1 + lVar46)) + || (uVar1 < 5)) { + pbVar29 = (byte *)((long)param_1 + 1); + pdVar31 = param_5; + do { + pbVar5 = pbVar29 + 4; + bVar7 = pbVar29[-1]; + pdVar31[1] = (double)*pbVar29; + *pdVar31 = (double)bVar7; + bVar7 = pbVar29[1]; + pdVar31[3] = (double)pbVar29[2]; + pdVar31[2] = (double)bVar7; + pbVar29 = pbVar5; + pdVar31 = pdVar31 + 4; + } while (pbVar5 != (byte *)((long)param_1 + (ulong)uVar11 * 4 + 5)); + } + else { + if (0xb < uVar12) { + uVar36 = 0; + pdVar31 = param_5; + pdVar37 = param_1; + do { + bVar7 = *(byte *)((long)pdVar37 + 1); + bVar24 = *(byte *)((long)pdVar37 + 9); + bVar25 = *(byte *)((long)pdVar37 + 0xd); + uVar36 = uVar36 + 1; + uVar54 = CONCAT26(0,(uint6)CONCAT14(bVar7,(uint)CONCAT12(bVar7,(ushort)*(byte *) + pdVar37)) & 0xffff0000ffff); + auVar21[8] = *(byte *)((long)pdVar37 + 2); + auVar21._0_8_ = uVar54; + auVar21._9_3_ = 0; + auVar21[0xc] = *(byte *)((long)pdVar37 + 3); + uVar43 = CONCAT35(0,CONCAT14(*(byte *)((long)pdVar37 + 5), + (uint)*(byte *)((long)pdVar37 + 4))); + auVar17[8] = *(byte *)((long)pdVar37 + 6); + auVar17._0_8_ = uVar43; + auVar17._9_3_ = 0; + auVar17[0xc] = *(byte *)((long)pdVar37 + 7); + uVar50 = CONCAT26(0,(uint6)CONCAT14(bVar24,(uint)CONCAT12(bVar24,(ushort)*(byte *)( + pdVar37 + 1))) & 0xffff0000ffff); + auVar22[8] = *(byte *)((long)pdVar37 + 10); + auVar22._0_8_ = uVar50; + auVar22._9_3_ = 0; + auVar22[0xc] = *(byte *)((long)pdVar37 + 0xb); + uVar41 = CONCAT35(0,CONCAT14(bVar25,(uint)*(byte *)((long)pdVar37 + 0xc))); + auVar18[8] = *(byte *)((long)pdVar37 + 0xe); + auVar18._0_8_ = uVar41; + auVar18._9_3_ = 0; + auVar18[0xc] = *(byte *)((long)pdVar37 + 0xf); + auVar55._0_8_ = uVar54 & 0xffffffff; + auVar55[8] = bVar7; + auVar55._9_7_ = 0; + auVar59._0_8_ = (ulong)auVar21._8_5_ & 0xffffffff; + auVar59._8_5_ = auVar21._8_5_ >> 0x20; + auVar59._13_3_ = 0; + auVar58._0_8_ = uVar43 & 0xffffffff; + auVar58[8] = *(byte *)((long)pdVar37 + 5); + auVar58._9_7_ = 0; + auVar52._0_8_ = (ulong)auVar17._8_5_ & 0xffffffff; + auVar52._8_5_ = auVar17._8_5_ >> 0x20; + auVar52._13_3_ = 0; + auVar56 = NEON_scvtf(auVar55,8); + pdVar31[1] = auVar56._8_8_; + *pdVar31 = auVar56._0_8_; + auVar56 = NEON_scvtf(auVar59,8); + auVar51._0_8_ = (ulong)auVar22._8_5_ & 0xffffffff; + auVar51._8_5_ = auVar22._8_5_ >> 0x20; + auVar51._13_3_ = 0; + auVar59 = NEON_scvtf(auVar58,8); + auVar57._0_8_ = uVar41 & 0xffffffff; + auVar57[8] = bVar25; + auVar57._9_7_ = 0; + auVar44 = NEON_scvtf(auVar52,8); + pdVar31[3] = auVar56._8_8_; + pdVar31[2] = auVar56._0_8_; + pdVar31[5] = auVar59._8_8_; + pdVar31[4] = auVar59._0_8_; + auVar56[8] = bVar24; + auVar56._0_8_ = uVar50 & 0xffffffff; + auVar56._9_7_ = 0; + auVar59 = NEON_scvtf(auVar56,8); + pdVar31[7] = auVar44._8_8_; + pdVar31[6] = auVar44._0_8_; + auVar52 = NEON_scvtf(auVar51,8); + auVar44._0_8_ = (ulong)auVar18._8_5_ & 0xffffffff; + auVar44._8_5_ = auVar18._8_5_ >> 0x20; + auVar44._13_3_ = 0; + auVar56 = NEON_scvtf(auVar57,8); + pdVar31[9] = auVar59._8_8_; + pdVar31[8] = auVar59._0_8_; + pdVar31[0xb] = auVar52._8_8_; + pdVar31[10] = auVar52._0_8_; + pdVar31[0xd] = auVar56._8_8_; + pdVar31[0xc] = auVar56._0_8_; + auVar56 = NEON_scvtf(auVar44,8); + pdVar31[0xf] = auVar56._8_8_; + pdVar31[0xe] = auVar56._0_8_; + pdVar31 = pdVar31 + 0x10; + pdVar37 = pdVar37 + 2; + } while (uVar36 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_0026ac7c; + } + bVar7 = *(byte *)((long)param_1 + lVar34 + 1); + *(double *)((long)param_5 + lVar49) = (double)*(byte *)((long)param_1 + lVar34); + *(double *)((long)param_5 + lVar49 + 8) = (double)bVar7; + bVar7 = *(byte *)((long)param_1 + lVar34 + 3); + *(double *)((long)param_5 + lVar49 + 0x10) = (double)*(byte *)((long)param_1 + lVar34 + 2) + ; + *(double *)((long)param_5 + lVar49 + 0x18) = (double)bVar7; + if (iVar8 + 4 < iVar13) { + bVar7 = *(byte *)((long)param_1 + lVar40 + 1); + *(double *)((long)param_5 + lVar48) = (double)*(byte *)((long)param_1 + lVar40); + *(double *)((long)param_5 + lVar48 + 8) = (double)bVar7; + bVar7 = *(byte *)((long)param_1 + lVar40 + 3); + *(double *)((long)param_5 + lVar48 + 0x10) = + (double)*(byte *)((long)param_1 + lVar40 + 2); + *(double *)((long)param_5 + lVar48 + 0x18) = (double)bVar7; + if (iVar8 + 8 < iVar13) { + bVar7 = *(byte *)((long)param_1 + lVar38 + 1); + *(double *)((long)param_5 + lVar47) = (double)*(byte *)((long)param_1 + lVar38); + *(double *)((long)param_5 + lVar47 + 8) = (double)bVar7; + bVar7 = *(byte *)((long)param_1 + lVar38 + 3); + *(double *)((long)param_5 + lVar47 + 0x10) = + (double)*(byte *)((long)param_1 + lVar38 + 2); + *(double *)((long)param_5 + lVar47 + 0x18) = (double)bVar7; + } + } + } + } +LAB_0026ac7c: + if (iVar9 < iVar6) { + pdVar31 = param_5 + lVar33; + pdVar37 = (double *)((long)param_1 + lVar33); + if ((pdVar31 < (double *)((long)param_1 + lVar33 + (ulong)uVar14) && + pdVar37 < param_5 + lVar33 + (ulong)uVar14) || (uVar14 < 0x15)) { + lVar30 = 0; + do { + pdVar31[lVar30] = (double)*(byte *)((long)pdVar37 + lVar30); + lVar30 = lVar30 + 1; + } while (lVar30 != (ulong)(uint)((iVar6 + -1) - iVar9) + 1); + } + else { + uVar3 = (uint)((ulong)pdVar31 >> 3) & 1; + uVar36 = uVar14; + if (uVar3 < uVar14) { + uVar36 = uVar3; + } + iVar35 = iVar9; + if (uVar36 != 0) { + *pdVar31 = (double)*(byte *)pdVar37; + iVar35 = iVar9 + 1; + } + uVar3 = ((uVar14 - uVar36) - 0x10 >> 4) + 1; + uVar39 = 0; + iVar10 = uVar3 * 0x10; + pdVar31 = param_5 + (ulong)uVar36 + lVar33; + pbVar29 = (byte *)((long)param_1 + lVar33 + (ulong)uVar36); + do { + bVar7 = pbVar29[1]; + bVar24 = pbVar29[8]; + bVar25 = pbVar29[9]; + bVar26 = pbVar29[10]; + bVar27 = pbVar29[0xb]; + bVar28 = pbVar29[0xd]; + uVar39 = uVar39 + 1; + uVar50 = CONCAT26(0,(uint6)CONCAT14(bVar7,(uint)CONCAT12(bVar7,(ushort)*pbVar29)) & + 0xffff0000ffff); + auVar23[8] = pbVar29[2]; + auVar23._0_8_ = uVar50; + auVar23._9_3_ = 0; + auVar23[0xc] = pbVar29[3]; + uVar43 = CONCAT35(0,CONCAT14(pbVar29[5],(uint)pbVar29[4])); + auVar19[8] = pbVar29[6]; + auVar19._0_8_ = uVar43; + auVar19._9_3_ = 0; + auVar19[0xc] = pbVar29[7]; + uVar41 = CONCAT35(0,CONCAT14(bVar28,(uint)pbVar29[0xc])); + auVar20[8] = pbVar29[0xe]; + auVar20._0_8_ = uVar41; + auVar20._9_3_ = 0; + auVar20[0xc] = pbVar29[0xf]; + auVar60._0_8_ = uVar50 & 0xffffffff; + auVar60[8] = bVar7; + auVar60._9_7_ = 0; + auVar53._0_8_ = (ulong)auVar23._8_5_ & 0xffffffff; + auVar53._8_5_ = auVar23._8_5_ >> 0x20; + auVar53._13_3_ = 0; + auVar62._0_8_ = uVar43 & 0xffffffff; + auVar62[8] = pbVar29[5]; + auVar62._9_7_ = 0; + auVar45._0_8_ = (ulong)auVar19._8_5_ & 0xffffffff; + auVar45._8_5_ = auVar19._8_5_ >> 0x20; + auVar45._13_3_ = 0; + auVar56 = NEON_scvtf(auVar60,8); + pdVar31[1] = auVar56._8_8_; + *pdVar31 = auVar56._0_8_; + auVar44 = NEON_scvtf(auVar53,8); + auVar52 = NEON_scvtf(auVar62,8); + auVar61._0_8_ = uVar41 & 0xffffffff; + auVar61[8] = bVar28; + auVar61._9_7_ = 0; + auVar56 = NEON_scvtf(auVar45,8); + pdVar31[3] = auVar44._8_8_; + pdVar31[2] = auVar44._0_8_; + *(undefined1 (*) [16])(pdVar31 + 4) = auVar52; + auVar16[8] = bVar25; + auVar16._0_8_ = + (ulong)((uint6)CONCAT14(bVar25,(uint)CONCAT12(bVar25,(ushort)bVar24)) & + 0xffff0000ffff) & 0xffffffff; + auVar16._9_7_ = 0; + auVar52 = NEON_scvtf(auVar16,8); + pdVar31[7] = auVar56._8_8_; + pdVar31[6] = auVar56._0_8_; + auVar15[8] = bVar27; + auVar15._0_8_ = (ulong)CONCAT14(bVar27,(uint)bVar26) & 0xffffffff; + auVar15._9_7_ = 0; + auVar44 = NEON_scvtf(auVar15,8); + pdVar31[9] = auVar52._8_8_; + pdVar31[8] = auVar52._0_8_; + auVar56 = NEON_scvtf(auVar61,8); + pdVar31[0xb] = auVar44._8_8_; + pdVar31[10] = auVar44._0_8_; + pdVar31[0xd] = auVar56._8_8_; + pdVar31[0xc] = auVar56._0_8_; + auVar42._0_8_ = (ulong)auVar20._8_5_ & 0xffffffff; + auVar42._8_5_ = auVar20._8_5_ >> 0x20; + auVar42._13_3_ = 0; + auVar56 = NEON_scvtf(auVar42,8); + pdVar31[0xf] = auVar56._8_8_; + pdVar31[0xe] = auVar56._0_8_; + pdVar31 = pdVar31 + 0x10; + pbVar29 = pbVar29 + 0x10; + } while (uVar39 < uVar3); + iVar35 = iVar35 + iVar10; + if (uVar14 - uVar36 != iVar10) { + iVar10 = iVar35 + 1; + param_5[iVar35] = (double)*(byte *)((long)param_1 + (long)iVar35); + if (iVar10 < iVar6) { + iVar4 = iVar35 + 2; + param_5[iVar10] = (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar4 < iVar6) { + iVar10 = iVar35 + 3; + param_5[iVar4] = (double)*(byte *)((long)param_1 + (long)iVar4); + if (iVar10 < iVar6) { + iVar4 = iVar35 + 4; + param_5[iVar10] = (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar4 < iVar6) { + iVar10 = iVar35 + 5; + param_5[iVar4] = (double)*(byte *)((long)param_1 + (long)iVar4); + if (iVar10 < iVar6) { + iVar4 = iVar35 + 6; + param_5[iVar10] = (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar4 < iVar6) { + iVar10 = iVar35 + 7; + param_5[iVar4] = (double)*(byte *)((long)param_1 + (long)iVar4); + if (iVar10 < iVar6) { + iVar4 = iVar35 + 8; + param_5[iVar10] = (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar4 < iVar6) { + iVar10 = iVar35 + 9; + param_5[iVar4] = (double)*(byte *)((long)param_1 + (long)iVar4); + if (iVar10 < iVar6) { + iVar4 = iVar35 + 10; + param_5[iVar10] = (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar4 < iVar6) { + iVar10 = iVar35 + 0xb; + param_5[iVar4] = (double)*(byte *)((long)param_1 + (long)iVar4); + if (iVar10 < iVar6) { + iVar4 = iVar35 + 0xc; + param_5[iVar10] = (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar4 < iVar6) { + iVar10 = iVar35 + 0xd; + param_5[iVar4] = (double)*(byte *)((long)param_1 + (long)iVar4); + if (iVar10 < iVar6) { + iVar35 = iVar35 + 0xe; + param_5[iVar10] = + (double)*(byte *)((long)param_1 + (long)iVar10); + if (iVar35 < iVar6) { + param_5[iVar35] = + (double)*(byte *)((long)param_1 + (long)iVar35); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar32 = iVar32 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar32 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026b014 (1948 bytes) name=FUN_0026b014 + +void FUN_0026b014(double *param_1,long param_2,undefined8 param_3,undefined8 param_4,double *param_5 + ,ulong param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + char *pcVar5; + int iVar6; + byte bVar7; + char cVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint uVar15; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + char cVar18; + char cVar19; + char cVar20; + char cVar21; + char cVar22; + char cVar23; + char cVar24; + char *pcVar25; + long lVar26; + double *pdVar27; + int iVar28; + long lVar29; + long lVar30; + int iVar31; + uint uVar32; + double *pdVar33; + long lVar34; + uint uVar35; + long lVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + long lVar40; + long lVar41; + long lVar42; + long lVar43; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + + iVar6 = *param_7; + iVar28 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar13 = iVar6 - 4; + iVar14 = iVar6 + -3; + uVar12 = uVar13 >> 2; + uVar1 = uVar12 + 1; + uVar2 = (uVar12 - 3 >> 2) + 1; + iVar9 = uVar2 * 0x10; + if (uVar13 < 0xc) { + iVar9 = 0; + } + iVar10 = uVar1 * 4; + if (iVar14 < 1) { + iVar10 = 0; + } + uVar15 = iVar6 - iVar10; + lVar30 = (long)iVar9; + lVar40 = NEON_shl((ulong)uVar1,2); + lVar29 = (long)iVar10; + lVar43 = NEON_shl(lVar30,3); + lVar36 = (long)(iVar9 + 4); + lVar34 = (long)(iVar9 + 8); + lVar42 = NEON_shl(lVar36,3); + lVar41 = NEON_shl(lVar34,3); + do { + if (0 < iVar14) { + if ((param_1 < param_5 + (ulong)uVar1 * 4 && param_5 < (double *)((long)param_1 + lVar40)) + || (uVar1 < 5)) { + pcVar25 = (char *)((long)param_1 + 1); + pdVar27 = param_5; + do { + pcVar5 = pcVar25 + 4; + bVar7 = pcVar25[-1]; + pdVar27[1] = (double)(int)*pcVar25; + *pdVar27 = (double)bVar7; + bVar7 = pcVar25[1]; + pdVar27[3] = (double)(byte)pcVar25[2]; + pdVar27[2] = (double)bVar7; + pcVar25 = pcVar5; + pdVar27 = pdVar27 + 4; + } while (pcVar5 != (char *)((long)param_1 + (ulong)uVar12 * 4 + 5)); + } + else { + if (0xb < uVar13) { + uVar32 = 0; + pdVar27 = param_5; + pdVar33 = param_1; + do { + cVar8 = *(char *)(pdVar33 + 1); + cVar18 = *(char *)((long)pdVar33 + 9); + cVar19 = *(char *)((long)pdVar33 + 10); + cVar20 = *(char *)((long)pdVar33 + 0xb); + cVar21 = *(char *)((long)pdVar33 + 0xc); + cVar22 = *(char *)((long)pdVar33 + 0xd); + cVar23 = *(char *)((long)pdVar33 + 0xe); + cVar24 = *(char *)((long)pdVar33 + 0xf); + uVar32 = uVar32 + 1; + auVar47._0_8_ = (long)(int)(short)*(char *)pdVar33; + auVar47._8_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 1); + auVar51._0_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 2); + auVar51._8_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 3); + auVar50._0_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 4); + auVar50._8_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 5); + auVar45._0_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 6); + auVar45._8_8_ = (long)(int)(short)*(char *)((long)pdVar33 + 7); + auVar48 = NEON_scvtf(auVar47,8); + pdVar27[1] = auVar48._8_8_; + *pdVar27 = auVar48._0_8_; + auVar48 = NEON_scvtf(auVar51,8); + auVar44._0_8_ = (long)(int)(short)cVar19; + auVar44._8_8_ = (long)(int)(short)cVar20; + auVar51 = NEON_scvtf(auVar50,8); + auVar49._0_8_ = (long)(int)(short)cVar21; + auVar49._8_8_ = (long)(int)(short)cVar22; + auVar38 = NEON_scvtf(auVar45,8); + pdVar27[3] = auVar48._8_8_; + pdVar27[2] = auVar48._0_8_; + pdVar27[5] = auVar51._8_8_; + pdVar27[4] = auVar51._0_8_; + auVar48._8_4_ = (int)(short)cVar18; + auVar48._0_8_ = (long)(int)(short)cVar8; + auVar48._12_4_ = (int)(short)cVar18 >> 0x1f; + auVar51 = NEON_scvtf(auVar48,8); + pdVar27[7] = auVar38._8_8_; + pdVar27[6] = auVar38._0_8_; + auVar45 = NEON_scvtf(auVar44,8); + auVar38._0_8_ = (long)(int)(short)cVar23; + auVar38._8_8_ = (long)(int)(short)cVar24; + auVar48 = NEON_scvtf(auVar49,8); + pdVar27[9] = auVar51._8_8_; + pdVar27[8] = auVar51._0_8_; + pdVar27[0xb] = auVar45._8_8_; + pdVar27[10] = auVar45._0_8_; + pdVar27[0xd] = auVar48._8_8_; + pdVar27[0xc] = auVar48._0_8_; + auVar48 = NEON_scvtf(auVar38,8); + pdVar27[0xf] = auVar48._8_8_; + pdVar27[0xe] = auVar48._0_8_; + pdVar27 = pdVar27 + 0x10; + pdVar33 = pdVar33 + 2; + } while (uVar32 < uVar2); + if (uVar1 == uVar2 * 4) goto LAB_0026b418; + } + cVar8 = *(char *)((long)param_1 + lVar30 + 1); + *(double *)((long)param_5 + lVar43) = (double)(int)*(char *)((long)param_1 + lVar30); + *(double *)((long)param_5 + lVar43 + 8) = (double)(int)cVar8; + cVar8 = *(char *)((long)param_1 + lVar30 + 3); + *(double *)((long)param_5 + lVar43 + 0x10) = + (double)(int)*(char *)((long)param_1 + lVar30 + 2); + *(double *)((long)param_5 + lVar43 + 0x18) = (double)(int)cVar8; + if (iVar9 + 4 < iVar14) { + cVar8 = *(char *)((long)param_1 + lVar36 + 1); + *(double *)((long)param_5 + lVar42) = (double)(int)*(char *)((long)param_1 + lVar36); + *(double *)((long)param_5 + lVar42 + 8) = (double)(int)cVar8; + cVar8 = *(char *)((long)param_1 + lVar36 + 3); + *(double *)((long)param_5 + lVar42 + 0x10) = + (double)(int)*(char *)((long)param_1 + lVar36 + 2); + *(double *)((long)param_5 + lVar42 + 0x18) = (double)(int)cVar8; + if (iVar9 + 8 < iVar14) { + cVar8 = *(char *)((long)param_1 + lVar34 + 1); + *(double *)((long)param_5 + lVar41) = (double)(int)*(char *)((long)param_1 + lVar34); + *(double *)((long)param_5 + lVar41 + 8) = (double)(int)cVar8; + cVar8 = *(char *)((long)param_1 + lVar34 + 3); + *(double *)((long)param_5 + lVar41 + 0x10) = + (double)(int)*(char *)((long)param_1 + lVar34 + 2); + *(double *)((long)param_5 + lVar41 + 0x18) = (double)(int)cVar8; + } + } + } + } +LAB_0026b418: + if (iVar10 < iVar6) { + pdVar27 = param_5 + lVar29; + pdVar33 = (double *)((long)param_1 + lVar29); + if ((pdVar27 < (double *)((long)param_1 + lVar29 + (ulong)uVar15) && + pdVar33 < param_5 + lVar29 + (ulong)uVar15) || (uVar15 < 0x15)) { + lVar26 = 0; + do { + pdVar27[lVar26] = (double)(int)*(char *)((long)pdVar33 + lVar26); + lVar26 = lVar26 + 1; + } while (lVar26 != (ulong)(uint)((iVar6 + -1) - iVar10) + 1); + } + else { + uVar3 = (uint)((ulong)pdVar27 >> 3) & 1; + uVar32 = uVar15; + if (uVar3 < uVar15) { + uVar32 = uVar3; + } + iVar31 = iVar10; + if (uVar32 != 0) { + *pdVar27 = (double)(int)*(char *)pdVar33; + iVar31 = iVar10 + 1; + } + uVar3 = ((uVar15 - uVar32) - 0x10 >> 4) + 1; + uVar35 = 0; + iVar11 = uVar3 * 0x10; + pdVar27 = param_5 + (ulong)uVar32 + lVar29; + pcVar25 = (char *)((long)param_1 + lVar29 + (ulong)uVar32); + do { + cVar8 = pcVar25[8]; + cVar18 = pcVar25[9]; + cVar19 = pcVar25[10]; + cVar20 = pcVar25[0xb]; + cVar21 = pcVar25[0xc]; + cVar22 = pcVar25[0xd]; + cVar23 = pcVar25[0xe]; + cVar24 = pcVar25[0xf]; + uVar35 = uVar35 + 1; + auVar52._0_8_ = (long)(int)(short)*pcVar25; + auVar52._8_8_ = (long)(int)(short)pcVar25[1]; + auVar46._0_8_ = (long)(int)(short)pcVar25[2]; + auVar46._8_8_ = (long)(int)(short)pcVar25[3]; + auVar54._0_8_ = (long)(int)(short)pcVar25[4]; + auVar54._8_8_ = (long)(int)(short)pcVar25[5]; + auVar39._0_8_ = (long)(int)(short)pcVar25[6]; + auVar39._8_8_ = (long)(int)(short)pcVar25[7]; + auVar48 = NEON_scvtf(auVar52,8); + pdVar27[1] = auVar48._8_8_; + *pdVar27 = auVar48._0_8_; + auVar38 = NEON_scvtf(auVar46,8); + auVar45 = NEON_scvtf(auVar54,8); + auVar53._0_8_ = (long)(int)(short)cVar21; + auVar53._8_8_ = (long)(int)(short)cVar22; + auVar48 = NEON_scvtf(auVar39,8); + pdVar27[3] = auVar38._8_8_; + pdVar27[2] = auVar38._0_8_; + *(undefined1 (*) [16])(pdVar27 + 4) = auVar45; + auVar17._8_8_ = (long)(int)(short)cVar18; + auVar17._0_8_ = (long)(int)(short)cVar8; + auVar45 = NEON_scvtf(auVar17,8); + pdVar27[7] = auVar48._8_8_; + pdVar27[6] = auVar48._0_8_; + auVar16._8_4_ = (int)(short)cVar20; + auVar16._0_8_ = (long)(int)(short)cVar19; + auVar16._12_4_ = (int)(short)cVar20 >> 0x1f; + auVar38 = NEON_scvtf(auVar16,8); + pdVar27[9] = auVar45._8_8_; + pdVar27[8] = auVar45._0_8_; + auVar48 = NEON_scvtf(auVar53,8); + pdVar27[0xb] = auVar38._8_8_; + pdVar27[10] = auVar38._0_8_; + pdVar27[0xd] = auVar48._8_8_; + pdVar27[0xc] = auVar48._0_8_; + auVar37._0_8_ = (long)(int)(short)cVar23; + auVar37._8_8_ = (long)(int)(short)cVar24; + auVar48 = NEON_scvtf(auVar37,8); + pdVar27[0xf] = auVar48._8_8_; + pdVar27[0xe] = auVar48._0_8_; + pdVar27 = pdVar27 + 0x10; + pcVar25 = pcVar25 + 0x10; + } while (uVar35 < uVar3); + iVar31 = iVar31 + iVar11; + if (uVar15 - uVar32 != iVar11) { + iVar11 = iVar31 + 1; + param_5[iVar31] = (double)(int)*(char *)((long)param_1 + (long)iVar31); + if (iVar11 < iVar6) { + iVar4 = iVar31 + 2; + param_5[iVar11] = (double)(int)*(char *)((long)param_1 + (long)iVar11); + if (iVar4 < iVar6) { + iVar11 = iVar31 + 3; + param_5[iVar4] = (double)(int)*(char *)((long)param_1 + (long)iVar4); + if (iVar11 < iVar6) { + iVar4 = iVar31 + 4; + param_5[iVar11] = (double)(int)*(char *)((long)param_1 + (long)iVar11); + if (iVar4 < iVar6) { + iVar11 = iVar31 + 5; + param_5[iVar4] = (double)(int)*(char *)((long)param_1 + (long)iVar4); + if (iVar11 < iVar6) { + iVar4 = iVar31 + 6; + param_5[iVar11] = (double)(int)*(char *)((long)param_1 + (long)iVar11); + if (iVar4 < iVar6) { + iVar11 = iVar31 + 7; + param_5[iVar4] = (double)(int)*(char *)((long)param_1 + (long)iVar4); + if (iVar11 < iVar6) { + iVar4 = iVar31 + 8; + param_5[iVar11] = (double)(int)*(char *)((long)param_1 + (long)iVar11); + if (iVar4 < iVar6) { + iVar11 = iVar31 + 9; + param_5[iVar4] = (double)(int)*(char *)((long)param_1 + (long)iVar4); + if (iVar11 < iVar6) { + iVar4 = iVar31 + 10; + param_5[iVar11] = (double)(int)*(char *)((long)param_1 + (long)iVar11) + ; + if (iVar4 < iVar6) { + iVar11 = iVar31 + 0xb; + param_5[iVar4] = (double)(int)*(char *)((long)param_1 + (long)iVar4) + ; + if (iVar11 < iVar6) { + iVar4 = iVar31 + 0xc; + param_5[iVar11] = + (double)(int)*(char *)((long)param_1 + (long)iVar11); + if (iVar4 < iVar6) { + iVar11 = iVar31 + 0xd; + param_5[iVar4] = + (double)(int)*(char *)((long)param_1 + (long)iVar4); + if (iVar11 < iVar6) { + iVar31 = iVar31 + 0xe; + param_5[iVar11] = + (double)(int)*(char *)((long)param_1 + (long)iVar11); + if (iVar31 < iVar6) { + param_5[iVar31] = + (double)(int)*(char *)((long)param_1 + (long)iVar31); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar28 = iVar28 + -1; + param_1 = (double *)((long)param_1 + param_2); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar28 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026b7b0 (1348 bytes) name=FUN_0026b7b0 + +void FUN_0026b7b0(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 (*param_5) [16],ulong param_6,int *param_7) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + ushort uVar12; + ushort uVar13; + ushort uVar14; + int iVar15; + int iVar16; + int iVar17; + uint uVar18; + uint uVar19; + undefined1 auVar20 [14]; + undefined1 auVar21 [14]; + undefined1 auVar22 [14]; + undefined1 auVar23 [14]; + long lVar24; + undefined8 *puVar25; + int iVar26; + int iVar27; + undefined1 (*pauVar28) [16]; + uint uVar29; + long lVar30; + long lVar31; + ushort *puVar32; + uint uVar33; + ulong uVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + long lVar37; + long lVar38; + long lVar39; + long lVar40; + long lVar41; + ulong uVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + long lVar47; + long lVar48; + long lVar49; + long lVar50; + long lVar51; + long lVar52; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + + iVar11 = *param_7; + iVar27 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar18 = iVar11 - 4; + iVar1 = (uVar18 >> 2) + 1; + uVar2 = ((uVar18 >> 2) - 1 >> 1) + 1; + iVar15 = iVar1 * 4; + iVar16 = uVar2 * 8; + if (uVar18 < 4) { + iVar16 = 0; + } + if (iVar11 + -3 < 1) { + iVar15 = 0; + } + iVar3 = iVar15 + 1; + lVar30 = (long)iVar16; + iVar16 = iVar15 + 2; + uVar19 = iVar11 - iVar15; + lVar24 = (long)iVar15; + lVar31 = lVar30 * 8; + lVar52 = NEON_shl(lVar24,3); + lVar51 = NEON_shl(lVar24,1); + iVar4 = iVar15 + 3; + iVar5 = iVar15 + 4; + iVar6 = iVar15 + 5; + iVar7 = iVar15 + 6; + lVar50 = NEON_shl((long)iVar3,3); + lVar37 = NEON_shl((long)iVar3,1); + iVar8 = iVar15 + 7; + lVar49 = NEON_shl((long)iVar16,3); + lVar48 = NEON_shl((long)iVar4,3); + lVar47 = NEON_shl((long)iVar5,3); + lVar41 = NEON_shl((long)iVar6,3); + lVar40 = NEON_shl((long)iVar7,3); + lVar39 = NEON_shl((long)iVar8,3); + lVar38 = NEON_shl((long)iVar8,1); + do { + if (0 < iVar11 + -3) { + if (3 < uVar18) { + uVar29 = 0; + pauVar28 = param_5; + puVar32 = param_1; + do { + uVar29 = uVar29 + 1; + uVar42 = CONCAT26(0,CONCAT24(puVar32[1],(uint)*puVar32)); + auVar20._8_2_ = puVar32[2]; + auVar20._0_8_ = uVar42; + auVar20._10_2_ = 0; + auVar20._12_2_ = puVar32[3]; + uVar34 = CONCAT26(0,CONCAT24(puVar32[5],(uint)puVar32[4])); + auVar21._8_2_ = puVar32[6]; + auVar21._0_8_ = uVar34; + auVar21._10_2_ = 0; + auVar21._12_2_ = puVar32[7]; + auVar53._0_8_ = uVar42 & 0xffffffff; + auVar53._8_2_ = puVar32[1]; + auVar53._10_6_ = 0; + auVar43._0_8_ = (ulong)auVar20._8_6_ & 0xffffffff; + auVar43._8_6_ = auVar20._8_6_ >> 0x20; + auVar43._14_2_ = 0; + auVar44._0_8_ = uVar34 & 0xffffffff; + auVar44._8_2_ = puVar32[5]; + auVar44._10_6_ = 0; + auVar35._0_8_ = (ulong)auVar21._8_6_ & 0xffffffff; + auVar35._8_6_ = auVar21._8_6_ >> 0x20; + auVar35._14_2_ = 0; + auVar53 = NEON_scvtf(auVar53,8); + *pauVar28 = auVar53; + auVar43 = NEON_scvtf(auVar43,8); + auVar44 = NEON_scvtf(auVar44,8); + auVar35 = NEON_scvtf(auVar35,8); + *(long *)(pauVar28[1] + 8) = auVar43._8_8_; + *(long *)pauVar28[1] = auVar43._0_8_; + *(long *)(pauVar28[2] + 8) = auVar44._8_8_; + *(long *)pauVar28[2] = auVar44._0_8_; + *(long *)(pauVar28[3] + 8) = auVar35._8_8_; + *(long *)pauVar28[3] = auVar35._0_8_; + pauVar28 = pauVar28 + 4; + puVar32 = puVar32 + 8; + } while (uVar29 < uVar2); + if (iVar1 == uVar2 * 2) goto LAB_0026ba1c; + } + uVar12 = param_1[lVar30 + 1]; + uVar13 = param_1[lVar30 + 2]; + uVar14 = param_1[lVar30 + 3]; + *(double *)(*param_5 + lVar31) = (double)param_1[lVar30]; + *(double *)(*param_5 + lVar31 + 8) = (double)uVar12; + *(double *)(param_5[1] + lVar31) = (double)uVar13; + *(double *)(param_5[1] + lVar31 + 8) = (double)uVar14; + } +LAB_0026ba1c: + if (iVar15 < iVar11) { + uVar29 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar19 < uVar29) { + uVar29 = uVar19; + } + if (uVar19 < 9) { + uVar29 = uVar19; + } + iVar26 = iVar15; + if (uVar29 != 0) { + *(double *)(*param_5 + lVar52) = (double)*(ushort *)((long)param_1 + lVar51); + iVar26 = iVar3; + if ((((uVar29 != 1) && + (*(double *)(*param_5 + lVar50) = (double)*(ushort *)((long)param_1 + lVar37), + iVar26 = iVar16, uVar29 != 2)) && + (*(double *)(*param_5 + lVar49) = (double)param_1[iVar16], iVar26 = iVar4, uVar29 != 3 + )) && (((*(double *)(*param_5 + lVar48) = (double)param_1[iVar4], iVar26 = iVar5, + uVar29 != 4 && + (*(double *)(*param_5 + lVar47) = (double)param_1[iVar5], iVar26 = iVar6, + uVar29 != 5)) && + ((*(double *)(*param_5 + lVar41) = (double)param_1[iVar6], iVar26 = iVar7, + uVar29 != 6 && + (*(double *)(*param_5 + lVar40) = (double)param_1[iVar7], iVar26 = iVar8, + uVar29 == 8)))))) { + *(double *)(*param_5 + lVar39) = (double)*(ushort *)((long)param_1 + lVar38); + iVar26 = iVar15 + 8; + } + if (uVar29 == uVar19) goto LAB_0026bc74; + } + uVar9 = ((uVar19 - uVar29) - 8 >> 3) + 1; + iVar17 = uVar9 * 8; + if (6 < (uVar19 - 1) - uVar29) { + uVar33 = 0; + puVar25 = (undefined8 *)(*param_5 + ((ulong)uVar29 + lVar24) * 8); + puVar32 = param_1 + (ulong)uVar29 + lVar24; + do { + uVar33 = uVar33 + 1; + uVar42 = CONCAT26(0,CONCAT24(puVar32[1],(uint)*puVar32)); + auVar22._8_2_ = puVar32[2]; + auVar22._0_8_ = uVar42; + auVar22._10_2_ = 0; + auVar22._12_2_ = puVar32[3]; + uVar34 = CONCAT26(0,CONCAT24(puVar32[5],(uint)puVar32[4])); + auVar23._8_2_ = puVar32[6]; + auVar23._0_8_ = uVar34; + auVar23._10_2_ = 0; + auVar23._12_2_ = puVar32[7]; + auVar46._0_8_ = uVar42 & 0xffffffff; + auVar46._8_2_ = puVar32[1]; + auVar46._10_6_ = 0; + auVar54._0_8_ = (ulong)auVar22._8_6_ & 0xffffffff; + auVar54._8_6_ = auVar22._8_6_ >> 0x20; + auVar54._14_2_ = 0; + auVar45._0_8_ = uVar34 & 0xffffffff; + auVar45._8_2_ = puVar32[5]; + auVar45._10_6_ = 0; + auVar36._0_8_ = (ulong)auVar23._8_6_ & 0xffffffff; + auVar36._8_6_ = auVar23._8_6_ >> 0x20; + auVar36._14_2_ = 0; + auVar35 = NEON_scvtf(auVar46,8); + puVar25[1] = auVar35._8_8_; + *puVar25 = auVar35._0_8_; + auVar44 = NEON_scvtf(auVar54,8); + auVar43 = NEON_scvtf(auVar45,8); + auVar35 = NEON_scvtf(auVar36,8); + *(undefined1 (*) [16])(puVar25 + 2) = auVar44; + puVar25[5] = auVar43._8_8_; + puVar25[4] = auVar43._0_8_; + puVar25[7] = auVar35._8_8_; + puVar25[6] = auVar35._0_8_; + puVar25 = puVar25 + 8; + puVar32 = puVar32 + 8; + } while (uVar33 < uVar9); + iVar26 = iVar26 + iVar17; + if (iVar17 == uVar19 - uVar29) goto LAB_0026bc74; + } + iVar17 = iVar26 + 1; + *(double *)(*param_5 + (long)iVar26 * 8) = (double)param_1[iVar26]; + if (iVar17 < iVar11) { + iVar10 = iVar26 + 2; + *(double *)(*param_5 + (long)iVar17 * 8) = (double)param_1[iVar17]; + if (iVar10 < iVar11) { + iVar17 = iVar26 + 3; + *(double *)(*param_5 + (long)iVar10 * 8) = (double)param_1[iVar10]; + if (iVar17 < iVar11) { + iVar10 = iVar26 + 4; + *(double *)(*param_5 + (long)iVar17 * 8) = (double)param_1[iVar17]; + if (iVar10 < iVar11) { + iVar17 = iVar26 + 5; + *(double *)(*param_5 + (long)iVar10 * 8) = (double)param_1[iVar10]; + if (iVar17 < iVar11) { + iVar26 = iVar26 + 6; + *(double *)(*param_5 + (long)iVar17 * 8) = (double)param_1[iVar17]; + if (iVar26 < iVar11) { + *(double *)(*param_5 + (long)iVar26 * 8) = (double)param_1[iVar26]; + } + } + } + } + } + } + } +LAB_0026bc74: + iVar27 = iVar27 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined1 (*) [16])(*param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar27 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026bcf4 (1348 bytes) name=FUN_0026bcf4 + +void FUN_0026bcf4(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 (*param_5) [16],ulong param_6,int *param_7) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + short sVar12; + short sVar13; + short sVar14; + int iVar15; + int iVar16; + int iVar17; + uint uVar18; + uint uVar19; + long lVar20; + undefined8 *puVar21; + int iVar22; + int iVar23; + undefined1 (*pauVar24) [16]; + uint uVar25; + long lVar26; + long lVar27; + short *psVar28; + uint uVar29; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + long lVar32; + long lVar33; + long lVar34; + long lVar35; + long lVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + long lVar41; + long lVar42; + long lVar43; + long lVar44; + long lVar45; + long lVar46; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + + iVar11 = *param_7; + iVar23 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar18 = iVar11 - 4; + iVar1 = (uVar18 >> 2) + 1; + uVar2 = ((uVar18 >> 2) - 1 >> 1) + 1; + iVar15 = iVar1 * 4; + iVar16 = uVar2 * 8; + if (uVar18 < 4) { + iVar16 = 0; + } + if (iVar11 + -3 < 1) { + iVar15 = 0; + } + iVar3 = iVar15 + 1; + lVar26 = (long)iVar16; + iVar16 = iVar15 + 2; + uVar19 = iVar11 - iVar15; + lVar20 = (long)iVar15; + lVar27 = lVar26 * 8; + lVar46 = NEON_shl(lVar20,3); + lVar45 = NEON_shl(lVar20,1); + iVar4 = iVar15 + 3; + iVar5 = iVar15 + 4; + iVar6 = iVar15 + 5; + iVar7 = iVar15 + 6; + lVar44 = NEON_shl((long)iVar3,3); + lVar32 = NEON_shl((long)iVar3,1); + iVar8 = iVar15 + 7; + lVar43 = NEON_shl((long)iVar16,3); + lVar42 = NEON_shl((long)iVar4,3); + lVar41 = NEON_shl((long)iVar5,3); + lVar36 = NEON_shl((long)iVar6,3); + lVar35 = NEON_shl((long)iVar7,3); + lVar34 = NEON_shl((long)iVar8,3); + lVar33 = NEON_shl((long)iVar8,1); + do { + if (0 < iVar11 + -3) { + if (3 < uVar18) { + uVar25 = 0; + pauVar24 = param_5; + psVar28 = param_1; + do { + uVar25 = uVar25 + 1; + auVar47._0_8_ = (long)(int)*psVar28; + auVar47._8_8_ = (long)(int)psVar28[1]; + auVar37._0_8_ = (long)(int)psVar28[2]; + auVar37._8_8_ = (long)(int)psVar28[3]; + auVar38._0_8_ = (long)(int)psVar28[4]; + auVar38._8_8_ = (long)(int)psVar28[5]; + auVar30._0_8_ = (long)(int)psVar28[6]; + auVar30._8_8_ = (long)(int)psVar28[7]; + auVar47 = NEON_scvtf(auVar47,8); + *pauVar24 = auVar47; + auVar37 = NEON_scvtf(auVar37,8); + auVar38 = NEON_scvtf(auVar38,8); + auVar30 = NEON_scvtf(auVar30,8); + *(long *)(pauVar24[1] + 8) = auVar37._8_8_; + *(long *)pauVar24[1] = auVar37._0_8_; + *(long *)(pauVar24[2] + 8) = auVar38._8_8_; + *(long *)pauVar24[2] = auVar38._0_8_; + *(long *)(pauVar24[3] + 8) = auVar30._8_8_; + *(long *)pauVar24[3] = auVar30._0_8_; + pauVar24 = pauVar24 + 4; + psVar28 = psVar28 + 8; + } while (uVar25 < uVar2); + if (iVar1 == uVar2 * 2) goto LAB_0026bf60; + } + sVar12 = param_1[lVar26 + 1]; + sVar13 = param_1[lVar26 + 2]; + sVar14 = param_1[lVar26 + 3]; + *(double *)(*param_5 + lVar27) = (double)(int)param_1[lVar26]; + *(double *)(*param_5 + lVar27 + 8) = (double)(int)sVar12; + *(double *)(param_5[1] + lVar27) = (double)(int)sVar13; + *(double *)(param_5[1] + lVar27 + 8) = (double)(int)sVar14; + } +LAB_0026bf60: + if (iVar15 < iVar11) { + uVar25 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar19 < uVar25) { + uVar25 = uVar19; + } + if (uVar19 < 9) { + uVar25 = uVar19; + } + iVar22 = iVar15; + if (uVar25 != 0) { + *(double *)(*param_5 + lVar46) = (double)(int)*(short *)((long)param_1 + lVar45); + iVar22 = iVar3; + if ((((uVar25 != 1) && + (*(double *)(*param_5 + lVar44) = (double)(int)*(short *)((long)param_1 + lVar32), + iVar22 = iVar16, uVar25 != 2)) && + (*(double *)(*param_5 + lVar43) = (double)(int)param_1[iVar16], iVar22 = iVar4, + uVar25 != 3)) && + (((*(double *)(*param_5 + lVar42) = (double)(int)param_1[iVar4], iVar22 = iVar5, + uVar25 != 4 && + (*(double *)(*param_5 + lVar41) = (double)(int)param_1[iVar5], iVar22 = iVar6, + uVar25 != 5)) && + ((*(double *)(*param_5 + lVar36) = (double)(int)param_1[iVar6], iVar22 = iVar7, + uVar25 != 6 && + (*(double *)(*param_5 + lVar35) = (double)(int)param_1[iVar7], iVar22 = iVar8, + uVar25 == 8)))))) { + *(double *)(*param_5 + lVar34) = (double)(int)*(short *)((long)param_1 + lVar33); + iVar22 = iVar15 + 8; + } + if (uVar25 == uVar19) goto LAB_0026c1b8; + } + uVar9 = ((uVar19 - uVar25) - 8 >> 3) + 1; + iVar17 = uVar9 * 8; + if (6 < (uVar19 - 1) - uVar25) { + uVar29 = 0; + puVar21 = (undefined8 *)(*param_5 + ((ulong)uVar25 + lVar20) * 8); + psVar28 = param_1 + (ulong)uVar25 + lVar20; + do { + uVar29 = uVar29 + 1; + auVar40._0_8_ = (long)(int)*psVar28; + auVar40._8_8_ = (long)(int)psVar28[1]; + auVar48._0_8_ = (long)(int)psVar28[2]; + auVar48._8_8_ = (long)(int)psVar28[3]; + auVar39._0_8_ = (long)(int)psVar28[4]; + auVar39._8_8_ = (long)(int)psVar28[5]; + auVar31._0_8_ = (long)(int)psVar28[6]; + auVar31._8_8_ = (long)(int)psVar28[7]; + auVar30 = NEON_scvtf(auVar40,8); + puVar21[1] = auVar30._8_8_; + *puVar21 = auVar30._0_8_; + auVar38 = NEON_scvtf(auVar48,8); + auVar37 = NEON_scvtf(auVar39,8); + auVar30 = NEON_scvtf(auVar31,8); + *(undefined1 (*) [16])(puVar21 + 2) = auVar38; + puVar21[5] = auVar37._8_8_; + puVar21[4] = auVar37._0_8_; + puVar21[7] = auVar30._8_8_; + puVar21[6] = auVar30._0_8_; + puVar21 = puVar21 + 8; + psVar28 = psVar28 + 8; + } while (uVar29 < uVar9); + iVar22 = iVar22 + iVar17; + if (iVar17 == uVar19 - uVar25) goto LAB_0026c1b8; + } + iVar17 = iVar22 + 1; + *(double *)(*param_5 + (long)iVar22 * 8) = (double)(int)param_1[iVar22]; + if (iVar17 < iVar11) { + iVar10 = iVar22 + 2; + *(double *)(*param_5 + (long)iVar17 * 8) = (double)(int)param_1[iVar17]; + if (iVar10 < iVar11) { + iVar17 = iVar22 + 3; + *(double *)(*param_5 + (long)iVar10 * 8) = (double)(int)param_1[iVar10]; + if (iVar17 < iVar11) { + iVar10 = iVar22 + 4; + *(double *)(*param_5 + (long)iVar17 * 8) = (double)(int)param_1[iVar17]; + if (iVar10 < iVar11) { + iVar17 = iVar22 + 5; + *(double *)(*param_5 + (long)iVar10 * 8) = (double)(int)param_1[iVar10]; + if (iVar17 < iVar11) { + iVar22 = iVar22 + 6; + *(double *)(*param_5 + (long)iVar17 * 8) = (double)(int)param_1[iVar17]; + if (iVar22 < iVar11) { + *(double *)(*param_5 + (long)iVar22 * 8) = (double)(int)param_1[iVar22]; + } + } + } + } + } + } + } +LAB_0026c1b8: + iVar23 = iVar23 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined1 (*) [16])(*param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar23 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026c238 (628 bytes) name=FUN_0026c238 + +void FUN_0026c238(int *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + undefined8 *puVar10; + uint uVar11; + int iVar12; + int *piVar13; + uint uVar14; + int iVar15; + long lVar16; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + + iVar6 = *param_7; + iVar15 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar6 - 4U >> 2) + 1; + iVar7 = uVar1 * 4; + if (iVar6 + -3 < 1) { + iVar7 = 0; + } + iVar2 = iVar7 + 1; + uVar9 = iVar6 - iVar7; + lVar16 = (long)iVar7; + iVar3 = iVar7 + 2; + iVar4 = iVar7 + 3; + do { + if (0 < iVar6 + -3) { + uVar11 = 0; + puVar10 = param_5; + piVar13 = param_1; + do { + uVar11 = uVar11 + 1; + auVar19._0_8_ = (long)*piVar13; + auVar19._8_8_ = (long)piVar13[1]; + auVar17._0_8_ = (long)piVar13[2]; + auVar17._8_8_ = (long)piVar13[3]; + auVar19 = NEON_scvtf(auVar19,8); + puVar10[1] = auVar19._8_8_; + *puVar10 = auVar19._0_8_; + auVar17 = NEON_scvtf(auVar17,8); + puVar10[3] = auVar17._8_8_; + puVar10[2] = auVar17._0_8_; + puVar10 = puVar10 + 4; + piVar13 = piVar13 + 4; + } while (uVar11 < uVar1); + } + if (iVar7 < iVar6) { + uVar11 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar9 < uVar11) { + uVar11 = uVar9; + } + if (uVar9 < 5) { + uVar11 = uVar9; + } + iVar12 = iVar7; + if (uVar11 != 0) { + param_5[lVar16] = (double)param_1[lVar16]; + iVar12 = iVar2; + if (((uVar11 != 1) && + (param_5[iVar2] = (double)param_1[iVar2], iVar12 = iVar3, uVar11 != 2)) && + (param_5[iVar3] = (double)param_1[iVar3], iVar12 = iVar4, uVar11 == 4)) { + param_5[iVar4] = (double)param_1[iVar4]; + iVar12 = iVar7 + 4; + } + if (uVar11 == uVar9) goto LAB_0026c45c; + } + uVar5 = ((uVar9 - uVar11) - 4 >> 2) + 1; + iVar8 = uVar5 * 4; + if (2 < (uVar9 - 1) - uVar11) { + uVar14 = 0; + puVar10 = param_5 + (ulong)uVar11 + lVar16; + piVar13 = param_1 + (ulong)uVar11 + lVar16; + do { + uVar14 = uVar14 + 1; + auVar20._0_8_ = (long)*piVar13; + auVar20._8_8_ = (long)piVar13[1]; + auVar18._0_8_ = (long)piVar13[2]; + auVar18._8_8_ = (long)piVar13[3]; + auVar17 = NEON_scvtf(auVar20,8); + puVar10[1] = auVar17._8_8_; + *puVar10 = auVar17._0_8_; + auVar17 = NEON_scvtf(auVar18,8); + puVar10[3] = auVar17._8_8_; + puVar10[2] = auVar17._0_8_; + puVar10 = puVar10 + 4; + piVar13 = piVar13 + 4; + } while (uVar14 < uVar5); + iVar12 = iVar12 + iVar8; + if (iVar8 == uVar9 - uVar11) goto LAB_0026c45c; + } + iVar8 = iVar12 + 1; + param_5[iVar12] = (double)param_1[iVar12]; + if (iVar8 < iVar6) { + iVar12 = iVar12 + 2; + param_5[iVar8] = (double)param_1[iVar8]; + if (iVar12 < iVar6) { + param_5[iVar12] = (double)param_1[iVar12]; + } + } + } +LAB_0026c45c: + iVar15 = iVar15 + -1; + param_1 = (int *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar15 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026c4ac (612 bytes) name=FUN_0026c4ac + +void FUN_0026c4ac(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + double *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + double *pdVar10; + uint uVar11; + int iVar12; + undefined8 *puVar13; + uint uVar14; + int iVar15; + long lVar16; + undefined8 uVar17; + undefined8 uVar18; + + iVar6 = *param_7; + iVar15 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar1 = (iVar6 - 4U >> 2) + 1; + iVar7 = uVar1 * 4; + if (iVar6 + -3 < 1) { + iVar7 = 0; + } + iVar2 = iVar7 + 1; + uVar9 = iVar6 - iVar7; + lVar16 = (long)iVar7; + iVar3 = iVar7 + 2; + iVar4 = iVar7 + 3; + do { + if (0 < iVar6 + -3) { + uVar11 = 0; + pdVar10 = param_5; + puVar13 = param_1; + do { + uVar18 = puVar13[1]; + uVar17 = *puVar13; + uVar11 = uVar11 + 1; + pdVar10[1] = (double)(float)((ulong)uVar17 >> 0x20); + *pdVar10 = (double)(float)uVar17; + pdVar10[3] = (double)(float)((ulong)uVar18 >> 0x20); + pdVar10[2] = (double)(float)uVar18; + pdVar10 = pdVar10 + 4; + puVar13 = puVar13 + 2; + } while (uVar11 < uVar1); + } + if (iVar7 < iVar6) { + uVar11 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar9 < uVar11) { + uVar11 = uVar9; + } + if (uVar9 < 5) { + uVar11 = uVar9; + } + iVar12 = iVar7; + if (uVar11 != 0) { + param_5[lVar16] = (double)*(float *)((long)param_1 + lVar16 * 4); + iVar12 = iVar2; + if (((uVar11 != 1) && + (param_5[iVar2] = (double)*(float *)((long)param_1 + (long)iVar2 * 4), iVar12 = iVar3, + uVar11 != 2)) && + (param_5[iVar3] = (double)*(float *)((long)param_1 + (long)iVar3 * 4), iVar12 = iVar4, + uVar11 == 4)) { + param_5[iVar4] = (double)*(float *)((long)param_1 + (long)iVar4 * 4); + iVar12 = iVar7 + 4; + } + if (uVar11 == uVar9) goto LAB_0026c6c0; + } + uVar5 = ((uVar9 - uVar11) - 4 >> 2) + 1; + iVar8 = uVar5 * 4; + if (2 < (uVar9 - 1) - uVar11) { + uVar14 = 0; + pdVar10 = param_5 + (ulong)uVar11 + lVar16; + puVar13 = (undefined8 *)((long)param_1 + ((ulong)uVar11 + lVar16) * 4); + do { + uVar18 = puVar13[1]; + uVar17 = *puVar13; + uVar14 = uVar14 + 1; + pdVar10[1] = (double)(float)((ulong)uVar17 >> 0x20); + *pdVar10 = (double)(float)uVar17; + pdVar10[3] = (double)(float)((ulong)uVar18 >> 0x20); + pdVar10[2] = (double)(float)uVar18; + pdVar10 = pdVar10 + 4; + puVar13 = puVar13 + 2; + } while (uVar14 < uVar5); + iVar12 = iVar12 + iVar8; + if (iVar8 == uVar9 - uVar11) goto LAB_0026c6c0; + } + iVar8 = iVar12 + 1; + param_5[iVar12] = (double)*(float *)((long)param_1 + (long)iVar12 * 4); + if (iVar8 < iVar6) { + iVar12 = iVar12 + 2; + param_5[iVar8] = (double)*(float *)((long)param_1 + (long)iVar8 * 4); + if (iVar12 < iVar6) { + param_5[iVar12] = (double)*(float *)((long)param_1 + (long)iVar12 * 4); + } + } + } +LAB_0026c6c0: + iVar15 = iVar15 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (iVar15 != -1); + } + return; +} + + +================================================================== + +### FUNC 0026c710 (136 bytes) name=FUN_0026c710 + +void FUN_0026c710(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined1 *)(param_3 + lVar1) = + *(undefined1 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1)); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined1 *)(param_3 + lVar1) = + *(undefined1 *) + (param_2 + (int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1))); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + param_5; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026c798 (136 bytes) name=FUN_0026c798 + +void FUN_0026c798(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined1 *)(param_3 + lVar1) = + *(undefined1 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1)); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined1 *)(param_3 + lVar1) = + *(undefined1 *) + (param_2 + (int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1))); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + param_5; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026c820 (136 bytes) name=FUN_0026c820 + +void FUN_0026c820(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined2 *)(param_3 + lVar1 * 2) = + *(undefined2 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1) * 2); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined2 *)(param_3 + lVar1 * 2) = + *(undefined2 *) + (param_2 + (long)(int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1)) * 2) + ; + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + (long)param_5 * 2; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026c8a8 (136 bytes) name=FUN_0026c8a8 + +void FUN_0026c8a8(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined2 *)(param_3 + lVar1 * 2) = + *(undefined2 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1) * 2); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined2 *)(param_3 + lVar1 * 2) = + *(undefined2 *) + (param_2 + (long)(int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1)) * 2) + ; + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + (long)param_5 * 2; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026c930 (136 bytes) name=FUN_0026c930 + +void FUN_0026c930(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined4 *)(param_3 + lVar1 * 4) = + *(undefined4 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1) * 4); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined4 *)(param_3 + lVar1 * 4) = + *(undefined4 *) + (param_2 + (long)(int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1)) * 4) + ; + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + (long)param_5 * 4; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026c9b8 (136 bytes) name=FUN_0026c9b8 + +void FUN_0026c9b8(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined4 *)(param_3 + lVar1 * 4) = + *(undefined4 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1) * 4); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined4 *)(param_3 + lVar1 * 4) = + *(undefined4 *) + (param_2 + (long)(int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1)) * 4) + ; + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + (long)param_5 * 4; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026ca40 (136 bytes) name=FUN_0026ca40 + +void FUN_0026ca40(long param_1,long param_2,long param_3,int param_4,int param_5,int param_6) + +{ + long lVar1; + int iVar2; + + if (param_6 == 1) { + if (0 < param_4 * param_5) { + lVar1 = 0; + do { + *(undefined8 *)(param_3 + lVar1 * 8) = + *(undefined8 *)(param_2 + (ulong)*(byte *)(param_1 + lVar1) * 8); + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_4 * param_5); + return; + } + } + else if (0 < param_4 * param_5) { + iVar2 = 0; + do { + lVar1 = 0; + if (0 < param_5) { + do { + *(undefined8 *)(param_3 + lVar1 * 8) = + *(undefined8 *) + (param_2 + (long)(int)((int)lVar1 + param_5 * (uint)*(byte *)(param_1 + lVar1)) * 8) + ; + lVar1 = lVar1 + 1; + } while ((int)lVar1 < param_5); + } + iVar2 = iVar2 + param_5; + param_1 = param_1 + param_5; + param_3 = param_3 + (long)param_5 * 8; + } while (iVar2 < param_4 * param_5); + } + return; +} + + +================================================================== + +### FUNC 0026cac8 (4 bytes) name=FUN_0026cac8 + +void FUN_0026cac8(void) + +{ + return; +} + + +================================================================== + +### FUNC 0026cacc (60 bytes) name=FUN_0026cacc + +void FUN_0026cacc(long *param_1) + +{ + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 0026cb08 (116 bytes) name=FUN_0026cb08 + +void FUN_0026cb08(void *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,void *param_5, + ulong param_6,uint *param_7) + +{ + uint uVar1; + uint uVar2; + + uVar2 = param_7[1]; + uVar1 = *param_7; + if (uVar2 != 0) { + do { + memcpy(param_5,param_1,-(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3); + uVar2 = uVar2 - 1; + param_1 = (void *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = (void *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + } while (uVar2 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026cb7c (116 bytes) name=FUN_0026cb7c + +void FUN_0026cb7c(void *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,void *param_5, + ulong param_6,uint *param_7) + +{ + uint uVar1; + uint uVar2; + + uVar2 = param_7[1]; + uVar1 = *param_7; + if (uVar2 != 0) { + do { + memcpy(param_5,param_1,-(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2); + uVar2 = uVar2 - 1; + param_1 = (void *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (void *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (uVar2 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026cbf0 (116 bytes) name=FUN_0026cbf0 + +void FUN_0026cbf0(void *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,void *param_5, + ulong param_6,uint *param_7) + +{ + uint uVar1; + uint uVar2; + + uVar2 = param_7[1]; + uVar1 = *param_7; + if (uVar2 != 0) { + do { + memcpy(param_5,param_1,-(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1); + uVar2 = uVar2 - 1; + param_1 = (void *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (void *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (uVar2 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026cc64 (104 bytes) name=FUN_0026cc64 + +void FUN_0026cc64(void *param_1,long param_2,undefined8 param_3,undefined8 param_4,void *param_5, + long param_6,int *param_7) + +{ + int iVar1; + int iVar2; + + iVar2 = *param_7; + for (iVar1 = param_7[1]; iVar1 != 0; iVar1 = iVar1 + -1) { + memcpy(param_5,param_1,(long)iVar2); + param_5 = (void *)((long)param_5 + param_6); + param_1 = (void *)((long)param_1 + param_2); + } + return; +} + + +================================================================== + +### FUNC 0026cccc (720 bytes) name=FUN_0026cccc + +void FUN_0026cccc(undefined8 *param_1,long *param_2,ulong param_3,uint param_4) + +{ + undefined8 *puVar1; + uint uVar2; + void *__dest; + long lVar3; + ulong uVar4; + int iVar5; + long lVar6; + undefined8 *puVar7; + undefined8 uVar8; + ulong uVar9; + uint uVar10; + long lVar11; + int iVar12; + long lVar13; + long lVar14; + long lVar15; + long *plVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + + iVar5 = (int)param_3; + if ((param_4 & 3) == 0) { + iVar12 = 4; + } + else { + iVar12 = (int)param_4 % 4; + if (iVar12 == 1) { + __dest = (void *)*param_2; + if (param_4 == 1) { + memcpy(__dest,param_1, + -(param_3 >> 0x1f & 1) & 0xfffffff800000000 | (param_3 & 0xffffffff) << 3); + return; + } + lVar6 = 0; + puVar7 = param_1; + if (0 < iVar5) { + do { + uVar8 = *puVar7; + puVar7 = puVar7 + (int)param_4; + *(undefined8 *)((long)__dest + lVar6 * 8) = uVar8; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < iVar5); + } + goto LAB_0026cd28; + } + if (iVar12 == 2) { + lVar6 = *param_2; + lVar3 = param_2[1]; + if (param_4 == 2) { + uVar2 = iVar5 - 1; + if ((int)uVar2 < 1) { + uVar10 = 0; + uVar2 = uVar10; + } + else { + lVar11 = 0; + puVar7 = param_1; + do { + uVar8 = *puVar7; + uVar17 = puVar7[1]; + puVar7 = puVar7 + 2; + *(undefined8 *)(lVar6 + lVar11 * 8) = uVar8; + *(undefined8 *)(lVar3 + lVar11 * 8) = uVar17; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar2); + uVar10 = iVar5 * 2 - 2; + } + uVar9 = (ulong)uVar2; + if (iVar5 <= (int)uVar2) { + return; + } + } + else { + uVar9 = 0; + uVar10 = 0; + if (iVar5 < 1) goto LAB_0026cd28; + } + uVar4 = -(uVar9 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + lVar11 = 0; + puVar7 = param_1 + (int)uVar10; + do { + *(undefined8 *)(lVar6 + uVar4 + lVar11 * 8) = *puVar7; + puVar1 = puVar7 + 1; + puVar7 = puVar7 + (int)param_4; + *(undefined8 *)(lVar3 + uVar4 + lVar11 * 8) = *puVar1; + lVar11 = lVar11 + 1; + } while ((int)uVar9 + (int)lVar11 < iVar5); + goto LAB_0026cd28; + } + if (iVar12 == 3) { + lVar6 = *param_2; + lVar3 = param_2[1]; + lVar11 = param_2[2]; + if (param_4 == 3) { + if (iVar5 < 1) { + return; + } + lVar13 = 0; + do { + uVar8 = *param_1; + uVar17 = param_1[1]; + uVar19 = param_1[2]; + param_1 = param_1 + 3; + *(undefined8 *)(lVar6 + lVar13 * 8) = uVar8; + *(undefined8 *)(lVar3 + lVar13 * 8) = uVar17; + *(undefined8 *)(lVar11 + lVar13 * 8) = uVar19; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < iVar5); + return; + } + lVar13 = 0; + puVar7 = param_1; + if (0 < iVar5) { + do { + *(undefined8 *)(lVar6 + lVar13 * 8) = *puVar7; + *(undefined8 *)(lVar3 + lVar13 * 8) = puVar7[1]; + puVar1 = puVar7 + 2; + puVar7 = puVar7 + (int)param_4; + *(undefined8 *)(lVar11 + lVar13 * 8) = *puVar1; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < iVar5); + } + goto LAB_0026cd28; + } + } + lVar6 = *param_2; + lVar3 = param_2[1]; + lVar11 = param_2[2]; + lVar13 = param_2[3]; + if (param_4 == 4) { + if (0 < iVar5) { + lVar14 = 0; + puVar7 = param_1; + do { + uVar8 = *puVar7; + uVar17 = puVar7[1]; + uVar19 = puVar7[2]; + uVar18 = puVar7[3]; + puVar7 = puVar7 + 4; + *(undefined8 *)(lVar6 + lVar14 * 8) = uVar8; + *(undefined8 *)(lVar3 + lVar14 * 8) = uVar17; + *(undefined8 *)(lVar11 + lVar14 * 8) = uVar19; + *(undefined8 *)(lVar13 + lVar14 * 8) = uVar18; + lVar14 = lVar14 + 1; + } while ((int)lVar14 < iVar5); + } + } + else if (0 < iVar5) { + lVar14 = 0; + puVar7 = param_1; + do { + *(undefined8 *)(lVar6 + lVar14 * 8) = *puVar7; + *(undefined8 *)(lVar3 + lVar14 * 8) = puVar7[1]; + *(undefined8 *)(lVar11 + lVar14 * 8) = puVar7[2]; + puVar1 = puVar7 + 3; + puVar7 = puVar7 + (int)param_4; + *(undefined8 *)(lVar13 + lVar14 * 8) = *puVar1; + lVar14 = lVar14 + 1; + } while ((int)lVar14 < iVar5); + } +LAB_0026cd28: + if (iVar12 < (int)param_4) { + lVar6 = (long)iVar12; + plVar16 = param_2 + lVar6; + param_1 = param_1 + lVar6; + do { + lVar15 = *plVar16; + lVar14 = plVar16[1]; + lVar13 = plVar16[2]; + lVar3 = 0; + lVar11 = plVar16[3]; + puVar7 = param_1; + if (0 < iVar5) { + do { + *(undefined8 *)(lVar15 + lVar3 * 8) = *puVar7; + *(undefined8 *)(lVar14 + lVar3 * 8) = puVar7[1]; + *(undefined8 *)(lVar13 + lVar3 * 8) = puVar7[2]; + puVar1 = puVar7 + 3; + puVar7 = puVar7 + (int)param_4; + *(undefined8 *)(lVar11 + lVar3 * 8) = *puVar1; + lVar3 = lVar3 + 1; + } while ((int)lVar3 < iVar5); + } + plVar16 = plVar16 + 4; + param_1 = param_1 + 4; + } while (plVar16 != param_2 + lVar6 + 4 + (ulong)((param_4 - 1) - iVar12 >> 2) * 4); + } + return; +} + + +================================================================== + +### FUNC 0026cf9c (996 bytes) name=FUN_0026cf9c + +void FUN_0026cf9c(undefined4 *param_1,long *param_2,ulong param_3,uint param_4) + +{ + uint uVar1; + undefined4 *puVar2; + void *__dest; + long lVar3; + ulong uVar4; + undefined4 *puVar5; + int iVar6; + long lVar7; + int iVar8; + ulong uVar9; + undefined8 *puVar10; + uint uVar11; + long lVar12; + int iVar13; + long lVar14; + long lVar15; + undefined8 *puVar16; + long lVar17; + undefined8 *puVar18; + long *plVar19; + undefined8 *puVar20; + undefined8 *puVar21; + undefined8 *puVar22; + undefined4 uVar23; + undefined4 uVar24; + undefined4 uVar25; + undefined4 uVar26; + undefined4 uVar27; + undefined4 uVar28; + undefined4 uVar29; + undefined4 uVar30; + undefined4 uVar31; + undefined4 uVar32; + undefined4 uVar33; + undefined4 uVar34; + undefined4 uVar35; + undefined4 uVar36; + undefined4 uVar37; + + iVar6 = (int)param_3; + if ((param_4 & 3) == 0) { + iVar13 = 4; + } + else { + iVar13 = (int)param_4 % 4; + if (iVar13 == 1) { + __dest = (void *)*param_2; + if (param_4 == 1) { + memcpy(__dest,param_1, + -(param_3 >> 0x1f & 1) & 0xfffffffc00000000 | (param_3 & 0xffffffff) << 2); + return; + } + lVar7 = 0; + puVar5 = param_1; + if (0 < iVar6) { + do { + uVar23 = *puVar5; + puVar5 = puVar5 + (int)param_4; + *(undefined4 *)((long)__dest + lVar7 * 4) = uVar23; + lVar7 = lVar7 + 1; + } while ((int)lVar7 < iVar6); + } + goto LAB_0026cffc; + } + if (iVar13 == 2) { + puVar18 = (undefined8 *)*param_2; + puVar16 = (undefined8 *)param_2[1]; + if (param_4 == 2) { + if (iVar6 < 5) { + uVar11 = 0; + uVar1 = uVar11; + } + else { + uVar11 = iVar6 - 5U >> 2; + puVar5 = param_1; + puVar20 = puVar16; + puVar10 = puVar18; + do { + uVar23 = *puVar5; + uVar26 = puVar5[1]; + uVar24 = puVar5[2]; + uVar27 = puVar5[3]; + puVar2 = puVar5 + 4; + uVar28 = puVar5[5]; + uVar25 = puVar5[6]; + uVar29 = puVar5[7]; + puVar5 = puVar5 + 8; + puVar10[1] = CONCAT17((char)((uint)uVar25 >> 0x18), + CONCAT16((char)((uint)uVar25 >> 0x10), + CONCAT15((char)((uint)uVar25 >> 8), + CONCAT14((char)uVar25,*puVar2)))); + *puVar10 = CONCAT17((char)((uint)uVar24 >> 0x18), + CONCAT16((char)((uint)uVar24 >> 0x10), + CONCAT15((char)((uint)uVar24 >> 8), + CONCAT14((char)uVar24,uVar23)))); + puVar20[1] = CONCAT17((char)((uint)uVar29 >> 0x18), + CONCAT16((char)((uint)uVar29 >> 0x10), + CONCAT15((char)((uint)uVar29 >> 8), + CONCAT14((char)uVar29,uVar28)))); + *puVar20 = CONCAT17((char)((uint)uVar27 >> 0x18), + CONCAT16((char)((uint)uVar27 >> 0x10), + CONCAT15((char)((uint)uVar27 >> 8), + CONCAT14((char)uVar27,uVar26)))); + puVar20 = puVar20 + 2; + puVar10 = puVar10 + 2; + } while (puVar5 != param_1 + ((ulong)uVar11 + 1) * 8); + iVar8 = uVar11 + 1; + uVar11 = iVar8 * 8; + uVar1 = iVar8 * 4; + } + uVar9 = (ulong)uVar1; + if (iVar6 <= (int)uVar1) { + return; + } + } + else { + uVar9 = 0; + uVar11 = 0; + if (iVar6 < 1) goto LAB_0026cffc; + } + uVar4 = -(uVar9 >> 0x1f) & 0xfffffffc00000000 | uVar9 << 2; + lVar7 = 0; + puVar5 = param_1 + (int)uVar11; + do { + *(undefined4 *)((long)puVar18 + lVar7 * 4 + uVar4) = *puVar5; + puVar2 = puVar5 + 1; + puVar5 = puVar5 + (int)param_4; + *(undefined4 *)((long)puVar16 + lVar7 * 4 + uVar4) = *puVar2; + lVar7 = lVar7 + 1; + } while ((int)uVar9 + (int)lVar7 < iVar6); + goto LAB_0026cffc; + } + if (iVar13 == 3) { + puVar18 = (undefined8 *)*param_2; + puVar20 = (undefined8 *)param_2[1]; + puVar16 = (undefined8 *)param_2[2]; + if (param_4 == 3) { + if (iVar6 < 4) { + uVar11 = 0; + uVar1 = uVar11; + } + else { + uVar11 = iVar6 - 4U >> 2; + puVar5 = param_1; + puVar10 = puVar16; + puVar21 = puVar20; + puVar22 = puVar18; + do { + uVar23 = *puVar5; + uVar26 = puVar5[1]; + uVar30 = puVar5[2]; + uVar24 = puVar5[3]; + uVar27 = puVar5[4]; + uVar31 = puVar5[5]; + puVar2 = puVar5 + 6; + uVar28 = puVar5[7]; + uVar32 = puVar5[8]; + uVar25 = puVar5[9]; + uVar29 = puVar5[10]; + uVar33 = puVar5[0xb]; + puVar5 = puVar5 + 0xc; + puVar22[1] = CONCAT17((char)((uint)uVar25 >> 0x18), + CONCAT16((char)((uint)uVar25 >> 0x10), + CONCAT15((char)((uint)uVar25 >> 8), + CONCAT14((char)uVar25,*puVar2)))); + *puVar22 = CONCAT17((char)((uint)uVar24 >> 0x18), + CONCAT16((char)((uint)uVar24 >> 0x10), + CONCAT15((char)((uint)uVar24 >> 8), + CONCAT14((char)uVar24,uVar23)))); + puVar21[1] = CONCAT17((char)((uint)uVar29 >> 0x18), + CONCAT16((char)((uint)uVar29 >> 0x10), + CONCAT15((char)((uint)uVar29 >> 8), + CONCAT14((char)uVar29,uVar28)))); + *puVar21 = CONCAT17((char)((uint)uVar27 >> 0x18), + CONCAT16((char)((uint)uVar27 >> 0x10), + CONCAT15((char)((uint)uVar27 >> 8), + CONCAT14((char)uVar27,uVar26)))); + puVar10[1] = CONCAT17((char)((uint)uVar33 >> 0x18), + CONCAT16((char)((uint)uVar33 >> 0x10), + CONCAT15((char)((uint)uVar33 >> 8), + CONCAT14((char)uVar33,uVar32)))); + *puVar10 = CONCAT17((char)((uint)uVar31 >> 0x18), + CONCAT16((char)((uint)uVar31 >> 0x10), + CONCAT15((char)((uint)uVar31 >> 8), + CONCAT14((char)uVar31,uVar30)))); + puVar10 = puVar10 + 2; + puVar21 = puVar21 + 2; + puVar22 = puVar22 + 2; + } while (puVar5 != param_1 + ((ulong)uVar11 + 1) * 0xc); + iVar8 = uVar11 + 1; + uVar11 = iVar8 * 0xc; + uVar1 = iVar8 * 4; + } + uVar9 = (ulong)uVar1; + if (iVar6 <= (int)uVar1) { + return; + } + } + else { + uVar9 = 0; + uVar11 = 0; + if (iVar6 < 1) goto LAB_0026cffc; + } + uVar4 = -(uVar9 >> 0x1f) & 0xfffffffc00000000 | uVar9 << 2; + lVar7 = 0; + puVar5 = param_1 + (int)uVar11; + do { + *(undefined4 *)((long)puVar18 + lVar7 * 4 + uVar4) = *puVar5; + *(undefined4 *)((long)puVar20 + lVar7 * 4 + uVar4) = puVar5[1]; + puVar2 = puVar5 + 2; + puVar5 = puVar5 + (int)param_4; + *(undefined4 *)((long)puVar16 + lVar7 * 4 + uVar4) = *puVar2; + lVar7 = lVar7 + 1; + } while ((int)uVar9 + (int)lVar7 < iVar6); + goto LAB_0026cffc; + } + } + lVar14 = *param_2; + lVar12 = param_2[1]; + lVar3 = param_2[2]; + lVar7 = param_2[3]; + if ((param_4 == 4) && (3 < iVar6)) { + uVar11 = iVar6 - 4U >> 2; + lVar15 = 0; + puVar5 = param_1; + do { + uVar23 = *puVar5; + uVar26 = puVar5[1]; + uVar30 = puVar5[2]; + uVar34 = puVar5[3]; + uVar24 = puVar5[4]; + uVar27 = puVar5[5]; + uVar31 = puVar5[6]; + uVar35 = puVar5[7]; + puVar2 = puVar5 + 8; + uVar28 = puVar5[9]; + uVar32 = puVar5[10]; + uVar36 = puVar5[0xb]; + uVar25 = puVar5[0xc]; + uVar29 = puVar5[0xd]; + uVar33 = puVar5[0xe]; + uVar37 = puVar5[0xf]; + puVar5 = puVar5 + 0x10; + puVar16 = (undefined8 *)(lVar14 + lVar15); + puVar18 = (undefined8 *)(lVar12 + lVar15); + puVar20 = (undefined8 *)(lVar3 + lVar15); + puVar10 = (undefined8 *)(lVar7 + lVar15); + lVar15 = lVar15 + 0x10; + puVar16[1] = CONCAT17((char)((uint)uVar25 >> 0x18), + CONCAT16((char)((uint)uVar25 >> 0x10), + CONCAT15((char)((uint)uVar25 >> 8), + CONCAT14((char)uVar25,*puVar2)))); + *puVar16 = CONCAT17((char)((uint)uVar24 >> 0x18), + CONCAT16((char)((uint)uVar24 >> 0x10), + CONCAT15((char)((uint)uVar24 >> 8),CONCAT14((char)uVar24,uVar23)) + )); + puVar18[1] = CONCAT17((char)((uint)uVar29 >> 0x18), + CONCAT16((char)((uint)uVar29 >> 0x10), + CONCAT15((char)((uint)uVar29 >> 8), + CONCAT14((char)uVar29,uVar28)))); + *puVar18 = CONCAT17((char)((uint)uVar27 >> 0x18), + CONCAT16((char)((uint)uVar27 >> 0x10), + CONCAT15((char)((uint)uVar27 >> 8),CONCAT14((char)uVar27,uVar26)) + )); + puVar20[1] = CONCAT17((char)((uint)uVar33 >> 0x18), + CONCAT16((char)((uint)uVar33 >> 0x10), + CONCAT15((char)((uint)uVar33 >> 8), + CONCAT14((char)uVar33,uVar32)))); + *puVar20 = CONCAT17((char)((uint)uVar31 >> 0x18), + CONCAT16((char)((uint)uVar31 >> 0x10), + CONCAT15((char)((uint)uVar31 >> 8),CONCAT14((char)uVar31,uVar30)) + )); + puVar10[1] = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37,uVar36)))); + *puVar10 = CONCAT17((char)((uint)uVar35 >> 0x18), + CONCAT16((char)((uint)uVar35 >> 0x10), + CONCAT15((char)((uint)uVar35 >> 8),CONCAT14((char)uVar35,uVar34)) + )); + } while (lVar15 != ((ulong)uVar11 + 1) * 0x10); + iVar8 = uVar11 + 1; + uVar9 = (ulong)(uint)(iVar8 * 4); + iVar8 = iVar8 * 0x10; + } + else { + iVar8 = 0; + uVar9 = 0; + } + if ((int)uVar9 < iVar6) { + uVar4 = -(uVar9 >> 0x1f) & 0xfffffffc00000000 | uVar9 << 2; + lVar15 = 0; + puVar5 = param_1 + iVar8; + do { + *(undefined4 *)(lVar14 + uVar4 + lVar15) = *puVar5; + *(undefined4 *)(lVar12 + uVar4 + lVar15) = puVar5[1]; + *(undefined4 *)(lVar3 + uVar4 + lVar15) = puVar5[2]; + puVar2 = puVar5 + 3; + puVar5 = puVar5 + (int)param_4; + *(undefined4 *)(lVar7 + uVar4 + lVar15) = *puVar2; + lVar15 = lVar15 + 4; + } while (lVar15 != ((ulong)(uint)((iVar6 + -1) - (int)uVar9) + 1) * 4); + } +LAB_0026cffc: + if (iVar13 < (int)param_4) { + lVar7 = (long)iVar13; + plVar19 = param_2 + lVar7; + param_1 = param_1 + lVar7; + do { + lVar17 = *plVar19; + lVar15 = plVar19[1]; + lVar14 = plVar19[2]; + lVar3 = 0; + lVar12 = plVar19[3]; + puVar5 = param_1; + if (0 < iVar6) { + do { + *(undefined4 *)(lVar17 + lVar3 * 4) = *puVar5; + *(undefined4 *)(lVar15 + lVar3 * 4) = puVar5[1]; + *(undefined4 *)(lVar14 + lVar3 * 4) = puVar5[2]; + puVar2 = puVar5 + 3; + puVar5 = puVar5 + (int)param_4; + *(undefined4 *)(lVar12 + lVar3 * 4) = *puVar2; + lVar3 = lVar3 + 1; + } while ((int)lVar3 < iVar6); + } + plVar19 = plVar19 + 4; + param_1 = param_1 + 4; + } while (plVar19 != param_2 + lVar7 + 4 + (ulong)((param_4 - 1) - iVar13 >> 2) * 4); + } + return; +} + + +================================================================== + +### FUNC 0026d380 name=FUN_0026d380 DECOMPILE FAILED + +### FUNC 0026d764 name=FUN_0026d764 DECOMPILE FAILED + +### FUNC 0026db3c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 0026db40 (972 bytes) name=FUN_0026db40 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0026db40(long *param_1,undefined8 *param_2,int param_3,uint param_4) + +{ + long lVar1; + undefined8 *puVar2; + ulong uVar3; + int iVar4; + long lVar5; + undefined8 *puVar6; + long lVar7; + uint uVar8; + uint uVar9; + long lVar10; + undefined8 uVar11; + int iVar12; + long lVar13; + long lVar14; + long lVar15; + ulong uVar16; + undefined8 uVar17; + long *plVar18; + undefined8 uVar19; + + if ((param_4 & 3) == 0) { + iVar12 = 4; + } + else { + iVar12 = (int)param_4 % 4; + if (iVar12 == 1) { + lVar5 = *param_1; + lVar7 = 0; + puVar6 = param_2; + if (0 < param_3) { + do { + lVar10 = lVar7 * 8; + lVar7 = lVar7 + 1; + *puVar6 = *(undefined8 *)(lVar5 + lVar10); + puVar6 = puVar6 + (int)param_4; + } while ((int)lVar7 < param_3); + } + goto LAB_0026db94; + } + if (iVar12 == 2) { + lVar7 = *param_1; + lVar5 = param_1[1]; + if (param_4 == 2) { + uVar8 = param_3 - 1; + if ((int)uVar8 < 1) { + uVar9 = 0; + uVar8 = uVar9; + } + else { + lVar10 = 0; + puVar6 = param_2; + do { + lVar13 = lVar10 * 8; + uVar11 = *(undefined8 *)(lVar5 + lVar10 * 8); + lVar10 = lVar10 + 1; + *puVar6 = *(undefined8 *)(lVar7 + lVar13); + puVar6[1] = uVar11; + puVar6 = puVar6 + 2; + } while ((int)lVar10 < (int)uVar8); + uVar9 = param_3 * 2 - 2; + } + uVar16 = (ulong)uVar8; + if (param_3 <= (int)uVar8) { + return; + } + } + else { + uVar9 = 0; + uVar16 = 0; + if (param_3 < 1) goto LAB_0026db94; + } + uVar3 = -(uVar16 >> 0x1f) & 0xfffffff800000000 | uVar16 << 3; + lVar10 = 0; + puVar6 = param_2 + (int)uVar9; + do { + *puVar6 = *(undefined8 *)(lVar7 + uVar3 + lVar10 * 8); + lVar13 = lVar10 * 8; + lVar10 = lVar10 + 1; + puVar6[1] = *(undefined8 *)(lVar5 + uVar3 + lVar13); + puVar6 = puVar6 + (int)param_4; + } while ((int)uVar16 + (int)lVar10 < param_3); + goto LAB_0026db94; + } + if (iVar12 == 3) { + lVar5 = *param_1; + lVar10 = param_1[1]; + lVar7 = param_1[2]; + if (param_4 == 3) { + if (param_3 < 2) { + uVar8 = 0; + uVar9 = uVar8; + } + else { + lVar13 = 0; + puVar6 = param_2; + do { + puVar2 = (undefined8 *)(lVar5 + lVar13); + uVar17 = *(undefined8 *)(lVar10 + lVar13); + uVar11 = *(undefined8 *)(lVar7 + lVar13); + lVar13 = lVar13 + 8; + *puVar6 = *puVar2; + puVar6[1] = uVar17; + puVar6[2] = uVar11; + puVar6 = puVar6 + 3; + } while (lVar13 != ((ulong)(param_3 - 2) + 1) * 8); + uVar8 = param_3 * 3 - 3; + uVar9 = param_3 - 1; + } + uVar16 = (ulong)uVar9; + if (param_3 <= (int)uVar9) { + return; + } + } + else { + uVar16 = 0; + uVar8 = 0; + if (param_3 < 1) goto LAB_0026db94; + } + uVar3 = -(uVar16 >> 0x1f) & 0xfffffff800000000 | uVar16 << 3; + lVar13 = 0; + puVar6 = param_2 + (int)uVar8; + do { + *puVar6 = *(undefined8 *)(lVar5 + uVar3 + lVar13 * 8); + puVar6[1] = *(undefined8 *)(lVar10 + uVar3 + lVar13 * 8); + lVar14 = lVar13 * 8; + lVar13 = lVar13 + 1; + puVar6[2] = *(undefined8 *)(lVar7 + uVar3 + lVar14); + puVar6 = puVar6 + (int)param_4; + } while ((int)uVar16 + (int)lVar13 < param_3); + goto LAB_0026db94; + } + } + lVar13 = *param_1; + lVar10 = param_1[1]; + lVar5 = param_1[2]; + lVar7 = param_1[3]; + if ((param_4 == 4) && (uVar8 = param_3 - 1, 0 < (int)uVar8)) { + lVar14 = 0; + puVar6 = param_2; + do { + lVar15 = lVar14 * 8; + uVar19 = *(undefined8 *)(lVar10 + lVar14 * 8); + uVar17 = *(undefined8 *)(lVar5 + lVar14 * 8); + uVar11 = *(undefined8 *)(lVar7 + lVar14 * 8); + lVar14 = lVar14 + 1; + *puVar6 = *(undefined8 *)(lVar13 + lVar15); + puVar6[1] = uVar19; + puVar6[2] = uVar17; + puVar6[3] = uVar11; + puVar6 = puVar6 + 4; + } while ((int)lVar14 < (int)uVar8); + uVar16 = (ulong)uVar8; + iVar4 = param_3 * 4 + -4; + } + else { + iVar4 = 0; + uVar16 = 0; + } + if ((int)uVar16 < param_3) { + uVar3 = -(uVar16 >> 0x1f) & 0xfffffff800000000 | uVar16 << 3; + lVar14 = 0; + puVar6 = param_2 + iVar4; + do { + *puVar6 = *(undefined8 *)(lVar13 + uVar3 + lVar14); + puVar6[1] = *(undefined8 *)(lVar10 + uVar3 + lVar14); + puVar6[2] = *(undefined8 *)(lVar5 + uVar3 + lVar14); + puVar2 = (undefined8 *)(lVar7 + uVar3 + lVar14); + lVar14 = lVar14 + 8; + puVar6[3] = *puVar2; + puVar6 = puVar6 + (int)param_4; + } while (lVar14 != ((ulong)(uint)((param_3 + -1) - (int)uVar16) + 1) * 8); + } +LAB_0026db94: + if (iVar12 < (int)param_4) { + lVar7 = (long)iVar12; + plVar18 = param_1 + lVar7; + param_2 = param_2 + lVar7; + do { + lVar15 = *plVar18; + lVar14 = plVar18[1]; + lVar13 = plVar18[2]; + lVar5 = 0; + lVar10 = plVar18[3]; + puVar6 = param_2; + if (0 < param_3) { + do { + *puVar6 = *(undefined8 *)(lVar15 + lVar5 * 8); + puVar6[1] = *(undefined8 *)(lVar14 + lVar5 * 8); + puVar6[2] = *(undefined8 *)(lVar13 + lVar5 * 8); + lVar1 = lVar5 * 8; + lVar5 = lVar5 + 1; + puVar6[3] = *(undefined8 *)(lVar10 + lVar1); + puVar6 = puVar6 + (int)param_4; + } while ((int)lVar5 < param_3); + } + plVar18 = plVar18 + 4; + param_2 = param_2 + 4; + } while (plVar18 != param_1 + lVar7 + 4 + (ulong)((param_4 - 1) - iVar12 >> 2) * 4); + } + return; +} + + +================================================================== + +### FUNC 0026dfa0 (1084 bytes) name=FUN_0026dfa0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0026dfa0(long *param_1,undefined4 *param_2,int param_3,uint param_4) + +{ + long lVar1; + undefined4 *puVar2; + uint uVar3; + ulong uVar4; + int iVar5; + long lVar6; + ulong uVar7; + undefined4 *puVar8; + long lVar9; + undefined8 *puVar10; + uint uVar11; + long lVar12; + int iVar13; + long lVar14; + long lVar15; + undefined8 *puVar16; + long lVar17; + undefined8 *puVar18; + long *plVar19; + undefined8 *puVar20; + undefined8 *puVar21; + undefined8 *puVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined8 uVar25; + undefined8 uVar26; + undefined8 uVar27; + undefined8 uVar28; + undefined8 uVar29; + undefined8 uVar30; + undefined4 local_30; + undefined4 uStack_2c; + undefined4 uStack_28; + undefined4 uStack_24; + undefined4 local_20; + undefined4 uStack_1c; + undefined4 uStack_18; + undefined4 uStack_14; + undefined4 local_10; + undefined4 uStack_c; + undefined4 uStack_8; + undefined4 uStack_4; + + if ((param_4 & 3) == 0) { + iVar13 = 4; + } + else { + iVar13 = (int)param_4 % 4; + if (iVar13 == 1) { + lVar6 = *param_1; + lVar9 = 0; + puVar8 = param_2; + if (0 < param_3) { + do { + lVar12 = lVar9 * 4; + lVar9 = lVar9 + 1; + *puVar8 = *(undefined4 *)(lVar6 + lVar12); + puVar8 = puVar8 + (int)param_4; + } while ((int)lVar9 < param_3); + } + goto LAB_0026e000; + } + if (iVar13 == 2) { + puVar20 = (undefined8 *)*param_1; + puVar18 = (undefined8 *)param_1[1]; + if (param_4 == 2) { + if (param_3 < 5) { + uVar11 = 0; + uVar3 = uVar11; + } + else { + uVar11 = param_3 - 5U >> 2; + puVar21 = puVar20; + puVar8 = param_2; + puVar10 = puVar18; + do { + puVar16 = puVar21 + 2; + uVar24 = puVar21[1]; + uVar23 = *puVar21; + local_30 = (undefined4)*puVar10; + uStack_2c = (undefined4)((ulong)*puVar10 >> 0x20); + uStack_28 = (undefined4)puVar10[1]; + uStack_24 = (undefined4)((ulong)puVar10[1] >> 0x20); + *puVar8 = (int)uVar23; + puVar8[1] = local_30; + puVar8[2] = (int)((ulong)uVar23 >> 0x20); + puVar8[3] = uStack_2c; + puVar8[4] = (int)uVar24; + puVar8[5] = uStack_28; + puVar8[6] = (int)((ulong)uVar24 >> 0x20); + puVar8[7] = uStack_24; + puVar8 = puVar8 + 8; + puVar21 = puVar16; + puVar10 = puVar10 + 2; + } while (puVar16 != puVar20 + ((ulong)uVar11 + 1) * 2); + iVar5 = uVar11 + 1; + uVar11 = iVar5 * 8; + uVar3 = iVar5 * 4; + } + uVar4 = (ulong)uVar3; + if (param_3 <= (int)uVar3) { + return; + } + } + else { + uVar11 = 0; + uVar4 = 0; + if (param_3 < 1) goto LAB_0026e000; + } + uVar7 = -(uVar4 >> 0x1f) & 0xfffffffc00000000 | uVar4 << 2; + lVar9 = 0; + puVar8 = param_2 + (int)uVar11; + do { + *puVar8 = *(undefined4 *)((long)puVar20 + lVar9 * 4 + uVar7); + lVar6 = lVar9 * 4; + lVar9 = lVar9 + 1; + puVar8[1] = *(undefined4 *)((long)puVar18 + lVar6 + uVar7); + puVar8 = puVar8 + (int)param_4; + } while ((int)uVar4 + (int)lVar9 < param_3); + goto LAB_0026e000; + } + if (iVar13 == 3) { + puVar20 = (undefined8 *)*param_1; + puVar21 = (undefined8 *)param_1[1]; + puVar18 = (undefined8 *)param_1[2]; + if (param_4 == 3) { + if (param_3 < 5) { + uVar11 = 0; + uVar3 = uVar11; + } + else { + uVar11 = param_3 - 5U >> 2; + puVar8 = param_2; + puVar10 = puVar18; + puVar16 = puVar21; + puVar22 = puVar20; + do { + uVar24 = puVar22[1]; + uVar23 = *puVar22; + local_30 = (undefined4)*puVar16; + uStack_2c = (undefined4)((ulong)*puVar16 >> 0x20); + uStack_28 = (undefined4)puVar16[1]; + uStack_24 = (undefined4)((ulong)puVar16[1] >> 0x20); + local_20 = (undefined4)*puVar10; + uStack_1c = (undefined4)((ulong)*puVar10 >> 0x20); + uStack_18 = (undefined4)puVar10[1]; + uStack_14 = (undefined4)((ulong)puVar10[1] >> 0x20); + *puVar8 = (int)uVar23; + puVar8[1] = local_30; + puVar8[2] = local_20; + puVar8[3] = (int)((ulong)uVar23 >> 0x20); + puVar8[4] = uStack_2c; + puVar8[5] = uStack_1c; + puVar8[6] = (int)uVar24; + puVar8[7] = uStack_28; + puVar8[8] = uStack_18; + puVar8[9] = (int)((ulong)uVar24 >> 0x20); + puVar8[10] = uStack_24; + puVar8[0xb] = uStack_14; + puVar8 = puVar8 + 0xc; + puVar10 = puVar10 + 2; + puVar16 = puVar16 + 2; + puVar22 = puVar22 + 2; + } while (puVar8 != param_2 + ((ulong)uVar11 + 1) * 0xc); + iVar5 = uVar11 + 1; + uVar11 = iVar5 * 0xc; + uVar3 = iVar5 * 4; + } + uVar4 = (ulong)uVar3; + if (param_3 <= (int)uVar3) { + return; + } + } + else { + uVar4 = 0; + uVar11 = 0; + if (param_3 < 1) goto LAB_0026e000; + } + uVar7 = -(uVar4 >> 0x1f) & 0xfffffffc00000000 | uVar4 << 2; + lVar9 = 0; + puVar8 = param_2 + (int)uVar11; + do { + *puVar8 = *(undefined4 *)((long)puVar20 + lVar9 * 4 + uVar7); + puVar8[1] = *(undefined4 *)((long)puVar21 + lVar9 * 4 + uVar7); + lVar6 = lVar9 * 4; + lVar9 = lVar9 + 1; + puVar8[2] = *(undefined4 *)((long)puVar18 + lVar6 + uVar7); + puVar8 = puVar8 + (int)param_4; + } while ((int)uVar4 + (int)lVar9 < param_3); + goto LAB_0026e000; + } + } + lVar12 = *param_1; + lVar6 = param_1[1]; + lVar9 = param_1[2]; + lVar14 = param_1[3]; + if ((param_4 == 4) && (4 < param_3)) { + uVar11 = param_3 - 5U >> 2; + lVar15 = 0; + puVar8 = param_2; + do { + puVar18 = (undefined8 *)(lVar12 + lVar15); + puVar20 = (undefined8 *)(lVar6 + lVar15); + puVar21 = (undefined8 *)(lVar9 + lVar15); + uVar27 = puVar18[1]; + uVar23 = *puVar18; + puVar18 = (undefined8 *)(lVar14 + lVar15); + lVar15 = lVar15 + 0x10; + uVar28 = puVar20[1]; + uVar24 = *puVar20; + uVar29 = puVar21[1]; + uVar25 = *puVar21; + uVar30 = puVar18[1]; + uVar26 = *puVar18; + local_30 = (undefined4)uVar24; + uStack_2c = (undefined4)((ulong)uVar24 >> 0x20); + uStack_28 = (undefined4)uVar28; + uStack_24 = (undefined4)((ulong)uVar28 >> 0x20); + local_20 = (undefined4)uVar25; + uStack_1c = (undefined4)((ulong)uVar25 >> 0x20); + uStack_18 = (undefined4)uVar29; + uStack_14 = (undefined4)((ulong)uVar29 >> 0x20); + local_10 = (undefined4)uVar26; + uStack_c = (undefined4)((ulong)uVar26 >> 0x20); + uStack_8 = (undefined4)uVar30; + uStack_4 = (undefined4)((ulong)uVar30 >> 0x20); + *puVar8 = (int)uVar23; + puVar8[1] = local_30; + puVar8[2] = local_20; + puVar8[3] = local_10; + puVar8[4] = (int)((ulong)uVar23 >> 0x20); + puVar8[5] = uStack_2c; + puVar8[6] = uStack_1c; + puVar8[7] = uStack_c; + puVar8[8] = (int)uVar27; + puVar8[9] = uStack_28; + puVar8[10] = uStack_18; + puVar8[0xb] = uStack_8; + puVar8[0xc] = (int)((ulong)uVar27 >> 0x20); + puVar8[0xd] = uStack_24; + puVar8[0xe] = uStack_14; + puVar8[0xf] = uStack_4; + puVar8 = puVar8 + 0x10; + } while (lVar15 != ((ulong)uVar11 + 1) * 0x10); + iVar5 = uVar11 + 1; + uVar4 = (ulong)(uint)(iVar5 * 4); + iVar5 = iVar5 * 0x10; + } + else { + iVar5 = 0; + uVar4 = 0; + } + if ((int)uVar4 < param_3) { + uVar7 = -(uVar4 >> 0x1f) & 0xfffffffc00000000 | uVar4 << 2; + lVar15 = 0; + puVar8 = param_2 + iVar5; + do { + *puVar8 = *(undefined4 *)(lVar12 + uVar7 + lVar15); + puVar8[1] = *(undefined4 *)(lVar6 + uVar7 + lVar15); + puVar8[2] = *(undefined4 *)(lVar9 + uVar7 + lVar15); + puVar2 = (undefined4 *)(lVar14 + uVar7 + lVar15); + lVar15 = lVar15 + 4; + puVar8[3] = *puVar2; + puVar8 = puVar8 + (int)param_4; + } while (lVar15 != ((ulong)(uint)((param_3 + -1) - (int)uVar4) + 1) * 4); + } +LAB_0026e000: + if (iVar13 < (int)param_4) { + lVar9 = (long)iVar13; + plVar19 = param_1 + lVar9; + param_2 = param_2 + lVar9; + do { + lVar17 = *plVar19; + lVar15 = plVar19[1]; + lVar14 = plVar19[2]; + lVar6 = 0; + lVar12 = plVar19[3]; + puVar8 = param_2; + if (0 < param_3) { + do { + *puVar8 = *(undefined4 *)(lVar17 + lVar6 * 4); + puVar8[1] = *(undefined4 *)(lVar15 + lVar6 * 4); + puVar8[2] = *(undefined4 *)(lVar14 + lVar6 * 4); + lVar1 = lVar6 * 4; + lVar6 = lVar6 + 1; + puVar8[3] = *(undefined4 *)(lVar12 + lVar1); + puVar8 = puVar8 + (int)param_4; + } while ((int)lVar6 < param_3); + } + plVar19 = plVar19 + 4; + param_2 = param_2 + 4; + } while (plVar19 != param_1 + lVar9 + 4 + (ulong)((param_4 - 1) - iVar13 >> 2) * 4); + } + return; +} + + +================================================================== + +### FUNC 0026e470 (1084 bytes) name=FUN_0026e470 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0026e470(long *param_1,undefined2 *param_2,int param_3,uint param_4) + +{ + long lVar1; + undefined2 *puVar2; + uint uVar3; + ulong uVar4; + int iVar5; + long lVar6; + ulong uVar7; + undefined2 *puVar8; + long lVar9; + undefined8 *puVar10; + uint uVar11; + long lVar12; + int iVar13; + long lVar14; + long lVar15; + undefined8 *puVar16; + long lVar17; + undefined8 *puVar18; + long *plVar19; + undefined8 *puVar20; + undefined8 *puVar21; + undefined8 *puVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined8 uVar25; + undefined8 uVar26; + undefined8 uVar27; + undefined8 uVar28; + undefined8 uVar29; + undefined8 uVar30; + undefined2 local_30; + undefined2 uStack_2e; + undefined2 uStack_2c; + undefined2 uStack_2a; + undefined2 uStack_28; + undefined2 uStack_26; + undefined2 uStack_24; + undefined2 uStack_22; + undefined2 local_20; + undefined2 uStack_1e; + undefined2 uStack_1c; + undefined2 uStack_1a; + undefined2 uStack_18; + undefined2 uStack_16; + undefined2 uStack_14; + undefined2 uStack_12; + undefined2 local_10; + undefined2 uStack_e; + undefined2 uStack_c; + undefined2 uStack_a; + undefined2 uStack_8; + undefined2 uStack_6; + undefined2 uStack_4; + undefined2 uStack_2; + + if ((param_4 & 3) == 0) { + iVar13 = 4; + } + else { + iVar13 = (int)param_4 % 4; + if (iVar13 == 1) { + lVar6 = *param_1; + lVar9 = 0; + puVar8 = param_2; + if (0 < param_3) { + do { + lVar12 = lVar9 * 2; + lVar9 = lVar9 + 1; + *puVar8 = *(undefined2 *)(lVar6 + lVar12); + puVar8 = puVar8 + (int)param_4; + } while ((int)lVar9 < param_3); + } + goto LAB_0026e4d0; + } + if (iVar13 == 2) { + puVar20 = (undefined8 *)*param_1; + puVar18 = (undefined8 *)param_1[1]; + if (param_4 == 2) { + if (param_3 < 9) { + uVar11 = 0; + uVar3 = uVar11; + } + else { + uVar11 = param_3 - 9U >> 3; + puVar21 = puVar20; + puVar8 = param_2; + puVar10 = puVar18; + do { + puVar16 = puVar21 + 2; + uVar25 = puVar21[1]; + uVar23 = *puVar21; + uVar26 = puVar10[1]; + uVar24 = *puVar10; + local_30 = (undefined2)uVar24; + uStack_2e = (undefined2)((ulong)uVar24 >> 0x10); + uStack_2c = (undefined2)((ulong)uVar24 >> 0x20); + uStack_2a = (undefined2)((ulong)uVar24 >> 0x30); + uStack_28 = (undefined2)uVar26; + uStack_26 = (undefined2)((ulong)uVar26 >> 0x10); + uStack_24 = (undefined2)((ulong)uVar26 >> 0x20); + uStack_22 = (undefined2)((ulong)uVar26 >> 0x30); + *puVar8 = (short)uVar23; + puVar8[1] = local_30; + puVar8[2] = (short)((ulong)uVar23 >> 0x10); + puVar8[3] = uStack_2e; + puVar8[4] = (short)((ulong)uVar23 >> 0x20); + puVar8[5] = uStack_2c; + puVar8[6] = (short)((ulong)uVar23 >> 0x30); + puVar8[7] = uStack_2a; + puVar8[8] = (short)uVar25; + puVar8[9] = uStack_28; + puVar8[10] = (short)((ulong)uVar25 >> 0x10); + puVar8[0xb] = uStack_26; + puVar8[0xc] = (short)((ulong)uVar25 >> 0x20); + puVar8[0xd] = uStack_24; + puVar8[0xe] = (short)((ulong)uVar25 >> 0x30); + puVar8[0xf] = uStack_22; + puVar8 = puVar8 + 0x10; + puVar21 = puVar16; + puVar10 = puVar10 + 2; + } while (puVar16 != puVar20 + ((ulong)uVar11 + 1) * 2); + iVar5 = uVar11 + 1; + uVar11 = iVar5 * 0x10; + uVar3 = iVar5 * 8; + } + uVar4 = (ulong)uVar3; + if (param_3 <= (int)uVar3) { + return; + } + } + else { + uVar11 = 0; + uVar4 = 0; + if (param_3 < 1) goto LAB_0026e4d0; + } + uVar7 = -(uVar4 >> 0x1f) & 0xfffffffe00000000 | uVar4 << 1; + lVar9 = 0; + puVar8 = param_2 + (int)uVar11; + do { + *puVar8 = *(undefined2 *)((long)puVar20 + lVar9 * 2 + uVar7); + lVar6 = lVar9 * 2; + lVar9 = lVar9 + 1; + puVar8[1] = *(undefined2 *)((long)puVar18 + lVar6 + uVar7); + puVar8 = puVar8 + (int)param_4; + } while ((int)uVar4 + (int)lVar9 < param_3); + goto LAB_0026e4d0; + } + if (iVar13 == 3) { + puVar20 = (undefined8 *)*param_1; + puVar21 = (undefined8 *)param_1[1]; + puVar18 = (undefined8 *)param_1[2]; + if (param_4 == 3) { + if (param_3 < 9) { + uVar11 = 0; + uVar3 = uVar11; + } + else { + uVar11 = param_3 - 9U >> 3; + puVar8 = param_2; + puVar10 = puVar18; + puVar16 = puVar21; + puVar22 = puVar20; + do { + uVar26 = puVar22[1]; + uVar23 = *puVar22; + uVar27 = puVar16[1]; + uVar24 = *puVar16; + uVar28 = puVar10[1]; + uVar25 = *puVar10; + local_30 = (undefined2)uVar24; + uStack_2e = (undefined2)((ulong)uVar24 >> 0x10); + uStack_2c = (undefined2)((ulong)uVar24 >> 0x20); + uStack_2a = (undefined2)((ulong)uVar24 >> 0x30); + uStack_28 = (undefined2)uVar27; + uStack_26 = (undefined2)((ulong)uVar27 >> 0x10); + uStack_24 = (undefined2)((ulong)uVar27 >> 0x20); + uStack_22 = (undefined2)((ulong)uVar27 >> 0x30); + local_20 = (undefined2)uVar25; + uStack_1e = (undefined2)((ulong)uVar25 >> 0x10); + uStack_1c = (undefined2)((ulong)uVar25 >> 0x20); + uStack_1a = (undefined2)((ulong)uVar25 >> 0x30); + uStack_18 = (undefined2)uVar28; + uStack_16 = (undefined2)((ulong)uVar28 >> 0x10); + uStack_14 = (undefined2)((ulong)uVar28 >> 0x20); + uStack_12 = (undefined2)((ulong)uVar28 >> 0x30); + *puVar8 = (short)uVar23; + puVar8[1] = local_30; + puVar8[2] = local_20; + puVar8[3] = (short)((ulong)uVar23 >> 0x10); + puVar8[4] = uStack_2e; + puVar8[5] = uStack_1e; + puVar8[6] = (short)((ulong)uVar23 >> 0x20); + puVar8[7] = uStack_2c; + puVar8[8] = uStack_1c; + puVar8[9] = (short)((ulong)uVar23 >> 0x30); + puVar8[10] = uStack_2a; + puVar8[0xb] = uStack_1a; + puVar8[0xc] = (short)uVar26; + puVar8[0xd] = uStack_28; + puVar8[0xe] = uStack_18; + puVar8[0xf] = (short)((ulong)uVar26 >> 0x10); + puVar8[0x10] = uStack_26; + puVar8[0x11] = uStack_16; + puVar8[0x12] = (short)((ulong)uVar26 >> 0x20); + puVar8[0x13] = uStack_24; + puVar8[0x14] = uStack_14; + puVar8[0x15] = (short)((ulong)uVar26 >> 0x30); + puVar8[0x16] = uStack_22; + puVar8[0x17] = uStack_12; + puVar8 = puVar8 + 0x18; + puVar10 = puVar10 + 2; + puVar16 = puVar16 + 2; + puVar22 = puVar22 + 2; + } while (puVar8 != param_2 + ((ulong)uVar11 + 1) * 0x18); + iVar5 = uVar11 + 1; + uVar11 = iVar5 * 0x18; + uVar3 = iVar5 * 8; + } + uVar4 = (ulong)uVar3; + if (param_3 <= (int)uVar3) { + return; + } + } + else { + uVar4 = 0; + uVar11 = 0; + if (param_3 < 1) goto LAB_0026e4d0; + } + uVar7 = -(uVar4 >> 0x1f) & 0xfffffffe00000000 | uVar4 << 1; + lVar9 = 0; + puVar8 = param_2 + (int)uVar11; + do { + *puVar8 = *(undefined2 *)((long)puVar20 + lVar9 * 2 + uVar7); + puVar8[1] = *(undefined2 *)((long)puVar21 + lVar9 * 2 + uVar7); + lVar6 = lVar9 * 2; + lVar9 = lVar9 + 1; + puVar8[2] = *(undefined2 *)((long)puVar18 + lVar6 + uVar7); + puVar8 = puVar8 + (int)param_4; + } while ((int)uVar4 + (int)lVar9 < param_3); + goto LAB_0026e4d0; + } + } + lVar12 = *param_1; + lVar6 = param_1[1]; + lVar9 = param_1[2]; + lVar14 = param_1[3]; + if ((param_4 == 4) && (8 < param_3)) { + uVar11 = param_3 - 9U >> 3; + lVar15 = 0; + puVar8 = param_2; + do { + puVar18 = (undefined8 *)(lVar12 + lVar15); + puVar20 = (undefined8 *)(lVar6 + lVar15); + puVar21 = (undefined8 *)(lVar9 + lVar15); + uVar27 = puVar18[1]; + uVar23 = *puVar18; + puVar18 = (undefined8 *)(lVar14 + lVar15); + lVar15 = lVar15 + 0x10; + uVar28 = puVar20[1]; + uVar24 = *puVar20; + uVar29 = puVar21[1]; + uVar25 = *puVar21; + uVar30 = puVar18[1]; + uVar26 = *puVar18; + local_30 = (undefined2)uVar24; + uStack_2e = (undefined2)((ulong)uVar24 >> 0x10); + uStack_2c = (undefined2)((ulong)uVar24 >> 0x20); + uStack_2a = (undefined2)((ulong)uVar24 >> 0x30); + uStack_28 = (undefined2)uVar28; + uStack_26 = (undefined2)((ulong)uVar28 >> 0x10); + uStack_24 = (undefined2)((ulong)uVar28 >> 0x20); + uStack_22 = (undefined2)((ulong)uVar28 >> 0x30); + local_20 = (undefined2)uVar25; + uStack_1e = (undefined2)((ulong)uVar25 >> 0x10); + uStack_1c = (undefined2)((ulong)uVar25 >> 0x20); + uStack_1a = (undefined2)((ulong)uVar25 >> 0x30); + uStack_18 = (undefined2)uVar29; + uStack_16 = (undefined2)((ulong)uVar29 >> 0x10); + uStack_14 = (undefined2)((ulong)uVar29 >> 0x20); + uStack_12 = (undefined2)((ulong)uVar29 >> 0x30); + local_10 = (undefined2)uVar26; + uStack_e = (undefined2)((ulong)uVar26 >> 0x10); + uStack_c = (undefined2)((ulong)uVar26 >> 0x20); + uStack_a = (undefined2)((ulong)uVar26 >> 0x30); + uStack_8 = (undefined2)uVar30; + uStack_6 = (undefined2)((ulong)uVar30 >> 0x10); + uStack_4 = (undefined2)((ulong)uVar30 >> 0x20); + uStack_2 = (undefined2)((ulong)uVar30 >> 0x30); + *puVar8 = (short)uVar23; + puVar8[1] = local_30; + puVar8[2] = local_20; + puVar8[3] = local_10; + puVar8[4] = (short)((ulong)uVar23 >> 0x10); + puVar8[5] = uStack_2e; + puVar8[6] = uStack_1e; + puVar8[7] = uStack_e; + puVar8[8] = (short)((ulong)uVar23 >> 0x20); + puVar8[9] = uStack_2c; + puVar8[10] = uStack_1c; + puVar8[0xb] = uStack_c; + puVar8[0xc] = (short)((ulong)uVar23 >> 0x30); + puVar8[0xd] = uStack_2a; + puVar8[0xe] = uStack_1a; + puVar8[0xf] = uStack_a; + puVar8[0x10] = (short)uVar27; + puVar8[0x11] = uStack_28; + puVar8[0x12] = uStack_18; + puVar8[0x13] = uStack_8; + puVar8[0x14] = (short)((ulong)uVar27 >> 0x10); + puVar8[0x15] = uStack_26; + puVar8[0x16] = uStack_16; + puVar8[0x17] = uStack_6; + puVar8[0x18] = (short)((ulong)uVar27 >> 0x20); + puVar8[0x19] = uStack_24; + puVar8[0x1a] = uStack_14; + puVar8[0x1b] = uStack_4; + puVar8[0x1c] = (short)((ulong)uVar27 >> 0x30); + puVar8[0x1d] = uStack_22; + puVar8[0x1e] = uStack_12; + puVar8[0x1f] = uStack_2; + puVar8 = puVar8 + 0x20; + } while (lVar15 != ((ulong)uVar11 + 1) * 0x10); + iVar5 = uVar11 + 1; + uVar4 = (ulong)(uint)(iVar5 * 8); + iVar5 = iVar5 * 0x20; + } + else { + iVar5 = 0; + uVar4 = 0; + } + if ((int)uVar4 < param_3) { + uVar7 = -(uVar4 >> 0x1f) & 0xfffffffe00000000 | uVar4 << 1; + lVar15 = 0; + puVar8 = param_2 + iVar5; + do { + *puVar8 = *(undefined2 *)(lVar12 + uVar7 + lVar15); + puVar8[1] = *(undefined2 *)(lVar6 + uVar7 + lVar15); + puVar8[2] = *(undefined2 *)(lVar9 + uVar7 + lVar15); + puVar2 = (undefined2 *)(lVar14 + uVar7 + lVar15); + lVar15 = lVar15 + 2; + puVar8[3] = *puVar2; + puVar8 = puVar8 + (int)param_4; + } while (lVar15 != ((ulong)(uint)((param_3 + -1) - (int)uVar4) + 1) * 2); + } +LAB_0026e4d0: + if (iVar13 < (int)param_4) { + lVar9 = (long)iVar13; + plVar19 = param_1 + lVar9; + param_2 = param_2 + lVar9; + do { + lVar17 = *plVar19; + lVar15 = plVar19[1]; + lVar14 = plVar19[2]; + lVar6 = 0; + lVar12 = plVar19[3]; + puVar8 = param_2; + if (0 < param_3) { + do { + *puVar8 = *(undefined2 *)(lVar17 + lVar6 * 2); + puVar8[1] = *(undefined2 *)(lVar15 + lVar6 * 2); + puVar8[2] = *(undefined2 *)(lVar14 + lVar6 * 2); + lVar1 = lVar6 * 2; + lVar6 = lVar6 + 1; + puVar8[3] = *(undefined2 *)(lVar12 + lVar1); + puVar8 = puVar8 + (int)param_4; + } while ((int)lVar6 < param_3); + } + plVar19 = plVar19 + 4; + param_2 = param_2 + 4; + } while (plVar19 != param_1 + lVar9 + 4 + (ulong)((param_4 - 1) - iVar13 >> 2) * 4); + } + return; +} + + +================================================================== + +### FUNC 0026e940 (1132 bytes) name=FUN_0026e940 + +void FUN_0026e940(long *param_1,undefined1 *param_2,int param_3,uint param_4) + +{ + undefined1 *puVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined1 *puVar5; + long lVar6; + undefined1 *puVar7; + int iVar8; + long lVar9; + long lVar10; + long lVar11; + long lVar12; + int iVar13; + long lVar14; + int iVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + undefined8 uVar23; + undefined1 local_30; + undefined1 uStack_2f; + undefined1 uStack_2e; + undefined1 uStack_2d; + undefined1 uStack_2c; + undefined1 uStack_2b; + undefined1 uStack_2a; + undefined1 uStack_29; + undefined1 uStack_28; + undefined1 uStack_27; + undefined1 uStack_26; + undefined1 uStack_25; + undefined1 uStack_24; + undefined1 uStack_23; + undefined1 uStack_22; + undefined1 uStack_21; + undefined1 local_20; + undefined1 uStack_1f; + undefined1 uStack_1e; + undefined1 uStack_1d; + undefined1 uStack_1c; + undefined1 uStack_1b; + undefined1 uStack_1a; + undefined1 uStack_19; + undefined1 uStack_18; + undefined1 uStack_17; + undefined1 uStack_16; + undefined1 uStack_15; + undefined1 uStack_14; + undefined1 uStack_13; + undefined1 uStack_12; + undefined1 uStack_11; + undefined1 local_10; + undefined1 uStack_f; + undefined1 uStack_e; + undefined1 uStack_d; + undefined1 uStack_c; + undefined1 uStack_b; + undefined1 uStack_a; + undefined1 uStack_9; + undefined1 uStack_8; + undefined1 uStack_7; + undefined1 uStack_6; + undefined1 uStack_5; + undefined1 uStack_4; + undefined1 uStack_3; + undefined1 uStack_2; + undefined1 uStack_1; + + if ((param_4 & 3) == 0) { + iVar15 = 4; + } + else { + iVar15 = (int)param_4 % 4; + if (iVar15 == 1) { + lVar10 = *param_1; + if (0 < param_3) { + lVar6 = 0; + puVar5 = param_2; + do { + puVar7 = (undefined1 *)(lVar10 + lVar6); + lVar6 = lVar6 + 1; + *puVar5 = *puVar7; + puVar5 = puVar5 + (int)param_4; + } while ((int)lVar6 < param_3); + } + goto LAB_0026e9a4; + } + if (iVar15 == 2) { + lVar10 = *param_1; + lVar6 = param_1[1]; + if (param_4 == 2) { + if (param_3 + -0x10 < 1) { + iVar8 = 0; + iVar13 = iVar8; + } + else { + lVar9 = 0; + puVar5 = param_2; + do { + puVar2 = (undefined8 *)(lVar10 + lVar9); + puVar3 = (undefined8 *)(lVar6 + lVar9); + lVar9 = lVar9 + 0x10; + uVar18 = puVar2[1]; + uVar16 = *puVar2; + uVar19 = puVar3[1]; + uVar17 = *puVar3; + local_30 = (undefined1)uVar17; + uStack_2f = (undefined1)((ulong)uVar17 >> 8); + uStack_2e = (undefined1)((ulong)uVar17 >> 0x10); + uStack_2d = (undefined1)((ulong)uVar17 >> 0x18); + uStack_2c = (undefined1)((ulong)uVar17 >> 0x20); + uStack_2b = (undefined1)((ulong)uVar17 >> 0x28); + uStack_2a = (undefined1)((ulong)uVar17 >> 0x30); + uStack_29 = (undefined1)((ulong)uVar17 >> 0x38); + uStack_28 = (undefined1)uVar19; + uStack_27 = (undefined1)((ulong)uVar19 >> 8); + uStack_26 = (undefined1)((ulong)uVar19 >> 0x10); + uStack_25 = (undefined1)((ulong)uVar19 >> 0x18); + uStack_24 = (undefined1)((ulong)uVar19 >> 0x20); + uStack_23 = (undefined1)((ulong)uVar19 >> 0x28); + uStack_22 = (undefined1)((ulong)uVar19 >> 0x30); + uStack_21 = (undefined1)((ulong)uVar19 >> 0x38); + *puVar5 = (char)uVar16; + puVar5[1] = local_30; + puVar5[2] = (char)((ulong)uVar16 >> 8); + puVar5[3] = uStack_2f; + puVar5[4] = (char)((ulong)uVar16 >> 0x10); + puVar5[5] = uStack_2e; + puVar5[6] = (char)((ulong)uVar16 >> 0x18); + puVar5[7] = uStack_2d; + puVar5[8] = (char)((ulong)uVar16 >> 0x20); + puVar5[9] = uStack_2c; + puVar5[10] = (char)((ulong)uVar16 >> 0x28); + puVar5[0xb] = uStack_2b; + puVar5[0xc] = (char)((ulong)uVar16 >> 0x30); + puVar5[0xd] = uStack_2a; + puVar5[0xe] = (char)((ulong)uVar16 >> 0x38); + puVar5[0xf] = uStack_29; + puVar5[0x10] = (char)uVar18; + puVar5[0x11] = uStack_28; + puVar5[0x12] = (char)((ulong)uVar18 >> 8); + puVar5[0x13] = uStack_27; + puVar5[0x14] = (char)((ulong)uVar18 >> 0x10); + puVar5[0x15] = uStack_26; + puVar5[0x16] = (char)((ulong)uVar18 >> 0x18); + puVar5[0x17] = uStack_25; + puVar5[0x18] = (char)((ulong)uVar18 >> 0x20); + puVar5[0x19] = uStack_24; + puVar5[0x1a] = (char)((ulong)uVar18 >> 0x28); + puVar5[0x1b] = uStack_23; + puVar5[0x1c] = (char)((ulong)uVar18 >> 0x30); + puVar5[0x1d] = uStack_22; + puVar5[0x1e] = (char)((ulong)uVar18 >> 0x38); + puVar5[0x1f] = uStack_21; + puVar5 = puVar5 + 0x20; + } while ((int)lVar9 < param_3 + -0x10); + iVar13 = (param_3 - 0x11U >> 4) + 1; + iVar8 = iVar13 * 0x20; + iVar13 = iVar13 * 0x10; + } + if (param_3 <= iVar13) { + return; + } + } + else { + iVar8 = 0; + iVar13 = 0; + if (param_3 < 1) goto LAB_0026e9a4; + } + lVar9 = 0; + puVar5 = param_2 + iVar8; + do { + *puVar5 = *(undefined1 *)(lVar10 + iVar13 + lVar9); + puVar7 = (undefined1 *)(lVar6 + iVar13 + lVar9); + lVar9 = lVar9 + 1; + puVar5[1] = *puVar7; + puVar5 = puVar5 + (int)param_4; + } while (iVar13 + (int)lVar9 < param_3); + goto LAB_0026e9a4; + } + if (iVar15 == 3) { + lVar10 = *param_1; + lVar6 = param_1[1]; + lVar9 = param_1[2]; + if (param_4 == 3) { + if (param_3 + -0x10 < 1) { + iVar8 = 0; + iVar13 = iVar8; + } + else { + lVar11 = 0; + puVar5 = param_2; + do { + puVar2 = (undefined8 *)(lVar10 + lVar11); + puVar3 = (undefined8 *)(lVar6 + lVar11); + puVar4 = (undefined8 *)(lVar9 + lVar11); + uVar19 = puVar2[1]; + uVar16 = *puVar2; + lVar11 = lVar11 + 0x10; + uVar20 = puVar3[1]; + uVar17 = *puVar3; + uVar21 = puVar4[1]; + uVar18 = *puVar4; + local_30 = (undefined1)uVar17; + uStack_2f = (undefined1)((ulong)uVar17 >> 8); + uStack_2e = (undefined1)((ulong)uVar17 >> 0x10); + uStack_2d = (undefined1)((ulong)uVar17 >> 0x18); + uStack_2c = (undefined1)((ulong)uVar17 >> 0x20); + uStack_2b = (undefined1)((ulong)uVar17 >> 0x28); + uStack_2a = (undefined1)((ulong)uVar17 >> 0x30); + uStack_29 = (undefined1)((ulong)uVar17 >> 0x38); + uStack_28 = (undefined1)uVar20; + uStack_27 = (undefined1)((ulong)uVar20 >> 8); + uStack_26 = (undefined1)((ulong)uVar20 >> 0x10); + uStack_25 = (undefined1)((ulong)uVar20 >> 0x18); + uStack_24 = (undefined1)((ulong)uVar20 >> 0x20); + uStack_23 = (undefined1)((ulong)uVar20 >> 0x28); + uStack_22 = (undefined1)((ulong)uVar20 >> 0x30); + uStack_21 = (undefined1)((ulong)uVar20 >> 0x38); + local_20 = (undefined1)uVar18; + uStack_1f = (undefined1)((ulong)uVar18 >> 8); + uStack_1e = (undefined1)((ulong)uVar18 >> 0x10); + uStack_1d = (undefined1)((ulong)uVar18 >> 0x18); + uStack_1c = (undefined1)((ulong)uVar18 >> 0x20); + uStack_1b = (undefined1)((ulong)uVar18 >> 0x28); + uStack_1a = (undefined1)((ulong)uVar18 >> 0x30); + uStack_19 = (undefined1)((ulong)uVar18 >> 0x38); + uStack_18 = (undefined1)uVar21; + uStack_17 = (undefined1)((ulong)uVar21 >> 8); + uStack_16 = (undefined1)((ulong)uVar21 >> 0x10); + uStack_15 = (undefined1)((ulong)uVar21 >> 0x18); + uStack_14 = (undefined1)((ulong)uVar21 >> 0x20); + uStack_13 = (undefined1)((ulong)uVar21 >> 0x28); + uStack_12 = (undefined1)((ulong)uVar21 >> 0x30); + uStack_11 = (undefined1)((ulong)uVar21 >> 0x38); + *puVar5 = (char)uVar16; + puVar5[1] = local_30; + puVar5[2] = local_20; + puVar5[3] = (char)((ulong)uVar16 >> 8); + puVar5[4] = uStack_2f; + puVar5[5] = uStack_1f; + puVar5[6] = (char)((ulong)uVar16 >> 0x10); + puVar5[7] = uStack_2e; + puVar5[8] = uStack_1e; + puVar5[9] = (char)((ulong)uVar16 >> 0x18); + puVar5[10] = uStack_2d; + puVar5[0xb] = uStack_1d; + puVar5[0xc] = (char)((ulong)uVar16 >> 0x20); + puVar5[0xd] = uStack_2c; + puVar5[0xe] = uStack_1c; + puVar5[0xf] = (char)((ulong)uVar16 >> 0x28); + puVar5[0x10] = uStack_2b; + puVar5[0x11] = uStack_1b; + puVar5[0x12] = (char)((ulong)uVar16 >> 0x30); + puVar5[0x13] = uStack_2a; + puVar5[0x14] = uStack_1a; + puVar5[0x15] = (char)((ulong)uVar16 >> 0x38); + puVar5[0x16] = uStack_29; + puVar5[0x17] = uStack_19; + puVar5[0x18] = (char)uVar19; + puVar5[0x19] = uStack_28; + puVar5[0x1a] = uStack_18; + puVar5[0x1b] = (char)((ulong)uVar19 >> 8); + puVar5[0x1c] = uStack_27; + puVar5[0x1d] = uStack_17; + puVar5[0x1e] = (char)((ulong)uVar19 >> 0x10); + puVar5[0x1f] = uStack_26; + puVar5[0x20] = uStack_16; + puVar5[0x21] = (char)((ulong)uVar19 >> 0x18); + puVar5[0x22] = uStack_25; + puVar5[0x23] = uStack_15; + puVar5[0x24] = (char)((ulong)uVar19 >> 0x20); + puVar5[0x25] = uStack_24; + puVar5[0x26] = uStack_14; + puVar5[0x27] = (char)((ulong)uVar19 >> 0x28); + puVar5[0x28] = uStack_23; + puVar5[0x29] = uStack_13; + puVar5[0x2a] = (char)((ulong)uVar19 >> 0x30); + puVar5[0x2b] = uStack_22; + puVar5[0x2c] = uStack_12; + puVar5[0x2d] = (char)((ulong)uVar19 >> 0x38); + puVar5[0x2e] = uStack_21; + puVar5[0x2f] = uStack_11; + puVar5 = puVar5 + 0x30; + } while ((int)lVar11 < param_3 + -0x10); + iVar13 = (param_3 - 0x11U >> 4) + 1; + iVar8 = iVar13 * 0x30; + iVar13 = iVar13 * 0x10; + } + if (param_3 <= iVar13) { + return; + } + } + else { + iVar13 = 0; + iVar8 = 0; + if (param_3 < 1) goto LAB_0026e9a4; + } + lVar11 = 0; + lVar12 = (long)iVar13; + puVar5 = param_2 + iVar8; + do { + *puVar5 = *(undefined1 *)(lVar10 + lVar12 + lVar11); + puVar5[1] = *(undefined1 *)(lVar6 + lVar12 + lVar11); + puVar7 = (undefined1 *)(lVar9 + lVar12 + lVar11); + lVar11 = lVar11 + 1; + puVar5[2] = *puVar7; + puVar5 = puVar5 + (int)param_4; + } while (iVar13 + (int)lVar11 < param_3); + goto LAB_0026e9a4; + } + } + lVar10 = *param_1; + lVar6 = param_1[1]; + lVar9 = param_1[2]; + lVar11 = param_1[3]; + if ((param_4 == 4) && (0 < param_3 + -0x10)) { + lVar12 = 0; + puVar5 = param_2; + do { + puVar2 = (undefined8 *)(lVar10 + lVar12); + puVar3 = (undefined8 *)(lVar6 + lVar12); + puVar4 = (undefined8 *)(lVar9 + lVar12); + uVar20 = puVar2[1]; + uVar16 = *puVar2; + puVar2 = (undefined8 *)(lVar11 + lVar12); + lVar12 = lVar12 + 0x10; + uVar21 = puVar3[1]; + uVar17 = *puVar3; + uVar22 = puVar4[1]; + uVar18 = *puVar4; + uVar23 = puVar2[1]; + uVar19 = *puVar2; + local_30 = (undefined1)uVar17; + uStack_2f = (undefined1)((ulong)uVar17 >> 8); + uStack_2e = (undefined1)((ulong)uVar17 >> 0x10); + uStack_2d = (undefined1)((ulong)uVar17 >> 0x18); + uStack_2c = (undefined1)((ulong)uVar17 >> 0x20); + uStack_2b = (undefined1)((ulong)uVar17 >> 0x28); + uStack_2a = (undefined1)((ulong)uVar17 >> 0x30); + uStack_29 = (undefined1)((ulong)uVar17 >> 0x38); + uStack_28 = (undefined1)uVar21; + uStack_27 = (undefined1)((ulong)uVar21 >> 8); + uStack_26 = (undefined1)((ulong)uVar21 >> 0x10); + uStack_25 = (undefined1)((ulong)uVar21 >> 0x18); + uStack_24 = (undefined1)((ulong)uVar21 >> 0x20); + uStack_23 = (undefined1)((ulong)uVar21 >> 0x28); + uStack_22 = (undefined1)((ulong)uVar21 >> 0x30); + uStack_21 = (undefined1)((ulong)uVar21 >> 0x38); + local_20 = (undefined1)uVar18; + uStack_1f = (undefined1)((ulong)uVar18 >> 8); + uStack_1e = (undefined1)((ulong)uVar18 >> 0x10); + uStack_1d = (undefined1)((ulong)uVar18 >> 0x18); + uStack_1c = (undefined1)((ulong)uVar18 >> 0x20); + uStack_1b = (undefined1)((ulong)uVar18 >> 0x28); + uStack_1a = (undefined1)((ulong)uVar18 >> 0x30); + uStack_19 = (undefined1)((ulong)uVar18 >> 0x38); + uStack_18 = (undefined1)uVar22; + uStack_17 = (undefined1)((ulong)uVar22 >> 8); + uStack_16 = (undefined1)((ulong)uVar22 >> 0x10); + uStack_15 = (undefined1)((ulong)uVar22 >> 0x18); + uStack_14 = (undefined1)((ulong)uVar22 >> 0x20); + uStack_13 = (undefined1)((ulong)uVar22 >> 0x28); + uStack_12 = (undefined1)((ulong)uVar22 >> 0x30); + uStack_11 = (undefined1)((ulong)uVar22 >> 0x38); + local_10 = (undefined1)uVar19; + uStack_f = (undefined1)((ulong)uVar19 >> 8); + uStack_e = (undefined1)((ulong)uVar19 >> 0x10); + uStack_d = (undefined1)((ulong)uVar19 >> 0x18); + uStack_c = (undefined1)((ulong)uVar19 >> 0x20); + uStack_b = (undefined1)((ulong)uVar19 >> 0x28); + uStack_a = (undefined1)((ulong)uVar19 >> 0x30); + uStack_9 = (undefined1)((ulong)uVar19 >> 0x38); + uStack_8 = (undefined1)uVar23; + uStack_7 = (undefined1)((ulong)uVar23 >> 8); + uStack_6 = (undefined1)((ulong)uVar23 >> 0x10); + uStack_5 = (undefined1)((ulong)uVar23 >> 0x18); + uStack_4 = (undefined1)((ulong)uVar23 >> 0x20); + uStack_3 = (undefined1)((ulong)uVar23 >> 0x28); + uStack_2 = (undefined1)((ulong)uVar23 >> 0x30); + uStack_1 = (undefined1)((ulong)uVar23 >> 0x38); + *puVar5 = (char)uVar16; + puVar5[1] = local_30; + puVar5[2] = local_20; + puVar5[3] = local_10; + puVar5[4] = (char)((ulong)uVar16 >> 8); + puVar5[5] = uStack_2f; + puVar5[6] = uStack_1f; + puVar5[7] = uStack_f; + puVar5[8] = (char)((ulong)uVar16 >> 0x10); + puVar5[9] = uStack_2e; + puVar5[10] = uStack_1e; + puVar5[0xb] = uStack_e; + puVar5[0xc] = (char)((ulong)uVar16 >> 0x18); + puVar5[0xd] = uStack_2d; + puVar5[0xe] = uStack_1d; + puVar5[0xf] = uStack_d; + puVar5[0x10] = (char)((ulong)uVar16 >> 0x20); + puVar5[0x11] = uStack_2c; + puVar5[0x12] = uStack_1c; + puVar5[0x13] = uStack_c; + puVar5[0x14] = (char)((ulong)uVar16 >> 0x28); + puVar5[0x15] = uStack_2b; + puVar5[0x16] = uStack_1b; + puVar5[0x17] = uStack_b; + puVar5[0x18] = (char)((ulong)uVar16 >> 0x30); + puVar5[0x19] = uStack_2a; + puVar5[0x1a] = uStack_1a; + puVar5[0x1b] = uStack_a; + puVar5[0x1c] = (char)((ulong)uVar16 >> 0x38); + puVar5[0x1d] = uStack_29; + puVar5[0x1e] = uStack_19; + puVar5[0x1f] = uStack_9; + puVar5[0x20] = (char)uVar20; + puVar5[0x21] = uStack_28; + puVar5[0x22] = uStack_18; + puVar5[0x23] = uStack_8; + puVar5[0x24] = (char)((ulong)uVar20 >> 8); + puVar5[0x25] = uStack_27; + puVar5[0x26] = uStack_17; + puVar5[0x27] = uStack_7; + puVar5[0x28] = (char)((ulong)uVar20 >> 0x10); + puVar5[0x29] = uStack_26; + puVar5[0x2a] = uStack_16; + puVar5[0x2b] = uStack_6; + puVar5[0x2c] = (char)((ulong)uVar20 >> 0x18); + puVar5[0x2d] = uStack_25; + puVar5[0x2e] = uStack_15; + puVar5[0x2f] = uStack_5; + puVar5[0x30] = (char)((ulong)uVar20 >> 0x20); + puVar5[0x31] = uStack_24; + puVar5[0x32] = uStack_14; + puVar5[0x33] = uStack_4; + puVar5[0x34] = (char)((ulong)uVar20 >> 0x28); + puVar5[0x35] = uStack_23; + puVar5[0x36] = uStack_13; + puVar5[0x37] = uStack_3; + puVar5[0x38] = (char)((ulong)uVar20 >> 0x30); + puVar5[0x39] = uStack_22; + puVar5[0x3a] = uStack_12; + puVar5[0x3b] = uStack_2; + puVar5[0x3c] = (char)((ulong)uVar20 >> 0x38); + puVar5[0x3d] = uStack_21; + puVar5[0x3e] = uStack_11; + puVar5[0x3f] = uStack_1; + puVar5 = puVar5 + 0x40; + } while ((int)lVar12 < param_3 + -0x10); + iVar8 = (param_3 - 0x11U >> 4) + 1; + iVar13 = iVar8 * 0x10; + iVar8 = iVar8 * 0x40; + } + else { + iVar8 = 0; + iVar13 = 0; + } + if (iVar13 < param_3) { + lVar12 = 0; + lVar14 = (long)iVar13; + puVar5 = param_2 + iVar8; + do { + *puVar5 = *(undefined1 *)(lVar10 + lVar14 + lVar12); + puVar5[1] = *(undefined1 *)(lVar6 + lVar14 + lVar12); + puVar5[2] = *(undefined1 *)(lVar9 + lVar14 + lVar12); + puVar7 = (undefined1 *)(lVar11 + lVar14 + lVar12); + lVar12 = lVar12 + 1; + puVar5[3] = *puVar7; + puVar5 = puVar5 + (int)param_4; + } while (lVar12 != (ulong)(uint)((param_3 + -1) - iVar13) + 1); + } +LAB_0026e9a4: + if (iVar15 < (int)param_4) { + lVar10 = (long)iVar15; + param_1 = param_1 + lVar10; + puVar5 = param_2 + lVar10; + do { + lVar14 = *param_1; + lVar12 = param_1[1]; + lVar11 = param_1[2]; + lVar6 = 0; + lVar9 = param_1[3]; + puVar7 = puVar5; + if (0 < param_3) { + do { + *puVar7 = *(undefined1 *)(lVar14 + lVar6); + puVar7[1] = *(undefined1 *)(lVar12 + lVar6); + puVar7[2] = *(undefined1 *)(lVar11 + lVar6); + puVar1 = (undefined1 *)(lVar9 + lVar6); + lVar6 = lVar6 + 1; + puVar7[3] = *puVar1; + puVar7 = puVar7 + (int)param_4; + } while ((int)lVar6 < param_3); + } + puVar5 = puVar5 + 4; + param_1 = param_1 + 4; + } while (puVar5 != param_2 + lVar10 + 4 + (ulong)((param_4 - 1) - iVar15 >> 2) * 4); + } + return; +} + + +================================================================== + +### FUNC 0026ee40 (524 bytes) name=FUN_0026ee40 + +void FUN_0026ee40(undefined1 (*param_1) [16],ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + uint uVar11; + undefined1 (*pauVar12) [16]; + long lVar14; + undefined8 *puVar15; + ulong uVar16; + ulong uVar17; + int iVar18; + uint uVar19; + ulong uVar20; + ulong uVar21; + long lVar22; + undefined1 auVar23 [16]; + undefined1 (*pauVar13) [16]; + + iVar18 = param_7[1]; + iVar5 = *param_7; + if (iVar18 != 0) { + uVar8 = iVar5 - 4U >> 2; + uVar6 = (uVar8 + 1) * 4; + if (iVar5 + -3 < 1) { + uVar6 = 0; + } + uVar1 = uVar6 + 1; + uVar9 = iVar5 - uVar6; + uVar2 = uVar6 + 2; + uVar3 = uVar6 + 3; + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + lVar22 = (long)(int)uVar6 * 4; + uVar21 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar20 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + do { + if (0 < iVar5 + -3) { + pauVar12 = param_1; + puVar15 = param_5; + do { + pauVar13 = pauVar12 + 1; + auVar23 = NEON_scvtf(*pauVar12,4); + puVar15[1] = auVar23._8_8_; + *puVar15 = auVar23._0_8_; + pauVar12 = pauVar13; + puVar15 = puVar15 + 2; + } while (pauVar13 != param_1 + (ulong)uVar8 + 1); + } + if ((int)uVar6 < iVar5) { + uVar11 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar16 = (ulong)uVar11; + if (uVar9 < uVar11) { + uVar16 = (ulong)uVar9; + } + if (uVar9 < 5) { + uVar16 = (ulong)uVar9; + } + uVar11 = (uint)uVar16; + if (uVar11 == 0) { + uVar17 = (ulong)uVar6; + } + else { + *(float *)((long)param_5 + lVar22) = (float)*(int *)(*param_1 + lVar22); + if (uVar11 == 1) { + uVar17 = (ulong)uVar1; + } + else { + *(float *)((long)param_5 + uVar10) = (float)*(int *)(*param_1 + uVar10); + if (uVar11 == 2) { + uVar17 = (ulong)uVar2; + } + else { + *(float *)((long)param_5 + uVar21) = (float)*(int *)(*param_1 + uVar21); + if (uVar11 == 4) { + uVar17 = (ulong)(uVar6 + 4); + *(float *)((long)param_5 + uVar20) = (float)*(int *)(*param_1 + uVar20); + } + else { + uVar17 = (ulong)uVar3; + } + } + } + if (uVar11 == uVar9) goto LAB_0026f004; + } + uVar4 = ((uVar9 - uVar11) - 4 >> 2) + 1; + iVar7 = uVar4 * 4; + if (2 < (uVar9 - 1) - uVar11) { + uVar19 = 0; + lVar14 = ((long)(int)uVar6 + uVar16) * 4; + puVar15 = (undefined8 *)((long)param_5 + lVar14); + pauVar12 = (undefined1 (*) [16])(*param_1 + lVar14); + do { + uVar19 = uVar19 + 1; + auVar23 = NEON_scvtf(*pauVar12,4); + puVar15[1] = auVar23._8_8_; + *puVar15 = auVar23._0_8_; + puVar15 = puVar15 + 2; + pauVar12 = pauVar12 + 1; + } while (uVar19 < uVar4); + uVar17 = (ulong)(uint)((int)uVar17 + iVar7); + if (uVar9 - uVar11 == iVar7) goto LAB_0026f004; + } + uVar16 = -(uVar17 >> 0x1f) & 0xfffffffc00000000 | uVar17 << 2; + *(float *)((long)param_5 + uVar16) = (float)*(int *)(*param_1 + uVar16); + if ((int)uVar17 + 1 < iVar5) { + *(float *)((long)param_5 + uVar16 + 4) = (float)*(int *)(*param_1 + uVar16 + 4); + if ((int)uVar17 + 2 < iVar5) { + *(float *)((long)param_5 + uVar16 + 8) = (float)*(int *)(*param_1 + uVar16 + 8); + } + } + } +LAB_0026f004: + iVar18 = iVar18 + -1; + param_1 = (undefined1 (*) [16])(*param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026f04c (1388 bytes) name=FUN_0026f04c + +void FUN_0026f04c(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + ulong *param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + ushort *puVar8; + uint uVar9; + int iVar10; + byte bVar11; + int iVar12; + int iVar13; + uint uVar14; + uint uVar15; + int iVar16; + uint uVar17; + int iVar18; + ulong *puVar19; + ulong *puVar20; + byte *pbVar21; + undefined8 *puVar22; + long lVar23; + uint uVar24; + long lVar25; + int iVar26; + long lVar27; + uint uVar28; + undefined8 uVar29; + undefined8 uVar30; + + iVar26 = param_7[1]; + iVar10 = *param_7; + if (iVar26 != 0) { + uVar14 = iVar10 - 8U >> 3; + iVar12 = (uVar14 + 1) * 8; + if (iVar10 + -7 < 1) { + iVar12 = 0; + } + uVar17 = (iVar10 + -4) - iVar12; + uVar15 = uVar17 >> 2; + lVar27 = (long)iVar12; + uVar2 = uVar15 + 1; + uVar3 = (uVar15 - 3 >> 2) + 1; + lVar1 = lVar27 + (ulong)uVar2 * 4; + iVar16 = iVar10 + -3; + iVar7 = iVar12 + 4 + uVar15 * 4; + do { + if (0 < iVar10 + -7) { + puVar19 = param_5; + puVar22 = param_1; + do { + uVar29 = *puVar22; + puVar20 = puVar19 + 2; + puVar19[1] = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar29 >> 0x28), + (ushort)(byte)((ulong)uVar29 + >> 0x20)))); + *puVar19 = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar29 >> 8), + (short)uVar29) & 0xff00ff))); + puVar19 = puVar20; + puVar22 = puVar22 + 1; + } while (puVar20 != param_5 + ((ulong)uVar14 + 1) * 2); + } + iVar13 = iVar12; + if (iVar12 < iVar16) { + puVar19 = (ulong *)((long)param_5 + lVar27 * 2); + pbVar21 = (byte *)((long)param_1 + lVar27); + iVar13 = iVar7; + if ((puVar19 < (ulong *)((long)param_1 + lVar1) && + pbVar21 < (byte *)((long)param_5 + lVar1 * 2)) || (uVar2 < 5)) { + do { + bVar11 = pbVar21[1]; + pbVar6 = pbVar21 + 4; + *(ushort *)puVar19 = (ushort)*pbVar21; + *(ushort *)((long)puVar19 + 2) = (ushort)bVar11; + bVar11 = pbVar21[3]; + *(ushort *)((long)puVar19 + 4) = (ushort)pbVar21[2]; + *(ushort *)((long)puVar19 + 6) = (ushort)bVar11; + pbVar21 = pbVar6; + puVar19 = puVar19 + 1; + } while (pbVar6 != (byte *)((long)param_1 + lVar27 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar18 = iVar12; + if (0xb < uVar17) { + uVar24 = 0; + do { + uVar30 = *(undefined8 *)(pbVar21 + 8); + uVar29 = *(undefined8 *)pbVar21; + uVar24 = uVar24 + 1; + puVar19[1] = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar29 >> + 0x28), + (ushort)(byte)((ulong) + uVar29 >> 0x20)))); + *puVar19 = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar29 >> 8), + (ushort)(byte)uVar29))); + puVar19[3] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar30 >> + 0x28), + (ushort)(byte)((ulong) + uVar30 >> 0x20)))); + puVar19[2] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar30 >> 8 + ),(short)uVar30) & + 0xff00ff))); + pbVar21 = pbVar21 + 0x10; + puVar19 = puVar19 + 4; + } while (uVar24 < uVar3); + iVar18 = iVar12 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_0026f240; + } + lVar23 = (long)iVar18; + lVar25 = lVar23 * 2; + bVar11 = *(byte *)((long)param_1 + lVar23 + 1); + *(ushort *)((long)param_5 + lVar25) = (ushort)*(byte *)((long)param_1 + lVar23); + *(ushort *)((long)param_5 + lVar25 + 2) = (ushort)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar23 + 3); + *(ushort *)((long)param_5 + lVar25 + 4) = (ushort)*(byte *)((long)param_1 + lVar23 + 2); + *(ushort *)((long)param_5 + lVar25 + 6) = (ushort)bVar11; + if (iVar18 + 4 < iVar16) { + lVar23 = (long)(iVar18 + 4); + lVar25 = lVar23 * 2; + bVar11 = *(byte *)((long)param_1 + lVar23 + 1); + *(ushort *)((long)param_5 + lVar25) = (ushort)*(byte *)((long)param_1 + lVar23); + *(ushort *)((long)param_5 + lVar25 + 2) = (ushort)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar23 + 3); + *(ushort *)((long)param_5 + lVar25 + 4) = (ushort)*(byte *)((long)param_1 + lVar23 + 2); + *(ushort *)((long)param_5 + lVar25 + 6) = (ushort)bVar11; + if (iVar18 + 8 < iVar16) { + lVar23 = (long)(iVar18 + 8); + lVar25 = lVar23 * 2; + bVar11 = *(byte *)((long)param_1 + lVar23 + 1); + *(ushort *)((long)param_5 + lVar25) = (ushort)*(byte *)((long)param_1 + lVar23); + *(ushort *)((long)param_5 + lVar25 + 2) = (ushort)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar23 + 3); + *(ushort *)((long)param_5 + lVar25 + 4) = + (ushort)*(byte *)((long)param_1 + lVar23 + 2); + *(ushort *)((long)param_5 + lVar25 + 6) = (ushort)bVar11; + } + } + } + } +LAB_0026f240: + if (iVar13 < iVar10) { + lVar23 = (long)iVar13; + uVar24 = iVar10 - iVar13; + pbVar21 = (byte *)((long)param_1 + lVar23); + puVar8 = (ushort *)((long)param_5 + lVar23 * 2); + if ((pbVar21 < (byte *)((long)param_5 + (lVar23 + (ulong)uVar24) * 2) && + puVar8 < (ushort *)((long)param_1 + lVar23 + (ulong)uVar24)) || (uVar24 < 0x15)) { + lVar23 = 0; + do { + puVar8[lVar23] = (ushort)pbVar21[lVar23]; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar10 + -1) - iVar13) + 1); + } + else { + uVar9 = -((uint)((ulong)puVar8 >> 1) & 7) & 7; + if (uVar24 < uVar9) { + uVar9 = uVar24; + } + iVar18 = iVar13; + if (uVar9 != 0) { + *puVar8 = (ushort)*pbVar21; + iVar18 = iVar13 + 1; + if (uVar9 != 1) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 2; + *(ushort *)((long)param_5 + lVar25 * 2) = (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 2) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 3; + *(ushort *)((long)param_5 + lVar25 * 2) = (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 3) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 4; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 4) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 5; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 5) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 6; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 == 7) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 7; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + } + } + } + } + } + } + } + uVar4 = ((uVar24 - uVar9) - 0x10 >> 4) + 1; + iVar13 = uVar4 * 0x10; + if (0xe < (uVar24 - 1) - uVar9) { + uVar28 = 0; + puVar19 = (ulong *)((long)param_5 + lVar23 * 2 + (ulong)uVar9 * 2); + puVar22 = (undefined8 *)((long)param_1 + lVar23 + (ulong)uVar9); + do { + uVar30 = puVar22[1]; + uVar29 = *puVar22; + uVar28 = uVar28 + 1; + puVar19[1] = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar29 >> + 0x28), + (ushort)(byte)((ulong) + uVar29 >> 0x20)))); + *puVar19 = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar29 >> 8), + (ushort)(byte)uVar29))); + puVar19[3] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar30 >> + 0x28), + (ushort)(byte)((ulong) + uVar30 >> 0x20)))); + puVar19[2] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar30 >> 8 + ),(short)uVar30) & + 0xff00ff))); + puVar19 = puVar19 + 4; + puVar22 = puVar22 + 2; + } while (uVar28 < uVar4); + iVar18 = iVar18 + iVar13; + if (uVar24 - uVar9 == iVar13) goto LAB_0026f508; + } + iVar13 = iVar18 + 1; + *(ushort *)((long)param_5 + (long)iVar18 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar18); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 2; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 3; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 4; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 5; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 6; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 7; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 8; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 9; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 10; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 0xb; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 0xc; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 0xd; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar18 = iVar18 + 0xe; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar18 < iVar10) { + *(ushort *)((long)param_5 + (long)iVar18 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar18); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0026f508: + iVar26 = iVar26 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (ulong *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar26 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026f5b8 (1388 bytes) name=FUN_0026f5b8 + +void FUN_0026f5b8(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + char *pcVar8; + short *psVar9; + uint uVar10; + int iVar11; + char cVar12; + byte bVar13; + int iVar14; + int iVar15; + uint uVar16; + uint uVar17; + int iVar18; + uint uVar19; + int iVar20; + undefined8 *puVar21; + undefined8 *puVar22; + byte *pbVar23; + undefined8 *puVar24; + ushort *puVar25; + long lVar26; + uint uVar27; + long lVar28; + int iVar29; + long lVar30; + uint uVar31; + undefined8 uVar32; + undefined8 uVar33; + + iVar29 = param_7[1]; + iVar11 = *param_7; + if (iVar29 != 0) { + uVar16 = iVar11 - 8U >> 3; + iVar14 = (uVar16 + 1) * 8; + if (iVar11 + -7 < 1) { + iVar14 = 0; + } + uVar19 = (iVar11 + -4) - iVar14; + uVar17 = uVar19 >> 2; + lVar30 = (long)iVar14; + uVar2 = uVar17 + 1; + uVar3 = (uVar17 - 3 >> 2) + 1; + lVar1 = lVar30 + (ulong)uVar2 * 4; + iVar18 = iVar11 + -3; + iVar7 = iVar14 + 4 + uVar17 * 4; + do { + if (0 < iVar11 + -7) { + puVar21 = param_5; + puVar24 = param_1; + do { + uVar32 = *puVar24; + puVar22 = puVar21 + 2; + puVar21[1] = CONCAT26((short)(char)((ulong)uVar32 >> 0x38), + CONCAT24((short)(char)((ulong)uVar32 >> 0x30), + CONCAT22((short)(char)((ulong)uVar32 >> 0x28), + (short)(char)((ulong)uVar32 >> 0x20)))); + *puVar21 = CONCAT26((short)(char)((ulong)uVar32 >> 0x18), + CONCAT24((short)(char)((ulong)uVar32 >> 0x10), + CONCAT22((short)(char)((ulong)uVar32 >> 8), + (short)(char)uVar32))); + puVar21 = puVar22; + puVar24 = puVar24 + 1; + } while (puVar22 != param_5 + ((ulong)uVar16 + 1) * 2); + } + iVar15 = iVar14; + if (iVar14 < iVar18) { + puVar25 = (ushort *)((long)param_5 + lVar30 * 2); + pbVar23 = (byte *)((long)param_1 + lVar30); + iVar15 = iVar7; + /* try { // try from 0026f6b8 to 0036f6ff has its CatchHandler @ 0026f6b8 + catch() { ... } // from try @ 0026f6b8 with catch @ 0026f6b8 + catch() { ... } // from try @ 0026f7a4 with catch @ 0026f6b8 + catch() { ... } // from try @ 0026f844 with catch @ 0026f6b8 + catch() { ... } // from try @ 0026f900 with catch @ 0026f6b8 + catch() { ... } // from try @ 0026f98c with catch @ 0026f6b8 */ + if ((puVar25 < (ushort *)((long)param_1 + lVar1) && + pbVar23 < (byte *)((long)param_5 + lVar1 * 2)) || (uVar2 < 5)) { + do { + bVar13 = pbVar23[1]; + pbVar6 = pbVar23 + 4; + /* try { // try from 0026fad0 to 0036fd77 has its CatchHandler @ 002708ac */ + *puVar25 = (ushort)*pbVar23; + puVar25[1] = (short)(char)bVar13; + bVar13 = pbVar23[3]; + puVar25[2] = (ushort)pbVar23[2]; + puVar25[3] = (ushort)bVar13; + pbVar23 = pbVar6; + puVar25 = puVar25 + 4; + } while (pbVar6 != (byte *)((long)param_1 + lVar30 + 4 + (ulong)uVar17 * 4)); + } + else { + iVar20 = iVar14; + if (0xb < uVar19) { + uVar27 = 0; + do { + uVar33 = *(undefined8 *)(pbVar23 + 8); + uVar32 = *(undefined8 *)pbVar23; + uVar27 = uVar27 + 1; + *(ulong *)(puVar25 + 4) = + CONCAT26((short)(char)((ulong)uVar32 >> 0x38), + CONCAT24((short)(char)((ulong)uVar32 >> 0x30), + CONCAT22((short)(char)((ulong)uVar32 >> 0x28), + (short)(char)((ulong)uVar32 >> 0x20)))); + *(ulong *)puVar25 = + CONCAT26((short)(char)((ulong)uVar32 >> 0x18), + CONCAT24((short)(char)((ulong)uVar32 >> 0x10), + CONCAT22((short)(char)((ulong)uVar32 >> 8),(short)(char)uVar32) + )); + *(ulong *)(puVar25 + 0xc) = + CONCAT26((short)(char)((ulong)uVar33 >> 0x38), + CONCAT24((short)(char)((ulong)uVar33 >> 0x30), + CONCAT22((short)(char)((ulong)uVar33 >> 0x28), + (short)(char)((ulong)uVar33 >> 0x20)))); + *(ulong *)(puVar25 + 8) = + CONCAT26((short)(char)((ulong)uVar33 >> 0x18), + CONCAT24((short)(char)((ulong)uVar33 >> 0x10), + CONCAT22((short)(char)((ulong)uVar33 >> 8),(short)(char)uVar33) + )); + pbVar23 = pbVar23 + 0x10; + puVar25 = puVar25 + 0x10; + } while (uVar27 < uVar3); + iVar20 = iVar14 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_0026f7ac; + } + /* try { // try from 0026f700 to 0036f7a3 has its CatchHandler @ 0026f998 */ + lVar26 = (long)iVar20; + lVar28 = lVar26 * 2; + cVar12 = *(char *)((long)param_1 + lVar26 + 1); + *(short *)((long)param_5 + lVar28) = (short)*(char *)((long)param_1 + lVar26); + *(short *)((long)param_5 + lVar28 + 2) = (short)cVar12; + cVar12 = *(char *)((long)param_1 + lVar26 + 3); + *(short *)((long)param_5 + lVar28 + 4) = (short)*(char *)((long)param_1 + lVar26 + 2); + *(short *)((long)param_5 + lVar28 + 6) = (short)cVar12; + if (iVar20 + 4 < iVar18) { + lVar26 = (long)(iVar20 + 4); + lVar28 = lVar26 * 2; + cVar12 = *(char *)((long)param_1 + lVar26 + 1); + *(short *)((long)param_5 + lVar28) = (short)*(char *)((long)param_1 + lVar26); + *(short *)((long)param_5 + lVar28 + 2) = (short)cVar12; + cVar12 = *(char *)((long)param_1 + lVar26 + 3); + *(short *)((long)param_5 + lVar28 + 4) = (short)*(char *)((long)param_1 + lVar26 + 2); + *(short *)((long)param_5 + lVar28 + 6) = (short)cVar12; + if (iVar20 + 8 < iVar18) { + lVar26 = (long)(iVar20 + 8); + lVar28 = lVar26 * 2; + cVar12 = *(char *)((long)param_1 + lVar26 + 1); + *(short *)((long)param_5 + lVar28) = (short)*(char *)((long)param_1 + lVar26); + *(short *)((long)param_5 + lVar28 + 2) = (short)cVar12; + cVar12 = *(char *)((long)param_1 + lVar26 + 3); + *(short *)((long)param_5 + lVar28 + 4) = (short)*(char *)((long)param_1 + lVar26 + 2); + /* try { // try from 0026f7a4 to 0036f7b3 has its CatchHandler @ 0026f6b8 */ + *(short *)((long)param_5 + lVar28 + 6) = (short)cVar12; + } + } + } + } +LAB_0026f7ac: + if (iVar15 < iVar11) { + /* try { // try from 0026f7b4 to 0036f803 has its CatchHandler @ 0026f998 */ + lVar26 = (long)iVar15; + uVar27 = iVar11 - iVar15; + pcVar8 = (char *)((long)param_1 + lVar26); + psVar9 = (short *)((long)param_5 + lVar26 * 2); + if ((pcVar8 < (char *)((long)param_5 + (lVar26 + (ulong)uVar27) * 2) && + psVar9 < (short *)((long)param_1 + lVar26 + (ulong)uVar27)) || (uVar27 < 0x15)) { + lVar26 = 0; + do { + psVar9[lVar26] = (short)pcVar8[lVar26]; + lVar26 = lVar26 + 1; + } while (lVar26 != (ulong)(uint)((iVar11 + -1) - iVar15) + 1); + } + else { + uVar10 = -((uint)((ulong)psVar9 >> 1) & 7) & 7; + if (uVar27 < uVar10) { + uVar10 = uVar27; + } + iVar20 = iVar15; + if (uVar10 != 0) { + /* try { // try from 0026f814 to 0036f843 has its CatchHandler @ 0026f954 */ + *psVar9 = (short)*pcVar8; + iVar20 = iVar15 + 1; + if (uVar10 != 1) { + lVar28 = (long)iVar20; + iVar20 = iVar15 + 2; + *(short *)((long)param_5 + lVar28 * 2) = (short)*(char *)((long)param_1 + lVar28); + if (uVar10 != 2) { + lVar28 = (long)iVar20; + iVar20 = iVar15 + 3; + /* try { // try from 0026f844 to 0036f8ab has its CatchHandler @ 0026f6b8 */ + *(short *)((long)param_5 + lVar28 * 2) = (short)*(char *)((long)param_1 + lVar28); + if (uVar10 != 3) { + lVar28 = (long)iVar20; + iVar20 = iVar15 + 4; + *(short *)((long)param_5 + lVar28 * 2) = (short)*(char *)((long)param_1 + lVar28); + if (uVar10 != 4) { + lVar28 = (long)iVar20; + iVar20 = iVar15 + 5; + *(short *)((long)param_5 + lVar28 * 2) = + (short)*(char *)((long)param_1 + lVar28); + if (uVar10 != 5) { + lVar28 = (long)iVar20; + iVar20 = iVar15 + 6; + *(short *)((long)param_5 + lVar28 * 2) = + (short)*(char *)((long)param_1 + lVar28); + if (uVar10 == 7) { + lVar28 = (long)iVar20; + iVar20 = iVar15 + 7; + *(short *)((long)param_5 + lVar28 * 2) = + (short)*(char *)((long)param_1 + lVar28); + } + } + } + } + } + } + } + /* try { // try from 0026f8ac to 0036f8c3 has its CatchHandler @ 0026f958 */ + uVar4 = ((uVar27 - uVar10) - 0x10 >> 4) + 1; + /* try { // try from 0026f8c4 to 0036f8ff has its CatchHandler @ 0026f960 */ + iVar15 = uVar4 * 0x10; + if (0xe < (uVar27 - 1) - uVar10) { + uVar31 = 0; + puVar21 = (undefined8 *)((long)param_5 + lVar26 * 2 + (ulong)uVar10 * 2); + puVar24 = (undefined8 *)((long)param_1 + lVar26 + (ulong)uVar10); + do { + uVar33 = puVar24[1]; + uVar32 = *puVar24; + uVar31 = uVar31 + 1; + /* try { // try from 0026f900 to 0036f987 has its CatchHandler @ 0026f6b8 */ + puVar21[1] = CONCAT26((short)(char)((ulong)uVar32 >> 0x38), + CONCAT24((short)(char)((ulong)uVar32 >> 0x30), + CONCAT22((short)(char)((ulong)uVar32 >> 0x28), + (short)(char)((ulong)uVar32 >> 0x20)))); + *puVar21 = CONCAT26((short)(char)((ulong)uVar32 >> 0x18), + CONCAT24((short)(char)((ulong)uVar32 >> 0x10), + CONCAT22((short)(char)((ulong)uVar32 >> 8), + (short)(char)uVar32))); + puVar21[3] = CONCAT26((short)(char)((ulong)uVar33 >> 0x38), + CONCAT24((short)(char)((ulong)uVar33 >> 0x30), + CONCAT22((short)(char)((ulong)uVar33 >> 0x28), + (short)(char)((ulong)uVar33 >> 0x20)))); + puVar21[2] = CONCAT26((short)(char)((ulong)uVar33 >> 0x18), + CONCAT24((short)(char)((ulong)uVar33 >> 0x10), + CONCAT22((short)(char)((ulong)uVar33 >> 8), + (short)(char)uVar33))); + puVar21 = puVar21 + 4; + puVar24 = puVar24 + 2; + } while (uVar31 < uVar4); + iVar20 = iVar20 + iVar15; + if (uVar27 - uVar10 == iVar15) goto LAB_0026fa74; + } + iVar15 = iVar20 + 1; + *(short *)((long)param_5 + (long)iVar20 * 2) = + (short)*(char *)((long)param_1 + (long)iVar20); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 2; + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 3; + /* catch() { ... } // from try @ 0026f814 with catch @ 0026f954 */ + /* catch() { ... } // from try @ 0026f8ac with catch @ 0026f958 */ + *(short *)((long)param_5 + (long)iVar5 * 2) = + (short)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + /* catch() { ... } // from try @ 0026f8c4 with catch @ 0026f960 */ + iVar5 = iVar20 + 4; + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 5; + /* try { // try from 0026f988 to 0036f98b has its CatchHandler @ 0026f994 */ + *(short *)((long)param_5 + (long)iVar5 * 2) = + (short)*(char *)((long)param_1 + (long)iVar5); + /* try { // try from 0026f98c to 0036f9ab has its CatchHandler @ 0026f6b8 */ + if (iVar15 < iVar11) { + /* catch() { ... } // from try @ 0026f988 with catch @ 0026f994 */ + iVar5 = iVar20 + 6; + /* catch() { ... } // from try @ 0026f700 with catch @ 0026f998 + catch() { ... } // from try @ 0026f7b4 with catch @ 0026f998 */ + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + /* try { // try from 0026f9ac to 0036facf has its CatchHandler @ 0026f9ac + catch() { ... } // from try @ 0026f9ac with catch @ 0026f9ac + catch() { ... } // from try @ 00270548 with catch @ 0026f9ac + catch() { ... } // from try @ 00270794 with catch @ 0026f9ac + catch() { ... } // from try @ 002708a0 with catch @ 0026f9ac */ + iVar15 = iVar20 + 7; + *(short *)((long)param_5 + (long)iVar5 * 2) = + (short)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 8; + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 9; + *(short *)((long)param_5 + (long)iVar5 * 2) = + (short)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 10; + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 0xb; + *(short *)((long)param_5 + (long)iVar5 * 2) = + (short)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 0xc; + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 0xd; + *(short *)((long)param_5 + (long)iVar5 * 2) = + (short)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar20 = iVar20 + 0xe; + *(short *)((long)param_5 + (long)iVar15 * 2) = + (short)*(char *)((long)param_1 + (long)iVar15); + if (iVar20 < iVar11) { + *(short *)((long)param_5 + (long)iVar20 * 2) = + (short)*(char *)((long)param_1 + (long)iVar20); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0026fa74: + iVar29 = iVar29 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar29 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026fb24 (552 bytes) name=FUN_0026fb24 + +void FUN_0026fb24(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 *param_5,long param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + long lVar6; + long lVar7; + char cVar8; + undefined1 *puVar9; + int iVar10; + double *pdVar11; + long lVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + + dVar15 = *param_8; + iVar10 = param_7[1]; + dVar16 = param_8[1]; + iVar1 = *param_7; + if (iVar10 != 0) { + uVar3 = iVar1 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (iVar1 + -3 < 1) { + iVar2 = 0; + } + lVar12 = NEON_shl((long)iVar2,3); + do { + if (0 < iVar1 + -3) { + dVar14 = (double)(float)dVar15; + pdVar11 = (double *)(param_1 + 0x18); + dVar13 = (double)(float)dVar16; + puVar9 = param_5; + do { + lVar6 = lrint(ABS(dVar13 + dVar14 * pdVar11[-3])); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar6 = lrint(ABS(dVar13 + dVar14 * pdVar11[-2])); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar9 = (char)uVar4; + puVar9[1] = (char)uVar5; + lVar6 = lrint(ABS(dVar13 + dVar14 * pdVar11[-1])); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar6 = lrint(ABS(dVar13 + dVar14 * *pdVar11)); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + pdVar11 = pdVar11 + 4; + puVar9[2] = (char)uVar4; + puVar9[3] = (char)uVar5; + puVar9 = puVar9 + 4; + } while (pdVar11 != (double *)(param_1 + (ulong)uVar3 * 0x20 + 0x38)); + } + if (iVar2 < iVar1) { + lVar6 = 0; + do { + lVar7 = lrint(ABS((double)(float)dVar16 + + (double)(float)dVar15 * *(double *)(param_1 + lVar12 + lVar6 * 8))); + cVar8 = (char)lVar7; + if (0xff < (uint)lVar7) { + cVar8 = -(0 < (int)(uint)lVar7); + } + param_5[lVar6 + iVar2] = cVar8; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + iVar10 = iVar10 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffff8); + param_5 = param_5 + param_6; + } while (iVar10 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026fd4c (532 bytes) name=FUN_0026fd4c + +void FUN_0026fd4c(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 *param_5,long param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + long lVar6; + long lVar7; + char cVar8; + undefined1 *puVar9; + int iVar10; + double *pdVar11; + long lVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + + dVar15 = *param_8; + iVar10 = param_7[1]; + dVar16 = param_8[1]; + iVar1 = *param_7; + if (iVar10 != 0) { + uVar3 = iVar1 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (iVar1 + -3 < 1) { + iVar2 = 0; + } + lVar12 = NEON_shl((long)iVar2,3); + do { + if (0 < iVar1 + -3) { + dVar14 = (double)(float)dVar15; + pdVar11 = (double *)(param_1 + 0x18); + dVar13 = (double)(float)dVar16; + puVar9 = param_5; + do { + lVar6 = lrint(dVar13 + dVar14 * pdVar11[-3]); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + /* try { // try from 0026fe38 to 0036feb3 has its CatchHandler @ 002708a4 */ + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar6 = lrint(dVar13 + dVar14 * pdVar11[-2]); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar9 = (char)uVar4; + puVar9[1] = (char)uVar5; + lVar6 = lrint(dVar13 + dVar14 * pdVar11[-1]); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar6 = lrint(dVar13 + dVar14 * *pdVar11); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + pdVar11 = pdVar11 + 4; + puVar9[2] = (char)uVar4; + puVar9[3] = (char)uVar5; + puVar9 = puVar9 + 4; + } while (pdVar11 != (double *)(param_1 + (ulong)uVar3 * 0x20 + 0x38)); + } + if (iVar2 < iVar1) { + /* try { // try from 0026fec8 to 003700b3 has its CatchHandler @ 002708a8 */ + lVar6 = 0; + do { + lVar7 = lrint((double)(float)dVar16 + + (double)(float)dVar15 * *(double *)(param_1 + lVar12 + lVar6 * 8)); + cVar8 = (char)lVar7; + if (0xff < (uint)lVar7) { + cVar8 = -(0 < (int)(uint)lVar7); + } + param_5[lVar6 + iVar2] = cVar8; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + iVar10 = iVar10 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffff8); + param_5 = param_5 + param_6; + } while (iVar10 != 0); + } + return; +} + + +================================================================== + +### FUNC 0026ff60 (576 bytes) name=FUN_0026ff60 + +void FUN_0026ff60(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 *param_5,long param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + undefined1 uVar6; + undefined1 *puVar7; + undefined1 uVar8; + undefined1 uVar9; + int iVar10; + double *pdVar11; + undefined1 uVar12; + long lVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + + dVar17 = *param_8; + iVar10 = param_7[1]; + iVar1 = *param_7; + dVar18 = param_8[1]; + if (iVar10 != 0) { + uVar3 = iVar1 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (iVar1 + -3 < 1) { + iVar2 = 0; + } + lVar13 = NEON_shl((long)iVar2,3); + do { + uVar8 = 0x80; + uVar9 = 0x7f; + if (0 < iVar1 + -3) { + dVar16 = (double)(float)dVar17; + pdVar11 = (double *)(param_1 + 0x18); + dVar15 = (double)(float)dVar18; + puVar7 = param_5; + do { + lVar4 = lrint(dVar15 + dVar16 * pdVar11[-3]); + uVar12 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar12 = uVar9, (int)lVar4 < 1)) { + uVar12 = uVar8; + } + lVar4 = lrint(dVar15 + dVar16 * pdVar11[-2]); + uVar6 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar6 = uVar9, (int)lVar4 < 1)) { + uVar6 = uVar8; + } + *puVar7 = uVar12; + puVar7[1] = uVar6; + lVar4 = lrint(dVar15 + dVar16 * pdVar11[-1]); + uVar12 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar12 = 0x7f, (int)lVar4 < 1)) { + uVar12 = 0x80; + } + dVar14 = *pdVar11; + pdVar11 = pdVar11 + 4; + lVar4 = lrint(dVar15 + dVar16 * dVar14); + uVar6 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar6 = 0x7f, (int)lVar4 < 1)) { + uVar6 = 0x80; + } + puVar7[2] = uVar12; + /* try { // try from 002700e8 to 003700fb has its CatchHandler @ 002708b0 */ + puVar7[3] = uVar6; + puVar7 = puVar7 + 4; + } while (pdVar11 != (double *)(param_1 + (ulong)uVar3 * 0x20 + 0x38)); + } + if (iVar2 < iVar1) { + lVar4 = 0; + /* try { // try from 00270118 to 00370547 has its CatchHandler @ 002708b4 */ + do { + lVar5 = lrint((double)(float)dVar18 + + (double)(float)dVar17 * *(double *)(param_1 + lVar13 + lVar4 * 8)); + uVar12 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = uVar9, (int)lVar5 < 1)) { + uVar12 = uVar8; + } + param_5[lVar4 + iVar2] = uVar12; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + iVar10 = iVar10 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffff8); + param_5 = param_5 + param_6; + } while (iVar10 != 0); + } + return; +} + + +================================================================== + +### FUNC 002701a0 (548 bytes) name=FUN_002701a0 + +void FUN_002701a0(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + undefined2 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + long lVar8; + short sVar9; + undefined2 *puVar10; + int iVar11; + double *pdVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + + dVar16 = *param_8; + iVar11 = param_7[1]; + dVar17 = param_8[1]; + iVar2 = *param_7; + if (iVar11 != 0) { + uVar4 = iVar2 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + iVar3 = 0; + } + do { + if (0 < iVar2 + -3) { + dVar15 = (double)(float)dVar16; + dVar14 = (double)(float)dVar17; + puVar10 = (undefined2 *)(param_5 + 4); + pdVar12 = param_1; + do { + lVar7 = lrint(dVar14 + dVar15 * *pdVar12); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar7 = lrint(dVar14 + dVar15 * pdVar12[1]); + uVar6 = (uint)lVar7; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + dVar13 = pdVar12[2]; + puVar10[-2] = (short)uVar5; + puVar10[-1] = (short)uVar6; + lVar7 = lrint(dVar14 + dVar15 * dVar13); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar7 = lrint(dVar14 + dVar15 * pdVar12[3]); + uVar6 = (uint)lVar7; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + *puVar10 = (short)uVar5; + puVar1 = puVar10 + 4; + pdVar12 = pdVar12 + 4; + puVar10[1] = (short)uVar6; + puVar10 = puVar1; + } while (puVar1 != (undefined2 *)(param_5 + (ulong)uVar4 * 8 + 0xc)); + } + if (iVar3 < iVar2) { + lVar7 = 0; + do { + lVar8 = lrint((double)(float)dVar17 + (double)(float)dVar16 * param_1[iVar3 + lVar7]); + sVar9 = (short)lVar8; + if (0xffff < (uint)lVar8) { + sVar9 = -(ushort)(0 < (int)(uint)lVar8); + } + *(short *)(param_5 + (long)iVar3 * 2 + lVar7 * 2) = sVar9; + lVar7 = lVar7 + 1; + } while (lVar7 != (ulong)(uint)((iVar2 + -1) - iVar3) + 1); + } + iVar11 = iVar11 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffe); + } while (iVar11 != 0); + } + return; +} + + +================================================================== + +### FUNC 002703c4 (596 bytes) name=FUN_002703c4 + +void FUN_002703c4(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + double *pdVar1; + undefined2 *puVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + long lVar7; + undefined2 uVar8; + undefined2 *puVar9; + undefined2 uVar10; + undefined2 uVar11; + undefined2 uVar12; + double *pdVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + int iVar19; + + dVar17 = *param_8; + iVar19 = param_7[1]; + iVar3 = *param_7; + dVar18 = param_8[1]; + if (iVar19 != 0) { + uVar5 = iVar3 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar4 = 0; + } + do { + uVar10 = 0x8000; + uVar11 = 0x7fff; + if (0 < iVar3 + -3) { + dVar16 = (double)(float)dVar17; + dVar15 = (double)(float)dVar18; + puVar9 = (undefined2 *)(param_5 + 4); + pdVar13 = param_1; + do { + lVar6 = lrint(dVar15 + dVar16 * *pdVar13); + uVar12 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar12 = uVar11, (int)lVar6 < 1)) { + uVar12 = uVar10; + } + lVar6 = lrint(dVar15 + dVar16 * pdVar13[1]); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = uVar11, (int)lVar6 < 1)) { + uVar8 = uVar10; + } + dVar14 = pdVar13[2]; + puVar9[-2] = uVar12; + puVar9[-1] = uVar8; + lVar6 = lrint(dVar15 + dVar16 * dVar14); + uVar12 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar12 = 0x7fff, (int)lVar6 < 1)) { + uVar12 = 0x8000; + } + pdVar1 = pdVar13 + 3; + pdVar13 = pdVar13 + 4; + lVar6 = lrint(dVar15 + dVar16 * *pdVar1); + /* try { // try from 00270548 to 0037078b has its CatchHandler @ 0026f9ac */ + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = 0x7fff, (int)lVar6 < 1)) { + uVar8 = 0x8000; + } + *puVar9 = uVar12; + puVar2 = puVar9 + 4; + puVar9[1] = uVar8; + puVar9 = puVar2; + } while (puVar2 != (undefined2 *)(param_5 + (ulong)uVar5 * 8 + 0xc)); + } + if (iVar4 < iVar3) { + lVar6 = 0; + do { + lVar7 = lrint((double)(float)dVar18 + (double)(float)dVar17 * param_1[iVar4 + lVar6]); + uVar12 = (short)lVar7; + if ((0xffff < (int)lVar7 + 0x8000U) && (uVar12 = uVar11, (int)lVar7 < 1)) { + uVar12 = uVar10; + } + *(undefined2 *)(param_5 + (long)iVar4 * 2 + lVar6 * 2) = uVar12; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar3 + -1) - iVar4) + 1); + } + iVar19 = iVar19 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffe); + } while (iVar19 != 0); + } + return; +} + + +================================================================== + +### FUNC 00270618 (424 bytes) name=FUN_00270618 + +void FUN_00270618(int *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + undefined4 *puVar1; + int iVar2; + uint uVar3; + uint uVar4; + long lVar5; + long lVar6; + undefined4 *puVar7; + int *piVar8; + int iVar9; + ulong uVar10; + double dVar11; + double dVar12; + + iVar9 = param_7[1]; + iVar2 = *param_7; + dVar11 = *param_8; + dVar12 = param_8[1]; + if (iVar9 != 0) { + uVar4 = iVar2 - 4U >> 2; + uVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + uVar3 = 0; + } + uVar10 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + do { + if (0 < iVar2 + -3) { + puVar7 = (undefined4 *)(param_5 + 4); + piVar8 = param_1; + do { + puVar1 = puVar7 + 4; + lVar5 = lrint(dVar12 + (double)*piVar8 * dVar11); + lVar6 = lrint(dVar12 + (double)piVar8[1] * dVar11); + puVar7[-1] = (int)lVar5; + *puVar7 = (int)lVar6; + lVar5 = lrint(dVar12 + (double)piVar8[2] * dVar11); + lVar6 = lrint(dVar12 + (double)piVar8[3] * dVar11); + puVar7[1] = (int)lVar5; + puVar7[2] = (int)lVar6; + puVar7 = puVar1; + piVar8 = piVar8 + 4; + } while (puVar1 != (undefined4 *)(param_5 + (ulong)uVar4 * 0x10 + 0x14)); + } + if ((int)uVar3 < iVar2) { + lVar5 = 0; + do { + lVar6 = lrint(dVar12 + (double)*(int *)((long)param_1 + lVar5 + uVar10) * dVar11); + *(int *)(param_5 + uVar10 + lVar5) = (int)lVar6; + lVar5 = lVar5 + 4; + } while (lVar5 != ((ulong)((iVar2 + -1) - uVar3) + 1) * 4); + } + iVar9 = iVar9 + -1; + param_1 = (int *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + /* try { // try from 0027078c to 00370793 has its CatchHandler @ 002708a8 */ + } while (iVar9 != 0); + } + /* try { // try from 00270794 to 0037089b has its CatchHandler @ 0026f9ac */ + return; +} + + +================================================================== + +### FUNC 002707c0 (416 bytes) name=FUN_002707c0 + +void FUN_002707c0(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + long lVar5; + long lVar6; + undefined4 *puVar7; + double *pdVar8; + int iVar9; + double dVar10; + double dVar11; + double dVar12; + + dVar11 = *param_8; + iVar9 = param_7[1]; + iVar2 = *param_7; + dVar12 = param_8[1]; + if (iVar9 != 0) { + uVar4 = iVar2 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + iVar3 = 0; + } + do { + if (0 < iVar2 + -3) { + puVar7 = (undefined4 *)(param_5 + 4); + pdVar8 = param_1; + do { + puVar1 = puVar7 + 4; + lVar5 = lrint(dVar12 + *pdVar8 * dVar11); + /* try { // try from 0027089c to 0037089f has its CatchHandler @ 002708a0 */ + /* catch() { ... } // from try @ 0027089c with catch @ 002708a0 + try { // try from 002708a0 to 003708c7 has its CatchHandler @ 0026f9ac */ + /* catch() { ... } // from try @ 0026fe38 with catch @ 002708a4 */ + /* catch() { ... } // from try @ 0026fec8 with catch @ 002708a8 + catch() { ... } // from try @ 0027078c with catch @ 002708a8 */ + lVar6 = lrint(dVar12 + pdVar8[1] * dVar11); + /* catch() { ... } // from try @ 0026fad0 with catch @ 002708ac */ + puVar7[-1] = (int)lVar5; + /* catch() { ... } // from try @ 002700e8 with catch @ 002708b0 */ + dVar10 = pdVar8[2]; + /* catch() { ... } // from try @ 00270118 with catch @ 002708b4 */ + *puVar7 = (int)lVar6; + lVar5 = lrint(dVar12 + dVar10 * dVar11); + /* try { // try from 002708c8 to 0037090f has its CatchHandler @ 002708c8 + catch() { ... } // from try @ 002708c8 with catch @ 002708c8 + catch() { ... } // from try @ 00270af0 with catch @ 002708c8 + catch() { ... } // from try @ 00270c50 with catch @ 002708c8 + catch() { ... } // from try @ 00270c98 with catch @ 002708c8 */ + lVar6 = lrint(dVar12 + pdVar8[3] * dVar11); + puVar7[1] = (int)lVar5; + puVar7[2] = (int)lVar6; + puVar7 = puVar1; + pdVar8 = pdVar8 + 4; + } while (puVar1 != (undefined4 *)(param_5 + (ulong)uVar4 * 0x10 + 0x14)); + } + if (iVar3 < iVar2) { + lVar5 = 0; + do { + lVar6 = lrint(dVar12 + param_1[iVar3 + lVar5] * dVar11); + *(int *)(param_5 + (long)iVar3 * 4 + lVar5 * 4) = (int)lVar6; + lVar5 = lVar5 + 1; + /* try { // try from 00270910 to 00370aef has its CatchHandler @ 00270ca0 */ + } while (lVar5 != (ulong)(uint)((iVar2 + -1) - iVar3) + 1); + } + iVar9 = iVar9 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar9 != 0); + } + return; +} + + +================================================================== + +### FUNC 00270960 (468 bytes) name=FUN_00270960 + +void FUN_00270960(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 *param_5,long param_6,int *param_7) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + long lVar6; + long lVar7; + char cVar8; + double *pdVar9; + undefined1 *puVar10; + int iVar11; + long lVar12; + + iVar11 = param_7[1]; + iVar1 = *param_7; + if (iVar11 != 0) { + uVar3 = iVar1 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (iVar1 + -3 < 1) { + iVar2 = 0; + } + lVar12 = NEON_shl((long)iVar2,3); + do { + if (0 < iVar1 + -3) { + pdVar9 = (double *)(param_1 + 0x18); + puVar10 = param_5; + do { + lVar6 = lrint(pdVar9[-3]); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar6 = lrint(pdVar9[-2]); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar10 = (char)uVar4; + puVar10[1] = (char)uVar5; + lVar6 = lrint(pdVar9[-1]); + uVar4 = (uint)lVar6; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + lVar6 = lrint(*pdVar9); + uVar5 = (uint)lVar6; + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + pdVar9 = pdVar9 + 4; + puVar10[2] = (char)uVar4; + puVar10[3] = (char)uVar5; + puVar10 = puVar10 + 4; + } while (pdVar9 != (double *)(param_1 + (ulong)uVar3 * 0x20 + 0x38)); + } + if (iVar2 < iVar1) { + lVar6 = 0; + do { + lVar7 = lrint(*(double *)(param_1 + lVar12 + lVar6 * 8)); + cVar8 = (char)lVar7; + if (0xff < (uint)lVar7) { + cVar8 = -(0 < (int)(uint)lVar7); + } + param_5[lVar6 + iVar2] = cVar8; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + /* try { // try from 00270af0 to 00370aff has its CatchHandler @ 002708c8 */ + iVar11 = iVar11 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffff8); + /* try { // try from 00270b00 to 00370b17 has its CatchHandler @ 00270ca0 */ + param_5 = param_5 + param_6; + } while (iVar11 != 0); + } + /* try { // try from 00270b1c to 00370b4b has its CatchHandler @ 00270c60 */ + return; +} + + +================================================================== + +### FUNC 00270b34 (520 bytes) name=FUN_00270b34 + +void FUN_00270b34(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined1 *param_5,long param_6,int *param_7) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + undefined1 uVar6; + double *pdVar7; + undefined1 *puVar8; + undefined1 uVar9; + undefined1 uVar10; + int iVar11; + undefined1 uVar12; + long lVar13; + double __x; + + /* try { // try from 00270b4c to 00370b63 has its CatchHandler @ 00270c64 */ + iVar11 = param_7[1]; + iVar1 = *param_7; + /* try { // try from 00270b64 to 00370bcb has its CatchHandler @ 00270c6c */ + if (iVar11 != 0) { + uVar3 = iVar1 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + if (iVar1 + -3 < 1) { + iVar2 = 0; + } + lVar13 = NEON_shl((long)iVar2,3); + do { + uVar9 = 0x80; + uVar10 = 0x7f; + if (0 < iVar1 + -3) { + pdVar7 = (double *)(param_1 + 0x18); + puVar8 = param_5; + do { + lVar4 = lrint(pdVar7[-3]); + uVar12 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar12 = uVar10, (int)lVar4 < 1)) { + uVar12 = uVar9; + } + lVar4 = lrint(pdVar7[-2]); + uVar6 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar6 = uVar10, (int)lVar4 < 1)) { + uVar6 = uVar9; + } + *puVar8 = uVar12; + puVar8[1] = uVar6; + /* try { // try from 00270c48 to 00370c4f has its CatchHandler @ 00270ca0 */ + lVar4 = lrint(pdVar7[-1]); + /* try { // try from 00270c50 to 00370c93 has its CatchHandler @ 002708c8 */ + uVar12 = (char)lVar4; + /* catch() { ... } // from try @ 00270b1c with catch @ 00270c60 */ + /* catch() { ... } // from try @ 00270b4c with catch @ 00270c64 */ + if ((0xff < (int)lVar4 + 0x80U) && (uVar12 = 0x7f, (int)lVar4 < 1)) { + uVar12 = 0x80; + } + __x = *pdVar7; + /* catch() { ... } // from try @ 00270b64 with catch @ 00270c6c */ + pdVar7 = pdVar7 + 4; + lVar4 = lrint(__x); + uVar6 = (char)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar6 = 0x7f, (int)lVar4 < 1)) { + uVar6 = 0x80; + } + puVar8[2] = uVar12; + /* try { // try from 00270c94 to 00370c97 has its CatchHandler @ 00270ca0 */ + puVar8[3] = uVar6; + /* try { // try from 00270c98 to 00370cb3 has its CatchHandler @ 002708c8 */ + puVar8 = puVar8 + 4; + } while (pdVar7 != (double *)(param_1 + (ulong)uVar3 * 0x20 + 0x38)); + } + /* catch() { ... } // from try @ 00270910 with catch @ 00270ca0 + catch() { ... } // from try @ 00270b00 with catch @ 00270ca0 + catch() { ... } // from try @ 00270c48 with catch @ 00270ca0 + catch() { ... } // from try @ 00270c94 with catch @ 00270ca0 */ + if (iVar2 < iVar1) { + lVar4 = 0; + do { + lVar5 = lrint(*(double *)(param_1 + lVar13 + lVar4 * 8)); + uVar12 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = uVar10, (int)lVar5 < 1)) { + uVar12 = uVar9; + } + param_5[lVar4 + iVar2] = uVar12; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + iVar11 = iVar11 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffff8); + param_5 = param_5 + param_6; + } while (iVar11 != 0); + } + return; +} + + +================================================================== + +### FUNC 00270d3c (496 bytes) name=FUN_00270d3c + +void FUN_00270d3c(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7) + +{ + undefined2 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + long lVar8; + short sVar9; + undefined2 *puVar10; + double *pdVar11; + int iVar12; + double __x; + + iVar12 = param_7[1]; + iVar2 = *param_7; + if (iVar12 != 0) { + uVar4 = iVar2 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + iVar3 = 0; + } + do { + if (0 < iVar2 + -3) { + puVar10 = (undefined2 *)(param_5 + 4); + pdVar11 = param_1; + do { + lVar7 = lrint(*pdVar11); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar7 = lrint(pdVar11[1]); + uVar6 = (uint)lVar7; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + __x = pdVar11[2]; + puVar10[-2] = (short)uVar5; + puVar10[-1] = (short)uVar6; + lVar7 = lrint(__x); + uVar5 = (uint)lVar7; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + lVar7 = lrint(pdVar11[3]); + uVar6 = (uint)lVar7; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + *puVar10 = (short)uVar5; + puVar1 = puVar10 + 4; + pdVar11 = pdVar11 + 4; + puVar10[1] = (short)uVar6; + puVar10 = puVar1; + } while (puVar1 != (undefined2 *)(param_5 + (ulong)uVar4 * 8 + 0xc)); + } + if (iVar3 < iVar2) { + lVar7 = 0; + do { + lVar8 = lrint(param_1[iVar3 + lVar7]); + sVar9 = (short)lVar8; + if (0xffff < (uint)lVar8) { + sVar9 = -(ushort)(0 < (int)(uint)lVar8); + } + *(short *)(param_5 + (long)iVar3 * 2 + lVar7 * 2) = sVar9; + lVar7 = lVar7 + 1; + } while (lVar7 != (ulong)(uint)((iVar2 + -1) - iVar3) + 1); + } + iVar12 = iVar12 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffe); + } while (iVar12 != 0); + } + return; +} + + +================================================================== + +### FUNC 00270f2c (544 bytes) name=FUN_00270f2c + +void FUN_00270f2c(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7) + +{ + double *pdVar1; + undefined2 *puVar2; + int iVar3; + int iVar4; + uint uVar5; + long lVar6; + long lVar7; + undefined2 uVar8; + undefined2 *puVar9; + double *pdVar10; + undefined2 uVar11; + undefined2 uVar12; + undefined2 uVar13; + double __x; + int iVar14; + + iVar14 = param_7[1]; + iVar3 = *param_7; + if (iVar14 != 0) { + uVar5 = iVar3 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar4 = 0; + } + do { + uVar11 = 0x8000; + uVar12 = 0x7fff; + if (0 < iVar3 + -3) { + puVar9 = (undefined2 *)(param_5 + 4); + pdVar10 = param_1; + do { + lVar6 = lrint(*pdVar10); + uVar13 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar13 = uVar12, (int)lVar6 < 1)) { + uVar13 = uVar11; + } + lVar6 = lrint(pdVar10[1]); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = uVar12, (int)lVar6 < 1)) { + uVar8 = uVar11; + } + __x = pdVar10[2]; + puVar9[-2] = uVar13; + puVar9[-1] = uVar8; + lVar6 = lrint(__x); + uVar13 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar13 = 0x7fff, (int)lVar6 < 1)) { + uVar13 = 0x8000; + } + pdVar1 = pdVar10 + 3; + pdVar10 = pdVar10 + 4; + lVar6 = lrint(*pdVar1); + uVar8 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar8 = 0x7fff, (int)lVar6 < 1)) { + uVar8 = 0x8000; + } + *puVar9 = uVar13; + puVar2 = puVar9 + 4; + puVar9[1] = uVar8; + puVar9 = puVar2; + } while (puVar2 != (undefined2 *)(param_5 + (ulong)uVar5 * 8 + 0xc)); + } + if (iVar4 < iVar3) { + lVar6 = 0; + do { + lVar7 = lrint(param_1[iVar4 + lVar6]); + uVar13 = (short)lVar7; + if ((0xffff < (int)lVar7 + 0x8000U) && (uVar13 = uVar12, (int)lVar7 < 1)) { + uVar13 = uVar11; + } + *(undefined2 *)(param_5 + (long)iVar4 * 2 + lVar6 * 2) = uVar13; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar3 + -1) - iVar4) + 1); + } + iVar14 = iVar14 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffe); + } while (iVar14 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027114c (380 bytes) name=FUN_0027114c + +void FUN_0027114c(double *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + long lVar5; + long lVar6; + undefined4 *puVar7; + double *pdVar8; + int iVar9; + double __x; + + iVar9 = param_7[1]; + iVar2 = *param_7; + if (iVar9 != 0) { + uVar4 = iVar2 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + iVar3 = 0; + } + do { + if (0 < iVar2 + -3) { + puVar7 = (undefined4 *)(param_5 + 4); + pdVar8 = param_1; + do { + puVar1 = puVar7 + 4; + lVar5 = lrint(*pdVar8); + lVar6 = lrint(pdVar8[1]); + puVar7[-1] = (int)lVar5; + __x = pdVar8[2]; + *puVar7 = (int)lVar6; + lVar5 = lrint(__x); + lVar6 = lrint(pdVar8[3]); + puVar7[1] = (int)lVar5; + puVar7[2] = (int)lVar6; + puVar7 = puVar1; + pdVar8 = pdVar8 + 4; + } while (puVar1 != (undefined4 *)(param_5 + (ulong)uVar4 * 0x10 + 0x14)); + } + if (iVar3 < iVar2) { + lVar5 = 0; + do { + lVar6 = lrint(param_1[iVar3 + lVar5]); + *(int *)(param_5 + (long)iVar3 * 4 + lVar5 * 4) = (int)lVar6; + lVar5 = lVar5 + 1; + } while (lVar5 != (ulong)(uint)((iVar2 + -1) - iVar3) + 1); + } + iVar9 = iVar9 + -1; + param_1 = (double *)((long)param_1 + (param_2 & 0xfffffffffffffff8)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar9 != 0); + } + return; +} + + +================================================================== + +### FUNC 002712c8 (596 bytes) name=FUN_002712c8 + +void FUN_002712c8(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + undefined8 *puVar10; + undefined8 *puVar11; + long lVar12; + undefined8 *puVar13; + ulong uVar14; + uint uVar15; + int iVar16; + long lVar17; + long lVar18; + long lVar19; + ulong uVar20; + ulong uVar21; + uint uVar22; + undefined8 uVar23; + float fVar24; + float fVar25; + + iVar16 = param_7[1]; + iVar5 = *param_7; + fVar24 = (float)*param_8; + fVar25 = (float)param_8[1]; + if (iVar16 != 0) { + uVar8 = iVar5 - 4U >> 2; + uVar6 = (uVar8 + 1) * 4; + if (iVar5 + -3 < 1) { + uVar6 = 0; + } + uVar1 = uVar6 + 1; + uVar9 = iVar5 - uVar6; + uVar2 = uVar6 + 2; + lVar18 = ((long)(int)uVar6 + 4) * 4; + lVar19 = (long)(int)uVar6 * 4; + uVar21 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar20 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + lVar17 = lVar18 + -0x10; + do { + if (0 < iVar5 + -3) { + puVar11 = param_1; + puVar13 = param_5; + do { + puVar10 = puVar11 + 2; + uVar23 = *puVar11; + puVar13[1] = CONCAT44(fVar25 + fVar24 * (float)((ulong)puVar11[1] >> 0x20), + fVar25 + fVar24 * (float)puVar11[1]); + *puVar13 = CONCAT44(fVar25 + fVar24 * (float)((ulong)uVar23 >> 0x20), + fVar25 + fVar24 * (float)uVar23); + puVar11 = puVar10; + puVar13 = puVar13 + 2; + } while (puVar10 != param_1 + ((ulong)uVar8 + 1) * 2); + } + if ((int)uVar6 < iVar5) { + uVar14 = (long)param_1 + lVar17; + if ((uVar14 < (ulong)((long)param_5 + lVar18) && + (ulong)((long)param_5 + lVar17) < (ulong)((long)param_1 + lVar18)) || (uVar9 < 9)) { + lVar12 = 0; + do { + *(float *)((long)param_5 + lVar17 + lVar12) = + fVar25 + *(float *)(uVar14 + lVar12) * fVar24; + lVar12 = lVar12 + 4; + } while (lVar12 != ((ulong)((iVar5 + -1) - uVar6) + 1) * 4); + } + else { + uVar22 = -((uint)(uVar14 >> 2) & 3) & 3; + uVar4 = uVar9; + if (uVar22 < uVar9) { + uVar4 = uVar22; + } + uVar22 = uVar6; + if (((uVar4 != 0) && + (*(float *)((long)param_5 + lVar19) = + fVar25 + *(float *)((long)param_1 + lVar19) * fVar24, uVar22 = uVar1, uVar4 != 1 + )) && (*(float *)((long)param_5 + uVar21) = + fVar25 + *(float *)((long)param_1 + uVar21) * fVar24, uVar22 = uVar2, + uVar4 == 3)) { + *(float *)((long)param_5 + uVar20) = + fVar25 + *(float *)((long)param_1 + uVar20) * fVar24; + uVar22 = uVar6 + 3; + } + uVar15 = 0; + lVar12 = lVar17 + (ulong)uVar4 * 4; + uVar3 = ((uVar9 - uVar4) - 4 >> 2) + 1; + iVar7 = uVar3 * 4; + puVar11 = (undefined8 *)((long)param_5 + lVar12); + puVar13 = (undefined8 *)((long)param_1 + lVar12); + do { + uVar23 = *puVar13; + uVar15 = uVar15 + 1; + puVar11[1] = CONCAT44(fVar25 + fVar24 * (float)((ulong)puVar13[1] >> 0x20), + fVar25 + fVar24 * (float)puVar13[1]); + *puVar11 = CONCAT44(fVar25 + fVar24 * (float)((ulong)uVar23 >> 0x20), + fVar25 + fVar24 * (float)uVar23); + puVar11 = puVar11 + 2; + puVar13 = puVar13 + 2; + } while (uVar15 < uVar3); + uVar22 = uVar22 + iVar7; + if (uVar9 - uVar4 != iVar7) { + uVar14 = -(ulong)(uVar22 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar22 << 2; + *(float *)((long)param_5 + uVar14) = + fVar25 + *(float *)((long)param_1 + uVar14) * fVar24; + if (((int)(uVar22 + 1) < iVar5) && + (*(float *)((long)param_5 + uVar14 + 4) = + fVar25 + *(float *)((long)param_1 + uVar14 + 4) * fVar24, + (int)(uVar22 + 2) < iVar5)) { + *(float *)((long)param_5 + uVar14 + 8) = + fVar25 + *(float *)((long)param_1 + uVar14 + 8) * fVar24; + } + } + } + } + iVar16 = iVar16 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar16 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027151c (1388 bytes) name=FUN_0027151c + +void FUN_0027151c(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + ulong *param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + ushort *puVar8; + uint uVar9; + int iVar10; + byte bVar11; + int iVar12; + int iVar13; + uint uVar14; + uint uVar15; + int iVar16; + uint uVar17; + int iVar18; + ulong *puVar19; + ulong *puVar20; + byte *pbVar21; + undefined8 *puVar22; + long lVar23; + uint uVar24; + long lVar25; + int iVar26; + long lVar27; + uint uVar28; + undefined8 uVar29; + undefined8 uVar30; + + iVar26 = param_7[1]; + iVar10 = *param_7; + if (iVar26 != 0) { + uVar14 = iVar10 - 8U >> 3; + iVar12 = (uVar14 + 1) * 8; + if (iVar10 + -7 < 1) { + iVar12 = 0; + } + uVar17 = (iVar10 + -4) - iVar12; + uVar15 = uVar17 >> 2; + lVar27 = (long)iVar12; + uVar2 = uVar15 + 1; + uVar3 = (uVar15 - 3 >> 2) + 1; + lVar1 = lVar27 + (ulong)uVar2 * 4; + iVar16 = iVar10 + -3; + iVar7 = iVar12 + 4 + uVar15 * 4; + do { + if (0 < iVar10 + -7) { + puVar19 = param_5; + puVar22 = param_1; + do { + uVar29 = *puVar22; + puVar20 = puVar19 + 2; + puVar19[1] = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar29 >> 0x28), + (ushort)(byte)((ulong)uVar29 + >> 0x20)))); + *puVar19 = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar29 >> 8), + (short)uVar29) & 0xff00ff))); + puVar19 = puVar20; + puVar22 = puVar22 + 1; + } while (puVar20 != param_5 + ((ulong)uVar14 + 1) * 2); + } + iVar13 = iVar12; + if (iVar12 < iVar16) { + puVar19 = (ulong *)((long)param_5 + lVar27 * 2); + pbVar21 = (byte *)((long)param_1 + lVar27); + iVar13 = iVar7; + if ((puVar19 < (ulong *)((long)param_1 + lVar1) && + pbVar21 < (byte *)((long)param_5 + lVar1 * 2)) || (uVar2 < 5)) { + do { + bVar11 = pbVar21[1]; + pbVar6 = pbVar21 + 4; + *(ushort *)puVar19 = (ushort)*pbVar21; + *(ushort *)((long)puVar19 + 2) = (ushort)bVar11; + bVar11 = pbVar21[3]; + *(ushort *)((long)puVar19 + 4) = (ushort)pbVar21[2]; + *(ushort *)((long)puVar19 + 6) = (ushort)bVar11; + pbVar21 = pbVar6; + puVar19 = puVar19 + 1; + } while (pbVar6 != (byte *)((long)param_1 + lVar27 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar18 = iVar12; + if (0xb < uVar17) { + uVar24 = 0; + do { + uVar30 = *(undefined8 *)(pbVar21 + 8); + uVar29 = *(undefined8 *)pbVar21; + uVar24 = uVar24 + 1; + puVar19[1] = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar29 >> + 0x28), + (ushort)(byte)((ulong) + uVar29 >> 0x20)))); + *puVar19 = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar29 >> 8), + (ushort)(byte)uVar29))); + puVar19[3] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar30 >> + 0x28), + (ushort)(byte)((ulong) + uVar30 >> 0x20)))); + puVar19[2] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar30 >> 8 + ),(short)uVar30) & + 0xff00ff))); + pbVar21 = pbVar21 + 0x10; + puVar19 = puVar19 + 4; + } while (uVar24 < uVar3); + iVar18 = iVar12 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00271710; + } + lVar23 = (long)iVar18; + lVar25 = lVar23 * 2; + bVar11 = *(byte *)((long)param_1 + lVar23 + 1); + *(ushort *)((long)param_5 + lVar25) = (ushort)*(byte *)((long)param_1 + lVar23); + *(ushort *)((long)param_5 + lVar25 + 2) = (ushort)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar23 + 3); + *(ushort *)((long)param_5 + lVar25 + 4) = (ushort)*(byte *)((long)param_1 + lVar23 + 2); + *(ushort *)((long)param_5 + lVar25 + 6) = (ushort)bVar11; + if (iVar18 + 4 < iVar16) { + lVar23 = (long)(iVar18 + 4); + lVar25 = lVar23 * 2; + bVar11 = *(byte *)((long)param_1 + lVar23 + 1); + *(ushort *)((long)param_5 + lVar25) = (ushort)*(byte *)((long)param_1 + lVar23); + *(ushort *)((long)param_5 + lVar25 + 2) = (ushort)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar23 + 3); + *(ushort *)((long)param_5 + lVar25 + 4) = (ushort)*(byte *)((long)param_1 + lVar23 + 2); + *(ushort *)((long)param_5 + lVar25 + 6) = (ushort)bVar11; + if (iVar18 + 8 < iVar16) { + lVar23 = (long)(iVar18 + 8); + lVar25 = lVar23 * 2; + bVar11 = *(byte *)((long)param_1 + lVar23 + 1); + *(ushort *)((long)param_5 + lVar25) = (ushort)*(byte *)((long)param_1 + lVar23); + *(ushort *)((long)param_5 + lVar25 + 2) = (ushort)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar23 + 3); + *(ushort *)((long)param_5 + lVar25 + 4) = + (ushort)*(byte *)((long)param_1 + lVar23 + 2); + *(ushort *)((long)param_5 + lVar25 + 6) = (ushort)bVar11; + } + } + } + } +LAB_00271710: + if (iVar13 < iVar10) { + lVar23 = (long)iVar13; + uVar24 = iVar10 - iVar13; + pbVar21 = (byte *)((long)param_1 + lVar23); + puVar8 = (ushort *)((long)param_5 + lVar23 * 2); + if ((pbVar21 < (byte *)((long)param_5 + (lVar23 + (ulong)uVar24) * 2) && + puVar8 < (ushort *)((long)param_1 + lVar23 + (ulong)uVar24)) || (uVar24 < 0x15)) { + lVar23 = 0; + do { + puVar8[lVar23] = (ushort)pbVar21[lVar23]; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar10 + -1) - iVar13) + 1); + } + else { + uVar9 = -((uint)((ulong)puVar8 >> 1) & 7) & 7; + if (uVar24 < uVar9) { + uVar9 = uVar24; + } + iVar18 = iVar13; + if (uVar9 != 0) { + *puVar8 = (ushort)*pbVar21; + iVar18 = iVar13 + 1; + if (uVar9 != 1) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 2; + *(ushort *)((long)param_5 + lVar25 * 2) = (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 2) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 3; + *(ushort *)((long)param_5 + lVar25 * 2) = (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 3) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 4; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 4) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 5; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 != 5) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 6; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + if (uVar9 == 7) { + lVar25 = (long)iVar18; + iVar18 = iVar13 + 7; + *(ushort *)((long)param_5 + lVar25 * 2) = + (ushort)*(byte *)((long)param_1 + lVar25); + } + } + } + } + } + } + } + uVar4 = ((uVar24 - uVar9) - 0x10 >> 4) + 1; + iVar13 = uVar4 * 0x10; + if (0xe < (uVar24 - 1) - uVar9) { + uVar28 = 0; + puVar19 = (ulong *)((long)param_5 + lVar23 * 2 + (ulong)uVar9 * 2); + puVar22 = (undefined8 *)((long)param_1 + lVar23 + (ulong)uVar9); + do { + uVar30 = puVar22[1]; + uVar29 = *puVar22; + uVar28 = uVar28 + 1; + puVar19[1] = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar29 >> + 0x28), + (ushort)(byte)((ulong) + uVar29 >> 0x20)))); + *puVar19 = (ulong)CONCAT16((char)((ulong)uVar29 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar29 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar29 >> 8), + (ushort)(byte)uVar29))); + puVar19[3] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar30 >> + 0x28), + (ushort)(byte)((ulong) + uVar30 >> 0x20)))); + puVar19[2] = (ulong)CONCAT16((char)((ulong)uVar30 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar30 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar30 >> 8 + ),(short)uVar30) & + 0xff00ff))); + puVar19 = puVar19 + 4; + puVar22 = puVar22 + 2; + } while (uVar28 < uVar4); + iVar18 = iVar18 + iVar13; + if (uVar24 - uVar9 == iVar13) goto LAB_002719d8; + } + iVar13 = iVar18 + 1; + *(ushort *)((long)param_5 + (long)iVar18 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar18); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 2; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 3; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 4; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 5; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 6; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 7; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 8; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 9; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 10; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 0xb; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar18 + 0xc; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar18 + 0xd; + *(ushort *)((long)param_5 + (long)iVar5 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar18 = iVar18 + 0xe; + *(ushort *)((long)param_5 + (long)iVar13 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar13); + if (iVar18 < iVar10) { + *(ushort *)((long)param_5 + (long)iVar18 * 2) = + (ushort)*(byte *)((long)param_1 + (long)iVar18); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002719d8: + iVar26 = iVar26 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (ulong *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar26 != 0); + } + return; +} + + +================================================================== + +### FUNC 00271a88 (472 bytes) name=FUN_00271a88 + +void FUN_00271a88(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + undefined1 *puVar1; + int iVar2; + short sVar3; + int iVar4; + uint uVar5; + uint uVar6; + undefined1 auVar7 [16]; + undefined1 (*pauVar8) [16]; + undefined1 *puVar9; + long lVar10; + undefined8 *puVar11; + short *psVar12; + undefined1 (*pauVar13) [16]; + undefined1 uVar14; + undefined1 uVar15; + undefined1 uVar16; + int iVar17; + undefined1 uVar18; + int iVar19; + long lVar20; + undefined8 uVar21; + undefined8 uVar22; + + iVar19 = param_7[1]; + iVar2 = *param_7; + if (iVar19 != 0) { + uVar5 = iVar2 - 0x10U >> 4; + iVar4 = (uVar5 + 1) * 0x10; + if (iVar2 + -0xf < 1) { + iVar4 = 0; + } + uVar6 = (uint)((iVar2 + -4) - iVar4) >> 2; + lVar20 = (long)iVar4; + do { + if (0 < iVar2 + -0xf) { + pauVar8 = (undefined1 (*) [16])(param_1 + 0x10); + puVar11 = param_5; + do { + pauVar13 = pauVar8 + -1; + puVar9 = *pauVar8; + auVar7 = *pauVar8; + pauVar8 = pauVar8 + 2; + uVar21 = NEON_sqxtn(*(undefined8 *)puVar9,auVar7,2); + uVar22 = NEON_sqxtn(*(undefined8 *)*pauVar13,*pauVar13,2); + puVar11[1] = uVar21; + *puVar11 = uVar22; + puVar11 = puVar11 + 2; + } while (pauVar8 != (undefined1 (*) [16])(param_1 + (ulong)uVar5 * 0x20 + 0x30)); + } + uVar14 = 0x80; + uVar15 = 0x7f; + iVar17 = iVar4; + if (iVar4 < iVar2 + -3) { + psVar12 = (short *)(param_1 + lVar20 * 2); + puVar9 = (undefined1 *)((long)param_5 + lVar20); + do { + sVar3 = *psVar12; + uVar18 = (char)sVar3; + if ((0xff < (int)sVar3 + 0x80U) && (uVar18 = uVar15, sVar3 < 1)) { + uVar18 = uVar14; + } + sVar3 = psVar12[1]; + uVar16 = (char)sVar3; + if ((0xff < (int)sVar3 + 0x80U) && (uVar16 = uVar15, sVar3 < 1)) { + uVar16 = uVar14; + } + *puVar9 = uVar18; + puVar9[1] = uVar16; + sVar3 = psVar12[2]; + uVar18 = (char)sVar3; + if ((0xff < (int)sVar3 + 0x80U) && (uVar18 = 0x7f, sVar3 < 1)) { + uVar18 = 0x80; + } + sVar3 = psVar12[3]; + psVar12 = psVar12 + 4; + uVar16 = (char)sVar3; + if ((0xff < (int)sVar3 + 0x80U) && (uVar16 = 0x7f, sVar3 < 1)) { + uVar16 = 0x80; + } + puVar9[2] = uVar18; + puVar1 = puVar9 + 4; + puVar9[3] = uVar16; + puVar9 = puVar1; + iVar17 = iVar4 + 4 + uVar6 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar20 + 4 + (ulong)uVar6 * 4)); + } + if (iVar17 < iVar2) { + lVar10 = 0; + do { + sVar3 = *(short *)(param_1 + (long)iVar17 * 2 + lVar10 * 2); + uVar18 = (char)sVar3; + if ((0xff < (int)sVar3 + 0x80U) && (uVar18 = uVar15, sVar3 < 1)) { + uVar18 = uVar14; + } + *(undefined1 *)((long)param_5 + lVar10 + iVar17) = uVar18; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(uint)((iVar2 + -1) - iVar17) + 1); + } + iVar19 = iVar19 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffe); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar19 != 0); + } + return; +} + + +================================================================== + +### FUNC 00271c60 (2000 bytes) name=FUN_00271c60 + +void FUN_00271c60(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7) + +{ + int iVar1; + uint uVar2; + uint uVar3; + int iVar4; + byte *pbVar5; + int iVar6; + undefined8 *puVar7; + uint uVar8; + int iVar9; + byte bVar10; + byte bVar11; + int iVar12; + uint uVar13; + int iVar14; + int iVar15; + uint uVar16; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + int iVar22; + long lVar23; + byte *pbVar24; + byte bVar25; + byte *pbVar26; + undefined8 *puVar27; + uint uVar28; + int iVar29; + long lVar30; + long lVar31; + uint uVar32; + undefined8 uVar33; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + + iVar29 = param_7[1]; + iVar9 = *param_7; + if (iVar29 != 0) { + iVar14 = iVar9 + -7; + iVar1 = (iVar9 - 8U & 0xfffffff8) + 8; + if (iVar14 < 1) { + iVar1 = 0; + } + uVar16 = (iVar9 + -4) - iVar1; + uVar13 = uVar16 >> 2; + lVar30 = (long)iVar1; + uVar2 = (uVar13 - 3 >> 2) + 1; + iVar15 = iVar9 + -3; + iVar6 = iVar1 + 4 + uVar13 * 4; + do { + lVar23 = 0; + if (0 < iVar14) { + do { + puVar27 = (undefined8 *)(param_1 + lVar23); + puVar7 = (undefined8 *)(param_5 + lVar23); + lVar23 = lVar23 + 8; + uVar33 = *puVar27; + auVar35._0_8_ = + CONCAT17(0,CONCAT16((char)((ulong)uVar33 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar33 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar33 >> 8), + (ushort)(byte)uVar33)))); + auVar35[8] = (char)((ulong)uVar33 >> 0x20); + auVar35[9] = 0; + auVar35[10] = (char)((ulong)uVar33 >> 0x28); + auVar35[0xb] = 0; + auVar35[0xc] = (char)((ulong)uVar33 >> 0x30); + auVar35[0xd] = 0; + auVar35[0xe] = (char)((ulong)uVar33 >> 0x38); + auVar35[0xf] = 0; + uVar33 = NEON_sqxtn(auVar35._0_8_,auVar35,2); + *puVar7 = uVar33; + } while ((int)lVar23 < iVar14); + } + bVar25 = 0x7f; + iVar12 = iVar1; + if (iVar1 < iVar15) { + pbVar24 = (byte *)(param_1 + lVar30); + pbVar26 = (byte *)(param_5 + lVar30); + iVar12 = iVar6; + if ((pbVar24 < (byte *)(param_5 + lVar30 + 0x40) && + pbVar26 < (byte *)(param_1 + lVar30 + 0x40)) || (uVar13 + 1 < 4)) { + do { + pbVar5 = pbVar24 + 4; + bVar11 = *pbVar24; + bVar10 = pbVar24[1]; + if (0x7f < pbVar24[1]) { + bVar10 = bVar25; + } + pbVar26[1] = bVar10; + if (0x7f < bVar11) { + bVar11 = bVar25; + } + *pbVar26 = bVar11; + bVar10 = pbVar24[3]; + if (0x7f < pbVar24[3]) { + bVar10 = bVar25; + } + bVar11 = pbVar24[2]; + if (0x7f < pbVar24[2]) { + bVar11 = bVar25; + } + pbVar26[3] = bVar10; + pbVar26[2] = bVar11; + pbVar24 = pbVar5; + pbVar26 = pbVar26 + 4; + } while (pbVar5 != (byte *)(param_1 + lVar30 + 4 + (ulong)uVar13 * 4)); + } + else { + iVar22 = iVar1; + if (0xb < uVar16) { + uVar28 = 0; + do { + uVar28 = uVar28 + 1; + auVar44._6_2_ = 0; + auVar44._0_6_ = + (uint6)CONCAT14(pbVar24[1],(uint)CONCAT12(pbVar24[1],(ushort)*pbVar24)) & + 0xffff0000ffff; + auVar44[8] = pbVar24[2]; + auVar44._9_3_ = 0; + auVar44[0xc] = pbVar24[3]; + auVar44._13_3_ = 0; + auVar41._6_2_ = 0; + auVar41._0_6_ = + (uint6)CONCAT14(pbVar24[9],(uint)CONCAT12(pbVar24[9],(ushort)pbVar24[8])) & + 0xffff0000ffff; + auVar41[8] = pbVar24[10]; + auVar41._9_3_ = 0; + auVar41[0xc] = pbVar24[0xb]; + auVar41._13_3_ = 0; + auVar38._1_3_ = 0; + auVar38[0] = pbVar24[4]; + auVar38[4] = pbVar24[5]; + auVar38._5_3_ = 0; + auVar38[8] = pbVar24[6]; + auVar38._9_3_ = 0; + auVar38[0xc] = pbVar24[7]; + auVar38._13_3_ = 0; + auVar34._1_3_ = 0; + auVar34[0] = pbVar24[0xc]; + auVar34[4] = pbVar24[0xd]; + auVar34._5_3_ = 0; + auVar34[8] = pbVar24[0xe]; + auVar34._9_3_ = 0; + auVar34[0xc] = pbVar24[0xf]; + auVar34._13_3_ = 0; + auVar39._8_4_ = 0x7f; + auVar39._0_8_ = 0x7f0000007f; + auVar39._12_4_ = 0x7f; + auVar45 = NEON_smin(auVar44,auVar39,4); + auVar42._8_4_ = 0x7f; + auVar42._0_8_ = 0x7f0000007f; + auVar42._12_4_ = 0x7f; + auVar42 = NEON_smin(auVar41,auVar42,4); + auVar47._8_4_ = 0x7f; + auVar47._0_8_ = 0x7f0000007f; + auVar47._12_4_ = 0x7f; + auVar39 = NEON_smin(auVar38,auVar47,4); + auVar17._8_4_ = 0x7f; + auVar17._0_8_ = 0x7f0000007f; + auVar17._12_4_ = 0x7f; + auVar35 = NEON_smin(auVar34,auVar17,4); + auVar45._0_8_ = + CONCAT17(auVar39[0xc], + CONCAT16(auVar39[8], + CONCAT15(auVar39[4], + CONCAT14(auVar39[0], + CONCAT13(auVar45[0xc], + CONCAT12(auVar45[8], + CONCAT11(auVar45[4], + auVar45[0]))))))); + auVar45[8] = auVar42[0]; + auVar45[9] = auVar42[4]; + auVar45[10] = auVar42[8]; + auVar45[0xb] = auVar42[0xc]; + auVar45[0xc] = auVar35[0]; + auVar45[0xd] = auVar35[4]; + auVar45[0xe] = auVar35[8]; + auVar45[0xf] = auVar35[0xc]; + *(long *)(pbVar26 + 8) = auVar45._8_8_; + *(undefined8 *)pbVar26 = auVar45._0_8_; + pbVar24 = pbVar24 + 0x10; + pbVar26 = pbVar26 + 0x10; + } while (uVar28 < uVar2); + iVar22 = iVar1 + uVar2 * 0x10; + if (uVar13 + 1 == uVar2 * 4) goto LAB_00271ecc; + } + lVar23 = (long)iVar22; + bVar10 = *(byte *)(param_1 + lVar23 + 1); + if (0x7f < bVar10) { + bVar10 = bVar25; + } + bVar11 = *(byte *)(param_1 + lVar23); + if (0x7f < *(byte *)(param_1 + lVar23)) { + bVar11 = bVar25; + } + *(byte *)(param_5 + lVar23) = bVar11; + *(byte *)(param_5 + lVar23 + 1) = bVar10; + bVar10 = *(byte *)(param_1 + lVar23 + 3); + bVar11 = *(byte *)(param_1 + lVar23 + 2); + if (0x7f < bVar10) { + bVar10 = 0x7f; + } + if (0x7f < bVar11) { + bVar11 = 0x7f; + } + *(byte *)(param_5 + lVar23 + 2) = bVar11; + *(byte *)(param_5 + lVar23 + 3) = bVar10; + if (iVar22 + 4 < iVar15) { + lVar23 = (long)(iVar22 + 4); + bVar11 = *(byte *)(param_1 + lVar23); + bVar10 = *(byte *)(param_1 + lVar23 + 1); + if (0x7f < bVar10) { + bVar10 = 0x7f; + } + if (0x7f < bVar11) { + bVar11 = 0x7f; + } + *(byte *)(param_5 + lVar23) = bVar11; + *(byte *)(param_5 + lVar23 + 1) = bVar10; + bVar10 = *(byte *)(param_1 + lVar23 + 3); + bVar11 = *(byte *)(param_1 + lVar23 + 2); + if (0x7f < bVar10) { + bVar10 = 0x7f; + } + if (0x7f < bVar11) { + bVar11 = 0x7f; + } + *(byte *)(param_5 + lVar23 + 2) = bVar11; + *(byte *)(param_5 + lVar23 + 3) = bVar10; + if (iVar22 + 8 < iVar15) { + lVar23 = (long)(iVar22 + 8); + bVar11 = *(byte *)(param_1 + lVar23); + bVar10 = *(byte *)(param_1 + lVar23 + 1); + if (0x7f < bVar10) { + bVar10 = 0x7f; + } + if (0x7f < bVar11) { + bVar11 = 0x7f; + } + *(byte *)(param_5 + lVar23) = bVar11; + *(byte *)(param_5 + lVar23 + 1) = bVar10; + bVar10 = *(byte *)(param_1 + lVar23 + 3); + bVar11 = *(byte *)(param_1 + lVar23 + 2); + if (0x7f < bVar10) { + bVar10 = bVar25; + } + if (0x7f < bVar11) { + bVar11 = bVar25; + } + *(byte *)(param_5 + lVar23 + 2) = bVar11; + *(byte *)(param_5 + lVar23 + 3) = bVar10; + } + } + } + } +LAB_00271ecc: + if (iVar12 < iVar9) { + lVar23 = (long)iVar12; + uVar28 = iVar9 - iVar12; + pbVar24 = (byte *)(param_1 + lVar23); + pbVar26 = (byte *)(param_5 + lVar23); + if ((pbVar24 < (byte *)(param_5 + lVar23 + 0x10) && + pbVar26 < (byte *)(param_1 + lVar23 + 0x10)) || (uVar28 < 0x13)) { + lVar23 = 0; + do { + bVar10 = pbVar24[lVar23]; + if (0x7f < pbVar24[lVar23]) { + bVar10 = bVar25; + } + pbVar26[lVar23] = bVar10; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar9 + -1) - iVar12) + 1); + } + else { + uVar8 = -(int)pbVar24 & 0xf; + if (uVar28 < uVar8) { + uVar8 = uVar28; + } + iVar22 = iVar12; + if (uVar8 != 0) { + iVar22 = iVar12 + 1; + bVar10 = *pbVar24; + if (0x7f < *pbVar24) { + bVar10 = bVar25; + } + *pbVar26 = bVar10; + if (uVar8 != 1) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 2; + bVar10 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar10) { + bVar10 = bVar25; + } + *(byte *)(param_5 + lVar31) = bVar10; + if (uVar8 != 2) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 3; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 3) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 4; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 4) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 5; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 5) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 6; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 6) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 7; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 7) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 8; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 8) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 9; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 9) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 10; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 10) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 0xb; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 0xb) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 0xc; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 0xc) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 0xd; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 != 0xd) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 0xe; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + if (uVar8 == 0xf) { + lVar31 = (long)iVar22; + iVar22 = iVar12 + 0xf; + bVar25 = *(byte *)(param_1 + lVar31); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + lVar31) = bVar25; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar3 = ((uVar28 - uVar8) - 0x10 >> 4) + 1; + iVar12 = uVar3 * 0x10; + if (0xe < (uVar28 - 1) - uVar8) { + uVar32 = 0; + puVar27 = (undefined8 *)(param_5 + lVar23 + (ulong)uVar8); + pbVar24 = (byte *)(param_1 + lVar23 + (ulong)uVar8); + do { + uVar32 = uVar32 + 1; + auVar46._6_2_ = 0; + auVar46._0_6_ = + (uint6)CONCAT14(pbVar24[1],(uint)CONCAT12(pbVar24[1],(ushort)*pbVar24)) & + 0xffff0000ffff; + auVar46[8] = pbVar24[2]; + auVar46._9_3_ = 0; + auVar46[0xc] = pbVar24[3]; + auVar46._13_3_ = 0; + auVar43._6_2_ = 0; + auVar43._0_6_ = + (uint6)CONCAT14(pbVar24[9],(uint)CONCAT12(pbVar24[9],(ushort)pbVar24[8])) & + 0xffff0000ffff; + auVar43[8] = pbVar24[10]; + auVar43._9_3_ = 0; + auVar43[0xc] = pbVar24[0xb]; + auVar43._13_3_ = 0; + auVar40._1_3_ = 0; + auVar40[0] = pbVar24[4]; + auVar40[4] = pbVar24[5]; + auVar40._5_3_ = 0; + auVar40[8] = pbVar24[6]; + auVar40._9_3_ = 0; + auVar40[0xc] = pbVar24[7]; + auVar40._13_3_ = 0; + auVar36._1_3_ = 0; + auVar36[0] = pbVar24[0xc]; + auVar36[4] = pbVar24[0xd]; + auVar36._5_3_ = 0; + auVar36[8] = pbVar24[0xe]; + auVar36._9_3_ = 0; + auVar36[0xc] = pbVar24[0xf]; + auVar36._13_3_ = 0; + auVar18._8_4_ = 0x7f; + auVar18._0_8_ = 0x7f0000007f; + auVar18._12_4_ = 0x7f; + auVar47 = NEON_smin(auVar46,auVar18,4); + auVar19._8_4_ = 0x7f; + auVar19._0_8_ = 0x7f0000007f; + auVar19._12_4_ = 0x7f; + auVar42 = NEON_smin(auVar43,auVar19,4); + auVar20._8_4_ = 0x7f; + auVar20._0_8_ = 0x7f0000007f; + auVar20._12_4_ = 0x7f; + auVar39 = NEON_smin(auVar40,auVar20,4); + auVar21._8_4_ = 0x7f; + auVar21._0_8_ = 0x7f0000007f; + auVar21._12_4_ = 0x7f; + auVar35 = NEON_smin(auVar36,auVar21,4); + auVar37._0_8_ = + CONCAT17(auVar39[0xc], + CONCAT16(auVar39[8], + CONCAT15(auVar39[4], + CONCAT14(auVar39[0], + CONCAT13(auVar47[0xc], + CONCAT12(auVar47[8], + CONCAT11(auVar47[4], + auVar47[0]))))))); + auVar37[8] = auVar42[0]; + auVar37[9] = auVar42[4]; + auVar37[10] = auVar42[8]; + auVar37[0xb] = auVar42[0xc]; + auVar37[0xc] = auVar35[0]; + auVar37[0xd] = auVar35[4]; + auVar37[0xe] = auVar35[8]; + auVar37[0xf] = auVar35[0xc]; + puVar27[1] = auVar37._8_8_; + *puVar27 = auVar37._0_8_; + puVar27 = puVar27 + 2; + pbVar24 = pbVar24 + 0x10; + } while (uVar32 < uVar3); + iVar22 = iVar22 + iVar12; + if (uVar28 - uVar8 == iVar12) goto LAB_00272360; + } + iVar12 = iVar22 + 1; + bVar25 = *(byte *)(param_1 + iVar22); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar22) = bVar25; + if (iVar12 < iVar9) { + iVar4 = iVar22 + 2; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar4 < iVar9) { + iVar12 = iVar22 + 3; + bVar25 = *(byte *)(param_1 + iVar4); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar4) = bVar25; + if (iVar12 < iVar9) { + iVar4 = iVar22 + 4; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar4 < iVar9) { + iVar12 = iVar22 + 5; + bVar25 = *(byte *)(param_1 + iVar4); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar4) = bVar25; + if (iVar12 < iVar9) { + iVar4 = iVar22 + 6; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar4 < iVar9) { + iVar12 = iVar22 + 7; + bVar25 = *(byte *)(param_1 + iVar4); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar4) = bVar25; + if (iVar12 < iVar9) { + iVar4 = iVar22 + 8; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar4 < iVar9) { + iVar12 = iVar22 + 9; + bVar25 = *(byte *)(param_1 + iVar4); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar4) = bVar25; + if (iVar12 < iVar9) { + iVar4 = iVar22 + 10; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar4 < iVar9) { + iVar12 = iVar22 + 0xb; + bVar25 = *(byte *)(param_1 + iVar4); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar4) = bVar25; + if (iVar12 < iVar9) { + iVar4 = iVar22 + 0xc; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar4 < iVar9) { + iVar12 = iVar22 + 0xd; + bVar25 = *(byte *)(param_1 + iVar4); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar4) = bVar25; + if (iVar12 < iVar9) { + iVar22 = iVar22 + 0xe; + bVar25 = *(byte *)(param_1 + iVar12); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar12) = bVar25; + if (iVar22 < iVar9) { + bVar25 = *(byte *)(param_1 + iVar22); + if (0x7f < bVar25) { + bVar25 = 0x7f; + } + *(byte *)(param_5 + iVar22) = bVar25; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00272360: + iVar29 = iVar29 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar29 != 0); + } + return; +} + + +================================================================== + +### FUNC 00272430 (1828 bytes) name=FUN_00272430 + +void FUN_00272430(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined8 *puVar6; + int iVar7; + undefined1 *puVar8; + uint uVar9; + int iVar10; + ushort uVar11; + ushort uVar12; + int iVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + uint uVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + int iVar23; + undefined1 (*pauVar24) [16]; + undefined8 *puVar25; + ushort uVar26; + ushort *puVar27; + undefined1 uVar28; + undefined1 (*pauVar29) [16]; + long lVar30; + undefined1 uVar31; + uint uVar32; + long lVar33; + int iVar34; + long lVar35; + uint uVar36; + undefined8 uVar37; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined8 uVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + + iVar34 = param_7[1]; + iVar10 = *param_7; + if (iVar34 != 0) { + uVar15 = iVar10 - 0x10U >> 4; + iVar13 = (uVar15 + 1) * 0x10; + if (iVar10 + -0xf < 1) { + iVar13 = 0; + } + uVar18 = (iVar10 + -4) - iVar13; + lVar35 = (long)iVar13; + uVar16 = uVar18 >> 2; + uVar2 = uVar16 + 1; + uVar3 = (uVar16 - 3 >> 2) + 1; + iVar7 = iVar13 + 4 + uVar16 * 4; + lVar1 = lVar35 + (ulong)uVar2 * 4; + iVar17 = iVar10 + -3; + do { + if (0 < iVar10 + -0xf) { + pauVar24 = (undefined1 (*) [16])(param_1 + 0x10); + puVar25 = param_5; + do { + pauVar29 = pauVar24 + -1; + auVar39 = *pauVar24; + pauVar24 = pauVar24 + 2; + uVar37 = NEON_uqxtn(auVar39._0_8_,auVar39,2); + uVar42 = NEON_uqxtn(SUB168(*pauVar29,0),*pauVar29,2); + puVar25[1] = uVar37; + *puVar25 = uVar42; + puVar25 = puVar25 + 2; + } while (pauVar24 != (undefined1 (*) [16])(param_1 + (ulong)uVar15 * 0x20 + 0x30)); + } + uVar26 = 0xff; + iVar14 = iVar13; + if (iVar13 < iVar17) { + puVar27 = (ushort *)(param_1 + lVar35 * 2); + puVar25 = (undefined8 *)((long)param_5 + lVar35); + iVar14 = iVar7; + if ((puVar27 < (ushort *)((long)param_5 + lVar1) && + puVar25 < (undefined8 *)(param_1 + lVar1 * 2)) || (uVar2 < 4)) { + do { + puVar6 = (undefined8 *)((long)puVar25 + 4); + uVar12 = puVar27[1]; + if (0xff < puVar27[1]) { + uVar12 = uVar26; + } + uVar11 = *puVar27; + if (0xff < *puVar27) { + uVar11 = uVar26; + } + *(char *)((long)puVar25 + 1) = (char)uVar12; + *(char *)puVar25 = (char)uVar11; + uVar12 = puVar27[3]; + if (0xff < puVar27[3]) { + uVar12 = uVar26; + } + uVar11 = puVar27[2]; + if (0xff < puVar27[2]) { + uVar11 = uVar26; + } + *(char *)((long)puVar25 + 3) = (char)uVar12; + *(char *)((long)puVar25 + 2) = (char)uVar11; + puVar25 = puVar6; + puVar27 = puVar27 + 4; + } while (puVar6 != (undefined8 *)((long)param_5 + lVar35 + 4 + (ulong)uVar16 * 4)); + } + else { + iVar23 = iVar13; + if (0xb < uVar18) { + uVar32 = 0; + do { + uVar32 = uVar32 + 1; + auVar48._2_2_ = 0; + auVar48._0_2_ = *puVar27; + auVar48._4_2_ = puVar27[1]; + auVar48._6_2_ = 0; + auVar48._8_2_ = puVar27[2]; + auVar48._10_2_ = 0; + auVar48._12_2_ = puVar27[3]; + auVar48._14_2_ = 0; + auVar43._2_2_ = 0; + auVar43._0_2_ = puVar27[4]; + auVar43._4_2_ = puVar27[5]; + auVar43._6_2_ = 0; + auVar43._8_2_ = puVar27[6]; + auVar43._10_2_ = 0; + auVar43._12_2_ = puVar27[7]; + auVar43._14_2_ = 0; + auVar39._8_4_ = 0xff; + auVar39._0_8_ = 0xff000000ff; + auVar39._12_4_ = 0xff; + auVar49 = NEON_umin(auVar48,auVar39,4); + auVar46._2_2_ = 0; + auVar46._0_2_ = puVar27[8]; + auVar46._4_2_ = puVar27[9]; + auVar46._6_2_ = 0; + auVar46._8_2_ = puVar27[10]; + auVar46._10_2_ = 0; + auVar46._12_2_ = puVar27[0xb]; + auVar46._14_2_ = 0; + auVar38._2_2_ = 0; + auVar38._0_2_ = puVar27[0xc]; + auVar38._4_2_ = puVar27[0xd]; + auVar38._6_2_ = 0; + auVar38._8_2_ = puVar27[0xe]; + auVar38._10_2_ = 0; + auVar38._12_2_ = puVar27[0xf]; + auVar38._14_2_ = 0; + auVar44._8_4_ = 0xff; + auVar44._0_8_ = 0xff000000ff; + auVar44._12_4_ = 0xff; + auVar44 = NEON_umin(auVar43,auVar44,4); + auVar47._8_4_ = 0xff; + auVar47._0_8_ = 0xff000000ff; + auVar47._12_4_ = 0xff; + auVar47 = NEON_umin(auVar46,auVar47,4); + auVar52._8_4_ = 0xff; + auVar52._0_8_ = 0xff000000ff; + auVar52._12_4_ = 0xff; + auVar39 = NEON_umin(auVar38,auVar52,4); + auVar49._0_8_ = + CONCAT17(auVar44[0xc], + CONCAT16(auVar44[8], + CONCAT15(auVar44[4], + CONCAT14(auVar44[0], + CONCAT13(auVar49[0xc], + CONCAT12(auVar49[8], + CONCAT11(auVar49[4], + auVar49[0]))))))); + auVar49[8] = auVar47[0]; + auVar49[9] = auVar47[4]; + auVar49[10] = auVar47[8]; + auVar49[0xb] = auVar47[0xc]; + auVar49[0xc] = auVar39[0]; + auVar49[0xd] = auVar39[4]; + auVar49[0xe] = auVar39[8]; + auVar49[0xf] = auVar39[0xc]; + puVar25[1] = auVar49._8_8_; + *puVar25 = auVar49._0_8_; + puVar25 = puVar25 + 2; + puVar27 = puVar27 + 0x10; + } while (uVar32 < uVar3); + iVar23 = iVar13 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_002726dc; + } + lVar30 = (long)iVar23; + lVar33 = param_1 + lVar30 * 2; + uVar11 = *(ushort *)(param_1 + lVar30 * 2); + uVar12 = *(ushort *)(lVar33 + 2); + if (0xff < *(ushort *)(lVar33 + 2)) { + uVar12 = uVar26; + } + if (0xff < uVar11) { + uVar11 = uVar26; + } + *(char *)((long)param_5 + lVar30) = (char)uVar11; + *(char *)((long)param_5 + lVar30 + 1) = (char)uVar12; + uVar12 = *(ushort *)(lVar33 + 6); + if (0xff < *(ushort *)(lVar33 + 6)) { + uVar12 = 0xff; + } + uVar28 = (undefined1)*(ushort *)(lVar33 + 4); + if (0xff < *(ushort *)(lVar33 + 4)) { + uVar28 = 0xff; + } + *(char *)((long)param_5 + lVar30 + 3) = (char)uVar12; + *(undefined1 *)((long)param_5 + lVar30 + 2) = uVar28; + if (iVar23 + 4 < iVar17) { + lVar30 = (long)(iVar23 + 4); + lVar33 = param_1 + lVar30 * 2; + uVar12 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)*(ushort *)(lVar33 + 2); + if (0xff < *(ushort *)(lVar33 + 2)) { + uVar28 = 0xff; + } + uVar31 = (undefined1)uVar12; + if (0xff < uVar12) { + uVar31 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar31; + *(undefined1 *)((long)param_5 + lVar30 + 1) = uVar28; + uVar28 = (undefined1)*(ushort *)(lVar33 + 6); + if (0xff < *(ushort *)(lVar33 + 6)) { + uVar28 = 0xff; + } + uVar31 = (undefined1)*(ushort *)(lVar33 + 4); + if (0xff < *(ushort *)(lVar33 + 4)) { + uVar31 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30 + 3) = uVar28; + *(undefined1 *)((long)param_5 + lVar30 + 2) = uVar31; + if (iVar23 + 8 < iVar17) { + lVar30 = (long)(iVar23 + 8); + lVar33 = param_1 + lVar30 * 2; + uVar12 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)*(ushort *)(lVar33 + 2); + if (0xff < *(ushort *)(lVar33 + 2)) { + uVar28 = 0xff; + } + uVar31 = (undefined1)uVar12; + if (0xff < uVar12) { + uVar31 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar31; + *(undefined1 *)((long)param_5 + lVar30 + 1) = uVar28; + uVar12 = *(ushort *)(lVar33 + 6); + if (0xff < *(ushort *)(lVar33 + 6)) { + uVar12 = uVar26; + } + uVar11 = *(ushort *)(lVar33 + 4); + if (0xff < *(ushort *)(lVar33 + 4)) { + uVar11 = uVar26; + } + *(char *)((long)param_5 + lVar30 + 3) = (char)uVar12; + *(char *)((long)param_5 + lVar30 + 2) = (char)uVar11; + } + } + } + } +LAB_002726dc: + if (iVar14 < iVar10) { + lVar33 = (long)iVar14; + uVar32 = iVar10 - iVar14; + puVar8 = (undefined1 *)((long)param_5 + lVar33); + puVar27 = (ushort *)(param_1 + lVar33 * 2); + if ((puVar8 < (undefined1 *)(param_1 + (lVar33 + (ulong)uVar32) * 2) && + puVar27 < (ushort *)((long)param_5 + lVar33 + (ulong)uVar32)) || (uVar32 < 0x13)) { + lVar33 = 0; + do { + uVar12 = puVar27[lVar33]; + if (0xff < puVar27[lVar33]) { + uVar12 = uVar26; + } + puVar8[lVar33] = (char)uVar12; + lVar33 = lVar33 + 1; + } while (lVar33 != (ulong)(uint)((iVar10 + -1) - iVar14) + 1); + } + else { + uVar9 = -((uint)((ulong)puVar27 >> 1) & 7) & 7; + if (uVar32 < uVar9) { + uVar9 = uVar32; + } + iVar23 = iVar14; + if (uVar9 != 0) { + iVar23 = iVar14 + 1; + uVar12 = *puVar27; + if (0xff < *puVar27) { + uVar12 = uVar26; + } + *puVar8 = (char)uVar12; + if (uVar9 != 1) { + lVar30 = (long)iVar23; + iVar23 = iVar14 + 2; + uVar12 = *(ushort *)(param_1 + lVar30 * 2); + if (0xff < uVar12) { + uVar12 = uVar26; + } + *(char *)((long)param_5 + lVar30) = (char)uVar12; + if (uVar9 != 2) { + lVar30 = (long)iVar23; + iVar23 = iVar14 + 3; + uVar26 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar28; + if (uVar9 != 3) { + lVar30 = (long)iVar23; + iVar23 = iVar14 + 4; + uVar26 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar28; + if (uVar9 != 4) { + lVar30 = (long)iVar23; + iVar23 = iVar14 + 5; + uVar26 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar28; + if (uVar9 != 5) { + lVar30 = (long)iVar23; + iVar23 = iVar14 + 6; + uVar26 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar28; + if (uVar9 == 7) { + lVar30 = (long)iVar23; + iVar23 = iVar14 + 7; + uVar26 = *(ushort *)(param_1 + lVar30 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + lVar30) = uVar28; + } + } + } + } + } + } + } + uVar4 = ((uVar32 - uVar9) - 0x10 >> 4) + 1; + iVar14 = uVar4 * 0x10; + if (0xe < (uVar32 - 1) - uVar9) { + uVar36 = 0; + puVar27 = (ushort *)(param_1 + lVar33 * 2 + (ulong)uVar9 * 2); + puVar25 = (undefined8 *)((long)param_5 + (ulong)uVar9 + lVar33); + do { + uVar36 = uVar36 + 1; + auVar51._2_2_ = 0; + auVar51._0_2_ = *puVar27; + auVar51._4_2_ = puVar27[1]; + auVar51._6_2_ = 0; + auVar51._8_2_ = puVar27[2]; + auVar51._10_2_ = 0; + auVar51._12_2_ = puVar27[3]; + auVar51._14_2_ = 0; + auVar45._2_2_ = 0; + auVar45._0_2_ = puVar27[4]; + auVar45._4_2_ = puVar27[5]; + auVar45._6_2_ = 0; + auVar45._8_2_ = puVar27[6]; + auVar45._10_2_ = 0; + auVar45._12_2_ = puVar27[7]; + auVar45._14_2_ = 0; + auVar19._8_4_ = 0xff; + auVar19._0_8_ = 0xff000000ff; + auVar19._12_4_ = 0xff; + auVar52 = NEON_umin(auVar51,auVar19,4); + auVar50._2_2_ = 0; + auVar50._0_2_ = puVar27[8]; + auVar50._4_2_ = puVar27[9]; + auVar50._6_2_ = 0; + auVar50._8_2_ = puVar27[10]; + auVar50._10_2_ = 0; + auVar50._12_2_ = puVar27[0xb]; + auVar50._14_2_ = 0; + auVar40._2_2_ = 0; + auVar40._0_2_ = puVar27[0xc]; + auVar40._4_2_ = puVar27[0xd]; + auVar40._6_2_ = 0; + auVar40._8_2_ = puVar27[0xe]; + auVar40._10_2_ = 0; + auVar40._12_2_ = puVar27[0xf]; + auVar40._14_2_ = 0; + auVar20._8_4_ = 0xff; + auVar20._0_8_ = 0xff000000ff; + auVar20._12_4_ = 0xff; + auVar44 = NEON_umin(auVar45,auVar20,4); + auVar21._8_4_ = 0xff; + auVar21._0_8_ = 0xff000000ff; + auVar21._12_4_ = 0xff; + auVar47 = NEON_umin(auVar50,auVar21,4); + auVar22._8_4_ = 0xff; + auVar22._0_8_ = 0xff000000ff; + auVar22._12_4_ = 0xff; + auVar39 = NEON_umin(auVar40,auVar22,4); + auVar41._0_8_ = + CONCAT17(auVar44[0xc], + CONCAT16(auVar44[8], + CONCAT15(auVar44[4], + CONCAT14(auVar44[0], + CONCAT13(auVar52[0xc], + CONCAT12(auVar52[8], + CONCAT11(auVar52[4], + auVar52[0]))))))); + auVar41[8] = auVar47[0]; + auVar41[9] = auVar47[4]; + auVar41[10] = auVar47[8]; + auVar41[0xb] = auVar47[0xc]; + auVar41[0xc] = auVar39[0]; + auVar41[0xd] = auVar39[4]; + auVar41[0xe] = auVar39[8]; + auVar41[0xf] = auVar39[0xc]; + puVar25[1] = auVar41._8_8_; + *puVar25 = auVar41._0_8_; + puVar27 = puVar27 + 0x10; + puVar25 = puVar25 + 2; + } while (uVar36 < uVar4); + iVar23 = iVar23 + iVar14; + if (uVar32 - uVar9 == iVar14) goto LAB_00272a84; + } + iVar14 = iVar23 + 1; + uVar26 = *(ushort *)(param_1 + (long)iVar23 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar23) = uVar28; + if (iVar14 < iVar10) { + iVar5 = iVar23 + 2; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar5 < iVar10) { + iVar14 = iVar23 + 3; + uVar26 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar28; + if (iVar14 < iVar10) { + iVar5 = iVar23 + 4; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar5 < iVar10) { + iVar14 = iVar23 + 5; + uVar26 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar28; + if (iVar14 < iVar10) { + iVar5 = iVar23 + 6; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar5 < iVar10) { + iVar14 = iVar23 + 7; + uVar26 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar28; + if (iVar14 < iVar10) { + iVar5 = iVar23 + 8; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar5 < iVar10) { + iVar14 = iVar23 + 9; + uVar26 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar28; + if (iVar14 < iVar10) { + iVar5 = iVar23 + 10; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar5 < iVar10) { + iVar14 = iVar23 + 0xb; + uVar26 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar28; + if (iVar14 < iVar10) { + iVar5 = iVar23 + 0xc; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar5 < iVar10) { + iVar14 = iVar23 + 0xd; + uVar26 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar28; + if (iVar14 < iVar10) { + iVar23 = iVar23 + 0xe; + uVar26 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar28; + if (iVar23 < iVar10) { + uVar26 = *(ushort *)(param_1 + (long)iVar23 * 2); + uVar28 = (undefined1)uVar26; + if (0xff < uVar26) { + uVar28 = 0xff; + } + *(undefined1 *)((long)param_5 + (long)iVar23) = uVar28; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00272a84: + iVar34 = iVar34 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffe); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar34 != 0); + } + return; +} + + +================================================================== + +### FUNC 00272b54 (416 bytes) name=FUN_00272b54 + +void FUN_00272b54(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + undefined1 *puVar1; + uint uVar2; + uint uVar3; + int iVar4; + short sVar5; + short sVar6; + int iVar7; + uint uVar8; + uint uVar9; + undefined1 auVar10 [16]; + undefined1 (*pauVar11) [16]; + undefined1 *puVar12; + undefined8 *puVar13; + short *psVar14; + long lVar15; + undefined1 (*pauVar16) [16]; + int iVar17; + int iVar18; + long lVar19; + undefined8 uVar20; + undefined8 uVar21; + + iVar18 = param_7[1]; + iVar4 = *param_7; + if (iVar18 != 0) { + uVar8 = iVar4 - 0x10U >> 4; + iVar7 = (uVar8 + 1) * 0x10; + if (iVar4 + -0xf < 1) { + iVar7 = 0; + } + uVar9 = (uint)((iVar4 + -4) - iVar7) >> 2; + lVar19 = (long)iVar7; + do { + if (0 < iVar4 + -0xf) { + pauVar11 = (undefined1 (*) [16])(param_1 + 0x10); + puVar13 = param_5; + do { + pauVar16 = pauVar11 + -1; + puVar12 = *pauVar11; + auVar10 = *pauVar11; + pauVar11 = pauVar11 + 2; + uVar20 = NEON_sqxtun(*(undefined8 *)puVar12,auVar10,2); + uVar21 = NEON_sqxtun(*(undefined8 *)*pauVar16,*pauVar16,2); + puVar13[1] = uVar20; + *puVar13 = uVar21; + puVar13 = puVar13 + 2; + } while (pauVar11 != (undefined1 (*) [16])(param_1 + (ulong)uVar8 * 0x20 + 0x30)); + } + iVar17 = iVar7; + if (iVar7 < iVar4 + -3) { + puVar12 = (undefined1 *)((long)param_5 + lVar19); + psVar14 = (short *)(param_1 + lVar19 * 2); + do { + sVar5 = *psVar14; + puVar1 = puVar12 + 4; + sVar6 = psVar14[1]; + uVar2 = (int)sVar5; + if (0xff < (uint)(int)sVar5) { + uVar2 = -(uint)(0 < sVar5); + } + uVar3 = (int)sVar6; + if (0xff < (uint)(int)sVar6) { + uVar3 = -(uint)(0 < sVar6); + } + *puVar12 = (char)uVar2; + puVar12[1] = (char)uVar3; + sVar5 = psVar14[2]; + sVar6 = psVar14[3]; + uVar2 = (int)sVar5; + if (0xff < (uint)(int)sVar5) { + uVar2 = -(uint)(0 < sVar5); + } + uVar3 = (int)sVar6; + if (0xff < (uint)(int)sVar6) { + uVar3 = -(uint)(0 < sVar6); + } + puVar12[2] = (char)uVar2; + puVar12[3] = (char)uVar3; + puVar12 = puVar1; + psVar14 = psVar14 + 4; + iVar17 = iVar7 + 4 + uVar9 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar19 + 4 + (ulong)uVar9 * 4)); + } + if (iVar17 < iVar4) { + lVar15 = 0; + do { + sVar5 = *(short *)(param_1 + (long)iVar17 * 2 + lVar15 * 2); + uVar2 = (int)sVar5; + if (0xff < (uint)(int)sVar5) { + uVar2 = -(uint)(0 < sVar5); + } + *(char *)((long)param_5 + lVar15 + iVar17) = (char)uVar2; + lVar15 = lVar15 + 1; + } while (lVar15 != (ulong)(uint)((iVar4 + -1) - iVar17) + 1); + } + iVar18 = iVar18 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffe); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 00272cf4 (1996 bytes) name=FUN_00272cf4 + +/* WARNING: Removing unreachable block (ram,0x00273458) */ +/* WARNING: Removing unreachable block (ram,0x0027346c) */ +/* WARNING: Removing unreachable block (ram,0x00273474) */ + +void FUN_00272cf4(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7) + +{ + int iVar1; + uint uVar2; + uint uVar3; + int iVar4; + char *pcVar5; + int iVar6; + undefined8 *puVar7; + uint uVar8; + int iVar9; + char cVar10; + char cVar11; + int iVar12; + uint uVar13; + int iVar14; + int iVar15; + uint uVar16; + int iVar17; + long lVar18; + char *pcVar19; + char *pcVar20; + undefined8 *puVar21; + uint uVar22; + int iVar23; + long lVar24; + long lVar25; + uint uVar26; + undefined8 uVar27; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + + iVar23 = param_7[1]; + iVar9 = *param_7; + if (iVar23 != 0) { + iVar14 = iVar9 + -7; + iVar1 = (iVar9 - 8U & 0xfffffff8) + 8; + if (iVar14 < 1) { + iVar1 = 0; + } + uVar16 = (iVar9 + -4) - iVar1; + uVar13 = uVar16 >> 2; + lVar24 = (long)iVar1; + uVar2 = (uVar13 - 3 >> 2) + 1; + iVar15 = iVar9 + -3; + iVar6 = iVar1 + 4 + uVar13 * 4; + do { + lVar18 = 0; + if (0 < iVar14) { + do { + puVar21 = (undefined8 *)(param_1 + lVar18); + puVar7 = (undefined8 *)(param_5 + lVar18); + lVar18 = lVar18 + 8; + uVar27 = *puVar21; + auVar28._0_8_ = + CONCAT26((short)(char)((ulong)uVar27 >> 0x18), + CONCAT24((short)(char)((ulong)uVar27 >> 0x10), + CONCAT22((short)(char)((ulong)uVar27 >> 8),(short)(char)uVar27))); + auVar28._8_2_ = (short)(char)((ulong)uVar27 >> 0x20); + auVar28._10_2_ = (short)(char)((ulong)uVar27 >> 0x28); + auVar28._12_2_ = (short)(char)((ulong)uVar27 >> 0x30); + auVar28._14_2_ = (short)(char)((ulong)uVar27 >> 0x38); + uVar27 = NEON_sqxtun(auVar28._0_8_,auVar28,2); + *puVar7 = uVar27; + } while ((int)lVar18 < iVar14); + } + iVar12 = iVar1; + if (iVar1 < iVar15) { + pcVar19 = (char *)(param_1 + lVar24); + pcVar20 = (char *)(param_5 + lVar24); + iVar12 = iVar6; + if ((pcVar19 < (char *)(param_5 + lVar24 + 0x40) && + pcVar20 < (char *)(param_1 + lVar24 + 0x40)) || (uVar13 + 1 < 4)) { + do { + cVar11 = pcVar19[1]; + pcVar5 = pcVar19 + 4; + cVar10 = *pcVar19; + if (cVar11 < '\0') { + cVar11 = '\0'; + } + pcVar20[1] = cVar11; + /* catch() { ... } // from try @ 00273330 with catch @ 00273454 */ + *pcVar20 = cVar10; + cVar11 = pcVar19[2]; + pcVar20[3] = pcVar19[3]; + pcVar20[2] = cVar11; + pcVar19 = pcVar5; + pcVar20 = pcVar20 + 4; + } while (pcVar5 != (char *)(param_1 + lVar24 + 4 + (ulong)uVar13 * 4)); + } + else { + iVar17 = iVar1; + if (0xb < uVar16) { + uVar22 = 0; + do { + uVar22 = uVar22 + 1; + auVar36._0_4_ = (int)(short)*pcVar19; + auVar36._4_4_ = (int)(short)pcVar19[1]; + auVar36._8_4_ = (int)(short)pcVar19[2]; + auVar36._12_4_ = (int)(short)pcVar19[3]; + auVar34._0_4_ = (int)(short)pcVar19[8]; + auVar34._4_4_ = (int)(short)pcVar19[9]; + auVar34._8_4_ = (int)(short)pcVar19[10]; + auVar34._12_4_ = (int)(short)pcVar19[0xb]; + auVar38._0_4_ = (int)(short)pcVar19[4]; + auVar38._4_4_ = (int)(short)pcVar19[5]; + auVar38._8_4_ = (int)(short)pcVar19[6]; + auVar38._12_4_ = (int)(short)pcVar19[7]; + auVar33._0_4_ = (int)(short)pcVar19[0xc]; + auVar33._4_4_ = (int)(short)pcVar19[0xd]; + auVar33._8_4_ = (int)(short)pcVar19[0xe]; + auVar33._12_4_ = (int)(short)pcVar19[0xf]; + auVar36 = NEON_smax(auVar36,ZEXT816(0),4); + auVar34 = NEON_smax(auVar34,ZEXT816(0),4); + auVar31 = NEON_smax(auVar38,ZEXT816(0),4); + auVar28 = NEON_smax(auVar33,ZEXT816(0),4); + auVar31._0_8_ = + CONCAT17(auVar31[0xc], + CONCAT16(auVar31[8], + CONCAT15(auVar31[4], + CONCAT14(auVar31[0], + CONCAT13(auVar36[0xc], + CONCAT12(auVar36[8], + CONCAT11(auVar36[4], + auVar36[0]))))))); + auVar31[8] = auVar34[0]; + auVar31[9] = auVar34[4]; + auVar31[10] = auVar34[8]; + auVar31[0xb] = auVar34[0xc]; + auVar31[0xc] = auVar28[0]; + auVar31[0xd] = auVar28[4]; + auVar31[0xe] = auVar28[8]; + auVar31[0xf] = auVar28[0xc]; + *(long *)(pcVar20 + 8) = auVar31._8_8_; + *(undefined8 *)pcVar20 = auVar31._0_8_; + pcVar19 = pcVar19 + 0x10; + pcVar20 = pcVar20 + 0x10; + } while (uVar22 < uVar2); + iVar17 = iVar1 + uVar2 * 0x10; + if (uVar13 + 1 == uVar2 * 4) goto LAB_00272f5c; + } + lVar18 = (long)iVar17; + cVar10 = *(char *)(param_1 + lVar18); + cVar11 = *(char *)(param_1 + lVar18 + 1); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + if (cVar10 < '\0') { + cVar10 = '\0'; + } + *(char *)(param_5 + lVar18) = cVar10; + *(char *)(param_5 + lVar18 + 1) = cVar11; + cVar11 = *(char *)(param_1 + lVar18 + 3); + cVar10 = *(char *)(param_1 + lVar18 + 2); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + if (cVar10 < '\0') { + cVar10 = '\0'; + } + *(char *)(param_5 + lVar18 + 2) = cVar10; + *(char *)(param_5 + lVar18 + 3) = cVar11; + if (iVar17 + 4 < iVar15) { + lVar18 = (long)(iVar17 + 4); + cVar10 = *(char *)(param_1 + lVar18); + cVar11 = *(char *)(param_1 + lVar18 + 1); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + if (cVar10 < '\0') { + cVar10 = '\0'; + } + *(char *)(param_5 + lVar18) = cVar10; + *(char *)(param_5 + lVar18 + 1) = cVar11; + cVar11 = *(char *)(param_1 + lVar18 + 3); + cVar10 = *(char *)(param_1 + lVar18 + 2); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + if (cVar10 < '\0') { + cVar10 = '\0'; + } + *(char *)(param_5 + lVar18 + 2) = cVar10; + *(char *)(param_5 + lVar18 + 3) = cVar11; + if (iVar17 + 8 < iVar15) { + lVar18 = (long)(iVar17 + 8); + cVar10 = *(char *)(param_1 + lVar18); + cVar11 = *(char *)(param_1 + lVar18 + 1); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + if (cVar10 < '\0') { + cVar10 = '\0'; + } + *(char *)(param_5 + lVar18) = cVar10; + *(char *)(param_5 + lVar18 + 1) = cVar11; + cVar11 = *(char *)(param_1 + lVar18 + 3); + cVar10 = *(char *)(param_1 + lVar18 + 2); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + if (cVar10 < '\0') { + cVar10 = '\0'; + } + *(char *)(param_5 + lVar18 + 2) = cVar10; + *(char *)(param_5 + lVar18 + 3) = cVar11; + } + } + } + } +LAB_00272f5c: + if (iVar12 < iVar9) { + lVar18 = (long)iVar12; + uVar22 = iVar9 - iVar12; + pcVar19 = (char *)(param_1 + lVar18); + pcVar20 = (char *)(param_5 + lVar18); + if ((pcVar19 < (char *)(param_5 + lVar18 + 0x10) && + pcVar20 < (char *)(param_1 + lVar18 + 0x10)) || (uVar22 < 0x13)) { + lVar18 = 0; + do { + cVar11 = pcVar19[lVar18]; + if (cVar11 < '\0') { + cVar11 = '\0'; + } + pcVar20[lVar18] = cVar11; + lVar18 = lVar18 + 1; + } while (lVar18 != (ulong)(uint)((iVar9 + -1) - iVar12) + 1); + } + else { + uVar8 = -(int)pcVar19 & 0xf; + if (uVar22 < uVar8) { + uVar8 = uVar22; + } + iVar17 = iVar12; + if (uVar8 != 0) { + cVar11 = *pcVar19; + iVar17 = iVar12 + 1; + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *pcVar20 = cVar11; + if (uVar8 != 1) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 2; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 2) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 3; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 3) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 4; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 4) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 5; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 5) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 6; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 6) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 7; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 7) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 8; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 8) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 9; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 9) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 10; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 10) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 0xb; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 0xb) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 0xc; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + /* try { // try from 00273124 to 0037332f has its CatchHandler @ 00273124 + catch() { ... } // from try @ 00273124 with catch @ 00273124 + catch() { ... } // from try @ 00273424 with catch @ 00273124 */ + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 0xc) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 0xd; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 != 0xd) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 0xe; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + if (uVar8 == 0xf) { + lVar25 = (long)iVar17; + iVar17 = iVar12 + 0xf; + cVar11 = *(char *)(param_1 + lVar25); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + lVar25) = cVar11; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar3 = ((uVar22 - uVar8) - 0x10 >> 4) + 1; + iVar12 = uVar3 * 0x10; + if (0xe < (uVar22 - 1) - uVar8) { + uVar26 = 0; + puVar21 = (undefined8 *)(param_5 + lVar18 + (ulong)uVar8); + pcVar19 = (char *)(param_1 + lVar18 + (ulong)uVar8); + do { + uVar26 = uVar26 + 1; + auVar37._0_4_ = (int)(short)*pcVar19; + auVar37._4_4_ = (int)(short)pcVar19[1]; + auVar37._8_4_ = (int)(short)pcVar19[2]; + auVar37._12_4_ = (int)(short)pcVar19[3]; + auVar35._0_4_ = (int)(short)pcVar19[8]; + auVar35._4_4_ = (int)(short)pcVar19[9]; + auVar35._8_4_ = (int)(short)pcVar19[10]; + auVar35._12_4_ = (int)(short)pcVar19[0xb]; + auVar32._0_4_ = (int)(short)pcVar19[4]; + auVar32._4_4_ = (int)(short)pcVar19[5]; + auVar32._8_4_ = (int)(short)pcVar19[6]; + auVar32._12_4_ = (int)(short)pcVar19[7]; + auVar29._0_4_ = (int)(short)pcVar19[0xc]; + auVar29._4_4_ = (int)(short)pcVar19[0xd]; + auVar29._8_4_ = (int)(short)pcVar19[0xe]; + auVar29._12_4_ = (int)(short)pcVar19[0xf]; + auVar38 = NEON_smax(auVar37,ZEXT816(0),4); + auVar31 = NEON_smax(auVar35,ZEXT816(0),4); + auVar33 = NEON_smax(auVar32,ZEXT816(0),4); + auVar28 = NEON_smax(auVar29,ZEXT816(0),4); + auVar30._0_8_ = + CONCAT17(auVar33[0xc], + CONCAT16(auVar33[8], + CONCAT15(auVar33[4], + CONCAT14(auVar33[0], + CONCAT13(auVar38[0xc], + CONCAT12(auVar38[8], + CONCAT11(auVar38[4], + auVar38[0]))))))); + auVar30[8] = auVar31[0]; + auVar30[9] = auVar31[4]; + auVar30[10] = auVar31[8]; + auVar30[0xb] = auVar31[0xc]; + auVar30[0xc] = auVar28[0]; + auVar30[0xd] = auVar28[4]; + auVar30[0xe] = auVar28[8]; + auVar30[0xf] = auVar28[0xc]; + puVar21[1] = auVar30._8_8_; + *puVar21 = auVar30._0_8_; + puVar21 = puVar21 + 2; + pcVar19 = pcVar19 + 0x10; + } while (uVar26 < uVar3); + iVar17 = iVar17 + iVar12; + if (uVar22 - uVar8 == iVar12) goto LAB_002733f0; + } + iVar12 = iVar17 + 1; + cVar11 = *(char *)(param_1 + iVar17); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar17) = cVar11; + if (iVar12 < iVar9) { + iVar4 = iVar17 + 2; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar4 < iVar9) { + iVar12 = iVar17 + 3; + cVar11 = *(char *)(param_1 + iVar4); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar4) = cVar11; + if (iVar12 < iVar9) { + iVar4 = iVar17 + 4; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar4 < iVar9) { + iVar12 = iVar17 + 5; + cVar11 = *(char *)(param_1 + iVar4); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar4) = cVar11; + if (iVar12 < iVar9) { + iVar4 = iVar17 + 6; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar4 < iVar9) { + iVar12 = iVar17 + 7; + cVar11 = *(char *)(param_1 + iVar4); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar4) = cVar11; + if (iVar12 < iVar9) { + iVar4 = iVar17 + 8; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar4 < iVar9) { + iVar12 = iVar17 + 9; + cVar11 = *(char *)(param_1 + iVar4); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + /* try { // try from 00273330 to 00373423 has its CatchHandler @ 00273454 */ + *(char *)(param_5 + iVar4) = cVar11; + if (iVar12 < iVar9) { + iVar4 = iVar17 + 10; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar4 < iVar9) { + iVar12 = iVar17 + 0xb; + cVar11 = *(char *)(param_1 + iVar4); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar4) = cVar11; + if (iVar12 < iVar9) { + iVar4 = iVar17 + 0xc; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar4 < iVar9) { + iVar12 = iVar17 + 0xd; + cVar11 = *(char *)(param_1 + iVar4); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar4) = cVar11; + if (iVar12 < iVar9) { + iVar17 = iVar17 + 0xe; + cVar11 = *(char *)(param_1 + iVar12); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar12) = cVar11; + if (iVar17 < iVar9) { + cVar11 = *(char *)(param_1 + iVar17); + if (cVar11 < '\0') { + cVar11 = '\0'; + } + *(char *)(param_5 + iVar17) = cVar11; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002733f0: + iVar23 = iVar23 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 002734c0 (16 bytes) name=FUN_002734c0 + +void FUN_002734c0(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f5ad0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 002734d0 (44 bytes) name=FUN_002734d0 + +void FUN_002734d0(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f5ad0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002734fc (1800 bytes) name=FUN_002734fc + +void FUN_002734fc(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7,double *param_8) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + uint uVar8; + int iVar9; + byte bVar10; + int iVar11; + int iVar12; + uint uVar13; + uint uVar14; + int iVar15; + uint uVar16; + int iVar17; + float *pfVar18; + undefined8 *puVar19; + byte *pbVar20; + long lVar21; + long lVar22; + int iVar23; + long lVar24; + uint uVar25; + uint uVar26; + undefined1 uVar27; + undefined8 uVar28; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + float fVar34; + float fVar35; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + + iVar23 = param_7[1]; + iVar9 = *param_7; + fVar34 = (float)*param_8; + fVar35 = (float)param_8[1]; + if (iVar23 != 0) { + uVar13 = iVar9 - 8U >> 3; + iVar11 = (uVar13 + 1) * 8; + if (iVar9 + -7 < 1) { + iVar11 = 0; + } + uVar16 = (iVar9 + -4) - iVar11; + lVar24 = (long)iVar11; + uVar14 = uVar16 >> 2; + uVar2 = uVar14 + 1; + uVar3 = (uVar14 - 3 >> 2) + 1; + iVar7 = iVar11 + 4 + uVar14 * 4; + lVar1 = lVar24 + (ulong)uVar2 * 4; + iVar15 = iVar9 + -3; + /* try { // try from 002735bc to 003736b3 has its CatchHandler @ 002735bc + catch() { ... } // from try @ 002735bc with catch @ 002735bc + catch() { ... } // from try @ 002736bc with catch @ 002735bc */ + do { + if (0 < iVar9 + -7) { + pfVar18 = (float *)(param_5 + 0x10); + puVar19 = param_1; + do { + uVar28 = *puVar19; + uVar27 = (undefined1)((ulong)uVar28 >> 8); + auVar31._6_2_ = 0; + auVar31._0_6_ = + (uint6)CONCAT14(uVar27,(uint)CONCAT12(uVar27,(ushort)(byte)uVar28)) & 0xffff0000ffff; + auVar31[8] = (char)((ulong)uVar28 >> 0x10); + auVar31._9_3_ = 0; + auVar31[0xc] = (char)((ulong)uVar28 >> 0x18); + auVar31._13_3_ = 0; + auVar31 = NEON_ucvtf(auVar31,4); + auVar29._1_3_ = 0; + auVar29[0] = (byte)((ulong)uVar28 >> 0x20); + auVar29[4] = (char)((ulong)uVar28 >> 0x28); + auVar29._5_3_ = 0; + auVar29[8] = (char)((ulong)uVar28 >> 0x30); + auVar29._9_3_ = 0; + auVar29[0xc] = (char)((ulong)uVar28 >> 0x38); + auVar29._13_3_ = 0; + auVar29 = NEON_ucvtf(auVar29,4); + auVar37._0_8_ = CONCAT44(fVar35 + auVar31._4_4_ * fVar34,fVar35 + auVar31._0_4_ * fVar34); + auVar37._8_4_ = fVar35 + auVar31._8_4_ * fVar34; + auVar37._12_4_ = fVar35 + auVar31._12_4_ * fVar34; + *(long *)(pfVar18 + -2) = auVar37._8_8_; + *(undefined8 *)(pfVar18 + -4) = auVar37._0_8_; + pfVar18[2] = fVar35 + auVar29._8_4_ * fVar34; + pfVar18[3] = fVar35 + auVar29._12_4_ * fVar34; + *pfVar18 = fVar35 + auVar29._0_4_ * fVar34; + pfVar18[1] = fVar35 + auVar29._4_4_ * fVar34; + pfVar18 = pfVar18 + 8; + puVar19 = puVar19 + 1; + } while (pfVar18 != (float *)(param_5 + (ulong)uVar13 * 0x20 + 0x30)); + } + iVar12 = iVar11; + if (iVar11 < iVar15) { + pfVar18 = (float *)(param_5 + lVar24 * 4); + pbVar20 = (byte *)((long)param_1 + lVar24); + iVar12 = iVar7; + if ((pfVar18 < (float *)((long)param_1 + lVar1) && pbVar20 < (byte *)(param_5 + lVar1 * 4)) + || (uVar2 < 4)) { + do { + pbVar6 = pbVar20 + 4; + bVar10 = *pbVar20; + pfVar18[1] = fVar35 + (float)pbVar20[1] * fVar34; + *pfVar18 = fVar35 + (float)bVar10 * fVar34; + bVar10 = pbVar20[2]; + pfVar18[3] = fVar35 + (float)pbVar20[3] * fVar34; + pfVar18[2] = fVar35 + (float)bVar10 * fVar34; + pfVar18 = pfVar18 + 4; + pbVar20 = pbVar6; + } while (pbVar6 != (byte *)((long)param_1 + lVar24 + 4 + (ulong)uVar14 * 4)); + } + else { + iVar17 = iVar11; + if (0xb < uVar16) { + uVar26 = 0; + do { + uVar26 = uVar26 + 1; + auVar39._6_2_ = 0; + auVar39._0_6_ = + (uint6)CONCAT14(pbVar20[1],(uint)CONCAT12(pbVar20[1],(ushort)*pbVar20)) & + 0xffff0000ffff; + auVar39[8] = pbVar20[2]; + auVar39._9_3_ = 0; + auVar39[0xc] = pbVar20[3]; + auVar39._13_3_ = 0; + auVar32._1_3_ = 0; + auVar32[0] = pbVar20[4]; + auVar32[4] = pbVar20[5]; + auVar32._5_3_ = 0; + auVar32[8] = pbVar20[6]; + auVar32._9_3_ = 0; + auVar32[0xc] = pbVar20[7]; + auVar32._13_3_ = 0; + auVar36._6_2_ = 0; + auVar36._0_6_ = + (uint6)CONCAT14(pbVar20[9],(uint)CONCAT12(pbVar20[9],(ushort)pbVar20[8])) & + 0xffff0000ffff; + auVar36[8] = pbVar20[10]; + auVar36._9_3_ = 0; + auVar36[0xc] = pbVar20[0xb]; + auVar36._13_3_ = 0; + auVar43._1_3_ = 0; + auVar43[0] = pbVar20[0xc]; + auVar43[4] = pbVar20[0xd]; + auVar43._5_3_ = 0; + auVar43[8] = pbVar20[0xe]; + auVar43._9_3_ = 0; + auVar43[0xc] = pbVar20[0xf]; + auVar43._13_3_ = 0; + auVar40 = NEON_scvtf(auVar39,4); + auVar31 = NEON_scvtf(auVar32,4); + auVar37 = NEON_scvtf(auVar36,4); + auVar29 = NEON_scvtf(auVar43,4); + /* try { // try from 002736b4 to 003736bb has its CatchHandler @ 002736f8 */ + *(ulong *)(pfVar18 + 2) = + CONCAT44(fVar35 + fVar34 * auVar40._12_4_,fVar35 + fVar34 * auVar40._8_4_); + *(ulong *)pfVar18 = + CONCAT44(fVar35 + fVar34 * auVar40._4_4_,fVar35 + fVar34 * auVar40._0_4_); + /* try { // try from 002736bc to 0037370b has its CatchHandler @ 002735bc */ + pfVar18[6] = fVar35 + fVar34 * auVar31._8_4_; + pfVar18[7] = fVar35 + fVar34 * auVar31._12_4_; + pfVar18[4] = fVar35 + fVar34 * auVar31._0_4_; + pfVar18[5] = fVar35 + fVar34 * auVar31._4_4_; + auVar40._0_8_ = + CONCAT44(fVar35 + fVar34 * auVar37._4_4_,fVar35 + fVar34 * auVar37._0_4_); + auVar40._8_4_ = fVar35 + fVar34 * auVar37._8_4_; + auVar40._12_4_ = fVar35 + fVar34 * auVar37._12_4_; + *(long *)(pfVar18 + 10) = auVar40._8_8_; + *(undefined8 *)(pfVar18 + 8) = auVar40._0_8_; + pfVar18[0xe] = fVar35 + fVar34 * auVar29._8_4_; + pfVar18[0xf] = fVar35 + fVar34 * auVar29._12_4_; + pfVar18[0xc] = fVar35 + fVar34 * auVar29._0_4_; + pfVar18[0xd] = fVar35 + fVar34 * auVar29._4_4_; + pfVar18 = pfVar18 + 0x10; + pbVar20 = pbVar20 + 0x10; + } while (uVar26 < uVar3); + iVar17 = iVar11 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_002737f8; + } + lVar22 = (long)iVar17; + /* catch() { ... } // from try @ 002736b4 with catch @ 002736f8 */ + lVar21 = param_5 + lVar22 * 4; + bVar10 = *(byte *)((long)param_1 + lVar22 + 1); + *(float *)(param_5 + lVar22 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22) * fVar34; + *(float *)(lVar21 + 4) = fVar35 + (float)bVar10 * fVar34; + bVar10 = *(byte *)((long)param_1 + lVar22 + 2); + *(float *)(lVar21 + 0xc) = fVar35 + (float)*(byte *)((long)param_1 + lVar22 + 3) * fVar34; + *(float *)(lVar21 + 8) = fVar35 + (float)bVar10 * fVar34; + if (iVar17 + 4 < iVar15) { + lVar22 = (long)(iVar17 + 4); + lVar21 = param_5 + lVar22 * 4; + bVar10 = *(byte *)((long)param_1 + lVar22 + 1); + *(float *)(param_5 + lVar22 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22) * fVar34; + *(float *)(lVar21 + 4) = fVar35 + (float)bVar10 * fVar34; + bVar10 = *(byte *)((long)param_1 + lVar22 + 2); + *(float *)(lVar21 + 0xc) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22 + 3) * fVar34; + *(float *)(lVar21 + 8) = fVar35 + (float)bVar10 * fVar34; + if (iVar17 + 8 < iVar15) { + lVar22 = (long)(iVar17 + 8); + lVar21 = param_5 + lVar22 * 4; + bVar10 = *(byte *)((long)param_1 + lVar22 + 1); + *(float *)(param_5 + lVar22 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22) * fVar34; + *(float *)(lVar21 + 4) = fVar35 + (float)bVar10 * fVar34; + bVar10 = *(byte *)((long)param_1 + lVar22 + 2); + *(float *)(lVar21 + 0xc) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22 + 3) * fVar34; + *(float *)(lVar21 + 8) = fVar35 + (float)bVar10 * fVar34; + } + } + } + } +LAB_002737f8: + if (iVar12 < iVar9) { + lVar21 = (long)iVar12; + uVar26 = iVar9 - iVar12; + pbVar20 = (byte *)((long)param_1 + lVar21); + pfVar18 = (float *)(param_5 + lVar21 * 4); + if ((pbVar20 < (byte *)(param_5 + (lVar21 + (ulong)uVar26) * 4) && + pfVar18 < (float *)((long)param_1 + lVar21 + (ulong)uVar26)) || (uVar26 < 0x13)) { + lVar21 = 0; + do { + pfVar18[lVar21] = fVar35 + (float)pbVar20[lVar21] * fVar34; + lVar21 = lVar21 + 1; + } while (lVar21 != (ulong)(uint)((iVar9 + -1) - iVar12) + 1); + } + else { + uVar8 = -((uint)((ulong)pfVar18 >> 2) & 3) & 3; + if (uVar26 < uVar8) { + uVar8 = uVar26; + } + iVar17 = iVar12; + if (uVar8 != 0) { + iVar17 = iVar12 + 1; + *pfVar18 = fVar35 + (float)*pbVar20 * fVar34; + if (uVar8 != 1) { + lVar22 = (long)iVar17; + iVar17 = iVar12 + 2; + *(float *)(param_5 + lVar22 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22) * fVar34; + if (uVar8 == 3) { + lVar22 = (long)iVar17; + iVar17 = iVar12 + 3; + *(float *)(param_5 + lVar22 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + lVar22) * fVar34; + } + } + } + uVar4 = ((uVar26 - uVar8) - 0x10 >> 4) + 1; + uVar25 = 0; + iVar12 = uVar4 * 0x10; + puVar19 = (undefined8 *)(param_5 + lVar21 * 4 + (ulong)uVar8 * 4); + pbVar20 = (byte *)((long)param_1 + lVar21 + (ulong)uVar8); + do { + uVar25 = uVar25 + 1; + auVar42._6_2_ = 0; + auVar42._0_6_ = + (uint6)CONCAT14(pbVar20[1],(uint)CONCAT12(pbVar20[1],(ushort)*pbVar20)) & + 0xffff0000ffff; + auVar42[8] = pbVar20[2]; + auVar42._9_3_ = 0; + auVar42[0xc] = pbVar20[3]; + auVar42._13_3_ = 0; + auVar38._1_3_ = 0; + auVar38[0] = pbVar20[4]; + auVar38[4] = pbVar20[5]; + auVar38._5_3_ = 0; + auVar38[8] = pbVar20[6]; + auVar38._9_3_ = 0; + auVar38[0xc] = pbVar20[7]; + auVar38._13_3_ = 0; + auVar41._6_2_ = 0; + auVar41._0_6_ = + (uint6)CONCAT14(pbVar20[9],(uint)CONCAT12(pbVar20[9],(ushort)pbVar20[8])) & + 0xffff0000ffff; + auVar41[8] = pbVar20[10]; + auVar41._9_3_ = 0; + auVar41[0xc] = pbVar20[0xb]; + auVar41._13_3_ = 0; + auVar33._1_3_ = 0; + auVar33[0] = pbVar20[0xc]; + auVar33[4] = pbVar20[0xd]; + auVar33._5_3_ = 0; + auVar33[8] = pbVar20[0xe]; + auVar33._9_3_ = 0; + auVar33[0xc] = pbVar20[0xf]; + auVar33._13_3_ = 0; + auVar43 = NEON_scvtf(auVar42,4); + auVar31 = NEON_scvtf(auVar38,4); + auVar37 = NEON_scvtf(auVar41,4); + auVar29 = NEON_scvtf(auVar33,4); + auVar30._0_8_ = + CONCAT44(fVar35 + fVar34 * auVar29._4_4_,fVar35 + fVar34 * auVar29._0_4_); + auVar30._8_4_ = fVar35 + fVar34 * auVar29._8_4_; + auVar30._12_4_ = fVar35 + fVar34 * auVar29._12_4_; + puVar19[1] = CONCAT44(fVar35 + fVar34 * auVar43._12_4_,fVar35 + fVar34 * auVar43._8_4_); + *puVar19 = CONCAT44(fVar35 + fVar34 * auVar43._4_4_,fVar35 + fVar34 * auVar43._0_4_); + *(float *)(puVar19 + 3) = fVar35 + fVar34 * auVar31._8_4_; + *(float *)((long)puVar19 + 0x1c) = fVar35 + fVar34 * auVar31._12_4_; + *(float *)(puVar19 + 2) = fVar35 + fVar34 * auVar31._0_4_; + *(float *)((long)puVar19 + 0x14) = fVar35 + fVar34 * auVar31._4_4_; + *(float *)(puVar19 + 5) = fVar35 + fVar34 * auVar37._8_4_; + *(float *)((long)puVar19 + 0x2c) = fVar35 + fVar34 * auVar37._12_4_; + *(float *)(puVar19 + 4) = fVar35 + fVar34 * auVar37._0_4_; + *(float *)((long)puVar19 + 0x24) = fVar35 + fVar34 * auVar37._4_4_; + puVar19[7] = auVar30._8_8_; + puVar19[6] = auVar30._0_8_; + puVar19 = puVar19 + 8; + pbVar20 = pbVar20 + 0x10; + } while (uVar25 < uVar4); + iVar17 = iVar17 + iVar12; + if (uVar26 - uVar8 != iVar12) { + iVar12 = iVar17 + 1; + *(float *)(param_5 + (long)iVar17 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar17) * fVar34; + if (iVar12 < iVar9) { + iVar5 = iVar17 + 2; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * fVar34; + if (iVar5 < iVar9) { + iVar12 = iVar17 + 3; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar5) * fVar34; + if (iVar12 < iVar9) { + iVar5 = iVar17 + 4; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * fVar34; + if (iVar5 < iVar9) { + iVar12 = iVar17 + 5; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar5) * fVar34; + if (iVar12 < iVar9) { + iVar5 = iVar17 + 6; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * fVar34; + if (iVar5 < iVar9) { + iVar12 = iVar17 + 7; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar5) * fVar34; + if (iVar12 < iVar9) { + iVar5 = iVar17 + 8; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * fVar34; + if (iVar5 < iVar9) { + iVar12 = iVar17 + 9; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar5) * fVar34; + if (iVar12 < iVar9) { + iVar5 = iVar17 + 10; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * fVar34; + if (iVar5 < iVar9) { + iVar12 = iVar17 + 0xb; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar5) * fVar34 + ; + if (iVar12 < iVar9) { + iVar5 = iVar17 + 0xc; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * + fVar34; + if (iVar5 < iVar9) { + iVar12 = iVar17 + 0xd; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar5) * + fVar34; + if (iVar12 < iVar9) { + iVar17 = iVar17 + 0xe; + *(float *)(param_5 + (long)iVar12 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar12) * + fVar34; + if (iVar17 < iVar9) { + *(float *)(param_5 + (long)iVar17 * 4) = + fVar35 + (float)*(byte *)((long)param_1 + (long)iVar17) + * fVar34; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar23 = iVar23 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 00273c04 (1800 bytes) name=FUN_00273c04 + +void FUN_00273c04(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7,double *param_8) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + uint uVar8; + int iVar9; + char cVar10; + byte bVar11; + int iVar12; + int iVar13; + uint uVar14; + uint uVar15; + int iVar16; + uint uVar17; + int iVar18; + float *pfVar19; + undefined8 *puVar20; + byte *pbVar21; + long lVar22; + long lVar23; + int iVar24; + long lVar25; + uint uVar26; + char *pcVar27; + uint uVar28; + undefined8 uVar29; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + float fVar35; + float fVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + + iVar24 = param_7[1]; + iVar9 = *param_7; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar24 != 0) { + uVar14 = iVar9 - 8U >> 3; + iVar12 = (uVar14 + 1) * 8; + if (iVar9 + -7 < 1) { + iVar12 = 0; + } + uVar17 = (iVar9 + -4) - iVar12; + lVar25 = (long)iVar12; + uVar15 = uVar17 >> 2; + uVar2 = uVar15 + 1; + uVar3 = (uVar15 - 3 >> 2) + 1; + iVar7 = iVar12 + 4 + uVar15 * 4; + lVar1 = lVar25 + (ulong)uVar2 * 4; + iVar16 = iVar9 + -3; + do { + if (0 < iVar9 + -7) { + pfVar19 = (float *)(param_5 + 0x10); + puVar20 = param_1; + do { + uVar29 = *puVar20; + auVar32._0_4_ = (int)(short)(char)uVar29; + auVar32._4_4_ = (int)(short)(char)((ulong)uVar29 >> 8); + auVar32._8_4_ = (int)(short)(char)((ulong)uVar29 >> 0x10); + auVar32._12_4_ = (int)(short)(char)((ulong)uVar29 >> 0x18); + auVar32 = NEON_scvtf(auVar32,4); + auVar30._0_4_ = (int)(short)(char)((ulong)uVar29 >> 0x20); + auVar30._4_4_ = (int)(short)(char)((ulong)uVar29 >> 0x28); + auVar30._8_4_ = (int)(short)(char)((ulong)uVar29 >> 0x30); + auVar30._12_4_ = (int)(short)(char)((ulong)uVar29 >> 0x38); + auVar30 = NEON_scvtf(auVar30,4); + auVar38._0_8_ = CONCAT44(fVar36 + auVar32._4_4_ * fVar35,fVar36 + auVar32._0_4_ * fVar35); + auVar38._8_4_ = fVar36 + auVar32._8_4_ * fVar35; + auVar38._12_4_ = fVar36 + auVar32._12_4_ * fVar35; + *(long *)(pfVar19 + -2) = auVar38._8_8_; + *(undefined8 *)(pfVar19 + -4) = auVar38._0_8_; + pfVar19[2] = fVar36 + auVar30._8_4_ * fVar35; + pfVar19[3] = fVar36 + auVar30._12_4_ * fVar35; + *pfVar19 = fVar36 + auVar30._0_4_ * fVar35; + pfVar19[1] = fVar36 + auVar30._4_4_ * fVar35; + pfVar19 = pfVar19 + 8; + puVar20 = puVar20 + 1; + } while (pfVar19 != (float *)(param_5 + (ulong)uVar14 * 0x20 + 0x30)); + } + iVar13 = iVar12; + if (iVar12 < iVar16) { + pfVar19 = (float *)(param_5 + lVar25 * 4); + pbVar21 = (byte *)((long)param_1 + lVar25); + iVar13 = iVar7; + if ((pfVar19 < (float *)((long)param_1 + lVar1) && pbVar21 < (byte *)(param_5 + lVar1 * 4)) + || (uVar2 < 4)) { + do { + pbVar6 = pbVar21 + 4; + bVar11 = *pbVar21; + pfVar19[1] = fVar36 + (float)(int)(char)pbVar21[1] * fVar35; + *pfVar19 = fVar36 + (float)bVar11 * fVar35; + bVar11 = pbVar21[2]; + pfVar19[3] = fVar36 + (float)pbVar21[3] * fVar35; + pfVar19[2] = fVar36 + (float)bVar11 * fVar35; + pfVar19 = pfVar19 + 4; + pbVar21 = pbVar6; + } while (pbVar6 != (byte *)((long)param_1 + lVar25 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar18 = iVar12; + if (0xb < uVar17) { + uVar28 = 0; + do { + uVar28 = uVar28 + 1; + auVar40._0_4_ = (int)(short)(char)*pbVar21; + auVar40._4_4_ = (int)(short)(char)pbVar21[1]; + auVar40._8_4_ = (int)(short)(char)pbVar21[2]; + auVar40._12_4_ = (int)(short)(char)pbVar21[3]; + auVar33._0_4_ = (int)(short)(char)pbVar21[4]; + auVar33._4_4_ = (int)(short)(char)pbVar21[5]; + auVar33._8_4_ = (int)(short)(char)pbVar21[6]; + auVar33._12_4_ = (int)(short)(char)pbVar21[7]; + auVar37._0_4_ = (int)(short)(char)pbVar21[8]; + auVar37._4_4_ = (int)(short)(char)pbVar21[9]; + auVar37._8_4_ = (int)(short)(char)pbVar21[10]; + auVar37._12_4_ = (int)(short)(char)pbVar21[0xb]; + auVar44._0_4_ = (int)(short)(char)pbVar21[0xc]; + auVar44._4_4_ = (int)(short)(char)pbVar21[0xd]; + auVar44._8_4_ = (int)(short)(char)pbVar21[0xe]; + auVar44._12_4_ = (int)(short)(char)pbVar21[0xf]; + auVar41 = NEON_scvtf(auVar40,4); + auVar32 = NEON_scvtf(auVar33,4); + auVar38 = NEON_scvtf(auVar37,4); + auVar30 = NEON_scvtf(auVar44,4); + *(ulong *)(pfVar19 + 2) = + CONCAT44(fVar36 + fVar35 * auVar41._12_4_,fVar36 + fVar35 * auVar41._8_4_); + *(ulong *)pfVar19 = + CONCAT44(fVar36 + fVar35 * auVar41._4_4_,fVar36 + fVar35 * auVar41._0_4_); + pfVar19[6] = fVar36 + fVar35 * auVar32._8_4_; + pfVar19[7] = fVar36 + fVar35 * auVar32._12_4_; + pfVar19[4] = fVar36 + fVar35 * auVar32._0_4_; + pfVar19[5] = fVar36 + fVar35 * auVar32._4_4_; + auVar41._0_8_ = + CONCAT44(fVar36 + fVar35 * auVar38._4_4_,fVar36 + fVar35 * auVar38._0_4_); + auVar41._8_4_ = fVar36 + fVar35 * auVar38._8_4_; + auVar41._12_4_ = fVar36 + fVar35 * auVar38._12_4_; + *(long *)(pfVar19 + 10) = auVar41._8_8_; + *(undefined8 *)(pfVar19 + 8) = auVar41._0_8_; + pfVar19[0xe] = fVar36 + fVar35 * auVar30._8_4_; + pfVar19[0xf] = fVar36 + fVar35 * auVar30._12_4_; + pfVar19[0xc] = fVar36 + fVar35 * auVar30._0_4_; + pfVar19[0xd] = fVar36 + fVar35 * auVar30._4_4_; + pfVar19 = pfVar19 + 0x10; + pbVar21 = pbVar21 + 0x10; + } while (uVar28 < uVar3); + iVar18 = iVar12 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00273f00; + } + lVar23 = (long)iVar18; + lVar22 = param_5 + lVar23 * 4; + cVar10 = *(char *)((long)param_1 + lVar23 + 1); + *(float *)(param_5 + lVar23 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23) * fVar35; + *(float *)(lVar22 + 4) = fVar36 + (float)(int)cVar10 * fVar35; + cVar10 = *(char *)((long)param_1 + lVar23 + 2); + *(float *)(lVar22 + 0xc) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23 + 3) * fVar35; + *(float *)(lVar22 + 8) = fVar36 + (float)(int)cVar10 * fVar35; + if (iVar18 + 4 < iVar16) { + lVar23 = (long)(iVar18 + 4); + lVar22 = param_5 + lVar23 * 4; + cVar10 = *(char *)((long)param_1 + lVar23 + 1); + *(float *)(param_5 + lVar23 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23) * fVar35; + *(float *)(lVar22 + 4) = fVar36 + (float)(int)cVar10 * fVar35; + cVar10 = *(char *)((long)param_1 + lVar23 + 2); + *(float *)(lVar22 + 0xc) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23 + 3) * fVar35; + *(float *)(lVar22 + 8) = fVar36 + (float)(int)cVar10 * fVar35; + if (iVar18 + 8 < iVar16) { + lVar23 = (long)(iVar18 + 8); + lVar22 = param_5 + lVar23 * 4; + cVar10 = *(char *)((long)param_1 + lVar23 + 1); + *(float *)(param_5 + lVar23 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23) * fVar35; + *(float *)(lVar22 + 4) = fVar36 + (float)(int)cVar10 * fVar35; + cVar10 = *(char *)((long)param_1 + lVar23 + 2); + *(float *)(lVar22 + 0xc) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23 + 3) * fVar35; + *(float *)(lVar22 + 8) = fVar36 + (float)(int)cVar10 * fVar35; + } + } + } + } +LAB_00273f00: + if (iVar13 < iVar9) { + lVar22 = (long)iVar13; + uVar28 = iVar9 - iVar13; + pcVar27 = (char *)((long)param_1 + lVar22); + pfVar19 = (float *)(param_5 + lVar22 * 4); + if ((pcVar27 < (char *)(param_5 + (lVar22 + (ulong)uVar28) * 4) && + pfVar19 < (float *)((long)param_1 + lVar22 + (ulong)uVar28)) || (uVar28 < 0x14)) { + lVar22 = 0; + do { + pfVar19[lVar22] = fVar36 + (float)(int)pcVar27[lVar22] * fVar35; + lVar22 = lVar22 + 1; + } while (lVar22 != (ulong)(uint)((iVar9 + -1) - iVar13) + 1); + } + else { + uVar8 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + if (uVar28 < uVar8) { + uVar8 = uVar28; + } + iVar18 = iVar13; + if (uVar8 != 0) { + iVar18 = iVar13 + 1; + *pfVar19 = fVar36 + (float)(int)*pcVar27 * fVar35; + if (uVar8 != 1) { + lVar23 = (long)iVar18; + iVar18 = iVar13 + 2; + *(float *)(param_5 + lVar23 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23) * fVar35; + if (uVar8 == 3) { + lVar23 = (long)iVar18; + iVar18 = iVar13 + 3; + *(float *)(param_5 + lVar23 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + lVar23) * fVar35; + } + } + } + uVar4 = ((uVar28 - uVar8) - 0x10 >> 4) + 1; + uVar26 = 0; + iVar13 = uVar4 * 0x10; + puVar20 = (undefined8 *)(param_5 + lVar22 * 4 + (ulong)uVar8 * 4); + pcVar27 = (char *)((long)param_1 + lVar22 + (ulong)uVar8); + do { + uVar26 = uVar26 + 1; + auVar43._0_4_ = (int)(short)*pcVar27; + auVar43._4_4_ = (int)(short)pcVar27[1]; + auVar43._8_4_ = (int)(short)pcVar27[2]; + auVar43._12_4_ = (int)(short)pcVar27[3]; + auVar39._0_4_ = (int)(short)pcVar27[4]; + auVar39._4_4_ = (int)(short)pcVar27[5]; + auVar39._8_4_ = (int)(short)pcVar27[6]; + auVar39._12_4_ = (int)(short)pcVar27[7]; + auVar42._0_4_ = (int)(short)pcVar27[8]; + auVar42._4_4_ = (int)(short)pcVar27[9]; + auVar42._8_4_ = (int)(short)pcVar27[10]; + auVar42._12_4_ = (int)(short)pcVar27[0xb]; + auVar34._0_4_ = (int)(short)pcVar27[0xc]; + auVar34._4_4_ = (int)(short)pcVar27[0xd]; + auVar34._8_4_ = (int)(short)pcVar27[0xe]; + auVar34._12_4_ = (int)(short)pcVar27[0xf]; + auVar44 = NEON_scvtf(auVar43,4); + auVar32 = NEON_scvtf(auVar39,4); + auVar38 = NEON_scvtf(auVar42,4); + auVar30 = NEON_scvtf(auVar34,4); + auVar31._0_8_ = + CONCAT44(fVar36 + fVar35 * auVar30._4_4_,fVar36 + fVar35 * auVar30._0_4_); + auVar31._8_4_ = fVar36 + fVar35 * auVar30._8_4_; + auVar31._12_4_ = fVar36 + fVar35 * auVar30._12_4_; + puVar20[1] = CONCAT44(fVar36 + fVar35 * auVar44._12_4_,fVar36 + fVar35 * auVar44._8_4_); + *puVar20 = CONCAT44(fVar36 + fVar35 * auVar44._4_4_,fVar36 + fVar35 * auVar44._0_4_); + *(float *)(puVar20 + 3) = fVar36 + fVar35 * auVar32._8_4_; + *(float *)((long)puVar20 + 0x1c) = fVar36 + fVar35 * auVar32._12_4_; + *(float *)(puVar20 + 2) = fVar36 + fVar35 * auVar32._0_4_; + *(float *)((long)puVar20 + 0x14) = fVar36 + fVar35 * auVar32._4_4_; + *(float *)(puVar20 + 5) = fVar36 + fVar35 * auVar38._8_4_; + *(float *)((long)puVar20 + 0x2c) = fVar36 + fVar35 * auVar38._12_4_; + *(float *)(puVar20 + 4) = fVar36 + fVar35 * auVar38._0_4_; + *(float *)((long)puVar20 + 0x24) = fVar36 + fVar35 * auVar38._4_4_; + puVar20[7] = auVar31._8_8_; + puVar20[6] = auVar31._0_8_; + puVar20 = puVar20 + 8; + pcVar27 = pcVar27 + 0x10; + } while (uVar26 < uVar4); + iVar18 = iVar18 + iVar13; + if (uVar28 - uVar8 != iVar13) { + iVar13 = iVar18 + 1; + *(float *)(param_5 + (long)iVar18 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar18) * fVar35; + if (iVar13 < iVar9) { + iVar5 = iVar18 + 2; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar13) * fVar35; + if (iVar5 < iVar9) { + iVar13 = iVar18 + 3; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar5) * fVar35; + if (iVar13 < iVar9) { + iVar5 = iVar18 + 4; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar13) * fVar35; + if (iVar5 < iVar9) { + iVar13 = iVar18 + 5; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar5) * fVar35; + if (iVar13 < iVar9) { + iVar5 = iVar18 + 6; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar13) * fVar35; + if (iVar5 < iVar9) { + iVar13 = iVar18 + 7; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar5) * fVar35; + if (iVar13 < iVar9) { + iVar5 = iVar18 + 8; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar13) * fVar35 + ; + if (iVar5 < iVar9) { + iVar13 = iVar18 + 9; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar5) * + fVar35; + if (iVar13 < iVar9) { + iVar5 = iVar18 + 10; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar13) * + fVar35; + if (iVar5 < iVar9) { + iVar13 = iVar18 + 0xb; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar5) * + fVar35; + if (iVar13 < iVar9) { + iVar5 = iVar18 + 0xc; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar13) + * fVar35; + if (iVar5 < iVar9) { + iVar13 = iVar18 + 0xd; + *(float *)(param_5 + (long)iVar5 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + (long)iVar5) + * fVar35; + if (iVar13 < iVar9) { + iVar18 = iVar18 + 0xe; + *(float *)(param_5 + (long)iVar13 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + + (long)iVar13) * fVar35; + if (iVar18 < iVar9) { + *(float *)(param_5 + (long)iVar18 * 4) = + fVar36 + (float)(int)*(char *)((long)param_1 + + (long)iVar18) * fVar35; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar24 = iVar24 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027430c (1176 bytes) name=FUN_0027430c + +void FUN_0027430c(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + ulong uVar6; + int iVar7; + ushort uVar8; + ushort uVar9; + ushort uVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + undefined8 *puVar17; + long lVar18; + ushort *puVar19; + int iVar20; + long lVar21; + int iVar22; + uint uVar23; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + float fVar30; + float fVar31; + + iVar22 = param_7[1]; + iVar7 = *param_7; + fVar30 = (float)*param_8; + fVar31 = (float)param_8[1]; + if (iVar22 != 0) { + uVar12 = iVar7 - 8U >> 3; + iVar11 = (uVar12 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar11 = 0; + } + uVar14 = (iVar7 + -4) - iVar11; + uVar13 = uVar14 >> 2; + uVar1 = (uVar13 - 1 >> 1) + 1; + iVar5 = iVar11 + 4 + uVar13 * 4; + do { + if (0 < iVar7 + -7) { + puVar17 = (undefined8 *)(param_5 + 0x10); + puVar19 = param_1; + do { + auVar27._2_2_ = 0; + auVar27._0_2_ = puVar19[4]; + auVar27._4_2_ = puVar19[5]; + auVar27._6_2_ = 0; + auVar27._8_2_ = puVar19[6]; + auVar27._10_2_ = 0; + auVar27._12_2_ = puVar19[7]; + auVar27._14_2_ = 0; + auVar27 = NEON_ucvtf(auVar27,4); + auVar24._2_2_ = 0; + auVar24._0_2_ = *puVar19; + auVar24._4_2_ = puVar19[1]; + auVar24._6_2_ = 0; + auVar24._8_2_ = puVar19[2]; + auVar24._10_2_ = 0; + auVar24._12_2_ = puVar19[3]; + auVar24._14_2_ = 0; + auVar24 = NEON_ucvtf(auVar24,4); + puVar17[-1] = CONCAT44(fVar31 + auVar24._12_4_ * fVar30,fVar31 + auVar24._8_4_ * fVar30); + puVar17[-2] = CONCAT44(fVar31 + auVar24._4_4_ * fVar30,fVar31 + auVar24._0_4_ * fVar30); + puVar17[1] = CONCAT44(fVar31 + auVar27._12_4_ * fVar30,fVar31 + auVar27._8_4_ * fVar30); + *puVar17 = CONCAT44(fVar31 + auVar27._4_4_ * fVar30,fVar31 + auVar27._0_4_ * fVar30); + puVar17 = puVar17 + 4; + puVar19 = puVar19 + 8; + } while (puVar17 != (undefined8 *)(param_5 + (ulong)uVar12 * 0x20 + 0x30)); + } + iVar20 = iVar11; + if (iVar11 < iVar7 + -3) { + iVar2 = iVar11; + iVar20 = iVar5; + if (3 < uVar14) { + uVar16 = 0; + puVar17 = (undefined8 *)(param_5 + (long)iVar11 * 4); + puVar19 = param_1 + iVar11; + do { + uVar16 = uVar16 + 1; + auVar28._2_2_ = 0; + auVar28._0_2_ = *puVar19; + auVar28._4_2_ = puVar19[1]; + auVar28._6_2_ = 0; + auVar28._8_2_ = puVar19[2]; + auVar28._10_2_ = 0; + auVar28._12_2_ = puVar19[3]; + auVar28._14_2_ = 0; + auVar25._2_2_ = 0; + auVar25._0_2_ = puVar19[4]; + auVar25._4_2_ = puVar19[5]; + auVar25._6_2_ = 0; + auVar25._8_2_ = puVar19[6]; + auVar25._10_2_ = 0; + auVar25._12_2_ = puVar19[7]; + auVar25._14_2_ = 0; + auVar27 = NEON_scvtf(auVar28,4); + auVar24 = NEON_scvtf(auVar25,4); + puVar17[1] = CONCAT44(fVar31 + fVar30 * auVar27._12_4_,fVar31 + fVar30 * auVar27._8_4_); + *puVar17 = CONCAT44(fVar31 + fVar30 * auVar27._4_4_,fVar31 + fVar30 * auVar27._0_4_); + puVar17[3] = CONCAT44(fVar31 + fVar30 * auVar24._12_4_,fVar31 + fVar30 * auVar24._8_4_); + puVar17[2] = CONCAT44(fVar31 + fVar30 * auVar24._4_4_,fVar31 + fVar30 * auVar24._0_4_); + puVar17 = puVar17 + 4; + puVar19 = puVar19 + 8; + } while (uVar16 < uVar1); + iVar2 = iVar11 + uVar1 * 8; + if (uVar1 * 2 == uVar13 + 1) goto LAB_002744d0; + } + lVar18 = (long)iVar2; + lVar21 = param_5 + lVar18 * 4; + uVar8 = param_1[lVar18 + 1]; + uVar9 = param_1[lVar18 + 3]; + uVar10 = param_1[lVar18 + 2]; + *(float *)(param_5 + lVar18 * 4) = fVar31 + (float)param_1[lVar18] * fVar30; + *(float *)(lVar21 + 4) = fVar31 + (float)uVar8 * fVar30; + *(float *)(lVar21 + 0xc) = fVar31 + (float)uVar9 * fVar30; + *(float *)(lVar21 + 8) = fVar31 + (float)uVar10 * fVar30; + } +LAB_002744d0: + if (iVar20 < iVar7) { + lVar21 = (long)iVar20; + uVar15 = iVar7 - iVar20; + uVar16 = -((uint)((ulong)(param_5 + lVar21 * 4) >> 2) & 3) & 3; + uVar6 = (ulong)uVar16; + if (uVar15 < uVar16) { + uVar6 = (ulong)uVar15; + } + if (uVar15 < 9) { + uVar6 = (ulong)uVar15; + } + uVar16 = (uint)uVar6; + if (uVar16 != 0) { + iVar2 = iVar20 + 1; + *(float *)(param_5 + lVar21 * 4) = fVar31 + (float)param_1[lVar21] * fVar30; + if (uVar16 != 1) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)param_1[iVar2] * fVar30; + iVar2 = iVar3; + if (uVar16 != 2) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)param_1[iVar3] * fVar30; + if (uVar16 != 3) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)param_1[iVar2] * fVar30; + iVar2 = iVar3; + if (uVar16 != 4) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)param_1[iVar3] * fVar30; + if (uVar16 != 5) { + iVar3 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)param_1[iVar2] * fVar30; + iVar2 = iVar3; + if (uVar16 != 6) { + iVar2 = iVar20 + 7; + *(float *)(param_5 + (long)iVar3 * 4) = + fVar31 + (float)param_1[iVar3] * fVar30; + if (uVar16 == 8) { + *(float *)(param_5 + (long)iVar2 * 4) = + fVar31 + (float)param_1[iVar2] * fVar30; + iVar2 = iVar20 + 8; + } + } + } + } + } + } + } + iVar20 = iVar2; + if (uVar16 == uVar15) goto LAB_0027475c; + } + uVar4 = ((uVar15 - uVar16) - 8 >> 3) + 1; + iVar2 = uVar4 * 8; + if (6 < (uVar15 - 1) - uVar16) { + uVar23 = 0; + puVar19 = param_1 + uVar6 + lVar21; + puVar17 = (undefined8 *)(param_5 + (uVar6 + lVar21) * 4); + do { + uVar23 = uVar23 + 1; + auVar29._2_2_ = 0; + auVar29._0_2_ = *puVar19; + auVar29._4_2_ = puVar19[1]; + auVar29._6_2_ = 0; + auVar29._8_2_ = puVar19[2]; + auVar29._10_2_ = 0; + auVar29._12_2_ = puVar19[3]; + auVar29._14_2_ = 0; + auVar26._2_2_ = 0; + auVar26._0_2_ = puVar19[4]; + auVar26._4_2_ = puVar19[5]; + auVar26._6_2_ = 0; + auVar26._8_2_ = puVar19[6]; + auVar26._10_2_ = 0; + auVar26._12_2_ = puVar19[7]; + auVar26._14_2_ = 0; + auVar27 = NEON_scvtf(auVar29,4); + auVar24 = NEON_scvtf(auVar26,4); + puVar17[1] = CONCAT44(fVar31 + fVar30 * auVar27._12_4_,fVar31 + fVar30 * auVar27._8_4_); + *puVar17 = CONCAT44(fVar31 + fVar30 * auVar27._4_4_,fVar31 + fVar30 * auVar27._0_4_); + puVar17[3] = CONCAT44(fVar31 + fVar30 * auVar24._12_4_,fVar31 + fVar30 * auVar24._8_4_); + puVar17[2] = CONCAT44(fVar31 + fVar30 * auVar24._4_4_,fVar31 + fVar30 * auVar24._0_4_); + puVar19 = puVar19 + 8; + puVar17 = puVar17 + 4; + } while (uVar23 < uVar4); + iVar20 = iVar20 + iVar2; + if (iVar2 == uVar15 - uVar16) goto LAB_0027475c; + } + iVar2 = iVar20 + 1; + *(float *)(param_5 + (long)iVar20 * 4) = fVar31 + (float)param_1[iVar20] * fVar30; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)param_1[iVar2] * fVar30; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)param_1[iVar3] * fVar30; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)param_1[iVar2] * fVar30; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)param_1[iVar3] * fVar30; + if (iVar2 < iVar7) { + iVar20 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)param_1[iVar2] * fVar30; + if (iVar20 < iVar7) { + *(float *)(param_5 + (long)iVar20 * 4) = + fVar31 + (float)param_1[iVar20] * fVar30; + } + } + } + } + } + } + } +LAB_0027475c: + iVar22 = iVar22 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 002747a4 (1176 bytes) name=FUN_002747a4 + +void FUN_002747a4(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + ulong uVar6; + int iVar7; + short sVar8; + short sVar9; + short sVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + undefined8 *puVar17; + long lVar18; + short *psVar19; + int iVar20; + long lVar21; + int iVar22; + uint uVar23; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + float fVar30; + float fVar31; + + iVar22 = param_7[1]; + iVar7 = *param_7; + fVar30 = (float)*param_8; + fVar31 = (float)param_8[1]; + if (iVar22 != 0) { + uVar12 = iVar7 - 8U >> 3; + iVar11 = (uVar12 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar11 = 0; + } + uVar14 = (iVar7 + -4) - iVar11; + uVar13 = uVar14 >> 2; + uVar1 = (uVar13 - 1 >> 1) + 1; + iVar5 = iVar11 + 4 + uVar13 * 4; + do { + if (0 < iVar7 + -7) { + puVar17 = (undefined8 *)(param_5 + 0x10); + psVar19 = param_1; + do { + auVar27._0_4_ = (int)psVar19[4]; + auVar27._4_4_ = (int)psVar19[5]; + auVar27._8_4_ = (int)psVar19[6]; + auVar27._12_4_ = (int)psVar19[7]; + auVar27 = NEON_scvtf(auVar27,4); + auVar24._0_4_ = (int)*psVar19; + auVar24._4_4_ = (int)psVar19[1]; + auVar24._8_4_ = (int)psVar19[2]; + auVar24._12_4_ = (int)psVar19[3]; + auVar24 = NEON_scvtf(auVar24,4); + puVar17[-1] = CONCAT44(fVar31 + auVar24._12_4_ * fVar30,fVar31 + auVar24._8_4_ * fVar30); + puVar17[-2] = CONCAT44(fVar31 + auVar24._4_4_ * fVar30,fVar31 + auVar24._0_4_ * fVar30); + puVar17[1] = CONCAT44(fVar31 + auVar27._12_4_ * fVar30,fVar31 + auVar27._8_4_ * fVar30); + *puVar17 = CONCAT44(fVar31 + auVar27._4_4_ * fVar30,fVar31 + auVar27._0_4_ * fVar30); + puVar17 = puVar17 + 4; + psVar19 = psVar19 + 8; + } while (puVar17 != (undefined8 *)(param_5 + (ulong)uVar12 * 0x20 + 0x30)); + } + iVar20 = iVar11; + if (iVar11 < iVar7 + -3) { + iVar2 = iVar11; + iVar20 = iVar5; + if (3 < uVar14) { + uVar16 = 0; + puVar17 = (undefined8 *)(param_5 + (long)iVar11 * 4); + psVar19 = param_1 + iVar11; + do { + uVar16 = uVar16 + 1; + auVar28._0_4_ = (int)*psVar19; + auVar28._4_4_ = (int)psVar19[1]; + auVar28._8_4_ = (int)psVar19[2]; + auVar28._12_4_ = (int)psVar19[3]; + auVar25._0_4_ = (int)psVar19[4]; + auVar25._4_4_ = (int)psVar19[5]; + auVar25._8_4_ = (int)psVar19[6]; + auVar25._12_4_ = (int)psVar19[7]; + auVar27 = NEON_scvtf(auVar28,4); + auVar24 = NEON_scvtf(auVar25,4); + puVar17[1] = CONCAT44(fVar31 + fVar30 * auVar27._12_4_,fVar31 + fVar30 * auVar27._8_4_); + *puVar17 = CONCAT44(fVar31 + fVar30 * auVar27._4_4_,fVar31 + fVar30 * auVar27._0_4_); + puVar17[3] = CONCAT44(fVar31 + fVar30 * auVar24._12_4_,fVar31 + fVar30 * auVar24._8_4_); + puVar17[2] = CONCAT44(fVar31 + fVar30 * auVar24._4_4_,fVar31 + fVar30 * auVar24._0_4_); + puVar17 = puVar17 + 4; + psVar19 = psVar19 + 8; + } while (uVar16 < uVar1); + iVar2 = iVar11 + uVar1 * 8; + if (uVar1 * 2 == uVar13 + 1) goto LAB_00274968; + } + lVar18 = (long)iVar2; + lVar21 = param_5 + lVar18 * 4; + sVar8 = param_1[lVar18 + 1]; + sVar9 = param_1[lVar18 + 3]; + sVar10 = param_1[lVar18 + 2]; + *(float *)(param_5 + lVar18 * 4) = fVar31 + (float)(int)param_1[lVar18] * fVar30; + *(float *)(lVar21 + 4) = fVar31 + (float)(int)sVar8 * fVar30; + *(float *)(lVar21 + 0xc) = fVar31 + (float)(int)sVar9 * fVar30; + *(float *)(lVar21 + 8) = fVar31 + (float)(int)sVar10 * fVar30; + } +LAB_00274968: + if (iVar20 < iVar7) { + lVar21 = (long)iVar20; + uVar15 = iVar7 - iVar20; + uVar16 = -((uint)((ulong)(param_5 + lVar21 * 4) >> 2) & 3) & 3; + uVar6 = (ulong)uVar16; + if (uVar15 < uVar16) { + uVar6 = (ulong)uVar15; + } + if (uVar15 < 9) { + uVar6 = (ulong)uVar15; + } + uVar16 = (uint)uVar6; + if (uVar16 != 0) { + iVar2 = iVar20 + 1; + *(float *)(param_5 + lVar21 * 4) = fVar31 + (float)(int)param_1[lVar21] * fVar30; + if (uVar16 != 1) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)(int)param_1[iVar2] * fVar30; + iVar2 = iVar3; + if (uVar16 != 2) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)(int)param_1[iVar3] * fVar30; + if (uVar16 != 3) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)(int)param_1[iVar2] * fVar30 + ; + iVar2 = iVar3; + if (uVar16 != 4) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = + fVar31 + (float)(int)param_1[iVar3] * fVar30; + if (uVar16 != 5) { + iVar3 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = + fVar31 + (float)(int)param_1[iVar2] * fVar30; + iVar2 = iVar3; + if (uVar16 != 6) { + iVar2 = iVar20 + 7; + *(float *)(param_5 + (long)iVar3 * 4) = + fVar31 + (float)(int)param_1[iVar3] * fVar30; + if (uVar16 == 8) { + *(float *)(param_5 + (long)iVar2 * 4) = + fVar31 + (float)(int)param_1[iVar2] * fVar30; + iVar2 = iVar20 + 8; + } + } + } + } + } + } + } + iVar20 = iVar2; + if (uVar16 == uVar15) goto LAB_00274bf4; + } + uVar4 = ((uVar15 - uVar16) - 8 >> 3) + 1; + iVar2 = uVar4 * 8; + if (6 < (uVar15 - 1) - uVar16) { + uVar23 = 0; + psVar19 = param_1 + uVar6 + lVar21; + puVar17 = (undefined8 *)(param_5 + (uVar6 + lVar21) * 4); + do { + uVar23 = uVar23 + 1; + auVar29._0_4_ = (int)*psVar19; + auVar29._4_4_ = (int)psVar19[1]; + auVar29._8_4_ = (int)psVar19[2]; + auVar29._12_4_ = (int)psVar19[3]; + auVar26._0_4_ = (int)psVar19[4]; + auVar26._4_4_ = (int)psVar19[5]; + auVar26._8_4_ = (int)psVar19[6]; + auVar26._12_4_ = (int)psVar19[7]; + auVar27 = NEON_scvtf(auVar29,4); + auVar24 = NEON_scvtf(auVar26,4); + puVar17[1] = CONCAT44(fVar31 + fVar30 * auVar27._12_4_,fVar31 + fVar30 * auVar27._8_4_); + *puVar17 = CONCAT44(fVar31 + fVar30 * auVar27._4_4_,fVar31 + fVar30 * auVar27._0_4_); + puVar17[3] = CONCAT44(fVar31 + fVar30 * auVar24._12_4_,fVar31 + fVar30 * auVar24._8_4_); + puVar17[2] = CONCAT44(fVar31 + fVar30 * auVar24._4_4_,fVar31 + fVar30 * auVar24._0_4_); + psVar19 = psVar19 + 8; + puVar17 = puVar17 + 4; + } while (uVar23 < uVar4); + iVar20 = iVar20 + iVar2; + if (iVar2 == uVar15 - uVar16) goto LAB_00274bf4; + } + iVar2 = iVar20 + 1; + *(float *)(param_5 + (long)iVar20 * 4) = fVar31 + (float)(int)param_1[iVar20] * fVar30; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)(int)param_1[iVar2] * fVar30; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)(int)param_1[iVar3] * fVar30; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = fVar31 + (float)(int)param_1[iVar2] * fVar30; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = fVar31 + (float)(int)param_1[iVar3] * fVar30 + ; + if (iVar2 < iVar7) { + iVar20 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = + fVar31 + (float)(int)param_1[iVar2] * fVar30; + if (iVar20 < iVar7) { + *(float *)(param_5 + (long)iVar20 * 4) = + fVar31 + (float)(int)param_1[iVar20] * fVar30; + } + } + } + } + } + } + } +LAB_00274bf4: + iVar22 = iVar22 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 00274c3c (1372 bytes) name=FUN_00274c3c + +void FUN_00274c3c(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + uint *puVar8; + uint uVar9; + int iVar10; + byte bVar11; + int iVar12; + int iVar13; + uint uVar14; + uint uVar15; + int iVar16; + uint uVar17; + uint3 uVar18; + uint3 uVar19; + int iVar20; + ulong *puVar21; + byte *pbVar22; + long lVar23; + undefined8 *puVar24; + long lVar25; + int iVar26; + long lVar27; + uint uVar28; + uint uVar29; + undefined1 uVar30; + undefined1 uVar31; + undefined1 uVar32; + undefined8 uVar33; + undefined8 uVar34; + + iVar26 = param_7[1]; + iVar10 = *param_7; + if (iVar26 != 0) { + uVar14 = iVar10 - 8U >> 3; + iVar12 = (uVar14 + 1) * 8; + if (iVar10 + -7 < 1) { + iVar12 = 0; + } + uVar17 = (iVar10 + -4) - iVar12; + lVar27 = (long)iVar12; + uVar15 = uVar17 >> 2; + uVar2 = uVar15 + 1; + uVar3 = (uVar15 - 3 >> 2) + 1; + iVar7 = iVar12 + 4 + uVar15 * 4; + lVar1 = lVar27 + (ulong)uVar2 * 4; + iVar16 = iVar10 + -3; + do { + if (0 < iVar10 + -7) { + puVar21 = (ulong *)(param_5 + 0x10); + puVar24 = param_1; + do { + uVar33 = *puVar24; + uVar18 = CONCAT12((char)((ulong)uVar33 >> 8),(short)uVar33) & 0xff00ff; + uVar30 = (undefined1)((ulong)uVar33 >> 0x28); + puVar21[-1] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x18), + (uint)(byte)((ulong)uVar33 >> 0x10)); + puVar21[-2] = (ulong)((uint6)CONCAT14((char)(uVar18 >> 0x10),(uint)uVar18) & + 0xffff0000ffff); + puVar21[1] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x38), + (uint)(byte)((ulong)uVar33 >> 0x30)); + *puVar21 = (ulong)((uint6)CONCAT14(uVar30,(uint)CONCAT12(uVar30,(ushort)(byte)((ulong) + uVar33 >> 0x20))) & 0xffff0000ffff); + puVar21 = puVar21 + 4; + puVar24 = puVar24 + 1; + } while (puVar21 != (ulong *)(param_5 + (ulong)uVar14 * 0x20 + 0x30)); + } + iVar13 = iVar12; + if (iVar12 < iVar16) { + puVar21 = (ulong *)(param_5 + lVar27 * 4); + pbVar22 = (byte *)((long)param_1 + lVar27); + iVar13 = iVar7; + if ((puVar21 < (ulong *)((long)param_1 + lVar1) && pbVar22 < (byte *)(param_5 + lVar1 * 4)) + || (uVar2 < 5)) { + do { + bVar11 = pbVar22[1]; + pbVar6 = pbVar22 + 4; + *(uint *)puVar21 = (uint)*pbVar22; + *(uint *)((long)puVar21 + 4) = (uint)bVar11; + bVar11 = pbVar22[3]; + *(uint *)(puVar21 + 1) = (uint)pbVar22[2]; + *(uint *)((long)puVar21 + 0xc) = (uint)bVar11; + puVar21 = puVar21 + 2; + pbVar22 = pbVar6; + } while (pbVar6 != (byte *)((long)param_1 + lVar27 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar20 = iVar12; + if (0xb < uVar17) { + uVar29 = 0; + do { + uVar34 = *(undefined8 *)(pbVar22 + 8); + uVar33 = *(undefined8 *)pbVar22; + uVar29 = uVar29 + 1; + uVar18 = CONCAT12((char)((ulong)uVar33 >> 8),(short)uVar33) & 0xff00ff; + uVar30 = (undefined1)((ulong)uVar33 >> 0x28); + uVar19 = CONCAT12((char)((ulong)uVar34 >> 8),(short)uVar34) & 0xff00ff; + uVar31 = (undefined1)((ulong)uVar34 >> 0x28); + puVar21[1] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x18), + (uint)(byte)((ulong)uVar33 >> 0x10)); + *puVar21 = (ulong)((uint6)CONCAT14((char)(uVar18 >> 0x10),(uint)uVar18) & + 0xffff0000ffff); + puVar21[3] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x38), + (uint)(byte)((ulong)uVar33 >> 0x30)); + puVar21[2] = (ulong)((uint6)CONCAT14(uVar30,(uint)CONCAT12(uVar30,(ushort)(byte)(( + ulong)uVar33 >> 0x20))) & 0xffff0000ffff); + puVar21[5] = (ulong)CONCAT14((char)((ulong)uVar34 >> 0x18), + (uint)(byte)((ulong)uVar34 >> 0x10)); + puVar21[4] = (ulong)((uint6)CONCAT14((char)(uVar19 >> 0x10),(uint)uVar19) & + 0xffff0000ffff); + puVar21[7] = (ulong)CONCAT14((char)((ulong)uVar34 >> 0x38), + (uint)(byte)((ulong)uVar34 >> 0x30)); + puVar21[6] = (ulong)((uint6)CONCAT14(uVar31,(uint)CONCAT12(uVar31,(ushort)(byte)(( + ulong)uVar34 >> 0x20))) & 0xffff0000ffff); + puVar21 = puVar21 + 8; + pbVar22 = pbVar22 + 0x10; + } while (uVar29 < uVar3); + iVar20 = iVar12 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00274e74; + } + lVar25 = (long)iVar20; + lVar23 = param_5 + lVar25 * 4; + bVar11 = *(byte *)((long)param_1 + lVar25 + 1); + *(uint *)(param_5 + lVar25 * 4) = (uint)*(byte *)((long)param_1 + lVar25); + *(uint *)(lVar23 + 4) = (uint)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar25 + 3); + *(uint *)(lVar23 + 8) = (uint)*(byte *)((long)param_1 + lVar25 + 2); + *(uint *)(lVar23 + 0xc) = (uint)bVar11; + if (iVar20 + 4 < iVar16) { + lVar25 = (long)(iVar20 + 4); + lVar23 = param_5 + lVar25 * 4; + bVar11 = *(byte *)((long)param_1 + lVar25 + 1); + *(uint *)(param_5 + lVar25 * 4) = (uint)*(byte *)((long)param_1 + lVar25); + *(uint *)(lVar23 + 4) = (uint)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar25 + 3); + *(uint *)(lVar23 + 8) = (uint)*(byte *)((long)param_1 + lVar25 + 2); + *(uint *)(lVar23 + 0xc) = (uint)bVar11; + if (iVar20 + 8 < iVar16) { + lVar25 = (long)(iVar20 + 8); + lVar23 = param_5 + lVar25 * 4; + bVar11 = *(byte *)((long)param_1 + lVar25 + 1); + *(uint *)(param_5 + lVar25 * 4) = (uint)*(byte *)((long)param_1 + lVar25); + *(uint *)(lVar23 + 4) = (uint)bVar11; + bVar11 = *(byte *)((long)param_1 + lVar25 + 3); + *(uint *)(lVar23 + 8) = (uint)*(byte *)((long)param_1 + lVar25 + 2); + *(uint *)(lVar23 + 0xc) = (uint)bVar11; + } + } + } + } +LAB_00274e74: + if (iVar13 < iVar10) { + lVar23 = (long)iVar13; + uVar29 = iVar10 - iVar13; + pbVar22 = (byte *)((long)param_1 + lVar23); + puVar8 = (uint *)(param_5 + lVar23 * 4); + if ((pbVar22 < (byte *)(param_5 + (lVar23 + (ulong)uVar29) * 4) && + puVar8 < (uint *)((long)param_1 + lVar23 + (ulong)uVar29)) || (uVar29 < 0x15)) { + lVar23 = 0; + do { + puVar8[lVar23] = (uint)pbVar22[lVar23]; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar10 + -1) - iVar13) + 1); + } + else { + uVar9 = -((uint)((ulong)puVar8 >> 2) & 3) & 3; + if (uVar29 < uVar9) { + uVar9 = uVar29; + } + iVar20 = iVar13; + if (uVar9 != 0) { + *puVar8 = (uint)*pbVar22; + iVar20 = iVar13 + 1; + if (uVar9 != 1) { + lVar25 = (long)iVar20; + iVar20 = iVar13 + 2; + *(uint *)(param_5 + lVar25 * 4) = (uint)*(byte *)((long)param_1 + lVar25); + if (uVar9 == 3) { + lVar25 = (long)iVar20; + iVar20 = iVar13 + 3; + *(uint *)(param_5 + lVar25 * 4) = (uint)*(byte *)((long)param_1 + lVar25); + } + } + } + uVar4 = ((uVar29 - uVar9) - 0x10 >> 4) + 1; + uVar28 = 0; + iVar13 = uVar4 * 0x10; + puVar21 = (ulong *)(param_5 + lVar23 * 4 + (ulong)uVar9 * 4); + puVar24 = (undefined8 *)((long)param_1 + lVar23 + (ulong)uVar9); + do { + uVar34 = puVar24[1]; + uVar33 = *puVar24; + uVar28 = uVar28 + 1; + uVar30 = (undefined1)((ulong)uVar33 >> 8); + uVar31 = (undefined1)((ulong)uVar33 >> 0x28); + uVar18 = CONCAT12((char)((ulong)uVar34 >> 8),(short)uVar34) & 0xff00ff; + uVar32 = (undefined1)((ulong)uVar34 >> 0x28); + puVar21[1] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x18), + (uint)(byte)((ulong)uVar33 >> 0x10)); + *puVar21 = (ulong)((uint6)CONCAT14(uVar30,(uint)CONCAT12(uVar30,(ushort)(byte)uVar33)) & + 0xffff0000ffff); + puVar21[3] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x38), + (uint)(byte)((ulong)uVar33 >> 0x30)); + puVar21[2] = (ulong)((uint6)CONCAT14(uVar31,(uint)CONCAT12(uVar31,(ushort)(byte)((ulong) + uVar33 >> 0x20))) & 0xffff0000ffff); + puVar21[5] = (ulong)CONCAT14((char)((ulong)uVar34 >> 0x18), + (uint)(byte)((ulong)uVar34 >> 0x10)); + puVar21[4] = (ulong)((uint6)CONCAT14((char)(uVar18 >> 0x10),(uint)uVar18) & + 0xffff0000ffff); + puVar21[7] = (ulong)CONCAT14((char)((ulong)uVar34 >> 0x38), + (uint)(byte)((ulong)uVar34 >> 0x30)); + puVar21[6] = (ulong)((uint6)CONCAT14(uVar32,(uint)CONCAT12(uVar32,(ushort)(byte)((ulong) + uVar34 >> 0x20))) & 0xffff0000ffff); + puVar21 = puVar21 + 8; + puVar24 = puVar24 + 2; + } while (uVar28 < uVar4); + iVar20 = iVar20 + iVar13; + if (uVar29 - uVar9 != iVar13) { + iVar13 = iVar20 + 1; + *(uint *)(param_5 + (long)iVar20 * 4) = (uint)*(byte *)((long)param_1 + (long)iVar20); + if (iVar13 < iVar10) { + iVar5 = iVar20 + 2; + *(uint *)(param_5 + (long)iVar13 * 4) = (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar20 + 3; + *(uint *)(param_5 + (long)iVar5 * 4) = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar20 + 4; + *(uint *)(param_5 + (long)iVar13 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar20 + 5; + *(uint *)(param_5 + (long)iVar5 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar20 + 6; + *(uint *)(param_5 + (long)iVar13 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar20 + 7; + *(uint *)(param_5 + (long)iVar5 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar20 + 8; + *(uint *)(param_5 + (long)iVar13 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar20 + 9; + *(uint *)(param_5 + (long)iVar5 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar20 + 10; + *(uint *)(param_5 + (long)iVar13 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar20 + 0xb; + *(uint *)(param_5 + (long)iVar5 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar5 = iVar20 + 0xc; + *(uint *)(param_5 + (long)iVar13 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar10) { + iVar13 = iVar20 + 0xd; + *(uint *)(param_5 + (long)iVar5 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar10) { + iVar20 = iVar20 + 0xe; + *(uint *)(param_5 + (long)iVar13 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar13); + if (iVar20 < iVar10) { + *(uint *)(param_5 + (long)iVar20 * 4) = + (uint)*(byte *)((long)param_1 + (long)iVar20); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar26 = iVar26 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar26 != 0); + } + return; +} + + +================================================================== + +### FUNC 00275198 (1552 bytes) name=FUN_00275198 + +void FUN_00275198(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + uint uVar8; + int iVar9; + byte bVar10; + int iVar11; + int iVar12; + uint uVar13; + uint uVar14; + int iVar15; + uint uVar16; + int iVar17; + float *pfVar18; + undefined8 *puVar19; + undefined8 *puVar20; + byte *pbVar21; + long lVar22; + long lVar23; + int iVar24; + long lVar25; + uint uVar26; + uint uVar27; + undefined1 uVar28; + undefined8 uVar29; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + + iVar24 = param_7[1]; + iVar9 = *param_7; + if (iVar24 != 0) { + uVar13 = iVar9 - 8U >> 3; + iVar11 = (uVar13 + 1) * 8; + if (iVar9 + -7 < 1) { + iVar11 = 0; + } + uVar16 = (iVar9 + -4) - iVar11; + lVar25 = (long)iVar11; + uVar14 = uVar16 >> 2; + uVar2 = uVar14 + 1; + uVar3 = (uVar14 - 3 >> 2) + 1; + iVar7 = iVar11 + 4 + uVar14 * 4; + lVar1 = lVar25 + (ulong)uVar2 * 4; + iVar15 = iVar9 + -3; + do { + if (0 < iVar9 + -7) { + puVar19 = (undefined8 *)(param_5 + 0x10); + puVar20 = param_1; + do { + uVar29 = *puVar20; + uVar28 = (undefined1)((ulong)uVar29 >> 8); + auVar31._6_2_ = 0; + auVar31._0_6_ = + (uint6)CONCAT14(uVar28,(uint)CONCAT12(uVar28,(ushort)(byte)uVar29)) & 0xffff0000ffff; + auVar31[8] = (char)((ulong)uVar29 >> 0x10); + auVar31._9_3_ = 0; + auVar31[0xc] = (char)((ulong)uVar29 >> 0x18); + auVar31._13_3_ = 0; + auVar31 = NEON_ucvtf(auVar31,4); + auVar30._1_3_ = 0; + auVar30[0] = (byte)((ulong)uVar29 >> 0x20); + auVar30[4] = (char)((ulong)uVar29 >> 0x28); + auVar30._5_3_ = 0; + auVar30[8] = (char)((ulong)uVar29 >> 0x30); + auVar30._9_3_ = 0; + auVar30[0xc] = (char)((ulong)uVar29 >> 0x38); + auVar30._13_3_ = 0; + auVar30 = NEON_ucvtf(auVar30,4); + puVar19[-1] = auVar31._8_8_; + puVar19[-2] = auVar31._0_8_; + puVar19[1] = auVar30._8_8_; + *puVar19 = auVar30._0_8_; + puVar19 = puVar19 + 4; + puVar20 = puVar20 + 1; + } while (puVar19 != (undefined8 *)(param_5 + (ulong)uVar13 * 0x20 + 0x30)); + } + iVar12 = iVar11; + if (iVar11 < iVar15) { + pfVar18 = (float *)(param_5 + lVar25 * 4); + pbVar21 = (byte *)((long)param_1 + lVar25); + iVar12 = iVar7; + if ((pfVar18 < (float *)((long)param_1 + lVar1) && pbVar21 < (byte *)(param_5 + lVar1 * 4)) + || (uVar2 < 5)) { + do { + pbVar6 = pbVar21 + 4; + bVar10 = *pbVar21; + pfVar18[1] = (float)pbVar21[1]; + *pfVar18 = (float)bVar10; + bVar10 = pbVar21[2]; + pfVar18[3] = (float)pbVar21[3]; + pfVar18[2] = (float)bVar10; + pfVar18 = pfVar18 + 4; + pbVar21 = pbVar6; + } while (pbVar6 != (byte *)((long)param_1 + lVar25 + 4 + (ulong)uVar14 * 4)); + } + else { + iVar17 = iVar11; + if (0xb < uVar16) { + uVar27 = 0; + do { + uVar27 = uVar27 + 1; + auVar36._6_2_ = 0; + auVar36._0_6_ = + (uint6)CONCAT14(pbVar21[1],(uint)CONCAT12(pbVar21[1],(ushort)*pbVar21)) & + 0xffff0000ffff; + auVar36[8] = pbVar21[2]; + auVar36._9_3_ = 0; + auVar36[0xc] = pbVar21[3]; + auVar36._13_3_ = 0; + auVar34._1_3_ = 0; + auVar34[0] = pbVar21[4]; + auVar34[4] = pbVar21[5]; + auVar34._5_3_ = 0; + auVar34[8] = pbVar21[6]; + auVar34._9_3_ = 0; + auVar34[0xc] = pbVar21[7]; + auVar34._13_3_ = 0; + auVar33._6_2_ = 0; + auVar33._0_6_ = + (uint6)CONCAT14(pbVar21[9],(uint)CONCAT12(pbVar21[9],(ushort)pbVar21[8])) & + 0xffff0000ffff; + auVar33[8] = pbVar21[10]; + auVar33._9_3_ = 0; + auVar33[0xc] = pbVar21[0xb]; + auVar33._13_3_ = 0; + auVar38._1_3_ = 0; + auVar38[0] = pbVar21[0xc]; + auVar38[4] = pbVar21[0xd]; + auVar38._5_3_ = 0; + auVar38[8] = pbVar21[0xe]; + auVar38._9_3_ = 0; + auVar38[0xc] = pbVar21[0xf]; + auVar38._13_3_ = 0; + auVar36 = NEON_scvtf(auVar36,4); + auVar31 = NEON_scvtf(auVar34,4); + auVar34 = NEON_scvtf(auVar33,4); + auVar30 = NEON_scvtf(auVar38,4); + *(long *)(pfVar18 + 2) = auVar36._8_8_; + *(long *)pfVar18 = auVar36._0_8_; + *(long *)(pfVar18 + 6) = auVar31._8_8_; + *(long *)(pfVar18 + 4) = auVar31._0_8_; + *(long *)(pfVar18 + 10) = auVar34._8_8_; + *(long *)(pfVar18 + 8) = auVar34._0_8_; + *(long *)(pfVar18 + 0xe) = auVar30._8_8_; + *(long *)(pfVar18 + 0xc) = auVar30._0_8_; + pfVar18 = pfVar18 + 0x10; + pbVar21 = pbVar21 + 0x10; + } while (uVar27 < uVar3); + iVar17 = iVar11 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00275418; + } + lVar22 = (long)iVar17; + bVar10 = *(byte *)((long)param_1 + lVar22 + 1); + lVar23 = param_5 + lVar22 * 4; + *(float *)(param_5 + lVar22 * 4) = (float)*(byte *)((long)param_1 + lVar22); + *(float *)(lVar23 + 4) = (float)bVar10; + bVar10 = *(byte *)((long)param_1 + lVar22 + 2); + *(float *)(lVar23 + 0xc) = (float)*(byte *)((long)param_1 + lVar22 + 3); + *(float *)(lVar23 + 8) = (float)bVar10; + if (iVar17 + 4 < iVar15) { + lVar22 = (long)(iVar17 + 4); + bVar10 = *(byte *)((long)param_1 + lVar22 + 1); + lVar23 = param_5 + lVar22 * 4; + *(float *)(param_5 + lVar22 * 4) = (float)*(byte *)((long)param_1 + lVar22); + *(float *)(lVar23 + 4) = (float)bVar10; + bVar10 = *(byte *)((long)param_1 + lVar22 + 2); + *(float *)(lVar23 + 0xc) = (float)*(byte *)((long)param_1 + lVar22 + 3); + *(float *)(lVar23 + 8) = (float)bVar10; + if (iVar17 + 8 < iVar15) { + lVar22 = (long)(iVar17 + 8); + bVar10 = *(byte *)((long)param_1 + lVar22 + 1); + lVar23 = param_5 + lVar22 * 4; + *(float *)(param_5 + lVar22 * 4) = (float)*(byte *)((long)param_1 + lVar22); + *(float *)(lVar23 + 4) = (float)bVar10; + bVar10 = *(byte *)((long)param_1 + lVar22 + 2); + *(float *)(lVar23 + 0xc) = (float)*(byte *)((long)param_1 + lVar22 + 3); + *(float *)(lVar23 + 8) = (float)bVar10; + } + } + } + } +LAB_00275418: + if (iVar12 < iVar9) { + lVar23 = (long)iVar12; + uVar27 = iVar9 - iVar12; + pbVar21 = (byte *)((long)param_1 + lVar23); + pfVar18 = (float *)(param_5 + lVar23 * 4); + if ((pbVar21 < (byte *)(param_5 + (lVar23 + (ulong)uVar27) * 4) && + pfVar18 < (float *)((long)param_1 + lVar23 + (ulong)uVar27)) || (uVar27 < 0x15)) { + lVar23 = 0; + do { + pfVar18[lVar23] = (float)pbVar21[lVar23]; + lVar23 = lVar23 + 1; + } while (lVar23 != (ulong)(uint)((iVar9 + -1) - iVar12) + 1); + } + else { + uVar8 = -((uint)((ulong)pfVar18 >> 2) & 3) & 3; + if (uVar27 < uVar8) { + uVar8 = uVar27; + } + iVar17 = iVar12; + if (uVar8 != 0) { + iVar17 = iVar12 + 1; + *pfVar18 = (float)*pbVar21; + if (uVar8 != 1) { + lVar22 = (long)iVar17; + iVar17 = iVar12 + 2; + *(float *)(param_5 + lVar22 * 4) = (float)*(byte *)((long)param_1 + lVar22); + if (uVar8 == 3) { + lVar22 = (long)iVar17; + iVar17 = iVar12 + 3; + *(float *)(param_5 + lVar22 * 4) = (float)*(byte *)((long)param_1 + lVar22); + } + } + } + uVar4 = ((uVar27 - uVar8) - 0x10 >> 4) + 1; + uVar26 = 0; + iVar12 = uVar4 * 0x10; + puVar19 = (undefined8 *)(param_5 + lVar23 * 4 + (ulong)uVar8 * 4); + pbVar21 = (byte *)((long)param_1 + lVar23 + (ulong)uVar8); + do { + uVar26 = uVar26 + 1; + auVar39._6_2_ = 0; + auVar39._0_6_ = + (uint6)CONCAT14(pbVar21[1],(uint)CONCAT12(pbVar21[1],(ushort)*pbVar21)) & + 0xffff0000ffff; + auVar39[8] = pbVar21[2]; + auVar39._9_3_ = 0; + auVar39[0xc] = pbVar21[3]; + auVar39._13_3_ = 0; + auVar35._1_3_ = 0; + auVar35[0] = pbVar21[4]; + auVar35[4] = pbVar21[5]; + auVar35._5_3_ = 0; + auVar35[8] = pbVar21[6]; + auVar35._9_3_ = 0; + auVar35[0xc] = pbVar21[7]; + auVar35._13_3_ = 0; + auVar37._6_2_ = 0; + auVar37._0_6_ = + (uint6)CONCAT14(pbVar21[9],(uint)CONCAT12(pbVar21[9],(ushort)pbVar21[8])) & + 0xffff0000ffff; + auVar37[8] = pbVar21[10]; + auVar37._9_3_ = 0; + auVar37[0xc] = pbVar21[0xb]; + auVar37._13_3_ = 0; + auVar32._1_3_ = 0; + auVar32[0] = pbVar21[0xc]; + auVar32[4] = pbVar21[0xd]; + auVar32._5_3_ = 0; + auVar32[8] = pbVar21[0xe]; + auVar32._9_3_ = 0; + auVar32[0xc] = pbVar21[0xf]; + auVar32._13_3_ = 0; + auVar34 = NEON_scvtf(auVar39,4); + auVar31 = NEON_scvtf(auVar35,4); + auVar38 = NEON_scvtf(auVar37,4); + auVar30 = NEON_scvtf(auVar32,4); + puVar19[1] = auVar34._8_8_; + *puVar19 = auVar34._0_8_; + puVar19[3] = auVar31._8_8_; + puVar19[2] = auVar31._0_8_; + puVar19[5] = auVar38._8_8_; + puVar19[4] = auVar38._0_8_; + puVar19[7] = auVar30._8_8_; + puVar19[6] = auVar30._0_8_; + puVar19 = puVar19 + 8; + pbVar21 = pbVar21 + 0x10; + } while (uVar26 < uVar4); + iVar17 = iVar17 + iVar12; + if (uVar27 - uVar8 != iVar12) { + iVar12 = iVar17 + 1; + *(float *)(param_5 + (long)iVar17 * 4) = (float)*(byte *)((long)param_1 + (long)iVar17); + if (iVar12 < iVar9) { + iVar5 = iVar17 + 2; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar5 < iVar9) { + iVar12 = iVar17 + 3; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar12 < iVar9) { + iVar5 = iVar17 + 4; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar5 < iVar9) { + iVar12 = iVar17 + 5; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar12 < iVar9) { + iVar5 = iVar17 + 6; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar5 < iVar9) { + iVar12 = iVar17 + 7; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar12 < iVar9) { + iVar5 = iVar17 + 8; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar5 < iVar9) { + iVar12 = iVar17 + 9; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar12 < iVar9) { + iVar5 = iVar17 + 10; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar5 < iVar9) { + iVar12 = iVar17 + 0xb; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar12 < iVar9) { + iVar5 = iVar17 + 0xc; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar5 < iVar9) { + iVar12 = iVar17 + 0xd; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar12 < iVar9) { + iVar17 = iVar17 + 0xe; + *(float *)(param_5 + (long)iVar12 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar12); + if (iVar17 < iVar9) { + *(float *)(param_5 + (long)iVar17 * 4) = + (float)*(byte *)((long)param_1 + (long)iVar17); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar24 = iVar24 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 002757a8 (1832 bytes) name=FUN_002757a8 + +/* WARNING: Removing unreachable block (ram,0x00275e64) */ +/* WARNING: Removing unreachable block (ram,0x00275e78) */ +/* WARNING: Removing unreachable block (ram,0x00275e80) */ + +void FUN_002757a8(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + short *psVar8; + uint uVar9; + int iVar10; + char cVar11; + char cVar12; + byte bVar13; + int iVar14; + int iVar15; + uint uVar16; + uint uVar17; + int iVar18; + uint uVar19; + int iVar20; + undefined8 *puVar21; + undefined8 *puVar22; + byte *pbVar23; + undefined8 *puVar24; + ushort *puVar25; + short sVar26; + long lVar27; + short sVar28; + ushort uVar29; + uint uVar30; + int iVar31; + long lVar32; + uint uVar33; + long lVar34; + char *pcVar35; + undefined8 uVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined8 uVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + + iVar31 = param_7[1]; + iVar10 = *param_7; + if (iVar31 != 0) { + uVar16 = iVar10 - 8U >> 3; + iVar14 = (uVar16 + 1) * 8; + if (iVar10 + -7 < 1) { + iVar14 = 0; + } + uVar19 = (iVar10 + -4) - iVar14; + uVar17 = uVar19 >> 2; + lVar32 = (long)iVar14; + uVar2 = uVar17 + 1; + uVar3 = (uVar17 - 3 >> 2) + 1; + lVar1 = lVar32 + (ulong)uVar2 * 4; + iVar18 = iVar10 + -3; + iVar7 = iVar14 + 4 + uVar17 * 4; + do { + if (0 < iVar10 + -7) { + puVar21 = param_5; + puVar24 = param_1; + do { + uVar36 = *puVar24; + auVar41._0_8_ = CONCAT44((int)(short)(char)((ulong)uVar36 >> 8),(int)(short)(char)uVar36); + auVar41._8_4_ = (int)(short)(char)((ulong)uVar36 >> 0x10); + auVar41._12_4_ = (int)(short)(char)((ulong)uVar36 >> 0x18); + uVar40 = NEON_sqxtun(auVar41._0_8_,auVar41,4); + auVar37._0_8_ = + CONCAT44((int)(short)(char)((ulong)uVar36 >> 0x28), + (int)(short)(char)((ulong)uVar36 >> 0x20)); + auVar37._8_4_ = (int)(short)(char)((ulong)uVar36 >> 0x30); + auVar37._12_4_ = (int)(short)(char)((ulong)uVar36 >> 0x38); + uVar36 = NEON_sqxtun(auVar37._0_8_,auVar37,4); + puVar22 = puVar21 + 2; + puVar21[1] = uVar36; + *puVar21 = uVar40; + puVar21 = puVar22; + puVar24 = puVar24 + 1; + } while (puVar22 != param_5 + ((ulong)uVar16 + 1) * 2); + } + iVar15 = iVar14; + if (iVar14 < iVar18) { + puVar25 = (ushort *)((long)param_5 + lVar32 * 2); + pbVar23 = (byte *)((long)param_1 + lVar32); + iVar15 = iVar7; + if ((puVar25 < (ushort *)((long)param_1 + lVar1) && + pbVar23 < (byte *)((long)param_5 + lVar1 * 2)) || (uVar2 < 4)) { + do { + pbVar6 = pbVar23 + 4; + bVar13 = *pbVar23; + uVar29 = (ushort)(char)pbVar23[1]; + if ((char)pbVar23[1] < '\0') { + uVar29 = 0; + } + puVar25[1] = uVar29; + *puVar25 = (ushort)bVar13; + bVar13 = pbVar23[2]; + puVar25[3] = (ushort)pbVar23[3]; + puVar25[2] = (ushort)bVar13; + pbVar23 = pbVar6; + puVar25 = puVar25 + 4; + } while (pbVar6 != (byte *)((long)param_1 + lVar32 + 4 + (ulong)uVar17 * 4)); + } + else { + iVar20 = iVar14; + if (0xb < uVar19) { + uVar30 = 0; + do { + uVar30 = uVar30 + 1; + auVar45._0_4_ = (int)(short)(char)*pbVar23; + auVar45._4_4_ = (int)(short)(char)pbVar23[1]; + auVar45._8_4_ = (int)(short)(char)pbVar23[2]; + auVar45._12_4_ = (int)(short)(char)pbVar23[3]; + auVar44._0_4_ = (int)(short)(char)pbVar23[4]; + auVar44._4_4_ = (int)(short)(char)pbVar23[5]; + auVar44._8_4_ = (int)(short)(char)pbVar23[6]; + auVar44._12_4_ = (int)(short)(char)pbVar23[7]; + auVar43._0_4_ = (int)(short)(char)pbVar23[8]; + auVar43._4_4_ = (int)(short)(char)pbVar23[9]; + auVar43._8_4_ = (int)(short)(char)pbVar23[10]; + auVar43._12_4_ = (int)(short)(char)pbVar23[0xb]; + auVar49._0_4_ = (int)(short)(char)pbVar23[0xc]; + auVar49._4_4_ = (int)(short)(char)pbVar23[0xd]; + auVar49._8_4_ = (int)(short)(char)pbVar23[0xe]; + auVar49._12_4_ = (int)(short)(char)pbVar23[0xf]; + auVar46 = NEON_smax(auVar45,ZEXT816(0),4); + auVar41 = NEON_smax(auVar44,ZEXT816(0),4); + auVar44 = NEON_smax(auVar43,ZEXT816(0),4); + auVar37 = NEON_smax(auVar49,ZEXT816(0),4); + auVar47._0_8_ = + CONCAT26(auVar46._12_2_, + CONCAT24(auVar46._8_2_,CONCAT22(auVar46._4_2_,auVar46._0_2_))); + auVar47._8_2_ = auVar41._0_2_; + auVar47._10_2_ = auVar41._4_2_; + auVar47._12_2_ = auVar41._8_2_; + auVar47._14_2_ = auVar41._12_2_; + *(long *)(puVar25 + 4) = auVar47._8_8_; + *(undefined8 *)puVar25 = auVar47._0_8_; + auVar46._0_8_ = + CONCAT26(auVar44._12_2_, + CONCAT24(auVar44._8_2_,CONCAT22(auVar44._4_2_,auVar44._0_2_))); + auVar46._8_2_ = auVar37._0_2_; + auVar46._10_2_ = auVar37._4_2_; + auVar46._12_2_ = auVar37._8_2_; + auVar46._14_2_ = auVar37._12_2_; + *(long *)(puVar25 + 0xc) = auVar46._8_8_; + *(undefined8 *)(puVar25 + 8) = auVar46._0_8_; + pbVar23 = pbVar23 + 0x10; + puVar25 = puVar25 + 0x10; + } while (uVar30 < uVar3); + iVar20 = iVar14 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00275a50; + } + lVar27 = (long)iVar20; + lVar34 = lVar27 * 2; + cVar11 = *(char *)((long)param_1 + lVar27 + 1); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + sVar28 = (short)*(char *)((long)param_1 + lVar27); + if (*(char *)((long)param_1 + lVar27) < '\0') { + sVar28 = 0; + } + *(short *)((long)param_5 + lVar34) = sVar28; + *(short *)((long)param_5 + lVar34 + 2) = sVar26; + cVar11 = *(char *)((long)param_1 + lVar27 + 3); + cVar12 = *(char *)((long)param_1 + lVar27 + 2); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + sVar28 = (short)cVar12; + if (cVar12 < '\0') { + sVar28 = 0; + } + *(short *)((long)param_5 + lVar34 + 6) = sVar26; + *(short *)((long)param_5 + lVar34 + 4) = sVar28; + if (iVar20 + 4 < iVar18) { + lVar27 = (long)(iVar20 + 4); + lVar34 = lVar27 * 2; + cVar11 = *(char *)((long)param_1 + lVar27 + 1); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + sVar28 = (short)*(char *)((long)param_1 + lVar27); + if (*(char *)((long)param_1 + lVar27) < '\0') { + sVar28 = 0; + } + *(short *)((long)param_5 + lVar34) = sVar28; + *(short *)((long)param_5 + lVar34 + 2) = sVar26; + cVar11 = *(char *)((long)param_1 + lVar27 + 3); + cVar12 = *(char *)((long)param_1 + lVar27 + 2); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + sVar28 = (short)cVar12; + if (cVar12 < '\0') { + sVar28 = 0; + } + *(short *)((long)param_5 + lVar34 + 6) = sVar26; + *(short *)((long)param_5 + lVar34 + 4) = sVar28; + if (iVar20 + 8 < iVar18) { + lVar27 = (long)(iVar20 + 8); + lVar34 = lVar27 * 2; + cVar11 = *(char *)((long)param_1 + lVar27 + 1); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + sVar28 = (short)*(char *)((long)param_1 + lVar27); + if (*(char *)((long)param_1 + lVar27) < '\0') { + sVar28 = 0; + } + *(short *)((long)param_5 + lVar34) = sVar28; + *(short *)((long)param_5 + lVar34 + 2) = sVar26; + cVar11 = *(char *)((long)param_1 + lVar27 + 3); + cVar12 = *(char *)((long)param_1 + lVar27 + 2); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + sVar28 = (short)cVar12; + if (cVar12 < '\0') { + sVar28 = 0; + } + *(short *)((long)param_5 + lVar34 + 6) = sVar26; + *(short *)((long)param_5 + lVar34 + 4) = sVar28; + } + } + } + } +LAB_00275a50: + if (iVar15 < iVar10) { + lVar27 = (long)iVar15; + uVar30 = iVar10 - iVar15; + pcVar35 = (char *)((long)param_1 + lVar27); + psVar8 = (short *)((long)param_5 + lVar27 * 2); + if ((pcVar35 < (char *)((long)param_5 + (lVar27 + (ulong)uVar30) * 2) && + psVar8 < (short *)((long)param_1 + lVar27 + (ulong)uVar30)) || (uVar30 < 0x13)) { + lVar27 = 0; + do { + sVar26 = (short)pcVar35[lVar27]; + if (pcVar35[lVar27] < '\0') { + sVar26 = 0; + } + psVar8[lVar27] = sVar26; + lVar27 = lVar27 + 1; + } while (lVar27 != (ulong)(uint)((iVar10 + -1) - iVar15) + 1); + } + else { + uVar9 = -((uint)((ulong)psVar8 >> 1) & 7) & 7; + if (uVar30 < uVar9) { + uVar9 = uVar30; + } + iVar20 = iVar15; + if (uVar9 != 0) { + iVar20 = iVar15 + 1; + sVar26 = (short)*pcVar35; + if (*pcVar35 < '\0') { + sVar26 = 0; + } + *psVar8 = sVar26; + if (uVar9 != 1) { + lVar34 = (long)iVar20; + iVar20 = iVar15 + 2; + cVar11 = *(char *)((long)param_1 + lVar34); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + lVar34 * 2) = sVar26; + if (uVar9 != 2) { + lVar34 = (long)iVar20; + iVar20 = iVar15 + 3; + cVar11 = *(char *)((long)param_1 + lVar34); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + lVar34 * 2) = sVar26; + if (uVar9 != 3) { + lVar34 = (long)iVar20; + iVar20 = iVar15 + 4; + cVar11 = *(char *)((long)param_1 + lVar34); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + lVar34 * 2) = sVar26; + if (uVar9 != 4) { + lVar34 = (long)iVar20; + iVar20 = iVar15 + 5; + cVar11 = *(char *)((long)param_1 + lVar34); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + lVar34 * 2) = sVar26; + if (uVar9 != 5) { + lVar34 = (long)iVar20; + iVar20 = iVar15 + 6; + cVar11 = *(char *)((long)param_1 + lVar34); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + lVar34 * 2) = sVar26; + if (uVar9 == 7) { + lVar34 = (long)iVar20; + iVar20 = iVar15 + 7; + cVar11 = *(char *)((long)param_1 + lVar34); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + lVar34 * 2) = sVar26; + } + } + } + } + } + } + } + uVar4 = ((uVar30 - uVar9) - 0x10 >> 4) + 1; + iVar15 = uVar4 * 0x10; + if (0xe < (uVar30 - 1) - uVar9) { + uVar33 = 0; + puVar21 = (undefined8 *)((long)param_5 + lVar27 * 2 + (ulong)uVar9 * 2); + pcVar35 = (char *)((long)param_1 + lVar27 + (ulong)uVar9); + do { + uVar33 = uVar33 + 1; + auVar50._0_4_ = (int)(short)*pcVar35; + auVar50._4_4_ = (int)(short)pcVar35[1]; + auVar50._8_4_ = (int)(short)pcVar35[2]; + auVar50._12_4_ = (int)(short)pcVar35[3]; + auVar38._0_4_ = (int)(short)pcVar35[4]; + auVar38._4_4_ = (int)(short)pcVar35[5]; + auVar38._8_4_ = (int)(short)pcVar35[6]; + auVar38._12_4_ = (int)(short)pcVar35[7]; + auVar48._0_4_ = (int)(short)pcVar35[8]; + auVar48._4_4_ = (int)(short)pcVar35[9]; + auVar48._8_4_ = (int)(short)pcVar35[10]; + auVar48._12_4_ = (int)(short)pcVar35[0xb]; + auVar42._0_4_ = (int)(short)pcVar35[0xc]; + auVar42._4_4_ = (int)(short)pcVar35[0xd]; + auVar42._8_4_ = (int)(short)pcVar35[0xe]; + auVar42._12_4_ = (int)(short)pcVar35[0xf]; + /* catch() { ... } // from try @ 00275c74 with catch @ 00275bec + catch() { ... } // from try @ 00275d18 with catch @ 00275bec + catch() { ... } // from try @ 00275d74 with catch @ 00275bec */ + auVar44 = NEON_smax(auVar50,ZEXT816(0),4); + auVar37 = NEON_smax(auVar38,ZEXT816(0),4); + auVar49 = NEON_smax(auVar48,ZEXT816(0),4); + auVar41 = NEON_smax(auVar42,ZEXT816(0),4); + puVar21[1] = CONCAT26(auVar37._12_2_, + CONCAT24(auVar37._8_2_,CONCAT22(auVar37._4_2_,auVar37._0_2_))); + *puVar21 = CONCAT26(auVar44._12_2_, + CONCAT24(auVar44._8_2_,CONCAT22(auVar44._4_2_,auVar44._0_2_))); + auVar39._0_8_ = + CONCAT26(auVar49._12_2_, + CONCAT24(auVar49._8_2_,CONCAT22(auVar49._4_2_,auVar49._0_2_))); + auVar39._8_2_ = auVar41._0_2_; + auVar39._10_2_ = auVar41._4_2_; + auVar39._12_2_ = auVar41._8_2_; + auVar39._14_2_ = auVar41._12_2_; + puVar21[3] = auVar39._8_8_; + puVar21[2] = auVar39._0_8_; + puVar21 = puVar21 + 4; + pcVar35 = pcVar35 + 0x10; + } while (uVar33 < uVar4); + iVar20 = iVar20 + iVar15; + if (uVar30 - uVar9 == iVar15) goto LAB_00275df8; + } + iVar15 = iVar20 + 1; + cVar11 = *(char *)((long)param_1 + (long)iVar20); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar20 * 2) = sVar26; + if (iVar15 < iVar10) { + iVar5 = iVar20 + 2; + cVar11 = *(char *)((long)param_1 + (long)iVar15); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar5 < iVar10) { + /* try { // try from 00275c68 to 00375c73 has its CatchHandler @ 00275de8 */ + iVar15 = iVar20 + 3; + cVar11 = *(char *)((long)param_1 + (long)iVar5); + sVar26 = (short)cVar11; + /* try { // try from 00275c74 to 00375cc3 has its CatchHandler @ 00275bec */ + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar5 * 2) = sVar26; + if (iVar15 < iVar10) { + iVar5 = iVar20 + 4; + cVar11 = *(char *)((long)param_1 + (long)iVar15); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar5 < iVar10) { + iVar15 = iVar20 + 5; + cVar11 = *(char *)((long)param_1 + (long)iVar5); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar5 * 2) = sVar26; + if (iVar15 < iVar10) { + /* try { // try from 00275cc4 to 00375ccf has its CatchHandler @ 00275dd0 */ + iVar5 = iVar20 + 6; + cVar11 = *(char *)((long)param_1 + (long)iVar15); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar5 < iVar10) { + iVar15 = iVar20 + 7; + cVar11 = *(char *)((long)param_1 + (long)iVar5); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar5 * 2) = sVar26; + if (iVar15 < iVar10) { + iVar5 = iVar20 + 8; + /* try { // try from 00275d0c to 00375d17 has its CatchHandler @ 00275dc4 */ + cVar11 = *(char *)((long)param_1 + (long)iVar15); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + /* try { // try from 00275d18 to 00375d67 has its CatchHandler @ 00275bec */ + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar5 < iVar10) { + iVar15 = iVar20 + 9; + cVar11 = *(char *)((long)param_1 + (long)iVar5); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar5 * 2) = sVar26; + if (iVar15 < iVar10) { + iVar5 = iVar20 + 10; + cVar11 = *(char *)((long)param_1 + (long)iVar15); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar5 < iVar10) { + /* try { // try from 00275d68 to 00375d73 has its CatchHandler @ 00275db4 */ + iVar15 = iVar20 + 0xb; + cVar11 = *(char *)((long)param_1 + (long)iVar5); + sVar26 = (short)cVar11; + /* try { // try from 00275d74 to 00375e2b has its CatchHandler @ 00275bec */ + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar5 * 2) = sVar26; + if (iVar15 < iVar10) { + iVar5 = iVar20 + 0xc; + cVar11 = *(char *)((long)param_1 + (long)iVar15); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar5 < iVar10) { + iVar15 = iVar20 + 0xd; + cVar11 = *(char *)((long)param_1 + (long)iVar5); + sVar26 = (short)cVar11; + /* catch() { ... } // from try @ 00275d68 with catch @ 00275db4 */ + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar5 * 2) = sVar26; + if (iVar15 < iVar10) { + /* catch() { ... } // from try @ 00275d0c with catch @ 00275dc4 */ + iVar20 = iVar20 + 0xe; + cVar11 = *(char *)((long)param_1 + (long)iVar15); + /* catch() { ... } // from try @ 00275cc4 with catch @ 00275dd0 */ + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar15 * 2) = sVar26; + if (iVar20 < iVar10) { + /* catch() { ... } // from try @ 00275c68 with catch @ 00275de8 */ + cVar11 = *(char *)((long)param_1 + (long)iVar20); + sVar26 = (short)cVar11; + if (cVar11 < '\0') { + sVar26 = 0; + } + *(short *)((long)param_5 + (long)iVar20 * 2) = sVar26; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00275df8: + iVar31 = iVar31 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar31 != 0); + } + return; +} + + +================================================================== + +### FUNC 00275ed0 (1372 bytes) name=FUN_00275ed0 + +void FUN_00275ed0(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + char *pcVar8; + int *piVar9; + uint uVar10; + int iVar11; + char cVar12; + byte bVar13; + int iVar14; + int iVar15; + uint uVar16; + uint uVar17; + int iVar18; + uint uVar19; + int iVar20; + uint *puVar21; + undefined8 *puVar22; + byte *pbVar23; + long lVar24; + undefined8 *puVar25; + long lVar26; + int iVar27; + long lVar28; + uint uVar29; + uint uVar30; + undefined8 uVar31; + undefined8 uVar32; + short sVar33; + short sVar34; + + iVar27 = param_7[1]; + iVar11 = *param_7; + if (iVar27 != 0) { + uVar16 = iVar11 - 8U >> 3; + /* try { // try from 00275f0c to 00375f17 has its CatchHandler @ 00276098 */ + iVar14 = (uVar16 + 1) * 8; + /* try { // try from 00275f18 to 00375f5b has its CatchHandler @ 00275e2c */ + if (iVar11 + -7 < 1) { + iVar14 = 0; + } + uVar19 = (iVar11 + -4) - iVar14; + lVar28 = (long)iVar14; + uVar17 = uVar19 >> 2; + uVar2 = uVar17 + 1; + uVar3 = (uVar17 - 3 >> 2) + 1; + iVar7 = iVar14 + 4 + uVar17 * 4; + /* try { // try from 00275f5c to 00375f6b has its CatchHandler @ 00276080 */ + lVar1 = lVar28 + (ulong)uVar2 * 4; + iVar18 = iVar11 + -3; + do { + if (0 < iVar11 + -7) { + puVar22 = (undefined8 *)(param_5 + 0x10); + puVar25 = param_1; + do { + /* try { // try from 00275f9c to 00375fa7 has its CatchHandler @ 0027606c */ + uVar31 = *puVar25; + /* try { // try from 00275fa8 to 00376003 has its CatchHandler @ 00275e2c */ + puVar22[-1] = CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x18), + (int)(short)(char)((ulong)uVar31 >> 0x10)); + puVar22[-2] = CONCAT44((int)(short)(char)((ulong)uVar31 >> 8),(int)(short)(char)uVar31); + puVar22[1] = CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x38), + (int)(short)(char)((ulong)uVar31 >> 0x30)); + *puVar22 = CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x28), + (int)(short)(char)((ulong)uVar31 >> 0x20)); + puVar22 = puVar22 + 4; + puVar25 = puVar25 + 1; + } while (puVar22 != (undefined8 *)(param_5 + (ulong)uVar16 * 0x20 + 0x30)); + } + iVar15 = iVar14; + if (iVar14 < iVar18) { + puVar21 = (uint *)(param_5 + lVar28 * 4); + pbVar23 = (byte *)((long)param_1 + lVar28); + iVar15 = iVar7; + if ((puVar21 < (uint *)((long)param_1 + lVar1) && pbVar23 < (byte *)(param_5 + lVar1 * 4)) + || (uVar2 < 5)) { + do { + bVar13 = pbVar23[1]; + pbVar6 = pbVar23 + 4; + *puVar21 = (uint)*pbVar23; + puVar21[1] = (int)(char)bVar13; + bVar13 = pbVar23[3]; + puVar21[2] = (uint)pbVar23[2]; + puVar21[3] = (uint)bVar13; + puVar21 = puVar21 + 4; + pbVar23 = pbVar6; + } while (pbVar6 != (byte *)((long)param_1 + lVar28 + 4 + (ulong)uVar17 * 4)); + } + else { + iVar20 = iVar14; + if (0xb < uVar19) { + /* try { // try from 00276004 to 0037600f has its CatchHandler @ 00276050 */ + uVar30 = 0; + do { + uVar32 = *(undefined8 *)(pbVar23 + 8); + uVar31 = *(undefined8 *)pbVar23; + /* try { // try from 00276010 to 003760df has its CatchHandler @ 00275e2c */ + uVar30 = uVar30 + 1; + *(ulong *)(puVar21 + 2) = + CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x18), + (int)(short)(char)((ulong)uVar31 >> 0x10)); + *(ulong *)puVar21 = + CONCAT44((int)(short)(char)((ulong)uVar31 >> 8),(int)(short)(char)uVar31); + *(ulong *)(puVar21 + 6) = + CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x38), + (int)(short)(char)((ulong)uVar31 >> 0x30)); + *(ulong *)(puVar21 + 4) = + CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x28), + (int)(short)(char)((ulong)uVar31 >> 0x20)); + *(ulong *)(puVar21 + 10) = + CONCAT44((int)(short)(char)((ulong)uVar32 >> 0x18), + (int)(short)(char)((ulong)uVar32 >> 0x10)); + *(ulong *)(puVar21 + 8) = + CONCAT44((int)(short)(char)((ulong)uVar32 >> 8),(int)(short)(char)uVar32); + *(ulong *)(puVar21 + 0xe) = + CONCAT44((int)(short)(char)((ulong)uVar32 >> 0x38), + (int)(short)(char)((ulong)uVar32 >> 0x30)); + *(ulong *)(puVar21 + 0xc) = + CONCAT44((int)(short)(char)((ulong)uVar32 >> 0x28), + (int)(short)(char)((ulong)uVar32 >> 0x20)); + puVar21 = puVar21 + 0x10; + pbVar23 = pbVar23 + 0x10; + } while (uVar30 < uVar3); + /* catch() { ... } // from try @ 00276004 with catch @ 00276050 */ + iVar20 = iVar14 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00276108; + } + lVar26 = (long)iVar20; + /* catch() { ... } // from try @ 00275f9c with catch @ 0027606c */ + lVar24 = param_5 + lVar26 * 4; + cVar12 = *(char *)((long)param_1 + lVar26 + 1); + *(int *)(param_5 + lVar26 * 4) = (int)*(char *)((long)param_1 + lVar26); + /* catch() { ... } // from try @ 00275f5c with catch @ 00276080 */ + *(int *)(lVar24 + 4) = (int)cVar12; + cVar12 = *(char *)((long)param_1 + lVar26 + 3); + *(int *)(lVar24 + 8) = (int)*(char *)((long)param_1 + lVar26 + 2); + *(int *)(lVar24 + 0xc) = (int)cVar12; + if (iVar20 + 4 < iVar18) { + /* catch() { ... } // from try @ 00275f0c with catch @ 00276098 */ + lVar26 = (long)(iVar20 + 4); + lVar24 = param_5 + lVar26 * 4; + cVar12 = *(char *)((long)param_1 + lVar26 + 1); + *(int *)(param_5 + lVar26 * 4) = (int)*(char *)((long)param_1 + lVar26); + *(int *)(lVar24 + 4) = (int)cVar12; + cVar12 = *(char *)((long)param_1 + lVar26 + 3); + *(int *)(lVar24 + 8) = (int)*(char *)((long)param_1 + lVar26 + 2); + *(int *)(lVar24 + 0xc) = (int)cVar12; + if (iVar20 + 8 < iVar18) { + lVar26 = (long)(iVar20 + 8); + lVar24 = param_5 + lVar26 * 4; + cVar12 = *(char *)((long)param_1 + lVar26 + 1); + *(int *)(param_5 + lVar26 * 4) = (int)*(char *)((long)param_1 + lVar26); + *(int *)(lVar24 + 4) = (int)cVar12; + cVar12 = *(char *)((long)param_1 + lVar26 + 3); + *(int *)(lVar24 + 8) = (int)*(char *)((long)param_1 + lVar26 + 2); + *(int *)(lVar24 + 0xc) = (int)cVar12; + } + } + } + } +LAB_00276108: + if (iVar15 < iVar11) { + lVar24 = (long)iVar15; + uVar30 = iVar11 - iVar15; + pcVar8 = (char *)((long)param_1 + lVar24); + piVar9 = (int *)(param_5 + lVar24 * 4); + if ((pcVar8 < (char *)(param_5 + (lVar24 + (ulong)uVar30) * 4) && + piVar9 < (int *)((long)param_1 + lVar24 + (ulong)uVar30)) || (uVar30 < 0x15)) { + lVar24 = 0; + do { + piVar9[lVar24] = (int)pcVar8[lVar24]; + lVar24 = lVar24 + 1; + } while (lVar24 != (ulong)(uint)((iVar11 + -1) - iVar15) + 1); + } + else { + uVar10 = -((uint)((ulong)piVar9 >> 2) & 3) & 3; + if (uVar30 < uVar10) { + uVar10 = uVar30; + } + iVar20 = iVar15; + if (uVar10 != 0) { + *piVar9 = (int)*pcVar8; + iVar20 = iVar15 + 1; + if (uVar10 != 1) { + lVar26 = (long)iVar20; + iVar20 = iVar15 + 2; + *(int *)(param_5 + lVar26 * 4) = (int)*(char *)((long)param_1 + lVar26); + if (uVar10 == 3) { + lVar26 = (long)iVar20; + iVar20 = iVar15 + 3; + *(int *)(param_5 + lVar26 * 4) = (int)*(char *)((long)param_1 + lVar26); + } + } + } + uVar4 = ((uVar30 - uVar10) - 0x10 >> 4) + 1; + uVar29 = 0; + iVar15 = uVar4 * 0x10; + puVar22 = (undefined8 *)(param_5 + lVar24 * 4 + (ulong)uVar10 * 4); + puVar25 = (undefined8 *)((long)param_1 + lVar24 + (ulong)uVar10); + do { + uVar32 = puVar25[1]; + uVar31 = *puVar25; + uVar29 = uVar29 + 1; + sVar33 = (short)(char)((ulong)uVar31 >> 0x28); + sVar34 = (short)(char)((ulong)uVar31 >> 0x38); + puVar22[1] = CONCAT44((int)(short)(char)((ulong)uVar31 >> 0x18), + (int)(short)(char)((ulong)uVar31 >> 0x10)); + *puVar22 = CONCAT44((int)(short)(char)((ulong)uVar31 >> 8),(int)(short)(char)uVar31); + puVar22[3] = CONCAT26(sVar34 >> 0xf, + CONCAT24(sVar34,(int)(short)(char)((ulong)uVar31 >> 0x30))); + puVar22[2] = CONCAT26(sVar33 >> 0xf, + CONCAT24(sVar33,(int)(short)(char)((ulong)uVar31 >> 0x20))); + puVar22[5] = CONCAT44((int)(short)(char)((ulong)uVar32 >> 0x18), + (int)(short)(char)((ulong)uVar32 >> 0x10)); + puVar22[4] = CONCAT44((int)(short)(char)((ulong)uVar32 >> 8),(int)(short)(char)uVar32); + puVar22[7] = CONCAT44((int)(short)(char)((ulong)uVar32 >> 0x38), + (int)(short)(char)((ulong)uVar32 >> 0x30)); + puVar22[6] = CONCAT44((int)(short)(char)((ulong)uVar32 >> 0x28), + (int)(short)(char)((ulong)uVar32 >> 0x20)); + puVar22 = puVar22 + 8; + puVar25 = puVar25 + 2; + } while (uVar29 < uVar4); + iVar20 = iVar20 + iVar15; + if (uVar30 - uVar10 != iVar15) { + iVar15 = iVar20 + 1; + *(int *)(param_5 + (long)iVar20 * 4) = (int)*(char *)((long)param_1 + (long)iVar20); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 2; + *(int *)(param_5 + (long)iVar15 * 4) = (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 3; + *(int *)(param_5 + (long)iVar5 * 4) = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 4; + *(int *)(param_5 + (long)iVar15 * 4) = + (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 5; + *(int *)(param_5 + (long)iVar5 * 4) = + (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 6; + *(int *)(param_5 + (long)iVar15 * 4) = + (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 7; + *(int *)(param_5 + (long)iVar5 * 4) = + (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 8; + *(int *)(param_5 + (long)iVar15 * 4) = + (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 9; + *(int *)(param_5 + (long)iVar5 * 4) = + (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 10; + *(int *)(param_5 + (long)iVar15 * 4) = + (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 0xb; + *(int *)(param_5 + (long)iVar5 * 4) = + (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar5 = iVar20 + 0xc; + *(int *)(param_5 + (long)iVar15 * 4) = + (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar5 < iVar11) { + iVar15 = iVar20 + 0xd; + *(int *)(param_5 + (long)iVar5 * 4) = + (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar15 < iVar11) { + iVar20 = iVar20 + 0xe; + *(int *)(param_5 + (long)iVar15 * 4) = + (int)*(char *)((long)param_1 + (long)iVar15); + if (iVar20 < iVar11) { + *(int *)(param_5 + (long)iVar20 * 4) = + (int)*(char *)((long)param_1 + (long)iVar20); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar27 = iVar27 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar27 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027642c (1552 bytes) name=FUN_0027642c + +void FUN_0027642c(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + byte *pbVar6; + int iVar7; + uint uVar8; + int iVar9; + char cVar10; + byte bVar11; + int iVar12; + int iVar13; + uint uVar14; + uint uVar15; + int iVar16; + uint uVar17; + int iVar18; + float *pfVar19; + undefined8 *puVar20; + undefined8 *puVar21; + byte *pbVar22; + long lVar23; + long lVar24; + char *pcVar25; + int iVar26; + long lVar27; + uint uVar28; + uint uVar29; + undefined8 uVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + + iVar26 = param_7[1]; + iVar9 = *param_7; + if (iVar26 != 0) { + uVar14 = iVar9 - 8U >> 3; + iVar12 = (uVar14 + 1) * 8; + if (iVar9 + -7 < 1) { + iVar12 = 0; + } + uVar17 = (iVar9 + -4) - iVar12; + lVar27 = (long)iVar12; + uVar15 = uVar17 >> 2; + uVar2 = uVar15 + 1; + uVar3 = (uVar15 - 3 >> 2) + 1; + iVar7 = iVar12 + 4 + uVar15 * 4; + lVar1 = lVar27 + (ulong)uVar2 * 4; + iVar16 = iVar9 + -3; + do { + if (0 < iVar9 + -7) { + puVar20 = (undefined8 *)(param_5 + 0x10); + puVar21 = param_1; + do { + uVar30 = *puVar21; + auVar32._0_4_ = (int)(short)(char)uVar30; + auVar32._4_4_ = (int)(short)(char)((ulong)uVar30 >> 8); + auVar32._8_4_ = (int)(short)(char)((ulong)uVar30 >> 0x10); + auVar32._12_4_ = (int)(short)(char)((ulong)uVar30 >> 0x18); + auVar32 = NEON_scvtf(auVar32,4); + auVar31._0_4_ = (int)(short)(char)((ulong)uVar30 >> 0x20); + auVar31._4_4_ = (int)(short)(char)((ulong)uVar30 >> 0x28); + auVar31._8_4_ = (int)(short)(char)((ulong)uVar30 >> 0x30); + auVar31._12_4_ = (int)(short)(char)((ulong)uVar30 >> 0x38); + auVar31 = NEON_scvtf(auVar31,4); + puVar20[-1] = auVar32._8_8_; + puVar20[-2] = auVar32._0_8_; + puVar20[1] = auVar31._8_8_; + *puVar20 = auVar31._0_8_; + puVar20 = puVar20 + 4; + puVar21 = puVar21 + 1; + } while (puVar20 != (undefined8 *)(param_5 + (ulong)uVar14 * 0x20 + 0x30)); + } + iVar13 = iVar12; + if (iVar12 < iVar16) { + pfVar19 = (float *)(param_5 + lVar27 * 4); + pbVar22 = (byte *)((long)param_1 + lVar27); + iVar13 = iVar7; + if ((pfVar19 < (float *)((long)param_1 + lVar1) && pbVar22 < (byte *)(param_5 + lVar1 * 4)) + || (uVar2 < 5)) { + do { + pbVar6 = pbVar22 + 4; + bVar11 = *pbVar22; + pfVar19[1] = (float)(int)(char)pbVar22[1]; + *pfVar19 = (float)bVar11; + bVar11 = pbVar22[2]; + pfVar19[3] = (float)pbVar22[3]; + pfVar19[2] = (float)bVar11; + pfVar19 = pfVar19 + 4; + pbVar22 = pbVar6; + } while (pbVar6 != (byte *)((long)param_1 + lVar27 + 4 + (ulong)uVar15 * 4)); + } + else { + iVar18 = iVar12; + if (0xb < uVar17) { + uVar29 = 0; + do { + uVar29 = uVar29 + 1; + auVar37._0_4_ = (int)(short)(char)*pbVar22; + auVar37._4_4_ = (int)(short)(char)pbVar22[1]; + auVar37._8_4_ = (int)(short)(char)pbVar22[2]; + auVar37._12_4_ = (int)(short)(char)pbVar22[3]; + auVar35._0_4_ = (int)(short)(char)pbVar22[4]; + auVar35._4_4_ = (int)(short)(char)pbVar22[5]; + auVar35._8_4_ = (int)(short)(char)pbVar22[6]; + auVar35._12_4_ = (int)(short)(char)pbVar22[7]; + auVar34._0_4_ = (int)(short)(char)pbVar22[8]; + auVar34._4_4_ = (int)(short)(char)pbVar22[9]; + auVar34._8_4_ = (int)(short)(char)pbVar22[10]; + auVar34._12_4_ = (int)(short)(char)pbVar22[0xb]; + auVar39._0_4_ = (int)(short)(char)pbVar22[0xc]; + auVar39._4_4_ = (int)(short)(char)pbVar22[0xd]; + auVar39._8_4_ = (int)(short)(char)pbVar22[0xe]; + auVar39._12_4_ = (int)(short)(char)pbVar22[0xf]; + auVar37 = NEON_scvtf(auVar37,4); + auVar32 = NEON_scvtf(auVar35,4); + auVar35 = NEON_scvtf(auVar34,4); + auVar31 = NEON_scvtf(auVar39,4); + *(long *)(pfVar19 + 2) = auVar37._8_8_; + *(long *)pfVar19 = auVar37._0_8_; + *(long *)(pfVar19 + 6) = auVar32._8_8_; + *(long *)(pfVar19 + 4) = auVar32._0_8_; + *(long *)(pfVar19 + 10) = auVar35._8_8_; + *(long *)(pfVar19 + 8) = auVar35._0_8_; + *(long *)(pfVar19 + 0xe) = auVar31._8_8_; + *(long *)(pfVar19 + 0xc) = auVar31._0_8_; + pfVar19 = pfVar19 + 0x10; + pbVar22 = pbVar22 + 0x10; + } while (uVar29 < uVar3); + iVar18 = iVar12 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_002766ac; + } + lVar23 = (long)iVar18; + cVar10 = *(char *)((long)param_1 + lVar23 + 1); + lVar24 = param_5 + lVar23 * 4; + *(float *)(param_5 + lVar23 * 4) = (float)(int)*(char *)((long)param_1 + lVar23); + *(float *)(lVar24 + 4) = (float)(int)cVar10; + cVar10 = *(char *)((long)param_1 + lVar23 + 2); + *(float *)(lVar24 + 0xc) = (float)(int)*(char *)((long)param_1 + lVar23 + 3); + *(float *)(lVar24 + 8) = (float)(int)cVar10; + if (iVar18 + 4 < iVar16) { + lVar23 = (long)(iVar18 + 4); + cVar10 = *(char *)((long)param_1 + lVar23 + 1); + lVar24 = param_5 + lVar23 * 4; + *(float *)(param_5 + lVar23 * 4) = (float)(int)*(char *)((long)param_1 + lVar23); + *(float *)(lVar24 + 4) = (float)(int)cVar10; + cVar10 = *(char *)((long)param_1 + lVar23 + 2); + *(float *)(lVar24 + 0xc) = (float)(int)*(char *)((long)param_1 + lVar23 + 3); + *(float *)(lVar24 + 8) = (float)(int)cVar10; + if (iVar18 + 8 < iVar16) { + lVar23 = (long)(iVar18 + 8); + cVar10 = *(char *)((long)param_1 + lVar23 + 1); + lVar24 = param_5 + lVar23 * 4; + *(float *)(param_5 + lVar23 * 4) = (float)(int)*(char *)((long)param_1 + lVar23); + *(float *)(lVar24 + 4) = (float)(int)cVar10; + cVar10 = *(char *)((long)param_1 + lVar23 + 2); + *(float *)(lVar24 + 0xc) = (float)(int)*(char *)((long)param_1 + lVar23 + 3); + *(float *)(lVar24 + 8) = (float)(int)cVar10; + } + } + } + } +LAB_002766ac: + if (iVar13 < iVar9) { + lVar24 = (long)iVar13; + uVar29 = iVar9 - iVar13; + pcVar25 = (char *)((long)param_1 + lVar24); + pfVar19 = (float *)(param_5 + lVar24 * 4); + if ((pcVar25 < (char *)(param_5 + (lVar24 + (ulong)uVar29) * 4) && + pfVar19 < (float *)((long)param_1 + lVar24 + (ulong)uVar29)) || (uVar29 < 0x15)) { + lVar24 = 0; + do { + pfVar19[lVar24] = (float)(int)pcVar25[lVar24]; + lVar24 = lVar24 + 1; + } while (lVar24 != (ulong)(uint)((iVar9 + -1) - iVar13) + 1); + } + else { + uVar8 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + if (uVar29 < uVar8) { + uVar8 = uVar29; + } + iVar18 = iVar13; + if (uVar8 != 0) { + iVar18 = iVar13 + 1; + *pfVar19 = (float)(int)*pcVar25; + if (uVar8 != 1) { + lVar23 = (long)iVar18; + iVar18 = iVar13 + 2; + *(float *)(param_5 + lVar23 * 4) = (float)(int)*(char *)((long)param_1 + lVar23); + if (uVar8 == 3) { + lVar23 = (long)iVar18; + iVar18 = iVar13 + 3; + *(float *)(param_5 + lVar23 * 4) = (float)(int)*(char *)((long)param_1 + lVar23); + } + } + } + uVar4 = ((uVar29 - uVar8) - 0x10 >> 4) + 1; + uVar28 = 0; + iVar13 = uVar4 * 0x10; + puVar20 = (undefined8 *)(param_5 + lVar24 * 4 + (ulong)uVar8 * 4); + pcVar25 = (char *)((long)param_1 + lVar24 + (ulong)uVar8); + do { + /* try { // try from 00276780 to 00376827 has its CatchHandler @ 00276780 + catch() { ... } // from try @ 00276780 with catch @ 00276780 + catch() { ... } // from try @ 00276894 with catch @ 00276780 */ + uVar28 = uVar28 + 1; + auVar40._0_4_ = (int)(short)*pcVar25; + auVar40._4_4_ = (int)(short)pcVar25[1]; + auVar40._8_4_ = (int)(short)pcVar25[2]; + auVar40._12_4_ = (int)(short)pcVar25[3]; + auVar36._0_4_ = (int)(short)pcVar25[4]; + auVar36._4_4_ = (int)(short)pcVar25[5]; + auVar36._8_4_ = (int)(short)pcVar25[6]; + auVar36._12_4_ = (int)(short)pcVar25[7]; + auVar38._0_4_ = (int)(short)pcVar25[8]; + auVar38._4_4_ = (int)(short)pcVar25[9]; + auVar38._8_4_ = (int)(short)pcVar25[10]; + auVar38._12_4_ = (int)(short)pcVar25[0xb]; + auVar33._0_4_ = (int)(short)pcVar25[0xc]; + auVar33._4_4_ = (int)(short)pcVar25[0xd]; + auVar33._8_4_ = (int)(short)pcVar25[0xe]; + auVar33._12_4_ = (int)(short)pcVar25[0xf]; + auVar35 = NEON_scvtf(auVar40,4); + auVar32 = NEON_scvtf(auVar36,4); + auVar39 = NEON_scvtf(auVar38,4); + auVar31 = NEON_scvtf(auVar33,4); + puVar20[1] = auVar35._8_8_; + *puVar20 = auVar35._0_8_; + puVar20[3] = auVar32._8_8_; + puVar20[2] = auVar32._0_8_; + puVar20[5] = auVar39._8_8_; + puVar20[4] = auVar39._0_8_; + puVar20[7] = auVar31._8_8_; + puVar20[6] = auVar31._0_8_; + puVar20 = puVar20 + 8; + pcVar25 = pcVar25 + 0x10; + } while (uVar28 < uVar4); + iVar18 = iVar18 + iVar13; + if (uVar29 - uVar8 != iVar13) { + iVar13 = iVar18 + 1; + *(float *)(param_5 + (long)iVar18 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar18); + if (iVar13 < iVar9) { + iVar5 = iVar18 + 2; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar9) { + iVar13 = iVar18 + 3; + /* try { // try from 00276828 to 00376833 has its CatchHandler @ 002773a8 */ + *(float *)(param_5 + (long)iVar5 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar9) { + /* try { // try from 00276834 to 00376893 has its CatchHandler @ 00277398 */ + iVar5 = iVar18 + 4; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar9) { + iVar13 = iVar18 + 5; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar9) { + iVar5 = iVar18 + 6; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar9) { + iVar13 = iVar18 + 7; + /* try { // try from 00276894 to 00377437 has its CatchHandler @ 00276780 */ + *(float *)(param_5 + (long)iVar5 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar9) { + iVar5 = iVar18 + 8; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar9) { + iVar13 = iVar18 + 9; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar9) { + iVar5 = iVar18 + 10; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar9) { + iVar13 = iVar18 + 0xb; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar9) { + iVar5 = iVar18 + 0xc; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar5 < iVar9) { + iVar13 = iVar18 + 0xd; + *(float *)(param_5 + (long)iVar5 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar13 < iVar9) { + iVar18 = iVar18 + 0xe; + *(float *)(param_5 + (long)iVar13 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar13); + if (iVar18 < iVar9) { + *(float *)(param_5 + (long)iVar18 * 4) = + (float)(int)*(char *)((long)param_1 + (long)iVar18); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar26 = iVar26 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar26 != 0); + } + return; +} + + +================================================================== + +### FUNC 00276a3c (1884 bytes) name=FUN_00276a3c + +void FUN_00276a3c(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + long lVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined8 *puVar6; + int iVar7; + undefined1 *puVar8; + uint uVar9; + int iVar10; + ushort uVar11; + ushort uVar12; + int iVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + uint uVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + ushort *puVar27; + ushort *puVar28; + ushort *puVar29; + ushort *puVar30; + ushort *puVar31; + ushort *puVar32; + ushort *puVar33; + ushort *puVar34; + ushort *puVar35; + ushort *puVar36; + ushort *puVar37; + ushort *puVar38; + ushort *puVar39; + ushort *puVar40; + int iVar41; + ushort *puVar42; + undefined8 *puVar43; + ushort uVar44; + undefined1 uVar45; + ushort *puVar46; + long lVar47; + int iVar48; + long lVar49; + uint uVar50; + undefined1 uVar51; + uint uVar52; + long lVar53; + undefined8 uVar54; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined8 uVar60; + undefined1 auVar61 [16]; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + undefined8 uVar64; + undefined1 auVar65 [16]; + undefined1 auVar66 [16]; + undefined8 uVar67; + undefined1 auVar68 [16]; + undefined1 auVar69 [16]; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + undefined1 auVar72 [16]; + undefined1 auVar73 [16]; + + iVar48 = param_7[1]; + iVar10 = *param_7; + if (iVar48 != 0) { + uVar15 = iVar10 - 0x10U >> 4; + iVar13 = (uVar15 + 1) * 0x10; + if (iVar10 + -0xf < 1) { + iVar13 = 0; + } + uVar18 = (iVar10 + -4) - iVar13; + lVar49 = (long)iVar13; + uVar16 = uVar18 >> 2; + uVar2 = uVar16 + 1; + uVar3 = (uVar16 - 3 >> 2) + 1; + iVar7 = iVar13 + 4 + uVar16 * 4; + lVar1 = lVar49 + (ulong)uVar2 * 4; + iVar17 = iVar10 + -3; + do { + if (0 < iVar10 + -0xf) { + puVar42 = (ushort *)(param_1 + 0x10); + puVar43 = param_5; + do { + puVar46 = puVar42 + -8; + uVar44 = *puVar42; + puVar27 = puVar42 + 1; + puVar28 = puVar42 + 2; + puVar29 = puVar42 + 3; + puVar30 = puVar42 + 4; + puVar31 = puVar42 + 5; + puVar32 = puVar42 + 6; + puVar33 = puVar42 + 7; + puVar34 = puVar42 + -7; + puVar35 = puVar42 + -6; + puVar36 = puVar42 + -5; + puVar37 = puVar42 + -4; + puVar38 = puVar42 + -3; + puVar39 = puVar42 + -2; + puVar40 = puVar42 + -1; + puVar42 = puVar42 + 0x10; + auVar62._0_8_ = CONCAT26(0,CONCAT24(*puVar34,(uint)*puVar46)); + auVar62._8_2_ = *puVar35; + auVar62._10_2_ = 0; + auVar62._12_2_ = *puVar36; + auVar62._14_2_ = 0; + uVar60 = NEON_sqxtn(auVar62._0_8_,auVar62,4); + auVar68._0_8_ = CONCAT26(0,CONCAT24(*puVar38,(uint)*puVar37)); + auVar68._8_2_ = *puVar39; + auVar68._10_2_ = 0; + auVar68._12_2_ = *puVar40; + auVar68._14_2_ = 0; + auVar56._0_8_ = CONCAT26(0,CONCAT24(*puVar27,(uint)uVar44)); + auVar56._8_2_ = *puVar28; + auVar56._10_2_ = 0; + auVar56._12_2_ = *puVar29; + auVar56._14_2_ = 0; + uVar67 = NEON_sqxtn(auVar68._0_8_,auVar68,4); + uVar54 = NEON_sqxtn(auVar56._0_8_,auVar56,4); + auVar70._0_8_ = CONCAT26(0,CONCAT24(*puVar31,(uint)*puVar30)); + auVar70._8_2_ = *puVar32; + auVar70._10_2_ = 0; + auVar70._12_2_ = *puVar33; + auVar70._14_2_ = 0; + uVar64 = NEON_sqxtn(auVar70._0_8_,auVar70,4); + auVar71._8_8_ = uVar67; + auVar71._0_8_ = uVar60; + auVar66._8_8_ = uVar64; + auVar66._0_8_ = uVar54; + uVar60 = NEON_sqxtn(uVar64,auVar71,2); + uVar54 = NEON_sqxtn(uVar54,auVar66,2); + puVar43[1] = uVar54; + *puVar43 = uVar60; + puVar43 = puVar43 + 2; + } while (puVar42 != (ushort *)(param_1 + (ulong)uVar15 * 0x20 + 0x30)); + } + uVar44 = 0x7f; + iVar14 = iVar13; + if (iVar13 < iVar17) { + puVar42 = (ushort *)(param_1 + lVar49 * 2); + puVar43 = (undefined8 *)((long)param_5 + lVar49); + iVar14 = iVar7; + if ((puVar42 < (ushort *)((long)param_5 + lVar1) && + puVar43 < (undefined8 *)(param_1 + lVar1 * 2)) || (uVar2 < 4)) { + do { + puVar6 = (undefined8 *)((long)puVar43 + 4); + uVar12 = puVar42[1]; + if (0x7f < puVar42[1]) { + uVar12 = uVar44; + } + uVar11 = *puVar42; + if (0x7f < *puVar42) { + uVar11 = uVar44; + } + *(char *)((long)puVar43 + 1) = (char)uVar12; + *(char *)puVar43 = (char)uVar11; + uVar12 = puVar42[3]; + if (0x7f < puVar42[3]) { + uVar12 = uVar44; + } + uVar11 = puVar42[2]; + if (0x7f < puVar42[2]) { + uVar11 = uVar44; + } + *(char *)((long)puVar43 + 3) = (char)uVar12; + *(char *)((long)puVar43 + 2) = (char)uVar11; + puVar43 = puVar6; + puVar42 = puVar42 + 4; + } while (puVar6 != (undefined8 *)((long)param_5 + lVar49 + 4 + (ulong)uVar16 * 4)); + } + else { + iVar41 = iVar13; + if (0xb < uVar18) { + uVar52 = 0; + do { + uVar52 = uVar52 + 1; + auVar69._2_2_ = 0; + auVar69._0_2_ = *puVar42; + auVar69._4_2_ = puVar42[1]; + auVar69._6_2_ = 0; + auVar69._8_2_ = puVar42[2]; + auVar69._10_2_ = 0; + auVar69._12_2_ = puVar42[3]; + auVar69._14_2_ = 0; + auVar61._2_2_ = 0; + auVar61._0_2_ = puVar42[4]; + auVar61._4_2_ = puVar42[5]; + auVar61._6_2_ = 0; + auVar61._8_2_ = puVar42[6]; + auVar61._10_2_ = 0; + auVar61._12_2_ = puVar42[7]; + auVar61._14_2_ = 0; + auVar19._8_4_ = 0x7f; + auVar19._0_8_ = 0x7f0000007f; + auVar19._12_4_ = 0x7f; + auVar70 = NEON_umin(auVar69,auVar19,4); + auVar65._2_2_ = 0; + auVar65._0_2_ = puVar42[8]; + auVar65._4_2_ = puVar42[9]; + auVar65._6_2_ = 0; + auVar65._8_2_ = puVar42[10]; + auVar65._10_2_ = 0; + auVar65._12_2_ = puVar42[0xb]; + auVar65._14_2_ = 0; + auVar55._2_2_ = 0; + auVar55._0_2_ = puVar42[0xc]; + auVar55._4_2_ = puVar42[0xd]; + auVar55._6_2_ = 0; + auVar55._8_2_ = puVar42[0xe]; + auVar55._10_2_ = 0; + auVar55._12_2_ = puVar42[0xf]; + auVar55._14_2_ = 0; + auVar20._8_4_ = 0x7f; + auVar20._0_8_ = 0x7f0000007f; + auVar20._12_4_ = 0x7f; + auVar62 = NEON_umin(auVar61,auVar20,4); + auVar21._8_4_ = 0x7f; + auVar21._0_8_ = 0x7f0000007f; + auVar21._12_4_ = 0x7f; + auVar66 = NEON_umin(auVar65,auVar21,4); + auVar22._8_4_ = 0x7f; + auVar22._0_8_ = 0x7f0000007f; + auVar22._12_4_ = 0x7f; + auVar56 = NEON_umin(auVar55,auVar22,4); + auVar57._0_8_ = + CONCAT17(auVar62[0xc], + CONCAT16(auVar62[8], + CONCAT15(auVar62[4], + CONCAT14(auVar62[0], + CONCAT13(auVar70[0xc], + CONCAT12(auVar70[8], + CONCAT11(auVar70[4], + auVar70[0]))))))); + auVar57[8] = auVar66[0]; + auVar57[9] = auVar66[4]; + auVar57[10] = auVar66[8]; + auVar57[0xb] = auVar66[0xc]; + auVar57[0xc] = auVar56[0]; + auVar57[0xd] = auVar56[4]; + auVar57[0xe] = auVar56[8]; + auVar57[0xf] = auVar56[0xc]; + puVar43[1] = auVar57._8_8_; + *puVar43 = auVar57._0_8_; + puVar43 = puVar43 + 2; + puVar42 = puVar42 + 0x10; + } while (uVar52 < uVar3); + iVar41 = iVar13 + uVar3 * 0x10; + if (uVar2 == uVar3 * 4) goto LAB_00276d20; + } + lVar47 = (long)iVar41; + lVar53 = param_1 + lVar47 * 2; + uVar11 = *(ushort *)(param_1 + lVar47 * 2); + uVar12 = *(ushort *)(lVar53 + 2); + if (0x7f < *(ushort *)(lVar53 + 2)) { + uVar12 = uVar44; + } + if (0x7f < uVar11) { + uVar11 = uVar44; + } + *(char *)((long)param_5 + lVar47) = (char)uVar11; + *(char *)((long)param_5 + lVar47 + 1) = (char)uVar12; + uVar12 = *(ushort *)(lVar53 + 6); + if (0x7f < *(ushort *)(lVar53 + 6)) { + uVar12 = 0x7f; + } + uVar45 = (undefined1)*(ushort *)(lVar53 + 4); + if (0x7f < *(ushort *)(lVar53 + 4)) { + uVar45 = 0x7f; + } + *(char *)((long)param_5 + lVar47 + 3) = (char)uVar12; + *(undefined1 *)((long)param_5 + lVar47 + 2) = uVar45; + if (iVar41 + 4 < iVar17) { + lVar47 = (long)(iVar41 + 4); + lVar53 = param_1 + lVar47 * 2; + uVar12 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)*(ushort *)(lVar53 + 2); + if (0x7f < *(ushort *)(lVar53 + 2)) { + uVar45 = 0x7f; + } + uVar51 = (undefined1)uVar12; + if (0x7f < uVar12) { + uVar51 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar51; + *(undefined1 *)((long)param_5 + lVar47 + 1) = uVar45; + uVar45 = (undefined1)*(ushort *)(lVar53 + 6); + if (0x7f < *(ushort *)(lVar53 + 6)) { + uVar45 = 0x7f; + } + uVar51 = (undefined1)*(ushort *)(lVar53 + 4); + if (0x7f < *(ushort *)(lVar53 + 4)) { + uVar51 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47 + 3) = uVar45; + *(undefined1 *)((long)param_5 + lVar47 + 2) = uVar51; + if (iVar41 + 8 < iVar17) { + lVar47 = (long)(iVar41 + 8); + lVar53 = param_1 + lVar47 * 2; + uVar12 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)*(ushort *)(lVar53 + 2); + if (0x7f < *(ushort *)(lVar53 + 2)) { + uVar45 = 0x7f; + } + uVar51 = (undefined1)uVar12; + if (0x7f < uVar12) { + uVar51 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar51; + *(undefined1 *)((long)param_5 + lVar47 + 1) = uVar45; + uVar12 = *(ushort *)(lVar53 + 6); + if (0x7f < *(ushort *)(lVar53 + 6)) { + uVar12 = uVar44; + } + uVar11 = *(ushort *)(lVar53 + 4); + if (0x7f < *(ushort *)(lVar53 + 4)) { + uVar11 = uVar44; + } + *(char *)((long)param_5 + lVar47 + 3) = (char)uVar12; + *(char *)((long)param_5 + lVar47 + 2) = (char)uVar11; + } + } + } + } +LAB_00276d20: + if (iVar14 < iVar10) { + lVar53 = (long)iVar14; + uVar52 = iVar10 - iVar14; + puVar8 = (undefined1 *)((long)param_5 + lVar53); + puVar42 = (ushort *)(param_1 + lVar53 * 2); + if ((puVar8 < (undefined1 *)(param_1 + (lVar53 + (ulong)uVar52) * 2) && + puVar42 < (ushort *)((long)param_5 + lVar53 + (ulong)uVar52)) || (uVar52 < 0x13)) { + lVar53 = 0; + do { + uVar12 = puVar42[lVar53]; + if (0x7f < puVar42[lVar53]) { + uVar12 = uVar44; + } + puVar8[lVar53] = (char)uVar12; + lVar53 = lVar53 + 1; + } while (lVar53 != (ulong)(uint)((iVar10 + -1) - iVar14) + 1); + } + else { + uVar9 = -((uint)((ulong)puVar42 >> 1) & 7) & 7; + if (uVar52 < uVar9) { + uVar9 = uVar52; + } + iVar41 = iVar14; + if (uVar9 != 0) { + iVar41 = iVar14 + 1; + uVar12 = *puVar42; + if (0x7f < *puVar42) { + uVar12 = uVar44; + } + *puVar8 = (char)uVar12; + if (uVar9 != 1) { + lVar47 = (long)iVar41; + iVar41 = iVar14 + 2; + uVar12 = *(ushort *)(param_1 + lVar47 * 2); + if (0x7f < uVar12) { + uVar12 = uVar44; + } + *(char *)((long)param_5 + lVar47) = (char)uVar12; + if (uVar9 != 2) { + lVar47 = (long)iVar41; + iVar41 = iVar14 + 3; + uVar44 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar45; + if (uVar9 != 3) { + lVar47 = (long)iVar41; + iVar41 = iVar14 + 4; + uVar44 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar45; + if (uVar9 != 4) { + lVar47 = (long)iVar41; + iVar41 = iVar14 + 5; + uVar44 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar45; + if (uVar9 != 5) { + lVar47 = (long)iVar41; + iVar41 = iVar14 + 6; + uVar44 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar45; + if (uVar9 == 7) { + lVar47 = (long)iVar41; + iVar41 = iVar14 + 7; + uVar44 = *(ushort *)(param_1 + lVar47 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + lVar47) = uVar45; + } + } + } + } + } + } + } + uVar4 = ((uVar52 - uVar9) - 0x10 >> 4) + 1; + iVar14 = uVar4 * 0x10; + if (0xe < (uVar52 - 1) - uVar9) { + uVar50 = 0; + puVar42 = (ushort *)(param_1 + lVar53 * 2 + (ulong)uVar9 * 2); + puVar43 = (undefined8 *)((long)param_5 + (ulong)uVar9 + lVar53); + do { + uVar50 = uVar50 + 1; + auVar73._2_2_ = 0; + auVar73._0_2_ = *puVar42; + auVar73._4_2_ = puVar42[1]; + auVar73._6_2_ = 0; + auVar73._8_2_ = puVar42[2]; + auVar73._10_2_ = 0; + auVar73._12_2_ = puVar42[3]; + auVar73._14_2_ = 0; + auVar63._2_2_ = 0; + auVar63._0_2_ = puVar42[4]; + auVar63._4_2_ = puVar42[5]; + auVar63._6_2_ = 0; + auVar63._8_2_ = puVar42[6]; + auVar63._10_2_ = 0; + auVar63._12_2_ = puVar42[7]; + auVar63._14_2_ = 0; + auVar23._8_4_ = 0x7f; + auVar23._0_8_ = 0x7f0000007f; + auVar23._12_4_ = 0x7f; + auVar70 = NEON_umin(auVar73,auVar23,4); + auVar72._2_2_ = 0; + auVar72._0_2_ = puVar42[8]; + auVar72._4_2_ = puVar42[9]; + auVar72._6_2_ = 0; + auVar72._8_2_ = puVar42[10]; + auVar72._10_2_ = 0; + auVar72._12_2_ = puVar42[0xb]; + auVar72._14_2_ = 0; + auVar58._2_2_ = 0; + auVar58._0_2_ = puVar42[0xc]; + auVar58._4_2_ = puVar42[0xd]; + auVar58._6_2_ = 0; + auVar58._8_2_ = puVar42[0xe]; + auVar58._10_2_ = 0; + auVar58._12_2_ = puVar42[0xf]; + auVar58._14_2_ = 0; + auVar24._8_4_ = 0x7f; + auVar24._0_8_ = 0x7f0000007f; + auVar24._12_4_ = 0x7f; + auVar62 = NEON_umin(auVar63,auVar24,4); + auVar25._8_4_ = 0x7f; + auVar25._0_8_ = 0x7f0000007f; + auVar25._12_4_ = 0x7f; + auVar66 = NEON_umin(auVar72,auVar25,4); + auVar26._8_4_ = 0x7f; + auVar26._0_8_ = 0x7f0000007f; + auVar26._12_4_ = 0x7f; + auVar56 = NEON_umin(auVar58,auVar26,4); + auVar59._0_8_ = + CONCAT17(auVar62[0xc], + CONCAT16(auVar62[8], + CONCAT15(auVar62[4], + CONCAT14(auVar62[0], + CONCAT13(auVar70[0xc], + CONCAT12(auVar70[8], + CONCAT11(auVar70[4], + auVar70[0]))))))); + auVar59[8] = auVar66[0]; + auVar59[9] = auVar66[4]; + auVar59[10] = auVar66[8]; + auVar59[0xb] = auVar66[0xc]; + auVar59[0xc] = auVar56[0]; + auVar59[0xd] = auVar56[4]; + auVar59[0xe] = auVar56[8]; + auVar59[0xf] = auVar56[0xc]; + puVar43[1] = auVar59._8_8_; + *puVar43 = auVar59._0_8_; + puVar42 = puVar42 + 0x10; + puVar43 = puVar43 + 2; + } while (uVar50 < uVar4); + iVar41 = iVar41 + iVar14; + if (uVar52 - uVar9 == iVar14) goto LAB_002770c8; + } + iVar14 = iVar41 + 1; + uVar44 = *(ushort *)(param_1 + (long)iVar41 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar41) = uVar45; + if (iVar14 < iVar10) { + iVar5 = iVar41 + 2; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar5 < iVar10) { + iVar14 = iVar41 + 3; + uVar44 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar45; + if (iVar14 < iVar10) { + iVar5 = iVar41 + 4; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar5 < iVar10) { + iVar14 = iVar41 + 5; + uVar44 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar45; + if (iVar14 < iVar10) { + iVar5 = iVar41 + 6; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar5 < iVar10) { + iVar14 = iVar41 + 7; + uVar44 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar45; + if (iVar14 < iVar10) { + iVar5 = iVar41 + 8; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar5 < iVar10) { + iVar14 = iVar41 + 9; + uVar44 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar45; + if (iVar14 < iVar10) { + iVar5 = iVar41 + 10; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar5 < iVar10) { + iVar14 = iVar41 + 0xb; + uVar44 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar45; + if (iVar14 < iVar10) { + iVar5 = iVar41 + 0xc; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar5 < iVar10) { + iVar14 = iVar41 + 0xd; + uVar44 = *(ushort *)(param_1 + (long)iVar5 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar5) = uVar45; + if (iVar14 < iVar10) { + iVar41 = iVar41 + 0xe; + uVar44 = *(ushort *)(param_1 + (long)iVar14 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar14) = uVar45; + if (iVar41 < iVar10) { + uVar44 = *(ushort *)(param_1 + (long)iVar41 * 2); + uVar45 = (undefined1)uVar44; + if (0x7f < uVar44) { + uVar45 = 0x7f; + } + *(undefined1 *)((long)param_5 + (long)iVar41) = uVar45; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002770c8: + iVar48 = iVar48 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffe); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar48 != 0); + } + return; +} + + +================================================================== + +### FUNC 00277198 (1308 bytes) name=FUN_00277198 + +void FUN_00277198(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + ushort *puVar3; + uint uVar4; + uint uVar5; + int iVar6; + ushort uVar7; + ushort uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + ushort uVar17; + long lVar18; + ushort *puVar19; + ulong uVar20; + undefined8 *puVar21; + ulong uVar22; + int iVar23; + ushort *puVar24; + uint uVar25; + long lVar26; + int iVar27; + long lVar28; + long lVar29; + long lVar30; + uint uVar31; + undefined8 uVar32; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined8 uVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + long lVar40; + + iVar27 = param_7[1]; + iVar6 = *param_7; + if (iVar27 != 0) { + uVar10 = iVar6 - 8U >> 3; + uVar9 = (uVar10 + 1) * 8; + if (iVar6 + -7 < 1) { + uVar9 = 0; + } + uVar12 = (iVar6 + -4) - uVar9; + lVar18 = (long)(int)uVar9; + uVar11 = uVar12 >> 2; + uVar1 = (uVar11 - 1 >> 1) + 1; + lVar28 = (lVar18 + 0x20) * 2; + lVar40 = NEON_shl(lVar18 + 4 + (ulong)uVar11 * 4,1); + uVar4 = uVar9 + 4 + uVar11 * 4; + do { + if (0 < iVar6 + -7) { + puVar19 = param_1; + puVar21 = param_5; + do { + puVar24 = puVar19 + 8; + auVar34._0_8_ = CONCAT26(0,CONCAT24(puVar19[1],(uint)*puVar19)); + auVar34._8_2_ = puVar19[2]; + auVar34._10_2_ = 0; + auVar34._12_2_ = puVar19[3]; + auVar34._14_2_ = 0; + uVar32 = NEON_sqxtn(auVar34._0_8_,auVar34,4); + auVar38._0_8_ = CONCAT26(0,CONCAT24(puVar19[5],(uint)puVar19[4])); + auVar38._8_2_ = puVar19[6]; + auVar38._10_2_ = 0; + auVar38._12_2_ = puVar19[7]; + auVar38._14_2_ = 0; + uVar36 = NEON_sqxtn(auVar38._0_8_,auVar38,4); + puVar21[1] = uVar36; + *puVar21 = uVar32; + puVar19 = puVar24; + puVar21 = puVar21 + 2; + } while (puVar24 != param_1 + ((ulong)uVar10 + 1) * 8); + } + uVar17 = 0x7fff; + uVar2 = uVar9; + if ((int)uVar9 < iVar6 + -3) { + puVar19 = param_1 + lVar18; + puVar24 = (ushort *)((long)param_5 + lVar28 + -0x40); + uVar2 = uVar4; + if ((puVar19 < (ushort *)((long)param_5 + lVar28) && puVar24 < param_1 + lVar18 + 0x20) || + (uVar11 + 1 < 3)) { + do { + puVar3 = puVar19 + 4; + uVar8 = *puVar19; + uVar7 = puVar19[1]; + if (0x7fff < puVar19[1]) { + uVar7 = uVar17; + } + puVar24[1] = uVar7; + /* try { // try from 00277640 to 0037767f has its CatchHandler @ 00277640 + catch() { ... } // from try @ 00277640 with catch @ 00277640 + catch() { ... } // from try @ 002776c0 with catch @ 00277640 + catch() { ... } // from try @ 002777f8 with catch @ 00277640 */ + if (0x7fff < uVar8) { + uVar8 = uVar17; + } + *puVar24 = uVar8; + uVar7 = puVar19[3]; + if (0x7fff < puVar19[3]) { + uVar7 = uVar17; + } + uVar8 = puVar19[2]; + if (0x7fff < puVar19[2]) { + uVar8 = uVar17; + } + puVar24[3] = uVar7; + puVar24[2] = uVar8; + puVar19 = puVar3; + puVar24 = puVar24 + 4; + } while (puVar3 != (ushort *)((long)param_1 + lVar40)); + } + else { + uVar25 = uVar9; + if (3 < uVar12) { + uVar25 = 0; + do { + uVar25 = uVar25 + 1; + auVar37._2_2_ = 0; + auVar37._0_2_ = *puVar19; + auVar37._4_2_ = puVar19[1]; + auVar37._6_2_ = 0; + auVar37._8_2_ = puVar19[2]; + auVar37._10_2_ = 0; + auVar37._12_2_ = puVar19[3]; + auVar37._14_2_ = 0; + auVar33._2_2_ = 0; + auVar33._0_2_ = puVar19[4]; + auVar33._4_2_ = puVar19[5]; + auVar33._6_2_ = 0; + auVar33._8_2_ = puVar19[6]; + auVar33._10_2_ = 0; + auVar33._12_2_ = puVar19[7]; + auVar33._14_2_ = 0; + auVar13._8_4_ = 0x7fff; + auVar13._0_8_ = 0x7fff00007fff; + auVar13._12_4_ = 0x7fff; + auVar38 = NEON_smin(auVar37,auVar13,4); + auVar14._8_4_ = 0x7fff; + auVar14._0_8_ = 0x7fff00007fff; + auVar14._12_4_ = 0x7fff; + auVar34 = NEON_smin(auVar33,auVar14,4); + *(ulong *)(puVar24 + 4) = + CONCAT26(auVar34._12_2_, + CONCAT24(auVar34._8_2_,CONCAT22(auVar34._4_2_,auVar34._0_2_))); + *(ulong *)puVar24 = + CONCAT26(auVar38._12_2_, + CONCAT24(auVar38._8_2_,CONCAT22(auVar38._4_2_,auVar38._0_2_))); + puVar19 = puVar19 + 8; + puVar24 = puVar24 + 8; + } while (uVar25 < uVar1); + uVar25 = uVar9 + uVar1 * 8; + if (uVar11 + 1 == uVar1 * 2) goto LAB_00277360; + } + uVar20 = -(ulong)(uVar25 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar25 << 1; + uVar7 = *(ushort *)((long)param_1 + uVar20 + 2); + if (0x7fff < uVar7) { + uVar7 = uVar17; + } + uVar8 = *(ushort *)((long)param_1 + uVar20); + if (0x7fff < *(ushort *)((long)param_1 + uVar20)) { + uVar8 = uVar17; + } + *(ushort *)((long)param_5 + uVar20) = uVar8; + *(ushort *)((long)param_5 + uVar20 + 2) = uVar7; + uVar7 = *(ushort *)((long)param_1 + uVar20 + 6); + uVar8 = *(ushort *)((long)param_1 + uVar20 + 4); + if (0x7fff < uVar7) { + uVar7 = uVar17; + } + if (0x7fff < uVar8) { + uVar8 = uVar17; + } + *(ushort *)((long)param_5 + uVar20 + 4) = uVar8; + *(ushort *)((long)param_5 + uVar20 + 6) = uVar7; + } + } +LAB_00277360: + uVar20 = (ulong)uVar2; + if ((int)uVar2 < iVar6) { + lVar26 = (long)(int)uVar2; + uVar25 = iVar6 - uVar2; + lVar30 = (lVar26 + 8) * 2; + lVar29 = lVar30 + -0x10; + puVar19 = (ushort *)((long)param_5 + lVar29); + puVar24 = param_1 + lVar26; + /* catch() { ... } // from try @ 00276834 with catch @ 00277398 */ + /* catch() { ... } // from try @ 00276828 with catch @ 002773a8 */ + if ((puVar19 < param_1 + lVar26 + 8 && puVar24 < (ushort *)((long)param_5 + lVar30)) || + (uVar25 < 0xb)) { + lVar26 = 0; + /* try { // try from 00277680 to 00377687 has its CatchHandler @ 00277808 */ + do { + /* try { // try from 0027768c to 00377693 has its CatchHandler @ 002777e4 */ + uVar7 = *(ushort *)((long)puVar24 + lVar26); + if (0x7fff < *(ushort *)((long)puVar24 + lVar26)) { + uVar7 = uVar17; + } + *(ushort *)((long)puVar19 + lVar26) = uVar7; + lVar26 = lVar26 + 2; + /* try { // try from 00277698 to 0037769f has its CatchHandler @ 002777d0 */ + } while (lVar26 != ((ulong)((iVar6 + -1) - uVar2) + 1) * 2); + } + else { + uVar5 = -((uint)((ulong)puVar24 >> 1) & 7) & 7; + if (uVar25 < uVar5) { + uVar5 = uVar25; + } + if (uVar5 != 0) { + lVar30 = lVar26 * 2; + uVar7 = param_1[lVar26]; + if (0x7fff < param_1[lVar26]) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + lVar30) = uVar7; + if (uVar5 == 1) { + uVar20 = (ulong)(uVar2 + 1); + /* try { // try from 002776b0 to 003776b7 has its CatchHandler @ 0027776c */ + } + else { + uVar31 = uVar2 + 2; + uVar7 = param_1[lVar26 + 1]; + if (0x7fff < uVar7) { + uVar7 = 0x7fff; + } + *(ushort *)((long)param_5 + lVar30 + 2) = uVar7; + if (uVar5 != 2) { + uVar31 = uVar2 + 3; + uVar7 = param_1[lVar26 + 2]; + if (0x7fff < param_1[lVar26 + 2]) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + lVar30 + 4) = uVar7; + if (uVar5 != 3) { + uVar31 = uVar2 + 4; + uVar7 = param_1[lVar26 + 3]; + if (0x7fff < uVar7) { + uVar7 = 0x7fff; + } + *(ushort *)((long)param_5 + lVar30 + 6) = uVar7; + if (uVar5 != 4) { + uVar31 = uVar2 + 5; + uVar7 = param_1[lVar26 + 4]; + if (0x7fff < param_1[lVar26 + 4]) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + lVar30 + 8) = uVar7; + if (uVar5 != 5) { + uVar31 = uVar2 + 6; + uVar7 = param_1[lVar26 + 5]; + if (0x7fff < uVar7) { + uVar7 = 0x7fff; + } + *(ushort *)((long)param_5 + lVar30 + 10) = uVar7; + if (uVar5 == 7) { + uVar20 = (ulong)(uVar2 + 7); + uVar7 = param_1[lVar26 + 6]; + if (0x7fff < param_1[lVar26 + 6]) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + lVar30 + 0xc) = uVar7; + goto LAB_0027749c; + } + } + } + } + } + uVar20 = (ulong)uVar31; + } + } +LAB_0027749c: + uVar2 = ((uVar25 - uVar5) - 8 >> 3) + 1; + iVar23 = uVar2 * 8; + if (6 < (uVar25 - 1) - uVar5) { + uVar31 = 0; + puVar21 = (undefined8 *)((long)param_5 + lVar29 + (ulong)uVar5 * 2); + puVar19 = param_1 + (ulong)uVar5 + lVar26; + do { + uVar31 = uVar31 + 1; + auVar39._2_2_ = 0; + auVar39._0_2_ = *puVar19; + auVar39._4_2_ = puVar19[1]; + auVar39._6_2_ = 0; + auVar39._8_2_ = puVar19[2]; + auVar39._10_2_ = 0; + auVar39._12_2_ = puVar19[3]; + auVar39._14_2_ = 0; + auVar35._2_2_ = 0; + auVar35._0_2_ = puVar19[4]; + auVar35._4_2_ = puVar19[5]; + auVar35._6_2_ = 0; + auVar35._8_2_ = puVar19[6]; + auVar35._10_2_ = 0; + auVar35._12_2_ = puVar19[7]; + auVar35._14_2_ = 0; + auVar15._8_4_ = 0x7fff; + auVar15._0_8_ = 0x7fff00007fff; + auVar15._12_4_ = 0x7fff; + auVar38 = NEON_smin(auVar39,auVar15,4); + auVar16._8_4_ = 0x7fff; + auVar16._0_8_ = 0x7fff00007fff; + auVar16._12_4_ = 0x7fff; + auVar34 = NEON_smin(auVar35,auVar16,4); + puVar21[1] = CONCAT26(auVar34._12_2_, + CONCAT24(auVar34._8_2_,CONCAT22(auVar34._4_2_,auVar34._0_2_))); + *puVar21 = CONCAT26(auVar38._12_2_, + CONCAT24(auVar38._8_2_,CONCAT22(auVar38._4_2_,auVar38._0_2_))); + puVar21 = puVar21 + 2; + puVar19 = puVar19 + 8; + } while (uVar31 < uVar2); + uVar20 = (ulong)(uint)((int)uVar20 + iVar23); + if (uVar25 - uVar5 == iVar23) goto LAB_002775dc; + } + uVar22 = -(uVar20 >> 0x1f) & 0xfffffffe00000000 | uVar20 << 1; + iVar23 = (int)uVar20; + uVar7 = *(ushort *)((long)param_1 + uVar22); + if (0x7fff < uVar7) { + uVar7 = 0x7fff; + } + *(ushort *)((long)param_5 + uVar22) = uVar7; + if (iVar23 + 1 < iVar6) { + uVar7 = *(ushort *)((long)param_1 + uVar22 + 2); + if (0x7fff < uVar7) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + uVar22 + 2) = uVar7; + if (iVar23 + 2 < iVar6) { + uVar7 = *(ushort *)((long)param_1 + uVar22 + 4); + if (0x7fff < uVar7) { + uVar7 = 0x7fff; + } + *(ushort *)((long)param_5 + uVar22 + 4) = uVar7; + if (iVar23 + 3 < iVar6) { + uVar7 = *(ushort *)((long)param_1 + uVar22 + 6); + if (0x7fff < uVar7) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + uVar22 + 6) = uVar7; + if (iVar23 + 4 < iVar6) { + uVar7 = *(ushort *)((long)param_1 + uVar22 + 8); + if (0x7fff < uVar7) { + uVar7 = 0x7fff; + } + *(ushort *)((long)param_5 + uVar22 + 8) = uVar7; + if (iVar23 + 5 < iVar6) { + uVar7 = *(ushort *)((long)param_1 + uVar22 + 10); + if (0x7fff < uVar7) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + uVar22 + 10) = uVar7; + if (iVar23 + 6 < iVar6) { + uVar7 = *(ushort *)((long)param_1 + uVar22 + 0xc); + if (0x7fff < uVar7) { + uVar7 = uVar17; + } + *(ushort *)((long)param_5 + uVar22 + 0xc) = uVar7; + } + } + } + } + } + } + } + } +LAB_002775dc: + iVar27 = iVar27 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar27 != 0); + } + return; +} + + +================================================================== + +### FUNC 002776b4 (916 bytes) name=FUN_002776b4 + +void FUN_002776b4(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + ulong uVar6; + int iVar7; + ushort uVar8; + ushort uVar9; + int iVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + ulong *puVar16; + long lVar17; + undefined8 *puVar18; + int iVar19; + long lVar20; + long lVar21; + int iVar22; + uint uVar23; + undefined8 uVar24; + undefined8 uVar25; + + /* try { // try from 002776bc to 003776bf has its CatchHandler @ 00277750 */ + /* try { // try from 002776c0 to 0037775b has its CatchHandler @ 00277640 */ + iVar22 = param_7[1]; + iVar7 = *param_7; + if (iVar22 != 0) { + uVar11 = iVar7 - 8U >> 3; + iVar10 = (uVar11 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar10 = 0; + } + uVar13 = (iVar7 + -4) - iVar10; + uVar12 = uVar13 >> 2; + uVar1 = (uVar12 - 1 >> 1) + 1; + iVar5 = iVar10 + 4 + uVar12 * 4; + do { + if (0 < iVar7 + -7) { + /* catch() { ... } // from try @ 002776bc with catch @ 00277750 */ + puVar16 = (ulong *)(param_5 + 0x10); + puVar18 = param_1; + do { + /* try { // try from 0027775c to 00377763 has its CatchHandler @ 00277768 */ + uVar25 = puVar18[1]; + uVar24 = *puVar18; + /* catch() { ... } // from try @ 0027775c with catch @ 00277768 */ + /* catch() { ... } // from try @ 002776b0 with catch @ 0027776c */ + puVar16[-1] = (ulong)CONCAT24((short)((ulong)uVar24 >> 0x30), + (uint)(ushort)((ulong)uVar24 >> 0x20)); + puVar16[-2] = (ulong)(CONCAT24((short)((ulong)uVar24 >> 0x10),(int)uVar24) & + 0xffff0000ffff); + puVar16[1] = (ulong)CONCAT24((short)((ulong)uVar25 >> 0x30), + (uint)(ushort)((ulong)uVar25 >> 0x20)); + *puVar16 = (ulong)(CONCAT24((short)((ulong)uVar25 >> 0x10),(int)uVar25) & 0xffff0000ffff); + puVar16 = puVar16 + 4; + /* try { // try from 0027777c to 0037777f has its CatchHandler @ 00277790 */ + puVar18 = puVar18 + 2; + /* try { // try from 00277780 to 00377787 has its CatchHandler @ 0027778c */ + } while (puVar16 != (ulong *)(param_5 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar19 = iVar10; + if (iVar10 < iVar7 + -3) { + /* catch() { ... } // from try @ 00277780 with catch @ 0027778c */ + /* catch() { ... } // from try @ 0027777c with catch @ 00277790 */ + iVar2 = iVar10; + iVar19 = iVar5; + if (3 < uVar13) { + /* catch() { ... } // from try @ 002776a4 with catch @ 0027779c */ + uVar15 = 0; + puVar16 = (ulong *)(param_5 + (long)iVar10 * 4); + puVar18 = (undefined8 *)((long)param_1 + (long)iVar10 * 2); + do { + uVar25 = puVar18[1]; + uVar24 = *puVar18; + /* try { // try from 002777a8 to 003777ab has its CatchHandler @ 002777bc */ + uVar15 = uVar15 + 1; + /* try { // try from 002777ac to 003777b3 has its CatchHandler @ 002777b8 */ + /* catch() { ... } // from try @ 002777ac with catch @ 002777b8 */ + /* catch() { ... } // from try @ 002777a8 with catch @ 002777bc */ + puVar16[1] = (ulong)CONCAT24((short)((ulong)uVar24 >> 0x30), + (uint)(ushort)((ulong)uVar24 >> 0x20)); + *puVar16 = (ulong)(CONCAT24((short)((ulong)uVar24 >> 0x10),(int)uVar24) & 0xffff0000ffff + ); + puVar16[3] = (ulong)CONCAT24((short)((ulong)uVar25 >> 0x30), + (uint)(ushort)((ulong)uVar25 >> 0x20)); + puVar16[2] = (ulong)(CONCAT24((short)((ulong)uVar25 >> 0x10),(int)uVar25) & + 0xffff0000ffff); + puVar16 = puVar16 + 4; + puVar18 = puVar18 + 2; + } while (uVar15 < uVar1); + iVar2 = iVar10 + uVar1 * 8; + if (uVar12 + 1 == uVar1 * 2) goto LAB_00277808; + } + /* catch() { ... } // from try @ 00277698 with catch @ 002777d0 */ + /* try { // try from 002777d4 to 003777db has its CatchHandler @ 002777e0 */ + lVar20 = (long)iVar2 * 2; + lVar17 = (long)iVar2 * 4; + /* catch() { ... } // from try @ 002777d4 with catch @ 002777e0 */ + /* catch() { ... } // from try @ 0027768c with catch @ 002777e4 */ + lVar21 = param_5 + lVar17; + /* try { // try from 002777e8 to 003777ef has its CatchHandler @ 00277800 */ + uVar8 = *(ushort *)((long)param_1 + lVar20 + 2); + uVar9 = *(ushort *)((long)param_1 + lVar20 + 6); + /* try { // try from 002777f0 to 003777f7 has its CatchHandler @ 00277804 */ + *(uint *)(param_5 + lVar17) = (uint)*(ushort *)((long)param_1 + lVar20); + /* try { // try from 002777f8 to 0037780f has its CatchHandler @ 00277640 */ + *(uint *)(lVar21 + 8) = (uint)*(ushort *)((long)param_1 + lVar20 + 4); + *(uint *)(lVar21 + 4) = (uint)uVar8; + /* catch() { ... } // from try @ 002777e8 with catch @ 00277800 */ + *(uint *)(lVar21 + 0xc) = (uint)uVar9; + } +LAB_00277808: + /* catch() { ... } // from try @ 00277680 with catch @ 00277808 */ + if (iVar19 < iVar7) { + /* try { // try from 00277810 to 0037782b has its CatchHandler @ 00277810 + catch() { ... } // from try @ 00277810 with catch @ 00277810 + catch() { ... } // from try @ 00277834 with catch @ 00277810 + catch() { ... } // from try @ 00277874 with catch @ 00277810 */ + lVar21 = (long)iVar19; + uVar14 = iVar7 - iVar19; + uVar15 = -((uint)((ulong)(param_5 + lVar21 * 4) >> 2) & 3) & 3; + /* try { // try from 0027782c to 00377833 has its CatchHandler @ 00277868 */ + uVar6 = (ulong)uVar15; + if (uVar14 < uVar15) { + uVar6 = (ulong)uVar14; + } + /* try { // try from 00277834 to 00377857 has its CatchHandler @ 00277810 */ + if (uVar14 < 9) { + uVar6 = (ulong)uVar14; + } + uVar15 = (uint)uVar6; + if (uVar15 != 0) { + *(uint *)(param_5 + lVar21 * 4) = (uint)*(ushort *)((long)param_1 + lVar21 * 2); + iVar2 = iVar19 + 1; + if (uVar15 != 1) { + /* try { // try from 00277858 to 00377867 has its CatchHandler @ 00277868 */ + iVar3 = iVar19 + 2; + *(uint *)(param_5 + (long)iVar2 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar3; + /* catch() { ... } // from try @ 0027782c with catch @ 00277868 + catch() { ... } // from try @ 00277858 with catch @ 00277868 */ + if (uVar15 != 2) { + /* try { // try from 0027786c to 00377873 has its CatchHandler @ 0027787c */ + /* try { // try from 00277874 to 0037787f has its CatchHandler @ 00277810 */ + iVar2 = iVar19 + 3; + /* catch() { ... } // from try @ 0027786c with catch @ 0027787c */ + *(uint *)(param_5 + (long)iVar3 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar3 * 2); + if (uVar15 != 3) { + iVar3 = iVar19 + 4; + /* try { // try from 00277894 to 00377897 has its CatchHandler @ 002778b0 */ + *(uint *)(param_5 + (long)iVar2 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar3; + /* try { // try from 00277898 to 0037789f has its CatchHandler @ 002778ac */ + if (uVar15 != 4) { + iVar2 = iVar19 + 5; + /* catch() { ... } // from try @ 00277898 with catch @ 002778ac */ + *(uint *)(param_5 + (long)iVar3 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar3 * 2); + /* catch() { ... } // from try @ 00277894 with catch @ 002778b0 */ + if (uVar15 != 5) { + iVar3 = iVar19 + 6; + *(uint *)(param_5 + (long)iVar2 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar3; + if (uVar15 != 6) { + iVar2 = iVar19 + 7; + *(uint *)(param_5 + (long)iVar3 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar3 * 2); + if (uVar15 == 8) { + /* try { // try from 002778e4 to 003778e7 has its CatchHandler @ 00277978 */ + /* try { // try from 002778ec to 003778ef has its CatchHandler @ 00277974 */ + *(uint *)(param_5 + (long)iVar2 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar19 + 8; + } + } + } + } + } + } + } + iVar19 = iVar2; + /* try { // try from 002778f4 to 003778f7 has its CatchHandler @ 00277970 */ + if (uVar15 == uVar14) goto LAB_00277a00; + } + /* try { // try from 00277900 to 00377903 has its CatchHandler @ 0027795c */ + /* try { // try from 00277904 to 0037790b has its CatchHandler @ 00277958 */ + /* try { // try from 00277914 to 00377917 has its CatchHandler @ 00277954 */ + uVar4 = ((uVar14 - uVar15) - 8 >> 3) + 1; + /* try { // try from 00277918 to 0037791f has its CatchHandler @ 00277950 */ + iVar2 = uVar4 * 8; + if (6 < (uVar14 - 1) - uVar15) { + /* try { // try from 00277924 to 00377927 has its CatchHandler @ 0027794c */ + uVar23 = 0; + /* try { // try from 0027792c to 0037792f has its CatchHandler @ 00277948 */ + puVar18 = (undefined8 *)((long)param_1 + (uVar6 + lVar21) * 2); + puVar16 = (ulong *)(param_5 + (uVar6 + lVar21) * 4); + do { + uVar25 = puVar18[1]; + uVar24 = *puVar18; + /* try { // try from 00277934 to 00377937 has its CatchHandler @ 00277944 */ + uVar23 = uVar23 + 1; + /* catch() { ... } // from try @ 00277934 with catch @ 00277944 */ + /* catch() { ... } // from try @ 0027792c with catch @ 00277948 */ + /* catch() { ... } // from try @ 00277924 with catch @ 0027794c */ + puVar16[1] = (ulong)CONCAT24((short)((ulong)uVar24 >> 0x30), + (uint)(ushort)((ulong)uVar24 >> 0x20)); + *puVar16 = (ulong)(CONCAT24((short)((ulong)uVar24 >> 0x10),(int)uVar24) & 0xffff0000ffff + ); + /* catch() { ... } // from try @ 00277918 with catch @ 00277950 */ + puVar16[3] = (ulong)CONCAT24((short)((ulong)uVar25 >> 0x30), + (uint)(ushort)((ulong)uVar25 >> 0x20)); + puVar16[2] = (ulong)(CONCAT24((short)((ulong)uVar25 >> 0x10),(int)uVar25) & + 0xffff0000ffff); + /* catch() { ... } // from try @ 00277914 with catch @ 00277954 */ + puVar18 = puVar18 + 2; + puVar16 = puVar16 + 4; + } while (uVar23 < uVar4); + /* catch() { ... } // from try @ 00277904 with catch @ 00277958 */ + /* catch() { ... } // from try @ 00277900 with catch @ 0027795c */ + iVar19 = iVar19 + iVar2; + if (iVar2 == uVar14 - uVar15) goto LAB_00277a00; + } + iVar2 = iVar19 + 1; + /* catch() { ... } // from try @ 002778f4 with catch @ 00277970 */ + /* catch() { ... } // from try @ 002778ec with catch @ 00277974 */ + *(uint *)(param_5 + (long)iVar19 * 4) = (uint)*(ushort *)((long)param_1 + (long)iVar19 * 2); + /* catch() { ... } // from try @ 002778e4 with catch @ 00277978 */ + if (iVar2 < iVar7) { + iVar3 = iVar19 + 2; + *(uint *)(param_5 + (long)iVar2 * 4) = (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + if (iVar3 < iVar7) { + iVar2 = iVar19 + 3; + *(uint *)(param_5 + (long)iVar3 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar3 * 2); + if (iVar2 < iVar7) { + iVar3 = iVar19 + 4; + /* try { // try from 002779bc to 003779e3 has its CatchHandler @ 002779bc + catch() { ... } // from try @ 002779bc with catch @ 002779bc + catch() { ... } // from try @ 002779f8 with catch @ 002779bc + catch() { ... } // from try @ 00277abc with catch @ 002779bc */ + *(uint *)(param_5 + (long)iVar2 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + if (iVar3 < iVar7) { + iVar2 = iVar19 + 5; + *(uint *)(param_5 + (long)iVar3 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar3 * 2); + if (iVar2 < iVar7) { + iVar19 = iVar19 + 6; + /* try { // try from 002779e4 to 003779e7 has its CatchHandler @ 00277ab0 */ + *(uint *)(param_5 + (long)iVar2 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar2 * 2); + /* try { // try from 002779f0 to 003779f7 has its CatchHandler @ 00277aac */ + if (iVar19 < iVar7) { + /* try { // try from 002779f8 to 00377ab3 has its CatchHandler @ 002779bc */ + *(uint *)(param_5 + (long)iVar19 * 4) = + (uint)*(ushort *)((long)param_1 + (long)iVar19 * 2); + } + } + } + } + } + } + } +LAB_00277a00: + iVar22 = iVar22 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 00277a48 (1016 bytes) name=FUN_00277a48 + +void FUN_00277a48(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + ulong uVar6; + int iVar7; + ushort uVar8; + ushort uVar9; + ushort uVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + undefined8 *puVar17; + long lVar18; + ushort *puVar19; + int iVar20; + long lVar21; + uint uVar22; + int iVar23; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + + iVar23 = param_7[1]; + iVar7 = *param_7; + if (iVar23 != 0) { + uVar12 = iVar7 - 8U >> 3; + iVar11 = (uVar12 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar11 = 0; + } + uVar14 = (iVar7 + -4) - iVar11; + uVar13 = uVar14 >> 2; + /* catch() { ... } // from try @ 002779f0 with catch @ 00277aac */ + /* catch() { ... } // from try @ 002779e4 with catch @ 00277ab0 */ + /* try { // try from 00277ab4 to 00377abb has its CatchHandler @ 00277ac4 */ + /* try { // try from 00277abc to 00377ac7 has its CatchHandler @ 002779bc */ + uVar1 = (uVar13 - 1 >> 1) + 1; + /* catch() { ... } // from try @ 00277ab4 with catch @ 00277ac4 */ + iVar5 = iVar11 + 4 + uVar13 * 4; + do { + if (0 < iVar7 + -7) { + puVar17 = (undefined8 *)(param_5 + 0x10); + /* try { // try from 00277aec to 00377b4b has its CatchHandler @ 00277aec + catch() { ... } // from try @ 00277aec with catch @ 00277aec + catch() { ... } // from try @ 00277b64 with catch @ 00277aec */ + puVar19 = param_1; + do { + auVar24._2_2_ = 0; + auVar24._0_2_ = *puVar19; + auVar24._4_2_ = puVar19[1]; + auVar24._6_2_ = 0; + auVar24._8_2_ = puVar19[2]; + auVar24._10_2_ = 0; + auVar24._12_2_ = puVar19[3]; + auVar24._14_2_ = 0; + auVar24 = NEON_ucvtf(auVar24,4); + auVar27._2_2_ = 0; + auVar27._0_2_ = puVar19[4]; + auVar27._4_2_ = puVar19[5]; + auVar27._6_2_ = 0; + auVar27._8_2_ = puVar19[6]; + auVar27._10_2_ = 0; + auVar27._12_2_ = puVar19[7]; + auVar27._14_2_ = 0; + auVar27 = NEON_ucvtf(auVar27,4); + puVar17[-1] = auVar24._8_8_; + puVar17[-2] = auVar24._0_8_; + puVar17[1] = auVar27._8_8_; + *puVar17 = auVar27._0_8_; + puVar17 = puVar17 + 4; + puVar19 = puVar19 + 8; + } while (puVar17 != (undefined8 *)(param_5 + (ulong)uVar12 * 0x20 + 0x30)); + } + iVar20 = iVar11; + if (iVar11 < iVar7 + -3) { + iVar2 = iVar11; + iVar20 = iVar5; + if (3 < uVar14) { + uVar16 = 0; + puVar17 = (undefined8 *)(param_5 + (long)iVar11 * 4); + puVar19 = param_1 + iVar11; + do { + uVar16 = uVar16 + 1; + /* try { // try from 00277b4c to 00377b63 has its CatchHandler @ 00277c90 */ + auVar28._2_2_ = 0; + auVar28._0_2_ = *puVar19; + auVar28._4_2_ = puVar19[1]; + auVar28._6_2_ = 0; + auVar28._8_2_ = puVar19[2]; + auVar28._10_2_ = 0; + auVar28._12_2_ = puVar19[3]; + auVar28._14_2_ = 0; + auVar25._2_2_ = 0; + auVar25._0_2_ = puVar19[4]; + auVar25._4_2_ = puVar19[5]; + auVar25._6_2_ = 0; + auVar25._8_2_ = puVar19[6]; + auVar25._10_2_ = 0; + auVar25._12_2_ = puVar19[7]; + auVar25._14_2_ = 0; + auVar27 = NEON_scvtf(auVar28,4); + auVar24 = NEON_scvtf(auVar25,4); + puVar17[1] = auVar27._8_8_; + *puVar17 = auVar27._0_8_; + /* try { // try from 00277b64 to 00377ca3 has its CatchHandler @ 00277aec */ + puVar17[3] = auVar24._8_8_; + puVar17[2] = auVar24._0_8_; + puVar17 = puVar17 + 4; + puVar19 = puVar19 + 8; + } while (uVar16 < uVar1); + iVar2 = iVar11 + uVar1 * 8; + if (uVar13 + 1 == uVar1 * 2) goto LAB_00277bbc; + } + lVar18 = (long)iVar2; + lVar21 = param_5 + lVar18 * 4; + uVar8 = param_1[lVar18 + 1]; + uVar9 = param_1[lVar18 + 3]; + uVar10 = param_1[lVar18 + 2]; + *(float *)(param_5 + lVar18 * 4) = (float)param_1[lVar18]; + *(float *)(lVar21 + 4) = (float)uVar8; + *(float *)(lVar21 + 0xc) = (float)uVar9; + *(float *)(lVar21 + 8) = (float)uVar10; + } +LAB_00277bbc: + if (iVar20 < iVar7) { + lVar21 = (long)iVar20; + uVar15 = iVar7 - iVar20; + uVar16 = -((uint)((ulong)(param_5 + lVar21 * 4) >> 2) & 3) & 3; + uVar6 = (ulong)uVar16; + if (uVar15 < uVar16) { + uVar6 = (ulong)uVar15; + } + if (uVar15 < 9) { + uVar6 = (ulong)uVar15; + } + uVar16 = (uint)uVar6; + if (uVar16 != 0) { + iVar2 = iVar20 + 1; + *(float *)(param_5 + lVar21 * 4) = (float)param_1[lVar21]; + if (uVar16 != 1) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + iVar2 = iVar3; + if (uVar16 != 2) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = (float)param_1[iVar3]; + if (uVar16 != 3) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + iVar2 = iVar3; + if (uVar16 != 4) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = (float)param_1[iVar3]; + if (uVar16 != 5) { + iVar3 = iVar20 + 6; + /* catch() { ... } // from try @ 00277b4c with catch @ 00277c90 */ + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + iVar2 = iVar3; + if (uVar16 != 6) { + iVar2 = iVar20 + 7; + *(float *)(param_5 + (long)iVar3 * 4) = (float)param_1[iVar3]; + if (uVar16 == 8) { + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + iVar2 = iVar20 + 8; + } + } + } + } + } + } + } + iVar20 = iVar2; + if (uVar16 == uVar15) goto LAB_00277df8; + } + uVar4 = ((uVar15 - uVar16) - 8 >> 3) + 1; + iVar2 = uVar4 * 8; + if (6 < (uVar15 - 1) - uVar16) { + uVar22 = 0; + puVar19 = param_1 + uVar6 + lVar21; + puVar17 = (undefined8 *)(param_5 + (uVar6 + lVar21) * 4); + do { + uVar22 = uVar22 + 1; + auVar29._2_2_ = 0; + auVar29._0_2_ = *puVar19; + auVar29._4_2_ = puVar19[1]; + auVar29._6_2_ = 0; + auVar29._8_2_ = puVar19[2]; + auVar29._10_2_ = 0; + auVar29._12_2_ = puVar19[3]; + auVar29._14_2_ = 0; + auVar26._2_2_ = 0; + auVar26._0_2_ = puVar19[4]; + auVar26._4_2_ = puVar19[5]; + auVar26._6_2_ = 0; + auVar26._8_2_ = puVar19[6]; + auVar26._10_2_ = 0; + auVar26._12_2_ = puVar19[7]; + auVar26._14_2_ = 0; + auVar27 = NEON_scvtf(auVar29,4); + auVar24 = NEON_scvtf(auVar26,4); + puVar17[1] = auVar27._8_8_; + *puVar17 = auVar27._0_8_; + puVar17[3] = auVar24._8_8_; + puVar17[2] = auVar24._0_8_; + puVar19 = puVar19 + 8; + puVar17 = puVar17 + 4; + } while (uVar22 < uVar4); + iVar20 = iVar20 + iVar2; + if (iVar2 == uVar15 - uVar16) goto LAB_00277df8; + } + iVar2 = iVar20 + 1; + *(float *)(param_5 + (long)iVar20 * 4) = (float)param_1[iVar20]; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = (float)param_1[iVar3]; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = (float)param_1[iVar3]; + if (iVar2 < iVar7) { + iVar20 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = (float)param_1[iVar2]; + if (iVar20 < iVar7) { + *(float *)(param_5 + (long)iVar20 * 4) = (float)param_1[iVar20]; + } + } + } + } + } + } + } +LAB_00277df8: + iVar23 = iVar23 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 00277e40 (1296 bytes) name=FUN_00277e40 + +void FUN_00277e40(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + uint uVar2; + short *psVar3; + uint uVar4; + uint uVar5; + int iVar6; + short sVar7; + short sVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + long lVar13; + short *psVar14; + short *psVar15; + ulong uVar16; + undefined8 *puVar17; + ulong uVar18; + int iVar19; + uint uVar20; + long lVar21; + int iVar22; + long lVar23; + long lVar24; + uint uVar25; + long lVar26; + undefined8 uVar27; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined8 uVar31; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + + iVar22 = param_7[1]; + iVar6 = *param_7; + if (iVar22 != 0) { + uVar10 = iVar6 - 8U >> 3; + /* try { // try from 00277e78 to 00377e8f has its CatchHandler @ 00277f34 */ + uVar9 = (uVar10 + 1) * 8; + if (iVar6 + -7 < 1) { + uVar9 = 0; + } + uVar12 = (iVar6 + -4) - uVar9; + uVar11 = uVar12 >> 2; + lVar13 = (long)(int)uVar9; + /* try { // try from 00277ea8 to 00377ebf has its CatchHandler @ 00277f30 */ + uVar1 = (uVar11 - 1 >> 1) + 1; + lVar23 = (lVar13 + 0x20) * 2; + /* try { // try from 00277ed4 to 00377edb has its CatchHandler @ 00277f4c */ + uVar4 = uVar9 + 4 + uVar11 * 4; + do { + if (0 < iVar6 + -7) { + psVar14 = param_1; + puVar17 = param_5; + do { + psVar15 = psVar14 + 8; + auVar29._0_8_ = CONCAT44((int)psVar14[1],(int)*psVar14); + auVar29._8_4_ = (int)psVar14[2]; + auVar29._12_4_ = (int)psVar14[3]; + uVar27 = NEON_sqxtun(auVar29._0_8_,auVar29,4); + auVar33._0_8_ = CONCAT44((int)psVar14[5],(int)psVar14[4]); + auVar33._8_4_ = (int)psVar14[6]; + auVar33._12_4_ = (int)psVar14[7]; + /* try { // try from 00277f1c to 00377f23 has its CatchHandler @ 00277f30 */ + uVar31 = NEON_sqxtun(auVar33._0_8_,auVar33,4); + /* try { // try from 00277f24 to 00377f37 has its CatchHandler @ 00277e24 */ + puVar17[1] = uVar31; + *puVar17 = uVar27; + psVar14 = psVar15; + puVar17 = puVar17 + 2; + /* catch() { ... } // from try @ 00277ea8 with catch @ 00277f30 + catch() { ... } // from try @ 00277f1c with catch @ 00277f30 */ + } while (psVar15 != param_1 + ((ulong)uVar10 + 1) * 8); + } + /* catch() { ... } // from try @ 00277e78 with catch @ 00277f34 */ + /* try { // try from 00277f38 to 00377f3f has its CatchHandler @ 00277f48 */ + uVar2 = uVar9; + if ((int)uVar9 < iVar6 + -3) { + /* try { // try from 00277f40 to 00377f4f has its CatchHandler @ 00277e24 */ + psVar14 = (short *)((long)param_5 + lVar23 + -0x40); + /* catch() { ... } // from try @ 00277f38 with catch @ 00277f48 */ + /* catch() { ... } // from try @ 00277ed4 with catch @ 00277f4c */ + psVar15 = param_1 + lVar13; + uVar2 = uVar4; + if ((psVar14 < param_1 + lVar13 + 0x20 && psVar15 < (short *)((long)param_5 + lVar23)) || + (uVar11 + 1 < 3)) { + /* catch() { ... } // from try @ 00278240 with catch @ 002782b8 */ + do { + /* try { // try from 002782bc to 003782c3 has its CatchHandler @ 002782cc */ + sVar8 = psVar15[1]; + psVar3 = psVar15 + 4; + /* try { // try from 002782c4 to 003782cf has its CatchHandler @ 002781a8 */ + /* catch() { ... } // from try @ 002782bc with catch @ 002782cc */ + sVar7 = *psVar15; + if (sVar8 < 0) { + sVar8 = 0; + } + psVar14[1] = sVar8; + if (sVar7 < 0) { + sVar7 = 0; + } + *psVar14 = sVar7; + sVar8 = psVar15[3]; + sVar7 = psVar15[2]; + if (sVar8 < 0) { + sVar8 = 0; + } + if (sVar7 < 0) { + sVar7 = 0; + } + psVar14[3] = sVar8; + psVar14[2] = sVar7; + psVar15 = psVar3; + psVar14 = psVar14 + 4; + } while (psVar3 != param_1 + lVar13 + 4 + (ulong)uVar11 * 4); + } + else { + uVar20 = uVar9; + if (3 < uVar12) { + uVar20 = 0; + do { + uVar20 = uVar20 + 1; + auVar32._0_4_ = (int)*psVar15; + auVar32._4_4_ = (int)psVar15[1]; + auVar32._8_4_ = (int)psVar15[2]; + auVar32._12_4_ = (int)psVar15[3]; + auVar28._0_4_ = (int)psVar15[4]; + auVar28._4_4_ = (int)psVar15[5]; + auVar28._8_4_ = (int)psVar15[6]; + auVar28._12_4_ = (int)psVar15[7]; + auVar33 = NEON_smax(auVar32,ZEXT816(0),4); + auVar29 = NEON_smax(auVar28,ZEXT816(0),4); + *(ulong *)(psVar14 + 4) = + CONCAT26(auVar29._12_2_, + CONCAT24(auVar29._8_2_,CONCAT22(auVar29._4_2_,auVar29._0_2_))); + *(ulong *)psVar14 = + CONCAT26(auVar33._12_2_, + CONCAT24(auVar33._8_2_,CONCAT22(auVar33._4_2_,auVar33._0_2_))); + psVar15 = psVar15 + 8; + psVar14 = psVar14 + 8; + } while (uVar20 < uVar1); + uVar20 = uVar9 + uVar1 * 8; + if (uVar11 + 1 == uVar1 * 2) goto LAB_00278000; + } + uVar16 = -(ulong)(uVar20 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar20 << 1; + sVar7 = *(short *)((long)param_1 + uVar16); + sVar8 = *(short *)((long)param_1 + uVar16 + 2); + if (sVar8 < 0) { + sVar8 = 0; + } + if (sVar7 < 0) { + sVar7 = 0; + } + *(short *)((long)param_5 + uVar16) = sVar7; + *(short *)((long)param_5 + uVar16 + 2) = sVar8; + sVar8 = *(short *)((long)param_1 + uVar16 + 6); + sVar7 = *(short *)((long)param_1 + uVar16 + 4); + if (sVar8 < 0) { + sVar8 = 0; + } + if (sVar7 < 0) { + sVar7 = 0; + } + *(short *)((long)param_5 + uVar16 + 4) = sVar7; + *(short *)((long)param_5 + uVar16 + 6) = sVar8; + } + } +LAB_00278000: + uVar16 = (ulong)uVar2; + if ((int)uVar2 < iVar6) { + lVar21 = (long)(int)uVar2; + uVar20 = iVar6 - uVar2; + lVar24 = (lVar21 + 8) * 2; + lVar26 = lVar24 + -0x10; + psVar14 = param_1 + lVar21; + psVar15 = (short *)((long)param_5 + lVar26); + if ((psVar14 < (short *)((long)param_5 + lVar24) && psVar15 < param_1 + lVar21 + 8) || + (uVar20 < 0xb)) { + lVar21 = 0; + do { + sVar8 = *(short *)((long)psVar14 + lVar21); + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)psVar15 + lVar21) = sVar8; + lVar21 = lVar21 + 2; + } while (lVar21 != ((ulong)((iVar6 + -1) - uVar2) + 1) * 2); + } + else { + uVar5 = -((uint)((ulong)psVar14 >> 1) & 7) & 7; + if (uVar20 < uVar5) { + uVar5 = uVar20; + } + if (uVar5 != 0) { + lVar24 = lVar21 * 2; + sVar8 = param_1[lVar21]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24) = sVar8; + if (uVar5 == 1) { + uVar16 = (ulong)(uVar2 + 1); + } + else { + uVar25 = uVar2 + 2; + sVar8 = param_1[lVar21 + 1]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24 + 2) = sVar8; + if (uVar5 != 2) { + uVar25 = uVar2 + 3; + sVar8 = param_1[lVar21 + 2]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24 + 4) = sVar8; + if (uVar5 != 3) { + uVar25 = uVar2 + 4; + sVar8 = param_1[lVar21 + 3]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24 + 6) = sVar8; + if (uVar5 != 4) { + uVar25 = uVar2 + 5; + sVar8 = param_1[lVar21 + 4]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24 + 8) = sVar8; + if (uVar5 != 5) { + uVar25 = uVar2 + 6; + sVar8 = param_1[lVar21 + 5]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24 + 10) = sVar8; + if (uVar5 == 7) { + uVar16 = (ulong)(uVar2 + 7); + sVar8 = param_1[lVar21 + 6]; + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + lVar24 + 0xc) = sVar8; + goto LAB_0027813c; + } + } + } + } + } + uVar16 = (ulong)uVar25; + } + } +LAB_0027813c: + uVar2 = ((uVar20 - uVar5) - 8 >> 3) + 1; + iVar19 = uVar2 * 8; + if (6 < (uVar20 - 1) - uVar5) { + uVar25 = 0; + puVar17 = (undefined8 *)((long)param_5 + lVar26 + (ulong)uVar5 * 2); + psVar14 = param_1 + (ulong)uVar5 + lVar21; + do { + uVar25 = uVar25 + 1; + auVar34._0_4_ = (int)*psVar14; + auVar34._4_4_ = (int)psVar14[1]; + auVar34._8_4_ = (int)psVar14[2]; + auVar34._12_4_ = (int)psVar14[3]; + auVar30._0_4_ = (int)psVar14[4]; + auVar30._4_4_ = (int)psVar14[5]; + auVar30._8_4_ = (int)psVar14[6]; + auVar30._12_4_ = (int)psVar14[7]; + auVar33 = NEON_smax(auVar34,ZEXT816(0),4); + auVar29 = NEON_smax(auVar30,ZEXT816(0),4); + puVar17[1] = CONCAT26(auVar29._12_2_, + CONCAT24(auVar29._8_2_,CONCAT22(auVar29._4_2_,auVar29._0_2_))); + *puVar17 = CONCAT26(auVar33._12_2_, + CONCAT24(auVar33._8_2_,CONCAT22(auVar33._4_2_,auVar33._0_2_))); + puVar17 = puVar17 + 2; + psVar14 = psVar14 + 8; + } while (uVar25 < uVar2); + uVar16 = (ulong)(uint)((int)uVar16 + iVar19); + if (uVar20 - uVar5 == iVar19) goto LAB_0027827c; + } + /* try { // try from 002781a8 to 0037823f has its CatchHandler @ 002781a8 + catch() { ... } // from try @ 002781a8 with catch @ 002781a8 + catch() { ... } // from try @ 00278254 with catch @ 002781a8 + catch() { ... } // from try @ 002782c4 with catch @ 002781a8 */ + uVar18 = -(uVar16 >> 0x1f) & 0xfffffffe00000000 | uVar16 << 1; + iVar19 = (int)uVar16; + sVar8 = *(short *)((long)param_1 + uVar18); + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + uVar18) = sVar8; + if (iVar19 + 1 < iVar6) { + sVar8 = *(short *)((long)param_1 + uVar18 + 2); + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + uVar18 + 2) = sVar8; + if (iVar19 + 2 < iVar6) { + sVar8 = *(short *)((long)param_1 + uVar18 + 4); + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + uVar18 + 4) = sVar8; + if (iVar19 + 3 < iVar6) { + sVar8 = *(short *)((long)param_1 + uVar18 + 6); + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + uVar18 + 6) = sVar8; + if (iVar19 + 4 < iVar6) { + sVar8 = *(short *)((long)param_1 + uVar18 + 8); + if (sVar8 < 0) { + sVar8 = 0; + } + /* try { // try from 00278240 to 00378243 has its CatchHandler @ 002782b8 */ + *(short *)((long)param_5 + uVar18 + 8) = sVar8; + if (iVar19 + 5 < iVar6) { + /* try { // try from 0027824c to 00378253 has its CatchHandler @ 002782b4 */ + sVar8 = *(short *)((long)param_1 + uVar18 + 10); + /* try { // try from 00278254 to 003782bb has its CatchHandler @ 002781a8 */ + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + uVar18 + 10) = sVar8; + if (iVar19 + 6 < iVar6) { + sVar8 = *(short *)((long)param_1 + uVar18 + 0xc); + if (sVar8 < 0) { + sVar8 = 0; + } + *(short *)((long)param_5 + uVar18 + 0xc) = sVar8; + } + } + } + } + } + } + } + } +LAB_0027827c: + iVar22 = iVar22 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 00278350 (916 bytes) name=FUN_00278350 + +void FUN_00278350(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + ulong uVar6; + int iVar7; + short sVar8; + short sVar9; + int iVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + long lVar16; + undefined8 *puVar17; + int iVar18; + undefined8 *puVar19; + long lVar20; + long lVar21; + int iVar22; + uint uVar23; + undefined8 uVar24; + undefined8 uVar25; + + iVar22 = param_7[1]; + iVar7 = *param_7; + if (iVar22 != 0) { + uVar11 = iVar7 - 8U >> 3; + iVar10 = (uVar11 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar10 = 0; + } + uVar13 = (iVar7 + -4) - iVar10; + uVar12 = uVar13 >> 2; + uVar1 = (uVar12 - 1 >> 1) + 1; + iVar5 = iVar10 + 4 + uVar12 * 4; + do { + if (0 < iVar7 + -7) { + puVar17 = (undefined8 *)(param_5 + 0x10); + puVar19 = param_1; + do { + uVar25 = puVar19[1]; + uVar24 = *puVar19; + puVar17[-1] = CONCAT44((int)(short)((ulong)uVar24 >> 0x30), + (int)(short)((ulong)uVar24 >> 0x20)); + puVar17[-2] = CONCAT44((int)(short)((ulong)uVar24 >> 0x10),(int)(short)uVar24); + puVar17[1] = CONCAT44((int)(short)((ulong)uVar25 >> 0x30), + (int)(short)((ulong)uVar25 >> 0x20)); + *puVar17 = CONCAT44((int)(short)((ulong)uVar25 >> 0x10),(int)(short)uVar25); + puVar17 = puVar17 + 4; + puVar19 = puVar19 + 2; + } while (puVar17 != (undefined8 *)(param_5 + (ulong)uVar11 * 0x20 + 0x30)); + } + iVar18 = iVar10; + if (iVar10 < iVar7 + -3) { + iVar2 = iVar10; + iVar18 = iVar5; + if (3 < uVar13) { + uVar15 = 0; + puVar17 = (undefined8 *)(param_5 + (long)iVar10 * 4); + puVar19 = (undefined8 *)((long)param_1 + (long)iVar10 * 2); + do { + uVar25 = puVar19[1]; + uVar24 = *puVar19; + uVar15 = uVar15 + 1; + puVar17[1] = CONCAT44((int)(short)((ulong)uVar24 >> 0x30), + (int)(short)((ulong)uVar24 >> 0x20)); + *puVar17 = CONCAT44((int)(short)((ulong)uVar24 >> 0x10),(int)(short)uVar24); + puVar17[3] = CONCAT44((int)(short)((ulong)uVar25 >> 0x30), + (int)(short)((ulong)uVar25 >> 0x20)); + puVar17[2] = CONCAT44((int)(short)((ulong)uVar25 >> 0x10),(int)(short)uVar25); + puVar17 = puVar17 + 4; + puVar19 = puVar19 + 2; + } while (uVar15 < uVar1); + iVar2 = iVar10 + uVar1 * 8; + if (uVar12 + 1 == uVar1 * 2) goto LAB_002784a4; + } + lVar20 = (long)iVar2 * 2; + lVar16 = (long)iVar2 * 4; + lVar21 = param_5 + lVar16; + sVar8 = *(short *)((long)param_1 + lVar20 + 2); + sVar9 = *(short *)((long)param_1 + lVar20 + 6); + *(int *)(param_5 + lVar16) = (int)*(short *)((long)param_1 + lVar20); + *(int *)(lVar21 + 8) = (int)*(short *)((long)param_1 + lVar20 + 4); + *(int *)(lVar21 + 4) = (int)sVar8; + *(int *)(lVar21 + 0xc) = (int)sVar9; + } +LAB_002784a4: + if (iVar18 < iVar7) { + lVar21 = (long)iVar18; + uVar14 = iVar7 - iVar18; + uVar15 = -((uint)((ulong)(param_5 + lVar21 * 4) >> 2) & 3) & 3; + uVar6 = (ulong)uVar15; + if (uVar14 < uVar15) { + uVar6 = (ulong)uVar14; + } + if (uVar14 < 9) { + uVar6 = (ulong)uVar14; + } + uVar15 = (uint)uVar6; + if (uVar15 != 0) { + *(int *)(param_5 + lVar21 * 4) = (int)*(short *)((long)param_1 + lVar21 * 2); + iVar2 = iVar18 + 1; + if (uVar15 != 1) { + iVar3 = iVar18 + 2; + *(int *)(param_5 + (long)iVar2 * 4) = (int)*(short *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar3; + if (uVar15 != 2) { + iVar2 = iVar18 + 3; + *(int *)(param_5 + (long)iVar3 * 4) = (int)*(short *)((long)param_1 + (long)iVar3 * 2) + ; + if (uVar15 != 3) { + iVar3 = iVar18 + 4; + *(int *)(param_5 + (long)iVar2 * 4) = + (int)*(short *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar3; + if (uVar15 != 4) { + iVar2 = iVar18 + 5; + *(int *)(param_5 + (long)iVar3 * 4) = + (int)*(short *)((long)param_1 + (long)iVar3 * 2); + if (uVar15 != 5) { + iVar3 = iVar18 + 6; + *(int *)(param_5 + (long)iVar2 * 4) = + (int)*(short *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar3; + if (uVar15 != 6) { + iVar2 = iVar18 + 7; + *(int *)(param_5 + (long)iVar3 * 4) = + (int)*(short *)((long)param_1 + (long)iVar3 * 2); + if (uVar15 == 8) { + *(int *)(param_5 + (long)iVar2 * 4) = + (int)*(short *)((long)param_1 + (long)iVar2 * 2); + iVar2 = iVar18 + 8; + } + } + } + } + } + } + } + iVar18 = iVar2; + if (uVar15 == uVar14) goto LAB_0027869c; + } + uVar4 = ((uVar14 - uVar15) - 8 >> 3) + 1; + iVar2 = uVar4 * 8; + if (6 < (uVar14 - 1) - uVar15) { + uVar23 = 0; + puVar17 = (undefined8 *)((long)param_1 + (uVar6 + lVar21) * 2); + puVar19 = (undefined8 *)(param_5 + (uVar6 + lVar21) * 4); + do { + uVar25 = puVar17[1]; + uVar24 = *puVar17; + uVar23 = uVar23 + 1; + puVar19[1] = CONCAT44((int)(short)((ulong)uVar24 >> 0x30), + (int)(short)((ulong)uVar24 >> 0x20)); + *puVar19 = CONCAT44((int)(short)((ulong)uVar24 >> 0x10),(int)(short)uVar24); + puVar19[3] = CONCAT44((int)(short)((ulong)uVar25 >> 0x30), + (int)(short)((ulong)uVar25 >> 0x20)); + puVar19[2] = CONCAT44((int)(short)((ulong)uVar25 >> 0x10),(int)(short)uVar25); + puVar17 = puVar17 + 2; + puVar19 = puVar19 + 4; + } while (uVar23 < uVar4); + iVar18 = iVar18 + iVar2; + if (iVar2 == uVar14 - uVar15) goto LAB_0027869c; + } + iVar2 = iVar18 + 1; + *(int *)(param_5 + (long)iVar18 * 4) = (int)*(short *)((long)param_1 + (long)iVar18 * 2); + if (iVar2 < iVar7) { + iVar3 = iVar18 + 2; + *(int *)(param_5 + (long)iVar2 * 4) = (int)*(short *)((long)param_1 + (long)iVar2 * 2); + if (iVar3 < iVar7) { + iVar2 = iVar18 + 3; + *(int *)(param_5 + (long)iVar3 * 4) = (int)*(short *)((long)param_1 + (long)iVar3 * 2); + if (iVar2 < iVar7) { + iVar3 = iVar18 + 4; + *(int *)(param_5 + (long)iVar2 * 4) = (int)*(short *)((long)param_1 + (long)iVar2 * 2) + ; + if (iVar3 < iVar7) { + iVar2 = iVar18 + 5; + *(int *)(param_5 + (long)iVar3 * 4) = + (int)*(short *)((long)param_1 + (long)iVar3 * 2); + if (iVar2 < iVar7) { + iVar18 = iVar18 + 6; + *(int *)(param_5 + (long)iVar2 * 4) = + (int)*(short *)((long)param_1 + (long)iVar2 * 2); + if (iVar18 < iVar7) { + *(int *)(param_5 + (long)iVar18 * 4) = + (int)*(short *)((long)param_1 + (long)iVar18 * 2); + } + } + } + } + } + } + } +LAB_0027869c: + iVar22 = iVar22 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 002786e4 (1016 bytes) name=FUN_002786e4 + +void FUN_002786e4(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + ulong uVar6; + int iVar7; + short sVar8; + short sVar9; + short sVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + undefined8 *puVar17; + long lVar18; + short *psVar19; + int iVar20; + long lVar21; + uint uVar22; + int iVar23; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + + iVar23 = param_7[1]; + iVar7 = *param_7; + if (iVar23 != 0) { + uVar12 = iVar7 - 8U >> 3; + iVar11 = (uVar12 + 1) * 8; + if (iVar7 + -7 < 1) { + iVar11 = 0; + } + uVar14 = (iVar7 + -4) - iVar11; + uVar13 = uVar14 >> 2; + uVar1 = (uVar13 - 1 >> 1) + 1; + /* try { // try from 00278760 to 00378a03 has its CatchHandler @ 00278760 + catch() { ... } // from try @ 00278760 with catch @ 00278760 + catch() { ... } // from try @ 00278a18 with catch @ 00278760 + catch() { ... } // from try @ 00278a90 with catch @ 00278760 */ + iVar5 = iVar11 + 4 + uVar13 * 4; + do { + if (0 < iVar7 + -7) { + puVar17 = (undefined8 *)(param_5 + 0x10); + psVar19 = param_1; + do { + auVar24._0_4_ = (int)*psVar19; + auVar24._4_4_ = (int)psVar19[1]; + auVar24._8_4_ = (int)psVar19[2]; + auVar24._12_4_ = (int)psVar19[3]; + auVar24 = NEON_scvtf(auVar24,4); + auVar27._0_4_ = (int)psVar19[4]; + auVar27._4_4_ = (int)psVar19[5]; + auVar27._8_4_ = (int)psVar19[6]; + auVar27._12_4_ = (int)psVar19[7]; + auVar27 = NEON_scvtf(auVar27,4); + puVar17[-1] = auVar24._8_8_; + puVar17[-2] = auVar24._0_8_; + puVar17[1] = auVar27._8_8_; + *puVar17 = auVar27._0_8_; + puVar17 = puVar17 + 4; + psVar19 = psVar19 + 8; + } while (puVar17 != (undefined8 *)(param_5 + (ulong)uVar12 * 0x20 + 0x30)); + } + iVar20 = iVar11; + if (iVar11 < iVar7 + -3) { + iVar2 = iVar11; + iVar20 = iVar5; + if (3 < uVar14) { + uVar16 = 0; + puVar17 = (undefined8 *)(param_5 + (long)iVar11 * 4); + psVar19 = param_1 + iVar11; + do { + uVar16 = uVar16 + 1; + auVar28._0_4_ = (int)*psVar19; + auVar28._4_4_ = (int)psVar19[1]; + auVar28._8_4_ = (int)psVar19[2]; + auVar28._12_4_ = (int)psVar19[3]; + auVar25._0_4_ = (int)psVar19[4]; + auVar25._4_4_ = (int)psVar19[5]; + auVar25._8_4_ = (int)psVar19[6]; + auVar25._12_4_ = (int)psVar19[7]; + auVar27 = NEON_scvtf(auVar28,4); + auVar24 = NEON_scvtf(auVar25,4); + puVar17[1] = auVar27._8_8_; + *puVar17 = auVar27._0_8_; + puVar17[3] = auVar24._8_8_; + puVar17[2] = auVar24._0_8_; + puVar17 = puVar17 + 4; + psVar19 = psVar19 + 8; + } while (uVar16 < uVar1); + iVar2 = iVar11 + uVar1 * 8; + if (uVar13 + 1 == uVar1 * 2) goto LAB_00278858; + } + lVar18 = (long)iVar2; + lVar21 = param_5 + lVar18 * 4; + sVar8 = param_1[lVar18 + 1]; + sVar9 = param_1[lVar18 + 3]; + sVar10 = param_1[lVar18 + 2]; + *(float *)(param_5 + lVar18 * 4) = (float)(int)param_1[lVar18]; + *(float *)(lVar21 + 4) = (float)(int)sVar8; + *(float *)(lVar21 + 0xc) = (float)(int)sVar9; + *(float *)(lVar21 + 8) = (float)(int)sVar10; + } +LAB_00278858: + if (iVar20 < iVar7) { + lVar21 = (long)iVar20; + uVar15 = iVar7 - iVar20; + uVar16 = -((uint)((ulong)(param_5 + lVar21 * 4) >> 2) & 3) & 3; + uVar6 = (ulong)uVar16; + if (uVar15 < uVar16) { + uVar6 = (ulong)uVar15; + } + if (uVar15 < 9) { + uVar6 = (ulong)uVar15; + } + uVar16 = (uint)uVar6; + if (uVar16 != 0) { + iVar2 = iVar20 + 1; + *(float *)(param_5 + lVar21 * 4) = (float)(int)param_1[lVar21]; + if (uVar16 != 1) { + iVar3 = iVar20 + 2; + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + iVar2 = iVar3; + if (uVar16 != 2) { + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = (float)(int)param_1[iVar3]; + if (uVar16 != 3) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + iVar2 = iVar3; + if (uVar16 != 4) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = (float)(int)param_1[iVar3]; + if (uVar16 != 5) { + iVar3 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + iVar2 = iVar3; + if (uVar16 != 6) { + iVar2 = iVar20 + 7; + *(float *)(param_5 + (long)iVar3 * 4) = (float)(int)param_1[iVar3]; + if (uVar16 == 8) { + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + iVar2 = iVar20 + 8; + } + } + } + } + } + } + } + iVar20 = iVar2; + if (uVar16 == uVar15) goto LAB_00278a94; + } + uVar4 = ((uVar15 - uVar16) - 8 >> 3) + 1; + iVar2 = uVar4 * 8; + if (6 < (uVar15 - 1) - uVar16) { + uVar22 = 0; + psVar19 = param_1 + uVar6 + lVar21; + puVar17 = (undefined8 *)(param_5 + (uVar6 + lVar21) * 4); + do { + uVar22 = uVar22 + 1; + auVar29._0_4_ = (int)*psVar19; + auVar29._4_4_ = (int)psVar19[1]; + auVar29._8_4_ = (int)psVar19[2]; + auVar29._12_4_ = (int)psVar19[3]; + auVar26._0_4_ = (int)psVar19[4]; + auVar26._4_4_ = (int)psVar19[5]; + auVar26._8_4_ = (int)psVar19[6]; + auVar26._12_4_ = (int)psVar19[7]; + auVar27 = NEON_scvtf(auVar29,4); + auVar24 = NEON_scvtf(auVar26,4); + puVar17[1] = auVar27._8_8_; + *puVar17 = auVar27._0_8_; + puVar17[3] = auVar24._8_8_; + puVar17[2] = auVar24._0_8_; + psVar19 = psVar19 + 8; + puVar17 = puVar17 + 4; + } while (uVar22 < uVar4); + iVar20 = iVar20 + iVar2; + if (iVar2 == uVar15 - uVar16) goto LAB_00278a94; + } + iVar2 = iVar20 + 1; + *(float *)(param_5 + (long)iVar20 * 4) = (float)(int)param_1[iVar20]; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 2; + /* try { // try from 00278a04 to 00378a0b has its CatchHandler @ 00278a84 */ + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + /* try { // try from 00278a10 to 00378a17 has its CatchHandler @ 00278a80 */ + if (iVar3 < iVar7) { + /* try { // try from 00278a18 to 00378a87 has its CatchHandler @ 00278760 */ + iVar2 = iVar20 + 3; + *(float *)(param_5 + (long)iVar3 * 4) = (float)(int)param_1[iVar3]; + if (iVar2 < iVar7) { + iVar3 = iVar20 + 4; + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + if (iVar3 < iVar7) { + iVar2 = iVar20 + 5; + *(float *)(param_5 + (long)iVar3 * 4) = (float)(int)param_1[iVar3]; + if (iVar2 < iVar7) { + iVar20 = iVar20 + 6; + *(float *)(param_5 + (long)iVar2 * 4) = (float)(int)param_1[iVar2]; + /* catch() { ... } // from try @ 00278a10 with catch @ 00278a80 */ + if (iVar20 < iVar7) { + /* catch() { ... } // from try @ 00278a04 with catch @ 00278a84 */ + /* try { // try from 00278a88 to 00378a8f has its CatchHandler @ 00278a98 */ + /* try { // try from 00278a90 to 00378a9b has its CatchHandler @ 00278760 */ + *(float *)(param_5 + (long)iVar20 * 4) = (float)(int)param_1[iVar20]; + } + } + } + } + } + } + } +LAB_00278a94: + iVar23 = iVar23 + -1; + /* catch() { ... } // from try @ 00278a88 with catch @ 00278a98 */ + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar23 != 0); + } + return; +} + + +================================================================== + +### FUNC 00278adc (464 bytes) name=FUN_00278adc + +void FUN_00278adc(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + undefined1 (*pauVar1) [16]; + undefined1 *puVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 (*pauVar11) [16]; + undefined1 *puVar12; + uint *puVar13; + long lVar14; + undefined8 *puVar15; + int iVar16; + int iVar17; + long lVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + + iVar17 = param_7[1]; + iVar3 = *param_7; + if (iVar17 != 0) { + uVar7 = iVar3 - 0x10U >> 4; + iVar6 = (uVar7 + 1) * 0x10; + if (iVar3 + -0xf < 1) { + iVar6 = 0; + } + uVar8 = (uint)((iVar3 + -4) - iVar6) >> 2; + lVar18 = (long)iVar6; + do { + /* try { // try from 00278b4c to 00378c53 has its CatchHandler @ 00278b4c + catch(type#1 @ 00000000) { ... } // from try @ 00278b4c with catch @ 00278b4c + catch(type#1 @ 00000000) { ... } // from try @ 00278c5c with catch @ 00278b4c + catch(type#1 @ 00000000) { ... } // from try @ 00278d38 with catch @ 00278b4c + */ + if (0 < iVar3 + -0xf) { + pauVar11 = (undefined1 (*) [16])(param_1 + 0x10); + puVar15 = param_5; + do { + pauVar1 = pauVar11 + 4; + uVar19 = NEON_sqxtun(*(undefined8 *)*pauVar11,*pauVar11,4); + uVar22 = NEON_sqxtun(*(undefined8 *)pauVar11[-1],pauVar11[-1],4); + uVar20 = NEON_sqxtun(*(undefined8 *)pauVar11[2],pauVar11[2],4); + uVar21 = NEON_sqxtun(*(undefined8 *)pauVar11[1],pauVar11[1],4); + auVar10._8_8_ = uVar19; + auVar10._0_8_ = uVar22; + uVar22 = NEON_uqxtn(uVar22,auVar10,2); + auVar9._8_8_ = uVar20; + auVar9._0_8_ = uVar21; + uVar19 = NEON_uqxtn(uVar21,auVar9,2); + puVar15[1] = uVar19; + *puVar15 = uVar22; + pauVar11 = pauVar1; + puVar15 = puVar15 + 2; + } while (pauVar1 != (undefined1 (*) [16])(param_1 + (ulong)uVar7 * 0x40 + 0x50)); + } + iVar16 = iVar6; + if (iVar6 < iVar3 + -3) { + puVar12 = (undefined1 *)((long)param_5 + lVar18); + puVar13 = (uint *)(param_1 + lVar18 * 4); + do { + uVar4 = *puVar13; + puVar2 = puVar12 + 4; + uVar5 = puVar13[1]; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + *puVar12 = (char)uVar4; + puVar12[1] = (char)uVar5; + uVar4 = puVar13[2]; + uVar5 = puVar13[3]; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + if (0xff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar12[2] = (char)uVar4; + puVar12[3] = (char)uVar5; + puVar12 = puVar2; + puVar13 = puVar13 + 4; + iVar16 = iVar6 + 4 + uVar8 * 4; + } while (puVar2 != (undefined1 *)((long)param_5 + lVar18 + 4 + (ulong)uVar8 * 4)); + } + if (iVar16 < iVar3) { + /* try { // try from 00278c54 to 00378c5b has its CatchHandler @ 00278d98 */ + lVar14 = 0; + /* try { // try from 00278c5c to 00378d27 has its CatchHandler @ 00278b4c */ + do { + uVar4 = *(uint *)(param_1 + (long)iVar16 * 4 + lVar14 * 4); + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + *(char *)((long)param_5 + lVar14 + iVar16) = (char)uVar4; + lVar14 = lVar14 + 1; + } while (lVar14 != (ulong)(uint)((iVar3 + -1) - iVar16) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 00278cac (520 bytes) name=FUN_00278cac + +void FUN_00278cac(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + undefined1 (*pauVar1) [16]; + undefined1 *puVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + undefined1 (*pauVar10) [16]; + undefined1 *puVar11; + long lVar12; + int *piVar13; + undefined8 *puVar14; + undefined1 uVar15; + undefined1 uVar16; + undefined1 uVar17; + int iVar18; + undefined1 uVar19; + int iVar20; + long lVar21; + undefined8 uVar22; + undefined8 uVar23; + undefined8 uVar24; + undefined8 uVar25; + + iVar20 = param_7[1]; + iVar3 = *param_7; + if (iVar20 != 0) { + uVar6 = iVar3 - 0x10U >> 4; + iVar5 = (uVar6 + 1) * 0x10; + if (iVar3 + -0xf < 1) { + iVar5 = 0; + } + uVar7 = (uint)((iVar3 + -4) - iVar5) >> 2; + lVar21 = (long)iVar5; + do { + /* try { // try from 00278d28 to 00378d37 has its CatchHandler @ 00278d84 */ + if (0 < iVar3 + -0xf) { + /* try { // try from 00278d38 to 00378d9b has its CatchHandler @ 00278b4c */ + pauVar10 = (undefined1 (*) [16])(param_1 + 0x10); + puVar14 = param_5; + do { + pauVar1 = pauVar10 + 4; + uVar22 = NEON_sqxtn(*(undefined8 *)*pauVar10,*pauVar10,4); + uVar25 = NEON_sqxtn(*(undefined8 *)pauVar10[-1],pauVar10[-1],4); + uVar23 = NEON_sqxtn(*(undefined8 *)pauVar10[2],pauVar10[2],4); + uVar24 = NEON_sqxtn(*(undefined8 *)pauVar10[1],pauVar10[1],4); + auVar9._8_8_ = uVar22; + auVar9._0_8_ = uVar25; + uVar25 = NEON_sqxtn(uVar25,auVar9,2); + auVar8._8_8_ = uVar23; + auVar8._0_8_ = uVar24; + /* catch(type#1 @ 00000000) { ... } // from try @ 00278d28 with catch @ 00278d84 + */ + uVar22 = NEON_sqxtn(uVar24,auVar8,2); + puVar14[1] = uVar22; + *puVar14 = uVar25; + pauVar10 = pauVar1; + puVar14 = puVar14 + 2; + } while (pauVar1 != (undefined1 (*) [16])(param_1 + (ulong)uVar6 * 0x40 + 0x50)); + } + /* catch(type#1 @ 00000000) { ... } // from try @ 00278c54 with catch @ 00278d98 + */ + uVar15 = 0x80; + uVar16 = 0x7f; + iVar18 = iVar5; + if (iVar5 < iVar3 + -3) { + piVar13 = (int *)(param_1 + lVar21 * 4); + puVar11 = (undefined1 *)((long)param_5 + lVar21); + do { + iVar18 = *piVar13; + uVar19 = (char)iVar18; + if ((0xff < iVar18 + 0x80U) && (uVar19 = uVar16, iVar18 < 1)) { + uVar19 = uVar15; + } + iVar18 = piVar13[1]; + uVar17 = (char)iVar18; + if ((0xff < iVar18 + 0x80U) && (uVar17 = uVar16, iVar18 < 1)) { + uVar17 = uVar15; + } + *puVar11 = uVar19; + puVar11[1] = uVar17; + iVar18 = piVar13[2]; + uVar19 = (char)iVar18; + if ((0xff < iVar18 + 0x80U) && (uVar19 = 0x7f, iVar18 < 1)) { + uVar19 = 0x80; + } + iVar18 = piVar13[3]; + piVar13 = piVar13 + 4; + uVar17 = (char)iVar18; + if ((0xff < iVar18 + 0x80U) && (uVar17 = 0x7f, iVar18 < 1)) { + uVar17 = 0x80; + } + puVar11[2] = uVar19; + puVar2 = puVar11 + 4; + puVar11[3] = uVar17; + puVar11 = puVar2; + iVar18 = iVar5 + 4 + uVar7 * 4; + } while (puVar2 != (undefined1 *)((long)param_5 + lVar21 + 4 + (ulong)uVar7 * 4)); + } + if (iVar18 < iVar3) { + lVar12 = 0; + do { + iVar4 = *(int *)(param_1 + (long)iVar18 * 4 + lVar12 * 4); + uVar19 = (char)iVar4; + if ((0xff < iVar4 + 0x80U) && (uVar19 = uVar16, iVar4 < 1)) { + uVar19 = uVar15; + } + *(undefined1 *)((long)param_5 + lVar12 + iVar18) = uVar19; + lVar12 = lVar12 + 1; + } while (lVar12 != (ulong)(uint)((iVar3 + -1) - iVar18) + 1); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 00278eb4 (452 bytes) name=FUN_00278eb4 + +void FUN_00278eb4(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + undefined1 auVar10 [16]; + undefined1 *puVar11; + undefined1 (*pauVar12) [16]; + uint *puVar13; + undefined8 *puVar14; + undefined2 *puVar15; + long lVar16; + undefined1 (*pauVar17) [16]; + int iVar18; + int iVar19; + long lVar20; + undefined8 uVar21; + undefined8 uVar22; + + iVar19 = param_7[1]; + iVar2 = *param_7; + if (iVar19 != 0) { + uVar8 = iVar2 - 8U >> 3; + iVar7 = (uVar8 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar7 = 0; + } + uVar9 = (uint)((iVar2 + -4) - iVar7) >> 2; + lVar20 = (long)iVar7; + do { + if (0 < iVar2 + -7) { + pauVar12 = (undefined1 (*) [16])(param_1 + 0x10); + puVar14 = param_5; + do { + pauVar17 = pauVar12 + -1; + puVar11 = *pauVar12; + auVar10 = *pauVar12; + pauVar12 = pauVar12 + 2; + uVar21 = NEON_sqxtun(*(undefined8 *)puVar11,auVar10,4); + uVar22 = NEON_sqxtun(*(undefined8 *)*pauVar17,*pauVar17,4); + puVar14[1] = uVar21; + *puVar14 = uVar22; + puVar14 = puVar14 + 2; + } while (pauVar12 != (undefined1 (*) [16])(param_1 + (ulong)uVar8 * 0x20 + 0x30)); + } + iVar18 = iVar7; + if (iVar7 < iVar2 + -3) { + puVar13 = (uint *)(param_1 + lVar20 * 4); + puVar15 = (undefined2 *)((long)param_5 + lVar20 * 2); + do { + uVar3 = *puVar13; + puVar1 = puVar13 + 4; + uVar4 = puVar13[1]; + uVar5 = puVar13[2]; + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + uVar6 = puVar13[3]; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + *puVar15 = (short)uVar3; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + puVar15[1] = (short)uVar4; + puVar15[2] = (short)uVar5; + puVar15[3] = (short)uVar6; + puVar13 = puVar1; + puVar15 = puVar15 + 4; + iVar18 = iVar7 + 4 + uVar9 * 4; + } while (puVar1 != (uint *)(param_1 + (lVar20 + 4 + (ulong)uVar9 * 4) * 4)); + } + if (iVar18 < iVar2) { + lVar16 = 0; + do { + uVar3 = *(uint *)(param_1 + (long)iVar18 * 4 + lVar16 * 4); + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *(short *)((long)param_5 + lVar16 * 2 + (long)iVar18 * 2) = (short)uVar3; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar2 + -1) - iVar18) + 1); + } + iVar19 = iVar19 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar19 != 0); + } + return; +} + + +================================================================== + +### FUNC 00279078 (500 bytes) name=FUN_00279078 + +void FUN_00279078(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 *puVar7; + long lVar8; + undefined1 (*pauVar9) [16]; + int *piVar10; + long lVar11; + undefined8 *puVar12; + undefined2 *puVar13; + undefined1 (*pauVar14) [16]; + undefined2 uVar15; + undefined2 uVar16; + undefined2 uVar17; + int iVar18; + undefined2 uVar19; + int iVar20; + undefined8 uVar21; + undefined8 uVar22; + + iVar20 = param_7[1]; + iVar1 = *param_7; + if (iVar20 != 0) { + uVar4 = iVar1 - 8U >> 3; + /* try { // try from 002790ac to 0037915f has its CatchHandler @ 002790ac + catch() { ... } // from try @ 002790ac with catch @ 002790ac + catch() { ... } // from try @ 00279170 with catch @ 002790ac + catch() { ... } // from try @ 00279328 with catch @ 002790ac + catch() { ... } // from try @ 002793ac with catch @ 002790ac + catch() { ... } // from try @ 002793bc with catch @ 002790ac */ + iVar3 = (uVar4 + 1) * 8; + if (iVar1 + -7 < 1) { + iVar3 = 0; + } + uVar5 = (uint)((iVar1 + -4) - iVar3) >> 2; + lVar8 = (long)iVar3; + do { + if (0 < iVar1 + -7) { + pauVar9 = (undefined1 (*) [16])(param_1 + 0x10); + puVar12 = param_5; + do { + pauVar14 = pauVar9 + -1; + puVar7 = *pauVar9; + auVar6 = *pauVar9; + pauVar9 = pauVar9 + 2; + uVar21 = NEON_sqxtn(*(undefined8 *)puVar7,auVar6,4); + uVar22 = NEON_sqxtn(*(undefined8 *)*pauVar14,*pauVar14,4); + puVar12[1] = uVar21; + *puVar12 = uVar22; + puVar12 = puVar12 + 2; + } while (pauVar9 != (undefined1 (*) [16])(param_1 + (ulong)uVar4 * 0x20 + 0x30)); + } + uVar15 = 0x8000; + uVar16 = 0x7fff; + iVar18 = iVar3; + if (iVar3 < iVar1 + -3) { + piVar10 = (int *)(param_1 + lVar8 * 4); + puVar13 = (undefined2 *)((long)param_5 + lVar8 * 2); + do { + /* try { // try from 00279160 to 0037916f has its CatchHandler @ 002793c4 */ + iVar18 = *piVar10; + /* try { // try from 00279170 to 003792ff has its CatchHandler @ 002790ac */ + uVar19 = (short)iVar18; + if ((0xffff < iVar18 + 0x8000U) && (uVar19 = uVar16, iVar18 < 1)) { + uVar19 = uVar15; + } + iVar18 = piVar10[1]; + uVar17 = (short)iVar18; + if ((0xffff < iVar18 + 0x8000U) && (uVar17 = uVar16, iVar18 < 1)) { + uVar17 = uVar15; + } + iVar18 = piVar10[2]; + *puVar13 = uVar19; + puVar13[1] = uVar17; + uVar19 = (short)iVar18; + if ((0xffff < iVar18 + 0x8000U) && (uVar19 = 0x7fff, iVar18 < 1)) { + uVar19 = 0x8000; + } + iVar18 = piVar10[3]; + piVar10 = piVar10 + 4; + uVar17 = (short)iVar18; + if ((0xffff < iVar18 + 0x8000U) && (uVar17 = 0x7fff, iVar18 < 1)) { + uVar17 = 0x8000; + } + puVar13[2] = uVar19; + puVar13[3] = uVar17; + puVar13 = puVar13 + 4; + iVar18 = iVar3 + 4 + uVar5 * 4; + } while (piVar10 != (int *)(param_1 + (lVar8 + 4 + (ulong)uVar5 * 4) * 4)); + } + if (iVar18 < iVar1) { + lVar11 = 0; + do { + iVar2 = *(int *)(param_1 + (long)iVar18 * 4 + lVar11 * 4); + uVar19 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar19 = uVar16, iVar2 < 1)) { + uVar19 = uVar15; + } + *(undefined2 *)((long)param_5 + lVar11 * 2 + (long)iVar18 * 2) = uVar19; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar1 + -1) - iVar18) + 1); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027926c (844 bytes) name=FUN_0027926c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027926c(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + short sVar13; + long lVar14; + undefined8 *puVar15; + float *pfVar16; + undefined2 *puVar17; + int iVar18; + undefined1 (*pauVar19) [16]; + float fVar20; + undefined8 uVar21; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar25; + float fVar26; + float fVar27; + + iVar18 = param_7[1]; + iVar1 = *param_7; + if (iVar18 != 0) { + uVar3 = iVar1 - 8U >> 3; + /* try { // try from 00279300 to 0037930f has its CatchHandler @ 00279370 */ + iVar2 = (uVar3 + 1) * 8; + /* try { // try from 00279314 to 00379327 has its CatchHandler @ 00279360 */ + if (iVar1 + -7 < 1) { + iVar2 = 0; + } + /* try { // try from 00279328 to 0037939f has its CatchHandler @ 002790ac */ + lVar14 = (long)iVar2; + uVar4 = (uint)((iVar1 + -4) - iVar2) >> 2; + do { + /* catch() { ... } // from try @ 00279314 with catch @ 00279360 */ + if (0 < iVar1 + -7) { + /* catch() { ... } // from try @ 00279300 with catch @ 00279370 */ + pauVar19 = (undefined1 (*) [16])(param_1 + 0x10); + puVar15 = param_5; + do { + /* catch() { ... } // from try @ 00279160 with catch @ 002793c4 */ + uVar21 = *(undefined8 *)(pauVar19[-1] + 8); + uVar5 = *(undefined8 *)pauVar19[-1]; + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar23 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar23._8_8_; + _DAT_00531e90 = auVar23._0_8_; + __cxa_guard_release(&DAT_00531ec0); + auVar23 = *pauVar19; + fVar20 = (float)_DAT_00531e90; + fVar25 = (float)((ulong)_DAT_00531e90 >> 0x20); + fVar26 = (float)uRam0000000000531e98; + fVar27 = (float)((ulong)uRam0000000000531e98 >> 0x20); + } + else { + auVar23 = *pauVar19; + fVar20 = (float)_DAT_00531e90; + fVar25 = (float)((ulong)_DAT_00531e90 >> 0x20); + fVar26 = (float)uRam0000000000531e98; + fVar27 = (float)((ulong)uRam0000000000531e98 >> 0x20); + } + iVar6 = (int)((float)((ulong)uVar5 >> 0x20) + fVar25); + iVar7 = (int)((float)uVar5 + fVar20); + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + pauVar19 = pauVar19 + 2; + auVar24._4_4_ = iVar6; + auVar24._0_4_ = iVar7; + auVar24._8_4_ = (int)((float)uVar21 + fVar26); + auVar24._12_4_ = (int)((float)((ulong)uVar21 >> 0x20) + fVar27); + uVar5 = NEON_uqxtn(CONCAT44(iVar6,iVar7),auVar24,4); + /* try { // try from 002793a0 to 003793ab has its CatchHandler @ 002793b4 */ + /* try { // try from 002793ac to 003793b7 has its CatchHandler @ 002790ac */ + auVar22._0_8_ = + CONCAT44((int)(auVar23._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar23._0_4_ + (float)_DAT_00531e90)); + auVar22._8_4_ = (int)(auVar23._8_4_ + (float)uRam0000000000531e98); + auVar22._12_4_ = (int)(auVar23._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + /* catch() { ... } // from try @ 002793a0 with catch @ 002793b4 */ + uVar21 = NEON_uqxtn(auVar22._0_8_,auVar22,4); + /* try { // try from 002793b8 to 003793bb has its CatchHandler @ 002793c0 */ + /* try { // try from 002793bc to 003793d7 has its CatchHandler @ 002790ac */ + puVar15[1] = uVar21; + *puVar15 = uVar5; + puVar15 = puVar15 + 2; + /* catch() { ... } // from try @ 002793b8 with catch @ 002793c0 */ + } while (pauVar19 != (undefined1 (*) [16])(param_1 + (ulong)uVar3 * 0x20 + 0x30)); + } + iVar7 = iVar2; + if (iVar2 < iVar1 + -3) { + pfVar16 = (float *)(param_1 + lVar14 * 4); + puVar17 = (undefined2 *)((long)param_5 + lVar14 * 2); + do { + lVar11 = lrintf(*pfVar16); + uVar9 = (uint)lVar11; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(pfVar16[1]); + uVar10 = (uint)lVar11; + if (0xffff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + fVar20 = pfVar16[2]; + *puVar17 = (short)uVar9; + puVar17[1] = (short)uVar10; + lVar11 = lrintf(fVar20); + uVar9 = (uint)lVar11; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(pfVar16[3]); + uVar10 = (uint)lVar11; + if (0xffff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + pfVar16 = pfVar16 + 4; + puVar17[2] = (short)uVar9; + puVar17[3] = (short)uVar10; + puVar17 = puVar17 + 4; + iVar7 = iVar2 + 4 + uVar4 * 4; + } while (pfVar16 != (float *)(param_1 + (lVar14 + 4 + (ulong)uVar4 * 4) * 4)); + } + if (iVar7 < iVar1) { + lVar11 = 0; + do { + lVar12 = lrintf(*(float *)(param_1 + (long)iVar7 * 4 + lVar11 * 4)); + sVar13 = (short)lVar12; + if (0xffff < (uint)lVar12) { + sVar13 = -(ushort)(0 < (int)(uint)lVar12); + } + *(short *)((long)param_5 + lVar11 * 2 + (long)iVar7 * 2) = sVar13; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar1 + -1) - iVar7) + 1); + } + iVar18 = iVar18 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 002795b8 (908 bytes) name=FUN_002795b8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002795b8(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined8 uVar7; + undefined1 auVar8 [16]; + undefined8 uVar9; + float *pfVar10; + float *pfVar11; + int iVar12; + uint uVar13; + uint uVar14; + float *pfVar15; + long lVar16; + long lVar17; + long lVar18; + char cVar19; + undefined8 *puVar20; + undefined1 *puVar21; + int iVar22; + undefined8 *puVar23; + float *pfVar24; + long lVar25; + undefined1 auVar27 [16]; + undefined8 uVar26; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + undefined4 uVar35; + undefined4 uVar36; + int iVar37; + + iVar22 = param_7[1]; + iVar2 = *param_7; + fVar33 = (float)*param_8; + fVar34 = (float)param_8[1]; + if (iVar22 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar18 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar25 = NEON_shl(lVar18,2); + do { + if (0 < iVar2 + -7) { + puVar23 = (undefined8 *)(param_1 + 0x10); + puVar20 = param_5; + do { + uVar7 = puVar23[1]; + uVar26 = *puVar23; + pfVar15 = (float *)(puVar23 + -2); + pfVar24 = (float *)((long)puVar23 + -0xc); + pfVar10 = (float *)(puVar23 + -1); + pfVar11 = (float *)((long)puVar23 + -4); + puVar23 = puVar23 + 4; + fVar29 = fVar34 + *pfVar15 * fVar33; + fVar30 = fVar34 + *pfVar24 * fVar33; + fVar31 = fVar34 + *pfVar10 * fVar33; + fVar32 = fVar34 + *pfVar11 * fVar33; + if (((DAT_00531ec0 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531ec0), iVar12 != 0)) { + auVar28 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar28._8_8_; + _DAT_00531e90 = auVar28._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar12 = (int)(fVar29 + (float)_DAT_00531e90); + iVar37 = (int)(fVar30 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar8._4_4_ = iVar37; + auVar8._0_4_ = iVar12; + auVar8._8_4_ = (int)(fVar31 + (float)uRam0000000000531e98); + auVar8._12_4_ = (int)(fVar32 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar9 = NEON_uqxtn(CONCAT44(iVar37,iVar12),auVar8,4); + uVar35 = (undefined4)uVar9; + uVar36 = (undefined4)((ulong)uVar9 >> 0x20); + } + else { + iVar12 = (int)(fVar29 + (float)_DAT_00531e90); + iVar37 = (int)(fVar30 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar28._4_4_ = iVar37; + auVar28._0_4_ = iVar12; + auVar28._8_4_ = (int)(fVar31 + (float)uRam0000000000531e98); + auVar28._12_4_ = (int)(fVar32 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar9 = NEON_uqxtn(CONCAT44(iVar37,iVar12),auVar28,4); + uVar35 = (undefined4)uVar9; + uVar36 = (undefined4)((ulong)uVar9 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531ec0), iVar12 != 0)) { + auVar28 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar28._8_8_; + _DAT_00531e90 = auVar28._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar27._0_8_ = + CONCAT44((int)(fVar34 + (float)((ulong)uVar26 >> 0x20) * fVar33 + DAT_00531e90_4), + (int)(fVar34 + (float)uVar26 * fVar33 + _DAT_00531e90)); + auVar27._8_4_ = (int)(fVar34 + (float)uVar7 * fVar33 + (float)uRam0000000000531e98); + auVar27._12_4_ = + (int)(fVar34 + (float)((ulong)uVar7 >> 0x20) * fVar33 + uRam0000000000531e98._4_4_); + uVar26 = NEON_uqxtn(auVar27._0_8_,auVar27,4); + auVar6._4_4_ = uVar36; + auVar6._0_4_ = uVar35; + auVar6._8_4_ = (int)uVar26; + auVar6._12_4_ = (int)((ulong)uVar26 >> 0x20); + uVar26 = NEON_uqxtn(uVar26,auVar6,2); + *puVar20 = uVar26; + puVar20 = puVar20 + 1; + } while (puVar23 != (undefined8 *)(param_1 + (ulong)uVar4 * 0x20 + 0x30)); + } + iVar12 = iVar3; + if (iVar3 < iVar2 + -3) { + pfVar24 = (float *)(param_1 + lVar25); + puVar21 = (undefined1 *)((long)param_5 + lVar18); + do { + lVar16 = lrintf(fVar34 + *pfVar24 * fVar33); + uVar13 = (uint)lVar16; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + lVar16 = lrintf(fVar34 + pfVar24[1] * fVar33); + uVar14 = (uint)lVar16; + if (0xff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + *puVar21 = (char)uVar13; + puVar21[1] = (char)uVar14; + lVar16 = lrintf(fVar34 + pfVar24[2] * fVar33); + uVar13 = (uint)lVar16; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + lVar16 = lrintf(fVar34 + pfVar24[3] * fVar33); + uVar14 = (uint)lVar16; + if (0xff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + puVar21[2] = (char)uVar13; + puVar1 = puVar21 + 4; + pfVar24 = pfVar24 + 4; + puVar21[3] = (char)uVar14; + puVar21 = puVar1; + iVar12 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar18 + 4 + (ulong)uVar5 * 4)); + } + if (iVar12 < iVar2) { + lVar16 = 0; + do { + lVar17 = lrintf(fVar34 + *(float *)(param_1 + (long)iVar12 * 4 + lVar16 * 4) * fVar33); + cVar19 = (char)lVar17; + if (0xff < (uint)lVar17) { + cVar19 = -(0 < (int)(uint)lVar17); + } + *(char *)((long)param_5 + lVar16 + iVar12) = cVar19; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar2 + -1) - iVar12) + 1); + } + iVar22 = iVar22 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 00279944 (904 bytes) name=FUN_00279944 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00279944(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7,double *param_8) + +{ + int iVar1; + undefined8 *puVar2; + int iVar3; + uint uVar4; + int iVar5; + char cVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + int iVar9; + uint uVar10; + uint uVar11; + long lVar12; + long lVar13; + byte *pbVar14; + undefined1 *puVar15; + long lVar16; + int iVar17; + undefined1 uVar18; + undefined8 uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + undefined4 uVar30; + undefined4 uVar31; + int iVar32; + + iVar17 = param_7[1]; + iVar3 = *param_7; + fVar28 = (float)*param_8; + fVar29 = (float)param_8[1]; + if (iVar17 != 0) { + iVar5 = iVar3 + -7; + iVar1 = (iVar3 - 8U & 0xfffffff8) + 8; + if (iVar5 < 1) { + iVar1 = 0; + } + uVar4 = (uint)((iVar3 + -4) - iVar1) >> 2; + lVar13 = (long)iVar1; + do { + if (0 < iVar5) { + lVar16 = 0; + do { + uVar19 = *(undefined8 *)(param_1 + lVar16); + uVar18 = (undefined1)((ulong)uVar19 >> 8); + auVar23._6_2_ = 0; + auVar23._0_6_ = + (uint6)CONCAT14(uVar18,(uint)CONCAT12(uVar18,(ushort)(byte)uVar19)) & 0xffff0000ffff; + auVar23[8] = (char)((ulong)uVar19 >> 0x10); + auVar23._9_3_ = 0; + auVar23[0xc] = (char)((ulong)uVar19 >> 0x18); + auVar23._13_3_ = 0; + auVar23 = NEON_ucvtf(auVar23,4); + auVar21._1_3_ = 0; + auVar21[0] = (byte)((ulong)uVar19 >> 0x20); + auVar21[4] = (char)((ulong)uVar19 >> 0x28); + auVar21._5_3_ = 0; + auVar21[8] = (char)((ulong)uVar19 >> 0x30); + auVar21._9_3_ = 0; + auVar21[0xc] = (char)((ulong)uVar19 >> 0x38); + auVar21._13_3_ = 0; + auVar21 = NEON_ucvtf(auVar21,4); + fVar24 = fVar29 + auVar23._0_4_ * fVar28; + fVar25 = fVar29 + auVar23._4_4_ * fVar28; + fVar26 = fVar29 + auVar23._8_4_ * fVar28; + fVar27 = fVar29 + auVar23._12_4_ * fVar28; + if (((DAT_00531ec0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec0), iVar9 != 0)) + { + auVar23 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar23._8_8_; + _DAT_00531e90 = auVar23._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar9 = (int)(fVar24 + (float)_DAT_00531e90); + iVar32 = (int)(fVar25 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar32; + auVar7._0_4_ = iVar9; + auVar7._8_4_ = (int)(fVar26 + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(fVar27 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar32,iVar9),auVar7,4); + uVar30 = (undefined4)uVar19; + uVar31 = (undefined4)((ulong)uVar19 >> 0x20); + } + else { + iVar9 = (int)(fVar24 + (float)_DAT_00531e90); + iVar32 = (int)(fVar25 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar8._4_4_ = iVar32; + auVar8._0_4_ = iVar9; + auVar8._8_4_ = (int)(fVar26 + (float)uRam0000000000531e98); + auVar8._12_4_ = (int)(fVar27 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar32,iVar9),auVar8,4); + uVar30 = (undefined4)uVar19; + uVar31 = (undefined4)((ulong)uVar19 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec0), iVar9 != 0)) + { + auVar23 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar23._8_8_; + _DAT_00531e90 = auVar23._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + puVar2 = (undefined8 *)(param_5 + lVar16); + lVar16 = lVar16 + 8; + auVar22._4_4_ = uVar31; + auVar22._0_4_ = uVar30; + auVar20._0_8_ = + CONCAT44((int)(fVar29 + auVar21._4_4_ * fVar28 + DAT_00531e90_4), + (int)(fVar29 + auVar21._0_4_ * fVar28 + _DAT_00531e90)); + auVar20._8_4_ = (int)(fVar29 + auVar21._8_4_ * fVar28 + (float)uRam0000000000531e98); + auVar20._12_4_ = (int)(fVar29 + auVar21._12_4_ * fVar28 + uRam0000000000531e98._4_4_); + uVar19 = NEON_uqxtn(auVar20._0_8_,auVar20,4); + auVar22._8_8_ = uVar19; + uVar19 = NEON_uqxtn(uVar19,auVar22,2); + *puVar2 = uVar19; + } while ((int)lVar16 < iVar5); + } + iVar9 = iVar1; + if (iVar1 < iVar3 + -3) { + pbVar14 = (byte *)(param_1 + lVar13); + puVar15 = (undefined1 *)(param_5 + lVar13); + do { + lVar16 = lrintf(fVar29 + (float)*pbVar14 * fVar28); + uVar10 = (uint)lVar16; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar16 = lrintf(fVar29 + (float)pbVar14[1] * fVar28); + uVar11 = (uint)lVar16; + if (0xff < uVar11) { + uVar11 = -(uint)(0 < (int)uVar11); + } + *puVar15 = (char)uVar10; + puVar15[1] = (char)uVar11; + lVar16 = lrintf(fVar29 + (float)pbVar14[2] * fVar28); + uVar10 = (uint)lVar16; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar16 = lrintf(fVar29 + (float)pbVar14[3] * fVar28); + uVar11 = (uint)lVar16; + if (0xff < uVar11) { + uVar11 = -(uint)(0 < (int)uVar11); + } + pbVar14 = pbVar14 + 4; + puVar15[2] = (char)uVar10; + puVar15[3] = (char)uVar11; + puVar15 = puVar15 + 4; + iVar9 = iVar1 + 4 + uVar4 * 4; + } while (pbVar14 != (byte *)(param_1 + lVar13 + 4 + (ulong)uVar4 * 4)); + } + if (iVar9 < iVar3) { + lVar16 = 0; + do { + lVar12 = lrintf(fVar29 + (float)*(byte *)(param_1 + iVar9 + lVar16) * fVar28); + cVar6 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar6 = -(0 < (int)(uint)lVar12); + } + *(char *)(param_5 + iVar9 + lVar16) = cVar6; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar3 + -1) - iVar9) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 00279ccc (904 bytes) name=FUN_00279ccc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00279ccc(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7,double *param_8) + +{ + int iVar1; + undefined8 *puVar2; + int iVar3; + uint uVar4; + int iVar5; + char cVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + int iVar9; + uint uVar10; + uint uVar11; + long lVar12; + long lVar13; + char *pcVar14; + undefined1 *puVar15; + long lVar16; + int iVar17; + undefined8 uVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + undefined4 uVar29; + undefined4 uVar30; + int iVar31; + + iVar17 = param_7[1]; + iVar3 = *param_7; + fVar27 = (float)*param_8; + fVar28 = (float)param_8[1]; + if (iVar17 != 0) { + iVar5 = iVar3 + -7; + iVar1 = (iVar3 - 8U & 0xfffffff8) + 8; + if (iVar5 < 1) { + iVar1 = 0; + } + uVar4 = (uint)((iVar3 + -4) - iVar1) >> 2; + lVar13 = (long)iVar1; + do { + if (0 < iVar5) { + lVar16 = 0; + do { + uVar18 = *(undefined8 *)(param_1 + lVar16); + auVar22._0_4_ = (int)(short)(char)uVar18; + auVar22._4_4_ = (int)(short)(char)((ulong)uVar18 >> 8); + auVar22._8_4_ = (int)(short)(char)((ulong)uVar18 >> 0x10); + auVar22._12_4_ = (int)(short)(char)((ulong)uVar18 >> 0x18); + auVar22 = NEON_scvtf(auVar22,4); + auVar20._0_4_ = (int)(short)(char)((ulong)uVar18 >> 0x20); + auVar20._4_4_ = (int)(short)(char)((ulong)uVar18 >> 0x28); + auVar20._8_4_ = (int)(short)(char)((ulong)uVar18 >> 0x30); + auVar20._12_4_ = (int)(short)(char)((ulong)uVar18 >> 0x38); + auVar20 = NEON_scvtf(auVar20,4); + fVar23 = fVar28 + auVar22._0_4_ * fVar27; + fVar24 = fVar28 + auVar22._4_4_ * fVar27; + fVar25 = fVar28 + auVar22._8_4_ * fVar27; + fVar26 = fVar28 + auVar22._12_4_ * fVar27; + if (((DAT_00531ec0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec0), iVar9 != 0)) + { + auVar22 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar22._8_8_; + _DAT_00531e90 = auVar22._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar9 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar31; + auVar7._0_4_ = iVar9; + auVar7._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar18 = NEON_uqxtn(CONCAT44(iVar31,iVar9),auVar7,4); + uVar29 = (undefined4)uVar18; + uVar30 = (undefined4)((ulong)uVar18 >> 0x20); + } + else { + iVar9 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar8._4_4_ = iVar31; + auVar8._0_4_ = iVar9; + auVar8._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar8._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar18 = NEON_uqxtn(CONCAT44(iVar31,iVar9),auVar8,4); + uVar29 = (undefined4)uVar18; + uVar30 = (undefined4)((ulong)uVar18 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec0), iVar9 != 0)) + { + auVar22 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar22._8_8_; + _DAT_00531e90 = auVar22._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + puVar2 = (undefined8 *)(param_5 + lVar16); + lVar16 = lVar16 + 8; + auVar21._4_4_ = uVar30; + auVar21._0_4_ = uVar29; + auVar19._0_8_ = + CONCAT44((int)(fVar28 + auVar20._4_4_ * fVar27 + DAT_00531e90_4), + (int)(fVar28 + auVar20._0_4_ * fVar27 + _DAT_00531e90)); + auVar19._8_4_ = (int)(fVar28 + auVar20._8_4_ * fVar27 + (float)uRam0000000000531e98); + auVar19._12_4_ = (int)(fVar28 + auVar20._12_4_ * fVar27 + uRam0000000000531e98._4_4_); + uVar18 = NEON_uqxtn(auVar19._0_8_,auVar19,4); + auVar21._8_8_ = uVar18; + uVar18 = NEON_uqxtn(uVar18,auVar21,2); + *puVar2 = uVar18; + } while ((int)lVar16 < iVar5); + } + iVar9 = iVar1; + if (iVar1 < iVar3 + -3) { + pcVar14 = (char *)(param_1 + lVar13); + puVar15 = (undefined1 *)(param_5 + lVar13); + do { + lVar16 = lrintf(fVar28 + (float)(int)*pcVar14 * fVar27); + uVar10 = (uint)lVar16; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar16 = lrintf(fVar28 + (float)(int)pcVar14[1] * fVar27); + uVar11 = (uint)lVar16; + if (0xff < uVar11) { + uVar11 = -(uint)(0 < (int)uVar11); + } + *puVar15 = (char)uVar10; + puVar15[1] = (char)uVar11; + lVar16 = lrintf(fVar28 + (float)(int)pcVar14[2] * fVar27); + uVar10 = (uint)lVar16; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar16 = lrintf(fVar28 + (float)(int)pcVar14[3] * fVar27); + uVar11 = (uint)lVar16; + if (0xff < uVar11) { + uVar11 = -(uint)(0 < (int)uVar11); + } + pcVar14 = pcVar14 + 4; + puVar15[2] = (char)uVar10; + puVar15[3] = (char)uVar11; + puVar15 = puVar15 + 4; + iVar9 = iVar1 + 4 + uVar4 * 4; + } while (pcVar14 != (char *)(param_1 + lVar13 + 4 + (ulong)uVar4 * 4)); + } + if (iVar9 < iVar3) { + lVar16 = 0; + do { + lVar12 = lrintf(fVar28 + (float)(int)*(char *)(param_1 + iVar9 + lVar16) * fVar27); + cVar6 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar6 = -(0 < (int)(uint)lVar12); + } + *(char *)(param_5 + iVar9 + lVar16) = cVar6; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar3 + -1) - iVar9) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027a054 (928 bytes) name=FUN_0027a054 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027a054(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined1 auVar5 [16]; + undefined8 uVar6; + float *pfVar7; + float *pfVar8; + int iVar9; + uint uVar10; + uint uVar11; + float *pfVar12; + long lVar13; + long lVar14; + short sVar15; + long lVar16; + undefined8 *puVar17; + undefined2 *puVar18; + int iVar19; + undefined8 *puVar20; + float *pfVar21; + undefined8 uVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined8 uVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + undefined4 uVar32; + undefined4 uVar33; + int iVar34; + + iVar19 = param_7[1]; + iVar1 = *param_7; + fVar30 = (float)*param_8; + fVar31 = (float)param_8[1]; + if (iVar19 != 0) { + uVar3 = iVar1 - 8U >> 3; + iVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + iVar2 = 0; + } + uVar4 = (uint)((iVar1 + -4) - iVar2) >> 2; + lVar16 = (long)iVar2; + do { + if (0 < iVar1 + -7) { + puVar20 = (undefined8 *)(param_1 + 0x10); + puVar17 = param_5; + do { + uVar25 = puVar20[1]; + uVar22 = *puVar20; + pfVar12 = (float *)(puVar20 + -2); + pfVar21 = (float *)((long)puVar20 + -0xc); + pfVar7 = (float *)(puVar20 + -1); + pfVar8 = (float *)((long)puVar20 + -4); + puVar20 = puVar20 + 4; + fVar26 = fVar31 + *pfVar12 * fVar30; + fVar27 = fVar31 + *pfVar21 * fVar30; + fVar28 = fVar31 + *pfVar7 * fVar30; + fVar29 = fVar31 + *pfVar8 * fVar30; + if (((DAT_00531ec0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec0), iVar9 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar9 = (int)(fVar26 + (float)_DAT_00531e90); + iVar34 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar5._4_4_ = iVar34; + auVar5._0_4_ = iVar9; + auVar5._8_4_ = (int)(fVar28 + (float)uRam0000000000531e98); + auVar5._12_4_ = (int)(fVar29 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar6 = NEON_uqxtn(CONCAT44(iVar34,iVar9),auVar5,4); + uVar32 = (undefined4)uVar6; + uVar33 = (undefined4)((ulong)uVar6 >> 0x20); + } + else { + iVar9 = (int)(fVar26 + (float)_DAT_00531e90); + iVar34 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar24._4_4_ = iVar34; + auVar24._0_4_ = iVar9; + auVar24._8_4_ = (int)(fVar28 + (float)uRam0000000000531e98); + auVar24._12_4_ = (int)(fVar29 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar6 = NEON_uqxtn(CONCAT44(iVar34,iVar9),auVar24,4); + uVar32 = (undefined4)uVar6; + uVar33 = (undefined4)((ulong)uVar6 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec0), iVar9 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar23._0_8_ = + CONCAT44((int)(fVar31 + (float)((ulong)uVar22 >> 0x20) * fVar30 + DAT_00531e90_4), + (int)(fVar31 + (float)uVar22 * fVar30 + _DAT_00531e90)); + auVar23._8_4_ = (int)(fVar31 + (float)uVar25 * fVar30 + (float)uRam0000000000531e98); + auVar23._12_4_ = + (int)(fVar31 + (float)((ulong)uVar25 >> 0x20) * fVar30 + uRam0000000000531e98._4_4_); + uVar22 = NEON_uqxtn(auVar23._0_8_,auVar23,4); + puVar17[1] = uVar22; + *puVar17 = CONCAT44(uVar33,uVar32); + puVar17 = puVar17 + 2; + } while (puVar20 != (undefined8 *)(param_1 + (ulong)uVar3 * 0x20 + 0x30)); + } + iVar9 = iVar2; + if (iVar2 < iVar1 + -3) { + pfVar21 = (float *)(param_1 + lVar16 * 4); + puVar18 = (undefined2 *)((long)param_5 + lVar16 * 2); + do { + lVar13 = lrintf(fVar31 + *pfVar21 * fVar30); + uVar10 = (uint)lVar13; + if (0xffff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar13 = lrintf(fVar31 + pfVar21[1] * fVar30); + uVar11 = (uint)lVar13; + if (0xffff < uVar11) { + uVar11 = -(uint)(0 < (int)uVar11); + } + fVar26 = pfVar21[2]; + *puVar18 = (short)uVar10; + puVar18[1] = (short)uVar11; + lVar13 = lrintf(fVar31 + fVar26 * fVar30); + uVar10 = (uint)lVar13; + if (0xffff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + lVar13 = lrintf(fVar31 + pfVar21[3] * fVar30); + uVar11 = (uint)lVar13; + if (0xffff < uVar11) { + uVar11 = -(uint)(0 < (int)uVar11); + } + pfVar21 = pfVar21 + 4; + puVar18[2] = (short)uVar10; + puVar18[3] = (short)uVar11; + puVar18 = puVar18 + 4; + iVar9 = iVar2 + 4 + uVar4 * 4; + } while (pfVar21 != (float *)(param_1 + (lVar16 + 4 + (ulong)uVar4 * 4) * 4)); + } + if (iVar9 < iVar1) { + lVar13 = 0; + do { + lVar14 = lrintf(fVar31 + *(float *)(param_1 + (long)iVar9 * 4 + lVar13 * 4) * fVar30); + sVar15 = (short)lVar14; + if (0xffff < (uint)lVar14) { + sVar15 = -(ushort)(0 < (int)(uint)lVar14); + } + *(short *)((long)param_5 + lVar13 * 2 + (long)iVar9 * 2) = sVar15; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar1 + -1) - iVar9) + 1); + } + iVar19 = iVar19 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar19 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027a3f4 (936 bytes) name=FUN_0027a3f4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027a3f4(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + int iVar7; + uint uVar8; + uint uVar9; + undefined1 (*pauVar10) [16]; + long lVar11; + long lVar12; + long lVar13; + char cVar14; + undefined8 *puVar15; + undefined1 *puVar16; + int iVar17; + undefined1 (*pauVar18) [16]; + int *piVar19; + long lVar20; + undefined1 auVar22 [16]; + undefined8 uVar21; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + undefined4 uVar32; + undefined4 uVar33; + int iVar34; + + iVar17 = param_7[1]; + iVar2 = *param_7; + fVar30 = (float)*param_8; + fVar31 = (float)param_8[1]; + if (iVar17 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar13 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar20 = NEON_shl(lVar13,2); + do { + if (0 < iVar2 + -7) { + pauVar18 = (undefined1 (*) [16])(param_1 + 0x10); + puVar15 = param_5; + do { + auVar23 = *pauVar18; + pauVar10 = pauVar18 + -1; + pauVar18 = pauVar18 + 2; + auVar25 = NEON_scvtf(auVar23,4); + auVar23 = NEON_scvtf(*pauVar10,4); + fVar26 = fVar31 + auVar23._0_4_ * fVar30; + fVar27 = fVar31 + auVar23._4_4_ * fVar30; + fVar28 = fVar31 + auVar23._8_4_ * fVar30; + fVar29 = fVar31 + auVar23._12_4_ * fVar30; + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar23 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar23._8_8_; + _DAT_00531e90 = auVar23._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar7 = (int)(fVar26 + (float)_DAT_00531e90); + iVar34 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar34; + auVar6._0_4_ = iVar7; + auVar6._8_4_ = (int)(fVar28 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar29 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar34,iVar7),auVar6,4); + uVar32 = (undefined4)uVar21; + uVar33 = (undefined4)((ulong)uVar21 >> 0x20); + } + else { + iVar7 = (int)(fVar26 + (float)_DAT_00531e90); + iVar34 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar23._4_4_ = iVar34; + auVar23._0_4_ = iVar7; + auVar23._8_4_ = (int)(fVar28 + (float)uRam0000000000531e98); + auVar23._12_4_ = (int)(fVar29 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar34,iVar7),auVar23,4); + uVar32 = (undefined4)uVar21; + uVar33 = (undefined4)((ulong)uVar21 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar23 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar23._8_8_; + _DAT_00531e90 = auVar23._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar24._4_4_ = uVar33; + auVar24._0_4_ = uVar32; + auVar22._0_8_ = + CONCAT44((int)(fVar31 + auVar25._4_4_ * fVar30 + DAT_00531e90_4), + (int)(fVar31 + auVar25._0_4_ * fVar30 + _DAT_00531e90)); + auVar22._8_4_ = (int)(fVar31 + auVar25._8_4_ * fVar30 + (float)uRam0000000000531e98); + auVar22._12_4_ = (int)(fVar31 + auVar25._12_4_ * fVar30 + uRam0000000000531e98._4_4_); + uVar21 = NEON_uqxtn(auVar22._0_8_,auVar22,4); + auVar24._8_8_ = uVar21; + uVar21 = NEON_uqxtn(uVar21,auVar24,2); + *puVar15 = uVar21; + puVar15 = puVar15 + 1; + } while (pauVar18 != (undefined1 (*) [16])(param_1 + (ulong)uVar4 * 0x20 + 0x30)); + } + iVar7 = iVar3; + if (iVar3 < iVar2 + -3) { + piVar19 = (int *)(param_1 + lVar20); + puVar16 = (undefined1 *)((long)param_5 + lVar13); + do { + lVar11 = lrintf(fVar31 + (float)*piVar19 * fVar30); + uVar8 = (uint)lVar11; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar11 = lrintf(fVar31 + (float)piVar19[1] * fVar30); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *puVar16 = (char)uVar8; + puVar16[1] = (char)uVar9; + lVar11 = lrintf(fVar31 + (float)piVar19[2] * fVar30); + uVar8 = (uint)lVar11; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar11 = lrintf(fVar31 + (float)piVar19[3] * fVar30); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + puVar16[2] = (char)uVar8; + puVar1 = puVar16 + 4; + piVar19 = piVar19 + 4; + puVar16[3] = (char)uVar9; + puVar16 = puVar1; + iVar7 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar13 + 4 + (ulong)uVar5 * 4)); + } + if (iVar7 < iVar2) { + lVar11 = 0; + /* try { // try from 0027a70c to 0037a7cb has its CatchHandler @ 0027a70c + catch() { ... } // from try @ 0027a70c with catch @ 0027a70c + catch() { ... } // from try @ 0027a7d0 with catch @ 0027a70c + catch() { ... } // from try @ 0027a7e4 with catch @ 0027a70c + catch() { ... } // from try @ 0027a7f8 with catch @ 0027a70c */ + do { + lVar12 = lrintf(fVar31 + (float)*(int *)(param_1 + (long)iVar7 * 4 + lVar11 * 4) * fVar30) + ; + cVar14 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar14 = -(0 < (int)(uint)lVar12); + } + *(char *)((long)param_5 + lVar11 + iVar7) = cVar14; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar7) + 1); + } + iVar17 = iVar17 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027a79c (896 bytes) name=FUN_0027a79c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027a79c(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + float fVar7; + float *pfVar8; + float *pfVar9; + float *pfVar10; + int iVar11; + uint uVar12; + uint uVar13; + long lVar14; + long lVar15; + long lVar16; + char cVar17; + undefined8 *puVar18; + undefined1 *puVar19; + int iVar20; + float *pfVar21; + long lVar22; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined8 uVar23; + undefined8 uVar24; + undefined1 auVar27 [16]; + float fVar28; + float fVar29; + int iVar30; + + iVar20 = param_7[1]; + /* try { // try from 0027a7cc to 0037a7cf has its CatchHandler @ 0027a87c */ + /* try { // try from 0027a7d0 to 0037a7df has its CatchHandler @ 0027a70c */ + /* try { // try from 0027a7e0 to 0037a7e3 has its CatchHandler @ 0027a878 */ + /* try { // try from 0027a7e4 to 0037a7f3 has its CatchHandler @ 0027a70c */ + iVar2 = *param_7; + fVar28 = (float)*param_8; + fVar29 = (float)param_8[1]; + if (iVar20 != 0) { + /* try { // try from 0027a7f4 to 0037a7f7 has its CatchHandler @ 0027a874 */ + /* try { // try from 0027a7f8 to 0037a88f has its CatchHandler @ 0027a70c */ + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar16 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + /* catch() { ... } // from try @ 0027a7f4 with catch @ 0027a874 */ + /* catch() { ... } // from try @ 0027a7e0 with catch @ 0027a878 */ + /* catch() { ... } // from try @ 0027a7cc with catch @ 0027a87c */ + lVar22 = NEON_shl(lVar16,2); + do { + if (0 < iVar2 + -7) { + pfVar21 = (float *)(param_1 + 0x10); + puVar18 = param_5; + do { + uVar23 = *(undefined8 *)(pfVar21 + -2); + uVar24 = *(undefined8 *)(pfVar21 + -4); + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar27 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar27._8_8_; + _DAT_00531e90 = auVar27._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + fVar7 = *pfVar21; + pfVar8 = pfVar21 + 1; + pfVar9 = pfVar21 + 2; + pfVar10 = pfVar21 + 3; + pfVar21 = pfVar21 + 8; + iVar11 = (int)(ABS((float)uVar24 * fVar28 + fVar29) + (float)_DAT_00531e90); + iVar30 = (int)(ABS((float)((ulong)uVar24 >> 0x20) * fVar28 + fVar29) + + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar25._0_8_ = CONCAT44(ABS(*pfVar8 * fVar28 + fVar29),ABS(fVar7 * fVar28 + fVar29)); + auVar25._8_4_ = ABS(*pfVar9 * fVar28 + fVar29); + auVar25._12_4_ = ABS(*pfVar10 * fVar28 + fVar29); + auVar27._4_4_ = iVar30; + auVar27._0_4_ = iVar11; + auVar27._8_4_ = (int)(ABS((float)uVar23 * fVar28 + fVar29) + (float)uRam0000000000531e98); + auVar27._12_4_ = + (int)(ABS((float)((ulong)uVar23 >> 0x20) * fVar28 + fVar29) + + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar24 = NEON_uqxtn(CONCAT44(iVar30,iVar11),auVar27,4); + if ((DAT_00531ec0 & 1) == 0) { + uVar23 = auVar25._8_8_; + iVar11 = __cxa_guard_acquire(&DAT_00531ec0); + auVar25._8_8_ = uVar23; + if (iVar11 != 0) { + auVar27 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar27._8_8_; + _DAT_00531e90 = auVar27._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar26._0_8_ = + CONCAT44((int)(auVar25._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar25._0_4_ + (float)_DAT_00531e90)); + auVar26._8_4_ = (int)(auVar25._8_4_ + (float)uRam0000000000531e98); + auVar26._12_4_ = (int)(auVar25._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar23 = NEON_uqxtn(auVar26._0_8_,auVar26,4); + auVar6._8_4_ = (int)uVar23; + auVar6._0_8_ = uVar24; + auVar6._12_4_ = (int)((ulong)uVar23 >> 0x20); + uVar24 = NEON_uqxtn(uVar23,auVar6,2); + *puVar18 = uVar24; + puVar18 = puVar18 + 1; + } while (pfVar21 != (float *)(param_1 + (ulong)uVar4 * 0x20 + 0x30)); + } + iVar11 = iVar3; + if (iVar3 < iVar2 + -3) { + pfVar21 = (float *)(param_1 + lVar22); + puVar19 = (undefined1 *)((long)param_5 + lVar16); + do { + lVar14 = lrintf(ABS(fVar29 + *pfVar21 * fVar28)); + uVar12 = (uint)lVar14; + if (0xff < uVar12) { + uVar12 = -(uint)(0 < (int)uVar12); + } + lVar14 = lrintf(ABS(fVar29 + pfVar21[1] * fVar28)); + uVar13 = (uint)lVar14; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + *puVar19 = (char)uVar12; + puVar19[1] = (char)uVar13; + lVar14 = lrintf(ABS(fVar29 + pfVar21[2] * fVar28)); + uVar12 = (uint)lVar14; + if (0xff < uVar12) { + uVar12 = -(uint)(0 < (int)uVar12); + } + lVar14 = lrintf(ABS(fVar29 + pfVar21[3] * fVar28)); + uVar13 = (uint)lVar14; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + puVar19[2] = (char)uVar12; + puVar1 = puVar19 + 4; + pfVar21 = pfVar21 + 4; + puVar19[3] = (char)uVar13; + puVar19 = puVar1; + iVar11 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar16 + 4 + (ulong)uVar5 * 4)); + } + if (iVar11 < iVar2) { + lVar14 = 0; + do { + lVar15 = lrintf(ABS(fVar29 + *(float *)(param_1 + (long)iVar11 * 4 + lVar14 * 4) * fVar28) + ); + cVar17 = (char)lVar15; + if (0xff < (uint)lVar15) { + cVar17 = -(0 < (int)(uint)lVar15); + } + *(char *)((long)param_5 + lVar14 + iVar11) = cVar17; + lVar14 = lVar14 + 1; + } while (lVar14 != (ulong)(uint)((iVar2 + -1) - iVar11) + 1); + } + iVar20 = iVar20 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar20 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027ab1c (952 bytes) name=FUN_0027ab1c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027ab1c(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + int iVar7; + uint uVar8; + uint uVar9; + long lVar10; + long lVar11; + short sVar12; + undefined8 *puVar13; + short *psVar14; + ulong uVar15; + undefined2 *puVar16; + int iVar17; + long lVar18; + undefined8 uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + undefined4 uVar29; + undefined4 uVar30; + int iVar31; + + iVar17 = param_7[1]; + iVar1 = *param_7; + fVar27 = (float)*param_8; + fVar28 = (float)param_8[1]; + if (iVar17 != 0) { + uVar3 = iVar1 - 8U >> 3; + uVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + uVar2 = 0; + } + lVar18 = (long)(int)uVar2; + uVar4 = (iVar1 + -4) - uVar2 >> 2; + do { + if (0 < iVar1 + -7) { + puVar13 = param_5; + psVar14 = param_1; + do { + auVar22._0_4_ = (int)psVar14[4]; + auVar22._4_4_ = (int)psVar14[5]; + auVar22._8_4_ = (int)psVar14[6]; + auVar22._12_4_ = (int)psVar14[7]; + auVar22 = NEON_scvtf(auVar22,4); + auVar21._0_4_ = (int)*psVar14; + auVar21._4_4_ = (int)psVar14[1]; + auVar21._8_4_ = (int)psVar14[2]; + auVar21._12_4_ = (int)psVar14[3]; + auVar21 = NEON_scvtf(auVar21,4); + psVar14 = psVar14 + 8; + fVar23 = fVar28 + auVar21._0_4_ * fVar27; + fVar24 = fVar28 + auVar21._4_4_ * fVar27; + fVar25 = fVar28 + auVar21._8_4_ * fVar27; + fVar26 = fVar28 + auVar21._12_4_ * fVar27; + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar7 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar5._4_4_ = iVar31; + auVar5._0_4_ = iVar7; + auVar5._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar5._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar31,iVar7),auVar5,4); + uVar29 = (undefined4)uVar19; + uVar30 = (undefined4)((ulong)uVar19 >> 0x20); + } + else { + iVar7 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar31; + auVar6._0_4_ = iVar7; + auVar6._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar31,iVar7),auVar6,4); + uVar29 = (undefined4)uVar19; + uVar30 = (undefined4)((ulong)uVar19 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar20._0_8_ = + CONCAT44((int)(fVar28 + auVar22._4_4_ * fVar27 + DAT_00531e90_4), + (int)(fVar28 + auVar22._0_4_ * fVar27 + _DAT_00531e90)); + auVar20._8_4_ = (int)(fVar28 + auVar22._8_4_ * fVar27 + (float)uRam0000000000531e98); + auVar20._12_4_ = (int)(fVar28 + auVar22._12_4_ * fVar27 + uRam0000000000531e98._4_4_); + uVar19 = NEON_uqxtn(auVar20._0_8_,auVar20,4); + puVar13[1] = uVar19; + *puVar13 = CONCAT44(uVar30,uVar29); + puVar13 = puVar13 + 2; + } while (psVar14 != param_1 + ((ulong)uVar3 + 1) * 8); + } + uVar8 = uVar2; + if ((int)uVar2 < iVar1 + -3) { + psVar14 = param_1 + lVar18; + puVar16 = (undefined2 *)((long)param_5 + lVar18 * 2); + do { + lVar10 = lrintf(fVar28 + (float)(int)*psVar14 * fVar27); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar28 + (float)(int)psVar14[1] * fVar27); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *puVar16 = (short)uVar8; + puVar16[1] = (short)uVar9; + lVar10 = lrintf(fVar28 + (float)(int)psVar14[2] * fVar27); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar28 + (float)(int)psVar14[3] * fVar27); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + psVar14 = psVar14 + 4; + /* try { // try from 0027ae04 to 0037af27 has its CatchHandler @ 0027ae04 + catch() { ... } // from try @ 0027ae04 with catch @ 0027ae04 + catch() { ... } // from try @ 0027af3c with catch @ 0027ae04 + catch() { ... } // from try @ 0027b010 with catch @ 0027ae04 */ + puVar16[2] = (short)uVar8; + puVar16[3] = (short)uVar9; + puVar16 = puVar16 + 4; + uVar8 = uVar2 + 4 + uVar4 * 4; + } while (psVar14 != param_1 + lVar18 + 4 + (ulong)uVar4 * 4); + } + if ((int)uVar8 < iVar1) { + lVar10 = 0; + uVar15 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + do { + lVar11 = lrintf(fVar28 + (float)(int)*(short *)((long)param_1 + lVar10 + uVar15) * fVar27) + ; + sVar12 = (short)lVar11; + if (0xffff < (uint)lVar11) { + sVar12 = -(ushort)(0 < (int)(uint)lVar11); + } + *(short *)((long)param_5 + lVar10 + uVar15) = sVar12; + lVar10 = lVar10 + 2; + } while (lVar10 != ((ulong)((iVar1 + -1) - uVar8) + 1) * 2); + } + iVar17 = iVar17 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar17 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027aed4 (952 bytes) name=FUN_0027aed4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027aed4(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + int iVar7; + uint uVar8; + uint uVar9; + long lVar10; + long lVar11; + short sVar12; + undefined8 *puVar13; + ushort *puVar14; + ulong uVar15; + undefined2 *puVar16; + int iVar17; + long lVar18; + undefined8 uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + undefined4 uVar29; + undefined4 uVar30; + int iVar31; + + iVar17 = param_7[1]; + iVar1 = *param_7; + /* try { // try from 0027af28 to 0037af3b has its CatchHandler @ 0027b258 */ + fVar27 = (float)*param_8; + fVar28 = (float)param_8[1]; + if (iVar17 != 0) { + /* try { // try from 0027af3c to 0037af4b has its CatchHandler @ 0027ae04 */ + uVar3 = iVar1 - 8U >> 3; + /* try { // try from 0027af4c to 0037af5b has its CatchHandler @ 0027b244 */ + uVar2 = (uVar3 + 1) * 8; + /* try { // try from 0027af6c to 0037b00f has its CatchHandler @ 0027b258 */ + if (iVar1 + -7 < 1) { + uVar2 = 0; + } + lVar18 = (long)(int)uVar2; + uVar4 = (iVar1 + -4) - uVar2 >> 2; + do { + if (0 < iVar1 + -7) { + puVar13 = param_5; + puVar14 = param_1; + do { + auVar22._2_2_ = 0; + auVar22._0_2_ = puVar14[4]; + auVar22._4_2_ = puVar14[5]; + auVar22._6_2_ = 0; + auVar22._8_2_ = puVar14[6]; + auVar22._10_2_ = 0; + auVar22._12_2_ = puVar14[7]; + auVar22._14_2_ = 0; + auVar22 = NEON_ucvtf(auVar22,4); + auVar21._2_2_ = 0; + auVar21._0_2_ = *puVar14; + auVar21._4_2_ = puVar14[1]; + auVar21._6_2_ = 0; + auVar21._8_2_ = puVar14[2]; + auVar21._10_2_ = 0; + auVar21._12_2_ = puVar14[3]; + auVar21._14_2_ = 0; + auVar21 = NEON_ucvtf(auVar21,4); + puVar14 = puVar14 + 8; + fVar23 = fVar28 + auVar21._0_4_ * fVar27; + fVar24 = fVar28 + auVar21._4_4_ * fVar27; + fVar25 = fVar28 + auVar21._8_4_ * fVar27; + fVar26 = fVar28 + auVar21._12_4_ * fVar27; + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar7 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar5._4_4_ = iVar31; + auVar5._0_4_ = iVar7; + auVar5._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar5._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar31,iVar7),auVar5,4); + uVar29 = (undefined4)uVar19; + uVar30 = (undefined4)((ulong)uVar19 >> 0x20); + } + else { + /* try { // try from 0027b010 to 0037b2c3 has its CatchHandler @ 0027ae04 */ + iVar7 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar31; + auVar6._0_4_ = iVar7; + auVar6._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar31,iVar7),auVar6,4); + uVar29 = (undefined4)uVar19; + uVar30 = (undefined4)((ulong)uVar19 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar20._0_8_ = + CONCAT44((int)(fVar28 + auVar22._4_4_ * fVar27 + DAT_00531e90_4), + (int)(fVar28 + auVar22._0_4_ * fVar27 + _DAT_00531e90)); + auVar20._8_4_ = (int)(fVar28 + auVar22._8_4_ * fVar27 + (float)uRam0000000000531e98); + auVar20._12_4_ = (int)(fVar28 + auVar22._12_4_ * fVar27 + uRam0000000000531e98._4_4_); + uVar19 = NEON_uqxtn(auVar20._0_8_,auVar20,4); + puVar13[1] = uVar19; + *puVar13 = CONCAT44(uVar30,uVar29); + puVar13 = puVar13 + 2; + } while (puVar14 != param_1 + ((ulong)uVar3 + 1) * 8); + } + uVar8 = uVar2; + if ((int)uVar2 < iVar1 + -3) { + puVar14 = param_1 + lVar18; + puVar16 = (undefined2 *)((long)param_5 + lVar18 * 2); + do { + lVar10 = lrintf(fVar28 + (float)*puVar14 * fVar27); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar28 + (float)puVar14[1] * fVar27); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *puVar16 = (short)uVar8; + puVar16[1] = (short)uVar9; + lVar10 = lrintf(fVar28 + (float)puVar14[2] * fVar27); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar28 + (float)puVar14[3] * fVar27); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + puVar14 = puVar14 + 4; + puVar16[2] = (short)uVar8; + puVar16[3] = (short)uVar9; + puVar16 = puVar16 + 4; + uVar8 = uVar2 + 4 + uVar4 * 4; + } while (puVar14 != param_1 + lVar18 + 4 + (ulong)uVar4 * 4); + } + if ((int)uVar8 < iVar1) { + lVar10 = 0; + uVar15 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + do { + lVar11 = lrintf(fVar28 + (float)*(ushort *)((long)param_1 + lVar10 + uVar15) * fVar27); + sVar12 = (short)lVar11; + if (0xffff < (uint)lVar11) { + sVar12 = -(ushort)(0 < (int)(uint)lVar11); + } + *(short *)((long)param_5 + lVar10 + uVar15) = sVar12; + lVar10 = lVar10 + 2; + } while (lVar10 != ((ulong)((iVar1 + -1) - uVar8) + 1) * 2); + } + iVar17 = iVar17 + -1; + /* catch() { ... } // from try @ 0027af4c with catch @ 0027b244 */ + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar17 != 0); + } + /* catch() { ... } // from try @ 0027af28 with catch @ 0027b258 + catch() { ... } // from try @ 0027af6c with catch @ 0027b258 */ + return; +} + + +================================================================== + +### FUNC 0027b28c (936 bytes) name=FUN_0027b28c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027b28c(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + int iVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + char cVar14; + undefined8 *puVar15; + undefined1 *puVar16; + ushort *puVar17; + int iVar18; + long lVar19; + undefined1 auVar21 [16]; + undefined8 uVar20; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + undefined4 uVar31; + undefined4 uVar32; + int iVar33; + + iVar18 = param_7[1]; + iVar2 = *param_7; + fVar29 = (float)*param_8; + fVar30 = (float)param_8[1]; + if (iVar18 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar13 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar19 = NEON_shl(lVar13,1); + do { + if (0 < iVar2 + -7) { + puVar15 = param_5; + puVar17 = param_1; + do { + auVar24._2_2_ = 0; + auVar24._0_2_ = puVar17[4]; + auVar24._4_2_ = puVar17[5]; + auVar24._6_2_ = 0; + auVar24._8_2_ = puVar17[6]; + auVar24._10_2_ = 0; + auVar24._12_2_ = puVar17[7]; + auVar24._14_2_ = 0; + auVar24 = NEON_ucvtf(auVar24,4); + auVar22._2_2_ = 0; + auVar22._0_2_ = *puVar17; + auVar22._4_2_ = puVar17[1]; + auVar22._6_2_ = 0; + auVar22._8_2_ = puVar17[2]; + auVar22._10_2_ = 0; + auVar22._12_2_ = puVar17[3]; + auVar22._14_2_ = 0; + auVar22 = NEON_ucvtf(auVar22,4); + puVar17 = puVar17 + 8; + fVar25 = fVar30 + auVar22._0_4_ * fVar29; + fVar26 = fVar30 + auVar22._4_4_ * fVar29; + fVar27 = fVar30 + auVar22._8_4_ * fVar29; + fVar28 = fVar30 + auVar22._12_4_ * fVar29; + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar22 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar22._8_8_; + _DAT_00531e90 = auVar22._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar8 = (int)(fVar25 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar33; + auVar6._0_4_ = iVar8; + auVar6._8_4_ = (int)(fVar27 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar28 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar20 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar6,4); + uVar31 = (undefined4)uVar20; + uVar32 = (undefined4)((ulong)uVar20 >> 0x20); + } + else { + iVar8 = (int)(fVar25 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar33; + auVar7._0_4_ = iVar8; + auVar7._8_4_ = (int)(fVar27 + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(fVar28 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar20 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar7,4); + uVar31 = (undefined4)uVar20; + uVar32 = (undefined4)((ulong)uVar20 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar22 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar22._8_8_; + _DAT_00531e90 = auVar22._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar23._4_4_ = uVar32; + auVar23._0_4_ = uVar31; + auVar21._0_8_ = + CONCAT44((int)(fVar30 + auVar24._4_4_ * fVar29 + DAT_00531e90_4), + (int)(fVar30 + auVar24._0_4_ * fVar29 + _DAT_00531e90)); + auVar21._8_4_ = (int)(fVar30 + auVar24._8_4_ * fVar29 + (float)uRam0000000000531e98); + auVar21._12_4_ = (int)(fVar30 + auVar24._12_4_ * fVar29 + uRam0000000000531e98._4_4_); + uVar20 = NEON_uqxtn(auVar21._0_8_,auVar21,4); + auVar23._8_8_ = uVar20; + uVar20 = NEON_uqxtn(uVar20,auVar23,2); + *puVar15 = uVar20; + puVar15 = puVar15 + 1; + } while (puVar17 != param_1 + ((ulong)uVar4 + 1) * 8); + } + iVar8 = iVar3; + if (iVar3 < iVar2 + -3) { + puVar17 = (ushort *)((long)param_1 + lVar19); + puVar16 = (undefined1 *)((long)param_5 + lVar13); + do { + lVar11 = lrintf(fVar30 + (float)*puVar17 * fVar29); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(fVar30 + (float)puVar17[1] * fVar29); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *puVar16 = (char)uVar9; + puVar16[1] = (char)uVar10; + lVar11 = lrintf(fVar30 + (float)puVar17[2] * fVar29); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(fVar30 + (float)puVar17[3] * fVar29); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar16[2] = (char)uVar9; + puVar1 = puVar16 + 4; + puVar17 = puVar17 + 4; + puVar16[3] = (char)uVar10; + puVar16 = puVar1; + iVar8 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar13 + 4 + (ulong)uVar5 * 4)); + } + if (iVar8 < iVar2) { + lVar11 = 0; + do { + lVar12 = lrintf(fVar30 + (float)param_1[iVar8 + lVar11] * fVar29); + cVar14 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar14 = -(0 < (int)(uint)lVar12); + } + *(char *)((long)param_5 + lVar11 + iVar8) = cVar14; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar8) + 1); + } + iVar18 = iVar18 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027b634 (964 bytes) name=FUN_0027b634 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027b634(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + int iVar7; + uint uVar8; + uint uVar9; + long lVar10; + long lVar11; + long lVar12; + short sVar13; + char *pcVar14; + undefined8 *puVar15; + undefined8 *puVar16; + undefined2 *puVar17; + int iVar18; + undefined8 *puVar19; + long lVar20; + undefined1 auVar22 [16]; + undefined8 uVar21; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + undefined4 uVar31; + undefined4 uVar32; + int iVar33; + + iVar18 = param_7[1]; + iVar1 = *param_7; + fVar29 = (float)*param_8; + fVar30 = (float)param_8[1]; + if (iVar18 != 0) { + uVar3 = iVar1 - 8U >> 3; + iVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + iVar2 = 0; + } + lVar12 = (long)iVar2; + uVar4 = (uint)((iVar1 + -4) - iVar2) >> 2; + lVar20 = NEON_shl(lVar12,1); + do { + if (0 < iVar1 + -7) { + puVar16 = param_5; + puVar19 = param_1; + do { + uVar21 = *puVar19; + auVar24._0_4_ = (int)(short)(char)uVar21; + auVar24._4_4_ = (int)(short)(char)((ulong)uVar21 >> 8); + auVar24._8_4_ = (int)(short)(char)((ulong)uVar21 >> 0x10); + auVar24._12_4_ = (int)(short)(char)((ulong)uVar21 >> 0x18); + auVar24 = NEON_scvtf(auVar24,4); + puVar19 = puVar19 + 1; + auVar23._0_4_ = (int)(short)(char)((ulong)uVar21 >> 0x20); + auVar23._4_4_ = (int)(short)(char)((ulong)uVar21 >> 0x28); + auVar23._8_4_ = (int)(short)(char)((ulong)uVar21 >> 0x30); + auVar23._12_4_ = (int)(short)(char)((ulong)uVar21 >> 0x38); + auVar23 = NEON_scvtf(auVar23,4); + fVar25 = fVar30 + auVar24._0_4_ * fVar29; + fVar26 = fVar30 + auVar24._4_4_ * fVar29; + fVar27 = fVar30 + auVar24._8_4_ * fVar29; + fVar28 = fVar30 + auVar24._12_4_ * fVar29; + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar7 = (int)(fVar25 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar5._4_4_ = iVar33; + auVar5._0_4_ = iVar7; + auVar5._8_4_ = (int)(fVar27 + (float)uRam0000000000531e98); + auVar5._12_4_ = (int)(fVar28 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar33,iVar7),auVar5,4); + uVar31 = (undefined4)uVar21; + uVar32 = (undefined4)((ulong)uVar21 >> 0x20); + } + else { + iVar7 = (int)(fVar25 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar33; + auVar6._0_4_ = iVar7; + auVar6._8_4_ = (int)(fVar27 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar28 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar33,iVar7),auVar6,4); + uVar31 = (undefined4)uVar21; + uVar32 = (undefined4)((ulong)uVar21 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar22._0_8_ = + CONCAT44((int)(fVar30 + auVar23._4_4_ * fVar29 + DAT_00531e90_4), + (int)(fVar30 + auVar23._0_4_ * fVar29 + _DAT_00531e90)); + auVar22._8_4_ = (int)(fVar30 + auVar23._8_4_ * fVar29 + (float)uRam0000000000531e98); + auVar22._12_4_ = (int)(fVar30 + auVar23._12_4_ * fVar29 + uRam0000000000531e98._4_4_); + uVar21 = NEON_uqxtn(auVar22._0_8_,auVar22,4); + puVar15 = puVar16 + 2; + puVar16[1] = uVar21; + *puVar16 = CONCAT44(uVar32,uVar31); + puVar16 = puVar15; + } while (puVar15 != param_5 + ((ulong)uVar3 + 1) * 2); + } + iVar7 = iVar2; + if (iVar2 < iVar1 + -3) { + pcVar14 = (char *)((long)param_1 + lVar12); + puVar17 = (undefined2 *)((long)param_5 + lVar20); + do { + lVar10 = lrintf(fVar30 + (float)(int)*pcVar14 * fVar29); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar30 + (float)(int)pcVar14[1] * fVar29); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *puVar17 = (short)uVar8; + puVar17[1] = (short)uVar9; + lVar10 = lrintf(fVar30 + (float)(int)pcVar14[2] * fVar29); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar30 + (float)(int)pcVar14[3] * fVar29); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + pcVar14 = pcVar14 + 4; + puVar17[2] = (short)uVar8; + puVar17[3] = (short)uVar9; + puVar17 = puVar17 + 4; + iVar7 = iVar2 + 4 + uVar4 * 4; + } while (pcVar14 != (char *)((long)param_1 + lVar12 + 4 + (ulong)uVar4 * 4)); + } + if (iVar7 < iVar1) { + lVar10 = 0; + do { + lVar11 = lrintf(fVar30 + (float)(int)*(char *)((long)param_1 + lVar10 + iVar7) * fVar29); + sVar13 = (short)lVar11; + if (0xffff < (uint)lVar11) { + sVar13 = -(ushort)(0 < (int)(uint)lVar11); + } + *(short *)((long)param_5 + lVar10 * 2 + (long)iVar7 * 2) = sVar13; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(uint)((iVar1 + -1) - iVar7) + 1); + } + iVar18 = iVar18 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027b9f8 (964 bytes) name=FUN_0027b9f8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027b9f8(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + int iVar7; + uint uVar8; + uint uVar9; + long lVar10; + long lVar11; + long lVar12; + short sVar13; + byte *pbVar14; + undefined8 *puVar15; + undefined8 *puVar16; + undefined2 *puVar17; + int iVar18; + undefined8 *puVar19; + undefined1 uVar20; + long lVar21; + undefined1 auVar23 [16]; + undefined8 uVar22; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + undefined4 uVar32; + undefined4 uVar33; + int iVar34; + + iVar18 = param_7[1]; + iVar1 = *param_7; + fVar30 = (float)*param_8; + fVar31 = (float)param_8[1]; + if (iVar18 != 0) { + uVar3 = iVar1 - 8U >> 3; + iVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + iVar2 = 0; + } + lVar12 = (long)iVar2; + uVar4 = (uint)((iVar1 + -4) - iVar2) >> 2; + lVar21 = NEON_shl(lVar12,1); + do { + if (0 < iVar1 + -7) { + puVar16 = param_5; + puVar19 = param_1; + do { + uVar22 = *puVar19; + uVar20 = (undefined1)((ulong)uVar22 >> 8); + auVar25._6_2_ = 0; + auVar25._0_6_ = + (uint6)CONCAT14(uVar20,(uint)CONCAT12(uVar20,(ushort)(byte)uVar22)) & 0xffff0000ffff; + auVar25[8] = (char)((ulong)uVar22 >> 0x10); + auVar25._9_3_ = 0; + auVar25[0xc] = (char)((ulong)uVar22 >> 0x18); + auVar25._13_3_ = 0; + auVar25 = NEON_ucvtf(auVar25,4); + puVar19 = puVar19 + 1; + auVar24._1_3_ = 0; + auVar24[0] = (byte)((ulong)uVar22 >> 0x20); + auVar24[4] = (char)((ulong)uVar22 >> 0x28); + auVar24._5_3_ = 0; + auVar24[8] = (char)((ulong)uVar22 >> 0x30); + auVar24._9_3_ = 0; + auVar24[0xc] = (char)((ulong)uVar22 >> 0x38); + auVar24._13_3_ = 0; + auVar24 = NEON_ucvtf(auVar24,4); + fVar26 = fVar31 + auVar25._0_4_ * fVar30; + fVar27 = fVar31 + auVar25._4_4_ * fVar30; + fVar28 = fVar31 + auVar25._8_4_ * fVar30; + fVar29 = fVar31 + auVar25._12_4_ * fVar30; + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar25 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar25._8_8_; + _DAT_00531e90 = auVar25._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar7 = (int)(fVar26 + (float)_DAT_00531e90); + iVar34 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar5._4_4_ = iVar34; + auVar5._0_4_ = iVar7; + auVar5._8_4_ = (int)(fVar28 + (float)uRam0000000000531e98); + auVar5._12_4_ = (int)(fVar29 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar22 = NEON_uqxtn(CONCAT44(iVar34,iVar7),auVar5,4); + uVar32 = (undefined4)uVar22; + uVar33 = (undefined4)((ulong)uVar22 >> 0x20); + } + else { + iVar7 = (int)(fVar26 + (float)_DAT_00531e90); + iVar34 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar34; + auVar6._0_4_ = iVar7; + auVar6._8_4_ = (int)(fVar28 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar29 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar22 = NEON_uqxtn(CONCAT44(iVar34,iVar7),auVar6,4); + uVar32 = (undefined4)uVar22; + uVar33 = (undefined4)((ulong)uVar22 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec0), iVar7 != 0)) + { + auVar25 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar25._8_8_; + _DAT_00531e90 = auVar25._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar23._0_8_ = + CONCAT44((int)(fVar31 + auVar24._4_4_ * fVar30 + DAT_00531e90_4), + (int)(fVar31 + auVar24._0_4_ * fVar30 + _DAT_00531e90)); + auVar23._8_4_ = (int)(fVar31 + auVar24._8_4_ * fVar30 + (float)uRam0000000000531e98); + auVar23._12_4_ = (int)(fVar31 + auVar24._12_4_ * fVar30 + uRam0000000000531e98._4_4_); + uVar22 = NEON_uqxtn(auVar23._0_8_,auVar23,4); + puVar15 = puVar16 + 2; + puVar16[1] = uVar22; + *puVar16 = CONCAT44(uVar33,uVar32); + puVar16 = puVar15; + } while (puVar15 != param_5 + ((ulong)uVar3 + 1) * 2); + } + iVar7 = iVar2; + if (iVar2 < iVar1 + -3) { + pbVar14 = (byte *)((long)param_1 + lVar12); + puVar17 = (undefined2 *)((long)param_5 + lVar21); + do { + lVar10 = lrintf(fVar31 + (float)*pbVar14 * fVar30); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar31 + (float)pbVar14[1] * fVar30); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *puVar17 = (short)uVar8; + puVar17[1] = (short)uVar9; + lVar10 = lrintf(fVar31 + (float)pbVar14[2] * fVar30); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + lVar10 = lrintf(fVar31 + (float)pbVar14[3] * fVar30); + uVar9 = (uint)lVar10; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + pbVar14 = pbVar14 + 4; + puVar17[2] = (short)uVar8; + puVar17[3] = (short)uVar9; + puVar17 = puVar17 + 4; + iVar7 = iVar2 + 4 + uVar4 * 4; + } while (pbVar14 != (byte *)((long)param_1 + lVar12 + 4 + (ulong)uVar4 * 4)); + } + if (iVar7 < iVar1) { + lVar10 = 0; + do { + lVar11 = lrintf(fVar31 + (float)*(byte *)((long)param_1 + lVar10 + iVar7) * fVar30); + sVar13 = (short)lVar11; + if (0xffff < (uint)lVar11) { + sVar13 = -(ushort)(0 < (int)(uint)lVar11); + } + *(short *)((long)param_5 + lVar10 * 2 + (long)iVar7 * 2) = sVar13; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(uint)((iVar1 + -1) - iVar7) + 1); + } + iVar18 = iVar18 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027bdbc (936 bytes) name=FUN_0027bdbc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027bdbc(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + int iVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + char cVar14; + undefined8 *puVar15; + undefined1 *puVar16; + short *psVar17; + int iVar18; + long lVar19; + undefined1 auVar21 [16]; + undefined8 uVar20; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + undefined4 uVar31; + undefined4 uVar32; + int iVar33; + + iVar18 = param_7[1]; + iVar2 = *param_7; + fVar29 = (float)*param_8; + fVar30 = (float)param_8[1]; + if (iVar18 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar13 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar19 = NEON_shl(lVar13,1); + do { + if (0 < iVar2 + -7) { + puVar15 = param_5; + psVar17 = param_1; + do { + auVar24._0_4_ = (int)psVar17[4]; + auVar24._4_4_ = (int)psVar17[5]; + auVar24._8_4_ = (int)psVar17[6]; + auVar24._12_4_ = (int)psVar17[7]; + auVar24 = NEON_scvtf(auVar24,4); + auVar22._0_4_ = (int)*psVar17; + auVar22._4_4_ = (int)psVar17[1]; + auVar22._8_4_ = (int)psVar17[2]; + auVar22._12_4_ = (int)psVar17[3]; + auVar22 = NEON_scvtf(auVar22,4); + psVar17 = psVar17 + 8; + fVar25 = fVar30 + auVar22._0_4_ * fVar29; + fVar26 = fVar30 + auVar22._4_4_ * fVar29; + fVar27 = fVar30 + auVar22._8_4_ * fVar29; + fVar28 = fVar30 + auVar22._12_4_ * fVar29; + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar22 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar22._8_8_; + _DAT_00531e90 = auVar22._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar8 = (int)(fVar25 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar33; + auVar6._0_4_ = iVar8; + auVar6._8_4_ = (int)(fVar27 + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(fVar28 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar20 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar6,4); + uVar31 = (undefined4)uVar20; + uVar32 = (undefined4)((ulong)uVar20 >> 0x20); + } + else { + iVar8 = (int)(fVar25 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar33; + auVar7._0_4_ = iVar8; + auVar7._8_4_ = (int)(fVar27 + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(fVar28 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar20 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar7,4); + uVar31 = (undefined4)uVar20; + uVar32 = (undefined4)((ulong)uVar20 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar22 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar22._8_8_; + _DAT_00531e90 = auVar22._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar23._4_4_ = uVar32; + auVar23._0_4_ = uVar31; + auVar21._0_8_ = + CONCAT44((int)(fVar30 + auVar24._4_4_ * fVar29 + DAT_00531e90_4), + (int)(fVar30 + auVar24._0_4_ * fVar29 + _DAT_00531e90)); + auVar21._8_4_ = (int)(fVar30 + auVar24._8_4_ * fVar29 + (float)uRam0000000000531e98); + auVar21._12_4_ = (int)(fVar30 + auVar24._12_4_ * fVar29 + uRam0000000000531e98._4_4_); + uVar20 = NEON_uqxtn(auVar21._0_8_,auVar21,4); + auVar23._8_8_ = uVar20; + uVar20 = NEON_uqxtn(uVar20,auVar23,2); + *puVar15 = uVar20; + puVar15 = puVar15 + 1; + } while (psVar17 != param_1 + ((ulong)uVar4 + 1) * 8); + } + iVar8 = iVar3; + if (iVar3 < iVar2 + -3) { + psVar17 = (short *)((long)param_1 + lVar19); + puVar16 = (undefined1 *)((long)param_5 + lVar13); + do { + lVar11 = lrintf(fVar30 + (float)(int)*psVar17 * fVar29); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(fVar30 + (float)(int)psVar17[1] * fVar29); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *puVar16 = (char)uVar9; + puVar16[1] = (char)uVar10; + lVar11 = lrintf(fVar30 + (float)(int)psVar17[2] * fVar29); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(fVar30 + (float)(int)psVar17[3] * fVar29); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar16[2] = (char)uVar9; + puVar1 = puVar16 + 4; + psVar17 = psVar17 + 4; + puVar16[3] = (char)uVar10; + puVar16 = puVar1; + iVar8 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar13 + 4 + (ulong)uVar5 * 4)); + } + if (iVar8 < iVar2) { + lVar11 = 0; + do { + lVar12 = lrintf(fVar30 + (float)(int)param_1[iVar8 + lVar11] * fVar29); + cVar14 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar14 = -(0 < (int)(uint)lVar12); + } + *(char *)((long)param_5 + lVar11 + iVar8) = cVar14; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar8) + 1); + } + iVar18 = iVar18 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027c164 (956 bytes) name=FUN_0027c164 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027c164(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined1 auVar5 [16]; + int iVar6; + uint uVar7; + uint uVar8; + undefined1 (*pauVar9) [16]; + long lVar10; + long lVar11; + short sVar12; + long lVar13; + undefined8 *puVar14; + undefined2 *puVar15; + int iVar16; + undefined1 (*pauVar17) [16]; + int *piVar18; + undefined8 uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + undefined4 uVar29; + undefined4 uVar30; + int iVar31; + + iVar16 = param_7[1]; + iVar1 = *param_7; + fVar27 = (float)*param_8; + fVar28 = (float)param_8[1]; + if (iVar16 != 0) { + uVar3 = iVar1 - 8U >> 3; + iVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + iVar2 = 0; + } + uVar4 = (uint)((iVar1 + -4) - iVar2) >> 2; + lVar13 = (long)iVar2; + do { + if (0 < iVar1 + -7) { + pauVar17 = (undefined1 (*) [16])(param_1 + 0x10); + puVar14 = param_5; + do { + auVar21 = *pauVar17; + pauVar9 = pauVar17 + -1; + pauVar17 = pauVar17 + 2; + auVar22 = NEON_scvtf(auVar21,4); + auVar21 = NEON_scvtf(*pauVar9,4); + fVar23 = fVar28 + auVar21._0_4_ * fVar27; + fVar24 = fVar28 + auVar21._4_4_ * fVar27; + fVar25 = fVar28 + auVar21._8_4_ * fVar27; + fVar26 = fVar28 + auVar21._12_4_ * fVar27; + if (((DAT_00531ec0 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ec0), iVar6 != 0)) + { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar6 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar5._4_4_ = iVar31; + auVar5._0_4_ = iVar6; + auVar5._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar5._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar31,iVar6),auVar5,4); + uVar29 = (undefined4)uVar19; + uVar30 = (undefined4)((ulong)uVar19 >> 0x20); + } + else { + iVar6 = (int)(fVar23 + (float)_DAT_00531e90); + iVar31 = (int)(fVar24 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar21._4_4_ = iVar31; + auVar21._0_4_ = iVar6; + auVar21._8_4_ = (int)(fVar25 + (float)uRam0000000000531e98); + auVar21._12_4_ = (int)(fVar26 + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar19 = NEON_uqxtn(CONCAT44(iVar31,iVar6),auVar21,4); + uVar29 = (undefined4)uVar19; + uVar30 = (undefined4)((ulong)uVar19 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00531ec0), iVar6 != 0)) + { + auVar21 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar21._8_8_; + _DAT_00531e90 = auVar21._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar20._0_8_ = + CONCAT44((int)(fVar28 + auVar22._4_4_ * fVar27 + DAT_00531e90_4), + (int)(fVar28 + auVar22._0_4_ * fVar27 + _DAT_00531e90)); + auVar20._8_4_ = (int)(fVar28 + auVar22._8_4_ * fVar27 + (float)uRam0000000000531e98); + auVar20._12_4_ = (int)(fVar28 + auVar22._12_4_ * fVar27 + uRam0000000000531e98._4_4_); + uVar19 = NEON_uqxtn(auVar20._0_8_,auVar20,4); + puVar14[1] = uVar19; + *puVar14 = CONCAT44(uVar30,uVar29); + puVar14 = puVar14 + 2; + } while (pauVar17 != (undefined1 (*) [16])(param_1 + (ulong)uVar3 * 0x20 + 0x30)); + } + iVar6 = iVar2; + if (iVar2 < iVar1 + -3) { + piVar18 = (int *)(param_1 + lVar13 * 4); + puVar15 = (undefined2 *)((long)param_5 + lVar13 * 2); + do { + lVar10 = lrintf(fVar28 + (float)*piVar18 * fVar27); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar10 = lrintf(fVar28 + (float)piVar18[1] * fVar27); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + iVar6 = piVar18[2]; + *puVar15 = (short)uVar7; + puVar15[1] = (short)uVar8; + lVar10 = lrintf(fVar28 + (float)iVar6 * fVar27); + uVar7 = (uint)lVar10; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar10 = lrintf(fVar28 + (float)piVar18[3] * fVar27); + uVar8 = (uint)lVar10; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + piVar18 = piVar18 + 4; + puVar15[2] = (short)uVar7; + puVar15[3] = (short)uVar8; + puVar15 = puVar15 + 4; + iVar6 = iVar2 + 4 + uVar4 * 4; + } while (piVar18 != (int *)(param_1 + (lVar13 + 4 + (ulong)uVar4 * 4) * 4)); + } + if (iVar6 < iVar1) { + lVar10 = 0; + do { + lVar11 = lrintf(fVar28 + (float)*(int *)(param_1 + (long)iVar6 * 4 + lVar10 * 4) * fVar27) + ; + sVar12 = (short)lVar11; + if (0xffff < (uint)lVar11) { + sVar12 = -(ushort)(0 < (int)(uint)lVar11); + } + *(short *)((long)param_5 + lVar10 * 2 + (long)iVar6 * 2) = sVar12; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(uint)((iVar1 + -1) - iVar6) + 1); + } + iVar16 = iVar16 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar16 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027c520 (924 bytes) name=FUN_0027c520 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027c520(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + long lVar9; + long lVar10; + long lVar11; + char cVar12; + undefined8 *puVar13; + undefined1 *puVar14; + int iVar15; + undefined1 (*pauVar16) [16]; + int *piVar17; + long lVar18; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined8 uVar19; + undefined8 uVar20; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + float fVar26; + float fVar27; + int iVar28; + + iVar15 = param_7[1]; + iVar2 = *param_7; + fVar26 = (float)*param_8; + fVar27 = (float)param_8[1]; + if (iVar15 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar11 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar18 = NEON_shl(lVar11,2); + do { + if (0 < iVar2 + -7) { + pauVar16 = (undefined1 (*) [16])(param_1 + 0x10); + puVar13 = param_5; + do { + auVar25 = NEON_scvtf(pauVar16[-1],4); + auVar23._0_8_ = + CONCAT44(ABS(auVar25._4_4_ * fVar26 + fVar27),ABS(auVar25._0_4_ * fVar26 + fVar27)); + auVar23._8_4_ = ABS(auVar25._8_4_ * fVar26 + fVar27); + auVar23._12_4_ = ABS(auVar25._12_4_ * fVar26 + fVar27); + if ((DAT_00531ec0 & 1) == 0) { + uVar20 = auVar23._8_8_; + iVar6 = __cxa_guard_acquire(&DAT_00531ec0); + auVar23._8_8_ = uVar20; + if (iVar6 != 0) { + auVar25 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar25._8_8_; + _DAT_00531e90 = auVar25._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar25 = *pauVar16; + pauVar16 = pauVar16 + 2; + auVar21 = NEON_scvtf(auVar25,4); + iVar6 = (int)(auVar23._0_4_ + (float)_DAT_00531e90); + iVar28 = (int)(auVar23._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar25._4_4_ = iVar28; + auVar25._0_4_ = iVar6; + auVar25._8_4_ = (int)(auVar23._8_4_ + (float)uRam0000000000531e98); + auVar25._12_4_ = (int)(auVar23._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar20 = NEON_uqxtn(CONCAT44(iVar28,iVar6),auVar25,4); + auVar22._0_8_ = + CONCAT44(ABS(auVar21._4_4_ * fVar26 + fVar27),ABS(auVar21._0_4_ * fVar26 + fVar27)); + auVar22._8_4_ = ABS(auVar21._8_4_ * fVar26 + fVar27); + auVar22._12_4_ = ABS(auVar21._12_4_ * fVar26 + fVar27); + if ((DAT_00531ec0 & 1) == 0) { + uVar19 = auVar22._8_8_; + iVar6 = __cxa_guard_acquire(&DAT_00531ec0); + auVar22._8_8_ = uVar19; + if (iVar6 != 0) { + auVar23 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar23._8_8_; + _DAT_00531e90 = auVar23._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + } + auVar21._0_8_ = + CONCAT44((int)(auVar22._4_4_ + DAT_00531e90_4),(int)(auVar22._0_4_ + _DAT_00531e90)); + auVar21._8_4_ = (int)(auVar22._8_4_ + (float)uRam0000000000531e98); + auVar21._12_4_ = (int)(auVar22._12_4_ + uRam0000000000531e98._4_4_); + uVar19 = NEON_uqxtn(auVar21._0_8_,auVar21,4); + auVar24._8_8_ = uVar19; + auVar24._0_8_ = uVar20; + uVar20 = NEON_uqxtn(uVar19,auVar24,2); + *puVar13 = uVar20; + puVar13 = puVar13 + 1; + } while (pauVar16 != (undefined1 (*) [16])(param_1 + (ulong)uVar4 * 0x20 + 0x30)); + } + iVar6 = iVar3; + if (iVar3 < iVar2 + -3) { + piVar17 = (int *)(param_1 + lVar18); + puVar14 = (undefined1 *)((long)param_5 + lVar11); + do { + lVar9 = lrintf(ABS(fVar27 + (float)*piVar17 * fVar26)); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar9 = lrintf(ABS(fVar27 + (float)piVar17[1] * fVar26)); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar14 = (char)uVar7; + puVar14[1] = (char)uVar8; + lVar9 = lrintf(ABS(fVar27 + (float)piVar17[2] * fVar26)); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar9 = lrintf(ABS(fVar27 + (float)piVar17[3] * fVar26)); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + puVar14[2] = (char)uVar7; + puVar1 = puVar14 + 4; + piVar17 = piVar17 + 4; + puVar14[3] = (char)uVar8; + puVar14 = puVar1; + iVar6 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar11 + 4 + (ulong)uVar5 * 4)); + } + if (iVar6 < iVar2) { + lVar9 = 0; + do { + lVar10 = lrintf(ABS(fVar27 + (float)*(int *)(param_1 + (long)iVar6 * 4 + lVar9 * 4) * + fVar26)); + cVar12 = (char)lVar10; + if (0xff < (uint)lVar10) { + cVar12 = -(0 < (int)(uint)lVar10); + } + *(char *)((long)param_5 + lVar9 + iVar6) = cVar12; + lVar9 = lVar9 + 1; + } while (lVar9 != (ulong)(uint)((iVar2 + -1) - iVar6) + 1); + } + iVar15 = iVar15 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar15 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027c8bc (940 bytes) name=FUN_0027c8bc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027c8bc(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + int iVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + char cVar14; + undefined8 *puVar15; + undefined1 *puVar16; + ushort *puVar17; + int iVar18; + float fVar19; + long lVar20; + float fVar26; + undefined1 auVar22 [16]; + undefined8 uVar21; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + undefined4 uVar31; + undefined4 uVar32; + int iVar33; + undefined1 auVar25 [16]; + + iVar18 = param_7[1]; + iVar2 = *param_7; + fVar29 = (float)*param_8; + fVar30 = (float)param_8[1]; + if (iVar18 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar13 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar20 = NEON_shl(lVar13,1); + do { + if (0 < iVar2 + -7) { + puVar15 = param_5; + puVar17 = param_1; + do { + auVar28._2_2_ = 0; + auVar28._0_2_ = puVar17[4]; + auVar28._4_2_ = puVar17[5]; + auVar28._6_2_ = 0; + auVar28._8_2_ = puVar17[6]; + auVar28._10_2_ = 0; + auVar28._12_2_ = puVar17[7]; + auVar28._14_2_ = 0; + auVar28 = NEON_ucvtf(auVar28,4); + auVar23._2_2_ = 0; + auVar23._0_2_ = *puVar17; + auVar23._4_2_ = puVar17[1]; + auVar23._6_2_ = 0; + auVar23._8_2_ = puVar17[2]; + auVar23._10_2_ = 0; + auVar23._12_2_ = puVar17[3]; + auVar23._14_2_ = 0; + auVar24 = NEON_ucvtf(auVar23,4); + puVar17 = puVar17 + 8; + fVar19 = ABS(auVar24._0_4_ * fVar29 + fVar30); + fVar26 = ABS(auVar24._4_4_ * fVar29 + fVar30); + auVar25._0_8_ = CONCAT44(fVar26,fVar19); + auVar25._8_4_ = ABS(auVar24._8_4_ * fVar29 + fVar30); + auVar25._12_4_ = ABS(auVar24._12_4_ * fVar29 + fVar30); + auVar24 = auVar25; + if ((DAT_00531ec0 & 1) == 0) { + iVar8 = __cxa_guard_acquire(&DAT_00531ec0); + auVar24._8_8_ = auVar25._8_8_; + auVar24._0_8_ = auVar25._0_8_; + if (iVar8 == 0) goto LAB_0027c9d0; + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar8 = (int)(fVar19 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar33; + auVar6._0_4_ = iVar8; + auVar6._8_4_ = (int)(auVar25._8_4_ + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(auVar25._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar6,4); + uVar31 = (undefined4)uVar21; + uVar32 = (undefined4)((ulong)uVar21 >> 0x20); + } + else { +LAB_0027c9d0: + iVar8 = (int)(auVar24._0_4_ + (float)_DAT_00531e90); + iVar33 = (int)(auVar24._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar33; + auVar7._0_4_ = iVar8; + auVar7._8_4_ = (int)(auVar24._8_4_ + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(auVar24._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar7,4); + uVar31 = (undefined4)uVar21; + uVar32 = (undefined4)((ulong)uVar21 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar27._4_4_ = uVar32; + auVar27._0_4_ = uVar31; + auVar22._0_8_ = + CONCAT44((int)(ABS(auVar28._4_4_ * fVar29 + fVar30) + DAT_00531e90_4), + (int)(ABS(auVar28._0_4_ * fVar29 + fVar30) + _DAT_00531e90)); + auVar22._8_4_ = (int)(ABS(auVar28._8_4_ * fVar29 + fVar30) + (float)uRam0000000000531e98); + auVar22._12_4_ = (int)(ABS(auVar28._12_4_ * fVar29 + fVar30) + uRam0000000000531e98._4_4_) + ; + uVar21 = NEON_uqxtn(auVar22._0_8_,auVar22,4); + auVar27._8_8_ = uVar21; + uVar21 = NEON_uqxtn(uVar21,auVar27,2); + *puVar15 = uVar21; + puVar15 = puVar15 + 1; + } while (puVar17 != param_1 + ((ulong)uVar4 + 1) * 8); + } + iVar8 = iVar3; + if (iVar3 < iVar2 + -3) { + puVar17 = (ushort *)((long)param_1 + lVar20); + puVar16 = (undefined1 *)((long)param_5 + lVar13); + do { + lVar11 = lrintf(ABS(fVar30 + (float)*puVar17 * fVar29)); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(ABS(fVar30 + (float)puVar17[1] * fVar29)); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *puVar16 = (char)uVar9; + puVar16[1] = (char)uVar10; + lVar11 = lrintf(ABS(fVar30 + (float)puVar17[2] * fVar29)); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(ABS(fVar30 + (float)puVar17[3] * fVar29)); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar16[2] = (char)uVar9; + puVar1 = puVar16 + 4; + puVar17 = puVar17 + 4; + puVar16[3] = (char)uVar10; + puVar16 = puVar1; + iVar8 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar13 + 4 + (ulong)uVar5 * 4)); + } + if (iVar8 < iVar2) { + lVar11 = 0; + do { + lVar12 = lrintf(ABS(fVar30 + (float)param_1[iVar8 + lVar11] * fVar29)); + cVar14 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar14 = -(0 < (int)(uint)lVar12); + } + *(char *)((long)param_5 + lVar11 + iVar8) = cVar14; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar8) + 1); + } + iVar18 = iVar18 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027cc68 (940 bytes) name=FUN_0027cc68 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027cc68(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + int iVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + char cVar14; + undefined8 *puVar15; + undefined1 *puVar16; + short *psVar17; + int iVar18; + float fVar19; + long lVar20; + float fVar26; + undefined1 auVar22 [16]; + undefined8 uVar21; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + undefined4 uVar31; + undefined4 uVar32; + int iVar33; + undefined1 auVar25 [16]; + + iVar18 = param_7[1]; + iVar2 = *param_7; + fVar29 = (float)*param_8; + fVar30 = (float)param_8[1]; + if (iVar18 != 0) { + uVar4 = iVar2 - 8U >> 3; + iVar3 = (uVar4 + 1) * 8; + if (iVar2 + -7 < 1) { + iVar3 = 0; + } + lVar13 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar20 = NEON_shl(lVar13,1); + do { + if (0 < iVar2 + -7) { + puVar15 = param_5; + psVar17 = param_1; + do { + auVar28._0_4_ = (int)psVar17[4]; + auVar28._4_4_ = (int)psVar17[5]; + auVar28._8_4_ = (int)psVar17[6]; + auVar28._12_4_ = (int)psVar17[7]; + auVar28 = NEON_scvtf(auVar28,4); + auVar23._0_4_ = (int)*psVar17; + auVar23._4_4_ = (int)psVar17[1]; + auVar23._8_4_ = (int)psVar17[2]; + auVar23._12_4_ = (int)psVar17[3]; + auVar24 = NEON_scvtf(auVar23,4); + psVar17 = psVar17 + 8; + fVar19 = ABS(auVar24._0_4_ * fVar29 + fVar30); + fVar26 = ABS(auVar24._4_4_ * fVar29 + fVar30); + auVar25._0_8_ = CONCAT44(fVar26,fVar19); + auVar25._8_4_ = ABS(auVar24._8_4_ * fVar29 + fVar30); + auVar25._12_4_ = ABS(auVar24._12_4_ * fVar29 + fVar30); + auVar24 = auVar25; + if ((DAT_00531ec0 & 1) == 0) { + iVar8 = __cxa_guard_acquire(&DAT_00531ec0); + auVar24._8_8_ = auVar25._8_8_; + auVar24._0_8_ = auVar25._0_8_; + if (iVar8 == 0) goto LAB_0027cd7c; + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar8 = (int)(fVar19 + (float)_DAT_00531e90); + iVar33 = (int)(fVar26 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar6._4_4_ = iVar33; + auVar6._0_4_ = iVar8; + auVar6._8_4_ = (int)(auVar25._8_4_ + (float)uRam0000000000531e98); + auVar6._12_4_ = (int)(auVar25._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar6,4); + uVar31 = (undefined4)uVar21; + uVar32 = (undefined4)((ulong)uVar21 >> 0x20); + } + else { +LAB_0027cd7c: + iVar8 = (int)(auVar24._0_4_ + (float)_DAT_00531e90); + iVar33 = (int)(auVar24._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar33; + auVar7._0_4_ = iVar8; + auVar7._8_4_ = (int)(auVar24._8_4_ + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(auVar24._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar33,iVar8),auVar7,4); + uVar31 = (undefined4)uVar21; + uVar32 = (undefined4)((ulong)uVar21 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec0), iVar8 != 0)) + { + auVar24 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar24._8_8_; + _DAT_00531e90 = auVar24._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar27._4_4_ = uVar32; + auVar27._0_4_ = uVar31; + auVar22._0_8_ = + CONCAT44((int)(ABS(auVar28._4_4_ * fVar29 + fVar30) + DAT_00531e90_4), + (int)(ABS(auVar28._0_4_ * fVar29 + fVar30) + _DAT_00531e90)); + auVar22._8_4_ = (int)(ABS(auVar28._8_4_ * fVar29 + fVar30) + (float)uRam0000000000531e98); + auVar22._12_4_ = (int)(ABS(auVar28._12_4_ * fVar29 + fVar30) + uRam0000000000531e98._4_4_) + ; + uVar21 = NEON_uqxtn(auVar22._0_8_,auVar22,4); + auVar27._8_8_ = uVar21; + uVar21 = NEON_uqxtn(uVar21,auVar27,2); + *puVar15 = uVar21; + puVar15 = puVar15 + 1; + } while (psVar17 != param_1 + ((ulong)uVar4 + 1) * 8); + } + iVar8 = iVar3; + if (iVar3 < iVar2 + -3) { + psVar17 = (short *)((long)param_1 + lVar20); + puVar16 = (undefined1 *)((long)param_5 + lVar13); + do { + lVar11 = lrintf(ABS(fVar30 + (float)(int)*psVar17 * fVar29)); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(ABS(fVar30 + (float)(int)psVar17[1] * fVar29)); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *puVar16 = (char)uVar9; + puVar16[1] = (char)uVar10; + lVar11 = lrintf(ABS(fVar30 + (float)(int)psVar17[2] * fVar29)); + uVar9 = (uint)lVar11; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + lVar11 = lrintf(ABS(fVar30 + (float)(int)psVar17[3] * fVar29)); + uVar10 = (uint)lVar11; + if (0xff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar16[2] = (char)uVar9; + puVar1 = puVar16 + 4; + psVar17 = psVar17 + 4; + puVar16[3] = (char)uVar10; + puVar16 = puVar1; + iVar8 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar13 + 4 + (ulong)uVar5 * 4)); + } + if (iVar8 < iVar2) { + lVar11 = 0; + do { + lVar12 = lrintf(ABS(fVar30 + (float)(int)param_1[iVar8 + lVar11] * fVar29)); + cVar14 = (char)lVar12; + if (0xff < (uint)lVar12) { + cVar14 = -(0 < (int)(uint)lVar12); + } + *(char *)((long)param_5 + lVar11 + iVar8) = cVar14; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar8) + 1); + } + iVar18 = iVar18 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar18 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027d014 (1016 bytes) name=FUN_0027d014 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027d014(long param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + ulong uVar8; + ulong uVar9; + ulong uVar10; + int iVar11; + int iVar12; + uint uVar13; + uint uVar14; + long lVar15; + long lVar16; + char cVar17; + long lVar18; + undefined8 *puVar19; + undefined1 *puVar20; + float *pfVar21; + int iVar22; + undefined1 (*pauVar23) [16]; + long lVar24; + undefined8 uVar25; + undefined1 auVar28 [16]; + undefined8 uVar26; + undefined8 uVar27; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + int iVar32; + float fVar33; + float fVar34; + float fVar35; + undefined8 uVar36; + undefined8 in_d4; + + iVar22 = param_7[1]; + iVar2 = *param_7; + if (iVar22 != 0) { + uVar4 = iVar2 - 0x10U >> 4; + iVar3 = (uVar4 + 1) * 0x10; + if (iVar2 + -0xf < 1) { + iVar3 = 0; + } + lVar18 = (long)iVar3; + uVar5 = (uint)((iVar2 + -4) - iVar3) >> 2; + lVar24 = NEON_shl(lVar18,2); + do { + if (0 < iVar2 + -0xf) { + pauVar23 = (undefined1 (*) [16])(param_1 + 0x30); + puVar19 = param_5; + do { + uVar36 = *(undefined8 *)(pauVar23[-3] + 8); + uVar27 = *(undefined8 *)pauVar23[-3]; + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar29 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar29._8_8_; + _DAT_00531e90 = auVar29._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + fVar33 = (float)uRam0000000000531e98; + uVar8 = (ulong)uRam0000000000531e98 >> 0x20; + auVar7 = pauVar23[-2]; + auVar29._4_4_ = + (int)((float)((ulong)uVar27 >> 0x20) + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar29._0_4_ = (int)((float)uVar27 + (float)_DAT_00531e90); + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar31 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar31._8_8_; + _DAT_00531e90 = auVar31._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + fVar34 = (float)uRam0000000000531e98; + uVar9 = (ulong)uRam0000000000531e98 >> 0x20; + uVar26 = *(undefined8 *)(pauVar23[-1] + 8); + uVar27 = *(undefined8 *)pauVar23[-1]; + uVar25 = CONCAT44((int)(auVar7._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar7._0_4_ + (float)_DAT_00531e90)); + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar31 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar31._8_8_; + _DAT_00531e90 = auVar31._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar31 = *pauVar23; + fVar35 = (float)uRam0000000000531e98; + uVar10 = (ulong)uRam0000000000531e98 >> 0x20; + iVar11 = (int)((float)uVar27 + (float)_DAT_00531e90); + iVar32 = (int)((float)((ulong)uVar27 >> 0x20) + (float)((ulong)_DAT_00531e90 >> 0x20)); + if (((DAT_00531ec0 & 1) == 0) && + (iVar12 = __cxa_guard_acquire(&DAT_00531ec0), iVar12 != 0)) { + auVar30 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar30._8_8_; + _DAT_00531e90 = auVar30._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar30._4_4_ = iVar32; + auVar30._0_4_ = iVar11; + auVar30._8_4_ = (int)((float)uVar26 + fVar35); + auVar30._12_4_ = (int)((float)((ulong)uVar26 >> 0x20) + (float)uVar10); + uVar27 = NEON_uqxtn(CONCAT44(iVar32,iVar11),auVar30,4); + pauVar23 = pauVar23 + 4; + auVar29._8_4_ = (int)((float)uVar36 + fVar33); + auVar29._12_4_ = (int)((float)((ulong)uVar36 >> 0x20) + (float)uVar8); + in_d4 = NEON_uqxtn(in_d4,auVar29,4); + auVar6._8_4_ = (int)(auVar7._8_4_ + fVar34); + auVar6._0_8_ = uVar25; + auVar6._12_4_ = (int)(auVar7._12_4_ + (float)uVar9); + uVar36 = NEON_uqxtn(uVar25,auVar6,4); + auVar28._0_8_ = + CONCAT44((int)(auVar31._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)), + (int)(auVar31._0_4_ + (float)_DAT_00531e90)); + auVar28._8_4_ = (int)(auVar31._8_4_ + (float)uRam0000000000531e98); + auVar28._12_4_ = (int)(auVar31._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar26 = NEON_uqxtn(auVar28._0_8_,auVar28,4); + auVar31._8_8_ = uVar36; + auVar31._0_8_ = in_d4; + uVar36 = NEON_uqxtn(in_d4,auVar31,2); + auVar7._8_4_ = (int)uVar26; + auVar7._0_8_ = uVar27; + auVar7._12_4_ = (int)((ulong)uVar26 >> 0x20); + uVar27 = NEON_uqxtn(uVar26,auVar7,2); + puVar19[1] = uVar27; + *puVar19 = uVar36; + puVar19 = puVar19 + 2; + } while (pauVar23 != (undefined1 (*) [16])(param_1 + (ulong)uVar4 * 0x40 + 0x70)); + } + iVar11 = iVar3; + if (iVar3 < iVar2 + -3) { + pfVar21 = (float *)(param_1 + lVar24); + puVar20 = (undefined1 *)((long)param_5 + lVar18); + do { + lVar15 = lrintf(*pfVar21); + uVar13 = (uint)lVar15; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + lVar15 = lrintf(pfVar21[1]); + uVar14 = (uint)lVar15; + if (0xff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + *puVar20 = (char)uVar13; + puVar20[1] = (char)uVar14; + lVar15 = lrintf(pfVar21[2]); + uVar13 = (uint)lVar15; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + lVar15 = lrintf(pfVar21[3]); + uVar14 = (uint)lVar15; + if (0xff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + puVar20[2] = (char)uVar13; + /* try { // try from 0027d34c to 0037d3cf has its CatchHandler @ 0027d34c + catch() { ... } // from try @ 0027d34c with catch @ 0027d34c + catch() { ... } // from try @ 0027d484 with catch @ 0027d34c */ + puVar1 = puVar20 + 4; + pfVar21 = pfVar21 + 4; + puVar20[3] = (char)uVar14; + puVar20 = puVar1; + iVar11 = iVar3 + 4 + uVar5 * 4; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar18 + 4 + (ulong)uVar5 * 4)); + } + if (iVar11 < iVar2) { + lVar15 = 0; + do { + lVar16 = lrintf(*(float *)(param_1 + (long)iVar11 * 4 + lVar15 * 4)); + cVar17 = (char)lVar16; + if (0xff < (uint)lVar16) { + cVar17 = -(0 < (int)(uint)lVar16); + } + *(char *)((long)param_5 + lVar15 + iVar11) = cVar17; + lVar15 = lVar15 + 1; + } while (lVar15 != (ulong)(uint)((iVar2 + -1) - iVar11) + 1); + } + iVar22 = iVar22 + -1; + param_1 = param_1 + (param_2 & 0xfffffffffffffffc); + param_5 = (undefined8 *)((long)param_5 + param_6); + /* try { // try from 0027d3d0 to 0037d3db has its CatchHandler @ 0027d49c */ + } while (iVar22 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027d40c (1156 bytes) name=FUN_0027d40c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027d40c(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7,double *param_8) + +{ + int iVar1; + undefined8 *puVar2; + int iVar3; + uint uVar4; + int iVar5; + char cVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int iVar11; + uint uVar12; + uint uVar13; + long lVar14; + long lVar15; + long lVar16; + byte *pbVar17; + undefined1 *puVar18; + int iVar19; + float fVar20; + undefined8 uVar21; + float fVar27; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined8 uVar22; + undefined1 auVar25 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined8 uVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + float fVar35; + float fVar36; + undefined4 uVar37; + undefined4 uVar38; + int iVar39; + undefined4 uStack_68; + undefined4 uStack_64; + undefined1 auVar26 [16]; + + /* try { // try from 0027d424 to 0037d453 has its CatchHandler @ 0027d494 */ + iVar19 = param_7[1]; + iVar3 = *param_7; + /* try { // try from 0027d45c to 0037d477 has its CatchHandler @ 0027d49c */ + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar19 != 0) { + iVar5 = iVar3 + -0xf; + iVar1 = (iVar3 - 0x10U & 0xfffffff0) + 0x10; + /* try { // try from 0027d480 to 0037d483 has its CatchHandler @ 0027d498 */ + /* try { // try from 0027d484 to 0037d4af has its CatchHandler @ 0027d34c */ + if (iVar5 < 1) { + iVar1 = 0; + } + /* catch() { ... } // from try @ 0027d424 with catch @ 0027d494 */ + /* catch() { ... } // from try @ 0027d480 with catch @ 0027d498 */ + /* catch() { ... } // from try @ 0027d3d0 with catch @ 0027d49c + catch() { ... } // from try @ 0027d45c with catch @ 0027d49c */ + uVar4 = (uint)((iVar3 + -4) - iVar1) >> 2; + /* try { // try from 0027d4b0 to 0037d5cb has its CatchHandler @ 0027d4b0 + catch() { ... } // from try @ 0027d4b0 with catch @ 0027d4b0 + catch() { ... } // from try @ 0027d8b0 with catch @ 0027d4b0 */ + lVar15 = (long)iVar1; + do { + if (0 < iVar5) { + lVar16 = 0; + do { + pbVar17 = (byte *)(param_1 + lVar16); + /* try { // try from 0027d5cc to 0037d5e7 has its CatchHandler @ 0027d91c */ + auVar29._1_3_ = 0; + auVar29[0] = pbVar17[4]; + auVar29[4] = pbVar17[5]; + auVar29._5_3_ = 0; + auVar29[8] = pbVar17[6]; + auVar29._9_3_ = 0; + auVar29[0xc] = pbVar17[7]; + auVar29._13_3_ = 0; + auVar29 = NEON_ucvtf(auVar29,4); + auVar33._6_2_ = 0; + auVar33._0_6_ = + (uint6)CONCAT14(pbVar17[9],(uint)CONCAT12(pbVar17[9],(ushort)pbVar17[8])) & + 0xffff0000ffff; + auVar33[8] = pbVar17[10]; + auVar33._9_3_ = 0; + auVar33[0xc] = pbVar17[0xb]; + auVar33._13_3_ = 0; + auVar31._1_3_ = 0; + auVar31[0] = pbVar17[0xc]; + auVar31[4] = pbVar17[0xd]; + auVar31._5_3_ = 0; + auVar31[8] = pbVar17[0xe]; + auVar31._9_3_ = 0; + auVar31[0xc] = pbVar17[0xf]; + auVar31._13_3_ = 0; + auVar34 = NEON_ucvtf(auVar33,4); + auVar31 = NEON_ucvtf(auVar31,4); + auVar32._0_4_ = ABS(auVar34._0_4_ * fVar35 + fVar36); + auVar32._4_4_ = ABS(auVar34._4_4_ * fVar35 + fVar36); + auVar32._8_4_ = ABS(auVar34._8_4_ * fVar35 + fVar36); + auVar32._12_4_ = ABS(auVar34._12_4_ * fVar35 + fVar36); + auVar25._6_2_ = 0; + auVar25._0_6_ = + (uint6)CONCAT14(pbVar17[1],(uint)CONCAT12(pbVar17[1],(ushort)*pbVar17)) & + 0xffff0000ffff; + auVar25[8] = pbVar17[2]; + auVar25._9_3_ = 0; + auVar25[0xc] = pbVar17[3]; + auVar25._13_3_ = 0; + auVar34 = NEON_ucvtf(auVar25,4); + fVar20 = ABS(auVar34._0_4_ * fVar35 + fVar36); + fVar27 = ABS(auVar34._4_4_ * fVar35 + fVar36); + auVar26._0_8_ = CONCAT44(fVar27,fVar20); + auVar26._8_4_ = ABS(auVar34._8_4_ * fVar35 + fVar36); + auVar26._12_4_ = ABS(auVar34._12_4_ * fVar35 + fVar36); + auVar34 = auVar26; + auVar25 = auVar32; + if ((DAT_00531ec0 & 1) == 0) { + iVar11 = __cxa_guard_acquire(&DAT_00531ec0); + auVar34._8_8_ = auVar26._8_8_; + auVar34._0_8_ = auVar26._0_8_; + if (iVar11 == 0) goto LAB_0027d4f0; + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + iVar11 = (int)(fVar20 + (float)_DAT_00531e90); + iVar39 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar39; + auVar7._0_4_ = iVar11; + auVar7._8_4_ = (int)(auVar26._8_4_ + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(auVar26._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar39,iVar11),auVar7,4); + uVar37 = (undefined4)uVar21; + uVar38 = (undefined4)((ulong)uVar21 >> 0x20); + } + else { +LAB_0027d4f0: + iVar11 = (int)(auVar34._0_4_ + (float)_DAT_00531e90); + iVar39 = (int)(auVar34._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar9._4_4_ = iVar39; + auVar9._0_4_ = iVar11; + auVar9._8_4_ = (int)(auVar34._8_4_ + (float)uRam0000000000531e98); + auVar9._12_4_ = (int)(auVar34._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar39,iVar11),auVar9,4); + uVar37 = (undefined4)uVar21; + uVar38 = (undefined4)((ulong)uVar21 >> 0x20); + } + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + auVar23._0_8_ = + CONCAT44((int)(ABS(auVar29._4_4_ * fVar35 + fVar36) + DAT_00531e90_4), + (int)(ABS(auVar29._0_4_ * fVar35 + fVar36) + _DAT_00531e90)); + auVar23._8_4_ = (int)(ABS(auVar29._8_4_ * fVar35 + fVar36) + (float)uRam0000000000531e98); + auVar23._12_4_ = (int)(ABS(auVar29._12_4_ * fVar35 + fVar36) + uRam0000000000531e98._4_4_) + ; + uVar21 = NEON_uqxtn(auVar23._0_8_,auVar23,4); + uStack_68 = (undefined4)uVar21; + uStack_64 = (undefined4)((ulong)uVar21 >> 0x20); + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + uVar22 = auVar25._0_8_; + iVar11 = (int)(auVar32._0_4_ + (float)_DAT_00531e90); + iVar39 = (int)(auVar32._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar8._4_4_ = iVar39; + auVar8._0_4_ = iVar11; + auVar8._8_4_ = (int)(auVar32._8_4_ + (float)uRam0000000000531e98); + auVar8._12_4_ = (int)(auVar32._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar39,iVar11),auVar8,4); + if ((DAT_00531ec0 & 1) == 0) { + iVar11 = __cxa_guard_acquire(&DAT_00531ec0); + uVar22 = auVar25._0_8_; + if (iVar11 != 0) { + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + uVar22 = auVar25._0_8_; + } + } + auVar10._4_4_ = uVar38; + auVar10._0_4_ = uVar37; + auVar10._8_4_ = uStack_68; + auVar10._12_4_ = uStack_64; + puVar2 = (undefined8 *)(param_5 + lVar16); + lVar16 = lVar16 + 0x10; + uVar30 = NEON_uqxtn(uVar22,auVar10,2); + auVar24._0_8_ = + CONCAT44((int)(ABS(auVar31._4_4_ * fVar35 + fVar36) + DAT_00531e90_4), + (int)(ABS(auVar31._0_4_ * fVar35 + fVar36) + _DAT_00531e90)); + auVar24._8_4_ = (int)(ABS(auVar31._8_4_ * fVar35 + fVar36) + (float)uRam0000000000531e98); + auVar24._12_4_ = (int)(ABS(auVar31._12_4_ * fVar35 + fVar36) + uRam0000000000531e98._4_4_) + ; + uVar22 = NEON_uqxtn(auVar24._0_8_,auVar24,4); + auVar28._8_8_ = uVar22; + auVar28._0_8_ = uVar21; + uVar21 = NEON_uqxtn(uVar22,auVar28,2); + puVar2[1] = uVar21; + *puVar2 = uVar30; + } while ((int)lVar16 < iVar5); + } + iVar11 = iVar1; + if (iVar1 < iVar3 + -3) { + pbVar17 = (byte *)(param_1 + lVar15); + puVar18 = (undefined1 *)(param_5 + lVar15); + do { + lVar16 = lrintf(ABS(fVar36 + (float)*pbVar17 * fVar35)); + uVar12 = (uint)lVar16; + if (0xff < uVar12) { + uVar12 = -(uint)(0 < (int)uVar12); + } + lVar16 = lrintf(ABS(fVar36 + (float)pbVar17[1] * fVar35)); + uVar13 = (uint)lVar16; + if (0xff < uVar13) { + /* try { // try from 0027d75c to 0037d76b has its CatchHandler @ 0027d90c */ + uVar13 = -(uint)(0 < (int)uVar13); + } + *puVar18 = (char)uVar12; + /* try { // try from 0027d76c to 0037d787 has its CatchHandler @ 0027d918 */ + puVar18[1] = (char)uVar13; + lVar16 = lrintf(ABS(fVar36 + (float)pbVar17[2] * fVar35)); + uVar12 = (uint)lVar16; + /* try { // try from 0027d788 to 0037d7bf has its CatchHandler @ 0027d914 */ + if (0xff < uVar12) { + uVar12 = -(uint)(0 < (int)uVar12); + } + lVar16 = lrintf(ABS(fVar36 + (float)pbVar17[3] * fVar35)); + uVar13 = (uint)lVar16; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + pbVar17 = pbVar17 + 4; + puVar18[2] = (char)uVar12; + /* try { // try from 0027d7cc to 0037d8af has its CatchHandler @ 0027d930 */ + puVar18[3] = (char)uVar13; + puVar18 = puVar18 + 4; + iVar11 = iVar1 + 4 + uVar4 * 4; + } while (pbVar17 != (byte *)(param_1 + lVar15 + 4 + (ulong)uVar4 * 4)); + } + if (iVar11 < iVar3) { + lVar16 = 0; + do { + lVar14 = lrintf(ABS(fVar36 + (float)*(byte *)(param_1 + iVar11 + lVar16) * fVar35)); + cVar6 = (char)lVar14; + if (0xff < (uint)lVar14) { + cVar6 = -(0 < (int)(uint)lVar14); + } + *(char *)(param_5 + iVar11 + lVar16) = cVar6; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar3 + -1) - iVar11) + 1); + } + iVar19 = iVar19 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar19 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027d890 (1156 bytes) name=FUN_0027d890 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027d890(long param_1,long param_2,undefined8 param_3,undefined8 param_4,long param_5, + long param_6,int *param_7,double *param_8) + +{ + int iVar1; + undefined8 *puVar2; + int iVar3; + uint uVar4; + int iVar5; + char cVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int iVar11; + uint uVar12; + uint uVar13; + long lVar14; + long lVar15; + long lVar16; + char *pcVar17; + undefined1 *puVar18; + int iVar19; + float fVar20; + undefined8 uVar21; + float fVar27; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined8 uVar22; + undefined1 auVar25 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined8 uVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + float fVar35; + float fVar36; + undefined4 uVar37; + undefined4 uVar38; + int iVar39; + undefined4 uStack_68; + undefined4 uStack_64; + undefined1 auVar26 [16]; + + /* try { // try from 0027d8b0 to 0037d943 has its CatchHandler @ 0027d4b0 */ + iVar19 = param_7[1]; + iVar3 = *param_7; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar19 != 0) { + iVar5 = iVar3 + -0xf; + iVar1 = (iVar3 - 0x10U & 0xfffffff0) + 0x10; + if (iVar5 < 1) { + iVar1 = 0; + } + /* catch() { ... } // from try @ 0027d75c with catch @ 0027d90c */ + /* catch() { ... } // from try @ 0027d788 with catch @ 0027d914 */ + /* catch() { ... } // from try @ 0027d76c with catch @ 0027d918 */ + /* catch() { ... } // from try @ 0027d5cc with catch @ 0027d91c */ + uVar4 = (uint)((iVar3 + -4) - iVar1) >> 2; + /* catch() { ... } // from try @ 0027d7cc with catch @ 0027d930 */ + /* try { // try from 0027d944 to 0037d94f has its CatchHandler @ 0027d998 */ + lVar15 = (long)iVar1; + /* try { // try from 0027d950 to 0037d95f has its CatchHandler @ 0027d988 */ + do { + if (0 < iVar5) { + lVar16 = 0; + do { + pcVar17 = (char *)(param_1 + lVar16); + auVar29._0_4_ = (int)(short)pcVar17[4]; + auVar29._4_4_ = (int)(short)pcVar17[5]; + auVar29._8_4_ = (int)(short)pcVar17[6]; + auVar29._12_4_ = (int)(short)pcVar17[7]; + auVar29 = NEON_scvtf(auVar29,4); + auVar33._0_4_ = (int)(short)pcVar17[8]; + auVar33._4_4_ = (int)(short)pcVar17[9]; + auVar33._8_4_ = (int)(short)pcVar17[10]; + auVar33._12_4_ = (int)(short)pcVar17[0xb]; + auVar31._0_4_ = (int)(short)pcVar17[0xc]; + auVar31._4_4_ = (int)(short)pcVar17[0xd]; + auVar31._8_4_ = (int)(short)pcVar17[0xe]; + auVar31._12_4_ = (int)(short)pcVar17[0xf]; + /* try { // try from 0027da80 to 0037daaf has its CatchHandler @ 0027dafc */ + auVar34 = NEON_scvtf(auVar33,4); + auVar31 = NEON_scvtf(auVar31,4); + auVar32._0_4_ = ABS(auVar34._0_4_ * fVar35 + fVar36); + auVar32._4_4_ = ABS(auVar34._4_4_ * fVar35 + fVar36); + auVar32._8_4_ = ABS(auVar34._8_4_ * fVar35 + fVar36); + auVar32._12_4_ = ABS(auVar34._12_4_ * fVar35 + fVar36); + auVar25._0_4_ = (int)(short)*pcVar17; + auVar25._4_4_ = (int)(short)pcVar17[1]; + auVar25._8_4_ = (int)(short)pcVar17[2]; + auVar25._12_4_ = (int)(short)pcVar17[3]; + /* try { // try from 0027dab8 to 0037dad7 has its CatchHandler @ 0027db04 */ + auVar34 = NEON_scvtf(auVar25,4); + fVar20 = ABS(auVar34._0_4_ * fVar35 + fVar36); + fVar27 = ABS(auVar34._4_4_ * fVar35 + fVar36); + auVar26._0_8_ = CONCAT44(fVar27,fVar20); + auVar26._8_4_ = ABS(auVar34._8_4_ * fVar35 + fVar36); + auVar26._12_4_ = ABS(auVar34._12_4_ * fVar35 + fVar36); + auVar34 = auVar26; + auVar25 = auVar32; + if ((DAT_00531ec0 & 1) == 0) { + iVar11 = __cxa_guard_acquire(&DAT_00531ec0); + auVar34._8_8_ = auVar26._8_8_; + auVar34._0_8_ = auVar26._0_8_; + /* try { // try from 0027dae0 to 0037dae3 has its CatchHandler @ 0027db00 */ + if (iVar11 == 0) goto LAB_0027d974; + /* try { // try from 0027dae4 to 0037db17 has its CatchHandler @ 0027d9a8 */ + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + /* catch() { ... } // from try @ 0027da80 with catch @ 0027dafc */ + /* catch() { ... } // from try @ 0027dae0 with catch @ 0027db00 */ + /* catch() { ... } // from try @ 0027da2c with catch @ 0027db04 + catch() { ... } // from try @ 0027dab8 with catch @ 0027db04 */ + iVar11 = (int)(fVar20 + (float)_DAT_00531e90); + iVar39 = (int)(fVar27 + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar7._4_4_ = iVar39; + auVar7._0_4_ = iVar11; + auVar7._8_4_ = (int)(auVar26._8_4_ + (float)uRam0000000000531e98); + auVar7._12_4_ = (int)(auVar26._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar39,iVar11),auVar7,4); + uVar37 = (undefined4)uVar21; + uVar38 = (undefined4)((ulong)uVar21 >> 0x20); + } + else { +LAB_0027d974: + /* try { // try from 0027d978 to 0037d97b has its CatchHandler @ 0027d984 */ + /* catch() { ... } // from try @ 0027d978 with catch @ 0027d984 */ + iVar11 = (int)(auVar34._0_4_ + (float)_DAT_00531e90); + iVar39 = (int)(auVar34._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar9._4_4_ = iVar39; + auVar9._0_4_ = iVar11; + auVar9._8_4_ = (int)(auVar34._8_4_ + (float)uRam0000000000531e98); + auVar9._12_4_ = (int)(auVar34._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + /* catch() { ... } // from try @ 0027d950 with catch @ 0027d988 */ + uVar21 = NEON_uqxtn(CONCAT44(iVar39,iVar11),auVar9,4); + uVar37 = (undefined4)uVar21; + uVar38 = (undefined4)((ulong)uVar21 >> 0x20); + } + /* try { // try from 0027db18 to 0037dd07 has its CatchHandler @ 0027db18 + catch() { ... } // from try @ 0027db18 with catch @ 0027db18 + catch() { ... } // from try @ 0027dd4c with catch @ 0027db18 + catch() { ... } // from try @ 0027ddd0 with catch @ 0027db18 + catch() { ... } // from try @ 0027de10 with catch @ 0027db18 */ + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + /* catch() { ... } // from try @ 0027d944 with catch @ 0027d998 */ + /* try { // try from 0027d99c to 0037d99f has its CatchHandler @ 0027d9a4 */ + /* catch() { ... } // from try @ 0027d99c with catch @ 0027d9a4 */ + /* try { // try from 0027d9a8 to 0037da2b has its CatchHandler @ 0027d9a8 + catch() { ... } // from try @ 0027d9a8 with catch @ 0027d9a8 + catch() { ... } // from try @ 0027dae4 with catch @ 0027d9a8 */ + auVar23._0_8_ = + CONCAT44((int)(ABS(auVar29._4_4_ * fVar35 + fVar36) + DAT_00531e90_4), + (int)(ABS(auVar29._0_4_ * fVar35 + fVar36) + _DAT_00531e90)); + auVar23._8_4_ = (int)(ABS(auVar29._8_4_ * fVar35 + fVar36) + (float)uRam0000000000531e98); + auVar23._12_4_ = (int)(ABS(auVar29._12_4_ * fVar35 + fVar36) + uRam0000000000531e98._4_4_) + ; + uVar21 = NEON_uqxtn(auVar23._0_8_,auVar23,4); + uStack_68 = (undefined4)uVar21; + uStack_64 = (undefined4)((ulong)uVar21 >> 0x20); + if (((DAT_00531ec0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec0), iVar11 != 0)) { + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + } + uVar22 = auVar25._0_8_; + iVar11 = (int)(auVar32._0_4_ + (float)_DAT_00531e90); + iVar39 = (int)(auVar32._4_4_ + (float)((ulong)_DAT_00531e90 >> 0x20)); + auVar8._4_4_ = iVar39; + auVar8._0_4_ = iVar11; + auVar8._8_4_ = (int)(auVar32._8_4_ + (float)uRam0000000000531e98); + auVar8._12_4_ = (int)(auVar32._12_4_ + (float)((ulong)uRam0000000000531e98 >> 0x20)); + uVar21 = NEON_uqxtn(CONCAT44(iVar39,iVar11),auVar8,4); + if ((DAT_00531ec0 & 1) == 0) { + iVar11 = __cxa_guard_acquire(&DAT_00531ec0); + uVar22 = auVar25._0_8_; + if (iVar11 != 0) { + auVar34 = NEON_fmov(0x3f000000,4); + uRam0000000000531e98 = auVar34._8_8_; + _DAT_00531e90 = auVar34._0_8_; + __cxa_guard_release(&DAT_00531ec0); + uVar22 = auVar25._0_8_; + } + } + auVar10._4_4_ = uVar38; + auVar10._0_4_ = uVar37; + auVar10._8_4_ = uStack_68; + auVar10._12_4_ = uStack_64; + puVar2 = (undefined8 *)(param_5 + lVar16); + lVar16 = lVar16 + 0x10; + uVar30 = NEON_uqxtn(uVar22,auVar10,2); + auVar24._0_8_ = + CONCAT44((int)(ABS(auVar31._4_4_ * fVar35 + fVar36) + DAT_00531e90_4), + (int)(ABS(auVar31._0_4_ * fVar35 + fVar36) + _DAT_00531e90)); + auVar24._8_4_ = (int)(ABS(auVar31._8_4_ * fVar35 + fVar36) + (float)uRam0000000000531e98); + auVar24._12_4_ = (int)(ABS(auVar31._12_4_ * fVar35 + fVar36) + uRam0000000000531e98._4_4_) + ; + uVar22 = NEON_uqxtn(auVar24._0_8_,auVar24,4); + auVar28._8_8_ = uVar22; + auVar28._0_8_ = uVar21; + uVar21 = NEON_uqxtn(uVar22,auVar28,2); + /* try { // try from 0027da2c to 0037da37 has its CatchHandler @ 0027db04 */ + puVar2[1] = uVar21; + *puVar2 = uVar30; + } while ((int)lVar16 < iVar5); + } + iVar11 = iVar1; + if (iVar1 < iVar3 + -3) { + pcVar17 = (char *)(param_1 + lVar15); + puVar18 = (undefined1 *)(param_5 + lVar15); + do { + lVar16 = lrintf(ABS(fVar36 + (float)(int)*pcVar17 * fVar35)); + uVar12 = (uint)lVar16; + if (0xff < uVar12) { + uVar12 = -(uint)(0 < (int)uVar12); + } + lVar16 = lrintf(ABS(fVar36 + (float)(int)pcVar17[1] * fVar35)); + uVar13 = (uint)lVar16; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + *puVar18 = (char)uVar12; + puVar18[1] = (char)uVar13; + lVar16 = lrintf(ABS(fVar36 + (float)(int)pcVar17[2] * fVar35)); + uVar12 = (uint)lVar16; + if (0xff < uVar12) { + uVar12 = -(uint)(0 < (int)uVar12); + } + lVar16 = lrintf(ABS(fVar36 + (float)(int)pcVar17[3] * fVar35)); + uVar13 = (uint)lVar16; + if (0xff < uVar13) { + uVar13 = -(uint)(0 < (int)uVar13); + } + pcVar17 = pcVar17 + 4; + puVar18[2] = (char)uVar12; + puVar18[3] = (char)uVar13; + puVar18 = puVar18 + 4; + iVar11 = iVar1 + 4 + uVar4 * 4; + } while (pcVar17 != (char *)(param_1 + lVar15 + 4 + (ulong)uVar4 * 4)); + } + if (iVar11 < iVar3) { + lVar16 = 0; + do { + lVar14 = lrintf(ABS(fVar36 + (float)(int)*(char *)(param_1 + iVar11 + lVar16) * fVar35)); + cVar6 = (char)lVar14; + if (0xff < (uint)lVar14) { + cVar6 = -(0 < (int)(uint)lVar14); + } + *(char *)(param_5 + iVar11 + lVar16) = cVar6; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar3 + -1) - iVar11) + 1); + } + iVar19 = iVar19 + -1; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar19 != 0); + } + /* try { // try from 0027dd08 to 0037dd17 has its CatchHandler @ 0027dd98 */ + return; +} + + +================================================================== + +### FUNC 0027dd14 (692 bytes) name=FUN_0027dd14 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027dd14(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + int iVar1; + undefined1 auVar2 [16]; + undefined8 uVar3; + undefined8 uVar4; + undefined1 auVar5 [16]; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + long lVar10; + undefined2 uVar11; + int iVar12; + undefined8 *puVar13; + long lVar14; + undefined8 *puVar15; + undefined1 uVar16; + undefined1 uVar17; + undefined1 uVar18; + undefined8 uVar19; + undefined8 uVar20; + int iVar21; + + /* try { // try from 0027dd18 to 0037dd4b has its CatchHandler @ 0027dda0 */ + iVar1 = *param_7; + iVar21 = param_7[1]; + /* try { // try from 0027dd4c to 0037ddb3 has its CatchHandler @ 0027db18 */ + if (iVar21 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar12 = 0; + } + else { + /* catch() { ... } // from try @ 0027dd08 with catch @ 0027dd98 */ + iVar12 = 0; + puVar13 = param_1; + puVar15 = param_5; + /* catch() { ... } // from try @ 0027dd18 with catch @ 0027dda0 */ + do { + uVar20 = puVar13[1]; + uVar19 = *puVar13; + uVar4 = puVar13[3]; + uVar3 = puVar13[2]; + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + /* try { // try from 0027ddb4 to 0037ddbf has its CatchHandler @ 0027de08 */ + /* try { // try from 0027ddc0 to 0037ddcf has its CatchHandler @ 0027ddf8 */ + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + /* try { // try from 0027ddd0 to 0037de0b has its CatchHandler @ 0027db18 */ + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + /* catch() { ... } // from try @ 0027ddc0 with catch @ 0027ddf8 */ + iVar9 = (int)((float)uVar19 + + (float)CONCAT13((byte)((ulong)uVar19 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((ulong)uVar19 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((ulong)uVar19 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + (byte)uVar19 & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar6 = (int)((float)((ulong)uVar19 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar19 >> 0x38) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((ulong)uVar19 >> 0x30) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((ulong)uVar19 >> 0x28) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + (byte)((ulong)uVar19 >> 0x20) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar16 = (undefined1)((uint)iVar6 >> 8); + uVar17 = (undefined1)((uint)iVar6 >> 0x10); + uVar18 = (undefined1)((uint)iVar6 >> 0x18); + iVar7 = (int)((float)uVar20 + + (float)CONCAT13((byte)((ulong)uVar20 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar20 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar20 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar20 & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)((float)((ulong)uVar20 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar20 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((ulong)uVar20 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11((byte)((ulong)uVar20 >> 0x28) & + (byte)((ulong)uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + (byte)((ulong)uVar20 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x20))))); + auVar5[4] = (char)iVar6; + auVar5._0_4_ = iVar9; + auVar5[5] = uVar16; + auVar5[6] = uVar17; + auVar5[7] = uVar18; + auVar5[8] = (char)iVar7; + auVar5[9] = (char)((uint)iVar7 >> 8); + auVar5[10] = (char)((uint)iVar7 >> 0x10); + auVar5[0xb] = (char)((uint)iVar7 >> 0x18); + auVar5[0xc] = (char)iVar8; + auVar5[0xd] = (char)((uint)iVar8 >> 8); + auVar5[0xe] = (char)((uint)iVar8 >> 0x10); + auVar5[0xf] = (char)((uint)iVar8 >> 0x18); + /* catch() { ... } // from try @ 0027ddb4 with catch @ 0027de08 */ + uVar19 = NEON_sqxtn(CONCAT17(uVar18,CONCAT16(uVar17,CONCAT15(uVar16,CONCAT14((char)iVar6, + iVar9)))), + auVar5,4); + /* try { // try from 0027de0c to 0037de0f has its CatchHandler @ 0027de18 */ + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + /* try { // try from 0027de10 to 0037de1b has its CatchHandler @ 0027db18 */ + /* catch() { ... } // from try @ 0027de0c with catch @ 0027de18 */ + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar12 = iVar12 + 8; + puVar13 = puVar13 + 4; + iVar9 = (int)((float)uVar3 + + (float)CONCAT13((byte)((ulong)uVar3 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((ulong)uVar3 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((ulong)uVar3 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + (byte)uVar3 & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar6 = (int)((float)((ulong)uVar3 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar3 >> 0x38) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((ulong)uVar3 >> 0x30) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((ulong)uVar3 >> 0x28) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + (byte)((ulong)uVar3 >> 0x20) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar16 = (undefined1)((uint)iVar6 >> 8); + uVar17 = (undefined1)((uint)iVar6 >> 0x10); + uVar18 = (undefined1)((uint)iVar6 >> 0x18); + iVar7 = (int)((float)uVar4 + + (float)CONCAT13((byte)((ulong)uVar4 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar4 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar4 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar4 & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)((float)((ulong)uVar4 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar4 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((ulong)uVar4 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11((byte)((ulong)uVar4 >> 0x28) & + (byte)((ulong)uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + (byte)((ulong)uVar4 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x20))))); + auVar2[4] = (char)iVar6; + auVar2._0_4_ = iVar9; + auVar2[5] = uVar16; + auVar2[6] = uVar17; + auVar2[7] = uVar18; + auVar2[8] = (char)iVar7; + auVar2[9] = (char)((uint)iVar7 >> 8); + auVar2[10] = (char)((uint)iVar7 >> 0x10); + auVar2[0xb] = (char)((uint)iVar7 >> 0x18); + auVar2[0xc] = (char)iVar8; + auVar2[0xd] = (char)((uint)iVar8 >> 8); + auVar2[0xe] = (char)((uint)iVar8 >> 0x10); + auVar2[0xf] = (char)((uint)iVar8 >> 0x18); + uVar3 = NEON_sqxtn(CONCAT17(uVar18,CONCAT16(uVar17,CONCAT15(uVar16,CONCAT14((char)iVar6, + iVar9)))), + auVar2,4); + puVar15[1] = uVar3; + *puVar15 = uVar19; + puVar15 = puVar15 + 2; + } while (iVar12 < iVar1 + -7); + } + if (iVar12 < iVar1) { + lVar14 = 0; + do { + lVar10 = lrintf(*(float *)((long)param_1 + lVar14 * 4 + (long)iVar12 * 4)); + uVar11 = (undefined2)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar11 = 0x7fff, (int)lVar10 < 1)) { + uVar11 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar14 * 2 + (long)iVar12 * 2) = uVar11; + lVar14 = lVar14 + 1; + } while (lVar14 != (ulong)(uint)((iVar1 + -1) - iVar12) + 1); + } + iVar21 = iVar21 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar21 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027dfc8 (740 bytes) name=FUN_0027dfc8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027dfc8(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + int iVar2; + long lVar3; + int iVar4; + int *piVar5; + long lVar6; + short *psVar7; + float fVar8; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar14 [16]; + undefined8 uVar17; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + float fVar18; + float fVar23; + undefined1 auVar19 [12]; + float fVar24; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + float fVar25; + float fVar26; + float fVar27; + int iVar28; + undefined1 auVar9 [12]; + undefined1 auVar13 [16]; + undefined1 auVar20 [16]; + + iVar1 = *param_7; + iVar28 = param_7[1]; + fVar26 = (float)*param_8; + fVar27 = (float)param_8[1]; + if (iVar28 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar4 = 0; + } + else { + iVar4 = 0; + piVar5 = (int *)(param_5 + 0x10); + psVar7 = param_1; + do { + auVar21._0_4_ = (int)psVar7[4]; + auVar21._4_4_ = (int)psVar7[5]; + auVar21._8_4_ = (int)psVar7[6]; + auVar21._12_4_ = (int)psVar7[7]; + auVar22 = NEON_scvtf(auVar21,4); + auVar14._0_4_ = (int)*psVar7; + auVar14._4_4_ = (int)psVar7[1]; + auVar14._8_4_ = (int)psVar7[2]; + auVar14._12_4_ = (int)psVar7[3]; + fVar18 = auVar22._0_4_ * fVar26 + fVar27; + fVar23 = auVar22._4_4_ * fVar26 + fVar27; + fVar24 = auVar22._8_4_ * fVar26 + fVar27; + fVar25 = auVar22._12_4_ * fVar26 + fVar27; + auVar14 = NEON_scvtf(auVar14,4); + auVar22._0_8_ = CONCAT44(auVar14._4_4_ * fVar26 + fVar27,auVar14._0_4_ * fVar26 + fVar27); + auVar22._8_4_ = auVar14._8_4_ * fVar26 + fVar27; + auVar22._12_4_ = auVar14._12_4_ * fVar26 + fVar27; + if ((DAT_00531ed0 & 1) == 0) { + uVar17 = auVar22._8_8_; + iVar2 = __cxa_guard_acquire(&DAT_00531ed0); + auVar22._8_8_ = uVar17; + if (iVar2 != 0) { + auVar15._8_4_ = 0x80000000; + auVar15._0_8_ = 0x8000000080000000; + auVar15._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar15._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar2 = __cxa_guard_acquire(&DAT_00531ec8); + if (iVar2 != 0) { + auVar10._8_4_ = 0x3f000000; + auVar10._0_8_ = 0x3f0000003f000000; + auVar10._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar10._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + } + fVar8 = (float)CONCAT13(auVar22[3] & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar22[2] & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar22[1] & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + auVar22[0] & DAT_00531eb0 | (byte)_DAT_00531ea0) + )); + auVar19._0_8_ = + CONCAT17(auVar22[7] & bRam0000000000531eb7 | (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16(auVar22[6] & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15(auVar22[5] & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(auVar22[4] & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar8)))); + auVar19[8] = auVar22[8] & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar19[9] = auVar22[9] & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar19[10] = auVar22[10] & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar19[0xb] = auVar22[0xb] & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar20[0xc] = auVar22[0xc] & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar20._0_12_ = auVar19; + auVar20[0xd] = auVar22[0xd] & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar20[0xe] = auVar22[0xe] & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar20[0xf] = auVar22[0xf] & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar11._0_8_ = + CONCAT44((int)(auVar22._4_4_ + (float)((ulong)auVar19._0_8_ >> 0x20)), + (int)(auVar22._0_4_ + fVar8)); + auVar11._8_4_ = (int)(auVar22._8_4_ + auVar19._8_4_); + auVar11._12_4_ = (int)(auVar22._12_4_ + auVar20._12_4_); + *(long *)(piVar5 + -2) = auVar11._8_8_; + *(undefined8 *)(piVar5 + -4) = auVar11._0_8_; + if (((DAT_00531ed0 & 1) == 0) && (iVar2 = __cxa_guard_acquire(&DAT_00531ed0), iVar2 != 0)) + { + auVar16._8_4_ = 0x80000000; + auVar16._0_8_ = 0x8000000080000000; + auVar16._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar16._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar2 = __cxa_guard_acquire(&DAT_00531ec8), iVar2 != 0)) + { + auVar12._8_4_ = 0x3f000000; + auVar12._0_8_ = 0x3f0000003f000000; + auVar12._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar12._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar4 = iVar4 + 8; + psVar7 = psVar7 + 8; + fVar8 = (float)CONCAT13((byte)((uint)fVar18 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar18 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar18 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar18,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar9._0_8_ = CONCAT17((byte)((uint)fVar23 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar23 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar23 >> 8) & bRam0000000000531eb5 + | (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar23,0) & bRam0000000000531eb4 + | (byte)((ulong)_DAT_00531ea0 >> 0x20), + fVar8)))); + auVar9[8] = SUB41(fVar24,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar9[9] = (byte)((uint)fVar24 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar9[10] = (byte)((uint)fVar24 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar9[0xb] = (byte)((uint)fVar24 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar13[0xc] = SUB41(fVar25,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar13._0_12_ = auVar9; + auVar13[0xd] = (byte)((uint)fVar25 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar13[0xe] = (byte)((uint)fVar25 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar13[0xf] = (byte)((uint)fVar25 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + piVar5[2] = (int)(fVar24 + auVar9._8_4_); + piVar5[3] = (int)(fVar25 + auVar13._12_4_); + *piVar5 = (int)(fVar18 + fVar8); + piVar5[1] = (int)(fVar23 + (float)((ulong)auVar9._0_8_ >> 0x20)); + piVar5 = piVar5 + 8; + } while (iVar4 < iVar1 + -7); + } + if (iVar4 < iVar1) { + lVar6 = 0; + do { + lVar3 = lrintf(fVar27 + (float)(int)param_1[iVar4 + lVar6] * fVar26); + *(int *)(param_5 + (long)iVar4 * 4 + lVar6 * 4) = (int)lVar3; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar1 + -1) - iVar4) + 1); + } + iVar28 = iVar28 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar28 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027e2ac (768 bytes) name=FUN_0027e2ac + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027e2ac(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + undefined1 auVar3 [16]; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + long lVar8; + ulong uVar9; + ulong uVar10; + short *psVar11; + undefined2 uVar12; + undefined8 *puVar13; + long lVar14; + float fVar15; + undefined8 uVar16; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined8 uVar25; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar26; + float fVar29; + float fVar30; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar31; + undefined1 uVar32; + undefined1 uVar33; + undefined1 uVar34; + float fVar35; + float fVar36; + int iVar37; + undefined1 auVar17 [12]; + undefined1 auVar20 [16]; + + iVar2 = *param_7; + iVar37 = param_7[1]; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar37 != 0) { + do { + if (iVar2 + -7 < 1) { + uVar9 = 0; + } + else { + uVar9 = 0; + psVar11 = param_1; + puVar13 = param_5; + do { + /* try { // try from 0027e460 to 0037e4f3 has its CatchHandler @ 0027e3ec */ + auVar27._0_4_ = (int)psVar11[4]; + auVar27._4_4_ = (int)psVar11[5]; + auVar27._8_4_ = (int)psVar11[6]; + auVar27._12_4_ = (int)psVar11[7]; + auVar28 = NEON_scvtf(auVar27,4); + auVar22._0_4_ = (int)*psVar11; + auVar22._4_4_ = (int)psVar11[1]; + auVar22._8_4_ = (int)psVar11[2]; + auVar22._12_4_ = (int)psVar11[3]; + fVar26 = auVar28._0_4_ * fVar35 + fVar36; + fVar29 = auVar28._4_4_ * fVar35 + fVar36; + fVar30 = auVar28._8_4_ * fVar35 + fVar36; + fVar31 = auVar28._12_4_ * fVar35 + fVar36; + auVar22 = NEON_scvtf(auVar22,4); + auVar28._0_8_ = CONCAT44(auVar22._4_4_ * fVar35 + fVar36,auVar22._0_4_ * fVar35 + fVar36); + auVar28._8_4_ = auVar22._8_4_ * fVar35 + fVar36; + auVar28._12_4_ = auVar22._12_4_ * fVar35 + fVar36; + if ((DAT_00531ed0 & 1) == 0) { + uVar25 = auVar28._8_8_; + iVar7 = __cxa_guard_acquire(&DAT_00531ed0); + auVar28._8_8_ = uVar25; + if (iVar7 != 0) { + auVar23._8_4_ = 0x80000000; + auVar23._0_8_ = 0x8000000080000000; + auVar23._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar23._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) + { + auVar18._8_4_ = 0x3f000000; + auVar18._0_8_ = 0x3f0000003f000000; + auVar18._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar18._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = (int)(auVar28._0_4_ + + (float)CONCAT13(auVar28[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar28[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar28[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + auVar28[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar4 = (int)(auVar28._4_4_ + + (float)CONCAT13(auVar28[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12(auVar28[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11(auVar28[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + auVar28[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar32 = (undefined1)((uint)iVar4 >> 8); + uVar33 = (undefined1)((uint)iVar4 >> 0x10); + uVar34 = (undefined1)((uint)iVar4 >> 0x18); + iVar5 = (int)(auVar28._8_4_ + + (float)CONCAT13(auVar28[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar28[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar28[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar28[8] & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar6 = (int)(auVar28._12_4_ + + (float)CONCAT13(auVar28[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12(auVar28[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11(auVar28[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x28), + auVar28[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar3[4] = (char)iVar4; + auVar3._0_4_ = iVar7; + auVar3[5] = uVar32; + auVar3[6] = uVar33; + auVar3[7] = uVar34; + auVar3[8] = (char)iVar5; + auVar3[9] = (char)((uint)iVar5 >> 8); + auVar3[10] = (char)((uint)iVar5 >> 0x10); + auVar3[0xb] = (char)((uint)iVar5 >> 0x18); + auVar3[0xc] = (char)iVar6; + auVar3[0xd] = (char)((uint)iVar6 >> 8); + auVar3[0xe] = (char)((uint)iVar6 >> 0x10); + auVar3[0xf] = (char)((uint)iVar6 >> 0x18); + uVar25 = NEON_sqxtn(CONCAT17(uVar34,CONCAT16(uVar33,CONCAT15(uVar32,CONCAT14((char)iVar4, + iVar7)))), + auVar3,4); + /* catch() { ... } // from try @ 0027e444 with catch @ 0027e4c4 */ + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) + { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar24._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + /* catch() { ... } // from try @ 0027e438 with catch @ 0027e4d4 */ + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) + { + auVar19._8_4_ = 0x3f000000; + auVar19._0_8_ = 0x3f0000003f000000; + auVar19._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar19._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + /* try { // try from 0027e3ec to 0037e437 has its CatchHandler @ 0027e3ec + catch() { ... } // from try @ 0027e3ec with catch @ 0027e3ec + catch() { ... } // from try @ 0027e460 with catch @ 0027e3ec */ + uVar1 = (int)uVar9 + 8; + uVar9 = (ulong)uVar1; + psVar11 = psVar11 + 8; + fVar15 = (float)CONCAT13((byte)((uint)fVar26 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar26 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar26 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar26,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar17._0_8_ = + CONCAT17((byte)((uint)fVar29 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar29 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar29 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar29,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar15)))); + auVar17[8] = SUB41(fVar30,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar17[9] = (byte)((uint)fVar30 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar17[10] = (byte)((uint)fVar30 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar17[0xb] = (byte)((uint)fVar30 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar20[0xc] = SUB41(fVar31,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar20._0_12_ = auVar17; + auVar20[0xd] = (byte)((uint)fVar31 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar20[0xe] = (byte)((uint)fVar31 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar20[0xf] = (byte)((uint)fVar31 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + /* try { // try from 0027e438 to 0037e443 has its CatchHandler @ 0027e4d4 */ + auVar21._0_8_ = + CONCAT44((int)(fVar29 + (float)((ulong)auVar17._0_8_ >> 0x20)),(int)(fVar26 + fVar15) + ); + auVar21._8_4_ = (int)(fVar30 + auVar17._8_4_); + auVar21._12_4_ = (int)(fVar31 + auVar20._12_4_); + uVar16 = NEON_sqxtn(auVar21._0_8_,auVar21,4); + /* try { // try from 0027e444 to 0037e45f has its CatchHandler @ 0027e4c4 */ + puVar13[1] = uVar16; + *puVar13 = uVar25; + puVar13 = puVar13 + 2; + } while ((int)uVar1 < iVar2 + -7); + } + if ((int)uVar9 < iVar2) { + lVar14 = 0; + /* catch() { ... } // from try @ 0027e60c with catch @ 0027e4f8 */ + uVar10 = -(uVar9 >> 0x1f) & 0xfffffffe00000000 | uVar9 << 1; + do { + /* try { // try from 0027e524 to 0037e52f has its CatchHandler @ 0027e664 */ + lVar8 = lrintf(fVar36 + (float)(int)*(short *)((long)param_1 + lVar14 + uVar10) * fVar35); + /* try { // try from 0027e530 to 0037e543 has its CatchHandler @ 0027e66c */ + uVar12 = (undefined2)lVar8; + if ((0xffff < (int)lVar8 + 0x8000U) && (uVar12 = 0x7fff, (int)lVar8 < 1)) { + uVar12 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar14 + uVar10) = uVar12; + lVar14 = lVar14 + 2; + } while (lVar14 != ((ulong)(uint)((iVar2 + -1) - (int)uVar9) + 1) * 2); + } + iVar37 = iVar37 + -1; + /* try { // try from 0027e560 to 0037e573 has its CatchHandler @ 0027e65c */ + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + /* try { // try from 0027e578 to 0037e5a3 has its CatchHandler @ 0027e66c */ + } while (iVar37 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027e5ac (464 bytes) name=FUN_0027e5ac + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027e5ac(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7) + +{ + uint uVar1; + int iVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + int iVar10; + long lVar11; + ulong uVar12; + undefined8 *puVar13; + long lVar14; + undefined8 *puVar15; + ulong uVar16; + float fVar17; + float fVar18; + undefined8 uVar19; + undefined8 uVar20; + int iVar21; + + /* try { // try from 0027e5c4 to 0037e5e3 has its CatchHandler @ 0027e660 */ + iVar21 = param_7[1]; + iVar2 = *param_7; + /* try { // try from 0027e5e8 to 0037e60b has its CatchHandler @ 0027e66c */ + if (iVar21 != 0) { + /* try { // try from 0027e60c to 0037e68b has its CatchHandler @ 0027e4f8 */ + do { + if (iVar2 + -3 < 1) { + uVar16 = 0; + } + else { + uVar16 = 0; + puVar13 = param_5; + puVar15 = param_1; + do { + uVar20 = puVar15[1]; + uVar19 = *puVar15; + if ((DAT_00531ed0 & 1) == 0) { + iVar10 = __cxa_guard_acquire(&DAT_00531ed0); + if (iVar10 != 0) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar10 = __cxa_guard_acquire(&DAT_00531ec8); + /* catch() { ... } // from try @ 0027e560 with catch @ 0027e65c */ + if (iVar10 != 0) { + /* catch() { ... } // from try @ 0027e5c4 with catch @ 0027e660 */ + /* catch() { ... } // from try @ 0027e524 with catch @ 0027e664 */ + /* catch() { ... } // from try @ 0027e530 with catch @ 0027e66c + catch() { ... } // from try @ 0027e578 with catch @ 0027e66c + catch() { ... } // from try @ 0027e5e8 with catch @ 0027e66c */ + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + } + uVar1 = (int)uVar16 + 4; + uVar16 = (ulong)uVar1; + puVar15 = puVar15 + 2; + uVar12 = (ulong)_DAT_00531eb0 >> 0x20; + uVar3 = (ulong)_DAT_00531eb0 >> 0x28; + uVar4 = (ulong)_DAT_00531eb0 >> 0x30; + uVar5 = (ulong)_DAT_00531eb0 >> 0x38; + fVar17 = (float)CONCAT13((byte)((ulong)uVar19 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((ulong)uVar19 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((ulong)uVar19 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + (byte)uVar19 & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0))); + uVar6 = (ulong)_DAT_00531ea0 >> 0x20; + uVar7 = (ulong)_DAT_00531ea0 >> 0x28; + uVar8 = (ulong)_DAT_00531ea0 >> 0x30; + uVar9 = (ulong)_DAT_00531ea0 >> 0x38; + fVar18 = (float)CONCAT13((byte)((ulong)uVar20 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar20 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar20 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar20 & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8))); + puVar13[1] = CONCAT44((int)((float)((ulong)uVar20 >> 0x20) + + (float)(CONCAT17((byte)((ulong)uVar20 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT16((byte)((ulong)uVar20 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x30), + CONCAT15((byte)((ulong)uVar20 >> 0x28 + ) & (byte)((ulong) + uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + CONCAT14((byte)((ulong)uVar20 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x20),fVar18)))) >> 0x20)), + (int)((float)uVar20 + fVar18)); + *puVar13 = CONCAT44((int)((float)((ulong)uVar19 >> 0x20) + + (float)(CONCAT17((byte)((ulong)uVar19 >> 0x38) & (byte)uVar5 | + (byte)uVar9, + CONCAT16((byte)((ulong)uVar19 >> 0x30) & + (byte)uVar4 | (byte)uVar8, + CONCAT15((byte)((ulong)uVar19 >> 0x28) + & (byte)uVar3 | (byte)uVar7, + CONCAT14((byte)((ulong)uVar19 + >> 0x20) & + (byte)uVar12 | + (byte)uVar6,fVar17))) + ) >> 0x20)),(int)((float)uVar19 + fVar17)); + puVar13 = puVar13 + 2; + } while ((int)uVar1 < iVar2 + -3); + } + if ((int)uVar16 < iVar2) { + uVar12 = -(uVar16 >> 0x1f) & 0xfffffffc00000000 | uVar16 << 2; + lVar14 = 0; + do { + lVar11 = lrintf(*(float *)((long)param_1 + lVar14 + uVar12)); + *(int *)((long)param_5 + lVar14 + uVar12) = (int)lVar11; + lVar14 = lVar14 + 4; + } while (lVar14 != ((ulong)(uint)((iVar2 + -1) - (int)uVar16) + 1) * 4); + } + iVar21 = iVar21 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar21 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027e77c (536 bytes) name=FUN_0027e77c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027e77c(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + int iVar10; + long lVar11; + ulong uVar12; + undefined8 *puVar13; + long lVar14; + undefined8 *puVar15; + ulong uVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + int iVar25; + + iVar25 = param_7[1]; + iVar2 = *param_7; + fVar23 = (float)*param_8; + fVar24 = (float)param_8[1]; + if (iVar25 != 0) { + do { + if (iVar2 + -3 < 1) { + uVar16 = 0; + } + else { + uVar16 = 0; + puVar13 = param_5; + puVar15 = param_1; + do { + fVar19 = fVar24 + (float)*puVar15 * fVar23; + fVar20 = fVar24 + (float)((ulong)*puVar15 >> 0x20) * fVar23; + fVar21 = fVar24 + (float)puVar15[1] * fVar23; + fVar22 = fVar24 + (float)((ulong)puVar15[1] >> 0x20) * fVar23; + if ((DAT_00531ed0 & 1) == 0) { + iVar10 = __cxa_guard_acquire(&DAT_00531ed0); + if (iVar10 != 0) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar10 = __cxa_guard_acquire(&DAT_00531ec8); + if (iVar10 != 0) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + } + uVar1 = (int)uVar16 + 4; + uVar16 = (ulong)uVar1; + puVar15 = puVar15 + 2; + uVar12 = (ulong)_DAT_00531eb0 >> 0x20; + uVar3 = (ulong)_DAT_00531eb0 >> 0x28; + uVar4 = (ulong)_DAT_00531eb0 >> 0x30; + uVar5 = (ulong)_DAT_00531eb0 >> 0x38; + fVar17 = (float)CONCAT13((byte)((uint)fVar19 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar19 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar19 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar19,0) & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0))); + uVar6 = (ulong)_DAT_00531ea0 >> 0x20; + uVar7 = (ulong)_DAT_00531ea0 >> 0x28; + uVar8 = (ulong)_DAT_00531ea0 >> 0x30; + uVar9 = (ulong)_DAT_00531ea0 >> 0x38; + fVar18 = (float)CONCAT13((byte)((uint)fVar21 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar21 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((uint)fVar21 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar21,0) & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8))); + puVar13[1] = CONCAT44((int)(fVar22 + (float)(CONCAT17((byte)((uint)fVar22 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 + >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 + >> 0x38), + CONCAT16((byte)((uint)fVar22 >> 0x10 + ) & (byte)((ulong) + uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT15((byte)((uint)fVar22 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + CONCAT14(SUB41(fVar22,0) & + (byte)((ulong) + uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20),fVar18 + )))) >> 0x20)),(int)(fVar21 + fVar18)); + *puVar13 = CONCAT44((int)(fVar20 + (float)(CONCAT17((byte)((uint)fVar20 >> 0x18) & + (byte)uVar5 | (byte)uVar9, + CONCAT16((byte)((uint)fVar20 >> 0x10) + & (byte)uVar4 | (byte)uVar8, + CONCAT15((byte)((uint)fVar20 + >> 8) & + (byte)uVar3 | + (byte)uVar7, + CONCAT14(SUB41( + fVar20,0) & (byte)uVar12 | (byte)uVar6,fVar17)))) + >> 0x20)),(int)(fVar19 + fVar17)); + puVar13 = puVar13 + 2; + } while ((int)uVar1 < iVar2 + -3); + } + if ((int)uVar16 < iVar2) { + uVar12 = -(uVar16 >> 0x1f) & 0xfffffffc00000000 | uVar16 << 2; + lVar14 = 0; + do { + lVar11 = lrintf(fVar24 + *(float *)((long)param_1 + lVar14 + uVar12) * fVar23); + *(int *)((long)param_5 + lVar14 + uVar12) = (int)lVar11; + lVar14 = lVar14 + 4; + } while (lVar14 != ((ulong)(uint)((iVar2 + -1) - (int)uVar16) + 1) * 4); + } + iVar25 = iVar25 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffc)); + } while (iVar25 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027e994 (940 bytes) name=FUN_0027e994 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027e994(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7,double *param_8) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + long lVar6; + int *piVar7; + char *pcVar8; + int iVar9; + undefined8 *puVar10; + long lVar11; + undefined4 *puVar12; + float fVar13; + undefined1 auVar16 [12]; + undefined8 uVar14; + undefined1 auVar17 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar25; + float fVar27; + float fVar28; + undefined1 auVar26 [16]; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + int iVar36; + undefined1 auVar15 [12]; + undefined1 auVar18 [16]; + undefined1 auVar21 [16]; + + iVar36 = param_7[1]; + iVar2 = *param_7; + fVar34 = (float)*param_8; + fVar35 = (float)param_8[1]; + if (iVar36 != 0) { + do { + if (iVar2 + -7 < 1) { + iVar9 = 0; + } + else { + iVar9 = 0; + piVar7 = (int *)(param_5 + 0x10); + puVar10 = param_1; + do { + uVar14 = *puVar10; + auVar26._0_4_ = (int)(short)(char)uVar14; + auVar26._4_4_ = (int)(short)(char)((ulong)uVar14 >> 8); + auVar26._8_4_ = (int)(short)(char)((ulong)uVar14 >> 0x10); + auVar26._12_4_ = (int)(short)(char)((ulong)uVar14 >> 0x18); + auVar26 = NEON_scvtf(auVar26,4); + auVar22._0_4_ = (int)(short)(char)((ulong)uVar14 >> 0x20); + auVar22._4_4_ = (int)(short)(char)((ulong)uVar14 >> 0x28); + auVar22._8_4_ = (int)(short)(char)((ulong)uVar14 >> 0x30); + auVar22._12_4_ = (int)(short)(char)((ulong)uVar14 >> 0x38); + auVar22 = NEON_scvtf(auVar22,4); + fVar30 = fVar35 + auVar26._0_4_ * fVar34; + fVar31 = fVar35 + auVar26._4_4_ * fVar34; + fVar32 = fVar35 + auVar26._8_4_ * fVar34; + fVar33 = fVar35 + auVar26._12_4_ * fVar34; + fVar25 = fVar35 + auVar22._0_4_ * fVar34; + fVar27 = fVar35 + auVar22._4_4_ * fVar34; + fVar28 = fVar35 + auVar22._8_4_ * fVar34; + fVar29 = fVar35 + auVar22._12_4_ * fVar34; + if ((DAT_00531ed0 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531ed0); + if (iVar4 != 0) { + auVar23._8_4_ = 0x80000000; + auVar23._0_8_ = 0x8000000080000000; + auVar23._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar23._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531ec8); + if (iVar4 != 0) { + auVar17._8_4_ = 0x3f000000; + auVar17._0_8_ = 0x3f0000003f000000; + auVar17._12_4_ = 0x3f000000; + _uRam0000000000531ea8 = auVar17._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + } + fVar13 = (float)CONCAT13((byte)((uint)fVar30 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar30 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar30 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + DAT_00531ea0_1, + SUB41(fVar30,0) & (byte)_DAT_00531eb0 | + DAT_00531ea0))); + auVar15._0_8_ = + CONCAT17((byte)((uint)fVar31 >> 0x18) & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar31 >> 0x10) & (byte)((ulong)_DAT_00531eb0 >> 0x30) + | bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar31 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar31,0) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4,fVar13)))); + auVar15[8] = SUB41(fVar32,0) & (byte)_uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar15[9] = (byte)((uint)fVar32 >> 8) & (byte)((ulong)_uRam0000000000531eb8 >> 8) | + uRam0000000000531ea8._1_1_; + auVar15[10] = (byte)((uint)fVar32 >> 0x10) & (byte)((ulong)_uRam0000000000531eb8 >> 0x10) + | bRam0000000000531eaa; + auVar15[0xb] = (byte)((uint)fVar32 >> 0x18) & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) + | bRam0000000000531eab; + auVar18[0xc] = SUB41(fVar33,0) & (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + bRam0000000000531eac; + auVar18._0_12_ = auVar15; + auVar18[0xd] = (byte)((uint)fVar33 >> 8) & (byte)((ulong)_uRam0000000000531eb8 >> 0x28) | + bRam0000000000531ead; + auVar18[0xe] = (byte)((uint)fVar33 >> 0x10) & (byte)((ulong)_uRam0000000000531eb8 >> 0x30) + | bRam0000000000531eae; + auVar18[0xf] = (byte)((uint)fVar33 >> 0x18) & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) + | bRam0000000000531eaf; + auVar19._0_8_ = + CONCAT44((int)(fVar31 + (float)((ulong)auVar15._0_8_ >> 0x20)),(int)(fVar30 + fVar13) + ); + auVar19._8_4_ = (int)(fVar32 + auVar15._8_4_); + auVar19._12_4_ = (int)(fVar33 + auVar18._12_4_); + *(long *)(piVar7 + -2) = auVar19._8_8_; + *(undefined8 *)(piVar7 + -4) = auVar19._0_8_; + if (((DAT_00531ed0 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531ed0), iVar4 != 0)) + { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar24._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531ec8), iVar4 != 0)) + { + auVar20._8_4_ = 0x3f000000; + auVar20._0_8_ = 0x3f0000003f000000; + auVar20._12_4_ = 0x3f000000; + _uRam0000000000531ea8 = auVar20._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar9 = iVar9 + 8; + puVar10 = puVar10 + 1; + fVar30 = (float)CONCAT13((byte)((uint)fVar25 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar25 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar25 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar25,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar16._0_8_ = + CONCAT17((byte)((uint)fVar27 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar27 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar27 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar27,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar30)))); + auVar16[8] = SUB41(fVar28,0) & (byte)uRam0000000000531eb8 | (byte)_uRam0000000000531ea8; + auVar16[9] = (byte)((uint)fVar28 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)_uRam0000000000531ea8 >> 8); + auVar16[10] = (byte)((uint)fVar28 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)_uRam0000000000531ea8 >> 0x10); + auVar16[0xb] = (byte)((uint)fVar28 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)_uRam0000000000531ea8 >> 0x18); + auVar21[0xc] = SUB41(fVar29,0) & bRam0000000000531ebc | + (byte)((ulong)_uRam0000000000531ea8 >> 0x20); + auVar21._0_12_ = auVar16; + auVar21[0xd] = (byte)((uint)fVar29 >> 8) & bRam0000000000531ebd | + (byte)((ulong)_uRam0000000000531ea8 >> 0x28); + auVar21[0xe] = (byte)((uint)fVar29 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)_uRam0000000000531ea8 >> 0x30); + auVar21[0xf] = (byte)((uint)fVar29 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)_uRam0000000000531ea8 >> 0x38); + piVar7[2] = (int)(fVar28 + auVar16._8_4_); + piVar7[3] = (int)(fVar29 + auVar21._12_4_); + *piVar7 = (int)(fVar25 + fVar30); + piVar7[1] = (int)(fVar27 + (float)((ulong)auVar16._0_8_ >> 0x20)); + piVar7 = piVar7 + 8; + } while (iVar9 < iVar2 + -7); + } + if (iVar9 < iVar2 + -3) { + lVar11 = (long)iVar9; + uVar3 = (uint)((iVar2 + -4) - iVar9) >> 2; + pcVar8 = (char *)((long)param_1 + lVar11); + puVar12 = (undefined4 *)(param_5 + lVar11 * 4); + do { + pcVar1 = pcVar8 + 4; + lVar5 = lrintf(fVar35 + (float)(int)*pcVar8 * fVar34); + lVar6 = lrintf(fVar35 + (float)(byte)pcVar8[1] * fVar34); + *puVar12 = (int)lVar5; + puVar12[1] = (int)lVar6; + lVar5 = lrintf(fVar35 + (float)(byte)pcVar8[2] * fVar34); + lVar6 = lrintf(fVar35 + (float)(byte)pcVar8[3] * fVar34); + puVar12[2] = (int)lVar5; + puVar12[3] = (int)lVar6; + pcVar8 = pcVar1; + puVar12 = puVar12 + 4; + } while (pcVar1 != (char *)((long)param_1 + lVar11 + 4 + (ulong)uVar3 * 4)); + iVar9 = iVar9 + 4 + uVar3 * 4; + } + if (iVar9 < iVar2) { + lVar11 = 0; + do { + lVar5 = lrintf(fVar35 + (float)(int)*(char *)((long)param_1 + lVar11 + iVar9) * fVar34); + *(int *)(param_5 + (long)iVar9 * 4 + lVar11 * 4) = (int)lVar5; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar9) + 1); + } + iVar36 = iVar36 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar36 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027ed40 (940 bytes) name=FUN_0027ed40 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027ed40(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + long param_5,ulong param_6,int *param_7,double *param_8) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + int iVar4; + long lVar5; + long lVar6; + int *piVar7; + byte *pbVar8; + int iVar9; + undefined8 *puVar10; + long lVar11; + undefined4 *puVar12; + undefined1 uVar13; + float fVar14; + undefined1 auVar17 [12]; + undefined8 uVar15; + undefined1 auVar18 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + float fVar26; + float fVar28; + float fVar29; + undefined1 auVar27 [16]; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + int iVar37; + undefined1 auVar16 [12]; + undefined1 auVar19 [16]; + undefined1 auVar22 [16]; + + iVar37 = param_7[1]; + iVar2 = *param_7; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar37 != 0) { + do { + if (iVar2 + -7 < 1) { + iVar9 = 0; + } + else { + iVar9 = 0; + piVar7 = (int *)(param_5 + 0x10); + puVar10 = param_1; + do { + uVar15 = *puVar10; + uVar13 = (undefined1)((ulong)uVar15 >> 8); + auVar27._6_2_ = 0; + auVar27._0_6_ = + (uint6)CONCAT14(uVar13,(uint)CONCAT12(uVar13,(ushort)(byte)uVar15)) & 0xffff0000ffff; + auVar27[8] = (char)((ulong)uVar15 >> 0x10); + auVar27._9_3_ = 0; + auVar27[0xc] = (char)((ulong)uVar15 >> 0x18); + auVar27._13_3_ = 0; + auVar27 = NEON_ucvtf(auVar27,4); + auVar23._1_3_ = 0; + auVar23[0] = (byte)((ulong)uVar15 >> 0x20); + auVar23[4] = (char)((ulong)uVar15 >> 0x28); + auVar23._5_3_ = 0; + auVar23[8] = (char)((ulong)uVar15 >> 0x30); + auVar23._9_3_ = 0; + auVar23[0xc] = (char)((ulong)uVar15 >> 0x38); + auVar23._13_3_ = 0; + auVar23 = NEON_ucvtf(auVar23,4); + fVar31 = fVar36 + auVar27._0_4_ * fVar35; + fVar32 = fVar36 + auVar27._4_4_ * fVar35; + fVar33 = fVar36 + auVar27._8_4_ * fVar35; + fVar34 = fVar36 + auVar27._12_4_ * fVar35; + fVar26 = fVar36 + auVar23._0_4_ * fVar35; + fVar28 = fVar36 + auVar23._4_4_ * fVar35; + fVar29 = fVar36 + auVar23._8_4_ * fVar35; + fVar30 = fVar36 + auVar23._12_4_ * fVar35; + if ((DAT_00531ed0 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531ed0); + if (iVar4 != 0) { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar24._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00531ec8); + if (iVar4 != 0) { + auVar18._8_4_ = 0x3f000000; + auVar18._0_8_ = 0x3f0000003f000000; + auVar18._12_4_ = 0x3f000000; + _uRam0000000000531ea8 = auVar18._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + } + fVar14 = (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar31 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar31 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + DAT_00531ea0_1, + SUB41(fVar31,0) & (byte)_DAT_00531eb0 | + DAT_00531ea0))); + auVar16._0_8_ = + CONCAT17((byte)((uint)fVar32 >> 0x18) & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar32 >> 0x10) & (byte)((ulong)_DAT_00531eb0 >> 0x30) + | bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar32 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar32,0) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4,fVar14)))); + auVar16[8] = SUB41(fVar33,0) & (byte)_uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar16[9] = (byte)((uint)fVar33 >> 8) & (byte)((ulong)_uRam0000000000531eb8 >> 8) | + uRam0000000000531ea8._1_1_; + auVar16[10] = (byte)((uint)fVar33 >> 0x10) & (byte)((ulong)_uRam0000000000531eb8 >> 0x10) + | bRam0000000000531eaa; + auVar16[0xb] = (byte)((uint)fVar33 >> 0x18) & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) + | bRam0000000000531eab; + auVar19[0xc] = SUB41(fVar34,0) & (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + bRam0000000000531eac; + auVar19._0_12_ = auVar16; + auVar19[0xd] = (byte)((uint)fVar34 >> 8) & (byte)((ulong)_uRam0000000000531eb8 >> 0x28) | + bRam0000000000531ead; + auVar19[0xe] = (byte)((uint)fVar34 >> 0x10) & (byte)((ulong)_uRam0000000000531eb8 >> 0x30) + | bRam0000000000531eae; + auVar19[0xf] = (byte)((uint)fVar34 >> 0x18) & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) + | bRam0000000000531eaf; + auVar20._0_8_ = + CONCAT44((int)(fVar32 + (float)((ulong)auVar16._0_8_ >> 0x20)),(int)(fVar31 + fVar14) + ); + auVar20._8_4_ = (int)(fVar33 + auVar16._8_4_); + auVar20._12_4_ = (int)(fVar34 + auVar19._12_4_); + *(long *)(piVar7 + -2) = auVar20._8_8_; + *(undefined8 *)(piVar7 + -4) = auVar20._0_8_; + if (((DAT_00531ed0 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531ed0), iVar4 != 0)) + { + auVar25._8_4_ = 0x80000000; + auVar25._0_8_ = 0x8000000080000000; + auVar25._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar25._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar4 = __cxa_guard_acquire(&DAT_00531ec8), iVar4 != 0)) + { + auVar21._8_4_ = 0x3f000000; + auVar21._0_8_ = 0x3f0000003f000000; + auVar21._12_4_ = 0x3f000000; + _uRam0000000000531ea8 = auVar21._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar9 = iVar9 + 8; + puVar10 = puVar10 + 1; + fVar31 = (float)CONCAT13((byte)((uint)fVar26 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar26 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar26 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar26,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar17._0_8_ = + CONCAT17((byte)((uint)fVar28 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar28 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar28 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar28,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar31)))); + auVar17[8] = SUB41(fVar29,0) & (byte)uRam0000000000531eb8 | (byte)_uRam0000000000531ea8; + auVar17[9] = (byte)((uint)fVar29 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)_uRam0000000000531ea8 >> 8); + auVar17[10] = (byte)((uint)fVar29 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)_uRam0000000000531ea8 >> 0x10); + auVar17[0xb] = (byte)((uint)fVar29 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)_uRam0000000000531ea8 >> 0x18); + auVar22[0xc] = SUB41(fVar30,0) & bRam0000000000531ebc | + (byte)((ulong)_uRam0000000000531ea8 >> 0x20); + auVar22._0_12_ = auVar17; + auVar22[0xd] = (byte)((uint)fVar30 >> 8) & bRam0000000000531ebd | + (byte)((ulong)_uRam0000000000531ea8 >> 0x28); + auVar22[0xe] = (byte)((uint)fVar30 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)_uRam0000000000531ea8 >> 0x30); + auVar22[0xf] = (byte)((uint)fVar30 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)_uRam0000000000531ea8 >> 0x38); + piVar7[2] = (int)(fVar29 + auVar17._8_4_); + piVar7[3] = (int)(fVar30 + auVar22._12_4_); + *piVar7 = (int)(fVar26 + fVar31); + piVar7[1] = (int)(fVar28 + (float)((ulong)auVar17._0_8_ >> 0x20)); + piVar7 = piVar7 + 8; + } while (iVar9 < iVar2 + -7); + } + if (iVar9 < iVar2 + -3) { + lVar11 = (long)iVar9; + uVar3 = (uint)((iVar2 + -4) - iVar9) >> 2; + pbVar8 = (byte *)((long)param_1 + lVar11); + puVar12 = (undefined4 *)(param_5 + lVar11 * 4); + do { + pbVar1 = pbVar8 + 4; + lVar5 = lrintf(fVar36 + (float)*pbVar8 * fVar35); + lVar6 = lrintf(fVar36 + (float)pbVar8[1] * fVar35); + *puVar12 = (int)lVar5; + puVar12[1] = (int)lVar6; + lVar5 = lrintf(fVar36 + (float)pbVar8[2] * fVar35); + lVar6 = lrintf(fVar36 + (float)pbVar8[3] * fVar35); + puVar12[2] = (int)lVar5; + puVar12[3] = (int)lVar6; + pbVar8 = pbVar1; + puVar12 = puVar12 + 4; + } while (pbVar1 != (byte *)((long)param_1 + lVar11 + 4 + (ulong)uVar3 * 4)); + iVar9 = iVar9 + 4 + uVar3 * 4; + } + if (iVar9 < iVar2) { + lVar11 = 0; + do { + lVar5 = lrintf(fVar36 + (float)*(byte *)((long)param_1 + lVar11 + iVar9) * fVar35); + *(int *)(param_5 + (long)iVar9 * 4 + lVar11 * 4) = (int)lVar5; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar9) + 1); + } + iVar37 = iVar37 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar37 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027f0ec (940 bytes) name=FUN_0027f0ec + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027f0ec(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4,long param_5, + ulong param_6,int *param_7,double *param_8) + +{ + undefined4 *puVar1; + int iVar2; + ushort uVar3; + uint uVar4; + int iVar5; + long lVar6; + long lVar7; + int *piVar8; + ushort *puVar9; + int iVar10; + long lVar11; + undefined4 *puVar12; + float fVar13; + undefined1 auVar15 [12]; + undefined1 auVar16 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + int iVar35; + undefined1 auVar14 [12]; + undefined1 auVar17 [16]; + undefined1 auVar20 [16]; + + iVar2 = *param_7; + /* try { // try from 0027f10c to 0037f153 has its CatchHandler @ 0027f16c */ + iVar35 = param_7[1]; + fVar33 = (float)*param_8; + fVar34 = (float)param_8[1]; + if (iVar35 != 0) { + /* try { // try from 0027f154 to 0037f15b has its CatchHandler @ 0027f168 */ + /* catch() { ... } // from try @ 0027f154 with catch @ 0027f168 */ + /* catch() { ... } // from try @ 0027f10c with catch @ 0027f16c */ + do { + if (iVar2 + -7 < 1) { + iVar10 = 0; + } + else { + iVar10 = 0; + piVar8 = (int *)(param_5 + 0x10); + puVar9 = param_1; + do { + auVar24._2_2_ = 0; + auVar24._0_2_ = puVar9[4]; + auVar24._4_2_ = puVar9[5]; + auVar24._6_2_ = 0; + auVar24._8_2_ = puVar9[6]; + auVar24._10_2_ = 0; + auVar24._12_2_ = puVar9[7]; + auVar24._14_2_ = 0; + auVar24 = NEON_ucvtf(auVar24,4); + auVar21._2_2_ = 0; + auVar21._0_2_ = *puVar9; + auVar21._4_2_ = puVar9[1]; + auVar21._6_2_ = 0; + auVar21._8_2_ = puVar9[2]; + auVar21._10_2_ = 0; + auVar21._12_2_ = puVar9[3]; + auVar21._14_2_ = 0; + auVar21 = NEON_ucvtf(auVar21,4); + fVar25 = fVar34 + auVar24._0_4_ * fVar33; + fVar27 = fVar34 + auVar24._4_4_ * fVar33; + fVar29 = fVar34 + auVar24._8_4_ * fVar33; + fVar31 = fVar34 + auVar24._12_4_ * fVar33; + fVar26 = fVar34 + auVar21._0_4_ * fVar33; + fVar28 = fVar34 + auVar21._4_4_ * fVar33; + fVar30 = fVar34 + auVar21._8_4_ * fVar33; + fVar32 = fVar34 + auVar21._12_4_ * fVar33; + if ((DAT_00531ed0 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531ed0); + if (iVar5 != 0) { + auVar22._8_4_ = 0x80000000; + auVar22._0_8_ = 0x8000000080000000; + auVar22._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar22._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if ((DAT_00531ec8 & 1) == 0) { + iVar5 = __cxa_guard_acquire(&DAT_00531ec8); + if (iVar5 != 0) { + auVar16._8_4_ = 0x3f000000; + auVar16._0_8_ = 0x3f0000003f000000; + auVar16._12_4_ = 0x3f000000; + _uRam0000000000531ea8 = auVar16._8_8_; + /* try { // try from 0027f1e4 to 0037f35b has its CatchHandler @ 0027f1e4 + catch() { ... } // from try @ 0027f1e4 with catch @ 0027f1e4 + catch() { ... } // from try @ 0027f36c with catch @ 0027f1e4 */ + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + } + fVar13 = (float)CONCAT13((byte)((uint)fVar26 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | bRam0000000000531ea3, + CONCAT12((byte)((uint)fVar26 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + bRam0000000000531ea2, + CONCAT11((byte)((uint)fVar26 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + DAT_00531ea0_1, + SUB41(fVar26,0) & (byte)_DAT_00531eb0 | + DAT_00531ea0))); + auVar14._0_8_ = + CONCAT17((byte)((uint)fVar28 >> 0x18) & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + bRam0000000000531ea7, + CONCAT16((byte)((uint)fVar28 >> 0x10) & (byte)((ulong)_DAT_00531eb0 >> 0x30) + | bRam0000000000531ea6, + CONCAT15((byte)((uint)fVar28 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + bRam0000000000531ea5, + CONCAT14(SUB41(fVar28,0) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + bRam0000000000531ea4,fVar13)))); + auVar14[8] = SUB41(fVar30,0) & (byte)_uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar14[9] = (byte)((uint)fVar30 >> 8) & (byte)((ulong)_uRam0000000000531eb8 >> 8) | + uRam0000000000531ea8._1_1_; + auVar14[10] = (byte)((uint)fVar30 >> 0x10) & (byte)((ulong)_uRam0000000000531eb8 >> 0x10) + | bRam0000000000531eaa; + auVar14[0xb] = (byte)((uint)fVar30 >> 0x18) & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) + | bRam0000000000531eab; + auVar17[0xc] = SUB41(fVar32,0) & (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + bRam0000000000531eac; + auVar17._0_12_ = auVar14; + auVar17[0xd] = (byte)((uint)fVar32 >> 8) & (byte)((ulong)_uRam0000000000531eb8 >> 0x28) | + bRam0000000000531ead; + auVar17[0xe] = (byte)((uint)fVar32 >> 0x10) & (byte)((ulong)_uRam0000000000531eb8 >> 0x30) + | bRam0000000000531eae; + auVar17[0xf] = (byte)((uint)fVar32 >> 0x18) & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) + | bRam0000000000531eaf; + auVar18._0_8_ = + CONCAT44((int)(fVar28 + (float)((ulong)auVar14._0_8_ >> 0x20)),(int)(fVar26 + fVar13) + ); + auVar18._8_4_ = (int)(fVar30 + auVar14._8_4_); + auVar18._12_4_ = (int)(fVar32 + auVar17._12_4_); + *(long *)(piVar8 + -2) = auVar18._8_8_; + *(undefined8 *)(piVar8 + -4) = auVar18._0_8_; + if (((DAT_00531ed0 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531ed0), iVar5 != 0)) + { + auVar23._8_4_ = 0x80000000; + auVar23._0_8_ = 0x8000000080000000; + auVar23._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar23._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00531ec8), iVar5 != 0)) + { + auVar19._8_4_ = 0x3f000000; + auVar19._0_8_ = 0x3f0000003f000000; + auVar19._12_4_ = 0x3f000000; + _uRam0000000000531ea8 = auVar19._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar10 = iVar10 + 8; + puVar9 = puVar9 + 8; + fVar26 = (float)CONCAT13((byte)((uint)fVar25 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar25 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar25 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar25,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar15._0_8_ = + CONCAT17((byte)((uint)fVar27 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar27 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar27 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar27,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar26)))); + auVar15[8] = SUB41(fVar29,0) & (byte)uRam0000000000531eb8 | (byte)_uRam0000000000531ea8; + auVar15[9] = (byte)((uint)fVar29 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)_uRam0000000000531ea8 >> 8); + auVar15[10] = (byte)((uint)fVar29 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)_uRam0000000000531ea8 >> 0x10); + auVar15[0xb] = (byte)((uint)fVar29 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)_uRam0000000000531ea8 >> 0x18); + auVar20[0xc] = SUB41(fVar31,0) & bRam0000000000531ebc | + (byte)((ulong)_uRam0000000000531ea8 >> 0x20); + auVar20._0_12_ = auVar15; + auVar20[0xd] = (byte)((uint)fVar31 >> 8) & bRam0000000000531ebd | + (byte)((ulong)_uRam0000000000531ea8 >> 0x28); + auVar20[0xe] = (byte)((uint)fVar31 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)_uRam0000000000531ea8 >> 0x30); + auVar20[0xf] = (byte)((uint)fVar31 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)_uRam0000000000531ea8 >> 0x38); + piVar8[2] = (int)(fVar29 + auVar15._8_4_); + piVar8[3] = (int)(fVar31 + auVar20._12_4_); + *piVar8 = (int)(fVar25 + fVar26); + piVar8[1] = (int)(fVar27 + (float)((ulong)auVar15._0_8_ >> 0x20)); + piVar8 = piVar8 + 8; + } while (iVar10 < iVar2 + -7); + } + if (iVar10 < iVar2 + -3) { + lVar11 = (long)iVar10; + /* try { // try from 0027f35c to 0037f36b has its CatchHandler @ 0027f3c4 */ + uVar4 = (uint)((iVar2 + -4) - iVar10) >> 2; + /* try { // try from 0027f36c to 0037f3d7 has its CatchHandler @ 0027f1e4 */ + puVar9 = param_1 + lVar11; + puVar12 = (undefined4 *)(param_5 + lVar11 * 4); + do { + puVar1 = puVar12 + 4; + lVar6 = lrintf(fVar34 + (float)*puVar9 * fVar33); + lVar7 = lrintf(fVar34 + (float)puVar9[1] * fVar33); + uVar3 = puVar9[2]; + *puVar12 = (int)lVar6; + puVar12[1] = (int)lVar7; + lVar6 = lrintf(fVar34 + (float)uVar3 * fVar33); + /* catch() { ... } // from try @ 0027f35c with catch @ 0027f3c4 */ + lVar7 = lrintf(fVar34 + (float)puVar9[3] * fVar33); + puVar12[2] = (int)lVar6; + puVar12[3] = (int)lVar7; + puVar9 = puVar9 + 4; + puVar12 = puVar1; + } while (puVar1 != (undefined4 *)(param_5 + (lVar11 + 4 + (ulong)uVar4 * 4) * 4)); + iVar10 = iVar10 + 4 + uVar4 * 4; + } + if (iVar10 < iVar2) { + lVar11 = 0; + do { + lVar6 = lrintf(fVar34 + (float)param_1[iVar10 + lVar11] * fVar33); + *(int *)(param_5 + (long)iVar10 * 4 + lVar11 * 4) = (int)lVar6; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar10) + 1); + } + iVar35 = iVar35 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = param_5 + (param_6 & 0xfffffffffffffffc); + } while (iVar35 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027f498 (1032 bytes) name=FUN_0027f498 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027f498(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + undefined1 auVar4 [16]; + undefined8 uVar5; + undefined1 auVar6 [16]; + undefined3 uVar7; + undefined1 auVar8 [16]; + undefined8 uVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + long lVar14; + long lVar15; + undefined1 uVar16; + int iVar17; + undefined8 *puVar18; + undefined1 *puVar19; + undefined8 *puVar20; + float *pfVar21; + undefined1 uVar22; + undefined1 uVar23; + undefined1 uVar24; + undefined1 uVar25; + undefined1 uVar26; + undefined1 uVar27; + undefined1 uVar28; + undefined1 uVar29; + undefined1 uVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + byte bVar40; + float fVar41; + float fVar42; + int iVar43; + + iVar2 = *param_7; + iVar43 = param_7[1]; + fVar41 = (float)*param_8; + fVar42 = (float)param_8[1]; + if (iVar43 != 0) { + uVar22 = (undefined1)((uint)fVar42 >> 8); + uVar24 = (undefined1)((uint)fVar42 >> 0x10); + uVar26 = (undefined1)((uint)fVar42 >> 0x18); + uVar23 = (undefined1)((uint)fVar41 >> 8); + uVar25 = (undefined1)((uint)fVar41 >> 0x10); + uVar27 = (undefined1)((uint)fVar41 >> 0x18); + do { + if (iVar2 + -7 < 1) { + iVar17 = 0; + } + else { + iVar17 = 0; + puVar18 = param_1; + puVar20 = param_5; + do { + fVar36 = (float)(CONCAT17(uVar27,CONCAT16(uVar25,CONCAT15(uVar23,CONCAT14(SUB41(fVar41,0), + fVar41)))) >> + 0x20); + fVar39 = (float)(CONCAT17(uVar27,CONCAT16(uVar25,CONCAT15(uVar23,CONCAT14(SUB41(fVar41,0), + fVar41)))) >> + 0x20); + fVar34 = (float)(CONCAT17(uVar26,CONCAT16(uVar24,CONCAT15(uVar22,CONCAT14(SUB41(fVar42,0), + fVar42)))) >> + 0x20); + fVar31 = fVar42 + (float)*puVar18 * fVar41; + fVar33 = fVar34 + (float)((ulong)*puVar18 >> 0x20) * fVar36; + fVar38 = (float)(CONCAT17(uVar26,CONCAT16(uVar24,CONCAT15(uVar22,CONCAT14(SUB41(fVar42,0), + fVar42)))) >> + 0x20); + fVar35 = fVar42 + (float)puVar18[1] * fVar41; + fVar37 = fVar38 + (float)((ulong)puVar18[1] >> 0x20) * fVar39; + fVar32 = fVar42 + (float)puVar18[2] * fVar41; + fVar34 = fVar34 + (float)((ulong)puVar18[2] >> 0x20) * fVar36; + fVar36 = fVar42 + (float)puVar18[3] * fVar41; + fVar38 = fVar38 + (float)((ulong)puVar18[3] >> 0x20) * fVar39; + if (((DAT_00531ed0 & 1) == 0) && + (iVar13 = __cxa_guard_acquire(&DAT_00531ed0), iVar13 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar13 = __cxa_guard_acquire(&DAT_00531ec8), iVar13 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar13 = (int)(fVar31 + (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar31 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar31 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8 + ) | (byte)((ulong) + _DAT_00531ea0 >> 8), + SUB41(fVar31,0) & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar10 = (int)(fVar33 + (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar33 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar33 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar33,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar28 = (undefined1)((uint)iVar10 >> 8); + uVar29 = (undefined1)((uint)iVar10 >> 0x10); + uVar30 = (undefined1)((uint)iVar10 >> 0x18); + iVar11 = (int)(fVar35 + (float)CONCAT13((byte)((uint)fVar35 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar35 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x10), + CONCAT11((byte)((uint)fVar35 >> 8) & + (byte)((ulong) + uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar35,0) & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar12 = (int)(fVar37 + (float)CONCAT13((byte)((uint)fVar37 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar37 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x30), + CONCAT11((byte)((uint)fVar37 >> 8) & + (byte)((ulong) + uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar37,0) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar8[4] = (char)iVar10; + auVar8._0_4_ = iVar13; + auVar8[5] = uVar28; + auVar8[6] = uVar29; + auVar8[7] = uVar30; + auVar8[8] = (char)iVar11; + auVar8[9] = (char)((uint)iVar11 >> 8); + auVar8[10] = (char)((uint)iVar11 >> 0x10); + auVar8[0xb] = (char)((uint)iVar11 >> 0x18); + auVar8[0xc] = (char)iVar12; + auVar8[0xd] = (char)((uint)iVar12 >> 8); + auVar8[0xe] = (char)((uint)iVar12 >> 0x10); + auVar8[0xf] = (char)((uint)iVar12 >> 0x18); + uVar9 = NEON_sqxtn(CONCAT17(uVar30,CONCAT16(uVar29,CONCAT15(uVar28,CONCAT14((char)iVar10, + iVar13)))), + auVar8,4); + if (((DAT_00531ed0 & 1) == 0) && + (iVar13 = __cxa_guard_acquire(&DAT_00531ed0), iVar13 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar13 = __cxa_guard_acquire(&DAT_00531ec8), iVar13 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar17 = iVar17 + 8; + puVar18 = puVar18 + 4; + iVar13 = (int)(fVar32 + (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar32 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar32 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8 + ) | (byte)((ulong) + _DAT_00531ea0 >> 8), + SUB41(fVar32,0) & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar10 = (int)(fVar34 + (float)CONCAT13((byte)((uint)fVar34 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar34 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar34 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar34,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar28 = (undefined1)((uint)iVar10 >> 8); + uVar29 = (undefined1)((uint)iVar10 >> 0x10); + uVar30 = (undefined1)((uint)iVar10 >> 0x18); + iVar11 = (int)(fVar36 + (float)CONCAT13((byte)((uint)fVar36 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar36 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x10), + CONCAT11((byte)((uint)fVar36 >> 8) & + (byte)((ulong) + uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar36,0) & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar12 = (int)(fVar38 + (float)CONCAT13((byte)((uint)fVar38 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar38 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x30), + CONCAT11((byte)((uint)fVar38 >> 8) & + (byte)((ulong) + uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar38,0) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar4[4] = (char)iVar10; + auVar4._0_4_ = iVar13; + auVar4[5] = uVar28; + auVar4[6] = uVar29; + auVar4[7] = uVar30; + auVar4[8] = (char)iVar11; + auVar4[9] = (char)((uint)iVar11 >> 8); + auVar4[10] = (char)((uint)iVar11 >> 0x10); + auVar4[0xb] = (char)((uint)iVar11 >> 0x18); + auVar4[0xc] = (char)iVar12; + auVar4[0xd] = (char)((uint)iVar12 >> 8); + auVar4[0xe] = (char)((uint)iVar12 >> 0x10); + auVar4[0xf] = (char)((uint)iVar12 >> 0x18); + uVar5 = NEON_sqxtn(CONCAT17(uVar30,CONCAT16(uVar29,CONCAT15(uVar28,CONCAT14((char)iVar10, + iVar13)))), + auVar4,4); + auVar6[8] = (char)uVar5; + auVar6._0_8_ = uVar9; + auVar6[9] = (char)((ulong)uVar5 >> 8); + auVar6[10] = (char)((ulong)uVar5 >> 0x10); + auVar6[0xb] = (char)((ulong)uVar5 >> 0x18); + auVar6[0xc] = (char)((ulong)uVar5 >> 0x20); + auVar6[0xd] = (char)((ulong)uVar5 >> 0x28); + auVar6[0xe] = (char)((ulong)uVar5 >> 0x30); + auVar6[0xf] = (char)((ulong)uVar5 >> 0x38); + uVar9 = NEON_sqxtn(uVar5,auVar6,2); + *puVar20 = uVar9; + puVar20 = puVar20 + 1; + } while (iVar17 < iVar2 + -7); + } + if (iVar17 < iVar2 + -3) { + lVar15 = (long)iVar17; + uVar3 = (iVar2 + -4) - iVar17; + bVar40 = (byte)(uVar3 >> 0x1a); + pfVar21 = (float *)((long)param_1 + lVar15 * 4); + uVar7 = (undefined3)(uVar3 >> 2); + puVar19 = (undefined1 *)((long)param_5 + lVar15); + do { + lVar14 = lrintf(fVar42 + *pfVar21 * fVar41); + uVar29 = 0x80; + uVar30 = 0x7f; + uVar28 = (char)lVar14; + if ((0xff < (int)lVar14 + 0x80U) && (uVar28 = uVar30, (int)lVar14 < 1)) { + uVar28 = uVar29; + } + lVar14 = lrintf(fVar42 + pfVar21[1] * fVar41); + uVar16 = (char)lVar14; + if ((0xff < (int)lVar14 + 0x80U) && (uVar16 = uVar30, (int)lVar14 < 1)) { + uVar16 = uVar29; + } + *puVar19 = uVar28; + puVar19[1] = uVar16; + lVar14 = lrintf(fVar42 + pfVar21[2] * fVar41); + uVar28 = (char)lVar14; + if ((0xff < (int)lVar14 + 0x80U) && (uVar28 = uVar30, (int)lVar14 < 1)) { + uVar28 = uVar29; + } + lVar14 = lrintf(fVar42 + pfVar21[3] * fVar41); + uVar16 = (char)lVar14; + if ((0xff < (int)lVar14 + 0x80U) && (uVar16 = uVar30, (int)lVar14 < 1)) { + uVar16 = uVar29; + } + puVar19[2] = uVar28; + puVar1 = puVar19 + 4; + pfVar21 = pfVar21 + 4; + puVar19[3] = uVar16; + puVar19 = puVar1; + } while (puVar1 != (undefined1 *) + ((long)param_5 + lVar15 + 4 + (ulong)CONCAT13(bVar40,uVar7) * 4)); + iVar17 = iVar17 + 4 + CONCAT13(bVar40,uVar7) * 4; + } + if (iVar17 < iVar2) { + lVar15 = 0; + do { + lVar14 = lrintf(fVar42 + *(float *)((long)param_1 + lVar15 * 4 + (long)iVar17 * 4) * + fVar41); + uVar28 = (undefined1)lVar14; + if ((0xff < (int)lVar14 + 0x80U) && (uVar28 = 0x7f, (int)lVar14 < 1)) { + uVar28 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar15 + iVar17) = uVar28; + lVar15 = lVar15 + 1; + } while (lVar15 != (ulong)(uint)((iVar2 + -1) - iVar17) + 1); + } + iVar43 = iVar43 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar43 != 0); + } + return; +} + + +================================================================== + +### FUNC 0027f8a0 (1060 bytes) name=FUN_0027f8a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027f8a0(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined1 auVar3 [16]; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + long lVar8; + undefined1 uVar9; + undefined8 *puVar10; + byte *pbVar11; + long lVar12; + undefined1 *puVar13; + int iVar14; + undefined8 *puVar15; + undefined1 uVar16; + undefined1 auVar19 [12]; + undefined8 uVar17; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar23 [16]; + undefined8 uVar18; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + undefined1 uVar39; + undefined1 uVar40; + int iVar41; + undefined1 auVar22 [16]; + + iVar41 = param_7[1]; + iVar1 = *param_7; + fVar37 = (float)*param_8; + fVar38 = (float)param_8[1]; + if (iVar41 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar14 = 0; + } + else { + iVar14 = 0; + puVar10 = param_1; + puVar15 = param_5; + do { + uVar18 = *puVar10; + uVar16 = (undefined1)((ulong)uVar18 >> 8); + auVar28._6_2_ = 0; + auVar28._0_6_ = + (uint6)CONCAT14(uVar16,(uint)CONCAT12(uVar16,(ushort)(byte)uVar18)) & 0xffff0000ffff; + auVar28[8] = (char)((ulong)uVar18 >> 0x10); + auVar28._9_3_ = 0; + auVar28[0xc] = (char)((ulong)uVar18 >> 0x18); + auVar28._13_3_ = 0; + auVar28 = NEON_ucvtf(auVar28,4); + auVar24._1_3_ = 0; + auVar24[0] = (byte)((ulong)uVar18 >> 0x20); + auVar24[4] = (char)((ulong)uVar18 >> 0x28); + auVar24._5_3_ = 0; + auVar24[8] = (char)((ulong)uVar18 >> 0x30); + auVar24._9_3_ = 0; + auVar24[0xc] = (char)((ulong)uVar18 >> 0x38); + auVar24._13_3_ = 0; + /* try { // try from 0027fa80 to 0037fa8b has its CatchHandler @ 0027fb9c */ + auVar24 = NEON_ucvtf(auVar24,4); + fVar29 = fVar38 + auVar28._0_4_ * fVar37; + fVar31 = fVar38 + auVar28._4_4_ * fVar37; + fVar33 = fVar38 + auVar28._8_4_ * fVar37; + fVar35 = fVar38 + auVar28._12_4_ * fVar37; + /* try { // try from 0027fa8c to 0037faa7 has its CatchHandler @ 0027f9f0 */ + fVar30 = fVar38 + auVar24._0_4_ * fVar37; + fVar32 = fVar38 + auVar24._4_4_ * fVar37; + fVar34 = fVar38 + auVar24._8_4_ * fVar37; + fVar36 = fVar38 + auVar24._12_4_ * fVar37; + /* try { // try from 0027faa8 to 0037fad7 has its CatchHandler @ 0027fba0 */ + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) + { + auVar25._8_4_ = 0x80000000; + auVar25._0_8_ = 0x8000000080000000; + auVar25._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar25._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) + { + auVar20._8_4_ = 0x3f000000; + auVar20._0_8_ = 0x3f0000003f000000; + auVar20._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar20._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = (int)(fVar29 + (float)CONCAT13((byte)((uint)fVar29 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar29 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar29 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> + 8), + SUB41(fVar29,0) & + (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar4 = (int)(fVar31 + (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar31 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar31 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar31,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar16 = (undefined1)((uint)iVar4 >> 8); + uVar39 = (undefined1)((uint)iVar4 >> 0x10); + uVar40 = (undefined1)((uint)iVar4 >> 0x18); + iVar5 = (int)(fVar33 + (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar33 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10 + ),CONCAT11((byte)((uint)fVar33 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar33,0) & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar6 = (int)(fVar35 + (float)CONCAT13((byte)((uint)fVar35 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar35 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30 + ),CONCAT11((byte)((uint)fVar35 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar35,0) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar3[4] = (char)iVar4; + auVar3._0_4_ = iVar7; + auVar3[5] = uVar16; + auVar3[6] = uVar39; + auVar3[7] = uVar40; + auVar3[8] = (char)iVar5; + auVar3[9] = (char)((uint)iVar5 >> 8); + auVar3[10] = (char)((uint)iVar5 >> 0x10); + auVar3[0xb] = (char)((uint)iVar5 >> 0x18); + auVar3[0xc] = (char)iVar6; + auVar3[0xd] = (char)((uint)iVar6 >> 8); + auVar3[0xe] = (char)((uint)iVar6 >> 0x10); + auVar3[0xf] = (char)((uint)iVar6 >> 0x18); + uVar18 = NEON_sqxtn(CONCAT17(uVar40,CONCAT16(uVar39,CONCAT15(uVar16,CONCAT14((char)iVar4, + iVar7)))), + auVar3,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) + { + auVar26._8_4_ = 0x80000000; + auVar26._0_8_ = 0x8000000080000000; + auVar26._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar26._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) + { + auVar21._8_4_ = 0x3f000000; + auVar21._0_8_ = 0x3f0000003f000000; + auVar21._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar21._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar14 = iVar14 + 8; + /* try { // try from 0027f9f0 to 0037fa7f has its CatchHandler @ 0027f9f0 + catch() { ... } // from try @ 0027f9f0 with catch @ 0027f9f0 + catch() { ... } // from try @ 0027fa8c with catch @ 0027f9f0 + catch() { ... } // from try @ 0027fb4c with catch @ 0027f9f0 */ + puVar10 = puVar10 + 1; + fVar29 = (float)CONCAT13((byte)((uint)fVar30 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar30 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar30 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar30,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar19._0_8_ = + CONCAT17((byte)((uint)fVar32 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar32 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar32 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar32,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar29)))); + auVar19[8] = SUB41(fVar34,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar19[9] = (byte)((uint)fVar34 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar19[10] = (byte)((uint)fVar34 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar19[0xb] = (byte)((uint)fVar34 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar22[0xc] = SUB41(fVar36,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar22._0_12_ = auVar19; + auVar22[0xd] = (byte)((uint)fVar36 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar22[0xe] = (byte)((uint)fVar36 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar22[0xf] = (byte)((uint)fVar36 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar23._0_8_ = + CONCAT44((int)(fVar32 + (float)((ulong)auVar19._0_8_ >> 0x20)),(int)(fVar30 + fVar29) + ); + auVar23._8_4_ = (int)(fVar34 + auVar19._8_4_); + auVar23._12_4_ = (int)(fVar36 + auVar22._12_4_); + uVar17 = NEON_sqxtn(auVar23._0_8_,auVar23,4); + auVar27._8_8_ = uVar17; + auVar27._0_8_ = uVar18; + uVar18 = NEON_sqxtn(uVar17,auVar27,2); + *puVar15 = uVar18; + puVar15 = puVar15 + 1; + } while (iVar14 < iVar1 + -7); + } + /* try { // try from 0027faf8 to 0037fb0f has its CatchHandler @ 0027fbb4 */ + if (iVar14 < iVar1 + -3) { + lVar12 = (long)iVar14; + /* try { // try from 0027fb10 to 0037fb4b has its CatchHandler @ 0027fbbc */ + pbVar11 = (byte *)((long)param_1 + lVar12); + uVar2 = (uint)((iVar1 + -4) - iVar14) >> 2; + puVar13 = (undefined1 *)((long)param_5 + lVar12); + do { + lVar8 = lrintf(fVar38 + (float)*pbVar11 * fVar37); + /* try { // try from 0027fb4c to 0037fbe3 has its CatchHandler @ 0027f9f0 */ + uVar39 = 0x80; + uVar40 = 0x7f; + uVar16 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar16 = uVar40, (int)lVar8 < 1)) { + uVar16 = uVar39; + } + lVar8 = lrintf(fVar38 + (float)pbVar11[1] * fVar37); + uVar9 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar9 = uVar40, (int)lVar8 < 1)) { + uVar9 = uVar39; + } + *puVar13 = uVar16; + puVar13[1] = uVar9; + /* catch() { ... } // from try @ 0027fa80 with catch @ 0027fb9c */ + lVar8 = lrintf(fVar38 + (float)pbVar11[2] * fVar37); + /* catch() { ... } // from try @ 0027faa8 with catch @ 0027fba0 */ + uVar16 = (char)lVar8; + /* catch() { ... } // from try @ 0027faf8 with catch @ 0027fbb4 */ + if ((0xff < (int)lVar8 + 0x80U) && (uVar16 = uVar40, (int)lVar8 < 1)) { + uVar16 = uVar39; + } + /* catch() { ... } // from try @ 0027fb10 with catch @ 0027fbbc */ + lVar8 = lrintf(fVar38 + (float)pbVar11[3] * fVar37); + uVar9 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar9 = uVar40, (int)lVar8 < 1)) { + uVar9 = uVar39; + } + /* try { // try from 0027fbe4 to 0037fbe7 has its CatchHandler @ 0027fbf0 */ + pbVar11 = pbVar11 + 4; + puVar13[2] = uVar16; + /* catch() { ... } // from try @ 0027fbe4 with catch @ 0027fbf0 */ + puVar13[3] = uVar9; + /* try { // try from 0027fbf4 to 0037fc23 has its CatchHandler @ 0027fbf4 + catch() { ... } // from try @ 0027fbf4 with catch @ 0027fbf4 + catch() { ... } // from try @ 0027fc68 with catch @ 0027fbf4 */ + puVar13 = puVar13 + 4; + } while (pbVar11 != (byte *)((long)param_1 + lVar12 + 4 + (ulong)uVar2 * 4)); + iVar14 = iVar14 + 4 + uVar2 * 4; + } + if (iVar14 < iVar1) { + lVar12 = 0; + /* try { // try from 0027fc24 to 0037fc33 has its CatchHandler @ 0027fc94 */ + do { + lVar8 = lrintf(fVar38 + (float)*(byte *)((long)param_1 + lVar12 + iVar14) * fVar37); + uVar16 = (undefined1)lVar8; + /* try { // try from 0027fc54 to 0037fc67 has its CatchHandler @ 0027fc90 */ + if ((0xff < (int)lVar8 + 0x80U) && (uVar16 = 0x7f, (int)lVar8 < 1)) { + uVar16 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar12 + iVar14) = uVar16; + /* try { // try from 0027fc68 to 0037fca7 has its CatchHandler @ 0027fbf4 */ + lVar12 = lVar12 + 1; + } while (lVar12 != (ulong)(uint)((iVar1 + -1) - iVar14) + 1); + } + iVar41 = iVar41 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + param_6); + /* catch() { ... } // from try @ 0027fc54 with catch @ 0027fc90 */ + } while (iVar41 != 0); + } + /* catch() { ... } // from try @ 0027fc24 with catch @ 0027fc94 */ + /* try { // try from 0027fcb8 to 0037fcd3 has its CatchHandler @ 0027fcec */ + return; +} + + +================================================================== + +### FUNC 0027fcc4 (1060 bytes) name=FUN_0027fcc4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0027fcc4(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined1 auVar3 [16]; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + long lVar8; + undefined1 uVar9; + undefined8 *puVar10; + char *pcVar11; + long lVar12; + undefined1 *puVar13; + int iVar14; + undefined8 *puVar15; + undefined1 auVar18 [12]; + undefined8 uVar16; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar22 [16]; + undefined8 uVar17; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + undefined1 uVar38; + undefined1 uVar39; + undefined1 uVar40; + int iVar41; + undefined1 auVar21 [16]; + + iVar41 = param_7[1]; + /* catch(type#1 @ 00000000) { ... } // from try @ 0027fcb8 with catch @ 0027fcec + */ + iVar1 = *param_7; + fVar36 = (float)*param_8; + fVar37 = (float)param_8[1]; + if (iVar41 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar14 = 0; + } + else { + iVar14 = 0; + puVar10 = param_1; + puVar15 = param_5; + do { + uVar17 = *puVar10; + auVar27._0_4_ = (int)(short)(char)uVar17; + auVar27._4_4_ = (int)(short)(char)((ulong)uVar17 >> 8); + auVar27._8_4_ = (int)(short)(char)((ulong)uVar17 >> 0x10); + auVar27._12_4_ = (int)(short)(char)((ulong)uVar17 >> 0x18); + auVar27 = NEON_scvtf(auVar27,4); + auVar23._0_4_ = (int)(short)(char)((ulong)uVar17 >> 0x20); + auVar23._4_4_ = (int)(short)(char)((ulong)uVar17 >> 0x28); + auVar23._8_4_ = (int)(short)(char)((ulong)uVar17 >> 0x30); + auVar23._12_4_ = (int)(short)(char)((ulong)uVar17 >> 0x38); + auVar23 = NEON_scvtf(auVar23,4); + fVar28 = fVar37 + auVar27._0_4_ * fVar36; + fVar30 = fVar37 + auVar27._4_4_ * fVar36; + fVar32 = fVar37 + auVar27._8_4_ * fVar36; + fVar34 = fVar37 + auVar27._12_4_ * fVar36; + fVar29 = fVar37 + auVar23._0_4_ * fVar36; + fVar31 = fVar37 + auVar23._4_4_ * fVar36; + fVar33 = fVar37 + auVar23._8_4_ * fVar36; + fVar35 = fVar37 + auVar23._12_4_ * fVar36; + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) + { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar24._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) + { + auVar19._8_4_ = 0x3f000000; + auVar19._0_8_ = 0x3f0000003f000000; + auVar19._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar19._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar7 = (int)(fVar28 + (float)CONCAT13((byte)((uint)fVar28 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar28 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar28 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> + 8), + SUB41(fVar28,0) & + (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar4 = (int)(fVar30 + (float)CONCAT13((byte)((uint)fVar30 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar30 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar30 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar30,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar38 = (undefined1)((uint)iVar4 >> 8); + uVar39 = (undefined1)((uint)iVar4 >> 0x10); + uVar40 = (undefined1)((uint)iVar4 >> 0x18); + iVar5 = (int)(fVar32 + (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar32 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10 + ),CONCAT11((byte)((uint)fVar32 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar32,0) & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar6 = (int)(fVar34 + (float)CONCAT13((byte)((uint)fVar34 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar34 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30 + ),CONCAT11((byte)((uint)fVar34 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar34,0) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar3[4] = (char)iVar4; + auVar3._0_4_ = iVar7; + auVar3[5] = uVar38; + auVar3[6] = uVar39; + auVar3[7] = uVar40; + auVar3[8] = (char)iVar5; + auVar3[9] = (char)((uint)iVar5 >> 8); + auVar3[10] = (char)((uint)iVar5 >> 0x10); + auVar3[0xb] = (char)((uint)iVar5 >> 0x18); + auVar3[0xc] = (char)iVar6; + auVar3[0xd] = (char)((uint)iVar6 >> 8); + auVar3[0xe] = (char)((uint)iVar6 >> 0x10); + auVar3[0xf] = (char)((uint)iVar6 >> 0x18); + uVar17 = NEON_sqxtn(CONCAT17(uVar40,CONCAT16(uVar39,CONCAT15(uVar38,CONCAT14((char)iVar4, + iVar7)))), + auVar3,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ed0), iVar7 != 0)) + { + auVar25._8_4_ = 0x80000000; + auVar25._0_8_ = 0x8000000080000000; + auVar25._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar25._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar7 = __cxa_guard_acquire(&DAT_00531ec8), iVar7 != 0)) + { + auVar20._8_4_ = 0x3f000000; + auVar20._0_8_ = 0x3f0000003f000000; + auVar20._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar20._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar14 = iVar14 + 8; + puVar10 = puVar10 + 1; + fVar28 = (float)CONCAT13((byte)((uint)fVar29 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar29 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar29 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar29,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar18._0_8_ = + CONCAT17((byte)((uint)fVar31 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar31 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar31 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar31,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar28)))); + auVar18[8] = SUB41(fVar33,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar18[9] = (byte)((uint)fVar33 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar18[10] = (byte)((uint)fVar33 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar18[0xb] = (byte)((uint)fVar33 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar21[0xc] = SUB41(fVar35,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar21._0_12_ = auVar18; + auVar21[0xd] = (byte)((uint)fVar35 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar21[0xe] = (byte)((uint)fVar35 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar21[0xf] = (byte)((uint)fVar35 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar22._0_8_ = + CONCAT44((int)(fVar31 + (float)((ulong)auVar18._0_8_ >> 0x20)),(int)(fVar29 + fVar28) + ); + auVar22._8_4_ = (int)(fVar33 + auVar18._8_4_); + auVar22._12_4_ = (int)(fVar35 + auVar21._12_4_); + uVar16 = NEON_sqxtn(auVar22._0_8_,auVar22,4); + auVar26._8_8_ = uVar16; + auVar26._0_8_ = uVar17; + uVar17 = NEON_sqxtn(uVar16,auVar26,2); + *puVar15 = uVar17; + puVar15 = puVar15 + 1; + } while (iVar14 < iVar1 + -7); + } + if (iVar14 < iVar1 + -3) { + lVar12 = (long)iVar14; + pcVar11 = (char *)((long)param_1 + lVar12); + uVar2 = (uint)((iVar1 + -4) - iVar14) >> 2; + puVar13 = (undefined1 *)((long)param_5 + lVar12); + do { + lVar8 = lrintf(fVar37 + (float)(int)*pcVar11 * fVar36); + uVar39 = 0x80; + uVar40 = 0x7f; + uVar38 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar38 = uVar40, (int)lVar8 < 1)) { + uVar38 = uVar39; + } + lVar8 = lrintf(fVar37 + (float)(int)pcVar11[1] * fVar36); + uVar9 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar9 = uVar40, (int)lVar8 < 1)) { + uVar9 = uVar39; + } + *puVar13 = uVar38; + puVar13[1] = uVar9; + lVar8 = lrintf(fVar37 + (float)(int)pcVar11[2] * fVar36); + uVar38 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar38 = uVar40, (int)lVar8 < 1)) { + uVar38 = uVar39; + } + lVar8 = lrintf(fVar37 + (float)(int)pcVar11[3] * fVar36); + uVar9 = (char)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar9 = uVar40, (int)lVar8 < 1)) { + uVar9 = uVar39; + } + pcVar11 = pcVar11 + 4; + puVar13[2] = uVar38; + puVar13[3] = uVar9; + puVar13 = puVar13 + 4; + } while (pcVar11 != (char *)((long)param_1 + lVar12 + 4 + (ulong)uVar2 * 4)); + iVar14 = iVar14 + 4 + uVar2 * 4; + } + if (iVar14 < iVar1) { + lVar12 = 0; + do { + lVar8 = lrintf(fVar37 + (float)(int)*(char *)((long)param_1 + lVar12 + iVar14) * fVar36); + uVar38 = (undefined1)lVar8; + if ((0xff < (int)lVar8 + 0x80U) && (uVar38 = 0x7f, (int)lVar8 < 1)) { + uVar38 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar12 + iVar14) = uVar38; + lVar12 = lVar12 + 1; + } while (lVar12 != (ulong)(uint)((iVar1 + -1) - iVar14) + 1); + } + iVar41 = iVar41 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar41 != 0); + } + return; +} + + +================================================================== + +### FUNC 002800e8 (1060 bytes) name=FUN_002800e8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002800e8(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined1 auVar3 [16]; + undefined8 uVar4; + undefined3 uVar5; + undefined1 auVar6 [16]; + undefined8 uVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + long lVar12; + undefined2 uVar13; + undefined8 *puVar14; + long lVar15; + undefined2 *puVar16; + int iVar17; + undefined2 uVar18; + undefined2 uVar19; + undefined8 *puVar20; + float *pfVar21; + undefined2 uVar22; + undefined1 uVar23; + undefined1 uVar24; + undefined1 uVar25; + undefined1 uVar26; + undefined1 uVar27; + undefined1 uVar28; + undefined1 uVar29; + undefined1 uVar30; + undefined1 uVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + float fVar42; + byte bVar43; + int iVar44; + + iVar1 = *param_7; + iVar44 = param_7[1]; + fVar41 = (float)*param_8; + fVar42 = (float)param_8[1]; + if (iVar44 != 0) { + uVar23 = (undefined1)((uint)fVar42 >> 8); + uVar25 = (undefined1)((uint)fVar42 >> 0x10); + uVar27 = (undefined1)((uint)fVar42 >> 0x18); + uVar24 = (undefined1)((uint)fVar41 >> 8); + uVar26 = (undefined1)((uint)fVar41 >> 0x10); + uVar28 = (undefined1)((uint)fVar41 >> 0x18); + do { + if (iVar1 + -7 < 1) { + iVar17 = 0; + } + else { + iVar17 = 0; + puVar14 = param_1; + puVar20 = param_5; + do { + fVar37 = (float)(CONCAT17(uVar28,CONCAT16(uVar26,CONCAT15(uVar24,CONCAT14(SUB41(fVar41,0), + fVar41)))) >> + 0x20); + fVar40 = (float)(CONCAT17(uVar28,CONCAT16(uVar26,CONCAT15(uVar24,CONCAT14(SUB41(fVar41,0), + fVar41)))) >> + 0x20); + fVar35 = (float)(CONCAT17(uVar27,CONCAT16(uVar25,CONCAT15(uVar23,CONCAT14(SUB41(fVar42,0), + fVar42)))) >> + 0x20); + fVar32 = fVar42 + (float)*puVar14 * fVar41; + fVar34 = fVar35 + (float)((ulong)*puVar14 >> 0x20) * fVar37; + fVar39 = (float)(CONCAT17(uVar27,CONCAT16(uVar25,CONCAT15(uVar23,CONCAT14(SUB41(fVar42,0), + fVar42)))) >> + 0x20); + fVar36 = fVar42 + (float)puVar14[1] * fVar41; + fVar38 = fVar39 + (float)((ulong)puVar14[1] >> 0x20) * fVar40; + fVar33 = fVar42 + (float)puVar14[2] * fVar41; + fVar35 = fVar35 + (float)((ulong)puVar14[2] >> 0x20) * fVar37; + fVar37 = fVar42 + (float)puVar14[3] * fVar41; + fVar39 = fVar39 + (float)((ulong)puVar14[3] >> 0x20) * fVar40; + if (((DAT_00531ed0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ed0), iVar11 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec8), iVar11 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar11 = (int)(fVar32 + (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar32 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar32 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8 + ) | (byte)((ulong) + _DAT_00531ea0 >> 8), + SUB41(fVar32,0) & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar8 = (int)(fVar34 + (float)CONCAT13((byte)((uint)fVar34 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar34 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar34 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar34,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar29 = (undefined1)((uint)iVar8 >> 8); + uVar30 = (undefined1)((uint)iVar8 >> 0x10); + uVar31 = (undefined1)((uint)iVar8 >> 0x18); + iVar9 = (int)(fVar36 + (float)CONCAT13((byte)((uint)fVar36 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar36 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((uint)fVar36 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) + | (byte)((ulong)uRam0000000000531ea8 >> 8 + ), + SUB41(fVar36,0) & + (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar10 = (int)(fVar38 + (float)CONCAT13((byte)((uint)fVar38 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar38 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x30), + CONCAT11((byte)((uint)fVar38 >> 8) & + (byte)((ulong) + uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar38,0) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar6[4] = (char)iVar8; + auVar6._0_4_ = iVar11; + auVar6[5] = uVar29; + auVar6[6] = uVar30; + auVar6[7] = uVar31; + auVar6[8] = (char)iVar9; + auVar6[9] = (char)((uint)iVar9 >> 8); + auVar6[10] = (char)((uint)iVar9 >> 0x10); + auVar6[0xb] = (char)((uint)iVar9 >> 0x18); + auVar6[0xc] = (char)iVar10; + auVar6[0xd] = (char)((uint)iVar10 >> 8); + auVar6[0xe] = (char)((uint)iVar10 >> 0x10); + auVar6[0xf] = (char)((uint)iVar10 >> 0x18); + uVar7 = NEON_sqxtn(CONCAT17(uVar31,CONCAT16(uVar30,CONCAT15(uVar29,CONCAT14((char)iVar8, + iVar11)))), + auVar6,4); + if (((DAT_00531ed0 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ed0), iVar11 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar11 = __cxa_guard_acquire(&DAT_00531ec8), iVar11 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar17 = iVar17 + 8; + puVar14 = puVar14 + 4; + iVar11 = (int)(fVar33 + (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar33 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar33 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8 + ) | (byte)((ulong) + _DAT_00531ea0 >> 8), + SUB41(fVar33,0) & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar8 = (int)(fVar35 + (float)CONCAT13((byte)((uint)fVar35 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar35 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar35 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar35,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar29 = (undefined1)((uint)iVar8 >> 8); + uVar30 = (undefined1)((uint)iVar8 >> 0x10); + uVar31 = (undefined1)((uint)iVar8 >> 0x18); + iVar9 = (int)(fVar37 + (float)CONCAT13((byte)((uint)fVar37 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar37 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((uint)fVar37 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) + | (byte)((ulong)uRam0000000000531ea8 >> 8 + ), + SUB41(fVar37,0) & + (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar10 = (int)(fVar39 + (float)CONCAT13((byte)((uint)fVar39 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar39 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> + 0x30), + CONCAT11((byte)((uint)fVar39 >> 8) & + (byte)((ulong) + uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar39,0) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar3[4] = (char)iVar8; + auVar3._0_4_ = iVar11; + auVar3[5] = uVar29; + auVar3[6] = uVar30; + auVar3[7] = uVar31; + auVar3[8] = (char)iVar9; + auVar3[9] = (char)((uint)iVar9 >> 8); + auVar3[10] = (char)((uint)iVar9 >> 0x10); + auVar3[0xb] = (char)((uint)iVar9 >> 0x18); + auVar3[0xc] = (char)iVar10; + auVar3[0xd] = (char)((uint)iVar10 >> 8); + auVar3[0xe] = (char)((uint)iVar10 >> 0x10); + auVar3[0xf] = (char)((uint)iVar10 >> 0x18); + uVar4 = NEON_sqxtn(CONCAT17(uVar31,CONCAT16(uVar30,CONCAT15(uVar29,CONCAT14((char)iVar8, + iVar11)))), + auVar3,4); + puVar20[1] = uVar4; + *puVar20 = uVar7; + puVar20 = puVar20 + 2; + } while (iVar17 < iVar1 + -7); + } + if (iVar17 < iVar1 + -3) { + lVar15 = (long)iVar17; + uVar2 = (iVar1 + -4) - iVar17; + pfVar21 = (float *)((long)param_1 + lVar15 * 4); + puVar16 = (undefined2 *)((long)param_5 + lVar15 * 2); + bVar43 = (byte)(uVar2 >> 0x1a); + uVar5 = (undefined3)(uVar2 >> 2); + do { + lVar12 = lrintf(fVar42 + *pfVar21 * fVar41); + uVar18 = 0x8000; + uVar19 = 0x7fff; + uVar22 = (short)lVar12; + if ((0xffff < (int)lVar12 + 0x8000U) && (uVar22 = uVar19, (int)lVar12 < 1)) { + uVar22 = uVar18; + } + lVar12 = lrintf(fVar42 + pfVar21[1] * fVar41); + uVar13 = (short)lVar12; + if ((0xffff < (int)lVar12 + 0x8000U) && (uVar13 = uVar19, (int)lVar12 < 1)) { + uVar13 = uVar18; + } + fVar32 = pfVar21[2]; + *puVar16 = uVar22; + puVar16[1] = uVar13; + lVar12 = lrintf(fVar42 + fVar32 * fVar41); + uVar22 = (short)lVar12; + if ((0xffff < (int)lVar12 + 0x8000U) && (uVar22 = uVar19, (int)lVar12 < 1)) { + uVar22 = uVar18; + } + lVar12 = lrintf(fVar42 + pfVar21[3] * fVar41); + uVar13 = (short)lVar12; + if ((0xffff < (int)lVar12 + 0x8000U) && (uVar13 = uVar19, (int)lVar12 < 1)) { + uVar13 = uVar18; + } + pfVar21 = pfVar21 + 4; + puVar16[2] = uVar22; + puVar16[3] = uVar13; + puVar16 = puVar16 + 4; + } while (pfVar21 != + (float *)((long)param_1 + (lVar15 + 4 + (ulong)CONCAT13(bVar43,uVar5) * 4) * 4)); + iVar17 = iVar17 + 4 + CONCAT13(bVar43,uVar5) * 4; + } + if (iVar17 < iVar1) { + lVar15 = 0; + do { + lVar12 = lrintf(fVar42 + *(float *)((long)param_1 + lVar15 * 4 + (long)iVar17 * 4) * + fVar41); + uVar22 = (undefined2)lVar12; + if ((0xffff < (int)lVar12 + 0x8000U) && (uVar22 = 0x7fff, (int)lVar12 < 1)) { + uVar22 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar15 * 2 + (long)iVar17 * 2) = uVar22; + lVar15 = lVar15 + 1; + } while (lVar15 != (ulong)(uint)((iVar1 + -1) - iVar17) + 1); + } + iVar44 = iVar44 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar44 != 0); + } + return; +} + + +================================================================== + +### FUNC 0028050c (1060 bytes) name=FUN_0028050c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0028050c(undefined1 (*param_1) [16],ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + undefined3 uVar4; + undefined1 auVar5 [16]; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + long lVar10; + long lVar11; + undefined1 uVar12; + int iVar13; + undefined1 (*pauVar14) [16]; + undefined1 *puVar15; + undefined8 *puVar16; + int *piVar17; + undefined1 auVar20 [12]; + undefined8 uVar18; + undefined8 uVar19; + undefined1 auVar21 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + byte bVar36; + undefined1 uVar37; + undefined1 uVar38; + undefined1 uVar39; + float fVar40; + float fVar41; + int iVar42; + undefined1 auVar22 [16]; + + iVar2 = *param_7; + iVar42 = param_7[1]; + fVar40 = (float)*param_8; + fVar41 = (float)param_8[1]; + if (iVar42 != 0) { + do { + if (iVar2 + -7 < 1) { + iVar13 = 0; + } + else { + iVar13 = 0; + pauVar14 = param_1; + puVar16 = param_5; + do { + auVar27 = NEON_scvtf(*pauVar14,4); + auVar24 = NEON_scvtf(pauVar14[1],4); + fVar28 = fVar41 + auVar27._0_4_ * fVar40; + fVar30 = fVar41 + auVar27._4_4_ * fVar40; + fVar32 = fVar41 + auVar27._8_4_ * fVar40; + fVar34 = fVar41 + auVar27._12_4_ * fVar40; + fVar29 = fVar41 + auVar24._0_4_ * fVar40; + fVar31 = fVar41 + auVar24._4_4_ * fVar40; + fVar33 = fVar41 + auVar24._8_4_ * fVar40; + fVar35 = fVar41 + auVar24._12_4_ * fVar40; + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + auVar24._8_4_ = 0x80000000; + auVar24._0_8_ = 0x8000000080000000; + auVar24._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar24._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar27._8_4_ = 0x3f000000; + auVar27._0_8_ = 0x3f0000003f000000; + auVar27._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar27._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar9 = (int)(fVar28 + (float)CONCAT13((byte)((uint)fVar28 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar28 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar28 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> + 8), + SUB41(fVar28,0) & + (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar6 = (int)(fVar30 + (float)CONCAT13((byte)((uint)fVar30 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar30 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar30 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar30,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar37 = (undefined1)((uint)iVar6 >> 8); + uVar38 = (undefined1)((uint)iVar6 >> 0x10); + uVar39 = (undefined1)((uint)iVar6 >> 0x18); + iVar7 = (int)(fVar32 + (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar32 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10 + ),CONCAT11((byte)((uint)fVar32 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar32,0) & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)(fVar34 + (float)CONCAT13((byte)((uint)fVar34 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar34 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30 + ),CONCAT11((byte)((uint)fVar34 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar34,0) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar5[4] = (char)iVar6; + auVar5._0_4_ = iVar9; + auVar5[5] = uVar37; + auVar5[6] = uVar38; + auVar5[7] = uVar39; + auVar5[8] = (char)iVar7; + auVar5[9] = (char)((uint)iVar7 >> 8); + auVar5[10] = (char)((uint)iVar7 >> 0x10); + auVar5[0xb] = (char)((uint)iVar7 >> 0x18); + auVar5[0xc] = (char)iVar8; + auVar5[0xd] = (char)((uint)iVar8 >> 8); + auVar5[0xe] = (char)((uint)iVar8 >> 0x10); + auVar5[0xf] = (char)((uint)iVar8 >> 0x18); + uVar19 = NEON_sqxtn(CONCAT17(uVar39,CONCAT16(uVar38,CONCAT15(uVar37,CONCAT14((char)iVar6, + iVar9)))), + auVar5,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + auVar25._8_4_ = 0x80000000; + auVar25._0_8_ = 0x8000000080000000; + auVar25._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar25._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar21._8_4_ = 0x3f000000; + auVar21._0_8_ = 0x3f0000003f000000; + auVar21._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar21._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar13 = iVar13 + 8; + pauVar14 = pauVar14 + 2; + fVar28 = (float)CONCAT13((byte)((uint)fVar29 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar29 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar29 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar29,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar20._0_8_ = + CONCAT17((byte)((uint)fVar31 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar31 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar31 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar31,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar28)))); + auVar20[8] = SUB41(fVar33,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar20[9] = (byte)((uint)fVar33 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar20[10] = (byte)((uint)fVar33 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar20[0xb] = (byte)((uint)fVar33 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar22[0xc] = SUB41(fVar35,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar22._0_12_ = auVar20; + auVar22[0xd] = (byte)((uint)fVar35 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar22[0xe] = (byte)((uint)fVar35 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar22[0xf] = (byte)((uint)fVar35 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar23._0_8_ = + CONCAT44((int)(fVar31 + (float)((ulong)auVar20._0_8_ >> 0x20)),(int)(fVar29 + fVar28) + ); + auVar23._8_4_ = (int)(fVar33 + auVar20._8_4_); + auVar23._12_4_ = (int)(fVar35 + auVar22._12_4_); + uVar18 = NEON_sqxtn(auVar23._0_8_,auVar23,4); + auVar26._8_8_ = uVar18; + auVar26._0_8_ = uVar19; + uVar19 = NEON_sqxtn(uVar18,auVar26,2); + *puVar16 = uVar19; + puVar16 = puVar16 + 1; + } while (iVar13 < iVar2 + -7); + } + if (iVar13 < iVar2 + -3) { + lVar11 = (long)iVar13; + uVar3 = (iVar2 + -4) - iVar13; + bVar36 = (byte)(uVar3 >> 0x1a); + piVar17 = (int *)(*param_1 + lVar11 * 4); + uVar4 = (undefined3)(uVar3 >> 2); + puVar15 = (undefined1 *)((long)param_5 + lVar11); + do { + lVar10 = lrintf(fVar41 + (float)*piVar17 * fVar40); + uVar38 = 0x80; + uVar39 = 0x7f; + uVar37 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar37 = uVar39, (int)lVar10 < 1)) { + uVar37 = uVar38; + } + lVar10 = lrintf(fVar41 + (float)piVar17[1] * fVar40); + uVar12 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar12 = uVar39, (int)lVar10 < 1)) { + uVar12 = uVar38; + } + *puVar15 = uVar37; + puVar15[1] = uVar12; + lVar10 = lrintf(fVar41 + (float)piVar17[2] * fVar40); + uVar37 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar37 = uVar39, (int)lVar10 < 1)) { + uVar37 = uVar38; + } + lVar10 = lrintf(fVar41 + (float)piVar17[3] * fVar40); + uVar12 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar12 = uVar39, (int)lVar10 < 1)) { + uVar12 = uVar38; + } + puVar15[2] = uVar37; + puVar1 = puVar15 + 4; + piVar17 = piVar17 + 4; + puVar15[3] = uVar12; + puVar15 = puVar1; + } while (puVar1 != (undefined1 *) + ((long)param_5 + lVar11 + 4 + (ulong)CONCAT13(bVar36,uVar4) * 4)); + iVar13 = iVar13 + 4 + CONCAT13(bVar36,uVar4) * 4; + } + if (iVar13 < iVar2) { + lVar11 = 0; + do { + lVar10 = lrintf(fVar41 + (float)*(int *)(*param_1 + lVar11 * 4 + (long)iVar13 * 4) * + fVar40); + uVar37 = (undefined1)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar37 = 0x7f, (int)lVar10 < 1)) { + uVar37 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar11 + iVar13) = uVar37; + lVar11 = lVar11 + 1; + } while (lVar11 != (ulong)(uint)((iVar2 + -1) - iVar13) + 1); + } + iVar42 = iVar42 + -1; + param_1 = (undefined1 (*) [16])(*param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar42 != 0); + } + return; +} + + +================================================================== + +### FUNC 00280930 (1096 bytes) name=FUN_00280930 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00280930(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + uint uVar1; + int iVar2; + undefined3 uVar3; + undefined1 auVar4 [16]; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + long lVar9; + undefined2 uVar10; + ushort *puVar11; + ulong uVar12; + long lVar13; + undefined2 *puVar14; + ulong uVar15; + undefined2 uVar16; + undefined8 *puVar17; + undefined2 uVar18; + undefined2 uVar19; + float fVar20; + undefined8 uVar21; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined8 uVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + byte bVar39; + undefined1 uVar40; + undefined1 uVar41; + undefined1 uVar42; + int iVar43; + undefined1 auVar22 [12]; + undefined1 auVar25 [16]; + + iVar2 = *param_7; + iVar43 = param_7[1]; + fVar37 = (float)*param_8; + fVar38 = (float)param_8[1]; + if (iVar43 != 0) { + do { + if (iVar2 + -7 < 1) { + uVar15 = 0; + } + else { + uVar15 = 0; + puVar11 = param_1; + puVar17 = param_5; + do { + auVar30._2_2_ = 0; + auVar30._0_2_ = puVar11[4]; + auVar30._4_2_ = puVar11[5]; + auVar30._6_2_ = 0; + auVar30._8_2_ = puVar11[6]; + auVar30._10_2_ = 0; + auVar30._12_2_ = puVar11[7]; + auVar30._14_2_ = 0; + auVar31 = NEON_ucvtf(auVar30,4); + auVar27._2_2_ = 0; + auVar27._0_2_ = *puVar11; + auVar27._4_2_ = puVar11[1]; + auVar27._6_2_ = 0; + auVar27._8_2_ = puVar11[2]; + auVar27._10_2_ = 0; + auVar27._12_2_ = puVar11[3]; + auVar27._14_2_ = 0; + auVar27 = NEON_ucvtf(auVar27,4); + fVar33 = fVar38 + auVar31._0_4_ * fVar37; + fVar34 = fVar38 + auVar31._4_4_ * fVar37; + fVar35 = fVar38 + auVar31._8_4_ * fVar37; + fVar36 = fVar38 + auVar31._12_4_ * fVar37; + auVar31._0_8_ = CONCAT44(fVar38 + auVar27._4_4_ * fVar37,fVar38 + auVar27._0_4_ * fVar37); + auVar31._8_4_ = fVar38 + auVar27._8_4_ * fVar37; + auVar31._12_4_ = fVar38 + auVar27._12_4_ * fVar37; + if ((DAT_00531ed0 & 1) == 0) { + uVar32 = auVar31._8_8_; + iVar8 = __cxa_guard_acquire(&DAT_00531ed0); + auVar31._8_8_ = uVar32; + if (iVar8 != 0) { + auVar28._8_4_ = 0x80000000; + auVar28._0_8_ = 0x8000000080000000; + auVar28._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar28._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec8), iVar8 != 0)) + { + auVar23._8_4_ = 0x3f000000; + auVar23._0_8_ = 0x3f0000003f000000; + auVar23._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar23._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar8 = (int)(auVar31._0_4_ + + (float)CONCAT13(auVar31[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar31[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar31[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + auVar31[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar5 = (int)(auVar31._4_4_ + + (float)CONCAT13(auVar31[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12(auVar31[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11(auVar31[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + auVar31[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar40 = (undefined1)((uint)iVar5 >> 8); + uVar41 = (undefined1)((uint)iVar5 >> 0x10); + uVar42 = (undefined1)((uint)iVar5 >> 0x18); + iVar6 = (int)(auVar31._8_4_ + + (float)CONCAT13(auVar31[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar31[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar31[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar31[8] & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar7 = (int)(auVar31._12_4_ + + (float)CONCAT13(auVar31[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12(auVar31[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11(auVar31[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x28), + auVar31[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar4[4] = (char)iVar5; + auVar4._0_4_ = iVar8; + auVar4[5] = uVar40; + auVar4[6] = uVar41; + auVar4[7] = uVar42; + auVar4[8] = (char)iVar6; + auVar4[9] = (char)((uint)iVar6 >> 8); + auVar4[10] = (char)((uint)iVar6 >> 0x10); + auVar4[0xb] = (char)((uint)iVar6 >> 0x18); + auVar4[0xc] = (char)iVar7; + auVar4[0xd] = (char)((uint)iVar7 >> 8); + auVar4[0xe] = (char)((uint)iVar7 >> 0x10); + auVar4[0xf] = (char)((uint)iVar7 >> 0x18); + uVar32 = NEON_sqxtn(CONCAT17(uVar42,CONCAT16(uVar41,CONCAT15(uVar40,CONCAT14((char)iVar5, + iVar8)))), + auVar4,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ed0), iVar8 != 0)) + { + auVar29._8_4_ = 0x80000000; + auVar29._0_8_ = 0x8000000080000000; + auVar29._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar29._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec8), iVar8 != 0)) + { + auVar24._8_4_ = 0x3f000000; + auVar24._0_8_ = 0x3f0000003f000000; + auVar24._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar24._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + uVar1 = (int)uVar15 + 8; + uVar15 = (ulong)uVar1; + puVar11 = puVar11 + 8; + fVar20 = (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar33 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar33 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar33,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar22._0_8_ = + CONCAT17((byte)((uint)fVar34 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar34 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar34 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar34,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar20)))); + auVar22[8] = SUB41(fVar35,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar22[9] = (byte)((uint)fVar35 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar22[10] = (byte)((uint)fVar35 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar22[0xb] = (byte)((uint)fVar35 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar25[0xc] = SUB41(fVar36,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar25._0_12_ = auVar22; + auVar25[0xd] = (byte)((uint)fVar36 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar25[0xe] = (byte)((uint)fVar36 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar25[0xf] = (byte)((uint)fVar36 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar26._0_8_ = + CONCAT44((int)(fVar34 + (float)((ulong)auVar22._0_8_ >> 0x20)),(int)(fVar33 + fVar20) + ); + auVar26._8_4_ = (int)(fVar35 + auVar22._8_4_); + auVar26._12_4_ = (int)(fVar36 + auVar25._12_4_); + uVar21 = NEON_sqxtn(auVar26._0_8_,auVar26,4); + puVar17[1] = uVar21; + *puVar17 = uVar32; + puVar17 = puVar17 + 2; + } while ((int)uVar1 < iVar2 + -7); + } + iVar8 = (int)uVar15; + if (iVar8 < iVar2 + -3) { + lVar13 = (long)iVar8; + uVar1 = (iVar2 + -4) - iVar8; + puVar11 = param_1 + lVar13; + puVar14 = (undefined2 *)((long)param_5 + lVar13 * 2); + bVar39 = (byte)(uVar1 >> 0x1a); + uVar3 = (undefined3)(uVar1 >> 2); + do { + lVar9 = lrintf(fVar38 + (float)*puVar11 * fVar37); + uVar16 = 0x8000; + uVar18 = 0x7fff; + uVar19 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = uVar18, (int)lVar9 < 1)) { + uVar19 = uVar16; + } + lVar9 = lrintf(fVar38 + (float)puVar11[1] * fVar37); + uVar10 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar10 = uVar18, (int)lVar9 < 1)) { + uVar10 = uVar16; + } + *puVar14 = uVar19; + puVar14[1] = uVar10; + lVar9 = lrintf(fVar38 + (float)puVar11[2] * fVar37); + uVar19 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = uVar18, (int)lVar9 < 1)) { + uVar19 = uVar16; + } + lVar9 = lrintf(fVar38 + (float)puVar11[3] * fVar37); + uVar10 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar10 = uVar18, (int)lVar9 < 1)) { + uVar10 = uVar16; + } + puVar11 = puVar11 + 4; + puVar14[2] = uVar19; + puVar14[3] = uVar10; + puVar14 = puVar14 + 4; + } while (puVar11 != param_1 + lVar13 + 4 + (ulong)CONCAT13(bVar39,uVar3) * 4); + uVar15 = (ulong)(uint)(iVar8 + 4 + CONCAT13(bVar39,uVar3) * 4); + } + if ((int)uVar15 < iVar2) { + uVar12 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + lVar13 = 0; + do { + lVar9 = lrintf(fVar38 + (float)*(ushort *)((long)param_1 + lVar13 + uVar12) * fVar37); + uVar19 = (undefined2)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = 0x7fff, (int)lVar9 < 1)) { + uVar19 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar13 + uVar12) = uVar19; + lVar13 = lVar13 + 2; + } while (lVar13 != ((ulong)(uint)((iVar2 + -1) - (int)uVar15) + 1) * 2); + } + iVar43 = iVar43 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar43 != 0); + } + return; +} + + +================================================================== + +### FUNC 00280d78 (1092 bytes) name=FUN_00280d78 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00280d78(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined3 uVar3; + undefined1 auVar4 [16]; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + long lVar9; + undefined2 uVar10; + undefined8 *puVar11; + byte *pbVar12; + long lVar13; + undefined2 *puVar14; + int iVar15; + undefined2 uVar16; + undefined8 *puVar17; + undefined2 uVar18; + undefined2 uVar19; + undefined1 uVar20; + undefined1 auVar23 [12]; + undefined8 uVar21; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar27 [16]; + undefined8 uVar22; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + byte bVar42; + undefined1 uVar43; + undefined1 uVar44; + int iVar45; + undefined1 auVar26 [16]; + + iVar1 = *param_7; + iVar45 = param_7[1]; + fVar40 = (float)*param_8; + fVar41 = (float)param_8[1]; + if (iVar45 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar15 = 0; + } + else { + iVar15 = 0; + puVar11 = param_1; + puVar17 = param_5; + /* try { // try from 00280e30 to 00380e4f has its CatchHandler @ 00280e30 + catch(type#1 @ 00000000) { ... } // from try @ 00280e30 with catch @ 00280e30 + catch(type#1 @ 00000000) { ... } // from try @ 00280e88 with catch @ 00280e30 + */ + do { + uVar22 = *puVar11; + uVar20 = (undefined1)((ulong)uVar22 >> 8); + auVar31._6_2_ = 0; + auVar31._0_6_ = + (uint6)CONCAT14(uVar20,(uint)CONCAT12(uVar20,(ushort)(byte)uVar22)) & 0xffff0000ffff; + /* try { // try from 00280f44 to 00380f53 has its CatchHandler @ 00280fa4 */ + auVar31[8] = (char)((ulong)uVar22 >> 0x10); + auVar31._9_3_ = 0; + auVar31[0xc] = (char)((ulong)uVar22 >> 0x18); + auVar31._13_3_ = 0; + auVar31 = NEON_ucvtf(auVar31,4); + auVar28._1_3_ = 0; + auVar28[0] = (byte)((ulong)uVar22 >> 0x20); + auVar28[4] = (char)((ulong)uVar22 >> 0x28); + auVar28._5_3_ = 0; + auVar28[8] = (char)((ulong)uVar22 >> 0x30); + auVar28._9_3_ = 0; + auVar28[0xc] = (char)((ulong)uVar22 >> 0x38); + auVar28._13_3_ = 0; + auVar28 = NEON_ucvtf(auVar28,4); + fVar32 = fVar41 + auVar31._0_4_ * fVar40; + fVar34 = fVar41 + auVar31._4_4_ * fVar40; + fVar36 = fVar41 + auVar31._8_4_ * fVar40; + fVar38 = fVar41 + auVar31._12_4_ * fVar40; + /* try { // try from 00280f6c to 00380f73 has its CatchHandler @ 00280fa0 */ + fVar33 = fVar41 + auVar28._0_4_ * fVar40; + fVar35 = fVar41 + auVar28._4_4_ * fVar40; + fVar37 = fVar41 + auVar28._8_4_ * fVar40; + fVar39 = fVar41 + auVar28._12_4_ * fVar40; + /* try { // try from 00280f74 to 00380fa7 has its CatchHandler @ 00280e94 */ + if (((DAT_00531ed0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ed0), iVar8 != 0)) + { + auVar29._8_4_ = 0x80000000; + auVar29._0_8_ = 0x8000000080000000; + auVar29._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar29._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + /* catch() { ... } // from try @ 00280f6c with catch @ 00280fa0 */ + /* catch() { ... } // from try @ 00280f44 with catch @ 00280fa4 */ + } + /* try { // try from 00280e50 to 00380e5b has its CatchHandler @ 00280e7c */ + if (((DAT_00531ec8 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec8), iVar8 != 0)) + { + auVar24._8_4_ = 0x3f000000; + auVar24._0_8_ = 0x3f0000003f000000; + auVar24._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar24._8_8_; + /* try { // try from 00280e64 to 00380e6b has its CatchHandler @ 00280e78 */ + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + /* catch(type#1 @ 00000000) { ... } // from try @ 00280e64 with catch @ 00280e78 + */ + /* catch(type#1 @ 00000000) { ... } // from try @ 00280e50 with catch @ 00280e7c + */ + /* try { // try from 00280e80 to 00380e87 has its CatchHandler @ 00280e90 */ + /* try { // try from 00280e88 to 00380e93 has its CatchHandler @ 00280e30 */ + /* catch(type#1 @ 00000000) { ... } // from try @ 00280e80 with catch @ 00280e90 + */ + iVar8 = (int)(fVar32 + (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar32 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar32 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> + 8), + SUB41(fVar32,0) & + (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar5 = (int)(fVar34 + (float)CONCAT13((byte)((uint)fVar34 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar34 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar34 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar34,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar20 = (undefined1)((uint)iVar5 >> 8); + uVar43 = (undefined1)((uint)iVar5 >> 0x10); + uVar44 = (undefined1)((uint)iVar5 >> 0x18); + iVar6 = (int)(fVar36 + (float)CONCAT13((byte)((uint)fVar36 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar36 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10 + ),CONCAT11((byte)((uint)fVar36 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar36,0) & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar7 = (int)(fVar38 + (float)CONCAT13((byte)((uint)fVar38 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar38 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30 + ),CONCAT11((byte)((uint)fVar38 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar38,0) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar4[4] = (char)iVar5; + auVar4._0_4_ = iVar8; + auVar4[5] = uVar20; + auVar4[6] = uVar43; + auVar4[7] = uVar44; + auVar4[8] = (char)iVar6; + auVar4[9] = (char)((uint)iVar6 >> 8); + auVar4[10] = (char)((uint)iVar6 >> 0x10); + auVar4[0xb] = (char)((uint)iVar6 >> 0x18); + auVar4[0xc] = (char)iVar7; + auVar4[0xd] = (char)((uint)iVar7 >> 8); + auVar4[0xe] = (char)((uint)iVar7 >> 0x10); + auVar4[0xf] = (char)((uint)iVar7 >> 0x18); + /* try { // try from 00280e94 to 00380f43 has its CatchHandler @ 00280e94 + catch() { ... } // from try @ 00280e94 with catch @ 00280e94 + catch() { ... } // from try @ 00280f74 with catch @ 00280e94 + catch() { ... } // from try @ 00280fb0 with catch @ 00280e94 */ + uVar22 = NEON_sqxtn(CONCAT17(uVar44,CONCAT16(uVar43,CONCAT15(uVar20,CONCAT14((char)iVar5, + iVar8)))), + auVar4,4); + /* try { // try from 00280fa8 to 00380faf has its CatchHandler @ 00280fb8 */ + /* try { // try from 00280fb0 to 00380fbb has its CatchHandler @ 00280e94 */ + if (((DAT_00531ed0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ed0), iVar8 != 0)) + { + auVar30._8_4_ = 0x80000000; + auVar30._0_8_ = 0x8000000080000000; + auVar30._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar30._8_8_; + /* catch() { ... } // from try @ 00280fa8 with catch @ 00280fb8 */ + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec8), iVar8 != 0)) + { + auVar25._8_4_ = 0x3f000000; + auVar25._0_8_ = 0x3f0000003f000000; + auVar25._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar25._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar15 = iVar15 + 8; + puVar11 = puVar11 + 1; + fVar32 = (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar33 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar33 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar33,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar23._0_8_ = + CONCAT17((byte)((uint)fVar35 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar35 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar35 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar35,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar32)))); + auVar23[8] = SUB41(fVar37,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar23[9] = (byte)((uint)fVar37 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar23[10] = (byte)((uint)fVar37 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar23[0xb] = (byte)((uint)fVar37 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar26[0xc] = SUB41(fVar39,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar26._0_12_ = auVar23; + auVar26[0xd] = (byte)((uint)fVar39 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar26[0xe] = (byte)((uint)fVar39 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar26[0xf] = (byte)((uint)fVar39 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar27._0_8_ = + CONCAT44((int)(fVar35 + (float)((ulong)auVar23._0_8_ >> 0x20)),(int)(fVar33 + fVar32) + ); + auVar27._8_4_ = (int)(fVar37 + auVar23._8_4_); + auVar27._12_4_ = (int)(fVar39 + auVar26._12_4_); + uVar21 = NEON_sqxtn(auVar27._0_8_,auVar27,4); + puVar17[1] = uVar21; + *puVar17 = uVar22; + puVar17 = puVar17 + 2; + } while (iVar15 < iVar1 + -7); + } + if (iVar15 < iVar1 + -3) { + lVar13 = (long)iVar15; + uVar2 = (iVar1 + -4) - iVar15; + pbVar12 = (byte *)((long)param_1 + lVar13); + puVar14 = (undefined2 *)((long)param_5 + lVar13 * 2); + bVar42 = (byte)(uVar2 >> 0x1a); + uVar3 = (undefined3)(uVar2 >> 2); + do { + lVar9 = lrintf(fVar41 + (float)*pbVar12 * fVar40); + uVar16 = 0x8000; + uVar18 = 0x7fff; + uVar19 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = uVar18, (int)lVar9 < 1)) { + uVar19 = uVar16; + } + lVar9 = lrintf(fVar41 + (float)pbVar12[1] * fVar40); + uVar10 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar10 = uVar18, (int)lVar9 < 1)) { + uVar10 = uVar16; + } + *puVar14 = uVar19; + puVar14[1] = uVar10; + lVar9 = lrintf(fVar41 + (float)pbVar12[2] * fVar40); + uVar19 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = uVar18, (int)lVar9 < 1)) { + uVar19 = uVar16; + } + lVar9 = lrintf(fVar41 + (float)pbVar12[3] * fVar40); + uVar10 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar10 = uVar18, (int)lVar9 < 1)) { + uVar10 = uVar16; + } + pbVar12 = pbVar12 + 4; + puVar14[2] = uVar19; + puVar14[3] = uVar10; + puVar14 = puVar14 + 4; + } while (pbVar12 != (byte *)((long)param_1 + lVar13 + 4 + (ulong)CONCAT13(bVar42,uVar3) * 4) + ); + /* try { // try from 002810dc to 0038112b has its CatchHandler @ 00281140 */ + iVar15 = iVar15 + 4 + CONCAT13(bVar42,uVar3) * 4; + } + if (iVar15 < iVar1) { + lVar13 = 0; + do { + lVar9 = lrintf(fVar41 + (float)*(byte *)((long)param_1 + lVar13 + iVar15) * fVar40); + uVar19 = (undefined2)lVar9; + /* catch(type#1 @ 00000000) { ... } // from try @ 002810dc with catch @ 00281140 + */ + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = 0x7fff, (int)lVar9 < 1)) { + uVar19 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar13 * 2 + (long)iVar15 * 2) = uVar19; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar1 + -1) - iVar15) + 1); + } + iVar45 = iVar45 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar45 != 0); + } + return; +} + + +================================================================== + +### FUNC 002811bc (1092 bytes) name=FUN_002811bc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002811bc(undefined8 *param_1,long param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined3 uVar3; + undefined1 auVar4 [16]; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + long lVar9; + undefined2 uVar10; + undefined8 *puVar11; + char *pcVar12; + long lVar13; + undefined2 *puVar14; + int iVar15; + undefined2 uVar16; + undefined8 *puVar17; + undefined2 uVar18; + undefined2 uVar19; + undefined1 auVar22 [12]; + undefined8 uVar20; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar26 [16]; + undefined8 uVar21; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + byte bVar41; + undefined1 uVar42; + undefined1 uVar43; + undefined1 uVar44; + int iVar45; + undefined1 auVar25 [16]; + + iVar1 = *param_7; + iVar45 = param_7[1]; + fVar39 = (float)*param_8; + fVar40 = (float)param_8[1]; + if (iVar45 != 0) { + do { + if (iVar1 + -7 < 1) { + iVar15 = 0; + } + else { + iVar15 = 0; + puVar11 = param_1; + puVar17 = param_5; + do { + uVar21 = *puVar11; + auVar30._0_4_ = (int)(short)(char)uVar21; + auVar30._4_4_ = (int)(short)(char)((ulong)uVar21 >> 8); + auVar30._8_4_ = (int)(short)(char)((ulong)uVar21 >> 0x10); + auVar30._12_4_ = (int)(short)(char)((ulong)uVar21 >> 0x18); + auVar30 = NEON_scvtf(auVar30,4); + auVar27._0_4_ = (int)(short)(char)((ulong)uVar21 >> 0x20); + auVar27._4_4_ = (int)(short)(char)((ulong)uVar21 >> 0x28); + auVar27._8_4_ = (int)(short)(char)((ulong)uVar21 >> 0x30); + auVar27._12_4_ = (int)(short)(char)((ulong)uVar21 >> 0x38); + auVar27 = NEON_scvtf(auVar27,4); + fVar31 = fVar40 + auVar30._0_4_ * fVar39; + fVar33 = fVar40 + auVar30._4_4_ * fVar39; + fVar35 = fVar40 + auVar30._8_4_ * fVar39; + fVar37 = fVar40 + auVar30._12_4_ * fVar39; + fVar32 = fVar40 + auVar27._0_4_ * fVar39; + fVar34 = fVar40 + auVar27._4_4_ * fVar39; + fVar36 = fVar40 + auVar27._8_4_ * fVar39; + fVar38 = fVar40 + auVar27._12_4_ * fVar39; + if (((DAT_00531ed0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ed0), iVar8 != 0)) + { + auVar28._8_4_ = 0x80000000; + auVar28._0_8_ = 0x8000000080000000; + auVar28._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar28._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec8), iVar8 != 0)) + { + auVar23._8_4_ = 0x3f000000; + auVar23._0_8_ = 0x3f0000003f000000; + auVar23._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar23._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar8 = (int)(fVar31 + (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar31 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar31 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> + 8), + SUB41(fVar31,0) & + (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar5 = (int)(fVar33 + (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar33 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar33 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar33,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar42 = (undefined1)((uint)iVar5 >> 8); + uVar43 = (undefined1)((uint)iVar5 >> 0x10); + uVar44 = (undefined1)((uint)iVar5 >> 0x18); + iVar6 = (int)(fVar35 + (float)CONCAT13((byte)((uint)fVar35 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar35 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10 + ),CONCAT11((byte)((uint)fVar35 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar35,0) & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar7 = (int)(fVar37 + (float)CONCAT13((byte)((uint)fVar37 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar37 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30 + ),CONCAT11((byte)((uint)fVar37 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar37,0) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar4[4] = (char)iVar5; + auVar4._0_4_ = iVar8; + auVar4[5] = uVar42; + auVar4[6] = uVar43; + auVar4[7] = uVar44; + auVar4[8] = (char)iVar6; + auVar4[9] = (char)((uint)iVar6 >> 8); + auVar4[10] = (char)((uint)iVar6 >> 0x10); + auVar4[0xb] = (char)((uint)iVar6 >> 0x18); + auVar4[0xc] = (char)iVar7; + auVar4[0xd] = (char)((uint)iVar7 >> 8); + auVar4[0xe] = (char)((uint)iVar7 >> 0x10); + auVar4[0xf] = (char)((uint)iVar7 >> 0x18); + uVar21 = NEON_sqxtn(CONCAT17(uVar44,CONCAT16(uVar43,CONCAT15(uVar42,CONCAT14((char)iVar5, + iVar8)))), + auVar4,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ed0), iVar8 != 0)) + { + auVar29._8_4_ = 0x80000000; + auVar29._0_8_ = 0x8000000080000000; + auVar29._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar29._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar8 = __cxa_guard_acquire(&DAT_00531ec8), iVar8 != 0)) + { + auVar24._8_4_ = 0x3f000000; + auVar24._0_8_ = 0x3f0000003f000000; + auVar24._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar24._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar15 = iVar15 + 8; + puVar11 = puVar11 + 1; + fVar31 = (float)CONCAT13((byte)((uint)fVar32 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar32 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar32 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar32,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar22._0_8_ = + CONCAT17((byte)((uint)fVar34 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar34 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar34 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar34,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar31)))); + auVar22[8] = SUB41(fVar36,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar22[9] = (byte)((uint)fVar36 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar22[10] = (byte)((uint)fVar36 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar22[0xb] = (byte)((uint)fVar36 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar25[0xc] = SUB41(fVar38,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar25._0_12_ = auVar22; + auVar25[0xd] = (byte)((uint)fVar38 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar25[0xe] = (byte)((uint)fVar38 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar25[0xf] = (byte)((uint)fVar38 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar26._0_8_ = + CONCAT44((int)(fVar34 + (float)((ulong)auVar22._0_8_ >> 0x20)),(int)(fVar32 + fVar31) + ); + auVar26._8_4_ = (int)(fVar36 + auVar22._8_4_); + auVar26._12_4_ = (int)(fVar38 + auVar25._12_4_); + uVar20 = NEON_sqxtn(auVar26._0_8_,auVar26,4); + puVar17[1] = uVar20; + *puVar17 = uVar21; + puVar17 = puVar17 + 2; + } while (iVar15 < iVar1 + -7); + } + if (iVar15 < iVar1 + -3) { + lVar13 = (long)iVar15; + uVar2 = (iVar1 + -4) - iVar15; + pcVar12 = (char *)((long)param_1 + lVar13); + puVar14 = (undefined2 *)((long)param_5 + lVar13 * 2); + bVar41 = (byte)(uVar2 >> 0x1a); + uVar3 = (undefined3)(uVar2 >> 2); + do { + lVar9 = lrintf(fVar40 + (float)(int)*pcVar12 * fVar39); + uVar16 = 0x8000; + uVar18 = 0x7fff; + uVar19 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = uVar18, (int)lVar9 < 1)) { + uVar19 = uVar16; + } + lVar9 = lrintf(fVar40 + (float)(int)pcVar12[1] * fVar39); + uVar10 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar10 = uVar18, (int)lVar9 < 1)) { + uVar10 = uVar16; + } + *puVar14 = uVar19; + puVar14[1] = uVar10; + lVar9 = lrintf(fVar40 + (float)(int)pcVar12[2] * fVar39); + uVar19 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = uVar18, (int)lVar9 < 1)) { + uVar19 = uVar16; + } + lVar9 = lrintf(fVar40 + (float)(int)pcVar12[3] * fVar39); + uVar10 = (short)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar10 = uVar18, (int)lVar9 < 1)) { + uVar10 = uVar16; + } + pcVar12 = pcVar12 + 4; + puVar14[2] = uVar19; + puVar14[3] = uVar10; + puVar14 = puVar14 + 4; + } while (pcVar12 != (char *)((long)param_1 + lVar13 + 4 + (ulong)CONCAT13(bVar41,uVar3) * 4) + ); + iVar15 = iVar15 + 4 + CONCAT13(bVar41,uVar3) * 4; + } + if (iVar15 < iVar1) { + lVar13 = 0; + do { + lVar9 = lrintf(fVar40 + (float)(int)*(char *)((long)param_1 + lVar13 + iVar15) * fVar39); + uVar19 = (undefined2)lVar9; + if ((0xffff < (int)lVar9 + 0x8000U) && (uVar19 = 0x7fff, (int)lVar9 < 1)) { + uVar19 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar13 * 2 + (long)iVar15 * 2) = uVar19; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar1 + -1) - iVar15) + 1); + } + iVar45 = iVar45 + -1; + param_1 = (undefined8 *)((long)param_1 + param_2); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar45 != 0); + } + return; +} + + +================================================================== + +### FUNC 00281600 (1060 bytes) name=FUN_00281600 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00281600(ushort *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + undefined3 uVar4; + undefined1 auVar5 [16]; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + long lVar10; + undefined1 uVar11; + ushort *puVar12; + undefined1 *puVar13; + long lVar14; + int iVar15; + undefined8 *puVar16; + float fVar17; + undefined8 uVar18; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar24 [16]; + undefined8 uVar19; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + byte bVar37; + undefined1 uVar38; + undefined1 uVar39; + undefined1 uVar40; + int iVar41; + undefined1 auVar20 [12]; + undefined1 auVar23 [16]; + + iVar2 = *param_7; + iVar41 = param_7[1]; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar41 != 0) { + do { + if (iVar2 + -7 < 1) { + iVar15 = 0; + } + else { + iVar15 = 0; + puVar12 = param_1; + puVar16 = param_5; + do { + auVar29._2_2_ = 0; + auVar29._0_2_ = puVar12[4]; + auVar29._4_2_ = puVar12[5]; + auVar29._6_2_ = 0; + auVar29._8_2_ = puVar12[6]; + auVar29._10_2_ = 0; + auVar29._12_2_ = puVar12[7]; + auVar29._14_2_ = 0; + auVar30 = NEON_ucvtf(auVar29,4); + auVar25._2_2_ = 0; + auVar25._0_2_ = *puVar12; + auVar25._4_2_ = puVar12[1]; + auVar25._6_2_ = 0; + auVar25._8_2_ = puVar12[2]; + auVar25._10_2_ = 0; + auVar25._12_2_ = puVar12[3]; + auVar25._14_2_ = 0; + auVar25 = NEON_ucvtf(auVar25,4); + fVar31 = fVar36 + auVar30._0_4_ * fVar35; + fVar32 = fVar36 + auVar30._4_4_ * fVar35; + fVar33 = fVar36 + auVar30._8_4_ * fVar35; + fVar34 = fVar36 + auVar30._12_4_ * fVar35; + auVar30._0_8_ = CONCAT44(fVar36 + auVar25._4_4_ * fVar35,fVar36 + auVar25._0_4_ * fVar35); + auVar30._8_4_ = fVar36 + auVar25._8_4_ * fVar35; + auVar30._12_4_ = fVar36 + auVar25._12_4_ * fVar35; + if ((DAT_00531ed0 & 1) == 0) { + uVar19 = auVar30._8_8_; + iVar9 = __cxa_guard_acquire(&DAT_00531ed0); + auVar30._8_8_ = uVar19; + if (iVar9 != 0) { + auVar26._8_4_ = 0x80000000; + auVar26._0_8_ = 0x8000000080000000; + auVar26._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar26._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar21._8_4_ = 0x3f000000; + auVar21._0_8_ = 0x3f0000003f000000; + auVar21._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar21._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar9 = (int)(auVar30._0_4_ + + (float)CONCAT13(auVar30[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar30[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar30[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + auVar30[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar6 = (int)(auVar30._4_4_ + + (float)CONCAT13(auVar30[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12(auVar30[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11(auVar30[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + auVar30[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar38 = (undefined1)((uint)iVar6 >> 8); + uVar39 = (undefined1)((uint)iVar6 >> 0x10); + uVar40 = (undefined1)((uint)iVar6 >> 0x18); + iVar7 = (int)(auVar30._8_4_ + + (float)CONCAT13(auVar30[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar30[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar30[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar30[8] & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)(auVar30._12_4_ + + (float)CONCAT13(auVar30[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12(auVar30[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11(auVar30[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x28), + auVar30[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar5[4] = (char)iVar6; + auVar5._0_4_ = iVar9; + auVar5[5] = uVar38; + auVar5[6] = uVar39; + auVar5[7] = uVar40; + auVar5[8] = (char)iVar7; + auVar5[9] = (char)((uint)iVar7 >> 8); + auVar5[10] = (char)((uint)iVar7 >> 0x10); + auVar5[0xb] = (char)((uint)iVar7 >> 0x18); + auVar5[0xc] = (char)iVar8; + auVar5[0xd] = (char)((uint)iVar8 >> 8); + auVar5[0xe] = (char)((uint)iVar8 >> 0x10); + auVar5[0xf] = (char)((uint)iVar8 >> 0x18); + uVar19 = NEON_sqxtn(CONCAT17(uVar40,CONCAT16(uVar39,CONCAT15(uVar38,CONCAT14((char)iVar6, + iVar9)))), + auVar5,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + auVar27._8_4_ = 0x80000000; + auVar27._0_8_ = 0x8000000080000000; + auVar27._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar27._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar22._8_4_ = 0x3f000000; + auVar22._0_8_ = 0x3f0000003f000000; + auVar22._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar22._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar15 = iVar15 + 8; + puVar12 = puVar12 + 8; + fVar17 = (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar31 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar31 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar31,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar20._0_8_ = + CONCAT17((byte)((uint)fVar32 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar32 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar32 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar32,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar17)))); + auVar20[8] = SUB41(fVar33,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar20[9] = (byte)((uint)fVar33 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar20[10] = (byte)((uint)fVar33 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar20[0xb] = (byte)((uint)fVar33 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar23[0xc] = SUB41(fVar34,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar23._0_12_ = auVar20; + auVar23[0xd] = (byte)((uint)fVar34 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar23[0xe] = (byte)((uint)fVar34 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar23[0xf] = (byte)((uint)fVar34 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar24._0_8_ = + CONCAT44((int)(fVar32 + (float)((ulong)auVar20._0_8_ >> 0x20)),(int)(fVar31 + fVar17) + ); + auVar24._8_4_ = (int)(fVar33 + auVar20._8_4_); + auVar24._12_4_ = (int)(fVar34 + auVar23._12_4_); + uVar18 = NEON_sqxtn(auVar24._0_8_,auVar24,4); + auVar28._8_8_ = uVar18; + auVar28._0_8_ = uVar19; + uVar19 = NEON_sqxtn(uVar18,auVar28,2); + *puVar16 = uVar19; + puVar16 = puVar16 + 1; + } while (iVar15 < iVar2 + -7); + } + if (iVar15 < iVar2 + -3) { + lVar14 = (long)iVar15; + uVar3 = (iVar2 + -4) - iVar15; + puVar12 = param_1 + lVar14; + bVar37 = (byte)(uVar3 >> 0x1a); + uVar4 = (undefined3)(uVar3 >> 2); + puVar13 = (undefined1 *)((long)param_5 + lVar14); + do { + lVar10 = lrintf(fVar36 + (float)*puVar12 * fVar35); + uVar39 = 0x80; + uVar40 = 0x7f; + uVar38 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar38 = uVar40, (int)lVar10 < 1)) { + uVar38 = uVar39; + } + lVar10 = lrintf(fVar36 + (float)puVar12[1] * fVar35); + uVar11 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar11 = uVar40, (int)lVar10 < 1)) { + uVar11 = uVar39; + } + *puVar13 = uVar38; + puVar13[1] = uVar11; + lVar10 = lrintf(fVar36 + (float)puVar12[2] * fVar35); + uVar38 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar38 = uVar40, (int)lVar10 < 1)) { + uVar38 = uVar39; + } + lVar10 = lrintf(fVar36 + (float)puVar12[3] * fVar35); + uVar11 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar11 = uVar40, (int)lVar10 < 1)) { + uVar11 = uVar39; + } + puVar13[2] = uVar38; + puVar1 = puVar13 + 4; + puVar12 = puVar12 + 4; + puVar13[3] = uVar11; + puVar13 = puVar1; + } while (puVar1 != (undefined1 *) + ((long)param_5 + lVar14 + 4 + (ulong)CONCAT13(bVar37,uVar4) * 4)); + iVar15 = iVar15 + 4 + CONCAT13(bVar37,uVar4) * 4; + } + if (iVar15 < iVar2) { + lVar14 = 0; + do { + lVar10 = lrintf(fVar36 + (float)param_1[iVar15 + lVar14] * fVar35); + uVar38 = (undefined1)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar38 = 0x7f, (int)lVar10 < 1)) { + uVar38 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar14 + iVar15) = uVar38; + lVar14 = lVar14 + 1; + } while (lVar14 != (ulong)(uint)((iVar2 + -1) - iVar15) + 1); + } + iVar41 = iVar41 + -1; + param_1 = (ushort *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar41 != 0); + } + return; +} + + +================================================================== + +### FUNC 00281a24 (1060 bytes) name=FUN_00281a24 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00281a24(short *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7,double *param_8) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + undefined3 uVar4; + undefined1 auVar5 [16]; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + long lVar10; + undefined1 uVar11; + short *psVar12; + undefined1 *puVar13; + long lVar14; + int iVar15; + undefined8 *puVar16; + float fVar17; + undefined8 uVar18; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar24 [16]; + undefined8 uVar19; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + byte bVar37; + undefined1 uVar38; + undefined1 uVar39; + undefined1 uVar40; + int iVar41; + undefined1 auVar20 [12]; + undefined1 auVar23 [16]; + + iVar2 = *param_7; + iVar41 = param_7[1]; + fVar35 = (float)*param_8; + fVar36 = (float)param_8[1]; + if (iVar41 != 0) { + do { + if (iVar2 + -7 < 1) { + iVar15 = 0; + } + else { + iVar15 = 0; + psVar12 = param_1; + puVar16 = param_5; + do { + auVar29._0_4_ = (int)psVar12[4]; + auVar29._4_4_ = (int)psVar12[5]; + auVar29._8_4_ = (int)psVar12[6]; + auVar29._12_4_ = (int)psVar12[7]; + auVar30 = NEON_scvtf(auVar29,4); + auVar25._0_4_ = (int)*psVar12; + auVar25._4_4_ = (int)psVar12[1]; + auVar25._8_4_ = (int)psVar12[2]; + auVar25._12_4_ = (int)psVar12[3]; + auVar25 = NEON_scvtf(auVar25,4); + fVar31 = fVar36 + auVar30._0_4_ * fVar35; + fVar32 = fVar36 + auVar30._4_4_ * fVar35; + fVar33 = fVar36 + auVar30._8_4_ * fVar35; + fVar34 = fVar36 + auVar30._12_4_ * fVar35; + auVar30._0_8_ = CONCAT44(fVar36 + auVar25._4_4_ * fVar35,fVar36 + auVar25._0_4_ * fVar35); + auVar30._8_4_ = fVar36 + auVar25._8_4_ * fVar35; + auVar30._12_4_ = fVar36 + auVar25._12_4_ * fVar35; + if ((DAT_00531ed0 & 1) == 0) { + uVar19 = auVar30._8_8_; + iVar9 = __cxa_guard_acquire(&DAT_00531ed0); + auVar30._8_8_ = uVar19; + if (iVar9 != 0) { + auVar26._8_4_ = 0x80000000; + auVar26._0_8_ = 0x8000000080000000; + auVar26._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar26._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar21._8_4_ = 0x3f000000; + auVar21._0_8_ = 0x3f0000003f000000; + auVar21._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar21._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar9 = (int)(auVar30._0_4_ + + (float)CONCAT13(auVar30[3] & (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(auVar30[2] & (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(auVar30[1] & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + auVar30[0] & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar6 = (int)(auVar30._4_4_ + + (float)CONCAT13(auVar30[7] & (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12(auVar30[6] & (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11(auVar30[5] & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + auVar30[4] & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar38 = (undefined1)((uint)iVar6 >> 8); + uVar39 = (undefined1)((uint)iVar6 >> 0x10); + uVar40 = (undefined1)((uint)iVar6 >> 0x18); + iVar7 = (int)(auVar30._8_4_ + + (float)CONCAT13(auVar30[0xb] & (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12(auVar30[10] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11(auVar30[9] & + (byte)((ulong)_uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + auVar30[8] & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)(auVar30._12_4_ + + (float)CONCAT13(auVar30[0xf] & (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12(auVar30[0xe] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11(auVar30[0xd] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x28 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x28), + auVar30[0xc] & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar5[4] = (char)iVar6; + auVar5._0_4_ = iVar9; + auVar5[5] = uVar38; + auVar5[6] = uVar39; + auVar5[7] = uVar40; + auVar5[8] = (char)iVar7; + auVar5[9] = (char)((uint)iVar7 >> 8); + auVar5[10] = (char)((uint)iVar7 >> 0x10); + auVar5[0xb] = (char)((uint)iVar7 >> 0x18); + auVar5[0xc] = (char)iVar8; + auVar5[0xd] = (char)((uint)iVar8 >> 8); + auVar5[0xe] = (char)((uint)iVar8 >> 0x10); + auVar5[0xf] = (char)((uint)iVar8 >> 0x18); + uVar19 = NEON_sqxtn(CONCAT17(uVar40,CONCAT16(uVar39,CONCAT15(uVar38,CONCAT14((char)iVar6, + iVar9)))), + auVar5,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + auVar27._8_4_ = 0x80000000; + auVar27._0_8_ = 0x8000000080000000; + auVar27._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar27._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar22._8_4_ = 0x3f000000; + auVar22._0_8_ = 0x3f0000003f000000; + auVar22._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar22._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar15 = iVar15 + 8; + psVar12 = psVar12 + 8; + fVar17 = (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar31 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar31 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar31,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar20._0_8_ = + CONCAT17((byte)((uint)fVar32 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar32 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar32 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar32,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar17)))); + auVar20[8] = SUB41(fVar33,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar20[9] = (byte)((uint)fVar33 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar20[10] = (byte)((uint)fVar33 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar20[0xb] = (byte)((uint)fVar33 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar23[0xc] = SUB41(fVar34,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar23._0_12_ = auVar20; + auVar23[0xd] = (byte)((uint)fVar34 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar23[0xe] = (byte)((uint)fVar34 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar23[0xf] = (byte)((uint)fVar34 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar24._0_8_ = + CONCAT44((int)(fVar32 + (float)((ulong)auVar20._0_8_ >> 0x20)),(int)(fVar31 + fVar17) + ); + auVar24._8_4_ = (int)(fVar33 + auVar20._8_4_); + auVar24._12_4_ = (int)(fVar34 + auVar23._12_4_); + uVar18 = NEON_sqxtn(auVar24._0_8_,auVar24,4); + auVar28._8_8_ = uVar18; + auVar28._0_8_ = uVar19; + uVar19 = NEON_sqxtn(uVar18,auVar28,2); + *puVar16 = uVar19; + puVar16 = puVar16 + 1; + } while (iVar15 < iVar2 + -7); + } + if (iVar15 < iVar2 + -3) { + lVar14 = (long)iVar15; + uVar3 = (iVar2 + -4) - iVar15; + psVar12 = param_1 + lVar14; + bVar37 = (byte)(uVar3 >> 0x1a); + uVar4 = (undefined3)(uVar3 >> 2); + puVar13 = (undefined1 *)((long)param_5 + lVar14); + do { + lVar10 = lrintf(fVar36 + (float)(int)*psVar12 * fVar35); + uVar39 = 0x80; + uVar40 = 0x7f; + uVar38 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar38 = uVar40, (int)lVar10 < 1)) { + uVar38 = uVar39; + } + lVar10 = lrintf(fVar36 + (float)(int)psVar12[1] * fVar35); + uVar11 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar11 = uVar40, (int)lVar10 < 1)) { + uVar11 = uVar39; + } + *puVar13 = uVar38; + puVar13[1] = uVar11; + lVar10 = lrintf(fVar36 + (float)(int)psVar12[2] * fVar35); + uVar38 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar38 = uVar40, (int)lVar10 < 1)) { + uVar38 = uVar39; + } + lVar10 = lrintf(fVar36 + (float)(int)psVar12[3] * fVar35); + uVar11 = (char)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar11 = uVar40, (int)lVar10 < 1)) { + uVar11 = uVar39; + } + puVar13[2] = uVar38; + puVar1 = puVar13 + 4; + psVar12 = psVar12 + 4; + puVar13[3] = uVar11; + puVar13 = puVar1; + } while (puVar1 != (undefined1 *) + ((long)param_5 + lVar14 + 4 + (ulong)CONCAT13(bVar37,uVar4) * 4)); + iVar15 = iVar15 + 4 + CONCAT13(bVar37,uVar4) * 4; + } + if (iVar15 < iVar2) { + lVar14 = 0; + do { + lVar10 = lrintf(fVar36 + (float)(int)param_1[iVar15 + lVar14] * fVar35); + uVar38 = (undefined1)lVar10; + if ((0xff < (int)lVar10 + 0x80U) && (uVar38 = 0x7f, (int)lVar10 < 1)) { + uVar38 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar14 + iVar15) = uVar38; + lVar14 = lVar14 + 1; + } while (lVar14 != (ulong)(uint)((iVar2 + -1) - iVar15) + 1); + } + iVar41 = iVar41 + -1; + param_1 = (short *)((long)param_1 + (param_2 & 0xfffffffffffffffe)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar41 != 0); + } + return; +} + + +================================================================== + +### FUNC 00281e48 (1088 bytes) name=FUN_00281e48 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00281e48(undefined1 (*param_1) [16],ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,ulong param_6,int *param_7,double *param_8) + +{ + int iVar1; + uint uVar2; + undefined3 uVar3; + undefined1 auVar4 [16]; + undefined8 uVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + long lVar10; + undefined2 uVar11; + undefined1 (*pauVar12) [16]; + long lVar13; + undefined2 *puVar14; + int iVar15; + undefined2 uVar16; + undefined2 uVar17; + undefined8 *puVar18; + int *piVar19; + undefined2 uVar20; + undefined1 auVar22 [12]; + undefined8 uVar21; + undefined1 auVar23 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + byte bVar39; + undefined1 uVar40; + undefined1 uVar41; + undefined1 uVar42; + int iVar43; + undefined1 auVar24 [16]; + + iVar1 = *param_7; + iVar43 = param_7[1]; + fVar37 = (float)*param_8; + fVar38 = (float)param_8[1]; + if (iVar43 != 0) { + /* try { // try from 00281edc to 00381efb has its CatchHandler @ 00281edc + catch() { ... } // from try @ 00281edc with catch @ 00281edc + catch() { ... } // from try @ 00281f00 with catch @ 00281edc */ + do { + if (iVar1 + -7 < 1) { + iVar15 = 0; + } + else { + iVar15 = 0; + pauVar12 = param_1; + puVar18 = param_5; + /* try { // try from 00281efc to 00381eff has its CatchHandler @ 00281f7c */ + /* try { // try from 00281f00 to 00381f8f has its CatchHandler @ 00281edc */ + do { + auVar28 = NEON_scvtf(*pauVar12,4); + auVar26 = NEON_scvtf(pauVar12[1],4); + fVar29 = fVar38 + auVar28._0_4_ * fVar37; + fVar31 = fVar38 + auVar28._4_4_ * fVar37; + fVar33 = fVar38 + auVar28._8_4_ * fVar37; + fVar35 = fVar38 + auVar28._12_4_ * fVar37; + fVar30 = fVar38 + auVar26._0_4_ * fVar37; + fVar32 = fVar38 + auVar26._4_4_ * fVar37; + fVar34 = fVar38 + auVar26._8_4_ * fVar37; + fVar36 = fVar38 + auVar26._12_4_ * fVar37; + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + auVar26._8_4_ = 0x80000000; + auVar26._0_8_ = 0x8000000080000000; + auVar26._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar26._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar28._8_4_ = 0x3f000000; + auVar28._0_8_ = 0x3f0000003f000000; + auVar28._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar28._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar9 = (int)(fVar29 + (float)CONCAT13((byte)((uint)fVar29 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar29 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar29 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) + | (byte)((ulong)_DAT_00531ea0 >> + 8), + SUB41(fVar29,0) & + (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar6 = (int)(fVar31 + (float)CONCAT13((byte)((uint)fVar31 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((uint)fVar31 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((uint)fVar31 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> + 0x28) | + (byte)((ulong)_DAT_00531ea0 >> + 0x28), + SUB41(fVar31,0) & + (byte)((ulong)_DAT_00531eb0 >> + 0x20) | + (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + uVar40 = (undefined1)((uint)iVar6 >> 8); + uVar41 = (undefined1)((uint)iVar6 >> 0x10); + uVar42 = (undefined1)((uint)iVar6 >> 0x18); + iVar7 = (int)(fVar33 + (float)CONCAT13((byte)((uint)fVar33 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((uint)fVar33 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10 + ),CONCAT11((byte)((uint)fVar33 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + SUB41(fVar33,0) & (byte)_uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)(fVar35 + (float)CONCAT13((byte)((uint)fVar35 >> 0x18) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((uint)fVar35 >> 0x10) & + (byte)((ulong)_uRam0000000000531eb8 >> + 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30 + ),CONCAT11((byte)((uint)fVar35 >> 8) + & (byte)((ulong) + _uRam0000000000531eb8 >> 0x28) | + (byte)((ulong)uRam0000000000531ea8 >> 0x28), + SUB41(fVar35,0) & + (byte)((ulong)_uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + auVar4[4] = (char)iVar6; + auVar4._0_4_ = iVar9; + auVar4[5] = uVar40; + auVar4[6] = uVar41; + auVar4[7] = uVar42; + auVar4[8] = (char)iVar7; + auVar4[9] = (char)((uint)iVar7 >> 8); + auVar4[10] = (char)((uint)iVar7 >> 0x10); + auVar4[0xb] = (char)((uint)iVar7 >> 0x18); + auVar4[0xc] = (char)iVar8; + auVar4[0xd] = (char)((uint)iVar8 >> 8); + auVar4[0xe] = (char)((uint)iVar8 >> 0x10); + auVar4[0xf] = (char)((uint)iVar8 >> 0x18); + uVar5 = NEON_sqxtn(CONCAT17(uVar42,CONCAT16(uVar41,CONCAT15(uVar40,CONCAT14((char)iVar6, + iVar9)))), + auVar4,4); + if (((DAT_00531ed0 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ed0), iVar9 != 0)) + { + auVar27._8_4_ = 0x80000000; + auVar27._0_8_ = 0x8000000080000000; + auVar27._12_4_ = 0x80000000; + _uRam0000000000531eb8 = auVar27._8_8_; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + /* catch() { ... } // from try @ 00281efc with catch @ 00281f7c */ + if (((DAT_00531ec8 & 1) == 0) && (iVar9 = __cxa_guard_acquire(&DAT_00531ec8), iVar9 != 0)) + { + auVar23._8_4_ = 0x3f000000; + auVar23._0_8_ = 0x3f0000003f000000; + auVar23._12_4_ = 0x3f000000; + uRam0000000000531ea8 = auVar23._8_8_; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar15 = iVar15 + 8; + pauVar12 = pauVar12 + 2; + fVar29 = (float)CONCAT13((byte)((uint)fVar30 >> 0x18) & bRam0000000000531eb3 | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((uint)fVar30 >> 0x10) & bRam0000000000531eb2 | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((uint)fVar30 >> 8) & DAT_00531eb0_1 | + (byte)((ulong)_DAT_00531ea0 >> 8), + SUB41(fVar30,0) & DAT_00531eb0 | + (byte)_DAT_00531ea0))); + auVar22._0_8_ = + CONCAT17((byte)((uint)fVar32 >> 0x18) & bRam0000000000531eb7 | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT16((byte)((uint)fVar32 >> 0x10) & bRam0000000000531eb6 | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT15((byte)((uint)fVar32 >> 8) & bRam0000000000531eb5 | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + CONCAT14(SUB41(fVar32,0) & bRam0000000000531eb4 | + (byte)((ulong)_DAT_00531ea0 >> 0x20),fVar29)))); + auVar22[8] = SUB41(fVar34,0) & (byte)uRam0000000000531eb8 | (byte)uRam0000000000531ea8; + auVar22[9] = (byte)((uint)fVar34 >> 8) & uRam0000000000531eb8._1_1_ | + (byte)((ulong)uRam0000000000531ea8 >> 8); + auVar22[10] = (byte)((uint)fVar34 >> 0x10) & bRam0000000000531eba | + (byte)((ulong)uRam0000000000531ea8 >> 0x10); + auVar22[0xb] = (byte)((uint)fVar34 >> 0x18) & bRam0000000000531ebb | + (byte)((ulong)uRam0000000000531ea8 >> 0x18); + auVar24[0xc] = SUB41(fVar36,0) & bRam0000000000531ebc | + (byte)((ulong)uRam0000000000531ea8 >> 0x20); + auVar24._0_12_ = auVar22; + auVar24[0xd] = (byte)((uint)fVar36 >> 8) & bRam0000000000531ebd | + (byte)((ulong)uRam0000000000531ea8 >> 0x28); + auVar24[0xe] = (byte)((uint)fVar36 >> 0x10) & bRam0000000000531ebe | + (byte)((ulong)uRam0000000000531ea8 >> 0x30); + auVar24[0xf] = (byte)((uint)fVar36 >> 0x18) & bRam0000000000531ebf | + (byte)((ulong)uRam0000000000531ea8 >> 0x38); + auVar25._0_8_ = + CONCAT44((int)(fVar32 + (float)((ulong)auVar22._0_8_ >> 0x20)),(int)(fVar30 + fVar29) + ); + auVar25._8_4_ = (int)(fVar34 + auVar22._8_4_); + auVar25._12_4_ = (int)(fVar36 + auVar24._12_4_); + uVar21 = NEON_sqxtn(auVar25._0_8_,auVar25,4); + puVar18[1] = uVar21; + *puVar18 = uVar5; + puVar18 = puVar18 + 2; + } while (iVar15 < iVar1 + -7); + } + if (iVar15 < iVar1 + -3) { + lVar13 = (long)iVar15; + uVar2 = (iVar1 + -4) - iVar15; + piVar19 = (int *)(*param_1 + lVar13 * 4); + puVar14 = (undefined2 *)((long)param_5 + lVar13 * 2); + bVar39 = (byte)(uVar2 >> 0x1a); + uVar3 = (undefined3)(uVar2 >> 2); + do { + lVar10 = lrintf(fVar38 + (float)*piVar19 * fVar37); + uVar16 = 0x8000; + uVar17 = 0x7fff; + uVar20 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar20 = uVar17, (int)lVar10 < 1)) { + uVar20 = uVar16; + } + lVar10 = lrintf(fVar38 + (float)piVar19[1] * fVar37); + uVar11 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar11 = uVar17, (int)lVar10 < 1)) { + uVar11 = uVar16; + } + iVar9 = piVar19[2]; + *puVar14 = uVar20; + puVar14[1] = uVar11; + lVar10 = lrintf(fVar38 + (float)iVar9 * fVar37); + uVar20 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar20 = uVar17, (int)lVar10 < 1)) { + uVar20 = uVar16; + } + lVar10 = lrintf(fVar38 + (float)piVar19[3] * fVar37); + uVar11 = (short)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar11 = uVar17, (int)lVar10 < 1)) { + uVar11 = uVar16; + } + piVar19 = piVar19 + 4; + puVar14[2] = uVar20; + puVar14[3] = uVar11; + puVar14 = puVar14 + 4; + } while (piVar19 != (int *)(param_1[(ulong)CONCAT13(bVar39,uVar3) + 1] + lVar13 * 4)); + iVar15 = iVar15 + 4 + CONCAT13(bVar39,uVar3) * 4; + } + if (iVar15 < iVar1) { + lVar13 = 0; + do { + lVar10 = lrintf(fVar38 + (float)*(int *)(*param_1 + lVar13 * 4 + (long)iVar15 * 4) * + fVar37); + uVar20 = (undefined2)lVar10; + if ((0xffff < (int)lVar10 + 0x8000U) && (uVar20 = 0x7fff, (int)lVar10 < 1)) { + uVar20 = 0x8000; + } + *(undefined2 *)((long)param_5 + lVar13 * 2 + (long)iVar15 * 2) = uVar20; + lVar13 = lVar13 + 1; + } while (lVar13 != (ulong)(uint)((iVar1 + -1) - iVar15) + 1); + } + iVar43 = iVar43 + -1; + param_1 = (undefined1 (*) [16])(*param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + (param_6 & 0xfffffffffffffffe)); + } while (iVar43 != 0); + } + return; +} + + +================================================================== + +### FUNC 00282288 (1280 bytes) name=FUN_00282288 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00282288(undefined8 *param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,long param_6,int *param_7) + +{ + undefined1 *puVar1; + int iVar2; + uint uVar3; + undefined1 auVar4 [16]; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int iVar11; + int iVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + int iVar16; + long lVar17; + undefined1 uVar18; + undefined8 *puVar19; + undefined1 *puVar20; + long lVar21; + float *pfVar22; + int iVar23; + undefined8 *puVar24; + undefined1 uVar25; + undefined1 uVar26; + undefined1 uVar27; + byte bVar28; + byte bVar31; + byte bVar32; + byte bVar33; + byte bVar34; + byte bVar35; + byte bVar36; + byte bVar37; + undefined8 uVar30; + undefined8 uVar38; + undefined8 uVar39; + undefined8 uVar40; + undefined8 uVar41; + undefined8 in_d5; + undefined8 in_d6; + int iVar42; + undefined1 uStack_38; + undefined1 uStack_28; + undefined1 uStack_18; + undefined8 uVar29; + + iVar2 = *param_7; + iVar42 = param_7[1]; + if (iVar42 != 0) { + do { + if (iVar2 + -0xf < 1) { + iVar23 = 0; + } + else { + iVar23 = 0; + puVar19 = param_1; + puVar24 = param_5; + do { + uVar30 = puVar19[1]; + uVar40 = *puVar19; + if (((DAT_00531ed0 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ed0), iVar16 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ec8), iVar16 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + uVar41 = puVar19[3]; + uVar38 = puVar19[2]; + iVar16 = (int)((float)((ulong)uVar40 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar40 >> 0x38) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((ulong)uVar40 >> 0x30) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((ulong)uVar40 >> 0x28) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + (byte)((ulong)uVar40 >> 0x20) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + iVar5 = (int)((float)uVar30 + + (float)CONCAT13((byte)((ulong)uVar30 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar30 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar30 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar30 & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar7 = (int)((float)((ulong)uVar30 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar30 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((ulong)uVar30 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11((byte)((ulong)uVar30 >> 0x28) & + (byte)((ulong)uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + (byte)((ulong)uVar30 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x20))))); + uStack_38 = (undefined1)iVar5; + auVar9[4] = (char)iVar16; + auVar9._0_4_ = (int)((float)uVar40 + + (float)CONCAT13((byte)((ulong)uVar40 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((ulong)uVar40 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((ulong)uVar40 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + (byte)uVar40 & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + auVar9[5] = (char)((uint)iVar16 >> 8); + auVar9[6] = (char)((uint)iVar16 >> 0x10); + auVar9[7] = (char)((uint)iVar16 >> 0x18); + if (((DAT_00531ed0 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ed0), iVar16 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ec8), iVar16 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + uVar30 = puVar19[5]; + uVar40 = puVar19[4]; + iVar16 = (int)((float)((ulong)uVar38 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar38 >> 0x38) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((ulong)uVar38 >> 0x30) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((ulong)uVar38 >> 0x28) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + (byte)((ulong)uVar38 >> 0x20) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + iVar6 = (int)((float)uVar41 + + (float)CONCAT13((byte)((ulong)uVar41 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar41 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar41 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar41 & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar8 = (int)((float)((ulong)uVar41 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar41 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((ulong)uVar41 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11((byte)((ulong)uVar41 >> 0x28) & + (byte)((ulong)uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + (byte)((ulong)uVar41 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x20))))); + uStack_28 = (undefined1)iVar6; + auVar13[4] = (char)iVar16; + auVar13._0_4_ = + (int)((float)uVar38 + + (float)CONCAT13((byte)((ulong)uVar38 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((ulong)uVar38 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((ulong)uVar38 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + (byte)uVar38 & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + auVar13[5] = (char)((uint)iVar16 >> 8); + auVar13[6] = (char)((uint)iVar16 >> 0x10); + auVar13[7] = (char)((uint)iVar16 >> 0x18); + if (((DAT_00531ed0 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ed0), iVar16 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ec8), iVar16 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + uVar41 = puVar19[7]; + uVar38 = puVar19[6]; + bVar28 = (byte)uVar40 & (byte)_DAT_00531eb0; + bVar31 = (byte)((ulong)uVar40 >> 8) & (byte)((ulong)_DAT_00531eb0 >> 8); + bVar32 = (byte)((ulong)uVar40 >> 0x10) & (byte)((ulong)_DAT_00531eb0 >> 0x10); + bVar33 = (byte)((ulong)uVar40 >> 0x18) & (byte)((ulong)_DAT_00531eb0 >> 0x18); + bVar34 = (byte)((ulong)uVar40 >> 0x20) & (byte)((ulong)_DAT_00531eb0 >> 0x20); + bVar35 = (byte)((ulong)uVar40 >> 0x28) & (byte)((ulong)_DAT_00531eb0 >> 0x28); + bVar36 = (byte)((ulong)uVar40 >> 0x30) & (byte)((ulong)_DAT_00531eb0 >> 0x30); + bVar37 = (byte)((ulong)uVar40 >> 0x38) & (byte)((ulong)_DAT_00531eb0 >> 0x38); + uVar29 = CONCAT17(bVar37,CONCAT16(bVar36,CONCAT15(bVar35,CONCAT14(bVar34,CONCAT13(bVar33, + CONCAT12(bVar32,CONCAT11(bVar31,bVar28))))))); + iVar16 = (int)((float)((ulong)uVar40 >> 0x20) + + (float)CONCAT13(bVar37 | (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12(bVar36 | (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11(bVar35 | (byte)((ulong)_DAT_00531ea0 >> + 0x28), + bVar34 | (byte)((ulong)_DAT_00531ea0 >> + 0x20))))); + iVar11 = (int)((float)uVar30 + + (float)CONCAT13((byte)((ulong)uVar30 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar30 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar30 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar30 & (byte)uRam0000000000531eb8 + | (byte)uRam0000000000531ea8)))); + iVar12 = (int)((float)((ulong)uVar30 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar30 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((ulong)uVar30 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11((byte)((ulong)uVar30 >> 0x28) & + (byte)((ulong)uRam0000000000531eb8 >> 0x28 + ) | (byte)((ulong) + uRam0000000000531ea8 >> 0x28), + (byte)((ulong)uVar30 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) | + (byte)((ulong)uRam0000000000531ea8 >> 0x20))))); + uStack_18 = (undefined1)iVar11; + auVar14[4] = (char)iVar16; + auVar14._0_4_ = + (int)((float)uVar40 + + (float)CONCAT13(bVar33 | (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12(bVar32 | (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11(bVar31 | (byte)((ulong)_DAT_00531ea0 >> 8), + bVar28 | (byte)_DAT_00531ea0)))); + auVar14[5] = (char)((uint)iVar16 >> 8); + auVar14[6] = (char)((uint)iVar16 >> 0x10); + auVar14[7] = (char)((uint)iVar16 >> 0x18); + uVar40 = _DAT_00531eb0; + if (((DAT_00531ed0 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ed0), iVar16 != 0)) { + uRam0000000000531eb8 = 0x8000000080000000; + _DAT_00531eb0 = 0x8000000080000000; + __cxa_guard_release(&DAT_00531ed0); + } + if (((DAT_00531ec8 & 1) == 0) && + (iVar16 = __cxa_guard_acquire(&DAT_00531ec8), iVar16 != 0)) { + uRam0000000000531ea8 = 0x3f0000003f000000; + _DAT_00531ea0 = 0x3f0000003f000000; + __cxa_guard_release(&DAT_00531ec8); + } + iVar23 = iVar23 + 0x10; + auVar9[8] = uStack_38; + auVar13[8] = uStack_28; + puVar19 = puVar19 + 8; + auVar9[9] = (char)((uint)iVar5 >> 8); + auVar9[10] = (char)((uint)iVar5 >> 0x10); + auVar9[0xb] = (char)((uint)iVar5 >> 0x18); + auVar9[0xc] = (char)iVar7; + auVar9[0xd] = (char)((uint)iVar7 >> 8); + auVar9[0xe] = (char)((uint)iVar7 >> 0x10); + auVar9[0xf] = (char)((uint)iVar7 >> 0x18); + in_d6 = NEON_sqxtn(in_d6,auVar9,4); + auVar13[9] = (char)((uint)iVar6 >> 8); + auVar13[10] = (char)((uint)iVar6 >> 0x10); + auVar13[0xb] = (char)((uint)iVar6 >> 0x18); + auVar13[0xc] = (char)iVar8; + auVar13[0xd] = (char)((uint)iVar8 >> 8); + auVar13[0xe] = (char)((uint)iVar8 >> 0x10); + auVar13[0xf] = (char)((uint)iVar8 >> 0x18); + in_d5 = NEON_sqxtn(in_d5,auVar13,4); + auVar14[8] = uStack_18; + auVar14[9] = (char)((uint)iVar11 >> 8); + auVar14[10] = (char)((uint)iVar11 >> 0x10); + auVar14[0xb] = (char)((uint)iVar11 >> 0x18); + auVar14[0xc] = (char)iVar12; + auVar14[0xd] = (char)((uint)iVar12 >> 8); + auVar14[0xe] = (char)((uint)iVar12 >> 0x10); + auVar14[0xf] = (char)((uint)iVar12 >> 0x18); + uVar39 = NEON_sqxtn(uVar40,auVar14,4); + auVar15[8] = (char)in_d5; + auVar15._0_8_ = in_d6; + auVar15[9] = (char)((ulong)in_d5 >> 8); + auVar15[10] = (char)((ulong)in_d5 >> 0x10); + auVar15[0xb] = (char)((ulong)in_d5 >> 0x18); + auVar15[0xc] = (char)((ulong)in_d5 >> 0x20); + auVar15[0xd] = (char)((ulong)in_d5 >> 0x28); + auVar15[0xe] = (char)((ulong)in_d5 >> 0x30); + auVar15[0xf] = (char)((ulong)in_d5 >> 0x38); + uVar30 = NEON_sqxtn(uVar29,auVar15,2); + iVar16 = (int)((float)uVar38 + + (float)CONCAT13((byte)((ulong)uVar38 >> 0x18) & + (byte)((ulong)_DAT_00531eb0 >> 0x18) | + (byte)((ulong)_DAT_00531ea0 >> 0x18), + CONCAT12((byte)((ulong)uVar38 >> 0x10) & + (byte)((ulong)_DAT_00531eb0 >> 0x10) | + (byte)((ulong)_DAT_00531ea0 >> 0x10), + CONCAT11((byte)((ulong)uVar38 >> 8) & + (byte)((ulong)_DAT_00531eb0 >> 8) | + (byte)((ulong)_DAT_00531ea0 >> 8), + (byte)uVar38 & (byte)_DAT_00531eb0 | + (byte)_DAT_00531ea0)))); + iVar5 = (int)((float)((ulong)uVar38 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar38 >> 0x38) & + (byte)((ulong)_DAT_00531eb0 >> 0x38) | + (byte)((ulong)_DAT_00531ea0 >> 0x38), + CONCAT12((byte)((ulong)uVar38 >> 0x30) & + (byte)((ulong)_DAT_00531eb0 >> 0x30) | + (byte)((ulong)_DAT_00531ea0 >> 0x30), + CONCAT11((byte)((ulong)uVar38 >> 0x28) & + (byte)((ulong)_DAT_00531eb0 >> 0x28) | + (byte)((ulong)_DAT_00531ea0 >> 0x28), + (byte)((ulong)uVar38 >> 0x20) & + (byte)((ulong)_DAT_00531eb0 >> 0x20) | + (byte)((ulong)_DAT_00531ea0 >> 0x20))))); + uVar25 = (undefined1)((uint)iVar5 >> 8); + uVar26 = (undefined1)((uint)iVar5 >> 0x10); + uVar27 = (undefined1)((uint)iVar5 >> 0x18); + iVar7 = (int)((float)uVar41 + + (float)CONCAT13((byte)((ulong)uVar41 >> 0x18) & + (byte)((ulong)uRam0000000000531eb8 >> 0x18) | + (byte)((ulong)uRam0000000000531ea8 >> 0x18), + CONCAT12((byte)((ulong)uVar41 >> 0x10) & + (byte)((ulong)uRam0000000000531eb8 >> 0x10) | + (byte)((ulong)uRam0000000000531ea8 >> 0x10), + CONCAT11((byte)((ulong)uVar41 >> 8) & + (byte)((ulong)uRam0000000000531eb8 >> 8) | + (byte)((ulong)uRam0000000000531ea8 >> 8), + (byte)uVar41 & (byte)uRam0000000000531eb8 | + (byte)uRam0000000000531ea8)))); + iVar6 = (int)((float)((ulong)uVar41 >> 0x20) + + (float)CONCAT13((byte)((ulong)uVar41 >> 0x38) & + (byte)((ulong)uRam0000000000531eb8 >> 0x38) | + (byte)((ulong)uRam0000000000531ea8 >> 0x38), + CONCAT12((byte)((ulong)uVar41 >> 0x30) & + (byte)((ulong)uRam0000000000531eb8 >> 0x30) | + (byte)((ulong)uRam0000000000531ea8 >> 0x30), + CONCAT11((byte)((ulong)uVar41 >> 0x28) & + (byte)((ulong)uRam0000000000531eb8 >> 0x28) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x28), + (byte)((ulong)uVar41 >> 0x20) & + (byte)((ulong)uRam0000000000531eb8 >> 0x20) + | (byte)((ulong)uRam0000000000531ea8 >> + 0x20))))); + auVar4[4] = (char)iVar5; + auVar4._0_4_ = iVar16; + auVar4[5] = uVar25; + auVar4[6] = uVar26; + auVar4[7] = uVar27; + auVar4[8] = (char)iVar7; + auVar4[9] = (char)((uint)iVar7 >> 8); + auVar4[10] = (char)((uint)iVar7 >> 0x10); + auVar4[0xb] = (char)((uint)iVar7 >> 0x18); + auVar4[0xc] = (char)iVar6; + auVar4[0xd] = (char)((uint)iVar6 >> 8); + auVar4[0xe] = (char)((uint)iVar6 >> 0x10); + auVar4[0xf] = (char)((uint)iVar6 >> 0x18); + uVar40 = NEON_sqxtn(CONCAT17(uVar27,CONCAT16(uVar26,CONCAT15(uVar25,CONCAT14((char)iVar5, + iVar16)))), + auVar4,4); + auVar10[8] = (char)uVar40; + auVar10._0_8_ = uVar39; + auVar10[9] = (char)((ulong)uVar40 >> 8); + auVar10[10] = (char)((ulong)uVar40 >> 0x10); + auVar10[0xb] = (char)((ulong)uVar40 >> 0x18); + auVar10[0xc] = (char)((ulong)uVar40 >> 0x20); + auVar10[0xd] = (char)((ulong)uVar40 >> 0x28); + auVar10[0xe] = (char)((ulong)uVar40 >> 0x30); + auVar10[0xf] = (char)((ulong)uVar40 >> 0x38); + uVar40 = NEON_sqxtn(uVar40,auVar10,2); + puVar24[1] = uVar40; + *puVar24 = uVar30; + puVar24 = puVar24 + 2; + } while (iVar23 < iVar2 + -0xf); + } + if (iVar23 < iVar2 + -3) { + lVar21 = (long)iVar23; + uVar3 = (uint)((iVar2 + -4) - iVar23) >> 2; + pfVar22 = (float *)((long)param_1 + lVar21 * 4); + puVar20 = (undefined1 *)((long)param_5 + lVar21); + do { + lVar17 = lrintf(*pfVar22); + uVar26 = 0x80; + uVar27 = 0x7f; + uVar25 = (char)lVar17; + if ((0xff < (int)lVar17 + 0x80U) && (uVar25 = uVar27, (int)lVar17 < 1)) { + uVar25 = uVar26; + } + lVar17 = lrintf(pfVar22[1]); + uVar18 = (char)lVar17; + if ((0xff < (int)lVar17 + 0x80U) && (uVar18 = uVar27, (int)lVar17 < 1)) { + uVar18 = uVar26; + } + *puVar20 = uVar25; + puVar20[1] = uVar18; + lVar17 = lrintf(pfVar22[2]); + uVar25 = (char)lVar17; + if ((0xff < (int)lVar17 + 0x80U) && (uVar25 = uVar27, (int)lVar17 < 1)) { + uVar25 = uVar26; + } + lVar17 = lrintf(pfVar22[3]); + uVar18 = (char)lVar17; + if ((0xff < (int)lVar17 + 0x80U) && (uVar18 = uVar27, (int)lVar17 < 1)) { + uVar18 = uVar26; + } + puVar20[2] = uVar25; + puVar1 = puVar20 + 4; + pfVar22 = pfVar22 + 4; + puVar20[3] = uVar18; + puVar20 = puVar1; + } while (puVar1 != (undefined1 *)((long)param_5 + lVar21 + 4 + (ulong)uVar3 * 4)); + iVar23 = iVar23 + 4 + uVar3 * 4; + } + if (iVar23 < iVar2) { + lVar21 = 0; + do { + lVar17 = lrintf(*(float *)((long)param_1 + lVar21 * 4 + (long)iVar23 * 4)); + uVar25 = (undefined1)lVar17; + if ((0xff < (int)lVar17 + 0x80U) && (uVar25 = 0x7f, (int)lVar17 < 1)) { + uVar25 = 0x80; + } + *(undefined1 *)((long)param_5 + lVar21 + iVar23) = uVar25; + lVar21 = lVar21 + 1; + } while (lVar21 != (ulong)(uint)((iVar2 + -1) - iVar23) + 1); + } + iVar42 = iVar42 + -1; + param_1 = (undefined8 *)((long)param_1 + (param_2 & 0xfffffffffffffffc)); + param_5 = (undefined8 *)((long)param_5 + param_6); + } while (iVar42 != 0); + } + return; +} + + +================================================================== + +### FUNC 00282788 (564 bytes) name=FUN_00282788 + +void FUN_00282788(long param_1,undefined4 *param_2) + +{ + int *piVar1; + undefined4 uVar2; + uint uVar3; + char cVar4; + bool bVar5; + int iVar6; + ulong uVar7; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + int local_12c; + uchar *local_128; + undefined8 local_120; + Mat *local_118; + Mat *local_110; + undefined8 local_108; + undefined4 local_100; + undefined4 local_fc; + ulong local_e0; + undefined4 local_d8; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined4 local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + uVar2 = *param_2; + iVar6 = param_2[1]; + local_100 = 0x80000000; + local_fc = 0x7fffffff; + local_60 = uVar2; + local_5c = iVar6; + cv::Mat::Mat((Mat *)&local_c0,*(Mat **)(param_1 + 0x10),(Range *)&local_60,(Range *)&local_100); + local_138 = 0x80000000; + local_134 = 0x7fffffff; + local_130 = uVar2; + local_12c = iVar6; + cv::Mat::Mat((Mat *)&local_60,*(Mat **)(param_1 + 0x20),(Range *)&local_130,(Range *)&local_138); + uVar3 = **(uint **)(param_1 + 0x18); + local_108 = 0; + local_118 = (Mat *)&local_c0; + local_110 = (Mat *)&local_60; + cv::NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_100,&local_118,&local_128,-1); + for (uVar7 = 0; uVar7 < local_e0; uVar7 = uVar7 + 1) { + (**(code **)(param_1 + 0x28)) + (local_128,*(undefined8 *)(*(long *)(param_1 + 0x18) + 0x10),local_120,local_d8, + (local_c0 >> 3 & 0x1ff) + 1,(uVar3 >> 3 & 0x1ff) + 1); + cv::NAryMatIterator::operator++((NAryMatIterator *)&local_100); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar6 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + do { + *local_80 = 0; + iVar6 = iVar6 + 1; + local_80 = local_80 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00282a08 (1052 bytes) name=split + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::split(cv::Mat const&, cv::Mat*) */ + +void cv::split(Mat *param_1,Mat *param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + char cVar8; + uint uVar9; + code *pcVar10; + Mat **ppMVar11; + uchar *puVar12; + char *pcVar13; + int iVar14; + uint uVar15; + uchar **ppuVar16; + uchar **ppuVar17; + uchar **ppuVar18; + int iVar19; + int iVar20; + int iVar21; + Mat **ppMVar22; + int iVar23; + ulong uVar24; + NAryMatIterator aNStack_458 [32]; + ulong local_438; + int local_430; + Mat **local_418; + Mat *local_410; + undefined4 local_408; + undefined4 uStack_404; + + uVar7 = *(uint *)param_1 >> 3 & 0x1ff; + uVar3 = *(uint *)param_1 & 7; + uVar1 = uVar7 + 1; + if (uVar7 == 0) { + local_408 = 0; + uStack_404 = 0; + local_418 = (Mat **)CONCAT44(local_418._4_4_,0x2010000); + local_410 = param_2; + Mat::copyTo(param_1,(_OutputArray *)&local_418); + } + else { + pcVar10 = (code *)(&PTR_FUN_004f5fe0)[(int)uVar3]; + uVar6 = uVar3; + if (pcVar10 == (code *)0x0) { + local_418 = (Mat **)pcVar10; + local_410 = (Mat *)pcVar10; + pcVar13 = (char *)String::allocate((String *)&local_418,9); + cVar8 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar13 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar13[8] = cVar8; + error(-0xd7,(String *)&local_418,"void cv::split(const cv::Mat&, cv::Mat*)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x340); + String::deallocate((String *)&local_418); + uVar6 = *(uint *)param_1 & 7; + } + iVar14 = *(int *)(param_1 + 4); + if (iVar14 < 1) { + iVar20 = 0x3ff; + iVar19 = 0; + } + else { + iVar19 = (int)*(undefined8 *)(*(long *)(param_1 + 0x48) + (long)iVar14 * 8 + -8); + iVar20 = iVar19 + 0x3ff; + } + uVar24 = (long)(int)(uVar7 + 2) * 0x10 + 0x10; + local_410 = (Mat *)0x408; + ppMVar11 = (Mat **)&local_408; + iVar21 = 0; + if (iVar19 != 0) { + iVar21 = iVar20 / iVar19; + } + if (0x408 < uVar24) { + local_418 = ppMVar11; + ppMVar11 = operator_new__(uVar24); + iVar14 = *(int *)(param_1 + 4); + } + ppuVar18 = (uchar **)((long)ppMVar11 + (long)(int)uVar1 * 8 + 0x17 & 0xfffffffffffffff0); + *ppMVar11 = param_1; + ppMVar22 = ppMVar11; + local_418 = ppMVar11; + local_410 = (Mat *)uVar24; + while( true ) { + Mat::create(param_2,iVar14,*(int **)(param_1 + 0x40),uVar3); + ppMVar22[1] = param_2; + param_2 = param_2 + 0x60; + if (ppMVar22 == ppMVar11 + (int)uVar7) break; + iVar14 = *(int *)(param_1 + 4); + ppMVar22 = ppMVar22 + 1; + } + NAryMatIterator::NAryMatIterator(aNStack_458,ppMVar11,ppuVar18,uVar7 + 2); + if ((local_430 <= iVar21) || (uVar1 < 5)) { + iVar21 = local_430; + } + uVar3 = uVar1; + if (4 < uVar1) { + uVar3 = 1; + } + uVar24 = 0; + uVar2 = ((uVar1 - uVar3) - 2 >> 1) + 1; + iVar14 = uVar2 * 2; + if (local_438 != 0) { + do { + if (0 < local_430) { + puVar12 = *ppuVar18; + iVar23 = 0; + iVar20 = iVar21; + while( true ) { + iVar4 = iVar21; + if (iVar23 + local_430 < iVar21) { + iVar4 = iVar23 + local_430; + } + (*pcVar10)(puVar12,ppuVar18 + 1,iVar4,uVar1); + if (local_430 <= iVar20) break; + iVar5 = iVar4 * ((uint)(0x88442211L >> (uVar6 << 2)) & 0xf); + puVar12 = *ppuVar18 + iVar4 * iVar19; + *ppuVar18 = puVar12; + ppuVar18[1] = ppuVar18[1] + iVar5; + uVar15 = uVar3; + if (((uVar3 != 1) && (ppuVar18[2] = ppuVar18[2] + iVar5, uVar3 != 2)) && + (ppuVar18[3] = ppuVar18[3] + iVar5, uVar3 != 3)) { + ppuVar18[4] = ppuVar18[4] + iVar5; + uVar15 = 4; + } + if (uVar1 != uVar3) { + if (uVar7 == uVar3) { +LAB_00282cd8: + ppuVar18[(long)(int)uVar15 + 1] = ppuVar18[(long)(int)uVar15 + 1] + iVar5; + } + else { + uVar9 = 0; + ppuVar16 = ppuVar18 + (ulong)uVar3 + 1; + ppuVar17 = ppuVar18 + (ulong)uVar3 + 1; + do { + puVar12 = *ppuVar17; + uVar9 = uVar9 + 1; + ppuVar16[1] = ppuVar17[1] + iVar5; + *ppuVar16 = puVar12 + iVar5; + ppuVar16 = ppuVar16 + 2; + ppuVar17 = ppuVar17 + 2; + } while (uVar9 < uVar2); + uVar15 = uVar15 + iVar14; + if (iVar14 != uVar1 - uVar3) goto LAB_00282cd8; + } + puVar12 = *ppuVar18; + } + iVar20 = iVar20 + iVar21; + iVar23 = iVar23 - iVar21; + } + } + uVar24 = uVar24 + 1; + NAryMatIterator::operator++(aNStack_458); + } while (uVar24 < local_438); + } + if ((local_418 != (Mat **)&local_408) && (local_418 != (Mat **)0x0)) { + operator_delete__(local_418); + } + } + return; +} + + +================================================================== + +### FUNC 00282e5c (1704 bytes) name=mixChannels + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::mixChannels(cv::Mat const*, unsigned long, cv::Mat*, unsigned long, int const*, unsigned + long) */ + +void cv::mixChannels(Mat *param_1,ulong param_2,Mat *param_3,ulong param_4,int *param_5, + ulong param_6) + +{ + Mat **ppMVar1; + Mat **ppMVar2; + Mat **ppMVar3; + Mat **ppMVar4; + Mat **ppMVar5; + int *piVar6; + uint uVar7; + int iVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined4 uVar15; + undefined2 uVar16; + char cVar17; + bool bVar18; + uint uVar19; + Mat **ppMVar20; + ulong uVar21; + char *pcVar22; + code *pcVar23; + long lVar24; + Mat *pMVar25; + uint uVar26; + ulong uVar27; + int iVar28; + int iVar29; + int iVar30; + ulong uVar31; + ulong uVar32; + Mat **ppMVar33; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + NAryMatIterator aNStack_458 [32]; + ulong local_438; + int local_430; + Mat **local_418; + ulong local_410; + Mat *local_408 [129]; + + if (param_6 != 0) { + bVar18 = param_2 != 0; + if ((((param_1 == (Mat *)0x0) || (!bVar18)) || (param_3 == (Mat *)0x0)) || + ((param_4 == 0 || (param_5 == (int *)0x0)))) { + local_418 = (Mat **)0x0; + local_410 = 0; + pcVar22 = (char *)String::allocate((String *)&local_418,0x3c); + uVar15 = s_src____nsrcs_>_0____dst____ndsts_004632a0._56_4_; + uVar14 = s_src____nsrcs_>_0____dst____ndsts_004632a0._40_8_; + uVar13 = s_src____nsrcs_>_0____dst____ndsts_004632a0._32_8_; + uVar12 = s_src____nsrcs_>_0____dst____ndsts_004632a0._24_8_; + uVar11 = s_src____nsrcs_>_0____dst____ndsts_004632a0._16_8_; + uVar10 = s_src____nsrcs_>_0____dst____ndsts_004632a0._8_8_; + uVar9 = s_src____nsrcs_>_0____dst____ndsts_004632a0._0_8_; + *(undefined8 *)(pcVar22 + 0x30) = s_src____nsrcs_>_0____dst____ndsts_004632a0._48_8_; + *(undefined4 *)(pcVar22 + 0x38) = uVar15; + *(undefined8 *)pcVar22 = uVar9; + *(undefined8 *)(pcVar22 + 8) = uVar10; + *(undefined8 *)(pcVar22 + 0x10) = uVar11; + *(undefined8 *)(pcVar22 + 0x18) = uVar12; + *(undefined8 *)(pcVar22 + 0x20) = uVar13; + *(undefined8 *)(pcVar22 + 0x28) = uVar14; + error(-0xd7,(String *)&local_418, + "void cv::mixChannels(const cv::Mat*, size_t, cv::Mat*, size_t, const int*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x49a); + String::deallocate((String *)&local_418); + } + lVar24 = param_2 + param_4; + uVar7 = *(uint *)param_3 & 7; + uVar31 = (lVar24 + 1) * 0x10 + param_6 * 0x28; + ppMVar20 = local_408; + local_410 = 0x408; + uVar27 = 0x88442211UL >> (uVar7 << 2) & 0xf; + if (0x408 < uVar31) { + local_418 = ppMVar20; + ppMVar20 = operator_new__(uVar31); + } + ppMVar1 = ppMVar20 + lVar24; + ppMVar2 = ppMVar1 + lVar24 + 1; + uVar21 = 0; + ppMVar3 = ppMVar2 + param_6 * 2; + ppMVar4 = ppMVar3 + param_6 * 2; + ppMVar5 = ppMVar2 + param_6; + piVar6 = (int *)((long)ppMVar4 + param_6 * 4); + pMVar25 = param_1; + if (bVar18) { + do { + ppMVar20[uVar21] = pMVar25; + uVar21 = uVar21 + 1; + pMVar25 = pMVar25 + 0x60; + } while (uVar21 < param_2); + } + if (param_4 != 0) { + uVar21 = 0; + pMVar25 = param_3; + do { + ppMVar20[param_2 + uVar21] = pMVar25; + uVar21 = uVar21 + 1; + pMVar25 = pMVar25 + 0x60; + } while (uVar21 != param_4); + } + uVar21 = 0; + ppMVar1[lVar24] = (Mat *)0x0; + ppMVar33 = ppMVar3; + local_418 = ppMVar20; + local_410 = uVar31; + do { + iVar29 = *param_5; + iVar28 = param_5[1]; + iVar30 = (int)param_2; + uVar31 = param_4; + if (iVar29 < 0) { + *(int *)ppMVar33 = iVar30 + (int)param_4; + *(int *)((long)ppMVar33 + 4) = 0; + *(int *)((long)ppMVar4 + uVar21 * 4) = 0; + if (param_4 != 0) goto LAB_00283194; +LAB_002831dc: + local_468 = 0; + local_460 = 0; + pcVar22 = (char *)String::allocate((String *)&local_468,0x2f); + cVar17 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308[0x2e]; + uVar16 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._44_2_; + uVar15 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._40_4_; + uVar12 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._24_8_; + uVar11 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._16_8_; + uVar10 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._8_8_; + uVar9 = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._0_8_; + *(undefined8 *)(pcVar22 + 0x20) = s_i1_>__0____j_<_ndsts_&&_dst[j]_d_00463308._32_8_; + *(undefined4 *)(pcVar22 + 0x28) = uVar15; + *(undefined2 *)(pcVar22 + 0x2c) = uVar16; + pcVar22[0x2e] = cVar17; + *(undefined8 *)pcVar22 = uVar9; + *(undefined8 *)(pcVar22 + 8) = uVar10; + *(undefined8 *)(pcVar22 + 0x10) = uVar11; + *(undefined8 *)(pcVar22 + 0x18) = uVar12; + error(-0xd7,(String *)&local_468, + "void cv::mixChannels(const cv::Mat*, size_t, cv::Mat*, size_t, const int*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x4c2); + String::deallocate((String *)&local_468); + lVar24 = uVar31 * 0x60; + } + else { + if (bVar18) { + uVar26 = *(uint *)param_1; + uVar19 = uVar26 >> 3 & 0x1ff; + pMVar25 = param_1; + if ((int)uVar19 < iVar29) { + uVar32 = 0; + do { + pMVar25 = pMVar25 + 0x60; + uVar32 = uVar32 + 1; + iVar29 = iVar29 - (uVar19 + 1); + if (param_2 <= uVar32) goto LAB_00283100; + uVar26 = *(uint *)pMVar25; + uVar19 = uVar26 >> 3 & 0x1ff; + } while ((int)uVar19 < iVar29); + } + else { + uVar32 = 0; + } + if (uVar7 != (uVar26 & 7)) goto LAB_00283100; + } + else { + uVar32 = 0; +LAB_00283100: + local_478 = 0; + local_470 = 0; + pcVar22 = (char *)String::allocate((String *)&local_478,0x24); + *(undefined4 *)(pcVar22 + 0x20) = s_j_<_nsrcs_&&_src[j]_depth()____d_004632e0._32_4_; + uVar11 = s_j_<_nsrcs_&&_src[j]_depth()____d_004632e0._24_8_; + uVar10 = s_j_<_nsrcs_&&_src[j]_depth()____d_004632e0._16_8_; + uVar9 = s_j_<_nsrcs_&&_src[j]_depth()____d_004632e0._8_8_; + *(undefined8 *)pcVar22 = s_j_<_nsrcs_&&_src[j]_depth()____d_004632e0._0_8_; + *(undefined8 *)(pcVar22 + 8) = uVar9; + *(undefined8 *)(pcVar22 + 0x10) = uVar10; + *(undefined8 *)(pcVar22 + 0x18) = uVar11; + error(-0xd7,(String *)&local_478, + "void cv::mixChannels(const cv::Mat*, size_t, cv::Mat*, size_t, const int*, size_t)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x4b5); + String::deallocate((String *)&local_478); + pMVar25 = param_1 + uVar32 * 0x60; + } + *(int *)ppMVar33 = (int)uVar32; + *(int *)((long)ppMVar33 + 4) = iVar29 * (int)uVar27; + *(uint *)((long)ppMVar4 + uVar21 * 4) = (*(uint *)pMVar25 >> 3 & 0x1ff) + 1; + if (param_4 == 0) goto LAB_002831dc; +LAB_00283194: + uVar26 = *(uint *)param_3 >> 3 & 0x1ff; + if ((int)uVar26 < iVar28) { + uVar31 = 0; + pMVar25 = param_3; + do { + pMVar25 = pMVar25 + 0x60; + uVar31 = uVar31 + 1; + iVar28 = iVar28 - (uVar26 + 1); + if (uVar31 == param_4) goto LAB_002831dc; + uVar26 = *(uint *)pMVar25 >> 3 & 0x1ff; + } while ((int)uVar26 < iVar28); + } + else { + uVar31 = 0; + } + if (((param_4 <= uVar31) || (iVar28 < 0)) || + (lVar24 = uVar31 * 0x60, uVar7 != (*(uint *)(param_3 + lVar24) & 7))) goto LAB_002831dc; + } + *(int *)((long)ppMVar33 + 0xc) = iVar28 * (int)uVar27; + *(int *)(ppMVar33 + 1) = iVar30 + (int)uVar31; + param_5 = param_5 + 2; + piVar6[uVar21] = (*(uint *)(param_3 + lVar24) >> 3 & 0x1ff) + 1; + uVar21 = uVar21 + 1; + ppMVar33 = ppMVar33 + 2; + } while (uVar21 != param_6); + NAryMatIterator::NAryMatIterator(aNStack_458,ppMVar20,(uchar **)ppMVar1,iVar30 + (int)param_4); + uVar31 = 0; + iVar29 = 0; + if (uVar27 != 0) { + iVar29 = (int)((uVar27 + 0x3ff) / uVar27); + } + iVar28 = local_430; + if (iVar29 <= local_430) { + iVar28 = iVar29; + } + pcVar23 = (code *)(&PTR_FUN_004f6020)[(int)uVar7]; + if (local_438 != 0) { + do { + uVar21 = 0; + ppMVar20 = ppMVar3; + do { + iVar29 = *(int *)(ppMVar20 + 1); + iVar30 = *(int *)((long)ppMVar20 + 0xc); + ppMVar2[uVar21] = ppMVar1[*(int *)ppMVar20] + *(int *)((long)ppMVar20 + 4); + ppMVar5[uVar21] = ppMVar1[iVar29] + iVar30; + uVar21 = uVar21 + 1; + ppMVar20 = ppMVar20 + 2; + } while (uVar21 != param_6); + if (0 < local_430) { + iVar30 = 0; + iVar29 = iVar28; + while( true ) { + iVar8 = iVar30 + local_430; + if (iVar28 < iVar30 + local_430) { + iVar8 = iVar28; + } + (*pcVar23)(ppMVar2,ppMVar4,ppMVar5,piVar6,iVar8,param_6 & 0xffffffff); + if (local_430 <= iVar29) break; + uVar21 = 0; + do { + iVar8 = piVar6[uVar21]; + ppMVar2[uVar21] = + ppMVar2[uVar21] + (long)(iVar28 * *(int *)((long)ppMVar4 + uVar21 * 4)) * uVar27; + ppMVar5[uVar21] = ppMVar5[uVar21] + (long)(iVar28 * iVar8) * uVar27; + uVar21 = uVar21 + 1; + } while (uVar21 != param_6); + iVar29 = iVar29 + iVar28; + iVar30 = iVar30 - iVar28; + } + } + uVar31 = uVar31 + 1; + NAryMatIterator::operator++(aNStack_458); + } while (uVar31 < local_438); + } + if ((local_418 != local_408) && (local_418 != (Mat **)0x0)) { + operator_delete__(local_418); + } + } + return; +} + + +================================================================== + +### FUNC 00283560 (2524 bytes) name=merge + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::merge(cv::Mat const*, unsigned long, cv::_OutputArray const&) */ + +void cv::merge(Mat *param_1,ulong param_2,_OutputArray *param_3) + +{ + uint *puVar1; + int *piVar2; + uint uVar3; + char cVar4; + bool bVar5; + int iVar6; + bool bVar7; + uint uVar8; + undefined2 uVar9; + undefined1 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + bool bVar14; + int iVar15; + int iVar16; + int *piVar17; + char *pcVar18; + ulong uVar19; + undefined8 *puVar20; + uint uVar21; + int *piVar22; + code *pcVar23; + uchar *puVar24; + undefined4 *puVar25; + Mat *pMVar26; + int iVar27; + Mat **ppMVar28; + uchar **ppuVar29; + uchar **ppuVar30; + uint uVar31; + long lVar32; + ulong uVar33; + uchar **ppuVar34; + uint uVar35; + uint uVar36; + int iVar38; + undefined8 uVar37; + int iVar40; + undefined8 uVar39; + int iVar41; + int iVar42; + int iVar43; + int iVar44; + String *local_4d8; + NAryMatIterator aNStack_4d0 [32]; + ulong local_4b0; + int local_4a8; + uint local_490; + int local_48c; + undefined4 local_488; + undefined4 local_484; + undefined8 local_480; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + long local_458; + undefined4 *local_450; + undefined8 *local_448; + undefined8 local_440; + undefined8 local_438; + Mat **local_430; + uint *local_428; + undefined4 local_420; + undefined4 uStack_41c; + + bVar14 = param_2 != 0; + if ((param_1 == (Mat *)0x0) || (!bVar14)) { + local_430 = (Mat **)0x0; + local_428 = (uint *)0x0; + puVar20 = (undefined8 *)String::allocate((String *)&local_430,0xb); + uVar10 = DAT_00463342; + uVar9 = DAT_00463340; + *puVar20 = DAT_00463338; + *(undefined2 *)(puVar20 + 1) = uVar9; + *(undefined1 *)((long)puVar20 + 10) = uVar10; + error(-0xd7,(String *)&local_430,"void cv::merge(const cv::Mat*, size_t, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x3ad); + String::deallocate((String *)&local_430); + uVar35 = *(uint *)param_1 & 7; + if (bVar14) goto LAB_002835bc; + bVar7 = true; + uVar36 = 0; +LAB_002836a0: + local_4d8 = (String *)&local_430; + local_430 = (Mat **)0x0; + local_428 = (uint *)0x0; + pcVar18 = (char *)String::allocate(local_4d8,0x19); + cVar4 = s_0_<_cn_&&_cn_<__CV_CN_MAX_00463380[0x18]; + uVar39 = s_0_<_cn_&&_cn_<__CV_CN_MAX_00463380._8_8_; + uVar37 = s_0_<_cn_&&_cn_<__CV_CN_MAX_00463380._0_8_; + *(undefined8 *)(pcVar18 + 0x10) = s_0_<_cn_&&_cn_<__CV_CN_MAX_00463380._16_8_; + pcVar18[0x18] = cVar4; + *(undefined8 *)pcVar18 = uVar37; + *(undefined8 *)(pcVar18 + 8) = uVar39; + error(-0xd7,local_4d8,"void cv::merge(const cv::Mat*, size_t, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x3bb); + uVar31 = uVar36 - 1; + String::deallocate(local_4d8); + } + else { + uVar35 = *(uint *)param_1 & 7; +LAB_002835bc: + local_4d8 = (String *)&local_430; + uVar33 = 0; + uVar36 = 0; + bVar5 = true; + pMVar26 = param_1; +LAB_002835ec: + do { + piVar17 = *(int **)(pMVar26 + 0x40); + piVar22 = *(int **)(param_1 + 0x40); + iVar15 = piVar17[-1]; + if (iVar15 == piVar22[-1]) { + if (iVar15 != 2) { + if (iVar15 < 1) { +LAB_00283b68: + uVar19 = (ulong)*(uint *)pMVar26; + if (uVar35 == (*(uint *)pMVar26 & 7)) goto LAB_00283668; + } + else if (*piVar17 == *piVar22) { + piVar2 = piVar17 + (iVar15 - 1); + do { + piVar22 = piVar22 + 1; + if (piVar17 == piVar2) goto LAB_00283b68; + piVar17 = piVar17 + 1; + } while (*piVar17 == *piVar22); + } + goto LAB_00283604; + } + if (((*piVar17 != *piVar22) || (piVar17[1] != piVar22[1])) || + (uVar19 = (ulong)*(uint *)pMVar26, uVar35 != (*(uint *)pMVar26 & 7))) goto LAB_00283604; + } + else { +LAB_00283604: + local_430 = (Mat **)0x0; + local_428 = (uint *)0x0; + pcVar18 = (char *)String::allocate(local_4d8,0x32); + *(undefined2 *)(pcVar18 + 0x30) = s_mv_i__size____mv_0__size____mv_i_00463348._48_2_; + uVar13 = s_mv_i__size____mv_0__size____mv_i_00463348._40_8_; + uVar12 = s_mv_i__size____mv_0__size____mv_i_00463348._32_8_; + uVar11 = s_mv_i__size____mv_0__size____mv_i_00463348._24_8_; + uVar39 = s_mv_i__size____mv_0__size____mv_i_00463348._16_8_; + uVar37 = s_mv_i__size____mv_0__size____mv_i_00463348._8_8_; + *(undefined8 *)pcVar18 = s_mv_i__size____mv_0__size____mv_i_00463348._0_8_; + *(undefined8 *)(pcVar18 + 8) = uVar37; + *(undefined8 *)(pcVar18 + 0x10) = uVar39; + *(undefined8 *)(pcVar18 + 0x18) = uVar11; + *(undefined8 *)(pcVar18 + 0x20) = uVar12; + *(undefined8 *)(pcVar18 + 0x28) = uVar13; + error(-0xd7,local_4d8,"void cv::merge(const cv::Mat*, size_t, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x3b6); + String::deallocate(local_4d8); + uVar19 = (ulong)*(uint *)pMVar26; + } +LAB_00283668: + uVar31 = (uint)(uVar19 >> 3) & 0x1ff; + if ((!bVar5) || ((uVar19 >> 3 & 0x1ff) != 0)) { + uVar33 = uVar33 + 1; + bVar5 = false; + uVar36 = uVar36 + uVar31 + 1; + pMVar26 = pMVar26 + 0x60; + bVar7 = bVar5; + if (param_2 <= uVar33) break; + goto LAB_002835ec; + } + uVar33 = uVar33 + 1; + uVar36 = uVar36 + uVar31 + 1; + pMVar26 = pMVar26 + 0x60; + bVar7 = true; + } while (uVar33 < param_2); + uVar31 = uVar36 - 1; + if (0x1ff < uVar31) goto LAB_002836a0; + } + local_4d8 = (String *)&local_430; + _OutputArray::create + (param_3,*(int *)(param_1 + 4),*(int **)(param_1 + 0x40),uVar35 + uVar31 * 8,-1,false,0) + ; + iVar15 = _InputArray::kind((_InputArray *)param_3); + if (iVar15 == 0x10000) { + pMVar26 = *(Mat **)(param_3 + 8); + local_450 = &local_488; + local_448 = &local_440; + local_490 = *(uint *)pMVar26; + local_48c = *(int *)(pMVar26 + 4); + local_488 = *(undefined4 *)(pMVar26 + 8); + local_484 = *(undefined4 *)(pMVar26 + 0xc); + local_480 = *(undefined8 *)(pMVar26 + 0x10); + local_478 = *(undefined8 *)(pMVar26 + 0x18); + local_470 = *(undefined8 *)(pMVar26 + 0x20); + local_468 = *(undefined8 *)(pMVar26 + 0x28); + local_460 = *(undefined8 *)(pMVar26 + 0x30); + local_458 = *(long *)(pMVar26 + 0x38); + local_438 = 0; + local_440 = 0; + if (local_458 != 0) { + piVar17 = (int *)(local_458 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar5) { + *piVar17 = *piVar17 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (2 < *(int *)(pMVar26 + 4)) { + local_48c = 0; + Mat::copySize((Mat *)&local_490,pMVar26); + goto LAB_00283748; + } + if (param_2 != 1) goto LAB_00283750; +LAB_00283c70: + local_428 = &local_490; + local_420 = 0; + uStack_41c = 0; + /* WARNING: Ignoring partial resolution of indirect */ + local_430._0_4_ = 0x2010000; + Mat::copyTo(param_1,(_OutputArray *)local_4d8); + } + else { + _InputArray::getMat_((int)param_3); +LAB_00283748: + if (param_2 == 1) goto LAB_00283c70; +LAB_00283750: + if (bVar7) { + if (local_48c < 1) { + uVar33 = 0x3ff; + uVar19 = 0; + } + else { + uVar19 = local_448[(long)local_48c + -1]; + uVar33 = uVar19 + 0x3ff; + } + puVar1 = (uint *)((long)(int)(uVar36 + 1) * 0x10 + 0x10); + uVar8 = local_490 & 7; + iVar15 = 0; + if (uVar19 != 0) { + iVar15 = (int)(uVar33 / uVar19); + } + local_430 = (Mat **)&local_420; + local_428 = (uint *)0x408; + if ((uint *)0x408 < puVar1) { + local_430 = operator_new__((ulong)puVar1); + } + *local_430 = (Mat *)&local_490; + ppuVar34 = (uchar **)((long)local_430 + (long)(int)uVar36 * 8 + 0x17 & 0xfffffffffffffff0); + if (uVar36 != 0) { + pMVar26 = param_1 + ((ulong)uVar31 + 1) * 0x60; + ppMVar28 = local_430; + do { + ppMVar28 = ppMVar28 + 1; + *ppMVar28 = param_1; + param_1 = param_1 + 0x60; + } while (param_1 != pMVar26); + } + local_428 = puVar1; + NAryMatIterator::NAryMatIterator(aNStack_4d0,local_430,ppuVar34,uVar36 + 1); + if ((local_4a8 <= iVar15) || ((int)uVar36 < 5)) { + iVar15 = local_4a8; + } + uVar31 = uVar36; + if (uVar36 != 0) { + uVar31 = 1; + } + uVar3 = uVar36; + if (4 < uVar36) { + uVar3 = uVar31; + } + iVar6 = uVar36 - uVar3; + uVar33 = 0; + uVar31 = (iVar6 - 2U >> 1) + 1; + pcVar23 = (code *)(&PTR_FUN_004f5d60)[(int)uVar35]; + iVar27 = uVar31 * 2; + if (local_4b0 != 0) { + do { + if (0 < local_4a8) { + puVar24 = *ppuVar34; + iVar38 = 0; + iVar16 = iVar15; + while( true ) { + iVar40 = iVar15; + if (iVar38 + local_4a8 < iVar15) { + iVar40 = iVar38 + local_4a8; + } + (*pcVar23)(ppuVar34 + 1,puVar24,iVar40,uVar36); + if (local_4a8 <= iVar16) break; + puVar24 = *ppuVar34 + (long)iVar40 * uVar19; + *ppuVar34 = puVar24; + if (uVar36 != 0) { + lVar32 = (long)iVar40 * (0x88442211UL >> (uVar8 << 2) & 0xf); + uVar35 = uVar3; + if (uVar3 != 0) { + ppuVar34[1] = ppuVar34[1] + lVar32; + if (((uVar3 != 1) && (ppuVar34[2] = ppuVar34[2] + lVar32, uVar3 != 2)) && + (ppuVar34[3] = ppuVar34[3] + lVar32, uVar3 != 3)) { + ppuVar34[4] = ppuVar34[4] + lVar32; + uVar35 = 4; + } + if (uVar3 == uVar36) goto LAB_002839ec; + } + if (iVar6 == 1) { +LAB_002839cc: + ppuVar34[(long)(int)uVar35 + 1] = ppuVar34[(long)(int)uVar35 + 1] + lVar32; + } + else { + uVar21 = 0; + ppuVar29 = ppuVar34 + (ulong)uVar3 + 1; + ppuVar30 = ppuVar34 + (ulong)uVar3 + 1; + do { + puVar24 = *ppuVar30; + uVar21 = uVar21 + 1; + ppuVar29[1] = ppuVar30[1] + lVar32; + *ppuVar29 = puVar24 + lVar32; + ppuVar29 = ppuVar29 + 2; + ppuVar30 = ppuVar30 + 2; + } while (uVar21 < uVar31); + uVar35 = uVar35 + iVar27; + if (iVar27 != iVar6) goto LAB_002839cc; + } + puVar24 = *ppuVar34; + } +LAB_002839ec: + iVar16 = iVar16 + iVar15; + iVar38 = iVar38 - iVar15; + } + } + uVar33 = uVar33 + 1; + NAryMatIterator::operator++(aNStack_4d0); + } while (uVar33 < local_4b0); + } + if ((local_430 != (Mat **)&local_420) && (local_430 != (Mat **)0x0)) { + operator_delete__(local_430); + } + if (local_458 != 0) { + piVar17 = (int *)(local_458 + 0x14); + do { + iVar15 = *piVar17; + cVar4 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar14) { + *piVar17 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_490); + } + } + if (0 < local_48c) { + iVar15 = 0; + puVar25 = local_450; + do { + iVar15 = iVar15 + 1; + *puVar25 = 0; + puVar25 = puVar25 + 1; + } while (iVar15 < local_48c); + } + goto LAB_00283ac8; + } + iVar15 = uVar36 * 2; + local_430 = (Mat **)&local_420; + local_428 = (uint *)0x108; + if (0x108 < iVar15) { + local_430 = operator_new__((long)iVar15 << 2); + } + if (bVar14) { + iVar27 = 0; + uVar33 = 0; + pMVar26 = param_1; + do { + uVar31 = *(uint *)pMVar26 >> 3 & 0x1ff; + iVar6 = uVar31 + 1; + uVar35 = (uVar31 - 3 >> 2) + 1; + iVar16 = uVar35 * 4; + if (uVar31 < 3) { + iVar16 = 0; +LAB_00283d94: + iVar38 = iVar16 + iVar27; + *(int *)((long)local_430 + (long)(iVar38 * 2) * 4) = iVar38; + *(int *)((long)local_430 + (long)(iVar38 * 2 + 1) * 4) = iVar38; + if (iVar16 + 1 < iVar6) { + iVar38 = iVar27 + iVar16 + 1; + *(int *)((long)local_430 + (long)(iVar38 * 2) * 4) = iVar38; + *(int *)((long)local_430 + (long)(iVar38 * 2 + 1) * 4) = iVar38; + if (iVar16 + 2 < iVar6) { + iVar16 = iVar16 + 2 + iVar27; + *(int *)((long)local_430 + (long)(iVar16 * 2) * 4) = iVar16; + *(int *)((long)local_430 + (long)(iVar16 * 2 + 1) * 4) = iVar16; + } + } + } + else { + uVar31 = 0; + piVar17 = (int *)((long)local_430 + (long)(iVar27 << 1) * 4); + uVar37 = _DAT_00283fd0; + uVar39 = _UNK_00283fd8; + do { + iVar41 = iVar27 + (int)uVar37; + iVar38 = (int)((ulong)uVar37 >> 0x20); + iVar42 = iVar27 + iVar38; + iVar43 = iVar27 + (int)uVar39; + iVar40 = (int)((ulong)uVar39 >> 0x20); + iVar44 = iVar27 + iVar40; + uVar31 = uVar31 + 1; + uVar37 = CONCAT44(iVar38 + 4,(int)uVar37 + 4); + uVar39 = CONCAT44(iVar40 + 4,(int)uVar39 + 4); + *piVar17 = iVar41; + piVar17[1] = iVar41; + piVar17[2] = iVar42; + piVar17[3] = iVar42; + piVar17[4] = iVar43; + piVar17[5] = iVar43; + piVar17[6] = iVar44; + piVar17[7] = iVar44; + piVar17 = piVar17 + 8; + } while (uVar31 < uVar35); + if (iVar16 != iVar6) goto LAB_00283d94; + } + uVar33 = uVar33 + 1; + iVar27 = iVar27 + iVar6; + pMVar26 = pMVar26 + 0x60; + } while (uVar33 < param_2); + } + local_428 = (uint *)(long)iVar15; + mixChannels(param_1,param_2,(Mat *)&local_490,1,(int *)local_430,(long)(int)uVar36); + if ((local_430 != (Mat **)&local_420) && (local_430 != (Mat **)0x0)) { + operator_delete__(local_430); + } + } + if (local_458 != 0) { + piVar17 = (int *)(local_458 + 0x14); + do { + iVar15 = *piVar17; + cVar4 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar14) { + *piVar17 = iVar15 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_490); + } + } + if (0 < local_48c) { + iVar15 = 0; + puVar25 = local_450; + do { + iVar15 = iVar15 + 1; + *puVar25 = 0; + puVar25 = puVar25 + 1; + } while (iVar15 < local_48c); + } +LAB_00283ac8: + local_458 = 0; + local_468 = 0; + local_470 = 0; + local_478 = 0; + local_480 = 0; + if (local_448 != &local_440) { + fastFree(local_448); + } + return; +} + + +================================================================== + +### FUNC 00283fe0 (28 bytes) name=FUN_00283fe0 + +undefined * FUN_00283fe0(ulong param_1,ulong param_2) + +{ + return (&PTR_FUN_004f5b20)[(param_2 & 7) * 8 + (param_1 & 7)]; +} + + +================================================================== + +### FUNC 00283ffc (1220 bytes) name=convertScaleAbs + +/* cv::convertScaleAbs(cv::_InputArray const&, cv::_OutputArray const&, double, double) */ + +void cv::convertScaleAbs(_InputArray *param_1,_OutputArray *param_2,double param_3,double param_4) + +{ + char cVar1; + bool bVar2; + uint uVar3; + int iVar4; + int iVar5; + char *pcVar6; + Mat *pMVar7; + undefined4 *puVar8; + int *piVar9; + ulong uVar10; + code *pcVar11; + int local_140 [2]; + double local_138; + double local_130; + uchar *local_128; + undefined8 local_120; + Mat *local_118; + Mat *local_110; + undefined8 local_108; + code *local_100; + code *local_f8; + ulong local_e0; + int local_d8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind(param_1); + if (iVar4 == 0x10000) { + pMVar7 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar7; + local_bc = *(int *)(pMVar7 + 4); + local_b8 = *(int *)(pMVar7 + 8); + local_b4 = *(int *)(pMVar7 + 0xc); + local_b0 = *(undefined8 *)(pMVar7 + 0x10); + local_a8 = *(undefined8 *)(pMVar7 + 0x18); + local_a0 = *(undefined8 *)(pMVar7 + 0x20); + local_98 = *(undefined8 *)(pMVar7 + 0x28); + local_90 = *(undefined8 *)(pMVar7 + 0x30); + local_88 = *(long *)(pMVar7 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar7 + 0x48); + local_68 = (*(undefined8 **)(pMVar7 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar7); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar3 = local_c0 >> 3 & 0x1ff; + iVar4 = uVar3 + 1; + local_138 = param_3; + local_130 = param_4; + _OutputArray::create(param_2,local_bc,local_80,uVar3 << 3,-1,false,0); + iVar5 = _InputArray::kind((_InputArray *)param_2); + if (iVar5 == 0x10000) { + pMVar7 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar7; + local_5c = *(int *)(pMVar7 + 4); + local_58 = *(undefined4 *)(pMVar7 + 8); + local_54 = *(undefined4 *)(pMVar7 + 0xc); + local_50 = *(undefined8 *)(pMVar7 + 0x10); + local_48 = *(undefined8 *)(pMVar7 + 0x18); + local_40 = *(undefined8 *)(pMVar7 + 0x20); + local_38 = *(undefined8 *)(pMVar7 + 0x28); + local_30 = *(undefined8 *)(pMVar7 + 0x30); + local_28 = *(long *)(pMVar7 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar7 + 0x48); + local_8 = (*(undefined8 **)(pMVar7 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar7); + } + } + else { + _InputArray::getMat_((int)param_2); + } + pcVar11 = (code *)(&PTR_FUN_004f5da0)[(int)(local_c0 & 7)]; + if (pcVar11 == (code *)0x0) { + local_100 = pcVar11; + local_f8 = pcVar11; + pcVar6 = (char *)String::allocate((String *)&local_100,9); + cVar1 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar6 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar6[8] = cVar1; + error(-0xd7,(String *)&local_100, + "void cv::convertScaleAbs(cv::InputArray, cv::OutputArray, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x15ad); + String::deallocate((String *)&local_100); + } + if (local_bc < 3) { + if ((((local_c0 & local_60) >> 0xe & 1) == 0) || + (uVar10 = (long)local_b4 * (long)local_b8 * (long)iVar4, uVar10 - (long)(int)uVar10 != 0)) { + uVar10 = (ulong)(uint)(local_b4 * iVar4); + iVar4 = local_b8; + } + else { + iVar4 = 1; + } + local_100 = (code *)CONCAT44(iVar4,(int)uVar10); + (*pcVar11)(local_b0,local_70,0,0,local_50,local_10,(NAryMatIterator *)&local_100,&local_138); + } + else { + local_108 = 0; + local_118 = (Mat *)&local_c0; + local_110 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_100,&local_118,&local_128,-1); + for (uVar10 = 0; uVar10 < local_e0; uVar10 = uVar10 + 1) { + local_140[1] = 1; + local_140[0] = iVar4 * local_d8; + (*pcVar11)(local_128,0,0,0,local_120,0,local_140,&local_138); + NAryMatIterator::operator++((NAryMatIterator *)&local_100); + } + } + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + puVar8 = local_20; + do { + *puVar8 = 0; + iVar4 = iVar4 + 1; + puVar8 = puVar8 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + piVar9 = local_80; + do { + *piVar9 = 0; + iVar4 = iVar4 + 1; + piVar9 = piVar9 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00284520 (1776 bytes) name=convertTo + +/* WARNING: Type propagation algorithm not settling */ +/* cv::Mat::convertTo(cv::_OutputArray const&, int, double, double) const */ + +void __thiscall +cv::Mat::convertTo(Mat *this,_OutputArray *param_1,int param_2,double param_3,double param_4) + +{ + long lVar1; + uint uVar2; + uint uVar3; + bool bVar4; + bool bVar5; + bool bVar6; + char cVar7; + int iVar8; + uint uVar9; + char *pcVar10; + code **ppcVar11; + Mat *pMVar12; + int iVar13; + int *piVar14; + ulong uVar15; + code *pcVar16; + int local_140; + undefined4 local_13c; + double local_138; + double local_130; + uchar *local_128; + undefined8 local_120; + Mat *local_118; + Mat *local_110; + undefined8 local_108; + undefined4 local_100; + int local_fc; + ulong local_e0; + int local_d8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + code *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + code **local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + bVar5 = ABS(param_3 - 1.0) < DAT_00284c90; + bVar6 = ABS(param_4) < DAT_00284c90; + if (param_2 < 0) { + cVar7 = _OutputArray::fixedType(param_1); + if (cVar7 == '\0') { + local_c0 = *(uint *)this; + uVar9 = local_c0 & 0xfff; + } + else { + uVar9 = _InputArray::type((_InputArray *)param_1,-1); + local_c0 = *(uint *)this; + } + } + else { + local_c0 = *(uint *)this; + uVar9 = (param_2 & 7U) + (local_c0 & 0xff8); + } + uVar2 = local_c0 & 7; + uVar3 = uVar9 & 7; + if ((uVar3 == uVar2) && (bVar5 && bVar6)) { + copyTo(this,param_1); + return; + } + local_bc = *(int *)(this + 4); + local_b8 = *(int *)(this + 8); + local_80 = &local_b8; + local_b4 = *(int *)(this + 0xc); + local_78 = &local_70; + /* try { // try from 002845d4 to 00384633 has its CatchHandler @ 002845d4 + catch() { ... } // from try @ 002845d4 with catch @ 002845d4 + catch() { ... } // from try @ 00284638 with catch @ 002845d4 */ + local_b0 = *(undefined8 *)(this + 0x10); + local_a8 = *(undefined8 *)(this + 0x18); + local_a0 = *(undefined8 *)(this + 0x20); + local_98 = *(undefined8 *)(this + 0x28); + local_90 = *(undefined8 *)(this + 0x30); + local_88 = *(long *)(this + 0x38); + local_68 = 0; + local_70 = 0; + iVar13 = local_bc; + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + /* try { // try from 00284634 to 00384637 has its CatchHandler @ 00284ee0 */ + cVar7 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = *piVar14 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + /* try { // try from 00284638 to 00384ef3 has its CatchHandler @ 002845d4 */ + } while (cVar7 != '\0'); + iVar13 = *(int *)(this + 4); + } + if (iVar13 < 3) { + lVar1 = (ulong)uVar3 * 8 + (long)(int)uVar2; + local_70 = **(undefined8 **)(this + 0x48); + local_68 = (*(undefined8 **)(this + 0x48))[1]; + } + else { + local_bc = 0; + copySize((Mat *)&local_c0,this); + lVar1 = (ulong)uVar3 * 8 + (long)(int)uVar2; + } + if (bVar5 && bVar6) { + pcVar16 = (code *)(&PTR_FUN_004f5b20)[lVar1]; + } + else { + pcVar16 = (code *)(&PTR_FUN_004f5de0)[lVar1]; + } + iVar13 = (*(uint *)this >> 3 & 0x1ff) + 1; + local_138 = param_3; + local_130 = param_4; + if (pcVar16 == (code *)0x0) { + local_60 = pcVar16; + local_58 = pcVar16; + pcVar10 = (char *)String::allocate((String *)&local_60,9); + cVar7 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar10 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar10[8] = cVar7; + error(-0xd7,(String *)&local_60, + "void cv::Mat::convertTo(cv::OutputArray, int, double, double) const", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x15d5); + String::deallocate((String *)&local_60); + } + if (*(int *)(this + 4) < 3) { + local_60 = (code *)CONCAT44(**(undefined4 **)(this + 0x40),(*(undefined4 **)(this + 0x40))[1]); + _OutputArray::create(param_1,(Mat *)&local_60,uVar9,0xffffffff,0,0); + iVar8 = _InputArray::kind((_InputArray *)param_1); + if (iVar8 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar9 = *(uint *)pMVar12; + local_50 = *(undefined8 *)(pMVar12 + 0x10); + local_60 = *(code **)pMVar12; + local_58 = *(code **)(pMVar12 + 8); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar7 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar12 + 0x48); + local_8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_60 = (code *)(ulong)uVar9; + copySize((Mat *)&local_60,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((((local_c0 & (uint)local_60) >> 0xe & 1) == 0) || + (uVar15 = (long)local_b4 * (long)local_b8 * (long)iVar13, uVar15 - (long)(int)uVar15 != 0)) { + uVar15 = (ulong)(uint)(local_b4 * iVar13); + local_fc = local_b8; + } + else { + local_fc = 1; + } + local_100 = (undefined4)uVar15; + (*pcVar16)(local_b0,local_70,0,0,local_50,local_10,&local_100,&local_138); + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar14; + cVar7 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar13 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar13 == 1) { + deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar13 = 0; + ppcVar11 = local_20; + do { + *(undefined4 *)ppcVar11 = 0; + iVar13 = iVar13 + 1; + ppcVar11 = (code **)((long)ppcVar11 + 4); + } while (iVar13 < local_60._4_4_); + } + } + else { + _OutputArray::create(param_1,*(int *)(this + 4),*(int **)(this + 0x40),uVar9,-1,false,0); + iVar8 = _InputArray::kind((_InputArray *)param_1); + if (iVar8 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar9 = *(uint *)pMVar12; + local_50 = *(undefined8 *)(pMVar12 + 0x10); + local_60 = *(code **)pMVar12; + local_58 = *(code **)(pMVar12 + 8); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar7 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar12 + 0x48); + local_8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_60 = (code *)(ulong)uVar9; + copySize((Mat *)&local_60,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_108 = 0; + local_118 = (Mat *)&local_c0; + local_110 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_100,&local_118,&local_128,-1); + for (uVar15 = 0; uVar15 < local_e0; uVar15 = uVar15 + 1) { + local_13c = 1; + local_140 = iVar13 * local_d8; + (*pcVar16)(local_128,1,0,0,local_120,1,&local_140,&local_138); + NAryMatIterator::operator++((NAryMatIterator *)&local_100); + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar14; + cVar7 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar13 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar13 == 1) { + deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar13 = 0; + ppcVar11 = local_20; + do { + *(undefined4 *)ppcVar11 = 0; + iVar13 = iVar13 + 1; + ppcVar11 = (code **)((long)ppcVar11 + 4); + } while (iVar13 < local_60._4_4_); + } + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar14; + cVar7 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar13 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar13 == 1) { + deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar13 = iVar13 + 1; + piVar14 = piVar14 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + return; + } + return; +} + + +================================================================== + +### FUNC 00284c98 (3144 bytes) name=LUT + +/* cv::LUT(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::LUT(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + long *plVar1; + bool bVar2; + char cVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + void *__dest; + int *piVar8; + ParallelLoopBody *pPVar9; + long *plVar10; + char *pcVar11; + Mat *pMVar12; + undefined *puVar13; + long lVar14; + undefined4 *puVar15; + ulong uVar16; + code *pcVar17; + undefined4 local_2e0; + undefined4 local_2dc; + undefined4 local_2d8; + int local_2d4; + undefined4 local_2d0; + undefined4 local_2cc; + undefined4 local_2c8; + int local_2c4; + code *local_2c0; + code *local_2b8; + uchar *local_2b0; + undefined8 local_2a8; + uchar *local_2a0; + undefined8 local_298; + Mat *local_290; + Mat *local_288; + undefined8 local_280; + Mat *local_278; + Mat *local_270; + undefined8 local_268; + undefined4 local_260; + int local_25c; + ulong local_240; + undefined4 local_238; + NAryMatIterator aNStack_220 [32]; + ulong local_200; + undefined4 local_1f8; + undefined4 local_1e0; + int local_1dc; + int local_1d8; + undefined4 local_1d4; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + int *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + uint local_180; + int local_17c; + undefined4 local_178; + undefined4 local_174; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined4 local_120; + int local_11c; + int local_118; + int local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar4 = _InputArray::channels(param_1,-1); + uVar5 = _InputArray::depth(param_1,-1); + iVar6 = _InputArray::channels(param_2,-1); + if ((((iVar6 != 1) && (iVar4 != iVar6)) || + (lVar14 = _InputArray::total(param_2,-1), lVar14 != 0x100)) || + ((cVar3 = _InputArray::isContinuous(param_2,-1), cVar3 == '\0' || (1 < uVar5)))) { + local_60 = 0; + local_58 = 0; + __dest = (void *)String::allocate((String *)&local_60,0x6f); + memcpy(__dest, + "(lutcn == cn || lutcn == 1) && _lut.total() == 256 && _lut.isContinuous() && (depth == CV_8U || depth == CV_8S)" + ,0x6f); + error(-0xd7,(String *)&local_60,"void cv::LUT(cv::InputArray, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x171d); + String::deallocate((String *)&local_60); + } + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1e0 = *(undefined4 *)pMVar12; + local_1dc = *(int *)(pMVar12 + 4); + local_1d8 = *(int *)(pMVar12 + 8); + local_1d4 = *(undefined4 *)(pMVar12 + 0xc); + local_1d0 = *(undefined8 *)(pMVar12 + 0x10); + local_1c8 = *(undefined8 *)(pMVar12 + 0x18); + local_1c0 = *(undefined8 *)(pMVar12 + 0x20); + local_1b8 = *(undefined8 *)(pMVar12 + 0x28); + local_1b0 = *(undefined8 *)(pMVar12 + 0x30); + local_1a8 = *(long *)(pMVar12 + 0x38); + local_188 = 0; + local_190 = 0; + if (local_1a8 != 0) { + piVar8 = (int *)(local_1a8 + 0x14); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_190 = **(undefined8 **)(pMVar12 + 0x48); + local_188 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_1dc = 0; + Mat::copySize((Mat *)&local_1e0,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar7 = _InputArray::kind(param_2); + if (iVar7 == 0x10000) { + pMVar12 = *(Mat **)(param_2 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(uint *)pMVar12; + local_17c = *(int *)(pMVar12 + 4); + local_178 = *(undefined4 *)(pMVar12 + 8); + local_174 = *(undefined4 *)(pMVar12 + 0xc); + local_170 = *(undefined8 *)(pMVar12 + 0x10); + local_168 = *(undefined8 *)(pMVar12 + 0x18); + local_160 = *(undefined8 *)(pMVar12 + 0x20); + local_158 = *(undefined8 *)(pMVar12 + 0x28); + local_150 = *(undefined8 *)(pMVar12 + 0x30); + local_148 = *(long *)(pMVar12 + 0x38); + local_128 = 0; + local_130 = 0; + if (local_148 != 0) { + piVar8 = (int *)(local_148 + 0x14); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar12 + 0x48); + local_128 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_2); + } + piVar8 = local_1a0; + iVar7 = local_1dc; + uVar5 = _InputArray::depth(param_2,-1); + _OutputArray::create(param_3,iVar7,piVar8,(uVar5 & 7) + (iVar4 + -1) * 8,-1,false,0); + iVar7 = _InputArray::kind((_InputArray *)param_3); + if (iVar7 == 0x10000) { + pMVar12 = *(Mat **)(param_3 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(undefined4 *)pMVar12; + local_11c = *(int *)(pMVar12 + 4); + local_118 = *(int *)(pMVar12 + 8); + local_114 = *(int *)(pMVar12 + 0xc); + local_110 = *(undefined8 *)(pMVar12 + 0x10); + local_108 = *(undefined8 *)(pMVar12 + 0x18); + local_100 = *(undefined8 *)(pMVar12 + 0x20); + local_f8 = *(undefined8 *)(pMVar12 + 0x28); + local_f0 = *(undefined8 *)(pMVar12 + 0x30); + local_e8 = *(long *)(pMVar12 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar8 = (int *)(local_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar12 + 0x48); + local_c8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_3); + } + iVar7 = _InputArray::dims(param_1,-1); + if (iVar7 < 3) { + local_290 = (Mat *)((ulong)local_290 & 0xffffffffffffff00); + pPVar9 = operator_new(0x30); + *(undefined ***)pPVar9 = &PTR_FUN_004f5ad0; + puVar13 = (&PTR_FUN_004f5d20)[(int)(local_180 & 7)]; + *(Mat ***)(pPVar9 + 8) = &local_290; + *(Mat **)(pPVar9 + 0x10) = (Mat *)&local_1e0; + *(Mat **)(pPVar9 + 0x18) = (Mat *)&local_180; + *(Mat **)(pPVar9 + 0x20) = (Mat *)&local_120; + *(undefined **)(pPVar9 + 0x28) = puVar13; + local_290 = (Mat *)CONCAT71(local_290._1_7_,puVar13 != (undefined *)0x0); + plVar10 = operator_new(0x20); + iVar7 = local_118; + *(undefined4 *)(plVar10 + 1) = 1; + plVar10[2] = (long)pPVar9; + *plVar10 = (long)&PTR_FUN_004f5b00; + if ((char)local_290 != '\0') { + local_260 = 0; + local_25c = local_118; + if (local_11c < 3) { + uVar16 = (long)local_114 * (long)local_118; + if (uVar16 >> 0x12 != 0) goto LAB_00285380; +LAB_00285618: + if (*(code **)(*(long *)pPVar9 + 0x10) == FUN_00282788) { + local_2e0 = 0x80000000; + local_2dc = 0x7fffffff; + local_2d8 = 0; + local_2d4 = local_118; + Mat::Mat((Mat *)&local_c0,*(Mat **)(pPVar9 + 0x10),(Range *)&local_2d8,(Range *)&local_2e0 + ); + local_2d0 = 0x80000000; + local_2cc = 0x7fffffff; + local_2c8 = 0; + local_2c4 = iVar7; + Mat::Mat((Mat *)&local_60,*(Mat **)(pPVar9 + 0x20),(Range *)&local_2c8,(Range *)&local_2d0 + ); + uVar5 = **(uint **)(pPVar9 + 0x18); + local_268 = 0; + local_278 = (Mat *)&local_c0; + local_270 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_220,&local_278,&local_2a0,-1); + for (uVar16 = 0; uVar16 < local_200; uVar16 = uVar16 + 1) { + (**(code **)(pPVar9 + 0x28)) + (local_2a0,*(undefined8 *)(*(long *)(pPVar9 + 0x18) + 0x10),local_298, + local_1f8,(local_c0 >> 3 & 0x1ff) + 1,(uVar5 >> 3 & 0x1ff) + 1); + NAryMatIterator::operator++(aNStack_220); + } + if (local_28 != 0) { + piVar8 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + /* catch() { ... } // from try @ 00284f70 with catch @ 0028577c */ + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar7 = 0; + do { + *local_20 = 0; + iVar7 = iVar7 + 1; + local_20 = local_20 + 1; + } while (iVar7 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar8 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + do { + *local_80 = 0; + iVar7 = iVar7 + 1; + local_80 = local_80 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + } + else { + (**(code **)(*(long *)pPVar9 + 0x10))(pPVar9,(Range *)&local_260); + } + } + else { + lVar14 = 0; + uVar16 = 1; + do { + piVar8 = local_e0 + lVar14; + lVar14 = lVar14 + 1; + uVar16 = uVar16 * (long)*piVar8; + } while ((int)lVar14 < local_11c); + if (uVar16 >> 0x12 == 0) goto LAB_00285618; + lVar14 = 0; + uVar16 = 1; + do { + piVar8 = local_e0 + lVar14; + lVar14 = lVar14 + 1; + uVar16 = uVar16 * (long)*piVar8; + } while ((int)lVar14 < local_11c); +LAB_00285380: + uVar16 = uVar16 >> 0x10; + if (uVar16 == 0) { + uVar16 = 1; + } + parallel_for_((Range *)&local_260,pPVar9,(double)uVar16); + } + if ((char)local_290 != '\0') { + plVar1 = plVar10 + 1; + do { + lVar14 = *plVar1; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar2) { + *(int *)plVar1 = (int)lVar14 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar14 == 1) { + lVar14 = *plVar10; + if (*(code **)(lVar14 + 0x10) == FUN_0026cacc) { + if ((long *)plVar10[2] != (long *)0x0) { + (**(code **)(*(long *)plVar10[2] + 8))(); + lVar14 = *plVar10; + } + (**(code **)(lVar14 + 8))(plVar10); + } + else { + (**(code **)(lVar14 + 0x10))(plVar10); + } + } + if (local_e8 != 0) { + piVar8 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + piVar8 = local_e0; + do { + *piVar8 = 0; + iVar4 = iVar4 + 1; + piVar8 = piVar8 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar8 = (int *)(local_148 + 0x14); + do { + iVar4 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar4 = 0; + puVar15 = local_140; + do { + *puVar15 = 0; + iVar4 = iVar4 + 1; + puVar15 = puVar15 + 1; + } while (iVar4 < local_17c); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + if (local_1a8 != 0) { + piVar8 = (int *)(local_1a8 + 0x14); + do { + iVar4 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + if (0 < local_1dc) { + iVar4 = 0; + piVar8 = local_1a0; + do { + *piVar8 = 0; + iVar4 = iVar4 + 1; + piVar8 = piVar8 + 1; + } while (iVar4 < local_1dc); + } + goto LAB_00284fe8; + } + } + plVar1 = plVar10 + 1; + do { + lVar14 = *plVar1; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar2) { + *(int *)plVar1 = (int)lVar14 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar14 == 1) { + lVar14 = *plVar10; + if (*(code **)(lVar14 + 0x10) == FUN_0026cacc) { + if ((long *)plVar10[2] != (long *)0x0) { + (**(code **)(*(long *)plVar10[2] + 8))(); + lVar14 = *plVar10; + } + (**(code **)(lVar14 + 8))(plVar10); + } + else { + (**(code **)(lVar14 + 0x10))(plVar10); + } + } + } + pcVar17 = (code *)(&PTR_FUN_004f5d20)[(int)(local_180 & 7)]; + if (pcVar17 == (code *)0x0) { + local_2c0 = pcVar17; + local_2b8 = pcVar17; + pcVar11 = (char *)String::allocate((String *)&local_2c0,9); + cVar3 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar11 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar11[8] = cVar3; + error(-0xd7,(String *)&local_2c0,"void cv::LUT(cv::InputArray, cv::InputArray, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x1750); + String::deallocate((String *)&local_2c0); + } + local_280 = 0; + local_290 = (Mat *)&local_1e0; + local_288 = (Mat *)&local_120; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_260,&local_290,&local_2b0,-1); + for (uVar16 = 0; uVar16 < local_240; uVar16 = uVar16 + 1) { + (*pcVar17)(local_2b0,local_170,local_2a8,local_238,iVar4,iVar6); + NAryMatIterator::operator++((NAryMatIterator *)&local_260); + } + if (local_e8 != 0) { + piVar8 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + /* catch() { ... } // from try @ 00284634 with catch @ 00284ee0 */ + if (0 < local_11c) { + iVar4 = 0; + piVar8 = local_e0; + do { + *piVar8 = 0; + iVar4 = iVar4 + 1; + /* try { // try from 00284ef4 to 00384f6f has its CatchHandler @ 00284ef4 + catch() { ... } // from try @ 00284ef4 with catch @ 00284ef4 + catch() { ... } // from try @ 00284f74 with catch @ 00284ef4 */ + piVar8 = piVar8 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar8 = (int *)(local_148 + 0x14); + do { + iVar4 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar4 = 0; + puVar15 = local_140; + do { + *puVar15 = 0; + iVar4 = iVar4 + 1; + /* try { // try from 00284f70 to 00384f73 has its CatchHandler @ 0028577c */ + puVar15 = puVar15 + 1; + } while (iVar4 < local_17c); + } + /* try { // try from 00284f74 to 0038578f has its CatchHandler @ 00284ef4 */ + if (local_138 != &local_130) { + fastFree(local_138); + } + if (local_1a8 != 0) { + piVar8 = (int *)(local_1a8 + 0x14); + do { + iVar4 = *piVar8; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + if (0 < local_1dc) { + iVar4 = 0; + piVar8 = local_1a0; + do { + *piVar8 = 0; + iVar4 = iVar4 + 1; + piVar8 = piVar8 + 1; + } while (iVar4 < local_1dc); + } +LAB_00284fe8: + local_1a8 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + local_1d0 = 0; + if (local_198 != &local_190) { + fastFree(local_198); + } + return; +} + + +================================================================== + +### FUNC 00285a00 (1580 bytes) name=normalize + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::normalize(cv::_InputArray const&, cv::_InputOutputArray const&, double, double, int, int, + cv::_InputArray const&) */ + +void cv::normalize(_InputArray *param_1,_InputOutputArray *param_2,double param_3,double param_4, + int param_5,int param_6,_InputArray *param_7) + +{ + int *piVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char cVar6; + int iVar7; + uint uVar8; + char *pcVar9; + ulong uVar10; + Mat **ppMVar11; + Mat *pMVar12; + undefined8 *puVar13; + undefined4 *puVar14; + uint uVar15; + double dVar16; + double dVar17; + undefined4 local_138 [2]; + Mat *local_130; + uint local_128; + uint local_124; + undefined8 local_120; + Mat *pMStack_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + Mat **local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + if (param_5 == 0x20) { + local_c0 = 0.0; + local_60 = 0.0; + dVar17 = param_3; + if (param_4 < param_3) { + dVar17 = param_4; + } + if (param_4 <= param_3) { + param_4 = param_3; + } + minMaxLoc(param_1,(double *)&local_c0,(double *)&local_60,(Point_ *)0x0,(Point_ *)0x0,param_7); + dVar16 = 0.0; + if (DAT_002860b8 < local_60 - local_c0) { + dVar16 = 1.0 / (local_60 - local_c0); + } + dVar16 = (param_4 - dVar17) * dVar16; + dVar17 = dVar17 - dVar16 * local_c0; + } + else if ((param_5 - 1U < 2) || (param_5 == 4)) { + dVar16 = (double)norm(param_1,param_5,param_7); + if (DAT_002860b8 < dVar16) { + dVar16 = param_3 / dVar16; + dVar17 = 0.0; + uVar10 = _InputArray::type(param_1,-1); + uVar15 = (uint)uVar10; + uVar8 = (uint)((uVar10 & 0xffffffff) >> 3); + goto joined_r0x00285cb8; + } + dVar17 = 0.0; + dVar16 = 0.0; + } + else { + local_60 = 0.0; + local_58 = 0; + pcVar9 = (char *)String::allocate((String *)&local_60,0x1d); + cVar6 = s_Unknown_unsupported_norm_type_00463410[0x1c]; + uVar5 = s_Unknown_unsupported_norm_type_00463410._24_4_; + uVar4 = s_Unknown_unsupported_norm_type_00463410._8_8_; + uVar3 = s_Unknown_unsupported_norm_type_00463410._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_Unknown_unsupported_norm_type_00463410._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar5; + pcVar9[0x1c] = cVar6; + *(undefined8 *)pcVar9 = uVar3; + *(undefined8 *)(pcVar9 + 8) = uVar4; + error(-5,(String *)&local_60, + "void cv::normalize(cv::InputArray, cv::InputOutputArray, double, double, int, int, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x17cb); + dVar17 = 0.0; + String::deallocate((String *)&local_60); + dVar16 = 1.0; + } + uVar10 = _InputArray::type(param_1,-1); + uVar15 = (uint)uVar10; + uVar8 = (uint)((uVar10 & 0xffffffff) >> 3); +joined_r0x00285cb8: + if (param_6 < 0) { + cVar6 = _OutputArray::fixedType((_OutputArray *)param_2); + if (cVar6 == '\0') { + param_6 = uVar15 & 7; + } + else { + param_6 = _InputArray::depth((_InputArray *)param_2,-1); + } + } + _OutputArray::createSameSize((_OutputArray *)param_2,param_1,(param_6 & 7U) + (uVar8 & 0x1ff) * 8) + ; + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + uVar8 = *(uint *)pMVar12; + local_b0 = *(undefined8 *)(pMVar12 + 0x10); + local_c0 = *(double *)pMVar12; + local_b8 = *(undefined4 *)(pMVar12 + 8); + local_b4 = *(undefined4 *)(pMVar12 + 0xc); + local_a8 = *(undefined8 *)(pMVar12 + 0x18); + local_a0 = *(undefined8 *)(pMVar12 + 0x20); + local_98 = *(undefined8 *)(pMVar12 + 0x28); + local_90 = *(undefined8 *)(pMVar12 + 0x30); + local_88 = *(long *)(pMVar12 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar6 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar12 + 0x48); + local_68 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_c0 = (double)(ulong)uVar8; + Mat::copySize((Mat *)&local_c0,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar7 = _InputArray::kind((_InputArray *)param_2); + if (iVar7 == 0x10000) { + pMVar12 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar8 = *(uint *)pMVar12; + local_50 = *(undefined8 *)(pMVar12 + 0x10); + local_60 = *(double *)pMVar12; + local_58 = *(undefined8 *)(pMVar12 + 8); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar6 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar12 + 0x48); + local_8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_60 = (double)(ulong)uVar8; + Mat::copySize((Mat *)&local_60,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar8 = _InputArray::empty(param_7); + if ((uVar8 & 0xff) == 0) { + local_d8 = &local_d0; + local_e0 = &pMStack_118; + local_110 = 0; + local_108 = 0; + pMStack_118 = _UNK_002860c8; + local_120 = _DAT_002860c0; + local_124 = uVar8 & 0xff; + local_100 = 0; + uStack_c8 = 0; + local_d0 = 0; + local_138[0] = 0x2010000; + local_f8 = 0; + local_f0 = 0; + local_e8 = 0; + local_130 = (Mat *)&local_120; + local_128 = uVar8 & 0xff; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)local_138,param_6,dVar16,dVar17); + local_128 = 0; + local_124 = 0; + local_138[0] = 0x2010000; + local_130 = (Mat *)&local_60; + Mat::copyTo((Mat *)&local_120,(_OutputArray *)local_138,param_7); + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar7 = *piVar1; + cVar6 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar7 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar7 = 0; + ppMVar11 = local_e0; + do { + *(undefined4 *)ppMVar11 = 0; + iVar7 = iVar7 + 1; + ppMVar11 = (Mat **)((long)ppMVar11 + 4); + } while (iVar7 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + } + else { + local_110 = 0; + local_120 = CONCAT44(local_120._4_4_,0x2010000); + pMStack_118 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_120,param_6,dVar16,dVar17); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar6 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar7 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar7 = 0; + puVar13 = local_20; + do { + *(undefined4 *)puVar13 = 0; + iVar7 = iVar7 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar7 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar6 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar7 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar7 = 0; + puVar14 = local_80; + do { + *puVar14 = 0; + iVar7 = iVar7 + 1; + puVar14 = puVar14 + 1; + } while (iVar7 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002860d0 (704 bytes) name=cvConvertScaleAbs + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvConvertScaleAbs(double param_1,double param_2,cv *param_3,cv *param_4) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + undefined8 *puVar10; + int *piVar11; + int iVar12; + int *piVar13; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,in_x5); + /* try { // try from 00286128 to 003862df has its CatchHandler @ 0028632c */ + iVar12 = local_80[-1]; + if (iVar12 == local_20[-1]) { + if (iVar12 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_0028634c; + } + else if (iVar12 < 1) { +LAB_0028634c: + if ((local_c0 & 0xff8) == (local_60 & 0xfff)) goto LAB_002861b4; + } + else if (*local_80 == *local_20) { + /* catch() { ... } // from try @ 00286128 with catch @ 0028632c */ + piVar11 = local_80; + piVar13 = local_20; + do { + piVar13 = piVar13 + 1; + if (piVar11 == local_80 + (iVar12 - 1)) goto LAB_0028634c; + piVar11 = piVar11 + 1; + /* try { // try from 00286340 to 0038639b has its CatchHandler @ 00286340 + catch() { ... } // from try @ 00286340 with catch @ 00286340 + catch() { ... } // from try @ 00286fa0 with catch @ 00286340 */ + } while (*piVar11 == *piVar13); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_d8,0x3c); + uVar9 = DAT_00463468; + uVar8 = DAT_00463458; + uVar7 = DAT_00463450; + uVar6 = DAT_00463448; + uVar5 = _LAB_00463440; + uVar4 = DAT_00463438; + uVar3 = DAT_00463430; + puVar10[6] = DAT_00463460; + *(undefined4 *)(puVar10 + 7) = uVar9; + *puVar10 = uVar3; + puVar10[1] = uVar4; + puVar10[2] = uVar5; + puVar10[3] = uVar6; + puVar10[4] = uVar7; + puVar10[5] = uVar8; + cv::error(-0xd7,(String *)&local_d8,"void cvConvertScaleAbs(const void*, void*, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x183b); + cv::String::deallocate((String *)&local_d8); +LAB_002861b4: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::convertScaleAbs((_InputArray *)local_f0,(_OutputArray *)&local_d8,param_1,param_2); + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + /* try { // try from 002862e0 to 0038633f has its CatchHandler @ 002858f8 */ + return; +} + + +================================================================== + +### FUNC 002863f4 (692 bytes) name=cvConvertScale + +void cvConvertScale(double param_1,double param_2,cv *param_3,cv *param_4) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + char *pcVar9; + int *piVar10; + int iVar11; + int *piVar12; + AutoBuffer *in_x5; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + /* try { // try from 00286410 to 0038641f has its CatchHandler @ 00287014 */ + /* try { // try from 0028642c to 0038646f has its CatchHandler @ 00287054 */ + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,in_x5); + iVar11 = local_80[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + /* try { // try from 0028668c to 0038669b has its CatchHandler @ 0028701c */ + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_0028665c; + } + else if (iVar11 < 1) { +LAB_0028665c: + if ((local_c0 >> 3 & 0x1ff) + 1 == (local_60 >> 3 & 0x1ff) + 1) goto LAB_002864d4; + } + else if (*local_80 == *local_20) { + piVar10 = local_80; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_80 + (iVar11 - 1)) goto LAB_0028665c; + piVar10 = piVar10 + 1; + /* try { // try from 00286650 to 00386687 has its CatchHandler @ 00287040 */ + } while (*piVar10 == *piVar12); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + /* try { // try from 00286478 to 003864af has its CatchHandler @ 00287050 */ + pcVar9 = (char *)cv::String::allocate((String *)&local_d8,0x38); + uVar8 = s_src_size____dst_size____src_chan_00463470._40_8_; + uVar7 = s_src_size____dst_size____src_chan_00463470._32_8_; + uVar6 = s_src_size____dst_size____src_chan_00463470._24_8_; + uVar5 = s_src_size____dst_size____src_chan_00463470._16_8_; + uVar4 = s_src_size____dst_size____src_chan_00463470._8_8_; + uVar3 = s_src_size____dst_size____src_chan_00463470._0_8_; + *(undefined8 *)(pcVar9 + 0x30) = s_src_size____dst_size____src_chan_00463470._48_8_; + /* try { // try from 002864b4 to 003864c3 has its CatchHandler @ 00287024 */ + *(undefined8 *)pcVar9 = uVar3; + *(undefined8 *)(pcVar9 + 8) = uVar4; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + *(undefined8 *)(pcVar9 + 0x20) = uVar7; + *(undefined8 *)(pcVar9 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_d8,"void cvConvertScale(const void*, void*, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x1845); + cv::String::deallocate((String *)&local_d8); +LAB_002864d4: + /* try { // try from 002864d4 to 003864f3 has its CatchHandler @ 00287048 */ + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_d0 = (Mat *)&local_60; + /* try { // try from 002864fc to 0038650b has its CatchHandler @ 00287010 */ + cv::Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_d8,local_60 & 0xfff,param_1,param_2); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + /* try { // try from 00286518 to 0038655b has its CatchHandler @ 0028704c */ + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + /* try { // try from 00286564 to 0038659b has its CatchHandler @ 00287048 */ + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + /* try { // try from 00286604 to 00386647 has its CatchHandler @ 00287044 */ + } + } + local_88 = 0; + /* try { // try from 002865a0 to 003865af has its CatchHandler @ 00287020 */ + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + /* try { // try from 002865c0 to 003865df has its CatchHandler @ 00287040 */ + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + /* try { // try from 002865e8 to 003865f7 has its CatchHandler @ 0028700c */ + return; +} + + +================================================================== + +### FUNC 0028670c (808 bytes) name=cvLUT + +void cvLUT(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + char *pcVar14; + int iVar15; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + /* try { // try from 0028670c to 0038672b has its CatchHandler @ 00287008 */ + /* try { // try from 00286734 to 0038674b has its CatchHandler @ 00287004 */ + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + /* try { // try from 00286764 to 00386777 has its CatchHandler @ 00287068 */ + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + /* try { // try from 00286780 to 00386af7 has its CatchHandler @ 0028706c */ + if (((local_80[1] != local_e0[1]) || (*local_80 != *local_e0)) || + ((local_60 & 7) + (local_120 & 0xff8) != (local_c0 & 0xfff))) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_138,0x52); + uVar13 = s_dst_size______src_size______dst__004634b0._72_8_; + uVar12 = s_dst_size______src_size______dst__004634b0._64_8_; + uVar11 = s_dst_size______src_size______dst__004634b0._56_8_; + uVar10 = s_dst_size______src_size______dst__004634b0._48_8_; + uVar9 = s_dst_size______src_size______dst__004634b0._40_8_; + uVar8 = s_dst_size______src_size______dst__004634b0._32_8_; + uVar7 = s_dst_size______src_size______dst__004634b0._24_8_; + uVar6 = s_dst_size______src_size______dst__004634b0._16_8_; + uVar5 = s_dst_size______src_size______dst__004634b0._8_8_; + uVar4 = s_dst_size______src_size______dst__004634b0._0_8_; + *(undefined2 *)(pcVar14 + 0x50) = s_dst_size______src_size______dst__004634b0._80_2_; + *(undefined8 *)pcVar14 = uVar4; + *(undefined8 *)(pcVar14 + 8) = uVar5; + *(undefined8 *)(pcVar14 + 0x10) = uVar6; + *(undefined8 *)(pcVar14 + 0x18) = uVar7; + *(undefined8 *)(pcVar14 + 0x20) = uVar8; + *(undefined8 *)(pcVar14 + 0x28) = uVar9; + *(undefined8 *)(pcVar14 + 0x30) = uVar10; + *(undefined8 *)(pcVar14 + 0x38) = uVar11; + *(undefined8 *)(pcVar14 + 0x40) = uVar12; + *(undefined8 *)(pcVar14 + 0x48) = uVar13; + cv::error(-0xd7,(String *)&local_138,"void cvLUT(const void*, void*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x184d); + cv::String::deallocate((String *)&local_138); + } + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_160 = (Mat *)&local_120; + local_148 = (Mat *)&local_60; + local_130 = (Mat *)&local_c0; + cv::LUT((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar15 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar15 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar15 = 0; + do { + *local_20 = 0; + iVar15 = iVar15 + 1; + local_20 = local_20 + 1; + } while (iVar15 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar15 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar15 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar15 = 0; + do { + *local_80 = 0; + iVar15 = iVar15 + 1; + local_80 = local_80 + 1; + } while (iVar15 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar15 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar15 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar15 = 0; + do { + *local_e0 = 0; + iVar15 = iVar15 + 1; + local_e0 = local_e0 + 1; + } while (iVar15 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00286ac0 (1332 bytes) name=cvNormalize + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvNormalize(double param_1,double param_2,cv *param_3,cv *param_4,int param_5,cv *param_6, + undefined8 param_7,AutoBuffer *param_8) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + undefined8 *puVar11; + undefined8 *puVar12; + int iVar13; + undefined4 local_1b0 [2]; + Mat *local_1a8; + undefined4 local_1a0; + undefined4 local_19c; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + undefined8 local_180; + undefined8 uStack_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined4 local_120; + int local_11c; + Mat *local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + /* try { // try from 00286b0c to 00386b17 has its CatchHandler @ 00287064 */ + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_8); + /* try { // try from 00286b20 to 00386bcf has its CatchHandler @ 0028706c */ + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_8); + local_138 = &local_130; + local_140 = &uStack_178; + local_170 = 0; + uStack_168 = 0; + uStack_128 = 0; + local_130 = 0; + local_160 = 0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + uStack_178 = _UNK_002870a8; + local_180 = _DAT_002870a0; + if (param_6 == (cv *)0x0) goto LAB_00286cf8; + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,param_8); + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar11 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + /* try { // try from 00286bec to 00386bf7 has its CatchHandler @ 0028705c */ + if (local_180._4_4_ < 1) { +LAB_00286c1c: + if (2 < local_11c) goto LAB_00286f9c; + /* try { // try from 00286c34 to 00386d53 has its CatchHandler @ 0028706c */ + uStack_178 = local_118; + local_180 = CONCAT44(local_11c,local_120); + *local_138 = *local_d8; + local_138[1] = puVar11[1]; + } + else { + iVar13 = 0; + puVar12 = local_140; + do { + *(undefined4 *)puVar12 = 0; + iVar13 = iVar13 + 1; + /* try { // try from 00286c04 to 00386c2b has its CatchHandler @ 00287060 */ + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar13 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_00286c1c; +LAB_00286f9c: + local_180 = CONCAT44(local_180._4_4_,local_120); + /* try { // try from 00286fa0 to 0038707f has its CatchHandler @ 00286340 */ + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00286cf8: + if (((local_20[1] != local_80[1]) || (*local_20 != *local_80)) || + ((local_c0 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1)) { + local_198 = 0; + local_190 = (Mat *)0x0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_198,0x3c); + uVar10 = DAT_00463540; + uVar9 = _LAB_00463530; + uVar8 = _LAB_00463528; + uVar7 = DAT_00463520; + uVar6 = DAT_00463518; + uVar5 = DAT_00463510; + uVar4 = DAT_00463508; + puVar11[6] = DAT_00463538; + *(undefined4 *)(puVar11 + 7) = uVar10; + /* try { // try from 00286d7c to 00386dc7 has its CatchHandler @ 00287018 */ + *puVar11 = uVar4; + puVar11[1] = uVar5; + puVar11[2] = uVar6; + puVar11[3] = uVar7; + puVar11[4] = uVar8; + puVar11[5] = uVar9; + cv::error(-0xd7,(String *)&local_198, + "void cvNormalize(const CvArr*, CvArr*, double, double, int, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x1857); + cv::String::deallocate((String *)&local_198); + } + local_188 = 0; + local_184 = 0; + /* try { // try from 00286dcc to 00386ddb has its CatchHandler @ 00287000 */ + local_198 = CONCAT44(local_198._4_4_,0x3010000); + local_1a0 = 0; + local_19c = 0; + local_1b0[0] = 0x1010000; + local_110 = 0; + /* try { // try from 00286dec to 00386e0b has its CatchHandler @ 00287034 */ + local_120 = 0x1010000; + local_1a8 = (Mat *)&local_c0; + local_190 = (Mat *)&local_60; + local_118 = (Mat *)&local_180; + cv::normalize((_InputArray *)local_1b0,(_InputOutputArray *)&local_198,param_1,param_2,param_5, + local_60 & 0xfff,(_InputArray *)&local_120); + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 00286e14 to 00386e23 has its CatchHandler @ 00286ff8 */ + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + /* try { // try from 00286e30 to 00386e73 has its CatchHandler @ 00287038 */ + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar13 = 0; + puVar11 = local_140; + do { + *(undefined4 *)puVar11 = 0; + iVar13 = iVar13 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar13 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + /* try { // try from 00286e7c to 00386eb3 has its CatchHandler @ 00287034 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + /* try { // try from 00286eb8 to 00386ec7 has its CatchHandler @ 00286ffc */ + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + /* try { // try from 00286ed8 to 00386ef7 has its CatchHandler @ 0028702c */ + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 00286f00 to 00386f0f has its CatchHandler @ 00286ff4 */ + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + /* try { // try from 00286f1c to 00386f5f has its CatchHandler @ 00287030 */ + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + /* try { // try from 00286f68 to 00386f9f has its CatchHandler @ 0028702c */ + return; +} + + +================================================================== + +### FUNC 002870b0 (216 bytes) name=~vector + +/* std::vector >::~vector() */ + +void __thiscall +std::vector>::~vector(vector> *this) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + Mat *this_00; + Mat *pMVar6; + + this_00 = *(Mat **)this; + pMVar6 = *(Mat **)(this + 8); + if (this_00 != pMVar6) { + do { + if (*(long *)(this_00 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this_00 + 0x38) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(this_00); + } + } + *(undefined8 *)(this_00 + 0x38) = 0; + *(undefined8 *)(this_00 + 0x10) = 0; + *(undefined8 *)(this_00 + 0x28) = 0; + *(undefined8 *)(this_00 + 0x20) = 0; + *(undefined8 *)(this_00 + 0x18) = 0; + if (0 < *(int *)(this_00 + 4)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(this_00 + 0x40); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(this_00 + 4)); + } + if (*(Mat **)(this_00 + 0x48) != this_00 + 0x50) { + cv::fastFree(*(Mat **)(this_00 + 0x48)); + } + this_00 = this_00 + 0x60; + } while (pMVar6 != this_00); + pMVar6 = *(Mat **)this; + } + if (pMVar6 != (Mat *)0x0) { + operator_delete(pMVar6); + return; + } + return; +} + + +================================================================== + +### FUNC 002871a4 (1136 bytes) name=split + +/* cv::split(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::split(_InputArray *param_1,_OutputArray *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + bool bVar4; + Mat *pMVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined2 uVar12; + Mat *pMVar13; + char cVar14; + int iVar15; + uint uVar16; + long lVar17; + char *pcVar18; + int *piVar19; + Mat *pMVar20; + long lVar21; + undefined4 *puVar22; + int iVar23; + uint uVar24; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + Mat *local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar15 = _InputArray::kind(param_1); + if (iVar15 == 0x10000) { + pMVar20 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar20; + local_5c = *(int *)(pMVar20 + 4); + local_58 = *(int *)(pMVar20 + 8); + local_54 = *(int *)(pMVar20 + 0xc); + local_50 = *(long *)(pMVar20 + 0x10); + local_48 = *(undefined8 *)(pMVar20 + 0x18); + local_40 = *(undefined8 *)(pMVar20 + 0x20); + local_38 = *(undefined8 *)(pMVar20 + 0x28); + local_30 = *(undefined8 *)(pMVar20 + 0x30); + local_28 = *(long *)(pMVar20 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar19 = (int *)(local_28 + 0x14); + do { + cVar14 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = *piVar19 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (*(int *)(pMVar20 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar20 + 0x48); + local_8 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar20); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (local_50 != 0) { + if (local_5c < 3) { + lVar17 = (long)local_54 * (long)local_58; + } + else { + lVar21 = 0; + lVar17 = 1; + do { + piVar19 = local_20 + lVar21; + lVar21 = lVar21 + 1; + lVar17 = lVar17 * *piVar19; + } while ((int)lVar21 < local_5c); + } + if (lVar17 != 0) { + cVar14 = _OutputArray::fixedType(param_2); + if ((cVar14 == '\0') || (cVar14 = _InputArray::empty((_InputArray *)param_2), cVar14 != '\0')) + { +LAB_0028722c: + uVar24 = local_60 & 7; + } + else { + uVar16 = _InputArray::type((_InputArray *)param_2,-1); + uVar24 = local_60 & 7; + if (uVar16 != uVar24) { + local_88 = 0; + local_80 = 0; + pcVar18 = (char *)String::allocate((String *)&local_88,0x3a); + uVar12 = s___mv_fixedType_______mv_empty_____00463548._56_2_; + uVar11 = s___mv_fixedType_______mv_empty_____00463548._40_8_; + uVar10 = s___mv_fixedType_______mv_empty_____00463548._32_8_; + uVar9 = s___mv_fixedType_______mv_empty_____00463548._24_8_; + uVar8 = s___mv_fixedType_______mv_empty_____00463548._16_8_; + uVar7 = s___mv_fixedType_______mv_empty_____00463548._8_8_; + uVar6 = s___mv_fixedType_______mv_empty_____00463548._0_8_; + *(undefined8 *)(pcVar18 + 0x30) = s___mv_fixedType_______mv_empty_____00463548._48_8_; + *(undefined2 *)(pcVar18 + 0x38) = uVar12; + *(undefined8 *)pcVar18 = uVar6; + *(undefined8 *)(pcVar18 + 8) = uVar7; + *(undefined8 *)(pcVar18 + 0x10) = uVar8; + *(undefined8 *)(pcVar18 + 0x18) = uVar9; + *(undefined8 *)(pcVar18 + 0x20) = uVar10; + *(undefined8 *)(pcVar18 + 0x28) = uVar11; + error(-0xd7,(String *)&local_88,"void cv::split(cv::InputArray, cv::OutputArrayOfArrays)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x39d); + String::deallocate((String *)&local_88); + goto LAB_0028722c; + } + } + iVar15 = (local_60 >> 3 & 0x1ff) + 1; + iVar2 = local_20[1]; + iVar3 = *local_20; + _OutputArray::create(param_2,iVar15,1,uVar24,-1,false,0); + iVar23 = 0; + do { + local_78 = (Mat *)CONCAT44(iVar3,iVar2); + _OutputArray::create(param_2,(vector *)&local_78,uVar24,iVar23,0,0); + iVar23 = iVar23 + 1; + } while (iVar23 != iVar15); + local_78 = (Mat *)0x0; + local_70 = (Mat *)0x0; + local_68 = 0; + _InputArray::getMatVector((_InputArray *)param_2,(vector *)&local_78); + split((Mat *)&local_60,local_78); + pMVar13 = local_70; + pMVar5 = local_70; + for (pMVar20 = local_78; pMVar20 != pMVar13; pMVar20 = pMVar20 + 0x60) { + if (*(long *)(pMVar20 + 0x38) != 0) { + piVar19 = (int *)(*(long *)(pMVar20 + 0x38) + 0x14); + do { + iVar15 = *piVar19; + cVar14 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + Mat::deallocate(pMVar20); + } + } + *(undefined8 *)(pMVar20 + 0x38) = 0; + *(undefined8 *)(pMVar20 + 0x10) = 0; + *(undefined8 *)(pMVar20 + 0x28) = 0; + *(undefined8 *)(pMVar20 + 0x20) = 0; + *(undefined8 *)(pMVar20 + 0x18) = 0; + if (0 < *(int *)(pMVar20 + 4)) { + iVar15 = 0; + puVar22 = *(undefined4 **)(pMVar20 + 0x40); + do { + *puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = puVar22 + 1; + } while (iVar15 < *(int *)(pMVar20 + 4)); + } + if (*(Mat **)(pMVar20 + 0x48) != pMVar20 + 0x50) { + fastFree(*(Mat **)(pMVar20 + 0x48)); + } + pMVar5 = local_78; + } + if (pMVar5 != (Mat *)0x0) { + operator_delete(pMVar5); + } + if (local_28 != 0) { + piVar19 = (int *)(local_28 + 0x14); + do { + iVar15 = *piVar19; + cVar14 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_5c) { + iVar15 = 0; + piVar19 = local_20; + do { + *piVar19 = 0; + iVar15 = iVar15 + 1; + piVar19 = piVar19 + 1; + } while (iVar15 < local_5c); + } + goto LAB_002873cc; + } + } + _OutputArray::release(param_2); + piVar19 = local_20; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar15 = *piVar1; + cVar14 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_60); + piVar19 = local_20; + } + } + local_20 = piVar19; + if (0 < local_5c) { + iVar15 = 0; + do { + *piVar19 = 0; + iVar15 = iVar15 + 1; + piVar19 = piVar19 + 1; + } while (iVar15 < local_5c); + } +LAB_002873cc: + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00287678 (268 bytes) name=merge + +/* cv::merge(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::merge(_InputArray *param_1,_OutputArray *param_2) + +{ + int *piVar1; + Mat *pMVar2; + char cVar3; + bool bVar4; + Mat *pMVar5; + Mat *pMVar6; + int iVar7; + undefined4 *puVar8; + Mat *local_18; + Mat *local_10; + undefined8 local_8; + + local_18 = (Mat *)0x0; + local_10 = (Mat *)0x0; + local_8 = 0; + _InputArray::getMatVector(param_1,(vector *)&local_18); + pMVar2 = local_18; + if (local_18 == local_10) { + pMVar2 = (Mat *)0x0; + } + merge(pMVar2,((long)local_10 - (long)local_18 >> 5) * -0x5555555555555555,param_2); + pMVar6 = local_10; + pMVar5 = local_10; + for (pMVar2 = local_18; pMVar2 != pMVar6; pMVar2 = pMVar2 + 0x60) { + if (*(long *)(pMVar2 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar2 + 0x38) + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate(pMVar2); + } + } + *(undefined8 *)(pMVar2 + 0x38) = 0; + *(undefined8 *)(pMVar2 + 0x10) = 0; + *(undefined8 *)(pMVar2 + 0x28) = 0; + *(undefined8 *)(pMVar2 + 0x20) = 0; + *(undefined8 *)(pMVar2 + 0x18) = 0; + if (0 < *(int *)(pMVar2 + 4)) { + iVar7 = 0; + puVar8 = *(undefined4 **)(pMVar2 + 0x40); + do { + *puVar8 = 0; + iVar7 = iVar7 + 1; + puVar8 = puVar8 + 1; + } while (iVar7 < *(int *)(pMVar2 + 4)); + } + if (*(Mat **)(pMVar2 + 0x48) != pMVar2 + 0x50) { + fastFree(*(Mat **)(pMVar2 + 0x48)); + } + pMVar5 = local_18; + } + if (pMVar5 != (Mat *)0x0) { + operator_delete(pMVar5); + } + return; +} + + +================================================================== + +### FUNC 002877c0 (2408 bytes) name=cvSplit + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvSplit(cv *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + int *piVar1; + Mat *pMVar2; + int iVar3; + uint uVar4; + char cVar5; + bool bVar6; + ulong uVar7; + Mat *pMVar8; + undefined2 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined4 uVar13; + Mat *pMVar14; + int iVar15; + undefined8 *puVar16; + char *pcVar17; + AutoBuffer *pAVar18; + Mat *pMVar19; + undefined4 *puVar20; + ulong uVar21; + int iVar22; + int *piVar23; + int iVar24; + long lVar25; + long lVar26; + long lVar27; + long lVar28; + byte bVar29; + byte bVar30; + byte bVar31; + byte bVar32; + byte bVar33; + byte bVar34; + long local_1d0; + long lStack_1c8; + long local_1c0; + long lStack_1b8; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + undefined8 local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + Mat *local_158; + Mat *local_150; + Mat *local_148; + long local_140 [4]; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined4 local_c0; + int local_bc; + undefined8 local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + local_1d0 = param_4; + lStack_1c8 = param_5; + local_1c0 = param_2; + lStack_1b8 = param_3; + local_140[0] = param_2; + local_140[1] = param_3; + local_140[2] = param_4; + local_140[3] = param_5; + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,(AutoBuffer *)&local_1d0); + lVar27 = -(ulong)(local_140[0] == 0); + lVar28 = -(ulong)(local_140[1] == 0); + lVar25 = -(ulong)(local_140[2] == 0); + lVar26 = -(ulong)(local_140[3] == 0); + bVar29 = (byte)((ulong)_DAT_00288290 >> 8); + bVar30 = (byte)((ulong)_DAT_00288290 >> 0x10); + bVar31 = (byte)((ulong)_DAT_00288290 >> 0x18); + bVar32 = (byte)((ulong)_UNK_00288298 >> 8); + bVar33 = (byte)((ulong)_UNK_00288298 >> 0x10); + bVar34 = (byte)((ulong)_UNK_00288298 >> 0x18); + iVar24 = CONCAT13(bVar31 & ~(byte)((ulong)lVar27 >> 0x18), + CONCAT12(bVar30 & ~(byte)((ulong)lVar27 >> 0x10), + CONCAT11(bVar29 & ~(byte)((ulong)lVar27 >> 8), + (byte)_DAT_00288290 & ~(byte)lVar27))) + + CONCAT13(bVar34 & ~(byte)((ulong)lVar28 >> 0x18), + CONCAT12(bVar33 & ~(byte)((ulong)lVar28 >> 0x10), + CONCAT11(bVar32 & ~(byte)((ulong)lVar28 >> 8), + (byte)_UNK_00288298 & ~(byte)lVar28))) + + CONCAT13(bVar31 & ~(byte)((ulong)lVar25 >> 0x18), + CONCAT12(bVar30 & ~(byte)((ulong)lVar25 >> 0x10), + CONCAT11(bVar29 & ~(byte)((ulong)lVar25 >> 8), + (byte)_DAT_00288290 & ~(byte)lVar25))) + + CONCAT13(bVar34 & ~(byte)((ulong)lVar26 >> 0x18), + CONCAT12(bVar33 & ~(byte)((ulong)lVar26 >> 0x10), + CONCAT11(bVar32 & ~(byte)((ulong)lVar26 >> 8), + (byte)_UNK_00288298 & ~(byte)lVar26))); + if (iVar24 == 0) { + local_1a8 = 0; + local_1a0 = 0; + puVar20 = (undefined4 *)cv::String::allocate((String *)&local_1a8,6); + uVar9 = DAT_0046358c; + *puVar20 = DAT_00463588; + *(undefined2 *)(puVar20 + 1) = uVar9; + cv::error(-0xd7,(String *)&local_1a8,"void cvSplit(const void*, void*, void*, void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x17e8); + cv::String::deallocate((String *)&local_1a8); + } + local_100 = 0; + local_d8 = &local_d0; + local_e0 = &uStack_118; + local_158 = (Mat *)0x0; + uVar21 = (ulong)iVar24; + uStack_c8 = 0; + local_d0 = 0; + local_150 = (Mat *)0x0; + local_f8 = 0; + local_110 = 0; + local_108 = 0; + local_148 = (Mat *)0x0; + uStack_118 = _UNK_002882a8; + local_120 = _DAT_002882a0; + local_f0 = 0; + local_e8 = 0; + if (iVar24 == 0) { + local_148 = (Mat *)0x0; + local_150 = (Mat *)0x0; + } + else { + pMVar19 = operator_new(uVar21 * 0x60); + local_148 = pMVar19 + uVar21 * 0x60; + local_158 = pMVar19; + local_150 = pMVar19; + lVar25 = local_e8; + for (uVar7 = uVar21; uVar7 != 0; uVar7 = uVar7 - 1) { + if (pMVar19 != (Mat *)0x0) { + *(undefined4 *)pMVar19 = (undefined4)local_120; + local_120._4_4_ = (int)((ulong)local_120 >> 0x20); + *(int *)(pMVar19 + 4) = local_120._4_4_; + *(undefined4 *)(pMVar19 + 8) = (undefined4)uStack_118; + uStack_118._4_4_ = (undefined4)((ulong)uStack_118 >> 0x20); + *(undefined8 *)(pMVar19 + 0x10) = local_110; + *(undefined4 *)(pMVar19 + 0xc) = uStack_118._4_4_; + *(undefined8 *)(pMVar19 + 0x18) = local_108; + *(undefined8 *)(pMVar19 + 0x20) = local_100; + *(undefined8 *)(pMVar19 + 0x28) = local_f8; + *(undefined8 *)(pMVar19 + 0x30) = local_f0; + *(long *)(pMVar19 + 0x38) = lVar25; + *(Mat **)(pMVar19 + 0x40) = pMVar19 + 8; + *(Mat **)(pMVar19 + 0x48) = pMVar19 + 0x50; + *(undefined8 *)(pMVar19 + 0x58) = 0; + *(undefined8 *)(pMVar19 + 0x50) = 0; + if (lVar25 != 0) { + piVar23 = (int *)(lVar25 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar6) { + *piVar23 = *piVar23 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (local_120._4_4_ < 3) { + puVar16 = *(undefined8 **)(pMVar19 + 0x48); + *puVar16 = *local_d8; + puVar16[1] = local_d8[1]; + lVar25 = local_e8; + } + else { + *(undefined4 *)(pMVar19 + 4) = 0; + cv::Mat::copySize(pMVar19,(Mat *)&local_120); + lVar25 = local_e8; + } + } + pMVar19 = pMVar19 + 0x60; + } + local_150 = local_148; + if (lVar25 != 0) { + piVar23 = (int *)(lVar25 + 0x14); + do { + iVar15 = *piVar23; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar6) { + *piVar23 = iVar15 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar15 = 0; + puVar16 = local_e0; + do { + *(undefined4 *)puVar16 = 0; + iVar15 = iVar15 + 1; + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (iVar15 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + lVar25 = (long)(iVar24 * 2); + if (iVar24 * 2 == 0) { + piVar23 = (int *)0x0; + } + else { + piVar23 = operator_new(lVar25 << 2); + } + if (lVar25 != 0) { + memset(piVar23,0,lVar25 << 2); + } + lVar25 = 0; + iVar15 = 0; + do { + pMVar19 = local_158; + if ((cv *)local_140[lVar25] != (cv *)0x0) { + lVar26 = (long)iVar15 * 0x60; + pMVar2 = local_158 + lVar26; + cv::cvarrToMat((cv *)local_140[lVar25],(void *)0x0,true,false,0,(AutoBuffer *)local_158); + if (pMVar2 != (Mat *)&local_c0) { + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(pMVar2 + 0x38) == 0) { +LAB_00287a14: + *(undefined8 *)(pMVar2 + 0x38) = 0; + *(undefined8 *)(pMVar2 + 0x10) = 0; + *(undefined8 *)(pMVar2 + 0x28) = 0; + *(undefined8 *)(pMVar2 + 0x20) = 0; + *(undefined8 *)(pMVar2 + 0x18) = 0; + if (0 < *(int *)(pMVar2 + 4)) goto LAB_00287a34; +LAB_00287f3c: + *(undefined4 *)(pMVar19 + lVar26) = local_c0; +LAB_00287a64: + if (2 < local_bc) goto LAB_00287e30; + *(int *)(pMVar2 + 4) = local_bc; + *(undefined4 *)(pMVar2 + 8) = (undefined4)local_b8; + puVar16 = *(undefined8 **)(pMVar2 + 0x48); + *(undefined4 *)(pMVar2 + 0xc) = local_b8._4_4_; + *puVar16 = *local_78; + puVar16[1] = local_78[1]; + } + else { + piVar1 = (int *)(*(long *)(pMVar2 + 0x38) + 0x14); + do { + iVar22 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar22 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar22 != 1) goto LAB_00287a14; + cv::Mat::deallocate(pMVar2); + *(undefined8 *)(pMVar2 + 0x38) = 0; + *(undefined8 *)(pMVar2 + 0x10) = 0; + *(undefined8 *)(pMVar2 + 0x28) = 0; + *(undefined8 *)(pMVar2 + 0x20) = 0; + *(undefined8 *)(pMVar2 + 0x18) = 0; + if (*(int *)(pMVar2 + 4) < 1) goto LAB_00287f3c; +LAB_00287a34: + iVar22 = 0; + puVar20 = *(undefined4 **)(pMVar2 + 0x40); + do { + *puVar20 = 0; + iVar22 = iVar22 + 1; + iVar3 = *(int *)(pMVar2 + 4); + puVar20 = puVar20 + 1; + } while (iVar22 < iVar3); + *(undefined4 *)(pMVar19 + lVar26) = local_c0; + if (iVar3 < 3) goto LAB_00287a64; +LAB_00287e30: + cv::Mat::copySize(pMVar2,(Mat *)&local_c0); + } + *(undefined8 *)(pMVar2 + 0x18) = uStack_a8; + *(undefined8 *)(pMVar2 + 0x10) = local_b0; + *(undefined8 *)(pMVar2 + 0x28) = uStack_98; + *(undefined8 *)(pMVar2 + 0x20) = local_a0; + *(long *)(pMVar2 + 0x38) = lStack_88; + *(undefined8 *)(pMVar2 + 0x30) = local_90; + } + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar22 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar22 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar22 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar22 = 0; + puVar20 = local_80; + do { + *puVar20 = 0; + iVar22 = iVar22 + 1; + puVar20 = puVar20 + 1; + } while (iVar22 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + pAVar18 = (AutoBuffer *)(local_158 + lVar26); + if (((*(int **)(pAVar18 + 0x40))[1] != local_20[1]) || + (**(int **)(pAVar18 + 0x40) != *local_20)) { + local_198 = 0; + local_190 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_198,0x1c); + uVar12 = s_dvec_j__size______src_size___00463590._16_8_; + uVar11 = s_dvec_j__size______src_size___00463590._8_8_; + uVar10 = s_dvec_j__size______src_size___00463590._0_8_; + *(undefined4 *)(pcVar17 + 0x18) = s_dvec_j__size______src_size___00463590._24_4_; + *(undefined8 *)(pcVar17 + 0x10) = uVar12; + *(undefined8 *)pcVar17 = uVar10; + *(undefined8 *)(pcVar17 + 8) = uVar11; + cv::error(-0xd7,(String *)&local_198,"void cvSplit(const void*, void*, void*, void*, void*)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x17f1); + cv::String::deallocate((String *)&local_198); + pAVar18 = (AutoBuffer *)(local_158 + lVar26); + } + uVar4 = *(uint *)pAVar18; + if ((uVar4 & 7) != (local_60 & 7)) { + local_188 = 0; + local_180 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_188,0x1e); + uVar9 = s_dvec_j__depth______src_depth___004635b0._28_2_; + uVar13 = s_dvec_j__depth______src_depth___004635b0._24_4_; + uVar11 = s_dvec_j__depth______src_depth___004635b0._8_8_; + uVar10 = s_dvec_j__depth______src_depth___004635b0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_dvec_j__depth______src_depth___004635b0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar13; + *(undefined2 *)(pcVar17 + 0x1c) = uVar9; + *(undefined8 *)pcVar17 = uVar10; + *(undefined8 *)(pcVar17 + 8) = uVar11; + cv::error(-0xd7,(String *)&local_188,"void cvSplit(const void*, void*, void*, void*, void*)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x17f2); + cv::String::deallocate((String *)&local_188); + uVar4 = *(uint *)(local_158 + lVar26); + } + if ((uVar4 >> 3 & 0x1ff) != 0) { + local_178 = 0; + local_170 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_178,0x17); + cVar5 = s_dvec_j__channels______1_004635d0[0x16]; + uVar9 = s_dvec_j__channels______1_004635d0._20_2_; + uVar11 = s_dvec_j__channels______1_004635d0._8_8_; + uVar10 = s_dvec_j__channels______1_004635d0._0_8_; + *(undefined4 *)(pcVar17 + 0x10) = s_dvec_j__channels______1_004635d0._16_4_; + *(undefined2 *)(pcVar17 + 0x14) = uVar9; + pcVar17[0x16] = cVar5; + *(undefined8 *)pcVar17 = uVar10; + *(undefined8 *)(pcVar17 + 8) = uVar11; + cv::error(-0xd7,(String *)&local_178,"void cvSplit(const void*, void*, void*, void*, void*)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x17f3); + cv::String::deallocate((String *)&local_178); + } + if ((int)(local_60 >> 3 & 0x1ff) < (int)lVar25) { + local_168 = 0; + local_160 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_168,0x12); + uVar11 = s_i_<_src_channels()_004635e8._8_8_; + uVar10 = s_i_<_src_channels()_004635e8._0_8_; + *(undefined2 *)(pcVar17 + 0x10) = s_i_<_src_channels()_004635e8._16_2_; + *(undefined8 *)pcVar17 = uVar10; + *(undefined8 *)(pcVar17 + 8) = uVar11; + cv::error(-0xd7,(String *)&local_168,"void cvSplit(const void*, void*, void*, void*, void*)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x17f4); + cv::String::deallocate((String *)&local_168); + } + piVar23[iVar15 * 2] = (int)lVar25; + piVar23[iVar15 * 2 + 1] = iVar15; + iVar15 = iVar15 + 1; + } + lVar25 = lVar25 + 1; + if (lVar25 == 4) { + if ((local_60 >> 3 & 0x1ff) + 1 == iVar24) { + local_120 = CONCAT44(local_120._4_4_,0x1010000); + local_110 = 0; + local_b0 = 0; + local_c0 = 0x2050000; + uStack_118 = (Mat *)&local_60; + local_b8 = &local_158; + cv::split((_InputArray *)&local_120,(_OutputArray *)&local_c0); + } + else { + cv::mixChannels((Mat *)&local_60,1,local_158,uVar21,piVar23,uVar21); + } + pMVar19 = local_158; + pMVar2 = local_150; + pMVar8 = local_150; + if (piVar23 != (int *)0x0) { + operator_delete(piVar23); + pMVar19 = local_158; + pMVar2 = local_150; + pMVar8 = local_150; + } + for (; pMVar14 = local_150, pMVar19 != local_150; pMVar19 = pMVar19 + 0x60) { + local_150 = pMVar8; + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar23 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar24 = *piVar23; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar6) { + *piVar23 = iVar24 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar24 == 1) { + cv::Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar24 = 0; + puVar20 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar20 = 0; + iVar24 = iVar24 + 1; + puVar20 = puVar20 + 1; + } while (iVar24 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + cv::fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar2 = local_158; + pMVar8 = local_150; + local_150 = pMVar14; + } + local_150 = pMVar8; + if (pMVar2 != (Mat *)0x0) { + operator_delete(pMVar2); + } + if (local_28 != 0) { + piVar23 = (int *)(local_28 + 0x14); + do { + iVar24 = *piVar23; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar6) { + *piVar23 = iVar24 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar24 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar24 = 0; + do { + *local_20 = 0; + iVar24 = iVar24 + 1; + local_20 = local_20 + 1; + } while (iVar24 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 002882b0 (2156 bytes) name=cvMerge + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMerge(long param_1,long param_2,long param_3,long param_4,cv *param_5) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + ulong uVar5; + Mat *pMVar6; + Mat *pMVar7; + ushort uVar8; + AutoBuffer *pAVar9; + Mat *pMVar10; + int iVar11; + undefined8 *puVar12; + int *piVar13; + void *__dest; + Mat *pMVar14; + undefined4 *puVar15; + int *piVar16; + ulong uVar17; + int iVar18; + AutoBuffer *pAVar19; + int *piVar20; + int iVar21; + long lVar22; + long lVar23; + long lVar24; + long lVar25; + byte bVar26; + byte bVar27; + byte bVar28; + byte bVar29; + byte bVar30; + byte bVar31; + long local_1a0; + long lStack_198; + long local_190; + long lStack_188; + undefined8 local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + AutoBuffer *local_158; + Mat *local_150; + Mat *local_148; + long local_140 [4]; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined4 local_c0; + int local_bc; + undefined8 local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + pAVar19 = (AutoBuffer *)&local_1a0; + local_1a0 = param_3; + lStack_198 = param_4; + local_190 = param_1; + lStack_188 = param_2; + local_140[0] = param_1; + local_140[1] = param_2; + local_140[2] = param_3; + local_140[3] = param_4; + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,(AutoBuffer *)&local_1a0); + lVar24 = -(ulong)(local_140[0] == 0); + lVar25 = -(ulong)(local_140[1] == 0); + lVar22 = -(ulong)(local_140[2] == 0); + lVar23 = -(ulong)(local_140[3] == 0); + bVar26 = (byte)((ulong)_DAT_00288c50 >> 8); + bVar27 = (byte)((ulong)_DAT_00288c50 >> 0x10); + bVar28 = (byte)((ulong)_DAT_00288c50 >> 0x18); + bVar29 = (byte)((ulong)_UNK_00288c58 >> 8); + bVar30 = (byte)((ulong)_UNK_00288c58 >> 0x10); + bVar31 = (byte)((ulong)_UNK_00288c58 >> 0x18); + iVar21 = CONCAT13(bVar28 & ~(byte)((ulong)lVar24 >> 0x18), + CONCAT12(bVar27 & ~(byte)((ulong)lVar24 >> 0x10), + CONCAT11(bVar26 & ~(byte)((ulong)lVar24 >> 8), + (byte)_DAT_00288c50 & ~(byte)lVar24))) + + CONCAT13(bVar31 & ~(byte)((ulong)lVar25 >> 0x18), + CONCAT12(bVar30 & ~(byte)((ulong)lVar25 >> 0x10), + CONCAT11(bVar29 & ~(byte)((ulong)lVar25 >> 8), + (byte)_UNK_00288c58 & ~(byte)lVar25))) + + CONCAT13(bVar28 & ~(byte)((ulong)lVar22 >> 0x18), + CONCAT12(bVar27 & ~(byte)((ulong)lVar22 >> 0x10), + CONCAT11(bVar26 & ~(byte)((ulong)lVar22 >> 8), + (byte)_DAT_00288c50 & ~(byte)lVar22))) + + CONCAT13(bVar31 & ~(byte)((ulong)lVar23 >> 0x18), + CONCAT12(bVar30 & ~(byte)((ulong)lVar23 >> 0x10), + CONCAT11(bVar29 & ~(byte)((ulong)lVar23 >> 8), + (byte)_UNK_00288c58 & ~(byte)lVar23))); + if (iVar21 == 0) { + local_178 = 0; + local_170 = 0; + puVar15 = (undefined4 *)cv::String::allocate((String *)&local_178,6); + uVar8 = DAT_0046358c; + pAVar19 = (AutoBuffer *)(ulong)DAT_0046358c; + *puVar15 = DAT_00463588; + *(ushort *)(puVar15 + 1) = uVar8; + cv::error(-0xd7,(String *)&local_178, + "void cvMerge(const void*, const void*, const void*, const void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x180c); + cv::String::deallocate((String *)&local_178); + } + local_100 = 0; + local_d8 = &local_d0; + local_e0 = &uStack_118; + local_158 = (AutoBuffer *)0x0; + uVar17 = (ulong)iVar21; + uStack_c8 = 0; + local_d0 = 0; + local_150 = (Mat *)0x0; + local_f8 = 0; + local_110 = 0; + local_108 = 0; + local_148 = (Mat *)0x0; + uStack_118 = _UNK_00288c68; + local_120 = _DAT_00288c60; + local_f0 = 0; + local_e8 = 0; + if (iVar21 == 0) { + local_148 = (Mat *)0x0; + local_150 = (Mat *)0x0; + } + else { + pMVar14 = operator_new(uVar17 * 0x60); + local_148 = pMVar14 + uVar17 * 0x60; + local_158 = (AutoBuffer *)pMVar14; + local_150 = pMVar14; + lVar22 = local_e8; + for (uVar5 = uVar17; uVar5 != 0; uVar5 = uVar5 - 1) { + if (pMVar14 != (Mat *)0x0) { + *(undefined4 *)pMVar14 = (undefined4)local_120; + local_120._4_4_ = (int)((ulong)local_120 >> 0x20); + *(int *)(pMVar14 + 4) = local_120._4_4_; + *(undefined4 *)(pMVar14 + 8) = (undefined4)uStack_118; + uStack_118._4_4_ = (undefined4)((ulong)uStack_118 >> 0x20); + *(undefined8 *)(pMVar14 + 0x10) = local_110; + *(undefined4 *)(pMVar14 + 0xc) = uStack_118._4_4_; + *(undefined8 *)(pMVar14 + 0x18) = local_108; + *(undefined8 *)(pMVar14 + 0x20) = local_100; + *(undefined8 *)(pMVar14 + 0x28) = local_f8; + *(undefined8 *)(pMVar14 + 0x30) = local_f0; + *(long *)(pMVar14 + 0x38) = lVar22; + *(Mat **)(pMVar14 + 0x40) = pMVar14 + 8; + *(Mat **)(pMVar14 + 0x48) = pMVar14 + 0x50; + *(undefined8 *)(pMVar14 + 0x58) = 0; + *(undefined8 *)(pMVar14 + 0x50) = 0; + if (lVar22 != 0) { + piVar20 = (int *)(lVar22 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = *piVar20 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (local_120._4_4_ < 3) { + puVar12 = *(undefined8 **)(pMVar14 + 0x48); + *puVar12 = *local_d8; + puVar12[1] = local_d8[1]; + lVar22 = local_e8; + } + else { + *(undefined4 *)(pMVar14 + 4) = 0; + cv::Mat::copySize(pMVar14,(Mat *)&local_120); + lVar22 = local_e8; + } + } + pMVar14 = pMVar14 + 0x60; + } + local_150 = local_148; + if (lVar22 != 0) { + piVar20 = (int *)(lVar22 + 0x14); + do { + iVar11 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar11 = 0; + puVar12 = local_e0; + do { + *(undefined4 *)puVar12 = 0; + iVar11 = iVar11 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar11 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + lVar22 = (long)(iVar21 * 2); + if (iVar21 * 2 == 0) { + piVar20 = (int *)0x0; + } + else { + piVar20 = operator_new(lVar22 << 2); + } + if (lVar22 != 0) { + memset(piVar20,0,lVar22 << 2); + } + lVar22 = 0; + iVar11 = 0; + do { + pAVar9 = local_158; + if ((cv *)local_140[lVar22] != (cv *)0x0) { + lVar23 = (long)iVar11 * 0x60; + pMVar14 = (Mat *)(local_158 + lVar23); + cv::cvarrToMat((cv *)local_140[lVar22],(void *)0x0,true,false,0,pAVar19); + if (pMVar14 != (Mat *)&local_c0) { + if (lStack_88 != 0) { + piVar13 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar4) { + *piVar13 = *piVar13 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(pMVar14 + 0x38) == 0) { +LAB_00288504: + *(undefined8 *)(pMVar14 + 0x38) = 0; + *(undefined8 *)(pMVar14 + 0x10) = 0; + *(undefined8 *)(pMVar14 + 0x28) = 0; + *(undefined8 *)(pMVar14 + 0x20) = 0; + *(undefined8 *)(pMVar14 + 0x18) = 0; + if (0 < *(int *)(pMVar14 + 4)) goto LAB_00288524; +LAB_00288910: + *(undefined4 *)(pAVar9 + lVar23) = local_c0; +LAB_00288550: + if (2 < local_bc) goto LAB_00288850; + *(int *)(pMVar14 + 4) = local_bc; + *(undefined4 *)(pMVar14 + 8) = (undefined4)local_b8; + puVar12 = *(undefined8 **)(pMVar14 + 0x48); + *(undefined4 *)(pMVar14 + 0xc) = local_b8._4_4_; + *puVar12 = *local_78; + puVar12[1] = local_78[1]; + } + else { + piVar13 = (int *)(*(long *)(pMVar14 + 0x38) + 0x14); + do { + iVar18 = *piVar13; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar4) { + *piVar13 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 != 1) goto LAB_00288504; + cv::Mat::deallocate(pMVar14); + *(undefined8 *)(pMVar14 + 0x38) = 0; + *(undefined8 *)(pMVar14 + 0x10) = 0; + *(undefined8 *)(pMVar14 + 0x28) = 0; + *(undefined8 *)(pMVar14 + 0x20) = 0; + *(undefined8 *)(pMVar14 + 0x18) = 0; + if (*(int *)(pMVar14 + 4) < 1) goto LAB_00288910; +LAB_00288524: + iVar18 = 0; + puVar15 = *(undefined4 **)(pMVar14 + 0x40); + do { + *puVar15 = 0; + iVar18 = iVar18 + 1; + iVar2 = *(int *)(pMVar14 + 4); + puVar15 = puVar15 + 1; + } while (iVar18 < iVar2); + *(undefined4 *)(pAVar9 + lVar23) = local_c0; + if (iVar2 < 3) goto LAB_00288550; +LAB_00288850: + cv::Mat::copySize(pMVar14,(Mat *)&local_c0); + } + *(undefined8 *)(pMVar14 + 0x18) = uStack_a8; + *(undefined8 *)(pMVar14 + 0x10) = local_b0; + *(undefined8 *)(pMVar14 + 0x28) = uStack_98; + *(undefined8 *)(pMVar14 + 0x20) = local_a0; + *(long *)(pMVar14 + 0x38) = lStack_88; + *(undefined8 *)(pMVar14 + 0x30) = local_90; + } + if (lStack_88 != 0) { + piVar13 = (int *)(lStack_88 + 0x14); + do { + iVar18 = *piVar13; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar4) { + *piVar13 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar18 = 0; + puVar15 = local_80; + do { + *puVar15 = 0; + iVar18 = iVar18 + 1; + puVar15 = puVar15 + 1; + } while (iVar18 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + piVar13 = *(int **)(local_158 + lVar23 + 0x40); + iVar18 = piVar13[-1]; + pAVar19 = local_158; + if (iVar18 == local_20[-1]) { + if (iVar18 == 2) { + if ((*piVar13 == *local_20) && (piVar13[1] == local_20[1])) goto LAB_002888a8; + goto LAB_0028864c; + } + if (0 < iVar18) { + if (*piVar13 == *local_20) { + piVar1 = piVar13 + (iVar18 - 1); + piVar16 = local_20; + do { + piVar16 = piVar16 + 1; + if (piVar13 == piVar1) goto LAB_002888a8; + piVar13 = piVar13 + 1; + } while (*piVar13 == *piVar16); + } + goto LAB_0028864c; + } +LAB_002888a8: + if ((((*(uint *)(local_158 + lVar23) & 7) != (local_60 & 7)) || + ((*(uint *)(local_158 + lVar23) >> 3 & 0x1ff) != 0)) || + ((int)(local_60 >> 3 & 0x1ff) < (int)lVar22)) goto LAB_0028864c; + } + else { +LAB_0028864c: + local_168 = 0; + local_160 = 0; + __dest = (void *)cv::String::allocate((String *)&local_168,0x6b); + memcpy(__dest,&DAT_00463600,0x6b); + cv::error(-0xd7,(String *)&local_168, + "void cvMerge(const void*, const void*, const void*, const void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x1817); + cv::String::deallocate((String *)&local_168); + } + iVar18 = iVar11 * 2; + piVar20[iVar18] = iVar11; + iVar11 = iVar11 + 1; + piVar20[iVar18 + 1] = (int)lVar22; + } + lVar22 = lVar22 + 1; + if (lVar22 == 4) { + if ((local_60 >> 3 & 0x1ff) + 1 == iVar21) { + local_120 = CONCAT44(local_120._4_4_,0x1050000); + local_110 = 0; + local_b0 = 0; + local_c0 = 0x2010000; + uStack_118 = &local_158; + local_b8 = (Mat *)&local_60; + cv::merge((_InputArray *)&local_120,(_OutputArray *)&local_c0); + } + else { + cv::mixChannels((Mat *)local_158,uVar17,(Mat *)&local_60,1,piVar20,uVar17); + } + pMVar14 = (Mat *)local_158; + pMVar6 = local_150; + pMVar7 = local_150; + if (piVar20 != (int *)0x0) { + operator_delete(piVar20); + pMVar14 = (Mat *)local_158; + pMVar6 = local_150; + pMVar7 = local_150; + } + for (; pMVar10 = local_150, pMVar14 != local_150; pMVar14 = pMVar14 + 0x60) { + local_150 = pMVar7; + if (*(long *)(pMVar14 + 0x38) != 0) { + piVar20 = (int *)(*(long *)(pMVar14 + 0x38) + 0x14); + do { + iVar21 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar21 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar21 == 1) { + cv::Mat::deallocate(pMVar14); + } + } + *(undefined8 *)(pMVar14 + 0x38) = 0; + *(undefined8 *)(pMVar14 + 0x10) = 0; + *(undefined8 *)(pMVar14 + 0x28) = 0; + *(undefined8 *)(pMVar14 + 0x20) = 0; + *(undefined8 *)(pMVar14 + 0x18) = 0; + if (0 < *(int *)(pMVar14 + 4)) { + iVar21 = 0; + puVar15 = *(undefined4 **)(pMVar14 + 0x40); + do { + *puVar15 = 0; + iVar21 = iVar21 + 1; + puVar15 = puVar15 + 1; + } while (iVar21 < *(int *)(pMVar14 + 4)); + } + if (*(Mat **)(pMVar14 + 0x48) != pMVar14 + 0x50) { + cv::fastFree(*(Mat **)(pMVar14 + 0x48)); + } + pMVar6 = (Mat *)local_158; + pMVar7 = local_150; + local_150 = pMVar10; + } + local_150 = pMVar7; + if (pMVar6 != (Mat *)0x0) { + operator_delete(pMVar6); + } + if (local_28 != 0) { + piVar20 = (int *)(local_28 + 0x14); + do { + iVar21 = *piVar20; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar4) { + *piVar20 = iVar21 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar21 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar21 = 0; + do { + *local_20 = 0; + iVar21 = iVar21 + 1; + local_20 = local_20 + 1; + } while (iVar21 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 00288c70 (392 bytes) name=FUN_00288c70 + +void FUN_00288c70(long *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + Mat *pMVar4; + Mat *pMVar5; + undefined4 *puVar6; + int iVar7; + Mat *pMVar8; + Mat *pMVar9; + + pMVar9 = (Mat *)(param_1 + 2); + pMVar5 = (Mat *)*param_1; + if (pMVar5 != pMVar9) { + if (pMVar5 != (Mat *)0x0) { + pMVar8 = pMVar5 + *(long *)(pMVar5 + -8) * 0x60; + pMVar4 = pMVar8; + if (pMVar5 != pMVar8) { + do { + pMVar8 = pMVar4 + -0x60; + if (*(long *)(pMVar4 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar4 + -0x28) + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + cv::Mat::deallocate(pMVar8); + } + } + *(undefined8 *)(pMVar4 + -0x28) = 0; + *(undefined8 *)(pMVar4 + -0x50) = 0; + *(undefined8 *)(pMVar4 + -0x38) = 0; + *(undefined8 *)(pMVar4 + -0x40) = 0; + *(undefined8 *)(pMVar4 + -0x48) = 0; + if (0 < *(int *)(pMVar4 + -0x5c)) { + iVar7 = 0; + puVar6 = *(undefined4 **)(pMVar4 + -0x20); + do { + *puVar6 = 0; + iVar7 = iVar7 + 1; + puVar6 = puVar6 + 1; + } while (iVar7 < *(int *)(pMVar4 + -0x5c)); + } + if (*(Mat **)(pMVar4 + -0x18) != pMVar4 + -0x10) { + cv::fastFree(*(Mat **)(pMVar4 + -0x18)); + } + pMVar4 = pMVar8; + } while ((Mat *)*param_1 != pMVar8); + } + operator_delete__(pMVar8 + -8); + } + *param_1 = (long)pMVar9; + param_1[1] = 0x12; + } + pMVar5 = (Mat *)(param_1 + 0xda); + do { + pMVar8 = pMVar5 + -0x60; + if (*(long *)(pMVar5 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar5 + -0x28) + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + cv::Mat::deallocate(pMVar8); + } + } + *(long *)(pMVar5 + -0x28) = 0; + *(long *)(pMVar5 + -0x50) = 0; + /* try { // try from 00288d90 to 00388e1f has its CatchHandler @ 00288d90 + catch() { ... } // from try @ 00288d90 with catch @ 00288d90 + catch() { ... } // from try @ 00288e30 with catch @ 00288d90 + catch() { ... } // from try @ 00289164 with catch @ 00288d90 + catch() { ... } // from try @ 00289484 with catch @ 00288d90 + catch() { ... } // from try @ 00289794 with catch @ 00288d90 + catch() { ... } // from try @ 00289818 with catch @ 00288d90 */ + *(long *)(pMVar5 + -0x38) = 0; + *(long *)(pMVar5 + -0x40) = 0; + *(long *)(pMVar5 + -0x48) = 0; + if (0 < *(int *)(pMVar5 + -0x5c)) { + iVar7 = 0; + puVar6 = *(undefined4 **)(pMVar5 + -0x20); + do { + *puVar6 = 0; + iVar7 = iVar7 + 1; + puVar6 = puVar6 + 1; + } while (iVar7 < *(int *)(pMVar5 + -0x5c)); + } + if (*(Mat **)(pMVar5 + -0x18) != pMVar5 + -0x10) { + cv::fastFree(*(Mat **)(pMVar5 + -0x18)); + } + pMVar5 = pMVar8; + } while (pMVar8 != pMVar9); + return; +} + + +================================================================== + +### FUNC 00288e34 (2716 bytes) name=mixChannels + +/* cv::mixChannels(cv::_InputArray const&, cv::_InputOutputArray const&, int const*, unsigned long) + */ + +void cv::mixChannels(_InputArray *param_1,_InputOutputArray *param_2,int *param_3,ulong param_4) + +{ + bool bVar1; + int *piVar2; + char cVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + char *pcVar14; + undefined8 *puVar15; + undefined4 *puVar16; + ulong uVar17; + ulong *puVar18; + Mat *pMVar19; + Mat *pMVar20; + Mat *pMVar21; + ulong uVar22; + int iVar23; + undefined4 local_790; + int local_78c; + undefined4 local_788; + undefined4 local_784; + undefined8 local_780; + undefined8 local_778; + undefined8 local_770; + undefined8 local_768; + undefined8 local_760; + long local_758; + undefined4 *local_750; + undefined8 *local_748; + undefined8 local_740; + undefined8 local_738; + undefined4 local_730; + int local_72c; + undefined4 local_728; + undefined4 local_724; + undefined8 local_720; + undefined8 local_718; + undefined8 local_710; + undefined8 local_708; + undefined8 local_700; + long local_6f8; + undefined4 *local_6f0; + undefined8 *local_6e8; + undefined8 local_6e0; + undefined8 local_6d8; + Mat *local_6d0; + ulong local_6c8; + Mat local_6c0 [8]; + undefined4 local_6b8 [430]; + + if (param_4 == 0) { + return; + } + if (param_3 == (int *)0x0) { + return; + } + iVar10 = _InputArray::kind(param_1); + if (((iVar10 == 0x50000) || (iVar10 = _InputArray::kind(param_1), iVar10 == 0x40000)) || + (iVar10 = _InputArray::kind(param_1), iVar10 == 0xb0000)) { + iVar10 = _InputArray::kind((_InputArray *)param_2); + if ((iVar10 == 0x50000) || + (iVar10 = _InputArray::kind((_InputArray *)param_2), iVar10 == 0x40000)) { + bVar7 = false; + iVar10 = _InputArray::total(param_1,-1); + bVar4 = 0 < iVar10; + goto LAB_00289034; + } + bVar7 = false; + iVar11 = _InputArray::kind((_InputArray *)param_2); + iVar10 = _InputArray::total(param_1,-1); + bVar4 = 0 < iVar10; + if (iVar11 == 0xb0000) goto LAB_00289034; + /* try { // try from 00288f84 to 00388f97 has its CatchHandler @ 002896ac */ + bVar7 = false; + bVar5 = true; + iVar11 = 1; + bVar1 = true; + bVar6 = bVar4; + } + else { + iVar10 = _InputArray::kind((_InputArray *)param_2); + if (((iVar10 != 0x50000) && + (iVar10 = _InputArray::kind((_InputArray *)param_2), iVar10 != 0x40000)) && + (iVar10 = _InputArray::kind((_InputArray *)param_2), iVar10 != 0xb0000)) { + bVar7 = true; + uVar22 = 2; + bVar5 = true; + iVar10 = 1; + iVar11 = 1; + bVar4 = true; + bVar1 = true; + goto LAB_00289074; + } + bVar4 = true; + bVar7 = true; + iVar10 = 1; +LAB_00289034: + bVar5 = false; + iVar11 = _InputArray::total((_InputArray *)param_2,-1); + bVar1 = 0 < iVar11; + bVar6 = (bool)(bVar4 & bVar1); + } + if (bVar6) { + uVar22 = (ulong)(iVar10 + iVar11); + bVar4 = bVar6; + bVar1 = bVar6; + } + else { + local_6d0 = (Mat *)0x0; + local_6c8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_6d0,0x14); + uVar9 = s_fromTo_size___2____0____nsrc_>_0_00463670._32_8_; + uVar8 = s_fromTo_size___2____0____nsrc_>_0_00463670._24_8_; + /* try { // try from 00288fd8 to 00388fff has its CatchHandler @ 00289634 */ + *(undefined4 *)(pcVar14 + 0x10) = s_fromTo_size___2____0____nsrc_>_0_00463670._40_4_; + *(undefined8 *)pcVar14 = uVar8; + *(undefined8 *)(pcVar14 + 8) = uVar9; + error(-0xd7,(String *)&local_6d0, + "void cv::mixChannels(cv::InputArrayOfArrays, cv::InputOutputArrayOfArrays, const int*, size_t)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x558); + String::deallocate((String *)&local_6d0); + uVar22 = (ulong)(iVar10 + iVar11); + } +LAB_00289074: + puVar16 = local_6b8; + do { + /* try { // try from 00289084 to 003890a3 has its CatchHandler @ 0028954c */ + puVar16[-2] = 0x42ff0000; + puVar16[-1] = 0; + *puVar16 = 0; + puVar16[1] = 0; + *(undefined8 *)(puVar16 + 2) = 0; + *(undefined8 *)(puVar16 + 4) = 0; + *(undefined8 *)(puVar16 + 6) = 0; + *(undefined8 *)(puVar16 + 8) = 0; + *(undefined8 *)(puVar16 + 10) = 0; + *(undefined8 *)(puVar16 + 0xc) = 0; + *(undefined4 **)(puVar16 + 0x10) = puVar16 + 0x12; + *(undefined8 *)(puVar16 + 0x14) = 0; + *(undefined8 *)(puVar16 + 0x12) = 0; + *(undefined4 **)(puVar16 + 0xe) = puVar16; + puVar16 = puVar16 + 0x18; + /* try { // try from 002890c4 to 0038910f has its CatchHandler @ 002894d0 */ + } while (puVar16 != (undefined4 *)&stack0x00000008); + pMVar20 = local_6c0; + local_6c8 = 0x12; + uVar17 = uVar22; + if (0x12 < uVar22) { + uVar17 = 0xffffffffffffffff; + if (uVar22 < 0x154000000000001) { + uVar17 = uVar22 * 0x60 + 8; + } + local_6d0 = pMVar20; + puVar18 = operator_new__(uVar17); + uVar17 = 0; + pMVar20 = (Mat *)(puVar18 + 1); + *puVar18 = uVar22; + /* try { // try from 00289860 to 003898ab has its CatchHandler @ 002899a0 */ + puVar18 = puVar18 + 2; + do { + *(undefined4 *)(puVar18 + -1) = 0x42ff0000; + *(undefined4 *)((long)puVar18 + -4) = 0; + uVar17 = uVar17 + 1; + *(undefined4 *)puVar18 = 0; + *(undefined4 *)((long)puVar18 + 4) = 0; + puVar18[1] = 0; + puVar18[2] = 0; + puVar18[3] = 0; + puVar18[4] = 0; + puVar18[5] = 0; + puVar18[6] = 0; + puVar18[7] = (ulong)puVar18; + puVar18[8] = (ulong)(puVar18 + 9); + puVar18[10] = 0; + puVar18[9] = 0; + puVar18 = puVar18 + 0xc; + } while (uVar17 != uVar22); + } + local_6c8 = uVar17; + iVar23 = 0; + local_6d0 = pMVar20; + if (bVar4) { + pMVar21 = pMVar20; + do { + iVar13 = iVar23; + if (bVar7) { + iVar13 = -1; + } + iVar12 = _InputArray::kind(param_1); + if ((iVar12 == 0x10000) && (iVar13 < 0)) { + pMVar19 = *(Mat **)(param_1 + 8); + local_790 = *(undefined4 *)pMVar19; + local_78c = *(int *)(pMVar19 + 4); + local_788 = *(undefined4 *)(pMVar19 + 8); + local_784 = *(undefined4 *)(pMVar19 + 0xc); + local_780 = *(undefined8 *)(pMVar19 + 0x10); + local_778 = *(undefined8 *)(pMVar19 + 0x18); + local_770 = *(undefined8 *)(pMVar19 + 0x20); + local_768 = *(undefined8 *)(pMVar19 + 0x28); + local_760 = *(undefined8 *)(pMVar19 + 0x30); + local_758 = *(long *)(pMVar19 + 0x38); + /* try { // try from 00289744 to 00389793 has its CatchHandler @ 0028979c */ + local_738 = 0; + local_740 = 0; + if (local_758 != 0) { + piVar2 = (int *)(local_758 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + local_750 = &local_788; + local_748 = &local_740; + if (*(int *)(pMVar19 + 4) < 3) { + local_740 = **(undefined8 **)(pMVar19 + 0x48); + local_738 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_78c = 0; + Mat::copySize((Mat *)&local_790,pMVar19); + /* catch() { ... } // from try @ 002897c8 with catch @ 00289828 */ + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (pMVar21 != (Mat *)&local_790) { + if (local_758 != 0) { + piVar2 = (int *)(local_758 + 0x14); + do { + /* try { // try from 00289154 to 00389163 has its CatchHandler @ 002894d4 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + /* try { // try from 00289164 to 0038927b has its CatchHandler @ 00288d90 */ + if (*(long *)(pMVar21 + 0x38) == 0) { +LAB_00289184: + *(undefined8 *)(pMVar21 + 0x38) = 0; + *(undefined8 *)(pMVar21 + 0x10) = 0; + *(undefined8 *)(pMVar21 + 0x28) = 0; + *(undefined8 *)(pMVar21 + 0x20) = 0; + *(undefined8 *)(pMVar21 + 0x18) = 0; + if (0 < *(int *)(pMVar21 + 4)) goto LAB_002891a4; +LAB_00289800: + *(undefined4 *)pMVar21 = local_790; +LAB_002891d0: + if (2 < local_78c) goto LAB_00289634; + *(int *)(pMVar21 + 4) = local_78c; + *(undefined4 *)(pMVar21 + 8) = local_788; + puVar15 = *(undefined8 **)(pMVar21 + 0x48); + *(undefined4 *)(pMVar21 + 0xc) = local_784; + *puVar15 = *local_748; + puVar15[1] = local_748[1]; + } + else { + piVar2 = (int *)(*(long *)(pMVar21 + 0x38) + 0x14); + do { + iVar13 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 != 1) goto LAB_00289184; + Mat::deallocate(pMVar21); + *(undefined8 *)(pMVar21 + 0x38) = 0; + *(undefined8 *)(pMVar21 + 0x10) = 0; + *(undefined8 *)(pMVar21 + 0x28) = 0; + *(undefined8 *)(pMVar21 + 0x20) = 0; + *(undefined8 *)(pMVar21 + 0x18) = 0; + if (*(int *)(pMVar21 + 4) < 1) goto LAB_00289800; +LAB_002891a4: + iVar13 = 0; + puVar16 = *(undefined4 **)(pMVar21 + 0x40); + do { + *puVar16 = 0; + iVar13 = iVar13 + 1; + puVar16 = puVar16 + 1; + } while (iVar13 < *(int *)(pMVar21 + 4)); + *(undefined4 *)pMVar21 = local_790; + if (*(int *)(pMVar21 + 4) < 3) goto LAB_002891d0; +LAB_00289634: + /* catch() { ... } // from try @ 00288fd8 with catch @ 00289634 */ + Mat::copySize(pMVar21,(Mat *)&local_790); + } + *(undefined8 *)(pMVar21 + 0x10) = local_780; + *(undefined8 *)(pMVar21 + 0x18) = local_778; + *(undefined8 *)(pMVar21 + 0x20) = local_770; + *(undefined8 *)(pMVar21 + 0x28) = local_768; + *(undefined8 *)(pMVar21 + 0x30) = local_760; + *(long *)(pMVar21 + 0x38) = local_758; + } + if (local_758 != 0) { + piVar2 = (int *)(local_758 + 0x14); + do { + iVar13 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_790); + /* try { // try from 00289794 to 003897c7 has its CatchHandler @ 00288d90 */ + } + } + local_758 = 0; + local_780 = 0; + local_768 = 0; + local_770 = 0; + local_778 = 0; + if (0 < local_78c) { + /* try { // try from 0028927c to 003892c7 has its CatchHandler @ 002894cc */ + iVar13 = 0; + puVar16 = local_750; + do { + *puVar16 = 0; + iVar13 = iVar13 + 1; + puVar16 = puVar16 + 1; + } while (iVar13 < local_78c); + } + if (local_748 != &local_740) { + fastFree(local_748); + } + iVar23 = iVar23 + 1; + pMVar21 = pMVar21 + 0x60; + } while (iVar23 < iVar10); + } + uVar22 = (ulong)iVar10; + if (bVar1) { + iVar10 = 0; + pMVar21 = pMVar20 + uVar22 * 0x60; + do { + iVar23 = iVar10; + /* try { // try from 002892e8 to 00389333 has its CatchHandler @ 002894c8 */ + if (bVar5) { + iVar23 = -1; + } + iVar13 = _InputArray::kind((_InputArray *)param_2); + if ((iVar13 == 0x10000) && (iVar23 < 0)) { + pMVar19 = *(Mat **)(param_2 + 8); + /* try { // try from 00289658 to 003896a3 has its CatchHandler @ 002896a8 */ + local_6f8 = *(long *)(pMVar19 + 0x38); + local_730 = *(undefined4 *)pMVar19; + local_72c = *(int *)(pMVar19 + 4); + local_728 = *(undefined4 *)(pMVar19 + 8); + local_724 = *(undefined4 *)(pMVar19 + 0xc); + local_720 = *(undefined8 *)(pMVar19 + 0x10); + local_718 = *(undefined8 *)(pMVar19 + 0x18); + local_710 = *(undefined8 *)(pMVar19 + 0x20); + local_708 = *(undefined8 *)(pMVar19 + 0x28); + local_700 = *(undefined8 *)(pMVar19 + 0x30); + local_6f0 = &local_728; + local_6e8 = &local_6e0; + local_6d8 = 0; + local_6e0 = 0; + /* catch() { ... } // from try @ 00289658 with catch @ 002896a8 */ + if (local_6f8 != 0) { + /* catch() { ... } // from try @ 00288f84 with catch @ 002896ac */ + piVar2 = (int *)(local_6f8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + /* try { // try from 002896d0 to 00389723 has its CatchHandler @ 002897a0 */ + local_6e0 = **(undefined8 **)(pMVar19 + 0x48); + local_6d8 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_72c = 0; + Mat::copySize((Mat *)&local_730,pMVar19); + /* try { // try from 00289818 to 0038982b has its CatchHandler @ 00288d90 */ + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (pMVar21 != (Mat *)&local_730) { + if (local_6f8 != 0) { + piVar2 = (int *)(local_6f8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(pMVar21 + 0x38) == 0) { +LAB_00289358: + *(undefined8 *)(pMVar21 + 0x38) = 0; + *(undefined8 *)(pMVar21 + 0x10) = 0; + *(undefined8 *)(pMVar21 + 0x28) = 0; + *(undefined8 *)(pMVar21 + 0x20) = 0; + *(undefined8 *)(pMVar21 + 0x18) = 0; + if (0 < *(int *)(pMVar21 + 4)) goto LAB_00289378; +LAB_002897cc: + *(undefined4 *)pMVar21 = local_730; +LAB_002893a4: + if (2 < local_72c) goto LAB_00289624; + *(int *)(pMVar21 + 4) = local_72c; + *(undefined4 *)(pMVar21 + 8) = local_728; + puVar15 = *(undefined8 **)(pMVar21 + 0x48); + /* try { // try from 002893c4 to 00389413 has its CatchHandler @ 002894c0 */ + *(undefined4 *)(pMVar21 + 0xc) = local_724; + *puVar15 = *local_6e8; + puVar15[1] = local_6e8[1]; + } + else { + piVar2 = (int *)(*(long *)(pMVar21 + 0x38) + 0x14); + do { + iVar23 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar23 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 00289354 to 0038939f has its CatchHandler @ 002894c4 */ + if (iVar23 != 1) goto LAB_00289358; + /* catch() { ... } // from try @ 00288e20 with catch @ 002897a4 */ + Mat::deallocate(pMVar21); + *(undefined8 *)(pMVar21 + 0x38) = 0; + *(undefined8 *)(pMVar21 + 0x10) = 0; + *(undefined8 *)(pMVar21 + 0x28) = 0; + *(undefined8 *)(pMVar21 + 0x20) = 0; + *(undefined8 *)(pMVar21 + 0x18) = 0; + /* try { // try from 002897c8 to 00389817 has its CatchHandler @ 00289828 */ + if (*(int *)(pMVar21 + 4) < 1) goto LAB_002897cc; +LAB_00289378: + iVar23 = 0; + puVar16 = *(undefined4 **)(pMVar21 + 0x40); + do { + *puVar16 = 0; + iVar23 = iVar23 + 1; + puVar16 = puVar16 + 1; + } while (iVar23 < *(int *)(pMVar21 + 4)); + *(undefined4 *)pMVar21 = local_730; + if (*(int *)(pMVar21 + 4) < 3) goto LAB_002893a4; +LAB_00289624: + /* catch() { ... } // from try @ 00289570 with catch @ 0028962c */ + Mat::copySize(pMVar21,(Mat *)&local_730); + /* catch() { ... } // from try @ 002895dc with catch @ 00289630 */ + } + *(undefined8 *)(pMVar21 + 0x10) = local_720; + *(undefined8 *)(pMVar21 + 0x18) = local_718; + *(undefined8 *)(pMVar21 + 0x20) = local_710; + *(undefined8 *)(pMVar21 + 0x28) = local_708; + *(undefined8 *)(pMVar21 + 0x30) = local_700; + *(long *)(pMVar21 + 0x38) = local_6f8; + } + if (local_6f8 != 0) { + piVar2 = (int *)(local_6f8 + 0x14); + do { + iVar23 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar23 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar23 == 1) { + /* catch() { ... } // from try @ 00289744 with catch @ 0028979c */ + Mat::deallocate((Mat *)&local_730); + /* catch() { ... } // from try @ 002896d0 with catch @ 002897a0 */ + } + } + /* try { // try from 00289434 to 00389483 has its CatchHandler @ 002894bc */ + local_6f8 = 0; + local_720 = 0; + local_708 = 0; + local_710 = 0; + local_718 = 0; + if (0 < local_72c) { + iVar23 = 0; + puVar16 = local_6f0; + do { + *puVar16 = 0; + iVar23 = iVar23 + 1; + puVar16 = puVar16 + 1; + } while (iVar23 < local_72c); + } + if (local_6e8 != &local_6e0) { + fastFree(local_6e8); + } + iVar10 = iVar10 + 1; + /* try { // try from 00289484 to 003894f7 has its CatchHandler @ 00288d90 */ + pMVar21 = pMVar21 + 0x60; + } while (iVar10 < iVar11); + } + mixChannels(pMVar20,uVar22,pMVar20 + uVar22 * 0x60,(long)iVar11,param_3,param_4); + /* catch() { ... } // from try @ 00289434 with catch @ 002894bc */ + if (local_6d0 != local_6c0) { + /* catch() { ... } // from try @ 002893c4 with catch @ 002894c0 */ + if (local_6d0 != (Mat *)0x0) { + /* catch() { ... } // from try @ 00289354 with catch @ 002894c4 */ + /* catch() { ... } // from try @ 002892e8 with catch @ 002894c8 */ + /* catch() { ... } // from try @ 0028927c with catch @ 002894cc */ + pMVar20 = local_6d0 + *(long *)(local_6d0 + -8) * 0x60; + /* catch() { ... } // from try @ 002890c4 with catch @ 002894d0 */ + pMVar21 = pMVar20; + /* catch() { ... } // from try @ 00289154 with catch @ 002894d4 */ + if (local_6d0 != pMVar20) { + do { + pMVar20 = pMVar21 + -0x60; + if (*(long *)(pMVar21 + -0x28) != 0) { + piVar2 = (int *)(*(long *)(pMVar21 + -0x28) + 0x14); + do { + iVar10 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 002894f8 to 00389543 has its CatchHandler @ 00289548 */ + if (iVar10 == 1) { + Mat::deallocate(pMVar20); + } + } + *(undefined8 *)(pMVar21 + -0x28) = 0; + *(undefined8 *)(pMVar21 + -0x50) = 0; + *(undefined8 *)(pMVar21 + -0x38) = 0; + *(undefined8 *)(pMVar21 + -0x40) = 0; + *(undefined8 *)(pMVar21 + -0x48) = 0; + if (0 < *(int *)(pMVar21 + -0x5c)) { + iVar10 = 0; + puVar16 = *(undefined4 **)(pMVar21 + -0x20); + do { + *puVar16 = 0; + iVar10 = iVar10 + 1; + puVar16 = puVar16 + 1; + } while (iVar10 < *(int *)(pMVar21 + -0x5c)); + } + /* catch() { ... } // from try @ 002894f8 with catch @ 00289548 */ + if (*(Mat **)(pMVar21 + -0x18) != pMVar21 + -0x10) { + /* catch() { ... } // from try @ 00289084 with catch @ 0028954c */ + fastFree(*(Mat **)(pMVar21 + -0x18)); + } + pMVar21 = pMVar20; + } while (local_6d0 != pMVar20); + } + operator_delete__(pMVar20 + -8); + } + /* try { // try from 00289570 to 003895bb has its CatchHandler @ 0028962c */ + local_6d0 = local_6c0; + local_6c8 = 0x12; + } + pMVar20 = (Mat *)register0x00000008; + do { + pMVar21 = pMVar20 + -0x60; + if (*(long *)(pMVar20 + -0x28) != 0) { + piVar2 = (int *)(*(long *)(pMVar20 + -0x28) + 0x14); + do { + iVar10 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate(pMVar21); + } + } + *(undefined8 *)(pMVar20 + -0x28) = 0; + *(undefined8 *)(pMVar20 + -0x50) = 0; + *(undefined8 *)(pMVar20 + -0x38) = 0; + *(undefined8 *)(pMVar20 + -0x40) = 0; + *(undefined8 *)(pMVar20 + -0x48) = 0; + if (0 < *(int *)(pMVar20 + -0x5c)) { + /* try { // try from 002895dc to 00389627 has its CatchHandler @ 00289630 */ + iVar10 = 0; + puVar16 = *(undefined4 **)(pMVar20 + -0x20); + do { + *puVar16 = 0; + iVar10 = iVar10 + 1; + puVar16 = puVar16 + 1; + } while (iVar10 < *(int *)(pMVar20 + -0x5c)); + } + if (*(Mat **)(pMVar20 + -0x18) != pMVar20 + -0x10) { + fastFree(*(Mat **)(pMVar20 + -0x18)); + } + pMVar20 = pMVar21; + } while (pMVar21 != local_6c0); + return; +} + + +================================================================== + +### FUNC 002899c8 (1828 bytes) name=cvMixChannels + +void cvMixChannels(undefined8 *param_1,int param_2,undefined8 *param_3,int param_4,int *param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + undefined8 *puVar2; + char cVar3; + bool bVar4; + undefined4 *puVar5; + ulong uVar6; + ulong *puVar7; + int iVar8; + undefined8 *puVar9; + int iVar10; + Mat *pMVar11; + Mat *pMVar12; + ulong uVar13; + ulong uVar14; + long lVar15; + undefined4 local_790; + int local_78c; + undefined4 local_788; + undefined4 local_784; + undefined8 local_780; + undefined8 uStack_778; + undefined8 local_770; + undefined8 uStack_768; + undefined8 local_760; + long lStack_758; + undefined4 *local_750; + undefined8 *local_748; + undefined8 auStack_740 [2]; + undefined4 local_730; + int local_72c; + undefined4 local_728; + undefined4 local_724; + undefined8 local_720; + undefined8 uStack_718; + undefined8 local_710; + undefined8 uStack_708; + undefined8 local_700; + long lStack_6f8; + undefined4 *local_6f0; + undefined8 *local_6e8; + undefined8 auStack_6e0 [2]; + Mat *local_6d0; + ulong local_6c8; + Mat local_6c0 [8]; + undefined4 local_6b8 [430]; + + iVar8 = (int)param_6; + uVar14 = (ulong)param_2; + uVar13 = (ulong)(param_2 + param_4); + puVar5 = local_6b8; + do { + puVar5[-2] = 0x42ff0000; + puVar5[-1] = 0; + *puVar5 = 0; + puVar5[1] = 0; + *(undefined8 *)(puVar5 + 2) = 0; + *(undefined8 *)(puVar5 + 4) = 0; + /* try { // try from 00289a38 to 00389a47 has its CatchHandler @ 0028a490 */ + *(undefined8 *)(puVar5 + 6) = 0; + *(undefined8 *)(puVar5 + 8) = 0; + *(undefined8 *)(puVar5 + 10) = 0; + *(undefined8 *)(puVar5 + 0xc) = 0; + /* try { // try from 00289a48 to 00389ba7 has its CatchHandler @ 002899a4 */ + *(undefined4 **)(puVar5 + 0x10) = puVar5 + 0x12; + *(undefined8 *)(puVar5 + 0x14) = 0; + *(undefined8 *)(puVar5 + 0x12) = 0; + *(undefined4 **)(puVar5 + 0xe) = puVar5; + puVar5 = puVar5 + 0x18; + } while (puVar5 != (undefined4 *)&stack0x00000008); + local_6d0 = local_6c0; + local_6c8 = 0x12; + if (0x12 < uVar13) { + uVar6 = 0xffffffffffffffff; + if (uVar13 < 0x154000000000001) { + uVar6 = (long)(param_2 + param_4) * 0x60 + 8; + } + /* try { // try from 0028a070 to 0038a0bf has its CatchHandler @ 0028a308 */ + puVar7 = operator_new__(uVar6); + uVar6 = 0; + local_6d0 = (Mat *)(puVar7 + 1); + *puVar7 = uVar13; + puVar7 = puVar7 + 2; + do { + *(undefined4 *)(puVar7 + -1) = 0x42ff0000; + *(undefined4 *)((long)puVar7 + -4) = 0; + uVar6 = uVar6 + 1; + *(undefined4 *)puVar7 = 0; + *(undefined4 *)((long)puVar7 + 4) = 0; + puVar7[1] = 0; + puVar7[2] = 0; + puVar7[3] = 0; + puVar7[4] = 0; + puVar7[5] = 0; + puVar7[6] = 0; + puVar7[7] = (ulong)puVar7; + puVar7[8] = (ulong)(puVar7 + 9); + puVar7[10] = 0; + puVar7[9] = 0; + puVar7 = puVar7 + 0xc; + } while (uVar13 != uVar6); + } + local_6c8 = uVar13; + if (0 < param_2) { + lVar15 = 0; + puVar2 = param_1 + (param_2 - 1); + do { + pMVar11 = local_6d0 + lVar15; + cv::cvarrToMat((cv *)*param_1,(void *)0x0,true,false,0,param_6); + if (pMVar11 != (Mat *)&local_790) { + if (lStack_758 != 0) { + piVar1 = (int *)(lStack_758 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(pMVar11 + 0x38) == 0) { +LAB_00289b04: + *(undefined8 *)(pMVar11 + 0x38) = 0; + *(undefined8 *)(pMVar11 + 0x10) = 0; + *(undefined8 *)(pMVar11 + 0x28) = 0; + *(undefined8 *)(pMVar11 + 0x20) = 0; + *(undefined8 *)(pMVar11 + 0x18) = 0; + if (0 < *(int *)(pMVar11 + 4)) goto LAB_00289b24; +LAB_00289c84: + *(undefined4 *)pMVar11 = local_790; +LAB_00289b50: + if (2 < local_78c) goto LAB_00289c40; + puVar9 = *(undefined8 **)(pMVar11 + 0x48); + *(undefined4 *)(pMVar11 + 8) = local_788; + *(int *)(pMVar11 + 4) = local_78c; + *(undefined4 *)(pMVar11 + 0xc) = local_784; + *puVar9 = *local_748; + puVar9[1] = local_748[1]; + } + else { + piVar1 = (int *)(*(long *)(pMVar11 + 0x38) + 0x14); + do { + iVar10 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 != 1) goto LAB_00289b04; + cv::Mat::deallocate(pMVar11); + *(undefined8 *)(pMVar11 + 0x38) = 0; + *(undefined8 *)(pMVar11 + 0x10) = 0; + *(undefined8 *)(pMVar11 + 0x28) = 0; + *(undefined8 *)(pMVar11 + 0x20) = 0; + *(undefined8 *)(pMVar11 + 0x18) = 0; + if (*(int *)(pMVar11 + 4) < 1) goto LAB_00289c84; +LAB_00289b24: + iVar10 = 0; + puVar5 = *(undefined4 **)(pMVar11 + 0x40); + do { + *puVar5 = 0; + iVar10 = iVar10 + 1; + puVar5 = puVar5 + 1; + } while (iVar10 < *(int *)(pMVar11 + 4)); + *(undefined4 *)pMVar11 = local_790; + if (*(int *)(pMVar11 + 4) < 3) goto LAB_00289b50; +LAB_00289c40: + cv::Mat::copySize(pMVar11,(Mat *)&local_790); + } + /* try { // try from 00289ba8 to 00389bc7 has its CatchHandler @ 0028a478 */ + *(undefined8 *)(pMVar11 + 0x18) = uStack_778; + *(undefined8 *)(pMVar11 + 0x10) = local_780; + *(undefined8 *)(pMVar11 + 0x28) = uStack_768; + *(undefined8 *)(pMVar11 + 0x20) = local_770; + *(long *)(pMVar11 + 0x38) = lStack_758; + *(undefined8 *)(pMVar11 + 0x30) = local_760; + } + if (lStack_758 != 0) { + piVar1 = (int *)(lStack_758 + 0x14); + do { + iVar10 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_790); + } + } + lStack_758 = 0; + local_780 = 0; + uStack_768 = 0; + local_770 = 0; + uStack_778 = 0; + if (0 < local_78c) { + iVar10 = 0; + puVar5 = local_750; + do { + *puVar5 = 0; + iVar10 = iVar10 + 1; + puVar5 = puVar5 + 1; + } while (iVar10 < local_78c); + } + /* try { // try from 00289c1c to 00389c33 has its CatchHandler @ 0028a45c */ + if (local_748 != auStack_740) { + cv::fastFree(local_748); + } + lVar15 = lVar15 + 0x60; + if (param_1 == puVar2) break; + param_1 = param_1 + 1; + } while( true ); + } + if (param_4 < 1) { +LAB_00289eac: + /* try { // try from 00289eb4 to 00389ebf has its CatchHandler @ 0028a51c */ + cv::mixChannels(local_6d0,uVar14,local_6d0 + uVar14 * 0x60,(long)param_4,param_5,(long)iVar8); + if (local_6d0 != local_6c0) { + if (local_6d0 != (Mat *)0x0) { + pMVar11 = local_6d0 + *(long *)(local_6d0 + -8) * 0x60; + pMVar12 = pMVar11; + if (local_6d0 != pMVar11) { + do { + pMVar11 = pMVar12 + -0x60; + /* try { // try from 00289f00 to 00389f27 has its CatchHandler @ 0028a518 */ + if (*(long *)(pMVar12 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar12 + -0x28) + 0x14); + do { + iVar8 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(pMVar11); + } + } + /* try { // try from 00289f28 to 0038a06f has its CatchHandler @ 002899a4 */ + *(undefined8 *)(pMVar12 + -0x28) = 0; + *(undefined8 *)(pMVar12 + -0x50) = 0; + *(undefined8 *)(pMVar12 + -0x38) = 0; + *(undefined8 *)(pMVar12 + -0x40) = 0; + *(undefined8 *)(pMVar12 + -0x48) = 0; + if (0 < *(int *)(pMVar12 + -0x5c)) { + iVar8 = 0; + puVar5 = *(undefined4 **)(pMVar12 + -0x20); + do { + *puVar5 = 0; + iVar8 = iVar8 + 1; + puVar5 = puVar5 + 1; + } while (iVar8 < *(int *)(pMVar12 + -0x5c)); + } + if (*(Mat **)(pMVar12 + -0x18) != pMVar12 + -0x10) { + cv::fastFree(*(Mat **)(pMVar12 + -0x18)); + } + pMVar12 = pMVar11; + } while (local_6d0 != pMVar11); + } + operator_delete__(pMVar11 + -8); + } + local_6d0 = local_6c0; + local_6c8 = 0x12; + } + pMVar11 = (Mat *)register0x00000008; + do { + pMVar12 = pMVar11 + -0x60; + if (*(long *)(pMVar11 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar11 + -0x28) + 0x14); + do { + iVar8 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(pMVar12); + } + } + *(undefined8 *)(pMVar11 + -0x28) = 0; + *(undefined8 *)(pMVar11 + -0x50) = 0; + *(undefined8 *)(pMVar11 + -0x38) = 0; + *(undefined8 *)(pMVar11 + -0x40) = 0; + *(undefined8 *)(pMVar11 + -0x48) = 0; + if (0 < *(int *)(pMVar11 + -0x5c)) { + iVar8 = 0; + puVar5 = *(undefined4 **)(pMVar11 + -0x20); + do { + *puVar5 = 0; + iVar8 = iVar8 + 1; + puVar5 = puVar5 + 1; + } while (iVar8 < *(int *)(pMVar11 + -0x5c)); + } + if (*(Mat **)(pMVar11 + -0x18) != pMVar11 + -0x10) { + cv::fastFree(*(Mat **)(pMVar11 + -0x18)); + } + pMVar11 = pMVar12; + } while (pMVar12 != local_6c0); + return; + } + puVar2 = param_3 + (param_4 - 1); + lVar15 = uVar14 * 0x60; + do { + /* try { // try from 00289ccc to 00389cef has its CatchHandler @ 0028a3c8 */ + pMVar11 = local_6d0 + lVar15; + cv::cvarrToMat((cv *)*param_3,(void *)0x0,true,false,0,param_6); + if (pMVar11 != (Mat *)&local_730) { + if (lStack_6f8 != 0) { + piVar1 = (int *)(lStack_6f8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(pMVar11 + 0x38) == 0) { +LAB_00289d1c: + *(undefined8 *)(pMVar11 + 0x38) = 0; + *(undefined8 *)(pMVar11 + 0x10) = 0; + *(undefined8 *)(pMVar11 + 0x28) = 0; + *(undefined8 *)(pMVar11 + 0x20) = 0; + *(undefined8 *)(pMVar11 + 0x18) = 0; + if (0 < *(int *)(pMVar11 + 4)) goto LAB_00289d3c; +LAB_00289e9c: + *(undefined4 *)pMVar11 = local_730; +LAB_00289d68: + if (2 < local_72c) goto LAB_00289e58; + puVar9 = *(undefined8 **)(pMVar11 + 0x48); + *(undefined4 *)(pMVar11 + 8) = local_728; + *(int *)(pMVar11 + 4) = local_72c; + *(undefined4 *)(pMVar11 + 0xc) = local_724; + *puVar9 = *local_6e8; + puVar9[1] = local_6e8[1]; + } + else { + piVar1 = (int *)(*(long *)(pMVar11 + 0x38) + 0x14); + do { + iVar10 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 00289d14 to 00389d5f has its CatchHandler @ 0028a30c */ + if (iVar10 != 1) goto LAB_00289d1c; + cv::Mat::deallocate(pMVar11); + *(undefined8 *)(pMVar11 + 0x38) = 0; + *(undefined8 *)(pMVar11 + 0x10) = 0; + *(undefined8 *)(pMVar11 + 0x28) = 0; + *(undefined8 *)(pMVar11 + 0x20) = 0; + *(undefined8 *)(pMVar11 + 0x18) = 0; + if (*(int *)(pMVar11 + 4) < 1) goto LAB_00289e9c; +LAB_00289d3c: + iVar10 = 0; + puVar5 = *(undefined4 **)(pMVar11 + 0x40); + do { + *puVar5 = 0; + iVar10 = iVar10 + 1; + puVar5 = puVar5 + 1; + } while (iVar10 < *(int *)(pMVar11 + 4)); + *(undefined4 *)pMVar11 = local_730; + if (*(int *)(pMVar11 + 4) < 3) goto LAB_00289d68; +LAB_00289e58: + cv::Mat::copySize(pMVar11,(Mat *)&local_730); + } + /* try { // try from 00289db0 to 00389dcb has its CatchHandler @ 0028a3b4 */ + *(undefined8 *)(pMVar11 + 0x18) = uStack_718; + *(undefined8 *)(pMVar11 + 0x10) = local_720; + *(undefined8 *)(pMVar11 + 0x28) = uStack_708; + *(undefined8 *)(pMVar11 + 0x20) = local_710; + /* try { // try from 00289dcc to 00389ddf has its CatchHandler @ 0028a3b0 */ + *(long *)(pMVar11 + 0x38) = lStack_6f8; + *(undefined8 *)(pMVar11 + 0x30) = local_700; + } + if (lStack_6f8 != 0) { + piVar1 = (int *)(lStack_6f8 + 0x14); + do { + iVar10 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_730); + } + } + lStack_6f8 = 0; + local_720 = 0; + uStack_708 = 0; + local_710 = 0; + uStack_718 = 0; + if (0 < local_72c) { + iVar10 = 0; + puVar5 = local_6f0; + do { + *puVar5 = 0; + iVar10 = iVar10 + 1; + /* try { // try from 00289e2c to 00389e3b has its CatchHandler @ 0028a310 */ + puVar5 = puVar5 + 1; + } while (iVar10 < local_72c); + } + if (local_6e8 != auStack_6e0) { + cv::fastFree(local_6e8); + } + lVar15 = lVar15 + 0x60; + if (param_3 == puVar2) goto LAB_00289eac; + param_3 = param_3 + 1; + } while( true ); +} + + +================================================================== + +### FUNC 0028a1c0 (2652 bytes) name=mixChannels + +/* cv::mixChannels(cv::_InputArray const&, cv::_InputOutputArray const&, std::vector > const&) */ + +void cv::mixChannels(_InputArray *param_1,_InputOutputArray *param_2,vector *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + bool bVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + undefined8 *puVar15; + undefined4 *puVar16; + char *pcVar17; + ulong uVar18; + ulong *puVar19; + Mat *pMVar20; + ulong uVar21; + Mat *pMVar22; + int iVar24; + undefined4 local_790; + int local_78c; + undefined4 local_788; + undefined4 local_784; + undefined8 local_780; + undefined8 local_778; + undefined8 local_770; + undefined8 local_768; + undefined8 local_760; + long local_758; + undefined4 *local_750; + undefined8 *local_748; + undefined8 local_740; + undefined8 local_738; + undefined4 local_730; + int local_72c; + undefined4 local_728; + undefined4 local_724; + undefined8 local_720; + undefined8 local_718; + undefined8 local_710; + undefined8 local_708; + undefined8 local_700; + long local_6f8; + undefined4 *local_6f0; + undefined8 *local_6e8; + undefined8 local_6e0; + undefined8 local_6d8; + Mat *local_6d0; + ulong local_6c8; + Mat local_6c0 [8]; + undefined4 local_6b8 [406]; + Mat aMStack_60 [96]; + Mat *pMVar23; + + if (*(long *)param_3 == *(long *)(param_3 + 8)) { + return; + } + /* try { // try from 0028a200 to 0038a24f has its CatchHandler @ 0028a2fc */ + iVar11 = _InputArray::kind(param_1); + if (((iVar11 == 0x50000) || (iVar11 = _InputArray::kind(param_1), iVar11 == 0x40000)) || + (iVar11 = _InputArray::kind(param_1), iVar11 == 0xb0000)) { + /* try { // try from 0028a274 to 0038a2bf has its CatchHandler @ 0028a2f8 */ + iVar11 = _InputArray::kind((_InputArray *)param_2); + if ((iVar11 == 0x50000) || + (iVar11 = _InputArray::kind((_InputArray *)param_2), iVar11 == 0x40000)) { + bVar10 = false; + } + else { + iVar11 = _InputArray::kind((_InputArray *)param_2); + bVar10 = iVar11 != 0xb0000; + } + bVar4 = false; + iVar11 = _InputArray::total(param_1,-1); +LAB_0028a2bc: + iVar12 = 1; + bVar3 = true; + /* try { // try from 0028a2c0 to 0038a333 has its CatchHandler @ 002899a4 */ + if (bVar10) goto LAB_0028a2c4; + } + else { + iVar11 = _InputArray::kind((_InputArray *)param_2); + if ((iVar11 != 0x50000) && + (iVar11 = _InputArray::kind((_InputArray *)param_2), iVar11 != 0x40000)) { + bVar4 = true; + iVar11 = 1; + iVar12 = _InputArray::kind((_InputArray *)param_2); + bVar10 = iVar12 != 0xb0000; + goto LAB_0028a2bc; + } + bVar4 = true; + iVar11 = 1; + } + bVar3 = false; + iVar12 = _InputArray::total((_InputArray *)param_2,-1); +LAB_0028a2c4: + if (((((uint)((int)*(undefined8 *)(param_3 + 8) - (int)*(undefined8 *)param_3) >> 2 & 1) != 0) || + (iVar11 < 1)) || (iVar12 < 1)) { + local_6d0 = (Mat *)0x0; + local_6c8 = 0; + pcVar17 = (char *)String::allocate((String *)&local_6d0,0x2c); + uVar9 = s_fromTo_size___2____0____nsrc_>_0_00463670._40_4_; + uVar8 = s_fromTo_size___2____0____nsrc_>_0_00463670._24_8_; + uVar7 = s_fromTo_size___2____0____nsrc_>_0_00463670._16_8_; + uVar6 = s_fromTo_size___2____0____nsrc_>_0_00463670._8_8_; + uVar5 = s_fromTo_size___2____0____nsrc_>_0_00463670._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s_fromTo_size___2____0____nsrc_>_0_00463670._32_8_; + /* try { // try from 0028ab4c to 0038ab6b has its CatchHandler @ 0028b618 */ + *(undefined4 *)(pcVar17 + 0x28) = uVar9; + *(undefined8 *)pcVar17 = uVar5; + *(undefined8 *)(pcVar17 + 8) = uVar6; + *(undefined8 *)(pcVar17 + 0x10) = uVar7; + *(undefined8 *)(pcVar17 + 0x18) = uVar8; + error(-0xd7,(String *)&local_6d0, + "void cv::mixChannels(cv::InputArrayOfArrays, cv::InputOutputArrayOfArrays, const std::vector&)" + ,"/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x575); + String::deallocate((String *)&local_6d0); + } + /* catch() { ... } // from try @ 0028a274 with catch @ 0028a2f8 */ + /* catch() { ... } // from try @ 0028a200 with catch @ 0028a2fc */ + /* catch() { ... } // from try @ 0028a190 with catch @ 0028a300 */ + uVar21 = (ulong)(iVar11 + iVar12); + /* catch() { ... } // from try @ 0028a120 with catch @ 0028a304 */ + puVar16 = local_6b8; + do { + /* catch() { ... } // from try @ 0028a070 with catch @ 0028a308 */ + puVar16[-2] = 0x42ff0000; + /* catch() { ... } // from try @ 00289d14 with catch @ 0028a30c */ + /* catch() { ... } // from try @ 00289e2c with catch @ 0028a310 */ + puVar16[-1] = 0; + *puVar16 = 0; + puVar16[1] = 0; + *(undefined8 *)(puVar16 + 2) = 0; + *(undefined8 *)(puVar16 + 4) = 0; + *(undefined8 *)(puVar16 + 6) = 0; + *(undefined8 *)(puVar16 + 8) = 0; + *(undefined8 *)(puVar16 + 10) = 0; + *(undefined8 *)(puVar16 + 0xc) = 0; + /* try { // try from 0028a334 to 0038a387 has its CatchHandler @ 0028a3ac */ + *(undefined4 **)(puVar16 + 0x10) = puVar16 + 0x12; + *(undefined8 *)(puVar16 + 0x14) = 0; + *(undefined8 *)(puVar16 + 0x12) = 0; + *(undefined4 **)(puVar16 + 0xe) = puVar16; + puVar16 = puVar16 + 0x18; + } while (puVar16 != (undefined4 *)&stack0x00000008); + pMVar22 = local_6c0; + local_6c8 = 0x12; + if (0x12 < uVar21) { + uVar18 = 0xffffffffffffffff; + /* try { // try from 0028ab94 to 0038abdf has its CatchHandler @ 0028b5ec */ + if (uVar21 < 0x154000000000001) { + uVar18 = (long)(iVar11 + iVar12) * 0x60 + 8; + } + local_6d0 = pMVar22; + puVar19 = operator_new__(uVar18); + uVar18 = 0; + pMVar22 = (Mat *)(puVar19 + 1); + *puVar19 = uVar21; + puVar19 = puVar19 + 2; + do { + *(undefined4 *)(puVar19 + -1) = 0x42ff0000; + *(undefined4 *)((long)puVar19 + -4) = 0; + uVar18 = uVar18 + 1; + *(undefined4 *)puVar19 = 0; + *(undefined4 *)((long)puVar19 + 4) = 0; + puVar19[1] = 0; + /* try { // try from 0028abe0 to 0038abf7 has its CatchHandler @ 0028b604 */ + puVar19[2] = 0; + puVar19[3] = 0; + puVar19[4] = 0; + puVar19[5] = 0; + puVar19[6] = 0; + puVar19[7] = (ulong)puVar19; + puVar19[8] = (ulong)(puVar19 + 9); + puVar19[10] = 0; + puVar19[9] = 0; + puVar19 = puVar19 + 0xc; + } while (uVar21 != uVar18); + } + iVar24 = 0; + local_6d0 = pMVar22; + local_6c8 = uVar21; + if (0 < iVar11) { + pMVar23 = pMVar22; + do { + iVar14 = iVar24; + if (bVar4) { + iVar14 = -1; + } + iVar13 = _InputArray::kind(param_1); + /* catch() { ... } // from try @ 0028a334 with catch @ 0028a3ac */ + /* catch() { ... } // from try @ 00289dcc with catch @ 0028a3b0 */ + if ((iVar13 == 0x10000) && (iVar14 < 0)) { + pMVar20 = *(Mat **)(param_1 + 8); + local_790 = *(undefined4 *)pMVar20; + local_78c = *(int *)(pMVar20 + 4); + local_788 = *(undefined4 *)(pMVar20 + 8); + local_784 = *(undefined4 *)(pMVar20 + 0xc); + local_780 = *(undefined8 *)(pMVar20 + 0x10); + local_778 = *(undefined8 *)(pMVar20 + 0x18); + local_770 = *(undefined8 *)(pMVar20 + 0x20); + local_768 = *(undefined8 *)(pMVar20 + 0x28); + local_760 = *(undefined8 *)(pMVar20 + 0x30); + local_758 = *(long *)(pMVar20 + 0x38); + local_738 = 0; + local_740 = 0; + if (local_758 != 0) { + piVar1 = (int *)(local_758 + 0x14); + do { + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + local_750 = &local_788; + local_748 = &local_740; + if (*(int *)(pMVar20 + 4) < 3) { + /* try { // try from 0028aa30 to 0038aa4f has its CatchHandler @ 0028b6a4 */ + local_740 = **(undefined8 **)(pMVar20 + 0x48); + local_738 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + local_78c = 0; + Mat::copySize((Mat *)&local_790,pMVar20); + } + } + else { + /* catch() { ... } // from try @ 00289db0 with catch @ 0028a3b4 */ + _InputArray::getMat_((int)param_1); + } + /* catch() { ... } // from try @ 00289ccc with catch @ 0028a3c8 */ + if (pMVar23 != (Mat *)&local_790) { + if (local_758 != 0) { + piVar1 = (int *)(local_758 + 0x14); + do { + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + /* try { // try from 0028a3ec to 0038a43b has its CatchHandler @ 0028a458 */ + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_0028a40c: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_0028a42c; +LAB_0028aab8: + *(undefined4 *)pMVar23 = local_790; +LAB_0028a458: + /* catch() { ... } // from try @ 0028a3ec with catch @ 0028a458 */ + /* catch() { ... } // from try @ 00289c1c with catch @ 0028a45c */ + if (2 < local_78c) goto LAB_0028a8ec; + *(int *)(pMVar23 + 4) = local_78c; + *(undefined4 *)(pMVar23 + 8) = local_788; + puVar15 = *(undefined8 **)(pMVar23 + 0x48); + /* catch() { ... } // from try @ 00289ba8 with catch @ 0028a478 */ + *(undefined4 *)(pMVar23 + 0xc) = local_784; + *puVar15 = *local_748; + puVar15[1] = local_748[1]; + } + else { + piVar1 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar14 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 != 1) goto LAB_0028a40c; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_0028aab8; +LAB_0028a42c: + iVar14 = 0; + puVar16 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar16 = 0; + iVar14 = iVar14 + 1; + puVar16 = puVar16 + 1; + } while (iVar14 < *(int *)(pMVar23 + 4)); + *(undefined4 *)pMVar23 = local_790; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_0028a458; +LAB_0028a8ec: + Mat::copySize(pMVar23,(Mat *)&local_790); + } + /* catch() { ... } // from try @ 00289a38 with catch @ 0028a490 */ + *(undefined8 *)(pMVar23 + 0x10) = local_780; + *(undefined8 *)(pMVar23 + 0x18) = local_778; + *(undefined8 *)(pMVar23 + 0x20) = local_770; + *(undefined8 *)(pMVar23 + 0x28) = local_768; + /* try { // try from 0028a4b4 to 0038a503 has its CatchHandler @ 0028a514 */ + *(undefined8 *)(pMVar23 + 0x30) = local_760; + *(long *)(pMVar23 + 0x38) = local_758; + } + if (local_758 != 0) { + piVar1 = (int *)(local_758 + 0x14); + do { + iVar14 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_790); + } + } + local_758 = 0; + local_780 = 0; + local_768 = 0; + local_770 = 0; + local_778 = 0; + if (0 < local_78c) { + /* try { // try from 0028a504 to 0038a54f has its CatchHandler @ 002899a4 */ + iVar14 = 0; + puVar16 = local_750; + do { + *puVar16 = 0; + iVar14 = iVar14 + 1; + /* catch() { ... } // from try @ 0028a4b4 with catch @ 0028a514 */ + /* catch() { ... } // from try @ 00289f00 with catch @ 0028a518 */ + /* catch() { ... } // from try @ 00289eb4 with catch @ 0028a51c */ + puVar16 = puVar16 + 1; + } while (iVar14 < local_78c); + } + if (local_748 != &local_740) { + fastFree(local_748); + } + iVar24 = iVar24 + 1; + pMVar23 = pMVar23 + 0x60; + } while (iVar24 != iVar11); + } + uVar21 = (ulong)iVar11; + /* try { // try from 0028a550 to 0038a59f has its CatchHandler @ 0028a7a8 */ + if (0 < iVar12) { + iVar11 = 0; + pMVar23 = pMVar22 + uVar21 * 0x60; + do { + iVar24 = iVar11; + if (bVar3) { + iVar24 = -1; + } + iVar14 = _InputArray::kind((_InputArray *)param_2); + if ((iVar14 == 0x10000) && (iVar24 < 0)) { + pMVar20 = *(Mat **)(param_2 + 8); + local_6f8 = *(long *)(pMVar20 + 0x38); + local_730 = *(undefined4 *)pMVar20; + local_72c = *(int *)(pMVar20 + 4); + local_728 = *(undefined4 *)(pMVar20 + 8); + /* try { // try from 0028a934 to 0038a947 has its CatchHandler @ 0028b748 */ + local_724 = *(undefined4 *)(pMVar20 + 0xc); + local_720 = *(undefined8 *)(pMVar20 + 0x10); + local_718 = *(undefined8 *)(pMVar20 + 0x18); + local_710 = *(undefined8 *)(pMVar20 + 0x20); + local_708 = *(undefined8 *)(pMVar20 + 0x28); + local_700 = *(undefined8 *)(pMVar20 + 0x30); + local_6f0 = &local_728; + local_6e8 = &local_6e0; + local_6d8 = 0; + local_6e0 = 0; + if (local_6f8 != 0) { + piVar1 = (int *)(local_6f8 + 0x14); + do { + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + /* try { // try from 0028a980 to 0038a997 has its CatchHandler @ 0028b734 */ + if (*(int *)(pMVar20 + 4) < 3) { + local_6e0 = **(undefined8 **)(pMVar20 + 0x48); + local_6d8 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + local_72c = 0; + Mat::copySize((Mat *)&local_730,pMVar20); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (pMVar23 != (Mat *)&local_730) { + if (local_6f8 != 0) { + piVar1 = (int *)(local_6f8 + 0x14); + do { + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_0028a5e4: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + /* try { // try from 0028a600 to 0038a64f has its CatchHandler @ 0028a7ac */ + if (0 < *(int *)(pMVar23 + 4)) goto LAB_0028a604; +LAB_0028aa84: + *(undefined4 *)pMVar23 = local_730; +LAB_0028a630: + if (2 < local_72c) goto LAB_0028a8dc; + *(int *)(pMVar23 + 4) = local_72c; + *(undefined4 *)(pMVar23 + 8) = local_728; + puVar15 = *(undefined8 **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 0xc) = local_724; + *puVar15 = *local_6e8; + puVar15[1] = local_6e8[1]; + } + else { + piVar1 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar24 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar24 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar24 != 1) goto LAB_0028a5e4; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + /* try { // try from 0028aa70 to 0038aabf has its CatchHandler @ 0028b5f0 */ + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_0028aa84; +LAB_0028a604: + iVar24 = 0; + puVar16 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar16 = 0; + iVar24 = iVar24 + 1; + puVar16 = puVar16 + 1; + } while (iVar24 < *(int *)(pMVar23 + 4)); + *(undefined4 *)pMVar23 = local_730; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_0028a630; +LAB_0028a8dc: + Mat::copySize(pMVar23,(Mat *)&local_730); + } + *(undefined8 *)(pMVar23 + 0x10) = local_720; + /* try { // try from 0028a670 to 0038a6bf has its CatchHandler @ 0028a7b0 */ + *(undefined8 *)(pMVar23 + 0x18) = local_718; + *(undefined8 *)(pMVar23 + 0x20) = local_710; + *(undefined8 *)(pMVar23 + 0x28) = local_708; + *(undefined8 *)(pMVar23 + 0x30) = local_700; + *(long *)(pMVar23 + 0x38) = local_6f8; + } + if (local_6f8 != 0) { + piVar1 = (int *)(local_6f8 + 0x14); + do { + iVar24 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar24 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar24 == 1) { + Mat::deallocate((Mat *)&local_730); + } + } + local_6f8 = 0; + local_720 = 0; + local_708 = 0; + local_710 = 0; + local_718 = 0; + if (0 < local_72c) { + /* try { // try from 0028a6e0 to 0038a72f has its CatchHandler @ 0028a7b4 */ + iVar24 = 0; + puVar16 = local_6f0; + do { + *puVar16 = 0; + iVar24 = iVar24 + 1; + puVar16 = puVar16 + 1; + } while (iVar24 < local_72c); + } + if (local_6e8 != &local_6e0) { + fastFree(local_6e8); + } + iVar11 = iVar11 + 1; + pMVar23 = pMVar23 + 0x60; + } while (iVar11 != iVar12); + } + mixChannels(pMVar22,uVar21,pMVar22 + uVar21 * 0x60,(long)iVar12,*(int **)param_3, + (ulong)(*(long *)(param_3 + 8) - (long)*(int **)param_3 >> 2) >> 1); + /* try { // try from 0028a750 to 0038a79b has its CatchHandler @ 0028a7a4 */ + if (local_6d0 != local_6c0) { + if (local_6d0 != (Mat *)0x0) { + pMVar22 = local_6d0 + *(long *)(local_6d0 + -8) * 0x60; + pMVar23 = pMVar22; + if (local_6d0 != pMVar22) { + do { + pMVar22 = pMVar23 + -0x60; + if (*(long *)(pMVar23 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar23 + -0x28) + 0x14); + do { + iVar11 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + Mat::deallocate(pMVar22); + } + } + /* try { // try from 0028a79c to 0038a7b7 has its CatchHandler @ 002899a4 */ + *(undefined8 *)(pMVar23 + -0x28) = 0; + /* catch() { ... } // from try @ 0028a750 with catch @ 0028a7a4 */ + *(undefined8 *)(pMVar23 + -0x50) = 0; + /* catch() { ... } // from try @ 0028a550 with catch @ 0028a7a8 */ + /* catch() { ... } // from try @ 0028a600 with catch @ 0028a7ac */ + *(undefined8 *)(pMVar23 + -0x38) = 0; + /* catch() { ... } // from try @ 0028a670 with catch @ 0028a7b0 */ + *(undefined8 *)(pMVar23 + -0x40) = 0; + /* catch() { ... } // from try @ 0028a6e0 with catch @ 0028a7b4 */ + *(undefined8 *)(pMVar23 + -0x48) = 0; + if (0 < *(int *)(pMVar23 + -0x5c)) { + iVar11 = 0; + puVar16 = *(undefined4 **)(pMVar23 + -0x20); + do { + *puVar16 = 0; + iVar11 = iVar11 + 1; + puVar16 = puVar16 + 1; + } while (iVar11 < *(int *)(pMVar23 + -0x5c)); + } + if (*(Mat **)(pMVar23 + -0x18) != pMVar23 + -0x10) { + fastFree(*(Mat **)(pMVar23 + -0x18)); + } + /* catch() { ... } // from try @ 0028b174 with catch @ 0028a7f4 + catch() { ... } // from try @ 0028b5cc with catch @ 0028a7f4 + catch() { ... } // from try @ 0028baf4 with catch @ 0028a7f4 */ + pMVar23 = pMVar22; + } while (local_6d0 != pMVar22); + } + operator_delete__(pMVar22 + -8); + } + local_6d0 = local_6c0; + local_6c8 = 0x12; + } + pMVar22 = aMStack_60; + do { + if (*(long *)(pMVar22 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar22 + 0x38) + 0x14); + do { + iVar11 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + Mat::deallocate(pMVar22); + } + } + /* try { // try from 0028a850 to 0038a85f has its CatchHandler @ 0028b770 */ + *(undefined8 *)(pMVar22 + 0x38) = 0; + *(undefined8 *)(pMVar22 + 0x10) = 0; + *(undefined8 *)(pMVar22 + 0x28) = 0; + *(undefined8 *)(pMVar22 + 0x20) = 0; + *(undefined8 *)(pMVar22 + 0x18) = 0; + /* try { // try from 0028a86c to 0038a877 has its CatchHandler @ 0028b768 */ + if (0 < *(int *)(pMVar22 + 4)) { + iVar11 = 0; + puVar16 = *(undefined4 **)(pMVar22 + 0x40); + do { + *puVar16 = 0; + iVar11 = iVar11 + 1; + puVar16 = puVar16 + 1; + } while (iVar11 < *(int *)(pMVar22 + 4)); + } + if (*(Mat **)(pMVar22 + 0x48) != pMVar22 + 0x50) { + fastFree(*(Mat **)(pMVar22 + 0x48)); + } + pMVar22 = pMVar22 + -0x60; + } while (pMVar22 != (Mat *)&local_720); + /* try { // try from 0028a8c0 to 0038a8d7 has its CatchHandler @ 0028b760 */ + return; +} + + +================================================================== + +### FUNC 0028ad10 (96 bytes) name=~vector + +/* std::vector >::~vector() */ + +void __thiscall +std::vector>::~vector + (vector> *this) + +{ + UMat *this_00; + UMat *pUVar1; + + this_00 = *(UMat **)this; + pUVar1 = *(UMat **)(this + 8); + if (this_00 != pUVar1) { + do { + /* try { // try from 0028ad34 to 0038ad7f has its CatchHandler @ 0028b5e4 */ + cv::UMat::~UMat(this_00); + this_00 = this_00 + 0x50; + } while (pUVar1 != this_00); + pUVar1 = *(UMat **)this; + } + if (pUVar1 != (UMat *)0x0) { + operator_delete(pUVar1); + return; + } + return; +} + + +================================================================== + +### FUNC 0028ad8c (1732 bytes) name=extractChannel + +/* cv::extractChannel(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::extractChannel(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + UMat *pUVar1; + uint uVar2; + bool bVar3; + UMat *pUVar4; + UMat *pUVar5; + UMat *pUVar6; + undefined8 uVar7; + undefined8 uVar8; + char cVar9; + int iVar10; + ulong uVar11; + char *pcVar12; + undefined8 *puVar13; + Mat *pMVar14; + int *piVar15; + ulong local_128; + UMat *local_120; + UMat *local_118; + UMat *local_110; + UMat *local_108; + UMat *local_100; + UMat *local_f8; + undefined4 local_f0 [2]; + UMat **local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8 [2]; + UMat **local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + long local_a0; + undefined8 local_98; + int *local_90; + undefined8 *local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + long local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 *local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 0028ada0 to 0038adef has its CatchHandler @ 0028b5e0 */ + uVar11 = _InputArray::type(param_1,-1); + uVar2 = (uint)uVar11 & 7; + if (((int)((uint)((uVar11 & 0xffffffff) >> 3) & 0x1ff) < param_3) || (param_3 < 0)) { + local_60 = 0; + local_58 = 0; + pcVar12 = (char *)String::allocate((String *)&local_60,0x14); + uVar8 = s_0_<__coi_&&_coi_<_cn_004636a0._8_8_; + uVar7 = s_0_<__coi_&&_coi_<_cn_004636a0._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s_0_<__coi_&&_coi_<_cn_004636a0._16_4_; + *(undefined8 *)pcVar12 = uVar7; + *(undefined8 *)(pcVar12 + 8) = uVar8; + error(-0xd7,(String *)&local_60,"void cv::extractChannel(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x582); + String::deallocate((String *)&local_60); + local_128 = (ulong)(uint)param_3; + cVar9 = ocl::useOpenCL(); + } + else { + local_128 = (ulong)(uint)param_3; + cVar9 = ocl::useOpenCL(); + } + if (cVar9 != '\0') { + iVar10 = _InputArray::dims(param_1,-1); + if ((iVar10 < 3) && (iVar10 = _InputArray::kind((_InputArray *)param_2), iVar10 == 0xa0000)) { + _InputArray::getUMat((int)param_1); + _OutputArray::create(param_2,local_bc,local_90,uVar2,-1,false,0); + _InputArray::getUMat((int)param_2); + local_120 = (UMat *)0x0; + local_118 = (UMat *)0x0; + local_110 = (UMat *)0x0; + local_120 = operator_new(0x50); + local_110 = local_120 + 0x50; + *(undefined4 *)local_120 = local_c0; + *(int *)(local_120 + 4) = local_bc; + *(int *)(local_120 + 8) = local_b8; + *(undefined8 *)(local_120 + 0x10) = local_b0; + /* try { // try from 0028b0ac to 0038b0bf has its CatchHandler @ 0028b83c */ + *(undefined4 *)(local_120 + 0xc) = local_b4; + *(long *)(local_120 + 0x20) = local_a0; + *(undefined4 *)(local_120 + 0x18) = (undefined4)local_a8; + *(undefined8 *)(local_120 + 0x28) = local_98; + *(UMat **)(local_120 + 0x30) = local_120 + 8; + *(UMat **)(local_120 + 0x38) = local_120 + 0x40; + *(undefined8 *)(local_120 + 0x48) = 0; + *(undefined8 *)(local_120 + 0x40) = 0; + if (local_a0 != 0) { + piVar15 = (int *)(local_a0 + 0x10); + do { + cVar9 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar3) { + *piVar15 = *piVar15 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (local_bc < 3) { + puVar13 = *(undefined8 **)(local_120 + 0x38); + *puVar13 = *local_88; + puVar13[1] = local_88[1]; + } + else { + *(undefined4 *)(local_120 + 4) = 0; + local_118 = local_120; + UMat::copySize(local_120,(UMat *)&local_c0); + } + local_118 = local_110; + local_108 = (UMat *)0x0; + local_e0 = 0; + local_dc = 0; + /* try { // try from 0028b12c to 0038b133 has its CatchHandler @ 0028b7e0 */ + local_f0[0] = 0x10b0000; + local_100 = (UMat *)0x0; + local_f8 = (UMat *)0x0; + local_e8 = &local_120; + local_108 = operator_new(0x50); + local_f8 = local_108 + 0x50; + *(undefined4 *)local_108 = (undefined4)local_60; + *(int *)(local_108 + 4) = local_60._4_4_; + /* try { // try from 0028b16c to 0038b173 has its CatchHandler @ 0028b780 */ + /* try { // try from 0028b174 to 0038b44b has its CatchHandler @ 0028a7f4 */ + *(undefined4 *)(local_108 + 8) = (undefined4)local_58; + *(undefined8 *)(local_108 + 0x10) = local_50; + *(undefined4 *)(local_108 + 0xc) = local_58._4_4_; + *(long *)(local_108 + 0x20) = local_40; + *(undefined4 *)(local_108 + 0x18) = (undefined4)local_48; + *(undefined8 *)(local_108 + 0x28) = local_38; + *(UMat **)(local_108 + 0x30) = local_108 + 8; + *(UMat **)(local_108 + 0x38) = local_108 + 0x40; + *(undefined8 *)(local_108 + 0x48) = 0; + *(undefined8 *)(local_108 + 0x40) = 0; + if (local_40 != 0) { + piVar15 = (int *)(local_40 + 0x10); + do { + cVar9 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar3) { + *piVar15 = *piVar15 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (local_60._4_4_ < 3) { + puVar13 = *(undefined8 **)(local_108 + 0x38); + *puVar13 = *local_28; + puVar13[1] = local_28[1]; + } + else { + *(undefined4 *)(local_108 + 4) = 0; + local_100 = local_108; + UMat::copySize(local_108,(UMat *)&local_60); + } + local_100 = local_f8; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x430b0000; + local_d0 = &local_108; + mixChannels((_InputArray *)local_f0,(_InputOutputArray *)local_d8,(int *)&local_128,1); + pUVar5 = local_100; + pUVar4 = local_100; + for (pUVar1 = local_108; pUVar1 != pUVar5; pUVar1 = pUVar1 + 0x50) { + UMat::~UMat(pUVar1); + pUVar4 = local_108; + } + pUVar1 = local_120; + pUVar5 = local_118; + pUVar6 = local_118; + if (pUVar4 != (UMat *)0x0) { + operator_delete(pUVar4); + pUVar1 = local_120; + pUVar5 = local_118; + pUVar6 = local_118; + } + for (; pUVar4 = local_118, pUVar1 != local_118; pUVar1 = pUVar1 + 0x50) { + local_118 = pUVar6; + UMat::~UMat(pUVar1); + pUVar5 = local_120; + pUVar6 = local_118; + local_118 = pUVar4; + } + local_118 = pUVar6; + if (pUVar5 != (UMat *)0x0) { + operator_delete(pUVar5); + } + UMat::~UMat((UMat *)&local_60); + UMat::~UMat((UMat *)&local_c0); + return; + } + } + iVar10 = _InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar14 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar14; + local_b0 = *(undefined8 *)(pMVar14 + 0x10); + local_bc = *(int *)(pMVar14 + 4); + local_b8 = *(int *)(pMVar14 + 8); + local_b4 = *(undefined4 *)(pMVar14 + 0xc); + local_a8 = *(undefined8 *)(pMVar14 + 0x18); + local_a0 = *(long *)(pMVar14 + 0x20); + local_98 = *(undefined8 *)(pMVar14 + 0x28); + local_90 = *(int **)(pMVar14 + 0x30); + local_88 = *(undefined8 **)(pMVar14 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != (undefined8 *)0x0) { + piVar15 = (int *)((long)local_88 + 0x14); + do { + cVar9 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar3) { + *piVar15 = *piVar15 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar14 + 0x48); + local_68 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar14); + /* try { // try from 0028b44c to 0038b45b has its CatchHandler @ 0028b5d4 */ + } + } + else { + _InputArray::getMat_((int)param_1); + } + /* try { // try from 0028ae10 to 0038ae5b has its CatchHandler @ 0028b5dc */ + _OutputArray::create(param_2,local_bc,local_80,uVar2,-1,false,0); + iVar10 = _InputArray::kind((_InputArray *)param_2); + if (iVar10 == 0x10000) { + pMVar14 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar2 = *(uint *)pMVar14; + local_50 = *(undefined8 *)(pMVar14 + 0x10); + local_60 = *(ulong *)pMVar14; + local_58 = *(undefined8 *)(pMVar14 + 8); + local_48 = *(undefined8 *)(pMVar14 + 0x18); + local_40 = *(long *)(pMVar14 + 0x20); + local_38 = *(undefined8 *)(pMVar14 + 0x28); + local_30 = *(undefined8 *)(pMVar14 + 0x30); + local_28 = *(undefined8 **)(pMVar14 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != (undefined8 *)0x0) { + piVar15 = (int *)((long)local_28 + 0x14); + do { + cVar9 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar3) { + *piVar15 = *piVar15 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar14 + 0x48); + local_8 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar2; + Mat::copySize((Mat *)&local_60,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_2); + } + mixChannels((Mat *)&local_c0,1,(Mat *)&local_60,1,(int *)&local_128,1); + if (local_28 != (undefined8 *)0x0) { + piVar15 = (int *)((long)local_28 + 0x14); + do { + iVar10 = *piVar15; + /* try { // try from 0028ae7c to 0038aecf has its CatchHandler @ 0028b5d8 */ + cVar9 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar3) { + *piVar15 = iVar10 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = (undefined8 *)0x0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar10 = 0; + puVar13 = local_20; + do { + *(undefined4 *)puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar10 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != (undefined8 *)0x0) { + piVar15 = (int *)((long)local_88 + 0x14); + do { + iVar10 = *piVar15; + cVar9 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar3) { + *piVar15 = iVar10 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = (undefined8 *)0x0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + piVar15 = local_80; + do { + *piVar15 = 0; + iVar10 = iVar10 + 1; + piVar15 = piVar15 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + /* try { // try from 0028af6c to 0038af73 has its CatchHandler @ 0028b834 */ + return; +} + + +================================================================== + +### FUNC 0028b55c (1860 bytes) name=insertChannel + +/* cv::insertChannel(cv::_InputArray const&, cv::_InputOutputArray const&, int) */ + +void cv::insertChannel(_InputArray *param_1,_InputOutputArray *param_2,int param_3) + +{ + int *piVar1; + UMat *pUVar2; + uint uVar3; + bool bVar4; + UMat *pUVar5; + UMat *pUVar6; + UMat *pUVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined2 uVar12; + char cVar13; + int iVar14; + ulong uVar15; + ulong uVar16; + char *pcVar17; + undefined8 *puVar18; + Mat *pMVar19; + undefined4 *puVar20; + long local_128; + UMat *local_120; + UMat *local_118; + UMat *local_110; + UMat *local_108; + UMat *local_100; + UMat *local_f8; + undefined4 local_f0 [2]; + UMat **local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8 [2]; + UMat **local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + long local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 *local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + long local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 *local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar15 = _InputArray::type(param_1,-1); + uVar16 = _InputArray::type((_InputArray *)param_2,-1); + cVar13 = _InputArray::sameSize(param_1,(_InputArray *)param_2); + if ((((uint)uVar15 & 7) != ((uint)uVar16 & 7)) || (cVar13 == '\0')) { + /* try { // try from 0028b5c8 to 0038b5cb has its CatchHandler @ 0028b5d0 */ + /* try { // try from 0028b5cc to 0038b63b has its CatchHandler @ 0028a7f4 */ + /* catch() { ... } // from try @ 0028b5c8 with catch @ 0028b5d0 */ + local_60 = 0; + /* catch() { ... } // from try @ 0028b44c with catch @ 0028b5d4 */ + local_58 = 0; + /* catch() { ... } // from try @ 0028ae7c with catch @ 0028b5d8 */ + pcVar17 = (char *)String::allocate((String *)&local_60,0x27); + cVar13 = s__src_sameSize__dst_____sdepth____004636e0[0x26]; + uVar12 = s__src_sameSize__dst_____sdepth____004636e0._36_2_; + uVar11 = s__src_sameSize__dst_____sdepth____004636e0._24_8_; + uVar10 = s__src_sameSize__dst_____sdepth____004636e0._16_8_; + uVar9 = s__src_sameSize__dst_____sdepth____004636e0._8_8_; + uVar8 = s__src_sameSize__dst_____sdepth____004636e0._0_8_; + /* catch() { ... } // from try @ 0028ae10 with catch @ 0028b5dc */ + /* catch() { ... } // from try @ 0028ada0 with catch @ 0028b5e0 */ + /* catch() { ... } // from try @ 0028ad34 with catch @ 0028b5e4 */ + /* catch() { ... } // from try @ 0028acc4 with catch @ 0028b5e8 */ + /* catch() { ... } // from try @ 0028ab94 with catch @ 0028b5ec */ + /* catch() { ... } // from try @ 0028aa70 with catch @ 0028b5f0 */ + /* catch() { ... } // from try @ 0028ac3c with catch @ 0028b5f4 */ + /* catch() { ... } // from try @ 0028abe0 with catch @ 0028b604 */ + /* catch() { ... } // from try @ 0028ab4c with catch @ 0028b618 */ + *(undefined4 *)(pcVar17 + 0x20) = s__src_sameSize__dst_____sdepth____004636e0._32_4_; + *(undefined2 *)(pcVar17 + 0x24) = uVar12; + pcVar17[0x26] = cVar13; + *(undefined8 *)pcVar17 = uVar8; + *(undefined8 *)(pcVar17 + 8) = uVar9; + *(undefined8 *)(pcVar17 + 0x10) = uVar10; + *(undefined8 *)(pcVar17 + 0x18) = uVar11; + error(-0xd7,(String *)&local_60, + "void cv::insertChannel(cv::InputArray, cv::InputOutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x598); + String::deallocate((String *)&local_60); + } + /* try { // try from 0028b63c to 0038b687 has its CatchHandler @ 0028b6a0 */ + if (((int)((uint)((uVar16 & 0xffffffff) >> 3) & 0x1ff) < param_3 || + ((uVar15 & 0xffffffff) >> 3 & 0x1ff) != 0) || (param_3 < 0)) { + /* catch() { ... } // from try @ 0028b12c with catch @ 0028b7e0 */ + local_60 = 0; + local_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x21); + uVar11 = s_0_<__coi_&&_coi_<_dcn_&&_scn____1_004636b8._24_8_; + uVar10 = s_0_<__coi_&&_coi_<_dcn_&&_scn____1_004636b8._16_8_; + uVar9 = s_0_<__coi_&&_coi_<_dcn_&&_scn____1_004636b8._8_8_; + uVar8 = s_0_<__coi_&&_coi_<_dcn_&&_scn____1_004636b8._0_8_; + pcVar17[0x20] = s_0_<__coi_&&_coi_<_dcn_&&_scn____1_004636b8[0x20]; + *(undefined8 *)pcVar17 = uVar8; + *(undefined8 *)(pcVar17 + 8) = uVar9; + *(undefined8 *)(pcVar17 + 0x10) = uVar10; + *(undefined8 *)(pcVar17 + 0x18) = uVar11; + error(-0xd7,(String *)&local_60, + "void cv::insertChannel(cv::InputArray, cv::InputOutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/convert.cpp",0x599); + /* catch() { ... } // from try @ 0028af6c with catch @ 0028b834 */ + /* catch() { ... } // from try @ 0028b0ac with catch @ 0028b83c */ + String::deallocate((String *)&local_60); + local_128 = (ulong)(uint)param_3 << 0x20; + cVar13 = ocl::useOpenCL(); + } + else { + local_128 = (ulong)(uint)param_3 << 0x20; + cVar13 = ocl::useOpenCL(); + } + if (cVar13 != '\0') { + iVar14 = _InputArray::dims(param_1,-1); + if ((iVar14 < 3) && (iVar14 = _InputArray::kind((_InputArray *)param_2), iVar14 == 0xa0000)) { + _InputArray::getUMat((int)param_1); + _InputArray::getUMat((int)param_2); + local_120 = (UMat *)0x0; + local_118 = (UMat *)0x0; + local_110 = (UMat *)0x0; + local_120 = operator_new(0x50); + local_110 = local_120 + 0x50; + *(undefined4 *)local_120 = local_c0; + *(int *)(local_120 + 4) = local_bc; + /* try { // try from 0028b8e4 to 0038b933 has its CatchHandler @ 0028bb0c */ + *(undefined4 *)(local_120 + 8) = local_b8; + *(undefined8 *)(local_120 + 0x10) = local_b0; + *(undefined4 *)(local_120 + 0xc) = local_b4; + *(long *)(local_120 + 0x20) = local_a0; + *(undefined4 *)(local_120 + 0x18) = (undefined4)local_a8; + *(undefined8 *)(local_120 + 0x28) = local_98; + *(UMat **)(local_120 + 0x30) = local_120 + 8; + *(UMat **)(local_120 + 0x38) = local_120 + 0x40; + *(undefined8 *)(local_120 + 0x48) = 0; + *(undefined8 *)(local_120 + 0x40) = 0; + if (local_a0 != 0) { + piVar1 = (int *)(local_a0 + 0x10); + do { + cVar13 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar13 = ExclusiveMonitorsStatus(); + } + } while (cVar13 != '\0'); + } + if (local_bc < 3) { + puVar18 = *(undefined8 **)(local_120 + 0x38); + *puVar18 = *local_88; + /* try { // try from 0028b954 to 0038b99f has its CatchHandler @ 0028bb10 */ + puVar18[1] = local_88[1]; + } + else { + *(undefined4 *)(local_120 + 4) = 0; + local_118 = local_120; + UMat::copySize(local_120,(UMat *)&local_c0); + } + local_118 = local_110; + local_108 = (UMat *)0x0; + local_e0 = 0; + local_dc = 0; + local_f0[0] = 0x10b0000; + local_100 = (UMat *)0x0; + local_f8 = (UMat *)0x0; + local_e8 = &local_120; + local_108 = operator_new(0x50); + local_f8 = local_108 + 0x50; + *(undefined4 *)local_108 = (undefined4)local_60; + *(int *)(local_108 + 4) = local_60._4_4_; + /* try { // try from 0028b9c0 to 0038ba0f has its CatchHandler @ 0028bb14 */ + *(undefined4 *)(local_108 + 8) = (undefined4)local_58; + *(undefined8 *)(local_108 + 0x10) = local_50; + *(undefined4 *)(local_108 + 0xc) = local_58._4_4_; + *(long *)(local_108 + 0x20) = local_40; + *(undefined4 *)(local_108 + 0x18) = (undefined4)local_48; + *(undefined8 *)(local_108 + 0x28) = local_38; + *(UMat **)(local_108 + 0x30) = local_108 + 8; + *(UMat **)(local_108 + 0x38) = local_108 + 0x40; + *(undefined8 *)(local_108 + 0x48) = 0; + *(undefined8 *)(local_108 + 0x40) = 0; + if (local_40 != 0) { + piVar1 = (int *)(local_40 + 0x10); + do { + cVar13 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar13 = ExclusiveMonitorsStatus(); + } + } while (cVar13 != '\0'); + } + if (local_60._4_4_ < 3) { + puVar18 = *(undefined8 **)(local_108 + 0x38); + *puVar18 = *local_28; + /* try { // try from 0028ba30 to 0038ba7b has its CatchHandler @ 0028bb18 */ + puVar18[1] = local_28[1]; + } + else { + *(undefined4 *)(local_108 + 4) = 0; + local_100 = local_108; + UMat::copySize(local_108,(UMat *)&local_60); + } + local_100 = local_f8; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x430b0000; + local_d0 = &local_108; + mixChannels((_InputArray *)local_f0,(_InputOutputArray *)local_d8,(int *)&local_128,1); + pUVar6 = local_100; + pUVar5 = local_100; + for (pUVar2 = local_108; pUVar2 != pUVar6; pUVar2 = pUVar2 + 0x50) { + UMat::~UMat(pUVar2); + pUVar5 = local_108; + } + pUVar2 = local_120; + pUVar6 = local_118; + pUVar7 = local_118; + if (pUVar5 != (UMat *)0x0) { + operator_delete(pUVar5); + pUVar2 = local_120; + pUVar6 = local_118; + pUVar7 = local_118; + } + /* try { // try from 0028baa0 to 0038baf3 has its CatchHandler @ 0028bb08 */ + for (; pUVar5 = local_118, pUVar2 != local_118; pUVar2 = pUVar2 + 0x50) { + local_118 = pUVar7; + UMat::~UMat(pUVar2); + pUVar6 = local_120; + pUVar7 = local_118; + local_118 = pUVar5; + } + local_118 = pUVar7; + if (pUVar6 != (UMat *)0x0) { + operator_delete(pUVar6); + } + UMat::~UMat((UMat *)&local_60); + UMat::~UMat((UMat *)&local_c0); + return; + } + } + iVar14 = _InputArray::kind(param_1); + if (iVar14 == 0x10000) { + pMVar19 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar19; + local_b0 = *(undefined8 *)(pMVar19 + 0x10); + local_bc = *(int *)(pMVar19 + 4); + local_b8 = *(undefined4 *)(pMVar19 + 8); + local_b4 = *(undefined4 *)(pMVar19 + 0xc); + local_a8 = *(undefined8 *)(pMVar19 + 0x18); + local_a0 = *(long *)(pMVar19 + 0x20); + local_98 = *(undefined8 *)(pMVar19 + 0x28); + local_90 = *(undefined8 *)(pMVar19 + 0x30); + local_88 = *(undefined8 **)(pMVar19 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != (undefined8 *)0x0) { + piVar1 = (int *)((long)local_88 + 0x14); + do { + cVar13 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar13 = ExclusiveMonitorsStatus(); + } + } while (cVar13 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar19 + 0x48); + local_68 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar14 = _InputArray::kind((_InputArray *)param_2); + if (iVar14 == 0x10000) { + /* try { // try from 0028baf4 to 0038bb1b has its CatchHandler @ 0028a7f4 */ + pMVar19 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar3 = *(uint *)pMVar19; + /* catch() { ... } // from try @ 0028baa0 with catch @ 0028bb08 */ + /* catch() { ... } // from try @ 0028b8e4 with catch @ 0028bb0c */ + local_50 = *(undefined8 *)(pMVar19 + 0x10); + /* catch() { ... } // from try @ 0028b954 with catch @ 0028bb10 */ + local_60 = *(ulong *)pMVar19; + /* catch() { ... } // from try @ 0028b9c0 with catch @ 0028bb14 */ + /* catch() { ... } // from try @ 0028ba30 with catch @ 0028bb18 */ + /* try { // try from 0028bb1c to 0038bb6f has its CatchHandler @ 0028bb1c + catch() { ... } // from try @ 0028bb1c with catch @ 0028bb1c + catch() { ... } // from try @ 0028bb80 with catch @ 0028bb1c */ + local_58 = *(undefined8 *)(pMVar19 + 8); + local_48 = *(undefined8 *)(pMVar19 + 0x18); + local_40 = *(long *)(pMVar19 + 0x20); + local_38 = *(undefined8 *)(pMVar19 + 0x28); + local_30 = *(undefined8 *)(pMVar19 + 0x30); + local_28 = *(undefined8 **)(pMVar19 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != (undefined8 *)0x0) { + piVar1 = (int *)((long)local_28 + 0x14); + do { + /* try { // try from 0028bb70 to 0038bb7f has its CatchHandler @ 0028bca4 */ + cVar13 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar13 = ExclusiveMonitorsStatus(); + } + } while (cVar13 != '\0'); + } + /* try { // try from 0028bb80 to 0038bcb7 has its CatchHandler @ 0028bb1c */ + if (*(int *)(pMVar19 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar19 + 0x48); + local_8 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar3; + Mat::copySize((Mat *)&local_60,pMVar19); + } + } + else { + /* catch() { ... } // from try @ 0028b63c with catch @ 0028b6a0 */ + /* catch() { ... } // from try @ 0028aa30 with catch @ 0028b6a4 */ + _InputArray::getMat_((int)param_2); + } + /* try { // try from 0028b6c8 to 0038b71b has its CatchHandler @ 0028b730 */ + mixChannels((Mat *)&local_c0,1,(Mat *)&local_60,1,(int *)&local_128,1); + if (local_28 != (undefined8 *)0x0) { + piVar1 = (int *)((long)local_28 + 0x14); + do { + iVar14 = *piVar1; + cVar13 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar14 + -1; + cVar13 = ExclusiveMonitorsStatus(); + } + } while (cVar13 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = (undefined8 *)0x0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar14 = 0; + puVar18 = local_20; + do { + *(undefined4 *)puVar18 = 0; + iVar14 = iVar14 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar14 < local_60._4_4_); + } + /* catch() { ... } // from try @ 0028b6c8 with catch @ 0028b730 */ + /* catch() { ... } // from try @ 0028a980 with catch @ 0028b734 */ + if (local_18 != &local_10) { + fastFree(local_18); + } + /* catch() { ... } // from try @ 0028a934 with catch @ 0028b748 */ + if (local_88 != (undefined8 *)0x0) { + piVar1 = (int *)((long)local_88 + 0x14); + do { + iVar14 = *piVar1; + cVar13 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar14 + -1; + cVar13 = ExclusiveMonitorsStatus(); + } + } while (cVar13 != '\0'); + /* catch() { ... } // from try @ 0028a8c0 with catch @ 0028b760 */ + if (iVar14 == 1) { + /* catch() { ... } // from try @ 0028a86c with catch @ 0028b768 */ + Mat::deallocate((Mat *)&local_c0); + } + } + /* catch() { ... } // from try @ 0028a850 with catch @ 0028b770 */ + local_88 = (undefined8 *)0x0; + local_b0 = 0; + /* catch() { ... } // from try @ 0028b16c with catch @ 0028b780 */ + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + /* catch() { ... } // from try @ 0028b50c with catch @ 0028b78c */ + if (0 < local_bc) { + iVar14 = 0; + puVar20 = local_80; + do { + *puVar20 = 0; + iVar14 = iVar14 + 1; + puVar20 = puVar20 + 1; + } while (iVar14 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0028bdc0 (880 bytes) name=FUN_0028bdc0 + +void FUN_0028bdc0(undefined1 *param_1,long param_2,char *param_3,long param_4,undefined1 *param_5, + long param_6,int *param_7,ulong *param_8) + +{ + ulong uVar1; + int iVar2; + undefined1 *puVar3; + int iVar4; + undefined1 *puVar5; + ulong uVar6; + undefined8 *puVar7; + ulong uVar8; + int iVar9; + ulong uVar10; + char *pcVar11; + ulong uVar12; + long lVar13; + ulong uVar14; + ulong uVar15; + undefined8 *puVar16; + undefined8 uVar17; + + uVar6 = *param_8; + iVar9 = param_7[1]; + iVar4 = iVar9 + -1; + param_7[1] = iVar4; + if (iVar9 != 0) { + iVar9 = *param_7; + uVar15 = -(long)param_1; + do { + iVar2 = iVar4; + if (0 < iVar9) { + iVar4 = 0; + puVar3 = param_1; + puVar5 = param_5; + pcVar11 = param_3; + uVar12 = uVar15; + do { + if ((*pcVar11 != '\0') && (uVar6 != 0)) { + if ((puVar3 < puVar5 + 0x10 && puVar5 < puVar3 + 0x10) || (uVar6 < 0x16)) { + uVar8 = 0; + do { + puVar5[uVar8] = puVar3[uVar8]; + uVar8 = uVar8 + 1; + } while (uVar8 != uVar6); + } + else { + uVar8 = uVar12 & 0xf; + if (uVar6 < (uVar12 & 0xf)) { + uVar8 = uVar6; + } + uVar10 = uVar8; + if ((((uVar8 != 0) && (*puVar5 = *puVar3, uVar8 != 1)) && + (puVar5[1] = puVar3[1], uVar8 != 2)) && + ((puVar5[2] = puVar3[2], uVar8 != 3 && (puVar5[3] = puVar3[3], uVar8 != 4)))) { + puVar5[4] = puVar3[4]; + if (uVar8 == 5) { + uVar10 = 5; + } + else { + puVar5[5] = puVar3[5]; + if (((uVar8 != 6) && (puVar5[6] = puVar3[6], uVar8 != 7)) && + ((puVar5[7] = puVar3[7], uVar8 != 8 && + ((((puVar5[8] = puVar3[8], uVar8 != 9 && (puVar5[9] = puVar3[9], uVar8 != 10)) + && (puVar5[10] = puVar3[10], uVar8 != 0xb)) && + ((puVar5[0xb] = puVar3[0xb], uVar8 != 0xc && + (puVar5[0xc] = puVar3[0xc], uVar8 != 0xd)))))))) { + puVar5[0xd] = puVar3[0xd]; + if (uVar8 == 0xf) { + puVar5[0xe] = puVar3[0xe]; + } + else { + uVar10 = 0xe; + } + } + } + } + uVar1 = ((uVar6 - uVar8) - 0x10 >> 4) + 1; + lVar13 = uVar1 * 0x10; + if (0xe < (uVar6 - 1) - uVar8) { + uVar14 = 0; + puVar7 = (undefined8 *)(puVar5 + uVar8); + puVar16 = (undefined8 *)(puVar3 + uVar8); + do { + uVar17 = *puVar16; + uVar14 = uVar14 + 1; + puVar7[1] = puVar16[1]; + *puVar7 = uVar17; + puVar7 = puVar7 + 2; + puVar16 = puVar16 + 2; + } while (uVar14 < uVar1); + uVar10 = uVar10 + lVar13; + if (uVar6 - uVar8 == lVar13) goto LAB_0028c0a4; + } + uVar8 = uVar10 + 1; + puVar5[uVar10] = puVar3[uVar10]; + if (uVar8 < uVar6) { + uVar1 = uVar10 + 2; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar1 < uVar6) { + uVar8 = uVar10 + 3; + puVar5[uVar1] = puVar3[uVar1]; + if (uVar8 < uVar6) { + uVar1 = uVar10 + 4; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar1 < uVar6) { + uVar8 = uVar10 + 5; + puVar5[uVar1] = puVar3[uVar1]; + if (uVar8 < uVar6) { + uVar1 = uVar10 + 6; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar1 < uVar6) { + uVar8 = uVar10 + 7; + puVar5[uVar1] = puVar3[uVar1]; + if (uVar8 < uVar6) { + uVar1 = uVar10 + 8; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar1 < uVar6) { + /* catch() { ... } // from try @ 0028bd14 with catch @ 0028c024 */ + uVar8 = uVar10 + 9; + puVar5[uVar1] = puVar3[uVar1]; + if (uVar8 < uVar6) { + uVar1 = uVar10 + 10; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar1 < uVar6) { + uVar8 = uVar10 + 0xb; + puVar5[uVar1] = puVar3[uVar1]; + if (uVar8 < uVar6) { + uVar1 = uVar10 + 0xc; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar1 < uVar6) { + uVar8 = uVar10 + 0xd; + puVar5[uVar1] = puVar3[uVar1]; + if (uVar8 < uVar6) { + uVar10 = uVar10 + 0xe; + puVar5[uVar8] = puVar3[uVar8]; + if (uVar10 < uVar6) { + puVar5[uVar10] = puVar3[uVar10]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0028c0a4: + iVar9 = *param_7; + } + iVar4 = iVar4 + 1; + puVar3 = puVar3 + uVar6; + puVar5 = puVar5 + uVar6; + pcVar11 = pcVar11 + 1; + uVar12 = uVar12 - uVar6; + } while (iVar4 < iVar9); + iVar2 = param_7[1]; + } + iVar4 = iVar2 + -1; + param_7[1] = iVar4; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + uVar15 = uVar15 - param_2; + } while (iVar2 != 0); + } + return; +} + + +================================================================== + +### FUNC 0028c130 (348 bytes) name=FUN_0028c130 + +void FUN_0028c130(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + long lVar2; + long lVar3; + int iVar4; + char cVar5; + int iVar6; + uint uVar7; + long lVar8; + long lVar9; + char *pcVar10; + undefined2 *puVar11; + undefined2 *puVar12; + int iVar13; + + iVar4 = *param_7; + iVar13 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + iVar6 = (uVar7 + 1) * 4; + if (iVar4 + -3 < 1) { + iVar6 = 0; + } + lVar8 = (long)iVar6 * 3; + do { + if (0 < iVar4 + -3) { + puVar12 = (undefined2 *)(param_1 + 9); + puVar11 = (undefined2 *)(param_5 + 9); + lVar9 = 0; + pcVar10 = param_3; + do { + if (*pcVar10 != '\0') { + *(undefined2 *)(param_5 + lVar9) = *(undefined2 *)(param_1 + lVar9); + *(undefined1 *)(param_5 + lVar9 + 2) = *(undefined1 *)(param_1 + lVar9 + 2); + } + lVar9 = lVar9 + 0xc; + if (pcVar10[1] != '\0') { + puVar11[-3] = puVar12[-3]; + *(undefined1 *)(puVar11 + -2) = *(undefined1 *)(puVar12 + -2); + } + if (pcVar10[2] != '\0') { + *(undefined2 *)((long)puVar11 + -3) = *(undefined2 *)((long)puVar12 + -3); + *(undefined1 *)((long)puVar11 + -1) = *(undefined1 *)((long)puVar12 + -1); + } + pcVar1 = pcVar10 + 3; + pcVar10 = pcVar10 + 4; + if (*pcVar1 != '\0') { + *puVar11 = *puVar12; + *(undefined1 *)(puVar11 + 1) = *(undefined1 *)(puVar12 + 1); + } + puVar12 = puVar12 + 6; + puVar11 = puVar11 + 6; + } while (lVar9 != ((ulong)uVar7 + 1) * 0xc); + } + if (iVar6 < iVar4) { + pcVar10 = param_3 + iVar6; + lVar2 = param_1 + lVar8; + lVar3 = param_5 + lVar8; + lVar9 = 0; + do { + cVar5 = *pcVar10; + pcVar10 = pcVar10 + 1; + if (cVar5 != '\0') { + *(undefined2 *)(lVar3 + lVar9) = *(undefined2 *)(lVar2 + lVar9); + *(undefined1 *)(lVar3 + lVar9 + 2) = *(undefined1 *)(lVar2 + lVar9 + 2); + } + lVar9 = lVar9 + 3; + } while (lVar9 != ((ulong)(uint)((iVar4 + -1) - iVar6) + 1) * 3); + } + iVar13 = iVar13 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar13 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028c28c (260 bytes) name=FUN_0028c28c + +void FUN_0028c28c(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + int iVar2; + int iVar3; + uint uVar4; + char *pcVar5; + long lVar6; + undefined4 *puVar7; + undefined4 *puVar8; + int iVar9; + long lVar10; + + iVar2 = *param_7; + iVar9 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar4 = iVar2 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (iVar2 + -3 < 1) { + iVar3 = 0; + } + lVar10 = (long)iVar3 * 4; + do { + if (0 < iVar2 + -3) { + puVar7 = (undefined4 *)(param_1 + 0xc); + puVar8 = (undefined4 *)(param_5 + 0xc); + pcVar5 = param_3; + do { + if (*pcVar5 != '\0') { + puVar8[-3] = puVar7[-3]; + } + if (pcVar5[1] != '\0') { + puVar8[-2] = puVar7[-2]; + } + if (pcVar5[2] != '\0') { + puVar8[-1] = puVar7[-1]; + } + pcVar1 = pcVar5 + 3; + pcVar5 = pcVar5 + 4; + if (*pcVar1 != '\0') { + *puVar8 = *puVar7; + } + puVar7 = puVar7 + 4; + puVar8 = puVar8 + 4; + } while (puVar7 != (undefined4 *)(param_1 + (ulong)uVar4 * 0x10 + 0x1c)); + } + if (iVar3 < iVar2) { + lVar6 = 0; + do { + if (param_3[lVar6 + iVar3] != '\0') { + *(undefined4 *)(param_5 + lVar10 + lVar6 * 4) = + *(undefined4 *)(param_1 + lVar10 + lVar6 * 4); + } + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar2 + -1) - iVar3) + 1); + } + iVar9 = iVar9 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar9 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028c390 (356 bytes) name=FUN_0028c390 + +void FUN_0028c390(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + long lVar2; + long lVar3; + int iVar4; + char cVar5; + int iVar6; + uint uVar7; + long lVar8; + char *pcVar9; + undefined4 *puVar10; + undefined4 *puVar11; + int iVar12; + long lVar13; + + iVar4 = *param_7; + iVar12 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + iVar6 = (uVar7 + 1) * 4; + if (iVar4 + -3 < 1) { + iVar6 = 0; + } + lVar13 = (long)iVar6 * 6; + do { + if (0 < iVar4 + -3) { + puVar11 = (undefined4 *)(param_1 + 0x12); + puVar10 = (undefined4 *)(param_5 + 0x12); + /* try { // try from 0028c404 to 0038c457 has its CatchHandler @ 0028c404 + catch() { ... } // from try @ 0028c404 with catch @ 0028c404 + catch() { ... } // from try @ 0028c468 with catch @ 0028c404 */ + lVar8 = 0; + pcVar9 = param_3; + do { + if (*pcVar9 != '\0') { + *(undefined4 *)(param_5 + lVar8) = *(undefined4 *)(param_1 + lVar8); + *(undefined2 *)(param_5 + lVar8 + 4) = *(undefined2 *)(param_1 + lVar8 + 4); + } + lVar8 = lVar8 + 0x18; + if (pcVar9[1] != '\0') { + puVar10[-3] = puVar11[-3]; + *(undefined2 *)(puVar10 + -2) = *(undefined2 *)(puVar11 + -2); + } + if (pcVar9[2] != '\0') { + *(undefined4 *)((long)puVar10 + -6) = *(undefined4 *)((long)puVar11 + -6); + /* try { // try from 0028c458 to 0038c467 has its CatchHandler @ 0028c5a4 */ + *(undefined2 *)((long)puVar10 + -2) = *(undefined2 *)((long)puVar11 + -2); + } + pcVar1 = pcVar9 + 3; + pcVar9 = pcVar9 + 4; + /* try { // try from 0028c468 to 0038c5b7 has its CatchHandler @ 0028c404 */ + if (*pcVar1 != '\0') { + *puVar10 = *puVar11; + *(undefined2 *)(puVar10 + 1) = *(undefined2 *)(puVar11 + 1); + } + puVar11 = puVar11 + 6; + puVar10 = puVar10 + 6; + } while (lVar8 != ((ulong)uVar7 + 1) * 0x18); + } + if (iVar6 < iVar4) { + pcVar9 = param_3 + iVar6; + lVar2 = param_1 + lVar13; + lVar3 = param_5 + lVar13; + lVar8 = 0; + do { + cVar5 = *pcVar9; + pcVar9 = pcVar9 + 1; + if (cVar5 != '\0') { + *(undefined4 *)(lVar3 + lVar8) = *(undefined4 *)(lVar2 + lVar8); + *(undefined2 *)(lVar3 + lVar8 + 4) = *(undefined2 *)(lVar2 + lVar8 + 4); + } + lVar8 = lVar8 + 6; + } while (lVar8 != ((ulong)(uint)((iVar4 + -1) - iVar6) + 1) * 6); + } + iVar12 = iVar12 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar12 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028c4f4 (272 bytes) name=FUN_0028c4f4 + +void FUN_0028c4f4(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + int iVar2; + char cVar3; + int iVar4; + uint uVar5; + char *pcVar6; + long lVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int iVar10; + long lVar11; + + iVar2 = *param_7; + iVar10 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar5 = iVar2 - 4U >> 2; + iVar4 = (uVar5 + 1) * 4; + if (iVar2 + -3 < 1) { + iVar4 = 0; + } + lVar11 = (long)iVar4 * 8; + do { + if (0 < iVar2 + -3) { + puVar9 = (undefined8 *)(param_1 + 0x18); + puVar8 = (undefined8 *)(param_5 + 0x18); + lVar7 = 0; + pcVar6 = param_3; + do { + if (*pcVar6 != '\0') { + *(undefined8 *)(param_5 + lVar7) = *(undefined8 *)(param_1 + lVar7); + } + lVar7 = lVar7 + 0x20; + if (pcVar6[1] != '\0') { + puVar8[-2] = puVar9[-2]; + } + if (pcVar6[2] != '\0') { + puVar8[-1] = puVar9[-1]; + } + pcVar1 = pcVar6 + 3; + pcVar6 = pcVar6 + 4; + if (*pcVar1 != '\0') { + *puVar8 = *puVar9; + } + /* catch() { ... } // from try @ 0028c458 with catch @ 0028c5a4 */ + puVar9 = puVar9 + 4; + puVar8 = puVar8 + 4; + } while (lVar7 != ((ulong)uVar5 + 1) * 0x20); + } + if (iVar4 < iVar2) { + pcVar6 = param_3 + iVar4; + lVar7 = 0; + do { + cVar3 = *pcVar6; + pcVar6 = pcVar6 + 1; + if (cVar3 != '\0') { + *(undefined8 *)(param_5 + lVar11 + lVar7) = *(undefined8 *)(param_1 + lVar11 + lVar7); + } + lVar7 = lVar7 + 8; + } while (lVar7 != ((ulong)(uint)((iVar2 + -1) - iVar4) + 1) * 8); + } + iVar10 = iVar10 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar10 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028c604 (356 bytes) name=FUN_0028c604 + +void FUN_0028c604(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + long lVar2; + long lVar3; + int iVar4; + char cVar5; + int iVar6; + uint uVar7; + long lVar8; + char *pcVar9; + undefined8 *puVar10; + undefined8 *puVar11; + int iVar12; + long lVar13; + + iVar4 = *param_7; + iVar12 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar7 = iVar4 - 4U >> 2; + iVar6 = (uVar7 + 1) * 4; + if (iVar4 + -3 < 1) { + iVar6 = 0; + } + lVar13 = (long)iVar6 * 0xc; + do { + if (0 < iVar4 + -3) { + puVar11 = (undefined8 *)(param_1 + 0x24); + puVar10 = (undefined8 *)(param_5 + 0x24); + lVar8 = 0; + pcVar9 = param_3; + do { + if (*pcVar9 != '\0') { + *(undefined8 *)(param_5 + lVar8) = *(undefined8 *)(param_1 + lVar8); + *(undefined4 *)(param_5 + lVar8 + 8) = *(undefined4 *)(param_1 + lVar8 + 8); + } + lVar8 = lVar8 + 0x30; + if (pcVar9[1] != '\0') { + puVar10[-3] = puVar11[-3]; + *(undefined4 *)(puVar10 + -2) = *(undefined4 *)(puVar11 + -2); + } + if (pcVar9[2] != '\0') { + *(undefined8 *)((long)puVar10 + -0xc) = *(undefined8 *)((long)puVar11 + -0xc); + *(undefined4 *)((long)puVar10 + -4) = *(undefined4 *)((long)puVar11 + -4); + } + pcVar1 = pcVar9 + 3; + pcVar9 = pcVar9 + 4; + if (*pcVar1 != '\0') { + *puVar10 = *puVar11; + *(undefined4 *)(puVar10 + 1) = *(undefined4 *)(puVar11 + 1); + } + puVar11 = puVar11 + 6; + puVar10 = puVar10 + 6; + } while (lVar8 != ((ulong)uVar7 + 1) * 0x30); + } + if (iVar6 < iVar4) { + pcVar9 = param_3 + iVar6; + lVar2 = param_1 + lVar13; + lVar3 = param_5 + lVar13; + lVar8 = 0; + do { + cVar5 = *pcVar9; + pcVar9 = pcVar9 + 1; + if (cVar5 != '\0') { + *(undefined8 *)(lVar3 + lVar8) = *(undefined8 *)(lVar2 + lVar8); + *(undefined4 *)(lVar3 + lVar8 + 8) = *(undefined4 *)(lVar2 + lVar8 + 8); + } + lVar8 = lVar8 + 0xc; + } while (lVar8 != ((ulong)(uint)((iVar4 + -1) - iVar6) + 1) * 0xc); + } + iVar12 = iVar12 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar12 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028c768 (312 bytes) name=FUN_0028c768 + +void FUN_0028c768(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 uVar4; + int iVar5; + char cVar6; + int iVar7; + uint uVar8; + char *pcVar9; + long lVar10; + undefined8 *puVar11; + undefined8 *puVar12; + int iVar13; + long lVar14; + + iVar5 = *param_7; + iVar13 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar8 = iVar5 - 4U >> 2; + iVar7 = (uVar8 + 1) * 4; + if (iVar5 + -3 < 1) { + iVar7 = 0; + } + lVar14 = (long)iVar7 * 0x10; + do { + if (0 < iVar5 + -3) { + puVar12 = (undefined8 *)(param_1 + 0x30); + puVar11 = (undefined8 *)(param_5 + 0x30); + lVar10 = 0; + pcVar9 = param_3; + do { + puVar2 = (undefined8 *)(param_1 + lVar10); + puVar3 = (undefined8 *)(param_5 + lVar10); + lVar10 = lVar10 + 0x40; + if (*pcVar9 != '\0') { + uVar4 = puVar2[1]; + *puVar3 = *puVar2; + puVar3[1] = uVar4; + } + if (pcVar9[1] != '\0') { + uVar4 = puVar12[-3]; + puVar11[-4] = puVar12[-4]; + puVar11[-3] = uVar4; + } + if (pcVar9[2] != '\0') { + uVar4 = puVar12[-1]; + puVar11[-2] = puVar12[-2]; + puVar11[-1] = uVar4; + } + pcVar1 = pcVar9 + 3; + pcVar9 = pcVar9 + 4; + if (*pcVar1 != '\0') { + uVar4 = puVar12[1]; + *puVar11 = *puVar12; + puVar11[1] = uVar4; + } + puVar12 = puVar12 + 8; + puVar11 = puVar11 + 8; + } while (lVar10 != ((ulong)uVar8 + 1) * 0x40); + } + if (iVar7 < iVar5) { + pcVar9 = param_3 + iVar7; + lVar10 = 0; + do { + cVar6 = *pcVar9; + puVar12 = (undefined8 *)(param_1 + lVar14 + lVar10); + puVar11 = (undefined8 *)(param_5 + lVar14 + lVar10); + lVar10 = lVar10 + 0x10; + pcVar9 = pcVar9 + 1; + if (cVar6 != '\0') { + uVar4 = puVar12[1]; + *puVar11 = *puVar12; + puVar11[1] = uVar4; + } + } while (lVar10 != ((ulong)(uint)((iVar5 + -1) - iVar7) + 1) * 0x10); + } + iVar13 = iVar13 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar13 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028c8a0 (380 bytes) name=FUN_0028c8a0 + +void FUN_0028c8a0(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 uVar4; + int iVar5; + char cVar6; + int iVar7; + uint uVar8; + char *pcVar9; + undefined8 *puVar10; + undefined8 *puVar11; + long lVar12; + int iVar13; + long lVar14; + + iVar5 = *param_7; + iVar13 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar8 = iVar5 - 4U >> 2; + iVar7 = (uVar8 + 1) * 4; + if (iVar5 + -3 < 1) { + iVar7 = 0; + } + lVar14 = (long)iVar7 * 0x18; + do { + if (0 < iVar5 + -3) { + puVar11 = (undefined8 *)(param_1 + 0x48); + puVar10 = (undefined8 *)(param_5 + 0x48); + lVar12 = 0; + pcVar9 = param_3; + do { + puVar2 = (undefined8 *)(param_1 + lVar12); + puVar3 = (undefined8 *)(param_5 + lVar12); + lVar12 = lVar12 + 0x60; + if (*pcVar9 != '\0') { + uVar4 = puVar2[1]; + *puVar3 = *puVar2; + puVar3[1] = uVar4; + puVar3[2] = puVar2[2]; + } + if (pcVar9[1] != '\0') { + uVar4 = puVar11[-5]; + puVar10[-6] = puVar11[-6]; + puVar10[-5] = uVar4; + puVar10[-4] = puVar11[-4]; + } + if (pcVar9[2] != '\0') { + uVar4 = puVar11[-2]; + puVar10[-3] = puVar11[-3]; + puVar10[-2] = uVar4; + puVar10[-1] = puVar11[-1]; + } + pcVar1 = pcVar9 + 3; + pcVar9 = pcVar9 + 4; + if (*pcVar1 != '\0') { + uVar4 = puVar11[1]; + *puVar10 = *puVar11; + puVar10[1] = uVar4; + puVar10[2] = puVar11[2]; + } + puVar11 = puVar11 + 0xc; + puVar10 = puVar10 + 0xc; + } while (lVar12 != ((ulong)uVar8 + 1) * 0x60); + } + if (iVar7 < iVar5) { + pcVar9 = param_3 + iVar7; + lVar12 = 0; + do { + cVar6 = *pcVar9; + puVar11 = (undefined8 *)(param_1 + lVar14 + lVar12); + puVar10 = (undefined8 *)(param_5 + lVar14 + lVar12); + lVar12 = lVar12 + 0x18; + pcVar9 = pcVar9 + 1; + if (cVar6 != '\0') { + uVar4 = puVar11[1]; + *puVar10 = *puVar11; + puVar10[1] = uVar4; + puVar10[2] = puVar11[2]; + } + } while (lVar12 != ((ulong)(uint)((iVar5 + -1) - iVar7) + 1) * 0x18); + } + iVar13 = iVar13 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar13 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028ca1c (352 bytes) name=FUN_0028ca1c + +void FUN_0028ca1c(long param_1,long param_2,char *param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + char *pcVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 uVar4; + int iVar5; + char cVar6; + int iVar7; + uint uVar8; + char *pcVar9; + long lVar10; + undefined8 *puVar11; + undefined8 *puVar12; + int iVar13; + long lVar14; + + iVar5 = *param_7; + iVar13 = param_7[1] + -1; + if (param_7[1] != 0) { + uVar8 = iVar5 - 4U >> 2; + iVar7 = (uVar8 + 1) * 4; + if (iVar5 + -3 < 1) { + iVar7 = 0; + } + lVar14 = (long)iVar7 * 0x20; + do { + if (0 < iVar5 + -3) { + puVar12 = (undefined8 *)(param_1 + 0x60); + puVar11 = (undefined8 *)(param_5 + 0x60); + lVar10 = 0; + pcVar9 = param_3; + do { + puVar2 = (undefined8 *)(param_1 + lVar10); + puVar3 = (undefined8 *)(param_5 + lVar10); + lVar10 = lVar10 + 0x80; + if (*pcVar9 != '\0') { + uVar4 = puVar2[1]; + *puVar3 = *puVar2; + puVar3[1] = uVar4; + uVar4 = puVar2[3]; + puVar3[2] = puVar2[2]; + puVar3[3] = uVar4; + } + if (pcVar9[1] != '\0') { + uVar4 = puVar12[-7]; + puVar11[-8] = puVar12[-8]; + puVar11[-7] = uVar4; + uVar4 = puVar12[-5]; + puVar11[-6] = puVar12[-6]; + puVar11[-5] = uVar4; + } + if (pcVar9[2] != '\0') { + uVar4 = puVar12[-3]; + puVar11[-4] = puVar12[-4]; + puVar11[-3] = uVar4; + uVar4 = puVar12[-1]; + puVar11[-2] = puVar12[-2]; + puVar11[-1] = uVar4; + } + pcVar1 = pcVar9 + 3; + pcVar9 = pcVar9 + 4; + if (*pcVar1 != '\0') { + uVar4 = puVar12[1]; + *puVar11 = *puVar12; + puVar11[1] = uVar4; + uVar4 = puVar12[3]; + puVar11[2] = puVar12[2]; + puVar11[3] = uVar4; + } + puVar12 = puVar12 + 0x10; + puVar11 = puVar11 + 0x10; + } while (lVar10 != ((ulong)uVar8 + 1) * 0x80); + } + if (iVar7 < iVar5) { + pcVar9 = param_3 + iVar7; + lVar10 = 0; + do { + cVar6 = *pcVar9; + puVar12 = (undefined8 *)(param_1 + lVar14 + lVar10); + puVar11 = (undefined8 *)(param_5 + lVar14 + lVar10); + lVar10 = lVar10 + 0x20; + pcVar9 = pcVar9 + 1; + if (cVar6 != '\0') { + uVar4 = puVar12[1]; + *puVar11 = *puVar12; + puVar11[1] = uVar4; + uVar4 = puVar12[3]; + puVar11[2] = puVar12[2]; + puVar11[3] = uVar4; + } + } while (lVar10 != ((ulong)(uint)((iVar5 + -1) - iVar7) + 1) * 0x20); + } + iVar13 = iVar13 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar13 != -1); + } + return; +} + + +================================================================== + +### FUNC 0028cb7c (220 bytes) name=FUN_0028cb7c + +void FUN_0028cb7c(ulong *param_1,long param_2,undefined8 *param_3,long param_4,ulong *param_5, + long param_6,int *param_7) + +{ + int iVar1; + int iVar2; + uint uVar3; + ulong uVar4; + ulong *puVar5; + long lVar6; + ulong *puVar7; + ulong *puVar8; + undefined8 *puVar9; + int iVar10; + long lVar11; + char cVar12; + char cVar20; + undefined7 uVar13; + char cVar15; + char cVar16; + char cVar17; + char cVar18; + byte bVar19; + undefined8 uVar14; + char cVar21; + + iVar10 = param_7[1]; + iVar1 = *param_7; + if (iVar10 != 0) { + uVar3 = iVar1 - 8U >> 3; + iVar2 = (uVar3 + 1) * 8; + if (iVar1 + -7 < 1) { + iVar2 = 0; + } + lVar11 = (long)iVar2 * 2; + do { + if (0 < iVar1 + -7) { + puVar5 = param_5; + puVar7 = param_1; + puVar9 = param_3; + do { + uVar14 = *puVar9; + puVar8 = puVar7 + 2; + uVar4 = *puVar7; + cVar12 = -((char)uVar14 != '\0'); + cVar15 = -((char)((ulong)uVar14 >> 8) != '\0'); + cVar16 = -((char)((ulong)uVar14 >> 0x10) != '\0'); + cVar17 = -((char)((ulong)uVar14 >> 0x18) != '\0'); + cVar18 = -((char)((ulong)uVar14 >> 0x20) != '\0'); + bVar19 = -((char)((ulong)uVar14 >> 0x28) != '\0'); + cVar20 = -((char)((ulong)uVar14 >> 0x30) != '\0'); + cVar21 = -((char)((ulong)uVar14 >> 0x38) != '\0'); + uVar13 = CONCAT16(cVar21,(uint6)CONCAT14(cVar20,(uint)bVar19 << 0x10)); + puVar5[1] = puVar5[1] ^ + (puVar5[1] ^ puVar7[1]) & + CONCAT17(cVar21,CONCAT16(cVar21,CONCAT15(cVar20,(int5)CONCAT34((int3)((uint7) + uVar13 >> 0x20), + CONCAT13(bVar19,(int3)CONCAT52((int5)((uint7) + uVar13 >> 0x10),CONCAT11(cVar18,cVar18))))))); + *puVar5 = *puVar5 ^ (*puVar5 ^ uVar4) & + CONCAT17(cVar17,CONCAT16(cVar17,CONCAT15(cVar16,CONCAT14(cVar16, + CONCAT13(cVar15,CONCAT12(cVar15,CONCAT11(cVar12, + cVar12))))))); + puVar5 = puVar5 + 2; + puVar7 = puVar8; + puVar9 = puVar9 + 1; + } while (puVar8 != param_1 + ((ulong)uVar3 + 1) * 2); + } + if (iVar2 < iVar1) { + lVar6 = 0; + do { + if (*(char *)((long)param_3 + lVar6 + iVar2) != '\0') { + *(undefined2 *)((long)param_5 + lVar6 * 2 + lVar11) = + *(undefined2 *)((long)param_1 + lVar6 * 2 + lVar11); + } + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(uint)((iVar1 + -1) - iVar2) + 1); + } + iVar10 = iVar10 + -1; + param_3 = (undefined8 *)((long)param_3 + param_4); + param_1 = (ulong *)((long)param_1 + param_2); + param_5 = (ulong *)((long)param_5 + param_6); + } while (iVar10 != 0); + } + return; +} + + +================================================================== + +### FUNC 0028cc58 (192 bytes) name=FUN_0028cc58 + +void FUN_0028cc58(long param_1,long param_2,long param_3,long param_4,long param_5,long param_6, + int *param_7) + +{ + int iVar1; + undefined8 *puVar2; + byte *pbVar3; + byte *pbVar4; + int iVar5; + int iVar6; + byte bVar7; + byte bVar8; + byte bVar9; + byte bVar10; + byte bVar11; + byte bVar12; + byte bVar13; + byte bVar14; + byte bVar15; + byte bVar16; + byte bVar17; + byte bVar18; + byte bVar19; + byte bVar20; + byte bVar21; + long lVar22; + long lVar23; + int iVar24; + undefined8 uVar25; + undefined8 uVar26; + + iVar24 = param_7[1]; + iVar5 = *param_7; + if (iVar24 != 0) { + iVar6 = iVar5 + -0xf; + iVar1 = (iVar5 - 0x10U & 0xfffffff0) + 0x10; + if (iVar6 < 1) { + iVar1 = 0; + } + lVar23 = (long)iVar1; + do { + lVar22 = 0; + if (0 < iVar6) { + do { + puVar2 = (undefined8 *)(param_3 + lVar22); + pbVar3 = (byte *)(param_5 + lVar22); + pbVar4 = (byte *)(param_1 + lVar22); + lVar22 = lVar22 + 0x10; + uVar26 = puVar2[1]; + uVar25 = *puVar2; + bVar7 = *pbVar4; + bVar8 = pbVar4[1]; + bVar9 = pbVar4[2]; + bVar10 = pbVar4[3]; + bVar11 = pbVar4[4]; + bVar12 = pbVar4[5]; + bVar13 = pbVar4[6]; + bVar14 = pbVar4[7]; + bVar15 = pbVar4[9]; + bVar16 = pbVar4[10]; + bVar17 = pbVar4[0xb]; + bVar18 = pbVar4[0xc]; + bVar19 = pbVar4[0xd]; + bVar20 = pbVar4[0xe]; + bVar21 = pbVar4[0xf]; + pbVar3[8] = pbVar3[8] ^ (pbVar3[8] ^ pbVar4[8]) & -((char)uVar26 != '\0'); + pbVar3[9] = pbVar3[9] ^ (pbVar3[9] ^ bVar15) & -((char)((ulong)uVar26 >> 8) != '\0'); + pbVar3[10] = pbVar3[10] ^ (pbVar3[10] ^ bVar16) & -((char)((ulong)uVar26 >> 0x10) != '\0') + ; + pbVar3[0xb] = pbVar3[0xb] ^ + (pbVar3[0xb] ^ bVar17) & -((char)((ulong)uVar26 >> 0x18) != '\0'); + pbVar3[0xc] = pbVar3[0xc] ^ + (pbVar3[0xc] ^ bVar18) & -((char)((ulong)uVar26 >> 0x20) != '\0'); + pbVar3[0xd] = pbVar3[0xd] ^ + (pbVar3[0xd] ^ bVar19) & -((char)((ulong)uVar26 >> 0x28) != '\0'); + pbVar3[0xe] = pbVar3[0xe] ^ + (pbVar3[0xe] ^ bVar20) & -((char)((ulong)uVar26 >> 0x30) != '\0'); + pbVar3[0xf] = pbVar3[0xf] ^ + (pbVar3[0xf] ^ bVar21) & -((char)((ulong)uVar26 >> 0x38) != '\0'); + *pbVar3 = *pbVar3 ^ (*pbVar3 ^ bVar7) & -((char)uVar25 != '\0'); + pbVar3[1] = pbVar3[1] ^ (pbVar3[1] ^ bVar8) & -((char)((ulong)uVar25 >> 8) != '\0'); + pbVar3[2] = pbVar3[2] ^ (pbVar3[2] ^ bVar9) & -((char)((ulong)uVar25 >> 0x10) != '\0'); + pbVar3[3] = pbVar3[3] ^ (pbVar3[3] ^ bVar10) & -((char)((ulong)uVar25 >> 0x18) != '\0'); + pbVar3[4] = pbVar3[4] ^ (pbVar3[4] ^ bVar11) & -((char)((ulong)uVar25 >> 0x20) != '\0'); + pbVar3[5] = pbVar3[5] ^ (pbVar3[5] ^ bVar12) & -((char)((ulong)uVar25 >> 0x28) != '\0'); + pbVar3[6] = pbVar3[6] ^ (pbVar3[6] ^ bVar13) & -((char)((ulong)uVar25 >> 0x30) != '\0'); + pbVar3[7] = pbVar3[7] ^ (pbVar3[7] ^ bVar14) & -((char)((ulong)uVar25 >> 0x38) != '\0'); + } while ((int)lVar22 < iVar6); + } + lVar22 = 0; + if (iVar1 < iVar5) { + do { + if (*(char *)(param_3 + lVar23 + lVar22) != '\0') { + *(undefined1 *)(param_5 + lVar23 + lVar22) = *(undefined1 *)(param_1 + lVar23 + lVar22); + } + lVar22 = lVar22 + 1; + } while (lVar22 != (ulong)(uint)((iVar5 + -1) - iVar1) + 1); + } + iVar24 = iVar24 + -1; + param_3 = param_3 + param_4; + param_1 = param_1 + param_2; + param_5 = param_5 + param_6; + } while (iVar24 != 0); + } + return; +} + + +================================================================== + +### FUNC 0028cd18 (40 bytes) name=FUN_0028cd18 + +code * FUN_0028cd18(ulong param_1) + +{ + if ((param_1 < 0x21) && ((code *)(&DAT_00509280)[param_1] != (code *)0x0)) { + return (code *)(&DAT_00509280)[param_1]; + } + return FUN_0028bdc0; +} + + +================================================================== + +### FUNC 0028cd40 (2320 bytes) name=copyTo + +/* cv::Mat::copyTo(cv::_OutputArray const&) const */ + +void __thiscall cv::Mat::copyTo(Mat *this,_OutputArray *param_1) + +{ + int *piVar1; + ulong uVar2; + ulong uVar3; + uint uVar4; + bool bVar5; + undefined4 uVar6; + undefined2 uVar7; + char cVar8; + int iVar9; + int iVar10; + ulong uVar11; + char *pcVar12; + void *pvVar13; + int iVar14; + Mat *pMVar15; + long lVar16; + long lVar17; + undefined8 uVar18; + long lVar19; + undefined8 *puVar20; + undefined8 uVar21; + long *plVar22; + code *pcVar23; + void *__src; + size_t sVar24; + Mat *local_260; + Mat *local_258; + uchar *local_250; + void *local_248; + long local_230; + undefined8 local_218; + long local_200 [4]; + ulong local_1e0; + long lStack_1d8; + long local_1d0; + long lStack_1c8; + long local_1c0; + long lStack_1b8; + long local_1b0; + long lStack_1a8; + long local_1a0; + long lStack_198; + long local_190; + long lStack_188; + long local_180; + long lStack_178; + long local_170; + long lStack_168; + long local_160; + long lStack_158; + long local_150; + long lStack_148; + long local_140; + long lStack_138; + long local_130; + long lStack_128; + long local_120; + long lStack_118; + long local_110; + long lStack_108; + undefined8 local_100; + undefined8 local_f8; + void *local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + long local_c8; + undefined8 *local_c0; + long *local_b8; + long local_b0; + long local_a8; + + uVar11 = _InputArray::type((_InputArray *)param_1,-1); + cVar8 = _OutputArray::fixedType(param_1); + if (cVar8 != '\0') { + if ((uint)uVar11 != (*(uint *)this & 0xfff)) { + if (((uint)((uVar11 & 0xffffffff) >> 3) & 0x1ff) + 1 != (*(uint *)this >> 3 & 0x1ff) + 1) { + local_100 = 0; + local_f8 = 0; + pcVar12 = (char *)String::allocate((String *)&local_100,0x1e); + uVar7 = s_channels______CV_MAT_CN_dtype__00463e20._28_2_; + uVar6 = s_channels______CV_MAT_CN_dtype__00463e20._24_4_; + uVar21 = s_channels______CV_MAT_CN_dtype__00463e20._8_8_; + uVar18 = s_channels______CV_MAT_CN_dtype__00463e20._0_8_; + *(undefined8 *)(pcVar12 + 0x10) = s_channels______CV_MAT_CN_dtype__00463e20._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar6; + *(undefined2 *)(pcVar12 + 0x1c) = uVar7; + *(undefined8 *)pcVar12 = uVar18; + *(undefined8 *)(pcVar12 + 8) = uVar21; + error(-0xd7,(String *)&local_100,"void cv::Mat::copyTo(cv::OutputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x119); + String::deallocate((String *)&local_100); + } + convertTo(this,param_1,(uint)uVar11,1.0,0.0); + return; + } + } + if (*(long *)(this + 0x10) == 0) { +LAB_0028d038: + _OutputArray::release(param_1); + return; + } + if (*(int *)(this + 4) < 3) { + lVar19 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + lVar17 = 0; + lVar19 = 1; + do { + lVar16 = lVar17 * 4; + lVar17 = lVar17 + 1; + lVar19 = lVar19 * *(int *)(*(long *)(this + 0x40) + lVar16); + } while ((int)lVar17 < *(int *)(this + 4)); + } + if (lVar19 == 0) goto LAB_0028d038; + iVar9 = _InputArray::kind((_InputArray *)param_1); + iVar10 = (int)param_1; + if (iVar9 != 0xa0000) { + if (*(int *)(this + 4) < 3) { + _OutputArray::create + (param_1,*(int *)(this + 8),*(int *)(this + 0xc),*(uint *)this & 0xfff,-1,false,0); + iVar9 = _InputArray::kind((_InputArray *)param_1); + if (iVar9 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_c0 = &local_f8; + local_b8 = &local_b0; + uVar4 = *(uint *)pMVar15; + local_f0 = *(void **)(pMVar15 + 0x10); + local_100 = *(ulong *)pMVar15; + local_f8 = *(undefined8 *)(pMVar15 + 8); + local_e8 = *(undefined8 *)(pMVar15 + 0x18); + local_e0 = *(undefined8 *)(pMVar15 + 0x20); + local_d8 = *(undefined8 *)(pMVar15 + 0x28); + local_d0 = *(undefined8 *)(pMVar15 + 0x30); + local_c8 = *(long *)(pMVar15 + 0x38); + local_a8 = 0; + local_b0 = 0; + if (local_c8 != 0) { + piVar1 = (int *)(local_c8 + 0x14); + do { + cVar8 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_b0 = **(long **)(pMVar15 + 0x48); + local_a8 = (*(long **)(pMVar15 + 0x48))[1]; + } + else { + local_100 = (ulong)uVar4; + copySize((Mat *)&local_100,pMVar15); + } + } + else { + _InputArray::getMat_(iVar10); + } + __src = *(void **)(this + 0x10); + if (((__src != local_f0) && (iVar9 = *(int *)(this + 8), 0 < iVar9)) && + (iVar10 = *(int *)(this + 0xc), 0 < iVar10)) { + if ((((uint)local_100 & 0x4000 & *(uint *)this) == 0) || + (iVar14 = (int)((long)iVar10 * (long)iVar9), + (long)iVar10 * (long)iVar9 - (long)iVar14 != 0)) { + iVar9 = iVar9 + -1; + iVar14 = iVar10; + } + else { + iVar9 = 0; + } + if (*(int *)(this + 4) < 1) { + sVar24 = 0; + } + else { + sVar24 = (long)iVar14 * + *(long *)(*(long *)(this + 0x48) + (long)*(int *)(this + 4) * 8 + -8); + } + lVar19 = 0; + pvVar13 = local_f0; + do { + lVar19 = lVar19 + 1; + pvVar13 = memcpy(pvVar13,__src,sVar24); + __src = (void *)((long)__src + *(long *)(this + 0x50)); + pvVar13 = (void *)((long)pvVar13 + local_b0); + } while (lVar19 != (long)iVar9 + 1); + } + if (local_c8 != 0) { + piVar1 = (int *)(local_c8 + 0x14); + do { + iVar9 = *piVar1; + cVar8 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar9 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar9 == 1) { + deallocate((Mat *)&local_100); + } + } + if (0 < local_100._4_4_) { + iVar9 = 0; + puVar20 = local_c0; + do { + *(undefined4 *)puVar20 = 0; + iVar9 = iVar9 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar9 < local_100._4_4_); + } + } + else { + _OutputArray::create + (param_1,*(int *)(this + 4),*(int **)(this + 0x40),*(uint *)this & 0xfff,-1,false,0) + ; + iVar9 = _InputArray::kind((_InputArray *)param_1); + if (iVar9 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_c0 = &local_f8; + local_b8 = &local_b0; + uVar4 = *(uint *)pMVar15; + local_f0 = *(void **)(pMVar15 + 0x10); + local_100 = *(ulong *)pMVar15; + local_f8 = *(undefined8 *)(pMVar15 + 8); + local_e8 = *(undefined8 *)(pMVar15 + 0x18); + local_e0 = *(undefined8 *)(pMVar15 + 0x20); + local_d8 = *(undefined8 *)(pMVar15 + 0x28); + local_d0 = *(undefined8 *)(pMVar15 + 0x30); + local_c8 = *(long *)(pMVar15 + 0x38); + local_a8 = 0; + local_b0 = 0; + if (local_c8 != 0) { + piVar1 = (int *)(local_c8 + 0x14); + do { + cVar8 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_b0 = **(long **)(pMVar15 + 0x48); + local_a8 = (*(long **)(pMVar15 + 0x48))[1]; + } + else { + local_100 = (ulong)uVar4; + copySize((Mat *)&local_100,pMVar15); + } + } + else { + _InputArray::getMat_(iVar10); + } + if (*(void **)(this + 0x10) == local_f0) { + if (local_c8 != 0) { + piVar1 = (int *)(local_c8 + 0x14); + do { + iVar9 = *piVar1; + cVar8 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar9 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar9 == 1) { + deallocate((Mat *)&local_100); + } + } + if (0 < local_100._4_4_) { + iVar9 = 0; + puVar20 = local_c0; + do { + *(undefined4 *)puVar20 = 0; + iVar9 = iVar9 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar9 < local_100._4_4_); + } + } + else { + if (*(int *)(this + 4) < 3) { + lVar17 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + lVar19 = 0; + lVar17 = 1; + do { + lVar16 = lVar19 * 4; + lVar19 = lVar19 + 1; + lVar17 = lVar17 * *(int *)(*(long *)(this + 0x40) + lVar16); + } while ((int)lVar19 < *(int *)(this + 4)); + } + if (lVar17 != 0) { + local_260 = this; + local_258 = (Mat *)&local_100; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)local_200,&local_260,&local_250,2); + if (*(int *)(this + 4) < 1) { + sVar24 = 0; + } + else { + sVar24 = lStack_1d8 * + *(long *)(*(long *)(this + 0x48) + (long)*(int *)(this + 4) * 8 + -8); + } + for (uVar11 = 0; uVar11 < local_1e0; uVar11 = uVar11 + 1) { + memcpy(local_248,local_250,sVar24); + NAryMatIterator::operator++((NAryMatIterator *)local_200); + } + } + if (local_c8 != 0) { + piVar1 = (int *)(local_c8 + 0x14); + do { + iVar9 = *piVar1; + cVar8 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar9 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar9 == 1) { + deallocate((Mat *)&local_100); + } + } + if (0 < local_100._4_4_) { + iVar9 = 0; + puVar20 = local_c0; + do { + *(undefined4 *)puVar20 = 0; + iVar9 = iVar9 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar9 < local_100._4_4_); + } + } + } + local_c8 = 0; + local_d8 = 0; + local_e0 = 0; + local_e8 = 0; + local_f0 = (void *)0x0; + if (local_b8 == &local_b0) { + return; + } + fastFree(local_b8); + return; + } + _OutputArray::create + (param_1,*(int *)(this + 4),*(int **)(this + 0x40),*(uint *)this & 0xfff,-1,false,0); + _InputArray::getUMat(iVar10); + iVar9 = *(int *)(this + 4); + if (iVar9 < 1) { + lVar19 = 0; + if (iVar9 == 0) goto LAB_0028d52c; + } + else { + lVar19 = *(long *)(*(long *)(this + 0x48) + (long)iVar9 * 8 + -8); + } + uVar11 = (ulong)iVar9; + lVar17 = (uVar11 - 4 >> 2) + 1; + puVar20 = *(undefined8 **)(this + 0x40); + lVar16 = lVar17 * 4; + if (uVar11 - 1 < 3) { + lVar16 = 0; + } + else { + local_200[1] = (long)(int)((ulong)*puVar20 >> 0x20); + local_200[0] = (long)(int)*puVar20; + local_200[3] = (long)(int)((ulong)puVar20[1] >> 0x20); + local_200[2] = (long)(int)puVar20[1]; + if (lVar17 != 1) { + lStack_1d8 = (long)(int)((ulong)puVar20[2] >> 0x20); + local_1e0 = (long)(int)puVar20[2]; + lStack_1c8 = (long)(int)((ulong)puVar20[3] >> 0x20); + local_1d0 = (long)(int)puVar20[3]; + if (lVar17 != 2) { + lStack_1b8 = (long)(int)((ulong)puVar20[4] >> 0x20); + local_1c0 = (long)(int)puVar20[4]; + lStack_1a8 = (long)(int)((ulong)puVar20[5] >> 0x20); + local_1b0 = (long)(int)puVar20[5]; + if (lVar17 != 3) { + lStack_198 = (long)(int)((ulong)puVar20[6] >> 0x20); + local_1a0 = (long)(int)puVar20[6]; + lStack_188 = (long)(int)((ulong)puVar20[7] >> 0x20); + local_190 = (long)(int)puVar20[7]; + if (lVar17 != 4) { + lStack_178 = (long)(int)((ulong)puVar20[8] >> 0x20); + local_180 = (long)(int)puVar20[8]; + lStack_168 = (long)(int)((ulong)puVar20[9] >> 0x20); + local_170 = (long)(int)puVar20[9]; + if (lVar17 != 5) { + lStack_158 = (long)(int)((ulong)puVar20[10] >> 0x20); + local_160 = (long)(int)puVar20[10]; + lStack_148 = (long)(int)((ulong)puVar20[0xb] >> 0x20); + local_150 = (long)(int)puVar20[0xb]; + if (lVar17 != 6) { + lStack_138 = (long)(int)((ulong)puVar20[0xc] >> 0x20); + local_140 = (long)(int)puVar20[0xc]; + lStack_128 = (long)(int)((ulong)puVar20[0xd] >> 0x20); + local_130 = (long)(int)puVar20[0xd]; + if (lVar17 != 7) { + lStack_118 = (long)(int)((ulong)puVar20[0xe] >> 0x20); + local_120 = (long)(int)puVar20[0xe]; + lStack_108 = (long)(int)((ulong)puVar20[0xf] >> 0x20); + local_110 = (long)(int)puVar20[0xf]; + } + } + } + } + } + } + } + if (lVar16 - uVar11 == 0) goto LAB_0028d52c; + } + uVar2 = lVar16 + 1; + local_200[lVar16] = (long)*(int *)((long)puVar20 + lVar16 * 4); + if (uVar2 < uVar11) { + uVar3 = lVar16 + 2; + local_200[uVar2] = (long)*(int *)((long)puVar20 + uVar2 * 4); + if (uVar3 < uVar11) { + local_200[uVar3] = (long)*(int *)((long)puVar20 + uVar3 * 4); + } + } +LAB_0028d52c: + local_200[iVar9 + -1] = lVar19 * local_200[iVar9 + -1]; + UMat::ndoffset((UMat *)&local_250,&local_100); + iVar9 = *(int *)(this + 4); + uVar18 = *(undefined8 *)(this + 0x10); + plVar22 = *(long **)(local_230 + 8); + iVar10 = iVar9 + -1; + uVar21 = *(undefined8 *)(this + 0x48); + pcVar23 = *(code **)(*plVar22 + 0x40); + (&local_100)[iVar10] = lVar19 * (&local_100)[iVar10]; + (*pcVar23)(plVar22,local_230,uVar18,iVar9,local_200,&local_100,local_218,uVar21); + UMat::~UMat((UMat *)&local_250); + return; +} + + +================================================================== + +### FUNC 0028d6a0 (420 bytes) name=operator= + +/* cv::Mat::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&) */ + +Mat * __thiscall cv::Mat::operator=(Mat *this,Scalar_ *param_1) + +{ + uchar *__dest; + size_t __n; + ulong uVar1; + ulong uVar2; + ulong __n_00; + ulong uVar3; + ulong uVar4; + Mat *local_b0; + uchar *local_a8; + NAryMatIterator aNStack_a0 [32]; + ulong local_80; + long local_78; + undefined1 auStack_60 [96]; + + local_b0 = this; + NAryMatIterator::NAryMatIterator(aNStack_a0,&local_b0,&local_a8,1); + if (*(int *)(this + 4) < 1) { + __n_00 = 0; + } + else { + __n_00 = local_78 * *(long *)(*(long *)(this + 0x48) + (long)*(int *)(this + 4) * 8 + -8); + } + if ((((*(long *)param_1 == 0) && (*(long *)(param_1 + 8) == 0)) && + (*(long *)(param_1 + 0x10) == 0)) && (*(long *)(param_1 + 0x18) == 0)) { + uVar3 = 0; + if (local_80 != 0) { + do { + uVar3 = uVar3 + 1; + memset(local_a8,0,__n_00); + NAryMatIterator::operator++(aNStack_a0); + } while (uVar3 < local_80); + } + } + else if (local_80 != 0) { + uVar3 = 0; + scalarToRawData(param_1,auStack_60,*(uint *)this & 0xfff,0xc); + uVar1 = 0x88442211UL >> ((*(uint *)this & 7) << 2) & 0xf; + uVar2 = uVar1 * 0xc; + uVar4 = __n_00; + if (__n_00 != 0) { + do { + __n = uVar4; + if (uVar2 < uVar4) { + __n = uVar2; + } + __dest = local_a8 + uVar3; + uVar3 = uVar3 + uVar2; + uVar4 = uVar4 + uVar1 * -0xc; + memcpy(__dest,auStack_60,__n); + } while (uVar3 < __n_00); + } + uVar3 = 1; + if (1 < local_80) { + do { + uVar3 = uVar3 + 1; + NAryMatIterator::operator++(aNStack_a0); + memcpy(local_a8,*(void **)(this + 0x10),__n_00); + } while (uVar3 < local_80); + return this; + } + } + return this; +} + + +================================================================== + +### FUNC 0028d844 (2176 bytes) name=copyTo + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::copyTo(cv::_OutputArray const&, cv::_InputArray const&) const */ + +void __thiscall cv::Mat::copyTo(Mat *this,_OutputArray *param_1,_InputArray *param_2) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined1 uVar9; + long lVar10; + int iVar11; + int iVar12; + undefined8 *puVar13; + undefined4 *puVar14; + Mat *pMVar15; + int *piVar16; + ulong uVar17; + code *pcVar18; + ulong local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + uchar *local_198; + undefined8 local_190; + undefined8 local_188; + Mat *local_180; + Mat *local_178; + Mat *local_170; + undefined8 uStack_168; + NAryMatIterator aNStack_160 [32]; + ulong local_140; + int local_138; + uint local_120; + int local_11c; + int local_118; + undefined4 local_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + long local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar11 = _InputArray::kind(param_2); + if (iVar11 == 0x10000) { + pMVar15 = *(Mat **)(param_2 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar15; + local_11c = *(int *)(pMVar15 + 4); + local_118 = *(int *)(pMVar15 + 8); + local_114 = *(undefined4 *)(pMVar15 + 0xc); + local_110 = *(long *)(pMVar15 + 0x10); + local_108 = *(undefined8 *)(pMVar15 + 0x18); + local_100 = *(undefined8 *)(pMVar15 + 0x20); + local_f8 = *(undefined8 *)(pMVar15 + 0x28); + local_f0 = *(undefined8 *)(pMVar15 + 0x30); + local_e8 = *(long *)(pMVar15 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar16 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = *piVar16 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar15 + 0x48); + local_c8 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_11c = 0; + copySize((Mat *)&local_120,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (local_110 == 0) { + copyTo(this,param_1); + } + else { + iVar11 = (local_120 >> 3 & 0x1ff) + 1; + if ((local_120 & 7) == 0) { + if ((*(uint *)this >> 3 & 0x1ff) + 1 == iVar11) goto LAB_0028d91c; + if (iVar11 != 1) goto LAB_0028d8b8; +LAB_0028dc78: + if (*(int *)(this + 4) < 1) { + local_1c0 = 0; + goto LAB_0028d944; + } + local_1c0 = *(ulong *)(*(long *)(this + 0x48) + (long)*(int *)(this + 4) * 8 + -8); + pcVar18 = FUN_0028bdc0; + if (local_1c0 < 0x21) goto LAB_0028d944; + } + else { +LAB_0028d8b8: + local_1b8 = 0; + local_1b0 = 0; + puVar13 = (undefined8 *)String::allocate((String *)&local_1b8,0x30); + uVar8 = _LAB_00463ea8; + uVar7 = DAT_00463ea0; + uVar6 = DAT_00463e98; + uVar5 = DAT_00463e90; + uVar4 = _LAB_00463e88; + *puVar13 = _DAT_00463e80; + puVar13[1] = uVar4; + puVar13[2] = uVar5; + puVar13[3] = uVar6; + puVar13[4] = uVar7; + puVar13[5] = uVar8; + error(-0xd7,(String *)&local_1b8,"void cv::Mat::copyTo(cv::OutputArray, cv::InputArray) const" + ,"/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x16f); + String::deallocate((String *)&local_1b8); +LAB_0028d91c: + if (iVar11 == 1) goto LAB_0028dc78; + local_1c0 = 0x88442211UL >> ((*(uint *)this & 7) << 2) & 0xf; +LAB_0028d944: + pcVar18 = (code *)(&DAT_00509280)[local_1c0]; + if (pcVar18 == (code *)0x0) { + pcVar18 = FUN_0028bdc0; + } + } + iVar12 = _InputArray::kind((_InputArray *)param_1); + if (iVar12 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + uVar1 = *(uint *)pMVar15; + local_b0 = *(long *)(pMVar15 + 0x10); + local_c0 = *(ulong *)pMVar15; + local_b8 = *(undefined8 *)(pMVar15 + 8); + uStack_a8 = *(undefined8 *)(pMVar15 + 0x18); + local_a0 = *(undefined8 *)(pMVar15 + 0x20); + local_98 = *(undefined8 *)(pMVar15 + 0x28); + local_90 = *(undefined8 *)(pMVar15 + 0x30); + local_88 = *(long *)(pMVar15 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar16 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = *piVar16 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar15 + 0x48); + local_68 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_c0 = (ulong)uVar1; + copySize((Mat *)&local_c0,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_1); + } + lVar10 = local_b0; + if (local_88 != 0) { + piVar16 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar16; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar12 = 0; + puVar13 = local_80; + do { + *(undefined4 *)puVar13 = 0; + iVar12 = iVar12 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar12 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + _OutputArray::create + (param_1,*(int *)(this + 4),*(int **)(this + 0x40),*(uint *)this & 0xfff,-1,false,0); + iVar12 = _InputArray::kind((_InputArray *)param_1); + if (iVar12 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar15; + local_5c = *(int *)(pMVar15 + 4); + local_58 = *(undefined4 *)(pMVar15 + 8); + local_54 = *(undefined4 *)(pMVar15 + 0xc); + local_50 = *(long *)(pMVar15 + 0x10); + local_48 = *(undefined8 *)(pMVar15 + 0x18); + local_40 = *(undefined8 *)(pMVar15 + 0x20); + local_38 = *(undefined8 *)(pMVar15 + 0x28); + local_30 = *(undefined8 *)(pMVar15 + 0x30); + local_28 = *(long *)(pMVar15 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar16 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = *piVar16 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar15 + 0x48); + local_8 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_5c = 0; + copySize((Mat *)&local_60,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (local_50 != lVar10) { + local_b8 = 0; + local_c0 = 0; + uStack_a8 = 0; + local_b0 = 0; + operator=((Mat *)&local_60,(Scalar_ *)&local_c0); + } + if (2 < *(int *)(this + 4)) { + uStack_168 = 0; + local_180 = this; + local_178 = (Mat *)&local_60; + local_170 = (Mat *)&local_120; + NAryMatIterator::NAryMatIterator(aNStack_160,&local_180,&local_198,-1); + for (uVar17 = 0; uVar17 < local_140; uVar17 = uVar17 + 1) { + local_c0 = CONCAT44(1,iVar11 * local_138); + (*pcVar18)(local_198,0,local_188,0,local_190,0,(Mat *)&local_c0,&local_1c0); + NAryMatIterator::operator++(aNStack_160); + } + if (local_28 != 0) { + piVar16 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar16; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + puVar14 = local_20; + do { + *puVar14 = 0; + iVar11 = iVar11 + 1; + puVar14 = puVar14 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_e8 != 0) { + piVar16 = (int *)(local_e8 + 0x14); + do { + iVar11 = *piVar16; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar11 = 0; + piVar16 = local_e0; + do { + *piVar16 = 0; + iVar11 = iVar11 + 1; + piVar16 = piVar16 + 1; + } while (iVar11 < local_11c); + } + goto LAB_0028dc20; + } + if (((*(int **)(this + 0x40))[1] != local_e0[1]) || (**(int **)(this + 0x40) != *local_e0)) { + local_1a8 = 0; + local_1a0 = 0; + puVar13 = (undefined8 *)String::allocate((String *)&local_1a8,0x15); + uVar9 = DAT_00463ecc; + uVar5 = DAT_00463ec0; + uVar4 = _DAT_00463eb8; + *(undefined4 *)(puVar13 + 2) = DAT_00463ec8; + *(undefined1 *)((long)puVar13 + 0x14) = uVar9; + *puVar13 = uVar4; + puVar13[1] = uVar5; + error(-0xd7,(String *)&local_1a8,"void cv::Mat::copyTo(cv::OutputArray, cv::InputArray) const" + ,"/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x17e); + String::deallocate((String *)&local_1a8); + } + iVar12 = *(int *)(this + 8); + if (((local_60 & local_120 & 0x4000 & *(uint *)this) == 0) || + (uVar17 = (long)*(int *)(this + 0xc) * (long)iVar12 * (long)iVar11, + uVar17 - (long)(int)uVar17 != 0)) { + uVar17 = (ulong)(uint)(*(int *)(this + 0xc) * iVar11); + } + else { + iVar12 = 1; + } + local_c0 = CONCAT44(iVar12,(int)uVar17); + (*pcVar18)(*(undefined8 *)(this + 0x10),*(undefined8 *)(this + 0x50),local_110,local_d0,local_50 + ,local_10,(Mat *)&local_c0,&local_1c0); + if (local_28 != 0) { + piVar16 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar16; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + puVar14 = local_20; + do { + *puVar14 = 0; + iVar11 = iVar11 + 1; + puVar14 = puVar14 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + } + if (local_e8 != 0) { + piVar16 = (int *)(local_e8 + 0x14); + do { + iVar11 = *piVar16; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar3) { + *piVar16 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar11 = 0; + piVar16 = local_e0; + do { + *piVar16 = 0; + iVar11 = iVar11 + 1; + piVar16 = piVar16 + 1; + } while (iVar11 < local_11c); + } +LAB_0028dc20: + local_e8 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + local_110 = 0; + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 0028e134 (2288 bytes) name=setTo + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::Mat::setTo(cv::_InputArray const&, cv::_InputArray const&) */ + +Mat * __thiscall cv::Mat::setTo(Mat *this,_InputArray *param_1,_InputArray *param_2) + +{ + bool bVar1; + long lVar2; + int *piVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + char cVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined4 uVar15; + undefined2 uVar16; + undefined1 uVar17; + int iVar18; + undefined8 *puVar19; + int *piVar20; + void *__src; + code *pcVar21; + int *piVar22; + uint *puVar23; + Mat *pMVar24; + long lVar25; + long lVar26; + int iVar27; + size_t __n; + ulong uVar28; + ulong local_568; + undefined8 local_560; + undefined8 local_558; + int local_550 [4]; + uchar *local_540; + long local_538; + Mat *local_530; + Mat *local_528; + undefined8 local_520; + NAryMatIterator aNStack_518 [32]; + ulong local_4f8; + int local_4f0; + uint local_4d8; + int local_4d4; + uint local_4d0; + undefined4 local_4cc; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + uint *local_498; + undefined8 *local_490; + undefined8 local_488; + undefined8 local_480; + uint local_478; + int local_474; + int local_470; + int local_46c; + long local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + long local_440; + int *local_438; + undefined8 *local_430; + undefined8 local_428; + undefined8 local_420; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + if (*(long *)(this + 0x10) == 0) { + return this; + } + if (*(int *)(this + 4) < 3) { + lVar26 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + lVar25 = 0; + lVar26 = 1; + do { + lVar2 = lVar25 * 4; + lVar25 = lVar25 + 1; + lVar26 = lVar26 * *(int *)(*(long *)(this + 0x40) + lVar2); + } while ((int)lVar25 < *(int *)(this + 4)); + } + if (lVar26 == 0) { + return this; + } + iVar18 = _InputArray::kind(param_1); + if (iVar18 == 0x10000) { + pMVar24 = *(Mat **)(param_1 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(uint *)pMVar24; + local_4d4 = *(int *)(pMVar24 + 4); + local_4d0 = *(uint *)(pMVar24 + 8); + local_4cc = *(undefined4 *)(pMVar24 + 0xc); + local_4c8 = *(undefined8 *)(pMVar24 + 0x10); + local_4c0 = *(undefined8 *)(pMVar24 + 0x18); + local_4b8 = *(undefined8 *)(pMVar24 + 0x20); + local_4b0 = *(undefined8 *)(pMVar24 + 0x28); + local_4a8 = *(undefined8 *)(pMVar24 + 0x30); + local_4a0 = *(long *)(pMVar24 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar20 = (int *)(local_4a0 + 0x14); + do { + cVar8 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar1) { + *piVar20 = *piVar20 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar24 + 4) < 3) { + local_488 = **(undefined8 **)(pMVar24 + 0x48); + local_480 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + } + else { + local_4d4 = 0; + copySize((Mat *)&local_4d8,pMVar24); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar18 = _InputArray::kind(param_2); + if (iVar18 == 0x10000) { + pMVar24 = *(Mat **)(param_2 + 8); + local_438 = &local_470; + local_430 = &local_428; + local_478 = *(uint *)pMVar24; + local_474 = *(int *)(pMVar24 + 4); + local_470 = *(int *)(pMVar24 + 8); + local_46c = *(int *)(pMVar24 + 0xc); + local_468 = *(long *)(pMVar24 + 0x10); + local_460 = *(undefined8 *)(pMVar24 + 0x18); + local_458 = *(undefined8 *)(pMVar24 + 0x20); + local_450 = *(undefined8 *)(pMVar24 + 0x28); + local_448 = *(undefined8 *)(pMVar24 + 0x30); + local_440 = *(long *)(pMVar24 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar20 = (int *)(local_440 + 0x14); + do { + cVar8 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar1) { + *piVar20 = *piVar20 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (*(int *)(pMVar24 + 4) < 3) { + local_428 = **(undefined8 **)(pMVar24 + 0x48); + local_420 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + } + else { + local_474 = 0; + copySize((Mat *)&local_478,pMVar24); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar6 = *(uint *)this; + _InputArray::kind(param_1); + if ((local_4d4 < 3) && ((local_4d8 >> 0xe & 1) != 0)) { + uVar7 = *local_498; + if (local_498[1] == 1) { + if (((uVar7 != 1) && (uVar6 = (uVar6 >> 3 & 0x1ff) + 1, uVar7 != uVar6)) && + ((uVar7 != 4 || (((local_4d8 & 0xfff) != 6 || (4 < uVar6)))))) goto LAB_0028e21c; + } + else if ((uVar7 != 1) || ((uVar6 >> 3 & 0x1ff) + 1 != local_498[1])) goto LAB_0028e21c; + } + else { +LAB_0028e21c: + local_560 = 0; + local_558 = 0; + puVar19 = (undefined8 *)String::allocate((String *)&local_560,0x3c); + uVar15 = DAT_00463f08; + uVar14 = DAT_00463ef8; + uVar13 = DAT_00463ef0; + uVar12 = DAT_00463ee8; + uVar11 = _DAT_00463ee0; + uVar10 = DAT_00463ed8; + uVar9 = DAT_00463ed0; + puVar19[6] = DAT_00463f00; + *(undefined4 *)(puVar19 + 7) = uVar15; + *puVar19 = uVar9; + puVar19[1] = uVar10; + puVar19[2] = uVar11; + puVar19[3] = uVar12; + puVar19[4] = uVar13; + puVar19[5] = uVar14; + error(-0xd7,(String *)&local_560,"cv::Mat& cv::Mat::setTo(cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x1d8); + String::deallocate((String *)&local_560); + } + if (local_468 != 0) { + if (local_474 < 3) { + lVar25 = (long)local_46c * (long)local_470; + } + else { + lVar26 = 0; + lVar25 = 1; + do { + piVar20 = local_438 + lVar26; + lVar26 = lVar26 + 1; + lVar25 = lVar25 * *piVar20; + } while ((int)lVar26 < local_474); + } + if (lVar25 != 0) { + if ((local_478 & 0xfff) == 0) { + piVar20 = *(int **)(this + 0x40); + iVar18 = piVar20[-1]; + if (iVar18 == local_438[-1]) { + if (iVar18 == 2) { + if ((*piVar20 != *local_438) || (piVar20[1] != local_438[1])) goto LAB_0028e7b0; + } + else if (0 < iVar18) { + if (*piVar20 == *local_438) { + piVar3 = piVar20 + (iVar18 - 1); + piVar22 = local_438; + do { + piVar22 = piVar22 + 1; + if (piVar20 == piVar3) goto LAB_0028e334; + piVar20 = piVar20 + 1; + } while (*piVar20 == *piVar22); + } + goto LAB_0028e7b0; + } + goto LAB_0028e334; + } + } +LAB_0028e7b0: + local_550[0] = 0; + local_550[1] = 0; + local_550[2] = 0; + local_550[3] = 0; + puVar19 = (undefined8 *)String::allocate((String *)local_550,0x3b); + uVar17 = DAT_00463f4a; + uVar16 = DAT_00463f48; + uVar14 = DAT_00463f38; + uVar13 = DAT_00463f30; + uVar12 = _LAB_00463f28; + uVar11 = _DAT_00463f20; + uVar10 = DAT_00463f18; + uVar9 = DAT_00463f10; + puVar19[6] = DAT_00463f40; + *(undefined2 *)(puVar19 + 7) = uVar16; + *(undefined1 *)((long)puVar19 + 0x3a) = uVar17; + *puVar19 = uVar9; + puVar19[1] = uVar10; + puVar19[2] = uVar11; + puVar19[3] = uVar12; + puVar19[4] = uVar13; + puVar19[5] = uVar14; + error(-0xd7,(String *)local_550,"cv::Mat& cv::Mat::setTo(cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x1d9); + String::deallocate((String *)local_550); + } + } +LAB_0028e334: + if (*(int *)(this + 4) < 1) { + local_568 = 0; +LAB_0028e714: + pcVar21 = (code *)(&DAT_00509280)[local_568]; + if (pcVar21 != (code *)0x0) goto LAB_0028e370; + } + else { + local_568 = *(ulong *)(*(long *)(this + 0x48) + (long)*(int *)(this + 4) * 8 + -8); + if (local_568 < 0x21) goto LAB_0028e714; + } + pcVar21 = FUN_0028bdc0; +LAB_0028e370: + local_520 = 0; + local_528 = (Mat *)0x0; + if (local_468 != 0) { + if (local_474 < 3) { + lVar25 = (long)local_46c * (long)local_470; + } + else { + lVar25 = 1; + lVar26 = 0; + do { + piVar20 = local_438 + lVar26; + lVar26 = lVar26 + 1; + lVar25 = lVar25 * *piVar20; + } while ((int)lVar26 < local_474); + } + local_528 = (Mat *)&local_478; + if (lVar25 == 0) { + local_528 = (Mat *)0x0; + } + } + local_540 = (uchar *)0x0; + local_538 = 0; + local_530 = this; + NAryMatIterator::NAryMatIterator(aNStack_518,&local_530,&local_540,-1); + local_418 = auStack_408; + iVar18 = 0; + if (local_568 != 0) { + iVar18 = (int)((local_568 + 0x3ff) / local_568); + } + local_410 = 0x408; + iVar4 = local_4f0; + if (iVar18 <= local_4f0) { + iVar4 = iVar18; + } + uVar28 = (long)iVar4 * local_568 + 0x20; + if (0x408 < uVar28) { + local_418 = operator_new__(uVar28); + } + __src = (void *)((ulong)(local_418 + 7) & 0xfffffffffffffff8); + local_410 = uVar28; + FUN_0024b4c4((Mat *)&local_4d8,*(uint *)this & 0xfff,__src,(long)iVar4); + uVar28 = 0; + if (local_4f8 != 0) { + do { + if (0 < local_4f0) { + iVar18 = 0; + iVar27 = iVar4; + do { + while( true ) { + iVar5 = iVar4; + if (iVar18 + local_4f0 < iVar4) { + iVar5 = iVar18 + local_4f0; + } + __n = (long)iVar5 * local_568; + if (local_538 != 0) break; + memcpy(local_540,__src,__n); + local_540 = local_540 + __n; + iVar18 = iVar18 + -iVar4; + bVar1 = local_4f0 <= iVar27; + iVar27 = iVar27 + iVar4; + if (bVar1) goto LAB_0028e548; + } + local_550[1] = 1; + local_550[0] = iVar5; + (*pcVar21)(__src,0,local_538,0,local_540,0,local_550,&local_568); + local_538 = local_538 + iVar5; + local_540 = local_540 + __n; + iVar18 = iVar18 + -iVar4; + bVar1 = iVar27 < local_4f0; + iVar27 = iVar27 + iVar4; + } while (bVar1); + } +LAB_0028e548: + uVar28 = uVar28 + 1; + NAryMatIterator::operator++(aNStack_518); + } while (uVar28 < local_4f8); + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + if (local_440 != 0) { + piVar20 = (int *)(local_440 + 0x14); + do { + iVar18 = *piVar20; + cVar8 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar1) { + *piVar20 = iVar18 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar18 == 1) { + deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar18 = 0; + piVar20 = local_438; + do { + *piVar20 = 0; + iVar18 = iVar18 + 1; + piVar20 = piVar20 + 1; + } while (iVar18 < local_474); + } + if (local_430 != &local_428) { + fastFree(local_430); + } + if (local_4a0 != 0) { + piVar20 = (int *)(local_4a0 + 0x14); + do { + iVar18 = *piVar20; + cVar8 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar20,0x10); + if (bVar1) { + *piVar20 = iVar18 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar18 == 1) { + deallocate((Mat *)&local_4d8); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar18 = 0; + puVar23 = local_498; + do { + *puVar23 = 0; + iVar18 = iVar18 + 1; + puVar23 = puVar23 + 1; + } while (iVar18 < local_4d4); + } + if (local_490 != &local_488) { + fastFree(local_490); + } + return this; +} + + +================================================================== + +### FUNC 0028eac0 (5136 bytes) name=flip + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::flip(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::flip(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined8 *puVar6; + undefined8 *puVar7; + undefined4 *puVar8; + undefined4 *puVar9; + undefined1 *puVar10; + undefined1 *puVar11; + undefined1 *puVar12; + undefined1 *puVar13; + undefined1 *puVar14; + undefined1 *puVar15; + long lVar16; + int iVar17; + undefined4 uVar18; + undefined1 uVar19; + uint uVar20; + char cVar21; + long lVar22; + bool bVar23; + int iVar24; + undefined8 *puVar25; + ulong uVar26; + int *piVar27; + undefined4 *puVar28; + ulong uVar29; + Mat *pMVar30; + ulong uVar31; + int *piVar32; + undefined4 *puVar33; + ulong uVar34; + ulong uVar35; + int iVar36; + undefined4 *puVar37; + long lVar38; + undefined4 *puVar39; + int *piVar40; + undefined4 *puVar41; + undefined4 *puVar42; + long lVar43; + undefined4 *puVar44; + uint uVar45; + int iVar46; + ulong uVar47; + undefined4 *puVar48; + int iVar49; + undefined4 *puVar50; + long lVar51; + undefined4 *puVar52; + int iVar53; + int iVar54; + undefined4 *puVar55; + uint uVar56; + long lVar57; + long lVar58; + undefined4 *puVar59; + uint uVar60; + ulong uVar61; + int iVar62; + ulong uVar63; + long lVar64; + undefined4 *puVar65; + undefined8 uVar66; + undefined8 uVar67; + undefined8 uVar68; + long lVar69; + int local_928; + int iStack_924; + uint local_920; + int local_91c; + int local_918; + undefined4 local_914; + undefined4 *local_910; + undefined8 local_908; + undefined8 local_900; + undefined8 local_8f8; + undefined8 local_8f0; + long local_8e8; + int *local_8e0; + long *local_8d8; + long local_8d0; + long local_8c8; + undefined4 local_8c0; + int local_8bc; + int local_8b8; + undefined4 local_8b4; + undefined4 *local_8b0; + undefined8 local_8a8; + undefined8 local_8a0; + undefined8 local_898; + undefined8 local_890; + long local_888; + int *local_880; + long *local_878; + long local_870; + long local_868; + int *local_860; + ulong local_858; + int aiStack_850 [264]; + int *local_430; + ulong local_428; + int aiStack_420 [264]; + + iVar24 = _InputArray::dims(param_1,-1); + if (2 < iVar24) { + local_430 = (int *)0x0; + local_428 = 0; + puVar25 = (undefined8 *)String::allocate((String *)&local_430,0x10); + uVar66 = _DAT_00463f58; + *puVar25 = DAT_00463f50; + puVar25[1] = uVar66; + error(-0xd7,(String *)&local_430,"void cv::flip(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x2da); + String::deallocate((String *)&local_430); + } + _InputArray::size((int)param_1); + if (param_3 < 0) { + if (local_928 == 1) { + if (iStack_924 == 1) goto LAB_0028eb8c; + param_3 = 0; + } + else if (iStack_924 == 1) { + param_3 = 1; + } +LAB_0028ebd8: + iVar24 = _InputArray::kind(param_1); + } + else { + if ((0 < param_3) && (local_928 == 1)) { +LAB_0028eb8c: + _InputArray::copyTo(param_1,param_2); + return; + } + if (iStack_924 != 1) goto LAB_0028ebd8; + if (param_3 == 0) goto LAB_0028eb8c; + iVar24 = _InputArray::kind(param_1); + } + if (iVar24 == 0x10000) { + pMVar30 = *(Mat **)(param_1 + 8); + local_8e0 = &local_918; + local_8d8 = &local_8d0; + local_920 = *(uint *)pMVar30; + local_91c = *(int *)(pMVar30 + 4); + local_918 = *(int *)(pMVar30 + 8); + local_914 = *(undefined4 *)(pMVar30 + 0xc); + local_910 = *(undefined4 **)(pMVar30 + 0x10); + local_908 = *(undefined8 *)(pMVar30 + 0x18); + local_900 = *(undefined8 *)(pMVar30 + 0x20); + local_8f8 = *(undefined8 *)(pMVar30 + 0x28); + local_8f0 = *(undefined8 *)(pMVar30 + 0x30); + local_8e8 = *(long *)(pMVar30 + 0x38); + local_8c8 = 0; + local_8d0 = 0; + if (local_8e8 != 0) { + piVar27 = (int *)(local_8e8 + 0x14); + do { + cVar21 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar23) { + *piVar27 = *piVar27 + 1; + cVar21 = ExclusiveMonitorsStatus(); + } + } while (cVar21 != '\0'); + } + if (*(int *)(pMVar30 + 4) < 3) { + local_8d0 = **(long **)(pMVar30 + 0x48); + local_8c8 = (*(long **)(pMVar30 + 0x48))[1]; + } + else { + local_91c = 0; + Mat::copySize((Mat *)&local_920,pMVar30); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar1 = local_920; + local_430 = (int *)CONCAT44(iStack_924,local_928); + _OutputArray::create(param_2,&local_430,local_920 & 0xfff,0xffffffff,0,0); + iVar24 = _InputArray::kind((_InputArray *)param_2); + if (iVar24 == 0x10000) { + pMVar30 = *(Mat **)(param_2 + 8); + local_888 = *(long *)(pMVar30 + 0x38); + local_8c0 = *(undefined4 *)pMVar30; + local_8bc = *(int *)(pMVar30 + 4); + local_8b8 = *(int *)(pMVar30 + 8); + local_8b4 = *(undefined4 *)(pMVar30 + 0xc); + local_8b0 = *(undefined4 **)(pMVar30 + 0x10); + local_8a8 = *(undefined8 *)(pMVar30 + 0x18); + local_8a0 = *(undefined8 *)(pMVar30 + 0x20); + local_898 = *(undefined8 *)(pMVar30 + 0x28); + local_890 = *(undefined8 *)(pMVar30 + 0x30); + local_880 = &local_8b8; + local_878 = &local_870; + local_868 = 0; + local_870 = 0; + if (local_888 != 0) { + piVar27 = (int *)(local_888 + 0x14); + do { + cVar21 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar23) { + *piVar27 = *piVar27 + 1; + cVar21 = ExclusiveMonitorsStatus(); + } + } while (cVar21 != '\0'); + } + if (*(int *)(pMVar30 + 4) < 3) { + local_870 = **(long **)(pMVar30 + 0x48); + local_868 = (*(long **)(pMVar30 + 0x48))[1]; + } + else { + local_8bc = 0; + Mat::copySize((Mat *)&local_8c0,pMVar30); + } + } + else { + _InputArray::getMat_((int)param_2); + } + lVar22 = local_870; + puVar59 = local_8b0; + lVar38 = local_8d0; + puVar44 = local_910; + iVar24 = (uVar1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3); + uVar61 = (ulong)iVar24; + if (param_3 < 1) { + lVar38 = (long)(*local_8e0 + -1); + puVar44 = (undefined4 *)((long)local_910 + lVar38 * local_8d0); + iVar17 = iVar24 * local_8e0[1]; + puVar39 = (undefined4 *)((long)local_8b0 + lVar38 * local_870); + iVar62 = (*local_8e0 + 1) / 2; + if (0 < iVar62) { + puVar65 = local_910 + 0x10; + iVar53 = 0; + puVar28 = puVar44 + 0x10; + uVar20 = iVar17 - 0x10U >> 4; + puVar50 = local_8b0 + 0x10; + iVar36 = iVar17 + -3; + uVar1 = uVar20 + 1; + puVar52 = puVar39 + 0x10; + iVar49 = uVar1 * 0x10; + if (iVar17 + -0xf < 1) { + iVar49 = 0; + } + iVar2 = iVar49 + 4; + uVar45 = (uint)((iVar17 + -4) - iVar49) >> 2; + lVar43 = (long)iVar49; + lVar38 = lVar43 + 0x10; + lVar64 = (long)iVar2; + lVar51 = (long)(iVar49 + 8); + uVar3 = uVar45 + 1; + lVar69 = NEON_shl((ulong)uVar45 + 1,2); + iVar5 = iVar2 + uVar45 * 4; + puVar41 = local_8b0; + puVar42 = local_910; + do { + iVar46 = 0; + if ((((ulong)puVar39 | (ulong)puVar41 | (ulong)puVar42 | (ulong)puVar44) & 3) == 0) { + if (0 < iVar17 + -0xf) { + if ((((uVar1 < 8 || + (puVar42 < puVar50 && puVar41 < puVar65 || puVar42 < puVar52 && puVar39 < puVar65) + ) || puVar41 < puVar28 && puVar44 < puVar50) || + puVar41 < puVar52 && puVar39 < puVar50) || (puVar44 < puVar52 && puVar39 < puVar28) + ) { + puVar33 = puVar39 + 1; + puVar37 = puVar42; + puVar48 = puVar44; + puVar55 = puVar41; + do { + puVar8 = puVar33 + 4; + uVar18 = *puVar37; + *puVar55 = *puVar48; + puVar33[-1] = uVar18; + uVar18 = puVar37[1]; + puVar55[1] = puVar48[1]; + *puVar33 = uVar18; + uVar18 = puVar37[2]; + puVar55[2] = puVar48[2]; + puVar33[1] = uVar18; + uVar18 = puVar37[3]; + puVar55[3] = puVar48[3]; + puVar33[2] = uVar18; + puVar33 = puVar8; + puVar37 = puVar37 + 4; + puVar48 = puVar48 + 4; + puVar55 = puVar55 + 4; + } while (puVar8 != puVar39 + (ulong)uVar20 * 4 + 5); + } + else { + lVar57 = 0; + uVar45 = 0; + do { + puVar25 = (undefined8 *)((long)puVar44 + lVar57); + puVar6 = (undefined8 *)((long)puVar41 + lVar57); + puVar7 = (undefined8 *)((long)puVar39 + lVar57); + uVar68 = *puVar25; + uVar45 = uVar45 + 1; + uVar67 = ((undefined8 *)((long)puVar42 + lVar57))[1]; + uVar66 = *(undefined8 *)((long)puVar42 + lVar57); + lVar57 = lVar57 + 0x10; + puVar6[1] = puVar25[1]; + *puVar6 = uVar68; + puVar7[1] = uVar67; + *puVar7 = uVar66; + } while (uVar45 < uVar1); + } + } + iVar46 = iVar49; + if (iVar49 < iVar36) { + puVar33 = (undefined4 *)((long)puVar41 + lVar38); + puVar37 = (undefined4 *)((long)puVar42 + lVar43); + puVar48 = (undefined4 *)((long)puVar41 + lVar43); + puVar55 = (undefined4 *)((long)puVar39 + lVar38); + puVar8 = (undefined4 *)((long)puVar39 + lVar43); + puVar9 = (undefined4 *)((long)puVar44 + lVar43); + iVar46 = iVar5; + if ((((uVar3 < 10 || + (puVar37 < puVar33 && puVar48 < (undefined4 *)((long)puVar42 + lVar38) || + puVar37 < puVar55 && puVar8 < (undefined4 *)((long)puVar42 + lVar38))) || + puVar48 < (undefined4 *)((long)puVar44 + lVar38) && puVar9 < puVar33) || + puVar48 < puVar55 && puVar8 < puVar33) || + (puVar9 < puVar55 && puVar8 < (undefined4 *)((long)puVar44 + lVar38))) { + lVar57 = 0; + do { + uVar18 = *(undefined4 *)((long)puVar37 + lVar57); + *(undefined4 *)((long)puVar48 + lVar57) = *(undefined4 *)((long)puVar9 + lVar57); + *(undefined4 *)((long)puVar8 + lVar57) = uVar18; + lVar57 = lVar57 + 4; + } while (lVar57 != lVar69); + } + else { + uVar45 = -((uint)((ulong)puVar37 >> 2) & 3) & 3; + if (uVar3 < uVar45) { + uVar45 = uVar3; + } + iVar54 = iVar49; + if (uVar45 != 0) { + uVar18 = *puVar37; + *puVar48 = *puVar9; + *puVar8 = uVar18; + iVar54 = iVar2; + if (uVar45 != 1) { + uVar18 = *(undefined4 *)((long)puVar42 + lVar64); + *(undefined4 *)((long)puVar41 + lVar64) = *(undefined4 *)((long)puVar44 + lVar64); + *(undefined4 *)((long)puVar39 + lVar64) = uVar18; + iVar54 = iVar49 + 8; + if (uVar45 == 3) { + uVar18 = *(undefined4 *)((long)puVar42 + lVar51); + *(undefined4 *)((long)puVar41 + lVar51) = + *(undefined4 *)((long)puVar44 + lVar51); + *(undefined4 *)((long)puVar39 + lVar51) = uVar18; + iVar54 = iVar49 + 0xc; + } + } + } + lVar57 = 0; + uVar56 = 0; + uVar4 = ((uVar3 - uVar45) - 4 >> 2) + 1; + do { + lVar58 = lVar57 + lVar43 + (ulong)uVar45 * 4; + uVar56 = uVar56 + 1; + uVar68 = *(undefined8 *)((long)puVar44 + lVar58); + uVar67 = ((undefined8 *)((long)puVar42 + lVar58))[1]; + uVar66 = *(undefined8 *)((long)puVar42 + lVar58); + lVar57 = lVar57 + 0x10; + ((undefined8 *)((long)puVar41 + lVar58))[1] = + ((undefined8 *)((long)puVar44 + lVar58))[1]; + *(undefined8 *)((long)puVar41 + lVar58) = uVar68; + ((undefined8 *)((long)puVar39 + lVar58))[1] = uVar67; + *(undefined8 *)((long)puVar39 + lVar58) = uVar66; + } while (uVar56 < uVar4); + iVar54 = iVar54 + uVar4 * 0x10; + if (uVar4 * 4 != uVar3 - uVar45) { + lVar57 = (long)iVar54; + uVar18 = *(undefined4 *)((long)puVar42 + lVar57); + *(undefined4 *)((long)puVar41 + lVar57) = *(undefined4 *)((long)puVar44 + lVar57); + *(undefined4 *)((long)puVar39 + lVar57) = uVar18; + if (iVar54 + 4 < iVar36) { + lVar57 = (long)(iVar54 + 4); + uVar18 = *(undefined4 *)((long)puVar42 + lVar57); + *(undefined4 *)((long)puVar41 + lVar57) = *(undefined4 *)((long)puVar44 + lVar57); + *(undefined4 *)((long)puVar39 + lVar57) = uVar18; + if (iVar54 + 8 < iVar36) { + lVar57 = (long)(iVar54 + 8); + uVar18 = *(undefined4 *)((long)puVar42 + lVar57); + *(undefined4 *)((long)puVar41 + lVar57) = + *(undefined4 *)((long)puVar44 + lVar57); + *(undefined4 *)((long)puVar39 + lVar57) = uVar18; + } + } + } + } + } + } + if (iVar46 < iVar17) { + lVar58 = (long)iVar46; + uVar45 = iVar17 - iVar46; + lVar57 = lVar58 + 0x10; + puVar10 = (undefined1 *)((long)puVar42 + lVar58); + puVar11 = (undefined1 *)((long)puVar41 + lVar57); + puVar12 = (undefined1 *)((long)puVar41 + lVar58); + puVar13 = (undefined1 *)((long)puVar39 + lVar57); + puVar14 = (undefined1 *)((long)puVar39 + lVar58); + puVar15 = (undefined1 *)((long)puVar44 + lVar58); + if ((((uVar45 < 0x15 || + (puVar10 < puVar11 && puVar12 < (undefined1 *)((long)puVar42 + lVar57) || + puVar10 < puVar13 && puVar14 < (undefined1 *)((long)puVar42 + lVar57))) || + puVar12 < (undefined1 *)((long)puVar44 + lVar57) && puVar15 < puVar11) || + puVar12 < puVar13 && puVar14 < puVar11) || + (puVar15 < puVar13 && puVar14 < (undefined1 *)((long)puVar44 + lVar57))) { + lVar57 = 0; + do { + uVar19 = puVar10[lVar57]; + puVar12[lVar57] = puVar15[lVar57]; + puVar14[lVar57] = uVar19; + lVar57 = lVar57 + 1; + } while (lVar57 != (ulong)(uint)((iVar17 + -1) - iVar46) + 1); + } + else { + uVar4 = -(int)puVar10 & 0xf; + if (uVar45 < uVar4) { + uVar4 = uVar45; + } + iVar54 = iVar46; + if (uVar4 != 0) { + uVar19 = *puVar10; + iVar54 = iVar46 + 1; + *puVar12 = *puVar15; + *puVar14 = uVar19; + if (uVar4 != 1) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 2; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 2) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 3; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 3) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 4; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 4) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 5; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 5) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 6; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 6) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 7; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 7) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 8; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 8) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 9; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 9) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 10; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 10) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 0xb; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 0xb) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 0xc; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 0xc) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 0xd; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 != 0xd) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 0xe; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (uVar4 == 0xf) { + lVar57 = (long)iVar54; + iVar54 = iVar46 + 0xf; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar56 = ((uVar45 - uVar4) - 0x10 >> 4) + 1; + iVar46 = uVar56 * 0x10; + if (0xe < (uVar45 - 1) - uVar4) { + lVar57 = 0; + uVar60 = 0; + do { + lVar16 = lVar57 + (ulong)uVar4 + lVar58; + uVar60 = uVar60 + 1; + uVar68 = *(undefined8 *)((long)puVar44 + lVar16); + uVar67 = ((undefined8 *)((long)puVar42 + lVar16))[1]; + uVar66 = *(undefined8 *)((long)puVar42 + lVar16); + lVar57 = lVar57 + 0x10; + ((undefined8 *)((long)puVar41 + lVar16))[1] = + ((undefined8 *)((long)puVar44 + lVar16))[1]; + *(undefined8 *)((long)puVar41 + lVar16) = uVar68; + ((undefined8 *)((long)puVar39 + lVar16))[1] = uVar67; + *(undefined8 *)((long)puVar39 + lVar16) = uVar66; + } while (uVar60 < uVar56); + iVar54 = iVar54 + iVar46; + if (iVar46 == uVar45 - uVar4) goto LAB_0028fb14; + } + lVar57 = (long)iVar54; + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 1 < iVar17) { + lVar57 = (long)(iVar54 + 1); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 2 < iVar17) { + lVar57 = (long)(iVar54 + 2); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 3 < iVar17) { + lVar57 = (long)(iVar54 + 3); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 4 < iVar17) { + lVar57 = (long)(iVar54 + 4); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 5 < iVar17) { + lVar57 = (long)(iVar54 + 5); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 6 < iVar17) { + lVar57 = (long)(iVar54 + 6); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 7 < iVar17) { + lVar57 = (long)(iVar54 + 7); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 8 < iVar17) { + lVar57 = (long)(iVar54 + 8); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 9 < iVar17) { + lVar57 = (long)(iVar54 + 9); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 10 < iVar17) { + lVar57 = (long)(iVar54 + 10); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 0xb < iVar17) { + lVar57 = (long)(iVar54 + 0xb); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 0xc < iVar17) { + lVar57 = (long)(iVar54 + 0xc); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 0xd < iVar17) { + lVar57 = (long)(iVar54 + 0xd); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + if (iVar54 + 0xe < iVar17) { + lVar57 = (long)(iVar54 + 0xe); + uVar19 = *(undefined1 *)((long)puVar42 + lVar57); + *(undefined1 *)((long)puVar41 + lVar57) = + *(undefined1 *)((long)puVar44 + lVar57); + *(undefined1 *)((long)puVar39 + lVar57) = uVar19; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0028fb14: + iVar53 = iVar53 + 1; + puVar42 = (undefined4 *)((long)puVar42 + local_8d0); + puVar41 = (undefined4 *)((long)puVar41 + local_870); + puVar50 = (undefined4 *)((long)puVar50 + local_870); + puVar52 = (undefined4 *)((long)puVar52 - local_870); + puVar44 = (undefined4 *)((long)puVar44 - local_8d0); + puVar39 = (undefined4 *)((long)puVar39 - local_870); + puVar65 = (undefined4 *)((long)puVar65 + local_8d0); + puVar28 = (undefined4 *)((long)puVar28 - local_8d0); + } while (iVar53 != iVar62); + } + if (param_3 == 0) goto LAB_0028efdc; + piVar27 = aiStack_420; + iVar17 = local_880[1]; + iVar62 = *local_880; + local_428 = 0x108; + uVar34 = (long)iVar24 * (long)iVar17; + local_430 = piVar27; + iVar53 = iVar24 * ((iVar17 + 1) / 2); + if (uVar34 < 0x109) { + local_428 = uVar34; + bVar23 = false; + } + else { + uVar26 = uVar34 * 4; + if (0x1fc0000000000000 < uVar34) { + uVar26 = 0xffffffffffffffff; + } + piVar27 = operator_new__(uVar26); + local_430 = piVar27; + bVar23 = piVar27 != aiStack_420; + local_428 = uVar34; + } + if (0 < iVar17) { + lVar38 = 0; + uVar26 = uVar61; + if (iVar24 == 0) { + uVar26 = 1; + } + iVar49 = 0; + iVar36 = iVar24 * (iVar17 + -1); + piVar40 = piVar27; + do { + uVar29 = -((ulong)piVar40 >> 2 & 3) & 3; + if (uVar26 < uVar29) { + uVar29 = uVar26; + } + uVar31 = uVar26; + if ((uVar26 < 6) || (uVar35 = 0, uVar31 = uVar29, uVar29 != 0)) { + *piVar40 = iVar36; + uVar35 = uVar31; + if ((uVar31 != 1) && + ((piVar40[1] = iVar36 + 1, uVar31 != 2 && (piVar40[2] = iVar36 + 2, uVar31 != 3)))) { + piVar40[3] = iVar36 + 3; + if (uVar31 == 5) { + piVar40[4] = iVar36 + 4; + } + else { + uVar35 = 4; + } + } + uVar29 = uVar31; + if (uVar26 != uVar31) goto LAB_0028fc7c; + } + else { +LAB_0028fc7c: + lVar43 = uVar61 - 1; + if (iVar24 == 0) { + lVar43 = 0; + } + uVar31 = ((uVar26 - uVar29) - 4 >> 2) + 1; + lVar64 = uVar31 * 4; + if (2 < lVar43 - uVar29) { + lVar43 = uVar35 + 1; + uVar47 = 0; + piVar32 = piVar27 + uVar29 + lVar38; + uVar63 = uVar35; + do { + iVar5 = (int)uVar63; + iVar2 = (int)lVar43; + uVar47 = uVar47 + 1; + uVar63 = uVar63 + _DAT_0028ff40; + lVar43 = lVar43 + _UNK_0028ff48; + *(ulong *)(piVar32 + 2) = + CONCAT44(iVar2 + (int)_UNK_0028ff38 + iVar36,iVar5 + (int)_DAT_0028ff30 + iVar36) + ; + *(ulong *)piVar32 = CONCAT44(iVar2 + iVar36,iVar5 + iVar36); + piVar32 = piVar32 + 4; + } while (uVar47 < uVar31); + uVar35 = uVar35 + lVar64; + if (lVar64 - (uVar26 - uVar29) == 0) goto LAB_0028fd48; + } + uVar29 = uVar35 + 1; + piVar27[uVar35 + lVar38] = iVar36 + (int)uVar35; + if (uVar29 < uVar61) { + uVar35 = uVar35 + 2; + piVar27[uVar29 + lVar38] = iVar36 + (int)uVar29; + if (uVar35 < uVar61) { + piVar27[uVar35 + lVar38] = iVar36 + (int)uVar35; + } + } + } +LAB_0028fd48: + iVar49 = iVar49 + 1; + piVar40 = piVar40 + iVar24; + iVar36 = iVar36 - iVar24; + lVar38 = lVar38 + uVar61; + } while (iVar49 != iVar17); + } + iVar24 = iVar62 + -1; + local_430 = piVar27; + local_428 = uVar34; + if (iVar62 != 0) { + do { + lVar38 = 0; + if (0 < iVar53) { + do { + iVar17 = piVar27[lVar38]; + uVar19 = *(undefined1 *)((long)puVar59 + lVar38); + *(undefined1 *)((long)puVar59 + lVar38) = *(undefined1 *)((long)puVar59 + (long)iVar17); + lVar38 = lVar38 + 1; + *(undefined1 *)((long)puVar59 + (long)iVar17) = uVar19; + } while ((int)lVar38 < iVar53); + } + iVar24 = iVar24 + -1; + puVar59 = (undefined4 *)((long)puVar59 + lVar22); + } while (iVar24 != -1); + } + } + else { + piVar27 = aiStack_850; + iVar17 = local_8e0[1]; + iVar62 = *local_8e0; + local_860 = piVar27; + uVar34 = (long)iVar24 * (long)iVar17; + local_858 = 0x108; + iVar53 = iVar24 * ((iVar17 + 1) / 2); + if (uVar34 < 0x109) { + bVar23 = false; + local_858 = uVar34; + } + else { + uVar26 = uVar34 * 4; + if (0x1fc0000000000000 < uVar34) { + uVar26 = 0xffffffffffffffff; + } + piVar27 = operator_new__(uVar26); + local_860 = piVar27; + bVar23 = piVar27 != aiStack_850; + local_858 = uVar34; + } + if (0 < iVar17) { + lVar43 = 0; + uVar26 = uVar61; + if (iVar24 == 0) { + uVar26 = 1; + } + iVar49 = 0; + iVar36 = iVar24 * (iVar17 + -1); + piVar40 = piVar27; + do { + uVar29 = -((ulong)piVar40 >> 2 & 3) & 3; + if (uVar26 < uVar29) { + uVar29 = uVar26; + } + uVar31 = uVar26; + if ((uVar26 < 6) || (uVar35 = 0, uVar31 = uVar29, uVar29 != 0)) { + *piVar40 = iVar36; + uVar35 = uVar31; + if ((uVar31 != 1) && + ((piVar40[1] = iVar36 + 1, uVar31 != 2 && (piVar40[2] = iVar36 + 2, uVar31 != 3)))) { + piVar40[3] = iVar36 + 3; + if (uVar31 == 5) { + piVar40[4] = iVar36 + 4; + } + else { + uVar35 = 4; + } + } + if (uVar26 != uVar31) goto LAB_0028ee74; + } + else { +LAB_0028ee74: + lVar64 = uVar61 - 1; + if (iVar24 == 0) { + lVar64 = 0; + } + uVar29 = ((uVar26 - uVar31) - 4 >> 2) + 1; + lVar51 = uVar29 * 4; + if (2 < lVar64 - uVar31) { + lVar64 = uVar35 + 1; + uVar47 = 0; + piVar32 = piVar27 + lVar43 + uVar31; + uVar63 = uVar35; + do { + iVar5 = (int)uVar63; + iVar2 = (int)lVar64; + uVar47 = uVar47 + 1; + uVar63 = uVar63 + _DAT_0028ff40; + lVar64 = lVar64 + _UNK_0028ff48; + *(ulong *)(piVar32 + 2) = + CONCAT44(iVar2 + (int)_UNK_0028ff38 + iVar36,iVar5 + (int)_DAT_0028ff30 + iVar36) + ; + *(ulong *)piVar32 = CONCAT44(iVar2 + iVar36,iVar5 + iVar36); + piVar32 = piVar32 + 4; + } while (uVar47 < uVar29); + uVar35 = uVar35 + lVar51; + if (uVar26 - uVar31 == lVar51) goto LAB_0028ef38; + } + uVar29 = uVar35 + 1; + piVar27[lVar43 + uVar35] = iVar36 + (int)uVar35; + if (uVar29 < uVar61) { + uVar35 = uVar35 + 2; + piVar27[lVar43 + uVar29] = iVar36 + (int)uVar29; + if (uVar35 < uVar61) { + piVar27[lVar43 + uVar35] = iVar36 + (int)uVar35; + } + } + } +LAB_0028ef38: + iVar49 = iVar49 + 1; + piVar40 = piVar40 + iVar24; + iVar36 = iVar36 - iVar24; + lVar43 = lVar43 + uVar61; + } while (iVar49 != iVar17); + } + iVar24 = iVar62 + -1; + local_860 = piVar27; + local_858 = uVar34; + if (iVar62 != 0) { + do { + lVar43 = 0; + if (0 < iVar53) { + do { + iVar17 = piVar27[lVar43]; + uVar19 = *(undefined1 *)((long)puVar44 + lVar43); + *(undefined1 *)((long)puVar59 + lVar43) = *(undefined1 *)((long)puVar44 + (long)iVar17); + lVar43 = lVar43 + 1; + *(undefined1 *)((long)puVar59 + (long)iVar17) = uVar19; + } while ((int)lVar43 < iVar53); + } + iVar24 = iVar24 + -1; + puVar44 = (undefined4 *)((long)puVar44 + lVar38); + puVar59 = (undefined4 *)((long)puVar59 + lVar22); + } while (iVar24 != -1); + } + } + if (bVar23) { + operator_delete__(piVar27); + } +LAB_0028efdc: + if (local_888 != 0) { + piVar27 = (int *)(local_888 + 0x14); + do { + iVar24 = *piVar27; + cVar21 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar23) { + *piVar27 = iVar24 + -1; + cVar21 = ExclusiveMonitorsStatus(); + } + } while (cVar21 != '\0'); + if (iVar24 == 1) { + Mat::deallocate((Mat *)&local_8c0); + } + } + local_888 = 0; + local_8b0 = (undefined4 *)0x0; + local_898 = 0; + local_8a0 = 0; + local_8a8 = 0; + if (0 < local_8bc) { + iVar24 = 0; + piVar27 = local_880; + do { + *piVar27 = 0; + iVar24 = iVar24 + 1; + piVar27 = piVar27 + 1; + } while (iVar24 < local_8bc); + } + if (local_878 != &local_870) { + fastFree(local_878); + } + if (local_8e8 != 0) { + piVar27 = (int *)(local_8e8 + 0x14); + do { + iVar24 = *piVar27; + cVar21 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar23) { + *piVar27 = iVar24 + -1; + cVar21 = ExclusiveMonitorsStatus(); + } + } while (cVar21 != '\0'); + if (iVar24 == 1) { + Mat::deallocate((Mat *)&local_920); + } + } + local_8e8 = 0; + local_910 = (undefined4 *)0x0; + local_8f8 = 0; + local_900 = 0; + local_908 = 0; + if (0 < local_91c) { + iVar24 = 0; + piVar27 = local_8e0; + do { + *piVar27 = 0; + iVar24 = iVar24 + 1; + piVar27 = piVar27 + 1; + } while (iVar24 < local_91c); + } + if (local_8d8 != &local_8d0) { + fastFree(local_8d8); + } + return; +} + + +================================================================== + +### FUNC 0028ff50 (1340 bytes) name=repeat + +/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffa8 : 0x00290348 */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::repeat(cv::_InputArray const&, int, int, cv::_OutputArray const&) */ + +void cv::repeat(_InputArray *param_1,int param_2,int param_3,_OutputArray *param_4) + +{ + int iVar1; + uint uVar2; + long lVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + int iVar7; + undefined8 *puVar8; + int *piVar9; + undefined4 *puVar10; + Mat *pMVar11; + int iVar12; + int iVar13; + long lVar14; + int local_c8; + int local_c4; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + long *local_78; + long local_70; + long local_68; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + long *local_18; + long local_10; + long local_8; + + iVar7 = _InputArray::dims(param_1,-1); + if (2 < iVar7) { + local_60 = 0; + local_58 = 0; + puVar8 = (undefined8 *)String::allocate((String *)&local_60,0x10); + uVar6 = _DAT_00463f58; + *puVar8 = DAT_00463f50; + puVar8[1] = uVar6; + error(-0xd7,(String *)&local_60,"void cv::repeat(cv::InputArray, int, int, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x366); + String::deallocate((String *)&local_60); + } + if ((param_2 < 1) || (param_3 < 1)) { + local_60 = 0; + local_58 = 0; + puVar8 = (undefined8 *)String::allocate((String *)&local_60,0x10); + uVar6 = _LAB_00463f70; + *puVar8 = DAT_00463f68; + puVar8[1] = uVar6; + error(-0xd7,(String *)&local_60,"void cv::repeat(cv::InputArray, int, int, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x367); + String::deallocate((String *)&local_60); + } + _InputArray::size((int)param_1); + iVar7 = _InputArray::type(param_1,-1); + _OutputArray::create(param_4,param_2 * local_c4,param_3 * local_c8,iVar7,-1,false,0); + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) { + pMVar11 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar11; + local_bc = *(int *)(pMVar11 + 4); + local_b8 = *(undefined4 *)(pMVar11 + 8); + local_b4 = *(undefined4 *)(pMVar11 + 0xc); + local_b0 = *(long *)(pMVar11 + 0x10); + local_a8 = *(undefined8 *)(pMVar11 + 0x18); + local_a0 = *(undefined8 *)(pMVar11 + 0x20); + local_98 = *(undefined8 *)(pMVar11 + 0x28); + local_90 = *(undefined8 *)(pMVar11 + 0x30); + local_88 = *(long *)(pMVar11 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = *piVar9 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar11 + 4) < 3) { + local_70 = **(long **)(pMVar11 + 0x48); + local_68 = (*(long **)(pMVar11 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar11); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar7 = _InputArray::kind((_InputArray *)param_4); + if (iVar7 == 0x10000) { + pMVar11 = *(Mat **)(param_4 + 8); + local_20 = (int *)&local_58; + local_18 = &local_10; + uVar2 = *(uint *)pMVar11; + local_50 = *(long *)(pMVar11 + 0x10); + local_60 = *(ulong *)pMVar11; + uVar6 = *(undefined8 *)(pMVar11 + 8); + local_48 = *(undefined8 *)(pMVar11 + 0x18); + local_40 = *(undefined8 *)(pMVar11 + 0x20); + local_38 = *(undefined8 *)(pMVar11 + 0x28); + local_30 = *(undefined8 *)(pMVar11 + 0x30); + local_28 = *(long *)(pMVar11 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = *piVar9 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar11 + 4) < 3) { + local_10 = **(long **)(pMVar11 + 0x48); + local_8 = (*(long **)(pMVar11 + 0x48))[1]; + iVar7 = local_58._4_4_; + iVar1 = (int)local_58; + local_58 = uVar6; + goto joined_r0x0029034c; + } + local_60 = (ulong)uVar2; + local_58 = uVar6; + Mat::copySize((Mat *)&local_60,pMVar11); + } + else { + _InputArray::getMat_((int)param_4); + } + iVar7 = local_20[1]; + iVar1 = *local_20; +joined_r0x0029034c: + if (local_bc < 1) { + iVar7 = 0; + iVar12 = 0; + } + else { + iVar12 = (int)local_78[(long)local_bc + -1]; + iVar7 = iVar7 * iVar12; + } + lVar14 = 0; + iVar13 = 0; + if (0 < local_c4) { + do { + if (0 < iVar7) { + iVar13 = 0; + do { + memcpy((void *)(local_50 + lVar14 * *local_18 + (long)iVar13), + (void *)(local_b0 + lVar14 * *local_78),(long)(local_c8 * iVar12)); + iVar13 = iVar13 + local_c8 * iVar12; + } while (iVar13 < iVar7); + } + iVar13 = (int)lVar14 + 1; + lVar14 = lVar14 + 1; + } while (iVar13 < local_c4); + } + lVar14 = (long)iVar13; + if (iVar13 < iVar1) { + do { + iVar12 = iVar13 - local_c4; + iVar13 = iVar13 + 1; + lVar3 = *local_18 * lVar14; + lVar14 = lVar14 + 1; + memcpy((void *)(local_50 + lVar3),(void *)(local_50 + (long)iVar12 * *local_18),(long)iVar7); + } while (iVar13 != iVar1); + } + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar9; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar7 = 0; + piVar9 = local_20; + do { + *piVar9 = 0; + iVar7 = iVar7 + 1; + piVar9 = piVar9 + 1; + } while (iVar7 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar9; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + puVar10 = local_80; + do { + *puVar10 = 0; + iVar7 = iVar7 + 1; + puVar10 = puVar10 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002904e0 (672 bytes) name=repeat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::repeat(cv::Mat const&, int, int) */ + +void __thiscall cv::repeat(cv *this,Mat *param_1,int param_2,int param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined8 *puVar5; + undefined8 *puVar6; + int iVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + Mat *in_x8; + undefined8 uVar12; + undefined8 uVar13; + undefined4 local_90 [2]; + cv *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + if ((param_2 != 1) || ((int)param_1 != 1)) { + local_18 = &local_10; + local_20 = &uStack_58; + uStack_8 = 0; + local_10 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + uStack_58 = _UNK_002907b8; + local_60 = _DAT_002907b0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_88 = this; + local_70 = (Mat *)&local_60; + repeat((_InputArray *)local_90,(int)param_1,param_2,(_OutputArray *)local_78); + *(undefined8 *)(in_x8 + 0x10) = local_50; + *(undefined8 *)(in_x8 + 0x18) = local_48; + *(undefined8 *)(in_x8 + 8) = uStack_58; + *(undefined8 *)in_x8 = local_60; + *(undefined8 *)(in_x8 + 0x20) = local_40; + *(undefined8 *)(in_x8 + 0x28) = local_38; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x30) = local_30; + *(long *)(in_x8 + 0x38) = local_28; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (local_60._4_4_ < 3) { + puVar5 = *(undefined8 **)(in_x8 + 0x48); + *puVar5 = *local_18; + puVar5[1] = local_18[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + Mat::copySize(in_x8,(Mat *)&local_60); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar7 = 0; + puVar5 = local_20; + do { + *(undefined4 *)puVar5 = 0; + iVar7 = iVar7 + 1; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } while (iVar7 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; + } + uVar11 = *(undefined8 *)(this + 0x18); + uVar12 = *(undefined8 *)(this + 0x10); + uVar10 = *(undefined8 *)(this + 0x20); + uVar13 = *(undefined8 *)(this + 8); + uVar9 = *(undefined8 *)(this + 0x28); + uVar8 = *(undefined8 *)(this + 0x30); + lVar4 = *(long *)(this + 0x38); + *(undefined8 *)in_x8 = *(undefined8 *)this; + *(undefined8 *)(in_x8 + 8) = uVar13; + *(undefined8 *)(in_x8 + 0x10) = uVar12; + *(undefined8 *)(in_x8 + 0x18) = uVar11; + *(undefined8 *)(in_x8 + 0x20) = uVar10; + *(undefined8 *)(in_x8 + 0x28) = uVar9; + *(undefined8 *)(in_x8 + 0x30) = uVar8; + *(long *)(in_x8 + 0x38) = lVar4; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (lVar4 != 0) { + piVar1 = (int *)(lVar4 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(this + 4)) { + *(undefined4 *)(in_x8 + 4) = 0; + Mat::copySize(in_x8,(Mat *)this); + return; + } + puVar6 = *(undefined8 **)(this + 0x48); + puVar5 = *(undefined8 **)(in_x8 + 0x48); + *puVar5 = *puVar6; + puVar5[1] = puVar6[1]; + return; +} + + +================================================================== + +### FUNC 002907c0 (456 bytes) name=borderInterpolate + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::borderInterpolate(int, int, int) */ + +uint cv::borderInterpolate(int param_1,int param_2,int param_3) + +{ + int iVar1; + undefined2 uVar2; + undefined1 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + bool bVar7; + uint uVar8; + undefined8 *puVar9; + undefined4 *puVar10; + undefined8 local_10; + undefined8 local_8; + + uVar8 = param_1; + if ((uint)param_2 <= (uint)param_1) { + if (param_3 == 1) { + if (-1 < param_1) { + return param_2 - 1; + } + uVar8 = 0; + } + else if ((param_3 - 2U & 0xfffffffd) == 0) { + uVar8 = 0; + if (param_2 != 1) { + do { + iVar1 = (param_2 * 2 + -1) - param_1; + bVar7 = -1 < param_1; + param_1 = ~param_1 + (uint)(param_3 == 4); + if (bVar7) { + param_1 = iVar1 - (uint)(param_3 == 4); + } + uVar8 = param_1; + } while ((uint)param_2 <= (uint)param_1); + } + } + else if (param_3 == 3) { + if (param_2 < 1) { + local_10 = 0; + local_8 = 0; + puVar10 = (undefined4 *)String::allocate((String *)&local_10,7); + uVar3 = DAT_00463f86; + uVar2 = DAT_00463f84; + *puVar10 = DAT_00463f80; + *(undefined2 *)(puVar10 + 1) = uVar2; + *(undefined1 *)((long)puVar10 + 6) = uVar3; + error(-0xd7,(String *)&local_10,"int cv::borderInterpolate(int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x3ad); + String::deallocate((String *)&local_10); + } + if (param_1 < 0) { + iVar1 = 0; + if (param_2 != 0) { + iVar1 = ((param_1 - param_2) + 1) / param_2; + } + param_1 = param_1 - iVar1 * param_2; + } + uVar8 = param_1; + if (param_2 <= param_1) { + iVar1 = 0; + if (param_2 != 0) { + iVar1 = param_1 / param_2; + } + uVar8 = param_1 - iVar1 * param_2; + } + } + else { + uVar8 = 0xffffffff; + if (param_3 != 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)String::allocate((String *)&local_10,0x1f); + uVar3 = DAT_00463fa6; + uVar2 = DAT_00463fa4; + uVar6 = DAT_00463fa0; + uVar5 = DAT_00463f90; + uVar4 = _LAB_00463f88; + puVar9[2] = DAT_00463f98; + *(undefined4 *)(puVar9 + 3) = uVar6; + *(undefined2 *)((long)puVar9 + 0x1c) = uVar2; + *(undefined1 *)((long)puVar9 + 0x1e) = uVar3; + *puVar9 = uVar4; + puVar9[1] = uVar5; + error(-5,(String *)&local_10,"int cv::borderInterpolate(int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x3b6); + String::deallocate((String *)&local_10); + uVar8 = param_1; + } + } + } + return uVar8; +} + + +================================================================== + +### FUNC 002909b0 (5316 bytes) name=copyMakeBorder + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::copyMakeBorder(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, int, + cv::Scalar_ const&) */ + +void cv::copyMakeBorder(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4, + int param_5,int param_6,int param_7,Scalar_ *param_8) + +{ + void *__dest; + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + ulong uVar10; + void *pvVar11; + ulong uVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + uint uVar17; + undefined8 *puVar18; + ulong uVar19; + void *pvVar20; + char *pcVar21; + uint uVar22; + int *piVar23; + long lVar24; + int *piVar25; + int iVar26; + ulong uVar27; + uint uVar28; + int iVar29; + undefined8 *puVar30; + int iVar31; + uint uVar32; + int iVar33; + ulong uVar34; + void *pvVar35; + uint uVar36; + int *piVar37; + long lVar38; + size_t __n; + Mat *pMVar39; + int iVar40; + int iVar41; + int iVar45; + long lVar42; + double dVar43; + undefined8 uVar44; + int iVar46; + int iVar47; + int iVar48; + int iVar49; + int local_970; + int local_94c; + undefined8 local_938; + undefined8 local_930; + uint local_928; + int local_924; + int local_920; + int local_91c; + void *local_918; + undefined8 local_910; + undefined8 local_908; + undefined8 local_900; + undefined8 local_8f8; + long local_8f0; + int *local_8e8; + ulong *local_8e0; + ulong local_8d8; + ulong local_8d0; + undefined4 local_8c8; + int local_8c4; + int local_8c0; + undefined4 local_8bc; + void *local_8b8; + undefined8 local_8b0; + undefined8 local_8a8; + undefined8 local_8a0; + undefined8 local_898; + long local_890; + int *local_888; + ulong *local_880; + ulong local_878; + ulong local_870; + undefined8 local_868; + ulong local_860; + int aiStack_858 [258]; + undefined8 local_450; + Mat *local_448; + int local_440 [272]; + + if ((((param_3 < 0) || (param_4 < 0)) || (param_5 < 0)) || (param_6 < 0)) { + local_450 = (int *)0x0; + local_448 = (Mat *)0x0; + puVar18 = (undefined8 *)String::allocate((String *)&local_450,0x32); + uVar7 = DAT_00463fd0; + uVar6 = DAT_00463fc8; + uVar5 = DAT_00463fc0; + uVar4 = DAT_00463fb8; + uVar3 = DAT_00463fb0; + uVar44 = _DAT_00463fa8; + *(undefined2 *)(puVar18 + 6) = DAT_00463fd8; + *puVar18 = uVar44; + puVar18[1] = uVar3; + puVar18[2] = uVar4; + puVar18[3] = uVar5; + puVar18[4] = uVar6; + puVar18[5] = uVar7; + error(-0xd7,(String *)&local_450, + "void cv::copyMakeBorder(cv::InputArray, cv::OutputArray, int, int, int, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x47e); + String::deallocate((String *)&local_450); + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) goto LAB_00290d98; +LAB_00290a24: + _InputArray::getMat_((int)param_1); + } + else { + iVar13 = _InputArray::kind(param_1); + if (iVar13 != 0x10000) goto LAB_00290a24; +LAB_00290d98: + pMVar39 = *(Mat **)(param_1 + 8); + local_8e8 = &local_920; + local_8e0 = &local_8d8; + local_928 = *(uint *)pMVar39; + local_924 = *(int *)(pMVar39 + 4); + local_920 = *(int *)(pMVar39 + 8); + local_91c = *(int *)(pMVar39 + 0xc); + local_918 = *(void **)(pMVar39 + 0x10); + local_910 = *(undefined8 *)(pMVar39 + 0x18); + local_908 = *(undefined8 *)(pMVar39 + 0x20); + local_900 = *(undefined8 *)(pMVar39 + 0x28); + local_8f8 = *(undefined8 *)(pMVar39 + 0x30); + local_8f0 = *(long *)(pMVar39 + 0x38); + local_8d0 = 0; + local_8d8 = 0; + if (local_8f0 != 0) { + piVar25 = (int *)(local_8f0 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = *piVar25 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar39 + 4) < 3) { + local_8d8 = **(ulong **)(pMVar39 + 0x48); + local_8d0 = (*(ulong **)(pMVar39 + 0x48))[1]; + } + else { + local_924 = 0; + Mat::copySize((Mat *)&local_928,pMVar39); + } + } + uVar36 = local_928 & 0xfff; + local_970 = param_3; + if (((local_928 >> 0xf & 1) != 0) && (((uint)param_7 >> 4 & 1) == 0)) { + local_868 = (int *)(CONCAT44(param_7,param_7) & 0x1000000010); + local_450 = (int *)(CONCAT44(param_7,param_7) & 0x1000000010); + Mat::locateROI((Mat *)&local_928,(Size_ *)&local_868,(Point_ *)&local_450); + iVar13 = (local_868._4_4_ - local_920) - local_450._4_4_; + if (local_450._4_4_ < param_3) { + local_970 = local_450._4_4_; + } + iVar33 = ((int)local_868 - local_91c) - (int)local_450; + iVar29 = param_4; + if (iVar13 < param_4) { + iVar29 = iVar13; + } + iVar13 = param_5; + if ((int)local_450 < param_5) { + iVar13 = (int)local_450; + } + iVar16 = param_6; + if (iVar33 < param_6) { + iVar16 = iVar33; + } + Mat::adjustROI((Mat *)&local_928,local_970,iVar29,iVar13,iVar16); + param_4 = param_4 - iVar29; + param_6 = param_6 - iVar16; + local_970 = param_3 - local_970; + param_5 = param_5 - iVar13; + } + _OutputArray::create + (param_2,param_4 + local_970 + local_920,param_6 + param_5 + local_91c,uVar36,-1,false,0 + ); + iVar13 = _InputArray::kind((_InputArray *)param_2); + if (iVar13 == 0x10000) { + pMVar39 = *(Mat **)(param_2 + 8); + local_890 = *(long *)(pMVar39 + 0x38); + local_8c8 = *(undefined4 *)pMVar39; + local_8c4 = *(int *)(pMVar39 + 4); + local_8c0 = *(int *)(pMVar39 + 8); + local_8bc = *(undefined4 *)(pMVar39 + 0xc); + local_8b8 = *(void **)(pMVar39 + 0x10); + local_8b0 = *(undefined8 *)(pMVar39 + 0x18); + local_8a8 = *(undefined8 *)(pMVar39 + 0x20); + local_8a0 = *(undefined8 *)(pMVar39 + 0x28); + local_898 = *(undefined8 *)(pMVar39 + 0x30); + local_888 = &local_8c0; + local_880 = &local_878; + local_870 = 0; + local_878 = 0; + if (local_890 != 0) { + piVar25 = (int *)(local_890 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = *piVar25 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar39 + 4) < 3) { + local_878 = **(ulong **)(pMVar39 + 0x48); + local_870 = (*(ulong **)(pMVar39 + 0x48))[1]; + } + else { + local_8c4 = 0; + Mat::copySize((Mat *)&local_8c8,pMVar39); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar12 = local_878; + pvVar11 = local_8b8; + uVar10 = local_8d8; + pvVar35 = local_918; + if (((param_5 == 0 && param_6 == 0) && param_4 == 0) && local_970 == 0) { + if ((local_918 != local_8b8) || (local_8d8 != local_878)) { + local_440[0] = 0; + local_440[1] = 0; + local_450 = (int *)CONCAT44(local_450._4_4_,0x2010000); + local_448 = (Mat *)&local_8c8; + Mat::copyTo((Mat *)&local_928,(_OutputArray *)&local_450); + } + if (local_890 != 0) { + piVar25 = (int *)(local_890 + 0x14); + do { + iVar13 = *piVar25; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_8c8); + } + } + local_890 = 0; + local_8b8 = (void *)0x0; + local_8a0 = 0; + local_8a8 = 0; + local_8b0 = 0; + if (0 < local_8c4) { + iVar13 = 0; + piVar25 = local_888; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_8c4); + } + if (local_880 != &local_878) { + fastFree(local_880); + } + if (local_8f0 != 0) { + piVar25 = (int *)(local_8f0 + 0x14); + do { + iVar13 = *piVar25; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_928); + } + } + if (0 < local_924) { + iVar13 = 0; + piVar25 = local_8e8; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_924); + } + goto LAB_00290bfc; + } + uVar36 = param_7 & 0xffffffef; + if ((param_7 & 0xffffffefU) == 0) { + local_450 = local_440; + uVar32 = local_928 >> 3 & 0x1ff; + uVar36 = uVar32 + 1; + local_448 = (Mat *)0x88; + pMVar39 = (Mat *)(long)(int)uVar36; + if (uVar36 < 0x89) { + if (4 < uVar36) goto LAB_0029177c; + iVar13 = uVar32 << 3; + local_448 = pMVar39; + } + else { + local_450 = operator_new__((long)pMVar39 << 3); +LAB_0029177c: + dVar43 = *(double *)param_8; + if (((dVar43 == *(double *)(param_8 + 8)) && (dVar43 == *(double *)(param_8 + 0x10))) && + (dVar43 == *(double *)(param_8 + 0x18))) { + iVar13 = 0; + local_448 = pMVar39; + } + else { + local_938 = 0; + local_930 = 0; + local_448 = pMVar39; + pcVar21 = (char *)String::allocate((String *)&local_938,0x44); + uVar7 = s_value_0_____value_1_____value_0__00463fe0._40_8_; + uVar6 = s_value_0_____value_1_____value_0__00463fe0._32_8_; + uVar5 = s_value_0_____value_1_____value_0__00463fe0._24_8_; + uVar4 = s_value_0_____value_1_____value_0__00463fe0._16_8_; + uVar3 = s_value_0_____value_1_____value_0__00463fe0._8_8_; + uVar44 = s_value_0_____value_1_____value_0__00463fe0._0_8_; + *(undefined4 *)(pcVar21 + 0x40) = s_value_0_____value_1_____value_0__00463fe0._64_4_; + uVar9 = s_value_0_____value_1_____value_0__00463fe0._56_8_; + uVar8 = s_value_0_____value_1_____value_0__00463fe0._48_8_; + *(undefined8 *)pcVar21 = uVar44; + *(undefined8 *)(pcVar21 + 8) = uVar3; + *(undefined8 *)(pcVar21 + 0x10) = uVar4; + *(undefined8 *)(pcVar21 + 0x18) = uVar5; + *(undefined8 *)(pcVar21 + 0x20) = uVar6; + *(undefined8 *)(pcVar21 + 0x28) = uVar7; + *(undefined8 *)(pcVar21 + 0x30) = uVar8; + *(undefined8 *)(pcVar21 + 0x38) = uVar9; + error(-0xd7,(String *)&local_938, + "void cv::copyMakeBorder(cv::InputArray, cv::OutputArray, int, int, int, int, int, const Scalar&)" + ,"/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x51f); + String::deallocate((String *)&local_938); + iVar13 = 0; + } + } + scalarToRawData(param_8,local_450,(local_928 & 7) + iVar13,uVar36); + piVar25 = local_450; + uVar12 = local_878; + pvVar11 = local_8b8; + uVar10 = local_8d8; + pvVar35 = local_918; + iVar13 = *local_8e8; + iVar29 = local_8e8[1]; + iVar33 = local_888[1]; + iVar16 = *local_888; + if (local_924 < 1) { + __n = 0; + iVar29 = 0; + iVar49 = 0; + iVar31 = 0; + uVar19 = 0; + uVar36 = 0; +LAB_00291e0c: + local_868 = aiStack_858; + local_860 = uVar19; + } + else { + local_868 = aiStack_858; + local_860 = 0x408; + uVar36 = (uint)local_8e0[(long)local_924 + -1]; + iVar49 = iVar33 * uVar36; + uVar19 = (ulong)iVar49; + if (uVar19 < 0x409) { + iVar31 = iVar29 * uVar36; + iVar29 = ((iVar33 - iVar29) - param_5) * uVar36; + __n = (size_t)(int)(param_5 * uVar36); + goto LAB_00291e0c; + } + local_868 = operator_new__(uVar19); + iVar31 = iVar29 * uVar36; + iVar29 = ((iVar33 - iVar29) - param_5) * uVar36; + __n = (size_t)(int)(param_5 * uVar36); + local_860 = uVar19; + } + piVar37 = local_868; + iVar16 = (iVar16 - iVar13) - local_970; + if (0 < iVar33) { + uVar32 = -(int)piVar25 & 0xf; + iVar40 = 0; + uVar22 = uVar36; + if (uVar32 < uVar36) { + uVar22 = uVar32; + } + iVar14 = 0; + uVar32 = ((uVar36 - uVar22) - 0x10 >> 4) + 1; + iVar15 = uVar32 * 0x10; + piVar23 = local_868; + do { + if (0 < (int)uVar36) { + if ((piVar25 < piVar23 + 4 && piVar23 < piVar25 + 4) || (uVar36 < 0x16)) { + lVar38 = 0; + do { + *(undefined1 *)((long)piVar23 + lVar38) = *(undefined1 *)((long)piVar25 + lVar38); + lVar38 = lVar38 + 1; + } while ((int)lVar38 < (int)uVar36); + } + else { + uVar17 = uVar22; + if (((uVar22 != 0) && (*(char *)piVar23 = (char)*piVar25, uVar22 != 1)) && + ((*(undefined1 *)((long)piVar23 + 1) = *(undefined1 *)((long)piVar25 + 1), + uVar22 != 2 && + (((*(undefined1 *)((long)piVar23 + 2) = *(undefined1 *)((long)piVar25 + 2), + uVar22 != 3 && + (*(undefined1 *)((long)piVar23 + 3) = *(undefined1 *)((long)piVar25 + 3), + uVar22 != 4)) && (*(char *)(piVar23 + 1) = (char)piVar25[1], uVar22 != 5)))))) { + *(undefined1 *)((long)piVar23 + 5) = *(undefined1 *)((long)piVar25 + 5); + if (uVar22 == 6) { + uVar17 = 6; + } + else { + *(undefined1 *)((long)piVar23 + 6) = *(undefined1 *)((long)piVar25 + 6); + if (((uVar22 != 7) && + (*(undefined1 *)((long)piVar23 + 7) = *(undefined1 *)((long)piVar25 + 7), + uVar22 != 8)) && + ((((*(char *)(piVar23 + 2) = (char)piVar25[2], uVar22 != 9 && + ((*(undefined1 *)((long)piVar23 + 9) = *(undefined1 *)((long)piVar25 + 9), + uVar22 != 10 && + (*(undefined1 *)((long)piVar23 + 10) = *(undefined1 *)((long)piVar25 + 10), + uVar22 != 0xb)))) && + (*(undefined1 *)((long)piVar23 + 0xb) = *(undefined1 *)((long)piVar25 + 0xb), + uVar22 != 0xc)) && (*(char *)(piVar23 + 3) = (char)piVar25[3], uVar22 != 0xd))) + ) { + *(undefined1 *)((long)piVar23 + 0xd) = *(undefined1 *)((long)piVar25 + 0xd); + if (uVar22 == 0xf) { + *(undefined1 *)((long)piVar23 + 0xe) = *(undefined1 *)((long)piVar25 + 0xe); + } + else { + uVar17 = 0xe; + } + } + } + } + if (0xe < (uVar36 - 1) - uVar22) { + uVar28 = 0; + puVar18 = (undefined8 *)((long)piVar23 + (ulong)uVar22); + puVar30 = (undefined8 *)((long)piVar25 + (ulong)uVar22); + do { + uVar44 = *puVar30; + uVar28 = uVar28 + 1; + puVar18[1] = puVar30[1]; + *puVar18 = uVar44; + puVar18 = puVar18 + 2; + puVar30 = puVar30 + 2; + } while (uVar28 < uVar32); + uVar17 = uVar17 + iVar15; + if (iVar15 == uVar36 - uVar22) goto LAB_00291c38; + } + iVar26 = uVar17 + 1; + *(undefined1 *)((long)local_868 + (long)(int)(uVar17 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)(int)uVar17); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 2; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + iVar26 = uVar17 + 3; + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 4; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + iVar26 = uVar17 + 5; + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 6; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + iVar26 = uVar17 + 7; + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 8; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + iVar26 = uVar17 + 9; + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 10; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + iVar26 = uVar17 + 0xb; + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 0xc; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + iVar26 = uVar17 + 0xd; + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + if (iVar26 < (int)uVar36) { + iVar41 = uVar17 + 0xe; + *(undefined1 *)((long)local_868 + (long)(iVar26 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar26); + if (iVar41 < (int)uVar36) { + *(undefined1 *)((long)local_868 + (long)(iVar41 + iVar40)) = + *(undefined1 *)((long)piVar25 + (long)iVar41); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00291c38: + iVar14 = iVar14 + 1; + piVar23 = (int *)((long)piVar23 + (long)(int)uVar36); + iVar40 = iVar40 + uVar36; + } while (iVar14 != iVar33); + } + lVar38 = (long)local_970 * uVar12; + pvVar20 = (void *)((long)pvVar11 + __n + lVar38); + if (0 < iVar13) { + iVar33 = 0; + do { + if (pvVar20 != pvVar35) { + memcpy(pvVar20,pvVar35,(long)iVar31); + } + iVar33 = iVar33 + 1; + pvVar35 = (void *)((long)pvVar35 + uVar10); + memcpy((void *)((long)pvVar20 - __n),piVar37,__n); + __dest = (void *)((long)pvVar20 + (long)iVar31); + pvVar20 = (void *)((long)pvVar20 + uVar12); + memcpy(__dest,piVar37,(long)iVar29); + } while (iVar33 != iVar13); + } + if (0 < local_970) { + iVar29 = 0; + pvVar35 = (void *)((long)pvVar11 + (long)-local_970 * uVar12 + lVar38); + do { + iVar29 = iVar29 + 1; + memcpy(pvVar35,piVar37,(long)iVar49); + pvVar35 = (void *)((long)pvVar35 + uVar12); + } while (iVar29 != local_970); + } + if (0 < iVar16) { + iVar29 = 0; + pvVar35 = (void *)((long)pvVar11 + (long)iVar13 * uVar12 + lVar38); + do { + iVar29 = iVar29 + 1; + memcpy(pvVar35,piVar37,(long)iVar49); + pvVar35 = (void *)((long)pvVar35 + uVar12); + } while (iVar29 != iVar16); + } + if ((local_868 != aiStack_858) && (local_868 != (int *)0x0)) { + operator_delete__(local_868); + } + } + else { + iVar13 = local_8e8[1]; + iVar29 = *local_8e8; + iVar33 = *local_888; + iVar16 = local_888[1]; + if (local_924 < 1) { + uVar19 = 0; + uVar34 = 0; + } + else { + uVar34 = local_8e0[(long)local_924 + -1] & 0xffffffff; + uVar19 = (ulong)(int)local_8e0[(long)local_924 + -1]; + } + if ((((ulong)local_8b8 | (ulong)local_918 | local_878 | local_8d8 | uVar19) & 3) == 0) { + iVar31 = (int)uVar34; + iVar49 = iVar31 + 3; + if (-1 < iVar31) { + iVar49 = iVar31; + } + bVar2 = true; + uVar34 = (ulong)(uint)(iVar49 >> 2); + local_94c = 4; + } + else { + bVar2 = false; + local_94c = 1; + } + local_450 = local_440; + iVar49 = iVar16 - iVar13; + uVar32 = (uint)uVar34; + local_448 = (Mat *)0x108; + pMVar39 = (Mat *)(long)(int)(iVar49 * uVar32); + if ((Mat *)0x108 < pMVar39) { + uVar19 = (long)pMVar39 << 2; + if ((Mat *)0x1fc0000000000000 < pMVar39) { + uVar19 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar19); + } + piVar25 = local_450; + iVar49 = iVar49 - param_5; + iVar33 = (iVar33 - iVar29) - local_970; + local_448 = pMVar39; + if (0 < param_5) { + lVar38 = 0; + iVar31 = -param_5; + iVar40 = 0; + piVar37 = local_450; + do { + iVar14 = borderInterpolate(iVar31,iVar13,uVar36); + iVar14 = uVar32 * iVar14; + if (0 < (int)uVar32) { + uVar22 = -((uint)((ulong)piVar37 >> 2) & 3) & 3; + uVar19 = uVar34; + if (uVar22 < uVar32) { + uVar19 = (ulong)uVar22; + } + if (uVar32 < 7) { + uVar19 = uVar34; + } + uVar22 = (uint)uVar19; + uVar27 = uVar19; + if (uVar22 != 0) { + *piVar37 = iVar14; + if ((((uVar22 != 1) && (piVar37[1] = iVar14 + 1, uVar22 != 2)) && + (piVar37[2] = iVar14 + 2, uVar22 != 3)) && (piVar37[3] = iVar14 + 3, uVar22 != 4)) { + piVar37[4] = iVar14 + 4; + if (uVar22 == 6) { + piVar37[5] = iVar14 + 5; + } + else { + uVar27 = 5; + } + } + if (uVar32 == uVar22) goto LAB_002910b8; + } + iVar15 = (int)uVar27; + uVar17 = ((uVar32 - uVar22) - 4 >> 2) + 1; + iVar26 = uVar17 * 4; + if (2 < (uVar32 - 1) - uVar22) { + uVar28 = 0; + iVar41 = iVar15 + (int)_DAT_00291f30; + iVar45 = iVar15 + (int)((ulong)_DAT_00291f30 >> 0x20); + iVar46 = iVar15 + (int)_UNK_00291f38; + iVar47 = iVar15 + (int)((ulong)_UNK_00291f38 >> 0x20); + piVar23 = piVar25 + lVar38 + uVar19; + do { + uVar28 = uVar28 + 1; + *(ulong *)(piVar23 + 2) = CONCAT44(iVar14 + iVar47,iVar14 + iVar46); + *(ulong *)piVar23 = CONCAT44(iVar14 + iVar45,iVar14 + iVar41); + iVar41 = iVar41 + 4; + iVar45 = iVar45 + 4; + iVar46 = iVar46 + 4; + iVar47 = iVar47 + 4; + piVar23 = piVar23 + 4; + } while (uVar28 < uVar17); + iVar15 = iVar15 + iVar26; + if (iVar26 == uVar32 - uVar22) goto LAB_002910b8; + } + iVar26 = iVar15 + 1; + piVar25[iVar15 + iVar40] = iVar14 + iVar15; + if (iVar26 < (int)uVar32) { + iVar15 = iVar15 + 2; + piVar25[iVar26 + iVar40] = iVar14 + iVar26; + if (iVar15 < (int)uVar32) { + piVar25[iVar15 + iVar40] = iVar14 + iVar15; + } + } + } +LAB_002910b8: + iVar31 = iVar31 + 1; + piVar37 = piVar37 + (int)uVar32; + iVar40 = iVar40 + uVar32; + lVar38 = lVar38 + (int)uVar32; + } while (iVar31 != 0); + } + iVar31 = param_5 * uVar32; + if (0 < iVar49) { + lVar38 = (long)iVar31; + piVar37 = piVar25 + lVar38; + iVar40 = iVar13; + iVar14 = iVar31; + do { + iVar15 = borderInterpolate(iVar40,iVar13,uVar36); + iVar15 = uVar32 * iVar15; + if (0 < (int)uVar32) { + uVar22 = -((uint)((ulong)piVar37 >> 2) & 3) & 3; + uVar19 = (ulong)uVar22; + if (uVar32 < uVar22) { + uVar19 = uVar34; + } + if (uVar32 < 7) { + uVar19 = uVar34; + } + uVar22 = (uint)uVar19; + uVar27 = uVar19; + if (uVar22 != 0) { + *piVar37 = iVar15; + if (((uVar22 != 1) && (piVar37[1] = iVar15 + 1, uVar22 != 2)) && + ((piVar37[2] = iVar15 + 2, uVar22 != 3 && (piVar37[3] = iVar15 + 3, uVar22 != 4)))) { + piVar37[4] = iVar15 + 4; + if (uVar22 == 6) { + piVar37[5] = iVar15 + 5; + } + else { + uVar27 = 5; + } + } + if (uVar22 == uVar32) goto LAB_00291274; + } + iVar26 = (int)uVar27; + uVar17 = ((uVar32 - uVar22) - 4 >> 2) + 1; + iVar41 = uVar17 * 4; + if (2 < (uVar32 - 1) - uVar22) { + uVar28 = 0; + iVar45 = iVar26 + (int)_DAT_00291f30; + iVar46 = iVar26 + (int)((ulong)_DAT_00291f30 >> 0x20); + iVar47 = iVar26 + (int)_UNK_00291f38; + iVar48 = iVar26 + (int)((ulong)_UNK_00291f38 >> 0x20); + piVar23 = piVar25 + lVar38 + uVar19; + do { + uVar28 = uVar28 + 1; + *(ulong *)(piVar23 + 2) = CONCAT44(iVar15 + iVar48,iVar15 + iVar47); + *(ulong *)piVar23 = CONCAT44(iVar15 + iVar46,iVar15 + iVar45); + iVar45 = iVar45 + 4; + iVar46 = iVar46 + 4; + iVar47 = iVar47 + 4; + iVar48 = iVar48 + 4; + piVar23 = piVar23 + 4; + } while (uVar28 < uVar17); + iVar26 = iVar26 + iVar41; + if (iVar41 == uVar32 - uVar22) goto LAB_00291274; + } + iVar41 = iVar26 + 1; + piVar25[iVar26 + iVar14] = iVar15 + iVar26; + if (iVar41 < (int)uVar32) { + iVar26 = iVar26 + 2; + piVar25[iVar41 + iVar14] = iVar15 + iVar41; + if (iVar26 < (int)uVar32) { + piVar25[iVar14 + iVar26] = iVar15 + iVar26; + } + } + } +LAB_00291274: + iVar40 = iVar40 + 1; + piVar37 = piVar37 + (int)uVar32; + iVar14 = iVar14 + uVar32; + lVar38 = lVar38 + (int)uVar32; + } while (iVar40 != iVar49 + iVar13); + } + lVar38 = (long)local_970 * uVar12; + iVar13 = iVar13 * uVar32; + iVar49 = uVar32 * iVar49; + pvVar20 = (void *)((long)pvVar11 + lVar38 + iVar31 * local_94c); + if (0 < iVar29) { + iVar40 = 0; + lVar42 = NEON_shl((long)iVar13,2); + do { + while( true ) { + if (pvVar20 != pvVar35) { + pvVar20 = memcpy(pvVar20,pvVar35,(long)(iVar13 * local_94c)); + } + if (bVar2) break; + lVar24 = 0; + if (0 < iVar31) { + do { + *(undefined1 *)((long)pvVar20 + lVar24 + -iVar31) = + *(undefined1 *)((long)pvVar35 + (long)piVar25[lVar24]); + lVar24 = lVar24 + 1; + } while ((int)lVar24 < iVar31); + } + lVar24 = 0; + if (0 < iVar49) { + do { + *(undefined1 *)((long)pvVar20 + lVar24 + iVar13) = + *(undefined1 *)((long)pvVar35 + (long)piVar25[iVar31 + lVar24]); + lVar24 = lVar24 + 1; + } while ((int)lVar24 < iVar49); + } +LAB_002913e0: + iVar40 = iVar40 + 1; + pvVar20 = (void *)((long)pvVar20 + uVar12); + pvVar35 = (void *)((long)pvVar35 + uVar10); + if (iVar40 == iVar29) goto LAB_002913fc; + } + lVar24 = 0; + if (0 < iVar31) { + do { + *(undefined4 *)((long)pvVar20 + lVar24 * 4 + (long)-iVar31 * 4) = + *(undefined4 *)((long)pvVar35 + (long)piVar25[lVar24] * 4); + lVar24 = lVar24 + 1; + } while ((int)lVar24 < iVar31); + } + lVar24 = 0; + if (iVar49 < 1) goto LAB_002913e0; + do { + *(undefined4 *)((long)pvVar20 + lVar24 * 4 + lVar42) = + *(undefined4 *)((long)pvVar35 + (long)piVar25[iVar31 + lVar24] * 4); + lVar24 = lVar24 + 1; + } while ((int)lVar24 < iVar49); + iVar40 = iVar40 + 1; + pvVar20 = (void *)((long)pvVar20 + uVar12); + pvVar35 = (void *)((long)pvVar35 + uVar10); + } while (iVar40 != iVar29); + } +LAB_002913fc: + local_94c = iVar16 * uVar32 * local_94c; + if (0 < local_970) { + local_970 = -local_970; + pvVar35 = (void *)((long)pvVar11 + (long)local_970 * uVar12 + lVar38); + do { + iVar13 = borderInterpolate(local_970,iVar29,uVar36); + memcpy(pvVar35,(void *)((long)pvVar11 + (long)iVar13 * uVar12 + lVar38),(long)local_94c); + local_970 = local_970 + 1; + pvVar35 = (void *)((long)pvVar35 + uVar12); + } while (local_970 != 0); + } + if (0 < iVar33) { + pvVar35 = (void *)((long)pvVar11 + (long)iVar29 * uVar12 + lVar38); + iVar13 = iVar29; + do { + iVar16 = borderInterpolate(iVar13,iVar29,uVar36); + iVar13 = iVar13 + 1; + memcpy(pvVar35,(void *)((long)pvVar11 + (long)iVar16 * uVar12 + lVar38),(long)local_94c); + pvVar35 = (void *)((long)pvVar35 + uVar12); + } while (iVar13 != iVar29 + iVar33); + } + } + if ((local_450 != local_440) && (local_450 != (int *)0x0)) { + operator_delete__(local_450); + } + if (local_890 != 0) { + piVar25 = (int *)(local_890 + 0x14); + do { + iVar13 = *piVar25; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_8c8); + } + } + local_890 = 0; + local_8b8 = (void *)0x0; + local_8a0 = 0; + local_8a8 = 0; + local_8b0 = 0; + if (0 < local_8c4) { + iVar13 = 0; + piVar25 = local_888; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_8c4); + } + if (local_880 != &local_878) { + fastFree(local_880); + } + if (local_8f0 != 0) { + piVar25 = (int *)(local_8f0 + 0x14); + do { + iVar13 = *piVar25; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_928); + } + } + if (0 < local_924) { + iVar13 = 0; + piVar25 = local_8e8; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_924); + } +LAB_00290bfc: + local_8f0 = 0; + local_900 = 0; + local_908 = 0; + local_910 = 0; + local_918 = (void *)0x0; + if (local_8e0 != &local_8d8) { + fastFree(local_8e0); + } + return; +} + + +================================================================== + +### FUNC 00291f40 (2120 bytes) name=cvCopy + +void cvCopy(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + undefined4 uVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + int iVar14; + char *pcVar15; + int *piVar16; + void *pvVar17; + Mat *__src; + ulong uVar18; + int *piVar19; + undefined8 *puVar20; + ulong uVar21; + long lVar22; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + undefined8 local_c0; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if ((((param_1 != (cv *)0x0) && (param_2 != (cv *)0x0)) && + ((*(uint *)param_1 & 0xffff0000) == 0x42440000)) && + ((*(uint *)param_2 & 0xffff0000) == 0x42440000)) { + if (param_3 != (cv *)0x0) { + local_60 = 0; + local_58 = (Mat *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_60,0xc); + uVar1 = s_maskarr____0_00464028._8_4_; + *(undefined8 *)pcVar15 = s_maskarr____0_00464028._0_8_; + *(undefined4 *)(pcVar15 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_60,"void cvCopy(const void*, void*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x52f); + cv::String::deallocate((String *)&local_60); + } + *(undefined4 *)(param_2 + 4) = *(undefined4 *)(param_1 + 4); + memcpy(param_2 + 0x34,param_1 + 0x34,(long)*(int *)(param_1 + 4) << 2); + uVar1 = *(undefined4 *)(param_1 + 0x30); + *(undefined4 *)(param_2 + 0x2c) = *(undefined4 *)(param_1 + 0x2c); + *(undefined4 *)(param_2 + 0x30) = uVar1; + cvClearSet(*(undefined8 *)(param_2 + 0x18)); + uVar2 = *(uint *)(param_2 + 0x28); + pvVar17 = *(void **)(param_2 + 0x20); + if ((int)(uVar2 * 3) <= *(int *)(*(long *)(param_1 + 0x18) + 0x68)) { + cv::cvFree_(pvVar17); + uVar2 = *(uint *)(param_1 + 0x28); + *(uint *)(param_2 + 0x28) = uVar2; + *(undefined8 *)(param_2 + 0x20) = 0; + pvVar17 = (void *)cv::cvAlloc(-(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3 + ); + uVar2 = *(uint *)(param_2 + 0x28); + *(void **)(param_2 + 0x20) = pvVar17; + } + memset(pvVar17,0,-(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3); + __src = (Mat *)cvInitSparseMatIterator(param_1,(String *)&local_60); + if (__src == (Mat *)0x0) { + return; + } + while( true ) { + do { + lVar22 = *(long *)(param_2 + 0x18); + local_c0 = *(uint **)(lVar22 + 0x60); + if (local_c0 == (uint *)0x0) { + cvSetAdd(lVar22,0,&local_c0); + lVar22 = *(long *)(param_2 + 0x18); + } + else { + uVar2 = *local_c0; + iVar13 = *(int *)(lVar22 + 0x68); + *(undefined8 *)(lVar22 + 0x60) = *(undefined8 *)(local_c0 + 2); + *local_c0 = uVar2 & 0x3ffffff; + *(int *)(lVar22 + 0x68) = iVar13 + 1; + } + uVar2 = *(int *)(param_2 + 0x28) - 1U & *(uint *)__src; + pvVar17 = memcpy(local_c0,__src,(long)*(int *)(lVar22 + 0x2c)); + lVar22 = *(long *)(param_2 + 0x20); + uVar18 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(undefined8 *)((long)pvVar17 + 8) = *(undefined8 *)(lVar22 + uVar18); + *(void **)(lVar22 + uVar18) = pvVar17; + __src = *(Mat **)(local_58 + 8); + local_58 = __src; + } while (__src != (Mat *)0x0); + uVar2 = (int)local_50 + 1; + uVar18 = (ulong)uVar2; + if ((int)*(uint *)(local_60 + 0x28) <= (int)uVar2) break; + uVar21 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | uVar18 << 3; + puVar20 = (undefined8 *)(*(long *)(local_60 + 0x20) + uVar21); + __src = *(Mat **)(*(long *)(local_60 + 0x20) + uVar21); + while (__src == (Mat *)0x0) { + uVar2 = (int)uVar18 + 1; + uVar18 = (ulong)uVar2; + if (uVar2 == *(uint *)(local_60 + 0x28)) { + return; + } + puVar20 = puVar20 + 1; + __src = (Mat *)*puVar20; + } + local_50 = CONCAT44((int)((ulong)local_50 >> 0x20),uVar2); + local_58 = __src; + } + return; + } + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,true,0,param_6); + if (((local_120 & 7) == ((uint)local_c0 & 7)) && (iVar13 = local_e0[-1], iVar13 == local_80[-1])) + { + if (iVar13 == 2) { + if ((*local_e0 != *local_80) || (local_e0[1] != local_80[1])) goto LAB_00291fe4; + } + else if (0 < iVar13) { + if (*local_e0 == *local_80) { + piVar16 = local_e0; + piVar19 = local_80; + do { + piVar19 = piVar19 + 1; + if (piVar16 == local_e0 + (iVar13 - 1)) goto LAB_00292050; + piVar16 = piVar16 + 1; + } while (*piVar16 == *piVar19); + } + goto LAB_00291fe4; + } + } + else { +LAB_00291fe4: + local_160 = 0; + local_158 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_160,0x32); + uVar10 = s_src_depth______dst_depth______sr_00464038._40_8_; + uVar9 = s_src_depth______dst_depth______sr_00464038._32_8_; + uVar8 = s_src_depth______dst_depth______sr_00464038._24_8_; + uVar7 = s_src_depth______dst_depth______sr_00464038._16_8_; + uVar6 = s_src_depth______dst_depth______sr_00464038._8_8_; + uVar5 = s_src_depth______dst_depth______sr_00464038._0_8_; + *(undefined2 *)(pcVar15 + 0x30) = s_src_depth______dst_depth______sr_00464038._48_2_; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + *(undefined8 *)(pcVar15 + 0x20) = uVar9; + *(undefined8 *)(pcVar15 + 0x28) = uVar10; + cv::error(-0xd7,(String *)&local_160,"void cvCopy(const void*, void*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x551); + cv::String::deallocate((String *)&local_160); + } +LAB_00292050: + if (((param_1 == (cv *)0x0) || (*(int *)param_1 != 0x90)) || (*(long *)(param_1 + 0x58) == 0)) { + if (((param_2 != (cv *)0x0) && (*(int *)param_2 == 0x90)) && + (iVar13 = 0, *(long *)(param_2 + 0x58) != 0)) { +LAB_00292370: + iVar14 = cvGetImageCOI(param_2); + goto LAB_0029237c; + } + } + else { + iVar13 = cvGetImageCOI(param_1); + if (param_2 == (cv *)0x0) { + iVar14 = 0; + } + else { + iVar14 = 0; + if ((*(int *)param_2 == 0x90) && (*(long *)(param_2 + 0x58) != 0)) goto LAB_00292370; + } +LAB_0029237c: + if (iVar13 != 0 || iVar14 != 0) { + if (((iVar13 == 0) && ((local_120 >> 3 & 0x1ff) != 0)) || + ((iVar14 == 0 && (((uint)local_c0 >> 3 & 0x1ff) != 0)))) { + local_150 = 0; + local_148 = (Mat *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_150,0x48); + uVar10 = s__coi1____0____src_channels______1_00464070._40_8_; + uVar9 = s__coi1____0____src_channels______1_00464070._32_8_; + uVar8 = s__coi1____0____src_channels______1_00464070._24_8_; + uVar7 = s__coi1____0____src_channels______1_00464070._16_8_; + uVar6 = s__coi1____0____src_channels______1_00464070._8_8_; + uVar5 = s__coi1____0____src_channels______1_00464070._0_8_; + *(undefined8 *)(pcVar15 + 0x40) = s__coi1____0____src_channels______1_00464070._64_8_; + uVar12 = s__coi1____0____src_channels______1_00464070._56_8_; + uVar11 = s__coi1____0____src_channels______1_00464070._48_8_; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + *(undefined8 *)(pcVar15 + 0x20) = uVar9; + *(undefined8 *)(pcVar15 + 0x28) = uVar10; + *(undefined8 *)(pcVar15 + 0x30) = uVar11; + *(undefined8 *)(pcVar15 + 0x38) = uVar12; + cv::error(-0xd7,(String *)&local_150,"void cvCopy(const void*, void*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x55c); + cv::String::deallocate((String *)&local_150); + } + iVar13 = iVar13 + -1; + if (iVar13 < 0) { + iVar13 = 0; + } + iVar14 = iVar14 + -1; + if (iVar14 < 0) { + iVar14 = 0; + } + local_60 = CONCAT44(iVar14,iVar13); + cv::mixChannels((Mat *)&local_120,1,(Mat *)&local_c0,1,(int *)&local_60,1); + if (local_88 != 0) { + piVar16 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar16; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar4) { + *piVar16 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_c0._4_4_); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar16 = (int *)(local_e8 + 0x14); + do { + iVar13 = *piVar16; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar4) { + *piVar16 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } + goto LAB_002922a0; + } + } + if ((local_120 >> 3 & 0x1ff) + 1 != ((uint)local_c0 >> 3 & 0x1ff) + 1) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_138,0x20); + uVar7 = s_src_size____dst_size____src_chan_00463470._48_8_; + uVar6 = s_src_size____dst_size____src_chan_00463470._40_8_; + uVar5 = s_src_size____dst_size____src_chan_00463470._32_8_; + *(undefined8 *)pcVar15 = s_src_size____dst_size____src_chan_00463470._24_8_; + *(undefined8 *)(pcVar15 + 8) = uVar5; + *(undefined8 *)(pcVar15 + 0x10) = uVar6; + *(undefined8 *)(pcVar15 + 0x18) = uVar7; + cv::error(-0xd7,(String *)&local_138,"void cvCopy(const void*, void*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x563); + cv::String::deallocate((String *)&local_138); + } + if (param_3 == (cv *)0x0) { + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + local_58 = (Mat *)&local_c0; + cv::Mat::copyTo((Mat *)&local_120,(_OutputArray *)&local_60); + } + else { + local_140 = 0; + local_13c = 0; + local_150 = CONCAT44(local_150._4_4_,0x2010000); + local_148 = (Mat *)&local_c0; + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,(AutoBuffer *)0x2010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x1010000); + local_130 = (Mat *)&local_60; + cv::Mat::copyTo((Mat *)&local_120,(_OutputArray *)&local_150,(_InputArray *)&local_138); + if (local_28 != 0) { + piVar16 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar16; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar4) { + *piVar16 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + } + if (local_88 != 0) { + piVar16 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar16; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar4) { + *piVar16 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_c0._4_4_); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar16 = (int *)(local_e8 + 0x14); + do { + iVar13 = *piVar16; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar4) { + *piVar16 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } +LAB_002922a0: + local_e8 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + local_110 = 0; + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00292844 (588 bytes) name=cvSet + +void cvSet(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,cv *param_5, + cv *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined4 local_110 [2]; + undefined8 *local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8 [2]; + Mat *local_f0; + undefined4 local_e8; + undefined4 local_e4; + undefined8 uStack_e0; + undefined8 uStack_d8; + undefined8 local_d0; + undefined8 uStack_c8; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 uStack_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,in_x5); + if (param_6 == (cv *)0x0) { + uStack_60 = param_1; + uStack_58 = param_2; + local_50 = param_3; + uStack_48 = param_4; + cv::Mat::operator=(aMStack_c0,(Scalar_ *)&uStack_60); + } + else { + local_108 = &uStack_e0; + local_110[0] = 0xc1020006; + local_100 = 1; + local_fc = 4; + uStack_e0 = param_1; + uStack_d8 = param_2; + local_d0 = param_3; + uStack_c8 = param_4; + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,(AutoBuffer *)0x4); + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x1010000; + local_f0 = (Mat *)&uStack_60; + cv::Mat::setTo(aMStack_c0,(_InputArray *)local_110,(_InputArray *)local_f8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&uStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < uStack_60._4_4_) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < uStack_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00292ae0 (284 bytes) name=cvSetZero + +void cvSetZero(cv *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if ((param_1 == (cv *)0x0) || ((*(uint *)param_1 & 0xffff0000) != 0x42440000)) { + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + local_80 = 0; + local_78 = 0; + local_70 = 0; + local_68 = 0; + cv::Mat::operator=(aMStack_60,(Scalar_ *)&local_80); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + } + else { + cvClearSet(*(undefined8 *)(param_1 + 0x18)); + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + memset(*(void **)(param_1 + 0x20),0,(long)*(int *)(param_1 + 0x28) << 3); + } + } + return; +} + + +================================================================== + +### FUNC 00292c24 (1384 bytes) name=cvFlip + +/* WARNING: Removing unreachable block (ram,0x00293078) */ +/* WARNING: Removing unreachable block (ram,0x0029307c) */ +/* WARNING: Removing unreachable block (ram,0x00293084) */ +/* WARNING: Removing unreachable block (ram,0x0029308c) */ +/* WARNING: Removing unreachable block (ram,0x00293174) */ +/* WARNING: Removing unreachable block (ram,0x002930b4) */ +/* WARNING: Removing unreachable block (ram,0x002930bc) */ +/* WARNING: Removing unreachable block (ram,0x002930d0) */ + +void cvFlip(cv *param_1,cv *param_2,int param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + char *pcVar10; + int *piVar11; + int iVar12; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + int local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + local_bc = 0; + local_80 = &local_b8; + local_78 = &local_70; + local_b8 = 0; + local_c0 = 0x42ff0000; + local_b4 = 0; + local_b0 = 0; + uStack_a8 = 0; + local_a0 = 0; + uStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + local_68 = 0; + local_70 = 0; + if (param_2 == (cv *)0x0) { + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + local_c0 = local_120; + if (local_11c < 3) { + local_b4 = local_114; + local_b8 = local_118; + local_70 = *local_d8; + local_bc = local_11c; + local_68 = local_d8[1]; + } + else { + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + } + uStack_98 = uStack_f8; + local_a0 = local_100; + lStack_88 = lStack_e8; + local_90 = local_f0; + uStack_a8 = uStack_108; + local_b0 = local_110; + goto LAB_00292e14; + } + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if (lStack_28 != 0) { + piVar11 = (int *)(lStack_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_88 != 0) { + piVar11 = (int *)(lStack_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + puVar9 = local_18; + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (local_bc < 1) { +LAB_00292d50: + local_c0 = local_60; + if (2 < local_5c) goto LAB_00292d5c; + local_b8 = (int)local_58; + local_b4 = local_58._4_4_; + local_bc = local_5c; + *local_78 = *local_18; + local_78[1] = puVar9[1]; + } + else { + iVar12 = 0; + piVar11 = local_80; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_bc); + if (local_bc < 3) goto LAB_00292d50; +LAB_00292d5c: + local_c0 = local_60; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_60); + } + uStack_98 = uStack_38; + local_a0 = local_40; + lStack_88 = lStack_28; + local_90 = local_30; + uStack_a8 = uStack_48; + local_b0 = local_50; + if (lStack_28 != 0) { + piVar11 = (int *)(lStack_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } +LAB_00292e14: + if ((((local_120 & 0xfff) != (local_c0 & 0xfff)) || (local_e0[1] != local_80[1])) || + (*local_e0 != *local_80)) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_138,0x34); + uVar8 = s_src_type______dst_type______src__004640c0._40_8_; + uVar7 = s_src_type______dst_type______src__004640c0._32_8_; + uVar6 = s_src_type______dst_type______src__004640c0._24_8_; + uVar5 = s_src_type______dst_type______src__004640c0._16_8_; + uVar4 = s_src_type______dst_type______src__004640c0._8_8_; + uVar3 = s_src_type______dst_type______src__004640c0._0_8_; + *(undefined4 *)(pcVar10 + 0x30) = s_src_type______dst_type______src__004640c0._48_4_; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_138,"void cvFlip(const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x58f); + cv::String::deallocate((String *)&local_138); + } + local_138 = CONCAT44(local_138._4_4_,0x1010000); + local_128 = 0; + local_124 = 0; + local_50 = 0; + local_60 = 0x2010000; + local_130 = (Mat *)&local_120; + local_58 = (Mat *)&local_c0; + cv::flip((_InputArray *)&local_138,(_OutputArray *)&local_60,param_3); + if (lStack_88 != 0) { + piVar11 = (int *)(lStack_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + piVar11 = local_80; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00293214 (612 bytes) name=cvRepeat + +void cvRepeat(cv *param_1,cv *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + char *pcVar13; + int iVar14; + int iVar15; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) { + iVar14 = 0; + if (local_b8 != 0) { + iVar14 = local_58 / local_b8; + } + if (local_58 == iVar14 * local_b8) { + iVar15 = 0; + if (local_b4 != 0) { + iVar15 = local_54 / local_b4; + } + if (local_54 == iVar15 * local_b4) goto LAB_00293304; + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar13 = (char *)cv::String::allocate((String *)&local_d8,0x50); + uVar12 = s_src_type______dst_type______dst__004640f8._72_8_; + uVar11 = s_src_type______dst_type______dst__004640f8._64_8_; + uVar10 = s_src_type______dst_type______dst__004640f8._56_8_; + uVar9 = s_src_type______dst_type______dst__004640f8._48_8_; + uVar8 = s_src_type______dst_type______dst__004640f8._40_8_; + uVar7 = s_src_type______dst_type______dst__004640f8._32_8_; + uVar6 = s_src_type______dst_type______dst__004640f8._24_8_; + uVar5 = s_src_type______dst_type______dst__004640f8._16_8_; + uVar4 = s_src_type______dst_type______dst__004640f8._8_8_; + *(undefined8 *)pcVar13 = s_src_type______dst_type______dst__004640f8._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + *(undefined8 *)(pcVar13 + 0x20) = uVar7; + *(undefined8 *)(pcVar13 + 0x28) = uVar8; + *(undefined8 *)(pcVar13 + 0x30) = uVar9; + *(undefined8 *)(pcVar13 + 0x38) = uVar10; + *(undefined8 *)(pcVar13 + 0x40) = uVar11; + *(undefined8 *)(pcVar13 + 0x48) = uVar12; + cv::error(-0xd7,(String *)&local_d8,"void cvRepeat(const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/copy.cpp",0x598); + cv::String::deallocate((String *)&local_d8); + iVar14 = 0; + if (local_b8 != 0) { + iVar14 = local_58 / local_b8; + } + iVar15 = 0; + if (local_b4 != 0) { + iVar15 = local_54 / local_b4; + } +LAB_00293304: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::repeat((_InputArray *)local_f0,iVar14,iVar15,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar14 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar14 = 0; + do { + *local_20 = 0; + iVar14 = iVar14 + 1; + local_20 = local_20 + 1; + } while (iVar14 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar14 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar14 = 0; + do { + *local_80 = 0; + iVar14 = iVar14 + 1; + local_80 = local_80 + 1; + } while (iVar14 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002934dc (168 bytes) name=cvCreateMemStorage + +undefined8 * cvCreateMemStorage(int param_1) + +{ + undefined8 *puVar1; + uint uVar2; + undefined8 *local_10; + undefined8 *local_8; + + puVar1 = (undefined8 *)cv::cvAlloc(0x28); + if (puVar1 == (undefined8 *)0x0) { + local_10 = puVar1; + local_8 = puVar1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void icvInitMemStorage(CvMemStorage*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x5c); + cv::String::deallocate((String *)&local_10); + } + if (param_1 < 1) { + uVar2 = 0xff80; + } + else { + uVar2 = param_1 + 7U & 0xfffffff8; + } + *puVar1 = 0; + puVar1[1] = 0; + puVar1[4] = 0; + puVar1[2] = 0; + puVar1[3] = 0; + *(undefined4 *)puVar1 = 0x42890000; + *(uint *)(puVar1 + 4) = uVar2; + return puVar1; +} + + +================================================================== + +### FUNC 00293598 (140 bytes) name=cvCreateChildMemStorage + +void cvCreateChildMemStorage(long param_1) + +{ + long lVar1; + long local_10; + long local_8; + + if (param_1 != 0) { + lVar1 = cvCreateMemStorage(*(undefined4 *)(param_1 + 0x20)); + *(long *)(lVar1 + 0x18) = param_1; + return; + } + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvMemStorage* cvCreateChildMemStorage(CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x79); + cv::String::deallocate((String *)&local_10); + lVar1 = cvCreateMemStorage(uRam0000000000000020); + *(undefined8 *)(lVar1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 00293638 (268 bytes) name=cvReleaseMemStorage + +void cvReleaseMemStorage(undefined8 *param_1) + +{ + int iVar1; + undefined8 *puVar2; + long lVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + void *pvVar7; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvReleaseMemStorage(CvMemStorage**)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb7); + cv::String::deallocate((String *)&local_10); + } + pvVar7 = (void *)*param_1; + *param_1 = 0; + if (pvVar7 != (void *)0x0) { + lVar3 = *(long *)((long)pvVar7 + 0x18); + if (lVar3 == 0) { + puVar5 = (undefined8 *)0x0; + } + else { + puVar5 = *(undefined8 **)(lVar3 + 0x10); + } + puVar2 = *(undefined8 **)((long)pvVar7 + 8); + if (puVar2 != (undefined8 *)0x0) { + puVar6 = (undefined8 *)puVar2[1]; + if (lVar3 == 0) goto LAB_002936a8; + do { + if (puVar5 == (undefined8 *)0x0) { + *(undefined8 **)(lVar3 + 0x10) = puVar2; + *(undefined8 **)(lVar3 + 8) = puVar2; + iVar1 = *(int *)((long)pvVar7 + 0x20); + puVar2[1] = 0; + *puVar2 = 0; + *(int *)((long)pvVar7 + 0x24) = iVar1 + -0x10; + puVar5 = puVar2; + puVar2 = puVar6; + } + else { + puVar4 = (undefined8 *)puVar5[1]; + puVar2[1] = puVar4; + *puVar2 = puVar5; + if (puVar4 != (undefined8 *)0x0) { + *puVar4 = puVar2; + } + puVar5[1] = puVar2; + puVar5 = puVar2; + puVar2 = puVar6; + } + while( true ) { + if (puVar2 == (undefined8 *)0x0) goto LAB_002936b0; + lVar3 = *(long *)((long)pvVar7 + 0x18); + puVar6 = (undefined8 *)puVar2[1]; + if (lVar3 != 0) break; +LAB_002936a8: + cv::cvFree_(puVar2); + puVar2 = puVar6; + } + } while( true ); + } +LAB_002936b0: + *(undefined8 *)((long)pvVar7 + 8) = 0; + *(undefined8 *)((long)pvVar7 + 0x10) = 0; + *(undefined4 *)((long)pvVar7 + 0x24) = 0; + cv::cvFree_(pvVar7); + } + return; +} + + +================================================================== + +### FUNC 00293758 (292 bytes) name=cvClearMemStorage + +void cvClearMemStorage(long param_1) + +{ + int iVar1; + undefined8 *puVar2; + long lVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvClearMemStorage(CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",200); + cv::String::deallocate((String *)&local_10); + lVar3 = lRam0000000000000018; + } + else { + lVar3 = *(long *)(param_1 + 0x18); + } + if (lVar3 == 0) { + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 8); + iVar1 = 0; + if (*(long *)(param_1 + 8) != 0) { + iVar1 = *(int *)(param_1 + 0x20) + -0x10; + } + *(int *)(param_1 + 0x24) = iVar1; + return; + } + puVar2 = *(undefined8 **)(param_1 + 8); + puVar5 = *(undefined8 **)(lVar3 + 0x10); + if (puVar2 != (undefined8 *)0x0) { + puVar6 = (undefined8 *)puVar2[1]; + if (lVar3 == 0) goto LAB_002937bc; + do { + if (puVar5 == (undefined8 *)0x0) { + *(undefined8 **)(lVar3 + 0x10) = puVar2; + *(undefined8 **)(lVar3 + 8) = puVar2; + iVar1 = *(int *)(param_1 + 0x20); + puVar2[1] = 0; + *puVar2 = 0; + *(int *)(param_1 + 0x24) = iVar1 + -0x10; + puVar5 = puVar2; + puVar2 = puVar6; + } + else { + puVar4 = (undefined8 *)puVar5[1]; + puVar2[1] = puVar4; + *puVar2 = puVar5; + if (puVar4 != (undefined8 *)0x0) { + *puVar4 = puVar2; + } + puVar5[1] = puVar2; + puVar5 = puVar2; + puVar2 = puVar6; + } + while( true ) { + if (puVar2 == (undefined8 *)0x0) goto LAB_002937c8; + lVar3 = *(long *)(param_1 + 0x18); + puVar6 = (undefined8 *)puVar2[1]; + if (lVar3 != 0) break; +LAB_002937bc: + cv::cvFree_(puVar2); + puVar2 = puVar6; + } + } while( true ); + } +LAB_002937c8: + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + return; +} + + +================================================================== + +### FUNC 00293890 (156 bytes) name=cvSaveMemStoragePos + +void cvSaveMemStoragePos(long param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 != 0) && (param_2 != (undefined8 *)0x0)) { + uVar1 = *(undefined8 *)(param_1 + 0x10); + *(undefined4 *)(param_2 + 1) = *(undefined4 *)(param_1 + 0x24); + *param_2 = uVar1; + return; + } + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "void cvSaveMemStoragePos(const CvMemStorage*, CvMemStoragePos*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x114); + cv::String::deallocate((String *)&local_10); + uVar1 = *(undefined8 *)(param_1 + 0x10); + *(undefined4 *)(param_2 + 1) = *(undefined4 *)(param_1 + 0x24); + *param_2 = uVar1; + return; +} + + +================================================================== + +### FUNC 00293940 (280 bytes) name=cvRestoreMemStoragePos + +void cvRestoreMemStoragePos(long param_1,long *param_2) + +{ + long lVar1; + int iVar2; + long lVar3; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == (long *)0x0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "void cvRestoreMemStoragePos(CvMemStorage*, CvMemStoragePos*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x120); + cv::String::deallocate((String *)&local_10); + iVar2 = (int)param_2[1]; + if (*(int *)(param_1 + 0x20) < iVar2) goto LAB_002939dc; + } + else { + iVar2 = (int)param_2[1]; + if (*(int *)(param_1 + 0x20) < iVar2) { +LAB_002939dc: + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10, + "void cvRestoreMemStoragePos(CvMemStorage*, CvMemStoragePos*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x122); + cv::String::deallocate((String *)&local_10); + lVar1 = param_2[1]; + lVar3 = *param_2; + *(long *)(param_1 + 0x10) = lVar3; + *(int *)(param_1 + 0x24) = (int)lVar1; + goto joined_r0x00293a2c; + } + } + lVar3 = *param_2; + *(long *)(param_1 + 0x10) = lVar3; + *(int *)(param_1 + 0x24) = iVar2; +joined_r0x00293a2c: + if (lVar3 != 0) { + return; + } + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 8); + iVar2 = 0; + if (*(long *)(param_1 + 8) != 0) { + iVar2 = *(int *)(param_1 + 0x20) + -0x10; + } + *(int *)(param_1 + 0x24) = iVar2; + return; +} + + +================================================================== + +### FUNC 00293a80 (480 bytes) name=FUN_00293a80 + +void FUN_00293a80(long param_1) + +{ + long *plVar1; + long *plVar2; + long lVar3; + long lVar4; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void icvGoNextMemBlock(CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xda); + cv::String::deallocate((String *)&local_10); + } + if ((*(long *)(param_1 + 0x10) == 0) || + (plVar1 = *(long **)(*(long *)(param_1 + 0x10) + 8), plVar1 == (long *)0x0)) { + lVar3 = *(long *)(param_1 + 0x18); + if (lVar3 == 0) { + plVar1 = (long *)cv::cvAlloc((long)*(int *)(param_1 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar3,auStack_20); + if ((*(long *)(lVar3 + 0x10) == 0) || + (plVar1 = *(long **)(*(long *)(lVar3 + 0x10) + 8), plVar1 == (long *)0x0)) { + lVar4 = *(long *)(lVar3 + 0x18); + if (lVar4 == 0) { + plVar1 = (long *)cv::cvAlloc((long)*(int *)(lVar3 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar4,&local_10); + FUN_00293a80(lVar4); + plVar1 = *(long **)(lVar4 + 0x10); + cvRestoreMemStoragePos(lVar4,&local_10); + plVar2 = *(long **)(lVar4 + 0x10); + if (plVar1 == plVar2) { + *(undefined8 *)(lVar4 + 8) = 0; + *(undefined8 *)(lVar4 + 0x10) = 0; + *(undefined4 *)(lVar4 + 0x24) = 0; + } + else { + plVar2[1] = plVar1[1]; + if ((undefined8 *)plVar1[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar1[1] = plVar2; + } + } + } + lVar4 = *(long *)(lVar3 + 0x10); + *plVar1 = lVar4; + plVar1[1] = 0; + if (lVar4 != 0) { + *(long **)(lVar4 + 8) = plVar1; + goto LAB_00293afc; + } + *(long **)(lVar3 + 8) = plVar1; + *(long **)(lVar3 + 0x10) = plVar1; + } + else { +LAB_00293afc: + *(long **)(lVar3 + 0x10) = plVar1; + } + *(int *)(lVar3 + 0x24) = *(int *)(lVar3 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar3,auStack_20); + plVar2 = *(long **)(lVar3 + 0x10); + if (plVar2 == plVar1) { + *(undefined8 *)(lVar3 + 8) = 0; + *(undefined8 *)(lVar3 + 0x10) = 0; + *(undefined4 *)(lVar3 + 0x24) = 0; + } + else { + plVar2[1] = plVar1[1]; + if ((long *)plVar1[1] != (long *)0x0) { + *(long *)plVar1[1] = (long)plVar2; + } + } + } + lVar3 = *(long *)(param_1 + 0x10); + *plVar1 = lVar3; + plVar1[1] = 0; + if (lVar3 == 0) { + *(long **)(param_1 + 8) = plVar1; + *(long **)(param_1 + 0x10) = plVar1; + goto LAB_00293ab0; + } + *(long **)(lVar3 + 8) = plVar1; + } + *(long **)(param_1 + 0x10) = plVar1; +LAB_00293ab0: + *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x20) + -0x10; + return; +} + + +================================================================== + +### FUNC 00293c74 (1428 bytes) name=cvMemStorageAlloc + +long cvMemStorageAlloc(long param_1,ulong param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + char cVar5; + ulong uVar6; + char *pcVar7; + long *plVar8; + long *plVar9; + int iVar10; + long lVar11; + int iVar12; + long lVar13; + long lVar14; + long lVar15; + long lVar16; + undefined1 auStack_50 [16]; + undefined1 auStack_40 [16]; + undefined1 auStack_30 [16]; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar2 = s_NULL_storage_pointer_0043dfe8._8_8_; + uVar1 = s_NULL_storage_pointer_0043dfe8._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_NULL_storage_pointer_0043dfe8._16_4_; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10,"void* cvMemStorageAlloc(CvMemStorage*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x147); + cv::String::deallocate((String *)&local_10); + } + if (0x7fffffff < param_2) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x23); + cVar5 = s_Too_large_memory_block_is_reques_00464238[0x22]; + uVar4 = s_Too_large_memory_block_is_reques_00464238._24_8_; + uVar3 = s_Too_large_memory_block_is_reques_00464238._16_8_; + uVar2 = s_Too_large_memory_block_is_reques_00464238._8_8_; + uVar1 = s_Too_large_memory_block_is_reques_00464238._0_8_; + *(undefined2 *)(pcVar7 + 0x20) = s_Too_large_memory_block_is_reques_00464238._32_2_; + pcVar7[0x22] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + cv::error(-0xd3,(String *)&local_10,"void* cvMemStorageAlloc(CvMemStorage*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x14a); + cv::String::deallocate((String *)&local_10); + } + iVar12 = *(int *)(param_1 + 0x24); + uVar6 = (ulong)iVar12; + if (param_2 <= uVar6) { + iVar10 = *(int *)(param_1 + 0x20); + plVar9 = *(long **)(param_1 + 0x10); + goto LAB_00293d5c; + } + if ((ulong)(long)(int)(*(int *)(param_1 + 0x20) - 0x10U & 0xfffffff8) < param_2) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar5 = s_requested_size_is_negative_or_to_00464260[0x24]; + uVar4 = s_requested_size_is_negative_or_to_00464260._24_8_; + uVar3 = s_requested_size_is_negative_or_to_00464260._16_8_; + uVar2 = s_requested_size_is_negative_or_to_00464260._8_8_; + uVar1 = s_requested_size_is_negative_or_to_00464260._0_8_; + *(undefined4 *)(pcVar7 + 0x20) = s_requested_size_is_negative_or_to_00464260._32_4_; + pcVar7[0x24] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + cv::error(-0xd3,(String *)&local_10,"void* cvMemStorageAlloc(CvMemStorage*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x152); + cv::String::deallocate((String *)&local_10); + } + if ((*(long *)(param_1 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(param_1 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar13 = *(long *)(param_1 + 0x18); + if (lVar13 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(param_1 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar13,auStack_50); + if ((*(long *)(lVar13 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar13 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar15 = *(long *)(lVar13 + 0x18); + if (lVar15 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar13 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar15,auStack_40); + if ((*(long *)(lVar15 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar15 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar16 = *(long *)(lVar15 + 0x18); + if (lVar16 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar15 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar16,auStack_30); + if ((*(long *)(lVar16 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar16 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar11 = *(long *)(lVar16 + 0x18); + if (lVar11 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar16 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar11,auStack_20); + if ((*(long *)(lVar11 + 0x10) == 0) || + (plVar8 = *(long **)(*(long *)(lVar11 + 0x10) + 8), plVar8 == (long *)0x0)) { + lVar14 = *(long *)(lVar11 + 0x18); + if (lVar14 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar11 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar14,&local_10); + FUN_00293a80(lVar14); + plVar9 = *(long **)(lVar14 + 0x10); + cvRestoreMemStoragePos(lVar14,&local_10); + plVar8 = *(long **)(lVar14 + 0x10); + if (plVar9 == plVar8) { + *(undefined8 *)(lVar14 + 8) = 0; + *(undefined8 *)(lVar14 + 0x10) = 0; + *(undefined4 *)(lVar14 + 0x24) = 0; + } + else { + plVar8[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar8; + } + } + } + plVar8 = *(long **)(lVar11 + 0x10); + *plVar9 = (long)plVar8; + plVar9[1] = 0; + if (plVar8 == (long *)0x0) { + *(long **)(lVar11 + 8) = plVar9; + *(long **)(lVar11 + 0x10) = plVar9; + } + else { + plVar8[1] = (long)plVar9; + plVar9 = plVar8; + } + plVar8 = (long *)plVar9[1]; + if (plVar8 != (long *)0x0) goto LAB_00294058; + } + else { +LAB_00294058: + *(long **)(lVar11 + 0x10) = plVar8; + plVar9 = plVar8; + } + *(int *)(lVar11 + 0x24) = *(int *)(lVar11 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar11,auStack_20); + plVar8 = *(long **)(lVar11 + 0x10); + if (plVar8 == plVar9) { + *(undefined8 *)(lVar11 + 8) = 0; + *(undefined8 *)(lVar11 + 0x10) = 0; + *(undefined4 *)(lVar11 + 0x24) = 0; + } + else { + plVar8[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar8; + } + } + } + lVar11 = *(long *)(lVar16 + 0x10); + *plVar9 = lVar11; + plVar9[1] = 0; + if (lVar11 != 0) { + *(long **)(lVar11 + 8) = plVar9; + goto LAB_00293fd0; + } + *(long **)(lVar16 + 8) = plVar9; + *(long **)(lVar16 + 0x10) = plVar9; + } + else { +LAB_00293fd0: + *(long **)(lVar16 + 0x10) = plVar9; + } + *(int *)(lVar16 + 0x24) = *(int *)(lVar16 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar16,auStack_30); + plVar8 = *(long **)(lVar16 + 0x10); + if (plVar8 == plVar9) { + *(undefined8 *)(lVar16 + 8) = 0; + *(undefined8 *)(lVar16 + 0x10) = 0; + *(undefined4 *)(lVar16 + 0x24) = 0; + } + else { + plVar8[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar8; + } + } + } + lVar16 = *(long *)(lVar15 + 0x10); + *plVar9 = lVar16; + plVar9[1] = 0; + if (lVar16 != 0) { + *(long **)(lVar16 + 8) = plVar9; + goto LAB_00293f1c; + } + *(long **)(lVar15 + 8) = plVar9; + *(long **)(lVar15 + 0x10) = plVar9; + } + else { +LAB_00293f1c: + *(long **)(lVar15 + 0x10) = plVar9; + } + *(int *)(lVar15 + 0x24) = *(int *)(lVar15 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar15,auStack_40); + plVar8 = *(long **)(lVar15 + 0x10); + if (plVar8 == plVar9) { + *(undefined8 *)(lVar15 + 8) = 0; + *(undefined8 *)(lVar15 + 0x10) = 0; + *(undefined4 *)(lVar15 + 0x24) = 0; + } + else { + plVar8[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar8; + } + } + } + lVar15 = *(long *)(lVar13 + 0x10); + *plVar9 = lVar15; + plVar9[1] = 0; + if (lVar15 != 0) { + *(long **)(lVar15 + 8) = plVar9; + goto LAB_00293e3c; + } + *(long **)(lVar13 + 8) = plVar9; + *(long **)(lVar13 + 0x10) = plVar9; + } + else { +LAB_00293e3c: + *(long **)(lVar13 + 0x10) = plVar9; + } + *(int *)(lVar13 + 0x24) = *(int *)(lVar13 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar13,auStack_50); + plVar8 = *(long **)(lVar13 + 0x10); + if (plVar8 == plVar9) { + *(undefined8 *)(lVar13 + 8) = 0; + *(undefined8 *)(lVar13 + 0x10) = 0; + *(undefined4 *)(lVar13 + 0x24) = 0; + } + else { + plVar8[1] = plVar9[1]; + if ((long *)plVar9[1] != (long *)0x0) { + *(long *)plVar9[1] = (long)plVar8; + } + } + } + lVar13 = *(long *)(param_1 + 0x10); + *plVar9 = lVar13; + plVar9[1] = 0; + if (lVar13 != 0) { + *(long **)(lVar13 + 8) = plVar9; + goto LAB_00293d4c; + } + *(long **)(param_1 + 8) = plVar9; + *(long **)(param_1 + 0x10) = plVar9; + } + else { +LAB_00293d4c: + *(long **)(param_1 + 0x10) = plVar9; + } + iVar10 = *(int *)(param_1 + 0x20); + iVar12 = iVar10 + -0x10; + uVar6 = (ulong)iVar12; +LAB_00293d5c: + *(uint *)(param_1 + 0x24) = iVar12 - (int)param_2 & 0xfffffff8; + return (long)plVar9 + ((long)iVar10 - uVar6); +} + + +================================================================== + +### FUNC 00294244 (104 bytes) name=cvMemStorageAllocString + +int cvMemStorageAllocString(undefined8 param_1,char *param_2,int param_3) + +{ + size_t sVar1; + void *pvVar2; + + if (param_3 < 0) { + sVar1 = strlen(param_2); + param_3 = (int)sVar1; + } + pvVar2 = (void *)cvMemStorageAlloc(param_1,(long)(param_3 + 1)); + pvVar2 = memcpy(pvVar2,param_2,(long)param_3); + *(undefined1 *)((long)pvVar2 + (long)param_3) = 0; + return param_3; +} + + +================================================================== + +### FUNC 002942ac (416 bytes) name=cvSetSeqBlockSize + +void cvSetSeqBlockSize(long param_1,int param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + uint uVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (*(long *)(param_1 + 0x48) == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSetSeqBlockSize(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x19e); + cv::String::deallocate((String *)&local_10); + } + if (param_2 < 0) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10,"void cvSetSeqBlockSize(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x1a0); + cv::String::deallocate((String *)&local_10); + iVar10 = *(int *)(param_1 + 0x2c); + uVar9 = *(int *)(*(long *)(param_1 + 0x48) + 0x20) - 0x30U & 0xfffffff8; + } + else { + iVar10 = *(int *)(param_1 + 0x2c); + uVar9 = *(int *)(*(long *)(param_1 + 0x48) + 0x20) - 0x30U & 0xfffffff8; + if (param_2 == 0) { + param_2 = 0; + if (iVar10 != 0) { + param_2 = 0x400 / iVar10; + } + if (param_2 < 1) { + param_2 = 1; + } + } + } + if ((int)uVar9 < param_2 * iVar10) { + param_2 = 0; + if (iVar10 != 0) { + param_2 = (int)uVar9 / iVar10; + } + if (param_2 == 0) { + local_10 = 0; + local_8 = 0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_10,0x3c); + uVar7 = DAT_004642b8; + uVar6 = DAT_004642b0; + uVar5 = DAT_004642a8; + uVar4 = DAT_004642a0; + uVar3 = DAT_00464298; + uVar2 = DAT_00464290; + uVar1 = DAT_00464288; + *(undefined4 *)(puVar8 + 7) = DAT_004642c0; + puVar8[6] = uVar7; + *puVar8 = uVar1; + puVar8[1] = uVar2; + puVar8[2] = uVar3; + puVar8[3] = uVar4; + puVar8[4] = uVar5; + puVar8[5] = uVar6; + cv::error(-0xd3,(String *)&local_10,"void cvSetSeqBlockSize(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x1b0); + cv::String::deallocate((String *)&local_10); + *(undefined4 *)(param_1 + 0x40) = 0; + return; + } + } + *(int *)(param_1 + 0x40) = param_2; + return; +} + + +================================================================== + +### FUNC 00294488 (432 bytes) name=cvCreateSeq + +uint * cvCreateSeq(uint param_1,size_t param_2,ulong param_3,long param_4) + +{ + ulong uVar1; + uint *__s; + void *__dest; + long local_10; + long local_8; + + if (param_4 == 0) { + local_10 = param_4; + local_8 = param_4; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvSeq* cvCreateSeq(int, size_t, size_t, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x178); + cv::String::deallocate((String *)&local_10); + } + if ((param_2 < 0x60) || (param_3 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10,"CvSeq* cvCreateSeq(int, size_t, size_t, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x17a); + cv::String::deallocate((String *)&local_10); + } + __s = (uint *)cvMemStorageAlloc(param_4,param_2); + memset(__s,0,param_2); + __s[1] = (uint)param_2; + *__s = param_1 & 0xffff | 0x42990000; + if ((((param_1 & 0xfff) != 7) && ((param_1 & 0xfff) != 0)) && + ((uint)param_3 != + (param_1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((param_1 & 7) << 1)) & 3))) { + local_10 = 0; + local_8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x6e); + memcpy(__dest,&DAT_004642c8,0x6e); + cv::error(-0xc9,(String *)&local_10,"CvSeq* cvCreateSeq(int, size_t, size_t, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x18a); + cv::String::deallocate((String *)&local_10); + } + __s[0xb] = (uint)param_3; + *(long *)(__s + 0x12) = param_4; + uVar1 = 0; + if (param_3 != 0) { + uVar1 = 0x400 / param_3; + } + cvSetSeqBlockSize(__s,uVar1); + return __s; +} + + +================================================================== + +### FUNC 00294674 (1028 bytes) name=FUN_00294674 + +void FUN_00294674(long param_1) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + int iVar8; + long *plVar9; + char *pcVar10; + int iVar11; + long *plVar12; + long lVar13; + int iVar14; + long lVar15; + int iVar16; + long lVar17; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x27c); + cv::String::deallocate((String *)&local_10); + } + plVar12 = *(long **)(param_1 + 0x50); + if (plVar12 != (long *)0x0) { + *(long *)(param_1 + 0x50) = plVar12[1]; + plVar9 = *(long **)(param_1 + 0x58); + goto joined_r0x002947e8; + } + iVar8 = *(int *)(param_1 + 0x40); + iVar2 = *(int *)(param_1 + 0x2c); + lVar13 = *(long *)(param_1 + 0x48); + if (iVar8 * 4 <= *(int *)(param_1 + 0x28)) { + cvSetSeqBlockSize(param_1,iVar8 << 1); + } + if (lVar13 == 0) { + local_10 = lVar13; + local_8 = lVar13; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar7 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar6 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar4 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar3 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar10[0x24] = cVar7; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar14 = *(int *)(lVar13 + 0x20); + lVar15 = *(long *)(lVar13 + 0x10); + iVar1 = *(int *)(lVar13 + 0x24); + if (((ulong)((lVar15 + ((long)iVar14 - (long)iVar1)) - *(long *)(param_1 + 0x30)) < 8) && + (*(int *)(param_1 + 0x2c) <= iVar1)) { + iVar16 = 0; + if (iVar2 != 0) { + iVar16 = iVar1 / iVar2; + } + if (iVar8 < iVar16) { + iVar16 = iVar8; + } + lVar17 = *(long *)(param_1 + 0x30) + (long)(iVar2 * iVar16); + *(long *)(param_1 + 0x30) = lVar17; + *(uint *)(lVar13 + 0x24) = ((int)lVar15 + iVar14) - (int)lVar17 & 0xfffffff8; + return; + } + iVar16 = iVar2 * iVar8 + 0x20; + if (iVar1 < iVar16) { + iVar11 = 1; + if (5 < iVar8) { + iVar11 = iVar8 / 3; + } + if (iVar1 < iVar2 * iVar11 + 0x28) { + if ((lVar15 == 0) || (plVar12 = *(long **)(lVar15 + 8), plVar12 == (long *)0x0)) { + lVar15 = *(long *)(lVar13 + 0x18); + if (lVar15 == 0) { + plVar12 = (long *)cv::cvAlloc((long)iVar14); + } + else { + cvSaveMemStoragePos(lVar15,auStack_20); + if ((*(long *)(lVar15 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar15 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar17 = *(long *)(lVar15 + 0x18); + if (lVar17 == 0) { + plVar12 = (long *)cv::cvAlloc((long)*(int *)(lVar15 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar17,&local_10); + FUN_00293a80(lVar17); + plVar12 = *(long **)(lVar17 + 0x10); + cvRestoreMemStoragePos(lVar17,&local_10); + plVar9 = *(long **)(lVar17 + 0x10); + if (plVar12 == plVar9) { + *(undefined8 *)(lVar17 + 8) = 0; + *(undefined8 *)(lVar17 + 0x10) = 0; + *(undefined4 *)(lVar17 + 0x24) = 0; + } + else { + plVar9[1] = plVar12[1]; + if ((undefined8 *)plVar12[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar12[1] = plVar9; + } + } + } + plVar9 = *(long **)(lVar15 + 0x10); + *plVar12 = (long)plVar9; + plVar12[1] = 0; + if (plVar9 == (long *)0x0) { + *(long **)(lVar15 + 8) = plVar12; + *(long **)(lVar15 + 0x10) = plVar12; + } + else { + plVar9[1] = (long)plVar12; + plVar12 = plVar9; + } + plVar9 = (long *)plVar12[1]; + if (plVar9 != (long *)0x0) goto LAB_002948d8; + } + else { +LAB_002948d8: + *(long **)(lVar15 + 0x10) = plVar9; + plVar12 = plVar9; + } + *(int *)(lVar15 + 0x24) = *(int *)(lVar15 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar15,auStack_20); + plVar9 = *(long **)(lVar15 + 0x10); + if (plVar9 == plVar12) { + *(undefined8 *)(lVar15 + 8) = 0; + *(undefined8 *)(lVar15 + 0x10) = 0; + *(undefined4 *)(lVar15 + 0x24) = 0; + } + else { + plVar9[1] = plVar12[1]; + if ((long *)plVar12[1] != (long *)0x0) { + *(long *)plVar12[1] = (long)plVar9; + } + } + } + lVar15 = *(long *)(lVar13 + 0x10); + *plVar12 = lVar15; + plVar12[1] = 0; + if (lVar15 != 0) { + *(long **)(lVar15 + 8) = plVar12; + iVar14 = *(int *)(lVar13 + 0x20); + goto LAB_002948a0; + } + *(long **)(lVar13 + 8) = plVar12; + *(long **)(lVar13 + 0x10) = plVar12; + iVar14 = *(int *)(lVar13 + 0x20); + } + else { +LAB_002948a0: + *(long **)(lVar13 + 0x10) = plVar12; + } + *(int *)(lVar13 + 0x24) = iVar14 + -0x10; + } + else { + iVar8 = *(int *)(param_1 + 0x2c); + iVar2 = 0; + if (iVar8 != 0) { + iVar2 = (iVar1 + -0x20) / iVar8; + } + iVar16 = iVar8 * iVar2 + 0x20; + } + } + plVar12 = (long *)cvMemStorageAlloc(lVar13,(long)iVar16); + plVar12[3] = (long)plVar12 + 0x27U & 0xfffffffffffffff8; + plVar9 = *(long **)(param_1 + 0x58); + *(int *)((long)plVar12 + 0x14) = iVar16 + -0x20; + plVar12[1] = 0; + *plVar12 = 0; +joined_r0x002947e8: + if (plVar9 == (long *)0x0) { + lVar13 = plVar12[3]; + iVar8 = 0; + *(long **)(param_1 + 0x58) = plVar12; + iVar2 = *(int *)((long)plVar12 + 0x14); + plVar12[1] = (long)plVar12; + *plVar12 = (long)plVar12; + *(long *)(param_1 + 0x38) = lVar13; + *(long *)(param_1 + 0x30) = lVar13 + iVar2; + } + else { + lVar15 = *plVar9; + iVar8 = 0; + *plVar12 = lVar15; + plVar12[1] = (long)plVar9; + *plVar9 = (long)plVar12; + lVar13 = plVar12[3]; + plVar9 = (long *)*plVar12; + iVar2 = *(int *)((long)plVar12 + 0x14); + *(long **)(lVar15 + 8) = plVar12; + *(long *)(param_1 + 0x38) = lVar13; + *(long *)(param_1 + 0x30) = lVar13 + iVar2; + if (plVar12 != plVar9) { + iVar8 = (int)plVar9[2] + *(int *)((long)plVar9 + 0x14); + } + } + *(int *)(plVar12 + 2) = iVar8; + *(undefined4 *)((long)plVar12 + 0x14) = 0; + return; +} + + +================================================================== + +### FUNC 00294aa0 (180 bytes) name=cvGetSeqElem + +long cvGetSeqElem(long param_1,uint param_2) + +{ + uint uVar1; + long *plVar2; + int iVar3; + uint uVar4; + + uVar4 = *(uint *)(param_1 + 0x28); + if (uVar4 <= param_2) { + if ((int)param_2 < 0) { + uVar1 = uVar4; + if ((int)(param_2 + uVar4) < (int)uVar4) { + uVar1 = 0; + } + param_2 = (param_2 + uVar4) - uVar1; + } + else { + if ((int)param_2 < (int)uVar4) { + return 0; + } + param_2 = param_2 - uVar4; + } + if (uVar4 <= param_2) { + return 0; + } + } + plVar2 = *(long **)(param_1 + 0x58); + if ((int)uVar4 < (int)(param_2 * 2)) { + do { + plVar2 = (long *)*plVar2; + uVar4 = uVar4 - *(int *)((long)plVar2 + 0x14); + } while ((int)param_2 < (int)uVar4); + param_2 = param_2 - uVar4; + } + else { + iVar3 = *(int *)((long)plVar2 + 0x14); + if (iVar3 <= (int)param_2) { + do { + plVar2 = (long *)plVar2[1]; + param_2 = param_2 - iVar3; + iVar3 = *(int *)((long)plVar2 + 0x14); + } while (iVar3 <= (int)param_2); + return plVar2[3] + (long)(int)(param_2 * *(int *)(param_1 + 0x2c)); + } + } + return plVar2[3] + (long)(int)(param_2 * *(int *)(param_1 + 0x2c)); +} + + +================================================================== + +### FUNC 00294b54 (280 bytes) name=cvSeqElemIdx + +int cvSeqElemIdx(long param_1,long param_2,long *param_3) + +{ + int iVar1; + long lVar2; + int iVar3; + ulong uVar4; + long lVar5; + undefined8 local_10; + undefined8 local_8; + + if ((param_2 == 0) || (param_1 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"int cvSeqElemIdx(const CvSeq*, const void*, CvSeqBlock**)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x1e9); + cv::String::deallocate((String *)&local_10); + } + lVar5 = *(long *)(param_1 + 0x58); + iVar1 = *(int *)(param_1 + 0x2c); + lVar2 = lVar5; + do { + uVar4 = param_2 - *(long *)(lVar2 + 0x18); + if ((uint)uVar4 < (uint)(iVar1 * *(int *)(lVar2 + 0x14))) { + if (param_3 != (long *)0x0) { + *param_3 = lVar2; + lVar5 = *(long *)(param_1 + 0x58); + uVar4 = param_2 - *(long *)(lVar2 + 0x18); + } + if ((iVar1 < 0x21) && (-1 < (char)(&DAT_00464c90)[iVar1 + -1])) { + iVar3 = (int)(uVar4 >> ((long)(char)(&DAT_00464c90)[iVar1 + -1] & 0x3fU)); + } + else { + iVar3 = 0; + if ((long)iVar1 != 0) { + iVar3 = (int)(uVar4 / (ulong)(long)iVar1); + } + } + return (*(int *)(lVar2 + 0x10) - *(int *)(lVar5 + 0x10)) + iVar3; + } + lVar2 = *(long *)(lVar2 + 8); + } while (lVar2 != lVar5); + return -1; +} + + +================================================================== + +### FUNC 00294c80 (76 bytes) name=cvSliceLength + +int cvSliceLength(undefined8 param_1,long param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + + iVar2 = *(int *)(param_2 + 0x28); + iVar3 = (int)param_1; + iVar5 = (int)((ulong)param_1 >> 0x20); + iVar4 = 0; + if (iVar3 != iVar5) { + iVar1 = iVar2 + iVar3; + if (-1 < iVar3) { + iVar1 = iVar3; + } + iVar4 = iVar5 + iVar2; + if (0 < iVar5) { + iVar4 = iVar5; + } + for (iVar4 = iVar4 - iVar1; iVar4 < 0; iVar4 = iVar4 + iVar2) { + } + } + if (iVar2 < iVar4) { + iVar4 = iVar2; + } + return iVar4; +} + + +================================================================== + +### FUNC 00294ccc (492 bytes) name=cvMakeSeqHeaderForArray + +uint * cvMakeSeqHeaderForArray + (uint param_1,uint param_2,uint param_3,long param_4,uint param_5,uint *param_6, + long param_7) + +{ + long lVar1; + void *__dest; + undefined8 local_10; + undefined8 local_8; + + if (((int)param_2 < 0x60 || (int)param_5 < 0) || ((int)param_3 < 1)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10, + "CvSeq* cvMakeSeqHeaderForArray(int, int, int, void*, int, CvSeq*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x24d); + cv::String::deallocate((String *)&local_10); + } + if ((param_6 == (uint *)0x0) || ((0 < (int)param_5 && (param_4 == 0 || param_7 == 0)))) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "CvSeq* cvMakeSeqHeaderForArray(int, int, int, void*, int, CvSeq*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x250); + cv::String::deallocate((String *)&local_10); + } + memset(param_6,0,(long)(int)param_2); + param_6[1] = param_2; + *param_6 = param_1 & 0xffff | 0x42990000; + if ((param_3 != (param_1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((param_1 & 7) << 1)) & 3) + ) && ((param_1 & 0xfff) != 0)) { + local_10 = 0; + local_8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x6a); + memcpy(__dest, + "Element size doesn\'t match to the size of predefined element type (try to use 0 for sequence element type)" + ,0x6a); + cv::error(-0xc9,(String *)&local_10, + "CvSeq* cvMakeSeqHeaderForArray(int, int, int, void*, int, CvSeq*, CvSeqBlock*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x25e); + cv::String::deallocate((String *)&local_10); + } + lVar1 = param_4 + (int)(param_5 * param_3); + param_6[0xb] = param_3; + param_6[10] = param_5; + *(long *)(param_6 + 0xe) = lVar1; + *(long *)(param_6 + 0xc) = lVar1; + if (0 < (int)param_5) { + *(long *)(param_6 + 0x16) = param_7; + *(long *)(param_7 + 8) = param_7; + *(long *)param_7 = param_7; + *(undefined4 *)(param_7 + 0x10) = 0; + *(uint *)(param_7 + 0x14) = param_5; + *(long *)(param_7 + 0x18) = param_4; + } + return param_6; +} + + +================================================================== + +### FUNC 00294ef4 (168 bytes) name=cvStartAppendToSeq + +void cvStartAppendToSeq(long param_1,undefined8 *param_2) + +{ + undefined8 *puVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == (undefined8 *)0x0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvStartAppendToSeq(CvSeq*, CvSeqWriter*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x333); + cv::String::deallocate((String *)&local_10); + } + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + param_2[3] = 0; + param_2[4] = 0; + param_2[5] = 0; + *(undefined4 *)param_2 = 0x30; + puVar1 = *(undefined8 **)(param_1 + 0x58); + param_2[1] = param_1; + uVar2 = 0; + if (puVar1 != (undefined8 *)0x0) { + uVar2 = *puVar1; + } + uVar3 = *(undefined8 *)(param_1 + 0x38); + param_2[5] = *(undefined8 *)(param_1 + 0x30); + param_2[2] = uVar2; + param_2[3] = uVar3; + return; +} + + +================================================================== + +### FUNC 00294fb0 (168 bytes) name=cvStartWriteSeq + +void cvStartWriteSeq(undefined4 param_1,int param_2,int param_3,long param_4,long param_5) + +{ + undefined8 uVar1; + undefined8 local_10; + undefined8 local_8; + + if ((param_4 == 0) || (param_5 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "void cvStartWriteSeq(int, int, int, CvMemStorage*, CvSeqWriter*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x345); + cv::String::deallocate((String *)&local_10); + } + uVar1 = cvCreateSeq(param_1,(long)param_2,(long)param_3,param_4); + cvStartAppendToSeq(uVar1,param_5); + return; +} + + +================================================================== + +### FUNC 0029506c (180 bytes) name=cvFlushSeqWriter + +void cvFlushSeqWriter(long param_1) + +{ + int *piVar1; + undefined4 uVar2; + int iVar3; + long lVar4; + long lVar5; + long lVar6; + long lVar7; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvFlushSeqWriter(CvSeqWriter*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x351); + cv::String::deallocate((String *)&local_10); + } + lVar6 = *(long *)(param_1 + 8); + lVar4 = *(long *)(param_1 + 0x18); + lVar7 = *(long *)(param_1 + 0x10); + *(long *)(lVar6 + 0x38) = lVar4; + if (lVar7 != 0) { + iVar3 = 0; + lVar5 = *(long *)(lVar6 + 0x58); + uVar2 = 0; + if ((long)*(int *)(lVar6 + 0x2c) != 0) { + uVar2 = (undefined4)((lVar4 - *(long *)(lVar7 + 0x18)) / (long)*(int *)(lVar6 + 0x2c)); + } + *(undefined4 *)(lVar7 + 0x14) = uVar2; + lVar4 = lVar5; + do { + piVar1 = (int *)(lVar4 + 0x14); + lVar4 = *(long *)(lVar4 + 8); + iVar3 = iVar3 + *piVar1; + } while (lVar4 != lVar5); + *(int *)(lVar6 + 0x28) = iVar3; + } + return; +} + + +================================================================== + +### FUNC 00295134 (192 bytes) name=cvEndWriteSeq + +void cvEndWriteSeq(long param_1) + +{ + int iVar1; + long lVar2; + undefined8 uVar3; + long lVar4; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvSeq* cvEndWriteSeq(CvSeqWriter*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x370); + cv::String::deallocate((String *)&local_10); + } + cvFlushSeqWriter(param_1); + lVar2 = *(long *)(param_1 + 8); + if (((*(long *)(param_1 + 0x10) != 0) && (lVar4 = *(long *)(lVar2 + 0x48), lVar4 != 0)) && + (iVar1 = (int)*(undefined8 *)(lVar4 + 0x10) + *(int *)(lVar4 + 0x20), + (uint)((iVar1 - *(int *)(lVar4 + 0x24)) - (int)*(undefined8 *)(lVar2 + 0x30)) < 8)) { + uVar3 = *(undefined8 *)(lVar2 + 0x38); + *(uint *)(lVar4 + 0x24) = iVar1 - (int)uVar3 & 0xfffffff8; + *(undefined8 *)(lVar2 + 0x30) = uVar3; + } + *(undefined8 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 00295208 (1140 bytes) name=cvCreateSeqBlock + +void cvCreateSeqBlock(long param_1) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + int iVar8; + long *plVar9; + long lVar10; + char *pcVar11; + int iVar12; + long lVar13; + long *plVar14; + long lVar15; + int iVar16; + long lVar17; + long lVar18; + int iVar19; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if ((param_1 == 0) || (lVar18 = *(long *)(param_1 + 8), lVar18 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvCreateSeqBlock(CvSeqWriter*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x38f); + cv::String::deallocate((String *)&local_10); + lVar18 = *(long *)(param_1 + 8); + cvFlushSeqWriter(param_1); + if (lVar18 == 0) { + local_10 = lVar18; + local_8 = lVar18; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x27c); + cv::String::deallocate((String *)&local_10); + } + } + else { + cvFlushSeqWriter(); + } + plVar14 = *(long **)(lVar18 + 0x50); + if (plVar14 == (long *)0x0) { + iVar8 = *(int *)(lVar18 + 0x40); + iVar2 = *(int *)(lVar18 + 0x2c); + lVar17 = *(long *)(lVar18 + 0x48); + if (iVar8 * 4 <= *(int *)(lVar18 + 0x28)) { + cvSetSeqBlockSize(lVar18,iVar8 << 1); + } + if (lVar17 == 0) { + local_10 = lVar17; + local_8 = lVar17; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar7 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar6 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar4 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar3 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar11 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar11[0x24] = cVar7; + *(undefined8 *)pcVar11 = uVar3; + *(undefined8 *)(pcVar11 + 8) = uVar4; + *(undefined8 *)(pcVar11 + 0x10) = uVar5; + *(undefined8 *)(pcVar11 + 0x18) = uVar6; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar16 = *(int *)(lVar17 + 0x20); + lVar10 = *(long *)(lVar17 + 0x10); + iVar1 = *(int *)(lVar17 + 0x24); + if (((ulong)((lVar10 + ((long)iVar16 - (long)iVar1)) - *(long *)(lVar18 + 0x30)) < 8) && + (*(int *)(lVar18 + 0x2c) <= iVar1)) { + iVar19 = 0; + if (iVar2 != 0) { + iVar19 = iVar1 / iVar2; + } + lVar15 = *(long *)(lVar18 + 0x38); + if (iVar8 < iVar19) { + iVar19 = iVar8; + } + plVar14 = (long *)**(undefined8 **)(lVar18 + 0x58); + lVar13 = *(long *)(lVar18 + 0x30) + (long)(iVar2 * iVar19); + *(long *)(lVar18 + 0x30) = lVar13; + *(uint *)(lVar17 + 0x24) = ((int)lVar10 + iVar16) - (int)lVar13 & 0xfffffff8; + goto LAB_0029529c; + } + iVar19 = iVar2 * iVar8 + 0x20; + if (iVar1 < iVar19) { + iVar12 = 1; + if (5 < iVar8) { + iVar12 = iVar8 / 3; + } + if (iVar1 < iVar2 * iVar12 + 0x28) { + if ((lVar10 == 0) || (plVar14 = *(long **)(lVar10 + 8), plVar14 == (long *)0x0)) { + lVar10 = *(long *)(lVar17 + 0x18); + if (lVar10 == 0) { + plVar14 = (long *)cv::cvAlloc((long)iVar16); + } + else { + cvSaveMemStoragePos(lVar10,auStack_20); + if ((*(long *)(lVar10 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar10 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar15 = *(long *)(lVar10 + 0x18); + if (lVar15 == 0) { + plVar14 = (long *)cv::cvAlloc((long)*(int *)(lVar10 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar15,&local_10); + FUN_00293a80(lVar15); + plVar14 = *(long **)(lVar15 + 0x10); + cvRestoreMemStoragePos(lVar15,&local_10); + plVar9 = *(long **)(lVar15 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar15 + 8) = 0; + *(undefined8 *)(lVar15 + 0x10) = 0; + *(undefined4 *)(lVar15 + 0x24) = 0; + } + else { + plVar9[1] = plVar14[1]; + if ((undefined8 *)plVar14[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar14[1] = plVar9; + } + } + } + plVar9 = *(long **)(lVar10 + 0x10); + *plVar14 = (long)plVar9; + plVar14[1] = 0; + if (plVar9 == (long *)0x0) { + *(long **)(lVar10 + 8) = plVar14; + *(long **)(lVar10 + 0x10) = plVar14; + } + else { + plVar9[1] = (long)plVar14; + plVar14 = plVar9; + } + plVar9 = (long *)plVar14[1]; + if (plVar9 != (long *)0x0) goto LAB_002954dc; + } + else { +LAB_002954dc: + *(long **)(lVar10 + 0x10) = plVar9; + plVar14 = plVar9; + } + *(int *)(lVar10 + 0x24) = *(int *)(lVar10 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar10,auStack_20); + plVar9 = *(long **)(lVar10 + 0x10); + if (plVar9 == plVar14) { + *(undefined8 *)(lVar10 + 8) = 0; + *(undefined8 *)(lVar10 + 0x10) = 0; + *(undefined4 *)(lVar10 + 0x24) = 0; + } + else { + plVar9[1] = plVar14[1]; + if ((long *)plVar14[1] != (long *)0x0) { + *(long *)plVar14[1] = (long)plVar9; + } + } + } + lVar10 = *(long *)(lVar17 + 0x10); + *plVar14 = lVar10; + plVar14[1] = 0; + if (lVar10 != 0) { + *(long **)(lVar10 + 8) = plVar14; + iVar16 = *(int *)(lVar17 + 0x20); + goto LAB_002954a4; + } + *(long **)(lVar17 + 8) = plVar14; + *(long **)(lVar17 + 0x10) = plVar14; + iVar16 = *(int *)(lVar17 + 0x20); + } + else { +LAB_002954a4: + *(long **)(lVar17 + 0x10) = plVar14; + } + *(int *)(lVar17 + 0x24) = iVar16 + -0x10; + } + else { + iVar8 = *(int *)(lVar18 + 0x2c); + iVar2 = 0; + if (iVar8 != 0) { + iVar2 = (iVar1 + -0x20) / iVar8; + } + iVar19 = iVar8 * iVar2 + 0x20; + } + } + plVar14 = (long *)cvMemStorageAlloc(lVar17,(long)iVar19); + plVar14[3] = (long)plVar14 + 0x27U & 0xfffffffffffffff8; + plVar9 = *(long **)(lVar18 + 0x58); + *(int *)((long)plVar14 + 0x14) = iVar19 + -0x20; + plVar14[1] = 0; + *plVar14 = 0; + if (plVar9 != (long *)0x0) goto LAB_0029524c; +LAB_00295428: + lVar15 = plVar14[3]; + iVar8 = 0; + iVar2 = *(int *)((long)plVar14 + 0x14); + *(long **)(lVar18 + 0x58) = plVar14; + plVar14[1] = (long)plVar14; + lVar13 = lVar15 + iVar2; + *plVar14 = (long)plVar14; + *(long *)(lVar18 + 0x38) = lVar15; + *(long *)(lVar18 + 0x30) = lVar13; + } + else { + *(long *)(lVar18 + 0x50) = plVar14[1]; + plVar9 = *(long **)(lVar18 + 0x58); + if (plVar9 == (long *)0x0) goto LAB_00295428; +LAB_0029524c: + lVar17 = *plVar9; + iVar8 = 0; + *plVar14 = lVar17; + plVar14[1] = (long)plVar9; + *plVar9 = (long)plVar14; + lVar15 = plVar14[3]; + plVar9 = (long *)*plVar14; + iVar2 = *(int *)((long)plVar14 + 0x14); + *(long **)(lVar17 + 8) = plVar14; + lVar13 = lVar15 + iVar2; + *(long *)(lVar18 + 0x38) = lVar15; + *(long *)(lVar18 + 0x30) = lVar13; + if (plVar14 != plVar9) { + iVar8 = (int)plVar9[2] + *(int *)((long)plVar9 + 0x14); + } + } + *(int *)(plVar14 + 2) = iVar8; + *(undefined4 *)((long)plVar14 + 0x14) = 0; +LAB_0029529c: + *(long **)(param_1 + 0x10) = plVar14; + *(long *)(param_1 + 0x18) = lVar15; + *(long *)(param_1 + 0x28) = lVar13; + return; +} + + +================================================================== + +### FUNC 002956b8 (320 bytes) name=cvStartReadSeq + +void cvStartReadSeq(long param_1,undefined4 *param_2,int param_3) + +{ + long lVar1; + int iVar2; + long lVar3; + long *plVar4; + long *plVar5; + long lVar6; + int iVar7; + long lVar8; + undefined8 local_10; + undefined8 local_8; + + if (param_2 != (undefined4 *)0x0) { + *(undefined8 *)(param_2 + 2) = 0; + *(undefined8 *)(param_2 + 4) = 0; + *(undefined8 *)(param_2 + 8) = 0; + *(undefined8 *)(param_2 + 10) = 0; + *(undefined8 *)(param_2 + 6) = 0; + if (param_1 != 0) { + plVar4 = *(long **)(param_1 + 0x58); + *(long *)(param_2 + 2) = param_1; + *param_2 = 0x40; + goto joined_r0x002957c8; + } + } + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvStartReadSeq(const CvSeq*, CvSeqReader*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x3b0); + cv::String::deallocate((String *)&local_10); + plVar4 = *(long **)(param_1 + 0x58); + *(long *)(param_2 + 2) = param_1; + *param_2 = 0x40; +joined_r0x002957c8: + if (plVar4 != (long *)0x0) { + plVar5 = (long *)*plVar4; + iVar2 = *(int *)(param_1 + 0x2c); + lVar6 = plVar4[3]; + iVar7 = *(int *)((long)plVar5 + 0x14); + lVar3 = plVar4[2]; + lVar8 = plVar5[3]; + *(long *)(param_2 + 6) = lVar6; + lVar1 = lVar8 + (iVar7 + -1) * iVar2; + param_2[0xc] = (int)lVar3; + *(long *)(param_2 + 0xe) = lVar1; + if (param_3 == 0) { + iVar7 = *(int *)((long)plVar4 + 0x14); + plVar5 = plVar4; + lVar8 = lVar6; + } + else { + *(long *)(param_2 + 0xe) = lVar6; + *(long *)(param_2 + 6) = lVar1; + } + *(long **)(param_2 + 4) = plVar5; + *(long *)(param_2 + 8) = lVar8; + *(long *)(param_2 + 10) = lVar8 + iVar2 * iVar7; + return; + } + param_2[0xc] = 0; + *(undefined8 *)(param_2 + 4) = 0; + *(undefined8 *)(param_2 + 10) = 0; + *(undefined8 *)(param_2 + 8) = 0; + *(undefined8 *)(param_2 + 0xe) = 0; + *(undefined8 *)(param_2 + 6) = 0; + return; +} + + +================================================================== + +### FUNC 0029580c (200 bytes) name=cvChangeSeqBlock + +void cvChangeSeqBlock(long param_1,int param_2) + +{ + int iVar1; + long lVar2; + long lVar3; + long lVar4; + int iVar5; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvChangeSeqBlock(void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x3e2); + cv::String::deallocate((String *)&local_10); + } + if (param_2 < 1) { + lVar3 = **(long **)(param_1 + 0x10); + iVar1 = *(int *)(*(long *)(param_1 + 8) + 0x2c); + iVar5 = *(int *)(lVar3 + 0x14); + lVar4 = *(long *)(lVar3 + 0x18); + lVar2 = lVar4 + (iVar5 + -1) * iVar1; + } + else { + lVar3 = (*(long **)(param_1 + 0x10))[1]; + iVar1 = *(int *)(*(long *)(param_1 + 8) + 0x2c); + lVar2 = *(long *)(lVar3 + 0x18); + iVar5 = *(int *)(lVar3 + 0x14); + lVar4 = lVar2; + } + *(long *)(param_1 + 0x18) = lVar2; + *(long *)(param_1 + 0x10) = lVar3; + *(long *)(param_1 + 0x20) = lVar4; + *(long *)(param_1 + 0x28) = lVar4 + iVar1 * iVar5; + return; +} + + +================================================================== + +### FUNC 002958e8 (204 bytes) name=cvGetSeqReaderPos + +int cvGetSeqReaderPos(long param_1) + +{ + int iVar1; + int iVar2; + long lVar3; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (lVar3 = *(long *)(param_1 + 0x18), lVar3 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"int cvGetSeqReaderPos(CvSeqReader*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x3fb); + cv::String::deallocate((String *)&local_10); + lVar3 = *(long *)(param_1 + 0x18); + } + iVar1 = *(int *)(*(long *)(param_1 + 8) + 0x2c); + if ((iVar1 < 0x21) && (-1 < (char)(&DAT_00464c90)[iVar1 + -1])) { + iVar2 = (int)(lVar3 - *(long *)(param_1 + 0x20) >> + ((long)(char)(&DAT_00464c90)[iVar1 + -1] & 0x3fU)); + } + else { + iVar2 = 0; + if ((long)iVar1 != 0) { + iVar2 = (int)((lVar3 - *(long *)(param_1 + 0x20)) / (long)iVar1); + } + } + return (*(int *)(*(long *)(param_1 + 0x10) + 0x10) - *(int *)(param_1 + 0x30)) + iVar2; +} + + +================================================================== + +### FUNC 002959c8 (680 bytes) name=cvSetSeqReaderPos + +void cvSetSeqReaderPos(long param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + long lVar3; + ulong uVar4; + long *plVar5; + ulong uVar6; + int iVar7; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (lVar3 = *(long *)(param_1 + 8), lVar3 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSetSeqReaderPos(CvSeqReader*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x414); + cv::String::deallocate((String *)&local_10); + lVar3 = *(long *)(param_1 + 8); + } + iVar7 = *(int *)(lVar3 + 0x28); + iVar1 = *(int *)(lVar3 + 0x2c); + if (param_3 == 0) { + if (param_2 < 0) { + if (param_2 < -iVar7) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10,"void cvSetSeqReaderPos(CvSeqReader*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x41e); + param_2 = param_2 + iVar7; + cv::String::deallocate((String *)&local_10); + lVar3 = *(long *)(param_1 + 8); + } + else { + param_2 = param_2 + iVar7; + } + } + else if ((iVar7 <= param_2) && (param_2 = param_2 - iVar7, iVar7 <= param_2)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10,"void cvSetSeqReaderPos(CvSeqReader*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x425); + cv::String::deallocate((String *)&local_10); + lVar3 = *(long *)(param_1 + 8); + } + plVar5 = *(long **)(lVar3 + 0x58); + iVar2 = *(int *)((long)plVar5 + 0x14); + if (iVar2 <= param_2) { + if (iVar7 < param_2 * 2) { + do { + plVar5 = (long *)*plVar5; + iVar2 = *(int *)((long)plVar5 + 0x14); + iVar7 = iVar7 - iVar2; + } while (param_2 < iVar7); + param_2 = param_2 - iVar7; + } + else { + do { + plVar5 = (long *)plVar5[1]; + param_2 = param_2 - iVar2; + iVar2 = *(int *)((long)plVar5 + 0x14); + } while (iVar2 <= param_2); + } + } + lVar3 = plVar5[3]; + *(long *)(param_1 + 0x18) = lVar3 + param_2 * iVar1; + if (*(long **)(param_1 + 0x10) != plVar5) { + *(long **)(param_1 + 0x10) = plVar5; + *(long *)(param_1 + 0x20) = lVar3; + *(long *)(param_1 + 0x28) = lVar3 + iVar1 * iVar2; + return; + } + } + else { + param_2 = param_2 * iVar1; + lVar3 = *(long *)(param_1 + 0x18); + plVar5 = *(long **)(param_1 + 0x10); + if (param_2 < 1) { + uVar6 = *(ulong *)(param_1 + 0x20); + uVar4 = lVar3 + param_2; + if (uVar4 < uVar6) { + do { + plVar5 = (long *)*plVar5; + param_2 = param_2 + ((int)lVar3 - (int)uVar6); + uVar6 = plVar5[3]; + lVar3 = uVar6 + (long)(iVar1 * *(int *)((long)plVar5 + 0x14)); + uVar4 = lVar3 + param_2; + } while (uVar4 < uVar6); + *(long **)(param_1 + 0x10) = plVar5; + *(ulong *)(param_1 + 0x20) = uVar6; + *(long *)(param_1 + 0x28) = lVar3; + } + *(ulong *)(param_1 + 0x18) = uVar4; + return; + } + uVar6 = *(ulong *)(param_1 + 0x28); + uVar4 = lVar3 + param_2; + if (uVar6 <= uVar4) { + do { + plVar5 = (long *)plVar5[1]; + param_2 = param_2 - ((int)uVar6 - (int)lVar3); + lVar3 = plVar5[3]; + uVar4 = lVar3 + param_2; + uVar6 = lVar3 + iVar1 * *(int *)((long)plVar5 + 0x14); + } while (uVar6 <= uVar4); + *(long **)(param_1 + 0x10) = plVar5; + *(long *)(param_1 + 0x20) = lVar3; + *(ulong *)(param_1 + 0x28) = uVar6; + } + *(ulong *)(param_1 + 0x18) = uVar4; + } + return; +} + + +================================================================== + +### FUNC 00295cac (332 bytes) name=cvCvtSeqToArray + +void * cvCvtSeqToArray(long param_1,void *param_2,ulong param_3) + +{ + int iVar1; + long lVar2; + int iVar3; + int iVar4; + void *__dest; + undefined8 local_40; + undefined8 local_38; + long local_30; + void *local_28; + long local_18; + + if ((param_2 == (void *)0x0) || (param_1 == 0)) { + local_40 = 0; + local_38 = 0; + cv::String::allocate((String *)&local_40,0); + cv::error(-0x1b,(String *)&local_40,"void* cvCvtSeqToArray(const CvSeq*, void*, CvSlice)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x226); + cv::String::deallocate((String *)&local_40); + iVar1 = *(int *)(param_1 + 0x2c); + iVar3 = cvSliceLength(param_3,param_1); + iVar3 = iVar1 * iVar3; + } + else { + iVar1 = *(int *)(param_1 + 0x2c); + iVar3 = cvSliceLength(param_3,param_1); + iVar3 = iVar1 * iVar3; + } + if (iVar3 != 0) { + cvStartReadSeq(param_1,&local_40,0); + cvSetSeqReaderPos(&local_40,param_3 & 0xffffffff,0); + __dest = param_2; + do { + lVar2 = local_30; + iVar4 = (int)local_18 - (int)local_28; + if (iVar3 < iVar4) { + iVar4 = iVar3; + } + iVar3 = iVar3 - iVar4; + memcpy(__dest,local_28,(long)iVar4); + local_30 = *(long *)(lVar2 + 8); + local_28 = *(void **)(local_30 + 0x18); + local_18 = (long)local_28 + (long)(iVar1 * *(int *)(local_30 + 0x14)); + __dest = (void *)((long)__dest + (long)iVar4); + } while (0 < iVar3); + return param_2; + } + return (void *)0x0; +} + + +================================================================== + +### FUNC 00295e0c (1124 bytes) name=cvSeqPush + +void * cvSeqPush(long param_1,void *param_2) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + long *plVar8; + char *pcVar9; + int iVar10; + long *plVar11; + int iVar12; + void *__dest; + long lVar13; + int iVar14; + long lVar15; + int iVar16; + long lVar17; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"schar* cvSeqPush(CvSeq*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x471); + cv::String::deallocate((String *)&local_10); + } + __dest = *(void **)(param_1 + 0x38); + iVar1 = *(int *)(param_1 + 0x2c); + if (__dest < *(void **)(param_1 + 0x30)) goto LAB_00295e4c; + plVar8 = *(long **)(param_1 + 0x50); + if (plVar8 == (long *)0x0) { + iVar10 = *(int *)(param_1 + 0x40); + lVar15 = *(long *)(param_1 + 0x48); + if (iVar10 * 4 <= *(int *)(param_1 + 0x28)) { + cvSetSeqBlockSize(param_1,iVar10 << 1); + } + if (lVar15 == 0) { + local_10 = lVar15; + local_8 = lVar15; + pcVar9 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar7 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar6 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar4 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar3 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar9 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar9[0x24] = cVar7; + *(undefined8 *)pcVar9 = uVar3; + *(undefined8 *)(pcVar9 + 8) = uVar4; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar14 = *(int *)(lVar15 + 0x20); + lVar13 = *(long *)(lVar15 + 0x10); + iVar2 = *(int *)(lVar15 + 0x24); + if (((ulong)((lVar13 + ((long)iVar14 - (long)iVar2)) - *(long *)(param_1 + 0x30)) < 8) && + (*(int *)(param_1 + 0x2c) <= iVar2)) { + iVar16 = 0; + if (iVar1 != 0) { + iVar16 = iVar2 / iVar1; + } + __dest = *(void **)(param_1 + 0x38); + if (iVar10 < iVar16) { + iVar16 = iVar10; + } + lVar17 = *(long *)(param_1 + 0x30) + (long)(iVar16 * iVar1); + *(long *)(param_1 + 0x30) = lVar17; + *(uint *)(lVar15 + 0x24) = ((int)lVar13 + iVar14) - (int)lVar17 & 0xfffffff8; + goto LAB_00295e4c; + } + iVar16 = iVar10 * iVar1 + 0x20; + if (iVar2 < iVar16) { + iVar12 = 1; + if (5 < iVar10) { + iVar12 = iVar10 / 3; + } + if (iVar2 < iVar1 * iVar12 + 0x28) { + if ((lVar13 == 0) || (plVar8 = *(long **)(lVar13 + 8), plVar8 == (long *)0x0)) { + lVar13 = *(long *)(lVar15 + 0x18); + if (lVar13 == 0) { + plVar8 = (long *)cv::cvAlloc((long)iVar14); + } + else { + cvSaveMemStoragePos(lVar13,auStack_20); + if ((*(long *)(lVar13 + 0x10) == 0) || + (plVar11 = *(long **)(*(long *)(lVar13 + 0x10) + 8), plVar11 == (long *)0x0)) { + lVar17 = *(long *)(lVar13 + 0x18); + if (lVar17 == 0) { + plVar8 = (long *)cv::cvAlloc((long)*(int *)(lVar13 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar17,&local_10); + FUN_00293a80(lVar17); + plVar8 = *(long **)(lVar17 + 0x10); + cvRestoreMemStoragePos(lVar17,&local_10); + plVar11 = *(long **)(lVar17 + 0x10); + if (plVar8 == plVar11) { + *(undefined8 *)(lVar17 + 8) = 0; + *(undefined8 *)(lVar17 + 0x10) = 0; + *(undefined4 *)(lVar17 + 0x24) = 0; + } + else { + plVar11[1] = plVar8[1]; + if ((undefined8 *)plVar8[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar8[1] = plVar11; + } + } + } + plVar11 = *(long **)(lVar13 + 0x10); + *plVar8 = (long)plVar11; + plVar8[1] = 0; + if (plVar11 == (long *)0x0) { + *(long **)(lVar13 + 8) = plVar8; + *(long **)(lVar13 + 0x10) = plVar8; + } + else { + plVar11[1] = (long)plVar8; + plVar8 = plVar11; + } + plVar11 = (long *)plVar8[1]; + if ((long *)plVar8[1] != (long *)0x0) goto LAB_002960d4; + } + else { +LAB_002960d4: + plVar8 = plVar11; + *(long **)(lVar13 + 0x10) = plVar8; + } + *(int *)(lVar13 + 0x24) = *(int *)(lVar13 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar13,auStack_20); + plVar11 = *(long **)(lVar13 + 0x10); + if (plVar11 == plVar8) { + *(undefined8 *)(lVar13 + 8) = 0; + *(undefined8 *)(lVar13 + 0x10) = 0; + *(undefined4 *)(lVar13 + 0x24) = 0; + } + else { + plVar11[1] = plVar8[1]; + if ((long *)plVar8[1] != (long *)0x0) { + *(long *)plVar8[1] = (long)plVar11; + } + } + } + lVar13 = *(long *)(lVar15 + 0x10); + *plVar8 = lVar13; + plVar8[1] = 0; + if (lVar13 != 0) { + *(long **)(lVar13 + 8) = plVar8; + iVar14 = *(int *)(lVar15 + 0x20); + goto LAB_0029609c; + } + *(long **)(lVar15 + 8) = plVar8; + *(long **)(lVar15 + 0x10) = plVar8; + iVar14 = *(int *)(lVar15 + 0x20); + } + else { +LAB_0029609c: + *(long **)(lVar15 + 0x10) = plVar8; + } + *(int *)(lVar15 + 0x24) = iVar14 + -0x10; + } + else { + iVar10 = *(int *)(param_1 + 0x2c); + iVar14 = 0; + if (iVar10 != 0) { + iVar14 = (iVar2 + -0x20) / iVar10; + } + iVar16 = iVar10 * iVar14 + 0x20; + } + } + plVar8 = (long *)cvMemStorageAlloc(lVar15,(long)iVar16); + *(int *)((long)plVar8 + 0x14) = iVar16 + -0x20; + plVar8[3] = (long)plVar8 + 0x27U & 0xfffffffffffffff8; + plVar8[1] = 0; + *plVar8 = 0; + } + else { + *(long *)(param_1 + 0x50) = plVar8[1]; + } + plVar11 = *(long **)(param_1 + 0x58); + if (plVar11 == (long *)0x0) { + __dest = (void *)plVar8[3]; + iVar10 = 0; + *(long **)(param_1 + 0x58) = plVar8; + iVar2 = *(int *)((long)plVar8 + 0x14); + plVar8[1] = (long)plVar8; + *plVar8 = (long)plVar8; + *(void **)(param_1 + 0x38) = __dest; + *(long *)(param_1 + 0x30) = (long)__dest + (long)iVar2; + } + else { + lVar15 = *plVar11; + iVar10 = 0; + *plVar8 = lVar15; + plVar8[1] = (long)plVar11; + *plVar11 = (long)plVar8; + __dest = (void *)plVar8[3]; + plVar11 = (long *)*plVar8; + iVar2 = *(int *)((long)plVar8 + 0x14); + *(long **)(lVar15 + 8) = plVar8; + *(void **)(param_1 + 0x38) = __dest; + *(long *)(param_1 + 0x30) = (long)__dest + (long)iVar2; + if (plVar8 != plVar11) { + iVar10 = (int)plVar11[2] + *(int *)((long)plVar11 + 0x14); + } + } + *(int *)(plVar8 + 2) = iVar10; + *(undefined4 *)((long)plVar8 + 0x14) = 0; +LAB_00295e4c: + if (param_2 != (void *)0x0) { + __dest = memcpy(__dest,param_2,(long)iVar1); + } + iVar10 = *(int *)(param_1 + 0x28); + *(int *)(**(long **)(param_1 + 0x58) + 0x14) = *(int *)(**(long **)(param_1 + 0x58) + 0x14) + 1; + *(int *)(param_1 + 0x28) = iVar10 + 1; + *(long *)(param_1 + 0x38) = (long)__dest + (long)iVar1; + return __dest; +} + + +================================================================== + +### FUNC 00296298 (412 bytes) name=cvSeqPop + +void cvSeqPop(long param_1,void *param_2) + +{ + int iVar1; + long *plVar2; + long *plVar3; + long lVar4; + long lVar5; + undefined8 uVar6; + void *__src; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSeqPop(CvSeq*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x490); + cv::String::deallocate((String *)&local_10); + } + if (*(int *)(param_1 + 0x28) < 1) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10,"void cvSeqPop(CvSeq*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x492); + cv::String::deallocate((String *)&local_10); + } + __src = (void *)(*(long *)(param_1 + 0x38) - (long)*(int *)(param_1 + 0x2c)); + *(void **)(param_1 + 0x38) = __src; + if (param_2 != (void *)0x0) { + memcpy(param_2,__src,(long)*(int *)(param_1 + 0x2c)); + } + plVar3 = *(long **)(param_1 + 0x58); + *(void **)(param_1 + 0x38) = __src; + plVar2 = (long *)*plVar3; + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + -1; + iVar1 = *(int *)((long)plVar2 + 0x14) + -1; + *(int *)((long)plVar2 + 0x14) = iVar1; + if (iVar1 != 0) { + return; + } + if (plVar3 == plVar2) { + lVar4 = *(long *)(param_1 + 0x30); + iVar1 = ((int)lVar4 - (int)plVar2[3]) + *(int *)(plVar2 + 2) * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar2 + 0x14) = iVar1; + plVar2[3] = lVar4 - iVar1; + *(undefined8 *)(param_1 + 0x58) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + lVar5 = *plVar2; + *(int *)((long)plVar2 + 0x14) = (int)*(undefined8 *)(param_1 + 0x30) - (int)__src; + uVar6 = plVar2[1]; + lVar4 = *(long *)(lVar5 + 0x18) + (long)(*(int *)(lVar5 + 0x14) * *(int *)(param_1 + 0x2c)); + *(long *)(param_1 + 0x38) = lVar4; + *(long *)(param_1 + 0x30) = lVar4; + *(undefined8 *)(lVar5 + 8) = uVar6; + *(long *)plVar2[1] = lVar5; + } + plVar2[1] = *(undefined8 *)(param_1 + 0x50); + *(long **)(param_1 + 0x50) = plVar2; + return; +} + + +================================================================== + +### FUNC 0029645c (1084 bytes) name=cvSeqPushFront + +void * cvSeqPushFront(long param_1,void *param_2) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + char cVar6; + long lVar7; + char *pcVar8; + long *plVar9; + void *__dest; + long *plVar10; + int iVar11; + int iVar12; + int iVar13; + long *plVar14; + int iVar15; + long lVar16; + long lVar17; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"schar* cvSeqPushFront(CvSeq*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x4ad); + cv::String::deallocate((String *)&local_10); + } + plVar14 = *(long **)(param_1 + 0x58); + iVar1 = *(int *)(param_1 + 0x2c); + if ((plVar14 != (long *)0x0) && ((int)plVar14[2] != 0)) { + lVar7 = plVar14[3]; + goto LAB_002964a4; + } + plVar10 = *(long **)(param_1 + 0x50); + if (plVar10 == (long *)0x0) { + iVar15 = *(int *)(param_1 + 0x40); + lVar7 = *(long *)(param_1 + 0x48); + if (iVar15 * 4 <= *(int *)(param_1 + 0x28)) { + cvSetSeqBlockSize(param_1,iVar15 << 1); + } + if (lVar7 == 0) { + local_10 = lVar7; + local_8 = lVar7; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar6 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar4 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar3 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar2 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar8[0x24] = cVar6; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar12 = *(int *)(lVar7 + 0x24); + iVar13 = iVar1 * iVar15 + 0x20; + if (iVar12 < iVar13) { + iVar11 = 1; + if (5 < iVar15) { + iVar11 = iVar15 / 3; + } + if (iVar12 < iVar1 * iVar11 + 0x28) { + if ((*(long *)(lVar7 + 0x10) == 0) || + (plVar14 = *(long **)(*(long *)(lVar7 + 0x10) + 8), plVar14 == (long *)0x0)) { + lVar16 = *(long *)(lVar7 + 0x18); + if (lVar16 == 0) { + plVar14 = (long *)cv::cvAlloc((long)*(int *)(lVar7 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar16,auStack_20); + if ((*(long *)(lVar16 + 0x10) == 0) || + (plVar14 = *(long **)(*(long *)(lVar16 + 0x10) + 8), plVar14 == (long *)0x0)) { + lVar17 = *(long *)(lVar16 + 0x18); + if (lVar17 == 0) { + plVar14 = (long *)cv::cvAlloc((long)*(int *)(lVar16 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar17,&local_10); + FUN_00293a80(lVar17); + plVar14 = *(long **)(lVar17 + 0x10); + cvRestoreMemStoragePos(lVar17,&local_10); + plVar10 = *(long **)(lVar17 + 0x10); + if (plVar14 == plVar10) { + *(undefined8 *)(lVar17 + 8) = 0; + *(undefined8 *)(lVar17 + 0x10) = 0; + *(undefined4 *)(lVar17 + 0x24) = 0; + } + else { + plVar10[1] = plVar14[1]; + if ((undefined8 *)plVar14[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar14[1] = plVar10; + } + } + } + lVar17 = *(long *)(lVar16 + 0x10); + *plVar14 = lVar17; + plVar14[1] = 0; + if (lVar17 != 0) { + *(long **)(lVar17 + 8) = plVar14; + goto LAB_00296708; + } + *(long **)(lVar16 + 8) = plVar14; + *(long **)(lVar16 + 0x10) = plVar14; + } + else { +LAB_00296708: + *(long **)(lVar16 + 0x10) = plVar14; + } + *(int *)(lVar16 + 0x24) = *(int *)(lVar16 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar16,auStack_20); + plVar10 = *(long **)(lVar16 + 0x10); + if (plVar10 == plVar14) { + *(undefined8 *)(lVar16 + 8) = 0; + *(undefined8 *)(lVar16 + 0x10) = 0; + *(undefined4 *)(lVar16 + 0x24) = 0; + } + else { + plVar10[1] = plVar14[1]; + if ((long *)plVar14[1] != (long *)0x0) { + *(long *)plVar14[1] = (long)plVar10; + } + } + } + lVar16 = *(long *)(lVar7 + 0x10); + *plVar14 = lVar16; + plVar14[1] = 0; + if (lVar16 != 0) { + *(long **)(lVar16 + 8) = plVar14; + goto LAB_002966cc; + } + *(long **)(lVar7 + 8) = plVar14; + *(long **)(lVar7 + 0x10) = plVar14; + } + else { +LAB_002966cc: + *(long **)(lVar7 + 0x10) = plVar14; + } + *(int *)(lVar7 + 0x24) = *(int *)(lVar7 + 0x20) + -0x10; + } + else { + iVar15 = *(int *)(param_1 + 0x2c); + iVar13 = 0; + if (iVar15 != 0) { + iVar13 = (iVar12 + -0x20) / iVar15; + } + iVar13 = iVar15 * iVar13 + 0x20; + } + } + plVar10 = (long *)cvMemStorageAlloc(lVar7,(long)iVar13); + plVar14 = *(long **)(param_1 + 0x58); + iVar15 = *(int *)(param_1 + 0x2c); + plVar10[3] = (long)plVar10 + 0x27U & 0xfffffffffffffff8; + *(int *)((long)plVar10 + 0x14) = iVar13 + -0x20; + plVar10[1] = 0; + *plVar10 = 0; + } + else { + *(long *)(param_1 + 0x50) = plVar10[1]; + iVar15 = iVar1; + } + if (plVar14 == (long *)0x0) { + iVar13 = *(int *)((long)plVar10 + 0x14); + *(long **)(param_1 + 0x58) = plVar10; + lVar7 = plVar10[3] + (long)iVar13; + iVar12 = 0; + if (iVar15 != 0) { + iVar12 = iVar13 / iVar15; + } + plVar10[1] = (long)plVar10; + *plVar10 = (long)plVar10; + plVar10[3] = lVar7; + plVar14 = plVar10; +LAB_00296654: + *(long *)(param_1 + 0x38) = lVar7; + *(long *)(param_1 + 0x30) = lVar7; + lVar7 = plVar14[3]; + } + else { + lVar7 = *plVar14; + *plVar10 = lVar7; + plVar10[1] = (long)plVar14; + *plVar14 = (long)plVar10; + iVar13 = *(int *)((long)plVar10 + 0x14); + plVar9 = (long *)*plVar10; + *(long **)(lVar7 + 8) = plVar10; + lVar7 = plVar10[3] + (long)iVar13; + plVar10[3] = lVar7; + iVar12 = 0; + if (iVar15 != 0) { + iVar12 = iVar13 / iVar15; + } + if (plVar10 == plVar9) goto LAB_00296654; + *(long **)(param_1 + 0x58) = plVar10; + plVar14 = plVar10; + } + *(undefined4 *)(plVar10 + 2) = 0; + iVar15 = 0; + while( true ) { + *(int *)(plVar10 + 2) = iVar12 + iVar15; + plVar10 = (long *)plVar10[1]; + if (plVar10 == plVar14) break; + iVar15 = (int)plVar10[2]; + } + *(undefined4 *)((long)plVar14 + 0x14) = 0; +LAB_002964a4: + __dest = (void *)(lVar7 - iVar1); + plVar14[3] = (long)__dest; + if (param_2 != (void *)0x0) { + __dest = memcpy(__dest,param_2,(long)iVar1); + } + iVar1 = *(int *)(param_1 + 0x28); + *(int *)((long)plVar14 + 0x14) = *(int *)((long)plVar14 + 0x14) + 1; + *(int *)(plVar14 + 2) = (int)plVar14[2] + -1; + *(int *)(param_1 + 0x28) = iVar1 + 1; + return __dest; +} + + +================================================================== + +### FUNC 002968c0 (476 bytes) name=cvSeqPopFront + +void cvSeqPopFront(long param_1,void *param_2) + +{ + int iVar1; + int iVar2; + long *plVar3; + long lVar4; + long *plVar5; + long lVar6; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSeqPopFront(CvSeq*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x4ce); + cv::String::deallocate((String *)&local_10); + } + if (*(int *)(param_1 + 0x28) < 1) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10,"void cvSeqPopFront(CvSeq*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x4d0); + cv::String::deallocate((String *)&local_10); + } + iVar1 = *(int *)(param_1 + 0x2c); + lVar6 = *(long *)(param_1 + 0x58); + if (param_2 != (void *)0x0) { + memcpy(param_2,*(void **)(lVar6 + 0x18),(long)iVar1); + } + iVar2 = *(int *)(param_1 + 0x28); + *(long *)(lVar6 + 0x18) = *(long *)(lVar6 + 0x18) + (long)iVar1; + *(int *)(lVar6 + 0x10) = *(int *)(lVar6 + 0x10) + 1; + iVar1 = *(int *)(lVar6 + 0x14) + -1; + *(int *)(param_1 + 0x28) = iVar2 + -1; + *(int *)(lVar6 + 0x14) = iVar1; + if (iVar1 != 0) { + return; + } + plVar3 = *(long **)(param_1 + 0x58); + if (plVar3 == (long *)*plVar3) { + lVar6 = *(long *)(param_1 + 0x30); + iVar1 = ((int)lVar6 - (int)plVar3[3]) + (int)plVar3[2] * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar3 + 0x14) = iVar1; + plVar3[3] = lVar6 - iVar1; + *(undefined8 *)(param_1 + 0x58) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + iVar1 = (int)plVar3[2]; + iVar2 = iVar1 * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar3 + 0x14) = iVar2; + plVar3[3] = plVar3[3] - (long)iVar2; + plVar5 = plVar3; + iVar2 = iVar1; + while( true ) { + *(int *)(plVar5 + 2) = iVar2 - iVar1; + plVar5 = (long *)plVar5[1]; + if (plVar3 == plVar5) break; + iVar2 = (int)plVar5[2]; + } + lVar6 = *plVar5; + lVar4 = plVar5[1]; + *(long *)(param_1 + 0x58) = lVar4; + *(long *)(lVar6 + 8) = lVar4; + *(long *)plVar5[1] = lVar6; + plVar3 = plVar5; + } + plVar3[1] = *(long *)(param_1 + 0x50); + *(long **)(param_1 + 0x50) = plVar3; + return; +} + + +================================================================== + +### FUNC 00296ac4 (1700 bytes) name=cvSeqInsert + +void * cvSeqInsert(long param_1,int param_2,void *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + char cVar9; + long lVar10; + void *pvVar11; + ulong uVar12; + long lVar13; + char *pcVar14; + int iVar15; + long *plVar16; + int iVar17; + long *plVar18; + int iVar19; + long lVar20; + long *plVar21; + size_t sVar22; + int iVar23; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"schar* cvSeqInsert(CvSeq*, int, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x4eb); + cv::String::deallocate((String *)&local_10); + } + uVar3 = *(uint *)(param_1 + 0x28); + uVar1 = uVar3; + if (-1 < param_2) { + uVar1 = 0; + } + uVar2 = uVar3; + if ((int)(uVar1 + param_2) <= (int)uVar3) { + uVar2 = 0; + } + uVar2 = (uVar1 + param_2) - uVar2; + if (uVar3 < uVar2) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10,"schar* cvSeqInsert(CvSeq*, int, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x4f2); + cv::String::deallocate((String *)&local_10); + } + if (uVar2 == uVar3) { + pvVar11 = (void *)cvSeqPush(param_1,param_3); + return pvVar11; + } + if (uVar2 == 0) { + pvVar11 = (void *)cvSeqPushFront(param_1,param_3); + return pvVar11; + } + iVar4 = *(int *)(param_1 + 0x2c); + if ((int)uVar3 >> 1 <= (int)uVar2) { + sVar22 = (size_t)iVar4; + uVar12 = *(long *)(param_1 + 0x38) + sVar22; + if (*(ulong *)(param_1 + 0x30) < uVar12) { + FUN_00294674(param_1); + uVar12 = *(long *)(param_1 + 0x38) + sVar22; + } + plVar18 = (long *)**(undefined8 **)(param_1 + 0x58); + iVar23 = *(int *)(*(undefined8 **)(param_1 + 0x58) + 2); + iVar17 = (int)plVar18[2]; + pvVar11 = (void *)plVar18[3]; + *(int *)((long)plVar18 + 0x14) = *(int *)((long)plVar18 + 0x14) + 1; + iVar15 = (int)uVar12 - (int)pvVar11; + iVar19 = iVar17 - iVar23; + while ((int)uVar2 < iVar19) { + plVar21 = (long *)*plVar18; + memmove((void *)((long)pvVar11 + sVar22),pvVar11,(long)(iVar15 - iVar4)); + iVar15 = iVar4 * *(int *)((long)plVar21 + 0x14); + memcpy((void *)plVar18[3],(void *)(plVar21[3] + ((long)iVar15 - sVar22)),sVar22); + iVar17 = *(int *)(plVar21 + 2); + pvVar11 = (void *)plVar21[3]; + plVar18 = plVar21; + iVar19 = iVar17 - iVar23; + } + iVar23 = ((uVar2 - iVar17) + iVar23) * iVar4; + lVar10 = (long)iVar23; + memmove((void *)((long)pvVar11 + lVar10 + sVar22),(void *)((long)pvVar11 + lVar10), + (long)((iVar15 - iVar23) - iVar4)); + pvVar11 = (void *)(plVar18[3] + lVar10); + if (param_3 != (void *)0x0) { + pvVar11 = memcpy(pvVar11,param_3,sVar22); + } + *(ulong *)(param_1 + 0x38) = uVar12; + goto LAB_00296c0c; + } + plVar18 = *(long **)(param_1 + 0x58); + iVar23 = (int)plVar18[2]; + if (iVar23 == 0) { + plVar21 = *(long **)(param_1 + 0x50); + if (plVar21 == (long *)0x0) { + iVar23 = *(int *)(param_1 + 0x40); + lVar10 = *(long *)(param_1 + 0x48); + if (iVar23 * 4 <= *(int *)(param_1 + 0x28)) { + cvSetSeqBlockSize(param_1,iVar23 << 1); + } + if (lVar10 == 0) { + local_10 = lVar10; + local_8 = lVar10; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar9 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar8 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar7 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar6 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar14 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar14[0x24] = cVar9; + *(undefined8 *)pcVar14 = uVar5; + *(undefined8 *)(pcVar14 + 8) = uVar6; + *(undefined8 *)(pcVar14 + 0x10) = uVar7; + *(undefined8 *)(pcVar14 + 0x18) = uVar8; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar15 = *(int *)(lVar10 + 0x24); + iVar17 = iVar4 * iVar23 + 0x20; + if (iVar15 < iVar17) { + iVar19 = 1; + if (5 < iVar23) { + iVar19 = iVar23 / 3; + } + if (iVar15 < iVar4 * iVar19 + 0x28) { + if ((*(long *)(lVar10 + 0x10) == 0) || + (lVar13 = *(long *)(*(long *)(lVar10 + 0x10) + 8), lVar13 == 0)) { + lVar13 = *(long *)(lVar10 + 0x18); + if (lVar13 == 0) { + plVar18 = (long *)cv::cvAlloc((long)*(int *)(lVar10 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar13,auStack_20); + if ((*(long *)(lVar13 + 0x10) == 0) || + (plVar21 = *(long **)(*(long *)(lVar13 + 0x10) + 8), plVar21 == (long *)0x0)) { + lVar20 = *(long *)(lVar13 + 0x18); + if (lVar20 == 0) { + plVar18 = (long *)cv::cvAlloc((long)*(int *)(lVar13 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar20,&local_10); + FUN_00293a80(lVar20); + plVar18 = *(long **)(lVar20 + 0x10); + cvRestoreMemStoragePos(lVar20,&local_10); + plVar21 = *(long **)(lVar20 + 0x10); + if (plVar18 == plVar21) { + *(undefined8 *)(lVar20 + 8) = 0; + *(undefined8 *)(lVar20 + 0x10) = 0; + *(undefined4 *)(lVar20 + 0x24) = 0; + } + else { + plVar21[1] = plVar18[1]; + if ((undefined8 *)plVar18[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar18[1] = plVar21; + } + } + } + plVar21 = *(long **)(lVar13 + 0x10); + *plVar18 = (long)plVar21; + plVar18[1] = 0; + if (plVar21 == (long *)0x0) { + *(long **)(lVar13 + 8) = plVar18; + *(long **)(lVar13 + 0x10) = plVar18; + } + else { + plVar21[1] = (long)plVar18; + plVar18 = plVar21; + } + plVar21 = (long *)plVar18[1]; + if (plVar21 != (long *)0x0) goto LAB_00296fc0; + } + else { +LAB_00296fc0: + *(long **)(lVar13 + 0x10) = plVar21; + plVar18 = plVar21; + } + *(int *)(lVar13 + 0x24) = *(int *)(lVar13 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar13,auStack_20); + plVar21 = *(long **)(lVar13 + 0x10); + if (plVar18 == plVar21) { + *(undefined8 *)(lVar13 + 8) = 0; + *(undefined8 *)(lVar13 + 0x10) = 0; + *(undefined4 *)(lVar13 + 0x24) = 0; + } + else { + plVar21[1] = plVar18[1]; + if ((long *)plVar18[1] != (long *)0x0) { + *(long *)plVar18[1] = (long)plVar21; + } + } + } + plVar21 = *(long **)(lVar10 + 0x10); + *plVar18 = (long)plVar21; + plVar18[1] = 0; + if (plVar21 == (long *)0x0) { + *(long **)(lVar10 + 8) = plVar18; + *(long **)(lVar10 + 0x10) = plVar18; + } + else { + plVar21[1] = (long)plVar18; + plVar18 = plVar21; + } + lVar13 = plVar18[1]; + if (lVar13 != 0) goto LAB_00296f80; + } + else { +LAB_00296f80: + *(long *)(lVar10 + 0x10) = lVar13; + } + *(int *)(lVar10 + 0x24) = *(int *)(lVar10 + 0x20) + -0x10; + } + else { + iVar23 = *(int *)(param_1 + 0x2c); + iVar17 = 0; + if (iVar23 != 0) { + iVar17 = (iVar15 + -0x20) / iVar23; + } + iVar17 = iVar23 * iVar17 + 0x20; + } + } + plVar21 = (long *)cvMemStorageAlloc(lVar10,(long)iVar17); + plVar18 = *(long **)(param_1 + 0x58); + uVar12 = (long)plVar21 + 0x27U & 0xfffffffffffffff8; + *(int *)((long)plVar21 + 0x14) = iVar17 + -0x20; + plVar21[3] = uVar12; + plVar21[1] = 0; + *plVar21 = 0; + if (plVar18 != (long *)0x0) { + iVar23 = *(int *)(param_1 + 0x2c); + goto LAB_00296dac; + } + iVar23 = *(int *)(param_1 + 0x2c); + iVar17 = *(int *)((long)plVar21 + 0x14); + lVar10 = uVar12 + (long)iVar17; + *(long **)(param_1 + 0x58) = plVar21; + plVar21[1] = (long)plVar21; + iVar15 = 0; + if (iVar23 != 0) { + iVar15 = iVar17 / iVar23; + } + *plVar21 = (long)plVar21; + plVar21[3] = lVar10; + plVar18 = plVar21; +LAB_00296f5c: + *(long *)(param_1 + 0x38) = lVar10; + *(long *)(param_1 + 0x30) = lVar10; + lVar10 = plVar18[3]; + } + else { + *(long *)(param_1 + 0x50) = plVar21[1]; + iVar23 = iVar4; +LAB_00296dac: + lVar10 = *plVar18; + *plVar21 = lVar10; + plVar21[1] = (long)plVar18; + *plVar18 = (long)plVar21; + iVar17 = *(int *)((long)plVar21 + 0x14); + plVar16 = (long *)*plVar21; + *(long **)(lVar10 + 8) = plVar21; + lVar10 = plVar21[3] + (long)iVar17; + plVar21[3] = lVar10; + iVar15 = 0; + if (iVar23 != 0) { + iVar15 = iVar17 / iVar23; + } + if (plVar21 == plVar16) goto LAB_00296f5c; + *(long **)(param_1 + 0x58) = plVar21; + plVar18 = plVar21; + } + *(undefined4 *)(plVar21 + 2) = 0; + iVar23 = 0; + while( true ) { + *(int *)(plVar21 + 2) = iVar15 + iVar23; + plVar21 = (long *)plVar21[1]; + if (plVar21 == plVar18) break; + iVar23 = (int)plVar21[2]; + } + *(undefined4 *)((long)plVar18 + 0x14) = 0; + iVar15 = 0; + iVar23 = (int)plVar18[2]; + iVar17 = 1; + } + else { + iVar15 = *(int *)((long)plVar18 + 0x14); + lVar10 = plVar18[3]; + iVar17 = iVar15 + 1; + } + sVar22 = (size_t)iVar4; + iVar19 = iVar23 + -1; + pvVar11 = (void *)(lVar10 - sVar22); + *(int *)((long)plVar18 + 0x14) = iVar17; + *(int *)(plVar18 + 2) = iVar19; + plVar18[3] = (long)pvVar11; + while (iVar15 < (int)uVar2) { + plVar21 = (long *)plVar18[1]; + memmove(pvVar11,(void *)((long)pvVar11 + sVar22),(long)(iVar4 * iVar17 - iVar4)); + memcpy((void *)(plVar18[3] + ((long)(iVar4 * iVar17) - sVar22)),(void *)plVar21[3],sVar22); + iVar19 = (int)plVar21[2]; + iVar17 = *(int *)((long)plVar21 + 0x14); + pvVar11 = (void *)plVar21[3]; + plVar18 = plVar21; + iVar15 = (iVar19 - iVar23) + iVar17; + } + iVar23 = ((uVar2 - iVar19) + iVar23) * iVar4; + memmove(pvVar11,(void *)((long)pvVar11 + sVar22),(long)(iVar23 - iVar4)); + pvVar11 = (void *)(plVar18[3] + ((long)iVar23 - sVar22)); + if (param_3 != (void *)0x0) { + pvVar11 = memcpy(pvVar11,param_3,sVar22); + } +LAB_00296c0c: + *(uint *)(param_1 + 0x28) = uVar3 + 1; + return pvVar11; +} + + +================================================================== + +### FUNC 002971a4 (1024 bytes) name=cvSeqRemove + +void cvSeqRemove(long param_1,int param_2) + +{ + bool bVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + undefined4 uVar9; + char cVar10; + void *pvVar11; + char *pcVar12; + long *plVar13; + long lVar14; + long lVar15; + long lVar16; + void *__src; + long *plVar17; + long *plVar18; + int iVar19; + size_t sVar20; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSeqRemove(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x561); + cv::String::deallocate((String *)&local_10); + } + uVar4 = *(uint *)(param_1 + 0x28); + uVar2 = uVar4; + if (-1 < param_2) { + uVar2 = 0; + } + uVar3 = uVar4; + if ((int)(uVar2 + param_2) < (int)uVar4) { + uVar3 = 0; + } + uVar3 = (uVar2 + param_2) - uVar3; + if (uVar4 <= uVar3) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0xd); + cVar10 = s_Invalid_index_004643d0[0xc]; + uVar9 = s_Invalid_index_004643d0._8_4_; + *(undefined8 *)pcVar12 = s_Invalid_index_004643d0._0_8_; + *(undefined4 *)(pcVar12 + 8) = uVar9; + pcVar12[0xc] = cVar10; + cv::error(-0xd3,(String *)&local_10,"void cvSeqRemove(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x569); + cv::String::deallocate((String *)&local_10); + } + uVar2 = uVar4 - 1; + if (uVar2 == uVar3) { + cvSeqPop(param_1,0); + } + else { + if (uVar3 == 0) { + cvSeqPopFront(param_1,0); + return; + } + plVar13 = *(long **)(param_1 + 0x58); + iVar5 = *(int *)(param_1 + 0x2c); + iVar7 = (int)plVar13[2]; + iVar6 = *(int *)((long)plVar13 + 0x14); + plVar17 = plVar13; + iVar8 = iVar7; + iVar19 = iVar6; + while (iVar19 <= (int)uVar3) { + plVar17 = (long *)plVar17[1]; + iVar8 = (int)plVar17[2]; + iVar6 = *(int *)((long)plVar17 + 0x14); + iVar19 = (iVar8 - iVar7) + iVar6; + } + bVar1 = (int)uVar3 < (int)uVar4 >> 1; + __src = (void *)plVar17[3]; + iVar19 = ((uVar3 - iVar8) + iVar7) * iVar5; + pvVar11 = (void *)((long)__src + (long)iVar19); + if (bVar1) { + sVar20 = (size_t)iVar5; + iVar19 = ((int)pvVar11 + iVar5) - (int)__src; + plVar18 = plVar17; + if (plVar13 != plVar17) { + do { + plVar17 = (long *)*plVar18; + memmove((void *)((long)__src + sVar20),__src,(long)(iVar19 - iVar5)); + iVar19 = iVar5 * *(int *)((long)plVar17 + 0x14); + memcpy((void *)plVar18[3],(void *)(plVar17[3] + ((long)iVar19 - sVar20)),sVar20); + __src = (void *)plVar17[3]; + plVar18 = plVar17; + } while (*(long **)(param_1 + 0x58) != plVar17); + } + memmove((void *)((long)__src + sVar20),__src,(long)(iVar19 - iVar5)); + plVar17[3] = plVar17[3] + sVar20; + *(int *)(plVar17 + 2) = (int)plVar17[2] + 1; + iVar19 = *(int *)((long)plVar17 + 0x14) + -1; + *(uint *)(param_1 + 0x28) = uVar2; + *(int *)((long)plVar17 + 0x14) = iVar19; + } + else { + sVar20 = (size_t)iVar5; + iVar19 = iVar5 * iVar6 - iVar19; + if (plVar17 != (long *)*plVar13) { + do { + plVar17 = (long *)plVar17[1]; + pvVar11 = memmove(pvVar11,(void *)((long)pvVar11 + sVar20),(long)(iVar19 - iVar5)); + memcpy((void *)((long)pvVar11 + ((long)iVar19 - sVar20)),(void *)plVar17[3],sVar20); + pvVar11 = (void *)plVar17[3]; + iVar19 = iVar5 * *(int *)((long)plVar17 + 0x14); + } while ((long *)**(undefined8 **)(param_1 + 0x58) != plVar17); + } + memmove(pvVar11,(void *)((long)pvVar11 + sVar20),(long)(iVar19 - iVar5)); + iVar19 = *(int *)((long)plVar17 + 0x14); + *(uint *)(param_1 + 0x28) = uVar2; + *(size_t *)(param_1 + 0x38) = *(long *)(param_1 + 0x38) - sVar20; + iVar19 = iVar19 + -1; + *(int *)((long)plVar17 + 0x14) = iVar19; + } + if (iVar19 == 0) { + plVar13 = *(long **)(param_1 + 0x58); + plVar17 = (long *)*plVar13; + if (plVar13 == plVar17) { + lVar15 = *(long *)(param_1 + 0x30); + iVar19 = ((int)lVar15 - (int)plVar17[3]) + *(int *)(plVar17 + 2) * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar17 + 0x14) = iVar19; + plVar17[3] = lVar15 - iVar19; + *(undefined8 *)(param_1 + 0x58) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + if (bVar1) { + iVar19 = (int)plVar13[2]; + iVar5 = iVar19 * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar13 + 0x14) = iVar5; + plVar13[3] = plVar13[3] - (long)iVar5; + plVar17 = plVar13; + iVar5 = iVar19; + while( true ) { + *(int *)(plVar17 + 2) = iVar5 - iVar19; + plVar17 = (long *)plVar17[1]; + if (plVar13 == plVar17) break; + iVar5 = (int)plVar17[2]; + } + lVar16 = plVar17[1]; + lVar14 = *plVar17; + *(long *)(param_1 + 0x58) = lVar16; + } + else { + lVar14 = *plVar17; + *(int *)((long)plVar17 + 0x14) = + (int)*(undefined8 *)(param_1 + 0x30) - (int)*(undefined8 *)(param_1 + 0x38); + lVar16 = plVar17[1]; + lVar15 = *(long *)(lVar14 + 0x18) + + (long)(*(int *)(lVar14 + 0x14) * *(int *)(param_1 + 0x2c)); + *(long *)(param_1 + 0x38) = lVar15; + *(long *)(param_1 + 0x30) = lVar15; + } + *(long *)(lVar14 + 8) = lVar16; + *(long *)plVar17[1] = lVar14; + } + plVar17[1] = *(long *)(param_1 + 0x50); + *(long **)(param_1 + 0x50) = plVar17; + return; + } + } + return; +} + + +================================================================== + +### FUNC 002975cc (3336 bytes) name=cvSeqPushMulti + +void cvSeqPushMulti(long param_1,void *param_2,int param_3,int param_4) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + char cVar6; + undefined2 uVar7; + void *pvVar8; + long *plVar9; + char *pcVar10; + int iVar11; + int iVar12; + int iVar13; + long *plVar14; + int iVar15; + long lVar16; + long lVar17; + long lVar18; + long lVar19; + int iVar20; + long *plVar21; + long lVar22; + int iVar23; + long lVar24; + size_t __n; + void *__src; + undefined1 auStack_40 [16]; + undefined1 auStack_30 [16]; + undefined1 auStack_20 [16]; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar6 = s_NULL_sequence_pointer_004643e0[0x14]; + uVar3 = s_NULL_sequence_pointer_004643e0._8_8_; + uVar2 = s_NULL_sequence_pointer_004643e0._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_NULL_sequence_pointer_004643e0._16_4_; + pcVar10[0x14] = cVar6; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_10,"void cvSeqPushMulti(CvSeq*, const void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x5b2); + cv::String::deallocate((String *)&local_10); + } + if (param_3 < 0) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar7 = s_number_of_removed_elements_is_ne_004643f8._36_2_; + uVar5 = s_number_of_removed_elements_is_ne_004643f8._24_8_; + uVar4 = s_number_of_removed_elements_is_ne_004643f8._16_8_; + uVar3 = s_number_of_removed_elements_is_ne_004643f8._8_8_; + uVar2 = s_number_of_removed_elements_is_ne_004643f8._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s_number_of_removed_elements_is_ne_004643f8._32_4_; + *(undefined2 *)(pcVar10 + 0x24) = uVar7; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + *(undefined8 *)(pcVar10 + 0x10) = uVar4; + *(undefined8 *)(pcVar10 + 0x18) = uVar5; + cv::error(-0xc9,(String *)&local_10,"void cvSeqPushMulti(CvSeq*, const void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x5b4); + cv::String::deallocate((String *)&local_10); + } + iVar1 = *(int *)(param_1 + 0x2c); + if (param_4 == 0) { + if (0 < param_3) { + lVar19 = *(long *)(param_1 + 0x30); + lVar24 = (long)iVar1; +LAB_00297644: + pvVar8 = *(void **)(param_1 + 0x38); + lVar17 = 0; + if (lVar24 != 0) { + lVar17 = (lVar19 - (long)pvVar8) / lVar24; + } + if (param_3 < (int)lVar17) goto LAB_002976d8; +LAB_00297658: + iVar13 = (int)lVar17; + if (0 < iVar13) { + param_3 = param_3 - iVar13; + __src = param_2; + goto LAB_002976dc; + } + plVar9 = *(long **)(param_1 + 0x50); + if (plVar9 == (long *)0x0) goto LAB_00297738; +LAB_00297668: + *(long *)(param_1 + 0x50) = plVar9[1]; + plVar14 = *(long **)(param_1 + 0x58); + if (plVar14 == (long *)0x0) goto LAB_00297a68; +LAB_00297678: + lVar19 = *plVar14; + iVar13 = 0; + *plVar9 = lVar19; + plVar9[1] = (long)plVar14; + *plVar14 = (long)plVar9; + lVar17 = plVar9[3]; + plVar14 = (long *)*plVar9; + iVar20 = *(int *)((long)plVar9 + 0x14); + *(long **)(lVar19 + 8) = plVar9; + lVar19 = lVar17 + iVar20; + *(long *)(param_1 + 0x38) = lVar17; + *(long *)(param_1 + 0x30) = lVar19; + if (plVar9 != plVar14) { + iVar13 = (int)plVar14[2] + *(int *)((long)plVar14 + 0x14); + } + do { + *(int *)(plVar9 + 2) = iVar13; + *(undefined4 *)((long)plVar9 + 0x14) = 0; + pvVar8 = *(void **)(param_1 + 0x38); + lVar17 = 0; + if (lVar24 != 0) { + lVar17 = (lVar19 - (long)pvVar8) / lVar24; + } + if ((int)lVar17 <= param_3) goto LAB_00297658; +LAB_002976d8: + __src = param_2; + iVar13 = param_3; + param_3 = 0; +LAB_002976dc: + iVar20 = *(int *)(param_1 + 0x28); + *(int *)(**(long **)(param_1 + 0x58) + 0x14) = + *(int *)(**(long **)(param_1 + 0x58) + 0x14) + iVar13; + *(int *)(param_1 + 0x28) = iVar20 + iVar13; + __n = (size_t)(iVar13 * iVar1); + param_2 = __src; + if (__src != (void *)0x0) { + param_2 = (void *)((long)__src + __n); + memcpy(pvVar8,__src,__n); + pvVar8 = *(void **)(param_1 + 0x38); + } + *(size_t *)(param_1 + 0x38) = (long)pvVar8 + __n; + if (param_3 < 1) { + return; + } + plVar9 = *(long **)(param_1 + 0x50); + if (plVar9 != (long *)0x0) goto LAB_00297668; +LAB_00297738: + iVar13 = *(int *)(param_1 + 0x40); + iVar20 = *(int *)(param_1 + 0x2c); + lVar17 = *(long *)(param_1 + 0x48); + if (iVar13 * 4 <= *(int *)(param_1 + 0x28)) { + cvSetSeqBlockSize(param_1,iVar13 << 1); + } + if (lVar17 == 0) { + local_10 = lVar17; + local_8 = lVar17; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar6 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar4 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar3 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar2 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar10[0x24] = cVar6; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + *(undefined8 *)(pcVar10 + 0x10) = uVar4; + *(undefined8 *)(pcVar10 + 0x18) = uVar5; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar15 = *(int *)(lVar17 + 0x20); + lVar18 = *(long *)(lVar17 + 0x10); + iVar23 = *(int *)(lVar17 + 0x24); + if (((ulong)((lVar18 + ((long)iVar15 - (long)iVar23)) - *(long *)(param_1 + 0x30)) < 8) && + (*(int *)(param_1 + 0x2c) <= iVar23)) { + iVar11 = 0; + if (iVar20 != 0) { + iVar11 = iVar23 / iVar20; + } + if (iVar13 < iVar11) { + iVar11 = iVar13; + } + lVar19 = *(long *)(param_1 + 0x30) + (long)(iVar11 * iVar20); + *(long *)(param_1 + 0x30) = lVar19; + *(uint *)(lVar17 + 0x24) = ((int)lVar18 + iVar15) - (int)lVar19 & 0xfffffff8; + goto LAB_00297644; + } + iVar11 = iVar20 * iVar13 + 0x20; + if (iVar23 < iVar11) { + iVar12 = 1; + if (5 < iVar13) { + iVar12 = iVar13 / 3; + } + if (iVar23 < iVar20 * iVar12 + 0x28) { + if ((lVar18 == 0) || (plVar9 = *(long **)(lVar18 + 8), plVar9 == (long *)0x0)) { + lVar19 = *(long *)(lVar17 + 0x18); + if (lVar19 == 0) { + plVar9 = (long *)cv::cvAlloc((long)iVar15); + } + else { + cvSaveMemStoragePos(lVar19,auStack_40); + if ((*(long *)(lVar19 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar19 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar18 = *(long *)(lVar19 + 0x18); + if (lVar18 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar19 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar18,auStack_30); + if ((*(long *)(lVar18 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar18 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar22 = *(long *)(lVar18 + 0x18); + if (lVar22 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar18 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar22,auStack_20); + if ((*(long *)(lVar22 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar22 + 0x10) + 8), plVar9 == (long *)0x0 + )) { + lVar16 = *(long *)(lVar22 + 0x18); + if (lVar16 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar22 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar16,&local_10); + FUN_00293a80(lVar16); + plVar9 = *(long **)(lVar16 + 0x10); + cvRestoreMemStoragePos(lVar16,&local_10); + plVar14 = *(long **)(lVar16 + 0x10); + if (plVar9 == plVar14) { + *(undefined8 *)(lVar16 + 8) = 0; + *(undefined8 *)(lVar16 + 0x10) = 0; + *(undefined4 *)(lVar16 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar14; + } + } + } + lVar16 = *(long *)(lVar22 + 0x10); + *plVar9 = lVar16; + plVar9[1] = 0; + if (lVar16 != 0) { + *(long **)(lVar16 + 8) = plVar9; + goto LAB_00297f7c; + } + *(long **)(lVar22 + 8) = plVar9; + *(long **)(lVar22 + 0x10) = plVar9; + } + else { +LAB_00297f7c: + *(long **)(lVar22 + 0x10) = plVar9; + } + *(int *)(lVar22 + 0x24) = *(int *)(lVar22 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar22,auStack_20); + plVar14 = *(long **)(lVar22 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar22 + 8) = 0; + *(undefined8 *)(lVar22 + 0x10) = 0; + *(undefined4 *)(lVar22 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar14; + } + } + } + lVar22 = *(long *)(lVar18 + 0x10); + *plVar9 = lVar22; + plVar9[1] = 0; + if (lVar22 != 0) { + *(long **)(lVar22 + 8) = plVar9; + goto LAB_00297ed4; + } + *(long **)(lVar18 + 8) = plVar9; + *(long **)(lVar18 + 0x10) = plVar9; + } + else { +LAB_00297ed4: + *(long **)(lVar18 + 0x10) = plVar9; + } + *(int *)(lVar18 + 0x24) = *(int *)(lVar18 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar18,auStack_30); + plVar14 = *(long **)(lVar18 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar18 + 8) = 0; + *(undefined8 *)(lVar18 + 0x10) = 0; + *(undefined4 *)(lVar18 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar14; + } + } + } + lVar18 = *(long *)(lVar19 + 0x10); + *plVar9 = lVar18; + plVar9[1] = 0; + if (lVar18 != 0) { + *(long **)(lVar18 + 8) = plVar9; + goto LAB_00297c7c; + } + *(long **)(lVar19 + 8) = plVar9; + *(long **)(lVar19 + 0x10) = plVar9; + } + else { +LAB_00297c7c: + *(long **)(lVar19 + 0x10) = plVar9; + } + *(int *)(lVar19 + 0x24) = *(int *)(lVar19 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar19,auStack_40); + plVar14 = *(long **)(lVar19 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar19 + 8) = 0; + *(undefined8 *)(lVar19 + 0x10) = 0; + *(undefined4 *)(lVar19 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((long *)plVar9[1] != (long *)0x0) { + *(long *)plVar9[1] = (long)plVar14; + } + } + } + lVar19 = *(long *)(lVar17 + 0x10); + *plVar9 = lVar19; + plVar9[1] = 0; + if (lVar19 != 0) { + *(long **)(lVar19 + 8) = plVar9; + iVar15 = *(int *)(lVar17 + 0x20); + goto LAB_00297c40; + } + *(long **)(lVar17 + 8) = plVar9; + *(long **)(lVar17 + 0x10) = plVar9; + iVar15 = *(int *)(lVar17 + 0x20); + } + else { +LAB_00297c40: + *(long **)(lVar17 + 0x10) = plVar9; + } + *(int *)(lVar17 + 0x24) = iVar15 + -0x10; + } + else { + iVar13 = *(int *)(param_1 + 0x2c); + iVar20 = 0; + if (iVar13 != 0) { + iVar20 = (iVar23 + -0x20) / iVar13; + } + iVar11 = iVar13 * iVar20 + 0x20; + } + } + plVar9 = (long *)cvMemStorageAlloc(lVar17,(long)iVar11); + plVar9[3] = (long)plVar9 + 0x27U & 0xfffffffffffffff8; + plVar14 = *(long **)(param_1 + 0x58); + plVar9[1] = 0; + *(int *)((long)plVar9 + 0x14) = iVar11 + -0x20; + *plVar9 = 0; + if (plVar14 != (long *)0x0) goto LAB_00297678; +LAB_00297a68: + lVar17 = plVar9[3]; + iVar13 = 0; + iVar20 = *(int *)((long)plVar9 + 0x14); + *(long **)(param_1 + 0x58) = plVar9; + plVar9[1] = (long)plVar9; + lVar19 = lVar17 + iVar20; + *plVar9 = (long)plVar9; + *(long *)(param_1 + 0x38) = lVar17; + *(long *)(param_1 + 0x30) = lVar19; + } while( true ); + } + } + else { + plVar9 = *(long **)(param_1 + 0x58); + while (0 < param_3) { + if ((plVar9 == (long *)0x0) || (iVar13 = (int)plVar9[2], iVar13 == 0)) { + plVar14 = *(long **)(param_1 + 0x50); + if (plVar14 == (long *)0x0) { + iVar13 = *(int *)(param_1 + 0x40); + iVar20 = *(int *)(param_1 + 0x2c); + lVar19 = *(long *)(param_1 + 0x48); + if (iVar13 * 4 <= *(int *)(param_1 + 0x28)) { + cvSetSeqBlockSize(param_1,iVar13 << 1); + } + if (lVar19 == 0) { + local_10 = lVar19; + local_8 = lVar19; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x25); + cVar6 = s_The_sequence_has_NULL_storage_po_00464338[0x24]; + uVar5 = s_The_sequence_has_NULL_storage_po_00464338._24_8_; + uVar4 = s_The_sequence_has_NULL_storage_po_00464338._16_8_; + uVar3 = s_The_sequence_has_NULL_storage_po_00464338._8_8_; + uVar2 = s_The_sequence_has_NULL_storage_po_00464338._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s_The_sequence_has_NULL_storage_po_00464338._32_4_; + pcVar10[0x24] = cVar6; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + *(undefined8 *)(pcVar10 + 0x10) = uVar4; + *(undefined8 *)(pcVar10 + 0x18) = uVar5; + cv::error(-0x1b,(String *)&local_10,"void icvGrowSeq(CvSeq*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x289); + cv::String::deallocate((String *)&local_10); + } + iVar15 = *(int *)(lVar19 + 0x24); + iVar23 = iVar20 * iVar13 + 0x20; + if (iVar15 < iVar23) { + iVar11 = 1; + if (5 < iVar13) { + iVar11 = iVar13 / 3; + } + if (iVar15 < iVar20 * iVar11 + 0x28) { + if ((*(long *)(lVar19 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar19 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar24 = *(long *)(lVar19 + 0x18); + if (lVar24 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar19 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar24,auStack_40); + if ((*(long *)(lVar24 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar24 + 0x10) + 8), plVar9 == (long *)0x0)) { + lVar17 = *(long *)(lVar24 + 0x18); + if (lVar17 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar24 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar17,auStack_30); + if ((*(long *)(lVar17 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar17 + 0x10) + 8), plVar9 == (long *)0x0)) + { + lVar18 = *(long *)(lVar17 + 0x18); + if (lVar18 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar17 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar18,auStack_20); + if ((*(long *)(lVar18 + 0x10) == 0) || + (plVar9 = *(long **)(*(long *)(lVar18 + 0x10) + 8), + plVar9 == (long *)0x0)) { + lVar22 = *(long *)(lVar18 + 0x18); + if (lVar22 == 0) { + plVar9 = (long *)cv::cvAlloc((long)*(int *)(lVar18 + 0x20)); + } + else { + cvSaveMemStoragePos(lVar22,&local_10); + FUN_00293a80(lVar22); + plVar9 = *(long **)(lVar22 + 0x10); + cvRestoreMemStoragePos(lVar22,&local_10); + plVar14 = *(long **)(lVar22 + 0x10); + if (plVar9 == plVar14) { + *(undefined8 *)(lVar22 + 8) = 0; + *(undefined8 *)(lVar22 + 0x10) = 0; + *(undefined4 *)(lVar22 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar14; + } + } + } + lVar22 = *(long *)(lVar18 + 0x10); + *plVar9 = lVar22; + plVar9[1] = 0; + if (lVar22 != 0) { + *(long **)(lVar22 + 8) = plVar9; + goto LAB_00298198; + } + *(long **)(lVar18 + 8) = plVar9; + *(long **)(lVar18 + 0x10) = plVar9; + } + else { +LAB_00298198: + *(long **)(lVar18 + 0x10) = plVar9; + } + *(int *)(lVar18 + 0x24) = *(int *)(lVar18 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar18,auStack_20); + plVar14 = *(long **)(lVar18 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar18 + 8) = 0; + *(undefined8 *)(lVar18 + 0x10) = 0; + *(undefined4 *)(lVar18 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar14; + } + } + } + lVar18 = *(long *)(lVar17 + 0x10); + *plVar9 = lVar18; + plVar9[1] = 0; + if (lVar18 != 0) { + *(long **)(lVar18 + 8) = plVar9; + goto LAB_00297dd8; + } + *(long **)(lVar17 + 8) = plVar9; + *(long **)(lVar17 + 0x10) = plVar9; + } + else { +LAB_00297dd8: + *(long **)(lVar17 + 0x10) = plVar9; + } + *(int *)(lVar17 + 0x24) = *(int *)(lVar17 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar17,auStack_30); + plVar14 = *(long **)(lVar17 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar17 + 8) = 0; + *(undefined8 *)(lVar17 + 0x10) = 0; + *(undefined4 *)(lVar17 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((undefined8 *)plVar9[1] != (undefined8 *)0x0) { + *(undefined8 *)plVar9[1] = plVar14; + } + } + } + lVar17 = *(long *)(lVar24 + 0x10); + *plVar9 = lVar17; + plVar9[1] = 0; + if (lVar17 != 0) { + *(long **)(lVar17 + 8) = plVar9; + goto LAB_00297bd8; + } + *(long **)(lVar24 + 8) = plVar9; + *(long **)(lVar24 + 0x10) = plVar9; + } + else { +LAB_00297bd8: + *(long **)(lVar24 + 0x10) = plVar9; + } + *(int *)(lVar24 + 0x24) = *(int *)(lVar24 + 0x20) + -0x10; + cvRestoreMemStoragePos(lVar24,auStack_40); + plVar14 = *(long **)(lVar24 + 0x10); + if (plVar14 == plVar9) { + *(undefined8 *)(lVar24 + 8) = 0; + *(undefined8 *)(lVar24 + 0x10) = 0; + *(undefined4 *)(lVar24 + 0x24) = 0; + } + else { + plVar14[1] = plVar9[1]; + if ((long *)plVar9[1] != (long *)0x0) { + *(long *)plVar9[1] = (long)plVar14; + } + } + } + lVar24 = *(long *)(lVar19 + 0x10); + *plVar9 = lVar24; + plVar9[1] = 0; + if (lVar24 != 0) { + *(long **)(lVar24 + 8) = plVar9; + goto LAB_00297b98; + } + *(long **)(lVar19 + 8) = plVar9; + *(long **)(lVar19 + 0x10) = plVar9; + } + else { +LAB_00297b98: + *(long **)(lVar19 + 0x10) = plVar9; + } + *(int *)(lVar19 + 0x24) = *(int *)(lVar19 + 0x20) + -0x10; + } + else { + iVar13 = *(int *)(param_1 + 0x2c); + iVar20 = 0; + if (iVar13 != 0) { + iVar20 = (iVar15 + -0x20) / iVar13; + } + iVar23 = iVar13 * iVar20 + 0x20; + } + } + plVar14 = (long *)cvMemStorageAlloc(lVar19,(long)iVar23); + *(int *)((long)plVar14 + 0x14) = iVar23 + -0x20; + plVar14[3] = (long)plVar14 + 0x27U & 0xfffffffffffffff8; + plVar14[1] = 0; + *plVar14 = 0; + } + else { + *(long *)(param_1 + 0x50) = plVar14[1]; + } + plVar9 = *(long **)(param_1 + 0x58); + if (plVar9 == (long *)0x0) { + iVar13 = *(int *)((long)plVar14 + 0x14); + lVar19 = plVar14[3] + (long)iVar13; + *(long **)(param_1 + 0x58) = plVar14; + iVar20 = 0; + if (*(int *)(param_1 + 0x2c) != 0) { + iVar20 = iVar13 / *(int *)(param_1 + 0x2c); + } + plVar14[1] = (long)plVar14; + *plVar14 = (long)plVar14; + plVar14[3] = lVar19; + plVar9 = plVar14; +LAB_0029792c: + *(long *)(param_1 + 0x38) = lVar19; + *(long *)(param_1 + 0x30) = lVar19; + lVar19 = plVar9[3]; + } + else { + lVar19 = *plVar9; + *plVar14 = lVar19; + plVar14[1] = (long)plVar9; + *plVar9 = (long)plVar14; + iVar13 = *(int *)((long)plVar14 + 0x14); + plVar21 = (long *)*plVar14; + iVar23 = *(int *)(param_1 + 0x2c); + *(long **)(lVar19 + 8) = plVar14; + lVar19 = plVar14[3] + (long)iVar13; + plVar14[3] = lVar19; + iVar20 = 0; + if (iVar23 != 0) { + iVar20 = iVar13 / iVar23; + } + if (plVar14 == plVar21) goto LAB_0029792c; + *(long **)(param_1 + 0x58) = plVar14; + plVar9 = plVar14; + } + *(undefined4 *)(plVar14 + 2) = 0; + iVar13 = 0; + while( true ) { + *(int *)(plVar14 + 2) = iVar20 + iVar13; + plVar14 = (long *)plVar14[1]; + if (plVar14 == plVar9) break; + iVar13 = (int)plVar14[2]; + } + *(undefined4 *)((long)plVar9 + 0x14) = 0; + iVar20 = 0; + iVar13 = (int)plVar9[2]; + } + else { + iVar20 = *(int *)((long)plVar9 + 0x14); + lVar19 = plVar9[3]; + } + iVar15 = *(int *)(param_1 + 0x28); + iVar23 = iVar13; + if (param_3 < iVar13) { + iVar23 = param_3; + } + *(int *)(plVar9 + 2) = iVar13 - iVar23; + *(int *)((long)plVar9 + 0x14) = iVar23 + iVar20; + param_3 = param_3 - iVar23; + *(int *)(param_1 + 0x28) = iVar15 + iVar23; + pvVar8 = (void *)(lVar19 - iVar1 * iVar23); + plVar9[3] = (long)pvVar8; + if (param_2 != (void *)0x0) { + memcpy(pvVar8,(void *)((long)param_2 + (long)(param_3 * iVar1)),(long)(iVar1 * iVar23)); + } + } + } + return; +} + + +================================================================== + +### FUNC 00298324 (892 bytes) name=cvSeqPopMulti + +void cvSeqPopMulti(long param_1,void *param_2,int param_3,int param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + char cVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + int iVar10; + long lVar11; + char *pcVar12; + long lVar13; + long *plVar14; + long *plVar15; + long lVar16; + long *plVar17; + size_t sVar18; + void *pvVar19; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar6 = s_NULL_sequence_pointer_004643e0[0x14]; + uVar5 = s_NULL_sequence_pointer_004643e0._8_8_; + uVar4 = s_NULL_sequence_pointer_004643e0._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s_NULL_sequence_pointer_004643e0._16_4_; + pcVar12[0x14] = cVar6; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + cv::error(-0x1b,(String *)&local_10,"void cvSeqPopMulti(CvSeq*, void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x5f7); + cv::String::deallocate((String *)&local_10); + } + if (param_3 < 0) { + local_10 = 0; + local_8 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x26); + uVar9 = s_number_of_removed_elements_is_ne_004643f8._36_2_; + uVar8 = s_number_of_removed_elements_is_ne_004643f8._24_8_; + uVar7 = s_number_of_removed_elements_is_ne_004643f8._16_8_; + uVar5 = s_number_of_removed_elements_is_ne_004643f8._8_8_; + uVar4 = s_number_of_removed_elements_is_ne_004643f8._0_8_; + *(undefined4 *)(pcVar12 + 0x20) = s_number_of_removed_elements_is_ne_004643f8._32_4_; + *(undefined2 *)(pcVar12 + 0x24) = uVar9; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + cv::error(-0xc9,(String *)&local_10,"void cvSeqPopMulti(CvSeq*, void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x5f9); + cv::String::deallocate((String *)&local_10); + } + iVar1 = *(int *)(param_1 + 0x28); + if (iVar1 < param_3) { + param_3 = iVar1; + } + if (param_4 == 0) { + if (param_2 != (void *)0x0) { + param_2 = (void *)((long)param_2 + (long)(param_3 * *(int *)(param_1 + 0x2c))); + } + if (0 < param_3) { + while( true ) { + plVar15 = *(long **)(param_1 + 0x58); + iVar2 = *(int *)(param_1 + 0x2c); + lVar11 = *(long *)(param_1 + 0x38); + plVar14 = (long *)*plVar15; + iVar10 = *(int *)((long)plVar14 + 0x14); + iVar3 = param_3; + if (iVar10 < param_3) { + iVar3 = iVar10; + } + iVar10 = iVar10 - iVar3; + *(int *)((long)plVar14 + 0x14) = iVar10; + param_3 = param_3 - iVar3; + *(int *)(param_1 + 0x28) = iVar1 - iVar3; + sVar18 = (size_t)(iVar3 * iVar2); + lVar13 = -sVar18; + pvVar19 = (void *)(lVar11 + lVar13); + *(void **)(param_1 + 0x38) = pvVar19; + if (param_2 != (void *)0x0) { + param_2 = (void *)((long)param_2 + lVar13); + memcpy(param_2,pvVar19,sVar18); + plVar15 = *(long **)(param_1 + 0x58); + plVar14 = (long *)*plVar15; + iVar10 = *(int *)((long)plVar14 + 0x14); + } + if (iVar10 == 0) { + if (plVar15 == plVar14) { + lVar11 = *(long *)(param_1 + 0x30); + iVar1 = ((int)lVar11 - (int)plVar14[3]) + (int)plVar14[2] * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar14 + 0x14) = iVar1; + plVar14[3] = lVar11 - iVar1; + *(undefined8 *)(param_1 + 0x58) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + /* try { // try from 00298694 to 00398733 has its CatchHandler @ 00298640 */ + *(undefined8 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + lVar13 = *plVar14; + *(int *)((long)plVar14 + 0x14) = + (int)*(undefined8 *)(param_1 + 0x30) - (int)*(undefined8 *)(param_1 + 0x38); + lVar16 = plVar14[1]; + lVar11 = *(long *)(lVar13 + 0x18) + + (long)(*(int *)(lVar13 + 0x14) * *(int *)(param_1 + 0x2c)); + *(long *)(param_1 + 0x38) = lVar11; + *(long *)(param_1 + 0x30) = lVar11; + *(long *)(lVar13 + 8) = lVar16; + *(long *)plVar14[1] = lVar13; + } + plVar14[1] = *(long *)(param_1 + 0x50); + *(long **)(param_1 + 0x50) = plVar14; + } + if (param_3 < 1) break; + iVar1 = *(int *)(param_1 + 0x28); + } + } + } + else if (0 < param_3) { + while( true ) { + plVar15 = *(long **)(param_1 + 0x58); + iVar2 = *(int *)(param_1 + 0x2c); + iVar10 = *(int *)((long)plVar15 + 0x14); + lVar11 = plVar15[2]; + iVar3 = param_3; + if (iVar10 < param_3) { + iVar3 = iVar10; + } + iVar10 = iVar10 - iVar3; + *(int *)((long)plVar15 + 0x14) = iVar10; + *(int *)(param_1 + 0x28) = iVar1 - iVar3; + param_3 = param_3 - iVar3; + *(int *)(plVar15 + 2) = (int)lVar11 + iVar3; + sVar18 = (size_t)(iVar3 * iVar2); + pvVar19 = param_2; + if (param_2 != (void *)0x0) { + pvVar19 = (void *)((long)param_2 + sVar18); + memcpy(param_2,(void *)plVar15[3],sVar18); + plVar15 = *(long **)(param_1 + 0x58); + iVar10 = *(int *)((long)plVar15 + 0x14); + } + lVar11 = plVar15[3] + sVar18; + plVar15[3] = lVar11; + if (iVar10 == 0) { + plVar14 = (long *)*plVar15; + if (plVar14 == plVar15) { + lVar13 = *(long *)(param_1 + 0x30); + /* catch() { ... } // from try @ 00298694 with catch @ 00298640 + catch() { ... } // from try @ 00298784 with catch @ 00298640 + catch() { ... } // from try @ 00299ba0 with catch @ 00298640 + catch() { ... } // from try @ 00299db8 with catch @ 00298640 + catch() { ... } // from try @ 00299ddc with catch @ 00298640 + catch() { ... } // from try @ 0029a08c with catch @ 00298640 + catch() { ... } // from try @ 0029a0b8 with catch @ 00298640 + catch() { ... } // from try @ 0029a0cc with catch @ 00298640 + catch() { ... } // from try @ 0029a160 with catch @ 00298640 */ + iVar1 = ((int)lVar13 - (int)lVar11) + (int)plVar15[2] * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar15 + 0x14) = iVar1; + plVar15[3] = lVar13 - iVar1; + *(undefined8 *)(param_1 + 0x58) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + iVar1 = (int)plVar15[2]; + iVar3 = iVar1 * *(int *)(param_1 + 0x2c); + *(int *)((long)plVar15 + 0x14) = iVar3; + plVar15[3] = lVar11 - iVar3; + plVar17 = plVar15; + iVar3 = iVar1; + while( true ) { + *(int *)(plVar17 + 2) = iVar3 - iVar1; + plVar17 = (long *)plVar17[1]; + if (plVar17 == plVar15) break; + iVar3 = (int)plVar17[2]; + } + lVar11 = plVar15[1]; + *(long *)(param_1 + 0x58) = lVar11; + plVar14[1] = lVar11; + *(long **)plVar15[1] = plVar14; + } + plVar15[1] = *(long *)(param_1 + 0x50); + *(long **)(param_1 + 0x50) = plVar15; + } + if (param_3 < 1) break; + iVar1 = *(int *)(param_1 + 0x28); + param_2 = pvVar19; + } + } + return; +} + + +================================================================== + +### FUNC 002986c8 (124 bytes) name=cvClearSeq + +void cvClearSeq(long param_1) + +{ + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvClearSeq(CvSeq*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x63b); + cv::String::deallocate((String *)&local_10); + } + cvSeqPopMulti(param_1,0,*(undefined4 *)(param_1 + 0x28),0); + return; +} + + +================================================================== + +### FUNC 00298758 (848 bytes) name=cvSeqSlice + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +long cvSeqSlice(uint *param_1,undefined8 param_2,long param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + long lVar11; + long *plVar12; + undefined8 *puVar13; + ulong uVar14; + long *plVar15; + long lVar16; + long *plVar17; + uint uVar18; + long local_40; + long local_38; + long local_30; + long local_28; + long local_18; + + uVar1 = (uint)param_2; + /* try { // try from 0029877c to 0039877f has its CatchHandler @ 0029a150 */ + /* try { // try from 00298784 to 003987bf has its CatchHandler @ 00298640 */ + if ((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42990000)) { + local_40 = 0; + local_38 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_40,0x17); + cVar7 = s_Invalid_sequence_header_00464420[0x16]; + uVar6 = s_Invalid_sequence_header_00464420._20_2_; + uVar5 = s_Invalid_sequence_header_00464420._8_8_; + uVar4 = s_Invalid_sequence_header_00464420._0_8_; + /* try { // try from 002987c4 to 003987e7 has its CatchHandler @ 0029a094 */ + *(undefined4 *)(pcVar10 + 0x10) = s_Invalid_sequence_header_00464420._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar6; + pcVar10[0x16] = cVar7; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + cv::error(-5,(String *)&local_40,"CvSeq* cvSeqSlice(const CvSeq*, CvSlice, CvMemStorage*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x649); + cv::String::deallocate((String *)&local_40); + } + if ((param_3 == 0) && (param_3 = *(long *)(param_1 + 0x12), param_3 == 0)) { + local_40 = param_3; + local_38 = param_3; + pcVar10 = (char *)cv::String::allocate((String *)&local_40,0x14); + uVar5 = s_NULL_storage_pointer_0043dfe8._8_8_; + uVar4 = s_NULL_storage_pointer_0043dfe8._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_NULL_storage_pointer_0043dfe8._16_4_; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + cv::error(-0x1b,(String *)&local_40, + "CvSeq* cvSeqSlice(const CvSeq*, CvSlice, CvMemStorage*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x64f); + cv::String::deallocate((String *)&local_40); + } + uVar2 = param_1[0xb]; + uVar8 = cvSliceLength(param_2,param_1); + if ((int)uVar1 < 0) { + uVar9 = param_1[10]; + uVar18 = uVar9 + uVar1; + } + else { + uVar9 = param_1[10]; + uVar18 = uVar1 - uVar9; + if ((int)uVar1 < (int)uVar9) { + uVar18 = uVar1; + } + } + if (uVar8 <= uVar9) { + if (uVar18 < uVar9) goto LAB_00298844; + if (uVar8 == 0) { + lVar11 = cvCreateSeq(*param_1,(long)(int)param_1[1],(long)(int)uVar2,param_3); + /* try { // try from 00298a9c to 00398a9f has its CatchHandler @ 0029a0d8 */ + return lVar11; + } + } + local_40 = 0; + local_38 = 0; + puVar13 = (undefined8 *)cv::String::allocate((String *)&local_40,0x12); + uVar5 = DAT_00464440; + uVar4 = DAT_00464438; + *(undefined2 *)(puVar13 + 2) = _LAB_00464448; + *puVar13 = uVar4; + puVar13[1] = uVar5; + cv::error(-0xd3,(String *)&local_40,"CvSeq* cvSeqSlice(const CvSeq*, CvSlice, CvMemStorage*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x65a); + cv::String::deallocate((String *)&local_40); +LAB_00298844: + lVar16 = (long)(int)uVar2; + /* try { // try from 00298854 to 00398857 has its CatchHandler @ 0029a174 */ + lVar11 = cvCreateSeq(*param_1,(long)(int)param_1[1],lVar16,param_3); + if (0 < (int)uVar8) { + cvStartReadSeq(param_1,&local_40,0); + cvSetSeqReaderPos(&local_40,uVar18,0); + uVar14 = 0; + if (lVar16 != 0) { + uVar14 = (local_18 - local_28) / lVar16; + } + if (param_4 == 0) { + plVar17 = (long *)0x0; + plVar15 = (long *)0x0; + do { + /* try { // try from 00298910 to 003989e7 has its CatchHandler @ 0029a164 */ + uVar1 = (uint)uVar14; + if ((int)uVar8 < (int)(uint)uVar14) { + uVar1 = uVar8; + } + plVar12 = (long *)cvMemStorageAlloc(param_3,0x20); + if (plVar17 == (long *)0x0) { + plVar12[1] = (long)plVar12; + *plVar12 = (long)plVar12; + *(long **)(lVar11 + 0x58) = plVar12; + *(undefined4 *)(plVar12 + 2) = 0; + plVar17 = plVar12; + } + else { + *plVar12 = (long)plVar15; + plVar12[1] = (long)plVar17; + *plVar17 = (long)plVar12; + /* try { // try from 002988b8 to 003988bb has its CatchHandler @ 0029a16c */ + plVar15[1] = (long)plVar12; + *(int *)(plVar12 + 2) = (int)plVar15[2] + *(int *)((long)plVar15 + 0x14); + } + plVar12[3] = local_28; + uVar8 = uVar8 - uVar1; + iVar3 = *(int *)(lVar11 + 0x28); + *(uint *)((long)plVar12 + 0x14) = uVar1; + *(uint *)(lVar11 + 0x28) = iVar3 + uVar1; + local_30 = *(long *)(local_30 + 8); + local_28 = *(long *)(local_30 + 0x18); + uVar14 = (ulong)*(uint *)(local_30 + 0x14); + plVar15 = plVar12; + } while (0 < (int)uVar8); + } + else { + do { + uVar1 = (uint)uVar14; + if ((int)uVar8 < (int)(uint)uVar14) { + uVar1 = uVar8; + } + uVar8 = uVar8 - uVar1; + cvSeqPushMulti(lVar11,local_28,uVar1,0); + local_30 = *(long *)(local_30 + 8); + local_28 = *(long *)(local_30 + 0x18); + uVar14 = (ulong)*(uint *)(local_30 + 0x14); + } while (0 < (int)uVar8); + } + } + return lVar11; +} + + +================================================================== + +### FUNC 00298ae4 (956 bytes) name=cvSeqRemoveSlice + +void cvSeqRemoveSlice(uint *param_1,undefined8 param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + char *pcVar11; + size_t sVar12; + uint uVar13; + int iVar14; + uint uVar15; + long lVar16; + undefined1 auStack_80 [24]; + void *local_68; + void *local_60; + void *local_58; + undefined8 local_40; + undefined8 local_38; + void *local_28; + void *local_20; + void *local_18; + + uVar15 = (uint)param_2; + if ((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42990000)) { + local_40 = 0; + local_38 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_40,0x17); + cVar7 = s_Invalid_sequence_header_00464420[0x16]; + uVar6 = s_Invalid_sequence_header_00464420._20_2_; + uVar5 = s_Invalid_sequence_header_00464420._8_8_; + uVar4 = s_Invalid_sequence_header_00464420._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_Invalid_sequence_header_00464420._16_4_; + *(undefined2 *)(pcVar11 + 0x14) = uVar6; + pcVar11[0x16] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + cv::error(-5,(String *)&local_40,"void cvSeqRemoveSlice(CvSeq*, CvSlice)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x692); + cv::String::deallocate((String *)&local_40); + } + iVar10 = cvSliceLength(param_2,param_1); + uVar2 = param_1[10]; + if ((int)uVar15 < 0) { + uVar13 = uVar2 + uVar15; + } + else { + uVar13 = uVar15 - uVar2; + if ((int)uVar15 < (int)uVar2) { + uVar13 = uVar15; + } + } + if (uVar2 <= uVar13) { + local_40 = 0; + local_38 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_40,0x21); + uVar9 = s_start_slice_index_is_out_of_rang_00464450._24_8_; + uVar8 = s_start_slice_index_is_out_of_rang_00464450._16_8_; + uVar5 = s_start_slice_index_is_out_of_rang_00464450._8_8_; + uVar4 = s_start_slice_index_is_out_of_rang_00464450._0_8_; + pcVar11[0x20] = s_start_slice_index_is_out_of_rang_00464450[0x20]; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar8; + *(undefined8 *)(pcVar11 + 0x18) = uVar9; + cv::error(-0xd3,(String *)&local_40,"void cvSeqRemoveSlice(CvSeq*, CvSlice)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x69d); + cv::String::deallocate((String *)&local_40); + } + iVar1 = iVar10 + uVar13; + if ((int)uVar2 <= iVar1) { + cvSeqPopMulti(param_1,0,uVar2 - uVar13,0); + cvSeqPopMulti(param_1,0,iVar1 - uVar2,1); + return; + } + uVar15 = param_1[0xb]; + cvStartReadSeq(param_1,auStack_80,0); + cvStartReadSeq(param_1,&local_40,0); + if ((int)(uVar2 - iVar1) < (int)uVar13) { + uVar2 = param_1[10]; + sVar12 = (size_t)(int)uVar15; + cvSetSeqReaderPos(auStack_80,uVar13,0); + iVar3 = uVar2 - iVar1; + iVar14 = 0; + cvSetSeqReaderPos(&local_40,iVar1); + if (0 < iVar3) { + do { + while( true ) { + memcpy(local_68,local_28,sVar12); + local_68 = (void *)((long)local_68 + sVar12); + if (local_68 < local_58) break; + cvChangeSeqBlock(auStack_80,1); + local_28 = (void *)((long)local_28 + sVar12); + if (local_28 < local_18) goto LAB_00298d90; +LAB_00298de8: + iVar14 = iVar14 + 1; + cvChangeSeqBlock(&local_40,1); + if (iVar14 == iVar3) goto LAB_00298e00; + } + local_28 = (void *)((long)local_28 + sVar12); + if (local_18 <= local_28) goto LAB_00298de8; +LAB_00298d90: + iVar14 = iVar14 + 1; + } while (iVar14 != iVar3); + } +LAB_00298e00: + cvSeqPopMulti(param_1,0,iVar10,0); + return; + } + cvSetSeqReaderPos(auStack_80,iVar1,0); + cvSetSeqReaderPos(&local_40,uVar13,0); + if (0 < (int)uVar13) { + sVar12 = (size_t)(int)uVar15; + uVar15 = 0; + lVar16 = -sVar12; + do { + while (local_68 = (void *)((long)local_68 + lVar16), local_68 < local_60) { + cvChangeSeqBlock(auStack_80,0xffffffff); + local_28 = (void *)((long)local_28 + lVar16); + if (local_20 <= local_28) goto LAB_00298c4c; +LAB_00298ca0: + uVar15 = uVar15 + 1; + cvChangeSeqBlock(&local_40,0xffffffff); + memcpy(local_68,local_28,sVar12); + if (uVar15 == uVar13) goto LAB_00298cc8; + } + local_28 = (void *)((long)local_28 + lVar16); + if (local_28 < local_20) goto LAB_00298ca0; +LAB_00298c4c: + uVar15 = uVar15 + 1; + memcpy(local_68,local_28,sVar12); + } while (uVar15 != uVar13); + } +LAB_00298cc8: + cvSeqPopMulti(param_1,0,iVar10,1); + return; +} + + +================================================================== + +### FUNC 00298ec8 (1540 bytes) name=cvSeqInsertSlice + +void cvSeqInsertSlice(uint *param_1,int param_2,uint *param_3) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + undefined4 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + uint uVar12; + char *pcVar13; + ulong uVar14; + uint uVar15; + uint uVar16; + int iVar17; + long lVar18; + size_t sVar19; + undefined1 auStack_100 [32]; + undefined1 auStack_e0 [24]; + void *local_c8; + void *local_c0; + void *local_b8; + undefined8 local_a0; + undefined8 local_98; + void *local_88; + void *local_80; + void *local_78; + undefined8 local_60; + undefined8 local_58; + + if ((param_1 == (uint *)0x0) || ((*param_1 & 0xffff0000) != 0x42990000)) { + local_60 = 0; + local_58 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_60,0x23); + cVar7 = s_Invalid_destination_sequence_hea_00464478[0x22]; + uVar6 = s_Invalid_destination_sequence_hea_00464478._24_8_; + uVar5 = s_Invalid_destination_sequence_hea_00464478._16_8_; + uVar4 = s_Invalid_destination_sequence_hea_00464478._8_8_; + uVar3 = s_Invalid_destination_sequence_hea_00464478._0_8_; + *(undefined2 *)(pcVar13 + 0x20) = s_Invalid_destination_sequence_hea_00464478._32_2_; + pcVar13[0x22] = cVar7; + *(undefined8 *)pcVar13 = uVar3; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + cv::error(-5,(String *)&local_60,"void cvSeqInsertSlice(CvSeq*, int, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x6dc); + cv::String::deallocate((String *)&local_60); + } + if (param_3 == (uint *)0x0) { +LAB_00298f98: + local_60 = 0; + local_58 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_60,0x23); + cVar7 = s_Source_is_not_a_sequence_nor_mat_004644a0[0x22]; + uVar6 = s_Source_is_not_a_sequence_nor_mat_004644a0._24_8_; + uVar5 = s_Source_is_not_a_sequence_nor_mat_004644a0._16_8_; + uVar4 = s_Source_is_not_a_sequence_nor_mat_004644a0._8_8_; + uVar3 = s_Source_is_not_a_sequence_nor_mat_004644a0._0_8_; + *(undefined2 *)(pcVar13 + 0x20) = s_Source_is_not_a_sequence_nor_mat_004644a0._32_2_; + pcVar13[0x22] = cVar7; + *(undefined8 *)pcVar13 = uVar3; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + cv::error(-5,(String *)&local_60,"void cvSeqInsertSlice(CvSeq*, int, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x6e2); + cv::String::deallocate((String *)&local_60); + uVar12 = *param_3; + } + else { + uVar12 = *param_3; + if ((uVar12 & 0xffff0000) == 0x42990000) goto LAB_002990d8; + if (((((uVar12 & 0xffff0000) != 0x42420000) || ((int)param_3[9] < 1)) || ((int)param_3[8] < 1)) + || (*(long *)(param_3 + 6) == 0)) goto LAB_00298f98; + } + uVar14 = (ulong)uVar12; + if ((uVar12 >> 0xe & 1) == 0) { +LAB_00299024: + local_60 = 0; + local_58 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_60,0x2c); + uVar8 = s_The_source_array_must_be_1d_coni_004644c8._40_4_; + uVar6 = s_The_source_array_must_be_1d_coni_004644c8._24_8_; + uVar5 = s_The_source_array_must_be_1d_coni_004644c8._16_8_; + uVar4 = s_The_source_array_must_be_1d_coni_004644c8._8_8_; + uVar3 = s_The_source_array_must_be_1d_coni_004644c8._0_8_; + *(undefined8 *)(pcVar13 + 0x20) = s_The_source_array_must_be_1d_coni_004644c8._32_8_; + *(undefined4 *)(pcVar13 + 0x28) = uVar8; + *(undefined8 *)pcVar13 = uVar3; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + cv::error(-5,(String *)&local_60,"void cvSeqInsertSlice(CvSeq*, int, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x6e5); + cv::String::deallocate((String *)&local_60); + uVar14 = (ulong)*param_3; + uVar15 = param_3[9]; + uVar12 = param_3[8]; + } + else { + uVar12 = param_3[8]; + uVar15 = param_3[9]; + if ((uVar12 != 1) && (uVar15 != 1)) goto LAB_00299024; + } + param_3 = (uint *)cvMakeSeqHeaderForArray + (0,0x60,((uint)(uVar14 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar14 & 7) << 1)) & 3), + *(undefined8 *)(param_3 + 6),uVar15 + uVar12 + -1,(String *)&local_60 + ,auStack_100); +LAB_002990d8: + if (param_1[0xb] != param_3[0xb]) { + local_a0 = 0; + local_98 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_a0,0x3c); + uVar11 = s_Source_and_destination_sequence_e_004644f8._48_8_; + uVar10 = s_Source_and_destination_sequence_e_004644f8._40_8_; + uVar9 = s_Source_and_destination_sequence_e_004644f8._32_8_; + uVar6 = s_Source_and_destination_sequence_e_004644f8._24_8_; + uVar5 = s_Source_and_destination_sequence_e_004644f8._16_8_; + uVar4 = s_Source_and_destination_sequence_e_004644f8._8_8_; + uVar3 = s_Source_and_destination_sequence_e_004644f8._0_8_; + *(undefined4 *)(pcVar13 + 0x38) = s_Source_and_destination_sequence_e_004644f8._56_4_; + *(undefined8 *)(pcVar13 + 0x30) = uVar11; + *(undefined8 *)pcVar13 = uVar3; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + *(undefined8 *)(pcVar13 + 0x20) = uVar9; + *(undefined8 *)(pcVar13 + 0x28) = uVar10; + cv::error(-0xd1,(String *)&local_a0,"void cvSeqInsertSlice(CvSeq*, int, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x6ef); + cv::String::deallocate((String *)&local_a0); + } + uVar12 = param_3[10]; + if (uVar12 == 0) { + return; + } + uVar16 = param_1[10]; + uVar15 = uVar16; + if (-1 < param_2) { + uVar15 = 0; + } + uVar1 = uVar16; + if ((int)(uVar15 + param_2) <= (int)uVar16) { + uVar1 = 0; + } + uVar1 = (uVar15 + param_2) - uVar1; + if (uVar16 < uVar1) { + local_a0 = 0; + local_98 = 0; + cv::String::allocate((String *)&local_a0,0); + cv::error(-0xd3,(String *)&local_a0,"void cvSeqInsertSlice(CvSeq*, int, const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x6fb); + cv::String::deallocate((String *)&local_a0); + uVar15 = param_1[0xb]; + } + else { + uVar15 = param_1[0xb]; + } + if ((int)uVar1 < (int)uVar16 >> 1) { + uVar16 = 0; + cvSeqPushMulti(param_1,0,uVar12,1); + sVar19 = (size_t)(int)uVar15; + cvStartReadSeq(param_1,auStack_e0,0); + cvStartReadSeq(param_1,(String *)&local_a0,0); + cvSetSeqReaderPos((String *)&local_a0,uVar12,0); + if (0 < (int)uVar1) { + do { + memcpy(local_c8,local_88,sVar19); + local_c8 = (void *)((long)local_c8 + sVar19); + if (local_c8 < local_b8) { + local_88 = (void *)((long)local_88 + sVar19); + if (local_78 <= local_88) goto LAB_00299448; + } + else { + cvChangeSeqBlock(auStack_e0,1); + local_88 = (void *)((long)local_88 + sVar19); + if (local_78 <= local_88) { +LAB_00299448: + cvChangeSeqBlock((String *)&local_a0,1); + } + } + uVar16 = uVar16 + 1; + } while (uVar16 != uVar1); + } + } + else { + iVar2 = uVar16 - uVar1; + cvSeqPushMulti(param_1,0,uVar12,0); + cvStartReadSeq(param_1,auStack_e0,0); + cvStartReadSeq(param_1,(String *)&local_a0,0); + cvSetSeqReaderPos((String *)&local_a0,uVar16,0); + cvSetSeqReaderPos(auStack_e0,param_1[10],0); + if (0 < iVar2) { + sVar19 = (size_t)(int)uVar15; + iVar17 = 0; + lVar18 = -sVar19; + do { + while (local_c8 = (void *)((long)local_c8 + lVar18), local_c8 < local_c0) { + cvChangeSeqBlock(auStack_e0,0xffffffff); + local_88 = (void *)((long)local_88 + lVar18); + if (local_80 <= local_88) goto LAB_00299224; +LAB_00299278: + iVar17 = iVar17 + 1; + cvChangeSeqBlock((String *)&local_a0,0xffffffff); + memcpy(local_c8,local_88,sVar19); + if (iVar17 == iVar2) goto LAB_002992a0; + } + local_88 = (void *)((long)local_88 + lVar18); + if (local_88 < local_80) goto LAB_00299278; +LAB_00299224: + iVar17 = iVar17 + 1; + memcpy(local_c8,local_88,sVar19); + } while (iVar17 != iVar2); + } + } +LAB_002992a0: + uVar16 = 0; + sVar19 = (size_t)(int)uVar15; + cvStartReadSeq(param_3,(String *)&local_a0); + cvSetSeqReaderPos(auStack_e0,uVar1,0); + if (0 < (int)uVar12) { + do { + while( true ) { + memcpy(local_c8,local_88,sVar19); + local_c8 = (void *)((long)local_c8 + sVar19); + if (local_c8 < local_b8) break; + cvChangeSeqBlock(auStack_e0,1); + local_88 = (void *)((long)local_88 + sVar19); + if (local_88 < local_78) goto LAB_002992ec; +LAB_00299344: + uVar16 = uVar16 + 1; + cvChangeSeqBlock((String *)&local_a0,1); + if (uVar16 == uVar12) { + return; + } + } + local_88 = (void *)((long)local_88 + sVar19); + if (local_78 <= local_88) goto LAB_00299344; +LAB_002992ec: + uVar16 = uVar16 + 1; + } while (uVar16 != uVar12); + } + return; +} + + +================================================================== + +### FUNC 00299530 (4900 bytes) name=cvSeqSort + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvSeqSort(uint *param_1,code *param_2,undefined8 param_3) + +{ + uint uVar1; + undefined1 uVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + ulong uVar6; + ulong uVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + int iVar12; + int iVar13; + char *pcVar14; + long lVar15; + ulong uVar16; + undefined8 *puVar17; + long lVar18; + ulong uVar19; + long lVar20; + int iVar21; + uint uVar22; + ulong local_eb8; + ulong local_eb0; + undefined8 local_e00; + undefined8 uStack_df8; + code *local_df0; + ulong uStack_de8; + ulong local_de0; + ulong uStack_dd8; + undefined8 local_dd0; + undefined8 uStack_dc8; + undefined8 local_dc0; + undefined8 uStack_db8; + code *local_db0; + ulong uStack_da8; + ulong local_da0; + ulong uStack_d98; + undefined8 local_d90; + undefined8 uStack_d88; + undefined8 local_d80; + undefined8 uStack_d78; + code *local_d70; + ulong uStack_d68; + ulong local_d60; + ulong uStack_d58; + undefined8 local_d50; + undefined8 uStack_d48; + undefined8 local_d40; + undefined8 uStack_d38; + code *local_d30; + ulong uStack_d28; + ulong local_d20; + ulong uStack_d18; + undefined8 local_d10; + undefined8 uStack_d08; + undefined8 local_d00; + undefined8 uStack_cf8; + code *local_cf0; + ulong local_ce8; + ulong local_ce0; + ulong local_cd8; + undefined8 local_cd0; + undefined8 uStack_cc8; + undefined8 local_cc0; + undefined8 uStack_cb8; + code *local_cb0; + ulong local_ca8; + ulong local_ca0; + ulong uStack_c98; + undefined8 local_c90; + undefined8 uStack_c88; + undefined8 local_c80; + undefined8 uStack_c78; + code *local_c70; + ulong local_c68; + ulong local_c60; + ulong local_c58; + undefined8 local_c50; + undefined8 uStack_c48; + undefined8 local_c40; + undefined8 uStack_c38; + code *local_c30; + ulong local_c28; + ulong local_c20; + ulong local_c18; + undefined8 local_c10; + undefined8 uStack_c08; + code *local_c00; + ulong local_bf8 [3]; + code *local_be0; + ulong local_bd8 [379]; + + if (param_1 == (uint *)0x0) { + iVar8 = -0x1b; + } + else { + if ((*param_1 & 0xffff0000) == 0x42990000) goto LAB_002995ec; + iVar8 = -5; + } + local_c00 = (code *)0x0; + local_bf8[0] = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_c00,0x12); + uVar5 = s_Bad_input_sequence_00464538._8_8_; + uVar4 = s_Bad_input_sequence_00464538._0_8_; + *(undefined2 *)(pcVar14 + 0x10) = s_Bad_input_sequence_00464538._16_2_; + *(undefined8 *)pcVar14 = uVar4; + *(undefined8 *)(pcVar14 + 8) = uVar5; + cv::error(iVar8,(String *)&local_c00,"void cvSeqSort(CvSeq*, CvCmpFunc, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x77d); + cv::String::deallocate((String *)&local_c00); +LAB_002995ec: + if (param_2 == (code *)0x0) { + local_c00 = param_2; + local_bf8[0] = (ulong)param_2; + puVar17 = (undefined8 *)cv::String::allocate((String *)&local_c00,0x15); + uVar2 = LAB_00464564; + uVar5 = _LAB_00464558; + uVar4 = _DAT_00464550; + *(undefined4 *)(puVar17 + 2) = _LAB_00464560; + *(undefined1 *)((long)puVar17 + 0x14) = uVar2; + *puVar17 = uVar4; + puVar17[1] = uVar5; + cv::error(-0x1b,(String *)&local_c00,"void cvSeqSort(CvSeq*, CvCmpFunc, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x780); + cv::String::deallocate((String *)&local_c00); + } + if ((int)param_1[10] < 2) { + return; + } + uVar1 = param_1[0xb]; + lVar18 = (long)(int)uVar1; + lVar20 = -lVar18; + cvStartReadSeq(param_1,&local_e00,0); + uStack_da8 = uStack_de8 + lVar20; + local_db0 = local_df0; + local_c00 = local_df0; + local_bf8[0] = uStack_de8; + local_bf8[1] = local_de0; + local_bf8[2] = uStack_dd8; + local_dc0 = local_e00; + uStack_db8 = uStack_df8; + local_da0 = local_de0; + uStack_d98 = uStack_dd8; + local_d90 = local_dd0; + uStack_d88 = uStack_dc8; + if (uStack_da8 < local_de0) { + cvChangeSeqBlock(&local_dc0,0xffffffff); + } + uVar19 = 0; + local_be0 = local_db0; + local_bd8[0] = uStack_da8; + local_bd8[1] = local_da0; + local_bd8[2] = uStack_d98; +LAB_00299740: + uVar22 = (int)uVar19 - 1; + if (local_df0 == local_db0) goto LAB_00299f48; +LAB_002997c0: + iVar8 = cvGetSeqReaderPos(&local_dc0); + iVar9 = cvGetSeqReaderPos(&local_e00); + iVar8 = (iVar8 - iVar9) * uVar1; + do { + uVar19 = uStack_de8; + if ((int)(uVar1 + iVar8) <= (int)(uVar1 * 7)) { +LAB_0029a1d4: + local_c70 = local_df0; + /* catch() { ... } // from try @ 00299dcc with catch @ 0029a1e0 + catch() { ... } // from try @ 00299e9c with catch @ 0029a1e0 + catch() { ... } // from try @ 0029a18c with catch @ 0029a1e0 */ + local_c60 = local_de0; + local_c58 = uStack_dd8; + local_c68 = uStack_de8 + lVar18; + local_c40 = local_e00; + uStack_c38 = uStack_df8; + local_c30 = local_df0; + local_c28 = uStack_de8; + local_c20 = local_de0; + local_c18 = uStack_dd8; + /* catch() { ... } // from try @ 0029a250 with catch @ 0029a210 + catch() { ... } // from try @ 0029a42c with catch @ 0029a210 + catch() { ... } // from try @ 0029a510 with catch @ 0029a210 */ + local_c10 = local_dd0; + uStack_c08 = uStack_dc8; + local_c80 = local_e00; + uStack_c78 = uStack_df8; + local_c50 = local_dd0; + uStack_c48 = uStack_dc8; + if (uStack_dd8 <= uStack_de8 + lVar18) { + cvChangeSeqBlock(&local_c80,1); + } + uStack_da8 = uStack_da8 + lVar18; + if (uStack_d98 <= uStack_da8) { + cvChangeSeqBlock(&local_dc0,1); + } + break; + } + iVar9 = 0; + if (uVar1 != 0) { + iVar9 = (int)(uVar1 + iVar8) / (int)uVar1; + } + local_d80 = local_e00; + uStack_d78 = uStack_df8; + local_d70 = local_df0; + uStack_d68 = uStack_de8; + local_d60 = local_de0; + uStack_d58 = uStack_dd8; + local_d50 = local_dd0; + uStack_d48 = uStack_dc8; + local_c80 = local_e00; + uStack_c78 = uStack_df8; + local_c70 = local_df0; + local_c68 = uStack_de8; + local_c60 = local_de0; + local_c58 = uStack_dd8; + local_c50 = local_dd0; + uStack_c48 = uStack_dc8; + local_cc0 = local_dc0; + uStack_cb8 = uStack_db8; + local_cb0 = local_db0; + local_ca8 = uStack_da8; + local_ca0 = local_da0; + uStack_c98 = uStack_d98; + local_c90 = local_d90; + uStack_c88 = uStack_d88; + local_d40 = local_dc0; + uStack_d38 = uStack_db8; + local_d30 = local_db0; + uStack_d28 = uStack_da8; + local_d20 = local_da0; + uStack_d18 = uStack_d98; + local_d10 = local_d90; + uStack_d08 = uStack_d88; + if (iVar9 < 0x29) { + local_eb8 = uStack_de8; + cvSetSeqReaderPos(&local_c80,iVar9 / 2,1); + uVar16 = local_c68; + cvSetSeqReaderPos(&local_c80,(iVar9 + -1) - iVar9 / 2,1); + local_eb0 = local_c68; + iVar8 = (*param_2)(uVar19,uVar16,param_3); + if (iVar8 < 0) goto LAB_0029a3b4; +LAB_002999f8: + iVar8 = (*param_2)(uVar16,local_eb0,param_3); + if ((iVar8 < 1) && + (iVar8 = (*param_2)(local_eb8,local_eb0,param_3), uVar16 = local_eb8, -1 < iVar8)) { + uVar16 = local_eb0; + } + } + else { + iVar21 = iVar9 >> 3; + cvSetSeqReaderPos(&local_c80,iVar21,1); + uVar16 = local_c68; + local_eb8 = local_c68; + cvSetSeqReaderPos(&local_c80,iVar21,1); + uVar6 = local_c68; + iVar8 = (*param_2)(uVar19,uVar16,param_3); + if (iVar8 < 0) { + iVar8 = (*param_2)(uVar16,uVar6,param_3); + if ((-1 < iVar8) && + (iVar8 = (*param_2)(uVar19,uVar6,param_3), local_eb8 = uVar6, -1 < iVar8)) { + local_eb8 = uVar19; + } + } + else { + iVar8 = (*param_2)(uVar16,uVar6,param_3); + if ((iVar8 < 1) && + (iVar8 = (*param_2)(uVar19,uVar6,param_3), local_eb8 = uVar19, -1 < iVar8)) { + local_eb8 = uVar6; + } + } + cvSetSeqReaderPos(&local_c80,iVar21 * -3 + (iVar9 >> 1),1); + uVar19 = local_c68; + cvSetSeqReaderPos(&local_c80,iVar21,1); + uVar16 = local_c68; + cvSetSeqReaderPos(&local_c80,iVar21,1); + uVar6 = local_c68; + iVar8 = (*param_2)(uVar19,uVar16,param_3); + if (iVar8 < 0) { + iVar8 = (*param_2)(uVar16,uVar6,param_3); + if ((-1 < iVar8) && (iVar8 = (*param_2)(uVar19,uVar6,param_3), uVar16 = uVar6, -1 < iVar8)) + { + uVar16 = uVar19; + } + } + else { + iVar8 = (*param_2)(uVar16,uVar6,param_3); + if ((iVar8 < 1) && (iVar8 = (*param_2)(uVar19,uVar6,param_3), uVar16 = uVar19, -1 < iVar8)) + { + uVar16 = uVar6; + } + } + cvSetSeqReaderPos(&local_c80,(iVar21 * -3 + iVar9 + -1) - iVar9 / 2,1); + uVar19 = local_c68; + cvSetSeqReaderPos(&local_c80,iVar21,1); + uVar6 = local_c68; + local_eb0 = local_c68; + cvSetSeqReaderPos(&local_c80,iVar21,1); + uVar7 = local_c68; + iVar8 = (*param_2)(uVar19,uVar6,param_3); + if (iVar8 < 0) { + iVar8 = (*param_2)(uVar6,uVar7,param_3); + if ((-1 < iVar8) && + (iVar8 = (*param_2)(uVar19,uVar7,param_3), local_eb0 = uVar7, -1 < iVar8)) { + local_eb0 = uVar19; + } + } + else { + iVar8 = (*param_2)(uVar6,uVar7,param_3); + if ((iVar8 < 1) && + (iVar8 = (*param_2)(uVar19,uVar7,param_3), local_eb0 = uVar19, -1 < iVar8)) { + local_eb0 = uVar7; + } + } + iVar8 = (*param_2)(local_eb8,uVar16,param_3); + if (-1 < iVar8) goto LAB_002999f8; +LAB_0029a3b4: + /* try { // try from 0029a3b8 to 0039a3bb has its CatchHandler @ 0029a4ec */ + iVar8 = (*param_2)(uVar16,local_eb0,param_3); + if ((-1 < iVar8) && + (iVar8 = (*param_2)(local_eb8,local_eb0,param_3), uVar16 = local_eb0, -1 < iVar8)) { + uVar16 = local_eb8; + } + } + local_df0 = local_d70; + local_e00 = local_d80; + uStack_df8 = uStack_d78; + /* try { // try from 00299a34 to 00399a37 has its CatchHandler @ 0029a16c */ + local_de0 = local_d60; + uStack_dd8 = uStack_d58; + local_dd0 = local_d50; + uStack_dc8 = uStack_d48; + uVar19 = uVar16; + if ((uStack_d68 != uVar16) && (uVar19 = uStack_d68, 0 < (int)uVar1)) { + lVar15 = 0; + do { + uVar2 = *(undefined1 *)(uVar16 + lVar15); + *(undefined1 *)(uVar16 + lVar15) = *(undefined1 *)(uStack_d68 + lVar15); + *(undefined1 *)(uStack_d68 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + uStack_de8 = uVar19 + lVar18; + if (uStack_d58 <= uStack_de8) { + cvChangeSeqBlock(&local_e00,1); + } + bVar3 = false; + /* try { // try from 00299aa8 to 00399aab has its CatchHandler @ 0029a174 */ + local_d00 = local_e00; + uStack_cf8 = uStack_df8; + local_cf0 = local_df0; + local_ce8 = uStack_de8; + local_ce0 = local_de0; + local_cd8 = uStack_dd8; + local_cd0 = local_dd0; + uStack_cc8 = uStack_dc8; +LAB_00299abc: + while (uVar16 = uStack_de8, uStack_da8 != uStack_de8) { + iVar8 = (*param_2)(uStack_de8,uVar19,param_3); + uVar16 = uStack_da8; + if (0 < iVar8) break; + if (iVar8 == 0) { + uVar16 = uStack_de8; + if ((local_ce8 != uStack_de8) && (uVar16 = local_ce8, 0 < (int)uVar1)) { + lVar15 = 0; + do { + uVar2 = *(undefined1 *)(local_ce8 + lVar15); + *(undefined1 *)(local_ce8 + lVar15) = *(undefined1 *)(uStack_de8 + lVar15); + *(undefined1 *)(uStack_de8 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + /* try { // try from 0029a07c to 0039a07f has its CatchHandler @ 0029a094 */ + local_ce8 = uVar16 + lVar18; + /* try { // try from 0029a08c to 0039a08f has its CatchHandler @ 00298640 */ + bVar3 = true; + if (local_cd8 <= local_ce8) { + cvChangeSeqBlock(&local_d00); + bVar3 = true; + } + } + /* catch() { ... } // from try @ 002987c4 with catch @ 0029a094 + catch() { ... } // from try @ 00299b2c with catch @ 0029a094 + catch() { ... } // from try @ 00299de8 with catch @ 0029a094 + catch() { ... } // from try @ 0029a07c with catch @ 0029a094 */ + uStack_de8 = uStack_de8 + lVar18; + if (uStack_dd8 <= uStack_de8) { + /* try { // try from 0029a0b8 to 0039a0bb has its CatchHandler @ 00298640 */ + cvChangeSeqBlock(&local_e00,1); + /* catch() { ... } // from try @ 00299db0 with catch @ 0029a0bc */ + } + } + if (uStack_de8 != uVar16) { + while( true ) { + iVar8 = (*param_2)(uVar16,uVar19,param_3); + if (iVar8 < 0) break; + if (iVar8 == 0) { + uVar16 = uStack_da8; + if ((local_ca8 != uStack_da8) && (uVar16 = local_ca8, 0 < (int)uVar1)) { + lVar15 = 0; + do { + uVar2 = *(undefined1 *)(local_ca8 + lVar15); + *(undefined1 *)(local_ca8 + lVar15) = *(undefined1 *)(uStack_da8 + lVar15); + *(undefined1 *)(uStack_da8 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + local_ca8 = uVar16 + lVar20; + bVar3 = true; + if (local_ca8 < local_ca0) { + cvChangeSeqBlock(&local_cc0,0xffffffff); + bVar3 = true; + } + } + uStack_da8 = uStack_da8 + lVar20; + if (uStack_da8 < local_da0) { + cvChangeSeqBlock(&local_dc0,0xffffffff); + } + uVar16 = uStack_da8; + if (uStack_de8 == uStack_da8) goto LAB_00299b94; + } + uVar16 = uStack_da8; + if (uStack_de8 != uStack_da8) { + if (0 < (int)uVar1) { + lVar15 = 0; + do { + uVar2 = *(undefined1 *)(uStack_de8 + lVar15); + *(undefined1 *)(uStack_de8 + lVar15) = *(undefined1 *)(uStack_da8 + lVar15); + *(undefined1 *)(uStack_da8 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + uStack_de8 = uStack_de8 + lVar18; + if (uStack_dd8 <= uStack_de8) { + cvChangeSeqBlock(&local_e00,1); + } + uVar6 = uStack_da8; + uVar16 = uStack_de8; + uStack_da8 = uStack_da8 + lVar20; + if (uStack_da8 < local_da0) { + /* try { // try from 0029a0cc to 0039a0cf has its CatchHandler @ 00298640 */ + /* catch() { ... } // from try @ 00298a9c with catch @ 0029a0d8 */ + cvChangeSeqBlock(&local_dc0,0xffffffff); + } + if (uVar6 != uVar16) { + bVar3 = true; + goto LAB_00299abc; + } + goto LAB_00299bcc; + } + } +LAB_00299b94: + iVar8 = (*param_2)(uVar16,uVar19,param_3); + /* try { // try from 00299ba0 to 00399d6f has its CatchHandler @ 00298640 */ + if (iVar8 != 0) { + if (iVar8 < 1) { + uStack_de8 = uStack_de8 + lVar18; + if (uStack_de8 < uStack_dd8) goto LAB_00299bc4; + goto LAB_0029a57c; + } + uStack_da8 = uStack_da8 + lVar20; + if (uStack_da8 < local_da0) { + cvChangeSeqBlock(&local_dc0,0xffffffff); + } + goto LAB_00299bc4; + } + /* catch() { ... } // from try @ 0029a26c with catch @ 0029a4ec + catch() { ... } // from try @ 0029a3b8 with catch @ 0029a4ec + catch() { ... } // from try @ 0029a458 with catch @ 0029a4ec */ + if ((local_ce8 != uStack_de8) && (0 < (int)uVar1)) { + lVar15 = 0; + do { + /* catch() { ... } // from try @ 0029a2f8 with catch @ 0029a514 */ + uVar2 = *(undefined1 *)(local_ce8 + lVar15); + *(undefined1 *)(local_ce8 + lVar15) = *(undefined1 *)(uStack_de8 + lVar15); + *(undefined1 *)(uStack_de8 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + /* catch() { ... } // from try @ 0029a29c with catch @ 0029a544 + catch() { ... } // from try @ 0029a300 with catch @ 0029a544 */ + local_ce8 = local_ce8 + lVar18; + if (local_cd8 <= local_ce8) { + cvChangeSeqBlock(&local_d00,1); + } + uStack_de8 = uStack_de8 + lVar18; + if (uStack_dd8 <= uStack_de8) { + bVar3 = true; +LAB_0029a57c: + cvChangeSeqBlock(&local_e00,1); +LAB_00299bc4: + if (bVar3) goto LAB_00299bcc; + /* catch() { ... } // from try @ 002988b8 with catch @ 0029a16c + catch() { ... } // from try @ 00299a34 with catch @ 0029a16c + catch() { ... } // from try @ 00299e00 with catch @ 0029a16c */ + /* catch() { ... } // from try @ 00298854 with catch @ 0029a174 + catch() { ... } // from try @ 00299aa8 with catch @ 0029a174 + catch() { ... } // from try @ 00299df4 with catch @ 0029a174 */ + local_e00 = local_d80; + uStack_df8 = uStack_d78; + local_df0 = local_d70; + uStack_de8 = uStack_d68; + /* try { // try from 0029a18c to 0039a1df has its CatchHandler @ 0029a1e0 */ + local_de0 = local_d60; + uStack_dd8 = uStack_d58; + local_da0 = local_d20; + uStack_d98 = uStack_d18; + local_dd0 = local_d50; + uStack_dc8 = uStack_d48; + local_dc0 = local_d40; + uStack_db8 = uStack_d38; + local_db0 = local_d30; + uStack_da8 = uStack_d28; + local_d90 = local_d10; + uStack_d88 = uStack_d08; + goto LAB_0029a1d4; + } +LAB_00299bcc: + uVar10 = cvGetSeqReaderPos(&local_e00); + if (uVar10 == 0) { + uVar10 = param_1[10]; + } + iVar8 = cvGetSeqReaderPos(&local_d80); + uVar11 = cvGetSeqReaderPos(&local_d00); + if (uVar11 == 0) { + uVar11 = param_1[10]; + } + iVar21 = uVar10 - uVar11; + iVar9 = uVar11 - iVar8; + if (iVar21 < (int)(uVar11 - iVar8)) { + iVar9 = iVar21; + } + if (0 < iVar9) { + iVar8 = 0; + local_c40 = local_e00; + uStack_c38 = uStack_df8; + local_c30 = local_df0; + local_c28 = uStack_de8; + local_c20 = local_de0; + local_c18 = uStack_dd8; + local_c80 = local_d80; + uStack_c78 = uStack_d78; + local_c70 = local_d70; + local_c68 = uStack_d68; + local_c60 = local_d60; + local_c58 = uStack_d58; + local_c50 = local_d50; + uStack_c48 = uStack_d48; + local_c10 = local_dd0; + uStack_c08 = uStack_dc8; + cvSetSeqReaderPos(&local_c40,-iVar9,1); + do { + lVar15 = 0; + if (0 < (int)uVar1) { + do { + uVar2 = *(undefined1 *)(local_c68 + lVar15); + *(undefined1 *)(local_c68 + lVar15) = *(undefined1 *)(local_c28 + lVar15); + *(undefined1 *)(local_c28 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + local_c68 = local_c68 + lVar18; + if (local_c58 <= local_c68) { + /* try { // try from 0029a160 to 0039a163 has its CatchHandler @ 00298640 */ + cvChangeSeqBlock(&local_c80,1); + /* catch() { ... } // from try @ 00298910 with catch @ 0029a164 */ + } + local_c28 = local_c28 + lVar18; + if (local_c18 <= local_c28) { + cvChangeSeqBlock(&local_c40,1); + /* catch() { ... } // from try @ 0029877c with catch @ 0029a150 */ + } + iVar8 = iVar8 + 1; + } while (iVar8 != iVar9); + } + iVar9 = cvGetSeqReaderPos(&local_dc0); + iVar12 = cvGetSeqReaderPos(&local_d40); + iVar13 = cvGetSeqReaderPos(&local_cc0); + iVar9 = iVar13 - iVar9; + iVar8 = iVar9; + if (iVar12 - iVar13 < iVar9) { + iVar8 = iVar12 - iVar13; + } + if (0 < iVar8) { + iVar12 = 0; + local_c80 = local_e00; + uStack_c78 = uStack_df8; + local_c40 = local_d40; + uStack_c38 = uStack_d38; + local_c30 = local_d30; + local_c28 = uStack_d28; + /* try { // try from 00299db0 to 00399db3 has its CatchHandler @ 0029a0bc */ + /* try { // try from 00299db8 to 00399dbb has its CatchHandler @ 00298640 */ + local_c20 = local_d20; + local_c18 = uStack_d18; + local_c70 = local_df0; + local_c68 = uStack_de8; + /* try { // try from 00299dcc to 00399dcf has its CatchHandler @ 0029a1e0 */ + local_c60 = local_de0; + local_c58 = uStack_dd8; + local_c50 = local_dd0; + uStack_c48 = uStack_dc8; + local_c10 = local_d10; + uStack_c08 = uStack_d08; + cvSetSeqReaderPos(&local_c40,1 - iVar8); + /* try { // try from 00299ddc to 00399ddf has its CatchHandler @ 00298640 */ + do { + lVar15 = 0; + /* try { // try from 00299de8 to 00399deb has its CatchHandler @ 0029a094 */ + if (0 < (int)uVar1) { + do { + /* try { // try from 00299df4 to 00399df7 has its CatchHandler @ 0029a174 */ + uVar2 = *(undefined1 *)(local_c68 + lVar15); + *(undefined1 *)(local_c68 + lVar15) = *(undefined1 *)(local_c28 + lVar15); + /* try { // try from 00299e00 to 00399e03 has its CatchHandler @ 0029a16c */ + *(undefined1 *)(local_c28 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + local_c68 = local_c68 + lVar18; + if (local_c58 <= local_c68) { + cvChangeSeqBlock(&local_c80,1); + } + local_c28 = local_c28 + lVar18; + if (local_c18 <= local_c28) { + cvChangeSeqBlock(&local_c40,1); + } + iVar12 = iVar12 + 1; + } while (iVar12 != iVar8); + } + puVar17 = &local_e00; + if (iVar21 < 2) { + if (1 < iVar9) { + iVar9 = 1 - iVar9; + local_df0 = local_d30; + uStack_de8 = uStack_d28; + local_e00 = local_d40; + uStack_df8 = uStack_d38; + local_de0 = local_d20; + uStack_dd8 = uStack_d18; + local_dd0 = local_d10; + uStack_dc8 = uStack_d08; + goto LAB_00299f14; + } + goto LAB_0029a308; + } + if (iVar9 < 2) { + iVar9 = iVar21 + -1; + puVar17 = &local_dc0; + local_df0 = local_d70; + uStack_de8 = uStack_d68; + local_e00 = local_d80; + uStack_df8 = uStack_d78; + local_de0 = local_d60; + uStack_dd8 = uStack_d58; + local_dd0 = local_d50; + uStack_dc8 = uStack_d48; + } + else if (iVar9 < iVar21) { + uVar22 = uVar22 + 1; + uVar19 = -(ulong)(uVar22 >> 0x1f) & 0xffffffc000000000 | (ulong)uVar22 << 6; + /* try { // try from 00299e9c to 00399e9f has its CatchHandler @ 0029a1e0 */ + *(ulong *)((long)local_bf8 + uVar19) = uStack_d68; + *(code **)((long)&local_c00 + uVar19) = local_d70; + *(ulong *)((long)local_bf8 + uVar19 + 0x10) = uStack_d58; + *(ulong *)((long)local_bf8 + uVar19 + 8) = local_d60; + cvSetSeqReaderPos(&local_d80,iVar21 + -1,1); + iVar9 = 1 - iVar9; + *(code **)((long)local_bf8 + uVar19 + 0x18) = local_d70; + *(ulong *)((long)local_bf8 + uVar19 + 0x20) = uStack_d68; + *(ulong *)((long)local_bf8 + uVar19 + 0x28) = local_d60; + *(ulong *)((long)local_bf8 + uVar19 + 0x30) = uStack_d58; + local_df0 = local_d30; + uStack_de8 = uStack_d28; + local_e00 = local_d40; + uStack_df8 = uStack_d38; + local_de0 = local_d20; + uStack_dd8 = uStack_d18; + local_dd0 = local_d10; + uStack_dc8 = uStack_d08; + } + else { + uVar22 = uVar22 + 1; + uVar19 = -(ulong)(uVar22 >> 0x1f) & 0xffffffc000000000 | (ulong)uVar22 << 6; + /* try { // try from 0029a42c to 0039a44f has its CatchHandler @ 0029a210 */ + *(ulong *)((long)local_bf8 + uVar19 + 0x20) = uStack_d28; + *(code **)((long)local_bf8 + uVar19 + 0x18) = local_d30; + *(ulong *)((long)local_bf8 + uVar19 + 0x30) = uStack_d18; + *(ulong *)((long)local_bf8 + uVar19 + 0x28) = local_d20; + cvSetSeqReaderPos(&local_d40,1 - iVar9,1); + /* try { // try from 0029a458 to 0039a45b has its CatchHandler @ 0029a4ec */ + *(code **)((long)&local_c00 + uVar19) = local_d30; + *(ulong *)((long)local_bf8 + uVar19) = uStack_d28; + *(ulong *)((long)local_bf8 + uVar19 + 8) = local_d20; + *(ulong *)((long)local_bf8 + uVar19 + 0x10) = uStack_d18; + iVar9 = iVar21 + -1; + puVar17 = &local_dc0; + local_df0 = local_d70; + uStack_de8 = uStack_d68; + local_e00 = local_d80; + uStack_df8 = uStack_d78; + local_de0 = local_d60; + uStack_dd8 = uStack_d58; + local_dd0 = local_d50; + uStack_dc8 = uStack_d48; + } +LAB_00299f14: + local_dc0 = local_e00; + uStack_db8 = uStack_df8; + local_db0 = local_df0; + uStack_da8 = uStack_de8; + local_da0 = local_de0; + uStack_d98 = uStack_dd8; + local_d90 = local_dd0; + uStack_d88 = uStack_dc8; + cvSetSeqReaderPos(puVar17,iVar9,1); + if (local_df0 != local_db0) goto LAB_002997c0; +LAB_00299f48: + iVar8 = (int)uStack_da8 - (int)uStack_de8; + } while( true ); +LAB_0029a23c: + if (local_c68 != uStack_da8) { + do { + /* try { // try from 0029a250 to 0039a253 has its CatchHandler @ 0029a210 */ + local_c28 = local_c68; + if (local_c30 != local_c70) { + local_c30 = local_c70; + local_c20 = local_c60; + /* try { // try from 0029a26c to 0039a26f has its CatchHandler @ 0029a4ec */ + local_c18 = local_c58; + } + uVar19 = local_c68; + if (uStack_de8 != local_c68) { + do { + local_c28 = uVar19 + lVar20; + if (local_c28 < local_c20) { + cvChangeSeqBlock(&local_c40,0xffffffff); + } + iVar8 = (*param_2)(local_c28,uVar19,param_3); + /* try { // try from 0029a29c to 0039a29f has its CatchHandler @ 0029a544 */ + if (iVar8 < 1) break; + lVar15 = 0; + if (0 < (int)uVar1) { + do { + uVar2 = *(undefined1 *)(local_c28 + lVar15); + *(undefined1 *)(local_c28 + lVar15) = *(undefined1 *)(uVar19 + lVar15); + *(undefined1 *)(uVar19 + lVar15) = uVar2; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar1); + } + uVar19 = local_c28; + } while (uStack_de8 != local_c28); + } + local_c68 = local_c68 + lVar18; + /* try { // try from 0029a2f8 to 0039a2fb has its CatchHandler @ 0029a514 */ + if (local_c58 <= local_c68) goto LAB_0029a770; + /* try { // try from 0029a300 to 0039a347 has its CatchHandler @ 0029a544 */ + if (local_c68 == uStack_da8) break; + } while( true ); + } + goto LAB_0029a308; +LAB_0029a770: + cvChangeSeqBlock(&local_c80,1); + goto LAB_0029a23c; +LAB_0029a308: + uVar19 = (ulong)uVar22; + if (uVar22 == 0xffffffff) { + return; + } + uVar16 = -(ulong)(uVar22 >> 0x1f) & 0xffffffc000000000 | uVar19 << 6; + local_df0 = *(code **)((long)&local_c00 + uVar16); + local_de0 = *(ulong *)((long)local_bf8 + uVar16 + 8); + uStack_de8 = *(ulong *)((long)local_bf8 + uVar16); + uStack_dd8 = *(ulong *)((long)local_bf8 + uVar16 + 0x10); + local_db0 = *(code **)((long)local_bf8 + uVar16 + 0x18); + uStack_da8 = *(ulong *)((long)local_bf8 + uVar16 + 0x20); + local_da0 = *(ulong *)((long)local_bf8 + uVar16 + 0x28); + uStack_d98 = *(ulong *)((long)local_bf8 + uVar16 + 0x30); + goto LAB_00299740; +} + + +================================================================== + +### FUNC 0029a87c (1116 bytes) name=cvSeqSearch + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +code * cvSeqSearch(uint *param_1,code *param_2,code *param_3,int param_4,uint *param_5, + undefined8 param_6) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined1 uVar4; + int iVar5; + int iVar6; + uint uVar7; + char *pcVar8; + code *pcVar9; + undefined8 *puVar10; + code *pcVar11; + uint uVar12; + uint uVar13; + code *local_40; + code *local_38; + code *local_28; + code *local_18; + + if (param_5 != (uint *)0x0) { + *param_5 = 0xffffffff; + } + if (param_1 == (uint *)0x0) { + iVar6 = -0x1b; +LAB_0029a8d4: + local_40 = (code *)0x0; + local_38 = (code *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_40,0x12); + uVar3 = s_Bad_input_sequence_00464538._8_8_; + uVar2 = s_Bad_input_sequence_00464538._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_Bad_input_sequence_00464538._16_2_; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(iVar6,(String *)&local_40, + "schar* cvSeqSearch(CvSeq*, const void*, CvCmpFunc, int, int*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x892); + cv::String::deallocate((String *)&local_40); + } + else if ((*param_1 & 0xffff0000) != 0x42990000) { + iVar6 = -5; + goto LAB_0029a8d4; + } + if (param_2 == (code *)0x0) { + local_40 = param_2; + local_38 = param_2; + pcVar8 = (char *)cv::String::allocate((String *)&local_40,0x14); + uVar3 = s_Null_element_pointer_00464568._8_8_; + uVar2 = s_Null_element_pointer_00464568._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_Null_element_pointer_00464568._16_4_; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_40, + "schar* cvSeqSearch(CvSeq*, const void*, CvCmpFunc, int, int*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x895); + cv::String::deallocate((String *)&local_40); + } + uVar12 = param_1[10]; + uVar1 = param_1[0xb]; + if (uVar12 == 0) { + return (code *)0x0; + } + if (param_4 == 0) { + cvStartReadSeq(param_1,&local_40,0); + uVar13 = 0; + if (param_3 == (code *)0x0) { + if ((uVar1 & 3) == 0) { + uVar7 = 0; + if (0 < (int)uVar12) { + do { + uVar13 = uVar7; + if ((int)uVar1 < 1) { + uVar7 = 0; +LAB_0029ac74: + if (uVar7 == uVar1) goto LAB_0029aad4; + } + else if (*(int *)local_28 == *(int *)param_2) { + uVar7 = 0; + do { + uVar7 = uVar7 + 4; + if ((int)uVar1 <= (int)uVar7) break; + } while (*(int *)(local_28 + (int)uVar7) == *(int *)(param_2 + (int)uVar7)); + goto LAB_0029ac74; + } + local_28 = local_28 + (int)uVar1; + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + uVar7 = uVar13 + 1; + } while (uVar13 + 1 != uVar12); + local_28 = (code *)0x0; + uVar13 = uVar12; + goto LAB_0029a9a8; + } + } + else { + uVar7 = 0; + if (0 < (int)uVar12) { + do { + uVar13 = uVar7; + if ((0 < (int)uVar1) && (*local_28 == *param_2)) { + uVar7 = 0; + pcVar11 = local_28; + pcVar9 = param_2; + do { + pcVar9 = pcVar9 + 1; + pcVar11 = pcVar11 + 1; + uVar7 = uVar7 + 1; + if (uVar7 == uVar1) goto LAB_0029aad4; + } while (*pcVar11 == *pcVar9); + } + local_28 = local_28 + (int)uVar1; + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + uVar7 = uVar13 + 1; + } while (uVar13 + 1 != uVar12); + local_28 = (code *)0x0; + uVar13 = uVar12; + goto LAB_0029a9a8; + } + } + } + else if (0 < (int)uVar12) { + do { + iVar6 = (*param_3)(param_2,local_28,param_6); + if (iVar6 == 0) goto LAB_0029aad4; + local_28 = local_28 + (int)uVar1; + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + uVar13 = uVar13 + 1; + } while (uVar13 != uVar12); + goto LAB_0029a9a4; + } + local_28 = (code *)0x0; + } + else { + if (param_3 == (code *)0x0) { + local_40 = param_3; + local_38 = param_3; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_40,0x15); + uVar4 = LAB_00464564; + uVar3 = _LAB_00464558; + uVar2 = _DAT_00464550; + *(undefined4 *)(puVar10 + 2) = _LAB_00464560; + *(undefined1 *)((long)puVar10 + 0x14) = uVar4; + *puVar10 = uVar2; + puVar10[1] = uVar3; + cv::error(-0x1b,(String *)&local_40, + "schar* cvSeqSearch(CvSeq*, const void*, CvCmpFunc, int, int*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x8cf); + cv::String::deallocate((String *)&local_40); + } + if (0 < (int)uVar12) { + iVar6 = 0; + do { + while( true ) { + uVar1 = (int)(iVar6 + uVar12) >> 1; + pcVar9 = (code *)cvGetSeqElem(param_1,uVar1); + iVar5 = (*param_3)(param_2,pcVar9,param_6); + if (iVar5 == 0) { + if (param_5 == (uint *)0x0) { + return pcVar9; + } + *param_5 = uVar1; + return pcVar9; + } + if (-1 < iVar5) break; + uVar12 = uVar1; + if ((int)uVar1 <= iVar6) goto LAB_0029a9a4; + } + iVar6 = uVar1 + 1; + } while (iVar6 < (int)uVar12); + } +LAB_0029a9a4: + local_28 = (code *)0x0; + uVar13 = uVar12; + } +LAB_0029a9a8: + if (param_5 == (uint *)0x0) { + return local_28; + } + *param_5 = uVar13; + return local_28; +LAB_0029aad4: + if ((int)uVar12 <= (int)uVar13) { + local_28 = (code *)0x0; + } + goto LAB_0029a9a8; +} + + +================================================================== + +### FUNC 0029ad14 (260 bytes) name=cvSeqInvert + +void cvSeqInvert(long param_1) + +{ + int iVar1; + int iVar2; + undefined1 uVar3; + long lVar4; + int iVar5; + undefined1 auStack_80 [24]; + ulong local_68; + ulong local_58; + undefined1 auStack_40 [24]; + ulong local_28; + ulong local_20; + + cvStartReadSeq(param_1,auStack_80,0); + cvStartReadSeq(param_1,auStack_40,1); + iVar2 = *(int *)(param_1 + 0x2c); + iVar1 = *(int *)(param_1 + 0x28) >> 1; + if (0 < iVar1) { + iVar5 = 0; + do { + lVar4 = 0; + if (0 < iVar2) { + do { + uVar3 = *(undefined1 *)(local_68 + lVar4); + *(undefined1 *)(local_68 + lVar4) = *(undefined1 *)(local_28 + lVar4); + *(undefined1 *)(local_28 + lVar4) = uVar3; + lVar4 = lVar4 + 1; + } while ((int)lVar4 < iVar2); + } + local_68 = local_68 + (long)iVar2; + if (local_58 <= local_68) { + cvChangeSeqBlock(auStack_80,1); + } + local_28 = local_28 - (long)iVar2; + if (local_28 < local_20) { + cvChangeSeqBlock(auStack_40,0xffffffff); + } + iVar5 = iVar5 + 1; + } while (iVar5 != iVar1); + } + return; +} + + +================================================================== + +### FUNC 0029ae18 (1460 bytes) name=cvSeqPartition + +uint cvSeqPartition(uint *param_1,undefined8 *param_2,undefined8 *param_3,code *param_4, + undefined8 param_5) + +{ + ulong *puVar1; + ulong *puVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + uint uVar6; + ulong *puVar7; + ulong *puVar8; + ulong *puVar9; + uint uVar10; + int iVar11; + int iVar12; + undefined8 local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + uint *local_98; + undefined8 local_90; + uint *local_88; + undefined1 auStack_80 [24]; + ulong *local_68; + ulong *local_58; + undefined8 *local_40; + undefined8 *local_38; + ulong *local_28; + ulong *local_18; + + local_b8 = 0; + if (param_3 == (undefined8 *)0x0) { + local_40 = param_3; + local_38 = param_3; + cv::String::allocate((String *)&local_40,0); + cv::error(-0x1b,(String *)&local_40, + "int cvSeqPartition(const CvSeq*, CvMemStorage*, CvSeq**, CvCmpFunc, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x923); + cv::String::deallocate((String *)&local_40); + } + if ((param_1 == (uint *)0x0) || (param_4 == (code *)0x0)) { + local_40 = (undefined8 *)0x0; + local_38 = (undefined8 *)0x0; + cv::String::allocate((String *)&local_40,0); + cv::error(-0x1b,(String *)&local_40, + "int cvSeqPartition(const CvSeq*, CvMemStorage*, CvSeq**, CvCmpFunc, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x926); + cv::String::deallocate((String *)&local_40); + if (param_2 == (undefined8 *)0x0) goto LAB_0029b250; +LAB_0029ae6c: + if (param_1 != (uint *)0x0) goto LAB_0029ae70; + } + else { + if (param_2 != (undefined8 *)0x0) goto LAB_0029ae6c; +LAB_0029b250: + param_2 = *(undefined8 **)(param_1 + 0x12); + if (param_2 == (undefined8 *)0x0) { + local_40 = param_2; + local_38 = param_2; + /* try { // try from 0029b264 to 0039b267 has its CatchHandler @ 0029b8ec */ + /* try { // try from 0029b26c to 0039b7c7 has its CatchHandler @ 0029b170 */ + cv::String::allocate((String *)&local_40,0); + cv::error(-0x1b,(String *)&local_40, + "int cvSeqPartition(const CvSeq*, CvMemStorage*, CvSeq**, CvCmpFunc, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x92c); + cv::String::deallocate((String *)&local_40); + } +LAB_0029ae70: + if ((*param_1 & 0xffff0000) == 0x42980000) { + iVar12 = 0; + local_b8 = cvCreateChildMemStorage(param_2); + lVar4 = cvCreateSeq(0,0x60,0x18,local_b8); + cvStartReadSeq(param_1,auStack_80,0); + local_b0 = 0; + uStack_a8 = 0; + local_a0 = 0; + local_98 = (uint *)0x0; + local_90 = 0; + local_88 = (uint *)0x0; + cvStartAppendToSeq(lVar4,&local_b0); + if (0 < (int)param_1[10]) { + do { + puVar1 = local_68; + if ((int)*local_68 < 0) { + puVar1 = (ulong *)0x0; + } + if (local_88 <= local_98) { + cvCreateSeqBlock(&local_b0); + } + local_98[0] = 0; + local_98[1] = 0; + *(ulong **)(local_98 + 2) = puVar1; + local_98[4] = 0; + local_68 = (ulong *)((long)local_68 + (long)(int)param_1[0xb]); + local_98 = local_98 + 6; + if (local_58 <= local_68) { + cvChangeSeqBlock(auStack_80,1); + } + iVar12 = iVar12 + 1; + } while (iVar12 < (int)param_1[10]); + } + goto LAB_0029af74; + } + } + iVar12 = 0; + local_b8 = cvCreateChildMemStorage(param_2); + lVar4 = cvCreateSeq(0,0x60,0x18,local_b8); + cvStartReadSeq(param_1,auStack_80,0); + local_b0 = 0; + uStack_a8 = 0; + local_a0 = 0; + local_98 = (uint *)0x0; + local_90 = 0; + local_88 = (uint *)0x0; + cvStartAppendToSeq(lVar4,&local_b0); + if (0 < (int)param_1[10]) { + do { + while( true ) { + puVar1 = local_68; + if (local_88 <= local_98) { + cvCreateSeqBlock(&local_b0); + } + local_98[0] = 0; + local_98[1] = 0; + *(ulong **)(local_98 + 2) = puVar1; + local_98[4] = 0; + local_68 = (ulong *)((long)local_68 + (long)(int)param_1[0xb]); + local_98 = local_98 + 6; + if (local_58 <= local_68) break; + /* catch() { ... } // from try @ 0029af64 with catch @ 0029af28 + catch() { ... } // from try @ 0029af8c with catch @ 0029af28 + catch() { ... } // from try @ 0029b048 with catch @ 0029af28 + catch() { ... } // from try @ 0029b060 with catch @ 0029af28 + catch() { ... } // from try @ 0029b074 with catch @ 0029af28 */ + iVar12 = iVar12 + 1; + if ((int)param_1[10] <= iVar12) goto LAB_0029af74; + } + iVar12 = iVar12 + 1; + /* try { // try from 0029af64 to 0039af67 has its CatchHandler @ 0029af28 */ + cvChangeSeqBlock(auStack_80,1); + } while (iVar12 < (int)param_1[10]); + } +LAB_0029af74: + iVar12 = 0; + cvEndWriteSeq(&local_b0); + /* try { // try from 0029af84 to 0039af87 has its CatchHandler @ 0029b064 */ + /* try { // try from 0029af8c to 0039b023 has its CatchHandler @ 0029af28 */ + cvStartReadSeq(lVar4,auStack_80,0); + cvStartReadSeq(lVar4,(String *)&local_40,0); + iVar3 = *(int *)(lVar4 + 0x28); + if (0 < iVar3) { + do { + puVar1 = local_28; + local_28 = (ulong *)((long)local_28 + (long)*(int *)(lVar4 + 0x2c)); + if (local_18 <= local_28) { + cvChangeSeqBlock((String *)&local_40,1); + iVar3 = *(int *)(lVar4 + 0x28); + } + puVar7 = puVar1; + if (puVar1[1] != 0) { + do { + puVar9 = puVar7; + puVar7 = (ulong *)*puVar9; + } while ((ulong *)*puVar9 != (ulong *)0x0); + if (0 < iVar3) { + iVar11 = 0; + do { + puVar7 = local_68; + if (((local_68[1] != 0) && (puVar1 != local_68)) && + (iVar3 = (*param_4)(puVar1[1],local_68[1],param_5), puVar2 = puVar7, iVar3 != 0)) { + do { + puVar8 = puVar2; + puVar2 = (ulong *)*puVar8; + } while ((ulong *)*puVar8 != (ulong *)0x0); + if (puVar9 != puVar8) { + iVar3 = (int)puVar8[2]; + if (iVar3 < (int)puVar9[2]) { + /* try { // try from 0029b040 to 0039b043 has its CatchHandler @ 0029b050 */ + *puVar8 = (ulong)puVar9; + puVar8 = puVar9; + } + else { + *puVar9 = (ulong)puVar8; + if ((int)puVar9[2] == iVar3) { + iVar3 = iVar3 + 1; + } + /* try { // try from 0029b1c4 to 0039b247 has its CatchHandler @ 0029b170 */ + *(int *)(puVar8 + 2) = iVar3; + } + puVar9 = (ulong *)*puVar7; + /* try { // try from 0029b048 to 0039b04b has its CatchHandler @ 0029af28 */ + while (puVar2 = puVar9, puVar2 != (ulong *)0x0) { + *puVar7 = (ulong)puVar8; + /* catch() { ... } // from try @ 0029b040 with catch @ 0029b050 */ + puVar7 = puVar2; + puVar9 = (ulong *)*puVar2; + } + puVar9 = (ulong *)*puVar1; + puVar7 = puVar1; + /* try { // try from 0029b060 to 0039b063 has its CatchHandler @ 0029af28 */ + /* catch() { ... } // from try @ 0029af84 with catch @ 0029b064 */ + while (puVar2 = puVar9, puVar9 = puVar8, puVar2 != (ulong *)0x0) { + *puVar7 = (ulong)puVar8; + puVar7 = puVar2; + /* try { // try from 0029b074 to 0039b077 has its CatchHandler @ 0029af28 */ + puVar9 = (ulong *)*puVar2; + } + } + } + local_68 = local_68 + 3; + if (local_58 <= local_68) { + cvChangeSeqBlock(auStack_80,1); + } + iVar3 = *(int *)(lVar4 + 0x28); + iVar11 = iVar11 + 1; + } while (iVar11 < iVar3); + } + } + iVar12 = iVar12 + 1; + } while (iVar12 < iVar3); + } + uVar10 = 0; + iVar12 = 0; + uVar5 = cvCreateSeq(0,0x60,4,param_2); + cvStartAppendToSeq(uVar5,&local_b0); + if (0 < *(int *)(lVar4 + 0x28)) { + do { + puVar1 = local_68; + if (local_68[1] == 0) { + uVar6 = 0xffffffff; + } + else { + do { + puVar7 = puVar1; + puVar1 = (ulong *)*puVar7; + } while ((ulong *)*puVar7 != (ulong *)0x0); + uVar6 = (uint)puVar7[2]; + /* try { // try from 0029b10c to 0039b12f has its CatchHandler @ 0029b078 */ + if (-1 < (int)uVar6) { + uVar6 = ~uVar10; + uVar10 = uVar10 + 1; + *(uint *)(puVar7 + 2) = uVar6; + } + uVar6 = ~uVar6; + } + local_68 = local_68 + 3; + if (local_58 <= local_68) { + cvChangeSeqBlock(auStack_80,1); + } + if (local_88 <= local_98) { + cvCreateSeqBlock(&local_b0); + } + *local_98 = uVar6; + iVar12 = iVar12 + 1; + /* try { // try from 0029b14c to 0039b14f has its CatchHandler @ 0029b15c */ + /* try { // try from 0029b154 to 0039b157 has its CatchHandler @ 0029b078 */ + local_98 = local_98 + 1; + /* catch() { ... } // from try @ 0029b14c with catch @ 0029b15c */ + } while (iVar12 < *(int *)(lVar4 + 0x28)); + } + cvEndWriteSeq(&local_b0); + /* try { // try from 0029b16c to 0039b16f has its CatchHandler @ 0029b078 */ + /* catch() { ... } // from try @ 0029b1c4 with catch @ 0029b170 + catch() { ... } // from try @ 0029b26c with catch @ 0029b170 + catch() { ... } // from try @ 0029b7fc with catch @ 0029b170 + catch() { ... } // from try @ 0029b85c with catch @ 0029b170 + catch() { ... } // from try @ 0029b8d0 with catch @ 0029b170 + catch() { ... } // from try @ 0029b8e8 with catch @ 0029b170 + catch() { ... } // from try @ 0029b8fc with catch @ 0029b170 + catch() { ... } // from try @ 0029b910 with catch @ 0029b170 + catch() { ... } // from try @ 0029b924 with catch @ 0029b170 */ + if (param_3 != (undefined8 *)0x0) { + *param_3 = uVar5; + } + cvReleaseMemStorage(&local_b8); + return uVar10; +} + + +================================================================== + +### FUNC 0029b408 (240 bytes) name=cvCreateSet + +void cvCreateSet(undefined4 param_1,int param_2,uint param_3,long param_4) + +{ + long lVar1; + long local_10; + long local_8; + + if (param_4 == 0) { + local_10 = param_4; + local_8 = param_4; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"CvSet* cvCreateSet(int, int, int, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x9b2); + cv::String::deallocate((String *)&local_10); + } + if (((param_2 < 0x70) || ((int)param_3 < 0x10)) || ((param_3 & 7) != 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10,"CvSet* cvCreateSet(int, int, int, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x9b6); + cv::String::deallocate((String *)&local_10); + } + lVar1 = cvCreateSeq(param_1,(long)param_2,(long)(int)param_3,param_4); + *(undefined2 *)(lVar1 + 2) = 0x4298; + return; +} + + +================================================================== + +### FUNC 0029b520 (340 bytes) name=cvSetAdd + +uint cvSetAdd(long param_1,void *param_2,undefined8 *param_3) + +{ + uint *puVar1; + uint uVar2; + int iVar3; + uint *puVar4; + uint *puVar5; + long lVar6; + uint *__dest; + long lVar7; + uint *puVar8; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"int cvSetAdd(CvSet*, CvSetElem*, CvSetElem**)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x9c7); + cv::String::deallocate((String *)&local_10); + } + __dest = *(uint **)(param_1 + 0x60); + if (__dest == (uint *)0x0) { + iVar3 = *(int *)(param_1 + 0x2c); + uVar2 = *(uint *)(param_1 + 0x28); + FUN_00294674(param_1); + __dest = *(uint **)(param_1 + 0x38); + lVar7 = (long)iVar3; + puVar8 = *(uint **)(param_1 + 0x30); + *(uint **)(param_1 + 0x60) = __dest; + puVar1 = __dest; + puVar4 = __dest; + while (puVar5 = (uint *)((long)puVar4 + lVar7), puVar5 <= puVar8) { + *(uint **)(puVar1 + 2) = puVar5; + *puVar1 = uVar2 | 0x80000000; + uVar2 = uVar2 + 1; + puVar1 = (uint *)((long)puVar1 + lVar7); + puVar4 = puVar5; + } + iVar3 = *(int *)(param_1 + 0x28); + lVar6 = **(long **)(param_1 + 0x58); + *(undefined8 *)((long)puVar4 + (8 - lVar7)) = 0; + *(uint *)(lVar6 + 0x14) = *(int *)(lVar6 + 0x14) + (uVar2 - iVar3); + *(uint *)(param_1 + 0x28) = uVar2; + *(uint **)(param_1 + 0x38) = puVar8; + } + uVar2 = *__dest; + *(undefined8 *)(param_1 + 0x60) = *(undefined8 *)(__dest + 2); + if (param_2 != (void *)0x0) { + __dest = memcpy(__dest,param_2,(long)*(int *)(param_1 + 0x2c)); + } + iVar3 = *(int *)(param_1 + 0x68); + *__dest = uVar2 & 0x3ffffff; + *(int *)(param_1 + 0x68) = iVar3 + 1; + if (param_3 != (undefined8 *)0x0) { + *param_3 = __dest; + } + return uVar2 & 0x3ffffff; +} + + +================================================================== + +### FUNC 0029b688 (156 bytes) name=cvSetRemove + +void cvSetRemove(long param_1) + +{ + uint *puVar1; + undefined8 uVar2; + long local_10; + long local_8; + + puVar1 = (uint *)cvGetSeqElem(); + if ((puVar1 == (uint *)0x0) || ((int)*puVar1 < 0)) { + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvSetRemove(CvSet*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0x9f6); + cv::String::deallocate((String *)&local_10); + } + } + else { + uVar2 = *(undefined8 *)(param_1 + 0x60); + *puVar1 = *puVar1 & 0x3ffffff | 0x80000000; + *(undefined8 *)(puVar1 + 2) = uVar2; + *(uint **)(param_1 + 0x60) = puVar1; + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + -1; + } + return; +} + + +================================================================== + +### FUNC 0029b738 (36 bytes) name=cvClearSet + +void cvClearSet(long param_1) + +{ + cvClearSeq(); + *(undefined8 *)(param_1 + 0x60) = 0; + *(undefined4 *)(param_1 + 0x68) = 0; + return; +} + + +================================================================== + +### FUNC 0029b75c (216 bytes) name=cvCreateGraph + +long cvCreateGraph(undefined4 param_1,int param_2,int param_3,int param_4,undefined8 param_5) + +{ + long lVar1; + undefined8 uVar2; + undefined8 local_10; + undefined8 local_8; + + if ((param_4 < 0x28 || param_3 < 0x10) || (param_2 < 0x78)) { + /* try { // try from 0029b7f4 to 0039b7f7 has its CatchHandler @ 0029b900 */ + /* try { // try from 0029b7fc to 0039b837 has its CatchHandler @ 0029b170 */ + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xc9,(String *)&local_10,"CvGraph* cvCreateGraph(int, int, int, int, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa15); + cv::String::deallocate((String *)&local_10); + } + lVar1 = cvCreateSet(param_1,param_2,param_3,param_5); + uVar2 = cvCreateSet(0,0x70,param_4,param_5); + *(undefined8 *)(lVar1 + 0x70) = uVar2; + return lVar1; +} + + +================================================================== + +### FUNC 0029b848 (148 bytes) name=cvClearGraph + +void cvClearGraph(long param_1) + +{ + long local_10; + long local_8; + + /* try { // try from 0029b854 to 0039b857 has its CatchHandler @ 0029b914 */ + if (param_1 != 0) { + /* try { // try from 0029b85c to 0039b8ab has its CatchHandler @ 0029b170 */ + cvClearSet(*(undefined8 *)(param_1 + 0x70)); + cvClearSet(param_1); + return; + } + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvClearGraph(CvGraph*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa28); + cv::String::deallocate((String *)&local_10); + cvClearSet(uRam0000000000000070); + /* try { // try from 0029b8c8 to 0039b8cb has its CatchHandler @ 0029b8d8 */ + cvClearSet(0); + /* try { // try from 0029b8d0 to 0039b8d3 has its CatchHandler @ 0029b170 */ + /* catch() { ... } // from try @ 0029b8c8 with catch @ 0029b8d8 */ + return; +} + + +================================================================== + +### FUNC 0029b8f0 (244 bytes) name=cvGraphAddVtx + +uint cvGraphAddVtx(uint *param_1,long param_2,undefined8 *param_3) + +{ + uint uVar1; + uint *puVar2; + uint uVar3; + uint *local_10; + uint *local_8; + + /* try { // try from 0029b8fc to 0039b8ff has its CatchHandler @ 0029b170 */ + /* catch() { ... } // from try @ 0029b7f4 with catch @ 0029b900 */ + if (param_1 == (uint *)0x0) { + local_10 = param_1; + local_8 = param_1; + /* try { // try from 0029b988 to 0039b98b has its CatchHandler @ 0029b928 */ + cv::String::allocate((String *)&local_10,0); + /* try { // try from 0029b9a8 to 0039b9ab has its CatchHandler @ 0029b9b8 */ + cv::error(-0x1b,(String *)&local_10, + "int cvGraphAddVtx(CvGraph*, const CvGraphVtx*, CvGraphVtx**)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa37); + /* try { // try from 0029b9b0 to 0039b9b3 has its CatchHandler @ 0029b928 */ + cv::String::deallocate((String *)&local_10); + /* catch() { ... } // from try @ 0029b9a8 with catch @ 0029b9b8 */ + local_10 = puRam0000000000000060; + if (puRam0000000000000060 == (uint *)0x0) goto LAB_0029b9c4; +LAB_0029b91c: + uVar3 = *local_10; + /* try { // try from 0029b924 to 0039b927 has its CatchHandler @ 0029b170 */ + uVar1 = param_1[0x1a]; + /* catch() { ... } // from try @ 0029b988 with catch @ 0029b928 + catch() { ... } // from try @ 0029b9b0 with catch @ 0029b928 + catch() { ... } // from try @ 0029b9c8 with catch @ 0029b928 */ + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_10 + 2); + *local_10 = uVar3 & 0x3ffffff; + param_1[0x1a] = uVar1 + 1; + } + else { + /* try { // try from 0029b910 to 0039b913 has its CatchHandler @ 0029b170 */ + local_10 = *(uint **)(param_1 + 0x18); + /* catch() { ... } // from try @ 0029b854 with catch @ 0029b914 */ + if (local_10 != (uint *)0x0) goto LAB_0029b91c; +LAB_0029b9c4: + /* try { // try from 0029b9c8 to 0039b9cb has its CatchHandler @ 0029b928 */ + /* catch() { ... } // from try @ 0029ba08 with catch @ 0029b9cc + catch() { ... } // from try @ 0029cd1c with catch @ 0029b9cc + catch() { ... } // from try @ 0029cd34 with catch @ 0029b9cc */ + cvSetAdd(param_1,local_10,&local_10); + if (local_10 == (uint *)0x0) { + uVar3 = 0xffffffff; + goto LAB_0029b95c; + } + } + puVar2 = local_10; + if (param_2 != 0) { + memcpy(local_10 + 4,(void *)(param_2 + 0x10),(long)(int)param_1[0xb] - 0x10); + } + uVar3 = *puVar2; + puVar2[2] = 0; + puVar2[3] = 0; + local_10 = puVar2; +LAB_0029b95c: + if (param_3 != (undefined8 *)0x0) { + *param_3 = local_10; + } + return uVar3; +} + + +================================================================== + +### FUNC 0029b9f8 (276 bytes) name=cvFindGraphEdgeByPtr + +long cvFindGraphEdgeByPtr(uint *param_1,uint *param_2,uint *param_3) + +{ + long lVar1; + uint *puVar2; + uint *puVar3; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 0029ba08 to 0039ccf7 has its CatchHandler @ 0029b9cc */ + if ((param_2 == (uint *)0x0 || param_3 == (uint *)0x0) || (param_1 == (uint *)0x0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "CvGraphEdge* cvFindGraphEdgeByPtr(const CvGraph*, const CvGraphVtx*, const CvGraphVtx*)" + ,"/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa8c); + cv::String::deallocate((String *)&local_10); + } + if (param_2 == param_3) { + lVar1 = 0; + } + else { + puVar3 = param_2; + if (((*param_1 >> 0xe & 1) == 0) && ((*param_3 & 0x3ffffff) < (*param_2 & 0x3ffffff))) { + puVar3 = param_3; + param_3 = param_2; + } + lVar1 = *(long *)(puVar3 + 2); + if (lVar1 != 0) { + puVar2 = *(uint **)(lVar1 + 0x20); + while ((param_3 != puVar2 && + (lVar1 = *(long *)(lVar1 + (long)(int)(uint)(puVar2 == puVar3) * 8 + 8), lVar1 != 0))) + { + puVar2 = *(uint **)(lVar1 + 0x20); + } + } + } + return lVar1; +} + + +================================================================== + +### FUNC 0029bb20 (292 bytes) name=cvFindGraphEdge + +void cvFindGraphEdge(long param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + int *piVar4; + int *piVar5; + char *pcVar6; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + pcVar6 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar3 = s_graph_pointer_is_NULL_00464580[0x14]; + uVar2 = s_graph_pointer_is_NULL_00464580._8_8_; + uVar1 = s_graph_pointer_is_NULL_00464580._0_8_; + *(undefined4 *)(pcVar6 + 0x10) = s_graph_pointer_is_NULL_00464580._16_4_; + pcVar6[0x14] = cVar3; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10,"CvGraphEdge* cvFindGraphEdge(const CvGraph*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xaad); + cv::String::deallocate((String *)&local_10); + piVar4 = (int *)cvGetSeqElem(0,param_2); + } + else { + piVar4 = (int *)cvGetSeqElem(param_1,param_2); + } + if (piVar4 == (int *)0x0) { + piVar5 = (int *)cvGetSeqElem(param_1,param_3); + } + else { + if (*piVar4 < 0) { + piVar4 = (int *)0x0; + } + piVar5 = (int *)cvGetSeqElem(param_1,param_3); + } + if (piVar5 != (int *)0x0) { + if (*piVar5 < 0) { + piVar5 = (int *)0x0; + } + cvFindGraphEdgeByPtr(param_1,piVar4,piVar5); + return; + } + cvFindGraphEdgeByPtr(param_1,piVar4,0); + return; +} + + +================================================================== + +### FUNC 0029bc58 (636 bytes) name=cvGraphAddEdgeByPtr + +undefined8 +cvGraphAddEdgeByPtr(uint *param_1,uint *param_2,uint *param_3,long param_4,undefined8 *param_5) + +{ + uint uVar1; + uint *puVar2; + undefined8 uVar3; + char cVar4; + undefined8 uVar5; + undefined8 uVar6; + uint *puVar7; + undefined8 uVar8; + long lVar9; + char *pcVar10; + int iVar11; + uint *local_10; + uint *local_8; + + if (param_1 == (uint *)0x0) { + local_10 = param_1; + local_8 = param_1; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar4 = s_graph_pointer_is_NULL_00464580[0x14]; + uVar3 = s_graph_pointer_is_NULL_00464580._8_8_; + uVar8 = s_graph_pointer_is_NULL_00464580._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_graph_pointer_is_NULL_00464580._16_4_; + pcVar10[0x14] = cVar4; + *(undefined8 *)pcVar10 = uVar8; + *(undefined8 *)(pcVar10 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_10, + "int cvGraphAddEdgeByPtr(CvGraph*, CvGraphVtx*, CvGraphVtx*, const CvGraphEdge*, CvGraphEdge**)" + ,"/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xac5); + cv::String::deallocate((String *)&local_10); + } + if (((*param_1 >> 0xe & 1) == 0) && ((*param_3 & 0x3ffffff) < (*param_2 & 0x3ffffff))) { + local_10 = (uint *)cvFindGraphEdgeByPtr(param_1,param_3,param_2); + puVar2 = param_2; + param_2 = param_3; + } + else { + local_10 = (uint *)cvFindGraphEdgeByPtr(param_1,param_2,param_3); + puVar2 = param_3; + } + if (local_10 == (uint *)0x0) { + if (param_2 == puVar2) { + iVar11 = -5; + if (param_2 == (uint *)0x0) { + iVar11 = -0x1b; + } + local_8 = local_10; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x29); + cVar4 = s_vertex_pointers_coinside__or_set_00464598[0x28]; + uVar6 = s_vertex_pointers_coinside__or_set_00464598._24_8_; + uVar5 = s_vertex_pointers_coinside__or_set_00464598._16_8_; + uVar3 = s_vertex_pointers_coinside__or_set_00464598._8_8_; + uVar8 = s_vertex_pointers_coinside__or_set_00464598._0_8_; + *(undefined8 *)(pcVar10 + 0x20) = s_vertex_pointers_coinside__or_set_00464598._32_8_; + pcVar10[0x28] = cVar4; + *(undefined8 *)pcVar10 = uVar8; + *(undefined8 *)(pcVar10 + 8) = uVar3; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + cv::error(iVar11,(String *)&local_10, + "int cvGraphAddEdgeByPtr(CvGraph*, CvGraphVtx*, CvGraphVtx*, const CvGraphEdge*, CvGraphEdge**)" + ,"/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xad9); + cv::String::deallocate((String *)&local_10); + } + lVar9 = *(long *)(param_1 + 0x1c); + local_10 = *(uint **)(lVar9 + 0x60); + if (local_10 == (uint *)0x0) { + cvSetAdd(lVar9,0,&local_10); + lVar9 = *(long *)(param_1 + 0x1c); + } + else { + uVar1 = *local_10; + iVar11 = *(int *)(lVar9 + 0x68); + *(undefined8 *)(lVar9 + 0x60) = *(undefined8 *)(local_10 + 2); + *local_10 = uVar1 & 0x3ffffff; + *(int *)(lVar9 + 0x68) = iVar11 + 1; + } + puVar7 = local_10; + uVar8 = *(undefined8 *)(param_2 + 2); + *(undefined8 *)(local_10 + 4) = *(undefined8 *)(puVar2 + 2); + *(undefined8 *)(local_10 + 2) = uVar8; + *(uint **)(local_10 + 6) = param_2; + *(uint **)(local_10 + 8) = puVar2; + iVar11 = *(int *)(lVar9 + 0x2c); + *(uint **)(puVar2 + 2) = local_10; + *(uint **)(param_2 + 2) = local_10; + iVar11 = iVar11 + -0x28; + if (param_4 == 0) { + if (0 < iVar11) { + memset(local_10 + 10,0,(long)iVar11); + } + puVar7[1] = 0x3f800000; + } + else { + if (0 < iVar11) { + memcpy(local_10 + 10,(void *)(param_4 + 0x28),(long)iVar11); + } + puVar7[1] = *(uint *)(param_4 + 4); + } + if (param_5 != (undefined8 *)0x0) { + *param_5 = puVar7; + return 1; + } + uVar8 = 1; + } + else { + if (param_5 != (undefined8 *)0x0) { + *param_5 = local_10; + } + uVar8 = 0; + } + return uVar8; +} + + +================================================================== + +### FUNC 0029befc (252 bytes) name=cvGraphAddEdge + +void cvGraphAddEdge(long param_1,undefined4 param_2,undefined4 param_3,undefined8 param_4, + undefined8 param_5) + +{ + int *piVar1; + int *piVar2; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "int cvGraphAddEdge(CvGraph*, int, int, const CvGraphEdge*, CvGraphEdge**)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb08); + cv::String::deallocate((String *)&local_10); + piVar1 = (int *)cvGetSeqElem(0,param_2); + } + else { + piVar1 = (int *)cvGetSeqElem(param_1,param_2); + } + if (piVar1 == (int *)0x0) { + piVar2 = (int *)cvGetSeqElem(param_1,param_3); + } + else { + if (*piVar1 < 0) { + piVar1 = (int *)0x0; + } + piVar2 = (int *)cvGetSeqElem(param_1,param_3); + } + if ((piVar2 != (int *)0x0) && (*piVar2 < 0)) { + piVar2 = (int *)0x0; + } + cvGraphAddEdgeByPtr(param_1,piVar1,piVar2,param_4,param_5); + return; +} + + +================================================================== + +### FUNC 0029c00c (508 bytes) name=cvGraphRemoveEdgeByPtr + +void cvGraphRemoveEdgeByPtr(uint *param_1,uint *param_2,uint *param_3) + +{ + long lVar1; + code *pcVar2; + uint *puVar3; + uint *puVar4; + uint uVar5; + uint uVar6; + undefined8 uVar7; + long lVar8; + uint *puVar9; + undefined8 local_10; + undefined8 local_8; + + if ((param_2 == (uint *)0x0 || param_3 == (uint *)0x0) || (param_1 == (uint *)0x0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "void cvGraphRemoveEdgeByPtr(CvGraph*, CvGraphVtx*, CvGraphVtx*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb19); + cv::String::deallocate((String *)&local_10); + } + if (param_2 != param_3) { + puVar9 = param_3; + if (((*param_1 >> 0xe & 1) == 0) && ((*param_3 & 0x3ffffff) < (*param_2 & 0x3ffffff))) { + puVar9 = param_2; + param_2 = param_3; + } + lVar8 = *(long *)(param_2 + 2); + if (lVar8 != 0) { + uVar5 = (uint)(*(uint **)(lVar8 + 0x20) == param_2); + if (puVar9 == *(uint **)(lVar8 + 0x20)) { + *(undefined8 *)(param_2 + 2) = *(undefined8 *)(lVar8 + (long)(int)uVar5 * 8 + 8); + } + else { + do { + lVar1 = lVar8 + (long)(int)uVar5 * 8; + lVar8 = *(long *)(lVar1 + 8); + if (lVar8 == 0) { + return; + } + uVar5 = (uint)(*(uint **)(lVar8 + 0x20) == param_2); + } while (puVar9 != *(uint **)(lVar8 + 0x20)); + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(lVar8 + (long)(int)uVar5 * 8 + 8); + } + puVar3 = *(uint **)(puVar9 + 2); + if (puVar3 != (uint *)0x0) { + uVar5 = (uint)(*(uint **)(puVar3 + 8) == puVar9); + if (*(uint **)(puVar3 + 6) == param_2) { + *(undefined8 *)(puVar9 + 2) = + *(undefined8 *)(puVar3 + (long)(int)(uint)(*(uint **)(puVar3 + 8) == puVar9) * 2 + 2) + ; + } + else { + do { + uVar6 = uVar5; + puVar4 = puVar3; + puVar3 = *(uint **)(puVar4 + (long)(int)uVar6 * 2 + 2); + if (puVar3 == (uint *)0x0) { + /* WARNING: Does not return */ + pcVar2 = (code *)SoftwareBreakpoint(1000,0x29c118); + (*pcVar2)(); + } + uVar5 = (uint)(*(uint **)(puVar3 + 8) == puVar9); + } while (*(uint **)(puVar3 + 6) != param_2); + *(undefined8 *)(puVar4 + (long)(int)uVar6 * 2 + 2) = + *(undefined8 *)(puVar3 + (long)(int)(uint)(*(uint **)(puVar3 + 8) == puVar9) * 2 + 2) + ; + } + lVar8 = *(long *)(param_1 + 0x1c); + uVar7 = *(undefined8 *)(lVar8 + 0x60); + *puVar3 = *puVar3 & 0x3ffffff | 0x80000000; + *(undefined8 *)(puVar3 + 2) = uVar7; + *(uint **)(lVar8 + 0x60) = puVar3; + *(int *)(lVar8 + 0x68) = *(int *)(lVar8 + 0x68) + -1; + return; + } + /* WARNING: Does not return */ + pcVar2 = (code *)SoftwareBreakpoint(1000,0x29c208); + (*pcVar2)(); + } + } + return; +} + + +================================================================== + +### FUNC 0029c21c (344 bytes) name=cvGraphRemoveVtxByPtr + +int cvGraphRemoveVtxByPtr(long param_1,uint *param_2) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + char *pcVar8; + int iVar9; + long lVar10; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == (uint *)0x0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"int cvGraphRemoveVtxByPtr(CvGraph*, CvGraphVtx*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa50); + cv::String::deallocate((String *)&local_10); + uVar1 = *param_2; + } + else { + uVar1 = *param_2; + } + if ((int)uVar1 < 0) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x27); + cVar7 = s_The_vertex_does_not_belong_to_th_004645c8[0x26]; + uVar6 = s_The_vertex_does_not_belong_to_th_004645c8._36_2_; + uVar5 = s_The_vertex_does_not_belong_to_th_004645c8._24_8_; + uVar4 = s_The_vertex_does_not_belong_to_th_004645c8._16_8_; + uVar3 = s_The_vertex_does_not_belong_to_th_004645c8._8_8_; + uVar2 = s_The_vertex_does_not_belong_to_th_004645c8._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_The_vertex_does_not_belong_to_th_004645c8._32_4_; + *(undefined2 *)(pcVar8 + 0x24) = uVar6; + pcVar8[0x26] = cVar7; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + cv::error(-5,(String *)&local_10,"int cvGraphRemoveVtxByPtr(CvGraph*, CvGraphVtx*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa53); + cv::String::deallocate((String *)&local_10); + } + lVar10 = *(long *)(param_2 + 2); + iVar9 = *(int *)(*(long *)(param_1 + 0x70) + 0x68); + if (lVar10 == 0) { + iVar9 = 0; + } + else { + do { + cvGraphRemoveEdgeByPtr(param_1,*(undefined8 *)(lVar10 + 0x18),*(undefined8 *)(lVar10 + 0x20)); + lVar10 = *(long *)(param_2 + 2); + } while (lVar10 != 0); + iVar9 = iVar9 - *(int *)(*(long *)(param_1 + 0x70) + 0x68); + } + *(undefined8 *)(param_2 + 2) = *(undefined8 *)(param_1 + 0x60); + *param_2 = *param_2 & 0x3ffffff | 0x80000000; + *(uint **)(param_1 + 0x60) = param_2; + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + -1; + return iVar9; +} + + +================================================================== + +### FUNC 0029c39c (360 bytes) name=cvGraphRemoveVtx + +int cvGraphRemoveVtx(long param_1,undefined4 param_2) + +{ + undefined8 uVar1; + undefined2 uVar2; + char cVar3; + code *pcVar4; + int iVar5; + uint *puVar6; + char *pcVar7; + uint uVar8; + long lVar9; + undefined8 uVar10; + int iVar11; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"int cvGraphRemoveVtx(CvGraph*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa6c); + cv::String::deallocate((String *)&local_10); + } + puVar6 = (uint *)cvGetSeqElem(param_1,param_2); + if ((puVar6 != (uint *)0x0) && (uVar8 = *puVar6, -1 < (int)uVar8)) { + lVar9 = *(long *)(puVar6 + 2); + iVar5 = *(int *)(*(long *)(param_1 + 0x70) + 0x68); + iVar11 = iVar5 + 1; + if (lVar9 != 0) { + do { + iVar11 = iVar11 + 1; + cvGraphRemoveEdgeByPtr(param_1,*(undefined8 *)(lVar9 + 0x18),*(undefined8 *)(lVar9 + 0x20)); + lVar9 = *(long *)(puVar6 + 2); + } while (lVar9 != 0); + uVar8 = *puVar6; + iVar5 = *(int *)(*(long *)(param_1 + 0x70) + 0x68); + } + uVar10 = *(undefined8 *)(param_1 + 0x60); + *puVar6 = uVar8 & 0x3ffffff | 0x80000000; + *(undefined8 *)(puVar6 + 2) = uVar10; + *(uint **)(param_1 + 0x60) = puVar6; + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + -1; + return iVar11 - iVar5; + } + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar3 = s_The_vertex_is_not_found_004645f0[0x16]; + uVar2 = s_The_vertex_is_not_found_004645f0._20_2_; + uVar1 = s_The_vertex_is_not_found_004645f0._8_8_; + uVar10 = s_The_vertex_is_not_found_004645f0._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_The_vertex_is_not_found_004645f0._16_4_; + *(undefined2 *)(pcVar7 + 0x14) = uVar2; + pcVar7[0x16] = cVar3; + *(undefined8 *)pcVar7 = uVar10; + *(undefined8 *)(pcVar7 + 8) = uVar1; + cv::error(-5,(String *)&local_10,"int cvGraphRemoveVtx(CvGraph*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xa70); + cv::String::deallocate((String *)&local_10); + /* WARNING: Does not return */ + pcVar4 = (code *)SoftwareBreakpoint(1000,0x29c4c0); + (*pcVar4)(); +} + + +================================================================== + +### FUNC 0029c52c (256 bytes) name=cvGraphRemoveEdge + +void cvGraphRemoveEdge(long param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + int *piVar2; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvGraphRemoveEdge(CvGraph*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb54); + cv::String::deallocate((String *)&local_10); + piVar1 = (int *)cvGetSeqElem(0,param_2); + } + else { + piVar1 = (int *)cvGetSeqElem(param_1,param_2); + } + if (piVar1 == (int *)0x0) { + piVar2 = (int *)cvGetSeqElem(param_1,param_3); + } + else { + if (*piVar1 < 0) { + piVar1 = (int *)0x0; + } + piVar2 = (int *)cvGetSeqElem(param_1,param_3); + } + if (piVar2 != (int *)0x0) { + if (*piVar2 < 0) { + piVar2 = (int *)0x0; + } + cvGraphRemoveEdgeByPtr(param_1,piVar1,piVar2); + return; + } + cvGraphRemoveEdgeByPtr(param_1,piVar1,0); + return; +} + + +================================================================== + +### FUNC 0029c640 (156 bytes) name=cvGraphVtxDegreeByPtr + +int cvGraphVtxDegreeByPtr(long param_1,long param_2) + +{ + int iVar1; + long lVar2; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "int cvGraphVtxDegreeByPtr(const CvGraph*, const CvGraphVtx*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb65); + cv::String::deallocate((String *)&local_10); + } + lVar2 = *(long *)(param_2 + 8); + if (lVar2 == 0) { + iVar1 = 0; + } + else { + iVar1 = 0; + do { + iVar1 = iVar1 + 1; + lVar2 = *(long *)(lVar2 + (ulong)(*(long *)(lVar2 + 0x20) == param_2) * 8 + 8); + } while (lVar2 != 0); + } + return iVar1; +} + + +================================================================== + +### FUNC 0029c6f0 (260 bytes) name=cvGraphVtxDegree + +int cvGraphVtxDegree(long param_1,undefined4 param_2) + +{ + code *pcVar1; + int iVar2; + int *piVar3; + long lVar4; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"int cvGraphVtxDegree(const CvGraph*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb7a); + cv::String::deallocate((String *)&local_10); + } + piVar3 = (int *)cvGetSeqElem(param_1,param_2); + if ((piVar3 != (int *)0x0) && (-1 < *piVar3)) { + lVar4 = *(long *)(piVar3 + 2); + if (lVar4 == 0) { + iVar2 = 0; + } + else { + iVar2 = 0; + do { + iVar2 = iVar2 + 1; + lVar4 = *(long *)(lVar4 + (ulong)(piVar3 == *(int **)(lVar4 + 0x20)) * 8 + 8); + } while (lVar4 != 0); + } + return iVar2; + } + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xcc,(String *)&local_10,"int cvGraphVtxDegree(const CvGraph*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb7e); + cv::String::deallocate((String *)&local_10); + /* WARNING: Does not return */ + pcVar1 = (code *)SoftwareBreakpoint(1000,0x29c7a8); + (*pcVar1)(); +} + + +================================================================== + +### FUNC 0029c81c (692 bytes) name=cvCreateGraphScanner + +long * cvCreateGraphScanner(long param_1,long param_2,undefined4 param_3) + +{ + uint *puVar1; + int iVar2; + int iVar3; + undefined8 uVar4; + char cVar5; + long *plVar6; + undefined8 uVar7; + char *pcVar8; + long lVar9; + int iVar10; + long local_40; + long local_38; + uint *local_28; + uint *local_18; + + if (param_1 == 0) { + local_40 = param_1; + local_38 = param_1; + pcVar8 = (char *)cv::String::allocate((String *)&local_40,0x12); + uVar4 = s_Null_graph_pointer_00464608._8_8_; + uVar7 = s_Null_graph_pointer_00464608._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_Null_graph_pointer_00464608._16_2_; + *(undefined8 *)pcVar8 = uVar7; + *(undefined8 *)(pcVar8 + 8) = uVar4; + cv::error(-0x1b,(String *)&local_40, + "CvGraphScanner* cvCreateGraphScanner(CvGraph*, CvGraphVtx*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xbe6); + cv::String::deallocate((String *)&local_40); + } + lVar9 = *(long *)(param_1 + 0x48); + if (lVar9 == 0) { + local_40 = lVar9; + local_38 = lVar9; + pcVar8 = (char *)cv::String::allocate((String *)&local_40,0x13); + cVar5 = s_graph_>storage____0_00464620[0x12]; + uVar4 = s_graph_>storage____0_00464620._8_8_; + uVar7 = s_graph_>storage____0_00464620._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_graph_>storage____0_00464620._16_2_; + pcVar8[0x12] = cVar5; + *(undefined8 *)pcVar8 = uVar7; + *(undefined8 *)(pcVar8 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_40, + "CvGraphScanner* cvCreateGraphScanner(CvGraph*, CvGraphVtx*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xbe8); + cv::String::deallocate((String *)&local_40); + } + plVar6 = (long *)cv::cvAlloc(0x30); + *plVar6 = 0; + plVar6[1] = 0; + plVar6[2] = 0; + plVar6[3] = 0; + plVar6[4] = 0; + plVar6[5] = 0; + plVar6[3] = param_1; + *(undefined4 *)((long)plVar6 + 0x2c) = param_3; + *plVar6 = param_2; + if (param_2 == 0) { + uVar7 = *(undefined8 *)(param_1 + 0x48); + *(undefined4 *)(plVar6 + 5) = 0; + uVar7 = cvCreateChildMemStorage(uVar7); + lVar9 = cvCreateSeq(0,0x70,0x10,uVar7); + plVar6[4] = lVar9; + } + else { + uVar7 = *(undefined8 *)(param_1 + 0x48); + *(undefined4 *)(plVar6 + 5) = 0xffffffff; + uVar7 = cvCreateChildMemStorage(uVar7); + lVar9 = cvCreateSeq(0,0x70,0x10,uVar7); + plVar6[4] = lVar9; + } + iVar2 = *(int *)(param_1 + 0x28); + iVar3 = *(int *)(param_1 + 0x2c); + iVar10 = 0; + cvStartReadSeq(param_1,(String *)&local_40); + if (0 < iVar2) { + do { + while( true ) { + puVar1 = (uint *)((long)local_28 + (long)iVar3); + *local_28 = *local_28 & 0x9fffffff; + local_28 = puVar1; + if (puVar1 < local_18) break; + iVar10 = iVar10 + 1; + cvChangeSeqBlock((String *)&local_40,1); + if (iVar10 == iVar2) goto LAB_0029c910; + } + iVar10 = iVar10 + 1; + } while (iVar10 != iVar2); + } +LAB_0029c910: + lVar9 = *(long *)(param_1 + 0x70); + if (lVar9 == 0) { + local_40 = lVar9; + local_38 = lVar9; + cv::String::allocate((String *)&local_40,0); + cv::error(-0x1b,(String *)&local_40,"void icvSeqElemsClearFlags(CvSeq*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xb99); + cv::String::deallocate((String *)&local_40); + } + iVar2 = *(int *)(lVar9 + 0x28); + iVar3 = *(int *)(lVar9 + 0x2c); + iVar10 = 0; + cvStartReadSeq(lVar9,(String *)&local_40); + if (0 < iVar2) { + do { + while( true ) { + puVar1 = (uint *)((long)local_28 + (long)iVar3); + *local_28 = *local_28 & 0xbfffffff; + local_28 = puVar1; + if (puVar1 < local_18) break; + iVar10 = iVar10 + 1; + cvChangeSeqBlock((String *)&local_40,1); + if (iVar10 == iVar2) { + return plVar6; + } + } + iVar10 = iVar10 + 1; + } while (iVar10 != iVar2); + } + return plVar6; +} + + +================================================================== + +### FUNC 0029cb0c (176 bytes) name=cvReleaseGraphScanner + +void cvReleaseGraphScanner(long *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + void *pvVar5; + char *pcVar6; + long *local_10; + long *local_8; + + if (param_1 == (long *)0x0) { + local_10 = param_1; + local_8 = param_1; + pcVar6 = (char *)cv::String::allocate((String *)&local_10,0x24); + uVar4 = s_Null_double_pointer_to_graph_sca_00464638._24_8_; + uVar3 = s_Null_double_pointer_to_graph_sca_00464638._16_8_; + uVar2 = s_Null_double_pointer_to_graph_sca_00464638._8_8_; + uVar1 = s_Null_double_pointer_to_graph_sca_00464638._0_8_; + *(undefined4 *)(pcVar6 + 0x20) = s_Null_double_pointer_to_graph_sca_00464638._32_4_; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + cv::error(-0x1b,(String *)&local_10,"void cvReleaseGraphScanner(CvGraphScanner**)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xc08); + cv::String::deallocate((String *)&local_10); + } + pvVar5 = (void *)*param_1; + if (pvVar5 != (void *)0x0) { + if (*(long *)((long)pvVar5 + 0x20) != 0) { + cvReleaseMemStorage(*(long *)((long)pvVar5 + 0x20) + 0x48); + pvVar5 = (void *)*param_1; + } + cv::cvFree_(pvVar5); + *param_1 = 0; + } + return; +} + + +================================================================== + +### FUNC 0029cbd0 (960 bytes) name=cvNextGraphItem + +/* WARNING: Type propagation algorithm not settling */ + +uint cvNextGraphItem(ulong *param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + char *pcVar7; + uint uVar8; + uint *puVar9; + ulong uVar10; + uint uVar11; + uint *puVar12; + uint *puVar13; + uint *local_50; + uint *local_48; + ulong local_40; + ulong local_38; + uint *local_28; + uint *local_18; + + if ((param_1 == (ulong *)0x0) || (param_1[4] == 0)) { + local_40 = 0; + local_38 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_40,0x12); + uVar6 = s_Null_graph_scanner_00464660._8_8_; + uVar5 = s_Null_graph_scanner_00464660._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_Null_graph_scanner_00464660._16_2_; + *(undefined8 *)pcVar7 = uVar5; + *(undefined8 *)(pcVar7 + 8) = uVar6; + cv::error(-0x1b,(String *)&local_40,"int cvNextGraphItem(CvGraphScanner*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xc1d); + cv::String::deallocate((String *)&local_40); + } + puVar12 = (uint *)param_1[1]; + puVar9 = (uint *)param_1[2]; + puVar13 = (uint *)*param_1; +LAB_0029cc20: + do { + if ((puVar12 != (uint *)0x0) && (uVar11 = *puVar12, (uVar11 >> 0x1e & 1) == 0)) { + *param_1 = (ulong)puVar12; + uVar1 = *(uint *)((long)param_1 + 0x2c); + *puVar12 = uVar11 | 0x40000000; + puVar9 = *(uint **)(puVar12 + 2); + puVar13 = puVar12; + if ((uVar1 & 1) != 0) { + param_1[2] = (ulong)puVar9; + param_1[1] = 0; + return 1; + } + } +joined_r0x0029cc48: + while (puVar9 != (uint *)0x0) { + uVar11 = *puVar9; + puVar12 = *(uint **)(puVar9 + ((ulong)(*(uint **)(puVar9 + 6) == puVar13) + 2) * 2 + 2); + if ((uVar11 >> 0x1e & 1) == 0) { + if ((*(uint **)(puVar9 + 6) != puVar12) || ((*(uint *)param_1[3] >> 0xe & 1) == 0)) { + uVar1 = *puVar12; + *puVar9 = uVar11 | 0x40000000; + if ((uVar1 >> 0x1e & 1) != 0) { + uVar2 = *(uint *)((long)param_1 + 0x2c); + if ((uVar2 & 0x1c) != 0) { + uVar8 = 4; + if (((uVar1 >> 0x1d & 1) == 0) && (uVar8 = 8, (uVar11 & 0x10000000) == 0)) { + uVar8 = 0x10; + } + *puVar9 = uVar11 & 0xefffffff | 0x40000000; + if ((uVar8 & uVar2) != 0) { + *param_1 = (ulong)puVar13; + param_1[1] = (ulong)puVar12; + param_1[2] = (ulong)puVar9; + return uVar8; + } + } + goto LAB_0029cca0; + } + uVar10 = param_1[4]; + *puVar13 = *puVar13 | 0x20000000; + local_50 = puVar13; + local_48 = puVar9; + cvSeqPush(uVar10,&local_50); + if ((*(uint *)((long)param_1 + 0x2c) >> 1 & 1) != 0) { + *param_1 = (ulong)puVar13; + param_1[1] = (ulong)puVar12; + param_1[2] = (ulong)puVar9; + return 2; + } + goto LAB_0029cc20; + } + if ((*puVar12 & 0x60000000) != 0x60000000) goto LAB_0029cca0; + *puVar9 = uVar11 | 0x10000000; + /* try { // try from 0029cd14 to 0039cd17 has its CatchHandler @ 0029cd24 */ + puVar9 = *(uint **)(puVar9 + (ulong)(*(uint **)(puVar9 + 8) == puVar13) * 2 + 2); + } + else { +LAB_0029cca0: + puVar9 = *(uint **)(puVar9 + (ulong)(*(uint **)(puVar9 + 8) == puVar13) * 2 + 2); + } + } + /* try { // try from 0029cd1c to 0039cd1f has its CatchHandler @ 0029b9cc */ + /* catch() { ... } // from try @ 0029cd14 with catch @ 0029cd24 */ + if (*(int *)(param_1[4] + 0x28) != 0) { + cvSeqPop(param_1[4],&local_50); + uVar11 = *(uint *)((long)param_1 + 0x2c); + /* catch() { ... } // from try @ 0029ce24 with catch @ 0029ce58 */ + *local_50 = *local_50 & 0xdfffffff; + puVar9 = local_48; + puVar13 = local_50; + if ((uVar11 >> 6 & 1) != 0) { + /* try { // try from 0029ce68 to 0039ce6b has its CatchHandler @ 0029cd38 */ + puVar9 = *(uint **)(local_48 + 6); + /* catch() { ... } // from try @ 0029cef4 with catch @ 0029ce6c + catch() { ... } // from try @ 0029cf50 with catch @ 0029ce6c + catch() { ... } // from try @ 0029d570 with catch @ 0029ce6c + catch() { ... } // from try @ 0029d7b8 with catch @ 0029ce6c + catch() { ... } // from try @ 0029d9d4 with catch @ 0029ce6c + catch() { ... } // from try @ 0029da20 with catch @ 0029ce6c + catch() { ... } // from try @ 0029da44 with catch @ 0029ce6c + catch() { ... } // from try @ 0029db28 with catch @ 0029ce6c + catch() { ... } // from try @ 0029dbdc with catch @ 0029ce6c */ + param_1[2] = (ulong)local_48; + *param_1 = (ulong)local_50; + param_1[1] = *(ulong *)(local_48 + ((ulong)(puVar9 == local_50) + 2) * 2 + 2); + return 0x40; + } + goto joined_r0x0029cc48; + } + /* try { // try from 0029cef4 to 0039cef7 has its CatchHandler @ 0029ce6c */ + if ((-1 < (int)param_1[5]) || + (*(undefined4 *)(param_1 + 5) = 0, puVar12 = puVar13, puVar13 == (uint *)0x0)) { + uVar10 = param_1[3]; + /* try { // try from 0029cd34 to 0039cd37 has its CatchHandler @ 0029b9cc */ + if (uVar10 == 0) { + local_40 = uVar10; + local_38 = uVar10; + /* try { // try from 0029cf48 to 0039cf4b has its CatchHandler @ 0029db18 */ + cv::String::allocate((String *)&local_40,0); + /* try { // try from 0029cf50 to 0039cf53 has its CatchHandler @ 0029ce6c */ + cv::error(-0x1b,(String *)&local_40,"schar* icvSeqFindNextElem(CvSeq*, int, int, int, int*)" + ,"/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",2999); + cv::String::deallocate((String *)&local_40); + } + /* catch() { ... } // from try @ 0029cd78 with catch @ 0029cd38 + catch() { ... } // from try @ 0029ce2c with catch @ 0029cd38 + catch() { ... } // from try @ 0029ce68 with catch @ 0029cd38 */ + uVar1 = *(uint *)(uVar10 + 0x28); + iVar3 = *(int *)(uVar10 + 0x2c); + uVar11 = (uint)param_1[5]; + if (uVar1 == 0) { + /* try { // try from 0029ce24 to 0039ce27 has its CatchHandler @ 0029ce58 */ + /* try { // try from 0029ce2c to 0039ce4f has its CatchHandler @ 0029cd38 */ + return 0xffffffff; + } + if (uVar1 <= uVar11) { + iVar4 = 0; + if (uVar1 != 0) { + iVar4 = (int)uVar11 / (int)uVar1; + } + iVar4 = uVar11 - iVar4 * uVar1; + uVar11 = 0; + if (iVar4 < 0) { + uVar11 = uVar1; + } + uVar11 = iVar4 + uVar11; + } + cvStartReadSeq(uVar10,(String *)&local_40,0); + if (uVar11 != 0) { + cvSetSeqReaderPos((String *)&local_40,uVar11,0); + } + /* try { // try from 0029cd78 to 0039ce07 has its CatchHandler @ 0029cd38 */ + if ((int)uVar1 < 1) { + return 0xffffffff; + } + uVar11 = 0; + if ((*local_28 & 0xc0000000) != 0) { + uVar11 = 0; + do { + local_28 = (uint *)((long)local_28 + (long)iVar3); + if (local_18 <= local_28) { + cvChangeSeqBlock((String *)&local_40,1); + } + uVar11 = uVar11 + 1; + if (uVar11 == uVar1) { + return 0xffffffff; + } + } while ((*local_28 & 0xc0000000) != 0); + } + *(uint *)(param_1 + 5) = uVar11; + puVar12 = local_28; + } + if ((*(uint *)((long)param_1 + 0x2c) >> 5 & 1) != 0) { + param_1[1] = (ulong)puVar12; + /* try { // try from 0029cf7c to 0039cf7f has its CatchHandler @ 0029dab4 */ + param_1[2] = 0; + *param_1 = 0; + return 0x20; + } + puVar9 = (uint *)0x0; + puVar13 = puVar12; + } while( true ); +} + + +================================================================== + +### FUNC 0029cfb8 (980 bytes) name=cvCloneGraph + +long cvCloneGraph(uint *param_1,long param_2) + +{ + long lVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + char cVar6; + int *piVar7; + int iVar8; + char *pcVar9; + void *pvVar10; + void *pvVar11; + long lVar12; + long lVar13; + int iVar14; + int iVar15; + int *local_48; + long local_40; + long local_38; + int *local_28; + int *local_18; + + /* try { // try from 0029cfc0 to 0039cfc3 has its CatchHandler @ 0029daa0 */ + /* try { // try from 0029cfc8 to 0039cfcb has its CatchHandler @ 0029da9c */ + /* try { // try from 0029cfd0 to 0039cfd3 has its CatchHandler @ 0029da98 */ + /* try { // try from 0029cfe0 to 0039cfe3 has its CatchHandler @ 0029da84 */ + if ((param_1 == (uint *)0x0) || ((*param_1 & 0xffff3000) != 0x42981000)) { + /* try { // try from 0029d008 to 0039d01b has its CatchHandler @ 0029db94 */ + local_40 = 0; + local_38 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_40,0x15); + cVar6 = s_Invalid_graph_pointer_00464678[0x14]; + uVar5 = s_Invalid_graph_pointer_00464678._8_8_; + uVar4 = s_Invalid_graph_pointer_00464678._0_8_; + /* try { // try from 0029d04c to 0039d077 has its CatchHandler @ 0029db84 */ + *(undefined4 *)(pcVar9 + 0x10) = s_Invalid_graph_pointer_00464678._16_4_; + pcVar9[0x14] = cVar6; + *(undefined8 *)pcVar9 = uVar4; + *(undefined8 *)(pcVar9 + 8) = uVar5; + cv::error(-5,(String *)&local_40,"CvGraph* cvCloneGraph(const CvGraph*, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xcb9); + cv::String::deallocate((String *)&local_40); + } + if ((param_2 == 0) && (param_2 = *(long *)(param_1 + 0x12), param_2 == 0)) { + local_40 = param_2; + local_38 = param_2; + pcVar9 = (char *)cv::String::allocate((String *)&local_40,0x14); + uVar5 = s_NULL_storage_pointer_0043dfe8._8_8_; + uVar4 = s_NULL_storage_pointer_0043dfe8._0_8_; + *(undefined4 *)(pcVar9 + 0x10) = s_NULL_storage_pointer_0043dfe8._16_4_; + *(undefined8 *)pcVar9 = uVar4; + *(undefined8 *)(pcVar9 + 8) = uVar5; + cv::error(-0x1b,(String *)&local_40,"CvGraph* cvCloneGraph(const CvGraph*, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xcbf); + cv::String::deallocate((String *)&local_40); + } + uVar2 = param_1[0xb]; + iVar8 = *(int *)(*(long *)(param_1 + 0x1c) + 0x2c); + pvVar10 = (void *)cv::cvAlloc((long)(int)param_1[10] << 2); + pvVar11 = (void *)cv::cvAlloc((long)(int)param_1[10] << 3); + /* try { // try from 0029d0b0 to 0039d0b3 has its CatchHandler @ 0029db48 */ + /* try { // try from 0029d0b8 to 0039d52b has its CatchHandler @ 0029db84 */ + lVar12 = cvCreateGraph(*param_1,param_1[1],uVar2,iVar8,param_2); + memcpy((void *)(lVar12 + 0x3840),param_1 + 0xe10,(long)(int)param_1[1] - 0x78); + cvStartReadSeq(param_1,(String *)&local_40,0); + if (0 < (int)param_1[10]) { + iVar15 = 0; + iVar14 = 0; + do { + while( true ) { + piVar7 = local_28; + if (-1 < *local_28) { + local_48 = (int *)0x0; + cvGraphAddVtx(lVar12,local_28,&local_48); + lVar13 = (long)iVar15; + iVar3 = *piVar7; + *local_48 = iVar3; + *(int *)((long)pvVar10 + lVar13 * 4) = iVar3; + *piVar7 = iVar15; + iVar15 = iVar15 + 1; + *(int **)((long)pvVar11 + lVar13 * 8) = local_48; + } + local_28 = (int *)((long)local_28 + (long)(int)uVar2); + if (local_28 < local_18) break; + iVar14 = iVar14 + 1; + cvChangeSeqBlock((String *)&local_40,1); + if ((int)param_1[10] <= iVar14) goto LAB_0029d190; + } + iVar14 = iVar14 + 1; + } while (iVar14 < (int)param_1[10]); + } +LAB_0029d190: + iVar15 = 0; + cvStartReadSeq(*(undefined8 *)(param_1 + 0x1c),(String *)&local_40); + if (0 < *(int *)(*(long *)(param_1 + 0x1c) + 0x28)) { + do { + while( true ) { + piVar7 = local_28; + if (-1 < *local_28) { + local_48 = (int *)0x0; + cvGraphAddEdgeByPtr(lVar12,*(undefined8 *) + ((long)pvVar11 + (long)**(int **)(local_28 + 6) * 8), + *(undefined8 *)((long)pvVar11 + (long)**(int **)(local_28 + 8) * 8), + local_28,&local_48); + *local_48 = *piVar7; + } + local_28 = (int *)((long)local_28 + (long)iVar8); + if (local_28 < local_18) break; + iVar15 = iVar15 + 1; + cvChangeSeqBlock((String *)&local_40,1); + if (*(int *)(*(long *)(param_1 + 0x1c) + 0x28) <= iVar15) goto LAB_0029d254; + } + iVar15 = iVar15 + 1; + } while (iVar15 < *(int *)(*(long *)(param_1 + 0x1c) + 0x28)); + } +LAB_0029d254: + cvStartReadSeq(param_1,(String *)&local_40,0); + lVar13 = *(long *)(param_1 + 0x1c); + if (0 < *(int *)(lVar13 + 0x28)) { + iVar8 = 0; + iVar15 = 0; + do { + while( true ) { + if (-1 < *local_28) { + lVar1 = (long)iVar8; + iVar8 = iVar8 + 1; + *local_28 = *(int *)((long)pvVar10 + lVar1 * 4); + } + local_28 = (int *)((long)local_28 + (long)(int)uVar2); + if (local_28 < local_18) break; + iVar15 = iVar15 + 1; + cvChangeSeqBlock((String *)&local_40,1); + lVar13 = *(long *)(param_1 + 0x1c); + if (*(int *)(lVar13 + 0x28) <= iVar15) goto LAB_0029d2e4; + } + iVar15 = iVar15 + 1; + } while (iVar15 < *(int *)(lVar13 + 0x28)); + } +LAB_0029d2e4: + cv::cvFree_(pvVar10); + cv::cvFree_(pvVar11); + iVar8 = cvGetErrStatus(); + if (iVar8 < 0) { + lVar12 = 0; + } + return lVar12; +} + + +================================================================== + +### FUNC 0029d3b4 (156 bytes) name=cvInsertNodeIntoTree + +void cvInsertNodeIntoTree(long param_1,long param_2,long param_3) + +{ + long lVar1; + long lVar2; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == 0) || (param_2 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvInsertNodeIntoTree(void*, void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd3b); + cv::String::deallocate((String *)&local_10); + } + lVar2 = *(long *)(param_2 + 0x20); + lVar1 = param_2; + if (param_2 == param_3) { + lVar1 = 0; + } + *(long *)(param_1 + 0x10) = lVar2; + *(long *)(param_1 + 0x18) = lVar1; + if (lVar2 != 0) { + *(long *)(lVar2 + 8) = param_1; + } + *(long *)(param_2 + 0x20) = param_1; + return; +} + + +================================================================== + +### FUNC 0029d464 (308 bytes) name=cvRemoveNodeFromTree + +void cvRemoveNodeFromTree(long param_1,long param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + long lVar6; + char *pcVar7; + long local_10; + long local_8; + + if (param_1 == 0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10,"void cvRemoveNodeFromTree(void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd50); + cv::String::deallocate((String *)&local_10); + } + if (param_1 == param_2) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_frame_node_could_not_be_deleted_00464690[0x1e]; + uVar4 = s_frame_node_could_not_be_deleted_00464690._28_2_; + uVar3 = s_frame_node_could_not_be_deleted_00464690._24_4_; + uVar2 = s_frame_node_could_not_be_deleted_00464690._8_8_; + uVar1 = s_frame_node_could_not_be_deleted_00464690._0_8_; + /* try { // try from 0029d54c to 0039d567 has its CatchHandler @ 0029db98 */ + *(undefined8 *)(pcVar7 + 0x10) = s_frame_node_could_not_be_deleted_00464690._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar3; + *(undefined2 *)(pcVar7 + 0x1c) = uVar4; + /* try { // try from 0029d570 to 0039d573 has its CatchHandler @ 0029ce6c */ + pcVar7[0x1e] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-5,(String *)&local_10,"void cvRemoveNodeFromTree(void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd53); + cv::String::deallocate((String *)&local_10); + } + lVar6 = *(long *)(param_1 + 0x10); + if (lVar6 != 0) { + *(undefined8 *)(lVar6 + 8) = *(undefined8 *)(param_1 + 8); + } + if (*(long *)(param_1 + 8) == 0) { + if (*(long *)(param_1 + 0x18) == 0) { + if (param_2 == 0) { + return; + } + *(long *)(param_2 + 0x20) = lVar6; + } + else { + *(long *)(*(long *)(param_1 + 0x18) + 0x20) = lVar6; + } + return; + } + *(long *)(*(long *)(param_1 + 8) + 0x10) = lVar6; + return; +} + + +================================================================== + +### FUNC 0029d5c0 (236 bytes) name=cvInitTreeNodeIterator + +void cvInitTreeNodeIterator(long *param_1,long param_2,int param_3) + +{ + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == (long *)0x0) || (param_2 == 0)) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0x1b,(String *)&local_10, + "void cvInitTreeNodeIterator(CvTreeNodeIterator*, const void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd6e); + /* try { // try from 0029d640 to 0039d71f has its CatchHandler @ 0029db84 */ + cv::String::deallocate((String *)&local_10); + } + if (param_3 < 0) { + local_10 = 0; + local_8 = 0; + cv::String::allocate((String *)&local_10,0); + cv::error(-0xd3,(String *)&local_10, + "void cvInitTreeNodeIterator(CvTreeNodeIterator*, const void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd71); + cv::String::deallocate((String *)&local_10); + *param_1 = param_2; + *(undefined4 *)(param_1 + 1) = 0; + *(int *)((long)param_1 + 0xc) = param_3; + return; + } + *param_1 = param_2; + *(undefined4 *)(param_1 + 1) = 0; + *(int *)((long)param_1 + 0xc) = param_3; + return; +} + + +================================================================== + +### FUNC 0029d6d4 (288 bytes) name=cvNextTreeNode + +void cvNextTreeNode(long *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + long lVar4; + char *pcVar5; + int iVar6; + int iVar7; + long lVar8; + long *local_10; + long *local_8; + + if (param_1 == (long *)0x0) { + local_10 = param_1; + local_8 = param_1; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x15); + cVar3 = s_NULL_iterator_pointer_004618c0[0x14]; + uVar2 = s_NULL_iterator_pointer_004618c0._8_8_; + uVar1 = s_NULL_iterator_pointer_004618c0._0_8_; + /* try { // try from 0029d7b8 to 0039d7bb has its CatchHandler @ 0029ce6c */ + /* try { // try from 0029d7c4 to 0039d99f has its CatchHandler @ 0029db84 */ + *(undefined4 *)(pcVar5 + 0x10) = s_NULL_iterator_pointer_004618c0._16_4_; + pcVar5[0x14] = cVar3; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10,"void* cvNextTreeNode(CvTreeNodeIterator*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd81); + cv::String::deallocate((String *)&local_10); + } + lVar4 = *param_1; + iVar6 = (int)param_1[1]; + if (lVar4 == 0) { + *(int *)(param_1 + 1) = iVar6; + *param_1 = 0; + return; + } + lVar8 = *(long *)(lVar4 + 0x20); + if ((lVar8 == 0) || (iVar7 = iVar6 + 1, *(int *)((long)param_1 + 0xc) <= iVar6 + 1)) { + while (lVar8 = *(long *)(lVar4 + 0x10), lVar8 == 0) { + iVar6 = iVar6 + -1; + lVar4 = *(long *)(lVar4 + 0x18); + if (iVar6 < 0) { + *param_1 = 0; + *(int *)(param_1 + 1) = iVar6; + return; + } + } + iVar7 = iVar6; + if (*(int *)((long)param_1 + 0xc) == 0) { + lVar8 = 0; + } + } + *param_1 = lVar8; + *(int *)(param_1 + 1) = iVar7; + return; +} + + +================================================================== + +### FUNC 0029d808 (236 bytes) name=cvTreeToNodeSeq + +undefined8 cvTreeToNodeSeq(long param_1,int param_2,long param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + char *pcVar3; + long local_18; + long local_10; + long local_8; + + if (param_3 == 0) { + local_10 = param_3; + local_8 = param_3; + pcVar3 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar1 = s_NULL_storage_pointer_0043dfe8._8_8_; + uVar2 = s_NULL_storage_pointer_0043dfe8._0_8_; + *(undefined4 *)(pcVar3 + 0x10) = s_NULL_storage_pointer_0043dfe8._16_4_; + *(undefined8 *)pcVar3 = uVar2; + *(undefined8 *)(pcVar3 + 8) = uVar1; + cv::error(-0x1b,(String *)&local_10,"CvSeq* cvTreeToNodeSeq(const void*, int, CvMemStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xd0d); + cv::String::deallocate((String *)&local_10); + } + uVar2 = cvCreateSeq(0,(long)param_2,8,param_3); + if (param_1 != 0) { + cvInitTreeNodeIterator(&local_10,param_1,0x7fffffff); + while( true ) { + local_18 = cvNextTreeNode(&local_10); + if (local_18 == 0) break; + cvSeqPush(uVar2,&local_18); + } + } + return uVar2; +} + + +================================================================== + +### FUNC 0029d908 (248 bytes) name=cvPrevTreeNode + +void cvPrevTreeNode(long *param_1) + +{ + int iVar1; + long lVar2; + long lVar3; + long *local_10; + long *local_8; + + if (param_1 == (long *)0x0) { + local_10 = param_1; + local_8 = param_1; + cv::String::allocate((String *)&local_10,0); + /* try { // try from 0029d9d4 to 0039d9d7 has its CatchHandler @ 0029ce6c */ + cv::error(-0x1b,(String *)&local_10,"void* cvPrevTreeNode(CvTreeNodeIterator*)", + "/builds/master_pack-android/opencv/modules/core/src/datastructs.cpp",0xdaa); + cv::String::deallocate((String *)&local_10); + } + lVar2 = *param_1; + iVar1 = (int)param_1[1]; + if (lVar2 == 0) { + *(int *)(param_1 + 1) = iVar1; + *param_1 = 0; + return; + } + lVar3 = *(long *)(lVar2 + 8); + if (lVar3 == 0) { + lVar3 = *(long *)(lVar2 + 0x18); + *(int *)(param_1 + 1) = iVar1 + -1; + lVar2 = 0; + if (-1 < iVar1 + -1) { + lVar2 = lVar3; + } + *param_1 = lVar2; + return; + } + lVar2 = *(long *)(lVar3 + 0x20); + while ((lVar2 != 0 && (iVar1 < *(int *)((long)param_1 + 0xc)))) { + iVar1 = iVar1 + 1; + do { + lVar3 = lVar2; + lVar2 = *(long *)(lVar3 + 0x10); + } while (*(long *)(lVar3 + 0x10) != 0); + lVar2 = *(long *)(lVar3 + 0x20); + } + *param_1 = lVar3; + *(int *)(param_1 + 1) = iVar1; + return; +} + + +================================================================== + +### FUNC 0029da14 (4 bytes) name=seqPush + +/* cv::seqPush(CvSeq*, void const*) */ + +void cv::seqPush(CvSeq *param_1,void *param_2) + +{ + (*(code *)PTR_cvSeqPush_00501770)(); + return; +} + + +================================================================== + +### FUNC 0029da18 (4 bytes) name=seqPushFront + +/* cv::seqPushFront(CvSeq*, void const*) */ + +void cv::seqPushFront(CvSeq *param_1,void *param_2) + +{ + (*(code *)PTR_cvSeqPushFront_00500128)(); + return; + /* try { // try from 0029da18 to 0039da1b has its CatchHandler @ 0029da34 */ +} + + +================================================================== + +### FUNC 0029da1c (4 bytes) name=seqPop + +/* cv::seqPop(CvSeq*, void*) */ + +void cv::seqPop(CvSeq *param_1,void *param_2) + +{ + (*(code *)PTR_cvSeqPop_004ff918)(); + return; +} + + +================================================================== + +### FUNC 0029da20 (4 bytes) name=seqPopFront + +/* cv::seqPopFront(CvSeq*, void*) */ + +void cv::seqPopFront(CvSeq *param_1,void *param_2) + +{ + (*(code *)PTR_cvSeqPopFront_004ffa90)(); + return; + /* try { // try from 0029da20 to 0039da23 has its CatchHandler @ 0029ce6c */ +} + + +================================================================== + +### FUNC 0029da24 (4 bytes) name=seqRemove + +/* cv::seqRemove(CvSeq*, int) */ + +void cv::seqRemove(CvSeq *param_1,int param_2) + +{ + (*(code *)PTR_cvSeqRemove_00501660)(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 0029da28 (4 bytes) name=clearSeq + +/* cv::clearSeq(CvSeq*) */ + +void cv::clearSeq(CvSeq *param_1) + +{ + (*(code *)PTR_cvClearSeq_00500f20)(); + return; +} + + +================================================================== + +### FUNC 0029da2c (4 bytes) name=getSeqElem + +/* cv::getSeqElem(CvSeq const*, int) */ + +void cv::getSeqElem(CvSeq *param_1,int param_2) + +{ + (*(code *)PTR_cvGetSeqElem_004ff630)(param_1,param_2); + return; + /* try { // try from 0029da2c to 0039da2f has its CatchHandler @ 0029da48 */ +} + + +================================================================== + +### FUNC 0029da30 (4 bytes) name=seqRemoveSlice + +/* cv::seqRemoveSlice(CvSeq*, CvSlice) */ + +void cv::seqRemoveSlice(void) + +{ + (*(code *)PTR_cvSeqRemoveSlice_00501250)(); + return; +} + + +================================================================== + +### FUNC 0029da34 (4 bytes) name=seqInsertSlice + +/* cv::seqInsertSlice(CvSeq*, int, void const*) */ + +void cv::seqInsertSlice(CvSeq *param_1,int param_2,void *param_3) + +{ + (*(code *)PTR_cvSeqInsertSlice_005002a0)(param_1,param_2); + return; + /* catch() { ... } // from try @ 0029da18 with catch @ 0029da34 */ +} + + +================================================================== + +### FUNC 0029da38 (2140 bytes) name=FUN_0029da38 + +void FUN_0029da38(uint param_1,int param_2,uint *param_3,double *param_4,int param_5,double *param_6 + ,int param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + ulong uVar5; + int iVar6; + long lVar7; + int *piVar8; + ulong uVar9; + int iVar10; + double *pdVar11; + uint uVar12; + int iVar13; + ulong uVar14; + int *piVar15; + int *piVar16; + uint *puVar17; + double *pdVar18; + ulong uVar19; + ulong uVar20; + long lVar21; + double *pdVar22; + uint uVar23; + ulong uVar24; + double dVar25; + double dVar26; + undefined8 uVar27; + double dVar28; + double dVar29; + int iVar30; + double dVar31; + int local_110 [34]; + int local_88 [34]; + + /* try { // try from 0029da44 to 0039da47 has its CatchHandler @ 0029ce6c */ + lVar21 = (long)(int)param_1; + /* catch() { ... } // from try @ 0029da2c with catch @ 0029da48 */ + uVar23 = *param_3; + uVar24 = (ulong)uVar23; + if ((int)param_1 < 6) { + *(int *)param_4 = 0; + *(uint *)((long)param_4 + (long)(int)param_1 * 4 + -4) = param_1 - 1; + /* catch() { ... } // from try @ 0029cfe0 with catch @ 0029da84 */ + if (param_1 != 4) { + if (1 < (int)(param_1 - 1)) { + uVar4 = param_1 - 2; + /* catch() { ... } // from try @ 0029cfd0 with catch @ 0029da98 */ + /* catch() { ... } // from try @ 0029cfc8 with catch @ 0029da9c */ + uVar23 = (uint)((ulong)((long)param_4 + 4) >> 2) & 1; + /* catch() { ... } // from try @ 0029cfc0 with catch @ 0029daa0 */ + if (uVar4 < uVar23) { + uVar23 = uVar4; + } + if (uVar4 < 0xb) { + uVar23 = uVar4; + } + if (uVar23 == 0) { + iVar10 = 1; + } + else { + /* catch() { ... } // from try @ 0029cf7c with catch @ 0029dab4 */ + *(int *)((long)param_4 + 4) = 1; + if (uVar23 == 1) { + iVar10 = 2; + } + else { + *(int *)(param_4 + 1) = 2; + /* try { // try from 0029dacc to 0039dacf has its CatchHandler @ 0029db44 */ + if (uVar23 == 3) { + *(int *)((long)param_4 + 0xc) = 3; + iVar10 = 4; + } + else { + iVar10 = 3; + } + } + if (uVar23 == uVar4) goto LAB_0029db4c; + } + iVar30 = ((uVar4 - uVar23) - 2 >> 1) + 1; + iVar13 = iVar30 * 2; + if (param_1 - uVar23 != 3) { + /* try { // try from 0029db08 to 0039db0b has its CatchHandler @ 0029db30 */ + /* try { // try from 0029db10 to 0039db13 has its CatchHandler @ 0029db2c */ + /* catch() { ... } // from try @ 0029cf48 with catch @ 0029db18 */ + piVar8 = (int *)((long)param_4 + ((ulong)uVar23 + 1) * 4); + /* try { // try from 0029db28 to 0039db2b has its CatchHandler @ 0029ce6c */ + *(ulong *)piVar8 = CONCAT44(iVar10 + 1,iVar10); + /* catch() { ... } // from try @ 0029db10 with catch @ 0029db2c */ + /* catch() { ... } // from try @ 0029db08 with catch @ 0029db30 */ + if (iVar30 != 1) { + *(ulong *)(piVar8 + 2) = CONCAT44(iVar10 + 3,iVar10 + 2); + } + iVar10 = iVar10 + iVar13; + /* catch() { ... } // from try @ 0029dacc with catch @ 0029db44 */ + if (iVar13 == uVar4 - uVar23) goto LAB_0029db4c; + } + /* catch() { ... } // from try @ 0029d0b0 with catch @ 0029db48 */ + *(int *)((long)param_4 + (long)iVar10 * 4) = iVar10; + } +LAB_0029db4c: + if (param_1 != 5) { + return; + } + if (param_5 != 0x10) { + *(int *)param_6 = 0x3f800000; + *(int *)((long)param_6 + 4) = 0; + return; + } + *param_6 = 1.0; + param_6[1] = 0.0; + return; + } + uVar19 = 2; + *(int *)((long)param_4 + 4) = 2; + *(int *)(param_4 + 1) = 1; + uVar23 = 0; + } + else { + local_88[param_2] = 1; + local_110[param_2] = 0; + /* catch() { ... } // from try @ 0029d008 with catch @ 0029db94 */ + /* catch() { ... } // from try @ 0029d04c with catch @ 0029db84 + catch() { ... } // from try @ 0029d0b8 with catch @ 0029db84 + catch() { ... } // from try @ 0029d640 with catch @ 0029db84 + catch() { ... } // from try @ 0029d7c4 with catch @ 0029db84 + catch() { ... } // from try @ 0029dbc4 with catch @ 0029db84 */ + if (0 < param_2) { + /* catch() { ... } // from try @ 0029d54c with catch @ 0029db98 */ + /* try { // try from 0029dba8 to 0039dbaf has its CatchHandler @ 0029dbd0 */ + uVar19 = (ulong)(param_2 - 1); + /* try { // try from 0029dbc4 to 0039dbc7 has its CatchHandler @ 0029db84 */ + memset(local_110,0,(uVar19 + 1) * 4); + /* catch() { ... } // from try @ 0029dba8 with catch @ 0029dbd0 */ + /* try { // try from 0029dbdc to 0039dbdf has its CatchHandler @ 0029ce6c */ + /* catch() { ... } // from try @ 0029dc28 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029dca0 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e0c8 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e11c with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e234 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e444 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e4a4 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e5e8 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e668 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e6d0 with catch @ 0029dbe0 + catch() { ... } // from try @ 0029e6e4 with catch @ 0029dbe0 */ + iVar10 = local_88[param_2]; + puVar17 = param_3 + (long)param_2 + -1; + do { + iVar10 = iVar10 * *puVar17; + local_88[(int)uVar19] = iVar10; + uVar4 = (int)uVar19 - 1; + uVar19 = (ulong)uVar4; + puVar17 = puVar17 + -1; + } while (uVar4 != 0xffffffff); + } + pdVar11 = param_4; + if (param_7 == 0) { + if ((uVar23 & 1) != 0) goto LAB_0029dc1c; +LAB_0029ddc4: + uVar19 = (ulong)(uVar23 & 1); + iVar10 = (int)(uVar23 * local_88[1]) >> 1; + if (uVar23 < 2) { +LAB_0029dee8: + *(int *)pdVar11 = 0; + *(int *)((long)pdVar11 + 4) = iVar10; + } + else { + do { + uVar4 = (int)uVar19 + 1; + uVar19 = (ulong)uVar4; + } while ((uint)(1 << (ulong)(uVar4 & 0x1f)) < uVar23); + if ((int)uVar23 < 3) goto LAB_0029dee8; + iVar30 = (int)(uVar23 * local_88[1]) >> 2; + if ((int)uVar23 < 0x101) { + if (uVar23 != 3) { + iVar13 = 0; + pdVar18 = pdVar11; + do { + iVar6 = iVar13 >> 2; + iVar13 = iVar13 + 4; + iVar6 = ((int)(uint)(byte)(&DAT_00465550)[iVar6] >> (10 - uVar4 & 0x1f)) * local_88[1] + ; + /* try { // try from 0029de3c to 0039de3f has its CatchHandler @ 0029e6f4 */ + *(int *)pdVar18 = iVar6; + /* try { // try from 0029de44 to 0039def7 has its CatchHandler @ 0029e714 */ + *(int *)((long)pdVar18 + 4) = iVar6 + iVar10; + *(int *)(pdVar18 + 1) = iVar6 + iVar30; + *(int *)((long)pdVar18 + 0xc) = iVar30 + iVar6 + iVar10; + pdVar18 = pdVar18 + 2; + } while (iVar13 < (int)(uVar23 - 3)); + } + } + else { + uVar14 = 0; + pdVar18 = pdVar11; + do { + uVar20 = uVar14 >> 2; + iVar13 = (int)uVar14; + uVar9 = uVar14 >> 10; + uVar5 = uVar14 >> 0x12; + uVar1 = iVar13 + 4; + uVar14 = (ulong)uVar1; + /* try { // try from 0029e22c to 0039e22f has its CatchHandler @ 0029e6d4 */ + /* try { // try from 0029e234 to 0039e237 has its CatchHandler @ 0029dbe0 */ + iVar13 = ((uint)(byte)(&DAT_00465550)[iVar13 >> 0x1a] + + (uint)(byte)(&DAT_00465550)[uVar20 & 0xff] * 0x1000000 + + (uint)(byte)(&DAT_00465550)[uVar9 & 0xff] * 0x10000 + + (uint)(byte)(&DAT_00465550)[uVar5 & 0xff] * 0x100 >> + (ulong)(0x22 - uVar4 & 0x1f)) * local_88[1]; + *(int *)pdVar18 = iVar13; + *(int *)((long)pdVar18 + 4) = iVar13 + iVar10; + /* try { // try from 0029e25c to 0039e437 has its CatchHandler @ 0029e714 */ + *(int *)(pdVar18 + 1) = iVar13 + iVar30; + *(int *)((long)pdVar18 + 0xc) = iVar30 + iVar13 + iVar10; + pdVar18 = pdVar18 + 2; + } while ((int)uVar1 < (int)uVar23); + } + } + local_110[1] = local_110[1] + 1; + if ((1 < param_2) && ((int)uVar23 < (int)param_1)) { + /* try { // try from 0029df14 to 0039df17 has its CatchHandler @ 0029e66c */ + uVar14 = uVar24 << 2; + uVar4 = -((uint)((ulong)pdVar11 >> 2) & 3) & 3; + uVar1 = uVar23; + if (uVar4 < uVar23) { + uVar1 = uVar4; + } + uVar20 = (ulong)uVar1; + /* try { // try from 0029df40 to 0039df43 has its CatchHandler @ 0029e704 */ + /* try { // try from 0029df48 to 0039df67 has its CatchHandler @ 0029e66c */ + uVar4 = ((uVar23 - uVar1) - 4 >> 2) + 1; + iVar30 = uVar4 * 4; + iVar10 = local_88[2]; + pdVar18 = pdVar11; +LAB_0029df8c: + pdVar18 = (double *) + ((long)pdVar18 + (-(ulong)(uVar23 >> 0x1f) & 0xfffffffc00000000 | uVar14)); + iVar13 = (int)uVar24; + if (0 < (int)uVar23) { + if (((0x10 - (long)pdVar11) + (long)pdVar18 < 1 || pdVar11 + 2 <= pdVar18) && (9 < uVar23) + ) { + uVar24 = uVar20; + if ((uVar1 != 0) && (*(int *)pdVar18 = *(int *)pdVar11 + iVar10, uVar1 != 1)) { + /* try { // try from 0029dfd8 to 0039e027 has its CatchHandler @ 0029e714 */ + *(int *)((long)pdVar18 + 4) = *(int *)((long)pdVar11 + 4) + iVar10; + if (uVar1 == 3) { + *(int *)(pdVar18 + 1) = *(int *)(pdVar11 + 1) + iVar10; + uVar24 = 3; + } + else { + uVar24 = 2; + } + } + if (2 < (uVar23 - 1) - uVar1) { + uVar12 = 0; + piVar8 = (int *)((long)pdVar18 + uVar20 * 4); + piVar16 = (int *)((long)pdVar11 + uVar20 * 4); + do { + uVar27 = *(undefined8 *)piVar16; + uVar12 = uVar12 + 1; + *(ulong *)(piVar8 + 2) = + CONCAT44(iVar10 + (int)((ulong)*(undefined8 *)(piVar16 + 2) >> 0x20), + iVar10 + (int)*(undefined8 *)(piVar16 + 2)); + *(ulong *)piVar8 = + CONCAT44(iVar10 + (int)((ulong)uVar27 >> 0x20),iVar10 + (int)uVar27); + piVar8 = piVar8 + 4; + piVar16 = piVar16 + 4; + } while (uVar12 < uVar4); + uVar24 = (ulong)(uint)((int)uVar24 + iVar30); + if (iVar30 == uVar23 - uVar1) goto LAB_0029e09c; + } + uVar9 = -(uVar24 >> 0x1f) & 0xfffffffc00000000 | uVar24 << 2; + iVar6 = (int)uVar24; + *(int *)((long)pdVar11 + (long)(iVar13 + iVar6) * 4) = + *(int *)((long)pdVar11 + uVar9) + iVar10; + if (iVar6 + 1 < (int)uVar23) { + *(int *)((long)pdVar11 + (long)(iVar13 + iVar6 + 1) * 4) = + *(int *)((long)pdVar11 + uVar9 + 4) + iVar10; + if (iVar6 + 2 < (int)uVar23) { + *(int *)((long)pdVar11 + (long)(iVar13 + iVar6 + 2) * 4) = + *(int *)((long)pdVar11 + uVar9 + 8) + iVar10; + } + } + } + else { + lVar7 = 0; + do { + /* try { // try from 0029e11c to 0039e1ff has its CatchHandler @ 0029dbe0 */ + *(int *)((long)pdVar18 + lVar7 * 4) = *(int *)((long)pdVar11 + lVar7 * 4) + iVar10; + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)uVar23); + } + } +LAB_0029e09c: + uVar24 = (ulong)(iVar13 + uVar23); + if ((int)(iVar13 + uVar23) < (int)param_1) { + iVar10 = iVar10 + local_88[2]; + local_110[1] = local_110[1] + 1; + if ((int)param_3[1] <= local_110[1]) { + /* try { // try from 0029e0c8 to 0039e0cb has its CatchHandler @ 0029dbe0 */ + piVar8 = local_110 + 2; + puVar17 = param_3 + 2; + piVar16 = local_88 + 3; + iVar13 = local_88[1]; + iVar6 = local_88[2]; + do { + iVar2 = *piVar8; + uVar12 = *puVar17; + iVar3 = *piVar16; + piVar8[-1] = 0; + *piVar8 = iVar2 + 1; + iVar10 = iVar10 + (iVar3 - iVar13); + /* try { // try from 0029e100 to 0039e113 has its CatchHandler @ 0029e714 */ + piVar8 = piVar8 + 1; + puVar17 = puVar17 + 1; + piVar16 = piVar16 + 1; + iVar13 = iVar6; + iVar6 = iVar3; + } while ((int)uVar12 <= iVar2 + 1); + } + goto LAB_0029df8c; + } + } + } + else { + if (uVar23 != param_3[(long)param_2 + -1]) { + pdVar11 = param_6; + } + if ((uVar23 & 1) == 0) goto LAB_0029ddc4; +LAB_0029dc1c: + iVar10 = 0; + /* try { // try from 0029dc28 to 0039dc6b has its CatchHandler @ 0029dbe0 */ + *(int *)pdVar11 = 0; + pdVar18 = pdVar11; + while (pdVar18 != (double *)((long)pdVar11 + (ulong)(param_1 - 1) * 4)) { + iVar10 = iVar10 + local_88[1]; + local_110[0] = local_110[0] + 1; + if ((int)*param_3 <= local_110[0]) { + piVar16 = local_88 + 2; + iVar30 = local_88[0]; + iVar13 = local_88[1]; + piVar8 = local_110; + puVar17 = param_3; + do { + puVar17 = puVar17 + 1; + piVar15 = piVar8 + 1; + iVar6 = *piVar15; + uVar23 = *puVar17; + iVar2 = *piVar16; + *piVar8 = 0; + *piVar15 = iVar6 + 1; + iVar10 = iVar10 + (iVar2 - iVar30); + /* try { // try from 0029dc98 to 0039dc9b has its CatchHandler @ 0029e6c0 */ + piVar16 = piVar16 + 1; + iVar30 = iVar13; + iVar13 = iVar2; + piVar8 = piVar15; + } while ((int)uVar23 <= iVar6 + 1); + } + /* try { // try from 0029dca0 to 0039dcd7 has its CatchHandler @ 0029dbe0 */ + pdVar18 = (double *)((long)pdVar18 + 4); + *(int *)pdVar18 = iVar10; + } + uVar19 = 0; + } + if (pdVar11 != param_4) { + uVar23 = param_1 & 1; + *(int *)param_4 = 0; + piVar8 = (int *)((long)pdVar11 + (long)(int)uVar23 * 4); + do { + iVar13 = *piVar8; + iVar10 = uVar23 + 1; + /* try { // try from 0029dcdc to 0039dcef has its CatchHandler @ 0029e644 */ + iVar30 = piVar8[1]; + piVar8 = piVar8 + 2; + *(uint *)((long)param_4 + (long)iVar13 * 4) = uVar23; + uVar23 = uVar23 + 2; + *(int *)((long)param_4 + (long)iVar30 * 4) = iVar10; + } while ((int)uVar23 < (int)param_1); + } + uVar23 = param_1 & 1; + if ((param_1 - 1 & param_1) != 0) { + dVar25 = sin(DAT_0029e298 / (double)(int)param_1); + dVar28 = 1.0 - dVar25 * dVar25; + dVar26 = SQRT(dVar28); + if (NAN(dVar26)) { + dVar26 = sqrt(dVar28); + } + goto LAB_0029dd20; + } + } + uVar24 = -(uVar19 >> 0x1f) & 0xfffffff000000000 | uVar19 << 4; + dVar26 = *(double *)((long)&DAT_00465650 + uVar24); + dVar25 = -*(double *)((long)&DAT_00465658 + uVar24); +LAB_0029dd20: + uVar4 = (int)(param_1 + 1) / 2; + if (param_5 == 0x10) { + *param_6 = 1.0; + param_6[1] = 0.0; + if (uVar23 == 0) { + uVar24 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar4 << 4; + *(undefined8 *)((long)param_6 + uVar24) = 0xbff0000000000000; + *(undefined8 *)((long)param_6 + uVar24 + 8) = 0; + } + if (1 < (int)uVar4) { + pdVar18 = param_6 + lVar21 * 2; + dVar28 = dVar25; + dVar29 = dVar26; + pdVar11 = param_6; + do { + pdVar11[2] = dVar29; + pdVar22 = pdVar18 + -2; + pdVar11[3] = dVar28; + dVar31 = dVar28 * dVar25; + *pdVar22 = dVar29; + pdVar18[-1] = -dVar28; + dVar28 = dVar26 * dVar28 + dVar29 * dVar25; + dVar29 = dVar26 * dVar29 - dVar31; + pdVar18 = pdVar22; + pdVar11 = pdVar11 + 2; + } while (pdVar22 != param_6 + (lVar21 - (ulong)(uVar4 - 2)) * 2 + -2); + } + } + else { + *(int *)param_6 = 0x3f800000; + *(int *)((long)param_6 + 4) = 0; + if (uVar23 == 0) { + uVar24 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3; + *(undefined4 *)((long)param_6 + uVar24) = 0xbf800000; + *(undefined4 *)((long)param_6 + uVar24 + 4) = 0; + } + if (1 < (int)uVar4) { + pdVar18 = param_6 + lVar21; + dVar28 = dVar25; + dVar29 = dVar26; + pdVar11 = param_6; + /* try { // try from 0029dd6c to 0039ddeb has its CatchHandler @ 0029e714 */ + do { + pdVar22 = pdVar18 + -1; + dVar31 = dVar28 * dVar25; + *(float *)(pdVar11 + 1) = (float)dVar29; + *(float *)((long)pdVar11 + 0xc) = (float)dVar28; + *(float *)pdVar22 = (float)dVar29; + *(float *)((long)pdVar18 + -4) = -(float)dVar28; + dVar28 = dVar26 * dVar28 + dVar29 * dVar25; + dVar29 = dVar26 * dVar29 - dVar31; + pdVar18 = pdVar22; + pdVar11 = pdVar11 + 1; + } while (pdVar22 != param_6 + (lVar21 - (ulong)(uVar4 - 2)) + -1); + } + } + return; +} + + +================================================================== + +### FUNC 0029e2a0 (4224 bytes) name=FUN_0029e2a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0029e2a0(double param_1,float *param_2,float *param_3,uint param_4,int param_5, + uint *param_6,uint *param_7,float *param_8,uint param_9,long param_10,uint param_11 + ) + +{ + float *pfVar1; + float *pfVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + undefined1 uVar10; + float *pfVar11; + float *pfVar12; + uint *puVar13; + float *pfVar14; + undefined8 *puVar15; + float *pfVar16; + float *pfVar17; + float *pfVar18; + uint uVar19; + int iVar20; + float *pfVar21; + float *pfVar22; + ulong uVar23; + float *pfVar24; + float *pfVar25; + float *pfVar26; + float *pfVar27; + uint uVar28; + int iVar29; + float *pfVar30; + uint uVar31; + long lVar32; + long lVar33; + ulong uVar34; + float *pfVar35; + float *pfVar36; + uint uVar37; + uint uVar38; + ulong uVar39; + long lVar40; + int iVar41; + ulong uVar42; + int iVar43; + float fVar44; + float fVar45; + float fVar46; + float fVar47; + float fVar48; + float fVar49; + float fVar50; + float fVar51; + float fVar52; + float fVar53; + float fVar54; + float fVar55; + float fVar56; + float fVar57; + float fVar58; + float fVar59; + float fVar60; + float fVar61; + float fVar62; + float fVar63; + float fVar64; + float fVar65; + float fVar66; + float fVar67; + float fVar68; + float fVar69; + long lVar70; + undefined8 local_10; + undefined8 local_8; + + fVar54 = (float)param_1; + uVar4 = param_11 & 1; + uVar39 = (ulong)param_9; + if (param_9 == param_4) { + uVar42 = 1; + } + else if (param_9 == param_4 * 2) { + uVar42 = 2; + } + else { + uVar28 = 0; + if (param_4 != 0) { + uVar28 = (int)param_9 / (int)param_4; + } + uVar42 = (ulong)uVar28; + } + uVar28 = (uint)uVar42; + if (param_3 == param_2) { + if ((param_11 >> 8 & 1) == 0) { + uVar19 = *param_6; + if (uVar19 != param_6[(long)param_5 + -1]) { + local_10 = 0; + local_8 = 0; + puVar15 = (undefined8 *)cv::String::allocate((String *)&local_10,0x1b); + uVar10 = DAT_00465aaa; + uVar9 = DAT_00465aa8; + uVar8 = _LAB_00465a98; + uVar7 = DAT_00465a90; + puVar15[2] = DAT_00465aa0; + *(undefined2 *)(puVar15 + 3) = uVar9; + *(undefined1 *)((long)puVar15 + 0x1a) = uVar10; + *puVar15 = uVar7; + puVar15[1] = uVar8; + cv::error(-0xd7,(String *)&local_10, + "void cv::DFT(const cv::Complex<_Tp>*, cv::Complex<_Tp>*, int, int, const int*, const int*, const cv::Complex<_Tp>*, int, const void*, cv::Complex<_Tp>*, int, double) [with T = float]" + ,"/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0x266); + cv::String::deallocate((String *)&local_10); + uVar19 = *param_6; + } + if (param_5 == 1) { + if (((param_4 & 3) == 0) && (iVar41 = (int)param_4 / 2, 0 < iVar41)) { + pfVar18 = param_3 + (long)iVar41 * 2 + 2; + iVar29 = 0; + pfVar11 = param_3; + do { + uVar38 = *param_7; + fVar44 = pfVar11[2]; + uVar42 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar38 << 3; + fVar45 = pfVar11[3]; + *(undefined8 *)(pfVar11 + 2) = + *(undefined8 *)((long)param_3 + uVar42 + (long)iVar41 * 8); + *(float *)((long)param_3 + uVar42 + (long)iVar41 * 8) = fVar44; + /* try { // try from 0029f238 to 0039f273 has its CatchHandler @ 0029f7b4 */ + *(float *)((long)param_3 + uVar42 + (long)iVar41 * 8 + 4) = fVar45; + if (iVar29 < (int)uVar38) { + fVar44 = *pfVar11; + fVar45 = pfVar11[1]; + *(undefined8 *)pfVar11 = *(undefined8 *)((long)param_3 + uVar42); + lVar40 = uVar42 + 8; + *(float *)((long)param_3 + uVar42) = fVar44; + *(float *)((long)param_3 + uVar42 + 4) = fVar45; + fVar44 = *pfVar18; + fVar45 = pfVar18[1]; + *(undefined8 *)pfVar18 = *(undefined8 *)((long)param_3 + lVar40 + (long)iVar41 * 8); + *(float *)((long)param_3 + lVar40 + (long)iVar41 * 8) = fVar44; + *(float *)((long)param_3 + lVar40 + (long)iVar41 * 8 + 4) = fVar45; + } + iVar29 = iVar29 + 2; + param_7 = (uint *)((long)param_7 + + (-(ulong)((uVar28 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar28 << 1) << 2)); + pfVar11 = pfVar11 + 4; + pfVar18 = pfVar18 + 4; + } while (iVar29 < iVar41); + } + } + else if (0 < (int)param_4) { + uVar28 = 0; + pfVar18 = param_3; + do { + uVar38 = *param_7; + if ((int)uVar28 < (int)uVar38) { + uVar23 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar38 << 3; + fVar44 = *pfVar18; + fVar45 = pfVar18[1]; + /* try { // try from 0029f1c4 to 0039f1c7 has its CatchHandler @ 0029f7bc */ + *(undefined8 *)pfVar18 = *(undefined8 *)((long)param_3 + uVar23); + *(float *)((long)param_3 + uVar23) = fVar44; + *(float *)((long)param_3 + uVar23 + 4) = fVar45; + } + uVar28 = uVar28 + 1; + param_7 = (uint *)((long)param_7 + (-(uVar42 >> 0x1f) & 0xfffffffc00000000 | uVar42 << 2)) + ; + pfVar18 = pfVar18 + 2; + } while (uVar28 != param_4); + } + } + else { + uVar19 = *param_6; + } + if (uVar4 != 0) { + if ((int)param_4 < 2) { + iVar41 = 0; + } + else { + uVar28 = param_4 - 2 >> 1; + pfVar18 = param_3 + 1; + do { + pfVar11 = pfVar18 + 4; + pfVar18[2] = -pfVar18[2]; + *pfVar18 = -*pfVar18; + pfVar18 = pfVar11; + } while (pfVar11 != param_3 + (ulong)uVar28 * 4 + 5); + iVar41 = (uVar28 + 1) * 2; + } + if (iVar41 < (int)param_4) { + param_3[(long)(int)param_4 * 2 + -1] = -param_3[(long)(int)param_4 * 2 + -1]; + } + } + } + else { + if (uVar4 == 0) { + if ((int)param_4 < 2) { + iVar41 = 0; + /* try { // try from 0029f2ac to 0039f2af has its CatchHandler @ 0029f7b4 */ + } + else { + uVar19 = param_4 - 2 >> 1; + pfVar18 = param_3 + 2; + do { + uVar38 = *param_7; + iVar41 = *(int *)((long)param_7 + (-(uVar42 >> 0x1f) & 0xfffffffc00000000 | uVar42 << 2)); + param_7 = (uint *)((long)param_7 + + (-(ulong)((uVar28 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar28 << 1) << 2)); + *(undefined8 *)(pfVar18 + -2) = *(undefined8 *)(param_2 + (long)(int)uVar38 * 2); + pfVar11 = pfVar18 + 4; + *(undefined8 *)pfVar18 = *(undefined8 *)(param_2 + (long)iVar41 * 2); + pfVar18 = pfVar11; + } while (pfVar11 != param_3 + (ulong)uVar19 * 4 + 6); + iVar41 = (uVar19 + 1) * 2; + } + if (iVar41 < (int)param_4) { + *(undefined8 *)(param_3 + (long)(int)param_4 * 2 + -2) = + *(undefined8 *)(param_2 + (long)(int)param_4 * 2 + -2); + uVar19 = *param_6; + goto LAB_0029e3ac; + } + } + else { + if ((int)param_4 < 2) { + uVar42 = 0; + } + else { + uVar19 = param_4 - 2 >> 1; + pfVar18 = param_3 + 1; + do { + uVar5 = *param_7; + pfVar11 = pfVar18 + 4; + uVar38 = *(uint *)((long)param_7 + (-(uVar42 >> 0x1f) & 0xfffffffc00000000 | uVar42 << 2)) + ; + param_7 = (uint *)((long)param_7 + + (-(ulong)((uVar28 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar28 << 1) << 2)); + uVar23 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar38 << 3; + fVar44 = param_2[(long)(int)uVar5 * 2 + 1]; + pfVar18[-1] = param_2[(long)(int)uVar5 * 2]; + *pfVar18 = -fVar44; + fVar44 = *(float *)((long)param_2 + uVar23 + 4); + pfVar18[1] = *(float *)((long)param_2 + uVar23); + pfVar18[2] = -fVar44; + pfVar18 = pfVar11; + } while (pfVar11 != param_3 + (ulong)uVar19 * 4 + 5); + uVar42 = (ulong)((uVar19 + 1) * 2); + } + if ((int)uVar42 < (int)param_4) { + uVar42 = -(uVar42 >> 0x1f) & 0xfffffff800000000 | uVar42 << 3; + fVar44 = param_2[(long)(int)param_4 * 2 + -1]; + uVar19 = *param_6; + *(float *)((long)param_3 + uVar42) = param_2[(long)(int)param_4 * 2 + -2]; + *(float *)((long)param_3 + uVar42 + 4) = -fVar44; + goto LAB_0029e3ac; + } + } + uVar19 = *param_6; + } +LAB_0029e3ac: + if ((uVar19 & 1) == 0) { + if (3 < (int)uVar19) { + cv::checkHardwareSupport(4); + uVar19 = *param_6; + } + uVar28 = uVar19 & 1; + uVar23 = 1; + uVar38 = 4; + if (3 < (int)uVar19) { + do { + iVar29 = (int)uVar39; + iVar41 = iVar29 + 3; + if (-1 < iVar29) { + iVar41 = iVar29; + } + uVar5 = iVar41 >> 2; + uVar39 = (ulong)uVar5; + if (0 < (int)param_4) { + uVar37 = (uint)uVar23; + lVar40 = uVar23 * 8; + uVar42 = -(ulong)(uVar37 >> 0x1e) & 0xfffffff800000000 | (ulong)(uVar37 << 1) << 3; + pfVar18 = param_3 + 1; + iVar41 = 0; + pfVar11 = param_3; + do { + /* try { // try from 0029e444 to 0039e447 has its CatchHandler @ 0029dbe0 */ + pfVar12 = (float *)((long)pfVar11 + uVar42); + /* try { // try from 0029e450 to 0039e453 has its CatchHandler @ 0029e714 */ + fVar53 = *(float *)((long)pfVar18 + lVar40 + uVar42); + fVar60 = *(float *)((long)pfVar11 + uVar42) + pfVar12[uVar23 * 2]; + fVar56 = *pfVar11 + pfVar11[uVar23 * 2]; + fVar57 = *(float *)((long)pfVar18 + uVar42) + fVar53; + fVar55 = *pfVar18 + pfVar18[uVar23 * 2]; + fVar45 = *pfVar11 - pfVar11[uVar23 * 2]; + fVar53 = *(float *)((long)pfVar18 + uVar42) - fVar53; + fVar47 = pfVar12[uVar23 * 2] - *(float *)((long)pfVar11 + uVar42); + fVar44 = *pfVar18 - pfVar18[uVar23 * 2]; + *pfVar11 = fVar60 + fVar56; + /* try { // try from 0029e4a4 to 0039e4a7 has its CatchHandler @ 0029dbe0 */ + *pfVar18 = fVar57 + fVar55; + *(float *)((long)pfVar11 + uVar42) = fVar56 - fVar60; + *(float *)((long)pfVar18 + uVar42) = fVar55 - fVar57; + pfVar11[uVar23 * 2] = fVar53 + fVar45; + pfVar18[uVar23 * 2] = fVar47 + fVar44; + pfVar12[uVar23 * 2] = fVar45 - fVar53; + *(float *)((long)pfVar18 + lVar40 + uVar42) = fVar44 - fVar47; + if (1 < uVar37) { + uVar31 = 1; + pfVar35 = pfVar12; + pfVar36 = (float *)(uVar42 + lVar40 + (long)pfVar11); + pfVar17 = pfVar12 + uVar23 * -2; + pfVar25 = param_8; + pfVar26 = param_8; + pfVar30 = param_8; + do { + pfVar30 = (float *)((long)pfVar30 + + (-(ulong)(uVar5 * 3 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uVar5 * 3) << 3)); + pfVar26 = (float *)((long)pfVar26 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar39 << 3)); + pfVar25 = (float *)((long)pfVar25 + + (-(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar5 * 2) << 3)); + pfVar16 = pfVar17 + 2; + pfVar14 = pfVar35 + 2; + pfVar24 = pfVar36 + 2; + pfVar21 = pfVar11 + 2; + uVar31 = uVar31 + 1; + /* try { // try from 0029e514 to 0039e527 has its CatchHandler @ 0029e644 */ + fVar55 = *pfVar16 * *pfVar25 - pfVar17[3] * pfVar25[1]; + fVar47 = pfVar35[3] * *pfVar26 + pfVar26[1] * *pfVar14; + fVar53 = *pfVar25 * pfVar17[3] + pfVar25[1] * *pfVar16; + fVar56 = *pfVar14 * *pfVar26 - pfVar26[1] * pfVar35[3]; + fVar45 = pfVar36[3] * *pfVar30 + pfVar30[1] * *pfVar24; + fVar44 = *pfVar24 * *pfVar30 - pfVar30[1] * pfVar36[3]; + fVar60 = fVar55 + *pfVar21; + fVar57 = fVar53 + pfVar11[3]; + fVar58 = fVar47 + fVar45; + fVar61 = fVar56 + fVar44; + fVar47 = fVar47 - fVar45; + fVar44 = fVar44 - fVar56; + fVar55 = *pfVar21 - fVar55; + fVar53 = pfVar11[3] - fVar53; + *pfVar21 = fVar61 + fVar60; + pfVar11[3] = fVar58 + fVar57; + *pfVar14 = fVar60 - fVar61; + pfVar35[3] = fVar57 - fVar58; + *pfVar16 = fVar47 + fVar55; + pfVar17[3] = fVar44 + fVar53; + *pfVar24 = fVar55 - fVar47; + pfVar36[3] = fVar53 - fVar44; + pfVar11 = pfVar21; + pfVar35 = pfVar14; + pfVar36 = pfVar24; + pfVar17 = pfVar16; + } while (uVar31 != uVar37); + } + iVar41 = iVar41 + uVar38; + pfVar11 = (float *)((long)pfVar12 + uVar42); + /* try { // try from 0029e5e8 to 0039e5eb has its CatchHandler @ 0029dbe0 */ + pfVar18 = (float *)((long)pfVar18 + uVar42 * 2); + } while (iVar41 < (int)param_4); + } + uVar23 = (ulong)uVar38; + uVar38 = uVar38 * 4; + /* try { // try from 0029e600 to 0039e603 has its CatchHandler @ 0029e714 */ + } while ((int)uVar38 <= (int)uVar19); + } + uVar38 = (uint)uVar23; + while (uVar42 = uVar23, (int)uVar38 < (int)uVar19) { + /* try { // try from 0029e62c to 0039e63f has its CatchHandler @ 0029e644 */ + uVar37 = (uint)uVar42; + uVar38 = uVar37 * 2; + uVar23 = (ulong)uVar38; + uVar5 = (int)uVar39 / 2; + uVar39 = (ulong)uVar5; + if (0 < (int)param_4) { + uVar42 = -(uVar42 >> 0x1f) & 0xfffffff800000000 | uVar42 << 3; + /* catch() { ... } // from try @ 0029dcdc with catch @ 0029e644 + catch() { ... } // from try @ 0029e514 with catch @ 0029e644 + catch() { ... } // from try @ 0029e62c with catch @ 0029e644 + catch() { ... } // from try @ 0029e6ec with catch @ 0029e644 + catch() { ... } // from try @ 0029e720 with catch @ 0029e644 */ + uVar34 = -(ulong)((uVar37 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | uVar23 << 3; + pfVar11 = (float *)((long)param_3 + uVar42); + pfVar18 = param_3 + 3; + iVar41 = 0; + do { + fVar45 = pfVar18[-3]; + /* try { // try from 0029e668 to 0039e66b has its CatchHandler @ 0029dbe0 */ + fVar53 = *pfVar11; + /* catch() { ... } // from try @ 0029df14 with catch @ 0029e66c + catch() { ... } // from try @ 0029df48 with catch @ 0029e66c */ + fVar44 = pfVar18[-2]; + fVar47 = pfVar11[1]; + pfVar18[-3] = fVar45 + fVar53; + pfVar18[-2] = fVar44 + fVar47; + *pfVar11 = fVar45 - fVar53; + pfVar11[1] = fVar44 - fVar47; + if (1 < (int)uVar37) { + pfVar12 = pfVar18; + pfVar25 = param_8; + do { + pfVar25 = (float *)((long)pfVar25 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar39 << 3)); + fVar44 = *(float *)((long)pfVar12 + (uVar42 - 4)); + /* catch() { ... } // from try @ 0029dc98 with catch @ 0029e6c0 */ + fVar53 = pfVar12[-1]; + fVar47 = fVar44 * *pfVar25 - *(float *)((long)pfVar12 + uVar42) * pfVar25[1]; + fVar44 = fVar44 * pfVar25[1] + *(float *)((long)pfVar12 + uVar42) * *pfVar25; + /* try { // try from 0029e6d0 to 0039e6d3 has its CatchHandler @ 0029dbe0 */ + fVar45 = *pfVar12; + /* catch() { ... } // from try @ 0029e22c with catch @ 0029e6d4 */ + /* try { // try from 0029e6e4 to 0039e6e7 has its CatchHandler @ 0029dbe0 */ + pfVar12[-1] = fVar47 + fVar53; + *pfVar12 = fVar44 + fVar45; + /* try { // try from 0029e6ec to 0039e6ef has its CatchHandler @ 0029e644 */ + *(float *)((long)pfVar12 + (uVar42 - 4)) = fVar53 - fVar47; + *(float *)((long)pfVar12 + uVar42) = fVar45 - fVar44; + /* catch() { ... } // from try @ 0029de3c with catch @ 0029e6f4 */ + pfVar12 = pfVar12 + 2; + } while (pfVar12 != pfVar18 + (ulong)(uVar37 - 2) * 2 + 2); + } + iVar41 = iVar41 + uVar38; + /* catch() { ... } // from try @ 0029df40 with catch @ 0029e704 */ + pfVar11 = (float *)((long)pfVar11 + uVar34); + pfVar18 = (float *)((long)pfVar18 + uVar34); + } while (iVar41 < (int)param_4); + } + } + } + else { + uVar28 = 1; + uVar42 = 1; + } + fVar60 = DAT_0029f350; + fVar57 = DAT_0029f34c; + fVar56 = DAT_0029f348; + fVar55 = DAT_0029f344; + fVar53 = DAT_0029f340; + fVar47 = DAT_0029f33c; + fVar45 = DAT_0029f338; + fVar44 = DAT_0029f334; + uVar28 = uVar28 ^ 1; + if ((int)uVar28 < param_5) { + puVar13 = param_6 + (int)uVar28; + pfVar18 = (float *)(param_10 + 4); + /* catch() { ... } // from try @ 0029e7e8 with catch @ 0029e790 + catch() { ... } // from try @ 0029e834 with catch @ 0029e790 + catch() { ... } // from try @ 0029eb6c with catch @ 0029e790 + catch() { ... } // from try @ 0029ebd0 with catch @ 0029e790 + catch() { ... } // from try @ 0029ed60 with catch @ 0029e790 + catch() { ... } // from try @ 0029ed78 with catch @ 0029e790 + catch() { ... } // from try @ 0029edc8 with catch @ 0029e790 */ + do { + uVar19 = *puVar13; + uVar37 = (uint)uVar42; + uVar38 = uVar19 * uVar37; + uVar5 = 0; + if (uVar19 != 0) { + uVar5 = (int)uVar39 / (int)uVar19; + } + if (uVar19 == 3) { + if (0 < (int)param_4) { + uVar23 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar38 << 3; + uVar42 = -(uVar42 >> 0x1f) & 0xfffffff800000000 | uVar42 << 3; + pfVar11 = param_3 + 1; + iVar41 = 0; + uVar39 = -(ulong)((uVar37 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar37 << 1) << 3; + /* try { // try from 0029eb6c to 0039eb6f has its CatchHandler @ 0029e790 */ + pfVar12 = param_3; + do { + fVar48 = *(float *)((long)pfVar12 + uVar42) + *(float *)((long)pfVar12 + uVar39); + fVar62 = *(float *)((long)pfVar11 + uVar42) + *(float *)((long)pfVar11 + uVar39); + fVar59 = *pfVar11; + fVar46 = *pfVar12 - fVar48 * 0.5; + fVar51 = fVar59 - fVar62 * 0.5; + fVar61 = *(float *)((long)pfVar11 + uVar42) - *(float *)((long)pfVar11 + uVar39); + fVar58 = *(float *)((long)pfVar12 + uVar39) - *(float *)((long)pfVar12 + uVar42); + *pfVar12 = fVar48 + *pfVar12; + *pfVar11 = fVar62 + fVar59; + /* try { // try from 0029ebc4 to 0039ebc7 has its CatchHandler @ 0029edcc */ + *(float *)((long)pfVar12 + uVar42) = fVar46 + fVar44 * fVar61; + *(float *)((long)pfVar11 + uVar42) = fVar51 + fVar44 * fVar58; + *(float *)((long)pfVar12 + uVar39) = fVar46 - fVar44 * fVar61; + /* try { // try from 0029ebd0 to 0039ebd3 has its CatchHandler @ 0029e790 */ + *(float *)((long)pfVar11 + uVar39) = fVar51 - fVar44 * fVar58; + if (1 < (int)uVar37) { + pfVar25 = pfVar11 + 1; + /* try { // try from 0029ebdc to 0039ed4f has its CatchHandler @ 0029edfc */ + pfVar30 = pfVar11 + 2; + pfVar35 = param_8; + pfVar36 = param_8; + do { + pfVar36 = (float *)((long)pfVar36 + + (-(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar5 << 1) << 3)); + pfVar35 = (float *)((long)pfVar35 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3 + )); + fVar61 = *(float *)((long)pfVar25 + uVar42) * *pfVar35 - + *(float *)((long)pfVar30 + uVar42) * pfVar35[1]; + fVar58 = *(float *)((long)pfVar25 + uVar39) * *pfVar36 - + *(float *)((long)pfVar30 + uVar39) * pfVar36[1]; + fVar59 = *pfVar35 * *(float *)((long)pfVar30 + uVar42) + + pfVar35[1] * *(float *)((long)pfVar25 + uVar42); + fVar62 = *pfVar36 * *(float *)((long)pfVar30 + uVar39) + + pfVar36[1] * *(float *)((long)pfVar25 + uVar39); + fVar46 = *pfVar30; + fVar51 = fVar61 + fVar58; + fVar58 = fVar58 - fVar61; + fVar61 = fVar59 + fVar62; + fVar59 = fVar59 - fVar62; + fVar48 = *pfVar25 - fVar51 * 0.5; + fVar62 = fVar46 - fVar61 * 0.5; + *pfVar25 = fVar51 + *pfVar25; + *pfVar30 = fVar61 + fVar46; + *(float *)((long)pfVar25 + uVar42) = fVar48 + fVar44 * fVar59; + *(float *)((long)pfVar30 + uVar42) = fVar62 + fVar44 * fVar58; + *(float *)((long)pfVar25 + uVar39) = fVar48 - fVar44 * fVar59; + pfVar25 = pfVar25 + 2; + *(float *)((long)pfVar30 + uVar39) = fVar62 - fVar44 * fVar58; + pfVar30 = pfVar30 + 2; + } while (pfVar12 + (ulong)(uVar37 - 2) * 2 + 5 != pfVar30); + } + pfVar12 = (float *)((long)pfVar12 + uVar23); + pfVar11 = (float *)((long)pfVar11 + uVar23); + iVar41 = iVar41 + uVar38; + } while (iVar41 < (int)param_4); + } + } + else if (uVar19 == 5) { + if (0 < (int)param_4) { + lVar40 = (long)(int)(uVar37 << 1); + uVar39 = -(uVar42 >> 0x1f) & 0xfffffff800000000 | uVar42 << 3; + lVar70 = lVar40 * 8; + iVar41 = 0; + pfVar11 = param_3; + do { + /* try { // try from 0029ed60 to 0039ed63 has its CatchHandler @ 0029e790 */ + if (0 < (int)uVar37) { + /* catch() { ... } // from try @ 0029e82c with catch @ 0029ed68 */ + /* try { // try from 0029ed78 to 0039ed7b has its CatchHandler @ 0029e790 */ + /* catch() { ... } // from try @ 0029e928 with catch @ 0029ed7c */ + pfVar36 = pfVar11 + 1; + pfVar17 = pfVar11; + pfVar12 = param_8; + pfVar30 = param_8; + pfVar35 = param_8; + pfVar25 = param_8; + do { + pfVar26 = pfVar25 + 1; + pfVar16 = pfVar12 + 1; + pfVar14 = pfVar30 + 1; + pfVar24 = pfVar35 + 1; + fVar59 = *(float *)((long)pfVar36 + uVar39 + lVar70); + fVar52 = *pfVar12; + pfVar12 = pfVar12 + (long)(int)(uVar5 << 2) * 2; + fVar48 = *pfVar25; + pfVar25 = pfVar25 + (long)(int)uVar5 * 2; + fVar61 = *pfVar30; + pfVar30 = pfVar30 + (long)(int)(uVar5 * 3) * 2; + fVar62 = *pfVar35; + /* try { // try from 0029edc8 to 0039edcb has its CatchHandler @ 0029e790 */ + pfVar35 = pfVar35 + (long)(int)(uVar5 * 2) * 2; + /* catch() { ... } // from try @ 0029e8ec with catch @ 0029edcc + catch() { ... } // from try @ 0029e930 with catch @ 0029edcc + catch() { ... } // from try @ 0029ea80 with catch @ 0029edcc + catch() { ... } // from try @ 0029ebc4 with catch @ 0029edcc */ + /* catch() { ... } // from try @ 0029ea0c with catch @ 0029edd4 */ + fVar58 = *(float *)((long)pfVar17 + uVar39 + lVar70); + /* catch() { ... } // from try @ 0029e8a0 with catch @ 0029edfc + catch() { ... } // from try @ 0029eaf8 with catch @ 0029edfc + catch() { ... } // from try @ 0029ebdc with catch @ 0029edfc */ + fVar67 = *(float *)((long)pfVar17 + uVar39) * fVar48 - + *(float *)((long)pfVar36 + uVar39) * *pfVar26; + fVar64 = pfVar17[lVar40 * 4] * fVar52 - pfVar36[lVar40 * 4] * *pfVar16; + fVar46 = fVar58 * fVar61 - fVar59 * *pfVar14; + fVar51 = pfVar17[lVar40 * 2] * fVar62 - pfVar36[lVar40 * 2] * *pfVar24; + fVar49 = fVar48 * *(float *)((long)pfVar36 + uVar39) + + *pfVar26 * *(float *)((long)pfVar17 + uVar39); + /* catch() { ... } // from try @ 0029eea4 with catch @ 0029ee10 + catch() { ... } // from try @ 0029eef0 with catch @ 0029ee10 + catch() { ... } // from try @ 0029f3c0 with catch @ 0029ee10 + catch() { ... } // from try @ 0029f530 with catch @ 0029ee10 + catch() { ... } // from try @ 0029f700 with catch @ 0029ee10 + catch() { ... } // from try @ 0029f76c with catch @ 0029ee10 + catch() { ... } // from try @ 0029f788 with catch @ 0029ee10 */ + fVar61 = fVar61 * fVar59 + *pfVar14 * fVar58; + fVar48 = fVar52 * pfVar36[lVar40 * 4] + *pfVar16 * pfVar17[lVar40 * 4]; + fVar58 = fVar62 * pfVar36[lVar40 * 2] + *pfVar24 * pfVar17[lVar40 * 2]; + fVar50 = *pfVar36; + fVar52 = fVar46 + fVar51; + fVar63 = fVar67 + fVar64; + fVar62 = fVar49 + fVar48; + fVar59 = fVar61 + fVar58; + fVar49 = fVar49 - fVar48; + fVar66 = fVar63 + fVar52; + fVar61 = fVar61 - fVar58; + fVar69 = fVar62 + fVar59; + fVar46 = fVar46 - fVar51; + fVar51 = *pfVar17 - fVar66 * 0.25; + fVar67 = fVar67 - fVar64; + fVar48 = fVar50 - fVar69 * 0.25; + fVar64 = fVar49 + fVar61; + fVar63 = fVar63 - fVar52; + fVar52 = fVar67 + fVar46; + fVar62 = fVar62 - fVar59; + fVar58 = fVar64 * fVar47 - fVar61 * fVar56; + fVar68 = fVar51 + fVar60 * fVar63; + fVar65 = fVar48 + fVar60 * fVar62; + fVar61 = fVar52 * fVar55 - fVar46 * fVar57; + fVar51 = fVar51 - fVar60 * fVar63; + fVar46 = fVar49 * fVar45 + fVar47 * fVar64; + fVar48 = fVar48 - fVar60 * fVar62; + fVar59 = fVar67 * fVar53 + fVar55 * fVar52; + /* try { // try from 0029eea4 to 0039eea7 has its CatchHandler @ 0029ee10 */ + *pfVar17 = *pfVar17 + fVar66; + *pfVar36 = fVar50 + fVar69; + *(float *)((long)pfVar17 + uVar39) = fVar58 + fVar68; + *(float *)((long)pfVar36 + uVar39) = fVar61 + fVar65; + pfVar17[lVar40 * 4] = fVar68 - fVar58; + pfVar36[lVar40 * 4] = fVar65 - fVar61; + pfVar17[lVar40 * 2] = fVar46 + fVar51; + pfVar36[lVar40 * 2] = fVar59 + fVar48; + pfVar26 = pfVar36 + 2; + *(float *)((long)pfVar17 + uVar39 + lVar70) = fVar51 - fVar46; + /* try { // try from 0029eee8 to 0039eeeb has its CatchHandler @ 0029f778 */ + *(float *)((long)pfVar36 + uVar39 + lVar70) = fVar48 - fVar59; + pfVar36 = pfVar26; + pfVar17 = pfVar17 + 2; + /* try { // try from 0029eef0 to 0039ef57 has its CatchHandler @ 0029ee10 */ + } while (pfVar11 + (ulong)(uVar37 - 1) * 2 + 3 != pfVar26); + } + iVar41 = iVar41 + uVar38; + pfVar11 = pfVar11 + (long)(int)uVar38 * 2; + } while (iVar41 < (int)param_4); + } + } + else { + iVar41 = (int)(uVar19 - 1) / 2; + uVar31 = 0; + if (uVar19 != 0) { + uVar31 = (int)param_9 / (int)uVar19; + } + pfVar11 = (float *)(param_10 + (long)iVar41 * 8); + if (0 < (int)param_4) { + /* try { // try from 0029e7e8 to 0039e7eb has its CatchHandler @ 0029e790 */ + lVar40 = (long)(int)uVar37; + uVar39 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar38 << 3; + uVar42 = -(ulong)(-uVar37 >> 0x1f) & 0xfffffff800000000 | (ulong)-uVar37 << 3; + /* try { // try from 0029e82c to 0039e82f has its CatchHandler @ 0029ed68 */ + pfVar12 = (float *)(param_10 + (ulong)(iVar41 - 1) * 8 + 0xc); + /* try { // try from 0029e834 to 0039e89b has its CatchHandler @ 0029e790 */ + lVar70 = NEON_shl((long)(int)(uVar5 * uVar19) + (long)(int)-uVar5,3); + iVar29 = 0; + pfVar25 = param_3; + do { + if (0 < (int)uVar37) { + lVar33 = 0; + lVar32 = 0; + uVar19 = 0; + pfVar35 = pfVar25 + lVar40 * 2; + pfVar36 = (float *)((long)pfVar25 + uVar39 + lVar40 * -8); + pfVar30 = pfVar25; + pfVar17 = param_8; + do { + fVar59 = *pfVar30; + fVar62 = pfVar30[1]; + fVar58 = fVar59; + fVar61 = fVar62; + if (uVar19 == 0) { + if (0 < iVar41) { + pfVar26 = pfVar35; + pfVar16 = pfVar36; + pfVar14 = pfVar18; + pfVar24 = pfVar11 + 1; + do { + fVar46 = *pfVar26; + fVar50 = *pfVar16; + fVar48 = pfVar26[1]; + pfVar26 = pfVar26 + lVar40 * 2; + fVar49 = pfVar16[1]; + pfVar16 = (float *)((long)pfVar16 + uVar42); + fVar52 = fVar46 + fVar50; + fVar51 = fVar48 + fVar49; + pfVar14[-1] = fVar52; + pfVar21 = pfVar14 + 2; + *pfVar14 = fVar48 - fVar49; + pfVar24[-1] = fVar46 - fVar50; + *pfVar24 = fVar51; + fVar58 = fVar58 + fVar52; + fVar61 = fVar61 + fVar51; + pfVar14 = pfVar21; + pfVar24 = pfVar24 + 2; + } while (pfVar12 != pfVar21); + goto LAB_0029e930; + } + } + else if (0 < iVar41) { + /* try { // try from 0029e8a0 to 0039e8bf has its CatchHandler @ 0029edfc */ + pfVar14 = pfVar35; + pfVar16 = pfVar36; + pfVar26 = pfVar17; + pfVar21 = pfVar18; + pfVar27 = pfVar11 + 1; + pfVar24 = param_8; + do { + pfVar24 = (float *)((long)pfVar24 + lVar32); + pfVar22 = pfVar14 + 1; + pfVar1 = pfVar16 + 1; + pfVar2 = pfVar26 + 1; + fVar52 = *pfVar26; + pfVar26 = (float *)((long)pfVar26 + lVar33); + fVar51 = *pfVar16; + pfVar16 = (float *)((long)pfVar16 + uVar42); + fVar48 = *pfVar14; + /* try { // try from 0029e8ec to 0039e8ef has its CatchHandler @ 0029edcc */ + pfVar14 = pfVar14 + lVar40 * 2; + fVar49 = fVar48 * *pfVar24 - *pfVar22 * pfVar24[1]; + fVar50 = fVar51 * fVar52 - *pfVar1 * *pfVar2; + fVar46 = *pfVar24 * *pfVar22 + pfVar24[1] * fVar48; + fVar48 = fVar52 * *pfVar1 + *pfVar2 * fVar51; + fVar52 = fVar49 + fVar50; + fVar51 = fVar46 + fVar48; + pfVar21[-1] = fVar52; + fVar58 = fVar58 + fVar52; + pfVar22 = pfVar21 + 2; + *pfVar21 = fVar46 - fVar48; + pfVar27[-1] = fVar49 - fVar50; + *pfVar27 = fVar51; + /* try { // try from 0029e928 to 0039e92b has its CatchHandler @ 0029ed7c */ + fVar61 = fVar61 + fVar51; + pfVar21 = pfVar22; + pfVar27 = pfVar27 + 2; + } while (pfVar22 != pfVar12); +LAB_0029e930: + iVar43 = 1; + *pfVar30 = fVar58; + pfVar30[1] = fVar61; + pfVar26 = pfVar35; + pfVar16 = pfVar36; + uVar3 = uVar31; + do { + iVar20 = 0; + pfVar14 = pfVar11; + pfVar24 = pfVar18; + fVar58 = fVar62; + fVar61 = fVar59; + fVar48 = fVar62; + fVar51 = fVar59; + uVar6 = uVar3; + do { + /* try { // try from 0029e930 to 0039e933 has its CatchHandler @ 0029edcc */ + uVar23 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar6 << 3; + iVar20 = iVar20 + 1; + fVar52 = *(float *)((long)param_8 + uVar23 + 4); + uVar6 = (uVar3 + uVar6) - + (-(uint)((int)param_9 <= (int)(uVar3 + uVar6)) & param_9); + fVar49 = fVar52 * *pfVar24; + fVar52 = fVar52 * *pfVar14; + fVar46 = *(float *)((long)param_8 + uVar23); + fVar61 = fVar61 + fVar49 + pfVar24[-1] * fVar46; + fVar51 = fVar51 + (fVar46 * pfVar24[-1] - fVar49); + fVar58 = fVar58 + (fVar46 * pfVar14[1] - fVar52); + fVar48 = fVar48 + fVar52 + pfVar14[1] * fVar46; + pfVar14 = pfVar14 + 2; + pfVar24 = pfVar24 + 2; + } while (iVar20 < iVar41); + iVar43 = iVar43 + 1; + uVar3 = uVar3 + uVar31; + *pfVar26 = fVar51; + pfVar26[1] = fVar48; + pfVar26 = pfVar26 + lVar40 * 2; + *pfVar16 = fVar61; + pfVar16[1] = fVar58; + pfVar16 = (float *)((long)pfVar16 + uVar42); + } while (iVar43 <= iVar41); + } + uVar19 = uVar19 + 1; + pfVar30 = pfVar30 + 2; + pfVar35 = pfVar35 + 2; + pfVar36 = pfVar36 + 2; + /* try { // try from 0029ea0c to 0039ea0f has its CatchHandler @ 0029edd4 */ + pfVar17 = (float *)((long)pfVar17 + lVar70); + lVar33 = lVar33 + (long)(int)-uVar5 * 8; + lVar32 = lVar32 + (long)(int)uVar5 * 8; + } while (uVar19 != uVar37); + } + pfVar25 = (float *)((long)pfVar25 + uVar39); + iVar29 = iVar29 + uVar38; + } while (iVar29 < (int)param_4); + } + } + uVar39 = (ulong)uVar5; + puVar13 = puVar13 + 1; + uVar42 = (ulong)uVar38; + } while (puVar13 != param_6 + (long)(int)uVar28 + 1 + (ulong)((param_5 + -1) - uVar28)); + } + /* try { // try from 0029ea80 to 0039ea83 has its CatchHandler @ 0029edcc */ + if (fVar54 == 1.0) { + if (uVar4 != 0) { + if ((int)param_4 < 2) { + iVar41 = 0; + } + else { + uVar4 = param_4 - 2 >> 1; + pfVar18 = param_3 + 1; + do { + pfVar11 = pfVar18 + 4; + pfVar18[2] = -pfVar18[2]; + *pfVar18 = -*pfVar18; + pfVar18 = pfVar11; + } while (pfVar11 != param_3 + (ulong)uVar4 * 4 + 5); + /* try { // try from 0029ef5c to 0039ef7b has its CatchHandler @ 0029f770 */ + iVar41 = (uVar4 + 1) * 2; + } + if (iVar41 < (int)param_4) { + param_3[(long)(int)param_4 * 2 + -1] = -param_3[(long)(int)param_4 * 2 + -1]; + } + } + } + else { + fVar44 = fVar54; + if (uVar4 != 0) { + fVar44 = -fVar54; + } + if (0 < (int)param_4) { + uVar4 = (param_4 - 4 >> 2) + 1; + uVar28 = uVar4 * 4; + uVar39 = (ulong)uVar28; + if (param_4 - 1 < 3) { + uVar39 = 0; + } + else { + uVar19 = 0; + pfVar18 = param_3; + do { + fVar45 = *pfVar18; + fVar56 = pfVar18[1]; + fVar47 = pfVar18[2]; + fVar57 = pfVar18[3]; + fVar53 = pfVar18[4]; + fVar60 = pfVar18[5]; + fVar55 = pfVar18[6]; + fVar58 = pfVar18[7]; + uVar19 = uVar19 + 1; + /* try { // try from 0029eaf8 to 0039eafb has its CatchHandler @ 0029edfc */ + *pfVar18 = fVar54 * fVar45; + pfVar18[1] = fVar44 * fVar56; + pfVar18[2] = fVar54 * (float)(CONCAT17((char)((uint)fVar47 >> 0x18), + CONCAT16((char)((uint)fVar47 >> 0x10), + CONCAT15((char)((uint)fVar47 >> 8), + CONCAT14(SUB41(fVar47,0),fVar45)) + )) >> 0x20); + pfVar18[3] = fVar44 * (float)(CONCAT17((char)((uint)fVar57 >> 0x18), + CONCAT16((char)((uint)fVar57 >> 0x10), + CONCAT15((char)((uint)fVar57 >> 8), + CONCAT14(SUB41(fVar57,0),fVar56)) + )) >> 0x20); + pfVar18[4] = fVar54 * fVar53; + pfVar18[5] = fVar44 * fVar60; + pfVar18[6] = fVar54 * (float)(CONCAT17((char)((uint)fVar55 >> 0x18), + CONCAT16((char)((uint)fVar55 >> 0x10), + CONCAT15((char)((uint)fVar55 >> 8), + CONCAT14(SUB41(fVar55,0),fVar53)) + )) >> 0x20); + pfVar18[7] = fVar44 * (float)(CONCAT17((char)((uint)fVar58 >> 0x18), + CONCAT16((char)((uint)fVar58 >> 0x10), + CONCAT15((char)((uint)fVar58 >> 8), + CONCAT14(SUB41(fVar58,0),fVar60)) + )) >> 0x20); + pfVar18 = pfVar18 + 8; + } while (uVar19 < uVar4); + if (param_4 == uVar28) { + return; + } + } + uVar42 = -(uVar39 >> 0x1f) & 0xfffffff800000000 | uVar39 << 3; + *(float *)((long)param_3 + uVar42) = *(float *)((long)param_3 + uVar42) * fVar54; + *(float *)((long)param_3 + uVar42 + 4) = fVar44 * *(float *)((long)param_3 + uVar42 + 4); + if ((int)uVar39 + 1 < (int)param_4) { + *(float *)((long)param_3 + uVar42 + 8) = *(float *)((long)param_3 + uVar42 + 8) * fVar54; + *(float *)((long)param_3 + uVar42 + 0xc) = fVar44 * *(float *)((long)param_3 + uVar42 + 0xc) + ; + if ((int)uVar39 + 2 < (int)param_4) { + *(float *)((long)param_3 + uVar42 + 0x10) = + *(float *)((long)param_3 + uVar42 + 0x10) * fVar54; + *(float *)((long)param_3 + uVar42 + 0x14) = + fVar44 * *(float *)((long)param_3 + uVar42 + 0x14); + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0029f354 (20 bytes) name=FUN_0029f354 + +void FUN_0029f354(void) + +{ + undefined8 uStack0000000000000000; + undefined8 in_stack_00000008; + + uStack0000000000000000 = in_stack_00000008; + FUN_0029e2a0(); + return; +} + + +================================================================== + +### FUNC 0029f368 (1752 bytes) name=FUN_0029f368 + +void FUN_0029f368(double param_1,float *param_2,float *param_3,uint param_4,undefined8 param_5, + int *param_6,int *param_7,long param_8,undefined8 param_9,undefined8 param_10, + uint param_11) + +{ + uint uVar1; + int iVar2; + uint uVar3; + ulong uVar4; + long lVar5; + uint *puVar6; + float *pfVar7; + long lVar8; + float *pfVar9; + ulong uVar10; + int iVar11; + uint uVar12; + float *pfVar13; + int *piVar14; + int iVar15; + uint *puVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float local_60; + undefined1 uStack_5c; + undefined1 uStack_5b; + undefined1 uStack_5a; + undefined1 uStack_59; + float fStack_58; + undefined1 uStack_54; + undefined1 uStack_53; + undefined1 uStack_52; + undefined1 uStack_51; + float local_50; + undefined1 uStack_4c; + undefined1 uStack_4b; + undefined1 uStack_4a; + undefined1 uStack_49; + float fStack_48; + undefined1 uStack_44; + undefined1 uStack_43; + undefined1 uStack_42; + undefined1 uStack_41; + float local_40; + undefined1 uStack_3c; + undefined1 uStack_3b; + undefined1 uStack_3a; + undefined1 uStack_39; + float fStack_38; + undefined1 uStack_34; + undefined1 uStack_33; + undefined1 uStack_32; + undefined1 uStack_31; + + fVar26 = (float)param_1; + if ((param_11 >> 9 & 1) == 0) { + fVar17 = *param_2; + fVar25 = 0.0; + } + else { + fVar17 = *param_2; + fVar25 = param_2[1]; + param_2 = param_2 + 1; + *param_2 = fVar17; + } + if (param_4 == 1) { + *param_3 = fVar26 * fVar17; + goto LAB_0029f678; + } + if (param_4 == 2) { + fVar18 = param_2[1]; + param_3[1] = fVar26 * (fVar17 - fVar18); + *param_3 = fVar26 * (fVar18 + fVar17); + goto LAB_0029f678; + } + uVar1 = (int)(param_4 + 1) >> 1; + /* try { // try from 0029f3c0 to 0039f3c3 has its CatchHandler @ 0029ee10 */ + if ((param_4 & 1) != 0) { + *param_3 = fVar17; + param_3[1] = 0.0; + if (1 < (int)uVar1) { + puVar6 = (uint *)(param_7 + (int)param_4); + puVar16 = (uint *)(param_7 + ((long)(int)param_4 - (ulong)(uVar1 - 2)) + -1); + pfVar9 = param_2 + 1; + do { + param_7 = param_7 + 1; + iVar15 = *param_7; + fVar18 = pfVar9[1]; + puVar6 = puVar6 + -1; + /* try { // try from 0029f700 to 0039f703 has its CatchHandler @ 0029ee10 */ + fVar17 = *pfVar9; + /* try { // try from 0029f710 to 0039f713 has its CatchHandler @ 0029f770 */ + uVar4 = -(ulong)(*puVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)*puVar6 << 3; + /* catch() { ... } // from try @ 0029f510 with catch @ 0029f718 */ + param_3[(long)iVar15 * 2] = fVar17; + param_3[(long)iVar15 * 2 + 1] = -fVar18; + *(float *)((long)param_3 + uVar4) = fVar17; + *(float *)((long)param_3 + uVar4 + 4) = fVar18; + pfVar9 = pfVar9 + 2; + } while (puVar6 != puVar16); + } + FUN_0029e2a0(0x3ff0000000000000,param_3,param_3,(ulong)param_4,param_5,param_6); + *param_3 = *param_3 * fVar26; + if (1 < (int)param_4) { + /* try { // try from 0029f76c to 0039f76f has its CatchHandler @ 0029ee10 */ + /* catch() { ... } // from try @ 0029ef5c with catch @ 0029f770 + catch() { ... } // from try @ 0029f34c with catch @ 0029f770 + catch() { ... } // from try @ 0029f53c with catch @ 0029f770 + catch() { ... } // from try @ 0029f710 with catch @ 0029f770 */ + pfVar9 = param_3 + 2; + uVar3 = param_4 - 2 >> 1; + /* catch() { ... } // from try @ 0029eee8 with catch @ 0029f778 */ + uVar1 = uVar3 + 1; + /* try { // try from 0029f788 to 0039f78b has its CatchHandler @ 0029ee10 */ + pfVar7 = param_3 + 1; + /* catch() { ... } // from try @ 0029f2a4 with catch @ 0029f78c */ + /* catch() { ... } // from try @ 0029f458 with catch @ 0029f79c */ + /* catch() { ... } // from try @ 0029f40c with catch @ 0029f7ac + catch() { ... } // from try @ 0029f460 with catch @ 0029f7ac + catch() { ... } // from try @ 0029f7e0 with catch @ 0029f7ac */ + /* catch() { ... } // from try @ 0029f238 with catch @ 0029f7b4 + catch() { ... } // from try @ 0029f2ac with catch @ 0029f7b4 + catch() { ... } // from try @ 0029f4bc with catch @ 0029f7b4 + catch() { ... } // from try @ 0029f518 with catch @ 0029f7b4 */ + if ((pfVar9 < param_3 + (ulong)uVar1 * 2 + 1 && pfVar7 < param_3 + (ulong)uVar1 * 4 + 2) || + (uVar1 < 5)) { + do { + pfVar13 = pfVar9 + 4; + fVar17 = *pfVar9; + pfVar7[1] = fVar26 * pfVar9[2]; + *pfVar7 = fVar26 * fVar17; + pfVar7 = pfVar7 + 2; + pfVar9 = pfVar13; + } while (pfVar13 != param_3 + (ulong)uVar3 * 4 + 6); + } + else { + /* catch() { ... } // from try @ 0029f1c4 with catch @ 0029f7bc */ + uVar3 = (uVar3 - 4 >> 2) + 1; + if (param_4 - 2 < 8) { + uVar4 = 1; + } + else { + uVar12 = 0; + do { + fVar17 = *pfVar9; + fVar22 = pfVar9[2]; + fVar18 = pfVar9[4]; + fVar21 = pfVar9[6]; + fVar24 = pfVar9[8]; + fVar23 = pfVar9[10]; + fVar19 = pfVar9[0xc]; + fVar20 = pfVar9[0xe]; + pfVar9 = pfVar9 + 0x10; + /* try { // try from 0029f7e0 to 0039f7e3 has its CatchHandler @ 0029f7ac */ + uVar12 = uVar12 + 1; + _local_40 = CONCAT17((char)((uint)fVar18 >> 0x18), + CONCAT16((char)((uint)fVar18 >> 0x10), + CONCAT15((char)((uint)fVar18 >> 8), + CONCAT14(SUB41(fVar18,0),fVar17)))); + _fStack_38 = CONCAT17((char)((uint)fVar19 >> 0x18), + CONCAT16((char)((uint)fVar19 >> 0x10), + CONCAT15((char)((uint)fVar19 >> 8), + CONCAT14(SUB41(fVar19,0),fVar24)))); + /* catch() { ... } // from try @ 0029fa34 with catch @ 0029f800 + catch() { ... } // from try @ 0029fa94 with catch @ 0029f800 */ + *pfVar7 = fVar26 * fVar17; + pfVar7[1] = fVar26 * fVar22; + pfVar7[2] = fVar26 * (float)((ulong)_local_40 >> 0x20); + pfVar7[3] = fVar26 * (float)(CONCAT17((char)((uint)fVar21 >> 0x18), + CONCAT16((char)((uint)fVar21 >> 0x10), + CONCAT15((char)((uint)fVar21 >> 8), + CONCAT14(SUB41(fVar21,0),fVar22) + ))) >> 0x20); + pfVar7[4] = fVar26 * fVar24; + pfVar7[5] = fVar26 * fVar23; + pfVar7[6] = fVar26 * (float)((ulong)_fStack_38 >> 0x20); + pfVar7[7] = fVar26 * (float)(CONCAT17((char)((uint)fVar20 >> 0x18), + CONCAT16((char)((uint)fVar20 >> 0x10), + CONCAT15((char)((uint)fVar20 >> 8), + CONCAT14(SUB41(fVar20,0),fVar23) + ))) >> 0x20); + pfVar7 = pfVar7 + 8; + } while (uVar12 < uVar3); + uVar4 = (ulong)(uVar3 * 8 + 1); + if (uVar3 * 4 == uVar1) goto LAB_0029f678; + } + uVar3 = (uint)uVar4; + uVar10 = -(uVar4 >> 0x1f) & 0xfffffffc00000000 | uVar4 << 2; + uVar4 = -(ulong)((uVar3 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar3 << 1) << 2; + uVar1 = uVar3 + 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 8); + *(float *)((long)param_3 + uVar10) = fVar26 * *(float *)((long)param_3 + uVar4); + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + if ((int)uVar1 < (int)param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 0x18); + uVar1 = uVar3 + 4; + *(float *)((long)param_3 + uVar10) = fVar26 * *(float *)((long)param_3 + uVar4 + 0x10); + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + if ((int)uVar1 < (int)param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 0x28); + uVar1 = uVar3 + 6; + *(float *)((long)param_3 + uVar10) = fVar26 * *(float *)((long)param_3 + uVar4 + 0x20); + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + if ((int)uVar1 < (int)param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 0x38); + uVar1 = uVar3 + 8; + /* try { // try from 0029f8d8 to 0039f94f has its CatchHandler @ 0029fa98 */ + *(float *)((long)param_3 + uVar10) = fVar26 * *(float *)((long)param_3 + uVar4 + 0x30) + ; + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + if ((int)uVar1 < (int)param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 0x48); + uVar1 = uVar3 + 10; + *(float *)((long)param_3 + uVar10) = + fVar26 * *(float *)((long)param_3 + uVar4 + 0x40); + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + if ((int)uVar1 < (int)param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 0x58); + uVar3 = uVar3 + 0xc; + *(float *)((long)param_3 + uVar10) = + fVar26 * *(float *)((long)param_3 + uVar4 + 0x50); + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + if ((int)uVar3 < (int)param_4) { + uVar10 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + fVar17 = *(float *)((long)param_3 + uVar4 + 0x68); + *(float *)((long)param_3 + uVar10) = + fVar26 * *(float *)((long)param_3 + uVar4 + 0x60); + *(float *)((long)param_3 + uVar10 + 4) = fVar26 * fVar17; + } + } + } + } + } + } + } + } + goto LAB_0029f678; + } + uVar4 = -(ulong)(param_4 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_4 << 2; + lVar8 = (long)param_2 + uVar4; + pfVar9 = (float *)(param_8 + 8); + fVar18 = *(float *)(lVar8 + -4); + fVar24 = param_2[1]; + *param_3 = fVar18 + fVar17; + param_3[1] = fVar18 - fVar17; + if ((int)uVar1 < 3) { + iVar15 = 2; + } + else { + pfVar7 = param_2 + 2; + pfVar13 = param_3 + 2; + lVar5 = (long)param_3 + uVar4; + iVar15 = 2; + do { + while( true ) { + iVar11 = iVar15 >> 1; + fVar17 = fVar24 - *(float *)(lVar8 + -0xc); + fVar22 = *pfVar7 + *(float *)(lVar8 + -8); + /* try { // try from 0029f458 to 0039f45b has its CatchHandler @ 0029f79c */ + /* try { // try from 0029f460 to 0039f493 has its CatchHandler @ 0029f7ac */ + fVar18 = *pfVar7 - *(float *)(lVar8 + -8); + fVar19 = *(float *)(lVar8 + -0xc) + fVar24; + fVar23 = fVar22 * *pfVar9 - fVar17 * pfVar9[1]; + fVar22 = fVar22 * pfVar9[1] + *pfVar9 * fVar17; + fVar24 = pfVar7[1]; + fVar17 = fVar19 - fVar23; + fVar21 = -fVar18 - fVar22; + fVar19 = fVar19 + fVar23; + fVar18 = fVar18 - fVar22; + if (param_2 == param_3) break; + iVar2 = param_7[iVar11]; + iVar15 = iVar15 + 2; + iVar11 = param_7[(int)(uVar1 - iVar11)]; + pfVar9 = pfVar9 + 2; + param_3[iVar2] = fVar17; + /* try { // try from 0029f4bc to 0039f4bf has its CatchHandler @ 0029f7b4 */ + param_3[(long)iVar2 + 1] = fVar21; + lVar8 = lVar8 + -8; + param_3[iVar11] = fVar19; + pfVar7 = pfVar7 + 2; + param_3[(long)iVar11 + 1] = fVar18; + pfVar13 = pfVar13 + 2; + lVar5 = lVar5 + -8; + if ((int)uVar1 <= iVar15) goto LAB_0029f4dc; + } + /* try { // try from 0029f40c to 0039f40f has its CatchHandler @ 0029f7ac */ + iVar15 = iVar15 + 2; + pfVar9 = pfVar9 + 2; + *pfVar13 = fVar17; + pfVar13[1] = fVar21; + lVar8 = lVar8 + -8; + *(float *)(lVar5 + -8) = fVar19; + pfVar7 = pfVar7 + 2; + *(float *)(lVar5 + -4) = fVar18; + pfVar13 = pfVar13 + 2; + lVar5 = lVar5 + -8; + } while (iVar15 < (int)uVar1); +LAB_0029f4dc: + iVar15 = (uVar1 - 3 & 0xfffffffe) + 4; + } + iVar11 = (int)param_5; + if ((int)uVar1 < iVar15) { + iVar15 = *param_6; + *param_6 = iVar15 >> 1; + uVar3 = (uint)(iVar15 >> 1 == 1); + iVar11 = iVar11 - uVar3; + if (uVar3 == 0) goto LAB_0029f52c; + lVar8 = 4; +LAB_0029f530: + /* try { // try from 0029f530 to 0039f533 has its CatchHandler @ 0029ee10 */ + piVar14 = (int *)((long)param_6 + lVar8); + /* try { // try from 0029f53c to 0039f53f has its CatchHandler @ 0029f770 */ + } + else { + uVar4 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar17 = *(float *)((long)param_2 + uVar4) + *(float *)((long)param_2 + uVar4); + if (param_2 == param_3) { + iVar15 = *param_6; + *(float *)((long)param_3 + uVar4) = fVar24 + fVar24; + /* try { // try from 0029f510 to 0039f513 has its CatchHandler @ 0029f718 */ + *(float *)((long)param_3 + uVar4 + 4) = fVar17; + /* try { // try from 0029f518 to 0039f527 has its CatchHandler @ 0029f7b4 */ + *param_6 = iVar15 >> 1; + uVar3 = (uint)(iVar15 >> 1 == 1); + iVar11 = iVar11 - uVar3; + if (uVar3 == 0) { +LAB_0029f52c: + lVar8 = 0; + goto LAB_0029f530; + } + piVar14 = param_6 + 1; + /* try { // try from 0029fa34 to 0039fa5f has its CatchHandler @ 0029f800 */ + } + else { + iVar15 = *param_6; + /* try { // try from 0029f9c0 to 0039f9c3 has its CatchHandler @ 0029fa70 */ + lVar8 = (long)(*(int *)((long)param_7 + uVar4) << 1); + param_3[lVar8] = fVar24 + fVar24; + param_3[lVar8 + 1] = fVar17; + uVar3 = (uint)(iVar15 >> 1 == 1); + iVar11 = iVar11 - uVar3; + *param_6 = iVar15 >> 1; + if (uVar3 == 0) goto LAB_0029f52c; + piVar14 = param_6 + 1; + } + } + FUN_0029e2a0(0x3ff0000000000000,param_3,param_3,(ulong)uVar1,iVar11,piVar14); + *param_6 = *param_6 << 1; + if (0 < (int)param_4) { + uVar3 = param_4 - 1 >> 1; + uVar1 = (uVar3 - 3 >> 2) + 1; + fVar17 = -fVar26; + if (param_4 - 1 < 6) { + uVar4 = 0; + } + else { + uVar12 = 0; + pfVar9 = param_3; + do { + fVar18 = pfVar9[2]; + fVar19 = pfVar9[3]; + fVar24 = pfVar9[6]; + fVar22 = pfVar9[7]; + uVar12 = uVar12 + 1; + _local_60 = CONCAT17((char)((uint)fVar18 >> 0x18), + CONCAT16((char)((uint)fVar18 >> 0x10), + CONCAT15((char)((uint)fVar18 >> 8), + CONCAT14(SUB41(fVar18,0),*pfVar9)))); + _fStack_58 = CONCAT17((char)((uint)fVar24 >> 0x18), + CONCAT16((char)((uint)fVar24 >> 0x10), + CONCAT15((char)((uint)fVar24 >> 8), + CONCAT14(SUB41(fVar24,0),pfVar9[4])))); + _local_50 = CONCAT17((char)((uint)fVar19 >> 0x18), + CONCAT16((char)((uint)fVar19 >> 0x10), + CONCAT15((char)((uint)fVar19 >> 8), + CONCAT14(SUB41(fVar19,0),pfVar9[1])))); + _fStack_48 = CONCAT17((char)((uint)fVar22 >> 0x18), + CONCAT16((char)((uint)fVar22 >> 0x10), + CONCAT15((char)((uint)fVar22 >> 8), + CONCAT14(SUB41(fVar22,0),pfVar9[5])))); + *pfVar9 = fVar26 * *pfVar9; + pfVar9[1] = fVar17 * pfVar9[1]; + pfVar9[2] = fVar26 * (float)((ulong)_local_60 >> 0x20); + pfVar9[3] = fVar17 * (float)((ulong)_local_50 >> 0x20); + pfVar9[4] = fVar26 * pfVar9[4]; + pfVar9[5] = fVar17 * pfVar9[5]; + pfVar9[6] = fVar26 * (float)((ulong)_fStack_58 >> 0x20); + pfVar9[7] = fVar17 * (float)((ulong)_fStack_48 >> 0x20); + pfVar9 = pfVar9 + 8; + } while (uVar12 < uVar1); + uVar4 = (ulong)(uVar1 * 8); + if (uVar1 * 4 == uVar3 + 1) goto LAB_0029f678; + } + uVar10 = -(uVar4 >> 0x1f) & 0xfffffffc00000000 | uVar4 << 2; + uVar1 = (int)uVar4 + 2; + *(float *)((long)param_3 + uVar10) = *(float *)((long)param_3 + uVar10) * fVar26; + *(float *)((long)param_3 + uVar10 + 4) = fVar17 * *(float *)((long)param_3 + uVar10 + 4); + if ((int)uVar1 < (int)param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar1 = (int)uVar4 + 4; + *(float *)((long)param_3 + uVar10) = *(float *)((long)param_3 + uVar10) * fVar26; + *(float *)((long)param_3 + uVar10 + 4) = fVar17 * *(float *)((long)param_3 + uVar10 + 4); + if ((int)uVar1 < (int)param_4) { + uVar4 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(float *)((long)param_3 + uVar4) = *(float *)((long)param_3 + uVar4) * fVar26; + *(float *)((long)param_3 + uVar4 + 4) = fVar17 * *(float *)((long)param_3 + uVar4 + 4); + } + } + } +LAB_0029f678: + if ((param_11 >> 9 & 1) != 0) { + *param_2 = fVar25; + } + return; +} + + +================================================================== + +### FUNC 0029fa40 (20 bytes) name=FUN_0029fa40 + +void FUN_0029fa40(void) + +{ + undefined8 uStack0000000000000000; + undefined8 in_stack_00000008; + + uStack0000000000000000 = in_stack_00000008; + FUN_0029f368(); + return; +} + + +================================================================== + +### FUNC 0029fa54 (500 bytes) name=FUN_0029fa54 + +void FUN_0029fa54(float *param_1,int param_2,float *param_3,long param_4,float *param_5,int param_6, + ulong param_7,undefined4 param_8,undefined8 param_9,undefined8 param_10, + undefined8 param_11,float *param_12,undefined8 param_13,undefined8 param_14) + +{ + long lVar1; + float *pfVar2; + int iVar3; + long lVar4; + undefined4 *puVar5; + float *pfVar6; + uint uVar7; + ulong uVar8; + int iVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + ulong uVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + + iVar9 = (int)param_7; + uVar13 = (ulong)(long)param_2 >> 2; + /* try { // try from 0029fa68 to 0039fa6b has its CatchHandler @ 0029fa70 */ + /* catch() { ... } // from try @ 0029f9c0 with catch @ 0029fa70 + catch() { ... } // from try @ 0029fa68 with catch @ 0029fa70 */ + iVar3 = iVar9 >> 1; + if (iVar9 == 1) { + *param_5 = *param_1; + return; + } + uVar8 = -((ulong)(long)param_2 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar13 & 0xffffffff) << 2; + /* try { // try from 0029fa94 to 0039fa97 has its CatchHandler @ 0029f800 */ + /* catch() { ... } // from try @ 0029f8d8 with catch @ 0029fa98 */ + *param_3 = (*param_1 + *param_1) * *param_12 * DAT_0029fc48; + if (iVar3 < 2) { + uVar13 = -(param_7 >> 0x1f & 1) & 0xfffffffc00000000 | (param_7 & 0xffffffff) << 2; + *(float *)((long)param_3 + (uVar13 - 4)) = + (*(float *)((long)param_1 + uVar8) + *(float *)((long)param_1 + uVar8)) * param_12[2]; + FUN_0029f368(0x3ff0000000000000,param_3,param_4,param_7 & 0xffffffff,param_8,param_9,param_10, + param_11,param_7 & 0xffffffff,param_14,0); + if (iVar3 < 1) { + return; + } + } + else { + /* catch() { ... } // from try @ 0029fb24 with catch @ 0029fad0 + catch() { ... } // from try @ 0029fdd0 with catch @ 0029fad0 + catch() { ... } // from try @ 0029fe28 with catch @ 0029fad0 + catch() { ... } // from try @ 0029fe80 with catch @ 0029fad0 */ + pfVar11 = param_1 + (iVar9 + -1) * (int)uVar13; + pfVar6 = param_3 + 1; + pfVar10 = param_12 + 2; + pfVar12 = (float *)((long)param_1 + uVar8); + do { + fVar15 = *pfVar10; + pfVar2 = pfVar10 + 2; + fVar16 = *pfVar11; + fVar17 = *pfVar12; + pfVar11 = (float *)((long)pfVar11 - uVar8); + pfVar12 = (float *)((long)pfVar12 + uVar8); + fVar14 = pfVar10[1]; + *pfVar6 = fVar15 * fVar17 - fVar14 * fVar16; + pfVar6[1] = -(fVar14 * fVar17) - fVar15 * fVar16; + pfVar6 = pfVar6 + 2; + pfVar10 = pfVar2; + } while (pfVar2 != param_12 + ((ulong)(iVar3 - 2) + 2) * 2); + lVar4 = (ulong)(iVar3 - 2) + 1; + /* try { // try from 0029fb24 to 0039fb7b has its CatchHandler @ 0029fad0 */ + uVar13 = -(param_7 >> 0x1f & 1) & 0xfffffffc00000000 | (param_7 & 0xffffffff) << 2; + fVar14 = *(float *)((long)((long)param_1 + uVar8) + uVar8 * lVar4); + *(float *)((long)param_3 + (uVar13 - 4)) = (fVar14 + fVar14) * (param_12 + 2)[lVar4 * 2]; + FUN_0029f368(0x3ff0000000000000,param_3,param_4,param_7 & 0xffffffff,param_8,param_9,param_10, + param_11,param_7 & 0xffffffff,param_14,0); + } + puVar5 = (undefined4 *)(param_4 + uVar13); + uVar13 = (ulong)(long)param_6 >> 2; + lVar4 = 0; + uVar7 = (uint)uVar13; + do { + lVar1 = lVar4 * 4; + lVar4 = lVar4 + 1; + *param_5 = *(float *)(param_4 + lVar1); + puVar5 = puVar5 + -1; + *(undefined4 *) + ((long)param_5 + + (-((ulong)(long)param_6 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar13 & 0xffffffff) << 2)) = + *puVar5; + param_5 = (float *)((long)param_5 + + (-(ulong)((uVar7 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar7 << 1) << 2)); + } while ((int)lVar4 < iVar3); + return; +} + + +================================================================== + +### FUNC 0029fc4c (800 bytes) name=FUN_0029fc4c + +void FUN_0029fc4c(double param_1,float *param_2,long param_3,uint param_4,undefined8 param_5, + int *param_6,long param_7,float *param_8,undefined4 param_9,undefined8 param_10, + uint param_11) + +{ + int *piVar1; + uint uVar2; + float *pfVar3; + long lVar4; + int iVar5; + float *pfVar6; + uint uVar7; + float *pfVar8; + int *piVar9; + int iVar10; + ulong uVar11; + float *pfVar12; + long lVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + + /* try { // try from 0029fc58 to 0039fceb has its CatchHandler @ 0029fe3c */ + fVar23 = (float)param_1; + uVar11 = (ulong)(param_11 >> 9) & 1; + iVar10 = (int)uVar11; + lVar13 = uVar11 * 4; + pfVar12 = (float *)(param_3 + lVar13); + if (param_4 == 1) { + *(float *)(param_3 + lVar13) = fVar23 * *param_2; + } + else { + if (param_4 == 2) { + fVar14 = fVar23 * (*param_2 + param_2[1]); + pfVar12[1] = fVar23 * (*param_2 - param_2[1]); + *(float *)(param_3 + lVar13) = fVar14; + if (iVar10 == 0) { + return; + } + pfVar12[-1] = fVar14; + *(undefined4 *)(param_3 + lVar13) = 0; + goto LAB_0029fee0; + } + if ((param_4 & 1) != 0) { + fVar14 = *param_2; + pfVar12 = pfVar12 + -uVar11; + pfVar12[1] = 0.0; + *pfVar12 = fVar23 * fVar14; + if (1 < (int)param_4) { + piVar9 = (int *)(param_7 + 4); + pfVar6 = pfVar12 + 2; + do { + piVar1 = piVar9 + 1; + pfVar3 = pfVar6 + 4; + iVar5 = *piVar9; + piVar9 = piVar9 + 2; + fVar17 = param_2[*piVar1]; + fVar14 = param_2[iVar5]; + pfVar6[1] = 0.0; + pfVar6[3] = 0.0; + pfVar6[2] = fVar23 * fVar17; + *pfVar6 = fVar23 * fVar14; + pfVar6 = pfVar3; + } while (pfVar3 != pfVar12 + (ulong)(param_4 - 2 >> 1) * 4 + 6); + } + FUN_0029e2a0(0x3ff0000000000000,pfVar12,pfVar12,param_4,param_5,param_6,param_7,param_8, + param_9,param_10,0x100); + /* try { // try from 0029fd5c to 0039fd5f has its CatchHandler @ 0029fe84 */ + if (iVar10 != 0) { + return; + } + pfVar12[1] = *pfVar12; + return; + } + iVar5 = *param_6; + uVar2 = (int)param_4 >> 1; + *param_6 = iVar5 >> 1; + uVar7 = (uint)(iVar5 >> 1 == 1); + fVar14 = fVar23 * 0.5; + lVar4 = 4; + if (uVar7 == 0) { + lVar4 = 0; + } + /* try { // try from 0029fdd0 to 0039fdd3 has its CatchHandler @ 0029fad0 */ + FUN_0029e2a0(0x3ff0000000000000,param_2,pfVar12,(ulong)uVar2,(int)param_5 - uVar7, + (long)param_6 + lVar4); + fVar15 = pfVar12[1]; + fVar17 = *(float *)(param_3 + lVar13); + lVar4 = (long)(int)param_4; + *param_6 = *param_6 << 1; + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar16 = fVar23 * (fVar17 - fVar15); + *(float *)(param_3 + lVar13) = fVar23 * (fVar17 + fVar15); + pfVar12[1] = fVar16; + /* try { // try from 0029fe1c to 0039fe1f has its CatchHandler @ 0029fe3c */ + fVar15 = *(float *)((long)pfVar12 + uVar11); + fVar17 = pfVar12[lVar4 + -1]; + pfVar12[lVar4 + -1] = fVar16; + /* try { // try from 0029fe28 to 0039fe2b has its CatchHandler @ 0029fad0 */ + if ((int)uVar2 < 3) { + iVar5 = 2; + } + else { + pfVar6 = pfVar12 + lVar4; + /* try { // try from 0029fe34 to 0039fe37 has its CatchHandler @ 0029fe84 */ + uVar7 = uVar2 - 3 >> 1; + pfVar3 = pfVar12; + /* catch() { ... } // from try @ 0029fc58 with catch @ 0029fe3c + catch() { ... } // from try @ 0029fe1c with catch @ 0029fe3c */ + do { + pfVar8 = pfVar3 + 2; + fVar21 = param_8[2]; + fVar20 = fVar14 * (pfVar6[-2] - *pfVar8); + fVar19 = fVar14 * (pfVar3[3] + fVar17); + fVar18 = pfVar6[-2] + *pfVar8; + fVar16 = pfVar3[3] - fVar17; + /* try { // try from 0029fe80 to 0039fe83 has its CatchHandler @ 0029fad0 */ + fVar17 = pfVar6[-3]; + /* catch() { ... } // from try @ 0029fd5c with catch @ 0029fe84 + catch() { ... } // from try @ 0029fe34 with catch @ 0029fe84 */ + fVar22 = fVar19 * fVar21 - fVar20 * param_8[3]; + fVar19 = fVar20 * fVar21 + param_8[3] * fVar19; + /* catch() { ... } // from try @ 0029fed8 with catch @ 0029fe8c + catch() { ... } // from try @ 002a0180 with catch @ 0029fe8c + catch() { ... } // from try @ 002a01dc with catch @ 0029fe8c + catch() { ... } // from try @ 002a0234 with catch @ 0029fe8c */ + pfVar3[1] = fVar22 + fVar18 * fVar14; + pfVar6[-3] = fVar14 * fVar18 - fVar22; + *pfVar8 = fVar19 + fVar16 * fVar14; + pfVar6 = pfVar6 + -2; + *pfVar6 = fVar19 - fVar16 * fVar14; + pfVar3 = pfVar8; + param_8 = param_8 + 2; + } while (pfVar6 != pfVar12 + lVar4 + (ulong)uVar7 * -2 + -2); + iVar5 = (uVar7 + 2) * 2; + } + if (iVar5 <= (int)uVar2) { + *(float *)((long)pfVar12 + (uVar11 - 4)) = fVar23 * fVar15; + *(float *)((long)pfVar12 + uVar11) = -(fVar17 * fVar23); + } + } + if (iVar10 != 0) { + pfVar12[-1] = *(float *)(param_3 + lVar13); + /* try { // try from 0029fed8 to 0039ff33 has its CatchHandler @ 0029fe8c */ + *(undefined4 *)(param_3 + lVar13) = 0; + if (1 < (int)param_4) { +LAB_0029fee0: + pfVar12[(int)param_4] = 0.0; + return; + } + } + return; +} + + +================================================================== + +### FUNC 0029ff6c (20 bytes) name=FUN_0029ff6c + +void FUN_0029ff6c(void) + +{ + undefined8 uStack0000000000000000; + undefined8 in_stack_00000008; + + uStack0000000000000000 = in_stack_00000008; + FUN_0029fc4c(); + return; +} + + +================================================================== + +### FUNC 0029ff80 (488 bytes) name=FUN_0029ff80 + +void FUN_0029ff80(float *param_1,int param_2,long param_3,float *param_4,float *param_5,int param_6, + int param_7,undefined4 param_8,undefined8 param_9,undefined8 param_10, + undefined8 param_11,float *param_12,undefined8 param_13,undefined8 param_14) + +{ + undefined4 *puVar1; + float *pfVar2; + int iVar3; + float *pfVar4; + uint uVar5; + ulong uVar6; + float *pfVar7; + float *pfVar8; + long lVar9; + float *pfVar10; + undefined4 *puVar11; + float *pfVar12; + int iVar13; + ulong uVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + + iVar3 = param_7 >> 1; + uVar14 = (ulong)(long)param_6 >> 2; + if (param_7 != 1) { + iVar13 = (int)uVar14; + if (iVar3 < 1) { + FUN_0029fc4c(0x3ff0000000000000,param_3,param_4,param_7,param_8,param_9,param_10,param_11, + param_7,param_14,0); + pfVar8 = param_5 + iVar13; + pfVar7 = param_12 + 2; + *param_5 = *param_4 * *param_12 * DAT_002a0168; + } + else { + lVar9 = 0; + uVar6 = (ulong)(long)param_2 >> 2; + puVar11 = (undefined4 *)(param_3 + (long)param_7 * 4); + uVar5 = (uint)uVar6; + do { + *(float *)(param_3 + lVar9 * 4) = *param_1; + lVar9 = lVar9 + 1; + puVar1 = (undefined4 *) + ((long)param_1 + + (-((ulong)(long)param_2 >> 0x21 & 1) & 0xfffffffc00000000 | + (uVar6 & 0xffffffff) << 2)); + param_1 = (float *)((long)param_1 + + (-(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar5 << 1) << 2)); + puVar11 = puVar11 + -1; + *puVar11 = *puVar1; + } while ((int)lVar9 < iVar3); + /* try { // try from 002a0008 to 003a009b has its CatchHandler @ 002a01f0 */ + FUN_0029fc4c(0x3ff0000000000000,param_3,param_4,param_7,param_8,param_9,param_10,param_11, + param_7,param_14,0); + uVar14 = -((ulong)(long)param_6 >> 0x21 & 1) & 0xfffffffc00000000 | (uVar14 & 0xffffffff) << 2 + ; + pfVar8 = (float *)((long)param_5 + uVar14); + pfVar7 = param_12 + 2; + *param_5 = *param_4 * *param_12 * DAT_002a0168; + if (1 < iVar3) { + param_5 = param_5 + (param_7 + -1) * iVar13; + pfVar4 = pfVar7; + pfVar10 = param_4 + 1; + pfVar12 = pfVar8; + do { + fVar15 = pfVar4[1]; + pfVar2 = pfVar4 + 2; + fVar17 = pfVar10[1]; + fVar16 = *pfVar4; + fVar18 = *pfVar10; + *pfVar12 = fVar16 * fVar18 - fVar15 * fVar17; + pfVar12 = (float *)((long)pfVar12 + uVar14); + *param_5 = -(fVar15 * fVar18) - fVar16 * fVar17; + param_5 = (float *)((long)param_5 - uVar14); + pfVar4 = pfVar2; + pfVar10 = pfVar10 + 2; + } while (pfVar2 != param_12 + ((ulong)(iVar3 - 2) + 2) * 2); + lVar9 = (ulong)(iVar3 - 2) + 1; + pfVar8 = (float *)((long)pfVar8 + lVar9 * uVar14); + pfVar7 = pfVar7 + lVar9 * 2; + } + } + *pfVar8 = param_4[(long)param_7 + -1] * *pfVar7; + return; + } + *param_5 = *param_1; + /* try { // try from 002a010c to 003a010f has its CatchHandler @ 002a0238 */ + return; +} + + +================================================================== + +### FUNC 002a0170 (4164 bytes) name=FUN_002a0170 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002a0170(double param_1,double *param_2,double *param_3,uint param_4,int param_5, + uint *param_6,uint *param_7,double *param_8,uint param_9,long param_10, + uint param_11) + +{ + double *pdVar1; + double *pdVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + undefined1 uVar10; + double *pdVar11; + double *pdVar12; + uint *puVar13; + double *pdVar14; + undefined8 *puVar15; + double *pdVar16; + double *pdVar17; + double *pdVar18; + uint uVar19; + int iVar20; + double *pdVar21; + double *pdVar22; + ulong uVar23; + double *pdVar24; + double *pdVar25; + double *pdVar26; + double *pdVar27; + uint uVar28; + int iVar29; + double *pdVar30; + uint uVar31; + long lVar32; + long lVar33; + ulong uVar34; + double *pdVar35; + double *pdVar36; + uint uVar37; + uint uVar38; + ulong uVar39; + long lVar40; + int iVar41; + ulong uVar42; + int iVar43; + double dVar44; + double dVar45; + double dVar46; + double dVar47; + double dVar48; + double dVar49; + double dVar50; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + double dVar55; + double dVar56; + double dVar57; + double dVar58; + double dVar59; + double dVar60; + double dVar61; + double dVar62; + double dVar63; + double dVar64; + double dVar65; + double dVar66; + double dVar67; + long lVar68; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 002a0180 to 003a0183 has its CatchHandler @ 0029fe8c */ + uVar4 = param_11 & 1; + uVar39 = (ulong)param_9; + if (param_9 == param_4) { + uVar42 = 1; + } + else { + /* try { // try from 002a01d0 to 003a01d3 has its CatchHandler @ 002a01f0 */ + if (param_9 == param_4 * 2) { + /* try { // try from 002a0fe0 to 003a0fe3 has its CatchHandler @ 002a1020 */ + uVar42 = 2; + } + else { + uVar28 = 0; + if (param_4 != 0) { + uVar28 = (int)param_9 / (int)param_4; + } + uVar42 = (ulong)uVar28; + } + } + /* try { // try from 002a01dc to 003a01df has its CatchHandler @ 0029fe8c */ + uVar28 = (uint)uVar42; + if (param_3 == param_2) { + if ((param_11 >> 8 & 1) == 0) { + /* try { // try from 002a0ff0 to 003a0ff3 has its CatchHandler @ 002a106c */ + uVar19 = *param_6; + /* catch() { ... } // from try @ 002a0ec8 with catch @ 002a0ff8 + catch() { ... } // from try @ 002a0fb0 with catch @ 002a0ff8 */ + if (uVar19 != param_6[(long)param_5 + -1]) { + local_10 = 0; + local_8 = 0; + puVar15 = (undefined8 *)cv::String::allocate((String *)&local_10,0x1b); + uVar10 = DAT_00465aaa; + uVar9 = DAT_00465aa8; + uVar8 = _LAB_00465a98; + uVar7 = DAT_00465a90; + /* try { // try from 002a101c to 003a101f has its CatchHandler @ 002a0240 */ + /* catch() { ... } // from try @ 002a03ec with catch @ 002a1020 + catch() { ... } // from try @ 002a0fe0 with catch @ 002a1020 */ + puVar15[2] = DAT_00465aa0; + *(undefined2 *)(puVar15 + 3) = uVar9; + *(undefined1 *)((long)puVar15 + 0x1a) = uVar10; + *puVar15 = uVar7; + puVar15[1] = uVar8; + cv::error(-0xd7,(String *)&local_10, + "void cv::DFT(const cv::Complex<_Tp>*, cv::Complex<_Tp>*, int, int, const int*, const int*, const cv::Complex<_Tp>*, int, const void*, cv::Complex<_Tp>*, int, double) [with T = double]" + ,"/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0x266); + /* try { // try from 002a1068 to 003a106b has its CatchHandler @ 002a0240 */ + /* catch() { ... } // from try @ 002a04ec with catch @ 002a106c + catch() { ... } // from try @ 002a0ff0 with catch @ 002a106c */ + cv::String::deallocate((String *)&local_10); + uVar19 = *param_6; + } + if (param_5 == 1) { + /* catch() { ... } // from try @ 002a0514 with catch @ 002a10e4 + catch() { ... } // from try @ 002a0a3c with catch @ 002a10e4 + catch() { ... } // from try @ 002a0f64 with catch @ 002a10e4 + catch() { ... } // from try @ 002a0fd0 with catch @ 002a10e4 */ + if (((param_4 & 3) == 0) && (iVar41 = (int)param_4 / 2, 0 < iVar41)) { + pdVar16 = param_3 + 2; + pdVar11 = param_3 + (long)iVar41 * 2 + 2; + iVar29 = 0; + do { + uVar38 = *param_7; + dVar47 = *pdVar16; + /* catch() { ... } // from try @ 002a0568 with catch @ 002a1108 + catch() { ... } // from try @ 002a09c0 with catch @ 002a1108 + catch() { ... } // from try @ 002a0f58 with catch @ 002a1108 */ + uVar42 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar38 << 4; + pdVar12 = (double *)((long)param_3 + uVar42 + (long)iVar41 * 0x10); + dVar45 = pdVar16[1]; + dVar44 = pdVar12[1]; + *pdVar16 = *pdVar12; + pdVar16[1] = dVar44; + *(double *)((long)param_3 + uVar42 + (long)iVar41 * 0x10) = dVar47; + pdVar12[1] = dVar45; + if (iVar29 < (int)uVar38) { + pdVar12 = (double *)((long)param_3 + uVar42); + /* catch() { ... } // from try @ 002a06cc with catch @ 002a1130 + catch() { ... } // from try @ 002a094c with catch @ 002a1130 + catch() { ... } // from try @ 002a0f4c with catch @ 002a1130 */ + dVar47 = pdVar16[-2]; + pdVar25 = (double *)((long)param_3 + uVar42 + 0x10 + (long)iVar41 * 0x10); + dVar45 = pdVar16[-1]; + dVar44 = pdVar12[1]; + pdVar16[-2] = *pdVar12; + pdVar16[-1] = dVar44; + *(double *)((long)param_3 + uVar42) = dVar47; + pdVar12[1] = dVar45; + dVar47 = *pdVar11; + /* catch() { ... } // from try @ 002a0748 with catch @ 002a1154 + catch() { ... } // from try @ 002a08bc with catch @ 002a1154 + catch() { ... } // from try @ 002a0c5c with catch @ 002a1154 */ + dVar45 = pdVar11[1]; + dVar44 = pdVar25[1]; + *pdVar11 = *pdVar25; + pdVar11[1] = dVar44; + *(double *)((long)param_3 + uVar42 + 0x10 + (long)iVar41 * 0x10) = dVar47; + pdVar25[1] = dVar45; + } + iVar29 = iVar29 + 2; + param_7 = (uint *)((long)param_7 + + (-(ulong)((uVar28 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar28 << 1) << 2)); + pdVar16 = pdVar16 + 4; + /* catch() { ... } // from try @ 002a0804 with catch @ 002a1178 */ + pdVar11 = pdVar11 + 4; + } while (iVar29 < iVar41); + } + } + else if (0 < (int)param_4) { + uVar28 = 0; + pdVar16 = param_3; + do { + uVar38 = *param_7; + if ((int)uVar28 < (int)uVar38) { + uVar23 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar38 << 4; + pdVar11 = (double *)((long)param_3 + uVar23); + dVar47 = *pdVar16; + /* catch() { ... } // from try @ 002a04f4 with catch @ 002a10a8 + catch() { ... } // from try @ 002a0ab0 with catch @ 002a10a8 + catch() { ... } // from try @ 002a0f70 with catch @ 002a10a8 + catch() { ... } // from try @ 002a0fc0 with catch @ 002a10a8 */ + dVar45 = pdVar16[1]; + dVar44 = pdVar11[1]; + *pdVar16 = *pdVar11; + pdVar16[1] = dVar44; + *(double *)((long)param_3 + uVar23) = dVar47; + pdVar11[1] = dVar45; + } + uVar28 = uVar28 + 1; + param_7 = (uint *)((long)param_7 + (-(uVar42 >> 0x1f) & 0xfffffffc00000000 | uVar42 << 2)) + ; + pdVar16 = pdVar16 + 2; + } while (uVar28 != param_4); + } + } + else { + uVar19 = *param_6; + } + /* try { // try from 002a0f64 to 003a0f67 has its CatchHandler @ 002a10e4 */ + if (uVar4 != 0) { + /* try { // try from 002a0f70 to 003a0f73 has its CatchHandler @ 002a10a8 */ + if ((int)param_4 < 2) { + iVar41 = 0; + } + else { + /* try { // try from 002a0f7c to 003a0f7f has its CatchHandler @ 002a11a0 */ + uVar28 = param_4 - 2 >> 1; + pdVar16 = param_3 + 1; + do { + pdVar11 = pdVar16 + 4; + pdVar16[2] = -pdVar16[2]; + *pdVar16 = -*pdVar16; + pdVar16 = pdVar11; + /* try { // try from 002a0fb0 to 003a0fb3 has its CatchHandler @ 002a0ff8 */ + } while (pdVar11 != param_3 + (ulong)uVar28 * 4 + 5); + iVar41 = (uVar28 + 1) * 2; + } + /* try { // try from 002a0fc0 to 003a0fc3 has its CatchHandler @ 002a10a8 */ + if (iVar41 < (int)param_4) { + /* try { // try from 002a0fd0 to 003a0fd3 has its CatchHandler @ 002a10e4 */ + param_3[(long)(int)param_4 * 2 + -1] = -param_3[(long)(int)param_4 * 2 + -1]; + } + } + } + else { + /* try { // try from 002a01e8 to 003a01eb has its CatchHandler @ 002a0238 */ + if (uVar4 == 0) { + if ((int)param_4 < 2) { + iVar41 = 0; + } + else { + uVar19 = param_4 - 2 >> 1; + /* try { // try from 002a0ef4 to 003a0ef7 has its CatchHandler @ 002a0240 */ + pdVar16 = param_3 + 2; + do { + uVar38 = *param_7; + iVar41 = *(int *)((long)param_7 + (-(uVar42 >> 0x1f) & 0xfffffffc00000000 | uVar42 << 2)); + param_7 = (uint *)((long)param_7 + + (-(ulong)((uVar28 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar28 << 1) << 2)); + dVar44 = (param_2 + (long)(int)uVar38 * 2)[1]; + pdVar16[-2] = param_2[(long)(int)uVar38 * 2]; + pdVar16[-1] = dVar44; + dVar44 = (param_2 + (long)iVar41 * 2)[1]; + pdVar11 = pdVar16 + 4; + *pdVar16 = param_2[(long)iVar41 * 2]; + pdVar16[1] = dVar44; + pdVar16 = pdVar11; + } while (pdVar11 != param_3 + (ulong)uVar19 * 4 + 6); + iVar41 = (uVar19 + 1) * 2; + } + if (iVar41 < (int)param_4) { + /* try { // try from 002a0f4c to 003a0f4f has its CatchHandler @ 002a1130 */ + uVar19 = *param_6; + dVar44 = (param_2 + (long)(int)param_4 * 2 + -2)[1]; + param_3[(long)(int)param_4 * 2 + -2] = param_2[(long)(int)param_4 * 2 + -2]; + (param_3 + (long)(int)param_4 * 2 + -2)[1] = dVar44; + /* try { // try from 002a0f58 to 003a0f5b has its CatchHandler @ 002a1108 */ + goto LAB_002a0280; + } + } + else { + /* catch() { ... } // from try @ 002a0008 with catch @ 002a01f0 + catch() { ... } // from try @ 002a01d0 with catch @ 002a01f0 */ + if ((int)param_4 < 2) { + uVar42 = 0; + } + else { + uVar19 = param_4 - 2 >> 1; + pdVar16 = param_3 + 1; + do { + uVar5 = *param_7; + pdVar11 = pdVar16 + 4; + uVar38 = *(uint *)((long)param_7 + (-(uVar42 >> 0x1f) & 0xfffffffc00000000 | uVar42 << 2)) + ; + param_7 = (uint *)((long)param_7 + + (-(ulong)((uVar28 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar28 << 1) << 2)); + /* try { // try from 002a0234 to 003a0237 has its CatchHandler @ 0029fe8c */ + /* catch() { ... } // from try @ 002a010c with catch @ 002a0238 + catch() { ... } // from try @ 002a01e8 with catch @ 002a0238 */ + uVar23 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar38 << 4; + /* catch() { ... } // from try @ 002a0290 with catch @ 002a0240 + catch() { ... } // from try @ 002a0bb4 with catch @ 002a0240 + catch() { ... } // from try @ 002a0ef4 with catch @ 002a0240 + catch() { ... } // from try @ 002a101c with catch @ 002a0240 + catch() { ... } // from try @ 002a1068 with catch @ 002a0240 */ + dVar44 = param_2[(long)(int)uVar5 * 2 + 1]; + pdVar16[-1] = param_2[(long)(int)uVar5 * 2]; + *pdVar16 = -dVar44; + dVar44 = *(double *)((long)param_2 + uVar23 + 8); + pdVar16[1] = *(double *)((long)param_2 + uVar23); + pdVar16[2] = -dVar44; + pdVar16 = pdVar11; + } while (pdVar11 != param_3 + (ulong)uVar19 * 4 + 5); + uVar42 = (ulong)((uVar19 + 1) * 2); + } + if ((int)uVar42 < (int)param_4) { + uVar42 = -(uVar42 >> 0x1f) & 0xfffffff000000000 | uVar42 << 4; + dVar44 = param_2[(long)(int)param_4 * 2 + -1]; + uVar19 = *param_6; + *(double *)((long)param_3 + uVar42) = param_2[(long)(int)param_4 * 2 + -2]; + *(double *)((long)param_3 + uVar42 + 8) = -dVar44; + goto LAB_002a0280; + } + } + uVar19 = *param_6; + } +LAB_002a0280: + if ((uVar19 & 1) == 0) { + /* try { // try from 002a0290 to 003a02ef has its CatchHandler @ 002a0240 */ + if (3 < (int)uVar19) { + cv::checkHardwareSupport(4); + uVar19 = *param_6; + } + uVar28 = uVar19 & 1; + uVar23 = 1; + uVar38 = 4; + if (3 < (int)uVar19) { + do { + iVar29 = (int)uVar39; + iVar41 = iVar29 + 3; + if (-1 < iVar29) { + iVar41 = iVar29; + } + uVar5 = iVar41 >> 2; + uVar39 = (ulong)uVar5; + if (0 < (int)param_4) { + uVar37 = (uint)uVar23; + lVar40 = uVar23 * 0x10; + uVar42 = -(ulong)(uVar37 >> 0x1e) & 0xfffffff000000000 | (ulong)(uVar37 << 1) << 4; + pdVar16 = param_3 + 1; + iVar41 = 0; + pdVar11 = param_3; + do { + pdVar12 = (double *)((long)pdVar11 + uVar42); + dVar53 = *(double *)((long)pdVar16 + lVar40 + uVar42); + dVar60 = *(double *)((long)pdVar11 + uVar42) + pdVar12[uVar23 * 2]; + dVar56 = *pdVar11 + pdVar11[uVar23 * 2]; + dVar57 = *(double *)((long)pdVar16 + uVar42) + dVar53; + dVar55 = *pdVar16 + pdVar16[uVar23 * 2]; + dVar45 = *pdVar11 - pdVar11[uVar23 * 2]; + dVar53 = *(double *)((long)pdVar16 + uVar42) - dVar53; + dVar47 = pdVar12[uVar23 * 2] - *(double *)((long)pdVar11 + uVar42); + dVar44 = *pdVar16 - pdVar16[uVar23 * 2]; + *pdVar11 = dVar60 + dVar56; + *pdVar16 = dVar57 + dVar55; + *(double *)((long)pdVar11 + uVar42) = dVar56 - dVar60; + *(double *)((long)pdVar16 + uVar42) = dVar55 - dVar57; + pdVar11[uVar23 * 2] = dVar53 + dVar45; + pdVar16[uVar23 * 2] = dVar47 + dVar44; + pdVar12[uVar23 * 2] = dVar45 - dVar53; + *(double *)((long)pdVar16 + lVar40 + uVar42) = dVar44 - dVar47; + if (1 < uVar37) { + uVar31 = 1; + pdVar35 = pdVar12; + pdVar36 = (double *)(uVar42 + lVar40 + (long)pdVar11); + pdVar18 = pdVar12 + uVar23 * -2; + pdVar25 = param_8; + pdVar26 = param_8; + pdVar30 = param_8; + do { + pdVar30 = (double *) + ((long)pdVar30 + + (-(ulong)(uVar5 * 3 >> 0x1f) & 0xfffffff000000000 | + (ulong)(uVar5 * 3) << 4)); + pdVar26 = (double *) + ((long)pdVar26 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffff000000000 | uVar39 << 4)); + pdVar25 = (double *) + ((long)pdVar25 + + (-(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffff000000000 | + (ulong)(uVar5 * 2) << 4)); + pdVar17 = pdVar18 + 2; + pdVar14 = pdVar35 + 2; + pdVar24 = pdVar36 + 2; + pdVar21 = pdVar11 + 2; + uVar31 = uVar31 + 1; + /* try { // try from 002a03ec to 003a0473 has its CatchHandler @ 002a1020 */ + dVar55 = *pdVar17 * *pdVar25 - pdVar18[3] * pdVar25[1]; + dVar47 = pdVar35[3] * *pdVar26 + pdVar26[1] * *pdVar14; + dVar53 = *pdVar25 * pdVar18[3] + pdVar25[1] * *pdVar17; + dVar56 = *pdVar14 * *pdVar26 - pdVar26[1] * pdVar35[3]; + dVar45 = pdVar36[3] * *pdVar30 + pdVar30[1] * *pdVar24; + dVar44 = *pdVar24 * *pdVar30 - pdVar30[1] * pdVar36[3]; + dVar60 = dVar55 + *pdVar21; + dVar57 = dVar53 + pdVar11[3]; + dVar58 = dVar47 + dVar45; + dVar61 = dVar56 + dVar44; + dVar47 = dVar47 - dVar45; + dVar44 = dVar44 - dVar56; + dVar55 = *pdVar21 - dVar55; + dVar53 = pdVar11[3] - dVar53; + *pdVar21 = dVar61 + dVar60; + pdVar11[3] = dVar58 + dVar57; + *pdVar14 = dVar60 - dVar61; + pdVar35[3] = dVar57 - dVar58; + *pdVar17 = dVar47 + dVar55; + pdVar18[3] = dVar44 + dVar53; + *pdVar24 = dVar55 - dVar47; + pdVar36[3] = dVar53 - dVar44; + pdVar11 = pdVar21; + pdVar35 = pdVar14; + pdVar36 = pdVar24; + pdVar18 = pdVar17; + } while (uVar31 != uVar37); + } + iVar41 = iVar41 + uVar38; + pdVar11 = (double *)((long)pdVar12 + uVar42); + pdVar16 = (double *)((long)pdVar16 + uVar42 * 2); + } while (iVar41 < (int)param_4); + } + uVar23 = (ulong)uVar38; + uVar38 = uVar38 * 4; + } while ((int)uVar38 <= (int)uVar19); + } + uVar38 = (uint)uVar23; + /* try { // try from 002a04ec to 003a04ef has its CatchHandler @ 002a106c */ + /* try { // try from 002a04f4 to 003a050f has its CatchHandler @ 002a10a8 */ + while (uVar42 = uVar23, (int)uVar38 < (int)uVar19) { + uVar37 = (uint)uVar42; + uVar38 = uVar37 * 2; + uVar23 = (ulong)uVar38; + uVar5 = (int)uVar39 / 2; + uVar39 = (ulong)uVar5; + if (0 < (int)param_4) { + uVar42 = -(uVar42 >> 0x1f) & 0xfffffff000000000 | uVar42 << 4; + /* try { // try from 002a0514 to 003a052f has its CatchHandler @ 002a10e4 */ + uVar34 = -(ulong)((uVar37 & 0x7fffffff) >> 0x1e) & 0xfffffff000000000 | uVar23 << 4; + pdVar11 = (double *)((long)param_3 + uVar42); + pdVar16 = param_3 + 3; + iVar41 = 0; + do { + dVar45 = pdVar16[-3]; + dVar53 = *pdVar11; + dVar44 = pdVar16[-2]; + dVar47 = pdVar11[1]; + pdVar16[-3] = dVar45 + dVar53; + pdVar16[-2] = dVar44 + dVar47; + *pdVar11 = dVar45 - dVar53; + pdVar11[1] = dVar44 - dVar47; + /* try { // try from 002a0568 to 003a066b has its CatchHandler @ 002a1108 */ + if (1 < (int)uVar37) { + pdVar12 = pdVar16; + pdVar25 = param_8; + do { + pdVar25 = (double *) + ((long)pdVar25 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffff000000000 | uVar39 << 4)); + dVar44 = *(double *)((long)pdVar12 + (uVar42 - 8)); + dVar53 = pdVar12[-1]; + dVar47 = dVar44 * *pdVar25 - *(double *)((long)pdVar12 + uVar42) * pdVar25[1]; + dVar44 = dVar44 * pdVar25[1] + *(double *)((long)pdVar12 + uVar42) * *pdVar25; + dVar45 = *pdVar12; + pdVar12[-1] = dVar47 + dVar53; + *pdVar12 = dVar44 + dVar45; + *(double *)((long)pdVar12 + (uVar42 - 8)) = dVar53 - dVar47; + *(double *)((long)pdVar12 + uVar42) = dVar45 - dVar44; + pdVar12 = pdVar12 + 2; + } while (pdVar12 != pdVar16 + (ulong)(uVar37 - 2) * 2 + 2); + } + iVar41 = iVar41 + uVar38; + pdVar11 = (double *)((long)pdVar11 + uVar34); + pdVar16 = (double *)((long)pdVar16 + uVar34); + } while (iVar41 < (int)param_4); + } + } + } + else { + uVar28 = 1; + uVar42 = 1; + } + dVar60 = DAT_002a1200; + dVar57 = DAT_002a11f8; + dVar56 = DAT_002a11f0; + dVar55 = DAT_002a11e8; + dVar53 = _LAB_002a11e0; + dVar47 = DAT_002a11d8; + dVar45 = DAT_002a11d0; + dVar44 = DAT_002a11c8; + uVar28 = uVar28 ^ 1; + if ((int)uVar28 < param_5) { + puVar13 = param_6 + (int)uVar28; + pdVar16 = (double *)(param_10 + 8); + do { + uVar19 = *puVar13; + uVar37 = (uint)uVar42; + uVar38 = uVar19 * uVar37; + uVar5 = 0; + if (uVar19 != 0) { + uVar5 = (int)uVar39 / (int)uVar19; + } + if (uVar19 == 3) { + if (0 < (int)param_4) { + uVar23 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar38 << 4; + uVar42 = -(uVar42 >> 0x1f) & 0xfffffff000000000 | uVar42 << 4; + pdVar11 = param_3 + 1; + iVar41 = 0; + uVar39 = -(ulong)((uVar37 & 0x7fffffff) >> 0x1e) & 0xfffffff000000000 | + (ulong)(uVar37 << 1) << 4; + /* try { // try from 002a0a3c to 003a0a3f has its CatchHandler @ 002a10e4 */ + pdVar12 = param_3; + do { + dVar48 = *(double *)((long)pdVar12 + uVar42) + *(double *)((long)pdVar12 + uVar39); + dVar62 = *(double *)((long)pdVar11 + uVar42) + *(double *)((long)pdVar11 + uVar39); + dVar59 = *pdVar11; + dVar46 = *pdVar12 - dVar48 * 0.5; + dVar51 = dVar59 - dVar62 * 0.5; + dVar61 = *(double *)((long)pdVar11 + uVar42) - *(double *)((long)pdVar11 + uVar39); + dVar58 = *(double *)((long)pdVar12 + uVar39) - *(double *)((long)pdVar12 + uVar42); + *pdVar12 = dVar48 + *pdVar12; + *pdVar11 = dVar62 + dVar59; + *(double *)((long)pdVar12 + uVar42) = dVar46 + dVar44 * dVar61; + *(double *)((long)pdVar11 + uVar42) = dVar51 + dVar44 * dVar58; + *(double *)((long)pdVar12 + uVar39) = dVar46 - dVar44 * dVar61; + *(double *)((long)pdVar11 + uVar39) = dVar51 - dVar44 * dVar58; + if (1 < (int)uVar37) { + pdVar25 = pdVar11 + 1; + pdVar30 = pdVar11 + 2; + /* try { // try from 002a0ab0 to 003a0ab3 has its CatchHandler @ 002a10a8 */ + pdVar35 = param_8; + pdVar36 = param_8; + do { + pdVar36 = (double *) + ((long)pdVar36 + + (-(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffff000000000 | + (ulong)(uVar5 << 1) << 4)); + pdVar35 = (double *) + ((long)pdVar35 + + (-(ulong)(uVar5 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar5 << 4)); + dVar61 = *(double *)((long)pdVar25 + uVar42) * *pdVar35 - + *(double *)((long)pdVar30 + uVar42) * pdVar35[1]; + dVar58 = *(double *)((long)pdVar25 + uVar39) * *pdVar36 - + *(double *)((long)pdVar30 + uVar39) * pdVar36[1]; + dVar59 = *pdVar35 * *(double *)((long)pdVar30 + uVar42) + + pdVar35[1] * *(double *)((long)pdVar25 + uVar42); + dVar62 = *pdVar36 * *(double *)((long)pdVar30 + uVar39) + + pdVar36[1] * *(double *)((long)pdVar25 + uVar39); + dVar46 = *pdVar30; + dVar51 = dVar61 + dVar58; + dVar58 = dVar58 - dVar61; + dVar61 = dVar59 + dVar62; + dVar59 = dVar59 - dVar62; + dVar48 = *pdVar25 - dVar51 * 0.5; + dVar62 = dVar46 - dVar61 * 0.5; + *pdVar25 = dVar51 + *pdVar25; + *pdVar30 = dVar61 + dVar46; + *(double *)((long)pdVar25 + uVar42) = dVar48 + dVar44 * dVar59; + *(double *)((long)pdVar30 + uVar42) = dVar62 + dVar44 * dVar58; + *(double *)((long)pdVar25 + uVar39) = dVar48 - dVar44 * dVar59; + pdVar25 = pdVar25 + 2; + *(double *)((long)pdVar30 + uVar39) = dVar62 - dVar44 * dVar58; + pdVar30 = pdVar30 + 2; + } while (pdVar12 + (ulong)(uVar37 - 2) * 2 + 5 != pdVar30); + } + pdVar12 = (double *)((long)pdVar12 + uVar23); + pdVar11 = (double *)((long)pdVar11 + uVar23); + iVar41 = iVar41 + uVar38; + } while (iVar41 < (int)param_4); + } + } + else if (uVar19 == 5) { + if (0 < (int)param_4) { + lVar40 = (long)(int)(uVar37 << 1); + uVar39 = -(uVar42 >> 0x1f) & 0xfffffff000000000 | uVar42 << 4; + lVar68 = lVar40 * 0x10; + iVar41 = 0; + pdVar11 = param_3; + do { + if (0 < (int)uVar37) { + pdVar36 = pdVar11 + 1; + pdVar18 = pdVar11; + pdVar25 = param_8; + pdVar30 = param_8; + pdVar35 = param_8; + pdVar12 = param_8; + do { + pdVar26 = pdVar12 + 1; + /* try { // try from 002a0c5c to 003a0c5f has its CatchHandler @ 002a1154 */ + pdVar17 = pdVar25 + 1; + pdVar14 = pdVar30 + 1; + pdVar24 = pdVar35 + 1; + dVar62 = *(double *)((long)pdVar36 + uVar39 + lVar68); + dVar46 = *pdVar12; + pdVar12 = pdVar12 + (long)(int)uVar5 * 2; + dVar48 = *pdVar25; + pdVar25 = pdVar25 + (long)(int)(uVar5 << 2) * 2; + dVar52 = *pdVar30; + pdVar30 = pdVar30 + (long)(int)(uVar5 * 3) * 2; + dVar51 = *pdVar35; + pdVar35 = pdVar35 + (long)(int)(uVar5 * 2) * 2; + dVar58 = *(double *)((long)pdVar18 + uVar39 + lVar68); + dVar64 = *(double *)((long)pdVar18 + uVar39) * dVar46 - + *(double *)((long)pdVar36 + uVar39) * *pdVar26; + dVar50 = pdVar18[lVar40 * 4] * dVar48 - pdVar36[lVar40 * 4] * *pdVar17; + dVar59 = dVar58 * dVar52 - dVar62 * *pdVar14; + dVar61 = pdVar18[lVar40 * 2] * dVar51 - pdVar36[lVar40 * 2] * *pdVar24; + dVar51 = dVar51 * pdVar36[lVar40 * 2] + *pdVar24 * pdVar18[lVar40 * 2]; + dVar63 = dVar46 * *(double *)((long)pdVar36 + uVar39) + + *pdVar26 * *(double *)((long)pdVar18 + uVar39); + dVar48 = dVar48 * pdVar36[lVar40 * 4] + *pdVar17 * pdVar18[lVar40 * 4]; + dVar58 = dVar52 * dVar62 + *pdVar14 * dVar58; + dVar54 = *pdVar36; + dVar49 = dVar64 + dVar50; + dVar52 = dVar59 + dVar61; + dVar46 = dVar63 + dVar48; + dVar62 = dVar58 + dVar51; + dVar63 = dVar63 - dVar48; + dVar66 = dVar49 + dVar52; + dVar58 = dVar58 - dVar51; + dVar67 = dVar46 + dVar62; + dVar64 = dVar64 - dVar50; + dVar50 = *pdVar18 - dVar66 * 0.25; + dVar59 = dVar59 - dVar61; + dVar51 = dVar54 - dVar67 * 0.25; + dVar48 = dVar63 + dVar58; + dVar49 = dVar49 - dVar52; + dVar46 = dVar46 - dVar62; + dVar61 = dVar64 + dVar59; + dVar65 = dVar48 * dVar47 - dVar58 * dVar56; + dVar62 = dVar50 + dVar60 * dVar49; + dVar52 = dVar61 * dVar55 - dVar59 * dVar57; + dVar59 = dVar51 + dVar60 * dVar46; + dVar58 = dVar63 * dVar45 + dVar47 * dVar48; + dVar50 = dVar50 - dVar60 * dVar49; + dVar51 = dVar51 - dVar60 * dVar46; + dVar61 = dVar64 * dVar53 + dVar55 * dVar61; + *pdVar18 = *pdVar18 + dVar66; + *pdVar36 = dVar54 + dVar67; + *(double *)((long)pdVar18 + uVar39) = dVar65 + dVar62; + *(double *)((long)pdVar36 + uVar39) = dVar52 + dVar59; + pdVar18[lVar40 * 4] = dVar62 - dVar65; + pdVar36[lVar40 * 4] = dVar59 - dVar52; + pdVar18[lVar40 * 2] = dVar58 + dVar50; + pdVar36[lVar40 * 2] = dVar61 + dVar51; + pdVar26 = pdVar36 + 2; + *(double *)((long)pdVar18 + uVar39 + lVar68) = dVar50 - dVar58; + *(double *)((long)pdVar36 + uVar39 + lVar68) = dVar51 - dVar61; + pdVar36 = pdVar26; + pdVar18 = pdVar18 + 2; + } while (pdVar11 + (ulong)(uVar37 - 1) * 2 + 3 != pdVar26); + } + iVar41 = iVar41 + uVar38; + pdVar11 = pdVar11 + (long)(int)uVar38 * 2; + } while (iVar41 < (int)param_4); + } + } + else { + iVar41 = (int)(uVar19 - 1) / 2; + uVar31 = 0; + if (uVar19 != 0) { + uVar31 = (int)param_9 / (int)uVar19; + } + pdVar11 = (double *)(param_10 + (long)iVar41 * 0x10); + if (0 < (int)param_4) { + lVar40 = (long)(int)uVar37; + iVar29 = 0; + /* try { // try from 002a06cc to 003a06cf has its CatchHandler @ 002a1130 */ + uVar39 = -(ulong)(uVar38 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar38 << 4; + uVar42 = -(ulong)(-uVar37 >> 0x1f) & 0xfffffff000000000 | (ulong)-uVar37 << 4; + pdVar12 = (double *)(param_10 + (ulong)(iVar41 - 1) * 0x10 + 0x18); + lVar68 = NEON_shl((long)(int)(uVar5 * uVar19) + (long)(int)-uVar5,4); + pdVar25 = param_3; + do { + if (0 < (int)uVar37) { + lVar33 = 0; + lVar32 = 0; + uVar19 = 0; + /* try { // try from 002a0748 to 003a07bf has its CatchHandler @ 002a1154 */ + pdVar35 = pdVar25 + lVar40 * 2; + pdVar36 = (double *)((long)pdVar25 + uVar39 + lVar40 * -0x10); + pdVar30 = pdVar25; + pdVar18 = param_8; + do { + dVar59 = *pdVar30; + dVar62 = pdVar30[1]; + dVar58 = dVar62; + dVar61 = dVar59; + if (uVar19 == 0) { + /* try { // try from 002a0b84 to 003a0b87 has its CatchHandler @ 002a11a0 */ + if (0 < iVar41) { + pdVar26 = pdVar35; + pdVar17 = pdVar36; + pdVar14 = pdVar16; + pdVar24 = pdVar11 + 1; + do { + dVar46 = *pdVar26; + dVar50 = *pdVar17; + dVar48 = pdVar26[1]; + pdVar26 = pdVar26 + lVar40 * 2; + dVar49 = pdVar17[1]; + /* try { // try from 002a0bb4 to 003a0c13 has its CatchHandler @ 002a0240 */ + pdVar17 = (double *)((long)pdVar17 + uVar42); + dVar52 = dVar46 + dVar50; + dVar51 = dVar48 + dVar49; + pdVar14[-1] = dVar52; + pdVar21 = pdVar14 + 2; + *pdVar14 = dVar48 - dVar49; + pdVar24[-1] = dVar46 - dVar50; + *pdVar24 = dVar51; + dVar61 = dVar61 + dVar52; + dVar58 = dVar58 + dVar51; + pdVar14 = pdVar21; + pdVar24 = pdVar24 + 2; + } while (pdVar12 != pdVar21); + goto LAB_002a0804; + } + } + else if (0 < iVar41) { + pdVar14 = pdVar35; + pdVar17 = pdVar36; + pdVar26 = pdVar18; + pdVar21 = pdVar16; + pdVar27 = pdVar11 + 1; + pdVar24 = param_8; + do { + pdVar24 = (double *)((long)pdVar24 + lVar32); + pdVar22 = pdVar14 + 1; + pdVar1 = pdVar17 + 1; + pdVar2 = pdVar26 + 1; + dVar52 = *pdVar26; + pdVar26 = (double *)((long)pdVar26 + lVar33); + dVar51 = *pdVar17; + pdVar17 = (double *)((long)pdVar17 + uVar42); + dVar48 = *pdVar14; + pdVar14 = pdVar14 + lVar40 * 2; + dVar49 = dVar48 * *pdVar24 - *pdVar22 * pdVar24[1]; + dVar50 = dVar51 * dVar52 - *pdVar1 * *pdVar2; + dVar46 = *pdVar24 * *pdVar22 + pdVar24[1] * dVar48; + dVar48 = dVar52 * *pdVar1 + *pdVar2 * dVar51; + dVar52 = dVar49 + dVar50; + dVar51 = dVar46 + dVar48; + pdVar21[-1] = dVar52; + dVar61 = dVar61 + dVar52; + pdVar22 = pdVar21 + 2; + *pdVar21 = dVar46 - dVar48; + pdVar27[-1] = dVar49 - dVar50; + *pdVar27 = dVar51; + dVar58 = dVar58 + dVar51; + pdVar21 = pdVar22; + pdVar27 = pdVar27 + 2; + } while (pdVar22 != pdVar12); +LAB_002a0804: + iVar43 = 1; + *pdVar30 = dVar61; + pdVar30[1] = dVar58; + pdVar26 = pdVar35; + pdVar17 = pdVar36; + uVar3 = uVar31; + do { + iVar20 = 0; + pdVar14 = pdVar11; + pdVar24 = pdVar16; + dVar58 = dVar62; + dVar61 = dVar59; + dVar48 = dVar62; + dVar51 = dVar59; + uVar6 = uVar3; + do { + /* try { // try from 002a0804 to 003a084b has its CatchHandler @ 002a1178 */ + uVar23 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar6 << 4; + iVar20 = iVar20 + 1; + dVar52 = *(double *)((long)param_8 + uVar23 + 8); + uVar6 = (uVar3 + uVar6) - + (-(uint)((int)param_9 <= (int)(uVar3 + uVar6)) & param_9); + dVar49 = dVar52 * *pdVar24; + dVar52 = dVar52 * *pdVar14; + dVar46 = *(double *)((long)param_8 + uVar23); + dVar61 = dVar61 + dVar49 + pdVar24[-1] * dVar46; + dVar51 = dVar51 + (dVar46 * pdVar24[-1] - dVar49); + dVar58 = dVar58 + (dVar46 * pdVar14[1] - dVar52); + dVar48 = dVar48 + dVar52 + pdVar14[1] * dVar46; + pdVar14 = pdVar14 + 2; + pdVar24 = pdVar24 + 2; + } while (iVar20 < iVar41); + iVar43 = iVar43 + 1; + uVar3 = uVar3 + uVar31; + *pdVar26 = dVar51; + pdVar26[1] = dVar48; + pdVar26 = pdVar26 + lVar40 * 2; + /* try { // try from 002a08bc to 003a08bf has its CatchHandler @ 002a1154 */ + *pdVar17 = dVar61; + pdVar17[1] = dVar58; + pdVar17 = (double *)((long)pdVar17 + uVar42); + } while (iVar43 <= iVar41); + } + uVar19 = uVar19 + 1; + pdVar30 = pdVar30 + 2; + pdVar35 = pdVar35 + 2; + pdVar36 = pdVar36 + 2; + pdVar18 = (double *)((long)pdVar18 + lVar68); + lVar33 = lVar33 + (long)(int)-uVar5 * 0x10; + lVar32 = lVar32 + (long)(int)uVar5 * 0x10; + } while (uVar19 != uVar37); + } + pdVar25 = (double *)((long)pdVar25 + uVar39); + iVar29 = iVar29 + uVar38; + } while (iVar29 < (int)param_4); + } + } + uVar39 = (ulong)uVar5; + puVar13 = puVar13 + 1; + uVar42 = (ulong)uVar38; + } while (puVar13 != param_6 + (long)(int)uVar28 + 1 + (ulong)((param_5 + -1) - uVar28)); + } + /* try { // try from 002a094c to 003a094f has its CatchHandler @ 002a1130 */ + if (param_1 == 1.0) { + if (uVar4 != 0) { + if ((int)param_4 < 2) { + iVar41 = 0; + /* try { // try from 002a0ec8 to 003a0ecb has its CatchHandler @ 002a0ff8 */ + } + else { + uVar4 = param_4 - 2 >> 1; + pdVar16 = param_3 + 1; + do { + pdVar11 = pdVar16 + 4; + pdVar16[2] = -pdVar16[2]; + *pdVar16 = -*pdVar16; + pdVar16 = pdVar11; + } while (pdVar11 != param_3 + (ulong)uVar4 * 4 + 5); + iVar41 = (uVar4 + 1) * 2; + } + if (iVar41 < (int)param_4) { + param_3[(long)(int)param_4 * 2 + -1] = -param_3[(long)(int)param_4 * 2 + -1]; + } + } + } + else { + dVar44 = param_1; + if (uVar4 != 0) { + dVar44 = -param_1; + } + if (0 < (int)param_4) { + uVar4 = (param_4 - 2 >> 1) + 1; + uVar28 = uVar4 * 2; + uVar39 = (ulong)uVar28; + if (param_4 == 1) { + /* catch() { ... } // from try @ 002a0b84 with catch @ 002a11a0 + catch() { ... } // from try @ 002a0f7c with catch @ 002a11a0 */ + uVar39 = 0; + } + else { + uVar19 = 0; + pdVar16 = param_3; + do { + uVar19 = uVar19 + 1; + /* try { // try from 002a09c0 to 003a09c3 has its CatchHandler @ 002a1108 */ + *pdVar16 = param_1 * *pdVar16; + pdVar16[1] = dVar44 * pdVar16[1]; + pdVar16[2] = param_1 * pdVar16[2]; + pdVar16[3] = dVar44 * pdVar16[3]; + pdVar16 = pdVar16 + 4; + } while (uVar19 < uVar4); + if (param_4 == uVar28) { + return; + } + } + uVar39 = -(uVar39 >> 0x1f) & 0xfffffff000000000 | uVar39 << 4; + *(double *)((long)param_3 + uVar39) = *(double *)((long)param_3 + uVar39) * param_1; + *(double *)((long)param_3 + uVar39 + 8) = dVar44 * *(double *)((long)param_3 + uVar39 + 8); + } + } + return; +} + + +================================================================== + +### FUNC 002a1208 (20 bytes) name=FUN_002a1208 + +void FUN_002a1208(void) + +{ + undefined8 uStack0000000000000000; + undefined8 in_stack_00000008; + + uStack0000000000000000 = in_stack_00000008; + FUN_002a0170(); + return; +} + + +================================================================== + +### FUNC 002a121c (1500 bytes) name=FUN_002a121c + +void FUN_002a121c(double param_1,double *param_2,double *param_3,uint param_4,undefined8 param_5, + int *param_6,int *param_7,long param_8,undefined8 param_9,undefined8 param_10, + uint param_11) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + ulong uVar5; + long lVar6; + uint *puVar7; + double *pdVar8; + long lVar9; + double *pdVar10; + uint uVar11; + int iVar12; + double *pdVar13; + int *piVar14; + ulong uVar15; + int iVar16; + uint *puVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + + /* try { // try from 002a1228 to 003a122b has its CatchHandler @ 002a11e0 */ + /* try { // try from 002a1244 to 003a1247 has its CatchHandler @ 002a152c */ + if ((param_11 >> 9 & 1) == 0) { + dVar18 = *param_2; + dVar25 = 0.0; + } + else { + dVar18 = *param_2; + dVar25 = param_2[1]; + param_2 = param_2 + 1; + *param_2 = dVar18; + } + if (param_4 == 1) { + *param_3 = param_1 * dVar18; + goto LAB_002a14d8; + } + if (param_4 == 2) { + dVar19 = param_2[1]; + /* try { // try from 002a1754 to 003a179b has its CatchHandler @ 002a1534 */ + param_3[1] = param_1 * (dVar18 - dVar19); + *param_3 = param_1 * (dVar19 + dVar18); + goto LAB_002a14d8; + } + iVar1 = (int)(param_4 + 1) >> 1; + if ((param_4 & 1) != 0) { + *param_3 = dVar18; + /* try { // try from 002a1520 to 003a1523 has its CatchHandler @ 002a11e0 */ + /* catch() { ... } // from try @ 002a1284 with catch @ 002a1524 + catch() { ... } // from try @ 002a12e0 with catch @ 002a1524 + catch() { ... } // from try @ 002a14cc with catch @ 002a1524 */ + param_3[1] = 0.0; + /* catch() { ... } // from try @ 002a1244 with catch @ 002a152c + catch() { ... } // from try @ 002a13bc with catch @ 002a152c + catch() { ... } // from try @ 002a1488 with catch @ 002a152c */ + if (1 < iVar1) { + /* catch() { ... } // from try @ 002a1568 with catch @ 002a1534 + catch() { ... } // from try @ 002a1754 with catch @ 002a1534 + catch() { ... } // from try @ 002a17fc with catch @ 002a1534 */ + puVar7 = (uint *)(param_7 + (int)param_4); + puVar17 = (uint *)(param_7 + ((long)(int)param_4 - (ulong)(iVar1 - 2)) + -1); + pdVar10 = param_2 + 1; + do { + param_7 = param_7 + 1; + iVar1 = *param_7; + dVar19 = pdVar10[1]; + puVar7 = puVar7 + -1; + dVar18 = *pdVar10; + /* try { // try from 002a1568 to 003a156b has its CatchHandler @ 002a1534 */ + uVar5 = -(ulong)(*puVar7 >> 0x1f) & 0xfffffff000000000 | (ulong)*puVar7 << 4; + param_3[(long)iVar1 * 2] = dVar18; + param_3[(long)iVar1 * 2 + 1] = -dVar19; + /* try { // try from 002a1584 to 003a1587 has its CatchHandler @ 002a1808 */ + *(double *)((long)param_3 + uVar5) = dVar18; + *(double *)((long)param_3 + uVar5 + 8) = dVar19; + pdVar10 = pdVar10 + 2; + } while (puVar7 != puVar17); + } + FUN_002a0170(0x3ff0000000000000,param_3,param_3,(ulong)param_4,param_5,param_6); + /* try { // try from 002a15c4 to 003a15c7 has its CatchHandler @ 002a1800 */ + *param_3 = *param_3 * param_1; + if (1 < (int)param_4) { + uVar4 = param_4 - 2 >> 1; + uVar3 = uVar4 + 1; + pdVar10 = param_3 + 2; + pdVar8 = param_3 + 1; + /* try { // try from 002a1618 to 003a161b has its CatchHandler @ 002a17ac */ + if ((pdVar10 < param_3 + (ulong)uVar3 * 2 + 1 && pdVar8 < param_3 + (ulong)uVar3 * 4 + 2) || + (uVar3 < 6)) { + do { + dVar18 = pdVar10[2]; + pdVar13 = pdVar10 + 4; + *pdVar8 = param_1 * *pdVar10; + pdVar8[1] = param_1 * dVar18; + pdVar8 = pdVar8 + 2; + pdVar10 = pdVar13; + } while (pdVar13 != param_3 + (ulong)uVar4 * 4 + 6); + } + else { + /* try { // try from 002a1620 to 003a166f has its CatchHandler @ 002a1800 */ + uVar4 = (uVar4 - 2 >> 1) + 1; + if (param_4 - 2 < 4) { + uVar5 = 1; + /* catch() { ... } // from try @ 002a1618 with catch @ 002a17ac */ + } + else { + uVar11 = 0; + do { + dVar18 = *pdVar10; + dVar24 = pdVar10[2]; + dVar19 = pdVar10[4]; + dVar20 = pdVar10[6]; + pdVar10 = pdVar10 + 8; + uVar11 = uVar11 + 1; + *pdVar8 = param_1 * dVar18; + pdVar8[1] = param_1 * dVar24; + pdVar8[2] = param_1 * dVar19; + pdVar8[3] = param_1 * dVar20; + pdVar8 = pdVar8 + 4; + } while (uVar11 < uVar4); + uVar5 = (ulong)(uVar4 * 4 + 1); + if (uVar4 * 2 == uVar3) goto LAB_002a14d8; + } + uVar4 = (uint)uVar5; + uVar15 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + uVar5 = -(ulong)((uVar4 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar4 << 1) << 3; + uVar3 = uVar4 + 2; + dVar18 = *(double *)((long)param_3 + uVar5 + 0x10); + *(double *)((long)param_3 + uVar15) = param_1 * *(double *)((long)param_3 + uVar5); + *(double *)((long)param_3 + uVar15 + 8) = param_1 * dVar18; + if ((int)uVar3 < (int)param_4) { + uVar15 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; + dVar18 = *(double *)((long)param_3 + uVar5 + 0x30); + /* try { // try from 002a16e0 to 003a16e3 has its CatchHandler @ 002a1808 */ + uVar4 = uVar4 + 4; + *(double *)((long)param_3 + uVar15) = param_1 * *(double *)((long)param_3 + uVar5 + 0x20); + *(double *)((long)param_3 + uVar15 + 8) = param_1 * dVar18; + if ((int)uVar4 < (int)param_4) { + uVar15 = -(ulong)(uVar4 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar4 << 3; + dVar18 = *(double *)((long)param_3 + uVar5 + 0x50); + *(double *)((long)param_3 + uVar15) = + param_1 * *(double *)((long)param_3 + uVar5 + 0x40); + *(double *)((long)param_3 + uVar15 + 8) = param_1 * dVar18; + } + } + } + } + goto LAB_002a14d8; + } + uVar5 = -(ulong)(param_4 >> 0x1f) & 0xfffffff800000000 | (ulong)param_4 << 3; + lVar9 = (long)param_2 + uVar5; + /* try { // try from 002a1284 to 003a1287 has its CatchHandler @ 002a1524 */ + pdVar10 = (double *)(param_8 + 0x10); + dVar19 = *(double *)(lVar9 + -8); + dVar24 = param_2[1]; + *param_3 = dVar19 + dVar18; + param_3[1] = dVar19 - dVar18; + if (iVar1 < 3) { + iVar16 = 2; + } + else { + pdVar8 = param_2 + 2; + pdVar13 = param_3 + 2; + lVar6 = (long)param_3 + uVar5; + iVar16 = 2; + do { + while( true ) { + iVar12 = iVar16 >> 1; + dVar18 = dVar24 - *(double *)(lVar9 + -0x18); + dVar22 = *pdVar8 + *(double *)(lVar9 + -0x10); + dVar19 = *pdVar8 - *(double *)(lVar9 + -0x10); + dVar20 = *(double *)(lVar9 + -0x18) + dVar24; + dVar23 = dVar22 * *pdVar10 - dVar18 * pdVar10[1]; + dVar22 = dVar22 * pdVar10[1] + *pdVar10 * dVar18; + dVar24 = pdVar8[1]; + dVar18 = dVar20 - dVar23; + dVar21 = -dVar19 - dVar22; + dVar20 = dVar20 + dVar23; + dVar19 = dVar19 - dVar22; + if (param_2 == param_3) break; + iVar2 = param_7[iVar12]; + iVar16 = iVar16 + 2; + iVar12 = param_7[iVar1 - iVar12]; + pdVar10 = pdVar10 + 2; + param_3[iVar2] = dVar18; + param_3[(long)iVar2 + 1] = dVar21; + lVar9 = lVar9 + -0x10; + param_3[iVar12] = dVar20; + pdVar8 = pdVar8 + 2; + param_3[(long)iVar12 + 1] = dVar19; + pdVar13 = pdVar13 + 2; + lVar6 = lVar6 + -0x10; + if (iVar1 <= iVar16) goto LAB_002a1390; + } + iVar16 = iVar16 + 2; + pdVar10 = pdVar10 + 2; + *pdVar13 = dVar18; + pdVar13[1] = dVar21; + lVar9 = lVar9 + -0x10; + /* try { // try from 002a12d8 to 003a12db has its CatchHandler @ 002a14d4 */ + *(double *)(lVar6 + -0x10) = dVar20; + pdVar8 = pdVar8 + 2; + /* try { // try from 002a12e0 to 003a133b has its CatchHandler @ 002a1524 */ + *(double *)(lVar6 + -8) = dVar19; + pdVar13 = pdVar13 + 2; + lVar6 = lVar6 + -0x10; + } while (iVar16 < iVar1); +LAB_002a1390: + iVar16 = (iVar1 - 3U & 0xfffffffe) + 4; + } + iVar12 = (int)param_5; + if (iVar1 < iVar16) { + iVar16 = *param_6; + *param_6 = iVar16 >> 1; + uVar3 = (uint)(iVar16 >> 1 == 1); + iVar12 = iVar12 - uVar3; + if (uVar3 == 0) goto LAB_002a13e4; + lVar9 = 4; +LAB_002a13e8: + piVar14 = (int *)((long)param_6 + lVar9); + } + else { + dVar18 = param_2[iVar1] + param_2[iVar1]; + if (param_2 == param_3) { + /* try { // try from 002a13bc to 003a13bf has its CatchHandler @ 002a152c */ + iVar16 = *param_6; + param_3[iVar1] = dVar24 + dVar24; + param_3[(long)iVar1 + 1] = dVar18; + *param_6 = iVar16 >> 1; + uVar3 = (uint)(iVar16 >> 1 == 1); + iVar12 = iVar12 - uVar3; + if (uVar3 == 0) { +LAB_002a13e4: + lVar9 = 0; + goto LAB_002a13e8; + } + piVar14 = param_6 + 1; + } + else { + iVar2 = param_7[iVar1]; + iVar16 = *param_6; + param_3[iVar2 << 1] = dVar24 + dVar24; + param_3[(long)(iVar2 << 1) + 1] = dVar18; + uVar3 = (uint)(iVar16 >> 1 == 1); + iVar12 = iVar12 - uVar3; + *param_6 = iVar16 >> 1; + if (uVar3 == 0) goto LAB_002a13e4; + piVar14 = param_6 + 1; + /* try { // try from 002a17a4 to 003a17a7 has its CatchHandler @ 002a1808 */ + } + } + FUN_002a0170(0x3ff0000000000000,param_3,param_3,iVar1,iVar12,piVar14); + *param_6 = *param_6 << 1; + if (0 < (int)param_4) { + /* try { // try from 002a1430 to 003a147f has its CatchHandler @ 002a11e0 */ + uVar4 = param_4 - 1 >> 1; + uVar3 = (uVar4 - 1 >> 1) + 1; + dVar18 = -param_1; + if (param_4 - 1 < 2) { + uVar5 = 0; + } + else { + uVar11 = 0; + pdVar10 = param_3; + do { + uVar11 = uVar11 + 1; + /* try { // try from 002a1488 to 003a148b has its CatchHandler @ 002a152c */ + *pdVar10 = param_1 * *pdVar10; + pdVar10[1] = dVar18 * pdVar10[1]; + pdVar10[2] = param_1 * pdVar10[2]; + pdVar10[3] = dVar18 * pdVar10[3]; + pdVar10 = pdVar10 + 4; + } while (uVar11 < uVar3); + uVar5 = (ulong)(uVar3 * 4); + if (uVar3 * 2 == uVar4 + 1) goto LAB_002a14d8; + } + uVar5 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + /* try { // try from 002a14cc to 003a14cf has its CatchHandler @ 002a1524 */ + *(double *)((long)param_3 + uVar5) = *(double *)((long)param_3 + uVar5) * param_1; + /* catch() { ... } // from try @ 002a12d8 with catch @ 002a14d4 */ + *(double *)((long)param_3 + uVar5 + 8) = dVar18 * *(double *)((long)param_3 + uVar5 + 8); + } +LAB_002a14d8: + if ((param_11 >> 9 & 1) != 0) { + *param_2 = dVar25; + } + return; +} + + +================================================================== + +### FUNC 002a17f8 (20 bytes) name=FUN_002a17f8 + +void FUN_002a17f8(void) + +{ + undefined8 uStack0000000000000000; + undefined8 in_stack_00000008; + + uStack0000000000000000 = in_stack_00000008; + /* try { // try from 002a17fc to 003a17ff has its CatchHandler @ 002a1534 */ + /* catch() { ... } // from try @ 002a15c4 with catch @ 002a1800 + catch() { ... } // from try @ 002a1620 with catch @ 002a1800 */ + /* catch() { ... } // from try @ 002a1584 with catch @ 002a1808 + catch() { ... } // from try @ 002a16e0 with catch @ 002a1808 + catch() { ... } // from try @ 002a17a4 with catch @ 002a1808 */ + FUN_002a121c(); + return; +} + + +================================================================== + +### FUNC 002a1810 (500 bytes) name=FUN_002a1810 + +void FUN_002a1810(double *param_1,int param_2,double *param_3,long param_4,double *param_5, + int param_6,ulong param_7,undefined4 param_8,undefined8 param_9,undefined8 param_10 + ,undefined8 param_11,double *param_12,undefined8 param_13,undefined8 param_14) + +{ + long lVar1; + double *pdVar2; + int iVar3; + long lVar4; + undefined8 *puVar5; + double *pdVar6; + uint uVar7; + ulong uVar8; + int iVar9; + double *pdVar10; + double *pdVar11; + double *pdVar12; + ulong uVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + + iVar9 = (int)param_7; + uVar13 = (ulong)(long)param_2 >> 3; + iVar3 = iVar9 >> 1; + if (iVar9 == 1) { + *param_5 = *param_1; + return; + } + uVar8 = -((ulong)(long)param_2 >> 0x22 & 1) & 0xfffffff800000000 | (uVar13 & 0xffffffff) << 3; + *param_3 = (*param_1 + *param_1) * *param_12 * DAT_002a1a08; + if (iVar3 < 2) { + uVar13 = -(param_7 >> 0x1f & 1) & 0xfffffff800000000 | (param_7 & 0xffffffff) << 3; + *(double *)((long)param_3 + (uVar13 - 8)) = + (*(double *)((long)param_1 + uVar8) + *(double *)((long)param_1 + uVar8)) * param_12[2]; + FUN_002a121c(0x3ff0000000000000,param_3,param_4,param_7 & 0xffffffff,param_8,param_9,param_10, + param_11,param_7 & 0xffffffff,param_14,0); + if (iVar3 < 1) { + return; + } + } + else { + pdVar11 = param_1 + (iVar9 + -1) * (int)uVar13; + pdVar6 = param_3 + 1; + pdVar10 = param_12 + 2; + pdVar12 = (double *)((long)param_1 + uVar8); + do { + dVar15 = *pdVar10; + pdVar2 = pdVar10 + 2; + dVar16 = *pdVar11; + dVar17 = *pdVar12; + pdVar11 = (double *)((long)pdVar11 - uVar8); + pdVar12 = (double *)((long)pdVar12 + uVar8); + dVar14 = pdVar10[1]; + *pdVar6 = dVar15 * dVar17 - dVar14 * dVar16; + pdVar6[1] = -(dVar14 * dVar17) - dVar15 * dVar16; + pdVar6 = pdVar6 + 2; + pdVar10 = pdVar2; + } while (pdVar2 != param_12 + ((ulong)(iVar3 - 2) + 2) * 2); + lVar4 = (ulong)(iVar3 - 2) + 1; + uVar13 = -(param_7 >> 0x1f & 1) & 0xfffffff800000000 | (param_7 & 0xffffffff) << 3; + dVar14 = *(double *)((long)((long)param_1 + uVar8) + uVar8 * lVar4); + *(double *)((long)param_3 + (uVar13 - 8)) = (dVar14 + dVar14) * (param_12 + 2)[lVar4 * 2]; + FUN_002a121c(0x3ff0000000000000,param_3,param_4,param_7 & 0xffffffff,param_8,param_9,param_10, + param_11,param_7 & 0xffffffff,param_14,0); + } + puVar5 = (undefined8 *)(param_4 + uVar13); + uVar13 = (ulong)(long)param_6 >> 3; + lVar4 = 0; + uVar7 = (uint)uVar13; + do { + lVar1 = lVar4 * 8; + lVar4 = lVar4 + 1; + *param_5 = *(double *)(param_4 + lVar1); + puVar5 = puVar5 + -1; + *(undefined8 *) + ((long)param_5 + + (-((ulong)(long)param_6 >> 0x22 & 1) & 0xfffffff800000000 | (uVar13 & 0xffffffff) << 3)) = + *puVar5; + param_5 = (double *) + ((long)param_5 + + (-(ulong)((uVar7 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar7 << 1) << 3)); + } while ((int)lVar4 < iVar3); + return; +} + + +================================================================== + +### FUNC 002a1a10 (804 bytes) name=FUN_002a1a10 + +void FUN_002a1a10(double param_1,double *param_2,long param_3,uint param_4,undefined8 param_5, + int *param_6,long param_7,double *param_8,undefined4 param_9,undefined8 param_10, + uint param_11) + +{ + int *piVar1; + uint uVar2; + double *pdVar3; + long lVar4; + int iVar5; + double *pdVar6; + uint uVar7; + double *pdVar8; + int *piVar9; + int iVar10; + ulong uVar11; + double *pdVar12; + long lVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + + uVar11 = (ulong)(param_11 >> 9) & 1; + iVar10 = (int)uVar11; + lVar13 = uVar11 * 8; + pdVar12 = (double *)(param_3 + lVar13); + if (param_4 == 1) { + *(double *)(param_3 + lVar13) = *param_2 * param_1; + } + else { + if (param_4 == 2) { + dVar14 = param_1 * (*param_2 + param_2[1]); + pdVar12[1] = param_1 * (*param_2 - param_2[1]); + *(double *)(param_3 + lVar13) = dVar14; + if (iVar10 == 0) { + return; + } + pdVar12[-1] = dVar14; + *(undefined8 *)(param_3 + lVar13) = 0; + goto LAB_002a1ca8; + } + if ((param_4 & 1) != 0) { + dVar14 = *param_2; + pdVar12 = pdVar12 + -uVar11; + pdVar12[1] = 0.0; + *pdVar12 = param_1 * dVar14; + if (1 < (int)param_4) { + piVar9 = (int *)(param_7 + 4); + pdVar6 = pdVar12 + 2; + do { + piVar1 = piVar9 + 1; + pdVar3 = pdVar6 + 4; + iVar5 = *piVar9; + piVar9 = piVar9 + 2; + dVar17 = param_2[*piVar1]; + dVar14 = param_2[iVar5]; + pdVar6[1] = 0.0; + pdVar6[3] = 0.0; + pdVar6[2] = param_1 * dVar17; + *pdVar6 = param_1 * dVar14; + pdVar6 = pdVar3; + } while (pdVar3 != pdVar12 + (ulong)(param_4 - 2 >> 1) * 4 + 6); + } + FUN_002a0170(0x3ff0000000000000,pdVar12,pdVar12,param_4,param_5,param_6,param_7,param_8, + param_9,param_10,0x100); + if (iVar10 != 0) { + return; + } + pdVar12[1] = *pdVar12; + return; + } + iVar5 = *param_6; + uVar2 = (int)param_4 >> 1; + *param_6 = iVar5 >> 1; + uVar7 = (uint)(iVar5 >> 1 == 1); + dVar14 = param_1 * 0.5; + lVar4 = 4; + if (uVar7 == 0) { + lVar4 = 0; + } + FUN_002a0170(0x3ff0000000000000,param_2,pdVar12,(ulong)uVar2,(int)param_5 - uVar7, + (long)param_6 + lVar4); + dVar15 = pdVar12[1]; + dVar17 = *(double *)(param_3 + lVar13); + lVar4 = (long)(int)param_4; + *param_6 = *param_6 << 1; + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + dVar16 = param_1 * (dVar17 - dVar15); + *(double *)(param_3 + lVar13) = param_1 * (dVar17 + dVar15); + pdVar12[1] = dVar16; + dVar15 = *(double *)((long)pdVar12 + uVar11); + dVar17 = pdVar12[lVar4 + -1]; + pdVar12[lVar4 + -1] = dVar16; + if ((int)uVar2 < 3) { + iVar5 = 2; + } + else { + pdVar6 = pdVar12 + lVar4; + uVar7 = uVar2 - 3 >> 1; + pdVar3 = pdVar12; + do { + pdVar8 = pdVar3 + 2; + dVar21 = param_8[2]; + dVar20 = dVar14 * (pdVar6[-2] - *pdVar8); + dVar19 = dVar14 * (pdVar3[3] + dVar17); + dVar18 = pdVar6[-2] + *pdVar8; + dVar16 = pdVar3[3] - dVar17; + dVar17 = pdVar6[-3]; + dVar22 = dVar19 * dVar21 - dVar20 * param_8[3]; + dVar19 = dVar20 * dVar21 + param_8[3] * dVar19; + pdVar3[1] = dVar22 + dVar18 * dVar14; + pdVar6[-3] = dVar14 * dVar18 - dVar22; + *pdVar8 = dVar19 + dVar16 * dVar14; + pdVar6 = pdVar6 + -2; + *pdVar6 = dVar19 - dVar16 * dVar14; + pdVar3 = pdVar8; + param_8 = param_8 + 2; + } while (pdVar6 != pdVar12 + lVar4 + (ulong)uVar7 * -2 + -2); + iVar5 = (uVar7 + 2) * 2; + } + if (iVar5 <= (int)uVar2) { + *(double *)((long)pdVar12 + (uVar11 - 8)) = param_1 * dVar15; + *(double *)((long)pdVar12 + uVar11) = -(dVar17 * param_1); + } + } + if (iVar10 != 0) { + pdVar12[-1] = *(double *)(param_3 + lVar13); + *(undefined8 *)(param_3 + lVar13) = 0; + if (1 < (int)param_4) { +LAB_002a1ca8: + pdVar12[(int)param_4] = 0.0; + return; + } + } + return; +} + + +================================================================== + +### FUNC 002a1d34 (20 bytes) name=FUN_002a1d34 + +void FUN_002a1d34(void) + +{ + undefined8 uStack0000000000000000; + undefined8 in_stack_00000008; + + uStack0000000000000000 = in_stack_00000008; + FUN_002a1a10(); + return; +} + + +================================================================== + +### FUNC 002a1d48 (488 bytes) name=FUN_002a1d48 + +void FUN_002a1d48(double *param_1,int param_2,long param_3,double *param_4,double *param_5, + int param_6,int param_7,undefined4 param_8,undefined8 param_9,undefined8 param_10, + undefined8 param_11,double *param_12,undefined8 param_13,undefined8 param_14) + +{ + undefined8 *puVar1; + double *pdVar2; + int iVar3; + double *pdVar4; + uint uVar5; + ulong uVar6; + double *pdVar7; + double *pdVar8; + long lVar9; + double *pdVar10; + undefined8 *puVar11; + double *pdVar12; + int iVar13; + ulong uVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + + iVar3 = param_7 >> 1; + uVar14 = (ulong)(long)param_6 >> 3; + if (param_7 != 1) { + iVar13 = (int)uVar14; + if (iVar3 < 1) { + FUN_002a1a10(0x3ff0000000000000,param_3,param_4,param_7,param_8,param_9,param_10,param_11, + param_7,param_14,0); + pdVar8 = param_5 + iVar13; + pdVar7 = param_12 + 2; + *param_5 = *param_4 * *param_12 * DAT_002a1f30; + } + else { + lVar9 = 0; + uVar6 = (ulong)(long)param_2 >> 3; + puVar11 = (undefined8 *)(param_3 + (long)param_7 * 8); + uVar5 = (uint)uVar6; + do { + *(double *)(param_3 + lVar9 * 8) = *param_1; + lVar9 = lVar9 + 1; + puVar1 = (undefined8 *) + ((long)param_1 + + (-((ulong)(long)param_2 >> 0x22 & 1) & 0xfffffff800000000 | + (uVar6 & 0xffffffff) << 3)); + param_1 = (double *) + ((long)param_1 + + (-(ulong)((uVar5 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar5 << 1) << 3)); + puVar11 = puVar11 + -1; + *puVar11 = *puVar1; + } while ((int)lVar9 < iVar3); + FUN_002a1a10(0x3ff0000000000000,param_3,param_4,param_7,param_8,param_9,param_10,param_11, + param_7,param_14,0); + uVar14 = -((ulong)(long)param_6 >> 0x22 & 1) & 0xfffffff800000000 | (uVar14 & 0xffffffff) << 3 + ; + pdVar8 = (double *)((long)param_5 + uVar14); + pdVar7 = param_12 + 2; + *param_5 = *param_4 * *param_12 * DAT_002a1f30; + if (1 < iVar3) { + param_5 = param_5 + (param_7 + -1) * iVar13; + pdVar4 = pdVar7; + pdVar10 = param_4 + 1; + pdVar12 = pdVar8; + do { + dVar15 = pdVar4[1]; + pdVar2 = pdVar4 + 2; + dVar17 = pdVar10[1]; + dVar16 = *pdVar4; + dVar18 = *pdVar10; + *pdVar12 = dVar16 * dVar18 - dVar15 * dVar17; + pdVar12 = (double *)((long)pdVar12 + uVar14); + *param_5 = -(dVar15 * dVar18) - dVar16 * dVar17; + param_5 = (double *)((long)param_5 - uVar14); + pdVar4 = pdVar2; + pdVar10 = pdVar10 + 2; + } while (pdVar2 != param_12 + ((ulong)(iVar3 - 2) + 2) * 2); + lVar9 = (ulong)(iVar3 - 2) + 1; + pdVar8 = (double *)((long)pdVar8 + lVar9 * uVar14); + pdVar7 = pdVar7 + lVar9 * 2; + } + } + *pdVar8 = param_4[(long)param_7 + -1] * *pdVar7; + return; + } + *param_5 = *param_1; + return; +} + + +================================================================== + +### FUNC 002a1f40 (11456 bytes) name=dft + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::dft(cv::_InputArray const&, cv::_OutputArray const&, int, int) */ + +void cv::dft(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4) + +{ + long lVar1; + int *piVar2; + undefined1 *puVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + undefined4 uVar7; + uint uVar8; + int iVar9; + uint uVar10; + char cVar11; + bool bVar12; + int iVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + ulong *puVar23; + bool bVar24; + int iVar25; + uint uVar26; + int iVar27; + undefined8 *puVar28; + void *__dest; + ulong uVar29; + ulong uVar30; + undefined8 *puVar31; + undefined8 *puVar32; + long lVar33; + undefined1 (*pauVar34) [16]; + undefined4 *puVar35; + uint *puVar36; + uint *puVar37; + undefined4 *puVar38; + uint uVar39; + uint uVar40; + Mat *pMVar41; + undefined4 *puVar42; + undefined8 *puVar43; + undefined8 *puVar44; + uint *puVar45; + ulong uVar46; + int iVar47; + uint uVar48; + size_t __n; + int iVar49; + undefined1 (*pauVar50) [16]; + size_t __n_00; + uint uVar51; + long lVar52; + ulong uVar53; + long lVar54; + undefined1 (*pauVar55) [16]; + undefined1 (*pauVar56) [16]; + uint uVar57; + undefined8 *puVar58; + uint uVar59; + uint uVar60; + undefined8 *puVar61; + undefined8 *__src; + uint uVar62; + code *pcVar63; + undefined8 uVar64; + undefined1 auVar65 [16]; + undefined1 auVar66 [16]; + undefined1 auVar67 [16]; + undefined1 auVar68 [16]; + undefined1 auVar69 [16]; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + double dVar72; + ulong uVar73; + undefined1 *puVar74; + undefined8 *puVar75; + undefined8 *local_690; + ulong local_688; + long local_678; + uint local_648; + uint local_644; + uint local_620; + Mat *local_610; + int local_608; + undefined8 local_5e0; + undefined8 local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + uint local_5c0; + int iStack_5bc; + undefined4 uStack_5b8; + uint uStack_5b4; + undefined8 *local_5b0; + undefined8 local_5a8; + undefined8 local_5a0; + undefined8 local_598; + undefined8 local_590; + long local_588; + undefined4 *local_580; + ulong *local_578; + ulong local_570 [2]; + undefined8 local_560; + undefined8 uStack_558; + undefined8 *local_550; + undefined8 uStack_548; + undefined8 local_540; + undefined8 uStack_538; + undefined8 local_530; + long lStack_528; + uint *local_520; + ulong *local_518; + ulong local_510; + ulong uStack_508; + uint local_500; + int local_4fc; + uint local_4f8; + uint local_4f4; + undefined8 *local_4f0; + undefined8 uStack_4e8; + undefined8 local_4e0; + undefined8 uStack_4d8; + undefined8 local_4d0; + long lStack_4c8; + uint *local_4c0; + ulong *local_4b8; + ulong local_4b0; + undefined8 local_4a8; + uint local_4a0 [34]; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + local_418 = auStack_408; + local_410 = 0x408; + iVar25 = _InputArray::kind(param_1); + if (iVar25 == 0x10000) { + pMVar41 = *(Mat **)(param_1 + 8); + local_580 = &uStack_5b8; + local_578 = local_570; + local_5c0 = *(uint *)pMVar41; + iStack_5bc = *(int *)(pMVar41 + 4); + uStack_5b8 = *(undefined4 *)(pMVar41 + 8); + uStack_5b4 = *(uint *)(pMVar41 + 0xc); + local_5b0 = *(undefined8 **)(pMVar41 + 0x10); + local_5a8 = *(undefined8 *)(pMVar41 + 0x18); + local_5a0 = *(undefined8 *)(pMVar41 + 0x20); + local_598 = *(undefined8 *)(pMVar41 + 0x28); + local_590 = *(undefined8 *)(pMVar41 + 0x30); + local_588 = *(long *)(pMVar41 + 0x38); + local_570[1] = 0; + local_570[0] = 0; + if (local_588 != 0) { + piVar2 = (int *)(local_588 + 0x14); + do { + cVar11 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar24) { + *piVar2 = *piVar2 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (2 < *(int *)(pMVar41 + 4)) { + iStack_5bc = 0; + Mat::copySize((Mat *)&local_5c0,pMVar41); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_610 = (Mat *)&local_5c0; + local_518 = &local_510; + local_520 = (uint *)&uStack_558; + local_560 = CONCAT44(iStack_5bc,local_5c0); + auVar70._8_4_ = uStack_5b8; + auVar70._0_8_ = local_560; + auVar70._12_4_ = uStack_5b4; + uStack_508 = 0; + local_510 = 0; + local_550 = local_5b0; + uStack_548 = local_5a8; + local_540 = local_5a0; + uStack_538 = local_598; + uStack_558 = auVar70._8_8_; + local_530 = local_590; + lStack_528 = local_588; + if (local_588 != 0) { + piVar2 = (int *)(local_588 + 0x14); + do { + cVar11 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar24) { + *piVar2 = *piVar2 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (iStack_5bc < 3) { + local_510 = *local_578; + uStack_508 = local_578[1]; + } + else { + local_560 = (ulong)local_5c0; + Mat::copySize((Mat *)&local_560,local_610); + } + uVar51 = param_3 & 1; + local_620 = 1; + uVar39 = (uint)local_560 >> 3 & 0x1ff; + if (uVar39 != 0) { + local_620 = (uint)((param_3 & 0x21U) == 0x21); + } + uVar4 = (uint)local_560 & 7; + uVar57 = (uint)local_560 & 0xfff; + uVar62 = (uint)(0x88442211L >> (uVar4 << 2)) & 0xf; + uVar8 = uVar62 * 2; + if (1 < ((uint)local_560 & 0xff7) - 5) { + local_5e0 = 0; + local_5d8 = 0; + puVar28 = (undefined8 *)String::allocate((String *)&local_5e0,0x4c); + uVar6 = DAT_00465b38; + uVar22 = _DAT_00465b28; + uVar21 = _DAT_00465b20; + uVar20 = DAT_00465b18; + uVar19 = DAT_00465b10; + uVar18 = DAT_00465b08; + uVar17 = DAT_00465b00; + uVar16 = DAT_00465af8; + uVar64 = DAT_00465af0; + puVar28[8] = DAT_00465b30; + *(undefined4 *)(puVar28 + 9) = uVar6; + *puVar28 = uVar64; + puVar28[1] = uVar16; + puVar28[2] = uVar17; + puVar28[3] = uVar18; + puVar28[4] = uVar19; + puVar28[5] = uVar20; + puVar28[6] = uVar21; + puVar28[7] = uVar22; + error(-0xd7,(String *)&local_5e0,"void cv::dft(cv::InputArray, cv::OutputArray, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0x9ca); + String::deallocate((String *)&local_5e0); + uVar39 = (uint)local_560 >> 3 & 0x1ff; + } + if (uVar51 == 0) { + if ((uVar39 == 0) && (((uint)param_3 >> 4 & 1) != 0)) { + uVar57 = uVar4 + 8; + } + } + else if ((uVar39 == 1) && (((uint)param_3 >> 5 & 1) != 0)) { + uVar57 = uVar4; + } + local_4a0[1] = *local_520; + local_4a0[0] = local_520[1]; + _OutputArray::create(param_2,local_4a0,uVar57,0xffffffff,0,0); + iVar25 = _InputArray::kind((_InputArray *)param_2); + if (iVar25 == 0x10000) { + pMVar41 = *(Mat **)(param_2 + 8); + lStack_4c8 = *(long *)(pMVar41 + 0x38); + local_500 = *(uint *)pMVar41; + local_4fc = *(int *)(pMVar41 + 4); + local_4f8 = *(uint *)(pMVar41 + 8); + local_4f4 = *(uint *)(pMVar41 + 0xc); + local_4f0 = *(undefined8 **)(pMVar41 + 0x10); + uStack_4e8 = *(undefined8 *)(pMVar41 + 0x18); + local_4e0 = *(undefined8 *)(pMVar41 + 0x20); + uStack_4d8 = *(undefined8 *)(pMVar41 + 0x28); + local_4d0 = *(undefined8 *)(pMVar41 + 0x30); + local_4c0 = &local_4f8; + local_4b8 = &local_4b0; + local_4a8 = 0; + local_4b0 = 0; + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + cVar11 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar24) { + *piVar2 = *piVar2 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (*(int *)(pMVar41 + 4) < 3) { + local_4b0 = **(ulong **)(pMVar41 + 0x48); + local_4a8 = (*(ulong **)(pMVar41 + 0x48))[1]; + } + else { + local_4fc = 0; + Mat::copySize((Mat *)&local_500,pMVar41); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar39 = uVar62; + if (local_620 == 0) { + uVar39 = uVar8; + } + if ((0 < param_4) && (uStack_558._4_4_ == 1)) { + local_5d0 = 0; + local_5c8 = 0; + __dest = (void *)String::allocate((String *)&local_5d0,0xbe); + memcpy(__dest,&DAT_00465b40,0xbe); + error(-0xd5,(String *)&local_5d0,"void cv::dft(cv::InputArray, cv::OutputArray, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xa10); + String::deallocate((String *)&local_5d0); + } + uVar57 = param_3 & 4; + if (((uint)param_3 >> 2 & 1) == 0) { + local_644 = uVar57; + if (1 < (int)(uint)uStack_558) { + if (uStack_558._4_4_ == 1) { + if (((uint)local_560 >> 0xe & 1) == 0) { + local_644 = uStack_558._4_4_; + } + else { + local_644 = (uint)((local_500 & 0x4000) == 0); + } + } + else if (1 < (int)uStack_558._4_4_) { + local_644 = local_620 & uVar51; + } + } + } + else { + local_644 = 0; + } + uVar46 = (ulong)(int)uVar8; + __n = (size_t)(int)uVar39; + uVar29 = uVar46 & 0x1c; + bVar24 = uVar57 == 0; + local_608 = uVar8 + 4; + iVar25 = 0; + local_648 = param_4; + if (local_644 != 0) goto LAB_002a2934; + if (uVar51 != 0) goto LAB_002a3190; +LAB_002a24c4: + local_688 = uStack_558 & 0xffffffff; + uVar57 = uStack_558._4_4_; + if (uStack_558._4_4_ == 1) goto LAB_002a31a4; +LAB_002a24d8: + if (local_620 == 0) { + local_678 = (long)(int)uVar57; + uVar60 = local_620; + } + else { + local_678 = (long)(int)uVar57; + uVar60 = uVar57 & 1; + } + do { + iVar27 = 0; + if (uVar57 != 0) goto LAB_002a2964; +LAB_002a24f4: + iVar49 = iVar25 + -1; + uVar40 = local_4a0[0] & 1; + uVar26 = local_4a0[0]; +LAB_002a2508: + iVar27 = iVar27 + uVar57 * local_608; + uVar59 = (uint)(local_4a0[iVar49] == uVar26); + if (1 < iVar25) { + if (uVar40 == 0) { + uVar40 = local_4a0[1] & 1; + uVar26 = local_4a0[1]; + } + else { + uVar40 = 1; + } + } +LAB_002a253c: + if ((uVar40 != 0) && (5 < (int)uVar26)) { + iVar27 = iVar27 + uVar8 + uVar26 * uVar8; + } + if (local_644 == 0) { + if (((uVar59 == 0) && (local_550 == local_4f0)) || (uVar60 != 0)) goto LAB_002a256c; +LAB_002a2a4c: + bVar12 = false; + } + else { + if (uVar59 != 0) goto LAB_002a2a4c; +LAB_002a256c: + iVar27 = iVar27 + uVar57 * uVar8; + bVar12 = true; + } + uVar53 = (ulong)(iVar27 + 0x20); + puVar74 = local_418; + if (local_410 < uVar53) { + if (local_418 != auStack_408) { + if (local_418 != (undefined1 *)0x0) { + operator_delete__(local_418); + } + local_410 = 0x408; + local_418 = auStack_408; + } + puVar74 = auStack_408; + if (0x408 < uVar53) { + local_418 = operator_new__(uVar53); + puVar74 = local_418; + local_410 = uVar53; + } + } + lVar52 = local_678 * 4; + __n_00 = (size_t)(int)(uVar57 * uVar8); + puVar3 = puVar74 + __n_00; + puVar28 = (undefined8 *)((ulong)(puVar3 + lVar52 + 0xf) & 0xfffffffffffffff0); + if ((uVar57 != 0) || ((uVar59 < uVar51 && (local_620 != 0)))) { + FUN_0029da38(uVar57,iVar25,local_4a0,puVar3,uVar8,puVar74,(local_644 ^ 1) & local_620 & uVar51 + ); + } + puVar58 = local_4f0; + puVar75 = local_550; + if (local_644 == 0) { + iVar27 = 0x200; + if (((uint)local_560 >> 3 & 0x1ff) + 1 == (local_500 >> 3 & 0x1ff) + 1) { + iVar27 = 0; + } + iVar49 = uVar57 * uVar39; + uVar40 = iVar27 + uVar51; + if (bVar12) { + puVar75 = (undefined8 *)((long)puVar28 + __n_00); + puVar58 = puVar28; + if ((uVar60 <= uVar51) || ((int)uVar57 < 2)) goto LAB_002a29fc; + uVar60 = uVar39; + if (uVar40 >> 9 != 0) { + if (uVar51 != 0) { + uVar60 = 0; + goto LAB_002a26b4; + } + goto LAB_002a2a10; + } +LAB_002a26b4: + puVar58 = puVar28; + if (local_620 != 0) goto LAB_002a26bc; +LAB_002a2a38: + uVar26 = 3; + uVar59 = local_620; + } + else { + puVar58 = (undefined8 *)0x0; + puVar75 = puVar28; +LAB_002a29fc: + puVar28 = puVar58; + uVar60 = 0; + if ((uVar51 != 0) || (uVar60 = 0, uVar40 >> 9 == 0)) goto LAB_002a26b4; +LAB_002a2a10: + uVar60 = 0; + uVar26 = uVar39; + if ((uVar57 & 1) == 0) { + uVar26 = uVar8; + } + iVar49 = iVar49 + uVar26; + if (local_620 == 0) goto LAB_002a2a38; +LAB_002a26bc: + uVar26 = 5; + if (uVar51 == 0) { + uVar26 = 4; + } + uVar59 = 2; + if (uVar51 == 0) { + uVar59 = 1; + } + } + if (uVar4 == 6) { + uVar59 = uVar26; + } + pcVar63 = (code *)(&PTR_FUN_004f6080)[(int)uVar59]; + if ((((int)(uint)local_688 < 2) || (!bVar24)) || ((local_620 ^ 1) < uVar51)) { + if ((param_3 & 2U) == 0) goto LAB_002a2724; + uVar26 = (uint)local_688; + if (!bVar24) { + uVar26 = 1; + } + dVar72 = 1.0 / (double)(int)(uVar26 * uVar57); + if ((int)local_648 <= (int)(uint)local_688) goto LAB_002a2734; +LAB_002a3204: + local_648 = (uint)local_688; + if (0 < (int)(uint)local_688) goto LAB_002a273c; + iVar27 = 0; + } + else { + local_644 = 1; +LAB_002a2724: + dVar72 = 1.0; + if ((int)(uint)local_688 < (int)local_648) goto LAB_002a3204; +LAB_002a2734: + if ((int)local_648 < 1) goto LAB_002a3204; +LAB_002a273c: + lVar52 = 0; + lVar54 = 0; + if (puVar58 == (undefined8 *)0x0) { + do { + auVar71._8_8_ = 0; + auVar71._0_8_ = dVar72; + (*pcVar63)(auVar71,(undefined8 *)((long)local_550 + lVar54 * *local_518), + (undefined8 *)((long)local_4f0 + lVar54 * *local_4b8),uVar57,iVar25,local_4a0 + ,puVar3,puVar74,uVar57,0,puVar75,uVar40); + iVar27 = (int)lVar54 + 1; + lVar54 = lVar54 + 1; + } while ((int)lVar54 < (int)local_648); + } + else { + do { + auVar65._8_8_ = 0; + auVar65._0_8_ = dVar72; + puVar28 = (undefined8 *)((long)local_4f0 + lVar52 * *local_4b8); + (*pcVar63)(auVar65,(undefined8 *)((long)local_550 + lVar52 * *local_518),puVar58,uVar57, + iVar25,local_4a0,puVar3,puVar74,uVar57,0,puVar75,uVar40); + if (puVar28 != puVar58) { + memcpy(puVar28,(void *)((long)puVar58 + (long)(int)uVar60),(long)iVar49); + } + iVar27 = (int)lVar52 + 1; + lVar52 = lVar52 + 1; + } while ((int)lVar52 < (int)local_648); + } + } + if (iVar27 < (int)(uint)local_688) { + lVar52 = (long)iVar27 + 1; + lVar54 = (long)iVar27; + for (lVar33 = lVar52; + memset((undefined8 *)((long)local_4f0 + lVar54 * *local_4b8),0,(long)iVar49), + lVar33 != lVar52 + (ulong)(((uint)local_688 - 1) - iVar27); lVar33 = lVar33 + 1) { + lVar54 = lVar33; + } + } + if (local_644 != 1) { + if ((uVar51 < local_620) && ((local_500 >> 3 & 0x1ff) == 1)) { + if ((0x88442211UL >> ((local_500 & 7) << 2) & 0xf) == 4) { + if (0 < (int)local_648) { + uVar29 = -(ulong)((local_4f4 - 1 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)((local_4f4 - 1) * 2) << 2; + iVar25 = (int)(local_4f4 + 1) / 2; + puVar28 = local_4f0 + 1; + uVar51 = 0; + do { + if (1 < iVar25) { + puVar35 = (undefined4 *)((uVar29 - 8) + (long)puVar28); + puVar75 = puVar28; + do { + puVar38 = puVar35 + -2; + *puVar35 = *(undefined4 *)puVar75; + puVar35[1] = -*(float *)((long)puVar75 + 4); + puVar35 = puVar38; + puVar75 = puVar75 + 1; + } while ((undefined4 *)(uVar29 + (ulong)(iVar25 - 2) * -8 + -0x10 + (long)puVar28) + != puVar38); + } + uVar51 = uVar51 + 1; + puVar28 = (undefined8 *)((long)puVar28 + (local_4b0 & 0xfffffffffffffffc)); + } while (uVar51 != local_648); + } + } + else if (0 < (int)local_648) { + uVar29 = -(ulong)((local_4f4 - 1 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)((local_4f4 - 1) * 2) << 3; + iVar25 = (int)(local_4f4 + 1) / 2; + puVar28 = local_4f0 + 2; + uVar51 = 0; + do { + if (1 < iVar25) { + puVar75 = (undefined8 *)((uVar29 - 0x10) + (long)puVar28); + puVar58 = puVar28; + do { + puVar43 = puVar75 + -2; + *puVar75 = *puVar58; + puVar75[1] = -(double)puVar58[1]; + puVar75 = puVar43; + puVar58 = puVar58 + 2; + } while ((undefined8 *) + (uVar29 + (ulong)(iVar25 - 2) * -0x10 + -0x20 + (long)puVar28) != puVar43); + } + uVar51 = uVar51 + 1; + puVar28 = (undefined8 *)((long)puVar28 + (local_4b0 & 0xfffffffffffffff8)); + } while (uVar51 != local_648); + } + } + goto LAB_002a3eb4; + } + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + cVar11 = '\x01'; + bVar12 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar12) { + *piVar2 = *piVar2 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (lStack_528 == 0) { +LAB_002a2880: + if (0 < local_560._4_4_) goto LAB_002a28a0; +LAB_002a35fc: + local_560 = CONCAT44(local_560._4_4_,local_500); +LAB_002a28cc: + puVar23 = local_4b8; + if (2 < local_4fc) goto LAB_002a3274; + uStack_558 = CONCAT44(local_4f4,local_4f8); + local_560 = CONCAT44(local_4fc,(uint)local_560); + *local_518 = *local_4b8; + local_518[1] = puVar23[1]; + } + else { + piVar2 = (int *)(lStack_528 + 0x14); + do { + iVar27 = *piVar2; + cVar11 = '\x01'; + bVar12 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar12) { + *piVar2 = iVar27 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar27 != 1) goto LAB_002a2880; + Mat::deallocate((Mat *)&local_560); + if (local_560._4_4_ < 1) goto LAB_002a35fc; +LAB_002a28a0: + iVar27 = 0; + puVar36 = local_520; + do { + *puVar36 = 0; + iVar27 = iVar27 + 1; + puVar36 = puVar36 + 1; + } while (iVar27 < local_560._4_4_); + local_560 = CONCAT44(local_560._4_4_,local_500); + if (local_560._4_4_ < 3) goto LAB_002a28cc; +LAB_002a3274: + lStack_528 = 0; + uStack_538 = 0; + local_540 = 0; + uStack_548 = 0; + local_550 = (undefined8 *)0x0; + Mat::copySize((Mat *)&local_560,(Mat *)&local_500); + } + uStack_538 = uStack_4d8; + local_540 = local_4e0; + lStack_528 = lStack_4c8; + local_530 = local_4d0; + uStack_548 = uStack_4e8; + local_550 = local_4f0; +LAB_002a2934: + uVar57 = local_4f4; + if (uVar51 == 0) { + uVar57 = uStack_5b4; + } + local_688 = (ulong)uVar57; + local_678 = (long)(int)local_4f8; + uVar60 = 0; + iVar27 = local_4f8 * 2 * uVar8; + uVar57 = local_4f8; + if (local_4f8 == 0) goto LAB_002a24f4; +LAB_002a2964: + if (5 < (int)uVar57) break; + uVar59 = 1; + iVar25 = 1; + uVar40 = uVar57 & 1; + local_4a0[0] = uVar57; + iVar27 = iVar27 + uVar57 * local_608; + uVar26 = uVar57; + goto LAB_002a253c; + } + puVar43 = (undefined8 *)((long)puVar28 + __n_00); + local_690 = (undefined8 *)((long)puVar43 + __n_00); + puVar61 = puVar28; + __src = puVar43; + if (bVar12) { + puVar61 = puVar43; + __src = local_690; + local_690 = (undefined8 *)((long)local_690 + __n_00); + } + dVar72 = 1.0; + iVar27 = 3; + if (uVar4 != 6) { + iVar27 = 0; + } + pcVar63 = (code *)(&PTR_FUN_004f6080)[iVar27]; + if (((local_620 & uVar51) == 0) || ((int)uStack_558._4_4_ < 2)) { + if ((param_3 & 2U) != 0) { + dVar72 = 1.0 / (double)(int)(uVar57 * (uint)local_688); + } + if (local_620 == 0) { + if ((int)(uint)local_688 < 1) goto LAB_002a3eb4; + local_644 = 1; + iVar27 = 0; + goto LAB_002a2d2c; + } + local_644 = 1; + } + else { + local_644 = 0; + } + uVar40 = (uint)local_688 & 1 ^ 1; + uVar60 = (int)((uint)local_688 + 1) / 2; + if (uVar51 == 0) { + /* try { // try from 002a3730 to 003a3743 has its CatchHandler @ 002a36f0 */ + memset(puVar28,0,__n_00); + uVar53 = local_510 >> 2; + if (uVar39 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = puVar75; + puVar44 = puVar28; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + } + } + else if (uVar39 == 8) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = puVar75; + puVar44 = puVar28; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *puVar44 = uVar64; + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + } + } + else if ((__n == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar32 = puVar75; + puVar44 = puVar28; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar35 = (undefined4 *)((long)puVar32 + 0xc); + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *(undefined4 *)((long)puVar44 + 0xc) = *puVar35; + *(undefined4 *)(puVar44 + 1) = uVar6; + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + } + puVar75 = (undefined8 *) + ((long)puVar75 + (long)(int)(uVar39 + (local_500 >> 3 & 0x1ff) * uVar39)); + if (uVar40 != 0) { + memset(puVar43,0,__n_00); + /* try { // try from 002a37a4 to 003a3867 has its CatchHandler @ 002a3964 */ + uVar53 = local_510 >> 2; + puVar32 = (undefined8 *)((long)puVar75 + (long)(int)(((uint)local_688 - 2) * uVar39)); + if (uVar39 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar43; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + } + } + else if (uVar39 == 8) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar43; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *puVar44 = uVar64; + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + } + } + else if ((__n == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar44 = puVar43; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar35 = (undefined4 *)((long)puVar32 + 0xc); + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *(undefined4 *)((long)puVar44 + 0xc) = *puVar35; + *(undefined4 *)(puVar44 + 1) = uVar6; + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + } + goto LAB_002a2c34; + } + } + else { + if (((uint)local_560 >> 3 & 0x1ff) == 0) { + uVar73 = local_510 >> 2; + uVar53 = __n; + if (uVar39 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = local_550; + puVar44 = puVar28; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + puVar44 = (undefined8 *)((long)puVar44 + 4); + } while (uVar26 != uVar57); + } + iVar27 = (int)(uVar57 + 1) / 2; + if (1 < iVar27) { + uVar30 = -(ulong)((uVar57 - 1 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)((uVar57 - 1) * 2) << 2; + puVar35 = (undefined4 *)((long)puVar28 + uVar30); + puVar38 = (undefined4 *)((long)puVar28 + 4); + do { + puVar42 = puVar35 + -2; + *puVar35 = *puVar38; + puVar35[1] = -(float)puVar38[1]; + puVar35 = puVar42; + puVar38 = puVar38 + 2; + } while (puVar42 != + (undefined4 *)((uVar30 - 8) + (ulong)(iVar27 - 2) * -8 + (long)puVar28)); + } + /* catch() { ... } // from try @ 002a37a4 with catch @ 002a3964 */ + uVar26 = uVar57; + if ((uVar57 & 1) == 0) { + uVar26 = uVar57 - 1; + *(undefined4 *)((long)puVar28 + lVar52) = *(undefined4 *)((long)puVar28 + lVar52 + -4); + *(undefined4 *)((long)puVar28 + (local_678 + 1) * 4) = 0; + } + /* try { // try from 002a3988 to 003a398b has its CatchHandler @ 002a36f0 */ + if (1 < (int)uVar26) { + uVar30 = -(ulong)(uVar26 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar26 << 2; + lVar54 = (ulong)(uVar26 - 2) + 1; + memmove((void *)((long)puVar28 + uVar30 + 4 + lVar54 * -4), + (void *)((long)puVar28 + uVar30 + lVar54 * -4),lVar54 * 4); + } + *(undefined4 *)((long)puVar28 + 4) = 0; + if (uVar40 != 0) { + puVar35 = (undefined4 *)((long)puVar75 + (long)(int)(((uint)local_688 - 1) * 4)); + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = puVar43; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar32 = *puVar35; + puVar35 = puVar35 + uVar73; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (uVar26 != uVar57); + } + if (1 < iVar27) { + lVar54 = (long)(int)((uVar57 - 1) * 2); + puVar35 = (undefined4 *)((long)puVar43 + lVar54 * 4); + puVar38 = (undefined4 *)((long)puVar43 + 4); + do { + puVar42 = puVar35 + -2; + *puVar35 = *puVar38; + puVar35[1] = -(float)puVar38[1]; + puVar35 = puVar42; + puVar38 = puVar38 + 2; + } while (puVar42 != + (undefined4 *)((long)puVar43 + (lVar54 + (ulong)(iVar27 - 2) * -2) * 4 + -8)) + ; + } + uVar26 = uVar57; + if ((uVar57 & 1) == 0) { + uVar26 = uVar57 - 1; + *(undefined4 *)((long)puVar43 + lVar52) = *(undefined4 *)((long)puVar43 + lVar52 + -4) + ; + *(undefined4 *)((long)puVar43 + (local_678 + 1) * 4) = 0; + } + if (1 < (int)uVar26) { + uVar73 = -(ulong)(uVar26 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar26 << 2; + lVar52 = (ulong)(uVar26 - 2) + 1; + memmove((void *)((long)puVar28 + __n_00 + 4 + uVar73 + lVar52 * -4), + (void *)((long)puVar28 + __n_00 + uVar73 + lVar52 * -4),lVar52 * 4); + } + *(undefined4 *)((long)puVar43 + 4) = 0; + } + } + else { + if (uVar39 == 8) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = local_550; + puVar44 = puVar28; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *puVar44 = uVar64; + puVar44 = puVar44 + 1; + } while (uVar26 != uVar57); + } + } + else if ((__n == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar32 = local_550; + puVar44 = puVar28; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar35 = (undefined4 *)((long)puVar32 + 0xc); + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *(undefined4 *)((long)puVar44 + 0xc) = *puVar35; + *(undefined4 *)(puVar44 + 1) = uVar6; + puVar44 = puVar44 + 2; + } while (uVar26 != uVar57); + } + iVar27 = (int)(uVar57 + 1) / 2; + if (1 < iVar27) { + uVar30 = -(ulong)((uVar57 - 1 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)((uVar57 - 1) * 2) << 3; + puVar32 = (undefined8 *)((long)puVar28 + uVar30); + puVar44 = puVar28 + 1; + do { + puVar31 = puVar32 + -2; + *puVar32 = *puVar44; + puVar32[1] = -(double)puVar44[1]; + puVar32 = puVar31; + puVar44 = puVar44 + 2; + } while (puVar31 != + (undefined8 *)((uVar30 - 0x10) + (ulong)(iVar27 - 2) * -0x10 + (long)puVar28)); + } + uVar26 = uVar57; + if ((uVar57 & 1) == 0) { + uVar26 = uVar57 - 1; + puVar28[local_678] = puVar28[local_678 + -1]; + puVar28[local_678 + 1] = 0; + } + if (1 < (int)uVar26) { + uVar30 = -(ulong)(uVar26 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar26 << 3; + lVar52 = (ulong)(uVar26 - 2) + 1; + memmove((void *)((long)puVar28 + uVar30 + 8 + lVar52 * -8), + (void *)((long)puVar28 + uVar30 + lVar52 * -8),lVar52 * 8); + } + puVar28[1] = 0; + if (uVar40 != 0) { + puVar32 = (undefined8 *)((long)puVar75 + (long)(int)(((uint)local_688 - 1) * uVar39)); + if (uVar39 == 8) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar43; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *puVar44 = uVar64; + puVar44 = puVar44 + 1; + } while (uVar26 != uVar57); + } + } + else if ((__n == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar44 = puVar43; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar35 = (undefined4 *)((long)puVar32 + 0xc); + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *(undefined4 *)((long)puVar44 + 0xc) = *puVar35; + *(undefined4 *)(puVar44 + 1) = uVar6; + puVar44 = puVar44 + 2; + } while (uVar26 != uVar57); + } + if (1 < iVar27) { + lVar52 = (long)(int)((uVar57 - 1) * 2); + puVar32 = puVar43 + lVar52; + puVar44 = puVar43 + 1; + do { + puVar31 = puVar32 + -2; + *puVar32 = *puVar44; + puVar32[1] = -(double)puVar44[1]; + puVar32 = puVar31; + puVar44 = puVar44 + 2; + } while (puVar31 != puVar43 + lVar52 + (ulong)(iVar27 - 2) * -2 + -2); + } + uVar26 = uVar57; + if ((uVar57 & 1) == 0) { + uVar26 = uVar57 - 1; + puVar43[local_678] = puVar43[local_678 + -1]; + puVar43[local_678 + 1] = 0; + } + if (1 < (int)uVar26) { + uVar73 = -(ulong)(uVar26 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar26 << 3; + lVar52 = (ulong)(uVar26 - 2) + 1; + memmove((void *)((long)puVar28 + __n_00 + 8 + uVar73 + lVar52 * -8), + (void *)((long)puVar28 + __n_00 + uVar73 + lVar52 * -8),lVar52 * 8); + } + puVar43[1] = 0; + } + } + } + else { + uVar73 = local_510 >> 2; + uVar53 = uVar46; + if (uVar62 == 2) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = local_550; + puVar44 = puVar28; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + puVar44 = (undefined8 *)((long)puVar44 + 4); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar26 = 0; + puVar35 = (undefined4 *)((long)local_550 + (long)(int)(uVar60 << 2)); + puVar32 = puVar43; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar32 = *puVar35; + puVar35 = puVar35 + uVar73; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (uVar26 != uVar57); + } + } + } + else if (uVar62 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = local_550; + puVar44 = puVar28; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *puVar44 = uVar64; + puVar44 = puVar44 + 1; + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar26 = 0; + puVar32 = (undefined8 *)((long)local_550 + (long)(int)(uVar60 << 3)); + puVar44 = puVar43; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *puVar44 = uVar64; + puVar44 = puVar44 + 1; + } while (uVar26 != uVar57); + } + } + } + else if ((uVar46 == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar32 = local_550; + puVar44 = puVar28; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar35 = (undefined4 *)((long)puVar32 + 0xc); + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + *(undefined4 *)((long)puVar44 + 0xc) = *puVar35; + *(undefined4 *)(puVar44 + 1) = uVar6; + puVar44 = puVar44 + 2; + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar26 = 0; + puVar35 = (undefined4 *)((long)local_550 + (long)(int)(uVar60 << 4)); + puVar32 = puVar43; + do { + uVar26 = uVar26 + 1; + uVar6 = puVar35[1]; + *(undefined4 *)puVar32 = *puVar35; + *(undefined4 *)((long)puVar32 + 4) = uVar6; + puVar38 = puVar35 + 3; + uVar6 = puVar35[2]; + puVar35 = puVar35 + uVar73; + *(undefined4 *)((long)puVar32 + 0xc) = *puVar38; + *(undefined4 *)(puVar32 + 1) = uVar6; + puVar32 = puVar32 + 2; + } while (uVar26 != uVar57); + } + } + } + puVar75 = (undefined8 *)((long)puVar75 + uVar53); + if (uVar40 != 0) { +LAB_002a2c34: + auVar66._8_8_ = 0; + auVar66._0_8_ = dVar72; + (*pcVar63)(auVar66,puVar43,__src,uVar57,iVar25,local_4a0,puVar3,puVar74,uVar57,0,local_690, + uVar51); + } + } + auVar67._8_8_ = 0; + auVar67._0_8_ = dVar72; + (*pcVar63)(auVar67,puVar28,puVar61,uVar57,iVar25,local_4a0,puVar3,puVar74,uVar57,0,local_690, + uVar51); + if ((local_500 >> 3 & 0x1ff) == 0) { + uVar53 = __n; + if (uVar51 == 0) { + puVar32 = memcpy((void *)((long)puVar61 + __n),puVar61,__n); + uVar73 = local_4b0 >> 2; + if (uVar39 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar58; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (uVar26 != uVar57); + } + if (uVar40 != 0) { + puVar38 = memcpy((void *)((long)__src + 4),__src,4); + uVar40 = 0; + puVar35 = (undefined4 *)((long)puVar58 + (long)(int)(((uint)local_688 - 1) * 4)); + if (0 < (int)uVar57) { + do { + uVar40 = uVar40 + 1; + *puVar35 = *puVar38; + puVar35 = (undefined4 *)((long)puVar35 + (local_4b0 & 0xfffffffffffffffc)); + puVar38 = puVar38 + 1; + } while (uVar40 != uVar57); + } + } + } + else if (uVar39 == 8) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar58; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = puVar32 + 1; + *puVar44 = uVar64; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + } while (uVar26 != uVar57); + } + if (uVar40 != 0) { + uVar40 = 0; + puVar44 = __src + 1; + *puVar44 = *__src; + puVar32 = (undefined8 *)((long)puVar58 + (long)(int)(((uint)local_688 - 1) * 8)); + if (0 < (int)uVar57) { + do { + uVar64 = *puVar44; + uVar40 = uVar40 + 1; + puVar44 = puVar44 + 1; + *puVar32 = uVar64; + puVar32 = (undefined8 *)((long)puVar32 + (local_4b0 & 0xfffffffffffffffc)); + } while (uVar40 != uVar57); + } + } + } + else if (__n == 0x10) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar58; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar31 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = puVar32 + 2; + *(undefined4 *)(puVar44 + 1) = *(undefined4 *)puVar31; + *(undefined4 *)((long)puVar44 + 0xc) = uVar6; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + } while (uVar26 != uVar57); + } + if (uVar40 != 0) { + puVar32 = __src + 2; + *puVar32 = *__src; + __src[3] = __src[1]; + uVar40 = 0; + puVar35 = (undefined4 *)((long)puVar58 + (long)(int)(((uint)local_688 - 1) * 0x10)); + if (0 < (int)uVar57) { + do { + uVar40 = uVar40 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *puVar35 = *(undefined4 *)puVar32; + puVar35[1] = uVar6; + puVar44 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = puVar32 + 2; + puVar35[2] = *(undefined4 *)puVar44; + puVar35[3] = uVar6; + puVar35 = (undefined4 *)((long)puVar35 + (local_4b0 & 0xfffffffffffffffc)); + } while (uVar40 != uVar57); + } + } + } + else if (uVar40 != 0) { + memcpy((void *)((long)__src + __n),__src,__n); + } + } + else { + uVar73 = local_4b0 >> 2; + if (uVar39 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar61; + puVar32 = puVar58; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar32 = *(undefined4 *)puVar44; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar40 = 0; + puVar35 = (undefined4 *)((long)puVar58 + (long)(int)(((uint)local_688 - 1) * 4)); + puVar32 = __src; + do { + uVar40 = uVar40 + 1; + *puVar35 = *(undefined4 *)puVar32; + puVar35 = puVar35 + uVar73; + puVar32 = (undefined8 *)((long)puVar32 + uVar29); + } while (uVar40 != uVar57); + } + } + } + else if (uVar39 == 8) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = puVar61; + puVar44 = puVar58; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar29); + *puVar44 = uVar64; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar40 = 0; + puVar32 = (undefined8 *)((long)puVar58 + (long)(int)(((uint)local_688 - 1) * 8)); + puVar44 = __src; + do { + uVar64 = *puVar44; + uVar40 = uVar40 + 1; + puVar44 = (undefined8 *)((long)puVar44 + uVar29); + *puVar32 = uVar64; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + } while (uVar40 != uVar57); + } + } + } + else if ((__n == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar32 = puVar61; + puVar44 = puVar58; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar31 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = (undefined8 *)((long)puVar32 + uVar29); + *(undefined4 *)(puVar44 + 1) = *(undefined4 *)puVar31; + *(undefined4 *)((long)puVar44 + 0xc) = uVar6; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar40 = 0; + puVar35 = (undefined4 *)((long)puVar58 + (long)(int)(((uint)local_688 - 1) * 0x10)); + puVar32 = __src; + do { + uVar40 = uVar40 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *puVar35 = *(undefined4 *)puVar32; + /* catch() { ... } // from try @ 002a3730 with catch @ 002a36f0 + catch() { ... } // from try @ 002a3890 with catch @ 002a36f0 + catch() { ... } // from try @ 002a3988 with catch @ 002a36f0 */ + puVar35[1] = uVar6; + puVar44 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = (undefined8 *)((long)puVar32 + uVar29); + puVar35[2] = *(undefined4 *)puVar44; + puVar35[3] = uVar6; + puVar35 = puVar35 + uVar73; + } while (uVar40 != uVar57); + } + } + } + } + else { + uVar73 = local_4b0 >> 2; + uVar53 = uVar46; + if (uVar62 == 2) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar44 = puVar61; + puVar32 = puVar58; + do { + uVar26 = uVar26 + 1; + *(undefined4 *)puVar32 = *(undefined4 *)puVar44; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + puVar44 = (undefined8 *)((long)puVar44 + 4); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar40 = 0; + puVar35 = (undefined4 *)((long)puVar58 + (long)(int)(uVar60 << 2)); + puVar32 = __src; + do { + uVar40 = uVar40 + 1; + *puVar35 = *(undefined4 *)puVar32; + puVar35 = puVar35 + uVar73; + puVar32 = (undefined8 *)((long)puVar32 + 4); + } while (uVar40 != uVar57); + } + } + } + else if (uVar62 == 4) { + if (0 < (int)uVar57) { + uVar26 = 0; + puVar32 = puVar61; + puVar44 = puVar58; + do { + uVar64 = *puVar32; + uVar26 = uVar26 + 1; + puVar32 = puVar32 + 1; + *puVar44 = uVar64; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar40 = 0; + puVar32 = (undefined8 *)((long)puVar58 + (long)(int)(uVar60 << 3)); + puVar44 = __src; + do { + uVar64 = *puVar44; + uVar40 = uVar40 + 1; + puVar44 = puVar44 + 1; + *puVar32 = uVar64; + puVar32 = (undefined8 *)((long)puVar32 + uVar73 * 4); + } while (uVar40 != uVar57); + } + } + } + else if ((uVar46 == 0x10) && (0 < (int)uVar57)) { + uVar26 = 0; + puVar32 = puVar61; + puVar44 = puVar58; + do { + uVar26 = uVar26 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar31 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = puVar32 + 2; + *(undefined4 *)(puVar44 + 1) = *(undefined4 *)puVar31; + *(undefined4 *)((long)puVar44 + 0xc) = uVar6; + puVar44 = (undefined8 *)((long)puVar44 + uVar73 * 4); + } while (uVar26 != uVar57); + if (uVar40 != 0) { + uVar40 = 0; + puVar35 = (undefined4 *)((long)puVar58 + (long)(int)(uVar60 << 4)); + puVar32 = __src; + do { + uVar40 = uVar40 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *puVar35 = *(undefined4 *)puVar32; + puVar35[1] = uVar6; + puVar44 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = puVar32 + 2; + puVar35[2] = *(undefined4 *)puVar44; + puVar35[3] = uVar6; + puVar35 = puVar35 + uVar73; + } while (uVar40 != uVar57); + } + } + } + if (1 < (int)uVar60) { + iVar27 = 1; + puVar58 = (undefined8 *)((long)puVar58 + uVar53); + local_688._0_4_ = uVar60; +LAB_002a2d2c: + iVar49 = uVar57 * 4; + iVar5 = uVar57 * 2; + lVar52 = (ulong)(iVar5 - 1U >> 1) * 8 + 0xc; + iVar27 = iVar27 + 1; + lVar54 = (ulong)(iVar49 - 1U >> 2) * 0x10 + 0x14; + do { + if (iVar27 < (int)(uint)local_688) { + uVar53 = local_510 >> 2; + if (uVar62 == 2) { + if (0 < (int)uVar57) { + lVar33 = 0; + puVar32 = puVar75; + do { + uVar6 = *(undefined4 *)puVar32; + uVar7 = *(undefined4 *)((long)puVar32 + 4); + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *(undefined4 *)((long)puVar28 + lVar33 * 4) = uVar6; + *(undefined4 *)((long)puVar43 + lVar33 * 4) = uVar7; + lVar33 = lVar33 + 1; + } while ((int)lVar33 < (int)uVar57); + } + } + else if (uVar62 == 4) { + if (0 < iVar5) { + puVar32 = puVar75; + puVar35 = (undefined4 *)((long)puVar28 + 4); + puVar38 = (undefined4 *)((long)puVar43 + 4); + do { + uVar6 = *(undefined4 *)((long)puVar32 + 4); + puVar35[-1] = *(undefined4 *)puVar32; + puVar42 = puVar35 + 2; + *puVar35 = uVar6; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar38[-1] = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *puVar38 = uVar6; + puVar35 = puVar42; + puVar38 = puVar38 + 2; + } while (puVar42 != (undefined4 *)(lVar52 + (long)puVar28)); + } + } + else if ((uVar46 == 0x10) && (0 < iVar49)) { + puVar32 = puVar75; + puVar35 = (undefined4 *)((long)puVar28 + 4); + puVar44 = puVar43; + do { + puVar38 = puVar35 + 4; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + puVar35[-1] = *(undefined4 *)puVar32; + *puVar35 = uVar6; + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar35[2] = *(undefined4 *)((long)puVar32 + 0xc); + puVar35[1] = uVar6; + uVar6 = *(undefined4 *)((long)puVar32 + 0x14); + *(undefined4 *)puVar44 = *(undefined4 *)(puVar32 + 2); + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar31 = puVar32 + 3; + uVar6 = *(undefined4 *)((long)puVar32 + 0x1c); + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *(undefined4 *)(puVar44 + 1) = *(undefined4 *)puVar31; + *(undefined4 *)((long)puVar44 + 0xc) = uVar6; + puVar35 = puVar38; + puVar44 = puVar44 + 2; + } while (puVar38 != (undefined4 *)(lVar54 + (long)puVar28)); + } + auVar68._8_8_ = 0; + auVar68._0_8_ = dVar72; + (*pcVar63)(auVar68,puVar43,__src,uVar57,iVar25,local_4a0,puVar3,puVar74,uVar57,0,local_690 + ,uVar51); + } + else { + uVar53 = local_510 >> 2; + if (uVar62 == 2) { + if (0 < (int)uVar57) { + uVar60 = 0; + puVar32 = puVar75; + puVar44 = puVar28; + do { + uVar60 = uVar60 + 1; + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + /* catch() { ... } // from try @ 002a4c0c with catch @ 002a4b90 + catch() { ... } // from try @ 002a4e38 with catch @ 002a4b90 + catch() { ... } // from try @ 002a4e88 with catch @ 002a4b90 */ + puVar44 = (undefined8 *)((long)puVar44 + 4); + } while (uVar60 != uVar57); + } + } + else if (uVar62 == 4) { + if (0 < (int)uVar57) { + uVar60 = 0; + puVar32 = puVar75; + puVar44 = puVar28; + do { + uVar64 = *puVar32; + uVar60 = uVar60 + 1; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *puVar44 = uVar64; + puVar44 = puVar44 + 1; + } while (uVar60 != uVar57); + } + } + else if ((uVar46 == 0x10) && (0 < (int)uVar57)) { + uVar60 = 0; + puVar32 = puVar75; + puVar44 = puVar28; + do { + uVar60 = uVar60 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar35 = (undefined4 *)((long)puVar32 + 0xc); + uVar6 = *(undefined4 *)(puVar32 + 1); + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + *(undefined4 *)((long)puVar44 + 0xc) = *puVar35; + *(undefined4 *)(puVar44 + 1) = uVar6; + puVar44 = puVar44 + 2; + } while (uVar60 != uVar57); + } + } + auVar69._8_8_ = 0; + auVar69._0_8_ = dVar72; + (*pcVar63)(auVar69,puVar28,puVar61,uVar57,iVar25,local_4a0,puVar3,puVar74,uVar57,0,local_690 + ,uVar51); + if (iVar27 < (int)(uint)local_688) { + uVar53 = local_4b0 >> 2; + if (uVar62 == 2) { + if (0 < (int)uVar57) { + lVar33 = 0; + puVar32 = puVar58; + do { + lVar1 = lVar33 * 4; + uVar6 = *(undefined4 *)((long)__src + lVar33 * 4); + lVar33 = lVar33 + 1; + *(undefined4 *)puVar32 = *(undefined4 *)((long)puVar61 + lVar1); + *(undefined4 *)((long)puVar32 + 4) = uVar6; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + } while ((int)lVar33 < (int)uVar57); + } + } + else if (uVar62 == 4) { + if (0 < iVar5) { + puVar32 = puVar58; + puVar35 = (undefined4 *)((long)puVar61 + 4); + puVar38 = (undefined4 *)((long)__src + 4); + do { + uVar6 = puVar35[-1]; + puVar42 = puVar35 + 2; + *(undefined4 *)((long)puVar32 + 4) = *puVar35; + *(undefined4 *)puVar32 = uVar6; + uVar6 = puVar38[-1]; + *(undefined4 *)((long)puVar32 + 0xc) = *puVar38; + *(undefined4 *)(puVar32 + 1) = uVar6; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + puVar35 = puVar42; + puVar38 = puVar38 + 2; + } while (puVar42 != (undefined4 *)((long)puVar61 + lVar52)); + } + } + else if ((uVar46 == 0x10) && (0 < iVar49)) { + puVar32 = puVar58; + puVar35 = (undefined4 *)((long)__src + 4); + puVar44 = puVar61; + do { + uVar6 = *(undefined4 *)((long)puVar44 + 4); + puVar38 = puVar35 + 4; + *(undefined4 *)puVar32 = *(undefined4 *)puVar44; + *(undefined4 *)((long)puVar32 + 4) = uVar6; + uVar6 = *(undefined4 *)(puVar44 + 1); + *(undefined4 *)((long)puVar32 + 0xc) = *(undefined4 *)((long)puVar44 + 0xc); + *(undefined4 *)(puVar32 + 1) = uVar6; + uVar6 = puVar35[-1]; + *(undefined4 *)((long)puVar32 + 0x14) = *puVar35; + *(undefined4 *)(puVar32 + 2) = uVar6; + uVar6 = puVar35[1]; + *(undefined4 *)((long)puVar32 + 0x1c) = puVar35[2]; + *(undefined4 *)(puVar32 + 3) = uVar6; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + puVar35 = puVar38; + puVar44 = puVar44 + 2; + } while (puVar38 != (undefined4 *)((long)__src + lVar54)); + } + } + else { + uVar53 = local_4b0 >> 2; + if (uVar62 == 2) { + if (0 < (int)uVar57) { + uVar60 = 0; + puVar44 = puVar61; + puVar32 = puVar58; + do { + uVar60 = uVar60 + 1; + *(undefined4 *)puVar32 = *(undefined4 *)puVar44; + puVar32 = (undefined8 *)((long)puVar32 + uVar53 * 4); + puVar44 = (undefined8 *)((long)puVar44 + 4); + } while (uVar60 != uVar57); + } + } + else if (uVar62 == 4) { + if (0 < (int)uVar57) { + uVar60 = 0; + puVar32 = puVar61; + puVar44 = puVar58; + do { + uVar64 = *puVar32; + uVar60 = uVar60 + 1; + puVar32 = puVar32 + 1; + *puVar44 = uVar64; + puVar44 = (undefined8 *)((long)puVar44 + uVar53 * 4); + } while (uVar60 != uVar57); + } + } + else if ((uVar46 == 0x10) && (0 < (int)uVar57)) { + uVar60 = 0; + puVar32 = puVar61; + puVar44 = puVar58; + do { + uVar60 = uVar60 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 4); + *(undefined4 *)puVar44 = *(undefined4 *)puVar32; + *(undefined4 *)((long)puVar44 + 4) = uVar6; + puVar31 = puVar32 + 1; + uVar6 = *(undefined4 *)((long)puVar32 + 0xc); + puVar32 = puVar32 + 2; + *(undefined4 *)(puVar44 + 1) = *(undefined4 *)puVar31; + *(undefined4 *)((long)puVar44 + 0xc) = uVar6; + puVar44 = (undefined8 *)((long)puVar44 + uVar53 * 4); + } while (uVar60 != uVar57); + } + } + iVar13 = iVar27 + 1; + iVar27 = iVar27 + 2; + puVar75 = (undefined8 *)((long)puVar75 + (ulong)(uVar62 << 2)); + puVar58 = (undefined8 *)((long)puVar58 + (ulong)(uVar62 << 2)); + } while (iVar13 < (int)(uint)local_688); + } + if (local_644 != 0) { + if (((uVar51 < local_620) && (1 < (int)uVar57)) && ((local_500 >> 3 & 0x1ff) == 1)) { + if ((0x88442211UL >> ((local_500 & 7) << 2) & 0xf) == 4) { + iVar25 = (int)(local_4f4 + 1) / 2; + uVar46 = local_4b0 & 0xfffffffffffffffc; + uVar29 = -(ulong)((local_4f4 - 1 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)((local_4f4 - 1) * 2) << 2; + uVar51 = 0; + puVar58 = (undefined8 *)((long)local_4f0 + ((long)(int)uVar57 + -1) * uVar46); + puVar75 = local_4f0; + puVar28 = local_4f0; + while( true ) { + if (1 < iVar25) { + puVar35 = (undefined4 *)((long)puVar28 + uVar29); + do { + puVar38 = puVar35 + -2; + *puVar35 = *(undefined4 *)(puVar75 + 1); + puVar35[1] = -*(float *)((long)puVar75 + 0xc); + puVar35 = puVar38; + puVar75 = puVar75 + 1; + } while ((undefined4 *)((long)puVar28 + (ulong)(iVar25 - 2) * -8 + -8 + uVar29) != + puVar38); + } + uVar51 = uVar51 + 1; + if (uVar51 == uVar57) break; + puVar28 = (undefined8 *)((long)puVar28 + uVar46); + puVar75 = puVar28; + if ((uVar51 != 0) && (uVar57 != uVar51 * 2)) { + puVar75 = puVar58; + } + puVar58 = (undefined8 *)((long)puVar58 - uVar46); + } + } + else { + iVar25 = (int)(local_4f4 + 1) / 2; + uVar46 = local_4b0 & 0xfffffffffffffff8; + uVar29 = -(ulong)((local_4f4 - 1 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)((local_4f4 - 1) * 2) << 3; + uVar51 = 0; + puVar58 = (undefined8 *)((long)local_4f0 + ((long)(int)uVar57 + -1) * uVar46); + puVar75 = local_4f0; + puVar28 = local_4f0; + while( true ) { + if (1 < iVar25) { + puVar43 = (undefined8 *)((long)puVar28 + uVar29); + do { + puVar61 = puVar43 + -2; + *puVar43 = puVar75[2]; + puVar43[1] = -(double)puVar75[3]; + puVar43 = puVar61; + puVar75 = puVar75 + 2; + } while (puVar61 != + (undefined8 *)((long)puVar28 + (ulong)(iVar25 - 2) * -0x10 + -0x10 + uVar29)) + ; + } + uVar51 = uVar51 + 1; + if (uVar51 == uVar57) break; + puVar28 = (undefined8 *)((long)puVar28 + uVar46); + puVar75 = puVar28; + if ((uVar51 != 0) && (uVar57 != uVar51 * 2)) { + puVar75 = puVar58; + } + puVar58 = (undefined8 *)((long)puVar58 - uVar46); + } + } + } +LAB_002a3eb4: + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + iVar25 = *piVar2; + cVar11 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar24) { + *piVar2 = iVar25 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_500); + } + } + lStack_4c8 = 0; + local_4f0 = (undefined8 *)0x0; + uStack_4d8 = 0; + local_4e0 = 0; + uStack_4e8 = 0; + if (0 < local_4fc) { + iVar25 = 0; + puVar36 = local_4c0; + do { + *puVar36 = 0; + iVar25 = iVar25 + 1; + puVar36 = puVar36 + 1; + } while (iVar25 < local_4fc); + } + if (local_4b8 != &local_4b0) { + fastFree(local_4b8); + } + if (lStack_528 != 0) { + piVar2 = (int *)(lStack_528 + 0x14); + do { + iVar25 = *piVar2; + cVar11 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar24) { + *piVar2 = iVar25 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_560); + } + } + lStack_528 = 0; + local_550 = (undefined8 *)0x0; + uStack_538 = 0; + local_540 = 0; + uStack_548 = 0; + if (0 < local_560._4_4_) { + iVar25 = 0; + puVar36 = local_520; + do { + *puVar36 = 0; + iVar25 = iVar25 + 1; + puVar36 = puVar36 + 1; + } while (iVar25 < local_560._4_4_); + } + if (local_518 != &local_510) { + fastFree(local_518); + } + if (local_588 != 0) { + piVar2 = (int *)(local_588 + 0x14); + do { + iVar25 = *piVar2; + cVar11 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar24) { + *piVar2 = iVar25 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar25 == 1) { + Mat::deallocate(local_610); + } + } + local_588 = 0; + local_5b0 = (undefined8 *)0x0; + local_598 = 0; + local_5a0 = 0; + local_5a8 = 0; + if (0 < iStack_5bc) { + iVar25 = 0; + puVar35 = local_580; + do { + iVar25 = iVar25 + 1; + *puVar35 = 0; + puVar35 = puVar35 + 1; + } while (iVar25 < iStack_5bc); + } + if (local_578 != local_570) { + fastFree(local_578); + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + return; + } + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + cVar11 = '\x01'; + bVar12 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar12) { + *piVar2 = *piVar2 + 1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + } + if (lStack_528 == 0) { +LAB_002a30d4: + if (0 < local_560._4_4_) goto LAB_002a30f4; +LAB_002a35c8: + local_560 = CONCAT44(local_560._4_4_,local_500); +LAB_002a3120: + puVar23 = local_4b8; + if (2 < local_4fc) goto LAB_002a3224; + uStack_558 = CONCAT44(local_4f4,local_4f8); + local_560 = CONCAT44(local_4fc,(uint)local_560); + *local_518 = *local_4b8; + local_518[1] = puVar23[1]; + } + else { + piVar2 = (int *)(lStack_528 + 0x14); + do { + iVar27 = *piVar2; + cVar11 = '\x01'; + bVar12 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar12) { + *piVar2 = iVar27 + -1; + cVar11 = ExclusiveMonitorsStatus(); + } + } while (cVar11 != '\0'); + if (iVar27 != 1) goto LAB_002a30d4; + Mat::deallocate((Mat *)&local_560); + if (local_560._4_4_ < 1) goto LAB_002a35c8; +LAB_002a30f4: + iVar27 = 0; + puVar36 = local_520; + do { + *puVar36 = 0; + iVar27 = iVar27 + 1; + puVar36 = puVar36 + 1; + } while (iVar27 < local_560._4_4_); + local_560 = CONCAT44(local_560._4_4_,local_500); + if (local_560._4_4_ < 3) goto LAB_002a3120; +LAB_002a3224: + lStack_528 = 0; + uStack_538 = 0; + local_540 = 0; + uStack_548 = 0; + local_550 = (undefined8 *)0x0; + Mat::copySize((Mat *)&local_560,(Mat *)&local_500); + } + uStack_538 = uStack_4d8; + local_540 = local_4e0; + lStack_528 = lStack_4c8; + local_530 = local_4d0; + uStack_548 = uStack_4e8; + local_550 = local_4f0; + if (uVar51 == 0) goto LAB_002a24c4; +LAB_002a3190: + local_688 = uStack_558 & 0xffffffff; + uVar57 = local_4f4; + if (local_4f4 != 1) goto LAB_002a24d8; +LAB_002a31a4: + if (bVar24) goto LAB_002a3828; + local_678 = 1; + uVar60 = local_620; + } while( true ); + uVar26 = (int)((uVar57 - 1 ^ uVar57) + 1) >> 1; + if ((int)uVar26 < 2) { + /* try { // try from 002a3890 to 003a38df has its CatchHandler @ 002a36f0 */ + iVar25 = 0; + uVar40 = uVar57; + } + else { + local_4a0[0] = uVar26; + if (uVar57 == uVar26) { + iVar49 = 0; + iVar25 = 1; + uVar26 = uVar57; + goto LAB_002a3340; + } + uVar40 = 0; + if (uVar26 != 0) { + uVar40 = (int)uVar57 / (int)uVar26; + } + iVar25 = 1; + if ((int)uVar40 < 2) { + iVar49 = 0; + iVar25 = 1; + goto LAB_002a3340; + } + } + uVar59 = 3; + do { + while( true ) { + iVar49 = iVar25; + uVar10 = 0; + if (uVar59 != 0) { + uVar10 = (int)uVar40 / (int)uVar59; + } + if (uVar40 != uVar59 * uVar10) break; + local_4a0[iVar49] = uVar59; + iVar25 = iVar49 + 1; + uVar26 = local_4a0[0]; + uVar40 = uVar10; + if ((int)uVar10 < 2) goto LAB_002a3340; + } + uVar59 = uVar59 + 2; + iVar25 = iVar49; + } while ((int)(uVar59 * uVar59) <= (int)uVar40); + local_4a0[iVar49] = uVar40; + iVar25 = iVar49 + 1; + uVar26 = local_4a0[0]; +LAB_002a3340: + uVar40 = uVar26 & 1; + uVar59 = uVar40 ^ 1; + iVar5 = (int)(uVar59 + iVar25) >> 1; + if ((int)uVar59 < iVar5) { + uVar40 = iVar5 - uVar59; + uVar53 = (ulong)uVar40; + lVar52 = (long)(int)uVar59; + iVar13 = iVar25 - uVar59; + lVar54 = (lVar52 + iVar13) * 4; + if (((long)(lVar54 + uVar53 * -4) < (long)((uVar53 + lVar52) * 4) && lVar52 * 4 < lVar54) || + (uVar40 < 9)) { + lVar54 = lVar52 + (iVar13 + -1); + puVar36 = local_4a0 + lVar54; + puVar45 = local_4a0 + lVar52; + do { + uVar40 = *puVar45; + *puVar45 = *puVar36; + puVar37 = puVar36 + -1; + *puVar36 = uVar40; + puVar36 = puVar37; + puVar45 = puVar45 + 1; + } while (puVar37 != (uint *)((long)&local_4a8 + (lVar54 - (ulong)(iVar5 + ~uVar59)) * 4 + 4)); + } + else { + puVar36 = local_4a0 + lVar52; + uVar26 = -((uint)((ulong)puVar36 >> 2) & 3) & 3; + uVar73 = (ulong)uVar26; + if (uVar40 < uVar26) { + uVar73 = uVar53; + } + iVar47 = (int)uVar73; + uVar26 = uVar59; + if (iVar47 != 0) { + uVar26 = *puVar36; + puVar45 = local_4a0 + (int)(uVar59 + iVar13 + -1); + *puVar36 = *puVar45; + *puVar45 = uVar26; + uVar26 = uVar59 + 1; + if (iVar47 != 1) { + puVar45 = local_4a0 + lVar52 + 1; + puVar36 = local_4a0 + (int)(uVar59 + (iVar25 - (uVar59 + 1)) + -1); + uVar26 = *puVar45; + *puVar45 = *puVar36; + *puVar36 = uVar26; + uVar26 = uVar59 + 2; + if (iVar47 == 3) { + puVar45 = local_4a0 + lVar52 + 2; + puVar36 = local_4a0 + (int)(uVar59 + (iVar25 - (uVar59 + 2)) + -1); + uVar26 = *puVar45; + *puVar45 = *puVar36; + *puVar36 = uVar26; + uVar26 = uVar59 + 3; + } + } + } + uVar10 = ((uVar40 - iVar47) - 4 >> 2) + 1; + iVar9 = uVar10 * 4; + pauVar50 = (undefined1 (*) [16])(local_4a0 + ~uVar73 + lVar52 + iVar13 + -3); + pauVar34 = (undefined1 (*) [16])(local_4a0 + lVar52 + uVar73); + uVar48 = 0; + pauVar55 = pauVar50; + pauVar56 = pauVar34; + do { + auVar70 = *pauVar50; + uVar48 = uVar48 + 1; + pauVar50 = pauVar50 + -1; + auVar14._8_8_ = _UNK_002a4cc8; + auVar14._0_8_ = _DAT_002a4cc0; + auVar71 = a64_TBL(ZEXT816(0),auVar70,auVar14); + auVar15._8_8_ = _UNK_002a4cc8; + auVar15._0_8_ = _DAT_002a4cc0; + auVar70 = a64_TBL(ZEXT816(0),*pauVar56,auVar15); + *(long *)(*pauVar34 + 8) = auVar71._8_8_; + *(long *)*pauVar34 = auVar71._0_8_; + *(long *)(*pauVar55 + 8) = auVar70._8_8_; + *(long *)*pauVar55 = auVar70._0_8_; + pauVar55 = pauVar55 + -1; + pauVar34 = pauVar34 + 1; + pauVar56 = pauVar56 + 1; + } while (uVar48 < uVar10); + uVar26 = uVar26 + iVar9; + if (uVar40 - iVar47 != iVar9) { + uVar53 = -(ulong)(uVar26 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar26 << 2; + puVar45 = (uint *)((long)local_4a0 + uVar53); + puVar36 = local_4a0 + (int)(uVar59 + (iVar25 - uVar26) + -1); + uVar40 = *puVar45; + *puVar45 = *puVar36; + *puVar36 = uVar40; + if ((int)(uVar26 + 1) < iVar5) { + puVar45 = (uint *)((long)local_4a0 + uVar53 + 4); + puVar36 = local_4a0 + (int)(uVar59 + (iVar25 - (uVar26 + 1)) + -1); + uVar40 = *puVar45; + *puVar45 = *puVar36; + *puVar36 = uVar40; + if ((int)(uVar26 + 2) < iVar5) { + puVar45 = (uint *)((long)local_4a0 + uVar53 + 8); + puVar36 = local_4a0 + (int)(uVar59 + (iVar25 - (uVar26 + 2)) + -1); + uVar40 = *puVar45; + *puVar45 = *puVar36; + *puVar36 = uVar40; + } + } + } + } + uVar40 = local_4a0[0] & 1; + uVar26 = local_4a0[0]; + } + goto LAB_002a2508; +LAB_002a3828: + if (uVar51 == 0) { + uVar57 = (uint)local_688; + local_688 = 1; + } + else { + local_688 = (ulong)uVar57; + uVar57 = local_4f8; + } + goto LAB_002a24d8; +} + + +================================================================== + +### FUNC 002a4cd0 (8 bytes) name=idft + +/* cv::idft(cv::_InputArray const&, cv::_OutputArray const&, int, int) */ + +void cv::idft(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4) + +{ + dft(param_1,param_2,param_3 | 1,param_4); + return; +} + + +================================================================== + +### FUNC 002a4cd8 (5240 bytes) name=mulSpectrums + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::mulSpectrums(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int, + bool) */ + +void cv::mulSpectrums(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4, + bool param_5) + +{ + uint uVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char cVar5; + uint uVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + double dVar9; + float fVar10; + double dVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined4 uVar20; + bool bVar21; + double *pdVar22; + double *pdVar23; + float *pfVar24; + float *pfVar25; + int iVar26; + int iVar27; + undefined8 *puVar28; + ulong uVar29; + double *pdVar30; + double *pdVar31; + float *pfVar32; + long lVar33; + undefined4 *puVar34; + uint *puVar35; + Mat *pMVar36; + double *pdVar37; + double *pdVar38; + double *pdVar39; + uint uVar40; + uint uVar41; + double *pdVar42; + double *pdVar43; + double *pdVar44; + float *pfVar45; + float *pfVar46; + long lVar47; + float *pfVar48; + long lVar49; + float *pfVar50; + double *pdVar51; + double *pdVar52; + ulong uVar53; + ulong uVar54; + uint uVar55; + float *pfVar56; + uint uVar57; + float *pfVar58; + uint uVar59; + int iVar60; + long lVar61; + ulong uVar62; + long lVar63; + long lVar64; + float fVar65; + float fVar66; + float fVar67; + float fVar68; + double dVar69; + double dVar70; + float fVar71; + float fVar72; + float fVar73; + float fVar74; + double dVar75; + double dVar76; + double dVar77; + double dVar78; + float fVar79; + float fVar80; + float fVar81; + double dVar82; + double dVar83; + ulong uVar84; + ulong uVar85; + float fVar86; + ulong uVar87; + uint uVar88; + float local_1e0; + undefined1 uStack_1dc; + undefined1 uStack_1db; + undefined1 uStack_1da; + undefined1 uStack_1d9; + float fStack_1d8; + undefined1 uStack_1d4; + undefined1 uStack_1d3; + undefined1 uStack_1d2; + undefined1 uStack_1d1; + float local_1d0; + undefined1 uStack_1cc; + undefined1 uStack_1cb; + undefined1 uStack_1ca; + undefined1 uStack_1c9; + float fStack_1c8; + undefined1 uStack_1c4; + undefined1 uStack_1c3; + undefined1 uStack_1c2; + undefined1 uStack_1c1; + float local_1a0; + undefined1 uStack_19c; + undefined1 uStack_19b; + undefined1 uStack_19a; + undefined1 uStack_199; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 local_128; + uint local_120; + int local_11c; + uint local_118; + uint local_114; + double *local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + uint *local_e0; + ulong *local_d8; + ulong local_d0; + ulong local_c8; + uint local_c0; + int local_bc; + uint local_b8; + undefined4 local_b4; + double *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + uint *local_80; + ulong *local_78; + ulong local_70; + ulong local_68; + uint local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + double *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + ulong *local_18; + ulong local_10; + ulong local_8; + + iVar26 = _InputArray::kind(param_1); + if (iVar26 == 0x10000) { + pMVar36 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar36; + local_11c = *(int *)(pMVar36 + 4); + local_118 = *(uint *)(pMVar36 + 8); + local_114 = *(uint *)(pMVar36 + 0xc); + local_110 = *(double **)(pMVar36 + 0x10); + local_108 = *(undefined8 *)(pMVar36 + 0x18); + local_100 = *(undefined8 *)(pMVar36 + 0x20); + local_f8 = *(undefined8 *)(pMVar36 + 0x28); + local_f0 = *(undefined8 *)(pMVar36 + 0x30); + local_e8 = *(long *)(pMVar36 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar2 = (int *)(local_e8 + 0x14); + do { + cVar5 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar21) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar36 + 4) < 3) { + local_d0 = **(ulong **)(pMVar36 + 0x48); + local_c8 = (*(ulong **)(pMVar36 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar36); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar26 = _InputArray::kind(param_2); + if (iVar26 == 0x10000) { + pMVar36 = *(Mat **)(param_2 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar36; + local_bc = *(int *)(pMVar36 + 4); + local_b8 = *(uint *)(pMVar36 + 8); + local_b4 = *(undefined4 *)(pMVar36 + 0xc); + local_b0 = *(double **)(pMVar36 + 0x10); + local_a8 = *(undefined8 *)(pMVar36 + 0x18); + local_a0 = *(undefined8 *)(pMVar36 + 0x20); + local_98 = *(undefined8 *)(pMVar36 + 0x28); + local_90 = *(undefined8 *)(pMVar36 + 0x30); + local_88 = *(long *)(pMVar36 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + cVar5 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar21) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar36 + 4) < 3) { + local_70 = **(ulong **)(pMVar36 + 0x48); + local_68 = (*(ulong **)(pMVar36 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar36); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar57 = local_114; + uVar59 = local_118; + uVar3 = local_120; + uVar88 = local_120 & 0xfff; + uVar41 = local_120 & 7; + iVar26 = (local_120 >> 3 & 0x1ff) + 1; + if (((uVar88 != (local_c0 & 0xfff)) || (local_e0[1] != local_80[1])) || (*local_e0 != *local_80)) + { + local_140 = 0; + local_138 = 0; + puVar28 = (undefined8 *)String::allocate((String *)&local_140,0x31); + uVar17 = DAT_00465c28; + uVar16 = _LAB_00465c20; + uVar15 = _DAT_00465c18; + uVar14 = DAT_00465c10; + uVar13 = DAT_00465c08; + uVar12 = DAT_00465c00; + *(undefined1 *)(puVar28 + 6) = LAB_00465c30; + *puVar28 = uVar12; + puVar28[1] = uVar13; + puVar28[2] = uVar14; + puVar28[3] = uVar15; + puVar28[4] = uVar16; + puVar28[5] = uVar17; + error(-0xd7,(String *)&local_140, + "void cv::mulSpectrums(cv::InputArray, cv::InputArray, cv::OutputArray, int, bool)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xb8e); + String::deallocate((String *)&local_140); + } + if (1 < (uVar3 & 0xff7) - 5) { + local_130 = 0; + local_128 = 0; + puVar28 = (undefined8 *)String::allocate((String *)&local_130,0x4c); + uVar20 = DAT_00465b38; + uVar19 = _DAT_00465b28; + uVar18 = _DAT_00465b20; + uVar17 = DAT_00465b18; + uVar16 = DAT_00465b10; + uVar15 = DAT_00465b08; + uVar14 = DAT_00465b00; + uVar13 = DAT_00465af8; + uVar12 = DAT_00465af0; + /* try { // try from 002a4e30 to 003a4e33 has its CatchHandler @ 002a4e78 */ + /* try { // try from 002a4e38 to 003a4e3b has its CatchHandler @ 002a4b90 */ + puVar28[8] = DAT_00465b30; + *(undefined4 *)(puVar28 + 9) = uVar20; + *puVar28 = uVar12; + puVar28[1] = uVar13; + puVar28[2] = uVar14; + puVar28[3] = uVar15; + puVar28[4] = uVar16; + puVar28[5] = uVar17; + /* catch() { ... } // from try @ 002a4e30 with catch @ 002a4e78 */ + puVar28[6] = uVar18; + puVar28[7] = uVar19; + error(-0xd7,(String *)&local_130, + "void cv::mulSpectrums(cv::InputArray, cv::InputArray, cv::OutputArray, int, bool)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xb8f); + String::deallocate((String *)&local_130); + } + /* try { // try from 002a4e88 to 003a4e8b has its CatchHandler @ 002a4b90 */ + _OutputArray::create(param_3,local_118,local_114,uVar88,-1,false,0); + iVar27 = _InputArray::kind((_InputArray *)param_3); + if (iVar27 == 0x10000) { + pMVar36 = *(Mat **)(param_3 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar36; + local_5c = *(int *)(pMVar36 + 4); + local_58 = *(undefined4 *)(pMVar36 + 8); + local_54 = *(undefined4 *)(pMVar36 + 0xc); + local_50 = *(double **)(pMVar36 + 0x10); + local_48 = *(undefined8 *)(pMVar36 + 0x18); + local_40 = *(undefined8 *)(pMVar36 + 0x20); + local_38 = *(undefined8 *)(pMVar36 + 0x28); + local_30 = *(undefined8 *)(pMVar36 + 0x30); + local_28 = *(long *)(pMVar36 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar5 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar21) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar36 + 4) < 3) { + local_10 = **(ulong **)(pMVar36 + 0x48); + local_8 = (*(ulong **)(pMVar36 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar36); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if ((((uint)param_4 >> 2 & 1) == 0) && (uVar59 != 1)) { + uVar88 = 0; + if (((uVar57 != 1) || (uVar88 = local_120 & 0x4000, (local_120 >> 0xe & 1) == 0)) || + ((uVar88 = local_c0 & 0x4000, (local_c0 >> 0xe & 1) == 0 || + (uVar88 = local_60 & 0x4000, (local_60 >> 0xe & 1) == 0)))) { + iVar27 = uVar59 - 1; + goto LAB_002a4f04; + } + } + else if ((param_4 & 4U) != 0) { + iVar27 = uVar59 - 1; + uVar88 = 1; + goto LAB_002a4f04; + } + iVar27 = uVar57 + uVar59; + uVar59 = 1; + uVar57 = iVar27 - 1; + iVar27 = 0; + uVar88 = 1; +LAB_002a4f04: + uVar3 = uVar57 & 1; + bVar21 = iVar26 == 1; + uVar4 = uVar3 ^ 1; + uVar6 = uVar57 * iVar26 - (uVar4 & bVar21); + if (uVar41 == 5) { + uVar41 = (uint)bVar21; + uVar87 = local_d0 >> 2; + uVar85 = local_70 >> 2; + uVar84 = local_10 >> 2; + pdVar39 = local_110; + pdVar43 = local_50; + pdVar44 = local_b0; + if (uVar88 <= bVar21 && uVar41 != uVar88) { + lVar61 = (long)(int)uVar57 * 4 + -4; + lVar63 = (long)iVar27; + lVar49 = uVar84 * 4; + lVar64 = (long)(int)uVar57 * -4 + 4; + iVar26 = 0; + lVar47 = uVar87 * 4; + lVar33 = uVar85 * 4; + while( true ) { + iVar60 = 2; + if (uVar3 != 0) { + iVar60 = 1; + } + if (iVar60 <= iVar26) break; + if (iVar26 == 1) { + pdVar39 = (double *)((long)pdVar39 + lVar61); + pdVar44 = (double *)((long)pdVar44 + lVar61); + pdVar43 = (double *)((long)pdVar43 + lVar61); + } + *(float *)pdVar43 = *(float *)pdVar39 * *(float *)pdVar44; + if ((uVar59 & 1) == 0) { + *(float *)((long)pdVar43 + lVar49 * lVar63) = + *(float *)((long)pdVar39 + lVar47 * lVar63) * + *(float *)((long)pdVar44 + lVar33 * lVar63); + } + if (param_5) { + if (1 < iVar27) { + pfVar48 = (float *)((long)pdVar39 + lVar47); + pfVar50 = (float *)((long)pdVar44 + lVar33); + pfVar46 = (float *)((long)pdVar43 + lVar49); + iVar60 = 1; + do { + fVar71 = pfVar48[uVar87]; + iVar60 = iVar60 + 2; + fVar86 = pfVar50[uVar85]; + fVar81 = *pfVar48; + pfVar48 = pfVar48 + uVar87 * 2; + fVar68 = *pfVar50; + pfVar50 = pfVar50 + uVar85 * 2; + *pfVar46 = fVar71 * fVar86 + fVar68 * fVar81; + pfVar46[uVar84] = fVar68 * fVar71 - fVar81 * fVar86; + pfVar46 = pfVar46 + uVar84 * 2; + } while (iVar60 < iVar27); + } +LAB_002a606c: + if (iVar26 == 1) goto LAB_002a607c; +LAB_002a6074: + iVar26 = iVar26 + 1; + } + else { + if (iVar27 < 2) goto LAB_002a606c; + pfVar48 = (float *)((long)pdVar39 + lVar47); + pfVar50 = (float *)((long)pdVar44 + lVar33); + pfVar46 = (float *)((long)pdVar43 + lVar49); + iVar60 = 1; + do { + fVar71 = pfVar50[uVar85]; + iVar60 = iVar60 + 2; + fVar86 = pfVar48[uVar87]; + fVar81 = *pfVar50; + pfVar50 = pfVar50 + uVar85 * 2; + fVar68 = *pfVar48; + pfVar48 = pfVar48 + uVar87 * 2; + *pfVar46 = fVar68 * fVar81 - fVar86 * fVar71; + pfVar46[uVar84] = fVar81 * fVar86 + fVar71 * fVar68; + pfVar46 = pfVar46 + uVar84 * 2; + } while (iVar60 < iVar27); + if (iVar26 != 1) goto LAB_002a6074; +LAB_002a607c: + pdVar39 = (double *)((long)pdVar39 + lVar64); + pdVar44 = (double *)((long)pdVar44 + lVar64); + pdVar43 = (double *)((long)pdVar43 + lVar64); + iVar26 = iVar26 + 1; + } + } + } + if (uVar59 != 0) { + uVar29 = (ulong)bVar21; + uVar40 = ~uVar41 + uVar6; + lVar61 = uVar29 * 4; + pfVar48 = (float *)((long)pdVar39 + lVar61); + pfVar50 = (float *)((long)pdVar43 + (uVar29 + 8) * 4); + uVar3 = uVar40 >> 1; + uVar57 = (uVar3 - 3 >> 2) + 1; + pfVar46 = (float *)((long)pdVar44 + lVar61); + pfVar32 = (float *)((long)pdVar43 + lVar61); + lVar61 = NEON_shl(uVar29 + 2 + (ulong)uVar3 * 2,2); + uVar29 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar6 << 2; + uVar3 = uVar3 + 1; + uVar59 = uVar41; + if (5 < uVar40) { + uVar59 = uVar41 + uVar57 * 8; + } + uVar1 = uVar59 + 2; + uVar62 = -(ulong)(uVar59 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar59 << 2; + lVar64 = uVar62 + 4; + uVar59 = uVar59 + 4; + uVar54 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + lVar33 = uVar54 + 4; + uVar53 = -(ulong)(uVar59 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar59 << 2; + lVar47 = uVar53 + 4; + do { + if (((uVar88 & uVar41) != 0) && + (*(float *)pdVar43 = *(float *)pdVar39 * *(float *)pdVar44, uVar4 != 0)) { + *(float *)((long)pdVar43 + uVar29) = + *(float *)((long)pdVar39 + uVar29) * *(float *)((long)pdVar44 + uVar29); + } + if (param_5) { + if ((int)uVar41 < (int)uVar6) { + if ((pfVar32 < pfVar48 + 8 && pfVar48 < pfVar50 || + pfVar32 < pfVar46 + 8 && pfVar46 < pfVar50) || (uVar3 < 4)) { + pfVar45 = pfVar32; + pfVar56 = pfVar48; + pfVar58 = pfVar46; + do { + fVar81 = *pfVar56; + pfVar24 = pfVar56 + 2; + fVar86 = pfVar58[1]; + fVar68 = pfVar56[1]; + fVar71 = *pfVar58; + *pfVar45 = fVar68 * fVar86 + fVar71 * fVar81; + pfVar45[1] = fVar71 * fVar68 - fVar81 * fVar86; + pfVar45 = pfVar45 + 2; + pfVar56 = pfVar24; + pfVar58 = pfVar58 + 2; + } while (pfVar24 != (float *)((long)pdVar39 + lVar61)); + } + else { + if (5 < uVar40) { + uVar55 = 0; + pfVar45 = pfVar46; + pfVar56 = pfVar32; + pfVar58 = pfVar48; + do { + uVar55 = uVar55 + 1; + fVar66 = *pfVar58; + pfVar24 = pfVar58 + 1; + fVar71 = pfVar58[2]; + fVar68 = pfVar58[3]; + fVar73 = pfVar58[4]; + fVar81 = pfVar58[5]; + fVar79 = pfVar58[6]; + fVar10 = pfVar58[7]; + pfVar58 = pfVar58 + 8; + _local_1a0 = CONCAT14(SUB41(fVar71,0),fVar66); + _local_1a0 = CONCAT15((char)((uint)fVar71 >> 8),_local_1a0); + _local_1a0 = CONCAT16((char)((uint)fVar71 >> 0x10),_local_1a0); + _local_1a0 = CONCAT17((char)((uint)fVar71 >> 0x18),_local_1a0); + fVar67 = *pfVar45; + pfVar25 = pfVar45 + 1; + fVar72 = pfVar45[2]; + fVar71 = pfVar45[3]; + fVar74 = pfVar45[4]; + fVar86 = pfVar45[5]; + fVar80 = pfVar45[6]; + fVar65 = pfVar45[7]; + pfVar45 = pfVar45 + 8; + _local_1e0 = CONCAT14(SUB41(fVar72,0),fVar67); + _local_1e0 = CONCAT15((char)((uint)fVar72 >> 8),_local_1e0); + _local_1e0 = CONCAT16((char)((uint)fVar72 >> 0x10),_local_1e0); + _local_1e0 = CONCAT17((char)((uint)fVar72 >> 0x18),_local_1e0); + _fStack_1d8 = CONCAT14(SUB41(fVar80,0),fVar74); + _fStack_1d8 = CONCAT15((char)((uint)fVar80 >> 8),_fStack_1d8); + _fStack_1d8 = CONCAT16((char)((uint)fVar80 >> 0x10),_fStack_1d8); + _fStack_1d8 = CONCAT17((char)((uint)fVar80 >> 0x18),_fStack_1d8); + _local_1d0 = CONCAT14(SUB41(fVar71,0),*pfVar25); + _local_1d0 = CONCAT15((char)((uint)fVar71 >> 8),_local_1d0); + _local_1d0 = CONCAT16((char)((uint)fVar71 >> 0x10),_local_1d0); + _local_1d0 = CONCAT17((char)((uint)fVar71 >> 0x18),_local_1d0); + _fStack_1c8 = CONCAT14(SUB41(fVar65,0),fVar86); + _fStack_1c8 = CONCAT15((char)((uint)fVar65 >> 8),_fStack_1c8); + _fStack_1c8 = CONCAT16((char)((uint)fVar65 >> 0x10),_fStack_1c8); + _fStack_1c8 = CONCAT17((char)((uint)fVar65 >> 0x18),_fStack_1c8); + dVar76 = (double)*pfVar24; + dVar82 = (double)(float)(CONCAT17((char)((uint)fVar68 >> 0x18), + CONCAT16((char)((uint)fVar68 >> 0x10), + CONCAT15((char)((uint)fVar68 >> 8), + CONCAT14(SUB41(fVar68,0), + *pfVar24)))) >> 0x20) + ; + fVar65 = (float)(CONCAT17((char)((uint)fVar10 >> 0x18), + CONCAT16((char)((uint)fVar10 >> 0x10), + CONCAT15((char)((uint)fVar10 >> 8), + CONCAT14(SUB41(fVar10,0),fVar81)))) >> + 0x20); + dVar70 = (double)fVar66; + dVar75 = (double)(float)((ulong)_local_1a0 >> 0x20); + fVar66 = (float)(CONCAT17((char)((uint)fVar79 >> 0x18), + CONCAT16((char)((uint)fVar79 >> 0x10), + CONCAT15((char)((uint)fVar79 >> 8), + CONCAT14(SUB41(fVar79,0),fVar73)))) >> + 0x20); + dVar9 = (double)fVar67; + dVar69 = (double)(float)((ulong)_local_1e0 >> 0x20); + fVar67 = (float)((ulong)_fStack_1d8 >> 0x20); + fVar10 = fVar67 * fVar65; + dVar11 = dVar9 * dVar76; + dVar83 = dVar69 * dVar82; + dVar11 = dVar11 - dVar70 * dVar11; + dVar83 = dVar83 - dVar75 * dVar83; + auVar8[8] = SUB81(dVar83,0); + auVar8._0_8_ = dVar11; + auVar8[9] = (char)((ulong)dVar83 >> 8); + auVar8[10] = (char)((ulong)dVar83 >> 0x10); + auVar8[0xb] = (char)((ulong)dVar83 >> 0x18); + auVar8[0xc] = (char)((ulong)dVar83 >> 0x20); + auVar8[0xd] = (char)((ulong)dVar83 >> 0x28); + auVar8[0xe] = (char)((ulong)dVar83 >> 0x30); + auVar8[0xf] = (char)((ulong)dVar83 >> 0x38); + fVar68 = (float)dVar11; + fVar71 = (float)auVar8._8_8_; + *pfVar56 = (float)(dVar76 * (double)*pfVar25 + dVar70 * dVar9); + pfVar56[1] = fVar68; + pfVar56[2] = (float)(dVar82 * (double)(float)((ulong)_local_1d0 >> 0x20) + + dVar75 * dVar69); + pfVar56[3] = (float)(CONCAT17((char)((uint)fVar71 >> 0x18), + CONCAT16((char)((uint)fVar71 >> 0x10), + CONCAT15((char)((uint)fVar71 >> 8), + CONCAT14(SUB41(fVar71,0),fVar68))) + ) >> 0x20); + pfVar56[4] = fVar81 * fVar86 + fVar73 * fVar74; + pfVar56[5] = fVar74 * fVar81 - fVar73 * fVar74 * fVar81; + pfVar56[6] = fVar65 * (float)((ulong)_fStack_1c8 >> 0x20) + fVar66 * fVar67; + pfVar56[7] = fVar10 - fVar66 * fVar10; + pfVar56 = pfVar56 + 8; + } while (uVar55 < uVar57); + if (uVar57 * 4 == uVar3) goto LAB_002a5bf0; + } + fVar81 = *(float *)((long)pdVar39 + lVar64); + fVar68 = *(float *)((long)pdVar44 + lVar64); + fVar71 = *(float *)((long)pdVar39 + uVar62); + fVar86 = *(float *)((long)pdVar44 + uVar62); + *(float *)((long)pdVar43 + uVar62) = fVar81 * fVar68 + fVar86 * fVar71; + *(float *)((long)pdVar43 + lVar64) = fVar86 * fVar81 - fVar71 * fVar68; + if ((int)uVar1 < (int)uVar6) { + fVar81 = *(float *)((long)pdVar39 + lVar33); + fVar68 = *(float *)((long)pdVar44 + lVar33); + fVar71 = *(float *)((long)pdVar39 + uVar54); + fVar86 = *(float *)((long)pdVar44 + uVar54); + *(float *)((long)pdVar43 + uVar54) = fVar81 * fVar68 + fVar86 * fVar71; + *(float *)((long)pdVar43 + lVar33) = fVar86 * fVar81 - fVar71 * fVar68; + if ((int)uVar59 < (int)uVar6) { + fVar81 = *(float *)((long)pdVar39 + lVar47); + fVar68 = *(float *)((long)pdVar44 + lVar47); + fVar71 = *(float *)((long)pdVar39 + uVar53); + fVar86 = *(float *)((long)pdVar44 + uVar53); + *(float *)((long)pdVar43 + uVar53) = fVar81 * fVar68 + fVar86 * fVar71; + *(float *)((long)pdVar43 + lVar47) = fVar86 * fVar81 - fVar71 * fVar68; + } + } + } + } + } + else if ((int)uVar41 < (int)uVar6) { + if ((pfVar32 < pfVar48 + 8 && pfVar48 < pfVar50 || + pfVar32 < pfVar46 + 8 && pfVar46 < pfVar50) || (uVar3 < 4)) { + pfVar45 = pfVar32; + pfVar56 = pfVar48; + pfVar58 = pfVar46; + do { + fVar81 = *pfVar56; + pfVar24 = pfVar56 + 2; + fVar86 = pfVar58[1]; + fVar68 = pfVar56[1]; + fVar71 = *pfVar58; + *pfVar45 = fVar81 * fVar71 - fVar68 * fVar86; + pfVar45[1] = fVar81 * fVar86 + fVar68 * fVar71; + pfVar45 = pfVar45 + 2; + pfVar56 = pfVar24; + pfVar58 = pfVar58 + 2; + } while (pfVar24 != (float *)((long)pdVar39 + lVar61)); + } + else { + if (5 < uVar40) { + uVar55 = 0; + pfVar45 = pfVar46; + pfVar56 = pfVar32; + pfVar58 = pfVar48; + do { + uVar55 = uVar55 + 1; + fVar66 = *pfVar58; + pfVar24 = pfVar58 + 1; + fVar71 = pfVar58[2]; + fVar68 = pfVar58[3]; + fVar73 = pfVar58[4]; + fVar81 = pfVar58[5]; + fVar79 = pfVar58[6]; + fVar10 = pfVar58[7]; + pfVar58 = pfVar58 + 8; + _local_1a0 = CONCAT14(SUB41(fVar71,0),fVar66); + _local_1a0 = CONCAT15((char)((uint)fVar71 >> 8),_local_1a0); + _local_1a0 = CONCAT16((char)((uint)fVar71 >> 0x10),_local_1a0); + _local_1a0 = CONCAT17((char)((uint)fVar71 >> 0x18),_local_1a0); + fVar67 = *pfVar45; + pfVar25 = pfVar45 + 1; + fVar72 = pfVar45[2]; + fVar71 = pfVar45[3]; + fVar74 = pfVar45[4]; + fVar86 = pfVar45[5]; + fVar80 = pfVar45[6]; + fVar65 = pfVar45[7]; + pfVar45 = pfVar45 + 8; + _local_1e0 = CONCAT14(SUB41(fVar72,0),fVar67); + _local_1e0 = CONCAT15((char)((uint)fVar72 >> 8),_local_1e0); + _local_1e0 = CONCAT16((char)((uint)fVar72 >> 0x10),_local_1e0); + _local_1e0 = CONCAT17((char)((uint)fVar72 >> 0x18),_local_1e0); + _fStack_1d8 = CONCAT14(SUB41(fVar80,0),fVar74); + _fStack_1d8 = CONCAT15((char)((uint)fVar80 >> 8),_fStack_1d8); + _fStack_1d8 = CONCAT16((char)((uint)fVar80 >> 0x10),_fStack_1d8); + _fStack_1d8 = CONCAT17((char)((uint)fVar80 >> 0x18),_fStack_1d8); + _local_1d0 = CONCAT14(SUB41(fVar71,0),*pfVar25); + _local_1d0 = CONCAT15((char)((uint)fVar71 >> 8),_local_1d0); + _local_1d0 = CONCAT16((char)((uint)fVar71 >> 0x10),_local_1d0); + _local_1d0 = CONCAT17((char)((uint)fVar71 >> 0x18),_local_1d0); + _fStack_1c8 = CONCAT14(SUB41(fVar65,0),fVar86); + _fStack_1c8 = CONCAT15((char)((uint)fVar65 >> 8),_fStack_1c8); + _fStack_1c8 = CONCAT16((char)((uint)fVar65 >> 0x10),_fStack_1c8); + _fStack_1c8 = CONCAT17((char)((uint)fVar65 >> 0x18),_fStack_1c8); + dVar9 = (double)fVar66; + dVar11 = (double)(float)((ulong)_local_1a0 >> 0x20); + fVar65 = (float)(CONCAT17((char)((uint)fVar79 >> 0x18), + CONCAT16((char)((uint)fVar79 >> 0x10), + CONCAT15((char)((uint)fVar79 >> 8), + CONCAT14(SUB41(fVar79,0),fVar73)))) >> + 0x20); + dVar70 = (double)*pfVar24; + dVar75 = (double)(float)(CONCAT17((char)((uint)fVar68 >> 0x18), + CONCAT16((char)((uint)fVar68 >> 0x10), + CONCAT15((char)((uint)fVar68 >> 8), + CONCAT14(SUB41(fVar68,0), + *pfVar24)))) >> 0x20); + fVar66 = (float)(CONCAT17((char)((uint)fVar10 >> 0x18), + CONCAT16((char)((uint)fVar10 >> 0x10), + CONCAT15((char)((uint)fVar10 >> 8), + CONCAT14(SUB41(fVar10,0),fVar81)))) >> + 0x20); + dVar76 = (double)fVar67; + dVar82 = (double)(float)((ulong)_local_1e0 >> 0x20); + fVar67 = (float)((ulong)_fStack_1d8 >> 0x20); + dVar69 = dVar9 * dVar76; + dVar83 = dVar11 * dVar82; + fVar10 = fVar65 * fVar67; + dVar9 = dVar9 * (double)*pfVar25 + dVar76 * dVar70; + dVar11 = dVar11 * (double)(float)((ulong)_local_1d0 >> 0x20) + dVar82 * dVar75; + auVar7[8] = SUB81(dVar11,0); + auVar7._0_8_ = dVar9; + auVar7[9] = (char)((ulong)dVar11 >> 8); + auVar7[10] = (char)((ulong)dVar11 >> 0x10); + auVar7[0xb] = (char)((ulong)dVar11 >> 0x18); + auVar7[0xc] = (char)((ulong)dVar11 >> 0x20); + auVar7[0xd] = (char)((ulong)dVar11 >> 0x28); + auVar7[0xe] = (char)((ulong)dVar11 >> 0x30); + auVar7[0xf] = (char)((ulong)dVar11 >> 0x38); + fVar68 = (float)dVar9; + fVar71 = (float)auVar7._8_8_; + *pfVar56 = (float)(dVar69 - dVar70 * dVar69); + pfVar56[1] = fVar68; + pfVar56[2] = (float)(dVar83 - dVar75 * dVar83); + pfVar56[3] = (float)(CONCAT17((char)((uint)fVar71 >> 0x18), + CONCAT16((char)((uint)fVar71 >> 0x10), + CONCAT15((char)((uint)fVar71 >> 8), + CONCAT14(SUB41(fVar71,0),fVar68)))) + >> 0x20); + pfVar56[4] = fVar73 * fVar74 - fVar81 * fVar73 * fVar74; + pfVar56[5] = fVar73 * fVar86 + fVar74 * fVar81; + pfVar56[6] = fVar10 - fVar66 * fVar10; + pfVar56[7] = fVar65 * (float)((ulong)_fStack_1c8 >> 0x20) + fVar67 * fVar66; + pfVar56 = pfVar56 + 8; + } while (uVar55 < uVar57); + if (uVar3 == uVar57 * 4) goto LAB_002a5bf0; + } + fVar81 = *(float *)((long)pdVar39 + lVar64); + fVar68 = *(float *)((long)pdVar44 + lVar64); + fVar71 = *(float *)((long)pdVar39 + uVar62); + fVar86 = *(float *)((long)pdVar44 + uVar62); + *(float *)((long)pdVar43 + uVar62) = fVar71 * fVar86 - fVar81 * fVar68; + *(float *)((long)pdVar43 + lVar64) = fVar71 * fVar68 + fVar81 * fVar86; + if ((int)uVar1 < (int)uVar6) { + fVar81 = *(float *)((long)pdVar39 + lVar33); + fVar68 = *(float *)((long)pdVar44 + lVar33); + fVar71 = *(float *)((long)pdVar39 + uVar54); + fVar86 = *(float *)((long)pdVar44 + uVar54); + *(float *)((long)pdVar43 + uVar54) = fVar71 * fVar86 - fVar81 * fVar68; + *(float *)((long)pdVar43 + lVar33) = fVar71 * fVar68 + fVar81 * fVar86; + if ((int)uVar59 < (int)uVar6) { + fVar81 = *(float *)((long)pdVar39 + lVar47); + fVar68 = *(float *)((long)pdVar44 + lVar47); + fVar71 = *(float *)((long)pdVar39 + uVar53); + fVar86 = *(float *)((long)pdVar44 + uVar53); + *(float *)((long)pdVar43 + uVar53) = fVar71 * fVar86 - fVar81 * fVar68; + *(float *)((long)pdVar43 + lVar47) = fVar71 * fVar68 + fVar81 * fVar86; + } + } + } + } +LAB_002a5bf0: + iVar27 = iVar27 + -1; + pdVar39 = (double *)((long)pdVar39 + uVar87 * 4); + pdVar44 = (double *)((long)pdVar44 + uVar85 * 4); + pdVar43 = (double *)((long)pdVar43 + uVar84 * 4); + pfVar48 = pfVar48 + uVar87; + pfVar46 = pfVar46 + uVar85; + pfVar32 = pfVar32 + uVar84; + pfVar50 = pfVar50 + uVar84; + } while (iVar27 != -1); + } + } + else { + uVar87 = local_d0 >> 3; + uVar85 = local_70 >> 3; + uVar84 = local_10 >> 3; + pdVar39 = local_110; + pdVar43 = local_50; + pdVar44 = local_b0; + if (uVar88 < bVar21) { + lVar64 = (long)iVar27; + lVar61 = (long)(int)uVar57; + iVar60 = 0; + iVar26 = 2; + if (uVar3 != 0) { + iVar26 = 1; + } + if (iVar26 != 0) { + do { + if (iVar60 == 1) { + pdVar39 = pdVar39 + (long)(int)uVar57 + -1; + pdVar44 = pdVar44 + (long)(int)uVar57 + -1; + pdVar43 = pdVar43 + (long)(int)uVar57 + -1; + } + *pdVar43 = *pdVar39 * *pdVar44; + if ((uVar59 & 1) == 0) { + *(double *)((long)pdVar43 + uVar84 * 8 * lVar64) = + *(double *)((long)pdVar39 + uVar87 * 8 * lVar64) * + *(double *)((long)pdVar44 + uVar85 * 8 * lVar64); + } + if (param_5) { + if (1 < iVar27) { + pdVar42 = pdVar39 + uVar87; + pdVar38 = pdVar44 + uVar85; + pdVar30 = pdVar43 + uVar84; + iVar26 = 1; + do { + dVar83 = pdVar42[uVar87]; + iVar26 = iVar26 + 2; + dVar11 = pdVar38[uVar85]; + dVar9 = *pdVar42; + pdVar42 = pdVar42 + uVar87 * 2; + dVar69 = *pdVar38; + pdVar38 = pdVar38 + uVar85 * 2; + *pdVar30 = dVar83 * dVar11 + dVar69 * dVar9; + pdVar30[uVar84] = dVar69 * dVar83 - dVar9 * dVar11; + pdVar30 = pdVar30 + uVar84 * 2; + } while (iVar26 < iVar27); + } + } + else if (1 < iVar27) { + pdVar42 = pdVar39 + uVar87; + pdVar38 = pdVar44 + uVar85; + pdVar30 = pdVar43 + uVar84; + iVar26 = 1; + do { + dVar11 = pdVar42[uVar87]; + iVar26 = iVar26 + 2; + dVar83 = pdVar38[uVar85]; + dVar9 = *pdVar38; + pdVar38 = pdVar38 + uVar85 * 2; + dVar69 = *pdVar42; + pdVar42 = pdVar42 + uVar87 * 2; + *pdVar30 = dVar69 * dVar9 - dVar11 * dVar83; + pdVar30[uVar84] = dVar9 * dVar11 + dVar83 * dVar69; + pdVar30 = pdVar30 + uVar84 * 2; + } while (iVar26 < iVar27); + } + if (iVar60 == 1) { + pdVar39 = pdVar39 + (1 - lVar61); + pdVar44 = pdVar44 + (1 - lVar61); + pdVar43 = pdVar43 + (1 - lVar61); + } + iVar60 = iVar60 + 1; + iVar26 = 2; + if (uVar3 != 0) { + iVar26 = 1; + } + } while (iVar60 < iVar26); + } + } + if (uVar59 != 0) { + uVar3 = ~(uint)bVar21 + uVar6; + uVar29 = (ulong)bVar21; + uVar57 = uVar3 >> 1; + uVar40 = (uint)bVar21; + uVar41 = (uVar57 - 1 >> 1) + 1; + pdVar42 = pdVar39 + uVar29; + uVar62 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar6 << 3; + pdVar38 = pdVar43 + uVar29 + 4; + lVar61 = NEON_shl(uVar29 + 2 + (ulong)uVar57 * 2,3); + uVar57 = uVar57 + 1; + uVar59 = uVar40; + if (1 < uVar3) { + uVar59 = uVar40 + uVar41 * 4; + } + uVar53 = -(ulong)(uVar59 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar59 << 3; + lVar64 = uVar53 + 8; + pdVar30 = pdVar44 + uVar29; + pdVar37 = pdVar43 + uVar29; + do { + if (((uVar88 & uVar40) != 0) && (*pdVar43 = *pdVar39 * *pdVar44, uVar4 != 0)) { + *(double *)((long)pdVar43 + uVar62) = + *(double *)((long)pdVar39 + uVar62) * *(double *)((long)pdVar44 + uVar62); + } + if (param_5) { + if ((int)uVar40 < (int)uVar6) { + if ((pdVar37 < pdVar42 + 4 && pdVar42 < pdVar38 || + pdVar37 < pdVar30 + 4 && pdVar30 < pdVar38) || (uVar57 < 4)) { + pdVar31 = pdVar42; + pdVar51 = pdVar30; + pdVar52 = pdVar37; + do { + dVar9 = *pdVar31; + pdVar22 = pdVar31 + 2; + dVar11 = pdVar51[1]; + dVar69 = *pdVar51; + pdVar51 = pdVar51 + 2; + dVar83 = pdVar31[1]; + *pdVar52 = dVar83 * dVar11 + dVar69 * dVar9; + pdVar52[1] = dVar69 * dVar83 - dVar9 * dVar11; + pdVar31 = pdVar22; + pdVar52 = pdVar52 + 2; + } while (pdVar22 != (double *)((long)pdVar39 + lVar61)); + } + else { + if (1 < uVar3) { + uVar59 = 0; + pdVar51 = pdVar42; + pdVar31 = pdVar30; + pdVar52 = pdVar37; + do { + dVar83 = *pdVar51; + pdVar22 = pdVar51 + 1; + dVar75 = pdVar51[2]; + dVar9 = pdVar51[3]; + pdVar51 = pdVar51 + 4; + uVar59 = uVar59 + 1; + dVar70 = *pdVar31; + pdVar23 = pdVar31 + 1; + dVar76 = pdVar31[2]; + dVar11 = pdVar31[3]; + pdVar31 = pdVar31 + 4; + dVar69 = dVar70 * *pdVar22; + dVar82 = dVar76 * dVar9; + *pdVar52 = *pdVar22 * *pdVar23 + dVar83 * dVar70; + pdVar52[1] = dVar69 - dVar83 * dVar69; + pdVar52[2] = dVar9 * dVar11 + dVar75 * dVar76; + pdVar52[3] = dVar82 - dVar75 * dVar82; + pdVar52 = pdVar52 + 4; + } while (uVar59 < uVar41); + if (uVar41 * 2 == uVar57) goto LAB_002a5258; + } + dVar69 = *(double *)((long)pdVar44 + lVar64); + dVar11 = *(double *)((long)pdVar39 + lVar64); + dVar9 = *(double *)((long)pdVar39 + uVar53); + dVar83 = *(double *)((long)pdVar44 + uVar53); + *(double *)((long)pdVar43 + uVar53) = dVar11 * dVar69 + dVar83 * dVar9; + *(double *)((long)pdVar43 + lVar64) = dVar83 * dVar11 - dVar9 * dVar69; + } + } + } + else if ((int)uVar40 < (int)uVar6) { + if ((pdVar37 < pdVar42 + 4 && pdVar42 < pdVar38 || + pdVar37 < pdVar30 + 4 && pdVar30 < pdVar38) || (uVar57 < 4)) { + pdVar31 = pdVar42; + pdVar51 = pdVar30; + pdVar52 = pdVar37; + do { + dVar9 = *pdVar31; + pdVar22 = pdVar31 + 2; + dVar11 = pdVar51[1]; + dVar69 = *pdVar51; + pdVar51 = pdVar51 + 2; + dVar83 = pdVar31[1]; + *pdVar52 = dVar9 * dVar69 - dVar83 * dVar11; + pdVar52[1] = dVar9 * dVar11 + dVar83 * dVar69; + pdVar31 = pdVar22; + pdVar52 = pdVar52 + 2; + } while (pdVar22 != (double *)((long)pdVar39 + lVar61)); + } + else { + if (1 < uVar3) { + uVar59 = 0; + pdVar51 = pdVar37; + pdVar31 = pdVar30; + pdVar52 = pdVar42; + do { + dVar76 = *pdVar52; + dVar9 = pdVar52[1]; + dVar77 = pdVar52[2]; + dVar83 = pdVar52[3]; + pdVar52 = pdVar52 + 4; + uVar59 = uVar59 + 1; + dVar82 = *pdVar31; + dVar11 = pdVar31[1]; + dVar78 = pdVar31[2]; + dVar70 = pdVar31[3]; + pdVar31 = pdVar31 + 4; + dVar69 = dVar76 * dVar82; + dVar75 = dVar77 * dVar78; + *pdVar51 = dVar69 - dVar9 * dVar69; + pdVar51[1] = dVar76 * dVar11 + dVar82 * dVar9; + pdVar51[2] = dVar75 - dVar83 * dVar75; + pdVar51[3] = dVar77 * dVar70 + dVar78 * dVar83; + pdVar51 = pdVar51 + 4; + } while (uVar59 < uVar41); + if (uVar41 * 2 == uVar57) goto LAB_002a5258; + } + dVar69 = *(double *)((long)pdVar44 + lVar64); + dVar11 = *(double *)((long)pdVar39 + lVar64); + dVar9 = *(double *)((long)pdVar39 + uVar53); + dVar83 = *(double *)((long)pdVar44 + uVar53); + *(double *)((long)pdVar43 + uVar53) = dVar9 * dVar83 - dVar11 * dVar69; + *(double *)((long)pdVar43 + lVar64) = dVar9 * dVar69 + dVar11 * dVar83; + } + } +LAB_002a5258: + iVar27 = iVar27 + -1; + pdVar39 = pdVar39 + uVar87; + pdVar44 = pdVar44 + uVar85; + pdVar43 = pdVar43 + uVar84; + pdVar42 = pdVar42 + uVar87; + pdVar30 = pdVar30 + uVar85; + pdVar37 = pdVar37 + uVar84; + pdVar38 = pdVar38 + uVar84; + } while (iVar27 != -1); + } + } + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar26 = *piVar2; + cVar5 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar21) { + *piVar2 = iVar26 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar26 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (double *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar26 = 0; + puVar34 = local_20; + do { + *puVar34 = 0; + iVar26 = iVar26 + 1; + puVar34 = puVar34 + 1; + } while (iVar26 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + iVar26 = *piVar2; + cVar5 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar21) { + *piVar2 = iVar26 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar26 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (double *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar26 = 0; + puVar35 = local_80; + do { + *puVar35 = 0; + iVar26 = iVar26 + 1; + puVar35 = puVar35 + 1; + } while (iVar26 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar2 = (int *)(local_e8 + 0x14); + do { + iVar26 = *piVar2; + cVar5 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar21) { + *piVar2 = iVar26 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar26 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = (double *)0x0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar26 = 0; + puVar35 = local_e0; + do { + *puVar35 = 0; + iVar26 = iVar26 + 1; + puVar35 = puVar35 + 1; + } while (iVar26 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002a61c0 (4024 bytes) name=dct + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::dct(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::dct(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + uint uVar1; + int *piVar2; + double *pdVar3; + long lVar4; + uint uVar5; + int iVar6; + int iVar7; + uint uVar8; + char cVar9; + int iVar10; + undefined1 auVar11 [16]; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + ulong *puVar16; + bool bVar17; + int iVar18; + uint uVar19; + char *pcVar20; + double *pdVar21; + undefined8 *puVar22; + uint *puVar23; + uint *puVar24; + uint uVar25; + int iVar26; + code *pcVar27; + undefined1 (*pauVar28) [16]; + uint *puVar29; + undefined4 *puVar30; + Mat *pMVar31; + int iVar32; + int iVar33; + ulong uVar34; + undefined1 (*pauVar35) [16]; + uint uVar36; + ulong uVar37; + undefined1 (*pauVar38) [16]; + undefined1 (*pauVar39) [16]; + long lVar40; + long lVar41; + uint uVar42; + long lVar43; + int iVar44; + undefined1 *puVar45; + ulong uVar46; + undefined1 *puVar47; + double dVar48; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + uint uVar55; + long lVar56; + long lVar57; + ulong uVar58; + ulong uVar59; + double *pdVar60; + Mat *local_648; + int local_638; + uint local_634; + ulong local_630; + ulong local_628; + uint local_618; + uint local_608; + int local_604; + int local_600; + Mat *local_5f8; + undefined8 local_5e0; + undefined8 local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + uint local_5c0; + int iStack_5bc; + undefined4 uStack_5b8; + undefined4 uStack_5b4; + long local_5b0; + undefined8 local_5a8; + undefined8 local_5a0; + undefined8 local_598; + undefined8 local_590; + long local_588; + undefined4 *local_580; + ulong *local_578; + ulong local_570; + undefined8 local_568; + undefined8 local_560; + undefined8 uStack_558; + long local_550; + undefined8 uStack_548; + undefined8 local_540; + undefined8 uStack_538; + undefined8 local_530; + long lStack_528; + undefined8 *local_520; + ulong *local_518; + ulong local_510; + ulong uStack_508; + uint local_500; + int local_4fc; + uint local_4f8; + uint local_4f4; + long local_4f0; + undefined8 uStack_4e8; + undefined8 local_4e0; + undefined8 uStack_4d8; + undefined8 local_4d0; + long lStack_4c8; + uint *local_4c0; + ulong *local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + uint local_4a0 [34]; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + iVar18 = _InputArray::kind(param_1); + uVar5 = param_3 & 1; + if (iVar18 == 0x10000) { + pMVar31 = *(Mat **)(param_1 + 8); + local_580 = &uStack_5b8; + local_578 = &local_570; + local_5c0 = *(uint *)pMVar31; + iStack_5bc = *(int *)(pMVar31 + 4); + uStack_5b8 = *(undefined4 *)(pMVar31 + 8); + uStack_5b4 = *(undefined4 *)(pMVar31 + 0xc); + local_5b0 = *(long *)(pMVar31 + 0x10); + local_5a8 = *(undefined8 *)(pMVar31 + 0x18); + local_5a0 = *(undefined8 *)(pMVar31 + 0x20); + local_598 = *(undefined8 *)(pMVar31 + 0x28); + local_590 = *(undefined8 *)(pMVar31 + 0x30); + local_588 = *(long *)(pMVar31 + 0x38); + local_568 = 0; + local_570 = 0; + if (local_588 != 0) { + piVar2 = (int *)(local_588 + 0x14); + do { + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = *piVar2 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar31 + 4)) { + iStack_5bc = 0; + Mat::copySize((Mat *)&local_5c0,pMVar31); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_5f8 = (Mat *)&local_5c0; + local_518 = &local_510; + local_520 = &uStack_558; + local_560 = CONCAT44(iStack_5bc,local_5c0); + uStack_558 = CONCAT44(uStack_5b4,uStack_5b8); + uStack_508 = 0; + local_510 = 0; + local_550 = local_5b0; + uStack_548 = local_5a8; + local_540 = local_5a0; + uStack_538 = local_598; + local_530 = local_590; + lStack_528 = local_588; + if (local_588 != 0) { + piVar2 = (int *)(local_588 + 0x14); + do { + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = *piVar2 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (iStack_5bc < 3) { + local_510 = *local_578; + uStack_508 = local_578[1]; + uVar19 = local_5c0; + iVar18 = iStack_5bc; + } + else { + local_560 = (ulong)local_5c0; + Mat::copySize((Mat *)&local_560,local_5f8); + uVar19 = (uint)local_560; + iVar18 = local_560._4_4_; + } + if (iVar18 < 1) { + local_638 = 0; + local_604 = 0; + } + else { + local_604 = (int)local_518[(long)iVar18 + -1]; + local_638 = local_604 << 1; + } + local_418 = auStack_408; + local_410 = 0x408; + if (1 < (uVar19 & 0xfff) - 5) { + local_5e0 = 0; + local_5d8 = 0; + pcVar20 = (char *)String::allocate((String *)&local_5e0,0x24); + uVar15 = s_type____CV_32FC1____type____CV_6_00465c38._24_8_; + uVar14 = s_type____CV_32FC1____type____CV_6_00465c38._16_8_; + uVar13 = s_type____CV_32FC1____type____CV_6_00465c38._8_8_; + uVar12 = s_type____CV_32FC1____type____CV_6_00465c38._0_8_; + *(undefined4 *)(pcVar20 + 0x20) = s_type____CV_32FC1____type____CV_6_00465c38._32_4_; + *(undefined8 *)pcVar20 = uVar12; + *(undefined8 *)(pcVar20 + 8) = uVar13; + *(undefined8 *)(pcVar20 + 0x10) = uVar14; + *(undefined8 *)(pcVar20 + 0x18) = uVar15; + error(-0xd7,(String *)&local_5e0,"void cv::dct(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xd92); + String::deallocate((String *)&local_5e0); + } + _OutputArray::create(param_2,(uint)uStack_558,uStack_558._4_4_,uVar19 & 0xfff,-1,false,0); + iVar18 = _InputArray::kind((_InputArray *)param_2); + if (iVar18 == 0x10000) { + pMVar31 = *(Mat **)(param_2 + 8); + lStack_4c8 = *(long *)(pMVar31 + 0x38); + local_500 = *(uint *)pMVar31; + local_4fc = *(int *)(pMVar31 + 4); + local_4f8 = *(uint *)(pMVar31 + 8); + local_4f4 = *(uint *)(pMVar31 + 0xc); + local_4f0 = *(long *)(pMVar31 + 0x10); + uStack_4e8 = *(undefined8 *)(pMVar31 + 0x18); + local_4e0 = *(undefined8 *)(pMVar31 + 0x20); + uStack_4d8 = *(undefined8 *)(pMVar31 + 0x28); + local_4d0 = *(undefined8 *)(pMVar31 + 0x30); + local_4c0 = &local_4f8; + local_4b8 = &local_4b0; + local_4a8 = 0; + local_4b0 = 0; + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = *piVar2 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar31 + 4)) { + local_4fc = 0; + Mat::copySize((Mat *)&local_500,pMVar31); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_648 = (Mat *)&local_500; + iVar18 = 2; + if ((uVar19 & 7) != 6) { + iVar18 = 0; + } + uVar19 = param_3 & 4; + pcVar27 = (code *)(&PTR_FUN_004f6060)[(int)(iVar18 + uVar5)]; + if (((uint)param_3 >> 2 & 1) == 0) { + local_634 = uVar19; + local_608 = uVar19; + if (((uint)uStack_558 != 1) && + (((uStack_558._4_4_ != 1 || (((uint)local_560 >> 0xe & 1) == 0)) || + ((local_500 >> 0xe & 1) == 0)))) { + local_608 = 1; + local_634 = (uint)(uStack_558._4_4_ == 1); + } + } + else { + local_608 = 0; + local_634 = 0; + } + uVar34 = (ulong)local_604; + puVar45 = (undefined1 *)0x0; + local_600 = local_638 + 4; + puVar47 = (undefined1 *)0x0; + lVar43 = 0; + iVar18 = 0; + local_618 = 0; + lVar56 = 0; + pdVar60 = (double *)0x0; + lVar57 = 0; + if (local_634 == 0) { + uVar58 = local_510; + uVar59 = local_4b0; + uVar42 = uStack_558._4_4_; + uVar55 = (uint)uStack_558; + local_630 = uVar34; + local_628 = uVar34; + if (uStack_558._4_4_ != 1) goto LAB_002a64cc; + if (uVar19 != 0) goto LAB_002a64cc; + uVar55 = 1; + uVar42 = (uint)uStack_558; + goto LAB_002a64cc; + } + do { + local_630 = local_510; + uVar58 = uVar34; + uVar59 = uVar34; + uVar42 = local_4f8; + uVar55 = local_4f4; + local_628 = local_4b0; +LAB_002a64cc: + lVar40 = local_4f0; + lVar41 = local_550; + if (uVar42 != local_618) { + if ((1 < (int)uVar42) && ((uVar42 & 1) != 0)) { + local_5d0 = 0; + local_5c8 = 0; + puVar22 = (undefined8 *)String::allocate((String *)&local_5d0,0x22); + uVar15 = _LAB_00465c78; + uVar14 = DAT_00465c70; + uVar13 = _LAB_00465c68; + uVar12 = _LAB_00465c60; + *(undefined2 *)(puVar22 + 4) = DAT_00465c80; + *puVar22 = uVar12; + puVar22[1] = uVar13; + puVar22[2] = uVar14; + puVar22[3] = uVar15; + error(-0xd5,(String *)&local_5d0,"void cv::dct(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xdd4); + String::deallocate((String *)&local_5d0); + } + iVar7 = uVar42 * local_604; + iVar26 = local_638 + ((int)uVar42 / 2) * local_638; + iVar44 = local_638 + uVar42 * local_600 + iVar26 + iVar7; + if ((int)uVar42 < 6) { + bVar17 = true; + iVar18 = 1; + uVar25 = uVar42 & 1; + uVar19 = uVar42; + local_4a0[0] = uVar42; + } + else { + uVar19 = (int)((uVar42 - 1 ^ uVar42) + 1) >> 1; + if ((int)uVar19 < 2) { + iVar18 = 0; + uVar25 = uVar42; +LAB_002a69bc: + uVar19 = 3; + do { + while( true ) { + iVar32 = iVar18; + uVar8 = 0; + if (uVar19 != 0) { + uVar8 = (int)uVar25 / (int)uVar19; + } + if (uVar25 != uVar19 * uVar8) break; + local_4a0[iVar32] = uVar19; + uVar25 = uVar8; + iVar18 = iVar32 + 1; + if ((int)uVar8 < 2) goto LAB_002a69e8; + } + uVar19 = uVar19 + 2; + iVar18 = iVar32; + } while ((int)(uVar19 * uVar19) <= (int)uVar25); + local_4a0[iVar32] = uVar25; +LAB_002a69e8: + iVar18 = iVar32 + 1; + uVar19 = local_4a0[0]; + } + else { + local_4a0[0] = uVar19; + if (uVar42 == uVar19) { + iVar32 = 0; + iVar18 = 1; + uVar19 = uVar42; + } + else { + uVar25 = 0; + if (uVar19 != 0) { + uVar25 = (int)uVar42 / (int)uVar19; + } + iVar18 = 1; + if (1 < (int)uVar25) goto LAB_002a69bc; + iVar32 = 0; + iVar18 = 1; + } + } + uVar25 = uVar19 & 1; + uVar8 = uVar25 ^ 1; + iVar6 = (int)(uVar8 + iVar18) >> 1; + if ((int)uVar8 < iVar6) { + lVar56 = (long)(int)uVar8; + uVar19 = iVar6 - uVar8; + uVar37 = (ulong)uVar19; + iVar10 = iVar18 - uVar8; + lVar43 = (lVar56 + iVar10) * 4; + if (((long)(lVar43 + uVar37 * -4) < (long)((uVar37 + lVar56) * 4) && lVar56 * 4 < lVar43) + || (uVar19 < 9)) { + lVar43 = lVar56 + (iVar10 + -1); + puVar23 = local_4a0 + lVar43; + puVar29 = local_4a0 + lVar56; + do { + uVar19 = *puVar29; + *puVar29 = *puVar23; + puVar24 = puVar23 + -1; + *puVar23 = uVar19; + puVar23 = puVar24; + puVar29 = puVar29 + 1; + } while (puVar24 != + (uint *)((long)&local_4a8 + (lVar43 - (ulong)(~uVar8 + iVar6)) * 4 + 4)); + } + else { + puVar23 = local_4a0 + lVar56; + uVar25 = -((uint)((ulong)puVar23 >> 2) & 3) & 3; + if (uVar25 < uVar19) { + uVar37 = (ulong)uVar25; + } + iVar33 = (int)uVar37; + uVar25 = uVar8; + if (iVar33 != 0) { + uVar25 = *puVar23; + *puVar23 = local_4a0[(int)(uVar8 + iVar10 + -1)]; + local_4a0[(int)(uVar8 + iVar10 + -1)] = uVar25; + uVar25 = uVar8 + 1; + if (iVar33 != 1) { + uVar25 = local_4a0[lVar56 + 1]; + local_4a0[lVar56 + 1] = local_4a0[(int)(uVar8 + (iVar18 - (uVar8 + 1)) + -1)]; + local_4a0[(int)(uVar8 + (iVar18 - (uVar8 + 1)) + -1)] = uVar25; + uVar25 = uVar8 + 2; + if (iVar33 == 3) { + uVar25 = local_4a0[lVar56 + 2]; + local_4a0[lVar56 + 2] = local_4a0[(int)(uVar8 + (iVar18 - (uVar8 + 2)) + -1)]; + local_4a0[(int)(uVar8 + (iVar18 - (uVar8 + 2)) + -1)] = uVar25; + uVar25 = uVar8 + 3; + } + } + } + pauVar35 = (undefined1 (*) [16])((long)&local_4b0 + lVar43 + ~uVar37 * 4 + 4); + uVar1 = ((uVar19 - iVar33) - 4 >> 2) + 1; + uVar36 = 0; + iVar10 = uVar1 * 4; + pauVar28 = (undefined1 (*) [16])(local_4a0 + uVar37 + lVar56); + pauVar38 = pauVar35; + pauVar39 = (undefined1 (*) [16])(local_4a0 + uVar37 + lVar56); + do { + auVar11 = *pauVar35; + uVar36 = uVar36 + 1; + pauVar35 = pauVar35 + -1; + auVar49._8_8_ = _UNK_002a7238; + auVar49._0_8_ = _DAT_002a7230; + auVar50 = a64_TBL(ZEXT816(0),auVar11,auVar49); + auVar11._8_8_ = _UNK_002a7238; + auVar11._0_8_ = _DAT_002a7230; + auVar49 = a64_TBL(ZEXT816(0),*pauVar28,auVar11); + *(long *)(*pauVar39 + 8) = auVar50._8_8_; + *(long *)*pauVar39 = auVar50._0_8_; + *(long *)(*pauVar38 + 8) = auVar49._8_8_; + *(long *)*pauVar38 = auVar49._0_8_; + pauVar38 = pauVar38 + -1; + pauVar28 = pauVar28 + 1; + pauVar39 = pauVar39 + 1; + } while (uVar36 < uVar1); + uVar25 = iVar10 + uVar25; + if (iVar10 != uVar19 - iVar33) { + uVar37 = -(ulong)(uVar25 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar25 << 2; + uVar19 = *(uint *)((long)local_4a0 + uVar37); + *(uint *)((long)local_4a0 + uVar37) = local_4a0[(int)(uVar8 + (iVar18 - uVar25) + -1)] + ; + local_4a0[(int)(uVar8 + (iVar18 - uVar25) + -1)] = uVar19; + if ((int)(uVar25 + 1) < iVar6) { + puVar23 = (uint *)((long)local_4a0 + uVar37 + 4); + uVar19 = *puVar23; + *puVar23 = local_4a0[(int)(uVar8 + (iVar18 - (uVar25 + 1)) + -1)]; + local_4a0[(int)(uVar8 + (iVar18 - (uVar25 + 1)) + -1)] = uVar19; + if ((int)(uVar25 + 2) < iVar6) { + puVar23 = (uint *)((long)local_4a0 + uVar37 + 8); + uVar19 = *puVar23; + *puVar23 = local_4a0[(int)(uVar8 + (iVar18 - (uVar25 + 2)) + -1)]; + local_4a0[(int)(uVar8 + (iVar18 - (uVar25 + 2)) + -1)] = uVar19; + } + } + } + } + uVar25 = local_4a0[0] & 1; + uVar19 = local_4a0[0]; + } + bVar17 = local_4a0[iVar32] == uVar19; + if (1 < iVar18) { + if (uVar25 == 0) { + uVar25 = local_4a0[1] & 1; + uVar19 = local_4a0[1]; + } + else { + uVar25 = 1; + } + } + } + if ((uVar25 != 0) && (5 < (int)uVar19)) { + iVar44 = iVar44 + local_638 + uVar19 * local_638; + } + iVar32 = iVar44 + iVar7; + if (bVar17) { + iVar32 = iVar44; + } + uVar46 = (ulong)(iVar32 + 0x20); + puVar47 = local_418; + uVar37 = uVar46; + if (local_410 < uVar46) { + if (local_418 != auStack_408) { + if (local_418 != (undefined1 *)0x0) { + operator_delete__(local_418); + } + local_418 = auStack_408; + local_410 = 0x408; + } + puVar47 = auStack_408; + uVar37 = local_410; + if (0x408 < uVar46) { + local_418 = operator_new__(uVar46); + puVar47 = local_418; + uVar37 = uVar46; + } + } + local_410 = uVar37; + puVar45 = puVar47 + (int)(uVar42 * local_638); + FUN_0029da38(uVar42,iVar18,local_4a0,puVar45,local_638,puVar47,uVar5); + pdVar60 = (double *)((ulong)(puVar45 + (long)(int)uVar42 * 4 + 0xf) & 0xfffffffffffffff0); + lVar43 = (long)pdVar60 + (long)iVar26; + lVar4 = lVar43 + iVar7; + lVar56 = lVar4; + lVar57 = lVar43; + if (!bVar17) { + lVar56 = lVar4 + iVar7; + lVar57 = lVar4; + } + local_618 = uVar42; + if (uVar42 != 1) { + iVar44 = (int)uVar42 >> 1; + if ((uVar42 - 1 & uVar42) == 0) { + if (uVar42 < 2) { + iVar26 = 2; + uVar19 = 0; + } + else { + uVar19 = 0; + do { + uVar25 = uVar19; + uVar19 = uVar25 + 1; + } while ((uint)(1 << (ulong)(uVar19 & 0x1f)) < uVar42); + iVar26 = uVar25 + 3; + } + dVar53 = 2.0; + if (uVar5 != 0) { + dVar53 = 1.0; + } + dVar52 = (double)(&DAT_00465650)[(long)iVar26 * 2]; + dVar53 = dVar53 * *(double *)(&DAT_00467700 + (long)(int)uVar19 * 8); + dVar54 = -(double)(&DAT_00465658)[(long)iVar26 * 2]; + } + else { + dVar54 = 2.0; + dVar52 = 1.0 / (double)(int)(uVar42 << 1); + if (uVar5 != 0) { + dVar54 = 1.0; + } + dVar53 = SQRT(dVar52); + if (NAN(dVar53)) { + dVar53 = ::sqrt(dVar52); + } + dVar53 = dVar53 * dVar54; + dVar54 = sin(dVar52 * DAT_002a7240); + dVar51 = 1.0 - dVar54 * dVar54; + dVar52 = SQRT(dVar51); + if (NAN(dVar52)) { + dVar52 = ::sqrt(dVar51); + } + } + if (local_638 == 0x10) { + if (-1 < iVar44) { + dVar51 = 0.0; + pdVar21 = pdVar60; + do { + dVar48 = dVar51 * dVar54; + pdVar3 = pdVar21 + 2; + *pdVar21 = dVar53; + pdVar21[1] = dVar51; + dVar51 = dVar51 * dVar52 + dVar54 * dVar53; + dVar53 = dVar53 * dVar52 - dVar48; + pdVar21 = pdVar3; + } while (pdVar3 != pdVar60 + (long)iVar44 * 2 + 2); + } + } + else { + dVar53 = (double)(float)dVar53; + if (-1 < iVar44) { + dVar51 = 0.0; + pdVar21 = pdVar60; + do { + pdVar3 = pdVar21 + 1; + dVar48 = dVar54 * dVar51; + *(float *)pdVar21 = (float)dVar53; + *(float *)((long)pdVar21 + 4) = (float)dVar51; + dVar51 = dVar52 * dVar51 + dVar53 * dVar54; + dVar53 = dVar52 * dVar53 - dVar48; + pdVar21 = pdVar3; + } while (pdVar3 != pdVar60 + (long)iVar44 + 1); + } + } + } + } + if (0 < (int)uVar55) { + uVar19 = 0; + do { + (*pcVar27)(lVar41,local_630 & 0xffffffff,lVar43,lVar57,lVar40,local_628 & 0xffffffff,uVar42, + iVar18,local_4a0,puVar45,puVar47,pdVar60,0,lVar56); + uVar19 = uVar19 + 1; + lVar41 = lVar41 + uVar58; + lVar40 = lVar40 + uVar59; + } while (uVar19 != uVar55); + } + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = *piVar2 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (lStack_528 == 0) { +LAB_002a6794: + if (0 < local_560._4_4_) goto LAB_002a67b4; +LAB_002a68b8: + local_560 = CONCAT44(local_560._4_4_,local_500); +LAB_002a67e4: + puVar16 = local_4b8; + if (2 < local_4fc) goto LAB_002a6880; + uStack_558 = CONCAT44(local_4f4,local_4f8); + local_560 = CONCAT44(local_4fc,(uint)local_560); + *local_518 = *local_4b8; + local_518[1] = puVar16[1]; + } + else { + piVar2 = (int *)(lStack_528 + 0x14); + do { + iVar44 = *piVar2; + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = iVar44 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar44 != 1) goto LAB_002a6794; + Mat::deallocate((Mat *)&local_560); + if (local_560._4_4_ < 1) goto LAB_002a68b8; +LAB_002a67b4: + iVar44 = 0; + puVar22 = local_520; + do { + *(undefined4 *)puVar22 = 0; + iVar44 = iVar44 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar44 < local_560._4_4_); + local_560 = CONCAT44(local_560._4_4_,local_500); + if (local_560._4_4_ < 3) goto LAB_002a67e4; +LAB_002a6880: + lStack_528 = 0; + uStack_538 = 0; + local_540 = 0; + uStack_548 = 0; + local_550 = 0; + Mat::copySize((Mat *)&local_560,local_648); + } + uStack_538 = uStack_4d8; + local_540 = local_4e0; + lStack_528 = lStack_4c8; + local_530 = local_4d0; + uStack_548 = uStack_4e8; + local_550 = local_4f0; + if (local_608 <= local_634) { + if (lStack_4c8 != 0) { + piVar2 = (int *)(lStack_4c8 + 0x14); + do { + iVar18 = *piVar2; + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = iVar18 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar18 == 1) { + Mat::deallocate(local_648); + } + } + lStack_4c8 = 0; + local_4f0 = 0; + uStack_4d8 = 0; + local_4e0 = 0; + uStack_4e8 = 0; + if (0 < local_4fc) { + iVar18 = 0; + puVar23 = local_4c0; + do { + iVar18 = iVar18 + 1; + *puVar23 = 0; + puVar23 = puVar23 + 1; + } while (iVar18 < local_4fc); + } + if (local_4b8 != &local_4b0) { + fastFree(local_4b8); + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + if (lStack_528 != 0) { + piVar2 = (int *)(lStack_528 + 0x14); + do { + iVar18 = *piVar2; + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = iVar18 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_560); + } + } + lStack_528 = 0; + local_550 = 0; + uStack_538 = 0; + local_540 = 0; + uStack_548 = 0; + if (0 < local_560._4_4_) { + iVar18 = 0; + puVar22 = local_520; + do { + *(undefined4 *)puVar22 = 0; + iVar18 = iVar18 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar18 < local_560._4_4_); + } + if (local_518 != &local_510) { + fastFree(local_518); + } + if (local_588 != 0) { + piVar2 = (int *)(local_588 + 0x14); + do { + iVar18 = *piVar2; + cVar9 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar17) { + *piVar2 = iVar18 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar18 == 1) { + Mat::deallocate(local_5f8); + } + } + local_588 = 0; + local_5b0 = 0; + local_598 = 0; + local_5a0 = 0; + local_5a8 = 0; + if (0 < iStack_5bc) { + iVar18 = 0; + puVar30 = local_580; + do { + iVar18 = iVar18 + 1; + *puVar30 = 0; + puVar30 = puVar30 + 1; + } while (iVar18 < iStack_5bc); + } + if (local_578 != &local_570) { + fastFree(local_578); + } + return; + } + local_634 = 1; + } while( true ); +} + + +================================================================== + +### FUNC 002a7250 (8 bytes) name=idct + +/* cv::idct(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::idct(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + dct(param_1,param_2,param_3 | 1); + return; +} + + +================================================================== + +### FUNC 002a7258 (124 bytes) name=getOptimalDFTSize + +/* cv::getOptimalDFTSize(int) */ + +int cv::getOptimalDFTSize(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + + if (0x7eb4959f < (uint)param_1) { + return -1; + } + iVar5 = 0x672; + iVar4 = 0; + do { + iVar1 = iVar4 + iVar5 >> 1; + iVar2 = *(int *)(&DAT_00465cf0 + (long)iVar1 * 4); + while (iVar3 = iVar1, param_1 <= iVar2) { + iVar1 = iVar4 + iVar3 >> 1; + if (iVar3 <= iVar4) { + return iVar2; + } + iVar2 = *(int *)(&DAT_00465cf0 + (long)iVar1 * 4); + iVar5 = iVar3; + } + iVar4 = iVar3 + 1; + } while (iVar4 < iVar5); + return *(int *)(&DAT_00465cf0 + (long)iVar5 * 4); +} + + +================================================================== + +### FUNC 002a72d4 (1160 bytes) name=cvDFT + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void cvDFT(cv *param_1,cv *param_2,uint param_3,int param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + char *pcVar5; + int *piVar6; + int *piVar7; + int iVar8; + uint uVar9; + undefined8 local_150; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_a8 = local_108; + local_80 = (int *)&uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_a0 = local_100; + uStack_b8 = uStack_118; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + if (local_e8 != 0) { + piVar6 = (int *)(local_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_68 = local_d8[1]; + iVar8 = local_20[-1]; + if (iVar8 == iStack_11c) { +LAB_002a76dc: + if (iVar8 == 2) { + if ((*local_20 == *local_80) && (local_20[1] == local_80[1])) goto LAB_002a743c; + } + else { + if (iVar8 < 1) goto LAB_002a743c; + if (*local_20 == *local_80) { + piVar6 = local_20; + piVar7 = local_80; + do { + piVar7 = piVar7 + 1; + if (piVar6 == local_20 + (iVar8 - 1)) goto LAB_002a743c; + piVar6 = piVar6 + 1; + } while (*piVar6 == *piVar7); + } + } + } + } + else { + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + iVar8 = local_20[-1]; + if (iVar8 == local_80[-1]) goto LAB_002a76dc; + } + local_150 = 0; + local_148 = (Mat *)0x0; + pcVar5 = (char *)cv::String::allocate((String *)&local_150,0x14); + uVar4 = s_src_size____dst_size_00465c88._8_8_; + uVar3 = s_src_size____dst_size_00465c88._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_src_size____dst_size_00465c88._16_4_; + *(undefined8 *)pcVar5 = uVar3; + *(undefined8 *)(pcVar5 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_150,"void cvDFT(const CvArr*, CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xee8); + cv::String::deallocate((String *)&local_150); +LAB_002a743c: + param_3 = param_3 & 7; + uVar9 = param_3; + if ((local_60 & 0xfff) != ((uint)local_c0 & 0xfff)) { + uVar9 = param_3 | 0x20; + if (((uint)local_c0 >> 3 & 0x1ff) == 1) { + uVar9 = param_3 | 0x10; + } + } + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_148 = (Mat *)&local_60; + local_130 = (Mat *)&local_c0; + cv::dft((_InputArray *)&local_150,(_OutputArray *)&local_138,uVar9,param_4); + if (local_b0 != local_110) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar5 = (char *)cv::String::allocate((String *)&local_138,0x15); + cVar1 = s_dst_data____dst0_data_00465ca0[0x14]; + uVar4 = s_dst_data____dst0_data_00465ca0._8_8_; + uVar3 = s_dst_data____dst0_data_00465ca0._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_dst_data____dst0_data_00465ca0._16_4_; + pcVar5[0x14] = cVar1; + *(undefined8 *)pcVar5 = uVar3; + *(undefined8 *)(pcVar5 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_138,"void cvDFT(const CvArr*, CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xef3); + cv::String::deallocate((String *)&local_138); + } + if (local_88 != 0) { + piVar6 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar8 = 0; + piVar6 = local_80; + do { + *piVar6 = 0; + iVar8 = iVar8 + 1; + piVar6 = piVar6 + 1; + } while (iVar8 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar6 = (int *)(local_e8 + 0x14); + do { + iVar8 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar8 = 0; + do { + *local_e0 = 0; + iVar8 = iVar8 + 1; + local_e0 = local_e0 + 1; + } while (iVar8 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_28 != 0) { + piVar6 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar8 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002a77f0 (884 bytes) name=cvMulSpectrums + +void cvMulSpectrums(cv *param_1,cv *param_2,cv *param_3,uint param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + char *pcVar9; + int *piVar10; + int iVar11; + int *piVar12; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + iVar11 = local_e0[-1]; + if (iVar11 == local_20[-1]) { + if (iVar11 == 2) { + /* try { // try from 002a7b4c to 003a7b4f has its CatchHandler @ 002a7e60 */ + /* try { // try from 002a7b54 to 003a7d9b has its CatchHandler @ 002a7ac0 */ + if ((*local_e0 == *local_20) && (local_e0[1] == local_20[1])) goto LAB_002a7b20; + } + else if (iVar11 < 1) { +LAB_002a7b20: + if ((local_120 & 0xfff) == (local_60 & 0xfff)) goto LAB_002a78ec; + } + else if (*local_e0 == *local_20) { + piVar10 = local_e0; + piVar12 = local_20; + do { + piVar12 = piVar12 + 1; + if (piVar10 == local_e0 + (iVar11 - 1)) goto LAB_002a7b20; + piVar10 = piVar10 + 1; + /* try { // try from 002a7b10 to 003a7b13 has its CatchHandler @ 002a7ac0 */ + } while (*piVar10 == *piVar12); + } + } + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_138,0x32); + uVar8 = s_srcA_size____dst_size____srcA_ty_00465cb8._40_8_; + uVar7 = s_srcA_size____dst_size____srcA_ty_00465cb8._32_8_; + uVar6 = s_srcA_size____dst_size____srcA_ty_00465cb8._24_8_; + uVar5 = s_srcA_size____dst_size____srcA_ty_00465cb8._16_8_; + uVar4 = s_srcA_size____dst_size____srcA_ty_00465cb8._8_8_; + uVar3 = s_srcA_size____dst_size____srcA_ty_00465cb8._0_8_; + *(undefined2 *)(pcVar9 + 0x30) = s_srcA_size____dst_size____srcA_ty_00465cb8._48_2_; + *(undefined8 *)pcVar9 = uVar3; + *(undefined8 *)(pcVar9 + 8) = uVar4; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + *(undefined8 *)(pcVar9 + 0x20) = uVar7; + *(undefined8 *)(pcVar9 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_138, + "void cvMulSpectrums(const CvArr*, const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xefe); + cv::String::deallocate((String *)&local_138); +LAB_002a78ec: + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_160 = (Mat *)&local_120; + local_148 = aMStack_c0; + local_130 = (Mat *)&local_60; + cv::mulSpectrums((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138, + param_4 & 4,(bool)((byte)(param_4 >> 3) & 1)); + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + /* catch() { ... } // from try @ 002a79dc with catch @ 002a7980 + catch() { ... } // from try @ 002a7a38 with catch @ 002a7980 + catch() { ... } // from try @ 002a7abc with catch @ 002a7980 */ + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + /* catch() { ... } // from try @ 002a7b10 with catch @ 002a7ac0 + catch() { ... } // from try @ 002a7b54 with catch @ 002a7ac0 + catch() { ... } // from try @ 002a7e70 with catch @ 002a7ac0 */ + cv::Mat::deallocate(aMStack_c0); + } + } + /* try { // try from 002a79dc to 003a79df has its CatchHandler @ 002a7980 */ + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + /* try { // try from 002a7a30 to 003a7a33 has its CatchHandler @ 002a7aac */ + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + /* try { // try from 002a7a38 to 003a7a6f has its CatchHandler @ 002a7980 */ + iVar11 = *piVar10; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + /* try { // try from 002a7abc to 003a7abf has its CatchHandler @ 002a7980 */ + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar11 = 0; + do { + *local_e0 = 0; + iVar11 = iVar11 + 1; + local_e0 = local_e0 + 1; + } while (iVar11 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + /* catch() { ... } // from try @ 002a7a30 with catch @ 002a7aac */ + return; +} + + +================================================================== + +### FUNC 002a7bec (684 bytes) name=cvDCT + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvDCT(cv *param_1,cv *param_2,uint param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *puVar8; + int *piVar9; + int iVar10; + int *piVar11; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + iVar10 = local_80[-1]; + if (iVar10 == local_20[-1]) { + if (iVar10 == 2) { + /* catch() { ... } // from try @ 002a7e9c with catch @ 002a7e74 + catch() { ... } // from try @ 002a8014 with catch @ 002a7e74 + catch() { ... } // from try @ 002a822c with catch @ 002a7e74 + catch() { ... } // from try @ 002a8284 with catch @ 002a7e74 */ + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002a7e54; + } + else if (iVar10 < 1) { +LAB_002a7e54: + /* catch() { ... } // from try @ 002a7b4c with catch @ 002a7e60 */ + if ((local_c0 & 0xfff) == (local_60 & 0xfff)) goto LAB_002a7cbc; + } + else if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_002a7e54; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_d8,0x30); + uVar7 = s_t_type___0045fdf8._0_8_; + uVar6 = _LAB_0045fdf0; + uVar5 = _LAB_0045fde8; + uVar4 = DAT_0045fde0; + uVar3 = DAT_0045fdd8; + *puVar8 = DAT_0045fdd0; + puVar8[1] = uVar3; + puVar8[2] = uVar4; + puVar8[3] = uVar5; + puVar8[4] = uVar6; + puVar8[5] = uVar7; + cv::error(-0xd7,(String *)&local_d8,"void cvDCT(const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/dxt.cpp",0xf0a); + cv::String::deallocate((String *)&local_d8); +LAB_002a7cbc: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::dct((_InputArray *)local_f0,(_OutputArray *)&local_d8,param_3 & 5); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002a7ef8 (4 bytes) name=cvGetOptimalDFTSize + +void cv::cvGetOptimalDFTSize(int param_1) + +{ + (*(code *)PTR_getOptimalDFTSize_00501280)(param_1); + return; +} + + +================================================================== + +### FUNC 002a7f00 (2544 bytes) name=FUN_002a7f00 + +void FUN_002a7f00(uint param_1,uint param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,char param_7,long param_8,uint param_9,double *param_10,uint param_11 + ,uint param_12,double *param_13,uint param_14,double *param_15) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + long lVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + uint uVar13; + int iVar14; + uint uVar15; + uint uVar16; + int iVar17; + double *pdVar18; + ulong uVar19; + double *pdVar20; + ulong uVar21; + double *pdVar22; + double *pdVar23; + uint uVar24; + double *pdVar25; + long lVar26; + double *pdVar27; + long lVar28; + double *pdVar29; + uint uVar30; + ulong uVar31; + ulong uVar32; + long lVar33; + uint uVar34; + int iVar35; + ulong uVar36; + ulong uVar37; + long lVar38; + uint uVar39; + int iVar40; + double dVar41; + double dVar42; + double dVar43; + double dVar44; + double dVar45; + double dVar46; + double dVar47; + double dVar48; + double *local_e8; + uint local_d4; + + uVar36 = param_6 & 0xffffffff; + uVar37 = 1; + if (param_7 == '\0') { + uVar37 = param_6 & 0xffffffff; + uVar36 = 1; + } + uVar6 = param_1; + if ((int)param_2 < (int)param_1) { + uVar6 = param_2; + } + if (param_10 == (double *)0x0) { + param_12 = param_1; + } + if (0 < (int)param_2) { + /* try { // try from 002a7fa0 to 003a7fa3 has its CatchHandler @ 002a8288 */ + uVar39 = 0; + pdVar25 = param_13; + if ((int)param_12 < 1) { + do { + uVar39 = uVar39 + 1; + } while (uVar39 != param_2); + } + else { + do { + uVar39 = uVar39 + 1; + memset(pdVar25,0,((ulong)(param_12 - 1) + 1) * 8); + pdVar25 = pdVar25 + (int)param_14; + } while (uVar39 != param_2); + } + } + if (0 < (int)uVar6) { + dVar41 = 0.0; + uVar19 = -((param_4 & 0xffffffff) >> 0x1f) & 0xfffffff800000000 | (param_4 & 0xffffffff) << 3; + uVar39 = 0; + pdVar25 = param_3; + do { + uVar39 = uVar39 + 1; + dVar43 = *pdVar25; + pdVar25 = (double *)((long)pdVar25 + uVar19); + dVar41 = dVar41 + dVar43; + /* try { // try from 002a8014 to 003a8037 has its CatchHandler @ 002a7e74 */ + } while (uVar39 != uVar6); + uVar13 = param_12 - 4 >> 2; + uVar39 = uVar13 + 1; + /* try { // try from 002a8040 to 003a8043 has its CatchHandler @ 002a8288 */ + uVar31 = -(ulong)(param_11 >> 0x1f) & 0xfffffff800000000 | (ulong)param_11 << 3; + iVar14 = param_12 - 3; + uVar32 = -(ulong)(param_14 >> 0x1f) & 0xfffffff800000000 | (ulong)param_14 << 3; + uVar11 = uVar39 * 4; + uVar15 = param_12 - 1; + if (iVar14 < 1) { + uVar11 = 0; + } + uVar37 = -(uVar37 >> 0x1f) & 0xfffffff800000000 | uVar37 << 3; + lVar26 = (long)(int)uVar11; + lVar4 = lVar26 + 2; + uVar16 = param_12 - uVar11; + pdVar25 = param_15 + lVar26; + uVar10 = (uint)((ulong)pdVar25 >> 3) & 1; + uVar8 = (uint)((ulong)param_15 >> 3) & 1; + uVar7 = uVar16; + if (uVar10 < uVar16) { + uVar7 = uVar10; + } + uVar10 = param_12; + if ((int)param_12 < 1) { + uVar10 = 1; + } + iVar17 = uVar16 - uVar7; + uVar1 = uVar10; + if (uVar8 < uVar10) { + uVar1 = uVar8; + } + uVar8 = uVar10; + if (3 < uVar10) { + uVar8 = uVar1; + } + uVar1 = ((uVar10 - uVar8) - 2 >> 1) + 1; + dVar41 = dVar41 * DAT_002a88f0; + uVar2 = (iVar17 - 2U >> 1) + 1; + iVar12 = uVar2 * 2; + uVar9 = uVar15; + if ((int)param_12 < 1) { + uVar9 = 0; + } + iVar40 = uVar1 * 2; + local_d4 = 0; + lVar38 = ((ulong)(uVar15 - uVar11) + 1) * 8; + pdVar5 = param_15 + lVar26; + /* try { // try from 002a81bc to 003a81bf has its CatchHandler @ 002a8290 */ + local_e8 = param_5; + do { + if (dVar41 < ABS(*param_3)) { + dVar43 = 1.0 / *param_3; + if (param_12 == 1) { + if (param_10 == (double *)0x0) { + dVar48 = *local_e8; + } + else { + /* try { // try from 002a8804 to 003a8807 has its CatchHandler @ 002a889c */ + dVar48 = 0.0; + if (0 < (int)param_1) { + uVar34 = 0; + pdVar23 = param_10; + pdVar27 = local_e8; + do { + uVar34 = uVar34 + 1; + dVar44 = *pdVar27; + dVar42 = *pdVar23; + pdVar27 = (double *)((long)pdVar27 + uVar37); + pdVar23 = (double *)((long)pdVar23 + uVar31); + dVar48 = dVar48 + dVar42 * dVar44; + } while (uVar34 != param_1); + } + } + if (0 < (int)param_2) { + lVar33 = 0; + pdVar27 = param_13; + do { + lVar28 = lVar33 * 8; + lVar33 = lVar33 + 1; + *pdVar27 = *pdVar27 + *(double *)(param_8 + lVar28) * dVar43 * dVar48; + /* try { // try from 002a8878 to 003a8897 has its CatchHandler @ 002a877c */ + pdVar27 = (double *)((long)pdVar27 + uVar32); + } while ((int)lVar33 < (int)param_2); + } + } + else { + if (param_10 == (double *)0x0) { + if (0 < (int)param_12) { + lVar33 = 0; + /* catch() { ... } // from try @ 002a8804 with catch @ 002a889c */ + pdVar27 = local_e8; + do { + dVar48 = *pdVar27; + pdVar27 = (double *)((long)pdVar27 + uVar37); + param_15[lVar33] = dVar43 * dVar48; + lVar33 = lVar33 + 1; + } while ((int)lVar33 < (int)param_12); + } + } + else if ((int)param_12 < 1) { + /* try { // try from 002a88c0 to 003a88c3 has its CatchHandler @ 002a877c */ + /* catch() { ... } // from try @ 002a8940 with catch @ 002a88c4 + catch() { ... } // from try @ 002a8984 with catch @ 002a88c4 + catch() { ... } // from try @ 002a8a50 with catch @ 002a88c4 + catch() { ... } // from try @ 002a8b2c with catch @ 002a88c4 + catch() { ... } // from try @ 002a8b40 with catch @ 002a88c4 */ + if (0 < (int)param_1) goto LAB_002a8268; + } + else { + /* try { // try from 002a8200 to 003a8203 has its CatchHandler @ 002a8234 */ + /* try { // try from 002a8208 to 003a820b has its CatchHandler @ 002a8290 */ + /* try { // try from 002a8218 to 003a821b has its CatchHandler @ 002a8288 */ + /* try { // try from 002a822c to 003a822f has its CatchHandler @ 002a7e74 */ + memset(param_15,0,((ulong)uVar15 + 1) * 8); + /* catch() { ... } // from try @ 002a8200 with catch @ 002a8234 */ + if (0 < (int)param_1) { +LAB_002a8268: + /* try { // try from 002a8284 to 003a8287 has its CatchHandler @ 002a7e74 */ + /* catch() { ... } // from try @ 002a7ec0 with catch @ 002a8288 + catch() { ... } // from try @ 002a7fa0 with catch @ 002a8288 + catch() { ... } // from try @ 002a8040 with catch @ 002a8288 + catch() { ... } // from try @ 002a8218 with catch @ 002a8288 */ + /* catch() { ... } // from try @ 002a7ef0 with catch @ 002a8290 + catch() { ... } // from try @ 002a81bc with catch @ 002a8290 + catch() { ... } // from try @ 002a8208 with catch @ 002a8290 */ + /* catch() { ... } // from try @ 002a82d4 with catch @ 002a8298 + catch() { ... } // from try @ 002a8340 with catch @ 002a8298 + catch() { ... } // from try @ 002a8358 with catch @ 002a8298 */ + iVar35 = 0; + pdVar23 = local_e8; + pdVar27 = param_10; + do { + dVar48 = *pdVar23; + if (0 < iVar14) { + /* try { // try from 002a82d4 to 003a82ff has its CatchHandler @ 002a8298 */ + if ((param_15 < pdVar27 + 8 && pdVar27 < param_15 + 8) || (uVar39 < 3)) { + /* try { // try from 002a8778 to 003a877b has its CatchHandler @ 002a8588 */ + /* catch() { ... } // from try @ 002a87c8 with catch @ 002a877c + catch() { ... } // from try @ 002a8878 with catch @ 002a877c + catch() { ... } // from try @ 002a88c0 with catch @ 002a877c */ + pdVar22 = param_15; + pdVar29 = pdVar27 + 1; + do { + pdVar20 = pdVar29 + 4; + dVar42 = pdVar29[-1]; + pdVar22[1] = pdVar22[1] + *pdVar29 * dVar48; + *pdVar22 = *pdVar22 + dVar42 * dVar48; + dVar42 = pdVar29[1]; + /* try { // try from 002a87c8 to 003a87cb has its CatchHandler @ 002a877c */ + pdVar22[3] = pdVar22[3] + pdVar29[2] * dVar48; + pdVar22[2] = pdVar22[2] + dVar42 * dVar48; + pdVar22 = pdVar22 + 4; + pdVar29 = pdVar20; + } while (pdVar20 != pdVar27 + (ulong)uVar13 * 4 + 5); + } + else { + pdVar22 = param_15 + 2; + uVar34 = 0; + pdVar20 = param_15; + pdVar29 = pdVar27; + do { + pdVar18 = pdVar29 + 1; + dVar47 = *pdVar29; + uVar34 = uVar34 + 1; + dVar44 = pdVar22[1]; + dVar42 = *pdVar22; + dVar46 = pdVar29[3]; + dVar45 = pdVar29[2]; + pdVar29 = pdVar29 + 4; + pdVar20[1] = pdVar20[1] + dVar48 * *pdVar18; + *pdVar20 = *pdVar20 + dVar48 * dVar47; + pdVar20 = pdVar20 + 4; + pdVar22[1] = dVar44 + dVar48 * dVar46; + *pdVar22 = dVar42 + dVar48 * dVar45; + pdVar22 = pdVar22 + 4; + } while (uVar34 < uVar39); + } + } + /* try { // try from 002a8338 to 003a833b has its CatchHandler @ 002a8348 */ + if ((int)uVar11 < (int)param_12) { + /* try { // try from 002a8340 to 003a8343 has its CatchHandler @ 002a8298 */ + /* catch() { ... } // from try @ 002a8338 with catch @ 002a8348 */ + /* try { // try from 002a8358 to 003a835b has its CatchHandler @ 002a8298 */ + /* catch() { ... } // from try @ 002a83fc with catch @ 002a835c */ + if ((pdVar27 + lVar26 < param_15 + lVar4 && pdVar25 < pdVar27 + lVar4) || + (uVar16 < 7)) { + lVar33 = 0; + do { + *(double *)((long)pdVar25 + lVar33) = + *(double *)((long)pdVar25 + lVar33) + + *(double *)((long)(pdVar27 + lVar26) + lVar33) * dVar48; + lVar33 = lVar33 + 8; + } while (lVar33 != lVar38); + } + else { + uVar34 = uVar11; + if (uVar7 != 0) { + *pdVar5 = *pdVar5 + pdVar27[lVar26] * dVar48; + uVar34 = uVar11 + 1; + } + if (iVar17 != 1) { + uVar24 = 0; + pdVar22 = param_15 + lVar26 + (ulong)uVar7; + pdVar29 = param_15 + (ulong)uVar7 + lVar26; + pdVar20 = pdVar27 + (ulong)uVar7 + lVar26; + do { + dVar44 = *pdVar20; + uVar24 = uVar24 + 1; + /* try { // try from 002a83a8 to 003a83ab has its CatchHandler @ 002a83e4 */ + dVar42 = *pdVar22; + pdVar29[1] = pdVar22[1] + dVar48 * pdVar20[1]; + *pdVar29 = dVar42 + dVar48 * dVar44; + pdVar22 = pdVar22 + 2; + pdVar29 = pdVar29 + 2; + pdVar20 = pdVar20 + 2; + } while (uVar24 < uVar2); + uVar34 = uVar34 + iVar12; + if (iVar17 == iVar12) goto LAB_002a83e0; + } + uVar21 = -(ulong)(uVar34 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar34 << 3; + *(double *)((long)param_15 + uVar21) = + *(double *)((long)param_15 + uVar21) + + *(double *)((long)pdVar27 + uVar21) * dVar48; + } + } +LAB_002a83e0: + iVar35 = iVar35 + 1; + /* catch() { ... } // from try @ 002a83a8 with catch @ 002a83e4 */ + pdVar27 = (double *)((long)pdVar27 + uVar31); + pdVar23 = (double *)((long)pdVar23 + uVar37); + } while (iVar35 < (int)param_1); + /* try { // try from 002a83fc to 003a83ff has its CatchHandler @ 002a835c */ + if ((int)param_12 < 1) goto LAB_002a84dc; + } + if (uVar8 == 0) { + uVar21 = 0; + } + else { + *param_15 = *param_15 * dVar43; + if ((uVar8 == 1) || (param_15[1] = param_15[1] * dVar43, uVar8 == 2)) { + uVar21 = (ulong)uVar8; + } + else { + uVar21 = 3; + param_15[2] = param_15[2] * dVar43; + } + if (uVar8 == uVar10) goto LAB_002a84dc; + } + if (uVar9 != uVar8) { + uVar34 = 0; + pdVar27 = param_15 + uVar8; + pdVar23 = param_15 + uVar8; + do { + dVar48 = *pdVar27; + uVar34 = uVar34 + 1; + pdVar23[1] = dVar43 * pdVar27[1]; + *pdVar23 = dVar43 * dVar48; + pdVar27 = pdVar27 + 2; + pdVar23 = pdVar23 + 2; + } while (uVar34 < uVar1); + uVar21 = (ulong)(uint)((int)uVar21 + iVar40); + if (iVar40 == uVar10 - uVar8) goto LAB_002a84dc; + } + uVar21 = -(uVar21 >> 0x1f) & 0xfffffff800000000 | uVar21 << 3; + *(double *)((long)param_15 + uVar21) = *(double *)((long)param_15 + uVar21) * dVar43; + } +LAB_002a84dc: + if (0 < (int)param_2) { + lVar33 = 0; + pdVar27 = param_13; + do { + dVar43 = *(double *)(param_8 + lVar33 * 8); + if (0 < iVar14) { + if ((param_15 < pdVar27 + 8 && pdVar27 < param_15 + 8) || (uVar39 < 3)) { + pdVar23 = pdVar27; + pdVar22 = param_15 + 1; + do { + pdVar29 = pdVar22 + 4; + /* try { // try from 002a8730 to 003a8733 has its CatchHandler @ 002a8740 */ + /* try { // try from 002a8738 to 003a873b has its CatchHandler @ 002a8588 */ + dVar48 = pdVar22[-1]; + /* catch() { ... } // from try @ 002a8730 with catch @ 002a8740 */ + pdVar23[1] = pdVar23[1] + *pdVar22 * dVar43; + /* try { // try from 002a8750 to 003a8753 has its CatchHandler @ 002a8588 */ + *pdVar23 = *pdVar23 + dVar48 * dVar43; + /* catch() { ... } // from try @ 002a860c with catch @ 002a8754 */ + dVar48 = pdVar22[1]; + pdVar23[3] = pdVar23[3] + pdVar22[2] * dVar43; + pdVar23[2] = pdVar23[2] + dVar48 * dVar43; + pdVar23 = pdVar23 + 4; + pdVar22 = pdVar29; + } while (pdVar29 != param_15 + (ulong)uVar13 * 4 + 5); + } + else { + pdVar23 = pdVar27 + 2; + uVar34 = 0; + pdVar22 = param_15; + pdVar29 = pdVar27; + do { + pdVar20 = pdVar22 + 1; + dVar46 = *pdVar22; + uVar34 = uVar34 + 1; + dVar42 = pdVar23[1]; + dVar48 = *pdVar23; + dVar45 = pdVar22[3]; + dVar44 = pdVar22[2]; + pdVar22 = pdVar22 + 4; + pdVar29[1] = pdVar29[1] + dVar43 * *pdVar20; + *pdVar29 = *pdVar29 + dVar43 * dVar46; + pdVar29 = pdVar29 + 4; + pdVar23[1] = dVar42 + dVar43 * dVar45; + *pdVar23 = dVar48 + dVar43 * dVar44; + pdVar23 = pdVar23 + 4; + } while (uVar34 < uVar39); + } + } + /* catch() { ... } // from try @ 002a85d4 with catch @ 002a8588 + catch() { ... } // from try @ 002a8680 with catch @ 002a8588 + catch() { ... } // from try @ 002a8738 with catch @ 002a8588 + catch() { ... } // from try @ 002a8750 with catch @ 002a8588 + catch() { ... } // from try @ 002a8778 with catch @ 002a8588 */ + if ((int)uVar11 < (int)param_12) { + pdVar23 = pdVar27 + lVar26; + if ((uVar16 < 7) || (pdVar25 < pdVar27 + lVar4 && pdVar23 < param_15 + lVar4)) { + lVar28 = 0; + do { + *(double *)((long)pdVar23 + lVar28) = + *(double *)((long)pdVar23 + lVar28) + + *(double *)((long)pdVar25 + lVar28) * dVar43; + lVar28 = lVar28 + 8; + } while (lVar28 != lVar38); + } + else { + uVar34 = (uint)((ulong)pdVar23 >> 3) & 1; + if (uVar16 < uVar34) { + uVar34 = uVar16; + } + uVar24 = uVar11; + if (uVar34 != 0) { + pdVar27[lVar26] = pdVar27[lVar26] + *pdVar5 * dVar43; + uVar24 = uVar11 + 1; + } + /* try { // try from 002a85d4 to 003a85d7 has its CatchHandler @ 002a8588 */ + uVar3 = ((uVar16 - uVar34) - 2 >> 1) + 1; + uVar30 = 0; + iVar35 = uVar3 * 2; + pdVar23 = param_15 + (ulong)uVar34 + lVar26; + pdVar22 = pdVar27 + (ulong)uVar34 + lVar26; + pdVar29 = pdVar27 + (ulong)uVar34 + lVar26; + do { + /* try { // try from 002a860c to 003a860f has its CatchHandler @ 002a8754 */ + dVar42 = *pdVar23; + uVar30 = uVar30 + 1; + dVar48 = *pdVar22; + pdVar29[1] = pdVar22[1] + dVar43 * pdVar23[1]; + *pdVar29 = dVar48 + dVar43 * dVar42; + pdVar23 = pdVar23 + 2; + pdVar22 = pdVar22 + 2; + pdVar29 = pdVar29 + 2; + } while (uVar30 < uVar3); + uVar24 = iVar35 + uVar24; + if (iVar35 != uVar16 - uVar34) { + uVar21 = -(ulong)(uVar24 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar24 << 3; + *(double *)((long)pdVar27 + uVar21) = + *(double *)((long)pdVar27 + uVar21) + + *(double *)((long)param_15 + uVar21) * dVar43; + } + } + } + lVar33 = lVar33 + 1; + pdVar27 = (double *)((long)pdVar27 + uVar32); + } while ((int)lVar33 < (int)param_2); + } + } + } + /* try { // try from 002a8680 to 003a86ef has its CatchHandler @ 002a8588 */ + local_e8 = (double *)((long)local_e8 + (-(uVar36 >> 0x1f) & 0xfffffff800000000 | uVar36 << 3)) + ; + local_d4 = local_d4 + 1; + param_8 = param_8 + (-(ulong)(param_9 >> 0x1f) & 0xfffffff800000000 | (ulong)param_9 << 3); + param_3 = (double *)((long)param_3 + uVar19); + } while (local_d4 != uVar6); + } + return; +} + + +================================================================== + +### FUNC 002a88f8 (3220 bytes) name=FUN_002a88f8 + +void FUN_002a88f8(uint param_1,uint param_2,float *param_3,ulong param_4,float *param_5,uint param_6 + ,char param_7,long param_8,uint param_9,float *param_10,uint param_11,uint param_12 + ,float *param_13,uint param_14,double *param_15) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + double *pdVar8; + double *pdVar9; + double *pdVar10; + double *pdVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + float fVar16; + int iVar17; + int iVar18; + int iVar19; + uint uVar20; + uint uVar21; + uint uVar22; + long lVar23; + double *pdVar24; + undefined1 auVar25 [16]; + long lVar26; + long lVar27; + undefined8 uVar28; + undefined8 uVar29; + undefined1 auVar30 [16]; + uint uVar31; + uint uVar32; + ulong uVar33; + double *pdVar34; + float *pfVar35; + double *pdVar36; + float *pfVar37; + int iVar38; + int iVar39; + long lVar40; + float *pfVar41; + ulong uVar42; + ulong uVar43; + ulong uVar44; + long lVar45; + ulong uVar46; + long lVar47; + uint uVar48; + uint uVar49; + float fVar50; + int iVar51; + int iVar52; + float fVar53; + double dVar54; + double dVar55; + double dVar56; + double dVar57; + double dVar58; + float *local_118; + uint local_110; + uint local_88; + + /* try { // try from 002a8940 to 003a8943 has its CatchHandler @ 002a88c4 */ + local_88 = 1; + uVar31 = param_6; + if (param_7 == '\0') { + uVar31 = 1; + local_88 = param_6; + } + uVar12 = param_1; + if ((int)param_2 < (int)param_1) { + uVar12 = param_2; + } + /* try { // try from 002a897c to 003a897f has its CatchHandler @ 002a8b30 */ + if (param_10 == (float *)0x0) { + param_12 = param_1; + } + /* try { // try from 002a8984 to 003a89ef has its CatchHandler @ 002a88c4 */ + if (0 < (int)param_2) { + uVar49 = 0; + pfVar37 = param_13; + if ((int)param_12 < 1) { + do { + if (uVar49 + 1 == param_2) break; + uVar49 = uVar49 + 2; + } while (uVar49 != param_2); + } + else { + do { + uVar49 = uVar49 + 1; + memset(pfVar37,0,((ulong)(param_12 - 1) + 1) * 4); + pfVar37 = pfVar37 + (int)param_14; + } while (uVar49 != param_2); + } + } + if (0 < (int)uVar12) { + dVar57 = 0.0; + uVar33 = -((param_4 & 0xffffffff) >> 0x1f) & 0xfffffffc00000000 | (param_4 & 0xffffffff) << 2; + uVar49 = 0; + pfVar37 = param_3; + do { + fVar50 = *pfVar37; + uVar49 = uVar49 + 1; + pfVar37 = (float *)((long)pfVar37 + uVar33); + dVar57 = dVar57 + (double)fVar50; + } while (uVar49 != uVar12); + uVar6 = (uint)((ulong)param_15 >> 3) & 1; + iVar19 = param_12 - 3; + lVar40 = (long)(int)local_88; + uVar49 = uVar6; + if (param_12 < uVar6) { + uVar49 = param_12; + } + uVar1 = (param_12 - 4 >> 2) + 1; + iVar17 = uVar1 * 4; + if (param_12 < 7) { + uVar49 = param_12; + } + /* try { // try from 002a8a48 to 003a8a4b has its CatchHandler @ 002a8b1c */ + /* try { // try from 002a8a50 to 003a8a53 has its CatchHandler @ 002a88c4 */ + if (iVar19 < 1) { + iVar17 = 0; + } + lVar26 = NEON_shl(lVar40,2); + uVar21 = param_12 - iVar17; + iVar2 = iVar17 + 1; + lVar27 = NEON_shl(lVar40,3); + uVar3 = ((param_12 - uVar49) - 4 >> 2) + 1; + uVar20 = param_12 - 1; + uVar46 = (ulong)uVar20; + lVar45 = (long)iVar17; + iVar4 = iVar17 + 2; + pdVar8 = param_15 + lVar45; + iVar5 = iVar17 + 3; + uVar13 = (uint)((ulong)pdVar8 >> 3) & 1; + if (uVar21 < uVar13) { + uVar13 = uVar21; + } + uVar15 = param_12; + if ((int)param_12 < 1) { + uVar15 = 1; + } + if (uVar15 < uVar6) { + uVar6 = uVar15; + } + uVar14 = uVar15; + if (3 < uVar15) { + uVar14 = uVar6; + } + /* catch() { ... } // from try @ 002a8a48 with catch @ 002a8b1c */ + /* try { // try from 002a8b2c to 003a8b2f has its CatchHandler @ 002a88c4 */ + /* catch() { ... } // from try @ 002a897c with catch @ 002a8b30 */ + dVar57 = dVar57 * DAT_002a9590; + /* try { // try from 002a8b40 to 003a8b43 has its CatchHandler @ 002a88c4 */ + /* catch() { ... } // from try @ 002a8b90 with catch @ 002a8b44 + catch() { ... } // from try @ 002a8bd8 with catch @ 002a8b44 + catch() { ... } // from try @ 002a8c64 with catch @ 002a8b44 + catch() { ... } // from try @ 002a8c88 with catch @ 002a8b44 + catch() { ... } // from try @ 002a8c9c with catch @ 002a8b44 */ + uVar42 = -(ulong)(param_11 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_11 << 2; + uVar43 = -(ulong)(param_14 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_14 << 2; + /* try { // try from 002a8b90 to 003a8b93 has its CatchHandler @ 002a8b44 */ + iVar51 = uVar3 * 4; + uVar22 = uVar20 - uVar49; + uVar6 = ((uVar15 - uVar14) - 2 >> 1) + 1; + if ((int)param_12 < 1) { + uVar20 = 0; + } + /* try { // try from 002a8bd0 to 003a8bd3 has its CatchHandler @ 002a8c8c */ + /* try { // try from 002a8bd8 to 003a8c13 has its CatchHandler @ 002a8b44 */ + iVar52 = uVar6 * 2; + pdVar9 = param_15 + iVar2; + pdVar10 = param_15 + iVar4; + pdVar11 = param_15 + iVar5; + local_110 = 0; + local_118 = param_5; + do { + if (dVar57 < ABS((double)*param_3)) { + /* try { // try from 002a8c5c to 003a8c5f has its CatchHandler @ 002a8c78 */ + dVar58 = 1.0 / (double)*param_3; + /* try { // try from 002a8c64 to 003a8c67 has its CatchHandler @ 002a8b44 */ + if (param_12 == 1) { + if (param_10 == (float *)0x0) { + dVar54 = (double)*local_118; + } + else { + dVar54 = 0.0; + if (0 < (int)param_1) { + uVar32 = 0; + pfVar41 = param_10; + pfVar37 = local_118; + do { + fVar50 = *pfVar37; + uVar32 = uVar32 + 1; + fVar53 = *pfVar41; + pfVar37 = (float *)((long)pfVar37 + lVar26); + pfVar41 = (float *)((long)pfVar41 + uVar42); + dVar54 = dVar54 + (double)(fVar50 * fVar53); + } while (uVar32 != param_1); + } + } + if (0 < (int)param_2) { + lVar47 = 0; + pfVar37 = param_13; + do { + lVar23 = lVar47 * 4; + lVar47 = lVar47 + 1; + *pfVar37 = (float)((double)*pfVar37 + + (double)*(float *)(param_8 + lVar23) * dVar58 * dVar54); + pfVar37 = (float *)((long)pfVar37 + uVar43); + } while ((int)lVar47 < (int)param_2); + } + } + else { + if (param_10 == (float *)0x0) { + if (0 < (int)param_12) { + if (uVar49 == 0) { + uVar44 = 0; + } + else { + *param_15 = dVar58 * (double)*local_118; + if ((((uVar49 == 1) || + (param_15[1] = dVar58 * (double)local_118[lVar40], uVar49 == 2)) || + (param_15[2] = dVar58 * (double)local_118[(int)(local_88 * 2)], uVar49 == 3)) || + (param_15[3] = dVar58 * (double)local_118[(int)(local_88 * 3)], uVar49 == 4)) { + uVar44 = (ulong)uVar49; + } + else { + param_15[4] = dVar58 * (double)local_118[(int)(local_88 * 4)]; + if (uVar49 == 5) { + uVar44 = 5; + } + else { + uVar44 = 6; + param_15[5] = dVar58 * (double)local_118[(int)(local_88 * 5)]; + } + } + if (uVar49 == param_12) goto LAB_002a8fd8; + } + if (2 < uVar22) { + pfVar37 = (float *)((long)local_118 + lVar26 * (ulong)uVar49); + uVar32 = 0; + pdVar36 = param_15 + uVar49; + do { + fVar50 = *pfVar37; + uVar32 = uVar32 + 1; + pfVar41 = (float *)((long)pfVar37 + lVar26); + fVar53 = *(float *)((long)pfVar37 + lVar27); + fVar16 = *(float *)((long)pfVar37 + lVar27 + lVar26); + pfVar37 = pfVar37 + (long)(int)local_88 * 4; + pdVar36[1] = dVar58 * (double)*pfVar41; + *pdVar36 = dVar58 * (double)fVar50; + pdVar36[3] = dVar58 * (double)fVar16; + pdVar36[2] = dVar58 * (double)fVar53; + pdVar36 = pdVar36 + 4; + } while (uVar32 < uVar3); + uVar44 = (ulong)(uint)((int)uVar44 + iVar51); + if (iVar51 == param_12 - uVar49) goto LAB_002a8fd8; + } + iVar39 = (int)uVar44; + uVar44 = -(uVar44 >> 0x1f) & 0xfffffff800000000 | uVar44 << 3; + *(double *)((long)param_15 + uVar44) = + dVar58 * (double)local_118[(int)(local_88 * iVar39)]; + if (iVar39 + 1 < (int)param_12) { + iVar38 = local_88 * iVar39 + local_88; + *(double *)((long)param_15 + uVar44 + 8) = dVar58 * (double)local_118[iVar38]; + if (iVar39 + 2 < (int)param_12) { + *(double *)((long)param_15 + uVar44 + 0x10) = + dVar58 * (double)local_118[(int)(local_88 + iVar38)]; + } + } + } + } + else { + if ((int)param_12 < 1) { + if ((int)param_1 < 1) goto LAB_002a8fd8; +LAB_002a8cc8: + iVar39 = 0; + pfVar41 = local_118; + pfVar37 = param_10; + do { + fVar50 = *pfVar41; + if (0 < iVar19) { + pdVar36 = param_15 + 2; + uVar32 = 0; + pdVar34 = param_15; + pfVar35 = pfVar37; + do { + uVar29 = *(undefined8 *)(pfVar35 + 2); + uVar28 = *(undefined8 *)pfVar35; + uVar32 = uVar32 + 1; + dVar55 = pdVar36[1]; + dVar54 = *pdVar36; + pdVar34[1] = pdVar34[1] + (double)(fVar50 * (float)((ulong)uVar28 >> 0x20)); + *pdVar34 = *pdVar34 + (double)(fVar50 * (float)uVar28); + pdVar34 = pdVar34 + 4; + pdVar36[1] = dVar55 + (double)(fVar50 * (float)((ulong)uVar29 >> 0x20)); + *pdVar36 = dVar54 + (double)(fVar50 * (float)uVar29); + pdVar36 = pdVar36 + 4; + pfVar35 = pfVar35 + 4; + } while (uVar32 < uVar1); + } + if (iVar17 < (int)param_12) { + uVar32 = uVar13; + if (uVar21 < 5) { + uVar32 = uVar21; + } + iVar38 = iVar17; + if (uVar32 != 0) { + *pdVar8 = *pdVar8 + (double)(fVar50 * pfVar37[lVar45]); + iVar38 = iVar2; + if (((uVar32 != 1) && + (*pdVar9 = *pdVar9 + (double)(fVar50 * pfVar37[iVar2]), iVar38 = iVar4, + uVar32 != 2)) && + (*pdVar10 = *pdVar10 + (double)(fVar50 * pfVar37[iVar4]), iVar38 = iVar5, + uVar32 == 4)) { + *pdVar11 = *pdVar11 + (double)(fVar50 * pfVar37[iVar5]); + iVar38 = iVar17 + 4; + } + if (uVar32 == uVar21) goto LAB_002a8ef8; + } + uVar7 = ((uVar21 - uVar32) - 4 >> 2) + 1; + iVar18 = uVar7 * 4; + if (2 < (uVar21 - 1) - uVar32) { + uVar48 = 0; + pdVar36 = param_15 + (ulong)uVar32 + lVar45; + pfVar35 = pfVar37 + (ulong)uVar32 + lVar45; + pdVar34 = pdVar36; + do { + uVar29 = *(undefined8 *)(pfVar35 + 2); + uVar28 = *(undefined8 *)pfVar35; + pdVar24 = pdVar36 + 1; + dVar54 = *pdVar36; + dVar56 = pdVar36[3]; + dVar55 = pdVar36[2]; + uVar48 = uVar48 + 1; + pdVar36 = pdVar36 + 4; + pdVar34[1] = *pdVar24 + (double)(fVar50 * (float)((ulong)uVar28 >> 0x20)); + *pdVar34 = dVar54 + (double)(fVar50 * (float)uVar28); + pdVar34[3] = (double)(fVar50 * (float)((ulong)uVar29 >> 0x20)) + dVar56; + pdVar34[2] = (double)(fVar50 * (float)uVar29) + dVar55; + pfVar35 = pfVar35 + 4; + pdVar34 = pdVar34 + 4; + } while (uVar48 < uVar7); + iVar38 = iVar38 + iVar18; + if (iVar18 == uVar21 - uVar32) goto LAB_002a8ef8; + } + iVar18 = iVar38 + 1; + param_15[iVar38] = param_15[iVar38] + (double)(fVar50 * pfVar37[iVar38]); + if (iVar18 < (int)param_12) { + iVar38 = iVar38 + 2; + param_15[iVar18] = param_15[iVar18] + (double)(fVar50 * pfVar37[iVar18]); + if (iVar38 < (int)param_12) { + param_15[iVar38] = param_15[iVar38] + (double)(fVar50 * pfVar37[iVar38]); + } + } + } +LAB_002a8ef8: + iVar39 = iVar39 + 1; + pfVar37 = (float *)((long)pfVar37 + uVar42); + pfVar41 = (float *)((long)pfVar41 + lVar26); + } while (iVar39 < (int)param_1); + if ((int)param_12 < 1) goto LAB_002a8fd8; + } + else { + /* catch() { ... } // from try @ 002a8c5c with catch @ 002a8c78 */ + /* try { // try from 002a8c88 to 003a8c8b has its CatchHandler @ 002a8b44 */ + /* catch() { ... } // from try @ 002a8bd0 with catch @ 002a8c8c */ + /* try { // try from 002a8c9c to 003a8c9f has its CatchHandler @ 002a8b44 */ + memset(param_15,0,(uVar46 + 1) * 8); + if (0 < (int)param_1) goto LAB_002a8cc8; + } + if (uVar14 == 0) { + uVar44 = 0; + } + else { + *param_15 = *param_15 * dVar58; + if ((uVar14 == 1) || (param_15[1] = param_15[1] * dVar58, uVar14 == 2)) { + uVar44 = (ulong)uVar14; + } + else { + uVar44 = 3; + param_15[2] = param_15[2] * dVar58; + } + if (uVar15 == uVar14) goto LAB_002a8fd8; + } + if (uVar20 != uVar14) { + uVar32 = 0; + pdVar36 = param_15 + uVar14; + pdVar34 = param_15 + uVar14; + do { + dVar54 = *pdVar36; + uVar32 = uVar32 + 1; + pdVar34[1] = dVar58 * pdVar36[1]; + *pdVar34 = dVar58 * dVar54; + pdVar36 = pdVar36 + 2; + pdVar34 = pdVar34 + 2; + } while (uVar32 < uVar6); + uVar44 = (ulong)(uint)((int)uVar44 + iVar52); + if (iVar52 == uVar15 - uVar14) goto LAB_002a8fd8; + } + uVar44 = -(uVar44 >> 0x1f) & 0xfffffff800000000 | uVar44 << 3; + *(double *)((long)param_15 + uVar44) = *(double *)((long)param_15 + uVar44) * dVar58; + } +LAB_002a8fd8: + lVar47 = 0; + pfVar37 = param_13; + if (0 < (int)param_2) { + do { + fVar50 = *(float *)(param_8 + lVar47 * 4); + if (0 < iVar19) { + dVar58 = (double)fVar50; + uVar32 = 0; + pdVar36 = param_15; + pfVar41 = pfVar37; + do { + uVar32 = uVar32 + 1; + dVar54 = (double)(float)*(undefined8 *)pfVar41 + *pdVar36 * dVar58; + dVar55 = (double)(float)((ulong)*(undefined8 *)pfVar41 >> 0x20) + + pdVar36[1] * dVar58; + auVar25._8_4_ = SUB84(dVar55,0); + auVar25._0_8_ = dVar54; + auVar25._12_4_ = (int)((ulong)dVar55 >> 0x20); + *(ulong *)(pfVar41 + 2) = + CONCAT44((float)((double)(float)((ulong)*(undefined8 *)(pfVar41 + 2) >> 0x20) + + pdVar36[3] * dVar58), + (float)((double)(float)*(undefined8 *)(pfVar41 + 2) + + pdVar36[2] * dVar58)); + *(ulong *)pfVar41 = CONCAT44((float)auVar25._8_8_,(float)dVar54); + pdVar36 = pdVar36 + 4; + pfVar41 = pfVar41 + 4; + } while (uVar32 < uVar1); + } + if (iVar17 < (int)param_12) { + uVar32 = -((uint)((ulong)pfVar37 >> 2) & 3) & 3; + uVar44 = (ulong)uVar21; + if (uVar32 < uVar21) { + uVar44 = (ulong)uVar32; + } + if (uVar21 < 5) { + uVar44 = (ulong)uVar21; + } + dVar58 = (double)fVar50; + uVar32 = (uint)uVar44; + iVar39 = iVar17; + if (uVar32 != 0) { + pfVar37[lVar45] = (float)((double)pfVar37[lVar45] + dVar58 * *pdVar8); + iVar39 = iVar2; + if (((uVar32 != 1) && + (pfVar37[iVar2] = (float)((double)pfVar37[iVar2] + dVar58 * *pdVar9), + iVar39 = iVar4, uVar32 != 2)) && + (pfVar37[iVar4] = (float)((double)pfVar37[iVar4] + dVar58 * *pdVar10), + iVar39 = iVar5, uVar32 == 4)) { + pfVar37[iVar5] = (float)((double)pfVar37[iVar5] + dVar58 * *pdVar11); + iVar39 = iVar17 + 4; + } + if (uVar21 == uVar32) goto LAB_002a91f8; + } + uVar7 = ((uVar21 - uVar32) - 4 >> 2) + 1; + iVar38 = uVar7 * 4; + if (2 < (uVar21 - 1) - uVar32) { + uVar48 = 0; + pdVar36 = param_15 + lVar45 + uVar44; + pfVar41 = pfVar37 + lVar45 + uVar44; + pfVar35 = pfVar37 + lVar45 + uVar44; + do { + uVar48 = uVar48 + 1; + dVar54 = (double)(float)*(undefined8 *)pfVar41 + *pdVar36 * dVar58; + dVar55 = (double)(float)((ulong)*(undefined8 *)pfVar41 >> 0x20) + + pdVar36[1] * dVar58; + auVar30._8_4_ = SUB84(dVar55,0); + auVar30._0_8_ = dVar54; + auVar30._12_4_ = (int)((ulong)dVar55 >> 0x20); + *(ulong *)(pfVar35 + 2) = + CONCAT44((float)((double)(float)((ulong)*(undefined8 *)(pfVar41 + 2) >> + 0x20) + pdVar36[3] * dVar58), + (float)((double)(float)*(undefined8 *)(pfVar41 + 2) + + pdVar36[2] * dVar58)); + *(ulong *)pfVar35 = CONCAT44((float)auVar30._8_8_,(float)dVar54); + pdVar36 = pdVar36 + 4; + pfVar41 = pfVar41 + 4; + pfVar35 = pfVar35 + 4; + } while (uVar48 < uVar7); + iVar39 = iVar39 + iVar38; + if (iVar38 == uVar21 - uVar32) goto LAB_002a91f8; + } + iVar38 = iVar39 + 1; + pfVar37[iVar39] = (float)((double)pfVar37[iVar39] + dVar58 * param_15[iVar39]); + if (iVar38 < (int)param_12) { + iVar39 = iVar39 + 2; + pfVar37[iVar38] = (float)((double)pfVar37[iVar38] + dVar58 * param_15[iVar38]); + if (iVar39 < (int)param_12) { + pfVar37[iVar39] = (float)((double)pfVar37[iVar39] + dVar58 * param_15[iVar39]); + } + } + } +LAB_002a91f8: + lVar47 = lVar47 + 1; + pfVar37 = (float *)((long)pfVar37 + uVar43); + } while ((int)lVar47 < (int)param_2); + } + } + } + local_118 = (float *)((long)local_118 + + (-(ulong)(uVar31 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar31 << 2)); + local_110 = local_110 + 1; + param_8 = param_8 + (-(ulong)(param_9 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_9 << 2); + param_3 = (float *)((long)param_3 + uVar33); + } while (local_110 != uVar12); + } + return; +} + + +================================================================== + +### FUNC 002a9598 (436 bytes) name=~SVD + +/* cv::SVD::~SVD() */ + +void __thiscall cv::SVD::~SVD(SVD *this) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined4 *puVar4; + int iVar5; + + if (*(long *)(this + 0xf8) != 0) { + piVar1 = (int *)(*(long *)(this + 0xf8) + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)(this + 0xc0)); + } + } + *(undefined8 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0xd0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xd8) = 0; + if (0 < *(int *)(this + 0xc4)) { + iVar5 = 0; + puVar4 = *(undefined4 **)(this + 0x100); + do { + *puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = puVar4 + 1; + } while (iVar5 < *(int *)(this + 0xc4)); + } + if (*(SVD **)(this + 0x108) != this + 0x110) { + fastFree(*(SVD **)(this + 0x108)); + } + if (*(long *)(this + 0x98) != 0) { + piVar1 = (int *)(*(long *)(this + 0x98) + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)(this + 0x60)); + } + } + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x78) = 0; + if (0 < *(int *)(this + 100)) { + iVar5 = 0; + puVar4 = *(undefined4 **)(this + 0xa0); + do { + *puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = puVar4 + 1; + } while (iVar5 < *(int *)(this + 100)); + } + if (*(SVD **)(this + 0xa8) != this + 0xb0) { + fastFree(*(SVD **)(this + 0xa8)); + } + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (0 < *(int *)(this + 4)) { + iVar5 = 0; + puVar4 = *(undefined4 **)(this + 0x40); + do { + *puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = puVar4 + 1; + } while (iVar5 < *(int *)(this + 4)); + } + if (*(SVD **)(this + 0x48) != this + 0x50) { + fastFree(*(SVD **)(this + 0x48)); + return; + } + return; +} + + +================================================================== + +### FUNC 002a979c (4 bytes) name=LU + +/* cv::LU(float*, unsigned long, int, float*, unsigned long, int) */ + +int cv::LU(float *param_1,ulong param_2,int param_3,float *param_4,ulong param_5,int param_6) + +{ + long lVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + ulong uVar5; + float fVar6; + ulong uVar7; + float *pfVar8; + ulong uVar9; + float *pfVar10; + long lVar11; + float *pfVar12; + float *pfVar13; + long lVar14; + long lVar15; + long lVar16; + long lVar17; + float *pfVar18; + long lVar19; + int iVar20; + long lVar21; + long lVar22; + uint uVar23; + long lVar24; + ulong uVar25; + uint uVar26; + float *pfVar27; + long lVar28; + long lVar29; + long lVar30; + uint uVar31; + int iVar32; + uint uVar33; + long lVar34; + long lVar35; + float *pfVar36; + uint uVar37; + float fVar38; + float fVar39; + undefined8 uVar40; + undefined8 uVar41; + float fVar42; + undefined8 uVar43; + int iVar44; + float fVar45; + int iVar46; + int iVar47; + float fVar48; + float *pfVar49; + long lVar50; + long lVar51; + float *pfVar52; + long lVar53; + uint uVar54; + long lStack_30; + long lStack_28; + int iStack_14; + + fVar39 = DAT_003cc7fc; + uVar9 = param_5 >> 2; + uVar7 = param_2 >> 2; + if (param_3 < 1) { + iStack_14 = 1; + if (param_4 != (float *)0x0) { +LAB_003cc5f4: + uVar54 = param_3 - 1; + if (-1 < (int)uVar54) { + lVar29 = (long)(int)uVar54; + lVar30 = uVar7 + 1; + lVar50 = lVar29 * lVar30 + 1; + pfVar8 = (float *)((long)param_4 + lVar29 * uVar9 * 4); + pfVar49 = (float *)((long)param_1 + lVar30 * 4 * lVar29); + pfVar52 = param_1 + lVar50; + uVar25 = 0xffffffff; + do { + if (0 < param_6) { + pfVar13 = pfVar8; + do { + fVar39 = *pfVar13; + pfVar12 = pfVar52; + pfVar27 = pfVar13; + if ((int)(uVar54 - (int)uVar25) < param_3) { + do { + pfVar10 = pfVar12 + 1; + fVar39 = fVar39 - pfVar27[uVar9] * *pfVar12; + pfVar12 = pfVar10; + pfVar27 = pfVar27 + uVar9; + } while (pfVar10 != param_1 + lVar50 + 1 + uVar25); + } + pfVar27 = pfVar13 + 1; + *pfVar13 = fVar39 * *pfVar49; + pfVar13 = pfVar27; + } while (pfVar27 != pfVar8 + (ulong)(param_6 - 1) + 1); + } + uVar23 = (int)uVar25 + 1; + uVar25 = (ulong)uVar23; + pfVar49 = pfVar49 + -lVar30; + pfVar8 = pfVar8 + -uVar9; + pfVar52 = pfVar52 + ~uVar7; + lVar50 = lVar50 + ~uVar7; + } while (uVar23 != uVar54); + } + } + } + else { + uVar54 = param_3 - 2; + lVar50 = 0; + uVar23 = param_3 - 1; + lVar51 = NEON_shl(uVar7 + 1,2); + iVar20 = 0; + lStack_28 = 0; + lStack_30 = 0; + lVar29 = 0; + lVar30 = 0; + lVar34 = 0; + lVar24 = lVar51 + -4; + pfVar52 = (float *)((long)param_1 + lVar51); + iStack_14 = 1; + iVar46 = 1; + pfVar8 = param_4; + pfVar49 = param_1; + lVar53 = lVar24; + if (param_3 < 2) goto LAB_003cc5bc; +LAB_003cbd00: + fVar45 = *(float *)((long)param_1 + lStack_28); + lVar1 = lVar34 + 1; + lVar15 = lVar29 + uVar7; + lVar14 = lVar1; + fVar48 = fVar45; + iVar32 = iVar46; + iVar47 = iVar20; + do { + lVar21 = lVar34 + lVar15; + fVar38 = ABS(fVar48); + fVar42 = ABS(param_1[lVar21]); + lVar35 = lVar15; + lVar16 = lVar14; + iVar44 = iVar32; + if (fVar42 <= fVar38) { + lVar35 = (long)iVar47 * uVar7; + lVar16 = (long)iVar47; + iVar44 = iVar47; + } + iVar47 = iVar44; + iVar32 = iVar32 + 1; + lVar14 = lVar14 + 1; + lVar15 = lVar15 + uVar7; + fVar6 = param_1[lVar21]; + if (fVar42 <= fVar38) { + fVar42 = fVar38; + fVar6 = fVar48; + } + fVar48 = fVar6; + } while (iVar32 != param_3); + if (fVar39 <= fVar42) { + if (iVar20 != iVar47) { + iVar32 = (int)lVar34; + if (iVar32 < param_3) { + lVar15 = lVar35 + lVar34; + uVar26 = param_3 - iVar32; + if ((lStack_28 < (lVar34 + 4 + lVar35) * 4 && lVar15 * 4 < lStack_28 + 0x10) || + (uVar26 < 9)) { + pfVar13 = (float *)((long)param_1 + lStack_28); + do { + fVar48 = *pfVar13; + *pfVar13 = pfVar13[lVar35 - lVar29]; + pfVar13[lVar35 - lVar29] = fVar48; + pfVar13 = pfVar13 + 1; + } while (pfVar13 != param_1 + lVar50 + 1 + (ulong)uVar23); + } + else { + uVar25 = (long)param_1 + lStack_28; + uVar33 = -((uint)(uVar25 >> 2) & 3) & 3; + if (uVar26 < uVar33) { + uVar33 = uVar26; + } + uVar5 = (ulong)uVar33; + if (uVar33 != 0) { + *(float *)((long)param_1 + lStack_28) = param_1[lVar15]; + param_1[lVar15] = fVar45; + iVar20 = iVar46; + if (uVar33 != 1) { + fVar48 = *(float *)(uVar25 + 4); + *(float *)(uVar25 + 4) = param_1[lVar35 + lVar1]; + param_1[lVar35 + lVar1] = fVar48; + iVar20 = iVar32 + 2; + if (uVar33 == 3) { + lVar14 = lVar35 + lVar34 + 2; + fVar48 = *(float *)(uVar25 + 8); + *(float *)(uVar25 + 8) = param_1[lVar14]; + param_1[lVar14] = fVar48; + iVar20 = iVar32 + 3; + } + } + } + lVar14 = 0; + uVar37 = ((uVar26 - uVar33) - 4 >> 2) + 1; + uVar31 = 0; + iVar32 = uVar37 * 4; + do { + puVar2 = (undefined8 *)((long)param_1 + lVar14 + (lVar34 + uVar5 + lVar35) * 4); + puVar3 = (undefined8 *)((long)param_1 + lVar14 + (uVar5 + lVar50) * 4); + uVar31 = uVar31 + 1; + uVar43 = *puVar2; + puVar4 = (undefined8 *)((long)param_1 + lVar14 + (lVar15 + uVar5) * 4); + uVar41 = puVar3[1]; + uVar40 = *puVar3; + lVar14 = lVar14 + 0x10; + puVar3[1] = puVar2[1]; + *puVar3 = uVar43; + puVar4[1] = uVar41; + *puVar4 = uVar40; + } while (uVar31 < uVar37); + iVar20 = iVar20 + iVar32; + if (uVar26 - uVar33 != iVar32) { + iVar32 = iVar20 + 1; + lVar15 = iVar20 + lVar35; + lVar14 = lVar29 + iVar20; + fVar48 = param_1[lVar14]; + param_1[lVar14] = param_1[lVar15]; + param_1[lVar15] = fVar48; + if (iVar32 < param_3) { + iVar20 = iVar20 + 2; + lVar15 = iVar32 + lVar35; + lVar14 = lVar29 + iVar32; + fVar48 = param_1[lVar14]; + param_1[lVar14] = param_1[lVar15]; + param_1[lVar15] = fVar48; + if (iVar20 < param_3) { + lVar35 = iVar20 + lVar35; + lVar15 = lVar29 + iVar20; + fVar48 = param_1[lVar15]; + param_1[lVar15] = param_1[lVar35]; + param_1[lVar35] = fVar48; + } + } + } + } + } + if ((param_4 != (float *)0x0) && (0 < param_6)) { + lVar16 = lVar16 * uVar9; + lVar15 = lVar16 + 4; + lVar14 = lVar15 * 4; + if (((lVar14 - lStack_30 == 0 || lVar14 < lStack_30) || lStack_30 + 0x10 <= lVar14 + -0x10 + ) && (8 < (uint)param_6)) { + uVar26 = -((uint)((ulong)pfVar8 >> 2) & 3) & 3; + uVar33 = param_6; + if (uVar26 < (uint)param_6) { + uVar33 = uVar26; + } + uVar26 = uVar33; + if (uVar33 != 0) { + fVar48 = *pfVar8; + *pfVar8 = param_4[lVar16]; + param_4[lVar16] = fVar48; + if (uVar33 != 1) { + fVar48 = pfVar8[1]; + pfVar8[1] = param_4[lVar16 + 1]; + param_4[lVar16 + 1] = fVar48; + if (uVar33 == 3) { + fVar48 = pfVar8[2]; + pfVar8[2] = param_4[lVar16 + 2]; + param_4[lVar16 + 2] = fVar48; + } + else { + uVar26 = 2; + } + } + } + lVar15 = 0; + uVar37 = ((param_6 - uVar33) - 4 >> 2) + 1; + uVar31 = 0; + iVar20 = uVar37 * 4; + do { + puVar2 = (undefined8 *)((long)param_4 + lVar15 + (lVar16 + (ulong)uVar33) * 4); + puVar3 = (undefined8 *)((long)param_4 + lVar15 + (lVar30 + (ulong)uVar33) * 4); + uVar31 = uVar31 + 1; + lVar15 = lVar15 + 0x10; + uVar43 = *puVar2; + uVar41 = puVar3[1]; + uVar40 = *puVar3; + puVar3[1] = puVar2[1]; + *puVar3 = uVar43; + puVar2[1] = uVar41; + *puVar2 = uVar40; + } while (uVar31 < uVar37); + iVar32 = uVar26 + iVar20; + if (param_6 - uVar33 != iVar20) { + iVar20 = iVar32 + 1; + lVar15 = iVar32 + lVar16; + lVar14 = lVar30 + iVar32; + fVar48 = param_4[lVar14]; + param_4[lVar14] = param_4[lVar15]; + param_4[lVar15] = fVar48; + if (iVar20 < param_6) { + iVar32 = iVar32 + 2; + lVar15 = iVar20 + lVar16; + lVar14 = lVar30 + iVar20; + fVar48 = param_4[lVar14]; + param_4[lVar14] = param_4[lVar15]; + param_4[lVar15] = fVar48; + if (iVar32 < param_6) { + lVar16 = iVar32 + lVar16; + lVar15 = lVar30 + iVar32; + fVar48 = param_4[lVar15]; + param_4[lVar15] = param_4[lVar16]; + param_4[lVar16] = fVar48; + } + } + } + } + else { + lVar14 = 0; + do { + fVar48 = pfVar8[lVar14]; + pfVar8[lVar14] = param_4[lVar15 + lVar14 + -4]; + param_4[lVar15 + lVar14 + -4] = fVar48; + lVar14 = lVar14 + 1; + } while ((int)lVar14 < param_6); + } + } + iStack_14 = -iStack_14; + } + fVar48 = -1.0 / *pfVar49; + lVar15 = lVar29; + lVar14 = lVar30; + lVar35 = lVar34; + lVar29 = lVar29 + uVar7; + lVar34 = lVar1; + pfVar13 = pfVar49; + iVar20 = iVar46; + do { + lVar1 = lStack_30 + uVar9 * 4; + lVar30 = lVar14 + uVar9; + iVar32 = (int)lVar35; + lVar16 = 0; + pfVar49 = (float *)((long)param_4 + lVar1); + pfVar12 = pfVar52; + lVar17 = -uVar7; + lVar19 = lVar30; + lVar21 = lVar1; + lVar22 = lVar29; + pfVar27 = pfVar52; + iVar46 = iVar20; + lVar28 = lVar50; + do { + lVar28 = lVar28 + uVar7; + fVar45 = fVar48 * *(float *)((long)param_1 + lVar16 + lStack_28 + lVar24); + if ((lVar53 + 4 + lVar16 < lStack_28 + 0x14 && lStack_28 + 4 < lVar53 + 0x14 + lVar16) || + (uVar23 < 8)) { + pfVar10 = pfVar27; + do { + pfVar18 = pfVar10 + 1; + *pfVar10 = *pfVar10 + pfVar10[lVar17] * fVar45; + pfVar10 = pfVar18; + } while (pfVar18 != + (float *)((long)param_1 + (lVar29 + (ulong)uVar54 + lVar35) * 4 + 8 + lVar16)); + } + else { + uVar26 = -((uint)((ulong)pfVar27 >> 2) & 3) & 3; + if (uVar23 < uVar26) { + uVar26 = uVar23; + } + iVar47 = iVar20; + if (uVar26 != 0) { + *pfVar12 = *pfVar12 + *(float *)((long)param_1 + lStack_28 + 4) * fVar45; + iVar47 = iVar32 + 2; + if (uVar26 != 1) { + pfVar12[1] = pfVar12[1] + *(float *)((long)param_1 + lStack_28 + 8) * fVar45; + iVar47 = iVar32 + 3; + if (uVar26 == 3) { + pfVar12[2] = pfVar12[2] + *(float *)((long)param_1 + lStack_28 + 0xc) * fVar45; + iVar47 = iVar32 + 4; + } + } + } + uVar33 = ((uVar23 - uVar26) - 4 >> 2) + 1; + iVar44 = uVar33 * 4; + if (2 < ((param_3 - iVar32) + -2) - uVar26) { + uVar37 = 0; + pfVar10 = param_1 + lVar28 + 1 + (ulong)uVar26; + pfVar18 = param_1 + lVar28 + 1 + (ulong)uVar26; + pfVar36 = param_1 + lVar50 + 1 + (ulong)uVar26; + do { + uVar41 = *(undefined8 *)pfVar36; + uVar37 = uVar37 + 1; + uVar40 = *(undefined8 *)pfVar18; + *(ulong *)(pfVar10 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar18 + 2) >> 0x20) + + fVar45 * (float)((ulong)*(undefined8 *)(pfVar36 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar18 + 2) + + fVar45 * (float)*(undefined8 *)(pfVar36 + 2)); + *(ulong *)pfVar10 = + CONCAT44((float)((ulong)uVar40 >> 0x20) + + fVar45 * (float)((ulong)uVar41 >> 0x20), + (float)uVar40 + fVar45 * (float)uVar41); + pfVar10 = pfVar10 + 4; + pfVar18 = pfVar18 + 4; + pfVar36 = pfVar36 + 4; + } while (uVar37 < uVar33); + iVar47 = iVar47 + iVar44; + if (iVar44 == uVar23 - uVar26) goto LAB_003cc388; + } + iVar44 = iVar47 + 1; + lVar11 = iVar47 + lVar22; + param_1[lVar11] = param_1[lVar11] + param_1[iVar47 + lVar15] * fVar45; + if (iVar44 < param_3) { + iVar47 = iVar47 + 2; + lVar11 = iVar44 + lVar22; + param_1[lVar11] = param_1[lVar11] + param_1[lVar15 + iVar44] * fVar45; + if (iVar47 < param_3) { + lVar11 = iVar47 + lVar22; + param_1[lVar11] = param_1[lVar11] + param_1[iVar47 + lVar15] * fVar45; + } + } + } +LAB_003cc388: + if ((param_4 != (float *)0x0) && (0 < param_6)) { + if ((lStack_30 < lVar21 + 0x10 && lVar21 < lStack_30 + 0x10) || ((uint)param_6 < 8)) { + lVar11 = 0; + do { + pfVar49[lVar11] = pfVar49[lVar11] + pfVar8[lVar11] * fVar45; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < param_6); + } + else { + uVar26 = -((uint)((ulong)pfVar49 >> 2) & 3) & 3; + if ((uint)param_6 < uVar26) { + uVar26 = param_6; + } + uVar33 = uVar26; + if ((uVar26 != 0) && (*pfVar49 = *pfVar49 + *pfVar8 * fVar45, uVar26 != 1)) { + pfVar49[1] = pfVar49[1] + pfVar8[1] * fVar45; + if (uVar26 == 3) { + pfVar49[2] = pfVar49[2] + pfVar8[2] * fVar45; + } + else { + uVar33 = 2; + } + } + uVar37 = ((param_6 - uVar26) - 4 >> 2) + 1; + uVar31 = 0; + iVar47 = uVar37 * 4; + pfVar10 = param_4 + lVar14 + (ulong)uVar26; + pfVar18 = param_4 + (ulong)uVar26 + lVar19; + pfVar36 = param_4 + (ulong)uVar26 + lVar19; + do { + uVar41 = *(undefined8 *)pfVar10; + uVar31 = uVar31 + 1; + uVar40 = *(undefined8 *)pfVar36; + *(ulong *)(pfVar18 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar36 + 2) >> 0x20) + + fVar45 * (float)((ulong)*(undefined8 *)(pfVar10 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar36 + 2) + + fVar45 * (float)*(undefined8 *)(pfVar10 + 2)); + *(ulong *)pfVar18 = + CONCAT44((float)((ulong)uVar40 >> 0x20) + + fVar45 * (float)((ulong)uVar41 >> 0x20), + (float)uVar40 + fVar45 * (float)uVar41); + pfVar10 = pfVar10 + 4; + pfVar18 = pfVar18 + 4; + pfVar36 = pfVar36 + 4; + } while (uVar31 < uVar37); + iVar44 = iVar47 + uVar33; + if (iVar47 != param_6 - uVar26) { + iVar47 = iVar44 + 1; + lVar11 = iVar44 + lVar19; + param_4[lVar11] = param_4[lVar11] + param_4[lVar14 + iVar44] * fVar45; + if (iVar47 < param_6) { + iVar44 = iVar44 + 2; + lVar11 = iVar47 + lVar19; + param_4[lVar11] = param_4[lVar11] + param_4[lVar14 + iVar47] * fVar45; + if (iVar44 < param_6) { + lVar11 = iVar44 + lVar19; + param_4[lVar11] = param_4[lVar11] + param_4[lVar14 + iVar44] * fVar45; + } + } + } + } + } + iVar46 = iVar46 + 1; + lVar16 = lVar16 + lVar24; + pfVar49 = pfVar49 + uVar9; + lVar21 = lVar21 + uVar9 * 4; + lVar19 = lVar19 + uVar9; + pfVar27 = (float *)((long)pfVar27 + lVar24); + lVar17 = lVar17 - uVar7; + pfVar12 = (float *)((long)pfVar12 + lVar24); + lVar22 = lVar22 + uVar7; + } while (iVar46 != param_3); + pfVar8 = pfVar8 + uVar9; + pfVar52 = (float *)((long)pfVar52 + lVar51); + uVar23 = uVar23 - 1; + uVar54 = uVar54 - 1; + lVar53 = lVar53 + lVar51; + lStack_28 = lStack_28 + lVar51; + lVar50 = lVar50 + uVar7 + 1; + pfVar49 = (float *)((long)pfVar13 + lVar51); + *pfVar13 = -fVar48; + iVar46 = iVar20 + 1; + lStack_30 = lVar1; + if (iVar46 < param_3) goto LAB_003cbd00; +LAB_003cc5bc: + if (ABS(*(float *)((long)param_1 + lStack_28)) < fVar39) break; + fVar48 = -1.0 / *pfVar49; + if (iVar46 == param_3) { + *pfVar49 = -fVar48; + if (param_4 == (float *)0x0) { + return iStack_14; + } + goto LAB_003cc5f4; + } + lVar15 = lVar29; + lVar14 = lVar30; + lVar35 = lVar34; + lVar29 = lVar29 + uVar7; + lVar34 = lVar34 + 1; + pfVar13 = pfVar49; + iVar20 = iVar46; + } while( true ); + } + iStack_14 = 0; + } + return iStack_14; +} + + +================================================================== + +### FUNC 002a97a0 (4 bytes) name=LU + +/* cv::LU(double*, unsigned long, int, double*, unsigned long, int) */ + +int cv::LU(double *param_1,ulong param_2,int param_3,double *param_4,ulong param_5,int param_6) + +{ + uint uVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + uint uVar5; + int iVar6; + ulong uVar7; + ulong uVar8; + long lVar9; + double *pdVar10; + int iVar11; + ulong uVar12; + long lVar13; + long lVar14; + double *pdVar15; + long lVar16; + long lVar17; + double dVar18; + int iVar19; + long lVar20; + double *pdVar21; + long lVar22; + long lVar23; + double *pdVar24; + uint uVar25; + double *pdVar26; + long lVar27; + long lVar28; + long lVar29; + long lVar30; + long lVar31; + long lVar32; + double *pdVar33; + uint uVar34; + double dVar35; + undefined8 uVar36; + double dVar37; + undefined8 uVar38; + double dVar39; + undefined8 uVar40; + double dVar41; + long lVar42; + double dVar43; + int iVar44; + int iVar45; + long lVar46; + double *pdVar47; + long lVar48; + uint uVar49; + long lVar50; + int iVar51; + long lStack_20; + uint uStack_14; + + dVar37 = DAT_003cd0e0; + uVar8 = param_5 >> 3; + uVar7 = param_2 >> 3; + if (param_3 < 1) { + iVar51 = 1; + if (param_4 != (double *)0x0) { +LAB_003ccef8: + uVar49 = param_3 - 1; + if (-1 < (int)uVar49) { + lVar30 = (long)(int)uVar49; + lVar29 = uVar7 + 1; + lVar9 = lVar29 * lVar30 + 1; + uVar12 = 0xffffffff; + pdVar47 = (double *)((long)param_4 + lVar30 * uVar8 * 8); + pdVar24 = (double *)((long)param_1 + lVar29 * 8 * lVar30); + pdVar26 = param_1 + lVar9; + do { + if (0 < param_6) { + pdVar21 = pdVar47; + do { + dVar37 = *pdVar21; + pdVar10 = pdVar26; + pdVar15 = pdVar21; + if ((int)(uVar49 - (int)uVar12) < param_3) { + do { + pdVar33 = pdVar10 + 1; + dVar37 = dVar37 - pdVar15[uVar8] * *pdVar10; + pdVar10 = pdVar33; + pdVar15 = pdVar15 + uVar8; + } while (pdVar33 != param_1 + lVar9 + 1 + uVar12); + } + pdVar15 = pdVar21 + 1; + *pdVar21 = dVar37 * *pdVar24; + pdVar21 = pdVar15; + } while (pdVar47 + (ulong)(param_6 - 1) + 1 != pdVar15); + } + uVar25 = (int)uVar12 + 1; + uVar12 = (ulong)uVar25; + pdVar24 = pdVar24 + -lVar29; + pdVar47 = pdVar47 + -uVar8; + pdVar26 = pdVar26 + ~uVar7; + lVar9 = lVar9 + ~uVar7; + } while (uVar25 != uVar49); + } + } + } + else { + uVar49 = param_3 - 2; + lVar32 = 0; + iVar45 = 0; + lVar50 = NEON_shl(uVar7 + 1,3); + lStack_20 = 0; + uVar25 = param_3 - 1; + lVar30 = 0; + lVar28 = 0; + lVar48 = 0; + lVar46 = 0; + lVar29 = (long)param_1 + lVar50 + uVar7 * -8; + lVar9 = 0; + iVar51 = 1; + iVar44 = 1; + pdVar26 = param_4; + pdVar47 = param_1; + uStack_14 = param_3; + if (param_3 < 2) goto LAB_003ccec0; +LAB_003cc8e8: + dVar43 = *(double *)((long)param_1 + lVar30); + lVar14 = lVar32 + uVar7; + lVar13 = lVar28 + 1; + dVar18 = dVar43; + iVar11 = iVar44; + iVar19 = iVar45; + do { + dVar41 = *(double *)((long)param_1 + (lVar14 * 8 - lVar48)); + dVar35 = ABS(dVar18); + dVar39 = ABS(dVar41); + lVar31 = lVar14; + lVar22 = lVar13; + iVar6 = iVar11; + if (dVar39 <= dVar35) { + lVar31 = (long)iVar19 * uVar7; + lVar22 = (long)iVar19; + iVar6 = iVar19; + } + iVar19 = iVar6; + iVar11 = iVar11 + 1; + lVar13 = lVar13 + 1; + lVar14 = lVar14 + uVar7; + if (dVar39 <= dVar35) { + dVar39 = dVar35; + dVar41 = dVar18; + } + dVar18 = dVar41; + } while (iVar11 != param_3); + if (dVar37 <= dVar39) { + if (iVar45 != iVar19) { + if ((int)lVar28 < param_3) { + lVar14 = lVar31 + lVar28; + if ((lVar30 < (lVar28 + 2 + lVar31) * 8 && lVar14 * 8 < lVar30 + 0x10) || (uStack_14 < 9)) + { + pdVar24 = (double *)((long)param_1 + lVar30); + do { + dVar18 = *pdVar24; + *pdVar24 = pdVar24[lVar31 - lVar32]; + pdVar24[lVar31 - lVar32] = dVar18; + pdVar24 = pdVar24 + 1; + } while (pdVar24 != param_1 + lVar46 + 1 + (ulong)uVar25); + } + else { + uVar5 = (uint)((ulong)((long)param_1 + lVar30) >> 3) & 1; + if (uStack_14 < uVar5) { + uVar5 = uStack_14; + } + if (uVar5 != 0) { + *(double *)((long)param_1 + lVar30) = param_1[lVar14]; + param_1[lVar14] = dVar43; + iVar45 = iVar44; + } + uVar12 = (ulong)uVar5; + lVar13 = 0; + uVar1 = ((uStack_14 - uVar5) - 2 >> 1) + 1; + uVar34 = 0; + iVar11 = uVar1 * 2; + lVar42 = NEON_shl(uVar12 + lVar46,3); + do { + puVar2 = (undefined8 *)((long)param_1 + lVar13 + (lVar28 + uVar12 + lVar31) * 8); + puVar3 = (undefined8 *)((long)param_1 + lVar13 + lVar42); + uVar34 = uVar34 + 1; + uVar40 = *puVar2; + puVar4 = (undefined8 *)((long)param_1 + lVar13 + (lVar14 + uVar12) * 8); + uVar38 = puVar3[1]; + uVar36 = *puVar3; + lVar13 = lVar13 + 0x10; + puVar3[1] = puVar2[1]; + *puVar3 = uVar40; + puVar4[1] = uVar38; + *puVar4 = uVar36; + } while (uVar34 < uVar1); + if (uStack_14 - uVar5 != iVar11) { + lVar14 = (long)(iVar45 + iVar11); + lVar31 = lVar14 + lVar31; + lVar14 = lVar14 + lVar32; + dVar18 = param_1[lVar14]; + param_1[lVar14] = param_1[lVar31]; + param_1[lVar31] = dVar18; + } + } + } + if ((param_4 != (double *)0x0) && (0 < param_6)) { + lVar22 = lVar22 * uVar8; + lVar14 = lVar22 + 2; + lVar13 = lVar14 * 8; + if (((lVar13 - lStack_20 == 0 || lVar13 < lStack_20) || lStack_20 + 0x10 <= lVar13 + -0x10 + ) && (8 < (uint)param_6)) { + uVar1 = (uint)((ulong)pdVar26 >> 3) & 1; + uVar5 = param_6; + if (uVar1 < (uint)param_6) { + uVar5 = uVar1; + } + if (uVar5 != 0) { + dVar18 = *pdVar26; + *pdVar26 = param_4[lVar22]; + param_4[lVar22] = dVar18; + } + lVar14 = 0; + uVar1 = ((param_6 - uVar5) - 2 >> 1) + 1; + uVar34 = 0; + iVar45 = uVar1 * 2; + do { + puVar2 = (undefined8 *)((long)param_4 + lVar14 + (lVar22 + (ulong)uVar5) * 8); + puVar3 = (undefined8 *)((long)param_4 + lVar14 + (lVar9 + (ulong)uVar5) * 8); + uVar34 = uVar34 + 1; + lVar14 = lVar14 + 0x10; + uVar40 = *puVar2; + uVar38 = puVar3[1]; + uVar36 = *puVar3; + puVar3[1] = puVar2[1]; + *puVar3 = uVar40; + puVar2[1] = uVar38; + *puVar2 = uVar36; + } while (uVar34 < uVar1); + if (param_6 - uVar5 != iVar45) { + lVar14 = (long)(int)((uint)(uVar5 != 0) + iVar45); + lVar22 = lVar14 + lVar22; + lVar14 = lVar9 + lVar14; + dVar18 = param_4[lVar14]; + param_4[lVar14] = param_4[lVar22]; + param_4[lVar22] = dVar18; + } + } + else { + lVar13 = 0; + do { + dVar18 = pdVar26[lVar13]; + pdVar26[lVar13] = param_4[lVar14 + lVar13 + -2]; + param_4[lVar14 + lVar13 + -2] = dVar18; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < param_6); + } + } + iVar51 = -iVar51; + } + dVar18 = -1.0 / *pdVar47; + lVar14 = lVar9; + lVar13 = lVar28; + lVar31 = lVar30; + lVar22 = lVar32; + iVar45 = iVar44; + lVar28 = lVar28 + 1; + lVar32 = lVar32 + uVar7; + pdVar24 = pdVar47; + do { + lVar42 = lStack_20 + uVar8 * 8; + lVar9 = lVar14 + uVar8; + lVar30 = lVar50 + lVar31; + pdVar47 = (double *)((long)param_4 + lVar42); + pdVar21 = (double *)((long)param_1 + lVar30); + lVar23 = -uVar7; + lVar27 = lVar9; + iVar44 = iVar45; + lVar20 = lVar46; + do { + lVar20 = lVar20 + uVar7; + dVar43 = dVar18 * *(double *)((long)param_1 + lVar20 * 8 + lVar48 + lVar13 * 8); + if ((lVar31 + 8 < (0x10 - (long)param_1) + (long)pdVar21 && + (long)pdVar21 - (long)param_1 < lVar31 + 0x18) || (uVar25 < 7)) { + pdVar15 = pdVar21; + do { + pdVar10 = pdVar15 + 1; + *pdVar15 = *pdVar15 + pdVar15[lVar23] * dVar43; + pdVar15 = pdVar10; + } while (pdVar10 != pdVar21 + (ulong)uVar49 + 1); + } + else { + uVar5 = (uint)((ulong)pdVar21 >> 3) & 1; + if (uVar25 < uVar5) { + uVar5 = uVar25; + } + iVar11 = iVar45; + if (uVar5 != 0) { + *(double *)(lVar29 + lVar20 * 8) = + *(double *)(lVar29 + lVar20 * 8) + + *(double *)((long)param_1 + lVar31 + 8) * dVar43; + iVar11 = (int)lVar13 + 2; + } + uVar1 = ((uVar25 - uVar5) - 2 >> 1) + 1; + iVar19 = uVar1 * 2; + if (uStack_14 - uVar5 != 2) { + uVar34 = 0; + pdVar15 = param_1 + lVar20 + 1 + (ulong)uVar5; + pdVar10 = param_1 + lVar20 + 1 + (ulong)uVar5; + pdVar33 = param_1 + lVar46 + 1 + (ulong)uVar5; + do { + dVar41 = *pdVar33; + uVar34 = uVar34 + 1; + dVar39 = *pdVar15; + pdVar10[1] = pdVar15[1] + dVar43 * pdVar33[1]; + *pdVar10 = dVar39 + dVar43 * dVar41; + pdVar15 = pdVar15 + 2; + pdVar10 = pdVar10 + 2; + pdVar33 = pdVar33 + 2; + } while (uVar34 < uVar1); + iVar11 = iVar11 + iVar19; + if (iVar19 == uVar25 - uVar5) goto LAB_003ccd48; + } + lVar17 = (long)iVar11 + (lVar20 - lVar13); + param_1[lVar17] = param_1[lVar17] + param_1[iVar11 + lVar22] * dVar43; + } +LAB_003ccd48: + if ((param_4 != (double *)0x0) && (0 < param_6)) { + if ((lStack_20 < (0x10 - (long)param_4) + (long)pdVar47 && + (long)pdVar47 - (long)param_4 < lStack_20 + 0x10) || ((uint)param_6 < 7)) { + lVar17 = 0; + do { + pdVar47[lVar17] = pdVar47[lVar17] + pdVar26[lVar17] * dVar43; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < param_6); + } + else { + uVar5 = (uint)((ulong)pdVar47 >> 3) & 1; + if ((uint)param_6 < uVar5) { + uVar5 = param_6; + } + if (uVar5 != 0) { + *pdVar47 = *pdVar47 + *pdVar26 * dVar43; + } + uVar1 = ((param_6 - uVar5) - 2 >> 1) + 1; + uVar34 = 0; + iVar11 = uVar1 * 2; + pdVar15 = param_4 + lVar14 + (ulong)uVar5; + pdVar10 = param_4 + lVar27 + (ulong)uVar5; + pdVar33 = param_4 + lVar27 + (ulong)uVar5; + do { + dVar41 = *pdVar15; + uVar34 = uVar34 + 1; + dVar39 = *pdVar33; + pdVar10[1] = pdVar33[1] + dVar43 * pdVar15[1]; + *pdVar10 = dVar39 + dVar43 * dVar41; + pdVar15 = pdVar15 + 2; + pdVar10 = pdVar10 + 2; + pdVar33 = pdVar33 + 2; + } while (uVar34 < uVar1); + if (iVar11 != param_6 - uVar5) { + lVar16 = (long)(int)(iVar11 + (uint)(uVar5 != 0)); + lVar17 = lVar27 + lVar16; + param_4[lVar17] = param_4[lVar17] + param_4[lVar14 + lVar16] * dVar43; + } + } + } + iVar44 = iVar44 + 1; + pdVar47 = pdVar47 + uVar8; + lVar23 = lVar23 - uVar7; + lVar27 = lVar27 + uVar8; + pdVar21 = (double *)((long)pdVar21 + lVar50 + -8); + } while (iVar44 != param_3); + pdVar26 = pdVar26 + uVar8; + lVar46 = lVar46 + uVar7 + 1; + uVar25 = uVar25 - 1; + uVar49 = uVar49 - 1; + iVar44 = iVar45 + 1; + uStack_14 = uStack_14 - 1; + lVar48 = lVar48 + -8; + pdVar47 = (double *)((long)pdVar24 + lVar50); + *pdVar24 = -dVar18; + lVar29 = lVar29 + lVar50 + uVar7 * -8 + -8; + lStack_20 = lVar42; + if (iVar44 < param_3) goto LAB_003cc8e8; +LAB_003ccec0: + if (ABS(*(double *)((long)param_1 + lVar30)) < dVar37) break; + dVar18 = -1.0 / *pdVar47; + if (iVar44 == param_3) { + *pdVar47 = -dVar18; + if (param_4 == (double *)0x0) { + return iVar51; + } + goto LAB_003ccef8; + } + lVar14 = lVar9; + lVar13 = lVar28; + lVar31 = lVar30; + lVar22 = lVar32; + iVar45 = iVar44; + lVar28 = lVar28 + 1; + lVar32 = lVar32 + uVar7; + pdVar24 = pdVar47; + } while( true ); + } + iVar51 = 0; + } + return iVar51; +} + + +================================================================== + +### FUNC 002a97a4 (4 bytes) name=Cholesky + +/* cv::Cholesky(float*, unsigned long, int, float*, unsigned long, int) */ + +undefined8 +cv::Cholesky(float *param_1,ulong param_2,int param_3,float *param_4,ulong param_5,int param_6) + +{ + float *pfVar1; + float *pfVar2; + double dVar3; + float *pfVar4; + int iVar5; + float *pfVar6; + long lVar7; + long lVar8; + float *pfVar9; + int iVar10; + float *pfVar11; + float *pfVar12; + long lVar13; + float *pfVar14; + int iVar15; + ulong uVar16; + ulong uVar17; + double __x; + float fVar18; + double dVar19; + float fVar20; + float fVar21; + + dVar3 = DAT_003cd448; + uVar16 = param_2 >> 2; + uVar17 = param_5 >> 2; + if (param_3 < 1) { + if (param_4 == (float *)0x0) { + return 1; + } + } + else { + lVar13 = uVar16 + 1; + iVar15 = 0; + pfVar4 = param_1; + pfVar14 = param_1; + pfVar6 = param_1; + do { + if (iVar15 < 1) { + __x = (double)*pfVar14; + } + else { + iVar10 = 1; + *pfVar6 = *pfVar6 * *param_1; + pfVar11 = param_1; + pfVar12 = param_1; + pfVar9 = pfVar4; + if (iVar15 != 1) { + do { + pfVar9 = pfVar9 + 1; + pfVar12 = pfVar12 + uVar16; + fVar18 = *pfVar9; + if (0 < iVar10) { + lVar7 = 0; + do { + pfVar1 = pfVar4 + lVar7; + pfVar2 = pfVar12 + lVar7; + lVar7 = lVar7 + 1; + fVar18 = fVar18 - *pfVar1 * *pfVar2; + } while ((int)lVar7 < iVar10); + } + pfVar11 = pfVar11 + lVar13; + iVar10 = iVar10 + 1; + *pfVar9 = fVar18 * *pfVar11; + } while (iVar10 != iVar15); + } + lVar7 = 0; + __x = (double)*pfVar14; + do { + pfVar11 = pfVar4 + lVar7; + lVar7 = lVar7 + 1; + __x = __x - (double)*pfVar11 * (double)*pfVar11; + } while ((int)lVar7 < iVar15); + } + if (__x < dVar3) { + return 0; + } + dVar19 = SQRT(__x); + if (NAN(dVar19)) { + dVar19 = ::sqrt(__x); + } + iVar15 = iVar15 + 1; + pfVar6 = pfVar6 + uVar16; + pfVar4 = pfVar4 + uVar16; + *pfVar14 = (float)(1.0 / dVar19); + pfVar14 = pfVar14 + lVar13; + } while (iVar15 != param_3); + if (param_4 == (float *)0x0) { + return 1; + } + lVar7 = 0; + iVar15 = 0; + pfVar6 = param_1; + pfVar4 = param_1; + do { + pfVar14 = param_4; + if (0 < param_6) { + do { + fVar18 = pfVar14[lVar7]; + if (0 < iVar15) { + lVar8 = 0; + pfVar11 = pfVar14; + do { + pfVar12 = pfVar4 + lVar8; + lVar8 = lVar8 + 1; + fVar20 = *pfVar11; + pfVar11 = pfVar11 + uVar17; + fVar18 = fVar18 - *pfVar12 * fVar20; + } while ((int)lVar8 < iVar15); + } + pfVar14[lVar7] = fVar18 * *pfVar6; + pfVar14 = pfVar14 + 1; + } while (pfVar14 != param_4 + (ulong)(param_6 - 1) + 1); + } + iVar15 = iVar15 + 1; + pfVar6 = pfVar6 + lVar13; + lVar7 = lVar7 + uVar17; + pfVar4 = pfVar4 + uVar16; + } while (iVar15 != param_3); + } + iVar15 = param_3 + -1; + if (-1 < iVar15) { + lVar13 = (long)iVar15; + lVar7 = lVar13 * uVar17 * 4; + pfVar14 = (float *)((long)param_1 + (uVar16 + 1) * 4 * lVar13); + pfVar6 = (float *)((long)param_4 + lVar7); + pfVar4 = param_1 + lVar13 + ((long)param_3 + -1) * uVar16; + lVar7 = ((long)param_3 * 4 + -4) * uVar17 - lVar7; + iVar10 = iVar15; + do { + if (0 < param_6) { + pfVar11 = pfVar6; + do { + fVar18 = *pfVar11; + if (iVar10 < iVar15) { + pfVar12 = (float *)((long)pfVar11 + lVar7); + pfVar9 = pfVar4; + iVar5 = iVar15; + do { + fVar20 = *pfVar9; + iVar5 = iVar5 + -1; + fVar21 = *pfVar12; + pfVar9 = pfVar9 + -uVar16; + pfVar12 = pfVar12 + -uVar17; + fVar18 = fVar18 - fVar20 * fVar21; + } while (iVar5 != iVar10); + } + pfVar12 = pfVar11 + 1; + *pfVar11 = fVar18 * *pfVar14; + pfVar11 = pfVar12; + } while (pfVar12 != pfVar6 + (ulong)(param_6 - 1) + 1); + } + iVar10 = iVar10 + -1; + pfVar14 = pfVar14 + -(uVar16 + 1); + pfVar6 = pfVar6 + -uVar17; + pfVar4 = pfVar4 + -1; + lVar7 = lVar7 + uVar17 * 4; + } while (iVar10 != -1); + } + return 1; +} + + +================================================================== + +### FUNC 002a97a8 (4 bytes) name=Cholesky + +/* cv::Cholesky(double*, unsigned long, int, double*, unsigned long, int) */ + +undefined8 +cv::Cholesky(double *param_1,ulong param_2,int param_3,double *param_4,ulong param_5,int param_6) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + int iVar4; + double *pdVar5; + long lVar6; + long lVar7; + double *pdVar8; + int iVar9; + double *pdVar10; + double *pdVar11; + long lVar12; + double *pdVar13; + int iVar14; + ulong uVar15; + ulong uVar16; + double dVar17; + double dVar18; + double dVar19; + + dVar18 = DAT_003cd758; + uVar15 = param_2 >> 3; + uVar16 = param_5 >> 3; + if (param_3 < 1) { + if (param_4 == (double *)0x0) { + return 1; + } + } + else { + lVar12 = uVar15 + 1; + iVar14 = 0; + pdVar3 = param_1; + pdVar13 = param_1; + pdVar5 = param_1; + do { + if (iVar14 < 1) { + dVar17 = *pdVar13; + } + else { + iVar9 = 1; + *pdVar5 = *pdVar5 * *param_1; + pdVar10 = param_1; + pdVar11 = param_1; + pdVar8 = pdVar3; + if (iVar14 != 1) { + do { + pdVar8 = pdVar8 + 1; + pdVar11 = pdVar11 + uVar15; + dVar17 = *pdVar8; + if (0 < iVar9) { + lVar6 = 0; + do { + pdVar1 = pdVar3 + lVar6; + pdVar2 = pdVar11 + lVar6; + lVar6 = lVar6 + 1; + dVar17 = dVar17 - *pdVar2 * *pdVar1; + } while ((int)lVar6 < iVar9); + } + pdVar10 = pdVar10 + lVar12; + iVar9 = iVar9 + 1; + *pdVar8 = dVar17 * *pdVar10; + } while (iVar9 != iVar14); + } + dVar17 = *pdVar13; + lVar6 = 0; + do { + pdVar10 = pdVar3 + lVar6; + lVar6 = lVar6 + 1; + dVar17 = dVar17 - *pdVar10 * *pdVar10; + } while ((int)lVar6 < iVar14); + } + if (dVar17 < dVar18) { + return 0; + } + dVar19 = SQRT(dVar17); + if (NAN(dVar19)) { + dVar19 = ::sqrt(dVar17); + } + iVar14 = iVar14 + 1; + pdVar5 = pdVar5 + uVar15; + pdVar3 = pdVar3 + uVar15; + *pdVar13 = 1.0 / dVar19; + pdVar13 = pdVar13 + lVar12; + } while (iVar14 != param_3); + if (param_4 == (double *)0x0) { + return 1; + } + lVar6 = 0; + iVar14 = 0; + pdVar5 = param_1; + pdVar3 = param_1; + do { + pdVar13 = param_4; + if (0 < param_6) { + do { + dVar18 = pdVar13[lVar6]; + if (0 < iVar14) { + lVar7 = 0; + pdVar10 = pdVar13; + do { + pdVar11 = pdVar3 + lVar7; + lVar7 = lVar7 + 1; + dVar17 = *pdVar10; + pdVar10 = pdVar10 + uVar16; + dVar18 = dVar18 - dVar17 * *pdVar11; + } while ((int)lVar7 < iVar14); + } + pdVar13[lVar6] = dVar18 * *pdVar5; + pdVar13 = pdVar13 + 1; + } while (pdVar13 != param_4 + (ulong)(param_6 - 1) + 1); + } + iVar14 = iVar14 + 1; + pdVar5 = pdVar5 + lVar12; + lVar6 = lVar6 + uVar16; + pdVar3 = pdVar3 + uVar15; + } while (iVar14 != param_3); + } + iVar14 = param_3 + -1; + if (-1 < iVar14) { + lVar12 = (long)iVar14; + lVar6 = lVar12 * uVar16 * 8; + pdVar13 = (double *)((long)param_1 + (uVar15 + 1) * 8 * lVar12); + pdVar5 = (double *)((long)param_4 + lVar6); + pdVar3 = param_1 + lVar12 + ((long)param_3 + -1) * uVar15; + lVar6 = ((long)param_3 * 8 + -8) * uVar16 - lVar6; + iVar9 = iVar14; + do { + if (0 < param_6) { + pdVar10 = pdVar5; + do { + dVar18 = *pdVar10; + if (iVar9 < iVar14) { + pdVar11 = (double *)((long)pdVar10 + lVar6); + pdVar8 = pdVar3; + iVar4 = iVar14; + do { + iVar4 = iVar4 + -1; + dVar19 = *pdVar8; + dVar17 = *pdVar11; + pdVar8 = pdVar8 + -uVar15; + pdVar11 = pdVar11 + -uVar16; + dVar18 = dVar18 - dVar17 * dVar19; + } while (iVar4 != iVar9); + } + pdVar11 = pdVar10 + 1; + *pdVar10 = dVar18 * *pdVar13; + pdVar10 = pdVar11; + } while (pdVar11 != pdVar5 + (ulong)(param_6 - 1) + 1); + } + iVar9 = iVar9 + -1; + pdVar13 = pdVar13 + -(uVar15 + 1); + pdVar5 = pdVar5 + -uVar16; + pdVar3 = pdVar3 + -1; + lVar6 = lVar6 + uVar16 * 8; + } while (iVar9 != -1); + } + return 1; +} + + +================================================================== + +### FUNC 002a97ac (1996 bytes) name=determinant + +/* cv::determinant(cv::_InputArray const&) */ + +undefined1 [16] cv::determinant(_InputArray *param_1) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined4 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined2 uVar11; + long lVar12; + int iVar13; + int iVar14; + long lVar15; + char *pcVar16; + double *pdVar17; + long lVar18; + Mat *pMVar19; + undefined8 *puVar20; + int *piVar21; + ulong uVar22; + float fVar23; + double dVar24; + undefined1 auVar25 [16]; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + undefined4 local_4f0 [2]; + Mat *local_4e8; + undefined4 local_4e0; + undefined4 local_4dc; + uint local_4d8; + int local_4d4; + int local_4d0; + int local_4cc; + double *local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + int *local_498; + long *local_490; + long local_488; + long local_480; + undefined8 local_478; + undefined8 local_470; + double *local_468; + double *local_460; + double *local_458; + double *local_450; + undefined8 local_448; + long local_440; + undefined8 *local_438; + long *local_430; + long local_428 [2]; + double *local_418; + ulong local_410; + double adStack_408 [129]; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar19 = *(Mat **)(param_1 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(uint *)pMVar19; + local_4d4 = *(int *)(pMVar19 + 4); + local_4d0 = *(int *)(pMVar19 + 8); + local_4cc = *(int *)(pMVar19 + 0xc); + local_4c8 = *(double **)(pMVar19 + 0x10); + local_4c0 = *(undefined8 *)(pMVar19 + 0x18); + local_4b8 = *(undefined8 *)(pMVar19 + 0x20); + local_4b0 = *(undefined8 *)(pMVar19 + 0x28); + local_4a8 = *(undefined8 *)(pMVar19 + 0x30); + local_4a0 = *(long *)(pMVar19 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar21 = (int *)(local_4a0 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = *piVar21 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar19 + 4) < 3) { + local_488 = **(long **)(pMVar19 + 0x48); + local_480 = (*(long **)(pMVar19 + 0x48))[1]; + } + else { + local_4d4 = 0; + Mat::copySize((Mat *)&local_4d8,pMVar19); + } + } + else { + _InputArray::getMat_((int)param_1); + } + lVar12 = local_488; + pdVar17 = local_4c8; + iVar13 = local_4d0; + uVar1 = local_4d8 & 0xfff; + if (local_4c8 == (double *)0x0) { +LAB_002a9a9c: + local_478 = 0; + local_470 = 0; + pcVar16 = (char *)String::allocate((String *)&local_478,0xc); + uVar4 = s__mat_empty___00467b00._8_4_; + *(undefined8 *)pcVar16 = s__mat_empty___00467b00._0_8_; + *(undefined4 *)(pcVar16 + 8) = uVar4; + error(-0xd7,(String *)&local_478,"double cv::determinant(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x2d2); + String::deallocate((String *)&local_478); + } + else { + if (local_4d4 < 3) { + lVar18 = (long)local_4cc * (long)local_4d0; + } + else { + lVar15 = 0; + lVar18 = 1; + do { + piVar21 = local_498 + lVar15; + lVar15 = lVar15 + 1; + lVar18 = lVar18 * *piVar21; + } while ((int)lVar15 < local_4d4); + } + if (lVar18 == 0) goto LAB_002a9a9c; + } + if ((local_4cc != local_4d0) || (1 < uVar1 - 5)) { + local_418 = (double *)0x0; + local_410 = 0; + pcVar16 = (char *)String::allocate((String *)&local_418,0x3a); + uVar11 = s_mat_rows____mat_cols_____type____00467b50._56_2_; + uVar10 = s_mat_rows____mat_cols_____type____00467b50._40_8_; + uVar9 = s_mat_rows____mat_cols_____type____00467b50._32_8_; + uVar8 = s_mat_rows____mat_cols_____type____00467b50._24_8_; + uVar7 = s_mat_rows____mat_cols_____type____00467b50._16_8_; + uVar6 = s_mat_rows____mat_cols_____type____00467b50._8_8_; + uVar5 = s_mat_rows____mat_cols_____type____00467b50._0_8_; + *(undefined8 *)(pcVar16 + 0x30) = s_mat_rows____mat_cols_____type____00467b50._48_8_; + *(undefined2 *)(pcVar16 + 0x38) = uVar11; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + *(undefined8 *)(pcVar16 + 0x10) = uVar7; + *(undefined8 *)(pcVar16 + 0x18) = uVar8; + *(undefined8 *)(pcVar16 + 0x20) = uVar9; + *(undefined8 *)(pcVar16 + 0x28) = uVar10; + error(-0xd7,(String *)&local_418,"double cv::determinant(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x2d3); + String::deallocate((String *)&local_418); + } + if (uVar1 == 5) { + if (iVar13 == 2) { + dVar28 = (double)*(float *)pdVar17 * (double)*(float *)((long)pdVar17 + lVar12 + 4) - + (double)*(float *)((long)pdVar17 + 4) * (double)*(float *)((long)pdVar17 + lVar12); + goto LAB_002a9bf0; + } + if (iVar13 == 3) { + lVar18 = (lVar12 + 4) * 2; + dVar29 = (double)*(float *)((long)pdVar17 + lVar12 * 2); + dVar27 = (double)*(float *)((long)pdVar17 + lVar12 + 8); + dVar28 = (double)*(float *)((long)pdVar17 + lVar18 + -4); + dVar24 = (double)*(float *)((long)pdVar17 + lVar18); + dVar26 = (double)*(float *)((long)pdVar17 + lVar12 + 4); + dVar28 = ((double)*(float *)pdVar17 * (dVar26 * dVar24 - dVar27 * dVar28) - + (double)*(float *)((long)pdVar17 + 4) * + (dVar24 * (double)*(float *)((long)pdVar17 + lVar12) - dVar27 * dVar29)) + + (dVar28 * (double)*(float *)((long)pdVar17 + lVar12) - dVar26 * dVar29) * + (double)*(float *)(pdVar17 + 1); + goto LAB_002a9bf0; + } + if (iVar13 == 1) { + dVar28 = (double)*(float *)pdVar17; + goto LAB_002a9bf0; + } + local_418 = adStack_408; + uVar22 = -(ulong)((uint)(iVar13 * iVar13) >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uint)(iVar13 * iVar13) << 2; + local_410 = 0x408; + if (0x408 < uVar22) { + local_418 = operator_new__(uVar22); + } + local_428[0] = (long)iVar13 * 4; + local_438 = &local_470; + local_458 = (double *)((long)local_418 + local_428[0] * iVar13); + local_430 = local_428; + local_428[1] = 4; + local_4e0 = 0; + local_4dc = 0; + local_4f0[0] = 0x2010000; + local_470 = CONCAT44(iVar13,iVar13); + local_448 = 0; + local_440 = 0; + local_478 = 0x242ff4005; + local_4e8 = (Mat *)&local_478; + local_468 = local_418; + local_460 = local_418; + local_450 = local_458; + local_410 = uVar22; + Mat::copyTo((Mat *)&local_4d8,(_OutputArray *)local_4f0); + iVar14 = FUN_003cbc40(local_468,local_428[0],iVar13,0,0,0); + dVar28 = (double)iVar14; + if (dVar28 != 0.0) { + if (0 < iVar13) { + iVar14 = 0; + pdVar17 = local_468; + do { + fVar23 = *(float *)pdVar17; + iVar14 = iVar14 + 1; + pdVar17 = (double *)((long)pdVar17 + *local_430 + 4); + dVar28 = dVar28 * (double)fVar23; + } while (iVar14 != iVar13); + } + dVar28 = 1.0 / dVar28; + } + if (local_440 != 0) { + piVar21 = (int *)(local_440 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = (double *)0x0; + local_450 = (double *)0x0; + local_458 = (double *)0x0; + local_460 = (double *)0x0; + if (0 < local_478._4_4_) { + iVar13 = 0; + puVar20 = local_438; + do { + *(undefined4 *)puVar20 = 0; + iVar13 = iVar13 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar13 < local_478._4_4_); + } + /* catch() { ... } // from try @ 002aaac0 with catch @ 002a9f40 */ + if (local_430 != local_428) { + fastFree(local_430); + } + } + else { + if (iVar13 == 2) { + dVar28 = *pdVar17 * *(double *)((long)pdVar17 + lVar12 + 8) - + pdVar17[1] * *(double *)((long)pdVar17 + lVar12); + goto LAB_002a9bf0; + } + if (iVar13 == 3) { + lVar18 = (lVar12 + 8) * 2; + dVar27 = *(double *)((long)pdVar17 + lVar12 + 0x10); + dVar26 = *(double *)((long)pdVar17 + lVar12 * 2); + dVar24 = *(double *)((long)pdVar17 + lVar12 + 8); + dVar29 = *(double *)((long)pdVar17 + lVar18); + dVar28 = *(double *)((long)pdVar17 + lVar18 + -8); + dVar28 = (*pdVar17 * (dVar24 * dVar29 - dVar27 * dVar28) - + (dVar29 * *(double *)((long)pdVar17 + lVar12) - dVar27 * dVar26) * pdVar17[1]) + + (dVar28 * *(double *)((long)pdVar17 + lVar12) - dVar24 * dVar26) * pdVar17[2]; + goto LAB_002a9bf0; + } + if (iVar13 == 1) { + dVar28 = *pdVar17; + goto LAB_002a9bf0; + } + local_418 = adStack_408; + uVar22 = -(ulong)((uint)(iVar13 * iVar13) >> 0x1f) & 0xfffffff800000000 | + (ulong)(uint)(iVar13 * iVar13) << 3; + local_410 = 0x408; + if (0x408 < uVar22) { + local_418 = operator_new__(uVar22); + } + local_428[0] = (long)iVar13 * 8; + local_438 = &local_470; + local_458 = (double *)((long)local_418 + local_428[0] * iVar13); + local_430 = local_428; + local_428[1] = 8; + local_4e0 = 0; + local_4dc = 0; + local_4f0[0] = 0x2010000; + local_470 = CONCAT44(iVar13,iVar13); + local_448 = 0; + local_440 = 0; + local_478 = 0x242ff4006; + local_4e8 = (Mat *)&local_478; + local_468 = local_418; + local_460 = local_418; + local_450 = local_458; + local_410 = uVar22; + Mat::copyTo((Mat *)&local_4d8,(_OutputArray *)local_4f0); + iVar14 = FUN_003cc800(local_468,local_428[0],iVar13,0,0,0); + dVar28 = (double)iVar14; + if (dVar28 != 0.0) { + if (0 < iVar13) { + iVar14 = 0; + pdVar17 = local_468; + do { + iVar14 = iVar14 + 1; + dVar24 = *pdVar17; + pdVar17 = (double *)((long)pdVar17 + *local_430 + 8); + dVar28 = dVar28 * dVar24; + } while (iVar14 != iVar13); + } + dVar28 = 1.0 / dVar28; + } + if (local_440 != 0) { + piVar21 = (int *)(local_440 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = (double *)0x0; + local_450 = (double *)0x0; + local_458 = (double *)0x0; + local_460 = (double *)0x0; + if (0 < local_478._4_4_) { + iVar13 = 0; + puVar20 = local_438; + do { + *(undefined4 *)puVar20 = 0; + iVar13 = iVar13 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar13 < local_478._4_4_); + } + if (local_430 != local_428) { + fastFree(local_430); + } + } + if ((local_418 != adStack_408) && (local_418 != (double *)0x0)) { + operator_delete__(local_418); + } +LAB_002a9bf0: + if (local_4a0 != 0) { + piVar21 = (int *)(local_4a0 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_4d8); + } + } + local_4a0 = 0; + local_4c8 = (double *)0x0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar13 = 0; + piVar21 = local_498; + do { + *piVar21 = 0; + iVar13 = iVar13 + 1; + piVar21 = piVar21 + 1; + } while (iVar13 < local_4d4); + } + if (local_490 != &local_488) { + fastFree(local_490); + } + auVar25._8_8_ = 0; + auVar25._0_8_ = dVar28; + return auVar25; +} + + +================================================================== + +### FUNC 002aa030 (3088 bytes) name=backSubst + +/* cv::SVD::backSubst(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::SVD::backSubst(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _InputArray *param_4,_OutputArray *param_5) + +{ + int iVar1; + int iVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined4 uVar13; + undefined2 uVar14; + int iVar15; + int iVar16; + int iVar17; + char *pcVar18; + void *__dest; + uint uVar19; + undefined4 *puVar20; + int *piVar21; + Mat *pMVar22; + ulong uVar23; + uint uVar24; + int iVar25; + ulong uVar26; + undefined8 local_638; + undefined8 local_630; + undefined8 local_628; + undefined8 local_620; + undefined8 local_618; + undefined8 local_610; + undefined8 local_608; + undefined8 local_600; + uint local_5f8; + int local_5f4; + int local_5f0; + int local_5ec; + long local_5e8; + undefined8 local_5e0; + undefined8 local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + long local_5c0; + int *local_5b8; + ulong *local_5b0; + ulong local_5a8; + ulong local_5a0; + uint local_598; + int local_594; + int local_590; + int local_58c; + long local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + undefined8 local_568; + long local_560; + int *local_558; + ulong *local_550; + ulong local_548; + ulong local_540; + uint local_538; + int local_534; + int local_530; + int local_52c; + long local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_500; + int *local_4f8; + ulong *local_4f0; + ulong local_4e8; + ulong local_4e0; + uint local_4d8; + int local_4d4; + int local_4d0; + int local_4cc; + long local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + int *local_498; + ulong *local_490; + ulong local_488; + ulong local_480; + undefined4 local_478; + int local_474; + undefined4 local_470; + undefined4 local_46c; + undefined8 local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + long local_440; + undefined4 *local_438; + ulong *local_430; + ulong local_428; + ulong local_420; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + iVar16 = _InputArray::kind(param_1); + if (iVar16 == 0x10000) { + pMVar22 = *(Mat **)(param_1 + 8); + local_5b8 = &local_5f0; + local_5b0 = &local_5a8; + local_5f8 = *(uint *)pMVar22; + local_5f4 = *(int *)(pMVar22 + 4); + /* try { // try from 002aaac0 to 003aaac3 has its CatchHandler @ 002a9f40 */ + local_5f0 = *(int *)(pMVar22 + 8); + /* catch() { ... } // from try @ 002aa010 with catch @ 002aaac4 + catch() { ... } // from try @ 002aa898 with catch @ 002aaac4 */ + local_5ec = *(int *)(pMVar22 + 0xc); + local_5e8 = *(long *)(pMVar22 + 0x10); + local_5e0 = *(undefined8 *)(pMVar22 + 0x18); + local_5d8 = *(undefined8 *)(pMVar22 + 0x20); + local_5d0 = *(undefined8 *)(pMVar22 + 0x28); + local_5c8 = *(undefined8 *)(pMVar22 + 0x30); + local_5c0 = *(long *)(pMVar22 + 0x38); + local_5a0 = 0; + local_5a8 = 0; + if (local_5c0 != 0) { + piVar21 = (int *)(local_5c0 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = *piVar21 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar22 + 4) < 3) { + local_5a8 = **(ulong **)(pMVar22 + 0x48); + local_5a0 = (*(ulong **)(pMVar22 + 0x48))[1]; + } + else { + local_5f4 = 0; + Mat::copySize((Mat *)&local_5f8,pMVar22); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar16 = _InputArray::kind(param_2); + if (iVar16 == 0x10000) { + pMVar22 = *(Mat **)(param_2 + 8); + local_558 = &local_590; + local_550 = &local_548; + local_598 = *(uint *)pMVar22; + local_594 = *(int *)(pMVar22 + 4); + local_590 = *(int *)(pMVar22 + 8); + local_58c = *(int *)(pMVar22 + 0xc); + local_588 = *(long *)(pMVar22 + 0x10); + local_580 = *(undefined8 *)(pMVar22 + 0x18); + local_578 = *(undefined8 *)(pMVar22 + 0x20); + local_570 = *(undefined8 *)(pMVar22 + 0x28); + local_568 = *(undefined8 *)(pMVar22 + 0x30); + local_560 = *(long *)(pMVar22 + 0x38); + local_540 = 0; + local_548 = 0; + if (local_560 != 0) { + piVar21 = (int *)(local_560 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = *piVar21 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar22 + 4) < 3) { + local_548 = **(ulong **)(pMVar22 + 0x48); + /* catch() { ... } // from try @ 002aa79c with catch @ 002aaa9c */ + local_540 = (*(ulong **)(pMVar22 + 0x48))[1]; + } + else { + local_594 = 0; + Mat::copySize((Mat *)&local_598,pMVar22); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iVar16 = _InputArray::kind(param_3); + if (iVar16 == 0x10000) { + pMVar22 = *(Mat **)(param_3 + 8); + local_4f8 = &local_530; + local_4f0 = &local_4e8; + local_538 = *(uint *)pMVar22; + local_534 = *(int *)(pMVar22 + 4); + local_530 = *(int *)(pMVar22 + 8); + local_52c = *(int *)(pMVar22 + 0xc); + local_528 = *(long *)(pMVar22 + 0x10); + local_520 = *(undefined8 *)(pMVar22 + 0x18); + local_518 = *(undefined8 *)(pMVar22 + 0x20); + local_510 = *(undefined8 *)(pMVar22 + 0x28); + local_508 = *(undefined8 *)(pMVar22 + 0x30); + local_500 = *(long *)(pMVar22 + 0x38); + local_4e0 = 0; + local_4e8 = 0; + if (local_500 != 0) { + piVar21 = (int *)(local_500 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = *piVar21 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar22 + 4) < 3) { + local_4e8 = **(ulong **)(pMVar22 + 0x48); + local_4e0 = (*(ulong **)(pMVar22 + 0x48))[1]; + } + else { + local_534 = 0; + Mat::copySize((Mat *)&local_538,pMVar22); + } + } + else { + _InputArray::getMat_((int)param_3); + } + iVar16 = _InputArray::kind(param_4); + if (iVar16 == 0x10000) { + pMVar22 = *(Mat **)(param_4 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(uint *)pMVar22; + local_4d4 = *(int *)(pMVar22 + 4); + local_4d0 = *(int *)(pMVar22 + 8); + local_4cc = *(int *)(pMVar22 + 0xc); + local_4c8 = *(long *)(pMVar22 + 0x10); + local_4c0 = *(undefined8 *)(pMVar22 + 0x18); + local_4b8 = *(undefined8 *)(pMVar22 + 0x20); + local_4b0 = *(undefined8 *)(pMVar22 + 0x28); + local_4a8 = *(undefined8 *)(pMVar22 + 0x30); + local_4a0 = *(long *)(pMVar22 + 0x38); + /* try { // try from 002aa898 to 003aa9c7 has its CatchHandler @ 002aaac4 */ + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar21 = (int *)(local_4a0 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = *piVar21 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar22 + 4)) { + local_4d4 = 0; + Mat::copySize((Mat *)&local_4d8,pMVar22); + goto LAB_002aa0fc; + } + local_488 = **(ulong **)(pMVar22 + 0x48); + uVar24 = local_5f8 & 0xfff; + local_480 = (*(ulong **)(pMVar22 + 0x48))[1]; + if (local_5f4 < 1) goto LAB_002aa90c; +LAB_002aa110: + iVar16 = (int)local_5b0[(long)local_5f4 + -1]; + if (local_4c8 != 0) goto LAB_002aa130; +LAB_002aa920: + iVar17 = local_52c; + if (local_590 < local_52c) { + iVar17 = local_590; + } + iVar25 = local_590; + if (local_5f0 == 1) goto LAB_002aa93c; +LAB_002aa150: + uVar26 = local_5a8; + if (local_5ec != 1) { + uVar26 = local_5a8 + (long)iVar16; + } + } + else { + _InputArray::getMat_((int)param_4); +LAB_002aa0fc: + uVar24 = local_5f8 & 0xfff; + if (0 < local_5f4) goto LAB_002aa110; +LAB_002aa90c: + iVar16 = 0; + if (local_4c8 == 0) goto LAB_002aa920; +LAB_002aa130: + iVar17 = local_52c; + if (local_590 < local_52c) { + iVar17 = local_590; + } + iVar25 = local_4cc; + if (local_5f0 != 1) goto LAB_002aa150; +LAB_002aa93c: + uVar26 = (long)iVar16; + } + iVar15 = local_52c; + iVar16 = local_590; + local_418 = auStack_408; + uVar23 = (long)iVar25 * 8 + 0x10; + local_410 = 0x408; + if (uVar23 < 0x409) { + uVar19 = uVar24; + if ((local_598 & 0xfff) == uVar24) goto LAB_002aa820; +LAB_002aa1b8: + local_638 = 0; + local_630 = 0; + local_410 = uVar23; + pcVar18 = (char *)String::allocate((String *)&local_638,0x4c); + uVar13 = s_w_type______u_type______u_type___00467b90._72_4_; + uVar12 = s_w_type______u_type______u_type___00467b90._56_8_; + uVar11 = s_w_type______u_type______u_type___00467b90._48_8_; + uVar10 = s_w_type______u_type______u_type___00467b90._40_8_; + uVar9 = s_w_type______u_type______u_type___00467b90._32_8_; + uVar8 = s_w_type______u_type______u_type___00467b90._24_8_; + uVar7 = s_w_type______u_type______u_type___00467b90._16_8_; + uVar6 = s_w_type______u_type______u_type___00467b90._8_8_; + uVar5 = s_w_type______u_type______u_type___00467b90._0_8_; + *(undefined8 *)(pcVar18 + 0x40) = s_w_type______u_type______u_type___00467b90._64_8_; + *(undefined4 *)(pcVar18 + 0x48) = uVar13; + *(undefined8 *)pcVar18 = uVar5; + *(undefined8 *)(pcVar18 + 8) = uVar6; + *(undefined8 *)(pcVar18 + 0x10) = uVar7; + *(undefined8 *)(pcVar18 + 0x18) = uVar8; + *(undefined8 *)(pcVar18 + 0x20) = uVar9; + *(undefined8 *)(pcVar18 + 0x28) = uVar10; + *(undefined8 *)(pcVar18 + 0x30) = uVar11; + *(undefined8 *)(pcVar18 + 0x38) = uVar12; + error(-0xd7,(String *)&local_638, + "static void cv::SVD::backSubst(cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x5ac); + String::deallocate((String *)&local_638); + } + else { + local_418 = operator_new__(uVar23); + uVar19 = local_5f8 & 0xfff; + if ((local_598 & 0xfff) != (local_5f8 & 0xfff)) goto LAB_002aa1b8; +LAB_002aa820: + if ((((uVar19 != (local_538 & 0xfff)) || (local_588 == 0)) || (local_528 == 0)) || + (local_410 = uVar23, local_5e8 == 0)) goto LAB_002aa1b8; + } + if ((iVar17 <= local_58c) && (iVar17 <= local_530)) { + iVar1 = local_5b8[1]; + iVar2 = *local_5b8; + if ((((iVar1 == iVar17) && (iVar2 == 1)) || ((iVar1 == 1 && (iVar2 == iVar17)))) || + ((iVar1 == local_530 && (local_58c == iVar2)))) goto LAB_002aa294; + } + local_628 = 0; + local_620 = 0; + __dest = (void *)String::allocate((String *)&local_628,0x7a); + memcpy(__dest,&DAT_00467be0,0x7a); + error(-0xd7,(String *)&local_628, + "static void cv::SVD::backSubst(cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x5ae); + String::deallocate((String *)&local_628); +LAB_002aa294: + if ((local_4c8 != 0) && (((local_4d8 & 0xfff) != uVar24 || (iVar16 != local_4d0)))) { + local_618 = 0; + local_610 = 0; + pcVar18 = (char *)String::allocate((String *)&local_618,0x36); + uVar14 = s_rhs_data____0_____rhs_type______t_00467c60._52_2_; + uVar10 = s_rhs_data____0_____rhs_type______t_00467c60._40_8_; + uVar9 = s_rhs_data____0_____rhs_type______t_00467c60._32_8_; + uVar8 = s_rhs_data____0_____rhs_type______t_00467c60._24_8_; + uVar7 = s_rhs_data____0_____rhs_type______t_00467c60._16_8_; + uVar6 = s_rhs_data____0_____rhs_type______t_00467c60._8_8_; + uVar5 = s_rhs_data____0_____rhs_type______t_00467c60._0_8_; + *(undefined4 *)(pcVar18 + 0x30) = s_rhs_data____0_____rhs_type______t_00467c60._48_4_; + *(undefined2 *)(pcVar18 + 0x34) = uVar14; + *(undefined8 *)pcVar18 = uVar5; + *(undefined8 *)(pcVar18 + 8) = uVar6; + *(undefined8 *)(pcVar18 + 0x10) = uVar7; + *(undefined8 *)(pcVar18 + 0x18) = uVar8; + *(undefined8 *)(pcVar18 + 0x20) = uVar9; + *(undefined8 *)(pcVar18 + 0x28) = uVar10; + error(-0xd7,(String *)&local_618, + "static void cv::SVD::backSubst(cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x5af); + String::deallocate((String *)&local_618); + } + _OutputArray::create(param_5,iVar15,iVar25,uVar24,-1,false,0); + iVar17 = _InputArray::kind((_InputArray *)param_5); + if (iVar17 == 0x10000) { + pMVar22 = *(Mat **)(param_5 + 8); + local_438 = &local_470; + local_430 = &local_428; + local_478 = *(undefined4 *)pMVar22; + local_474 = *(int *)(pMVar22 + 4); + local_470 = *(undefined4 *)(pMVar22 + 8); + local_46c = *(undefined4 *)(pMVar22 + 0xc); + local_468 = *(undefined8 *)(pMVar22 + 0x10); + local_460 = *(undefined8 *)(pMVar22 + 0x18); + local_458 = *(undefined8 *)(pMVar22 + 0x20); + local_450 = *(undefined8 *)(pMVar22 + 0x28); + local_448 = *(undefined8 *)(pMVar22 + 0x30); + local_440 = *(long *)(pMVar22 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar21 = (int *)(local_440 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = *piVar21 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar22 + 4) < 3) { + local_428 = **(ulong **)(pMVar22 + 0x48); + local_420 = (*(ulong **)(pMVar22 + 0x48))[1]; + } + else { + local_474 = 0; + Mat::copySize((Mat *)&local_478,pMVar22); + } + } + else { + _InputArray::getMat_((int)param_5); + } + if (uVar24 == 5) { + /* try { // try from 002aa79c to 003aa7af has its CatchHandler @ 002aaa9c */ + uVar23 = uVar26 >> 2; + if (uVar26 == 0) { + uVar23 = 1; + } + FUN_002a88f8(iVar16,iVar15,local_5e8,uVar23,local_588,local_548 >> 2,0,local_528, + (int)(local_4e8 >> 2),local_4c8,(int)(local_488 >> 2),iVar25,local_468, + (int)(local_428 >> 2),(ulong)(local_418 + 7) & 0xfffffffffffffff8); + } + else if (uVar24 == 6) { + uVar23 = uVar26 >> 3; + if (uVar26 == 0) { + uVar23 = 1; + } + FUN_002a7f00(iVar16,iVar15,local_5e8,uVar23,local_588,local_548 >> 3,0,local_528, + (int)(local_4e8 >> 3),local_4c8,(int)(local_488 >> 3),iVar25,local_468, + (int)(local_428 >> 3),(ulong)(local_418 + 7) & 0xfffffffffffffff8); + } + else { + local_608 = 0; + local_600 = 0; + String::allocate((String *)&local_608,0); + error(-0xd2,(String *)&local_608, + "static void cv::SVD::backSubst(cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x5bc); + String::deallocate((String *)&local_608); + } + if (local_440 != 0) { + piVar21 = (int *)(local_440 + 0x14); + do { + iVar16 = *piVar21; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar16 = 0; + puVar20 = local_438; + do { + *puVar20 = 0; + iVar16 = iVar16 + 1; + puVar20 = puVar20 + 1; + } while (iVar16 < local_474); + } + if (local_430 != &local_428) { + fastFree(local_430); + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + if (local_4a0 != 0) { + piVar21 = (int *)(local_4a0 + 0x14); + do { + iVar16 = *piVar21; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_4d8); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar16 = 0; + piVar21 = local_498; + do { + *piVar21 = 0; + iVar16 = iVar16 + 1; + piVar21 = piVar21 + 1; + } while (iVar16 < local_4d4); + } + if (local_490 != &local_488) { + fastFree(local_490); + } + if (local_500 != 0) { + piVar21 = (int *)(local_500 + 0x14); + do { + iVar16 = *piVar21; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_538); + } + } + local_500 = 0; + local_528 = 0; + local_510 = 0; + local_518 = 0; + local_520 = 0; + if (0 < local_534) { + iVar16 = 0; + piVar21 = local_4f8; + do { + *piVar21 = 0; + iVar16 = iVar16 + 1; + piVar21 = piVar21 + 1; + } while (iVar16 < local_534); + } + if (local_4f0 != &local_4e8) { + fastFree(local_4f0); + } + if (local_560 != 0) { + piVar21 = (int *)(local_560 + 0x14); + do { + iVar16 = *piVar21; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_598); + } + } + local_560 = 0; + local_588 = 0; + local_570 = 0; + local_578 = 0; + local_580 = 0; + if (0 < local_594) { + iVar16 = 0; + piVar21 = local_558; + do { + *piVar21 = 0; + iVar16 = iVar16 + 1; + piVar21 = piVar21 + 1; + } while (iVar16 < local_594); + } + if (local_550 != &local_548) { + fastFree(local_550); + } + if (local_5c0 != 0) { + piVar21 = (int *)(local_5c0 + 0x14); + do { + iVar16 = *piVar21; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar4) { + *piVar21 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_5f8); + } + } + local_5c0 = 0; + local_5e8 = 0; + local_5d0 = 0; + local_5d8 = 0; + local_5e0 = 0; + if (0 < local_5f4) { + iVar16 = 0; + piVar21 = local_5b8; + do { + *piVar21 = 0; + iVar16 = iVar16 + 1; + piVar21 = piVar21 + 1; + } while (iVar16 < local_5f4); + } + if (local_5b0 != &local_5a8) { + fastFree(local_5b0); + } + return; +} + + +================================================================== + +### FUNC 002aad5c (108 bytes) name=backSubst + +/* cv::SVD::backSubst(cv::_InputArray const&, cv::_OutputArray const&) const */ + +void __thiscall cv::SVD::backSubst(SVD *this,_InputArray *param_1,_OutputArray *param_2) + +{ + undefined4 local_48 [2]; + SVD *local_40; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [2]; + SVD *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + SVD *local_10; + undefined4 local_8; + undefined4 local_4; + + local_40 = this + 0x60; + local_10 = this + 0xc0; + local_48[0] = 0x1010000; + local_30[0] = 0x1010000; + local_18[0] = 0x1010000; + local_38 = 0; + local_34 = 0; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_28 = this; + backSubst((_InputArray *)local_48,(_InputArray *)local_30,(_InputArray *)local_18,param_1,param_2) + ; + return; +} + + +================================================================== + +### FUNC 002aadc8 (4 bytes) name=SVBackSubst + +/* cv::SVBackSubst(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::SVBackSubst(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _InputArray *param_4,_OutputArray *param_5) + +{ + (*(code *)PTR_backSubst_005016d8)(); + return; +} + + +================================================================== + +### FUNC 002aadcc (780 bytes) name=cvDet + +undefined1 [16] cvDet(cv *param_1) + +{ + int *piVar1; + uint uVar2; + int iVar3; + char cVar4; + bool bVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + undefined8 uVar9; + undefined8 uVar10; + long lVar11; + int iVar12; + AutoBuffer *in_x5; + double *pdVar13; + double dVar14; + undefined1 auVar15 [16]; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if ((((param_1 != (cv *)0x0) && ((*(uint *)param_1 & 0xffff0000) == 0x42420000)) && + (0 < *(int *)(param_1 + 0x24))) && + (((iVar12 = *(int *)(param_1 + 0x20), 0 < iVar12 && + (pdVar13 = *(double **)(param_1 + 0x18), pdVar13 != (double *)0x0)) && (iVar12 < 4)))) { + uVar2 = *(uint *)param_1 & 0xfff; + iVar3 = *(int *)(param_1 + 4); + if (*(int *)(param_1 + 0x24) != iVar12) { + local_60 = 0; + local_58 = 0; + in_x5 = (AutoBuffer *)cv::String::allocate((String *)&local_60,0x11); + uVar10 = s_rows____mat_>cols_00467c98._8_8_; + uVar9 = s_rows____mat_>cols_00467c98._0_8_; + in_x5[0x10] = (AutoBuffer)s_rows____mat_>cols_00467c98[0x10]; + *(undefined8 *)in_x5 = uVar9; + *(undefined8 *)(in_x5 + 8) = uVar10; + cv::error(-0xd7,(String *)&local_60,"double cvDet(const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x5e4); + cv::String::deallocate((String *)&local_60); + } + if (uVar2 == 5) { + if (iVar12 == 2) { + auVar15._8_8_ = 0; + auVar15._0_8_ = + (double)*(float *)pdVar13 * (double)*(float *)((long)pdVar13 + (long)iVar3 + 4) - + (double)*(float *)((long)pdVar13 + 4) * (double)*(float *)((long)pdVar13 + (long)iVar3) + ; + return auVar15; + } + if (iVar12 == 3) { + lVar11 = (long)iVar3; + dVar19 = (double)*(float *)((long)pdVar13 + lVar11 * 2); + dVar17 = (double)*(float *)((long)pdVar13 + lVar11 + 8); + dVar16 = (double)*(float *)((long)pdVar13 + (long)(iVar3 << 1) + 4); + dVar14 = (double)*(float *)((long)pdVar13 + (long)(iVar3 << 1) + 8); + dVar18 = (double)*(float *)((long)pdVar13 + lVar11 + 4); + auVar8._8_8_ = 0; + auVar8._0_8_ = ((double)*(float *)pdVar13 * (dVar18 * dVar14 - dVar17 * dVar16) - + (double)*(float *)((long)pdVar13 + 4) * + (dVar14 * (double)*(float *)((long)pdVar13 + lVar11) - dVar17 * dVar19)) + + (dVar16 * (double)*(float *)((long)pdVar13 + lVar11) - dVar18 * dVar19) * + (double)*(float *)(pdVar13 + 1); + return auVar8; + } + } + else if (uVar2 == 6) { + if (iVar12 == 2) { + auVar7._8_8_ = 0; + auVar7._0_8_ = *pdVar13 * *(double *)((long)pdVar13 + (long)iVar3 + 8) - + pdVar13[1] * *(double *)((long)pdVar13 + (long)iVar3); + return auVar7; + } + if (iVar12 == 3) { + lVar11 = (long)iVar3; + dVar17 = *(double *)((long)pdVar13 + lVar11 + 0x10); + dVar19 = *(double *)((long)pdVar13 + lVar11 * 2); + dVar14 = *(double *)((long)pdVar13 + (long)(iVar3 << 1) + 0x10); + dVar18 = *(double *)((long)pdVar13 + (long)(iVar3 << 1) + 8); + dVar16 = *(double *)((long)pdVar13 + lVar11 + 8); + auVar6._8_8_ = 0; + auVar6._0_8_ = (*pdVar13 * (dVar16 * dVar14 - dVar17 * dVar18) - + (dVar14 * *(double *)((long)pdVar13 + lVar11) - dVar17 * dVar19) * pdVar13[1] + ) + (dVar18 * *(double *)((long)pdVar13 + lVar11) - dVar16 * dVar19) * + pdVar13[2]; + return auVar6; + } + } + } + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + local_68 = 0; + local_64 = 0; + local_78[0] = 0x1010000; + local_70 = (Mat *)&local_60; + auVar15 = cv::determinant((_InputArray *)local_78); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return auVar15; +} + + +================================================================== + +### FUNC 002ab120 (2988 bytes) name=cvSVBkSb + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvSVBkSb(cv *param_1,cv *param_2,cv *param_3,cv *param_4,cv *param_5,AutoBuffer *param_6) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + uint uVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + undefined4 *puVar10; + int iVar11; + undefined8 *puVar12; + AutoBuffer *pAVar13; + AutoBuffer *pAVar14; + undefined4 local_300 [2]; + Mat *local_2f8; + undefined4 local_2f0; + undefined4 local_2ec; + undefined4 local_2e8 [2]; + Mat *local_2e0; + undefined4 local_2d8; + undefined4 local_2d4; + undefined4 local_2d0 [2]; + Mat *local_2c8; + uint local_2c0; + uint local_2bc; + undefined8 local_2b8; + Mat *local_2b0; + uint local_2a8; + uint local_2a4; + undefined4 local_2a0; + int local_29c; + undefined4 local_298; + undefined4 local_294; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + undefined4 *local_260; + undefined8 *local_258; + undefined8 auStack_250 [2]; + undefined4 local_240; + int local_23c; + undefined4 local_238; + undefined4 local_234; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined4 *local_200; + undefined8 *local_1f8; + undefined8 auStack_1f0 [2]; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + AutoBuffer *local_198; + undefined8 local_190; + undefined8 uStack_188; + uint local_180; + int iStack_17c; + undefined8 uStack_178; + long local_170; + undefined8 local_168; + AutoBuffer *local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined8 local_120; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + AutoBuffer *local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + AutoBuffer *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + uVar5 = (uint)param_6; + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = (AutoBuffer *)&local_190; + local_1a0 = &uStack_1d8; + uStack_1d8 = _UNK_002abe38; + local_1e0 = _DAT_002abe30; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + uStack_188 = 0; + local_190 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,local_198); + local_120 = CONCAT44(iStack_17c,local_180); + local_d8 = &local_d0; + local_e0 = &uStack_118; + uStack_c8 = 0; + local_d0 = 0; + uStack_118 = uStack_178; + local_110 = local_170; + local_108 = local_168; + local_100 = local_160; + local_f8 = local_158; + local_f0 = local_150; + local_e8 = local_148; + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iStack_17c < 3) { + local_d0 = *local_138; + uStack_c8 = local_138[1]; + pAVar14 = local_160; + } + else { + local_120 = (ulong)local_180; + cv::Mat::copySize((Mat *)&local_120,(Mat *)&local_180); + pAVar14 = local_160; + } + if ((uVar5 >> 1 & 1) != 0) { + local_78 = &local_70; + pAVar14 = (AutoBuffer *)&uStack_b8; + local_2a8 = 0; + local_2a4 = 0; + local_2b8._4_4_ = (undefined4)((ulong)local_2b8 >> 0x20); + local_2b8 = CONCAT44(local_2b8._4_4_,0x2010000); + local_b0 = 0; + uStack_a8 = 0; + local_a0 = 0; + uStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + uStack_68 = 0; + local_70 = 0; + local_2c0 = 0; + local_2bc = 0; + local_2d0[0] = 0x1010000; + local_2c8 = (Mat *)&local_2a0; + local_2b0 = (Mat *)&local_c0; + local_c0 = _DAT_002abe30; + uStack_b8 = (Mat *)_UNK_002abe38; + local_80 = pAVar14; + cv::transpose((_InputArray *)local_2d0,(_OutputArray *)&local_2b8); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (local_29c < 1) { +LAB_002abb50: + local_2a0 = (undefined4)local_c0; + if (2 < local_c0._4_4_) goto LAB_002abb5c; + local_298 = (undefined4)uStack_b8; + local_294 = uStack_b8._4_4_; + *local_258 = *local_78; + local_258[1] = local_78[1]; + local_29c = local_c0._4_4_; + } + else { + iVar11 = 0; + puVar10 = local_260; + do { + *puVar10 = 0; + iVar11 = iVar11 + 1; + puVar10 = puVar10 + 1; + } while (iVar11 < local_29c); + if (local_29c < 3) goto LAB_002abb50; +LAB_002abb5c: + local_2a0 = (undefined4)local_c0; + /* catch() { ... } // from try @ 002abbb0 with catch @ 002abb60 + catch() { ... } // from try @ 002abc90 with catch @ 002abb60 + catch() { ... } // from try @ 002abcd8 with catch @ 002abb60 */ + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_c0); + } + uStack_278 = uStack_98; + local_280 = local_a0; + lStack_268 = lStack_88; + local_270 = local_90; + uStack_288 = uStack_a8; + local_290 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002abbb0 to 003abbb3 has its CatchHandler @ 002abb60 */ + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar11 = 0; + pAVar13 = local_80; + do { + *(undefined4 *)pAVar13 = 0; + iVar11 = iVar11 + 1; + pAVar13 = pAVar13 + 4; + } while (iVar11 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + } + uVar2 = uVar5 & 4; + if ((uVar5 >> 2 & 1) == 0) { + local_78 = &local_70; + local_80 = (AutoBuffer *)&uStack_b8; + uStack_b8 = (Mat *)_UNK_002abe38; + local_c0 = _DAT_002abe30; + local_2b8 = CONCAT44(local_2b8._4_4_,0x2010000); + local_b0 = 0; + uStack_a8 = 0; + local_a0 = 0; + uStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + uStack_68 = 0; + local_70 = 0; + pAVar14 = (AutoBuffer *)0x1010000; + local_2d0[0] = 0x1010000; + local_2c8 = (Mat *)&local_240; + local_2c0 = uVar2; + local_2bc = uVar2; + local_2b0 = (Mat *)&local_c0; + local_2a8 = uVar2; + local_2a4 = uVar2; + cv::transpose((_InputArray *)local_2d0,(_OutputArray *)&local_2b8); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + /* try { // try from 002ab898 to 003ab89b has its CatchHandler @ 002ab948 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + /* try { // try from 002ab8e4 to 003ab8e7 has its CatchHandler @ 002ab938 */ + uStack_228 = 0; + if (local_23c < 1) { +LAB_002ab918: + local_240 = (undefined4)local_c0; + if (2 < local_c0._4_4_) goto LAB_002ab924; + /* try { // try from 002abc1c to 003abc1f has its CatchHandler @ 002abcb4 */ + local_238 = (undefined4)uStack_b8; + local_234 = uStack_b8._4_4_; + *local_1f8 = *local_78; + local_1f8[1] = local_78[1]; + local_23c = local_c0._4_4_; + } + else { + /* try { // try from 002ab8ec to 003ab8ef has its CatchHandler @ 002ab948 */ + iVar11 = 0; + puVar10 = local_200; + do { + *puVar10 = 0; + iVar11 = iVar11 + 1; + /* try { // try from 002ab900 to 003ab903 has its CatchHandler @ 002ab5d8 */ + puVar10 = puVar10 + 1; + } while (iVar11 < local_23c); + /* catch() { ... } // from try @ 002ab6b0 with catch @ 002ab908 */ + if (local_23c < 3) goto LAB_002ab918; +LAB_002ab924: + local_240 = (undefined4)local_c0; + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_c0); + } + /* try { // try from 002ab934 to 003ab937 has its CatchHandler @ 002ab5d8 */ + /* catch() { ... } // from try @ 002ab8e4 with catch @ 002ab938 */ + /* catch() { ... } // from try @ 002ab65c with catch @ 002ab948 + catch() { ... } // from try @ 002ab6b8 with catch @ 002ab948 + catch() { ... } // from try @ 002ab898 with catch @ 002ab948 + catch() { ... } // from try @ 002ab8ec with catch @ 002ab948 */ + uStack_218 = uStack_98; + local_220 = local_a0; + lStack_208 = lStack_88; + local_210 = local_90; + uStack_228 = uStack_a8; + local_230 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + /* try { // try from 002abc90 to 003abcaf has its CatchHandler @ 002abb60 */ + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar11 = 0; + pAVar13 = local_80; + do { + *(undefined4 *)pAVar13 = 0; + iVar11 = iVar11 + 1; + pAVar13 = pAVar13 + 4; + } while (iVar11 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + } + if (param_4 == (cv *)0x0) goto LAB_002ab41c; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,pAVar14); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar9 = local_78; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002ab360: + if (2 < local_c0._4_4_) goto LAB_002ab36c; + uStack_1d8 = uStack_b8; + local_1e0 = local_c0; + *(undefined8 *)local_198 = *local_78; + *(undefined8 *)(local_198 + 8) = puVar9[1]; + } + else { + iVar11 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar11 = iVar11 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar11 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002ab360; +LAB_002ab36c: + local_1e0 = CONCAT44(local_1e0._4_4_,(undefined4)local_c0); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_c0); + } + uStack_1b8 = uStack_98; + local_1c0 = local_a0; + lStack_1a8 = lStack_88; + local_1b0 = local_90; + uStack_1c8 = uStack_a8; + local_1d0 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar11 = 0; + pAVar14 = local_80; + do { + *(undefined4 *)pAVar14 = 0; + iVar11 = iVar11 + 1; + pAVar14 = pAVar14 + 4; + } while (iVar11 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } +LAB_002ab41c: + local_2a8 = 0; + local_2a4 = 0; + local_2b8 = CONCAT44(local_2b8._4_4_,0x1010000); + local_2f0 = 0; + local_2ec = 0; + local_300[0] = 0x1010000; + local_2d8 = 0; + local_2d4 = 0; + local_2e8[0] = 0x1010000; + local_2c0 = 0; + local_2bc = 0; + local_2d0[0] = 0x1010000; + local_b0 = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x2010000); + local_2f8 = aMStack_60; + local_2e0 = (Mat *)&local_2a0; + local_2c8 = (Mat *)&local_240; + local_2b0 = (Mat *)&local_1e0; + uStack_b8 = (Mat *)&local_180; + cv::SVD::backSubst((_InputArray *)local_300,(_InputArray *)local_2e8,(_InputArray *)local_2d0, + (_InputArray *)&local_2b8,(_OutputArray *)&local_c0); + if (local_170 != local_110) { + local_2b8 = 0; + local_2b0 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_2b8,0x15); + cVar3 = s_dst_data____dst0_data_00465ca0[0x14]; + uVar7 = s_dst_data____dst0_data_00465ca0._8_8_; + uVar6 = s_dst_data____dst0_data_00465ca0._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_dst_data____dst0_data_00465ca0._16_4_; + pcVar8[0x14] = cVar3; + *(undefined8 *)pcVar8 = uVar6; + *(undefined8 *)(pcVar8 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_2b8, + "void cvSVBkSb(const CvArr*, const CvArr*, const CvArr*, const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x697); + cv::String::deallocate((String *)&local_2b8); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = (AutoBuffer *)0x0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar11 = 0; + puVar9 = local_e0; + do { + *(undefined4 *)puVar9 = 0; + iVar11 = iVar11 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar11 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = (AutoBuffer *)0x0; + local_168 = 0; + if (0 < iStack_17c) { + iVar11 = 0; + do { + *local_140 = 0; + iVar11 = iVar11 + 1; + /* catch() { ... } // from try @ 002ab60c with catch @ 002ab5d8 + catch() { ... } // from try @ 002ab784 with catch @ 002ab5d8 + catch() { ... } // from try @ 002ab900 with catch @ 002ab5d8 + catch() { ... } // from try @ 002ab934 with catch @ 002ab5d8 */ + local_140 = local_140 + 1; + } while (iVar11 < iStack_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002ab60c to 003ab62b has its CatchHandler @ 002ab5d8 */ + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar11 = 0; + puVar9 = local_1a0; + do { + *(undefined4 *)puVar9 = 0; + iVar11 = iVar11 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar11 < local_1e0._4_4_); + } + /* try { // try from 002ab65c to 003ab65f has its CatchHandler @ 002ab948 */ + if (local_198 != (AutoBuffer *)&local_190) { + cv::fastFree(local_198); + } + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_23c) { + /* try { // try from 002ab6b0 to 003ab6b3 has its CatchHandler @ 002ab908 */ + iVar11 = 0; + do { + *local_200 = 0; + /* try { // try from 002ab6b8 to 003ab713 has its CatchHandler @ 002ab948 */ + iVar11 = iVar11 + 1; + local_200 = local_200 + 1; + } while (iVar11 < local_23c); + } + if (local_1f8 != auStack_1f0) { + cv::fastFree(local_1f8); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_29c) { + iVar11 = 0; + do { + *local_260 = 0; + iVar11 = iVar11 + 1; + local_260 = local_260 + 1; + } while (iVar11 < local_29c); + } + if (local_258 != auStack_250) { + cv::fastFree(local_258); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + /* try { // try from 002ab784 to 003ab7ab has its CatchHandler @ 002ab5d8 */ + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002abe40 (4032 bytes) name=FUN_002abe40 + +undefined8 +FUN_002abe40(float *param_1,ulong param_2,float *param_3,undefined4 *param_4,ulong param_5, + uint param_6,long param_7) + +{ + bool bVar1; + long lVar2; + undefined8 *puVar3; + undefined8 *puVar4; + ulong uVar5; + undefined4 uVar6; + int iVar7; + int iVar8; + int *piVar9; + float *pfVar10; + ulong uVar11; + long lVar12; + float *pfVar13; + float *pfVar14; + uint uVar15; + uint uVar16; + int iVar17; + long lVar18; + int iVar19; + uint uVar20; + undefined4 *puVar21; + int *piVar22; + long lVar23; + long lVar24; + long lVar25; + float *pfVar26; + uint uVar27; + uint uVar28; + ulong uVar29; + uint uVar30; + long lVar31; + uint uVar32; + long lVar33; + uint uVar34; + ulong uVar35; + undefined4 *puVar36; + int *piVar37; + float fVar38; + float fVar39; + undefined8 uVar40; + undefined8 uVar41; + float fVar42; + float fVar43; + float fVar44; + undefined8 uVar45; + int iVar46; + int iVar47; + long lVar48; + long lVar49; + size_t __n; + float fVar50; + float fVar51; + float fVar52; + float fVar53; + float fVar54; + float fVar55; + + param_2 = param_2 >> 2; + if (param_4 == (undefined4 *)0x0) { + piVar9 = (int *)(param_7 + 3U & 0xfffffffffffffffc); + /* try { // try from 002acc48 to 003acc4b has its CatchHandler @ 002acd50 */ + piVar37 = piVar9 + (int)param_6; + /* try { // try from 002acc50 to 003acc8f has its CatchHandler @ 002acd48 */ + if ((int)param_6 < 1) goto LAB_002ac7bc; + } + else { + param_5 = param_5 >> 2; + if ((int)param_6 < 1) goto LAB_002ac7bc; + uVar34 = 0; + lVar49 = NEON_shl(param_5 + 1,2); + __n = NEON_shl((ulong)(param_6 - 1) + 1,2); + puVar36 = param_4; + puVar21 = param_4; + do { + uVar34 = uVar34 + 1; + memset(puVar36,0,__n); + *puVar21 = 0x3f800000; + puVar21 = (undefined4 *)((long)puVar21 + lVar49); + puVar36 = (undefined4 *)((long)puVar36 + lVar49 + -4); + } while (uVar34 != param_6); + piVar9 = (int *)(param_7 + 3U & 0xfffffffffffffffc); + piVar37 = piVar9 + (int)param_6; + } + uVar30 = param_6 - 1; + iVar8 = param_6 * param_6 * 0x1e; + pfVar13 = param_1 + 2; + uVar34 = 2; + lVar49 = 0; + pfVar10 = param_1 + param_2; + pfVar26 = param_1; + uVar20 = 1; + do { + iVar19 = (int)lVar49; + param_3[lVar49] = *pfVar26; + if (iVar19 < (int)uVar30) { + fVar42 = ABS(pfVar13[-1]); + pfVar14 = pfVar13; + uVar16 = uVar20; + uVar15 = uVar20; + uVar27 = uVar34; + if ((int)uVar34 < (int)param_6) { + do { + fVar43 = ABS(*pfVar14); + uVar16 = uVar27; + if (ABS(*pfVar14) <= fVar42) { + fVar43 = fVar42; + uVar16 = uVar15; + } + fVar42 = fVar43; + uVar27 = uVar27 + 1; + pfVar14 = pfVar14 + 1; + uVar15 = uVar16; + /* try { // try from 002abfa8 to 003abfab has its CatchHandler @ 002ac008 */ + } while (uVar27 != param_6); + } + piVar9[lVar49] = uVar16; + } + /* try { // try from 002abfb0 to 003abfb3 has its CatchHandler @ 002abcdc */ + if (iVar19 != 0) { + fVar42 = ABS(param_1[lVar49]); + if (iVar19 == 1) { + /* try { // try from 002acc04 to 003acc07 has its CatchHandler @ 002acd48 */ + iVar47 = 0; + } + else { + iVar47 = 0; + iVar46 = 1; + pfVar14 = pfVar10; + do { + fVar38 = *pfVar14; + pfVar14 = pfVar14 + param_2; + fVar43 = ABS(fVar38); + iVar17 = iVar46; + if (ABS(fVar38) <= fVar42) { + /* catch() { ... } // from try @ 002abd8c with catch @ 002abff4 */ + fVar43 = fVar42; + iVar17 = iVar47; + } + iVar47 = iVar17; + fVar42 = fVar43; + iVar46 = iVar46 + 1; + } while (iVar46 != iVar19); + } + /* try { // try from 002ac004 to 003ac007 has its CatchHandler @ 002abcdc */ + piVar37[lVar49] = iVar47; + } + /* catch() { ... } // from try @ 002abfa8 with catch @ 002ac008 */ + fVar42 = DAT_002ace00; + lVar49 = lVar49 + 1; + pfVar26 = pfVar26 + param_2 + 1; + /* try { // try from 002ac018 to 003ac01b has its CatchHandler @ 002abcdc */ + pfVar10 = pfVar10 + 1; + /* catch() { ... } // from try @ 002ac070 with catch @ 002ac01c + catch() { ... } // from try @ 002ac254 with catch @ 002ac01c + catch() { ... } // from try @ 002ac5dc with catch @ 002ac01c + catch() { ... } // from try @ 002ac690 with catch @ 002ac01c */ + uVar34 = uVar34 + 1; + pfVar13 = pfVar13 + param_2 + 1; + bVar1 = (int)uVar20 < (int)param_6; + uVar20 = uVar20 + 1; + } while (bVar1); + if ((1 < (int)param_6) && (iVar8 != 0)) { + iVar19 = 0; +LAB_002ac050: + fVar43 = ABS(param_1[*piVar9]); + if ((int)uVar30 < 2) { + uVar11 = 0; + uVar35 = 0; + } + else { + uVar35 = 0; + /* try { // try from 002ac070 to 003ac08f has its CatchHandler @ 002ac01c */ + uVar34 = 1; + uVar11 = param_2; + piVar22 = piVar9; + do { + piVar22 = piVar22 + 1; + lVar49 = (long)*piVar22 + uVar11; + uVar11 = uVar11 + param_2; + fVar38 = ABS(param_1[lVar49]); + uVar20 = uVar34; + if (fVar38 <= fVar43) { + uVar20 = (uint)uVar35; + } + uVar35 = (ulong)uVar20; + /* try { // try from 002ac094 to 003ac0a7 has its CatchHandler @ 002ac740 */ + uVar34 = uVar34 + 1; + if (fVar38 <= fVar43) { + fVar38 = fVar43; + } + fVar43 = fVar38; + } while (uVar34 != uVar30); + uVar11 = -(ulong)(uVar20 >> 0x1f) & 0xfffffffc00000000 | uVar35 << 2; + } + uVar11 = (ulong)*(uint *)((long)piVar9 + uVar11); + lVar49 = 1; + do { + uVar34 = piVar37[lVar49]; + uVar20 = (uint)lVar49; + lVar12 = lVar49 + (long)(int)uVar34 * param_2; + lVar49 = lVar49 + 1; + fVar38 = ABS(param_1[lVar12]); + if (fVar38 <= fVar43) { + uVar34 = (uint)uVar35; + } + uVar35 = (ulong)uVar34; + if (fVar38 <= fVar43) { + uVar20 = (uint)uVar11; + fVar38 = fVar43; + } + fVar43 = fVar38; + uVar11 = (ulong)uVar20; + } while ((int)lVar49 < (int)param_6); + lVar12 = (long)(int)uVar34; + lVar24 = (long)(int)uVar20; + lVar49 = lVar12 * param_2; + fVar43 = param_1[lVar49 + lVar24]; + fVar38 = ABS(fVar43); + if (fVar42 < fVar38) { + lVar23 = lVar12 * 4; + lVar25 = lVar24 * 4; + /* try { // try from 002ac134 to 003ac21b has its CatchHandler @ 002ac694 */ + fVar55 = (param_3[lVar24] - param_3[lVar12]) * 0.5; + fVar50 = ABS(fVar55); + if (fVar50 < fVar38) { + fVar44 = (fVar50 / fVar38) * (fVar50 / fVar38) + 1.0; + fVar39 = SQRT(fVar44); + if (NAN(fVar39)) { + /* catch() { ... } // from try @ 002ac9b0 with catch @ 002acd34 */ + /* catch() { ... } // from try @ 002ac95c with catch @ 002acd48 + catch() { ... } // from try @ 002ac9b8 with catch @ 002acd48 + catch() { ... } // from try @ 002acc04 with catch @ 002acd48 + catch() { ... } // from try @ 002acc50 with catch @ 002acd48 + catch() { ... } // from try @ 002acce0 with catch @ 002acd48 */ + /* catch() { ... } // from try @ 002acc48 with catch @ 002acd50 */ + /* catch() { ... } // from try @ 002ace0c with catch @ 002acd64 + catch() { ... } // from try @ 002ace98 with catch @ 002acd64 + catch() { ... } // from try @ 002aceb0 with catch @ 002acd64 */ + fVar39 = sqrtf(fVar44); + fVar39 = fVar38 * fVar39; + } + else { + fVar39 = fVar38 * fVar39; + } +LAB_002ac174: + fVar50 = fVar50 + fVar39; + fVar39 = ABS(fVar50); + if (fVar38 <= fVar39) goto LAB_002ac184; +LAB_002acb10: + fVar44 = (fVar39 / fVar38) * (fVar39 / fVar38) + 1.0; + fVar39 = SQRT(fVar44); + if (NAN(fVar39)) { + /* try { // try from 002accd8 to 003accdb has its CatchHandler @ 002acd04 */ + /* try { // try from 002acce0 to 003acce3 has its CatchHandler @ 002acd48 */ + /* try { // try from 002accfc to 003accff has its CatchHandler @ 002ac8d0 */ + fVar39 = sqrtf(fVar44); + /* catch() { ... } // from try @ 002accd8 with catch @ 002acd04 */ + fVar39 = fVar38 * fVar39; + /* try { // try from 002acd30 to 003acd33 has its CatchHandler @ 002ac8d0 */ + } + else { + fVar39 = fVar38 * fVar39; + } + } + else { + if (0.0 < fVar50) { + fVar44 = (fVar38 / fVar50) * (fVar38 / fVar50) + 1.0; + fVar39 = SQRT(fVar44); + if (NAN(fVar39)) { + fVar39 = sqrtf(fVar44); + } + fVar39 = fVar50 * fVar39; + goto LAB_002ac174; + } + fVar50 = fVar50 + 0.0; + fVar39 = ABS(fVar50); + if (fVar39 < fVar38) goto LAB_002acb10; +LAB_002ac184: + if (fVar39 <= 0.0) { + fVar38 = fVar50 / 0.0; + fVar39 = fVar43 / 0.0; + goto joined_r0x002ac1bc; + } + fVar44 = (fVar38 / fVar39) * (fVar38 / fVar39) + 1.0; + fVar38 = SQRT(fVar44); + if (NAN(fVar38)) { + fVar38 = sqrtf(fVar44); + } + fVar39 = fVar39 * fVar38; + } + fVar38 = fVar50 / fVar39; + fVar39 = fVar43 / fVar39; +joined_r0x002ac1bc: + fVar43 = (fVar43 / fVar50) * fVar43; + if (fVar55 < 0.0) { + fVar39 = -fVar39; + fVar43 = -fVar43; + } + param_1[lVar49 + lVar24] = 0.0; + param_3[lVar12] = param_3[lVar12] - fVar43; + param_3[lVar24] = param_3[lVar24] + fVar43; + if (0 < (int)uVar34) { + lVar18 = 0; + uVar27 = 0; + do { + fVar50 = *(float *)((long)param_1 + lVar18 + lVar25); + uVar27 = uVar27 + 1; + fVar43 = *(float *)((long)param_1 + lVar18 + lVar23); + *(float *)((long)param_1 + lVar18 + lVar23) = fVar43 * fVar38 - fVar50 * fVar39; + *(float *)((long)param_1 + lVar18 + lVar25) = fVar50 * fVar38 + fVar39 * fVar43; + lVar18 = lVar18 + param_2 * 4; + } while (uVar27 != uVar34); + } + uVar27 = uVar34 + 1; + if ((int)uVar27 < (int)uVar20) { + /* try { // try from 002ac254 to 003ac267 has its CatchHandler @ 002ac01c */ + pfVar13 = param_1 + lVar24 + lVar49 + param_2; + pfVar10 = param_1 + lVar49 + (int)uVar27; + do { + fVar50 = *pfVar13; + fVar43 = *pfVar10; + pfVar26 = pfVar10 + 1; + *pfVar10 = fVar43 * fVar38 - fVar50 * fVar39; + *pfVar13 = fVar50 * fVar38 + fVar39 * fVar43; + pfVar13 = pfVar13 + param_2; + pfVar10 = pfVar26; + } while (pfVar26 != param_1 + lVar49 + (int)uVar27 + 1 + (ulong)((uVar20 - 2) - uVar34)); + } + uVar34 = uVar20 + 1; + if ((int)uVar34 < (int)param_6) { + lVar31 = lVar24 * param_2; + lVar18 = lVar49 + lVar24 + 1; + /* try { // try from 002ac2a8 to 003ac2ab has its CatchHandler @ 002ac740 */ + lVar48 = lVar24 + 1 + lVar31; + lVar33 = (lVar24 + 5 + lVar49) * 4; + uVar16 = (param_6 - uVar20) - 1; + if ((lVar18 * 4 < (lVar24 + 5 + lVar31) * 4 && + (lVar33 + lVar48 * -4 != 0 && lVar48 * 4 <= lVar33)) || (uVar16 < 7)) { + pfVar13 = param_1 + lVar49 + (int)uVar34; + do { + fVar50 = pfVar13[lVar31 - lVar49]; + fVar43 = *pfVar13; + *pfVar13 = fVar43 * fVar38 - fVar50 * fVar39; + pfVar13[lVar31 - lVar49] = fVar50 * fVar38 + fVar39 * fVar43; + pfVar13 = pfVar13 + 1; + } while (pfVar13 != param_1 + lVar49 + (int)uVar34 + 1 + (ulong)((param_6 - 2) - uVar20)); + } + else { + uVar15 = -((uint)((ulong)(param_1 + lVar18) >> 2) & 3) & 3; + if (uVar16 < uVar15) { + uVar15 = uVar16; + } + uVar32 = uVar34; + if (uVar15 != 0) { + lVar33 = (int)uVar34 + lVar31; + lVar2 = (int)uVar34 + lVar49; + uVar32 = uVar20 + 2; + fVar43 = param_1[lVar2]; + fVar50 = param_1[lVar33]; + /* try { // try from 002ac338 to 003ac33b has its CatchHandler @ 002ac69c */ + param_1[lVar2] = fVar43 * fVar38 - fVar50 * fVar39; + param_1[lVar33] = fVar50 * fVar38 + fVar39 * fVar43; + if (uVar15 != 1) { + lVar33 = (int)uVar32 + lVar31; + lVar2 = (int)uVar32 + lVar49; + uVar32 = uVar20 + 3; + fVar50 = param_1[lVar33]; + fVar43 = param_1[lVar2]; + param_1[lVar2] = fVar43 * fVar38 - fVar50 * fVar39; + param_1[lVar33] = fVar50 * fVar38 + fVar39 * fVar43; + if (uVar15 == 3) { + lVar33 = (int)uVar32 + lVar31; + lVar2 = (int)uVar32 + lVar49; + fVar50 = param_1[lVar33]; + fVar43 = param_1[lVar2]; + param_1[lVar2] = fVar43 * fVar38 - fVar50 * fVar39; + param_1[lVar33] = fVar50 * fVar38 + fVar39 * fVar43; + uVar32 = uVar20 + 4; + } + } + } + uVar20 = ((uVar16 - uVar15) - 4 >> 2) + 1; + lVar33 = 0; + uVar28 = 0; + lVar48 = NEON_shl((ulong)uVar15 + lVar48,2); + lVar18 = NEON_shl((ulong)uVar15 + lVar18,2); + iVar47 = uVar20 * 4; + do { + uVar28 = uVar28 + 1; + puVar3 = (undefined8 *)((long)param_1 + lVar33 + lVar18); + lVar2 = lVar33 + lVar48; + lVar33 = lVar33 + 0x10; + puVar4 = (undefined8 *)((long)param_1 + lVar2); + fVar43 = (float)*puVar3; + fVar50 = (float)((ulong)*puVar3 >> 0x20); + fVar55 = (float)puVar3[1]; + fVar44 = (float)((ulong)puVar3[1] >> 0x20); + fVar51 = (float)*puVar4; + fVar52 = (float)((ulong)*puVar4 >> 0x20); + fVar53 = (float)puVar4[1]; + fVar54 = (float)((ulong)puVar4[1] >> 0x20); + puVar3[1] = CONCAT44(fVar44 * fVar38 - fVar54 * fVar39,fVar55 * fVar38 - fVar53 * fVar39 + ); + *puVar3 = CONCAT44(fVar50 * fVar38 - fVar52 * fVar39,fVar43 * fVar38 - fVar51 * fVar39); + puVar4[1] = CONCAT44(fVar54 * fVar38 + fVar44 * fVar39,fVar53 * fVar38 + fVar55 * fVar39 + ); + *puVar4 = CONCAT44(fVar52 * fVar38 + fVar50 * fVar39,fVar51 * fVar38 + fVar43 * fVar39); + } while (uVar28 < uVar20); + iVar46 = iVar47 + uVar32; + if (iVar47 != uVar16 - uVar15) { + iVar47 = iVar46 + 1; + lVar18 = iVar46 + lVar31; + lVar48 = iVar46 + lVar49; + fVar50 = param_1[lVar18]; + fVar43 = param_1[lVar48]; + param_1[lVar48] = fVar43 * fVar38 - fVar50 * fVar39; + param_1[lVar18] = fVar50 * fVar38 + fVar39 * fVar43; + if (iVar47 < (int)param_6) { + iVar46 = iVar46 + 2; + lVar18 = iVar47 + lVar31; + lVar48 = iVar47 + lVar49; + /* try { // try from 002ac4a4 to 003ac4bf has its CatchHandler @ 002ac694 */ + fVar50 = param_1[lVar18]; + fVar43 = param_1[lVar48]; + param_1[lVar48] = fVar43 * fVar38 - fVar50 * fVar39; + param_1[lVar18] = fVar50 * fVar38 + fVar39 * fVar43; + if (iVar46 < (int)param_6) { + /* try { // try from 002ac4d8 to 003ac4db has its CatchHandler @ 002ac69c */ + lVar31 = iVar46 + lVar31; + lVar49 = iVar46 + lVar49; + fVar50 = param_1[lVar31]; + fVar43 = param_1[lVar49]; + param_1[lVar49] = fVar43 * fVar38 - fVar50 * fVar39; + param_1[lVar31] = fVar50 * fVar38 + fVar39 * fVar43; + } + } + } + } + } + if (param_4 != (undefined4 *)0x0) { + lVar18 = lVar12 * param_5; + lVar49 = lVar24 * param_5; + /* try { // try from 002ac518 to 003ac51b has its CatchHandler @ 002ac614 */ + lVar48 = (lVar18 + 4) * 4; + /* try { // try from 002ac520 to 003ac523 has its CatchHandler @ 002ac69c */ + puVar21 = param_4 + lVar18; + if ((lVar48 + -0x10 < lVar49 * 4 + 0x10 && lVar49 * 4 < lVar48) || (param_6 < 7)) { + lVar18 = 0; + do { + fVar50 = (float)param_4[lVar49 + lVar18]; + fVar43 = (float)puVar21[lVar18]; + puVar21[lVar18] = fVar43 * fVar38 - fVar50 * fVar39; + param_4[lVar49 + lVar18] = fVar50 * fVar38 + fVar39 * fVar43; + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)param_6); + } + else { + uVar20 = -((uint)((ulong)puVar21 >> 2) & 3) & 3; + uVar5 = (ulong)uVar20; + if (param_6 < uVar20) { + uVar5 = (ulong)param_6; + } + iVar47 = (int)uVar5; + uVar29 = uVar5; + if (iVar47 != 0) { + fVar43 = (float)param_4[lVar49]; + fVar50 = (float)param_4[lVar18]; + param_4[lVar18] = fVar50 * fVar38 - fVar43 * fVar39; + param_4[lVar49] = fVar43 * fVar38 + fVar39 * fVar50; + if (iVar47 != 1) { + fVar50 = (float)param_4[lVar49 + 1]; + fVar43 = (float)param_4[lVar18 + 1]; + param_4[lVar18 + 1] = fVar43 * fVar38 - fVar50 * fVar39; + param_4[lVar49 + 1] = fVar50 * fVar38 + fVar39 * fVar43; + if (iVar47 == 3) { + fVar50 = (float)param_4[lVar49 + 2]; + fVar43 = (float)param_4[lVar18 + 2]; + /* try { // try from 002ac5dc to 003ac60f has its CatchHandler @ 002ac01c */ + param_4[lVar18 + 2] = fVar43 * fVar38 - fVar50 * fVar39; + param_4[lVar49 + 2] = fVar50 * fVar38 + fVar39 * fVar43; + } + else { + uVar29 = 2; + } + } + } + uVar20 = ((param_6 - iVar47) - 4 >> 2) + 1; + lVar48 = 0; + /* catch() { ... } // from try @ 002ac518 with catch @ 002ac614 */ + uVar16 = 0; + lVar33 = NEON_shl(uVar5 + lVar18,2); + lVar31 = NEON_shl(uVar5 + lVar49,2); + iVar46 = uVar20 * 4; + do { + uVar16 = uVar16 + 1; + puVar3 = (undefined8 *)((long)param_4 + lVar48 + lVar33); + puVar4 = (undefined8 *)((long)param_4 + lVar48 + lVar31); + lVar48 = lVar48 + 0x10; + fVar43 = (float)*puVar3; + fVar50 = (float)((ulong)*puVar3 >> 0x20); + fVar55 = (float)puVar3[1]; + fVar44 = (float)((ulong)puVar3[1] >> 0x20); + fVar51 = (float)*puVar4; + fVar52 = (float)((ulong)*puVar4 >> 0x20); + fVar53 = (float)puVar4[1]; + fVar54 = (float)((ulong)puVar4[1] >> 0x20); + puVar3[1] = CONCAT44(fVar44 * fVar38 - fVar54 * fVar39,fVar55 * fVar38 - fVar53 * fVar39 + ); + *puVar3 = CONCAT44(fVar50 * fVar38 - fVar52 * fVar39,fVar43 * fVar38 - fVar51 * fVar39); + puVar4[1] = CONCAT44(fVar54 * fVar38 + fVar44 * fVar39,fVar53 * fVar38 + fVar55 * fVar39 + ); + *puVar4 = CONCAT44(fVar52 * fVar38 + fVar50 * fVar39,fVar51 * fVar38 + fVar43 * fVar39); + } while (uVar16 < uVar20); + iVar17 = iVar46 + (int)uVar29; + if (iVar46 != param_6 - iVar47) { + iVar47 = iVar17 + 1; + lVar48 = iVar17 + lVar49; + /* try { // try from 002ac690 to 003ac693 has its CatchHandler @ 002ac01c */ + lVar31 = iVar17 + lVar18; + /* catch() { ... } // from try @ 002ac134 with catch @ 002ac694 + catch() { ... } // from try @ 002ac4a4 with catch @ 002ac694 */ + /* catch() { ... } // from try @ 002ac338 with catch @ 002ac69c + catch() { ... } // from try @ 002ac4d8 with catch @ 002ac69c + catch() { ... } // from try @ 002ac520 with catch @ 002ac69c */ + fVar50 = (float)param_4[lVar48]; + fVar43 = (float)param_4[lVar31]; + param_4[lVar31] = fVar43 * fVar38 - fVar50 * fVar39; + param_4[lVar48] = fVar50 * fVar38 + fVar39 * fVar43; + if (iVar47 < (int)param_6) { + iVar17 = iVar17 + 2; + lVar48 = iVar47 + lVar49; + lVar31 = iVar47 + lVar18; + /* try { // try from 002ac6d8 to 003ac6db has its CatchHandler @ 002ac740 */ + fVar50 = (float)param_4[lVar48]; + fVar43 = (float)param_4[lVar31]; + param_4[lVar31] = fVar43 * fVar38 - fVar50 * fVar39; + param_4[lVar48] = fVar50 * fVar38 + fVar39 * fVar43; + if (iVar17 < (int)param_6) { + lVar49 = iVar17 + lVar49; + lVar18 = iVar17 + lVar18; + fVar50 = (float)param_4[lVar49]; + /* try { // try from 002ac71c to 003ac71f has its CatchHandler @ 002ac748 */ + fVar43 = (float)param_4[lVar18]; + param_4[lVar18] = fVar43 * fVar38 - fVar50 * fVar39; + param_4[lVar49] = fVar50 * fVar38 + fVar39 * fVar43; + } + } + } + } + } + bVar1 = false; + do { + /* catch() { ... } // from try @ 002ac094 with catch @ 002ac740 + catch() { ... } // from try @ 002ac2a8 with catch @ 002ac740 + catch() { ... } // from try @ 002ac6d8 with catch @ 002ac740 */ + iVar47 = (int)uVar35; + if (iVar47 < (int)uVar30) { + /* catch() { ... } // from try @ 002ac71c with catch @ 002ac748 */ + uVar20 = iVar47 + 2; + fVar43 = ABS(param_1[lVar12 * param_2 + (long)(int)uVar27]); + if ((int)uVar20 < (int)param_6) { + /* catch() { ... } // from try @ 002ac7bc with catch @ 002ac764 + catch() { ... } // from try @ 002ac880 with catch @ 002ac764 + catch() { ... } // from try @ 002ac8cc with catch @ 002ac764 */ + pfVar13 = param_1 + lVar12 * param_2 + (long)(int)uVar20; + do { + fVar50 = *pfVar13; + pfVar13 = pfVar13 + 1; + fVar38 = ABS(fVar50); + uVar16 = uVar20; + if (ABS(fVar50) <= fVar43) { + fVar38 = fVar43; + uVar16 = uVar27; + } + uVar27 = uVar16; + fVar43 = fVar38; + uVar20 = uVar20 + 1; + } while (uVar20 != param_6); + } + *(uint *)((long)piVar9 + lVar23) = uVar27; + if (0 < iVar47) goto LAB_002aca50; + } + else { +LAB_002aca50: + iVar46 = 0; + fVar43 = ABS(*(float *)((long)param_1 + lVar23)); + if (1 < iVar47) { + iVar46 = 0; + iVar17 = 1; + pfVar13 = param_1 + lVar12 + param_2; + do { + fVar50 = *pfVar13; + pfVar13 = pfVar13 + param_2; + fVar38 = ABS(fVar50); + iVar7 = iVar17; + if (ABS(fVar50) <= fVar43) { + fVar38 = fVar43; + iVar7 = iVar46; + } + iVar46 = iVar7; + fVar43 = fVar38; + iVar17 = iVar17 + 1; + } while (iVar17 != iVar47); + } + /* try { // try from 002acaa4 to 003acaf7 has its CatchHandler @ 002ac8d0 */ + *(int *)((long)piVar37 + lVar23) = iVar46; + } + if (bVar1) goto LAB_002ac7ac; + bVar1 = true; + lVar12 = lVar24; + lVar23 = lVar25; + uVar35 = uVar11; + uVar27 = uVar34; + } while( true ); + } + } +LAB_002ac7bc: + /* try { // try from 002ac7bc to 003ac7bf has its CatchHandler @ 002ac764 */ + lVar12 = 0; + lVar49 = 1; + puVar21 = param_4; + uVar34 = 0; + pfVar13 = param_3; + if (0 < (int)(param_6 - 1)) { + do { + uVar20 = uVar34 + 1; + if ((int)uVar20 < (int)param_6) { + pfVar10 = pfVar13 + 1; + lVar24 = lVar49; + fVar42 = *pfVar13; + uVar27 = uVar20; + uVar30 = uVar34; + do { + fVar43 = *pfVar10; + /* try { // try from 002ac80c to 003ac80f has its CatchHandler @ 002ac8a8 */ + pfVar26 = pfVar10; + lVar23 = lVar24; + uVar16 = uVar27; + if (fVar43 <= fVar42) { + pfVar26 = param_3 + (int)uVar30; + lVar23 = (long)(int)uVar30; + uVar16 = uVar30; + } + uVar30 = uVar16; + uVar27 = uVar27 + 1; + lVar24 = lVar24 + 1; + pfVar10 = pfVar10 + 1; + if (fVar43 <= fVar42) { + fVar43 = fVar42; + } + fVar42 = fVar43; + } while (uVar27 != param_6); + if (uVar34 != uVar30) { + *pfVar26 = *pfVar13; + *pfVar13 = fVar42; + if ((param_4 != (undefined4 *)0x0) && (0 < (int)param_6)) { + lVar23 = lVar23 * param_5; + /* try { // try from 002ac880 to 003ac8a3 has its CatchHandler @ 002ac764 */ + lVar24 = (lVar23 + 4) * 4; + puVar36 = param_4 + lVar23; + /* catch() { ... } // from try @ 002ac80c with catch @ 002ac8a8 */ + if (((lVar24 - ((long)puVar21 - (long)param_4) == 0 || + lVar24 < (long)puVar21 - (long)param_4) || + (0x10 - (long)param_4) + (long)puVar21 <= lVar24 + -0x10) && (8 < param_6)) { + uVar34 = -((uint)((ulong)puVar36 >> 2) & 3) & 3; + uVar35 = (ulong)param_6; + if (uVar34 < param_6) { + uVar35 = (ulong)uVar34; + } + iVar8 = (int)uVar35; + uVar11 = uVar35; + if (iVar8 != 0) { + /* try { // try from 002ac8cc to 003ac8cf has its CatchHandler @ 002ac764 */ + /* catch() { ... } // from try @ 002ac90c with catch @ 002ac8d0 + catch() { ... } // from try @ 002acaa4 with catch @ 002ac8d0 + catch() { ... } // from try @ 002accfc with catch @ 002ac8d0 + catch() { ... } // from try @ 002acd30 with catch @ 002ac8d0 */ + uVar6 = param_4[lVar23]; + param_4[lVar23] = *puVar21; + *puVar21 = uVar6; + if (iVar8 != 1) { + uVar6 = param_4[lVar23 + 1]; + param_4[lVar23 + 1] = puVar21[1]; + puVar21[1] = uVar6; + if (iVar8 == 3) { + uVar6 = param_4[lVar23 + 2]; + /* try { // try from 002ac90c to 003ac92b has its CatchHandler @ 002ac8d0 */ + param_4[lVar23 + 2] = puVar21[2]; + puVar21[2] = uVar6; + } + else { + uVar11 = 2; + } + } + } + lVar24 = 0; + uVar34 = ((param_6 - iVar8) - 4 >> 2) + 1; + uVar30 = 0; + iVar19 = uVar34 * 4; + do { + puVar3 = (undefined8 *)((long)param_4 + lVar24 + (uVar35 + lVar12) * 4); + puVar4 = (undefined8 *)((long)param_4 + lVar24 + (uVar35 + lVar23) * 4); + uVar30 = uVar30 + 1; + lVar24 = lVar24 + 0x10; + uVar45 = *puVar3; + /* try { // try from 002ac95c to 003ac95f has its CatchHandler @ 002acd48 */ + uVar41 = puVar4[1]; + uVar40 = *puVar4; + puVar4[1] = puVar3[1]; + *puVar4 = uVar45; + puVar3[1] = uVar41; + *puVar3 = uVar40; + } while (uVar30 < uVar34); + iVar47 = iVar19 + (int)uVar11; + if (iVar19 != param_6 - iVar8) { + iVar8 = iVar47 + 1; + lVar24 = iVar47 + lVar12; + lVar25 = iVar47 + lVar23; + uVar6 = param_4[lVar25]; + param_4[lVar25] = param_4[lVar24]; + param_4[lVar24] = uVar6; + if (iVar8 < (int)param_6) { + /* try { // try from 002ac9b0 to 003ac9b3 has its CatchHandler @ 002acd34 */ + iVar47 = iVar47 + 2; + lVar24 = iVar8 + lVar12; + /* try { // try from 002ac9b8 to 003aca63 has its CatchHandler @ 002acd48 */ + lVar25 = iVar8 + lVar23; + uVar6 = param_4[lVar25]; + param_4[lVar25] = param_4[lVar24]; + param_4[lVar24] = uVar6; + if (iVar47 < (int)param_6) { + lVar24 = iVar47 + lVar12; + lVar23 = iVar47 + lVar23; + uVar6 = param_4[lVar23]; + param_4[lVar23] = param_4[lVar24]; + param_4[lVar24] = uVar6; + } + } + } + } + else { + lVar24 = 0; + do { + uVar6 = puVar36[lVar24]; + puVar36[lVar24] = puVar21[lVar24]; + puVar21[lVar24] = uVar6; + lVar24 = lVar24 + 1; + } while ((int)lVar24 < (int)param_6); + } + } + } + } + puVar21 = puVar21 + param_5; + lVar12 = lVar12 + param_5; + lVar49 = lVar49 + 1; + uVar34 = uVar20; + pfVar13 = pfVar13 + 1; + } while ((int)uVar20 < (int)(param_6 - 1)); + } + return 1; +LAB_002ac7ac: + iVar19 = iVar19 + 1; + if (iVar19 == iVar8) goto LAB_002ac7bc; + goto LAB_002ac050; +} + + +================================================================== + +### FUNC 002ace08 (3384 bytes) name=FUN_002ace08 + +undefined8 +FUN_002ace08(double *param_1,ulong param_2,double *param_3,undefined8 *param_4,ulong param_5, + uint param_6,long param_7) + +{ + bool bVar1; + long lVar2; + undefined8 *puVar3; + int iVar4; + int *piVar5; + uint uVar6; + int iVar7; + ulong uVar8; + long lVar9; + double *pdVar10; + double *pdVar11; + undefined8 uVar12; + uint uVar13; + uint uVar14; + long lVar15; + double *pdVar16; + undefined8 *puVar17; + int iVar18; + uint uVar19; + int *piVar20; + long lVar21; + int iVar22; + long lVar23; + double *pdVar24; + long lVar25; + uint uVar26; + long lVar27; + long lVar28; + long lVar29; + uint uVar30; + ulong uVar31; + undefined8 *puVar32; + uint uVar33; + int *piVar34; + double dVar35; + double dVar36; + undefined8 uVar37; + double dVar38; + double dVar39; + double dVar40; + undefined8 uVar41; + int iVar42; + uint uVar43; + long lVar44; + size_t __n; + double dVar45; + double dVar46; + double dVar47; + double dVar48; + int iVar49; + + /* try { // try from 002ace0c to 003ace3f has its CatchHandler @ 002acd64 */ + param_2 = param_2 >> 3; + if (param_4 == (undefined8 *)0x0) { + piVar5 = (int *)(param_7 + 3U & 0xfffffffffffffffc); + piVar34 = piVar5 + (int)param_6; + if ((int)param_6 < 1) goto LAB_002ad5a0; + } + else { + param_5 = param_5 >> 3; + if ((int)param_6 < 1) goto LAB_002ad5a0; + uVar30 = 0; + lVar44 = NEON_shl(param_5 + 1,3); + /* try { // try from 002ace90 to 003ace93 has its CatchHandler @ 002acea0 */ + __n = NEON_shl((ulong)(param_6 - 1) + 1,3); + /* try { // try from 002ace98 to 003ace9b has its CatchHandler @ 002acd64 */ + puVar32 = param_4; + puVar17 = param_4; + do { + /* catch() { ... } // from try @ 002ace90 with catch @ 002acea0 */ + uVar30 = uVar30 + 1; + /* try { // try from 002aceb0 to 003aceb3 has its CatchHandler @ 002acd64 */ + /* catch() { ... } // from try @ 002acf00 with catch @ 002aceb4 + catch() { ... } // from try @ 002acfc8 with catch @ 002aceb4 + catch() { ... } // from try @ 002ad010 with catch @ 002aceb4 */ + memset(puVar32,0,__n); + *puVar17 = 0x3ff0000000000000; + puVar17 = (undefined8 *)((long)puVar17 + lVar44); + puVar32 = (undefined8 *)((long)puVar32 + lVar44 + -8); + } while (uVar30 != param_6); + piVar5 = (int *)(param_7 + 3U & 0xfffffffffffffffc); + piVar34 = piVar5 + (int)param_6; + } + uVar33 = param_6 - 1; + iVar49 = param_6 * param_6 * 0x1e; + /* try { // try from 002acf00 to 003acf03 has its CatchHandler @ 002aceb4 */ + pdVar16 = param_1 + 2; + uVar30 = 2; + lVar44 = 0; + pdVar10 = param_1 + param_2; + pdVar24 = param_1; + uVar19 = 1; + do { + iVar18 = (int)lVar44; + param_3[lVar44] = *pdVar24; + if (iVar18 < (int)uVar33) { + dVar38 = ABS(pdVar16[-1]); + pdVar11 = pdVar16; + uVar14 = uVar19; + uVar13 = uVar19; + uVar26 = uVar30; + if ((int)uVar30 < (int)param_6) { + do { + /* try { // try from 002acf54 to 003acf57 has its CatchHandler @ 002acfec */ + dVar39 = ABS(*pdVar11); + uVar14 = uVar26; + if (ABS(*pdVar11) <= dVar38) { + dVar39 = dVar38; + uVar14 = uVar13; + } + uVar26 = uVar26 + 1; + pdVar11 = pdVar11 + 1; + dVar38 = dVar39; + uVar13 = uVar14; + } while (uVar26 != param_6); + } + piVar5[lVar44] = uVar14; + } + if (iVar18 != 0) { + if (iVar18 == 1) { + iVar42 = 0; + } + else { + iVar42 = 0; + iVar7 = 1; + pdVar11 = pdVar10; + dVar38 = ABS(param_1[lVar44]); + do { + dVar35 = *pdVar11; + pdVar11 = pdVar11 + param_2; + dVar39 = ABS(dVar35); + iVar22 = iVar7; + if (ABS(dVar35) <= dVar38) { + dVar39 = dVar38; + iVar22 = iVar42; + } + iVar42 = iVar22; + iVar7 = iVar7 + 1; + dVar38 = dVar39; + /* try { // try from 002acfc8 to 003acfe7 has its CatchHandler @ 002aceb4 */ + } while (iVar7 != iVar18); + } + piVar34[lVar44] = iVar42; + } + dVar38 = DAT_002adb40; + lVar44 = lVar44 + 1; + pdVar24 = pdVar24 + param_2 + 1; + pdVar10 = pdVar10 + 1; + uVar30 = uVar30 + 1; + pdVar16 = pdVar16 + param_2 + 1; + /* catch() { ... } // from try @ 002acf54 with catch @ 002acfec */ + bVar1 = (int)uVar19 < (int)param_6; + uVar19 = uVar19 + 1; + } while (bVar1); + if ((1 < (int)param_6) && (iVar49 != 0)) { + iVar18 = 0; + /* try { // try from 002ad010 to 003ad013 has its CatchHandler @ 002aceb4 */ + /* catch() { ... } // from try @ 002ad064 with catch @ 002ad014 + catch() { ... } // from try @ 002ad144 with catch @ 002ad014 + catch() { ... } // from try @ 002ad18c with catch @ 002ad014 */ +LAB_002ad018: + dVar39 = ABS(param_1[*piVar5]); + if ((int)uVar33 < 2) { + uVar8 = 0; + uVar31 = 0; + } + else { + uVar31 = 0; + uVar30 = 1; + uVar8 = param_2; + dVar35 = dVar39; + piVar20 = piVar5; + do { + piVar20 = piVar20 + 1; + lVar44 = (long)*piVar20 + uVar8; + uVar8 = uVar8 + param_2; + dVar39 = ABS(param_1[lVar44]); + uVar19 = uVar30; + if (dVar39 <= dVar35) { + uVar19 = (uint)uVar31; + } + uVar31 = (ulong)uVar19; + uVar30 = uVar30 + 1; + /* try { // try from 002ad064 to 003ad067 has its CatchHandler @ 002ad014 */ + if (dVar39 <= dVar35) { + dVar39 = dVar35; + } + dVar35 = dVar39; + } while (uVar30 != uVar33); + uVar8 = -(ulong)(uVar19 >> 0x1f) & 0xfffffffc00000000 | uVar31 << 2; + } + uVar8 = (ulong)*(uint *)((long)piVar5 + uVar8); + lVar44 = 1; + do { + uVar30 = piVar34[lVar44]; + uVar19 = (uint)lVar44; + lVar9 = lVar44 + (long)(int)uVar30 * param_2; + lVar44 = lVar44 + 1; + dVar35 = ABS(param_1[lVar9]); + if (dVar35 <= dVar39) { + uVar30 = (uint)uVar31; + } + uVar31 = (ulong)uVar30; + if (dVar35 <= dVar39) { + uVar19 = (uint)uVar8; + dVar35 = dVar39; + } + dVar39 = dVar35; + uVar8 = (ulong)uVar19; + } while ((int)lVar44 < (int)param_6); + lVar44 = (long)(int)uVar30; + /* try { // try from 002ad0d0 to 003ad0d3 has its CatchHandler @ 002ad168 */ + lVar9 = (long)(int)uVar19; + lVar25 = lVar44 * param_2; + dVar39 = param_1[lVar25 + lVar9]; + dVar35 = ABS(dVar39); + if (dVar38 < dVar35) { + lVar23 = lVar44 * 8; + lVar21 = lVar9 * 8; + dVar48 = (param_3[lVar9] - param_3[lVar44]) * 0.5; + dVar45 = ABS(dVar48); + if (dVar45 < dVar35) { + dVar40 = (dVar45 / dVar35) * (dVar45 / dVar35) + 1.0; + /* catch() { ... } // from try @ 002ad518 with catch @ 002ad87c */ + dVar36 = SQRT(dVar40); + if (NAN(dVar36)) { + /* try { // try from 002ada74 to 003ada77 has its CatchHandler @ 002adc90 */ + dVar36 = sqrt(dVar40); + dVar36 = dVar35 * dVar36; + } + else { + dVar36 = dVar35 * dVar36; + } +LAB_002ad13c: + dVar45 = dVar45 + dVar36; + dVar36 = ABS(dVar45); + /* try { // try from 002ad144 to 003ad163 has its CatchHandler @ 002ad014 */ + if (dVar35 <= dVar36) goto LAB_002ad14c; +LAB_002ad840: + dVar40 = (dVar36 / dVar35) * (dVar36 / dVar35) + 1.0; + dVar36 = SQRT(dVar40); + if (NAN(dVar36)) { + /* try { // try from 002ada34 to 003ada37 has its CatchHandler @ 002ad9e8 */ + dVar36 = sqrt(dVar40); + dVar36 = dVar35 * dVar36; + } + else { + dVar36 = dVar35 * dVar36; + } + } + else { + if (0.0 < dVar45) { + dVar40 = (dVar35 / dVar45) * (dVar35 / dVar45) + 1.0; + dVar36 = SQRT(dVar40); + if (NAN(dVar36)) { + dVar36 = sqrt(dVar40); + /* catch() { ... } // from try @ 002ada34 with catch @ 002ad9e8 + catch() { ... } // from try @ 002adb74 with catch @ 002ad9e8 + catch() { ... } // from try @ 002adc7c with catch @ 002ad9e8 */ + } + dVar36 = dVar45 * dVar36; + goto LAB_002ad13c; + } + dVar45 = dVar45 + 0.0; + dVar36 = ABS(dVar45); + if (dVar36 < dVar35) goto LAB_002ad840; +LAB_002ad14c: + if (dVar36 <= 0.0) { + dVar35 = dVar45 / 0.0; + dVar36 = dVar39 / 0.0; + goto joined_r0x002ad184; + } + dVar40 = (dVar35 / dVar36) * (dVar35 / dVar36) + 1.0; + dVar35 = SQRT(dVar40); + if (NAN(dVar35)) { + /* try { // try from 002adaf8 to 003adafb has its CatchHandler @ 002adc80 */ + /* try { // try from 002adb00 to 003adb03 has its CatchHandler @ 002adc90 */ + dVar35 = sqrt(dVar40); + } + dVar36 = dVar36 * dVar35; + } + dVar35 = dVar45 / dVar36; + dVar36 = dVar39 / dVar36; +joined_r0x002ad184: + dVar39 = (dVar39 / dVar45) * dVar39; + if (dVar48 < 0.0) { + dVar36 = -dVar36; + dVar39 = -dVar39; + } + /* try { // try from 002ad18c to 003ad18f has its CatchHandler @ 002ad014 */ + /* catch() { ... } // from try @ 002ad1e0 with catch @ 002ad190 + catch() { ... } // from try @ 002ad5f4 with catch @ 002ad190 + catch() { ... } // from try @ 002ad8b8 with catch @ 002ad190 + catch() { ... } // from try @ 002ad908 with catch @ 002ad190 */ + param_1[lVar25 + lVar9] = 0.0; + param_3[lVar44] = param_3[lVar44] - dVar39; + param_3[lVar9] = param_3[lVar9] + dVar39; + if (0 < (int)uVar30) { + lVar15 = 0; + uVar26 = 0; + do { + dVar45 = *(double *)((long)param_1 + lVar15 + lVar21); + uVar26 = uVar26 + 1; + dVar39 = *(double *)((long)param_1 + lVar15 + lVar23); + /* try { // try from 002ad1e0 to 003ad203 has its CatchHandler @ 002ad190 */ + *(double *)((long)param_1 + lVar15 + lVar23) = dVar39 * dVar35 - dVar45 * dVar36; + *(double *)((long)param_1 + lVar15 + lVar21) = dVar45 * dVar35 + dVar36 * dVar39; + lVar15 = lVar15 + param_2 * 8; + } while (uVar26 != uVar30); + } + uVar26 = uVar30 + 1; + if ((int)uVar26 < (int)uVar19) { + pdVar16 = param_1 + lVar9 + lVar25 + param_2; + pdVar10 = param_1 + lVar25 + (int)uVar26; + do { + dVar45 = *pdVar16; + dVar39 = *pdVar10; + /* try { // try from 002ad22c to 003ad22f has its CatchHandler @ 002ad8fc */ + pdVar24 = pdVar10 + 1; + *pdVar10 = dVar39 * dVar35 - dVar45 * dVar36; + *pdVar16 = dVar45 * dVar35 + dVar36 * dVar39; + pdVar16 = pdVar16 + param_2; + pdVar10 = pdVar24; + } while (pdVar24 != param_1 + lVar25 + (int)uVar26 + 1 + (ulong)((uVar19 - 2) - uVar30)); + } + uVar30 = uVar19 + 1; + if ((int)uVar30 < (int)param_6) { + lVar27 = lVar9 * param_2; + /* try { // try from 002ad268 to 003ad26b has its CatchHandler @ 002ad8ec */ + lVar15 = lVar25 + lVar9 + 1; + /* try { // try from 002ad270 to 003ad2b3 has its CatchHandler @ 002ad8fc */ + lVar28 = lVar9 + 1 + lVar27; + lVar29 = (lVar9 + 3 + lVar25) * 8; + uVar14 = (param_6 - uVar19) - 1; + if ((lVar15 * 8 < (lVar9 + 3 + lVar27) * 8 && + (lVar29 + lVar28 * -8 != 0 && lVar28 * 8 <= lVar29)) || (uVar14 < 6)) { + pdVar16 = param_1 + lVar25 + (int)uVar30; + do { + /* try { // try from 002ad8b8 to 003ad8bb has its CatchHandler @ 002ad190 */ + dVar45 = pdVar16[lVar27 - lVar25]; + /* catch() { ... } // from try @ 002ad43c with catch @ 002ad8bc + catch() { ... } // from try @ 002ad520 with catch @ 002ad8bc */ + dVar39 = *pdVar16; + /* catch() { ... } // from try @ 002ad2f4 with catch @ 002ad8c4 */ + *pdVar16 = dVar39 * dVar35 - dVar45 * dVar36; + pdVar16[lVar27 - lVar25] = dVar45 * dVar35 + dVar36 * dVar39; + pdVar16 = pdVar16 + 1; + } while (pdVar16 != param_1 + lVar25 + (int)uVar30 + 1 + (ulong)((param_6 - 2) - uVar19)); + } + else { + uVar13 = (uint)((ulong)(param_1 + lVar15) >> 3) & 1; + if (uVar14 < uVar13) { + uVar13 = uVar14; + } + uVar43 = uVar30; + if (uVar13 != 0) { + lVar29 = (int)uVar30 + lVar27; + lVar2 = (int)uVar30 + lVar25; + dVar45 = param_1[lVar29]; + dVar39 = param_1[lVar2]; + /* try { // try from 002ad2f4 to 003ad2f7 has its CatchHandler @ 002ad8c4 */ + param_1[lVar2] = dVar39 * dVar35 - dVar45 * dVar36; + param_1[lVar29] = dVar45 * dVar35 + dVar36 * dVar39; + uVar43 = uVar19 + 2; + } + uVar19 = ((uVar14 - uVar13) - 2 >> 1) + 1; + lVar29 = 0; + uVar6 = 0; + iVar42 = uVar19 * 2; + do { + pdVar16 = (double *)((long)param_1 + lVar29 + ((ulong)uVar13 + lVar15) * 8); + pdVar10 = (double *)((long)param_1 + lVar29 + ((ulong)uVar13 + lVar28) * 8); + uVar6 = uVar6 + 1; + lVar29 = lVar29 + 0x10; + dVar40 = pdVar16[1]; + dVar48 = *pdVar16; + dVar47 = pdVar10[1]; + dVar46 = *pdVar10; + dVar39 = dVar48 * dVar35; + dVar45 = dVar40 * dVar35; + pdVar16[1] = dVar45 - dVar47 * dVar45; + *pdVar16 = dVar39 - dVar46 * dVar39; + pdVar10[1] = dVar47 * dVar35 + dVar40 * dVar36; + *pdVar10 = dVar46 * dVar35 + dVar48 * dVar36; + } while (uVar6 < uVar19); + if (iVar42 != uVar14 - uVar13) { + lVar15 = (long)(int)(iVar42 + uVar43); + lVar27 = lVar15 + lVar27; + lVar15 = lVar15 + lVar25; + dVar45 = param_1[lVar27]; + dVar39 = param_1[lVar15]; + param_1[lVar15] = dVar39 * dVar35 - dVar45 * dVar36; + param_1[lVar27] = dVar45 * dVar35 + dVar36 * dVar39; + } + } + } + if (param_4 != (undefined8 *)0x0) { + lVar28 = lVar44 * param_5; + lVar25 = lVar9 * param_5; + lVar15 = (lVar28 + 2) * 8; + puVar17 = param_4 + lVar28; + if ((lVar15 + -0x10 < lVar25 * 8 + 0x10 && lVar25 * 8 < lVar15) || (param_6 < 6)) { + /* catch() { ... } // from try @ 002ad268 with catch @ 002ad8ec */ + lVar15 = 0; + do { + dVar45 = (double)param_4[lVar25 + lVar15]; + dVar39 = (double)puVar17[lVar15]; + /* catch() { ... } // from try @ 002ad22c with catch @ 002ad8fc + catch() { ... } // from try @ 002ad270 with catch @ 002ad8fc */ + /* try { // try from 002ad908 to 003ad90b has its CatchHandler @ 002ad190 */ + puVar17[lVar15] = dVar39 * dVar35 - dVar45 * dVar36; + param_4[lVar25 + lVar15] = dVar45 * dVar35 + dVar36 * dVar39; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)param_6); + } + else { + uVar19 = (uint)((ulong)puVar17 >> 3) & 1; + if (param_6 < uVar19) { + uVar19 = param_6; + } + if (uVar19 != 0) { + dVar39 = (double)param_4[lVar25]; + dVar45 = (double)param_4[lVar28]; + /* try { // try from 002ad43c to 003ad4db has its CatchHandler @ 002ad8bc */ + param_4[lVar28] = dVar45 * dVar35 - dVar39 * dVar36; + param_4[lVar25] = dVar39 * dVar35 + dVar36 * dVar45; + } + uVar14 = ((param_6 - uVar19) - 2 >> 1) + 1; + lVar15 = 0; + uVar13 = 0; + iVar42 = uVar14 * 2; + do { + pdVar16 = (double *)((long)param_4 + lVar15 + ((ulong)uVar19 + lVar28) * 8); + pdVar10 = (double *)((long)param_4 + lVar15 + ((ulong)uVar19 + lVar25) * 8); + uVar13 = uVar13 + 1; + lVar15 = lVar15 + 0x10; + dVar47 = pdVar16[1]; + dVar46 = *pdVar16; + dVar40 = pdVar10[1]; + dVar48 = *pdVar10; + dVar39 = dVar46 * dVar35; + dVar45 = dVar47 * dVar35; + pdVar16[1] = dVar45 - dVar40 * dVar45; + *pdVar16 = dVar39 - dVar48 * dVar39; + pdVar10[1] = dVar40 * dVar35 + dVar47 * dVar36; + *pdVar10 = dVar48 * dVar35 + dVar46 * dVar36; + } while (uVar13 < uVar14); + if (iVar42 != param_6 - uVar19) { + lVar15 = (long)(int)(iVar42 + (uint)(uVar19 != 0)); + lVar25 = lVar15 + lVar25; + lVar15 = lVar15 + lVar28; + dVar45 = (double)param_4[lVar25]; + dVar39 = (double)param_4[lVar15]; + param_4[lVar15] = dVar39 * dVar35 - dVar45 * dVar36; + param_4[lVar25] = dVar45 * dVar35 + dVar36 * dVar39; + } + } + } + /* try { // try from 002ad518 to 003ad51b has its CatchHandler @ 002ad87c */ + bVar1 = false; + do { + iVar42 = (int)uVar31; + /* try { // try from 002ad520 to 003ad543 has its CatchHandler @ 002ad8bc */ + if (iVar42 < (int)uVar33) { + uVar19 = iVar42 + 2; + if ((int)uVar19 < (int)param_6) { + pdVar16 = param_1 + lVar44 * param_2 + (long)(int)uVar19; + dVar39 = ABS(param_1[lVar44 * param_2 + (long)(int)uVar26]); + do { + dVar45 = *pdVar16; + pdVar16 = pdVar16 + 1; + dVar35 = ABS(dVar45); + uVar14 = uVar19; + if (ABS(dVar45) <= dVar39) { + dVar35 = dVar39; + uVar14 = uVar26; + } + uVar26 = uVar14; + uVar19 = uVar19 + 1; + dVar39 = dVar35; + } while (uVar19 != param_6); + } + piVar5[lVar44] = uVar26; + if (0 < iVar42) goto LAB_002ad794; + } + else { +LAB_002ad794: + if (iVar42 < 2) { + piVar34[lVar44] = 0; + } + else { + iVar22 = 0; + iVar7 = 1; + pdVar16 = param_1 + lVar44 + param_2; + dVar39 = ABS(*(double *)((long)param_1 + lVar23)); + do { + dVar45 = *pdVar16; + pdVar16 = pdVar16 + param_2; + dVar35 = ABS(dVar45); + iVar4 = iVar7; + if (ABS(dVar45) <= dVar39) { + dVar35 = dVar39; + iVar4 = iVar22; + } + iVar22 = iVar4; + iVar7 = iVar7 + 1; + dVar39 = dVar35; + } while (iVar7 != iVar42); + piVar34[lVar44] = iVar22; + } + } + if (bVar1) goto LAB_002ad590; + bVar1 = true; + lVar44 = lVar9; + lVar23 = lVar21; + uVar31 = uVar8; + uVar26 = uVar30; + } while( true ); + } + } +LAB_002ad5a0: + lVar9 = 0; + lVar44 = 1; + puVar17 = param_4; + uVar30 = 0; + pdVar16 = param_3; + if (0 < (int)(param_6 - 1)) { + do { + uVar19 = uVar30 + 1; + if ((int)uVar19 < (int)param_6) { + pdVar10 = pdVar16 + 1; + lVar25 = lVar44; + dVar38 = *pdVar16; + uVar26 = uVar19; + uVar33 = uVar30; + do { + dVar39 = *pdVar10; + /* try { // try from 002ad5f4 to 003ad60b has its CatchHandler @ 002ad190 */ + pdVar24 = pdVar10; + lVar23 = lVar25; + uVar14 = uVar26; + if (dVar39 <= dVar38) { + pdVar24 = param_3 + (int)uVar33; + lVar23 = (long)(int)uVar33; + uVar14 = uVar33; + } + uVar33 = uVar14; + uVar26 = uVar26 + 1; + lVar25 = lVar25 + 1; + pdVar10 = pdVar10 + 1; + if (dVar39 <= dVar38) { + dVar39 = dVar38; + } + dVar38 = dVar39; + } while (uVar26 != param_6); + if (uVar30 != uVar33) { + *pdVar24 = *pdVar16; + *pdVar16 = dVar38; + if ((param_4 != (undefined8 *)0x0) && (0 < (int)param_6)) { + lVar23 = lVar23 * param_5; + lVar25 = lVar23 + 2; + lVar21 = lVar25 * 8; + if (((lVar21 + lVar9 * -8 == 0 || lVar21 < lVar9 * 8) || + (0x10 - (long)param_4) + (long)puVar17 <= lVar21 + -0x10) && (8 < param_6)) { + uVar33 = (uint)((ulong)(param_4 + lVar23) >> 3) & 1; + uVar30 = param_6; + if (uVar33 < param_6) { + uVar30 = uVar33; + } + if (uVar30 != 0) { + uVar12 = param_4[lVar23]; + param_4[lVar23] = *puVar17; + *puVar17 = uVar12; + } + lVar25 = 0; + uVar33 = ((param_6 - uVar30) - 2 >> 1) + 1; + uVar26 = 0; + iVar49 = uVar33 * 2; + do { + puVar32 = (undefined8 *)((long)param_4 + lVar25 + (lVar9 + (ulong)uVar30) * 8); + puVar3 = (undefined8 *)((long)param_4 + lVar25 + ((ulong)uVar30 + lVar23) * 8); + uVar26 = uVar26 + 1; + lVar25 = lVar25 + 0x10; + uVar41 = *puVar32; + uVar37 = puVar3[1]; + uVar12 = *puVar3; + puVar3[1] = puVar32[1]; + *puVar3 = uVar41; + puVar32[1] = uVar37; + *puVar32 = uVar12; + } while (uVar26 < uVar33); + if (iVar49 != param_6 - uVar30) { + lVar21 = (long)(int)(iVar49 + (uint)(uVar30 != 0)); + lVar25 = lVar9 + lVar21; + lVar21 = lVar21 + lVar23; + uVar12 = param_4[lVar21]; + param_4[lVar21] = param_4[lVar25]; + param_4[lVar25] = uVar12; + } + } + else { + lVar23 = 0; + do { + uVar12 = param_4[lVar25 + lVar23 + -2]; + param_4[lVar25 + lVar23 + -2] = puVar17[lVar23]; + puVar17[lVar23] = uVar12; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)param_6); + } + } + } + } + puVar17 = puVar17 + param_5; + lVar9 = lVar9 + param_5; + lVar44 = lVar44 + 1; + uVar30 = uVar19; + pdVar16 = pdVar16 + 1; + } while ((int)uVar19 < (int)(param_6 - 1)); + } + return 1; +LAB_002ad590: + iVar18 = iVar18 + 1; + if (iVar18 == iVar49) goto LAB_002ad5a0; + goto LAB_002ad018; +} + + +================================================================== + +### FUNC 002adb50 (2724 bytes) name=eigen + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::eigen(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&) */ + +undefined1 cv::eigen(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + bool bVar4; + ulong uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + undefined2 uVar10; + undefined8 *puVar11; + char cVar12; + undefined1 uVar13; + int iVar14; + int iVar15; + char *pcVar16; + long lVar17; + long lVar18; + ulong uVar19; + ulong uVar20; + Mat **ppMVar21; + long lVar22; + Mat *pMVar23; + uint uVar24; + int *piVar25; + ulong uVar26; + ulong uVar27; + ulong uVar28; + ulong uVar29; + long lVar30; + undefined8 local_630; + undefined8 local_628; + undefined8 local_620; + undefined8 local_618; + undefined8 local_610; + undefined8 local_608; + undefined8 local_600; + Mat *pMStack_5f8; + undefined8 local_5f0; + undefined8 uStack_5e8; + undefined8 local_5e0; + undefined8 uStack_5d8; + undefined8 local_5d0; + long lStack_5c8; + Mat **local_5c0; + undefined8 *local_5b8; + undefined8 local_5b0; + undefined8 uStack_5a8; + undefined4 local_5a0; + int local_59c; + Mat *local_598; + undefined8 local_590; + undefined8 uStack_588; + undefined8 local_580; + undefined8 uStack_578; + undefined8 local_570; + long lStack_568; + Mat **local_560; + undefined8 *local_558; + undefined8 local_550; + undefined8 local_548; + uint local_538; + int local_534; + int local_530; + int local_52c; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_500; + int *local_4f8; + undefined8 *local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + uint local_4d8; + int local_4d4; + int local_4d0; + int local_4cc; + ulong local_4c8; + ulong local_4c0; + long local_4b8; + long local_4b0; + undefined8 local_4a8; + long local_4a0; + int *local_498; + ulong *local_490; + ulong local_488 [2]; + uint local_478; + int local_474; + int local_470 [2]; + long local_468; + long local_460; + long local_458; + long local_450; + undefined8 local_448; + long local_440; + int *local_438; + ulong *local_430; + ulong local_428; + ulong local_420; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + /* try { // try from 002adb74 to 003adb97 has its CatchHandler @ 002ad9e8 */ + iVar14 = _InputArray::kind(param_1); + if (iVar14 == 0x10000) { + pMVar23 = *(Mat **)(param_1 + 8); + local_4f8 = &local_530; + local_4f0 = &local_4e8; + local_538 = *(uint *)pMVar23; + local_534 = *(int *)(pMVar23 + 4); + local_530 = *(int *)(pMVar23 + 8); + local_52c = *(int *)(pMVar23 + 0xc); + local_528 = *(undefined8 *)(pMVar23 + 0x10); + local_520 = *(undefined8 *)(pMVar23 + 0x18); + local_518 = *(undefined8 *)(pMVar23 + 0x20); + local_510 = *(undefined8 *)(pMVar23 + 0x28); + local_508 = *(undefined8 *)(pMVar23 + 0x30); + local_500 = *(long *)(pMVar23 + 0x38); + local_4e0 = 0; + local_4e8 = 0; + if (local_500 != 0) { + piVar25 = (int *)(local_500 + 0x14); + do { + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_4e8 = **(undefined8 **)(pMVar23 + 0x48); + local_4e0 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_534 = 0; + Mat::copySize((Mat *)&local_538,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar14 = local_530; + uVar24 = local_538; + /* try { // try from 002adbb0 to 003adbb3 has its CatchHandler @ 002adc90 */ + uVar2 = local_538 & 0xfff; + if (local_530 != local_52c) { + local_630 = 0; + local_628 = 0; + pcVar16 = (char *)String::allocate((String *)&local_630,0x14); + uVar7 = s_src_rows____src_cols_00467cb0._8_8_; + uVar6 = s_src_rows____src_cols_00467cb0._0_8_; + /* try { // try from 002adbfc to 003adbff has its CatchHandler @ 002adc50 */ + /* try { // try from 002adc04 to 003adc07 has its CatchHandler @ 002adc90 */ + *(undefined4 *)(pcVar16 + 0x10) = s_src_rows____src_cols_00467cb0._16_4_; + *(undefined8 *)pcVar16 = uVar6; + *(undefined8 *)(pcVar16 + 8) = uVar7; + error(-0xd7,(String *)&local_630, + "bool cv::eigen(cv::InputArray, cv::OutputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x534); + String::deallocate((String *)&local_630); + } + if (1 < uVar2 - 5) { + local_620 = 0; + local_618 = 0; + pcVar16 = (char *)String::allocate((String *)&local_620,0x20); + uVar8 = s_type____CV_32F____type____CV_64F_00467cc8._24_8_; + uVar7 = s_type____CV_32F____type____CV_64F_00467cc8._16_8_; + uVar6 = s_type____CV_32F____type____CV_64F_00467cc8._8_8_; + /* catch() { ... } // from try @ 002adbfc with catch @ 002adc50 */ + /* try { // try from 002adc7c to 003adc7f has its CatchHandler @ 002ad9e8 */ + *(undefined8 *)pcVar16 = s_type____CV_32F____type____CV_64F_00467cc8._0_8_; + *(undefined8 *)(pcVar16 + 8) = uVar6; + /* catch() { ... } // from try @ 002adaf8 with catch @ 002adc80 */ + *(undefined8 *)(pcVar16 + 0x10) = uVar7; + *(undefined8 *)(pcVar16 + 0x18) = uVar8; + error(-0xd7,(String *)&local_620, + "bool cv::eigen(cv::InputArray, cv::OutputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x535); + String::deallocate((String *)&local_620); + } + /* catch() { ... } // from try @ 002ada74 with catch @ 002adc90 + catch() { ... } // from try @ 002adb00 with catch @ 002adc90 + catch() { ... } // from try @ 002adbb0 with catch @ 002adc90 + catch() { ... } // from try @ 002adc04 with catch @ 002adc90 */ + /* catch() { ... } // from try @ 002adce8 with catch @ 002adc98 + catch() { ... } // from try @ 002addf4 with catch @ 002adc98 + catch() { ... } // from try @ 002af7a0 with catch @ 002adc98 + catch() { ... } // from try @ 002afcb0 with catch @ 002adc98 */ + local_5b8 = &local_5b0; + local_5c0 = &pMStack_5f8; + uStack_5a8 = 0; + local_5b0 = 0; + local_5f0 = 0; + uStack_5e8 = 0; + local_5e0 = 0; + pMStack_5f8 = _UNK_002ae718; + local_600 = _DAT_002ae710; + uStack_5d8 = 0; + local_5d0 = 0; + lStack_5c8 = 0; + cVar12 = _OutputArray::needed(param_3); + if (cVar12 != '\0') { + _OutputArray::create(param_3,iVar14,iVar14,uVar2,-1,false,0); + iVar15 = _InputArray::kind((_InputArray *)param_3); + if (iVar15 == 0x10000) { + pMVar23 = *(Mat **)(param_3 + 8); + local_560 = &local_598; + local_558 = &local_550; + local_5a0 = *(undefined4 *)pMVar23; + local_590 = *(undefined8 *)(pMVar23 + 0x10); + local_59c = *(int *)(pMVar23 + 4); + local_598 = *(Mat **)(pMVar23 + 8); + uStack_588 = *(undefined8 *)(pMVar23 + 0x18); + local_580 = *(undefined8 *)(pMVar23 + 0x20); + uStack_578 = *(undefined8 *)(pMVar23 + 0x28); + local_570 = *(undefined8 *)(pMVar23 + 0x30); + lStack_568 = *(long *)(pMVar23 + 0x38); + local_548 = 0; + local_550 = 0; + if (lStack_568 != 0) { + piVar25 = (int *)(lStack_568 + 0x14); + do { + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_550 = **(undefined8 **)(pMVar23 + 0x48); + local_548 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_59c = 0; + Mat::copySize((Mat *)&local_5a0,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if (lStack_568 != 0) { + piVar25 = (int *)(lStack_568 + 0x14); + do { + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (lStack_5c8 != 0) { + piVar25 = (int *)(lStack_5c8 + 0x14); + do { + iVar15 = *piVar25; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + puVar11 = local_558; + lStack_5c8 = 0; + local_5f0 = 0; + uStack_5d8 = 0; + local_5e0 = 0; + uStack_5e8 = 0; + if (local_600._4_4_ < 1) { +LAB_002ae348: + if (2 < local_59c) goto LAB_002ae354; + pMStack_5f8 = local_598; + local_600 = CONCAT44(local_59c,local_5a0); + *local_5b8 = *local_558; + local_5b8[1] = puVar11[1]; + } + else { + iVar15 = 0; + ppMVar21 = local_5c0; + do { + *(undefined4 *)ppMVar21 = 0; + iVar15 = iVar15 + 1; + ppMVar21 = (Mat **)((long)ppMVar21 + 4); + } while (iVar15 < local_600._4_4_); + if (local_600._4_4_ < 3) goto LAB_002ae348; +LAB_002ae354: + local_600 = CONCAT44(local_600._4_4_,local_5a0); + Mat::copySize((Mat *)&local_600,(Mat *)&local_5a0); + } + uStack_5d8 = uStack_578; + local_5e0 = local_580; + lStack_5c8 = lStack_568; + local_5d0 = local_570; + uStack_5e8 = uStack_588; + local_5f0 = local_590; + if (lStack_568 != 0) { + piVar25 = (int *)(lStack_568 + 0x14); + do { + iVar15 = *piVar25; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_5a0); + } + } + lStack_568 = 0; + local_590 = 0; + uStack_578 = 0; + local_580 = 0; + uStack_588 = 0; + if (0 < local_59c) { + iVar15 = 0; + ppMVar21 = local_560; + do { + *(undefined4 *)ppMVar21 = 0; + iVar15 = iVar15 + 1; + ppMVar21 = (Mat **)((long)ppMVar21 + 4); + } while (iVar15 < local_59c); + } + if (local_558 != &local_550) { + fastFree(local_558); + } + } + /* try { // try from 002adce8 to 003add0b has its CatchHandler @ 002adc98 */ + if (local_534 < 1) { + uVar27 = 0; + lVar17 = 0; + uVar26 = 0x20; + lVar18 = 0; +LAB_002ae248: + local_418 = auStack_408; + local_410 = uVar26; + } + else { + lVar17 = local_4f0[(long)local_534 + -1]; + local_418 = auStack_408; + local_410 = 0x408; + uVar27 = lVar17 * iVar14 + 0xfU & 0xfffffffffffffff0; + lVar18 = uVar27 * (long)iVar14; + uVar26 = lVar18 + lVar17 * (iVar14 * 5) + 0x20; + if (uVar26 < 0x409) goto LAB_002ae248; + /* try { // try from 002add50 to 003addcb has its CatchHandler @ 002afcb4 */ + local_418 = operator_new__(uVar26); + local_410 = uVar26; + } + lVar30 = (long)iVar14; + uVar3 = uVar24 & 7; + uVar1 = uVar2 + 0x42ff0000; + uVar29 = (ulong)(local_418 + 0xf) & 0xfffffffffffffff0; + local_498 = &local_4d0; + local_490 = local_488; + uVar28 = (ulong)(int)((uVar24 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> (uVar3 << 1)) & 3)); + local_4d4 = 2; + local_4d0 = iVar14; + uVar19 = lVar30 * uVar28; + local_4cc = iVar14; + local_4b8 = 0; + local_4b0 = 0; + local_4a8 = 0; + local_4a0 = 0; + local_488[1] = 0; + local_488[0] = 0; + lVar22 = lVar30; + uVar26 = uVar19; + local_4c8 = uVar29; + local_4c0 = uVar29; + if (uVar27 == 0) { + local_4d8 = uVar1 | 0x4000; + local_4b8 = 0; + goto LAB_002ade50; + } + /* try { // try from 002addf4 to 003ade4f has its CatchHandler @ 002adc98 */ + uVar20 = 0x88442211UL >> (uVar3 << 2) & 0xf; + local_4d8 = uVar1; + if (iVar14 == 1) { + uVar5 = 0; + if (uVar20 != 0) { + uVar5 = uVar19 / uVar20; + } + if (uVar19 - uVar5 * uVar20 != 0) goto LAB_002ae414; +LAB_002ae4c0: + local_4b8 = 0; + uVar24 = 0x4000; + uVar26 = uVar19; + } + else { + uVar5 = 0; + if (uVar20 != 0) { + uVar5 = uVar27 / uVar20; + } + uVar26 = uVar27; + if (uVar27 != uVar5 * uVar20) { +LAB_002ae414: + local_610 = 0; + local_608 = 0; + pcVar16 = (char *)String::allocate((String *)&local_610,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar16 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar16 + 0x18) = uVar9; + *(undefined2 *)(pcVar16 + 0x1c) = uVar10; + pcVar16[0x1e] = cVar12; + *(undefined8 *)pcVar16 = uVar6; + *(undefined8 *)(pcVar16 + 8) = uVar7; + error(-0xd,(String *)&local_610,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp",0x19d + ); + String::deallocate((String *)&local_610); + lVar22 = (long)local_4d0; + } + if (uVar19 - uVar26 == 0) goto LAB_002ae4c0; + local_4b8 = uVar19 - uVar26; + uVar24 = 0; + } + local_4d8 = local_4d8 | uVar24; +LAB_002ade50: + *local_490 = uVar26; + local_490[1] = uVar28; + local_438 = local_470; + local_430 = &local_428; + local_4b0 = local_4c0 + lVar22 * uVar26; + local_4b8 = local_4b0 + local_4b8; + local_474 = 2; + local_468 = uVar29 + lVar18; + local_470[1] = 1; + /* try { // try from 002ade9c to 003ade9f has its CatchHandler @ 002afcb4 */ + local_458 = local_468 + uVar19; + local_590 = 0; + local_5a0 = 0x2010000; + local_470[0] = iVar14; + local_448 = 0; + local_440 = 0; + local_598 = (Mat *)&local_4d8; + local_478 = uVar1 | 0x4000; + local_460 = local_468; + local_450 = local_458; + local_428 = uVar28; + local_420 = uVar28; + /* try { // try from 002adef8 to 003adefb has its CatchHandler @ 002afc80 */ + Mat::copyTo((Mat *)&local_538,(_OutputArray *)&local_5a0); + /* try { // try from 002adf00 to 003adf03 has its CatchHandler @ 002afcb4 */ + if (uVar2 == 5) { + uVar13 = FUN_002abe40(local_4c8,local_488[0],local_468,local_5f0,local_5b0,iVar14, + uVar29 + (uVar27 + lVar17) * lVar30); + } + else { + uVar13 = FUN_002ace08(); + } + Mat::copyTo((Mat *)&local_478,param_2); + if (local_440 != 0) { + piVar25 = (int *)(local_440 + 0x14); + do { + iVar14 = *piVar25; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar14 = 0; + piVar25 = local_438; + do { + *piVar25 = 0; + iVar14 = iVar14 + 1; + piVar25 = piVar25 + 1; + } while (iVar14 < local_474); + } + if (local_430 != &local_428) { + fastFree(local_430); + } + if (local_4a0 != 0) { + piVar25 = (int *)(local_4a0 + 0x14); + do { + iVar14 = *piVar25; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_4d8); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar14 = 0; + piVar25 = local_498; + do { + *piVar25 = 0; + iVar14 = iVar14 + 1; + piVar25 = piVar25 + 1; + } while (iVar14 < local_4d4); + } + if (local_490 != local_488) { + fastFree(local_490); + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + if (lStack_5c8 != 0) { + piVar25 = (int *)(lStack_5c8 + 0x14); + do { + iVar14 = *piVar25; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = 0; + uStack_5d8 = 0; + local_5e0 = 0; + uStack_5e8 = 0; + if (0 < local_600._4_4_) { + iVar14 = 0; + ppMVar21 = local_5c0; + do { + *(undefined4 *)ppMVar21 = 0; + iVar14 = iVar14 + 1; + ppMVar21 = (Mat **)((long)ppMVar21 + 4); + } while (iVar14 < local_600._4_4_); + } + if (local_5b8 != &local_5b0) { + fastFree(local_5b8); + } + if (local_500 != 0) { + piVar25 = (int *)(local_500 + 0x14); + do { + iVar14 = *piVar25; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar14 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_538); + } + } + local_500 = 0; + local_528 = 0; + local_510 = 0; + local_518 = 0; + local_520 = 0; + if (0 < local_534) { + iVar14 = 0; + piVar25 = local_4f8; + do { + *piVar25 = 0; + iVar14 = iVar14 + 1; + piVar25 = piVar25 + 1; + } while (iVar14 < local_534); + } + if (local_4f0 != &local_4e8) { + fastFree(local_4f0); + } + return uVar13; +} + + +================================================================== + +### FUNC 002ae720 (2436 bytes) name=cvEigenVV + +void cvEigenVV(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + long lVar5; + char *pcVar6; + Mat **ppMVar7; + int *piVar8; + _OutputArray *p_Var9; + int iVar10; + undefined4 *puVar11; + undefined4 local_328 [2]; + Mat *local_320; + undefined4 local_318; + undefined4 local_314; + undefined8 local_310; + Mat *local_308; + undefined4 local_300; + undefined4 local_2fc; + undefined8 local_2f8; + Mat *local_2f0; + undefined4 local_2e8; + undefined4 local_2e4; + uint local_2e0; + int iStack_2dc; + undefined8 uStack_2d8; + long local_2d0; + undefined8 local_2c8; + AutoBuffer *local_2c0; + undefined8 local_2b8; + undefined8 local_2b0; + long local_2a8; + int *local_2a0; + undefined8 *local_298; + undefined8 auStack_290 [2]; + undefined8 local_280; + undefined8 uStack_278; + long local_270; + undefined8 local_268; + AutoBuffer *local_260; + undefined8 local_258; + undefined8 local_250; + long local_248; + int *local_240; + undefined8 *local_238; + undefined8 local_230; + undefined8 uStack_228; + Mat aMStack_220 [4]; + int local_21c; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + long local_1e8; + undefined4 *local_1e0; + undefined1 *local_1d8; + undefined1 auStack_1d0 [16]; + undefined8 local_1c0; + Mat *pMStack_1b8; + long local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + long local_188; + Mat **local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + Mat *pMStack_158; + undefined8 local_150; + undefined8 local_148; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + long local_128; + Mat **local_120; + undefined4 **local_118; + undefined4 *local_110; + undefined1 *puStack_108; + undefined1 auStack_100 [16]; + Mat aMStack_f0 [4]; + int local_ec; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + long local_b8; + undefined4 *local_b0; + undefined1 *local_a8; + undefined1 auStack_a0 [16]; + Mat aMStack_90 [4]; + int local_8c; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + long local_58; + undefined4 *local_50; + undefined1 *local_48; + undefined1 auStack_40 [64]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_280 = CONCAT44(iStack_2dc,local_2e0); + local_238 = &local_230; + local_240 = (int *)&uStack_278; + uStack_228 = 0; + local_230 = 0; + uStack_278 = uStack_2d8; + local_270 = local_2d0; + local_268 = local_2c8; + local_260 = local_2c0; + local_258 = local_2b8; + local_250 = local_2b0; + local_248 = local_2a8; + if (local_2a8 != 0) { + piVar8 = (int *)(local_2a8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_2dc < 3) { + local_230 = *local_298; + uStack_228 = local_298[1]; + } + else { + local_280 = (ulong)local_2e0; + cv::Mat::copySize((Mat *)&local_280,(Mat *)&local_2e0); + } + if (param_2 == (cv *)0x0) { + local_1c0._4_4_ = (int)((ulong)local_1c0 >> 0x20); + local_1c0 = (long *)CONCAT44(local_1c0._4_4_,0x1010000); + local_1b0 = 0; + local_150 = 0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + pMStack_1b8 = aMStack_220; + pMStack_158 = (Mat *)&local_280; + p_Var9 = (_OutputArray *)cv::noArray(); + cv::eigen((_InputArray *)&local_1c0,(_OutputArray *)&local_160,p_Var9); + } + else { + local_310._4_4_ = (undefined4)((ulong)local_310 >> 0x20); + local_2f8._4_4_ = (undefined4)((ulong)local_2f8 >> 0x20); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,local_2c0); + local_118 = &local_110; + local_120 = &pMStack_158; + pMStack_158 = pMStack_1b8; + local_160 = local_1c0; + local_150 = local_1b0; + local_148 = local_1a8; + local_140 = local_1a0; + local_138 = local_198; + local_130 = local_190; + local_128 = local_188; + puStack_108 = (undefined1 *)0x0; + local_110 = (undefined4 *)0x0; + if (local_188 != 0) { + piVar8 = (int *)(local_188 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (local_1c0._4_4_ < 3) { + local_110 = (undefined4 *)*local_178; + puStack_108 = (undefined1 *)local_178[1]; + } + else { + local_160 = (long *)((ulong)local_1c0 & 0xffffffff); + cv::Mat::copySize((Mat *)&local_160,(Mat *)&local_1c0); + } + local_2e8 = 0; + local_2e4 = 0; + local_2f8 = CONCAT44(local_2f8._4_4_,0x2010000); + local_318 = 0; + local_314 = 0; + local_328[0] = 0x1010000; + local_300 = 0; + local_2fc = 0; + local_310 = CONCAT44(local_310._4_4_,0x2010000); + local_320 = aMStack_220; + local_308 = (Mat *)&local_280; + local_2f0 = (Mat *)&local_160; + cv::eigen((_InputArray *)local_328,(_OutputArray *)&local_310,(_OutputArray *)&local_2f8); + lVar5 = local_1b0; + if (local_1b0 != local_150) { + local_2e8 = 0; + local_2e4 = 0; + local_2f8 = CONCAT44(local_2f8._4_4_,0x2010000); + local_2f0 = (Mat *)&local_1c0; + cv::Mat::convertTo((Mat *)&local_160,(_OutputArray *)&local_2f8,(uint)local_1c0 & 0xfff,1.0, + 0.0); + if (lVar5 != local_1b0) { + local_310 = 0; + local_308 = (Mat *)0x0; + pcVar6 = (char *)cv::String::allocate((String *)&local_310,0x12); + uVar4 = s_p____evects0_ptr___00467d68._8_8_; + uVar3 = s_p____evects0_ptr___00467d68._0_8_; + *(undefined2 *)(pcVar6 + 0x10) = s_p____evects0_ptr___00467d68._16_2_; + *(undefined8 *)pcVar6 = uVar3; + *(undefined8 *)(pcVar6 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_310, + "void cvEigenVV(CvArr*, CvArr*, CvArr*, double, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x624); + cv::String::deallocate((String *)&local_310); + } + } + if (local_128 != 0) { + piVar8 = (int *)(local_128 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_160); + } + } + local_128 = 0; + local_150 = 0; + local_138 = 0; + local_140 = 0; + local_148 = 0; + if (0 < local_160._4_4_) { + iVar10 = 0; + ppMVar7 = local_120; + do { + *(undefined4 *)ppMVar7 = 0; + iVar10 = iVar10 + 1; + ppMVar7 = (Mat **)((long)ppMVar7 + 4); + } while (iVar10 < local_160._4_4_); + } + if (local_118 != &local_110) { + cv::fastFree(local_118); + } + if (local_188 != 0) { + piVar8 = (int *)(local_188 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_1c0); + } + } + local_188 = 0; + local_1b0 = 0; + local_198 = 0; + local_1a0 = 0; + local_1a8 = 0; + if (0 < local_1c0._4_4_) { + iVar10 = 0; + ppMVar7 = local_180; + do { + *(undefined4 *)ppMVar7 = 0; + iVar10 = iVar10 + 1; + ppMVar7 = (Mat **)((long)ppMVar7 + 4); + } while (iVar10 < local_1c0._4_4_); + } + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + } + lVar5 = local_2d0; + if (local_2d0 != local_270) { + if ((local_2a0[1] == local_240[1]) && (*local_2a0 == *local_240)) { + local_150 = 0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + pMStack_158 = (Mat *)&local_2e0; + cv::Mat::convertTo((Mat *)&local_280,(_OutputArray *)&local_160,local_2e0 & 0xfff,1.0,0.0); + } + else if ((local_2e0 & 0xfff) == ((uint)local_280 & 0xfff)) { + local_1c0 = (long *)CONCAT44(local_1c0._4_4_,0x1010000); + local_1b0 = 0; + local_150 = 0; + local_160 = (long *)CONCAT44(local_160._4_4_,0x2010000); + pMStack_1b8 = (Mat *)&local_280; + pMStack_158 = (Mat *)&local_2e0; + cv::transpose((_InputArray *)&local_1c0,(_OutputArray *)&local_160); + } + else { + cv::Mat::t(); + local_178 = &local_170; + local_180 = &pMStack_1b8; + local_1c0 = DAT_002af230; + pMStack_1b8 = (Mat *)0x0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + local_168 = 0; + local_170 = 0; + (**(code **)(*local_160 + 0x18)) + (local_160,(_OutputArray *)&local_160,(Mat *)&local_1c0,0xffffffff); + local_2e8 = 0; + local_2e4 = 0; + local_2f8 = CONCAT44(local_2f8._4_4_,0x2010000); + local_2f0 = (Mat *)&local_2e0; + cv::Mat::convertTo((Mat *)&local_1c0,(_OutputArray *)&local_2f8,local_2e0 & 0xfff,1.0,0.0); + if (local_188 != 0) { + piVar8 = (int *)(local_188 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_1c0); + } + } + local_188 = 0; + local_1b0 = 0; + local_198 = 0; + local_1a0 = 0; + local_1a8 = 0; + if (0 < local_1c0._4_4_) { + iVar10 = 0; + ppMVar7 = local_180; + do { + *(undefined4 *)ppMVar7 = 0; + iVar10 = iVar10 + 1; + ppMVar7 = (Mat **)((long)ppMVar7 + 4); + } while (iVar10 < local_1c0._4_4_); + } + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + if (local_58 != 0) { + piVar8 = (int *)(local_58 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_90); + } + } + local_58 = 0; + local_80 = 0; + local_68 = 0; + local_70 = 0; + local_78 = 0; + if (0 < local_8c) { + iVar10 = 0; + do { + *local_50 = 0; + iVar10 = iVar10 + 1; + local_50 = local_50 + 1; + } while (iVar10 < local_8c); + } + if (local_48 != auStack_40) { + cv::fastFree(local_48); + } + if (local_b8 != 0) { + piVar8 = (int *)(local_b8 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_f0); + } + } + local_b8 = 0; + local_e0 = 0; + local_c8 = 0; + local_d0 = 0; + local_d8 = 0; + if (0 < local_ec) { + iVar10 = 0; + do { + *local_b0 = 0; + iVar10 = iVar10 + 1; + local_b0 = local_b0 + 1; + } while (iVar10 < local_ec); + } + if (local_a8 != auStack_a0) { + cv::fastFree(local_a8); + } + if (local_118 != (undefined4 **)0x0) { + piVar8 = (int *)((long)local_118 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_150); + } + } + local_118 = (undefined4 **)0x0; + local_140 = 0; + local_128 = 0; + local_130 = 0; + local_138 = 0; + if (0 < local_150._4_4_) { + iVar10 = 0; + puVar11 = local_110; + do { + *puVar11 = 0; + iVar10 = iVar10 + 1; + puVar11 = puVar11 + 1; + } while (iVar10 < local_150._4_4_); + } + if (puStack_108 != auStack_100) { + cv::fastFree(puStack_108); + } + } + if (lVar5 != local_2d0) { + local_2f8 = 0; + local_2f0 = (Mat *)0x0; + pcVar6 = (char *)cv::String::allocate((String *)&local_2f8,0x11); + uVar4 = s_p____evals0_ptr___00467d80._8_8_; + uVar3 = s_p____evals0_ptr___00467d80._0_8_; + pcVar6[0x10] = s_p____evals0_ptr___00467d80[0x10]; + *(undefined8 *)pcVar6 = uVar3; + *(undefined8 *)(pcVar6 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_2f8, + "void cvEigenVV(CvArr*, CvArr*, CvArr*, double, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x632); + cv::String::deallocate((String *)&local_2f8); + } + } + if (local_248 != 0) { + piVar8 = (int *)(local_248 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_280); + } + } + local_248 = 0; + local_270 = 0; + local_258 = 0; + local_260 = (AutoBuffer *)0x0; + local_268 = 0; + if (0 < local_280._4_4_) { + iVar10 = 0; + piVar8 = local_240; + do { + *piVar8 = 0; + iVar10 = iVar10 + 1; + piVar8 = piVar8 + 1; + } while (iVar10 < local_280._4_4_); + } + if (local_238 != &local_230) { + cv::fastFree(local_238); + } + if (local_2a8 != 0) { + piVar8 = (int *)(local_2a8 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_2e0); + } + } + local_2a8 = 0; + local_2d0 = 0; + local_2b8 = 0; + local_2c0 = (AutoBuffer *)0x0; + local_2c8 = 0; + if (0 < iStack_2dc) { + iVar10 = 0; + do { + *local_2a0 = 0; + iVar10 = iVar10 + 1; + local_2a0 = local_2a0 + 1; + } while (iVar10 < iStack_2dc); + } + if (local_298 != auStack_290) { + cv::fastFree(local_298); + } + if (local_1e8 != 0) { + piVar8 = (int *)(local_1e8 + 0x14); + do { + iVar10 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_220); + } + } + local_1e8 = 0; + local_210 = 0; + local_1f8 = 0; + local_200 = 0; + local_208 = 0; + if (0 < local_21c) { + iVar10 = 0; + do { + *local_1e0 = 0; + iVar10 = iVar10 + 1; + local_1e0 = local_1e0 + 1; + } while (iVar10 < local_21c); + } + if (local_1d8 != auStack_1d0) { + cv::fastFree(local_1d8); + } + return; +} + + +================================================================== + +### FUNC 002af238 (5196 bytes) name=FUN_002af238 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_002af238(double param_1,float param_2,float *param_3,ulong param_4,float *param_5, + float *param_6,ulong param_7,uint param_8,uint param_9,int param_10) + +{ + double *pdVar1; + undefined8 *puVar2; + undefined8 *puVar3; + long lVar4; + int iVar5; + double *pdVar6; + int iVar7; + float *pfVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [12]; + bool bVar11; + int iVar12; + uint uVar13; + ulong uVar14; + double *pdVar15; + undefined1 (*pauVar16) [12]; + float *pfVar17; + float *pfVar18; + ulong uVar19; + long lVar20; + double *pdVar21; + float *pfVar22; + float *pfVar23; + uint uVar24; + double *pdVar25; + int iVar26; + int iVar27; + int iVar28; + uint uVar29; + long lVar30; + long lVar31; + float *pfVar32; + ulong uVar33; + ulong uVar34; + ulong uVar35; + long lVar36; + long lVar37; + uint uVar38; + long lVar39; + uint uVar40; + uint uVar41; + undefined4 uVar42; + undefined4 uVar43; + float fVar44; + float fVar45; + float fVar46; + float fVar47; + double dVar48; + undefined8 uVar49; + undefined8 uVar50; + double dVar51; + undefined8 uVar52; + float fVar53; + float fVar54; + float fVar55; + float fVar56; + float fVar57; + float fVar58; + float fVar59; + double dVar60; + double dVar61; + double dVar62; + uint local_4c4; + double adStack_440 [136]; + + pdVar15 = adStack_440; + uVar35 = (ulong)(int)param_9; + uVar34 = (ulong)param_8; + if (0x88 < uVar35) { + uVar14 = uVar35 << 3; + if (0xfe0000000000000 < uVar35) { + uVar14 = 0xffffffffffffffff; + } + pdVar15 = operator_new__(uVar14); + } + uVar38 = param_8; + if ((int)param_8 < 0x1e) { + uVar38 = 0x1e; + } + param_4 = param_4 >> 2; + param_7 = param_7 >> 2; + if ((int)param_9 < 1) { + uVar35 = (ulong)(param_9 - 1); + } + else { + uVar35 = (ulong)(param_9 - 1); + lVar39 = 0; + pfVar22 = param_3; + pfVar18 = param_6; + pfVar23 = param_6; + do { + lVar20 = 0; + dVar48 = 0.0; + if (0 < (int)param_8) { + do { + pfVar17 = pfVar22 + lVar20; + lVar20 = lVar20 + 1; + dVar48 = dVar48 + (double)*pfVar17 * (double)*pfVar17; + } while ((int)lVar20 < (int)param_8); + } + pdVar15[lVar39] = dVar48; + if (param_6 != (float *)0x0) { + memset(pfVar23,0,(uVar35 + 1) * 4); + *pfVar18 = 1.0; + } + lVar39 = lVar39 + 1; + pfVar23 = pfVar23 + param_7; + pfVar18 = pfVar18 + param_7 + 1; + pfVar22 = pfVar22 + param_4; + } while (lVar39 != uVar35 + 1); + } + local_4c4 = 0; + pdVar1 = pdVar15 + 1; + do { + lVar39 = 1; + lVar20 = 0; + iVar12 = 1; + iVar27 = (int)uVar35; + bVar11 = false; + pdVar25 = pdVar1; + pfVar23 = param_3; + pfVar18 = param_6; + if (0 < iVar27) { + do { + if ((int)lVar39 < (int)param_9) { + uVar13 = -((uint)((ulong)pfVar18 >> 2) & 3) & 3; + uVar41 = param_9; + if (uVar13 < param_9) { + uVar41 = uVar13; + } + uVar14 = (ulong)uVar41; + uVar13 = ((param_9 - uVar41) - 4 >> 2) + 1; + iVar28 = uVar13 * 4; + pfVar22 = (float *)((long)param_6 + lVar20 + param_7 * 4); + pdVar21 = pdVar25; + pfVar17 = pfVar23; + do { + pfVar17 = pfVar17 + param_4; + dVar48 = pdVar25[-1]; + dVar61 = *pdVar21; + if ((int)param_8 < 1) { + dVar60 = 0.0; + dVar51 = 0.0; + } + else { + dVar51 = 0.0; + lVar30 = 0; + do { + pfVar32 = pfVar23 + lVar30; + pfVar8 = pfVar17 + lVar30; + lVar30 = lVar30 + 1; + dVar51 = dVar51 + (double)*pfVar8 * (double)*pfVar32; + } while ((int)lVar30 < (int)param_8); + dVar60 = ABS(dVar51); + } + dVar62 = SQRT(dVar48 * dVar61); + if (NAN(dVar62)) { + /* try { // try from 002b0238 to 003b023b has its CatchHandler @ 002b02d0 */ + dVar62 = sqrt(dVar48 * dVar61); + } + if (dVar62 * (double)param_2 < dVar60) { + dVar51 = dVar51 + dVar51; + dVar48 = dVar48 - dVar61; + dVar60 = ABS(dVar51); + dVar61 = ABS(dVar48); + if (dVar61 < dVar60) { + /* try { // try from 002b02f4 to 003b02f7 has its CatchHandler @ 002b0164 */ + dVar62 = (dVar61 / dVar60) * (dVar61 / dVar60) + 1.0; + /* catch() { ... } // from try @ 002b0328 with catch @ 002b02f8 + catch() { ... } // from try @ 002b0488 with catch @ 002b02f8 + catch() { ... } // from try @ 002b0530 with catch @ 002b02f8 + catch() { ... } // from try @ 002b0638 with catch @ 002b02f8 */ + dVar61 = SQRT(dVar62); + if (NAN(dVar61)) { + /* try { // try from 002b038c to 003b0417 has its CatchHandler @ 002b0614 */ + dVar61 = sqrt(dVar62); + dVar61 = dVar60 * dVar61; + } + else { + dVar61 = dVar60 * dVar61; + } +LAB_002affa0: + dVar60 = dVar61; + if (0.0 <= dVar48) goto LAB_002affa8; +LAB_002b02a4: + /* try { // try from 002b02ac to 003b02cb has its CatchHandler @ 002b0164 */ + dVar60 = ((dVar61 - dVar48) * 0.5) / dVar61; + dVar48 = SQRT(dVar60); + if (NAN(dVar48)) { + /* try { // try from 002b0638 to 003b063b has its CatchHandler @ 002b02f8 */ + /* catch() { ... } // from try @ 002b051c with catch @ 002b063c */ + dVar48 = sqrt(dVar60); + } + fVar46 = (float)dVar48; + /* catch() { ... } // from try @ 002b0238 with catch @ 002b02d0 */ + fVar55 = (float)(dVar51 / ((double)fVar46 * dVar61 + (double)fVar46 * dVar61)); + if ((int)param_8 < 1) goto LAB_002b02e4; +LAB_002affe4: + dVar61 = 0.0; + lVar30 = 0; + dVar48 = dVar61; + do { + fVar53 = pfVar17[lVar30] * fVar46 + fVar55 * pfVar23[lVar30]; + fVar54 = fVar55 * pfVar17[lVar30] + -fVar46 * pfVar23[lVar30]; + pfVar23[lVar30] = fVar53; + dVar51 = (double)fVar54; + dVar60 = (double)fVar53; + pfVar17[lVar30] = fVar54; + /* try { // try from 002b0018 to 003b0127 has its CatchHandler @ 002afe2c */ + lVar30 = lVar30 + 1; + dVar61 = dVar61 + dVar51 * dVar51; + dVar48 = dVar48 + dVar60 * dVar60; + } while ((int)lVar30 < (int)param_8); + } + else { + if (0.0 < dVar61) { + dVar62 = (dVar60 / dVar61) * (dVar60 / dVar61) + 1.0; + dVar60 = SQRT(dVar62); + if (NAN(dVar60)) { + dVar60 = sqrt(dVar62); + } + dVar61 = dVar61 * dVar60; + goto LAB_002affa0; + } + dVar60 = 0.0; + dVar61 = 0.0; + if (dVar48 < 0.0) goto LAB_002b02a4; +LAB_002affa8: + dVar61 = (dVar48 + dVar60) / (dVar60 + dVar60); + dVar48 = SQRT(dVar61); + if (NAN(dVar48)) { + dVar48 = sqrt(dVar61); + /* catch() { ... } // from try @ 002b038c with catch @ 002b0614 + catch() { ... } // from try @ 002b04c0 with catch @ 002b0614 + catch() { ... } // from try @ 002b0524 with catch @ 002b0614 */ + } + fVar55 = (float)dVar48; + fVar46 = (float)(dVar51 / ((double)fVar55 * dVar60 + (double)fVar55 * dVar60)); + if (0 < (int)param_8) goto LAB_002affe4; +LAB_002b02e4: + dVar61 = 0.0; + dVar48 = dVar61; + } + pdVar25[-1] = dVar48; + *pdVar21 = dVar61; + if (param_6 != (float *)0x0) { + lVar30 = (long)pfVar22 - (long)param_6; + fVar53 = -fVar46; + if ((lVar20 < (0x10 - (long)param_6) + (long)pfVar22 && lVar30 < lVar20 + 0x10) || + (param_9 < 7)) { + lVar30 = 0; + do { + fVar47 = pfVar22[lVar30]; + fVar54 = pfVar18[lVar30]; + /* try { // try from 002b0328 to 003b0347 has its CatchHandler @ 002b02f8 */ + pfVar18[lVar30] = fVar47 * fVar46 + fVar55 * fVar54; + pfVar22[lVar30] = fVar55 * fVar47 + fVar53 * fVar54; + lVar30 = lVar30 + 1; + } while ((int)lVar30 < (int)param_9); + bVar11 = true; + goto LAB_002af4f4; + } + uVar19 = uVar14; + if (uVar41 != 0) { + fVar47 = *pfVar22; + fVar54 = *pfVar18; + *pfVar18 = fVar47 * fVar46 + fVar55 * fVar54; + *pfVar22 = fVar55 * fVar47 + fVar53 * fVar54; + if (uVar41 != 1) { + fVar47 = pfVar22[1]; + fVar54 = pfVar18[1]; + pfVar18[1] = fVar47 * fVar46 + fVar55 * fVar54; + pfVar22[1] = fVar55 * fVar47 + fVar53 * fVar54; + if (uVar41 == 3) { + fVar47 = pfVar22[2]; + fVar54 = pfVar18[2]; + pfVar18[2] = fVar47 * fVar46 + fVar55 * fVar54; + pfVar22[2] = fVar55 * fVar47 + fVar53 * fVar54; + } + else { + uVar19 = 2; + } + } + } + if (2 < iVar27 - uVar41) { + lVar37 = 0; + uVar24 = 0; + do { + uVar24 = uVar24 + 1; + puVar2 = (undefined8 *)((long)param_6 + lVar37 + uVar14 * 4 + lVar30); + fVar44 = (float)puVar2[1]; + fVar45 = (float)((ulong)puVar2[1] >> 0x20); + fVar54 = (float)*puVar2; + fVar47 = (float)((ulong)*puVar2 >> 0x20); + lVar31 = lVar37 + uVar14 * 4 + lVar20; + lVar37 = lVar37 + 0x10; + puVar3 = (undefined8 *)((long)param_6 + lVar31); + /* catch() { ... } // from try @ 002afed4 with catch @ 002b012c + catch() { ... } // from try @ 002aff0c with catch @ 002b012c */ + fVar56 = (float)*puVar3; + fVar57 = (float)((ulong)*puVar3 >> 0x20); + fVar58 = (float)puVar3[1]; + fVar59 = (float)((ulong)puVar3[1] >> 0x20); + puVar3[1] = CONCAT44(fVar45 * fVar46 + fVar59 * fVar55, + fVar44 * fVar46 + fVar58 * fVar55); + *puVar3 = CONCAT44(fVar47 * fVar46 + fVar57 * fVar55, + fVar54 * fVar46 + fVar56 * fVar55); + puVar2[1] = CONCAT44(fVar55 * fVar45 + fVar59 * fVar53, + fVar55 * fVar44 + fVar58 * fVar53); + *puVar2 = CONCAT44(fVar55 * fVar47 + fVar57 * fVar53, + fVar55 * fVar54 + fVar56 * fVar53); + } while (uVar24 < uVar13); + /* try { // try from 002b0150 to 003b0153 has its CatchHandler @ 002afe2c */ + /* catch() { ... } // from try @ 002aff04 with catch @ 002b0154 */ + uVar19 = (ulong)(uint)((int)uVar19 + iVar28); + if (param_9 - uVar41 == iVar28) goto LAB_002b01fc; + } + uVar33 = -(uVar19 >> 0x1f) & 0xfffffffc00000000 | uVar19 << 2; + /* catch() { ... } // from try @ 002b01c0 with catch @ 002b0164 + catch() { ... } // from try @ 002b02ac with catch @ 002b0164 + catch() { ... } // from try @ 002b02f4 with catch @ 002b0164 */ + fVar47 = *(float *)((long)param_6 + lVar30 + uVar33); + fVar54 = *(float *)((long)param_6 + uVar33 + lVar20); + *(float *)((long)param_6 + uVar33 + lVar20) = fVar47 * fVar46 + fVar55 * fVar54; + *(float *)((long)param_6 + lVar30 + uVar33) = fVar55 * fVar47 + fVar53 * fVar54; + if ((int)uVar19 + 1 < (int)param_9) { + lVar37 = uVar33 + 4 + lVar30; + lVar31 = lVar20 + uVar33 + 4; + fVar47 = *(float *)((long)param_6 + lVar37); + fVar54 = *(float *)((long)param_6 + lVar31); + /* try { // try from 002b01c0 to 003b01c3 has its CatchHandler @ 002b0164 */ + *(float *)((long)param_6 + lVar31) = fVar47 * fVar46 + fVar55 * fVar54; + *(float *)((long)param_6 + lVar37) = fVar55 * fVar47 + fVar53 * fVar54; + if ((int)uVar19 + 2 < (int)param_9) { + lVar30 = uVar33 + 8 + lVar30; + lVar37 = lVar20 + uVar33 + 8; + fVar47 = *(float *)((long)param_6 + lVar30); + fVar54 = *(float *)((long)param_6 + lVar37); + *(float *)((long)param_6 + lVar37) = fVar47 * fVar46 + fVar55 * fVar54; + *(float *)((long)param_6 + lVar30) = fVar55 * fVar47 + fVar53 * fVar54; + } + } + } +LAB_002b01fc: + bVar11 = true; + } +LAB_002af4f4: + pdVar21 = pdVar21 + 1; + pfVar22 = pfVar22 + param_7; + } while (pdVar21 != pdVar15 + lVar39 + 1 + (ulong)(uint)(iVar27 - iVar12)); + } + lVar20 = lVar20 + param_7 * 4; + pfVar23 = pfVar23 + param_4; + lVar39 = lVar39 + 1; + pfVar18 = pfVar18 + param_7; + pdVar25 = pdVar25 + 1; + iVar12 = (int)lVar39; + } while (iVar12 + -1 < iVar27); + } + } while ((bVar11) && (local_4c4 = local_4c4 + 1, local_4c4 != uVar38)); + if (0 < (int)param_9) { + lVar39 = 0; + pfVar23 = param_3; + do { + lVar20 = 0; + dVar48 = 0.0; + dVar61 = 0.0; + if (0 < (int)param_8) { + do { + pfVar18 = pfVar23 + lVar20; + lVar20 = lVar20 + 1; + dVar48 = dVar61 + (double)*pfVar18 * (double)*pfVar18; + dVar61 = dVar48; + } while ((int)lVar20 < (int)param_8); + } + dVar61 = SQRT(dVar48); + if (NAN(dVar61)) { + dVar61 = sqrt(dVar48); + } + pdVar15[lVar39] = dVar61; + lVar39 = lVar39 + 1; + pfVar23 = pfVar23 + param_4; + } while (lVar39 != uVar35 + 1); + } + lVar30 = 0; + lVar39 = 1; + lVar20 = 0; + pfVar23 = param_6; + pfVar18 = param_3; + pdVar25 = pdVar1; + uVar38 = 0; + if (0 < iVar27) { + do { + uVar13 = uVar38 + 1; + if ((int)uVar13 < (int)param_9) { + dVar48 = pdVar25[-1]; + uVar42 = SUB84(dVar48,0); + uVar43 = (undefined4)((ulong)dVar48 >> 0x20); + pdVar21 = pdVar25; + lVar37 = lVar39; + uVar41 = uVar13; + uVar24 = uVar38; + do { + dVar61 = *pdVar21; + uVar40 = uVar41; + if (dVar61 == (double)CONCAT44(uVar43,uVar42) || dVar61 < (double)CONCAT44(uVar43,uVar42)) + { + uVar40 = uVar24; + } + uVar41 = uVar41 + 1; + lVar31 = lVar37; + if (dVar61 == (double)CONCAT44(uVar43,uVar42) || dVar61 < (double)CONCAT44(uVar43,uVar42)) + { + lVar31 = (long)(int)uVar24; + } + lVar37 = lVar37 + 1; + pdVar6 = pdVar21; + if (dVar61 == (double)CONCAT44(uVar43,uVar42) || dVar61 < (double)CONCAT44(uVar43,uVar42)) + { + pdVar6 = pdVar15 + (int)uVar24; + } + pdVar21 = pdVar21 + 1; + if (dVar61 == (double)CONCAT44(uVar43,uVar42) || dVar61 < (double)CONCAT44(uVar43,uVar42)) + { + dVar61 = (double)CONCAT44(uVar43,uVar42); + } + uVar42 = SUB84(dVar61,0); + uVar43 = (undefined4)((ulong)dVar61 >> 0x20); + uVar24 = uVar40; + } while (uVar41 != param_9); + if (uVar38 != uVar40) { + pdVar25[-1] = dVar61; + *pdVar6 = dVar48; + if (param_6 != (float *)0x0) { + if (0 < (int)param_8) { + lVar37 = lVar31 * param_4; + if (((long)pfVar18 - (long)param_3 < lVar37 * 4 + 0x10 && + lVar37 * 4 < (0x10 - (long)param_3) + (long)pfVar18) || (param_8 < 9)) { + lVar36 = 0; + do { + fVar55 = pfVar18[lVar36]; + pfVar18[lVar36] = param_3[lVar37 + lVar36]; + param_3[lVar37 + lVar36] = fVar55; + lVar36 = lVar36 + 1; + } while ((int)lVar36 < (int)param_8); + } + else { + uVar38 = -((uint)((ulong)pfVar18 >> 2) & 3) & 3; + uVar35 = (ulong)uVar38; + if (param_8 < uVar38) { + uVar35 = uVar34; + } + iVar12 = (int)uVar35; + uVar14 = uVar35; + if (iVar12 != 0) { + fVar55 = *pfVar18; + *pfVar18 = param_3[lVar37]; + param_3[lVar37] = fVar55; + if (iVar12 != 1) { + fVar55 = pfVar18[1]; + pfVar18[1] = param_3[lVar37 + 1]; + param_3[lVar37 + 1] = fVar55; + if (iVar12 == 3) { + fVar55 = pfVar18[2]; + pfVar18[2] = param_3[lVar37 + 2]; + param_3[lVar37 + 2] = fVar55; + } + else { + uVar14 = 2; + } + } + } + lVar36 = 0; + uVar38 = ((param_8 - iVar12) - 4 >> 2) + 1; + uVar41 = 0; + iVar28 = uVar38 * 4; + do { + puVar2 = (undefined8 *)((long)param_3 + lVar36 + (lVar37 + uVar35) * 4); + puVar3 = (undefined8 *)((long)param_3 + lVar36 + (uVar35 + lVar30) * 4); + uVar41 = uVar41 + 1; + lVar36 = lVar36 + 0x10; + uVar52 = *puVar2; + uVar50 = puVar3[1]; + uVar49 = *puVar3; + puVar3[1] = puVar2[1]; + *puVar3 = uVar52; + puVar2[1] = uVar50; + *puVar2 = uVar49; + } while (uVar41 < uVar38); + iVar26 = iVar28 + (int)uVar14; + if (iVar28 != param_8 - iVar12) { + iVar12 = iVar26 + 1; + lVar36 = iVar26 + lVar37; + lVar4 = lVar30 + iVar26; + fVar55 = param_3[lVar4]; + param_3[lVar4] = param_3[lVar36]; + param_3[lVar36] = fVar55; + if (iVar12 < (int)param_8) { + iVar26 = iVar26 + 2; + lVar36 = iVar12 + lVar37; + /* try { // try from 002af7a0 to 003af7a3 has its CatchHandler @ 002adc98 */ + lVar4 = lVar30 + iVar12; + fVar55 = param_3[lVar4]; + param_3[lVar4] = param_3[lVar36]; + param_3[lVar36] = fVar55; + if (iVar26 < (int)param_8) { + lVar37 = iVar26 + lVar37; + lVar36 = iVar26 + lVar30; + fVar55 = param_3[lVar36]; + param_3[lVar36] = param_3[lVar37]; + param_3[lVar37] = fVar55; + } + } + } + } + } + lVar31 = lVar31 * param_7; + if (((long)pfVar23 - (long)param_6 < lVar31 * 4 + 0x10 && + lVar31 * 4 < (0x10 - (long)param_6) + (long)pfVar23) || (param_9 < 9)) { + lVar37 = 0; + do { + fVar55 = pfVar23[lVar37]; + pfVar23[lVar37] = param_6[lVar31 + lVar37]; + param_6[lVar31 + lVar37] = fVar55; + lVar37 = lVar37 + 1; + } while ((int)lVar37 < (int)param_9); + } + else { + uVar38 = -((uint)((ulong)pfVar23 >> 2) & 3) & 3; + if (param_9 < uVar38) { + uVar38 = param_9; + } + uVar41 = uVar38; + if (uVar38 != 0) { + fVar55 = *pfVar23; + *pfVar23 = param_6[lVar31]; + param_6[lVar31] = fVar55; + if (uVar38 != 1) { + fVar55 = pfVar23[1]; + pfVar23[1] = param_6[lVar31 + 1]; + param_6[lVar31 + 1] = fVar55; + if (uVar38 == 3) { + fVar55 = pfVar23[2]; + pfVar23[2] = param_6[lVar31 + 2]; + param_6[lVar31 + 2] = fVar55; + } + else { + uVar41 = 2; + } + } + } + lVar37 = 0; + uVar24 = ((param_9 - uVar38) - 4 >> 2) + 1; + uVar40 = 0; + iVar12 = uVar24 * 4; + do { + puVar2 = (undefined8 *)((long)param_6 + lVar37 + (lVar31 + (ulong)uVar38) * 4); + puVar3 = (undefined8 *)((long)param_6 + lVar37 + (lVar20 + (ulong)uVar38) * 4); + uVar40 = uVar40 + 1; + lVar37 = lVar37 + 0x10; + uVar52 = *puVar2; + uVar50 = puVar3[1]; + uVar49 = *puVar3; + puVar3[1] = puVar2[1]; + *puVar3 = uVar52; + puVar2[1] = uVar50; + *puVar2 = uVar49; + } while (uVar40 < uVar24); + iVar28 = iVar12 + uVar41; + if (iVar12 != param_9 - uVar38) { + iVar12 = iVar28 + 1; + lVar37 = iVar28 + lVar31; + lVar36 = lVar20 + iVar28; + fVar55 = param_6[lVar36]; + param_6[lVar36] = param_6[lVar37]; + param_6[lVar37] = fVar55; + if (iVar12 < (int)param_9) { + iVar28 = iVar28 + 2; + lVar37 = iVar12 + lVar31; + lVar36 = lVar20 + iVar12; + fVar55 = param_6[lVar36]; + param_6[lVar36] = param_6[lVar37]; + param_6[lVar37] = fVar55; + if (iVar28 < (int)param_9) { + lVar31 = iVar28 + lVar31; + lVar37 = lVar20 + iVar28; + fVar55 = param_6[lVar37]; + param_6[lVar37] = param_6[lVar31]; + param_6[lVar31] = fVar55; + } + } + } + } + } + } + } + pfVar23 = pfVar23 + param_7; + lVar20 = lVar20 + param_7; + pfVar18 = pfVar18 + param_4; + pdVar25 = pdVar25 + 1; + lVar30 = lVar30 + param_4; + lVar39 = lVar39 + 1; + uVar38 = uVar13; + } while ((int)uVar13 < iVar27); + } + if (0 < (int)param_9) { + uVar38 = -((uint)((ulong)param_5 >> 2) & 3) & 3; + uVar13 = param_9; + if (uVar38 < param_9) { + uVar13 = uVar38; + } + uVar38 = param_9; + if (((int)param_9 < 5) || (uVar38 = uVar13, uVar13 != 0)) { + uVar13 = uVar38; + *param_5 = (float)*pdVar15; + uVar38 = uVar13; + if ((uVar13 != 1) && (param_5[1] = (float)*pdVar1, uVar13 != 2)) { + param_5[2] = (float)pdVar15[2]; + if (uVar13 == 4) { + param_5[3] = (float)pdVar15[3]; + } + else { + /* try { // try from 002b0524 to 003b0527 has its CatchHandler @ 002b0614 */ + uVar38 = 3; + } + } + if (uVar13 == param_9) goto LAB_002afae4; + } + uVar41 = ((param_9 - uVar13) - 4 >> 2) + 1; + iVar12 = uVar41 * 4; + if (2 < iVar27 - uVar13) { + uVar24 = 0; + pauVar16 = (undefined1 (*) [12])(pdVar15 + uVar13); + pfVar23 = param_5 + uVar13; + do { + uVar24 = uVar24 + 1; + auVar10 = *pauVar16; + auVar9._12_4_ = (int)((ulong)*(double *)((long)*pauVar16 + 8) >> 0x20); + auVar9._0_12_ = auVar10; + *(ulong *)(pfVar23 + 2) = + CONCAT44((float)*(double *)pauVar16[2],(float)*(double *)(pauVar16[1] + 4)); + *(ulong *)pfVar23 = CONCAT44((float)auVar9._8_8_,(float)auVar10._0_8_); + pauVar16 = (undefined1 (*) [12])((long)pauVar16[2] + 8); + pfVar23 = pfVar23 + 4; + } while (uVar24 < uVar41); + uVar38 = uVar38 + iVar12; + if (iVar12 == param_9 - uVar13) goto LAB_002afae4; + } + iVar12 = uVar38 + 1; + param_5[(int)uVar38] = (float)pdVar15[(int)uVar38]; + if (iVar12 < (int)param_9) { + iVar27 = uVar38 + 2; + param_5[iVar12] = (float)pdVar15[iVar12]; + if (iVar27 < (int)param_9) { + param_5[iVar27] = (float)pdVar15[iVar27]; + } + } + } +LAB_002afae4: + fVar55 = DAT_002b0684; + if ((param_6 != (float *)0x0) && (0 < param_10)) { + lVar39 = 0; + uVar38 = param_8; + if ((int)param_8 < 1) { + uVar38 = 1; + } + lVar20 = 0; + uVar35 = 0x12345678; + pfVar23 = param_3; + do { + iVar12 = (int)lVar20; + dVar48 = 0.0; + if (iVar12 < (int)param_9) { + dVar48 = pdVar15[lVar20]; + } + if (dVar48 <= param_1) { + pfVar18 = param_3 + lVar39; + iVar27 = 100; + uVar13 = -((uint)((ulong)pfVar18 >> 2) & 3) & 3; +LAB_002afb6c: + if (0 < (int)param_8) { + lVar30 = 0; + do { + uVar35 = (uVar35 >> 0x20) + (uVar35 & 0xffffffff) * 0xf83f630a; + fVar46 = 1.0 / (float)(int)param_8; + if (((uint)uVar35 >> 8 & 1) == 0) { + fVar46 = -(1.0 / (float)(int)param_8); + } + pfVar23[lVar30] = fVar46; + lVar30 = lVar30 + 1; + } while ((int)lVar30 < (int)param_8); + } + iVar28 = 2; + do { + if (0 < iVar12) { + iVar26 = 0; + pfVar22 = param_3; + do { + lVar30 = 0; + fVar46 = 0.0; + if (0 < (int)param_8) { + do { + pfVar17 = pfVar23 + lVar30; + pfVar32 = pfVar22 + lVar30; + lVar30 = lVar30 + 1; + fVar46 = fVar46 + *pfVar17 * *pfVar32; + } while ((int)lVar30 < (int)param_8); + fVar53 = 0.0; + lVar30 = 0; + do { + fVar54 = pfVar23[lVar30] - fVar46 * pfVar22[lVar30]; + pfVar23[lVar30] = fVar54; + lVar30 = lVar30 + 1; + fVar53 = fVar53 + ABS(fVar54); + } while ((int)lVar30 < (int)param_8); + uVar41 = uVar13; + if (fVar53 <= param_2 * fVar55) { + if (uVar38 < uVar13) { + uVar41 = uVar38; + } + /* try { // try from 002b0488 to 003b048b has its CatchHandler @ 002b02f8 */ + fVar53 = 0.0; + fVar46 = 0.0; + if (4 < (int)uVar38) goto LAB_002b0494; +LAB_002afc58: + *pfVar18 = *pfVar18 * fVar53; + uVar41 = uVar38; + fVar46 = fVar53; +joined_r0x002afc6c: + uVar24 = uVar41; + /* catch() { ... } // from try @ 002adef8 with catch @ 002afc80 */ + if ((uVar41 != 1) && + (param_3[lVar39 + 1] = param_3[lVar39 + 1] * fVar46, uVar41 != 2)) { + param_3[lVar39 + 2] = param_3[lVar39 + 2] * fVar46; + if (uVar41 == 4) { + param_3[lVar39 + 3] = param_3[lVar39 + 3] * fVar46; + } + else { + uVar24 = 3; + } + } + if (uVar41 == uVar38) goto LAB_002afd68; + } + else { + if (uVar38 < uVar13) { + uVar41 = uVar38; + } + fVar53 = 1.0 / fVar53; + fVar46 = fVar53; + if ((int)uVar38 < 5) goto LAB_002afc58; +LAB_002b0494: + uVar24 = 0; + if (uVar41 != 0) { + *pfVar18 = *pfVar18 * fVar46; + goto joined_r0x002afc6c; + } + } + /* try { // try from 002afcb0 to 003afcb3 has its CatchHandler @ 002adc98 */ + /* catch() { ... } // from try @ 002add50 with catch @ 002afcb4 + catch() { ... } // from try @ 002ade9c with catch @ 002afcb4 + catch() { ... } // from try @ 002adf00 with catch @ 002afcb4 */ + iVar5 = param_8 - 1; + if ((int)param_8 < 1) { + iVar5 = 0; + } + /* catch() { ... } // from try @ 002afd0c with catch @ 002afcbc + catch() { ... } // from try @ 002afde0 with catch @ 002afcbc + catch() { ... } // from try @ 002afe28 with catch @ 002afcbc */ + uVar40 = ((uVar38 - uVar41) - 4 >> 2) + 1; + iVar7 = uVar40 * 4; + if (2 < iVar5 - uVar41) { + uVar29 = 0; + pfVar17 = param_3 + lVar39 + (ulong)uVar41; + pfVar32 = param_3 + lVar39 + (ulong)uVar41; + do { + uVar49 = *(undefined8 *)pfVar32; + uVar29 = uVar29 + 1; + *(ulong *)(pfVar17 + 2) = + CONCAT44(fVar46 * (float)((ulong)*(undefined8 *)(pfVar32 + 2) >> 0x20), + fVar46 * (float)*(undefined8 *)(pfVar32 + 2)); + *(ulong *)pfVar17 = + CONCAT44(fVar46 * (float)((ulong)uVar49 >> 0x20),fVar46 * (float)uVar49); + pfVar17 = pfVar17 + 4; + pfVar32 = pfVar32 + 4; + } while (uVar29 < uVar40); + /* try { // try from 002afd0c to 003afd0f has its CatchHandler @ 002afcbc */ + uVar24 = uVar24 + iVar7; + if (iVar7 == uVar38 - uVar41) goto LAB_002afd68; + } + param_3[lVar39 + (int)uVar24] = param_3[lVar39 + (int)uVar24] * fVar46; + if ((int)(uVar24 + 1) < (int)param_8) { + lVar30 = lVar39 + (int)(uVar24 + 1); + param_3[lVar30] = param_3[lVar30] * fVar46; + if ((int)(uVar24 + 2) < (int)param_8) { + lVar30 = lVar39 + (int)(uVar24 + 2); + param_3[lVar30] = param_3[lVar30] * fVar46; + } + } + } +LAB_002afd68: + iVar26 = iVar26 + 1; + /* try { // try from 002afd6c to 003afd6f has its CatchHandler @ 002afe04 */ + pfVar22 = pfVar22 + param_4; + } while (iVar26 != iVar12); + } + if (iVar28 == 1) goto code_r0x002afd80; + /* try { // try from 002b04c0 to 003b04c3 has its CatchHandler @ 002b0614 */ + iVar28 = 1; + } while( true ); + } +LAB_002afdc4: + if (dVar48 <= param_1) { + fVar46 = 0.0; + } + else { + fVar46 = (float)(1.0 / dVar48); + } + if (0 < (int)param_8) { + /* try { // try from 002afde0 to 003afdff has its CatchHandler @ 002afcbc */ + uVar13 = -((uint)((ulong)pfVar23 >> 2) & 3) & 3; + uVar14 = (ulong)uVar13; + if (param_8 < uVar13) { + uVar14 = uVar34; + } + if (param_8 < 5) { + uVar14 = uVar34; + } + uVar13 = (uint)uVar14; + uVar19 = uVar14; + if (uVar13 != 0) { + /* catch() { ... } // from try @ 002afd6c with catch @ 002afe04 */ + *pfVar23 = *pfVar23 * fVar46; + if ((uVar13 != 1) && (pfVar23[1] = pfVar23[1] * fVar46, uVar13 != 2)) { + /* try { // try from 002afe28 to 003afe2b has its CatchHandler @ 002afcbc */ + /* catch() { ... } // from try @ 002afe74 with catch @ 002afe2c + catch() { ... } // from try @ 002b0018 with catch @ 002afe2c + catch() { ... } // from try @ 002b0150 with catch @ 002afe2c */ + pfVar23[2] = pfVar23[2] * fVar46; + if (uVar13 == 4) { + pfVar23[3] = pfVar23[3] * fVar46; + } + else { + uVar19 = 3; + } + } + if (param_8 == uVar13) goto LAB_002afefc; + } + iVar12 = (int)uVar19; + uVar41 = ((param_8 - uVar13) - 4 >> 2) + 1; + iVar27 = uVar41 * 4; + if (2 < (param_8 - 1) - uVar13) { + /* try { // try from 002afe74 to 003afe93 has its CatchHandler @ 002afe2c */ + uVar24 = 0; + pfVar18 = param_3 + lVar39 + uVar14; + pfVar22 = param_3 + lVar39 + uVar14; + do { + uVar49 = *(undefined8 *)pfVar22; + uVar24 = uVar24 + 1; + *(ulong *)(pfVar18 + 2) = + CONCAT44(fVar46 * (float)((ulong)*(undefined8 *)(pfVar22 + 2) >> 0x20), + fVar46 * (float)*(undefined8 *)(pfVar22 + 2)); + *(ulong *)pfVar18 = + CONCAT44(fVar46 * (float)((ulong)uVar49 >> 0x20),fVar46 * (float)uVar49); + pfVar18 = pfVar18 + 4; + pfVar22 = pfVar22 + 4; + } while (uVar24 < uVar41); + iVar12 = iVar12 + iVar27; + if (param_8 - uVar13 == iVar27) goto LAB_002afefc; + } + param_3[lVar39 + iVar12] = param_3[lVar39 + iVar12] * fVar46; + if (iVar12 + 1 < (int)param_8) { + lVar30 = lVar39 + (iVar12 + 1); + /* try { // try from 002afed4 to 003afed7 has its CatchHandler @ 002b012c */ + param_3[lVar30] = param_3[lVar30] * fVar46; + if (iVar12 + 2 < (int)param_8) { + lVar30 = lVar39 + (iVar12 + 2); + param_3[lVar30] = param_3[lVar30] * fVar46; + } + } + } +LAB_002afefc: + lVar20 = lVar20 + 1; + /* try { // try from 002aff04 to 003aff07 has its CatchHandler @ 002b0154 */ + pfVar23 = pfVar23 + param_4; + /* try { // try from 002aff0c to 003affa7 has its CatchHandler @ 002b012c */ + lVar39 = lVar39 + param_4; + } while (lVar20 != (ulong)(param_10 - 1) + 1); + } + if ((pdVar15 != adStack_440) && (pdVar15 != (double *)0x0)) { + operator_delete__(pdVar15); + } + return; +code_r0x002afd80: + lVar30 = 0; + dVar61 = 0.0; + dVar48 = 0.0; + if (0 < (int)param_8) { + do { + pfVar22 = pfVar23 + lVar30; + lVar30 = lVar30 + 1; + dVar61 = dVar48 + (double)*pfVar22 * (double)*pfVar22; + dVar48 = dVar61; + } while ((int)lVar30 < (int)param_8); + } + dVar48 = SQRT(dVar61); + if (NAN(dVar48)) { + dVar48 = sqrt(dVar61); + /* try { // try from 002b051c to 003b051f has its CatchHandler @ 002b063c */ + } + iVar27 = iVar27 + -1; + if ((iVar27 == 0) || (param_1 < dVar48)) goto LAB_002afdc4; + goto LAB_002afb6c; +} + + +================================================================== + +### FUNC 002b0688 (4308 bytes) name=FUN_002b0688 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_002b0688(double param_1,double param_2,double *param_3,ulong param_4,undefined8 *param_5, + double *param_6,ulong param_7,uint param_8,uint param_9,int param_10) + +{ + uint uVar1; + double *pdVar2; + double *pdVar3; + int iVar4; + bool bVar5; + uint uVar6; + uint uVar7; + ulong uVar8; + undefined8 *puVar9; + double *pdVar10; + undefined8 *puVar11; + double *pdVar12; + double *pdVar13; + long lVar14; + double *pdVar15; + long lVar16; + uint uVar17; + int iVar18; + double *pdVar19; + int iVar20; + long lVar21; + undefined8 *puVar22; + int iVar23; + long lVar24; + uint uVar25; + double *pdVar26; + int iVar27; + int iVar28; + ulong uVar29; + double *pdVar30; + long lVar31; + long lVar32; + uint uVar33; + long lVar34; + undefined8 uVar35; + undefined8 uVar36; + double dVar37; + undefined8 uVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + double dVar43; + double dVar44; + uint local_4dc; + undefined8 auStack_440 [136]; + + puVar9 = auStack_440; + uVar29 = (ulong)(int)param_9; + if (0x88 < uVar29) { + uVar8 = uVar29 << 3; + if (0xfe0000000000000 < uVar29) { + uVar8 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar8); + } + uVar7 = param_8; + if ((int)param_8 < 0x1e) { + uVar7 = 0x1e; + } + param_4 = param_4 >> 3; + param_7 = param_7 >> 3; + if ((int)param_9 < 1) { + lVar31 = param_4 << 3; + } + else { + lVar32 = (ulong)(param_9 - 1) + 1; + lVar31 = param_4 * 8; + lVar34 = 0; + pdVar19 = param_6; + pdVar15 = param_3; + pdVar13 = param_6; + do { + lVar14 = 0; + dVar37 = 0.0; + if (0 < (int)param_8) { + do { + pdVar12 = pdVar15 + lVar14; + lVar14 = lVar14 + 1; + dVar37 = dVar37 + *pdVar12 * *pdVar12; + } while ((int)lVar14 < (int)param_8); + } + puVar9[lVar34] = dVar37; + if (param_6 != (double *)0x0) { + memset(pdVar19,0,lVar32 * 8); + *pdVar13 = 1.0; + } + lVar34 = lVar34 + 1; + pdVar19 = pdVar19 + param_7; + pdVar13 = pdVar13 + param_7 + 1; + pdVar15 = pdVar15 + param_4; + } while (lVar34 != lVar32); + } + uVar1 = param_9 - 1; + local_4dc = 0; + lVar32 = param_7 * 8; + pdVar19 = (double *)(puVar9 + 1); + do { + lVar34 = 1; + iVar20 = 1; + lVar14 = 0; + bVar5 = false; + pdVar13 = pdVar19; + pdVar15 = param_3; + pdVar12 = param_6; + if (0 < (int)uVar1) { + do { + if ((int)lVar34 < (int)param_9) { + uVar25 = (uint)((ulong)pdVar12 >> 3) & 1; + uVar17 = param_9; + if (uVar25 < param_9) { + uVar17 = uVar25; + } + iVar28 = param_9 - uVar17; + uVar25 = (iVar28 - 2U >> 1) + 1; + lVar21 = lVar14 + lVar32; + iVar18 = uVar25 * 2; + pdVar10 = (double *)((long)param_6 + lVar21); + pdVar26 = pdVar13; + pdVar30 = pdVar15; + do { + pdVar30 = (double *)((long)pdVar30 + lVar31); + dVar37 = pdVar13[-1]; + dVar42 = *pdVar26; + if ((int)param_8 < 1) { + dVar43 = 0.0; + dVar40 = 0.0; + } + else { + dVar40 = 0.0; + lVar16 = 0; + do { + pdVar2 = pdVar15 + lVar16; + pdVar3 = pdVar30 + lVar16; + lVar16 = lVar16 + 1; + dVar40 = dVar40 + *pdVar3 * *pdVar2; + } while ((int)lVar16 < (int)param_8); + dVar43 = ABS(dVar40); + } + dVar44 = SQRT(dVar37 * dVar42); + if (NAN(dVar44)) { + dVar44 = sqrt(dVar37 * dVar42); + } + if (dVar44 * param_2 < dVar43) { + dVar40 = dVar40 + dVar40; + dVar37 = dVar37 - dVar42; + dVar43 = ABS(dVar40); + dVar42 = ABS(dVar37); + if (dVar42 < dVar43) { + dVar44 = (dVar42 / dVar43) * (dVar42 / dVar43) + 1.0; + dVar42 = SQRT(dVar44); + if (NAN(dVar42)) { + /* catch() { ... } // from try @ 002b119c with catch @ 002b142c */ + /* try { // try from 002b143c to 003b145b has its CatchHandler @ 002b10d8 */ + /* catch() { ... } // from try @ 002b134c with catch @ 002b1440 */ + dVar42 = sqrt(dVar44); + /* catch() { ... } // from try @ 002b14a4 with catch @ 002b145c + catch() { ... } // from try @ 002b16e8 with catch @ 002b145c + catch() { ... } // from try @ 002b1910 with catch @ 002b145c + catch() { ... } // from try @ 002b1954 with catch @ 002b145c */ + dVar42 = dVar43 * dVar42; + } + else { + dVar42 = dVar43 * dVar42; + } +LAB_002b1130: + dVar43 = dVar42; + if (0.0 <= dVar37) goto LAB_002b1138; +LAB_002b1350: + dVar43 = ((dVar42 - dVar37) * 0.5) / dVar42; + dVar37 = SQRT(dVar43); + if (NAN(dVar37)) { + dVar37 = sqrt(dVar43); + /* try { // try from 002b16e8 to 003b16ff has its CatchHandler @ 002b145c */ + } + dVar42 = dVar40 / (dVar37 * dVar42 + dVar37 * dVar42); + if ((int)param_8 < 1) goto LAB_002b1384; +LAB_002b1168: + dVar40 = 0.0; + lVar16 = 0; + dVar43 = dVar40; + do { + dVar39 = pdVar30[lVar16] * dVar37 + dVar42 * pdVar15[lVar16]; + dVar44 = dVar42 * pdVar30[lVar16] + -dVar37 * pdVar15[lVar16]; + pdVar15[lVar16] = dVar39; + pdVar30[lVar16] = dVar44; + lVar16 = lVar16 + 1; + /* try { // try from 002b119c to 003b119f has its CatchHandler @ 002b142c */ + dVar43 = dVar43 + dVar39 * dVar39; + dVar40 = dVar40 + dVar44 * dVar44; + /* try { // try from 002b11a4 to 003b11bf has its CatchHandler @ 002b10d8 */ + } while ((int)lVar16 < (int)param_8); + } + else { + if (0.0 < dVar42) { + dVar44 = (dVar43 / dVar42) * (dVar43 / dVar42) + 1.0; + dVar43 = SQRT(dVar44); + if (NAN(dVar43)) { + /* try { // try from 002b15a8 to 003b15bf has its CatchHandler @ 002b1988 */ + dVar43 = sqrt(dVar44); + /* try { // try from 002b15d0 to 003b15d3 has its CatchHandler @ 002b19a8 */ + } + dVar42 = dVar42 * dVar43; + goto LAB_002b1130; + } + dVar43 = 0.0; + dVar42 = 0.0; + /* try { // try from 002b134c to 003b142b has its CatchHandler @ 002b1440 */ + if (dVar37 < 0.0) goto LAB_002b1350; +LAB_002b1138: + dVar37 = (dVar37 + dVar43) / (dVar43 + dVar43); + dVar42 = SQRT(dVar37); + if (NAN(dVar42)) { + dVar42 = sqrt(dVar37); + /* try { // try from 002b1670 to 003b16af has its CatchHandler @ 002b1988 */ + } + /* try { // try from 002b1150 to 003b1153 has its CatchHandler @ 002b10d8 */ + dVar37 = dVar40 / (dVar42 * dVar43 + dVar42 * dVar43); + if (0 < (int)param_8) goto LAB_002b1168; +LAB_002b1384: + dVar40 = 0.0; + dVar43 = dVar40; + } + pdVar13[-1] = dVar43; + *pdVar26 = dVar40; + if (param_6 != (double *)0x0) { + dVar43 = -dVar37; + if ((lVar14 < lVar21 + 0x10 && lVar21 < lVar14 + 0x10) || (param_9 < 6)) { + lVar16 = 0; + do { + dVar44 = pdVar10[lVar16]; + dVar40 = pdVar12[lVar16]; + pdVar12[lVar16] = dVar44 * dVar37 + dVar42 * dVar40; + pdVar10[lVar16] = dVar42 * dVar44 + dVar43 * dVar40; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)param_9); + bVar5 = true; + goto LAB_002b0940; + } + if (uVar17 != 0) { + dVar44 = *pdVar10; + dVar40 = *pdVar12; + *pdVar12 = dVar44 * dVar37 + dVar42 * dVar40; + *pdVar10 = dVar42 * dVar44 + dVar43 * dVar40; + } + uVar33 = (uint)(uVar17 != 0); + if (iVar28 != 1) { + lVar16 = 0; + uVar33 = 0; + do { + pdVar2 = (double *)((long)param_6 + lVar16 + lVar21 + (ulong)uVar17 * 8); + pdVar3 = (double *)((long)param_6 + lVar16 + (ulong)uVar17 * 8 + lVar14); + uVar33 = uVar33 + 1; + lVar16 = lVar16 + 0x10; + dVar44 = pdVar2[1]; + dVar40 = *pdVar2; + dVar41 = pdVar3[1]; + dVar39 = *pdVar3; + pdVar3[1] = dVar44 * dVar37 + dVar41 * dVar42; + *pdVar3 = dVar40 * dVar37 + dVar39 * dVar42; + pdVar2[1] = dVar42 * dVar44 + dVar41 * dVar43; + *pdVar2 = dVar42 * dVar40 + dVar39 * dVar43; + } while (uVar33 < uVar25); + uVar33 = iVar18 + (uint)(uVar17 != 0); + if (iVar28 == iVar18) goto LAB_002b12a0; + } + uVar29 = -(ulong)(uVar33 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar33 << 3; + lVar16 = uVar29 + lVar21; + lVar24 = uVar29 + lVar14; + dVar44 = *(double *)((long)param_6 + lVar16); + dVar40 = *(double *)((long)param_6 + lVar24); + *(double *)((long)param_6 + lVar24) = dVar44 * dVar37 + dVar42 * dVar40; + *(double *)((long)param_6 + lVar16) = dVar42 * dVar44 + dVar43 * dVar40; + } +LAB_002b12a0: + bVar5 = true; + } +LAB_002b0940: + pdVar26 = pdVar26 + 1; + pdVar10 = pdVar10 + param_7; + lVar21 = lVar21 + lVar32; + } while (pdVar26 != (double *)(puVar9 + lVar34 + 1 + (ulong)(uVar1 - iVar20))); + } + lVar14 = lVar14 + lVar32; + pdVar15 = (double *)((long)pdVar15 + lVar31); + lVar34 = lVar34 + 1; + pdVar12 = pdVar12 + param_7; + pdVar13 = pdVar13 + 1; + iVar20 = (int)lVar34; + } while (iVar20 + -1 < (int)uVar1); + } + } while ((bVar5) && (local_4dc = local_4dc + 1, local_4dc != uVar7)); + if (0 < (int)param_9) { + lVar32 = 0; + pdVar13 = param_3; + do { + lVar34 = 0; + dVar37 = 0.0; + if (0 < (int)param_8) { + do { + pdVar15 = pdVar13 + lVar34; + lVar34 = lVar34 + 1; + dVar37 = dVar37 + *pdVar15 * *pdVar15; + } while ((int)lVar34 < (int)param_8); + } + dVar42 = SQRT(dVar37); + if (NAN(dVar42)) { + dVar42 = sqrt(dVar37); + } + puVar9[lVar32] = dVar42; + lVar32 = lVar32 + 1; + pdVar13 = (double *)((long)pdVar13 + lVar31); + } while (lVar32 != (ulong)uVar1 + 1); + } + lVar14 = 0; + lVar32 = 1; + lVar34 = 0; + pdVar15 = param_3; + pdVar13 = param_6; + uVar7 = 0; + if (0 < (int)uVar1) { + do { + uVar17 = uVar7 + 1; + if ((int)uVar17 < (int)param_9) { + dVar42 = pdVar19[-1]; + pdVar12 = pdVar19; + lVar21 = lVar32; + dVar37 = dVar42; + uVar33 = uVar17; + uVar25 = uVar7; + do { + dVar43 = *pdVar12; + pdVar26 = pdVar12; + lVar16 = lVar21; + uVar6 = uVar33; + if (dVar43 <= dVar37) { + pdVar26 = (double *)(puVar9 + (int)uVar25); + lVar16 = (long)(int)uVar25; + uVar6 = uVar25; + } + uVar25 = uVar6; + uVar33 = uVar33 + 1; + lVar21 = lVar21 + 1; + pdVar12 = pdVar12 + 1; + if (dVar43 <= dVar37) { + dVar43 = dVar37; + } + dVar37 = dVar43; + } while (uVar33 != param_9); + if (uVar7 != uVar25) { + pdVar19[-1] = dVar37; + *pdVar26 = dVar42; + if (param_6 != (double *)0x0) { + if (0 < (int)param_8) { + lVar21 = lVar16 * param_4; + if (((long)pdVar15 - (long)param_3 < lVar21 * 8 + 0x10 && + lVar21 * 8 < (0x10 - (long)param_3) + (long)pdVar15) || (param_8 < 9)) { + lVar24 = 0; + do { + dVar37 = pdVar15[lVar24]; + pdVar15[lVar24] = param_3[lVar21 + lVar24]; + param_3[lVar21 + lVar24] = dVar37; + lVar24 = lVar24 + 1; + } while ((int)lVar24 < (int)param_8); + } + else { + uVar7 = (uint)((ulong)pdVar15 >> 3) & 1; + if (param_8 < uVar7) { + uVar7 = param_8; + } + if (uVar7 != 0) { + dVar37 = *pdVar15; + *pdVar15 = param_3[lVar21]; + param_3[lVar21] = dVar37; + } + lVar24 = 0; + uVar25 = ((param_8 - uVar7) - 2 >> 1) + 1; + uVar33 = 0; + iVar20 = uVar25 * 2; + do { + puVar11 = (undefined8 *)((long)param_3 + lVar24 + (lVar21 + (ulong)uVar7) * 8); + puVar22 = (undefined8 *)((long)param_3 + lVar24 + (lVar14 + (ulong)uVar7) * 8); + uVar33 = uVar33 + 1; + lVar24 = lVar24 + 0x10; + uVar38 = *puVar11; + uVar36 = puVar22[1]; + uVar35 = *puVar22; + puVar22[1] = puVar11[1]; + *puVar22 = uVar38; + puVar11[1] = uVar36; + *puVar11 = uVar35; + } while (uVar33 < uVar25); + if (iVar20 != param_8 - uVar7) { + lVar24 = (long)(int)(iVar20 + (uint)(uVar7 != 0)); + lVar21 = lVar24 + lVar21; + lVar24 = lVar14 + lVar24; + dVar37 = param_3[lVar24]; + param_3[lVar24] = param_3[lVar21]; + param_3[lVar21] = dVar37; + } + } + } + lVar16 = lVar16 * param_7; + if ((lVar34 * 8 < lVar16 * 8 + 0x10 && + lVar16 * 8 < (0x10 - (long)param_6) + (long)pdVar13) || (param_9 < 9)) { + /* try { // try from 002b14d0 to 003b151b has its CatchHandler @ 002b192c */ + lVar21 = 0; + do { + dVar37 = pdVar13[lVar21]; + pdVar13[lVar21] = param_6[lVar16 + lVar21]; + param_6[lVar16 + lVar21] = dVar37; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)param_9); + } + else { + uVar7 = (uint)((ulong)pdVar13 >> 3) & 1; + if (param_9 < uVar7) { + uVar7 = param_9; + } + if (uVar7 != 0) { + dVar37 = *pdVar13; + *pdVar13 = param_6[lVar16]; + param_6[lVar16] = dVar37; + } + lVar21 = 0; + uVar25 = ((param_9 - uVar7) - 2 >> 1) + 1; + uVar33 = 0; + iVar20 = uVar25 * 2; + do { + puVar11 = (undefined8 *)((long)param_6 + lVar21 + (lVar16 + (ulong)uVar7) * 8); + puVar22 = (undefined8 *)((long)param_6 + lVar21 + ((ulong)uVar7 + lVar34) * 8); + uVar33 = uVar33 + 1; + lVar21 = lVar21 + 0x10; + uVar38 = *puVar11; + uVar36 = puVar22[1]; + uVar35 = *puVar22; + puVar22[1] = puVar11[1]; + *puVar22 = uVar38; + puVar11[1] = uVar36; + *puVar11 = uVar35; + } while (uVar33 < uVar25); + if (iVar20 != param_9 - uVar7) { + lVar21 = (long)(int)(iVar20 + (uint)(uVar7 != 0)); + lVar16 = lVar21 + lVar16; + lVar21 = lVar21 + lVar34; + dVar37 = param_6[lVar21]; + param_6[lVar21] = param_6[lVar16]; + param_6[lVar16] = dVar37; + } + } + } + } + } + pdVar13 = pdVar13 + param_7; + pdVar15 = (double *)((long)pdVar15 + lVar31); + lVar34 = lVar34 + param_7; + pdVar19 = pdVar19 + 1; + lVar32 = lVar32 + 1; + lVar14 = lVar14 + param_4; + uVar7 = uVar17; + } while ((int)uVar17 < (int)uVar1); + } + if (0 < (int)param_9) { + if ((param_5 < puVar9 + 2 && puVar9 < param_5 + 2) || (param_9 < 0xe)) { + lVar32 = 0; + do { + param_5[lVar32] = puVar9[lVar32]; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < (int)param_9); + } + else { + uVar7 = (uint)((ulong)param_5 >> 3) & 1; + if (param_9 < uVar7) { + uVar7 = param_9; + } + if (uVar7 != 0) { + *param_5 = *puVar9; + } + uVar1 = ((param_9 - uVar7) - 2 >> 1) + 1; + uVar17 = 0; + iVar20 = uVar1 * 2; + puVar11 = puVar9 + uVar7; + puVar22 = param_5 + uVar7; + do { + uVar35 = *puVar11; + uVar17 = uVar17 + 1; + puVar22[1] = puVar11[1]; + *puVar22 = uVar35; + puVar11 = puVar11 + 2; + puVar22 = puVar22 + 2; + } while (uVar17 < uVar1); + uVar1 = iVar20 + (uint)(uVar7 != 0); + if (iVar20 != param_9 - uVar7) { + uVar29 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)param_5 + uVar29) = *(undefined8 *)((long)puVar9 + uVar29); + } + } + } + dVar37 = DAT_002b1760; + if ((param_6 != (double *)0x0) && (0 < param_10)) { + lVar32 = 0; + uVar7 = param_8; + if ((int)param_8 < 1) { + uVar7 = 1; + } + lVar34 = 0; + uVar29 = 0x12345678; + pdVar19 = param_3; + do { + iVar20 = (int)lVar34; + dVar42 = 0.0; + if (iVar20 < (int)param_9) { + dVar42 = (double)puVar9[lVar34]; + } + if (dVar42 <= param_1) { + pdVar13 = param_3 + lVar32; + iVar18 = 100; + uVar1 = (uint)((ulong)pdVar13 >> 3) & 1; +LAB_002b0ddc: + if (0 < (int)param_8) { + lVar14 = 0; + do { + uVar29 = (uVar29 >> 0x20) + (uVar29 & 0xffffffff) * 0xf83f630a; + dVar42 = 1.0 / (double)(int)param_8; + if (((uint)uVar29 >> 8 & 1) == 0) { + dVar42 = -(1.0 / (double)(int)param_8); + } + pdVar19[lVar14] = dVar42; + lVar14 = lVar14 + 1; + } while ((int)lVar14 < (int)param_8); + } + iVar28 = 2; + do { + if (0 < iVar20) { + iVar27 = 0; + pdVar15 = param_3; + do { + lVar14 = 0; + dVar42 = 0.0; + if (0 < (int)param_8) { + do { + pdVar12 = pdVar19 + lVar14; + pdVar26 = pdVar15 + lVar14; + lVar14 = lVar14 + 1; + dVar42 = dVar42 + *pdVar26 * *pdVar12; + } while ((int)lVar14 < (int)param_8); + dVar43 = 0.0; + lVar14 = 0; + do { + dVar40 = pdVar19[lVar14] - dVar42 * pdVar15[lVar14]; + pdVar19[lVar14] = dVar40; + lVar14 = lVar14 + 1; + dVar43 = dVar43 + ABS(dVar40); + } while ((int)lVar14 < (int)param_8); + uVar17 = uVar1; + if (dVar43 <= param_2 * dVar37) { + if (uVar7 < uVar1) { + uVar17 = uVar7; + } + dVar42 = 0.0; + dVar43 = 0.0; + if (3 < (int)uVar7) goto LAB_002b1528; +LAB_002b0eac: + *pdVar13 = *pdVar13 * dVar42; + dVar43 = dVar42; + uVar17 = uVar7; +joined_r0x002b1540: + iVar23 = 1; + if (uVar17 != 1) { + param_3[lVar32 + 1] = param_3[lVar32 + 1] * dVar43; + if (uVar17 == 3) { + param_3[lVar32 + 2] = param_3[lVar32 + 2] * dVar43; + iVar23 = 3; + } + else { + iVar23 = 2; + } + } + if (uVar17 == uVar7) goto LAB_002b0f64; + } + else { + if (uVar7 < uVar1) { + uVar17 = uVar7; + } + dVar43 = 1.0 / dVar43; + dVar42 = dVar43; + if ((int)uVar7 < 4) goto LAB_002b0eac; +LAB_002b1528: + iVar23 = 0; + if (uVar17 != 0) { + *pdVar13 = *pdVar13 * dVar43; + goto joined_r0x002b1540; + } + } + uVar25 = param_8 - 1; + if ((int)param_8 < 1) { + uVar25 = 0; + } + uVar33 = ((uVar7 - uVar17) - 2 >> 1) + 1; + iVar4 = uVar33 * 2; + if (uVar25 != uVar17) { + uVar25 = 0; + pdVar12 = param_3 + lVar32 + (ulong)uVar17; + pdVar26 = param_3 + lVar32 + (ulong)uVar17; + do { + dVar42 = *pdVar26; + uVar25 = uVar25 + 1; + pdVar12[1] = dVar43 * pdVar26[1]; + *pdVar12 = dVar43 * dVar42; + pdVar12 = pdVar12 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar25 < uVar33); + iVar23 = iVar23 + iVar4; + if (iVar4 == uVar7 - uVar17) goto LAB_002b0f64; + } + param_3[lVar32 + iVar23] = param_3[lVar32 + iVar23] * dVar43; + } +LAB_002b0f64: + iVar27 = iVar27 + 1; + pdVar15 = (double *)((long)pdVar15 + lVar31); + } while (iVar27 != iVar20); + } + if (iVar28 == 1) goto code_r0x002b0f7c; + iVar28 = 1; + } while( true ); + } +LAB_002b0fbc: + if (dVar42 <= param_1) { + /* try { // try from 002b155c to 003b155f has its CatchHandler @ 002b1960 */ + dVar42 = 0.0; + } + else { + dVar42 = 1.0 / dVar42; + } + if (0 < (int)param_8) { + uVar1 = (uint)((ulong)pdVar19 >> 3) & 1; + if (param_8 < uVar1) { + uVar1 = param_8; + } + if (param_8 < 4) { + uVar1 = param_8; + } + uVar17 = uVar1; + if (uVar1 != 0) { + *pdVar19 = *pdVar19 * dVar42; + if (uVar1 != 1) { + pdVar19[1] = pdVar19[1] * dVar42; + if (uVar1 == 3) { + pdVar19[2] = pdVar19[2] * dVar42; + } + else { + uVar17 = 2; + } + } + if (param_8 == uVar1) goto LAB_002b1094; + } + iVar18 = param_8 - uVar1; + uVar25 = (iVar18 - 2U >> 1) + 1; + iVar20 = uVar25 * 2; + if (iVar18 != 1) { + uVar33 = 0; + pdVar13 = param_3 + (ulong)uVar1 + lVar32; + pdVar15 = param_3 + (ulong)uVar1 + lVar32; + do { + dVar43 = *pdVar15; + uVar33 = uVar33 + 1; + pdVar13[1] = dVar42 * pdVar15[1]; + *pdVar13 = dVar42 * dVar43; + pdVar13 = pdVar13 + 2; + pdVar15 = pdVar15 + 2; + } while (uVar33 < uVar25); + uVar17 = uVar17 + iVar20; + if (iVar20 == iVar18) goto LAB_002b1094; + } + param_3[lVar32 + (int)uVar17] = param_3[lVar32 + (int)uVar17] * dVar42; + } +LAB_002b1094: + lVar34 = lVar34 + 1; + pdVar19 = (double *)((long)pdVar19 + lVar31); + lVar32 = lVar32 + param_4; + } while (lVar34 != (ulong)(param_10 - 1) + 1); + } + if ((puVar9 != auStack_440) && (puVar9 != (undefined8 *)0x0)) { + operator_delete__(puVar9); + } + /* catch() { ... } // from try @ 002b1150 with catch @ 002b10d8 + catch() { ... } // from try @ 002b11a4 with catch @ 002b10d8 + catch() { ... } // from try @ 002b143c with catch @ 002b10d8 */ + return; +code_r0x002b0f7c: + lVar14 = 0; + dVar43 = 0.0; + if (0 < (int)param_8) { + do { + pdVar15 = pdVar19 + lVar14; + lVar14 = lVar14 + 1; + dVar43 = dVar43 + *pdVar15 * *pdVar15; + } while ((int)lVar14 < (int)param_8); + } + dVar42 = SQRT(dVar43); + if (NAN(dVar42)) { + dVar42 = sqrt(dVar43); + } + iVar18 = iVar18 + -1; + if ((iVar18 == 0) || (param_1 < dVar42)) goto LAB_002b0fbc; + goto LAB_002b0ddc; +} + + +================================================================== + +### FUNC 002b1770 (9004 bytes) name=solve + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::solve(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int) */ + +char cv::solve(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4) + +{ + char cVar1; + ulong uVar2; + float fVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + int iVar12; + bool bVar13; + char cVar14; + int iVar15; + uint uVar16; + int iVar17; + int iVar18; + char *pcVar19; + void *__dest; + long lVar20; + ulong uVar21; + ulong uVar22; + double **ppdVar23; + ulong uVar24; + _InputArray *p_Var25; + ulong uVar26; + ulong uVar27; + ulong uVar28; + Mat *pMVar29; + undefined8 *puVar30; + ulong *puVar31; + long lVar32; + undefined4 *puVar33; + int *piVar34; + uint uVar35; + double *pdVar36; + uint uVar37; + uint uVar38; + ulong uVar39; + float fVar40; + float fVar41; + double dVar42; + float fVar43; + double dVar44; + float fVar45; + float fVar46; + float fVar47; + double dVar48; + double dVar49; + double dVar50; + float fVar51; + float fVar52; + double dVar53; + float fVar54; + double dVar55; + double dVar56; + float fVar57; + double dVar58; + int iVar59; + uint uVar60; + float fVar61; + double dVar62; + float fVar63; + float fVar64; + double dVar65; + double dVar66; + double dVar67; + double dVar68; + double dVar69; + float fVar70; + long local_7b0; + undefined8 local_788; + undefined8 local_780; + undefined8 local_778; + undefined8 local_770; + undefined8 local_768; + Mat *local_760; + uint local_758; + uint local_754; + undefined8 local_750; + Mat *local_748; + uint local_740; + uint local_73c; + undefined8 local_738; + Mat *local_730; + uint local_728; + uint local_724; + uint local_720; + int local_71c; + undefined4 local_718; + int local_714; + double *local_710; + double *pdStack_708; + double *local_700; + double *pdStack_6f8; + undefined8 local_6f0; + long lStack_6e8; + undefined4 *local_6e0; + ulong *local_6d8; + ulong local_6d0; + ulong local_6c8; + uint local_6c0; + int local_6bc; + int local_6b8; + int local_6b4; + ulong local_6b0; + ulong uStack_6a8; + long local_6a0; + long lStack_698; + undefined8 local_690; + long lStack_688; + int *local_680; + ulong *local_678; + ulong local_670; + undefined8 local_668; + uint local_660; + int local_65c; + undefined8 local_658; + ulong local_650; + ulong uStack_648; + long local_640; + long lStack_638; + undefined8 local_630; + long lStack_628; + undefined8 *local_620; + ulong *local_618; + ulong local_610; + ulong local_608; + undefined8 local_600; + undefined8 uStack_5f8; + double *local_5f0; + double *pdStack_5e8; + double *local_5e0; + double *pdStack_5d8; + undefined8 local_5d0; + long lStack_5c8; + undefined8 *local_5c0; + ulong *local_5b8; + ulong local_5b0; + ulong uStack_5a8; + uint local_5a0; + int local_59c; + int local_598; + int local_594; + double *local_590; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + long local_568; + int *local_560; + long *local_558; + long local_550; + long local_548; + uint local_540; + int local_53c; + undefined4 local_538; + int local_534; + double *local_530; + double *local_528; + double *local_520; + double *local_518; + undefined8 local_510; + long local_508; + undefined4 *local_500; + ulong *local_4f8; + ulong local_4f0; + ulong local_4e8; + undefined4 local_4e0; + int local_4dc; + undefined4 local_4d8; + undefined4 local_4d4; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + long local_4a8; + undefined4 *local_4a0; + ulong *local_498; + ulong local_490; + ulong local_488; + undefined8 local_480; + undefined8 uStack_478; + long local_470; + long lStack_468; + long local_460; + long local_458; + undefined8 local_450; + long local_448; + undefined8 *local_440; + ulong *local_438; + ulong local_430; + ulong uStack_428; + undefined8 local_418; + ulong local_410; + double *local_408; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + long local_3e0; + ulong *local_3d8; + long *local_3d0; + long local_3c8; + long local_3c0; + + iVar15 = _InputArray::kind(param_1); + if (iVar15 == 0x10000) { + pMVar29 = *(Mat **)(param_1 + 8); + local_560 = &local_598; + local_558 = &local_550; + local_5a0 = *(uint *)pMVar29; + local_59c = *(int *)(pMVar29 + 4); + local_598 = *(int *)(pMVar29 + 8); + local_594 = *(int *)(pMVar29 + 0xc); + local_590 = *(double **)(pMVar29 + 0x10); + local_588 = *(undefined8 *)(pMVar29 + 0x18); + local_580 = *(undefined8 *)(pMVar29 + 0x20); + local_578 = *(undefined8 *)(pMVar29 + 0x28); + local_570 = *(undefined8 *)(pMVar29 + 0x30); + local_568 = *(long *)(pMVar29 + 0x38); + local_548 = 0; + local_550 = 0; + if (local_568 != 0) { + piVar34 = (int *)(local_568 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (*(int *)(pMVar29 + 4) < 3) { + local_550 = **(long **)(pMVar29 + 0x48); + local_548 = (*(long **)(pMVar29 + 0x48))[1]; + } + else { + local_59c = 0; + Mat::copySize((Mat *)&local_5a0,pMVar29); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar15 = _InputArray::kind(param_2); + if (iVar15 == 0x10000) { + pMVar29 = *(Mat **)(param_2 + 8); + local_500 = &local_538; + local_4f8 = &local_4f0; + local_540 = *(uint *)pMVar29; + local_53c = *(int *)(pMVar29 + 4); + local_538 = *(undefined4 *)(pMVar29 + 8); + local_534 = *(int *)(pMVar29 + 0xc); + local_530 = *(double **)(pMVar29 + 0x10); + local_528 = *(double **)(pMVar29 + 0x18); + local_520 = *(double **)(pMVar29 + 0x20); + local_518 = *(double **)(pMVar29 + 0x28); + local_510 = *(undefined8 *)(pMVar29 + 0x30); + local_508 = *(long *)(pMVar29 + 0x38); + local_4e8 = 0; + local_4f0 = 0; + if (local_508 != 0) { + piVar34 = (int *)(local_508 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (2 < *(int *)(pMVar29 + 4)) { + local_53c = 0; + Mat::copySize((Mat *)&local_540,pMVar29); + goto LAB_002b17f8; + } + uVar37 = (uint)param_4 >> 4 & 1; + uVar39 = (ulong)local_5a0; + local_4f0 = **(ulong **)(pMVar29 + 0x48); + local_4e8 = (*(ulong **)(pMVar29 + 0x48))[1]; + uVar60 = local_5a0 & 0xfff; + if (uVar60 == (local_540 & 0xfff)) goto LAB_002b20d4; +LAB_002b1818: + local_788 = 0; + local_780 = 0; + pcVar19 = (char *)String::allocate((String *)&local_788,0x3a); + uVar7 = s_type_____src2_type_______type____00467d98._56_2_; + uVar11 = s_type_____src2_type_______type____00467d98._40_8_; + uVar10 = s_type_____src2_type_______type____00467d98._32_8_; + uVar9 = s_type_____src2_type_______type____00467d98._24_8_; + uVar8 = s_type_____src2_type_______type____00467d98._16_8_; + uVar5 = s_type_____src2_type_______type____00467d98._8_8_; + uVar4 = s_type_____src2_type_______type____00467d98._0_8_; + /* try { // try from 002b1840 to 003b1843 has its CatchHandler @ 002b19d0 */ + /* try { // try from 002b1848 to 003b184b has its CatchHandler @ 002b19a8 */ + *(undefined8 *)(pcVar19 + 0x30) = s_type_____src2_type_______type____00467d98._48_8_; + *(undefined2 *)(pcVar19 + 0x38) = uVar7; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + *(undefined8 *)(pcVar19 + 0x10) = uVar8; + *(undefined8 *)(pcVar19 + 0x18) = uVar9; + *(undefined8 *)(pcVar19 + 0x20) = uVar10; + *(undefined8 *)(pcVar19 + 0x28) = uVar11; + error(-0xd7,(String *)&local_788, + "bool cv::solve(cv::InputArray, cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x421); + String::deallocate((String *)&local_788); + } + else { + /* try { // try from 002b17e4 to 003b17e7 has its CatchHandler @ 002b1988 */ + _InputArray::getMat_((int)param_2); +LAB_002b17f8: + uVar39 = (ulong)local_5a0; + uVar37 = (uint)param_4 >> 4 & 1; + /* try { // try from 002b1800 to 003b1803 has its CatchHandler @ 002b19a8 */ + uVar60 = local_5a0 & 0xfff; + if (uVar60 != (local_540 & 0xfff)) goto LAB_002b1818; +LAB_002b20d4: + if (1 < uVar60 - 5) goto LAB_002b1818; + } + uVar38 = param_4 & 0xffffffef; + iVar15 = local_594; + if (((uVar38 == 3 || uVar38 == 0) && (uVar37 == 0)) && + (iVar15 = local_598, local_598 != local_594)) { + local_418 = (double **)0x0; + local_410 = 0; + __dest = (void *)String::allocate((String *)&local_418,0x57); + memcpy(__dest, + "(method != DECOMP_LU && method != DECOMP_CHOLESKY) || is_normal || src.rows == src.cols" + ,0x57); + error(-0xd7,(String *)&local_418, + "bool cv::solve(cv::InputArray, cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x425); + String::deallocate((String *)&local_418); + iVar15 = local_594; + } + iVar12 = local_534; + iVar59 = local_598; + /* catch() { ... } // from try @ 002b14d0 with catch @ 002b192c */ + if (((uVar37 < (uVar38 == 3 || uVar38 == 0)) && (local_598 < 4)) && + ((local_598 == iVar15 && (local_534 == 1)))) { + /* try { // try from 002b2cfc to 003b2d13 has its CatchHandler @ 002b2f40 */ + _OutputArray::create(param_3,local_598,1,local_5a0 & 0xfff,-1,false,0); + iVar15 = _InputArray::kind((_InputArray *)param_3); + if (iVar15 == 0x10000) { + pMVar29 = *(Mat **)(param_3 + 8); + local_3d8 = &local_410; + local_3d0 = &local_3c8; + uVar37 = *(uint *)pMVar29; + local_408 = *(double **)(pMVar29 + 0x10); + local_418 = *(double ***)pMVar29; + local_410 = *(ulong *)(pMVar29 + 8); + /* try { // try from 002b36b4 to 003b36d7 has its CatchHandler @ 002b3664 */ + local_400 = *(undefined8 *)(pMVar29 + 0x18); + local_3f8 = *(undefined8 *)(pMVar29 + 0x20); + local_3f0 = *(undefined8 *)(pMVar29 + 0x28); + local_3e8 = *(undefined8 *)(pMVar29 + 0x30); + /* try { // try from 002b36dc to 003b36ff has its CatchHandler @ 002b4234 */ + local_3e0 = *(long *)(pMVar29 + 0x38); + local_3c0 = 0; + local_3c8 = 0; + if (local_3e0 != 0) { + piVar34 = (int *)(local_3e0 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (*(int *)(pMVar29 + 4) < 3) { + local_3c8 = **(long **)(pMVar29 + 0x48); + local_3c0 = (*(long **)(pMVar29 + 0x48))[1]; + } + else { + local_418 = (double **)(ulong)uVar37; + Mat::copySize((Mat *)&local_418,pMVar29); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if (local_598 == 2) { + if (uVar60 == 5) { + fVar45 = *(float *)((long)local_590 + 4); + cVar14 = '\0'; + fVar40 = *(float *)((long)local_590 + local_550 + 4); + /* try { // try from 002b3918 to 003b394f has its CatchHandler @ 002b426c */ + fVar3 = *(float *)local_590 * fVar40 - fVar45 * *(float *)((long)local_590 + local_550); + if (fVar3 != 0.0) { + cVar14 = '\x01'; + fVar51 = *(float *)local_530; + fVar3 = 1.0 / fVar3; + fVar41 = *(float *)((long)local_530 + local_4f0); + *(float *)((long)local_408 + local_3c8) = + (*(float *)local_590 * fVar41 - *(float *)((long)local_590 + local_550) * fVar51) * + fVar3; + *(float *)local_408 = (fVar40 * fVar51 - fVar45 * fVar41) * fVar3; + } + } + else { + dVar48 = local_590[1]; + cVar14 = '\0'; + dVar42 = *(double *)((long)local_590 + local_550 + 8); + dVar44 = *local_590 * dVar42 - dVar48 * *(double *)((long)local_590 + local_550); + if (dVar44 != 0.0) { + /* try { // try from 002b376c to 003b376f has its CatchHandler @ 002b422c */ + cVar14 = '\x01'; + dVar50 = *local_530; + dVar44 = 1.0 / dVar44; + dVar49 = *(double *)((long)local_530 + local_4f0); + *(double *)((long)local_408 + local_3c8) = + (*local_590 * dVar49 - *(double *)((long)local_590 + local_550) * dVar50) * dVar44; + *local_408 = (dVar42 * dVar50 - dVar48 * dVar49) * dVar44; + } + } + } + else if (local_598 == 3) { + /* try { // try from 002b37e4 to 003b38e3 has its CatchHandler @ 002b4224 */ + if (uVar60 == 5) { + lVar20 = (local_550 + 4) * 2; + cVar14 = '\0'; + fVar64 = *(float *)((long)local_590 + local_550 * 2); + fVar54 = *(float *)((long)local_590 + local_550 + 8); + fVar46 = *(float *)((long)local_590 + local_550); + fVar52 = *(float *)((long)local_590 + lVar20); + fVar41 = *(float *)((long)local_590 + lVar20 + -4); + fVar57 = *(float *)((long)local_590 + local_550 + 4); + fVar63 = *(float *)((long)local_590 + 4); + fVar51 = fVar52 * fVar46 - fVar54 * fVar64; + fVar61 = *(float *)local_590; + fVar45 = fVar57 * fVar52 - fVar54 * fVar41; + fVar47 = *(float *)(local_590 + 1); + fVar40 = fVar41 * fVar46 - fVar57 * fVar64; + /* try { // try from 002b3b28 to 003b3b3f has its CatchHandler @ 002b4234 */ + fVar3 = (fVar61 * fVar45 - fVar63 * fVar51) + fVar40 * fVar47; + if (fVar3 != 0.0) { + fVar43 = *(float *)((long)local_530 + local_4f0); + cVar14 = '\x01'; + fVar70 = *(float *)((long)local_530 + local_4f0 * 2); + /* try { // try from 002b3b48 to 003b3b5f has its CatchHandler @ 002b3664 */ + fVar3 = 1.0 / fVar3; + fVar46 = fVar46 * fVar70 - fVar64 * fVar43; + fVar64 = *(float *)local_530; + /* try { // try from 002b3ba8 to 003b3bab has its CatchHandler @ 002b4224 */ + *(float *)local_408 = + ((fVar45 * fVar64 - fVar63 * (fVar52 * fVar43 - fVar54 * fVar70)) + + (fVar41 * fVar43 - fVar57 * fVar70) * fVar47) * fVar3; + *(float *)((long)local_408 + local_3c8) = + ((fVar61 * (fVar52 * fVar43 - fVar54 * fVar70) - fVar51 * fVar64) + fVar46 * fVar47) + * fVar3; + *(float *)((long)local_408 + local_3c8 * 2) = + ((fVar61 * (fVar57 * fVar70 - fVar43 * fVar41) - fVar63 * fVar46) + fVar64 * fVar40) + * fVar3; + } + } + else { + lVar20 = (local_550 + 8) * 2; + cVar14 = '\0'; + dVar42 = *(double *)((long)local_590 + local_550); + dVar66 = *(double *)((long)local_590 + local_550 * 2); + dVar44 = *(double *)((long)local_590 + local_550 + 0x10); + dVar49 = *(double *)((long)local_590 + lVar20); + dVar50 = *(double *)((long)local_590 + lVar20 + -8); + dVar69 = *(double *)((long)local_590 + local_550 + 8); + dVar48 = local_590[1]; + dVar65 = dVar69 * dVar49 - dVar44 * dVar50; + dVar58 = *local_590; + dVar68 = local_590[2]; + dVar62 = dVar50 * dVar42 - dVar69 * dVar66; + dVar53 = (dVar58 * dVar65 - dVar48 * (dVar49 * dVar42 - dVar44 * dVar66)) + dVar62 * dVar68; + if (dVar53 != 0.0) { + cVar14 = '\x01'; + dVar53 = 1.0 / dVar53; + dVar67 = *(double *)((long)local_530 + local_4f0); + dVar55 = *local_530; + dVar56 = *(double *)((long)local_530 + local_4f0 * 2); + *local_408 = ((dVar50 * dVar68 - dVar49 * dVar48) * dVar67 + dVar55 * dVar65 + + dVar56 * (dVar44 * dVar48 - dVar69 * dVar68)) * dVar53; + *(double *)((long)local_408 + local_3c8) = + (dVar67 * (dVar58 * dVar49 - dVar66 * dVar68) + + (dVar44 * dVar66 - dVar49 * dVar42) * dVar55 + + (dVar42 * dVar68 - dVar58 * dVar44) * dVar56) * dVar53; + *(double *)((long)local_408 + local_3c8 * 2) = + (dVar67 * (dVar48 * dVar66 - dVar58 * dVar50) + dVar55 * dVar62 + + (dVar58 * dVar69 - dVar48 * dVar42) * dVar56) * dVar53; + } + } + } + else if (uVar60 == 5) { + cVar14 = '\0'; + if (*(float *)local_590 != 0.0) { + cVar14 = '\x01'; + *(float *)local_408 = *(float *)local_530 / *(float *)local_590; + } + } + else { + cVar14 = '\0'; + if (*local_590 != 0.0) { + cVar14 = '\x01'; + *local_408 = *local_530 / *local_590; + } + } + if (local_3e0 != 0) { + piVar34 = (int *)(local_3e0 + 0x14); + do { + iVar15 = *piVar34; + cVar1 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_418); + } + } + local_3e0 = 0; + local_408 = (double *)0x0; + local_3f0 = 0; + local_3f8 = 0; + local_400 = 0; + if (0 < local_418._4_4_) { + iVar15 = 0; + puVar31 = local_3d8; + do { + *(undefined4 *)puVar31 = 0; + iVar15 = iVar15 + 1; + puVar31 = (ulong *)((long)puVar31 + 4); + } while (iVar15 < local_418._4_4_); + } + if (local_3d0 != &local_3c8) { + fastFree(local_3d0); + } + goto LAB_002b1ec8; + } + if (uVar38 == 4) { + uVar38 = 1; + uVar16 = 1; + } + else { + /* try { // try from 002b1954 to 003b1957 has its CatchHandler @ 002b145c */ + uVar16 = (uint)(uVar38 == 1); + } + uVar35 = (uint)uVar39 & 7; + /* catch() { ... } // from try @ 002b155c with catch @ 002b1960 */ + lVar20 = (long)iVar15; + /* catch() { ... } // from try @ 002b15a8 with catch @ 002b1988 + catch() { ... } // from try @ 002b1670 with catch @ 002b1988 + catch() { ... } // from try @ 002b17e4 with catch @ 002b1988 */ + iVar18 = ((uint)(uVar39 >> 3) & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> (uVar35 << 1)) & 3); + uVar27 = (long)iVar15 * (long)iVar18; + uVar21 = (ulong)iVar18; + uVar22 = uVar27 + 0xf & 0xfffffffffffffff0; + uVar39 = uVar22; + /* catch() { ... } // from try @ 002b15d0 with catch @ 002b19a8 + catch() { ... } // from try @ 002b1800 with catch @ 002b19a8 + catch() { ... } // from try @ 002b1848 with catch @ 002b19a8 */ + if (uVar37 < uVar16) { + uVar39 = (long)local_598 * (long)iVar18 + 0xfU & 0xfffffffffffffff0; + } + local_418 = &local_408; + local_6e0 = &local_718; + /* catch() { ... } // from try @ 002b1840 with catch @ 002b19d0 */ + local_6d8 = &local_6d0; + /* catch() { ... } // from try @ 002b1a30 with catch @ 002b19e0 + catch() { ... } // from try @ 002b1af0 with catch @ 002b19e0 + catch() { ... } // from try @ 002b1b38 with catch @ 002b19e0 */ + local_720 = local_540; + local_410 = 0x408; + local_71c = local_53c; + local_718 = local_538; + local_714 = local_534; + local_710 = local_530; + pdStack_708 = local_528; + local_700 = local_520; + pdStack_6f8 = local_518; + local_6f0 = local_510; + lStack_6e8 = local_508; + local_6c8 = 0; + /* try { // try from 002b1a30 to 003b1a33 has its CatchHandler @ 002b19e0 */ + local_6d0 = 0; + if (local_508 != 0) { + piVar34 = (int *)(local_508 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (local_53c < 3) { + local_6d0 = *local_4f8; + local_6c8 = local_4f8[1]; + } + else { + local_71c = 0; + Mat::copySize((Mat *)&local_720,(Mat *)&local_540); + } + /* try { // try from 002b1a7c to 003b1a7f has its CatchHandler @ 002b1b14 */ + _OutputArray::create(param_3,local_594,local_714,local_5a0 & 0xfff,-1,false,0); + iVar17 = _InputArray::kind((_InputArray *)param_3); + if (iVar17 == 0x10000) { + pMVar29 = *(Mat **)(param_3 + 8); + local_4a0 = &local_4d8; + local_498 = &local_490; + local_4e0 = *(undefined4 *)pMVar29; + local_4dc = *(int *)(pMVar29 + 4); + local_4d8 = *(undefined4 *)(pMVar29 + 8); + local_4d4 = *(undefined4 *)(pMVar29 + 0xc); + local_4d0 = *(undefined8 *)(pMVar29 + 0x10); + local_4c8 = *(undefined8 *)(pMVar29 + 0x18); + local_4c0 = *(undefined8 *)(pMVar29 + 0x20); + local_4b8 = *(undefined8 *)(pMVar29 + 0x28); + local_4b0 = *(undefined8 *)(pMVar29 + 0x30); + local_4a8 = *(long *)(pMVar29 + 0x38); + local_488 = 0; + local_490 = 0; + if (local_4a8 != 0) { + piVar34 = (int *)(local_4a8 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (2 < *(int *)(pMVar29 + 4)) { + local_4dc = 0; + Mat::copySize((Mat *)&local_4e0,pMVar29); + goto LAB_002b1abc; + } + local_490 = **(ulong **)(pMVar29 + 0x48); + local_488 = (*(ulong **)(pMVar29 + 0x48))[1]; + if (iVar15 <= iVar59) goto LAB_002b1ac8; +LAB_002b2260: + local_778 = 0; + local_770 = 0; + pcVar19 = (char *)String::allocate((String *)&local_778,0x3a); + uVar7 = s_The_function_can_not_solve_under_00467e30._56_2_; + uVar11 = s_The_function_can_not_solve_under_00467e30._40_8_; + uVar10 = s_The_function_can_not_solve_under_00467e30._32_8_; + uVar9 = s_The_function_can_not_solve_under_00467e30._24_8_; + uVar8 = s_The_function_can_not_solve_under_00467e30._16_8_; + uVar5 = s_The_function_can_not_solve_under_00467e30._8_8_; + uVar4 = s_The_function_can_not_solve_under_00467e30._0_8_; + *(undefined8 *)(pcVar19 + 0x30) = s_The_function_can_not_solve_under_00467e30._48_8_; + *(undefined2 *)(pcVar19 + 0x38) = uVar7; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + *(undefined8 *)(pcVar19 + 0x10) = uVar8; + *(undefined8 *)(pcVar19 + 0x18) = uVar9; + *(undefined8 *)(pcVar19 + 0x20) = uVar10; + *(undefined8 *)(pcVar19 + 0x28) = uVar11; + error(-5,(String *)&local_778, + "bool cv::solve(cv::InputArray, cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x4ba); + String::deallocate((String *)&local_778); + if (uVar37 != 0) goto LAB_002b1ad0; +LAB_002b1b50: + local_7b0 = lVar20; + if (uVar16 == 0) { + local_7b0 = (long)iVar59; + } + uVar37 = 0; + local_7b0 = uVar39 * local_7b0; + uVar26 = local_7b0 + 0x20; + if (uVar38 - 1 < 2) goto LAB_002b1b0c; +LAB_002b1b7c: + ppdVar23 = local_418; + uVar24 = uVar26; + if (local_410 < uVar26) { +LAB_002b1b88: + if (local_418 != &local_408) { + if (local_418 != (double **)0x0) { + operator_delete__(local_418); + } + local_418 = &local_408; + local_410 = 0x408; + } + ppdVar23 = &local_408; + uVar24 = local_410; + if (0x408 < uVar26) { + local_418 = operator_new__(uVar26); + ppdVar23 = local_418; + uVar24 = uVar26; + } + } + } + else { + _InputArray::getMat_((int)param_3); +LAB_002b1abc: + if (iVar59 < iVar15) goto LAB_002b2260; +LAB_002b1ac8: + if ((iVar59 == iVar15) || (uVar37 == 0)) goto LAB_002b1b50; +LAB_002b1ad0: + if (uVar16 == 0) { + uVar16 = uVar38 - 1; + } + else { + uVar16 = 1; + uVar38 = 2; + } + /* try { // try from 002b1af0 to 003b1b0f has its CatchHandler @ 002b19e0 */ + local_7b0 = uVar39 * lVar20; + uVar26 = local_7b0 + (long)(iVar15 * iVar12) * (long)iVar18 + 0x20; + iVar59 = iVar15; + if (1 < uVar16) goto LAB_002b1b7c; +LAB_002b1b0c: + /* catch() { ... } // from try @ 002b1a7c with catch @ 002b1b14 */ + uVar26 = uVar26 + (long)(iVar15 * 5) * (long)iVar18 + 0x20 + uVar22 * lVar20 + (long)iVar12 * 8; + /* try { // try from 002b1b38 to 003b1b3b has its CatchHandler @ 002b19e0 */ + /* catch() { ... } // from try @ 002b2f68 with catch @ 002b1b40 */ + ppdVar23 = local_418; + uVar24 = uVar26; + if (local_410 < uVar26) goto LAB_002b1b88; + } + local_410 = uVar24; + uVar24 = (long)ppdVar23 + 0xfU & 0xfffffffffffffff0; + uVar16 = uVar60 + 0x42ff0000; + local_678 = &local_670; + local_680 = &local_6b8; + uVar28 = 0x88442211UL >> (uVar35 << 2) & 0xf; + local_6bc = 2; + local_6a0 = 0; + lStack_698 = 0; + local_690 = 0; + /* try { // try from 002b1c30 to 003b1c33 has its CatchHandler @ 002b2f40 */ + lStack_688 = 0; + local_668 = 0; + local_670 = 0; + uVar26 = uVar27; + local_6b8 = iVar59; + local_6b4 = iVar15; + local_6b0 = uVar24; + uStack_6a8 = uVar24; + if (uVar39 == 0) { + local_6c0 = uVar16 | 0x4000; + local_6a0 = 0; + } + else { + local_6c0 = uVar16; + if (iVar59 == 1) { + uVar2 = 0; + if (uVar28 != 0) { + uVar2 = uVar27 / uVar28; + } + if (uVar27 - uVar2 * uVar28 != 0) goto LAB_002b30f8; + local_6a0 = 0; + uVar35 = 0x4000; + } + else { + uVar2 = 0; + if (uVar28 != 0) { + uVar2 = uVar39 / uVar28; + } + uVar26 = uVar39; + if (uVar39 != uVar2 * uVar28) { +LAB_002b30f8: + local_768 = 0; + local_760 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_768,0x1f); + cVar14 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar5 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar19 + 0x18) = uVar6; + *(undefined2 *)(pcVar19 + 0x1c) = uVar7; + pcVar19[0x1e] = cVar14; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + error(-0xd,(String *)&local_768,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)&local_768); + } + if (uVar27 - uVar26 == 0) { + local_6a0 = 0; + uVar35 = 0x4000; + uVar26 = uVar27; + } + else { + local_6a0 = uVar27 - uVar26; + uVar35 = 0; + } + } + local_6c0 = local_6c0 | uVar35; + /* try { // try from 002b1c90 to 003b1c93 has its CatchHandler @ 002b2f6c */ + } + *local_678 = uVar26; + lStack_698 = uStack_6a8 + (long)local_6b8 * uVar26; + local_678[1] = uVar21; + local_6a0 = lStack_698 + local_6a0; + uStack_478 = (Mat *)&local_6c0; + if (uVar37 == 0) { + if (uVar38 == 1) { + /* try { // try from 002b2e84 to 003b2f3b has its CatchHandler @ 002b2f6c */ + local_620 = &local_658; + local_618 = &local_610; + local_65c = 2; + local_658 = (Mat *)CONCAT44(iVar59,iVar15); + local_640 = 0; + lStack_638 = 0; + local_630 = 0; + lStack_628 = 0; + local_608 = 0; + local_610 = 0; + uVar26 = (long)iVar59 * (long)iVar18; + local_650 = uVar24; + uStack_648 = uVar24; + if (uVar39 == 0) { + local_640 = uVar24 + lVar20 * uVar26; + local_660 = uVar16 | 0x4000; + lStack_638 = local_640; + local_610 = uVar26; + local_608 = uVar21; + } + else { + lVar32 = lVar20; + if (iVar15 == 1) { + uVar2 = 0; + if (uVar28 != 0) { + uVar2 = uVar26 / uVar28; + } + uVar39 = uVar26; + local_660 = uVar16; + if (uVar26 - uVar2 * uVar28 != 0) goto LAB_002b3588; +LAB_002b3634: + local_640 = 0; + uVar37 = 0x4000; + } + else { + uVar2 = 0; + if (uVar28 != 0) { + uVar2 = uVar39 / uVar28; + } + local_660 = uVar16; + if (uVar39 != uVar2 * uVar28) { +LAB_002b3588: + local_750 = 0; + local_748 = (Mat *)0x0; + local_660 = uVar16; + pcVar19 = (char *)String::allocate((String *)&local_750,0x1f); + cVar14 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar5 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar19 + 0x18) = uVar6; + *(undefined2 *)(pcVar19 + 0x1c) = uVar7; + pcVar19[0x1e] = cVar14; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + error(-0xd,(String *)&local_750,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp" + ,0x19d); + String::deallocate((String *)&local_750); + lVar32 = (long)(int)local_658; + } + if (uVar26 - uVar39 == 0) goto LAB_002b3634; + local_640 = uVar26 - uVar39; + uVar37 = 0; + uVar26 = uVar39; + } + local_660 = local_660 | uVar37; + lStack_638 = uStack_648 + uVar26 * lVar32; + *local_618 = uVar26; + local_618[1] = uVar21; + local_640 = lStack_638 + local_640; + /* catch() { ... } // from try @ 002b1c30 with catch @ 002b2f40 + catch() { ... } // from try @ 002b2cfc with catch @ 002b2f40 */ + if (lStack_628 != 0) { + piVar34 = (int *)(lStack_628 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + } + if (lStack_688 != 0) { + piVar34 = (int *)(lStack_688 + 0x14); + do { + iVar18 = *piVar34; + /* try { // try from 002b2f68 to 003b2f6b has its CatchHandler @ 002b1b40 */ + /* catch() { ... } // from try @ 002b1c90 with catch @ 002b2f6c + catch() { ... } // from try @ 002b1cdc with catch @ 002b2f6c + catch() { ... } // from try @ 002b1e88 with catch @ 002b2f6c + catch() { ... } // from try @ 002b2e84 with catch @ 002b2f6c */ + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_6c0); + } + } + puVar31 = local_618; + lStack_688 = 0; + local_6b0 = 0; + lStack_698 = 0; + local_6a0 = 0; + /* catch() { ... } // from try @ 002b1cd4 with catch @ 002b2f94 */ + uStack_6a8 = 0; + if (local_6bc < 1) { +LAB_002b2fc8: + local_6c0 = local_660; + if (2 < local_65c) goto LAB_002b3230; + local_6b4 = local_658._4_4_; + local_6b8 = (int)local_658; + local_6bc = local_65c; + *local_678 = *local_618; + local_678[1] = puVar31[1]; + } + else { + iVar18 = 0; + piVar34 = local_680; + do { + /* catch() { ... } // from try @ 002b1e80 with catch @ 002b2fa4 */ + *piVar34 = 0; + iVar18 = iVar18 + 1; + piVar34 = piVar34 + 1; + } while (iVar18 < local_6bc); + if (local_6bc < 3) goto LAB_002b2fc8; +LAB_002b3230: + local_6c0 = local_660; + Mat::copySize((Mat *)&local_6c0,(Mat *)&local_660); + } + lStack_698 = lStack_638; + local_6a0 = local_640; + lStack_688 = lStack_628; + local_690 = local_630; + uStack_6a8 = uStack_648; + local_6b0 = local_650; + if (lStack_628 != 0) { + piVar34 = (int *)(lStack_628 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + lStack_628 = 0; + local_650 = 0; + lStack_638 = 0; + local_640 = 0; + uStack_648 = 0; + if (0 < local_65c) { + iVar18 = 0; + puVar30 = local_620; + do { + *(undefined4 *)puVar30 = 0; + iVar18 = iVar18 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar18 < local_65c); + } + if (local_618 != &local_610) { + fastFree(local_618); + } + local_470 = 0; + local_480 = CONCAT44(local_480._4_4_,0x2010000); + local_5f0 = (double *)0x0; + local_600 = CONCAT44(local_600._4_4_,0x1010000); + uStack_5f8 = (Mat *)&local_5a0; + transpose((_InputArray *)&local_600,(_OutputArray *)&local_480); + pdVar36 = (double *)(uVar24 + local_7b0); + } + else { + /* try { // try from 002b1cd4 to 003b1cd7 has its CatchHandler @ 002b2f94 */ + local_470 = 0; + /* try { // try from 002b1cdc to 003b1e43 has its CatchHandler @ 002b2f6c */ + local_480 = CONCAT44(local_480._4_4_,0x2010000); + Mat::copyTo((Mat *)&local_5a0,(_OutputArray *)&local_480); + pdVar36 = (double *)(uVar24 + local_7b0); + if ((uVar38 == 3) || (uVar38 == 0)) { + local_470 = 0; + local_480 = CONCAT44(local_480._4_4_,0x2010000); + uStack_478 = (Mat *)&local_4e0; + Mat::copyTo((Mat *)&local_720,(_OutputArray *)&local_480); + goto LAB_002b2c5c; + } +LAB_002b1d04: + if (uVar38 == 3) goto LAB_002b1d10; + } +LAB_002b2688: + local_620 = &local_658; + local_65c = 2; + uVar26 = (long)pdVar36 + 0xfU & 0xfffffffffffffff0; + local_658 = (Mat *)CONCAT44(iVar15,iVar15); + local_618 = &local_610; + local_640 = 0; + lStack_638 = 0; + local_630 = 0; + lStack_628 = 0; + local_608 = 0; + local_610 = 0; + lVar32 = lVar20; + uVar39 = uVar27; + local_650 = uVar26; + uStack_648 = uVar26; + if (uVar22 == 0) { + local_660 = uVar16 | 0x4000; + local_640 = 0; + } + else { + if (iVar15 == 1) { + uVar24 = 0; + if (uVar28 != 0) { + uVar24 = uVar27 / uVar28; + } + local_660 = uVar16; + if (uVar27 - uVar24 * uVar28 != 0) goto LAB_002b34c4; +LAB_002b3574: + local_640 = 0; + uVar37 = 0x4000; + uVar39 = uVar27; + } + else { + uVar24 = 0; + if (uVar28 != 0) { + uVar24 = uVar22 / uVar28; + } + uVar39 = uVar22; + local_660 = uVar16; + if (uVar22 != uVar24 * uVar28) { +LAB_002b34c4: + local_738 = 0; + local_730 = (Mat *)0x0; + local_660 = uVar16; + pcVar19 = (char *)String::allocate((String *)&local_738,0x1f); + cVar14 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar5 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar19 + 0x18) = uVar6; + *(undefined2 *)(pcVar19 + 0x1c) = uVar7; + pcVar19[0x1e] = cVar14; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + error(-0xd,(String *)&local_738,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)&local_738); + lVar32 = (long)(int)local_658; + } + if (uVar27 - uVar39 == 0) goto LAB_002b3574; + local_640 = uVar27 - uVar39; + uVar37 = 0; + } + local_660 = uVar37 | local_660; + } + *local_618 = uVar39; + local_618[1] = uVar21; + local_440 = &uStack_478; + lStack_638 = uStack_648 + lVar32 * uVar39; + local_470 = uVar26 + uVar22 * lVar20; + local_438 = &local_430; + local_5c0 = &uStack_5f8; + local_460 = local_470 + uVar27; + local_640 = lStack_638 + local_640; + local_5b8 = &local_5b0; + uStack_478 = (Mat *)CONCAT44(1,iVar15); + local_450 = 0; + local_448 = 0; + local_480 = CONCAT44(2,uVar16) | 0x4000; + local_600 = 0x42ff0000; + uStack_5f8 = (Mat *)0x0; + local_5f0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + local_5d0 = 0; + lStack_5c8 = 0; + uStack_5a8 = 0; + local_5b0 = 0; + lVar20 = uVar26 + (uVar22 + uVar21) * lVar20; + lStack_468 = local_470; + local_458 = local_460; + local_430 = uVar21; + uStack_428 = uVar21; + if (uVar38 == 2) { + if (uVar60 == 5) { + FUN_002abe40(local_6b0,local_670,local_470,local_650,local_610,iVar15,lVar20); + } + else { + FUN_002ace08(); + } + if (lStack_628 != 0) { + piVar34 = (int *)(lStack_628 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (lStack_5c8 != 0) { + piVar34 = (int *)(lStack_5c8 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + if (local_600._4_4_ < 1) { +LAB_002b33bc: + if (2 < local_65c) goto LAB_002b33c8; + local_600 = CONCAT44(local_65c,local_660); + uStack_5f8 = local_658; + *local_5b8 = *local_618; + local_5b8[1] = local_618[1]; + } + else { + iVar18 = 0; + puVar30 = local_5c0; + do { + *(undefined4 *)puVar30 = 0; + iVar18 = iVar18 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar18 < local_600._4_4_); + if (local_600._4_4_ < 3) goto LAB_002b33bc; +LAB_002b33c8: + local_600 = CONCAT44(local_600._4_4_,local_660); + Mat::copySize((Mat *)&local_600,(Mat *)&local_660); + } + pdStack_5d8 = (double *)lStack_638; + local_5e0 = (double *)local_640; + lStack_5c8 = lStack_628; + local_5d0 = local_630; + pdStack_5e8 = (double *)uStack_648; + local_5f0 = (double *)local_650; + } + else { + if (uVar60 == 5) { + iVar18 = iVar15; + if (local_650 == 0) { + iVar18 = 0; + } + FUN_002af238(DAT_002b3d00,DAT_002b3d08,local_6b0,local_670,local_470,local_650,local_610, + iVar59,iVar15,iVar18); + } + else { + iVar18 = iVar15; + if (local_650 == 0) { + iVar18 = 0; + } + FUN_002b0688(DAT_002b3d10,DAT_002b3d18,local_6b0,local_670,local_470,local_650,local_610, + iVar59,iVar15,iVar18); + } + if (lStack_688 != 0) { + piVar34 = (int *)(lStack_688 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (lStack_5c8 != 0) { + piVar34 = (int *)(lStack_5c8 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + if (local_600._4_4_ < 1) { +LAB_002b28e8: + if (2 < local_6bc) goto LAB_002b3240; + local_600 = CONCAT44(local_6bc,local_6c0); + uStack_5f8 = (Mat *)CONCAT44(local_6b4,local_6b8); + *local_5b8 = *local_678; + local_5b8[1] = local_678[1]; + } + else { + iVar18 = 0; + puVar30 = local_5c0; + do { + *(undefined4 *)puVar30 = 0; + iVar18 = iVar18 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar18 < local_600._4_4_); + if (local_600._4_4_ < 3) goto LAB_002b28e8; +LAB_002b3240: + local_600 = CONCAT44(local_600._4_4_,local_6c0); + Mat::copySize((Mat *)&local_600,(Mat *)&local_6c0); + } + pdStack_5e8 = (double *)uStack_6a8; + pdStack_5d8 = (double *)lStack_698; + local_5e0 = (double *)local_6a0; + lStack_5c8 = lStack_688; + local_5d0 = local_690; + local_5f0 = (double *)local_6b0; + } + uVar39 = lVar20 + 7U & 0xfffffffffffffff8; + if (uVar60 == 5) { + FUN_002a88f8(iVar59,iVar15,local_470,1,local_5f0,local_5b0 >> 2,1,local_650, + (int)(local_610 >> 2),local_710,(int)(local_6d0 >> 2),iVar12,local_4d0, + (int)(local_490 >> 2),uVar39); + } + else { + FUN_002a7f00(iVar59,iVar15,local_470,1,local_5f0,local_5b0 >> 3,1,local_650, + (int)(local_610 >> 3),local_710,(int)(local_6d0 >> 3),iVar12,local_4d0, + (int)(local_490 >> 3),uVar39); + } + if (lStack_5c8 != 0) { + piVar34 = (int *)(lStack_5c8 + 0x14); + do { + iVar15 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + if (0 < local_600._4_4_) { + iVar15 = 0; + puVar30 = local_5c0; + do { + *(undefined4 *)puVar30 = 0; + iVar15 = iVar15 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar15 < local_600._4_4_); + } + if (local_5b8 != &local_5b0) { + fastFree(local_5b8); + } + if (local_448 != 0) { + piVar34 = (int *)(local_448 + 0x14); + do { + iVar15 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_480); + } + } + local_448 = 0; + local_470 = 0; + local_458 = 0; + local_460 = 0; + lStack_468 = 0; + if (0 < local_480._4_4_) { + iVar15 = 0; + puVar30 = local_440; + do { + *(undefined4 *)puVar30 = 0; + iVar15 = iVar15 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar15 < local_480._4_4_); + } + if (local_438 != &local_430) { + fastFree(local_438); + } + if (lStack_628 != 0) { + piVar34 = (int *)(lStack_628 + 0x14); + do { + iVar15 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + lStack_628 = 0; + local_650 = 0; + lStack_638 = 0; + local_640 = 0; + uStack_648 = 0; + if (0 < local_65c) { + iVar15 = 0; + puVar30 = local_620; + do { + *(undefined4 *)puVar30 = 0; + iVar15 = iVar15 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar15 < local_65c); + } + if (local_618 != &local_610) { + fastFree(local_618); + } + cVar14 = '\x01'; + } + else { + local_5f0 = (double *)0x0; + local_600 = CONCAT44(local_600._4_4_,0x1010000); + local_470 = 0; + local_480._0_4_ = 0x2010000; + uStack_5f8 = (Mat *)&local_5a0; + p_Var25 = (_InputArray *)noArray(); + mulTransposed((_InputArray *)&local_600,(_OutputArray *)&local_480,true,p_Var25,1.0,-1); + local_5f0 = (double *)(uVar24 + local_7b0); + local_658 = (Mat *)&local_600; + if (uVar38 == 3) { +LAB_002b2b38: + local_5b8 = &local_5b0; + local_5c0 = &uStack_5f8; + local_5f0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + uStack_5f8 = _UNK_002b3cf8; + local_600 = _DAT_002b3cf0; + local_5d0 = 0; + lStack_5c8 = 0; + uStack_5a8 = 0; + local_5b0 = 0; + local_740 = 0; + local_73c = 0; + local_750 = CONCAT44(local_750._4_4_,0x1010000); + local_650 = 0; + local_660 = 0x1010000; + local_470 = 0; + local_480 = CONCAT44(local_480._4_4_,0x2010000); + local_728 = 0; + local_724 = 0; + local_738 = CONCAT44(local_738._4_4_,0x1010000); + local_748 = (Mat *)&local_5a0; + local_730 = (Mat *)&local_720; + uStack_478 = (Mat *)&local_4e0; + gemm((_InputArray *)&local_750,(_InputArray *)&local_738,1.0,(_InputArray *)&local_660,0.0, + (_OutputArray *)&local_480,1); + if (lStack_5c8 != 0) { + piVar34 = (int *)(lStack_5c8 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + if (0 < local_600._4_4_) { + iVar18 = 0; + puVar30 = local_5c0; + do { + *(undefined4 *)puVar30 = 0; + iVar18 = iVar18 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar18 < local_600._4_4_); + } + if (local_5b8 != &local_5b0) { + fastFree(local_5b8); + } +LAB_002b2c5c: + pdVar36 = (double *)(uVar24 + local_7b0); + if (uVar38 != 0) goto LAB_002b1d04; + if (uVar60 == 5) { + iVar15 = FUN_003cbc40(local_6b0,local_670,iVar15,local_4d0,local_490,iVar12); + } + else { + iVar15 = FUN_003cc800(); + } + cVar14 = iVar15 != 0; + } + else { + bVar13 = uVar38 == 0; + if (bVar13 != 0) goto LAB_002b2b38; + local_5b0 = (long)iVar12 * (long)iVar18; + uStack_478 = _UNK_002b3cf8; + local_480 = _DAT_002b3cf0; + pdVar36 = (double *)((long)local_5f0 + (long)(iVar15 * iVar12) * (long)iVar18); + local_438 = &local_430; + local_470 = 0; + local_440 = &uStack_478; + lStack_468 = 0; + local_5c0 = &uStack_5f8; + local_460 = 0; + local_5b8 = &local_5b0; + local_458 = 0; + local_450 = 0; + local_448 = 0; + uStack_428 = 0; + local_430 = 0; + local_5e0 = (double *)((long)local_5f0 + local_5b0 * lVar20); + local_754 = (uint)bVar13; + uStack_5f8 = (Mat *)CONCAT44(iVar12,iVar15); + local_5d0 = 0; + lStack_5c8 = 0; + local_600 = CONCAT44(2,uVar16) | 0x4000; + local_768 = CONCAT44(local_768._4_4_,0x1010000); + local_724 = (uint)bVar13; + local_650 = (ulong)CONCAT14(bVar13,local_724); + local_738 = CONCAT44(local_738._4_4_,0x1010000); + local_660 = 0x2010000; + local_750 = CONCAT44(local_750._4_4_,0x1010000); + local_760 = (Mat *)&local_5a0; + local_758 = (uint)bVar13; + local_748 = (Mat *)&local_720; + local_740 = local_754; + local_73c = local_754; + local_730 = (Mat *)&local_480; + local_728 = local_754; + pdStack_5e8 = local_5f0; + pdStack_5d8 = local_5e0; + uStack_5a8 = uVar21; + gemm((_InputArray *)&local_768,(_InputArray *)&local_750,1.0,(_InputArray *)&local_738,0.0, + (_OutputArray *)&local_660,1); + if (local_448 != 0) { + piVar34 = (int *)(local_448 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_480); + } + } + local_448 = 0; + local_470 = 0; + local_458 = 0; + local_460 = 0; + lStack_468 = 0; + if (0 < local_480._4_4_) { + iVar18 = 0; + puVar30 = local_440; + do { + *(undefined4 *)puVar30 = 0; + iVar18 = iVar18 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar18 < local_480._4_4_); + } + if (local_438 != &local_430) { + fastFree(local_438); + } + if (lStack_5c8 != 0) { + piVar34 = (int *)(lStack_5c8 + 0x14); + do { + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = *piVar34 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + } + if (lStack_6e8 != 0) { + piVar34 = (int *)(lStack_6e8 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_720); + } + } + puVar31 = local_5b8; + lStack_6e8 = 0; + local_710 = (double *)0x0; + pdStack_6f8 = (double *)0x0; + local_700 = (double *)0x0; + pdStack_708 = (double *)0x0; + if (local_71c < 1) { +LAB_002b25a0: + local_720 = (uint)local_600; + if (2 < local_600._4_4_) goto LAB_002b2e44; + local_714 = uStack_5f8._4_4_; + local_718 = (undefined4)uStack_5f8; + local_71c = local_600._4_4_; + *local_6d8 = *local_5b8; + local_6d8[1] = puVar31[1]; + } + else { + iVar18 = 0; + puVar33 = local_6e0; + do { + *puVar33 = 0; + iVar18 = iVar18 + 1; + puVar33 = puVar33 + 1; + } while (iVar18 < local_71c); + if (local_71c < 3) goto LAB_002b25a0; +LAB_002b2e44: + local_720 = (uint)local_600; + Mat::copySize((Mat *)&local_720,(Mat *)&local_600); + } + pdStack_6f8 = pdStack_5d8; + local_700 = local_5e0; + lStack_6e8 = lStack_5c8; + local_6f0 = local_5d0; + pdStack_708 = pdStack_5e8; + local_710 = local_5f0; + if (lStack_5c8 != 0) { + piVar34 = (int *)(lStack_5c8 + 0x14); + do { + iVar18 = *piVar34; + cVar14 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar18 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = (double *)0x0; + pdStack_5d8 = (double *)0x0; + local_5e0 = (double *)0x0; + pdStack_5e8 = (double *)0x0; + if (0 < local_600._4_4_) { + iVar18 = 0; + puVar30 = local_5c0; + do { + *(undefined4 *)puVar30 = 0; + iVar18 = iVar18 + 1; + puVar30 = (undefined8 *)((long)puVar30 + 4); + } while (iVar18 < local_600._4_4_); + } + if (local_5b8 == &local_5b0) goto LAB_002b1d04; + fastFree(local_5b8); + if (uVar38 != 3) goto LAB_002b2688; +LAB_002b1d10: + if (uVar60 == 5) { + cVar14 = FUN_003cd0e8(local_6b0,local_670,iVar15,local_4d0,local_490,iVar12); + } + else { + cVar14 = FUN_003cd450(); + } + } + if (cVar14 == '\0') { + uStack_478 = (Mat *)0x0; + local_480 = 0; + lStack_468 = 0; + local_470 = 0; + Mat::operator=((Mat *)&local_4e0,(Scalar_ *)&local_480); + } + } + if (lStack_688 != 0) { + piVar34 = (int *)(lStack_688 + 0x14); + do { + iVar15 = *piVar34; + cVar1 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_6c0); + } + } + lStack_688 = 0; + local_6b0 = 0; + lStack_698 = 0; + local_6a0 = 0; + uStack_6a8 = 0; + if (0 < local_6bc) { + iVar15 = 0; + piVar34 = local_680; + do { + *piVar34 = 0; + iVar15 = iVar15 + 1; + piVar34 = piVar34 + 1; + } while (iVar15 < local_6bc); + } + if (local_678 != &local_670) { + fastFree(local_678); + } + if (local_4a8 != 0) { + piVar34 = (int *)(local_4a8 + 0x14); + do { + iVar15 = *piVar34; + cVar1 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_4e0); + } + } + local_4a8 = 0; + local_4d0 = 0; + local_4b8 = 0; + local_4c0 = 0; + local_4c8 = 0; + if (0 < local_4dc) { + iVar15 = 0; + puVar33 = local_4a0; + do { + *puVar33 = 0; + iVar15 = iVar15 + 1; + puVar33 = puVar33 + 1; + } while (iVar15 < local_4dc); + } + if (local_498 != &local_490) { + fastFree(local_498); + } + if (lStack_6e8 != 0) { + piVar34 = (int *)(lStack_6e8 + 0x14); + do { + iVar15 = *piVar34; + cVar1 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_720); + } + } + lStack_6e8 = 0; + local_710 = (double *)0x0; + pdStack_6f8 = (double *)0x0; + local_700 = (double *)0x0; + pdStack_708 = (double *)0x0; + /* try { // try from 002b1e80 to 003b1e83 has its CatchHandler @ 002b2fa4 */ + if (0 < local_71c) { + /* try { // try from 002b1e88 to 003b2cbf has its CatchHandler @ 002b2f6c */ + iVar15 = 0; + puVar33 = local_6e0; + do { + *puVar33 = 0; + iVar15 = iVar15 + 1; + puVar33 = puVar33 + 1; + } while (iVar15 < local_71c); + } + if (local_6d8 != &local_6d0) { + fastFree(local_6d8); + } + if ((local_418 != &local_408) && (local_418 != (double **)0x0)) { + operator_delete__(local_418); + } +LAB_002b1ec8: + if (local_508 != 0) { + piVar34 = (int *)(local_508 + 0x14); + do { + iVar15 = *piVar34; + cVar1 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_540); + } + } + local_508 = 0; + local_530 = (double *)0x0; + local_518 = (double *)0x0; + local_520 = (double *)0x0; + local_528 = (double *)0x0; + if (0 < local_53c) { + iVar15 = 0; + puVar33 = local_500; + do { + *puVar33 = 0; + iVar15 = iVar15 + 1; + puVar33 = puVar33 + 1; + } while (iVar15 < local_53c); + } + if (local_4f8 != &local_4f0) { + fastFree(local_4f8); + } + if (local_568 != 0) { + piVar34 = (int *)(local_568 + 0x14); + do { + iVar15 = *piVar34; + cVar1 = '\x01'; + bVar13 = (bool)ExclusiveMonitorPass(piVar34,0x10); + if (bVar13) { + *piVar34 = iVar15 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_5a0); + } + } + local_568 = 0; + local_590 = (double *)0x0; + local_578 = 0; + local_580 = 0; + local_588 = 0; + if (0 < local_59c) { + iVar15 = 0; + piVar34 = local_560; + do { + *piVar34 = 0; + iVar15 = iVar15 + 1; + piVar34 = piVar34 + 1; + } while (iVar15 < local_59c); + } + if (local_558 != &local_550) { + fastFree(local_558); + } + return cVar14; +} + + +================================================================== + +### FUNC 002b3d20 (892 bytes) name=cvSolve + +undefined1 +cvSolve(cv *param_1,cv *param_2,cv *param_3,uint param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + undefined1 uVar11; + char *pcVar12; + int iVar13; + uint uVar14; + uint uVar15; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + int local_118; + int local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + if ((((local_120 & 0xfff) != (local_60 & 0xfff)) || (local_114 != local_58)) || + (local_54 != local_b4)) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_138,0x3c); + uVar10 = s_A_type______x_type______A_cols___00467e70._56_4_; + uVar9 = s_A_type______x_type______A_cols___00467e70._40_8_; + uVar8 = s_A_type______x_type______A_cols___00467e70._32_8_; + uVar7 = s_A_type______x_type______A_cols___00467e70._24_8_; + uVar6 = s_A_type______x_type______A_cols___00467e70._16_8_; + uVar5 = s_A_type______x_type______A_cols___00467e70._8_8_; + uVar4 = s_A_type______x_type______A_cols___00467e70._0_8_; + *(undefined8 *)(pcVar12 + 0x30) = s_A_type______x_type______A_cols___00467e70._48_8_; + *(undefined4 *)(pcVar12 + 0x38) = uVar10; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + *(undefined8 *)(pcVar12 + 0x20) = uVar8; + *(undefined8 *)(pcVar12 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_138,"int cvSolve(const CvArr*, const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x60d); + cv::String::deallocate((String *)&local_138); + } + uVar15 = param_4 & 0xffffffef; + local_128 = 0; + local_168[0] = 0x1010000; + local_150[0] = 0x1010000; + local_158 = 0; + local_154 = 0; + local_140 = 0; + local_13c = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + if (uVar15 == 3) { + uVar14 = 0x13; + } + else if (uVar15 == 1) { + uVar14 = 0x11; + } + else if (uVar15 == 2) { + uVar14 = 0x12; + } + else { + /* try { // try from 002b3e98 to 003b3e9b has its CatchHandler @ 002b426c */ + uVar14 = 0x14; + if (local_118 <= local_114) { + uVar14 = 0x10; + } + uVar15 = 4; + if (local_118 <= local_114) { + uVar15 = 0; + } + } + if ((param_4 & 0x10) == 0) { + uVar14 = uVar15; + } + local_160 = (Mat *)&local_120; + local_148 = aMStack_c0; + local_130 = (Mat *)&local_60; + uVar11 = cv::solve((_InputArray *)local_168,(_InputArray *)local_150,(_OutputArray *)&local_138, + uVar14); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 002b3ed8 to 003b3edb has its CatchHandler @ 002b423c */ + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + /* try { // try from 002b3ee0 to 003b3ee3 has its CatchHandler @ 002b426c */ + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return uVar11; +} + + +================================================================== + +### FUNC 002b4128 (3996 bytes) name=FUN_002b4128 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_002b4128(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,uint param_5) + +{ + bool bVar1; + uint uVar2; + uint uVar3; + bool bVar4; + ulong uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + undefined2 uVar10; + ulong *puVar11; + char cVar12; + int iVar13; + uint uVar14; + int iVar15; + uint uVar16; + char *pcVar17; + undefined4 *puVar18; + int *piVar19; + Mat *pMVar20; + undefined8 *puVar21; + ulong uVar22; + long lVar23; + ulong uVar24; + uint uVar25; + ulong uVar26; + ulong uVar27; + ulong uVar28; + ulong uVar29; + int iVar30; + int iVar31; + uint uVar32; + long lVar33; + ulong local_710; + uint local_6f4; + long local_6e8; + ulong local_6e0; + long local_6d0; + long local_6c8; + ulong local_6c0; + ulong local_6b8; + undefined8 local_6a8; + undefined8 local_6a0; + undefined8 local_698; + undefined8 local_690; + undefined8 local_688; + undefined8 local_680; + undefined8 local_678; + Mat *local_670; + uint local_668; + uint local_664; + undefined4 local_660; + int local_65c; + undefined4 local_658; + undefined4 local_654; + ulong local_650; + ulong uStack_648; + long local_640; + long lStack_638; + undefined8 local_630; + long lStack_628; + undefined4 *local_620; + ulong *local_618; + ulong local_610 [2]; + undefined8 local_600; + undefined8 local_5f8; + ulong local_5f0; + ulong uStack_5e8; + long local_5e0; + long lStack_5d8; + undefined8 local_5d0; + long lStack_5c8; + undefined8 *local_5c0; + ulong *local_5b8; + ulong local_5b0; + ulong local_5a8; + uint local_598; + int local_594; + int local_590; + int local_58c; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + undefined8 local_568; + long local_560; + int *local_558; + undefined8 *local_550; + undefined8 local_548; + undefined8 local_540; + uint local_538; + int local_534; + int local_530; + int local_52c; + ulong local_528; + ulong local_520; + long local_518; + long local_510; + undefined8 local_508; + long local_500; + int *local_4f8; + ulong *local_4f0; + ulong local_4e8; + undefined8 local_4e0; + uint local_4d8; + int local_4d4; + int local_4d0; + undefined4 local_4cc; + long local_4c8; + long local_4c0; + long local_4b8; + long local_4b0; + undefined8 local_4a8; + long local_4a0; + int *local_498; + ulong *local_490; + ulong local_488; + ulong local_480; + uint local_478; + int local_474; + int local_470; + int local_46c; + ulong local_468; + ulong local_460; + long local_458; + long local_450; + undefined8 local_448; + long local_440; + int *local_438; + ulong *local_430; + ulong local_428; + undefined8 local_420; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + iVar13 = cv::_InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar20 = *(Mat **)(param_1 + 8); + local_558 = &local_590; + local_550 = &local_548; + local_598 = *(uint *)pMVar20; + local_594 = *(int *)(pMVar20 + 4); + local_590 = *(int *)(pMVar20 + 8); + local_58c = *(int *)(pMVar20 + 0xc); + local_588 = *(undefined8 *)(pMVar20 + 0x10); + local_580 = *(undefined8 *)(pMVar20 + 0x18); + local_578 = *(undefined8 *)(pMVar20 + 0x20); + local_570 = *(undefined8 *)(pMVar20 + 0x28); + local_568 = *(undefined8 *)(pMVar20 + 0x30); + local_560 = *(long *)(pMVar20 + 0x38); + local_540 = 0; + local_548 = 0; + if (local_560 != 0) { + piVar19 = (int *)(local_560 + 0x14); + do { + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = *piVar19 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar20 + 4) < 3) { + local_548 = **(undefined8 **)(pMVar20 + 0x48); + local_540 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + local_594 = 0; + cv::Mat::copySize((Mat *)&local_598,pMVar20); + } + } + else { + cv::_InputArray::getMat_((int)param_1); + } + iVar30 = local_58c; + iVar13 = local_590; + uVar14 = local_598; + uVar2 = local_598 & 0xfff; + cVar12 = cv::_OutputArray::needed(param_3); + uVar16 = 1; + if (cVar12 == '\0') { + uVar16 = cv::_OutputArray::needed(param_4); + uVar16 = uVar16 & 0xff; + } + /* catch() { ... } // from try @ 002b3cb0 with catch @ 002b41b8 */ + if (1 < uVar2 - 5) { + local_6a8 = 0; + local_6a0 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_6a8,0x20); + uVar8 = s_type____CV_32F____type____CV_64F_00467cc8._24_8_; + uVar7 = s_type____CV_32F____type____CV_64F_00467cc8._16_8_; + uVar6 = s_type____CV_32F____type____CV_64F_00467cc8._8_8_; + *(undefined8 *)pcVar17 = s_type____CV_32F____type____CV_64F_00467cc8._0_8_; + *(undefined8 *)(pcVar17 + 8) = uVar6; + *(undefined8 *)(pcVar17 + 0x10) = uVar7; + *(undefined8 *)(pcVar17 + 0x18) = uVar8; + cv::error(-0xd7,(String *)&local_6a8, + "void cv::_SVDcompute(cv::InputArray, cv::OutputArray, cv::OutputArray, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x558); + /* try { // try from 002b4220 to 003b4223 has its CatchHandler @ 002b3664 */ + cv::String::deallocate((String *)&local_6a8); + } + /* catch() { ... } // from try @ 002b37e4 with catch @ 002b4224 + catch() { ... } // from try @ 002b39c0 with catch @ 002b4224 + catch() { ... } // from try @ 002b3ba8 with catch @ 002b4224 + catch() { ... } // from try @ 002b3bfc with catch @ 002b4224 + catch() { ... } // from try @ 002b3cb8 with catch @ 002b4224 + catch() { ... } // from try @ 002b409c with catch @ 002b4224 */ + if ((param_5 >> 1 & 1) == 0) { + uVar25 = param_5 >> 2 & 1; + } + else { + cv::_OutputArray::release(param_3); + cv::_OutputArray::release(param_4); + uVar16 = 0; + uVar25 = uVar16; + } + /* catch() { ... } // from try @ 002b376c with catch @ 002b422c */ + /* catch() { ... } // from try @ 002b36dc with catch @ 002b4234 + catch() { ... } // from try @ 002b3b28 with catch @ 002b4234 + catch() { ... } // from try @ 002b40c4 with catch @ 002b4234 */ + bVar1 = iVar13 < iVar30; + iVar31 = iVar13; + if (bVar1) { + /* catch() { ... } // from try @ 002b3ed8 with catch @ 002b423c */ + iVar31 = iVar30; + iVar30 = iVar13; + } + uVar32 = (uint)bVar1; + iVar13 = iVar31; + if (uVar25 == 0) { + iVar13 = iVar30; + } + if (local_594 < 1) { + local_6e0 = 0; + uVar26 = 0; + uVar27 = 0x20; + local_6c0 = 0; + local_6e8 = 0; + local_6c8 = 0; +LAB_002b49d0: + local_418 = auStack_408; + local_6b8 = local_6e0; + local_410 = uVar27; + } + else { + /* catch() { ... } // from try @ 002b3918 with catch @ 002b426c + catch() { ... } // from try @ 002b3e98 with catch @ 002b426c + catch() { ... } // from try @ 002b3ee0 with catch @ 002b426c */ + /* catch() { ... } // from try @ 002b3bf4 with catch @ 002b4274 */ + local_6c8 = (long)iVar30 * local_550[(long)local_594 + -1]; + local_6e0 = local_6c8 + 0xfU & 0xfffffffffffffff0; + local_418 = auStack_408; + uVar26 = (long)iVar31 * local_550[(long)local_594 + -1] + 0xfU & 0xfffffffffffffff0; + local_6c0 = local_6e0 * (long)iVar30; + local_6e8 = (long)iVar13 * uVar26; + uVar27 = local_6c8 + 0x20 + local_6c0 + local_6e8; + local_410 = 0x408; + if (uVar27 < 0x409) goto LAB_002b49d0; + local_418 = operator_new__(uVar27); + local_6b8 = local_6e0; + local_410 = uVar27; + } + local_6d0 = (long)iVar13; + lVar33 = (long)iVar30; + uVar3 = uVar14 & 7; + uVar25 = uVar2 + 0x42ff0000; + uVar29 = (ulong)(local_418 + 0xf) & 0xfffffffffffffff0; + local_4f8 = &local_530; + local_4f0 = &local_4e8; + uVar22 = 0x88442211UL >> (uVar3 << 2) & 0xf; + uVar28 = (ulong)(int)((uVar14 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> (uVar3 << 1)) & 3)); + local_534 = 2; + local_518 = 0; + local_510 = 0; + local_508 = 0; + local_500 = 0; + local_4e0 = 0; + local_4e8 = 0; + uVar27 = (long)iVar31 * uVar28; + lVar23 = lVar33; + local_710 = uVar27; + local_530 = iVar30; + local_52c = iVar31; + local_528 = uVar29; + local_520 = uVar29; + if (uVar26 == 0) { + local_538 = uVar25 | 0x4000; + local_518 = 0; + } + else { + local_538 = uVar25; + if (iVar30 == 1) { + uVar24 = 0; + if (uVar22 != 0) { + uVar24 = uVar27 / uVar22; + } + if (uVar27 - uVar24 * uVar22 != 0) goto LAB_002b4dc4; +LAB_002b4e6c: + local_518 = 0; + uVar14 = 0x4000; + local_710 = uVar27; + } + else { + uVar24 = 0; + if (uVar22 != 0) { + uVar24 = uVar26 / uVar22; + } + local_710 = uVar26; + if (uVar26 != uVar24 * uVar22) { +LAB_002b4dc4: + local_698 = 0; + local_690 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_698,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar9; + *(undefined2 *)(pcVar17 + 0x1c) = uVar10; + pcVar17[0x1e] = cVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + cv::error(-0xd,(String *)&local_698,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp" + ,0x19d); + cv::String::deallocate((String *)&local_698); + lVar23 = (long)local_530; + } + if (uVar27 - local_710 == 0) goto LAB_002b4e6c; + local_518 = uVar27 - local_710; + uVar14 = 0; + } + local_538 = local_538 | uVar14; + } + local_6f4 = uVar25 | 0x4000; + local_510 = local_520 + lVar23 * local_710; + *local_4f0 = local_710; + local_4f0[1] = uVar28; + local_518 = local_510 + local_518; + local_498 = &local_4d0; + uVar24 = lVar33 * uVar28; + local_4c8 = uVar29 + local_6e8; + local_4cc = 1; + local_4b8 = local_4c8 + uVar24; + local_490 = &local_488; + local_438 = &local_470; + local_430 = &local_428; + local_4d4 = 2; + local_4a8 = 0; + local_4a0 = 0; + local_4d8 = local_6f4; + local_474 = 2; + local_458 = 0; + local_450 = 0; + local_448 = 0; + local_440 = 0; + local_420 = 0; + local_428 = 0; + local_4d0 = iVar30; + local_4c0 = local_4c8; + local_4b0 = local_4b8; + local_488 = uVar28; + local_480 = uVar28; + local_470 = iVar13; + local_46c = iVar31; + local_468 = uVar29; + local_460 = uVar29; + if (uVar26 == 0) { + local_478 = local_6f4; + local_450 = uVar29 + uVar27 * local_6d0; + local_458 = 0; + } + else { + local_478 = uVar25; + if (iVar13 == 1) { + uVar5 = 0; + if (uVar22 != 0) { + uVar5 = uVar27 / uVar22; + } + uVar26 = uVar27; + if (uVar27 - uVar5 * uVar22 != 0) goto LAB_002b4ebc; + local_450 = uVar29 + uVar27; + local_478 = local_6f4; + } + else { + uVar5 = 0; + if (uVar22 != 0) { + uVar5 = uVar26 / uVar22; + } + lVar23 = local_4c8; + if (uVar26 != uVar5 * uVar22) { +LAB_002b4ebc: + local_688 = 0; + local_680 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_688,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar9; + *(undefined2 *)(pcVar17 + 0x1c) = uVar10; + pcVar17[0x1e] = cVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + cv::error(-0xd,(String *)&local_688,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp" + ,0x19d); + cv::String::deallocate((String *)&local_688); + lVar23 = local_460 + uVar26 * (long)local_470; + } + local_450 = lVar23; + if (uVar27 - uVar26 != 0) { + local_458 = uVar27 - uVar26; + uVar27 = uVar26; + goto LAB_002b4528; + } + local_478 = local_478 | 0x4000; + } + local_458 = 0; + } +LAB_002b4528: + *local_430 = uVar27; + local_430[1] = uVar28; + local_458 = local_450 + local_458; + local_660 = 0x42ff0000; + local_620 = &local_658; + local_618 = local_610; + local_65c = 0; + local_658 = 0; + local_654 = 0; + local_650 = 0; + uStack_648 = 0; + local_640 = 0; + lStack_638 = 0; + local_630 = 0; + lStack_628 = 0; + local_610[1] = 0; + local_610[0] = 0; + if (uVar16 == 0) goto LAB_002b4590; + local_5b8 = &local_5b0; + local_5c0 = &local_5f8; + local_5f0 = uVar29 + local_6e8 + local_6c8 + 0xf & 0xfffffffffffffff0; + local_600._4_4_ = 2; + local_5f8 = (Mat *)CONCAT44(iVar30,iVar30); + local_5e0 = 0; + lStack_5d8 = 0; + local_5d0 = 0; + lStack_5c8 = 0; + local_5a8 = 0; + local_5b0 = 0; + uStack_5e8 = local_5f0; + if (local_6b8 == 0) { + local_5e0 = local_5f0 + uVar24 * lVar33; + local_600 = CONCAT44(2,local_6f4); + lStack_5d8 = local_5e0; + local_5b0 = uVar24; + local_5a8 = uVar28; + } + else { + if (iVar30 == 1) { + uVar27 = 0; + if (uVar22 != 0) { + uVar27 = uVar24 / uVar22; + } + local_600._0_4_ = local_6f4; + local_6c0 = uVar24; + local_6b8 = uVar24; + if (uVar24 - uVar27 * uVar22 != 0) goto LAB_002b4fe0; +LAB_002b5090: + local_5e0 = 0; + local_6b8 = uVar24; + } + else { + uVar27 = 0; + if (uVar22 != 0) { + uVar27 = local_6b8 / uVar22; + } + local_600._0_4_ = uVar25; + if (local_6b8 != uVar27 * uVar22) { +LAB_002b4fe0: + local_678 = 0; + local_670 = (Mat *)0x0; + local_600._0_4_ = uVar25; + pcVar17 = (char *)cv::String::allocate((String *)&local_678,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar9; + *(undefined2 *)(pcVar17 + 0x1c) = uVar10; + pcVar17[0x1e] = cVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + cv::error(-0xd,(String *)&local_678,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp" + ,0x19d); + cv::String::deallocate((String *)&local_678); + local_6c0 = local_6b8 * (long)(int)local_5f8; + } + if (uVar24 == local_6b8) { + local_600._0_4_ = (uint)local_600 | 0x4000; + goto LAB_002b5090; + } + local_5e0 = uVar24 - local_6b8; + } + lStack_5d8 = uStack_5e8 + local_6c0; + *local_5b8 = local_6b8; + local_5e0 = lStack_5d8 + local_5e0; + local_5b8[1] = uVar28; + piVar19 = (int *)(lStack_5c8 + 0x14); + if (lStack_5c8 != 0) { + do { + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = *piVar19 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + } + if (lStack_628 != 0) { + piVar19 = (int *)(lStack_628 + 0x14); + do { + iVar15 = *piVar19; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = iVar15 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_660); + } + } + puVar11 = local_5b8; + lStack_628 = 0; + local_650 = 0; + lStack_638 = 0; + local_640 = 0; + uStack_648 = 0; + if (local_65c < 1) { +LAB_002b4c24: + local_660 = (uint)local_600; + if (2 < local_600._4_4_) goto LAB_002b4ea8; + local_654 = local_5f8._4_4_; + local_658 = (int)local_5f8; + local_65c = local_600._4_4_; + *local_618 = *local_5b8; + local_618[1] = puVar11[1]; + } + else { + iVar15 = 0; + puVar18 = local_620; + do { + *puVar18 = 0; + iVar15 = iVar15 + 1; + puVar18 = puVar18 + 1; + } while (iVar15 < local_65c); + if (local_65c < 3) goto LAB_002b4c24; +LAB_002b4ea8: + local_660 = (uint)local_600; + cv::Mat::copySize((Mat *)&local_660,(Mat *)&local_600); + } + lStack_638 = lStack_5d8; + local_640 = local_5e0; + lStack_628 = lStack_5c8; + local_630 = local_5d0; + uStack_648 = uStack_5e8; + local_650 = local_5f0; + if (lStack_5c8 != 0) { + piVar19 = (int *)(lStack_5c8 + 0x14); + do { + iVar15 = *piVar19; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = iVar15 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar15 == 1) { + cv::Mat::deallocate((Mat *)&local_600); + } + } + lStack_5c8 = 0; + local_5f0 = 0; + lStack_5d8 = 0; + local_5e0 = 0; + uStack_5e8 = 0; + if (0 < local_600._4_4_) { + iVar15 = 0; + puVar21 = local_5c0; + do { + *(undefined4 *)puVar21 = 0; + iVar15 = iVar15 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar15 < local_600._4_4_); + } + if (local_5b8 != &local_5b0) { + cv::fastFree(local_5b8); + } +LAB_002b4590: + if (iVar30 < iVar13) { + local_5f8 = (Mat *)0x0; + local_600 = 0; + uStack_5e8 = 0; + local_5f0 = 0; + cv::Mat::operator=((Mat *)&local_478,(Scalar_ *)&local_600); + } + local_5f8 = (Mat *)&local_538; + if (uVar32 == 0) { + local_5f0 = (ulong)bVar1 << 0x20; + local_600 = CONCAT44(local_600._4_4_,0x2010000); + local_678 = CONCAT44(local_678._4_4_,0x1010000); + local_670 = (Mat *)&local_598; + local_668 = uVar32; + local_664 = uVar32; + cv::transpose((_InputArray *)&local_678,(_OutputArray *)&local_600); + } + else { + local_5f0 = 0; + local_600 = CONCAT44(local_600._4_4_,0x2010000); + cv::Mat::copyTo((Mat *)&local_598,(_OutputArray *)&local_600); + } + if (uVar2 == 5) { + iVar15 = 0; + if (((uVar16 != 0) && (local_650 != 0)) && (iVar15 = iVar30, -1 < iVar13)) { + iVar15 = iVar13; + } + FUN_002af238(DAT_002b5210,DAT_002b5218,local_528,local_428,local_4c8,local_650,local_610[0], + iVar31,iVar30,iVar15); + } + else { + FUN_002b0688(DAT_002b5220,DAT_002b5228); + } + cv::Mat::copyTo((Mat *)&local_4d8,param_2); + if (uVar16 != 0) { + if (uVar32 == 0) { + cVar12 = cv::_OutputArray::needed(param_3); + if (cVar12 != '\0') { + local_5f0 = 0; + local_600 = CONCAT44(local_600._4_4_,0x1010000); + local_5f8 = (Mat *)&local_478; + cv::transpose((_InputArray *)&local_600,param_3); + } + cVar12 = cv::_OutputArray::needed(param_4); + if (cVar12 != '\0') { + cv::Mat::copyTo((Mat *)&local_660,param_4); + } + } + else { + cVar12 = cv::_OutputArray::needed(param_3); + if (cVar12 != '\0') { + local_5f0 = 0; + local_600 = CONCAT44(local_600._4_4_,0x1010000); + local_5f8 = (Mat *)&local_660; + cv::transpose((_InputArray *)&local_600,param_3); + } + cVar12 = cv::_OutputArray::needed(param_4); + if (cVar12 != '\0') { + cv::Mat::copyTo((Mat *)&local_478,param_4); + } + } + } + if (lStack_628 != 0) { + piVar19 = (int *)(lStack_628 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_660); + } + } + lStack_628 = 0; + local_650 = 0; + lStack_638 = 0; + local_640 = 0; + uStack_648 = 0; + if (0 < local_65c) { + iVar13 = 0; + puVar18 = local_620; + do { + *puVar18 = 0; + iVar13 = iVar13 + 1; + puVar18 = puVar18 + 1; + } while (iVar13 < local_65c); + } + if (local_618 != local_610) { + cv::fastFree(local_618); + } + if (local_440 != 0) { + piVar19 = (int *)(local_440 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_478); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar13 = 0; + piVar19 = local_438; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < local_474); + } + if (local_430 != &local_428) { + cv::fastFree(local_430); + } + if (local_4a0 != 0) { + piVar19 = (int *)(local_4a0 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_4d8); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar13 = 0; + piVar19 = local_498; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < local_4d4); + } + if (local_490 != &local_488) { + cv::fastFree(local_490); + } + if (local_500 != 0) { + piVar19 = (int *)(local_500 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_538); + } + } + local_500 = 0; + local_528 = 0; + local_510 = 0; + local_518 = 0; + local_520 = 0; + if (0 < local_534) { + iVar13 = 0; + piVar19 = local_4f8; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < local_534); + } + if (local_4f0 != &local_4e8) { + cv::fastFree(local_4f0); + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + if (local_560 != 0) { + piVar19 = (int *)(local_560 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_598); + } + } + local_560 = 0; + local_588 = 0; + local_570 = 0; + local_578 = 0; + local_580 = 0; + if (0 < local_594) { + iVar13 = 0; + piVar19 = local_558; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < local_594); + } + if (local_550 != &local_548) { + cv::fastFree(local_550); + } + return; +} + + +================================================================== + +### FUNC 002b5230 (4 bytes) name=compute + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::SVD::compute(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, + cv::_OutputArray const&, int) */ + +void cv::SVD::compute(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,int param_5) + +{ + bool bVar1; + uint uVar2; + uint uVar3; + bool bVar4; + ulong uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + undefined2 uVar10; + ulong *puVar11; + char cVar12; + int iVar13; + uint uVar14; + int iVar15; + uint uVar16; + char *pcVar17; + undefined4 *puVar18; + int *piVar19; + Mat *pMVar20; + undefined8 *puVar21; + ulong uVar22; + long lVar23; + ulong uVar24; + uint uVar25; + ulong uVar26; + ulong uVar27; + ulong uVar28; + ulong uVar29; + int iVar30; + int iVar31; + uint uVar32; + long lVar33; + ulong uStack_710; + uint uStack_6f4; + long lStack_6e8; + ulong uStack_6e0; + long lStack_6d0; + long lStack_6c8; + ulong uStack_6c0; + ulong uStack_6b8; + undefined8 uStack_6a8; + undefined8 uStack_6a0; + undefined8 uStack_698; + undefined8 uStack_690; + undefined8 uStack_688; + undefined8 uStack_680; + undefined8 uStack_678; + Mat *pMStack_670; + uint uStack_668; + uint uStack_664; + undefined4 uStack_660; + int iStack_65c; + undefined4 uStack_658; + undefined4 uStack_654; + ulong uStack_650; + ulong uStack_648; + long lStack_640; + long lStack_638; + undefined8 uStack_630; + long lStack_628; + undefined4 *puStack_620; + ulong *puStack_618; + ulong auStack_610 [2]; + undefined8 uStack_600; + undefined8 uStack_5f8; + ulong uStack_5f0; + ulong uStack_5e8; + long lStack_5e0; + long lStack_5d8; + undefined8 uStack_5d0; + long lStack_5c8; + undefined8 *puStack_5c0; + ulong *puStack_5b8; + ulong uStack_5b0; + ulong uStack_5a8; + uint uStack_598; + int iStack_594; + int iStack_590; + int iStack_58c; + undefined8 uStack_588; + undefined8 uStack_580; + undefined8 uStack_578; + undefined8 uStack_570; + undefined8 uStack_568; + long lStack_560; + int *piStack_558; + undefined8 *puStack_550; + undefined8 uStack_548; + undefined8 uStack_540; + uint uStack_538; + int iStack_534; + int iStack_530; + int iStack_52c; + ulong uStack_528; + ulong uStack_520; + long lStack_518; + long lStack_510; + undefined8 uStack_508; + long lStack_500; + int *piStack_4f8; + ulong *puStack_4f0; + ulong uStack_4e8; + undefined8 uStack_4e0; + uint uStack_4d8; + int iStack_4d4; + int iStack_4d0; + undefined4 uStack_4cc; + long lStack_4c8; + long lStack_4c0; + long lStack_4b8; + long lStack_4b0; + undefined8 uStack_4a8; + long lStack_4a0; + int *piStack_498; + ulong *puStack_490; + ulong uStack_488; + ulong uStack_480; + uint uStack_478; + int iStack_474; + int iStack_470; + int iStack_46c; + ulong uStack_468; + ulong uStack_460; + long lStack_458; + long lStack_450; + undefined8 uStack_448; + long lStack_440; + int *piStack_438; + ulong *puStack_430; + ulong uStack_428; + undefined8 uStack_420; + undefined1 *puStack_418; + ulong uStack_410; + undefined1 auStack_408 [1032]; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar20 = *(Mat **)(param_1 + 8); + piStack_558 = &iStack_590; + puStack_550 = &uStack_548; + uStack_598 = *(uint *)pMVar20; + iStack_594 = *(int *)(pMVar20 + 4); + iStack_590 = *(int *)(pMVar20 + 8); + iStack_58c = *(int *)(pMVar20 + 0xc); + uStack_588 = *(undefined8 *)(pMVar20 + 0x10); + uStack_580 = *(undefined8 *)(pMVar20 + 0x18); + uStack_578 = *(undefined8 *)(pMVar20 + 0x20); + uStack_570 = *(undefined8 *)(pMVar20 + 0x28); + uStack_568 = *(undefined8 *)(pMVar20 + 0x30); + lStack_560 = *(long *)(pMVar20 + 0x38); + uStack_540 = 0; + uStack_548 = 0; + if (lStack_560 != 0) { + piVar19 = (int *)(lStack_560 + 0x14); + do { + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = *piVar19 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + if (*(int *)(pMVar20 + 4) < 3) { + uStack_548 = **(undefined8 **)(pMVar20 + 0x48); + uStack_540 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + iStack_594 = 0; + Mat::copySize((Mat *)&uStack_598,pMVar20); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar30 = iStack_58c; + iVar13 = iStack_590; + uVar14 = uStack_598; + uVar2 = uStack_598 & 0xfff; + cVar12 = _OutputArray::needed(param_3); + uVar16 = 1; + if (cVar12 == '\0') { + uVar16 = _OutputArray::needed(param_4); + uVar16 = uVar16 & 0xff; + } + if (1 < uVar2 - 5) { + uStack_6a8 = 0; + uStack_6a0 = 0; + pcVar17 = (char *)String::allocate((String *)&uStack_6a8,0x20); + uVar8 = s_type____CV_32F____type____CV_64F_00467cc8._24_8_; + uVar7 = s_type____CV_32F____type____CV_64F_00467cc8._16_8_; + uVar6 = s_type____CV_32F____type____CV_64F_00467cc8._8_8_; + *(undefined8 *)pcVar17 = s_type____CV_32F____type____CV_64F_00467cc8._0_8_; + *(undefined8 *)(pcVar17 + 8) = uVar6; + *(undefined8 *)(pcVar17 + 0x10) = uVar7; + *(undefined8 *)(pcVar17 + 0x18) = uVar8; + error(-0xd7,(String *)&uStack_6a8, + "void cv::_SVDcompute(cv::InputArray, cv::OutputArray, cv::OutputArray, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x558); + String::deallocate((String *)&uStack_6a8); + } + if (((uint)param_5 >> 1 & 1) == 0) { + uVar25 = (uint)param_5 >> 2 & 1; + } + else { + _OutputArray::release(param_3); + _OutputArray::release(param_4); + uVar16 = 0; + uVar25 = uVar16; + } + bVar1 = iVar13 < iVar30; + iVar31 = iVar13; + if (bVar1) { + iVar31 = iVar30; + iVar30 = iVar13; + } + uVar32 = (uint)bVar1; + iVar13 = iVar31; + if (uVar25 == 0) { + iVar13 = iVar30; + } + if (iStack_594 < 1) { + uStack_6e0 = 0; + uVar26 = 0; + uVar27 = 0x20; + uStack_6c0 = 0; + lStack_6e8 = 0; + lStack_6c8 = 0; +LAB_002b49d0: + puStack_418 = auStack_408; + uStack_6b8 = uStack_6e0; + uStack_410 = uVar27; + } + else { + lStack_6c8 = (long)iVar30 * puStack_550[(long)iStack_594 + -1]; + uStack_6e0 = lStack_6c8 + 0xfU & 0xfffffffffffffff0; + puStack_418 = auStack_408; + uVar26 = (long)iVar31 * puStack_550[(long)iStack_594 + -1] + 0xfU & 0xfffffffffffffff0; + uStack_6c0 = uStack_6e0 * (long)iVar30; + lStack_6e8 = (long)iVar13 * uVar26; + uVar27 = lStack_6c8 + 0x20 + uStack_6c0 + lStack_6e8; + uStack_410 = 0x408; + if (uVar27 < 0x409) goto LAB_002b49d0; + puStack_418 = operator_new__(uVar27); + uStack_6b8 = uStack_6e0; + uStack_410 = uVar27; + } + lStack_6d0 = (long)iVar13; + lVar33 = (long)iVar30; + uVar3 = uVar14 & 7; + uVar25 = uVar2 + 0x42ff0000; + uVar29 = (ulong)(puStack_418 + 0xf) & 0xfffffffffffffff0; + piStack_4f8 = &iStack_530; + puStack_4f0 = &uStack_4e8; + uVar22 = 0x88442211UL >> (uVar3 << 2) & 0xf; + uVar28 = (ulong)(int)((uVar14 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> (uVar3 << 1)) & 3)); + iStack_534 = 2; + lStack_518 = 0; + lStack_510 = 0; + uStack_508 = 0; + lStack_500 = 0; + uStack_4e0 = 0; + uStack_4e8 = 0; + uVar27 = (long)iVar31 * uVar28; + lVar23 = lVar33; + uStack_710 = uVar27; + iStack_530 = iVar30; + iStack_52c = iVar31; + uStack_528 = uVar29; + uStack_520 = uVar29; + if (uVar26 == 0) { + uStack_538 = uVar25 | 0x4000; + lStack_518 = 0; + } + else { + uStack_538 = uVar25; + if (iVar30 == 1) { + uVar24 = 0; + if (uVar22 != 0) { + uVar24 = uVar27 / uVar22; + } + if (uVar27 - uVar24 * uVar22 != 0) goto LAB_002b4dc4; +LAB_002b4e6c: + lStack_518 = 0; + uVar14 = 0x4000; + uStack_710 = uVar27; + } + else { + uVar24 = 0; + if (uVar22 != 0) { + uVar24 = uVar26 / uVar22; + } + uStack_710 = uVar26; + if (uVar26 != uVar24 * uVar22) { +LAB_002b4dc4: + uStack_698 = 0; + uStack_690 = 0; + pcVar17 = (char *)String::allocate((String *)&uStack_698,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar9; + *(undefined2 *)(pcVar17 + 0x1c) = uVar10; + pcVar17[0x1e] = cVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + error(-0xd,(String *)&uStack_698,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)&uStack_698); + lVar23 = (long)iStack_530; + } + if (uVar27 - uStack_710 == 0) goto LAB_002b4e6c; + lStack_518 = uVar27 - uStack_710; + uVar14 = 0; + } + uStack_538 = uStack_538 | uVar14; + } + uStack_6f4 = uVar25 | 0x4000; + lStack_510 = uStack_520 + lVar23 * uStack_710; + *puStack_4f0 = uStack_710; + puStack_4f0[1] = uVar28; + lStack_518 = lStack_510 + lStack_518; + piStack_498 = &iStack_4d0; + uVar24 = lVar33 * uVar28; + lStack_4c8 = uVar29 + lStack_6e8; + uStack_4cc = 1; + lStack_4b8 = lStack_4c8 + uVar24; + puStack_490 = &uStack_488; + piStack_438 = &iStack_470; + puStack_430 = &uStack_428; + iStack_4d4 = 2; + uStack_4a8 = 0; + lStack_4a0 = 0; + uStack_4d8 = uStack_6f4; + iStack_474 = 2; + lStack_458 = 0; + lStack_450 = 0; + uStack_448 = 0; + lStack_440 = 0; + uStack_420 = 0; + uStack_428 = 0; + iStack_4d0 = iVar30; + lStack_4c0 = lStack_4c8; + lStack_4b0 = lStack_4b8; + uStack_488 = uVar28; + uStack_480 = uVar28; + iStack_470 = iVar13; + iStack_46c = iVar31; + uStack_468 = uVar29; + uStack_460 = uVar29; + if (uVar26 == 0) { + uStack_478 = uStack_6f4; + lStack_450 = uVar29 + uVar27 * lStack_6d0; + lStack_458 = 0; + } + else { + uStack_478 = uVar25; + if (iVar13 == 1) { + uVar5 = 0; + if (uVar22 != 0) { + uVar5 = uVar27 / uVar22; + } + uVar26 = uVar27; + if (uVar27 - uVar5 * uVar22 != 0) goto LAB_002b4ebc; + lStack_450 = uVar29 + uVar27; + uStack_478 = uStack_6f4; + } + else { + uVar5 = 0; + if (uVar22 != 0) { + uVar5 = uVar26 / uVar22; + } + lVar23 = lStack_4c8; + if (uVar26 != uVar5 * uVar22) { +LAB_002b4ebc: + uStack_688 = 0; + uStack_680 = 0; + pcVar17 = (char *)String::allocate((String *)&uStack_688,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar9; + *(undefined2 *)(pcVar17 + 0x1c) = uVar10; + pcVar17[0x1e] = cVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + error(-0xd,(String *)&uStack_688,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)&uStack_688); + lVar23 = uStack_460 + uVar26 * (long)iStack_470; + } + lStack_450 = lVar23; + if (uVar27 - uVar26 != 0) { + lStack_458 = uVar27 - uVar26; + uVar27 = uVar26; + goto LAB_002b4528; + } + uStack_478 = uStack_478 | 0x4000; + } + lStack_458 = 0; + } +LAB_002b4528: + *puStack_430 = uVar27; + puStack_430[1] = uVar28; + lStack_458 = lStack_450 + lStack_458; + uStack_660 = 0x42ff0000; + puStack_620 = &uStack_658; + puStack_618 = auStack_610; + iStack_65c = 0; + uStack_658 = 0; + uStack_654 = 0; + uStack_650 = 0; + uStack_648 = 0; + lStack_640 = 0; + lStack_638 = 0; + uStack_630 = 0; + lStack_628 = 0; + auStack_610[1] = 0; + auStack_610[0] = 0; + if (uVar16 == 0) goto LAB_002b4590; + puStack_5b8 = &uStack_5b0; + puStack_5c0 = &uStack_5f8; + uStack_5f0 = uVar29 + lStack_6e8 + lStack_6c8 + 0xf & 0xfffffffffffffff0; + uStack_600._4_4_ = 2; + uStack_5f8 = (Mat *)CONCAT44(iVar30,iVar30); + lStack_5e0 = 0; + lStack_5d8 = 0; + uStack_5d0 = 0; + lStack_5c8 = 0; + uStack_5a8 = 0; + uStack_5b0 = 0; + uStack_5e8 = uStack_5f0; + if (uStack_6b8 == 0) { + lStack_5e0 = uStack_5f0 + uVar24 * lVar33; + uStack_600 = CONCAT44(2,uStack_6f4); + lStack_5d8 = lStack_5e0; + uStack_5b0 = uVar24; + uStack_5a8 = uVar28; + } + else { + if (iVar30 == 1) { + uVar27 = 0; + if (uVar22 != 0) { + uVar27 = uVar24 / uVar22; + } + uStack_600._0_4_ = uStack_6f4; + uStack_6c0 = uVar24; + uStack_6b8 = uVar24; + if (uVar24 - uVar27 * uVar22 != 0) goto LAB_002b4fe0; +LAB_002b5090: + lStack_5e0 = 0; + uStack_6b8 = uVar24; + } + else { + uVar27 = 0; + if (uVar22 != 0) { + uVar27 = uStack_6b8 / uVar22; + } + uStack_600._0_4_ = uVar25; + if (uStack_6b8 != uVar27 * uVar22) { +LAB_002b4fe0: + uStack_678 = 0; + pMStack_670 = (Mat *)0x0; + uStack_600._0_4_ = uVar25; + pcVar17 = (char *)String::allocate((String *)&uStack_678,0x1f); + cVar12 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar9; + *(undefined2 *)(pcVar17 + 0x1c) = uVar10; + pcVar17[0x1e] = cVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + error(-0xd,(String *)&uStack_678,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)&uStack_678); + uStack_6c0 = uStack_6b8 * (long)(int)uStack_5f8; + } + if (uVar24 == uStack_6b8) { + uStack_600._0_4_ = (uint)uStack_600 | 0x4000; + goto LAB_002b5090; + } + lStack_5e0 = uVar24 - uStack_6b8; + } + lStack_5d8 = uStack_5e8 + uStack_6c0; + *puStack_5b8 = uStack_6b8; + lStack_5e0 = lStack_5d8 + lStack_5e0; + puStack_5b8[1] = uVar28; + piVar19 = (int *)(lStack_5c8 + 0x14); + if (lStack_5c8 != 0) { + do { + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = *piVar19 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + } + if (lStack_628 != 0) { + piVar19 = (int *)(lStack_628 + 0x14); + do { + iVar15 = *piVar19; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = iVar15 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&uStack_660); + } + } + puVar11 = puStack_5b8; + lStack_628 = 0; + uStack_650 = 0; + lStack_638 = 0; + lStack_640 = 0; + uStack_648 = 0; + if (iStack_65c < 1) { +LAB_002b4c24: + uStack_660 = (uint)uStack_600; + if (2 < uStack_600._4_4_) goto LAB_002b4ea8; + uStack_654 = uStack_5f8._4_4_; + uStack_658 = (int)uStack_5f8; + iStack_65c = uStack_600._4_4_; + *puStack_618 = *puStack_5b8; + puStack_618[1] = puVar11[1]; + } + else { + iVar15 = 0; + puVar18 = puStack_620; + do { + *puVar18 = 0; + iVar15 = iVar15 + 1; + puVar18 = puVar18 + 1; + } while (iVar15 < iStack_65c); + if (iStack_65c < 3) goto LAB_002b4c24; +LAB_002b4ea8: + uStack_660 = (uint)uStack_600; + Mat::copySize((Mat *)&uStack_660,(Mat *)&uStack_600); + } + lStack_638 = lStack_5d8; + lStack_640 = lStack_5e0; + lStack_628 = lStack_5c8; + uStack_630 = uStack_5d0; + uStack_648 = uStack_5e8; + uStack_650 = uStack_5f0; + if (lStack_5c8 != 0) { + piVar19 = (int *)(lStack_5c8 + 0x14); + do { + iVar15 = *piVar19; + cVar12 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar4) { + *piVar19 = iVar15 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&uStack_600); + } + } + lStack_5c8 = 0; + uStack_5f0 = 0; + lStack_5d8 = 0; + lStack_5e0 = 0; + uStack_5e8 = 0; + if (0 < uStack_600._4_4_) { + iVar15 = 0; + puVar21 = puStack_5c0; + do { + *(undefined4 *)puVar21 = 0; + iVar15 = iVar15 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar15 < uStack_600._4_4_); + } + if (puStack_5b8 != &uStack_5b0) { + fastFree(puStack_5b8); + } +LAB_002b4590: + if (iVar30 < iVar13) { + uStack_5f8 = (Mat *)0x0; + uStack_600 = 0; + uStack_5e8 = 0; + uStack_5f0 = 0; + Mat::operator=((Mat *)&uStack_478,(Scalar_ *)&uStack_600); + } + uStack_5f8 = (Mat *)&uStack_538; + if (uVar32 == 0) { + uStack_5f0 = (ulong)bVar1 << 0x20; + uStack_600 = CONCAT44(uStack_600._4_4_,0x2010000); + uStack_678 = CONCAT44(uStack_678._4_4_,0x1010000); + pMStack_670 = (Mat *)&uStack_598; + uStack_668 = uVar32; + uStack_664 = uVar32; + transpose((_InputArray *)&uStack_678,(_OutputArray *)&uStack_600); + } + else { + uStack_5f0 = 0; + uStack_600 = CONCAT44(uStack_600._4_4_,0x2010000); + Mat::copyTo((Mat *)&uStack_598,(_OutputArray *)&uStack_600); + } + if (uVar2 == 5) { + iVar15 = 0; + if (((uVar16 != 0) && (uStack_650 != 0)) && (iVar15 = iVar30, -1 < iVar13)) { + iVar15 = iVar13; + } + FUN_002af238(DAT_002b5210,DAT_002b5218,uStack_528,uStack_428,lStack_4c8,uStack_650, + auStack_610[0],iVar31,iVar30,iVar15); + } + else { + FUN_002b0688(DAT_002b5220,DAT_002b5228); + } + Mat::copyTo((Mat *)&uStack_4d8,param_2); + if (uVar16 != 0) { + if (uVar32 == 0) { + cVar12 = _OutputArray::needed(param_3); + if (cVar12 != '\0') { + uStack_5f0 = 0; + uStack_600 = CONCAT44(uStack_600._4_4_,0x1010000); + uStack_5f8 = (Mat *)&uStack_478; + transpose((_InputArray *)&uStack_600,param_3); + } + cVar12 = _OutputArray::needed(param_4); + if (cVar12 != '\0') { + Mat::copyTo((Mat *)&uStack_660,param_4); + } + } + else { + cVar12 = _OutputArray::needed(param_3); + if (cVar12 != '\0') { + uStack_5f0 = 0; + uStack_600 = CONCAT44(uStack_600._4_4_,0x1010000); + uStack_5f8 = (Mat *)&uStack_660; + transpose((_InputArray *)&uStack_600,param_3); + } + cVar12 = _OutputArray::needed(param_4); + if (cVar12 != '\0') { + Mat::copyTo((Mat *)&uStack_478,param_4); + } + } + } + if (lStack_628 != 0) { + piVar19 = (int *)(lStack_628 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&uStack_660); + } + } + lStack_628 = 0; + uStack_650 = 0; + lStack_638 = 0; + lStack_640 = 0; + uStack_648 = 0; + if (0 < iStack_65c) { + iVar13 = 0; + puVar18 = puStack_620; + do { + *puVar18 = 0; + iVar13 = iVar13 + 1; + puVar18 = puVar18 + 1; + } while (iVar13 < iStack_65c); + } + if (puStack_618 != auStack_610) { + fastFree(puStack_618); + } + if (lStack_440 != 0) { + piVar19 = (int *)(lStack_440 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&uStack_478); + } + } + lStack_440 = 0; + uStack_468 = 0; + lStack_450 = 0; + lStack_458 = 0; + uStack_460 = 0; + if (0 < iStack_474) { + iVar13 = 0; + piVar19 = piStack_438; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < iStack_474); + } + if (puStack_430 != &uStack_428) { + fastFree(puStack_430); + } + if (lStack_4a0 != 0) { + piVar19 = (int *)(lStack_4a0 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&uStack_4d8); + } + } + lStack_4a0 = 0; + lStack_4c8 = 0; + lStack_4b0 = 0; + lStack_4b8 = 0; + lStack_4c0 = 0; + if (0 < iStack_4d4) { + iVar13 = 0; + piVar19 = piStack_498; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < iStack_4d4); + } + if (puStack_490 != &uStack_488) { + fastFree(puStack_490); + } + if (lStack_500 != 0) { + piVar19 = (int *)(lStack_500 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&uStack_538); + } + } + lStack_500 = 0; + uStack_528 = 0; + lStack_510 = 0; + lStack_518 = 0; + uStack_520 = 0; + if (0 < iStack_534) { + iVar13 = 0; + piVar19 = piStack_4f8; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < iStack_534); + } + if (puStack_4f0 != &uStack_4e8) { + fastFree(puStack_4f0); + } + if ((puStack_418 != auStack_408) && (puStack_418 != (undefined1 *)0x0)) { + operator_delete__(puStack_418); + } + if (lStack_560 != 0) { + piVar19 = (int *)(lStack_560 + 0x14); + do { + iVar13 = *piVar19; + cVar12 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar19,0x10); + if (bVar1) { + *piVar19 = iVar13 + -1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&uStack_598); + } + } + lStack_560 = 0; + uStack_588 = 0; + uStack_570 = 0; + uStack_578 = 0; + uStack_580 = 0; + if (0 < iStack_594) { + iVar13 = 0; + piVar19 = piStack_558; + do { + *piVar19 = 0; + iVar13 = iVar13 + 1; + piVar19 = piVar19 + 1; + } while (iVar13 < iStack_594); + } + if (puStack_550 != &uStack_548) { + fastFree(puStack_550); + } + return; +} + + +================================================================== + +### FUNC 002b5240 (5404 bytes) name=invert + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::invert(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +undefined1 [16] cv::invert(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + uint uVar1; + int iVar2; + char cVar3; + bool bVar4; + float fVar5; + float fVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + undefined8 uVar11; + undefined8 uVar12; + uint uVar13; + int iVar14; + byte bVar15; + int iVar16; + int iVar17; + char *pcVar18; + long lVar19; + undefined4 *puVar20; + undefined8 *puVar21; + Mat *pMVar22; + Mat **ppMVar23; + int *piVar24; + ulong uVar25; + float fVar26; + float fVar27; + undefined1 auVar28 [16]; + float fVar29; + float fVar30; + float fVar31; + double dVar32; + float fVar33; + double dVar34; + float fVar35; + double dVar36; + float fVar37; + double dVar38; + double dVar39; + float fVar40; + double dVar41; + double dVar42; + double dVar43; + double dVar44; + double dVar45; + float fVar46; + double dVar47; + double dVar48; + undefined4 local_6a8 [2]; + Mat *local_6a0; + undefined4 local_698; + undefined4 local_694; + undefined8 local_690; + Mat *local_688; + undefined4 local_680; + undefined4 local_67c; + undefined8 local_678; + Mat *local_670; + undefined4 local_668; + undefined4 local_664; + undefined8 local_660; + Mat *pMStack_658; + undefined8 local_650; + undefined8 local_648; + undefined8 local_640; + undefined8 local_638; + undefined8 local_630; + long local_628; + Mat **local_620; + undefined8 *local_618; + undefined8 local_610; + undefined8 uStack_608; + undefined8 local_600; + Mat *pMStack_5f8; + undefined8 local_5f0; + undefined8 local_5e8; + undefined8 local_5e0; + undefined8 local_5d8; + undefined8 local_5d0; + long local_5c8; + Mat **local_5c0; + undefined8 *local_5b8; + undefined8 local_5b0; + undefined8 uStack_5a8; + uint local_5a0; + int local_59c; + int local_598; + int local_594; + double *local_590; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + long local_568; + int *local_560; + long *local_558; + long local_550; + long local_548; + undefined8 local_540; + undefined8 local_538; + ulong local_530; + ulong uStack_528; + long local_520; + long local_518; + undefined8 local_510; + long local_508; + undefined8 *local_500; + long *local_4f8; + long local_4f0; + long local_4e8; + uint local_4e0; + int local_4dc; + int local_4d8; + undefined4 local_4d4; + double *local_4d0; + double *local_4c8; + double *local_4c0; + double *local_4b8; + undefined8 local_4b0; + long local_4a8; + int *local_4a0; + long *local_498; + long local_490; + long local_488; + uint local_480; + int local_47c; + int local_478; + int local_474; + double *local_470; + double *local_468; + double *local_460; + double *local_458; + undefined8 local_450; + long local_448; + int *local_440; + long *local_438; + long local_430; + long local_428; + undefined8 *local_420; + ulong local_418; + undefined8 local_410; + undefined8 uStack_408; + + iVar16 = _InputArray::kind(param_1); + if (iVar16 == 0x10000) { + pMVar22 = *(Mat **)(param_1 + 8); + local_560 = &local_598; + local_558 = &local_550; + local_5a0 = *(uint *)pMVar22; + local_59c = *(int *)(pMVar22 + 4); + local_598 = *(int *)(pMVar22 + 8); + local_594 = *(int *)(pMVar22 + 0xc); + local_590 = *(double **)(pMVar22 + 0x10); + local_588 = *(undefined8 *)(pMVar22 + 0x18); + local_580 = *(undefined8 *)(pMVar22 + 0x20); + local_578 = *(undefined8 *)(pMVar22 + 0x28); + local_570 = *(undefined8 *)(pMVar22 + 0x30); + local_568 = *(long *)(pMVar22 + 0x38); + local_548 = 0; + local_550 = 0; + if (local_568 != 0) { + piVar24 = (int *)(local_568 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = *piVar24 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar22 + 4) < 3) { + local_550 = **(long **)(pMVar22 + 0x48); + local_548 = (*(long **)(pMVar22 + 0x48))[1]; + } + else { + local_59c = 0; + Mat::copySize((Mat *)&local_5a0,pMVar22); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar13 = local_5a0; + uVar1 = local_5a0 & 0xfff; + if (1 < uVar1 - 5) { + local_690 = 0; + local_688 = (Mat *)0x0; + pcVar18 = (char *)String::allocate((String *)&local_690,0x20); + uVar9 = s_type____CV_32F____type____CV_64F_00467cc8._24_8_; + uVar8 = s_type____CV_32F____type____CV_64F_00467cc8._16_8_; + uVar7 = s_type____CV_32F____type____CV_64F_00467cc8._8_8_; + *(undefined8 *)pcVar18 = s_type____CV_32F____type____CV_64F_00467cc8._0_8_; + *(undefined8 *)(pcVar18 + 8) = uVar7; + *(undefined8 *)(pcVar18 + 0x10) = uVar8; + *(undefined8 *)(pcVar18 + 0x18) = uVar9; + error(-0xd7,(String *)&local_690,"double cv::invert(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x31e); + String::deallocate((String *)&local_690); + } + iVar14 = local_594; + iVar17 = local_598; + iVar16 = (uVar13 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3); + lVar19 = (long)iVar16; + if (param_3 == 1) { + iVar2 = local_594; + if (local_598 < local_594) { + iVar2 = local_598; + } + local_418 = 0x408; + local_420 = &local_410; + uVar25 = (long)iVar16 * (long)(iVar2 + (local_598 + local_594) * iVar2) + 8; + if (0x408 < uVar25) { + local_420 = operator_new__(uVar25); + } + local_530 = (long)local_420 + lVar19 + -1 & (long)-iVar16; + local_4f0 = (long)iVar16 * (long)iVar2; + local_4d0 = (double *)(local_530 + (long)iVar16 * (long)(iVar17 * iVar2)); + local_430 = (long)iVar16 * (long)iVar14; + local_4c0 = (double *)((long)local_4d0 + local_4f0); + local_4f8 = &local_4f0; + local_520 = local_530 + local_4f0 * iVar17; + local_4e0 = uVar1 + 0x42ff0000 | 0x4000; + local_460 = (double *)((long)local_4c0 + local_430 * iVar2); + local_500 = &local_538; + local_538 = (Mat *)CONCAT44(iVar2,iVar17); + local_4a0 = &local_4d8; + local_498 = &local_490; + local_440 = &local_478; + local_438 = &local_430; + local_540 = CONCAT44(2,local_4e0); + local_510 = 0; + local_508 = 0; + local_4dc = 2; + local_4d4 = 1; + local_4b0 = 0; + local_4a8 = 0; + local_47c = 2; + local_474 = iVar14; + local_680 = 0; + local_67c = 0; + local_690._0_4_ = 0x1010000; + local_650 = 0; + local_660 = CONCAT44(local_660._4_4_,0x2010000); + local_5f0 = 0; + local_600._0_4_ = 0x2010000; + local_450 = 0; + local_448 = 0; + local_668 = 0; + local_664 = 0; + local_678._0_4_ = 0x2010000; + local_688 = (Mat *)&local_5a0; + local_670 = (Mat *)&local_4e0; + pMStack_658 = (Mat *)&local_540; + pMStack_5f8 = (Mat *)&local_480; + uStack_528 = local_530; + local_518 = local_520; + local_4e8 = lVar19; + local_4d8 = iVar2; + local_4c8 = local_4d0; + local_4b8 = local_4c0; + local_490 = lVar19; + local_488 = lVar19; + local_480 = local_4e0; + local_478 = iVar2; + local_470 = local_4c0; + local_468 = local_4c0; + local_458 = local_460; + local_428 = lVar19; + local_418 = uVar25; + SVD::compute((_InputArray *)&local_690,(_OutputArray *)&local_678,(_OutputArray *)&local_660, + (_OutputArray *)&local_600,0); + local_618 = &local_610; + local_650 = 0; + local_620 = &pMStack_658; + local_648 = 0; + local_640 = 0; + local_638 = 0; + local_630 = 0; + pMStack_658 = _UNK_002b6988; + local_660 = _DAT_002b6980; + local_628 = 0; + local_698 = 0; + local_694 = 0; + uStack_608 = 0; + local_610 = 0; + local_6a8[0] = 0x1010000; + local_680 = 0; + local_67c = 0; + local_690 = CONCAT44(local_690._4_4_,0x1010000); + local_5f0 = 0; + local_600 = CONCAT44(local_600._4_4_,0x1010000); + local_668 = 0; + local_664 = 0; + local_678 = CONCAT44(local_678._4_4_,0x1010000); + local_6a0 = (Mat *)&local_4e0; + local_688 = (Mat *)&local_540; + local_670 = (Mat *)&local_480; + pMStack_5f8 = (Mat *)&local_660; + SVD::backSubst((_InputArray *)local_6a8,(_InputArray *)&local_690,(_InputArray *)&local_678, + (_InputArray *)&local_600,param_2); + if (local_628 != 0) { + piVar24 = (int *)(local_628 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + local_628 = 0; + local_650 = 0; + local_638 = 0; + local_640 = 0; + local_648 = 0; + if (0 < local_660._4_4_) { + iVar16 = 0; + ppMVar23 = local_620; + do { + *(undefined4 *)ppMVar23 = 0; + iVar16 = iVar16 + 1; + ppMVar23 = (Mat **)((long)ppMVar23 + 4); + } while (iVar16 < local_660._4_4_); + } + if (local_618 != &local_610) { + fastFree(local_618); + } + if (uVar1 == 5) { + if (*(float *)local_4d0 < DAT_002b6990) goto LAB_002b5e5c; + dVar43 = (double)(*(float *)((long)local_4d0 + (long)iVar14 * 4 + -4) / *(float *)local_4d0); + } + else if (*local_4d0 < DAT_002b6998) { +LAB_002b5e5c: + dVar43 = 0.0; + } + else { + dVar43 = local_4d0[(long)iVar14 + -1] / *local_4d0; + } + if (local_448 != 0) { + piVar24 = (int *)(local_448 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_480); + } + } + local_448 = 0; + local_470 = (double *)0x0; + local_458 = (double *)0x0; + local_460 = (double *)0x0; + local_468 = (double *)0x0; + if (0 < local_47c) { + iVar16 = 0; + piVar24 = local_440; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_47c); + } + if (local_438 != &local_430) { + fastFree(local_438); + } + if (local_4a8 != 0) { + piVar24 = (int *)(local_4a8 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_4e0); + } + } + local_4a8 = 0; + local_4d0 = (double *)0x0; + local_4b8 = (double *)0x0; + local_4c0 = (double *)0x0; + local_4c8 = (double *)0x0; + if (0 < local_4dc) { + iVar16 = 0; + piVar24 = local_4a0; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_4dc); + } + if (local_498 != &local_490) { + fastFree(local_498); + } + if (local_508 != 0) { + piVar24 = (int *)(local_508 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_540); + } + } + local_508 = 0; + local_530 = 0; + local_518 = 0; + local_520 = 0; + uStack_528 = 0; + if (0 < local_540._4_4_) { + iVar16 = 0; + puVar21 = local_500; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < local_540._4_4_); + } + if (local_4f8 != &local_4f0) { + fastFree(local_4f8); + } + } + else { + if (local_598 != local_594) { + local_678 = 0; + local_670 = (Mat *)0x0; + puVar20 = (undefined4 *)String::allocate((String *)&local_678,6); + uVar10 = DAT_00467eb4; + *puVar20 = DAT_00467eb0; + *(undefined2 *)(puVar20 + 1) = uVar10; + error(-0xd7,(String *)&local_678,"double cv::invert(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x336); + String::deallocate((String *)&local_678); + } + if (param_3 != 2) { + if ((param_3 != 3) && (param_3 != 0)) { + local_540 = 0; + local_538 = (Mat *)0x0; + puVar21 = (undefined8 *)String::allocate((String *)&local_540,0x30); + uVar12 = s_CHOLESKY_00467ee0._0_8_; + uVar11 = DAT_00467ed8; + uVar9 = _DAT_00467ed0; + uVar8 = DAT_00467ec8; + uVar7 = DAT_00467ec0; + *puVar21 = DAT_00467eb8; + puVar21[1] = uVar7; + puVar21[2] = uVar8; + puVar21[3] = uVar9; + puVar21[4] = uVar11; + puVar21[5] = uVar12; + error(-0xd7,(String *)&local_540,"double cv::invert(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x34a); + String::deallocate((String *)&local_540); + } + _OutputArray::create(param_2,iVar14,iVar14,uVar1,-1,false,0); + iVar17 = _InputArray::kind((_InputArray *)param_2); + if (iVar17 == 0x10000) { + local_4a0 = &local_4d8; + local_498 = &local_490; + pMVar22 = *(Mat **)(param_2 + 8); + local_4e0 = *(uint *)pMVar22; + local_4d0 = *(double **)(pMVar22 + 0x10); + local_4dc = *(int *)(pMVar22 + 4); + local_4d8 = *(int *)(pMVar22 + 8); + local_4d4 = *(undefined4 *)(pMVar22 + 0xc); + local_4c8 = *(double **)(pMVar22 + 0x18); + local_4c0 = *(double **)(pMVar22 + 0x20); + local_4b8 = *(double **)(pMVar22 + 0x28); + local_4b0 = *(undefined8 *)(pMVar22 + 0x30); + local_4a8 = *(long *)(pMVar22 + 0x38); + local_488 = 0; + local_490 = 0; + if (local_4a8 != 0) { + piVar24 = (int *)(local_4a8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = *piVar24 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar22 + 4)) { + local_4dc = 0; + Mat::copySize((Mat *)&local_4e0,pMVar22); + goto LAB_002b5468; + } + local_490 = **(long **)(pMVar22 + 0x48); + local_488 = (*(long **)(pMVar22 + 0x48))[1]; + if (3 < iVar14) goto LAB_002b55e4; +LAB_002b5470: + if (iVar14 == 2) { + if (uVar1 == 5) { + fVar29 = *(float *)((long)local_590 + local_550 + 4); + fVar5 = *(float *)local_590 * fVar29 - + *(float *)((long)local_590 + 4) * *(float *)((long)local_590 + local_550); + if (fVar5 == 0.0) goto LAB_002b5e08; + fVar5 = 1.0 / fVar5; + *(float *)((long)local_4d0 + local_490 + 4) = *(float *)local_590 * fVar5; + *(float *)local_4d0 = fVar29 * fVar5; + fVar29 = *(float *)((long)local_590 + local_550); + *(float *)((long)local_4d0 + 4) = -*(float *)((long)local_590 + 4) * fVar5; + *(float *)((long)local_4d0 + local_490) = -fVar29 * fVar5; + } + else { + dVar32 = *(double *)((long)local_590 + local_550 + 8); + dVar43 = *local_590 * dVar32 - local_590[1] * *(double *)((long)local_590 + local_550); + if (dVar43 == 0.0) { +LAB_002b5e08: + local_418 = 0; + local_420 = (undefined8 *)0x0; + uStack_408 = 0; + local_410 = 0; + Mat::operator=((Mat *)&local_4e0,(Scalar_ *)&local_420); + dVar43 = 0.0; + goto LAB_002b54b4; + } + dVar43 = 1.0 / dVar43; + *(double *)((long)local_4d0 + local_490 + 8) = *local_590 * dVar43; + *local_4d0 = dVar32 * dVar43; + dVar32 = *(double *)((long)local_590 + local_550); + local_4d0[1] = -(local_590[1] * dVar43); + *(double *)((long)local_4d0 + local_490) = -(dVar32 * dVar43); + } + } + else if (iVar14 == 3) { + if (uVar1 == 5) { + lVar19 = (local_550 + 4) * 2; + fVar30 = *(float *)((long)local_590 + local_550 * 2); + fVar33 = *(float *)((long)local_590 + local_550); + fVar37 = *(float *)((long)local_590 + local_550 + 8); + fVar35 = *(float *)((long)local_590 + lVar19); + fVar40 = *(float *)((long)local_590 + lVar19 + -4); + fVar26 = *(float *)((long)local_590 + local_550 + 4); + fVar31 = *(float *)((long)local_590 + 4); + fVar27 = *(float *)local_590; + fVar29 = fVar26 * fVar35 - fVar37 * fVar40; + fVar46 = *(float *)(local_590 + 1); + fVar6 = fVar40 * fVar33 - fVar26 * fVar30; + fVar5 = (fVar27 * fVar29 - fVar31 * (fVar35 * fVar33 - fVar37 * fVar30)) + + fVar6 * fVar46; + if (fVar5 == 0.0) goto LAB_002b5e08; + fVar5 = 1.0 / fVar5; + *(float *)local_4d0 = fVar29 * fVar5; + *(float *)((long)local_4d0 + 4) = (fVar40 * fVar46 - fVar35 * fVar31) * fVar5; + *(float *)(local_4d0 + 1) = (fVar37 * fVar31 - fVar26 * fVar46) * fVar5; + *(float *)((long)local_4d0 + local_490) = (fVar37 * fVar30 - fVar35 * fVar33) * fVar5; + *(float *)((long)local_4d0 + local_490 + 4) = + (fVar27 * fVar35 - fVar30 * fVar46) * fVar5; + *(float *)((long)local_4d0 + local_490 + 8) = + (fVar33 * fVar46 - fVar27 * fVar37) * fVar5; + *(float *)((long)local_4d0 + local_490 * 2) = fVar6 * fVar5; + *(float *)((long)local_4d0 + local_490 * 2 + 4) = + (fVar31 * fVar30 - fVar27 * fVar40) * fVar5; + *(float *)((long)local_4d0 + local_490 * 2 + 8) = + (fVar27 * fVar26 - fVar31 * fVar33) * fVar5; + } + else { + lVar19 = (local_550 + 8) * 2; + dVar32 = *(double *)((long)local_590 + local_550); + dVar47 = *(double *)((long)local_590 + local_550 * 2); + dVar36 = *(double *)((long)local_590 + local_550 + 0x10); + dVar34 = *(double *)((long)local_590 + lVar19); + dVar44 = *(double *)((long)local_590 + lVar19 + -8); + dVar45 = *(double *)((long)local_590 + local_550 + 8); + dVar39 = local_590[1]; + dVar42 = dVar45 * dVar34 - dVar36 * dVar44; + dVar38 = *local_590; + dVar48 = local_590[2]; + dVar41 = dVar44 * dVar32 - dVar45 * dVar47; + dVar43 = (dVar38 * dVar42 - dVar39 * (dVar34 * dVar32 - dVar36 * dVar47)) + + dVar41 * dVar48; + if (dVar43 == 0.0) goto LAB_002b5e08; + dVar43 = 1.0 / dVar43; + local_4d0[1] = (dVar44 * dVar48 - dVar34 * dVar39) * dVar43; + *local_4d0 = dVar42 * dVar43; + local_4d0[2] = (dVar36 * dVar39 - dVar45 * dVar48) * dVar43; + *(double *)((long)local_4d0 + local_490) = (dVar36 * dVar47 - dVar34 * dVar32) * dVar43; + *(double *)((long)local_4d0 + local_490 + 8) = + (dVar38 * dVar34 - dVar47 * dVar48) * dVar43; + *(double *)((long)local_4d0 + local_490 + 0x10) = + (dVar32 * dVar48 - dVar38 * dVar36) * dVar43; + *(double *)((long)local_4d0 + local_490 * 2) = dVar41 * dVar43; + *(double *)((long)local_4d0 + local_490 * 2 + 8) = + (dVar39 * dVar47 - dVar38 * dVar44) * dVar43; + *(double *)((long)local_4d0 + local_490 * 2 + 0x10) = + (dVar38 * dVar45 - dVar39 * dVar32) * dVar43; + } + } + else if (uVar1 == 5) { + if (*(float *)local_590 == 0.0) goto LAB_002b5e08; + *(float *)local_4d0 = 1.0 / *(float *)local_590; + } + else { + if (*local_590 == 0.0) goto LAB_002b5e08; + *local_4d0 = 1.0 / *local_590; + } + dVar43 = 1.0; + } + else { + _InputArray::getMat_((int)param_2); +LAB_002b5468: + if (iVar14 < 4) goto LAB_002b5470; +LAB_002b55e4: + local_420 = &local_410; + iVar17 = iVar16 * iVar14 * iVar14; + local_418 = 0x408; + if (0x408 < iVar17) { + local_420 = operator_new__((long)iVar17); + } + local_430 = (long)iVar16 * (long)iVar14; + local_440 = &local_478; + local_460 = (double *)((long)local_420 + local_430 * iVar14); + local_438 = &local_430; + local_480 = uVar1 + 0x42ff0000 | 0x4000; + local_530 = 0; + local_540 = CONCAT44(local_540._4_4_,0x2010000); + local_47c = 2; + local_478 = iVar14; + local_474 = iVar14; + local_450 = 0; + local_448 = 0; + local_538 = (Mat *)&local_480; + local_470 = (double *)local_420; + local_468 = (double *)local_420; + local_458 = local_460; + local_428 = lVar19; + local_418 = (long)iVar17; + Mat::copyTo((Mat *)&local_5a0,(_OutputArray *)&local_540); + local_600 = CONCAT44(local_600._4_4_,0x3010000); + local_5f0 = 0; + local_538 = (Mat *)_UNK_002b69a8; + local_540 = _DAT_002b69a0; + uStack_528 = 0; + local_530 = 0; + pMStack_5f8 = (Mat *)&local_4e0; + setIdentity((_InputOutputArray *)&local_600,(Scalar_ *)&local_540); + if (param_3 != 0) { +LAB_002b5704: + if ((param_3 != 3) || (uVar1 != 5)) { + bVar15 = FUN_003cd450(local_470,local_430,iVar14,local_4d0,local_490,iVar14); + } + else { + bVar15 = FUN_003cd0e8(local_470,local_430,iVar14,local_4d0,local_490,iVar14); + } + } + else { + if (uVar1 == 5) { + iVar16 = FUN_003cbc40(local_470,local_430,iVar14,local_4d0,local_490,iVar14); + } + else { + if (uVar1 != 6) goto LAB_002b5704; + iVar16 = FUN_003cc800(local_470,local_430,iVar14,local_4d0,local_490,iVar14); + } + bVar15 = iVar16 != 0; + } + if (bVar15 == 0) { + local_538 = (Mat *)0x0; + local_540 = 0; + uStack_528 = 0; + local_530 = 0; + Mat::operator=((Mat *)&local_4e0,(Scalar_ *)&local_540); + } + dVar43 = (double)bVar15; + if (local_448 != 0) { + piVar24 = (int *)(local_448 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_480); + } + } + local_448 = 0; + local_470 = (double *)0x0; + local_458 = (double *)0x0; + local_460 = (double *)0x0; + local_468 = (double *)0x0; + if (0 < local_47c) { + iVar16 = 0; + piVar24 = local_440; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_47c); + } + if (local_438 != &local_430) { + fastFree(local_438); + } + if ((local_420 != &local_410) && (local_420 != (undefined8 *)0x0)) { + operator_delete__(local_420); + } + } +LAB_002b54b4: + if (local_4a8 != 0) { + piVar24 = (int *)(local_4a8 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_4e0); + } + } + local_4a8 = 0; + local_4d0 = (double *)0x0; + local_4b8 = (double *)0x0; + local_4c0 = (double *)0x0; + local_4c8 = (double *)0x0; + if (0 < local_4dc) { + iVar16 = 0; + piVar24 = local_4a0; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_4dc); + } + if (local_498 != &local_490) { + fastFree(local_498); + } + goto LAB_002b5d30; + } + local_420 = &local_410; + uVar25 = (long)iVar16 * (long)(iVar14 + iVar14 * iVar14 * 2) + 8; + local_418 = 0x408; + if (0x408 < uVar25) { + local_420 = operator_new__(uVar25); + } + local_4f0 = (long)iVar16 * (long)iVar14; + local_530 = (long)local_420 + lVar19 + -1 & (long)-iVar16; + local_520 = local_530 + local_4f0 * iVar14; + local_4d0 = (double *)(local_530 + (long)iVar16 * (long)(iVar14 * iVar14)); + local_4e0 = uVar1 + 0x42ff0000 | 0x4000; + local_500 = &local_538; + local_4c0 = (double *)((long)local_4d0 + local_4f0); + local_4f8 = &local_4f0; + local_460 = (double *)((long)local_4c0 + local_4f0 * iVar14); + local_4a0 = &local_4d8; + local_498 = &local_490; + local_440 = &local_478; + local_438 = &local_430; + local_538 = (Mat *)CONCAT44(iVar14,iVar14); + local_510 = 0; + local_508 = 0; + local_540 = CONCAT44(2,uVar1 + 0x42ff0000) | 0x4000; + local_4dc = 2; + local_4d8 = iVar14; + local_4d4 = 1; + local_4b0 = 0; + local_4a8 = 0; + local_47c = 2; + local_478 = iVar14; + local_474 = iVar14; + local_450 = 0; + local_650 = 0; + local_660._0_4_ = 0x2010000; + local_5f0 = 0; + local_600._0_4_ = 0x2010000; + local_448 = 0; + local_668 = 0; + local_664 = 0; + local_678._0_4_ = 0x1010000; + local_670 = (Mat *)&local_5a0; + pMStack_658 = (Mat *)&local_4e0; + pMStack_5f8 = (Mat *)&local_480; + uStack_528 = local_530; + local_518 = local_520; + local_4e8 = lVar19; + local_4c8 = local_4d0; + local_4b8 = local_4c0; + local_490 = lVar19; + local_488 = lVar19; + local_480 = local_4e0; + local_470 = local_4c0; + local_468 = local_4c0; + local_458 = local_460; + local_430 = local_4f0; + local_428 = lVar19; + local_418 = uVar25; + eigen((_InputArray *)&local_678,(_OutputArray *)&local_660,(_OutputArray *)&local_600); + local_660._0_4_ = 0x1010000; + local_650 = 0; + local_5f0 = 0; + local_600 = CONCAT44(local_600._4_4_,0x2010000); + pMStack_658 = (Mat *)&local_480; + pMStack_5f8 = (Mat *)&local_540; + transpose((_InputArray *)&local_660,(_OutputArray *)&local_600); + local_5b8 = &local_5b0; + local_5f0 = 0; + local_5c0 = &pMStack_5f8; + local_5e8 = 0; + local_5e0 = 0; + local_5d8 = 0; + local_5d0 = 0; + pMStack_5f8 = _UNK_002b6988; + local_600 = _DAT_002b6980; + local_5c8 = 0; + local_680 = 0; + uStack_5a8 = 0; + local_5b0 = 0; + local_67c = 0; + local_690 = CONCAT44(local_690._4_4_,0x1010000); + local_650 = 0; + local_660 = CONCAT44(local_660._4_4_,0x1010000); + local_698 = 0; + local_694 = 0; + local_6a8[0] = 0x1010000; + local_668 = 0; + local_664 = 0; + local_678 = CONCAT44(local_678._4_4_,0x1010000); + local_6a0 = (Mat *)&local_4e0; + local_688 = (Mat *)&local_540; + local_670 = (Mat *)&local_480; + pMStack_658 = (Mat *)&local_600; + SVD::backSubst((_InputArray *)local_6a8,(_InputArray *)&local_690,(_InputArray *)&local_678, + (_InputArray *)&local_660,param_2); + if (local_5c8 != 0) { + piVar24 = (int *)(local_5c8 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_600); + } + } + local_5c8 = 0; + local_5f0 = 0; + local_5d8 = 0; + local_5e0 = 0; + local_5e8 = 0; + if (0 < local_600._4_4_) { + iVar16 = 0; + ppMVar23 = local_5c0; + do { + *(undefined4 *)ppMVar23 = 0; + iVar16 = iVar16 + 1; + ppMVar23 = (Mat **)((long)ppMVar23 + 4); + } while (iVar16 < local_600._4_4_); + } + if (local_5b8 != &local_5b0) { + fastFree(local_5b8); + } + if (uVar1 == 5) { + if (*(float *)local_4d0 < DAT_002b6990) goto LAB_002b61ec; + dVar43 = (double)(*(float *)((long)local_4d0 + (long)iVar14 * 4 + -4) / *(float *)local_4d0); + } + else if (DAT_002b6998 <= *local_4d0) { + dVar43 = local_4d0[(long)iVar14 + -1] / *local_4d0; + } + else { +LAB_002b61ec: + dVar43 = 0.0; + } + if (local_448 != 0) { + piVar24 = (int *)(local_448 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_480); + } + } + local_448 = 0; + local_470 = (double *)0x0; + local_458 = (double *)0x0; + local_460 = (double *)0x0; + local_468 = (double *)0x0; + if (0 < local_47c) { + iVar16 = 0; + piVar24 = local_440; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_47c); + } + if (local_438 != &local_430) { + fastFree(local_438); + } + if (local_4a8 != 0) { + piVar24 = (int *)(local_4a8 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_4e0); + } + } + local_4a8 = 0; + local_4d0 = (double *)0x0; + local_4b8 = (double *)0x0; + local_4c0 = (double *)0x0; + local_4c8 = (double *)0x0; + if (0 < local_4dc) { + iVar16 = 0; + piVar24 = local_4a0; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_4dc); + } + if (local_498 != &local_490) { + fastFree(local_498); + } + if (local_508 != 0) { + piVar24 = (int *)(local_508 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_540); + } + } + local_508 = 0; + local_530 = 0; + local_518 = 0; + local_520 = 0; + uStack_528 = 0; + if (0 < local_540._4_4_) { + iVar16 = 0; + puVar21 = local_500; + do { + *(undefined4 *)puVar21 = 0; + iVar16 = iVar16 + 1; + puVar21 = (undefined8 *)((long)puVar21 + 4); + } while (iVar16 < local_540._4_4_); + } + if (local_4f8 != &local_4f0) { + fastFree(local_4f8); + } + } + if ((local_420 != &local_410) && (local_420 != (undefined8 *)0x0)) { + operator_delete__(local_420); + } +LAB_002b5d30: + if (local_568 != 0) { + piVar24 = (int *)(local_568 + 0x14); + do { + iVar16 = *piVar24; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar4) { + *piVar24 = iVar16 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_5a0); + } + } + local_568 = 0; + local_590 = (double *)0x0; + local_578 = 0; + local_580 = 0; + local_588 = 0; + if (0 < local_59c) { + iVar16 = 0; + piVar24 = local_560; + do { + *piVar24 = 0; + iVar16 = iVar16 + 1; + piVar24 = piVar24 + 1; + } while (iVar16 < local_59c); + } + if (local_558 != &local_550) { + fastFree(local_558); + } + auVar28._8_8_ = 0; + auVar28._0_8_ = dVar43; + return auVar28; +} + + +================================================================== + +### FUNC 002b69b0 (644 bytes) name=cvInvert + +undefined1 [16] +cvInvert(cv *param_1,cv *param_2,int param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + bool bVar11; + char *pcVar12; + int iVar13; + undefined1 auVar14 [16]; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if ((((local_c0 & 0xfff) != (local_60 & 0xfff)) || (local_b8 != local_54)) || + (local_b4 != local_58)) { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_d8,0x48); + uVar8 = s_src_type______dst_type______src__00467ef0._40_8_; + uVar7 = s_src_type______dst_type______src__00467ef0._32_8_; + uVar6 = s_src_type______dst_type______src__00467ef0._24_8_; + uVar5 = s_src_type______dst_type______src__00467ef0._16_8_; + uVar4 = s_src_type______dst_type______src__00467ef0._8_8_; + uVar3 = s_src_type______dst_type______src__00467ef0._0_8_; + *(undefined8 *)(pcVar12 + 0x40) = s_src_type______dst_type______src__00467ef0._64_8_; + uVar10 = s_src_type______dst_type______src__00467ef0._56_8_; + uVar9 = s_src_type______dst_type______src__00467ef0._48_8_; + *(undefined8 *)pcVar12 = uVar3; + *(undefined8 *)(pcVar12 + 8) = uVar4; + *(undefined8 *)(pcVar12 + 0x10) = uVar5; + *(undefined8 *)(pcVar12 + 0x18) = uVar6; + *(undefined8 *)(pcVar12 + 0x20) = uVar7; + *(undefined8 *)(pcVar12 + 0x28) = uVar8; + *(undefined8 *)(pcVar12 + 0x30) = uVar9; + *(undefined8 *)(pcVar12 + 0x38) = uVar10; + cv::error(-0xd7,(String *)&local_d8,"double cvInvert(const CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x601); + cv::String::deallocate((String *)&local_d8); + } + local_e0 = 0; + local_f0[0] = 0x1010000; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + if (((param_3 != 3) && (param_3 != 1)) && (bVar11 = param_3 != 2, param_3 = 2, bVar11)) { + param_3 = 0; + } + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + auVar14._0_8_ = cv::invert((_InputArray *)local_f0,(_OutputArray *)&local_d8,param_3); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar11 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar11) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + auVar14._8_8_ = 0; + return auVar14; +} + + +================================================================== + +### FUNC 002b6c94 (4 bytes) name=SVDecomp + +/* cv::SVDecomp(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, + cv::_OutputArray const&, int) */ + +void cv::SVDecomp(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,int param_5) + +{ + (*(code *)PTR_compute_00500978)(); + return; +} + + +================================================================== + +### FUNC 002b6c98 (68 bytes) name=compute + +/* cv::SVD::compute(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::SVD::compute(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + + uVar1 = noArray(); + uVar2 = noArray(); + FUN_002b4128(param_1,param_2,uVar1,uVar2,param_3); + return; +} + + +================================================================== + +### FUNC 002b6cdc (112 bytes) name=operator() + +/* cv::SVD::TEMPNAMEPLACEHOLDERVALUE(cv::_InputArray const&, int) */ + +SVD * __thiscall cv::SVD::operator()(SVD *this,_InputArray *param_1,int param_2) + +{ + undefined4 local_48 [2]; + SVD *local_40; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [2]; + SVD *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + SVD *local_10; + undefined4 local_8; + undefined4 local_4; + + local_40 = this + 0x60; + local_10 = this + 0xc0; + local_48[0] = 0x2010000; + local_30[0] = 0x2010000; + local_18[0] = 0x2010000; + local_38 = 0; + local_34 = 0; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_28 = this; + FUN_002b4128(param_1,local_48,local_30,local_18,param_2); + return this; +} + + +================================================================== + +### FUNC 002b6d50 (4972 bytes) name=cvSVD + +/* WARNING: Removing unreachable block (ram,0x002b7ec4) */ +/* WARNING: Removing unreachable block (ram,0x002b7ec8) */ +/* WARNING: Removing unreachable block (ram,0x002b7ed0) */ +/* WARNING: Removing unreachable block (ram,0x002b7ed8) */ +/* WARNING: Removing unreachable block (ram,0x002b7fd4) */ +/* WARNING: Removing unreachable block (ram,0x002b7f00) */ +/* WARNING: Removing unreachable block (ram,0x002b7f08) */ +/* WARNING: Removing unreachable block (ram,0x002b7f1c) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvSVD(cv *param_1,cv *param_2,cv *param_3,cv *param_4,uint param_5,AutoBuffer *param_6) + +{ + int iVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 *puVar6; + void *__dest; + char *pcVar7; + long lVar8; + SVD **ppSVar9; + int *piVar10; + undefined4 *puVar11; + long lVar12; + uint uVar13; + uint uVar14; + int iVar15; + AutoBuffer *pAVar16; + int iVar17; + int iVar18; + undefined8 local_410; + undefined8 local_408; + undefined8 local_400; + undefined8 local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + undefined8 local_3e0; + undefined8 local_3d8; + undefined8 local_3d0; + undefined8 local_3c8; + uint local_3c0; + int local_3bc; + int local_3b8; + undefined4 local_3b4; + long local_3b0; + long lStack_3a8; + long local_3a0; + long lStack_398; + undefined8 local_390; + long lStack_388; + int *local_380; + long *local_378; + long alStack_370 [2]; + undefined8 local_360; + undefined8 uStack_358; + ulong local_350; + undefined8 uStack_348; + undefined8 local_340; + undefined8 uStack_338; + undefined8 local_330; + long lStack_328; + int *local_320; + undefined8 *local_318; + undefined8 local_310; + undefined8 uStack_308; + undefined8 local_300; + undefined8 uStack_2f8; + long local_2f0; + undefined8 uStack_2e8; + undefined8 local_2e0; + undefined8 uStack_2d8; + undefined8 local_2d0; + long lStack_2c8; + int *local_2c0; + undefined8 *local_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + uint local_2a0; + undefined4 local_29c; + undefined4 local_298 [2]; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 uStack_268; + undefined4 *local_260; + long *local_258; + long local_250; + long local_248; + undefined4 local_240; + int local_23c; + SVD *local_238; + ulong local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined4 *local_200; + undefined8 *local_1f8; + undefined8 auStack_1f0 [2]; + uint local_1e0; + int local_1dc; + int local_1d8; + int local_1d4; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + long local_1a8; + undefined4 *local_1a0; + undefined1 *local_198; + undefined1 auStack_190 [16]; + undefined8 local_180; + Mat *local_178; + ulong local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined8 local_120; + SVD *local_118; + ulong local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + SVD **local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + long local_b0; + long lStack_a8; + long local_a0; + long lStack_98; + undefined8 local_90; + long lStack_88; + int *local_80; + AutoBuffer *local_78; + long local_70; + long local_68; + undefined4 local_60; + int local_5c; + int local_58; + undefined4 local_54; + long local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_318 = &local_310; + local_2b8 = &local_2b0; + uStack_308 = 0; + local_310 = 0; + uStack_2a8 = 0; + local_2b0 = 0; + local_320 = (int *)&uStack_358; + local_2c0 = (int *)&uStack_2f8; + uStack_358 = _UNK_002b8278; + local_360 = _DAT_002b8270; + local_350 = 0; + uStack_2f8 = _UNK_002b8278; + local_300 = _DAT_002b8270; + uStack_348 = 0; + local_340 = 0; + uStack_338 = 0; + uVar13 = local_1e0 & 0xfff; + local_330 = 0; + lStack_328 = 0; + local_2f0 = 0; + uStack_2e8 = 0; + local_2e0 = 0; + uStack_2d8 = 0; + local_2d0 = 0; + lStack_2c8 = 0; + iVar18 = local_1d4; + if ((local_1d8 < local_1d4) || (iVar18 = local_1d8, local_1d8 <= local_1d4)) { + iVar17 = local_1d8; + if (uVar13 == (local_3c0 & 0xfff)) goto LAB_002b7c48; +LAB_002b6e6c: + local_410 = 0; + local_408 = 0; + __dest = (void *)cv::String::allocate((String *)&local_410,0x8d); + memcpy(__dest, + "w.type() == type && (w.size() == cv::Size(nm,1) || w.size() == cv::Size(1, nm) || w.size() == cv::Size(nm, nm) || w.size() == cv::Size(n, m))" + ,0x8d); + cv::error(-0xd7,(String *)&local_410,"void cvSVD(CvArr*, CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x63f); + cv::String::deallocate((String *)&local_410); + } + else { + iVar17 = local_1d4; + if (uVar13 != (local_3c0 & 0xfff)) goto LAB_002b6e6c; +LAB_002b7c48: + iVar15 = local_380[1]; + iVar1 = *local_380; + if ((((iVar17 != iVar15) || (iVar1 != 1)) && + ((iVar17 != iVar1 || ((iVar15 != 1 && (iVar17 != iVar15)))))) && + ((local_1d4 != iVar15 || (local_1d8 != iVar1)))) goto LAB_002b6e6c; + } + local_80 = &local_b8; + local_110 = 0; + local_d8 = &local_d0; + uStack_108 = 0; + pAVar16 = (AutoBuffer *)&local_70; + local_e0 = &local_118; + local_120 = DAT_002b8280; + local_100 = 0; + uStack_f8 = 0; + local_f0 = 0; + local_20 = &local_58; + lStack_e8 = 0; + local_18 = &local_10; + local_118 = (SVD *)0x0; + local_c8 = 0; + local_d0 = 0; + local_c0 = 0x42ff0000; + local_bc = 0; + local_b8 = 0; + local_b4 = 0; + local_b0 = 0; + lStack_a8 = 0; + local_a0 = 0; + lStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + local_68 = 0; + local_70 = 0; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + uStack_48 = 0; + local_40 = 0; + uStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + local_8 = 0; + local_10 = 0; + local_78 = pAVar16; + if ((iVar17 == local_380[1]) && (*local_380 == 1)) { + iVar15 = (local_1e0 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((local_1e0 & 7) << 1)) & 3); + local_a0 = local_3b0 + (long)iVar17 * (long)iVar15; + local_270 = 0; + local_250 = (long)iVar15; + local_2a0 = uVar13 + 0x42ff0000 | 0x4000; + local_260 = local_298; + lStack_a8 = local_3b0; + local_b0 = local_3b0; + local_298[1] = 1; + lStack_88 = 0; + local_90 = 0; + local_258 = &local_250; + local_29c = 2; + iVar15 = 0; + local_bc = 2; + local_b4 = 1; + uStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + puVar11 = local_260; + local_248 = local_250; + local_c0 = local_2a0; + local_b8 = iVar17; + lStack_98 = local_a0; + local_70 = local_250; + local_68 = local_250; + do { + *puVar11 = 0; + iVar15 = iVar15 + 1; + puVar11 = puVar11 + 1; + } while (iVar15 < 2); + if (local_258 != &local_250) { + cv::fastFree(local_258); + } + } + else if ((local_3c0 >> 0xe & 1) != 0) { + if (lStack_388 != 0) { + piVar10 = (int *)(lStack_388 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = *piVar10 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + lStack_88 = 0; + local_b0 = 0; + lStack_98 = 0; + local_a0 = 0; + lStack_a8 = 0; + local_c0 = local_3c0; + if (local_3bc < 3) { + local_bc = local_3bc; + local_b8 = local_3b8; + local_70 = *local_378; + local_b4 = local_3b4; + local_68 = local_378[1]; + } + else { + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_3c0); + } + lStack_98 = lStack_398; + local_a0 = local_3a0; + lStack_88 = lStack_388; + local_90 = local_390; + lStack_a8 = lStack_3a8; + local_b0 = local_3b0; + } + if (param_3 != (cv *)0x0) { + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,pAVar16); + if (lStack_208 != 0) { + piVar10 = (int *)(lStack_208 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = *piVar10 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_328 != 0) { + piVar10 = (int *)(lStack_328 + 0x14); + do { + iVar17 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + puVar6 = local_1f8; + lStack_328 = 0; + local_350 = 0; + uStack_338 = 0; + local_340 = 0; + uStack_348 = 0; + if (local_360._4_4_ < 1) { +LAB_002b7060: + if (2 < local_23c) goto LAB_002b7dec; + uStack_358 = local_238; + local_360 = CONCAT44(local_23c,local_240); + *local_318 = *local_1f8; + local_318[1] = puVar6[1]; + } + else { + iVar17 = 0; + piVar10 = local_320; + do { + *piVar10 = 0; + iVar17 = iVar17 + 1; + piVar10 = piVar10 + 1; + } while (iVar17 < local_360._4_4_); + if (local_360._4_4_ < 3) goto LAB_002b7060; +LAB_002b7dec: + local_360 = CONCAT44(local_360._4_4_,local_240); + cv::Mat::copySize((Mat *)&local_360,(Mat *)&local_240); + } + uStack_338 = uStack_218; + local_340 = local_220; + lStack_328 = lStack_208; + local_330 = local_210; + uStack_348 = uStack_228; + local_350 = local_230; + if (lStack_208 != 0) { + piVar10 = (int *)(lStack_208 + 0x14); + do { + iVar17 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_23c) { + iVar17 = 0; + do { + *local_200 = 0; + iVar17 = iVar17 + 1; + local_200 = local_200 + 1; + } while (iVar17 < local_23c); + } + if (local_1f8 != auStack_1f0) { + cv::fastFree(local_1f8); + } + if (uVar13 != ((uint)local_360 & 0xfff)) { + local_400 = 0; + local_3f8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_400,0x10); + uVar4 = s_u_type______type_00467fd0._8_8_; + *(undefined8 *)pcVar7 = s_u_type______type_00467fd0._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_400,"void cvSVD(CvArr*, CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x64b); + cv::String::deallocate((String *)&local_400); + } + if (lStack_328 != 0) { + piVar10 = (int *)(lStack_328 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = *piVar10 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + iVar17 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_120._4_4_ < 1) { +LAB_002b7228: + if (2 < local_360._4_4_) goto LAB_002b7e80; + local_118 = uStack_358; + local_120 = local_360; + *local_d8 = *local_318; + local_d8[1] = local_318[1]; + } + else { + iVar17 = 0; + ppSVar9 = local_e0; + do { + *(int *)ppSVar9 = 0; + iVar17 = iVar17 + 1; + ppSVar9 = (SVD **)((long)ppSVar9 + 4); + } while (iVar17 < local_120._4_4_); + if (local_120._4_4_ < 3) goto LAB_002b7228; +LAB_002b7e80: + local_120 = CONCAT44(local_120._4_4_,(uint)local_360); + cv::Mat::copySize((Mat *)&local_120,(Mat *)&local_360); + } + uStack_f8 = uStack_338; + local_100 = local_340; + lStack_e8 = lStack_328; + local_f0 = local_330; + uStack_108 = uStack_348; + local_110 = local_350; + } + if (param_4 == (cv *)0x0) goto LAB_002b7574; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,pAVar16); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = *piVar10 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_2c8 != 0) { + piVar10 = (int *)(lStack_2c8 + 0x14); + do { + iVar17 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_300); + } + } + puVar6 = local_138; + lStack_2c8 = 0; + local_2f0 = 0; + uStack_2d8 = 0; + local_2e0 = 0; + uStack_2e8 = 0; + if (local_300._4_4_ < 1) { +LAB_002b7344: + if (2 < local_180._4_4_) goto LAB_002b7dfc; + uStack_2f8 = (SVD *)local_178; + local_300 = local_180; + *local_2b8 = *local_138; + local_2b8[1] = puVar6[1]; + } + else { + iVar17 = 0; + piVar10 = local_2c0; + do { + *piVar10 = 0; + iVar17 = iVar17 + 1; + piVar10 = piVar10 + 1; + } while (iVar17 < local_300._4_4_); + if (local_300._4_4_ < 3) goto LAB_002b7344; +LAB_002b7dfc: + local_300 = CONCAT44(local_300._4_4_,(undefined4)local_180); + cv::Mat::copySize((Mat *)&local_300,(Mat *)&local_180); + } + uStack_2d8 = uStack_158; + local_2e0 = local_160; + lStack_2c8 = lStack_148; + local_2d0 = local_150; + uStack_2e8 = uStack_168; + local_2f0 = local_170; + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar17 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar17 = 0; + puVar11 = local_140; + do { + *puVar11 = 0; + iVar17 = iVar17 + 1; + puVar11 = puVar11 + 1; + } while (iVar17 < local_180._4_4_); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (uVar13 != ((uint)local_300 & 0xfff)) { + local_3f0 = 0; + local_3e8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_3f0,0x10); + uVar4 = s_v_type______type_00467fe8._8_8_; + *(undefined8 *)pcVar7 = s_v_type______type_00467fe8._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar4; + cv::error(-0xd7,(String *)&local_3f0,"void cvSVD(CvArr*, CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x652); + cv::String::deallocate((String *)&local_3f0); + } + if (lStack_2c8 != 0) { + piVar10 = (int *)(lStack_2c8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = *piVar10 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_28 != 0) { + piVar10 = (int *)(lStack_28 + 0x14); + do { + iVar17 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (local_5c < 1) { +LAB_002b750c: + local_60 = (uint)local_300; + if (2 < local_300._4_4_) goto LAB_002b7e90; + local_5c = local_300._4_4_; + local_58 = (int)uStack_2f8; + local_54 = uStack_2f8._4_4_; + *local_18 = *local_2b8; + local_18[1] = local_2b8[1]; + } + else { + iVar17 = 0; + piVar10 = local_20; + do { + *piVar10 = 0; + iVar17 = iVar17 + 1; + piVar10 = piVar10 + 1; + } while (iVar17 < local_5c); + if (local_5c < 3) goto LAB_002b750c; +LAB_002b7e90: + local_60 = (uint)local_300; + cv::Mat::copySize((Mat *)&local_60,(Mat *)&local_300); + } + uStack_38 = uStack_2d8; + local_40 = local_2e0; + lStack_28 = lStack_2c8; + local_30 = local_2d0; + uStack_48 = uStack_2e8; + local_50 = local_2f0; +LAB_002b7574: + local_170 = 0; + uVar13 = 0; + local_180._0_4_ = 0x1010000; + if ((local_110 == 0) && (uVar13 = 0, local_50 == 0)) { + uVar13 = 2; + } + if ((local_1d8 == local_1d4) || + (((*(int *)((long)local_e0 + 4) != iVar18 || (*(int *)local_e0 != iVar18)) && + ((local_20[1] != iVar18 || (*local_20 != iVar18)))))) { + uVar14 = 0; + } + else { + uVar14 = 4; + } + local_178 = (Mat *)&local_1e0; + cv::SVD::operator()((SVD *)&local_120,(_InputArray *)&local_180,uVar13 | param_5 & 1 | uVar14); + if (local_350 != 0) { + if (local_360._4_4_ < 3) { + lVar12 = (long)uStack_358._4_4_ * (long)(int)uStack_358; + } + else { + lVar8 = 0; + lVar12 = 1; + do { + piVar10 = local_320 + lVar8; + lVar8 = lVar8 + 1; + lVar12 = lVar12 * *piVar10; + } while ((int)lVar8 < local_360._4_4_); + } + if (lVar12 != 0) { + if ((param_5 >> 1 & 1) == 0) { + if (local_110 != local_350) { + if ((*(int *)((long)local_e0 + 4) != local_320[1]) || (*(int *)local_e0 != *local_320)) { + local_3e0 = 0; + local_3d8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_3e0,0x18); + uVar5 = s_u_size______svd_u_size___00468000._8_8_; + uVar4 = s_u_size______svd_u_size___00468000._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_u_size______svd_u_size___00468000._16_8_; + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_3e0,"void cvSVD(CvArr*, CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x661); + cv::String::deallocate((String *)&local_3e0); + } + local_170 = 0; + local_180._0_4_ = 0x2010000; + local_178 = (Mat *)&local_360; + cv::Mat::copyTo((Mat *)&local_120,(_OutputArray *)&local_180); + } + } + else { + local_170 = 0; + local_180._0_4_ = 0x2010000; + local_230 = 0; + local_240 = 0x1010000; + local_238 = (SVD *)&local_120; + local_178 = (Mat *)&local_360; + cv::transpose((_InputArray *)&local_240,(_OutputArray *)&local_180); + } + } + } + if (local_2f0 != 0) { + if (local_300._4_4_ < 3) { + lVar12 = (long)uStack_2f8._4_4_ * (long)(int)uStack_2f8; + } + else { + lVar8 = 0; + lVar12 = 1; + do { + piVar10 = local_2c0 + lVar8; + lVar8 = lVar8 + 1; + lVar12 = lVar12 * *piVar10; + } while ((int)lVar8 < local_300._4_4_); + } + if (lVar12 != 0) { + if ((param_5 >> 2 & 1) == 0) { + local_238 = (SVD *)&local_60; + local_230 = CONCAT44(param_5,param_5) & 0x400000004; + local_170 = CONCAT44(param_5,param_5) & 0x400000004; + local_240 = 0x1010000; + local_180._0_4_ = 0x2010000; + local_178 = (Mat *)&local_300; + cv::transpose((_InputArray *)&local_240,(_OutputArray *)&local_180); + } + else if (local_50 != local_2f0) { + if ((local_20[1] != local_2c0[1]) || (*local_20 != *local_2c0)) { + local_3d0 = 0; + local_3c8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_3d0,0x19); + cVar2 = s_v_size______svd_vt_size___00468020[0x18]; + uVar5 = s_v_size______svd_vt_size___00468020._8_8_; + uVar4 = s_v_size______svd_vt_size___00468020._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_v_size______svd_vt_size___00468020._16_8_; + pcVar7[0x18] = cVar2; + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_3d0,"void cvSVD(CvArr*, CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/lapack.cpp",0x66c); + cv::String::deallocate((String *)&local_3d0); + } + local_170 = 0; + local_180._0_4_ = 0x2010000; + local_178 = (Mat *)&local_300; + cv::Mat::copyTo((Mat *)&local_60,(_OutputArray *)&local_180); + } + } + } + if (local_3b0 != local_b0) { + if ((local_80[1] == local_380[1]) && (*local_380 == *local_80)) { + local_170 = 0; + local_180._0_4_ = 0x2010000; + local_178 = (Mat *)&local_3c0; + cv::Mat::copyTo((Mat *)&local_c0,(_OutputArray *)&local_180); + } + else { + local_178 = (Mat *)0x0; + local_180._0_4_ = 0; + local_180._4_4_ = 0; + uStack_168 = 0; + local_170 = 0; + cv::Mat::operator=((Mat *)&local_3c0,(Scalar_ *)&local_180); + cv::Mat::diag((int)(Mat *)&local_3c0); + local_230 = 0; + local_240 = 0x2010000; + local_238 = (SVD *)&local_180; + cv::Mat::copyTo((Mat *)&local_c0,(_OutputArray *)&local_240); + if (lStack_148 != 0) { + piVar10 = (int *)(lStack_148 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar18 = 0; + do { + *local_140 = 0; + iVar18 = iVar18 + 1; + local_140 = local_140 + 1; + } while (iVar18 < local_180._4_4_); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + } + } + if (lStack_28 != 0) { + piVar10 = (int *)(lStack_28 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar18 = 0; + piVar10 = local_20; + do { + *piVar10 = 0; + iVar18 = iVar18 + 1; + piVar10 = piVar10 + 1; + } while (iVar18 < local_5c); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + if (lStack_88 != 0) { + piVar10 = (int *)(lStack_88 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + lStack_98 = 0; + local_a0 = 0; + lStack_a8 = 0; + if (0 < local_bc) { + iVar18 = 0; + piVar10 = local_80; + do { + *piVar10 = 0; + iVar18 = iVar18 + 1; + piVar10 = piVar10 + 1; + } while (iVar18 < local_bc); + } + if (local_78 != (AutoBuffer *)&local_70) { + cv::fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar10 = (int *)(lStack_e8 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar18 = 0; + ppSVar9 = local_e0; + do { + *(int *)ppSVar9 = 0; + iVar18 = iVar18 + 1; + ppSVar9 = (SVD **)((long)ppSVar9 + 4); + } while (iVar18 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + if (lStack_2c8 != 0) { + piVar10 = (int *)(lStack_2c8 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_300); + } + } + lStack_2c8 = 0; + local_2f0 = 0; + uStack_2d8 = 0; + local_2e0 = 0; + uStack_2e8 = 0; + if (0 < local_300._4_4_) { + iVar18 = 0; + piVar10 = local_2c0; + do { + *piVar10 = 0; + iVar18 = iVar18 + 1; + piVar10 = piVar10 + 1; + } while (iVar18 < local_300._4_4_); + } + if (local_2b8 != &local_2b0) { + cv::fastFree(local_2b8); + } + if (lStack_328 != 0) { + piVar10 = (int *)(lStack_328 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + lStack_328 = 0; + local_350 = 0; + uStack_338 = 0; + local_340 = 0; + uStack_348 = 0; + if (0 < local_360._4_4_) { + iVar18 = 0; + piVar10 = local_320; + do { + *piVar10 = 0; + iVar18 = iVar18 + 1; + piVar10 = piVar10 + 1; + } while (iVar18 < local_360._4_4_); + } + if (local_318 != &local_310) { + cv::fastFree(local_318); + } + if (lStack_388 != 0) { + piVar10 = (int *)(lStack_388 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_3c0); + } + } + lStack_388 = 0; + local_3b0 = 0; + lStack_398 = 0; + local_3a0 = 0; + lStack_3a8 = 0; + if (0 < local_3bc) { + iVar18 = 0; + do { + *local_380 = 0; + iVar18 = iVar18 + 1; + local_380 = local_380 + 1; + } while (iVar18 < local_3bc); + } + if (local_378 != alStack_370) { + cv::fastFree(local_378); + } + if (local_1a8 != 0) { + piVar10 = (int *)(local_1a8 + 0x14); + do { + iVar18 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar18 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar18 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1dc) { + iVar18 = 0; + do { + *local_1a0 = 0; + iVar18 = iVar18 + 1; + local_1a0 = local_1a0 + 1; + } while (iVar18 < local_1dc); + } + if (local_198 != auStack_190) { + cv::fastFree(local_198); + } + return; +} + + +================================================================== + +### FUNC 002b8290 (276 bytes) name=FUN_002b8290 + +void FUN_002b8290(long param_1,long param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + int iVar3; + byte bVar4; + uint uVar5; + undefined1 uVar6; + int iVar7; + long lVar8; + undefined4 local_8; + bool local_4; + + if ((int)param_4 < 0) { + local_4 = (bool)((byte)param_4 & 1); + if ((param_4 & 1) == 0) { + local_8 = 0x1ff0100; + } + else { + local_4 = param_4 == 0xffffffff; + local_8 = 0x1ffff00; + } + lVar8 = 0; + if (0 < param_3) { + do { + uVar6 = 0; + if (*(byte *)(param_1 + lVar8) < 3) { + uVar6 = *(undefined1 *)((long)&local_8 + (long)(int)(*(byte *)(param_1 + lVar8) + 2)); + } + *(undefined1 *)(param_2 + lVar8) = uVar6; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < param_3); + return; + } + } + else { + lVar8 = 0; + if (0 < param_3) { + do { + while( true ) { + bVar4 = *(byte *)(param_1 + lVar8); + uVar5 = (uint)bVar4; + if ((int)param_4 < 2) break; + iVar7 = 1; + uVar2 = param_4; + do { + uVar1 = uVar2 & 1; + uVar2 = (int)uVar2 >> 1; + iVar3 = uVar5 * iVar7; + if (uVar1 == 0) { + iVar3 = iVar7; + } + uVar5 = uVar5 * uVar5; + iVar7 = iVar3; + } while (uVar2 != 1); + uVar5 = uVar5 * iVar3; + if (0xff < uVar5) { + uVar5 = 0xff; + } + *(char *)(param_2 + lVar8) = (char)uVar5; + lVar8 = lVar8 + 1; + if (param_3 <= (int)lVar8) { + return; + } + } + if (0xff < uVar5) { + bVar4 = 0xff; + } + *(byte *)(param_2 + lVar8) = bVar4; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002b83a4 (272 bytes) name=FUN_002b83a4 + +void FUN_002b83a4(long param_1,long param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + int iVar3; + ushort uVar4; + uint uVar5; + undefined2 uVar6; + int iVar7; + long lVar8; + undefined8 local_10; + ushort local_8; + + if ((int)param_4 < 0) { + local_8 = (ushort)param_4 & 1; + if ((param_4 & 1) == 0) { + local_10 = 0x1ffff00010000; + } + else { + local_8 = (ushort)(param_4 == 0xffffffff); + local_10 = 0x1ffffffff0000; + } + lVar8 = 0; + if (0 < param_3) { + do { + uVar4 = *(ushort *)(param_1 + lVar8 * 2); + uVar6 = 0; + if (uVar4 < 3) { + uVar6 = *(undefined2 *)((long)&local_10 + (long)(int)(uVar4 + 2) * 2); + } + *(undefined2 *)(param_2 + lVar8 * 2) = uVar6; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < param_3); + return; + } + } + else { + lVar8 = 0; + if (0 < param_3) { + do { + while( true ) { + uVar4 = *(ushort *)(param_1 + lVar8 * 2); + uVar5 = (uint)uVar4; + if ((int)param_4 < 2) break; + iVar7 = 1; + uVar2 = param_4; + do { + uVar1 = uVar2 & 1; + uVar2 = (int)uVar2 >> 1; + iVar3 = uVar5 * iVar7; + if (uVar1 == 0) { + iVar3 = iVar7; + } + uVar5 = uVar5 * uVar5; + iVar7 = iVar3; + } while (uVar2 != 1); + uVar5 = uVar5 * iVar3; + if (0xffff < uVar5) { + uVar5 = 0xffff; + } + *(short *)(param_2 + lVar8 * 2) = (short)uVar5; + lVar8 = lVar8 + 1; + if (param_3 <= (int)lVar8) { + return; + } + } + if (0xffff < uVar5) { + uVar4 = 0xffff; + } + *(ushort *)(param_2 + lVar8 * 2) = uVar4; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002b84b4 (140 bytes) name=FUN_002b84b4 + +void FUN_002b84b4(long param_1,long param_2,int param_3,int param_4) + +{ + uint uVar1; + ulong uVar2; + long lVar3; + int iVar4; + ulong uVar5; + double dVar6; + double dVar7; + + lVar3 = 0; + uVar5 = (long)param_4 >> 0x3f; + uVar5 = ((long)param_4 ^ uVar5) - uVar5; + if (0 < param_3) { + do { + while( true ) { + dVar6 = *(double *)(param_1 + lVar3 * 8); + iVar4 = (int)uVar5; + if (-1 < param_4) break; + dVar6 = 1.0 / dVar6; + if (iVar4 < 2) goto LAB_002b8524; +LAB_002b84e0: + uVar2 = uVar5 & 0xffffffff; + dVar7 = 1.0; + do { + if ((uVar2 & 1) != 0) { + dVar7 = dVar7 * dVar6; + } + uVar1 = (int)uVar2 >> 1; + uVar2 = (ulong)uVar1; + dVar6 = dVar6 * dVar6; + } while (uVar1 != 1); + *(double *)(param_2 + lVar3 * 8) = dVar7 * dVar6; + lVar3 = lVar3 + 1; + if (param_3 <= (int)lVar3) { + return; + } + } + if (1 < iVar4) goto LAB_002b84e0; +LAB_002b8524: + *(double *)(param_2 + lVar3 * 8) = dVar6 * 1.0; + lVar3 = lVar3 + 1; + } while ((int)lVar3 < param_3); + } + return; +} + + +================================================================== + +### FUNC 002b8540 (4 bytes) name=thunk_FUN_003caaf0 + +void thunk_FUN_003caaf0(long param_1,long param_2,int param_3) + +{ + long lVar1; + double dVar2; + double __x; + + if (0 < param_3) { + lVar1 = 0; + do { + __x = *(double *)(param_1 + lVar1 * 8); + dVar2 = SQRT(__x); + if (NAN(dVar2)) { + dVar2 = sqrt(__x); + } + *(double *)(param_2 + lVar1 * 8) = dVar2; + lVar1 = lVar1 + 1; + } while (lVar1 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 002b8544 (4 bytes) name=thunk_FUN_003ca9b0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void thunk_FUN_003ca9b0(long param_1,long param_2,int param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined1 (*pauVar5) [12]; + undefined8 uVar6; + undefined8 uVar7; + undefined1 (*pauVar8) [12]; + ulong uVar9; + float *pfVar10; + long lVar11; + ulong uVar12; + float fVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + float fVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + + uVar7 = _UNK_003caae8; + uVar6 = _DAT_003caae0; + if (param_3 < 8) { + uVar12 = 0; + } + else { + uVar1 = param_3 - 8U >> 3; + pfVar10 = (float *)(param_2 + 0x10); + pauVar8 = (undefined1 (*) [12])(param_1 + 0x10); + do { + uVar3 = *(undefined8 *)(*pauVar8 + 8); + fVar13 = (float)((ulong)uVar3 >> 0x20); + uVar2 = *(undefined8 *)*pauVar8; + pauVar5 = pauVar8 + 2; + fVar17 = (float)((ulong)*(undefined8 *)(pauVar8[-1] + 4) >> 0x20); + uVar4 = *(undefined8 *)*(undefined1 (*) [12])(pauVar8[-2] + 8); + auVar15._12_4_ = fVar13; + auVar15._0_12_ = *pauVar8; + auVar18._8_8_ = uVar7; + auVar18._0_8_ = uVar6; + auVar23 = NEON_fmax(auVar15,auVar18,4); + auVar18 = NEON_frsqrte(auVar23,4); + auVar20._12_4_ = fVar17; + auVar20._0_12_ = *(undefined1 (*) [12])(pauVar8[-2] + 8); + auVar22._8_8_ = uVar7; + auVar22._0_8_ = uVar6; + auVar24 = NEON_fmax(auVar20,auVar22,4); + auVar22 = NEON_frsqrte(auVar24,4); + auVar14._0_4_ = auVar23._0_4_ * auVar18._0_4_; + auVar14._4_4_ = auVar23._4_4_ * auVar18._4_4_; + auVar14._8_4_ = auVar23._8_4_ * auVar18._8_4_; + auVar14._12_4_ = auVar23._12_4_ * auVar18._12_4_; + auVar15 = NEON_frsqrts(auVar14,auVar18,4); + auVar19._0_4_ = auVar24._0_4_ * auVar22._0_4_; + auVar19._4_4_ = auVar24._4_4_ * auVar22._4_4_; + auVar19._8_4_ = auVar24._8_4_ * auVar22._8_4_; + auVar19._12_4_ = auVar24._12_4_ * auVar22._12_4_; + auVar20 = NEON_frsqrts(auVar19,auVar22,4); + auVar21._0_4_ = auVar22._0_4_ * auVar20._0_4_; + auVar21._4_4_ = auVar22._4_4_ * auVar20._4_4_; + auVar21._8_4_ = auVar22._8_4_ * auVar20._8_4_; + auVar21._12_4_ = auVar22._12_4_ * auVar20._12_4_; + auVar16._0_4_ = auVar18._0_4_ * auVar15._0_4_; + auVar16._4_4_ = auVar18._4_4_ * auVar15._4_4_; + auVar16._8_4_ = auVar18._8_4_ * auVar15._8_4_; + auVar16._12_4_ = auVar18._12_4_ * auVar15._12_4_; + auVar25._0_4_ = auVar24._0_4_ * auVar21._0_4_; + auVar25._4_4_ = auVar24._4_4_ * auVar21._4_4_; + auVar25._8_4_ = auVar24._8_4_ * auVar21._8_4_; + auVar25._12_4_ = auVar24._12_4_ * auVar21._12_4_; + auVar20 = NEON_frsqrts(auVar25,auVar21,4); + auVar24._0_4_ = auVar23._0_4_ * auVar16._0_4_; + auVar24._4_4_ = auVar23._4_4_ * auVar16._4_4_; + auVar24._8_4_ = auVar23._8_4_ * auVar16._8_4_; + auVar24._12_4_ = auVar23._12_4_ * auVar16._12_4_; + auVar15 = NEON_frsqrts(auVar24,auVar16,4); + pfVar10[-2] = (float)*(undefined8 *)(pauVar8[-1] + 4) * auVar21._8_4_ * auVar20._8_4_; + pfVar10[-1] = fVar17 * auVar21._12_4_ * auVar20._12_4_; + pfVar10[-4] = (float)uVar4 * auVar21._0_4_ * auVar20._0_4_; + pfVar10[-3] = (float)((ulong)uVar4 >> 0x20) * auVar21._4_4_ * auVar20._4_4_; + pfVar10[2] = (float)uVar3 * auVar16._8_4_ * auVar15._8_4_; + pfVar10[3] = fVar13 * auVar16._12_4_ * auVar15._12_4_; + *pfVar10 = (float)uVar2 * auVar16._0_4_ * auVar15._0_4_; + pfVar10[1] = (float)((ulong)uVar2 >> 0x20) * auVar16._4_4_ * auVar15._4_4_; + pfVar10 = pfVar10 + 8; + pauVar8 = (undefined1 (*) [12])(*pauVar5 + 8); + } while ((undefined1 (*) [12])(*pauVar5 + 8) != + (undefined1 (*) [12])(param_1 + (ulong)uVar1 * 0x20 + 0x30)); + uVar12 = (ulong)((uVar1 + 1) * 8); + } + if ((int)uVar12 < param_3) { + uVar9 = -(uVar12 >> 0x1f) & 0xfffffffc00000000 | uVar12 << 2; + lVar11 = 0; + do { + fVar17 = *(float *)(param_1 + uVar9 + lVar11); + fVar13 = SQRT(fVar17); + if (NAN(fVar13)) { + fVar13 = sqrtf(fVar17); + } + *(float *)(param_2 + uVar9 + lVar11) = fVar13; + lVar11 = lVar11 + 4; + } while (lVar11 != ((ulong)(uint)((param_3 + -1) - (int)uVar12) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 002b8548 (4 bytes) name=thunk_FUN_003ca92c + +void thunk_FUN_003ca92c(long param_1,long param_2,int param_3) + +{ + long lVar1; + double dVar2; + double __x; + + if (0 < param_3) { + lVar1 = 0; + do { + __x = *(double *)(param_1 + lVar1 * 8); + dVar2 = SQRT(__x); + if (NAN(dVar2)) { + dVar2 = sqrt(__x); + } + *(double *)(param_2 + lVar1 * 8) = 1.0 / dVar2; + lVar1 = lVar1 + 1; + } while (lVar1 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 002b854c (4 bytes) name=thunk_FUN_003ca80c + +void thunk_FUN_003ca80c(long param_1,long param_2,int param_3) + +{ + uint uVar1; + undefined1 (*pauVar2) [16]; + ulong uVar3; + float *pfVar4; + long lVar5; + ulong uVar6; + float fVar7; + undefined1 auVar8 [16]; + float __x; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + + if (param_3 < 8) { + uVar6 = 0; + } + else { + uVar1 = param_3 - 8U >> 3; + pauVar2 = (undefined1 (*) [16])(param_1 + 0x10); + pfVar4 = (float *)(param_2 + 0x10); + do { + auVar15 = *pauVar2; + auVar9 = NEON_frsqrte(auVar15,4); + auVar14 = pauVar2[-1]; + auVar13 = NEON_frsqrte(auVar14,4); + pauVar2 = pauVar2 + 2; + auVar8._0_4_ = auVar15._0_4_ * auVar9._0_4_; + auVar8._4_4_ = auVar15._4_4_ * auVar9._4_4_; + auVar8._8_4_ = auVar15._8_4_ * auVar9._8_4_; + auVar8._12_4_ = auVar15._12_4_ * auVar9._12_4_; + auVar8 = NEON_frsqrts(auVar8,auVar9,4); + auVar10._0_4_ = auVar14._0_4_ * auVar13._0_4_; + auVar10._4_4_ = auVar14._4_4_ * auVar13._4_4_; + auVar10._8_4_ = auVar14._8_4_ * auVar13._8_4_; + auVar10._12_4_ = auVar14._12_4_ * auVar13._12_4_; + auVar11 = NEON_frsqrts(auVar10,auVar13,4); + auVar12._0_4_ = auVar13._0_4_ * auVar11._0_4_; + auVar12._4_4_ = auVar13._4_4_ * auVar11._4_4_; + auVar12._8_4_ = auVar13._8_4_ * auVar11._8_4_; + auVar12._12_4_ = auVar13._12_4_ * auVar11._12_4_; + auVar11._0_4_ = auVar9._0_4_ * auVar8._0_4_; + auVar11._4_4_ = auVar9._4_4_ * auVar8._4_4_; + auVar11._8_4_ = auVar9._8_4_ * auVar8._8_4_; + auVar11._12_4_ = auVar9._12_4_ * auVar8._12_4_; + auVar9._0_4_ = auVar14._0_4_ * auVar12._0_4_; + auVar9._4_4_ = auVar14._4_4_ * auVar12._4_4_; + auVar9._8_4_ = auVar14._8_4_ * auVar12._8_4_; + auVar9._12_4_ = auVar14._12_4_ * auVar12._12_4_; + auVar8 = NEON_frsqrts(auVar9,auVar12,4); + auVar14._0_4_ = auVar15._0_4_ * auVar11._0_4_; + auVar14._4_4_ = auVar15._4_4_ * auVar11._4_4_; + auVar14._8_4_ = auVar15._8_4_ * auVar11._8_4_; + auVar14._12_4_ = auVar15._12_4_ * auVar11._12_4_; + auVar15 = NEON_frsqrts(auVar14,auVar11,4); + pfVar4[-2] = auVar12._8_4_ * auVar8._8_4_; + pfVar4[-1] = auVar12._12_4_ * auVar8._12_4_; + pfVar4[-4] = auVar12._0_4_ * auVar8._0_4_; + pfVar4[-3] = auVar12._4_4_ * auVar8._4_4_; + pfVar4[2] = auVar11._8_4_ * auVar15._8_4_; + pfVar4[3] = auVar11._12_4_ * auVar15._12_4_; + *pfVar4 = auVar11._0_4_ * auVar15._0_4_; + pfVar4[1] = auVar11._4_4_ * auVar15._4_4_; + pfVar4 = pfVar4 + 8; + } while (pauVar2 != (undefined1 (*) [16])(param_1 + (ulong)uVar1 * 0x20 + 0x30)); + uVar6 = (ulong)((uVar1 + 1) * 8); + } + if ((int)uVar6 < param_3) { + uVar3 = -(uVar6 >> 0x1f) & 0xfffffffc00000000 | uVar6 << 2; + lVar5 = 0; + do { + __x = *(float *)(param_1 + uVar3 + lVar5); + fVar7 = SQRT(__x); + if (NAN(fVar7)) { + fVar7 = sqrtf(__x); + } + *(float *)(param_2 + uVar3 + lVar5) = 1.0 / fVar7; + lVar5 = lVar5 + 4; + } while (lVar5 != ((ulong)(uint)((param_3 + -1) - (int)uVar6) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 002b8550 (496 bytes) name=FUN_002b8550 + +void FUN_002b8550(long param_1,long param_2,int param_3,uint param_4) + +{ + undefined8 *puVar1; + uint uVar2; + uint uVar3; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + undefined8 uVar6; + undefined1 auVar7 [16]; + undefined8 uVar8; + int iVar9; + undefined1 uVar10; + char cVar11; + int iVar12; + int iVar13; + int iVar14; + ulong uVar15; + long lVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + short sVar25; + short sVar26; + short sVar27; + short sVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + char local_8 [4]; + bool local_4; + + if ((int)param_4 < 0) { + local_4 = param_4 == 0xffffffff; + local_8[3] = 1; + local_8[0] = -local_4; + if ((param_4 & 1) == 0) { + local_8[1] = 1; + local_8[2] = 0x7f; + local_4 = (bool)((byte)param_4 & 1); + } + else { + local_8[1] = 0xff; + local_8[2] = 0x7f; + } + lVar16 = 0; + if (0 < param_3) { + do { + cVar11 = '\0'; + if ((int)ABS((double)(int)*(char *)(param_1 + lVar16)) < 3) { + cVar11 = local_8[*(char *)(param_1 + lVar16) + 2]; + } + *(char *)(param_2 + lVar16) = cVar11; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < param_3); + return; + } + } + else { + uVar15 = 0; + if (0 < param_3 + -7) { + do { + iVar17 = 1; + iVar18 = 1; + iVar19 = 1; + iVar20 = 1; + uVar8 = *(undefined8 *)(param_1 + uVar15); + sVar25 = (short)(char)((ulong)uVar8 >> 0x20); + sVar26 = (short)(char)((ulong)uVar8 >> 0x28); + sVar27 = (short)(char)((ulong)uVar8 >> 0x30); + sVar28 = (short)(char)((ulong)uVar8 >> 0x38); + iVar29 = (int)(short)(char)uVar8; + iVar30 = (int)(short)(char)((ulong)uVar8 >> 8); + iVar31 = (int)(short)(char)((ulong)uVar8 >> 0x10); + iVar32 = (int)(short)(char)((ulong)uVar8 >> 0x18); + iVar14 = (int)sVar25; + iVar9 = (int)sVar26; + iVar13 = (int)sVar27; + iVar12 = (int)sVar28; + if ((int)param_4 < 2) { + iVar23 = 1; + iVar24 = 1; + iVar21 = 1; + iVar22 = 1; + } + else { + iVar23 = 1; + iVar24 = 1; + iVar21 = 1; + iVar22 = 1; + uVar3 = param_4; + iVar14 = (int)sVar25; + iVar9 = (int)sVar26; + iVar13 = (int)sVar27; + iVar12 = (int)sVar28; + do { + uVar2 = uVar3 & 1; + if ((uVar3 & 1) != 0) { + iVar21 = iVar29 * iVar21; + iVar22 = iVar30 * iVar22; + iVar23 = iVar31 * iVar23; + iVar24 = iVar32 * iVar24; + } + uVar3 = (int)uVar3 >> 1; + iVar29 = iVar29 * iVar29; + iVar30 = iVar30 * iVar30; + iVar31 = iVar31 * iVar31; + iVar32 = iVar32 * iVar32; + if (uVar2 != 0) { + iVar17 = iVar14 * iVar17; + iVar18 = iVar9 * iVar18; + iVar19 = iVar13 * iVar19; + iVar20 = iVar12 * iVar20; + } + iVar14 = iVar14 * iVar14; + iVar9 = iVar9 * iVar9; + iVar13 = iVar13 * iVar13; + iVar12 = iVar12 * iVar12; + } while (uVar3 != 1); + } + puVar1 = (undefined8 *)(param_2 + uVar15); + uVar15 = uVar15 + 8; + auVar5._4_4_ = iVar30 * iVar22; + auVar5._0_4_ = iVar29 * iVar21; + auVar5._8_4_ = iVar31 * iVar23; + auVar5._12_4_ = iVar32 * iVar24; + uVar6 = NEON_sqxtn(CONCAT44(iVar30 * iVar22,iVar29 * iVar21),auVar5,4); + auVar4._4_4_ = iVar9 * iVar18; + auVar4._0_4_ = iVar14 * iVar17; + auVar4._8_4_ = iVar13 * iVar19; + auVar4._12_4_ = iVar12 * iVar20; + uVar8 = NEON_sqxtn(CONCAT44(iVar9 * iVar18,iVar14 * iVar17),auVar4,4); + auVar7._8_2_ = (short)uVar8; + auVar7._0_8_ = uVar6; + auVar7._10_2_ = (short)((ulong)uVar8 >> 0x10); + auVar7._12_2_ = (short)((ulong)uVar8 >> 0x20); + auVar7._14_2_ = (short)((ulong)uVar8 >> 0x30); + uVar8 = NEON_sqxtn(uVar8,auVar7,2); + *puVar1 = uVar8; + } while ((int)uVar15 < param_3 + -7); + uVar15 = (ulong)((param_3 - 8U & 0xfffffff8) + 8); + } + iVar14 = (int)uVar15; + if (iVar14 < param_3) { + lVar16 = 0; + do { + iVar9 = (int)*(char *)(param_1 + iVar14 + lVar16); + if ((int)param_4 < 2) { + iVar13 = 1; + } + else { + iVar12 = 1; + uVar3 = param_4; + do { + uVar2 = uVar3 & 1; + uVar3 = (int)uVar3 >> 1; + iVar13 = iVar12 * iVar9; + if (uVar2 == 0) { + iVar13 = iVar12; + } + iVar9 = iVar9 * iVar9; + iVar12 = iVar13; + } while (uVar3 != 1); + } + iVar13 = iVar13 * iVar9; + uVar10 = (undefined1)iVar13; + if ((0xff < iVar13 + 0x80U) && (uVar10 = 0x7f, iVar13 < 1)) { + uVar10 = 0x80; + } + *(undefined1 *)(param_2 + iVar14 + lVar16) = uVar10; + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((param_3 + -1) - iVar14) + 1); + } + } + return; +} + + +================================================================== + +### FUNC 002b8740 (500 bytes) name=FUN_002b8740 + +void FUN_002b8740(undefined8 *param_1,undefined8 *param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + undefined2 uVar6; + ulong uVar7; + short sVar8; + undefined8 *puVar9; + undefined8 *puVar10; + long lVar11; + ulong uVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + int iVar21; + undefined8 uVar22; + int iVar23; + int iVar24; + undefined8 uVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + int iVar30; + short local_10 [8]; + + if ((int)param_4 < 0) { + local_10[3] = 1; + local_10[0] = -(ushort)(param_4 == 0xffffffff); + local_10[4] = (ushort)param_4 & 1; + if ((param_4 & 1) == 0) { + local_10[1] = 1; + local_10[2] = 0x7fff; + } + else { + local_10[1] = 0xffff; + local_10[4] = (short)(param_4 == 0xffffffff); + local_10[2] = 0x7fff; + } + lVar11 = 0; + if (0 < param_3) { + do { + sVar8 = 0; + iVar13 = (int)*(short *)((long)param_1 + lVar11 * 2); + if ((int)ABS((double)iVar13) < 3) { + sVar8 = local_10[iVar13 + 2]; + } + *(short *)((long)param_2 + lVar11 * 2) = sVar8; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < param_3); + return; + } + } + else { + uVar12 = 0; + if (7 < param_3) { + uVar3 = param_3 - 8U >> 3; + puVar9 = param_1; + puVar10 = param_2; + do { + uVar25 = puVar9[1]; + uVar22 = *puVar9; + iVar13 = 1; + iVar14 = 1; + iVar15 = 1; + iVar16 = 1; + iVar21 = (int)(short)uVar22; + iVar23 = (int)(short)((ulong)uVar22 >> 0x10); + iVar24 = (int)(short)((ulong)uVar22 >> 0x20); + iVar26 = (int)(short)((ulong)uVar22 >> 0x30); + iVar27 = (int)(short)uVar25; + iVar28 = (int)(short)((ulong)uVar25 >> 0x10); + iVar29 = (int)(short)((ulong)uVar25 >> 0x20); + iVar30 = (int)(short)((ulong)uVar25 >> 0x30); + if ((int)param_4 < 2) { + iVar19 = 1; + iVar20 = 1; + iVar17 = 1; + iVar18 = 1; + } + else { + iVar19 = 1; + iVar20 = 1; + iVar17 = 1; + iVar18 = 1; + uVar2 = param_4; + do { + uVar1 = uVar2 & 1; + if ((uVar2 & 1) != 0) { + iVar17 = iVar21 * iVar17; + iVar18 = iVar23 * iVar18; + iVar19 = iVar24 * iVar19; + iVar20 = iVar26 * iVar20; + } + uVar2 = (int)uVar2 >> 1; + iVar21 = iVar21 * iVar21; + iVar23 = iVar23 * iVar23; + iVar24 = iVar24 * iVar24; + iVar26 = iVar26 * iVar26; + if (uVar1 != 0) { + iVar13 = iVar27 * iVar13; + iVar14 = iVar28 * iVar14; + iVar15 = iVar29 * iVar15; + iVar16 = iVar30 * iVar16; + } + iVar27 = iVar27 * iVar27; + iVar28 = iVar28 * iVar28; + iVar29 = iVar29 * iVar29; + iVar30 = iVar30 * iVar30; + } while (uVar2 != 1); + } + puVar9 = puVar9 + 2; + auVar5._4_4_ = iVar23 * iVar18; + auVar5._0_4_ = iVar21 * iVar17; + auVar5._8_4_ = iVar24 * iVar19; + auVar5._12_4_ = iVar26 * iVar20; + uVar25 = NEON_sqxtn(CONCAT44(iVar23 * iVar18,iVar21 * iVar17),auVar5,4); + auVar4._4_4_ = iVar28 * iVar14; + auVar4._0_4_ = iVar27 * iVar13; + auVar4._8_4_ = iVar29 * iVar15; + auVar4._12_4_ = iVar30 * iVar16; + uVar22 = NEON_sqxtn(CONCAT44(iVar28 * iVar14,iVar27 * iVar13),auVar4,4); + puVar10[1] = uVar22; + *puVar10 = uVar25; + puVar10 = puVar10 + 2; + } while (puVar9 != param_1 + ((ulong)uVar3 + 1) * 2); + uVar12 = (ulong)((uVar3 + 1) * 8); + } + if ((int)uVar12 < param_3) { + uVar7 = -(uVar12 >> 0x1f) & 0xfffffffe00000000 | uVar12 << 1; + lVar11 = 0; + do { + iVar13 = (int)*(short *)((long)param_1 + lVar11 + uVar7); + if ((int)param_4 < 2) { + iVar14 = 1; + } + else { + iVar15 = 1; + uVar3 = param_4; + do { + uVar2 = uVar3 & 1; + uVar3 = (int)uVar3 >> 1; + iVar14 = iVar15 * iVar13; + if (uVar2 == 0) { + iVar14 = iVar15; + } + iVar13 = iVar13 * iVar13; + iVar15 = iVar14; + } while (uVar3 != 1); + } + iVar14 = iVar14 * iVar13; + uVar6 = (undefined2)iVar14; + if ((0xffff < iVar14 + 0x8000U) && (uVar6 = 0x7fff, iVar14 < 1)) { + uVar6 = 0x8000; + } + *(undefined2 *)((long)param_2 + lVar11 + uVar7) = uVar6; + lVar11 = lVar11 + 2; + } while (lVar11 != ((ulong)(uint)((param_3 + -1) - (int)uVar12) + 1) * 2); + } + } + return; +} + + +================================================================== + +### FUNC 002b8934 (480 bytes) name=FUN_002b8934 + +void FUN_002b8934(long param_1,long param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + ulong uVar4; + undefined8 *puVar5; + undefined8 *puVar6; + long lVar7; + ulong uVar8; + long lVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + int iVar19; + undefined8 uVar20; + int iVar21; + undefined8 uVar22; + int iVar23; + int iVar24; + undefined8 uVar25; + int iVar26; + int iVar27; + undefined8 uVar28; + int iVar29; + int local_18 [6]; + + if ((int)param_4 < 0) { + local_18[3] = 1; + local_18[4] = (int)(param_4 == 0xffffffff); + local_18[0] = -local_18[4]; + if ((param_4 & 1) == 0) { + local_18[1] = 1; + local_18[2] = 0x7fffffff; + local_18[4] = param_4 & 1; + } + else { + local_18[1] = 0xffffffff; + local_18[2] = 0x7fffffff; + } + lVar7 = 0; + if (0 < param_3) { + do { + uVar3 = *(uint *)(param_1 + lVar7 * 4); + iVar11 = 0; + if ((int)((uVar3 ^ (int)uVar3 >> 0x1f) - ((int)uVar3 >> 0x1f)) < 3) { + iVar11 = local_18[(int)(uVar3 + 2)]; + } + *(int *)(param_2 + lVar7 * 4) = iVar11; + lVar7 = lVar7 + 1; + } while ((int)lVar7 < param_3); + return; + } + } + else { + uVar8 = 0; + if (7 < param_3) { + uVar3 = param_3 - 8U >> 3; + puVar5 = (undefined8 *)(param_1 + 0x10); + puVar6 = (undefined8 *)(param_2 + 0x10); + do { + iVar10 = 1; + iVar11 = 1; + iVar12 = 1; + iVar13 = 1; + iVar14 = 1; + iVar15 = 1; + uVar28 = puVar5[1]; + uVar25 = *puVar5; + uVar22 = puVar5[-1]; + uVar20 = puVar5[-2]; + iVar16 = iVar11; + iVar17 = iVar12; + iVar18 = iVar14; + iVar19 = iVar15; + uVar1 = param_4; + if (1 < (int)param_4) { + do { + iVar10 = (int)uVar20; + iVar13 = (int)((ulong)uVar20 >> 0x20); + iVar21 = (int)uVar22; + iVar23 = (int)((ulong)uVar22 >> 0x20); + iVar24 = (int)uVar25; + iVar26 = (int)((ulong)uVar25 >> 0x20); + iVar27 = (int)uVar28; + iVar29 = (int)((ulong)uVar28 >> 0x20); + if ((uVar1 & 1) != 0) { + iVar16 = iVar10 * iVar16; + iVar17 = iVar13 * iVar17; + iVar18 = iVar21 * iVar18; + iVar19 = iVar23 * iVar19; + } + uVar2 = (int)uVar1 >> 1; + uVar20 = CONCAT44(iVar13 * iVar13,iVar10 * iVar10); + uVar22 = CONCAT44(iVar23 * iVar23,iVar21 * iVar21); + if ((uVar1 & 1) != 0) { + iVar11 = iVar11 * iVar24; + iVar12 = iVar12 * iVar26; + iVar14 = iVar14 * iVar27; + iVar15 = iVar15 * iVar29; + } + uVar25 = CONCAT44(iVar26 * iVar26,iVar24 * iVar24); + uVar28 = CONCAT44(iVar29 * iVar29,iVar27 * iVar27); + iVar10 = iVar11; + iVar13 = iVar14; + uVar1 = uVar2; + } while (uVar2 != 1); + } + puVar5 = puVar5 + 4; + puVar6[-1] = CONCAT44((int)((ulong)uVar22 >> 0x20) * iVar19,(int)uVar22 * iVar18); + puVar6[-2] = CONCAT44((int)((ulong)uVar20 >> 0x20) * iVar17,(int)uVar20 * iVar16); + puVar6[1] = CONCAT44(iVar15 * (int)((ulong)uVar28 >> 0x20),iVar13 * (int)uVar28); + *puVar6 = CONCAT44(iVar12 * (int)((ulong)uVar25 >> 0x20),iVar10 * (int)uVar25); + puVar6 = puVar6 + 4; + } while (puVar5 != (undefined8 *)(param_1 + (ulong)uVar3 * 0x20 + 0x30)); + uVar8 = (ulong)((uVar3 + 1) * 8); + } + if ((int)uVar8 < param_3) { + uVar4 = -(uVar8 >> 0x1f) & 0xfffffffc00000000 | uVar8 << 2; + param_2 = param_2 + uVar4; + lVar7 = 0; + lVar9 = ((ulong)(uint)((param_3 + -1) - (int)uVar8) + 1) * 4; + do { + while (iVar11 = *(int *)(param_1 + uVar4 + lVar7), (int)param_4 < 2) { + *(int *)(param_2 + lVar7) = iVar11; + lVar7 = lVar7 + 4; + if (lVar7 == lVar9) { + return; + } + } + iVar12 = 1; + uVar3 = param_4; + do { + uVar1 = uVar3 & 1; + uVar3 = (int)uVar3 >> 1; + iVar10 = iVar12 * iVar11; + if (uVar1 == 0) { + iVar10 = iVar12; + } + iVar11 = iVar11 * iVar11; + iVar12 = iVar10; + } while (uVar3 != 1); + *(int *)(param_2 + lVar7) = iVar10 * iVar11; + lVar7 = lVar7 + 4; + } while (lVar7 != lVar9); + } + } + return; +} + + +================================================================== + +### FUNC 002b8b14 (408 bytes) name=FUN_002b8b14 + +void FUN_002b8b14(long param_1,long param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + ulong uVar3; + long lVar4; + uint uVar5; + undefined1 (*pauVar6) [16]; + float *pfVar7; + long lVar8; + ulong uVar9; + float fVar10; + float fVar12; + float fVar13; + undefined1 auVar11 [16]; + float fVar14; + float fVar15; + float fVar17; + float fVar18; + float fVar19; + undefined1 auVar16 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + + if (param_3 < 8) { + uVar9 = 0; + uVar5 = (param_4 ^ (int)param_4 >> 0x1f) - ((int)param_4 >> 0x1f); + } + else { + uVar2 = param_3 - 8U >> 3; + uVar9 = (long)(int)param_4 >> 0x3f; + pfVar7 = (float *)(param_2 + 0x10); + uVar9 = ((long)(int)param_4 ^ uVar9) - uVar9; + pauVar6 = (undefined1 (*) [16])(param_1 + 0x10); + do { + auVar11 = *pauVar6; + auVar16 = pauVar6[-1]; + uVar5 = (uint)uVar9; + if ((int)param_4 < 0) { + auVar21 = NEON_frecpe(auVar16,4); + auVar20 = NEON_frecpe(auVar11,4); + auVar24 = NEON_frecps(auVar16,auVar21,4); + auVar23 = NEON_frecps(auVar11,auVar20,4); + auVar22._0_4_ = auVar21._0_4_ * auVar24._0_4_; + auVar22._4_4_ = auVar21._4_4_ * auVar24._4_4_; + auVar22._8_4_ = auVar21._8_4_ * auVar24._8_4_; + auVar22._12_4_ = auVar21._12_4_ * auVar24._12_4_; + auVar24._0_4_ = auVar20._0_4_ * auVar23._0_4_; + auVar24._4_4_ = auVar20._4_4_ * auVar23._4_4_; + auVar24._8_4_ = auVar20._8_4_ * auVar23._8_4_; + auVar24._12_4_ = auVar20._12_4_ * auVar23._12_4_; + auVar21 = NEON_frecps(auVar16,auVar22,4); + auVar20 = NEON_frecps(auVar11,auVar24,4); + auVar16._0_4_ = auVar22._0_4_ * auVar21._0_4_; + auVar16._4_4_ = auVar22._4_4_ * auVar21._4_4_; + auVar16._8_4_ = auVar22._8_4_ * auVar21._8_4_; + auVar16._12_4_ = auVar22._12_4_ * auVar21._12_4_; + auVar11._0_4_ = auVar24._0_4_ * auVar20._0_4_; + auVar11._4_4_ = auVar24._4_4_ * auVar20._4_4_; + auVar11._8_4_ = auVar24._8_4_ * auVar20._8_4_; + auVar11._12_4_ = auVar24._12_4_ * auVar20._12_4_; + auVar20 = NEON_fmov(0x3f800000,4); + } + else { + auVar20 = NEON_fmov(0x3f800000,4); + } + uVar3 = uVar9 & 0xffffffff; + auVar21 = auVar20; + auVar23 = auVar20; + auVar24 = auVar20; + if (1 < (int)uVar5) { + do { + fVar14 = auVar16._0_4_; + fVar10 = auVar11._0_4_; + fVar17 = auVar16._4_4_; + fVar15 = auVar11._4_4_; + fVar19 = auVar16._12_4_; + fVar13 = auVar11._12_4_; + fVar18 = auVar16._8_4_; + fVar12 = auVar11._8_4_; + auVar20 = auVar21; + auVar23 = auVar24; + if ((uVar3 & 1) != 0) { + auVar23._0_4_ = auVar24._0_4_ * fVar14; + auVar23._4_4_ = auVar24._4_4_ * fVar17; + auVar23._8_4_ = auVar24._8_4_ * fVar18; + auVar23._12_4_ = auVar24._12_4_ * fVar19; + auVar20._0_4_ = auVar21._0_4_ * fVar10; + auVar20._4_4_ = auVar21._4_4_ * fVar15; + auVar20._8_4_ = auVar21._8_4_ * fVar12; + auVar20._12_4_ = auVar21._12_4_ * fVar13; + } + uVar1 = (int)uVar3 >> 1; + auVar16._0_4_ = fVar14 * fVar14; + auVar16._4_4_ = fVar17 * fVar17; + auVar16._8_4_ = fVar18 * fVar18; + auVar16._12_4_ = fVar19 * fVar19; + auVar11._0_4_ = fVar10 * fVar10; + auVar11._4_4_ = fVar15 * fVar15; + auVar11._8_4_ = fVar12 * fVar12; + auVar11._12_4_ = fVar13 * fVar13; + uVar3 = (ulong)uVar1; + auVar21 = auVar20; + auVar24 = auVar23; + } while (uVar1 != 1); + } + pauVar6 = pauVar6 + 2; + pfVar7[-2] = auVar23._8_4_ * auVar16._8_4_; + pfVar7[-1] = auVar23._12_4_ * auVar16._12_4_; + pfVar7[-4] = auVar23._0_4_ * auVar16._0_4_; + pfVar7[-3] = auVar23._4_4_ * auVar16._4_4_; + pfVar7[2] = auVar20._8_4_ * auVar11._8_4_; + pfVar7[3] = auVar20._12_4_ * auVar11._12_4_; + *pfVar7 = auVar20._0_4_ * auVar11._0_4_; + pfVar7[1] = auVar20._4_4_ * auVar11._4_4_; + pfVar7 = pfVar7 + 8; + } while (pauVar6 != (undefined1 (*) [16])(param_1 + (ulong)uVar2 * 0x20 + 0x30)); + uVar9 = (ulong)((uVar2 + 1) * 8); + } + if ((int)uVar9 < param_3) { + uVar3 = -(uVar9 >> 0x1f) & 0xfffffffc00000000 | uVar9 << 2; + param_2 = param_2 + uVar3; + lVar8 = ((ulong)(uint)((param_3 + -1) - (int)uVar9) + 1) * 4; + lVar4 = 0; + do { + while (fVar10 = *(float *)(param_1 + uVar3 + lVar4), -1 < (int)param_4) { + if ((int)uVar5 < 2) goto LAB_002b8c40; +LAB_002b8bfc: + fVar15 = 1.0; + uVar2 = uVar5; + do { + if ((uVar2 & 1) != 0) { + fVar15 = fVar15 * fVar10; + } + uVar2 = (int)uVar2 >> 1; + fVar10 = fVar10 * fVar10; + } while (uVar2 != 1); + *(float *)(param_2 + lVar4) = fVar15 * fVar10; + lVar4 = lVar4 + 4; + if (lVar4 == lVar8) { + return; + } + } + fVar10 = 1.0 / fVar10; + if (1 < (int)uVar5) goto LAB_002b8bfc; +LAB_002b8c40: + *(float *)(param_2 + lVar4) = fVar10 * 1.0; + lVar4 = lVar4 + 4; + } while (lVar4 != lVar8); + } + return; +} + + +================================================================== + +### FUNC 002b8cac (464 bytes) name=FUN_002b8cac + +undefined8 FUN_002b8cac(uint *param_1,int *param_2,int param_3,int param_4,double *param_5) + +{ + int iVar1; + int iVar2; + char cVar3; + bool bVar4; + int *piVar5; + long lVar6; + int *piVar7; + int iVar8; + long lVar9; + undefined8 uVar10; + Mat aMStack_60 [4]; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + long *local_18; + long alStack_10 [2]; + + if (param_4 < param_3) { + uVar10 = 0; + *param_2 = 0; + param_2[1] = 0; + } + else { + cv::Mat::reshape((int)param_1,1); + if (0 < local_58) { + lVar6 = 0; + do { + if (0 < local_54) { + lVar9 = lVar6 * *local_18; + piVar7 = (int *)(local_50 + lVar9); + if ((*(int *)(local_50 + lVar9) < param_3) || (param_4 < *(int *)(local_50 + lVar9))) { + iVar8 = 0; +LAB_002b8db4: + param_2[1] = (int)lVar6; + uVar10 = 0; + iVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar2 = 0; + if (iVar1 != 0) { + iVar2 = iVar8 / iVar1; + } + *param_2 = iVar8 - iVar2 * iVar1; + *param_5 = (double)*piVar7; + goto LAB_002b8de0; + } + iVar8 = 0; + piVar5 = (int *)(local_50 + lVar9 + 4); + while (piVar7 = piVar5, iVar8 = iVar8 + 1, iVar8 != local_54) { + if ((*piVar7 < param_3) || (piVar5 = piVar7 + 1, param_4 < *piVar7)) goto LAB_002b8db4; + } + } + lVar6 = lVar6 + 1; + } while ((int)lVar6 < local_58); + } + uVar10 = 1; + *param_5 = 0.0; +LAB_002b8de0: + if (local_28 != 0) { + piVar7 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar7; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar4) { + *piVar7 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != alStack_10) { + cv::fastFree(local_18); + return uVar10; + } + } + return uVar10; +} + + +================================================================== + +### FUNC 002b8e7c (508 bytes) name=FUN_002b8e7c + +bool FUN_002b8e7c(uint *param_1,int *param_2,int param_3,int param_4,double *param_5) + +{ + int iVar1; + int *piVar2; + int iVar3; + char cVar4; + bool bVar5; + char *pcVar6; + long lVar7; + char *pcVar8; + int iVar9; + long lVar10; + bool bVar11; + Mat aMStack_60 [4]; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + long *local_18; + long alStack_10 [2]; + + if (param_3 >= -0x80 || 0x7f >= param_4) { + bVar11 = param_4 < -0x80 || (0x7f < param_3 || param_4 < param_3); + if (param_4 >= -0x80 && (0x7f >= param_3 && param_4 >= param_3)) { + cv::Mat::reshape((int)param_1,1); + if (0 < local_58) { + lVar7 = 0; + do { + if (0 < local_54) { + lVar10 = lVar7 * *local_18; + pcVar8 = (char *)(local_50 + lVar10); + if ((*(char *)(local_50 + lVar10) < param_3) || (param_4 < *(char *)(local_50 + lVar10)) + ) { + iVar9 = 0; +LAB_002b8fb4: + param_2[1] = (int)lVar7; + iVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar3 = 0; + if (iVar1 != 0) { + iVar3 = iVar9 / iVar1; + } + *param_2 = iVar9 - iVar3 * iVar1; + *param_5 = (double)(int)*pcVar8; + goto LAB_002b8fdc; + } + iVar9 = 0; + pcVar6 = (char *)(local_50 + lVar10 + 1); + while (pcVar8 = pcVar6, iVar9 = iVar9 + 1, iVar9 != local_54) { + if ((*pcVar8 < param_3) || (pcVar6 = pcVar8 + 1, param_4 < *pcVar8)) + goto LAB_002b8fb4; + } + } + lVar7 = lVar7 + 1; + } while ((int)lVar7 < local_58); + } + bVar11 = true; + *param_5 = 0.0; +LAB_002b8fdc: + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != alStack_10) { + cv::fastFree(local_18); + } + return bVar11; + } + *param_2 = 0; + param_2[1] = 0; + } + return param_3 < -0x80 && 0x7f < param_4; +} + + +================================================================== + +### FUNC 002b9078 (492 bytes) name=FUN_002b9078 + +uint FUN_002b9078(uint *param_1,int *param_2,uint param_3,int param_4,double *param_5) + +{ + int iVar1; + int *piVar2; + int iVar3; + char cVar4; + bool bVar5; + byte *pbVar6; + long lVar7; + byte *pbVar8; + int iVar9; + long lVar10; + uint uVar11; + Mat aMStack_60 [4]; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + long *local_18; + long alStack_10 [2]; + + uVar11 = (uint)(0xff < param_4) & param_3 >> 0x1f; + if (uVar11 == 0) { + if (((int)param_3 < 0x100 && (int)param_3 <= param_4) && -1 < param_4) { + cv::Mat::reshape((int)param_1,1); + if (0 < local_58) { + lVar7 = 0; + do { + if (0 < local_54) { + lVar10 = lVar7 * *local_18; + pbVar8 = (byte *)(local_50 + lVar10); + if (((int)(uint)*(byte *)(local_50 + lVar10) < (int)param_3) || + (param_4 < (int)(uint)*(byte *)(local_50 + lVar10))) { + iVar9 = 0; +LAB_002b91a0: + param_2[1] = (int)lVar7; + iVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar3 = 0; + if (iVar1 != 0) { + iVar3 = iVar9 / iVar1; + } + *param_2 = iVar9 - iVar3 * iVar1; + *param_5 = (double)*pbVar8; + uVar11 = 0; + goto LAB_002b91c8; + } + iVar9 = 0; + pbVar6 = (byte *)(local_50 + lVar10 + 1); + while (pbVar8 = pbVar6, iVar9 = iVar9 + 1, iVar9 != local_54) { + if (((int)(uint)*pbVar8 < (int)param_3) || + (pbVar6 = pbVar8 + 1, param_4 < (int)(uint)*pbVar8)) goto LAB_002b91a0; + } + } + lVar7 = lVar7 + 1; + } while ((int)lVar7 < local_58); + } + uVar11 = 1; + *param_5 = 0.0; +LAB_002b91c8: + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != alStack_10) { + cv::fastFree(local_18); + } + return uVar11; + } + *param_2 = 0; + param_2[1] = 0; + } + return uVar11; +} + + +================================================================== + +### FUNC 002b9264 (496 bytes) name=FUN_002b9264 + +bool FUN_002b9264(uint *param_1,int *param_2,int param_3,int param_4,double *param_5) + +{ + int iVar1; + int *piVar2; + short sVar3; + int iVar4; + char cVar5; + bool bVar6; + long lVar7; + short *psVar8; + int iVar9; + int iVar10; + bool bVar11; + Mat aMStack_60 [4]; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + long *local_18; + long alStack_10 [2]; + + if (param_3 >= -0x8000 || 0x7fff >= param_4) { + bVar11 = param_4 < -0x8000 || (0x7fff < param_3 || param_4 < param_3); + if (param_4 >= -0x8000 && (0x7fff >= param_3 && param_4 >= param_3)) { + cv::Mat::reshape((int)param_1,1); + if (0 < local_58) { + lVar7 = 0; + do { + if (0 < local_54) { + psVar8 = (short *)(local_50 + lVar7 * *local_18); + sVar3 = *(short *)(local_50 + lVar7 * *local_18); + iVar10 = (int)sVar3; + if ((sVar3 < param_3) || (iVar9 = 0, param_4 < sVar3)) { + iVar9 = 0; +LAB_002b9394: + param_2[1] = (int)lVar7; + iVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar4 = 0; + if (iVar1 != 0) { + iVar4 = iVar9 / iVar1; + } + *param_2 = iVar9 - iVar4 * iVar1; + *param_5 = (double)iVar10; + goto LAB_002b93b8; + } + while (iVar9 = iVar9 + 1, iVar9 != local_54) { + psVar8 = psVar8 + 1; + sVar3 = *psVar8; + iVar10 = (int)sVar3; + if ((sVar3 < param_3) || (param_4 < sVar3)) goto LAB_002b9394; + } + } + lVar7 = lVar7 + 1; + } while ((int)lVar7 < local_58); + } + bVar11 = true; + *param_5 = 0.0; +LAB_002b93b8: + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar10 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != alStack_10) { + cv::fastFree(local_18); + } + return bVar11; + } + *param_2 = 0; + param_2[1] = 0; + } + return param_3 < -0x8000 && 0x7fff < param_4; +} + + +================================================================== + +### FUNC 002b9454 (480 bytes) name=FUN_002b9454 + +uint FUN_002b9454(uint *param_1,int *param_2,uint param_3,int param_4,double *param_5) + +{ + int iVar1; + int *piVar2; + int iVar3; + char cVar4; + bool bVar5; + long lVar6; + ushort *puVar7; + int iVar8; + ushort uVar9; + uint uVar10; + Mat aMStack_60 [4]; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + long *local_18; + long alStack_10 [2]; + + uVar10 = (uint)(0xffff < param_4) & param_3 >> 0x1f; + if (uVar10 == 0) { + if (((int)param_3 < 0x10000 && (int)param_3 <= param_4) && -1 < param_4) { + cv::Mat::reshape((int)param_1,1); + if (0 < local_58) { + lVar6 = 0; + do { + if (0 < local_54) { + puVar7 = (ushort *)(local_50 + lVar6 * *local_18); + uVar9 = *(ushort *)(local_50 + lVar6 * *local_18); + if (((int)(uint)uVar9 < (int)param_3) || (iVar8 = 0, param_4 < (int)(uint)uVar9)) { + iVar8 = 0; +LAB_002b9574: + param_2[1] = (int)lVar6; + iVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar3 = 0; + if (iVar1 != 0) { + iVar3 = iVar8 / iVar1; + } + *param_2 = iVar8 - iVar3 * iVar1; + *param_5 = (double)uVar9; + uVar10 = 0; + goto LAB_002b9598; + } + while (iVar8 = iVar8 + 1, iVar8 != local_54) { + puVar7 = puVar7 + 1; + uVar9 = *puVar7; + if (((int)(uint)uVar9 < (int)param_3) || (param_4 < (int)(uint)uVar9)) + goto LAB_002b9574; + } + } + lVar6 = lVar6 + 1; + } while ((int)lVar6 < local_58); + } + uVar10 = 1; + *param_5 = 0.0; +LAB_002b9598: + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != alStack_10) { + cv::fastFree(local_18); + } + return uVar10; + } + *param_2 = 0; + param_2[1] = 0; + } + return uVar10; +} + + +================================================================== + +### FUNC 002b9634 (176 bytes) name=fastAtan2 + +/* cv::fastAtan2(float, float) */ + +float cv::fastAtan2(float param_1,float param_2) + +{ + float fVar1; + float fVar2; + + fVar2 = ABS(param_1); + fVar1 = ABS(param_2); + if (fVar1 < fVar2) { + fVar1 = fVar1 / (fVar2 + DAT_002b96e4); + fVar2 = fVar1 * fVar1; + fVar2 = DAT_002b96f8 - + fVar1 * (DAT_002b96f4 + + fVar2 * (DAT_002b96f0 + fVar2 * (DAT_002b96ec + DAT_002b96e8 * fVar2))); + } + else { + fVar2 = fVar2 / (fVar1 + DAT_002b96e4); + fVar1 = fVar2 * fVar2; + fVar2 = (DAT_002b96f4 + fVar1 * (DAT_002b96f0 + fVar1 * (DAT_002b96ec + DAT_002b96e8 * fVar1))) + * fVar2; + } + if (param_2 < 0.0) { + fVar2 = DAT_002b96fc - fVar2; + } + if (param_1 < 0.0) { + return DAT_002b9700 - fVar2; + } + return fVar2; +} + + +================================================================== + +### FUNC 002b9708 (192 bytes) name=cubeRoot + +/* cv::cubeRoot(float) */ + +int cv::cubeRoot(float param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + double dVar4; + + iVar1 = ((uint)param_1 >> 0x17 & 0xff) - 0x7f; + iVar2 = iVar1 % 3; + iVar3 = 3; + if (iVar2 < 0) { + iVar3 = 0; + } + iVar2 = iVar2 - iVar3; + dVar4 = (double)(float)((uint)param_1 & 0x7fffff | (iVar2 + 0x7f) * 0x800000); + iVar3 = (int)(float)((DAT_002b97e8 + + (DAT_002b97e0 + + (DAT_002b97d8 + (DAT_002b97d0 + DAT_002b97c8 * dVar4) * dVar4) * dVar4) * + dVar4) / ((DAT_002b9808 + + (DAT_002b9800 + (DAT_002b97f8 + DAT_002b97f0 * dVar4) * dVar4) * + dVar4) * dVar4 + 1.0)) + ((iVar1 - iVar2) / 3) * 0x800000 + + ((uint)param_1 & 0x80000000); + if (param_1 == 0.0) { + iVar3 = 0; + } + return iVar3; +} + + +================================================================== + +### FUNC 002b9810 (1544 bytes) name=magnitude + +/* cv::magnitude(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::magnitude(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + uint uVar1; + char cVar2; + bool bVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + void *__dest; + int *piVar8; + Mat *pMVar9; + undefined4 *puVar10; + undefined8 *puVar11; + ulong uVar12; + uchar *local_198; + undefined8 local_190; + undefined8 local_188; + Mat *local_180; + Mat *local_178; + String *local_170; + undefined8 uStack_168; + NAryMatIterator aNStack_160 [32]; + ulong local_140; + int local_138; + uint local_120; + int local_11c; + int local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + int local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::type(param_1,-1); + iVar5 = _InputArray::depth(param_1,-1); + iVar6 = _InputArray::channels(param_1,-1); + _InputArray::size((int)param_1); + _InputArray::size((int)param_2); + if ((((local_c0 != (int)local_60) || (local_bc != local_60._4_4_)) || + (iVar7 = _InputArray::type(param_2,-1), iVar4 != iVar7)) || (1 < iVar5 - 5U)) { + local_60 = 0; + local_58 = 0; + __dest = (void *)String::allocate((String *)&local_60,0x59); + memcpy(__dest,&DAT_00468440,0x59); + error(-0xd7,(String *)&local_60, + "void cv::magnitude(cv::InputArray, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0xad); + String::deallocate((String *)&local_60); + } + iVar4 = _InputArray::kind(param_1); + if (iVar4 == 0x10000) { + pMVar9 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar9; + local_11c = *(int *)(pMVar9 + 4); + local_118 = *(int *)(pMVar9 + 8); + local_114 = *(undefined4 *)(pMVar9 + 0xc); + local_110 = *(undefined8 *)(pMVar9 + 0x10); + local_108 = *(undefined8 *)(pMVar9 + 0x18); + local_100 = *(undefined8 *)(pMVar9 + 0x20); + local_f8 = *(undefined8 *)(pMVar9 + 0x28); + local_f0 = *(undefined8 *)(pMVar9 + 0x30); + local_e8 = *(long *)(pMVar9 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar8 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = *piVar8 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar9 + 0x48); + local_c8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar4 = _InputArray::kind(param_2); + if (iVar4 == 0x10000) { + pMVar9 = *(Mat **)(param_2 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(int *)pMVar9; + local_b0 = *(undefined8 *)(pMVar9 + 0x10); + local_bc = *(int *)(pMVar9 + 4); + local_b8 = *(undefined4 *)(pMVar9 + 8); + local_b4 = *(undefined4 *)(pMVar9 + 0xc); + local_a8 = *(undefined8 *)(pMVar9 + 0x18); + local_a0 = *(undefined8 *)(pMVar9 + 0x20); + local_98 = *(undefined8 *)(pMVar9 + 0x28); + local_90 = *(undefined8 *)(pMVar9 + 0x30); + local_88 = *(long *)(pMVar9 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar8 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = *piVar8 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar9 + 0x48); + local_68 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_2); + } + _OutputArray::create(param_3,local_11c,local_e0,local_120 & 0xfff,-1,false,0); + iVar4 = _InputArray::kind((_InputArray *)param_3); + if (iVar4 == 0x10000) { + pMVar9 = *(Mat **)(param_3 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar1 = *(uint *)pMVar9; + local_50 = *(undefined8 *)(pMVar9 + 0x10); + local_60 = *(ulong *)pMVar9; + local_58 = *(undefined8 *)(pMVar9 + 8); + local_48 = *(undefined8 *)(pMVar9 + 0x18); + local_40 = *(undefined8 *)(pMVar9 + 0x20); + local_38 = *(undefined8 *)(pMVar9 + 0x28); + local_30 = *(undefined8 *)(pMVar9 + 0x30); + local_28 = *(long *)(pMVar9 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar8 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = *piVar8 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar9 + 0x48); + local_8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar1; + Mat::copySize((Mat *)&local_60,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_3); + } + uStack_168 = 0; + local_180 = (Mat *)&local_120; + local_178 = (Mat *)&local_c0; + local_170 = (String *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_160,&local_180,&local_198,-1); + uVar12 = 0; + if (iVar5 == 5) { + for (; uVar12 < local_140; uVar12 = uVar12 + 1) { + FUN_003ca620(local_198,local_190,local_188,iVar6 * local_138); + NAryMatIterator::operator++(aNStack_160); + } + } + else { + for (; uVar12 < local_140; uVar12 = uVar12 + 1) { + FUN_003ca790(local_198,local_190,local_188,iVar6 * local_138); + NAryMatIterator::operator++(aNStack_160); + } + } + if (local_28 != 0) { + piVar8 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar8; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar4 = 0; + puVar11 = local_20; + do { + *(undefined4 *)puVar11 = 0; + iVar4 = iVar4 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar4 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar8 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar8; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + puVar10 = local_80; + do { + *puVar10 = 0; + iVar4 = iVar4 + 1; + puVar10 = puVar10 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar8 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar8; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + piVar8 = local_e0; + do { + *piVar8 = 0; + iVar4 = iVar4 + 1; + piVar8 = piVar8 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002b9ea8 (4860 bytes) name=polarToCart + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::polarToCart(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, + cv::_OutputArray const&, bool) */ + +void cv::polarToCart(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,bool param_5) + +{ + uint uVar1; + uint uVar2; + long lVar3; + ulong uVar4; + undefined8 *puVar5; + undefined8 *puVar6; + uint uVar7; + uint uVar8; + bool bVar9; + undefined1 auVar10 [16]; + undefined1 auVar11 [12]; + double dVar12; + double dVar13; + double dVar14; + double *pdVar15; + double *pdVar16; + char cVar17; + uint uVar18; + int iVar19; + uint uVar20; + int iVar21; + uint uVar22; + ulong uVar23; + void *__dest; + long lVar24; + char *pcVar25; + undefined1 (*pauVar26) [12]; + float *pfVar27; + ulong uVar28; + uint uVar29; + double *pdVar30; + ulong uVar31; + undefined4 *puVar32; + int *piVar33; + Mat *pMVar34; + double *pdVar35; + double *pdVar36; + uint uVar37; + double *pdVar38; + int *piVar39; + long lVar40; + uint uVar41; + float *pfVar42; + long lVar43; + float *__src; + float *__src_00; + undefined8 uVar44; + undefined8 uVar45; + double dVar46; + double dVar47; + float fVar49; + undefined8 uVar48; + float fVar50; + float fVar52; + undefined8 uVar51; + double dVar53; + double dVar54; + double dVar55; + float fVar56; + double dVar57; + double dVar58; + uint local_69c; + uint local_698; + Mat *local_678; + Mat *local_670; + Mat *local_668; + Mat *local_660; + ulong local_650; + double *local_638; + double *local_630; + double *local_628; + double *local_620; + Mat *local_618; + Mat *local_610; + Mat *local_608; + Mat *local_600; + undefined8 local_5f8; + NAryMatIterator aNStack_5f0 [32]; + ulong local_5d0; + int local_5c8; + undefined4 local_5b0; + int local_5ac; + int local_5a8; + int local_5a4; + long local_5a0; + undefined8 local_598; + undefined8 local_590; + undefined8 local_588; + undefined8 local_580; + long local_578; + int *local_570; + undefined8 *local_568; + undefined8 local_560; + undefined8 local_558; + uint local_550; + int local_54c; + int local_548; + undefined4 local_544; + undefined8 local_540; + undefined8 local_538; + undefined8 local_530; + undefined8 local_528; + undefined8 local_520; + long local_518; + int *local_510; + undefined8 *local_508; + undefined8 local_500; + undefined8 local_4f8; + undefined4 local_4f0; + int local_4ec; + undefined4 local_4e8; + undefined4 local_4e4; + undefined8 local_4e0; + undefined8 local_4d8; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + long local_4b8; + undefined4 *local_4b0; + undefined8 *local_4a8; + undefined8 local_4a0; + undefined8 local_498; + undefined4 local_490; + int local_48c; + undefined4 local_488; + undefined4 local_484; + undefined8 local_480; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + long local_458; + undefined4 *local_450; + undefined8 *local_448; + undefined8 local_440; + undefined8 local_438; + float *local_430; + ulong local_428; + float afStack_420 [264]; + + uVar23 = _InputArray::type(param_2,-1); + uVar18 = (uint)uVar23; + uVar7 = uVar18 & 7; + uVar8 = (uint)((uVar23 & 0xffffffff) >> 3) & 0x1ff; + uVar1 = uVar8 + 1; + if ((1 < uVar7 - 5) || + ((cVar17 = _InputArray::empty(param_1), cVar17 == '\0' && + (uVar22 = _InputArray::type(param_1,-1), uVar18 != uVar22)))) { + local_430 = (float *)0x0; + local_428 = 0; + __dest = (void *)String::allocate((String *)&local_430,0x4d); + memcpy(__dest,&DAT_00468510,0x4d); + error(-0xd7,(String *)&local_430, + "void cv::polarToCart(cv::InputArray, cv::InputArray, cv::OutputArray, cv::OutputArray, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x271); + String::deallocate((String *)&local_430); + } + iVar19 = _InputArray::kind(param_1); + if (iVar19 == 0x10000) { + pMVar34 = *(Mat **)(param_1 + 8); + local_570 = &local_5a8; + local_568 = &local_560; + local_5b0 = *(undefined4 *)pMVar34; + local_5ac = *(int *)(pMVar34 + 4); + local_5a8 = *(int *)(pMVar34 + 8); + local_5a4 = *(int *)(pMVar34 + 0xc); + local_5a0 = *(long *)(pMVar34 + 0x10); + local_598 = *(undefined8 *)(pMVar34 + 0x18); + local_590 = *(undefined8 *)(pMVar34 + 0x20); + local_588 = *(undefined8 *)(pMVar34 + 0x28); + local_580 = *(undefined8 *)(pMVar34 + 0x30); + local_578 = *(long *)(pMVar34 + 0x38); + local_558 = 0; + local_560 = 0; + if (local_578 != 0) { + piVar33 = (int *)(local_578 + 0x14); + do { + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = *piVar33 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (2 < *(int *)(pMVar34 + 4)) { + local_5ac = 0; + Mat::copySize((Mat *)&local_5b0,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_678 = (Mat *)&local_5b0; + iVar19 = _InputArray::kind(param_2); + if (iVar19 == 0x10000) { + pMVar34 = *(Mat **)(param_2 + 8); + local_510 = &local_548; + local_508 = &local_500; + local_550 = *(uint *)pMVar34; + local_54c = *(int *)(pMVar34 + 4); + local_548 = *(int *)(pMVar34 + 8); + local_544 = *(undefined4 *)(pMVar34 + 0xc); + local_540 = *(undefined8 *)(pMVar34 + 0x10); + local_538 = *(undefined8 *)(pMVar34 + 0x18); + local_530 = *(undefined8 *)(pMVar34 + 0x20); + local_528 = *(undefined8 *)(pMVar34 + 0x28); + local_520 = *(undefined8 *)(pMVar34 + 0x30); + local_518 = *(long *)(pMVar34 + 0x38); + local_4f8 = 0; + local_500 = 0; + if (local_518 != 0) { + piVar33 = (int *)(local_518 + 0x14); + do { + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = *piVar33 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (2 < *(int *)(pMVar34 + 4)) { + local_54c = 0; + Mat::copySize((Mat *)&local_550,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_670 = (Mat *)&local_550; + if (local_5a0 != 0) { + if (local_5ac < 3) { + lVar24 = (long)local_5a4 * (long)local_5a8; + } + else { + lVar43 = 0; + lVar24 = 1; + do { + piVar33 = local_570 + lVar43; + lVar43 = lVar43 + 1; + lVar24 = lVar24 * *piVar33; + } while ((int)lVar43 < local_5ac); + } + if (lVar24 != 0) { + iVar19 = local_510[-1]; + if (iVar19 == local_570[-1]) { + if (iVar19 == 2) { + if ((*local_510 == *local_570) && (local_510[1] == local_570[1])) goto LAB_002ba090; + } + else { + if (iVar19 < 1) goto LAB_002ba090; + if (*local_510 == *local_570) { + piVar39 = local_570; + piVar33 = local_510; + do { + piVar33 = piVar33 + 1; + if (piVar39 == local_570 + (iVar19 - 1)) goto LAB_002ba090; + piVar39 = piVar39 + 1; + } while (*piVar33 == *piVar39); + } + } + } + local_430 = (float *)0x0; + local_428 = 0; + pcVar25 = (char *)String::allocate((String *)&local_430,0x25); + cVar17 = s_Mag_empty______Angle_size____Mag_004684e8[0x24]; + uVar45 = s_Mag_empty______Angle_size____Mag_004684e8._24_8_; + uVar44 = s_Mag_empty______Angle_size____Mag_004684e8._16_8_; + uVar51 = s_Mag_empty______Angle_size____Mag_004684e8._8_8_; + uVar48 = s_Mag_empty______Angle_size____Mag_004684e8._0_8_; + *(undefined4 *)(pcVar25 + 0x20) = s_Mag_empty______Angle_size____Mag_004684e8._32_4_; + pcVar25[0x24] = cVar17; + *(undefined8 *)pcVar25 = uVar48; + *(undefined8 *)(pcVar25 + 8) = uVar51; + *(undefined8 *)(pcVar25 + 0x10) = uVar44; + *(undefined8 *)(pcVar25 + 0x18) = uVar45; + error(-0xd7,(String *)&local_430, + "void cv::polarToCart(cv::InputArray, cv::InputArray, cv::OutputArray, cv::OutputArray, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x277); + String::deallocate((String *)&local_430); + } + } +LAB_002ba090: + _OutputArray::create(param_3,local_54c,local_510,uVar18,-1,false,0); + _OutputArray::create(param_4,local_54c,local_510,uVar18,-1,false,0); + iVar19 = _InputArray::kind((_InputArray *)param_3); + if (iVar19 == 0x10000) { + pMVar34 = *(Mat **)(param_3 + 8); + local_4b0 = &local_4e8; + local_4a8 = &local_4a0; + local_4f0 = *(undefined4 *)pMVar34; + local_4ec = *(int *)(pMVar34 + 4); + local_4e8 = *(undefined4 *)(pMVar34 + 8); + local_4e4 = *(undefined4 *)(pMVar34 + 0xc); + local_4e0 = *(undefined8 *)(pMVar34 + 0x10); + local_4d8 = *(undefined8 *)(pMVar34 + 0x18); + local_4d0 = *(undefined8 *)(pMVar34 + 0x20); + local_4c8 = *(undefined8 *)(pMVar34 + 0x28); + local_4c0 = *(undefined8 *)(pMVar34 + 0x30); + local_4b8 = *(long *)(pMVar34 + 0x38); + local_498 = 0; + local_4a0 = 0; + if (local_4b8 != 0) { + piVar33 = (int *)(local_4b8 + 0x14); + do { + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = *piVar33 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (2 < *(int *)(pMVar34 + 4)) { + local_4ec = 0; + Mat::copySize((Mat *)&local_4f0,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_668 = (Mat *)&local_4f0; + iVar19 = _InputArray::kind((_InputArray *)param_4); + if (iVar19 == 0x10000) { + pMVar34 = *(Mat **)(param_4 + 8); + local_450 = &local_488; + local_448 = &local_440; + local_490 = *(undefined4 *)pMVar34; + local_48c = *(int *)(pMVar34 + 4); + local_488 = *(undefined4 *)(pMVar34 + 8); + local_484 = *(undefined4 *)(pMVar34 + 0xc); + local_480 = *(undefined8 *)(pMVar34 + 0x10); + local_478 = *(undefined8 *)(pMVar34 + 0x18); + local_470 = *(undefined8 *)(pMVar34 + 0x20); + local_468 = *(undefined8 *)(pMVar34 + 0x28); + local_460 = *(undefined8 *)(pMVar34 + 0x30); + local_458 = *(long *)(pMVar34 + 0x38); + local_438 = 0; + local_440 = 0; + if (local_458 != 0) { + piVar33 = (int *)(local_458 + 0x14); + do { + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = *piVar33 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (2 < *(int *)(pMVar34 + 4)) { + local_48c = 0; + Mat::copySize((Mat *)&local_490,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_4); + } + local_660 = (Mat *)&local_490; + local_618 = local_678; + local_608 = local_668; + local_5f8 = 0; + local_610 = local_670; + local_600 = local_660; + NAryMatIterator::NAryMatIterator(aNStack_5f0,&local_618,(uchar **)&local_638,-1); + uVar18 = 0; + if (uVar1 != 0) { + uVar18 = (uVar8 + 0x400) / uVar1; + } + __src = afStack_420; + uVar23 = 0x88442211UL >> ((local_550 & 7) << 2) & 0xf; + uVar22 = uVar1 * local_5c8; + local_430 = __src; + local_428 = 0x108; + uVar8 = uVar22; + if ((int)(uVar18 * uVar1) < (int)uVar22) { + uVar8 = uVar18 * uVar1; + } + if (uVar7 == 6) { + uVar31 = (ulong)(int)(uVar8 << 1); + if (uVar31 < 0x109) { + local_428 = uVar31; + } + else { + uVar28 = uVar31 << 2; + if (0x1fc0000000000000 < uVar31) { + uVar28 = 0xffffffffffffffff; + } + __src = operator_new__(uVar28); + } + __src_00 = __src + (int)uVar8; + local_430 = __src; + local_428 = uVar31; + } + else { + __src_00 = (float *)0x0; + __src = (float *)0x0; + } + dVar14 = DAT_002bb460; + dVar13 = DAT_002bb458; + dVar12 = DAT_002bb450; + local_650 = 0; + uVar1 = -((uint)((ulong)__src >> 2) & 3) & 3; + if (local_5d0 != 0) { + do { + if (0 < (int)uVar22) { + uVar18 = uVar22; + if ((int)uVar8 < (int)uVar22) { + uVar18 = uVar8; + } + local_69c = uVar22; + local_698 = uVar8; + if (uVar7 == 5) goto LAB_002ba698; + do { + pdVar16 = local_620; + pdVar30 = local_628; + pdVar15 = local_638; + if ((int)uVar18 < 1) { + if (local_638 != (double *)0x0) { + lVar43 = (long)(int)uVar18; + goto LAB_002ba628; + } + goto LAB_002baa10; + } + uVar20 = uVar18; + if (uVar1 < uVar18) { + uVar20 = uVar1; + } + uVar2 = uVar18; + if (((int)uVar18 < 5) || (uVar29 = 0, uVar2 = uVar20, uVar20 != 0)) { + uVar20 = uVar2; + *__src = (float)*local_630; + uVar29 = uVar20; + if ((uVar20 != 1) && (__src[1] = (float)local_630[1], uVar20 != 2)) { + __src[2] = (float)local_630[2]; + if (uVar20 == 4) { + __src[3] = (float)local_630[3]; + } + else { + uVar29 = 3; + } + } + if (uVar20 != uVar18) goto LAB_002ba2c4; + } + else { +LAB_002ba2c4: + uVar2 = ((uVar18 - uVar20) - 4 >> 2) + 1; + iVar19 = uVar2 * 4; + if (2 < (uVar18 - 1) - uVar20) { + uVar37 = 0; + pauVar26 = (undefined1 (*) [12])(local_630 + uVar20); + pfVar27 = __src + uVar20; + do { + uVar37 = uVar37 + 1; + auVar11 = *pauVar26; + auVar10._12_4_ = (int)((ulong)*(double *)((long)*pauVar26 + 8) >> 0x20); + auVar10._0_12_ = auVar11; + *(ulong *)(pfVar27 + 2) = + CONCAT44((float)*(double *)pauVar26[2],(float)*(double *)(pauVar26[1] + 4)); + *(ulong *)pfVar27 = CONCAT44((float)auVar10._8_8_,(float)auVar11._0_8_); + pauVar26 = (undefined1 (*) [12])((long)pauVar26[2] + 8); + pfVar27 = pfVar27 + 4; + } while (uVar37 < uVar2); + uVar29 = uVar29 + iVar19; + if (iVar19 == uVar18 - uVar20) goto LAB_002ba374; + } + iVar19 = uVar29 + 1; + __src[(int)uVar29] = (float)local_630[(int)uVar29]; + if (iVar19 < (int)uVar18) { + iVar21 = uVar29 + 2; + __src[iVar19] = (float)local_630[iVar19]; + if (iVar21 < (int)uVar18) { + __src[iVar21] = (float)local_630[iVar21]; + } + } + } +LAB_002ba374: + dVar47 = DAT_002bb448; + if (!param_5) { + dVar47 = DAT_002bb440; + } + lVar43 = 0; + do { + fVar56 = __src[lVar43]; + lVar24 = lrint((double)fVar56 * dVar47); + uVar20 = (uint)lVar24 & 0x3f; + dVar46 = *(double *)(&DAT_004688e0 + (long)(int)uVar20 * 8); + dVar57 = (double)fVar56 * dVar47 - (double)(int)(uint)lVar24; + dVar53 = *(double *)(&DAT_004688e0 + (long)(int)(0x10 - uVar20 & 0x3f) * 8); + dVar55 = dVar57 * dVar14 * dVar57 + 1.0; + dVar57 = dVar57 * (dVar13 + dVar57 * dVar12 * dVar57); + __src_00[lVar43] = (float)(dVar57 * dVar53 + dVar46 * dVar55); + __src[lVar43] = (float)(dVar55 * dVar53 - dVar57 * dVar46); + lVar43 = lVar43 + 1; + } while ((int)lVar43 < (int)uVar18); + if (pdVar15 == (double *)0x0) { +LAB_002baa10: + lVar43 = (long)(int)uVar18; + memcpy(pdVar30,__src,lVar43 << 2); + memcpy(pdVar16,__src_00,lVar43 << 2); + goto LAB_002ba624; + } + uVar20 = uVar18; + if ((int)uVar18 < 1) { + uVar20 = 1; + } + if (((pdVar30 < pdVar15 + 4 && pdVar15 < pdVar30 + 4 || + pdVar30 < pdVar16 + 4 && pdVar16 < pdVar30 + 4) || + pdVar16 < pdVar15 + 4 && pdVar15 < pdVar16 + 4) || (uVar20 < 7)) { + lVar43 = 0; + do { + fVar56 = __src_00[lVar43]; + dVar47 = pdVar15[lVar43]; + pdVar30[lVar43] = (double)__src[lVar43] * dVar47; + pdVar16[lVar43] = (double)fVar56 * dVar47; + lVar43 = lVar43 + 1; + } while ((int)lVar43 < (int)uVar18); + } + else { + uVar2 = (uint)((ulong)pdVar30 >> 3) & 1; + if (uVar20 < uVar2) { + uVar2 = uVar20; + } + if (uVar2 != 0) { + fVar56 = *__src_00; + dVar47 = *pdVar15; + *pdVar30 = (double)*__src * dVar47; + *pdVar16 = (double)fVar56 * dVar47; + } + uVar29 = (uint)(uVar2 != 0); + iVar19 = uVar18 - 1; + if ((int)uVar18 < 1) { + iVar19 = 0; + } + uVar37 = ((uVar20 - uVar2) - 4 >> 2) + 1; + iVar21 = uVar37 * 4; + if (2 < iVar19 - uVar2) { + uVar41 = 0; + pfVar27 = __src + uVar2; + pdVar38 = pdVar15 + uVar2; + pdVar35 = pdVar30 + uVar2; + pdVar36 = pdVar16 + uVar2; + pfVar42 = __src_00 + uVar2; + do { + uVar45 = *(undefined8 *)(pfVar27 + 2); + uVar44 = *(undefined8 *)pfVar27; + uVar51 = *(undefined8 *)(pfVar42 + 2); + uVar48 = *(undefined8 *)pfVar42; + dVar53 = pdVar38[1]; + dVar46 = *pdVar38; + uVar41 = uVar41 + 1; + dVar55 = pdVar38[3]; + dVar47 = pdVar38[2]; + pdVar35[1] = (double)(float)((ulong)uVar44 >> 0x20) * dVar53; + *pdVar35 = (double)(float)uVar44 * dVar46; + pdVar35[3] = (double)(float)((ulong)uVar45 >> 0x20) * dVar55; + pdVar35[2] = (double)(float)uVar45 * dVar47; + pdVar36[1] = (double)(float)((ulong)uVar48 >> 0x20) * dVar53; + *pdVar36 = (double)(float)uVar48 * dVar46; + pdVar36[3] = (double)(float)((ulong)uVar51 >> 0x20) * dVar55; + pdVar36[2] = (double)(float)uVar51 * dVar47; + pfVar27 = pfVar27 + 4; + pdVar38 = pdVar38 + 4; + pdVar35 = pdVar35 + 4; + pdVar36 = pdVar36 + 4; + pfVar42 = pfVar42 + 4; + } while (uVar41 < uVar37); + uVar29 = uVar29 + iVar21; + if (iVar21 == uVar20 - uVar2) goto LAB_002ba610; + } + iVar19 = uVar29 + 1; + fVar56 = __src_00[(int)uVar29]; + dVar47 = pdVar15[(int)uVar29]; + pdVar30[(int)uVar29] = (double)__src[(int)uVar29] * dVar47; + pdVar16[(int)uVar29] = (double)fVar56 * dVar47; + if (iVar19 < (int)uVar18) { + iVar21 = uVar29 + 2; + fVar56 = __src_00[iVar19]; + dVar47 = pdVar15[iVar19]; + pdVar30[iVar19] = (double)__src[iVar19] * dVar47; + pdVar16[iVar19] = (double)fVar56 * dVar47; + if (iVar21 < (int)uVar18) { + fVar56 = __src_00[iVar21]; + dVar47 = pdVar15[iVar21]; + pdVar30[iVar21] = (double)__src[iVar21] * dVar47; + pdVar16[iVar21] = (double)fVar56 * dVar47; + } + } + } +LAB_002ba610: + while( true ) { + lVar43 = (long)(int)uVar18; +LAB_002ba624: + if (local_638 == (double *)0x0) { + lVar43 = lVar43 * uVar23; + } + else { +LAB_002ba628: + lVar43 = lVar43 * uVar23; + local_638 = (double *)((long)local_638 + lVar43); + } + local_630 = (double *)((long)local_630 + lVar43); + local_628 = (double *)((long)local_628 + lVar43); + local_620 = (double *)((long)local_620 + lVar43); + uVar20 = local_698 + uVar8; + local_69c = local_69c - uVar8; + if ((int)uVar22 <= (int)local_698) goto LAB_002baa8c; + uVar18 = local_69c; + if ((int)uVar8 < (int)local_69c) { + uVar18 = uVar8; + } + local_698 = uVar20; + if (uVar7 != 5) break; +LAB_002ba698: + pdVar38 = local_620; + pdVar16 = local_628; + pdVar30 = local_630; + pdVar15 = local_638; + dVar55 = DAT_002bb460; + dVar47 = DAT_002bb458; + dVar46 = DAT_002bb440; + if (param_5) { + dVar46 = DAT_002bb448; + } + lVar43 = 0; + if (0 < (int)uVar18) { + do { + dVar58 = (double)*(float *)((long)pdVar30 + lVar43 * 4) * dVar46; + lVar24 = lrint(dVar58); + uVar20 = (uint)lVar24 & 0x3f; + dVar58 = dVar58 - (double)(int)(uint)lVar24; + dVar54 = *(double *)(&DAT_004688e0 + (long)(int)(0x10 - uVar20 & 0x3f) * 8); + dVar57 = *(double *)(&DAT_004688e0 + (long)(int)uVar20 * 8); + dVar53 = dVar58 * dVar55 * dVar58 + 1.0; + dVar58 = dVar58 * (dVar47 + dVar58 * DAT_002bb450 * dVar58); + *(float *)((long)pdVar38 + lVar43 * 4) = (float)(dVar58 * dVar54 + dVar57 * dVar53); + *(float *)((long)pdVar16 + lVar43 * 4) = (float)(dVar53 * dVar54 - dVar58 * dVar57); + lVar43 = lVar43 + 1; + } while ((int)lVar43 < (int)uVar18); + } + if (pdVar15 != (double *)0x0) { + if ((int)(uVar18 - 3) < 1) { + iVar19 = 0; + } + else { + iVar19 = 0; + pdVar30 = pdVar16; + pdVar35 = pdVar38; + pdVar36 = pdVar15; + do { + iVar19 = iVar19 + 4; + fVar56 = SUB84(*pdVar36,0); + fVar49 = (float)((ulong)*pdVar36 >> 0x20); + fVar50 = SUB84(pdVar36[1],0); + fVar52 = (float)((ulong)pdVar36[1] >> 0x20); + pdVar30[1] = (double)CONCAT44((float)((ulong)pdVar30[1] >> 0x20) * fVar52, + SUB84(pdVar30[1],0) * fVar50); + *pdVar30 = (double)CONCAT44((float)((ulong)*pdVar30 >> 0x20) * fVar49, + SUB84(*pdVar30,0) * fVar56); + pdVar35[1] = (double)CONCAT44((float)((ulong)pdVar35[1] >> 0x20) * fVar52, + SUB84(pdVar35[1],0) * fVar50); + *pdVar35 = (double)CONCAT44((float)((ulong)*pdVar35 >> 0x20) * fVar49, + SUB84(*pdVar35,0) * fVar56); + pdVar30 = pdVar30 + 2; + pdVar35 = pdVar35 + 2; + pdVar36 = pdVar36 + 2; + } while (iVar19 < (int)(uVar18 - 3)); + } + if (iVar19 < (int)uVar18) { + lVar24 = (long)iVar19; + uVar20 = uVar18 - iVar19; + lVar43 = (lVar24 + 4) * 4; + lVar40 = lVar43 + -0x10; + uVar31 = (long)pdVar38 + lVar40; + uVar28 = (long)pdVar16 + lVar40; + uVar4 = (long)pdVar15 + lVar40; + if ((uVar20 < 7 || + (uVar31 < (ulong)((long)pdVar16 + lVar43) && + uVar28 < (ulong)((long)pdVar38 + lVar43) || + uVar4 < (ulong)((long)pdVar16 + lVar43) && + uVar28 < (ulong)((long)pdVar15 + lVar43))) || + (uVar31 < (ulong)((long)pdVar15 + lVar43) && + uVar4 < (ulong)((long)pdVar38 + lVar43))) { + lVar43 = 0; + do { + fVar56 = *(float *)(uVar4 + lVar43); + *(float *)(uVar28 + lVar43) = *(float *)(uVar28 + lVar43) * fVar56; + *(float *)(uVar31 + lVar43) = *(float *)(uVar31 + lVar43) * fVar56; + lVar43 = lVar43 + 4; + } while (lVar43 != ((ulong)((uVar18 - 1) - iVar19) + 1) * 4); + } + else { + uVar2 = -((uint)(uVar28 >> 2) & 3) & 3; + uVar29 = uVar20; + if (uVar2 < uVar20) { + uVar29 = uVar2; + } + iVar21 = iVar19; + if (uVar29 != 0) { + lVar43 = lVar24 * 4; + iVar21 = iVar19 + 1; + fVar56 = *(float *)((long)pdVar15 + lVar43); + *(float *)((long)pdVar16 + lVar43) = *(float *)((long)pdVar16 + lVar43) * fVar56 + ; + *(float *)((long)pdVar38 + lVar43) = *(float *)((long)pdVar38 + lVar43) * fVar56 + ; + if (uVar29 != 1) { + lVar3 = lVar43 + 4; + iVar21 = iVar19 + 2; + fVar56 = *(float *)((long)pdVar15 + lVar3); + *(float *)((long)pdVar16 + lVar3) = *(float *)((long)pdVar16 + lVar3) * fVar56 + ; + *(float *)((long)pdVar38 + lVar3) = *(float *)((long)pdVar38 + lVar3) * fVar56 + ; + if (uVar29 == 3) { + lVar43 = lVar43 + 8; + iVar21 = iVar19 + 3; + fVar56 = *(float *)((long)pdVar15 + lVar43); + *(float *)((long)pdVar16 + lVar43) = + *(float *)((long)pdVar16 + lVar43) * fVar56; + *(float *)((long)pdVar38 + lVar43) = + *(float *)((long)pdVar38 + lVar43) * fVar56; + } + } + } + lVar43 = 0; + uVar2 = ((uVar20 - uVar29) - 4 >> 2) + 1; + uVar37 = 0; + iVar19 = uVar2 * 4; + do { + lVar3 = lVar43 + lVar40 + (ulong)uVar29 * 4; + puVar5 = (undefined8 *)((long)pdVar16 + lVar3); + puVar6 = (undefined8 *)((long)pdVar38 + lVar43 + (lVar24 + (ulong)uVar29) * 4); + uVar51 = ((undefined8 *)((long)pdVar15 + lVar3))[1]; + uVar48 = *(undefined8 *)((long)pdVar15 + lVar3); + uVar37 = uVar37 + 1; + lVar43 = lVar43 + 0x10; + fVar56 = (float)uVar48; + fVar49 = (float)((ulong)uVar48 >> 0x20); + fVar50 = (float)uVar51; + fVar52 = (float)((ulong)uVar51 >> 0x20); + puVar5[1] = CONCAT44((float)((ulong)puVar5[1] >> 0x20) * fVar52, + (float)puVar5[1] * fVar50); + *puVar5 = CONCAT44((float)((ulong)*puVar5 >> 0x20) * fVar49, + (float)*puVar5 * fVar56); + uVar51 = puVar6[1]; + uVar48 = *puVar6; + ((undefined8 *)((long)pdVar38 + lVar3))[1] = + CONCAT44((float)((ulong)uVar51 >> 0x20) * fVar52,(float)uVar51 * fVar50); + *(undefined8 *)((long)pdVar38 + lVar3) = + CONCAT44((float)((ulong)uVar48 >> 0x20) * fVar49,(float)uVar48 * fVar56); + } while (uVar37 < uVar2); + uVar2 = iVar19 + iVar21; + if (iVar19 != uVar20 - uVar29) { + uVar31 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + fVar56 = *(float *)((long)pdVar15 + uVar31); + *(float *)((long)pdVar16 + uVar31) = *(float *)((long)pdVar16 + uVar31) * fVar56 + ; + *(float *)((long)pdVar38 + uVar31) = *(float *)((long)pdVar38 + uVar31) * fVar56 + ; + if ((int)(uVar2 + 1) < (int)uVar18) { + lVar43 = uVar31 + 4; + fVar56 = *(float *)((long)pdVar15 + lVar43); + *(float *)((long)pdVar16 + lVar43) = + *(float *)((long)pdVar16 + lVar43) * fVar56; + *(float *)((long)pdVar38 + lVar43) = + *(float *)((long)pdVar38 + lVar43) * fVar56; + if ((int)(uVar2 + 2) < (int)uVar18) { + lVar43 = uVar31 + 8; + fVar56 = *(float *)((long)pdVar15 + lVar43); + *(float *)((long)pdVar16 + lVar43) = + *(float *)((long)pdVar16 + lVar43) * fVar56; + *(float *)((long)pdVar38 + lVar43) = + *(float *)((long)pdVar38 + lVar43) * fVar56; + } + } + } + } + } + } + } + } while( true ); + } +LAB_002baa8c: + local_650 = local_650 + 1; + NAryMatIterator::operator++(aNStack_5f0); + } while (local_650 < local_5d0); + } + if ((local_430 != afStack_420) && (local_430 != (float *)0x0)) { + operator_delete__(local_430); + } + if (local_458 != 0) { + piVar33 = (int *)(local_458 + 0x14); + do { + iVar19 = *piVar33; + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = iVar19 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar19 == 1) { + Mat::deallocate(local_660); + } + } + local_458 = 0; + local_480 = 0; + local_468 = 0; + local_470 = 0; + local_478 = 0; + if (0 < local_48c) { + iVar19 = 0; + puVar32 = local_450; + do { + iVar19 = iVar19 + 1; + *puVar32 = 0; + puVar32 = puVar32 + 1; + } while (iVar19 < local_48c); + } + if (local_448 != &local_440) { + fastFree(local_448); + } + if (local_4b8 != 0) { + piVar33 = (int *)(local_4b8 + 0x14); + do { + iVar19 = *piVar33; + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = iVar19 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar19 == 1) { + Mat::deallocate(local_668); + } + } + local_4b8 = 0; + local_4e0 = 0; + local_4c8 = 0; + local_4d0 = 0; + local_4d8 = 0; + if (0 < local_4ec) { + iVar19 = 0; + puVar32 = local_4b0; + do { + iVar19 = iVar19 + 1; + *puVar32 = 0; + puVar32 = puVar32 + 1; + } while (iVar19 < local_4ec); + } + if (local_4a8 != &local_4a0) { + fastFree(local_4a8); + } + if (local_518 != 0) { + piVar33 = (int *)(local_518 + 0x14); + do { + iVar19 = *piVar33; + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = iVar19 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar19 == 1) { + Mat::deallocate(local_670); + } + } + local_518 = 0; + local_540 = 0; + local_528 = 0; + local_530 = 0; + local_538 = 0; + if (0 < local_54c) { + iVar19 = 0; + piVar33 = local_510; + do { + iVar19 = iVar19 + 1; + *piVar33 = 0; + piVar33 = piVar33 + 1; + } while (iVar19 < local_54c); + } + if (local_508 != &local_500) { + fastFree(local_508); + } + if (local_578 != 0) { + piVar33 = (int *)(local_578 + 0x14); + do { + iVar19 = *piVar33; + cVar17 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar33,0x10); + if (bVar9) { + *piVar33 = iVar19 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar19 == 1) { + Mat::deallocate(local_678); + } + } + local_578 = 0; + local_5a0 = 0; + local_588 = 0; + local_590 = 0; + local_598 = 0; + if (0 < local_5ac) { + iVar19 = 0; + piVar33 = local_570; + do { + iVar19 = iVar19 + 1; + *piVar33 = 0; + piVar33 = piVar33 + 1; + } while (iVar19 < local_5ac); + } + if (local_568 != &local_560) { + fastFree(local_568); + } + return; +} + + +================================================================== + +### FUNC 002bb468 (1104 bytes) name=exp + +/* cv::exp(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::exp(_InputArray *param_1,_OutputArray *param_2) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + char *pcVar12; + Mat *pMVar13; + int *piVar14; + undefined8 *puVar15; + ulong uVar16; + uchar *local_128; + undefined8 local_120; + Mat *local_118; + Mat *local_110; + undefined8 local_108; + NAryMatIterator aNStack_100 [32]; + ulong local_e0; + int local_d8; + undefined4 local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar8 = _InputArray::type(param_1,-1); + iVar9 = _InputArray::depth(param_1,-1); + iVar10 = _InputArray::channels(param_1,-1); + if (1 < iVar9 - 5U) { + local_60 = 0; + local_58 = 0; + pcVar12 = (char *)String::allocate((String *)&local_60,0x22); + uVar7 = s_depth____CV_8S____depth____CV_16_0046f988._80_8_; + uVar6 = s_depth____CV_8S____depth____CV_16_0046f988._72_8_; + uVar5 = s_depth____CV_8S____depth____CV_16_0046f988._64_8_; + uVar4 = s_depth____CV_8S____depth____CV_16_0046f988._56_8_; + *(undefined2 *)(pcVar12 + 0x20) = s_depth____CV_8S____depth____CV_16_0046f988._88_2_; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + error(-0xd7,(String *)&local_60,"void cv::exp(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x316); + String::deallocate((String *)&local_60); + } + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar13; + local_bc = *(int *)(pMVar13 + 4); + local_b8 = *(int *)(pMVar13 + 8); + local_b4 = *(undefined4 *)(pMVar13 + 0xc); + local_b0 = *(undefined8 *)(pMVar13 + 0x10); + local_a8 = *(undefined8 *)(pMVar13 + 0x18); + local_a0 = *(undefined8 *)(pMVar13 + 0x20); + local_98 = *(undefined8 *)(pMVar13 + 0x28); + local_90 = *(undefined8 *)(pMVar13 + 0x30); + local_88 = *(long *)(pMVar13 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar13 + 0x48); + local_68 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_1); + } + _OutputArray::create(param_2,local_bc,local_80,iVar8,-1,false,0); + iVar8 = _InputArray::kind((_InputArray *)param_2); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar1 = *(uint *)pMVar13; + local_50 = *(undefined8 *)(pMVar13 + 0x10); + local_60 = *(ulong *)pMVar13; + local_58 = *(undefined8 *)(pMVar13 + 8); + local_48 = *(undefined8 *)(pMVar13 + 0x18); + local_40 = *(undefined8 *)(pMVar13 + 0x20); + local_38 = *(undefined8 *)(pMVar13 + 0x28); + local_30 = *(undefined8 *)(pMVar13 + 0x30); + local_28 = *(long *)(pMVar13 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar13 + 0x48); + local_8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar1; + Mat::copySize((Mat *)&local_60,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_108 = 0; + local_118 = (Mat *)&local_c0; + local_110 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_100,&local_118,&local_128,-1); + uVar16 = 0; + if (iVar9 == 5) { + for (; uVar16 < local_e0; uVar16 = uVar16 + 1) { + FUN_003cab60(local_128,local_120,iVar10 * local_d8); + NAryMatIterator::operator++(aNStack_100); + } + } + else { + for (; uVar16 < local_e0; uVar16 = uVar16 + 1) { + FUN_003cb060(local_128,local_120,iVar10 * local_d8); + NAryMatIterator::operator++(aNStack_100); + } + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar14; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar14; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar8 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar8 = iVar8 + 1; + piVar14 = piVar14 + 1; + } while (iVar8 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002bb918 (1104 bytes) name=log + +/* cv::log(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::log(_InputArray *param_1,_OutputArray *param_2) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + char *pcVar12; + Mat *pMVar13; + int *piVar14; + undefined8 *puVar15; + ulong uVar16; + uchar *local_128; + undefined8 local_120; + Mat *local_118; + Mat *local_110; + undefined8 local_108; + NAryMatIterator aNStack_100 [32]; + ulong local_e0; + int local_d8; + undefined4 local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar8 = _InputArray::type(param_1,-1); + iVar9 = _InputArray::depth(param_1,-1); + iVar10 = _InputArray::channels(param_1,-1); + if (1 < iVar9 - 5U) { + local_60 = 0; + local_58 = 0; + pcVar12 = (char *)String::allocate((String *)&local_60,0x22); + uVar7 = s_depth____CV_8S____depth____CV_16_0046f988._80_8_; + uVar6 = s_depth____CV_8S____depth____CV_16_0046f988._72_8_; + uVar5 = s_depth____CV_8S____depth____CV_16_0046f988._64_8_; + uVar4 = s_depth____CV_8S____depth____CV_16_0046f988._56_8_; + *(undefined2 *)(pcVar12 + 0x20) = s_depth____CV_8S____depth____CV_16_0046f988._88_2_; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + error(-0xd7,(String *)&local_60,"void cv::log(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x359); + String::deallocate((String *)&local_60); + } + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar13; + local_bc = *(int *)(pMVar13 + 4); + local_b8 = *(int *)(pMVar13 + 8); + local_b4 = *(undefined4 *)(pMVar13 + 0xc); + local_b0 = *(undefined8 *)(pMVar13 + 0x10); + local_a8 = *(undefined8 *)(pMVar13 + 0x18); + local_a0 = *(undefined8 *)(pMVar13 + 0x20); + local_98 = *(undefined8 *)(pMVar13 + 0x28); + local_90 = *(undefined8 *)(pMVar13 + 0x30); + local_88 = *(long *)(pMVar13 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar13 + 0x48); + local_68 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_1); + } + _OutputArray::create(param_2,local_bc,local_80,iVar8,-1,false,0); + iVar8 = _InputArray::kind((_InputArray *)param_2); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar1 = *(uint *)pMVar13; + local_50 = *(undefined8 *)(pMVar13 + 0x10); + local_60 = *(ulong *)pMVar13; + local_58 = *(undefined8 *)(pMVar13 + 8); + local_48 = *(undefined8 *)(pMVar13 + 0x18); + local_40 = *(undefined8 *)(pMVar13 + 0x20); + local_38 = *(undefined8 *)(pMVar13 + 0x28); + local_30 = *(undefined8 *)(pMVar13 + 0x30); + local_28 = *(long *)(pMVar13 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar13 + 0x48); + local_8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar1; + Mat::copySize((Mat *)&local_60,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_108 = 0; + local_118 = (Mat *)&local_c0; + local_110 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_100,&local_118,&local_128,-1); + uVar16 = 0; + if (iVar9 == 5) { + for (; uVar16 < local_e0; uVar16 = uVar16 + 1) { + FUN_003cb580(local_128,local_120,iVar10 * local_d8); + NAryMatIterator::operator++(aNStack_100); + } + } + else { + for (; uVar16 < local_e0; uVar16 = uVar16 + 1) { + FUN_003cb880(local_128,local_120,iVar10 * local_d8); + NAryMatIterator::operator++(aNStack_100); + } + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar14; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar14; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar8 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar8 = iVar8 + 1; + piVar14 = piVar14 + 1; + } while (iVar8 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002bbdc8 (3204 bytes) name=pow + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::pow(cv::_InputArray const&, double, cv::_OutputArray const&) */ + +void cv::pow(_InputArray *param_1,double param_2,_OutputArray *param_3) + +{ + uint uVar1; + int *piVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + char cVar8; + double dVar9; + double dVar10; + undefined4 uVar11; + undefined4 uVar12; + undefined4 uVar13; + double dVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + double *pdVar18; + bool bVar19; + uint uVar20; + int iVar21; + uint uVar22; + ulong uVar23; + ulong uVar24; + char *pcVar25; + double *pdVar26; + long lVar27; + code *pcVar28; + undefined8 *puVar29; + ulong uVar30; + Device *this; + uint uVar31; + code ***pppcVar32; + Mat *pMVar33; + double *pdVar34; + undefined8 *puVar35; + code *pcVar36; + code *pcVar37; + int iVar38; + bool bVar39; + undefined8 uVar40; + Mat *local_568; + Mat *local_560; + ulong local_548; + code *local_540; + double *local_538; + Mat *local_530; + Mat *local_528; + undefined8 local_520; + NAryMatIterator aNStack_518 [32]; + ulong local_4f8; + int local_4f0; + uint local_4d8; + int local_4d4; + code **local_4d0; + long local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + long local_4a0; + code ***local_498; + undefined8 *local_490; + undefined8 local_488; + undefined8 local_480; + int local_478; + int local_474; + undefined8 local_470; + long local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + undefined8 local_448; + long local_440; + undefined8 *local_438; + undefined8 *local_430; + undefined8 local_428; + undefined8 local_420; + code *local_418; + code *local_410; + undefined8 local_408; + undefined8 local_400; + + uVar23 = _InputArray::type(param_1,-1); + uVar20 = (uint)uVar23; + uVar3 = uVar20 & 7; + bVar39 = false; + uVar24 = lrint(param_2); + dVar10 = DAT_002bcae8; + iVar38 = (int)uVar24; + bVar19 = ABS((double)iVar38 - param_2) < DAT_002bcae8; + iVar21 = _InputArray::kind((_InputArray *)param_3); + if (iVar21 == 0xa0000) { + iVar21 = _InputArray::dims(param_1,-1); + bVar39 = iVar21 < 3; + } + if (bVar19) { + this = (Device *)ocl::Device::getDefault(); + iVar21 = ocl::Device::vendorID(this); + if ((iVar21 != 2) || (bVar39 <= (uVar3 == 6))) { + if (iVar38 == 1) { + _InputArray::copyTo(param_1,param_3); + return; + } + if (iVar38 == 2) { + multiply(param_1,param_1,param_3,1.0,-1); + return; + } + if (iVar38 == 0) { + _OutputArray::createSameSize(param_3,param_1,uVar20); + local_4d0 = &local_418; + local_4d8 = 0xc1020006; + local_418 = (code *)0x3ff0000000000000; + local_4c8 = 0x400000001; + local_410 = (code *)0x3ff0000000000000; + local_468 = 0; + local_408 = 0x3ff0000000000000; + local_400 = 0x3ff0000000000000; + local_470 = 0; + local_478 = iVar38; + _OutputArray::setTo(param_3,(_InputArray *)&local_4d8,(_InputArray *)&local_478); + return; + } + goto LAB_002bbed0; + } + } + if (1 < uVar3 - 5) { + local_418 = (code *)0x0; + local_410 = (code *)0x0; + pcVar25 = (char *)String::allocate((String *)&local_418,0x22); + uVar17 = s_depth____CV_8S____depth____CV_16_0046f988._80_8_; + uVar16 = s_depth____CV_8S____depth____CV_16_0046f988._72_8_; + uVar15 = s_depth____CV_8S____depth____CV_16_0046f988._64_8_; + uVar40 = s_depth____CV_8S____depth____CV_16_0046f988._56_8_; + *(undefined2 *)(pcVar25 + 0x20) = s_depth____CV_8S____depth____CV_16_0046f988._88_2_; + *(undefined8 *)pcVar25 = uVar40; + *(undefined8 *)(pcVar25 + 8) = uVar15; + *(undefined8 *)(pcVar25 + 0x10) = uVar16; + *(undefined8 *)(pcVar25 + 0x18) = uVar17; + error(-0xd7,(String *)&local_418,"void cv::pow(cv::InputArray, double, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x56b); + String::deallocate((String *)&local_418); + } +LAB_002bbed0: + iVar21 = _InputArray::kind(param_1); + if (iVar21 == 0x10000) { + pMVar33 = *(Mat **)(param_1 + 8); + local_498 = &local_4d0; + local_490 = &local_488; + local_4d8 = *(uint *)pMVar33; + local_4c8 = *(long *)(pMVar33 + 0x10); + local_4d4 = *(int *)(pMVar33 + 4); + local_4d0 = *(code ***)(pMVar33 + 8); + local_4c0 = *(undefined8 *)(pMVar33 + 0x18); + local_4b8 = *(undefined8 *)(pMVar33 + 0x20); + local_4b0 = *(undefined8 *)(pMVar33 + 0x28); + local_4a8 = *(undefined8 *)(pMVar33 + 0x30); + local_4a0 = *(long *)(pMVar33 + 0x38); + local_480 = 0; + local_488 = 0; + if (local_4a0 != 0) { + piVar2 = (int *)(local_4a0 + 0x14); + do { + cVar8 = '\x01'; + bVar39 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar39) { + *piVar2 = *piVar2 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (2 < *(int *)(pMVar33 + 4)) { + local_4d4 = 0; + Mat::copySize((Mat *)&local_4d8,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_568 = (Mat *)&local_4d8; + _OutputArray::create(param_3,local_4d4,(int *)local_498,uVar20,-1,false,0); + iVar21 = _InputArray::kind((_InputArray *)param_3); + if (iVar21 == 0x10000) { + pMVar33 = *(Mat **)(param_3 + 8); + local_438 = &local_470; + local_430 = &local_428; + local_478 = *(int *)pMVar33; + local_468 = *(long *)(pMVar33 + 0x10); + local_474 = *(int *)(pMVar33 + 4); + local_470 = *(undefined8 *)(pMVar33 + 8); + local_460 = *(undefined8 *)(pMVar33 + 0x18); + local_458 = *(undefined8 *)(pMVar33 + 0x20); + local_450 = *(undefined8 *)(pMVar33 + 0x28); + local_448 = *(undefined8 *)(pMVar33 + 0x30); + local_440 = *(long *)(pMVar33 + 0x38); + local_420 = 0; + local_428 = 0; + if (local_440 != 0) { + piVar2 = (int *)(local_440 + 0x14); + do { + cVar8 = '\x01'; + bVar39 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar39) { + *piVar2 = *piVar2 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (2 < *(int *)(pMVar33 + 4)) { + local_474 = 0; + Mat::copySize((Mat *)&local_478,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_560 = (Mat *)&local_478; + local_530 = local_568; + local_520 = 0; + local_528 = local_560; + NAryMatIterator::NAryMatIterator(aNStack_518,&local_530,(uchar **)&local_540,-1); + uVar4 = (uint)((uVar23 & 0xffffffff) >> 3) & 0x1ff; + uVar20 = uVar4 + 1; + uVar6 = uVar20 * local_4f0; + if (bVar19) { + pcVar37 = (code *)(&PTR_FUN_004f60b0)[(int)uVar3]; + if (pcVar37 == (code *)0x0) { + local_418 = pcVar37; + local_410 = pcVar37; + pcVar25 = (char *)String::allocate((String *)&local_418,9); + cVar8 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar25 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar25[8] = cVar8; + error(-0xd7,(String *)&local_418,"void cv::pow(cv::InputArray, double, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x57b); + String::deallocate((String *)&local_418); + } + for (uVar23 = 0; uVar23 < local_4f8; uVar23 = uVar23 + 1) { + (*pcVar37)(local_540,local_538,uVar6,uVar24 & 0xffffffff); + NAryMatIterator::operator++(aNStack_518); + } + } + else if (dVar10 <= ABS(ABS(param_2) - 0.5)) { + uVar7 = 0; + if (uVar20 != 0) { + uVar7 = (uVar4 + 0x400) / uVar20; + } + local_418 = (code *)&local_408; + uVar23 = 0x88442211UL >> ((local_4d8 & 7) << 2) & 0xf; + local_410 = (code *)0x408; + uVar4 = uVar6; + if ((int)(uVar7 * uVar20) < (int)uVar6) { + uVar4 = uVar7 * uVar20; + } + pcVar37 = (code *)0x0; + pcVar36 = local_410; + if ((local_4c8 == local_468) && + (pcVar36 = (code *)((long)(int)uVar4 * uVar23), pcVar37 = local_418, (code *)0x408 < pcVar36) + ) { + local_418 = operator_new__((ulong)pcVar36); + pcVar37 = local_418; + } + local_410 = pcVar36; + dVar14 = DAT_002bcb00; + dVar10 = DAT_002bcaf8; + uVar13 = DAT_002bcaf4; + uVar11 = DAT_002bcaf0; + local_548 = 0; + if (local_4f8 != 0) { + do { + if (0 < (int)uVar6) { + uVar7 = uVar4; + uVar20 = uVar6; + do { + pdVar18 = local_538; + pcVar36 = local_540; + uVar5 = uVar20; + if ((int)uVar4 < (int)uVar20) { + uVar5 = uVar4; + } + if (uVar3 == 5) { + pcVar28 = local_540; + if ((pcVar37 != (code *)0x0) && (pcVar28 = pcVar37, pcVar37 != local_540)) { + memcpy(pcVar37,local_540,(long)(int)uVar5 * uVar23); + } + FUN_003cb580(pcVar28,pdVar18,uVar5); + if (0 < (int)uVar5) { + uVar22 = -((uint)((ulong)pdVar18 >> 2) & 3) & 3; + if (uVar5 < uVar22) { + uVar22 = uVar5; + } + uVar1 = uVar5; + if (((int)uVar5 < 5) || (uVar24 = 0, uVar1 = uVar22, uVar22 != 0)) { + uVar22 = uVar1; + *(float *)pdVar18 = (float)((double)*(float *)pdVar18 * param_2); + if ((uVar22 == 1) || + (*(float *)((long)pdVar18 + 4) = + (float)((double)*(float *)((long)pdVar18 + 4) * param_2), uVar22 == 2)) { + uVar24 = (ulong)uVar22; + } + else { + *(float *)(pdVar18 + 1) = (float)((double)*(float *)(pdVar18 + 1) * param_2); + if (uVar22 == 4) { + uVar24 = 4; + *(float *)((long)pdVar18 + 0xc) = + (float)((double)*(float *)((long)pdVar18 + 0xc) * param_2); + } + else { + uVar24 = 3; + } + } + if (uVar22 == uVar5) goto LAB_002bc6a8; + } + uVar1 = ((uVar5 - uVar22) - 4 >> 2) + 1; + iVar21 = uVar1 * 4; + if (2 < (uVar5 - 1) - uVar22) { + puVar29 = (undefined8 *)((long)pdVar18 + (ulong)uVar22 * 4); + uVar31 = 0; + puVar35 = puVar29; + do { + uVar40 = *puVar29; + uVar31 = uVar31 + 1; + puVar35[1] = CONCAT44((float)((double)(float)((ulong)puVar29[1] >> 0x20) * + param_2), + (float)((double)(float)puVar29[1] * param_2)); + *puVar35 = CONCAT44((float)((double)(float)((ulong)uVar40 >> 0x20) * param_2), + (float)((double)(float)uVar40 * param_2)); + puVar29 = puVar29 + 2; + puVar35 = puVar35 + 2; + } while (uVar31 < uVar1); + uVar24 = (ulong)(uint)((int)uVar24 + iVar21); + if (iVar21 == uVar5 - uVar22) goto LAB_002bc6a8; + } + uVar30 = -(uVar24 >> 0x1f) & 0xfffffffc00000000 | uVar24 << 2; + *(float *)((long)pdVar18 + uVar30) = + (float)((double)*(float *)((long)pdVar18 + uVar30) * param_2); + if (((int)uVar24 + 1 < (int)uVar5) && + (*(float *)((long)pdVar18 + uVar30 + 4) = + (float)((double)*(float *)((long)pdVar18 + uVar30 + 4) * param_2), + (int)uVar24 + 2 < (int)uVar5)) { + *(float *)((long)pdVar18 + uVar30 + 8) = + (float)((double)*(float *)((long)pdVar18 + uVar30 + 8) * param_2); + } + } +LAB_002bc6a8: + FUN_003cab60(pdVar18,pdVar18,uVar5); + uVar12 = DAT_002bcaf0; + if (0 < (int)uVar5) { + if (param_2 < 0.0) { + lVar27 = 0; + do { + if (*(float *)(pcVar36 + lVar27 * 4) <= 0.0) { + if (*(float *)(pcVar36 + lVar27 * 4) == 0.0) { + *(undefined4 *)((long)pdVar18 + lVar27 * 4) = uVar13; + } + else { + *(undefined4 *)((long)pdVar18 + lVar27 * 4) = uVar11; + } + } + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar5); + } + else { + lVar27 = 0; + do { + if ((*(float *)(pcVar36 + lVar27 * 4) <= 0.0) && + (*(float *)(pcVar36 + lVar27 * 4) != 0.0)) { + *(undefined4 *)((long)pdVar18 + lVar27 * 4) = uVar12; + } + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar5); + } + } + } + else { + pcVar28 = local_540; + if ((pcVar37 != (code *)0x0) && (pcVar28 = pcVar37, pcVar37 != local_540)) { + memcpy(pcVar37,local_540,(long)(int)uVar5 * uVar23); + } + FUN_003cb880(pcVar28,pdVar18,uVar5); + if (0 < (int)uVar5) { + uVar22 = (uint)((ulong)pdVar18 >> 3) & 1; + if (uVar5 < uVar22) { + uVar22 = uVar5; + } + if ((int)uVar5 < 4) { + *pdVar18 = *pdVar18 * param_2; + uVar22 = uVar5; +joined_r0x002bc71c: + if (uVar22 == 1) { + uVar24 = 1; + } + else { + pdVar18[1] = pdVar18[1] * param_2; + if (uVar22 == 3) { + uVar24 = 3; + pdVar18[2] = pdVar18[2] * param_2; + } + else { + uVar24 = 2; + } + } + if (uVar5 == uVar22) goto LAB_002bc414; + } + else { + uVar24 = 0; + if (uVar22 != 0) { + *pdVar18 = *pdVar18 * param_2; + goto joined_r0x002bc71c; + } + } + iVar38 = uVar5 - uVar22; + uVar1 = (iVar38 - 2U >> 1) + 1; + iVar21 = uVar1 * 2; + if (iVar38 != 1) { + uVar31 = 0; + pdVar26 = pdVar18 + uVar22; + pdVar34 = pdVar18 + uVar22; + do { + dVar9 = *pdVar26; + uVar31 = uVar31 + 1; + pdVar34[1] = pdVar26[1] * param_2; + *pdVar34 = dVar9 * param_2; + pdVar26 = pdVar26 + 2; + pdVar34 = pdVar34 + 2; + } while (uVar31 < uVar1); + uVar24 = (ulong)(uint)((int)uVar24 + iVar21); + if (iVar38 == iVar21) goto LAB_002bc414; + } + uVar24 = -(uVar24 >> 0x1f) & 0xfffffff800000000 | uVar24 << 3; + *(double *)((long)pdVar18 + uVar24) = *(double *)((long)pdVar18 + uVar24) * param_2; + } +LAB_002bc414: + FUN_003cb060(pdVar18,pdVar18,uVar5); + if (0 < (int)uVar5) { + lVar27 = 0; + if (0.0 <= param_2) { + do { + while ((*(double *)(pcVar36 + lVar27 * 8) <= 0.0 && + (*(double *)(pcVar36 + lVar27 * 8) != 0.0))) { + pdVar18[lVar27] = dVar10; + lVar27 = lVar27 + 1; + if ((int)uVar5 <= (int)lVar27) goto LAB_002bc46c; + } + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar5); + } + else { + do { + if (*(double *)(pcVar36 + lVar27 * 8) <= 0.0) { + if (*(double *)(pcVar36 + lVar27 * 8) == 0.0) { + pdVar18[lVar27] = dVar14; + } + else { + pdVar18[lVar27] = dVar10; + } + } + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar5); + } + } + } +LAB_002bc46c: + local_540 = local_540 + (long)(int)uVar5 * uVar23; + local_538 = (double *)((long)local_538 + (long)(int)uVar5 * uVar23); + uVar20 = uVar20 - uVar4; + bVar39 = (int)uVar7 < (int)uVar6; + uVar7 = uVar7 + uVar4; + } while (bVar39); + } + local_548 = local_548 + 1; + NAryMatIterator::operator++(aNStack_518); + } while (local_548 < local_4f8); + } + if ((local_418 != (code *)&local_408) && (local_418 != (code *)0x0)) { + operator_delete__(local_418); + } + } + else { + if (param_2 < 0.0) { + if (uVar3 == 5) { + pcVar37 = thunk_FUN_003ca80c; + } + else { + pcVar37 = thunk_FUN_003ca92c; + } + } + else if (uVar3 == 5) { + pcVar37 = thunk_FUN_003ca9b0; + } + else { + pcVar37 = thunk_FUN_003caaf0; + } + for (uVar23 = 0; uVar23 < local_4f8; uVar23 = uVar23 + 1) { + (*pcVar37)(local_540,local_538,uVar6); + NAryMatIterator::operator++(aNStack_518); + } + } + if (local_440 != 0) { + piVar2 = (int *)(local_440 + 0x14); + do { + iVar21 = *piVar2; + cVar8 = '\x01'; + bVar39 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar39) { + *piVar2 = iVar21 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar21 == 1) { + Mat::deallocate(local_560); + } + } + local_440 = 0; + local_468 = 0; + local_450 = 0; + local_458 = 0; + local_460 = 0; + if (0 < local_474) { + iVar21 = 0; + puVar29 = local_438; + do { + iVar21 = iVar21 + 1; + *(undefined4 *)puVar29 = 0; + puVar29 = (undefined8 *)((long)puVar29 + 4); + } while (iVar21 < local_474); + } + if (local_430 != &local_428) { + fastFree(local_430); + } + if (local_4a0 != 0) { + piVar2 = (int *)(local_4a0 + 0x14); + do { + iVar21 = *piVar2; + cVar8 = '\x01'; + bVar39 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar39) { + *piVar2 = iVar21 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar21 == 1) { + Mat::deallocate(local_568); + } + } + local_4a0 = 0; + local_4c8 = 0; + local_4b0 = 0; + local_4b8 = 0; + local_4c0 = 0; + if (0 < local_4d4) { + iVar21 = 0; + pppcVar32 = local_498; + do { + iVar21 = iVar21 + 1; + *(undefined4 *)pppcVar32 = 0; + pppcVar32 = (code ***)((long)pppcVar32 + 4); + } while (iVar21 < local_4d4); + } + if (local_490 != &local_488) { + fastFree(local_490); + } + return; +} + + +================================================================== + +### FUNC 002bcb08 (8 bytes) name=sqrt + +/* cv::sqrt(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::sqrt(_InputArray *param_1,_OutputArray *param_2) + +{ + pow(param_1,0.5,param_2); + return; +} + + +================================================================== + +### FUNC 002bcb10 (1968 bytes) name=checkRange + +/* cv::checkRange(cv::_InputArray const&, bool, cv::Point_*, double, double) */ + +uint cv::checkRange(_InputArray *param_1,bool param_2,Point_ *param_3,double param_4,double param_5) + +{ + ulong uVar1; + ulong uVar2; + int iVar3; + char cVar4; + bool bVar5; + float fVar6; + int iVar7; + uint uVar8; + int *piVar9; + Mat *pMVar10; + double *pdVar11; + ulong uVar12; + int iVar13; + double *pdVar14; + int iVar15; + int iVar16; + ulong uVar17; + uint uVar18; + code *pcVar19; + float fVar20; + float fVar21; + undefined8 local_128; + undefined8 uStack_120; + double local_118; + undefined8 local_110; + undefined4 local_108; + undefined4 local_104; + NAryMatIterator aNStack_100 [8]; + undefined8 local_f8; + ulong local_e0; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + double *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + ulong *local_78; + ulong local_70; + ulong local_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + double *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + ulong *local_18; + ulong local_10; + ulong local_8; + + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) { + pMVar10 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar10; + local_bc = *(int *)(pMVar10 + 4); + local_b8 = *(int *)(pMVar10 + 8); + local_b4 = *(int *)(pMVar10 + 0xc); + local_b0 = *(double **)(pMVar10 + 0x10); + local_a8 = *(undefined8 *)(pMVar10 + 0x18); + local_a0 = *(undefined8 *)(pMVar10 + 0x20); + local_98 = *(undefined8 *)(pMVar10 + 0x28); + local_90 = *(undefined8 *)(pMVar10 + 0x30); + local_88 = *(long *)(pMVar10 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = *piVar9 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar10 + 4) < 3) { + local_70 = **(ulong **)(pMVar10 + 0x48); + local_68 = (*(ulong **)(pMVar10 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar10); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (2 < local_bc) { + local_20 = &local_58; + local_18 = &local_10; + uStack_120 = 0; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = (double *)0x0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + local_128 = (Mat *)&local_c0; + NAryMatIterator::NAryMatIterator(aNStack_100,(Mat **)&local_128,(Mat *)&local_60,-1); + for (uVar17 = 0; uVar17 < local_e0; uVar17 = uVar17 + 1) { + local_108 = 0; + local_104 = 0; + local_118 = (double)CONCAT44(local_118._4_4_,0x1010000); + local_110 = local_f8; + uVar8 = checkRange((_InputArray *)&local_118,param_2,param_3,param_4,param_5); + uVar18 = uVar8 & 0xff; + if ((uVar8 & 0xff) == 0) goto LAB_002bcc38; + NAryMatIterator::operator++(aNStack_100); + } + uVar18 = 1; +LAB_002bcc38: + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar9; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_5c) { + iVar7 = 0; + piVar9 = local_20; + do { + *piVar9 = 0; + iVar7 = iVar7 + 1; + piVar9 = piVar9 + 1; + } while (iVar7 < local_5c); + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = (double *)0x0; + if (local_18 != &local_10) { + fastFree(local_18); + } + goto LAB_002bccac; + } + uVar18 = local_c0 & 7; + local_128 = (Mat *)0xffffffffffffffff; + local_118 = 0.0; + if (uVar18 < 5) { + iVar7 = -0x80000000; + if (DAT_002bd340 <= param_4) { + iVar7 = (int)param_4 - (uint)(param_4 < (double)(int)param_4); + } + iVar15 = 0x7fffffff; + if (param_5 <= DAT_002bd348) { + iVar15 = (int)param_5 - (uint)(param_5 <= (double)(int)param_5); + } + local_5c = local_bc; + local_20 = &local_58; + local_58 = local_b8; + local_18 = &local_10; + local_54 = local_b4; + local_50 = local_b0; + local_48 = local_a8; + local_40 = local_a0; + local_38 = local_98; + local_30 = local_90; + local_60 = local_c0; + local_28 = local_88; + local_8 = 0; + local_10 = 0; + pcVar19 = (code *)(&PTR_FUN_00509390)[(int)uVar18]; + if (local_88 == 0) { +LAB_002bd0e4: + local_10 = *local_78; + local_8 = local_78[1]; + } + else { + piVar9 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = *piVar9 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (local_bc < 3) goto LAB_002bd0e4; + local_5c = 0; + Mat::copySize((Mat *)&local_60,(Mat *)&local_c0); + } + (*pcVar19)((Mat *)&local_60,&local_128,iVar7,iVar15,&local_118); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar9; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (double *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + piVar9 = local_20; + do { + *piVar9 = 0; + iVar7 = iVar7 + 1; + piVar9 = piVar9 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + uVar17 = (ulong)local_128 & 0xffffffff; + if (-1 < (int)(uint)local_128) { +LAB_002bced0: + if (param_3 != (Point_ *)0x0) { + *(int *)param_3 = (int)uVar17; + *(uint *)(param_3 + 4) = local_128._4_4_; + } + if (!param_2) { + format("the value at (%d, %d)=%g is out of range",(String *)aNStack_100,local_118,uVar17, + (ulong)local_128._4_4_); + error(-0xd3,(String *)aNStack_100, + "bool cv::checkRange(cv::InputArray, bool, cv::Point*, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x6b3); + String::deallocate((String *)aNStack_100); + } + uVar18 = (uint)local_128 >> 0x1f; + goto LAB_002bccac; + } + } + else { + iVar7 = (local_c0 >> 3 & 0x1ff) + 1; + if (((local_c0 >> 0xe & 1) == 0) || + (uVar17 = (long)local_b4 * (long)local_b8 * (long)iVar7, uVar17 - (long)(int)uVar17 != 0)) { + uVar17 = (ulong)(uint)(local_b4 * iVar7); + iVar7 = local_b8; + } + else { + iVar7 = 1; + } + iVar15 = (int)uVar17; + if (uVar18 == 5) { + if (DAT_002bd350 <= param_4) { + fVar20 = (float)param_4; + if (param_5 <= DAT_002bd358) { + fVar21 = (float)param_5; + if ((int)fVar20 < 0) goto LAB_002bd2a8; + goto LAB_002bd1c8; + } + if ((int)fVar20 < 0) { + fVar20 = (float)((uint)fVar20 ^ 0x7fffffff); + fVar6 = 3.4028235e+38; + } + else { + fVar6 = 3.4028235e+38; + } + } + else { + if (DAT_002bd358 < param_5) { + fVar21 = 3.4028235e+38; + fVar20 = -3.4028235e+38; +LAB_002bd2a8: + fVar20 = (float)((uint)fVar20 ^ 0x7fffffff); + } + else { + fVar21 = (float)param_5; + fVar20 = -1.1754944e-38; + } +LAB_002bd1c8: + fVar6 = (float)((uint)fVar21 ^ 0x7fffffff); + if (-1 < (int)fVar21) { + fVar6 = fVar21; + } + } + if (iVar7 != 0) { + local_118 = 0.0; + iVar16 = 0; + pdVar14 = local_b0; + do { + iVar13 = 0; + pdVar11 = pdVar14; + if (0 < iVar15) { + do { + uVar18 = 0; + if ((int)*(float *)pdVar11 < 0) { + uVar18 = 0x7fffffff; + } + uVar18 = uVar18 ^ (uint)*(float *)pdVar11; + if (((int)fVar6 <= (int)uVar18) || ((int)uVar18 < (int)fVar20)) { + iVar3 = 0; + if (local_b4 != 0) { + iVar3 = (iVar16 + iVar13) / local_b4; + } + local_118 = (double)*(float *)pdVar11; + uVar18 = (iVar16 + iVar13) - iVar3 * local_b4; + uVar17 = (ulong)uVar18; + local_128 = (Mat *)CONCAT44(iVar3,uVar18); + if (-1 < (int)uVar18) goto LAB_002bced0; + break; + } + iVar13 = iVar13 + 1; + pdVar11 = (double *)((long)pdVar11 + 4); + } while (iVar13 != iVar15); + } + pdVar14 = (double *)((long)pdVar14 + (local_70 & 0xfffffffffffffffc)); + iVar16 = iVar16 + iVar15; + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + uVar18 = 1; + goto LAB_002bccac; + } + } + else { + uVar1 = 0; + if ((long)param_4 < 0) { + uVar1 = 0x7fffffffffffffff; + } + uVar2 = 0; + if ((long)param_5 < 0) { + uVar2 = 0x7fffffffffffffff; + } + if (iVar7 != 0) { + uVar17 = 0xffffffff; + local_128._4_4_ = -1; + iVar16 = 0; + pdVar14 = local_b0; + do { + iVar13 = 0; + pdVar11 = pdVar14; + if (0 < iVar15) { + do { + uVar12 = 0; + if ((long)*pdVar11 < 0) { + uVar12 = 0x7fffffffffffffff; + } + uVar12 = uVar12 ^ (ulong)*pdVar11; + if (((long)(uVar2 ^ (ulong)param_5) <= (long)uVar12) || + ((long)uVar12 < (long)(uVar1 ^ (ulong)param_4))) { + local_118 = *pdVar11; + local_128._4_4_ = 0; + if (local_b4 != 0) { + local_128._4_4_ = (iVar16 + iVar13) / local_b4; + } + uVar18 = (iVar16 + iVar13) - local_128._4_4_ * local_b4; + uVar17 = (ulong)uVar18; + if (-1 < (int)uVar18) { + local_128 = (Mat *)CONCAT44(local_128._4_4_,uVar18); + goto LAB_002bced0; + } + break; + } + iVar13 = iVar13 + 1; + pdVar11 = pdVar11 + 1; + } while (iVar13 != iVar15); + } + pdVar14 = (double *)((long)pdVar14 + (local_70 & 0xfffffffffffffff8)); + iVar16 = iVar16 + iVar15; + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + local_128._0_4_ = (uint)uVar17; + } + } + } + uVar18 = 1; +LAB_002bccac: + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar9; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (double *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + piVar9 = local_80; + do { + *piVar9 = 0; + iVar7 = iVar7 + 1; + piVar9 = piVar9 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return uVar18; +} + + +================================================================== + +### FUNC 002bd360 (756 bytes) name=patchNaNs + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::patchNaNs(cv::_InputOutputArray const&, double) */ + +void cv::patchNaNs(_InputOutputArray *param_1,double param_2) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + char *pcVar10; + undefined8 *puVar11; + Mat *pMVar12; + ulong uVar13; + float *pfVar14; + uchar *puVar15; + ulong uVar16; + ulong uVar17; + float fVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 uVar21; + undefined1 uVar22; + undefined1 uVar23; + undefined1 uVar24; + undefined1 uVar25; + undefined1 uVar26; + undefined1 uVar27; + undefined1 uVar28; + undefined1 uVar29; + undefined1 uVar30; + undefined1 uVar31; + uchar *local_b8; + String *local_b0; + undefined8 uStack_a8; + NAryMatIterator aNStack_a0 [32]; + ulong local_80; + long local_78; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar9 = _InputArray::depth((_InputArray *)param_1,-1); + if (iVar9 != 5) { + local_60 = 0; + local_58 = 0; + pcVar10 = (char *)String::allocate((String *)&local_60,0x14); + uVar8 = s__a_depth______CV_32F_00468590._8_8_; + uVar7 = s__a_depth______CV_32F_00468590._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s__a_depth______CV_32F_00468590._16_4_; + *(undefined8 *)pcVar10 = uVar7; + *(undefined8 *)(pcVar10 + 8) = uVar8; + error(-0xd7,(String *)&local_60,"void cv::patchNaNs(cv::InputOutputArray, double)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x6d1); + String::deallocate((String *)&local_60); + } + iVar9 = _InputArray::kind((_InputArray *)param_1); + if (iVar9 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar2 = *(uint *)pMVar12; + local_50 = *(undefined8 *)(pMVar12 + 0x10); + local_60 = *(ulong *)pMVar12; + local_58 = *(undefined8 *)(pMVar12 + 8); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar12 + 0x48); + local_8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar2; + Mat::copySize((Mat *)&local_60,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uStack_a8 = 0; + local_b0 = (String *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_a0,(Mat **)&local_b0,&local_b8,-1); + fVar18 = (float)param_2; + uVar17 = 0; + uVar16 = local_78 + (local_60 >> 3 & 0x1ff) * local_78; + if (local_80 != 0) { + do { + uVar13 = 0; + puVar15 = local_b8; + while (uVar13 + 4 <= uVar16) { + uVar7 = *(undefined8 *)(puVar15 + 8); + uVar25 = (undefined1)((ulong)uVar7 >> 8); + uVar26 = (undefined1)((ulong)uVar7 >> 0x10); + uVar27 = (undefined1)((ulong)uVar7 >> 0x18); + uVar28 = (undefined1)((ulong)uVar7 >> 0x20); + uVar29 = (undefined1)((ulong)uVar7 >> 0x28); + uVar30 = (undefined1)((ulong)uVar7 >> 0x30); + uVar31 = (undefined1)((ulong)uVar7 >> 0x38); + auVar19._0_4_ = + -(uint)((int)_DAT_002bd690 < (int)((uint)*(undefined8 *)puVar15 & 0x7fffffff)); + auVar19._4_4_ = + -(uint)((int)((ulong)_DAT_002bd690 >> 0x20) < + (int)((uint)((ulong)*(undefined8 *)puVar15 >> 0x20) & 0x7fffffff)); + auVar19._8_4_ = -(uint)((int)_UNK_002bd698 < (int)((uint)uVar7 & 0x7fffffff)); + auVar19._12_4_ = + -(uint)((int)((ulong)_UNK_002bd698 >> 0x20) < + (int)((uint)((ulong)uVar7 >> 0x20) & 0x7fffffff)); + uVar21 = (undefined1)((uint)fVar18 >> 0x18); + uVar22 = SUB41(fVar18,0); + uVar23 = (undefined1)((uint)fVar18 >> 8); + uVar24 = (undefined1)((uint)fVar18 >> 0x10); + auVar5[4] = uVar22; + auVar5._0_4_ = fVar18; + auVar5[5] = uVar23; + auVar5[6] = uVar24; + auVar5[7] = uVar21; + auVar5[8] = uVar22; + auVar5[9] = uVar23; + auVar5[10] = uVar24; + auVar5[0xb] = uVar21; + auVar5[0xc] = uVar22; + auVar5[0xd] = uVar23; + auVar5[0xe] = uVar24; + auVar5[0xf] = uVar21; + auVar6[9] = uVar25; + auVar6._0_9_ = *(unkbyte9 *)puVar15; + auVar6[10] = uVar26; + auVar6[0xb] = uVar27; + auVar6[0xc] = uVar28; + auVar6[0xd] = uVar29; + auVar6[0xe] = uVar30; + auVar6[0xf] = uVar31; + auVar20[9] = uVar25; + auVar20._0_9_ = *(unkbyte9 *)puVar15; + auVar20[10] = uVar26; + auVar20[0xb] = uVar27; + auVar20[0xc] = uVar28; + auVar20[0xd] = uVar29; + auVar20[0xe] = uVar30; + auVar20[0xf] = uVar31; + auVar20 = auVar20 ^ (auVar6 ^ auVar5) & auVar19; + *(long *)(puVar15 + 8) = auVar20._8_8_; + *(long *)puVar15 = auVar20._0_8_; + uVar13 = uVar13 + 4; + puVar15 = puVar15 + 0x10; + } + pfVar14 = (float *)(local_b8 + uVar13 * 4); + if (uVar13 < uVar16) { + do { + if (0x7f800000 < (uint)ABS(*pfVar14)) { + *pfVar14 = fVar18; + } + pfVar14 = pfVar14 + 1; + } while (pfVar14 != (float *)(local_b8 + uVar16 * 4)); + } + uVar17 = uVar17 + 1; + NAryMatIterator::operator++(aNStack_a0); + } while (uVar17 < local_80); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar9 = 0; + puVar11 = local_20; + do { + *(undefined4 *)puVar11 = 0; + iVar9 = iVar9 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar9 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002bd6a0 (4 bytes) name=cvCbrt + +void cv::cvCbrt(float param_1) + +{ + (*(code *)PTR_cubeRoot_00500d90)(); + return; +} + + +================================================================== + +### FUNC 002bd6a4 (4 bytes) name=cvFastArctan + +void cv::cvFastArctan(float param_1,float param_2) + +{ + (*(code *)PTR_fastAtan2_00500ff8)(); + return; +} + + +================================================================== + +### FUNC 002bd6b0 (2776 bytes) name=cvPolarToCart + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvPolarToCart(cv *param_1,cv *param_2,cv *param_3,cv *param_4,int param_5) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + AutoBuffer *pAVar9; + undefined8 *puVar10; + int iVar11; + int *piVar12; + undefined8 local_2d8; + undefined8 local_2d0; + undefined8 local_2c8; + undefined8 local_2c0; + undefined8 local_2b8; + Mat *local_2b0; + undefined4 local_2a8; + undefined4 local_2a4; + undefined8 local_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + int *local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 uStack_248; + undefined8 local_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + int *local_200; + AutoBuffer *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + int *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined4 local_120; + int local_11c; + Mat *local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined4 local_c0; + int local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + local_258 = &local_250; + pAVar9 = (AutoBuffer *)&local_1f0; + uStack_298 = _UNK_002be2c8; + local_2a0 = _DAT_002be2c0; + uStack_248 = 0; + local_250 = 0; + uStack_238 = _UNK_002be2c8; + local_240 = _DAT_002be2c0; + uStack_1e8 = 0; + local_1f0 = 0; + local_260 = (int *)&uStack_298; + local_200 = (int *)&uStack_238; + local_290 = 0; + uStack_288 = 0; + local_280 = 0; + uStack_278 = 0; + local_270 = 0; + lStack_268 = 0; + local_230 = 0; + uStack_228 = 0; + local_220 = 0; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + local_1f8 = pAVar9; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,pAVar9); + local_198 = &local_190; + local_1a0 = (int *)&uStack_1d8; + uStack_188 = 0; + local_190 = 0; + uStack_1d8 = _UNK_002be2c8; + local_1e0 = _DAT_002be2c0; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + if (param_1 != (cv *)0x0) { + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,pAVar9); + if (lStack_148 != 0) { + piVar12 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar12 = (int *)(lStack_1a8 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar10 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002bd85c: + if (2 < local_17c) goto LAB_002be0b0; + uStack_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar10[1]; + } + else { + iVar11 = 0; + piVar12 = local_1a0; + do { + *piVar12 = 0; + iVar11 = iVar11 + 1; + piVar12 = piVar12 + 1; + } while (iVar11 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002bd85c; +LAB_002be0b0: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar12 = (int *)(lStack_148 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar11 = 0; + do { + *local_140 = 0; + iVar11 = iVar11 + 1; + local_140 = local_140 + 1; + } while (iVar11 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (((*local_1a0 != *local_20) || (local_1a0[1] != local_20[1])) || + (((uint)local_1e0 & 0xfff) != (local_60 & 0xfff))) { + local_2d8 = 0; + local_2d0 = 0; + pAVar9 = (AutoBuffer *)cv::String::allocate((String *)&local_2d8,0x38); + uVar8 = s_Mag_size______Angle_size______Ma_004685a8._40_8_; + uVar7 = s_Mag_size______Angle_size______Ma_004685a8._32_8_; + uVar6 = s_Mag_size______Angle_size______Ma_004685a8._24_8_; + uVar5 = s_Mag_size______Angle_size______Ma_004685a8._16_8_; + uVar4 = s_Mag_size______Angle_size______Ma_004685a8._8_8_; + uVar3 = s_Mag_size______Angle_size______Ma_004685a8._0_8_; + *(undefined8 *)(pAVar9 + 0x30) = s_Mag_size______Angle_size______Ma_004685a8._48_8_; + *(undefined8 *)pAVar9 = uVar3; + *(undefined8 *)(pAVar9 + 8) = uVar4; + *(undefined8 *)(pAVar9 + 0x10) = uVar5; + *(undefined8 *)(pAVar9 + 0x18) = uVar6; + *(undefined8 *)(pAVar9 + 0x20) = uVar7; + *(undefined8 *)(pAVar9 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_2d8, + "void cvPolarToCart(const CvArr*, const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x72e); + cv::String::deallocate((String *)&local_2d8); + } + } + if (param_3 != (cv *)0x0) { + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,pAVar9); + if (lStack_e8 != 0) { + piVar12 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_268 != 0) { + piVar12 = (int *)(lStack_268 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + puVar10 = local_d8; + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (local_2a0._4_4_ < 1) { +LAB_002bda7c: + if (2 < local_11c) goto LAB_002be0a0; + uStack_298 = local_118; + local_2a0 = CONCAT44(local_11c,local_120); + *local_258 = *local_d8; + local_258[1] = puVar10[1]; + } + else { + iVar11 = 0; + piVar12 = local_260; + do { + *piVar12 = 0; + iVar11 = iVar11 + 1; + piVar12 = piVar12 + 1; + } while (iVar11 < local_2a0._4_4_); + if (local_2a0._4_4_ < 3) goto LAB_002bda7c; +LAB_002be0a0: + local_2a0 = CONCAT44(local_2a0._4_4_,local_120); + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_120); + } + uStack_278 = uStack_f8; + local_280 = local_100; + lStack_268 = lStack_e8; + local_270 = local_f0; + uStack_288 = uStack_108; + local_290 = local_110; + if (lStack_e8 != 0) { + piVar12 = (int *)(lStack_e8 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar11 = 0; + do { + *local_e0 = 0; + iVar11 = iVar11 + 1; + local_e0 = local_e0 + 1; + } while (iVar11 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (((*local_260 != *local_20) || (local_260[1] != local_20[1])) || + (((uint)local_2a0 & 0xfff) != (local_60 & 0xfff))) { + local_2c8 = 0; + local_2c0 = 0; + pAVar9 = (AutoBuffer *)cv::String::allocate((String *)&local_2c8,0x34); + uVar8 = s_X_size______Angle_size______X_ty_004685e8._40_8_; + uVar7 = s_X_size______Angle_size______X_ty_004685e8._32_8_; + uVar6 = s_X_size______Angle_size______X_ty_004685e8._24_8_; + uVar5 = s_X_size______Angle_size______X_ty_004685e8._16_8_; + uVar4 = s_X_size______Angle_size______X_ty_004685e8._8_8_; + uVar3 = s_X_size______Angle_size______X_ty_004685e8._0_8_; + *(undefined4 *)(pAVar9 + 0x30) = s_X_size______Angle_size______X_ty_004685e8._48_4_; + *(undefined8 *)pAVar9 = uVar3; + *(undefined8 *)(pAVar9 + 8) = uVar4; + *(undefined8 *)(pAVar9 + 0x10) = uVar5; + *(undefined8 *)(pAVar9 + 0x18) = uVar6; + *(undefined8 *)(pAVar9 + 0x20) = uVar7; + *(undefined8 *)(pAVar9 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_2c8, + "void cvPolarToCart(const CvArr*, const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x733); + cv::String::deallocate((String *)&local_2c8); + } + } + if (param_4 == (cv *)0x0) goto LAB_002bddec; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,pAVar9); + if (lStack_88 != 0) { + piVar12 = (int *)(lStack_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_208 != 0) { + piVar12 = (int *)(lStack_208 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + puVar10 = local_78; + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_240._4_4_ < 1) { +LAB_002bdc9c: + if (2 < local_bc) goto LAB_002bdca8; + uStack_238 = local_b8; + local_240 = CONCAT44(local_bc,local_c0); + *(undefined8 *)local_1f8 = *local_78; + *(undefined8 *)(local_1f8 + 8) = puVar10[1]; + } + else { + iVar11 = 0; + piVar12 = local_200; + do { + *piVar12 = 0; + iVar11 = iVar11 + 1; + piVar12 = piVar12 + 1; + } while (iVar11 < local_240._4_4_); + if (local_240._4_4_ < 3) goto LAB_002bdc9c; +LAB_002bdca8: + local_240 = CONCAT44(local_240._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_c0); + } + uStack_218 = uStack_98; + local_220 = local_a0; + lStack_208 = lStack_88; + local_210 = local_90; + uStack_228 = uStack_a8; + local_230 = local_b0; + if (lStack_88 != 0) { + piVar12 = (int *)(lStack_88 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (((*local_200 != *local_20) || (local_200[1] != local_20[1])) || + (((uint)local_240 & 0xfff) != (local_60 & 0xfff))) { + local_2b8 = 0; + local_2b0 = (Mat *)0x0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_2b8,0x34); + uVar8 = DAT_00468648; + uVar7 = DAT_00468640; + uVar6 = DAT_00468638; + uVar5 = _LAB_00468630; + uVar4 = DAT_00468628; + uVar3 = DAT_00468620; + *(undefined4 *)(puVar10 + 6) = DAT_00468650; + *puVar10 = uVar3; + puVar10[1] = uVar4; + puVar10[2] = uVar5; + puVar10[3] = uVar6; + puVar10[4] = uVar7; + puVar10[5] = uVar8; + cv::error(-0xd7,(String *)&local_2b8, + "void cvPolarToCart(const CvArr*, const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x738); + cv::String::deallocate((String *)&local_2b8); + } +LAB_002bddec: + local_2a8 = 0; + local_2a4 = 0; + local_2b8 = CONCAT44(local_2b8._4_4_,0x1010000); + local_110 = 0; + local_120 = 0x2010000; + local_170 = 0; + local_180 = 0x1010000; + local_b0 = 0; + local_c0 = 0x2010000; + local_2b0 = (Mat *)&local_1e0; + local_178 = (Mat *)&local_60; + local_118 = (Mat *)&local_2a0; + local_b8 = (Mat *)&local_240; + cv::polarToCart((_InputArray *)&local_2b8,(_InputArray *)&local_180,(_OutputArray *)&local_120, + (_OutputArray *)&local_c0,param_5 != 0); + if (lStack_1a8 != 0) { + piVar12 = (int *)(lStack_1a8 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar11 = 0; + piVar12 = local_1a0; + do { + *piVar12 = 0; + iVar11 = iVar11 + 1; + piVar12 = piVar12 + 1; + } while (iVar11 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar12 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (lStack_208 != 0) { + piVar12 = (int *)(lStack_208 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar11 = 0; + piVar12 = local_200; + do { + *piVar12 = 0; + iVar11 = iVar11 + 1; + piVar12 = piVar12 + 1; + } while (iVar11 < local_240._4_4_); + } + if (local_1f8 != (AutoBuffer *)&local_1f0) { + cv::fastFree(local_1f8); + } + if (lStack_268 != 0) { + piVar12 = (int *)(lStack_268 + 0x14); + do { + iVar11 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar11 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_2a0._4_4_) { + iVar11 = 0; + piVar12 = local_260; + do { + *piVar12 = 0; + iVar11 = iVar11 + 1; + piVar12 = piVar12 + 1; + } while (iVar11 < local_2a0._4_4_); + } + if (local_258 != &local_250) { + cv::fastFree(local_258); + } + return; +} + + +================================================================== + +### FUNC 002be2d0 (668 bytes) name=cvExp + +void cvExp(cv *param_1,cv *param_2) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + int *piVar9; + int iVar10; + int *piVar11; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + if (((local_c0 & 0xfff) == (local_60 & 0xfff)) && (iVar10 = local_80[-1], iVar10 == local_20[-1])) + { + if (iVar10 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002be398; + } + else { + if (iVar10 < 1) goto LAB_002be398; + if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_002be398; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_d8,0x30); + uVar7 = s_src_type______dst_type______src__00468658._40_8_; + uVar6 = s_src_type______dst_type______src__00468658._32_8_; + uVar5 = s_src_type______dst_type______src__00468658._24_8_; + uVar4 = s_src_type______dst_type______src__00468658._16_8_; + uVar3 = s_src_type______dst_type______src__00468658._8_8_; + *(undefined8 *)pcVar8 = s_src_type______dst_type______src__00468658._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + *(undefined8 *)(pcVar8 + 0x20) = uVar6; + *(undefined8 *)(pcVar8 + 0x28) = uVar7; + cv::error(-0xd7,(String *)&local_d8,"void cvExp(const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x741); + cv::String::deallocate((String *)&local_d8); +LAB_002be398: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::exp((_InputArray *)local_f0,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002be5d0 (668 bytes) name=cvLog + +void cvLog(cv *param_1,cv *param_2) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + int *piVar9; + int iVar10; + int *piVar11; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + if (((local_c0 & 0xfff) == (local_60 & 0xfff)) && (iVar10 = local_80[-1], iVar10 == local_20[-1])) + { + if (iVar10 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002be698; + } + else { + if (iVar10 < 1) goto LAB_002be698; + if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_002be698; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_d8,0x30); + uVar7 = s_src_type______dst_type______src__00468658._40_8_; + uVar6 = s_src_type______dst_type______src__00468658._32_8_; + uVar5 = s_src_type______dst_type______src__00468658._24_8_; + uVar4 = s_src_type______dst_type______src__00468658._16_8_; + uVar3 = s_src_type______dst_type______src__00468658._8_8_; + *(undefined8 *)pcVar8 = s_src_type______dst_type______src__00468658._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + *(undefined8 *)(pcVar8 + 0x20) = uVar6; + *(undefined8 *)(pcVar8 + 0x28) = uVar7; + cv::error(-0xd7,(String *)&local_d8,"void cvLog(const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x748); + cv::String::deallocate((String *)&local_d8); +LAB_002be698: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::log((_InputArray *)local_f0,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002be8d0 (684 bytes) name=cvPow + +void cvPow(double param_1,cv *param_2,cv *param_3) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + int *piVar9; + int iVar10; + int *piVar11; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,in_x5); + if (((local_c0 & 0xfff) == (local_60 & 0xfff)) && (iVar10 = local_80[-1], iVar10 == local_20[-1])) + { + if (iVar10 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_002be9a0; + } + else { + if (iVar10 < 1) goto LAB_002be9a0; + if (*local_80 == *local_20) { + piVar9 = local_80; + piVar11 = local_20; + do { + piVar11 = piVar11 + 1; + if (piVar9 == local_80 + (iVar10 - 1)) goto LAB_002be9a0; + piVar9 = piVar9 + 1; + } while (*piVar9 == *piVar11); + } + } + } + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_d8,0x30); + uVar7 = s_src_type______dst_type______src__00468658._40_8_; + uVar6 = s_src_type______dst_type______src__00468658._32_8_; + uVar5 = s_src_type______dst_type______src__00468658._24_8_; + uVar4 = s_src_type______dst_type______src__00468658._16_8_; + uVar3 = s_src_type______dst_type______src__00468658._8_8_; + *(undefined8 *)pcVar8 = s_src_type______dst_type______src__00468658._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + *(undefined8 *)(pcVar8 + 0x20) = uVar6; + *(undefined8 *)(pcVar8 + 0x28) = uVar7; + cv::error(-0xd7,(String *)&local_d8,"void cvPow(const CvArr*, CvArr*, double)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x74f); + cv::String::deallocate((String *)&local_d8); +LAB_002be9a0: + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::pow((_InputArray *)local_f0,param_1,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002bebe0 (260 bytes) name=cvCheckArr + +undefined1 cvCheckArr(double param_1,double param_2,cv *param_3,uint param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined1 uVar4; + int iVar5; + AutoBuffer *in_x5; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if ((param_4 & 1) == 0) { + param_1 = DAT_002bed18; + param_2 = DAT_002bed10; + } + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,in_x5); + local_68 = 0; + local_64 = 0; + local_78[0] = 0x1010000; + local_70 = aMStack_60; + uVar4 = cv::checkRange((_InputArray *)local_78,(bool)((byte)(param_4 >> 1) & 1),(Point_ *)0x0, + param_1,param_2); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar5 = 0; + do { + *local_20 = 0; + iVar5 = iVar5 + 1; + local_20 = local_20 + 1; + } while (iVar5 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return uVar4; +} + + +================================================================== + +### FUNC 002bed20 (2892 bytes) name=solveCubic + +/* cv::solveCubic(cv::_InputArray const&, cv::_OutputArray const&) */ + +int cv::solveCubic(_InputArray *param_1,_OutputArray *param_2) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + int iVar8; + char *pcVar9; + void *__dest; + double *pdVar10; + long lVar11; + Mat *pMVar12; + long lVar13; + int *piVar14; + long lVar15; + int iVar16; + int iVar17; + int iVar18; + long lVar19; + long lVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + double *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + long *local_78; + long local_70; + long local_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + double *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + long *local_18; + long local_10; + long local_8; + + iVar8 = _InputArray::kind(param_1); + if (iVar8 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar12; + /* try { // try from 002bf3a0 to 003bf3a3 has its CatchHandler @ 002bf5a8 */ + local_bc = *(int *)(pMVar12 + 4); + local_b8 = *(int *)(pMVar12 + 8); + /* try { // try from 002bf3a8 to 003bf427 has its CatchHandler @ 002bf2f4 */ + local_b4 = *(int *)(pMVar12 + 0xc); + local_b0 = *(double **)(pMVar12 + 0x10); + local_a8 = *(undefined8 *)(pMVar12 + 0x18); + local_a0 = *(undefined8 *)(pMVar12 + 0x20); + local_98 = *(undefined8 *)(pMVar12 + 0x28); + local_90 = *(undefined8 *)(pMVar12 + 0x30); + local_88 = *(long *)(pMVar12 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_70 = **(long **)(pMVar12 + 0x48); + local_68 = (*(long **)(pMVar12 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar1 = local_c0 & 0xfff; + if (1 < uVar1 - 5) { + local_e0 = 0; + local_d8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_e0,0x22); + uVar7 = s_ctype____CV_32F____ctype____CV_6_00468690._24_8_; + uVar6 = s_ctype____CV_32F____ctype____CV_6_00468690._16_8_; + uVar5 = s_ctype____CV_32F____ctype____CV_6_00468690._8_8_; + uVar4 = s_ctype____CV_32F____ctype____CV_6_00468690._0_8_; + *(undefined2 *)(pcVar9 + 0x20) = s_ctype____CV_32F____ctype____CV_6_00468690._32_2_; + *(undefined8 *)pcVar9 = uVar4; + *(undefined8 *)(pcVar9 + 8) = uVar5; + *(undefined8 *)(pcVar9 + 0x10) = uVar6; + *(undefined8 *)(pcVar9 + 0x18) = uVar7; + error(-0xd7,(String *)&local_e0,"int cv::solveCubic(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x77a); + String::deallocate((String *)&local_e0); + } + iVar8 = *local_80; + iVar16 = local_80[1]; + if (((((iVar16 != 3) || (iVar8 != 1)) && ((iVar16 != 4 || (iVar8 != 1)))) && + ((iVar16 != 1 || (iVar8 != 3)))) && ((iVar8 != 4 || (iVar16 != 1)))) { + local_d0 = 0; + local_c8 = 0; + __dest = (void *)String::allocate((String *)&local_d0,0x82); + memcpy(__dest,&DAT_004686b8,0x82); + error(-0xd7,(String *)&local_d0,"int cv::solveCubic(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x77e); + String::deallocate((String *)&local_d0); + } + _OutputArray::create(param_2,3,1,uVar1,-1,true,0x60); + iVar8 = _InputArray::kind((_InputArray *)param_2); + if (iVar8 == 0x10000) { + pMVar12 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar12; + local_5c = *(int *)(pMVar12 + 4); + /* try { // try from 002bf454 to 003bf457 has its CatchHandler @ 002bf594 */ + local_58 = *(int *)(pMVar12 + 8); + local_54 = *(int *)(pMVar12 + 0xc); + /* try { // try from 002bf45c to 003bf517 has its CatchHandler @ 002bf2f4 */ + local_50 = *(double **)(pMVar12 + 0x10); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(pMVar12 + 4)) { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar12); + goto LAB_002beebc; + } + local_10 = **(long **)(pMVar12 + 0x48); + local_8 = (*(long **)(pMVar12 + 0x48))[1]; + iVar8 = local_b4 + local_b8 + -1; + if (uVar1 == 5) goto LAB_002bf500; +LAB_002beed4: + if (iVar8 == 4) { + lVar11 = 2; + lVar13 = 1; + lVar19 = 0x10; + lVar15 = 8; + iVar16 = 3; + dVar21 = *local_b0; + iVar17 = 2; + iVar18 = 1; + iVar8 = 3; + if ((local_c0 & 0x4000) == 0) goto LAB_002bef0c; +LAB_002bf078: + dVar25 = *(double *)((long)local_b0 + lVar15); + dVar26 = *(double *)((long)local_b0 + lVar19); + pdVar10 = local_b0 + iVar16; + } + else { + lVar15 = 0; + lVar11 = 1; + lVar19 = 8; + lVar13 = 0; + iVar16 = 2; + iVar17 = 1; + iVar18 = 0; + dVar21 = 1.0; + iVar8 = 2; + if ((local_c0 & 0x4000) != 0) goto LAB_002bf078; +LAB_002bef0c: + iVar16 = iVar8; + if (*local_80 == 1) goto LAB_002bf078; + if (local_80[1] == 1) { + lVar13 = lVar13 * *local_78; + } + else { + iVar8 = 0; + if (local_b4 != 0) { + iVar8 = iVar18 / local_b4; + } + lVar13 = (long)iVar8 * *local_78 + (long)(iVar18 - local_b4 * iVar8) * 8; + } + dVar25 = *(double *)((long)local_b0 + lVar13); + if (local_80[1] == 1) { + lVar11 = lVar11 * *local_78; + } + else { + iVar8 = 0; + if (local_b4 != 0) { + iVar8 = iVar17 / local_b4; + } + lVar11 = (long)iVar8 * *local_78 + (long)(iVar17 - local_b4 * iVar8) * 8; + } + dVar26 = *(double *)((long)local_b0 + lVar11); + if (local_80[1] == 1) { + pdVar10 = (double *)((long)local_b0 + (long)iVar16 * *local_78); + } + else { + iVar8 = 0; + if (local_b4 != 0) { + iVar8 = iVar16 / local_b4; + } + pdVar10 = (double *) + ((long)local_b0 + (long)iVar8 * *local_78 + (long)(iVar16 - local_b4 * iVar8) * 8) + ; + } + } + dVar23 = *pdVar10; + } + else { + _InputArray::getMat_((int)param_2); +LAB_002beebc: + iVar8 = local_b4 + local_b8 + -1; + if (uVar1 != 5) goto LAB_002beed4; +LAB_002bf500: + if (iVar8 == 4) { + lVar11 = 2; + lVar13 = 1; + lVar20 = 8; + lVar19 = 4; + lVar15 = 3; + iVar8 = 2; + dVar21 = (double)*(float *)local_b0; + iVar16 = 1; + if ((local_c0 & 0x4000) == 0) goto LAB_002bf538; +LAB_002bf5e8: + pdVar10 = (double *)((long)local_b0 + (long)(int)lVar15 * 4); + dVar25 = (double)*(float *)((long)local_b0 + lVar19); + dVar26 = (double)*(float *)((long)local_b0 + lVar20); + } + else { + lVar19 = 0; + lVar11 = 1; + lVar20 = 4; + lVar13 = 0; + lVar15 = 2; + iVar8 = 1; + iVar16 = 0; + dVar21 = 1.0; + if ((local_c0 & 0x4000) != 0) goto LAB_002bf5e8; +LAB_002bf538: + if (*local_80 == 1) goto LAB_002bf5e8; + if (local_80[1] == 1) { + lVar13 = lVar13 * *local_78; + } + else { + iVar17 = 0; + if (local_b4 != 0) { + iVar17 = iVar16 / local_b4; + } + lVar13 = (long)iVar17 * *local_78 + (long)(iVar16 - local_b4 * iVar17) * 4; + } + dVar25 = (double)*(float *)((long)local_b0 + lVar13); + if (local_80[1] == 1) { + lVar11 = lVar11 * *local_78; + } + else { + iVar16 = 0; + if (local_b4 != 0) { + iVar16 = iVar8 / local_b4; + } + /* catch() { ... } // from try @ 002bf454 with catch @ 002bf594 */ + lVar11 = (long)iVar16 * *local_78 + (long)(iVar8 - local_b4 * iVar16) * 4; + /* try { // try from 002bf5a4 to 003bf5a7 has its CatchHandler @ 002bf2f4 */ + } + /* catch() { ... } // from try @ 002bf3a0 with catch @ 002bf5a8 */ + dVar26 = (double)*(float *)((long)local_b0 + lVar11); + /* try { // try from 002bf5b8 to 003bf5bb has its CatchHandler @ 002bf2f4 */ + if (local_80[1] == 1) { + pdVar10 = (double *)((long)local_b0 + lVar15 * *local_78); + } + else { + /* catch() { ... } // from try @ 002bf950 with catch @ 002bf5bc + catch() { ... } // from try @ 002bfbc0 with catch @ 002bf5bc + catch() { ... } // from try @ 002bfcf8 with catch @ 002bf5bc + catch() { ... } // from try @ 002bfd7c with catch @ 002bf5bc + catch() { ... } // from try @ 002bfde0 with catch @ 002bf5bc + catch() { ... } // from try @ 002bfdf8 with catch @ 002bf5bc + catch() { ... } // from try @ 002bfe0c with catch @ 002bf5bc + catch() { ... } // from try @ 002bfe20 with catch @ 002bf5bc + catch() { ... } // from try @ 002bfe34 with catch @ 002bf5bc */ + iVar8 = 0; + if (local_b4 != 0) { + iVar8 = (int)lVar15 / local_b4; + } + pdVar10 = (double *) + ((long)local_b0 + + (long)iVar8 * *local_78 + (long)((int)lVar15 - local_b4 * iVar8) * 4); + } + } + dVar23 = (double)*(float *)pdVar10; + } + if (dVar21 == 0.0) { + if (dVar25 == 0.0) { + if (dVar26 == 0.0) { + dVar26 = 0.0; + dVar24 = 0.0; + iVar8 = -(uint)(dVar23 == 0.0); + dVar23 = 0.0; + } + else { + iVar8 = 1; + dVar24 = 0.0; + dVar26 = -dVar23 / dVar26; + dVar23 = 0.0; + } + } + else { + dVar21 = dVar26 * dVar26 - dVar25 * 4.0 * dVar23; + if (dVar21 < 0.0) { + dVar26 = 0.0; + iVar8 = 0; + dVar24 = 0.0; + dVar23 = dVar26; + } + else { + dVar22 = SQRT(dVar21); + if (NAN(dVar22)) { + dVar22 = ::sqrt(dVar21); + } + dVar21 = (dVar22 - dVar26) * 0.5; + dVar24 = (dVar26 + dVar22) * -0.5; + /* try { // try from 002bf34c to 003bf34f has its CatchHandler @ 002bf2f4 */ + if (ABS(dVar24) < ABS(dVar21)) { + dVar24 = dVar21; + } + dVar26 = dVar24 / dVar25; + dVar24 = dVar23 / dVar24; + iVar8 = 1; + dVar23 = 0.0; + if (0.0 < dVar22) { + iVar8 = 2; + } + } + } + } + else { + dVar21 = 1.0 / dVar21; + dVar25 = dVar25 * dVar21; + dVar22 = (dVar25 * dVar25 - dVar26 * dVar21 * 3.0) * DAT_002bf8c0; + dVar24 = dVar22 * dVar22 * dVar22; + dVar26 = (((dVar25 + dVar25) * dVar25 * dVar25 - dVar25 * 9.0 * dVar26 * dVar21) + + dVar23 * dVar21 * 27.0) * DAT_002bf8c8; + dVar21 = dVar24 - dVar26 * dVar26; + if (dVar21 < 0.0) { + dVar21 = -dVar21; + dVar23 = SQRT(dVar21); + if (NAN(dVar23)) { + dVar23 = ::sqrt(dVar21); + } + dVar21 = ::pow(ABS(dVar26) + dVar23,DAT_002bf8e8); + if (0.0 < dVar26) { + dVar21 = -dVar21; + } + iVar8 = 1; + dVar23 = 0.0; + dVar24 = 0.0; + dVar26 = (dVar22 / dVar21 + dVar21) - DAT_002bf8d0 * dVar25; + } + else { + dVar21 = SQRT(dVar24); + if (NAN(dVar21)) { + dVar21 = ::sqrt(dVar24); + } + dVar21 = acos(dVar26 / dVar21); + dVar23 = SQRT(dVar22); + if (NAN(dVar23)) { + dVar23 = ::sqrt(dVar22); + } + dVar22 = DAT_002bf8d0; + iVar8 = 3; + dVar21 = dVar21 * DAT_002bf8d0; + dVar23 = dVar23 * -2.0; + dVar26 = cos(dVar21); + dVar26 = dVar26 * dVar23 - dVar22 * dVar25; + dVar24 = cos(dVar21 + DAT_002bf8d8); + dVar24 = dVar24 * dVar23 - dVar22 * dVar25; + dVar21 = cos(dVar21 + DAT_002bf8e0); + dVar23 = dVar21 * dVar23 - dVar22 * dVar25; + } + } + if ((local_60 & 0xfff) != 5) { + if ((local_60 >> 0xe & 1) == 0) { + if (*local_20 == 1) { + iVar16 = *local_20; + *local_50 = dVar26; + if (iVar16 != 1) goto LAB_002bf18c; + local_50[1] = dVar24; + if (*local_20 == 1) goto LAB_002bf384; + } + else { + *local_50 = dVar26; +LAB_002bf18c: + if (local_20[1] == 1) { + lVar13 = *local_18; + } + else { + iVar16 = 0; + if (local_54 != 0) { + iVar16 = 1 / local_54; + } + lVar13 = (long)iVar16 * *local_18 + (long)(1 - local_54 * iVar16) * 8; + } + *(double *)((long)local_50 + lVar13) = dVar24; + } + if (local_20[1] == 1) { + pdVar10 = (double *)((long)local_50 + *local_18 * 2); + } + else { + iVar16 = 0; + if (local_54 != 0) { + iVar16 = 2 / local_54; + } + pdVar10 = (double *) + ((long)local_50 + (long)iVar16 * *local_18 + (long)(2 - local_54 * iVar16) * 8); + } + } + else { + *local_50 = dVar26; + local_50[1] = dVar24; +LAB_002bf384: + pdVar10 = local_50 + 2; + } + *pdVar10 = dVar23; + goto LAB_002bf1f8; + } + if ((local_60 >> 0xe & 1) == 0) { + if (*local_20 == 1) { + iVar16 = *local_20; + *(float *)local_50 = (float)dVar26; + if (iVar16 != 1) goto LAB_002bf008; + iVar16 = *local_20; + *(float *)((long)local_50 + 4) = (float)dVar24; + if (iVar16 == 1) goto LAB_002bf650; + } + else { + *(float *)local_50 = (float)dVar26; +LAB_002bf008: + if (local_20[1] == 1) { + lVar13 = *local_18; + } + else { + iVar16 = 0; + if (local_54 != 0) { + iVar16 = 1 / local_54; + } + lVar13 = (long)iVar16 * *local_18 + (long)(1 - local_54 * iVar16) * 4; + } + *(float *)((long)local_50 + lVar13) = (float)dVar24; + } + if (local_20[1] == 1) { + pdVar10 = (double *)((long)local_50 + *local_18 * 2); + } + else { + iVar16 = 0; + if (local_54 != 0) { + iVar16 = 2 / local_54; + } + pdVar10 = (double *) + ((long)local_50 + (long)iVar16 * *local_18 + (long)(2 - local_54 * iVar16) * 4); + } + } + else { + *(float *)local_50 = (float)dVar26; + *(float *)((long)local_50 + 4) = (float)dVar24; +LAB_002bf650: + pdVar10 = local_50 + 1; + } + *(float *)pdVar10 = (float)dVar23; +LAB_002bf1f8: + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar16 = *piVar14; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (double *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar16 = 0; + piVar14 = local_20; + do { + *piVar14 = 0; + iVar16 = iVar16 + 1; + piVar14 = piVar14 + 1; + } while (iVar16 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar16 = *piVar14; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar3) { + *piVar14 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (double *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar16 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar16 = iVar16 + 1; + piVar14 = piVar14 + 1; + } while (iVar16 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + /* catch() { ... } // from try @ 002bf34c with catch @ 002bf2f4 + catch() { ... } // from try @ 002bf3a8 with catch @ 002bf2f4 + catch() { ... } // from try @ 002bf45c with catch @ 002bf2f4 + catch() { ... } // from try @ 002bf5a4 with catch @ 002bf2f4 + catch() { ... } // from try @ 002bf5b8 with catch @ 002bf2f4 */ + return iVar8; +} + + +================================================================== + +### FUNC 002bf8f0 (2832 bytes) name=solvePoly + +/* cv::solvePoly(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +undefined1 [16] cv::solvePoly(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + int iVar1; + uint uVar2; + char cVar3; + bool bVar4; + uint uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined2 uVar12; + int iVar13; + int iVar14; + uint uVar15; + ulong uVar16; + char *pcVar17; + ulong uVar18; + double *pdVar19; + long lVar20; + double *pdVar21; + uint uVar22; + double *pdVar23; + Mat **ppMVar24; + int *piVar25; + Mat *pMVar26; + double *pdVar27; + double *pdVar28; + uint uVar29; + uint uVar30; + double dVar31; + double dVar32; + undefined1 auVar33 [16]; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + long lVar40; + double dVar41; + undefined8 local_638; + undefined8 local_630; + undefined8 local_628; + Mat *local_620; + undefined4 local_618; + undefined4 local_614; + uint local_610; + int local_60c; + int local_608; + int local_604; + undefined8 local_600; + undefined8 local_5f8; + undefined8 local_5f0; + undefined8 local_5e8; + undefined8 local_5e0; + long local_5d8; + int *local_5d0; + undefined8 *local_5c8; + undefined8 local_5c0; + undefined8 local_5b8; + uint local_5b0; + int local_5ac; + int local_5a8; + undefined4 local_5a4; + undefined8 local_5a0; + undefined8 local_598; + undefined8 local_590; + undefined8 local_588; + undefined8 local_580; + long local_578; + int *local_570; + undefined8 *local_568; + undefined8 local_560; + undefined8 local_558; + uint local_550; + int local_54c; + int local_548; + int local_544; + double *local_540; + double *local_538; + double *local_530; + double *local_528; + undefined8 local_520; + long local_518; + int *local_510; + long *local_508; + long local_500; + long local_4f8; + undefined4 local_4f0; + int local_4ec; + Mat *local_4e8; + double *local_4e0; + double *local_4d8; + double *local_4d0; + double *local_4c8; + undefined8 local_4c0; + long local_4b8; + Mat **local_4b0; + ulong *local_4a8; + ulong local_4a0 [2]; + double *local_490; + ulong local_488; + double adStack_480 [144]; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar26 = *(Mat **)(param_1 + 8); + local_5d0 = &local_608; + local_5c8 = &local_5c0; + local_610 = *(uint *)pMVar26; + local_60c = *(int *)(pMVar26 + 4); + local_608 = *(int *)(pMVar26 + 8); + local_604 = *(int *)(pMVar26 + 0xc); + local_600 = *(undefined8 *)(pMVar26 + 0x10); + local_5f8 = *(undefined8 *)(pMVar26 + 0x18); + local_5f0 = *(undefined8 *)(pMVar26 + 0x20); + local_5e8 = *(undefined8 *)(pMVar26 + 0x28); + local_5e0 = *(undefined8 *)(pMVar26 + 0x30); + local_5d8 = *(long *)(pMVar26 + 0x38); + local_5b8 = 0; + local_5c0 = 0; + if (local_5d8 != 0) { + piVar25 = (int *)(local_5d8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar26 + 4) < 3) { + local_5c0 = **(undefined8 **)(pMVar26 + 0x48); + local_5b8 = (*(undefined8 **)(pMVar26 + 0x48))[1]; + } + else { + local_60c = 0; + Mat::copySize((Mat *)&local_610,pMVar26); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar16 = _InputArray::type(param_1,-1); + uVar30 = (uint)uVar16 & 7; + /* try { // try from 002bf950 to 003bfb87 has its CatchHandler @ 002bf5bc */ + if ((uVar30 < 5) || (1 < ((uint)(uVar16 >> 3) & 0x1ff))) { + local_638 = 0; + local_630 = 0; + pcVar17 = (char *)String::allocate((String *)&local_638,0x36); + uVar12 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._52_2_; + uVar11 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._40_8_; + uVar10 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._32_8_; + uVar9 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._24_8_; + uVar8 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._16_8_; + uVar7 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._8_8_; + uVar6 = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._0_8_; + *(undefined4 *)(pcVar17 + 0x30) = s_CV_MAT_DEPTH_ctype__>__CV_32F____00468740._48_4_; + *(undefined2 *)(pcVar17 + 0x34) = uVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + *(undefined8 *)(pcVar17 + 0x10) = uVar8; + *(undefined8 *)(pcVar17 + 0x18) = uVar9; + *(undefined8 *)(pcVar17 + 0x20) = uVar10; + *(undefined8 *)(pcVar17 + 0x28) = uVar11; + error(-0xd7,(String *)&local_638,"double cv::solvePoly(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x7ff); + String::deallocate((String *)&local_638); + } + if ((local_608 != 1) && (local_604 != 1)) { + local_628 = 0; + local_620 = (Mat *)0x0; + pcVar17 = (char *)String::allocate((String *)&local_628,0x26); + uVar12 = s_coeffs0_rows____1____coeffs0_col_00468778._36_2_; + uVar9 = s_coeffs0_rows____1____coeffs0_col_00468778._24_8_; + uVar8 = s_coeffs0_rows____1____coeffs0_col_00468778._16_8_; + uVar7 = s_coeffs0_rows____1____coeffs0_col_00468778._8_8_; + uVar6 = s_coeffs0_rows____1____coeffs0_col_00468778._0_8_; + *(undefined4 *)(pcVar17 + 0x20) = s_coeffs0_rows____1____coeffs0_col_00468778._32_4_; + *(undefined2 *)(pcVar17 + 0x24) = uVar12; + *(undefined8 *)pcVar17 = uVar6; + *(undefined8 *)(pcVar17 + 8) = uVar7; + *(undefined8 *)(pcVar17 + 0x10) = uVar8; + *(undefined8 *)(pcVar17 + 0x18) = uVar9; + error(-0xd7,(String *)&local_628,"double cv::solvePoly(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x800); + String::deallocate((String *)&local_628); + } + iVar13 = local_604 + local_608; + uVar5 = iVar13 - 2; + _OutputArray::create(param_2,uVar5,1,uVar30 + 8,-1,true,0x60); + iVar14 = _InputArray::kind((_InputArray *)param_2); + if (iVar14 == 0x10000) { + pMVar26 = *(Mat **)(param_2 + 8); + local_570 = &local_5a8; + local_568 = &local_560; + local_5b0 = *(uint *)pMVar26; + local_5ac = *(int *)(pMVar26 + 4); + local_5a8 = *(int *)(pMVar26 + 8); + local_5a4 = *(undefined4 *)(pMVar26 + 0xc); + local_5a0 = *(undefined8 *)(pMVar26 + 0x10); + local_598 = *(undefined8 *)(pMVar26 + 0x18); + local_590 = *(undefined8 *)(pMVar26 + 0x20); + local_588 = *(undefined8 *)(pMVar26 + 0x28); + local_580 = *(undefined8 *)(pMVar26 + 0x30); + local_578 = *(long *)(pMVar26 + 0x38); + local_558 = 0; + local_560 = 0; + if (local_578 != 0) { + piVar25 = (int *)(local_578 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar26 + 4) < 3) { + local_560 = **(undefined8 **)(pMVar26 + 0x48); + local_558 = (*(undefined8 **)(pMVar26 + 0x48))[1]; + } + else { + local_5ac = 0; + Mat::copySize((Mat *)&local_5b0,pMVar26); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar30 = iVar13 - 1; + uVar16 = (ulong)(int)(uVar30 * 2); + pdVar19 = adStack_480; + do { + pdVar27 = pdVar19 + 2; + pdVar19[1] = 0.0; + *pdVar19 = 0.0; + pdVar19 = pdVar27; + } while (pdVar27 != (double *)&stack0x00000000); + pdVar19 = adStack_480; + local_488 = 0x48; + if (0x48 < uVar16) { + uVar18 = uVar16 << 4; + if (0x7f0000000000000 < uVar16) { + uVar18 = 0xffffffffffffffff; + } + local_490 = pdVar19; + pdVar19 = operator_new__(uVar18); + uVar18 = 0; + pdVar27 = pdVar19; + do { + pdVar27[1] = 0.0; + *pdVar27 = 0.0; + uVar18 = uVar18 + 1; + pdVar27 = pdVar27 + 2; + } while (uVar16 != uVar18); + } + uVar15 = local_610 >> 3 & 0x1ff; + iVar1 = uVar15 * 8; + local_544 = local_5d0[1]; + local_548 = *local_5d0; + iVar14 = (iVar1 + 6U & 0xff8) + 8; + lVar40 = NEON_shl((long)(int)uVar5 + 1,4); + local_500 = (long)iVar14 * (long)local_544; + uVar29 = iVar1 + 0x42ff0006; + local_4f8 = (long)iVar14; + local_510 = &local_548; + local_508 = &local_500; + local_550 = uVar29 | 0x4000; + pdVar27 = (double *)((long)pdVar19 + lVar40); + local_540 = pdVar19; + if (uVar15 != 1) { + local_540 = pdVar27; + } + /* try { // try from 002bfbb8 to 003bfbbb has its CatchHandler @ 002bfdfc */ + /* try { // try from 002bfbc0 to 003bfca7 has its CatchHandler @ 002bf5bc */ + local_530 = (double *)((long)local_540 + local_500 * local_548); + local_4e0 = (double *)0x0; + local_4f0 = 0x2010000; + local_54c = 2; + local_520 = 0; + local_518 = 0; + local_538 = local_540; + local_528 = local_530; + local_4e8 = (Mat *)&local_550; + local_490 = pdVar19; + local_488 = uVar16; + Mat::convertTo((Mat *)&local_610,(_OutputArray *)&local_4f0,uVar29 & 0xffe,1.0,0.0); + uVar29 = uVar5; + if ((local_610 >> 3 & 0x1ff) == 0) { + if ((int)uVar5 < 0) goto LAB_002c03a4; + if (((long)(((ulong)uVar30 + (long)iVar13 * 2) * 8 + -0x10) < 1 || + (long)((ulong)uVar30 * 0x10) <= (long)iVar13 * 0x10 + -0x10) && (9 < uVar30)) { + uVar15 = (iVar13 - 3U >> 1) + 1; + uVar2 = uVar15 * 2; + uVar22 = 0; + pdVar21 = pdVar19 + (long)iVar13 * 2 + -2; + pdVar28 = pdVar19; + do { + dVar31 = pdVar21[1]; + uVar22 = uVar22 + 1; + *pdVar28 = *pdVar21; + pdVar28[1] = 0.0; + pdVar28[2] = dVar31; + pdVar28[3] = 0.0; + pdVar28 = pdVar28 + 4; + pdVar21 = pdVar21 + 2; + } while (uVar22 < uVar15); + if (uVar30 != uVar2) { + lVar20 = (long)(int)uVar2; + pdVar19[lVar20 * 2] = pdVar27[lVar20]; + pdVar19[lVar20 * 2 + 1] = 0.0; + } + goto LAB_002bfccc; + } + pdVar21 = pdVar19; + pdVar28 = pdVar27; + do { + dVar31 = *pdVar28; + pdVar23 = pdVar21 + 2; + pdVar21[1] = 0.0; + *pdVar21 = dVar31; + pdVar21 = pdVar23; + pdVar28 = pdVar28 + 1; + } while (pdVar23 != pdVar19 + ((ulong)uVar5 + 1) * 2); + if ((int)uVar5 < 2) goto LAB_002c03a4; +LAB_002bfcd4: + pdVar21 = (double *)((long)pdVar19 + lVar40 + -0x10); + /* try { // try from 002bfcf0 to 003bfcf3 has its CatchHandler @ 002bfe10 */ + /* try { // try from 002bfcf8 to 003bfd23 has its CatchHandler @ 002bf5bc */ + dVar31 = ABS(*(double *)((long)pdVar19 + lVar40 + -0x10)) + ABS(pdVar21[1]); + while ((dVar31 <= DAT_002c04d0 && (uVar29 = uVar29 - 1, uVar29 != 1))) { + dVar31 = ABS(pdVar21[-2]) + ABS(pdVar21[-1]); + pdVar21 = pdVar21 + -2; + } + } + else { +LAB_002bfccc: + if (1 < (int)uVar5) goto LAB_002bfcd4; +LAB_002c03a4: + if ((int)uVar5 < 1) goto LAB_002bfd70; + } + dVar34 = 0.0; + pdVar21 = pdVar27; + dVar31 = 1.0; + do { + dVar35 = dVar31 - dVar34; + pdVar28 = pdVar21 + 2; + *pdVar21 = dVar31; + pdVar21[1] = dVar34; + dVar34 = dVar34 + dVar31; + pdVar21 = pdVar28; + dVar31 = dVar35; + } while (pdVar28 != pdVar27 + ((ulong)(uVar29 - 1) + 1) * 2); +LAB_002bfd70: + lVar40 = (long)(int)uVar29; + /* try { // try from 002bfd74 to 003bfd77 has its CatchHandler @ 002bfde8 */ + /* try { // try from 002bfd7c to 003bfd9f has its CatchHandler @ 002bf5bc */ + iVar14 = 0; + if (param_3 < 1) { + param_3 = 1000; + } + pdVar19 = pdVar19 + lVar40 * 2; + do { + dVar31 = 0.0; + if ((int)uVar29 < 1) goto LAB_002bfee4; + uVar30 = 0; + pdVar21 = pdVar27; + do { + dVar37 = *pdVar19; + dVar32 = pdVar19[1]; + dVar39 = *pdVar21; + uVar15 = 0; + dVar38 = pdVar21[1]; + pdVar23 = pdVar19; + pdVar28 = pdVar27; + dVar34 = dVar32; + dVar35 = dVar37; + do { + /* try { // try from 002bfdd8 to 003bfddb has its CatchHandler @ 002bfe24 */ + /* try { // try from 002bfde0 to 003bfde3 has its CatchHandler @ 002bf5bc */ + dVar41 = dVar38 * dVar35; + dVar35 = (dVar35 * dVar39 - dVar32 * dVar38) + pdVar23[-2]; + /* catch() { ... } // from try @ 002bfd74 with catch @ 002bfde8 */ + dVar32 = dVar32 * dVar39 + dVar41 + pdVar23[-1]; + if (uVar15 != uVar30) { + /* try { // try from 002bfdf8 to 003bfdfb has its CatchHandler @ 002bf5bc */ + /* catch() { ... } // from try @ 002bfbb8 with catch @ 002bfdfc */ + dVar41 = (dVar38 - pdVar28[1]) * dVar34; + dVar34 = (dVar39 - *pdVar28) * dVar34 + dVar37 * (dVar38 - pdVar28[1]); + /* try { // try from 002bfe0c to 003bfe0f has its CatchHandler @ 002bf5bc */ + dVar37 = (dVar39 - *pdVar28) * dVar37 - dVar41; + } + /* catch() { ... } // from try @ 002bfcf0 with catch @ 002bfe10 */ + uVar15 = uVar15 + 1; + pdVar23 = pdVar23 + -2; + pdVar28 = pdVar28 + 2; + /* try { // try from 002bfe20 to 003bfe23 has its CatchHandler @ 002bf5bc */ + } while (uVar15 != uVar29); + /* catch() { ... } // from try @ 002bfdd8 with catch @ 002bfe24 */ + /* try { // try from 002bfe34 to 003bfe37 has its CatchHandler @ 002bf5bc */ + /* catch() { ... } // from try @ 002bfecc with catch @ 002bfe38 + catch() { ... } // from try @ 002bff04 with catch @ 002bfe38 + catch() { ... } // from try @ 002c000c with catch @ 002bfe38 */ + dVar41 = 1.0 / (dVar34 * dVar34 + dVar37 * dVar37); + dVar36 = dVar41 * (dVar37 * dVar32 - dVar34 * dVar35); + dVar41 = dVar41 * (dVar34 * dVar32 + dVar35 * dVar37); + dVar34 = dVar36 * dVar36 + dVar41 * dVar41; + *pdVar21 = dVar39 - dVar41; + pdVar21[1] = dVar38 - dVar36; + dVar35 = SQRT(dVar34); + if (NAN(dVar35)) { + dVar35 = ::sqrt(dVar34); + } + if (dVar31 < dVar35) { + dVar31 = dVar35; + } + uVar30 = uVar30 + 1; + pdVar21 = pdVar21 + 2; + } while (uVar30 != uVar29); + } while ((0.0 < dVar31) && (iVar14 = iVar14 + 1, iVar14 != param_3)); + if ((local_610 >> 3 & 0x1ff) == 0) { + pdVar19 = pdVar27 + 1; + do { + /* try { // try from 002bfecc to 003bfecf has its CatchHandler @ 002bfe38 */ + if (ABS(*pdVar19) < DAT_002c04d8) { + *pdVar19 = 0.0; + } + pdVar19 = pdVar19 + 2; + } while (pdVar19 != pdVar27 + (ulong)(uVar29 - 1) * 2 + 3); + } +LAB_002bfee4: + if ((int)uVar29 < (int)uVar5) { + /* try { // try from 002bfefc to 003bfeff has its CatchHandler @ 002bfffc */ + /* try { // try from 002bff04 to 003bffe7 has its CatchHandler @ 002bfe38 */ + pdVar19 = pdVar27 + lVar40 * 2 + 2; + do { + pdVar21 = pdVar19 + 2; + *pdVar19 = pdVar19[-2]; + pdVar19[1] = pdVar19[-1]; + pdVar19 = pdVar21; + } while (pdVar21 != pdVar27 + (lVar40 + 2 + (ulong)((iVar13 + -3) - uVar29)) * 2); + } + local_4b0 = &local_4e8; + local_4a8 = local_4a0; + local_4e8 = *(Mat **)local_570; + local_4a0[0] = -(ulong)((uint)local_570[1] >> 0x1f) & 0xfffffff000000000 | + (ulong)(uint)local_570[1] << 4; + local_4d0 = (double *)((long)pdVar27 + local_4a0[0] * (long)*local_570); + local_4a0[1] = 0x10; + local_618 = 0; + local_614 = 0; + local_628 = CONCAT44(local_628._4_4_,0x2010000); + local_4ec = 2; + local_4c0 = 0; + local_4b8 = 0; + local_4f0 = 0x42ff400e; + local_620 = (Mat *)&local_5b0; + local_4e0 = pdVar27; + local_4d8 = pdVar27; + local_4c8 = local_4d0; + Mat::convertTo((Mat *)&local_4f0,(_OutputArray *)&local_628,local_5b0 & 0xfff,1.0,0.0); + if (local_4b8 != 0) { + piVar25 = (int *)(local_4b8 + 0x14); + do { + iVar13 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_4f0); + } + } + local_4b8 = 0; + local_4e0 = (double *)0x0; + local_4c8 = (double *)0x0; + local_4d0 = (double *)0x0; + local_4d8 = (double *)0x0; + if (0 < local_4ec) { + /* catch() { ... } // from try @ 002bfefc with catch @ 002bfffc */ + iVar13 = 0; + ppMVar24 = local_4b0; + do { + *(undefined4 *)ppMVar24 = 0; + iVar13 = iVar13 + 1; + /* try { // try from 002c000c to 003c000f has its CatchHandler @ 002bfe38 */ + ppMVar24 = (Mat **)((long)ppMVar24 + 4); + } while (iVar13 < local_4ec); + } + if (local_4a8 != local_4a0) { + fastFree(local_4a8); + } + if (local_518 != 0) { + piVar25 = (int *)(local_518 + 0x14); + do { + iVar13 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_550); + } + } + local_518 = 0; + local_540 = (double *)0x0; + local_528 = (double *)0x0; + local_530 = (double *)0x0; + local_538 = (double *)0x0; + if (0 < local_54c) { + iVar13 = 0; + piVar25 = local_510; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_54c); + } + if (local_508 != &local_500) { + fastFree(local_508); + } + if ((local_490 != adStack_480) && (local_490 != (double *)0x0)) { + operator_delete__(local_490); + } + if (local_578 != 0) { + piVar25 = (int *)(local_578 + 0x14); + do { + iVar13 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_5b0); + } + } + local_578 = 0; + local_5a0 = 0; + local_588 = 0; + local_590 = 0; + local_598 = 0; + if (0 < local_5ac) { + iVar13 = 0; + piVar25 = local_570; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_5ac); + } + if (local_568 != &local_560) { + fastFree(local_568); + } + if (local_5d8 != 0) { + piVar25 = (int *)(local_5d8 + 0x14); + do { + iVar13 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_610); + } + } + local_5d8 = 0; + local_600 = 0; + local_5e8 = 0; + local_5f0 = 0; + local_5f8 = 0; + if (0 < local_60c) { + iVar13 = 0; + piVar25 = local_5d0; + do { + *piVar25 = 0; + iVar13 = iVar13 + 1; + piVar25 = piVar25 + 1; + } while (iVar13 < local_60c); + } + if (local_5c8 != &local_5c0) { + fastFree(local_5c8); + } + auVar33._8_8_ = 0; + auVar33._0_8_ = dVar31; + return auVar33; +} + + +================================================================== + +### FUNC 002c04e0 (848 bytes) name=cvSolveCubic + +undefined4 cvSolveCubic(cv *param_1,cv *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + undefined4 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + AutoBuffer *in_x5; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_a8 = local_108; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_a0 = local_100; + uStack_b8 = uStack_118; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_68 = local_d8[1]; + } + else { + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + } + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = aMStack_60; + local_130 = (Mat *)&local_120; + uVar7 = cv::solveCubic((_InputArray *)local_150,(_OutputArray *)&local_138); + if (local_110 != local_b0) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_138,0x1b); + cVar2 = s__roots_data_____roots0_data_004687a0[0x1a]; + uVar6 = s__roots_data_____roots0_data_004687a0._24_2_; + uVar5 = s__roots_data_____roots0_data_004687a0._8_8_; + uVar4 = s__roots_data_____roots0_data_004687a0._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s__roots_data_____roots0_data_004687a0._16_8_; + *(undefined2 *)(pcVar8 + 0x18) = uVar6; + pcVar8[0x1a] = cVar2; + *(undefined8 *)pcVar8 = uVar4; + *(undefined8 *)(pcVar8 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_138,"int cvSolveCubic(const CvMat*, CvMat*)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x84a); + cv::String::deallocate((String *)&local_138); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar10 = 0; + puVar9 = local_80; + do { + *(undefined4 *)puVar9 = 0; + iVar10 = iVar10 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar10 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return uVar7; +} + + +================================================================== + +### FUNC 002c08bc (840 bytes) name=cvSolvePoly + +void cvSolvePoly(cv *param_1,cv *param_2,int param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + char *pcVar6; + undefined8 *puVar7; + int iVar8; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_a8 = local_108; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_a0 = local_100; + uStack_b8 = uStack_118; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_68 = local_d8[1]; + } + else { + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + } + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = aMStack_60; + local_130 = (Mat *)&local_120; + cv::solvePoly((_InputArray *)local_150,(_OutputArray *)&local_138,param_3); + if (local_110 != local_b0) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar6 = (char *)cv::String::allocate((String *)&local_138,0x13); + cVar2 = s__r_data_____r0_data_004687c0[0x12]; + uVar5 = s__r_data_____r0_data_004687c0._8_8_; + uVar4 = s__r_data_____r0_data_004687c0._0_8_; + *(undefined2 *)(pcVar6 + 0x10) = s__r_data_____r0_data_004687c0._16_2_; + pcVar6[0x12] = cVar2; + *(undefined8 *)pcVar6 = uVar4; + *(undefined8 *)(pcVar6 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_138,"void cvSolvePoly(const CvMat*, CvMat*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x855); + cv::String::deallocate((String *)&local_138); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar8 = 0; + puVar7 = local_80; + do { + *(undefined4 *)puVar7 = 0; + iVar8 = iVar8 + 1; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } while (iVar8 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar8 = 0; + do { + *local_e0 = 0; + iVar8 = iVar8 + 1; + local_e0 = local_e0 + 1; + } while (iVar8 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002c0c90 (140 bytes) name=FUN_002c0c90 + +void FUN_002c0c90(undefined8 *param_1,ulong param_2) + +{ + undefined8 *puVar1; + ulong uVar2; + void *pvVar3; + + if ((ulong)param_1[1] < param_2) { + puVar1 = (undefined8 *)*param_1; + if (puVar1 != param_1 + 2) { + if (puVar1 != (void *)0x0) { + operator_delete__(puVar1); + } + *param_1 = param_1 + 2; + param_1[1] = 0x108; + } + if (0x108 < param_2) { + uVar2 = param_2 << 2; + if (0x1fc0000000000000 < param_2) { + uVar2 = 0xffffffffffffffff; + } + pvVar3 = operator_new__(uVar2); + param_1[1] = param_2; + *param_1 = pvVar3; + } + return; + } + param_1[1] = param_2; + return; +} + + +================================================================== + +### FUNC 002c0d1c (2860 bytes) name=phase + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::phase(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, bool) */ + +void cv::phase(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,bool param_4) + +{ + uint uVar1; + int iVar2; + uint uVar3; + ulong uVar4; + uint uVar5; + char cVar6; + bool bVar7; + undefined8 uVar8; + double dVar9; + double dVar10; + uint uVar11; + double *pdVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + uint uVar17; + void *__dest; + ulong uVar18; + float *pfVar19; + uint uVar20; + undefined4 *puVar21; + int *piVar22; + Mat *pMVar23; + double *pdVar24; + uint uVar25; + double *pdVar26; + float *pfVar27; + ulong uVar28; + uint uVar29; + long lVar30; + float *pfVar31; + float *pfVar32; + ulong uVar33; + ulong uVar34; + ulong uVar35; + ulong uVar36; + undefined8 uVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + Mat *local_5f0; + ulong local_5e8; + double *local_5c8; + double *local_5c0; + double *local_5b8; + Mat *local_5b0; + Mat *local_5a8; + Mat *local_5a0; + undefined8 uStack_598; + NAryMatIterator aNStack_590 [32]; + ulong local_570; + int local_568; + uint local_550; + int local_54c; + int local_548; + undefined4 local_544; + undefined8 local_540; + undefined8 local_538; + undefined8 local_530; + undefined8 local_528; + undefined8 local_520; + long local_518; + int *local_510; + undefined8 *local_508; + undefined8 local_500; + undefined8 local_4f8; + undefined4 local_4f0; + int local_4ec; + undefined4 local_4e8; + undefined4 local_4e4; + undefined8 local_4e0; + undefined8 local_4d8; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + long local_4b8; + undefined4 *local_4b0; + undefined8 *local_4a8; + undefined8 local_4a0; + undefined8 local_498; + int local_490; + int local_48c; + undefined4 local_488; + undefined4 local_484; + undefined8 local_480; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + long local_458; + undefined4 *local_450; + undefined8 *local_448; + undefined8 local_440; + undefined8 local_438; + undefined8 local_430; + undefined8 local_428; + float afStack_420 [264]; + + iVar13 = _InputArray::type(param_1,-1); + iVar14 = _InputArray::depth(param_1,-1); + iVar15 = _InputArray::channels(param_1,-1); + _InputArray::size((int)param_1); + _InputArray::size((int)param_2); + if ((((local_490 != (int)local_430) || (local_48c != local_430._4_4_)) || + (iVar16 = _InputArray::type(param_2,-1), iVar13 != iVar16)) || (1 < iVar14 - 5U)) { + local_430 = (float *)0x0; + local_428 = 0; + __dest = (void *)String::allocate((String *)&local_430,0x59); + memcpy(__dest,&DAT_00468440,0x59); + error(-0xd7,(String *)&local_430, + "void cv::phase(cv::InputArray, cv::InputArray, cv::OutputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0xd0); + String::deallocate((String *)&local_430); + } + iVar16 = _InputArray::kind(param_1); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_1 + 8); + local_510 = &local_548; + local_508 = &local_500; + local_550 = *(uint *)pMVar23; + local_54c = *(int *)(pMVar23 + 4); + local_548 = *(int *)(pMVar23 + 8); + local_544 = *(undefined4 *)(pMVar23 + 0xc); + local_540 = *(undefined8 *)(pMVar23 + 0x10); + local_538 = *(undefined8 *)(pMVar23 + 0x18); + local_530 = *(undefined8 *)(pMVar23 + 0x20); + local_528 = *(undefined8 *)(pMVar23 + 0x28); + local_520 = *(undefined8 *)(pMVar23 + 0x30); + local_518 = *(long *)(pMVar23 + 0x38); + local_4f8 = 0; + local_500 = 0; + if (local_518 != 0) { + piVar22 = (int *)(local_518 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar7) { + *piVar22 = *piVar22 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_500 = **(undefined8 **)(pMVar23 + 0x48); + local_4f8 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_54c = 0; + Mat::copySize((Mat *)&local_550,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar16 = _InputArray::kind(param_2); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_2 + 8); + local_4b0 = &local_4e8; + local_4a8 = &local_4a0; + local_4f0 = *(undefined4 *)pMVar23; + local_4ec = *(int *)(pMVar23 + 4); + local_4e8 = *(undefined4 *)(pMVar23 + 8); + local_4e4 = *(undefined4 *)(pMVar23 + 0xc); + local_4e0 = *(undefined8 *)(pMVar23 + 0x10); + local_4d8 = *(undefined8 *)(pMVar23 + 0x18); + local_4d0 = *(undefined8 *)(pMVar23 + 0x20); + local_4c8 = *(undefined8 *)(pMVar23 + 0x28); + local_4c0 = *(undefined8 *)(pMVar23 + 0x30); + local_4b8 = *(long *)(pMVar23 + 0x38); + local_498 = 0; + local_4a0 = 0; + if (local_4b8 != 0) { + piVar22 = (int *)(local_4b8 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar7) { + *piVar22 = *piVar22 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (2 < *(int *)(pMVar23 + 4)) { + local_4ec = 0; + Mat::copySize((Mat *)&local_4f0,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_5f0 = (Mat *)&local_4f0; + _OutputArray::create(param_3,local_54c,local_510,iVar13,-1,false,0); + iVar13 = _InputArray::kind((_InputArray *)param_3); + if (iVar13 == 0x10000) { + pMVar23 = *(Mat **)(param_3 + 8); + local_490 = *(int *)pMVar23; + local_450 = &local_488; + local_480 = *(undefined8 *)(pMVar23 + 0x10); + local_448 = &local_440; + local_48c = *(int *)(pMVar23 + 4); + local_488 = *(undefined4 *)(pMVar23 + 8); + local_484 = *(undefined4 *)(pMVar23 + 0xc); + local_478 = *(undefined8 *)(pMVar23 + 0x18); + local_470 = *(undefined8 *)(pMVar23 + 0x20); + local_468 = *(undefined8 *)(pMVar23 + 0x28); + local_460 = *(undefined8 *)(pMVar23 + 0x30); + local_458 = *(long *)(pMVar23 + 0x38); + local_438 = 0; + local_440 = 0; + if (local_458 != 0) { + piVar22 = (int *)(local_458 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar7) { + *piVar22 = *piVar22 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_440 = **(undefined8 **)(pMVar23 + 0x48); + local_438 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_48c = 0; + Mat::copySize((Mat *)&local_490,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_3); + } + uStack_598 = 0; + local_5a8 = local_5f0; + local_5b0 = (Mat *)&local_550; + local_5a0 = (Mat *)&local_490; + NAryMatIterator::NAryMatIterator(aNStack_590,&local_5b0,(uchar **)&local_5c8,-1); + uVar11 = local_550 & 7; + local_428 = 0x108; + local_430 = afStack_420; + uVar5 = iVar15 * local_568; + uVar36 = (ulong)uVar5; + uVar35 = uVar36; + if (iVar14 == 6) { + iVar13 = 0; + if (iVar15 != 0) { + iVar13 = (iVar15 + 0x3ff) / iVar15; + } + if (iVar15 * iVar13 < (int)uVar5) { + uVar35 = (ulong)(uint)(iVar15 * iVar13); + } + FUN_002c0c90((String *)&local_430,(long)((int)uVar35 << 1)); + pfVar32 = local_430 + (int)uVar35; + pfVar31 = local_430; + } + else { + pfVar32 = (float *)0x0; + pfVar31 = (float *)0x0; + } + local_5e8 = 0; + iVar13 = (int)uVar35; + uVar3 = -((uint)((ulong)pfVar31 >> 2) & 3) & 3; + if (local_570 != 0) { + do { + uVar33 = uVar35; + uVar34 = uVar36; + if (0 < (int)uVar5) { + do { + pdVar12 = local_5b8; + uVar18 = uVar34; + if (iVar13 < (int)uVar34) { + uVar18 = uVar35; + } + uVar29 = (uint)uVar18; + if (iVar14 == 5) { + FUN_003ca370(local_5c0,local_5c8,local_5b8,uVar18,param_4); + } + else { + if (0 < (int)uVar29) { + if ((uVar29 < 7) || (pfVar31 < pfVar32 + 4 && pfVar32 < pfVar31 + 4)) { + lVar30 = 0; + do { + dVar9 = local_5c0[lVar30]; + pfVar31[lVar30] = (float)local_5c8[lVar30]; + pfVar32[lVar30] = (float)dVar9; + lVar30 = lVar30 + 1; + } while ((int)lVar30 < (int)uVar29); + } + else { + uVar4 = uVar18; + if (uVar3 < uVar29) { + uVar4 = (ulong)uVar3; + } + iVar15 = (int)uVar4; + uVar28 = uVar4; + if (iVar15 != 0) { + dVar9 = *local_5c0; + *pfVar31 = (float)*local_5c8; + *pfVar32 = (float)dVar9; + if (iVar15 != 1) { + dVar9 = local_5c0[1]; + pfVar31[1] = (float)local_5c8[1]; + pfVar32[1] = (float)dVar9; + if (iVar15 == 3) { + dVar9 = local_5c0[2]; + pfVar31[2] = (float)local_5c8[2]; + pfVar32[2] = (float)dVar9; + } + else { + uVar28 = 2; + } + } + } + uVar1 = ((uVar29 - iVar15) - 4 >> 2) + 1; + uVar20 = 0; + iVar16 = uVar1 * 4; + pfVar19 = pfVar32 + uVar4; + pdVar24 = local_5c0 + uVar4; + pdVar26 = local_5c8 + uVar4; + pfVar27 = pfVar31 + uVar4; + do { + uVar20 = uVar20 + 1; + dVar39 = pdVar26[1]; + dVar10 = *pdVar26; + dVar38 = pdVar24[1]; + dVar9 = *pdVar24; + dVar41 = pdVar24[3]; + dVar40 = pdVar24[2]; + *(ulong *)(pfVar27 + 2) = CONCAT44((float)pdVar26[3],(float)pdVar26[2]); + *(ulong *)pfVar27 = CONCAT44((float)dVar39,(float)dVar10); + *(ulong *)(pfVar19 + 2) = CONCAT44((float)dVar41,(float)dVar40); + *(ulong *)pfVar19 = CONCAT44((float)dVar38,(float)dVar9); + pfVar19 = pfVar19 + 4; + pdVar24 = pdVar24 + 4; + pdVar26 = pdVar26 + 4; + pfVar27 = pfVar27 + 4; + } while (uVar20 < uVar1); + iVar2 = (int)uVar28 + iVar16; + if (uVar29 - iVar15 != iVar16) { + iVar15 = iVar2 + 1; + dVar9 = local_5c0[iVar2]; + pfVar31[iVar2] = (float)local_5c8[iVar2]; + pfVar32[iVar2] = (float)dVar9; + if (iVar15 < (int)uVar29) { + iVar2 = iVar2 + 2; + dVar9 = local_5c0[iVar15]; + pfVar31[iVar15] = (float)local_5c8[iVar15]; + pfVar32[iVar15] = (float)dVar9; + if (iVar2 < (int)uVar29) { + dVar9 = local_5c0[iVar2]; + pfVar31[iVar2] = (float)local_5c8[iVar2]; + pfVar32[iVar2] = (float)dVar9; + } + } + } + } + } + FUN_003ca370(pfVar32,pfVar31,pfVar31,uVar18,param_4); + if (0 < (int)uVar29) { + uVar1 = (uint)((ulong)pdVar12 >> 3) & 1; + if (uVar29 < uVar1) { + uVar1 = uVar29; + } + if ((int)uVar29 < 5) { + *pdVar12 = (double)*pfVar31; + if (uVar29 == 1) { +LAB_002c12ec: + uVar17 = (uint)uVar18; + uVar20 = uVar17; + } + else { +LAB_002c0fb8: + uVar17 = (uint)uVar18; + pdVar12[1] = (double)pfVar31[1]; + if (uVar17 == 2) goto LAB_002c12ec; + pdVar12[2] = (double)pfVar31[2]; + if (uVar17 == 4) { + pdVar12[3] = (double)pfVar31[3]; + uVar20 = 4; + } + else { + uVar20 = 3; + } + } + if (uVar29 == uVar17) goto LAB_002c10a8; + } + else { + uVar20 = 0; + uVar17 = 0; + if (uVar1 != 0) { + *pdVar12 = (double)*pfVar31; + uVar18 = (ulong)uVar1; + if (uVar1 != 1) goto LAB_002c0fb8; + goto LAB_002c12ec; + } + } + uVar1 = ((uVar29 - uVar17) - 4 >> 2) + 1; + iVar15 = uVar1 * 4; + if (2 < (uVar29 - 1) - uVar17) { + uVar25 = 0; + pfVar19 = pfVar31 + uVar17; + pdVar24 = pdVar12 + uVar17; + do { + uVar37 = *(undefined8 *)(pfVar19 + 2); + uVar8 = *(undefined8 *)pfVar19; + uVar25 = uVar25 + 1; + pdVar24[1] = (double)(float)((ulong)uVar8 >> 0x20); + *pdVar24 = (double)(float)uVar8; + pdVar24[3] = (double)(float)((ulong)uVar37 >> 0x20); + pdVar24[2] = (double)(float)uVar37; + pfVar19 = pfVar19 + 4; + pdVar24 = pdVar24 + 4; + } while (uVar25 < uVar1); + uVar20 = uVar20 + iVar15; + if (iVar15 == uVar29 - uVar17) goto LAB_002c10a8; + } + iVar15 = uVar20 + 1; + pdVar12[(int)uVar20] = (double)pfVar31[(int)uVar20]; + if (iVar15 < (int)uVar29) { + iVar16 = uVar20 + 2; + pdVar12[iVar15] = (double)pfVar31[iVar15]; + if (iVar16 < (int)uVar29) { + pdVar12[iVar16] = (double)pfVar31[iVar16]; + } + } + } + } +LAB_002c10a8: + iVar15 = (int)uVar33; + lVar30 = (long)(int)uVar29 * (0x88442211UL >> (uVar11 << 2) & 0xf); + local_5c8 = (double *)((long)local_5c8 + lVar30); + local_5c0 = (double *)((long)local_5c0 + lVar30); + local_5b8 = (double *)((long)local_5b8 + lVar30); + uVar33 = (ulong)(uint)(iVar15 + iVar13); + uVar34 = (ulong)(uint)((int)uVar34 - iVar13); + } while (iVar15 < (int)uVar5); + } + local_5e8 = local_5e8 + 1; + NAryMatIterator::operator++(aNStack_590); + } while (local_5e8 < local_570); + } + if ((local_430 != afStack_420) && (local_430 != (float *)0x0)) { + operator_delete__(local_430); + } + if (local_458 != 0) { + piVar22 = (int *)(local_458 + 0x14); + do { + iVar13 = *piVar22; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar7) { + *piVar22 = iVar13 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_490); + } + } + local_458 = 0; + local_480 = 0; + local_468 = 0; + local_470 = 0; + local_478 = 0; + if (0 < local_48c) { + iVar13 = 0; + puVar21 = local_450; + do { + *puVar21 = 0; + iVar13 = iVar13 + 1; + puVar21 = puVar21 + 1; + } while (iVar13 < local_48c); + } + if (local_448 != &local_440) { + fastFree(local_448); + } + if (local_4b8 != 0) { + piVar22 = (int *)(local_4b8 + 0x14); + do { + iVar13 = *piVar22; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar7) { + *piVar22 = iVar13 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar13 == 1) { + Mat::deallocate(local_5f0); + } + } + local_4b8 = 0; + local_4e0 = 0; + local_4c8 = 0; + local_4d0 = 0; + local_4d8 = 0; + if (0 < local_4ec) { + iVar13 = 0; + puVar21 = local_4b0; + do { + iVar13 = iVar13 + 1; + *puVar21 = 0; + puVar21 = puVar21 + 1; + } while (iVar13 < local_4ec); + } + if (local_4a8 != &local_4a0) { + fastFree(local_4a8); + } + if (local_518 != 0) { + piVar22 = (int *)(local_518 + 0x14); + do { + iVar13 = *piVar22; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar7) { + *piVar22 = iVar13 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_550); + } + } + local_518 = 0; + local_540 = 0; + local_528 = 0; + local_530 = 0; + local_538 = 0; + if (0 < local_54c) { + iVar13 = 0; + piVar22 = local_510; + do { + *piVar22 = 0; + iVar13 = iVar13 + 1; + piVar22 = piVar22 + 1; + } while (iVar13 < local_54c); + } + if (local_508 != &local_500) { + fastFree(local_508); + } + return; +} + + +================================================================== + +### FUNC 002c1900 (3448 bytes) name=cartToPolar + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::cartToPolar(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, + cv::_OutputArray const&, bool) */ + +void cv::cartToPolar(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3, + _OutputArray *param_4,bool param_5) + +{ + bool bVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + char cVar9; + double dVar10; + undefined8 uVar11; + double dVar12; + uint uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined4 uVar20; + double *pdVar21; + double *pdVar22; + int iVar23; + uint uVar24; + undefined8 *puVar25; + float *pfVar26; + int *piVar27; + uint uVar28; + uint uVar29; + undefined4 *puVar30; + int *piVar31; + Mat *pMVar32; + double *pdVar33; + double *pdVar34; + double *pdVar35; + uint uVar36; + float *pfVar37; + long lVar38; + float *pfVar39; + float *pfVar40; + uint uVar41; + double dVar42; + undefined8 uVar43; + double dVar44; + double dVar45; + double dVar46; + Mat *local_678; + Mat *local_670; + Mat *local_668; + Mat *local_660; + ulong local_658; + double *local_638; + double *local_630; + long local_628; + double *local_620; + Mat *local_618; + Mat *local_610; + Mat *local_608; + Mat *local_600; + undefined8 local_5f8; + NAryMatIterator aNStack_5f0 [32]; + ulong local_5d0; + int local_5c8; + uint local_5b0; + int local_5ac; + int local_5a8; + undefined4 local_5a4; + undefined8 local_5a0; + undefined8 local_598; + undefined8 local_590; + undefined8 local_588; + undefined8 local_580; + long local_578; + int *local_570; + undefined8 *local_568; + undefined8 local_560; + undefined8 local_558; + uint local_550; + int local_54c; + int local_548; + undefined4 local_544; + undefined8 local_540; + undefined8 local_538; + undefined8 local_530; + undefined8 local_528; + undefined8 local_520; + long local_518; + int *local_510; + undefined8 *local_508; + undefined8 local_500; + undefined8 local_4f8; + undefined4 local_4f0; + int local_4ec; + undefined4 local_4e8; + undefined4 local_4e4; + undefined8 local_4e0; + undefined8 local_4d8; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + long local_4b8; + undefined4 *local_4b0; + undefined8 *local_4a8; + undefined8 local_4a0; + undefined8 local_498; + undefined4 local_490; + int local_48c; + undefined4 local_488; + undefined4 local_484; + undefined8 local_480; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + long local_458; + undefined4 *local_450; + undefined8 *local_448; + undefined8 local_440; + undefined8 local_438; + float *local_430; + undefined8 local_428; + float afStack_420 [264]; + + iVar23 = _InputArray::kind(param_1); + if (iVar23 == 0x10000) { + pMVar32 = *(Mat **)(param_1 + 8); + local_570 = &local_5a8; + local_568 = &local_560; + local_5b0 = *(uint *)pMVar32; + local_5ac = *(int *)(pMVar32 + 4); + local_5a8 = *(int *)(pMVar32 + 8); + local_5a4 = *(undefined4 *)(pMVar32 + 0xc); + local_5a0 = *(undefined8 *)(pMVar32 + 0x10); + local_598 = *(undefined8 *)(pMVar32 + 0x18); + local_590 = *(undefined8 *)(pMVar32 + 0x20); + local_588 = *(undefined8 *)(pMVar32 + 0x28); + local_580 = *(undefined8 *)(pMVar32 + 0x30); + local_578 = *(long *)(pMVar32 + 0x38); + local_558 = 0; + local_560 = 0; + if (local_578 != 0) { + piVar31 = (int *)(local_578 + 0x14); + do { + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = *piVar31 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar32 + 4)) { + local_5ac = 0; + Mat::copySize((Mat *)&local_5b0,pMVar32); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_678 = (Mat *)&local_5b0; + iVar23 = _InputArray::kind(param_2); + if (iVar23 == 0x10000) { + pMVar32 = *(Mat **)(param_2 + 8); + local_510 = &local_548; + local_508 = &local_500; + local_550 = *(uint *)pMVar32; + local_54c = *(int *)(pMVar32 + 4); + local_548 = *(int *)(pMVar32 + 8); + local_544 = *(undefined4 *)(pMVar32 + 0xc); + local_540 = *(undefined8 *)(pMVar32 + 0x10); + local_538 = *(undefined8 *)(pMVar32 + 0x18); + local_530 = *(undefined8 *)(pMVar32 + 0x20); + local_528 = *(undefined8 *)(pMVar32 + 0x28); + local_520 = *(undefined8 *)(pMVar32 + 0x30); + local_518 = *(long *)(pMVar32 + 0x38); + local_4f8 = 0; + local_500 = 0; + if (local_518 != 0) { + piVar31 = (int *)(local_518 + 0x14); + do { + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = *piVar31 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar32 + 4)) { + local_54c = 0; + Mat::copySize((Mat *)&local_550,pMVar32); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_670 = (Mat *)&local_550; + iVar23 = local_570[-1]; + uVar6 = local_5b0 >> 3 & 0x1ff; + uVar4 = local_5b0 & 0xfff; + uVar5 = local_5b0 & 7; + uVar2 = uVar6 + 1; + if (iVar23 == local_510[-1]) { + if (iVar23 == 2) { + if ((*local_570 == *local_510) && (local_570[1] == local_510[1])) goto LAB_002c2610; + } + else if (iVar23 < 1) { +LAB_002c2610: + if ((uVar4 == (local_550 & 0xfff)) && (uVar5 - 5 < 2)) goto LAB_002c1a58; + } + else if (*local_570 == *local_510) { + piVar31 = local_570; + piVar27 = local_510; + do { + piVar27 = piVar27 + 1; + if (piVar31 == local_570 + (iVar23 - 1)) goto LAB_002c2610; + piVar31 = piVar31 + 1; + } while (*piVar31 == *piVar27); + } + } + local_430 = (float *)0x0; + local_428 = 0; + puVar25 = (undefined8 *)String::allocate((String *)&local_430,0x4c); + uVar20 = DAT_00468820; + uVar19 = DAT_00468810; + uVar18 = DAT_00468808; + uVar17 = DAT_00468800; + uVar16 = DAT_004687f8; + uVar15 = DAT_004687f0; + uVar14 = DAT_004687e8; + uVar43 = DAT_004687e0; + uVar11 = _DAT_004687d8; + puVar25[8] = DAT_00468818; + *(undefined4 *)(puVar25 + 9) = uVar20; + *puVar25 = uVar11; + puVar25[1] = uVar43; + puVar25[2] = uVar14; + puVar25[3] = uVar15; + puVar25[4] = uVar16; + puVar25[5] = uVar17; + puVar25[6] = uVar18; + puVar25[7] = uVar19; + error(-0xd7,(String *)&local_430, + "void cv::cartToPolar(cv::InputArray, cv::InputArray, cv::OutputArray, cv::OutputArray, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x15b); + String::deallocate((String *)&local_430); +LAB_002c1a58: + _OutputArray::create(param_3,local_5ac,local_570,uVar4,-1,false,0); + _OutputArray::create(param_4,local_5ac,local_570,uVar4,-1,false,0); + iVar23 = _InputArray::kind((_InputArray *)param_3); + if (iVar23 == 0x10000) { + pMVar32 = *(Mat **)(param_3 + 8); + local_4b0 = &local_4e8; + local_4a8 = &local_4a0; + local_4f0 = *(undefined4 *)pMVar32; + local_4ec = *(int *)(pMVar32 + 4); + local_4e8 = *(undefined4 *)(pMVar32 + 8); + local_4e4 = *(undefined4 *)(pMVar32 + 0xc); + local_4e0 = *(undefined8 *)(pMVar32 + 0x10); + local_4d8 = *(undefined8 *)(pMVar32 + 0x18); + local_4d0 = *(undefined8 *)(pMVar32 + 0x20); + local_4c8 = *(undefined8 *)(pMVar32 + 0x28); + local_4c0 = *(undefined8 *)(pMVar32 + 0x30); + local_4b8 = *(long *)(pMVar32 + 0x38); + local_498 = 0; + local_4a0 = 0; + if (local_4b8 != 0) { + piVar31 = (int *)(local_4b8 + 0x14); + do { + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = *piVar31 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar32 + 4)) { + local_4ec = 0; + Mat::copySize((Mat *)&local_4f0,pMVar32); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_660 = (Mat *)&local_4f0; + iVar23 = _InputArray::kind((_InputArray *)param_4); + if (iVar23 == 0x10000) { + pMVar32 = *(Mat **)(param_4 + 8); + local_450 = &local_488; + local_448 = &local_440; + local_490 = *(undefined4 *)pMVar32; + local_48c = *(int *)(pMVar32 + 4); + local_488 = *(undefined4 *)(pMVar32 + 8); + local_484 = *(undefined4 *)(pMVar32 + 0xc); + local_480 = *(undefined8 *)(pMVar32 + 0x10); + local_478 = *(undefined8 *)(pMVar32 + 0x18); + local_470 = *(undefined8 *)(pMVar32 + 0x20); + local_468 = *(undefined8 *)(pMVar32 + 0x28); + local_460 = *(undefined8 *)(pMVar32 + 0x30); + local_458 = *(long *)(pMVar32 + 0x38); + local_438 = 0; + local_440 = 0; + if (local_458 != 0) { + piVar31 = (int *)(local_458 + 0x14); + do { + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = *piVar31 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (2 < *(int *)(pMVar32 + 4)) { + local_48c = 0; + Mat::copySize((Mat *)&local_490,pMVar32); + } + } + else { + _InputArray::getMat_((int)param_4); + } + local_668 = (Mat *)&local_490; + local_610 = local_670; + local_608 = local_660; + local_5f8 = 0; + local_618 = local_678; + local_600 = local_668; + NAryMatIterator::NAryMatIterator(aNStack_5f0,&local_618,(uchar **)&local_638,-1); + uVar4 = 0; + if (uVar2 != 0) { + uVar4 = (uVar6 + 0x400) / uVar2; + } + uVar13 = local_5b0 & 7; + local_430 = afStack_420; + uVar8 = uVar2 * local_5c8; + local_428 = 0x108; + uVar6 = uVar8; + if ((int)(uVar4 * uVar2) < (int)uVar8) { + uVar6 = uVar4 * uVar2; + } + if (uVar5 == 6) { + FUN_002c0c90(&local_430,(long)(int)(uVar6 << 1)); + pfVar40 = local_430 + (int)uVar6; + pfVar39 = local_430; + } + else { + pfVar40 = (float *)0x0; + pfVar39 = (float *)0x0; + } + local_658 = 0; + uVar2 = -((uint)((ulong)pfVar39 >> 2) & 3) & 3; + if (local_5d0 != 0) { + do { + uVar41 = uVar8; + uVar4 = uVar6; + if (0 < (int)uVar8) { + do { + pdVar22 = local_620; + pdVar21 = local_630; + pdVar34 = local_638; + uVar7 = uVar41; + if ((int)uVar6 < (int)uVar41) { + uVar7 = uVar6; + } + if (uVar5 == 5) { + FUN_003ca620(); + FUN_003ca370(pdVar21,pdVar34,pdVar22,uVar7,param_5); + } + else { + FUN_003ca790(local_638,local_630,local_628,uVar7); + if (0 < (int)uVar7) { + if ((uVar7 < 7) || (pfVar39 < pfVar40 + 4 && pfVar40 < pfVar39 + 4)) { + lVar38 = 0; + do { + dVar10 = pdVar21[lVar38]; + pfVar39[lVar38] = (float)pdVar34[lVar38]; + pfVar40[lVar38] = (float)dVar10; + lVar38 = lVar38 + 1; + } while ((int)lVar38 < (int)uVar7); + } + else { + uVar24 = uVar2; + if (uVar7 < uVar2) { + uVar24 = uVar7; + } + uVar28 = uVar24; + if (uVar24 != 0) { + dVar10 = *pdVar21; + *pfVar39 = (float)*pdVar34; + *pfVar40 = (float)dVar10; + if (uVar24 != 1) { + dVar10 = pdVar21[1]; + pfVar39[1] = (float)pdVar34[1]; + pfVar40[1] = (float)dVar10; + if (uVar24 == 3) { + dVar10 = pdVar21[2]; + pfVar39[2] = (float)pdVar34[2]; + pfVar40[2] = (float)dVar10; + } + else { + uVar28 = 2; + } + } + } + uVar29 = ((uVar7 - uVar24) - 4 >> 2) + 1; + uVar36 = 0; + iVar23 = uVar29 * 4; + pfVar26 = pfVar39 + uVar24; + pdVar33 = pdVar34 + uVar24; + pdVar35 = pdVar21 + uVar24; + pfVar37 = pfVar40 + uVar24; + do { + uVar36 = uVar36 + 1; + dVar44 = pdVar33[1]; + dVar12 = *pdVar33; + dVar42 = pdVar35[1]; + dVar10 = *pdVar35; + dVar46 = pdVar35[3]; + dVar45 = pdVar35[2]; + *(ulong *)(pfVar26 + 2) = CONCAT44((float)pdVar33[3],(float)pdVar33[2]); + *(ulong *)pfVar26 = CONCAT44((float)dVar44,(float)dVar12); + *(ulong *)(pfVar37 + 2) = CONCAT44((float)dVar46,(float)dVar45); + *(ulong *)pfVar37 = CONCAT44((float)dVar42,(float)dVar10); + pfVar26 = pfVar26 + 4; + pdVar33 = pdVar33 + 4; + pdVar35 = pdVar35 + 4; + pfVar37 = pfVar37 + 4; + } while (uVar36 < uVar29); + iVar3 = iVar23 + uVar28; + if (iVar23 != uVar7 - uVar24) { + iVar23 = iVar3 + 1; + dVar10 = pdVar21[iVar3]; + pfVar39[iVar3] = (float)pdVar34[iVar3]; + pfVar40[iVar3] = (float)dVar10; + if (iVar23 < (int)uVar7) { + iVar3 = iVar3 + 2; + dVar10 = pdVar21[iVar23]; + pfVar39[iVar23] = (float)pdVar34[iVar23]; + pfVar40[iVar23] = (float)dVar10; + if (iVar3 < (int)uVar7) { + dVar10 = pdVar21[iVar3]; + pfVar39[iVar3] = (float)pdVar34[iVar3]; + pfVar40[iVar3] = (float)dVar10; + } + } + } + } + } + FUN_003ca370(pfVar40,pfVar39,pfVar39,uVar7,param_5); + if (0 < (int)uVar7) { + uVar24 = (uint)((ulong)pdVar22 >> 3) & 1; + if (uVar7 < uVar24) { + uVar24 = uVar7; + } + uVar28 = uVar7; + if (((int)uVar7 < 5) || (uVar29 = 0, uVar28 = uVar24, uVar24 != 0)) { + uVar24 = uVar28; + *pdVar22 = (double)*pfVar39; + uVar29 = uVar24; + if ((uVar24 != 1) && (pdVar22[1] = (double)pfVar39[1], uVar24 != 2)) { + pdVar22[2] = (double)pfVar39[2]; + if (uVar24 == 4) { + pdVar22[3] = (double)pfVar39[3]; + } + else { + uVar29 = 3; + } + } + if (uVar24 == uVar7) goto LAB_002c1ee4; + } + uVar28 = ((uVar7 - uVar24) - 4 >> 2) + 1; + iVar23 = uVar28 * 4; + if (2 < (uVar7 - 1) - uVar24) { + uVar36 = 0; + pfVar26 = pfVar39 + uVar24; + pdVar34 = pdVar22 + uVar24; + do { + uVar43 = *(undefined8 *)(pfVar26 + 2); + uVar11 = *(undefined8 *)pfVar26; + uVar36 = uVar36 + 1; + pdVar34[1] = (double)(float)((ulong)uVar11 >> 0x20); + *pdVar34 = (double)(float)uVar11; + pdVar34[3] = (double)(float)((ulong)uVar43 >> 0x20); + pdVar34[2] = (double)(float)uVar43; + pfVar26 = pfVar26 + 4; + pdVar34 = pdVar34 + 4; + } while (uVar36 < uVar28); + uVar29 = uVar29 + iVar23; + if (iVar23 == uVar7 - uVar24) goto LAB_002c1ee4; + } + iVar23 = uVar29 + 1; + pdVar22[(int)uVar29] = (double)pfVar39[(int)uVar29]; + if (iVar23 < (int)uVar7) { + iVar3 = uVar29 + 2; + pdVar22[iVar23] = (double)pfVar39[iVar23]; + if (iVar3 < (int)uVar7) { + pdVar22[iVar3] = (double)pfVar39[iVar3]; + } + } + } + } +LAB_002c1ee4: + lVar38 = (long)(int)uVar7 * (0x88442211UL >> (uVar13 << 2) & 0xf); + local_638 = (double *)((long)local_638 + lVar38); + local_630 = (double *)((long)local_630 + lVar38); + local_628 = local_628 + lVar38; + local_620 = (double *)((long)local_620 + lVar38); + bVar1 = (int)uVar4 < (int)uVar8; + uVar41 = uVar41 - uVar6; + uVar4 = uVar4 + uVar6; + } while (bVar1); + } + local_658 = local_658 + 1; + NAryMatIterator::operator++(aNStack_5f0); + } while (local_658 < local_5d0); + } + if ((local_430 != afStack_420) && (local_430 != (float *)0x0)) { + operator_delete__(local_430); + } + if (local_458 != 0) { + piVar31 = (int *)(local_458 + 0x14); + do { + iVar23 = *piVar31; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = iVar23 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_668); + } + } + local_458 = 0; + local_480 = 0; + local_468 = 0; + local_470 = 0; + local_478 = 0; + if (0 < local_48c) { + iVar23 = 0; + puVar30 = local_450; + do { + iVar23 = iVar23 + 1; + *puVar30 = 0; + puVar30 = puVar30 + 1; + } while (iVar23 < local_48c); + } + if (local_448 != &local_440) { + fastFree(local_448); + } + if (local_4b8 != 0) { + piVar31 = (int *)(local_4b8 + 0x14); + do { + iVar23 = *piVar31; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = iVar23 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_660); + } + } + local_4b8 = 0; + local_4e0 = 0; + local_4c8 = 0; + local_4d0 = 0; + local_4d8 = 0; + if (0 < local_4ec) { + iVar23 = 0; + puVar30 = local_4b0; + do { + iVar23 = iVar23 + 1; + *puVar30 = 0; + puVar30 = puVar30 + 1; + } while (iVar23 < local_4ec); + } + if (local_4a8 != &local_4a0) { + fastFree(local_4a8); + } + if (local_518 != 0) { + piVar31 = (int *)(local_518 + 0x14); + do { + iVar23 = *piVar31; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = iVar23 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_670); + } + } + local_518 = 0; + local_540 = 0; + local_528 = 0; + local_530 = 0; + local_538 = 0; + if (0 < local_54c) { + iVar23 = 0; + piVar31 = local_510; + do { + iVar23 = iVar23 + 1; + *piVar31 = 0; + piVar31 = piVar31 + 1; + } while (iVar23 < local_54c); + } + if (local_508 != &local_500) { + fastFree(local_508); + } + if (local_578 != 0) { + piVar31 = (int *)(local_578 + 0x14); + do { + iVar23 = *piVar31; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar31,0x10); + if (bVar1) { + *piVar31 = iVar23 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_678); + } + } + local_578 = 0; + local_5a0 = 0; + local_588 = 0; + local_590 = 0; + local_598 = 0; + if (0 < local_5ac) { + iVar23 = 0; + piVar31 = local_570; + do { + iVar23 = iVar23 + 1; + *piVar31 = 0; + piVar31 = piVar31 + 1; + } while (iVar23 < local_5ac); + } + if (local_568 != &local_560) { + fastFree(local_568); + } + return; +} + + +================================================================== + +### FUNC 002c2750 (2304 bytes) name=cvCartToPolar + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvCartToPolar(cv *param_1,cv *param_2,cv *param_3,cv *param_4,int param_5,AutoBuffer *param_6) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + char *pcVar10; + int *piVar11; + int iVar12; + undefined8 local_270; + Mat *local_268; + undefined4 local_260; + undefined4 local_25c; + undefined8 local_258; + Mat *local_250; + undefined4 local_248; + undefined4 local_244; + undefined8 local_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + int *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + int *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined4 local_120; + int local_11c; + Mat *local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_1f8 = &local_1f0; + local_198 = &local_190; + local_200 = (int *)&uStack_238; + uStack_1e8 = 0; + local_1f0 = 0; + local_1a0 = (int *)&uStack_1d8; + uStack_188 = 0; + local_190 = 0; + local_230 = 0; + uStack_228 = 0; + uStack_238 = _UNK_002c3158; + local_240 = _DAT_002c3150; + local_220 = 0; + uStack_1d8 = _UNK_002c3158; + local_1e0 = _DAT_002c3150; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + if (param_3 == (cv *)0x0) { + if (param_4 != (cv *)0x0) goto LAB_002c2aa0; + } + else { + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_208 != 0) { + piVar11 = (int *)(lStack_208 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + puVar9 = local_138; + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_240._4_4_ < 1) { +LAB_002c28dc: + if (2 < local_17c) goto LAB_002c2f24; + uStack_238 = local_178; + local_240 = CONCAT44(local_17c,local_180); + *local_1f8 = *local_138; + local_1f8[1] = puVar9[1]; + } + else { + iVar12 = 0; + piVar11 = local_200; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_240._4_4_); + if (local_240._4_4_ < 3) goto LAB_002c28dc; +LAB_002c2f24: + local_240 = CONCAT44(local_240._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_180); + } + uStack_218 = uStack_158; + local_220 = local_160; + lStack_208 = lStack_148; + local_210 = local_150; + uStack_228 = uStack_168; + local_230 = local_170; + if (lStack_148 != 0) { + piVar11 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar12 = 0; + do { + *local_140 = 0; + iVar12 = iVar12 + 1; + local_140 = local_140 + 1; + } while (iVar12 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (((local_200[1] != local_80[1]) || (*local_200 != *local_80)) || + (((uint)local_240 & 0xfff) != (local_c0 & 0xfff))) { + local_270 = 0; + local_268 = (Mat *)0x0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_270,0x30); + uVar7 = s_X_type___00468850._0_8_; + uVar6 = _LAB_00468848; + uVar5 = DAT_00468840; + uVar4 = DAT_00468838; + uVar3 = DAT_00468830; + param_6 = (AutoBuffer *)&DAT_00468828; + *puVar9 = DAT_00468828; + puVar9[1] = uVar3; + puVar9[2] = uVar4; + puVar9[3] = uVar5; + puVar9[4] = uVar6; + puVar9[5] = uVar7; + cv::error(-0xd7,(String *)&local_270, + "void cvCartToPolar(const CvArr*, const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x714); + cv::String::deallocate((String *)&local_270); + } + if (param_4 == (cv *)0x0) { + local_248 = 0; + local_170 = 0; + local_180 = 0x1010000; + local_258 = CONCAT44(local_258._4_4_,0x1010000); + local_110 = 0; + local_120 = 0x2010000; + local_250 = (Mat *)&local_c0; + local_244 = local_248; + local_178 = aMStack_60; + local_118 = (Mat *)&local_240; + cv::magnitude((_InputArray *)&local_258,(_InputArray *)&local_180,(_OutputArray *)&local_120); + goto LAB_002c2d2c; + } +LAB_002c2aa0: + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = *piVar11 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_1a8 != 0) { + piVar11 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar9 = local_d8; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002c2b4c: + if (2 < local_11c) goto LAB_002c2f34; + uStack_1d8 = local_118; + local_1e0 = CONCAT44(local_11c,local_120); + *local_198 = *local_d8; + local_198[1] = puVar9[1]; + } + else { + iVar12 = 0; + piVar11 = local_1a0; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002c2b4c; +LAB_002c2f34: + local_1e0 = CONCAT44(local_1e0._4_4_,local_120); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_120); + } + uStack_1b8 = uStack_f8; + local_1c0 = local_100; + lStack_1a8 = lStack_e8; + local_1b0 = local_f0; + uStack_1c8 = uStack_108; + local_1d0 = local_110; + if (lStack_e8 != 0) { + piVar11 = (int *)(lStack_e8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (((*local_1a0 != *local_80) || (local_1a0[1] != local_80[1])) || + (((uint)local_1e0 & 0xfff) != (local_c0 & 0xfff))) { + local_258 = 0; + local_250 = (Mat *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_258,0x34); + uVar8 = s_Angle_size______X_size______Angl_00468860._40_8_; + uVar7 = s_Angle_size______X_size______Angl_00468860._32_8_; + uVar6 = s_Angle_size______X_size______Angl_00468860._24_8_; + uVar5 = s_Angle_size______X_size______Angl_00468860._16_8_; + uVar4 = s_Angle_size______X_size______Angl_00468860._8_8_; + uVar3 = s_Angle_size______X_size______Angl_00468860._0_8_; + *(undefined4 *)(pcVar10 + 0x30) = s_Angle_size______X_size______Angl_00468860._48_4_; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_258, + "void cvCartToPolar(const CvArr*, const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/mathfuncs.cpp",0x719); + cv::String::deallocate((String *)&local_258); + } + if (param_3 != (cv *)0x0) { + local_248 = 0; + local_244 = 0; + local_258 = CONCAT44(local_258._4_4_,0x1010000); + local_110 = 0; + local_120 = 0x2010000; + local_260 = 0; + local_25c = 0; + local_270 = CONCAT44(local_270._4_4_,0x1010000); + local_170 = 0; + local_180 = 0x2010000; + local_268 = (Mat *)&local_c0; + local_250 = aMStack_60; + local_178 = (Mat *)&local_240; + local_118 = (Mat *)&local_1e0; + cv::cartToPolar((_InputArray *)&local_270,(_InputArray *)&local_258,(_OutputArray *)&local_180 + ,(_OutputArray *)&local_120,param_5 != 0); + goto LAB_002c2d2c; + } + } + local_248 = 0; + local_244 = 0; + local_258 = CONCAT44(local_258._4_4_,0x1010000); + local_110 = 0; + local_120 = 0x2010000; + local_170 = 0; + local_180 = 0x1010000; + local_250 = (Mat *)&local_c0; + local_178 = aMStack_60; + local_118 = (Mat *)&local_1e0; + cv::phase((_InputArray *)&local_258,(_InputArray *)&local_180,(_OutputArray *)&local_120, + param_5 != 0); +LAB_002c2d2c: + if (lStack_1a8 != 0) { + piVar11 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar12 = 0; + piVar11 = local_1a0; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (lStack_208 != 0) { + piVar11 = (int *)(lStack_208 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar12 = 0; + piVar11 = local_200; + do { + *piVar11 = 0; + iVar12 = iVar12 + 1; + piVar11 = piVar11 + 1; + } while (iVar12 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + cv::fastFree(local_1f8); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar12 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 002c3160 (616 bytes) name=FUN_002c3160 + +void FUN_002c3160(double *param_1,double *param_2,double *param_3,int param_4,double *param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + double *pdVar4; + double *pdVar5; + long lVar6; + double *pdVar7; + double *pdVar8; + uint uVar9; + long lVar10; + double *pdVar11; + uint uVar12; + int iVar13; + ulong uVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + + dVar21 = *param_5; + if (param_4 < 4) { + iVar13 = 0; + } + else { + uVar12 = param_4 - 4U >> 2; + uVar1 = uVar12 + 1; + if ((param_3 < param_1 + 8 && param_1 < param_3 + 8 || + param_3 < param_2 + 8 && param_2 < param_3 + 8) || (uVar1 < 5)) { + pdVar7 = param_3 + 1; + pdVar8 = param_2; + pdVar11 = param_1; + do { + pdVar4 = pdVar7 + 4; + dVar15 = *pdVar11; + dVar17 = *pdVar8; + *pdVar7 = pdVar8[1] + dVar21 * pdVar11[1]; + pdVar7[-1] = dVar17 + dVar21 * dVar15; + dVar15 = pdVar11[2]; + dVar17 = pdVar8[2]; + pdVar7[2] = pdVar8[3] + dVar21 * pdVar11[3]; + pdVar7[1] = dVar17 + dVar21 * dVar15; + pdVar7 = pdVar4; + pdVar8 = pdVar8 + 4; + pdVar11 = pdVar11 + 4; + } while (pdVar4 != param_3 + (ulong)uVar12 * 4 + 5); + } + else { + uVar12 = 0; + pdVar8 = param_2; + pdVar7 = param_1; + pdVar11 = param_3; + do { + pdVar5 = pdVar7 + 1; + dVar20 = *pdVar7; + pdVar4 = pdVar8 + 1; + dVar16 = *pdVar8; + dVar19 = pdVar7[3]; + dVar18 = pdVar7[2]; + dVar17 = pdVar8[3]; + dVar15 = pdVar8[2]; + uVar12 = uVar12 + 1; + pdVar7 = pdVar7 + 4; + pdVar8 = pdVar8 + 4; + pdVar11[1] = *pdVar4 + *pdVar5 * dVar21; + *pdVar11 = dVar16 + dVar20 * dVar21; + pdVar11[3] = dVar17 + dVar19 * dVar21; + pdVar11[2] = dVar15 + dVar18 * dVar21; + pdVar11 = pdVar11 + 4; + } while (uVar12 < uVar1); + } + iVar13 = uVar1 * 4; + } + if (iVar13 < param_4) { + lVar10 = (long)iVar13; + uVar1 = param_4 - iVar13; + lVar6 = lVar10 + 2; + pdVar7 = param_3 + lVar10; + pdVar8 = param_1 + lVar10; + if ((pdVar7 < param_1 + lVar6 && pdVar8 < param_3 + lVar6 || + param_2 + lVar10 < param_3 + lVar6 && pdVar7 < param_2 + lVar6) || (uVar1 < 8)) { + lVar6 = 0; + do { + *(double *)((long)pdVar7 + lVar6) = + *(double *)((long)(param_2 + lVar10) + lVar6) + + dVar21 * *(double *)((long)pdVar8 + lVar6); + lVar6 = lVar6 + 8; + } while (lVar6 != ((ulong)(uint)((param_4 + -1) - iVar13) + 1) * 8); + return; + } + uVar2 = (uint)((ulong)pdVar8 >> 3) & 1; + uVar12 = uVar1; + if (uVar2 < uVar1) { + uVar12 = uVar2; + } + if (uVar12 != 0) { + iVar13 = iVar13 + 1; + param_3[lVar10] = param_2[lVar10] + dVar21 * param_1[lVar10]; + } + uVar2 = ((uVar1 - uVar12) - 2 >> 1) + 1; + uVar9 = 0; + iVar3 = uVar2 * 2; + pdVar7 = param_3 + (ulong)uVar12 + lVar10; + pdVar8 = param_2 + (ulong)uVar12 + lVar10; + pdVar11 = param_1 + (ulong)uVar12 + lVar10; + do { + dVar15 = *pdVar8; + uVar9 = uVar9 + 1; + dVar17 = *pdVar11; + pdVar7[1] = pdVar8[1] + pdVar11[1] * dVar21; + *pdVar7 = dVar15 + dVar17 * dVar21; + pdVar7 = pdVar7 + 2; + pdVar8 = pdVar8 + 2; + pdVar11 = pdVar11 + 2; + } while (uVar9 < uVar2); + uVar2 = iVar13 + iVar3; + if (uVar1 - uVar12 != iVar3) { + uVar14 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + *(double *)((long)param_3 + uVar14) = + *(double *)((long)param_2 + uVar14) + dVar21 * *(double *)((long)param_1 + uVar14); + } + } + return; +} + + +================================================================== + +### FUNC 002c33c8 (1084 bytes) name=FUN_002c33c8 + +void FUN_002c33c8(double param_1,double param_2,float *param_3,ulong param_4,double *param_5, + ulong param_6,undefined8 *param_7,ulong param_8,int *param_9,uint param_10) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + uint uVar11; + float *pfVar12; + double dVar13; + ulong uVar14; + float *pfVar15; + long lVar16; + double *pdVar17; + uint uVar18; + float *pfVar19; + int iVar20; + ulong uVar21; + int iVar22; + undefined8 *puVar23; + uint uVar24; + float fVar25; + double dVar26; + long lVar27; + long lVar28; + long lVar29; + long lVar30; + long lVar31; + double dVar32; + long lVar33; + int iVar34; + long lVar35; + long lVar36; + + iVar7 = *param_9; + if (param_3 == (float *)0x0) { + uVar14 = 0; + uVar21 = 0; + } + else { + uVar14 = param_4 >> 2; + uVar21 = 1; + if ((param_10 >> 2 & 1) != 0) { + uVar14 = 1; + uVar21 = param_4 >> 2; + } + } + iVar22 = param_9[1] + -1; + if (param_9[1] != 0) { + iVar10 = iVar7 + -3; + uVar9 = iVar7 - 4U >> 2; + iVar8 = (uVar9 + 1) * 4; + iVar6 = iVar8; + if (iVar10 < 1) { + iVar6 = 0; + } + iVar1 = iVar6 + 1; + uVar11 = iVar7 - iVar6; + iVar2 = iVar6 + 2; + iVar3 = iVar6 + 3; + lVar31 = NEON_shl((long)iVar6,3); + lVar30 = NEON_shl((long)iVar6,2); + lVar29 = NEON_shl((long)iVar1,2); + lVar36 = NEON_shl((long)iVar1,3); + lVar28 = NEON_shl((long)iVar2,2); + lVar35 = NEON_shl((long)iVar2,3); + lVar27 = NEON_shl((long)iVar3,2); + lVar33 = NEON_shl((long)iVar3,3); + do { + while (param_3 == (float *)0x0) { + if (0 < iVar10) { + uVar18 = 0; + pdVar17 = param_5; + puVar23 = param_7; + do { + uVar18 = uVar18 + 1; + dVar26 = pdVar17[1]; + dVar13 = *pdVar17; + puVar23[1] = CONCAT44((float)(param_1 * pdVar17[3]),(float)(param_1 * pdVar17[2])); + *puVar23 = CONCAT44((float)(param_1 * dVar26),(float)(param_1 * dVar13)); + pdVar17 = pdVar17 + 4; + puVar23 = puVar23 + 2; + } while (uVar18 < uVar9 + 1); + } + if (iVar7 <= iVar6) goto LAB_002c35b0; + uVar18 = (uint)((ulong)param_5 >> 3) & 1; + if (uVar11 < uVar18) { + uVar18 = uVar11; + } + if (uVar11 < 5) { + uVar18 = uVar11; + } + iVar20 = iVar6; + if (uVar18 != 0) { + *(float *)((long)param_7 + lVar30) = + (float)(param_1 * *(double *)((long)param_5 + lVar31)); + iVar20 = iVar1; + if (((uVar18 != 1) && + (*(float *)((long)param_7 + lVar29) = + (float)(param_1 * *(double *)((long)param_5 + lVar36)), iVar20 = iVar2, + uVar18 != 2)) && + (*(float *)((long)param_7 + lVar28) = + (float)(param_1 * *(double *)((long)param_5 + lVar35)), iVar20 = iVar3, + uVar18 == 4)) { + *(float *)((long)param_7 + lVar27) = + (float)(param_1 * *(double *)((long)param_5 + lVar33)); + iVar20 = iVar6 + 4; + } + if (uVar18 == uVar11) goto LAB_002c35b0; + } + uVar4 = ((uVar11 - uVar18) - 4 >> 2) + 1; + iVar34 = uVar4 * 4; + if (2 < (uVar11 - 1) - uVar18) { + uVar24 = 0; + pdVar17 = param_5 + (ulong)uVar18 + (long)iVar6; + puVar23 = (undefined8 *)((long)param_7 + ((ulong)uVar18 + (long)iVar6) * 4); + do { + uVar24 = uVar24 + 1; + dVar26 = pdVar17[1]; + dVar13 = *pdVar17; + puVar23[1] = CONCAT44((float)(param_1 * pdVar17[3]),(float)(param_1 * pdVar17[2])); + *puVar23 = CONCAT44((float)(param_1 * dVar26),(float)(param_1 * dVar13)); + pdVar17 = pdVar17 + 4; + puVar23 = puVar23 + 2; + } while (uVar24 < uVar4); + iVar20 = iVar20 + iVar34; + if (iVar34 == uVar11 - uVar18) goto LAB_002c35b0; + } + iVar34 = iVar20 + 1; + *(float *)((long)param_7 + (long)iVar20 * 4) = (float)(param_1 * param_5[iVar20]); + if (iVar7 <= iVar34) goto LAB_002c35b0; + iVar20 = iVar20 + 2; + *(float *)((long)param_7 + (long)iVar34 * 4) = (float)(param_1 * param_5[iVar34]); + if (iVar7 <= iVar20) goto LAB_002c35b0; + iVar22 = iVar22 + -1; + pdVar17 = param_5 + iVar20; + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + *(float *)((long)param_7 + (long)iVar20 * 4) = (float)(param_1 * *pdVar17); + param_7 = (undefined8 *)((long)param_7 + (param_8 & 0xfffffffffffffffc)); + param_3 = (float *)(uVar14 * 4); + if (iVar22 == -1) { + return; + } + } + if (iVar10 < 1) { + iVar20 = 0; + pfVar19 = param_3; + } + else { + pfVar15 = (float *)((long)param_7 + 4); + pfVar19 = param_3; + pdVar17 = param_5; + do { + fVar25 = *pfVar19; + pfVar5 = pfVar15 + 4; + dVar13 = *pdVar17; + dVar26 = pdVar17[2]; + dVar32 = pdVar17[3]; + *pfVar15 = (float)(param_2 * (double)pfVar19[uVar21] + pdVar17[1] * param_1); + pfVar15[-1] = (float)(param_2 * (double)fVar25 + dVar13 * param_1); + pfVar12 = pfVar19 + uVar21 * 3; + fVar25 = pfVar19[uVar21 * 2]; + pfVar19 = pfVar19 + uVar21 * 4; + pfVar15[2] = (float)(param_2 * (double)*pfVar12 + dVar32 * param_1); + pfVar15[1] = (float)(param_2 * (double)fVar25 + dVar26 * param_1); + pfVar15 = pfVar5; + pdVar17 = pdVar17 + 4; + } while (pfVar5 != (float *)((long)param_7 + (ulong)uVar9 * 0x10 + 0x14)); + pfVar19 = (float *)((long)param_3 + uVar21 * 0x10 + (ulong)uVar9 * uVar21 * 0x10); + iVar20 = iVar8; + } + if (iVar20 < iVar7) { + lVar16 = 0; + do { + fVar25 = *pfVar19; + pfVar19 = pfVar19 + uVar21; + *(float *)((long)param_7 + lVar16 * 4 + (long)iVar20 * 4) = + (float)(param_2 * (double)fVar25 + param_5[iVar20 + lVar16] * param_1); + lVar16 = lVar16 + 1; + } while (lVar16 != (ulong)(uint)((iVar7 + -1) - iVar20) + 1); + } +LAB_002c35b0: + iVar22 = iVar22 + -1; + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + param_7 = (undefined8 *)((long)param_7 + (param_8 & 0xfffffffffffffffc)); + param_3 = param_3 + uVar14; + } while (iVar22 != -1); + } + return; +} + + +================================================================== + +### FUNC 002c3804 (1016 bytes) name=FUN_002c3804 + +void FUN_002c3804(double param_1,double param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,double *param_7,ulong param_8,int *param_9,uint param_10) + +{ + uint uVar1; + uint uVar2; + double *pdVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + double *pdVar9; + ulong uVar10; + double *pdVar11; + long lVar12; + double *pdVar13; + uint uVar14; + uint uVar15; + double *pdVar16; + ulong uVar17; + ulong uVar18; + ulong uVar19; + int iVar20; + double *pdVar21; + long lVar22; + double dVar23; + double dVar24; + int iVar25; + double dVar26; + uint uVar27; + long lVar28; + + iVar5 = *param_9; + if (param_3 == (double *)0x0) { + uVar10 = 0; + uVar19 = 0; + } + else { + uVar10 = param_4 >> 3; + uVar19 = 1; + if ((param_10 >> 2 & 1) != 0) { + uVar10 = 1; + uVar19 = param_4 >> 3; + } + } + iVar20 = param_9[1] + -1; + if (param_9[1] != 0) { + iVar7 = iVar5 + -3; + uVar6 = iVar5 - 4U >> 2; + uVar1 = uVar6 + 1; + uVar4 = uVar1 * 4; + if (iVar7 < 1) { + uVar4 = 0; + } + uVar8 = iVar5 - uVar4; + lVar22 = (long)(int)uVar4; + lVar28 = NEON_shl((ulong)((iVar5 + -1) - uVar4) + 1,3); + pdVar21 = param_7 + 1; + param_8 = param_8 & 0xfffffffffffffff8; + do { + while (param_3 == (double *)0x0) { + if (0 < iVar7) { + if ((param_5 < param_7 + 8 && param_7 < param_5 + 8) || (uVar1 < 5)) { + pdVar13 = pdVar21; + pdVar11 = param_5; + do { + pdVar16 = pdVar13 + 4; + dVar23 = *pdVar11; + *pdVar13 = param_1 * pdVar11[1]; + pdVar13[-1] = param_1 * dVar23; + dVar23 = pdVar11[2]; + pdVar13[2] = param_1 * pdVar11[3]; + pdVar13[1] = param_1 * dVar23; + pdVar13 = pdVar16; + pdVar11 = pdVar11 + 4; + } while (pdVar16 != param_7 + (ulong)uVar6 * 4 + 5); + } + else { + uVar15 = 0; + pdVar13 = param_5; + pdVar11 = param_7; + do { + pdVar16 = pdVar13 + 1; + dVar26 = *pdVar13; + uVar15 = uVar15 + 1; + dVar24 = pdVar13[3]; + dVar23 = pdVar13[2]; + pdVar13 = pdVar13 + 4; + pdVar11[1] = param_1 * *pdVar16; + *pdVar11 = param_1 * dVar26; + pdVar11[3] = param_1 * dVar24; + pdVar11[2] = param_1 * dVar23; + pdVar11 = pdVar11 + 4; + } while (uVar15 < uVar1); + } + } + if (iVar5 <= (int)uVar4) goto LAB_002c39b4; + pdVar13 = param_5 + lVar22; + if ((pdVar13 < param_7 + lVar22 + 2 && param_7 + lVar22 < param_5 + lVar22 + 2) || + (uVar8 < 0xb)) { + lVar12 = 0; + do { + *(double *)((long)(param_7 + lVar22) + lVar12) = + param_1 * *(double *)((long)pdVar13 + lVar12); + lVar12 = lVar12 + 8; + } while (lVar12 != lVar28); + } + else { + uVar15 = (uint)((ulong)pdVar13 >> 3) & 1; + if (uVar8 < uVar15) { + uVar15 = uVar8; + } + uVar27 = uVar4; + if (uVar15 != 0) { + param_7[lVar22] = param_1 * param_5[lVar22]; + uVar27 = uVar4 + 1; + } + uVar2 = ((uVar8 - uVar15) - 2 >> 1) + 1; + uVar14 = 0; + iVar25 = uVar2 * 2; + pdVar13 = param_7 + (ulong)uVar15 + lVar22; + pdVar11 = param_5 + (ulong)uVar15 + lVar22; + do { + dVar23 = *pdVar11; + uVar14 = uVar14 + 1; + pdVar13[1] = param_1 * pdVar11[1]; + *pdVar13 = param_1 * dVar23; + pdVar13 = pdVar13 + 2; + pdVar11 = pdVar11 + 2; + } while (uVar14 < uVar2); + uVar27 = uVar27 + iVar25; + if (iVar25 == uVar8 - uVar15) goto LAB_002c39b4; + uVar17 = -(ulong)(uVar27 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar27 << 3; + *(double *)((long)param_7 + uVar17) = param_1 * *(double *)((long)param_5 + uVar17); + } + param_7 = (double *)((long)param_7 + param_8); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + pdVar21 = (double *)((long)pdVar21 + param_8); + iVar20 = iVar20 + -1; + param_3 = (double *)(uVar10 * 8); + if (iVar20 == -1) { + return; + } + } + if (iVar7 < 1) { + uVar17 = 0; + pdVar13 = param_3; + } + else { + pdVar11 = pdVar21; + pdVar13 = param_3; + pdVar16 = param_5; + do { + dVar23 = *pdVar13; + pdVar3 = pdVar11 + 4; + dVar24 = *pdVar16; + *pdVar11 = param_2 * pdVar13[uVar19] + pdVar16[1] * param_1; + pdVar11[-1] = param_2 * dVar23 + dVar24 * param_1; + pdVar9 = pdVar13 + uVar19 * 3; + dVar23 = pdVar13[uVar19 * 2]; + pdVar13 = pdVar13 + uVar19 * 4; + dVar24 = pdVar16[2]; + pdVar11[2] = param_2 * *pdVar9 + pdVar16[3] * param_1; + pdVar11[1] = param_2 * dVar23 + dVar24 * param_1; + pdVar11 = pdVar3; + pdVar16 = pdVar16 + 4; + } while (pdVar3 != param_7 + (ulong)uVar6 * 4 + 5); + uVar17 = (ulong)(uVar1 * 4); + pdVar13 = (double *)((long)param_3 + uVar19 * 0x20 + (ulong)uVar6 * uVar19 * 0x20); + } + if ((int)uVar17 < iVar5) { + uVar18 = -(uVar17 >> 0x1f) & 0xfffffff800000000 | uVar17 << 3; + lVar12 = 0; + do { + dVar23 = *pdVar13; + pdVar13 = pdVar13 + uVar19; + *(double *)((long)param_7 + lVar12 + uVar18) = + param_2 * dVar23 + *(double *)((long)param_5 + lVar12 + uVar18) * param_1; + lVar12 = lVar12 + 8; + } while (lVar12 != ((ulong)(uint)((iVar5 + -1) - (int)uVar17) + 1) * 8); + } +LAB_002c39b4: + iVar20 = iVar20 + -1; + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff8)); + param_7 = (double *)((long)param_7 + param_8); + pdVar21 = (double *)((long)pdVar21 + param_8); + param_3 = param_3 + uVar10; + } while (iVar20 != -1); + } + return; +} + + +================================================================== + +### FUNC 002c3bfc (968 bytes) name=FUN_002c3bfc + +void FUN_002c3bfc(double param_1,double param_2,float *param_3,ulong param_4,double *param_5, + ulong param_6,float *param_7,ulong param_8,int *param_9,uint param_10) + +{ + float *pfVar1; + uint uVar2; + long lVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + int iVar10; + double dVar11; + ulong uVar12; + uint uVar13; + float *pfVar14; + float *pfVar15; + double *pdVar16; + double *pdVar17; + undefined8 *puVar18; + ulong uVar19; + int iVar20; + int iVar21; + long lVar22; + float fVar23; + double dVar24; + double dVar25; + float fVar26; + float fVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + long lVar32; + + iVar5 = *param_9; + if (param_3 == (float *)0x0) { + uVar12 = 0; + uVar19 = 0; + } + else { + uVar12 = param_4 >> 3; + uVar19 = 1; + if ((param_10 >> 2 & 1) != 0) { + uVar12 = 1; + uVar19 = param_4 >> 3; + } + } + iVar20 = param_9[1] + -1; + if (param_9[1] != 0) { + iVar9 = iVar5 + -3; + uVar8 = iVar5 - 4U >> 2; + uVar2 = uVar8 + 1; + iVar6 = uVar2 * 4; + lVar3 = (ulong)uVar8 + 1; + iVar4 = iVar6; + if (iVar9 < 1) { + iVar4 = 0; + } + iVar10 = iVar5 - iVar4; + uVar8 = (iVar10 - 2U >> 1) + 1; + iVar7 = uVar8 * 2; + lVar32 = NEON_shl((long)iVar4,3); + do { + while (param_3 == (float *)0x0) { + if (0 < iVar9) { + uVar13 = 0; + pdVar16 = param_5; + pfVar14 = param_7; + do { + dVar28 = pdVar16[1]; + dVar25 = *pdVar16; + uVar13 = uVar13 + 1; + dVar24 = pdVar16[5]; + dVar11 = pdVar16[4]; + dVar30 = pdVar16[7]; + dVar29 = pdVar16[6]; + *(ulong *)(pfVar14 + 2) = + CONCAT44((float)(param_1 * pdVar16[3]),(float)(param_1 * pdVar16[2])); + *(ulong *)pfVar14 = CONCAT44((float)(param_1 * dVar28),(float)(param_1 * dVar25)); + *(ulong *)(pfVar14 + 6) = CONCAT44((float)(param_1 * dVar30),(float)(param_1 * dVar29)); + *(ulong *)(pfVar14 + 4) = CONCAT44((float)(param_1 * dVar24),(float)(param_1 * dVar11)); + pdVar16 = pdVar16 + 8; + pfVar14 = pfVar14 + 8; + } while (uVar13 < uVar2); + } + if (iVar5 <= iVar4) goto LAB_002c3e4c; + iVar21 = iVar4; + if (iVar10 != 1) { + uVar13 = 0; + pdVar16 = param_5 + (long)iVar4 * 2; + puVar18 = (undefined8 *)((long)param_7 + lVar32); + do { + uVar13 = uVar13 + 1; + dVar25 = pdVar16[1]; + dVar11 = *pdVar16; + puVar18[1] = CONCAT44((float)(param_1 * pdVar16[3]),(float)(param_1 * pdVar16[2])); + *puVar18 = CONCAT44((float)(param_1 * dVar25),(float)(param_1 * dVar11)); + pdVar16 = pdVar16 + 4; + puVar18 = puVar18 + 2; + } while (uVar13 < uVar8); + iVar21 = iVar7 + iVar4; + if (iVar7 == iVar10) goto LAB_002c3e4c; + } + lVar22 = (long)iVar21; + iVar20 = iVar20 + -1; + pdVar16 = param_5 + lVar22 * 2; + dVar11 = param_5[lVar22 * 2 + 1]; + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff0)); + param_7[lVar22 * 2] = (float)(param_1 * *pdVar16); + param_7[lVar22 * 2 + 1] = (float)(param_1 * dVar11); + param_3 = (float *)(uVar12 * 8); + param_7 = (float *)((long)param_7 + (param_8 & 0xfffffffffffffff8)); + if (iVar20 == -1) { + return; + } + } + if (iVar9 < 1) { + iVar21 = 0; + pfVar14 = param_3; + } + else { + lVar22 = 0; + pfVar14 = param_7; + pdVar16 = param_5; + pfVar15 = param_3; + do { + fVar26 = pfVar15[1]; + fVar23 = *pfVar15; + fVar27 = pfVar15[uVar19 * 2 + 1]; + lVar22 = lVar22 + 0x20; + dVar25 = pdVar16[1]; + dVar28 = pdVar16[3]; + dVar11 = *pdVar16; + dVar29 = pdVar16[5]; + dVar30 = pdVar16[7]; + dVar24 = pdVar16[4]; + dVar31 = pdVar16[6]; + pfVar14[2] = (float)(param_2 * (double)pfVar15[uVar19 * 2] + pdVar16[2] * param_1); + pfVar14[3] = (float)(param_2 * (double)fVar27 + dVar28 * param_1); + pfVar14[1] = (float)(param_2 * (double)fVar26 + dVar25 * param_1); + *pfVar14 = (float)(param_2 * (double)fVar23 + dVar11 * param_1); + fVar23 = pfVar15[uVar19 * 4]; + fVar27 = pfVar15[uVar19 * 6 + 1]; + fVar26 = pfVar15[uVar19 * 4 + 1]; + pfVar14[6] = (float)(param_2 * (double)pfVar15[uVar19 * 6] + dVar31 * param_1); + pfVar14[7] = (float)(param_2 * (double)fVar27 + dVar30 * param_1); + pfVar14[5] = (float)(param_2 * (double)fVar26 + dVar29 * param_1); + pfVar14[4] = (float)(param_2 * (double)fVar23 + dVar24 * param_1); + pfVar14 = pfVar14 + 8; + pdVar16 = pdVar16 + 8; + pfVar15 = pfVar15 + uVar19 * 8; + } while (lVar22 != lVar3 * 0x20); + pfVar14 = (float *)((long)param_3 + lVar3 * uVar19 * 0x20); + iVar21 = iVar6; + } + if (iVar21 < iVar5) { + lVar22 = (long)iVar21; + pfVar15 = param_7 + lVar22 * 2; + pdVar16 = param_5 + lVar22 * 2; + do { + pfVar1 = pfVar14 + 1; + fVar23 = *pfVar14; + pfVar14 = pfVar14 + uVar19 * 2; + pdVar17 = pdVar16 + 2; + dVar11 = *pdVar16; + pfVar15[1] = (float)(param_2 * (double)*pfVar1 + pdVar16[1] * param_1); + *pfVar15 = (float)(param_2 * (double)fVar23 + dVar11 * param_1); + pfVar15 = pfVar15 + 2; + pdVar16 = pdVar17; + } while (pdVar17 != param_5 + (lVar22 + 1 + (ulong)(uint)((iVar5 + -1) - iVar21)) * 2); + } +LAB_002c3e4c: + iVar20 = iVar20 + -1; + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff0)); + param_3 = param_3 + uVar12 * 2; + param_7 = (float *)((long)param_7 + (param_8 & 0xfffffffffffffff8)); + } while (iVar20 != -1); + } + return; +} + + +================================================================== + +### FUNC 002c3fc4 (1072 bytes) name=FUN_002c3fc4 + +void FUN_002c3fc4(double param_1,double param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,double *param_7,ulong param_8,int *param_9,uint param_10) + +{ + uint uVar1; + long lVar2; + long lVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + double *pdVar8; + ulong uVar9; + double *pdVar10; + uint uVar11; + double *pdVar12; + double *pdVar13; + double *pdVar14; + ulong uVar15; + int iVar16; + int iVar17; + long lVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + long lVar26; + + iVar5 = *param_9; + if (param_3 == (double *)0x0) { + uVar9 = 0; + uVar15 = 0; + } + else { + uVar9 = param_4 >> 4; + uVar15 = 1; + if ((param_10 >> 2 & 1) != 0) { + uVar9 = 1; + uVar15 = param_4 >> 4; + } + } + iVar16 = param_9[1] + -1; + if (param_9[1] != 0) { + uVar6 = iVar5 - 4U >> 2; + uVar1 = uVar6 + 1; + iVar7 = iVar5 + -3; + iVar4 = uVar1 * 4; + if (iVar7 < 1) { + iVar4 = 0; + } + lVar2 = (long)iVar4 + 2; + lVar3 = (ulong)uVar6 + 1; + lVar26 = NEON_shl((long)iVar4 + 1 + (ulong)(uint)((iVar5 + -1) - iVar4),4); + do { + while (param_3 == (double *)0x0) { + if (0 < iVar7) { + if ((param_5 < param_7 + 0x10 && param_7 < param_5 + 0x10) || (uVar1 < 7)) { + pdVar10 = param_7 + 1; + pdVar13 = param_5; + do { + dVar21 = pdVar13[2]; + pdVar14 = pdVar10 + 8; + dVar20 = pdVar13[3]; + dVar19 = *pdVar13; + *pdVar10 = param_1 * pdVar13[1]; + pdVar10[1] = param_1 * dVar21; + pdVar10[2] = param_1 * dVar20; + pdVar10[-1] = param_1 * dVar19; + dVar21 = pdVar13[6]; + dVar20 = pdVar13[7]; + dVar19 = pdVar13[4]; + pdVar10[4] = param_1 * pdVar13[5]; + pdVar10[5] = param_1 * dVar21; + pdVar10[6] = param_1 * dVar20; + pdVar10[3] = param_1 * dVar19; + pdVar10 = pdVar14; + pdVar13 = pdVar13 + 8; + } while (pdVar14 != param_7 + (ulong)uVar6 * 8 + 9); + } + else { + uVar11 = 0; + pdVar10 = param_5; + pdVar13 = param_7; + do { + pdVar14 = pdVar10 + 1; + dVar21 = *pdVar10; + dVar25 = pdVar10[3]; + dVar24 = pdVar10[2]; + dVar23 = pdVar10[5]; + dVar22 = pdVar10[4]; + dVar20 = pdVar10[7]; + dVar19 = pdVar10[6]; + uVar11 = uVar11 + 1; + pdVar10 = pdVar10 + 8; + pdVar13[1] = param_1 * *pdVar14; + *pdVar13 = param_1 * dVar21; + pdVar13[3] = param_1 * dVar25; + pdVar13[2] = param_1 * dVar24; + pdVar13[5] = param_1 * dVar23; + pdVar13[4] = param_1 * dVar22; + pdVar13[7] = param_1 * dVar20; + pdVar13[6] = param_1 * dVar19; + pdVar13 = pdVar13 + 8; + } while (uVar11 < uVar1); + } + } + if (iVar5 <= iVar4) goto LAB_002c41d8; + pdVar10 = param_5 + lVar2 * 2 + -4; + pdVar13 = param_7 + lVar2 * 2 + -4; + if ((pdVar10 < param_7 + lVar2 * 2 && pdVar13 < param_5 + lVar2 * 2) || + ((uint)(iVar5 - iVar4) < 5)) { + do { + pdVar14 = pdVar10 + 2; + dVar19 = *pdVar10; + pdVar13[1] = param_1 * pdVar10[1]; + *pdVar13 = param_1 * dVar19; + pdVar10 = pdVar14; + pdVar13 = pdVar13 + 2; + } while (pdVar14 != (double *)((long)param_5 + lVar26)); + } + else { + uVar11 = 0; + do { + dVar19 = *pdVar10; + uVar11 = uVar11 + 1; + pdVar13[1] = param_1 * pdVar10[1]; + *pdVar13 = param_1 * dVar19; + pdVar10 = pdVar10 + 2; + pdVar13 = pdVar13 + 2; + } while (uVar11 < (uint)(iVar5 - iVar4)); + } + param_7 = (double *)((long)param_7 + (param_8 & 0xfffffffffffffff0)); + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff0)); + iVar16 = iVar16 + -1; + param_3 = (double *)(uVar9 * 0x10); + if (iVar16 == -1) { + return; + } + } + if (iVar7 < 1) { + iVar17 = 0; + pdVar10 = param_3; + } + else { + lVar18 = 0; + pdVar10 = param_7; + pdVar13 = param_5; + pdVar14 = param_3; + do { + dVar23 = pdVar14[uVar15 * 2]; + dVar19 = *pdVar14; + dVar21 = pdVar14[uVar15 * 2 + 1]; + lVar18 = lVar18 + 0x40; + dVar24 = pdVar13[2]; + dVar22 = pdVar13[3]; + dVar20 = *pdVar13; + pdVar10[1] = param_2 * pdVar14[1] + pdVar13[1] * param_1; + pdVar10[2] = param_2 * dVar23 + dVar24 * param_1; + pdVar10[3] = param_2 * dVar21 + dVar22 * param_1; + *pdVar10 = param_2 * dVar19 + dVar20 * param_1; + dVar23 = pdVar14[uVar15 * 6]; + dVar19 = pdVar14[uVar15 * 4]; + dVar21 = pdVar14[uVar15 * 6 + 1]; + dVar24 = pdVar13[6]; + dVar22 = pdVar13[7]; + dVar20 = pdVar13[4]; + pdVar10[5] = param_2 * pdVar14[uVar15 * 4 + 1] + pdVar13[5] * param_1; + pdVar10[6] = param_2 * dVar23 + dVar24 * param_1; + pdVar10[7] = param_2 * dVar21 + dVar22 * param_1; + pdVar10[4] = param_2 * dVar19 + dVar20 * param_1; + pdVar10 = pdVar10 + 8; + pdVar13 = pdVar13 + 8; + pdVar14 = pdVar14 + uVar15 * 8; + } while (lVar18 != lVar3 * 0x40); + pdVar10 = (double *)((long)param_3 + uVar15 * 0x40 * lVar3); + iVar17 = uVar1 * 4; + } + if (iVar17 < iVar5) { + lVar18 = (long)iVar17; + pdVar13 = param_5 + lVar18 * 2; + pdVar14 = param_7 + lVar18 * 2; + do { + pdVar8 = pdVar10 + 1; + dVar19 = *pdVar10; + pdVar10 = pdVar10 + uVar15 * 2; + pdVar12 = pdVar13 + 2; + dVar20 = *pdVar13; + pdVar14[1] = param_2 * *pdVar8 + param_1 * pdVar13[1]; + *pdVar14 = param_2 * dVar19 + param_1 * dVar20; + pdVar13 = pdVar12; + pdVar14 = pdVar14 + 2; + } while (pdVar12 != param_5 + (lVar18 + 1 + (ulong)(uint)((iVar5 + -1) - iVar17)) * 2); + } +LAB_002c41d8: + iVar16 = iVar16 + -1; + param_5 = (double *)((long)param_5 + (param_6 & 0xfffffffffffffff0)); + param_7 = (double *)((long)param_7 + (param_8 & 0xfffffffffffffff0)); + param_3 = param_3 + uVar9 * 2; + } while (iVar16 != -1); + } + return; +} + + +================================================================== + +### FUNC 002c43f4 (3852 bytes) name=FUN_002c43f4 + +void FUN_002c43f4(float *param_1,float *param_2,float *param_3,uint param_4,ulong param_5, + ulong param_6) + +{ + float *pfVar1; + float *pfVar4; + float *pfVar5; + int iVar6; + ulong uVar7; + int iVar8; + uint uVar9; + uint uVar10; + ulong uVar11; + long lVar12; + long lVar13; + uint uVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + float fVar42; + float fVar43; + float fVar44; + float fVar45; + float fVar46; + float fVar47; + float fVar48; + float fVar49; + float fVar50; + float fVar51; + float fVar52; + float fVar53; + float fVar54; + float local_b0; + undefined1 uStack_ac; + undefined1 uStack_ab; + undefined1 uStack_aa; + undefined1 uStack_a9; + float fStack_a8; + undefined1 uStack_a4; + undefined1 uStack_a3; + undefined1 uStack_a2; + undefined1 uStack_a1; + float local_a0; + undefined1 uStack_9c; + undefined1 uStack_9b; + undefined1 uStack_9a; + undefined1 uStack_99; + float fStack_98; + undefined1 uStack_94; + undefined1 uStack_93; + undefined1 uStack_92; + undefined1 uStack_91; + float local_70; + undefined1 uStack_6c; + undefined1 uStack_6b; + undefined1 uStack_6a; + undefined1 uStack_69; + float fStack_68; + undefined1 uStack_64; + undefined1 uStack_63; + undefined1 uStack_62; + undefined1 uStack_61; + float local_60; + undefined1 uStack_5c; + undefined1 uStack_5b; + undefined1 uStack_5a; + undefined1 uStack_59; + float fStack_58; + undefined1 uStack_54; + undefined1 uStack_53; + undefined1 uStack_52; + undefined1 uStack_51; + float *pfVar2; + float *pfVar3; + + iVar6 = (int)param_5; + iVar8 = (int)param_6; + if ((iVar6 == 2) && (iVar8 == 2)) { + iVar6 = param_4 * 2; + if (iVar6 < 1) { + return; + } + uVar10 = iVar6 - 1U >> 1; + uVar14 = uVar10 + 1; + if (((uVar14 < 4 || param_2 < param_1 + 8 && param_1 < param_2 + 8) || + param_3 < param_2 + (ulong)uVar14 * 2 && param_2 < param_3 + 2) || + (param_3 + 4 < param_2 + (ulong)uVar14 * 2 && param_2 < param_3 + 3)) { + pfVar4 = param_2 + 1; + pfVar5 = param_1 + 1; + do { + fVar47 = pfVar5[-1]; + pfVar1 = pfVar5 + 2; + fVar17 = *pfVar5; + fVar48 = param_3[4]; + fVar51 = param_3[3]; + fVar42 = param_3[5]; + pfVar4[-1] = fVar17 * param_3[1] + *param_3 * fVar47 + param_3[2]; + *pfVar4 = fVar17 * fVar48 + fVar51 * fVar47 + fVar42; + pfVar4 = pfVar4 + 2; + pfVar5 = pfVar1; + } while (pfVar1 != param_1 + (ulong)uVar10 * 2 + 3); + return; + } + uVar10 = (uVar10 - 3 >> 2) + 1; + if (iVar6 - 1U < 6) { + uVar7 = 0; + } + else { + fVar54 = param_3[1]; + fVar17 = *param_3; + fVar51 = param_3[2]; + fVar48 = param_3[3]; + fVar47 = param_3[4]; + uVar9 = 0; + fVar42 = param_3[5]; + pfVar4 = param_1; + pfVar5 = param_2; + do { + fVar15 = *pfVar4; + fVar26 = pfVar4[1]; + fVar18 = pfVar4[2]; + fVar29 = pfVar4[3]; + fVar20 = pfVar4[4]; + fVar32 = pfVar4[5]; + fVar23 = pfVar4[6]; + fVar35 = pfVar4[7]; + pfVar4 = pfVar4 + 8; + uVar9 = uVar9 + 1; + _local_70 = CONCAT17((char)((uint)fVar18 >> 0x18), + CONCAT16((char)((uint)fVar18 >> 0x10), + CONCAT15((char)((uint)fVar18 >> 8), + CONCAT14(SUB41(fVar18,0),fVar15)))); + _fStack_68 = CONCAT17((char)((uint)fVar23 >> 0x18), + CONCAT16((char)((uint)fVar23 >> 0x10), + CONCAT15((char)((uint)fVar23 >> 8), + CONCAT14(SUB41(fVar23,0),fVar20)))); + _local_60 = CONCAT17((char)((uint)fVar29 >> 0x18), + CONCAT16((char)((uint)fVar29 >> 0x10), + CONCAT15((char)((uint)fVar29 >> 8), + CONCAT14(SUB41(fVar29,0),fVar26)))); + _fStack_58 = CONCAT17((char)((uint)fVar35 >> 0x18), + CONCAT16((char)((uint)fVar35 >> 0x10), + CONCAT15((char)((uint)fVar35 >> 8), + CONCAT14(SUB41(fVar35,0),fVar32)))); + fVar18 = (float)((ulong)_local_60 >> 0x20); + fVar23 = (float)((ulong)_fStack_58 >> 0x20); + fVar29 = (float)((ulong)_local_70 >> 0x20); + fVar35 = (float)((ulong)_fStack_68 >> 0x20); + *pfVar5 = fVar26 * fVar54 + fVar15 * fVar17 + fVar51; + pfVar5[1] = fVar26 * fVar47 + fVar15 * fVar48 + fVar42; + pfVar5[2] = fVar18 * fVar54 + fVar29 * fVar17 + fVar51; + pfVar5[3] = fVar18 * fVar47 + fVar29 * fVar48 + fVar42; + pfVar5[4] = fVar32 * fVar54 + fVar20 * fVar17 + fVar51; + pfVar5[5] = fVar32 * fVar47 + fVar20 * fVar48 + fVar42; + pfVar5[6] = fVar23 * fVar54 + fVar35 * fVar17 + fVar51; + pfVar5[7] = fVar23 * fVar47 + fVar35 * fVar48 + fVar42; + pfVar5 = pfVar5 + 8; + } while (uVar9 < uVar10); + uVar7 = (ulong)(uVar10 * 8); + if (uVar14 == uVar10 * 4) { + return; + } + } + uVar11 = -(uVar7 >> 0x1f) & 0xfffffffc00000000 | uVar7 << 2; + uVar14 = (int)uVar7 + 2; + fVar47 = *(float *)((long)param_1 + uVar11 + 4); + fVar17 = param_3[4]; + fVar48 = *(float *)((long)param_1 + uVar11); + fVar51 = param_3[3]; + fVar42 = param_3[5]; + *(float *)((long)param_2 + uVar11) = fVar47 * param_3[1] + *param_3 * fVar48 + param_3[2]; + *(float *)((long)param_2 + uVar11 + 4) = fVar47 * fVar17 + fVar51 * fVar48 + fVar42; + if (iVar6 <= (int)uVar14) { + return; + } + uVar11 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + uVar14 = (int)uVar7 + 4; + fVar47 = *(float *)((long)param_1 + uVar11 + 4); + fVar17 = param_3[4]; + fVar48 = *(float *)((long)param_1 + uVar11); + fVar51 = param_3[3]; + fVar42 = param_3[5]; + *(float *)((long)param_2 + uVar11) = fVar47 * param_3[1] + *param_3 * fVar48 + param_3[2]; + *(float *)((long)param_2 + uVar11 + 4) = fVar47 * fVar17 + fVar51 * fVar48 + fVar42; + if (iVar6 <= (int)uVar14) { + return; + } + uVar7 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + fVar47 = *(float *)((long)param_1 + uVar7 + 4); + fVar17 = param_3[4]; + fVar48 = *(float *)((long)param_1 + uVar7); + fVar51 = param_3[3]; + fVar42 = param_3[5]; + *(float *)((long)param_2 + uVar7) = fVar47 * param_3[1] + *param_3 * fVar48 + param_3[2]; + *(float *)((long)param_2 + uVar7 + 4) = fVar47 * fVar17 + fVar51 * fVar48 + fVar42; + return; + } + if (iVar6 == 3) { + if (iVar8 == 3) { + iVar6 = param_4 * 3; + if (iVar6 < 1) { + return; + } + uVar10 = (iVar6 - 1U) / 3; + uVar14 = uVar10 + 1; + pfVar4 = param_2 + (ulong)uVar14 * 3; + if ((((uVar14 < 4 || param_2 < param_1 + 0xc && param_1 < param_2 + 0xc) || + param_3 < pfVar4 && param_2 < param_3 + 2) || + param_3 + 7 < pfVar4 && param_2 < param_3 + 8) || + (param_3 + 0xb < pfVar4 && param_2 < param_3 + 3)) { + iVar8 = 0; + do { + fVar48 = param_1[1]; + fVar17 = param_3[5]; + iVar8 = iVar8 + 3; + fVar54 = param_3[1]; + fVar42 = param_3[4]; + fVar15 = *param_1; + fVar20 = *param_3; + fVar47 = param_3[6]; + fVar51 = param_1[2]; + fVar26 = param_3[2]; + fVar23 = param_3[7]; + fVar18 = param_3[3]; + param_2[2] = fVar48 * param_3[9] + param_3[8] * fVar15 + param_3[10] * fVar51 + + param_3[0xb]; + param_2[1] = fVar48 * fVar17 + fVar42 * fVar15 + fVar47 * fVar51 + fVar23; + *param_2 = fVar48 * fVar54 + fVar20 * fVar15 + fVar26 * fVar51 + fVar18; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar8 < iVar6); + return; + } + uVar10 = (uVar10 - 3 >> 2) + 1; + if (iVar6 - 1U < 9) { + uVar7 = 0; + } + else { + fVar29 = param_3[1]; + fVar17 = *param_3; + fVar26 = param_3[2]; + fVar23 = param_3[3]; + fVar20 = param_3[4]; + uVar9 = 0; + fVar18 = param_3[5]; + fVar15 = param_3[6]; + fVar54 = param_3[7]; + fVar51 = param_3[8]; + fVar48 = param_3[9]; + fVar47 = param_3[10]; + fVar42 = param_3[0xb]; + pfVar4 = param_2; + pfVar5 = param_1; + do { + fVar16 = *pfVar5; + fVar27 = pfVar5[1]; + fVar32 = pfVar5[2]; + fVar19 = pfVar5[3]; + fVar30 = pfVar5[4]; + fVar35 = pfVar5[5]; + fVar21 = pfVar5[6]; + fVar33 = pfVar5[7]; + fVar38 = pfVar5[8]; + fVar24 = pfVar5[9]; + fVar36 = pfVar5[10]; + fVar40 = pfVar5[0xb]; + pfVar5 = pfVar5 + 0xc; + uVar9 = uVar9 + 1; + _local_b0 = CONCAT14(SUB41(fVar19,0),fVar16); + _local_b0 = CONCAT15((char)((uint)fVar19 >> 8),_local_b0); + _local_b0 = CONCAT16((char)((uint)fVar19 >> 0x10),_local_b0); + _local_b0 = CONCAT17((char)((uint)fVar19 >> 0x18),_local_b0); + _fStack_a8 = CONCAT14(SUB41(fVar24,0),fVar21); + _fStack_a8 = CONCAT15((char)((uint)fVar24 >> 8),_fStack_a8); + _fStack_a8 = CONCAT16((char)((uint)fVar24 >> 0x10),_fStack_a8); + _fStack_a8 = CONCAT17((char)((uint)fVar24 >> 0x18),_fStack_a8); + _local_a0 = CONCAT14(SUB41(fVar30,0),fVar27); + _local_a0 = CONCAT15((char)((uint)fVar30 >> 8),_local_a0); + _local_a0 = CONCAT16((char)((uint)fVar30 >> 0x10),_local_a0); + _local_a0 = CONCAT17((char)((uint)fVar30 >> 0x18),_local_a0); + _fStack_98 = CONCAT14(SUB41(fVar36,0),fVar33); + _fStack_98 = CONCAT15((char)((uint)fVar36 >> 8),_fStack_98); + _fStack_98 = CONCAT16((char)((uint)fVar36 >> 0x10),_fStack_98); + _fStack_98 = CONCAT17((char)((uint)fVar36 >> 0x18),_fStack_98); + fVar24 = (float)((ulong)_local_a0 >> 0x20); + fVar30 = (float)((ulong)_fStack_98 >> 0x20); + fVar25 = (float)((ulong)_local_b0 >> 0x20); + fVar22 = (float)((ulong)_fStack_a8 >> 0x20); + fVar36 = (float)(CONCAT17((char)((uint)fVar35 >> 0x18), + CONCAT16((char)((uint)fVar35 >> 0x10), + CONCAT15((char)((uint)fVar35 >> 8), + CONCAT14(SUB41(fVar35,0),fVar32)))) >> 0x20); + fVar40 = (float)(CONCAT17((char)((uint)fVar40 >> 0x18), + CONCAT16((char)((uint)fVar40 >> 0x10), + CONCAT15((char)((uint)fVar40 >> 8), + CONCAT14(SUB41(fVar40,0),fVar38)))) >> 0x20); + fVar35 = fVar27 * fVar29 + fVar16 * fVar17 + fVar32 * fVar26 + fVar23; + fVar19 = fVar24 * fVar29 + fVar25 * fVar17 + fVar36 * fVar26 + fVar23; + *pfVar4 = fVar35; + pfVar4[1] = fVar27 * fVar18 + fVar16 * fVar20 + fVar32 * fVar15 + fVar54; + pfVar4[2] = fVar27 * fVar48 + fVar16 * fVar51 + fVar32 * fVar47 + fVar42; + pfVar4[3] = (float)(CONCAT17((char)((uint)fVar19 >> 0x18), + CONCAT16((char)((uint)fVar19 >> 0x10), + CONCAT15((char)((uint)fVar19 >> 8), + CONCAT14(SUB41(fVar19,0),fVar35)))) >> 0x20 + ); + pfVar4[4] = fVar24 * fVar18 + fVar25 * fVar20 + fVar36 * fVar15 + fVar54; + pfVar4[5] = fVar24 * fVar48 + fVar25 * fVar51 + fVar36 * fVar47 + fVar42; + pfVar4[6] = fVar33 * fVar29 + fVar21 * fVar17 + fVar38 * fVar26 + fVar23; + pfVar4[7] = fVar33 * fVar18 + fVar21 * fVar20 + fVar38 * fVar15 + fVar54; + pfVar4[8] = fVar33 * fVar48 + fVar21 * fVar51 + fVar38 * fVar47 + fVar42; + pfVar4[9] = fVar30 * fVar29 + fVar22 * fVar17 + fVar40 * fVar26 + fVar23; + pfVar4[10] = fVar30 * fVar18 + fVar22 * fVar20 + fVar40 * fVar15 + fVar54; + pfVar4[0xb] = fVar30 * fVar48 + fVar22 * fVar51 + fVar40 * fVar47 + fVar42; + pfVar4 = pfVar4 + 0xc; + } while (uVar9 < uVar10); + uVar7 = (ulong)(uVar10 * 0xc); + if (uVar14 == uVar10 * 4) { + return; + } + } + uVar11 = -(uVar7 >> 0x1f) & 0xfffffffc00000000 | uVar7 << 2; + uVar14 = (int)uVar7 + 3; + fVar17 = *(float *)((long)param_1 + uVar11 + 4); + fVar47 = param_3[5]; + fVar20 = param_3[9]; + fVar54 = *(float *)((long)param_1 + uVar11); + fVar48 = param_3[4]; + fVar23 = param_3[8]; + fVar42 = *(float *)((long)param_1 + uVar11 + 8); + fVar51 = param_3[6]; + fVar26 = param_3[10]; + fVar18 = param_3[7]; + fVar15 = param_3[0xb]; + *(float *)((long)param_2 + uVar11) = + fVar17 * param_3[1] + *param_3 * fVar54 + param_3[2] * fVar42 + param_3[3]; + *(float *)((long)param_2 + uVar11 + 4) = + fVar17 * fVar47 + fVar48 * fVar54 + fVar51 * fVar42 + fVar18; + *(float *)((long)param_2 + uVar11 + 8) = + fVar17 * fVar20 + fVar23 * fVar54 + fVar26 * fVar42 + fVar15; + if (iVar6 <= (int)uVar14) { + return; + } + uVar11 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + uVar14 = (int)uVar7 + 6; + fVar17 = *(float *)((long)param_1 + uVar11 + 4); + fVar47 = param_3[5]; + fVar20 = param_3[9]; + fVar54 = *(float *)((long)param_1 + uVar11); + fVar48 = param_3[4]; + fVar23 = param_3[8]; + fVar42 = *(float *)((long)param_1 + uVar11 + 8); + fVar51 = param_3[6]; + fVar26 = param_3[10]; + fVar18 = param_3[7]; + fVar15 = param_3[0xb]; + *(float *)((long)param_2 + uVar11) = + fVar17 * param_3[1] + *param_3 * fVar54 + param_3[2] * fVar42 + param_3[3]; + *(float *)((long)param_2 + uVar11 + 4) = + fVar17 * fVar47 + fVar48 * fVar54 + fVar51 * fVar42 + fVar18; + *(float *)((long)param_2 + uVar11 + 8) = + fVar17 * fVar20 + fVar23 * fVar54 + fVar26 * fVar42 + fVar15; + if (iVar6 <= (int)uVar14) { + return; + } + uVar7 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + fVar17 = *(float *)((long)param_1 + uVar7 + 4); + fVar47 = param_3[5]; + fVar20 = param_3[9]; + fVar54 = *(float *)((long)param_1 + uVar7); + fVar48 = param_3[4]; + fVar23 = param_3[8]; + fVar42 = *(float *)((long)param_1 + uVar7 + 8); + fVar51 = param_3[6]; + fVar26 = param_3[10]; + fVar18 = param_3[7]; + fVar15 = param_3[0xb]; + *(float *)((long)param_2 + uVar7) = + fVar17 * param_3[1] + *param_3 * fVar54 + param_3[2] * fVar42 + param_3[3]; + *(float *)((long)param_2 + uVar7 + 4) = + fVar17 * fVar47 + fVar48 * fVar54 + fVar51 * fVar42 + fVar18; + *(float *)((long)param_2 + uVar7 + 8) = + fVar17 * fVar20 + fVar23 * fVar54 + fVar26 * fVar42 + fVar15; + return; + } + if (iVar8 == 1) { + if ((int)param_4 < 1) { + return; + } + pfVar4 = param_2 + (int)param_4; + if ((param_4 < 4 || + (param_1 < pfVar4 && param_2 < param_1 + (long)(int)param_4 * 3 || + param_3 < pfVar4 && param_2 < param_3 + 2)) || + (param_3 + 3 < pfVar4 && param_2 < param_3 + 3)) { + pfVar4 = param_1; + do { + pfVar5 = pfVar4 + 3; + *param_2 = param_3[1] * pfVar4[1] + *pfVar4 * *param_3 + pfVar4[2] * param_3[2] + + param_3[3]; + pfVar4 = pfVar5; + param_2 = param_2 + 1; + } while (pfVar5 != param_1 + ((ulong)(param_4 - 1) + 1) * 3); + return; + } + fVar42 = param_3[1]; + fVar48 = param_3[2]; + fVar47 = param_3[3]; + fVar17 = *param_3; + uVar14 = (param_4 - 4 >> 2) + 1; + uVar9 = uVar14 * 4; + uVar7 = (ulong)uVar9; + uVar10 = 0; + pfVar4 = param_2; + pfVar5 = param_1; + do { + fVar51 = *pfVar5; + fVar18 = pfVar5[1]; + fVar26 = pfVar5[2]; + fVar54 = pfVar5[3]; + fVar20 = pfVar5[4]; + fVar29 = pfVar5[5]; + pfVar1 = pfVar5 + 6; + pfVar2 = pfVar5 + 7; + pfVar3 = pfVar5 + 8; + fVar15 = pfVar5[9]; + fVar23 = pfVar5[10]; + fVar32 = pfVar5[0xb]; + pfVar5 = pfVar5 + 0xc; + uVar10 = uVar10 + 1; + _local_b0 = CONCAT14(SUB41(fVar54,0),fVar51); + _local_b0 = CONCAT15((char)((uint)fVar54 >> 8),_local_b0); + _local_b0 = CONCAT16((char)((uint)fVar54 >> 0x10),_local_b0); + _local_b0 = CONCAT17((char)((uint)fVar54 >> 0x18),_local_b0); + _fStack_a8 = CONCAT14(SUB41(fVar15,0),*pfVar1); + _fStack_a8 = CONCAT15((char)((uint)fVar15 >> 8),_fStack_a8); + _fStack_a8 = CONCAT16((char)((uint)fVar15 >> 0x10),_fStack_a8); + _fStack_a8 = CONCAT17((char)((uint)fVar15 >> 0x18),_fStack_a8); + _local_a0 = CONCAT14(SUB41(fVar20,0),fVar18); + _local_a0 = CONCAT15((char)((uint)fVar20 >> 8),_local_a0); + _local_a0 = CONCAT16((char)((uint)fVar20 >> 0x10),_local_a0); + _local_a0 = CONCAT17((char)((uint)fVar20 >> 0x18),_local_a0); + _fStack_98 = CONCAT14(SUB41(fVar23,0),*pfVar2); + _fStack_98 = CONCAT15((char)((uint)fVar23 >> 8),_fStack_98); + _fStack_98 = CONCAT16((char)((uint)fVar23 >> 0x10),_fStack_98); + _fStack_98 = CONCAT17((char)((uint)fVar23 >> 0x18),_fStack_98); + *(ulong *)(pfVar4 + 2) = + CONCAT44(fVar42 * (float)((ulong)_fStack_98 >> 0x20) + + fVar17 * (float)((ulong)_fStack_a8 >> 0x20) + + fVar48 * (float)(CONCAT17((char)((uint)fVar32 >> 0x18), + CONCAT16((char)((uint)fVar32 >> 0x10), + CONCAT15((char)((uint)fVar32 >> 8), + CONCAT14(SUB41(fVar32,0),*pfVar3)) + )) >> 0x20) + fVar47, + fVar42 * *pfVar2 + fVar17 * *pfVar1 + fVar48 * *pfVar3 + fVar47); + *(ulong *)pfVar4 = + CONCAT44(fVar42 * (float)((ulong)_local_a0 >> 0x20) + + fVar17 * (float)((ulong)_local_b0 >> 0x20) + + fVar48 * (float)(CONCAT17((char)((uint)fVar29 >> 0x18), + CONCAT16((char)((uint)fVar29 >> 0x10), + CONCAT15((char)((uint)fVar29 >> 8), + CONCAT14(SUB41(fVar29,0),fVar26))) + ) >> 0x20) + fVar47, + fVar42 * fVar18 + fVar17 * fVar51 + fVar48 * fVar26 + fVar47); + pfVar4 = pfVar4 + 4; + } while (uVar10 < uVar14); + if (param_4 == uVar9) { + return; + } + uVar11 = -(ulong)((uVar14 & 0x3fffffff) >> 0x1d) & 0xfffffffc00000000 | uVar7 << 2; + *(float *)((long)param_2 + uVar11) = + param_3[1] * param_1[uVar7 * 3 + 1] + param_1[uVar7 * 3] * *param_3 + + param_1[uVar7 * 3 + 2] * param_3[2] + param_3[3]; + if ((int)param_4 <= (int)(uVar9 + 1)) { + return; + } + *(float *)((long)param_2 + uVar11 + 4) = + param_3[1] * param_1[uVar7 * 3 + 4] + param_1[uVar7 * 3 + 3] * *param_3 + + param_1[uVar7 * 3 + 5] * param_3[2] + param_3[3]; + if ((int)param_4 <= (int)(uVar9 + 2)) { + return; + } + *(float *)((long)param_2 + uVar11 + 8) = + param_3[1] * param_1[uVar7 * 3 + 7] + param_1[uVar7 * 3 + 6] * *param_3 + + param_1[uVar7 * 3 + 8] * param_3[2] + param_3[3]; + return; + } + } + if ((iVar6 == 4) && (iVar8 == 4)) { + iVar6 = param_4 * 4; + if (0 < iVar6) { + uVar10 = iVar6 - 1U >> 2; + uVar14 = uVar10 + 1; + if (((uVar14 < 5 || param_2 < param_1 + 0x10 && param_1 < param_2 + 0x10) || + param_3 < param_2 + (ulong)uVar14 * 4 && param_2 < param_3 + 1) || + (param_3 + 0x12 < param_2 + (ulong)uVar14 * 4 && param_2 < param_3 + 0xf)) { + pfVar4 = param_2 + 1; + do { + fVar54 = param_1[1]; + pfVar5 = pfVar4 + 4; + fVar42 = param_3[1]; + fVar17 = *param_1; + fVar47 = *param_3; + fVar51 = param_1[2]; + fVar18 = param_3[2]; + fVar48 = param_1[3]; + fVar15 = param_3[3]; + fVar20 = param_3[4]; + *pfVar4 = fVar54 * param_3[6] + param_3[5] * fVar17 + param_3[7] * fVar51 + + param_3[8] * fVar48 + param_3[9]; + pfVar4[-1] = fVar54 * fVar42 + fVar47 * fVar17 + fVar18 * fVar51 + fVar15 * fVar48 + + fVar20; + fVar42 = param_3[0xb]; + fVar47 = param_3[10]; + fVar20 = param_3[0xc]; + fVar18 = param_3[0xd]; + fVar15 = param_3[0xe]; + pfVar4[2] = fVar54 * param_3[0x10] + param_3[0xf] * fVar17 + param_3[0x11] * fVar51 + + param_3[0x12] * fVar48 + param_3[0x13]; + pfVar4[1] = fVar54 * fVar42 + fVar47 * fVar17 + fVar20 * fVar51 + fVar18 * fVar48 + fVar15 + ; + param_1 = param_1 + 4; + pfVar4 = pfVar5; + } while (pfVar5 != param_2 + (ulong)uVar10 * 4 + 5); + } + else { + uVar10 = (uVar10 - 3 >> 2) + 1; + if (iVar6 - 1U < 0xc) { + uVar7 = 0; + } + else { + fVar15 = param_3[8]; + fVar17 = *param_3; + fVar48 = param_3[9]; + fVar29 = param_3[10]; + fVar23 = param_3[0xb]; + uVar9 = 0; + fVar42 = param_3[0xc]; + fVar18 = param_3[0xd]; + fVar51 = param_3[0xe]; + fVar35 = param_3[1]; + fVar27 = param_3[2]; + fVar30 = param_3[3]; + fVar21 = param_3[4]; + fVar24 = param_3[5]; + fVar16 = param_3[6]; + fVar19 = param_3[7]; + fVar32 = param_3[0xf]; + fVar26 = param_3[0x10]; + fVar47 = param_3[0x11]; + fVar20 = param_3[0x12]; + fVar54 = param_3[0x13]; + pfVar4 = param_2; + pfVar5 = param_1; + do { + fVar40 = *pfVar5; + fVar28 = pfVar5[1]; + fVar33 = pfVar5[2]; + fVar43 = pfVar5[3]; + fVar38 = pfVar5[4]; + fVar31 = pfVar5[5]; + fVar36 = pfVar5[6]; + fVar44 = pfVar5[7]; + fVar22 = pfVar5[8]; + fVar34 = pfVar5[9]; + fVar39 = pfVar5[10]; + fVar45 = pfVar5[0xb]; + fVar25 = pfVar5[0xc]; + fVar37 = pfVar5[0xd]; + fVar41 = pfVar5[0xe]; + fVar46 = pfVar5[0xf]; + pfVar5 = pfVar5 + 0x10; + uVar9 = uVar9 + 1; + _local_b0 = CONCAT14(SUB41(fVar38,0),fVar40); + _local_b0 = CONCAT15((char)((uint)fVar38 >> 8),_local_b0); + _local_b0 = CONCAT16((char)((uint)fVar38 >> 0x10),_local_b0); + _local_b0 = CONCAT17((char)((uint)fVar38 >> 0x18),_local_b0); + _fStack_a8 = CONCAT14(SUB41(fVar25,0),fVar22); + _fStack_a8 = CONCAT15((char)((uint)fVar25 >> 8),_fStack_a8); + _fStack_a8 = CONCAT16((char)((uint)fVar25 >> 0x10),_fStack_a8); + _fStack_a8 = CONCAT17((char)((uint)fVar25 >> 0x18),_fStack_a8); + _local_a0 = CONCAT14(SUB41(fVar31,0),fVar28); + _local_a0 = CONCAT15((char)((uint)fVar31 >> 8),_local_a0); + _local_a0 = CONCAT16((char)((uint)fVar31 >> 0x10),_local_a0); + _local_a0 = CONCAT17((char)((uint)fVar31 >> 0x18),_local_a0); + _fStack_98 = CONCAT14(SUB41(fVar37,0),fVar34); + _fStack_98 = CONCAT15((char)((uint)fVar37 >> 8),_fStack_98); + _fStack_98 = CONCAT16((char)((uint)fVar37 >> 0x10),_fStack_98); + _fStack_98 = CONCAT17((char)((uint)fVar37 >> 0x18),_fStack_98); + fVar25 = (float)((ulong)_local_a0 >> 0x20); + fVar31 = (float)((ulong)_fStack_98 >> 0x20); + fVar52 = (float)((ulong)_local_b0 >> 0x20); + fVar53 = (float)((ulong)_fStack_a8 >> 0x20); + fVar49 = (float)(CONCAT17((char)((uint)fVar36 >> 0x18), + CONCAT16((char)((uint)fVar36 >> 0x10), + CONCAT15((char)((uint)fVar36 >> 8), + CONCAT14(SUB41(fVar36,0),fVar33)))) >> 0x20) + ; + fVar50 = (float)(CONCAT17((char)((uint)fVar41 >> 0x18), + CONCAT16((char)((uint)fVar41 >> 0x10), + CONCAT15((char)((uint)fVar41 >> 8), + CONCAT14(SUB41(fVar41,0),fVar39)))) >> 0x20) + ; + fVar37 = (float)(CONCAT17((char)((uint)fVar44 >> 0x18), + CONCAT16((char)((uint)fVar44 >> 0x10), + CONCAT15((char)((uint)fVar44 >> 8), + CONCAT14(SUB41(fVar44,0),fVar43)))) >> 0x20) + ; + fVar41 = (float)(CONCAT17((char)((uint)fVar46 >> 0x18), + CONCAT16((char)((uint)fVar46 >> 0x10), + CONCAT15((char)((uint)fVar46 >> 8), + CONCAT14(SUB41(fVar46,0),fVar45)))) >> 0x20) + ; + fVar36 = fVar28 * fVar16 + fVar40 * fVar24 + fVar33 * fVar19 + fVar43 * fVar15 + fVar48; + fVar38 = fVar25 * fVar16 + fVar52 * fVar24 + fVar49 * fVar19 + fVar37 * fVar15 + fVar48; + *pfVar4 = fVar28 * fVar35 + fVar40 * fVar17 + fVar33 * fVar27 + fVar43 * fVar30 + fVar21 + ; + pfVar4[1] = fVar36; + pfVar4[2] = fVar28 * fVar23 + fVar40 * fVar29 + fVar33 * fVar42 + fVar43 * fVar18 + + fVar51; + pfVar4[3] = fVar28 * fVar26 + fVar40 * fVar32 + fVar33 * fVar47 + fVar43 * fVar20 + + fVar54; + pfVar4[4] = fVar25 * fVar35 + fVar52 * fVar17 + fVar49 * fVar27 + fVar37 * fVar30 + + fVar21; + pfVar4[5] = (float)(CONCAT17((char)((uint)fVar38 >> 0x18), + CONCAT16((char)((uint)fVar38 >> 0x10), + CONCAT15((char)((uint)fVar38 >> 8), + CONCAT14(SUB41(fVar38,0),fVar36)))) >> + 0x20); + pfVar4[6] = fVar25 * fVar23 + fVar52 * fVar29 + fVar49 * fVar42 + fVar37 * fVar18 + + fVar51; + pfVar4[7] = fVar25 * fVar26 + fVar52 * fVar32 + fVar49 * fVar47 + fVar37 * fVar20 + + fVar54; + pfVar4[8] = fVar34 * fVar35 + fVar22 * fVar17 + fVar39 * fVar27 + fVar45 * fVar30 + + fVar21; + pfVar4[9] = fVar34 * fVar16 + fVar22 * fVar24 + fVar39 * fVar19 + fVar45 * fVar15 + + fVar48; + pfVar4[10] = fVar34 * fVar23 + fVar22 * fVar29 + fVar39 * fVar42 + fVar45 * fVar18 + + fVar51; + pfVar4[0xb] = fVar34 * fVar26 + fVar22 * fVar32 + fVar39 * fVar47 + fVar45 * fVar20 + + fVar54; + pfVar4[0xc] = fVar31 * fVar35 + fVar53 * fVar17 + fVar50 * fVar27 + fVar41 * fVar30 + + fVar21; + pfVar4[0xd] = fVar31 * fVar16 + fVar53 * fVar24 + fVar50 * fVar19 + fVar41 * fVar15 + + fVar48; + pfVar4[0xe] = fVar31 * fVar23 + fVar53 * fVar29 + fVar50 * fVar42 + fVar41 * fVar18 + + fVar51; + pfVar4[0xf] = fVar31 * fVar26 + fVar53 * fVar32 + fVar50 * fVar47 + fVar41 * fVar20 + + fVar54; + pfVar4 = pfVar4 + 0x10; + } while (uVar9 < uVar10); + uVar7 = (ulong)(uVar10 * 0x10); + if (uVar14 == uVar10 * 4) { + return; + } + } + uVar11 = -(uVar7 >> 0x1f) & 0xfffffffc00000000 | uVar7 << 2; + uVar14 = (int)uVar7 + 4; + fVar54 = *(float *)((long)param_1 + uVar11 + 4); + fVar42 = param_3[6]; + fVar17 = *(float *)((long)param_1 + uVar11); + fVar47 = param_3[5]; + fVar51 = *(float *)((long)param_1 + uVar11 + 8); + fVar18 = param_3[7]; + fVar48 = *(float *)((long)param_1 + uVar11 + 0xc); + fVar15 = param_3[8]; + fVar20 = param_3[9]; + *(float *)((long)param_2 + uVar11) = + fVar54 * param_3[1] + *param_3 * fVar17 + param_3[2] * fVar51 + param_3[3] * fVar48 + + param_3[4]; + *(float *)((long)param_2 + uVar11 + 4) = + fVar54 * fVar42 + fVar47 * fVar17 + fVar18 * fVar51 + fVar15 * fVar48 + fVar20; + fVar42 = param_3[0x10]; + fVar47 = param_3[0xf]; + fVar20 = param_3[0x11]; + fVar18 = param_3[0x12]; + fVar15 = param_3[0x13]; + *(float *)((long)param_2 + uVar11 + 8) = + fVar54 * param_3[0xb] + param_3[10] * fVar17 + param_3[0xc] * fVar51 + + param_3[0xd] * fVar48 + param_3[0xe]; + *(float *)((long)param_2 + uVar11 + 0xc) = + fVar54 * fVar42 + fVar47 * fVar17 + fVar20 * fVar51 + fVar18 * fVar48 + fVar15; + if ((int)uVar14 < iVar6) { + uVar11 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + uVar14 = (int)uVar7 + 8; + fVar54 = *(float *)((long)param_1 + uVar11 + 4); + fVar42 = param_3[6]; + fVar17 = *(float *)((long)param_1 + uVar11); + fVar47 = param_3[5]; + fVar51 = *(float *)((long)param_1 + uVar11 + 8); + fVar18 = param_3[7]; + fVar48 = *(float *)((long)param_1 + uVar11 + 0xc); + fVar15 = param_3[8]; + fVar20 = param_3[9]; + *(float *)((long)param_2 + uVar11) = + fVar54 * param_3[1] + *param_3 * fVar17 + param_3[2] * fVar51 + param_3[3] * fVar48 + + param_3[4]; + *(float *)((long)param_2 + uVar11 + 4) = + fVar54 * fVar42 + fVar47 * fVar17 + fVar18 * fVar51 + fVar15 * fVar48 + fVar20; + fVar42 = param_3[0x10]; + fVar47 = param_3[0xf]; + fVar20 = param_3[0x11]; + fVar18 = param_3[0x12]; + fVar15 = param_3[0x13]; + *(float *)((long)param_2 + uVar11 + 8) = + fVar54 * param_3[0xb] + param_3[10] * fVar17 + param_3[0xc] * fVar51 + + param_3[0xd] * fVar48 + param_3[0xe]; + *(float *)((long)param_2 + uVar11 + 0xc) = + fVar54 * fVar42 + fVar47 * fVar17 + fVar20 * fVar51 + fVar18 * fVar48 + fVar15; + if ((int)uVar14 < iVar6) { + uVar7 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + fVar54 = *(float *)((long)param_1 + uVar7 + 4); + fVar42 = param_3[6]; + fVar17 = *(float *)((long)param_1 + uVar7); + fVar47 = param_3[5]; + fVar51 = *(float *)((long)param_1 + uVar7 + 8); + fVar18 = param_3[7]; + fVar48 = *(float *)((long)param_1 + uVar7 + 0xc); + fVar15 = param_3[8]; + fVar20 = param_3[9]; + *(float *)((long)param_2 + uVar7) = + fVar54 * param_3[1] + *param_3 * fVar17 + param_3[2] * fVar51 + param_3[3] * fVar48 + + param_3[4]; + *(float *)((long)param_2 + uVar7 + 4) = + fVar54 * fVar42 + fVar47 * fVar17 + fVar18 * fVar51 + fVar15 * fVar48 + fVar20; + fVar42 = param_3[0x10]; + fVar47 = param_3[0xf]; + fVar20 = param_3[0x11]; + fVar18 = param_3[0x12]; + fVar15 = param_3[0x13]; + *(float *)((long)param_2 + uVar7 + 8) = + fVar54 * param_3[0xb] + param_3[10] * fVar17 + param_3[0xc] * fVar51 + + param_3[0xd] * fVar48 + param_3[0xe]; + *(float *)((long)param_2 + uVar7 + 0xc) = + fVar54 * fVar42 + fVar47 * fVar17 + fVar20 * fVar51 + fVar18 * fVar48 + fVar15; + } + } + } + } + } + else if (0 < (int)param_4) { + uVar7 = -(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2; + uVar14 = 0; + do { + lVar13 = 0; + pfVar4 = param_3; + if (0 < iVar8) { + do { + fVar17 = *(float *)((long)pfVar4 + uVar7); + if (0 < iVar6) { + lVar12 = 0; + do { + pfVar5 = pfVar4 + lVar12; + pfVar1 = param_1 + lVar12; + lVar12 = lVar12 + 1; + fVar17 = fVar17 + *pfVar1 * *pfVar5; + } while ((int)lVar12 < iVar6); + } + param_2[lVar13] = fVar17; + lVar13 = lVar13 + 1; + pfVar4 = (float *)((long)pfVar4 + uVar7 + 4); + } while ((int)lVar13 < iVar8); + } + uVar14 = uVar14 + 1; + param_1 = (float *)((long)param_1 + uVar7); + param_2 = (float *)((long)param_2 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2) + ); + } while (uVar14 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c5300 (2948 bytes) name=FUN_002c5300 + +void FUN_002c5300(double *param_1,double *param_2,double *param_3,uint param_4,ulong param_5, + ulong param_6) + +{ + double *pdVar1; + double *pdVar4; + ulong uVar5; + double *pdVar6; + int iVar7; + uint uVar8; + uint uVar9; + int iVar10; + long lVar11; + long lVar12; + uint uVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double *pdVar2; + double *pdVar3; + + iVar7 = (int)param_5; + iVar10 = (int)param_6; + if ((iVar7 == 2) && (iVar10 == 2)) { + if ((int)(param_4 * 2) < 1) { + return; + } + uVar8 = param_4 * 2 - 1; + uVar9 = uVar8 >> 1; + uVar13 = uVar9 + 1; + if (((3 < uVar13 && (param_1 + 4 <= param_2 || param_2 + 4 <= param_1)) && + (param_2 + (ulong)uVar13 * 2 <= param_3 || param_3 + 1 <= param_2)) && + (param_2 + (ulong)uVar13 * 2 <= param_3 + 5 || param_3 + 2 <= param_2)) { + uVar9 = (uVar9 - 1 >> 1) + 1; + if (uVar8 < 2) { + uVar5 = 0; + } + else { + dVar37 = param_3[1]; + dVar15 = *param_3; + dVar36 = param_3[2]; + dVar35 = param_3[3]; + dVar34 = param_3[4]; + uVar8 = 0; + dVar31 = param_3[5]; + pdVar4 = param_1; + pdVar6 = param_2; + do { + dVar14 = *pdVar4; + dVar21 = pdVar4[1]; + dVar18 = pdVar4[2]; + dVar24 = pdVar4[3]; + pdVar4 = pdVar4 + 4; + uVar8 = uVar8 + 1; + *pdVar6 = dVar21 * dVar37 + dVar14 * dVar15 + dVar36; + pdVar6[1] = dVar21 * dVar34 + dVar14 * dVar35 + dVar31; + pdVar6[2] = dVar24 * dVar37 + dVar18 * dVar15 + dVar36; + pdVar6[3] = dVar24 * dVar34 + dVar18 * dVar35 + dVar31; + pdVar6 = pdVar6 + 4; + } while (uVar8 < uVar9); + uVar5 = (ulong)(uVar9 * 4); + if (uVar13 == uVar9 * 2) { + return; + } + } + uVar5 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + dVar15 = *(double *)((long)param_1 + uVar5 + 8); + dVar34 = param_3[4]; + dVar31 = *(double *)((long)param_1 + uVar5); + dVar36 = param_3[3]; + dVar35 = param_3[5]; + *(double *)((long)param_2 + uVar5) = dVar15 * param_3[1] + *param_3 * dVar31 + param_3[2]; + *(double *)((long)param_2 + uVar5 + 8) = dVar15 * dVar34 + dVar36 * dVar31 + dVar35; + return; + } + pdVar4 = param_2 + 1; + pdVar6 = param_1 + 1; + do { + dVar15 = pdVar6[-1]; + pdVar1 = pdVar6 + 2; + dVar31 = *pdVar6; + dVar35 = param_3[4]; + dVar36 = param_3[3]; + dVar34 = param_3[5]; + pdVar4[-1] = dVar31 * param_3[1] + *param_3 * dVar15 + param_3[2]; + *pdVar4 = dVar31 * dVar35 + dVar36 * dVar15 + dVar34; + pdVar4 = pdVar4 + 2; + pdVar6 = pdVar1; + } while (pdVar1 != param_1 + (ulong)uVar9 * 2 + 3); + return; + } + if (iVar7 == 3) { + if (iVar10 == 3) { + iVar7 = param_4 * 3; + if (iVar7 < 1) { + return; + } + uVar9 = (iVar7 - 1U) / 3; + uVar13 = uVar9 + 1; + pdVar4 = param_2 + (ulong)uVar13 * 3; + if (((((3 < uVar13 && (param_1 + 6 <= param_2 || param_2 + 6 <= param_1)) && + (pdVar4 <= param_3 || param_3 + 1 <= param_2)) && + (pdVar4 <= param_3 + 9 || param_3 + 5 <= param_2)) && + (pdVar4 <= param_3 + 10 || param_3 + 4 <= param_2)) && + (pdVar4 <= param_3 + 0xb || param_3 + 8 <= param_2)) { + uVar9 = (uVar9 - 1 >> 1) + 1; + if (iVar7 - 1U < 3) { + uVar5 = 0; + } + else { + dVar39 = param_3[1]; + dVar15 = *param_3; + dVar38 = param_3[2]; + dVar24 = param_3[3]; + dVar21 = param_3[4]; + uVar8 = 0; + dVar18 = param_3[5]; + dVar14 = param_3[6]; + dVar37 = param_3[7]; + dVar36 = param_3[8]; + dVar35 = param_3[9]; + dVar34 = param_3[10]; + dVar31 = param_3[0xb]; + pdVar4 = param_2; + pdVar6 = param_1; + do { + dVar16 = *pdVar6; + dVar22 = pdVar6[1]; + dVar27 = pdVar6[2]; + dVar19 = pdVar6[3]; + dVar25 = pdVar6[4]; + dVar29 = pdVar6[5]; + pdVar6 = pdVar6 + 6; + uVar8 = uVar8 + 1; + *pdVar4 = dVar22 * dVar39 + dVar16 * dVar15 + dVar27 * dVar38 + dVar24; + pdVar4[1] = dVar22 * dVar18 + dVar16 * dVar21 + dVar27 * dVar14 + dVar37; + pdVar4[2] = dVar22 * dVar35 + dVar16 * dVar36 + dVar27 * dVar34 + dVar31; + pdVar4[3] = dVar25 * dVar39 + dVar19 * dVar15 + dVar29 * dVar38 + dVar24; + pdVar4[4] = dVar25 * dVar18 + dVar19 * dVar21 + dVar29 * dVar14 + dVar37; + pdVar4[5] = dVar25 * dVar35 + dVar19 * dVar36 + dVar29 * dVar34 + dVar31; + pdVar4 = pdVar4 + 6; + } while (uVar8 < uVar9); + uVar5 = (ulong)(uVar9 * 6); + if (uVar13 == uVar9 * 2) { + return; + } + } + uVar5 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + dVar15 = *(double *)((long)param_1 + uVar5 + 8); + dVar34 = param_3[5]; + dVar21 = param_3[9]; + dVar37 = *(double *)((long)param_1 + uVar5); + dVar35 = param_3[4]; + dVar24 = param_3[8]; + dVar31 = *(double *)((long)param_1 + uVar5 + 0x10); + dVar36 = param_3[6]; + dVar38 = param_3[10]; + dVar18 = param_3[7]; + dVar14 = param_3[0xb]; + *(double *)((long)param_2 + uVar5) = + dVar15 * param_3[1] + *param_3 * dVar37 + param_3[2] * dVar31 + param_3[3]; + *(double *)((long)param_2 + uVar5 + 8) = + dVar15 * dVar34 + dVar35 * dVar37 + dVar36 * dVar31 + dVar18; + *(double *)((long)param_2 + uVar5 + 0x10) = + dVar15 * dVar21 + dVar24 * dVar37 + dVar38 * dVar31 + dVar14; + return; + } + iVar10 = 0; + do { + dVar15 = param_1[1]; + dVar34 = param_3[5]; + iVar10 = iVar10 + 3; + dVar37 = param_3[1]; + dVar35 = param_3[4]; + dVar14 = *param_1; + dVar21 = *param_3; + dVar36 = param_3[6]; + dVar31 = param_1[2]; + dVar38 = param_3[2]; + dVar24 = param_3[7]; + dVar18 = param_3[3]; + param_2[2] = dVar15 * param_3[9] + param_3[8] * dVar14 + param_3[10] * dVar31 + param_3[0xb] + ; + param_2[1] = dVar15 * dVar34 + dVar35 * dVar14 + dVar36 * dVar31 + dVar24; + *param_2 = dVar15 * dVar37 + dVar21 * dVar14 + dVar38 * dVar31 + dVar18; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar10 < iVar7); + return; + } + if (iVar10 == 1) { + if ((int)param_4 < 1) { + return; + } + pdVar4 = param_2 + (int)param_4; + if ((3 < param_4 && + ((pdVar4 <= param_1 || param_1 + (long)(int)param_4 * 3 <= param_2) && + (pdVar4 <= param_3 || param_3 + 1 <= param_2))) && + (pdVar4 <= param_3 + 2 || param_3 + 2 <= param_2)) { + dVar35 = param_3[1]; + dVar34 = param_3[2]; + dVar31 = param_3[3]; + dVar15 = *param_3; + uVar13 = (param_4 - 2 >> 1) + 1; + uVar8 = uVar13 * 2; + uVar9 = 0; + pdVar4 = param_2; + pdVar6 = param_1; + do { + dVar36 = *pdVar6; + dVar37 = pdVar6[1]; + dVar14 = pdVar6[2]; + pdVar1 = pdVar6 + 3; + pdVar2 = pdVar6 + 4; + pdVar3 = pdVar6 + 5; + pdVar6 = pdVar6 + 6; + uVar9 = uVar9 + 1; + pdVar4[1] = dVar35 * *pdVar2 + dVar15 * *pdVar1 + dVar34 * *pdVar3 + dVar31; + *pdVar4 = dVar35 * dVar37 + dVar15 * dVar36 + dVar34 * dVar14 + dVar31; + pdVar4 = pdVar4 + 2; + } while (uVar9 < uVar13); + uVar5 = (ulong)uVar8; + if (param_4 == uVar8) { + return; + } + param_2[(int)uVar8] = + param_3[1] * param_1[uVar5 * 3 + 1] + param_1[uVar5 * 3] * *param_3 + + param_1[uVar5 * 3 + 2] * param_3[2] + param_3[3]; + return; + } + pdVar4 = param_1; + do { + pdVar6 = pdVar4 + 3; + *param_2 = param_3[1] * pdVar4[1] + *pdVar4 * *param_3 + pdVar4[2] * param_3[2] + param_3[3] + ; + pdVar4 = pdVar6; + param_2 = param_2 + 1; + } while (pdVar6 != param_1 + ((ulong)(param_4 - 1) + 1) * 3); + return; + } + } + if ((iVar7 == 4) && (iVar10 == 4)) { + if (0 < (int)(param_4 * 4)) { + uVar8 = param_4 * 4 - 1; + uVar9 = uVar8 >> 2; + uVar13 = uVar9 + 1; + pdVar4 = param_2 + (ulong)uVar13 * 4; + if (((((uVar13 < 5 || param_2 < param_1 + 8 && param_1 < param_2 + 8) || + param_3 < pdVar4 && param_2 < param_3 + 1) || + param_3 + 0x11 < pdVar4 && param_2 < param_3 + 5) || + param_3 + 0x12 < pdVar4 && param_2 < param_3 + 8) || + (param_3 + 0x13 < pdVar4 && param_2 < param_3 + 0x14)) { + pdVar4 = param_2 + 1; + do { + dVar37 = param_1[1]; + pdVar6 = pdVar4 + 4; + dVar15 = param_3[1]; + dVar36 = *param_1; + dVar31 = *param_3; + dVar35 = param_1[2]; + dVar18 = param_3[2]; + dVar34 = param_1[3]; + dVar14 = param_3[3]; + dVar21 = param_3[4]; + *pdVar4 = dVar37 * param_3[6] + param_3[5] * dVar36 + param_3[7] * dVar35 + + param_3[8] * dVar34 + param_3[9]; + pdVar4[-1] = dVar37 * dVar15 + dVar31 * dVar36 + dVar18 * dVar35 + dVar14 * dVar34 + + dVar21; + dVar15 = param_3[0xb]; + dVar31 = param_3[10]; + dVar21 = param_3[0xc]; + dVar18 = param_3[0xd]; + dVar14 = param_3[0xe]; + pdVar4[2] = dVar37 * param_3[0x10] + param_3[0xf] * dVar36 + param_3[0x11] * dVar35 + + param_3[0x12] * dVar34 + param_3[0x13]; + pdVar4[1] = dVar37 * dVar15 + dVar31 * dVar36 + dVar21 * dVar35 + dVar18 * dVar34 + dVar14 + ; + param_1 = param_1 + 4; + pdVar4 = pdVar6; + } while (pdVar6 != param_2 + (ulong)uVar9 * 4 + 5); + } + else { + uVar9 = (uVar9 - 1 >> 1) + 1; + if (uVar8 < 4) { + uVar5 = 0; + } + else { + dVar35 = param_3[1]; + dVar15 = *param_3; + dVar34 = param_3[2]; + dVar41 = param_3[3]; + dVar40 = param_3[4]; + uVar8 = 0; + dVar29 = param_3[5]; + dVar27 = param_3[6]; + dVar25 = param_3[7]; + dVar22 = param_3[8]; + dVar19 = param_3[9]; + dVar16 = param_3[10]; + dVar39 = param_3[0xb]; + dVar38 = param_3[0xc]; + dVar24 = param_3[0xd]; + dVar21 = param_3[0xe]; + dVar18 = param_3[0xf]; + dVar14 = param_3[0x10]; + dVar37 = param_3[0x11]; + dVar36 = param_3[0x12]; + dVar31 = param_3[0x13]; + pdVar4 = param_2; + pdVar6 = param_1; + do { + dVar17 = *pdVar6; + dVar23 = pdVar6[1]; + dVar28 = pdVar6[2]; + dVar32 = pdVar6[3]; + dVar20 = pdVar6[4]; + dVar26 = pdVar6[5]; + dVar30 = pdVar6[6]; + dVar33 = pdVar6[7]; + pdVar6 = pdVar6 + 8; + uVar8 = uVar8 + 1; + *pdVar4 = dVar23 * dVar35 + dVar17 * dVar15 + dVar28 * dVar34 + dVar32 * dVar41 + dVar40 + ; + pdVar4[1] = dVar23 * dVar27 + dVar17 * dVar29 + dVar28 * dVar25 + dVar32 * dVar22 + + dVar19; + pdVar4[2] = dVar23 * dVar39 + dVar17 * dVar16 + dVar28 * dVar38 + dVar32 * dVar24 + + dVar21; + pdVar4[3] = dVar23 * dVar14 + dVar17 * dVar18 + dVar28 * dVar37 + dVar32 * dVar36 + + dVar31; + pdVar4[4] = dVar26 * dVar35 + dVar20 * dVar15 + dVar30 * dVar34 + dVar33 * dVar41 + + dVar40; + pdVar4[5] = dVar26 * dVar27 + dVar20 * dVar29 + dVar30 * dVar25 + dVar33 * dVar22 + + dVar19; + pdVar4[6] = dVar26 * dVar39 + dVar20 * dVar16 + dVar30 * dVar38 + dVar33 * dVar24 + + dVar21; + pdVar4[7] = dVar26 * dVar14 + dVar20 * dVar18 + dVar30 * dVar37 + dVar33 * dVar36 + + dVar31; + pdVar4 = pdVar4 + 8; + } while (uVar8 < uVar9); + uVar5 = (ulong)(uVar9 * 8); + if (uVar13 == uVar9 * 2) { + return; + } + } + uVar5 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + dVar37 = *(double *)((long)param_1 + uVar5 + 8); + dVar15 = param_3[6]; + dVar36 = *(double *)((long)param_1 + uVar5); + dVar31 = param_3[5]; + dVar35 = *(double *)((long)param_1 + uVar5 + 0x10); + dVar18 = param_3[7]; + dVar34 = *(double *)((long)param_1 + uVar5 + 0x18); + dVar14 = param_3[8]; + dVar21 = param_3[9]; + *(double *)((long)param_2 + uVar5) = + dVar37 * param_3[1] + *param_3 * dVar36 + param_3[2] * dVar35 + param_3[3] * dVar34 + + param_3[4]; + *(double *)((long)param_2 + uVar5 + 8) = + dVar37 * dVar15 + dVar31 * dVar36 + dVar18 * dVar35 + dVar14 * dVar34 + dVar21; + dVar15 = param_3[0x10]; + dVar31 = param_3[0xf]; + dVar21 = param_3[0x11]; + dVar18 = param_3[0x12]; + dVar14 = param_3[0x13]; + *(double *)((long)param_2 + uVar5 + 0x10) = + dVar37 * param_3[0xb] + param_3[10] * dVar36 + param_3[0xc] * dVar35 + + param_3[0xd] * dVar34 + param_3[0xe]; + *(double *)((long)param_2 + uVar5 + 0x18) = + dVar37 * dVar15 + dVar31 * dVar36 + dVar21 * dVar35 + dVar18 * dVar34 + dVar14; + } + } + } + else if (0 < (int)param_4) { + uVar5 = -(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3; + uVar13 = 0; + do { + lVar12 = 0; + pdVar4 = param_3; + if (0 < iVar10) { + do { + dVar15 = *(double *)((long)pdVar4 + uVar5); + if (0 < iVar7) { + lVar11 = 0; + do { + pdVar6 = pdVar4 + lVar11; + pdVar1 = param_1 + lVar11; + lVar11 = lVar11 + 1; + dVar15 = dVar15 + *pdVar1 * *pdVar6; + } while ((int)lVar11 < iVar7); + } + param_2[lVar12] = dVar15; + lVar12 = lVar12 + 1; + pdVar4 = (double *)((long)pdVar4 + uVar5 + 8); + } while ((int)lVar12 < iVar10); + } + uVar13 = uVar13 + 1; + param_1 = (double *)((long)param_1 + uVar5); + param_2 = (double *) + ((long)param_2 + + (-(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3)); + } while (uVar13 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c5e88 (1116 bytes) name=FUN_002c5e88 + +void FUN_002c5e88(float *param_1,float *param_2,double *param_3,int param_4,int param_5, + ulong param_6) + +{ + int iVar1; + double *pdVar2; + double dVar3; + float *pfVar4; + int iVar5; + long lVar6; + long lVar7; + double *pdVar8; + int iVar9; + double dVar10; + double dVar11; + float fVar12; + double dVar13; + double dVar14; + float fVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + + dVar3 = DAT_002c62e8; + iVar5 = (int)param_6; + if ((param_5 == 2) && (iVar5 == 2)) { + if (param_4 * 2 < 1) { + return; + } + dVar21 = param_3[6]; + pfVar4 = param_1 + 1; + dVar17 = param_3[7]; + dVar16 = param_3[8]; + do { + while( true ) { + dVar14 = (double)*pfVar4; + dVar11 = (double)pfVar4[-1]; + dVar10 = dVar14 * dVar17 + dVar21 * dVar11 + dVar16; + if (ABS(dVar10) <= dVar3) break; + dVar10 = 1.0 / dVar10; + pfVar4 = pfVar4 + 2; + dVar23 = param_3[4]; + dVar24 = param_3[3]; + dVar13 = param_3[5]; + *param_2 = (float)(dVar10 * (dVar14 * param_3[1] + *param_3 * dVar11 + param_3[2])); + param_2[1] = (float)(dVar10 * (dVar14 * dVar23 + dVar24 * dVar11 + dVar13)); + param_2 = param_2 + 2; + if (pfVar4 == param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3) { + return; + } + } + pfVar4 = pfVar4 + 2; + param_2[1] = 0.0; + *param_2 = 0.0; + param_2 = param_2 + 2; + } while (pfVar4 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + if (param_5 == 3) { + if (iVar5 == 3) { + if (param_4 * 3 < 1) { + return; + } + dVar10 = param_3[0xc]; + dVar21 = param_3[0xd]; + iVar5 = 0; + dVar17 = param_3[0xe]; + dVar16 = param_3[0xf]; + do { + dVar23 = (double)param_1[1]; + dVar13 = (double)*param_1; + dVar14 = (double)param_1[2]; + dVar11 = dVar23 * dVar21 + dVar10 * dVar13 + dVar17 * dVar14 + dVar16; + if (dVar3 < ABS(dVar11)) { + dVar11 = 1.0 / dVar11; + dVar18 = param_3[5]; + dVar25 = param_3[9]; + dVar26 = param_3[8]; + dVar19 = param_3[4]; + dVar24 = param_3[6]; + dVar27 = param_3[10]; + dVar22 = param_3[7]; + dVar20 = param_3[0xb]; + *param_2 = (float)(dVar11 * (dVar23 * param_3[1] + *param_3 * dVar13 + param_3[2] * dVar14 + + param_3[3])); + param_2[1] = (float)(dVar11 * (dVar23 * dVar18 + dVar19 * dVar13 + dVar24 * dVar14 + + dVar22)); + param_2[2] = (float)(dVar11 * (dVar23 * dVar25 + dVar26 * dVar13 + dVar27 * dVar14 + + dVar20)); + } + else { + param_2[2] = 0.0; + param_2[1] = 0.0; + *param_2 = 0.0; + } + iVar5 = iVar5 + 3; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar5 < param_4 * 3); + return; + } + if (iVar5 == 2) { + if (param_4 < 1) { + return; + } + dVar10 = param_3[8]; + dVar21 = param_3[9]; + dVar17 = param_3[10]; + dVar16 = param_3[0xb]; + pfVar4 = param_1 + ((ulong)(param_4 - 1) + 1) * 3; + do { + dVar23 = (double)param_1[1]; + dVar13 = (double)*param_1; + fVar15 = 0.0; + dVar14 = (double)param_1[2]; + dVar11 = dVar23 * dVar21 + dVar10 * dVar13 + dVar17 * dVar14 + dVar16; + fVar12 = fVar15; + if (dVar3 < ABS(dVar11)) { + dVar11 = 1.0 / dVar11; + fVar12 = (float)(dVar11 * (dVar23 * param_3[1] + *param_3 * dVar13 + param_3[2] * dVar14 + + param_3[3])); + fVar15 = (float)(dVar11 * (dVar23 * param_3[5] + param_3[4] * dVar13 + param_3[6] * dVar14 + + param_3[7])); + } + param_1 = param_1 + 3; + param_2[1] = fVar15; + *param_2 = fVar12; + param_2 = param_2 + 2; + } while (param_1 != pfVar4); + return; + } + } + if (0 < param_4) { + iVar1 = iVar5 + param_5 * iVar5; + dVar16 = param_3[(long)iVar1 + (long)param_5]; + iVar9 = 0; + do { + dVar17 = dVar16; + if (0 < param_5) { + lVar6 = 0; + do { + pfVar4 = param_1 + lVar6; + lVar7 = iVar1 + lVar6; + lVar6 = lVar6 + 1; + dVar17 = dVar17 + (double)*pfVar4 * param_3[lVar7]; + } while ((int)lVar6 < param_5); + } + if (dVar3 < ABS(dVar17)) { + if (0 < iVar5) { + lVar6 = 0; + pdVar8 = param_3; + do { + dVar21 = pdVar8[param_5]; + if (0 < param_5) { + lVar7 = 0; + do { + pfVar4 = param_1 + lVar7; + pdVar2 = pdVar8 + lVar7; + lVar7 = lVar7 + 1; + dVar21 = dVar21 + (double)*pfVar4 * *pdVar2; + } while ((int)lVar7 < param_5); + } + pdVar8 = pdVar8 + (long)param_5 + 1; + param_2[lVar6] = (float)(dVar17 * dVar21); + lVar6 = lVar6 + 1; + } while ((int)lVar6 < iVar5); + } + } + else if (0 < iVar5) { + memset(param_2,0,((ulong)(iVar5 - 1) + 1) * 4); + } + iVar9 = iVar9 + 1; + param_1 = param_1 + param_5; + param_2 = (float *)((long)param_2 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2) + ); + } while (iVar9 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c62f0 (1048 bytes) name=FUN_002c62f0 + +void FUN_002c62f0(double *param_1,double *param_2,double *param_3,int param_4,ulong param_5, + ulong param_6) + +{ + int iVar1; + double *pdVar2; + double *pdVar3; + double dVar4; + double *pdVar5; + int iVar6; + int iVar7; + long lVar8; + long lVar9; + ulong uVar10; + int iVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + + dVar4 = DAT_002c6708; + iVar7 = (int)param_6; + iVar6 = (int)param_5; + if ((iVar6 == 2) && (iVar7 == 2)) { + if (param_4 * 2 < 1) { + return; + } + pdVar5 = param_1 + 1; + do { + while( true ) { + dVar14 = *pdVar5; + dVar13 = pdVar5[-1]; + dVar12 = dVar14 * param_3[7] + param_3[6] * dVar13 + param_3[8]; + if (ABS(dVar12) <= dVar4) break; + dVar12 = 1.0 / dVar12; + pdVar5 = pdVar5 + 2; + *param_2 = dVar12 * (dVar14 * param_3[1] + *param_3 * dVar13 + param_3[2]); + param_2[1] = dVar12 * (dVar14 * param_3[4] + param_3[3] * dVar13 + param_3[5]); + param_2 = param_2 + 2; + if (pdVar5 == param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3) { + return; + } + } + pdVar5 = pdVar5 + 2; + param_2[1] = 0.0; + *param_2 = 0.0; + param_2 = param_2 + 2; + } while (pdVar5 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + if (iVar6 == 3) { + if (iVar7 == 3) { + if (param_4 * 3 < 1) { + return; + } + iVar6 = 0; + do { + dVar15 = param_1[1]; + dVar14 = *param_1; + dVar13 = param_1[2]; + dVar12 = dVar15 * param_3[0xd] + param_3[0xc] * dVar14 + param_3[0xe] * dVar13 + + param_3[0xf]; + if (dVar4 < ABS(dVar12)) { + dVar12 = 1.0 / dVar12; + *param_2 = dVar12 * (dVar15 * param_3[1] + *param_3 * dVar14 + param_3[2] * dVar13 + + param_3[3]); + param_2[1] = dVar12 * (dVar15 * param_3[5] + param_3[4] * dVar14 + param_3[6] * dVar13 + + param_3[7]); + param_2[2] = dVar12 * (dVar15 * param_3[9] + param_3[8] * dVar14 + param_3[10] * dVar13 + + param_3[0xb]); + } + else { + param_2[2] = 0.0; + param_2[1] = 0.0; + *param_2 = 0.0; + } + iVar6 = iVar6 + 3; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar6 < param_4 * 3); + return; + } + if (iVar7 == 2) { + if (param_4 < 1) { + return; + } + pdVar5 = param_1 + ((ulong)(param_4 - 1) + 1) * 3; + do { + dVar15 = param_1[1]; + dVar14 = *param_1; + dVar13 = param_1[2]; + dVar12 = dVar15 * param_3[9] + param_3[8] * dVar14 + param_3[10] * dVar13 + param_3[0xb]; + if (dVar4 < ABS(dVar12)) { + dVar12 = 1.0 / dVar12; + *param_2 = dVar12 * (dVar15 * param_3[1] + *param_3 * dVar14 + param_3[2] * dVar13 + + param_3[3]); + param_2[1] = dVar12 * (dVar15 * param_3[5] + param_3[4] * dVar14 + param_3[6] * dVar13 + + param_3[7]); + } + else { + param_2[1] = 0.0; + *param_2 = 0.0; + } + param_1 = param_1 + 3; + param_2 = param_2 + 2; + } while (param_1 != pdVar5); + return; + } + } + if (0 < param_4) { + uVar10 = -(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3; + iVar1 = iVar7 + iVar6 * iVar7; + iVar11 = 0; + do { + dVar12 = *(double *)((long)param_3 + uVar10 + (long)iVar1 * 8); + if (0 < iVar6) { + lVar8 = 0; + do { + lVar9 = iVar1 + lVar8; + pdVar5 = param_1 + lVar8; + lVar8 = lVar8 + 1; + dVar12 = dVar12 + *pdVar5 * param_3[lVar9]; + } while ((int)lVar8 < iVar6); + } + if (dVar4 < ABS(dVar12)) { + if (0 < iVar7) { + lVar8 = 0; + pdVar5 = param_3; + do { + dVar13 = *(double *)((long)pdVar5 + uVar10); + if (0 < iVar6) { + lVar9 = 0; + do { + pdVar2 = pdVar5 + lVar9; + pdVar3 = param_1 + lVar9; + lVar9 = lVar9 + 1; + dVar13 = dVar13 + *pdVar3 * *pdVar2; + } while ((int)lVar9 < iVar6); + } + pdVar5 = (double *)((long)pdVar5 + uVar10 + 8); + param_2[lVar8] = dVar12 * dVar13; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < iVar7); + } + } + else if (0 < iVar7) { + memset(param_2,0,((ulong)(iVar7 - 1) + 1) * 8); + } + iVar11 = iVar11 + 1; + param_1 = (double *)((long)param_1 + uVar10); + param_2 = (double *) + ((long)param_2 + + (-(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3)); + } while (iVar11 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c6710 (236 bytes) name=FUN_002c6710 + +undefined1 [16] FUN_002c6710(ushort *param_1,long param_2,int param_3) + +{ + ushort *puVar1; + uint uVar2; + long lVar3; + long lVar4; + ushort *puVar5; + ulong uVar6; + ushort *puVar7; + ulong uVar8; + double dVar9; + undefined1 auVar10 [16]; + + if (param_3 < 4) { + dVar9 = 0.0; + uVar8 = 0; + } + else { + dVar9 = 0.0; + uVar2 = param_3 - 4U >> 2; + puVar5 = (ushort *)(param_2 + 2); + puVar7 = param_1; + do { + puVar1 = puVar5 + 4; + dVar9 = dVar9 + (double)puVar7[1] * (double)*puVar5 + (double)puVar5[-1] * (double)*puVar7 + + (double)puVar5[1] * (double)puVar7[2] + (double)puVar5[2] * (double)puVar7[3]; + puVar5 = puVar1; + puVar7 = puVar7 + 4; + } while (puVar1 != (ushort *)(param_2 + (ulong)uVar2 * 8 + 10)); + uVar8 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar8 < param_3) { + uVar6 = -(uVar8 >> 0x1f) & 0xfffffffe00000000 | uVar8 << 1; + lVar4 = 0; + do { + lVar3 = lVar4 + uVar6; + puVar5 = (ushort *)(param_2 + uVar6 + lVar4); + lVar4 = lVar4 + 2; + dVar9 = dVar9 + (double)*puVar5 * (double)*(ushort *)((long)param_1 + lVar3); + } while (lVar4 != ((ulong)(uint)((param_3 + -1) - (int)uVar8) + 1) * 2); + } + auVar10._8_8_ = 0; + auVar10._0_8_ = dVar9; + return auVar10; +} + + +================================================================== + +### FUNC 002c67fc (236 bytes) name=FUN_002c67fc + +undefined1 [16] FUN_002c67fc(short *param_1,long param_2,int param_3) + +{ + short *psVar1; + uint uVar2; + long lVar3; + long lVar4; + short *psVar5; + ulong uVar6; + short *psVar7; + ulong uVar8; + double dVar9; + undefined1 auVar10 [16]; + + if (param_3 < 4) { + dVar9 = 0.0; + uVar8 = 0; + } + else { + dVar9 = 0.0; + uVar2 = param_3 - 4U >> 2; + psVar5 = (short *)(param_2 + 2); + psVar7 = param_1; + do { + psVar1 = psVar5 + 4; + /* catch() { ... } // from try @ 002c69a4 with catch @ 002c6838 */ + dVar9 = dVar9 + (double)(int)psVar7[1] * (double)(int)*psVar5 + + (double)(int)psVar5[-1] * (double)(int)*psVar7 + + (double)(int)psVar5[1] * (double)(int)psVar7[2] + + (double)(int)psVar5[2] * (double)(int)psVar7[3]; + psVar5 = psVar1; + psVar7 = psVar7 + 4; + } while (psVar1 != (short *)(param_2 + (ulong)uVar2 * 8 + 10)); + uVar8 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar8 < param_3) { + uVar6 = -(uVar8 >> 0x1f) & 0xfffffffe00000000 | uVar8 << 1; + lVar4 = 0; + do { + lVar3 = lVar4 + uVar6; + psVar5 = (short *)(param_2 + uVar6 + lVar4); + lVar4 = lVar4 + 2; + dVar9 = dVar9 + (double)(int)*psVar5 * (double)(int)*(short *)((long)param_1 + lVar3); + } while (lVar4 != ((ulong)(uint)((param_3 + -1) - (int)uVar8) + 1) * 2); + } + auVar10._8_8_ = 0; + auVar10._0_8_ = dVar9; + return auVar10; +} + + +================================================================== + +### FUNC 002c68e8 (236 bytes) name=FUN_002c68e8 + +undefined1 [16] FUN_002c68e8(int *param_1,long param_2,int param_3) + +{ + int *piVar1; + uint uVar2; + long lVar3; + long lVar4; + int *piVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + double dVar9; + undefined1 auVar10 [16]; + + if (param_3 < 4) { + dVar9 = 0.0; + uVar8 = 0; + } + else { + dVar9 = 0.0; + uVar2 = param_3 - 4U >> 2; + piVar5 = (int *)(param_2 + 4); + piVar7 = param_1; + do { + piVar1 = piVar5 + 4; + /* try { // try from 002c692c to 003c692f has its CatchHandler @ 002c6954 */ + /* try { // try from 002c693c to 003c693f has its CatchHandler @ 002c69d8 */ + /* try { // try from 002c694c to 003c694f has its CatchHandler @ 002c69a8 */ + /* catch() { ... } // from try @ 002c692c with catch @ 002c6954 */ + dVar9 = dVar9 + (double)piVar7[1] * (double)*piVar5 + (double)piVar5[-1] * (double)*piVar7 + + (double)piVar5[1] * (double)piVar7[2] + (double)piVar5[2] * (double)piVar7[3]; + piVar5 = piVar1; + piVar7 = piVar7 + 4; + } while (piVar1 != (int *)(param_2 + (ulong)uVar2 * 0x10 + 0x14)); + uVar8 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar8 < param_3) { + uVar6 = -(uVar8 >> 0x1f) & 0xfffffffc00000000 | uVar8 << 2; + lVar4 = 0; + do { + lVar3 = lVar4 + uVar6; + /* try { // try from 002c69a4 to 003c69a7 has its CatchHandler @ 002c6838 */ + /* catch() { ... } // from try @ 002c694c with catch @ 002c69a8 */ + piVar5 = (int *)(param_2 + uVar6 + lVar4); + lVar4 = lVar4 + 4; + dVar9 = dVar9 + (double)*piVar5 * (double)*(int *)((long)param_1 + lVar3); + } while (lVar4 != ((ulong)(uint)((param_3 + -1) - (int)uVar8) + 1) * 4); + } + auVar10._8_8_ = 0; + auVar10._0_8_ = dVar9; + return auVar10; +} + + +================================================================== + +### FUNC 002c69d4 (200 bytes) name=FUN_002c69d4 + +undefined1 [16] FUN_002c69d4(double *param_1,long param_2,int param_3) + +{ + double *pdVar1; + uint uVar2; + long lVar3; + long lVar4; + double *pdVar5; + ulong uVar6; + double *pdVar7; + ulong uVar8; + double dVar9; + undefined1 auVar10 [16]; + + /* catch() { ... } // from try @ 002c693c with catch @ 002c69d8 */ + if (param_3 < 4) { + dVar9 = 0.0; + uVar6 = 0; + } + else { + uVar2 = param_3 - 4U >> 2; + dVar9 = 0.0; + pdVar5 = (double *)(param_2 + 8); + pdVar7 = param_1; + do { + pdVar1 = pdVar5 + 4; + dVar9 = dVar9 + pdVar7[1] * *pdVar5 + pdVar5[-1] * *pdVar7 + pdVar5[1] * pdVar7[2] + + pdVar5[2] * pdVar7[3]; + pdVar5 = pdVar1; + pdVar7 = pdVar7 + 4; + } while (pdVar1 != (double *)(param_2 + (ulong)uVar2 * 0x20 + 0x28)); + uVar6 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar6 < param_3) { + uVar8 = -(uVar6 >> 0x1f) & 0xfffffff800000000 | uVar6 << 3; + lVar4 = 0; + do { + lVar3 = lVar4 + uVar8; + pdVar5 = (double *)(param_2 + uVar8 + lVar4); + lVar4 = lVar4 + 8; + dVar9 = dVar9 + *pdVar5 * *(double *)((long)param_1 + lVar3); + } while (lVar4 != ((ulong)(uint)((param_3 + -1) - (int)uVar6) + 1) * 8); + } + auVar10._8_8_ = 0; + auVar10._0_8_ = dVar9; + return auVar10; +} + + +================================================================== + +### FUNC 002c6a9c (1084 bytes) name=FUN_002c6a9c + +void FUN_002c6a9c(int *param_1,undefined4 *param_2,double *param_3,int param_4,int param_5, + uint param_6) + +{ + int iVar1; + double *pdVar2; + long lVar3; + long lVar4; + long lVar5; + int *piVar6; + int *piVar7; + undefined4 *puVar8; + double *pdVar9; + undefined4 *puVar10; + int iVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + + if ((param_5 == 2) && (param_6 == 2)) { + if (param_4 * 2 < 1) { + return; + } + piVar6 = param_1 + 1; + puVar8 = param_2 + 1; + do { + iVar11 = piVar6[-1]; + piVar7 = piVar6 + 2; + iVar1 = *piVar6; + lVar3 = lrint((double)iVar1 * param_3[1] + *param_3 * (double)iVar11 + param_3[2]); + lVar4 = lrint((double)iVar1 * param_3[4] + param_3[3] * (double)iVar11 + param_3[5]); + puVar8[-1] = (int)lVar3; + *puVar8 = (int)lVar4; + piVar6 = piVar7; + puVar8 = puVar8 + 2; + } while (piVar7 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + if (param_5 == 3) { + if (param_6 == 3) { + if (param_4 * 3 < 1) { + return; + } + iVar11 = 0; + do { + iVar1 = *param_1; + iVar11 = iVar11 + 3; + piVar6 = param_1 + 2; + dVar14 = (double)param_1[1]; + param_1 = param_1 + 3; + dVar13 = (double)iVar1; + dVar12 = (double)*piVar6; + lVar3 = lrint(dVar14 * param_3[1] + *param_3 * dVar13 + param_3[2] * dVar12 + param_3[3]); + lVar4 = lrint(dVar14 * param_3[5] + param_3[4] * dVar13 + param_3[6] * dVar12 + param_3[7]); + lVar5 = lrint(dVar14 * param_3[9] + param_3[8] * dVar13 + param_3[10] * dVar12 + + param_3[0xb]); + *param_2 = (int)lVar3; + param_2[1] = (int)lVar4; + param_2[2] = (int)lVar5; + param_2 = param_2 + 3; + } while (iVar11 < param_4 * 3); + return; + } + if (param_6 == 1) { + if (param_4 < 1) { + return; + } + piVar6 = param_1; + do { + piVar7 = piVar6 + 3; + lVar3 = lrint((double)piVar6[1] * param_3[1] + (double)*piVar6 * *param_3 + + (double)piVar6[2] * param_3[2] + param_3[3]); + *param_2 = (int)lVar3; + piVar6 = piVar7; + param_2 = param_2 + 1; + } while (piVar7 != param_1 + ((ulong)(param_4 - 1) + 1) * 3); + return; + } + } + if ((param_5 == 4) && (param_6 == 4)) { + if (0 < param_4 * 4) { + puVar8 = param_2 + 1; + do { + puVar10 = puVar8 + 4; + dVar16 = (double)param_1[1]; + dVar15 = (double)*param_1; + dVar14 = (double)param_1[2]; + dVar13 = (double)param_1[3]; + lVar3 = lrint(dVar16 * param_3[1] + *param_3 * dVar15 + param_3[2] * dVar14 + + param_3[3] * dVar13 + param_3[4]); + lVar4 = lrint(dVar16 * param_3[6] + param_3[5] * dVar15 + param_3[7] * dVar14 + + param_3[8] * dVar13 + param_3[9]); + puVar8[-1] = (int)lVar3; + dVar12 = param_3[0xb]; + *puVar8 = (int)lVar4; + lVar3 = lrint(dVar16 * dVar12 + param_3[10] * dVar15 + param_3[0xc] * dVar14 + + param_3[0xd] * dVar13 + param_3[0xe]); + lVar4 = lrint(dVar16 * param_3[0x10] + param_3[0xf] * dVar15 + param_3[0x11] * dVar14 + + param_3[0x12] * dVar13 + param_3[0x13]); + puVar8[1] = (int)lVar3; + puVar8[2] = (int)lVar4; + param_1 = param_1 + 4; + puVar8 = puVar10; + } while (puVar10 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 5); + } + } + else if (0 < param_4) { + iVar11 = 0; + do { + if (0 < (int)param_6) { + pdVar9 = param_3; + puVar8 = param_2; + do { + dVar12 = pdVar9[param_5]; + if (0 < param_5) { + lVar3 = 0; + do { + piVar6 = param_1 + lVar3; + pdVar2 = pdVar9 + lVar3; + lVar3 = lVar3 + 1; + dVar12 = dVar12 + (double)*piVar6 * *pdVar2; + } while ((int)lVar3 < param_5); + } + lVar3 = lrint(dVar12); + puVar10 = puVar8 + 1; + *puVar8 = (int)lVar3; + pdVar9 = pdVar9 + (long)param_5 + 1; + puVar8 = puVar10; + } while (param_2 + (ulong)(param_6 - 1) + 1 != puVar10); + } + iVar11 = iVar11 + 1; + param_1 = param_1 + param_5; + param_2 = (undefined4 *) + ((long)param_2 + + (-(ulong)(param_6 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_6 << 2)); + } while (iVar11 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c6ed8 (1444 bytes) name=FUN_002c6ed8 + +void FUN_002c6ed8(short *param_1,undefined2 *param_2,float *param_3,int param_4,int param_5, + uint param_6) + +{ + short *psVar1; + short sVar2; + short sVar3; + float *pfVar4; + long lVar5; + undefined2 uVar6; + undefined2 uVar7; + undefined2 *puVar8; + short *psVar9; + undefined2 uVar10; + undefined2 uVar11; + float *pfVar12; + undefined2 *puVar13; + undefined2 uVar14; + float fVar15; + float fVar16; + float fVar17; + int iVar18; + float fVar19; + float fVar20; + float fVar21; + + if ((param_5 == 2) && (param_6 == 2)) { + if (param_4 * 2 < 1) { + return; + } + puVar8 = param_2 + 1; + psVar9 = param_1 + 1; + do { + sVar2 = *psVar9; + psVar1 = psVar9 + 2; + sVar3 = psVar9[-1]; + lVar5 = lrintf((float)(int)sVar2 * param_3[1] + *param_3 * (float)(int)sVar3 + param_3[2]); + uVar10 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar10 = 0x7fff, (int)lVar5 < 1)) { + uVar10 = 0x8000; + } + lVar5 = lrintf((float)(int)sVar2 * param_3[4] + param_3[3] * (float)(int)sVar3 + param_3[5]); + uVar6 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar6 = 0x7fff, (int)lVar5 < 1)) { + uVar6 = 0x8000; + } + puVar8[-1] = uVar10; + *puVar8 = uVar6; + puVar8 = puVar8 + 2; + psVar9 = psVar1; + } while (psVar1 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + if (param_5 == 3) { + if (param_6 == 3) { + if (param_4 * 3 < 1) { + return; + } + iVar18 = 0; + do { + iVar18 = iVar18 + 3; + fVar20 = (float)(int)param_1[1]; + fVar19 = (float)(int)*param_1; + fVar17 = (float)(int)param_1[2]; + lVar5 = lrintf(fVar20 * param_3[1] + *param_3 * fVar19 + param_3[2] * fVar17 + param_3[3]); + uVar6 = 0x8000; + uVar11 = 0x7fff; + uVar10 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar10 = uVar11, (int)lVar5 < 1)) { + uVar10 = uVar6; + } + lVar5 = lrintf(fVar20 * param_3[5] + param_3[4] * fVar19 + param_3[6] * fVar17 + param_3[7]) + ; + uVar14 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar14 = uVar11, (int)lVar5 < 1)) { + uVar14 = uVar6; + } + lVar5 = lrintf(fVar20 * param_3[9] + param_3[8] * fVar19 + param_3[10] * fVar17 + + param_3[0xb]); + uVar7 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar7 = uVar11, (int)lVar5 < 1)) { + uVar7 = uVar6; + } + *param_2 = uVar10; + param_2[1] = uVar14; + param_2[2] = uVar7; + param_2 = param_2 + 3; + param_1 = param_1 + 3; + } while (iVar18 < param_4 * 3); + return; + } + if (param_6 == 1) { + if (param_4 < 1) { + return; + } + psVar9 = param_1; + do { + psVar1 = psVar9 + 3; + lVar5 = lrintf((float)(int)psVar9[1] * param_3[1] + (float)(int)*psVar9 * *param_3 + + (float)(int)psVar9[2] * param_3[2] + param_3[3]); + uVar10 = (undefined2)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar10 = 0x7fff, (int)lVar5 < 1)) { + uVar10 = 0x8000; + } + *param_2 = uVar10; + param_2 = param_2 + 1; + psVar9 = psVar1; + } while (psVar1 != param_1 + ((ulong)(param_4 - 1) + 1) * 3); + return; + } + } + if ((param_5 == 4) && (param_6 == 4)) { + if (0 < param_4 * 4) { + puVar8 = param_2 + 2; + do { + fVar21 = (float)(int)param_1[1]; + fVar20 = (float)(int)*param_1; + fVar19 = (float)(int)param_1[2]; + fVar17 = (float)(int)param_1[3]; + lVar5 = lrintf(fVar21 * param_3[1] + *param_3 * fVar20 + param_3[2] * fVar19 + + param_3[3] * fVar17 + param_3[4]); + uVar6 = 0x8000; + uVar11 = 0x7fff; + uVar10 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar10 = uVar11, (int)lVar5 < 1)) { + uVar10 = uVar6; + } + lVar5 = lrintf(fVar21 * param_3[6] + param_3[5] * fVar20 + param_3[7] * fVar19 + + param_3[8] * fVar17 + param_3[9]); + uVar14 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar14 = uVar11, (int)lVar5 < 1)) { + uVar14 = uVar6; + } + fVar15 = param_3[0xb]; + puVar8[-2] = uVar10; + fVar16 = param_3[10]; + puVar8[-1] = uVar14; + lVar5 = lrintf(fVar21 * fVar15 + fVar16 * fVar20 + param_3[0xc] * fVar19 + + param_3[0xd] * fVar17 + param_3[0xe]); + uVar10 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar10 = uVar11, (int)lVar5 < 1)) { + uVar10 = uVar6; + } + lVar5 = lrintf(fVar21 * param_3[0x10] + param_3[0xf] * fVar20 + param_3[0x11] * fVar19 + + param_3[0x12] * fVar17 + param_3[0x13]); + uVar14 = (short)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar14 = uVar11, (int)lVar5 < 1)) { + uVar14 = uVar6; + } + *puVar8 = uVar10; + puVar13 = puVar8 + 4; + puVar8[1] = uVar14; + puVar8 = puVar13; + param_1 = param_1 + 4; + } while (puVar13 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + iVar18 = 0; + do { + if (0 < (int)param_6) { + pfVar12 = param_3; + puVar8 = param_2; + do { + fVar17 = pfVar12[param_5]; + if (0 < param_5) { + lVar5 = 0; + do { + psVar9 = param_1 + lVar5; + pfVar4 = pfVar12 + lVar5; + lVar5 = lVar5 + 1; + fVar17 = fVar17 + (float)(int)*psVar9 * *pfVar4; + } while ((int)lVar5 < param_5); + } + lVar5 = lrintf(fVar17); + uVar10 = (undefined2)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar10 = 0x7fff, (int)lVar5 < 1)) { + uVar10 = 0x8000; + } + puVar13 = puVar8 + 1; + *puVar8 = uVar10; + pfVar12 = pfVar12 + (long)param_5 + 1; + puVar8 = puVar13; + } while (param_2 + (ulong)(param_6 - 1) + 1 != puVar13); + } + iVar18 = iVar18 + 1; + param_1 = param_1 + param_5; + param_2 = (undefined2 *) + ((long)param_2 + + (-(ulong)(param_6 >> 0x1f) & 0xfffffffe00000000 | (ulong)param_6 << 1)); + } while (iVar18 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c747c (1360 bytes) name=FUN_002c747c + +void FUN_002c747c(ushort *param_1,short *param_2,float *param_3,int param_4,int param_5,uint param_6 + ) + +{ + ushort uVar1; + ushort uVar2; + short sVar3; + short sVar4; + short sVar5; + float *pfVar6; + uint uVar7; + uint uVar8; + long lVar9; + ushort *puVar10; + short *psVar11; + float *pfVar12; + short *psVar13; + float fVar14; + float fVar15; + float fVar16; + int iVar17; + float fVar18; + float fVar19; + float fVar20; + + if ((param_5 == 2) && (param_6 == 2)) { + if (param_4 * 2 < 1) { + return; + } + puVar10 = param_1 + 1; + psVar11 = param_2 + 1; + do { + uVar1 = *puVar10; + uVar2 = puVar10[-1]; + lVar9 = lrintf((float)uVar1 * param_3[1] + *param_3 * (float)uVar2 + param_3[2]); + sVar3 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar3 = -(ushort)(0 < (int)(uint)lVar9); + } + lVar9 = lrintf((float)uVar1 * param_3[4] + param_3[3] * (float)uVar2 + param_3[5]); + sVar4 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar4 = -(ushort)(0 < (int)(uint)lVar9); + } + psVar11[-1] = sVar3; + puVar10 = puVar10 + 2; + *psVar11 = sVar4; + psVar11 = psVar11 + 2; + } while (puVar10 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + if (param_5 == 3) { + if (param_6 == 3) { + if (param_4 * 3 < 1) { + return; + } + iVar17 = 0; + do { + fVar19 = (float)param_1[1]; + fVar18 = (float)*param_1; + fVar16 = (float)param_1[2]; + lVar9 = lrintf(fVar19 * param_3[1] + *param_3 * fVar18 + param_3[2] * fVar16 + param_3[3]); + sVar3 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar3 = -(ushort)(0 < (int)(uint)lVar9); + } + lVar9 = lrintf(fVar19 * param_3[5] + param_3[4] * fVar18 + param_3[6] * fVar16 + param_3[7]) + ; + sVar4 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar4 = -(ushort)(0 < (int)(uint)lVar9); + } + lVar9 = lrintf(fVar19 * param_3[9] + param_3[8] * fVar18 + param_3[10] * fVar16 + + param_3[0xb]); + sVar5 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar5 = -(ushort)(0 < (int)(uint)lVar9); + } + iVar17 = iVar17 + 3; + *param_2 = sVar3; + param_2[1] = sVar4; + param_2[2] = sVar5; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar17 < param_4 * 3); + return; + } + if (param_6 == 1) { + if (param_4 < 1) { + return; + } + puVar10 = param_1 + ((ulong)(param_4 - 1) + 1) * 3; + do { + lVar9 = lrintf((float)param_1[1] * param_3[1] + (float)*param_1 * *param_3 + + (float)param_1[2] * param_3[2] + param_3[3]); + sVar3 = (short)lVar9; + if (0xffff < (uint)lVar9) { + sVar3 = -(ushort)(0 < (int)(uint)lVar9); + } + param_1 = param_1 + 3; + *param_2 = sVar3; + param_2 = param_2 + 1; + } while (param_1 != puVar10); + return; + } + } + if ((param_5 == 4) && (param_6 == 4)) { + if (0 < param_4 * 4) { + psVar11 = param_2 + 2; + do { + fVar20 = (float)param_1[1]; + fVar19 = (float)*param_1; + fVar18 = (float)param_1[2]; + fVar16 = (float)param_1[3]; + lVar9 = lrintf(fVar20 * param_3[1] + *param_3 * fVar19 + param_3[2] * fVar18 + + param_3[3] * fVar16 + param_3[4]); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar9 = lrintf(fVar20 * param_3[6] + param_3[5] * fVar19 + param_3[7] * fVar18 + + param_3[8] * fVar16 + param_3[9]); + uVar8 = (uint)lVar9; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + fVar14 = param_3[0xb]; + fVar15 = param_3[10]; + psVar11[-2] = (short)uVar7; + psVar11[-1] = (short)uVar8; + lVar9 = lrintf(fVar20 * fVar14 + fVar15 * fVar19 + param_3[0xc] * fVar18 + + param_3[0xd] * fVar16 + param_3[0xe]); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + lVar9 = lrintf(fVar20 * param_3[0x10] + param_3[0xf] * fVar19 + param_3[0x11] * fVar18 + + param_3[0x12] * fVar16 + param_3[0x13]); + uVar8 = (uint)lVar9; + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *psVar11 = (short)uVar7; + psVar13 = psVar11 + 4; + param_1 = param_1 + 4; + psVar11[1] = (short)uVar8; + psVar11 = psVar13; + } while (psVar13 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + iVar17 = 0; + do { + if (0 < (int)param_6) { + pfVar12 = param_3; + psVar11 = param_2; + do { + fVar16 = pfVar12[param_5]; + if (0 < param_5) { + lVar9 = 0; + do { + puVar10 = param_1 + lVar9; + pfVar6 = pfVar12 + lVar9; + lVar9 = lVar9 + 1; + fVar16 = fVar16 + (float)*puVar10 * *pfVar6; + } while ((int)lVar9 < param_5); + } + lVar9 = lrintf(fVar16); + uVar7 = (uint)lVar9; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + psVar13 = psVar11 + 1; + *psVar11 = (short)uVar7; + pfVar12 = pfVar12 + (long)param_5 + 1; + psVar11 = psVar13; + } while (param_2 + (ulong)(param_6 - 1) + 1 != psVar13); + } + iVar17 = iVar17 + 1; + param_1 = param_1 + param_5; + param_2 = (short *)((long)param_2 + + (-(ulong)(param_6 >> 0x1f) & 0xfffffffe00000000 | (ulong)param_6 << 1)); + } while (iVar17 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c79cc (1416 bytes) name=FUN_002c79cc + +void FUN_002c79cc(byte *param_1,undefined1 *param_2,float *param_3,int param_4,int param_5, + int param_6) + +{ + byte *pbVar1; + byte bVar2; + byte bVar3; + float *pfVar4; + long lVar5; + undefined1 uVar6; + undefined1 uVar7; + byte *pbVar8; + undefined1 *puVar9; + float *pfVar10; + undefined1 uVar11; + undefined1 uVar12; + undefined1 uVar13; + undefined1 *puVar14; + float fVar15; + int iVar16; + float fVar17; + float fVar18; + float fVar19; + + if ((param_5 == 2) && (param_6 == 2)) { + if (param_4 * 2 < 1) { + return; + } + pbVar8 = param_1 + 1; + puVar9 = param_2 + 1; + do { + bVar2 = *pbVar8; + pbVar1 = pbVar8 + 2; + bVar3 = pbVar8[-1]; + lVar5 = lrintf((float)(int)(char)bVar2 * param_3[1] + *param_3 * (float)bVar3 + param_3[2]); + uVar12 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = 0x7f, (int)lVar5 < 1)) { + uVar12 = 0x80; + } + lVar5 = lrintf((float)(int)(char)bVar2 * param_3[4] + param_3[3] * (float)bVar3 + param_3[5]); + uVar6 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar6 = 0x7f, (int)lVar5 < 1)) { + uVar6 = 0x80; + } + puVar9[-1] = uVar12; + *puVar9 = uVar6; + pbVar8 = pbVar1; + puVar9 = puVar9 + 2; + } while (pbVar1 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + if (param_5 == 3) { + if (param_6 == 3) { + pbVar8 = param_1; + if (param_4 * 3 < 1) { + return; + } + do { + pbVar1 = pbVar8 + 3; + fVar18 = (float)(int)(char)pbVar8[1]; + fVar17 = (float)*pbVar8; + fVar15 = (float)pbVar8[2]; + lVar5 = lrintf(fVar18 * param_3[1] + *param_3 * fVar17 + param_3[2] * fVar15 + param_3[3]); + uVar6 = 0x80; + uVar11 = 0x7f; + uVar12 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = uVar11, (int)lVar5 < 1)) { + uVar12 = uVar6; + } + lVar5 = lrintf(fVar18 * param_3[5] + param_3[4] * fVar17 + param_3[6] * fVar15 + param_3[7]) + ; + uVar13 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar13 = uVar11, (int)lVar5 < 1)) { + uVar13 = uVar6; + } + lVar5 = lrintf(fVar18 * param_3[9] + param_3[8] * fVar17 + param_3[10] * fVar15 + + param_3[0xb]); + uVar7 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar7 = uVar11, (int)lVar5 < 1)) { + uVar7 = uVar6; + } + *param_2 = uVar12; + param_2[1] = uVar13; + param_2[2] = uVar7; + pbVar8 = pbVar1; + param_2 = param_2 + 3; + } while ((int)pbVar1 - (int)param_1 < param_4 * 3); + return; + } + if (param_6 == 1) { + if (param_4 < 1) { + return; + } + pbVar8 = param_1; + do { + pbVar1 = pbVar8 + 3; + lVar5 = lrintf((float)(int)(char)pbVar8[1] * param_3[1] + (float)*pbVar8 * *param_3 + + (float)pbVar8[2] * param_3[2] + param_3[3]); + uVar12 = (undefined1)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = 0x7f, (int)lVar5 < 1)) { + uVar12 = 0x80; + } + *param_2 = uVar12; + param_2 = param_2 + 1; + pbVar8 = pbVar1; + } while (pbVar1 != param_1 + ((ulong)(param_4 - 1) + 1) * 3); + return; + } + } + if ((param_5 == 4) && (param_6 == 4)) { + if (0 < param_4 * 4) { + puVar9 = param_2 + 2; + do { + fVar19 = (float)(int)(char)param_1[1]; + fVar18 = (float)*param_1; + fVar17 = (float)param_1[2]; + fVar15 = (float)param_1[3]; + lVar5 = lrintf(fVar19 * param_3[1] + *param_3 * fVar18 + param_3[2] * fVar17 + + param_3[3] * fVar15 + param_3[4]); + uVar6 = 0x80; + uVar11 = 0x7f; + uVar12 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = uVar11, (int)lVar5 < 1)) { + uVar12 = uVar6; + } + lVar5 = lrintf(fVar19 * param_3[6] + param_3[5] * fVar18 + param_3[7] * fVar17 + + param_3[8] * fVar15 + param_3[9]); + uVar13 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar13 = uVar11, (int)lVar5 < 1)) { + uVar13 = uVar6; + } + puVar9[-2] = uVar12; + puVar9[-1] = uVar13; + lVar5 = lrintf(fVar19 * param_3[0xb] + param_3[10] * fVar18 + param_3[0xc] * fVar17 + + param_3[0xd] * fVar15 + param_3[0xe]); + uVar12 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = uVar11, (int)lVar5 < 1)) { + uVar12 = uVar6; + } + lVar5 = lrintf(fVar19 * param_3[0x10] + param_3[0xf] * fVar18 + param_3[0x11] * fVar17 + + param_3[0x12] * fVar15 + param_3[0x13]); + uVar13 = (char)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar13 = uVar11, (int)lVar5 < 1)) { + uVar13 = uVar6; + } + *puVar9 = uVar12; + puVar14 = puVar9 + 4; + puVar9[1] = uVar13; + puVar9 = puVar14; + param_1 = param_1 + 4; + } while (puVar14 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + /* catch() { ... } // from try @ 002c7ebc with catch @ 002c7e74 + catch() { ... } // from try @ 002c7f08 with catch @ 002c7e74 */ + iVar16 = 0; + /* try { // try from 002c7e98 to 003c7eaf has its CatchHandler @ 002c7ee0 */ + do { + if (0 < param_6) { + /* try { // try from 002c7ebc to 003c7ecf has its CatchHandler @ 002c7e74 */ + pfVar10 = param_3; + puVar9 = param_2; + do { + fVar15 = pfVar10[param_5]; + if (0 < param_5) { + lVar5 = 0; + do { + pbVar8 = param_1 + lVar5; + pfVar4 = pfVar10 + lVar5; + /* catch() { ... } // from try @ 002c7e98 with catch @ 002c7ee0 */ + lVar5 = lVar5 + 1; + fVar15 = fVar15 + (float)(int)(char)*pbVar8 * *pfVar4; + } while ((int)lVar5 < param_5); + } + lVar5 = lrintf(fVar15); + uVar12 = (undefined1)lVar5; + /* try { // try from 002c7f08 to 003c7f0b has its CatchHandler @ 002c7e74 */ + /* catch() { ... } // from try @ 002c7f54 with catch @ 002c7f0c + catch() { ... } // from try @ 002c7fa0 with catch @ 002c7f0c */ + if ((0xff < (int)lVar5 + 0x80U) && (uVar12 = 0x7f, (int)lVar5 < 1)) { + uVar12 = 0x80; + } + puVar14 = puVar9 + 1; + *puVar9 = uVar12; + pfVar10 = pfVar10 + (long)param_5 + 1; + puVar9 = puVar14; + } while (param_2 + (ulong)(param_6 - 1) + 1 != puVar14); + } + iVar16 = iVar16 + 1; + /* try { // try from 002c7f30 to 003c7f47 has its CatchHandler @ 002c7f78 */ + param_1 = param_1 + param_5; + param_2 = param_2 + param_6; + } while (iVar16 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c7f54 (1308 bytes) name=FUN_002c7f54 + +void FUN_002c7f54(byte *param_1,char *param_2,float *param_3,int param_4,int param_5,int param_6) + +{ + byte bVar1; + byte bVar2; + char cVar3; + char cVar4; + char cVar5; + float *pfVar6; + uint uVar7; + uint uVar8; + long lVar9; + byte *pbVar10; + char *pcVar11; + float *pfVar12; + char *pcVar13; + float fVar14; + int iVar15; + float fVar16; + float fVar17; + float fVar18; + + /* try { // try from 002c7f54 to 003c7f67 has its CatchHandler @ 002c7f0c */ + /* catch() { ... } // from try @ 002c7f30 with catch @ 002c7f78 */ + /* try { // try from 002c7fa0 to 003c7fa3 has its CatchHandler @ 002c7f0c */ + if ((param_5 == 2) && (param_6 == 2)) { + /* catch() { ... } // from try @ 002c7fec with catch @ 002c7fa4 + catch() { ... } // from try @ 002c8038 with catch @ 002c7fa4 */ + if (param_4 * 2 < 1) { + return; + } + pbVar10 = param_1 + 1; + /* try { // try from 002c7fc8 to 003c7fdf has its CatchHandler @ 002c8010 */ + pcVar11 = param_2 + 1; + do { + bVar1 = *pbVar10; + bVar2 = pbVar10[-1]; + /* try { // try from 002c7fec to 003c7fff has its CatchHandler @ 002c7fa4 */ + lVar9 = lrintf((float)bVar1 * param_3[1] + *param_3 * (float)bVar2 + param_3[2]); + cVar3 = (char)lVar9; + if (0xff < (uint)lVar9) { + cVar3 = -(0 < (int)(uint)lVar9); + } + /* catch() { ... } // from try @ 002c7fc8 with catch @ 002c8010 */ + lVar9 = lrintf((float)bVar1 * param_3[4] + param_3[3] * (float)bVar2 + param_3[5]); + cVar4 = (char)lVar9; + if (0xff < (uint)lVar9) { + /* try { // try from 002c8038 to 003c803b has its CatchHandler @ 002c7fa4 */ + /* catch() { ... } // from try @ 002c8084 with catch @ 002c803c + catch() { ... } // from try @ 002c80d0 with catch @ 002c803c */ + cVar4 = -(0 < (int)(uint)lVar9); + } + pcVar11[-1] = cVar3; + pbVar10 = pbVar10 + 2; + *pcVar11 = cVar4; + pcVar11 = pcVar11 + 2; + } while (pbVar10 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + return; + } + /* try { // try from 002c8084 to 003c8097 has its CatchHandler @ 002c803c */ + if (param_5 == 3) { + if (param_6 == 3) { + pbVar10 = param_1; + if (param_4 * 3 < 1) { + return; + } + do { + /* catch() { ... } // from try @ 002c8060 with catch @ 002c80a8 */ + fVar17 = (float)pbVar10[1]; + fVar16 = (float)*pbVar10; + fVar14 = (float)pbVar10[2]; + /* try { // try from 002c80d0 to 003c80d3 has its CatchHandler @ 002c803c */ + /* catch() { ... } // from try @ 002c811c with catch @ 002c80d4 + catch() { ... } // from try @ 002c8168 with catch @ 002c80d4 */ + lVar9 = lrintf(fVar17 * param_3[1] + *param_3 * fVar16 + param_3[2] * fVar14 + param_3[3]); + cVar3 = (char)lVar9; + if (0xff < (uint)lVar9) { + cVar3 = -(0 < (int)(uint)lVar9); + /* try { // try from 002c80f8 to 003c810f has its CatchHandler @ 002c8140 */ + } + /* try { // try from 002c811c to 003c812f has its CatchHandler @ 002c80d4 */ + lVar9 = lrintf(fVar17 * param_3[5] + param_3[4] * fVar16 + param_3[6] * fVar14 + param_3[7]) + ; + cVar4 = (char)lVar9; + if (0xff < (uint)lVar9) { + cVar4 = -(0 < (int)(uint)lVar9); + } + /* catch() { ... } // from try @ 002c80f8 with catch @ 002c8140 */ + lVar9 = lrintf(fVar17 * param_3[9] + param_3[8] * fVar16 + param_3[10] * fVar14 + + param_3[0xb]); + cVar5 = (char)lVar9; + if (0xff < (uint)lVar9) { + /* try { // try from 002c8168 to 003c816b has its CatchHandler @ 002c80d4 */ + /* catch() { ... } // from try @ 002c81b4 with catch @ 002c816c + catch() { ... } // from try @ 002c8200 with catch @ 002c816c */ + cVar5 = -(0 < (int)(uint)lVar9); + } + pbVar10 = pbVar10 + 3; + *param_2 = cVar3; + param_2[1] = cVar4; + param_2[2] = cVar5; + param_2 = param_2 + 3; + /* try { // try from 002c8190 to 003c81a7 has its CatchHandler @ 002c81d8 */ + } while ((int)pbVar10 - (int)param_1 < param_4 * 3); + return; + } + if (param_6 == 1) { + if (param_4 < 1) { + return; + } + /* try { // try from 002c8330 to 003c8333 has its CatchHandler @ 002c829c */ + /* catch() { ... } // from try @ 002c8378 with catch @ 002c8334 + catch() { ... } // from try @ 002c83cc with catch @ 002c8334 */ + pbVar10 = param_1 + ((ulong)(param_4 - 1) + 1) * 3; + do { + /* try { // try from 002c8358 to 003c836f has its CatchHandler @ 002c83a4 */ + lVar9 = lrintf((float)param_1[1] * param_3[1] + (float)*param_1 * *param_3 + + (float)param_1[2] * param_3[2] + param_3[3]); + /* try { // try from 002c8378 to 003c838f has its CatchHandler @ 002c8334 */ + cVar3 = (char)lVar9; + if (0xff < (uint)lVar9) { + cVar3 = -(0 < (int)(uint)lVar9); + } + param_1 = param_1 + 3; + *param_2 = cVar3; + param_2 = param_2 + 1; + } while (param_1 != pbVar10); + return; + } + } + if ((param_5 == 4) && (param_6 == 4)) { + /* try { // try from 002c81b4 to 003c81c7 has its CatchHandler @ 002c816c */ + if (0 < param_4 * 4) { + pcVar11 = param_2 + 2; + do { + /* catch() { ... } // from try @ 002c8190 with catch @ 002c81d8 */ + fVar18 = (float)param_1[1]; + fVar17 = (float)*param_1; + fVar16 = (float)param_1[2]; + fVar14 = (float)param_1[3]; + /* try { // try from 002c8200 to 003c8203 has its CatchHandler @ 002c816c */ + /* catch() { ... } // from try @ 002c824c with catch @ 002c8204 + catch() { ... } // from try @ 002c8298 with catch @ 002c8204 */ + lVar9 = lrintf(fVar18 * param_3[1] + *param_3 * fVar17 + param_3[2] * fVar16 + + param_3[3] * fVar14 + param_3[4]); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + /* try { // try from 002c8228 to 003c823f has its CatchHandler @ 002c8270 */ + uVar7 = -(uint)(0 < (int)uVar7); + } + /* try { // try from 002c824c to 003c825f has its CatchHandler @ 002c8204 */ + lVar9 = lrintf(fVar18 * param_3[6] + param_3[5] * fVar17 + param_3[7] * fVar16 + + param_3[8] * fVar14 + param_3[9]); + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + pcVar11[-2] = (char)uVar7; + /* catch() { ... } // from try @ 002c8228 with catch @ 002c8270 */ + pcVar11[-1] = (char)uVar8; + /* try { // try from 002c8298 to 003c829b has its CatchHandler @ 002c8204 */ + /* catch() { ... } // from try @ 002c82e4 with catch @ 002c829c + catch() { ... } // from try @ 002c8330 with catch @ 002c829c */ + lVar9 = lrintf(fVar18 * param_3[0xb] + param_3[10] * fVar17 + param_3[0xc] * fVar16 + + param_3[0xd] * fVar14 + param_3[0xe]); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + /* try { // try from 002c82c0 to 003c82d7 has its CatchHandler @ 002c8308 */ + lVar9 = lrintf(fVar18 * param_3[0x10] + param_3[0xf] * fVar17 + param_3[0x11] * fVar16 + + param_3[0x12] * fVar14 + param_3[0x13]); + /* try { // try from 002c82e4 to 003c82f7 has its CatchHandler @ 002c829c */ + uVar8 = (uint)lVar9; + if (0xff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *pcVar11 = (char)uVar7; + pcVar13 = pcVar11 + 4; + param_1 = param_1 + 4; + /* catch() { ... } // from try @ 002c82c0 with catch @ 002c8308 */ + pcVar11[1] = (char)uVar8; + pcVar11 = pcVar13; + } while (pcVar13 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else { + /* catch() { ... } // from try @ 002c8358 with catch @ 002c83a4 */ + if (0 < param_4) { + /* try { // try from 002c83cc to 003c83cf has its CatchHandler @ 002c8334 */ + iVar15 = 0; + /* catch() { ... } // from try @ 002c8414 with catch @ 002c83d0 + catch() { ... } // from try @ 002c8468 with catch @ 002c83d0 */ + do { + if (0 < param_6) { + pfVar12 = param_3; + pcVar11 = param_2; + do { + fVar14 = pfVar12[param_5]; + /* try { // try from 002c83f4 to 003c840b has its CatchHandler @ 002c8440 */ + if (0 < param_5) { + lVar9 = 0; + do { + pbVar10 = param_1 + lVar9; + pfVar6 = pfVar12 + lVar9; + lVar9 = lVar9 + 1; + fVar14 = fVar14 + (float)*pbVar10 * *pfVar6; + /* try { // try from 002c8414 to 003c842b has its CatchHandler @ 002c83d0 */ + } while ((int)lVar9 < param_5); + } + lVar9 = lrintf(fVar14); + uVar7 = (uint)lVar9; + if (0xff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + pcVar13 = pcVar11 + 1; + *pcVar11 = (char)uVar7; + pfVar12 = pfVar12 + (long)param_5 + 1; + pcVar11 = pcVar13; + } while (param_2 + (ulong)(param_6 - 1) + 1 != pcVar13); + } + /* catch() { ... } // from try @ 002c83f4 with catch @ 002c8440 */ + iVar15 = iVar15 + 1; + param_1 = param_1 + param_5; + param_2 = param_2 + param_6; + /* try { // try from 002c8468 to 003c846b has its CatchHandler @ 002c83d0 */ + } while (iVar15 != param_4); + } + } + /* try { // try from 002c8060 to 003c8077 has its CatchHandler @ 002c80a8 */ + return; +} + + +================================================================== + +### FUNC 002c8470 (548 bytes) name=FUN_002c8470 + +void FUN_002c8470(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,int param_4, + float *param_5) + +{ + long lVar1; + ulong uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + undefined8 *puVar6; + undefined8 *puVar7; + ulong uVar8; + undefined8 *puVar9; + long lVar10; + int iVar11; + int iVar12; + undefined8 *puVar13; + uint uVar14; + long lVar15; + undefined8 uVar16; + undefined8 uVar17; + float fVar18; + + fVar18 = *param_5; + if (param_4 < 4) { + iVar11 = 0; + } + else { + uVar5 = param_4 - 4U >> 2; + /* try { // try from 002c8490 to 003c84a7 has its CatchHandler @ 002c84dc */ + puVar7 = param_1; + puVar9 = param_3; + puVar13 = param_2; + do { + uVar17 = *puVar13; + puVar6 = puVar7 + 2; + uVar16 = *puVar7; + /* try { // try from 002c84b0 to 003c84c7 has its CatchHandler @ 002c846c */ + puVar9[1] = CONCAT44((float)((ulong)puVar13[1] >> 0x20) + + (float)((ulong)puVar7[1] >> 0x20) * fVar18, + (float)puVar13[1] + (float)puVar7[1] * fVar18); + *puVar9 = CONCAT44((float)((ulong)uVar17 >> 0x20) + (float)((ulong)uVar16 >> 0x20) * fVar18, + (float)uVar17 + (float)uVar16 * fVar18); + puVar7 = puVar6; + puVar9 = puVar9 + 2; + puVar13 = puVar13 + 2; + } while (puVar6 != param_1 + ((ulong)uVar5 + 1) * 2); + iVar11 = (uVar5 + 1) * 4; + } + if (iVar11 < param_4) { + uVar5 = param_4 - iVar11; + lVar10 = ((long)iVar11 + 4) * 4; + lVar15 = lVar10 + -0x10; + /* catch() { ... } // from try @ 002c8490 with catch @ 002c84dc */ + uVar8 = (long)param_3 + lVar15; + uVar2 = (long)param_1 + lVar15; + /* try { // try from 002c8504 to 003c8507 has its CatchHandler @ 002c846c */ + /* catch() { ... } // from try @ 002c854c with catch @ 002c8508 + catch() { ... } // from try @ 002c85a0 with catch @ 002c8508 */ + if ((uVar8 < (ulong)((long)param_1 + lVar10) && uVar2 < (ulong)((long)param_3 + lVar10) || + (ulong)((long)param_2 + lVar15) < (ulong)((long)param_3 + lVar10) && + uVar8 < (ulong)((long)param_2 + lVar10)) || (uVar5 < 8)) { + lVar10 = 0; + do { + /* try { // try from 002c8664 to 003c867b has its CatchHandler @ 002c86b0 */ + *(float *)(uVar8 + lVar10) = + *(float *)((long)param_2 + lVar15 + lVar10) + fVar18 * *(float *)(uVar2 + lVar10); + lVar10 = lVar10 + 4; + } while (lVar10 != ((ulong)(uint)((param_4 + -1) - iVar11) + 1) * 4); + return; + } + /* try { // try from 002c852c to 003c8543 has its CatchHandler @ 002c8578 */ + uVar3 = -((uint)(uVar2 >> 2) & 3) & 3; + uVar4 = uVar5; + if (uVar3 < uVar5) { + uVar4 = uVar3; + } + iVar12 = iVar11; + if (uVar4 != 0) { + lVar10 = (long)iVar11 * 4; + /* try { // try from 002c854c to 003c8563 has its CatchHandler @ 002c8508 */ + iVar12 = iVar11 + 1; + *(float *)((long)param_3 + lVar10) = + *(float *)((long)param_2 + lVar10) + fVar18 * *(float *)((long)param_1 + lVar10); + if (uVar4 != 1) { + lVar1 = lVar10 + 4; + iVar12 = iVar11 + 2; + /* catch() { ... } // from try @ 002c852c with catch @ 002c8578 */ + *(float *)((long)param_3 + lVar1) = + *(float *)((long)param_2 + lVar1) + fVar18 * *(float *)((long)param_1 + lVar1); + if (uVar4 == 3) { + lVar10 = lVar10 + 8; + iVar12 = iVar11 + 3; + *(float *)((long)param_3 + lVar10) = + *(float *)((long)param_2 + lVar10) + fVar18 * *(float *)((long)param_1 + lVar10); + } + } + } + /* try { // try from 002c85a0 to 003c85a3 has its CatchHandler @ 002c8508 */ + /* catch() { ... } // from try @ 002c85e8 with catch @ 002c85a4 + catch() { ... } // from try @ 002c863c with catch @ 002c85a4 */ + lVar15 = lVar15 + (ulong)uVar4 * 4; + uVar3 = ((uVar5 - uVar4) - 4 >> 2) + 1; + uVar14 = 0; + iVar11 = uVar3 * 4; + puVar7 = (undefined8 *)((long)param_3 + lVar15); + puVar9 = (undefined8 *)((long)param_2 + lVar15); + puVar13 = (undefined8 *)((long)param_1 + lVar15); + do { + /* try { // try from 002c85c8 to 003c85df has its CatchHandler @ 002c8614 */ + uVar16 = *puVar9; + uVar14 = uVar14 + 1; + uVar17 = *puVar13; + puVar7[1] = CONCAT44((float)((ulong)puVar9[1] >> 0x20) + + (float)((ulong)puVar13[1] >> 0x20) * fVar18, + (float)puVar9[1] + (float)puVar13[1] * fVar18); + *puVar7 = CONCAT44((float)((ulong)uVar16 >> 0x20) + (float)((ulong)uVar17 >> 0x20) * fVar18, + (float)uVar16 + (float)uVar17 * fVar18); + puVar7 = puVar7 + 2; + puVar9 = puVar9 + 2; + puVar13 = puVar13 + 2; + } while (uVar14 < uVar3); + /* try { // try from 002c85e8 to 003c85ff has its CatchHandler @ 002c85a4 */ + uVar3 = iVar12 + iVar11; + if (uVar5 - uVar4 != iVar11) { + uVar8 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + *(float *)((long)param_3 + uVar8) = + *(float *)((long)param_2 + uVar8) + fVar18 * *(float *)((long)param_1 + uVar8); + if ((int)(uVar3 + 1) < param_4) { + lVar15 = uVar8 + 4; + /* catch() { ... } // from try @ 002c85c8 with catch @ 002c8614 */ + *(float *)((long)param_3 + lVar15) = + *(float *)((long)param_2 + lVar15) + fVar18 * *(float *)((long)param_1 + lVar15); + if ((int)(uVar3 + 2) < param_4) { + lVar15 = uVar8 + 8; + /* try { // try from 002c863c to 003c863f has its CatchHandler @ 002c85a4 */ + /* catch() { ... } // from try @ 002c8684 with catch @ 002c8640 + catch() { ... } // from try @ 002c86d8 with catch @ 002c8640 */ + *(float *)((long)param_3 + lVar15) = + *(float *)((long)param_2 + lVar15) + fVar18 * *(float *)((long)param_1 + lVar15); + } + } + } + } + return; +} + + +================================================================== + +### FUNC 002c8694 (420 bytes) name=FUN_002c8694 + +undefined1 [16] FUN_002c8694(float *param_1,undefined8 *param_2,uint param_3) + +{ + float *pfVar1; + uint uVar2; + uint uVar3; + long lVar4; + long lVar5; + ulong uVar6; + long lVar7; + float *pfVar8; + undefined8 *puVar9; + float *pfVar10; + ulong uVar11; + int iVar12; + double dVar13; + undefined1 auVar14 [16]; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + double dVar19; + + uVar2 = param_3 & 0xfffffffc; + iVar12 = 0; + dVar13 = 0.0; + if (0 < (int)uVar2) { + do { + uVar3 = uVar2 - iVar12; + if (0x2000 < (int)uVar3) { + uVar3 = 0x2000; + } + if ((int)uVar3 < 4) { + fVar15 = 0.0; + fVar16 = 0.0; + fVar17 = 0.0; + fVar18 = 0.0; + } + else { + fVar15 = 0.0; + fVar16 = 0.0; + fVar17 = 0.0; + fVar18 = 0.0; + /* try { // try from 002c86d8 to 003c86db has its CatchHandler @ 002c8640 */ + /* catch() { ... } // from try @ 002c8724 with catch @ 002c86dc + catch() { ... } // from try @ 002c8770 with catch @ 002c86dc */ + pfVar8 = param_1; + puVar9 = param_2; + do { + pfVar10 = pfVar8 + 4; + fVar15 = fVar15 + (float)*puVar9 * (float)*(undefined8 *)pfVar8; + fVar16 = fVar16 + (float)((ulong)*puVar9 >> 0x20) * + (float)((ulong)*(undefined8 *)pfVar8 >> 0x20); + fVar17 = fVar17 + (float)puVar9[1] * (float)*(undefined8 *)(pfVar8 + 2); + fVar18 = fVar18 + (float)((ulong)puVar9[1] >> 0x20) * + (float)((ulong)*(undefined8 *)(pfVar8 + 2) >> 0x20); + pfVar8 = pfVar10; + puVar9 = puVar9 + 2; + } while (pfVar10 != param_1 + ((ulong)(uVar3 - 4 >> 2) + 1) * 4); + } + iVar12 = iVar12 + uVar3; + /* try { // try from 002c8700 to 003c8717 has its CatchHandler @ 002c8748 */ + uVar11 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + param_1 = (float *)((long)param_1 + uVar11); + param_2 = (undefined8 *)((long)param_2 + uVar11); + /* try { // try from 002c8724 to 003c8737 has its CatchHandler @ 002c86dc */ + dVar13 = dVar13 + (double)(fVar15 + fVar16 + fVar17 + fVar18); + } while (iVar12 < (int)uVar2); + } + iVar12 = param_3 - iVar12; + if (iVar12 < 4) { + dVar19 = 0.0; + /* try { // try from 002c8830 to 003c8847 has its CatchHandler @ 002c8878 */ + uVar11 = 0; + } + else { + dVar19 = 0.0; + /* catch() { ... } // from try @ 002c8700 with catch @ 002c8748 */ + uVar2 = iVar12 - 4U >> 2; + pfVar8 = (float *)((long)param_2 + 4); + pfVar10 = param_1; + do { + /* try { // try from 002c8770 to 003c8773 has its CatchHandler @ 002c86dc */ + pfVar1 = pfVar8 + 4; + /* catch() { ... } // from try @ 002c87bc with catch @ 002c8774 + catch() { ... } // from try @ 002c8808 with catch @ 002c8774 */ + /* try { // try from 002c8798 to 003c87af has its CatchHandler @ 002c87e0 */ + /* try { // try from 002c87bc to 003c87cf has its CatchHandler @ 002c8774 */ + dVar19 = dVar19 + (double)pfVar10[1] * (double)*pfVar8 + (double)pfVar8[-1] * (double)*pfVar10 + + (double)pfVar8[1] * (double)pfVar10[2] + + (double)pfVar8[2] * (double)pfVar10[3]; + pfVar8 = pfVar1; + pfVar10 = pfVar10 + 4; + } while (pfVar1 != (float *)((long)param_2 + (ulong)uVar2 * 0x10 + 0x14)); + uVar11 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar11 < iVar12) { + uVar6 = -(uVar11 >> 0x1f) & 0xfffffffc00000000 | uVar11 << 2; + /* catch() { ... } // from try @ 002c8798 with catch @ 002c87e0 */ + lVar7 = 0; + do { + lVar4 = lVar7 + uVar6; + lVar5 = lVar7 + uVar6; + lVar7 = lVar7 + 4; + /* try { // try from 002c8808 to 003c880b has its CatchHandler @ 002c8774 */ + /* catch() { ... } // from try @ 002c8854 with catch @ 002c880c + catch() { ... } // from try @ 002c88a0 with catch @ 002c880c */ + dVar19 = dVar19 + (double)*(float *)((long)param_2 + lVar5) * + (double)*(float *)((long)param_1 + lVar4); + } while (lVar7 != ((ulong)(uint)((iVar12 + -1) - (int)uVar11) + 1) * 4); + } + auVar14._0_8_ = dVar13 + dVar19; + auVar14._8_8_ = 0; + return auVar14; +} + + +================================================================== + +### FUNC 002c8838 (588 bytes) name=FUN_002c8838 + +undefined1 [16] FUN_002c8838(byte *param_1,long param_2,uint param_3) + +{ + byte *pbVar1; + uint uVar2; + long lVar3; + long lVar4; + byte *pbVar5; + undefined8 *puVar7; + int iVar8; + int iVar9; + int iVar10; + byte bVar11; + byte bVar12; + byte bVar13; + byte bVar14; + byte bVar15; + byte bVar16; + byte bVar17; + byte bVar18; + double dVar19; + undefined1 auVar20 [16]; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + undefined8 uVar25; + undefined8 uVar26; + undefined8 uVar27; + undefined8 uVar28; + double dVar29; + byte *pbVar6; + + uVar2 = param_3 & 0xfffffff8; + iVar10 = 0; + dVar19 = 0.0; + if (0 < (int)uVar2) { + do { + iVar9 = uVar2 - iVar10; + iVar21 = 0; + iVar22 = 0; + iVar23 = 0; + iVar24 = 0; + if (0x8000 < iVar9) { + iVar9 = 0x8000; + } + if (iVar9 + -0xf < 1) { + /* try { // try from 002c8a70 to 003c8a73 has its CatchHandler @ 002c89d8 */ + iVar8 = 0; + /* catch() { ... } // from try @ 002c8ab8 with catch @ 002c8a74 + catch() { ... } // from try @ 002c8b0c with catch @ 002c8a74 */ + } + else { + lVar4 = 0; + do { + /* catch() { ... } // from try @ 002c8830 with catch @ 002c8878 */ + pbVar6 = param_1 + lVar4; + puVar7 = (undefined8 *)(param_2 + lVar4); + lVar4 = lVar4 + 0x10; + uVar27 = *(undefined8 *)(pbVar6 + 8); + uVar25 = *(undefined8 *)pbVar6; + bVar11 = (byte)((ulong)uVar25 >> 8); + bVar15 = (byte)((ulong)uVar25 >> 0x28); + uVar28 = puVar7[1]; + uVar26 = *puVar7; + bVar12 = (byte)((ulong)uVar27 >> 8); + bVar16 = (byte)((ulong)uVar27 >> 0x28); + /* try { // try from 002c88a0 to 003c88a3 has its CatchHandler @ 002c880c */ + /* catch() { ... } // from try @ 002c88ec with catch @ 002c88a4 + catch() { ... } // from try @ 002c8938 with catch @ 002c88a4 */ + bVar13 = (byte)((ulong)uVar28 >> 8); + bVar17 = (byte)((ulong)uVar28 >> 0x28); + bVar14 = (byte)((ulong)uVar26 >> 8); + bVar18 = (byte)((ulong)uVar26 >> 0x28); + /* try { // try from 002c88c8 to 003c88df has its CatchHandler @ 002c8910 */ + iVar21 = iVar21 + ((CONCAT12(bVar11,(short)uVar25) & 0xff00ff) & 0xffff) * + ((CONCAT12(bVar14,(short)uVar26) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar15,(ushort)(byte)((ulong)uVar25 >> 0x20)) & 0xffff) * + (CONCAT12(bVar18,(ushort)(byte)((ulong)uVar26 >> 0x20)) & 0xffff) + + ((CONCAT12(bVar12,(short)uVar27) & 0xff00ff) & 0xffff) * + ((CONCAT12(bVar13,(short)uVar28) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar16,(ushort)(byte)((ulong)uVar27 >> 0x20)) & 0xffff) * + (CONCAT12(bVar17,(ushort)(byte)((ulong)uVar28 >> 0x20)) & 0xffff); + iVar22 = iVar22 + (uint)bVar11 * (uint)bVar14 + (uint)bVar15 * (uint)bVar18 + + (uint)bVar12 * (uint)bVar13 + (uint)bVar16 * (uint)bVar17; + iVar23 = iVar23 + (uint)(byte)((ulong)uVar25 >> 0x10) * + (uint)(byte)((ulong)uVar26 >> 0x10) + + (uint)(byte)((ulong)uVar25 >> 0x30) * (uint)(byte)((ulong)uVar26 >> 0x30) + + (uint)(byte)((ulong)uVar27 >> 0x10) * (uint)(byte)((ulong)uVar28 >> 0x10) + + (uint)(byte)((ulong)uVar27 >> 0x30) * (uint)(byte)((ulong)uVar28 >> 0x30); + iVar24 = iVar24 + (uint)(byte)((ulong)uVar25 >> 0x18) * + (uint)(byte)((ulong)uVar26 >> 0x18) + + (uint)(byte)((ulong)uVar25 >> 0x38) * (uint)(byte)((ulong)uVar26 >> 0x38) + + (uint)(byte)((ulong)uVar27 >> 0x18) * (uint)(byte)((ulong)uVar28 >> 0x18) + + (uint)(byte)((ulong)uVar27 >> 0x38) * (uint)(byte)((ulong)uVar28 >> 0x38); + } while ((int)lVar4 < iVar9 + -0xf); + iVar8 = (iVar9 - 0x10U & 0xfffffff0) + 0x10; + } + /* try { // try from 002c88ec to 003c88ff has its CatchHandler @ 002c88a4 */ + if (iVar8 < iVar9 + -7) { + lVar4 = (long)iVar8; + /* catch() { ... } // from try @ 002c88c8 with catch @ 002c8910 */ + pbVar6 = param_1 + lVar4; + puVar7 = (undefined8 *)(param_2 + lVar4); + do { + pbVar5 = pbVar6 + 8; + uVar25 = *(undefined8 *)pbVar6; + uVar27 = *puVar7; + bVar11 = (byte)((ulong)uVar25 >> 8); + bVar13 = (byte)((ulong)uVar25 >> 0x28); + bVar12 = (byte)((ulong)uVar27 >> 8); + bVar14 = (byte)((ulong)uVar27 >> 0x28); + /* try { // try from 002c8938 to 003c893b has its CatchHandler @ 002c88a4 */ + /* catch() { ... } // from try @ 002c8980 with catch @ 002c893c + catch() { ... } // from try @ 002c89d4 with catch @ 002c893c */ + iVar21 = iVar21 + ((CONCAT12(bVar11,(short)uVar25) & 0xff00ff) & 0xffff) * + ((CONCAT12(bVar12,(short)uVar27) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar13,(ushort)(byte)((ulong)uVar25 >> 0x20)) & 0xffff) * + (CONCAT12(bVar14,(ushort)(byte)((ulong)uVar27 >> 0x20)) & 0xffff); + iVar22 = iVar22 + (uint)bVar11 * (uint)bVar12 + (uint)bVar13 * (uint)bVar14; + iVar23 = iVar23 + (uint)(byte)((ulong)uVar25 >> 0x10) * + (uint)(byte)((ulong)uVar27 >> 0x10) + + (uint)(byte)((ulong)uVar25 >> 0x30) * (uint)(byte)((ulong)uVar27 >> 0x30); + iVar24 = iVar24 + (uint)(byte)((ulong)uVar25 >> 0x18) * + (uint)(byte)((ulong)uVar27 >> 0x18) + + (uint)(byte)((ulong)uVar25 >> 0x38) * (uint)(byte)((ulong)uVar27 >> 0x38); + pbVar6 = pbVar5; + puVar7 = puVar7 + 1; + } while (pbVar5 != param_1 + lVar4 + 8 + (ulong)((uint)((iVar9 + -8) - iVar8) >> 3) * 8); + } + iVar10 = iVar10 + iVar9; + param_1 = param_1 + iVar9; + param_2 = param_2 + iVar9; + /* try { // try from 002c8960 to 003c8977 has its CatchHandler @ 002c89ac */ + /* try { // try from 002c8980 to 003c8997 has its CatchHandler @ 002c893c */ + dVar19 = dVar19 + (double)(uint)(iVar22 + iVar21 + iVar23 + iVar24); + } while (iVar10 < (int)uVar2); + } + iVar10 = param_3 - iVar10; + if (iVar10 < 4) { + dVar29 = 0.0; + iVar9 = 0; + } + else { + dVar29 = 0.0; + uVar2 = iVar10 - 4U >> 2; + /* catch() { ... } // from try @ 002c8960 with catch @ 002c89ac */ + pbVar6 = (byte *)(param_2 + 1); + pbVar5 = param_1; + do { + pbVar1 = pbVar6 + 4; + /* try { // try from 002c89d4 to 003c89d7 has its CatchHandler @ 002c893c */ + /* catch() { ... } // from try @ 002c8a1c with catch @ 002c89d8 + catch() { ... } // from try @ 002c8a70 with catch @ 002c89d8 */ + /* try { // try from 002c89fc to 003c8a13 has its CatchHandler @ 002c8a48 */ + dVar29 = dVar29 + (double)pbVar5[1] * (double)*pbVar6 + (double)pbVar6[-1] * (double)*pbVar5 + + (double)pbVar6[1] * (double)pbVar5[2] + + (double)pbVar6[2] * (double)pbVar5[3]; + pbVar6 = pbVar1; + pbVar5 = pbVar5 + 4; + } while (pbVar1 != (byte *)(param_2 + (ulong)uVar2 * 4 + 5)); + /* try { // try from 002c8a1c to 003c8a33 has its CatchHandler @ 002c89d8 */ + iVar9 = (uVar2 + 1) * 4; + } + if (iVar9 < iVar10) { + lVar4 = 0; + do { + lVar3 = lVar4 + iVar9; + /* catch() { ... } // from try @ 002c89fc with catch @ 002c8a48 */ + pbVar6 = (byte *)(param_2 + iVar9 + lVar4); + lVar4 = lVar4 + 1; + dVar29 = dVar29 + (double)*pbVar6 * (double)param_1[lVar3]; + } while (lVar4 != (ulong)(uint)((iVar10 + -1) - iVar9) + 1); + } + auVar20._0_8_ = dVar19 + dVar29; + auVar20._8_8_ = 0; + return auVar20; +} + + +================================================================== + +### FUNC 002c8a84 (588 bytes) name=FUN_002c8a84 + +undefined1 [16] FUN_002c8a84(byte *param_1,long param_2,uint param_3) + +{ + char *pcVar1; + uint uVar2; + long lVar3; + long lVar4; + byte *pbVar5; + char *pcVar7; + undefined8 *puVar8; + int iVar9; + int iVar10; + int iVar11; + double dVar12; + undefined1 auVar13 [16]; + int iVar14; + int iVar15; + int iVar16; + int iVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + double dVar22; + byte *pbVar6; + + uVar2 = param_3 & 0xfffffff8; + iVar11 = 0; + dVar12 = 0.0; + /* try { // try from 002c8a98 to 003c8aaf has its CatchHandler @ 002c8ae4 */ + if (0 < (int)uVar2) { + do { + iVar10 = uVar2 - iVar11; + iVar14 = 0; + iVar15 = 0; + iVar16 = 0; + iVar17 = 0; + if (0x4000 < iVar10) { + iVar10 = 0x4000; + } + /* try { // try from 002c8ab8 to 003c8acf has its CatchHandler @ 002c8a74 */ + if (iVar10 + -0xf < 1) { + iVar9 = 0; + } + else { + lVar4 = 0; + do { + pbVar6 = param_1 + lVar4; + puVar8 = (undefined8 *)(param_2 + lVar4); + lVar4 = lVar4 + 0x10; + uVar20 = *(undefined8 *)(pbVar6 + 8); + uVar18 = *(undefined8 *)pbVar6; + /* catch() { ... } // from try @ 002c8a98 with catch @ 002c8ae4 */ + uVar21 = puVar8[1]; + uVar19 = *puVar8; + /* try { // try from 002c8b0c to 003c8b0f has its CatchHandler @ 002c8a74 */ + /* catch() { ... } // from try @ 002c8b54 with catch @ 002c8b10 + catch() { ... } // from try @ 002c8ba8 with catch @ 002c8b10 */ + iVar14 = iVar14 + (int)(short)(char)uVar18 * (int)(short)(char)uVar19 + + (int)(short)(char)((ulong)uVar18 >> 0x20) * + (int)(short)(char)((ulong)uVar19 >> 0x20) + + (int)(short)(char)uVar20 * (int)(short)(char)uVar21 + + (int)(short)(char)((ulong)uVar20 >> 0x20) * + (int)(short)(char)((ulong)uVar21 >> 0x20); + iVar15 = iVar15 + (int)(short)(char)((ulong)uVar18 >> 8) * + (int)(short)(char)((ulong)uVar19 >> 8) + + (int)(short)(char)((ulong)uVar18 >> 0x28) * + (int)(short)(char)((ulong)uVar19 >> 0x28) + + (int)(short)(char)((ulong)uVar20 >> 8) * (int)(short)(char)((ulong)uVar21 >> 8) + + (int)(short)(char)((ulong)uVar20 >> 0x28) * + (int)(short)(char)((ulong)uVar21 >> 0x28); + iVar16 = iVar16 + (int)(short)(char)((ulong)uVar18 >> 0x10) * + (int)(short)(char)((ulong)uVar19 >> 0x10) + + (int)(short)(char)((ulong)uVar18 >> 0x30) * + (int)(short)(char)((ulong)uVar19 >> 0x30) + + (int)(short)(char)((ulong)uVar20 >> 0x10) * + (int)(short)(char)((ulong)uVar21 >> 0x10) + + (int)(short)(char)((ulong)uVar20 >> 0x30) * + (int)(short)(char)((ulong)uVar21 >> 0x30); + iVar17 = iVar17 + (int)(short)(char)((ulong)uVar18 >> 0x18) * + (int)(short)(char)((ulong)uVar19 >> 0x18) + + (int)(short)(char)((ulong)uVar18 >> 0x38) * + (int)(short)(char)((ulong)uVar19 >> 0x38) + + (int)(short)(char)((ulong)uVar20 >> 0x18) * + (int)(short)(char)((ulong)uVar21 >> 0x18) + + (int)(short)(char)((ulong)uVar20 >> 0x38) * + (int)(short)(char)((ulong)uVar21 >> 0x38); + } while ((int)lVar4 < iVar10 + -0xf); + iVar9 = (iVar10 - 0x10U & 0xfffffff0) + 0x10; + } + /* try { // try from 002c8b34 to 003c8b4b has its CatchHandler @ 002c8b80 */ + if (iVar9 < iVar10 + -7) { + lVar4 = (long)iVar9; + /* try { // try from 002c8b54 to 003c8b6b has its CatchHandler @ 002c8b10 */ + pbVar6 = param_1 + lVar4; + puVar8 = (undefined8 *)(param_2 + lVar4); + do { + pbVar5 = pbVar6 + 8; + uVar18 = *(undefined8 *)pbVar6; + uVar20 = *puVar8; + /* catch() { ... } // from try @ 002c8b34 with catch @ 002c8b80 */ + iVar14 = iVar14 + (int)(short)(char)uVar18 * (int)(short)(char)uVar20 + + (int)(short)(char)((ulong)uVar18 >> 0x20) * + (int)(short)(char)((ulong)uVar20 >> 0x20); + iVar15 = iVar15 + (int)(short)(char)((ulong)uVar18 >> 8) * + (int)(short)(char)((ulong)uVar20 >> 8) + + (int)(short)(char)((ulong)uVar18 >> 0x28) * + (int)(short)(char)((ulong)uVar20 >> 0x28); + iVar16 = iVar16 + (int)(short)(char)((ulong)uVar18 >> 0x10) * + (int)(short)(char)((ulong)uVar20 >> 0x10) + + (int)(short)(char)((ulong)uVar18 >> 0x30) * + (int)(short)(char)((ulong)uVar20 >> 0x30); + iVar17 = iVar17 + (int)(short)(char)((ulong)uVar18 >> 0x18) * + (int)(short)(char)((ulong)uVar20 >> 0x18) + + (int)(short)(char)((ulong)uVar18 >> 0x38) * + (int)(short)(char)((ulong)uVar20 >> 0x38); + pbVar6 = pbVar5; + puVar8 = puVar8 + 1; + } while (pbVar5 != param_1 + lVar4 + 8 + (ulong)((uint)((iVar10 + -8) - iVar9) >> 3) * 8); + } + iVar11 = iVar11 + iVar10; + param_1 = param_1 + iVar10; + /* try { // try from 002c8ba8 to 003c8bab has its CatchHandler @ 002c8b10 */ + param_2 = param_2 + iVar10; + /* catch() { ... } // from try @ 002c8bf0 with catch @ 002c8bac + catch() { ... } // from try @ 002c8c44 with catch @ 002c8bac */ + dVar12 = dVar12 + (double)(iVar14 + iVar15 + iVar16 + iVar17); + /* try { // try from 002c8bd0 to 003c8be7 has its CatchHandler @ 002c8c1c */ + } while (iVar11 < (int)uVar2); + } + iVar11 = param_3 - iVar11; + if (iVar11 < 4) { + dVar22 = 0.0; + iVar10 = 0; + } + else { + dVar22 = 0.0; + uVar2 = iVar11 - 4U >> 2; + /* try { // try from 002c8bf0 to 003c8c07 has its CatchHandler @ 002c8bac */ + pcVar7 = (char *)(param_2 + 1); + pbVar6 = param_1; + do { + pcVar1 = pcVar7 + 4; + /* catch() { ... } // from try @ 002c8bd0 with catch @ 002c8c1c */ + /* try { // try from 002c8c44 to 003c8c47 has its CatchHandler @ 002c8bac */ + /* catch() { ... } // from try @ 002c8c8c with catch @ 002c8c48 + catch() { ... } // from try @ 002c8ce0 with catch @ 002c8c48 */ + dVar22 = dVar22 + (double)pbVar6[1] * (double)(int)*pcVar7 + + (double)(byte)pcVar7[-1] * (double)*pbVar6 + + (double)(byte)pcVar7[1] * (double)pbVar6[2] + + (double)(byte)pcVar7[2] * (double)pbVar6[3]; + pcVar7 = pcVar1; + pbVar6 = pbVar6 + 4; + } while (pcVar1 != (char *)(param_2 + (ulong)uVar2 * 4 + 5)); + iVar10 = (uVar2 + 1) * 4; + } + /* try { // try from 002c8c6c to 003c8c83 has its CatchHandler @ 002c8cb8 */ + if (iVar10 < iVar11) { + lVar4 = 0; + do { + /* try { // try from 002c8c8c to 003c8ca3 has its CatchHandler @ 002c8c48 */ + lVar3 = lVar4 + iVar10; + pcVar7 = (char *)(param_2 + iVar10 + lVar4); + lVar4 = lVar4 + 1; + dVar22 = dVar22 + (double)(int)*pcVar7 * (double)(int)(char)param_1[lVar3]; + } while (lVar4 != (ulong)(uint)((iVar11 + -1) - iVar10) + 1); + } + auVar13._0_8_ = dVar12 + dVar22; + auVar13._8_8_ = 0; + /* catch() { ... } // from try @ 002c8c6c with catch @ 002c8cb8 */ + return auVar13; +} + + +================================================================== + +### FUNC 002c8cd0 (2208 bytes) name=FUN_002c8cd0 + +void FUN_002c8cd0(float *param_1,float *param_2,float *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + float *pfVar2; + uint uVar3; + float *pfVar4; + float *pfVar5; + int iVar6; + long lVar7; + uint uVar8; + ulong uVar9; + ulong uVar10; + int iVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + float fVar30; + float fVar31; + float fVar32; + float fVar33; + float fVar34; + float fVar35; + float local_b0; + undefined1 uStack_ac; + undefined1 uStack_ab; + undefined1 uStack_aa; + undefined1 uStack_a9; + float fStack_a8; + undefined1 uStack_a4; + undefined1 uStack_a3; + undefined1 uStack_a2; + undefined1 uStack_a1; + float local_a0; + undefined1 uStack_9c; + undefined1 uStack_9b; + undefined1 uStack_9a; + undefined1 uStack_99; + float fStack_98; + undefined1 uStack_94; + undefined1 uStack_93; + undefined1 uStack_92; + undefined1 uStack_91; + float local_70; + undefined1 uStack_6c; + undefined1 uStack_6b; + undefined1 uStack_6a; + undefined1 uStack_69; + float fStack_68; + undefined1 uStack_64; + undefined1 uStack_63; + undefined1 uStack_62; + undefined1 uStack_61; + float local_60; + undefined1 uStack_5c; + undefined1 uStack_5b; + undefined1 uStack_5a; + undefined1 uStack_59; + float fStack_58; + undefined1 uStack_54; + undefined1 uStack_53; + undefined1 uStack_52; + undefined1 uStack_51; + + iVar6 = (int)param_5; + if (iVar6 == 2) { + param_4 = param_4 * 2; + if (0 < param_4) { + uVar3 = param_4 - 1U >> 1; + uVar1 = uVar3 + 1; + if (((uVar1 < 5 || param_2 < param_1 + 8 && param_1 < param_2 + 8) || + param_3 < param_2 + (ulong)uVar1 * 2 && param_2 < param_3 + 1) || + (param_3 + 4 < param_2 + (ulong)uVar1 * 2 && param_2 < param_3 + 3)) { + pfVar4 = param_2 + 1; + pfVar5 = param_1 + 1; + do { + pfVar2 = pfVar5 + 2; + fVar12 = param_3[4]; + fVar13 = *pfVar5; + fVar14 = param_3[5]; + pfVar4[-1] = param_3[2] + pfVar5[-1] * *param_3; + *pfVar4 = fVar14 + fVar13 * fVar12; + pfVar4 = pfVar4 + 2; + pfVar5 = pfVar2; + } while (pfVar2 != param_1 + (ulong)uVar3 * 2 + 3); + } + else { + uVar3 = (uVar3 - 3 >> 2) + 1; + if (param_4 - 1U < 6) { + uVar10 = 0; + } + else { + fVar15 = param_3[2]; + fVar12 = *param_3; + fVar13 = param_3[4]; + fVar14 = param_3[5]; + uVar8 = 0; + pfVar4 = param_2; + pfVar5 = param_1; + do { + fVar16 = *pfVar5; + fVar20 = pfVar5[1]; + fVar17 = pfVar5[2]; + fVar21 = pfVar5[3]; + fVar18 = pfVar5[4]; + fVar22 = pfVar5[5]; + fVar19 = pfVar5[6]; + fVar23 = pfVar5[7]; + pfVar5 = pfVar5 + 8; + uVar8 = uVar8 + 1; + _local_70 = CONCAT17((char)((uint)fVar17 >> 0x18), + CONCAT16((char)((uint)fVar17 >> 0x10), + CONCAT15((char)((uint)fVar17 >> 8), + CONCAT14(SUB41(fVar17,0),fVar16)))); + _fStack_68 = CONCAT17((char)((uint)fVar19 >> 0x18), + CONCAT16((char)((uint)fVar19 >> 0x10), + CONCAT15((char)((uint)fVar19 >> 8), + CONCAT14(SUB41(fVar19,0),fVar18)))); + _local_60 = CONCAT17((char)((uint)fVar21 >> 0x18), + CONCAT16((char)((uint)fVar21 >> 0x10), + CONCAT15((char)((uint)fVar21 >> 8), + CONCAT14(SUB41(fVar21,0),fVar20)))); + _fStack_58 = CONCAT17((char)((uint)fVar23 >> 0x18), + CONCAT16((char)((uint)fVar23 >> 0x10), + CONCAT15((char)((uint)fVar23 >> 8), + CONCAT14(SUB41(fVar23,0),fVar22)))); + /* catch() { ... } // from try @ 002c8e70 with catch @ 002c8e50 + catch() { ... } // from try @ 002c905c with catch @ 002c8e50 + catch() { ... } // from try @ 002c91e0 with catch @ 002c8e50 */ + *pfVar4 = fVar15 + fVar12 * fVar16; + pfVar4[1] = fVar14 + fVar13 * fVar20; + pfVar4[2] = fVar15 + fVar12 * (float)((ulong)_local_70 >> 0x20); + pfVar4[3] = fVar14 + fVar13 * (float)((ulong)_local_60 >> 0x20); + pfVar4[4] = fVar15 + fVar12 * fVar18; + pfVar4[5] = fVar14 + fVar13 * fVar22; + pfVar4[6] = fVar15 + fVar12 * (float)((ulong)_fStack_68 >> 0x20); + pfVar4[7] = fVar14 + fVar13 * (float)((ulong)_fStack_58 >> 0x20); + pfVar4 = pfVar4 + 8; + } while (uVar8 < uVar3); + uVar10 = (ulong)(uVar3 * 8); + /* try { // try from 002c8e70 to 003c8e8f has its CatchHandler @ 002c8e50 */ + if (uVar1 == uVar3 * 4) { + return; + } + } + uVar9 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + uVar1 = (int)uVar10 + 2; + fVar12 = param_3[4]; + fVar13 = *(float *)((long)param_1 + uVar9 + 4); + fVar14 = param_3[5]; + *(float *)((long)param_2 + uVar9) = + param_3[2] + *(float *)((long)param_1 + uVar9) * *param_3; + *(float *)((long)param_2 + uVar9 + 4) = fVar14 + fVar13 * fVar12; + if ((int)uVar1 < param_4) { + /* try { // try from 002c8eb0 to 003c8eb3 has its CatchHandler @ 002c91f8 */ + uVar9 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar1 = (int)uVar10 + 4; + fVar12 = param_3[4]; + fVar13 = *(float *)((long)param_1 + uVar9 + 4); + fVar14 = param_3[5]; + *(float *)((long)param_2 + uVar9) = + param_3[2] + *(float *)((long)param_1 + uVar9) * *param_3; + *(float *)((long)param_2 + uVar9 + 4) = fVar14 + fVar13 * fVar12; + if ((int)uVar1 < param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + /* try { // try from 002c8efc to 003c8eff has its CatchHandler @ 002c91e4 */ + /* try { // try from 002c8f04 to 003c8f07 has its CatchHandler @ 002c91f8 */ + fVar14 = param_3[4]; + fVar13 = *(float *)((long)param_1 + uVar10 + 4); + fVar12 = param_3[5]; + *(float *)((long)param_2 + uVar10) = + param_3[2] + *(float *)((long)param_1 + uVar10) * *param_3; + *(float *)((long)param_2 + uVar10 + 4) = fVar12 + fVar13 * fVar14; + return; + } + } + } + } + } + else { + /* try { // try from 002c8ce0 to 003c8ce3 has its CatchHandler @ 002c8c48 */ + if (iVar6 == 3) { + param_4 = param_4 * 3; + if (0 < param_4) { + uVar3 = (param_4 - 1U) / 3; + uVar1 = uVar3 + 1; + /* try { // try from 002c8f7c to 003c8fef has its CatchHandler @ 002c91a0 */ + pfVar4 = param_2 + (ulong)uVar1 * 3; + if ((((uVar1 < 5 || param_2 < param_1 + 0xc && param_1 < param_2 + 0xc) || + param_3 < pfVar4 && param_2 < param_3 + 1) || + param_3 + 7 < pfVar4 && param_2 < param_3 + 8) || + (param_3 + 0xb < pfVar4 && param_2 < param_3 + 6)) { + iVar6 = 0; + do { + fVar17 = param_1[2]; + iVar6 = iVar6 + 3; + fVar14 = param_3[10]; + fVar16 = param_3[0xb]; + fVar12 = *param_3; + fVar15 = *param_1; + fVar13 = param_3[3]; + param_2[1] = param_3[7] + param_1[1] * param_3[5]; + param_2[2] = fVar16 + fVar17 * fVar14; + *param_2 = fVar13 + fVar15 * fVar12; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar6 < param_4); + } + else { + uVar3 = (uVar3 - 3 >> 2) + 1; + if (param_4 - 1U < 9) { + uVar10 = 0; + } + else { + fVar17 = param_3[3]; + fVar12 = *param_3; + fVar16 = param_3[5]; + fVar15 = param_3[7]; + fVar13 = param_3[10]; + uVar8 = 0; + fVar14 = param_3[0xb]; + pfVar4 = param_2; + pfVar5 = param_1; + do { + fVar18 = *pfVar5; + fVar22 = pfVar5[1]; + fVar26 = pfVar5[2]; + fVar19 = pfVar5[3]; + fVar23 = pfVar5[4]; + fVar27 = pfVar5[5]; + fVar20 = pfVar5[6]; + fVar24 = pfVar5[7]; + fVar28 = pfVar5[8]; + fVar21 = pfVar5[9]; + fVar25 = pfVar5[10]; + fVar29 = pfVar5[0xb]; + pfVar5 = pfVar5 + 0xc; + /* try { // try from 002c903c to 003c9053 has its CatchHandler @ 002c91f8 */ + uVar8 = uVar8 + 1; + _local_b0 = CONCAT14(SUB41(fVar19,0),fVar18); + _local_b0 = CONCAT15((char)((uint)fVar19 >> 8),_local_b0); + _local_b0 = CONCAT16((char)((uint)fVar19 >> 0x10),_local_b0); + _local_b0 = CONCAT17((char)((uint)fVar19 >> 0x18),_local_b0); + _fStack_a8 = CONCAT14(SUB41(fVar21,0),fVar20); + _fStack_a8 = CONCAT15((char)((uint)fVar21 >> 8),_fStack_a8); + _fStack_a8 = CONCAT16((char)((uint)fVar21 >> 0x10),_fStack_a8); + _fStack_a8 = CONCAT17((char)((uint)fVar21 >> 0x18),_fStack_a8); + _local_a0 = CONCAT14(SUB41(fVar23,0),fVar22); + _local_a0 = CONCAT15((char)((uint)fVar23 >> 8),_local_a0); + _local_a0 = CONCAT16((char)((uint)fVar23 >> 0x10),_local_a0); + _local_a0 = CONCAT17((char)((uint)fVar23 >> 0x18),_local_a0); + _fStack_98 = CONCAT14(SUB41(fVar25,0),fVar24); + _fStack_98 = CONCAT15((char)((uint)fVar25 >> 8),_fStack_98); + _fStack_98 = CONCAT16((char)((uint)fVar25 >> 0x10),_fStack_98); + _fStack_98 = CONCAT17((char)((uint)fVar25 >> 0x18),_fStack_98); + /* try { // try from 002c905c to 003c9193 has its CatchHandler @ 002c8e50 */ + *pfVar4 = fVar17 + fVar12 * fVar18; + pfVar4[1] = fVar15 + fVar16 * fVar22; + pfVar4[2] = fVar14 + fVar13 * fVar26; + pfVar4[3] = fVar17 + fVar12 * (float)((ulong)_local_b0 >> 0x20); + pfVar4[4] = fVar15 + fVar16 * (float)((ulong)_local_a0 >> 0x20); + pfVar4[5] = fVar14 + fVar13 * (float)(CONCAT17((char)((uint)fVar27 >> 0x18), + CONCAT16((char)((uint)fVar27 >> 0x10), + CONCAT15((char)((uint)fVar27 + >> 8), + CONCAT14(SUB41(fVar27 + ,0),fVar26)))) >> 0x20); + pfVar4[6] = fVar17 + fVar12 * fVar20; + pfVar4[7] = fVar15 + fVar16 * fVar24; + pfVar4[8] = fVar14 + fVar13 * fVar28; + pfVar4[9] = fVar17 + fVar12 * (float)((ulong)_fStack_a8 >> 0x20); + pfVar4[10] = fVar15 + fVar16 * (float)((ulong)_fStack_98 >> 0x20); + pfVar4[0xb] = fVar14 + fVar13 * (float)(CONCAT17((char)((uint)fVar29 >> 0x18), + CONCAT16((char)((uint)fVar29 >> 0x10) + ,CONCAT15((char)((uint) + fVar29 >> 8),CONCAT14(SUB41(fVar29,0),fVar28)))) + >> 0x20); + pfVar4 = pfVar4 + 0xc; + } while (uVar8 < uVar3); + uVar10 = (ulong)(uVar3 * 0xc); + if (uVar1 == uVar3 * 4) { + return; + } + } + uVar9 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + uVar1 = (int)uVar10 + 3; + fVar14 = param_3[5]; + fVar17 = *(float *)((long)param_1 + uVar9 + 4); + fVar16 = param_3[7]; + fVar12 = param_3[10]; + fVar15 = *(float *)((long)param_1 + uVar9 + 8); + fVar13 = param_3[0xb]; + *(float *)((long)param_2 + uVar9) = + param_3[3] + *(float *)((long)param_1 + uVar9) * *param_3; + *(float *)((long)param_2 + uVar9 + 4) = fVar16 + fVar17 * fVar14; + *(float *)((long)param_2 + uVar9 + 8) = fVar13 + fVar15 * fVar12; + if ((int)uVar1 < param_4) { + uVar9 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar1 = (int)uVar10 + 6; + fVar14 = param_3[5]; + fVar17 = *(float *)((long)param_1 + uVar9 + 4); + fVar16 = param_3[7]; + fVar12 = param_3[10]; + fVar15 = *(float *)((long)param_1 + uVar9 + 8); + fVar13 = param_3[0xb]; + *(float *)((long)param_2 + uVar9) = + param_3[3] + *(float *)((long)param_1 + uVar9) * *param_3; + *(float *)((long)param_2 + uVar9 + 4) = fVar16 + fVar17 * fVar14; + *(float *)((long)param_2 + uVar9 + 8) = fVar13 + fVar15 * fVar12; + if ((int)uVar1 < param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar15 = param_3[5]; + fVar17 = *(float *)((long)param_1 + uVar10 + 4); + fVar13 = param_3[7]; + fVar14 = param_3[10]; + fVar16 = *(float *)((long)param_1 + uVar10 + 8); + fVar12 = param_3[0xb]; + *(float *)((long)param_2 + uVar10) = + param_3[3] + *(float *)((long)param_1 + uVar10) * *param_3; + *(float *)((long)param_2 + uVar10 + 4) = fVar13 + fVar17 * fVar15; + *(float *)((long)param_2 + uVar10 + 8) = fVar12 + fVar16 * fVar14; + return; + } + } + } + } + } + else if (iVar6 == 4) { + param_4 = param_4 * 4; + /* catch() { ... } // from try @ 002c8f7c with catch @ 002c91a0 */ + if (0 < param_4) { + uVar3 = param_4 - 1U >> 2; + uVar1 = uVar3 + 1; + /* try { // try from 002c91e0 to 003c91e3 has its CatchHandler @ 002c8e50 */ + /* catch() { ... } // from try @ 002c8efc with catch @ 002c91e4 */ + /* catch() { ... } // from try @ 002c8eb0 with catch @ 002c91f8 + catch() { ... } // from try @ 002c8f04 with catch @ 002c91f8 + catch() { ... } // from try @ 002c903c with catch @ 002c91f8 */ + if (((uVar1 < 6 || param_2 < param_1 + 0x10 && param_1 < param_2 + 0x10) || + param_3 < param_2 + (ulong)uVar1 * 4 && param_2 < param_3 + 1) || + (param_3 + 0x12 < param_2 + (ulong)uVar1 * 4 && param_2 < param_3 + 0xf)) { + pfVar4 = param_2 + 1; + do { + pfVar5 = pfVar4 + 4; + fVar13 = *param_1; + fVar14 = param_3[4]; + fVar12 = *param_3; + *pfVar4 = param_3[9] + param_1[1] * param_3[6]; + pfVar4[-1] = fVar14 + fVar13 * fVar12; + fVar13 = param_1[2]; + fVar12 = param_3[0xc]; + fVar14 = param_3[0xe]; + pfVar4[2] = param_3[0x13] + param_1[3] * param_3[0x12]; + pfVar4[1] = fVar14 + fVar13 * fVar12; + param_1 = param_1 + 4; + pfVar4 = pfVar5; + } while (pfVar5 != param_2 + (ulong)uVar3 * 4 + 5); + } + else { + uVar3 = (uVar3 - 3 >> 2) + 1; + if (param_4 - 1U < 0xc) { + uVar10 = 0; + } + else { + fVar19 = param_3[4]; + fVar12 = *param_3; + fVar18 = param_3[6]; + fVar17 = param_3[9]; + fVar16 = param_3[0xc]; + uVar8 = 0; + fVar15 = param_3[0xe]; + fVar13 = param_3[0x12]; + fVar14 = param_3[0x13]; + pfVar4 = param_2; + pfVar5 = param_1; + do { + fVar20 = *pfVar5; + fVar24 = pfVar5[1]; + fVar28 = pfVar5[2]; + fVar32 = pfVar5[3]; + fVar21 = pfVar5[4]; + fVar25 = pfVar5[5]; + fVar29 = pfVar5[6]; + fVar33 = pfVar5[7]; + fVar22 = pfVar5[8]; + fVar26 = pfVar5[9]; + fVar30 = pfVar5[10]; + fVar34 = pfVar5[0xb]; + fVar23 = pfVar5[0xc]; + fVar27 = pfVar5[0xd]; + fVar31 = pfVar5[0xe]; + fVar35 = pfVar5[0xf]; + pfVar5 = pfVar5 + 0x10; + uVar8 = uVar8 + 1; + _local_b0 = CONCAT14(SUB41(fVar21,0),fVar20); + _local_b0 = CONCAT15((char)((uint)fVar21 >> 8),_local_b0); + _local_b0 = CONCAT16((char)((uint)fVar21 >> 0x10),_local_b0); + _local_b0 = CONCAT17((char)((uint)fVar21 >> 0x18),_local_b0); + _fStack_a8 = CONCAT14(SUB41(fVar23,0),fVar22); + _fStack_a8 = CONCAT15((char)((uint)fVar23 >> 8),_fStack_a8); + _fStack_a8 = CONCAT16((char)((uint)fVar23 >> 0x10),_fStack_a8); + _fStack_a8 = CONCAT17((char)((uint)fVar23 >> 0x18),_fStack_a8); + _local_a0 = CONCAT14(SUB41(fVar25,0),fVar24); + _local_a0 = CONCAT15((char)((uint)fVar25 >> 8),_local_a0); + _local_a0 = CONCAT16((char)((uint)fVar25 >> 0x10),_local_a0); + _local_a0 = CONCAT17((char)((uint)fVar25 >> 0x18),_local_a0); + _fStack_98 = CONCAT14(SUB41(fVar27,0),fVar26); + _fStack_98 = CONCAT15((char)((uint)fVar27 >> 8),_fStack_98); + _fStack_98 = CONCAT16((char)((uint)fVar27 >> 0x10),_fStack_98); + _fStack_98 = CONCAT17((char)((uint)fVar27 >> 0x18),_fStack_98); + *pfVar4 = fVar19 + fVar12 * fVar20; + pfVar4[1] = fVar17 + fVar18 * fVar24; + pfVar4[2] = fVar15 + fVar16 * fVar28; + pfVar4[3] = fVar14 + fVar13 * fVar32; + pfVar4[4] = fVar19 + fVar12 * (float)((ulong)_local_b0 >> 0x20); + pfVar4[5] = fVar17 + fVar18 * (float)((ulong)_local_a0 >> 0x20); + pfVar4[6] = fVar15 + fVar16 * (float)(CONCAT17((char)((uint)fVar29 >> 0x18), + CONCAT16((char)((uint)fVar29 >> 0x10), + CONCAT15((char)((uint)fVar29 + >> 8), + CONCAT14(SUB41(fVar29 + ,0),fVar28)))) >> 0x20); + pfVar4[7] = fVar14 + fVar13 * (float)(CONCAT17((char)((uint)fVar33 >> 0x18), + CONCAT16((char)((uint)fVar33 >> 0x10), + CONCAT15((char)((uint)fVar33 + >> 8), + CONCAT14(SUB41(fVar33 + ,0),fVar32)))) >> 0x20); + pfVar4[8] = fVar19 + fVar12 * fVar22; + pfVar4[9] = fVar17 + fVar18 * fVar26; + pfVar4[10] = fVar15 + fVar16 * fVar30; + pfVar4[0xb] = fVar14 + fVar13 * fVar34; + pfVar4[0xc] = fVar19 + fVar12 * (float)((ulong)_fStack_a8 >> 0x20); + pfVar4[0xd] = fVar17 + fVar18 * (float)((ulong)_fStack_98 >> 0x20); + pfVar4[0xe] = fVar15 + fVar16 * (float)(CONCAT17((char)((uint)fVar31 >> 0x18), + CONCAT16((char)((uint)fVar31 >> 0x10) + ,CONCAT15((char)((uint) + fVar31 >> 8),CONCAT14(SUB41(fVar31,0),fVar30)))) + >> 0x20); + pfVar4[0xf] = fVar14 + fVar13 * (float)(CONCAT17((char)((uint)fVar35 >> 0x18), + CONCAT16((char)((uint)fVar35 >> 0x10) + ,CONCAT15((char)((uint) + fVar35 >> 8),CONCAT14(SUB41(fVar35,0),fVar34)))) + >> 0x20); + pfVar4 = pfVar4 + 0x10; + } while (uVar8 < uVar3); + uVar10 = (ulong)(uVar3 * 0x10); + if (uVar1 == uVar3 * 4) { + return; + } + } + uVar9 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + uVar1 = (int)uVar10 + 4; + fVar13 = *(float *)((long)param_1 + uVar9 + 4); + fVar14 = param_3[9]; + fVar12 = param_3[6]; + *(float *)((long)param_2 + uVar9) = + param_3[4] + *(float *)((long)param_1 + uVar9) * *param_3; + *(float *)((long)param_2 + uVar9 + 4) = fVar14 + fVar13 * fVar12; + fVar12 = param_3[0x12]; + fVar13 = *(float *)((long)param_1 + uVar9 + 0xc); + fVar14 = param_3[0x13]; + *(float *)((long)param_2 + uVar9 + 8) = + param_3[0xe] + *(float *)((long)param_1 + uVar9 + 8) * param_3[0xc]; + *(float *)((long)param_2 + uVar9 + 0xc) = fVar14 + fVar13 * fVar12; + if ((int)uVar1 < param_4) { + uVar9 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar1 = (int)uVar10 + 8; + fVar13 = *(float *)((long)param_1 + uVar9 + 4); + fVar14 = param_3[9]; + fVar12 = param_3[6]; + *(float *)((long)param_2 + uVar9) = + param_3[4] + *(float *)((long)param_1 + uVar9) * *param_3; + *(float *)((long)param_2 + uVar9 + 4) = fVar14 + fVar13 * fVar12; + fVar12 = param_3[0x12]; + fVar13 = *(float *)((long)param_1 + uVar9 + 0xc); + fVar14 = param_3[0x13]; + *(float *)((long)param_2 + uVar9 + 8) = + param_3[0xe] + *(float *)((long)param_1 + uVar9 + 8) * param_3[0xc]; + *(float *)((long)param_2 + uVar9 + 0xc) = fVar14 + fVar13 * fVar12; + if ((int)uVar1 < param_4) { + uVar10 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + fVar13 = *(float *)((long)param_1 + uVar10 + 4); + fVar14 = param_3[9]; + fVar12 = param_3[6]; + *(float *)((long)param_2 + uVar10) = + param_3[4] + *(float *)((long)param_1 + uVar10) * *param_3; + *(float *)((long)param_2 + uVar10 + 4) = fVar14 + fVar13 * fVar12; + fVar14 = param_3[0x12]; + fVar13 = *(float *)((long)param_1 + uVar10 + 0xc); + fVar12 = param_3[0x13]; + *(float *)((long)param_2 + uVar10 + 8) = + param_3[0xe] + *(float *)((long)param_1 + uVar10 + 8) * param_3[0xc]; + *(float *)((long)param_2 + uVar10 + 0xc) = fVar12 + fVar13 * fVar14; + } + } + } + } + } + else if (0 < param_4) { + uVar10 = -(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2; + iVar11 = 0; + do { + if (0 < iVar6) { + pfVar4 = (float *)((long)param_3 + uVar10); + lVar7 = 0; + pfVar5 = param_3; + do { + fVar14 = *pfVar5; + pfVar5 = (float *)((long)pfVar5 + uVar10 + 8); + fVar12 = *pfVar4; + pfVar4 = (float *)((long)pfVar4 + uVar10 + 4); + param_2[lVar7] = fVar12 + fVar14 * param_1[lVar7]; + lVar7 = lVar7 + 1; + } while ((int)lVar7 < iVar6); + } + iVar11 = iVar11 + 1; + param_1 = (float *)((long)param_1 + uVar10); + param_2 = (float *)((long)param_2 + uVar10); + } while (iVar11 != param_4); + } + } + return; +} + + +================================================================== + +### FUNC 002c9570 (1844 bytes) name=FUN_002c9570 + +void FUN_002c9570(double *param_1,double *param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + double *pdVar2; + uint uVar3; + double *pdVar4; + double *pdVar5; + int iVar6; + uint uVar7; + long lVar8; + ulong uVar9; + int iVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + + iVar6 = (int)param_5; + if (iVar6 == 2) { + if (0 < param_4 * 2) { + uVar7 = param_4 * 2 - 1; + uVar3 = uVar7 >> 1; + uVar1 = uVar3 + 1; + if (((4 < uVar1 && (param_1 + 4 <= param_2 || param_2 + 4 <= param_1)) && + (param_2 + (ulong)uVar1 * 2 <= param_3 || param_3 + 1 <= param_2)) && + (param_2 + (ulong)uVar1 * 2 <= param_3 + 5 || param_3 + 3 <= param_2)) { + uVar3 = (uVar3 - 1 >> 1) + 1; + if (uVar7 < 2) { + uVar9 = 0; + } + else { + dVar14 = param_3[2]; + dVar11 = *param_3; + dVar12 = param_3[4]; + dVar13 = param_3[5]; + uVar7 = 0; + pdVar4 = param_2; + pdVar5 = param_1; + do { + dVar15 = *pdVar5; + dVar17 = pdVar5[1]; + dVar16 = pdVar5[2]; + dVar18 = pdVar5[3]; + pdVar5 = pdVar5 + 4; + uVar7 = uVar7 + 1; + *pdVar4 = dVar14 + dVar11 * dVar15; + pdVar4[1] = dVar13 + dVar12 * dVar17; + pdVar4[2] = dVar14 + dVar11 * dVar16; + pdVar4[3] = dVar13 + dVar12 * dVar18; + pdVar4 = pdVar4 + 4; + } while (uVar7 < uVar3); + uVar9 = (ulong)(uVar3 * 4); + if (uVar1 == uVar3 * 2) { + return; + } + } + uVar9 = -(uVar9 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + dVar13 = param_3[4]; + dVar12 = *(double *)((long)param_1 + uVar9 + 8); + dVar11 = param_3[5]; + *(double *)((long)param_2 + uVar9) = + param_3[2] + *(double *)((long)param_1 + uVar9) * *param_3; + *(double *)((long)param_2 + uVar9 + 8) = dVar11 + dVar12 * dVar13; + return; + } + pdVar4 = param_2 + 1; + pdVar5 = param_1 + 1; + do { + pdVar2 = pdVar5 + 2; + dVar11 = param_3[4]; + dVar13 = param_3[5]; + dVar12 = *pdVar5; + pdVar4[-1] = param_3[2] + pdVar5[-1] * *param_3; + *pdVar4 = dVar13 + dVar12 * dVar11; + pdVar4 = pdVar4 + 2; + pdVar5 = pdVar2; + } while (pdVar2 != param_1 + (ulong)uVar3 * 2 + 3); + } + } + else if (iVar6 == 3) { + param_4 = param_4 * 3; + if (0 < param_4) { + uVar3 = (param_4 - 1U) / 3; + uVar1 = uVar3 + 1; + pdVar4 = param_2 + (ulong)uVar1 * 3; + if (((((4 < uVar1 && (param_1 + 6 <= param_2 || param_2 + 6 <= param_1)) && + (pdVar4 <= param_3 || param_3 + 1 <= param_2)) && + (pdVar4 <= param_3 + 5 || param_3 + 6 <= param_2)) && + (pdVar4 <= param_3 + 10 || param_3 + 4 <= param_2)) && + (pdVar4 <= param_3 + 0xb || param_3 + 8 <= param_2)) { + uVar3 = (uVar3 - 1 >> 1) + 1; + if (param_4 - 1U < 3) { + uVar9 = 0; + } + else { + dVar16 = param_3[3]; + dVar11 = *param_3; + dVar15 = param_3[5]; + dVar14 = param_3[7]; + dVar12 = param_3[10]; + uVar7 = 0; + dVar13 = param_3[0xb]; + pdVar4 = param_2; + pdVar5 = param_1; + do { + dVar17 = *pdVar5; + dVar19 = pdVar5[1]; + dVar21 = pdVar5[2]; + dVar18 = pdVar5[3]; + dVar20 = pdVar5[4]; + dVar22 = pdVar5[5]; + pdVar5 = pdVar5 + 6; + uVar7 = uVar7 + 1; + *pdVar4 = dVar16 + dVar11 * dVar17; + pdVar4[1] = dVar14 + dVar15 * dVar19; + pdVar4[2] = dVar13 + dVar12 * dVar21; + pdVar4[3] = dVar16 + dVar11 * dVar18; + pdVar4[4] = dVar14 + dVar15 * dVar20; + pdVar4[5] = dVar13 + dVar12 * dVar22; + pdVar4 = pdVar4 + 6; + } while (uVar7 < uVar3); + uVar9 = (ulong)(uVar3 * 6); + if (uVar1 == uVar3 * 2) { + return; + } + } + uVar9 = -(uVar9 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + dVar14 = param_3[5]; + dVar16 = *(double *)((long)param_1 + uVar9 + 8); + dVar12 = param_3[7]; + dVar13 = param_3[10]; + dVar15 = *(double *)((long)param_1 + uVar9 + 0x10); + dVar11 = param_3[0xb]; + *(double *)((long)param_2 + uVar9) = + param_3[3] + *(double *)((long)param_1 + uVar9) * *param_3; + *(double *)((long)param_2 + uVar9 + 8) = dVar12 + dVar16 * dVar14; + *(double *)((long)param_2 + uVar9 + 0x10) = dVar11 + dVar15 * dVar13; + return; + } + iVar6 = 0; + do { + dVar16 = param_1[2]; + iVar6 = iVar6 + 3; + dVar13 = param_3[10]; + dVar15 = param_3[0xb]; + dVar11 = *param_3; + dVar14 = *param_1; + dVar12 = param_3[3]; + param_2[1] = param_3[7] + param_1[1] * param_3[5]; + param_2[2] = dVar15 + dVar16 * dVar13; + *param_2 = dVar12 + dVar14 * dVar11; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar6 < param_4); + } + } + else if (iVar6 == 4) { + if (0 < param_4 * 4) { + uVar7 = param_4 * 4 - 1; + uVar3 = uVar7 >> 2; + uVar1 = uVar3 + 1; + pdVar4 = param_2 + (ulong)uVar1 * 4; + if ((((((5 < uVar1 && (param_1 + 8 <= param_2 || param_2 + 8 <= param_1)) && + (pdVar4 <= param_3 || param_3 + 1 <= param_2)) && + (pdVar4 <= param_3 + 9 || param_3 + 7 <= param_2)) && + (pdVar4 <= param_3 + 0xe || param_3 + 5 <= param_2)) && + (pdVar4 <= param_3 + 0x12 || param_3 + 0xd <= param_2)) && + (pdVar4 <= param_3 + 0x13 || param_3 + 0x14 <= param_2)) { + uVar3 = (uVar3 - 1 >> 1) + 1; + if (uVar7 < 4) { + uVar9 = 0; + } + else { + dVar18 = param_3[4]; + dVar11 = *param_3; + dVar17 = param_3[6]; + dVar16 = param_3[9]; + dVar15 = param_3[0xc]; + uVar7 = 0; + dVar14 = param_3[0xe]; + dVar12 = param_3[0x12]; + dVar13 = param_3[0x13]; + pdVar4 = param_2; + pdVar5 = param_1; + do { + dVar19 = *pdVar5; + dVar21 = pdVar5[1]; + dVar23 = pdVar5[2]; + dVar25 = pdVar5[3]; + dVar20 = pdVar5[4]; + dVar22 = pdVar5[5]; + dVar24 = pdVar5[6]; + dVar26 = pdVar5[7]; + pdVar5 = pdVar5 + 8; + uVar7 = uVar7 + 1; + *pdVar4 = dVar18 + dVar11 * dVar19; + pdVar4[1] = dVar16 + dVar17 * dVar21; + pdVar4[2] = dVar14 + dVar15 * dVar23; + pdVar4[3] = dVar13 + dVar12 * dVar25; + pdVar4[4] = dVar18 + dVar11 * dVar20; + pdVar4[5] = dVar16 + dVar17 * dVar22; + pdVar4[6] = dVar14 + dVar15 * dVar24; + pdVar4[7] = dVar13 + dVar12 * dVar26; + pdVar4 = pdVar4 + 8; + } while (uVar7 < uVar3); + uVar9 = (ulong)(uVar3 * 8); + if (uVar1 == uVar3 * 2) { + return; + } + } + uVar9 = -(uVar9 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + dVar12 = *(double *)((long)param_1 + uVar9 + 8); + dVar13 = param_3[9]; + dVar11 = param_3[6]; + *(double *)((long)param_2 + uVar9) = + param_3[4] + *(double *)((long)param_1 + uVar9) * *param_3; + *(double *)((long)param_2 + uVar9 + 8) = dVar13 + dVar12 * dVar11; + dVar13 = param_3[0x12]; + dVar12 = *(double *)((long)param_1 + uVar9 + 0x18); + dVar11 = param_3[0x13]; + *(double *)((long)param_2 + uVar9 + 0x10) = + param_3[0xe] + *(double *)((long)param_1 + uVar9 + 0x10) * param_3[0xc]; + *(double *)((long)param_2 + uVar9 + 0x18) = dVar11 + dVar12 * dVar13; + return; + } + pdVar4 = param_2 + 1; + do { + pdVar5 = pdVar4 + 4; + dVar12 = *param_1; + dVar13 = param_3[4]; + dVar11 = *param_3; + *pdVar4 = param_3[9] + param_1[1] * param_3[6]; + pdVar4[-1] = dVar13 + dVar12 * dVar11; + dVar12 = param_1[2]; + dVar11 = param_3[0xc]; + dVar13 = param_3[0xe]; + pdVar4[2] = param_3[0x13] + param_1[3] * param_3[0x12]; + pdVar4[1] = dVar13 + dVar12 * dVar11; + param_1 = param_1 + 4; + pdVar4 = pdVar5; + } while (pdVar5 != param_2 + (ulong)uVar3 * 4 + 5); + } + } + else if (0 < param_4) { + uVar9 = -(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3; + iVar10 = 0; + do { + if (0 < iVar6) { + pdVar4 = (double *)((long)param_3 + uVar9); + lVar8 = 0; + pdVar5 = param_3; + do { + dVar13 = *pdVar5; + pdVar5 = (double *)((long)pdVar5 + uVar9 + 0x10); + dVar11 = *pdVar4; + pdVar4 = (double *)((long)pdVar4 + uVar9 + 8); + param_2[lVar8] = dVar11 + dVar13 * param_1[lVar8]; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < iVar6); + } + iVar10 = iVar10 + 1; + param_1 = (double *)((long)param_1 + uVar9); + param_2 = (double *)((long)param_2 + uVar9); + } while (iVar10 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c9ca4 (692 bytes) name=FUN_002c9ca4 + +void FUN_002c9ca4(int *param_1,undefined4 *param_2,double *param_3,int param_4,int param_5) + +{ + undefined4 *puVar1; + long lVar2; + long lVar3; + long lVar4; + int *piVar5; + int *piVar6; + undefined4 *puVar7; + double *pdVar8; + double *pdVar9; + int iVar10; + double dVar11; + double dVar12; + + if (param_5 == 2) { + if (0 < param_4 * 2) { + piVar5 = param_1 + 1; + puVar7 = param_2 + 1; + do { + lVar4 = lrint(param_3[2] + (double)piVar5[-1] * *param_3); + piVar6 = piVar5 + 2; + lVar2 = lrint(param_3[5] + (double)*piVar5 * param_3[4]); + puVar7[-1] = (int)lVar4; + *puVar7 = (int)lVar2; + piVar5 = piVar6; + puVar7 = puVar7 + 2; + } while (piVar6 != param_1 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + } + } + else if (param_5 == 3) { + if (0 < param_4 * 3) { + iVar10 = 0; + do { + iVar10 = iVar10 + 3; + lVar4 = lrint(param_3[3] + (double)*param_1 * *param_3); + lVar2 = lrint(param_3[7] + (double)param_1[1] * param_3[5]); + lVar3 = lrint(param_3[0xb] + (double)param_1[2] * param_3[10]); + *param_2 = (int)lVar4; + param_2[1] = (int)lVar2; + param_2[2] = (int)lVar3; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar10 < param_4 * 3); + } + } + else if (param_5 == 4) { + if (0 < param_4 * 4) { + puVar7 = param_2 + 1; + do { + puVar1 = puVar7 + 4; + lVar4 = lrint(param_3[4] + (double)*param_1 * *param_3); + lVar2 = lrint(param_3[9] + (double)param_1[1] * param_3[6]); + puVar7[-1] = (int)lVar4; + *puVar7 = (int)lVar2; + lVar4 = lrint(param_3[0xe] + (double)param_1[2] * param_3[0xc]); + lVar2 = lrint(param_3[0x13] + (double)param_1[3] * param_3[0x12]); + puVar7[1] = (int)lVar4; + puVar7[2] = (int)lVar2; + puVar7 = puVar1; + param_1 = param_1 + 4; + } while (puVar1 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 5); + } + } + else if (0 < param_4) { + iVar10 = 0; + do { + if (0 < param_5) { + lVar4 = 0; + pdVar8 = param_3 + param_5; + pdVar9 = param_3; + do { + dVar12 = *pdVar9; + pdVar9 = pdVar9 + (long)param_5 + 2; + dVar11 = *pdVar8; + pdVar8 = pdVar8 + (long)param_5 + 1; + lVar2 = lrint(dVar11 + dVar12 * (double)param_1[lVar4]); + param_2[lVar4] = (int)lVar2; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + iVar10 = iVar10 + 1; + param_1 = param_1 + param_5; + param_2 = param_2 + param_5; + } while (iVar10 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002c9f58 (980 bytes) name=FUN_002c9f58 + +void FUN_002c9f58(short *param_1,undefined2 *param_2,float *param_3,int param_4,int param_5) + +{ + short *psVar1; + short sVar2; + long lVar3; + undefined2 uVar4; + undefined2 uVar5; + long lVar6; + undefined2 *puVar7; + undefined2 *puVar8; + undefined2 uVar9; + undefined2 uVar10; + undefined2 uVar11; + float *pfVar12; + float *pfVar13; + float fVar14; + float fVar15; + int iVar16; + + if (param_5 == 2) { + if (0 < param_4 * 2) { + param_1 = param_1 + 1; + puVar8 = param_2 + 1; + do { + lVar6 = lrintf(param_3[2] + (float)(int)param_1[-1] * *param_3); + uVar9 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar9 = 0x7fff, (int)lVar6 < 1)) { + uVar9 = 0x8000; + } + sVar2 = *param_1; + param_1 = param_1 + 2; + lVar6 = lrintf(param_3[5] + (float)(int)sVar2 * param_3[4]); + uVar4 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar4 = 0x7fff, (int)lVar6 < 1)) { + uVar4 = 0x8000; + } + puVar8[-1] = uVar9; + puVar7 = puVar8 + 2; + *puVar8 = uVar4; + puVar8 = puVar7; + } while (puVar7 != param_2 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + } + } + else if (param_5 == 3) { + if (0 < param_4 * 3) { + iVar16 = 0; + do { + iVar16 = iVar16 + 3; + lVar6 = lrintf(param_3[3] + (float)(int)*param_1 * *param_3); + uVar4 = 0x8000; + uVar10 = 0x7fff; + uVar9 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar9 = uVar10, (int)lVar6 < 1)) { + uVar9 = uVar4; + } + lVar6 = lrintf(param_3[7] + (float)(int)param_1[1] * param_3[5]); + uVar11 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar11 = uVar10, (int)lVar6 < 1)) { + uVar11 = uVar4; + } + psVar1 = param_1 + 2; + param_1 = param_1 + 3; + lVar6 = lrintf(param_3[0xb] + (float)(int)*psVar1 * param_3[10]); + uVar5 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar5 = uVar10, (int)lVar6 < 1)) { + uVar5 = uVar4; + } + *param_2 = uVar9; + param_2[1] = uVar11; + param_2[2] = uVar5; + param_2 = param_2 + 3; + } while (iVar16 < param_4 * 3); + } + } + else if (param_5 == 4) { + if (0 < param_4 * 4) { + puVar8 = param_2 + 2; + do { + lVar6 = lrintf(param_3[4] + (float)(int)*param_1 * *param_3); + uVar4 = 0x8000; + uVar10 = 0x7fff; + uVar9 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar9 = uVar10, (int)lVar6 < 1)) { + uVar9 = uVar4; + } + lVar6 = lrintf(param_3[9] + (float)(int)param_1[1] * param_3[6]); + uVar11 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar11 = uVar10, (int)lVar6 < 1)) { + uVar11 = uVar4; + } + puVar8[-2] = uVar9; + puVar8[-1] = uVar11; + lVar6 = lrintf(param_3[0xe] + (float)(int)param_1[2] * param_3[0xc]); + uVar9 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar9 = uVar10, (int)lVar6 < 1)) { + uVar9 = uVar4; + } + psVar1 = param_1 + 3; + param_1 = param_1 + 4; + lVar6 = lrintf(param_3[0x13] + (float)(int)*psVar1 * param_3[0x12]); + uVar11 = (short)lVar6; + if ((0xffff < (int)lVar6 + 0x8000U) && (uVar11 = uVar10, (int)lVar6 < 1)) { + uVar11 = uVar4; + } + *puVar8 = uVar9; + puVar7 = puVar8 + 4; + puVar8[1] = uVar11; + puVar8 = puVar7; + } while (puVar7 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + iVar16 = 0; + do { + if (0 < param_5) { + lVar6 = 0; + pfVar12 = param_3 + param_5; + pfVar13 = param_3; + do { + fVar15 = *pfVar13; + pfVar13 = pfVar13 + (long)param_5 + 2; + fVar14 = *pfVar12; + pfVar12 = pfVar12 + (long)param_5 + 1; + lVar3 = lrintf(fVar14 + fVar15 * (float)(int)param_1[lVar6]); + uVar9 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar9 = 0x7fff, (int)lVar3 < 1)) { + uVar9 = 0x8000; + } + param_2[lVar6] = uVar9; + lVar6 = lVar6 + 1; + } while (lVar6 != (ulong)(param_5 - 1) + 1); + } + iVar16 = iVar16 + 1; + param_1 = param_1 + param_5; + param_2 = param_2 + param_5; + } while (iVar16 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002ca32c (932 bytes) name=FUN_002ca32c + +void FUN_002ca32c(ushort *param_1,short *param_2,float *param_3,int param_4,int param_5) + +{ + short sVar1; + short sVar2; + uint uVar3; + uint uVar4; + long lVar5; + short sVar6; + long lVar7; + short *psVar8; + short *psVar9; + float *pfVar10; + float *pfVar11; + int iVar12; + + if (param_5 == 2) { + if (0 < param_4 * 2) { + param_1 = param_1 + 1; + psVar9 = param_2 + 1; + do { + lVar7 = lrintf(param_3[2] + (float)param_1[-1] * *param_3); + sVar6 = (short)lVar7; + if (0xffff < (uint)lVar7) { + sVar6 = -(ushort)(0 < (int)(uint)lVar7); + } + lVar7 = lrintf(param_3[5] + (float)*param_1 * param_3[4]); + sVar1 = (short)lVar7; + if (0xffff < (uint)lVar7) { + sVar1 = -(ushort)(0 < (int)(uint)lVar7); + } + psVar9[-1] = sVar6; + param_1 = param_1 + 2; + psVar8 = psVar9 + 2; + *psVar9 = sVar1; + psVar9 = psVar8; + } while (psVar8 != param_2 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + } + } + else if (param_5 == 3) { + if (0 < param_4 * 3) { + iVar12 = 0; + do { + lVar7 = lrintf(param_3[3] + (float)*param_1 * *param_3); + sVar6 = (short)lVar7; + if (0xffff < (uint)lVar7) { + sVar6 = -(ushort)(0 < (int)(uint)lVar7); + } + lVar7 = lrintf(param_3[7] + (float)param_1[1] * param_3[5]); + sVar1 = (short)lVar7; + if (0xffff < (uint)lVar7) { + sVar1 = -(ushort)(0 < (int)(uint)lVar7); + } + lVar7 = lrintf(param_3[0xb] + (float)param_1[2] * param_3[10]); + sVar2 = (short)lVar7; + if (0xffff < (uint)lVar7) { + sVar2 = -(ushort)(0 < (int)(uint)lVar7); + } + iVar12 = iVar12 + 3; + *param_2 = sVar6; + param_2[1] = sVar1; + param_2[2] = sVar2; + param_1 = param_1 + 3; + param_2 = param_2 + 3; + } while (iVar12 < param_4 * 3); + } + } + else if (param_5 == 4) { + if (0 < param_4 * 4) { + psVar9 = param_2 + 2; + do { + lVar7 = lrintf(param_3[4] + (float)*param_1 * *param_3); + uVar3 = (uint)lVar7; + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + lVar7 = lrintf(param_3[9] + (float)param_1[1] * param_3[6]); + uVar4 = (uint)lVar7; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + psVar9[-2] = (short)uVar3; + psVar9[-1] = (short)uVar4; + lVar7 = lrintf(param_3[0xe] + (float)param_1[2] * param_3[0xc]); + uVar3 = (uint)lVar7; + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + lVar7 = lrintf(param_3[0x13] + (float)param_1[3] * param_3[0x12]); + uVar4 = (uint)lVar7; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + *psVar9 = (short)uVar3; + psVar8 = psVar9 + 4; + param_1 = param_1 + 4; + psVar9[1] = (short)uVar4; + psVar9 = psVar8; + } while (psVar8 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + iVar12 = 0; + do { + if (0 < param_5) { + lVar7 = 0; + pfVar10 = param_3 + param_5; + pfVar11 = param_3; + do { + lVar5 = lrintf(*pfVar10 + *pfVar11 * (float)param_1[lVar7]); + sVar6 = (short)lVar5; + if (0xffff < (uint)lVar5) { + sVar6 = -(ushort)(0 < (int)(uint)lVar5); + } + param_2[lVar7] = sVar6; + lVar7 = lVar7 + 1; + pfVar11 = pfVar11 + (long)param_5 + 2; + pfVar10 = pfVar10 + (long)param_5 + 1; + } while (lVar7 != (ulong)(param_5 - 1) + 1); + } + iVar12 = iVar12 + 1; + param_1 = param_1 + param_5; + param_2 = param_2 + param_5; + } while (iVar12 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002ca6d0 (964 bytes) name=FUN_002ca6d0 + +void FUN_002ca6d0(char *param_1,undefined1 *param_2,float *param_3,int param_4,int param_5) + +{ + char *pcVar1; + char cVar2; + long lVar3; + long lVar4; + undefined1 uVar5; + undefined1 uVar6; + long lVar7; + undefined1 *puVar8; + char *pcVar9; + undefined1 *puVar10; + undefined1 uVar11; + undefined1 uVar12; + float *pfVar13; + undefined1 uVar14; + float *pfVar15; + float fVar16; + long lVar17; + float fVar18; + int iVar19; + + if (param_5 == 2) { + if (0 < param_4 * 2) { + param_1 = param_1 + 1; + puVar10 = param_2 + 1; + do { + lVar3 = lrintf(param_3[2] + (float)(byte)param_1[-1] * *param_3); + uVar11 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar11 = 0x7f, (int)lVar3 < 1)) { + uVar11 = 0x80; + } + cVar2 = *param_1; + param_1 = param_1 + 2; + lVar3 = lrintf(param_3[5] + (float)(int)cVar2 * param_3[4]); + uVar5 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar5 = 0x7f, (int)lVar3 < 1)) { + uVar5 = 0x80; + } + puVar10[-1] = uVar11; + puVar8 = puVar10 + 2; + *puVar10 = uVar5; + puVar10 = puVar8; + } while (puVar8 != param_2 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + } + } + else if (param_5 == 3) { + pcVar9 = param_1; + if (0 < param_4 * 3) { + do { + lVar3 = lrintf(param_3[3] + (float)(int)*pcVar9 * *param_3); + uVar5 = 0x80; + uVar14 = 0x7f; + uVar11 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar11 = uVar14, (int)lVar3 < 1)) { + uVar11 = uVar5; + } + lVar3 = lrintf(param_3[7] + (float)(int)pcVar9[1] * param_3[5]); + uVar12 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar12 = uVar14, (int)lVar3 < 1)) { + uVar12 = uVar5; + } + pcVar1 = pcVar9 + 3; + lVar3 = lrintf(param_3[0xb] + (float)(int)pcVar9[2] * param_3[10]); + uVar6 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar6 = uVar14, (int)lVar3 < 1)) { + uVar6 = uVar5; + } + *param_2 = uVar11; + param_2[1] = uVar12; + param_2[2] = uVar6; + pcVar9 = pcVar1; + param_2 = param_2 + 3; + } while ((int)pcVar1 - (int)param_1 < param_4 * 3); + } + } + else if (param_5 == 4) { + if (0 < param_4 * 4) { + puVar10 = param_2 + 2; + do { + lVar3 = lrintf(param_3[4] + (float)(int)*param_1 * *param_3); + uVar5 = 0x80; + uVar14 = 0x7f; + uVar11 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar11 = uVar14, (int)lVar3 < 1)) { + uVar11 = uVar5; + } + lVar3 = lrintf(param_3[9] + (float)(int)param_1[1] * param_3[6]); + uVar12 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar12 = uVar14, (int)lVar3 < 1)) { + uVar12 = uVar5; + } + puVar10[-2] = uVar11; + puVar10[-1] = uVar12; + lVar3 = lrintf(param_3[0xe] + (float)(int)param_1[2] * param_3[0xc]); + uVar11 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar11 = uVar14, (int)lVar3 < 1)) { + uVar11 = uVar5; + } + pcVar9 = param_1 + 3; + param_1 = param_1 + 4; + lVar3 = lrintf(param_3[0x13] + (float)(int)*pcVar9 * param_3[0x12]); + uVar12 = (char)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar12 = uVar14, (int)lVar3 < 1)) { + uVar12 = uVar5; + } + *puVar10 = uVar11; + puVar8 = puVar10 + 4; + puVar10[1] = uVar12; + puVar10 = puVar8; + } while (puVar8 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + lVar3 = (long)param_5; + iVar19 = 0; + lVar17 = NEON_shl(lVar3,2); + do { + if (0 < param_5) { + lVar7 = 0; + pfVar13 = (float *)((long)param_3 + lVar17); + pfVar15 = param_3; + do { + fVar18 = *pfVar15; + pfVar15 = (float *)((long)pfVar15 + lVar17 + 8); + fVar16 = *pfVar13; + pfVar13 = (float *)((long)pfVar13 + lVar17 + 4); + lVar4 = lrintf(fVar16 + fVar18 * (float)(int)param_1[lVar7]); + uVar11 = (undefined1)lVar4; + if ((0xff < (int)lVar4 + 0x80U) && (uVar11 = 0x7f, (int)lVar4 < 1)) { + uVar11 = 0x80; + } + param_2[lVar7] = uVar11; + lVar7 = lVar7 + 1; + } while (lVar7 != (ulong)(param_5 - 1) + 1); + } + iVar19 = iVar19 + 1; + param_1 = param_1 + lVar3; + param_2 = param_2 + lVar3; + } while (iVar19 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002caa94 (900 bytes) name=FUN_002caa94 + +void FUN_002caa94(byte *param_1,char *param_2,float *param_3,int param_4,int param_5) + +{ + char cVar1; + char cVar2; + uint uVar3; + uint uVar4; + long lVar5; + long lVar6; + char cVar7; + long lVar8; + char *pcVar9; + byte *pbVar10; + char *pcVar11; + float *pfVar12; + float *pfVar13; + int iVar14; + long lVar15; + + if (param_5 == 2) { + if (0 < param_4 * 2) { + param_1 = param_1 + 1; + pcVar11 = param_2 + 1; + do { + lVar5 = lrintf(param_3[2] + (float)param_1[-1] * *param_3); + cVar7 = (char)lVar5; + if (0xff < (uint)lVar5) { + cVar7 = -(0 < (int)(uint)lVar5); + } + lVar5 = lrintf(param_3[5] + (float)*param_1 * param_3[4]); + cVar1 = (char)lVar5; + if (0xff < (uint)lVar5) { + cVar1 = -(0 < (int)(uint)lVar5); + } + pcVar11[-1] = cVar7; + param_1 = param_1 + 2; + pcVar9 = pcVar11 + 2; + *pcVar11 = cVar1; + pcVar11 = pcVar9; + } while (pcVar9 != param_2 + (ulong)(param_4 * 2 - 1U >> 1) * 2 + 3); + } + } + else if (param_5 == 3) { + pbVar10 = param_1; + if (0 < param_4 * 3) { + do { + lVar5 = lrintf(param_3[3] + (float)*pbVar10 * *param_3); + cVar7 = (char)lVar5; + if (0xff < (uint)lVar5) { + cVar7 = -(0 < (int)(uint)lVar5); + } + lVar5 = lrintf(param_3[7] + (float)pbVar10[1] * param_3[5]); + cVar1 = (char)lVar5; + if (0xff < (uint)lVar5) { + cVar1 = -(0 < (int)(uint)lVar5); + } + lVar5 = lrintf(param_3[0xb] + (float)pbVar10[2] * param_3[10]); + cVar2 = (char)lVar5; + if (0xff < (uint)lVar5) { + cVar2 = -(0 < (int)(uint)lVar5); + } + pbVar10 = pbVar10 + 3; + *param_2 = cVar7; + param_2[1] = cVar1; + param_2[2] = cVar2; + param_2 = param_2 + 3; + } while ((int)pbVar10 - (int)param_1 < param_4 * 3); + } + } + else if (param_5 == 4) { + if (0 < param_4 * 4) { + pcVar11 = param_2 + 2; + do { + lVar5 = lrintf(param_3[4] + (float)*param_1 * *param_3); + uVar3 = (uint)lVar5; + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + lVar5 = lrintf(param_3[9] + (float)param_1[1] * param_3[6]); + uVar4 = (uint)lVar5; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + pcVar11[-2] = (char)uVar3; + pcVar11[-1] = (char)uVar4; + lVar5 = lrintf(param_3[0xe] + (float)param_1[2] * param_3[0xc]); + uVar3 = (uint)lVar5; + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + lVar5 = lrintf(param_3[0x13] + (float)param_1[3] * param_3[0x12]); + uVar4 = (uint)lVar5; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + *pcVar11 = (char)uVar3; + pcVar9 = pcVar11 + 4; + param_1 = param_1 + 4; + pcVar11[1] = (char)uVar4; + pcVar11 = pcVar9; + } while (pcVar9 != param_2 + (ulong)(param_4 * 4 - 1U >> 2) * 4 + 6); + } + } + else if (0 < param_4) { + lVar5 = (long)param_5; + iVar14 = 0; + lVar15 = NEON_shl(lVar5,2); + do { + if (0 < param_5) { + lVar8 = 0; + pfVar12 = (float *)((long)param_3 + lVar15); + pfVar13 = param_3; + do { + lVar6 = lrintf(*pfVar12 + *pfVar13 * (float)param_1[lVar8]); + cVar7 = (char)lVar6; + if (0xff < (uint)lVar6) { + cVar7 = -(0 < (int)(uint)lVar6); + } + param_2[lVar8] = cVar7; + lVar8 = lVar8 + 1; + pfVar13 = (float *)((long)pfVar13 + lVar15 + 8); + pfVar12 = (float *)((long)pfVar12 + lVar15 + 4); + } while (lVar8 != (ulong)(param_5 - 1) + 1); + } + iVar14 = iVar14 + 1; + param_1 = param_1 + lVar5; + param_2 = param_2 + lVar5; + } while (iVar14 != param_4); + } + return; +} + + +================================================================== + +### FUNC 002cae18 (1224 bytes) name=FUN_002cae18 + +void FUN_002cae18(undefined4 *param_1,ulong param_2,float *param_3,ulong param_4,double *param_5, + ulong param_6,int *param_7,int *param_8,uint param_9) + +{ + float *pfVar1; + uint uVar2; + int iVar3; + uint uVar4; + undefined4 uVar5; + int iVar6; + uint uVar7; + float *pfVar8; + undefined4 *puVar9; + long lVar10; + float *pfVar11; + float *pfVar12; + long lVar13; + undefined4 *puVar14; + double *pdVar15; + float *pfVar16; + ulong uVar17; + ulong uVar18; + undefined4 *puVar19; + undefined4 *puVar20; + double *pdVar21; + float *pfVar22; + double *pdVar23; + double *pdVar24; + ulong uVar25; + int iVar26; + uint uVar27; + int iVar28; + double dVar29; + float fVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + uint uVar35; + long lVar36; + long lVar37; + undefined4 auStack_420 [264]; + + param_4 = param_4 >> 2; + puVar9 = auStack_420; + uVar2 = param_9 & 0x10; + iVar28 = *param_7; + param_2 = param_2 >> 2; + iVar3 = *param_8; + uVar35 = param_9 & 1; + if ((param_9 & 1) == 0) { + puVar20 = (undefined4 *)0x0; + uVar25 = 1; + } + else { + iVar28 = param_7[1]; + uVar17 = (ulong)iVar28; + uVar25 = param_2; + if (uVar17 < 0x109) { + param_2 = 1; + uVar35 = 0; + puVar20 = puVar9; + } + else { + uVar18 = uVar17 << 2; + if (0x1fc0000000000000 < uVar17) { + uVar18 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar18); + param_2 = 1; + uVar35 = (uint)(puVar9 != auStack_420); + puVar20 = puVar9; + } + } + uVar27 = param_9 & 2; + if ((param_9 >> 1 & 1) == 0) { + uVar4 = param_8[1]; + if (0 < (int)uVar4) { + uVar7 = iVar3 - 4U >> 2; + iVar26 = (uVar7 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar26 = 0; + } + lVar37 = NEON_shl(param_2,2); + lVar13 = (long)iVar26; + lVar36 = NEON_shl(lVar13,3); + do { + puVar19 = param_1; + if ((puVar20 != (undefined4 *)0x0) && (puVar19 = puVar20, 0 < iVar28)) { + lVar10 = 0; + puVar14 = param_1; + do { + uVar5 = *puVar14; + puVar14 = puVar14 + uVar25; + puVar20[lVar10] = uVar5; + lVar10 = lVar10 + 1; + } while ((int)lVar10 < iVar28); + } + if (0 < iVar3 + -3) { + pdVar15 = param_5 + 2; + pdVar24 = param_5 + 1; + pdVar23 = param_5 + 3; + pdVar21 = param_5; + pfVar22 = param_3; + do { + if (uVar2 == 0) { + dVar31 = 0.0; + dVar32 = 0.0; + dVar33 = dVar32; + dVar34 = dVar32; + } + else { + dVar32 = *pdVar15; + dVar31 = *pdVar23; + dVar33 = *pdVar24; + dVar34 = *pdVar21; + } + if (0 < iVar28) { + lVar10 = 0; + pfVar11 = pfVar22; + do { + pfVar8 = (float *)(puVar19 + lVar10); + lVar10 = lVar10 + 1; + fVar30 = *pfVar11; + pfVar16 = pfVar11 + 1; + pfVar12 = pfVar11 + 2; + pfVar1 = pfVar11 + 3; + pfVar11 = pfVar11 + param_4; + dVar29 = (double)*pfVar8; + dVar34 = dVar34 + dVar29 * (double)fVar30; + dVar33 = dVar33 + dVar29 * (double)*pfVar16; + dVar32 = dVar32 + dVar29 * (double)*pfVar12; + dVar31 = dVar31 + dVar29 * (double)*pfVar1; + } while ((int)lVar10 < iVar28); + } + pdVar24 = pdVar24 + 4; + pdVar23 = pdVar23 + 4; + pfVar22 = pfVar22 + 4; + pdVar21[1] = dVar33; + *pdVar21 = dVar34; + pdVar21 = pdVar21 + 4; + pdVar15[1] = dVar31; + *pdVar15 = dVar32; + pdVar15 = pdVar15 + 4; + } while (pdVar15 != param_5 + (ulong)uVar7 * 4 + 6); + } + if (iVar26 < iVar3) { + pdVar15 = (double *)((long)param_5 + lVar36); + pfVar22 = param_3 + lVar13; + do { + dVar31 = 0.0; + if (uVar2 != 0) { + dVar31 = *pdVar15; + } + if (0 < iVar28) { + lVar10 = 0; + pfVar11 = pfVar22; + do { + pfVar16 = (float *)(puVar19 + lVar10); + lVar10 = lVar10 + 1; + fVar30 = *pfVar11; + pfVar11 = pfVar11 + param_4; + dVar31 = dVar31 + (double)fVar30 * (double)*pfVar16; + } while ((int)lVar10 < iVar28); + } + pdVar24 = pdVar15 + 1; + *pdVar15 = dVar31; + pfVar22 = pfVar22 + 1; + pdVar15 = pdVar24; + } while (pdVar24 != param_5 + lVar13 + 1 + (ulong)(uint)((iVar3 + -1) - iVar26)); + } + uVar27 = uVar27 + 1; + param_5 = param_5 + (param_6 >> 3); + param_1 = (undefined4 *)((long)param_1 + lVar37); + } while (uVar27 != uVar4); + } + } + else { + iVar3 = param_8[1]; + if (0 < iVar3) { + iVar6 = *param_8; + uVar27 = iVar28 - 2U >> 1; + iVar26 = 0; + do { + puVar19 = param_1; + if ((puVar20 != (undefined4 *)0x0) && (puVar19 = puVar20, 0 < iVar28)) { + lVar13 = 0; + puVar14 = param_1; + do { + uVar5 = *puVar14; + puVar14 = puVar14 + uVar25; + puVar20[lVar13] = uVar5; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < iVar28); + } + if (0 < iVar6) { + pfVar22 = param_3; + pdVar15 = param_5; + do { + dVar31 = 0.0; + if (uVar2 != 0) { + dVar31 = *pdVar15; + } + dVar33 = 0.0; + if (iVar28 + -1 < 1) { + uVar17 = 0; + } + else { + pfVar11 = (float *)(puVar19 + 1); + pfVar16 = pfVar22 + 1; + do { + pfVar12 = pfVar11 + 2; + dVar31 = dVar31 + (double)pfVar16[-1] * (double)pfVar11[-1]; + dVar33 = dVar33 + (double)*pfVar16 * (double)*pfVar11; + pfVar11 = pfVar12; + pfVar16 = pfVar16 + 2; + } while (pfVar12 != (float *)(puVar19 + (ulong)uVar27 * 2 + 3)); + uVar17 = (ulong)((uVar27 + 1) * 2); + } + if ((int)uVar17 < iVar28) { + uVar18 = -(uVar17 >> 0x1f) & 0xfffffffc00000000 | uVar17 << 2; + lVar13 = 0; + do { + lVar36 = lVar13 + uVar18; + lVar37 = lVar13 + uVar18; + lVar13 = lVar13 + 4; + dVar31 = dVar31 + (double)*(float *)((long)pfVar22 + lVar37) * + (double)*(float *)((long)puVar19 + lVar36); + } while (lVar13 != ((ulong)(uint)((iVar28 + -1) - (int)uVar17) + 1) * 4); + } + pfVar22 = pfVar22 + param_4; + pdVar24 = pdVar15 + 1; + *pdVar15 = dVar31 + dVar33; + pdVar15 = pdVar24; + } while (param_5 + (ulong)(iVar6 - 1) + 1 != pdVar24); + } + iVar26 = iVar26 + 1; + param_1 = param_1 + param_2; + param_5 = param_5 + (param_6 >> 3); + } while (iVar26 != iVar3); + } + } + if (uVar35 != 0) { + operator_delete__(puVar9); + } + return; +} + + +================================================================== + +### FUNC 002cb304 (64 bytes) name=FUN_002cb304 + +void FUN_002cb304(void) + +{ + FUN_002cae18(); + return; +} + + +================================================================== + +### FUNC 002cb344 (1556 bytes) name=FUN_002cb344 + +void FUN_002cb344(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + float *pfVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float *pfVar6; + float *pfVar7; + uint uVar8; + uint uVar9; + int iVar10; + long lVar11; + bool bVar12; + undefined1 *puVar13; + long lVar14; + float *pfVar15; + long lVar16; + float *pfVar17; + float *pfVar18; + float *pfVar19; + float *pfVar20; + undefined8 *puVar21; + undefined8 *puVar22; + float *pfVar23; + uint uVar24; + long lVar25; + uint uVar26; + float *pfVar27; + long lVar28; + float *pfVar29; + float *pfVar30; + undefined8 *puVar31; + undefined8 *puVar32; + ulong uVar33; + int iVar34; + ulong uVar35; + ulong uVar36; + float fVar37; + double dVar38; + float fVar39; + double dVar40; + double dVar41; + double dVar42; + double dVar43; + undefined1 auStack_408 [1032]; + + pfVar29 = *(float **)(param_2 + 0x10); + uVar33 = *(ulong *)(param_2 + 0x50) >> 2; + puVar31 = *(undefined8 **)(param_3 + 0x10); + uVar36 = *(ulong *)(param_3 + 0x50) >> 2; + pfVar30 = *(float **)(param_4 + 0x10); + if (*(int *)(param_4 + 8) < 2) { + uVar35 = 0; + } + else { + uVar35 = *(ulong *)(param_4 + 0x50) >> 2; + } + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + bVar1 = (int)uVar9 <= *(int *)(param_4 + 0xc); + iVar34 = iVar10 * 4; + if ((pfVar30 != (float *)0x0) && (iVar34 = iVar10 * 0x14, bVar1)) { + iVar34 = iVar10 * 4; + } + if ((ulong)(long)iVar34 < 0x409) { + puVar13 = auStack_408; + bVar12 = false; + } + else { + puVar13 = operator_new__((long)iVar34); + bVar12 = puVar13 != auStack_408; + } + if (pfVar30 == (float *)0x0) { +LAB_002cb48c: + if (0 < (int)uVar9) { + lVar28 = uVar36 * 4; + lVar25 = 0; + uVar26 = uVar9 - 4; + uVar24 = 0; + pfVar30 = pfVar29; + puVar32 = puVar31; + do { + lVar14 = 0; + pfVar23 = pfVar30; + if (0 < iVar10) { + do { + fVar39 = *pfVar23; + pfVar23 = pfVar23 + uVar33; + *(float *)(puVar13 + lVar14 * 4) = fVar39; + lVar14 = lVar14 + 1; + } while ((int)lVar14 < iVar10); + } + uVar8 = uVar24; + if ((int)uVar24 < (int)(uVar9 - 3)) { + puVar21 = puVar31; + pfVar23 = pfVar30; + do { + dVar40 = 0.0; + dVar41 = dVar40; + dVar42 = dVar40; + dVar43 = dVar40; + if (0 < iVar10) { + dVar41 = 0.0; + lVar14 = 0; + dVar42 = 0.0; + dVar43 = 0.0; + pfVar15 = pfVar23; + do { + lVar16 = lVar14 * 4; + lVar14 = lVar14 + 1; + fVar39 = *pfVar15; + pfVar27 = pfVar15 + 1; + pfVar18 = pfVar15 + 2; + pfVar20 = pfVar15 + 3; + pfVar15 = pfVar15 + uVar33; + dVar38 = (double)*(float *)(puVar13 + lVar16); + dVar43 = dVar43 + dVar38 * (double)fVar39; + dVar42 = dVar42 + dVar38 * (double)*pfVar27; + dVar41 = dVar41 + dVar38 * (double)*pfVar18; + dVar40 = dVar40 + dVar38 * (double)*pfVar20; + } while ((int)lVar14 < iVar10); + } + pfVar23 = pfVar23 + 4; + puVar22 = puVar21 + 2; + puVar21[1] = CONCAT44((float)(dVar40 * param_1),(float)(dVar41 * param_1)); + *puVar21 = CONCAT44((float)(dVar42 * param_1),(float)(dVar43 * param_1)); + puVar21 = puVar22; + } while (puVar22 != + (undefined8 *)((long)puVar32 + (lVar25 + 4 + (ulong)(uVar26 >> 2) * 4) * 4)); + uVar8 = (int)lVar25 + 4 + (uVar26 >> 2) * 4; + } + if ((int)uVar8 < (int)uVar9) { + uVar36 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + lVar14 = 0; + do { + dVar41 = 0.0; + pfVar23 = (float *)((long)pfVar29 + lVar14 + uVar36); + if (0 < iVar10) { + lVar16 = 0; + do { + lVar11 = lVar16 * 4; + lVar16 = lVar16 + 1; + fVar39 = *pfVar23; + pfVar23 = pfVar23 + uVar33; + dVar41 = dVar41 + (double)fVar39 * (double)*(float *)(puVar13 + lVar11); + } while ((int)lVar16 < iVar10); + } + *(float *)((long)puVar32 + lVar14 + uVar36) = (float)(dVar41 * param_1); + lVar14 = lVar14 + 4; + } while (lVar14 != ((ulong)((uVar9 - 1) - uVar8) + 1) * 4); + } + uVar24 = uVar24 + 1; + puVar32 = (undefined8 *)((long)puVar32 + lVar28); + lVar25 = lVar25 + 1; + uVar26 = uVar26 - 1; + pfVar30 = pfVar30 + 1; + puVar31 = (undefined8 *)((long)puVar31 + lVar28 + 4); + } while (uVar24 != uVar9); + } + } + else { + if (bVar1) { + pfVar23 = (float *)0x0; + } + else { + pfVar23 = (float *)(puVar13 + (long)iVar10 * 4); + if (0 < iVar10) { + pfVar15 = pfVar23 + 3; + do { + fVar39 = *pfVar30; + pfVar27 = pfVar15 + 4; + pfVar30 = pfVar30 + uVar35; + *pfVar15 = fVar39; + pfVar15[-1] = fVar39; + pfVar15[-2] = fVar39; + pfVar15[-3] = fVar39; + pfVar15 = pfVar27; + } while (pfVar27 != pfVar23 + (ulong)(iVar10 - 1) * 4 + 7); + } + if (uVar35 != 0) { + uVar35 = 4; + } + pfVar30 = pfVar23; + if (pfVar23 == (float *)0x0) goto LAB_002cb48c; + } + if (0 < (int)uVar9) { + lVar28 = uVar36 * 4; + lVar25 = 0; + uVar26 = uVar9 - 4; + uVar24 = 0; + pfVar15 = pfVar29; + pfVar27 = pfVar30; + puVar32 = puVar31; + if (pfVar23 == (float *)0x0) goto LAB_002cb8e0; + do { + if (0 < iVar10) { + lVar14 = 0; + pfVar18 = pfVar15; + pfVar20 = pfVar23; + do { + fVar39 = *pfVar18; + pfVar18 = pfVar18 + uVar33; + fVar37 = *pfVar20; + pfVar20 = pfVar20 + uVar35; + *(float *)(puVar13 + lVar14 * 4) = fVar39 - fVar37; + lVar14 = lVar14 + 1; + } while ((int)lVar14 < iVar10); + } + while( true ) { + uVar8 = uVar24; + if ((int)uVar24 < (int)(uVar9 - 3)) { + pfVar20 = pfVar15; + puVar21 = puVar31; + pfVar18 = pfVar27; + do { + pfVar19 = pfVar23; + if (pfVar23 == (float *)0x0) { + pfVar19 = pfVar18; + } + dVar40 = 0.0; + dVar41 = dVar40; + dVar42 = dVar40; + dVar43 = dVar40; + if (0 < iVar10) { + dVar41 = 0.0; + lVar14 = 0; + dVar42 = 0.0; + dVar43 = 0.0; + pfVar17 = pfVar20; + do { + pfVar2 = pfVar17 + 2; + pfVar3 = pfVar17 + 3; + fVar39 = *pfVar17; + fVar37 = *pfVar19; + pfVar4 = pfVar17 + 1; + pfVar17 = pfVar17 + uVar33; + pfVar5 = pfVar19 + 1; + pfVar6 = pfVar19 + 2; + pfVar7 = pfVar19 + 3; + pfVar19 = pfVar19 + uVar35; + lVar16 = lVar14 * 4; + lVar14 = lVar14 + 1; + dVar38 = (double)*(float *)(puVar13 + lVar16); + dVar41 = dVar41 + dVar38 * (double)(*pfVar2 - *pfVar6); + dVar43 = dVar43 + dVar38 * (double)(fVar39 - fVar37); + dVar42 = dVar42 + dVar38 * (double)(*pfVar4 - *pfVar5); + dVar40 = dVar40 + dVar38 * (double)(*pfVar3 - *pfVar7); + } while ((int)lVar14 < iVar10); + } + pfVar18 = pfVar18 + 4; + pfVar20 = pfVar20 + 4; + puVar22 = puVar21 + 2; + puVar21[1] = CONCAT44((float)(dVar40 * param_1),(float)(dVar41 * param_1)); + *puVar21 = CONCAT44((float)(dVar42 * param_1),(float)(dVar43 * param_1)); + puVar21 = puVar22; + } while (puVar22 != + (undefined8 *)((long)puVar32 + (lVar25 + 4 + (ulong)(uVar26 >> 2) * 4) * 4)); + uVar8 = (int)lVar25 + 4 + (uVar26 >> 2) * 4; + } + if ((int)uVar8 < (int)uVar9) { + lVar14 = 0; + uVar36 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + do { + lVar16 = lVar14 + uVar36; + pfVar18 = (float *)((long)pfVar29 + lVar16); + pfVar20 = pfVar23; + if (pfVar23 == (float *)0x0) { + pfVar20 = (float *)((long)pfVar30 + lVar16); + } + dVar41 = 0.0; + if (0 < iVar10) { + lVar16 = 0; + do { + fVar39 = *pfVar18; + pfVar18 = pfVar18 + uVar33; + fVar37 = *pfVar20; + pfVar20 = pfVar20 + uVar35; + lVar11 = lVar16 * 4; + lVar16 = lVar16 + 1; + dVar41 = dVar41 + (double)(fVar39 - fVar37) * (double)*(float *)(puVar13 + lVar11) + ; + } while ((int)lVar16 < iVar10); + } + *(float *)((long)puVar32 + lVar14 + uVar36) = (float)(dVar41 * param_1); + lVar14 = lVar14 + 4; + } while (lVar14 != ((ulong)((uVar9 - 1) - uVar8) + 1) * 4); + } + uVar24 = uVar24 + 1; + puVar32 = (undefined8 *)((long)puVar32 + lVar28); + lVar25 = lVar25 + 1; + uVar26 = uVar26 - 1; + pfVar15 = pfVar15 + 1; + pfVar27 = pfVar27 + 1; + puVar31 = (undefined8 *)((long)puVar31 + lVar28 + 4); + if (uVar24 == uVar9) goto LAB_002cb654; + if (pfVar23 != (float *)0x0) break; +LAB_002cb8e0: + pfVar18 = pfVar23; + pfVar20 = pfVar15; + pfVar19 = pfVar27; + if (0 < iVar10) { + do { + *(float *)(puVar13 + (long)pfVar18 * 4) = *pfVar20 - *pfVar19; + pfVar18 = (float *)((long)pfVar18 + 1); + pfVar20 = pfVar20 + uVar33; + pfVar19 = pfVar19 + uVar35; + } while ((int)pfVar18 < iVar10); + } + } + } while( true ); + } + } +LAB_002cb654: + if (bVar12) { + operator_delete__(puVar13); + } + return; +} + + +================================================================== + +### FUNC 002cb978 (1504 bytes) name=FUN_002cb978 + +void FUN_002cb978(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + double *pdVar2; + double *pdVar3; + double *pdVar4; + double *pdVar5; + double *pdVar6; + double *pdVar7; + uint uVar8; + uint uVar9; + int iVar10; + long lVar11; + bool bVar12; + undefined1 *puVar13; + double *pdVar14; + long lVar15; + double *pdVar16; + long lVar17; + double *pdVar18; + double *pdVar19; + double dVar20; + double *pdVar21; + double *pdVar22; + double *pdVar23; + double *pdVar24; + double *pdVar25; + uint uVar26; + long lVar27; + uint uVar28; + double *pdVar29; + double *pdVar30; + double *pdVar31; + ulong uVar32; + ulong uVar33; + int iVar34; + ulong uVar35; + ulong uVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + undefined1 auStack_408 [1032]; + + pdVar29 = *(double **)(param_2 + 0x10); + uVar33 = *(ulong *)(param_2 + 0x50) >> 3; + pdVar31 = *(double **)(param_3 + 0x10); + uVar32 = *(ulong *)(param_3 + 0x50) >> 3; + pdVar30 = *(double **)(param_4 + 0x10); + if (*(int *)(param_4 + 8) < 2) { + uVar35 = 0; + } + else { + uVar35 = *(ulong *)(param_4 + 0x50) >> 3; + } + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + bVar1 = (int)uVar9 <= *(int *)(param_4 + 0xc); + iVar34 = iVar10 * 8; + if ((pdVar30 != (double *)0x0) && (iVar34 = iVar10 * 0x28, bVar1)) { + iVar34 = iVar10 * 8; + } + if ((ulong)(long)iVar34 < 0x409) { + puVar13 = auStack_408; + bVar12 = false; + } + else { + puVar13 = operator_new__((long)iVar34); + bVar12 = puVar13 != auStack_408; + } + if (pdVar30 == (double *)0x0) { +LAB_002cbac4: + if (0 < (int)uVar9) { + lVar27 = 0; + uVar28 = uVar9 - 4; + uVar26 = 0; + pdVar30 = pdVar29; + pdVar25 = pdVar31; + do { + lVar15 = 0; + pdVar14 = pdVar30; + if (0 < iVar10) { + do { + dVar20 = *pdVar14; + pdVar14 = pdVar14 + uVar33; + *(double *)(puVar13 + lVar15 * 8) = dVar20; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < iVar10); + } + uVar8 = uVar26; + if ((int)uVar26 < (int)(uVar9 - 3)) { + pdVar23 = pdVar31; + pdVar14 = pdVar30; + do { + dVar38 = 0.0; + dVar20 = dVar38; + dVar39 = dVar38; + dVar40 = dVar38; + if (0 < iVar10) { + dVar20 = 0.0; + lVar15 = 0; + dVar39 = 0.0; + dVar40 = 0.0; + pdVar16 = pdVar14; + do { + dVar37 = *(double *)(puVar13 + lVar15 * 8); + lVar15 = lVar15 + 1; + dVar41 = *pdVar16; + pdVar19 = pdVar16 + 1; + pdVar22 = pdVar16 + 2; + pdVar24 = pdVar16 + 3; + pdVar16 = pdVar16 + uVar33; + dVar40 = dVar40 + dVar37 * dVar41; + dVar39 = dVar39 + dVar37 * *pdVar19; + dVar20 = dVar20 + dVar37 * *pdVar22; + dVar38 = dVar38 + dVar37 * *pdVar24; + } while ((int)lVar15 < iVar10); + } + pdVar16 = pdVar23 + 4; + pdVar14 = pdVar14 + 4; + pdVar23[1] = dVar39 * param_1; + *pdVar23 = dVar40 * param_1; + pdVar23[3] = dVar38 * param_1; + pdVar23[2] = dVar20 * param_1; + pdVar23 = pdVar16; + } while (pdVar16 != pdVar25 + lVar27 + 4 + (ulong)(uVar28 >> 2) * 4); + uVar8 = (int)lVar27 + 4 + (uVar28 >> 2) * 4; + } + if ((int)uVar8 < (int)uVar9) { + uVar35 = -(ulong)(uVar8 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar8 << 3; + lVar15 = 0; + do { + dVar20 = 0.0; + pdVar14 = (double *)((long)pdVar29 + lVar15 + uVar35); + if (0 < iVar10) { + lVar17 = 0; + do { + lVar11 = lVar17 * 8; + lVar17 = lVar17 + 1; + dVar39 = *pdVar14; + pdVar14 = pdVar14 + uVar33; + dVar20 = dVar20 + dVar39 * *(double *)(puVar13 + lVar11); + } while ((int)lVar17 < iVar10); + } + *(double *)((long)pdVar25 + lVar15 + uVar35) = dVar20 * param_1; + lVar15 = lVar15 + 8; + } while (lVar15 != ((ulong)((uVar9 - 1) - uVar8) + 1) * 8); + } + uVar26 = uVar26 + 1; + pdVar25 = pdVar25 + uVar32; + lVar27 = lVar27 + 1; + uVar28 = uVar28 - 1; + pdVar30 = pdVar30 + 1; + pdVar31 = pdVar31 + uVar32 + 1; + } while (uVar26 != uVar9); + } + } + else { + if (bVar1) { + pdVar25 = (double *)0x0; + } + else { + pdVar25 = (double *)(puVar13 + (long)iVar10 * 8); + if (0 < iVar10) { + pdVar14 = pdVar25 + 3; + do { + dVar20 = *pdVar30; + pdVar23 = pdVar14 + 4; + pdVar30 = pdVar30 + uVar35; + *pdVar14 = dVar20; + pdVar14[-1] = dVar20; + pdVar14[-2] = dVar20; + pdVar14[-3] = dVar20; + pdVar14 = pdVar23; + } while (pdVar23 != pdVar25 + (ulong)(iVar10 - 1) * 4 + 7); + } + if (uVar35 != 0) { + uVar35 = 4; + } + pdVar30 = pdVar25; + if (pdVar25 == (double *)0x0) goto LAB_002cbac4; + } + if (0 < (int)uVar9) { + lVar27 = 0; + uVar28 = uVar9 - 4; + uVar26 = 0; + pdVar14 = pdVar29; + pdVar23 = pdVar30; + pdVar16 = pdVar31; + if (pdVar25 == (double *)0x0) goto LAB_002cbee0; + do { + if (0 < iVar10) { + lVar15 = 0; + pdVar19 = pdVar14; + pdVar22 = pdVar25; + do { + dVar20 = *pdVar19; + pdVar19 = pdVar19 + uVar33; + dVar39 = *pdVar22; + pdVar22 = pdVar22 + uVar35; + *(double *)(puVar13 + lVar15 * 8) = dVar20 - dVar39; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < iVar10); + } + while( true ) { + uVar8 = uVar26; + if ((int)uVar26 < (int)(uVar9 - 3)) { + pdVar24 = pdVar31; + pdVar22 = pdVar14; + pdVar19 = pdVar23; + do { + pdVar21 = pdVar25; + if (pdVar25 == (double *)0x0) { + pdVar21 = pdVar19; + } + dVar38 = 0.0; + dVar20 = dVar38; + dVar39 = dVar38; + dVar40 = dVar38; + if (0 < iVar10) { + dVar20 = 0.0; + lVar15 = 0; + dVar39 = 0.0; + dVar40 = 0.0; + pdVar18 = pdVar22; + do { + pdVar2 = pdVar18 + 3; + dVar41 = *pdVar18; + dVar42 = *pdVar21; + pdVar3 = pdVar18 + 1; + pdVar4 = pdVar21 + 1; + pdVar5 = pdVar18 + 2; + pdVar18 = pdVar18 + uVar33; + pdVar6 = pdVar21 + 2; + pdVar7 = pdVar21 + 3; + pdVar21 = pdVar21 + uVar35; + dVar37 = *(double *)(puVar13 + lVar15 * 8); + lVar15 = lVar15 + 1; + dVar40 = dVar40 + dVar37 * (dVar41 - dVar42); + dVar39 = dVar39 + dVar37 * (*pdVar3 - *pdVar4); + dVar20 = dVar20 + dVar37 * (*pdVar5 - *pdVar6); + dVar38 = dVar38 + dVar37 * (*pdVar2 - *pdVar7); + } while ((int)lVar15 < iVar10); + } + pdVar21 = pdVar24 + 4; + pdVar19 = pdVar19 + 4; + pdVar22 = pdVar22 + 4; + pdVar24[1] = dVar39 * param_1; + *pdVar24 = dVar40 * param_1; + pdVar24[3] = dVar38 * param_1; + pdVar24[2] = dVar20 * param_1; + pdVar24 = pdVar21; + } while (pdVar21 != pdVar16 + lVar27 + 4 + (ulong)(uVar28 >> 2) * 4); + uVar8 = (int)lVar27 + 4 + (uVar28 >> 2) * 4; + } + if ((int)uVar8 < (int)uVar9) { + lVar15 = 0; + uVar36 = -(ulong)(uVar8 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar8 << 3; + do { + lVar17 = lVar15 + uVar36; + pdVar19 = (double *)((long)pdVar29 + lVar17); + pdVar22 = pdVar25; + if (pdVar25 == (double *)0x0) { + pdVar22 = (double *)((long)pdVar30 + lVar17); + } + dVar20 = 0.0; + if (0 < iVar10) { + lVar17 = 0; + do { + dVar39 = *pdVar19; + pdVar19 = pdVar19 + uVar33; + dVar40 = *pdVar22; + pdVar22 = pdVar22 + uVar35; + lVar11 = lVar17 * 8; + lVar17 = lVar17 + 1; + dVar20 = dVar20 + (dVar39 - dVar40) * *(double *)(puVar13 + lVar11); + } while ((int)lVar17 < iVar10); + } + *(double *)((long)pdVar16 + lVar15 + uVar36) = dVar20 * param_1; + lVar15 = lVar15 + 8; + } while (lVar15 != ((ulong)((uVar9 - 1) - uVar8) + 1) * 8); + } + uVar26 = uVar26 + 1; + pdVar16 = pdVar16 + uVar32; + lVar27 = lVar27 + 1; + uVar28 = uVar28 - 1; + pdVar14 = pdVar14 + 1; + pdVar23 = pdVar23 + 1; + pdVar31 = pdVar31 + uVar32 + 1; + if (uVar26 == uVar9) goto LAB_002cbc70; + if (pdVar25 != (double *)0x0) break; +LAB_002cbee0: + pdVar19 = pdVar25; + pdVar22 = pdVar14; + pdVar24 = pdVar23; + if (0 < iVar10) { + do { + *(double *)(puVar13 + (long)pdVar19 * 8) = *pdVar22 - *pdVar24; + pdVar19 = (double *)((long)pdVar19 + 1); + pdVar22 = pdVar22 + uVar33; + pdVar24 = pdVar24 + uVar35; + } while ((int)pdVar19 < iVar10); + } + } + } while( true ); + } + } +LAB_002cbc70: + if (bVar12) { + operator_delete__(puVar13); + } + return; +} + + +================================================================== + +### FUNC 002cbf78 (2128 bytes) name=FUN_002cbf78 + +void FUN_002cbf78(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + float *pfVar2; + float *pfVar3; + float *pfVar4; + double *pdVar5; + double *pdVar6; + double *pdVar7; + uint uVar8; + uint uVar9; + bool bVar10; + double *pdVar11; + uint uVar12; + double *pdVar13; + float *pfVar14; + long lVar15; + double *pdVar16; + long lVar17; + double *pdVar18; + double dVar19; + float *pfVar20; + float *pfVar21; + double *pdVar22; + long lVar23; + float *pfVar24; + long lVar25; + uint uVar26; + uint uVar27; + uint uVar28; + double *pdVar29; + double *pdVar30; + double *pdVar31; + float *pfVar32; + ulong uVar33; + int iVar34; + uint uVar35; + uint uVar36; + ulong uVar37; + ulong uVar38; + float fVar39; + float fVar40; + float fVar41; + double dVar42; + double dVar43; + double dVar44; + double dVar45; + double dVar46; + double adStack_408 [129]; + + pfVar32 = *(float **)(param_2 + 0x10); + uVar33 = *(ulong *)(param_2 + 0x50) >> 2; + pdVar30 = *(double **)(param_3 + 0x10); + uVar38 = *(ulong *)(param_3 + 0x50) >> 3; + pdVar29 = *(double **)(param_4 + 0x10); + if (*(int *)(param_4 + 8) < 2) { + uVar37 = 0; + } + else { + uVar37 = *(ulong *)(param_4 + 0x50) >> 3; + } + uVar8 = (*(uint **)(param_2 + 0x40))[1]; + uVar9 = **(uint **)(param_2 + 0x40); + bVar1 = (int)uVar8 <= *(int *)(param_4 + 0xc); + iVar34 = uVar9 * 8; + if ((pdVar29 != (double *)0x0) && (iVar34 = uVar9 * 0x28, bVar1)) { + iVar34 = uVar9 * 8; + } + if ((ulong)(long)iVar34 < 0x409) { + pdVar11 = adStack_408; + bVar10 = false; + } + else { + pdVar11 = operator_new__((long)iVar34); + bVar10 = pdVar11 != adStack_408; + } + if (pdVar29 == (double *)0x0) { +LAB_002cc0c4: + if (0 < (int)uVar8) { + uVar26 = (uint)((ulong)pdVar11 >> 3) & 1; + if (uVar9 < uVar26) { + uVar26 = uVar9; + } + uVar28 = uVar9; + if (8 < uVar9) { + uVar28 = uVar26; + } + lVar23 = 0; + uVar26 = ((uVar9 - uVar28) - 4 >> 2) + 1; + uVar36 = uVar8 - 4; + pfVar21 = pfVar32 + uVar33; + uVar27 = 0; + iVar34 = uVar26 * 4; + pfVar24 = pfVar32; + pdVar29 = pdVar30; + do { + if (0 < (int)uVar9) { + uVar12 = uVar28; + if (uVar28 != 0) { + *pdVar11 = (double)*pfVar24; + if ((((uVar28 != 1) && (pdVar11[1] = (double)*pfVar21, uVar28 != 2)) && + (pdVar11[2] = (double)pfVar24[uVar33 * 2], uVar28 != 3)) && + (((pdVar11[3] = (double)pfVar21[uVar33 * 2], uVar28 != 4 && + (pdVar11[4] = (double)pfVar24[uVar33 * 4], uVar28 != 5)) && + ((pdVar11[5] = (double)pfVar21[uVar33 * 4], uVar28 != 6 && + (pdVar11[6] = (double)pfVar24[uVar33 * 6], uVar28 != 7)))))) { + pdVar11[7] = (double)pfVar21[uVar33 * 6]; + uVar12 = 8; + } + if (uVar9 == uVar28) goto LAB_002cc33c; + } + if (2 < (uVar9 - 1) - uVar28) { + uVar35 = 0; + pfVar20 = pfVar32 + lVar23 + uVar28 * uVar33; + pdVar22 = pdVar11 + uVar28; + do { + fVar39 = *pfVar20; + uVar35 = uVar35 + 1; + pfVar14 = pfVar20 + uVar33; + fVar40 = pfVar20[uVar33 * 2]; + fVar41 = pfVar20[uVar33 * 3]; + pfVar20 = pfVar20 + uVar33 * 4; + pdVar22[1] = (double)*pfVar14; + *pdVar22 = (double)fVar39; + pdVar22[3] = (double)fVar41; + pdVar22[2] = (double)fVar40; + pdVar22 = pdVar22 + 4; + } while (uVar35 < uVar26); + uVar12 = uVar12 + iVar34; + if (iVar34 == uVar9 - uVar28) goto LAB_002cc33c; + } + lVar25 = (long)(int)uVar12 * uVar33; + pdVar11[(int)uVar12] = (double)pfVar32[lVar25 + lVar23]; + if ((int)(uVar12 + 1) < (int)uVar9) { + lVar25 = lVar25 + uVar33; + pdVar11[(int)(uVar12 + 1)] = (double)pfVar32[lVar23 + lVar25]; + if ((int)(uVar12 + 2) < (int)uVar9) { + pdVar11[(int)(uVar12 + 2)] = (double)pfVar32[uVar33 + lVar25 + lVar23]; + } + } + } +LAB_002cc33c: + uVar12 = uVar27; + if ((int)uVar27 < (int)(uVar8 - 3)) { + pfVar20 = pfVar24; + pdVar22 = pdVar29; + do { + dVar43 = 0.0; + dVar19 = dVar43; + dVar45 = dVar43; + dVar46 = dVar43; + if (0 < (int)uVar9) { + dVar19 = 0.0; + lVar25 = 0; + dVar45 = 0.0; + dVar46 = 0.0; + pfVar14 = pfVar20; + do { + fVar39 = *pfVar14; + pfVar2 = pfVar14 + 1; + pfVar3 = pfVar14 + 2; + pfVar4 = pfVar14 + 3; + pfVar14 = pfVar14 + uVar33; + dVar42 = pdVar11[lVar25]; + lVar25 = lVar25 + 1; + dVar46 = dVar46 + dVar42 * (double)fVar39; + dVar45 = dVar45 + dVar42 * (double)*pfVar2; + dVar19 = dVar19 + dVar42 * (double)*pfVar3; + dVar43 = dVar43 + dVar42 * (double)*pfVar4; + } while ((int)lVar25 < (int)uVar9); + } + pdVar13 = pdVar22 + 4; + pfVar20 = pfVar20 + 4; + pdVar22[1] = dVar45 * param_1; + *pdVar22 = dVar46 * param_1; + pdVar22[3] = dVar43 * param_1; + pdVar22[2] = dVar19 * param_1; + pdVar22 = pdVar13; + } while (pdVar13 != pdVar30 + lVar23 + 4 + (ulong)(uVar36 >> 2) * 4); + uVar12 = (int)lVar23 + 4 + (uVar36 >> 2) * 4; + } + if ((int)uVar12 < (int)uVar8) { + lVar25 = (long)(int)uVar12; + pfVar20 = pfVar32 + lVar25; + pdVar22 = pdVar30 + lVar25; + do { + dVar19 = 0.0; + if (0 < (int)uVar9) { + lVar15 = 0; + pfVar14 = pfVar20; + do { + fVar39 = *pfVar14; + pfVar14 = pfVar14 + uVar33; + pdVar13 = pdVar11 + lVar15; + lVar15 = lVar15 + 1; + dVar19 = dVar19 + (double)fVar39 * *pdVar13; + } while ((int)lVar15 < (int)uVar9); + } + pfVar20 = pfVar20 + 1; + *pdVar22 = dVar19 * param_1; + pdVar22 = pdVar22 + 1; + } while (pfVar20 != pfVar32 + lVar25 + 1 + (ulong)((uVar8 - 1) - uVar12)); + } + uVar27 = uVar27 + 1; + pdVar30 = pdVar30 + uVar38; + lVar23 = lVar23 + 1; + uVar36 = uVar36 - 1; + pfVar24 = pfVar24 + 1; + pfVar21 = pfVar21 + 1; + pdVar29 = pdVar29 + uVar38 + 1; + } while (uVar27 != uVar8); + } + } + else { + if (bVar1) { + pdVar22 = (double *)0x0; + } + else { + pdVar22 = pdVar11 + (int)uVar9; + if (0 < (int)uVar9) { + pdVar13 = pdVar22 + 3; + do { + dVar19 = *pdVar29; + pdVar31 = pdVar13 + 4; + pdVar29 = pdVar29 + uVar37; + *pdVar13 = dVar19; + pdVar13[-1] = dVar19; + pdVar13[-2] = dVar19; + pdVar13[-3] = dVar19; + pdVar13 = pdVar31; + } while (pdVar31 != pdVar22 + (ulong)(uVar9 - 1) * 4 + 7); + } + if (uVar37 != 0) { + uVar37 = 4; + } + pdVar29 = pdVar22; + if (pdVar22 == (double *)0x0) goto LAB_002cc0c4; + } + if (0 < (int)uVar8) { + lVar23 = 0; + uVar28 = uVar8 - 4; + uVar26 = 0; + pfVar24 = pfVar32; + pdVar13 = pdVar29; + pdVar31 = pdVar30; + if (pdVar22 == (double *)0x0) goto LAB_002cc73c; + do { + if (0 < (int)uVar9) { + lVar25 = 0; + pfVar21 = pfVar24; + pdVar18 = pdVar22; + do { + fVar39 = *pfVar21; + pfVar21 = pfVar21 + uVar33; + dVar19 = *pdVar18; + pdVar18 = pdVar18 + uVar37; + pdVar11[lVar25] = (double)fVar39 - dVar19; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar9); + } + while( true ) { + uVar27 = uVar26; + if ((int)uVar26 < (int)(uVar8 - 3)) { + lVar25 = lVar23 << 3; + pfVar21 = pfVar24; + pdVar18 = pdVar30; + do { + pdVar16 = pdVar22; + if (pdVar22 == (double *)0x0) { + pdVar16 = (double *)((long)pdVar29 + lVar25); + } + dVar43 = 0.0; + dVar19 = dVar43; + dVar45 = dVar43; + dVar46 = dVar43; + if (0 < (int)uVar9) { + dVar19 = 0.0; + lVar15 = 0; + dVar45 = 0.0; + dVar46 = 0.0; + pfVar20 = pfVar21; + do { + fVar39 = *pfVar20; + pfVar14 = pfVar20 + 1; + pfVar2 = pfVar20 + 2; + pfVar3 = pfVar20 + 3; + pfVar20 = pfVar20 + uVar33; + pdVar5 = pdVar16 + 3; + dVar44 = *pdVar16; + pdVar6 = pdVar16 + 1; + pdVar7 = pdVar16 + 2; + pdVar16 = pdVar16 + uVar37; + dVar42 = pdVar11[lVar15]; + lVar15 = lVar15 + 1; + dVar46 = dVar46 + dVar42 * ((double)fVar39 - dVar44); + dVar45 = dVar45 + dVar42 * ((double)*pfVar14 - *pdVar6); + dVar19 = dVar19 + dVar42 * ((double)*pfVar2 - *pdVar7); + dVar43 = dVar43 + dVar42 * ((double)*pfVar3 - *pdVar5); + } while ((int)lVar15 < (int)uVar9); + } + lVar25 = lVar25 + 0x20; + pfVar21 = pfVar21 + 4; + pdVar18[1] = dVar45 * param_1; + *pdVar18 = dVar46 * param_1; + pdVar18[3] = dVar43 * param_1; + pdVar18[2] = dVar19 * param_1; + pdVar18 = pdVar18 + 4; + } while (lVar25 != (lVar23 + 4 + (ulong)(uVar28 >> 2) * 4) * 8); + uVar27 = (int)lVar23 + 4 + (uVar28 >> 2) * 4; + } + if ((int)uVar27 < (int)uVar8) { + lVar15 = (long)(int)uVar27; + lVar25 = lVar15 << 3; + pfVar21 = pfVar32 + lVar15; + do { + pdVar18 = pdVar22; + if (pdVar22 == (double *)0x0) { + pdVar18 = (double *)((long)pdVar29 + lVar25); + } + dVar19 = 0.0; + if (0 < (int)uVar9) { + lVar17 = 0; + pfVar20 = pfVar21; + do { + fVar39 = *pfVar20; + pfVar20 = pfVar20 + uVar33; + dVar45 = *pdVar18; + pdVar18 = pdVar18 + uVar37; + pdVar16 = pdVar11 + lVar17; + lVar17 = lVar17 + 1; + dVar19 = dVar19 + ((double)fVar39 - dVar45) * *pdVar16; + } while ((int)lVar17 < (int)uVar9); + } + pfVar21 = pfVar21 + 1; + *(double *)((long)pdVar31 + lVar25) = dVar19 * param_1; + lVar25 = lVar25 + 8; + } while (lVar25 != (lVar15 + 1 + (ulong)((uVar8 - 1) - uVar27)) * 8); + } + uVar26 = uVar26 + 1; + pdVar31 = pdVar31 + uVar38; + lVar23 = lVar23 + 1; + uVar28 = uVar28 - 1; + pfVar24 = pfVar24 + 1; + pdVar13 = pdVar13 + 1; + pdVar30 = pdVar30 + uVar38 + 1; + if (uVar26 == uVar8) goto LAB_002cc4ac; + if (pdVar22 != (double *)0x0) break; +LAB_002cc73c: + pdVar18 = pdVar22; + pfVar21 = pfVar24; + pdVar16 = pdVar13; + if (0 < (int)uVar9) { + do { + pdVar11[(long)pdVar18] = (double)*pfVar21 - *pdVar16; + pdVar18 = (double *)((long)pdVar18 + 1); + pfVar21 = pfVar21 + uVar33; + pdVar16 = pdVar16 + uVar37; + } while ((int)pdVar18 < (int)uVar9); + } + } + } while( true ); + } + } +LAB_002cc4ac: + if (bVar10) { + operator_delete__(pdVar11); + } + return; +} + + +================================================================== + +### FUNC 002cc7e8 (1976 bytes) name=FUN_002cc7e8 + +void FUN_002cc7e8(double param_1,long param_2,long param_3,long param_4) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + uint uVar8; + int iVar9; + uint uVar10; + int iVar11; + uint uVar12; + long lVar13; + long lVar14; + bool bVar15; + float *pfVar16; + float *pfVar17; + long lVar18; + float *pfVar19; + ulong uVar20; + ulong uVar21; + float *pfVar22; + long lVar23; + float *pfVar24; + float *pfVar25; + float *pfVar26; + float *pfVar27; + ulong uVar28; + float *pfVar29; + uint uVar30; + float *pfVar31; + float *pfVar32; + int iVar33; + int iVar34; + float *pfVar35; + float *pfVar36; + ulong uVar37; + ulong uVar38; + undefined8 uVar39; + undefined8 uVar40; + ulong uVar41; + double dVar42; + float fVar43; + int iVar44; + float local_428; + float local_424; + float local_420; + float local_41c; + float *local_418; + ulong local_410; + float afStack_408 [258]; + + pfVar36 = *(float **)(param_3 + 0x10); + pfVar19 = *(float **)(param_4 + 0x10); + pfVar35 = *(float **)(param_2 + 0x10); + uVar37 = *(ulong *)(param_3 + 0x50) >> 2; + uVar41 = *(ulong *)(param_2 + 0x50) >> 2; + if (*(int *)(param_4 + 8) < 2) { + uVar38 = 0; + uVar7 = *(uint *)(param_4 + 0xc); + uVar8 = (*(int **)(param_2 + 0x40))[1]; + iVar9 = **(int **)(param_2 + 0x40); + } + else { + uVar7 = *(uint *)(param_4 + 0xc); + uVar8 = (*(int **)(param_2 + 0x40))[1]; + uVar38 = *(ulong *)(param_4 + 0x50) >> 2; + iVar9 = **(int **)(param_2 + 0x40); + } + if (pfVar19 == (float *)0x0) { + if (0 < iVar9) { + uVar6 = uVar8 - 4 >> 2; + uVar7 = (uVar6 + 1) * 4; + if ((int)(uVar8 - 3) < 1) { + uVar7 = 0; + } + iVar34 = 0; + uVar38 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar7 << 2; + do { + pfVar19 = pfVar35 + 1; + pfVar16 = pfVar36; + iVar11 = iVar34; + do { + dVar42 = 0.0; + if (0 < (int)(uVar8 - 3)) { + pfVar17 = pfVar19; + pfVar25 = pfVar35; + do { + pfVar24 = pfVar17 + 4; + dVar42 = dVar42 + (double)pfVar25[1] * (double)*pfVar17 + + (double)pfVar17[-1] * (double)*pfVar25 + + (double)pfVar17[1] * (double)pfVar25[2] + + (double)pfVar17[2] * (double)pfVar25[3]; + pfVar17 = pfVar24; + pfVar25 = pfVar25 + 4; + } while (pfVar24 != pfVar19 + (ulong)uVar6 * 4 + 4); + } + if ((int)uVar7 < (int)uVar8) { + lVar18 = 0; + do { + lVar23 = lVar18 + uVar38; + lVar13 = lVar18 + (uVar38 - 4); + lVar18 = lVar18 + 4; + dVar42 = dVar42 + (double)*(float *)((long)pfVar19 + lVar13) * + (double)*(float *)((long)pfVar35 + lVar23); + } while (lVar18 != ((ulong)((uVar8 - 1) - uVar7) + 1) * 4); + } + iVar11 = iVar11 + 1; + pfVar19 = pfVar19 + uVar41; + *pfVar16 = (float)(dVar42 * param_1); + pfVar16 = pfVar16 + 1; + } while (iVar11 < iVar9); + iVar34 = iVar34 + 1; + pfVar36 = pfVar36 + uVar37 + 1; + pfVar35 = pfVar35 + uVar41; + } while (iVar34 != iVar9); + } + } + else { + uVar20 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + pfVar16 = afStack_408; + lVar18 = 0x10; + if (uVar7 != uVar8) { + lVar18 = 0; + } + local_418 = pfVar16; + local_410 = 0x408; + if (uVar20 < 0x409) { + local_410 = uVar20; + bVar15 = false; + } + else { + local_418 = operator_new__(uVar20); + bVar15 = local_418 != pfVar16; + local_410 = uVar20; + pfVar16 = local_418; + } + if (0 < iVar9) { + uVar6 = -((uint)((ulong)pfVar16 >> 2) & 3) & 3; + if (uVar8 < uVar6) { + uVar6 = uVar8; + } + uVar10 = uVar8 - 4 >> 2; + iVar11 = uVar8 - uVar6; + uVar12 = (uVar8 - 1) - uVar6; + uVar4 = (iVar11 - 4U >> 2) + 1; + pfVar17 = pfVar35 + 4; + pfVar25 = pfVar16 + 4; + iVar34 = 0; + iVar44 = uVar4 * 4; + do { + if ((int)uVar7 < (int)uVar8) { + if (0 < (int)uVar8) { + if ((uVar8 < 9 || pfVar35 < pfVar25 && pfVar16 < pfVar17) || + (pfVar16 < pfVar19 + 1 && pfVar19 < pfVar16 + uVar8)) { + lVar23 = 0; + do { + pfVar16[lVar23] = pfVar35[lVar23] - *pfVar19; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)uVar8); + } + else { + if ((uVar6 == 0) || (*pfVar16 = *pfVar35 - *pfVar19, uVar6 == 1)) { + uVar28 = (ulong)uVar6; + } + else { + pfVar16[1] = pfVar35[1] - *pfVar19; + if (uVar6 == 3) { + uVar28 = 3; + pfVar16[2] = pfVar35[2] - *pfVar19; + } + else { + uVar28 = 2; + } + } + if (2 < uVar12) { + fVar43 = *pfVar19; + uVar30 = 0; + pfVar24 = pfVar35 + uVar6; + pfVar26 = pfVar16 + uVar6; + do { + uVar39 = *(undefined8 *)pfVar24; + uVar30 = uVar30 + 1; + *(ulong *)(pfVar26 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar24 + 2) >> 0x20) - fVar43, + (float)*(undefined8 *)(pfVar24 + 2) - fVar43); + *(ulong *)pfVar26 = + CONCAT44((float)((ulong)uVar39 >> 0x20) - fVar43,(float)uVar39 - fVar43); + pfVar24 = pfVar24 + 4; + pfVar26 = pfVar26 + 4; + } while (uVar30 < uVar4); + uVar28 = (ulong)(uint)((int)uVar28 + iVar44); + if (iVar44 == iVar11) goto LAB_002ccad0; + } + uVar21 = -(uVar28 >> 0x1f) & 0xfffffffc00000000 | uVar28 << 2; + *(float *)((long)pfVar16 + uVar21) = *(float *)((long)pfVar35 + uVar21) - *pfVar19; + if (((int)uVar28 + 1 < (int)uVar8) && + (*(float *)((long)pfVar16 + uVar21 + 4) = + *(float *)((long)pfVar35 + uVar21 + 4) - *pfVar19, + (int)uVar28 + 2 < (int)uVar8)) { + *(float *)((long)pfVar16 + uVar21 + 8) = + *(float *)((long)pfVar35 + uVar21 + 8) - *pfVar19; + } + } + } + } + else if (0 < (int)uVar8) { + if ((uVar8 < 9 || pfVar35 < pfVar25 && pfVar16 < pfVar17) || + (pfVar16 < pfVar19 + 4 && pfVar19 < pfVar25)) { + lVar23 = 0; + do { + pfVar16[lVar23] = pfVar35[lVar23] - pfVar19[lVar23]; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)uVar8); + } + else { + if ((uVar6 == 0) || (*pfVar16 = *pfVar35 - *pfVar19, uVar6 == 1)) { + uVar28 = (ulong)uVar6; + } + else { + pfVar16[1] = pfVar35[1] - pfVar19[1]; + if (uVar6 == 3) { + uVar28 = 3; + pfVar16[2] = pfVar35[2] - pfVar19[2]; + } + else { + uVar28 = 2; + } + } + if (2 < uVar12) { + uVar30 = 0; + pfVar24 = pfVar35 + uVar6; + pfVar26 = pfVar19 + uVar6; + pfVar32 = pfVar16 + uVar6; + do { + uVar39 = *(undefined8 *)pfVar24; + uVar30 = uVar30 + 1; + uVar40 = *(undefined8 *)pfVar26; + *(ulong *)(pfVar32 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar24 + 2) >> 0x20) - + (float)((ulong)*(undefined8 *)(pfVar26 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar24 + 2) - + (float)*(undefined8 *)(pfVar26 + 2)); + *(ulong *)pfVar32 = + CONCAT44((float)((ulong)uVar39 >> 0x20) - (float)((ulong)uVar40 >> 0x20), + (float)uVar39 - (float)uVar40); + pfVar24 = pfVar24 + 4; + pfVar26 = pfVar26 + 4; + pfVar32 = pfVar32 + 4; + } while (uVar30 < uVar4); + uVar28 = (ulong)(uint)((int)uVar28 + iVar44); + if (iVar44 == iVar11) goto LAB_002ccad0; + } + uVar21 = -(uVar28 >> 0x1f) & 0xfffffffc00000000 | uVar28 << 2; + *(float *)((long)pfVar16 + uVar21) = + *(float *)((long)pfVar35 + uVar21) - *(float *)((long)pfVar19 + uVar21); + if ((int)uVar28 + 1 < (int)uVar8) { + lVar23 = uVar21 + 4; + *(float *)((long)pfVar16 + lVar23) = + *(float *)((long)pfVar35 + lVar23) - *(float *)((long)pfVar19 + lVar23); + if ((int)uVar28 + 2 < (int)uVar8) { + lVar23 = uVar21 + 8; + *(float *)((long)pfVar16 + lVar23) = + *(float *)((long)pfVar35 + lVar23) - *(float *)((long)pfVar19 + lVar23); + } + } + } + } +LAB_002ccad0: + pfVar24 = pfVar35 + 1; + pfVar26 = pfVar19; + pfVar32 = pfVar36; + iVar33 = iVar34; + do { + pfVar31 = pfVar26; + if ((int)uVar7 < (int)uVar8) { + local_41c = *pfVar26; + local_420 = local_41c; + local_424 = local_41c; + local_428 = local_41c; + pfVar31 = &local_428; + } + dVar42 = 0.0; + if ((int)uVar8 < 4) { + uVar28 = 0; + } + else { + pfVar22 = pfVar24; + pfVar27 = pfVar31; + pfVar29 = pfVar16; + do { + pfVar1 = pfVar27 + 1; + pfVar5 = pfVar22 + 4; + fVar43 = *pfVar27; + pfVar2 = pfVar27 + 2; + pfVar3 = pfVar27 + 3; + pfVar27 = (float *)((long)pfVar27 + lVar18); + dVar42 = dVar42 + (double)pfVar29[1] * (double)(*pfVar22 - *pfVar1) + + (double)(pfVar22[-1] - fVar43) * (double)*pfVar29 + + (double)(pfVar22[1] - *pfVar2) * (double)pfVar29[2] + + (double)(pfVar22[2] - *pfVar3) * (double)pfVar29[3]; + pfVar22 = pfVar5; + pfVar29 = pfVar29 + 4; + } while (pfVar5 != pfVar24 + (ulong)uVar10 * 4 + 4); + pfVar31 = (float *)((long)pfVar31 + lVar18 + (ulong)uVar10 * lVar18); + uVar28 = (ulong)((uVar10 + 1) * 4); + } + if ((int)uVar28 < (int)uVar8) { + uVar21 = -(uVar28 >> 0x1f) & 0xfffffffc00000000 | uVar28 << 2; + lVar23 = 0; + do { + lVar14 = lVar23 + (uVar21 - 4); + pfVar27 = (float *)((long)pfVar31 + lVar23); + lVar13 = lVar23 + uVar21; + lVar23 = lVar23 + 4; + dVar42 = dVar42 + (double)(*(float *)((long)pfVar24 + lVar14) - *pfVar27) * + (double)*(float *)((long)pfVar16 + lVar13); + } while (lVar23 != ((ulong)((uVar8 - 1) - (int)uVar28) + 1) * 4); + } + iVar33 = iVar33 + 1; + pfVar26 = pfVar26 + uVar38; + pfVar24 = pfVar24 + uVar41; + *pfVar32 = (float)(dVar42 * param_1); + pfVar32 = pfVar32 + 1; + } while (iVar33 < iVar9); + iVar34 = iVar34 + 1; + pfVar19 = pfVar19 + uVar38; + pfVar35 = pfVar35 + uVar41; + pfVar17 = pfVar17 + uVar41; + pfVar36 = pfVar36 + uVar37 + 1; + } while (iVar34 != iVar9); + } + if (bVar15) { + local_418 = pfVar16; + local_410 = uVar20; + operator_delete__(pfVar16); + } + } + return; +} + + +================================================================== + +### FUNC 002ccfa0 (1668 bytes) name=FUN_002ccfa0 + +void FUN_002ccfa0(double param_1,long param_2,long param_3,long param_4) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + uint uVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + int iVar11; + long lVar12; + long lVar13; + bool bVar14; + double *pdVar15; + double *pdVar16; + long lVar17; + double *pdVar18; + ulong uVar19; + ulong uVar20; + double *pdVar21; + long lVar22; + double *pdVar23; + double *pdVar24; + uint uVar25; + double *pdVar26; + double *pdVar27; + ulong uVar28; + uint uVar29; + double *pdVar30; + double *pdVar31; + int iVar32; + int iVar33; + double *pdVar34; + double *pdVar35; + double *pdVar36; + ulong uVar37; + ulong uVar38; + double dVar39; + double dVar40; + ulong uVar41; + int iVar42; + double local_438; + double local_430; + double local_428; + double local_420; + double *local_418; + ulong local_410; + double adStack_408 [129]; + + pdVar36 = *(double **)(param_3 + 0x10); + pdVar18 = *(double **)(param_4 + 0x10); + pdVar34 = *(double **)(param_2 + 0x10); + uVar38 = *(ulong *)(param_3 + 0x50) >> 3; + uVar41 = *(ulong *)(param_2 + 0x50) >> 3; + if (*(int *)(param_4 + 8) < 2) { + uVar37 = 0; + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + iVar8 = **(int **)(param_2 + 0x40); + } + else { + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + uVar37 = *(ulong *)(param_4 + 0x50) >> 3; + iVar8 = **(int **)(param_2 + 0x40); + } + if (pdVar18 == (double *)0x0) { + if (0 < iVar8) { + uVar10 = uVar7 - 4 >> 2; + uVar6 = (uVar10 + 1) * 4; + if ((int)(uVar7 - 3) < 1) { + uVar6 = 0; + } + iVar33 = 0; + uVar37 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar6 << 3; + do { + pdVar18 = pdVar34 + 1; + pdVar15 = pdVar36; + iVar11 = iVar33; + do { + dVar39 = 0.0; + if (0 < (int)(uVar7 - 3)) { + pdVar16 = pdVar18; + pdVar24 = pdVar34; + do { + pdVar23 = pdVar16 + 4; + dVar39 = dVar39 + pdVar24[1] * *pdVar16 + pdVar16[-1] * *pdVar24 + + pdVar16[1] * pdVar24[2] + pdVar16[2] * pdVar24[3]; + pdVar16 = pdVar23; + pdVar24 = pdVar24 + 4; + } while (pdVar23 != pdVar18 + (ulong)uVar10 * 4 + 4); + } + if ((int)uVar6 < (int)uVar7) { + lVar17 = 0; + do { + lVar22 = lVar17 + uVar37; + lVar12 = lVar17 + (uVar37 - 8); + lVar17 = lVar17 + 8; + dVar39 = dVar39 + *(double *)((long)pdVar18 + lVar12) * + *(double *)((long)pdVar34 + lVar22); + } while (lVar17 != ((ulong)((uVar7 - 1) - uVar6) + 1) * 8); + } + iVar11 = iVar11 + 1; + pdVar18 = pdVar18 + uVar41; + *pdVar15 = dVar39 * param_1; + pdVar15 = pdVar15 + 1; + } while (iVar11 < iVar8); + iVar33 = iVar33 + 1; + pdVar36 = pdVar36 + uVar38 + 1; + pdVar34 = pdVar34 + uVar41; + } while (iVar33 != iVar8); + } + } + else { + uVar19 = -(ulong)(uVar7 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar7 << 3; + pdVar15 = adStack_408; + lVar17 = 0x20; + if (uVar6 != uVar7) { + lVar17 = 0; + } + local_418 = pdVar15; + local_410 = 0x408; + if (uVar19 < 0x409) { + local_410 = uVar19; + bVar14 = false; + } + else { + local_418 = operator_new__(uVar19); + bVar14 = local_418 != pdVar15; + local_410 = uVar19; + pdVar15 = local_418; + } + if (0 < iVar8) { + uVar10 = (uint)((ulong)pdVar15 >> 3) & 1; + if (uVar7 < uVar10) { + uVar10 = uVar7; + } + iVar11 = uVar7 - uVar10; + uVar9 = uVar7 - 4 >> 2; + uVar4 = (iVar11 - 2U >> 1) + 1; + pdVar16 = pdVar34 + 2; + uVar25 = (uint)(uVar10 != 0); + iVar42 = uVar4 * 2; + iVar33 = 0; + pdVar24 = pdVar15 + 2; + do { + if ((int)uVar6 < (int)uVar7) { + if (0 < (int)uVar7) { + if ((uVar7 < 9 || pdVar34 < pdVar24 && pdVar15 < pdVar16) || + (pdVar15 < pdVar18 + 1 && pdVar18 < pdVar15 + uVar7)) { + lVar22 = 0; + do { + pdVar15[lVar22] = pdVar34[lVar22] - *pdVar18; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar7); + } + else { + if (uVar10 != 0) { + *pdVar15 = *pdVar34 - *pdVar18; + } + uVar29 = uVar25; + if (iVar11 != 1) { + dVar39 = *pdVar18; + uVar29 = 0; + pdVar23 = pdVar34 + uVar10; + pdVar26 = pdVar15 + uVar10; + do { + dVar40 = *pdVar23; + uVar29 = uVar29 + 1; + pdVar26[1] = pdVar23[1] - dVar39; + *pdVar26 = dVar40 - dVar39; + pdVar23 = pdVar23 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar29 < uVar4); + uVar29 = iVar42 + uVar25; + if (iVar42 == iVar11) goto LAB_002cd22c; + } + uVar20 = -(ulong)(uVar29 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar29 << 3; + *(double *)((long)pdVar15 + uVar20) = *(double *)((long)pdVar34 + uVar20) - *pdVar18; + } + } + } + else if (0 < (int)uVar7) { + if ((uVar7 < 9 || pdVar34 < pdVar24 && pdVar15 < pdVar16) || + (pdVar15 < pdVar18 + 2 && pdVar18 < pdVar24)) { + lVar22 = 0; + do { + pdVar15[lVar22] = pdVar34[lVar22] - pdVar18[lVar22]; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar7); + } + else { + if (uVar10 != 0) { + *pdVar15 = *pdVar34 - *pdVar18; + } + uVar29 = uVar25; + if (iVar11 != 1) { + uVar29 = 0; + pdVar23 = pdVar34 + uVar10; + pdVar26 = pdVar18 + uVar10; + pdVar31 = pdVar15 + uVar10; + do { + dVar39 = *pdVar23; + uVar29 = uVar29 + 1; + dVar40 = *pdVar26; + pdVar31[1] = pdVar23[1] - pdVar26[1]; + *pdVar31 = dVar39 - dVar40; + pdVar23 = pdVar23 + 2; + pdVar26 = pdVar26 + 2; + pdVar31 = pdVar31 + 2; + } while (uVar29 < uVar4); + uVar29 = iVar42 + uVar25; + if (iVar42 == iVar11) goto LAB_002cd22c; + } + uVar20 = -(ulong)(uVar29 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar29 << 3; + *(double *)((long)pdVar15 + uVar20) = + *(double *)((long)pdVar34 + uVar20) - *(double *)((long)pdVar18 + uVar20); + } + } +LAB_002cd22c: + pdVar23 = pdVar34 + 1; + pdVar26 = pdVar18; + pdVar31 = pdVar36; + iVar32 = iVar33; + do { + pdVar35 = pdVar26; + if ((int)uVar6 < (int)uVar7) { + local_420 = *pdVar26; + local_428 = local_420; + local_430 = local_420; + local_438 = local_420; + pdVar35 = &local_438; + } + dVar39 = 0.0; + if ((int)uVar7 < 4) { + uVar20 = 0; + } + else { + pdVar21 = pdVar23; + pdVar27 = pdVar35; + pdVar30 = pdVar15; + do { + pdVar1 = pdVar27 + 1; + pdVar5 = pdVar21 + 4; + dVar40 = *pdVar27; + pdVar2 = pdVar27 + 2; + pdVar3 = pdVar27 + 3; + pdVar27 = (double *)((long)pdVar27 + lVar17); + dVar39 = dVar39 + (*pdVar21 - *pdVar1) * pdVar30[1] + + (pdVar21[-1] - dVar40) * *pdVar30 + + (pdVar21[1] - *pdVar2) * pdVar30[2] + + (pdVar21[2] - *pdVar3) * pdVar30[3]; + pdVar21 = pdVar5; + pdVar30 = pdVar30 + 4; + } while (pdVar5 != pdVar23 + (ulong)uVar9 * 4 + 4); + pdVar35 = (double *)((long)pdVar35 + lVar17 + (ulong)uVar9 * lVar17); + uVar20 = (ulong)((uVar9 + 1) * 4); + } + if ((int)uVar20 < (int)uVar7) { + uVar28 = -(uVar20 >> 0x1f) & 0xfffffff800000000 | uVar20 << 3; + lVar22 = 0; + do { + lVar13 = lVar22 + (uVar28 - 8); + pdVar27 = (double *)((long)pdVar35 + lVar22); + lVar12 = lVar22 + uVar28; + lVar22 = lVar22 + 8; + dVar39 = dVar39 + (*(double *)((long)pdVar23 + lVar13) - *pdVar27) * + *(double *)((long)pdVar15 + lVar12); + } while (lVar22 != ((ulong)((uVar7 - 1) - (int)uVar20) + 1) * 8); + } + iVar32 = iVar32 + 1; + pdVar26 = pdVar26 + uVar37; + pdVar23 = pdVar23 + uVar41; + *pdVar31 = dVar39 * param_1; + pdVar31 = pdVar31 + 1; + } while (iVar32 < iVar8); + iVar33 = iVar33 + 1; + pdVar18 = pdVar18 + uVar37; + pdVar34 = pdVar34 + uVar41; + pdVar16 = pdVar16 + uVar41; + pdVar36 = pdVar36 + uVar38 + 1; + } while (iVar33 != iVar8); + } + if (bVar14) { + local_418 = pdVar15; + local_410 = uVar19; + operator_delete__(pdVar15); + } + } + return; +} + + +================================================================== + +### FUNC 002cd624 (1560 bytes) name=FUN_002cd624 + +void FUN_002cd624(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + float *pfVar5; + float *pfVar6; + int iVar7; + int iVar8; + byte bVar9; + long lVar10; + bool bVar11; + undefined1 *puVar12; + int iVar13; + float *pfVar14; + long lVar15; + byte *pbVar16; + long lVar17; + long lVar18; + float *pfVar19; + byte *pbVar20; + float *pfVar21; + float *pfVar22; + undefined8 *puVar23; + byte *pbVar24; + long lVar25; + long lVar26; + uint uVar27; + long lVar28; + undefined8 *puVar29; + undefined8 *puVar30; + float *pfVar31; + byte *pbVar32; + int iVar33; + ulong uVar34; + ulong uVar35; + float fVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + undefined1 auStack_408 [1032]; + + pbVar32 = *(byte **)(param_2 + 0x10); + puVar29 = *(undefined8 **)(param_3 + 0x10); + uVar35 = *(ulong *)(param_3 + 0x50) >> 2; + pfVar31 = *(float **)(param_4 + 0x10); + lVar28 = *(long *)(param_2 + 0x50); + if (*(int *)(param_4 + 8) < 2) { + uVar34 = 0; + } + else { + uVar34 = *(ulong *)(param_4 + 0x50) >> 2; + } + iVar7 = (*(int **)(param_2 + 0x40))[1]; + iVar8 = **(int **)(param_2 + 0x40); + bVar1 = iVar7 <= *(int *)(param_4 + 0xc); + iVar33 = iVar8 * 4; + if ((pfVar31 != (float *)0x0) && (iVar33 = iVar8 * 0x14, bVar1)) { + iVar33 = iVar8 * 4; + } + if ((ulong)(long)iVar33 < 0x409) { + puVar12 = auStack_408; + bVar11 = false; + } + else { + puVar12 = operator_new__((long)iVar33); + bVar11 = puVar12 != auStack_408; + } + if (pfVar31 == (float *)0x0) { +LAB_002cd768: + if (0 < iVar7) { + lVar26 = uVar35 * 4; + uVar27 = iVar7 - 4; + lVar25 = 0; + pbVar24 = pbVar32; + puVar30 = puVar29; + do { + iVar33 = (int)lVar25; + lVar15 = 0; + pbVar20 = pbVar24; + if (0 < iVar8) { + do { + bVar9 = *pbVar20; + pbVar20 = pbVar20 + lVar28; + *(float *)(puVar12 + lVar15 * 4) = (float)bVar9; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < iVar8); + } + if (iVar33 < iVar7 + -3) { + pbVar20 = pbVar24; + puVar23 = puVar29; + do { + dVar38 = 0.0; + dVar39 = dVar38; + dVar40 = dVar38; + dVar41 = dVar38; + if (0 < iVar8) { + dVar39 = 0.0; + lVar15 = 0; + dVar40 = 0.0; + dVar41 = 0.0; + pbVar16 = pbVar20; + do { + bVar9 = *pbVar16; + pbVar2 = pbVar16 + 1; + pbVar3 = pbVar16 + 2; + pbVar4 = pbVar16 + 3; + pbVar16 = pbVar16 + lVar28; + lVar17 = lVar15 * 4; + lVar15 = lVar15 + 1; + dVar37 = (double)*(float *)(puVar12 + lVar17); + dVar41 = dVar41 + dVar37 * (double)bVar9; + dVar40 = dVar40 + dVar37 * (double)*pbVar2; + dVar39 = dVar39 + dVar37 * (double)*pbVar3; + dVar38 = dVar38 + dVar37 * (double)*pbVar4; + } while ((int)lVar15 < iVar8); + } + pbVar20 = pbVar20 + 4; + puVar23[1] = CONCAT44((float)(dVar38 * param_1),(float)(dVar39 * param_1)); + *puVar23 = CONCAT44((float)(dVar40 * param_1),(float)(dVar41 * param_1)); + puVar23 = puVar23 + 2; + } while (pbVar20 != pbVar32 + lVar25 + 4 + (ulong)(uVar27 >> 2) * 4); + iVar33 = iVar33 + 4 + (uVar27 >> 2) * 4; + } + if (iVar33 < iVar7) { + lVar15 = (long)iVar33; + pbVar20 = pbVar32 + lVar15; + pfVar31 = (float *)((long)puVar30 + lVar15 * 4); + do { + dVar39 = 0.0; + if (0 < iVar8) { + lVar17 = 0; + pbVar16 = pbVar20; + do { + bVar9 = *pbVar16; + pbVar16 = pbVar16 + lVar28; + lVar18 = lVar17 * 4; + lVar17 = lVar17 + 1; + dVar39 = dVar39 + (double)bVar9 * (double)*(float *)(puVar12 + lVar18); + } while ((int)lVar17 < iVar8); + } + pbVar20 = pbVar20 + 1; + *pfVar31 = (float)(dVar39 * param_1); + pfVar31 = pfVar31 + 1; + } while (pbVar20 != pbVar32 + lVar15 + 1 + (ulong)(uint)((iVar7 + -1) - iVar33)); + } + lVar25 = lVar25 + 1; + puVar30 = (undefined8 *)((long)puVar30 + lVar26); + uVar27 = uVar27 - 1; + pbVar24 = pbVar24 + 1; + puVar29 = (undefined8 *)((long)puVar29 + lVar26 + 4); + } while ((int)lVar25 < iVar7); + } + } + else { + if (bVar1) { + pfVar22 = (float *)0x0; + } + else { + pfVar22 = (float *)(puVar12 + (long)iVar8 * 4); + if (0 < iVar8) { + pfVar14 = pfVar22 + 3; + do { + fVar36 = *pfVar31; + pfVar19 = pfVar14 + 4; + pfVar31 = pfVar31 + uVar34; + *pfVar14 = fVar36; + pfVar14[-1] = fVar36; + pfVar14[-2] = fVar36; + pfVar14[-3] = fVar36; + pfVar14 = pfVar19; + } while (pfVar19 != pfVar22 + (ulong)(iVar8 - 1) * 4 + 7); + } + if (uVar34 != 0) { + uVar34 = 4; + } + pfVar31 = pfVar22; + if (pfVar22 == (float *)0x0) goto LAB_002cd768; + } + if (0 < iVar7) { + lVar26 = uVar35 * 4; + lVar25 = 0; + uVar27 = iVar7 - 4; + iVar33 = 0; + pbVar24 = pbVar32; + pfVar14 = pfVar31; + puVar30 = puVar29; + if (pfVar22 == (float *)0x0) goto LAB_002cdbc8; + do { + if (0 < iVar8) { + lVar15 = 0; + pbVar20 = pbVar24; + pfVar19 = pfVar22; + do { + bVar9 = *pbVar20; + pbVar20 = pbVar20 + lVar28; + fVar36 = *pfVar19; + pfVar19 = pfVar19 + uVar34; + *(float *)(puVar12 + lVar15 * 4) = (float)bVar9 - fVar36; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < iVar8); + } + while( true ) { + iVar13 = iVar33; + if (iVar33 < iVar7 + -3) { + lVar15 = lVar25 << 2; + pbVar20 = pbVar24; + puVar23 = puVar29; + do { + pfVar19 = pfVar22; + if (pfVar22 == (float *)0x0) { + pfVar19 = (float *)((long)pfVar31 + lVar15); + } + dVar38 = 0.0; + dVar39 = dVar38; + dVar40 = dVar38; + dVar41 = dVar38; + if (0 < iVar8) { + dVar39 = 0.0; + lVar17 = 0; + dVar40 = 0.0; + dVar41 = 0.0; + pbVar16 = pbVar20; + do { + bVar9 = *pbVar16; + pbVar2 = pbVar16 + 1; + pbVar3 = pbVar16 + 2; + pbVar4 = pbVar16 + 3; + pbVar16 = pbVar16 + lVar28; + pfVar21 = pfVar19 + 3; + fVar36 = *pfVar19; + pfVar5 = pfVar19 + 1; + pfVar6 = pfVar19 + 2; + pfVar19 = pfVar19 + uVar34; + lVar18 = lVar17 * 4; + lVar17 = lVar17 + 1; + dVar37 = (double)*(float *)(puVar12 + lVar18); + dVar41 = dVar41 + dVar37 * (double)((float)bVar9 - fVar36); + dVar40 = dVar40 + dVar37 * (double)((float)*pbVar2 - *pfVar5); + dVar39 = dVar39 + dVar37 * (double)((float)*pbVar3 - *pfVar6); + dVar38 = dVar38 + dVar37 * (double)((float)*pbVar4 - *pfVar21); + } while ((int)lVar17 < iVar8); + } + pbVar20 = pbVar20 + 4; + *(float *)((long)puVar30 + lVar15) = (float)(dVar41 * param_1); + lVar15 = lVar15 + 0x10; + *(float *)((long)puVar23 + 4) = (float)(dVar40 * param_1); + *(float *)(puVar23 + 1) = (float)(dVar39 * param_1); + *(float *)((long)puVar23 + 0xc) = (float)(dVar38 * param_1); + puVar23 = puVar23 + 2; + } while (lVar15 != (lVar25 + 4 + (ulong)(uVar27 >> 2) * 4) * 4); + iVar13 = (int)lVar25 + 4 + (uVar27 >> 2) * 4; + } + if (iVar13 < iVar7) { + lVar17 = (long)iVar13; + pbVar20 = pbVar32 + lVar17; + lVar15 = lVar17 << 2; + do { + pfVar19 = pfVar22; + if (pfVar22 == (float *)0x0) { + pfVar19 = (float *)((long)pfVar31 + lVar15); + } + dVar39 = 0.0; + if (0 < iVar8) { + lVar18 = 0; + pbVar16 = pbVar20; + do { + bVar9 = *pbVar16; + pbVar16 = pbVar16 + lVar28; + fVar36 = *pfVar19; + pfVar19 = pfVar19 + uVar34; + lVar10 = lVar18 * 4; + lVar18 = lVar18 + 1; + dVar39 = dVar39 + (double)((float)bVar9 - fVar36) * + (double)*(float *)(puVar12 + lVar10); + } while ((int)lVar18 < iVar8); + } + pbVar20 = pbVar20 + 1; + *(float *)((long)puVar30 + lVar15) = (float)(dVar39 * param_1); + lVar15 = lVar15 + 4; + } while (lVar15 != (lVar17 + 1 + (ulong)(uint)((iVar7 + -1) - iVar13)) * 4); + } + iVar33 = iVar33 + 1; + puVar30 = (undefined8 *)((long)puVar30 + lVar26); + lVar25 = lVar25 + 1; + uVar27 = uVar27 - 1; + pbVar24 = pbVar24 + 1; + pfVar14 = pfVar14 + 1; + puVar29 = (undefined8 *)((long)puVar29 + lVar26 + 4); + if (iVar33 == iVar7) goto LAB_002cd92c; + if (pfVar22 != (float *)0x0) break; +LAB_002cdbc8: + pfVar19 = pfVar22; + pbVar20 = pbVar24; + pfVar21 = pfVar14; + if (0 < iVar8) { + do { + *(float *)(puVar12 + (long)pfVar19 * 4) = (float)*pbVar20 - *pfVar21; + pfVar19 = (float *)((long)pfVar19 + 1); + pbVar20 = pbVar20 + lVar28; + pfVar21 = pfVar21 + uVar34; + } while ((int)pfVar19 < iVar8); + } + } + } while( true ); + } + } +LAB_002cd92c: + if (bVar11) { + operator_delete__(puVar12); + } + return; +} + + +================================================================== + +### FUNC 002cdc5c (1696 bytes) name=FUN_002cdc5c + +void FUN_002cdc5c(float *param_1,ulong param_2,float *param_3,ulong param_4,double *param_5, + ulong param_6,int *param_7,int *param_8,float param_9) + +{ + float *pfVar1; + double *pdVar2; + uint uVar3; + int iVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + float fVar9; + float *pfVar10; + ulong uVar11; + float *pfVar12; + long lVar13; + float *pfVar14; + long lVar15; + float *pfVar16; + float *pfVar17; + ulong uVar18; + undefined8 uVar19; + float *pfVar20; + double *pdVar21; + uint uVar22; + double *pdVar23; + long lVar24; + int iVar25; + int iVar26; + int iVar27; + ulong uVar28; + double *pdVar29; + double *pdVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + uint uVar41; + long lVar42; + float afStack_440 [2]; + undefined8 auStack_438 [135]; + + fVar9 = param_9; + iVar26 = *param_7; + iVar4 = *param_8; + pfVar12 = afStack_440; + do { + pfVar16 = pfVar12 + 4; + pfVar12[2] = 0.0; + pfVar12[3] = 0.0; + pfVar12[0] = 0.0; + pfVar12[1] = 0.0; + pfVar12 = pfVar16; + } while (pfVar16 != ¶m_9); + pfVar12 = afStack_440; + uVar3 = (uint)param_9 & 0x10; + param_4 = param_4 >> 3; + uVar41 = (uint)param_9 & 1; + if (((uint)param_9 & 1) == 0) { + pfVar16 = (float *)0x0; + uVar28 = 1; + uVar11 = param_2 >> 3; + goto LAB_002cdd08; + } + iVar26 = param_7[1]; + uVar28 = (ulong)iVar26; + if (uVar28 < 0x89) { + uVar41 = 0; + } + else { + uVar11 = uVar28 << 3; + if (0xfe0000000000000 < uVar28) { + uVar11 = 0xffffffffffffffff; + } + pfVar12 = operator_new__(uVar11); + uVar11 = (uVar28 - 2 >> 1) + 1; + pfVar16 = pfVar12; + if (iVar26 == 1) { +LAB_002ce2b4: + *pfVar16 = 0.0; + pfVar16[1] = 0.0; + } + else { + uVar18 = 0; + do { + pfVar16[2] = 0.0; + pfVar16[3] = 0.0; + pfVar16[0] = 0.0; + pfVar16[1] = 0.0; + uVar18 = uVar18 + 1; + pfVar16 = pfVar16 + 4; + } while (uVar18 < uVar11); + pfVar16 = pfVar12 + uVar11 * 4; + if (uVar28 != uVar11 * 2) goto LAB_002ce2b4; + } + uVar41 = (uint)(pfVar12 != afStack_440); + } + uVar11 = 1; + pfVar16 = pfVar12; + uVar28 = param_2 >> 3; +LAB_002cdd08: + uVar22 = (uint)fVar9 & 2; + if (((uint)fVar9 >> 1 & 1) == 0) { + uVar5 = param_8[1]; + if (0 < (int)uVar5) { + uVar7 = iVar4 - 4U >> 2; + iVar25 = (uVar7 + 1) * 4; + if (iVar4 + -3 < 1) { + iVar25 = 0; + } + lVar24 = (long)iVar25; + lVar15 = (ulong)(iVar26 - 1) + 1; + lVar42 = NEON_shl(lVar24 + 1 + (ulong)(uint)((iVar4 + -1) - iVar25),4); + do { + pfVar20 = param_1; + if ((pfVar16 != (float *)0x0) && (pfVar20 = pfVar16, 0 < iVar26)) { + lVar13 = 0; + pfVar10 = param_1; + do { + uVar19 = *(undefined8 *)pfVar10; + pfVar10 = pfVar10 + uVar28 * 2; + *(undefined8 *)(pfVar16 + lVar13 * 2) = uVar19; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < iVar26); + } + if (0 < iVar4 + -3) { + pfVar10 = param_3; + pdVar23 = param_5 + 4; + pdVar21 = param_5; + pdVar29 = param_5 + 2; + pdVar30 = param_5 + 6; + do { + if (uVar3 == 0) { + dVar33 = 0.0; + dVar34 = 0.0; + dVar35 = 0.0; + dVar36 = 0.0; + dVar37 = 0.0; + dVar38 = 0.0; + dVar39 = 0.0; + dVar40 = 0.0; + } + else { + dVar40 = *pdVar21; + dVar39 = pdVar21[1]; + dVar38 = *pdVar29; + dVar37 = pdVar21[3]; + dVar36 = *pdVar23; + dVar35 = pdVar21[5]; + dVar34 = *pdVar30; + dVar33 = pdVar21[7]; + } + pfVar14 = pfVar10; + pfVar17 = pfVar20; + if (0 < iVar26) { + do { + pfVar1 = pfVar17 + 2; + dVar32 = (double)pfVar17[1]; + dVar31 = (double)*pfVar17; + dVar40 = dVar40 + ((double)*pfVar14 * dVar31 - dVar32 * (double)pfVar14[1]); + dVar39 = dVar39 + (double)*pfVar14 * dVar32 + (double)pfVar14[1] * dVar31; + dVar38 = dVar38 + (dVar31 * (double)pfVar14[2] - dVar32 * (double)pfVar14[3]); + dVar37 = dVar37 + dVar32 * (double)pfVar14[2] + (double)pfVar14[3] * dVar31; + dVar36 = dVar36 + (dVar31 * (double)pfVar14[4] - dVar32 * (double)pfVar14[5]); + dVar35 = dVar35 + dVar32 * (double)pfVar14[4] + (double)pfVar14[5] * dVar31; + dVar34 = dVar34 + (dVar31 * (double)pfVar14[6] - dVar32 * (double)pfVar14[7]); + dVar33 = dVar33 + dVar32 * (double)pfVar14[6] + (double)pfVar14[7] * dVar31; + pfVar14 = pfVar14 + param_4 * 2; + pfVar17 = pfVar1; + } while (pfVar1 != pfVar20 + lVar15 * 2); + } + pdVar2 = pdVar29 + 8; + *pdVar21 = dVar40; + pdVar21[1] = dVar39; + *pdVar29 = dVar38; + pdVar21 = pdVar21 + 8; + pdVar29[1] = dVar37; + pfVar10 = pfVar10 + 8; + *pdVar23 = dVar36; + pdVar23[1] = dVar35; + *pdVar30 = dVar34; + pdVar30[1] = dVar33; + pdVar23 = pdVar23 + 8; + pdVar29 = pdVar2; + pdVar30 = pdVar30 + 8; + } while (pdVar2 != param_5 + (ulong)uVar7 * 8 + 10); + } + if (iVar25 < iVar4) { + pdVar21 = param_5 + lVar24 * 2; + pfVar10 = param_3 + lVar24 * 2; + do { + if (uVar3 == 0) { + dVar33 = 0.0; + dVar34 = 0.0; + } + else { + dVar34 = *pdVar21; + dVar33 = pdVar21[1]; + } + pfVar14 = pfVar20; + pfVar17 = pfVar10; + if (0 < iVar26) { + do { + pfVar1 = pfVar14 + 2; + dVar34 = dVar34 + ((double)*pfVar14 * (double)*pfVar17 - + (double)pfVar14[1] * (double)pfVar17[1]); + dVar33 = dVar33 + (double)pfVar14[1] * (double)*pfVar17 + + (double)pfVar17[1] * (double)*pfVar14; + pfVar14 = pfVar1; + pfVar17 = pfVar17 + param_4 * 2; + } while (pfVar1 != pfVar20 + lVar15 * 2); + } + *pdVar21 = dVar34; + pdVar23 = pdVar21 + 2; + pfVar10 = pfVar10 + 2; + pdVar21[1] = dVar33; + pdVar21 = pdVar23; + } while (pdVar23 != (double *)((long)param_5 + lVar42)); + } + uVar22 = uVar22 + 1; + param_1 = param_1 + uVar11 * 2; + param_5 = param_5 + (param_6 >> 4) * 2; + } while (uVar22 != uVar5); + } + } + else { + iVar4 = param_8[1]; + if (0 < iVar4) { + iVar6 = *param_8; + uVar22 = iVar26 - 2U >> 1; + iVar8 = iVar26 + -1; + iVar25 = 0; + do { + pfVar20 = param_1; + if ((pfVar16 != (float *)0x0) && (pfVar20 = pfVar16, 0 < iVar26)) { + lVar15 = 0; + pfVar10 = param_1; + do { + uVar19 = *(undefined8 *)pfVar10; + pfVar10 = pfVar10 + uVar28 * 2; + *(undefined8 *)(pfVar16 + lVar15 * 2) = uVar19; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < iVar26); + } + if (0 < iVar6) { + pdVar21 = param_5; + pfVar10 = param_3; + do { + if (uVar3 == 0) { + dVar33 = 0.0; + dVar34 = 0.0; + if (iVar8 < 1) goto LAB_002ce234; +LAB_002ce0ac: + dVar36 = 0.0; + pfVar14 = pfVar10 + 1; + pfVar17 = pfVar20; + dVar35 = dVar36; + do { + pfVar1 = pfVar14 + 4; + dVar34 = dVar34 + ((double)*pfVar17 * (double)pfVar14[-1] - + (double)pfVar17[1] * (double)*pfVar14); + dVar36 = dVar36 + ((double)pfVar17[2] * (double)pfVar14[1] - + (double)pfVar17[3] * (double)pfVar14[2]); + dVar33 = dVar33 + (double)pfVar17[1] * (double)pfVar14[-1] + + (double)*pfVar14 * (double)*pfVar17; + dVar35 = dVar35 + (double)pfVar17[3] * (double)pfVar14[1] + + (double)pfVar14[2] * (double)pfVar17[2]; + pfVar14 = pfVar1; + pfVar17 = pfVar17 + 4; + iVar27 = (uVar22 + 1) * 2; + } while (pfVar1 != pfVar10 + (ulong)uVar22 * 4 + 5); + } + else { + dVar34 = *pdVar21; + dVar33 = pdVar21[1]; + if (0 < iVar8) goto LAB_002ce0ac; +LAB_002ce234: + dVar36 = 0.0; + dVar35 = dVar36; + iVar27 = 0; + } + if (iVar27 < iVar26) { + lVar15 = (long)iVar27; + pfVar14 = pfVar20 + lVar15 * 2; + pfVar17 = pfVar10 + lVar15 * 2; + do { + pfVar1 = pfVar14 + 2; + dVar34 = dVar34 + ((double)*pfVar14 * (double)*pfVar17 - + (double)pfVar14[1] * (double)pfVar17[1]); + dVar33 = dVar33 + (double)pfVar14[1] * (double)*pfVar17 + + (double)pfVar17[1] * (double)*pfVar14; + pfVar14 = pfVar1; + pfVar17 = pfVar17 + 2; + } while (pfVar1 != pfVar20 + (lVar15 + 1 + (ulong)(uint)(iVar8 - iVar27)) * 2); + } + pdVar23 = pdVar21 + 2; + pfVar10 = pfVar10 + param_4 * 2; + *pdVar21 = dVar34 + dVar36; + pdVar21[1] = dVar35 + dVar33; + pdVar21 = pdVar23; + } while (param_5 + ((ulong)(iVar6 - 1) + 1) * 2 != pdVar23); + } + iVar25 = iVar25 + 1; + param_1 = param_1 + uVar11 * 2; + param_5 = param_5 + (param_6 >> 4) * 2; + } while (iVar25 != iVar4); + } + } + if (uVar41 != 0) { + operator_delete__(pfVar12); + } + return; +} + + +================================================================== + +### FUNC 002ce320 (64 bytes) name=FUN_002ce320 + +void FUN_002ce320(void) + +{ + FUN_002cdc5c(); + return; +} + + +================================================================== + +### FUNC 002ce360 (1508 bytes) name=FUN_002ce360 + +void FUN_002ce360(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + double *pdVar5; + double *pdVar6; + double *pdVar7; + int iVar8; + int iVar9; + byte bVar10; + long lVar11; + bool bVar12; + undefined1 *puVar13; + int iVar14; + double *pdVar15; + long lVar16; + byte *pbVar17; + long lVar18; + double *pdVar19; + double dVar20; + long lVar21; + double *pdVar22; + byte *pbVar23; + double *pdVar24; + byte *pbVar25; + long lVar26; + long lVar27; + double *pdVar28; + double *pdVar29; + uint uVar30; + double *pdVar31; + byte *pbVar32; + int iVar33; + ulong uVar34; + ulong uVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + undefined1 auStack_408 [1032]; + + pbVar32 = *(byte **)(param_2 + 0x10); + pdVar28 = *(double **)(param_3 + 0x10); + uVar35 = *(ulong *)(param_3 + 0x50) >> 3; + pdVar31 = *(double **)(param_4 + 0x10); + lVar27 = *(long *)(param_2 + 0x50); + if (*(int *)(param_4 + 8) < 2) { + uVar34 = 0; + } + else { + uVar34 = *(ulong *)(param_4 + 0x50) >> 3; + } + iVar8 = (*(int **)(param_2 + 0x40))[1]; + iVar9 = **(int **)(param_2 + 0x40); + bVar1 = iVar8 <= *(int *)(param_4 + 0xc); + iVar33 = iVar9 * 8; + if ((pdVar31 != (double *)0x0) && (iVar33 = iVar9 * 0x28, bVar1)) { + iVar33 = iVar9 * 8; + } + if ((ulong)(long)iVar33 < 0x409) { + puVar13 = auStack_408; + bVar12 = false; + } + else { + puVar13 = operator_new__((long)iVar33); + bVar12 = puVar13 != auStack_408; + } + if (pdVar31 == (double *)0x0) { +LAB_002ce4a8: + if (0 < iVar8) { + uVar30 = iVar8 - 4; + lVar26 = 0; + pbVar25 = pbVar32; + pdVar31 = pdVar28; + do { + iVar33 = (int)lVar26; + lVar16 = 0; + pbVar23 = pbVar25; + if (0 < iVar9) { + do { + bVar10 = *pbVar23; + pbVar23 = pbVar23 + lVar27; + *(double *)(puVar13 + lVar16 * 8) = (double)bVar10; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < iVar9); + } + if (iVar33 < iVar8 + -3) { + pbVar23 = pbVar25; + pdVar24 = pdVar28; + do { + dVar37 = 0.0; + dVar20 = dVar37; + dVar38 = dVar37; + dVar39 = dVar37; + if (0 < iVar9) { + dVar20 = 0.0; + lVar16 = 0; + dVar38 = 0.0; + dVar39 = 0.0; + pbVar17 = pbVar23; + do { + bVar10 = *pbVar17; + pbVar2 = pbVar17 + 1; + pbVar3 = pbVar17 + 2; + pbVar4 = pbVar17 + 3; + pbVar17 = pbVar17 + lVar27; + dVar36 = *(double *)(puVar13 + lVar16 * 8); + lVar16 = lVar16 + 1; + dVar39 = dVar39 + dVar36 * (double)bVar10; + dVar38 = dVar38 + dVar36 * (double)*pbVar2; + dVar20 = dVar20 + dVar36 * (double)*pbVar3; + dVar37 = dVar37 + dVar36 * (double)*pbVar4; + } while ((int)lVar16 < iVar9); + } + pbVar23 = pbVar23 + 4; + pdVar24[1] = dVar38 * param_1; + *pdVar24 = dVar39 * param_1; + pdVar24[3] = dVar37 * param_1; + pdVar24[2] = dVar20 * param_1; + pdVar24 = pdVar24 + 4; + } while (pbVar23 != pbVar32 + lVar26 + 4 + (ulong)(uVar30 >> 2) * 4); + iVar33 = iVar33 + 4 + (uVar30 >> 2) * 4; + } + if (iVar33 < iVar8) { + lVar16 = (long)iVar33; + pbVar23 = pbVar32 + lVar16; + pdVar24 = pdVar31 + lVar16; + do { + dVar20 = 0.0; + if (0 < iVar9) { + lVar18 = 0; + pbVar17 = pbVar23; + do { + bVar10 = *pbVar17; + pbVar17 = pbVar17 + lVar27; + lVar21 = lVar18 * 8; + lVar18 = lVar18 + 1; + dVar20 = dVar20 + (double)bVar10 * *(double *)(puVar13 + lVar21); + } while ((int)lVar18 < iVar9); + } + pbVar23 = pbVar23 + 1; + *pdVar24 = dVar20 * param_1; + pdVar24 = pdVar24 + 1; + } while (pbVar23 != pbVar32 + lVar16 + 1 + (ulong)(uint)((iVar8 + -1) - iVar33)); + } + lVar26 = lVar26 + 1; + pdVar31 = pdVar31 + uVar35; + uVar30 = uVar30 - 1; + pbVar25 = pbVar25 + 1; + pdVar28 = pdVar28 + uVar35 + 1; + } while ((int)lVar26 < iVar8); + } + } + else { + if (bVar1) { + pdVar24 = (double *)0x0; + } + else { + pdVar24 = (double *)(puVar13 + (long)iVar9 * 8); + if (0 < iVar9) { + pdVar15 = pdVar24 + 3; + do { + dVar20 = *pdVar31; + pdVar29 = pdVar15 + 4; + pdVar31 = pdVar31 + uVar34; + *pdVar15 = dVar20; + pdVar15[-1] = dVar20; + pdVar15[-2] = dVar20; + pdVar15[-3] = dVar20; + pdVar15 = pdVar29; + } while (pdVar29 != pdVar24 + (ulong)(iVar9 - 1) * 4 + 7); + } + if (uVar34 != 0) { + uVar34 = 4; + } + pdVar31 = pdVar24; + if (pdVar24 == (double *)0x0) goto LAB_002ce4a8; + } + if (0 < iVar8) { + lVar26 = 0; + uVar30 = iVar8 - 4; + iVar33 = 0; + pbVar25 = pbVar32; + pdVar15 = pdVar31; + pdVar29 = pdVar28; + if (pdVar24 == (double *)0x0) goto LAB_002ce8d0; + do { + if (0 < iVar9) { + lVar16 = 0; + pbVar23 = pbVar25; + pdVar22 = pdVar24; + do { + bVar10 = *pbVar23; + pbVar23 = pbVar23 + lVar27; + dVar20 = *pdVar22; + pdVar22 = pdVar22 + uVar34; + *(double *)(puVar13 + lVar16 * 8) = (double)bVar10 - dVar20; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < iVar9); + } + while( true ) { + iVar14 = iVar33; + if (iVar33 < iVar8 + -3) { + lVar16 = lVar26 << 3; + pbVar23 = pbVar25; + pdVar22 = pdVar28; + do { + pdVar19 = pdVar24; + if (pdVar24 == (double *)0x0) { + pdVar19 = (double *)((long)pdVar31 + lVar16); + } + dVar37 = 0.0; + dVar20 = dVar37; + dVar38 = dVar37; + dVar39 = dVar37; + if (0 < iVar9) { + dVar20 = 0.0; + lVar18 = 0; + dVar38 = 0.0; + dVar39 = 0.0; + pbVar17 = pbVar23; + do { + bVar10 = *pbVar17; + pbVar2 = pbVar17 + 1; + pbVar3 = pbVar17 + 2; + pbVar4 = pbVar17 + 3; + pbVar17 = pbVar17 + lVar27; + pdVar5 = pdVar19 + 3; + dVar40 = *pdVar19; + pdVar6 = pdVar19 + 1; + pdVar7 = pdVar19 + 2; + pdVar19 = pdVar19 + uVar34; + dVar36 = *(double *)(puVar13 + lVar18 * 8); + lVar18 = lVar18 + 1; + dVar39 = dVar39 + dVar36 * ((double)bVar10 - dVar40); + dVar38 = dVar38 + dVar36 * ((double)*pbVar2 - *pdVar6); + dVar20 = dVar20 + dVar36 * ((double)*pbVar3 - *pdVar7); + dVar37 = dVar37 + dVar36 * ((double)*pbVar4 - *pdVar5); + } while ((int)lVar18 < iVar9); + } + pbVar23 = pbVar23 + 4; + *(double *)((long)pdVar29 + lVar16) = dVar39 * param_1; + lVar16 = lVar16 + 0x20; + pdVar22[1] = dVar38 * param_1; + pdVar22[2] = dVar20 * param_1; + /* catch() { ... } // from try @ 002ce838 with catch @ 002ce804 + catch() { ... } // from try @ 002cea3c with catch @ 002ce804 + catch() { ... } // from try @ 002ceb08 with catch @ 002ce804 */ + pdVar22[3] = dVar37 * param_1; + pdVar22 = pdVar22 + 4; + } while (lVar16 != (lVar26 + 4 + (ulong)(uVar30 >> 2) * 4) * 8); + iVar14 = (int)lVar26 + 4 + (uVar30 >> 2) * 4; + } + if (iVar14 < iVar8) { + lVar18 = (long)iVar14; + pbVar23 = pbVar32 + lVar18; + lVar16 = lVar18 << 3; + /* try { // try from 002ce838 to 003ce83b has its CatchHandler @ 002ce804 */ + do { + pdVar22 = pdVar24; + if (pdVar24 == (double *)0x0) { + pdVar22 = (double *)((long)pdVar31 + lVar16); + } + dVar20 = 0.0; + if (0 < iVar9) { + lVar21 = 0; + pbVar17 = pbVar23; + do { + bVar10 = *pbVar17; + pbVar17 = pbVar17 + lVar27; + dVar38 = *pdVar22; + pdVar22 = pdVar22 + uVar34; + lVar11 = lVar21 * 8; + lVar21 = lVar21 + 1; + dVar20 = dVar20 + ((double)bVar10 - dVar38) * *(double *)(puVar13 + lVar11); + } while ((int)lVar21 < iVar9); + } + pbVar23 = pbVar23 + 1; + *(double *)((long)pdVar29 + lVar16) = dVar20 * param_1; + lVar16 = lVar16 + 8; + } while (lVar16 != (lVar18 + 1 + (ulong)(uint)((iVar8 + -1) - iVar14)) * 8); + } + iVar33 = iVar33 + 1; + pdVar29 = pdVar29 + uVar35; + lVar26 = lVar26 + 1; + uVar30 = uVar30 - 1; + pbVar25 = pbVar25 + 1; + pdVar15 = pdVar15 + 1; + pdVar28 = pdVar28 + uVar35 + 1; + if (iVar33 == iVar8) goto LAB_002ce664; + if (pdVar24 != (double *)0x0) break; +LAB_002ce8d0: + pdVar22 = pdVar24; + pbVar23 = pbVar25; + pdVar19 = pdVar15; + if (0 < iVar9) { + do { + *(double *)(puVar13 + (long)pdVar22 * 8) = (double)*pbVar23 - *pdVar19; + pdVar22 = (double *)((long)pdVar22 + 1); + pbVar23 = pbVar23 + lVar27; + pdVar19 = pdVar19 + uVar34; + } while ((int)pdVar22 < iVar9); + } + } + } while( true ); + } + } +LAB_002ce664: + if (bVar12) { + operator_delete__(puVar13); + } + return; +} + + +================================================================== + +### FUNC 002ce964 (2564 bytes) name=FUN_002ce964 + +void FUN_002ce964(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + double *pdVar2; + double *pdVar3; + double *pdVar4; + short *psVar5; + short *psVar6; + short *psVar7; + short *psVar8; + short *psVar9; + short *psVar10; + uint uVar11; + uint uVar12; + short sVar13; + bool bVar14; + double *pdVar15; + double *pdVar16; + double *pdVar17; + double dVar18; + short *psVar19; + double *pdVar20; + short *psVar21; + short *psVar22; + long lVar23; + short *psVar24; + long lVar25; + uint uVar26; + long lVar27; + double *pdVar28; + short *psVar29; + undefined1 (*pauVar30) [16]; + uint uVar31; + uint uVar32; + uint uVar33; + ulong uVar34; + double *pdVar35; + double *pdVar36; + double *pdVar37; + uint uVar38; + uint uVar39; + ulong uVar40; + ulong uVar41; + int iVar42; + double dVar43; + undefined1 auVar44 [16]; + double dVar45; + long lVar46; + double dVar47; + double dVar48; + double dVar49; + long lVar50; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + double adStack_408 [129]; + + /* try { // try from 002ce978 to 003ce97b has its CatchHandler @ 002ceabc */ + /* try { // try from 002ce980 to 003ce98f has its CatchHandler @ 002ceb0c */ + psVar21 = *(short **)(param_2 + 0x10); + uVar34 = *(ulong *)(param_2 + 0x50) >> 1; + pdVar35 = *(double **)(param_3 + 0x10); + pdVar37 = *(double **)(param_4 + 0x10); + uVar41 = *(ulong *)(param_3 + 0x50) >> 3; + if (*(int *)(param_4 + 8) < 2) { + uVar40 = 0; + } + else { + uVar40 = *(ulong *)(param_4 + 0x50) >> 3; + } + /* try { // try from 002ce9d0 to 003ce9d3 has its CatchHandler @ 002ceb30 */ + uVar11 = (*(uint **)(param_2 + 0x40))[1]; + uVar12 = **(uint **)(param_2 + 0x40); + bVar1 = (int)uVar11 <= *(int *)(param_4 + 0xc); + iVar42 = uVar12 * 8; + if ((pdVar37 != (double *)0x0) && (iVar42 = uVar12 * 0x28, bVar1)) { + iVar42 = uVar12 * 8; + } + if ((ulong)(long)iVar42 < 0x409) { + pdVar15 = adStack_408; + bVar14 = false; + } + else { + /* try { // try from 002cea2c to 003cea2f has its CatchHandler @ 002ceb14 */ + pdVar15 = operator_new__((long)iVar42); + /* try { // try from 002cea34 to 003cea37 has its CatchHandler @ 002ceb30 */ + /* try { // try from 002cea3c to 003cea3f has its CatchHandler @ 002ce804 */ + bVar14 = pdVar15 != adStack_408; + } + if (pdVar37 == (double *)0x0) { +LAB_002ceabc: + /* catch() { ... } // from try @ 002ce978 with catch @ 002ceabc */ + if (0 < (int)uVar11) { + uVar33 = (uint)((ulong)pdVar15 >> 3) & 1; + if (uVar12 < uVar33) { + uVar33 = uVar12; + } + uVar39 = uVar12; + if (9 < uVar12) { + uVar39 = uVar33; + } + lVar46 = NEON_shl(uVar34,2); + /* try { // try from 002ceb08 to 003ceb0b has its CatchHandler @ 002ce804 */ + /* catch() { ... } // from try @ 002ce908 with catch @ 002ceb0c + catch() { ... } // from try @ 002ce980 with catch @ 002ceb0c + catch() { ... } // from try @ 002ceaa0 with catch @ 002ceb0c */ + uVar33 = ((uVar12 - uVar39) - 8 >> 3) + 1; + /* catch() { ... } // from try @ 002cea2c with catch @ 002ceb14 */ + lVar50 = NEON_shl(uVar34 * 3,1); + /* catch() { ... } // from try @ 002ce9d0 with catch @ 002ceb30 + catch() { ... } // from try @ 002cea34 with catch @ 002ceb30 */ + /* catch() { ... } // from try @ 002ceb5c with catch @ 002ceb38 + catch() { ... } // from try @ 002cec60 with catch @ 002ceb38 + catch() { ... } // from try @ 002ced08 with catch @ 002ceb38 */ + iVar42 = uVar33 * 8; + /* try { // try from 002ceb5c to 003ceb5f has its CatchHandler @ 002ceb38 */ + lVar27 = 0; + psVar22 = psVar21 + uVar34; + uVar38 = uVar11 - 4; + uVar31 = 0; + psVar29 = psVar21; + pdVar37 = pdVar35; + do { + /* try { // try from 002cebe0 to 003cec23 has its CatchHandler @ 002ced0c */ + if (0 < (int)uVar12) { + uVar32 = uVar39; + if (uVar39 != 0) { + *pdVar15 = (double)(int)*psVar29; + /* try { // try from 002cec50 to 003cec53 has its CatchHandler @ 002cecd8 */ + /* try { // try from 002cec58 to 003cec5b has its CatchHandler @ 002ced0c */ + /* try { // try from 002cec60 to 003cec63 has its CatchHandler @ 002ceb38 */ + if ((((uVar39 != 1) && (pdVar15[1] = (double)(int)*psVar22, uVar39 != 2)) && + (pdVar15[2] = (double)(int)*(short *)((long)psVar29 + lVar46), uVar39 != 3)) && + (((pdVar15[3] = (double)(int)*(short *)((long)psVar22 + lVar46), uVar39 != 4 && + (pdVar15[4] = (double)(int)psVar29[uVar34 * 4], uVar39 != 5)) && + ((pdVar15[5] = (double)(int)psVar22[uVar34 * 4], uVar39 != 6 && + (pdVar15[6] = (double)(int)psVar29[uVar34 * 6], uVar39 != 7)))))) { + pdVar15[7] = (double)(int)psVar22[uVar34 * 6]; + if (uVar39 == 8) { + uVar32 = 8; + } + else { + pdVar15[8] = (double)(int)psVar29[uVar34 * 8]; + uVar32 = 9; + } + } + if (uVar12 == uVar39) goto LAB_002cee98; + } + if (6 < (uVar12 - 1) - uVar39) { + /* try { // try from 002cecbc to 003cecbf has its CatchHandler @ 002ced0c */ + uVar26 = 0; + psVar19 = psVar21 + lVar27 + uVar39 * uVar34 + uVar34; + pauVar30 = (undefined1 (*) [16])(pdVar15 + uVar39); + do { + /* catch() { ... } // from try @ 002cec50 with catch @ 002cecd8 */ + uVar26 = uVar26 + 1; + psVar24 = psVar19 + -uVar34; + sVar13 = *psVar19; + psVar5 = psVar19 + uVar34; + /* try { // try from 002ced08 to 003ced0b has its CatchHandler @ 002ceb38 */ + /* catch() { ... } // from try @ 002cebe0 with catch @ 002ced0c + catch() { ... } // from try @ 002cec58 with catch @ 002ced0c + catch() { ... } // from try @ 002cecbc with catch @ 002ced0c */ + psVar6 = psVar19 + uVar34 * 2; + /* catch() { ... } // from try @ 002ced38 with catch @ 002ced14 + catch() { ... } // from try @ 002cee3c with catch @ 002ced14 + catch() { ... } // from try @ 002ceee4 with catch @ 002ced14 */ + psVar7 = (short *)((long)psVar19 + lVar50); + psVar8 = psVar19 + uVar34 * 4; + /* try { // try from 002ced38 to 003ced3b has its CatchHandler @ 002ced14 */ + psVar9 = psVar19 + uVar34 * 5; + psVar10 = psVar19 + uVar34 * 6; + psVar19 = psVar19 + uVar34 * 8; + auVar53._0_8_ = (long)(int)*psVar24; + auVar53._8_8_ = (long)(int)sVar13; + auVar51._0_8_ = (long)(int)*psVar5; + auVar51._8_8_ = (long)(int)*psVar6; + auVar52._0_8_ = (long)(int)*psVar7; + auVar52._8_8_ = (long)(int)*psVar8; + auVar44._0_8_ = (long)(int)*psVar9; + auVar44._8_8_ = (long)(int)*psVar10; + auVar53 = NEON_scvtf(auVar53,8); + *pauVar30 = auVar53; + auVar51 = NEON_scvtf(auVar51,8); + auVar52 = NEON_scvtf(auVar52,8); + auVar44 = NEON_scvtf(auVar44,8); + *(double *)((long)pauVar30[1] + 8) = auVar51._8_8_; + *(double *)pauVar30[1] = auVar51._0_8_; + *(double *)((long)pauVar30[2] + 8) = auVar52._8_8_; + *(double *)pauVar30[2] = auVar52._0_8_; + *(double *)((long)pauVar30[3] + 8) = auVar44._8_8_; + *(double *)pauVar30[3] = auVar44._0_8_; + pauVar30 = pauVar30 + 4; + } while (uVar26 < uVar33); + uVar32 = uVar32 + iVar42; + if (iVar42 == uVar12 - uVar39) goto LAB_002cee98; + } + /* try { // try from 002cedbc to 003cedff has its CatchHandler @ 002ceee8 */ + lVar23 = (long)(int)uVar32 * uVar34; + pdVar15[(int)uVar32] = (double)(int)psVar21[lVar23 + lVar27]; + if ((int)(uVar32 + 1) < (int)uVar12) { + lVar23 = lVar23 + uVar34; + pdVar15[(int)(uVar32 + 1)] = (double)(int)psVar21[lVar27 + lVar23]; + if ((int)(uVar32 + 2) < (int)uVar12) { + lVar23 = uVar34 + lVar23; + pdVar15[(int)(uVar32 + 2)] = (double)(int)psVar21[lVar23 + lVar27]; + if ((int)(uVar32 + 3) < (int)uVar12) { + lVar23 = uVar34 + lVar23; + /* try { // try from 002cee2c to 003cee2f has its CatchHandler @ 002ceeb4 */ + /* try { // try from 002cee34 to 003cee37 has its CatchHandler @ 002ceee8 */ + pdVar15[(int)(uVar32 + 3)] = (double)(int)psVar21[lVar23 + lVar27]; + /* try { // try from 002cee3c to 003cee3f has its CatchHandler @ 002ced14 */ + if ((int)(uVar32 + 4) < (int)uVar12) { + lVar23 = uVar34 + lVar23; + pdVar15[(int)(uVar32 + 4)] = (double)(int)psVar21[lVar23 + lVar27]; + if ((int)(uVar32 + 5) < (int)uVar12) { + lVar23 = uVar34 + lVar23; + pdVar15[(int)(uVar32 + 5)] = (double)(int)psVar21[lVar23 + lVar27]; + if ((int)(uVar32 + 6) < (int)uVar12) { + pdVar15[(int)(uVar32 + 6)] = (double)(int)psVar21[uVar34 + lVar23 + lVar27]; + } + } + } + } + } + } + } +LAB_002cee98: + /* try { // try from 002cee98 to 003cee9b has its CatchHandler @ 002ceee8 */ + uVar32 = uVar31; + if ((int)uVar31 < (int)(uVar11 - 3)) { + /* catch() { ... } // from try @ 002cee2c with catch @ 002ceeb4 */ + pdVar28 = pdVar37; + psVar19 = psVar29; + do { + dVar45 = 0.0; + dVar18 = dVar45; + dVar47 = dVar45; + dVar48 = dVar45; + if (0 < (int)uVar12) { + dVar18 = 0.0; + lVar23 = 0; + dVar47 = 0.0; + dVar48 = 0.0; + psVar24 = psVar19; + do { + /* try { // try from 002ceee4 to 003ceee7 has its CatchHandler @ 002ced14 */ + sVar13 = *psVar24; + psVar5 = psVar24 + 1; + /* catch() { ... } // from try @ 002cedbc with catch @ 002ceee8 + catch() { ... } // from try @ 002cee34 with catch @ 002ceee8 + catch() { ... } // from try @ 002cee98 with catch @ 002ceee8 */ + psVar6 = psVar24 + 2; + psVar7 = psVar24 + 3; + /* catch() { ... } // from try @ 002cef14 with catch @ 002ceef0 + catch() { ... } // from try @ 002cf018 with catch @ 002ceef0 + catch() { ... } // from try @ 002cf0c0 with catch @ 002ceef0 */ + psVar24 = psVar24 + uVar34; + dVar43 = pdVar15[lVar23]; + lVar23 = lVar23 + 1; + /* try { // try from 002cef14 to 003cef17 has its CatchHandler @ 002ceef0 */ + dVar48 = dVar48 + dVar43 * (double)(int)sVar13; + dVar47 = dVar47 + dVar43 * (double)(int)*psVar5; + dVar18 = dVar18 + dVar43 * (double)(int)*psVar6; + dVar45 = dVar45 + dVar43 * (double)(int)*psVar7; + } while ((int)lVar23 < (int)uVar12); + } + pdVar16 = pdVar28 + 4; + psVar19 = psVar19 + 4; + pdVar28[1] = dVar47 * param_1; + *pdVar28 = dVar48 * param_1; + pdVar28[3] = dVar45 * param_1; + pdVar28[2] = dVar18 * param_1; + pdVar28 = pdVar16; + } while (pdVar16 != pdVar35 + lVar27 + 4 + (ulong)(uVar38 >> 2) * 4); + uVar32 = (int)lVar27 + 4 + (uVar38 >> 2) * 4; + } + if ((int)uVar32 < (int)uVar11) { + lVar23 = (long)(int)uVar32; + psVar19 = psVar21 + lVar23; + /* try { // try from 002cef98 to 003cefdb has its CatchHandler @ 002cf0c4 */ + pdVar28 = pdVar35 + lVar23; + do { + dVar18 = 0.0; + if (0 < (int)uVar12) { + lVar25 = 0; + psVar24 = psVar19; + do { + sVar13 = *psVar24; + psVar24 = psVar24 + uVar34; + pdVar16 = pdVar15 + lVar25; + lVar25 = lVar25 + 1; + dVar18 = dVar18 + (double)(int)sVar13 * *pdVar16; + } while ((int)lVar25 < (int)uVar12); + } + psVar19 = psVar19 + 1; + *pdVar28 = dVar18 * param_1; + pdVar28 = pdVar28 + 1; + } while (psVar19 != psVar21 + lVar23 + 1 + (ulong)((uVar11 - 1) - uVar32)); + } + uVar31 = uVar31 + 1; + lVar27 = lVar27 + 1; + pdVar35 = pdVar35 + uVar41; + uVar38 = uVar38 - 1; + psVar29 = psVar29 + 1; + psVar22 = psVar22 + 1; + /* try { // try from 002cf008 to 003cf00b has its CatchHandler @ 002cf090 */ + pdVar37 = pdVar37 + uVar41 + 1; + } while (uVar31 != uVar11); + } + } + else { + if (bVar1) { + pdVar28 = (double *)0x0; + } + else { + pdVar28 = pdVar15 + (int)uVar12; + if (0 < (int)uVar12) { + pdVar16 = pdVar28 + 3; + do { + dVar18 = *pdVar37; + pdVar36 = pdVar16 + 4; + pdVar37 = pdVar37 + uVar40; + *pdVar16 = dVar18; + pdVar16[-1] = dVar18; + pdVar16[-2] = dVar18; + /* try { // try from 002ceaa0 to 003ceaa3 has its CatchHandler @ 002ceb0c */ + pdVar16[-3] = dVar18; + pdVar16 = pdVar36; + } while (pdVar36 != pdVar28 + (ulong)(uVar12 - 1) * 4 + 7); + } + if (uVar40 != 0) { + uVar40 = 4; + } + pdVar37 = pdVar28; + if (pdVar28 == (double *)0x0) goto LAB_002ceabc; + } + if (0 < (int)uVar11) { + lVar27 = 0; + /* try { // try from 002cf074 to 003cf077 has its CatchHandler @ 002cf0c4 */ + uVar39 = uVar11 - 4; + lVar46 = NEON_shl(uVar41,3); + uVar33 = 0; + /* catch() { ... } // from try @ 002cf008 with catch @ 002cf090 */ + psVar29 = psVar21; + pdVar36 = pdVar35; + pdVar16 = pdVar37; + if (pdVar28 == (double *)0x0) goto LAB_002cf2c4; + do { + if (0 < (int)uVar12) { + /* try { // try from 002cf0c0 to 003cf0c3 has its CatchHandler @ 002ceef0 */ + /* catch() { ... } // from try @ 002cef98 with catch @ 002cf0c4 + catch() { ... } // from try @ 002cf010 with catch @ 002cf0c4 + catch() { ... } // from try @ 002cf074 with catch @ 002cf0c4 */ + lVar50 = 0; + psVar22 = psVar29; + pdVar20 = pdVar28; + do { + /* catch() { ... } // from try @ 002cf0f0 with catch @ 002cf0cc + catch() { ... } // from try @ 002cf1f4 with catch @ 002cf0cc + catch() { ... } // from try @ 002cf29c with catch @ 002cf0cc */ + sVar13 = *psVar22; + psVar22 = psVar22 + uVar34; + dVar18 = *pdVar20; + pdVar20 = pdVar20 + uVar40; + pdVar15[lVar50] = (double)(int)sVar13 - dVar18; + lVar50 = lVar50 + 1; + /* try { // try from 002cf0f0 to 003cf0f3 has its CatchHandler @ 002cf0cc */ + } while ((int)lVar50 < (int)uVar12); + } + while( true ) { + uVar31 = uVar33; + if ((int)uVar33 < (int)(uVar11 - 3)) { + lVar50 = lVar27 << 3; + pdVar20 = pdVar35; + psVar22 = psVar29; + do { + pdVar17 = pdVar28; + if (pdVar28 == (double *)0x0) { + pdVar17 = (double *)((long)pdVar37 + lVar50); + } + dVar45 = 0.0; + dVar18 = dVar45; + dVar47 = dVar45; + dVar48 = dVar45; + if (0 < (int)uVar12) { + dVar18 = 0.0; + lVar23 = 0; + dVar47 = 0.0; + dVar48 = 0.0; + psVar19 = psVar22; + do { + sVar13 = *psVar19; + psVar24 = psVar19 + 1; + psVar5 = psVar19 + 2; + psVar6 = psVar19 + 3; + psVar19 = psVar19 + uVar34; + pdVar2 = pdVar17 + 3; + dVar49 = *pdVar17; + pdVar3 = pdVar17 + 1; + /* try { // try from 002cf174 to 003cf1b7 has its CatchHandler @ 002cf2a0 */ + pdVar4 = pdVar17 + 2; + pdVar17 = pdVar17 + uVar40; + dVar43 = pdVar15[lVar23]; + lVar23 = lVar23 + 1; + dVar48 = dVar48 + dVar43 * ((double)(int)sVar13 - dVar49); + dVar47 = dVar47 + dVar43 * ((double)(int)*psVar24 - *pdVar3); + dVar18 = dVar18 + dVar43 * ((double)(int)*psVar5 - *pdVar4); + dVar45 = dVar45 + dVar43 * ((double)(int)*psVar6 - *pdVar2); + } while ((int)lVar23 < (int)uVar12); + } + lVar50 = lVar50 + 0x20; + psVar22 = psVar22 + 4; + pdVar20[1] = dVar47 * param_1; + *pdVar20 = dVar48 * param_1; + /* try { // try from 002cf1e4 to 003cf1e7 has its CatchHandler @ 002cf26c */ + pdVar20[3] = dVar45 * param_1; + pdVar20[2] = dVar18 * param_1; + pdVar20 = pdVar20 + 4; + /* try { // try from 002cf1ec to 003cf1ef has its CatchHandler @ 002cf2a0 */ + } while (lVar50 != (lVar27 + 4 + (ulong)(uVar39 >> 2) * 4) * 8); + /* try { // try from 002cf1f4 to 003cf1f7 has its CatchHandler @ 002cf0cc */ + uVar31 = (int)lVar27 + 4 + (uVar39 >> 2) * 4; + } + if ((int)uVar31 < (int)uVar11) { + lVar23 = (long)(int)uVar31; + lVar50 = lVar23 << 3; + psVar22 = psVar21 + lVar23; + do { + pdVar20 = pdVar28; + if (pdVar28 == (double *)0x0) { + pdVar20 = (double *)((long)pdVar37 + lVar50); + } + dVar18 = 0.0; + if (0 < (int)uVar12) { + lVar25 = 0; + psVar19 = psVar22; + do { + sVar13 = *psVar19; + psVar19 = psVar19 + uVar34; + dVar47 = *pdVar20; + /* try { // try from 002cf250 to 003cf253 has its CatchHandler @ 002cf2a0 */ + pdVar20 = pdVar20 + uVar40; + pdVar17 = pdVar15 + lVar25; + lVar25 = lVar25 + 1; + dVar18 = dVar18 + ((double)(int)sVar13 - dVar47) * *pdVar17; + /* catch() { ... } // from try @ 002cf1e4 with catch @ 002cf26c */ + } while ((int)lVar25 < (int)uVar12); + } + psVar22 = psVar22 + 1; + *(double *)((long)pdVar36 + lVar50) = dVar18 * param_1; + lVar50 = lVar50 + 8; + } while (lVar50 != (lVar23 + 1 + (ulong)((uVar11 - 1) - uVar31)) * 8); + } + uVar33 = uVar33 + 1; + lVar27 = lVar27 + 1; + uVar39 = uVar39 - 1; + /* try { // try from 002cf29c to 003cf29f has its CatchHandler @ 002cf0cc */ + psVar29 = psVar29 + 1; + /* catch() { ... } // from try @ 002cf174 with catch @ 002cf2a0 + catch() { ... } // from try @ 002cf1ec with catch @ 002cf2a0 + catch() { ... } // from try @ 002cf250 with catch @ 002cf2a0 */ + pdVar36 = (double *)((long)pdVar36 + lVar46); + pdVar16 = pdVar16 + 1; + /* catch() { ... } // from try @ 002cf2f8 with catch @ 002cf2b0 + catch() { ... } // from try @ 002cf594 with catch @ 002cf2b0 + catch() { ... } // from try @ 002cfcf4 with catch @ 002cf2b0 + catch() { ... } // from try @ 002d065c with catch @ 002cf2b0 */ + pdVar35 = (double *)((long)pdVar35 + lVar46 + 8); + if (uVar33 == uVar11) goto LAB_002cf010; + if (pdVar28 != (double *)0x0) break; +LAB_002cf2c4: + pdVar20 = pdVar28; + psVar22 = psVar29; + pdVar17 = pdVar16; + if (0 < (int)uVar12) { + do { + pdVar15[(long)pdVar20] = (double)(int)*psVar22 - *pdVar17; + pdVar20 = (double *)((long)pdVar20 + 1); + /* try { // try from 002cf2f8 to 003cf317 has its CatchHandler @ 002cf2b0 */ + psVar22 = psVar22 + uVar34; + pdVar17 = pdVar17 + uVar40; + } while ((int)pdVar20 < (int)uVar12); + } + } + } while( true ); + } + } +LAB_002cf010: + /* try { // try from 002cf010 to 003cf013 has its CatchHandler @ 002cf0c4 */ + if (bVar14) { + /* try { // try from 002cf018 to 003cf01b has its CatchHandler @ 002ceef0 */ + operator_delete__(pdVar15); + } + return; +} + + +================================================================== + +### FUNC 002cf388 (2516 bytes) name=FUN_002cf388 + +void FUN_002cf388(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + float *pfVar2; + float *pfVar3; + ushort *puVar4; + ushort *puVar5; + ushort *puVar6; + ushort *puVar7; + ushort *puVar8; + ushort *puVar9; + uint uVar10; + uint uVar11; + ushort uVar12; + float *pfVar13; + bool bVar14; + float *pfVar15; + float *pfVar16; + float *pfVar17; + long lVar18; + ushort *puVar19; + ushort *puVar20; + float *pfVar21; + long lVar22; + ushort *puVar23; + long lVar24; + long lVar25; + float *pfVar26; + ushort *puVar27; + uint uVar28; + uint uVar29; + uint uVar30; + uint uVar31; + ulong uVar32; + undefined8 *puVar33; + ushort *puVar34; + float *pfVar35; + undefined8 *puVar36; + uint uVar37; + uint uVar38; + undefined8 *puVar39; + ulong uVar40; + ulong uVar41; + int iVar42; + double dVar43; + undefined1 auVar44 [16]; + float fVar45; + double dVar46; + long lVar47; + long lVar48; + double dVar49; + double dVar50; + double dVar51; + long lVar52; + undefined1 auVar53 [16]; + float afStack_408 [258]; + + puVar34 = *(ushort **)(param_2 + 0x10); + uVar32 = *(ulong *)(param_2 + 0x50) >> 1; + puVar33 = *(undefined8 **)(param_3 + 0x10); + uVar40 = *(ulong *)(param_3 + 0x50) >> 2; + pfVar35 = *(float **)(param_4 + 0x10); + if (*(int *)(param_4 + 8) < 2) { + uVar41 = 0; + } + else { + uVar41 = *(ulong *)(param_4 + 0x50) >> 2; + } + uVar10 = (*(uint **)(param_2 + 0x40))[1]; + uVar11 = **(uint **)(param_2 + 0x40); + bVar1 = (int)uVar10 <= *(int *)(param_4 + 0xc); + iVar42 = uVar11 * 4; + /* try { // try from 002cf41c to 003cf41f has its CatchHandler @ 002d0688 */ + if ((pfVar35 != (float *)0x0) && (iVar42 = uVar11 * 0x14, bVar1)) { + iVar42 = uVar11 * 4; + } + if ((ulong)(long)iVar42 < 0x409) { + pfVar15 = afStack_408; + bVar14 = false; + } + else { + pfVar15 = operator_new__((long)iVar42); + bVar14 = pfVar15 != afStack_408; + } + if (pfVar35 == (float *)0x0) { +LAB_002cf4d8: + if (0 < (int)uVar10) { + lVar18 = uVar40 * 4; + uVar30 = -((uint)((ulong)pfVar15 >> 2) & 3) & 3; + lVar48 = NEON_shl(uVar32,2); + /* try { // try from 002cf508 to 003cf55b has its CatchHandler @ 002d07d8 */ + if (uVar11 < uVar30) { + uVar30 = uVar11; + } + uVar31 = uVar11; + if (9 < uVar11) { + uVar31 = uVar30; + } + lVar52 = NEON_shl(uVar32 * 3,1); + uVar30 = ((uVar11 - uVar31) - 8 >> 3) + 1; + lVar47 = NEON_shl(uVar32,4); + /* try { // try from 002cf578 to 003cf57b has its CatchHandler @ 002d0700 */ + /* try { // try from 002cf580 to 003cf583 has its CatchHandler @ 002d07d8 */ + iVar42 = uVar30 * 8; + /* try { // try from 002cf594 to 003cf5a7 has its CatchHandler @ 002cf2b0 */ + lVar25 = 0; + uVar37 = uVar10 - 4; + puVar19 = puVar34 + uVar32; + uVar29 = 0; + /* try { // try from 002cf600 to 003cf603 has its CatchHandler @ 002d07d8 */ + puVar27 = puVar34; + puVar36 = puVar33; + do { + if (0 < (int)uVar11) { + uVar28 = uVar31; + if (uVar31 != 0) { + *pfVar15 = (float)*puVar27; + /* try { // try from 002cf680 to 003cf6c3 has its CatchHandler @ 002d07e0 */ + if ((((uVar31 != 1) && (pfVar15[1] = (float)*puVar19, uVar31 != 2)) && + (pfVar15[2] = (float)*(ushort *)((long)puVar27 + lVar48), uVar31 != 3)) && + (((pfVar15[3] = (float)*(ushort *)((long)puVar19 + lVar48), uVar31 != 4 && + (pfVar15[4] = (float)puVar27[uVar32 * 4], uVar31 != 5)) && + ((pfVar15[5] = (float)puVar19[uVar32 * 4], uVar31 != 6 && + (pfVar15[6] = (float)puVar27[uVar32 * 6], uVar31 != 7)))))) { + pfVar15[7] = (float)puVar19[uVar32 * 6]; + if (uVar31 == 8) { + uVar28 = 8; + } + else { + pfVar15[8] = (float)*(ushort *)((long)puVar27 + lVar47); + uVar28 = 9; + } + } + if (uVar11 == uVar31) goto LAB_002cf890; + } + if (6 < (uVar11 - 1) - uVar31) { + uVar38 = 0; + /* try { // try from 002cf6f0 to 003cf6f3 has its CatchHandler @ 002d06b0 */ + /* try { // try from 002cf6f8 to 003cf6fb has its CatchHandler @ 002d07e0 */ + puVar20 = puVar34 + lVar25 + uVar31 * uVar32 + uVar32; + pfVar35 = pfVar15 + uVar31; + do { + /* try { // try from 002cf700 to 003cf8e7 has its CatchHandler @ 002d07d8 */ + uVar38 = uVar38 + 1; + puVar23 = puVar20 + -uVar32; + uVar12 = *puVar20; + puVar4 = puVar20 + uVar32; + puVar5 = puVar20 + uVar32 * 2; + puVar6 = (ushort *)((long)puVar20 + lVar52); + puVar7 = puVar20 + uVar32 * 4; + puVar8 = puVar20 + uVar32 * 5; + puVar9 = puVar20 + uVar32 * 6; + puVar20 = (ushort *)((long)puVar20 + lVar47); + auVar53._2_2_ = 0; + auVar53._0_2_ = *puVar23; + auVar53._4_2_ = uVar12; + auVar53._6_2_ = 0; + auVar53._8_2_ = *puVar4; + auVar53._10_2_ = 0; + auVar53._12_2_ = *puVar5; + auVar53._14_2_ = 0; + auVar44._2_2_ = 0; + auVar44._0_2_ = *puVar6; + auVar44._4_2_ = *puVar7; + auVar44._6_2_ = 0; + auVar44._8_2_ = *puVar8; + auVar44._10_2_ = 0; + auVar44._12_2_ = *puVar9; + auVar44._14_2_ = 0; + auVar53 = NEON_scvtf(auVar53,4); + auVar44 = NEON_scvtf(auVar44,4); + *(long *)(pfVar35 + 2) = auVar53._8_8_; + *(long *)pfVar35 = auVar53._0_8_; + *(long *)(pfVar35 + 6) = auVar44._8_8_; + *(long *)(pfVar35 + 4) = auVar44._0_8_; + pfVar35 = pfVar35 + 8; + } while (uVar38 < uVar30); + uVar28 = uVar28 + iVar42; + if (iVar42 == uVar11 - uVar31) goto LAB_002cf890; + } + lVar22 = (long)(int)uVar28 * uVar32; + pfVar15[(int)uVar28] = (float)puVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 1) < (int)uVar11) { + lVar22 = lVar22 + uVar32; + pfVar15[(int)(uVar28 + 1)] = (float)puVar34[lVar25 + lVar22]; + if ((int)(uVar28 + 2) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + pfVar15[(int)(uVar28 + 2)] = (float)puVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 3) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + pfVar15[(int)(uVar28 + 3)] = (float)puVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 4) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + pfVar15[(int)(uVar28 + 4)] = (float)puVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 5) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + pfVar15[(int)(uVar28 + 5)] = (float)puVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 6) < (int)uVar11) { + pfVar15[(int)(uVar28 + 6)] = (float)puVar34[uVar32 + lVar22 + lVar25]; + } + } + } + } + } + } + } +LAB_002cf890: + uVar28 = uVar29; + if ((int)uVar29 < (int)(uVar10 - 3)) { + puVar20 = puVar27; + puVar39 = puVar36; + do { + dVar46 = 0.0; + dVar49 = dVar46; + dVar50 = dVar46; + dVar51 = dVar46; + if (0 < (int)uVar11) { + dVar49 = 0.0; + lVar22 = 0; + dVar50 = 0.0; + dVar51 = 0.0; + puVar23 = puVar20; + do { + uVar12 = *puVar23; + puVar4 = puVar23 + 1; + puVar5 = puVar23 + 2; + puVar6 = puVar23 + 3; + puVar23 = puVar23 + uVar32; + pfVar35 = pfVar15 + lVar22; + lVar22 = lVar22 + 1; + dVar43 = (double)*pfVar35; + dVar51 = dVar51 + dVar43 * (double)uVar12; + dVar50 = dVar50 + dVar43 * (double)*puVar4; + dVar49 = dVar49 + dVar43 * (double)*puVar5; + dVar46 = dVar46 + dVar43 * (double)*puVar6; + } while ((int)lVar22 < (int)uVar11); + } + puVar20 = puVar20 + 4; + puVar39[1] = CONCAT44((float)(dVar46 * param_1),(float)(dVar49 * param_1)); + *puVar39 = CONCAT44((float)(dVar50 * param_1),(float)(dVar51 * param_1)); + puVar39 = puVar39 + 2; + } while (puVar20 != puVar34 + lVar25 + 4 + (ulong)(uVar37 >> 2) * 4); + uVar28 = (int)lVar25 + 4 + (uVar37 >> 2) * 4; + } + if ((int)uVar28 < (int)uVar10) { + lVar22 = (long)(int)uVar28; + puVar20 = puVar34 + lVar22; + pfVar35 = (float *)((long)puVar33 + lVar22 * 4); + do { + /* try { // try from 002cf994 to 003cf997 has its CatchHandler @ 002d0794 */ + dVar49 = 0.0; + if (0 < (int)uVar11) { + lVar24 = 0; + puVar23 = puVar20; + do { + uVar12 = *puVar23; + puVar23 = puVar23 + uVar32; + pfVar26 = pfVar15 + lVar24; + lVar24 = lVar24 + 1; + dVar49 = dVar49 + (double)uVar12 * (double)*pfVar26; + } while ((int)lVar24 < (int)uVar11); + } + puVar20 = puVar20 + 1; + *pfVar35 = (float)(dVar49 * param_1); + pfVar35 = pfVar35 + 1; + } while (puVar20 != puVar34 + lVar22 + 1 + (ulong)((uVar10 - 1) - uVar28)); + } + uVar29 = uVar29 + 1; + lVar25 = lVar25 + 1; + uVar37 = uVar37 - 1; + puVar27 = puVar27 + 1; + puVar19 = puVar19 + 1; + puVar33 = (undefined8 *)((long)puVar33 + lVar18); + puVar36 = (undefined8 *)((long)puVar36 + lVar18 + 4); + } while (uVar29 != uVar10); + } + } + else { + if (bVar1) { + pfVar26 = (float *)0x0; + } + else { + pfVar26 = pfVar15 + (int)uVar11; + if (0 < (int)uVar11) { + pfVar16 = pfVar26 + 3; + do { + fVar45 = *pfVar35; + pfVar17 = pfVar16 + 4; + pfVar35 = pfVar35 + uVar41; + *pfVar16 = fVar45; + pfVar16[-1] = fVar45; + /* try { // try from 002cf4b8 to 003cf4bb has its CatchHandler @ 002d0808 */ + pfVar16[-2] = fVar45; + pfVar16[-3] = fVar45; + pfVar16 = pfVar17; + } while (pfVar17 != pfVar26 + (ulong)(uVar11 - 1) * 4 + 7); + } + if (uVar41 != 0) { + uVar41 = 4; + } + pfVar35 = pfVar26; + if (pfVar26 == (float *)0x0) goto LAB_002cf4d8; + } + if (0 < (int)uVar10) { + lVar18 = 0; + /* try { // try from 002cfa6c to 003cfa6f has its CatchHandler @ 002d0784 */ + uVar31 = uVar10 - 4; + lVar48 = NEON_shl(uVar40,2); + uVar30 = 0; + puVar27 = puVar34; + pfVar16 = pfVar35; + if (pfVar26 == (float *)0x0) goto LAB_002cfcb8; + do { + if (0 < (int)uVar11) { + lVar25 = 0; + puVar19 = puVar27; + pfVar17 = pfVar26; + do { + uVar12 = *puVar19; + puVar19 = puVar19 + uVar32; + fVar45 = *pfVar17; + pfVar17 = pfVar17 + uVar41; + pfVar15[lVar25] = (float)uVar12 - fVar45; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar11); + } + while( true ) { + uVar29 = uVar30; + if ((int)uVar30 < (int)(uVar10 - 3)) { + lVar25 = lVar18 << 2; + puVar19 = puVar27; + do { + pfVar17 = pfVar26; + if (pfVar26 == (float *)0x0) { + pfVar17 = (float *)((long)pfVar35 + lVar25); + } + dVar46 = 0.0; + dVar49 = dVar46; + dVar50 = dVar46; + dVar51 = dVar46; + if (0 < (int)uVar11) { + dVar49 = 0.0; + lVar47 = 0; + dVar50 = 0.0; + dVar51 = 0.0; + puVar20 = puVar19; + do { + uVar12 = *puVar20; + puVar23 = puVar20 + 1; + puVar4 = puVar20 + 2; + puVar5 = puVar20 + 3; + /* try { // try from 002cfb3c to 003cfb7f has its CatchHandler @ 002d0724 */ + puVar20 = puVar20 + uVar32; + pfVar21 = pfVar17 + 3; + fVar45 = *pfVar17; + pfVar2 = pfVar17 + 1; + pfVar3 = pfVar17 + 2; + pfVar17 = pfVar17 + uVar41; + pfVar13 = pfVar15 + lVar47; + lVar47 = lVar47 + 1; + dVar43 = (double)*pfVar13; + dVar51 = dVar51 + dVar43 * (double)((float)uVar12 - fVar45); + dVar50 = dVar50 + dVar43 * (double)((float)*puVar23 - *pfVar2); + dVar49 = dVar49 + dVar43 * (double)((float)*puVar4 - *pfVar3); + dVar46 = dVar46 + dVar43 * (double)((float)*puVar5 - *pfVar21); + } while ((int)lVar47 < (int)uVar11); + } + /* try { // try from 002cfbac to 003cfbaf has its CatchHandler @ 002d07f8 */ + puVar36 = (undefined8 *)((long)puVar33 + lVar25); + /* try { // try from 002cfbb4 to 003cfbc3 has its CatchHandler @ 002d0724 */ + lVar25 = lVar25 + 0x10; + puVar19 = puVar19 + 4; + puVar36[1] = CONCAT44((float)(dVar46 * param_1),(float)(dVar49 * param_1)); + *puVar36 = CONCAT44((float)(dVar50 * param_1),(float)(dVar51 * param_1)); + } while (lVar25 != (lVar18 + 4 + (ulong)(uVar31 >> 2) * 4) * 4); + uVar29 = (int)lVar18 + 4 + (uVar31 >> 2) * 4; + } + if ((int)uVar29 < (int)uVar10) { + lVar47 = (long)(int)uVar29; + lVar25 = lVar47 << 2; + /* try { // try from 002cfc0c to 003cfc0f has its CatchHandler @ 002d07d0 */ + puVar19 = puVar34 + lVar47; + do { + pfVar17 = pfVar26; + if (pfVar26 == (float *)0x0) { + pfVar17 = (float *)((long)pfVar35 + lVar25); + } + dVar49 = 0.0; + if (0 < (int)uVar11) { + lVar52 = 0; + puVar20 = puVar19; + do { + uVar12 = *puVar20; + puVar20 = puVar20 + uVar32; + fVar45 = *pfVar17; + pfVar17 = pfVar17 + uVar41; + pfVar21 = pfVar15 + lVar52; + lVar52 = lVar52 + 1; + /* try { // try from 002cfc68 to 003cfc6b has its CatchHandler @ 002d07b8 */ + dVar49 = dVar49 + (double)((float)uVar12 - fVar45) * (double)*pfVar21; + } while ((int)lVar52 < (int)uVar11); + } + /* try { // try from 002cfc70 to 003cfc73 has its CatchHandler @ 002d07d0 */ + puVar19 = puVar19 + 1; + /* try { // try from 002cfc78 to 003cfc7b has its CatchHandler @ 002d0784 */ + *(float *)((long)puVar33 + lVar25) = (float)(dVar49 * param_1); + lVar25 = lVar25 + 4; + } while (lVar25 != (lVar47 + 1 + (ulong)((uVar10 - 1) - uVar29)) * 4); + } + uVar30 = uVar30 + 1; + lVar18 = lVar18 + 1; + uVar31 = uVar31 - 1; + puVar27 = puVar27 + 1; + pfVar16 = pfVar16 + 1; + puVar33 = (undefined8 *)((long)puVar33 + lVar48); + if (uVar30 == uVar10) goto LAB_002cfa0c; + if (pfVar26 != (float *)0x0) break; +LAB_002cfcb8: + pfVar17 = pfVar26; + puVar19 = puVar27; + pfVar21 = pfVar16; + if (0 < (int)uVar11) { + do { + /* try { // try from 002cfccc to 003cfce3 has its CatchHandler @ 002d07d8 */ + pfVar15[(long)pfVar17] = (float)*puVar19 - *pfVar21; + pfVar17 = (float *)((long)pfVar17 + 1); + puVar19 = puVar19 + uVar32; + pfVar21 = pfVar21 + uVar41; + } while ((int)pfVar17 < (int)uVar11); + } + } + } while( true ); + } + } +LAB_002cfa0c: + if (bVar14) { + operator_delete__(pfVar15); + } + return; +} + + +================================================================== + +### FUNC 002cfd7c (1852 bytes) name=FUN_002cfd7c + +void FUN_002cfd7c(double param_1,long param_2,long param_3,long param_4) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + uint uVar11; + long lVar12; + long lVar13; + bool bVar14; + double *pdVar15; + float *pfVar16; + long lVar17; + ulong uVar18; + long lVar19; + undefined8 *puVar20; + float *pfVar21; + int iVar22; + double *pdVar23; + double *pdVar24; + uint uVar25; + double *pdVar26; + double *pdVar27; + uint uVar28; + float *pfVar29; + double *pdVar30; + int iVar31; + int iVar32; + int iVar33; + float *pfVar34; + double *pdVar35; + ulong uVar36; + ulong uVar37; + double *pdVar38; + undefined8 uVar39; + undefined8 uVar40; + double dVar41; + double dVar42; + double dVar43; + ulong uVar44; + long lVar45; + int iVar46; + long lVar47; + double local_438; + double local_430; + double local_428; + double local_420; + double *local_418; + ulong local_410; + double adStack_408 [129]; + + /* try { // try from 002cfd94 to 003cfdd7 has its CatchHandler @ 002d087c */ + pfVar34 = *(float **)(param_2 + 0x10); + uVar36 = *(ulong *)(param_3 + 0x50) >> 3; + pdVar38 = *(double **)(param_3 + 0x10); + pdVar35 = *(double **)(param_4 + 0x10); + uVar44 = *(ulong *)(param_2 + 0x50) >> 2; + if (*(int *)(param_4 + 8) < 2) { + uVar37 = 0; + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + iVar8 = **(int **)(param_2 + 0x40); + } + else { + uVar6 = *(uint *)(param_4 + 0xc); + uVar37 = *(ulong *)(param_4 + 0x50) >> 3; + uVar7 = (*(int **)(param_2 + 0x40))[1]; + iVar8 = **(int **)(param_2 + 0x40); + } + if (pdVar35 == (double *)0x0) { + if (0 < iVar8) { + uVar10 = uVar7 - 4 >> 2; + uVar6 = (uVar10 + 1) * 4; + /* try { // try from 002d038c to 003d038f has its CatchHandler @ 002d0660 */ + if ((int)(uVar7 - 3) < 1) { + uVar6 = 0; + } + /* try { // try from 002d0394 to 003d0397 has its CatchHandler @ 002d07f0 */ + /* try { // try from 002d039c to 003d039f has its CatchHandler @ 002d07d8 */ + uVar37 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar6 << 2; + iVar33 = 0; + do { + pfVar29 = pfVar34 + 1; + pdVar35 = pdVar38; + iVar32 = iVar33; + do { + dVar42 = 0.0; + if (0 < (int)(uVar7 - 3)) { + pfVar16 = pfVar29; + pfVar21 = pfVar34; + do { + /* try { // try from 002d03f0 to 003d03f3 has its CatchHandler @ 002d078c */ + pfVar5 = pfVar16 + 4; + /* try { // try from 002d040c to 003d046b has its CatchHandler @ 002d07d8 */ + dVar42 = dVar42 + (double)pfVar21[1] * (double)*pfVar16 + + (double)pfVar16[-1] * (double)*pfVar21 + + (double)pfVar16[1] * (double)pfVar21[2] + + (double)pfVar16[2] * (double)pfVar21[3]; + pfVar16 = pfVar5; + pfVar21 = pfVar21 + 4; + } while (pfVar5 != pfVar29 + (ulong)uVar10 * 4 + 4); + } + if ((int)uVar6 < (int)uVar7) { + lVar17 = 0; + do { + lVar45 = lVar17 + uVar37; + lVar47 = lVar17 + (uVar37 - 4); + lVar17 = lVar17 + 4; + dVar42 = dVar42 + (double)*(float *)((long)pfVar29 + lVar47) * + (double)*(float *)((long)pfVar34 + lVar45); + } while (lVar17 != ((ulong)((uVar7 - 1) - uVar6) + 1) * 4); + } + iVar32 = iVar32 + 1; + pfVar29 = pfVar29 + uVar44; + *pdVar35 = dVar42 * param_1; + pdVar35 = pdVar35 + 1; + } while (iVar32 < iVar8); + iVar33 = iVar33 + 1; + pdVar38 = pdVar38 + uVar36 + 1; + pfVar34 = pfVar34 + uVar44; + } while (iVar33 != iVar8); + } + } + else { + uVar18 = -(ulong)(uVar7 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar7 << 3; + pdVar15 = adStack_408; + lVar17 = 0x20; + if (uVar6 != uVar7) { + lVar17 = 0; + } + /* try { // try from 002cfe04 to 003cfe07 has its CatchHandler @ 002d082c */ + local_418 = pdVar15; + local_410 = 0x408; + /* try { // try from 002cfe0c to 003cfe0f has its CatchHandler @ 002d087c */ + /* try { // try from 002cfe14 to 003cfe67 has its CatchHandler @ 002d07d8 */ + if (uVar18 < 0x409) { + local_410 = uVar18; + bVar14 = false; + } + else { + local_418 = operator_new__(uVar18); + bVar14 = local_418 != pdVar15; + local_410 = uVar18; + pdVar15 = local_418; + } + if (0 < iVar8) { + uVar10 = (uint)((ulong)pdVar15 >> 3) & 1; + if (uVar7 < uVar10) { + uVar10 = uVar7; + } + iVar32 = uVar7 - uVar10; + uVar9 = uVar7 - 4 >> 2; + uVar4 = (iVar32 - 4U >> 2) + 1; + lVar47 = NEON_shl((ulong)uVar10,3); + uVar11 = (uVar7 - 1) - uVar10; + lVar45 = NEON_shl((ulong)uVar10,2); + iVar46 = uVar4 * 4; + iVar33 = 0; + do { + /* try { // try from 002cfef8 to 003cff3b has its CatchHandler @ 002d0884 */ + if ((int)uVar6 < (int)uVar7) { + if (0 < (int)uVar7) { + if ((pdVar15 < pdVar35 + 1 && pdVar35 < pdVar15 + uVar7) || (uVar7 < 9)) { + lVar19 = 0; + do { + pdVar15[lVar19] = (double)pfVar34[lVar19] - *pdVar35; + lVar19 = lVar19 + 1; + /* try { // try from 002d031c to 003d035f has its CatchHandler @ 002d07f0 */ + } while ((int)lVar19 < (int)uVar7); + } + else { + if (uVar10 != 0) { + *pdVar15 = (double)*pfVar34 - *pdVar35; + } + uVar25 = (uint)(uVar10 != 0); + if (2 < uVar11) { + dVar42 = *pdVar35; + uVar28 = 0; + /* try { // try from 002d023c to 003d023f has its CatchHandler @ 002d06d8 */ + puVar20 = (undefined8 *)((long)pfVar34 + lVar45); + pdVar23 = (double *)((long)pdVar15 + lVar47); + do { + uVar40 = puVar20[1]; + uVar39 = *puVar20; + /* try { // try from 002d0244 to 003d0247 has its CatchHandler @ 002d07e8 */ + /* try { // try from 002d024c to 003d029f has its CatchHandler @ 002d07d8 */ + uVar28 = uVar28 + 1; + pdVar23[1] = (double)(float)((ulong)uVar39 >> 0x20) - dVar42; + *pdVar23 = (double)(float)uVar39 - dVar42; + pdVar23[3] = (double)(float)((ulong)uVar40 >> 0x20) - dVar42; + pdVar23[2] = (double)(float)uVar40 - dVar42; + puVar20 = puVar20 + 2; + pdVar23 = pdVar23 + 4; + } while (uVar28 < uVar4); + uVar25 = uVar25 + iVar46; + if (iVar46 == iVar32) goto LAB_002d0044; + } + iVar31 = uVar25 + 1; + pdVar15[(int)uVar25] = (double)pfVar34[(int)uVar25] - *pdVar35; + if (iVar31 < (int)uVar7) { + iVar22 = uVar25 + 2; + pdVar15[iVar31] = (double)pfVar34[iVar31] - *pdVar35; + if (iVar22 < (int)uVar7) { + pdVar15[iVar22] = (double)pfVar34[iVar22] - *pdVar35; + } + } + } + } + } + else if (0 < (int)uVar7) { + if ((pdVar15 < pdVar35 + 4 && pdVar35 < pdVar15 + 4) || (uVar7 < 9)) { + lVar19 = 0; + do { + pdVar15[lVar19] = (double)pfVar34[lVar19] - pdVar35[lVar19]; + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)uVar7); + } + else { + if (uVar10 != 0) { + *pdVar15 = (double)*pfVar34 - *pdVar35; + } + uVar25 = (uint)(uVar10 != 0); + if (2 < uVar11) { + uVar28 = 0; + /* try { // try from 002cff68 to 003cff6b has its CatchHandler @ 002d0854 */ + pdVar23 = (double *)((long)pdVar35 + lVar47); + /* try { // try from 002cff70 to 003cff73 has its CatchHandler @ 002d0884 */ + /* try { // try from 002cff78 to 003cffcb has its CatchHandler @ 002d07d8 */ + puVar20 = (undefined8 *)((long)pfVar34 + lVar45); + pdVar30 = (double *)((long)pdVar15 + lVar47); + do { + uVar40 = puVar20[1]; + uVar39 = *puVar20; + pdVar27 = pdVar23 + 1; + dVar41 = *pdVar23; + dVar43 = pdVar23[3]; + dVar42 = pdVar23[2]; + uVar28 = uVar28 + 1; + pdVar23 = pdVar23 + 4; + pdVar30[1] = (double)(float)((ulong)uVar39 >> 0x20) - *pdVar27; + *pdVar30 = (double)(float)uVar39 - dVar41; + pdVar30[3] = (double)(float)((ulong)uVar40 >> 0x20) - dVar43; + pdVar30[2] = (double)(float)uVar40 - dVar42; + puVar20 = puVar20 + 2; + pdVar30 = pdVar30 + 4; + } while (uVar28 < uVar4); + uVar25 = uVar25 + iVar46; + if (iVar46 == iVar32) goto LAB_002d0044; + } + iVar31 = uVar25 + 1; + pdVar15[(int)uVar25] = (double)pfVar34[(int)uVar25] - pdVar35[(int)uVar25]; + if (iVar31 < (int)uVar7) { + iVar22 = uVar25 + 2; + pdVar15[iVar31] = (double)pfVar34[iVar31] - pdVar35[iVar31]; + if (iVar22 < (int)uVar7) { + pdVar15[iVar22] = (double)pfVar34[iVar22] - pdVar35[iVar22]; + } + } + } + } +LAB_002d0044: + pfVar29 = pfVar34 + 1; + pdVar23 = pdVar35; + pdVar30 = pdVar38; + iVar31 = iVar33; + do { + /* try { // try from 002d005c to 003d009f has its CatchHandler @ 002d078c */ + pdVar27 = pdVar23; + if ((int)uVar6 < (int)uVar7) { + local_420 = *pdVar23; + local_428 = local_420; + local_430 = local_420; + local_438 = local_420; + pdVar27 = &local_438; + } + dVar42 = 0.0; + if ((int)uVar7 < 4) { + iVar22 = 0; + /* try { // try from 002d01cc to 003d020f has its CatchHandler @ 002d07e8 */ + } + else { + pfVar16 = pfVar29; + pdVar24 = pdVar27; + pdVar26 = pdVar15; + do { + pfVar21 = pfVar16 + 4; + pdVar1 = pdVar24 + 1; + dVar43 = *pdVar24; + /* try { // try from 002d00cc to 003d00cf has its CatchHandler @ 002d060c */ + /* try { // try from 002d00d4 to 003d00d7 has its CatchHandler @ 002d078c */ + pdVar2 = pdVar24 + 2; + /* try { // try from 002d00dc to 003d00df has its CatchHandler @ 002d07d8 */ + pdVar3 = pdVar24 + 3; + pdVar24 = (double *)((long)pdVar24 + lVar17); + dVar42 = dVar42 + ((double)*pfVar16 - *pdVar1) * pdVar26[1] + + ((double)pfVar16[-1] - dVar43) * *pdVar26 + + ((double)pfVar16[1] - *pdVar2) * pdVar26[2] + + ((double)pfVar16[2] - *pdVar3) * pdVar26[3]; + pfVar16 = pfVar21; + pdVar26 = pdVar26 + 4; + } while (pfVar21 != pfVar29 + (ulong)uVar9 * 4 + 4); + pdVar27 = (double *)((long)pdVar27 + lVar17 + (ulong)uVar9 * lVar17); + iVar22 = (uVar9 + 1) * 4; + } + if (iVar22 < (int)uVar7) { + lVar19 = 0; + /* try { // try from 002d0130 to 003d0133 has its CatchHandler @ 002d087c */ + do { + lVar12 = lVar19 + -1; + pdVar24 = pdVar27 + lVar19; + /* try { // try from 002d0140 to 003d0143 has its CatchHandler @ 002d0884 */ + lVar13 = iVar22 + lVar19; + lVar19 = lVar19 + 1; + /* try { // try from 002d014c to 003d014f has its CatchHandler @ 002d07d8 */ + dVar42 = dVar42 + ((double)pfVar29[iVar22 + lVar12] - *pdVar24) * pdVar15[lVar13]; + } while (lVar19 != (ulong)((uVar7 - 1) - iVar22) + 1); + } + iVar31 = iVar31 + 1; + pdVar23 = pdVar23 + uVar37; + pfVar29 = pfVar29 + uVar44; + *pdVar30 = dVar42 * param_1; + pdVar30 = pdVar30 + 1; + } while (iVar31 < iVar8); + iVar33 = iVar33 + 1; + pdVar35 = pdVar35 + uVar37; + pfVar34 = pfVar34 + uVar44; + pdVar38 = pdVar38 + uVar36 + 1; + } while (iVar33 != iVar8); + } + if (bVar14) { + local_418 = pdVar15; + local_410 = uVar18; + operator_delete__(pdVar15); + } + } + return; +} + + +================================================================== + +### FUNC 002d04b8 (2564 bytes) name=FUN_002d04b8 + +void FUN_002d04b8(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + double *pdVar2; + double *pdVar3; + double *pdVar4; + ushort *puVar5; + ushort *puVar6; + ushort *puVar7; + ushort *puVar8; + ushort *puVar9; + ushort *puVar10; + uint uVar11; + uint uVar12; + ushort uVar13; + undefined1 auVar14 [14]; + undefined1 auVar15 [14]; + bool bVar16; + double *pdVar17; + double *pdVar18; + double *pdVar19; + double dVar20; + ushort *puVar21; + double *pdVar22; + ushort *puVar23; + ushort *puVar24; + long lVar25; + ushort *puVar26; + long lVar27; + uint uVar28; + long lVar29; + double *pdVar30; + ushort *puVar31; + undefined1 (*pauVar32) [16]; + uint uVar33; + uint uVar34; + uint uVar35; + ulong uVar36; + double *pdVar37; + double *pdVar38; + double *pdVar39; + uint uVar40; + uint uVar41; + ulong uVar42; + ulong uVar43; + int iVar44; + double dVar45; + undefined1 auVar46 [16]; + double dVar47; + long lVar48; + double dVar49; + double dVar50; + double dVar51; + long lVar52; + ulong uVar53; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + double adStack_408 [129]; + + /* try { // try from 002d04cc to 003d04cf has its CatchHandler @ 002d07e0 */ + /* try { // try from 002d04f0 to 003d04f3 has its CatchHandler @ 002d07e8 */ + puVar23 = *(ushort **)(param_2 + 0x10); + uVar36 = *(ulong *)(param_2 + 0x50) >> 1; + pdVar37 = *(double **)(param_3 + 0x10); + pdVar39 = *(double **)(param_4 + 0x10); + uVar43 = *(ulong *)(param_3 + 0x50) >> 3; + /* try { // try from 002d0514 to 003d0517 has its CatchHandler @ 002d07f0 */ + if (*(int *)(param_4 + 8) < 2) { + /* try { // try from 002d0e84 to 003d0e87 has its CatchHandler @ 002d1060 */ + uVar42 = 0; + } + else { + uVar42 = *(ulong *)(param_4 + 0x50) >> 3; + } + uVar11 = (*(uint **)(param_2 + 0x40))[1]; + uVar12 = **(uint **)(param_2 + 0x40); + bVar1 = (int)uVar11 <= *(int *)(param_4 + 0xc); + iVar44 = uVar12 * 8; + /* try { // try from 002d0560 to 003d0563 has its CatchHandler @ 002d0794 */ + if ((pdVar39 != (double *)0x0) && (iVar44 = uVar12 * 0x28, bVar1)) { + iVar44 = uVar12 * 8; + } + if ((ulong)(long)iVar44 < 0x409) { + pdVar17 = adStack_408; + bVar16 = false; + } + else { + pdVar17 = operator_new__((long)iVar44); + /* try { // try from 002d058c to 003d058f has its CatchHandler @ 002d0724 */ + bVar16 = pdVar17 != adStack_408; + } + if (pdVar39 == (double *)0x0) { +LAB_002d0610: + if (0 < (int)uVar11) { + uVar35 = (uint)((ulong)pdVar17 >> 3) & 1; + if (uVar12 < uVar35) { + uVar35 = uVar12; + } + uVar41 = uVar12; + if (9 < uVar12) { + uVar41 = uVar35; + } + lVar48 = NEON_shl(uVar36,2); + /* try { // try from 002d065c to 003d065f has its CatchHandler @ 002cf2b0 */ + /* catch() { ... } // from try @ 002d038c with catch @ 002d0660 */ + uVar35 = ((uVar12 - uVar41) - 8 >> 3) + 1; + lVar52 = NEON_shl(uVar36 * 3,1); + /* catch() { ... } // from try @ 002cf41c with catch @ 002d0688 + catch() { ... } // from try @ 002d05e0 with catch @ 002d0688 */ + iVar44 = uVar35 * 8; + /* catch() { ... } // from try @ 002cf6f0 with catch @ 002d06b0 */ + lVar29 = 0; + puVar24 = puVar23 + uVar36; + /* catch() { ... } // from try @ 002d023c with catch @ 002d06d8 */ + uVar40 = uVar11 - 4; + /* catch() { ... } // from try @ 002cf578 with catch @ 002d0700 */ + /* catch() { ... } // from try @ 002cf37c with catch @ 002d0714 */ + uVar33 = 0; + /* catch() { ... } // from try @ 002cfb3c with catch @ 002d0724 + catch() { ... } // from try @ 002cfbb4 with catch @ 002d0724 + catch() { ... } // from try @ 002d058c with catch @ 002d0724 */ + puVar31 = puVar23; + pdVar39 = pdVar37; + do { + if (0 < (int)uVar12) { + uVar34 = uVar41; + if (uVar41 != 0) { + *pdVar17 = (double)*puVar31; + /* catch() { ... } // from try @ 002cfa6c with catch @ 002d0784 + catch() { ... } // from try @ 002cfc78 with catch @ 002d0784 + catch() { ... } // from try @ 002d05fc with catch @ 002d0784 */ + /* catch() { ... } // from try @ 002d005c with catch @ 002d078c + catch() { ... } // from try @ 002d00d4 with catch @ 002d078c + catch() { ... } // from try @ 002d03f0 with catch @ 002d078c */ + /* catch() { ... } // from try @ 002cf994 with catch @ 002d0794 + catch() { ... } // from try @ 002d0560 with catch @ 002d0794 */ + /* catch() { ... } // from try @ 002cfc68 with catch @ 002d07b8 */ + /* catch() { ... } // from try @ 002cfc0c with catch @ 002d07d0 + catch() { ... } // from try @ 002cfc70 with catch @ 002d07d0 */ + if ((((uVar41 != 1) && (pdVar17[1] = (double)*puVar24, uVar41 != 2)) && + (pdVar17[2] = (double)*(ushort *)((long)puVar31 + lVar48), uVar41 != 3)) && + (((pdVar17[3] = (double)*(ushort *)((long)puVar24 + lVar48), uVar41 != 4 && + (pdVar17[4] = (double)puVar31[uVar36 * 4], uVar41 != 5)) && + ((pdVar17[5] = (double)puVar24[uVar36 * 4], uVar41 != 6 && + (pdVar17[6] = (double)puVar31[uVar36 * 6], uVar41 != 7)))))) { + /* catch() { ... } // from try @ 002cf34c with catch @ 002d07d8 + catch() { ... } // from try @ 002cf384 with catch @ 002d07d8 + catch() { ... } // from try @ 002cf508 with catch @ 002d07d8 + catch() { ... } // from try @ 002cf580 with catch @ 002d07d8 + catch() { ... } // from try @ 002cf600 with catch @ 002d07d8 + catch() { ... } // from try @ 002cf700 with catch @ 002d07d8 + catch() { ... } // from try @ 002cfccc with catch @ 002d07d8 + catch() { ... } // from try @ 002cfd00 with catch @ 002d07d8 + catch() { ... } // from try @ 002cfe14 with catch @ 002d07d8 + catch() { ... } // from try @ 002cff78 with catch @ 002d07d8 + catch() { ... } // from try @ 002d00dc with catch @ 002d07d8 + catch() { ... } // from try @ 002d014c with catch @ 002d07d8 + catch() { ... } // from try @ 002d024c with catch @ 002d07d8 + catch() { ... } // from try @ 002d039c with catch @ 002d07d8 + catch() { ... } // from try @ 002d040c with catch @ 002d07d8 */ + /* catch() { ... } // from try @ 002cf680 with catch @ 002d07e0 + catch() { ... } // from try @ 002cf6f8 with catch @ 002d07e0 + catch() { ... } // from try @ 002d04cc with catch @ 002d07e0 */ + pdVar17[7] = (double)puVar24[uVar36 * 6]; + if (uVar41 == 8) { + uVar34 = 8; + } + else { + /* catch() { ... } // from try @ 002d01cc with catch @ 002d07e8 + catch() { ... } // from try @ 002d0244 with catch @ 002d07e8 + catch() { ... } // from try @ 002d04f0 with catch @ 002d07e8 */ + /* catch() { ... } // from try @ 002d031c with catch @ 002d07f0 + catch() { ... } // from try @ 002d0394 with catch @ 002d07f0 + catch() { ... } // from try @ 002d0514 with catch @ 002d07f0 */ + /* catch() { ... } // from try @ 002cfbac with catch @ 002d07f8 */ + pdVar17[8] = (double)puVar31[uVar36 * 8]; + uVar34 = 9; + } + } + if (uVar12 == uVar41) goto LAB_002d09ec; + } + /* catch() { ... } // from try @ 002cf4b8 with catch @ 002d0808 + catch() { ... } // from try @ 002d0604 with catch @ 002d0808 */ + if (6 < (uVar12 - 1) - uVar41) { + uVar28 = 0; + puVar21 = puVar23 + lVar29 + uVar41 * uVar36 + uVar36; + pauVar32 = (undefined1 (*) [16])(pdVar17 + uVar41); + do { + /* catch() { ... } // from try @ 002cfe04 with catch @ 002d082c */ + uVar28 = uVar28 + 1; + puVar26 = puVar21 + -uVar36; + uVar13 = *puVar21; + /* catch() { ... } // from try @ 002cff68 with catch @ 002d0854 */ + puVar5 = puVar21 + uVar36; + puVar6 = puVar21 + uVar36 * 2; + /* catch() { ... } // from try @ 002cfd94 with catch @ 002d087c + catch() { ... } // from try @ 002cfe0c with catch @ 002d087c + catch() { ... } // from try @ 002d0130 with catch @ 002d087c */ + puVar7 = (ushort *)((long)puVar21 + lVar52); + puVar8 = puVar21 + uVar36 * 4; + /* catch() { ... } // from try @ 002cfef8 with catch @ 002d0884 + catch() { ... } // from try @ 002cff70 with catch @ 002d0884 + catch() { ... } // from try @ 002d0140 with catch @ 002d0884 */ + puVar9 = puVar21 + uVar36 * 5; + puVar10 = puVar21 + uVar36 * 6; + /* catch() { ... } // from try @ 002d08c8 with catch @ 002d08a0 + catch() { ... } // from try @ 002d09d8 with catch @ 002d08a0 + catch() { ... } // from try @ 002d0a80 with catch @ 002d08a0 */ + puVar21 = puVar21 + uVar36 * 8; + uVar53 = CONCAT26(0,CONCAT24(uVar13,(uint)*puVar26)); + auVar14._8_2_ = *puVar5; + auVar14._0_8_ = uVar53; + auVar14._10_2_ = 0; + auVar14._12_2_ = *puVar6; + uVar42 = CONCAT26(0,CONCAT24(*puVar8,(uint)*puVar7)); + auVar15._8_2_ = *puVar9; + auVar15._0_8_ = uVar42; + auVar15._10_2_ = 0; + auVar15._12_2_ = *puVar10; + auVar56._0_8_ = uVar53 & 0xffffffff; + auVar56._8_2_ = uVar13; + auVar56._10_6_ = 0; + /* try { // try from 002d08c8 to 003d08cb has its CatchHandler @ 002d08a0 */ + auVar54._0_8_ = (ulong)auVar14._8_6_ & 0xffffffff; + auVar54._8_6_ = auVar14._8_6_ >> 0x20; + auVar54._14_2_ = 0; + auVar55._0_8_ = uVar42 & 0xffffffff; + auVar55._8_2_ = *puVar8; + auVar55._10_6_ = 0; + auVar46._0_8_ = (ulong)auVar15._8_6_ & 0xffffffff; + auVar46._8_6_ = auVar15._8_6_ >> 0x20; + auVar46._14_2_ = 0; + auVar56 = NEON_scvtf(auVar56,8); + *pauVar32 = auVar56; + auVar54 = NEON_scvtf(auVar54,8); + auVar55 = NEON_scvtf(auVar55,8); + auVar46 = NEON_scvtf(auVar46,8); + *(double *)((long)pauVar32[1] + 8) = auVar54._8_8_; + *(double *)pauVar32[1] = auVar54._0_8_; + *(double *)((long)pauVar32[2] + 8) = auVar55._8_8_; + *(double *)pauVar32[2] = auVar55._0_8_; + *(double *)((long)pauVar32[3] + 8) = auVar46._8_8_; + *(double *)pauVar32[3] = auVar46._0_8_; + pauVar32 = pauVar32 + 4; + } while (uVar28 < uVar35); + uVar34 = uVar34 + iVar44; + if (iVar44 == uVar12 - uVar41) goto LAB_002d09ec; + } + lVar25 = (long)(int)uVar34 * uVar36; + pdVar17[(int)uVar34] = (double)puVar23[lVar25 + lVar29]; + if ((int)(uVar34 + 1) < (int)uVar12) { + lVar25 = lVar25 + uVar36; + pdVar17[(int)(uVar34 + 1)] = (double)puVar23[lVar29 + lVar25]; + if ((int)(uVar34 + 2) < (int)uVar12) { + /* try { // try from 002d0954 to 003d099b has its CatchHandler @ 002d0a84 */ + lVar25 = uVar36 + lVar25; + pdVar17[(int)(uVar34 + 2)] = (double)puVar23[lVar25 + lVar29]; + if ((int)(uVar34 + 3) < (int)uVar12) { + lVar25 = uVar36 + lVar25; + pdVar17[(int)(uVar34 + 3)] = (double)puVar23[lVar25 + lVar29]; + if ((int)(uVar34 + 4) < (int)uVar12) { + lVar25 = uVar36 + lVar25; + pdVar17[(int)(uVar34 + 4)] = (double)puVar23[lVar25 + lVar29]; + if ((int)(uVar34 + 5) < (int)uVar12) { + lVar25 = uVar36 + lVar25; + /* try { // try from 002d09c8 to 003d09cb has its CatchHandler @ 002d0a50 */ + pdVar17[(int)(uVar34 + 5)] = (double)puVar23[lVar25 + lVar29]; + /* try { // try from 002d09d0 to 003d09d3 has its CatchHandler @ 002d0a84 */ + if ((int)(uVar34 + 6) < (int)uVar12) { + /* try { // try from 002d09d8 to 003d09db has its CatchHandler @ 002d08a0 */ + pdVar17[(int)(uVar34 + 6)] = (double)puVar23[uVar36 + lVar25 + lVar29]; + } + } + } + } + } + } + } +LAB_002d09ec: + uVar34 = uVar33; + if ((int)uVar33 < (int)(uVar11 - 3)) { + pdVar30 = pdVar39; + puVar21 = puVar31; + do { + dVar47 = 0.0; + dVar20 = dVar47; + dVar49 = dVar47; + dVar50 = dVar47; + if (0 < (int)uVar12) { + dVar20 = 0.0; + lVar25 = 0; + dVar49 = 0.0; + /* try { // try from 002d0a34 to 003d0a37 has its CatchHandler @ 002d0a84 */ + dVar50 = 0.0; + puVar26 = puVar21; + do { + uVar13 = *puVar26; + puVar5 = puVar26 + 1; + puVar6 = puVar26 + 2; + puVar7 = puVar26 + 3; + puVar26 = puVar26 + uVar36; + /* catch() { ... } // from try @ 002d09c8 with catch @ 002d0a50 */ + dVar45 = pdVar17[lVar25]; + lVar25 = lVar25 + 1; + dVar50 = dVar50 + dVar45 * (double)uVar13; + dVar49 = dVar49 + dVar45 * (double)*puVar5; + dVar20 = dVar20 + dVar45 * (double)*puVar6; + dVar47 = dVar47 + dVar45 * (double)*puVar7; + } while ((int)lVar25 < (int)uVar12); + } + /* try { // try from 002d0a80 to 003d0a83 has its CatchHandler @ 002d08a0 */ + /* catch() { ... } // from try @ 002d0954 with catch @ 002d0a84 + catch() { ... } // from try @ 002d09d0 with catch @ 002d0a84 + catch() { ... } // from try @ 002d0a34 with catch @ 002d0a84 */ + /* catch() { ... } // from try @ 002d0ab8 with catch @ 002d0a8c + catch() { ... } // from try @ 002d0bcc with catch @ 002d0a8c + catch() { ... } // from try @ 002d0c78 with catch @ 002d0a8c */ + pdVar18 = pdVar30 + 4; + puVar21 = puVar21 + 4; + pdVar30[1] = dVar49 * param_1; + *pdVar30 = dVar50 * param_1; + pdVar30[3] = dVar47 * param_1; + pdVar30[2] = dVar20 * param_1; + pdVar30 = pdVar18; + } while (pdVar18 != pdVar37 + lVar29 + 4 + (ulong)(uVar40 >> 2) * 4); + /* try { // try from 002d0ab8 to 003d0abb has its CatchHandler @ 002d0a8c */ + uVar34 = (int)lVar29 + 4 + (uVar40 >> 2) * 4; + } + if ((int)uVar34 < (int)uVar11) { + lVar25 = (long)(int)uVar34; + puVar21 = puVar23 + lVar25; + pdVar30 = pdVar37 + lVar25; + do { + dVar20 = 0.0; + if (0 < (int)uVar12) { + lVar27 = 0; + puVar26 = puVar21; + do { + uVar13 = *puVar26; + puVar26 = puVar26 + uVar36; + pdVar18 = pdVar17 + lVar27; + lVar27 = lVar27 + 1; + dVar20 = dVar20 + (double)uVar13 * *pdVar18; + } while ((int)lVar27 < (int)uVar12); + } + puVar21 = puVar21 + 1; + *pdVar30 = dVar20 * param_1; + pdVar30 = pdVar30 + 1; + } while (puVar21 != puVar23 + lVar25 + 1 + (ulong)((uVar11 - 1) - uVar34)); + } + uVar33 = uVar33 + 1; + /* try { // try from 002d0b44 to 003d0b8f has its CatchHandler @ 002d0c7c */ + lVar29 = lVar29 + 1; + pdVar37 = pdVar37 + uVar43; + uVar40 = uVar40 - 1; + puVar31 = puVar31 + 1; + puVar24 = puVar24 + 1; + pdVar39 = pdVar39 + uVar43 + 1; + } while (uVar33 != uVar11); + } + } + else { + if (bVar1) { + pdVar30 = (double *)0x0; + } + else { + pdVar30 = pdVar17 + (int)uVar12; + if (0 < (int)uVar12) { + pdVar18 = pdVar30 + 3; + do { + dVar20 = *pdVar39; + pdVar38 = pdVar18 + 4; + /* try { // try from 002d05e0 to 003d05e3 has its CatchHandler @ 002d0688 */ + pdVar39 = pdVar39 + uVar42; + *pdVar18 = dVar20; + pdVar18[-1] = dVar20; + pdVar18[-2] = dVar20; + pdVar18[-3] = dVar20; + pdVar18 = pdVar38; + } while (pdVar38 != pdVar30 + (ulong)(uVar12 - 1) * 4 + 7); + } + /* try { // try from 002d05fc to 003d05ff has its CatchHandler @ 002d0784 */ + /* try { // try from 002d0604 to 003d0607 has its CatchHandler @ 002d0808 */ + if (uVar42 != 0) { + uVar42 = 4; + } + /* catch() { ... } // from try @ 002d00cc with catch @ 002d060c */ + pdVar39 = pdVar30; + if (pdVar30 == (double *)0x0) goto LAB_002d0610; + } + if (0 < (int)uVar11) { + lVar29 = 0; + /* try { // try from 002d0bbc to 003d0bbf has its CatchHandler @ 002d0c48 */ + /* try { // try from 002d0bc4 to 003d0bc7 has its CatchHandler @ 002d0c7c */ + uVar41 = uVar11 - 4; + /* try { // try from 002d0bcc to 003d0bcf has its CatchHandler @ 002d0a8c */ + lVar48 = NEON_shl(uVar43,3); + uVar35 = 0; + puVar31 = puVar23; + pdVar38 = pdVar37; + pdVar18 = pdVar39; + if (pdVar30 == (double *)0x0) goto LAB_002d0e18; + do { + if (0 < (int)uVar12) { + lVar52 = 0; + puVar24 = puVar31; + pdVar22 = pdVar30; + do { + uVar13 = *puVar24; + puVar24 = puVar24 + uVar36; + dVar20 = *pdVar22; + /* try { // try from 002d0c2c to 003d0c2f has its CatchHandler @ 002d0c7c */ + pdVar22 = pdVar22 + uVar42; + pdVar17[lVar52] = (double)uVar13 - dVar20; + lVar52 = lVar52 + 1; + } while ((int)lVar52 < (int)uVar12); + } + while( true ) { + uVar33 = uVar35; + if ((int)uVar35 < (int)(uVar11 - 3)) { + lVar52 = lVar29 << 3; + pdVar22 = pdVar37; + puVar24 = puVar31; + do { + pdVar19 = pdVar30; + /* try { // try from 002d0c78 to 003d0c7b has its CatchHandler @ 002d0a8c */ + if (pdVar30 == (double *)0x0) { + pdVar19 = (double *)((long)pdVar39 + lVar52); + } + /* catch() { ... } // from try @ 002d0b44 with catch @ 002d0c7c + catch() { ... } // from try @ 002d0bc4 with catch @ 002d0c7c + catch() { ... } // from try @ 002d0c2c with catch @ 002d0c7c */ + dVar47 = 0.0; + /* catch() { ... } // from try @ 002d0cc0 with catch @ 002d0c84 + catch() { ... } // from try @ 002d0ec4 with catch @ 002d0c84 + catch() { ... } // from try @ 002d0fd8 with catch @ 002d0c84 */ + dVar20 = dVar47; + dVar49 = dVar47; + dVar50 = dVar47; + if (0 < (int)uVar12) { + dVar20 = 0.0; + lVar25 = 0; + dVar49 = 0.0; + dVar50 = 0.0; + puVar21 = puVar24; + do { + uVar13 = *puVar21; + puVar26 = puVar21 + 1; + puVar5 = puVar21 + 2; + puVar6 = puVar21 + 3; + puVar21 = puVar21 + uVar36; + pdVar2 = pdVar19 + 3; + /* try { // try from 002d0cc0 to 003d0cc3 has its CatchHandler @ 002d0c84 */ + dVar51 = *pdVar19; + pdVar3 = pdVar19 + 1; + pdVar4 = pdVar19 + 2; + pdVar19 = pdVar19 + uVar42; + dVar45 = pdVar17[lVar25]; + lVar25 = lVar25 + 1; + dVar50 = dVar50 + dVar45 * ((double)uVar13 - dVar51); + dVar49 = dVar49 + dVar45 * ((double)*puVar26 - *pdVar3); + dVar20 = dVar20 + dVar45 * ((double)*puVar5 - *pdVar4); + dVar47 = dVar47 + dVar45 * ((double)*puVar6 - *pdVar2); + } while ((int)lVar25 < (int)uVar12); + } + lVar52 = lVar52 + 0x20; + puVar24 = puVar24 + 4; + pdVar22[1] = dVar49 * param_1; + *pdVar22 = dVar50 * param_1; + pdVar22[3] = dVar47 * param_1; + pdVar22[2] = dVar20 * param_1; + pdVar22 = pdVar22 + 4; + } while (lVar52 != (lVar29 + 4 + (ulong)(uVar41 >> 2) * 4) * 8); + uVar33 = (int)lVar29 + 4 + (uVar41 >> 2) * 4; + } + if ((int)uVar33 < (int)uVar11) { + lVar25 = (long)(int)uVar33; + lVar52 = lVar25 << 3; + puVar24 = puVar23 + lVar25; + do { + pdVar22 = pdVar30; + if (pdVar30 == (double *)0x0) { + pdVar22 = (double *)((long)pdVar39 + lVar52); + } + dVar20 = 0.0; + if (0 < (int)uVar12) { + lVar27 = 0; + puVar21 = puVar24; + do { + uVar13 = *puVar21; + /* try { // try from 002d0d9c to 003d0e07 has its CatchHandler @ 002d1034 */ + puVar21 = puVar21 + uVar36; + dVar49 = *pdVar22; + pdVar22 = pdVar22 + uVar42; + pdVar19 = pdVar17 + lVar27; + lVar27 = lVar27 + 1; + dVar20 = dVar20 + ((double)uVar13 - dVar49) * *pdVar19; + } while ((int)lVar27 < (int)uVar12); + } + puVar24 = puVar24 + 1; + *(double *)((long)pdVar38 + lVar52) = dVar20 * param_1; + lVar52 = lVar52 + 8; + } while (lVar52 != (lVar25 + 1 + (ulong)((uVar11 - 1) - uVar33)) * 8); + } + uVar35 = uVar35 + 1; + lVar29 = lVar29 + 1; + uVar41 = uVar41 - 1; + puVar31 = puVar31 + 1; + pdVar38 = (double *)((long)pdVar38 + lVar48); + pdVar18 = pdVar18 + 1; + pdVar37 = (double *)((long)pdVar37 + lVar48 + 8); + if (uVar35 == uVar11) goto LAB_002d0b64; + if (pdVar30 != (double *)0x0) break; +LAB_002d0e18: + pdVar22 = pdVar30; + puVar24 = puVar31; + pdVar19 = pdVar18; + if (0 < (int)uVar12) { + do { + /* try { // try from 002d0e34 to 003d0e37 has its CatchHandler @ 002d0ff0 */ + /* try { // try from 002d0e3c to 003d0e3f has its CatchHandler @ 002d1034 */ + pdVar17[(long)pdVar22] = (double)*puVar24 - *pdVar19; + pdVar22 = (double *)((long)pdVar22 + 1); + puVar24 = puVar24 + uVar36; + pdVar19 = pdVar19 + uVar42; + } while ((int)pdVar22 < (int)uVar12); + } + } + } while( true ); + } + } +LAB_002d0b64: + if (bVar16) { + operator_delete__(pdVar17); + } + return; +} + + +================================================================== + +### FUNC 002d0edc (2516 bytes) name=FUN_002d0edc + +void FUN_002d0edc(double param_1,long param_2,long param_3,long param_4) + +{ + bool bVar1; + float *pfVar2; + float *pfVar3; + short *psVar4; + short *psVar5; + short *psVar6; + short *psVar7; + short *psVar8; + short *psVar9; + uint uVar10; + uint uVar11; + short sVar12; + float *pfVar13; + bool bVar14; + float *pfVar15; + float *pfVar16; + float *pfVar17; + long lVar18; + short *psVar19; + short *psVar20; + float *pfVar21; + long lVar22; + short *psVar23; + long lVar24; + long lVar25; + float *pfVar26; + short *psVar27; + uint uVar28; + uint uVar29; + uint uVar30; + uint uVar31; + ulong uVar32; + undefined8 *puVar33; + short *psVar34; + float *pfVar35; + undefined8 *puVar36; + uint uVar37; + uint uVar38; + undefined8 *puVar39; + ulong uVar40; + ulong uVar41; + int iVar42; + double dVar43; + undefined1 auVar44 [16]; + float fVar45; + double dVar46; + long lVar47; + long lVar48; + double dVar49; + double dVar50; + double dVar51; + long lVar52; + undefined1 auVar53 [16]; + float afStack_408 [258]; + + psVar34 = *(short **)(param_2 + 0x10); + uVar32 = *(ulong *)(param_2 + 0x50) >> 1; + puVar33 = *(undefined8 **)(param_3 + 0x10); + /* try { // try from 002d0f2c to 003d0f2f has its CatchHandler @ 002d1034 */ + uVar40 = *(ulong *)(param_3 + 0x50) >> 2; + pfVar35 = *(float **)(param_4 + 0x10); + if (*(int *)(param_4 + 8) < 2) { + uVar41 = 0; + } + else { + uVar41 = *(ulong *)(param_4 + 0x50) >> 2; + } + /* try { // try from 002d0f48 to 003d0f4b has its CatchHandler @ 002d0fc0 */ + uVar10 = (*(uint **)(param_2 + 0x40))[1]; + uVar11 = **(uint **)(param_2 + 0x40); + bVar1 = (int)uVar10 <= *(int *)(param_4 + 0xc); + iVar42 = uVar11 * 4; + if ((pfVar35 != (float *)0x0) && (iVar42 = uVar11 * 0x14, bVar1)) { + iVar42 = uVar11 * 4; + } + /* try { // try from 002d0f94 to 003d0f97 has its CatchHandler @ 002d0fdc */ + /* try { // try from 002d0f9c to 003d0f9f has its CatchHandler @ 002d0fc0 */ + if ((ulong)(long)iVar42 < 0x409) { + pfVar15 = afStack_408; + bVar14 = false; + } + else { + pfVar15 = operator_new__((long)iVar42); + bVar14 = pfVar15 != afStack_408; + } + /* catch() { ... } // from try @ 002d0f48 with catch @ 002d0fc0 + catch() { ... } // from try @ 002d0f9c with catch @ 002d0fc0 */ + if (pfVar35 == (float *)0x0) { +LAB_002d102c: + if (0 < (int)uVar10) { + /* catch() { ... } // from try @ 002d0d9c with catch @ 002d1034 + catch() { ... } // from try @ 002d0e3c with catch @ 002d1034 + catch() { ... } // from try @ 002d0f2c with catch @ 002d1034 */ + /* catch() { ... } // from try @ 002d0eb4 with catch @ 002d103c */ + lVar18 = uVar40 * 4; + uVar30 = -((uint)((ulong)pfVar15 >> 2) & 3) & 3; + lVar48 = NEON_shl(uVar32,2); + /* catch() { ... } // from try @ 002d0e84 with catch @ 002d1060 + catch() { ... } // from try @ 002d0ebc with catch @ 002d1060 */ + if (uVar11 < uVar30) { + uVar30 = uVar11; + } + /* catch() { ... } // from try @ 002d10a0 with catch @ 002d1068 + catch() { ... } // from try @ 002d1238 with catch @ 002d1068 + catch() { ... } // from try @ 002d1364 with catch @ 002d1068 */ + uVar31 = uVar11; + if (9 < uVar11) { + uVar31 = uVar30; + } + lVar52 = NEON_shl(uVar32 * 3,1); + /* try { // try from 002d10a0 to 003d10a3 has its CatchHandler @ 002d1068 */ + uVar30 = ((uVar11 - uVar31) - 8 >> 3) + 1; + lVar47 = NEON_shl(uVar32,4); + iVar42 = uVar30 * 8; + lVar25 = 0; + uVar37 = uVar10 - 4; + psVar19 = psVar34 + uVar32; + /* try { // try from 002d1130 to 003d117b has its CatchHandler @ 002d1390 */ + uVar29 = 0; + psVar27 = psVar34; + puVar36 = puVar33; + do { + if (0 < (int)uVar11) { + uVar28 = uVar31; + if (uVar31 != 0) { + *pfVar15 = (float)(int)*psVar27; + /* try { // try from 002d11a8 to 003d11ab has its CatchHandler @ 002d1368 */ + /* try { // try from 002d11b0 to 003d11b3 has its CatchHandler @ 002d1390 */ + /* try { // try from 002d11f8 to 003d11fb has its CatchHandler @ 002d13cc */ + if ((((uVar31 != 1) && (pfVar15[1] = (float)(int)*psVar19, uVar31 != 2)) && + (pfVar15[2] = (float)(int)*(short *)((long)psVar27 + lVar48), uVar31 != 3)) && + (((pfVar15[3] = (float)(int)*(short *)((long)psVar19 + lVar48), uVar31 != 4 && + (pfVar15[4] = (float)(int)psVar27[uVar32 * 4], uVar31 != 5)) && + ((pfVar15[5] = (float)(int)psVar19[uVar32 * 4], uVar31 != 6 && + (pfVar15[6] = (float)(int)psVar27[uVar32 * 6], uVar31 != 7)))))) { + pfVar15[7] = (float)(int)psVar19[uVar32 * 6]; + if (uVar31 == 8) { + uVar28 = 8; + } + else { + pfVar15[8] = (float)(int)*(short *)((long)psVar27 + lVar47); + uVar28 = 9; + } + } + /* try { // try from 002d1228 to 003d122b has its CatchHandler @ 002d1398 */ + if (uVar11 == uVar31) goto LAB_002d13e4; + } + /* try { // try from 002d1230 to 003d1233 has its CatchHandler @ 002d13cc */ + if (6 < (uVar11 - 1) - uVar31) { + /* try { // try from 002d1238 to 003d123b has its CatchHandler @ 002d1068 */ + uVar38 = 0; + psVar20 = psVar34 + lVar25 + uVar31 * uVar32 + uVar32; + pfVar35 = pfVar15 + uVar31; + do { + uVar38 = uVar38 + 1; + psVar23 = psVar20 + -uVar32; + sVar12 = *psVar20; + psVar4 = psVar20 + uVar32; + psVar5 = psVar20 + uVar32 * 2; + /* try { // try from 002d129c to 003d129f has its CatchHandler @ 002d1390 */ + psVar6 = (short *)((long)psVar20 + lVar52); + psVar7 = psVar20 + uVar32 * 4; + psVar8 = psVar20 + uVar32 * 5; + /* try { // try from 002d12b8 to 003d12bb has its CatchHandler @ 002d13d4 */ + psVar9 = psVar20 + uVar32 * 6; + psVar20 = (short *)((long)psVar20 + lVar47); + auVar53._0_4_ = (int)*psVar23; + auVar53._4_4_ = (int)sVar12; + auVar53._8_4_ = (int)*psVar4; + auVar53._12_4_ = (int)*psVar5; + auVar44._0_4_ = (int)*psVar6; + auVar44._4_4_ = (int)*psVar7; + auVar44._8_4_ = (int)*psVar8; + auVar44._12_4_ = (int)*psVar9; + auVar53 = NEON_scvtf(auVar53,4); + auVar44 = NEON_scvtf(auVar44,4); + *(long *)(pfVar35 + 2) = auVar53._8_8_; + *(long *)pfVar35 = auVar53._0_8_; + *(long *)(pfVar35 + 6) = auVar44._8_8_; + *(long *)(pfVar35 + 4) = auVar44._0_8_; + pfVar35 = pfVar35 + 8; + } while (uVar38 < uVar30); + uVar28 = uVar28 + iVar42; + /* try { // try from 002d1304 to 003d1307 has its CatchHandler @ 002d1328 */ + if (iVar42 == uVar11 - uVar31) goto LAB_002d13e4; + } + /* try { // try from 002d130c to 003d130f has its CatchHandler @ 002d13d4 */ + lVar22 = (long)(int)uVar28 * uVar32; + /* catch() { ... } // from try @ 002d1304 with catch @ 002d1328 */ + pfVar15[(int)uVar28] = (float)(int)psVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 1) < (int)uVar11) { + lVar22 = lVar22 + uVar32; + pfVar15[(int)(uVar28 + 1)] = (float)(int)psVar34[lVar25 + lVar22]; + if ((int)(uVar28 + 2) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + /* try { // try from 002d1364 to 003d1367 has its CatchHandler @ 002d1068 */ + /* catch() { ... } // from try @ 002d11a8 with catch @ 002d1368 */ + pfVar15[(int)(uVar28 + 2)] = (float)(int)psVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 3) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + pfVar15[(int)(uVar28 + 3)] = (float)(int)psVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 4) < (int)uVar11) { + /* catch() { ... } // from try @ 002d1130 with catch @ 002d1390 + catch() { ... } // from try @ 002d11b0 with catch @ 002d1390 + catch() { ... } // from try @ 002d129c with catch @ 002d1390 */ + lVar22 = uVar32 + lVar22; + /* catch() { ... } // from try @ 002d1228 with catch @ 002d1398 */ + pfVar15[(int)(uVar28 + 4)] = (float)(int)psVar34[lVar22 + lVar25]; + if ((int)(uVar28 + 5) < (int)uVar11) { + lVar22 = uVar32 + lVar22; + pfVar15[(int)(uVar28 + 5)] = (float)(int)psVar34[lVar22 + lVar25]; + /* catch() { ... } // from try @ 002d11f8 with catch @ 002d13cc + catch() { ... } // from try @ 002d1230 with catch @ 002d13cc */ + if ((int)(uVar28 + 6) < (int)uVar11) { + /* catch() { ... } // from try @ 002d12b8 with catch @ 002d13d4 + catch() { ... } // from try @ 002d130c with catch @ 002d13d4 */ + /* catch() { ... } // from try @ 002d1414 with catch @ 002d13dc + catch() { ... } // from try @ 002d1544 with catch @ 002d13dc + catch() { ... } // from try @ 002d1664 with catch @ 002d13dc */ + pfVar15[(int)(uVar28 + 6)] = (float)(int)psVar34[uVar32 + lVar22 + lVar25]; + } + } + } + } + } + } + } +LAB_002d13e4: + uVar28 = uVar29; + if ((int)uVar29 < (int)(uVar10 - 3)) { + psVar20 = psVar27; + puVar39 = puVar36; + do { + /* try { // try from 002d1414 to 003d1417 has its CatchHandler @ 002d13dc */ + dVar46 = 0.0; + dVar49 = dVar46; + dVar50 = dVar46; + dVar51 = dVar46; + if (0 < (int)uVar11) { + dVar49 = 0.0; + lVar22 = 0; + dVar50 = 0.0; + dVar51 = 0.0; + psVar23 = psVar20; + do { + sVar12 = *psVar23; + psVar4 = psVar23 + 1; + psVar5 = psVar23 + 2; + psVar6 = psVar23 + 3; + psVar23 = psVar23 + uVar32; + pfVar35 = pfVar15 + lVar22; + lVar22 = lVar22 + 1; + dVar43 = (double)*pfVar35; + dVar51 = dVar51 + dVar43 * (double)(int)sVar12; + dVar50 = dVar50 + dVar43 * (double)(int)*psVar4; + dVar49 = dVar49 + dVar43 * (double)(int)*psVar5; + dVar46 = dVar46 + dVar43 * (double)(int)*psVar6; + } while ((int)lVar22 < (int)uVar11); + } + psVar20 = psVar20 + 4; + /* try { // try from 002d14a4 to 003d14ef has its CatchHandler @ 002d1668 */ + puVar39[1] = CONCAT44((float)(dVar46 * param_1),(float)(dVar49 * param_1)); + *puVar39 = CONCAT44((float)(dVar50 * param_1),(float)(dVar51 * param_1)); + puVar39 = puVar39 + 2; + } while (psVar20 != psVar34 + lVar25 + 4 + (ulong)(uVar37 >> 2) * 4); + uVar28 = (int)lVar25 + 4 + (uVar37 >> 2) * 4; + } + if ((int)uVar28 < (int)uVar10) { + lVar22 = (long)(int)uVar28; + psVar20 = psVar34 + lVar22; + pfVar35 = (float *)((long)puVar33 + lVar22 * 4); + do { + dVar49 = 0.0; + if (0 < (int)uVar11) { + lVar24 = 0; + psVar23 = psVar20; + do { + sVar12 = *psVar23; + psVar23 = psVar23 + uVar32; + pfVar26 = pfVar15 + lVar24; + lVar24 = lVar24 + 1; + dVar49 = dVar49 + (double)(int)sVar12 * (double)*pfVar26; + } while ((int)lVar24 < (int)uVar11); + } + /* try { // try from 002d151c to 003d151f has its CatchHandler @ 002d1634 */ + psVar20 = psVar20 + 1; + /* try { // try from 002d1524 to 003d1527 has its CatchHandler @ 002d1668 */ + *pfVar35 = (float)(dVar49 * param_1); + pfVar35 = pfVar35 + 1; + } while (psVar20 != psVar34 + lVar22 + 1 + (ulong)((uVar10 - 1) - uVar28)); + } + uVar29 = uVar29 + 1; + lVar25 = lVar25 + 1; + /* try { // try from 002d1544 to 003d1547 has its CatchHandler @ 002d13dc */ + uVar37 = uVar37 - 1; + psVar27 = psVar27 + 1; + psVar19 = psVar19 + 1; + puVar33 = (undefined8 *)((long)puVar33 + lVar18); + puVar36 = (undefined8 *)((long)puVar36 + lVar18 + 4); + } while (uVar29 != uVar10); + } + } + else { + if (bVar1) { + /* try { // try from 002d15a0 to 003d15a3 has its CatchHandler @ 002d16a4 */ + pfVar26 = (float *)0x0; + } + else { + pfVar26 = pfVar15 + (int)uVar11; + /* try { // try from 002d0fd8 to 003d0fdb has its CatchHandler @ 002d0c84 */ + if (0 < (int)uVar11) { + /* catch() { ... } // from try @ 002d0f94 with catch @ 002d0fdc */ + /* catch() { ... } // from try @ 002d0e34 with catch @ 002d0ff0 */ + pfVar16 = pfVar26 + 3; + do { + fVar45 = *pfVar35; + pfVar17 = pfVar16 + 4; + pfVar35 = pfVar35 + uVar41; + *pfVar16 = fVar45; + pfVar16[-1] = fVar45; + pfVar16[-2] = fVar45; + pfVar16[-3] = fVar45; + pfVar16 = pfVar17; + } while (pfVar17 != pfVar26 + (ulong)(uVar11 - 1) * 4 + 7); + } + if (uVar41 != 0) { + uVar41 = 4; + } + pfVar35 = pfVar26; + if (pfVar26 == (float *)0x0) goto LAB_002d102c; + } + if (0 < (int)uVar10) { + lVar18 = 0; + uVar31 = uVar10 - 4; + lVar48 = NEON_shl(uVar40,2); + uVar30 = 0; + /* try { // try from 002d15ec to 003d15ef has its CatchHandler @ 002d1670 */ + /* try { // try from 002d15f4 to 003d15f7 has its CatchHandler @ 002d16a4 */ + psVar27 = psVar34; + pfVar16 = pfVar35; + if (pfVar26 == (float *)0x0) goto LAB_002d180c; + do { + if (0 < (int)uVar11) { + lVar25 = 0; + psVar19 = psVar27; + pfVar17 = pfVar26; + do { + sVar12 = *psVar19; + psVar19 = psVar19 + uVar32; + fVar45 = *pfVar17; + /* try { // try from 002d1618 to 003d161b has its CatchHandler @ 002d1668 */ + pfVar17 = pfVar17 + uVar41; + pfVar15[lVar25] = (float)(int)sVar12 - fVar45; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar11); + } + while( true ) { + uVar29 = uVar30; + if ((int)uVar30 < (int)(uVar10 - 3)) { + lVar25 = lVar18 << 2; + psVar19 = psVar27; + do { + pfVar17 = pfVar26; + if (pfVar26 == (float *)0x0) { + pfVar17 = (float *)((long)pfVar35 + lVar25); + } + /* try { // try from 002d1664 to 003d1667 has its CatchHandler @ 002d13dc */ + /* catch() { ... } // from try @ 002d14a4 with catch @ 002d1668 + catch() { ... } // from try @ 002d1524 with catch @ 002d1668 + catch() { ... } // from try @ 002d1618 with catch @ 002d1668 */ + dVar46 = 0.0; + /* catch() { ... } // from try @ 002d15ec with catch @ 002d1670 */ + dVar49 = dVar46; + dVar50 = dVar46; + dVar51 = dVar46; + if (0 < (int)uVar11) { + dVar49 = 0.0; + lVar47 = 0; + dVar50 = 0.0; + dVar51 = 0.0; + psVar20 = psVar19; + do { + sVar12 = *psVar20; + psVar23 = psVar20 + 1; + psVar4 = psVar20 + 2; + psVar5 = psVar20 + 3; + psVar20 = psVar20 + uVar32; + /* catch() { ... } // from try @ 002d15a0 with catch @ 002d16a4 + catch() { ... } // from try @ 002d15f4 with catch @ 002d16a4 */ + pfVar21 = pfVar17 + 3; + /* catch() { ... } // from try @ 002d16e0 with catch @ 002d16ac + catch() { ... } // from try @ 002d180c with catch @ 002d16ac + catch() { ... } // from try @ 002d1928 with catch @ 002d16ac */ + fVar45 = *pfVar17; + pfVar2 = pfVar17 + 1; + pfVar3 = pfVar17 + 2; + pfVar17 = pfVar17 + uVar41; + pfVar13 = pfVar15 + lVar47; + lVar47 = lVar47 + 1; + dVar43 = (double)*pfVar13; + /* try { // try from 002d16e0 to 003d16e3 has its CatchHandler @ 002d16ac */ + dVar51 = dVar51 + dVar43 * (double)((float)(int)sVar12 - fVar45); + dVar50 = dVar50 + dVar43 * (double)((float)(int)*psVar23 - *pfVar2); + dVar49 = dVar49 + dVar43 * (double)((float)(int)*psVar4 - *pfVar3); + dVar46 = dVar46 + dVar43 * (double)((float)(int)*psVar5 - *pfVar21); + } while ((int)lVar47 < (int)uVar11); + } + puVar36 = (undefined8 *)((long)puVar33 + lVar25); + lVar25 = lVar25 + 0x10; + psVar19 = psVar19 + 4; + puVar36[1] = CONCAT44((float)(dVar46 * param_1),(float)(dVar49 * param_1)); + *puVar36 = CONCAT44((float)(dVar50 * param_1),(float)(dVar51 * param_1)); + } while (lVar25 != (lVar18 + 4 + (ulong)(uVar31 >> 2) * 4) * 4); + uVar29 = (int)lVar18 + 4 + (uVar31 >> 2) * 4; + } + if ((int)uVar29 < (int)uVar10) { + lVar47 = (long)(int)uVar29; + lVar25 = lVar47 << 2; + psVar19 = psVar34 + lVar47; + do { + /* try { // try from 002d1770 to 003d17b7 has its CatchHandler @ 002d192c */ + pfVar17 = pfVar26; + if (pfVar26 == (float *)0x0) { + pfVar17 = (float *)((long)pfVar35 + lVar25); + } + dVar49 = 0.0; + if (0 < (int)uVar11) { + lVar52 = 0; + psVar20 = psVar19; + do { + sVar12 = *psVar20; + psVar20 = psVar20 + uVar32; + fVar45 = *pfVar17; + pfVar17 = pfVar17 + uVar41; + pfVar21 = pfVar15 + lVar52; + lVar52 = lVar52 + 1; + dVar49 = dVar49 + (double)((float)(int)sVar12 - fVar45) * (double)*pfVar21; + } while ((int)lVar52 < (int)uVar11); + } + psVar19 = psVar19 + 1; + *(float *)((long)puVar33 + lVar25) = (float)(dVar49 * param_1); + lVar25 = lVar25 + 4; + } while (lVar25 != (lVar47 + 1 + (ulong)((uVar10 - 1) - uVar29)) * 4); + } + /* try { // try from 002d17e4 to 003d17e7 has its CatchHandler @ 002d18f8 */ + uVar30 = uVar30 + 1; + /* try { // try from 002d17ec to 003d17ef has its CatchHandler @ 002d192c */ + lVar18 = lVar18 + 1; + uVar31 = uVar31 - 1; + psVar27 = psVar27 + 1; + pfVar16 = pfVar16 + 1; + puVar33 = (undefined8 *)((long)puVar33 + lVar48); + if (uVar30 == uVar10) goto LAB_002d1560; + if (pfVar26 != (float *)0x0) break; +LAB_002d180c: + /* try { // try from 002d180c to 003d180f has its CatchHandler @ 002d16ac */ + pfVar17 = pfVar26; + psVar19 = psVar27; + pfVar21 = pfVar16; + if (0 < (int)uVar11) { + do { + pfVar15[(long)pfVar17] = (float)(int)*psVar19 - *pfVar21; + pfVar17 = (float *)((long)pfVar17 + 1); + psVar19 = psVar19 + uVar32; + pfVar21 = pfVar21 + uVar41; + } while ((int)pfVar17 < (int)uVar11); + } + } + } while( true ); + } + } +LAB_002d1560: + if (bVar14) { + operator_delete__(pfVar15); + } + return; +} + + +================================================================== + +### FUNC 002d18d0 (3352 bytes) name=FUN_002d18d0 + +void FUN_002d18d0(double param_1,long param_2,long param_3,long param_4) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + uint uVar4; + byte *pbVar5; + double *pdVar6; + uint uVar7; + uint uVar8; + uint uVar9; + int iVar10; + uint uVar11; + int iVar12; + uint uVar13; + byte bVar14; + byte bVar15; + byte bVar16; + byte bVar17; + double dVar18; + long lVar19; + long lVar20; + bool bVar21; + double *pdVar22; + byte *pbVar23; + long lVar24; + double *pdVar25; + long lVar26; + byte *pbVar27; + double *pdVar28; + double *pdVar29; + double *pdVar30; + double *pdVar31; + int iVar32; + long lVar33; + int iVar34; + uint uVar35; + int iVar36; + double *pdVar37; + ulong uVar38; + long lVar39; + ulong uVar40; + double *pdVar41; + ulong uVar42; + double *pdVar43; + double *pdVar44; + double dVar45; + undefined1 auVar46 [16]; + double dVar47; + undefined1 auVar48 [16]; + ulong uVar49; + double dVar50; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + double dVar55; + double dVar56; + double dVar57; + double dVar58; + double dVar59; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + int iVar64; + long lVar65; + undefined1 auVar66 [16]; + double dVar67; + double dVar68; + undefined1 auVar69 [16]; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + undefined1 auVar72 [16]; + undefined1 auVar73 [16]; + undefined1 auVar74 [16]; + undefined1 auVar75 [16]; + uint uVar76; + undefined1 auVar77 [16]; + undefined1 auVar78 [16]; + double *local_470; + double *local_468; + long local_460; + int local_448; + double local_438; + double local_430; + double local_428; + double local_420; + double *local_418; + ulong local_410; + double adStack_408 [129]; + + /* try { // try from 002d18dc to 003d18df has its CatchHandler @ 002d192c */ + /* catch() { ... } // from try @ 002d17e4 with catch @ 002d18f8 */ + local_470 = *(double **)(param_3 + 0x10); + pdVar29 = *(double **)(param_2 + 0x10); + uVar42 = *(ulong *)(param_3 + 0x50) >> 3; + pdVar25 = *(double **)(param_4 + 0x10); + lVar39 = *(long *)(param_2 + 0x50); + /* try { // try from 002d1928 to 003d192b has its CatchHandler @ 002d16ac */ + if (*(int *)(param_4 + 8) < 2) { + uVar49 = 0; + uVar8 = *(uint *)(param_4 + 0xc); + /* try { // try from 002d2488 to 003d248b has its CatchHandler @ 002d251c */ + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + } + else { + /* catch() { ... } // from try @ 002d1770 with catch @ 002d192c + catch() { ... } // from try @ 002d17ec with catch @ 002d192c + catch() { ... } // from try @ 002d18dc with catch @ 002d192c */ + /* catch() { ... } // from try @ 002d18b0 with catch @ 002d1934 */ + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + uVar49 = *(ulong *)(param_4 + 0x50) >> 3; + } + if (pdVar25 == (double *)0x0) { + if (0 < iVar10) { + uVar8 = uVar9 - 4 >> 2; + iVar32 = (uVar8 + 1) * 4; + if ((int)(uVar9 - 3) < 1) { + iVar32 = 0; + } + local_448 = 0; + /* try { // try from 002d24d4 to 003d24d7 has its CatchHandler @ 002d2530 */ + /* try { // try from 002d24dc to 003d24df has its CatchHandler @ 002d251c */ + do { + pbVar27 = (byte *)((long)pdVar29 + 1); + pdVar25 = local_470; + iVar12 = local_448; + do { + dVar45 = 0.0; + if (0 < (int)(uVar9 - 3)) { + pbVar23 = pbVar27; + pdVar22 = pdVar29; + do { + /* catch() { ... } // from try @ 002d2488 with catch @ 002d251c + catch() { ... } // from try @ 002d24dc with catch @ 002d251c */ + pbVar5 = pbVar23 + 4; + /* try { // try from 002d252c to 003d252f has its CatchHandler @ 002d21c8 */ + /* catch() { ... } // from try @ 002d24d4 with catch @ 002d2530 */ + /* catch() { ... } // from try @ 002d22c0 with catch @ 002d2540 + catch() { ... } // from try @ 002d23e8 with catch @ 002d2540 */ + dVar45 = dVar45 + (double)*(byte *)((long)pdVar22 + 1) * (double)*pbVar23 + + (double)pbVar23[-1] * (double)*(byte *)pdVar22 + + (double)pbVar23[1] * (double)*(byte *)((long)pdVar22 + 2) + + (double)pbVar23[2] * (double)*(byte *)((long)pdVar22 + 3); + pbVar23 = pbVar5; + pdVar22 = (double *)((long)pdVar22 + 4); + } while (pbVar5 != pbVar27 + (ulong)uVar8 * 4 + 4); + } + /* try { // try from 002d2578 to 003d257b has its CatchHandler @ 002d21c8 */ + if (iVar32 < (int)uVar9) { + /* catch() { ... } // from try @ 002d23e0 with catch @ 002d257c */ + lVar24 = 0; + do { + lVar33 = lVar24 + iVar32; + lVar65 = lVar24 + (long)iVar32 + -1; + /* catch() { ... } // from try @ 002d25e0 with catch @ 002d258c + catch() { ... } // from try @ 002d26f0 with catch @ 002d258c + catch() { ... } // from try @ 002d354c with catch @ 002d258c + catch() { ... } // from try @ 002d4858 with catch @ 002d258c */ + lVar24 = lVar24 + 1; + dVar45 = dVar45 + (double)pbVar27[lVar65] * (double)*(byte *)((long)pdVar29 + lVar33); + } while (lVar24 != (ulong)((uVar9 - 1) - iVar32) + 1); + } + iVar12 = iVar12 + 1; + pbVar27 = pbVar27 + lVar39; + *pdVar25 = dVar45 * param_1; + pdVar25 = pdVar25 + 1; + } while (iVar12 < iVar10); + local_448 = local_448 + 1; + local_470 = local_470 + uVar42 + 1; + pdVar29 = (double *)((long)pdVar29 + lVar39); + } while (local_448 != iVar10); + } + } + else { + uVar38 = (ulong)uVar9; + uVar40 = -(ulong)(uVar9 >> 0x1f) & 0xfffffff800000000 | uVar38 << 3; + pdVar22 = adStack_408; + /* catch() { ... } // from try @ 002d1864 with catch @ 002d1968 + catch() { ... } // from try @ 002d18b8 with catch @ 002d1968 */ + lVar24 = 0x20; + if (uVar8 != uVar9) { + lVar24 = 0; + } + local_418 = pdVar22; + /* catch() { ... } // from try @ 002d19a4 with catch @ 002d1970 + catch() { ... } // from try @ 002d1ad0 with catch @ 002d1970 + catch() { ... } // from try @ 002d1bec with catch @ 002d1970 */ + local_410 = 0x408; + if (uVar40 < 0x409) { + local_410 = uVar40; + /* try { // try from 002d25e0 to 003d2603 has its CatchHandler @ 002d258c */ + bVar21 = false; + } + else { + local_418 = operator_new__(uVar40); + local_410 = uVar40; + bVar21 = local_418 != pdVar22; + pdVar22 = local_418; + } + /* try { // try from 002d19a4 to 003d19a7 has its CatchHandler @ 002d1970 */ + if (0 < iVar10) { + uVar4 = (uint)((ulong)pdVar22 >> 3) & 1; + uVar7 = uVar9; + if (uVar4 < uVar9) { + uVar7 = uVar4; + } + iVar12 = uVar9 - uVar7; + uVar11 = uVar9 - 4 >> 2; + lVar33 = 0; + local_468 = (double *)((long)pdVar29 + uVar38); + pdVar6 = pdVar22 + uVar38; + uVar38 = (ulong)uVar7; + uVar13 = (uVar9 - 1) - uVar7; + uVar4 = (iVar12 - 0x10U >> 4) + 1; + local_460 = 0; + /* try { // try from 002d1a34 to 003d1a7b has its CatchHandler @ 002d1bf0 */ + iVar32 = 0; + lVar65 = NEON_shl(uVar38,3); + iVar64 = uVar4 * 0x10; + pdVar30 = pdVar25; + pdVar31 = pdVar29; + do { + if ((int)uVar8 < (int)uVar9) { + if (0 < (int)uVar9) { + /* try { // try from 002d20bc to 003d20bf has its CatchHandler @ 002d21c0 */ + if ((uVar9 < 0x14 || pdVar31 < pdVar6 && pdVar22 < local_468) || + (pdVar22 < pdVar30 + 1 && pdVar30 < pdVar6)) { + lVar26 = 0; + do { + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - *pdVar30; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar9); + } + else { + if (uVar7 != 0) { + *pdVar22 = (double)*(byte *)pdVar31 - *pdVar30; + } + uVar35 = (uint)(uVar7 != 0); + if (0xe < uVar13) { + dVar45 = *pdVar30; + uVar76 = 0; + /* try { // try from 002d2108 to 003d210b has its CatchHandler @ 002d218c */ + /* try { // try from 002d2110 to 003d2113 has its CatchHandler @ 002d21c0 */ + pdVar28 = (double *)((long)pdVar22 + lVar65); + pbVar27 = (byte *)((long)pdVar29 + lVar33 + uVar38); + do { + /* try { // try from 002d2134 to 003d2137 has its CatchHandler @ 002d2184 */ + bVar14 = pbVar27[0xc]; + bVar15 = pbVar27[0xd]; + bVar16 = pbVar27[0xe]; + bVar17 = pbVar27[0xf]; + uVar76 = uVar76 + 1; + /* catch() { ... } // from try @ 002d203c with catch @ 002d2150 */ + auVar72._0_8_ = (long)(int)(CONCAT12(pbVar27[1],(ushort)*pbVar27) & 0xffff); + auVar72._8_8_ = (long)(int)(uint)pbVar27[1]; + auVar70._0_8_ = (long)(int)(uint)pbVar27[2]; + auVar70._8_8_ = (long)(int)(uint)pbVar27[3]; + auVar78._0_8_ = (long)(int)(uint)pbVar27[4]; + auVar78._8_8_ = (long)(int)(uint)pbVar27[5]; + auVar63._0_8_ = (long)(int)(uint)pbVar27[6]; + auVar63._8_8_ = (long)(int)(uint)pbVar27[7]; + /* try { // try from 002d2180 to 003d2183 has its CatchHandler @ 002d1f04 */ + auVar61 = NEON_scvtf(auVar72,8); + /* catch() { ... } // from try @ 002d1fc8 with catch @ 002d2184 + catch() { ... } // from try @ 002d2044 with catch @ 002d2184 + catch() { ... } // from try @ 002d2134 with catch @ 002d2184 */ + auVar77._0_8_ = (long)(int)(CONCAT12(pbVar27[9],(ushort)pbVar27[8]) & 0xffff); + auVar77._8_8_ = (long)(int)(uint)pbVar27[9]; + /* catch() { ... } // from try @ 002d2108 with catch @ 002d218c */ + auVar70 = NEON_scvtf(auVar70,8); + auVar74._0_8_ = (long)(int)(uint)pbVar27[10]; + auVar74._8_8_ = (long)(int)(uint)pbVar27[0xb]; + auVar78 = NEON_scvtf(auVar78,8); + auVar63 = NEON_scvtf(auVar63,8); + pdVar28[1] = auVar61._8_8_ - dVar45; + *pdVar28 = auVar61._0_8_ - dVar45; + auVar72 = NEON_scvtf(auVar77,8); + auVar75._0_8_ = (long)(int)(uint)bVar14; + auVar75._8_8_ = (long)(int)(uint)bVar15; + auVar74 = NEON_scvtf(auVar74,8); + auVar61._0_8_ = (long)(int)(uint)bVar16; + auVar61._8_8_ = (long)(int)(uint)bVar17; + /* catch() { ... } // from try @ 002d20bc with catch @ 002d21c0 + catch() { ... } // from try @ 002d2110 with catch @ 002d21c0 */ + pdVar28[3] = auVar70._8_8_ - dVar45; + pdVar28[2] = auVar70._0_8_ - dVar45; + auVar70 = NEON_scvtf(auVar75,8); + /* catch() { ... } // from try @ 002d252c with catch @ 002d21c8 + catch() { ... } // from try @ 002d2578 with catch @ 002d21c8 */ + pdVar28[4] = auVar78._0_8_ - dVar45; + pdVar28[5] = auVar78._8_8_ - dVar45; + auVar61 = NEON_scvtf(auVar61,8); + pdVar28[7] = auVar63._8_8_ - dVar45; + pdVar28[6] = auVar63._0_8_ - dVar45; + pdVar28[9] = auVar72._8_8_ - dVar45; + pdVar28[8] = auVar72._0_8_ - dVar45; + pdVar28[0xb] = auVar74._8_8_ - dVar45; + pdVar28[10] = auVar74._0_8_ - dVar45; + pdVar28[0xd] = auVar70._8_8_ - dVar45; + pdVar28[0xc] = auVar70._0_8_ - dVar45; + pdVar28[0xf] = auVar61._8_8_ - dVar45; + pdVar28[0xe] = auVar61._0_8_ - dVar45; + pdVar28 = pdVar28 + 0x10; + pbVar27 = pbVar27 + 0x10; + } while (uVar76 < uVar4); + uVar35 = uVar35 + iVar64; + if (iVar64 == iVar12) goto LAB_002d1eb4; + } + iVar34 = uVar35 + 1; + pdVar22[(int)uVar35] = (double)*(byte *)((long)pdVar31 + (long)(int)uVar35) - *pdVar30 + ; + if (iVar34 < (int)uVar9) { + iVar36 = uVar35 + 2; + pdVar22[iVar34] = (double)*(byte *)((long)pdVar31 + (long)iVar34) - *pdVar30; + if (iVar36 < (int)uVar9) { + iVar34 = uVar35 + 3; + pdVar22[iVar36] = (double)*(byte *)((long)pdVar31 + (long)iVar36) - *pdVar30; + if (iVar34 < (int)uVar9) { + iVar36 = uVar35 + 4; + pdVar22[iVar34] = (double)*(byte *)((long)pdVar31 + (long)iVar34) - *pdVar30; + if (iVar36 < (int)uVar9) { + iVar34 = uVar35 + 5; + pdVar22[iVar36] = (double)*(byte *)((long)pdVar31 + (long)iVar36) - *pdVar30; + if (iVar34 < (int)uVar9) { + /* try { // try from 002d22c0 to 003d23b3 has its CatchHandler @ 002d2540 */ + iVar36 = uVar35 + 6; + pdVar22[iVar34] = (double)*(byte *)((long)pdVar31 + (long)iVar34) - *pdVar30 + ; + if (iVar36 < (int)uVar9) { + iVar34 = uVar35 + 7; + pdVar22[iVar36] = + (double)*(byte *)((long)pdVar31 + (long)iVar36) - *pdVar30; + if (iVar34 < (int)uVar9) { + iVar36 = uVar35 + 8; + pdVar22[iVar34] = + (double)*(byte *)((long)pdVar31 + (long)iVar34) - *pdVar30; + if (iVar36 < (int)uVar9) { + iVar34 = uVar35 + 9; + pdVar22[iVar36] = + (double)*(byte *)((long)pdVar31 + (long)iVar36) - *pdVar30; + if (iVar34 < (int)uVar9) { + iVar36 = uVar35 + 10; + pdVar22[iVar34] = + (double)*(byte *)((long)pdVar31 + (long)iVar34) - *pdVar30; + if (iVar36 < (int)uVar9) { + iVar34 = uVar35 + 0xb; + pdVar22[iVar36] = + (double)*(byte *)((long)pdVar31 + (long)iVar36) - *pdVar30; + if (iVar34 < (int)uVar9) { + iVar36 = uVar35 + 0xc; + pdVar22[iVar34] = + (double)*(byte *)((long)pdVar31 + (long)iVar34) - *pdVar30; + if (iVar36 < (int)uVar9) { + iVar34 = uVar35 + 0xd; + pdVar22[iVar36] = + (double)*(byte *)((long)pdVar31 + (long)iVar36) - + *pdVar30; + if (iVar34 < (int)uVar9) { + /* try { // try from 002d23e0 to 003d23e3 has its CatchHandler @ 002d257c */ + iVar36 = uVar35 + 0xe; + /* try { // try from 002d23e8 to 003d243f has its CatchHandler @ 002d2540 */ + pdVar22[iVar34] = + (double)*(byte *)((long)pdVar31 + (long)iVar34) - + *pdVar30; + if (iVar36 < (int)uVar9) { + pdVar22[iVar36] = + (double)*(byte *)((long)pdVar31 + (long)iVar36) - + *pdVar30; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else if (0 < (int)uVar9) { + /* try { // try from 002d1aa8 to 003d1aab has its CatchHandler @ 002d1bbc */ + /* try { // try from 002d1ab0 to 003d1ab3 has its CatchHandler @ 002d1bf0 */ + /* try { // try from 002d1ad0 to 003d1ad3 has its CatchHandler @ 002d1970 */ + if ((uVar9 < 0x14 || pdVar31 < pdVar6 && pdVar22 < local_468) || + (pdVar22 < pdVar30 + 0x10 && pdVar30 < pdVar22 + 0x10)) { + lVar26 = 0; + do { + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar9); + } + else { + if (uVar7 != 0) { + *pdVar22 = (double)*(byte *)pdVar31 - *pdVar30; + } + uVar35 = (uint)(uVar7 != 0); + if (0xe < uVar13) { + uVar76 = 0; + pdVar28 = (double *)((long)pdVar25 + local_460 + lVar65); + /* try { // try from 002d1b28 to 003d1b2b has its CatchHandler @ 002d1c2c */ + pdVar41 = (double *)((long)pdVar22 + lVar65); + pbVar27 = (byte *)((long)pdVar29 + lVar33 + uVar38); + do { + dVar45 = *pdVar28; + pdVar44 = pdVar28 + 1; + dVar59 = pdVar28[3]; + dVar58 = pdVar28[2]; + bVar14 = pbVar27[0xc]; + bVar15 = pbVar27[0xd]; + bVar16 = pbVar27[0xe]; + bVar17 = pbVar27[0xf]; + dVar57 = pdVar28[7]; + dVar56 = pdVar28[6]; + dVar55 = pdVar28[0xb]; + dVar54 = pdVar28[10]; + dVar53 = pdVar28[0xd]; + dVar52 = pdVar28[0xc]; + /* try { // try from 002d1b74 to 003d1b77 has its CatchHandler @ 002d1bf8 */ + /* try { // try from 002d1b7c to 003d1b7f has its CatchHandler @ 002d1c2c */ + uVar76 = uVar76 + 1; + dVar47 = pdVar28[4]; + dVar18 = pdVar28[5]; + /* try { // try from 002d1ba0 to 003d1ba3 has its CatchHandler @ 002d1bf0 */ + dVar68 = pdVar28[9]; + dVar67 = pdVar28[8]; + auVar62._0_8_ = (long)(int)(CONCAT12(pbVar27[1],(ushort)*pbVar27) & 0xffff); + auVar62._8_8_ = (long)(int)(uint)pbVar27[1]; + /* catch() { ... } // from try @ 002d1aa8 with catch @ 002d1bbc */ + dVar51 = pdVar28[0xf]; + dVar50 = pdVar28[0xe]; + auVar73._0_8_ = (long)(int)(uint)pbVar27[2]; + auVar73._8_8_ = (long)(int)(uint)pbVar27[3]; + auVar60._0_8_ = (long)(int)(uint)pbVar27[4]; + auVar60._8_8_ = (long)(int)(uint)pbVar27[5]; + auVar69._0_8_ = (long)(int)(uint)pbVar27[6]; + auVar69._8_8_ = (long)(int)(uint)pbVar27[7]; + pdVar28 = pdVar28 + 0x10; + auVar63 = NEON_scvtf(auVar62,8); + auVar46._0_8_ = (long)(int)(CONCAT12(pbVar27[9],(ushort)pbVar27[8]) & 0xffff); + auVar46._8_8_ = (long)(int)(uint)pbVar27[9]; + auVar74 = NEON_scvtf(auVar73,8); + auVar71._0_8_ = (long)(int)(uint)pbVar27[10]; + auVar71._8_8_ = (long)(int)(uint)pbVar27[0xb]; + /* try { // try from 002d1bec to 003d1bef has its CatchHandler @ 002d1970 */ + auVar61 = NEON_scvtf(auVar60,8); + /* catch() { ... } // from try @ 002d1a34 with catch @ 002d1bf0 + catch() { ... } // from try @ 002d1ab0 with catch @ 002d1bf0 + catch() { ... } // from try @ 002d1ba0 with catch @ 002d1bf0 */ + auVar70 = NEON_scvtf(auVar69,8); + /* catch() { ... } // from try @ 002d1b74 with catch @ 002d1bf8 */ + pdVar41[1] = auVar63._8_8_ - *pdVar44; + *pdVar41 = auVar63._0_8_ - dVar45; + auVar63 = NEON_scvtf(auVar46,8); + auVar66._0_8_ = (long)(int)(uint)bVar14; + auVar66._8_8_ = (long)(int)(uint)bVar15; + auVar72 = NEON_scvtf(auVar71,8); + auVar48._0_8_ = (long)(int)(uint)bVar16; + auVar48._8_8_ = (long)(int)(uint)bVar17; + pdVar41[3] = auVar74._8_8_ - dVar59; + pdVar41[2] = auVar74._0_8_ - dVar58; + auVar74 = NEON_scvtf(auVar66,8); + /* catch() { ... } // from try @ 002d1b28 with catch @ 002d1c2c + catch() { ... } // from try @ 002d1b7c with catch @ 002d1c2c */ + pdVar41[5] = auVar61._8_8_ - dVar18; + pdVar41[4] = auVar61._0_8_ - dVar47; + auVar61 = NEON_scvtf(auVar48,8); + /* catch() { ... } // from try @ 002d1c6c with catch @ 002d1c34 + catch() { ... } // from try @ 002d1d9c with catch @ 002d1c34 + catch() { ... } // from try @ 002d1ebc with catch @ 002d1c34 */ + pdVar41[7] = auVar70._8_8_ - dVar57; + pdVar41[6] = auVar70._0_8_ - dVar56; + pdVar41[9] = auVar63._8_8_ - dVar68; + pdVar41[8] = auVar63._0_8_ - dVar67; + pdVar41[0xb] = auVar72._8_8_ - dVar55; + pdVar41[10] = auVar72._0_8_ - dVar54; + pdVar41[0xd] = auVar74._8_8_ - dVar53; + pdVar41[0xc] = auVar74._0_8_ - dVar52; + pdVar41[0xf] = auVar61._8_8_ - dVar51; + pdVar41[0xe] = auVar61._0_8_ - dVar50; + pdVar41 = pdVar41 + 0x10; + pbVar27 = pbVar27 + 0x10; + } while (uVar76 < uVar4); + uVar35 = uVar35 + iVar64; + if (iVar64 == iVar12) goto LAB_002d1eb4; + } + lVar26 = (long)(int)uVar35; + /* try { // try from 002d1c6c to 003d1c6f has its CatchHandler @ 002d1c34 */ + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 1) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 1); + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 2) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 2); + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 3) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 3); + /* try { // try from 002d1cfc to 003d1d47 has its CatchHandler @ 002d1ec0 */ + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 4) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 4); + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 5) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 5); + pdVar22[lVar26] = (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 6) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 6); + /* try { // try from 002d1d74 to 003d1d77 has its CatchHandler @ 002d1e8c */ + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + /* try { // try from 002d1d7c to 003d1d7f has its CatchHandler @ 002d1ec0 */ + if ((int)(uVar35 + 7) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 7); + /* try { // try from 002d1d9c to 003d1d9f has its CatchHandler @ 002d1c34 */ + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 8) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 8); + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 9) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 9); + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 10) < (int)uVar9) { + /* try { // try from 002d1df8 to 003d1dfb has its CatchHandler @ 002d1efc */ + lVar26 = (long)(int)(uVar35 + 10); + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + if ((int)(uVar35 + 0xb) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 0xb); + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26]; + /* try { // try from 002d1e44 to 003d1e47 has its CatchHandler @ 002d1ec8 */ + if ((int)(uVar35 + 0xc) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 0xc); + /* try { // try from 002d1e4c to 003d1e4f has its CatchHandler @ 002d1efc */ + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - pdVar30[lVar26] + ; + if ((int)(uVar35 + 0xd) < (int)uVar9) { + /* try { // try from 002d1e70 to 003d1e73 has its CatchHandler @ 002d1ec0 */ + lVar26 = (long)(int)(uVar35 + 0xd); + /* catch() { ... } // from try @ 002d1d74 with catch @ 002d1e8c */ + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - + pdVar30[lVar26]; + if ((int)(uVar35 + 0xe) < (int)uVar9) { + lVar26 = (long)(int)(uVar35 + 0xe); + pdVar22[lVar26] = + (double)*(byte *)((long)pdVar31 + lVar26) - + pdVar30[lVar26]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002d1eb4: + /* try { // try from 002d1ebc to 003d1ebf has its CatchHandler @ 002d1c34 */ + /* catch() { ... } // from try @ 002d1cfc with catch @ 002d1ec0 + catch() { ... } // from try @ 002d1d7c with catch @ 002d1ec0 + catch() { ... } // from try @ 002d1e70 with catch @ 002d1ec0 */ + pbVar27 = (byte *)((long)pdVar29 + lVar33 + 1); + /* catch() { ... } // from try @ 002d1e44 with catch @ 002d1ec8 */ + pdVar41 = local_470; + pdVar28 = pdVar30; + iVar34 = iVar32; + do { + pdVar44 = pdVar28; + if ((int)uVar8 < (int)uVar9) { + local_420 = *pdVar28; + local_428 = local_420; + local_430 = local_420; + local_438 = local_420; + pdVar44 = &local_438; + } + dVar45 = 0.0; + /* catch() { ... } // from try @ 002d1df8 with catch @ 002d1efc + catch() { ... } // from try @ 002d1e4c with catch @ 002d1efc */ + if ((int)uVar9 < 4) { + iVar36 = 0; + } + else { + /* catch() { ... } // from try @ 002d1f38 with catch @ 002d1f04 + catch() { ... } // from try @ 002d2064 with catch @ 002d1f04 + catch() { ... } // from try @ 002d2180 with catch @ 002d1f04 */ + pbVar23 = pbVar27; + pdVar37 = pdVar44; + pdVar43 = pdVar22; + do { + pbVar5 = pbVar23 + 4; + pdVar1 = pdVar37 + 1; + dVar47 = *pdVar37; + pdVar2 = pdVar37 + 2; + /* try { // try from 002d1f38 to 003d1f3b has its CatchHandler @ 002d1f04 */ + pdVar3 = pdVar37 + 3; + pdVar37 = (double *)((long)pdVar37 + lVar24); + dVar45 = dVar45 + ((double)*pbVar23 - *pdVar1) * pdVar43[1] + + ((double)pbVar23[-1] - dVar47) * *pdVar43 + + ((double)pbVar23[1] - *pdVar2) * pdVar43[2] + + ((double)pbVar23[2] - *pdVar3) * pdVar43[3]; + pbVar23 = pbVar5; + pdVar43 = pdVar43 + 4; + } while (pbVar5 != pbVar27 + (ulong)uVar11 * 4 + 4); + pdVar44 = (double *)((long)pdVar44 + lVar24 + (ulong)uVar11 * lVar24); + iVar36 = (uVar11 + 1) * 4; + } + if (iVar36 < (int)uVar9) { + lVar26 = 0; + do { + lVar19 = lVar26 + (long)iVar36 + -1; + pdVar37 = pdVar44 + lVar26; + lVar20 = iVar36 + lVar26; + lVar26 = lVar26 + 1; + /* try { // try from 002d1fc8 to 003d200f has its CatchHandler @ 002d2184 */ + dVar45 = dVar45 + ((double)pbVar27[lVar19] - *pdVar37) * pdVar22[lVar20]; + } while (lVar26 != (ulong)((uVar9 - 1) - iVar36) + 1); + } + iVar34 = iVar34 + 1; + pdVar28 = pdVar28 + uVar49; + pbVar27 = pbVar27 + lVar39; + *pdVar41 = dVar45 * param_1; + pdVar41 = pdVar41 + 1; + } while (iVar34 < iVar10); + iVar32 = iVar32 + 1; + pdVar30 = pdVar30 + uVar49; + lVar33 = lVar33 + lVar39; + pdVar31 = (double *)((long)pdVar31 + lVar39); + local_470 = local_470 + uVar42 + 1; + local_460 = local_460 + uVar49 * 8; + local_468 = (double *)((long)local_468 + lVar39); + } while (iVar32 != iVar10); + } + if (bVar21) { + local_418 = pdVar22; + local_410 = uVar40; + operator_delete__(pdVar22); + } + } + /* try { // try from 002d203c to 003d203f has its CatchHandler @ 002d2150 */ + /* try { // try from 002d2044 to 003d2047 has its CatchHandler @ 002d2184 */ + /* try { // try from 002d2064 to 003d2067 has its CatchHandler @ 002d1f04 */ + return; +} + + +================================================================== + +### FUNC 002d25e8 (3276 bytes) name=FUN_002d25e8 + +void FUN_002d25e8(double param_1,long param_2,long param_3,long param_4) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + uint uVar4; + byte *pbVar5; + float *pfVar6; + uint uVar7; + uint uVar8; + uint uVar9; + int iVar10; + uint uVar11; + uint uVar12; + long lVar13; + long lVar14; + bool bVar15; + float *pfVar16; + byte *pbVar17; + long lVar18; + int iVar19; + float *pfVar20; + ulong uVar21; + long lVar22; + float *pfVar23; + ulong uVar24; + float *pfVar25; + float *pfVar26; + byte *pbVar27; + int iVar28; + uint uVar29; + long lVar30; + float *pfVar31; + float *pfVar32; + uint uVar33; + int iVar34; + ulong uVar35; + float *pfVar36; + long lVar37; + int iVar38; + float *pfVar39; + float *pfVar40; + ulong uVar41; + float *pfVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + double dVar46; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + float fVar50; + ulong uVar51; + float *pfVar52; + long lVar53; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + int iVar62; + undefined8 uVar63; + undefined8 uVar64; + long lVar65; + float local_428; + float local_424; + float local_420; + float local_41c; + float *local_418; + ulong local_410; + float afStack_408 [258]; + + pfVar42 = *(float **)(param_3 + 0x10); + pfVar23 = *(float **)(param_2 + 0x10); + uVar41 = *(ulong *)(param_3 + 0x50) >> 2; + pfVar20 = *(float **)(param_4 + 0x10); + lVar37 = *(long *)(param_2 + 0x50); + /* try { // try from 002d2638 to 003d263b has its CatchHandler @ 002d4928 */ + if (*(int *)(param_4 + 8) < 2) { + uVar51 = 0; + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + } + else { + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + uVar51 = *(ulong *)(param_4 + 0x50) >> 2; + } + if (pfVar20 == (float *)0x0) { + if (0 < iVar10) { + uVar8 = uVar9 - 4 >> 2; + iVar28 = (uVar8 + 1) * 4; + if ((int)(uVar9 - 3) < 1) { + iVar28 = 0; + } + iVar38 = 0; + do { + pbVar27 = (byte *)((long)pfVar23 + 1); + pfVar20 = pfVar42; + iVar62 = iVar38; + do { + dVar46 = 0.0; + if (0 < (int)(uVar9 - 3)) { + pbVar17 = pbVar27; + pfVar16 = pfVar23; + do { + pbVar5 = pbVar17 + 4; + /* try { // try from 002d320c to 003d3263 has its CatchHandler @ 002d4960 */ + dVar46 = dVar46 + (double)*(byte *)((long)pfVar16 + 1) * (double)*pbVar17 + + (double)pbVar17[-1] * (double)*(byte *)pfVar16 + + (double)pbVar17[1] * (double)*(byte *)((long)pfVar16 + 2) + + (double)pbVar17[2] * (double)*(byte *)((long)pfVar16 + 3); + pbVar17 = pbVar5; + pfVar16 = pfVar16 + 1; + } while (pbVar5 != pbVar27 + (ulong)uVar8 * 4 + 4); + } + if (iVar28 < (int)uVar9) { + lVar18 = 0; + do { + lVar30 = lVar18 + iVar28; + lVar65 = lVar18 + (long)iVar28 + -1; + lVar18 = lVar18 + 1; + dVar46 = dVar46 + (double)pbVar27[lVar65] * (double)*(byte *)((long)pfVar23 + lVar30); + } while (lVar18 != (ulong)((uVar9 - 1) - iVar28) + 1); + } + iVar62 = iVar62 + 1; + pbVar27 = pbVar27 + lVar37; + *pfVar20 = (float)(dVar46 * param_1); + pfVar20 = pfVar20 + 1; + } while (iVar62 < iVar10); + iVar38 = iVar38 + 1; + /* try { // try from 002d3290 to 003d3293 has its CatchHandler @ 002d4c80 */ + pfVar42 = pfVar42 + uVar41 + 1; + /* try { // try from 002d3298 to 003d329b has its CatchHandler @ 002d4960 */ + pfVar23 = (float *)((long)pfVar23 + lVar37); + } while (iVar38 != iVar10); + } + } + else { + uVar35 = (ulong)uVar9; + /* try { // try from 002d2668 to 003d266b has its CatchHandler @ 002d4918 */ + /* try { // try from 002d2670 to 003d26b7 has its CatchHandler @ 002d4928 */ + uVar21 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | uVar35 << 2; + pfVar16 = afStack_408; + lVar18 = 0x10; + if (uVar8 != uVar9) { + lVar18 = 0; + } + local_418 = pfVar16; + local_410 = 0x408; + if (uVar21 < 0x409) { + local_410 = uVar21; + bVar15 = false; + } + else { + local_418 = operator_new__(uVar21); + bVar15 = local_418 != pfVar16; + local_410 = uVar21; + pfVar16 = local_418; + } + if (0 < iVar10) { + /* try { // try from 002d26d4 to 003d26d7 has its CatchHandler @ 002d4bbc */ + uVar7 = -((uint)((ulong)pfVar16 >> 2) & 3) & 3; + /* try { // try from 002d26dc to 003d26df has its CatchHandler @ 002d4928 */ + uVar11 = uVar9 - 4 >> 2; + if (uVar9 < uVar7) { + uVar7 = uVar9; + } + /* try { // try from 002d26f0 to 003d2703 has its CatchHandler @ 002d258c */ + iVar38 = uVar9 - uVar7; + lVar30 = 0; + uVar24 = (ulong)uVar7; + uVar12 = (uVar9 - 1) - uVar7; + uVar4 = (iVar38 - 0x10U >> 4) + 1; + lVar53 = NEON_shl(uVar24,2); + iVar62 = uVar4 * 0x10; + pfVar52 = (float *)((long)pfVar23 + uVar35); + iVar28 = 0; + lVar65 = 0; + /* try { // try from 002d2764 to 003d2767 has its CatchHandler @ 002d4928 */ + pfVar6 = pfVar16 + uVar35; + pfVar25 = pfVar20; + pfVar26 = pfVar23; + do { + if ((int)uVar8 < (int)uVar9) { + if (0 < (int)uVar9) { + /* try { // try from 002d2d74 to 003d2d77 has its CatchHandler @ 002d4b98 */ + /* try { // try from 002d2d94 to 003d2d97 has its CatchHandler @ 002d4a58 */ + if ((uVar9 < 0x13 || pfVar26 < pfVar6 && pfVar16 < pfVar52) || + (pfVar16 < pfVar25 + 1 && pfVar25 < pfVar6)) { + lVar22 = 0; + do { + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - *pfVar25; + lVar22 = lVar22 + 1; + /* try { // try from 002d3104 to 003d3107 has its CatchHandler @ 002d48f0 */ + } while ((int)lVar22 < (int)uVar9); + } + else { + /* try { // try from 002d2db4 to 003d2db7 has its CatchHandler @ 002d4c20 */ + uVar33 = uVar7; + if ((uVar7 != 0) && (*pfVar16 = (float)*(byte *)pfVar26 - *pfVar25, uVar7 != 1)) { + /* try { // try from 002d2de4 to 003d2de7 has its CatchHandler @ 002d4bf8 */ + pfVar16[1] = (float)*(byte *)((long)pfVar26 + 1) - *pfVar25; + if (uVar7 == 3) { + pfVar16[2] = (float)*(byte *)((long)pfVar26 + 2) - *pfVar25; + } + else { + uVar33 = 2; + } + } + /* try { // try from 002d2e14 to 003d2e17 has its CatchHandler @ 002d4bcc */ + if (0xe < uVar12) { + /* try { // try from 002d2e1c to 003d2e1f has its CatchHandler @ 002d4bf8 */ + fVar50 = *pfVar25; + /* try { // try from 002d2e24 to 003d2e27 has its CatchHandler @ 002d4a58 */ + uVar29 = 0; + pfVar39 = (float *)((long)pfVar16 + lVar53); + pbVar27 = (byte *)((long)pfVar23 + lVar30 + uVar24); + do { + uVar29 = uVar29 + 1; + auVar54._6_2_ = 0; + auVar54._0_6_ = + (uint6)CONCAT14(pbVar27[1],(uint)CONCAT12(pbVar27[1],(ushort)*pbVar27)) & + 0xffff0000ffff; + auVar54[8] = pbVar27[2]; + auVar54._9_3_ = 0; + auVar54[0xc] = pbVar27[3]; + auVar54._13_3_ = 0; + auVar58._1_3_ = 0; + auVar58[0] = pbVar27[4]; + auVar58[4] = pbVar27[5]; + auVar58._5_3_ = 0; + auVar58[8] = pbVar27[6]; + auVar58._9_3_ = 0; + auVar58[0xc] = pbVar27[7]; + auVar58._13_3_ = 0; + auVar61._6_2_ = 0; + auVar61._0_6_ = + (uint6)CONCAT14(pbVar27[9],(uint)CONCAT12(pbVar27[9],(ushort)pbVar27[8])) & + 0xffff0000ffff; + auVar61[8] = pbVar27[10]; + auVar61._9_3_ = 0; + auVar61[0xc] = pbVar27[0xb]; + auVar61._13_3_ = 0; + auVar44._1_3_ = 0; + auVar44[0] = pbVar27[0xc]; + auVar44[4] = pbVar27[0xd]; + auVar44._5_3_ = 0; + auVar44[8] = pbVar27[0xe]; + auVar44._9_3_ = 0; + auVar44[0xc] = pbVar27[0xf]; + auVar44._13_3_ = 0; + /* try { // try from 002d2e78 to 003d2eab has its CatchHandler @ 002d4928 */ + auVar55 = NEON_scvtf(auVar54,4); + auVar58 = NEON_scvtf(auVar58,4); + auVar48 = NEON_scvtf(auVar61,4); + auVar44 = NEON_scvtf(auVar44,4); + auVar56._0_8_ = CONCAT44(auVar55._4_4_ - fVar50,auVar55._0_4_ - fVar50); + auVar56._8_4_ = auVar55._8_4_ - fVar50; + auVar56._12_4_ = auVar55._12_4_ - fVar50; + auVar55._0_8_ = CONCAT44(auVar48._4_4_ - fVar50,auVar48._0_4_ - fVar50); + auVar55._8_4_ = auVar48._8_4_ - fVar50; + auVar55._12_4_ = auVar48._12_4_ - fVar50; + auVar48._0_8_ = CONCAT44(auVar44._4_4_ - fVar50,auVar44._0_4_ - fVar50); + auVar48._8_4_ = auVar44._8_4_ - fVar50; + auVar48._12_4_ = auVar44._12_4_ - fVar50; + *(long *)(pfVar39 + 2) = auVar56._8_8_; + *(undefined8 *)pfVar39 = auVar56._0_8_; + pfVar39[6] = auVar58._8_4_ - fVar50; + pfVar39[7] = auVar58._12_4_ - fVar50; + pfVar39[4] = auVar58._0_4_ - fVar50; + pfVar39[5] = auVar58._4_4_ - fVar50; + *(long *)(pfVar39 + 10) = auVar55._8_8_; + *(undefined8 *)(pfVar39 + 8) = auVar55._0_8_; + *(long *)(pfVar39 + 0xe) = auVar48._8_8_; + *(undefined8 *)(pfVar39 + 0xc) = auVar48._0_8_; + pfVar39 = pfVar39 + 0x10; + pbVar27 = pbVar27 + 0x10; + } while (uVar29 < uVar4); + uVar33 = uVar33 + iVar62; + if (iVar62 == iVar38) goto LAB_002d2b74; + } + iVar34 = uVar33 + 1; + pfVar16[(int)uVar33] = (float)*(byte *)((long)pfVar26 + (long)(int)uVar33) - *pfVar25; + if (iVar34 < (int)uVar9) { + iVar19 = uVar33 + 2; + pfVar16[iVar34] = (float)*(byte *)((long)pfVar26 + (long)iVar34) - *pfVar25; + if (iVar19 < (int)uVar9) { + iVar34 = uVar33 + 3; + pfVar16[iVar19] = (float)*(byte *)((long)pfVar26 + (long)iVar19) - *pfVar25; + if (iVar34 < (int)uVar9) { + /* try { // try from 002d2f2c to 003d2f73 has its CatchHandler @ 002d4cc8 */ + iVar19 = uVar33 + 4; + pfVar16[iVar34] = (float)*(byte *)((long)pfVar26 + (long)iVar34) - *pfVar25; + if (iVar19 < (int)uVar9) { + iVar34 = uVar33 + 5; + pfVar16[iVar19] = (float)*(byte *)((long)pfVar26 + (long)iVar19) - *pfVar25; + if (iVar34 < (int)uVar9) { + iVar19 = uVar33 + 6; + pfVar16[iVar34] = (float)*(byte *)((long)pfVar26 + (long)iVar34) - *pfVar25; + if (iVar19 < (int)uVar9) { + iVar34 = uVar33 + 7; + /* try { // try from 002d2fa0 to 003d2fa3 has its CatchHandler @ 002d48c0 */ + /* try { // try from 002d2fa8 to 003d2fab has its CatchHandler @ 002d4cc8 */ + /* try { // try from 002d2fb0 to 003d300b has its CatchHandler @ 002d4928 */ + pfVar16[iVar19] = + (float)*(byte *)((long)pfVar26 + (long)iVar19) - *pfVar25; + if (iVar34 < (int)uVar9) { + iVar19 = uVar33 + 8; + pfVar16[iVar34] = + (float)*(byte *)((long)pfVar26 + (long)iVar34) - *pfVar25; + if (iVar19 < (int)uVar9) { + iVar34 = uVar33 + 9; + pfVar16[iVar19] = + (float)*(byte *)((long)pfVar26 + (long)iVar19) - *pfVar25; + if (iVar34 < (int)uVar9) { + iVar19 = uVar33 + 10; + pfVar16[iVar34] = + (float)*(byte *)((long)pfVar26 + (long)iVar34) - *pfVar25; + if (iVar19 < (int)uVar9) { + iVar34 = uVar33 + 0xb; + pfVar16[iVar19] = + (float)*(byte *)((long)pfVar26 + (long)iVar19) - *pfVar25; + if (iVar34 < (int)uVar9) { + iVar19 = uVar33 + 0xc; + pfVar16[iVar34] = + (float)*(byte *)((long)pfVar26 + (long)iVar34) - *pfVar25; + if (iVar19 < (int)uVar9) { + iVar34 = uVar33 + 0xd; + /* try { // try from 002d308c to 003d30d7 has its CatchHandler @ 002d4930 */ + pfVar16[iVar19] = + (float)*(byte *)((long)pfVar26 + (long)iVar19) - *pfVar25 + ; + if (iVar34 < (int)uVar9) { + iVar19 = uVar33 + 0xe; + pfVar16[iVar34] = + (float)*(byte *)((long)pfVar26 + (long)iVar34) - + *pfVar25; + if (iVar19 < (int)uVar9) { + pfVar16[iVar19] = + (float)*(byte *)((long)pfVar26 + (long)iVar19) - + *pfVar25; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else if (0 < (int)uVar9) { + if ((uVar9 < 0x13 || pfVar26 < pfVar6 && pfVar16 < pfVar52) || + (pfVar16 < pfVar25 + 0x10 && pfVar25 < pfVar16 + 0x10)) { + /* try { // try from 002d310c to 003d310f has its CatchHandler @ 002d4930 */ + lVar22 = 0; + do { + /* try { // try from 002d3114 to 003d316f has its CatchHandler @ 002d4928 */ + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar9); + } + else { + /* try { // try from 002d27ec to 003d2833 has its CatchHandler @ 002d4c28 */ + uVar33 = uVar7; + if ((uVar7 != 0) && (*pfVar16 = (float)*(byte *)pfVar26 - *pfVar25, uVar7 != 1)) { + pfVar16[1] = (float)*(byte *)((long)pfVar26 + 1) - pfVar25[1]; + if (uVar7 == 3) { + pfVar16[2] = (float)*(byte *)((long)pfVar26 + 2) - pfVar25[2]; + } + else { + uVar33 = 2; + } + } + if (0xe < uVar12) { + uVar29 = 0; + /* try { // try from 002d2860 to 003d2863 has its CatchHandler @ 002d4b4c */ + /* try { // try from 002d2868 to 003d286b has its CatchHandler @ 002d4c28 */ + pfVar39 = (float *)((long)pfVar16 + lVar53); + pbVar17 = (byte *)((long)pfVar20 + lVar65 + lVar53); + pbVar27 = (byte *)((long)pfVar23 + lVar30 + uVar24); + do { + uVar64 = *(undefined8 *)(pbVar17 + 8); + uVar63 = *(undefined8 *)pbVar17; + /* try { // try from 002d2888 to 003d28f3 has its CatchHandler @ 002d4928 */ + uVar29 = uVar29 + 1; + auVar60._6_2_ = 0; + auVar60._0_6_ = + (uint6)CONCAT14(pbVar27[1],(uint)CONCAT12(pbVar27[1],(ushort)*pbVar27)) & + 0xffff0000ffff; + auVar60[8] = pbVar27[2]; + auVar60._9_3_ = 0; + auVar60[0xc] = pbVar27[3]; + auVar60._13_3_ = 0; + auVar47._1_3_ = 0; + auVar47[0] = pbVar27[4]; + auVar47[4] = pbVar27[5]; + auVar47._5_3_ = 0; + auVar47[8] = pbVar27[6]; + auVar47._9_3_ = 0; + auVar47[0xc] = pbVar27[7]; + auVar47._13_3_ = 0; + auVar57._6_2_ = 0; + auVar57._0_6_ = + (uint6)CONCAT14(pbVar27[9],(uint)CONCAT12(pbVar27[9],(ushort)pbVar27[8])) & + 0xffff0000ffff; + auVar57[8] = pbVar27[10]; + auVar57._9_3_ = 0; + auVar57[0xc] = pbVar27[0xb]; + auVar57._13_3_ = 0; + auVar43._1_3_ = 0; + auVar43[0] = pbVar27[0xc]; + auVar43[4] = pbVar27[0xd]; + auVar43._5_3_ = 0; + auVar43[8] = pbVar27[0xe]; + auVar43._9_3_ = 0; + auVar43[0xc] = pbVar27[0xf]; + auVar43._13_3_ = 0; + auVar61 = NEON_scvtf(auVar60,4); + auVar48 = NEON_scvtf(auVar47,4); + auVar58 = NEON_scvtf(auVar57,4); + auVar44 = NEON_scvtf(auVar43,4); + auVar49._0_8_ = + CONCAT44(auVar48._4_4_ - + (float)((ulong)*(undefined8 *)(pbVar17 + 0x10) >> 0x20), + auVar48._0_4_ - (float)*(undefined8 *)(pbVar17 + 0x10)); + auVar49._8_4_ = auVar48._8_4_ - (float)*(undefined8 *)(pbVar17 + 0x18); + auVar49._12_4_ = + auVar48._12_4_ - (float)((ulong)*(undefined8 *)(pbVar17 + 0x18) >> 0x20); + auVar59._0_8_ = + CONCAT44(auVar58._4_4_ - + (float)((ulong)*(undefined8 *)(pbVar17 + 0x20) >> 0x20), + auVar58._0_4_ - (float)*(undefined8 *)(pbVar17 + 0x20)); + auVar59._8_4_ = auVar58._8_4_ - (float)*(undefined8 *)(pbVar17 + 0x28); + auVar59._12_4_ = + auVar58._12_4_ - (float)((ulong)*(undefined8 *)(pbVar17 + 0x28) >> 0x20); + auVar45._0_8_ = + CONCAT44(auVar44._4_4_ - + (float)((ulong)*(undefined8 *)(pbVar17 + 0x30) >> 0x20), + auVar44._0_4_ - (float)*(undefined8 *)(pbVar17 + 0x30)); + auVar45._8_4_ = auVar44._8_4_ - (float)*(undefined8 *)(pbVar17 + 0x38); + auVar45._12_4_ = + auVar44._12_4_ - (float)((ulong)*(undefined8 *)(pbVar17 + 0x38) >> 0x20); + pfVar39[2] = auVar61._8_4_ - (float)uVar64; + pfVar39[3] = auVar61._12_4_ - (float)((ulong)uVar64 >> 0x20); + *pfVar39 = auVar61._0_4_ - (float)uVar63; + pfVar39[1] = auVar61._4_4_ - (float)((ulong)uVar63 >> 0x20); + *(long *)(pfVar39 + 6) = auVar49._8_8_; + *(undefined8 *)(pfVar39 + 4) = auVar49._0_8_; + *(long *)(pfVar39 + 10) = auVar59._8_8_; + *(undefined8 *)(pfVar39 + 8) = auVar59._0_8_; + *(long *)(pfVar39 + 0xe) = auVar45._8_8_; + *(undefined8 *)(pfVar39 + 0xc) = auVar45._0_8_; + pfVar39 = pfVar39 + 0x10; + pbVar17 = pbVar17 + 0x40; + pbVar27 = pbVar27 + 0x10; + } while (uVar29 < uVar4); + uVar33 = uVar33 + iVar62; + if (iVar62 == iVar38) goto LAB_002d2b74; + } + lVar22 = (long)(int)uVar33; + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 1) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 1); + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + /* try { // try from 002d2974 to 003d29bb has its CatchHandler @ 002d4b44 */ + if ((int)(uVar33 + 2) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 2); + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 3) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 3); + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 4) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 4); + /* try { // try from 002d29e8 to 003d29eb has its CatchHandler @ 002d4988 */ + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 5) < (int)uVar9) { + /* try { // try from 002d29f0 to 003d29f3 has its CatchHandler @ 002d4b44 */ + lVar22 = (long)(int)(uVar33 + 5); + /* try { // try from 002d29f8 to 003d2a6b has its CatchHandler @ 002d4928 */ + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 6) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 6); + pfVar16[lVar22] = (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22] + ; + if ((int)(uVar33 + 7) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 7); + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 8) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 8); + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 9) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 9); + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 10) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 10); + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 0xb) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 0xb); + /* try { // try from 002d2aec to 003d2b33 has its CatchHandler @ 002d4ad4 */ + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 0xc) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 0xc); + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - pfVar25[lVar22]; + if ((int)(uVar33 + 0xd) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 0xd); + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - + pfVar25[lVar22]; + if ((int)(uVar33 + 0xe) < (int)uVar9) { + lVar22 = (long)(int)(uVar33 + 0xe); + /* try { // try from 002d2b60 to 003d2b63 has its CatchHandler @ 002d4b34 */ + /* try { // try from 002d2b68 to 003d2b6b has its CatchHandler @ 002d4ad4 */ + /* try { // try from 002d2b70 to 003d2bc3 has its CatchHandler @ 002d4928 */ + pfVar16[lVar22] = + (float)*(byte *)((long)pfVar26 + lVar22) - + pfVar25[lVar22]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_002d2b74: + pbVar27 = (byte *)((long)pfVar23 + lVar30 + 1); + pfVar40 = pfVar42; + pfVar39 = pfVar25; + iVar34 = iVar28; + do { + pfVar31 = pfVar39; + if ((int)uVar8 < (int)uVar9) { + local_41c = *pfVar39; + local_420 = local_41c; + local_424 = local_41c; + local_428 = local_41c; + pfVar31 = &local_428; + } + dVar46 = 0.0; + if ((int)uVar9 < 4) { + iVar19 = 0; + } + else { + pbVar17 = pbVar27; + pfVar32 = pfVar31; + pfVar36 = pfVar16; + do { + pbVar5 = pbVar17 + 4; + pfVar1 = pfVar32 + 1; + fVar50 = *pfVar32; + pfVar2 = pfVar32 + 2; + pfVar3 = pfVar32 + 3; + pfVar32 = (float *)((long)pfVar32 + lVar18); + dVar46 = dVar46 + (double)pfVar36[1] * (double)((float)*pbVar17 - *pfVar1) + + (double)((float)pbVar17[-1] - fVar50) * (double)*pfVar36 + + (double)((float)pbVar17[1] - *pfVar2) * (double)pfVar36[2] + + (double)((float)pbVar17[2] - *pfVar3) * (double)pfVar36[3]; + pbVar17 = pbVar5; + pfVar36 = pfVar36 + 4; + } while (pbVar5 != pbVar27 + (ulong)uVar11 * 4 + 4); + pfVar31 = (float *)((long)pfVar31 + lVar18 + (ulong)uVar11 * lVar18); + iVar19 = (uVar11 + 1) * 4; + } + if (iVar19 < (int)uVar9) { + lVar22 = 0; + do { + lVar13 = lVar22 + (long)iVar19 + -1; + pfVar32 = pfVar31 + lVar22; + lVar14 = iVar19 + lVar22; + lVar22 = lVar22 + 1; + dVar46 = dVar46 + (double)((float)pbVar27[lVar13] - *pfVar32) * + (double)pfVar16[lVar14]; + } while (lVar22 != (ulong)((uVar9 - 1) - iVar19) + 1); + } + iVar34 = iVar34 + 1; + pfVar39 = pfVar39 + uVar51; + pbVar27 = pbVar27 + lVar37; + *pfVar40 = (float)(dVar46 * param_1); + pfVar40 = pfVar40 + 1; + } while (iVar34 < iVar10); + iVar28 = iVar28 + 1; + pfVar25 = pfVar25 + uVar51; + lVar30 = lVar30 + lVar37; + pfVar26 = (float *)((long)pfVar26 + lVar37); + pfVar42 = pfVar42 + uVar41 + 1; + lVar65 = lVar65 + uVar51 * 4; + pfVar52 = (float *)((long)pfVar52 + lVar37); + } while (iVar28 != iVar10); + } + if (bVar15) { + local_418 = pfVar16; + local_410 = uVar21; + operator_delete__(pfVar16); + } + } + return; +} + + +================================================================== + +### FUNC 002d32b4 (2356 bytes) name=FUN_002d32b4 + +void FUN_002d32b4(double param_1,long param_2,long param_3,long param_4) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + uint uVar4; + ushort *puVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + int iVar11; + uint uVar12; + long lVar13; + long lVar14; + bool bVar15; + double *pdVar16; + ushort *puVar17; + long lVar18; + double *pdVar19; + ulong uVar20; + long lVar21; + ushort *puVar22; + uint uVar23; + int iVar24; + ushort *puVar25; + double *pdVar26; + uint uVar27; + double *pdVar28; + ushort *puVar29; + double *pdVar30; + int iVar31; + double *pdVar32; + ulong uVar33; + int iVar34; + double *pdVar35; + double *pdVar36; + ulong uVar37; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + double dVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + double dVar47; + ulong uVar48; + long lVar49; + long lVar50; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + double dVar55; + int iVar56; + double local_438; + double local_430; + double local_428; + double local_420; + double *local_418; + ulong local_410; + double adStack_408 [129]; + + pdVar35 = *(double **)(param_3 + 0x10); + uVar33 = *(ulong *)(param_3 + 0x50) >> 3; + puVar25 = *(ushort **)(param_2 + 0x10); + pdVar19 = *(double **)(param_4 + 0x10); + uVar48 = *(ulong *)(param_2 + 0x50) >> 1; + if (*(int *)(param_4 + 8) < 2) { + /* try { // try from 002d3a74 to 003d3a77 has its CatchHandler @ 002d4928 */ + uVar37 = 0; + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + iVar8 = **(int **)(param_2 + 0x40); + } + else { + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + uVar37 = *(ulong *)(param_4 + 0x50) >> 3; + iVar8 = **(int **)(param_2 + 0x40); + } + if (pdVar19 == (double *)0x0) { + if (0 < iVar8) { + uVar10 = uVar7 - 4 >> 2; + uVar6 = (uVar10 + 1) * 4; + if ((int)(uVar7 - 3) < 1) { + uVar6 = 0; + } + iVar31 = 0; + uVar37 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + do { + puVar29 = puVar25 + 1; + /* try { // try from 002d3af4 to 003d3af7 has its CatchHandler @ 002d4980 */ + pdVar19 = pdVar35; + iVar11 = iVar31; + do { + /* try { // try from 002d3b00 to 003d3b03 has its CatchHandler @ 002d4928 */ + dVar47 = 0.0; + if (0 < (int)(uVar7 - 3)) { + puVar17 = puVar29; + puVar22 = puVar25; + do { + puVar5 = puVar17 + 4; + dVar47 = dVar47 + (double)puVar22[1] * (double)*puVar17 + + (double)puVar17[-1] * (double)*puVar22 + + (double)puVar17[1] * (double)puVar22[2] + + (double)puVar17[2] * (double)puVar22[3]; + puVar17 = puVar5; + puVar22 = puVar22 + 4; + } while (puVar5 != puVar29 + (ulong)uVar10 * 4 + 4); + } + if ((int)uVar6 < (int)uVar7) { + /* try { // try from 002d3b84 to 003d3bcf has its CatchHandler @ 002d4c60 */ + lVar18 = 0; + do { + lVar49 = lVar18 + uVar37; + lVar50 = lVar18 + (uVar37 - 2); + lVar18 = lVar18 + 2; + dVar47 = dVar47 + (double)*(ushort *)((long)puVar29 + lVar50) * + (double)*(ushort *)((long)puVar25 + lVar49); + } while (lVar18 != ((ulong)((uVar7 - 1) - uVar6) + 1) * 2); + } + iVar11 = iVar11 + 1; + puVar29 = puVar29 + uVar48; + *pdVar19 = dVar47 * param_1; + pdVar19 = pdVar19 + 1; + } while (iVar11 < iVar8); + iVar31 = iVar31 + 1; + pdVar35 = pdVar35 + uVar33 + 1; + puVar25 = puVar25 + uVar48; + } while (iVar31 != iVar8); + } + } + else { + uVar20 = -(ulong)(uVar7 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar7 << 3; + pdVar16 = adStack_408; + lVar18 = 0x20; + if (uVar6 != uVar7) { + lVar18 = 0; + } + local_418 = pdVar16; + local_410 = 0x408; + if (uVar20 < 0x409) { + local_410 = uVar20; + bVar15 = false; + } + else { + local_418 = operator_new__(uVar20); + bVar15 = local_418 != pdVar16; + local_410 = uVar20; + pdVar16 = local_418; + } + /* try { // try from 002d3390 to 003d3393 has its CatchHandler @ 002d4acc */ + if (0 < iVar8) { + uVar10 = (uint)((ulong)pdVar16 >> 3) & 1; + if (uVar7 < uVar10) { + uVar10 = uVar7; + } + /* try { // try from 002d33b0 to 003d33b3 has its CatchHandler @ 002d4a24 */ + uVar9 = uVar7 - 4 >> 2; + iVar11 = uVar7 - uVar10; + /* try { // try from 002d33d0 to 003d33d3 has its CatchHandler @ 002d49f8 */ + /* try { // try from 002d33d8 to 003d33db has its CatchHandler @ 002d4a24 */ + iVar31 = 0; + uVar4 = (iVar11 - 8U >> 3) + 1; + lVar50 = NEON_shl((ulong)uVar10,3); + lVar49 = NEON_shl((ulong)uVar10,1); + iVar56 = uVar4 * 8; + uVar12 = (uVar7 - 1) - uVar10; + /* try { // try from 002d342c to 003d34fb has its CatchHandler @ 002d4928 */ + do { + if ((int)uVar6 < (int)uVar7) { + if (0 < (int)uVar7) { + /* try { // try from 002d3844 to 003d388f has its CatchHandler @ 002d4980 */ + if ((pdVar16 < pdVar19 + 1 && pdVar19 < pdVar16 + uVar7) || (uVar7 < 0xb)) { + lVar21 = 0; + do { + /* try { // try from 002d3a34 to 003d3a37 has its CatchHandler @ 002d4aa0 */ + pdVar16[lVar21] = (double)puVar25[lVar21] - *pdVar19; + lVar21 = lVar21 + 1; + /* try { // try from 002d3a3c to 003d3a3f has its CatchHandler @ 002d4acc */ + } while ((int)lVar21 < (int)uVar7); + } + else { + if (uVar10 != 0) { + *pdVar16 = (double)*puVar25 - *pdVar19; + } + uVar23 = (uint)(uVar10 != 0); + if (6 < uVar12) { + dVar47 = *pdVar19; + uVar27 = 0; + puVar29 = (ushort *)((long)puVar25 + lVar49); + pdVar30 = (double *)((long)pdVar16 + lVar50); + do { + uVar27 = uVar27 + 1; + /* try { // try from 002d38bc to 003d38bf has its CatchHandler @ 002d4938 */ + /* try { // try from 002d38c4 to 003d38c7 has its CatchHandler @ 002d4980 */ + auVar46._0_8_ = (long)(int)(uint)*puVar29; + auVar46._8_8_ = (long)(int)(uint)puVar29[1]; + auVar41._0_8_ = (long)(int)(uint)puVar29[2]; + auVar41._8_8_ = (long)(int)(uint)puVar29[3]; + /* try { // try from 002d38cc to 003d398f has its CatchHandler @ 002d4928 */ + auVar44._0_8_ = (long)(int)(uint)puVar29[4]; + auVar44._8_8_ = (long)(int)(uint)puVar29[5]; + auVar39._0_8_ = (long)(int)(uint)puVar29[6]; + auVar39._8_8_ = (long)(int)(uint)puVar29[7]; + auVar46 = NEON_scvtf(auVar46,8); + auVar41 = NEON_scvtf(auVar41,8); + auVar44 = NEON_scvtf(auVar44,8); + auVar39 = NEON_scvtf(auVar39,8); + pdVar30[1] = auVar46._8_8_ - dVar47; + *pdVar30 = auVar46._0_8_ - dVar47; + pdVar30[3] = auVar41._8_8_ - dVar47; + pdVar30[2] = auVar41._0_8_ - dVar47; + pdVar30[5] = auVar44._8_8_ - dVar47; + pdVar30[4] = auVar44._0_8_ - dVar47; + pdVar30[7] = auVar39._8_8_ - dVar47; + pdVar30[6] = auVar39._0_8_ - dVar47; + puVar29 = puVar29 + 8; + pdVar30 = pdVar30 + 8; + } while (uVar27 < uVar4); + uVar23 = uVar23 + iVar56; + if (iVar56 == iVar11) goto LAB_002d3694; + } + iVar34 = uVar23 + 1; + pdVar16[(int)uVar23] = (double)puVar25[(int)uVar23] - *pdVar19; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 2; + pdVar16[iVar34] = (double)puVar25[iVar34] - *pdVar19; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 3; + pdVar16[iVar24] = (double)puVar25[iVar24] - *pdVar19; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 4; + pdVar16[iVar34] = (double)puVar25[iVar34] - *pdVar19; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 5; + pdVar16[iVar24] = (double)puVar25[iVar24] - *pdVar19; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 6; + /* try { // try from 002d39e8 to 003d39eb has its CatchHandler @ 002d4acc */ + pdVar16[iVar34] = (double)puVar25[iVar34] - *pdVar19; + if (iVar24 < (int)uVar7) { + pdVar16[iVar24] = (double)puVar25[iVar24] - *pdVar19; + } + } + } + } + } + } + } + } + } + else if (0 < (int)uVar7) { + if ((pdVar16 < pdVar19 + 8 && pdVar19 < pdVar16 + 8) || (uVar7 < 0xb)) { + lVar21 = 0; + do { + pdVar16[lVar21] = (double)puVar25[lVar21] - pdVar19[lVar21]; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar7); + } + else { + if (uVar10 != 0) { + *pdVar16 = (double)*puVar25 - *pdVar19; + } + uVar23 = (uint)(uVar10 != 0); + if (6 < uVar12) { + uVar27 = 0; + pdVar30 = (double *)((long)pdVar19 + lVar50); + puVar29 = (ushort *)((long)puVar25 + lVar49); + pdVar36 = (double *)((long)pdVar16 + lVar50); + do { + pdVar32 = pdVar30 + 1; + dVar55 = *pdVar30; + dVar54 = pdVar30[3]; + dVar53 = pdVar30[2]; + dVar52 = pdVar30[5]; + dVar51 = pdVar30[4]; + dVar42 = pdVar30[7]; + dVar47 = pdVar30[6]; + uVar27 = uVar27 + 1; + pdVar30 = pdVar30 + 8; + auVar45._0_8_ = (long)(int)(uint)*puVar29; + auVar45._8_8_ = (long)(int)(uint)puVar29[1]; + auVar40._0_8_ = (long)(int)(uint)puVar29[2]; + auVar40._8_8_ = (long)(int)(uint)puVar29[3]; + auVar43._0_8_ = (long)(int)(uint)puVar29[4]; + auVar43._8_8_ = (long)(int)(uint)puVar29[5]; + auVar38._0_8_ = (long)(int)(uint)puVar29[6]; + auVar38._8_8_ = (long)(int)(uint)puVar29[7]; + auVar46 = NEON_scvtf(auVar45,8); + auVar41 = NEON_scvtf(auVar40,8); + /* try { // try from 002d354c to 003d354f has its CatchHandler @ 002d258c */ + auVar44 = NEON_scvtf(auVar43,8); + auVar39 = NEON_scvtf(auVar38,8); + pdVar36[1] = auVar46._8_8_ - *pdVar32; + *pdVar36 = auVar46._0_8_ - dVar55; + pdVar36[3] = auVar41._8_8_ - dVar54; + pdVar36[2] = auVar41._0_8_ - dVar53; + pdVar36[5] = auVar44._8_8_ - dVar52; + pdVar36[4] = auVar44._0_8_ - dVar51; + pdVar36[7] = auVar39._8_8_ - dVar42; + pdVar36[6] = auVar39._0_8_ - dVar47; + puVar29 = puVar29 + 8; + pdVar36 = pdVar36 + 8; + } while (uVar27 < uVar4); + uVar23 = uVar23 + iVar56; + /* try { // try from 002d3584 to 003d35f7 has its CatchHandler @ 002d4928 */ + if (iVar56 == iVar11) goto LAB_002d3694; + } + iVar34 = uVar23 + 1; + pdVar16[(int)uVar23] = (double)puVar25[(int)uVar23] - pdVar19[(int)uVar23]; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 2; + pdVar16[iVar34] = (double)puVar25[iVar34] - pdVar19[iVar34]; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 3; + pdVar16[iVar24] = (double)puVar25[iVar24] - pdVar19[iVar24]; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 4; + pdVar16[iVar34] = (double)puVar25[iVar34] - pdVar19[iVar34]; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 5; + pdVar16[iVar24] = (double)puVar25[iVar24] - pdVar19[iVar24]; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 6; + /* try { // try from 002d3670 to 003d3673 has its CatchHandler @ 002d4960 */ + pdVar16[iVar34] = (double)puVar25[iVar34] - pdVar19[iVar34]; + if (iVar24 < (int)uVar7) { + pdVar16[iVar24] = (double)puVar25[iVar24] - pdVar19[iVar24]; + } + } + } + } + } + } + } + } +LAB_002d3694: + puVar29 = puVar25 + 1; + pdVar36 = pdVar35; + pdVar30 = pdVar19; + iVar34 = iVar31; + do { + pdVar32 = pdVar30; + if ((int)uVar6 < (int)uVar7) { + local_420 = *pdVar30; + local_428 = local_420; + local_430 = local_420; + local_438 = local_420; + pdVar32 = &local_438; + } + dVar47 = 0.0; + if ((int)uVar7 < 4) { + iVar24 = 0; + } + else { + puVar17 = puVar29; + pdVar26 = pdVar32; + pdVar28 = pdVar16; + do { + puVar22 = puVar17 + 4; + pdVar1 = pdVar26 + 1; + dVar42 = *pdVar26; + /* try { // try from 002d3708 to 003d370b has its CatchHandler @ 002d4a7c */ + pdVar2 = pdVar26 + 2; + pdVar3 = pdVar26 + 3; + pdVar26 = (double *)((long)pdVar26 + lVar18); + /* try { // try from 002d3740 to 003d3743 has its CatchHandler @ 002d4b74 */ + dVar47 = dVar47 + ((double)*puVar17 - *pdVar1) * pdVar28[1] + + ((double)puVar17[-1] - dVar42) * *pdVar28 + + ((double)puVar17[1] - *pdVar2) * pdVar28[2] + + ((double)puVar17[2] - *pdVar3) * pdVar28[3]; + puVar17 = puVar22; + pdVar28 = pdVar28 + 4; + } while (puVar22 != puVar29 + (ulong)uVar9 * 4 + 4); + pdVar32 = (double *)((long)pdVar32 + lVar18 + (ulong)uVar9 * lVar18); + iVar24 = (uVar9 + 1) * 4; + } + if (iVar24 < (int)uVar7) { + lVar21 = 0; + do { + lVar13 = lVar21 + -1; + pdVar26 = pdVar32 + lVar21; + lVar14 = iVar24 + lVar21; + /* try { // try from 002d3790 to 003d37c3 has its CatchHandler @ 002d4928 */ + lVar21 = lVar21 + 1; + dVar47 = dVar47 + ((double)puVar29[iVar24 + lVar13] - *pdVar26) * pdVar16[lVar14]; + } while (lVar21 != (ulong)((uVar7 - 1) - iVar24) + 1); + } + iVar34 = iVar34 + 1; + pdVar30 = pdVar30 + uVar37; + puVar29 = puVar29 + uVar48; + *pdVar36 = dVar47 * param_1; + pdVar36 = pdVar36 + 1; + } while (iVar34 < iVar8); + iVar31 = iVar31 + 1; + pdVar19 = pdVar19 + uVar37; + puVar25 = puVar25 + uVar48; + pdVar35 = pdVar35 + uVar33 + 1; + } while (iVar31 != iVar8); + } + if (bVar15) { + local_418 = pdVar16; + local_410 = uVar20; + operator_delete__(pdVar16); + } + } + return; +} + + +================================================================== + +### FUNC 002d3be8 (2356 bytes) name=FUN_002d3be8 + +void FUN_002d3be8(double param_1,long param_2,long param_3,long param_4) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + uint uVar4; + short *psVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + int iVar11; + uint uVar12; + long lVar13; + long lVar14; + bool bVar15; + double *pdVar16; + short *psVar17; + long lVar18; + double *pdVar19; + ulong uVar20; + long lVar21; + short *psVar22; + uint uVar23; + int iVar24; + short *psVar25; + double *pdVar26; + uint uVar27; + double *pdVar28; + short *psVar29; + double *pdVar30; + int iVar31; + double *pdVar32; + ulong uVar33; + int iVar34; + double *pdVar35; + double *pdVar36; + ulong uVar37; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + double dVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + double dVar47; + ulong uVar48; + long lVar49; + long lVar50; + double dVar51; + double dVar52; + double dVar53; + double dVar54; + double dVar55; + int iVar56; + double local_438; + double local_430; + double local_428; + double local_420; + double *local_418; + ulong local_410; + double adStack_408 [129]; + + /* try { // try from 002d3bfc to 003d3bff has its CatchHandler @ 002d4c38 */ + /* try { // try from 002d3c04 to 003d3c07 has its CatchHandler @ 002d4c60 */ + /* try { // try from 002d3c0c to 003d3c0f has its CatchHandler @ 002d4928 */ + pdVar35 = *(double **)(param_3 + 0x10); + uVar33 = *(ulong *)(param_3 + 0x50) >> 3; + psVar25 = *(short **)(param_2 + 0x10); + pdVar19 = *(double **)(param_4 + 0x10); + uVar48 = *(ulong *)(param_2 + 0x50) >> 1; + if (*(int *)(param_4 + 8) < 2) { + /* try { // try from 002d43a8 to 003d43bf has its CatchHandler @ 002d4928 */ + uVar37 = 0; + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + iVar8 = **(int **)(param_2 + 0x40); + } + else { + uVar6 = *(uint *)(param_4 + 0xc); + uVar7 = (*(int **)(param_2 + 0x40))[1]; + uVar37 = *(ulong *)(param_4 + 0x50) >> 3; + iVar8 = **(int **)(param_2 + 0x40); + } + if (pdVar19 == (double *)0x0) { + if (0 < iVar8) { + uVar10 = uVar7 - 4 >> 2; + /* try { // try from 002d43d8 to 003d43db has its CatchHandler @ 002d4b98 */ + uVar6 = (uVar10 + 1) * 4; + if ((int)(uVar7 - 3) < 1) { + uVar6 = 0; + } + iVar31 = 0; + uVar37 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + do { + psVar29 = psVar25 + 1; + /* try { // try from 002d4424 to 003d4427 has its CatchHandler @ 002d4c68 */ + pdVar19 = pdVar35; + iVar11 = iVar31; + do { + /* try { // try from 002d442c to 003d442f has its CatchHandler @ 002d4b98 */ + dVar47 = 0.0; + if (0 < (int)(uVar7 - 3)) { + psVar17 = psVar29; + psVar22 = psVar25; + do { + /* try { // try from 002d4450 to 003d4453 has its CatchHandler @ 002d4c60 */ + psVar5 = psVar17 + 4; + /* try { // try from 002d446c to 003d446f has its CatchHandler @ 002d4b2c */ + dVar47 = dVar47 + (double)(int)psVar22[1] * (double)(int)*psVar17 + + (double)(int)psVar17[-1] * (double)(int)*psVar22 + + (double)(int)psVar17[1] * (double)(int)psVar22[2] + + (double)(int)psVar17[2] * (double)(int)psVar22[3]; + psVar17 = psVar5; + psVar22 = psVar22 + 4; + } while (psVar5 != psVar29 + (ulong)uVar10 * 4 + 4); + } + if ((int)uVar6 < (int)uVar7) { + /* try { // try from 002d44b8 to 003d44bb has its CatchHandler @ 002d4afc */ + lVar18 = 0; + do { + lVar49 = lVar18 + uVar37; + lVar50 = lVar18 + (uVar37 - 2); + /* try { // try from 002d44c0 to 003d44c3 has its CatchHandler @ 002d4b2c */ + lVar18 = lVar18 + 2; + dVar47 = dVar47 + (double)(int)*(short *)((long)psVar29 + lVar50) * + (double)(int)*(short *)((long)psVar25 + lVar49); + } while (lVar18 != ((ulong)((uVar7 - 1) - uVar6) + 1) * 2); + } + iVar11 = iVar11 + 1; + /* try { // try from 002d44e4 to 003d44e7 has its CatchHandler @ 002d4b44 */ + psVar29 = psVar29 + uVar48; + *pdVar19 = dVar47 * param_1; + pdVar19 = pdVar19 + 1; + } while (iVar11 < iVar8); + /* try { // try from 002d44f4 to 003d44f7 has its CatchHandler @ 002d4c78 */ + iVar31 = iVar31 + 1; + pdVar35 = pdVar35 + uVar33 + 1; + psVar25 = psVar25 + uVar48; + } while (iVar31 != iVar8); + } + } + else { + /* try { // try from 002d3c6c to 003d3c6f has its CatchHandler @ 002d4cc0 */ + uVar20 = -(ulong)(uVar7 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar7 << 3; + pdVar16 = adStack_408; + lVar18 = 0x20; + if (uVar6 != uVar7) { + lVar18 = 0; + } + local_418 = pdVar16; + local_410 = 0x408; + if (uVar20 < 0x409) { + local_410 = uVar20; + /* try { // try from 002d4510 to 003d4513 has its CatchHandler @ 002d49f0 */ + bVar15 = false; + } + else { + local_418 = operator_new__(uVar20); + bVar15 = local_418 != pdVar16; + local_410 = uVar20; + /* try { // try from 002d3cb8 to 003d3cbb has its CatchHandler @ 002d4c90 */ + pdVar16 = local_418; + } + /* try { // try from 002d3cc0 to 003d3cc3 has its CatchHandler @ 002d4cc0 */ + if (0 < iVar8) { + /* try { // try from 002d3ccc to 003d3ccf has its CatchHandler @ 002d4928 */ + uVar10 = (uint)((ulong)pdVar16 >> 3) & 1; + if (uVar7 < uVar10) { + uVar10 = uVar7; + } + uVar9 = uVar7 - 4 >> 2; + iVar11 = uVar7 - uVar10; + iVar31 = 0; + uVar4 = (iVar11 - 8U >> 3) + 1; + lVar50 = NEON_shl((ulong)uVar10,3); + /* try { // try from 002d3d54 to 003d3d9f has its CatchHandler @ 002d4814 */ + lVar49 = NEON_shl((ulong)uVar10,1); + iVar56 = uVar4 * 8; + uVar12 = (uVar7 - 1) - uVar10; + do { + if ((int)uVar6 < (int)uVar7) { + if (0 < (int)uVar7) { + if ((pdVar16 < pdVar19 + 1 && pdVar19 < pdVar16 + uVar7) || (uVar7 < 0xc)) { + /* try { // try from 002d4354 to 003d4357 has its CatchHandler @ 002d4af4 */ + lVar21 = 0; + do { + pdVar16[lVar21] = (double)(int)psVar25[lVar21] - *pdVar19; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar7); + } + else { + if (uVar10 != 0) { + /* try { // try from 002d41a0 to 003d41a3 has its CatchHandler @ 002d4a2c */ + *pdVar16 = (double)(int)*psVar25 - *pdVar19; + } + /* try { // try from 002d41a8 to 003d41b3 has its CatchHandler @ 002d4c78 */ + uVar23 = (uint)(uVar10 != 0); + if (6 < uVar12) { + dVar47 = *pdVar19; + /* try { // try from 002d41bc to 003d41bf has its CatchHandler @ 002d4af4 */ + uVar27 = 0; + psVar29 = (short *)((long)psVar25 + lVar49); + pdVar30 = (double *)((long)pdVar16 + lVar50); + do { + uVar27 = uVar27 + 1; + auVar46._0_8_ = (long)(int)*psVar29; + auVar46._8_8_ = (long)(int)psVar29[1]; + auVar41._0_8_ = (long)(int)psVar29[2]; + auVar41._8_8_ = (long)(int)psVar29[3]; + auVar44._0_8_ = (long)(int)psVar29[4]; + auVar44._8_8_ = (long)(int)psVar29[5]; + auVar39._0_8_ = (long)(int)psVar29[6]; + auVar39._8_8_ = (long)(int)psVar29[7]; + auVar46 = NEON_scvtf(auVar46,8); + auVar41 = NEON_scvtf(auVar41,8); + auVar44 = NEON_scvtf(auVar44,8); + auVar39 = NEON_scvtf(auVar39,8); + pdVar30[1] = auVar46._8_8_ - dVar47; + *pdVar30 = auVar46._0_8_ - dVar47; + pdVar30[3] = auVar41._8_8_ - dVar47; + pdVar30[2] = auVar41._0_8_ - dVar47; + pdVar30[5] = auVar44._8_8_ - dVar47; + pdVar30[4] = auVar44._0_8_ - dVar47; + pdVar30[7] = auVar39._8_8_ - dVar47; + pdVar30[6] = auVar39._0_8_ - dVar47; + psVar29 = psVar29 + 8; + pdVar30 = pdVar30 + 8; + } while (uVar27 < uVar4); + uVar23 = uVar23 + iVar56; + if (iVar56 == iVar11) goto LAB_002d3fc8; + } + iVar34 = uVar23 + 1; + pdVar16[(int)uVar23] = (double)(int)psVar25[(int)uVar23] - *pdVar19; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 2; + /* try { // try from 002d428c to 003d42ff has its CatchHandler @ 002d4c30 */ + pdVar16[iVar34] = (double)(int)psVar25[iVar34] - *pdVar19; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 3; + pdVar16[iVar24] = (double)(int)psVar25[iVar24] - *pdVar19; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 4; + pdVar16[iVar34] = (double)(int)psVar25[iVar34] - *pdVar19; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 5; + pdVar16[iVar24] = (double)(int)psVar25[iVar24] - *pdVar19; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 6; + pdVar16[iVar34] = (double)(int)psVar25[iVar34] - *pdVar19; + if (iVar24 < (int)uVar7) { + /* try { // try from 002d432c to 003d432f has its CatchHandler @ 002d485c */ + /* try { // try from 002d4334 to 003d4337 has its CatchHandler @ 002d4c30 */ + pdVar16[iVar24] = (double)(int)psVar25[iVar24] - *pdVar19; + } + } + } + } + } + } + } + } + } + else if (0 < (int)uVar7) { + if ((pdVar16 < pdVar19 + 8 && pdVar19 < pdVar16 + 8) || (uVar7 < 0xc)) { + lVar21 = 0; + do { + pdVar16[lVar21] = (double)(int)psVar25[lVar21] - pdVar19[lVar21]; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar7); + } + else { + /* try { // try from 002d3dcc to 003d3dcf has its CatchHandler @ 002d49b0 */ + if (uVar10 != 0) { + /* try { // try from 002d3dd4 to 003d3dd7 has its CatchHandler @ 002d4814 */ + *pdVar16 = (double)(int)*psVar25 - *pdVar19; + } + uVar23 = (uint)(uVar10 != 0); + if (6 < uVar12) { + /* try { // try from 002d3df4 to 003d3e57 has its CatchHandler @ 002d4928 */ + uVar27 = 0; + pdVar30 = (double *)((long)pdVar19 + lVar50); + psVar29 = (short *)((long)psVar25 + lVar49); + pdVar36 = (double *)((long)pdVar16 + lVar50); + do { + pdVar32 = pdVar30 + 1; + dVar55 = *pdVar30; + dVar54 = pdVar30[3]; + dVar53 = pdVar30[2]; + dVar52 = pdVar30[5]; + dVar51 = pdVar30[4]; + dVar42 = pdVar30[7]; + dVar47 = pdVar30[6]; + uVar27 = uVar27 + 1; + pdVar30 = pdVar30 + 8; + auVar45._0_8_ = (long)(int)*psVar29; + auVar45._8_8_ = (long)(int)psVar29[1]; + auVar40._0_8_ = (long)(int)psVar29[2]; + auVar40._8_8_ = (long)(int)psVar29[3]; + auVar43._0_8_ = (long)(int)psVar29[4]; + auVar43._8_8_ = (long)(int)psVar29[5]; + auVar38._0_8_ = (long)(int)psVar29[6]; + auVar38._8_8_ = (long)(int)psVar29[7]; + auVar46 = NEON_scvtf(auVar45,8); + auVar41 = NEON_scvtf(auVar40,8); + auVar44 = NEON_scvtf(auVar43,8); + auVar39 = NEON_scvtf(auVar38,8); + pdVar36[1] = auVar46._8_8_ - *pdVar32; + *pdVar36 = auVar46._0_8_ - dVar55; + pdVar36[3] = auVar41._8_8_ - dVar54; + pdVar36[2] = auVar41._0_8_ - dVar53; + pdVar36[5] = auVar44._8_8_ - dVar52; + pdVar36[4] = auVar44._0_8_ - dVar51; + pdVar36[7] = auVar39._8_8_ - dVar42; + pdVar36[6] = auVar39._0_8_ - dVar47; + psVar29 = psVar29 + 8; + pdVar36 = pdVar36 + 8; + } while (uVar27 < uVar4); + uVar23 = uVar23 + iVar56; + /* try { // try from 002d3eb8 to 003d3ebb has its CatchHandler @ 002d4c28 */ + if (iVar56 == iVar11) goto LAB_002d3fc8; + } + iVar34 = uVar23 + 1; + /* try { // try from 002d3ec4 to 003d3ec7 has its CatchHandler @ 002d4928 */ + pdVar16[(int)uVar23] = (double)(int)psVar25[(int)uVar23] - pdVar19[(int)uVar23]; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 2; + pdVar16[iVar34] = (double)(int)psVar25[iVar34] - pdVar19[iVar34]; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 3; + pdVar16[iVar24] = (double)(int)psVar25[iVar24] - pdVar19[iVar24]; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 4; + /* try { // try from 002d3f4c to 003d3f9b has its CatchHandler @ 002d4cd0 */ + pdVar16[iVar34] = (double)(int)psVar25[iVar34] - pdVar19[iVar34]; + if (iVar24 < (int)uVar7) { + iVar34 = uVar23 + 5; + pdVar16[iVar24] = (double)(int)psVar25[iVar24] - pdVar19[iVar24]; + if (iVar34 < (int)uVar7) { + iVar24 = uVar23 + 6; + pdVar16[iVar34] = (double)(int)psVar25[iVar34] - pdVar19[iVar34]; + if (iVar24 < (int)uVar7) { + pdVar16[iVar24] = (double)(int)psVar25[iVar24] - pdVar19[iVar24]; + } + } + } + } + } + } + } + } +LAB_002d3fc8: + /* try { // try from 002d3fc8 to 003d3fcb has its CatchHandler @ 002d4cf0 */ + psVar29 = psVar25 + 1; + /* try { // try from 002d3fd0 to 003d3fd3 has its CatchHandler @ 002d4cd0 */ + pdVar36 = pdVar35; + pdVar30 = pdVar19; + iVar34 = iVar31; + do { + pdVar32 = pdVar30; + if ((int)uVar6 < (int)uVar7) { + local_420 = *pdVar30; + /* try { // try from 002d3ff0 to 003d3ff3 has its CatchHandler @ 002d4928 */ + local_428 = local_420; + local_430 = local_420; + local_438 = local_420; + pdVar32 = &local_438; + } + dVar47 = 0.0; + if ((int)uVar7 < 4) { + iVar24 = 0; + } + else { + psVar17 = psVar29; + pdVar26 = pdVar32; + pdVar28 = pdVar16; + do { + psVar22 = psVar17 + 4; + pdVar1 = pdVar26 + 1; + dVar42 = *pdVar26; + pdVar2 = pdVar26 + 2; + pdVar3 = pdVar26 + 3; + pdVar26 = (double *)((long)pdVar26 + lVar18); + dVar47 = dVar47 + ((double)(int)*psVar17 - *pdVar1) * pdVar28[1] + + ((double)(int)psVar17[-1] - dVar42) * *pdVar28 + + ((double)(int)psVar17[1] - *pdVar2) * pdVar28[2] + + ((double)(int)psVar17[2] - *pdVar3) * pdVar28[3]; + psVar17 = psVar22; + pdVar28 = pdVar28 + 4; + } while (psVar22 != psVar29 + (ulong)uVar9 * 4 + 4); + pdVar32 = (double *)((long)pdVar32 + lVar18 + (ulong)uVar9 * lVar18); + iVar24 = (uVar9 + 1) * 4; + } + if (iVar24 < (int)uVar7) { + /* try { // try from 002d40ac to 003d4157 has its CatchHandler @ 002d4c78 */ + lVar21 = 0; + do { + lVar13 = lVar21 + -1; + pdVar26 = pdVar32 + lVar21; + lVar14 = iVar24 + lVar21; + lVar21 = lVar21 + 1; + dVar47 = dVar47 + ((double)(int)psVar29[iVar24 + lVar13] - *pdVar26) * pdVar16[lVar14] + ; + } while (lVar21 != (ulong)((uVar7 - 1) - iVar24) + 1); + } + iVar34 = iVar34 + 1; + pdVar30 = pdVar30 + uVar37; + psVar29 = psVar29 + uVar48; + *pdVar36 = dVar47 * param_1; + pdVar36 = pdVar36 + 1; + } while (iVar34 < iVar8); + iVar31 = iVar31 + 1; + pdVar19 = pdVar19 + uVar37; + psVar25 = psVar25 + uVar48; + pdVar35 = pdVar35 + uVar33 + 1; + } while (iVar31 != iVar8); + } + if (bVar15) { + local_418 = pdVar16; + local_410 = uVar20; + operator_delete__(pdVar16); + } + } + return; +} + + +================================================================== + +### FUNC 002d451c (2432 bytes) name=FUN_002d451c + +void FUN_002d451c(double param_1,long param_2,long param_3,long param_4) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + uint uVar4; + undefined8 *puVar5; + short *psVar6; + uint uVar7; + uint uVar8; + uint uVar9; + int iVar10; + uint uVar11; + int iVar12; + uint uVar13; + undefined8 *puVar14; + undefined8 *puVar15; + long lVar16; + long lVar17; + bool bVar18; + float *pfVar19; + short *psVar20; + long lVar21; + float *pfVar22; + ulong uVar23; + undefined8 *puVar24; + short *psVar25; + uint uVar26; + long lVar27; + int iVar28; + short *psVar29; + short *psVar30; + uint uVar31; + float *pfVar32; + undefined8 *puVar33; + float *pfVar34; + int iVar35; + float *pfVar36; + float *pfVar37; + int iVar38; + float *pfVar39; + ulong uVar40; + ulong uVar41; + float *pfVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + float fVar51; + undefined8 uVar52; + double dVar53; + ulong uVar54; + long lVar55; + int iVar56; + long lVar57; + float local_428; + float local_424; + float local_420; + float local_41c; + float *local_418; + ulong local_410; + float afStack_408 [258]; + + pfVar39 = *(float **)(param_3 + 0x10); + /* try { // try from 002d455c to 003d455f has its CatchHandler @ 002d49c0 */ + uVar40 = *(ulong *)(param_3 + 0x50) >> 2; + psVar29 = *(short **)(param_2 + 0x10); + /* try { // try from 002d4564 to 003d4567 has its CatchHandler @ 002d49f0 */ + pfVar22 = *(float **)(param_4 + 0x10); + uVar54 = *(ulong *)(param_2 + 0x50) >> 1; + if (*(int *)(param_4 + 8) < 2) { + uVar41 = 0; + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + } + else { + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + /* try { // try from 002d4588 to 003d458b has its CatchHandler @ 002d4814 */ + uVar41 = *(ulong *)(param_4 + 0x50) >> 2; + iVar10 = **(int **)(param_2 + 0x40); + } + if (pfVar22 == (float *)0x0) { + if (0 < iVar10) { + uVar7 = uVar9 - 4 >> 2; + uVar8 = (uVar7 + 1) * 4; + if ((int)(uVar9 - 3) < 1) { + uVar8 = 0; + } + iVar38 = 0; + uVar41 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + do { + psVar30 = psVar29 + 1; + pfVar22 = pfVar39; + iVar12 = iVar38; + do { + dVar53 = 0.0; + if (0 < (int)(uVar9 - 3)) { + psVar20 = psVar30; + psVar25 = psVar29; + do { + psVar6 = psVar20 + 4; + dVar53 = dVar53 + (double)(int)psVar25[1] * (double)(int)*psVar20 + + (double)(int)psVar20[-1] * (double)(int)*psVar25 + + (double)(int)psVar20[1] * (double)(int)psVar25[2] + + (double)(int)psVar20[2] * (double)(int)psVar25[3]; + psVar20 = psVar6; + psVar25 = psVar25 + 4; + } while (psVar6 != psVar30 + (ulong)uVar7 * 4 + 4); + } + if ((int)uVar8 < (int)uVar9) { + lVar21 = 0; + do { + lVar55 = lVar21 + uVar41; + lVar57 = lVar21 + (uVar41 - 2); + lVar21 = lVar21 + 2; + dVar53 = dVar53 + (double)(int)*(short *)((long)psVar30 + lVar57) * + (double)(int)*(short *)((long)psVar29 + lVar55); + } while (lVar21 != ((ulong)((uVar9 - 1) - uVar8) + 1) * 2); + } + iVar12 = iVar12 + 1; + psVar30 = psVar30 + uVar54; + *pfVar22 = (float)(dVar53 * param_1); + pfVar22 = pfVar22 + 1; + } while (iVar12 < iVar10); + iVar38 = iVar38 + 1; + pfVar39 = pfVar39 + uVar40 + 1; + psVar29 = psVar29 + uVar54; + } while (iVar38 != iVar10); + } + } + else { + /* try { // try from 002d45a4 to 003d45a7 has its CatchHandler @ 002d4c18 */ + uVar23 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar9 << 2; + pfVar19 = afStack_408; + lVar21 = 0x10; + if (uVar8 != uVar9) { + lVar21 = 0; + } + local_418 = pfVar19; + local_410 = 0x408; + if (uVar23 < 0x409) { + local_410 = uVar23; + bVar18 = false; + } + else { + local_418 = operator_new__(uVar23); + bVar18 = local_418 != pfVar19; + local_410 = uVar23; + /* try { // try from 002d45f0 to 003d45f3 has its CatchHandler @ 002d4c00 */ + pfVar19 = local_418; + } + /* try { // try from 002d45f8 to 003d45fb has its CatchHandler @ 002d4c18 */ + if (0 < iVar10) { + uVar7 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + /* try { // try from 002d461c to 003d461f has its CatchHandler @ 002d4cc8 */ + if (uVar9 < uVar7) { + uVar7 = uVar9; + } + uVar11 = uVar9 - 4 >> 2; + iVar38 = 0; + /* try { // try from 002d4640 to 003d4643 has its CatchHandler @ 002d4cd0 */ + /* try { // try from 002d4664 to 003d4667 has its CatchHandler @ 002d4930 */ + iVar12 = uVar9 - uVar7; + lVar57 = NEON_shl((ulong)uVar7,2); + uVar13 = (uVar9 - 1) - uVar7; + lVar55 = NEON_shl((ulong)uVar7,1); + uVar4 = (iVar12 - 8U >> 3) + 1; + /* try { // try from 002d469c to 003d469f has its CatchHandler @ 002d4ad4 */ + iVar56 = uVar4 * 8; + do { + /* try { // try from 002d46c0 to 003d46c3 has its CatchHandler @ 002d4c30 */ + if ((int)uVar8 < (int)uVar9) { + if (0 < (int)uVar9) { + /* catch() { ... } // from try @ 002d3390 with catch @ 002d4acc + catch() { ... } // from try @ 002d39e8 with catch @ 002d4acc + catch() { ... } // from try @ 002d3a3c with catch @ 002d4acc */ + /* catch() { ... } // from try @ 002d2aec with catch @ 002d4ad4 + catch() { ... } // from try @ 002d2b68 with catch @ 002d4ad4 + catch() { ... } // from try @ 002d469c with catch @ 002d4ad4 */ + if ((pfVar19 < pfVar22 + 1 && pfVar22 < pfVar19 + uVar9) || (uVar9 < 0xb)) { + lVar27 = 0; + do { + /* catch() { ... } // from try @ 002d2f2c with catch @ 002d4cc8 + catch() { ... } // from try @ 002d2fa8 with catch @ 002d4cc8 + catch() { ... } // from try @ 002d461c with catch @ 002d4cc8 */ + /* catch() { ... } // from try @ 002d3f4c with catch @ 002d4cd0 + catch() { ... } // from try @ 002d3fd0 with catch @ 002d4cd0 + catch() { ... } // from try @ 002d4640 with catch @ 002d4cd0 */ + pfVar19[lVar27] = (float)(int)psVar29[lVar27] - *pfVar22; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar9); + } + else { + uVar26 = uVar7; + /* catch() { ... } // from try @ 002d41bc with catch @ 002d4af4 + catch() { ... } // from try @ 002d4354 with catch @ 002d4af4 + catch() { ... } // from try @ 002d4804 with catch @ 002d4af4 */ + /* catch() { ... } // from try @ 002d44b8 with catch @ 002d4afc */ + if ((uVar7 != 0) && (*pfVar19 = (float)(int)*psVar29 - *pfVar22, uVar7 != 1)) { + pfVar19[1] = (float)(int)psVar29[1] - *pfVar22; + /* catch() { ... } // from try @ 002d446c with catch @ 002d4b2c + catch() { ... } // from try @ 002d44c0 with catch @ 002d4b2c */ + if (uVar7 == 3) { + /* catch() { ... } // from try @ 002d2b60 with catch @ 002d4b34 */ + /* catch() { ... } // from try @ 002d2974 with catch @ 002d4b44 + catch() { ... } // from try @ 002d29f0 with catch @ 002d4b44 + catch() { ... } // from try @ 002d44e4 with catch @ 002d4b44 */ + pfVar19[2] = (float)(int)psVar29[2] - *pfVar22; + } + else { + uVar26 = 2; + } + } + /* catch() { ... } // from try @ 002d2860 with catch @ 002d4b4c */ + if (6 < uVar13) { + fVar51 = *pfVar22; + uVar31 = 0; + psVar30 = (short *)((long)psVar29 + lVar55); + puVar24 = (undefined8 *)((long)pfVar19 + lVar57); + do { + /* catch() { ... } // from try @ 002d3740 with catch @ 002d4b74 + catch() { ... } // from try @ 002d480c with catch @ 002d4b74 */ + uVar31 = uVar31 + 1; + auVar49._0_4_ = (int)*psVar30; + auVar49._4_4_ = (int)psVar30[1]; + auVar49._8_4_ = (int)psVar30[2]; + auVar49._12_4_ = (int)psVar30[3]; + auVar44._0_4_ = (int)psVar30[4]; + auVar44._4_4_ = (int)psVar30[5]; + auVar44._8_4_ = (int)psVar30[6]; + auVar44._12_4_ = (int)psVar30[7]; + auVar47 = NEON_scvtf(auVar49,4); + auVar44 = NEON_scvtf(auVar44,4); + /* catch() { ... } // from try @ 002d2d74 with catch @ 002d4b98 + catch() { ... } // from try @ 002d43d8 with catch @ 002d4b98 + catch() { ... } // from try @ 002d442c with catch @ 002d4b98 */ + auVar50._0_8_ = CONCAT44(auVar47._4_4_ - fVar51,auVar47._0_4_ - fVar51); + auVar50._8_4_ = auVar47._8_4_ - fVar51; + auVar50._12_4_ = auVar47._12_4_ - fVar51; + auVar47._0_8_ = CONCAT44(auVar44._4_4_ - fVar51,auVar44._0_4_ - fVar51); + auVar47._8_4_ = auVar44._8_4_ - fVar51; + auVar47._12_4_ = auVar44._12_4_ - fVar51; + puVar24[1] = auVar50._8_8_; + *puVar24 = auVar50._0_8_; + puVar24[3] = auVar47._8_8_; + puVar24[2] = auVar47._0_8_; + psVar30 = psVar30 + 8; + puVar24 = puVar24 + 4; + } while (uVar31 < uVar4); + uVar26 = uVar26 + iVar56; + /* catch() { ... } // from try @ 002d26d4 with catch @ 002d4bbc */ + if (iVar56 == iVar12) goto LAB_002d4900; + } + iVar35 = uVar26 + 1; + /* catch() { ... } // from try @ 002d2e14 with catch @ 002d4bcc */ + pfVar19[(int)uVar26] = (float)(int)psVar29[(int)uVar26] - *pfVar22; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 2; + /* catch() { ... } // from try @ 002d2de4 with catch @ 002d4bf8 + catch() { ... } // from try @ 002d2e1c with catch @ 002d4bf8 */ + /* catch() { ... } // from try @ 002d45f0 with catch @ 002d4c00 */ + pfVar19[iVar35] = (float)(int)psVar29[iVar35] - *pfVar22; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 3; + /* catch() { ... } // from try @ 002d45a4 with catch @ 002d4c18 + catch() { ... } // from try @ 002d45f8 with catch @ 002d4c18 */ + /* catch() { ... } // from try @ 002d2db4 with catch @ 002d4c20 */ + pfVar19[iVar28] = (float)(int)psVar29[iVar28] - *pfVar22; + /* catch() { ... } // from try @ 002d27ec with catch @ 002d4c28 + catch() { ... } // from try @ 002d2868 with catch @ 002d4c28 + catch() { ... } // from try @ 002d3eb8 with catch @ 002d4c28 */ + if (iVar35 < (int)uVar9) { + /* catch() { ... } // from try @ 002d428c with catch @ 002d4c30 + catch() { ... } // from try @ 002d4334 with catch @ 002d4c30 + catch() { ... } // from try @ 002d46c0 with catch @ 002d4c30 */ + iVar28 = uVar26 + 4; + /* catch() { ... } // from try @ 002d3bfc with catch @ 002d4c38 */ + pfVar19[iVar35] = (float)(int)psVar29[iVar35] - *pfVar22; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 5; + /* catch() { ... } // from try @ 002d3b84 with catch @ 002d4c60 + catch() { ... } // from try @ 002d3c04 with catch @ 002d4c60 + catch() { ... } // from try @ 002d4450 with catch @ 002d4c60 */ + /* catch() { ... } // from try @ 002d4424 with catch @ 002d4c68 */ + pfVar19[iVar28] = (float)(int)psVar29[iVar28] - *pfVar22; + if (iVar35 < (int)uVar9) { + /* catch() { ... } // from try @ 002d40ac with catch @ 002d4c78 + catch() { ... } // from try @ 002d41a8 with catch @ 002d4c78 + catch() { ... } // from try @ 002d44f4 with catch @ 002d4c78 */ + iVar28 = uVar26 + 6; + /* catch() { ... } // from try @ 002d3290 with catch @ 002d4c80 */ + /* catch() { ... } // from try @ 002d3cb8 with catch @ 002d4c90 */ + pfVar19[iVar35] = (float)(int)psVar29[iVar35] - *pfVar22; + if (iVar28 < (int)uVar9) { + pfVar19[iVar28] = (float)(int)psVar29[iVar28] - *pfVar22; + } + } + } + } + } + } + } + } + } + else if (0 < (int)uVar9) { + /* try { // try from 002d46f0 to 003d46f3 has its CatchHandler @ 002d4a7c */ + if ((pfVar19 < pfVar22 + 8 && pfVar22 < pfVar19 + 8) || (uVar9 < 0xb)) { + lVar27 = 0; + do { + /* catch() { ... } // from try @ 002d3fc8 with catch @ 002d4cf0 */ + /* catch() { ... } // from try @ 002d473c with catch @ 002d4d00 */ + pfVar19[lVar27] = (float)(int)psVar29[lVar27] - pfVar22[lVar27]; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar9); + } + else { + uVar26 = uVar7; + if ((uVar7 != 0) && (*pfVar19 = (float)(int)*psVar29 - *pfVar22, uVar7 != 1)) { + /* try { // try from 002d473c to 003d473f has its CatchHandler @ 002d4d00 */ + pfVar19[1] = (float)(int)psVar29[1] - pfVar22[1]; + /* try { // try from 002d4744 to 003d4747 has its CatchHandler @ 002d4a7c */ + if (uVar7 == 3) { + pfVar19[2] = (float)(int)psVar29[2] - pfVar22[2]; + } + else { + uVar26 = 2; + } + } + if (6 < uVar13) { + uVar31 = 0; + puVar24 = (undefined8 *)((long)pfVar22 + lVar57); + psVar30 = (short *)((long)psVar29 + lVar55); + puVar33 = (undefined8 *)((long)pfVar19 + lVar57); + do { + puVar5 = puVar24 + 2; + puVar15 = puVar24 + 1; + uVar52 = *puVar24; + puVar14 = puVar24 + 3; + uVar31 = uVar31 + 1; + puVar24 = puVar24 + 4; + auVar46._0_4_ = (int)*psVar30; + auVar46._4_4_ = (int)psVar30[1]; + auVar46._8_4_ = (int)psVar30[2]; + auVar46._12_4_ = (int)psVar30[3]; + auVar43._0_4_ = (int)psVar30[4]; + auVar43._4_4_ = (int)psVar30[5]; + auVar43._8_4_ = (int)psVar30[6]; + auVar43._12_4_ = (int)psVar30[7]; + auVar47 = NEON_scvtf(auVar46,4); + auVar44 = NEON_scvtf(auVar43,4); + auVar48._0_8_ = + CONCAT44(auVar47._4_4_ - (float)((ulong)uVar52 >> 0x20), + auVar47._0_4_ - (float)uVar52); + auVar48._8_4_ = auVar47._8_4_ - (float)*puVar15; + auVar48._12_4_ = auVar47._12_4_ - (float)((ulong)*puVar15 >> 0x20); + auVar45._0_8_ = + CONCAT44(auVar44._4_4_ - (float)((ulong)*puVar5 >> 0x20), + auVar44._0_4_ - (float)*puVar5); + auVar45._8_4_ = auVar44._8_4_ - (float)*puVar14; + auVar45._12_4_ = auVar44._12_4_ - (float)((ulong)*puVar14 >> 0x20); + puVar33[1] = auVar48._8_8_; + *puVar33 = auVar48._0_8_; + puVar33[3] = auVar45._8_8_; + puVar33[2] = auVar45._0_8_; + psVar30 = psVar30 + 8; + puVar33 = puVar33 + 4; + } while (uVar31 < uVar4); + uVar26 = uVar26 + iVar56; + if (iVar56 == iVar12) goto LAB_002d4900; + } + iVar35 = uVar26 + 1; + /* try { // try from 002d47fc to 003d47ff has its CatchHandler @ 002d4a58 */ + /* try { // try from 002d4804 to 003d4807 has its CatchHandler @ 002d4af4 */ + /* try { // try from 002d480c to 003d480f has its CatchHandler @ 002d4b74 */ + /* catch() { ... } // from try @ 002d3d54 with catch @ 002d4814 + catch() { ... } // from try @ 002d3dd4 with catch @ 002d4814 + catch() { ... } // from try @ 002d4588 with catch @ 002d4814 */ + pfVar19[(int)uVar26] = (float)(int)psVar29[(int)uVar26] - pfVar22[(int)uVar26]; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 2; + pfVar19[iVar35] = (float)(int)psVar29[iVar35] - pfVar22[iVar35]; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 3; + /* try { // try from 002d4858 to 003d485b has its CatchHandler @ 002d258c */ + /* catch() { ... } // from try @ 002d432c with catch @ 002d485c */ + pfVar19[iVar28] = (float)(int)psVar29[iVar28] - pfVar22[iVar28]; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 4; + pfVar19[iVar35] = (float)(int)psVar29[iVar35] - pfVar22[iVar35]; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 5; + pfVar19[iVar28] = (float)(int)psVar29[iVar28] - pfVar22[iVar28]; + if (iVar35 < (int)uVar9) { + /* catch() { ... } // from try @ 002d2fa0 with catch @ 002d48c0 */ + iVar28 = uVar26 + 6; + pfVar19[iVar35] = (float)(int)psVar29[iVar35] - pfVar22[iVar35]; + if (iVar28 < (int)uVar9) { + /* catch() { ... } // from try @ 002d3104 with catch @ 002d48f0 */ + pfVar19[iVar28] = (float)(int)psVar29[iVar28] - pfVar22[iVar28]; + } + } + } + } + } + } + } + } +LAB_002d4900: + psVar30 = psVar29 + 1; + pfVar34 = pfVar22; + pfVar42 = pfVar39; + iVar35 = iVar38; + do { + /* catch() { ... } // from try @ 002d2668 with catch @ 002d4918 */ + pfVar32 = pfVar34; + if ((int)uVar8 < (int)uVar9) { + local_41c = *pfVar34; + /* catch() { ... } // from try @ 002d2638 with catch @ 002d4928 + catch() { ... } // from try @ 002d2670 with catch @ 002d4928 + catch() { ... } // from try @ 002d26dc with catch @ 002d4928 + catch() { ... } // from try @ 002d2764 with catch @ 002d4928 + catch() { ... } // from try @ 002d2888 with catch @ 002d4928 + catch() { ... } // from try @ 002d29f8 with catch @ 002d4928 + catch() { ... } // from try @ 002d2b70 with catch @ 002d4928 + catch() { ... } // from try @ 002d2e78 with catch @ 002d4928 + catch() { ... } // from try @ 002d2fb0 with catch @ 002d4928 + catch() { ... } // from try @ 002d3114 with catch @ 002d4928 + catch() { ... } // from try @ 002d32a0 with catch @ 002d4928 + catch() { ... } // from try @ 002d342c with catch @ 002d4928 + catch() { ... } // from try @ 002d3584 with catch @ 002d4928 + catch() { ... } // from try @ 002d3790 with catch @ 002d4928 + catch() { ... } // from try @ 002d38cc with catch @ 002d4928 + catch() { ... } // from try @ 002d3a74 with catch @ 002d4928 + catch() { ... } // from try @ 002d3b00 with catch @ 002d4928 + catch() { ... } // from try @ 002d3c0c with catch @ 002d4928 + catch() { ... } // from try @ 002d3ccc with catch @ 002d4928 + catch() { ... } // from try @ 002d3df4 with catch @ 002d4928 + catch() { ... } // from try @ 002d3ec4 with catch @ 002d4928 + catch() { ... } // from try @ 002d3ff0 with catch @ 002d4928 + catch() { ... } // from try @ 002d43a8 with catch @ 002d4928 */ + local_420 = local_41c; + /* catch() { ... } // from try @ 002d308c with catch @ 002d4930 + catch() { ... } // from try @ 002d310c with catch @ 002d4930 + catch() { ... } // from try @ 002d4664 with catch @ 002d4930 */ + local_424 = local_41c; + local_428 = local_41c; + pfVar32 = &local_428; + } + /* catch() { ... } // from try @ 002d38bc with catch @ 002d4938 */ + dVar53 = 0.0; + if ((int)uVar9 < 4) { + iVar28 = 0; + } + else { + psVar20 = psVar30; + pfVar36 = pfVar32; + pfVar37 = pfVar19; + do { + psVar25 = psVar20 + 4; + pfVar1 = pfVar36 + 1; + /* catch() { ... } // from try @ 002d320c with catch @ 002d4960 + catch() { ... } // from try @ 002d3298 with catch @ 002d4960 + catch() { ... } // from try @ 002d3670 with catch @ 002d4960 */ + fVar51 = *pfVar36; + /* catch() { ... } // from try @ 002d3844 with catch @ 002d4980 + catch() { ... } // from try @ 002d38c4 with catch @ 002d4980 + catch() { ... } // from try @ 002d3af4 with catch @ 002d4980 */ + /* catch() { ... } // from try @ 002d29e8 with catch @ 002d4988 */ + pfVar2 = pfVar36 + 2; + /* catch() { ... } // from try @ 002d3dcc with catch @ 002d49b0 */ + /* catch() { ... } // from try @ 002d455c with catch @ 002d49c0 */ + pfVar3 = pfVar36 + 3; + pfVar36 = (float *)((long)pfVar36 + lVar21); + dVar53 = dVar53 + (double)pfVar37[1] * (double)((float)(int)*psVar20 - *pfVar1) + + (double)((float)(int)psVar20[-1] - fVar51) * (double)*pfVar37 + + (double)((float)(int)psVar20[1] - *pfVar2) * (double)pfVar37[2] + + (double)((float)(int)psVar20[2] - *pfVar3) * (double)pfVar37[3]; + psVar20 = psVar25; + pfVar37 = pfVar37 + 4; + } while (psVar25 != psVar30 + (ulong)uVar11 * 4 + 4); + pfVar32 = (float *)((long)pfVar32 + lVar21 + (ulong)uVar11 * lVar21); + /* catch() { ... } // from try @ 002d4510 with catch @ 002d49f0 + catch() { ... } // from try @ 002d4564 with catch @ 002d49f0 */ + iVar28 = (uVar11 + 1) * 4; + } + /* catch() { ... } // from try @ 002d33d0 with catch @ 002d49f8 */ + if (iVar28 < (int)uVar9) { + lVar27 = 0; + do { + lVar16 = lVar27 + -1; + pfVar36 = pfVar32 + lVar27; + lVar17 = iVar28 + lVar27; + lVar27 = lVar27 + 1; + /* catch() { ... } // from try @ 002d33b0 with catch @ 002d4a24 + catch() { ... } // from try @ 002d33d8 with catch @ 002d4a24 + catch() { ... } // from try @ 002d3a44 with catch @ 002d4a24 */ + /* catch() { ... } // from try @ 002d41a0 with catch @ 002d4a2c */ + dVar53 = dVar53 + (double)((float)(int)psVar30[iVar28 + lVar16] - *pfVar36) * + (double)pfVar19[lVar17]; + } while (lVar27 != (ulong)((uVar9 - 1) - iVar28) + 1); + } + iVar35 = iVar35 + 1; + pfVar34 = pfVar34 + uVar41; + psVar30 = psVar30 + uVar54; + /* catch() { ... } // from try @ 002d2d94 with catch @ 002d4a58 + catch() { ... } // from try @ 002d2e24 with catch @ 002d4a58 + catch() { ... } // from try @ 002d47fc with catch @ 002d4a58 */ + *pfVar42 = (float)(dVar53 * param_1); + pfVar42 = pfVar42 + 1; + } while (iVar35 < iVar10); + iVar38 = iVar38 + 1; + pfVar22 = pfVar22 + uVar41; + psVar29 = psVar29 + uVar54; + pfVar39 = pfVar39 + uVar40 + 1; + } while (iVar38 != iVar10); + } + /* catch() { ... } // from try @ 002d3708 with catch @ 002d4a7c + catch() { ... } // from try @ 002d46f0 with catch @ 002d4a7c + catch() { ... } // from try @ 002d4744 with catch @ 002d4a7c */ + if (bVar18) { + local_418 = pfVar19; + local_410 = uVar23; + operator_delete__(pfVar19); + } + } + /* catch() { ... } // from try @ 002d3a34 with catch @ 002d4aa0 */ + return; +} + + +================================================================== + +### FUNC 002d4e9c (2432 bytes) name=FUN_002d4e9c + +void FUN_002d4e9c(double param_1,long param_2,long param_3,long param_4) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + uint uVar4; + undefined8 *puVar5; + ushort *puVar6; + uint uVar7; + uint uVar8; + uint uVar9; + int iVar10; + uint uVar11; + int iVar12; + uint uVar13; + undefined8 *puVar14; + undefined8 *puVar15; + long lVar16; + long lVar17; + bool bVar18; + float *pfVar19; + ushort *puVar20; + long lVar21; + float *pfVar22; + ulong uVar23; + undefined8 *puVar24; + ushort *puVar25; + uint uVar26; + long lVar27; + int iVar28; + ushort *puVar29; + ushort *puVar30; + uint uVar31; + float *pfVar32; + undefined8 *puVar33; + float *pfVar34; + int iVar35; + float *pfVar36; + float *pfVar37; + int iVar38; + float *pfVar39; + ulong uVar40; + ulong uVar41; + float *pfVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + float fVar51; + undefined8 uVar52; + double dVar53; + ulong uVar54; + long lVar55; + int iVar56; + long lVar57; + float local_428; + float local_424; + float local_420; + float local_41c; + float *local_418; + ulong local_410; + float afStack_408 [258]; + + pfVar39 = *(float **)(param_3 + 0x10); + uVar40 = *(ulong *)(param_3 + 0x50) >> 2; + puVar29 = *(ushort **)(param_2 + 0x10); + pfVar22 = *(float **)(param_4 + 0x10); + uVar54 = *(ulong *)(param_2 + 0x50) >> 1; + if (*(int *)(param_4 + 8) < 2) { + uVar41 = 0; + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + iVar10 = **(int **)(param_2 + 0x40); + } + else { + uVar8 = *(uint *)(param_4 + 0xc); + uVar9 = (*(int **)(param_2 + 0x40))[1]; + uVar41 = *(ulong *)(param_4 + 0x50) >> 2; + iVar10 = **(int **)(param_2 + 0x40); + } + if (pfVar22 == (float *)0x0) { + /* try { // try from 002d56c4 to 003d56c7 has its CatchHandler @ 002d554c */ + if (0 < iVar10) { + uVar7 = uVar9 - 4 >> 2; + uVar8 = (uVar7 + 1) * 4; + if ((int)(uVar9 - 3) < 1) { + uVar8 = 0; + } + /* try { // try from 002d5700 to 003d5703 has its CatchHandler @ 002d5a7c */ + iVar38 = 0; + /* try { // try from 002d5708 to 003d5753 has its CatchHandler @ 002d554c */ + uVar41 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar8 << 1; + do { + puVar30 = puVar29 + 1; + pfVar22 = pfVar39; + iVar12 = iVar38; + do { + dVar53 = 0.0; + if (0 < (int)(uVar9 - 3)) { + puVar20 = puVar30; + puVar25 = puVar29; + do { + puVar6 = puVar20 + 4; + /* try { // try from 002d5780 to 003d5783 has its CatchHandler @ 002d5a54 */ + /* try { // try from 002d5788 to 003d5923 has its CatchHandler @ 002d554c */ + dVar53 = dVar53 + (double)puVar25[1] * (double)*puVar20 + + (double)puVar20[-1] * (double)*puVar25 + + (double)puVar20[1] * (double)puVar25[2] + + (double)puVar20[2] * (double)puVar25[3]; + puVar20 = puVar6; + puVar25 = puVar25 + 4; + } while (puVar6 != puVar30 + (ulong)uVar7 * 4 + 4); + } + if ((int)uVar8 < (int)uVar9) { + lVar21 = 0; + do { + lVar55 = lVar21 + uVar41; + lVar57 = lVar21 + (uVar41 - 2); + lVar21 = lVar21 + 2; + dVar53 = dVar53 + (double)*(ushort *)((long)puVar30 + lVar57) * + (double)*(ushort *)((long)puVar29 + lVar55); + } while (lVar21 != ((ulong)((uVar9 - 1) - uVar8) + 1) * 2); + } + iVar12 = iVar12 + 1; + puVar30 = puVar30 + uVar54; + *pfVar22 = (float)(dVar53 * param_1); + pfVar22 = pfVar22 + 1; + } while (iVar12 < iVar10); + iVar38 = iVar38 + 1; + pfVar39 = pfVar39 + uVar40 + 1; + puVar29 = puVar29 + uVar54; + } while (iVar38 != iVar10); + } + } + else { + uVar23 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar9 << 2; + pfVar19 = afStack_408; + lVar21 = 0x10; + if (uVar8 != uVar9) { + lVar21 = 0; + } + local_418 = pfVar19; + local_410 = 0x408; + if (uVar23 < 0x409) { + local_410 = uVar23; + bVar18 = false; + } + else { + local_418 = operator_new__(uVar23); + bVar18 = local_418 != pfVar19; + local_410 = uVar23; + pfVar19 = local_418; + } + if (0 < iVar10) { + uVar7 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + if (uVar9 < uVar7) { + uVar7 = uVar9; + } + uVar11 = uVar9 - 4 >> 2; + iVar38 = 0; + iVar12 = uVar9 - uVar7; + lVar57 = NEON_shl((ulong)uVar7,2); + uVar13 = (uVar9 - 1) - uVar7; + lVar55 = NEON_shl((ulong)uVar7,1); + uVar4 = (iVar12 - 8U >> 3) + 1; + iVar56 = uVar4 * 8; + do { + if ((int)uVar8 < (int)uVar9) { + if (0 < (int)uVar9) { + if ((pfVar19 < pfVar22 + 1 && pfVar22 < pfVar19 + uVar9) || (uVar9 < 0xb)) { + lVar27 = 0; + do { + pfVar19[lVar27] = (float)puVar29[lVar27] - *pfVar22; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar9); + } + else { + uVar26 = uVar7; + if ((uVar7 != 0) && (*pfVar19 = (float)*puVar29 - *pfVar22, uVar7 != 1)) { + pfVar19[1] = (float)puVar29[1] - *pfVar22; + if (uVar7 == 3) { + pfVar19[2] = (float)puVar29[2] - *pfVar22; + } + else { + uVar26 = 2; + } + } + if (6 < uVar13) { + fVar51 = *pfVar22; + uVar31 = 0; + puVar30 = (ushort *)((long)puVar29 + lVar55); + puVar24 = (undefined8 *)((long)pfVar19 + lVar57); + do { + uVar31 = uVar31 + 1; + auVar49._2_2_ = 0; + auVar49._0_2_ = *puVar30; + auVar49._4_2_ = puVar30[1]; + auVar49._6_2_ = 0; + auVar49._8_2_ = puVar30[2]; + auVar49._10_2_ = 0; + auVar49._12_2_ = puVar30[3]; + auVar49._14_2_ = 0; + auVar44._2_2_ = 0; + auVar44._0_2_ = puVar30[4]; + auVar44._4_2_ = puVar30[5]; + auVar44._6_2_ = 0; + auVar44._8_2_ = puVar30[6]; + auVar44._10_2_ = 0; + auVar44._12_2_ = puVar30[7]; + auVar44._14_2_ = 0; + auVar47 = NEON_scvtf(auVar49,4); + auVar44 = NEON_scvtf(auVar44,4); + auVar50._0_8_ = CONCAT44(auVar47._4_4_ - fVar51,auVar47._0_4_ - fVar51); + auVar50._8_4_ = auVar47._8_4_ - fVar51; + auVar50._12_4_ = auVar47._12_4_ - fVar51; + auVar47._0_8_ = CONCAT44(auVar44._4_4_ - fVar51,auVar44._0_4_ - fVar51); + auVar47._8_4_ = auVar44._8_4_ - fVar51; + auVar47._12_4_ = auVar44._12_4_ - fVar51; + puVar24[1] = auVar50._8_8_; + *puVar24 = auVar50._0_8_; + puVar24[3] = auVar47._8_8_; + puVar24[2] = auVar47._0_8_; + puVar30 = puVar30 + 8; + puVar24 = puVar24 + 4; + } while (uVar31 < uVar4); + uVar26 = uVar26 + iVar56; + if (iVar56 == iVar12) goto LAB_002d5280; + } + iVar35 = uVar26 + 1; + /* catch() { ... } // from try @ 002d56c4 with catch @ 002d554c + catch() { ... } // from try @ 002d5708 with catch @ 002d554c + catch() { ... } // from try @ 002d5788 with catch @ 002d554c + catch() { ... } // from try @ 002d597c with catch @ 002d554c + catch() { ... } // from try @ 002d5a44 with catch @ 002d554c + catch() { ... } // from try @ 002d5a64 with catch @ 002d554c + catch() { ... } // from try @ 002d5a78 with catch @ 002d554c + catch() { ... } // from try @ 002d5a8c with catch @ 002d554c + catch() { ... } // from try @ 002d5aa0 with catch @ 002d554c */ + pfVar19[(int)uVar26] = (float)puVar29[(int)uVar26] - *pfVar22; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 2; + pfVar19[iVar35] = (float)puVar29[iVar35] - *pfVar22; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 3; + pfVar19[iVar28] = (float)puVar29[iVar28] - *pfVar22; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 4; + pfVar19[iVar35] = (float)puVar29[iVar35] - *pfVar22; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 5; + pfVar19[iVar28] = (float)puVar29[iVar28] - *pfVar22; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 6; + pfVar19[iVar35] = (float)puVar29[iVar35] - *pfVar22; + if (iVar28 < (int)uVar9) { + pfVar19[iVar28] = (float)puVar29[iVar28] - *pfVar22; + } + } + } + } + } + } + } + } + } + else if (0 < (int)uVar9) { + if ((pfVar19 < pfVar22 + 8 && pfVar22 < pfVar19 + 8) || (uVar9 < 0xb)) { + lVar27 = 0; + do { + pfVar19[lVar27] = (float)puVar29[lVar27] - pfVar22[lVar27]; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar9); + } + else { + uVar26 = uVar7; + if ((uVar7 != 0) && (*pfVar19 = (float)*puVar29 - *pfVar22, uVar7 != 1)) { + pfVar19[1] = (float)puVar29[1] - pfVar22[1]; + if (uVar7 == 3) { + pfVar19[2] = (float)puVar29[2] - pfVar22[2]; + } + else { + uVar26 = 2; + } + } + if (6 < uVar13) { + uVar31 = 0; + puVar24 = (undefined8 *)((long)pfVar22 + lVar57); + puVar30 = (ushort *)((long)puVar29 + lVar55); + puVar33 = (undefined8 *)((long)pfVar19 + lVar57); + do { + puVar5 = puVar24 + 2; + puVar15 = puVar24 + 1; + uVar52 = *puVar24; + puVar14 = puVar24 + 3; + uVar31 = uVar31 + 1; + puVar24 = puVar24 + 4; + auVar46._2_2_ = 0; + auVar46._0_2_ = *puVar30; + auVar46._4_2_ = puVar30[1]; + auVar46._6_2_ = 0; + auVar46._8_2_ = puVar30[2]; + auVar46._10_2_ = 0; + auVar46._12_2_ = puVar30[3]; + auVar46._14_2_ = 0; + auVar43._2_2_ = 0; + auVar43._0_2_ = puVar30[4]; + auVar43._4_2_ = puVar30[5]; + auVar43._6_2_ = 0; + auVar43._8_2_ = puVar30[6]; + auVar43._10_2_ = 0; + auVar43._12_2_ = puVar30[7]; + auVar43._14_2_ = 0; + auVar47 = NEON_scvtf(auVar46,4); + auVar44 = NEON_scvtf(auVar43,4); + auVar48._0_8_ = + CONCAT44(auVar47._4_4_ - (float)((ulong)uVar52 >> 0x20), + auVar47._0_4_ - (float)uVar52); + auVar48._8_4_ = auVar47._8_4_ - (float)*puVar15; + auVar48._12_4_ = auVar47._12_4_ - (float)((ulong)*puVar15 >> 0x20); + auVar45._0_8_ = + CONCAT44(auVar44._4_4_ - (float)((ulong)*puVar5 >> 0x20), + auVar44._0_4_ - (float)*puVar5); + auVar45._8_4_ = auVar44._8_4_ - (float)*puVar14; + auVar45._12_4_ = auVar44._12_4_ - (float)((ulong)*puVar14 >> 0x20); + puVar33[1] = auVar48._8_8_; + *puVar33 = auVar48._0_8_; + puVar33[3] = auVar45._8_8_; + puVar33[2] = auVar45._0_8_; + puVar30 = puVar30 + 8; + puVar33 = puVar33 + 4; + } while (uVar31 < uVar4); + uVar26 = uVar26 + iVar56; + if (iVar56 == iVar12) goto LAB_002d5280; + } + iVar35 = uVar26 + 1; + pfVar19[(int)uVar26] = (float)puVar29[(int)uVar26] - pfVar22[(int)uVar26]; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 2; + pfVar19[iVar35] = (float)puVar29[iVar35] - pfVar22[iVar35]; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 3; + pfVar19[iVar28] = (float)puVar29[iVar28] - pfVar22[iVar28]; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 4; + pfVar19[iVar35] = (float)puVar29[iVar35] - pfVar22[iVar35]; + if (iVar28 < (int)uVar9) { + iVar35 = uVar26 + 5; + pfVar19[iVar28] = (float)puVar29[iVar28] - pfVar22[iVar28]; + if (iVar35 < (int)uVar9) { + iVar28 = uVar26 + 6; + pfVar19[iVar35] = (float)puVar29[iVar35] - pfVar22[iVar35]; + if (iVar28 < (int)uVar9) { + pfVar19[iVar28] = (float)puVar29[iVar28] - pfVar22[iVar28]; + } + } + } + } + } + } + } + } +LAB_002d5280: + puVar30 = puVar29 + 1; + pfVar34 = pfVar22; + pfVar42 = pfVar39; + iVar35 = iVar38; + do { + pfVar32 = pfVar34; + if ((int)uVar8 < (int)uVar9) { + local_41c = *pfVar34; + local_420 = local_41c; + local_424 = local_41c; + local_428 = local_41c; + pfVar32 = &local_428; + } + dVar53 = 0.0; + if ((int)uVar9 < 4) { + iVar28 = 0; + } + else { + puVar20 = puVar30; + pfVar36 = pfVar32; + pfVar37 = pfVar19; + do { + puVar25 = puVar20 + 4; + pfVar1 = pfVar36 + 1; + fVar51 = *pfVar36; + pfVar2 = pfVar36 + 2; + pfVar3 = pfVar36 + 3; + pfVar36 = (float *)((long)pfVar36 + lVar21); + dVar53 = dVar53 + (double)pfVar37[1] * (double)((float)*puVar20 - *pfVar1) + + (double)((float)puVar20[-1] - fVar51) * (double)*pfVar37 + + (double)((float)puVar20[1] - *pfVar2) * (double)pfVar37[2] + + (double)((float)puVar20[2] - *pfVar3) * (double)pfVar37[3]; + puVar20 = puVar25; + pfVar37 = pfVar37 + 4; + } while (puVar25 != puVar30 + (ulong)uVar11 * 4 + 4); + pfVar32 = (float *)((long)pfVar32 + lVar21 + (ulong)uVar11 * lVar21); + iVar28 = (uVar11 + 1) * 4; + } + if (iVar28 < (int)uVar9) { + lVar27 = 0; + do { + lVar16 = lVar27 + -1; + pfVar36 = pfVar32 + lVar27; + lVar17 = iVar28 + lVar27; + lVar27 = lVar27 + 1; + dVar53 = dVar53 + (double)((float)puVar30[iVar28 + lVar16] - *pfVar36) * + (double)pfVar19[lVar17]; + } while (lVar27 != (ulong)((uVar9 - 1) - iVar28) + 1); + } + iVar35 = iVar35 + 1; + pfVar34 = pfVar34 + uVar41; + puVar30 = puVar30 + uVar54; + *pfVar42 = (float)(dVar53 * param_1); + pfVar42 = pfVar42 + 1; + } while (iVar35 < iVar10); + iVar38 = iVar38 + 1; + pfVar22 = pfVar22 + uVar41; + puVar29 = puVar29 + uVar54; + pfVar39 = pfVar39 + uVar40 + 1; + } while (iVar38 != iVar10); + } + if (bVar18) { + local_418 = pfVar19; + local_410 = uVar23; + operator_delete__(pfVar19); + } + } + return; +} + + +================================================================== + +### FUNC 002d581c (1160 bytes) name=FUN_002d581c + +void FUN_002d581c(undefined8 *param_1,ulong param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,int *param_7,int *param_8,uint param_9) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + undefined8 *puVar9; + long lVar10; + double *pdVar11; + double *pdVar12; + undefined8 *puVar13; + undefined8 *puVar14; + ulong uVar15; + ulong uVar16; + undefined8 uVar17; + double *pdVar18; + double *pdVar19; + double *pdVar20; + double *pdVar21; + undefined8 *puVar22; + ulong uVar23; + int iVar24; + uint uVar25; + int iVar26; + long lVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + uint uVar34; + long lVar35; + long lVar36; + undefined8 auStack_440 [136]; + + param_4 = param_4 >> 3; + puVar9 = auStack_440; + iVar26 = *param_7; + iVar5 = *param_8; + uVar4 = param_9 & 0x10; + param_2 = param_2 >> 3; + uVar34 = param_9 & 1; + if ((param_9 & 1) == 0) { + puVar22 = (undefined8 *)0x0; + uVar23 = 1; + } + else { + iVar26 = param_7[1]; + uVar15 = (ulong)iVar26; + /* try { // try from 002d5c44 to 003d5c47 has its CatchHandler @ 002d5aa4 */ + uVar23 = param_2; + if (uVar15 < 0x89) { + uVar34 = 0; + param_2 = 1; + puVar22 = puVar9; + } + else { + /* catch() { ... } // from try @ 002d5cb0 with catch @ 002d5c50 + catch() { ... } // from try @ 002d61b4 with catch @ 002d5c50 + catch() { ... } // from try @ 002d63e4 with catch @ 002d5c50 + catch() { ... } // from try @ 002d6520 with catch @ 002d5c50 */ + uVar16 = uVar15 << 3; + if (0xfe0000000000000 < uVar15) { + uVar16 = 0xffffffffffffffff; + } + puVar9 = operator_new__(uVar16); + param_2 = 1; + uVar34 = (uint)(puVar9 != auStack_440); + puVar22 = puVar9; + } + } + uVar25 = param_9 & 2; + if ((param_9 >> 1 & 1) == 0) { + uVar6 = param_8[1]; + if (0 < (int)uVar6) { + uVar8 = iVar5 - 4U >> 2; + iVar24 = (uVar8 + 1) * 4; + if (iVar5 + -3 < 1) { + iVar24 = 0; + } + lVar27 = (long)iVar24; + lVar35 = NEON_shl(param_2,3); + lVar36 = NEON_shl(param_6 >> 3,3); + do { + puVar14 = param_1; + if ((puVar22 != (undefined8 *)0x0) && (puVar14 = puVar22, 0 < iVar26)) { + lVar10 = 0; + puVar13 = param_1; + do { + uVar17 = *puVar13; + puVar13 = puVar13 + uVar23; + puVar22[lVar10] = uVar17; + lVar10 = lVar10 + 1; + } while ((int)lVar10 < iVar26); + } + if (0 < iVar5 + -3) { + pdVar19 = param_5 + 2; + /* try { // try from 002d5974 to 003d5977 has its CatchHandler @ 002d5a90 */ + pdVar20 = param_5 + 1; + pdVar12 = param_5 + 3; + /* try { // try from 002d597c to 003d59fb has its CatchHandler @ 002d554c */ + pdVar21 = param_5; + pdVar18 = param_3; + do { + if (uVar4 == 0) { + dVar29 = 0.0; + dVar30 = 0.0; + dVar31 = dVar30; + dVar32 = dVar30; + } + else { + dVar30 = *pdVar19; + dVar29 = *pdVar12; + dVar31 = *pdVar20; + dVar32 = *pdVar21; + } + if (0 < iVar26) { + lVar10 = 0; + pdVar11 = pdVar18; + do { + dVar28 = (double)puVar14[lVar10]; + lVar10 = lVar10 + 1; + dVar33 = *pdVar11; + pdVar1 = pdVar11 + 1; + pdVar2 = pdVar11 + 2; + pdVar3 = pdVar11 + 3; + pdVar11 = pdVar11 + param_4; + dVar32 = dVar32 + dVar28 * dVar33; + dVar31 = dVar31 + dVar28 * *pdVar1; + dVar30 = dVar30 + dVar28 * *pdVar2; + dVar29 = dVar29 + dVar28 * *pdVar3; + } while ((int)lVar10 < iVar26); + } + pdVar20 = pdVar20 + 4; + pdVar12 = pdVar12 + 4; + pdVar18 = pdVar18 + 4; + pdVar21[1] = dVar31; + *pdVar21 = dVar32; + pdVar21 = pdVar21 + 4; + pdVar19[1] = dVar29; + *pdVar19 = dVar30; + pdVar19 = pdVar19 + 4; + } while (pdVar19 != param_5 + (ulong)uVar8 * 4 + 6); + } + if (iVar24 < iVar5) { + pdVar20 = param_5 + lVar27; + pdVar19 = param_3 + lVar27; + do { + dVar29 = 0.0; + if (uVar4 != 0) { + dVar29 = *pdVar20; + } + /* try { // try from 002d5a3c to 003d5a3f has its CatchHandler @ 002d5a68 */ + if (0 < iVar26) { + /* try { // try from 002d5a44 to 003d5a47 has its CatchHandler @ 002d554c */ + lVar10 = 0; + pdVar12 = pdVar19; + do { + pdVar18 = (double *)(puVar14 + lVar10); + lVar10 = lVar10 + 1; + dVar31 = *pdVar12; + /* catch() { ... } // from try @ 002d5780 with catch @ 002d5a54 */ + pdVar12 = pdVar12 + param_4; + dVar29 = dVar29 + dVar31 * *pdVar18; + } while ((int)lVar10 < iVar26); + } + pdVar12 = pdVar20 + 1; + /* try { // try from 002d5a64 to 003d5a67 has its CatchHandler @ 002d554c */ + *pdVar20 = dVar29; + /* catch() { ... } // from try @ 002d5a3c with catch @ 002d5a68 */ + pdVar19 = pdVar19 + 1; + pdVar20 = pdVar12; + } while (pdVar12 != param_5 + lVar27 + 1 + (ulong)(uint)((iVar5 + -1) - iVar24)); + } + /* try { // try from 002d5a78 to 003d5a7b has its CatchHandler @ 002d554c */ + uVar25 = uVar25 + 1; + /* catch() { ... } // from try @ 002d5700 with catch @ 002d5a7c */ + param_1 = (undefined8 *)((long)param_1 + lVar35); + param_5 = (double *)((long)param_5 + lVar36); + /* try { // try from 002d5a8c to 003d5a8f has its CatchHandler @ 002d554c */ + } while (uVar25 != uVar6); + } + } + else { + iVar5 = param_8[1]; + if (0 < iVar5) { + iVar7 = *param_8; + uVar25 = iVar26 - 2U >> 1; + iVar24 = 0; + do { + puVar14 = param_1; + if ((puVar22 != (undefined8 *)0x0) && (puVar14 = puVar22, 0 < iVar26)) { + lVar27 = 0; + puVar13 = param_1; + do { + uVar17 = *puVar13; + puVar13 = puVar13 + uVar23; + puVar22[lVar27] = uVar17; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < iVar26); + } + if (0 < iVar7) { + /* try { // try from 002d5b5c to 003d5b5f has its CatchHandler @ 002d5b70 */ + pdVar19 = param_3; + pdVar20 = param_5; + do { + dVar29 = 0.0; + if (uVar4 != 0) { + dVar29 = *pdVar20; + } + /* catch() { ... } // from try @ 002d5b5c with catch @ 002d5b70 */ + dVar31 = 0.0; + if (iVar26 + -1 < 1) { + uVar15 = 0; + } + else { + pdVar12 = (double *)(puVar14 + 1); + pdVar18 = pdVar19 + 1; + do { + pdVar21 = pdVar12 + 2; + dVar29 = dVar29 + pdVar18[-1] * pdVar12[-1]; + dVar31 = dVar31 + *pdVar18 * *pdVar12; + pdVar12 = pdVar21; + pdVar18 = pdVar18 + 2; + } while (pdVar21 != (double *)(puVar14 + (ulong)uVar25 * 2 + 3)); + uVar15 = (ulong)((uVar25 + 1) * 2); + } + if ((int)uVar15 < iVar26) { + uVar16 = -(uVar15 >> 0x1f) & 0xfffffff800000000 | uVar15 << 3; + lVar27 = 0; + do { + lVar35 = lVar27 + uVar16; + lVar36 = lVar27 + uVar16; + lVar27 = lVar27 + 8; + dVar29 = dVar29 + *(double *)((long)pdVar19 + lVar36) * + *(double *)((long)puVar14 + lVar35); + } while (lVar27 != ((ulong)(uint)((iVar26 + -1) - (int)uVar15) + 1) * 8); + } + pdVar19 = pdVar19 + param_4; + pdVar12 = pdVar20 + 1; + *pdVar20 = dVar29 + dVar31; + pdVar20 = pdVar12; + } while (param_5 + (ulong)(iVar7 - 1) + 1 != pdVar12); + } + iVar24 = iVar24 + 1; + param_1 = param_1 + param_2; + param_5 = param_5 + (param_6 >> 3); + } while (iVar24 != iVar5); + } + } + /* catch() { ... } // from try @ 002d5974 with catch @ 002d5a90 */ + if (uVar34 != 0) { + operator_delete__(puVar9); + } + /* try { // try from 002d5aa0 to 003d5aa3 has its CatchHandler @ 002d554c */ + /* catch() { ... } // from try @ 002d5c44 with catch @ 002d5aa4 */ + return; +} + + +================================================================== + +### FUNC 002d5cc8 (64 bytes) name=FUN_002d5cc8 + +void FUN_002d5cc8(void) + +{ + /* try { // try from 002d5cd8 to 003d5cf7 has its CatchHandler @ 002d6558 */ + FUN_002d581c(); + return; +} + + +================================================================== + +### FUNC 002d5d08 (1556 bytes) name=FUN_002d5d08 + +void FUN_002d5d08(double *param_1,ulong param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,int *param_7,int *param_8,uint param_9) + +{ + double *pdVar1; + uint uVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + double *pdVar7; + ulong uVar8; + double *pdVar9; + double *pdVar10; + double *pdVar11; + double *pdVar12; + double *pdVar13; + long lVar14; + double *pdVar15; + double *pdVar16; + int iVar17; + uint uVar18; + double *pdVar19; + long lVar20; + int iVar21; + int iVar22; + ulong uVar23; + double *pdVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + uint uVar35; + long lVar36; + long lVar37; + double adStack_480 [144]; + + uVar4 = param_9; + /* try { // try from 002d5d3c to 003d5d3f has its CatchHandler @ 002d6534 */ + iVar21 = *param_7; + iVar3 = *param_8; + pdVar9 = adStack_480; + do { + pdVar15 = pdVar9 + 2; + pdVar9[1] = 0.0; + *pdVar9 = 0.0; + pdVar9 = pdVar15; + } while (pdVar15 != (double *)¶m_9); + pdVar9 = adStack_480; + /* try { // try from 002d5d80 to 003d5d83 has its CatchHandler @ 002d6560 */ + /* try { // try from 002d5d88 to 003d5e27 has its CatchHandler @ 002d6534 */ + param_4 = param_4 >> 4; + uVar2 = param_9 & 0x10; + uVar35 = param_9 & 1; + if ((param_9 & 1) == 0) { + pdVar15 = (double *)0x0; + uVar23 = 1; + uVar8 = param_2 >> 4; + } + else { + iVar21 = param_7[1]; + uVar23 = (ulong)iVar21; + if (uVar23 < 0x49) { + uVar35 = 0; + } + else { + uVar8 = uVar23 << 4; + if (0x7f0000000000000 < uVar23) { + uVar8 = 0xffffffffffffffff; + } + pdVar9 = operator_new__(uVar8); + uVar8 = 0; + pdVar15 = pdVar9; + do { + pdVar15[1] = 0.0; + *pdVar15 = 0.0; + uVar8 = uVar8 + 1; + pdVar15 = pdVar15 + 2; + } while (uVar23 != uVar8); + uVar35 = (uint)(pdVar9 != adStack_480); + } + uVar8 = 1; + pdVar15 = pdVar9; + uVar23 = param_2 >> 4; + } + uVar18 = uVar4 & 2; + if ((uVar4 >> 1 & 1) == 0) { + uVar4 = param_8[1]; + if (0 < (int)uVar4) { + uVar6 = iVar3 - 4U >> 2; + iVar22 = (uVar6 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar22 = 0; + } + lVar14 = (ulong)(iVar21 - 1) + 1; + lVar20 = (long)iVar22; + lVar37 = NEON_shl(uVar8,4); + lVar36 = NEON_shl(param_6 >> 4,4); + do { + pdVar19 = param_1; + if ((pdVar15 != (double *)0x0) && + (pdVar10 = pdVar15, pdVar7 = param_1, pdVar19 = pdVar15, 0 < iVar21)) { + do { + dVar27 = pdVar7[1]; + pdVar12 = pdVar10 + 2; + *pdVar10 = *pdVar7; + pdVar10[1] = dVar27; + pdVar10 = pdVar12; + pdVar7 = pdVar7 + uVar23 * 2; + } while (pdVar12 != pdVar15 + lVar14 * 2); + } + if (0 < iVar3 + -3) { + pdVar7 = param_3; + pdVar12 = param_5 + 6; + pdVar13 = param_5 + 4; + pdVar10 = param_5; + pdVar24 = param_5 + 2; + do { + if (uVar2 == 0) { + dVar27 = 0.0; + dVar28 = 0.0; + dVar29 = 0.0; + dVar30 = 0.0; + dVar31 = 0.0; + dVar32 = 0.0; + dVar33 = 0.0; + dVar34 = 0.0; + } + else { + dVar34 = *pdVar10; + dVar33 = pdVar10[1]; + dVar32 = *pdVar24; + dVar31 = pdVar10[3]; + dVar30 = *pdVar13; + dVar29 = pdVar10[5]; + dVar28 = *pdVar12; + dVar27 = pdVar10[7]; + } + pdVar11 = pdVar7; + pdVar16 = pdVar19; + if (0 < iVar21) { + do { + dVar26 = pdVar16[1]; + pdVar1 = pdVar16 + 2; + /* try { // try from 002d5f14 to 003d6043 has its CatchHandler @ 002d6524 */ + dVar25 = *pdVar16; + dVar34 = dVar34 + (*pdVar11 * dVar25 - dVar26 * pdVar11[1]); + dVar33 = dVar33 + *pdVar11 * dVar26 + pdVar11[1] * dVar25; + dVar32 = dVar32 + (dVar25 * pdVar11[2] - dVar26 * pdVar11[3]); + dVar31 = dVar31 + dVar26 * pdVar11[2] + pdVar11[3] * dVar25; + dVar30 = dVar30 + (dVar25 * pdVar11[4] - dVar26 * pdVar11[5]); + dVar29 = dVar29 + dVar26 * pdVar11[4] + pdVar11[5] * dVar25; + dVar28 = dVar28 + (dVar25 * pdVar11[6] - dVar26 * pdVar11[7]); + dVar27 = dVar27 + dVar26 * pdVar11[6] + pdVar11[7] * dVar25; + pdVar11 = pdVar11 + param_4 * 2; + pdVar16 = pdVar1; + } while (pdVar1 != pdVar19 + lVar14 * 2); + } + pdVar11 = pdVar24 + 8; + *pdVar10 = dVar34; + pdVar10[1] = dVar33; + *pdVar24 = dVar32; + pdVar10 = pdVar10 + 8; + pdVar24[1] = dVar31; + pdVar7 = pdVar7 + 8; + *pdVar13 = dVar30; + pdVar13[1] = dVar29; + *pdVar12 = dVar28; + pdVar12[1] = dVar27; + pdVar12 = pdVar12 + 8; + pdVar13 = pdVar13 + 8; + pdVar24 = pdVar11; + } while (pdVar11 != param_5 + (ulong)uVar6 * 8 + 10); + } + if (iVar22 < iVar3) { + pdVar7 = param_5 + lVar20 * 2; + pdVar10 = param_3 + lVar20 * 2; + do { + if (uVar2 == 0) { + dVar27 = 0.0; + dVar28 = 0.0; + } + else { + dVar28 = *pdVar7; + dVar27 = pdVar7[1]; + } + pdVar12 = pdVar19; + pdVar13 = pdVar10; + if (0 < iVar21) { + do { + pdVar24 = pdVar12 + 2; + dVar27 = dVar27 + pdVar12[1] * *pdVar13 + pdVar13[1] * *pdVar12; + dVar28 = dVar28 + (*pdVar12 * *pdVar13 - pdVar12[1] * pdVar13[1]); + pdVar12 = pdVar24; + pdVar13 = pdVar13 + param_4 * 2; + } while (pdVar24 != pdVar19 + lVar14 * 2); + } + *pdVar7 = dVar28; + pdVar12 = pdVar7 + 2; + pdVar10 = pdVar10 + 2; + pdVar7[1] = dVar27; + pdVar7 = pdVar12; + } while (pdVar12 != param_5 + (lVar20 + 1 + (ulong)(uint)((iVar3 + -1) - iVar22)) * 2); + } + uVar18 = uVar18 + 1; + param_1 = (double *)((long)param_1 + lVar37); + param_5 = (double *)((long)param_5 + lVar36); + } while (uVar18 != uVar4); + } + } + else { + iVar3 = param_8[1]; + /* try { // try from 002d607c to 003d607f has its CatchHandler @ 002d653c */ + if (0 < iVar3) { + iVar5 = *param_8; + /* try { // try from 002d608c to 003d608f has its CatchHandler @ 002d6428 */ + uVar18 = iVar21 - 1; + uVar4 = iVar21 - 2U >> 1; + /* try { // try from 002d60c0 to 003d60c3 has its CatchHandler @ 002d6544 */ + iVar22 = 0; + /* try { // try from 002d60c8 to 003d60cb has its CatchHandler @ 002d6428 */ + do { + pdVar19 = param_1; + if ((pdVar15 != (double *)0x0) && + (pdVar10 = pdVar15, pdVar7 = param_1, pdVar19 = pdVar15, 0 < iVar21)) { + do { + dVar27 = pdVar7[1]; + pdVar12 = pdVar10 + 2; + *pdVar10 = *pdVar7; + pdVar10[1] = dVar27; + pdVar10 = pdVar12; + pdVar7 = pdVar7 + uVar23 * 2; + } while (pdVar12 != pdVar15 + ((ulong)uVar18 + 1) * 2); + } + if (0 < iVar5) { + pdVar7 = param_5; + pdVar10 = param_3; + do { + if (uVar2 == 0) { + dVar28 = 0.0; + dVar27 = 0.0; + if ((int)uVar18 < 1) goto LAB_002d628c; +LAB_002d6134: + dVar30 = 0.0; + pdVar12 = pdVar10 + 1; + pdVar13 = pdVar19; + dVar29 = dVar30; + do { + pdVar24 = pdVar12 + 4; + /* try { // try from 002d615c to 003d6173 has its CatchHandler @ 002d652c */ + /* try { // try from 002d6178 to 003d618f has its CatchHandler @ 002d6534 */ + dVar27 = dVar27 + (pdVar12[-1] * *pdVar13 - *pdVar12 * pdVar13[1]); + /* try { // try from 002d6194 to 003d61ab has its CatchHandler @ 002d6558 */ + dVar30 = dVar30 + (pdVar13[2] * pdVar12[1] - pdVar13[3] * pdVar12[2]); + dVar28 = dVar28 + pdVar12[-1] * pdVar13[1] + *pdVar13 * *pdVar12; + dVar29 = dVar29 + pdVar13[3] * pdVar12[1] + pdVar12[2] * pdVar13[2]; + pdVar12 = pdVar24; + pdVar13 = pdVar13 + 4; + iVar17 = (uVar4 + 1) * 2; + } while (pdVar24 != pdVar10 + (ulong)uVar4 * 4 + 5); + } + else { + dVar27 = *pdVar7; + dVar28 = pdVar7[1]; + if (0 < (int)uVar18) goto LAB_002d6134; +LAB_002d628c: + dVar30 = 0.0; + dVar29 = dVar30; + iVar17 = 0; + } + if (iVar17 < iVar21) { + lVar14 = (long)iVar17; + /* try { // try from 002d61b4 to 003d61c7 has its CatchHandler @ 002d5c50 */ + pdVar12 = pdVar19 + lVar14 * 2; + pdVar13 = pdVar10 + lVar14 * 2; + do { + pdVar24 = pdVar12 + 2; + dVar28 = dVar28 + *pdVar13 * pdVar12[1] + pdVar13[1] * *pdVar12; + dVar27 = dVar27 + (*pdVar12 * *pdVar13 - pdVar13[1] * pdVar12[1]); + pdVar12 = pdVar24; + pdVar13 = pdVar13 + 2; + } while (pdVar24 != pdVar19 + (lVar14 + 1 + (ulong)(uVar18 - iVar17)) * 2); + } + pdVar12 = pdVar7 + 2; + pdVar10 = pdVar10 + param_4 * 2; + *pdVar7 = dVar27 + dVar30; + pdVar7[1] = dVar29 + dVar28; + pdVar7 = pdVar12; + } while (param_5 + ((ulong)(iVar5 - 1) + 1) * 2 != pdVar12); + } + iVar22 = iVar22 + 1; + param_1 = param_1 + uVar8 * 2; + param_5 = param_5 + (param_6 >> 4) * 2; + } while (iVar22 != iVar3); + } + } + if (uVar35 != 0) { + operator_delete__(pdVar9); + } + return; +} + + +================================================================== + +### FUNC 002d6340 (64 bytes) name=FUN_002d6340 + +void FUN_002d6340(void) + +{ + FUN_002d5d08(); + return; +} + + +================================================================== + +### FUNC 002d6380 (4204 bytes) name=FUN_002d6380 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_002d6380(double param_1,double param_2,float *param_3,ulong param_4,double *param_5, + ulong param_6,float *param_7,ulong param_8,float *param_9,ulong param_10, + int *param_11,uint *param_12,uint param_13) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined4 uVar7; + int iVar8; + uint uVar9; + uint uVar10; + float *pfVar11; + long lVar12; + undefined8 uVar13; + int iVar14; + uint uVar15; + ulong uVar16; + double *pdVar17; + ulong uVar18; + double *pdVar19; + long lVar20; + double *pdVar21; + undefined8 *puVar22; + long lVar23; + int iVar24; + uint uVar25; + long lVar26; + float *pfVar27; + float *pfVar28; + float *pfVar29; + size_t __n; + float *pfVar30; + double *pdVar31; + float *pfVar32; + long lVar33; + float *pfVar34; + double *pdVar35; + long lVar36; + uint uVar37; + double *pdVar38; + uint uVar39; + int iVar40; + ulong uVar41; + uint uVar42; + int iVar43; + undefined8 uVar44; + float fVar45; + double dVar46; + double dVar47; + double dVar48; + double dVar49; + ulong uVar50; + ulong uVar51; + double dVar52; + uint local_954; + float *local_880; + float local_870 [264]; + double *local_450; + ulong local_448; + double local_440 [136]; + + /* try { // try from 002d63b8 to 003d63d7 has its CatchHandler @ 002d6524 */ + local_880 = local_870; + uVar6 = param_12[1]; + param_6 = param_6 >> 2; + /* try { // try from 002d63e4 to 003d63e7 has its CatchHandler @ 002d5c50 */ + param_4 = param_4 >> 2; + /* try { // try from 002d63f4 to 003d63f7 has its CatchHandler @ 002d6558 */ + /* try { // try from 002d63fc to 003d63ff has its CatchHandler @ 002d6524 */ + param_10 = param_10 >> 2; + /* try { // try from 002d6404 to 003d6407 has its CatchHandler @ 002d653c */ + iVar40 = *param_11; + /* try { // try from 002d6410 to 003d6413 has its CatchHandler @ 002d6574 */ + uVar42 = *param_12; + if (param_7 == (float *)0x0) { + uVar41 = 0; + uVar50 = 0; + } + else { + uVar41 = param_8 >> 2; + uVar50 = 1; + if ((param_13 >> 2 & 1) == 0) { + uVar41 = 1; + uVar50 = param_8 >> 2; + } + } + /* catch() { ... } // from try @ 002d608c with catch @ 002d6428 + catch() { ... } // from try @ 002d60c8 with catch @ 002d6428 */ + if ((param_13 & 1) == 0) { + uVar51 = param_4; + uVar16 = 1; +joined_r0x002d66d8: + if (iVar40 == 1) { + local_450 = local_440; + local_448 = 0x108; + if ((param_4 < 2) || (param_11[1] < 2)) { + if (1 < param_6) { + uVar51 = (ulong)(int)uVar42; + if (0x108 < uVar51) { +LAB_002d6bd8: + uVar16 = uVar51 << 2; + if (0x1fc0000000000000 < uVar51) { + uVar16 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar16); + uVar42 = *param_12; + } +LAB_002d6bf8: + local_448 = uVar51; + pdVar19 = local_450; + goto LAB_002d6bfc; + } + /* try { // try from 002d6cac to 003d6caf has its CatchHandler @ 002d6c20 */ + if ((int)uVar6 < 1) goto LAB_002d6680; +LAB_002d6500: + lVar26 = 0; + /* try { // try from 002d6520 to 003d6523 has its CatchHandler @ 002d5c50 */ + /* catch() { ... } // from try @ 002d5f14 with catch @ 002d6524 + catch() { ... } // from try @ 002d63b8 with catch @ 002d6524 + catch() { ... } // from try @ 002d63fc with catch @ 002d6524 */ + do { + /* catch() { ... } // from try @ 002d615c with catch @ 002d652c */ + /* catch() { ... } // from try @ 002d5d3c with catch @ 002d6534 + catch() { ... } // from try @ 002d5d88 with catch @ 002d6534 + catch() { ... } // from try @ 002d6178 with catch @ 002d6534 */ + dVar48 = (double)param_3[lVar26] * param_1; + pfVar27 = param_7; + if ((int)uVar42 < 2) { + uVar51 = 0; + } + else { + /* catch() { ... } // from try @ 002d607c with catch @ 002d653c + catch() { ... } // from try @ 002d6404 with catch @ 002d653c */ + /* catch() { ... } // from try @ 002d60c0 with catch @ 002d6544 */ + uVar51 = 0; + pdVar19 = param_5; + pfVar32 = param_9; + do { + while( true ) { + fVar45 = *(float *)pdVar19; + /* catch() { ... } // from try @ 002d65e0 with catch @ 002d65a0 + catch() { ... } // from try @ 002d67fc with catch @ 002d65a0 + catch() { ... } // from try @ 002d6bb0 with catch @ 002d65a0 */ + dVar47 = (double)*(float *)((long)pdVar19 + 4) * dVar48; + if (pfVar27 != (float *)0x0) break; + uVar37 = (int)uVar51 + 2; + uVar51 = (ulong)uVar37; + pdVar19 = pdVar19 + 1; + *pfVar32 = (float)((double)fVar45 * dVar48); + pfVar32[1] = (float)dVar47; + pfVar27 = (float *)(uVar41 * 8); + pfVar32 = pfVar32 + 2; + if ((int)(uVar42 - 1) <= (int)uVar37) goto LAB_002d65d4; + } + uVar37 = (int)uVar51 + 2; + uVar51 = (ulong)uVar37; + /* catch() { ... } // from try @ 002d5cd8 with catch @ 002d6558 + catch() { ... } // from try @ 002d6194 with catch @ 002d6558 + catch() { ... } // from try @ 002d63f4 with catch @ 002d6558 */ + pdVar19 = pdVar19 + 1; + /* catch() { ... } // from try @ 002d5d80 with catch @ 002d6560 */ + *pfVar32 = (float)((double)fVar45 * dVar48 + param_2 * (double)*pfVar27); + pfVar30 = pfVar27 + uVar41; + /* catch() { ... } // from try @ 002d6410 with catch @ 002d6574 */ + pfVar27 = pfVar27 + uVar41 * 2; + pfVar32[1] = (float)(dVar47 + param_2 * (double)*pfVar30); + pfVar32 = pfVar32 + 2; + } while ((int)uVar37 < (int)(uVar42 - 1)); + } +LAB_002d65d4: + if ((int)uVar51 < (int)uVar42) { + /* try { // try from 002d65e0 to 003d65ff has its CatchHandler @ 002d65a0 */ + uVar16 = -(uVar51 >> 0x1f) & 0xfffffffc00000000 | uVar51 << 2; + lVar33 = 0; + lVar36 = ((ulong)((uVar42 - 1) - (int)uVar51) + 1) * 4; + do { + /* try { // try from 002d6628 to 003d6647 has its CatchHandler @ 002d6c0c */ + while (dVar47 = (double)*(float *)((long)param_5 + lVar33 + uVar16) * dVar48, + pfVar27 == (float *)0x0) { + *(float *)((long)param_9 + lVar33 + uVar16) = (float)dVar47; + lVar33 = lVar33 + 4; + pfVar27 = (float *)(uVar41 * 4); + if (lVar33 == lVar36) goto LAB_002d664c; + } + fVar45 = *pfVar27; + /* try { // try from 002d6604 to 003d6623 has its CatchHandler @ 002d6c14 */ + pfVar27 = pfVar27 + uVar41; + *(float *)((long)param_9 + lVar33 + uVar16) = + (float)(dVar47 + param_2 * (double)fVar45); + lVar33 = lVar33 + 4; + } while (lVar33 != lVar36); + } +LAB_002d664c: + lVar26 = lVar26 + 1; + param_7 = param_7 + uVar50; + param_9 = param_9 + param_10; + pdVar19 = local_450; + } while ((int)lVar26 < (int)uVar6); + } + else { + uVar51 = (ulong)(int)uVar6; + if (0x108 < uVar51) { + uVar16 = uVar51 << 2; + if (0x1fc0000000000000 < uVar51) { + uVar16 = 0xffffffffffffffff; + } + local_880 = operator_new__(uVar16); + } + if ((int)uVar6 < 1) { + pdVar19 = local_450; + if (1 < param_6) goto LAB_002d7398; + } + else { + lVar26 = 0; + do { + fVar45 = *param_3; + param_3 = param_3 + param_4; + local_880[lVar26] = fVar45; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar6); + if (param_6 < 2) { + uVar42 = *param_12; + param_3 = local_880; + goto LAB_002d6500; + } +LAB_002d7398: + uVar42 = *param_12; + uVar51 = (ulong)(int)uVar42; + param_3 = local_880; + if (uVar51 <= local_448) goto LAB_002d6bf8; + if (local_450 != local_440) { + if (local_450 != (double *)0x0) { + operator_delete__(local_450); + } + local_450 = local_440; + local_448 = 0x108; + } + if (0x108 < uVar51) goto LAB_002d6bd8; + uVar42 = *param_12; + pdVar19 = local_440; +LAB_002d6bfc: + if (0 < (int)uVar42) { + /* catch() { ... } // from try @ 002d6734 with catch @ 002d6c04 + catch() { ... } // from try @ 002d6b48 with catch @ 002d6c04 */ + /* catch() { ... } // from try @ 002d6628 with catch @ 002d6c0c + catch() { ... } // from try @ 002d67c0 with catch @ 002d6c0c + catch() { ... } // from try @ 002d6b30 with catch @ 002d6c0c */ + lVar26 = 0; + do { + uVar7 = *(undefined4 *)param_5; + /* catch() { ... } // from try @ 002d6604 with catch @ 002d6c14 + catch() { ... } // from try @ 002d67dc with catch @ 002d6c14 + catch() { ... } // from try @ 002d6b1c with catch @ 002d6c14 */ + param_5 = (double *)((long)param_5 + param_6 * 4); + *(undefined4 *)((long)pdVar19 + lVar26 * 4) = uVar7; + lVar26 = lVar26 + 1; + /* catch() { ... } // from try @ 002d6cac with catch @ 002d6c20 + catch() { ... } // from try @ 002d6ce4 with catch @ 002d6c20 + catch() { ... } // from try @ 002d772c with catch @ 002d6c20 */ + } while ((int)lVar26 < (int)uVar42); + } + param_5 = pdVar19; + if (0 < (int)uVar6) goto LAB_002d6500; + } + } + if ((pdVar19 != local_440) && (pdVar19 != (double *)0x0)) { + operator_delete__(pdVar19); + } + goto LAB_002d6680; + } + pfVar27 = (float *)0x0; + param_4 = uVar16; + } + else { + iVar40 = param_11[1]; + if ((param_4 < 2) || (iVar40 < 2)) { + uVar51 = 1; + uVar16 = param_4; + goto joined_r0x002d66d8; + } + if (0x108 < iVar40) { + local_880 = operator_new__((long)iVar40 << 2); + } + uVar51 = 1; + pfVar27 = local_880; + } + uVar37 = param_13 & 2; + if ((param_13 >> 1 & 1) == 0) { + if ((ulong)((long)(int)*param_12 * 4) < 0x641) { + if (0 < (int)uVar6) { + uVar9 = uVar42 - 4 >> 2; + lVar26 = (ulong)uVar9 + 1; + /* try { // try from 002d6734 to 003d6737 has its CatchHandler @ 002d6c04 */ + /* try { // try from 002d6778 to 003d677b has its CatchHandler @ 002d6bb4 */ + if (pfVar27 == (float *)0x0) goto LAB_002d6978; +LAB_002d6794: + if (0 < iVar40) { + lVar33 = 0; + pfVar32 = param_3; + do { + /* try { // try from 002d67a4 to 003d67bb has its CatchHandler @ 002d6b50 */ + fVar45 = *pfVar32; + pfVar32 = pfVar32 + param_4; + pfVar27[lVar33] = fVar45; + lVar33 = lVar33 + 1; + } while ((int)lVar33 < iVar40); + } + /* try { // try from 002d67c0 to 003d67d7 has its CatchHandler @ 002d6c0c */ + pfVar30 = pfVar27; + pfVar32 = param_7; + if ((int)uVar42 < 4) goto LAB_002d6984; + do { + pfVar29 = param_7; + pdVar19 = param_5; + pfVar32 = param_9; + do { + /* try { // try from 002d67dc to 003d67f3 has its CatchHandler @ 002d6c14 */ + dVar49 = 0.0; + dVar48 = dVar49; + dVar47 = dVar49; + dVar52 = dVar49; + if (0 < iVar40) { + dVar48 = 0.0; + lVar33 = 0; + dVar47 = 0.0; + dVar52 = 0.0; + pdVar17 = pdVar19; + do { + pfVar11 = pfVar30 + lVar33; + /* try { // try from 002d67fc to 003d6b0b has its CatchHandler @ 002d65a0 */ + lVar33 = lVar33 + 1; + fVar45 = *(float *)pdVar17; + pfVar34 = (float *)((long)pdVar17 + 4); + pdVar35 = pdVar17 + 1; + pfVar28 = (float *)((long)pdVar17 + 0xc); + pdVar17 = (double *)((long)pdVar17 + param_6 * 4); + dVar46 = (double)*pfVar11; + dVar52 = dVar52 + dVar46 * (double)fVar45; + dVar47 = dVar47 + dVar46 * (double)*pfVar34; + dVar48 = dVar48 + dVar46 * (double)*(float *)pdVar35; + dVar49 = dVar49 + dVar46 * (double)*pfVar28; + } while ((int)lVar33 < iVar40); + } + if (pfVar29 == (float *)0x0) { + *(ulong *)(pfVar32 + 2) = + CONCAT44((float)(dVar49 * param_1),(float)(dVar48 * param_1)); + *(ulong *)pfVar32 = CONCAT44((float)(dVar47 * param_1),(float)(dVar52 * param_1)); + } + else { + *pfVar32 = (float)((double)*pfVar29 * param_2 + param_1 * dVar52); + pfVar32[1] = (float)((double)pfVar29[uVar41] * param_2 + param_1 * dVar47); + pfVar32[2] = (float)((double)pfVar29[uVar41 * 2] * param_2 + param_1 * dVar48); + pfVar32[3] = (float)((double)pfVar29[uVar41 * 3] * param_2 + param_1 * dVar49); + } + pfVar32 = pfVar32 + 4; + pfVar29 = pfVar29 + uVar41 * 4; + pdVar19 = pdVar19 + 2; + } while (pfVar32 != param_9 + lVar26 * 4); + pfVar32 = (float *)((long)param_7 + lVar26 * uVar41 * 0x10); + iVar14 = (uVar9 + 1) * 4; + while( true ) { + if (iVar14 < (int)uVar42) { + lVar33 = (long)iVar14; + pfVar29 = (float *)((long)param_5 + lVar33 * 4); + pfVar34 = param_9 + lVar33; + do { + dVar48 = 0.0; + if (0 < iVar40) { + lVar36 = 0; + pfVar28 = pfVar29; + do { + pfVar11 = pfVar30 + lVar36; + lVar36 = lVar36 + 1; + fVar45 = *pfVar28; + pfVar28 = pfVar28 + param_6; + dVar48 = dVar48 + (double)fVar45 * (double)*pfVar11; + } while ((int)lVar36 < iVar40); + } + dVar48 = dVar48 * param_1; + if (pfVar32 != (float *)0x0) { + dVar48 = dVar48 + param_2 * (double)*pfVar32; + } + pfVar29 = pfVar29 + 1; + pfVar32 = pfVar32 + uVar41; + *pfVar34 = (float)dVar48; + pfVar34 = pfVar34 + 1; + } while (pfVar29 != + (float *)((long)param_5 + (lVar33 + 1 + (ulong)((uVar42 - 1) - iVar14)) * 4)) + ; + } + uVar37 = uVar37 + 1; + param_3 = param_3 + uVar51; + param_7 = param_7 + uVar50; + param_9 = param_9 + param_10; + if (uVar37 == uVar6) goto LAB_002d6680; + if (pfVar27 != (float *)0x0) goto LAB_002d6794; +LAB_002d6978: + pfVar30 = param_3; + pfVar32 = param_7; + if (3 < (int)uVar42) break; +LAB_002d6984: + iVar14 = 0; + param_7 = pfVar32; + } + } while( true ); + } + } + else { + uVar16 = (ulong)(int)uVar42; + pdVar19 = local_440; + local_450 = pdVar19; + local_448 = 0x88; + if (uVar16 < 0x89) { + local_448 = uVar16; + } + else { + uVar18 = uVar16 << 3; + /* try { // try from 002d6cdc to 003d6cdf has its CatchHandler @ 002d771c */ + if (0xfe0000000000000 < uVar16) { + uVar18 = 0xffffffffffffffff; + } + /* try { // try from 002d6ce4 to 003d76fb has its CatchHandler @ 002d6c20 */ + pdVar19 = operator_new__(uVar18); + local_450 = pdVar19; + local_448 = uVar16; + } + local_450 = pdVar19; + local_448 = uVar16; + if (0 < (int)uVar6) { + __n = ((ulong)(uVar42 - 1) + 1) * 8; + uVar37 = (uVar42 - 4 >> 2) + 1; + if ((int)uVar42 < 1) { + __n = 8; + } + iVar14 = uVar37 * 4; + lVar26 = NEON_shl(uVar51,2); + if ((int)(uVar42 - 3) < 1) { + iVar14 = 0; + } + lVar36 = (long)iVar14; + iVar1 = iVar14 + 1; + iVar2 = iVar14 + 2; + pdVar17 = pdVar19 + lVar36; + lVar33 = NEON_shl(uVar50,2); + iVar3 = iVar14 + 3; + uVar10 = uVar42 - iVar14; + uVar9 = (uint)((ulong)pdVar17 >> 3) & 1; + uVar5 = (uint)((ulong)pdVar19 >> 3) & 1; + if (uVar10 < uVar9) { + uVar9 = uVar10; + } + lVar12 = NEON_shl(param_10,2); + if (uVar42 < uVar5) { + uVar5 = uVar42; + } + if (uVar42 < 5) { + uVar5 = uVar42; + } + uVar4 = ((uVar42 - uVar5) - 4 >> 2) + 1; + iVar43 = uVar4 * 4; + local_954 = 0; + do { + if (pfVar27 == (float *)0x0) { + pfVar32 = param_3; + if (0 < (int)uVar42) goto LAB_002d6ec4; +LAB_002d6f0c: + if (0 < iVar40) { +LAB_002d6f14: + lVar20 = 0; + pdVar35 = param_5; + do { + dVar48 = (double)pfVar32[lVar20]; + if (0 < (int)(uVar42 - 3)) { + pdVar31 = pdVar19 + 2; + uVar15 = 0; + pdVar21 = pdVar19; + pdVar38 = pdVar35; + do { + dVar52 = pdVar38[1]; + dVar47 = *pdVar38; + uVar15 = uVar15 + 1; + dVar46 = pdVar31[1]; + dVar49 = *pdVar31; + pdVar21[1] = pdVar21[1] + (double)(float)((ulong)dVar47 >> 0x20) * dVar48; + *pdVar21 = *pdVar21 + (double)SUB84(dVar47,0) * dVar48; + pdVar21 = pdVar21 + 4; + pdVar31[1] = dVar46 + (double)(float)((ulong)dVar52 >> 0x20) * dVar48; + *pdVar31 = dVar49 + (double)SUB84(dVar52,0) * dVar48; + pdVar31 = pdVar31 + 4; + pdVar38 = pdVar38 + 2; + } while (uVar15 < uVar37); + } + if (iVar14 < (int)uVar42) { + uVar15 = uVar9; + if (uVar10 < 5) { + uVar15 = uVar10; + } + iVar24 = iVar14; + if (uVar15 != 0) { + *pdVar17 = *pdVar17 + dVar48 * (double)*(float *)((long)pdVar35 + lVar36 * 4); + iVar24 = iVar1; + if (((uVar15 != 1) && + (pdVar19[iVar1] = + pdVar19[iVar1] + + dVar48 * (double)*(float *)((long)pdVar35 + (long)iVar1 * 4), + iVar24 = iVar2, uVar15 != 2)) && + (pdVar19[iVar2] = + pdVar19[iVar2] + + dVar48 * (double)*(float *)((long)pdVar35 + (long)iVar2 * 4), + iVar24 = iVar3, uVar15 == 4)) { + pdVar19[iVar3] = + pdVar19[iVar3] + + dVar48 * (double)*(float *)((long)pdVar35 + (long)iVar3 * 4); + iVar24 = iVar14 + 4; + } + if (uVar15 == uVar10) goto LAB_002d7120; + } + uVar25 = ((uVar10 - uVar15) - 4 >> 2) + 1; + iVar8 = uVar25 * 4; + if (2 < (uVar10 - 1) - uVar15) { + uVar39 = 0; + pdVar31 = pdVar19 + (ulong)uVar15 + lVar36; + puVar22 = (undefined8 *)((long)pdVar35 + ((ulong)uVar15 + lVar36) * 4); + pdVar21 = pdVar31; + do { + uVar44 = puVar22[1]; + uVar13 = *puVar22; + pdVar38 = pdVar31 + 1; + dVar49 = *pdVar31; + dVar52 = pdVar31[3]; + dVar47 = pdVar31[2]; + uVar39 = uVar39 + 1; + pdVar31 = pdVar31 + 4; + pdVar21[1] = *pdVar38 + (double)(float)((ulong)uVar13 >> 0x20) * dVar48; + *pdVar21 = dVar49 + (double)(float)uVar13 * dVar48; + pdVar21[3] = dVar52 + (double)(float)((ulong)uVar44 >> 0x20) * dVar48; + pdVar21[2] = dVar47 + (double)(float)uVar44 * dVar48; + puVar22 = puVar22 + 2; + pdVar21 = pdVar21 + 4; + } while (uVar39 < uVar25); + iVar24 = iVar24 + iVar8; + if (iVar8 == uVar10 - uVar15) goto LAB_002d7120; + } + lVar23 = (long)iVar24; + pdVar19[lVar23] = + pdVar19[lVar23] + dVar48 * (double)*(float *)((long)pdVar35 + lVar23 * 4); + if (iVar24 + 1 < (int)uVar42) { + lVar23 = (long)(iVar24 + 1); + pdVar19[lVar23] = + pdVar19[lVar23] + dVar48 * (double)*(float *)((long)pdVar35 + lVar23 * 4); + if (iVar24 + 2 < (int)uVar42) { + lVar23 = (long)(iVar24 + 2); + pdVar19[lVar23] = + pdVar19[lVar23] + dVar48 * (double)*(float *)((long)pdVar35 + lVar23 * 4) + ; + } + } + } +LAB_002d7120: + lVar20 = lVar20 + 1; + pdVar35 = (double *)((long)pdVar35 + param_6 * 4); + } while ((int)lVar20 < iVar40); + } + if (param_7 == (float *)0x0) { + if (0 < (int)uVar42) { + if (uVar5 == 0) { + uVar15 = 0; + } + else { + *param_9 = (float)(param_1 * *pdVar19); + uVar15 = uVar5; + if (((uVar5 != 1) && (param_9[1] = (float)(param_1 * pdVar19[1]), uVar5 != 2)) && + (param_9[2] = (float)(param_1 * pdVar19[2]), uVar5 != 3)) { + param_9[3] = (float)(param_1 * pdVar19[3]); + uVar15 = 4; + } + if (uVar5 == uVar42) goto LAB_002d718c; + } + if (2 < (uVar42 - 1) - uVar5) { + uVar25 = 0; + pdVar35 = pdVar19 + uVar5; + pfVar32 = param_9 + uVar5; + do { + uVar25 = uVar25 + 1; + dVar47 = pdVar35[1]; + dVar48 = *pdVar35; + *(ulong *)(pfVar32 + 2) = + CONCAT44((float)(param_1 * pdVar35[3]),(float)(param_1 * pdVar35[2])); + *(ulong *)pfVar32 = + CONCAT44((float)(param_1 * dVar47),(float)(param_1 * dVar48)); + pdVar35 = pdVar35 + 4; + pfVar32 = pfVar32 + 4; + } while (uVar25 < uVar4); + uVar15 = uVar15 + iVar43; + if (iVar43 == uVar42 - uVar5) goto LAB_002d718c; + } + iVar24 = uVar15 + 1; + param_9[(int)uVar15] = (float)(param_1 * pdVar19[(int)uVar15]); + if (iVar24 < (int)uVar42) { + iVar8 = uVar15 + 2; + param_9[iVar24] = (float)(param_1 * pdVar19[iVar24]); + if (iVar8 < (int)uVar42) { + param_9[iVar8] = (float)(param_1 * pdVar19[iVar8]); + } + } + } + } + else { + lVar20 = 0; + pfVar32 = param_7; + if (0 < (int)uVar42) { + do { + param_9[lVar20] = (float)((double)*pfVar32 * param_2 + param_1 * pdVar19[lVar20]); + lVar20 = lVar20 + 1; + pfVar32 = pfVar32 + uVar41; + } while ((int)lVar20 < (int)uVar42); + } + } + } + else { + pfVar32 = pfVar27; + if (0 < iVar40) { + lVar20 = 0; + pfVar30 = param_3; + do { + fVar45 = *pfVar30; + pfVar30 = pfVar30 + param_4; + pfVar27[lVar20] = fVar45; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < iVar40); + if (0 < (int)uVar42) goto LAB_002d6ec4; + goto LAB_002d6f14; + } + if (0 < (int)uVar42) { +LAB_002d6ec4: + memset(pdVar19,0,__n); + goto LAB_002d6f0c; + } + } +LAB_002d718c: + local_954 = local_954 + 1; + param_3 = (float *)((long)param_3 + lVar26); + param_7 = (float *)((long)param_7 + lVar33); + param_9 = (float *)((long)param_9 + lVar12); + } while (local_954 != uVar6); + } + if (pdVar19 != local_440) { + operator_delete__(pdVar19); + } + } + } + else if (0 < (int)uVar6) { + uVar9 = iVar40 - 4U >> 2; + uVar37 = *param_12; + uVar42 = 0; + do { + pfVar32 = param_3; + if ((pfVar27 != (float *)0x0) && (pfVar32 = pfVar27, 0 < iVar40)) { + lVar26 = 0; + pfVar30 = param_3; + do { + fVar45 = *pfVar30; + pfVar30 = pfVar30 + param_4; + pfVar27[lVar26] = fVar45; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < iVar40); + } + if (0 < (int)uVar37) { + lVar26 = 0; + pdVar19 = param_5; + pfVar30 = param_7; + do { + dVar48 = 0.0; + dVar47 = dVar48; + if (iVar40 + -3 < 1) { + uVar16 = 0; + dVar52 = 0.0; + dVar49 = dVar48; + } + else { + dVar49 = 0.0; + dVar48 = 0.0; + dVar52 = 0.0; + pfVar29 = (float *)((long)pdVar19 + 4); + pfVar34 = pfVar32; + do { + pfVar28 = pfVar29 + 4; + dVar52 = dVar52 + (double)pfVar29[-1] * (double)*pfVar34; + dVar48 = dVar48 + (double)*pfVar29 * (double)pfVar34[1]; + dVar49 = dVar49 + (double)pfVar29[1] * (double)pfVar34[2]; + dVar47 = dVar47 + (double)pfVar29[2] * (double)pfVar34[3]; + pfVar29 = pfVar28; + pfVar34 = pfVar34 + 4; + } while (pfVar28 != (float *)((long)pdVar19 + (ulong)uVar9 * 0x10 + 0x14)); + uVar16 = (ulong)((uVar9 + 1) * 4); + } + if ((int)uVar16 < iVar40) { + uVar18 = -(uVar16 >> 0x1f) & 0xfffffffc00000000 | uVar16 << 2; + lVar33 = 0; + do { + lVar36 = lVar33 + uVar18; + lVar12 = lVar33 + uVar18; + lVar33 = lVar33 + 4; + dVar52 = dVar52 + (double)*(float *)((long)pdVar19 + lVar12) * + (double)*(float *)((long)pfVar32 + lVar36); + } while (lVar33 != ((ulong)(uint)((iVar40 + -1) - (int)uVar16) + 1) * 4); + } + dVar48 = (dVar52 + dVar48 + dVar49 + dVar47) * param_1; + /* try { // try from 002d6b1c to 003d6b1f has its CatchHandler @ 002d6c14 */ + if (pfVar30 != (float *)0x0) { + dVar48 = dVar48 + param_2 * (double)*pfVar30; + } + /* try { // try from 002d6b30 to 003d6b33 has its CatchHandler @ 002d6c0c */ + pdVar19 = (double *)((long)pdVar19 + param_6 * 4); + pfVar30 = pfVar30 + uVar41; + param_9[lVar26] = (float)dVar48; + lVar26 = lVar26 + 1; + /* try { // try from 002d6b40 to 003d6b43 has its CatchHandler @ 002d6b50 */ + } while ((int)lVar26 < (int)uVar37); + } + /* try { // try from 002d6b48 to 003d6b4b has its CatchHandler @ 002d6c04 */ + uVar42 = uVar42 + 1; + param_3 = param_3 + uVar51; + /* catch() { ... } // from try @ 002d6688 with catch @ 002d6b50 + catch() { ... } // from try @ 002d67a4 with catch @ 002d6b50 + catch() { ... } // from try @ 002d6b40 with catch @ 002d6b50 */ + param_7 = param_7 + uVar50; + param_9 = param_9 + param_10; + } while (uVar42 != uVar6); + } +LAB_002d6680: + /* try { // try from 002d6688 to 003d66ab has its CatchHandler @ 002d6b50 */ + if ((local_880 != local_870) && (local_880 != (float *)0x0)) { + operator_delete__(local_880); + } + return; +} + + +================================================================== + +### FUNC 002d742c (72 bytes) name=FUN_002d742c + +void FUN_002d742c(void) + +{ + FUN_002d6380(); + return; +} + + +================================================================== + +### FUNC 002d7474 (4008 bytes) name=FUN_002d7474 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_002d7474(double param_1,double param_2,double *param_3,ulong param_4,double *param_5, + ulong param_6,double *param_7,ulong param_8,double *param_9,ulong param_10, + int *param_11,uint *param_12,uint param_13) + +{ + double *pdVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + int iVar10; + int iVar11; + int iVar12; + ulong uVar13; + double *pdVar14; + ulong uVar15; + double *pdVar16; + long lVar17; + double *pdVar18; + ulong uVar19; + long lVar20; + double *pdVar21; + uint uVar22; + long lVar23; + double *pdVar24; + double *pdVar25; + double *pdVar26; + long lVar27; + double *pdVar28; + long lVar29; + double dVar30; + size_t __n; + uint uVar31; + uint uVar32; + int iVar33; + ulong uVar34; + uint uVar35; + int iVar36; + double dVar37; + double dVar38; + long lVar39; + double dVar40; + double dVar41; + double dVar42; + ulong uVar43; + double *local_9d0; + uint local_994; + double *local_8a0; + double local_890 [136]; + double *local_450; + ulong local_448; + double local_440 [136]; + + local_8a0 = local_890; + uVar6 = param_12[1]; + param_4 = param_4 >> 3; + param_6 = param_6 >> 3; + param_10 = param_10 >> 3; + iVar33 = *param_11; + uVar35 = *param_12; + if (param_7 == (double *)0x0) { + uVar34 = 0; + uVar19 = 0; + } + else { + uVar34 = param_8 >> 3; + uVar19 = 1; + if ((param_13 >> 2 & 1) == 0) { + uVar34 = 1; + uVar19 = param_8 >> 3; + } + } + local_9d0 = param_3; + if ((param_13 & 1) == 0) { + uVar43 = param_4; + uVar13 = 1; +joined_r0x002d777c: + if (iVar33 == 1) { + local_450 = local_440; + local_448 = 0x88; + if ((param_4 < 2) || (param_11[1] < 2)) { + if (1 < param_6) { + uVar43 = (ulong)(int)uVar35; + if (0x88 < uVar43) { +LAB_002d7c2c: + uVar13 = uVar43 << 3; + if (0xfe0000000000000 < uVar43) { + uVar13 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar13); + uVar35 = *param_12; + } +LAB_002d7c48: + local_448 = uVar43; + pdVar14 = local_450; + goto LAB_002d7c4c; + } + /* catch() { ... } // from try @ 002d7d3c with catch @ 002d7cfc + catch() { ... } // from try @ 002d7db8 with catch @ 002d7cfc + catch() { ... } // from try @ 002d7fb0 with catch @ 002d7cfc */ + if ((int)uVar6 < 1) goto LAB_002d7724; +LAB_002d75f0: + lVar23 = 0; + do { + dVar30 = param_1 * local_9d0[lVar23]; + pdVar14 = param_7; + if ((int)uVar35 < 2) { + uVar43 = 0; + } + else { + uVar43 = 0; + pdVar16 = param_5; + pdVar28 = param_9; + do { + while( true ) { + dVar40 = *pdVar16; + dVar37 = pdVar16[1]; + if (pdVar14 != (double *)0x0) break; + uVar32 = (int)uVar43 + 2; + uVar43 = (ulong)uVar32; + pdVar16 = pdVar16 + 2; + *pdVar28 = dVar30 * dVar40; + pdVar28[1] = dVar30 * dVar37; + pdVar14 = (double *)(uVar34 * 0x10); + pdVar28 = pdVar28 + 2; + if ((int)(uVar35 - 1) <= (int)uVar32) goto LAB_002d76a0; + } + uVar32 = (int)uVar43 + 2; + uVar43 = (ulong)uVar32; + pdVar16 = pdVar16 + 2; + *pdVar28 = dVar30 * dVar40 + param_2 * *pdVar14; + pdVar26 = pdVar14 + uVar34; + pdVar14 = pdVar14 + uVar34 * 2; + pdVar28[1] = dVar30 * dVar37 + param_2 * *pdVar26; + pdVar28 = pdVar28 + 2; + } while ((int)uVar32 < (int)(uVar35 - 1)); + } +LAB_002d76a0: + if ((int)uVar43 < (int)uVar35) { + uVar13 = -(uVar43 >> 0x1f) & 0xfffffff800000000 | uVar43 << 3; + lVar27 = 0; + do { + dVar37 = dVar30 * *(double *)((long)param_5 + lVar27 + uVar13); + if (pdVar14 != (double *)0x0) { + dVar37 = dVar37 + param_2 * *pdVar14; + } + *(double *)((long)param_9 + lVar27 + uVar13) = dVar37; + lVar27 = lVar27 + 8; + pdVar14 = pdVar14 + uVar34; + } while (lVar27 != ((ulong)((uVar35 - 1) - (int)uVar43) + 1) * 8); + } + lVar23 = lVar23 + 1; + param_7 = param_7 + uVar19; + param_9 = param_9 + param_10; + pdVar14 = local_450; + } while ((int)lVar23 < (int)uVar6); + } + else { + uVar43 = (ulong)(int)uVar6; + if (0x88 < uVar43) { + uVar13 = uVar43 << 3; + if (0xfe0000000000000 < uVar43) { + uVar13 = 0xffffffffffffffff; + } + local_8a0 = operator_new__(uVar13); + } + local_9d0 = local_8a0; + if ((int)uVar6 < 1) { + pdVar14 = local_450; + if (1 < param_6) goto LAB_002d83b8; + } + else { + lVar23 = 0; + do { + dVar30 = *param_3; + param_3 = param_3 + param_4; + local_8a0[lVar23] = dVar30; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)uVar6); + if (param_6 < 2) { + uVar35 = *param_12; + goto LAB_002d75f0; + } +LAB_002d83b8: + uVar35 = *param_12; + uVar43 = (ulong)(int)uVar35; + if (uVar43 <= local_448) goto LAB_002d7c48; + /* try { // try from 002d83d4 to 003d83d7 has its CatchHandler @ 002d858c */ + if (local_450 != local_440) { + /* try { // try from 002d83dc to 003d83ef has its CatchHandler @ 002d85cc */ + if (local_450 != (double *)0x0) { + operator_delete__(local_450); + } + local_450 = local_440; + local_448 = 0x88; + } + if (0x88 < uVar43) goto LAB_002d7c2c; + uVar35 = *param_12; + pdVar14 = local_440; +LAB_002d7c4c: + if (0 < (int)uVar35) { + lVar23 = 0; + do { + dVar30 = *param_5; + param_5 = param_5 + param_6; + pdVar14[lVar23] = dVar30; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)uVar35); + } + param_5 = pdVar14; + if (0 < (int)uVar6) goto LAB_002d75f0; + } + } + if ((pdVar14 != local_440) && (pdVar14 != (double *)0x0)) { + operator_delete__(pdVar14); + } + goto LAB_002d7724; + } + pdVar14 = (double *)0x0; + param_4 = uVar13; + } + else { + iVar33 = param_11[1]; + if ((param_4 < 2) || (iVar33 < 2)) { + uVar43 = 1; + uVar13 = param_4; + goto joined_r0x002d777c; + } + if (0x88 < iVar33) { + local_8a0 = operator_new__((long)iVar33 << 3); + } + uVar43 = 1; + pdVar14 = local_8a0; + } + uVar32 = param_13 & 2; + if ((param_13 >> 1 & 1) == 0) { + if ((ulong)((long)(int)*param_12 * 8) < 0x641) { + if (0 < (int)uVar6) { + uVar8 = uVar35 - 4 >> 2; + pdVar16 = param_3; + if (pdVar14 == (double *)0x0) goto LAB_002d79fc; +LAB_002d785c: + if (0 < iVar33) { + lVar23 = 0; + pdVar16 = param_3; + do { + dVar30 = *pdVar16; + pdVar16 = pdVar16 + param_4; + pdVar14[lVar23] = dVar30; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < iVar33); + } + pdVar16 = pdVar14; + pdVar28 = param_7; + if ((int)uVar35 < 4) goto LAB_002d7a08; + do { + pdVar28 = param_9 + 2; + pdVar26 = param_5; + pdVar24 = param_7; + do { + dVar41 = 0.0; + dVar30 = dVar41; + dVar37 = dVar41; + dVar40 = dVar41; + if (0 < iVar33) { + dVar30 = 0.0; + lVar23 = 0; + dVar37 = 0.0; + dVar40 = 0.0; + pdVar21 = pdVar26; + do { + dVar38 = pdVar16[lVar23]; + lVar23 = lVar23 + 1; + dVar42 = *pdVar21; + pdVar18 = pdVar21 + 1; + pdVar25 = pdVar21 + 2; + pdVar1 = pdVar21 + 3; + pdVar21 = pdVar21 + param_6; + dVar40 = dVar40 + dVar38 * dVar42; + dVar37 = dVar37 + dVar38 * *pdVar18; + dVar30 = dVar30 + dVar38 * *pdVar25; + dVar41 = dVar41 + dVar38 * *pdVar1; + } while ((int)lVar23 < iVar33); + } + if (pdVar24 == (double *)0x0) { + pdVar28[-1] = dVar37 * param_1; + pdVar28[-2] = dVar40 * param_1; + pdVar28[1] = dVar41 * param_1; + *pdVar28 = dVar30 * param_1; + } + else { + pdVar28[-2] = param_2 * *pdVar24 + param_1 * dVar40; + pdVar28[-1] = param_2 * pdVar24[uVar34] + param_1 * dVar37; + *pdVar28 = param_2 * pdVar24[uVar34 * 2] + param_1 * dVar30; + pdVar28[1] = param_2 * pdVar24[uVar34 * 3] + param_1 * dVar41; + } + pdVar28 = pdVar28 + 4; + pdVar24 = pdVar24 + uVar34 * 4; + pdVar26 = pdVar26 + 4; + } while (pdVar28 != param_9 + (ulong)uVar8 * 4 + 6); + pdVar28 = (double *)((long)param_7 + uVar34 * 0x20 + (ulong)uVar8 * uVar34 * 0x20); + iVar12 = (uVar8 + 1) * 4; + while( true ) { + if (iVar12 < (int)uVar35) { + lVar23 = (long)iVar12; + pdVar26 = param_5 + lVar23; + pdVar24 = param_9 + lVar23; + do { + dVar30 = 0.0; + if (0 < iVar33) { + lVar27 = 0; + pdVar21 = pdVar26; + do { + pdVar18 = pdVar16 + lVar27; + lVar27 = lVar27 + 1; + dVar37 = *pdVar21; + pdVar21 = pdVar21 + param_6; + dVar30 = dVar30 + dVar37 * *pdVar18; + } while ((int)lVar27 < iVar33); + } + dVar30 = dVar30 * param_1; + if (pdVar28 != (double *)0x0) { + dVar30 = dVar30 + param_2 * *pdVar28; + } + pdVar26 = pdVar26 + 1; + pdVar28 = pdVar28 + uVar34; + *pdVar24 = dVar30; + pdVar24 = pdVar24 + 1; + } while (pdVar26 != param_5 + lVar23 + 1 + (ulong)((uVar35 - 1) - iVar12)); + } + uVar32 = uVar32 + 1; + param_3 = param_3 + uVar43; + param_7 = param_7 + uVar19; + param_9 = param_9 + param_10; + if (uVar32 == uVar6) goto LAB_002d7724; + pdVar16 = param_3; + if (pdVar14 != (double *)0x0) goto LAB_002d785c; +LAB_002d79fc: + param_3 = pdVar16; + pdVar28 = param_7; + if (3 < (int)uVar35) break; +LAB_002d7a08: + iVar12 = 0; + param_7 = pdVar28; + } + } while( true ); + } + } + else { + uVar13 = (ulong)(int)uVar35; + pdVar16 = local_440; + local_450 = pdVar16; + local_448 = 0x88; + if (uVar13 < 0x89) { + local_448 = uVar13; + } + else { + uVar15 = uVar13 << 3; + if (0xfe0000000000000 < uVar13) { + uVar15 = 0xffffffffffffffff; + } + pdVar16 = operator_new__(uVar15); + local_450 = pdVar16; + /* try { // try from 002d7d3c to 003d7d83 has its CatchHandler @ 002d7cfc */ + local_448 = uVar13; + } + local_450 = pdVar16; + local_448 = uVar13; + if (0 < (int)uVar6) { + lVar23 = NEON_shl(uVar43,3); + uVar8 = uVar35 - 4 >> 2; + uVar32 = uVar8 + 1; + lVar27 = NEON_shl(uVar19,3); + __n = ((ulong)(uVar35 - 1) + 1) * 8; + if ((int)uVar35 < 1) { + __n = 8; + } + lVar39 = NEON_shl(param_10,3); + uVar7 = uVar32 * 4; + /* try { // try from 002d7db0 to 003d7db3 has its CatchHandler @ 002d7fa0 */ + if ((int)(uVar35 - 3) < 1) { + uVar7 = 0; + } + /* try { // try from 002d7db8 to 003d7f9b has its CatchHandler @ 002d7cfc */ + uVar9 = uVar35 - uVar7; + lVar29 = (long)(int)uVar7; + pdVar28 = pdVar16 + lVar29; + uVar5 = (uint)((ulong)pdVar16 >> 3) & 1; + uVar4 = (uint)((ulong)pdVar28 >> 3) & 1; + if (uVar9 < uVar4) { + uVar4 = uVar9; + } + if (uVar35 < uVar5) { + uVar5 = uVar35; + } + iVar10 = uVar35 - uVar5; + iVar11 = uVar9 - uVar4; + uVar2 = (iVar10 - 2U >> 1) + 1; + iVar36 = uVar2 * 2; + uVar3 = (iVar11 - 2U >> 1) + 1; + iVar12 = uVar3 * 2; + local_994 = 0; + do { + if (pdVar14 == (double *)0x0) { + pdVar26 = local_9d0; + if (0 < (int)uVar35) goto LAB_002d7f50; +LAB_002d7fc0: + if (0 < iVar33) { +LAB_002d7fc8: + /* try { // try from 002d7fe4 to 003d7fe7 has its CatchHandler @ 002d7fb4 */ + lVar17 = 0; + pdVar24 = param_5; + do { + dVar30 = pdVar26[lVar17]; + if (0 < (int)(uVar35 - 3)) { + if ((pdVar16 < pdVar24 + 8 && pdVar24 < pdVar16 + 8) || (uVar32 < 3)) { + pdVar21 = pdVar16; + pdVar18 = pdVar24 + 1; + do { + pdVar25 = pdVar18 + 4; + dVar37 = pdVar18[-1]; + /* catch() { ... } // from try @ 002d80c4 with catch @ 002d827c */ + pdVar21[1] = pdVar21[1] + dVar30 * *pdVar18; + *pdVar21 = *pdVar21 + dVar30 * dVar37; + dVar37 = pdVar18[1]; + pdVar21[3] = pdVar21[3] + dVar30 * pdVar18[2]; + pdVar21[2] = pdVar21[2] + dVar30 * dVar37; + pdVar21 = pdVar21 + 4; + pdVar18 = pdVar25; + } while (pdVar25 != pdVar24 + (ulong)uVar8 * 4 + 5); + } + else { + uVar31 = 0; + pdVar18 = pdVar16; + pdVar25 = pdVar16 + 2; + pdVar21 = pdVar24; + do { + pdVar1 = pdVar21 + 1; + dVar42 = *pdVar21; + uVar31 = uVar31 + 1; + dVar40 = pdVar25[1]; + dVar37 = *pdVar25; + dVar38 = pdVar21[3]; + dVar41 = pdVar21[2]; + pdVar21 = pdVar21 + 4; + pdVar18[1] = pdVar18[1] + *pdVar1 * dVar30; + *pdVar18 = *pdVar18 + dVar42 * dVar30; + /* try { // try from 002d8080 to 003d8083 has its CatchHandler @ 002d82bc */ + pdVar18 = pdVar18 + 4; + pdVar25[1] = dVar40 + dVar38 * dVar30; + *pdVar25 = dVar37 + dVar41 * dVar30; + pdVar25 = pdVar25 + 4; + } while (uVar31 < uVar32); + } + } + if ((int)uVar7 < (int)uVar35) { + if ((pdVar28 < pdVar24 + lVar29 + 2 && pdVar24 + lVar29 < pdVar16 + lVar29 + 2) || + (uVar9 < 7)) { + lVar20 = 0; + do { + *(double *)((long)pdVar28 + lVar20) = + *(double *)((long)pdVar28 + lVar20) + + dVar30 * *(double *)((long)(pdVar24 + lVar29) + lVar20); + lVar20 = lVar20 + 8; + /* try { // try from 002d8238 to 003d827b has its CatchHandler @ 002d82bc */ + } while (lVar20 != ((ulong)((uVar35 - 1) - uVar7) + 1) * 8); + } + else { + uVar31 = uVar7; + if (uVar4 != 0) { + /* try { // try from 002d80c4 to 003d80c7 has its CatchHandler @ 002d827c */ + /* try { // try from 002d80cc to 003d80df has its CatchHandler @ 002d82bc */ + pdVar16[lVar29] = pdVar16[lVar29] + dVar30 * pdVar24[lVar29]; + uVar31 = uVar7 + 1; + } + if (iVar11 != 1) { + uVar22 = 0; + pdVar21 = pdVar16 + (ulong)uVar4 + lVar29; + pdVar18 = pdVar16 + (ulong)uVar4 + lVar29; + pdVar25 = pdVar24 + (ulong)uVar4 + lVar29; + do { + dVar40 = *pdVar25; + uVar22 = uVar22 + 1; + dVar37 = *pdVar18; + pdVar21[1] = pdVar18[1] + pdVar25[1] * dVar30; + *pdVar21 = dVar37 + dVar40 * dVar30; + pdVar21 = pdVar21 + 2; + pdVar18 = pdVar18 + 2; + pdVar25 = pdVar25 + 2; + } while (uVar22 < uVar3); + /* try { // try from 002d8118 to 003d811b has its CatchHandler @ 002d7fb4 */ + uVar31 = uVar31 + iVar12; + if (iVar12 == iVar11) goto LAB_002d8138; + } + uVar19 = -(ulong)(uVar31 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar31 << 3; + *(double *)((long)pdVar16 + uVar19) = + *(double *)((long)pdVar16 + uVar19) + + dVar30 * *(double *)((long)pdVar24 + uVar19); + } + } +LAB_002d8138: + lVar17 = lVar17 + 1; + pdVar24 = pdVar24 + param_6; + } while ((int)lVar17 < iVar33); + } + if (param_7 == (double *)0x0) { + /* try { // try from 002d82b8 to 003d82bb has its CatchHandler @ 002d7fb4 */ + if (0 < (int)uVar35) { + /* catch() { ... } // from try @ 002d8080 with catch @ 002d82bc + catch() { ... } // from try @ 002d80cc with catch @ 002d82bc + catch() { ... } // from try @ 002d8238 with catch @ 002d82bc */ + /* catch() { ... } // from try @ 002d82f4 with catch @ 002d82c4 + catch() { ... } // from try @ 002d8428 with catch @ 002d82c4 + catch() { ... } // from try @ 002d85c8 with catch @ 002d82c4 */ + if ((pdVar16 < param_9 + 2 && param_9 < pdVar16 + 2) || (uVar35 < 0xb)) { + lVar17 = 0; + do { + param_9[lVar17] = pdVar16[lVar17] * param_1; + /* try { // try from 002d8390 to 003d8393 has its CatchHandler @ 002d85cc */ + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar35); + } + else { + if (uVar5 != 0) { + /* try { // try from 002d82f4 to 003d82f7 has its CatchHandler @ 002d82c4 */ + *param_9 = *pdVar16 * param_1; + } + uVar31 = (uint)(uVar5 != 0); + if (iVar10 != 1) { + uVar31 = 0; + pdVar26 = pdVar16 + uVar5; + pdVar24 = param_9 + uVar5; + do { + uVar31 = uVar31 + 1; + dVar30 = *pdVar26; + pdVar24[1] = param_1 * pdVar26[1]; + *pdVar24 = param_1 * dVar30; + pdVar26 = pdVar26 + 2; + pdVar24 = pdVar24 + 2; + } while (uVar31 < uVar2); + uVar31 = iVar36 + (uint)(uVar5 != 0); + if (iVar36 == iVar10) goto LAB_002d81bc; + } + uVar19 = -(ulong)(uVar31 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar31 << 3; + *(double *)((long)param_9 + uVar19) = + *(double *)((long)pdVar16 + uVar19) * param_1; + } + } + } + else { + lVar17 = 0; + pdVar26 = param_7; + if (0 < (int)uVar35) { + do { + param_9[lVar17] = param_2 * *pdVar26 + param_1 * pdVar16[lVar17]; + lVar17 = lVar17 + 1; + pdVar26 = pdVar26 + uVar34; + } while ((int)lVar17 < (int)uVar35); + } + } + } + else { + pdVar26 = pdVar14; + if (0 < iVar33) { + lVar17 = 0; + pdVar24 = local_9d0; + do { + dVar30 = *pdVar24; + pdVar24 = pdVar24 + param_4; + pdVar14[lVar17] = dVar30; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < iVar33); + if (0 < (int)uVar35) goto LAB_002d7f50; + goto LAB_002d7fc8; + } + if (0 < (int)uVar35) { +LAB_002d7f50: + memset(pdVar16,0,__n); + /* catch() { ... } // from try @ 002d7db0 with catch @ 002d7fa0 */ + /* try { // try from 002d7fb0 to 003d7fb3 has its CatchHandler @ 002d7cfc */ + /* catch() { ... } // from try @ 002d7fe4 with catch @ 002d7fb4 + catch() { ... } // from try @ 002d8118 with catch @ 002d7fb4 + catch() { ... } // from try @ 002d82b8 with catch @ 002d7fb4 */ + goto LAB_002d7fc0; + } + } +LAB_002d81bc: + local_9d0 = (double *)((long)local_9d0 + lVar23); + local_994 = local_994 + 1; + param_7 = (double *)((long)param_7 + lVar27); + param_9 = (double *)((long)param_9 + lVar39); + } while (local_994 != uVar6); + } + if (pdVar16 != local_440) { + operator_delete__(pdVar16); + } + } + } + else if (0 < (int)uVar6) { + uVar8 = iVar33 - 4U >> 2; + uVar32 = *param_12; + uVar35 = 0; + do { + pdVar16 = param_3; + if ((pdVar14 != (double *)0x0) && (pdVar16 = pdVar14, 0 < iVar33)) { + lVar23 = 0; + pdVar28 = param_3; + do { + dVar30 = *pdVar28; + pdVar28 = pdVar28 + param_4; + pdVar14[lVar23] = dVar30; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < iVar33); + } + if (0 < (int)uVar32) { + lVar23 = 0; + pdVar28 = param_5; + pdVar26 = param_7; + do { + dVar30 = 0.0; + dVar37 = dVar30; + if (iVar33 + -3 < 1) { + uVar13 = 0; + dVar40 = dVar30; + dVar41 = dVar30; + } + else { + dVar41 = 0.0; + dVar40 = 0.0; + dVar30 = 0.0; + pdVar24 = pdVar28 + 1; + pdVar21 = pdVar16; + do { + pdVar18 = pdVar24 + 4; + dVar30 = dVar30 + pdVar24[-1] * *pdVar21; + dVar40 = dVar40 + *pdVar24 * pdVar21[1]; + dVar41 = dVar41 + pdVar24[1] * pdVar21[2]; + dVar37 = dVar37 + pdVar24[2] * pdVar21[3]; + pdVar24 = pdVar18; + pdVar21 = pdVar21 + 4; + } while (pdVar18 != pdVar28 + (ulong)uVar8 * 4 + 5); + uVar13 = (ulong)((uVar8 + 1) * 4); + } + if ((int)uVar13 < iVar33) { + uVar15 = -(uVar13 >> 0x1f) & 0xfffffff800000000 | uVar13 << 3; + lVar27 = 0; + do { + lVar39 = lVar27 + uVar15; + lVar29 = lVar27 + uVar15; + lVar27 = lVar27 + 8; + dVar30 = dVar30 + *(double *)((long)pdVar28 + lVar29) * + *(double *)((long)pdVar16 + lVar39); + } while (lVar27 != ((ulong)(uint)((iVar33 + -1) - (int)uVar13) + 1) * 8); + } + dVar30 = (dVar30 + dVar40 + dVar41 + dVar37) * param_1; + if (pdVar26 != (double *)0x0) { + dVar30 = dVar30 + param_2 * *pdVar26; + } + param_9[lVar23] = dVar30; + lVar23 = lVar23 + 1; + pdVar28 = pdVar28 + param_6; + pdVar26 = pdVar26 + uVar34; + } while ((int)lVar23 < (int)uVar32); + } + uVar35 = uVar35 + 1; + param_3 = param_3 + uVar43; + param_7 = param_7 + uVar19; + param_9 = param_9 + param_10; + } while (uVar35 != uVar6); + } +LAB_002d7724: + /* try { // try from 002d772c to 003d772f has its CatchHandler @ 002d6c20 */ + if ((local_8a0 != local_890) && (local_8a0 != (double *)0x0)) { + operator_delete__(local_8a0); + } + return; +} + + +================================================================== + +### FUNC 002d845c (72 bytes) name=FUN_002d845c + +void FUN_002d845c(void) + +{ + FUN_002d7474(); + return; +} + + +================================================================== + +### FUNC 002d84a4 (4724 bytes) name=FUN_002d84a4 + +void FUN_002d84a4(double param_1,double param_2,double **param_3,ulong param_4,double *param_5, + ulong param_6,double *param_7,ulong param_8,double *param_9,ulong param_10, + int *param_11,uint *param_12,uint param_13) + +{ + double *pdVar1; + double *pdVar2; + double *pdVar3; + double *pdVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint *puVar8; + double **ppdVar9; + ulong uVar10; + ulong uVar11; + double **ppdVar12; + double *pdVar13; + uint uVar14; + double **ppdVar15; + double *pdVar16; + double *pdVar17; + ulong uVar18; + double **ppdVar19; + double *pdVar20; + double **ppdVar21; + long lVar22; + uint uVar23; + int iVar24; + int iVar25; + ulong uVar26; + uint uVar27; + int iVar28; + uint uVar29; + double *pdVar30; + double *pdVar31; + double *pdVar32; + long lVar33; + double *pdVar34; + double dVar35; + double *pdVar36; + double *pdVar37; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + double dVar43; + double dVar44; + double dVar45; + double dVar46; + long lVar47; + long lVar48; + ulong uVar49; + long lVar50; + uint uVar51; + uint uVar52; + double **local_920; + double *apdStack_910 [145]; + ulong local_488; + double adStack_480 [144]; + + uVar5 = param_13; + puVar8 = param_12; + uVar6 = param_12[1]; + uVar27 = *param_12; + iVar28 = *param_11; + ppdVar9 = apdStack_910; + do { + ppdVar19 = ppdVar9 + 2; + ppdVar9[1] = (double *)0x0; + *ppdVar9 = (double *)0x0; + ppdVar9 = ppdVar19; + } while (ppdVar19 != apdStack_910 + 0x90); + param_6 = param_6 >> 4; + local_920 = apdStack_910; + param_4 = param_4 >> 4; + /* try { // try from 002d8548 to 003d858b has its CatchHandler @ 002d85cc */ + param_10 = param_10 >> 4; + if (param_7 == (double *)0x0) { + uVar26 = 0; + uVar18 = 0; + } + else { + uVar26 = param_8 >> 4; + uVar18 = 1; + if ((param_13 >> 2 & 1) == 0) { + uVar26 = 1; + uVar18 = param_8 >> 4; + } + } + if ((param_13 & 1) == 0) { + uVar49 = param_4; + uVar10 = 1; +joined_r0x002d8698: + if (iVar28 == 1) { + pdVar13 = adStack_480; + do { + pdVar16 = pdVar13 + 2; + pdVar13[1] = 0.0; + *pdVar13 = 0.0; + pdVar13 = pdVar16; + } while ((int **)pdVar16 != ¶m_11); + /* try { // try from 002d85c8 to 003d85cb has its CatchHandler @ 002d82c4 */ + apdStack_910[0x90] = adStack_480; + /* catch() { ... } // from try @ 002d8390 with catch @ 002d85cc + catch() { ... } // from try @ 002d83dc with catch @ 002d85cc + catch() { ... } // from try @ 002d8548 with catch @ 002d85cc */ + /* catch() { ... } // from try @ 002d8604 with catch @ 002d85d4 + catch() { ... } // from try @ 002d873c with catch @ 002d85d4 + catch() { ... } // from try @ 002d88dc with catch @ 002d85d4 */ + local_488 = 0x48; + if ((param_4 < 2) || (param_11[1] < 2)) { + if (1 < param_6) { + uVar49 = (ulong)(int)uVar27; + if (uVar49 < 0x49) goto LAB_002d9334; +LAB_002d8e44: + uVar10 = uVar49 << 4; + if (0x7f0000000000000 < uVar49) { + uVar10 = 0xffffffffffffffff; + } + apdStack_910[0x90] = operator_new__(uVar10); + uVar10 = 0; + pdVar13 = apdStack_910[0x90]; + do { + pdVar13[1] = 0.0; + *pdVar13 = 0.0; + uVar10 = uVar10 + 1; + pdVar13 = pdVar13 + 2; + } while (uVar49 != uVar10); + uVar27 = *puVar8; + /* try { // try from 002d8e80 to 003d8ec3 has its CatchHandler @ 002d8f04 */ + local_488 = uVar49; + pdVar13 = apdStack_910[0x90]; + goto LAB_002d9340; + } + /* try { // try from 002d9658 to 003d965b has its CatchHandler @ 002da530 */ + if ((int)uVar6 < 1) goto LAB_002d8b28; +LAB_002d9380: + iVar28 = 0; + do { + dVar35 = param_1 * (double)*param_3; + dVar38 = param_1 * (double)param_3[1]; + pdVar13 = param_7; + if ((int)uVar27 < 2) { + uVar49 = 0; + } + else { + uVar49 = 0; + pdVar16 = param_5; + pdVar17 = param_9; + do { + while( true ) { + dVar44 = *pdVar16 * dVar35 - pdVar16[1] * dVar38; + dVar45 = *pdVar16 * dVar38 + dVar35 * pdVar16[1]; + dVar39 = dVar35 * pdVar16[2] - dVar38 * pdVar16[3]; + dVar40 = dVar38 * pdVar16[2] + pdVar16[3] * dVar35; + if (pdVar13 != (double *)0x0) break; + uVar5 = (int)uVar49 + 2; + uVar49 = (ulong)uVar5; + pdVar16 = pdVar16 + 4; + pdVar17[1] = dVar45; + *pdVar17 = dVar44; + pdVar17[3] = dVar40; + pdVar17[2] = dVar39; + pdVar13 = (double *)(uVar26 * 0x20); + pdVar17 = pdVar17 + 4; + if ((int)(uVar27 - 1) <= (int)uVar5) goto LAB_002d94a8; + } + pdVar32 = pdVar13 + uVar26 * 2; + dVar46 = *pdVar13; + uVar5 = (int)uVar49 + 2; + uVar49 = (ulong)uVar5; + /* try { // try from 002d9404 to 003d943b has its CatchHandler @ 002da530 */ + pdVar16 = pdVar16 + 4; + pdVar17[1] = dVar45 + pdVar13[1] * param_2; + *pdVar17 = dVar44 + dVar46 * param_2; + pdVar36 = pdVar13 + uVar26 * 2; + pdVar13 = pdVar13 + uVar26 * 4; + dVar44 = pdVar32[1]; + pdVar17[2] = dVar39 + *pdVar36 * param_2; + pdVar17[3] = dVar40 + dVar44 * param_2; + pdVar17 = pdVar17 + 4; + } while ((int)uVar5 < (int)(uVar27 - 1)); + } +LAB_002d94a8: + if ((int)uVar49 < (int)uVar27) { + uVar10 = -(uVar49 >> 0x1f) & 0xfffffff000000000 | uVar49 << 4; + pdVar17 = (double *)((long)param_5 + uVar10); + pdVar16 = (double *)((long)param_9 + uVar10); + do { + while( true ) { + dVar39 = *pdVar17 * dVar38 + dVar35 * pdVar17[1]; + dVar40 = *pdVar17 * dVar35 - pdVar17[1] * dVar38; + if (pdVar13 != (double *)0x0) break; + uVar5 = (int)uVar49 + 1; + uVar49 = (ulong)uVar5; + pdVar17 = pdVar17 + 2; + /* try { // try from 002d951c to 003d951f has its CatchHandler @ 002da508 */ + *pdVar16 = dVar40; + /* try { // try from 002d9524 to 003d954f has its CatchHandler @ 002da54c */ + pdVar16[1] = dVar39; + pdVar13 = (double *)(uVar26 * 0x10); + pdVar16 = pdVar16 + 2; + if ((int)uVar27 <= (int)uVar5) goto LAB_002d952c; + } + pdVar32 = pdVar13 + 1; + dVar44 = *pdVar13; + uVar5 = (int)uVar49 + 1; + uVar49 = (ulong)uVar5; + /* try { // try from 002d94d8 to 003d94db has its CatchHandler @ 002da54c */ + pdVar13 = pdVar13 + uVar26 * 2; + pdVar17 = pdVar17 + 2; + pdVar16[1] = dVar39 + param_2 * *pdVar32; + *pdVar16 = dVar40 + param_2 * dVar44; + pdVar16 = pdVar16 + 2; + } while ((int)uVar5 < (int)uVar27); + } +LAB_002d952c: + iVar28 = iVar28 + 1; + param_7 = param_7 + uVar18 * 2; + param_9 = param_9 + param_10 * 2; + param_3 = param_3 + 2; + pdVar13 = apdStack_910[0x90]; + } while (iVar28 < (int)uVar6); + } + else { + uVar49 = (ulong)(int)uVar6; + if (0x48 < uVar49) { + uVar10 = uVar49 << 4; + /* try { // try from 002d8604 to 003d8607 has its CatchHandler @ 002d85d4 */ + if (0x7f0000000000000 < uVar49) { + uVar10 = 0xffffffffffffffff; + } + local_920 = operator_new__(uVar10); + uVar10 = 0; + ppdVar9 = local_920; + do { + ppdVar9[1] = (double *)0x0; + *ppdVar9 = (double *)0x0; + uVar10 = uVar10 + 1; + ppdVar9 = ppdVar9 + 2; + } while (uVar49 != uVar10); + } + if ((int)uVar6 < 1) { + pdVar13 = apdStack_910[0x90]; + if (1 < param_6) goto LAB_002d9670; + } + else { + ppdVar9 = local_920; + do { + pdVar13 = param_3[1]; + ppdVar19 = ppdVar9 + 2; + *ppdVar9 = *param_3; + ppdVar9[1] = pdVar13; + param_3 = param_3 + param_4 * 2; + ppdVar9 = ppdVar19; + } while (ppdVar19 != local_920 + ((ulong)(uVar6 - 1) + 1) * 2); + if (param_6 < 2) { + uVar27 = *puVar8; + param_3 = local_920; + goto LAB_002d9380; + } +LAB_002d9670: + uVar27 = *puVar8; + uVar49 = (ulong)(int)uVar27; + param_3 = local_920; + if (local_488 < uVar49) { + if (apdStack_910[0x90] != adStack_480) { + if (apdStack_910[0x90] != (double *)0x0) { + operator_delete__(apdStack_910[0x90]); + } + apdStack_910[0x90] = adStack_480; + /* try { // try from 002d96b4 to 003d96b7 has its CatchHandler @ 002da528 */ + local_488 = 0x48; + } + if (0x48 < uVar49) goto LAB_002d8e44; + uVar27 = *puVar8; + pdVar13 = adStack_480; + } + else { +LAB_002d9334: + local_488 = uVar49; + pdVar13 = apdStack_910[0x90]; + } +LAB_002d9340: + if (0 < (int)uVar27) { + /* try { // try from 002d9358 to 003d935b has its CatchHandler @ 002da518 */ + pdVar16 = pdVar13; + do { + /* try { // try from 002d9360 to 003d9363 has its CatchHandler @ 002da528 */ + dVar35 = param_5[1]; + pdVar17 = pdVar16 + 2; + *pdVar16 = *param_5; + pdVar16[1] = dVar35; + param_5 = param_5 + param_6 * 2; + pdVar16 = pdVar17; + } while (pdVar17 != pdVar13 + ((ulong)(uVar27 - 1) + 1) * 2); + } + param_5 = pdVar13; + if (0 < (int)uVar6) goto LAB_002d9380; + } + } + /* try { // try from 002d9554 to 003d95a7 has its CatchHandler @ 002da530 */ + if ((pdVar13 != adStack_480) && (pdVar13 != (double *)0x0)) { + operator_delete__(pdVar13); + } + goto LAB_002d8b28; + } + /* try { // try from 002d86a4 to 003d86a7 has its CatchHandler @ 002d88e0 */ + param_4 = uVar10; + ppdVar9 = (double **)0x0; + } + else { + iVar28 = param_11[1]; + if ((param_4 < 2) || (iVar28 < 2)) { + /* catch() { ... } // from try @ 002d83d4 with catch @ 002d858c */ + uVar49 = 1; + uVar10 = param_4; + goto joined_r0x002d8698; + } + if (0x48 < iVar28) { + local_920 = operator_new__((long)iVar28 << 4); + lVar50 = 0; + ppdVar9 = local_920; + do { + ppdVar9[1] = (double *)0x0; + *ppdVar9 = (double *)0x0; + lVar50 = lVar50 + 1; + ppdVar9 = ppdVar9 + 2; + /* try { // try from 002d930c to 003d930f has its CatchHandler @ 002da528 */ + } while (iVar28 != lVar50); + } + uVar49 = 1; + ppdVar9 = local_920; + } + uVar23 = uVar5 & 2; + if ((uVar5 >> 1 & 1) == 0) { + if ((ulong)((long)(int)*puVar8 * 0x10) < 0x641) { + if (0 < (int)uVar6) { + uVar5 = uVar27 - 4 >> 2; + lVar33 = NEON_shl(uVar49,4); + lVar48 = NEON_shl(param_10,4); + lVar50 = (ulong)(iVar28 - 1) + 1; + /* catch() { ... } // from try @ 002d8d0c with catch @ 002d8ec4 */ + lVar47 = NEON_shl(uVar18,4); + /* try { // try from 002d8f00 to 003d8f03 has its CatchHandler @ 002d8bfc */ + /* catch() { ... } // from try @ 002d8cc8 with catch @ 002d8f04 + catch() { ... } // from try @ 002d8d14 with catch @ 002d8f04 + catch() { ... } // from try @ 002d8e80 with catch @ 002d8f04 */ + /* catch() { ... } // from try @ 002d8f3c with catch @ 002d8f0c + catch() { ... } // from try @ 002d9074 with catch @ 002d8f0c + catch() { ... } // from try @ 002d9214 with catch @ 002d8f0c */ + /* try { // try from 002d8f3c to 003d8f3f has its CatchHandler @ 002d8f0c */ + ppdVar19 = param_3; + if (ppdVar9 == (double **)0x0) goto LAB_002d9214; +LAB_002d8f60: + ppdVar19 = ppdVar9; + ppdVar12 = param_3; + if (0 < iVar28) { + do { + pdVar13 = ppdVar12[1]; + ppdVar21 = ppdVar19 + 2; + *ppdVar19 = *ppdVar12; + ppdVar19[1] = pdVar13; + ppdVar19 = ppdVar21; + ppdVar12 = ppdVar12 + param_4 * 2; + } while (ppdVar21 != ppdVar9 + lVar50 * 2); + } + ppdVar19 = ppdVar9; + pdVar13 = param_7; + if ((int)uVar27 < 4) goto LAB_002d9224; + do { + pdVar13 = param_9 + 2; + pdVar16 = param_7 + 1; + pdVar32 = param_7; + pdVar17 = param_5; + do { + dVar41 = 0.0; + dVar35 = dVar41; + dVar38 = dVar41; + dVar39 = dVar41; + dVar40 = dVar41; + dVar44 = dVar41; + dVar45 = dVar41; + dVar46 = dVar41; + if (0 < iVar28) { + dVar46 = 0.0; + dVar44 = 0.0; + dVar45 = 0.0; + dVar39 = 0.0; + dVar40 = 0.0; + /* try { // try from 002d8fdc to 003d8fdf has its CatchHandler @ 002d9218 */ + dVar35 = 0.0; + dVar38 = 0.0; + pdVar36 = pdVar17; + ppdVar12 = ppdVar19; + do { + pdVar34 = ppdVar12[1]; + ppdVar21 = ppdVar12 + 2; + dVar42 = *pdVar36; + pdVar20 = pdVar36 + 1; + pdVar30 = pdVar36 + 2; + pdVar31 = pdVar36 + 3; + pdVar1 = pdVar36 + 4; + pdVar2 = pdVar36 + 5; + pdVar3 = pdVar36 + 6; + pdVar4 = pdVar36 + 7; + pdVar36 = pdVar36 + param_6 * 2; + /* try { // try from 002d9020 to 003d9023 has its CatchHandler @ 002d91d8 */ + /* try { // try from 002d9028 to 003d903b has its CatchHandler @ 002d9218 */ + pdVar37 = *ppdVar12; + dVar41 = dVar41 + (dVar42 * (double)pdVar37 - *pdVar20 * (double)pdVar34); + dVar46 = dVar46 + dVar42 * (double)pdVar34 + (double)pdVar37 * *pdVar20; + dVar44 = dVar44 + (*pdVar30 * (double)pdVar37 - *pdVar31 * (double)pdVar34); + dVar45 = dVar45 + *pdVar30 * (double)pdVar34 + (double)pdVar37 * *pdVar31; + dVar39 = dVar39 + (*pdVar1 * (double)pdVar37 - *pdVar2 * (double)pdVar34); + dVar40 = dVar40 + *pdVar1 * (double)pdVar34 + (double)pdVar37 * *pdVar2; + dVar35 = dVar35 + (*pdVar3 * (double)pdVar37 - *pdVar4 * (double)pdVar34); + /* try { // try from 002d9074 to 003d9077 has its CatchHandler @ 002d8f0c */ + dVar38 = dVar38 + *pdVar3 * (double)pdVar34 + (double)pdVar37 * *pdVar4; + ppdVar12 = ppdVar21; + } while (ppdVar21 != ppdVar19 + lVar50 * 2); + } + if (pdVar32 == (double *)0x0) { + pdVar13[-1] = param_1 * dVar46; + pdVar13[-2] = param_1 * dVar41; + /* try { // try from 002d9270 to 003d9293 has its CatchHandler @ 002d9220 */ + pdVar13[1] = param_1 * dVar45; + *pdVar13 = param_1 * dVar44; + pdVar13[3] = param_1 * dVar40; + pdVar13[2] = param_1 * dVar39; + pdVar13[5] = param_1 * dVar38; + pdVar13[4] = param_1 * dVar35; + } + else { + dVar42 = *pdVar32; + pdVar13[-1] = param_2 * *pdVar16 + dVar46 * param_1; + pdVar13[-2] = param_2 * dVar42 + dVar41 * param_1; + dVar46 = pdVar32[uVar26 * 2]; + pdVar13[1] = param_2 * pdVar16[uVar26 * 2] + dVar45 * param_1; + *pdVar13 = param_2 * dVar46 + dVar44 * param_1; + dVar44 = pdVar32[uVar26 * 4]; + pdVar13[3] = param_2 * pdVar16[uVar26 * 4] + dVar40 * param_1; + pdVar13[2] = param_2 * dVar44 + dVar39 * param_1; + dVar39 = pdVar32[uVar26 * 6]; + pdVar13[5] = param_2 * pdVar16[uVar26 * 6] + dVar38 * param_1; + pdVar13[4] = param_2 * dVar39 + dVar35 * param_1; + } + pdVar13 = pdVar13 + 8; + pdVar32 = pdVar32 + uVar26 * 8; + pdVar16 = pdVar16 + uVar26 * 8; + pdVar17 = pdVar17 + 8; + } while (pdVar13 != param_9 + (ulong)uVar5 * 8 + 10); + pdVar13 = (double *)((long)param_7 + uVar26 * 0x40 + (ulong)uVar5 * uVar26 * 0x40); + iVar25 = (uVar5 + 1) * 4; + while( true ) { + if (iVar25 < (int)uVar27) { + lVar22 = (long)iVar25; + pdVar16 = param_9 + lVar22 * 2; + pdVar17 = param_5 + lVar22 * 2; + do { + dVar38 = 0.0; + dVar35 = dVar38; + if (0 < iVar28) { + dVar35 = 0.0; + ppdVar12 = ppdVar19; + pdVar32 = pdVar17; + do { + ppdVar21 = ppdVar12 + 2; + dVar39 = *pdVar32; + pdVar36 = pdVar32 + 1; + pdVar32 = pdVar32 + param_6 * 2; + /* try { // try from 002d9194 to 003d91d7 has its CatchHandler @ 002d9218 */ + dVar35 = dVar35 + (double)ppdVar12[1] * dVar39 + (double)*ppdVar12 * *pdVar36; + dVar38 = dVar38 + ((double)*ppdVar12 * dVar39 - *pdVar36 * (double)ppdVar12[1]); + ppdVar12 = ppdVar21; + } while (ppdVar21 != ppdVar19 + lVar50 * 2); + } + if (pdVar13 == (double *)0x0) { + *pdVar16 = param_1 * dVar38; + pdVar16[1] = param_1 * dVar35; + } + else { + dVar39 = *pdVar13; + pdVar16[1] = param_1 * dVar35 + param_2 * pdVar13[1]; + *pdVar16 = param_1 * dVar38 + param_2 * dVar39; + } + pdVar16 = pdVar16 + 2; + /* catch() { ... } // from try @ 002d9020 with catch @ 002d91d8 */ + pdVar13 = pdVar13 + uVar26 * 2; + pdVar17 = pdVar17 + 2; + } while (pdVar16 != param_9 + (lVar22 + 1 + (ulong)((uVar27 - 1) - iVar25)) * 2); + } + uVar23 = uVar23 + 1; + param_3 = (double **)((long)param_3 + lVar33); + param_7 = (double *)((long)param_7 + lVar47); + param_9 = (double *)((long)param_9 + lVar48); + if (uVar23 == uVar6) goto LAB_002d8b28; + ppdVar19 = param_3; + if (ppdVar9 != (double **)0x0) goto LAB_002d8f60; +LAB_002d9214: + /* try { // try from 002d9214 to 003d9217 has its CatchHandler @ 002d8f0c */ + /* catch() { ... } // from try @ 002d8fdc with catch @ 002d9218 + catch() { ... } // from try @ 002d9028 with catch @ 002d9218 + catch() { ... } // from try @ 002d9194 with catch @ 002d9218 */ + /* catch() { ... } // from try @ 002d9270 with catch @ 002d9220 + catch() { ... } // from try @ 002d95cc with catch @ 002d9220 + catch() { ... } // from try @ 002d9ce0 with catch @ 002d9220 + catch() { ... } // from try @ 002da4d4 with catch @ 002d9220 */ + param_3 = ppdVar19; + pdVar13 = param_7; + if (3 < (int)uVar27) break; +LAB_002d9224: + iVar25 = 0; + param_7 = pdVar13; + } + } while( true ); + } + } + else { + uVar10 = (ulong)(int)uVar27; + pdVar13 = adStack_480; + do { + pdVar16 = pdVar13 + 2; + pdVar13[1] = 0.0; + *pdVar13 = 0.0; + pdVar13 = pdVar16; + } while ((int **)pdVar16 != ¶m_11); + /* try { // try from 002d86e8 to 003d86eb has its CatchHandler @ 002d88a0 */ + /* try { // try from 002d86f0 to 003d8703 has its CatchHandler @ 002d88e0 */ + apdStack_910[0x90] = adStack_480; + local_488 = 0x48; + if (uVar10 < 0x49) { + local_488 = uVar10; + } + else { + uVar11 = uVar10 << 4; + if (0x7f0000000000000 < uVar10) { + uVar11 = 0xffffffffffffffff; + } + apdStack_910[0x90] = operator_new__(uVar11); + local_488 = 0; + pdVar13 = apdStack_910[0x90]; + do { + pdVar13[1] = 0.0; + *pdVar13 = 0.0; + local_488 = local_488 + 1; + pdVar13 = pdVar13 + 2; + } while (local_488 != uVar10); + /* try { // try from 002d873c to 003d873f has its CatchHandler @ 002d85d4 */ + } + if (0 < (int)uVar6) { + uVar5 = uVar27 - 4 >> 2; + iVar25 = (uVar5 + 1) * 4; + lVar50 = NEON_shl(uVar49,4); + if ((int)(uVar27 - 3) < 1) { + iVar25 = 0; + } + uVar7 = uVar27 - iVar25; + uVar23 = (uVar7 - 2 >> 1) + 1; + lVar33 = (long)iVar25 + 2; + uVar51 = 0; + uVar52 = uVar23 * 2; + lVar48 = NEON_shl(uVar18,4); + lVar47 = NEON_shl(param_10,4); + uVar29 = uVar52 + iVar25; + pdVar13 = apdStack_910[0x90] + ((ulong)(uVar27 - 1) + 1) * 2; + pdVar16 = apdStack_910[0x90] + lVar33 * 2 + -4; + uVar18 = -(ulong)(uVar29 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar29 << 4; + do { + if (ppdVar9 == (double **)0x0) { + ppdVar19 = param_3; + if (0 < (int)uVar27) goto LAB_002d8870; +LAB_002d8890: + if (0 < iVar28) { +LAB_002d8898: + iVar24 = 0; + pdVar17 = param_5; + do { + /* catch() { ... } // from try @ 002d86e8 with catch @ 002d88a0 */ + pdVar32 = *ppdVar19; + pdVar36 = ppdVar19[1]; + if (0 < (int)(uVar27 - 3)) { + pdVar20 = apdStack_910[0x90]; + pdVar30 = pdVar17 + 1; + do { + dVar39 = *pdVar30; + pdVar31 = pdVar30 + 8; + dVar40 = pdVar30[-1]; + dVar35 = pdVar30[2]; + /* try { // try from 002d88dc to 003d88df has its CatchHandler @ 002d85d4 */ + /* catch() { ... } // from try @ 002d86a4 with catch @ 002d88e0 + catch() { ... } // from try @ 002d86f0 with catch @ 002d88e0 + catch() { ... } // from try @ 002d885c with catch @ 002d88e0 */ + /* catch() { ... } // from try @ 002d8918 with catch @ 002d88e8 + catch() { ... } // from try @ 002d8a50 with catch @ 002d88e8 + catch() { ... } // from try @ 002d8bf0 with catch @ 002d88e8 */ + dVar38 = pdVar30[1]; + /* try { // try from 002d8918 to 003d891b has its CatchHandler @ 002d88e8 */ + pdVar20[1] = (double)pdVar32 * dVar39 + dVar40 * (double)pdVar36 + pdVar20[1]; + *pdVar20 = *pdVar20 + ((double)pdVar32 * dVar40 - (double)pdVar36 * dVar39); + pdVar20[2] = ((double)pdVar32 * dVar38 - (double)pdVar36 * dVar35) + pdVar20[2]; + pdVar20[3] = (double)pdVar32 * dVar35 + dVar38 * (double)pdVar36 + pdVar20[3]; + dVar39 = pdVar30[4]; + dVar35 = pdVar30[6]; + dVar38 = pdVar30[5]; + dVar40 = pdVar30[3]; + pdVar20[6] = ((double)pdVar32 * dVar38 - (double)pdVar36 * dVar35) + pdVar20[6]; + pdVar20[5] = (double)pdVar32 * dVar39 + dVar40 * (double)pdVar36 + pdVar20[5]; + pdVar20[7] = (double)pdVar32 * dVar35 + dVar38 * (double)pdVar36 + pdVar20[7]; + pdVar20[4] = pdVar20[4] + ((double)pdVar32 * dVar40 - (double)pdVar36 * dVar39); + pdVar20 = pdVar20 + 8; + pdVar30 = pdVar31; + } while (pdVar31 != pdVar17 + (ulong)uVar5 * 8 + 9); + } + if (iVar25 < (int)uVar27) { + pdVar20 = pdVar17 + lVar33 * 2 + -4; + pdVar30 = pdVar16; + if ((pdVar16 < pdVar17 + lVar33 * 2 && pdVar20 < apdStack_910[0x90] + lVar33 * 2) + || (uVar7 < 4)) { + do { + dVar35 = pdVar20[1]; + pdVar31 = pdVar30 + 2; + dVar38 = *pdVar20; + pdVar20 = pdVar20 + 2; + /* try { // try from 002d95ac to 003d95c3 has its CatchHandler @ 002da528 */ + *pdVar30 = *pdVar30 + ((double)pdVar32 * dVar38 - (double)pdVar36 * dVar35); + pdVar30[1] = pdVar30[1] + (double)pdVar32 * dVar35 + dVar38 * (double)pdVar36; + pdVar30 = pdVar31; + /* try { // try from 002d95cc to 003d95df has its CatchHandler @ 002d9220 */ + } while (pdVar31 != + apdStack_910[0x90] + + ((long)iVar25 + 1 + (ulong)((uVar27 - 1) - iVar25)) * 2); + } + else { + /* try { // try from 002d89b8 to 003d89bb has its CatchHandler @ 002d8bf4 */ + uVar29 = 0; + pdVar31 = pdVar16; + do { + dVar35 = *pdVar20; + dVar44 = pdVar20[1]; + dVar39 = pdVar20[2]; + dVar41 = pdVar20[3]; + pdVar20 = pdVar20 + 4; + uVar29 = uVar29 + 1; + dVar38 = *pdVar31; + dVar45 = pdVar31[1]; + dVar40 = pdVar31[2]; + dVar42 = pdVar31[3]; + pdVar31 = pdVar31 + 4; + /* try { // try from 002d89fc to 003d89ff has its CatchHandler @ 002d8bb4 */ + /* try { // try from 002d8a04 to 003d8a17 has its CatchHandler @ 002d8bf4 */ + dVar46 = (double)pdVar32 * dVar35; + dVar43 = (double)pdVar32 * dVar39; + *pdVar30 = (dVar46 - (double)pdVar36 * dVar46) + dVar38; + pdVar30[1] = (double)pdVar32 * dVar44 + (double)pdVar36 * dVar35 + dVar45; + pdVar30[2] = (dVar43 - (double)pdVar36 * dVar43) + dVar40; + pdVar30[3] = (double)pdVar32 * dVar41 + (double)pdVar36 * dVar39 + dVar42; + pdVar30 = pdVar30 + 4; + } while (uVar29 < uVar23); + if (uVar52 != uVar7) { + /* try { // try from 002d8a50 to 003d8a53 has its CatchHandler @ 002d88e8 */ + dVar35 = *(double *)((long)pdVar17 + uVar18); + dVar38 = *(double *)((long)pdVar17 + uVar18 + 8); + *(double *)((long)apdStack_910[0x90] + uVar18) = + *(double *)((long)apdStack_910[0x90] + uVar18) + + ((double)pdVar32 * dVar35 - (double)pdVar36 * dVar38); + *(double *)((long)apdStack_910[0x90] + uVar18 + 8) = + *(double *)((long)apdStack_910[0x90] + uVar18 + 8) + + (double)pdVar32 * dVar38 + dVar35 * (double)pdVar36; + } + } + } + iVar24 = iVar24 + 1; + pdVar17 = pdVar17 + param_6 * 2; + ppdVar19 = ppdVar19 + 2; + } while (iVar24 < iVar28); + } + if (param_7 == (double *)0x0) { + if (0 < (int)uVar27) { + pdVar17 = apdStack_910[0x90]; + pdVar32 = param_9; + if ((apdStack_910[0x90] < param_9 + 4 && param_9 < apdStack_910[0x90] + 4) || + (uVar27 < 5)) { + do { + pdVar36 = pdVar17 + 2; + dVar35 = *pdVar17; + /* try { // try from 002d9700 to 003d9703 has its CatchHandler @ 002da53c */ + pdVar32[1] = param_1 * pdVar17[1]; + *pdVar32 = param_1 * dVar35; + pdVar17 = pdVar36; + pdVar32 = pdVar32 + 2; + /* try { // try from 002d9708 to 003d970b has its CatchHandler @ 002da528 */ + } while (pdVar36 != pdVar13); + } + else { + do { + pdVar36 = pdVar17 + 2; + dVar35 = *pdVar17; + pdVar32[1] = param_1 * pdVar17[1]; + *pdVar32 = param_1 * dVar35; + pdVar17 = pdVar36; + pdVar32 = pdVar32 + 2; + } while (pdVar36 != pdVar13); + } + } + } + else { + pdVar17 = param_7; + pdVar32 = apdStack_910[0x90]; + pdVar36 = param_9; + if (0 < (int)uVar27) { + do { + dVar35 = *pdVar17; + pdVar20 = pdVar32 + 2; + dVar38 = *pdVar32; + pdVar36[1] = param_2 * pdVar17[1] + param_1 * pdVar32[1]; + *pdVar36 = param_2 * dVar35 + param_1 * dVar38; + pdVar17 = pdVar17 + uVar26 * 2; + pdVar32 = pdVar20; + pdVar36 = pdVar36 + 2; + } while (pdVar20 != pdVar13); + } + } + } + else { + ppdVar12 = ppdVar9; + ppdVar21 = param_3; + ppdVar19 = ppdVar9; + if (0 < iVar28) { + do { + pdVar17 = ppdVar21[1]; + ppdVar15 = ppdVar12 + 2; + *ppdVar12 = *ppdVar21; + ppdVar12[1] = pdVar17; + /* try { // try from 002d885c to 003d889f has its CatchHandler @ 002d88e0 */ + ppdVar12 = ppdVar15; + ppdVar21 = ppdVar21 + param_4 * 2; + } while (ppdVar15 != ppdVar9 + ((ulong)(iVar28 - 1) + 1) * 2); + if (0 < (int)uVar27) goto LAB_002d8870; + goto LAB_002d8898; + } + if (0 < (int)uVar27) { +LAB_002d8870: + uVar29 = uVar27; + if ((int)uVar27 < 1) { + uVar29 = 1; + } + uVar14 = 0; + pdVar17 = apdStack_910[0x90]; + do { + pdVar17[1] = 0.0; + *pdVar17 = 0.0; + uVar14 = uVar14 + 1; + pdVar17 = pdVar17 + 2; + } while (uVar14 < uVar29); + goto LAB_002d8890; + } + } + param_7 = (double *)((long)param_7 + lVar48); + param_9 = (double *)((long)param_9 + lVar47); + uVar51 = uVar51 + 1; + param_3 = (double **)((long)param_3 + lVar50); + } while (uVar51 != uVar6); + } + if (apdStack_910[0x90] != adStack_480) { + operator_delete__(apdStack_910[0x90]); + } + } + } + else if (0 < (int)uVar6) { + uVar23 = iVar28 - 4U >> 2; + uVar5 = *puVar8; + /* catch() { ... } // from try @ 002d89fc with catch @ 002d8bb4 */ + uVar27 = 0; + /* try { // try from 002d8bf0 to 003d8bf3 has its CatchHandler @ 002d88e8 */ + /* catch() { ... } // from try @ 002d89b8 with catch @ 002d8bf4 + catch() { ... } // from try @ 002d8a04 with catch @ 002d8bf4 + catch() { ... } // from try @ 002d8b70 with catch @ 002d8bf4 */ + do { + ppdVar19 = param_3; + /* catch() { ... } // from try @ 002d8c2c with catch @ 002d8bfc + catch() { ... } // from try @ 002d8d60 with catch @ 002d8bfc + catch() { ... } // from try @ 002d8f00 with catch @ 002d8bfc */ + if ((ppdVar9 != (double **)0x0) && + (ppdVar12 = ppdVar9, ppdVar21 = param_3, ppdVar19 = ppdVar9, 0 < iVar28)) { + do { + pdVar13 = ppdVar21[1]; + ppdVar15 = ppdVar12 + 2; + *ppdVar12 = *ppdVar21; + ppdVar12[1] = pdVar13; + ppdVar12 = ppdVar15; + ppdVar21 = ppdVar21 + param_4 * 2; + } while (ppdVar15 != ppdVar9 + ((ulong)(iVar28 - 1U) + 1) * 2); + } + if (0 < (int)uVar5) { + /* try { // try from 002d8c2c to 003d8c2f has its CatchHandler @ 002d8bfc */ + iVar25 = 0; + pdVar16 = param_5; + pdVar17 = param_7; + pdVar13 = param_9; + do { + dVar35 = 0.0; + if (iVar28 + -3 < 1) { + dVar38 = dVar35; + dVar39 = dVar35; + dVar40 = dVar35; + dVar44 = dVar35; + dVar45 = dVar35; + dVar46 = dVar35; + dVar41 = dVar35; + iVar24 = 0; + } + else { + dVar41 = 0.0; + dVar46 = 0.0; + dVar45 = 0.0; + dVar44 = 0.0; + dVar40 = 0.0; + dVar38 = 0.0; + dVar39 = 0.0; + pdVar32 = pdVar16 + 1; + ppdVar12 = ppdVar19; + do { + pdVar36 = pdVar32 + 8; + /* try { // try from 002d8cc8 to 003d8ccb has its CatchHandler @ 002d8f04 */ + dVar38 = dVar38 + ((double)*ppdVar12 * pdVar32[-1] - *pdVar32 * (double)ppdVar12[1]); + dVar39 = dVar39 + pdVar32[-1] * (double)ppdVar12[1] + *pdVar32 * (double)*ppdVar12; + dVar35 = dVar35 + (pdVar32[1] * (double)ppdVar12[2] - pdVar32[2] * (double)ppdVar12[3] + ); + dVar41 = dVar41 + pdVar32[1] * (double)ppdVar12[3] + (double)ppdVar12[2] * pdVar32[2]; + /* try { // try from 002d8d0c to 003d8d0f has its CatchHandler @ 002d8ec4 */ + dVar46 = dVar46 + (pdVar32[3] * (double)ppdVar12[4] - pdVar32[4] * (double)ppdVar12[5] + ); + dVar45 = dVar45 + pdVar32[3] * (double)ppdVar12[5] + (double)ppdVar12[4] * pdVar32[4]; + /* try { // try from 002d8d14 to 003d8d27 has its CatchHandler @ 002d8f04 */ + dVar44 = dVar44 + (pdVar32[5] * (double)ppdVar12[6] - pdVar32[6] * (double)ppdVar12[7] + ); + dVar40 = dVar40 + pdVar32[5] * (double)ppdVar12[7] + (double)ppdVar12[6] * pdVar32[6]; + pdVar32 = pdVar36; + ppdVar12 = ppdVar12 + 8; + iVar24 = (uVar23 + 1) * 4; + } while (pdVar36 != pdVar16 + (ulong)uVar23 * 8 + 9); + } + if (iVar24 < iVar28) { + lVar50 = (long)iVar24; + ppdVar12 = ppdVar19 + lVar50 * 2; + pdVar32 = pdVar16 + lVar50 * 2; + do { + ppdVar21 = ppdVar12 + 2; + /* try { // try from 002d8d60 to 003d8d63 has its CatchHandler @ 002d8bfc */ + dVar39 = dVar39 + *pdVar32 * (double)ppdVar12[1] + (double)*ppdVar12 * pdVar32[1]; + dVar38 = dVar38 + (*pdVar32 * (double)*ppdVar12 - pdVar32[1] * (double)ppdVar12[1]); + ppdVar12 = ppdVar21; + pdVar32 = pdVar32 + 2; + } while (ppdVar21 != ppdVar19 + (lVar50 + 1 + (ulong)((iVar28 - 1U) - iVar24)) * 2); + } + dVar38 = param_1 * (dVar38 + dVar35 + dVar46 + dVar44); + dVar35 = param_1 * (dVar41 + dVar39 + dVar45 + dVar40); + if (pdVar17 == (double *)0x0) { + *pdVar13 = dVar38; + pdVar13[1] = dVar35; + } + else { + dVar39 = *pdVar17; + pdVar13[1] = dVar35 + param_2 * pdVar17[1]; + *pdVar13 = dVar38 + param_2 * dVar39; + } + iVar25 = iVar25 + 1; + pdVar16 = pdVar16 + param_6 * 2; + pdVar17 = pdVar17 + uVar26 * 2; + pdVar13 = pdVar13 + 2; + } while (iVar25 < (int)uVar5); + } + uVar27 = uVar27 + 1; + param_3 = param_3 + uVar49 * 2; + param_7 = param_7 + uVar18 * 2; + param_9 = param_9 + param_10 * 2; + } while (uVar27 != uVar6); + } +LAB_002d8b28: + if ((local_920 != apdStack_910) && (local_920 != (double **)0x0)) { + operator_delete__(local_920); + } + /* try { // try from 002d8b70 to 003d8bb3 has its CatchHandler @ 002d8bf4 */ + return; +} + + +================================================================== + +### FUNC 002d975c (72 bytes) name=FUN_002d975c + +void FUN_002d975c(void) + +{ + FUN_002d84a4(); + return; +} + + +================================================================== + +### FUNC 002d97a4 (5400 bytes) name=FUN_002d97a4 + +void FUN_002d97a4(double param_1,double param_2,float *param_3,ulong param_4,double *param_5, + ulong param_6,float *param_7,ulong param_8,float *param_9,ulong param_10, + int *param_11,uint *param_12,uint param_13) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + float *pfVar4; + uint uVar5; + uint uVar6; + float *pfVar7; + uint uVar8; + uint uVar9; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + long lVar13; + undefined1 auVar14 [16]; + undefined4 uVar15; + undefined4 uVar16; + double *pdVar17; + float *pfVar18; + ulong uVar19; + long lVar20; + double *pdVar21; + float *pfVar22; + double *pdVar23; + float *pfVar24; + float *pfVar25; + float *pfVar26; + undefined8 uVar27; + ulong uVar28; + float *pfVar29; + uint uVar30; + uint uVar31; + long lVar32; + uint uVar33; + int iVar34; + double *pdVar35; + int iVar36; + int iVar37; + int iVar38; + double *pdVar39; + int iVar40; + uint uVar41; + ulong uVar42; + float fVar43; + double dVar44; + double dVar45; + float fVar46; + float fVar47; + double dVar48; + undefined4 uVar49; + undefined4 uVar51; + double dVar50; + float fVar52; + float fVar53; + float fVar54; + float fVar55; + double dVar56; + double dVar57; + double dVar58; + double dVar59; + double dVar60; + double dVar61; + uint uVar62; + float fVar63; + ulong uVar64; + ulong uVar65; + double dVar66; + double dVar67; + double dVar68; + double dVar69; + double dVar70; + long lVar71; + long lVar72; + double dVar73; + double dVar74; + float local_9c0; + undefined1 uStack_9bc; + undefined1 uStack_9bb; + undefined1 uStack_9ba; + undefined1 uStack_9b9; + float *local_980; + uint local_950; + undefined1 uStack_8e8; + float *local_8e0; + float local_8d0 [2]; + undefined8 auStack_8c8 [135]; + double *local_490; + ulong local_488; + double local_480 [144]; + + uVar5 = param_13; + iVar40 = *param_11; + uVar41 = *param_12; + /* try { // try from 002d9808 to 003d980b has its CatchHandler @ 002da530 */ + uVar9 = param_12[1]; + pfVar18 = local_8d0; + do { + pfVar25 = pfVar18 + 4; + pfVar18[2] = 0.0; + pfVar18[3] = 0.0; + pfVar18[0] = 0.0; + pfVar18[1] = 0.0; + pfVar18 = pfVar25; + } while (pfVar25 != (float *)(auStack_8c8 + 0x87)); + param_6 = param_6 >> 3; + local_8e0 = local_8d0; + param_4 = param_4 >> 3; + param_10 = param_10 >> 3; + if (param_7 == (float *)0x0) { + uVar42 = 0; + uVar64 = 0; + } + else { + uVar42 = param_8 >> 3; + uVar64 = 1; + if ((param_13 >> 2 & 1) == 0) { + uVar42 = 1; + uVar64 = param_8 >> 3; + } + } + if ((param_13 & 1) == 0) { + uVar65 = param_4; + uVar19 = 1; +joined_r0x002d9bc4: + if (iVar40 == 1) { + /* try { // try from 002d98a8 to 003d98ab has its CatchHandler @ 002da538 */ + pdVar23 = local_480; + do { + pdVar21 = pdVar23 + 2; + pdVar23[1] = 0.0; + *pdVar23 = 0.0; + pdVar23 = pdVar21; + } while (pdVar21 != local_480 + 0x88); + local_490 = local_480; + local_488 = 0x88; + if ((param_4 < 2) || (param_11[1] < 2)) { + if (1 < param_6) { + uVar65 = (ulong)(int)uVar41; + if (uVar65 < 0x89) goto LAB_002dab88; +LAB_002da5e8: + uVar19 = uVar65 << 3; + if (0xfe0000000000000 < uVar65) { + uVar19 = 0xffffffffffffffff; + } + local_490 = operator_new__(uVar19); + /* try { // try from 002da5fc to 003da61f has its CatchHandler @ 002da5b0 */ + uVar19 = (uVar65 - 2 >> 1) + 1; + pdVar23 = local_490; + if (uVar41 == 1) { +LAB_002da63c: + *(undefined4 *)pdVar23 = 0; + *(undefined4 *)((long)pdVar23 + 4) = 0; + } + else { + uVar28 = 0; + do { + pdVar23[1] = 0.0; + *pdVar23 = 0.0; + uVar28 = uVar28 + 1; + pdVar23 = pdVar23 + 2; + } while (uVar28 < uVar19); + pdVar23 = local_490 + uVar19 * 2; + if (uVar65 != uVar19 * 2) goto LAB_002da63c; + } + /* try { // try from 002da654 to 003da657 has its CatchHandler @ 002daa54 */ + local_488 = uVar65; + uVar41 = *param_12; + pdVar23 = local_490; + goto LAB_002dab90; + } + if ((int)uVar9 < 1) goto LAB_002da1d0; +LAB_002d99a0: + iVar40 = 0; + do { + dVar56 = param_1 * (double)*param_3; + dVar57 = param_1 * (double)param_3[1]; + pfVar18 = param_7; + if ((int)uVar41 < 2) { + uVar65 = 0; + } + else { + uVar65 = 0; + pdVar23 = param_5; + pfVar25 = param_9; + do { + while( true ) { + /* try { // try from 002d9a94 to 003d9a97 has its CatchHandler @ 002da4d8 */ + /* try { // try from 002d9a9c to 003d9aaf has its CatchHandler @ 002da4e8 */ + dVar48 = dVar57 * (double)*(float *)pdVar23 + + (double)*(float *)((long)pdVar23 + 4) * dVar56; + dVar45 = dVar56 * (double)*(float *)pdVar23 - + dVar57 * (double)*(float *)((long)pdVar23 + 4); + dVar44 = dVar57 * (double)*(float *)(pdVar23 + 1) + + (double)*(float *)((long)pdVar23 + 0xc) * dVar56; + dVar70 = dVar56 * (double)*(float *)(pdVar23 + 1) - + dVar57 * (double)*(float *)((long)pdVar23 + 0xc); + if (pfVar18 != (float *)0x0) break; + uVar5 = (int)uVar65 + 2; + uVar65 = (ulong)uVar5; + uStack_8e8 = SUB81(dVar48,0); + auVar14[8] = uStack_8e8; + auVar14._0_8_ = dVar45; + pdVar23 = pdVar23 + 2; + auVar14[9] = (char)((ulong)dVar48 >> 8); + auVar14[10] = (char)((ulong)dVar48 >> 0x10); + auVar14[0xb] = (char)((ulong)dVar48 >> 0x18); + auVar14[0xc] = (char)((ulong)dVar48 >> 0x20); + auVar14[0xd] = (char)((ulong)dVar48 >> 0x28); + auVar14[0xe] = (char)((ulong)dVar48 >> 0x30); + auVar14[0xf] = (char)((ulong)dVar48 >> 0x38); + fVar52 = (float)auVar14._8_8_; + fVar43 = (float)dVar44; + *(ulong *)(pfVar25 + 2) = + CONCAT17((char)((uint)fVar43 >> 0x18), + CONCAT16((char)((uint)fVar43 >> 0x10), + CONCAT15((char)((uint)fVar43 >> 8), + CONCAT14(SUB41(fVar43,0),(float)dVar70)))); + *(ulong *)pfVar25 = + CONCAT17((char)((uint)fVar52 >> 0x18), + CONCAT16((char)((uint)fVar52 >> 0x10), + CONCAT15((char)((uint)fVar52 >> 8), + CONCAT14(SUB41(fVar52,0),(float)dVar45)))); + pfVar18 = (float *)(uVar42 * 0x10); + pfVar25 = pfVar25 + 4; + if ((int)(uVar41 - 1) <= (int)uVar5) goto LAB_002d9af0; + } + pfVar24 = pfVar18 + uVar42 * 2; + fVar52 = *pfVar18; + uVar5 = (int)uVar65 + 2; + uVar65 = (ulong)uVar5; + pdVar23 = pdVar23 + 2; + pfVar25[1] = (float)(dVar48 + (double)pfVar18[1] * param_2); + *pfVar25 = (float)(dVar45 + (double)fVar52 * param_2); + pfVar29 = pfVar18 + uVar42 * 2; + pfVar18 = pfVar18 + uVar42 * 4; + fVar52 = pfVar24[1]; + /* try { // try from 002d9a50 to 003d9a53 has its CatchHandler @ 002da4e8 */ + pfVar25[2] = (float)(dVar70 + (double)*pfVar29 * param_2); + pfVar25[3] = (float)(dVar44 + (double)fVar52 * param_2); + pfVar25 = pfVar25 + 4; + } while ((int)uVar5 < (int)(uVar41 - 1)); + } +LAB_002d9af0: + /* try { // try from 002d9af0 to 003d9b4b has its CatchHandler @ 002da530 */ + if ((int)uVar65 < (int)uVar41) { + uVar19 = -(uVar65 >> 0x1f) & 0xfffffff800000000 | uVar65 << 3; + pfVar25 = (float *)((long)param_5 + uVar19); + pfVar24 = (float *)((long)param_9 + uVar19); + do { + while( true ) { + dVar45 = dVar57 * (double)*pfVar25 + (double)pfVar25[1] * dVar56; + dVar70 = dVar56 * (double)*pfVar25 - dVar57 * (double)pfVar25[1]; + if (pfVar18 != (float *)0x0) break; + uVar5 = (int)uVar65 + 1; + uVar65 = (ulong)uVar5; + pfVar25 = pfVar25 + 2; + *pfVar24 = (float)dVar70; + pfVar24[1] = (float)dVar45; + pfVar18 = (float *)(uVar42 * 8); + pfVar24 = pfVar24 + 2; + if ((int)uVar41 <= (int)uVar5) goto LAB_002d9b94; + } + pfVar29 = pfVar18 + 1; + uVar5 = (int)uVar65 + 1; + uVar65 = (ulong)uVar5; + fVar52 = *pfVar18; + pfVar18 = pfVar18 + uVar42 * 2; + pfVar25 = pfVar25 + 2; + pfVar24[1] = (float)(dVar45 + (double)*pfVar29 * param_2); + *pfVar24 = (float)(dVar70 + (double)fVar52 * param_2); + pfVar24 = pfVar24 + 2; + } while ((int)uVar5 < (int)uVar41); + } +LAB_002d9b94: + iVar40 = iVar40 + 1; + param_7 = param_7 + uVar64 * 2; + param_9 = param_9 + param_10 * 2; + param_3 = param_3 + 2; + pdVar23 = local_490; + } while (iVar40 < (int)uVar9); + } + else { + uVar65 = (ulong)(int)uVar9; + if (0x88 < uVar65) { + /* try { // try from 002d98ec to 003d98ef has its CatchHandler @ 002da550 */ + uVar19 = uVar65 << 3; + /* try { // try from 002d98f4 to 003d991f has its CatchHandler @ 002da538 */ + if (0xfe0000000000000 < uVar65) { + uVar19 = 0xffffffffffffffff; + } + local_8e0 = operator_new__(uVar19); + uVar19 = (uVar65 - 2 >> 1) + 1; + pfVar18 = local_8e0; + if (uVar9 != 1) { + uVar28 = 0; + do { + /* try { // try from 002d9924 to 003d99af has its CatchHandler @ 002da530 */ + pfVar18[2] = 0.0; + pfVar18[3] = 0.0; + pfVar18[0] = 0.0; + pfVar18[1] = 0.0; + uVar28 = uVar28 + 1; + pfVar18 = pfVar18 + 4; + } while (uVar28 < uVar19); + pfVar18 = local_8e0 + uVar19 * 4; + if (uVar65 == uVar19 * 2) goto LAB_002d995c; + } + *pfVar18 = 0.0; + pfVar18[1] = 0.0; + } +LAB_002d995c: + if ((int)uVar9 < 1) { + pdVar23 = local_490; + if (1 < param_6) goto LAB_002dac34; + } + else { + lVar20 = 0; + do { + uVar27 = *(undefined8 *)param_3; + param_3 = param_3 + param_4 * 2; + *(undefined8 *)(local_8e0 + lVar20 * 2) = uVar27; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar9); + if (param_6 < 2) { + uVar41 = *param_12; + param_3 = local_8e0; + goto LAB_002d99a0; + } +LAB_002dac34: + uVar41 = *param_12; + uVar65 = (ulong)(int)uVar41; + param_3 = local_8e0; + if (local_488 < uVar65) { + if (local_490 != local_480) { + if (local_490 != (double *)0x0) { + operator_delete__(local_490); + } + local_490 = local_480; + local_488 = 0x88; + } + if (0x88 < uVar65) goto LAB_002da5e8; + /* try { // try from 002dac84 to 003dac87 has its CatchHandler @ 002db3bc */ + uVar41 = *param_12; + pdVar23 = local_480; + } + else { +LAB_002dab88: + local_488 = uVar65; + pdVar23 = local_490; + } +LAB_002dab90: + if (0 < (int)uVar41) { + lVar20 = 0; + do { + dVar56 = *param_5; + /* try { // try from 002daba8 to 003dabcb has its CatchHandler @ 002db3b4 */ + param_5 = param_5 + param_6; + pdVar23[lVar20] = dVar56; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar41); + } + param_5 = pdVar23; + if (0 < (int)uVar9) goto LAB_002d99a0; + } + } + if ((pdVar23 != local_480) && (pdVar23 != (double *)0x0)) { + operator_delete__(pdVar23); + } + goto LAB_002da1d0; + } + pfVar18 = (float *)0x0; + param_4 = uVar19; + } + else { + iVar40 = param_11[1]; + if ((param_4 < 2) || (iVar40 < 2)) { + uVar65 = 1; + uVar19 = param_4; + goto joined_r0x002d9bc4; + } + lVar20 = (long)iVar40; + if (0x88 < iVar40) { + /* try { // try from 002dab24 to 003dab43 has its CatchHandler @ 002daae0 */ + local_8e0 = operator_new__(lVar20 << 3); + uVar65 = (lVar20 - 2U >> 1) + 1; + uVar19 = 0; + pfVar18 = local_8e0; + do { + pfVar18[2] = 0.0; + pfVar18[3] = 0.0; + pfVar18[0] = 0.0; + pfVar18[1] = 0.0; + /* try { // try from 002dab48 to 003dab67 has its CatchHandler @ 002db340 */ + uVar19 = uVar19 + 1; + pfVar18 = pfVar18 + 4; + } while (uVar19 < uVar65); + if (lVar20 != uVar65 * 2) { + local_8e0[uVar65 * 4] = 0.0; + local_8e0[uVar65 * 4 + 1] = 0.0; + } + } + uVar65 = 1; + pfVar18 = local_8e0; + } + uVar33 = uVar5 & 2; + if ((uVar5 >> 1 & 1) == 0) { + /* try { // try from 002d9bec to 003d9bef has its CatchHandler @ 002da4ec */ + if ((ulong)((long)(int)*param_12 * 8) < 0x641) { + if (0 < (int)uVar9) { + uVar5 = uVar41 - 4 >> 2; + lVar72 = NEON_shl(uVar65,3); + lVar20 = (ulong)(iVar40 - 1) + 1; + /* try { // try from 002da698 to 003da69b has its CatchHandler @ 002daa44 */ + /* try { // try from 002da6a0 to 003da6a3 has its CatchHandler @ 002daa54 */ + lVar13 = NEON_shl(uVar64,3); + lVar71 = NEON_shl(param_10,3); + pfVar25 = param_3; + if (pfVar18 == (float *)0x0) goto LAB_002daa4c; +LAB_002da71c: + if (0 < iVar40) { + lVar32 = 0; + pfVar25 = param_3; + do { + uVar27 = *(undefined8 *)pfVar25; + pfVar25 = pfVar25 + param_4 * 2; + *(undefined8 *)(pfVar18 + lVar32 * 2) = uVar27; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < iVar40); + } + pfVar25 = pfVar18; + pfVar24 = param_7; + if ((int)uVar41 < 4) goto LAB_002daa58; + do { + pfVar24 = param_9 + 4; + pfVar29 = param_7 + 1; + pfVar22 = param_7; + pdVar23 = param_5; + do { + dVar58 = 0.0; + dVar56 = dVar58; + dVar57 = dVar58; + dVar70 = dVar58; + dVar45 = dVar58; + dVar44 = dVar58; + dVar48 = dVar58; + dVar50 = dVar58; + if (0 < iVar40) { + dVar50 = 0.0; + /* try { // try from 002da784 to 003da787 has its CatchHandler @ 002daab4 */ + dVar44 = 0.0; + dVar48 = 0.0; + dVar70 = 0.0; + dVar45 = 0.0; + dVar56 = 0.0; + dVar57 = 0.0; + pdVar21 = pdVar23; + pfVar26 = pfVar25; + do { + /* try { // try from 002da79c to 003da79f has its CatchHandler @ 002daa5c */ + pfVar7 = pfVar26 + 2; + fVar52 = *(float *)pdVar21; + pfVar1 = (float *)((long)pdVar21 + 4); + pdVar35 = pdVar21 + 1; + pfVar2 = (float *)((long)pdVar21 + 0xc); + pdVar39 = pdVar21 + 2; + pfVar3 = (float *)((long)pdVar21 + 0x14); + pdVar17 = pdVar21 + 3; + pfVar4 = (float *)((long)pdVar21 + 0x1c); + /* try { // try from 002da7c8 to 003da7cb has its CatchHandler @ 002daabc */ + pdVar21 = pdVar21 + param_6; + dVar60 = (double)pfVar26[1]; + /* try { // try from 002da7d0 to 003da7d3 has its CatchHandler @ 002daa5c */ + dVar59 = (double)*pfVar26; + dVar58 = dVar58 + ((double)fVar52 * dVar59 - dVar60 * (double)*pfVar1); + dVar50 = dVar50 + (double)fVar52 * dVar60 + (double)*pfVar1 * dVar59; + dVar44 = dVar44 + (dVar59 * (double)*(float *)pdVar35 - dVar60 * (double)*pfVar2); + dVar48 = dVar48 + dVar60 * (double)*(float *)pdVar35 + (double)*pfVar2 * dVar59; + dVar70 = dVar70 + (dVar59 * (double)*(float *)pdVar39 - dVar60 * (double)*pfVar3); + dVar45 = dVar45 + dVar60 * (double)*(float *)pdVar39 + (double)*pfVar3 * dVar59; + dVar56 = dVar56 + (dVar59 * (double)*(float *)pdVar17 - dVar60 * (double)*pfVar4); + dVar57 = dVar57 + dVar60 * (double)*(float *)pdVar17 + (double)*pfVar4 * dVar59; + pfVar26 = pfVar7; + } while (pfVar7 != pfVar25 + lVar20 * 2); + } + if (pfVar22 == (float *)0x0) { + auVar11._8_4_ = SUB84(param_1 * dVar50,0); + auVar11._0_8_ = param_1 * dVar58; + auVar11._12_4_ = (int)((ulong)(param_1 * dVar50) >> 0x20); + *(ulong *)(pfVar24 + -2) = + CONCAT44((float)(param_1 * dVar48),(float)(param_1 * dVar44)); + *(ulong *)(pfVar24 + -4) = CONCAT44((float)auVar11._8_8_,(float)(param_1 * dVar58)); + /* catch() { ... } // from try @ 002da784 with catch @ 002daab4 + catch() { ... } // from try @ 002da9a8 with catch @ 002daab4 */ + /* catch() { ... } // from try @ 002da7c8 with catch @ 002daabc */ + /* catch() { ... } // from try @ 002da9cc with catch @ 002daacc */ + auVar12._8_4_ = SUB84(param_1 * dVar45,0); + auVar12._0_8_ = param_1 * dVar70; + auVar12._12_4_ = (int)((ulong)(param_1 * dVar45) >> 0x20); + *(ulong *)(pfVar24 + 2) = + CONCAT44((float)(param_1 * dVar57),(float)(param_1 * dVar56)); + *(ulong *)pfVar24 = CONCAT44((float)auVar12._8_8_,(float)(param_1 * dVar70)); + } + else { + /* try { // try from 002da864 to 003da87b has its CatchHandler @ 002daa54 */ + fVar52 = *pfVar22; + /* try { // try from 002da884 to 003da897 has its CatchHandler @ 002da5b0 */ + pfVar24[-3] = (float)(param_2 * (double)*pfVar29 + dVar50 * param_1); + pfVar24[-4] = (float)(param_2 * (double)fVar52 + dVar58 * param_1); + fVar52 = pfVar22[uVar42 * 2]; + pfVar24[-1] = (float)(param_2 * (double)pfVar29[uVar42 * 2] + dVar48 * param_1); + pfVar24[-2] = (float)(param_2 * (double)fVar52 + dVar44 * param_1); + fVar52 = pfVar22[uVar42 * 4]; + pfVar24[1] = (float)(param_2 * (double)pfVar29[uVar42 * 4] + dVar45 * param_1); + *pfVar24 = (float)(param_2 * (double)fVar52 + dVar70 * param_1); + fVar52 = pfVar22[uVar42 * 6]; + pfVar24[3] = (float)(param_2 * (double)pfVar29[uVar42 * 6] + dVar57 * param_1); + pfVar24[2] = (float)(param_2 * (double)fVar52 + dVar56 * param_1); + } + pfVar24 = pfVar24 + 8; + pfVar22 = pfVar22 + uVar42 * 8; + pfVar29 = pfVar29 + uVar42 * 8; + pdVar23 = pdVar23 + 4; + } while (pfVar24 != param_9 + (ulong)uVar5 * 8 + 0xc); + pfVar24 = (float *)((long)param_7 + uVar42 * 0x20 + (ulong)uVar5 * uVar42 * 0x20); + iVar34 = (uVar5 + 1) * 4; + while( true ) { + if (iVar34 < (int)uVar41) { + lVar32 = (long)iVar34; + pfVar29 = param_9 + lVar32 * 2; + pdVar23 = param_5 + lVar32; + do { + /* try { // try from 002da980 to 003da983 has its CatchHandler @ 002daa54 */ + dVar57 = 0.0; + dVar56 = dVar57; + if (0 < iVar40) { + dVar56 = 0.0; + pfVar22 = pfVar25; + pdVar21 = pdVar23; + do { + pfVar1 = pfVar22 + 2; + /* try { // try from 002da998 to 003da99b has its CatchHandler @ 002da5b0 */ + pfVar26 = (float *)((long)pdVar21 + 4); + fVar52 = *(float *)pdVar21; + pdVar21 = pdVar21 + param_6; + /* try { // try from 002da9a8 to 003da9ab has its CatchHandler @ 002daab4 */ + /* try { // try from 002da9b8 to 003da9bb has its CatchHandler @ 002da9d4 */ + /* try { // try from 002da9cc to 003da9cf has its CatchHandler @ 002daacc */ + dVar57 = dVar57 + ((double)*pfVar22 * (double)fVar52 - + (double)pfVar22[1] * (double)*pfVar26); + dVar56 = dVar56 + (double)pfVar22[1] * (double)fVar52 + + (double)*pfVar26 * (double)*pfVar22; + pfVar22 = pfVar1; + /* catch() { ... } // from try @ 002da9b8 with catch @ 002da9d4 */ + } while (pfVar1 != pfVar25 + lVar20 * 2); + } + if (pfVar24 == (float *)0x0) { + *pfVar29 = (float)(param_1 * dVar57); + pfVar29[1] = (float)(param_1 * dVar56); + } + else { + fVar52 = *pfVar24; + pfVar29[1] = (float)(param_1 * dVar56 + (double)pfVar24[1] * param_2); + *pfVar29 = (float)(param_1 * dVar57 + (double)fVar52 * param_2); + } + pfVar29 = pfVar29 + 2; + pfVar24 = pfVar24 + uVar42 * 2; + pdVar23 = pdVar23 + 1; + } while (pfVar29 != param_9 + (lVar32 + 1 + (ulong)((uVar41 - 1) - iVar34)) * 2); + } + uVar33 = uVar33 + 1; + param_3 = (float *)((long)param_3 + lVar72); + param_7 = (float *)((long)param_7 + lVar13); + /* try { // try from 002daa40 to 003daa43 has its CatchHandler @ 002da5b0 */ + param_9 = (float *)((long)param_9 + lVar71); + /* catch() { ... } // from try @ 002da698 with catch @ 002daa44 */ + if (uVar33 == uVar9) goto LAB_002da1d0; + pfVar25 = param_3; + if (pfVar18 != (float *)0x0) goto LAB_002da71c; +LAB_002daa4c: + /* catch() { ... } // from try @ 002da654 with catch @ 002daa54 + catch() { ... } // from try @ 002da6a0 with catch @ 002daa54 + catch() { ... } // from try @ 002da864 with catch @ 002daa54 + catch() { ... } // from try @ 002da980 with catch @ 002daa54 */ + param_3 = pfVar25; + pfVar24 = param_7; + if (3 < (int)uVar41) break; +LAB_002daa58: + /* catch() { ... } // from try @ 002da79c with catch @ 002daa5c + catch() { ... } // from try @ 002da7d0 with catch @ 002daa5c */ + iVar34 = 0; + param_7 = pfVar24; + } + } while( true ); + } + } + else { + uVar19 = (ulong)(int)uVar41; + pdVar23 = local_480; + do { + pdVar21 = pdVar23 + 2; + pdVar23[1] = 0.0; + *pdVar23 = 0.0; + pdVar23 = pdVar21; + } while ((int **)pdVar21 != ¶m_11); + local_490 = local_480; + local_488 = 0x48; + /* try { // try from 002d9c30 to 003d9c33 has its CatchHandler @ 002da560 */ + if (0x48 < uVar19) { + /* try { // try from 002d9c38 to 003d9c4b has its CatchHandler @ 002da4ec */ + uVar28 = uVar19 << 4; + if (0x7f0000000000000 < uVar19) { + uVar28 = 0xffffffffffffffff; + } + local_490 = operator_new__(uVar28); + uVar28 = 0; + pdVar23 = local_490; + do { + pdVar23[1] = 0.0; + *pdVar23 = 0.0; + uVar28 = uVar28 + 1; + pdVar23 = pdVar23 + 2; + } while (uVar19 != uVar28); + } + local_488 = uVar19; + if (0 < (int)uVar9) { + /* try { // try from 002d9c8c to 003d9c8f has its CatchHandler @ 002da530 */ + uVar33 = uVar41 - 4 >> 2; + uVar5 = (uVar41 - 2 >> 1) + 1; + lVar72 = NEON_shl(param_10,3); + lVar20 = NEON_shl(uVar65,3); + uVar62 = uVar5 * 2; + iVar34 = (uVar33 + 1) * 4; + if ((int)(uVar41 - 3) < 1) { + iVar34 = 0; + } + lVar13 = NEON_shl(uVar64,3); + /* try { // try from 002d9ce0 to 003d9ce3 has its CatchHandler @ 002d9220 */ + /* try { // try from 002d9cf0 to 003d9d07 has its CatchHandler @ 002da530 */ + uVar8 = uVar62; + if (uVar41 == 1) { + uVar8 = 0; + } + local_950 = 0; + uVar6 = ((uVar41 - iVar34) - 4 >> 2) + 1; + iVar38 = uVar6 * 4; + lVar71 = NEON_shl((long)(int)uVar8,3); + local_980 = param_9; + do { + if (pfVar18 == (float *)0x0) { + /* catch() { ... } // from try @ 002d98a8 with catch @ 002da538 + catch() { ... } // from try @ 002d98f4 with catch @ 002da538 */ + /* catch() { ... } // from try @ 002d9700 with catch @ 002da53c */ + pfVar25 = param_3; + if (0 < (int)uVar41) goto LAB_002d9da4; +LAB_002d9dc4: + if (0 < iVar40) { +LAB_002d9dcc: + iVar36 = 0; + pdVar23 = param_5; + do { + dVar57 = (double)*pfVar25; + /* try { // try from 002d9de8 to 003d9deb has its CatchHandler @ 002da580 */ + dVar56 = (double)pfVar25[1]; + if (0 < (int)(uVar41 - 3)) { + /* try { // try from 002d9df0 to 003d9e03 has its CatchHandler @ 002da4f0 */ + pdVar21 = local_490; + pfVar24 = (float *)((long)pdVar23 + 4); + do { + fVar63 = *pfVar24; + pfVar29 = pfVar24 + 8; + fVar53 = pfVar24[2]; + fVar52 = pfVar24[4]; + fVar46 = pfVar24[6]; + fVar43 = pfVar24[5]; + fVar55 = pfVar24[-1]; + fVar47 = pfVar24[1]; + fVar54 = pfVar24[3]; + /* try { // try from 002d9e44 to 003d9f23 has its CatchHandler @ 002da530 */ + *pdVar21 = *pdVar21 + (dVar57 * (double)fVar55 - dVar56 * (double)fVar63); + pdVar21[1] = dVar57 * (double)fVar63 + (double)fVar55 * dVar56 + pdVar21[1]; + pdVar21[2] = (dVar57 * (double)fVar47 - dVar56 * (double)fVar53) + pdVar21[2]; + pdVar21[3] = dVar57 * (double)fVar53 + (double)fVar47 * dVar56 + pdVar21[3]; + pdVar21[4] = pdVar21[4] + (dVar57 * (double)fVar54 - dVar56 * (double)fVar52); + pdVar21[5] = dVar57 * (double)fVar52 + (double)fVar54 * dVar56 + pdVar21[5]; + pdVar21[6] = (dVar57 * (double)fVar43 - dVar56 * (double)fVar46) + pdVar21[6]; + pdVar21[7] = dVar57 * (double)fVar46 + (double)fVar43 * dVar56 + pdVar21[7]; + pdVar21 = pdVar21 + 8; + pfVar24 = pfVar29; + } while (pfVar29 != (float *)((long)pdVar23 + (ulong)uVar33 * 0x20 + 0x24)); + } + if (iVar34 < (int)uVar41) { + iVar37 = iVar34; + if (2 < (uVar41 - 1) - iVar34) { + pdVar21 = pdVar23 + iVar34; + uVar31 = 0; + pdVar35 = local_490 + (long)iVar34 * 2; + pdVar39 = local_490 + (long)iVar34 * 2; + do { + fVar52 = *(float *)pdVar21; + fVar43 = *(float *)((long)pdVar21 + 4); + uVar15 = *(undefined4 *)(pdVar21 + 1); + uVar49 = *(undefined4 *)((long)pdVar21 + 0xc); + pdVar17 = pdVar21 + 2; + fVar46 = *(float *)((long)pdVar21 + 0x14); + uVar16 = *(undefined4 *)(pdVar21 + 3); + uVar51 = *(undefined4 *)((long)pdVar21 + 0x1c); + pdVar21 = pdVar21 + 4; + uVar31 = uVar31 + 1; + _local_9c0 = CONCAT17((char)((uint)uVar15 >> 0x18), + CONCAT16((char)((uint)uVar15 >> 0x10), + CONCAT15((char)((uint)uVar15 >> 8), + CONCAT14((char)uVar15,fVar52)))); + dVar48 = pdVar39[1]; + dVar45 = pdVar39[2]; + dVar50 = pdVar39[3]; + dVar58 = pdVar39[4]; + dVar60 = pdVar39[5]; + dVar59 = pdVar39[6]; + dVar61 = pdVar39[7]; + dVar73 = (double)fVar52; + dVar74 = (double)(float)((ulong)_local_9c0 >> 0x20); + dVar70 = (double)*(float *)pdVar17; + dVar44 = (double)(float)(CONCAT17((char)((uint)uVar16 >> 0x18), + CONCAT16((char)((uint)uVar16 >> 0x10), + CONCAT15((char)((uint)uVar16 >> 8), + CONCAT14((char)uVar16, + *(float *)pdVar17 + )))) >> 0x20); + dVar68 = dVar57 * dVar73; + dVar69 = dVar57 * dVar74; + dVar66 = dVar57 * dVar70; + dVar67 = dVar57 * dVar44; + /* try { // try from 002d9fc4 to 003d9fc7 has its CatchHandler @ 002da464 */ + *pdVar35 = *pdVar39 + (dVar68 - dVar56 * dVar68); + pdVar35[1] = dVar57 * (double)fVar43 + dVar56 * dVar73 + dVar48; + pdVar35[2] = dVar45 + (dVar69 - dVar56 * dVar69); + pdVar35[3] = dVar57 * (double)(float)(CONCAT17((char)((uint)uVar49 >> 0x18), + CONCAT16((char)((uint)uVar49 >> + 0x10), + CONCAT15((char)((uint) + uVar49 >> 8),CONCAT14((char)uVar49,fVar43)))) >> + 0x20) + dVar56 * dVar74 + dVar50; + pdVar35[4] = (dVar66 - dVar56 * dVar66) + dVar58; + pdVar35[5] = dVar57 * (double)fVar46 + dVar56 * dVar70 + dVar60; + pdVar35[6] = (dVar67 - dVar56 * dVar67) + dVar59; + pdVar35[7] = dVar57 * (double)(float)(CONCAT17((char)((uint)uVar51 >> 0x18), + CONCAT16((char)((uint)uVar51 >> + 0x10), + CONCAT15((char)((uint) + uVar51 >> 8),CONCAT14((char)uVar51,fVar46)))) >> + 0x20) + dVar56 * dVar44 + dVar61; + pdVar35 = pdVar35 + 8; + pdVar39 = pdVar39 + 8; + } while (uVar31 < uVar6); + iVar37 = iVar38 + iVar34; + if (iVar38 == uVar41 - iVar34) goto LAB_002da108; + } + lVar32 = (long)iVar37; + /* try { // try from 002da010 to 003da023 has its CatchHandler @ 002da464 */ + fVar52 = *(float *)(pdVar23 + lVar32); + dVar45 = (double)*(float *)((long)pdVar23 + lVar32 * 8 + 4); + dVar70 = local_490[lVar32 * 2 + 1]; + local_490[lVar32 * 2] = + local_490[lVar32 * 2] + (dVar57 * (double)fVar52 - dVar56 * dVar45); + local_490[lVar32 * 2 + 1] = dVar70 + dVar57 * dVar45 + (double)fVar52 * dVar56; + if (iVar37 + 1 < (int)uVar41) { + /* try { // try from 002da064 to 003da0c7 has its CatchHandler @ 002da530 */ + lVar32 = (long)(iVar37 + 1); + fVar52 = *(float *)(pdVar23 + lVar32); + dVar45 = (double)*(float *)((long)pdVar23 + lVar32 * 8 + 4); + dVar70 = local_490[lVar32 * 2 + 1]; + local_490[lVar32 * 2] = + local_490[lVar32 * 2] + (dVar57 * (double)fVar52 - dVar56 * dVar45); + local_490[lVar32 * 2 + 1] = dVar70 + dVar57 * dVar45 + (double)fVar52 * dVar56; + if (iVar37 + 2 < (int)uVar41) { + lVar32 = (long)(iVar37 + 2); + fVar52 = *(float *)(pdVar23 + lVar32); + dVar45 = (double)*(float *)((long)pdVar23 + lVar32 * 8 + 4); + dVar70 = local_490[lVar32 * 2 + 1]; + local_490[lVar32 * 2] = + local_490[lVar32 * 2] + (dVar57 * (double)fVar52 - dVar56 * dVar45); + local_490[lVar32 * 2 + 1] = dVar70 + dVar57 * dVar45 + (double)fVar52 * dVar56 + ; + } + } + } +LAB_002da108: + iVar36 = iVar36 + 1; + pdVar23 = pdVar23 + param_6; + /* try { // try from 002da114 to 003da117 has its CatchHandler @ 002da464 */ + pfVar25 = pfVar25 + 2; + } while (iVar36 < iVar40); + } + if (param_7 == (float *)0x0) { + if (0 < (int)uVar41) { + /* catch() { ... } // from try @ 002d94d8 with catch @ 002da54c + catch() { ... } // from try @ 002d9524 with catch @ 002da54c */ + if (uVar41 != 1) { + /* catch() { ... } // from try @ 002d98ec with catch @ 002da550 */ + uVar31 = 0; + pdVar23 = local_490; + pfVar25 = local_980; + do { + /* catch() { ... } // from try @ 002d9c30 with catch @ 002da560 */ + uVar31 = uVar31 + 1; + dVar56 = *pdVar23; + /* catch() { ... } // from try @ 002da008 with catch @ 002da570 */ + auVar10._8_4_ = SUB84(param_1 * pdVar23[1],0); + auVar10._0_8_ = param_1 * dVar56; + auVar10._12_4_ = (int)((ulong)(param_1 * pdVar23[1]) >> 0x20); + /* catch() { ... } // from try @ 002d9de8 with catch @ 002da580 */ + *(ulong *)(pfVar25 + 2) = + CONCAT44((float)(param_1 * pdVar23[3]),(float)(param_1 * pdVar23[2])); + *(ulong *)pfVar25 = CONCAT44((float)auVar10._8_8_,(float)(param_1 * dVar56)); + pdVar23 = pdVar23 + 4; + pfVar25 = pfVar25 + 4; + } while (uVar31 < uVar5); + /* catch() { ... } // from try @ 002da43c with catch @ 002da590 */ + if (uVar62 == uVar41) goto LAB_002da17c; + } + dVar56 = (local_490 + (long)(int)uVar8 * 2)[1]; + /* catch() { ... } // from try @ 002da5fc with catch @ 002da5b0 + catch() { ... } // from try @ 002da884 with catch @ 002da5b0 + catch() { ... } // from try @ 002da998 with catch @ 002da5b0 + catch() { ... } // from try @ 002daa40 with catch @ 002da5b0 */ + *(float *)((long)local_980 + lVar71) = + (float)(param_1 * local_490[(long)(int)uVar8 * 2]); + *(float *)((long)local_980 + lVar71 + 4) = (float)(param_1 * dVar56); + } + } + else { + pfVar25 = param_7; + pfVar24 = local_980; + pdVar23 = local_490; + if (0 < (int)uVar41) { + do { + /* try { // try from 002da138 to 003da13b has its CatchHandler @ 002da530 */ + fVar52 = *pfVar25; + pdVar21 = pdVar23 + 2; + dVar56 = *pdVar23; + pfVar24[1] = (float)(param_2 * (double)pfVar25[1] + pdVar23[1] * param_1); + *pfVar24 = (float)(param_2 * (double)fVar52 + dVar56 * param_1); + pfVar25 = pfVar25 + uVar42 * 2; + pfVar24 = pfVar24 + 2; + pdVar23 = pdVar21; + } while (pdVar21 != local_490 + ((ulong)(uVar41 - 1) + 1) * 2); + } + } + } + else { + pfVar25 = pfVar18; + if (0 < iVar40) { + lVar32 = 0; + pfVar24 = param_3; + do { + uVar27 = *(undefined8 *)pfVar24; + pfVar24 = pfVar24 + param_4 * 2; + *(undefined8 *)(pfVar18 + lVar32 * 2) = uVar27; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < iVar40); + if (0 < (int)uVar41) goto LAB_002d9da4; + goto LAB_002d9dcc; + } + if (0 < (int)uVar41) { +LAB_002d9da4: + /* try { // try from 002d9da4 to 003d9da7 has its CatchHandler @ 002da4f0 */ + uVar31 = uVar41; + if ((int)uVar41 < 1) { + uVar31 = 1; + } + uVar30 = 0; + pdVar23 = local_490; + do { + pdVar23[1] = 0.0; + *pdVar23 = 0.0; + uVar30 = uVar30 + 1; + pdVar23 = pdVar23 + 2; + } while (uVar30 < uVar31); + goto LAB_002d9dc4; + } + } +LAB_002da17c: + param_3 = (float *)((long)param_3 + lVar20); + /* try { // try from 002da188 to 003da18b has its CatchHandler @ 002da4e8 */ + local_950 = local_950 + 1; + /* try { // try from 002da198 to 003da19b has its CatchHandler @ 002da4ec */ + param_7 = (float *)((long)param_7 + lVar13); + local_980 = (float *)((long)local_980 + lVar72); + } while (local_950 != uVar9); + } + if (local_490 != local_480) { + operator_delete__(local_490); + } + } + } + else if (0 < (int)uVar9) { + uVar33 = iVar40 - 4U >> 2; + uVar41 = 0; + uVar5 = *param_12; + do { + pfVar25 = param_3; + if ((pfVar18 != (float *)0x0) && (pfVar25 = pfVar18, 0 < iVar40)) { + lVar20 = 0; + pfVar24 = param_3; + do { + uVar27 = *(undefined8 *)pfVar24; + pfVar24 = pfVar24 + param_4 * 2; + *(undefined8 *)(pfVar18 + lVar20 * 2) = uVar27; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < iVar40); + } + /* try { // try from 002da2bc to 003da2bf has its CatchHandler @ 002da504 */ + if (0 < (int)uVar5) { + iVar34 = 0; + pdVar23 = param_5; + pfVar29 = param_7; + pfVar24 = param_9; + do { + dVar56 = 0.0; + if (iVar40 + -3 < 1) { + dVar57 = dVar56; + dVar70 = dVar56; + dVar45 = dVar56; + dVar44 = dVar56; + dVar48 = dVar56; + dVar50 = dVar56; + dVar58 = dVar56; + iVar38 = 0; + /* catch() { ... } // from try @ 002d9358 with catch @ 002da518 */ + /* catch() { ... } // from try @ 002d930c with catch @ 002da528 + catch() { ... } // from try @ 002d9360 with catch @ 002da528 + catch() { ... } // from try @ 002d95ac with catch @ 002da528 + catch() { ... } // from try @ 002d96b4 with catch @ 002da528 + catch() { ... } // from try @ 002d9708 with catch @ 002da528 */ + /* catch() { ... } // from try @ 002d9404 with catch @ 002da530 + catch() { ... } // from try @ 002d9554 with catch @ 002da530 + catch() { ... } // from try @ 002d9658 with catch @ 002da530 + catch() { ... } // from try @ 002d9808 with catch @ 002da530 + catch() { ... } // from try @ 002d9924 with catch @ 002da530 + catch() { ... } // from try @ 002d9af0 with catch @ 002da530 + catch() { ... } // from try @ 002d9c8c with catch @ 002da530 + catch() { ... } // from try @ 002d9cf0 with catch @ 002da530 + catch() { ... } // from try @ 002d9e44 with catch @ 002da530 + catch() { ... } // from try @ 002da064 with catch @ 002da530 + catch() { ... } // from try @ 002da138 with catch @ 002da530 + catch() { ... } // from try @ 002da1b4 with catch @ 002da530 + catch() { ... } // from try @ 002da218 with catch @ 002da530 + catch() { ... } // from try @ 002da35c with catch @ 002da530 + catch() { ... } // from try @ 002da444 with catch @ 002da530 */ + } + else { + dVar58 = 0.0; + dVar50 = 0.0; + dVar48 = 0.0; + dVar44 = 0.0; + dVar45 = 0.0; + /* try { // try from 002da300 to 003da303 has its CatchHandler @ 002da4f4 */ + dVar57 = 0.0; + dVar70 = 0.0; + pfVar22 = (float *)((long)pdVar23 + 4); + pfVar26 = pfVar25; + do { + /* try { // try from 002da308 to 003da31b has its CatchHandler @ 002da504 */ + pfVar1 = pfVar22 + 8; + /* try { // try from 002da35c to 003da41f has its CatchHandler @ 002da530 */ + dVar57 = dVar57 + ((double)pfVar22[-1] * (double)*pfVar26 - + (double)pfVar26[1] * (double)*pfVar22); + dVar70 = dVar70 + (double)pfVar22[-1] * (double)pfVar26[1] + + (double)*pfVar22 * (double)*pfVar26; + dVar56 = dVar56 + ((double)pfVar26[2] * (double)pfVar22[1] - + (double)pfVar26[3] * (double)pfVar22[2]); + dVar58 = dVar58 + (double)pfVar26[3] * (double)pfVar22[1] + + (double)pfVar22[2] * (double)pfVar26[2]; + dVar50 = dVar50 + ((double)pfVar26[4] * (double)pfVar22[3] - + (double)pfVar26[5] * (double)pfVar22[4]); + dVar48 = dVar48 + (double)pfVar26[5] * (double)pfVar22[3] + + (double)pfVar22[4] * (double)pfVar26[4]; + dVar44 = dVar44 + ((double)pfVar26[6] * (double)pfVar22[5] - + (double)pfVar26[7] * (double)pfVar22[6]); + dVar45 = dVar45 + (double)pfVar26[7] * (double)pfVar22[5] + + (double)pfVar22[6] * (double)pfVar26[6]; + pfVar22 = pfVar1; + pfVar26 = pfVar26 + 8; + iVar38 = (uVar33 + 1) * 4; + } while (pfVar1 != (float *)((long)pdVar23 + (ulong)uVar33 * 0x20 + 0x24)); + } + if (iVar38 < iVar40) { + lVar20 = (long)iVar38; + pfVar22 = pfVar25 + lVar20 * 2; + pdVar21 = pdVar23 + lVar20; + do { + pfVar26 = pfVar22 + 2; + /* try { // try from 002da43c to 003da43f has its CatchHandler @ 002da590 */ + /* try { // try from 002da444 to 003da447 has its CatchHandler @ 002da530 */ + /* try { // try from 002da45c to 003da45f has its CatchHandler @ 002da504 */ + dVar57 = dVar57 + ((double)*pfVar22 * (double)*(float *)pdVar21 - + (double)pfVar22[1] * (double)*(float *)((long)pdVar21 + 4)); + /* catch() { ... } // from try @ 002d9fc4 with catch @ 002da464 + catch() { ... } // from try @ 002da010 with catch @ 002da464 + catch() { ... } // from try @ 002da114 with catch @ 002da464 */ + dVar70 = dVar70 + (double)pfVar22[1] * (double)*(float *)pdVar21 + + (double)*(float *)((long)pdVar21 + 4) * (double)*pfVar22; + pfVar22 = pfVar26; + pdVar21 = pdVar21 + 1; + } while (pfVar26 != pfVar25 + (lVar20 + 1 + (ulong)(uint)((iVar40 + -1) - iVar38)) * 2); + } + dVar57 = param_1 * (dVar57 + dVar56 + dVar50 + dVar44); + dVar56 = param_1 * (dVar70 + dVar58 + dVar48 + dVar45); + if (pfVar29 == (float *)0x0) { + /* catch() { ... } // from try @ 002da2bc with catch @ 002da504 + catch() { ... } // from try @ 002da308 with catch @ 002da504 + catch() { ... } // from try @ 002da45c with catch @ 002da504 */ + *pfVar24 = (float)dVar57; + /* catch() { ... } // from try @ 002d951c with catch @ 002da508 */ + pfVar24[1] = (float)dVar56; + } + else { + fVar52 = *pfVar29; + pfVar24[1] = (float)(dVar56 + (double)pfVar29[1] * param_2); + *pfVar24 = (float)(dVar57 + (double)fVar52 * param_2); + } + iVar34 = iVar34 + 1; + pdVar23 = pdVar23 + param_6; + pfVar29 = pfVar29 + uVar42 * 2; + pfVar24 = pfVar24 + 2; + } while (iVar34 < (int)uVar5); + } + uVar41 = uVar41 + 1; + /* try { // try from 002da4d4 to 003da4d7 has its CatchHandler @ 002d9220 */ + param_3 = param_3 + uVar65 * 2; + /* catch() { ... } // from try @ 002d9a94 with catch @ 002da4d8 */ + param_7 = param_7 + uVar64 * 2; + param_9 = param_9 + param_10 * 2; + } while (uVar41 != uVar9); + } +LAB_002da1d0: + if ((local_8e0 != local_8d0) && (local_8e0 != (float *)0x0)) { + operator_delete__(local_8e0); + } + /* try { // try from 002da204 to 003da207 has its CatchHandler @ 002da4f0 */ + /* try { // try from 002da218 to 003da21b has its CatchHandler @ 002da530 */ + return; +} + + +================================================================== + +### FUNC 002dacfc (72 bytes) name=FUN_002dacfc + +void FUN_002dacfc(void) + +{ + /* try { // try from 002dad10 to 003dad27 has its CatchHandler @ 002db340 */ + /* try { // try from 002dad30 to 003dad43 has its CatchHandler @ 002daae0 */ + FUN_002d97a4(); + return; +} + + +================================================================== + +### FUNC 002dad48 (3552 bytes) name=transform + +/* cv::transform(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray const&) */ + +void cv::transform(_InputArray *param_1,_OutputArray *param_2,_InputArray *param_3) + +{ + uint uVar1; + char cVar2; + bool bVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + long *plVar10; + uint uVar11; + bool bVar12; + int iVar13; + int iVar14; + char *pcVar15; + ulong uVar16; + double *pdVar17; + double *pdVar18; + float *pfVar19; + undefined8 *puVar20; + int *piVar21; + undefined4 *puVar22; + Mat *pMVar23; + double *pdVar24; + int iVar25; + uint uVar26; + ulong uVar27; + code *pcVar28; + double dVar29; + double dVar30; + long lVar31; + undefined4 uVar32; + undefined4 local_668; + int local_664; + undefined4 local_660; + undefined4 local_65c; + code *local_658; + code *local_650; + undefined8 local_648; + Mat *local_640; + undefined4 local_638; + undefined4 local_634; + uint local_630; + int local_62c; + int local_628; + int local_624; + double *local_620; + double *pdStack_618; + double *local_610; + double *pdStack_608; + undefined8 local_600; + long lStack_5f8; + int *local_5f0; + long *local_5e8; + long local_5e0; + long local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + double *local_5c0; + double *pdStack_5b8; + double *local_5b0; + double *pdStack_5a8; + undefined8 local_5a0; + long lStack_598; + undefined8 *local_590; + long *local_588; + long local_580; + long local_578; + uint local_570; + int local_56c; + undefined4 local_568; + undefined4 local_564; + undefined8 local_560; + undefined8 local_558; + undefined8 local_550; + undefined8 local_548; + undefined8 local_540; + long local_538; + undefined4 *local_530; + undefined8 *local_528; + undefined8 local_520; + undefined8 local_518; + uint local_510; + int local_50c; + undefined4 local_508; + undefined4 local_504; + undefined8 local_500; + undefined8 local_4f8; + undefined8 local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + long local_4d8; + undefined4 *local_4d0; + undefined8 *local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined4 local_4b0; + int local_4ac; + Mat *local_4a8; + undefined8 local_4a0; + undefined8 local_498; + ulong local_490; + ulong local_488; + long local_478; + undefined4 *local_470; + undefined1 *local_468; + undefined1 auStack_460 [16]; + undefined8 local_450; + ulong local_448; + double adStack_440 [136]; + + iVar13 = _InputArray::kind(param_1); + /* try { // try from 002dad80 to 003dad83 has its CatchHandler @ 002db3bc */ + if (iVar13 == 0x10000) { + /* catch() { ... } // from try @ 002db468 with catch @ 002db430 + catch() { ... } // from try @ 002db5f8 with catch @ 002db430 + catch() { ... } // from try @ 002db66c with catch @ 002db430 */ + pMVar23 = *(Mat **)(param_1 + 8); + local_530 = &local_568; + local_528 = &local_520; + local_570 = *(uint *)pMVar23; + local_56c = *(int *)(pMVar23 + 4); + local_568 = *(undefined4 *)(pMVar23 + 8); + local_564 = *(undefined4 *)(pMVar23 + 0xc); + local_560 = *(undefined8 *)(pMVar23 + 0x10); + local_558 = *(undefined8 *)(pMVar23 + 0x18); + local_550 = *(undefined8 *)(pMVar23 + 0x20); + local_548 = *(undefined8 *)(pMVar23 + 0x28); + local_540 = *(undefined8 *)(pMVar23 + 0x30); + local_538 = *(long *)(pMVar23 + 0x38); + /* try { // try from 002db468 to 003db46b has its CatchHandler @ 002db430 */ + /* try { // try from 002db484 to 003db487 has its CatchHandler @ 002db648 */ + local_518 = 0; + local_520 = 0; + if (local_538 != 0) { + /* try { // try from 002db4a4 to 003db4a7 has its CatchHandler @ 002db6c4 */ + piVar21 = (int *)(local_538 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = *piVar21 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_520 = **(undefined8 **)(pMVar23 + 0x48); + local_518 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_56c = 0; + Mat::copySize((Mat *)&local_570,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar13 = _InputArray::kind(param_3); + if (iVar13 == 0x10000) { + pMVar23 = *(Mat **)(param_3 + 8); + /* try { // try from 002db4e4 to 003db4e7 has its CatchHandler @ 002db6bc */ + local_5f0 = &local_628; + local_5e8 = &local_5e0; + local_630 = *(uint *)pMVar23; + local_62c = *(int *)(pMVar23 + 4); + local_628 = *(int *)(pMVar23 + 8); + local_624 = *(int *)(pMVar23 + 0xc); + local_620 = *(double **)(pMVar23 + 0x10); + pdStack_618 = *(double **)(pMVar23 + 0x18); + local_610 = *(double **)(pMVar23 + 0x20); + pdStack_608 = *(double **)(pMVar23 + 0x28); + local_600 = *(undefined8 *)(pMVar23 + 0x30); + lStack_5f8 = *(long *)(pMVar23 + 0x38); + /* try { // try from 002db538 to 003db53b has its CatchHandler @ 002db670 */ + /* try { // try from 002db540 to 003db5b7 has its CatchHandler @ 002db6bc */ + local_5d8 = 0; + local_5e0 = 0; + if (lStack_5f8 != 0) { + piVar21 = (int *)(lStack_5f8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = *piVar21 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_5e0 = **(long **)(pMVar23 + 0x48); + local_5d8 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_62c = 0; + Mat::copySize((Mat *)&local_630,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_3); + } + uVar11 = local_570; + iVar9 = local_628; + uVar4 = local_570 >> 3 & 0x1ff; + /* try { // try from 002dadcc to 003dadcf has its CatchHandler @ 002db368 */ + uVar1 = local_570 & 7; + iVar13 = uVar4 + 1; + /* try { // try from 002dadd4 to 003dadd7 has its CatchHandler @ 002db3bc */ + if ((local_624 != iVar13) && (local_624 != uVar4 + 2)) { + local_450 = (double *)0x0; + local_448 = 0; + pcVar15 = (char *)String::allocate((String *)&local_450,0x22); + uVar8 = s_scn____m_cols____scn___1____m_co_00469070._24_8_; + uVar7 = s_scn____m_cols____scn___1____m_co_00469070._16_8_; + uVar6 = s_scn____m_cols____scn___1____m_co_00469070._8_8_; + uVar5 = s_scn____m_cols____scn___1____m_co_00469070._0_8_; + *(undefined2 *)(pcVar15 + 0x20) = s_scn____m_cols____scn___1____m_co_00469070._32_2_; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + /* try { // try from 002dae4c to 003daecf has its CatchHandler @ 002db3c4 */ + error(-0xd7,(String *)&local_450, + "void cv::transform(cv::InputArray, cv::OutputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x79b); + String::deallocate((String *)&local_450); + } + local_450 = (double *)CONCAT44(*local_530,local_530[1]); + _OutputArray::create(param_2,&local_450,uVar1 + (iVar9 + -1) * 8,0xffffffff,0,0); + iVar14 = _InputArray::kind((_InputArray *)param_2); + if (iVar14 == 0x10000) { + pMVar23 = *(Mat **)(param_2 + 8); + local_4d0 = &local_508; + local_4c8 = &local_4c0; + local_510 = *(uint *)pMVar23; + local_50c = *(int *)(pMVar23 + 4); + local_508 = *(undefined4 *)(pMVar23 + 8); + local_504 = *(undefined4 *)(pMVar23 + 0xc); + local_500 = *(undefined8 *)(pMVar23 + 0x10); + local_4f8 = *(undefined8 *)(pMVar23 + 0x18); + local_4f0 = *(undefined8 *)(pMVar23 + 0x20); + /* try { // try from 002db5bc to 003db5d3 has its CatchHandler @ 002db6c4 */ + local_4e8 = *(undefined8 *)(pMVar23 + 0x28); + local_4e0 = *(undefined8 *)(pMVar23 + 0x30); + local_4d8 = *(long *)(pMVar23 + 0x38); + /* try { // try from 002db5d8 to 003db5ef has its CatchHandler @ 002db648 */ + /* try { // try from 002db5f8 to 003db60b has its CatchHandler @ 002db430 */ + local_4b8 = 0; + local_4c0 = 0; + if (local_4d8 != 0) { + piVar21 = (int *)(local_4d8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = *piVar21 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_4c0 = **(undefined8 **)(pMVar23 + 0x48); + local_4b8 = (*(undefined8 **)(pMVar23 + 0x48))[1]; + } + else { + local_50c = 0; + Mat::copySize((Mat *)&local_510,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_2); + } + uVar26 = 5; + if ((uVar11 & 5) == 4) { + lVar31 = 8; + uVar32 = 0x42ff4006; + uVar26 = 6; + } + else { + /* try { // try from 002daed4 to 003daeeb has its CatchHandler @ 002db3bc */ + uVar32 = 0x42ff4005; + lVar31 = 4; + } + local_450 = adStack_440; + local_448 = 0x88; + /* catch() { ... } // from try @ 002db484 with catch @ 002db648 + catch() { ... } // from try @ 002db5d8 with catch @ 002db648 */ + if ((((local_630 >> 0xe & 1) == 0) || (uVar26 != (local_630 & 0xfff))) || (local_624 != uVar4 + 2) + ) { + iVar14 = uVar4 + 2; + uVar27 = (ulong)(iVar9 * iVar14); + if (0x88 < uVar27) { + uVar16 = uVar27 << 3; + if (0xfe0000000000000 < uVar27) { + uVar16 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar16); + } + pdVar18 = local_450; + local_590 = &local_5c8; + /* try { // try from 002daf58 to 003db2bf has its CatchHandler @ 002db3c4 */ + local_580 = iVar14 * lVar31; + local_5b0 = (double *)((long)local_450 + local_580 * iVar9); + local_588 = &local_580; + local_5c8 = (Mat *)CONCAT44(iVar14,iVar9); + local_5a0 = 0; + lStack_598 = 0; + local_5d0 = (Mat *)CONCAT44(2,uVar32); + local_5c0 = local_450; + pdStack_5b8 = local_450; + pdStack_5a8 = local_5b0; + local_578 = lVar31; + local_448 = uVar27; + memset(local_450,0,lVar31 * iVar9 * (long)iVar14); + if (local_624 == iVar14) { + local_4a0 = 0; + local_4b0 = 0x2010000; + local_4a8 = (Mat *)&local_5d0; + Mat::convertTo((Mat *)&local_630,(_OutputArray *)&local_4b0,uVar26,1.0,0.0); + } + else { + local_660 = 0x80000000; + local_65c = 0x7fffffff; + local_668 = 0; + local_664 = local_624; + Mat::Mat((Mat *)&local_4b0,(Mat *)&local_5d0,(Range *)&local_660,(Range *)&local_668); + local_638 = 0; + local_634 = 0; + local_648._0_4_ = 0x2010000; + local_640 = (Mat *)&local_4b0; + Mat::convertTo((Mat *)&local_630,(_OutputArray *)&local_648,uVar26,1.0,0.0); + if (local_478 != 0) { + piVar21 = (int *)(local_478 + 0x14); + do { + iVar14 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_4b0); + } + } + local_478 = 0; + local_4a0 = 0; + local_488 = 0; + local_490 = 0; + local_498 = 0; + if (0 < local_4ac) { + iVar14 = 0; + do { + *local_470 = 0; + iVar14 = iVar14 + 1; + local_470 = local_470 + 1; + } while (iVar14 < local_4ac); + } + if (local_468 != auStack_460) { + fastFree(local_468); + } + } + if (lStack_598 != 0) { + piVar21 = (int *)(lStack_598 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = *piVar21 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_5f8 != 0) { + piVar21 = (int *)(lStack_5f8 + 0x14); + do { + iVar14 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_630); + } + } + plVar10 = local_588; + lStack_5f8 = 0; + local_620 = (double *)0x0; + pdStack_608 = (double *)0x0; + local_610 = (double *)0x0; + pdStack_618 = (double *)0x0; + if (local_62c < 1) { +LAB_002db128: + local_630 = (uint)local_5d0; + if (2 < local_5d0._4_4_) goto LAB_002db134; + local_624 = local_5c8._4_4_; + local_628 = (int)local_5c8; + local_62c = local_5d0._4_4_; + *local_5e8 = *local_588; + local_5e8[1] = plVar10[1]; + } + else { + iVar14 = 0; + piVar21 = local_5f0; + do { + *piVar21 = 0; + iVar14 = iVar14 + 1; + piVar21 = piVar21 + 1; + } while (iVar14 < local_62c); + if (local_62c < 3) goto LAB_002db128; +LAB_002db134: + local_630 = (uint)local_5d0; + Mat::copySize((Mat *)&local_630,(Mat *)&local_5d0); + } + pdStack_608 = pdStack_5a8; + local_610 = local_5b0; + lStack_5f8 = lStack_598; + local_600 = local_5a0; + pdStack_618 = pdStack_5b8; + local_620 = local_5c0; + if (lStack_598 != 0) { + piVar21 = (int *)(lStack_598 + 0x14); + do { + iVar14 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar14 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_5d0); + } + } + lStack_598 = 0; + local_5c0 = (double *)0x0; + pdStack_5a8 = (double *)0x0; + local_5b0 = (double *)0x0; + pdStack_5b8 = (double *)0x0; + if (0 < local_5d0._4_4_) { + iVar14 = 0; + puVar20 = local_590; + do { + *(undefined4 *)puVar20 = 0; + iVar14 = iVar14 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar14 < local_5d0._4_4_); + } + if (local_588 != &local_580) { + fastFree(local_588); + } + if (iVar9 == iVar13) goto LAB_002db65c; +LAB_002db1ec: + pcVar28 = (code *)(&PTR_FUN_004f6130)[(int)uVar1]; + } + else { + pdVar18 = local_620; + if (iVar9 != iVar13) goto LAB_002db1ec; +LAB_002db65c: + if (uVar26 == 5) { + dVar29 = DAT_002dbc28; + if (iVar9 == 1) { + if (((local_630 >> 0xe & 1) == 0) && (*local_5f0 != 1)) { + dVar29 = (double)*(float *)local_620; + if (local_5f0[1] == 1) { + pfVar19 = (float *)((long)local_620 + *local_5e8); + } + else { + iVar13 = 0; + if (local_624 != 0) { + iVar13 = 1 / local_624; + } + pfVar19 = (float *)((long)local_620 + + (long)iVar13 * *local_5e8 + (long)(1 - local_624 * iVar13) * 4); + } + } + else { + pfVar19 = (float *)((long)local_620 + 4); + dVar29 = (double)*(float *)local_620; + } + dVar30 = (double)*pfVar19; + goto LAB_002db8c8; + } + } + else { + dVar29 = DAT_002dbc20; + if (iVar9 == 1) { + if (((local_630 >> 0xe & 1) == 0) && (*local_5f0 != 1)) { + dVar29 = *local_620; + if (local_5f0[1] == 1) { + pdVar18 = (double *)((long)local_620 + *local_5e8); + } + else { + iVar13 = 0; + if (local_624 != 0) { + iVar13 = 1 / local_624; + } + pdVar18 = (double *) + ((long)local_620 + + (long)iVar13 * *local_5e8 + (long)(1 - local_624 * iVar13) * 8); + } + } + else { + pdVar18 = local_620 + 1; + dVar29 = *local_620; + } + dVar30 = *pdVar18; +LAB_002db8c8: + local_4a0 = 0; + local_4b0 = 0x2010000; + local_4a8 = (Mat *)&local_510; + Mat::convertTo((Mat *)&local_570,(_OutputArray *)&local_4b0,local_510 & 0xfff,dVar29,dVar30) + ; + if ((local_450 != adStack_440) && (local_450 != (double *)0x0)) { + operator_delete__(local_450); + } + if (local_4d8 != 0) { + piVar21 = (int *)(local_4d8 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_510); + } + } + local_4d8 = 0; + local_500 = 0; + local_4e8 = 0; + local_4f0 = 0; + local_4f8 = 0; + if (0 < local_50c) { + iVar13 = 0; + puVar22 = local_4d0; + do { + *puVar22 = 0; + iVar13 = iVar13 + 1; + puVar22 = puVar22 + 1; + } while (iVar13 < local_50c); + } + if (local_4c8 != &local_4c0) { + fastFree(local_4c8); + } + if (lStack_5f8 != 0) { + piVar21 = (int *)(lStack_5f8 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_630); + } + } + lStack_5f8 = 0; + local_620 = (double *)0x0; + pdStack_608 = (double *)0x0; + local_610 = (double *)0x0; + pdStack_618 = (double *)0x0; + if (0 < local_62c) { + iVar13 = 0; + piVar21 = local_5f0; + do { + *piVar21 = 0; + iVar13 = iVar13 + 1; + piVar21 = piVar21 + 1; + } while (iVar13 < local_62c); + } + if (local_5e8 != &local_5e0) { + fastFree(local_5e8); + } + if (local_538 != 0) { + piVar21 = (int *)(local_538 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_570); + } + } + if (0 < local_56c) { + iVar13 = 0; + puVar22 = local_530; + do { + *puVar22 = 0; + iVar13 = iVar13 + 1; + puVar22 = puVar22 + 1; + } while (iVar13 < local_56c); + } + goto LAB_002db3d4; + } + } + /* catch() { ... } // from try @ 002db538 with catch @ 002db670 */ + iVar14 = 0; + pdVar24 = local_620; + do { + if (uVar26 == 5) { + iVar25 = 0; + pdVar17 = pdVar24; + do { + bVar12 = iVar14 == iVar25; + bVar3 = bVar12 || ABS((double)*(float *)pdVar17) <= dVar29; + iVar25 = iVar25 + 1; + if (!bVar12 && ABS((double)*(float *)pdVar17) > dVar29) break; + pdVar17 = (double *)((long)pdVar17 + 4); + } while (iVar25 < iVar9); + } + else { + iVar25 = 0; + pdVar17 = pdVar24; + do { + bVar12 = iVar14 == iVar25; + bVar3 = bVar12 || ABS(*pdVar17) <= dVar29; + iVar25 = iVar25 + 1; + if (!bVar12 && ABS(*pdVar17) > dVar29) break; + pdVar17 = pdVar17 + 1; + } while (iVar25 < iVar9); + } + /* catch() { ... } // from try @ 002db4e4 with catch @ 002db6bc + catch() { ... } // from try @ 002db540 with catch @ 002db6bc */ + iVar14 = iVar14 + 1; + pdVar24 = (double *)((long)pdVar24 + *local_5e8); + /* catch() { ... } // from try @ 002db4a4 with catch @ 002db6c4 + catch() { ... } // from try @ 002db5bc with catch @ 002db6c4 */ + if (!bVar3) goto LAB_002db1ec; + } while (iVar14 < iVar9); + pcVar28 = (code *)(&PTR_FUN_004f6170)[(int)uVar1]; + } + if (pcVar28 == (code *)0x0) { + local_658 = pcVar28; + local_650 = pcVar28; + pcVar15 = (char *)String::allocate((String *)&local_658,9); + cVar2 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar15 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar15[8] = cVar2; + error(-0xd7,(String *)&local_658, + "void cv::transform(cv::InputArray, cv::OutputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x7d3); + String::deallocate((String *)&local_658); + } + local_5c0 = (double *)0x0; + local_5d0 = (Mat *)&local_570; + local_5c8 = (Mat *)&local_510; + NAryMatIterator::NAryMatIterator + ((NAryMatIterator *)&local_4b0,(Mat **)&local_5d0,(uchar **)&local_648,-1); + uVar16 = local_488; + for (uVar27 = 0; uVar27 < local_490; uVar27 = uVar27 + 1) { + (*pcVar28)(CONCAT44(local_648._4_4_,(undefined4)local_648),local_640,pdVar18,uVar16 & 0xffffffff + ,iVar13,iVar9); + NAryMatIterator::operator++((NAryMatIterator *)&local_4b0); + } + if ((local_450 != adStack_440) && (local_450 != (double *)0x0)) { + operator_delete__(local_450); + } + if (local_4d8 != 0) { + piVar21 = (int *)(local_4d8 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_510); + } + } + local_4d8 = 0; + local_500 = 0; + local_4e8 = 0; + local_4f0 = 0; + local_4f8 = 0; + if (0 < local_50c) { + /* try { // try from 002db2cc to 003db2cf has its CatchHandler @ 002db3bc */ + iVar13 = 0; + puVar22 = local_4d0; + do { + *puVar22 = 0; + iVar13 = iVar13 + 1; + /* try { // try from 002db2dc to 003db2df has its CatchHandler @ 002db3b4 */ + puVar22 = puVar22 + 1; + } while (iVar13 < local_50c); + } + /* try { // try from 002db2f0 to 003db2f3 has its CatchHandler @ 002daae0 */ + if (local_4c8 != &local_4c0) { + fastFree(local_4c8); + } + if (lStack_5f8 != 0) { + piVar21 = (int *)(lStack_5f8 + 0x14); + do { + /* try { // try from 002db304 to 003db307 has its CatchHandler @ 002db340 */ + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_630); + } + } + lStack_5f8 = 0; + local_620 = (double *)0x0; + pdStack_608 = (double *)0x0; + local_610 = (double *)0x0; + pdStack_618 = (double *)0x0; + /* try { // try from 002db338 to 003db33b has its CatchHandler @ 002db3c4 */ + if (0 < local_62c) { + /* catch() { ... } // from try @ 002dab48 with catch @ 002db340 + catch() { ... } // from try @ 002dad10 with catch @ 002db340 + catch() { ... } // from try @ 002db304 with catch @ 002db340 */ + iVar13 = 0; + piVar21 = local_5f0; + do { + *piVar21 = 0; + iVar13 = iVar13 + 1; + piVar21 = piVar21 + 1; + } while (iVar13 < local_62c); + } + /* try { // try from 002db364 to 003db367 has its CatchHandler @ 002daae0 */ + if (local_5e8 != &local_5e0) { + /* catch() { ... } // from try @ 002dadcc with catch @ 002db368 */ + fastFree(local_5e8); + } + if (local_538 != 0) { + piVar21 = (int *)(local_538 + 0x14); + do { + iVar13 = *piVar21; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar21,0x10); + if (bVar3) { + *piVar21 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_570); + } + } + /* catch() { ... } // from try @ 002daba8 with catch @ 002db3b4 + catch() { ... } // from try @ 002dacf4 with catch @ 002db3b4 + catch() { ... } // from try @ 002db2dc with catch @ 002db3b4 */ + if (0 < local_56c) { + /* catch() { ... } // from try @ 002dac84 with catch @ 002db3bc + catch() { ... } // from try @ 002dad80 with catch @ 002db3bc + catch() { ... } // from try @ 002dadd4 with catch @ 002db3bc + catch() { ... } // from try @ 002daed4 with catch @ 002db3bc + catch() { ... } // from try @ 002db2cc with catch @ 002db3bc */ + iVar13 = 0; + puVar22 = local_530; + do { + *puVar22 = 0; + /* catch() { ... } // from try @ 002dae4c with catch @ 002db3c4 + catch() { ... } // from try @ 002daf58 with catch @ 002db3c4 + catch() { ... } // from try @ 002db338 with catch @ 002db3c4 */ + iVar13 = iVar13 + 1; + puVar22 = puVar22 + 1; + } while (iVar13 < local_56c); + } +LAB_002db3d4: + local_538 = 0; + local_548 = 0; + local_550 = 0; + local_558 = 0; + local_560 = 0; + if (local_528 != &local_520) { + fastFree(local_528); + } + /* catch() { ... } // from try @ 002dacc8 with catch @ 002db3ec */ + return; +} + + +================================================================== + +### FUNC 002dbc30 (2332 bytes) name=perspectiveTransform + +/* cv::perspectiveTransform(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray const&) + */ + +void cv::perspectiveTransform(_InputArray *param_1,_OutputArray *param_2,_InputArray *param_3) + +{ + uint uVar1; + uint uVar2; + char cVar3; + bool bVar4; + uint uVar5; + undefined1 *puVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined1 *puVar11; + long *plVar12; + int iVar13; + int iVar14; + int iVar15; + char *pcVar16; + ulong uVar17; + int *piVar18; + undefined4 *puVar19; + Mat *pMVar20; + ulong uVar21; + code *pcVar22; + undefined8 local_608; + undefined8 local_600; + uchar *local_5f8; + undefined8 local_5f0; + Mat *local_5e8; + Mat *local_5e0; + undefined8 local_5d8; + uint local_5d0; + int local_5cc; + int local_5c8; + uint local_5c4; + undefined1 *local_5c0; + undefined1 *puStack_5b8; + undefined1 *local_5b0; + undefined1 *puStack_5a8; + undefined8 local_5a0; + long lStack_598; + int *local_590; + long *local_588; + long local_580; + long local_578; + uint local_570; + int local_56c; + int local_568; + uint local_564; + undefined1 *local_560; + undefined1 *puStack_558; + undefined1 *local_550; + undefined1 *puStack_548; + undefined8 local_540; + long lStack_538; + int *local_530; + long *local_528; + long local_520; + undefined8 local_518; + uint local_510; + int local_50c; + undefined4 local_508; + undefined4 local_504; + undefined8 local_500; + undefined8 local_4f8; + undefined8 local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + long local_4d8; + undefined4 *local_4d0; + undefined8 *local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined4 local_4b0; + int local_4ac; + undefined4 local_4a8; + undefined4 local_4a4; + undefined8 local_4a0; + undefined8 local_498; + undefined8 local_490; + undefined8 local_488; + undefined8 local_480; + long local_478; + undefined4 *local_470; + undefined8 *local_468; + undefined8 local_460; + undefined8 local_458; + undefined8 local_450; + ulong local_448; + undefined1 auStack_440 [1088]; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar20 = *(Mat **)(param_1 + 8); + local_4d0 = &local_508; + local_4c8 = &local_4c0; + local_510 = *(uint *)pMVar20; + local_50c = *(int *)(pMVar20 + 4); + local_508 = *(undefined4 *)(pMVar20 + 8); + local_504 = *(undefined4 *)(pMVar20 + 0xc); + local_500 = *(undefined8 *)(pMVar20 + 0x10); + local_4f8 = *(undefined8 *)(pMVar20 + 0x18); + local_4f0 = *(undefined8 *)(pMVar20 + 0x20); + local_4e8 = *(undefined8 *)(pMVar20 + 0x28); + local_4e0 = *(undefined8 *)(pMVar20 + 0x30); + local_4d8 = *(long *)(pMVar20 + 0x38); + local_4b8 = 0; + local_4c0 = 0; + if (local_4d8 != 0) { + piVar18 = (int *)(local_4d8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = *piVar18 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar20 + 4) < 3) { + local_4c0 = **(undefined8 **)(pMVar20 + 0x48); + local_4b8 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + local_50c = 0; + Mat::copySize((Mat *)&local_510,pMVar20); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar13 = _InputArray::kind(param_3); + if (iVar13 == 0x10000) { + pMVar20 = *(Mat **)(param_3 + 8); + local_590 = &local_5c8; + local_588 = &local_580; + local_5d0 = *(uint *)pMVar20; + local_5cc = *(int *)(pMVar20 + 4); + local_5c8 = *(int *)(pMVar20 + 8); + local_5c4 = *(uint *)(pMVar20 + 0xc); + local_5c0 = *(undefined1 **)(pMVar20 + 0x10); + puStack_5b8 = *(undefined1 **)(pMVar20 + 0x18); + local_5b0 = *(undefined1 **)(pMVar20 + 0x20); + puStack_5a8 = *(undefined1 **)(pMVar20 + 0x28); + local_5a0 = *(undefined8 *)(pMVar20 + 0x30); + lStack_598 = *(long *)(pMVar20 + 0x38); + local_578 = 0; + local_580 = 0; + if (lStack_598 != 0) { + piVar18 = (int *)(lStack_598 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = *piVar18 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar20 + 4) < 3) { + local_580 = **(long **)(pMVar20 + 0x48); + local_578 = (*(long **)(pMVar20 + 0x48))[1]; + } + else { + local_5cc = 0; + Mat::copySize((Mat *)&local_5d0,pMVar20); + } + } + else { + _InputArray::getMat_((int)param_3); + } + iVar15 = local_5c8; + uVar5 = local_510 >> 3 & 0x1ff; + uVar1 = uVar5 + 2; + uVar2 = local_510 & 7; + iVar13 = local_5c8 + -1; + if (uVar1 != local_5c4) { + local_608 = 0; + local_600 = 0; + pcVar16 = (char *)String::allocate((String *)&local_608,0x11); + uVar8 = s_scn___1____m_cols_004690d8._8_8_; + uVar7 = s_scn___1____m_cols_004690d8._0_8_; + pcVar16[0x10] = s_scn___1____m_cols_004690d8[0x10]; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + error(-0xd7,(String *)&local_608, + "void cv::perspectiveTransform(cv::InputArray, cv::OutputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x84d); + String::deallocate((String *)&local_608); + } + if (1 < uVar2 - 5) { + local_450 = (undefined1 *)0x0; + local_448 = 0; + pcVar16 = (char *)String::allocate((String *)&local_450,0x22); + uVar10 = s_depth____CV_8S____depth____CV_16_0046f988._80_8_; + uVar9 = s_depth____CV_8S____depth____CV_16_0046f988._72_8_; + uVar8 = s_depth____CV_8S____depth____CV_16_0046f988._64_8_; + uVar7 = s_depth____CV_8S____depth____CV_16_0046f988._56_8_; + *(undefined2 *)(pcVar16 + 0x20) = s_depth____CV_8S____depth____CV_16_0046f988._88_2_; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + *(undefined8 *)(pcVar16 + 0x10) = uVar9; + *(undefined8 *)(pcVar16 + 0x18) = uVar10; + error(-0xd7,(String *)&local_450, + "void cv::perspectiveTransform(cv::InputArray, cv::OutputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x84e); + String::deallocate((String *)&local_450); + } + local_450 = (undefined1 *)CONCAT44(*local_4d0,local_4d0[1]); + _OutputArray::create(param_2,&local_450,uVar2 + (iVar15 + -2) * 8,0xffffffff,0,0); + iVar14 = _InputArray::kind((_InputArray *)param_2); + if (iVar14 == 0x10000) { + pMVar20 = *(Mat **)(param_2 + 8); + local_470 = &local_4a8; + local_468 = &local_460; + local_4b0 = *(undefined4 *)pMVar20; + local_4ac = *(int *)(pMVar20 + 4); + local_4a8 = *(undefined4 *)(pMVar20 + 8); + local_4a4 = *(undefined4 *)(pMVar20 + 0xc); + local_4a0 = *(undefined8 *)(pMVar20 + 0x10); + local_498 = *(undefined8 *)(pMVar20 + 0x18); + local_490 = *(undefined8 *)(pMVar20 + 0x20); + local_488 = *(undefined8 *)(pMVar20 + 0x28); + local_480 = *(undefined8 *)(pMVar20 + 0x30); + local_478 = *(long *)(pMVar20 + 0x38); + local_458 = 0; + local_460 = 0; + if (local_478 != 0) { + piVar18 = (int *)(local_478 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = *piVar18 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar20 + 4) < 3) { + local_460 = **(undefined8 **)(pMVar20 + 0x48); + local_458 = (*(undefined8 **)(pMVar20 + 0x48))[1]; + } + else { + local_4ac = 0; + Mat::copySize((Mat *)&local_4b0,pMVar20); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_450 = auStack_440; + local_448 = 0x88; + if (((local_5d0 >> 0xe & 1) != 0) && (puVar6 = local_5c0, (local_5d0 & 0xfff) == 6)) + goto joined_r0x002dc064; + uVar21 = (ulong)(int)(iVar15 * uVar1); + if (0x88 < uVar21) { + uVar17 = uVar21 << 3; + if (0xfe0000000000000 < uVar21) { + uVar17 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar17); + } + local_520 = (ulong)uVar1 * 8; + local_550 = local_450 + local_520 * iVar15; + local_530 = &local_568; + local_528 = &local_520; + local_518 = 8; + local_5d8 = 0; + local_5e8 = (Mat *)CONCAT44(local_5e8._4_4_,0x2010000); + local_56c = 2; + local_568 = iVar15; + local_540 = 0; + lStack_538 = 0; + local_570 = 0x42ff4006; + local_5e0 = (Mat *)&local_570; + local_564 = uVar1; + local_560 = local_450; + puStack_558 = local_450; + puStack_548 = local_550; + local_448 = uVar21; + Mat::convertTo((Mat *)&local_5d0,(_OutputArray *)&local_5e8,6,1.0,0.0); + if (lStack_538 != 0) { + piVar18 = (int *)(lStack_538 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = *piVar18 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_598 != 0) { + piVar18 = (int *)(lStack_598 + 0x14); + do { + iVar15 = *piVar18; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_5d0); + } + } + plVar12 = local_528; + lStack_598 = 0; + local_5c0 = (undefined1 *)0x0; + puStack_5a8 = (undefined1 *)0x0; + local_5b0 = (undefined1 *)0x0; + puStack_5b8 = (undefined1 *)0x0; + if (local_5cc < 1) { +LAB_002dbf74: + local_5d0 = local_570; + if (2 < local_56c) goto LAB_002dbf80; + local_5c4 = local_564; + local_5c8 = local_568; + local_5cc = local_56c; + *local_588 = *local_528; + local_588[1] = plVar12[1]; + } + else { + iVar15 = 0; + piVar18 = local_590; + do { + *piVar18 = 0; + iVar15 = iVar15 + 1; + piVar18 = piVar18 + 1; + } while (iVar15 < local_5cc); + if (local_5cc < 3) goto LAB_002dbf74; +LAB_002dbf80: + local_5d0 = local_570; + Mat::copySize((Mat *)&local_5d0,(Mat *)&local_570); + } + puStack_5a8 = puStack_548; + local_5b0 = local_550; + lStack_598 = lStack_538; + local_5a0 = local_540; + puStack_5b8 = puStack_558; + local_5c0 = local_560; + if (lStack_538 != 0) { + piVar18 = (int *)(lStack_538 + 0x14); + do { + iVar15 = *piVar18; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_570); + } + } + lStack_538 = 0; + local_560 = (undefined1 *)0x0; + puStack_548 = (undefined1 *)0x0; + local_550 = (undefined1 *)0x0; + puStack_558 = (undefined1 *)0x0; + if (0 < local_56c) { + iVar15 = 0; + piVar18 = local_530; + do { + *piVar18 = 0; + iVar15 = iVar15 + 1; + piVar18 = piVar18 + 1; + } while (iVar15 < local_56c); + } + if (local_528 != &local_520) { + fastFree(local_528); + } + puVar6 = auStack_440; +joined_r0x002dc064: + if (uVar2 == 5) { + pcVar22 = FUN_002c5e88; + } + else { + pcVar22 = FUN_002c62f0; + } + local_5d8 = 0; + local_5e8 = (Mat *)&local_510; + local_5e0 = (Mat *)&local_4b0; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_570,&local_5e8,&local_5f8,-1); + puVar11 = puStack_548; + for (uVar21 = 0; uVar21 < local_550; uVar21 = uVar21 + 1) { + (*pcVar22)(local_5f8,local_5f0,puVar6,(ulong)puVar11 & 0xffffffff,uVar5 + 1,iVar13); + NAryMatIterator::operator++((NAryMatIterator *)&local_570); + } + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + if (local_478 != 0) { + piVar18 = (int *)(local_478 + 0x14); + do { + iVar13 = *piVar18; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_4b0); + } + } + local_478 = 0; + local_4a0 = 0; + local_488 = 0; + local_490 = 0; + local_498 = 0; + if (0 < local_4ac) { + iVar13 = 0; + puVar19 = local_470; + do { + *puVar19 = 0; + iVar13 = iVar13 + 1; + puVar19 = puVar19 + 1; + } while (iVar13 < local_4ac); + } + if (local_468 != &local_460) { + fastFree(local_468); + } + if (lStack_598 != 0) { + piVar18 = (int *)(lStack_598 + 0x14); + do { + iVar13 = *piVar18; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_5d0); + } + } + lStack_598 = 0; + local_5c0 = (undefined1 *)0x0; + puStack_5a8 = (undefined1 *)0x0; + local_5b0 = (undefined1 *)0x0; + puStack_5b8 = (undefined1 *)0x0; + if (0 < local_5cc) { + iVar13 = 0; + piVar18 = local_590; + do { + *piVar18 = 0; + iVar13 = iVar13 + 1; + piVar18 = piVar18 + 1; + } while (iVar13 < local_5cc); + } + if (local_588 != &local_580) { + fastFree(local_588); + } + if (local_4d8 != 0) { + piVar18 = (int *)(local_4d8 + 0x14); + do { + iVar13 = *piVar18; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = iVar13 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_510); + } + } + local_4d8 = 0; + local_500 = 0; + local_4e8 = 0; + local_4f0 = 0; + local_4f8 = 0; + if (0 < local_50c) { + iVar13 = 0; + puVar19 = local_4d0; + do { + *puVar19 = 0; + iVar13 = iVar13 + 1; + puVar19 = puVar19 + 1; + } while (iVar13 < local_50c); + } + if (local_4c8 != &local_4c0) { + fastFree(local_4c8); + } + return; +} + + +================================================================== + +### FUNC 002dc618 (2304 bytes) name=scaleAdd + +/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffff44 : 0x002dce2c */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::scaleAdd(cv::_InputArray const&, double, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::scaleAdd(_InputArray *param_1,double param_2,_InputArray *param_3,_OutputArray *param_4) + +{ + uint uVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + bool bVar6; + uint uVar7; + int iVar8; + ulong uVar9; + char *pcVar10; + int *piVar11; + undefined8 *puVar12; + Mat *pMVar13; + int *piVar14; + long lVar15; + int iVar16; + uint uVar17; + double *pdVar18; + code *pcVar19; + double local_1b8; + float local_1ac; + undefined8 local_1a8; + undefined8 local_1a0; + uchar *local_198; + undefined8 local_190; + undefined8 local_188; + Mat *local_180; + Mat *local_178; + Mat *local_170; + undefined8 uStack_168; + NAryMatIterator aNStack_160 [32]; + ulong local_140; + long local_138; + uint local_120; + int local_11c; + int local_118; + int local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + pdVar18 = &local_1b8; + local_1b8 = param_2; + uVar9 = _InputArray::type(param_1,-1); + uVar17 = (uint)uVar9; + uVar1 = uVar17 & 7; + uVar7 = _InputArray::type(param_3,-1); + if (uVar17 != uVar7) { + local_60 = 0; + local_58 = 0; + pcVar10 = (char *)String::allocate((String *)&local_60,0x14); + uVar4 = s_type_____src2_type___004690f0._8_8_; + uVar3 = s_type_____src2_type___004690f0._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_type_____src2_type___004690f0._16_4_; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + error(-0xd7,(String *)&local_60, + "void cv::scaleAdd(cv::InputArray, double, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x90e); + String::deallocate((String *)&local_60); + } + if (uVar1 < 5) { + addWeighted(param_1,local_1b8,param_3,1.0,0.0,param_4,uVar1); + return; + } + iVar8 = _InputArray::kind(param_1); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar13; + local_11c = *(int *)(pMVar13 + 4); + local_118 = *(int *)(pMVar13 + 8); + local_114 = *(int *)(pMVar13 + 0xc); + local_110 = *(undefined8 *)(pMVar13 + 0x10); + local_108 = *(undefined8 *)(pMVar13 + 0x18); + local_100 = *(undefined8 *)(pMVar13 + 0x20); + local_f8 = *(undefined8 *)(pMVar13 + 0x28); + local_f0 = *(undefined8 *)(pMVar13 + 0x30); + local_e8 = *(long *)(pMVar13 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = *piVar11 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar13 + 0x48); + local_c8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar8 = _InputArray::kind(param_3); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_3 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar13; + iVar8 = *(int *)(pMVar13 + 4); + local_b8 = *(int *)(pMVar13 + 8); + local_b4 = *(undefined4 *)(pMVar13 + 0xc); + local_b0 = *(undefined8 *)(pMVar13 + 0x10); + local_a8 = *(undefined8 *)(pMVar13 + 0x18); + local_a0 = *(undefined8 *)(pMVar13 + 0x20); + local_98 = *(undefined8 *)(pMVar13 + 0x28); + local_90 = *(undefined8 *)(pMVar13 + 0x30); + local_88 = *(long *)(pMVar13 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = *piVar11 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(pMVar13 + 4)) { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar13); + goto LAB_002dc758; + } + local_70 = **(undefined8 **)(pMVar13 + 0x48); + local_68 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + iVar16 = local_e0[-1]; + bVar6 = iVar16 == local_bc; + local_bc = iVar8; + if (bVar6) goto LAB_002dce38; + } + else { + _InputArray::getMat_((int)param_3); +LAB_002dc758: + iVar16 = local_e0[-1]; + if (iVar16 == local_80[-1]) { +LAB_002dce38: + if (iVar16 == 2) { + if ((*local_e0 == *local_80) && (local_e0[1] == local_80[1])) goto LAB_002dc7d8; + } + else { + if (iVar16 < 1) goto LAB_002dc7d8; + if (*local_e0 == *local_80) { + piVar14 = local_80; + piVar11 = local_e0; + do { + piVar11 = piVar11 + 1; + if (piVar14 == local_80 + (iVar16 - 1)) goto LAB_002dc7d8; + piVar14 = piVar14 + 1; + } while (*piVar11 == *piVar14); + } + } + } + } + local_1a8 = 0; + local_1a0 = 0; + pcVar10 = (char *)String::allocate((String *)&local_1a8,0x16); + uVar5 = s_src1_size____src2_size_00469108._20_2_; + uVar4 = s_src1_size____src2_size_00469108._8_8_; + uVar3 = s_src1_size____src2_size_00469108._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_src1_size____src2_size_00469108._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar5; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + error(-0xd7,(String *)&local_1a8, + "void cv::scaleAdd(cv::InputArray, double, cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x91a); + String::deallocate((String *)&local_1a8); +LAB_002dc7d8: + _OutputArray::create(param_4,local_11c,local_e0,uVar17,-1,false,0); + iVar8 = _InputArray::kind((_InputArray *)param_4); + if (iVar8 == 0x10000) { + pMVar13 = *(Mat **)(param_4 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar7 = *(uint *)pMVar13; + local_50 = *(undefined8 *)(pMVar13 + 0x10); + local_60 = *(ulong *)pMVar13; + local_58 = *(undefined8 *)(pMVar13 + 8); + local_48 = *(undefined8 *)(pMVar13 + 0x18); + local_40 = *(undefined8 *)(pMVar13 + 0x20); + local_38 = *(undefined8 *)(pMVar13 + 0x28); + local_30 = *(undefined8 *)(pMVar13 + 0x30); + local_28 = *(long *)(pMVar13 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = *piVar11 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar13 + 0x48); + local_8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar7; + Mat::copySize((Mat *)&local_60,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_4); + } + local_1ac = (float)local_1b8; + if (uVar1 == 5) { + pdVar18 = (double *)&local_1ac; + pcVar19 = FUN_002c8470; + } + else { + pcVar19 = FUN_002c3160; + } + iVar8 = ((uint)((uVar9 & 0xffffffff) >> 3) & 0x1ff) + 1; + if ((((local_120 >> 0xe & 1) == 0) || ((local_c0 >> 0xe & 1) == 0)) || + (((uint)local_60 >> 0xe & 1) == 0)) { + uStack_168 = 0; + local_180 = (Mat *)&local_120; + local_178 = (Mat *)&local_c0; + local_170 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_160,&local_180,&local_198,-1); + uVar9 = 0; + if (local_140 != 0) { + do { + (*pcVar19)(local_198,local_190,local_188,iVar8 * local_138 & 0xffffffff,pdVar18); + uVar9 = uVar9 + 1; + NAryMatIterator::operator++(aNStack_160); + } while (uVar9 < local_140); + } + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar11; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar11; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar8 = 0; + piVar11 = local_80; + do { + *piVar11 = 0; + iVar8 = iVar8 + 1; + piVar11 = piVar11 + 1; + } while (iVar8 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar8 = *piVar11; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar8 = 0; + piVar11 = local_e0; + do { + *piVar11 = 0; + iVar8 = iVar8 + 1; + piVar11 = piVar11 + 1; + } while (iVar8 < local_11c); + } + } + else { + if (local_11c < 3) { + iVar16 = local_114 * local_118; + } + else { + lVar15 = 0; + iVar16 = 1; + do { + piVar11 = local_e0 + lVar15; + lVar15 = lVar15 + 1; + iVar16 = iVar16 * *piVar11; + } while ((int)lVar15 < local_11c); + } + (*pcVar19)(local_110,local_b0,local_50,iVar8 * iVar16,pdVar18); + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar11; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar11; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar8 = 0; + piVar11 = local_80; + do { + *piVar11 = 0; + iVar8 = iVar8 + 1; + piVar11 = piVar11 + 1; + } while (iVar8 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar8 = *piVar11; + cVar2 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar6) { + *piVar11 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + if (0 < local_11c) { + iVar8 = 0; + piVar11 = local_e0; + do { + *piVar11 = 0; + iVar8 = iVar8 + 1; + piVar11 = piVar11 + 1; + } while (iVar8 < local_11c); + } + } + local_e8 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + local_110 = 0; + if (local_d8 == &local_d0) { + return; + } + fastFree(local_d8); + return; +} + + +================================================================== + +### FUNC 002dcfac (3028 bytes) name=Mahalanobis + +/* cv::Mahalanobis(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&) */ + +undefined1 [16] cv::Mahalanobis(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3) + +{ + int iVar1; + float *pfVar2; + uint uVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + long lVar8; + long lVar9; + int iVar10; + uint uVar11; + ulong uVar12; + void *__dest; + int *piVar13; + double *pdVar14; + double *pdVar15; + long lVar16; + Mat *pMVar17; + double *pdVar18; + float *pfVar19; + double *pdVar20; + double *pdVar21; + uint uVar22; + long lVar23; + uint uVar24; + long lVar25; + undefined8 *puVar26; + double *pdVar27; + uint uVar28; + double *pdVar29; + undefined8 *puVar30; + ulong uVar31; + undefined8 uVar32; + undefined1 auVar33 [16]; + undefined8 uVar34; + undefined8 uVar35; + undefined8 uVar36; + double dVar37; + double dVar38; + undefined8 local_590; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + uint local_570; + int local_56c; + int local_568; + undefined4 local_564; + double *local_560; + undefined8 local_558; + undefined8 local_550; + undefined8 local_548; + undefined8 local_540; + long local_538; + int *local_530; + ulong *local_528; + ulong local_520; + ulong local_518; + uint local_510; + int local_50c; + int local_508; + undefined4 local_504; + double *local_500; + undefined8 local_4f8; + undefined8 local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + long local_4d8; + int *local_4d0; + ulong *local_4c8; + ulong local_4c0; + ulong local_4b8; + uint local_4b0; + int local_4ac; + int local_4a8; + int local_4a4; + long local_4a0; + undefined8 local_498; + undefined8 local_490; + undefined8 local_488; + undefined8 local_480; + long local_478; + int *local_470; + ulong *local_468; + ulong local_460; + ulong local_458; + double *local_450; + ulong local_448; + double adStack_440 [136]; + + iVar10 = _InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_1 + 8); + local_530 = &local_568; + local_528 = &local_520; + local_570 = *(uint *)pMVar17; + local_56c = *(int *)(pMVar17 + 4); + local_568 = *(int *)(pMVar17 + 8); + local_564 = *(undefined4 *)(pMVar17 + 0xc); + local_560 = *(double **)(pMVar17 + 0x10); + local_558 = *(undefined8 *)(pMVar17 + 0x18); + local_550 = *(undefined8 *)(pMVar17 + 0x20); + local_548 = *(undefined8 *)(pMVar17 + 0x28); + local_540 = *(undefined8 *)(pMVar17 + 0x30); + local_538 = *(long *)(pMVar17 + 0x38); + local_518 = 0; + local_520 = 0; + if (local_538 != 0) { + piVar13 = (int *)(local_538 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar7) { + *piVar13 = *piVar13 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_520 = **(ulong **)(pMVar17 + 0x48); + local_518 = (*(ulong **)(pMVar17 + 0x48))[1]; + } + else { + local_56c = 0; + Mat::copySize((Mat *)&local_570,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar10 = _InputArray::kind(param_2); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_2 + 8); + local_4d0 = &local_508; + local_4c8 = &local_4c0; + local_510 = *(uint *)pMVar17; + local_50c = *(int *)(pMVar17 + 4); + local_508 = *(int *)(pMVar17 + 8); + local_504 = *(undefined4 *)(pMVar17 + 0xc); + local_500 = *(double **)(pMVar17 + 0x10); + local_4f8 = *(undefined8 *)(pMVar17 + 0x18); + local_4f0 = *(undefined8 *)(pMVar17 + 0x20); + local_4e8 = *(undefined8 *)(pMVar17 + 0x28); + local_4e0 = *(undefined8 *)(pMVar17 + 0x30); + local_4d8 = *(long *)(pMVar17 + 0x38); + local_4b8 = 0; + local_4c0 = 0; + if (local_4d8 != 0) { + piVar13 = (int *)(local_4d8 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar7) { + *piVar13 = *piVar13 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_4c0 = **(ulong **)(pMVar17 + 0x48); + local_4b8 = (*(ulong **)(pMVar17 + 0x48))[1]; + } + else { + local_50c = 0; + Mat::copySize((Mat *)&local_510,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iVar10 = _InputArray::kind(param_3); + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_3 + 8); + local_470 = &local_4a8; + local_468 = &local_460; + local_4b0 = *(uint *)pMVar17; + local_4ac = *(int *)(pMVar17 + 4); + local_4a8 = *(int *)(pMVar17 + 8); + local_4a4 = *(int *)(pMVar17 + 0xc); + local_4a0 = *(long *)(pMVar17 + 0x10); + local_498 = *(undefined8 *)(pMVar17 + 0x18); + local_490 = *(undefined8 *)(pMVar17 + 0x20); + local_488 = *(undefined8 *)(pMVar17 + 0x28); + local_480 = *(undefined8 *)(pMVar17 + 0x30); + local_478 = *(long *)(pMVar17 + 0x38); + local_458 = 0; + local_460 = 0; + if (local_478 != 0) { + piVar13 = (int *)(local_478 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar7) { + *piVar13 = *piVar13 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_460 = **(ulong **)(pMVar17 + 0x48); + local_458 = (*(ulong **)(pMVar17 + 0x48))[1]; + } + else { + local_4ac = 0; + Mat::copySize((Mat *)&local_4b0,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_450 = adStack_440; + iVar10 = local_530[1]; + iVar4 = *local_530; + uVar11 = local_570 & 0xfff; + local_448 = 0x88; + uVar3 = local_570 & 7; + iVar5 = iVar10 * iVar4 + (local_570 >> 3 & 0x1ff) * iVar10 * iVar4; + uVar31 = (ulong)iVar5; + if (0x88 < uVar31) { + uVar12 = uVar31 << 3; + if (0xfe0000000000000 < uVar31) { + uVar12 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar12); + } + local_448 = uVar31; + if (((((uVar11 != (local_510 & 0xfff)) || (uVar11 != (local_4b0 & 0xfff))) || + (iVar10 != local_4d0[1])) || ((iVar4 != *local_4d0 || (local_4a8 != iVar5)))) || + (iVar5 != local_4a4)) { + local_590 = 0; + local_588 = 0; + __dest = (void *)String::allocate((String *)&local_590,0x69); + memcpy(__dest, + "type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols" + ,0x69); + error(-0xd7,(String *)&local_590, + "double cv::Mahalanobis(cv::InputArray, cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x9c1); + String::deallocate((String *)&local_590); + } + uVar11 = iVar10 + (local_570 >> 3 & 0x1ff) * iVar10; + if (((local_570 >> 0xe & 1) == 0) || ((local_510 >> 0xe & 1) == 0)) { + if (uVar3 == 5) { + iVar10 = iVar4 + -1; + if (iVar4 != 0) goto LAB_002dd800; + goto LAB_002dd9bc; + } + if (uVar3 == 6) { + iVar10 = iVar4 + -1; + if (iVar4 != 0) goto LAB_002dd390; + goto LAB_002dd488; + } + } + else { + uVar11 = uVar11 * iVar4; + if (uVar3 == 5) { + iVar10 = 0; +LAB_002dd800: + pdVar21 = local_450; + pdVar20 = local_500; + pdVar15 = local_560; + do { + if (0 < (int)uVar11) { + uVar3 = (uint)((ulong)pdVar21 >> 3) & 1; + if (uVar11 < uVar3) { + uVar3 = uVar11; + } + if (uVar11 < 5) { + uVar3 = uVar11; + } + uVar22 = uVar3; + if (uVar3 != 0) { + *pdVar21 = (double)(*(float *)pdVar15 - *(float *)pdVar20); + if ((uVar3 != 1) && + (pdVar21[1] = (double)(*(float *)((long)pdVar15 + 4) - *(float *)((long)pdVar20 + 4)) + , uVar3 != 2)) { + pdVar21[2] = (double)(*(float *)(pdVar15 + 1) - *(float *)(pdVar20 + 1)); + if (uVar3 == 4) { + pdVar21[3] = (double)(*(float *)((long)pdVar15 + 0xc) - + *(float *)((long)pdVar20 + 0xc)); + } + else { + uVar22 = 3; + } + } + if (uVar11 == uVar3) goto LAB_002dd96c; + } + uVar24 = ((uVar11 - uVar3) - 4 >> 2) + 1; + iVar4 = uVar24 * 4; + if (2 < (uVar11 - 1) - uVar3) { + uVar28 = 0; + lVar23 = (ulong)uVar3 * 4; + pdVar18 = pdVar21 + uVar3; + puVar26 = (undefined8 *)((long)pdVar15 + lVar23); + puVar30 = (undefined8 *)((long)pdVar20 + lVar23); + do { + uVar36 = puVar30[1]; + uVar35 = *puVar30; + uVar34 = puVar26[1]; + uVar32 = *puVar26; + uVar28 = uVar28 + 1; + pdVar18[1] = (double)((float)((ulong)uVar32 >> 0x20) - (float)((ulong)uVar35 >> 0x20)) + ; + *pdVar18 = (double)((float)uVar32 - (float)uVar35); + pdVar18[3] = (double)((float)((ulong)uVar34 >> 0x20) - (float)((ulong)uVar36 >> 0x20)) + ; + pdVar18[2] = (double)((float)uVar34 - (float)uVar36); + pdVar18 = pdVar18 + 4; + puVar26 = puVar26 + 2; + puVar30 = puVar30 + 2; + } while (uVar28 < uVar24); + uVar22 = uVar22 + iVar4; + if (iVar4 == uVar11 - uVar3) goto LAB_002dd96c; + } + iVar4 = uVar22 + 1; + lVar23 = (long)(int)uVar22 * 4; + pdVar21[(int)uVar22] = + (double)(*(float *)((long)pdVar15 + lVar23) - *(float *)((long)pdVar20 + lVar23)); + if (iVar4 < (int)uVar11) { + iVar1 = uVar22 + 2; + lVar23 = (long)iVar4 * 4; + pdVar21[iVar4] = + (double)(*(float *)((long)pdVar15 + lVar23) - *(float *)((long)pdVar20 + lVar23)); + if (iVar1 < (int)uVar11) { + lVar23 = (long)iVar1 * 4; + pdVar21[iVar1] = + (double)(*(float *)((long)pdVar15 + lVar23) - *(float *)((long)pdVar20 + lVar23)) + ; + } + } + } +LAB_002dd96c: + iVar10 = iVar10 + -1; + pdVar15 = (double *)((long)pdVar15 + (local_520 & 0xfffffffffffffffc)); + pdVar20 = (double *)((long)pdVar20 + (local_4c0 & 0xfffffffffffffffc)); + pdVar21 = (double *) + ((long)pdVar21 + + (-(ulong)(uVar11 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar11 << 3)); + } while (iVar10 != -1); +LAB_002dd9bc: + if (0 < iVar5) { + iVar1 = iVar5 + -3; + uVar11 = iVar5 - 4U >> 2; + iVar4 = (uVar11 + 1) * 4; + lVar23 = 0; + iVar10 = iVar4; + if (iVar1 < 1) { + iVar10 = 0; + } + dVar37 = 0.0; + lVar25 = local_4a0; + if (iVar1 < 1) goto LAB_002ddabc; + do { + dVar38 = 0.0; + pfVar19 = (float *)(lVar25 + 4); + pdVar15 = local_450; + do { + pfVar2 = pfVar19 + 4; + dVar38 = dVar38 + (double)*pfVar19 * pdVar15[1] + (double)pfVar19[-1] * *pdVar15 + + (double)pfVar19[1] * pdVar15[2] + (double)pfVar19[2] * pdVar15[3]; + pfVar19 = pfVar2; + pdVar15 = pdVar15 + 4; + } while (pfVar2 != (float *)(lVar25 + (ulong)uVar11 * 0x10 + 0x14)); + if (iVar5 <= iVar4) goto LAB_002dda9c; + while( true ) { + lVar16 = 0; + do { + lVar8 = lVar16 * 4; + lVar9 = iVar10 + lVar16; + lVar16 = lVar16 + 1; + dVar38 = dVar38 + (double)*(float *)(lVar25 + (long)iVar10 * 4 + lVar8) * + local_450[lVar9]; + } while (iVar10 + (int)lVar16 < iVar5); +LAB_002dda9c: + pdVar15 = local_450 + lVar23; + lVar23 = lVar23 + 1; + lVar25 = lVar25 + (local_460 & 0xfffffffffffffffc); + dVar37 = dVar37 + dVar38 * *pdVar15; + if (iVar5 <= (int)lVar23) goto LAB_002dd170; + if (0 < iVar1) break; +LAB_002ddabc: + dVar38 = 0.0; + } + } while( true ); + } + goto LAB_002dd16c; + } + if (uVar3 == 6) { + iVar10 = 0; +LAB_002dd390: + pdVar15 = local_450 + 2; + pdVar20 = local_560; + pdVar21 = local_500; + do { + pdVar18 = pdVar15 + -2; + if (0 < (int)uVar11) { + if ((pdVar18 < pdVar20 + 2 && pdVar20 < pdVar15 || + pdVar18 < pdVar21 + 2 && pdVar21 < pdVar15) || (uVar11 < 9)) { + lVar23 = 0; + do { + pdVar18[lVar23] = pdVar20[lVar23] - pdVar21[lVar23]; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)uVar11); + } + else { + uVar3 = (uint)((ulong)pdVar20 >> 3) & 1; + if (uVar11 < uVar3) { + uVar3 = uVar11; + } + if (uVar3 != 0) { + pdVar15[-2] = *pdVar20 - *pdVar21; + } + uVar22 = ((uVar11 - uVar3) - 2 >> 1) + 1; + uVar24 = 0; + iVar4 = uVar22 * 2; + pdVar14 = pdVar20 + uVar3; + pdVar27 = pdVar21 + uVar3; + pdVar29 = pdVar18 + uVar3; + do { + dVar38 = *pdVar27; + uVar24 = uVar24 + 1; + dVar37 = *pdVar14; + pdVar29[1] = pdVar14[1] - pdVar27[1]; + *pdVar29 = dVar37 - dVar38; + pdVar14 = pdVar14 + 2; + pdVar27 = pdVar27 + 2; + pdVar29 = pdVar29 + 2; + } while (uVar24 < uVar22); + uVar22 = iVar4 + (uint)(uVar3 != 0); + if (iVar4 != uVar11 - uVar3) { + uVar31 = -(ulong)(uVar22 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar22 << 3; + *(double *)((long)pdVar18 + uVar31) = + *(double *)((long)pdVar20 + uVar31) - *(double *)((long)pdVar21 + uVar31); + } + } + } + iVar10 = iVar10 + -1; + pdVar20 = (double *)((long)pdVar20 + (local_520 & 0xfffffffffffffff8)); + pdVar21 = (double *)((long)pdVar21 + (local_4c0 & 0xfffffffffffffff8)); + pdVar15 = pdVar15 + (int)uVar11; + } while (iVar10 != -1); +LAB_002dd488: + if (0 < iVar5) { + iVar10 = iVar5 + -3; + uVar22 = iVar5 - 4U >> 2; + uVar3 = (uVar22 + 1) * 4; + uVar11 = uVar3; + if (iVar10 < 1) { + uVar11 = 0; + } + uVar31 = -(ulong)(uVar11 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar11 << 3; + lVar23 = 0; + dVar37 = 0.0; + lVar25 = local_4a0; + if (iVar10 < 1) goto LAB_002dd574; + do { + dVar38 = 0.0; + pdVar15 = (double *)(lVar25 + 8); + pdVar20 = local_450; + do { + pdVar21 = pdVar15 + 4; + dVar38 = dVar38 + pdVar20[1] * *pdVar15 + pdVar15[-1] * *pdVar20 + + pdVar15[1] * pdVar20[2] + pdVar15[2] * pdVar20[3]; + pdVar15 = pdVar21; + pdVar20 = pdVar20 + 4; + } while (pdVar21 != (double *)(lVar25 + (ulong)uVar22 * 0x20 + 0x28)); + if (iVar5 <= (int)uVar3) goto LAB_002dd554; + while( true ) { + lVar16 = 0; + do { + lVar8 = lVar16 * 8; + lVar9 = lVar16 * 8; + lVar16 = lVar16 + 1; + dVar38 = dVar38 + *(double *)(lVar25 + uVar31 + lVar9) * + *(double *)((long)local_450 + lVar8 + uVar31); + } while ((int)(uVar11 + (int)lVar16) < iVar5); +LAB_002dd554: + pdVar15 = local_450 + lVar23; + lVar23 = lVar23 + 1; + lVar25 = lVar25 + (local_460 & 0xfffffffffffffff8); + dVar37 = dVar37 + dVar38 * *pdVar15; + if (iVar5 <= (int)lVar23) goto LAB_002dd170; + if (0 < iVar10) break; +LAB_002dd574: + dVar38 = 0.0; + } + } while( true ); + } + goto LAB_002dd16c; + } + } + local_580 = 0; + local_578 = 0; + String::allocate((String *)&local_580,0); + error(-0xd2,(String *)&local_580, + "double cv::Mahalanobis(cv::InputArray, cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xa09); + String::deallocate((String *)&local_580); +LAB_002dd16c: + dVar37 = 0.0; +LAB_002dd170: + dVar38 = SQRT(dVar37); + if (NAN(dVar38)) { + dVar38 = ::sqrt(dVar37); + } + if ((local_450 != adStack_440) && (local_450 != (double *)0x0)) { + operator_delete__(local_450); + } + if (local_478 != 0) { + piVar13 = (int *)(local_478 + 0x14); + do { + iVar10 = *piVar13; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar7) { + *piVar13 = iVar10 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_4b0); + } + } + local_478 = 0; + local_4a0 = 0; + local_488 = 0; + local_490 = 0; + local_498 = 0; + if (0 < local_4ac) { + iVar10 = 0; + piVar13 = local_470; + do { + *piVar13 = 0; + iVar10 = iVar10 + 1; + piVar13 = piVar13 + 1; + } while (iVar10 < local_4ac); + } + if (local_468 != &local_460) { + fastFree(local_468); + } + if (local_4d8 != 0) { + piVar13 = (int *)(local_4d8 + 0x14); + do { + iVar10 = *piVar13; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar7) { + *piVar13 = iVar10 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_510); + } + } + local_4d8 = 0; + local_500 = (double *)0x0; + local_4e8 = 0; + local_4f0 = 0; + local_4f8 = 0; + if (0 < local_50c) { + iVar10 = 0; + piVar13 = local_4d0; + do { + *piVar13 = 0; + iVar10 = iVar10 + 1; + piVar13 = piVar13 + 1; + } while (iVar10 < local_50c); + } + if (local_4c8 != &local_4c0) { + fastFree(local_4c8); + } + if (local_538 != 0) { + piVar13 = (int *)(local_538 + 0x14); + do { + iVar10 = *piVar13; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar7) { + *piVar13 = iVar10 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_570); + } + } + local_538 = 0; + local_560 = (double *)0x0; + local_548 = 0; + local_550 = 0; + local_558 = 0; + if (0 < local_56c) { + iVar10 = 0; + piVar13 = local_530; + do { + *piVar13 = 0; + iVar10 = iVar10 + 1; + piVar13 = piVar13 + 1; + } while (iVar10 < local_56c); + } + if (local_528 != &local_520) { + fastFree(local_528); + } + auVar33._8_8_ = 0; + auVar33._0_8_ = dVar38; + return auVar33; +} + + +================================================================== + +### FUNC 002ddc30 (980 bytes) name=dot + +/* cv::Mat::dot(cv::_InputArray const&) const */ + +undefined1 [16] __thiscall cv::Mat::dot(Mat *this,_InputArray *param_1) + +{ + long lVar1; + int iVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + int iVar11; + uint uVar12; + char *pcVar13; + long lVar14; + Mat *pMVar15; + int *piVar16; + long lVar17; + int *piVar18; + ulong uVar19; + code *pcVar20; + double dVar21; + undefined1 auVar22 [16]; + double dVar23; + undefined8 local_d8; + undefined8 local_d0; + uchar *local_c8; + undefined8 local_c0; + Mat *local_b8; + Mat *local_b0; + undefined8 local_a8; + NAryMatIterator aNStack_a0 [32]; + ulong local_80; + int local_78; + uint local_60; + int local_5c; + int local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar15; + local_5c = *(int *)(pMVar15 + 4); + local_58 = *(int *)(pMVar15 + 8); + local_54 = *(undefined4 *)(pMVar15 + 0xc); + local_50 = *(undefined8 *)(pMVar15 + 0x10); + local_48 = *(undefined8 *)(pMVar15 + 0x18); + local_40 = *(undefined8 *)(pMVar15 + 0x20); + local_38 = *(undefined8 *)(pMVar15 + 0x28); + local_30 = *(undefined8 *)(pMVar15 + 0x30); + local_28 = *(long *)(pMVar15 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar18 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = *piVar18 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar15 + 0x48); + local_8 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_5c = 0; + copySize((Mat *)&local_60,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar12 = *(uint *)this; + iVar11 = (uVar12 >> 3 & 0x1ff) + 1; + pcVar20 = (code *)(&PTR_FUN_004f60f0)[(int)(uVar12 & 7)]; + if ((local_60 & 0xfff) == (uVar12 & 0xfff)) { + piVar18 = *(int **)(this + 0x40); + iVar2 = local_20[-1]; + if (iVar2 != piVar18[-1]) goto LAB_002ddca8; + if (iVar2 != 2) { + if (iVar2 < 1) { +LAB_002ddfc4: + if (pcVar20 != (code *)0x0) goto LAB_002ddd20; + } + else if (*local_20 == *piVar18) { + piVar16 = local_20; + do { + piVar18 = piVar18 + 1; + if (piVar16 == local_20 + (iVar2 - 1)) goto LAB_002ddfc4; + piVar16 = piVar16 + 1; + } while (*piVar16 == *piVar18); + } + goto LAB_002ddca8; + } + if (((*local_20 != *piVar18) || (local_20[1] != piVar18[1])) || (pcVar20 == (code *)0x0)) + goto LAB_002ddca8; + } + else { +LAB_002ddca8: + local_d8 = 0; + local_d0 = 0; + pcVar13 = (char *)String::allocate((String *)&local_d8,0x35); + cVar3 = s_mat_type______type______mat_size_00469190[0x34]; + uVar10 = s_mat_type______type______mat_size_00469190._40_8_; + uVar9 = s_mat_type______type______mat_size_00469190._32_8_; + uVar8 = s_mat_type______type______mat_size_00469190._24_8_; + uVar7 = s_mat_type______type______mat_size_00469190._16_8_; + uVar6 = s_mat_type______type______mat_size_00469190._8_8_; + uVar5 = s_mat_type______type______mat_size_00469190._0_8_; + *(undefined4 *)(pcVar13 + 0x30) = s_mat_type______type______mat_size_00469190._48_4_; + pcVar13[0x34] = cVar3; + *(undefined8 *)pcVar13 = uVar5; + *(undefined8 *)(pcVar13 + 8) = uVar6; + *(undefined8 *)(pcVar13 + 0x10) = uVar7; + *(undefined8 *)(pcVar13 + 0x18) = uVar8; + *(undefined8 *)(pcVar13 + 0x20) = uVar9; + *(undefined8 *)(pcVar13 + 0x28) = uVar10; + error(-0xd7,(String *)&local_d8,"double cv::Mat::dot(cv::InputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xcac); + String::deallocate((String *)&local_d8); + uVar12 = *(uint *)this; + } +LAB_002ddd20: + if (((uVar12 >> 0xe & 1) != 0) && ((local_60 >> 0xe & 1) != 0)) { + if (*(int *)(this + 4) < 3) { + lVar14 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8) * (long)iVar11; + if ((int)lVar14 == lVar14) goto LAB_002dde80; + } + else { + lVar14 = 0; + lVar17 = 1; + do { + lVar1 = lVar14 * 4; + lVar14 = lVar14 + 1; + lVar17 = lVar17 * *(int *)(*(long *)(this + 0x40) + lVar1); + } while ((int)lVar14 < *(int *)(this + 4)); + if ((long)(int)(lVar17 * iVar11) == lVar17 * iVar11) { +LAB_002dde80: + auVar22 = (*pcVar20)(*(undefined8 *)(this + 0x10),local_50); + goto LAB_002ddd98; + } + } + } + local_a8 = 0; + local_b8 = this; + local_b0 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_a0,&local_b8,&local_c8,-1); + dVar23 = 0.0; + for (uVar19 = 0; uVar19 < local_80; uVar19 = uVar19 + 1) { + dVar21 = (double)(*pcVar20)(local_c8,local_c0,iVar11 * local_78); + dVar23 = dVar23 + dVar21; + NAryMatIterator::operator++(aNStack_a0); + } + auVar22._8_8_ = 0; + auVar22._0_8_ = dVar23; +LAB_002ddd98: + if (local_28 != 0) { + piVar18 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar18; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar4) { + *piVar18 = iVar11 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar11 == 1) { + deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + piVar18 = local_20; + do { + *piVar18 = 0; + iVar11 = iVar11 + 1; + piVar18 = piVar18 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return auVar22; +} + + +================================================================== + +### FUNC 002de040 (2104 bytes) name=cvTransform + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvTransform(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + undefined4 *puVar11; + char *pcVar12; + int iVar13; + undefined8 *puVar14; + undefined4 local_2d8; + int local_2d4; + undefined4 local_2d0; + undefined4 local_2cc; + int local_2c8; + int local_2c4; + undefined4 local_2c0; + undefined4 local_2bc; + int local_2b8; + int local_2b4; + Mat *local_2b0; + undefined4 local_2a8; + undefined4 local_2a4; + uint local_2a0; + int local_29c; + int local_298; + int local_294; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + undefined4 *local_260; + undefined8 *local_258; + undefined8 auStack_250 [2]; + undefined8 local_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined8 *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + uint local_1e0; + int local_1dc; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + long local_1a8; + undefined4 *local_1a0; + undefined1 *local_198; + undefined1 auStack_190 [16]; + uint local_180; + int local_17c; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + long local_148; + undefined4 *local_140; + undefined1 *local_138; + undefined1 auStack_130 [16]; + undefined4 local_120; + int local_11c; + Mat *local_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0 [2]; + Mat *local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if (param_4 == (cv *)0x0) goto LAB_002de588; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + cv::Mat::reshape((int)(Mat *)&local_60,1); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + puVar11 = local_20; + do { + *puVar11 = 0; + iVar13 = iVar13 + 1; + puVar11 = puVar11 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + local_1f8 = &local_1f0; + local_200 = &uStack_238; + local_2b4 = local_294 + 1; + uStack_238 = _UNK_002de9e8; + local_240 = _DAT_002de9e0; + local_230 = 0; + uStack_228 = 0; + local_220 = 0; + uStack_1e8 = 0; + local_1f0 = 0; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + local_2b8 = local_298; + cv::Mat::create((Mat *)&local_240,2,&local_2b8,local_2a0 & 0xfff); + local_2d0 = 0x80000000; + local_2cc = 0x7fffffff; + local_2d8 = 0; + local_2d4 = local_294; + cv::Mat::Mat((Mat *)local_c0,(Mat *)&local_240,(Range *)&local_2d0,(Range *)&local_2d8); + local_2c4 = local_294 + 1; + local_2c0 = 0x80000000; + local_2bc = 0x7fffffff; + local_2c8 = local_294; + cv::Mat::Mat((Mat *)&local_60,(Mat *)&local_240,(Range *)&local_2c0,(Range *)&local_2c8); + local_2a8 = 0; + local_2a4 = 0; + local_2b8 = 0x2010000; + local_2b0 = (Mat *)local_c0; + cv::Mat::convertTo((Mat *)&local_2a0,(_OutputArray *)&local_2b8,local_c0[0] & 0xfff,1.0,0.0); + local_2a8 = 0; + local_2a4 = 0; + local_2b8 = 0x2010000; + local_2b0 = (Mat *)&local_60; + cv::Mat::convertTo((Mat *)&local_120,(_OutputArray *)&local_2b8,local_60 & 0xfff,1.0,0.0); + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (local_29c < 1) { +LAB_002de350: + local_2a0 = (uint)local_240; + if (2 < local_240._4_4_) goto LAB_002de7d8; + local_294 = uStack_238._4_4_; + local_298 = (int)uStack_238; + local_29c = local_240._4_4_; + *local_258 = *local_1f8; + local_258[1] = local_1f8[1]; + } + else { + iVar13 = 0; + puVar11 = local_260; + do { + *puVar11 = 0; + iVar13 = iVar13 + 1; + puVar11 = puVar11 + 1; + } while (iVar13 < local_29c); + if (local_29c < 3) goto LAB_002de350; +LAB_002de7d8: + local_2a0 = (uint)local_240; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_240); + } + uStack_278 = uStack_218; + local_280 = local_220; + lStack_268 = lStack_208; + local_270 = local_210; + uStack_288 = uStack_228; + local_290 = local_230; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < (int)local_c0[1]) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < (int)local_c0[1]); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar13 = 0; + puVar14 = local_200; + do { + *(undefined4 *)puVar14 = 0; + iVar13 = iVar13 + 1; + puVar14 = (undefined8 *)((long)puVar14 + 4); + } while (iVar13 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + cv::fastFree(local_1f8); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar13 = 0; + do { + *local_e0 = 0; + iVar13 = iVar13 + 1; + local_e0 = local_e0 + 1; + } while (iVar13 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_002de588: + if (((local_180 & 7) != (local_1e0 & 7)) || (local_298 != (local_180 >> 3 & 0x1ff) + 1)) { + local_c0[0] = 0; + local_c0[1] = 0; + local_b8 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)local_c0,0x36); + uVar10 = s_dst_depth______src_depth______ds_004691c8._52_2_; + uVar9 = s_dst_depth______src_depth______ds_004691c8._40_8_; + uVar8 = s_dst_depth______src_depth______ds_004691c8._32_8_; + uVar7 = s_dst_depth______src_depth______ds_004691c8._24_8_; + uVar6 = s_dst_depth______src_depth______ds_004691c8._16_8_; + uVar5 = s_dst_depth______src_depth______ds_004691c8._8_8_; + uVar4 = s_dst_depth______src_depth______ds_004691c8._0_8_; + *(undefined4 *)(pcVar12 + 0x30) = s_dst_depth______src_depth______ds_004691c8._48_4_; + *(undefined2 *)(pcVar12 + 0x34) = uVar10; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + *(undefined8 *)(pcVar12 + 0x20) = uVar8; + *(undefined8 *)(pcVar12 + 0x28) = uVar9; + cv::error(-0xd7,(String *)local_c0, + "void cvTransform(const CvArr*, CvArr*, const CvMat*, const CvMat*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xce7); + cv::String::deallocate((String *)local_c0); + } + local_110 = 0; + local_120 = 0x1010000; + local_b0 = 0; + local_c0[0] = 0x2010000; + local_50 = 0; + local_60 = 0x1010000; + local_118 = (Mat *)&local_1e0; + local_b8 = (Mat *)&local_180; + local_58 = (Mat *)&local_2a0; + cv::transform((_InputArray *)&local_120,(_OutputArray *)local_c0,(_InputArray *)&local_60); + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar13 = 0; + do { + *local_140 = 0; + iVar13 = iVar13 + 1; + local_140 = local_140 + 1; + } while (iVar13 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (local_1a8 != 0) { + piVar1 = (int *)(local_1a8 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1dc) { + iVar13 = 0; + do { + *local_1a0 = 0; + iVar13 = iVar13 + 1; + local_1a0 = local_1a0 + 1; + } while (iVar13 < local_1dc); + } + if (local_198 != auStack_190) { + cv::fastFree(local_198); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_29c) { + iVar13 = 0; + do { + *local_260 = 0; + iVar13 = iVar13 + 1; + local_260 = local_260 + 1; + } while (iVar13 < local_29c); + } + if (local_258 != auStack_250) { + cv::fastFree(local_258); + } + return; +} + + +================================================================== + +### FUNC 002de9f0 (772 bytes) name=cvPerspectiveTransform + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvPerspectiveTransform + (cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + undefined8 *puVar11; + int iVar12; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + Mat aMStack_120 [4]; + int local_11c; + int local_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if (((local_60 & 0xfff) != (local_c0 & 0xfff)) || (local_118 + -1 != (local_60 >> 3 & 0x1ff) + 1)) + { + local_138 = 0; + local_130 = (Mat *)0x0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_138,0x36); + uVar10 = DAT_00469234; + uVar9 = _DAT_00469228; + uVar8 = DAT_00469220; + uVar7 = DAT_00469218; + uVar6 = DAT_00469210; + uVar5 = DAT_00469208; + uVar4 = DAT_00469200; + *(undefined4 *)(puVar11 + 6) = DAT_00469230; + *(undefined2 *)((long)puVar11 + 0x34) = uVar10; + *puVar11 = uVar4; + puVar11[1] = uVar5; + puVar11[2] = uVar6; + puVar11[3] = uVar7; + puVar11[4] = uVar8; + puVar11[5] = uVar9; + cv::error(-0xd7,(String *)&local_138, + "void cvPerspectiveTransform(const CvArr*, CvArr*, const CvMat*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xcf1); + cv::String::deallocate((String *)&local_138); + } + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x1010000); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_140 = 0; + local_13c = 0; + local_150[0] = 0x2010000; + local_160 = (Mat *)&local_c0; + local_148 = (Mat *)&local_60; + local_130 = aMStack_120; + cv::perspectiveTransform + ((_InputArray *)local_168,(_OutputArray *)local_150,(_InputArray *)&local_138); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar12 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate(aMStack_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002ded80 (920 bytes) name=cvScaleAdd + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvScaleAdd(double param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5, + undefined8 param_6,AutoBuffer *param_7) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + int iVar10; + int *piVar11; + int *piVar12; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_7); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_7); + iVar10 = local_e0[-1]; + if (iVar10 == local_80[-1]) { + if (iVar10 == 2) { + if ((*local_e0 == *local_80) && (local_e0[1] == local_80[1])) goto LAB_002df0d8; + } + else if (iVar10 < 1) { +LAB_002df0d8: + if ((local_120 & 0xfff) == (local_c0 & 0xfff)) goto LAB_002dee74; + } + else if (*local_e0 == *local_80) { + piVar11 = local_e0; + piVar12 = local_80; + do { + piVar12 = piVar12 + 1; + if (piVar11 == local_e0 + (iVar10 - 1)) goto LAB_002df0d8; + piVar11 = piVar11 + 1; + } while (*piVar11 == *piVar12); + } + } + local_138 = 0; + local_130 = (Mat *)0x0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_138,0x32); + uVar8 = _LAB_00460c18; + uVar7 = DAT_00460c10; + uVar6 = DAT_00460c08; + uVar5 = DAT_00460c00; + uVar4 = DAT_00460bf8; + uVar3 = DAT_00460bf0; + *(undefined2 *)(puVar9 + 6) = _LAB_00460c20; + *puVar9 = uVar3; + puVar9[1] = uVar4; + puVar9[2] = uVar5; + puVar9[3] = uVar6; + puVar9[4] = uVar7; + puVar9[5] = uVar8; + cv::error(-0xd7,(String *)&local_138, + "void cvScaleAdd(const CvArr*, CvScalar, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xcfb); + cv::String::deallocate((String *)&local_138); +LAB_002dee74: + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_160 = (Mat *)&local_120; + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = aMStack_60; + local_130 = (Mat *)&local_c0; + cv::scaleAdd((_InputArray *)local_168,param_1,(_InputArray *)local_150,(_OutputArray *)&local_138) + ; + if (local_28 != 0) { + piVar11 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar11 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar11 = (int *)(local_e8 + 0x14); + do { + iVar10 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002df1a0 (632 bytes) name=cvMahalanobis + +undefined1 [16] +cvMahalanobis(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined1 auVar5 [16]; + undefined4 local_168 [2]; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150 [2]; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138 [2]; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + Mat aMStack_120 [4]; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + local_158 = 0; + local_154 = 0; + local_168[0] = 0x1010000; + local_160 = aMStack_120; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_140 = 0; + local_13c = 0; + local_150[0] = 0x1010000; + local_148 = aMStack_c0; + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_128 = 0; + local_124 = 0; + local_138[0] = 0x1010000; + local_130 = aMStack_60; + auVar5._0_8_ = cv::Mahalanobis((_InputArray *)local_168,(_InputArray *)local_150, + (_InputArray *)local_138); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + do { + *local_e0 = 0; + iVar4 = iVar4 + 1; + local_e0 = local_e0 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + auVar5._8_8_ = 0; + return auVar5; +} + + +================================================================== + +### FUNC 002df490 (396 bytes) name=cvDotProduct + +undefined1 [16] cvDotProduct(cv *param_1,cv *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined1 auVar5 [16]; + undefined4 local_d8 [2]; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x1010000; + local_d0 = aMStack_60; + auVar5._0_8_ = cv::Mat::dot(aMStack_c0,(_InputArray *)local_d8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + auVar5._8_8_ = 0; + return auVar5; +} + + +================================================================== + +### FUNC 002df66c (436 bytes) name=~PCA + +/* cv::PCA::~PCA() */ + +void __thiscall cv::PCA::~PCA(PCA *this) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined4 *puVar4; + int iVar5; + + if (*(long *)(this + 0xf8) != 0) { + piVar1 = (int *)(*(long *)(this + 0xf8) + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)(this + 0xc0)); + } + } + *(undefined8 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0xd0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xd8) = 0; + if (0 < *(int *)(this + 0xc4)) { + iVar5 = 0; + puVar4 = *(undefined4 **)(this + 0x100); + do { + *puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = puVar4 + 1; + } while (iVar5 < *(int *)(this + 0xc4)); + } + if (*(PCA **)(this + 0x108) != this + 0x110) { + fastFree(*(PCA **)(this + 0x108)); + } + if (*(long *)(this + 0x98) != 0) { + piVar1 = (int *)(*(long *)(this + 0x98) + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)(this + 0x60)); + } + } + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x78) = 0; + if (0 < *(int *)(this + 100)) { + iVar5 = 0; + puVar4 = *(undefined4 **)(this + 0xa0); + do { + *puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = puVar4 + 1; + } while (iVar5 < *(int *)(this + 100)); + } + if (*(PCA **)(this + 0xa8) != this + 0xb0) { + fastFree(*(PCA **)(this + 0xa8)); + } + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (0 < *(int *)(this + 4)) { + iVar5 = 0; + puVar4 = *(undefined4 **)(this + 0x40); + do { + *puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = puVar4 + 1; + } while (iVar5 < *(int *)(this + 4)); + } + if (*(PCA **)(this + 0x48) != this + 0x50) { + fastFree(*(PCA **)(this + 0x48)); + return; + } + return; +} + + +================================================================== + +### FUNC 002df870 (5844 bytes) name=cvCalcPCA + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvCalcPCA(cv *param_1,cv *param_2,cv *param_3,cv *param_4,uint param_5) + +{ + long lVar1; + char cVar2; + bool bVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + int iVar8; + int iVar9; + long lVar10; + void *__dest; + char *pcVar11; + int *piVar12; + Mat **ppMVar13; + undefined4 *puVar14; + undefined8 *puVar15; + undefined8 *puVar16; + long lVar17; + Mat *pMVar18; + undefined4 local_5f0; + int local_5ec; + undefined4 local_5e8; + undefined4 local_5e4; + undefined4 local_5e0; + undefined4 local_5dc; + undefined4 local_5d8; + int local_5d4; + undefined4 local_5d0; + undefined4 local_5cc; + undefined4 local_5c8; + int local_5c4; + undefined8 local_5c0; + undefined8 local_5b8; + undefined8 local_5b0; + undefined8 local_5a8; + uint local_5a0; + int iStack_59c; + Mat *pMStack_598; + long local_590; + undefined8 local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + long local_568; + undefined4 *local_560; + undefined8 *local_558; + undefined8 auStack_550 [2]; + uint local_540; + int iStack_53c; + int iStack_538; + int iStack_534; + long local_530; + undefined8 local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + long local_508; + undefined4 *local_500; + undefined8 *local_4f8; + undefined8 auStack_4f0 [2]; + uint local_4e0; + int iStack_4dc; + int iStack_4d8; + int iStack_4d4; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + long local_4a8; + undefined4 *local_4a0; + undefined8 *local_498; + undefined8 auStack_490 [2]; + undefined8 local_480; + undefined8 uStack_478; + long local_470; + undefined8 uStack_468; + undefined8 local_460; + undefined8 uStack_458; + undefined8 local_450; + long lStack_448; + int *local_440; + undefined8 *local_438; + undefined8 local_430; + undefined8 uStack_428; + undefined8 local_420; + undefined8 uStack_418; + long local_410; + undefined8 uStack_408; + undefined8 local_400; + undefined8 uStack_3f8; + undefined8 local_3f0; + long lStack_3e8; + undefined8 *local_3e0; + undefined8 *local_3d8; + undefined8 local_3d0; + undefined8 uStack_3c8; + undefined8 local_3c0; + undefined4 uStack_3b8; + int iStack_3b4; + undefined8 local_3b0; + undefined8 uStack_3a8; + undefined8 local_3a0; + undefined8 uStack_398; + undefined8 local_390; + long lStack_388; + undefined4 *local_380; + undefined8 *local_378; + undefined8 local_370; + undefined8 uStack_368; + undefined8 local_360; + Mat *pMStack_358; + long local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + long local_328; + Mat **local_320; + undefined8 *local_318; + undefined8 local_310; + undefined8 uStack_308; + Mat aMStack_300 [4]; + int local_2fc; + undefined8 local_2f0; + undefined8 local_2e8; + undefined8 local_2e0; + undefined8 local_2d8; + long local_2c8; + undefined4 *local_2c0; + undefined1 *local_2b8; + undefined1 auStack_2b0 [16]; + uint local_2a0; + int local_29c; + undefined4 local_298 [2]; + long local_290; + undefined8 local_288; + undefined8 local_280; + undefined8 local_278; + undefined8 local_270; + long local_268; + undefined4 *local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 local_248; + undefined4 local_240; + int local_23c; + Mat *local_238; + undefined8 local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + long local_208; + undefined4 *local_200; + undefined1 *local_1f8; + undefined1 auStack_1f0 [16]; + undefined4 local_1e0; + int local_1dc; + Mat *local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + long local_1a8; + undefined4 *local_1a0; + undefined1 *local_198; + undefined1 auStack_190 [16]; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + Mat **local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined4 local_120; + int local_11c; + int local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + long local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + undefined4 local_60; + int local_5c; + int local_58; + undefined4 local_54; + long local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + int *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + pMVar18 = aMStack_300; + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,(AutoBuffer *)aMStack_300); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,(AutoBuffer *)pMVar18); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,(AutoBuffer *)pMVar18); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,(AutoBuffer *)pMVar18); + local_480 = CONCAT44(iStack_59c,local_5a0); + local_438 = &local_430; + local_440 = (int *)&uStack_478; + uStack_428 = 0; + local_430 = 0; + uStack_478 = pMStack_598; + local_470 = local_590; + uStack_468 = local_588; + local_460 = local_580; + uStack_458 = local_578; + local_450 = local_570; + lStack_448 = local_568; + if (local_568 != 0) { + piVar12 = (int *)(local_568 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_59c < 3) { + local_430 = *local_558; + uStack_428 = local_558[1]; + } + else { + local_480 = (ulong)local_5a0; + cv::Mat::copySize((Mat *)&local_480,(Mat *)&local_5a0); + } + uStack_418 = CONCAT44(iStack_534,iStack_538); + local_420 = CONCAT44(iStack_53c,local_540); + local_3d8 = &local_3d0; + local_3e0 = &uStack_418; + uStack_3c8 = 0; + local_3d0 = 0; + local_410 = local_530; + uStack_408 = local_528; + local_400 = local_520; + uStack_3f8 = local_518; + local_3f0 = local_510; + lStack_3e8 = local_508; + if (local_508 != 0) { + piVar12 = (int *)(local_508 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_53c < 3) { + local_3d0 = *local_4f8; + uStack_3c8 = local_4f8[1]; + } + else { + local_420 = (ulong)local_540; + cv::Mat::copySize((Mat *)&local_420,(Mat *)&local_540); + } + iStack_3b4 = iStack_4d4; + local_3c0 = CONCAT44(iStack_4dc,local_4e0); + local_378 = &local_370; + local_380 = &uStack_3b8; + uStack_368 = 0; + local_370 = 0; + local_3b0 = local_4d0; + uStack_3a8 = local_4c8; + local_3a0 = local_4c0; + uStack_398 = local_4b8; + local_390 = local_4b0; + lStack_388 = local_4a8; + if (local_4a8 != 0) { + piVar12 = (int *)(local_4a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_4dc < 3) { + local_370 = *local_498; + uStack_368 = local_498[1]; + } + else { + local_3c0 = (ulong)local_4e0; + cv::Mat::copySize((Mat *)&local_3c0,(Mat *)&local_4e0); + } + cv::PCA::PCA((PCA *)&local_120); + if (lStack_448 != 0) { + piVar12 = (int *)(lStack_448 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_28 != 0) { + piVar12 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (local_5c < 1) { +LAB_002dfb7c: + local_60 = (uint)local_480; + if (2 < local_480._4_4_) goto LAB_002dfb88; + local_58 = (int)uStack_478; + local_54 = uStack_478._4_4_; + *local_18 = *local_438; + local_18[1] = local_438[1]; + local_5c = local_480._4_4_; + } + else { + iVar8 = 0; + piVar12 = local_20; + do { + *piVar12 = 0; + iVar8 = iVar8 + 1; + piVar12 = piVar12 + 1; + } while (iVar8 < local_5c); + if (local_5c < 3) goto LAB_002dfb7c; +LAB_002dfb88: + local_60 = (uint)local_480; + cv::Mat::copySize((Mat *)&local_60,(Mat *)&local_480); + } + uStack_38 = uStack_458; + local_40 = local_460; + lStack_28 = lStack_448; + local_30 = local_450; + uStack_48 = uStack_468; + local_50 = local_470; + if (lStack_3e8 != 0) { + piVar12 = (int *)(lStack_3e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_88 != 0) { + piVar12 = (int *)(lStack_88 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (local_bc < 1) { +LAB_002dfc50: + local_c0 = (undefined4)local_420; + if (2 < local_420._4_4_) goto LAB_002dfc5c; + local_b8 = (int)uStack_418; + local_b4 = uStack_418._4_4_; + *local_78 = *local_3d8; + local_78[1] = local_3d8[1]; + local_bc = local_420._4_4_; + } + else { + iVar8 = 0; + puVar14 = local_80; + do { + *puVar14 = 0; + iVar8 = iVar8 + 1; + puVar14 = puVar14 + 1; + } while (iVar8 < local_bc); + if (local_bc < 3) goto LAB_002dfc50; +LAB_002dfc5c: + local_c0 = (undefined4)local_420; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_420); + } + uStack_98 = uStack_3f8; + local_a0 = local_400; + lStack_88 = lStack_3e8; + local_90 = local_3f0; + uStack_a8 = uStack_408; + local_b0 = local_410; + if (lStack_388 != 0) { + piVar12 = (int *)(lStack_388 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar12 = (int *)(lStack_e8 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_11c < 1) { +LAB_002dfd24: + local_120 = (undefined4)local_3c0; + if (2 < local_3c0._4_4_) goto LAB_002dfd30; + local_114 = iStack_3b4; + *local_d8 = *local_378; + local_d8[1] = local_378[1]; + local_11c = local_3c0._4_4_; + } + else { + iVar8 = 0; + puVar14 = local_e0; + do { + *puVar14 = 0; + iVar8 = iVar8 + 1; + puVar14 = puVar14 + 1; + } while (iVar8 < local_11c); + if (local_11c < 3) goto LAB_002dfd24; +LAB_002dfd30: + local_120 = (undefined4)local_3c0; + cv::Mat::copySize((Mat *)&local_120,(Mat *)&local_3c0); + } + local_1d0 = 0; + uStack_f8 = uStack_398; + local_100 = local_3a0; + lStack_e8 = lStack_388; + local_f0 = local_390; + uStack_108 = uStack_3a8; + local_110 = local_3b0; + local_1e0 = 0x1010000; + local_1d8 = aMStack_300; + if ((param_5 >> 1 & 1) == 0) { + local_318 = &local_310; + local_320 = &pMStack_358; + local_350 = 0; + local_348 = 0; + uStack_308 = 0; + local_310 = 0; + local_340 = 0; + local_338 = 0; + local_330 = 0; + local_328 = 0; + pMStack_358 = _UNK_002e11b8; + local_360 = _DAT_002e11b0; + } + else { + local_318 = &local_310; + local_320 = &pMStack_358; + uStack_308 = 0; + local_310 = 0; + pMStack_358 = uStack_478; + local_360 = local_480; + local_350 = local_470; + local_348 = uStack_468; + local_340 = local_460; + local_338 = uStack_458; + local_330 = local_450; + local_328 = lStack_448; + if (lStack_448 != 0) { + piVar12 = (int *)(lStack_448 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (local_480._4_4_ < 3) { + local_310 = *local_438; + uStack_308 = local_438[1]; + } + else { + local_360 = local_480 & 0xffffffff; + cv::Mat::copySize((Mat *)&local_360,(Mat *)&local_480); + } + } + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x1010000); + iVar8 = 0; + if (local_410 != 0) { + if (local_420._4_4_ < 3) { + lVar17 = (long)uStack_418._4_4_ * (long)(int)uStack_418; + } + else { + lVar10 = 0; + lVar17 = 1; + do { + lVar1 = lVar10 * 4; + lVar10 = lVar10 + 1; + lVar17 = lVar17 * *(int *)((long)local_3e0 + lVar1); + } while ((int)lVar10 < local_420._4_4_); + } + iVar8 = 0; + if (lVar17 != 0) { + iVar8 = (int)uStack_418 + uStack_418._4_4_ + -1; + } + } + pMStack_178 = (Mat *)&local_360; + cv::PCA::operator()((PCA *)&local_120,(_InputArray *)&local_1e0,(_InputArray *)&local_180,param_5, + iVar8); + if (local_328 != 0) { + piVar12 = (int *)(local_328 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + local_328 = 0; + local_350 = 0; + local_338 = 0; + local_340 = 0; + local_348 = 0; + if (0 < local_360._4_4_) { + iVar8 = 0; + ppMVar13 = local_320; + do { + *(undefined4 *)ppMVar13 = 0; + iVar8 = iVar8 + 1; + ppMVar13 = (Mat **)((long)ppMVar13 + 4); + } while (iVar8 < local_360._4_4_); + } + if (local_318 != &local_310) { + cv::fastFree(local_318); + } + if ((local_20[1] == local_440[1]) && (*local_20 == *local_440)) { + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + pMStack_178 = (Mat *)&local_480; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_180,(uint)local_480 & 0xfff,1.0,0.0); + } + else { + local_138 = &local_130; + local_170 = 0; + local_140 = &pMStack_178; + uStack_128 = 0; + local_130 = 0; + pMStack_178 = _UNK_002e11b8; + local_180 = _DAT_002e11b0; + local_1d0 = 0; + local_1e0 = 0x2010000; + local_168 = 0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + local_1d8 = (Mat *)&local_180; + cv::Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_1e0,(uint)local_480 & 0xfff,1.0,0.0); + local_1d0 = 0; + local_1e0 = 0x2010000; + local_230 = 0; + local_240 = 0x1010000; + local_238 = (Mat *)&local_180; + local_1d8 = (Mat *)&local_480; + cv::transpose((_InputArray *)&local_240,(_OutputArray *)&local_1e0); + if (local_148 == 0) { +LAB_002dffa4: + uVar4 = local_180; + } + else { + piVar12 = (int *)(local_148 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 != 1) goto LAB_002dffa4; + cv::Mat::deallocate((Mat *)&local_180); + uVar4 = local_180; + } + if (0 < local_180._4_4_) { + iVar8 = 0; + ppMVar13 = local_140; + do { + *(undefined4 *)ppMVar13 = 0; + iVar8 = iVar8 + 1; + local_180._4_4_ = (int)(uVar4 >> 0x20); + ppMVar13 = (Mat **)((long)ppMVar13 + 4); + } while (iVar8 < local_180._4_4_); + } + local_148 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + local_170 = 0; + local_180 = uVar4; + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + } + if (lStack_88 != 0) { + piVar12 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_3e8 != 0) { + piVar12 = (int *)(lStack_3e8 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_420); + } + } + puVar15 = local_78; + lStack_3e8 = 0; + local_410 = 0; + uStack_3f8 = 0; + local_400 = 0; + uStack_408 = 0; + if (local_420._4_4_ < 1) { +LAB_002e00b4: + if (2 < local_bc) goto LAB_002e00c0; + uStack_418 = CONCAT44(local_b4,local_b8); + local_420 = CONCAT44(local_bc,local_c0); + *local_3d8 = *local_78; + local_3d8[1] = puVar15[1]; + } + else { + iVar8 = 0; + puVar16 = local_3e0; + do { + *(undefined4 *)puVar16 = 0; + iVar8 = iVar8 + 1; + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (iVar8 < local_420._4_4_); + if (local_420._4_4_ < 3) goto LAB_002e00b4; +LAB_002e00c0: + local_420 = CONCAT44(local_420._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_420,(Mat *)&local_c0); + } + local_410 = local_b0; + uStack_408 = uStack_a8; + local_400 = local_a0; + uStack_3f8 = uStack_98; + local_3f0 = local_90; + lStack_3e8 = lStack_88; + if (lStack_e8 != 0) { + piVar12 = (int *)(lStack_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_388 != 0) { + piVar12 = (int *)(lStack_388 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_3c0); + } + } + puVar15 = local_d8; + lStack_388 = 0; + local_3b0 = 0; + uStack_398 = 0; + local_3a0 = 0; + uStack_3a8 = 0; + if (local_3c0._4_4_ < 1) { +LAB_002e0188: + if (2 < local_11c) goto LAB_002e0194; + iStack_3b4 = local_114; + local_3c0 = CONCAT44(local_11c,local_120); + *local_378 = *local_d8; + local_378[1] = puVar15[1]; + } + else { + iVar8 = 0; + puVar14 = local_380; + do { + *puVar14 = 0; + iVar8 = iVar8 + 1; + puVar14 = puVar14 + 1; + } while (iVar8 < local_3c0._4_4_); + if (local_3c0._4_4_ < 3) goto LAB_002e0188; +LAB_002e0194: + local_3c0 = CONCAT44(local_3c0._4_4_,local_120); + cv::Mat::copySize((Mat *)&local_3c0,(Mat *)&local_120); + } + uStack_398 = uStack_f8; + local_3a0 = local_100; + lStack_388 = lStack_e8; + local_390 = local_f0; + uStack_3a8 = uStack_108; + local_3b0 = local_110; + iVar8 = iStack_534 + iStack_538 + -1; + if ((((iStack_534 != 1) && (iStack_538 != 1)) || (uStack_418._4_4_ + (int)uStack_418 <= iVar8)) || + ((iStack_4d4 != iStack_3b4 || (iStack_4d8 != iVar8)))) { + local_5c0 = 0; + local_5b8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_5c0,0x75); + memcpy(__dest, + "(evals0.cols == 1 || evals0.rows == 1) && ecount0 <= ecount && evects0.cols == evects.cols && evects0.rows == ecount0" + ,0x75); + cv::error(-0xd7,(String *)&local_5c0,"void cvCalcPCA(const CvArr*, CvArr*, CvArr*, CvArr*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd58); + cv::String::deallocate((String *)&local_5c0); + } + local_260 = local_298; + local_258 = &local_250; + local_2a0 = local_540; + local_29c = iStack_53c; + local_290 = local_530; + local_288 = local_528; + local_280 = local_520; + local_278 = local_518; + local_270 = local_510; + local_268 = local_508; + local_248 = 0; + local_250 = 0; + if (local_508 != 0) { + piVar12 = (int *)(local_508 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = *piVar12 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_53c < 3) { + local_250 = *local_4f8; + local_248 = local_4f8[1]; + if ((int)uStack_418 != 1) goto LAB_002e0300; +LAB_002e0ce0: + local_5e8 = 0x80000000; + local_5e4 = 0x7fffffff; + local_5f0 = 0; + local_5ec = iVar8; + cv::Mat::Mat((Mat *)&local_240,(Mat *)&local_420,(Range *)&local_5e8,(Range *)&local_5f0); + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + pMStack_178 = (Mat *)&local_2a0; + cv::Mat::convertTo((Mat *)&local_240,(_OutputArray *)&local_180,local_540 & 0xfff,1.0,0.0); + if (local_208 != 0) { + piVar12 = (int *)(local_208 + 0x14); + do { + iVar9 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + local_208 = 0; + local_230 = 0; + local_218 = 0; + local_220 = 0; + local_228 = 0; + if (0 < local_23c) { + iVar9 = 0; + do { + *local_200 = 0; + iVar9 = iVar9 + 1; + local_200 = local_200 + 1; + } while (iVar9 < local_23c); + } + local_198 = local_1f8; + if (local_1f8 == auStack_1f0) goto LAB_002e03d8; + } + else { + local_29c = 0; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_540); + if ((int)uStack_418 == 1) goto LAB_002e0ce0; +LAB_002e0300: + local_5e0 = 0x80000000; + local_5dc = 0x7fffffff; + local_5d8 = 0; + local_5d4 = iVar8; + cv::Mat::Mat((Mat *)&local_1e0,(Mat *)&local_420,(Range *)&local_5d8,(Range *)&local_5e0); + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + pMStack_178 = (Mat *)&local_2a0; + cv::Mat::convertTo((Mat *)&local_1e0,(_OutputArray *)&local_180,local_540 & 0xfff,1.0,0.0); + if (local_1a8 != 0) { + piVar12 = (int *)(local_1a8 + 0x14); + do { + iVar9 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1dc) { + iVar9 = 0; + do { + *local_1a0 = 0; + iVar9 = iVar9 + 1; + local_1a0 = local_1a0 + 1; + } while (iVar9 < local_1dc); + } + if (local_198 == auStack_190) goto LAB_002e03d8; + } + cv::fastFree(local_198); +LAB_002e03d8: + if (local_290 != local_530) { + local_1e0 = 0x1010000; + local_1d0 = 0; + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + local_1d8 = (Mat *)&local_2a0; + pMStack_178 = (Mat *)&local_540; + cv::transpose((_InputArray *)&local_1e0,(_OutputArray *)&local_180); + } + local_5d0 = 0x80000000; + local_5cc = 0x7fffffff; + local_5c8 = 0; + local_5c4 = iVar8; + cv::Mat::Mat((Mat *)&local_180,(Mat *)&local_3c0,(Range *)&local_5c8,(Range *)&local_5d0); + local_1d0 = 0; + local_1e0 = 0x2010000; + local_1d8 = (Mat *)&local_4e0; + cv::Mat::convertTo((Mat *)&local_180,(_OutputArray *)&local_1e0,local_4e0 & 0xfff,1.0,0.0); + if (local_148 != 0) { + piVar12 = (int *)(local_148 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar8 = 0; + ppMVar13 = local_140; + do { + *(undefined4 *)ppMVar13 = 0; + iVar8 = iVar8 + 1; + ppMVar13 = (Mat **)((long)ppMVar13 + 4); + } while (iVar8 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_590 != local_470) { + local_5b0 = 0; + local_5a8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_5b0,0x17); + cVar2 = s_mean0_data____mean_data_004692b0[0x16]; + uVar7 = s_mean0_data____mean_data_004692b0._20_2_; + uVar6 = s_mean0_data____mean_data_004692b0._8_8_; + uVar5 = s_mean0_data____mean_data_004692b0._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_mean0_data____mean_data_004692b0._16_4_; + *(undefined2 *)(pcVar11 + 0x14) = uVar7; + pcVar11[0x16] = cVar2; + *(undefined8 *)pcVar11 = uVar5; + *(undefined8 *)(pcVar11 + 8) = uVar6; + cv::error(-0xd7,(String *)&local_5b0,"void cvCalcPCA(const CvArr*, CvArr*, CvArr*, CvArr*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd64); + cv::String::deallocate((String *)&local_5b0); + } + if (local_268 != 0) { + piVar12 = (int *)(local_268 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + local_268 = 0; + local_290 = 0; + local_278 = 0; + local_280 = 0; + local_288 = 0; + if (0 < local_29c) { + iVar8 = 0; + puVar14 = local_260; + do { + *puVar14 = 0; + iVar8 = iVar8 + 1; + puVar14 = puVar14 + 1; + } while (iVar8 < local_29c); + } + if (local_258 != &local_250) { + cv::fastFree(local_258); + } + if (lStack_28 != 0) { + piVar12 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (lStack_88 != 0) { + piVar12 = (int *)(lStack_88 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar8 = 0; + do { + *local_80 = 0; + iVar8 = iVar8 + 1; + local_80 = local_80 + 1; + } while (iVar8 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar12 = (int *)(lStack_e8 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar8 = 0; + do { + *local_e0 = 0; + iVar8 = iVar8 + 1; + local_e0 = local_e0 + 1; + } while (iVar8 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (lStack_388 != 0) { + piVar12 = (int *)(lStack_388 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_3c0); + } + } + lStack_388 = 0; + local_3b0 = 0; + uStack_398 = 0; + local_3a0 = 0; + uStack_3a8 = 0; + if (0 < local_3c0._4_4_) { + iVar8 = 0; + puVar14 = local_380; + do { + *puVar14 = 0; + iVar8 = iVar8 + 1; + puVar14 = puVar14 + 1; + } while (iVar8 < local_3c0._4_4_); + } + if (local_378 != &local_370) { + cv::fastFree(local_378); + } + if (lStack_3e8 != 0) { + piVar12 = (int *)(lStack_3e8 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_420); + } + } + lStack_3e8 = 0; + local_410 = 0; + uStack_3f8 = 0; + local_400 = 0; + uStack_408 = 0; + if (0 < local_420._4_4_) { + iVar8 = 0; + puVar15 = local_3e0; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < local_420._4_4_); + } + if (local_3d8 != &local_3d0) { + cv::fastFree(local_3d8); + } + if (lStack_448 != 0) { + piVar12 = (int *)(lStack_448 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_480); + } + } + lStack_448 = 0; + local_470 = 0; + uStack_458 = 0; + local_460 = 0; + uStack_468 = 0; + if (0 < local_480._4_4_) { + iVar8 = 0; + piVar12 = local_440; + do { + *piVar12 = 0; + iVar8 = iVar8 + 1; + piVar12 = piVar12 + 1; + } while (iVar8 < local_480._4_4_); + } + if (local_438 != &local_430) { + cv::fastFree(local_438); + } + if (local_4a8 != 0) { + piVar12 = (int *)(local_4a8 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_4e0); + } + } + local_4a8 = 0; + local_4d0 = 0; + local_4b8 = 0; + local_4c0 = 0; + local_4c8 = 0; + if (0 < iStack_4dc) { + iVar8 = 0; + do { + *local_4a0 = 0; + iVar8 = iVar8 + 1; + local_4a0 = local_4a0 + 1; + } while (iVar8 < iStack_4dc); + } + if (local_498 != auStack_490) { + cv::fastFree(local_498); + } + if (local_508 != 0) { + piVar12 = (int *)(local_508 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_540); + } + } + local_508 = 0; + local_530 = 0; + local_518 = 0; + local_520 = 0; + local_528 = 0; + if (0 < iStack_53c) { + iVar8 = 0; + do { + *local_500 = 0; + iVar8 = iVar8 + 1; + local_500 = local_500 + 1; + } while (iVar8 < iStack_53c); + } + if (local_4f8 != auStack_4f0) { + cv::fastFree(local_4f8); + } + if (local_568 != 0) { + piVar12 = (int *)(local_568 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_5a0); + } + } + local_568 = 0; + local_590 = 0; + local_578 = 0; + local_580 = 0; + local_588 = 0; + if (0 < iStack_59c) { + iVar8 = 0; + do { + *local_560 = 0; + iVar8 = iVar8 + 1; + local_560 = local_560 + 1; + } while (iVar8 < iStack_59c); + } + if (local_558 != auStack_550) { + cv::fastFree(local_558); + } + if (local_2c8 != 0) { + piVar12 = (int *)(local_2c8 + 0x14); + do { + iVar8 = *piVar12; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar3) { + *piVar12 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(aMStack_300); + } + } + local_2c8 = 0; + local_2f0 = 0; + local_2d8 = 0; + local_2e0 = 0; + local_2e8 = 0; + if (0 < local_2fc) { + iVar8 = 0; + do { + *local_2c0 = 0; + iVar8 = iVar8 + 1; + local_2c0 = local_2c0 + 1; + } while (iVar8 < local_2fc); + } + if (local_2b8 != auStack_2b0) { + cv::fastFree(local_2b8); + } + return; +} + + +================================================================== + +### FUNC 002e11c0 (3232 bytes) name=cvProjectPCA + +void cvProjectPCA(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + char *pcVar10; + undefined8 *puVar11; + undefined4 *puVar12; + undefined4 local_460; + undefined4 local_45c; + undefined4 local_458; + int local_454; + undefined8 local_450; + undefined8 local_448; + undefined8 local_440; + undefined8 local_438; + undefined8 local_430; + undefined8 local_428; + Mat local_420 [4]; + int local_41c; + int local_418; + undefined8 local_410; + undefined8 uStack_408; + undefined8 local_400; + undefined8 uStack_3f8; + undefined8 local_3f0; + long lStack_3e8; + undefined4 *local_3e0; + undefined8 *local_3d8; + undefined8 auStack_3d0 [2]; + uint local_3c0; + int iStack_3bc; + undefined8 uStack_3b8; + long local_3b0; + undefined8 local_3a8; + undefined8 local_3a0; + undefined8 local_398; + undefined8 local_390; + long local_388; + undefined4 *local_380; + undefined8 *local_378; + undefined8 auStack_370 [2]; + undefined8 local_360; + undefined8 uStack_358; + long local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + long local_328; + undefined8 *local_320; + undefined8 *local_318; + undefined8 local_310; + undefined8 uStack_308; + Mat local_300 [4]; + int local_2fc; + undefined8 local_2f0; + undefined8 uStack_2e8; + undefined8 local_2e0; + undefined8 uStack_2d8; + undefined8 local_2d0; + long lStack_2c8; + undefined4 *local_2c0; + undefined8 *local_2b8; + undefined8 auStack_2b0 [2]; + undefined4 local_2a0; + int local_29c; + undefined4 local_298; + int local_294; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + undefined4 *local_260; + undefined8 *local_258; + undefined8 auStack_250 [2]; + undefined4 local_240; + int local_23c; + undefined8 local_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined4 *local_200; + undefined8 *local_1f8; + undefined8 auStack_1f0 [2]; + Mat aMStack_1e0 [4]; + int local_1dc; + int local_1d8; + int local_1d4; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + long local_1a8; + undefined4 *local_1a0; + undefined1 *local_198; + undefined1 auStack_190 [16]; + Mat aMStack_180 [4]; + int local_17c; + int local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + long local_148; + undefined4 *local_140; + undefined1 *local_138; + undefined1 auStack_130 [16]; + PCA local_120 [4]; + int local_11c; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat local_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + local_360 = CONCAT44(iStack_3bc,local_3c0); + local_318 = &local_310; + local_320 = &uStack_358; + uStack_308 = 0; + local_310 = 0; + uStack_358 = uStack_3b8; + local_350 = local_3b0; + local_348 = local_3a8; + local_340 = local_3a0; + local_338 = local_398; + local_330 = local_390; + local_328 = local_388; + if (local_388 != 0) { + piVar1 = (int *)(local_388 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_3bc < 3) { + local_310 = *local_378; + uStack_308 = local_378[1]; + } + else { + local_360 = (ulong)local_3c0; + cv::Mat::copySize((Mat *)&local_360,(Mat *)&local_3c0); + } + cv::PCA::PCA(local_120); + if (lStack_3e8 != 0) { + piVar1 = (int *)(lStack_3e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (local_5c < 1) { +LAB_002e1390: + if (2 < local_41c) goto LAB_002e139c; + *local_18 = *local_3d8; + local_18[1] = local_3d8[1]; + local_5c = local_41c; + } + else { + iVar9 = 0; + puVar12 = local_20; + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < local_5c); + if (local_5c < 3) goto LAB_002e1390; +LAB_002e139c: + cv::Mat::copySize(local_60,local_420); + } + uStack_38 = uStack_3f8; + local_40 = local_400; + lStack_28 = lStack_3e8; + local_30 = local_3f0; + uStack_48 = uStack_408; + local_50 = local_410; + if (local_418 == 1) { + if ((local_178 < uStack_358._4_4_) || + (local_454 = uStack_358._4_4_, (int)uStack_358 != local_1d8)) { + local_450 = 0; + local_448 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_450,0x30); + uVar8 = s_dst_cols_<__evects_rows_&&_dst_r_004692c8._40_8_; + uVar7 = s_dst_cols_<__evects_rows_&&_dst_r_004692c8._32_8_; + uVar6 = s_dst_cols_<__evects_rows_&&_dst_r_004692c8._24_8_; + uVar5 = s_dst_cols_<__evects_rows_&&_dst_r_004692c8._16_8_; + uVar4 = s_dst_cols_<__evects_rows_&&_dst_r_004692c8._8_8_; + *(undefined8 *)pcVar10 = s_dst_cols_<__evects_rows_&&_dst_r_004692c8._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_450, + "void cvProjectPCA(const CvArr*, const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd74); + cv::String::deallocate((String *)&local_450); + local_454 = uStack_358._4_4_; + } + } + else if ((local_178 < (int)uStack_358) || + (local_454 = (int)uStack_358, uStack_358._4_4_ != local_1d4)) { + local_440 = 0; + local_438 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_440,0x30); + uVar8 = s_dst_rows_<__evects_rows_&&_dst_c_00469300._40_8_; + uVar7 = s_dst_rows_<__evects_rows_&&_dst_c_00469300._32_8_; + uVar6 = s_dst_rows_<__evects_rows_&&_dst_c_00469300._24_8_; + uVar5 = s_dst_rows_<__evects_rows_&&_dst_c_00469300._16_8_; + uVar4 = s_dst_rows_<__evects_rows_&&_dst_c_00469300._8_8_; + *(undefined8 *)pcVar10 = s_dst_rows_<__evects_rows_&&_dst_c_00469300._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_440, + "void cvProjectPCA(const CvArr*, const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd79); + cv::String::deallocate((String *)&local_440); + local_454 = (int)uStack_358; + } + local_460 = 0x80000000; + local_458 = 0; + local_45c = 0x7fffffff; + cv::Mat::Mat(local_300,aMStack_180,(Range *)&local_458,(Range *)&local_460); + if (lStack_2c8 != 0) { + piVar1 = (int *)(lStack_2c8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_11c < 1) { +LAB_002e1530: + if (2 < local_2fc) goto LAB_002e153c; + *local_d8 = *local_2b8; + local_d8[1] = local_2b8[1]; + local_11c = local_2fc; + } + else { + iVar9 = 0; + puVar12 = local_e0; + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < local_11c); + if (local_11c < 3) goto LAB_002e1530; +LAB_002e153c: + cv::Mat::copySize((Mat *)local_120,local_300); + } + uStack_f8 = uStack_2d8; + local_100 = local_2e0; + lStack_e8 = lStack_2c8; + local_f0 = local_2d0; + uStack_108 = uStack_2e8; + local_110 = local_2f0; + if (lStack_2c8 != 0) { + piVar1 = (int *)(lStack_2c8 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(local_300); + } + } + lStack_2c8 = 0; + local_2f0 = 0; + uStack_2d8 = 0; + local_2e0 = 0; + uStack_2e8 = 0; + if (0 < local_2fc) { + iVar9 = 0; + do { + *local_2c0 = 0; + iVar9 = iVar9 + 1; + local_2c0 = local_2c0 + 1; + } while (iVar9 < local_2fc); + } + if (local_2b8 != auStack_2b0) { + cv::fastFree(local_2b8); + } + local_230 = 0; + local_240 = 0x1010000; + local_238 = aMStack_1e0; + cv::PCA::project((_InputArray *)local_120); + if (local_294 == uStack_358._4_4_) goto LAB_002e1784; + cv::Mat::reshape((int)(Mat *)&local_2a0,1); + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (local_29c < 1) { +LAB_002e16c8: + local_2a0 = local_240; + if (2 < local_23c) goto LAB_002e16d4; + local_294 = local_238._4_4_; + local_298 = (undefined4)local_238; + *local_258 = *local_1f8; + local_258[1] = local_1f8[1]; + local_29c = local_23c; + } + else { + iVar9 = 0; + puVar12 = local_260; + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < local_29c); + if (local_29c < 3) goto LAB_002e16c8; +LAB_002e16d4: + local_2a0 = local_240; + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_240); + } + uStack_278 = uStack_218; + local_280 = local_220; + lStack_268 = lStack_208; + local_270 = local_210; + uStack_288 = uStack_228; + local_290 = local_230; + if (lStack_208 != 0) { + piVar1 = (int *)(lStack_208 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_23c) { + iVar9 = 0; + do { + *local_200 = 0; + iVar9 = iVar9 + 1; + local_200 = local_200 + 1; + } while (iVar9 < local_23c); + } + if (local_1f8 != auStack_1f0) { + cv::fastFree(local_1f8); + } +LAB_002e1784: + local_230 = 0; + local_240 = 0x2010000; + local_238 = (Mat *)&local_360; + cv::Mat::convertTo((Mat *)&local_2a0,(_OutputArray *)&local_240,(uint)local_360 & 0xfff,1.0,0.0); + if (local_3b0 != local_350) { + local_430 = 0; + local_428 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_430,0x15); + cVar2 = s_dst0_data____dst_data_00469338[0x14]; + uVar5 = s_dst0_data____dst_data_00469338._8_8_; + uVar4 = s_dst0_data____dst_data_00469338._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_dst0_data____dst_data_00469338._16_4_; + pcVar10[0x14] = cVar2; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_430, + "void cvProjectPCA(const CvArr*, const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd83); + cv::String::deallocate((String *)&local_430); + } + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_29c) { + iVar9 = 0; + do { + *local_260 = 0; + iVar9 = iVar9 + 1; + local_260 = local_260 + 1; + } while (iVar9 < local_29c); + } + if (local_258 != auStack_250) { + cv::fastFree(local_258); + } + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + do { + *local_80 = 0; + iVar9 = iVar9 + 1; + local_80 = local_80 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_328 != 0) { + piVar1 = (int *)(local_328 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + local_328 = 0; + local_350 = 0; + local_338 = 0; + local_340 = 0; + local_348 = 0; + if (0 < local_360._4_4_) { + iVar9 = 0; + puVar11 = local_320; + do { + *(undefined4 *)puVar11 = 0; + iVar9 = iVar9 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar9 < local_360._4_4_); + } + if (local_318 != &local_310) { + cv::fastFree(local_318); + } + if (local_388 != 0) { + piVar1 = (int *)(local_388 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_3c0); + } + } + local_388 = 0; + local_3b0 = 0; + local_398 = 0; + local_3a0 = 0; + local_3a8 = 0; + if (0 < iStack_3bc) { + iVar9 = 0; + do { + *local_380 = 0; + iVar9 = iVar9 + 1; + local_380 = local_380 + 1; + } while (iVar9 < iStack_3bc); + } + if (local_378 != auStack_370) { + cv::fastFree(local_378); + } + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar9 = 0; + do { + *local_140 = 0; + iVar9 = iVar9 + 1; + local_140 = local_140 + 1; + } while (iVar9 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (lStack_3e8 != 0) { + piVar1 = (int *)(lStack_3e8 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(local_420); + } + } + lStack_3e8 = 0; + local_410 = 0; + uStack_3f8 = 0; + local_400 = 0; + uStack_408 = 0; + if (0 < local_41c) { + iVar9 = 0; + do { + *local_3e0 = 0; + iVar9 = iVar9 + 1; + local_3e0 = local_3e0 + 1; + } while (iVar9 < local_41c); + } + if (local_3d8 != auStack_3d0) { + cv::fastFree(local_3d8); + } + if (local_1a8 != 0) { + piVar1 = (int *)(local_1a8 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(aMStack_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1dc) { + iVar9 = 0; + do { + *local_1a0 = 0; + iVar9 = iVar9 + 1; + local_1a0 = local_1a0 + 1; + } while (iVar9 < local_1dc); + } + if (local_198 != auStack_190) { + cv::fastFree(local_198); + } + return; +} + + +================================================================== + +### FUNC 002e2024 (2796 bytes) name=cvBackProjectPCA + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvBackProjectPCA(cv *param_1,cv *param_2,cv *param_3,cv *param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + char *pcVar11; + undefined8 *puVar12; + undefined4 *puVar13; + undefined4 local_400; + undefined4 local_3fc; + undefined4 local_3f8 [2]; + undefined8 local_3f0; + undefined8 local_3e8; + undefined8 local_3e0; + undefined8 local_3d8; + undefined8 local_3d0; + undefined8 local_3c8; + Mat local_3c0 [4]; + int local_3bc; + int local_3b8; + undefined8 local_3b0; + undefined8 uStack_3a8; + undefined8 local_3a0; + undefined8 uStack_398; + undefined8 local_390; + long lStack_388; + undefined4 *local_380; + undefined8 *local_378; + undefined8 auStack_370 [2]; + uint local_360; + int iStack_35c; + undefined8 uStack_358; + long local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + long local_328; + undefined4 *local_320; + undefined8 *local_318; + undefined8 auStack_310 [2]; + undefined8 local_300; + undefined8 uStack_2f8; + long local_2f0; + undefined8 local_2e8; + undefined8 local_2e0; + undefined8 local_2d8; + undefined8 local_2d0; + long local_2c8; + undefined8 *local_2c0; + undefined8 *local_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + undefined4 local_2a0; + int local_29c; + undefined8 local_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + undefined4 *local_260; + undefined8 *local_258; + undefined8 auStack_250 [2]; + Mat aMStack_240 [4]; + int local_23c; + int local_238; + int local_234; + undefined8 local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + long local_208; + undefined4 *local_200; + undefined1 *local_1f8; + undefined1 auStack_1f0 [16]; + Mat aMStack_1e0 [4]; + int local_1dc; + int local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + long local_1a8; + undefined4 *local_1a0; + undefined1 *local_198; + undefined1 auStack_190 [16]; + Mat aMStack_180 [4]; + int local_17c; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + long local_148; + undefined4 *local_140; + undefined1 *local_138; + undefined1 auStack_130 [16]; + PCA local_120 [4]; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat local_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_6); + local_300 = CONCAT44(iStack_35c,local_360); + local_2b8 = &local_2b0; + local_2c0 = &uStack_2f8; + uStack_2a8 = 0; + local_2b0 = 0; + uStack_2f8 = uStack_358; + local_2f0 = local_350; + local_2e8 = local_348; + local_2e0 = local_340; + local_2d8 = local_338; + local_2d0 = local_330; + local_2c8 = local_328; + if (local_328 != 0) { + piVar1 = (int *)(local_328 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_35c < 3) { + local_2b0 = *local_318; + uStack_2a8 = local_318[1]; + } + else { + local_300 = (ulong)local_360; + /* try { // try from 002e2a54 to 003e2a57 has its CatchHandler @ 002e2b24 */ + cv::Mat::copySize((Mat *)&local_300,(Mat *)&local_360); + } + cv::PCA::PCA(local_120); + if (lStack_388 != 0) { + piVar1 = (int *)(lStack_388 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (local_5c < 1) { +LAB_002e21f4: + if (2 < local_3bc) goto LAB_002e2200; + *local_18 = *local_378; + local_18[1] = local_378[1]; + local_5c = local_3bc; + } + else { + iVar10 = 0; + puVar13 = local_20; + do { + *puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = puVar13 + 1; + } while (iVar10 < local_5c); + if (local_5c < 3) goto LAB_002e21f4; +LAB_002e2200: + cv::Mat::copySize(local_60,local_3c0); + } + uStack_38 = uStack_398; + local_40 = local_3a0; + lStack_28 = lStack_388; + local_30 = local_390; + uStack_48 = uStack_3a8; + local_50 = local_3b0; + if (local_3b8 == 1) { + if ((local_1d8 < local_234) || ((int)uStack_2f8 != local_238)) { + local_3f0 = 0; + local_3e8 = 0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_3f0,0x31); + uVar9 = DAT_00469378; + uVar8 = DAT_00469370; + uVar7 = DAT_00469368; + uVar6 = _LAB_00469360; + uVar5 = _LAB_00469358; + uVar4 = DAT_00469350; + /* try { // try from 002e2acc to 003e2acf has its CatchHandler @ 002e2b10 */ + *(undefined1 *)(puVar12 + 6) = DAT_00469380; + /* try { // try from 002e2ad4 to 003e2ad7 has its CatchHandler @ 002e294c */ + *puVar12 = uVar4; + puVar12[1] = uVar5; + puVar12[2] = uVar6; + puVar12[3] = uVar7; + puVar12[4] = uVar8; + puVar12[5] = uVar9; + cv::error(-0xd7,(String *)&local_3f0, + "void cvBackProjectPCA(const CvArr*, const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd93); + cv::String::deallocate((String *)&local_3f0); + /* try { // try from 002e2af0 to 003e2af3 has its CatchHandler @ 002e2b10 */ + } + } + else if ((local_1d8 < local_238) || (uStack_2f8._4_4_ != local_234)) { + local_3e0 = 0; + local_3d8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_3e0,0x31); + uVar9 = s_data_rows_<__evects_rows_&&_dst__00469388._40_8_; + uVar8 = s_data_rows_<__evects_rows_&&_dst__00469388._32_8_; + uVar7 = s_data_rows_<__evects_rows_&&_dst__00469388._24_8_; + uVar6 = s_data_rows_<__evects_rows_&&_dst__00469388._16_8_; + uVar5 = s_data_rows_<__evects_rows_&&_dst__00469388._8_8_; + uVar4 = s_data_rows_<__evects_rows_&&_dst__00469388._0_8_; + pcVar11[0x30] = s_data_rows_<__evects_rows_&&_dst__00469388[0x30]; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + *(undefined8 *)(pcVar11 + 0x10) = uVar6; + *(undefined8 *)(pcVar11 + 0x18) = uVar7; + *(undefined8 *)(pcVar11 + 0x20) = uVar8; + *(undefined8 *)(pcVar11 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_3e0, + "void cvBackProjectPCA(const CvArr*, const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd98); + cv::String::deallocate((String *)&local_3e0); + } + local_400 = 0x80000000; + local_3f8[0] = 0; + local_3fc = 0x7fffffff; + cv::Mat::Mat((Mat *)&local_2a0,aMStack_1e0,(Range *)local_3f8,(Range *)&local_400); + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_11c < 1) { +LAB_002e239c: + if (local_29c < 3) { + local_114 = local_298._4_4_; + local_118 = (undefined4)local_298; + *local_d8 = *local_258; + local_d8[1] = local_258[1]; + local_11c = local_29c; + goto LAB_002e23b4; + } + } + else { + iVar10 = 0; + puVar13 = local_e0; + do { + *puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = puVar13 + 1; + } while (iVar10 < local_11c); + if (local_11c < 3) goto LAB_002e239c; + } + cv::Mat::copySize((Mat *)local_120,(Mat *)&local_2a0); +LAB_002e23b4: + uStack_f8 = uStack_278; + local_100 = local_280; + lStack_e8 = lStack_268; + local_f0 = local_270; + uStack_108 = uStack_288; + local_110 = local_290; + if (lStack_268 != 0) { + piVar1 = (int *)(lStack_268 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_29c) { + iVar10 = 0; + do { + *local_260 = 0; + iVar10 = iVar10 + 1; + local_260 = local_260 + 1; + } while (iVar10 < local_29c); + } + if (local_258 != auStack_250) { + cv::fastFree(local_258); + } + local_290 = 0; + local_2a0 = 0x1010000; + local_298 = aMStack_240; + cv::PCA::backProject((_InputArray *)local_120); + local_290 = 0; + local_2a0 = 0x2010000; + local_298 = (Mat *)&local_300; + cv::Mat::convertTo(aMStack_180,(_OutputArray *)&local_2a0,(uint)local_300 & 0xfff,1.0,0.0); + if (local_350 != local_2f0) { + local_3d0 = 0; + local_3c8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_3d0,0x15); + cVar2 = s_dst0_data____dst_data_00469338[0x14]; + uVar5 = s_dst0_data____dst_data_00469338._8_8_; + uVar4 = s_dst0_data____dst_data_00469338._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_dst0_data____dst_data_00469338._16_4_; + pcVar11[0x14] = cVar2; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_3d0, + "void cvBackProjectPCA(const CvArr*, const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xda0); + cv::String::deallocate((String *)&local_3d0); + } + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar10 = 0; + do { + *local_140 = 0; + iVar10 = iVar10 + 1; + local_140 = local_140 + 1; + } while (iVar10 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + do { + *local_20 = 0; + iVar10 = iVar10 + 1; + local_20 = local_20 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + do { + *local_80 = 0; + iVar10 = iVar10 + 1; + local_80 = local_80 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_2c8 != 0) { + piVar1 = (int *)(local_2c8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_300); + } + } + local_2c8 = 0; + local_2f0 = 0; + local_2d8 = 0; + /* catch() { ... } // from try @ 002e28c0 with catch @ 002e272c + catch() { ... } // from try @ 002e28f8 with catch @ 002e272c */ + local_2e0 = 0; + local_2e8 = 0; + if (0 < local_300._4_4_) { + iVar10 = 0; + puVar12 = local_2c0; + do { + *(undefined4 *)puVar12 = 0; + iVar10 = iVar10 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar10 < local_300._4_4_); + } + if (local_2b8 != &local_2b0) { + cv::fastFree(local_2b8); + } + if (local_328 != 0) { + piVar1 = (int *)(local_328 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate((Mat *)&local_360); + } + } + local_328 = 0; + local_350 = 0; + local_338 = 0; + local_340 = 0; + local_348 = 0; + if (0 < iStack_35c) { + iVar10 = 0; + do { + *local_320 = 0; + iVar10 = iVar10 + 1; + /* try { // try from 002e27bc to 003e27bf has its CatchHandler @ 002e2924 */ + local_320 = local_320 + 1; + } while (iVar10 < iStack_35c); + } + if (local_318 != auStack_310) { + cv::fastFree(local_318); + } + if (local_1a8 != 0) { + piVar1 = (int *)(local_1a8 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1dc) { + iVar10 = 0; + do { + *local_1a0 = 0; + iVar10 = iVar10 + 1; + /* try { // try from 002e2834 to 003e2837 has its CatchHandler @ 002e28fc */ + local_1a0 = local_1a0 + 1; + } while (iVar10 < local_1dc); + } + if (local_198 != auStack_190) { + cv::fastFree(local_198); + } + if (lStack_388 != 0) { + piVar1 = (int *)(lStack_388 + 0x14); + do { + iVar10 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar10 == 1) { + /* try { // try from 002e29dc to 003e29df has its CatchHandler @ 002e2b4c */ + cv::Mat::deallocate(local_3c0); + } + } + lStack_388 = 0; + local_3b0 = 0; + uStack_398 = 0; + local_3a0 = 0; + uStack_3a8 = 0; + if (0 < local_3bc) { + iVar10 = 0; + do { + *local_380 = 0; + iVar10 = iVar10 + 1; + /* try { // try from 002e28ac to 003e28af has its CatchHandler @ 002e28e8 */ + local_380 = local_380 + 1; + } while (iVar10 < local_3bc); + } + if (local_378 != auStack_370) { + /* try { // try from 002e28c0 to 003e28c3 has its CatchHandler @ 002e272c */ + cv::fastFree(local_378); + } + /* try { // try from 002e28c8 to 003e28cb has its CatchHandler @ 002e28e8 */ + if (local_208 != 0) { + piVar1 = (int *)(local_208 + 0x14); + do { + iVar10 = *piVar1; + /* try { // try from 002e28d4 to 003e28d7 has its CatchHandler @ 002e28fc */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar10 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 002e28e0 to 003e28e3 has its CatchHandler @ 002e2924 */ + if (iVar10 == 1) { + cv::Mat::deallocate(aMStack_240); + } + } + /* catch() { ... } // from try @ 002e28ac with catch @ 002e28e8 + catch() { ... } // from try @ 002e28c8 with catch @ 002e28e8 */ + local_208 = 0; + local_230 = 0; + /* try { // try from 002e28f8 to 003e28fb has its CatchHandler @ 002e272c */ + local_218 = 0; + /* catch() { ... } // from try @ 002e2834 with catch @ 002e28fc + catch() { ... } // from try @ 002e28d4 with catch @ 002e28fc */ + local_220 = 0; + local_228 = 0; + if (0 < local_23c) { + iVar10 = 0; + do { + *local_200 = 0; + iVar10 = iVar10 + 1; + local_200 = local_200 + 1; + } while (iVar10 < local_23c); + } + /* catch() { ... } // from try @ 002e27bc with catch @ 002e2924 + catch() { ... } // from try @ 002e28e0 with catch @ 002e2924 */ + if (local_1f8 != auStack_1f0) { + cv::fastFree(local_1f8); + } + /* catch() { ... } // from try @ 002e2ad4 with catch @ 002e294c + catch() { ... } // from try @ 002e2b20 with catch @ 002e294c */ + return; +} + + +================================================================== + +### FUNC 002e2cac (144 bytes) name=FUN_002e2cac + +void FUN_002e2cac(undefined8 *param_1,ulong param_2) + +{ + undefined8 *puVar1; + void *pvVar2; + + if (param_2 <= (ulong)param_1[1]) { + param_1[1] = param_2; + return; + } + puVar1 = (undefined8 *)*param_1; + /* try { // try from 002e2cd8 to 003e2cdb has its CatchHandler @ 002e31d4 */ + if (puVar1 != param_1 + 2) { + if (puVar1 != (void *)0x0) { + operator_delete__(puVar1); + } + *param_1 = param_1 + 2; + param_1[1] = 0x408; + } + /* try { // try from 002e2cf4 to 003e2d57 has its CatchHandler @ 002e2b74 */ + if (param_2 < 0x409) { + return; + } + pvVar2 = operator_new__(param_2); + param_1[1] = param_2; + *param_1 = pvVar2; + return; +} + + +================================================================== + +### FUNC 002e2d40 (11040 bytes) name=gemm + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::gemm(cv::_InputArray const&, cv::_InputArray const&, double, cv::_InputArray const&, double, + cv::_OutputArray const&, int) */ + +void cv::gemm(_InputArray *param_1,_InputArray *param_2,double param_3,_InputArray *param_4, + double param_5,_OutputArray *param_6,int param_7) + +{ + float *pfVar1; + double *pdVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int *piVar6; + undefined4 *puVar7; + undefined8 *puVar8; + uint uVar9; + uint uVar10; + uint uVar11; + undefined4 uVar12; + int iVar13; + int iVar14; + uint uVar15; + char cVar16; + bool bVar17; + uint uVar18; + uint uVar19; + undefined8 uVar20; + int iVar21; + uint uVar22; + void *pvVar23; + char *pcVar24; + long lVar25; + long lVar26; + undefined4 *puVar27; + undefined8 *puVar28; + undefined8 *puVar29; + uint uVar30; + undefined8 *puVar31; + uint *puVar32; + Mat *pMVar33; + undefined8 *puVar34; + double *pdVar35; + undefined4 *puVar36; + undefined8 *puVar37; + double *pdVar38; + uint uVar39; + long lVar40; + undefined8 *puVar41; + undefined8 *puVar42; + long lVar43; + ulong uVar44; + undefined8 *puVar45; + int iVar46; + ulong uVar47; + uint uVar48; + long lVar49; + ulong uVar50; + double *pdVar51; + int iVar52; + String *pSVar53; + long lVar54; + uint uVar55; + ulong uVar56; + float fVar57; + undefined8 uVar58; + double dVar59; + float fVar60; + float fVar61; + double dVar62; + float fVar63; + float fVar64; + float fVar65; + double dVar66; + double dVar67; + double dVar68; + float fVar69; + double dVar70; + double dVar71; + double dVar72; + float fVar73; + double dVar74; + double dVar75; + float fVar76; + double dVar77; + uint uVar78; + uint uVar79; + uint uVar80; + uint uVar81; + uint uVar82; + float fVar83; + double dVar84; + float fVar85; + double dVar86; + float fVar87; + double dVar88; + float fVar89; + double dVar90; + float fVar91; + float fVar92; + float fVar93; + double dVar94; + uint local_850; + double *local_840; + undefined4 *local_830; + ulong local_820; + double *local_818; + long local_810; + Mat *local_7e0; + code *local_7c8; + code *local_7c0; + double *local_7b8; + int local_7a0; + uint local_784; + Mat *local_778; + uint local_770; + int local_76c; + code *local_768; + double *local_760; + double *local_758; + ulong local_750; + double *local_748; + int local_740; + undefined8 local_710; + undefined8 local_708; + undefined8 local_700; + undefined8 local_6f8; + undefined8 local_6f0; + undefined8 local_6e8; + undefined8 local_6e0; + undefined8 local_6d8; + undefined8 local_6d0; + undefined8 local_6c8; + undefined8 local_6c0; + undefined8 uStack_6b8; + double *local_6b0; + undefined8 local_6a8; + undefined8 local_6a0; + undefined8 local_698; + undefined8 local_690; + long local_688; + undefined8 *local_680; + double **local_678; + double *local_670; + undefined8 uStack_668; + undefined8 local_660; + undefined8 uStack_658; + undefined8 local_650; + undefined8 local_648; + undefined8 local_640; + undefined8 local_638; + undefined8 local_630; + long local_628; + undefined8 *local_620; + undefined8 *local_618; + undefined8 local_610; + undefined8 uStack_608; + uint local_5f8; + int local_5f4; + uint local_5f0; + undefined4 local_5ec; + double *local_5e8; + undefined8 local_5e0; + undefined8 local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + long local_5c0; + uint *local_5b8; + ulong *local_5b0; + ulong local_5a8; + ulong local_5a0; + uint local_598; + int local_594; + uint local_590; + uint local_58c; + double *local_588; + undefined8 local_580; + undefined8 local_578; + undefined8 local_570; + undefined8 local_568; + long local_560; + uint *local_558; + double **local_550; + double *local_548; + long local_540; + undefined4 local_538; + int local_534; + undefined4 local_530; + undefined4 local_52c; + double *local_528; + undefined8 local_520; + undefined8 local_518; + undefined8 local_510; + undefined8 local_508; + long local_500; + undefined4 *local_4f8; + ulong *local_4f0; + ulong local_4e8 [2]; + uint local_4d8; + uint local_4d4; + uint local_4d0; + uint local_4cc; + undefined4 *local_4c8; + undefined4 *local_4c0; + undefined4 *local_4b8; + undefined4 *local_4b0; + undefined8 local_4a8; + undefined8 local_4a0; + uint *local_498; + long *local_490; + long local_488; + long local_480; + uint local_478; + uint local_474; + undefined8 local_470; + long local_468; + long local_460; + long local_458; + long local_450; + undefined8 local_448; + undefined8 local_440; + undefined8 *local_438; + long *local_430; + long local_428; + double *local_420; + undefined4 *local_418; + Mat *local_410; + undefined4 local_408; + undefined4 local_404; + + /* try { // try from 002e2d5c to 003e2d5f has its CatchHandler @ 002e318c */ + /* try { // try from 002e2d78 to 003e2de3 has its CatchHandler @ 002e2b74 */ + iVar21 = _InputArray::kind(param_1); + if (iVar21 == 0x10000) { + pMVar33 = *(Mat **)(param_1 + 8); + local_5b8 = &local_5f0; + local_5b0 = &local_5a8; + local_5f8 = *(uint *)pMVar33; + local_5f4 = *(int *)(pMVar33 + 4); + local_5f0 = *(uint *)(pMVar33 + 8); + local_5ec = *(undefined4 *)(pMVar33 + 0xc); + local_5e8 = *(double **)(pMVar33 + 0x10); + local_5e0 = *(undefined8 *)(pMVar33 + 0x18); + local_5d8 = *(undefined8 *)(pMVar33 + 0x20); + local_5d0 = *(undefined8 *)(pMVar33 + 0x28); + local_5c8 = *(undefined8 *)(pMVar33 + 0x30); + local_5c0 = *(long *)(pMVar33 + 0x38); + local_5a0 = 0; + local_5a8 = 0; + if (local_5c0 != 0) { + piVar6 = (int *)(local_5c0 + 0x14); + do { + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (*(int *)(pMVar33 + 4) < 3) { + /* try { // try from 002e5774 to 003e5777 has its CatchHandler @ 002e630c */ + local_5a8 = **(ulong **)(pMVar33 + 0x48); + local_5a0 = (*(ulong **)(pMVar33 + 0x48))[1]; + } + else { + local_5f4 = 0; + Mat::copySize((Mat *)&local_5f8,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar21 = _InputArray::kind(param_2); + if (iVar21 == 0x10000) { + pMVar33 = *(Mat **)(param_2 + 8); + local_558 = &local_590; + local_550 = &local_548; + local_598 = *(uint *)pMVar33; + local_594 = *(int *)(pMVar33 + 4); + local_590 = *(uint *)(pMVar33 + 8); + local_58c = *(uint *)(pMVar33 + 0xc); + local_588 = *(double **)(pMVar33 + 0x10); + local_580 = *(undefined8 *)(pMVar33 + 0x18); + local_578 = *(undefined8 *)(pMVar33 + 0x20); + local_570 = *(undefined8 *)(pMVar33 + 0x28); + local_568 = *(undefined8 *)(pMVar33 + 0x30); + local_560 = *(long *)(pMVar33 + 0x38); + /* try { // try from 002e55ac to 003e55af has its CatchHandler @ 002e62bc */ + local_540 = 0; + local_548 = (double *)0x0; + if (local_560 != 0) { + piVar6 = (int *)(local_560 + 0x14); + do { + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (*(int *)(pMVar33 + 4) < 3) { + local_548 = (double *)**(long **)(pMVar33 + 0x48); + local_540 = (*(long **)(pMVar33 + 0x48))[1]; + } + else { + local_594 = 0; + /* try { // try from 002e56c0 to 003e5713 has its CatchHandler @ 002e5350 */ + Mat::copySize((Mat *)&local_598,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (param_5 == 0.0) { + local_678 = &local_670; + /* try { // try from 002e2de8 to 003e2deb has its CatchHandler @ 002e31cc */ + local_680 = &uStack_6b8; + local_6b0 = (double *)0x0; + local_6a8 = 0; + uStack_668 = 0; + local_670 = (double *)0x0; + local_6a0 = 0; + /* try { // try from 002e2e04 to 003e2e5b has its CatchHandler @ 002e2b74 */ + local_698 = 0; + local_690 = 0; + local_688 = 0; + uStack_6b8 = _UNK_002e59f8; + local_6c0 = _DAT_002e59f0; + } + else { + iVar21 = _InputArray::kind(param_4); + /* try { // try from 002e5530 to 003e5533 has its CatchHandler @ 002e62cc */ + if (iVar21 == 0x10000) { + pMVar33 = *(Mat **)(param_4 + 8); + local_680 = &uStack_6b8; + local_678 = &local_670; + uVar81 = *(uint *)pMVar33; + local_6c0 = *(ulong *)pMVar33; + /* try { // try from 002e5620 to 003e5623 has its CatchHandler @ 002e62e0 */ + uStack_6b8 = *(undefined8 *)(pMVar33 + 8); + local_6b0 = *(double **)(pMVar33 + 0x10); + local_6a8 = *(undefined8 *)(pMVar33 + 0x18); + local_6a0 = *(undefined8 *)(pMVar33 + 0x20); + local_698 = *(undefined8 *)(pMVar33 + 0x28); + local_690 = *(undefined8 *)(pMVar33 + 0x30); + local_688 = *(long *)(pMVar33 + 0x38); + uStack_668 = 0; + local_670 = (double *)0x0; + if (local_688 != 0) { + piVar6 = (int *)(local_688 + 0x14); + do { + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + /* try { // try from 002e5694 to 003e5697 has its CatchHandler @ 002e630c */ + if (*(int *)(pMVar33 + 4) < 3) { + local_670 = (double *)**(undefined8 **)(pMVar33 + 0x48); + uStack_668 = (*(undefined8 **)(pMVar33 + 0x48))[1]; + } + else { + local_6c0 = (ulong)uVar81; + Mat::copySize((Mat *)&local_6c0,pMVar33); + } + } + else { + /* try { // try from 002e5538 to 003e553b has its CatchHandler @ 002e62c4 */ + _InputArray::getMat_((int)param_4); + } + } + uVar22 = local_5f8; + uVar81 = local_5f8 & 0xfff; + uVar10 = local_5b8[1]; + uVar11 = *local_5b8; + if ((uVar81 != (local_598 & 0xfff)) || (1 < (local_5f8 & 0xff7) - 5)) { + local_710 = 0; + local_708 = 0; + pvVar23 = (void *)String::allocate((String *)&local_710,0x62); + /* try { // try from 002e2e60 to 003e2e63 has its CatchHandler @ 002e31d0 */ + memcpy(pvVar23,&DAT_004693c0,0x62); + /* try { // try from 002e2e7c to 003e2edb has its CatchHandler @ 002e2b74 */ + error(-0xd7,(String *)&local_710, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x37d); + String::deallocate((String *)&local_710); + } + uVar79 = local_58c; + uVar18 = local_590; + uVar55 = param_7 & 3; + uVar80 = uVar18; + uVar78 = uVar10; + if (uVar55 == 2) { + uVar82 = uVar11; + if (local_58c != uVar10) { + pSVar53 = (String *)&local_6e0; + local_6e0 = 0; + local_6d8 = 0; + pcVar24 = (char *)String::allocate(pSVar53,0x13); + cVar16 = s_a_size_width____len_00469428[0x12]; + uVar20 = s_a_size_width____len_00469428._8_8_; + uVar58 = s_a_size_width____len_00469428._0_8_; + *(undefined2 *)(pcVar24 + 0x10) = s_a_size_width____len_00469428._16_2_; + pcVar24[0x12] = cVar16; + *(undefined8 *)pcVar24 = uVar58; + *(undefined8 *)(pcVar24 + 8) = uVar20; + error(-0xd7,pSVar53, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x38e); +LAB_002e2f2c: + String::deallocate(pSVar53); + uVar78 = uVar79; + uVar82 = uVar11; + } + } + else { + uVar82 = uVar10; + if (uVar55 == 3) { + uVar78 = uVar11; + if (local_58c != uVar11) { + pSVar53 = (String *)&local_660; + local_660 = 0; + uStack_658 = 0; + pcVar24 = (char *)String::allocate(pSVar53,0x14); + uVar20 = s_a_size_height____len_00469440._8_8_; + uVar58 = s_a_size_height____len_00469440._0_8_; + *(undefined4 *)(pcVar24 + 0x10) = s_a_size_height____len_00469440._16_4_; + *(undefined8 *)pcVar24 = uVar58; + *(undefined8 *)(pcVar24 + 8) = uVar20; + error(-0xd7,pSVar53, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x393); +LAB_002e5890: + String::deallocate(pSVar53); + uVar78 = uVar79; + } + } + else { + uVar80 = local_58c; + if (uVar55 == 1) { + uVar78 = uVar11; + if (local_590 != uVar11) { + pSVar53 = (String *)&local_6f0; + /* try { // try from 002e58bc to 003e58bf has its CatchHandler @ 002e630c */ + local_6f0 = 0; + local_6e8 = 0; + pcVar24 = (char *)String::allocate(pSVar53,0x14); + uVar20 = s_a_size_height____len_00469440._8_8_; + uVar58 = s_a_size_height____len_00469440._0_8_; + *(undefined4 *)(pcVar24 + 0x10) = s_a_size_height____len_00469440._16_4_; + *(undefined8 *)pcVar24 = uVar58; + *(undefined8 *)(pcVar24 + 8) = uVar20; + error(-0xd7,pSVar53, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x389); + uVar79 = uVar18; + goto LAB_002e5890; + } + } + else { + uVar82 = uVar11; + if (local_590 != uVar10) { + pSVar53 = (String *)&local_700; + local_700 = 0; + /* try { // try from 002e2ee0 to 003e2ee3 has its CatchHandler @ 002e31d8 */ + local_6f8 = 0; + pcVar24 = (char *)String::allocate(pSVar53,0x13); + cVar16 = s_a_size_width____len_00469428[0x12]; + uVar20 = s_a_size_width____len_00469428._8_8_; + uVar58 = s_a_size_width____len_00469428._0_8_; + /* try { // try from 002e2efc to 003e2f4f has its CatchHandler @ 002e2b74 */ + *(undefined2 *)(pcVar24 + 0x10) = s_a_size_width____len_00469428._16_2_; + pcVar24[0x12] = cVar16; + *(undefined8 *)pcVar24 = uVar58; + *(undefined8 *)(pcVar24 + 8) = uVar20; + error(-0xd7,pSVar53, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",900); + uVar79 = uVar18; + goto LAB_002e2f2c; + } + } + } + } + if (local_6b0 != (double *)0x0) { + if (local_6c0._4_4_ < 3) { + /* try { // try from 002e2f54 to 003e2f57 has its CatchHandler @ 002e31dc */ + lVar25 = (long)(int)uStack_6b8._4_4_ * (long)(int)(uint)uStack_6b8; + } + else { + lVar43 = 0; + lVar25 = 1; + do { + lVar26 = lVar43 * 4; + lVar43 = lVar43 + 1; + lVar25 = lVar25 * *(int *)((long)local_680 + lVar26); + } while ((int)lVar43 < local_6c0._4_4_); + } + if (lVar25 != 0) { + if (uVar81 == ((uint)local_6c0 & 0xfff)) { + uVar55 = uVar82; + uVar18 = uVar80; + if (((uint)param_7 >> 2 & 1) == 0) { + uVar55 = uVar80; + uVar18 = uVar82; + } + if (((uint)uStack_6b8 == uVar18) && (uStack_6b8._4_4_ == uVar55)) goto LAB_002e2fc8; + } + /* try { // try from 002e2f70 to 003e2fc3 has its CatchHandler @ 002e2b74 */ + local_418 = (undefined4 *)0x0; + local_410 = (Mat *)0x0; + pvVar23 = (void *)String::allocate((String *)&local_418,0xb2); + memcpy(pvVar23, + "C.type() == type && (((flags&GEMM_3_T) == 0 && C.rows == d_size.height && C.cols == d_size.width) || ((flags&GEMM_3_T) != 0 && C.rows == d_size.width && C.cols == d_size.height))" + ,0xb2); + error(-0xd7,(String *)&local_418, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x39b); + String::deallocate((String *)&local_418); + } + } +LAB_002e2fc8: + /* try { // try from 002e2fc8 to 003e2fcb has its CatchHandler @ 002e31e0 */ + /* try { // try from 002e2fe4 to 003e3037 has its CatchHandler @ 002e2b74 */ + _OutputArray::create(param_6,uVar82,uVar80,uVar81,-1,false,0); + iVar21 = _InputArray::kind((_InputArray *)param_6); + if (iVar21 == 0x10000) { + pMVar33 = *(Mat **)(param_6 + 8); + local_4f8 = &local_530; + local_4f0 = local_4e8; + local_538 = *(undefined4 *)pMVar33; + local_534 = *(int *)(pMVar33 + 4); + /* try { // try from 002e44a0 to 003e44a3 has its CatchHandler @ 002e4edc */ + local_530 = *(undefined4 *)(pMVar33 + 8); + local_52c = *(undefined4 *)(pMVar33 + 0xc); + local_528 = *(double **)(pMVar33 + 0x10); + local_520 = *(undefined8 *)(pMVar33 + 0x18); + local_518 = *(undefined8 *)(pMVar33 + 0x20); + local_510 = *(undefined8 *)(pMVar33 + 0x28); + local_508 = *(undefined8 *)(pMVar33 + 0x30); + local_500 = *(long *)(pMVar33 + 0x38); + local_4e8[1] = 0; + local_4e8[0] = 0; + if (local_500 != 0) { + piVar6 = (int *)(local_500 + 0x14); + do { + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = *piVar6 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar33 + 4)) { + local_534 = 0; + Mat::copySize((Mat *)&local_538,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_6); + } + local_7e0 = (Mat *)&local_538; + local_850 = param_7; + if (((uint)param_7 >> 2 & 1) == 0) { +LAB_002e4434: + if ((local_850 == 0) && (uVar78 - 2 < 3)) { + if ((uVar78 == uVar80) || (uVar82 == uVar78)) { + if (uVar81 == 5) { + /* try { // try from 002e46f8 to 003e46fb has its CatchHandler @ 002e4f88 */ + uVar50 = local_5a8 >> 2; + uVar56 = local_4e8[0] >> 2; + uVar47 = (ulong)local_548 >> 2; + if (local_6b0 == (double *)0x0) { + /* try { // try from 002e4da0 to 003e4da3 has its CatchHandler @ 002e4f88 */ + pdVar38 = (double *)0x531f40; + uVar44 = 0; + } + else { + uVar44 = (ulong)local_670 >> 2; + pdVar38 = local_6b0; + } + if (uVar78 == 3) { + if ((uVar80 == 3) && (local_528 != local_588)) { + if (0 < (int)uVar82) { + lVar43 = uVar47 * 4; + uVar81 = 0; + pdVar51 = local_5e8; + pdVar35 = local_528; + do { + fVar63 = *(float *)((long)pdVar51 + 4); + uVar81 = uVar81 + 1; + /* try { // try from 002e4cdc to 003e4cdf has its CatchHandler @ 002e4f80 */ + fVar61 = *(float *)pdVar51; + fVar57 = *(float *)(pdVar51 + 1); + pdVar51 = (double *)((long)pdVar51 + uVar50 * 4); + fVar64 = *(float *)((long)local_588 + lVar43 + 4); + fVar65 = *(float *)((long)local_588 + 4); + fVar69 = *(float *)((long)local_588 + uVar47 * 8 + 4); + fVar76 = *(float *)((long)local_588 + lVar43 + 8); + fVar73 = *(float *)(local_588 + 1); + fVar60 = *(float *)(local_588 + uVar47 + 1); + *(float *)pdVar35 = + (float)((double)*(float *)pdVar38 * param_5 + + param_3 * (double)(fVar63 * *(float *)((long)local_588 + lVar43) + + *(float *)local_588 * fVar61 + + ((float *)((long)local_588 + lVar43))[uVar47] * + fVar57)); + *(float *)((long)pdVar35 + 4) = + (float)((double)*(float *)((long)pdVar38 + 4) * param_5 + + param_3 * (double)(fVar63 * fVar64 + fVar65 * fVar61 + fVar69 * fVar57 + )); + pdVar2 = pdVar38 + 1; + pdVar38 = (double *)((long)pdVar38 + uVar44 * 4); + *(float *)(pdVar35 + 1) = + (float)((double)*(float *)pdVar2 * param_5 + + param_3 * (double)(fVar63 * fVar76 + fVar73 * fVar61 + fVar60 * fVar57 + )); + pdVar35 = (double *)((long)pdVar35 + uVar56 * 4); + } while (uVar81 != uVar82); + } + } + else { + if (local_528 == local_5e8) goto LAB_002e4a7c; + lVar43 = 4; + if (pdVar38 == (double *)0x531f40) { + lVar43 = 0; + uVar44 = 1; + } + /* try { // try from 002e4dd4 to 003e4dd7 has its CatchHandler @ 002e4f78 */ + if (0 < (int)uVar80) { + lVar26 = uVar50 * 4; + /* try { // try from 002e4de0 to 003e4de3 has its CatchHandler @ 002e4f90 */ + /* try { // try from 002e4dec to 003e4def has its CatchHandler @ 002e4f88 */ + /* try { // try from 002e4df8 to 003e4dfb has its CatchHandler @ 002e4f80 */ + lVar25 = 0; + /* try { // try from 002e4e04 to 003e4e07 has its CatchHandler @ 002e5024 */ + /* try { // try from 002e4e10 to 003e4e13 has its CatchHandler @ 002e4fcc */ + /* try { // try from 002e4e1c to 003e4e1f has its CatchHandler @ 002e501c */ + do { + fVar63 = *(float *)((long)local_588 + lVar25 * 4 + uVar47 * 4); + /* try { // try from 002e4e28 to 003e4e2b has its CatchHandler @ 002e4ff8 */ + /* try { // try from 002e4e34 to 003e4e4f has its CatchHandler @ 002e5034 */ + fVar61 = *(float *)((long)local_588 + lVar25 * 4); + fVar57 = *(float *)((long)local_588 + lVar25 * 4 + uVar47 * 8); + fVar64 = *(float *)((long)local_5e8 + lVar26 + 4); + fVar65 = *(float *)((long)local_5e8 + lVar26); + /* try { // try from 002e4e5c to 003e4e5f has its CatchHandler @ 002e501c */ + fVar69 = *(float *)((long)local_5e8 + lVar26 + 8); + /* try { // try from 002e4e6c to 003e4e6f has its CatchHandler @ 002e4f78 */ + fVar76 = *(float *)((long)local_5e8 + uVar50 * 8 + 4); + fVar73 = ((float *)((long)local_5e8 + lVar26))[uVar50]; + fVar60 = *(float *)(local_5e8 + uVar50 + 1); + /* catch() { ... } // from try @ 002e4b28 with catch @ 002e4e98 */ + *(float *)((long)local_528 + lVar25 * 4) = + (float)((double)*(float *)pdVar38 * param_5 + + param_3 * (double)(fVar63 * *(float *)((long)local_5e8 + 4) + + fVar61 * *(float *)local_5e8 + + fVar57 * *(float *)(local_5e8 + 1))); + *(float *)((long)local_528 + lVar25 * 4 + uVar56 * 4) = + (float)((double)*(float *)((long)pdVar38 + uVar44 * 4) * param_5 + + param_3 * (double)(fVar63 * fVar64 + fVar65 * fVar61 + fVar69 * fVar57 + )); + pdVar51 = pdVar38 + uVar44; + pdVar38 = (double *)((long)pdVar38 + lVar43); + *(float *)((long)local_528 + lVar25 * 4 + uVar56 * 8) = + (float)((double)*(float *)pdVar51 * param_5 + + param_3 * (double)(fVar63 * fVar76 + fVar73 * fVar61 + fVar60 * fVar57 + )); + /* try { // try from 002e4ed8 to 003e4edb has its CatchHandler @ 002e3cb0 */ + lVar25 = lVar25 + 1; + /* catch() { ... } // from try @ 002e44a0 with catch @ 002e4edc */ + } while ((int)lVar25 < (int)uVar80); + } + } + } + else if (uVar78 == 4) { + if ((uVar80 == 4) && (local_528 != local_588)) { + if (0 < (int)uVar82) { + lVar25 = uVar47 * 4; + lVar43 = uVar47 * 0xc; + uVar81 = 0; + /* try { // try from 002e4958 to 003e495b has its CatchHandler @ 002e501c */ + pdVar51 = local_5e8; + pdVar35 = local_528; + do { + fVar83 = *(float *)((long)pdVar51 + 4); + uVar81 = uVar81 + 1; + fVar76 = *(float *)pdVar51; + fVar73 = *(float *)(pdVar51 + 1); + fVar57 = *(float *)((long)pdVar51 + 0xc); + pdVar51 = (double *)((long)pdVar51 + uVar50 * 4); + fVar64 = *(float *)((long)local_588 + lVar25 + 4); + fVar69 = *(float *)((long)local_588 + 4); + /* try { // try from 002e49a4 to 003e49a7 has its CatchHandler @ 002e4fbc */ + fVar87 = *(float *)((long)local_588 + lVar25 + 8); + /* try { // try from 002e49ac to 003e49c7 has its CatchHandler @ 002e501c */ + fVar89 = *(float *)((long)local_588 + uVar47 * 8 + 4); + fVar85 = *(float *)(local_588 + 1); + fVar93 = *(float *)((long)local_588 + lVar25 + 0xc); + fVar92 = *(float *)((long)local_588 + 0xc); + fVar65 = *(float *)((long)local_588 + lVar43 + 4); + fVar61 = *(float *)(local_588 + uVar47 + 1); + fVar63 = *(float *)((long)local_588 + lVar43 + 8); + /* try { // try from 002e49f0 to 003e49f3 has its CatchHandler @ 002e3cb0 */ + fVar60 = *(float *)((long)local_588 + lVar43 + 0xc); + fVar91 = *(float *)((long)local_588 + uVar47 * 8 + 0xc); + *(float *)pdVar35 = + (float)((double)*(float *)pdVar38 * param_5 + + param_3 * (double)(fVar83 * *(float *)((long)local_588 + lVar25) + + *(float *)local_588 * fVar76 + + *(float *)(local_588 + uVar47) * fVar73 + + *(float *)((long)local_588 + lVar43) * fVar57)); + *(float *)((long)pdVar35 + 4) = + (float)((double)*(float *)((long)pdVar38 + 4) * param_5 + + param_3 * (double)(fVar83 * fVar64 + fVar69 * fVar76 + fVar89 * fVar73 + + fVar65 * fVar57)); + *(float *)(pdVar35 + 1) = + (float)((double)*(float *)(pdVar38 + 1) * param_5 + + param_3 * (double)(fVar83 * fVar87 + fVar85 * fVar76 + fVar61 * fVar73 + + fVar63 * fVar57)); + pfVar1 = (float *)((long)pdVar38 + 0xc); + pdVar38 = (double *)((long)pdVar38 + uVar44 * 4); + *(float *)((long)pdVar35 + 0xc) = + (float)((double)*pfVar1 * param_5 + + param_3 * (double)(fVar83 * fVar93 + fVar92 * fVar76 + fVar91 * fVar73 + + fVar60 * fVar57)); + pdVar35 = (double *)((long)pdVar35 + uVar56 * 4); + } while (uVar81 != uVar82); + } + } + else { + if (local_528 == local_5e8) goto LAB_002e4a7c; + lVar43 = 4; + if (pdVar38 == (double *)0x531f40) { + lVar43 = 0; + uVar44 = 1; + } + if (0 < (int)uVar80) { + lVar26 = uVar50 * 4; + lVar25 = uVar50 * 0xc; + /* try { // try from 002e4b1c to 003e4b1f has its CatchHandler @ 002e501c */ + /* try { // try from 002e4b28 to 003e4b2b has its CatchHandler @ 002e4e98 */ + /* try { // try from 002e4b30 to 003e4b47 has its CatchHandler @ 002e501c */ + pdVar51 = local_588; + pdVar35 = local_528; + do { + fVar93 = *(float *)((long)pdVar51 + uVar47 * 4); + fVar92 = *(float *)pdVar51; + fVar91 = *(float *)(pdVar51 + uVar47); + fVar57 = *(float *)((long)pdVar51 + uVar47 * 0xc); + pdVar51 = (double *)((long)pdVar51 + 4); + fVar69 = *(float *)((long)local_5e8 + lVar26 + 4); + fVar61 = *(float *)((long)local_5e8 + lVar26); + fVar76 = *(float *)((long)local_5e8 + uVar50 * 8 + 4); + fVar83 = *(float *)((long)local_5e8 + lVar26 + 8); + fVar73 = *(float *)(local_5e8 + uVar50); + fVar89 = *(float *)((long)local_5e8 + lVar25 + 4); + fVar87 = *(float *)((long)local_5e8 + lVar25); + fVar65 = *(float *)(local_5e8 + uVar50 + 1); + fVar63 = *(float *)((long)local_5e8 + lVar26 + 0xc); + fVar64 = *(float *)((long)local_5e8 + uVar50 * 8 + 0xc); + fVar60 = *(float *)((long)local_5e8 + lVar25 + 0xc); + fVar85 = *(float *)((long)local_5e8 + lVar25 + 8); + *(float *)pdVar35 = + (float)((double)*(float *)pdVar38 * param_5 + + param_3 * (double)(fVar93 * *(float *)((long)local_5e8 + 4) + + fVar92 * *(float *)local_5e8 + + fVar91 * *(float *)(local_5e8 + 1) + + fVar57 * *(float *)((long)local_5e8 + 0xc))); + /* try { // try from 002e4c18 to 003e4c1b has its CatchHandler @ 002e4f90 */ + *(float *)((long)pdVar35 + uVar56 * 4) = + (float)((double)*(float *)((long)pdVar38 + uVar44 * 4) * param_5 + + param_3 * (double)(fVar93 * fVar69 + fVar61 * fVar92 + fVar83 * fVar91 + + fVar63 * fVar57)); + *(float *)(pdVar35 + uVar56) = + (float)((double)*(float *)(pdVar38 + uVar44) * param_5 + + param_3 * (double)(fVar93 * fVar76 + fVar73 * fVar92 + fVar65 * fVar91 + + fVar64 * fVar57)); + pfVar1 = (float *)((long)pdVar38 + uVar44 * 0xc); + pdVar38 = (double *)((long)pdVar38 + lVar43); + *(float *)((long)pdVar35 + uVar56 * 0xc) = + (float)((double)*pfVar1 * param_5 + + param_3 * (double)(fVar93 * fVar89 + fVar87 * fVar92 + fVar85 * fVar91 + + fVar60 * fVar57)); + pdVar35 = (double *)((long)pdVar35 + 4); + } while (pdVar51 != (double *)((long)local_588 + ((ulong)(uVar80 - 1) + 1) * 4)); + } + } + } + else if ((uVar80 == 2) && (local_528 != local_588)) { + if (0 < (int)uVar82) { + uVar81 = 0; + /* try { // try from 002e476c to 003e476f has its CatchHandler @ 002e4f90 */ + pdVar51 = local_5e8; + pdVar35 = local_528; + do { + fVar60 = *(float *)((long)pdVar51 + 4); + uVar81 = uVar81 + 1; + fVar57 = *(float *)pdVar51; + pdVar51 = (double *)((long)pdVar51 + uVar50 * 4); + fVar69 = *(float *)((long)local_588 + uVar47 * 4 + 4); + fVar64 = *(float *)((long)local_588 + 4); + *(float *)pdVar35 = + (float)((double)*(float *)pdVar38 * param_5 + + param_3 * (double)(fVar60 * *(float *)((long)local_588 + uVar47 * 4) + + *(float *)local_588 * fVar57)); + pfVar1 = (float *)((long)pdVar38 + 4); + /* try { // try from 002e47e0 to 003e47e3 has its CatchHandler @ 002e4f78 */ + pdVar38 = (double *)((long)pdVar38 + uVar44 * 4); + *(float *)((long)pdVar35 + 4) = + (float)((double)*pfVar1 * param_5 + + param_3 * (double)(fVar60 * fVar69 + fVar64 * fVar57)); + pdVar35 = (double *)((long)pdVar35 + uVar56 * 4); + } while (uVar81 != uVar82); + } + } + else { + if (local_528 == local_5e8) goto LAB_002e4a7c; + lVar43 = 4; + if (pdVar38 == (double *)0x531f40) { + lVar43 = 0; + uVar44 = 1; + } + if (0 < (int)uVar80) { + lVar25 = 0; + do { + /* try { // try from 002e4854 to 003e4857 has its CatchHandler @ 002e501c */ + fVar60 = *(float *)((long)local_588 + lVar25 * 4 + uVar47 * 4); + fVar57 = *(float *)((long)local_588 + lVar25 * 4); + fVar69 = *(float *)((long)local_5e8 + uVar50 * 4 + 4); + fVar64 = *(float *)((long)local_5e8 + uVar50 * 4); + /* try { // try from 002e4880 to 003e48d3 has its CatchHandler @ 002e3cb0 */ + *(float *)((long)local_528 + lVar25 * 4) = + (float)((double)*(float *)pdVar38 * param_5 + + param_3 * (double)(fVar60 * *(float *)((long)local_5e8 + 4) + + fVar57 * *(float *)local_5e8)); + pfVar1 = (float *)((long)pdVar38 + uVar44 * 4); + pdVar38 = (double *)((long)pdVar38 + lVar43); + *(float *)((long)local_528 + lVar25 * 4 + uVar56 * 4) = + (float)((double)*pfVar1 * param_5 + + param_3 * (double)(fVar60 * fVar69 + fVar64 * fVar57)); + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar80); + } + } + } + else { + if (uVar81 != 6) { + local_850 = 0; + goto LAB_002e3038; + } + uVar47 = local_5a8 >> 3; + uVar56 = local_4e8[0] >> 3; + uVar50 = (ulong)local_548 >> 3; + if (local_6b0 == (double *)0x0) { + pdVar38 = (double *)0x531f50; + uVar44 = 0; + } + else { + uVar44 = (ulong)local_670 >> 3; + pdVar38 = local_6b0; + } + if (uVar78 == 3) { + if ((uVar80 == 3) && (local_528 != local_588)) { + if (0 < (int)uVar82) { + uVar81 = 0; + /* try { // try from 002e51c4 to 003e51c7 has its CatchHandler @ 002e5324 */ + pdVar51 = local_5e8; + pdVar35 = local_528; + do { + dVar70 = pdVar51[1]; + uVar81 = uVar81 + 1; + dVar66 = *pdVar51; + dVar59 = pdVar51[2]; + pdVar51 = pdVar51 + uVar47; + dVar67 = local_588[uVar50 + 1]; + dVar68 = local_588[1]; + dVar62 = local_588[uVar50 * 2 + 1]; + dVar74 = local_588[uVar50 + 2]; + dVar72 = local_588[2]; + dVar71 = local_588[uVar50 * 2 + 2]; + *pdVar35 = param_5 * *pdVar38 + + param_3 * (dVar70 * local_588[uVar50] + *local_588 * dVar66 + + (local_588 + uVar50)[uVar50] * dVar59); + /* try { // try from 002e523c to 003e523f has its CatchHandler @ 002e52f8 */ + pdVar35[1] = param_5 * pdVar38[1] + + param_3 * (dVar70 * dVar67 + dVar68 * dVar66 + dVar62 * dVar59); + pdVar2 = pdVar38 + 2; + pdVar38 = pdVar38 + uVar44; + pdVar35[2] = param_5 * *pdVar2 + + param_3 * (dVar70 * dVar74 + dVar72 * dVar66 + dVar71 * dVar59); + pdVar35 = pdVar35 + uVar56; + } while (uVar81 != uVar82); + } + } + else { + if (local_528 == local_5e8) goto LAB_002e4a7c; + /* try { // try from 002e53fc to 003e541b has its CatchHandler @ 002e630c */ + lVar43 = 8; + if (pdVar38 == (double *)0x531f50) { + lVar43 = 0; + uVar44 = 1; + } + if (0 < (int)uVar80) { + lVar25 = 0; + do { + dVar70 = local_588[uVar50 + lVar25]; + dVar66 = local_588[lVar25]; + dVar59 = local_588[uVar50 * 2 + lVar25]; + /* try { // try from 002e5498 to 003e54bf has its CatchHandler @ 002e62bc */ + dVar67 = local_5e8[uVar47 + 1]; + dVar68 = local_5e8[uVar47]; + dVar62 = local_5e8[uVar47 + 2]; + dVar74 = local_5e8[uVar47 * 2 + 1]; + dVar72 = (local_5e8 + uVar47)[uVar47]; + dVar71 = local_5e8[uVar47 * 2 + 2]; + local_528[lVar25] = + param_5 * *pdVar38 + + param_3 * (dVar70 * local_5e8[1] + dVar66 * *local_5e8 + + dVar59 * local_5e8[2]); + /* try { // try from 002e54dc to 003e54df has its CatchHandler @ 002e62c4 */ + local_528[uVar56 + lVar25] = + param_5 * pdVar38[uVar44] + + param_3 * (dVar70 * dVar67 + dVar68 * dVar66 + dVar62 * dVar59); + pdVar51 = pdVar38 + uVar44 * 2; + pdVar38 = (double *)((long)pdVar38 + lVar43); + local_528[uVar56 * 2 + lVar25] = + param_5 * *pdVar51 + + param_3 * (dVar70 * dVar74 + dVar72 * dVar66 + dVar71 * dVar59); + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar80); + } + } + } + else if (uVar78 == 4) { + if (uVar80 == 4) { + if (local_528 != local_588) { + if (0 < (int)uVar82) { + /* try { // try from 002e52c0 to 003e52cb has its CatchHandler @ 002e5140 */ + uVar81 = 0; + /* try { // try from 002e52d4 to 003e52d7 has its CatchHandler @ 002e52f8 */ + /* try { // try from 002e52e0 to 003e52e3 has its CatchHandler @ 002e5324 */ + /* catch() { ... } // from try @ 002e523c with catch @ 002e52f8 + catch() { ... } // from try @ 002e52d4 with catch @ 002e52f8 */ + pdVar51 = local_5e8; + pdVar35 = local_528; + do { + dVar70 = pdVar51[1]; + uVar81 = uVar81 + 1; + dVar66 = *pdVar51; + dVar62 = pdVar51[2]; + /* try { // try from 002e5320 to 003e5323 has its CatchHandler @ 002e5140 */ + /* catch() { ... } // from try @ 002e51c4 with catch @ 002e5324 + catch() { ... } // from try @ 002e52e0 with catch @ 002e5324 */ + dVar86 = local_588[uVar50 + 1]; + dVar68 = local_588[1]; + dVar59 = pdVar51[3]; + pdVar51 = pdVar51 + uVar47; + dVar84 = local_588[uVar50 * 2 + 1]; + /* catch() { ... } // from try @ 002e539c with catch @ 002e5350 + catch() { ... } // from try @ 002e56c0 with catch @ 002e5350 + catch() { ... } // from try @ 002e61e4 with catch @ 002e5350 + catch() { ... } // from try @ 002e62a8 with catch @ 002e5350 */ + dVar75 = local_588[uVar50 + 2]; + dVar72 = local_588[2]; + dVar90 = local_588[uVar50 + 3]; + dVar71 = local_588[uVar50 * 3 + 1]; + dVar88 = local_588[3]; + dVar74 = local_588[uVar50 * 2 + 2]; + dVar67 = local_588[uVar50 * 3 + 2]; + dVar94 = local_588[uVar50 * 2 + 3]; + dVar77 = local_588[uVar50 * 3 + 3]; + /* try { // try from 002e539c to 003e53bf has its CatchHandler @ 002e5350 */ + *pdVar35 = param_5 * *pdVar38 + + param_3 * (dVar70 * local_588[uVar50] + *local_588 * dVar66 + + local_588[uVar50 * 2] * dVar62 + + local_588[uVar50 * 3] * dVar59); + pdVar35[1] = param_5 * pdVar38[1] + + param_3 * (dVar70 * dVar86 + dVar68 * dVar66 + dVar84 * dVar62 + + dVar71 * dVar59); + pdVar35[2] = param_5 * pdVar38[2] + + param_3 * (dVar70 * dVar75 + dVar72 * dVar66 + dVar74 * dVar62 + + dVar67 * dVar59); + pdVar2 = pdVar38 + 3; + pdVar38 = pdVar38 + uVar44; + pdVar35[3] = param_5 * *pdVar2 + + param_3 * (dVar70 * dVar90 + dVar88 * dVar66 + dVar94 * dVar62 + + dVar77 * dVar59); + pdVar35 = pdVar35 + uVar56; + } while (uVar81 != uVar82); + } + goto LAB_002e4690; + } + } + else if (0x10 < (int)uVar80) goto LAB_002e4a7c; + if (local_528 == local_5e8) { +LAB_002e4a7c: + local_850 = 0; + goto LAB_002e3038; + } + /* catch() { ... } // from try @ 002e49a4 with catch @ 002e4fbc */ + /* catch() { ... } // from try @ 002e4594 with catch @ 002e4fcc + catch() { ... } // from try @ 002e4e10 with catch @ 002e4fcc */ + lVar43 = 8; + if (pdVar38 == (double *)0x531f50) { + lVar43 = 0; + uVar44 = 1; + } + if (0 < (int)uVar80) { + /* catch() { ... } // from try @ 002e4520 with catch @ 002e4ff8 + catch() { ... } // from try @ 002e4e28 with catch @ 002e4ff8 */ + /* catch() { ... } // from try @ 002e3df4 with catch @ 002e501c + catch() { ... } // from try @ 002e3e80 with catch @ 002e501c + catch() { ... } // from try @ 002e4854 with catch @ 002e501c + catch() { ... } // from try @ 002e4958 with catch @ 002e501c + catch() { ... } // from try @ 002e49ac with catch @ 002e501c + catch() { ... } // from try @ 002e4b1c with catch @ 002e501c + catch() { ... } // from try @ 002e4b30 with catch @ 002e501c + catch() { ... } // from try @ 002e4e1c with catch @ 002e501c + catch() { ... } // from try @ 002e4e5c with catch @ 002e501c */ + /* catch() { ... } // from try @ 002e4608 with catch @ 002e5024 + catch() { ... } // from try @ 002e4e04 with catch @ 002e5024 */ + /* catch() { ... } // from try @ 002e4610 with catch @ 002e502c */ + /* catch() { ... } // from try @ 002e4284 with catch @ 002e5034 + catch() { ... } // from try @ 002e4e34 with catch @ 002e5034 */ + pdVar51 = local_588; + pdVar35 = local_528; + do { + dVar70 = pdVar51[uVar50]; + dVar66 = *pdVar51; + dVar62 = pdVar51[uVar50 * 2]; + dVar67 = local_5e8[uVar47 + 1]; + dVar71 = local_5e8[uVar47]; + dVar59 = pdVar51[uVar50 * 3]; + pdVar51 = pdVar51 + 1; + dVar84 = local_5e8[uVar47 * 2 + 1]; + dVar77 = local_5e8[uVar47 + 2]; + dVar74 = local_5e8[uVar47 * 2]; + dVar88 = local_5e8[uVar47 * 3 + 1]; + dVar72 = local_5e8[uVar47 + 3]; + dVar75 = local_5e8[uVar47 * 2 + 2]; + dVar86 = local_5e8[uVar47 * 3]; + dVar68 = local_5e8[uVar47 * 2 + 3]; + dVar94 = local_5e8[uVar47 * 3 + 2]; + dVar90 = local_5e8[uVar47 * 3 + 3]; + *pdVar35 = param_5 * *pdVar38 + + param_3 * (dVar70 * local_5e8[1] + dVar66 * *local_5e8 + + dVar62 * local_5e8[2] + dVar59 * local_5e8[3]); + pdVar35[uVar56] = + param_5 * pdVar38[uVar44] + + param_3 * (dVar70 * dVar67 + dVar71 * dVar66 + dVar77 * dVar62 + + dVar72 * dVar59); + /* catch() { ... } // from try @ 002e52c0 with catch @ 002e5140 + catch() { ... } // from try @ 002e5320 with catch @ 002e5140 */ + pdVar35[uVar56 * 2] = + param_5 * pdVar38[uVar44 * 2] + + param_3 * (dVar70 * dVar84 + dVar74 * dVar66 + dVar75 * dVar62 + + dVar68 * dVar59); + pdVar2 = pdVar38 + uVar44 * 3; + pdVar38 = (double *)((long)pdVar38 + lVar43); + pdVar35[uVar56 * 3] = + param_5 * *pdVar2 + + param_3 * (dVar70 * dVar88 + dVar86 * dVar66 + dVar94 * dVar62 + + dVar90 * dVar59); + pdVar35 = pdVar35 + 1; + } while (pdVar35 != local_528 + (ulong)(uVar80 - 1) + 1); + } + } + else if ((uVar80 == 2) && (local_528 != local_588)) { + /* try { // try from 002e4608 to 003e460b has its CatchHandler @ 002e5024 */ + if (0 < (int)uVar82) { + /* try { // try from 002e4610 to 003e4613 has its CatchHandler @ 002e502c */ + uVar81 = 0; + pdVar51 = local_5e8; + pdVar35 = local_528; + do { + dVar62 = pdVar51[1]; + uVar81 = uVar81 + 1; + dVar59 = *pdVar51; + pdVar51 = pdVar51 + uVar47; + dVar70 = local_588[uVar50 + 1]; + dVar66 = local_588[1]; + *pdVar35 = param_5 * *pdVar38 + + param_3 * (dVar62 * local_588[uVar50] + *local_588 * dVar59); + pdVar2 = pdVar38 + 1; + pdVar38 = pdVar38 + uVar44; + /* try { // try from 002e4684 to 003e4687 has its CatchHandler @ 002e4f80 */ + pdVar35[1] = param_5 * *pdVar2 + param_3 * (dVar62 * dVar70 + dVar66 * dVar59); + pdVar35 = pdVar35 + uVar56; + } while (uVar81 != uVar82); + } + } + else { + if (local_528 == local_5e8) goto LAB_002e4a7c; + lVar43 = 8; + if (pdVar38 == (double *)0x531f50) { + lVar43 = 0; + uVar44 = 1; + } + if (0 < (int)uVar80) { + lVar25 = 0; + do { + dVar62 = local_588[uVar50 + lVar25]; + dVar59 = local_588[lVar25]; + dVar70 = local_5e8[uVar47 + 1]; + dVar66 = local_5e8[uVar47]; + local_528[lVar25] = + param_5 * *pdVar38 + param_3 * (dVar62 * local_5e8[1] + dVar59 * *local_5e8); + pdVar51 = pdVar38 + uVar44; + /* catch() { ... } // from try @ 002e3ef4 with catch @ 002e4f78 + catch() { ... } // from try @ 002e47e0 with catch @ 002e4f78 + catch() { ... } // from try @ 002e4dd4 with catch @ 002e4f78 + catch() { ... } // from try @ 002e4e6c with catch @ 002e4f78 */ + pdVar38 = (double *)((long)pdVar38 + lVar43); + /* catch() { ... } // from try @ 002e4684 with catch @ 002e4f80 + catch() { ... } // from try @ 002e4cdc with catch @ 002e4f80 + catch() { ... } // from try @ 002e4df8 with catch @ 002e4f80 */ + /* catch() { ... } // from try @ 002e46f8 with catch @ 002e4f88 + catch() { ... } // from try @ 002e4da0 with catch @ 002e4f88 + catch() { ... } // from try @ 002e4dec with catch @ 002e4f88 */ + local_528[uVar56 + lVar25] = + param_5 * *pdVar51 + param_3 * (dVar62 * dVar70 + dVar66 * dVar59); + lVar25 = lVar25 + 1; + /* catch() { ... } // from try @ 002e476c with catch @ 002e4f90 + catch() { ... } // from try @ 002e4c18 with catch @ 002e4f90 + catch() { ... } // from try @ 002e4de0 with catch @ 002e4f90 */ + } while ((int)lVar25 < (int)uVar80); + } + } + } +LAB_002e4690: + Mat::release(local_7e0); + if (local_4f0 != local_4e8) { + fastFree(local_4f0); + } + Mat::release((Mat *)&local_6c0); + if (local_678 != &local_670) { + fastFree(local_678); + } + Mat::release((Mat *)&local_598); + if (local_550 != &local_548) { + fastFree(local_550); + } + Mat::release((Mat *)&local_5f8); + goto LAB_002e35b0; + } + local_850 = 0; + } + } + else if (local_6b0 == local_528) { + local_478 = 0x1010000; + local_468 = 0; + local_408 = 0; + local_404 = 0; + local_418 = (undefined4 *)CONCAT44(local_418._4_4_,0x2010000); + local_470 = (Mat *)&local_6c0; + local_410 = (Mat *)&local_6c0; + transpose((_InputArray *)&local_478,(_OutputArray *)&local_418); + local_850 = param_7 & 0xfffffffb; + goto LAB_002e4434; + } +LAB_002e3038: + pdVar51 = local_548; + pdVar38 = local_6b0; + /* try { // try from 002e303c to 003e303f has its CatchHandler @ 002e31e4 */ + local_618 = &local_610; + local_620 = &uStack_658; + /* try { // try from 002e3058 to 003e30ab has its CatchHandler @ 002e2b74 */ + local_650 = 0; + local_648 = 0; + uStack_658 = _UNK_002e59f8; + local_660 = _DAT_002e59f0; + local_640 = 0; + local_638 = 0; + local_630 = 0; + local_628 = 0; + uStack_608 = 0; + local_610 = 0; + local_7b8 = local_6b0; + if (local_6b0 != (double *)0x0) { + local_7b8 = local_670; + } + local_418 = &local_408; + /* try { // try from 002e30b0 to 003e30b3 has its CatchHandler @ 002e31e8 */ + local_410 = (Mat *)0x408; + if (uVar81 == 5) { + local_768 = FUN_002c33c8; + local_7c0 = FUN_002cb304; + local_7c8 = FUN_002d742c; + } + else if (uVar81 == 6) { + local_768 = FUN_002c3804; + local_7c0 = FUN_002d5cc8; + local_7c8 = FUN_002d845c; + } + else if (uVar81 == 0xd) { + local_768 = FUN_002c3bfc; + local_7c0 = FUN_002ce320; + local_7c8 = FUN_002dacfc; + } + else { + /* try { // try from 002e30cc to 003e311f has its CatchHandler @ 002e2b74 */ + if (uVar81 != 0xe) { + local_6d0 = 0; + local_6c8 = 0; + pcVar24 = (char *)String::allocate((String *)&local_6d0,0x10); + uVar58 = s_type____CV_64FC2_00469510._8_8_; + *(undefined8 *)pcVar24 = s_type____CV_64FC2_00469510._0_8_; + *(undefined8 *)(pcVar24 + 8) = uVar58; + error(-0xd7,(String *)&local_6d0, + "void cv::gemm(cv::InputArray, cv::InputArray, double, cv::InputArray, double, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x4c7); + String::deallocate((String *)&local_6d0); + } + /* try { // try from 002e3124 to 003e3127 has its CatchHandler @ 002e31a0 */ + local_768 = FUN_002c3fc4; + local_7c0 = FUN_002d6340; + /* try { // try from 002e3140 to 003e319f has its CatchHandler @ 002e2b74 */ + local_7c8 = FUN_002d975c; + } + if ((local_528 == local_5e8) || (local_528 == local_588)) { + /* try { // try from 002e373c to 003e378f has its CatchHandler @ 002e31ec */ + lVar43 = (long)(int)uVar80 * (long)(int)uVar82 * + (long)(int)((uVar22 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar22 & 7) << 1)) & 3)); + local_778 = (Mat *)&local_660; + } + else { + lVar43 = 0; + local_778 = local_7e0; + } + if ((((uVar80 == 1) || (uVar78 == 1)) && ((local_850 >> 1 & 1) == 0)) && + ((local_598 >> 0xe & 1) != 0)) { + pdVar51 = (double *)0x0; + if (uVar80 != 1) { + pdVar51 = (double *) + (long)(int)((uVar22 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar22 & 7) << 1)) & 3)); + } + local_850 = local_850 | 2; + } + /* catch() { ... } // from try @ 002e2d5c with catch @ 002e318c */ + if (((int)uVar82 < 0x41) || ((int)uVar80 < 0x41)) { + if (10000 < (int)uVar78) goto LAB_002e31ac; +LAB_002e31d8: + /* catch() { ... } // from try @ 002e2ee0 with catch @ 002e31d8 */ + /* catch() { ... } // from try @ 002e2f54 with catch @ 002e31dc */ + if (lVar43 != 0) { + /* catch() { ... } // from try @ 002e2fc8 with catch @ 002e31e0 */ + /* catch() { ... } // from try @ 002e303c with catch @ 002e31e4 */ + /* catch() { ... } // from try @ 002e30b0 with catch @ 002e31e8 */ + /* catch() { ... } // from try @ 002e3234 with catch @ 002e31ec + catch() { ... } // from try @ 002e3290 with catch @ 002e31ec + catch() { ... } // from try @ 002e32f4 with catch @ 002e31ec + catch() { ... } // from try @ 002e336c with catch @ 002e31ec + catch() { ... } // from try @ 002e33ec with catch @ 002e31ec + catch() { ... } // from try @ 002e346c with catch @ 002e31ec + catch() { ... } // from try @ 002e34e0 with catch @ 002e31ec + catch() { ... } // from try @ 002e3554 with catch @ 002e31ec + catch() { ... } // from try @ 002e35c8 with catch @ 002e31ec + catch() { ... } // from try @ 002e3654 with catch @ 002e31ec + catch() { ... } // from try @ 002e36c8 with catch @ 002e31ec + catch() { ... } // from try @ 002e373c with catch @ 002e31ec + catch() { ... } // from try @ 002e37b0 with catch @ 002e31ec + catch() { ... } // from try @ 002e3824 with catch @ 002e31ec + catch() { ... } // from try @ 002e3838 with catch @ 002e31ec */ + FUN_002e2cac(&local_418,lVar43); + local_4c8 = local_418; + local_4d4 = 2; + iVar21 = (uVar22 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar22 & 7) << 1)) & 3); + /* try { // try from 002e3234 to 003e3237 has its CatchHandler @ 002e31ec */ + local_498 = &local_4d0; + local_490 = &local_488; + local_488 = (long)(int)uVar80 * (long)iVar21; + local_4d8 = uVar81 + 0x42ff0000 | 0x4000; + local_480 = (long)iVar21; + local_4b8 = (undefined4 *)((long)local_418 + local_488 * (int)uVar82); + local_4a8 = 0; + local_4a0 = 0; + local_4d0 = uVar82; + local_4cc = uVar80; + local_4c0 = local_4c8; + local_4b0 = local_4b8; + /* try { // try from 002e3288 to 003e328b has its CatchHandler @ 002e3828 */ + Mat::operator=((Mat *)&local_660,(Mat *)&local_4d8); + /* try { // try from 002e3290 to 003e32cf has its CatchHandler @ 002e31ec */ + Mat::release((Mat *)&local_4d8); + if (local_490 != &local_488) { + fastFree(local_490); + } + } + local_4d8 = uVar10; + local_4d4 = uVar11; + local_478 = uVar80; + local_474 = uVar82; + /* try { // try from 002e32ec to 003e32ef has its CatchHandler @ 002e3814 */ + /* try { // try from 002e32f4 to 003e334b has its CatchHandler @ 002e31ec */ + (*local_7c8)(param_3,param_5,local_5e8,local_5a8,local_588,pdVar51,pdVar38,local_7b8, + *(undefined8 *)(local_778 + 0x10),*(undefined8 *)(local_778 + 0x50),&local_4d8, + &local_478,local_850); + } + else { + /* catch() { ... } // from try @ 002e3124 with catch @ 002e31a0 */ + /* catch() { ... } // from try @ 002e2c74 with catch @ 002e31a4 */ + if ((int)uVar78 < 0xb) goto LAB_002e31d8; +LAB_002e31ac: + /* try { // try from 002e31b4 to 003e31b7 has its CatchHandler @ 002e2b74 */ + /* catch() { ... } // from try @ 002e2c10 with catch @ 002e31b8 */ + /* try { // try from 002e31c8 to 003e31cb has its CatchHandler @ 002e2b74 */ + /* catch() { ... } // from try @ 002e2de8 with catch @ 002e31cc */ + /* catch() { ... } // from try @ 002e2e60 with catch @ 002e31d0 */ + /* catch() { ... } // from try @ 002e2cd8 with catch @ 002e31d4 */ + if (((int)uVar80 < 0x81 && (int)uVar82 < 0x81) && ((int)uVar78 < 0x81)) goto LAB_002e31d8; + uVar10 = local_850 & 2; + uVar11 = local_850 & 1; + /* try { // try from 002e3794 to 003e3797 has its CatchHandler @ 002e3810 */ + iVar21 = (uVar22 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar22 & 7) << 1)) & 3); + iVar13 = iVar21 << ((uVar22 & 7) == 5); + /* try { // try from 002e37b0 to 003e380f has its CatchHandler @ 002e31ec */ + if ((local_850 & 1) == 0) { + local_820 = (ulong)iVar21; + local_750 = local_5a8; + } + else { + local_750 = (ulong)iVar21; + local_820 = local_5a8; + } + local_840 = (double *)(long)iVar21; + if (uVar10 == 0) { + local_748 = local_840; + local_818 = pdVar51; + } + else { + local_818 = local_840; + local_748 = pdVar51; + } + if (local_6b0 == (double *)0x0) { +LAB_002e42d8: + local_758 = (double *)0x0; + local_850 = local_850 & 0xfffffffb; + local_760 = (double *)0x0; + } + else { + if (local_6c0._4_4_ < 3) { + /* catch() { ... } // from try @ 002e33d0 with catch @ 002e37fc */ + lVar26 = (long)(int)uStack_6b8._4_4_ * (long)(int)(uint)uStack_6b8; + } + else { + lVar25 = 0; + lVar26 = 1; + do { + lVar54 = lVar25 * 4; + lVar25 = lVar25 + 1; + lVar26 = lVar26 * *(int *)((long)local_680 + lVar54); + } while ((int)lVar25 < local_6c0._4_4_); + } + if (lVar26 == 0) goto LAB_002e42d8; + if ((local_850 >> 2 & 1) == 0) { + /* catch() { ... } // from try @ 002e3794 with catch @ 002e3810 */ + local_760 = local_670; + /* catch() { ... } // from try @ 002e32ec with catch @ 002e3814 */ + local_758 = local_840; + } + else { + local_758 = local_670; + local_760 = local_840; + } + } + /* try { // try from 002e3824 to 003e3827 has its CatchHandler @ 002e31ec */ + if ((int)uVar82 < 0x80) { + /* catch() { ... } // from try @ 002e3288 with catch @ 002e3828 */ + uVar22 = 0; + local_784 = uVar82; + if (uVar82 != 0) { + uVar22 = 0x4000 / (int)uVar82; + } + } + else { + uVar22 = 0x80; + local_784 = 0x80; + } + /* try { // try from 002e3838 to 003e383b has its CatchHandler @ 002e31ec */ + /* catch() { ... } // from try @ 002e3450 with catch @ 002e383c */ + /* catch() { ... } // from try @ 002e34c4 with catch @ 002e3840 */ + if ((int)uVar80 < 0x80) { + /* catch() { ... } // from try @ 002e3350 with catch @ 002e3844 */ + /* catch() { ... } // from try @ 002e3538 with catch @ 002e3848 */ + /* catch() { ... } // from try @ 002e35ac with catch @ 002e384c */ + uVar55 = 0; + local_770 = uVar80; + if (uVar80 != 0) { + uVar55 = 0x4000 / (int)uVar80; + } + } + else { + uVar55 = 0x80; + local_770 = 0x80; + } + /* catch() { ... } // from try @ 002e3638 with catch @ 002e3850 */ + /* catch() { ... } // from try @ 002e36ac with catch @ 002e3854 */ + /* catch() { ... } // from try @ 002e3720 with catch @ 002e3858 */ + if ((int)uVar78 < (int)uVar22) { + uVar22 = uVar78; + } + /* catch() { ... } // from try @ 002e38b4 with catch @ 002e3860 + catch() { ... } // from try @ 002e3918 with catch @ 002e3860 + catch() { ... } // from try @ 002e3b3c with catch @ 002e3860 + catch() { ... } // from try @ 002e3c54 with catch @ 002e3860 + catch() { ... } // from try @ 002e3c88 with catch @ 002e3860 + catch() { ... } // from try @ 002e3c9c with catch @ 002e3860 */ + if ((int)uVar55 < (int)uVar22) { + uVar22 = uVar55; + } + if ((0x4000 < (int)(local_784 * uVar22)) && (local_784 = 0, uVar22 != 0)) { + local_784 = 0x4000 / (int)uVar22; + } + if ((0x4000 < (int)(local_770 * uVar22)) && (local_770 = 0, uVar22 != 0)) { + local_770 = 0x4000 / (int)uVar22; + } + /* try { // try from 002e38b4 to 003e38b7 has its CatchHandler @ 002e3860 */ + lVar25 = 0; + uVar55 = local_770 + 7; + if (-1 < (int)local_770) { + uVar55 = local_770; + } + uVar18 = uVar22 + 7; + if (-1 < (int)uVar22) { + uVar18 = uVar22; + } + iVar52 = uVar22 + ((int)uVar18 >> 3); + lVar26 = (long)(int)(local_770 + ((int)uVar55 >> 3) + 2 & 0xfffffffe) * (long)(iVar52 + 1); + lVar54 = lVar26 * (long)local_840; + lVar26 = lVar26 * iVar13; + if (uVar11 != 0) { + uVar55 = local_784 + 7; + /* try { // try from 002e3910 to 003e3913 has its CatchHandler @ 002e3c8c */ + /* try { // try from 002e3918 to 003e3aeb has its CatchHandler @ 002e3860 */ + if (-1 < (int)local_784) { + uVar55 = local_784; + } + local_850 = local_850 & 0xfffffffe; + lVar25 = (long)(int)(iVar52 + 2U & 0xfffffffe) * (long)local_840 * + (long)(int)(local_784 + ((int)uVar55 >> 3) + 1); + } + FUN_002e2cac(&local_418,lVar54 + lVar26 + lVar43 + lVar25); + puVar27 = local_418; + puVar31 = (undefined8 *)((long)local_418 + lVar26); + puVar8 = (undefined8 *)((long)puVar31 + lVar54); + if (uVar11 == 0) { + puVar8 = (undefined8 *)0x0; + } + if (lVar43 != 0) { + local_468 = (long)puVar31 + lVar25 + lVar54; + local_428 = (long)local_840 * (long)(int)uVar80; + local_438 = &local_470; + local_430 = &local_428; + local_478 = uVar81 + 0x42ff0000 | 0x4000; + local_458 = local_468 + local_428 * (int)uVar82; + local_420 = local_840; + local_474 = 2; + local_470 = (Mat *)CONCAT44(uVar80,uVar82); + local_448 = 0; + local_440 = 0; + local_460 = local_468; + local_450 = local_458; + Mat::operator=((Mat *)&local_660,(Mat *)&local_478); + Mat::release((Mat *)&local_478); + if (local_430 != &local_428) { + fastFree(local_430); + } + } + if (0 < (int)uVar82) { + local_76c = 0; + iVar52 = local_76c; +LAB_002e39e0: + do { + local_76c = iVar52; + iVar52 = local_76c + local_784; + if ((iVar52 < (int)uVar82) && ((int)(local_784 + iVar52 * 8) <= (int)(uVar82 << 3))) { + uVar81 = local_784; + if ((int)uVar80 < 1) goto LAB_002e39e0; +LAB_002e3a28: + lVar43 = (long)local_76c; + local_740 = 0; + do { + lVar25 = (long)pdVar38 + lVar43 * (long)local_760 + (long)local_740 * (long)local_758; + lVar54 = *(long *)(local_778 + 0x10); + lVar26 = *(long *)(local_778 + 0x50); + if (((int)uVar80 <= (int)(local_740 + local_770)) || + (uVar55 = local_770, + (int)(uVar80 << 3) < (int)(local_770 + (local_740 + local_770) * 8))) { + uVar55 = uVar80 - local_740; + } + local_850 = local_850 & 0xf; + if ((int)uVar22 < (int)uVar78) { + local_810 = (long)(int)(uVar55 * iVar13); + local_830 = puVar27; + if (0 < (int)uVar78) { +LAB_002e3b0c: + iVar52 = 0; + do { + /* try { // try from 002e3b34 to 003e3b37 has its CatchHandler @ 002e3c44 */ + /* try { // try from 002e3b3c to 003e3b3f has its CatchHandler @ 002e3860 */ + puVar29 = (undefined8 *) + ((long)local_5e8 + lVar43 * local_750 + (long)iVar52 * local_820); + puVar34 = (undefined8 *) + ((long)local_588 + + (long)local_740 * (long)local_748 + (long)iVar52 * (long)local_818); + if (((int)uVar78 <= (int)(uVar22 + iVar52)) || + (uVar18 = uVar22, (int)(uVar78 << 3) < (int)(uVar22 + (uVar22 + iVar52) * 8))) + { + uVar18 = uVar78 - iVar52; + } + puVar28 = puVar29; + uVar47 = local_5a8; + local_474 = uVar81; + local_478 = uVar18; + /* try { // try from 002e3ba0 to 003e3ba3 has its CatchHandler @ 002e3c64 */ + if (((uVar11 != 0) && + (local_474 = uVar18, local_478 = uVar81, + (puVar8 != (undefined8 *)0x0 & uVar11) != 0)) && + (uVar47 = (ulong)(int)(uVar18 * iVar21), puVar28 = puVar8, local_474 = uVar81, + local_478 = uVar18, 0 < (int)uVar81)) { + if (iVar21 == 8) { + iVar46 = 0; + puVar45 = puVar8; + do { + while ((int)(uVar18 * 2) < 1) { + iVar46 = iVar46 + 1; + puVar45 = (undefined8 *)((long)puVar45 + uVar47); + puVar29 = puVar29 + 1; + if ((int)uVar81 <= iVar46) goto LAB_002e3bfc; + } + puVar37 = puVar29; + puVar41 = puVar45; + do { + uVar58 = *puVar37; + puVar37 = (undefined8 *)((long)puVar37 + local_5a8); + puVar42 = puVar41 + 1; + *puVar41 = uVar58; + puVar41 = puVar42; + } while (puVar42 != puVar45 + (ulong)(uVar18 * 2 - 1 >> 1) + 1); + iVar46 = iVar46 + 1; + puVar45 = (undefined8 *)((long)puVar45 + uVar47); + puVar29 = puVar29 + 1; + } while (iVar46 < (int)uVar81); + } + else if (iVar21 == 0x10) { + iVar46 = 0; + puVar45 = puVar8; + do { + if (0 < (int)(uVar18 * 4)) { + puVar36 = (undefined4 *)((long)puVar45 + 4); + puVar37 = puVar29; + do { + puVar7 = puVar36 + 4; + uVar12 = *(undefined4 *)puVar37; + *puVar36 = *(undefined4 *)((long)puVar37 + 4); + puVar36[-1] = uVar12; + puVar41 = puVar37 + 1; + uVar12 = *(undefined4 *)((long)puVar37 + 0xc); + puVar37 = (undefined8 *)((long)puVar37 + local_5a8); + puVar36[1] = *(undefined4 *)puVar41; + puVar36[2] = uVar12; + puVar36 = puVar7; + } while (puVar7 != (undefined4 *) + ((long)puVar45 + + (ulong)(uVar18 * 4 - 1 >> 2) * 0x10 + 0x14)); + } + iVar46 = iVar46 + 1; + puVar45 = (undefined8 *)((long)puVar45 + uVar47); + puVar29 = puVar29 + 2; + } while (iVar46 < (int)uVar81); + } + else if (iVar21 == 4) { + iVar46 = 0; + puVar45 = puVar8; + do { + if (0 < (int)uVar18) { + lVar26 = 0; + puVar37 = puVar29; + do { + uVar12 = *(undefined4 *)puVar37; + puVar37 = (undefined8 *)((long)puVar37 + local_5a8); + *(undefined4 *)((long)puVar45 + lVar26 * 4) = uVar12; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar18); + } + iVar46 = iVar46 + 1; + puVar45 = (undefined8 *)((long)puVar45 + uVar47); + puVar29 = (undefined8 *)((long)puVar29 + 4); + } while (iVar46 < (int)uVar81); + } + } +LAB_002e3bfc: + puVar29 = puVar34; + pdVar35 = pdVar51; + if ((int)uVar55 < (int)uVar80) { + uVar79 = uVar18; + uVar48 = uVar55; + if (uVar10 != 0) { + uVar79 = uVar55; + uVar48 = uVar18; + } + iVar46 = uVar79 - 1; + local_7a0 = (int)((ulong)local_840 >> 2); + local_7a0 = uVar48 * local_7a0; + pdVar35 = (double *)(long)(int)(iVar21 * uVar48); + puVar29 = puVar31; + if (uVar79 != 0) { + /* catch() { ... } // from try @ 002e3b34 with catch @ 002e3c44 */ + uVar15 = local_7a0 - 4U >> 2; + uVar79 = uVar15 + 1; + /* try { // try from 002e3c54 to 003e3c57 has its CatchHandler @ 002e3860 */ + uVar48 = uVar79 * 4; + /* catch() { ... } // from try @ 002e3ba0 with catch @ 002e3c64 */ + if (local_7a0 + -3 < 1) { + uVar48 = 0; + } + uVar3 = uVar48 + 1; + uVar19 = local_7a0 - uVar48; + /* try { // try from 002e3c88 to 003e3c8b has its CatchHandler @ 002e3860 */ + uVar4 = uVar48 + 2; + /* catch() { ... } // from try @ 002e3910 with catch @ 002e3c8c */ + /* try { // try from 002e3c9c to 003e3c9f has its CatchHandler @ 002e3860 */ + lVar54 = ((long)(int)uVar48 + 4) * 4; + /* catch() { ... } // from try @ 002e3cfc with catch @ 002e3cb0 + catch() { ... } // from try @ 002e4880 with catch @ 002e3cb0 + catch() { ... } // from try @ 002e49f0 with catch @ 002e3cb0 + catch() { ... } // from try @ 002e4dc8 with catch @ 002e3cb0 + catch() { ... } // from try @ 002e4ed8 with catch @ 002e3cb0 */ + lVar49 = (long)(int)uVar48 * 4; + lVar26 = lVar54 + -0x10; + uVar56 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + uVar50 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar4 << 2; + puVar45 = puVar31; + do { + if (0 < local_7a0 + -3) { + /* try { // try from 002e3cfc to 003e3d1f has its CatchHandler @ 002e3cb0 */ + if ((puVar45 < puVar34 + 8 && puVar34 < puVar45 + 8) || (uVar79 < 5)) { + puVar36 = (undefined4 *)((long)puVar45 + 4); + puVar37 = puVar34; + do { + puVar7 = puVar36 + 4; + uVar12 = *(undefined4 *)((long)puVar37 + 4); + puVar36[-1] = *(undefined4 *)puVar37; + *puVar36 = uVar12; + uVar12 = *(undefined4 *)(puVar37 + 1); + puVar36[2] = *(undefined4 *)((long)puVar37 + 0xc); + puVar36[1] = uVar12; + puVar36 = puVar7; + puVar37 = puVar37 + 2; + } while (puVar7 != (undefined4 *) + ((long)puVar45 + (ulong)uVar15 * 0x10 + 0x14)); + } + else { + uVar39 = 0; + puVar37 = puVar45; + puVar41 = puVar34; + do { + uVar58 = *puVar41; + uVar39 = uVar39 + 1; + puVar37[1] = puVar41[1]; + *puVar37 = uVar58; + puVar37 = puVar37 + 2; + puVar41 = puVar41 + 2; + } while (uVar39 < uVar79); + } + } + if ((int)uVar48 < local_7a0) { + puVar36 = (undefined4 *)((long)puVar34 + lVar26); + if (((undefined4 *)((long)puVar45 + lVar26) < + (undefined4 *)((long)puVar34 + lVar54) && + puVar36 < (undefined4 *)((long)puVar45 + lVar54)) || (uVar19 < 0xc)) + { + lVar40 = 0; + do { + *(undefined4 *)((long)puVar45 + lVar26 + lVar40) = + *(undefined4 *)((long)puVar36 + lVar40); + lVar40 = lVar40 + 4; + } while (lVar40 != ((ulong)((local_7a0 + -1) - uVar48) + 1) * 4); + } + else { + uVar39 = -((uint)((ulong)puVar36 >> 2) & 3) & 3; + uVar9 = uVar19; + if (uVar39 < uVar19) { + uVar9 = uVar39; + } + uVar39 = uVar48; + if (((uVar9 != 0) && + (*(undefined4 *)((long)puVar45 + lVar49) = + *(undefined4 *)((long)puVar34 + lVar49), uVar39 = uVar3, + uVar9 != 1)) && + (*(undefined4 *)((long)puVar45 + uVar56) = + *(undefined4 *)((long)puVar34 + uVar56), uVar39 = uVar4, + uVar9 == 3)) { + *(undefined4 *)((long)puVar45 + uVar50) = + *(undefined4 *)((long)puVar34 + uVar50); + uVar39 = uVar48 + 3; + } + uVar30 = 0; + lVar40 = lVar26 + (ulong)uVar9 * 4; + uVar5 = ((uVar19 - uVar9) - 4 >> 2) + 1; + iVar14 = uVar5 * 4; + puVar37 = (undefined8 *)((long)puVar45 + lVar40); + puVar41 = (undefined8 *)((long)puVar34 + lVar40); + do { + uVar58 = *puVar41; + uVar30 = uVar30 + 1; + puVar37[1] = puVar41[1]; + *puVar37 = uVar58; + puVar37 = puVar37 + 2; + puVar41 = puVar41 + 2; + } while (uVar30 < uVar5); + uVar39 = iVar14 + uVar39; + if (uVar19 - uVar9 != iVar14) { + uVar44 = -(ulong)(uVar39 >> 0x1f) & 0xfffffffc00000000 | + (ulong)uVar39 << 2; + /* try { // try from 002e3df4 to 003e3e6f has its CatchHandler @ 002e501c */ + *(undefined4 *)((long)puVar45 + uVar44) = + *(undefined4 *)((long)puVar34 + uVar44); + if (((int)(uVar39 + 1) < local_7a0) && + (*(undefined4 *)((long)puVar45 + uVar44 + 4) = + *(undefined4 *)((long)puVar34 + uVar44 + 4), + (int)(uVar39 + 2) < local_7a0)) { + *(undefined4 *)((long)puVar45 + uVar44 + 8) = + *(undefined4 *)((long)puVar34 + uVar44 + 8); + } + } + } + } + iVar46 = iVar46 + -1; + puVar34 = (undefined8 *)((long)puVar34 + (long)pdVar51); + puVar45 = (undefined8 *)((long)puVar45 + (long)pdVar35); + } while (iVar46 != -1); + } + } + local_4d8 = uVar55; + local_4d4 = uVar81; + if ((int)uVar22 < (int)uVar78) { + /* try { // try from 002e3e78 to 003e3e7b has its CatchHandler @ 002e4f98 */ + /* try { // try from 002e3e80 to 003e3ebf has its CatchHandler @ 002e501c */ + (*local_7c0)(); + } + else { + (*local_7c8)(param_3,param_5,puVar28,uVar47,puVar29,pdVar35,lVar25,local_7b8, + local_830,local_810,&local_478,&local_4d8,local_850); + } + iVar52 = iVar52 + uVar18; + local_850 = local_850 | 0x10; + } while (iVar52 < (int)uVar78); + if ((int)uVar78 <= (int)uVar22) goto LAB_002e3eb8; + lVar54 = *(long *)(local_778 + 0x10); + lVar26 = *(long *)(local_778 + 0x50); + } + local_478 = uVar55; + local_474 = uVar81; + (*local_768)(param_3,param_5,lVar25,local_7b8,local_830,local_810, + lVar54 + (long)(local_740 * iVar21) + + lVar43 * **(long **)(local_778 + 0x48),lVar26,&local_478, + local_850); + } + else if (0 < (int)uVar78) { + local_830 = (undefined4 *)(lVar54 + (long)(local_740 * iVar21) + lVar43 * lVar26); + local_810 = lVar26; + goto LAB_002e3b0c; + } +LAB_002e3eb8: + local_740 = local_740 + uVar55; + } while (local_740 < (int)uVar80); + } + else { + uVar81 = uVar82 - local_76c; + if (0 < (int)uVar80) goto LAB_002e3a28; + } + iVar52 = local_76c + uVar81; + } while ((int)(local_76c + uVar81) < (int)uVar82); + } + } + if (local_778 != local_7e0) { + local_468 = 0; + local_478 = 0x2010000; + local_470 = local_7e0; + Mat::copyTo(local_778,(_OutputArray *)&local_478); + } + /* try { // try from 002e3350 to 003e3353 has its CatchHandler @ 002e3844 */ + if ((local_418 != &local_408) && (local_418 != (undefined4 *)0x0)) { + operator_delete__(local_418); + } + if (local_628 != 0) { + piVar6 = (int *)(local_628 + 0x14); + do { + iVar21 = *piVar6; + /* try { // try from 002e336c to 003e33cb has its CatchHandler @ 002e31ec */ + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = iVar21 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar21 == 1) { + Mat::deallocate((Mat *)&local_660); + } + } + local_628 = 0; + local_650 = 0; + local_638 = 0; + local_640 = 0; + local_648 = 0; + if (0 < local_660._4_4_) { + iVar21 = 0; + puVar31 = local_620; + do { + *(undefined4 *)puVar31 = 0; + iVar21 = iVar21 + 1; + puVar31 = (undefined8 *)((long)puVar31 + 4); + } while (iVar21 < local_660._4_4_); + } + /* try { // try from 002e33d0 to 003e33d3 has its CatchHandler @ 002e37fc */ + if (local_618 != &local_610) { + fastFree(local_618); + } + if (local_500 != 0) { + piVar6 = (int *)(local_500 + 0x14); + do { + /* try { // try from 002e33ec to 003e344b has its CatchHandler @ 002e31ec */ + iVar21 = *piVar6; + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = iVar21 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar21 == 1) { + Mat::deallocate(local_7e0); + } + } + local_500 = 0; + local_528 = (double *)0x0; + local_510 = 0; + local_518 = 0; + local_520 = 0; + if (0 < local_534) { + iVar21 = 0; + puVar27 = local_4f8; + do { + *puVar27 = 0; + iVar21 = iVar21 + 1; + puVar27 = puVar27 + 1; + } while (iVar21 < local_534); + } + /* try { // try from 002e3450 to 003e3453 has its CatchHandler @ 002e383c */ + if (local_4f0 != local_4e8) { + fastFree(local_4f0); + } + if (local_688 != 0) { + piVar6 = (int *)(local_688 + 0x14); + do { + /* try { // try from 002e346c to 003e34bf has its CatchHandler @ 002e31ec */ + iVar21 = *piVar6; + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = iVar21 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar21 == 1) { + Mat::deallocate((Mat *)&local_6c0); + } + } + local_688 = 0; + local_6b0 = (double *)0x0; + local_698 = 0; + local_6a0 = 0; + local_6a8 = 0; + if (0 < local_6c0._4_4_) { + iVar21 = 0; + puVar31 = local_680; + do { + *(undefined4 *)puVar31 = 0; + iVar21 = iVar21 + 1; + puVar31 = (undefined8 *)((long)puVar31 + 4); + } while (iVar21 < local_6c0._4_4_); + } + /* try { // try from 002e34c4 to 003e34c7 has its CatchHandler @ 002e3840 */ + if (local_678 != &local_670) { + fastFree(local_678); + } + if (local_560 != 0) { + piVar6 = (int *)(local_560 + 0x14); + do { + /* try { // try from 002e34e0 to 003e3533 has its CatchHandler @ 002e31ec */ + iVar21 = *piVar6; + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = iVar21 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar21 == 1) { + Mat::deallocate((Mat *)&local_598); + } + } + local_560 = 0; + local_588 = (double *)0x0; + local_570 = 0; + local_578 = 0; + local_580 = 0; + if (0 < local_594) { + iVar21 = 0; + puVar32 = local_558; + do { + *puVar32 = 0; + iVar21 = iVar21 + 1; + puVar32 = puVar32 + 1; + } while (iVar21 < local_594); + } + /* try { // try from 002e3538 to 003e353b has its CatchHandler @ 002e3848 */ + if (local_550 != &local_548) { + fastFree(local_550); + } + if (local_5c0 != 0) { + piVar6 = (int *)(local_5c0 + 0x14); + do { + /* try { // try from 002e3554 to 003e35a7 has its CatchHandler @ 002e31ec */ + iVar21 = *piVar6; + cVar16 = '\x01'; + bVar17 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar17) { + *piVar6 = iVar21 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar21 == 1) { + Mat::deallocate((Mat *)&local_5f8); + } + } + local_5c0 = 0; + local_5e8 = (double *)0x0; + local_5d0 = 0; + local_5d8 = 0; + local_5e0 = 0; + if (0 < local_5f4) { + iVar21 = 0; + puVar32 = local_5b8; + do { + *puVar32 = 0; + iVar21 = iVar21 + 1; + /* try { // try from 002e35ac to 003e35af has its CatchHandler @ 002e384c */ + puVar32 = puVar32 + 1; + } while (iVar21 < local_5f4); + } +LAB_002e35b0: + if (local_5b0 != &local_5a8) { + fastFree(local_5b0); + } + /* try { // try from 002e35c8 to 003e3633 has its CatchHandler @ 002e31ec */ + return; +} + + +================================================================== + +### FUNC 002e5a00 (3088 bytes) name=mulTransposed + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::mulTransposed(cv::_InputArray const&, cv::_OutputArray const&, bool, cv::_InputArray const&, + double, int) */ + +void cv::mulTransposed(_InputArray *param_1,_OutputArray *param_2,bool param_3,_InputArray *param_4, + double param_5,int param_6) + +{ + uint uVar1; + uint uVar2; + int iVar3; + char cVar4; + undefined8 uVar5; + undefined8 uVar6; + bool bVar7; + bool bVar8; + int iVar9; + void *__dest; + int *piVar10; + _InputArray *p_Var11; + char *pcVar12; + Mat *pMVar13; + Mat **ppMVar14; + long lVar15; + code *pcVar16; + long lVar17; + undefined8 *puVar18; + undefined4 local_240 [2]; + Mat *local_238; + undefined4 local_230; + undefined4 local_22c; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined8 local_210; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + Mat *pMStack_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + Mat **local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + Mat **local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + int local_118; + int local_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + int local_5c; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar9 = _InputArray::kind(param_1); + if (iVar9 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar13; + local_11c = *(int *)(pMVar13 + 4); + local_118 = *(int *)(pMVar13 + 8); + local_114 = *(int *)(pMVar13 + 0xc); + local_110 = *(long *)(pMVar13 + 0x10); + local_108 = *(undefined8 *)(pMVar13 + 0x18); + local_100 = *(undefined8 *)(pMVar13 + 0x20); + local_f8 = *(undefined8 *)(pMVar13 + 0x28); + local_f0 = *(undefined8 *)(pMVar13 + 0x30); + local_e8 = *(long *)(pMVar13 + 0x38); + /* try { // try from 002e62a8 to 003e62ab has its CatchHandler @ 002e5350 */ + /* catch() { ... } // from try @ 002e5ca0 with catch @ 002e62ac */ + /* catch() { ... } // from try @ 002e5498 with catch @ 002e62bc + catch() { ... } // from try @ 002e55ac with catch @ 002e62bc + catch() { ... } // from try @ 002e5b18 with catch @ 002e62bc + catch() { ... } // from try @ 002e6204 with catch @ 002e62bc */ + /* catch() { ... } // from try @ 002e54dc with catch @ 002e62c4 + catch() { ... } // from try @ 002e5538 with catch @ 002e62c4 + catch() { ... } // from try @ 002e5b94 with catch @ 002e62c4 + catch() { ... } // from try @ 002e5ca8 with catch @ 002e62c4 + catch() { ... } // from try @ 002e61d4 with catch @ 002e62c4 */ + local_c8 = 0; + /* catch() { ... } // from try @ 002e5530 with catch @ 002e62cc */ + local_d0 = 0; + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + /* catch() { ... } // from try @ 002e5620 with catch @ 002e62e0 + catch() { ... } // from try @ 002e5b00 with catch @ 002e62e0 */ + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = *piVar10 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + /* catch() { ... } // from try @ 002e5818 with catch @ 002e62e8 + catch() { ... } // from try @ 002e5b54 with catch @ 002e62e8 */ + if (*(int *)(pMVar13 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar13 + 0x48); + local_c8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + /* catch() { ... } // from try @ 002e53fc with catch @ 002e630c + catch() { ... } // from try @ 002e5694 with catch @ 002e630c + catch() { ... } // from try @ 002e5774 with catch @ 002e630c + catch() { ... } // from try @ 002e58bc with catch @ 002e630c + catch() { ... } // from try @ 002e5b0c with catch @ 002e630c + catch() { ... } // from try @ 002e61f4 with catch @ 002e630c + catch() { ... } // from try @ 002e6210 with catch @ 002e630c */ + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar9 = _InputArray::kind(param_4); + if (iVar9 == 0x10000) { + pMVar13 = *(Mat **)(param_4 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar13; + local_bc = *(int *)(pMVar13 + 4); + local_b8 = *(int *)(pMVar13 + 8); + local_b4 = *(int *)(pMVar13 + 0xc); + local_b0 = *(long *)(pMVar13 + 0x10); + local_a8 = *(undefined8 *)(pMVar13 + 0x18); + local_a0 = *(undefined8 *)(pMVar13 + 0x20); + local_98 = *(undefined8 *)(pMVar13 + 0x28); + local_90 = *(undefined8 *)(pMVar13 + 0x30); + local_88 = *(long *)(pMVar13 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = *piVar10 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar13 + 0x48); + local_68 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar13); + } + } + else { + _InputArray::getMat_((int)param_4); + } + uVar1 = local_120; + if (-1 < param_6) { + uVar1 = param_6; + } + uVar2 = uVar1 & 7; + if ((uVar1 & 7) < (local_c0 & 7)) { + uVar2 = local_c0 & 7; + } + uVar1 = local_120 & 0xfff; + if (uVar2 < 5) { + uVar2 = 5; + } + if ((local_120 >> 3 & 0x1ff) != 0) { + local_210 = 0; + local_208 = (Mat *)0x0; + pcVar12 = (char *)String::allocate((String *)&local_210,0x13); + cVar4 = s_src_channels______1_00469528[0x12]; + uVar6 = s_src_channels______1_00469528._8_8_; + uVar5 = s_src_channels______1_00469528._0_8_; + *(undefined2 *)(pcVar12 + 0x10) = s_src_channels______1_00469528._16_2_; + pcVar12[0x12] = cVar4; + *(undefined8 *)pcVar12 = uVar5; + *(undefined8 *)(pcVar12 + 8) = uVar6; + error(-0xd7,(String *)&local_210, + "void cv::mulTransposed(cv::InputArray, cv::OutputArray, bool, cv::InputArray, double, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xadf); + String::deallocate((String *)&local_210); + } + if (local_b0 != 0) { + if (local_bc < 3) { + lVar15 = (long)local_b4 * (long)local_b8; + } + else { + lVar17 = 0; + lVar15 = 1; + do { + piVar10 = local_80 + lVar17; + lVar17 = lVar17 + 1; + lVar15 = lVar15 * *piVar10; + } while ((int)lVar17 < local_bc); + } + if (lVar15 != 0) { + /* try { // try from 002e5b00 to 003e5b03 has its CatchHandler @ 002e62e0 */ + /* try { // try from 002e5b0c to 003e5b0f has its CatchHandler @ 002e630c */ + if ((((local_c0 >> 3 & 0x1ff) != 0) || ((local_b8 != local_118 && (local_b8 != 1)))) || + ((local_b4 != local_114 && (local_b4 != 1)))) { + /* try { // try from 002e5b18 to 003e5b1b has its CatchHandler @ 002e62bc */ + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + __dest = (void *)String::allocate((String *)&local_1f8,0x73); + memcpy(__dest, + "delta.channels() == 1 && (delta.rows == src.rows || delta.rows == 1) && (delta.cols == src.cols || delta.cols == 1)" + ,0x73); + /* try { // try from 002e5b54 to 003e5b57 has its CatchHandler @ 002e62e8 */ + error(-0xd7,(String *)&local_1f8, + "void cv::mulTransposed(cv::InputArray, cv::OutputArray, bool, cv::InputArray, double, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xae5); + String::deallocate((String *)&local_1f8); + } + if ((local_c0 & 0xfff) != uVar2) { + local_50 = 0; + /* try { // try from 002e5b94 to 003e5c83 has its CatchHandler @ 002e62c4 */ + local_60 = 0x2010000; + local_58 = (Mat *)&local_c0; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_60,uVar2,1.0,0.0); + } + } + } + iVar9 = local_118; + if (param_3) { + iVar9 = local_114; + } + _OutputArray::create(param_2,iVar9,iVar9,uVar2,-1,false,0); + iVar9 = _InputArray::kind((_InputArray *)param_2); + if (iVar9 == 0x10000) { + pMVar13 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar13; + local_50 = *(long *)(pMVar13 + 0x10); + local_5c = *(int *)(pMVar13 + 4); + local_58 = *(Mat **)(pMVar13 + 8); + local_48 = *(undefined8 *)(pMVar13 + 0x18); + local_40 = *(undefined8 *)(pMVar13 + 0x20); + local_38 = *(undefined8 *)(pMVar13 + 0x28); + local_30 = *(undefined8 *)(pMVar13 + 0x30); + local_28 = *(long *)(pMVar13 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = *piVar10 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (2 < *(int *)(pMVar13 + 4)) { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar13); + goto LAB_002e5bf0; + } + local_10 = **(undefined8 **)(pMVar13 + 0x48); + local_8 = (*(undefined8 **)(pMVar13 + 0x48))[1]; + if (local_110 != local_50) goto LAB_002e5c00; + } + else { + _InputArray::getMat_((int)param_2); +LAB_002e5bf0: + if (local_110 != local_50) { +LAB_002e5c00: + /* try { // try from 002e63a4 to 003e63a7 has its CatchHandler @ 002e6320 */ + if ((((uVar1 != uVar2) || (local_58._4_4_ < 100)) || ((int)local_58 < 100)) || + ((local_114 < 100 || (local_118 < 100)))) { + bVar7 = uVar2 != 5; + if ((bVar7) || (uVar1 != 0)) { + bVar8 = uVar2 != 6; + if ((bVar8) || (uVar1 != 0)) { + /* try { // try from 002e63d4 to 003e63d7 has its CatchHandler @ 002e68ec */ + /* try { // try from 002e63dc to 003e685f has its CatchHandler @ 002e6320 */ + if ((bVar7) || (uVar1 != 2)) { + if ((bVar8) || (uVar1 != 2)) { + if ((bVar7) || (uVar1 != 3)) { + if ((bVar8) || (uVar1 != 3)) { + if ((bVar7) || (uVar1 != 5)) { + if (bVar8) { +LAB_002e658c: + local_1e0 = 0; + pMStack_1d8 = (Mat *)0x0; + String::allocate((String *)&local_1e0,0); + error(-0xd2,(String *)&local_1e0, + "void cv::mulTransposed(cv::InputArray, cv::OutputArray, bool, cv::InputArray, double, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp", + 0xb44); + String::deallocate((String *)&local_1e0); + pcVar16 = (code *)0x0; + } + else if (uVar1 != 5) { + if (uVar1 != 6) goto LAB_002e658c; + if (param_3) { + pcVar16 = FUN_002cb978; + } + else { + pcVar16 = FUN_002ccfa0; + } + } + else if (param_3) { + pcVar16 = FUN_002cbf78; + } + else { + pcVar16 = FUN_002cfd7c; + } + } + else if (param_3) { + pcVar16 = FUN_002cb344; + } + else { + pcVar16 = FUN_002cc7e8; + } + } + else if (param_3) { + pcVar16 = FUN_002ce964; + } + else { + pcVar16 = FUN_002d3be8; + } + } + else if (param_3) { + pcVar16 = FUN_002d0edc; + } + else { + pcVar16 = FUN_002d451c; + } + } + else if (param_3) { + pcVar16 = FUN_002d04b8; + } + else { + pcVar16 = FUN_002d32b4; + } + } + else if (param_3) { + pcVar16 = FUN_002cf388; + } + else { + pcVar16 = FUN_002d4e9c; + } + } + else if (param_3) { + pcVar16 = FUN_002ce360; + } + else { + pcVar16 = FUN_002d18d0; + } + } + else if (param_3) { + pcVar16 = FUN_002cd624; + } + else { + pcVar16 = FUN_002d25e8; + } + (*pcVar16)(param_5,(Mat *)&local_120,(Mat *)&local_60,(Mat *)&local_c0); + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x3010000); + pMStack_178 = (Mat *)&local_60; + completeSymm((_InputOutputArray *)&local_180,false); + goto LAB_002e5c64; + } + } + } + local_198 = &local_190; + local_1a0 = &pMStack_1d8; + local_1d0 = 0; + local_1c8 = 0; + local_1c0 = 0; + pMStack_1d8 = _UNK_002e6718; + local_1e0 = _DAT_002e6710; + local_1b8 = 0; + local_1b0 = 0; + local_1a8 = 0; + uStack_188 = 0; + local_190 = 0; + local_238 = (Mat *)&local_120; + if (local_b0 != 0) { + if (local_bc < 3) { + lVar17 = (long)local_b4 * (long)local_b8; + } + else { + lVar15 = 0; + lVar17 = 1; + do { + piVar10 = local_80 + lVar15; + lVar15 = lVar15 + 1; + lVar17 = lVar17 * *piVar10; + } while ((int)lVar15 < local_bc); + } + if (lVar17 != 0) { + local_1f0 = (Mat *)&local_c0; + if ((local_80[1] == local_e0[1]) && (*local_80 == *local_e0)) { + } + else { + iVar9 = 0; + if (local_b8 != 0) { + iVar9 = local_118 / local_b8; + } + local_1f8._0_4_ = 0x1010000; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + local_170 = 0; + local_1e8 = 0; + local_1e4 = 0; + iVar3 = 0; + if (local_b4 != 0) { + iVar3 = local_114 / local_b4; + } + pMStack_178 = (Mat *)&local_1e0; + repeat((_InputArray *)&local_1f8,iVar9,iVar3,(_OutputArray *)&local_180); + local_1f0 = (Mat *)&local_1e0; + } + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_210 = CONCAT44(local_210._4_4_,0x1010000); + local_1e4 = 0; + local_1e8 = 0; + local_1fc = 0; + local_200 = 0; + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + local_208 = (Mat *)&local_120; + pMStack_178 = (Mat *)&local_1e0; + p_Var11 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_210,(_InputArray *)&local_1f8,(_OutputArray *)&local_180, + p_Var11,-1); + local_238 = (Mat *)&local_1e0; + } + } + local_138 = &local_130; + local_170 = 0; + local_168 = 0; + local_140 = &pMStack_178; + local_160 = 0; + local_158 = 0; + pMStack_178 = _UNK_002e6718; + local_180 = _DAT_002e6710; + local_150 = 0; + local_148 = 0; + uStack_128 = 0; + local_130 = 0; + iVar9 = 2; + if (param_3) { + iVar9 = 1; + } + local_230 = 0; + local_22c = 0; + local_240[0] = 0x1010000; + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210 = CONCAT44(local_210._4_4_,0x1010000); + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + local_220 = local_238; + local_208 = (Mat *)&local_180; + local_1f0 = (Mat *)&local_60; + gemm((_InputArray *)local_240,(_InputArray *)local_228,param_5,(_InputArray *)&local_210,0.0, + (_OutputArray *)&local_1f8,iVar9); + if (local_148 != 0) { + piVar10 = (int *)(local_148 + 0x14); + do { + iVar9 = *piVar10; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar9 = 0; + ppMVar14 = local_140; + do { + *(undefined4 *)ppMVar14 = 0; + iVar9 = iVar9 + 1; + /* try { // try from 002e61cc to 003e61cf has its CatchHandler @ 002e6224 */ + ppMVar14 = (Mat **)((long)ppMVar14 + 4); + } while (iVar9 < local_180._4_4_); + } + /* try { // try from 002e61d4 to 003e61d7 has its CatchHandler @ 002e62c4 */ + if (local_138 != &local_130) { + /* try { // try from 002e61e4 to 003e61e7 has its CatchHandler @ 002e5350 */ + fastFree(local_138); + } + if (local_1a8 != 0) { + piVar10 = (int *)(local_1a8 + 0x14); + do { + /* try { // try from 002e61f4 to 003e61f7 has its CatchHandler @ 002e630c */ + iVar9 = *piVar10; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + /* try { // try from 002e6204 to 003e6207 has its CatchHandler @ 002e62bc */ + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + /* try { // try from 002e6210 to 003e6213 has its CatchHandler @ 002e630c */ + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + /* catch() { ... } // from try @ 002e61cc with catch @ 002e6224 */ + local_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar9 = 0; + ppMVar14 = local_1a0; + do { + *(undefined4 *)ppMVar14 = 0; + iVar9 = iVar9 + 1; + ppMVar14 = (Mat **)((long)ppMVar14 + 4); + } while (iVar9 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } +LAB_002e5c64: + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar10; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + /* try { // try from 002e5ca0 to 003e5ca3 has its CatchHandler @ 002e62ac */ + local_48 = 0; + if (0 < local_5c) { + /* try { // try from 002e5ca8 to 003e61af has its CatchHandler @ 002e62c4 */ + iVar9 = 0; + puVar18 = local_20; + do { + *(undefined4 *)puVar18 = 0; + iVar9 = iVar9 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar9 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar10 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar10; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + /* catch() { ... } // from try @ 002e63a4 with catch @ 002e6320 + catch() { ... } // from try @ 002e63dc with catch @ 002e6320 + catch() { ... } // from try @ 002e68fc with catch @ 002e6320 */ + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + piVar10 = local_80; + do { + *piVar10 = 0; + iVar9 = iVar9 + 1; + piVar10 = piVar10 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar10 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar10; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar7) { + *piVar10 = iVar9 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + piVar10 = local_e0; + do { + *piVar10 = 0; + iVar9 = iVar9 + 1; + piVar10 = piVar10 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002e6720 (1500 bytes) name=cvMulTransposed + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMulTransposed(double param_1,cv *param_2,cv *param_3,int param_4,cv *param_5, + undefined8 param_6,AutoBuffer *param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 *puVar4; + int iVar5; + undefined8 *puVar6; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined4 local_1f8 [2]; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + uint local_1e0; + int iStack_1dc; + undefined8 uStack_1d8; + long local_1d0; + undefined8 local_1c8; + AutoBuffer *local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + undefined4 *local_1a0; + undefined8 *local_198; + undefined8 auStack_190 [2]; + undefined8 local_180; + undefined8 uStack_178; + long local_170; + undefined8 local_168; + AutoBuffer *local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined4 local_c0; + int local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_7); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_7); + local_180 = CONCAT44(iStack_1dc,local_1e0); + local_138 = &local_130; + local_140 = &uStack_178; + uStack_128 = 0; + local_130 = 0; + uStack_178 = uStack_1d8; + local_170 = local_1d0; + local_168 = local_1c8; + local_160 = local_1c0; + local_158 = local_1b8; + local_150 = local_1b0; + local_148 = local_1a8; + if (local_1a8 != 0) { + piVar1 = (int *)(local_1a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iStack_1dc < 3) { + local_130 = *local_198; + uStack_128 = local_198[1]; + } + else { + local_180 = (ulong)local_1e0; + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_1e0); + } + local_d8 = &local_d0; + local_e0 = &uStack_118; + local_100 = 0; + uStack_f8 = 0; + uStack_c8 = 0; + local_d0 = 0; + local_110 = 0; + uStack_108 = 0; + local_f0 = 0; + lStack_e8 = 0; + uStack_118 = _LAB_002e6dc8; + local_120 = _DAT_002e6dc0; + if (param_5 == (cv *)0x0) goto LAB_002e69c8; + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,local_1c0); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + /* try { // try from 002e6cbc to 003e6cbf has its CatchHandler @ 002e6e58 */ + cv::Mat::deallocate((Mat *)&local_120); + } + } + puVar4 = local_78; + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_120._4_4_ < 1) { +LAB_002e690c: + if (2 < local_bc) goto LAB_002e6918; + uStack_118 = local_b8; + local_120 = CONCAT44(local_bc,local_c0); + *local_d8 = *local_78; + local_d8[1] = puVar4[1]; + } + else { + iVar5 = 0; + puVar6 = local_e0; + do { + *(undefined4 *)puVar6 = 0; + /* catch() { ... } // from try @ 002e63d4 with catch @ 002e68ec */ + iVar5 = iVar5 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } while (iVar5 < local_120._4_4_); + /* try { // try from 002e68fc to 003e68ff has its CatchHandler @ 002e6320 */ + /* catch() { ... } // from try @ 002e6918 with catch @ 002e6900 + catch() { ... } // from try @ 002e696c with catch @ 002e6900 + catch() { ... } // from try @ 002e699c with catch @ 002e6900 */ + if (local_120._4_4_ < 3) goto LAB_002e690c; +LAB_002e6918: + /* try { // try from 002e6918 to 003e6947 has its CatchHandler @ 002e6900 */ + local_120 = CONCAT44(local_120._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_120,(Mat *)&local_c0); + } + uStack_f8 = uStack_98; + local_100 = local_a0; + lStack_e8 = lStack_88; + local_f0 = local_90; + uStack_108 = uStack_a8; + local_110 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar5 = *piVar1; + /* try { // try from 002e6964 to 003e6967 has its CatchHandler @ 002e698c */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e696c to 003e6977 has its CatchHandler @ 002e6900 */ + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + /* catch() { ... } // from try @ 002e6964 with catch @ 002e698c */ + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + /* try { // try from 002e699c to 003e699f has its CatchHandler @ 002e6900 */ + iVar5 = 0; + do { + /* catch() { ... } // from try @ 002e69e0 with catch @ 002e69a0 + catch() { ... } // from try @ 002e6d30 with catch @ 002e69a0 + catch() { ... } // from try @ 002e6dbc with catch @ 002e69a0 + catch() { ... } // from try @ 002e6e44 with catch @ 002e69a0 */ + *local_80 = 0; + iVar5 = iVar5 + 1; + local_80 = local_80 + 1; + } while (iVar5 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } +LAB_002e69c8: + /* try { // try from 002e69e0 to 003e69e3 has its CatchHandler @ 002e69a0 */ + local_1e8 = 0; + /* try { // try from 002e69fc to 003e69ff has its CatchHandler @ 002e6e58 */ + local_1e4 = 0; + local_1f8[0] = 0x2010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_b0 = 0; + local_c0 = 0x1010000; + local_208 = aMStack_60; + local_1f0 = (Mat *)&local_180; + local_b8 = (Mat *)&local_120; + cv::mulTransposed((_InputArray *)local_210,(_OutputArray *)local_1f8,param_4 != 0, + (_InputArray *)&local_c0,param_1,(uint)local_180 & 0xfff); + if (local_170 != local_1d0) { + local_b0 = 0; + local_c0 = 0x2010000; + local_b8 = (Mat *)&local_1e0; + cv::Mat::convertTo((Mat *)&local_180,(_OutputArray *)&local_c0,local_1e0 & 0xfff,1.0,0.0); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e6a84 to 003e6a87 has its CatchHandler @ 002e6e48 */ + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar5 = 0; + puVar4 = local_e0; + do { + *(undefined4 *)puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = (undefined8 *)((long)puVar4 + 4); + } while (iVar5 < local_120._4_4_); + } + /* try { // try from 002e6ad0 to 003e6ad3 has its CatchHandler @ 002e6ddc */ + /* try { // try from 002e6ad8 to 003e6bd7 has its CatchHandler @ 002e6e48 */ + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = (AutoBuffer *)0x0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar5 = 0; + puVar4 = local_140; + do { + *(undefined4 *)puVar4 = 0; + iVar5 = iVar5 + 1; + puVar4 = (undefined8 *)((long)puVar4 + 4); + } while (iVar5 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (local_1a8 != 0) { + piVar1 = (int *)(local_1a8 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = (AutoBuffer *)0x0; + local_1c8 = 0; + if (0 < iStack_1dc) { + iVar5 = 0; + do { + *local_1a0 = 0; + iVar5 = iVar5 + 1; + local_1a0 = local_1a0 + 1; + } while (iVar5 < iStack_1dc); + } + if (local_198 != auStack_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar5 = 0; + do { + *local_20 = 0; + iVar5 = iVar5 + 1; + local_20 = local_20 + 1; + } while (iVar5 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + /* try { // try from 002e6c48 to 003e6c4b has its CatchHandler @ 002e6e50 */ + return; +} + + +================================================================== + +### FUNC 002e6dd0 (1492 bytes) name=cvGEMM + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvGEMM(double param_1,double param_2,cv *param_3,cv *param_4,cv *param_5,cv *param_6, + uint param_7,AutoBuffer *param_8) + +{ + int *piVar1; + char cVar2; + bool bVar3; + void *__dest; + int iVar4; + undefined8 *puVar5; + undefined8 *puVar6; + AutoBuffer *pAVar7; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + AutoBuffer *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + uint local_120; + int local_11c; + int local_118; + int local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + /* try { // try from 002e6dd4 to 003e6dd7 has its CatchHandler @ 002e6e50 */ + /* catch() { ... } // from try @ 002e6ad0 with catch @ 002e6ddc */ + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_8); + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,param_8); + /* try { // try from 002e6e44 to 003e6e47 has its CatchHandler @ 002e69a0 */ + /* catch() { ... } // from try @ 002e6a84 with catch @ 002e6e48 + catch() { ... } // from try @ 002e6ad8 with catch @ 002e6e48 + catch() { ... } // from try @ 002e6d70 with catch @ 002e6e48 */ + pAVar7 = (AutoBuffer *)&local_190; + /* catch() { ... } // from try @ 002e6c48 with catch @ 002e6e50 + catch() { ... } // from try @ 002e6dd4 with catch @ 002e6e50 */ + /* catch() { ... } // from try @ 002e69fc with catch @ 002e6e58 + catch() { ... } // from try @ 002e6cbc with catch @ 002e6e58 + catch() { ... } // from try @ 002e6dc8 with catch @ 002e6e58 */ + local_1a0 = &uStack_1d8; + uStack_1d8 = _UNK_002e7488; + local_1e0 = _DAT_002e7480; + /* catch() { ... } // from try @ 002e6ec0 with catch @ 002e6e80 + catch() { ... } // from try @ 002e7210 with catch @ 002e6e80 + catch() { ... } // from try @ 002e729c with catch @ 002e6e80 + catch() { ... } // from try @ 002e7324 with catch @ 002e6e80 */ + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + uStack_188 = 0; + local_190 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_198 = pAVar7; + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,pAVar7); + if (param_5 != (cv *)0x0) { + /* try { // try from 002e6ec0 to 003e6ec3 has its CatchHandler @ 002e6e80 */ + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,pAVar7); + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e6edc to 003e6edf has its CatchHandler @ 002e7338 */ + } while (cVar2 != '\0'); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar6 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002e6f50: + if (2 < local_17c) goto LAB_002e7300; + /* try { // try from 002e6f64 to 003e6f67 has its CatchHandler @ 002e7328 */ + uStack_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *(undefined8 *)local_198 = *local_138; + *(undefined8 *)(local_198 + 8) = puVar6[1]; + } + else { + iVar4 = 0; + puVar5 = local_1a0; + do { + *(undefined4 *)puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } while (iVar4 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e6f50; +LAB_002e7300: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + /* try { // try from 002e6fb0 to 003e6fb3 has its CatchHandler @ 002e72bc */ + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + /* try { // try from 002e6fb8 to 003e70b7 has its CatchHandler @ 002e7328 */ + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar4 = 0; + do { + *local_140 = 0; + iVar4 = iVar4 + 1; + local_140 = local_140 + 1; + } while (iVar4 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + } + if ((param_7 & 1) == 0) { + local_114 = local_118; + } + if (local_58 == local_114) { + if ((param_7 & 2) == 0) { + local_b8 = local_b4; + } + /* catch() { ... } // from try @ 002e73ac with catch @ 002e7360 + catch() { ... } // from try @ 002e7718 with catch @ 002e7360 + catch() { ... } // from try @ 002e7834 with catch @ 002e7360 */ + if ((local_54 == local_b8) && ((local_60 & 0xfff) == (local_120 & 0xfff))) goto LAB_002e709c; + } + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_1f8,0x90); + memcpy(__dest, + "(D.rows == ((flags & CV_GEMM_A_T) == 0 ? A.rows : A.cols)) && (D.cols == ((flags & CV_GEMM_B_T) == 0 ? B.cols : B.rows)) && D.type() == A.type()" + ,0x90); + cv::error(-0xd7,(String *)&local_1f8, + "void cvGEMM(const CvArr*, const CvArr*, double, const CvArr*, double, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xcd2); + cv::String::deallocate((String *)&local_1f8); +LAB_002e709c: + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_218 = 0; + local_214 = 0; + local_228[0] = 0x1010000; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_170 = 0; + local_180 = 0x2010000; + local_220 = (Mat *)&local_120; + local_208 = aMStack_c0; + local_1f0 = (Mat *)&local_1e0; + local_178 = (Mat *)&local_60; + cv::gemm((_InputArray *)local_228,(_InputArray *)local_210,param_1,(_InputArray *)&local_1f8, + param_2,(_OutputArray *)&local_180,param_7); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e7128 to 003e712b has its CatchHandler @ 002e7330 */ + } while (cVar2 != '\0'); + if (iVar4 == 1) { + /* catch() { ... } // from try @ 002e6edc with catch @ 002e7338 + catch() { ... } // from try @ 002e719c with catch @ 002e7338 + catch() { ... } // from try @ 002e72a8 with catch @ 002e7338 */ + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e719c to 003e719f has its CatchHandler @ 002e7338 */ + } while (cVar2 != '\0'); + if (iVar4 == 1) { + /* catch() { ... } // from try @ 002e6f64 with catch @ 002e7328 + catch() { ... } // from try @ 002e6fb8 with catch @ 002e7328 + catch() { ... } // from try @ 002e7250 with catch @ 002e7328 */ + cv::Mat::deallocate((Mat *)&local_1e0); + /* catch() { ... } // from try @ 002e7128 with catch @ 002e7330 + catch() { ... } // from try @ 002e72b4 with catch @ 002e7330 */ + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar4 = 0; + puVar6 = local_1a0; + do { + *(undefined4 *)puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } while (iVar4 < local_1e0._4_4_); + } + if (local_198 != (AutoBuffer *)&local_190) { + cv::fastFree(local_198); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e7210 to 003e7213 has its CatchHandler @ 002e6e80 */ + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_c0); + /* try { // try from 002e7324 to 003e7327 has its CatchHandler @ 002e6e80 */ + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + /* try { // try from 002e7250 to 003e7253 has its CatchHandler @ 002e7328 */ + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + /* try { // try from 002e729c to 003e729f has its CatchHandler @ 002e6e80 */ + local_f8 = 0; + local_100 = 0; + /* try { // try from 002e72a8 to 003e72ab has its CatchHandler @ 002e7338 */ + local_108 = 0; + if (0 < local_11c) { + /* try { // try from 002e72b4 to 003e72b7 has its CatchHandler @ 002e7330 */ + iVar4 = 0; + do { + *local_e0 = 0; + /* catch() { ... } // from try @ 002e6fb0 with catch @ 002e72bc */ + iVar4 = iVar4 + 1; + local_e0 = local_e0 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 002e7490 (7620 bytes) name=calcCovarMatrix + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::calcCovarMatrix(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputOutputArray + const&, int, int) */ + +void cv::calcCovarMatrix(_InputArray *param_1,_OutputArray *param_2,_InputOutputArray *param_3, + int param_4,int param_5) + +{ + uint uVar1; + uint uVar2; + char cVar3; + bool bVar4; + Mat *pMVar5; + undefined4 uVar6; + undefined2 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + Mat *pMVar13; + long *plVar14; + int iVar15; + int iVar16; + int iVar17; + int iVar18; + uint uVar19; + Mat **ppMVar20; + char *pcVar21; + undefined8 *puVar22; + void *__dest; + Mat *pMVar23; + undefined4 *puVar24; + int *piVar25; + Mat *pMVar26; + long lVar27; + uint uVar28; + int iVar29; + long lVar30; + double dVar31; + int local_298; + int local_294; + int local_290; + int local_28c; + long local_288; + long local_280; + undefined8 local_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + Mat *local_258; + Mat *local_250; + undefined8 local_248; + undefined8 local_240; + Mat *pMStack_238; + long local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + undefined8 local_210; + long local_208; + Mat **local_200; + long *local_1f8; + long local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + Mat *pMStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + Mat **local_1a0; + long *local_198; + long local_190; + undefined8 uStack_188; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + Mat **local_140; + long *local_138; + long local_130; + long lStack_128; + undefined4 local_120; + int local_11c; + Mat *local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + Mat **local_e0; + long *local_d8; + long local_d0; + long local_c8; + int local_c0; + int local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + Mat **local_80; + long *local_78; + long local_70; + long local_68; + uint local_60; + int local_5c; + undefined8 local_58; + long local_50; + long lStack_48; + long local_40; + long lStack_38; + undefined8 local_30; + long lStack_28; + undefined8 *local_20; + long *local_18; + long local_10; + long local_8; + + /* try { // try from 002e749c to 003e749f has its CatchHandler @ 002e7840 */ + /* try { // try from 002e74a4 to 003e75bf has its CatchHandler @ 002e7870 */ + iVar15 = _InputArray::kind(param_1); + iVar17 = (int)param_3; + if (iVar15 == 0x50000) { + local_258 = (Mat *)0x0; + local_250 = (Mat *)0x0; + local_248 = 0; + _InputArray::getMatVector(param_1,(vector *)&local_258); + lVar27 = ((long)local_250 - (long)local_258 >> 5) * -0x5555555555555555; + if (lVar27 == 0) { + local_288 = lVar27; + local_280 = lVar27; + pcVar21 = (char *)String::allocate((String *)&local_288,0xe); + uVar7 = s_src_size___>_0_00469650._12_2_; + uVar6 = s_src_size___>_0_00469650._8_4_; + *(undefined8 *)pcVar21 = s_src_size___>_0_00469650._0_8_; + *(undefined4 *)(pcVar21 + 8) = uVar6; + /* try { // try from 002e8df8 to 003e8dfb has its CatchHandler @ 002e94c4 */ + *(undefined2 *)(pcVar21 + 0xc) = uVar7; + error(-0xd7,(String *)&local_288, + "void cv::calcCovarMatrix(cv::InputArray, cv::OutputArray, cv::InputOutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x967); + String::deallocate((String *)&local_288); + } + uVar28 = *(uint *)local_258; + piVar25 = *(int **)(local_258 + 0x40); + uVar2 = uVar28; + if (-1 < param_5) { + uVar2 = param_5; + } + uVar2 = uVar2 & 7; + uVar1 = uVar28 & 0xfff; + iVar15 = piVar25[1]; + iVar16 = *piVar25; + pMVar23 = *(Mat **)piVar25; + local_60 = uVar2; + uVar19 = _InputArray::depth((_InputArray *)param_3,-1); + /* try { // try from 002e7e28 to 003e7e63 has its CatchHandler @ 002e7e6c */ + if ((int)uVar2 < (int)uVar19) { + uVar2 = uVar19; + } + local_1f8 = &local_1f0; + pMStack_238 = _UNK_002e94d8; + local_240 = _DAT_002e94d0; + /* catch() { ... } // from try @ 002e7cc0 with catch @ 002e7e6c + catch() { ... } // from try @ 002e7e28 with catch @ 002e7e6c */ + if ((int)uVar2 < 5) { + uVar2 = 5; + } + local_290 = (int)((long)local_250 - (long)local_258 >> 5) * -0x55555555; + local_230 = 0; + local_200 = &pMStack_238; + local_228 = 0; + local_220 = 0; + local_218 = 0; + local_210 = 0; + local_208 = 0; + /* try { // try from 002e7eac to 003e7eaf has its CatchHandler @ 002e7bb0 */ + /* catch() { ... } // from try @ 002e7c9c with catch @ 002e7eb0 */ + uStack_1e8 = 0; + local_1f0 = 0; + local_28c = iVar15 * iVar16; + /* catch() { ... } // from try @ 002e7c50 with catch @ 002e7ec0 + catch() { ... } // from try @ 002e7ca4 with catch @ 002e7ec0 */ + Mat::create((Mat *)&local_240,2,&local_290,uVar1); + /* catch() { ... } // from try @ 002e7be4 with catch @ 002e7ec8 */ + /* catch() { ... } // from try @ 002e7f04 with catch @ 002e7ed0 + catch() { ... } // from try @ 002e80ec with catch @ 002e7ed0 + catch() { ... } // from try @ 002e8590 with catch @ 002e7ed0 + catch() { ... } // from try @ 002e9260 with catch @ 002e7ed0 */ + if (local_258 != local_250) { + iVar29 = (uVar28 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar28 & 7) << 1)) & 3); + lVar30 = (long)iVar29 * (long)iVar15; + /* try { // try from 002e7f04 to 003e7f27 has its CatchHandler @ 002e7ed0 */ + lVar27 = 0; + pMVar26 = local_258; + do { + if (((iVar15 != (*(int **)(pMVar26 + 0x40))[1]) || (iVar16 != **(int **)(pMVar26 + 0x40))) + || (uVar1 != (*(uint *)pMVar26 & 0xfff))) { + local_278 = 0; + local_270 = 0; + puVar22 = (undefined8 *)String::allocate((String *)&local_278,0x30); + uVar12 = s____type_00469688._0_8_; + uVar11 = _LAB_00469680; + uVar10 = DAT_00469678; + uVar9 = DAT_00469670; + uVar8 = DAT_00469668; + /* try { // try from 002e7f7c to 003e7f7f has its CatchHandler @ 002e9510 */ + *puVar22 = DAT_00469660; + puVar22[1] = uVar8; + puVar22[2] = uVar9; + puVar22[3] = uVar10; + puVar22[4] = uVar11; + puVar22[5] = uVar12; + error(-0xd7,(String *)&local_278, + "void cv::calcCovarMatrix(cv::InputArray, cv::OutputArray, cv::InputOutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x973); + String::deallocate((String *)&local_278); + } + local_18 = &local_10; + local_5c = 2; + /* try { // try from 002e7fc8 to 003e7fcb has its CatchHandler @ 002e9500 */ + /* try { // try from 002e7fd0 to 003e7ffb has its CatchHandler @ 002e9510 */ + local_50 = local_230 + lVar27 * *local_1f8; + local_30 = 0; + local_40 = local_50 + lVar30 * iVar16; + lStack_28 = 0; + local_b0 = 0; + local_c0 = 0x2010000; + local_b8 = (Mat *)&local_60; + local_60 = uVar1 + 0x42ff0000 | 0x4000; + local_58 = pMVar23; + lStack_48 = local_50; + lStack_38 = local_40; + local_20 = &local_58; + local_10 = lVar30; + local_8 = (long)iVar29; + Mat::copyTo(pMVar26,(_OutputArray *)&local_c0); + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + iVar18 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_60); + /* try { // try from 002e8aa4 to 003e8aa7 has its CatchHandler @ 002e94e4 */ + } + } + /* try { // try from 002e804c to 003e804f has its CatchHandler @ 002e94ec */ + lStack_28 = 0; + local_50 = 0; + /* try { // try from 002e8054 to 003e8093 has its CatchHandler @ 002e9510 */ + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < local_5c) { + iVar18 = 0; + puVar22 = local_20; + do { + *(undefined4 *)puVar22 = 0; + iVar18 = iVar18 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar18 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + pMVar26 = pMVar26 + 0x60; + lVar27 = lVar27 + 1; + } while (local_250 != pMVar26); + } + /* try { // try from 002e80b0 to 003e80b3 has its CatchHandler @ 002e9518 */ + local_1a0 = &pMStack_1d8; + /* try { // try from 002e80b8 to 003e80bb has its CatchHandler @ 002e9510 */ + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + local_198 = &local_190; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + pMStack_1d8 = _UNK_002e94d8; + local_1e0 = _DAT_002e94d0; + /* try { // try from 002e80ec to 003e813f has its CatchHandler @ 002e7ed0 */ + uStack_188 = 0; + local_190 = 0; + if (((uint)param_4 >> 1 & 1) != 0) { + _InputArray::size(iVar17); + if ((local_298 != iVar15) || (iVar16 != local_294)) { + local_268 = 0; + local_260 = 0; + pcVar21 = (char *)String::allocate((String *)&local_268,0x14); + uVar9 = s__mean_size______size_00469698._8_8_; + uVar8 = s__mean_size______size_00469698._0_8_; + *(undefined4 *)(pcVar21 + 0x10) = s__mean_size______size_00469698._16_4_; + *(undefined8 *)pcVar21 = uVar8; + *(undefined8 *)(pcVar21 + 8) = uVar9; + error(-0xd7,(String *)&local_268, + "void cv::calcCovarMatrix(cv::InputArray, cv::OutputArray, cv::InputOutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x97b); + String::deallocate((String *)&local_268); + } + if (((uint)local_1e0 & 0xfff) != uVar2) { + iVar15 = _InputArray::kind((_InputArray *)param_3); + /* try { // try from 002e819c to 003e819f has its CatchHandler @ 002e9510 */ + if (iVar15 == 0x10000) { + local_140 = &pMStack_178; + local_138 = &local_130; + pMVar23 = *(Mat **)(param_3 + 8); + uVar28 = *(uint *)pMVar23; + local_170 = *(undefined8 *)(pMVar23 + 0x10); + local_180 = *(ulong *)pMVar23; + pMStack_178 = *(Mat **)(pMVar23 + 8); + uStack_168 = *(undefined8 *)(pMVar23 + 0x18); + local_160 = *(undefined8 *)(pMVar23 + 0x20); + uStack_158 = *(undefined8 *)(pMVar23 + 0x28); + local_150 = *(undefined8 *)(pMVar23 + 0x30); + lStack_148 = *(long *)(pMVar23 + 0x38); + lStack_128 = 0; + local_130 = 0; + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_130 = **(long **)(pMVar23 + 0x48); + lStack_128 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + /* try { // try from 002e9194 to 003e9203 has its CatchHandler @ 002e9320 */ + local_180 = (ulong)uVar28; + Mat::copySize((Mat *)&local_180,pMVar23); + } + } + else { + /* try { // try from 002e81a4 to 003e81a7 has its CatchHandler @ 002e940c */ + _InputArray::getMat_(iVar17); + } + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar25 = (int *)(lStack_1a8 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + /* catch() { ... } // from try @ 002e8b14 with catch @ 002e9204 + catch() { ... } // from try @ 002e8ff0 with catch @ 002e9204 */ + Mat::deallocate((Mat *)&local_1e0); + } + } + plVar14 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + /* try { // try from 002e8210 to 003e8213 has its CatchHandler @ 002e9444 */ + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002e8244: + if (2 < local_180._4_4_) goto LAB_002e8e20; + /* try { // try from 002e825c to 003e825f has its CatchHandler @ 002e9414 */ + local_1e0 = local_180; + /* try { // try from 002e8264 to 003e8267 has its CatchHandler @ 002e9444 */ + pMStack_1d8 = pMStack_178; + *local_198 = *local_138; + local_198[1] = plVar14[1]; + } + else { + iVar15 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e8244; +LAB_002e8e20: + local_1e0 = CONCAT44(local_1e0._4_4_,(uint)local_180); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + /* try { // try from 002e8280 to 003e8283 has its CatchHandler @ 002e944c */ + uStack_1c8 = uStack_168; + local_1d0 = local_170; + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + /* try { // try from 002e82d0 to 003e8403 has its CatchHandler @ 002e9510 */ + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar15 = 0; + ppMVar20 = local_140; + do { + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_180._4_4_); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + local_5c = *(int *)local_1a0; + local_60 = *(uint *)((long)local_1a0 + 4); + _OutputArray::create((_OutputArray *)param_3,(Mat *)&local_60,uVar2,0xffffffff,0,0); + iVar15 = _InputArray::kind((_InputArray *)param_3); + if (iVar15 == 0x10000) { + local_20 = &local_58; + local_18 = &local_10; + /* try { // try from 002e8ff0 to 003e8ff3 has its CatchHandler @ 002e9204 */ + pMVar23 = *(Mat **)(param_3 + 8); + local_60 = *(uint *)pMVar23; + local_50 = *(long *)(pMVar23 + 0x10); + /* try { // try from 002e9000 to 003e9003 has its CatchHandler @ 002e93bc */ + local_5c = *(int *)(pMVar23 + 4); + /* try { // try from 002e9010 to 003e9013 has its CatchHandler @ 002e9494 */ + local_58 = *(Mat **)(pMVar23 + 8); + lStack_48 = *(long *)(pMVar23 + 0x18); + /* try { // try from 002e9020 to 003e9023 has its CatchHandler @ 002e94ac */ + local_40 = *(long *)(pMVar23 + 0x20); + lStack_38 = *(long *)(pMVar23 + 0x28); + /* try { // try from 002e9030 to 003e9033 has its CatchHandler @ 002e944c */ + local_30 = *(undefined8 *)(pMVar23 + 0x30); + lStack_28 = *(long *)(pMVar23 + 0x38); + /* try { // try from 002e9040 to 003e9043 has its CatchHandler @ 002e9464 */ + local_8 = 0; + local_10 = 0; + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_10 = **(long **)(pMVar23 + 0x48); + local_8 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar23); + } + } + else { + _InputArray::getMat_(iVar17); + } + local_b0 = 0; + local_c0 = 0x2010000; + local_b8 = (Mat *)&local_60; + Mat::convertTo((Mat *)&local_1e0,(_OutputArray *)&local_c0,uVar2,1.0,0.0); + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar25 = (int *)(lStack_1a8 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + plVar14 = local_18; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002e842c: + if (2 < local_5c) goto LAB_002e8efc; + local_1e0 = CONCAT44(local_5c,local_60); + pMStack_1d8 = local_58; + *local_198 = *local_18; + local_198[1] = plVar14[1]; + } + else { + iVar15 = 0; + ppMVar20 = local_1a0; + do { + /* try { // try from 002e8408 to 003e840b has its CatchHandler @ 002e937c */ + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e842c; +LAB_002e8efc: + local_1e0 = CONCAT44(local_1e0._4_4_,local_60); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_60); + } + /* try { // try from 002e8474 to 003e8477 has its CatchHandler @ 002e9374 */ + uStack_1c8 = lStack_48; + local_1d0 = local_50; + uStack_1b8 = lStack_38; + local_1c0 = local_40; + lStack_1a8 = lStack_28; + local_1b0 = local_30; + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + /* try { // try from 002e84c0 to 003e84c3 has its CatchHandler @ 002e9364 */ + local_50 = 0; + /* try { // try from 002e84c8 to 003e84cb has its CatchHandler @ 002e9374 */ + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < local_5c) { + iVar15 = 0; + puVar22 = local_20; + do { + *(undefined4 *)puVar22 = 0; + /* try { // try from 002e84e4 to 003e84e7 has its CatchHandler @ 002e9320 */ + iVar15 = iVar15 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar15 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + } + iVar15 = _InputArray::kind((_InputArray *)param_3); + if (iVar15 == 0x10000) { + local_20 = &local_58; + local_18 = &local_10; + pMVar23 = *(Mat **)(param_3 + 8); + local_60 = *(uint *)pMVar23; + /* try { // try from 002e8e64 to 003e8e67 has its CatchHandler @ 002e9294 */ + local_50 = *(long *)(pMVar23 + 0x10); + local_5c = *(int *)(pMVar23 + 4); + local_58 = *(Mat **)(pMVar23 + 8); + lStack_48 = *(long *)(pMVar23 + 0x18); + local_40 = *(long *)(pMVar23 + 0x20); + lStack_38 = *(long *)(pMVar23 + 0x28); + local_30 = *(undefined8 *)(pMVar23 + 0x30); + lStack_28 = *(long *)(pMVar23 + 0x38); + /* try { // try from 002e8eb0 to 003e8eb3 has its CatchHandler @ 002e9264 */ + local_8 = 0; + /* try { // try from 002e8eb8 to 003e8ebb has its CatchHandler @ 002e9294 */ + local_10 = 0; + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + /* try { // try from 002e8ed4 to 003e8ed7 has its CatchHandler @ 002e94ac */ + if (*(int *)(pMVar23 + 4) < 3) { + local_10 = **(long **)(pMVar23 + 0x48); + local_8 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar23); + /* try { // try from 002e9180 to 003e9183 has its CatchHandler @ 002e9384 */ + } + } + else { + _InputArray::getMat_(iVar17); + } + /* try { // try from 002e852c to 003e857f has its CatchHandler @ 002e9510 */ + Mat::reshape((int)(Mat *)&local_60,1); + if (lStack_e8 != 0) { + piVar25 = (int *)(lStack_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar25 = (int *)(lStack_1a8 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + plVar14 = local_d8; + lStack_1a8 = 0; + local_1d0 = 0; + /* try { // try from 002e8590 to 003e8593 has its CatchHandler @ 002e7ed0 */ + uStack_1b8 = 0; + local_1c0 = 0; + /* try { // try from 002e859c to 003e859f has its CatchHandler @ 002e9510 */ + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002e85d0: + if (2 < local_11c) goto LAB_002e8d84; + local_1e0 = CONCAT44(local_11c,local_120); + pMStack_1d8 = local_118; + *local_198 = *local_d8; + local_198[1] = plVar14[1]; + } + else { + /* try { // try from 002e85a4 to 003e85a7 has its CatchHandler @ 002e9410 */ + iVar15 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e85d0; +LAB_002e8d84: + local_1e0 = CONCAT44(local_1e0._4_4_,local_120); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_120); + } + /* try { // try from 002e8610 to 003e8613 has its CatchHandler @ 002e948c */ + uStack_1c8 = uStack_108; + local_1d0 = local_110; + uStack_1b8 = uStack_f8; + local_1c0 = local_100; + lStack_1a8 = lStack_e8; + local_1b0 = local_f0; + if (lStack_e8 != 0) { + piVar25 = (int *)(lStack_e8 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + /* try { // try from 002e8f24 to 003e8f27 has its CatchHandler @ 002e9510 */ + Mat::deallocate((Mat *)&local_120); + } + } + /* try { // try from 002e865c to 003e865f has its CatchHandler @ 002e947c */ + lStack_e8 = 0; + /* try { // try from 002e8664 to 003e8667 has its CatchHandler @ 002e948c */ + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + /* try { // try from 002e8680 to 003e8683 has its CatchHandler @ 002e9384 */ + iVar15 = 0; + do { + *(undefined4 *)local_e0 = 0; + iVar15 = iVar15 + 1; + local_e0 = (Mat **)((long)local_e0 + 4); + } while (iVar15 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 002e86c8 to 003e8723 has its CatchHandler @ 002e9510 */ + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < local_5c) { + iVar15 = 0; + puVar22 = local_20; + do { + *(undefined4 *)puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar15 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + } + /* try { // try from 002e8728 to 003e872b has its CatchHandler @ 002e92e0 */ + local_c0 = 0x1010000; + local_b0 = 0; + local_50 = 0; + local_60 = 0x3010000; + local_b8 = (Mat *)&local_240; + local_58 = (Mat *)&local_1e0; + calcCovarMatrix((_InputArray *)&local_c0,param_2,(_InputOutputArray *)&local_60, + param_4 & 0xffffffe7U | 8,uVar2); + if ((param_4 & 2U) != 0) goto LAB_002e88f8; + Mat::reshape((int)(Mat *)&local_1e0,1); + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + /* try { // try from 002e8794 to 003e8797 has its CatchHandler @ 002e9318 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar25 = (int *)(lStack_1a8 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + plVar14 = local_78; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + /* try { // try from 002e87e0 to 003e87e3 has its CatchHandler @ 002e92e8 */ + if (local_1e0._4_4_ < 1) { +LAB_002e8810: + if (2 < local_bc) goto LAB_002e8d94; + local_1e0 = CONCAT44(local_bc,local_c0); + pMStack_1d8 = local_b8; + *local_198 = *local_78; + local_198[1] = plVar14[1]; + } + else { + /* try { // try from 002e87e8 to 003e87eb has its CatchHandler @ 002e9318 */ + iVar15 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e8810; +LAB_002e8d94: + local_1e0 = CONCAT44(local_1e0._4_4_,local_c0); + /* try { // try from 002e8d98 to 003e8df3 has its CatchHandler @ 002e9510 */ + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_c0); + } + /* try { // try from 002e8854 to 003e88af has its CatchHandler @ 002e9510 */ + uStack_1c8 = uStack_a8; + local_1d0 = local_b0; + uStack_1b8 = uStack_98; + local_1c0 = local_a0; + lStack_1a8 = lStack_88; + local_1b0 = local_90; + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + /* try { // try from 002e88b4 to 003e88b7 has its CatchHandler @ 002e94d0 */ + uStack_a8 = 0; + if (0 < local_bc) { + iVar15 = 0; + do { + *(undefined4 *)local_80 = 0; + iVar15 = iVar15 + 1; + local_80 = (Mat **)((long)local_80 + 4); + } while (iVar15 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::copyTo((Mat *)&local_1e0,(_OutputArray *)param_3); +LAB_002e88f8: + if (lStack_1a8 != 0) { + piVar25 = (int *)(lStack_1a8 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + /* try { // try from 002e8920 to 003e8923 has its CatchHandler @ 002e9404 */ + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar15 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + /* try { // try from 002e896c to 003e896f has its CatchHandler @ 002e93f4 */ + if (local_208 != 0) { + /* try { // try from 002e8974 to 003e8977 has its CatchHandler @ 002e9404 */ + piVar25 = (int *)(local_208 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + /* try { // try from 002e8990 to 003e8993 has its CatchHandler @ 002e93bc */ + local_208 = 0; + local_230 = 0; + local_218 = 0; + local_220 = 0; + local_228 = 0; + if (0 < local_240._4_4_) { + iVar15 = 0; + ppMVar20 = local_200; + do { + *(undefined4 *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_240._4_4_); + } + pMVar23 = local_258; + pMVar26 = local_250; + pMVar5 = local_250; + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + pMVar23 = local_258; + pMVar26 = local_250; + pMVar5 = local_250; + } + for (; pMVar13 = local_250, pMVar23 != local_250; pMVar23 = pMVar23 + 0x60) { + local_250 = pMVar5; + if (*(long *)(pMVar23 + 0x38) != 0) { + piVar25 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate(pMVar23); + } + } + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) { + /* try { // try from 002e8a38 to 003e8a3b has its CatchHandler @ 002e94cc */ + iVar15 = 0; + puVar24 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar24 = 0; + iVar15 = iVar15 + 1; + puVar24 = puVar24 + 1; + } while (iVar15 < *(int *)(pMVar23 + 4)); + } + if (*(Mat **)(pMVar23 + 0x48) != pMVar23 + 0x50) { + fastFree(*(Mat **)(pMVar23 + 0x48)); + } + pMVar26 = local_258; + pMVar5 = local_250; + local_250 = pMVar13; + } + if (pMVar26 != (Mat *)0x0) { + local_250 = pMVar5; + operator_delete(pMVar26); + return; + } + s_src_size___>_0_00469650[0] = (char)s_src_size___>_0_00469650._0_8_; + s_src_size___>_0_00469650[1] = SUB81(s_src_size___>_0_00469650._0_8_,1); + s_src_size___>_0_00469650[2] = SUB81(s_src_size___>_0_00469650._0_8_,2); + s_src_size___>_0_00469650[3] = SUB81(s_src_size___>_0_00469650._0_8_,3); + s_src_size___>_0_00469650[4] = SUB81(s_src_size___>_0_00469650._0_8_,4); + s_src_size___>_0_00469650[5] = SUB81(s_src_size___>_0_00469650._0_8_,5); + s_src_size___>_0_00469650[6] = SUB81(s_src_size___>_0_00469650._0_8_,6); + s_src_size___>_0_00469650[7] = SUB81(s_src_size___>_0_00469650._0_8_,7); + s_src_size___>_0_00469650[8] = (char)s_src_size___>_0_00469650._8_4_; + s_src_size___>_0_00469650[9] = SUB41(s_src_size___>_0_00469650._8_4_,1); + s_src_size___>_0_00469650[10] = SUB41(s_src_size___>_0_00469650._8_4_,2); + s_src_size___>_0_00469650[0xb] = SUB41(s_src_size___>_0_00469650._8_4_,3); + s_src_size___>_0_00469650[0xc] = (char)s_src_size___>_0_00469650._12_2_; + s_src_size___>_0_00469650[0xd] = SUB21(s_src_size___>_0_00469650._12_2_,1); + s____type_00469688[0] = (char)s____type_00469688._0_8_; + s____type_00469688[1] = SUB81(s____type_00469688._0_8_,1); + s____type_00469688[2] = SUB81(s____type_00469688._0_8_,2); + s____type_00469688[3] = SUB81(s____type_00469688._0_8_,3); + s____type_00469688[4] = SUB81(s____type_00469688._0_8_,4); + s____type_00469688[5] = SUB81(s____type_00469688._0_8_,5); + s____type_00469688[6] = SUB81(s____type_00469688._0_8_,6); + s____type_00469688[7] = SUB81(s____type_00469688._0_8_,7); + s__mean_size______size_00469698[0] = (char)s__mean_size______size_00469698._0_8_; + s__mean_size______size_00469698[1] = SUB81(s__mean_size______size_00469698._0_8_,1); + s__mean_size______size_00469698[2] = SUB81(s__mean_size______size_00469698._0_8_,2); + s__mean_size______size_00469698[3] = SUB81(s__mean_size______size_00469698._0_8_,3); + s__mean_size______size_00469698[4] = SUB81(s__mean_size______size_00469698._0_8_,4); + s__mean_size______size_00469698[5] = SUB81(s__mean_size______size_00469698._0_8_,5); + s__mean_size______size_00469698[6] = SUB81(s__mean_size______size_00469698._0_8_,6); + s__mean_size______size_00469698[7] = SUB81(s__mean_size______size_00469698._0_8_,7); + s__mean_size______size_00469698[8] = (char)s__mean_size______size_00469698._8_8_; + s__mean_size______size_00469698[9] = SUB81(s__mean_size______size_00469698._8_8_,1); + s__mean_size______size_00469698[10] = SUB81(s__mean_size______size_00469698._8_8_,2); + s__mean_size______size_00469698[0xb] = SUB81(s__mean_size______size_00469698._8_8_,3); + s__mean_size______size_00469698[0xc] = SUB81(s__mean_size______size_00469698._8_8_,4); + s__mean_size______size_00469698[0xd] = SUB81(s__mean_size______size_00469698._8_8_,5); + s__mean_size______size_00469698[0xe] = SUB81(s__mean_size______size_00469698._8_8_,6); + s__mean_size______size_00469698[0xf] = SUB81(s__mean_size______size_00469698._8_8_,7); + s__mean_size______size_00469698[0x10] = (char)s__mean_size______size_00469698._16_4_; + s__mean_size______size_00469698[0x11] = SUB41(s__mean_size______size_00469698._16_4_,1); + s__mean_size______size_00469698[0x12] = SUB41(s__mean_size______size_00469698._16_4_,2); + s__mean_size______size_00469698[0x13] = SUB41(s__mean_size______size_00469698._16_4_,3); + s_mean_size______size_004696f0[0] = (char)s_mean_size______size_004696f0._0_8_; + s_mean_size______size_004696f0[1] = SUB81(s_mean_size______size_004696f0._0_8_,1); + s_mean_size______size_004696f0[2] = SUB81(s_mean_size______size_004696f0._0_8_,2); + s_mean_size______size_004696f0[3] = SUB81(s_mean_size______size_004696f0._0_8_,3); + s_mean_size______size_004696f0[4] = SUB81(s_mean_size______size_004696f0._0_8_,4); + s_mean_size______size_004696f0[5] = SUB81(s_mean_size______size_004696f0._0_8_,5); + s_mean_size______size_004696f0[6] = SUB81(s_mean_size______size_004696f0._0_8_,6); + s_mean_size______size_004696f0[7] = SUB81(s_mean_size______size_004696f0._0_8_,7); + s_mean_size______size_004696f0[8] = (char)s_mean_size______size_004696f0._8_8_; + s_mean_size______size_004696f0[9] = SUB81(s_mean_size______size_004696f0._8_8_,1); + s_mean_size______size_004696f0[10] = SUB81(s_mean_size______size_004696f0._8_8_,2); + s_mean_size______size_004696f0[0xb] = SUB81(s_mean_size______size_004696f0._8_8_,3); + s_mean_size______size_004696f0[0xc] = SUB81(s_mean_size______size_004696f0._8_8_,4); + s_mean_size______size_004696f0[0xd] = SUB81(s_mean_size______size_004696f0._8_8_,5); + s_mean_size______size_004696f0[0xe] = SUB81(s_mean_size______size_004696f0._8_8_,6); + s_mean_size______size_004696f0[0xf] = SUB81(s_mean_size______size_004696f0._8_8_,7); + s_mean_size______size_004696f0[0x10] = (char)s_mean_size______size_004696f0._16_2_; + s_mean_size______size_004696f0[0x11] = SUB21(s_mean_size______size_004696f0._16_2_,1); + s_data____nsamples_>_0_00469708[8] = (char)s_data____nsamples_>_0_00469708._8_8_; + s_data____nsamples_>_0_00469708[9] = SUB81(s_data____nsamples_>_0_00469708._8_8_,1); + s_data____nsamples_>_0_00469708[10] = SUB81(s_data____nsamples_>_0_00469708._8_8_,2); + s_data____nsamples_>_0_00469708[0xb] = SUB81(s_data____nsamples_>_0_00469708._8_8_,3); + s_data____nsamples_>_0_00469708[0xc] = SUB81(s_data____nsamples_>_0_00469708._8_8_,4); + s_data____nsamples_>_0_00469708[0xd] = SUB81(s_data____nsamples_>_0_00469708._8_8_,5); + s_data____nsamples_>_0_00469708[0xe] = SUB81(s_data____nsamples_>_0_00469708._8_8_,6); + s_data____nsamples_>_0_00469708[0xf] = SUB81(s_data____nsamples_>_0_00469708._8_8_,7); + s_data____nsamples_>_0_00469708[0x10] = (char)s_data____nsamples_>_0_00469708._16_4_; + s_data____nsamples_>_0_00469708[0x11] = SUB41(s_data____nsamples_>_0_00469708._16_4_,1); + s_data____nsamples_>_0_00469708[0x12] = SUB41(s_data____nsamples_>_0_00469708._16_4_,2); + s_data____nsamples_>_0_00469708[0x13] = SUB41(s_data____nsamples_>_0_00469708._16_4_,3); + return; + } + iVar15 = _InputArray::kind(param_1); + if (iVar15 == 0x10000) { + pMVar23 = *(Mat **)(param_1 + 8); + /* try { // try from 002e7d08 to 003e7d0b has its CatchHandler @ 002e7bb0 */ + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar23; + local_50 = *(long *)(pMVar23 + 0x10); + local_5c = *(int *)(pMVar23 + 4); + local_58 = *(Mat **)(pMVar23 + 8); + lStack_48 = *(long *)(pMVar23 + 0x18); + local_40 = *(long *)(pMVar23 + 0x20); + lStack_38 = *(long *)(pMVar23 + 0x28); + local_30 = *(undefined8 *)(pMVar23 + 0x30); + lStack_28 = *(long *)(pMVar23 + 0x38); + local_8 = 0; + local_10 = 0; + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_10 = **(long **)(pMVar23 + 0x48); + local_8 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar23); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_138 = &local_130; + local_140 = &pMStack_178; + uVar2 = (uint)param_4 >> 3 & 1; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + uStack_158 = 0; + local_150 = 0; + pMStack_178 = _UNK_002e94d8; + local_180 = _DAT_002e94d0; + lStack_148 = 0; + lStack_128 = 0; + local_130 = 0; + if (uVar2 == ((uint)param_4 >> 4 & 1)) { + local_258 = (Mat *)0x0; + local_250 = (Mat *)0x0; + __dest = (void *)String::allocate((String *)&local_258,0x3f); + /* try { // try from 002e8d48 to 003e8d4b has its CatchHandler @ 002e9494 */ + memcpy(__dest,"((flags & CV_COVAR_ROWS) != 0) ^ ((flags & CV_COVAR_COLS) != 0)",0x3f); + error(-0xd7,(String *)&local_258, + "void cv::calcCovarMatrix(cv::InputArray, cv::OutputArray, cv::InputOutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x994); + String::deallocate((String *)&local_258); + } + uVar28 = local_60; + if (uVar2 == 0) { + iVar15 = local_58._4_4_; + if (local_58._4_4_ < 1) { +LAB_002e8cb8: + local_240 = 0; + pMStack_238 = (Mat *)0x0; + pcVar21 = (char *)String::allocate((String *)&local_240,0xc); + uVar6 = s_data____nsamples_>_0_00469708._16_4_; + /* try { // try from 002e8cd8 to 003e8cdb has its CatchHandler @ 002e92cc */ + *(undefined8 *)pcVar21 = s_data____nsamples_>_0_00469708._8_8_; + *(undefined4 *)(pcVar21 + 8) = uVar6; + error(-0xd7,(String *)&local_240, + "void cv::calcCovarMatrix(cv::InputArray, cv::OutputArray, cv::InputOutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x998); + String::deallocate((String *)&local_240); + if (uVar2 != 0) { + /* try { // try from 002e8d24 to 003e8d27 has its CatchHandler @ 002e929c */ + goto LAB_002e78b4; + } + /* try { // try from 002e8d2c to 003e8d2f has its CatchHandler @ 002e92cc */ + } + iVar29 = 1; + iVar16 = (int)local_58; + } + else { + iVar15 = (int)local_58; + if ((int)local_58 < 1) goto LAB_002e8cb8; +LAB_002e78b4: + /* try { // try from 002e78bc to 003e78bf has its CatchHandler @ 002e7890 */ + iVar16 = 1; + iVar29 = local_58._4_4_; + } + if (((uint)param_4 >> 1 & 1) != 0) { + /* try { // try from 002e78c4 to 003e78c7 has its CatchHandler @ 002e7ba8 */ + iVar18 = _InputArray::kind((_InputArray *)param_3); + if (iVar18 == 0x10000) { + local_e0 = &local_118; + local_d8 = &local_d0; + pMVar23 = *(Mat **)(param_3 + 8); + local_120 = *(undefined4 *)pMVar23; + local_110 = *(undefined8 *)(pMVar23 + 0x10); + local_11c = *(int *)(pMVar23 + 4); + local_118 = *(Mat **)(pMVar23 + 8); + uStack_108 = *(undefined8 *)(pMVar23 + 0x18); + local_100 = *(undefined8 *)(pMVar23 + 0x20); + uStack_f8 = *(undefined8 *)(pMVar23 + 0x28); + local_f0 = *(undefined8 *)(pMVar23 + 0x30); + lStack_e8 = *(long *)(pMVar23 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (lStack_e8 != 0) { + piVar25 = (int *)(lStack_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + /* try { // try from 002e8c6c to 003e8c6f has its CatchHandler @ 002e94c8 */ + if (*(int *)(pMVar23 + 4) < 3) { + local_d0 = **(long **)(pMVar23 + 0x48); + local_c8 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar23); + } + } + else { + _InputArray::getMat_(iVar17); + } + if (lStack_e8 != 0) { + piVar25 = (int *)(lStack_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + iVar18 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + plVar14 = local_d8; + lStack_148 = 0; + /* try { // try from 002e7930 to 003e7933 has its CatchHandler @ 002e7ba0 */ + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_002e7974: + /* try { // try from 002e797c to 003e797f has its CatchHandler @ 002e7b90 */ + if (2 < local_11c) goto LAB_002e8ca4; + /* try { // try from 002e7984 to 003e7987 has its CatchHandler @ 002e7ba0 */ + local_180 = CONCAT44(local_11c,local_120); + pMStack_178 = local_118; + /* try { // try from 002e79a0 to 003e79a3 has its CatchHandler @ 002e7b4c */ + *local_138 = *local_d8; + local_138[1] = plVar14[1]; + } + else { + iVar18 = 0; + ppMVar20 = local_140; + do { + *(int *)ppMVar20 = 0; + iVar18 = iVar18 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar18 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_002e7974; +LAB_002e8ca4: + local_180 = CONCAT44(local_180._4_4_,local_120); + Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_168 = uStack_108; + local_170 = local_110; + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + if (lStack_e8 != 0) { + piVar25 = (int *)(lStack_e8 + 0x14); + do { + /* try { // try from 002e79e8 to 003e79eb has its CatchHandler @ 002e7890 */ + iVar18 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar18 = 0; + ppMVar20 = local_e0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar18 = iVar18 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar18 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (param_5 < 0) { + param_5 = uVar28; + } + uVar28 = param_5 & 7U; + if ((param_5 & 7U) < ((uint)local_180 & 7)) { + uVar28 = (uint)local_180 & 7; + } + if (uVar28 < 5) { + uVar28 = 5; + } + if ((*(int *)((long)local_140 + 4) != iVar29) || (*(int *)local_140 != iVar16)) { + local_1e0 = 0; + pMStack_1d8 = (Mat *)0x0; + pcVar21 = (char *)String::allocate((String *)&local_1e0,0x13); + cVar3 = s_mean_size______size_004696f0[0x12]; + uVar9 = s_mean_size______size_004696f0._8_8_; + uVar8 = s_mean_size______size_004696f0._0_8_; + *(undefined2 *)(pcVar21 + 0x10) = s_mean_size______size_004696f0._16_2_; + pcVar21[0x12] = cVar3; + *(undefined8 *)pcVar21 = uVar8; + *(undefined8 *)(pcVar21 + 8) = uVar9; + error(-0xd7,(String *)&local_1e0, + "void cv::calcCovarMatrix(cv::InputArray, cv::OutputArray, cv::InputOutputArray, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x99f); + String::deallocate((String *)&local_1e0); + } + /* try { // try from 002e7b08 to 003e7b43 has its CatchHandler @ 002e7b4c */ + if (((uint)local_180 & 0xfff) == uVar28) goto LAB_002e7728; + local_bc = *(int *)local_140; + local_c0 = *(int *)((long)local_140 + 4); + _OutputArray::create((_OutputArray *)param_3,(Mat *)&local_c0,uVar28,0xffffffff,0,0); + /* catch() { ... } // from try @ 002e79a0 with catch @ 002e7b4c + catch() { ... } // from try @ 002e7b08 with catch @ 002e7b4c */ + iVar16 = _InputArray::kind((_InputArray *)param_3); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_3 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(int *)pMVar23; + local_b0 = *(undefined8 *)(pMVar23 + 0x10); + local_bc = *(int *)(pMVar23 + 4); + local_b8 = *(Mat **)(pMVar23 + 8); + uStack_a8 = *(undefined8 *)(pMVar23 + 0x18); + local_a0 = *(undefined8 *)(pMVar23 + 0x20); + uStack_98 = *(undefined8 *)(pMVar23 + 0x28); + local_90 = *(undefined8 *)(pMVar23 + 0x30); + lStack_88 = *(long *)(pMVar23 + 0x38); + local_68 = 0; + local_70 = 0; + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_70 = **(long **)(pMVar23 + 0x48); + local_68 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar23); + } + } + else { + _InputArray::getMat_(iVar17); + } + local_110 = 0; + local_120 = 0x2010000; + local_118 = (Mat *)&local_c0; + /* try { // try from 002e7b8c to 003e7b8f has its CatchHandler @ 002e7890 */ + /* catch() { ... } // from try @ 002e797c with catch @ 002e7b90 */ + Mat::convertTo((Mat *)&local_180,(_OutputArray *)&local_120,uVar28,1.0,0.0); + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + /* catch() { ... } // from try @ 002e7930 with catch @ 002e7ba0 + catch() { ... } // from try @ 002e7984 with catch @ 002e7ba0 */ + /* catch() { ... } // from try @ 002e78c4 with catch @ 002e7ba8 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + /* catch() { ... } // from try @ 002e7bdc with catch @ 002e7bb0 + catch() { ... } // from try @ 002e7d08 with catch @ 002e7bb0 + catch() { ... } // from try @ 002e7eac with catch @ 002e7bb0 */ + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + iVar17 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar17 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + plVar14 = local_78; + lStack_148 = 0; + /* try { // try from 002e7bdc to 003e7bdf has its CatchHandler @ 002e7bb0 */ + local_170 = 0; + /* try { // try from 002e7be4 to 003e7be7 has its CatchHandler @ 002e7ec8 */ + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_002e7c20: + if (2 < local_bc) goto LAB_002e8e10; + local_180 = CONCAT44(local_bc,local_c0); + pMStack_178 = local_b8; + *local_138 = *local_78; + /* try { // try from 002e7c50 to 003e7c53 has its CatchHandler @ 002e7ec0 */ + local_138[1] = plVar14[1]; + } + else { + iVar17 = 0; + ppMVar20 = local_140; + do { + *(int *)ppMVar20 = 0; + iVar17 = iVar17 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar17 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_002e7c20; +LAB_002e8e10: + local_180 = CONCAT44(local_180._4_4_,local_c0); + Mat::copySize((Mat *)&local_180,(Mat *)&local_c0); + } + uStack_168 = uStack_a8; + local_170 = local_b0; + uStack_158 = uStack_98; + local_160 = local_a0; + lStack_148 = lStack_88; + local_150 = local_90; + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + iVar17 = *piVar25; + /* try { // try from 002e7c9c to 003e7c9f has its CatchHandler @ 002e7eb0 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar17 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 002e7ca4 to 003e7ca7 has its CatchHandler @ 002e7ec0 */ + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + /* try { // try from 002e7cc0 to 003e7cc3 has its CatchHandler @ 002e7e6c */ + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar17 = 0; + ppMVar20 = local_80; + do { + *(undefined4 *)ppMVar20 = 0; + iVar17 = iVar17 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar17 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + goto LAB_002e7728; + } + if (-1 < param_5) { + uVar28 = param_5; + } + uVar28 = uVar28 & 7; + if (uVar28 < 5) { + uVar28 = 5; + } + reduce(param_1,(_OutputArray *)param_3,uVar2 ^ 1,1,uVar28); + iVar16 = _InputArray::kind((_InputArray *)param_3); + if (iVar16 == 0x10000) { + pMVar23 = *(Mat **)(param_3 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(int *)pMVar23; + local_b0 = *(undefined8 *)(pMVar23 + 0x10); + local_bc = *(int *)(pMVar23 + 4); + local_b8 = *(Mat **)(pMVar23 + 8); + /* try { // try from 002e8af0 to 003e8af3 has its CatchHandler @ 002e94d4 */ + /* try { // try from 002e8af8 to 003e8afb has its CatchHandler @ 002e94e4 */ + uStack_a8 = *(undefined8 *)(pMVar23 + 0x18); + local_a0 = *(undefined8 *)(pMVar23 + 0x20); + uStack_98 = *(undefined8 *)(pMVar23 + 0x28); + local_90 = *(undefined8 *)(pMVar23 + 0x30); + /* try { // try from 002e8b14 to 003e8b17 has its CatchHandler @ 002e9204 */ + lStack_88 = *(long *)(pMVar23 + 0x38); + local_68 = 0; + local_70 = 0; + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar23 + 4) < 3) { + local_70 = **(long **)(pMVar23 + 0x48); + /* try { // try from 002e8b64 to 003e8c67 has its CatchHandler @ 002e9510 */ + local_68 = (*(long **)(pMVar23 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar23); + } + } + else { + _InputArray::getMat_(iVar17); + } + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = *piVar25 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + iVar17 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar17 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + plVar14 = local_78; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + /* try { // try from 002e7630 to 003e7633 has its CatchHandler @ 002e77f4 */ + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_002e7668: + if (2 < local_bc) goto LAB_002e7674; + local_180 = CONCAT44(local_bc,local_c0); + pMStack_178 = local_b8; + *local_138 = *local_78; + local_138[1] = plVar14[1]; + } + else { + iVar17 = 0; + ppMVar20 = local_140; + do { + *(int *)ppMVar20 = 0; + iVar17 = iVar17 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar17 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_002e7668; +LAB_002e7674: + local_180 = CONCAT44(local_180._4_4_,local_c0); + Mat::copySize((Mat *)&local_180,(Mat *)&local_c0); + } + /* try { // try from 002e76a4 to 003e76a7 has its CatchHandler @ 002e7838 */ + uStack_168 = uStack_a8; + local_170 = local_b0; + uStack_158 = uStack_98; + local_160 = local_a0; + lStack_148 = lStack_88; + local_150 = local_90; + if (lStack_88 != 0) { + piVar25 = (int *)(lStack_88 + 0x14); + do { + iVar17 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar17 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar17 = 0; + ppMVar20 = local_80; + do { + *(undefined4 *)ppMVar20 = 0; + iVar17 = iVar17 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar17 < local_bc); + } + /* try { // try from 002e7718 to 003e7793 has its CatchHandler @ 002e7360 */ + if (local_78 != &local_70) { + fastFree(local_78); + } +LAB_002e7728: + local_120 = 0x1010000; + local_c0 = 0x1010000; + local_110 = 0; + local_b0 = 0; + dVar31 = 1.0; + if (((uint)param_4 >> 2 & 1) != 0) { + dVar31 = 1.0 / (double)iVar15; + } + local_118 = (Mat *)&local_60; + local_b8 = (Mat *)&local_180; + mulTransposed((_InputArray *)&local_120,param_2,(bool)((byte)uVar2 ^ (byte)param_4 & 1 ^ 1), + (_InputArray *)&local_c0,dVar31,uVar28); + if (lStack_148 != 0) { + piVar25 = (int *)(lStack_148 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e779c to 003e779f has its CatchHandler @ 002e7838 */ + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + /* try { // try from 002e77a8 to 003e77ab has its CatchHandler @ 002e77f4 */ + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + /* try { // try from 002e77c8 to 003e77ef has its CatchHandler @ 002e7870 */ + iVar15 = 0; + ppMVar20 = local_140; + do { + *(int *)ppMVar20 = 0; + iVar15 = iVar15 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar15 < local_180._4_4_); + } + if (local_138 != &local_130) { + /* catch() { ... } // from try @ 002e7630 with catch @ 002e77f4 + catch() { ... } // from try @ 002e77a8 with catch @ 002e77f4 */ + fastFree(local_138); + } + if (lStack_28 != 0) { + piVar25 = (int *)(lStack_28 + 0x14); + do { + iVar15 = *piVar25; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar4) { + *piVar25 = iVar15 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar15 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + /* try { // try from 002e7834 to 003e7837 has its CatchHandler @ 002e7360 */ + lStack_38 = 0; + /* catch() { ... } // from try @ 002e73c8 with catch @ 002e7838 + catch() { ... } // from try @ 002e76a4 with catch @ 002e7838 + catch() { ... } // from try @ 002e779c with catch @ 002e7838 */ + local_40 = 0; + lStack_48 = 0; + /* catch() { ... } // from try @ 002e749c with catch @ 002e7840 */ + if (0 < local_5c) { + iVar15 = 0; + puVar22 = local_20; + do { + *(undefined4 *)puVar22 = 0; + iVar15 = iVar15 + 1; + puVar22 = (undefined8 *)((long)puVar22 + 4); + } while (iVar15 < local_5c); + } + if (local_18 != &local_10) { + /* catch() { ... } // from try @ 002e7450 with catch @ 002e7870 + catch() { ... } // from try @ 002e74a4 with catch @ 002e7870 + catch() { ... } // from try @ 002e77c8 with catch @ 002e7870 */ + fastFree(local_18); + } + /* catch() { ... } // from try @ 002e78bc with catch @ 002e7890 + catch() { ... } // from try @ 002e79e8 with catch @ 002e7890 + catch() { ... } // from try @ 002e7b8c with catch @ 002e7890 */ + return; +} + + +================================================================== + +### FUNC 002e94e0 (3052 bytes) name=calcCovarMatrix + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::calcCovarMatrix(cv::Mat const*, int, cv::Mat&, cv::Mat&, int, int) */ + +void cv::calcCovarMatrix(Mat *param_1,int param_2,Mat *param_3,Mat *param_4,int param_5,int param_6) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + int iVar11; + int iVar12; + uint uVar13; + int iVar14; + char *pcVar15; + long *plVar16; + undefined8 *puVar17; + uint uVar18; + undefined4 *puVar19; + Mat **ppMVar20; + long lVar21; + int iVar22; + int iVar23; + int iVar24; + long lVar25; + int iVar26; + int local_208; + int local_204; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 local_1e0; + Mat *pMStack_1d8; + ulong local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + Mat **local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + ulong local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined4 local_120; + int local_11c; + Mat *local_118; + ulong local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + Mat *pMStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + Mat **local_80; + long *local_78; + long local_70 [2]; + undefined8 local_60; + undefined8 local_58; + long local_50; + long lStack_48; + long local_40; + long lStack_38; + undefined8 local_30; + long lStack_28; + undefined8 *local_20; + long *local_18; + long local_10; + long local_8; + + /* catch() { ... } // from try @ 002e8aa4 with catch @ 002e94e4 + catch() { ... } // from try @ 002e8af8 with catch @ 002e94e4 */ + /* catch() { ... } // from try @ 002e804c with catch @ 002e94ec */ + /* catch() { ... } // from try @ 002e7fc8 with catch @ 002e9500 */ + /* catch() { ... } // from try @ 002e7f7c with catch @ 002e9510 + catch() { ... } // from try @ 002e7fd0 with catch @ 002e9510 + catch() { ... } // from try @ 002e8054 with catch @ 002e9510 + catch() { ... } // from try @ 002e80b8 with catch @ 002e9510 + catch() { ... } // from try @ 002e819c with catch @ 002e9510 + catch() { ... } // from try @ 002e82d0 with catch @ 002e9510 + catch() { ... } // from try @ 002e852c with catch @ 002e9510 + catch() { ... } // from try @ 002e859c with catch @ 002e9510 + catch() { ... } // from try @ 002e86c8 with catch @ 002e9510 + catch() { ... } // from try @ 002e8854 with catch @ 002e9510 + catch() { ... } // from try @ 002e89e0 with catch @ 002e9510 + catch() { ... } // from try @ 002e8b64 with catch @ 002e9510 + catch() { ... } // from try @ 002e8d98 with catch @ 002e9510 + catch() { ... } // from try @ 002e8f24 with catch @ 002e9510 */ + /* catch() { ... } // from try @ 002e80b0 with catch @ 002e9518 */ + /* catch() { ... } // from try @ 002e9574 with catch @ 002e9530 + catch() { ... } // from try @ 002e989c with catch @ 002e9530 + catch() { ... } // from try @ 002e99a4 with catch @ 002e9530 + catch() { ... } // from try @ 002e9bf0 with catch @ 002e9530 + catch() { ... } // from try @ 002e9d30 with catch @ 002e9530 */ + if ((param_1 == (Mat *)0x0) || (param_2 < 1)) { + local_60 = 0; + local_58 = (Mat *)0x0; + pcVar15 = (char *)String::allocate((String *)&local_60,0x14); + uVar7 = s_data____nsamples_>_0_00469708._8_8_; + uVar6 = s_data____nsamples_>_0_00469708._0_8_; + /* try { // try from 002e9fa0 to 003e9ff7 has its CatchHandler @ 002ea180 */ + *(undefined4 *)(pcVar15 + 0x10) = s_data____nsamples_>_0_00469708._16_4_; + *(undefined8 *)pcVar15 = uVar6; + *(undefined8 *)(pcVar15 + 8) = uVar7; + error(-0xd7,(String *)&local_60, + "void cv::calcCovarMatrix(const cv::Mat*, int, cv::Mat&, cv::Mat&, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x93a); + String::deallocate((String *)&local_60); + iVar26 = *(int *)(param_1 + 4); + iVar22 = (*(int **)(param_1 + 0x40))[1]; + iVar24 = **(int **)(param_1 + 0x40); + iVar23 = iVar22 * iVar24; + if (0 < iVar26) goto LAB_002e9554; +LAB_002e9ff4: + iVar26 = 0; + } + else { + iVar26 = *(int *)(param_1 + 4); + iVar22 = (*(int **)(param_1 + 0x40))[1]; + iVar24 = **(int **)(param_1 + 0x40); + iVar23 = iVar22 * iVar24; + if (iVar26 < 1) goto LAB_002e9ff4; +LAB_002e9554: + iVar26 = *(int *)(*(long *)(param_1 + 0x48) + (long)iVar26 * 8 + -8); + } + uVar13 = *(uint *)param_1; + uVar2 = uVar13; + /* try { // try from 002e9574 to 003e9597 has its CatchHandler @ 002e9530 */ + if (-1 < param_6) { + uVar2 = param_6; + } + uVar18 = *(uint *)param_4; + local_198 = &local_190; + local_1d0 = 0; + uStack_188 = 0; + local_190 = 0; + uVar3 = uVar2 & 7; + if ((uVar2 & 7) < (uVar18 & 7)) { + uVar3 = uVar18 & 7; + } + uVar2 = uVar13 & 0xfff; + local_1a0 = &pMStack_1d8; + pMStack_1d8 = _UNK_002ea1f8; + local_1e0 = _DAT_002ea1f0; + if (uVar3 < 5) { + uVar3 = 5; + } + uStack_1c8 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + /* try { // try from 002e95e8 to 003e95eb has its CatchHandler @ 002e9d44 */ + local_1b0 = 0; + lStack_1a8 = 0; + iVar11 = (int)(Mat *)&local_1e0; + if (((uint)param_5 >> 1 & 1) != 0) { + if ((iVar22 != (*(int **)(param_4 + 0x40))[1]) || (iVar24 != **(int **)(param_4 + 0x40))) { + local_200 = 0; + local_1f8 = 0; + pcVar15 = (char *)String::allocate((String *)&local_200,0x14); + uVar7 = s__mean_size______size_00469698._8_8_; + uVar6 = s__mean_size______size_00469698._0_8_; + /* try { // try from 002e9634 to 003e9637 has its CatchHandler @ 002e9d34 */ + /* try { // try from 002e963c to 003e963f has its CatchHandler @ 002e9d44 */ + *(undefined4 *)(pcVar15 + 0x10) = s__mean_size______size_00469698._16_4_; + *(undefined8 *)pcVar15 = uVar6; + *(undefined8 *)(pcVar15 + 8) = uVar7; + error(-0xd7,(String *)&local_200, + "void cv::calcCovarMatrix(const cv::Mat*, int, cv::Mat&, cv::Mat&, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x943); + String::deallocate((String *)&local_200); + /* try { // try from 002e967c to 003e976b has its CatchHandler @ 002e9c94 */ + uVar18 = *(uint *)param_4; + } + if (((uVar18 >> 0xe & 1) == 0) || ((uVar18 & 0xfff) != uVar3)) { + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + local_58 = (Mat *)&local_1e0; + Mat::convertTo(param_4,(_OutputArray *)&local_60,uVar3,1.0,0.0); + Mat::reshape(iVar11,1); + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + puVar17 = local_d8; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002e9754: + if (2 < local_11c) goto LAB_002e9760; + pMStack_1d8 = local_118; + local_1e0 = CONCAT44(local_11c,local_120); + *local_198 = *local_d8; + local_198[1] = puVar17[1]; + } + else { + iVar12 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar12 = iVar12 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar12 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e9754; +LAB_002e9760: + local_1e0 = CONCAT44(local_1e0._4_4_,local_120); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_120); + } + /* try { // try from 002e9794 to 003e9797 has its CatchHandler @ 002e9da0 */ + uStack_1b8 = uStack_f8; + local_1c0 = local_100; + lStack_1a8 = lStack_e8; + local_1b0 = local_f0; + /* try { // try from 002e979c to 003e979f has its CatchHandler @ 002e9c94 */ + uStack_1c8 = uStack_108; + local_1d0 = local_110; + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + } + else { + Mat::reshape((int)param_4,1); + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + puVar17 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + /* catch() { ... } // from try @ 002e9ee8 with catch @ 002e9e60 + catch() { ... } // from try @ 002ea110 with catch @ 002e9e60 + catch() { ... } // from try @ 002ea17c with catch @ 002e9e60 */ + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_002e9ea0: + if (2 < local_17c) goto LAB_002e9eac; + pMStack_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar17[1]; + } + else { + iVar12 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar12 = iVar12 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar12 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_002e9ea0; +LAB_002e9eac: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + /* try { // try from 002e9ee8 to 003e9eeb has its CatchHandler @ 002e9e60 */ + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + /* try { // try from 002e9f0c to 003e9f0f has its CatchHandler @ 002ea158 */ + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar12 = 0; + do { + *local_140 = 0; + iVar12 = iVar12 + 1; + local_140 = local_140 + 1; + } while (iVar12 < local_17c); + } + if (local_138 != auStack_130) { + fastFree(local_138); + /* try { // try from 002e9f5c to 003e9f5f has its CatchHandler @ 002ea1d0 */ + } + } + } + local_78 = local_70; + local_80 = &pMStack_b8; + local_b0 = 0; + pMStack_b8 = _UNK_002ea1f8; + local_c0 = _DAT_002ea1f0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_70[1] = 0; + local_70[0] = 0; + local_208 = param_2; + local_204 = iVar23; + Mat::create((Mat *)&local_c0,2,&local_208,uVar2); + if (0 < param_2) { + iVar12 = (uVar13 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3); + /* try { // try from 002e989c to 003e989f has its CatchHandler @ 002e9530 */ + lVar25 = (long)iVar12 * (long)iVar22; + lVar21 = 0; + do { + while( true ) { + if (((iVar22 != (*(int **)(param_1 + 0x40))[1]) || (iVar24 != **(int **)(param_1 + 0x40))) + || (uVar13 = *(uint *)param_1, uVar2 != (uVar13 & 0xfff))) { + local_1f0 = 0; + /* try { // try from 002e9930 to 003e9933 has its CatchHandler @ 002e9c94 */ + local_1e8 = 0; + pcVar15 = (char *)String::allocate((String *)&local_1f0,0x30); + uVar10 = s_data_i__size______size____data_i_00469720._40_8_; + uVar9 = s_data_i__size______size____data_i_00469720._32_8_; + uVar8 = s_data_i__size______size____data_i_00469720._24_8_; + uVar7 = s_data_i__size______size____data_i_00469720._16_8_; + uVar6 = s_data_i__size______size____data_i_00469720._8_8_; + /* try { // try from 002e9960 to 003e9963 has its CatchHandler @ 002e9d90 */ + /* try { // try from 002e9968 to 003e996b has its CatchHandler @ 002e9c94 */ + *(undefined8 *)pcVar15 = s_data_i__size______size____data_i_00469720._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + *(undefined8 *)(pcVar15 + 0x20) = uVar9; + *(undefined8 *)(pcVar15 + 0x28) = uVar10; + error(-0xd7,(String *)&local_1f0, + "void cv::calcCovarMatrix(const cv::Mat*, int, cv::Mat&, cv::Mat&, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0x951); + String::deallocate((String *)&local_1f0); + uVar13 = *(uint *)param_1; + } + if ((uVar13 >> 0xe & 1) == 0) break; + memcpy((void *)(local_b0 + lVar21 * *local_78),*(void **)(param_1 + 0x10), + (long)(iVar26 * iVar23)); +LAB_002e98f8: + lVar21 = lVar21 + 1; + param_1 = param_1 + 0x60; + if (param_2 <= (int)lVar21) goto LAB_002e9a94; + } + local_18 = &local_10; + /* try { // try from 002e99a4 to 003e99a7 has its CatchHandler @ 002e9530 */ + local_58 = (Mat *)CONCAT44(iVar22,iVar24); + local_50 = local_b0 + lVar21 * *local_78; + local_30 = 0; + lStack_28 = 0; + local_40 = local_50 + lVar25 * iVar24; + local_60 = CONCAT44(2,uVar2 + 0x42ff0000) | 0x4000; + local_110 = CONCAT44(uVar13,uVar13) & 0x400000004000; + local_120 = 0x2010000; + local_118 = (Mat *)&local_60; + lStack_48 = local_50; + lStack_38 = local_40; + local_20 = &local_58; + local_10 = lVar25; + local_8 = (long)iVar12; + Mat::copyTo(param_1,(_OutputArray *)&local_120); + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar14 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_60); + /* catch() { ... } // from try @ 002e9c64 with catch @ 002e9de8 */ + } + } + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < local_60._4_4_) { + iVar14 = 0; + puVar17 = local_20; + do { + *(undefined4 *)puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = (undefined8 *)((long)puVar17 + 4); + } while (iVar14 < local_60._4_4_); + } + if (local_18 == &local_10) goto LAB_002e98f8; + fastFree(local_18); + lVar21 = lVar21 + 1; + param_1 = param_1 + 0x60; + } while ((int)lVar21 < param_2); + } +LAB_002e9a94: + /* try { // try from 002e9aa0 to 003e9b2b has its CatchHandler @ 002e9c94 */ + local_120 = 0x2010000; + local_170 = 0; + local_180 = 0x1010000; + local_110 = 0; + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x3010000); + local_178 = (Mat *)&local_c0; + local_118 = param_3; + local_58 = (Mat *)&local_1e0; + calcCovarMatrix((_InputArray *)&local_180,(_OutputArray *)&local_120, + (_InputOutputArray *)&local_60,param_5 & 0xffffffe7U | 8,uVar3); + if ((param_5 & 2U) != 0) goto LAB_002e9c9c; + Mat::reshape(iVar11,1); + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(param_4 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_4 + 0x38) + 0x14); + do { + iVar26 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar26 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar26 == 1) { + Mat::deallocate(param_4); + } + } + *(undefined8 *)(param_4 + 0x38) = 0; + *(undefined8 *)(param_4 + 0x10) = 0; + *(undefined8 *)(param_4 + 0x28) = 0; + *(undefined8 *)(param_4 + 0x20) = 0; + *(undefined8 *)(param_4 + 0x18) = 0; + if (*(int *)(param_4 + 4) < 1) { + /* try { // try from 002ea09c to 003ea09f has its CatchHandler @ 002ea158 */ + *(undefined4 *)param_4 = (undefined4)local_60; +LAB_002e9bb8: + if (2 < local_60._4_4_) goto LAB_002e9f60; + *(int *)(param_4 + 4) = local_60._4_4_; + plVar16 = *(long **)(param_4 + 0x48); + *(undefined4 *)(param_4 + 8) = (undefined4)local_58; + *(undefined4 *)(param_4 + 0xc) = local_58._4_4_; + *plVar16 = *local_18; + /* try { // try from 002e9bf0 to 003e9bf3 has its CatchHandler @ 002e9530 */ + plVar16[1] = local_18[1]; + } + else { + iVar26 = 0; + puVar19 = *(undefined4 **)(param_4 + 0x40); + do { + *puVar19 = 0; + iVar26 = iVar26 + 1; + /* try { // try from 002e9ba0 to 003e9ba3 has its CatchHandler @ 002e9db4 */ + puVar19 = puVar19 + 1; + } while (iVar26 < *(int *)(param_4 + 4)); + *(undefined4 *)param_4 = (undefined4)local_60; + if (*(int *)(param_4 + 4) < 3) goto LAB_002e9bb8; +LAB_002e9f60: + Mat::copySize(param_4,(Mat *)&local_60); + } + /* try { // try from 002e9c00 to 003e9c03 has its CatchHandler @ 002e9d44 */ + /* try { // try from 002e9c10 to 003e9c13 has its CatchHandler @ 002e9d88 */ + /* try { // try from 002e9c20 to 003e9c23 has its CatchHandler @ 002e9c94 */ + *(long *)(param_4 + 0x18) = lStack_48; + *(long *)(param_4 + 0x10) = local_50; + *(long *)(param_4 + 0x28) = lStack_38; + *(long *)(param_4 + 0x20) = local_40; + *(long *)(param_4 + 0x38) = lStack_28; + *(undefined8 *)(param_4 + 0x30) = local_30; + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + /* try { // try from 002e9c34 to 003e9c37 has its CatchHandler @ 002e9d80 */ + iVar26 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar26 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar26 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + /* try { // try from 002e9c54 to 003e9c57 has its CatchHandler @ 002e9d4c */ + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + /* try { // try from 002e9c64 to 003e9c67 has its CatchHandler @ 002e9de8 */ + lStack_48 = 0; + if (0 < local_60._4_4_) { + iVar26 = 0; + puVar17 = local_20; + do { + *(undefined4 *)puVar17 = 0; + iVar26 = iVar26 + 1; + /* try { // try from 002e9c84 to 003e9c87 has its CatchHandler @ 002e9c94 */ + puVar17 = (undefined8 *)((long)puVar17 + 4); + } while (iVar26 < local_60._4_4_); + } + /* catch() { ... } // from try @ 002e967c with catch @ 002e9c94 + catch() { ... } // from try @ 002e979c with catch @ 002e9c94 + catch() { ... } // from try @ 002e9930 with catch @ 002e9c94 + catch() { ... } // from try @ 002e9968 with catch @ 002e9c94 + catch() { ... } // from try @ 002e9aa0 with catch @ 002e9c94 + catch() { ... } // from try @ 002e9c20 with catch @ 002e9c94 + catch() { ... } // from try @ 002e9c84 with catch @ 002e9c94 */ + if (local_18 != &local_10) { + fastFree(local_18); + } +LAB_002e9c9c: + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar26 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar26 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar26 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar26 = 0; + ppMVar20 = local_80; + do { + *(undefined4 *)ppMVar20 = 0; + iVar26 = iVar26 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar26 < local_c0._4_4_); + } + if (local_78 != local_70) { + fastFree(local_78); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar26 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar26 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002e9d30 to 003e9d33 has its CatchHandler @ 002e9530 */ + } while (cVar4 != '\0'); + /* catch() { ... } // from try @ 002e9634 with catch @ 002e9d34 */ + if (iVar26 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + /* catch() { ... } // from try @ 002e95e8 with catch @ 002e9d44 + catch() { ... } // from try @ 002e963c with catch @ 002e9d44 + catch() { ... } // from try @ 002e9c00 with catch @ 002e9d44 */ + lStack_1a8 = 0; + /* catch() { ... } // from try @ 002e9c54 with catch @ 002e9d4c */ + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar26 = 0; + ppMVar20 = local_1a0; + do { + *(undefined4 *)ppMVar20 = 0; + iVar26 = iVar26 + 1; + ppMVar20 = (Mat **)((long)ppMVar20 + 4); + } while (iVar26 < local_1e0._4_4_); + } + /* catch() { ... } // from try @ 002e9c34 with catch @ 002e9d80 */ + /* catch() { ... } // from try @ 002e9c10 with catch @ 002e9d88 */ + if (local_198 != &local_190) { + /* catch() { ... } // from try @ 002e9960 with catch @ 002e9d90 */ + fastFree(local_198); + } + /* catch() { ... } // from try @ 002e9794 with catch @ 002e9da0 */ + /* catch() { ... } // from try @ 002e9ba0 with catch @ 002e9db4 */ + return; +} + + +================================================================== + +### FUNC 002ea200 (3476 bytes) name=cvCalcCovarMatrix + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvCalcCovarMatrix(undefined8 *param_1,int param_2,cv *param_3,cv *param_4,uint param_5) + +{ + uint uVar1; + int *piVar2; + char cVar3; + bool bVar4; + Mat *pMVar5; + undefined8 uVar6; + undefined8 uVar7; + Mat *pMVar8; + int iVar9; + undefined4 *puVar10; + undefined8 *puVar11; + char *pcVar12; + Mat *pMVar13; + Mat **ppMVar14; + AutoBuffer *pAVar15; + ulong uVar16; + long lVar17; + long lVar18; + undefined8 local_2b8; + Mat *local_2b0; + undefined4 local_2a8; + undefined4 local_2a4; + undefined8 local_2a0; + Mat *pMStack_298; + long local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + Mat **local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 uStack_248; + undefined8 local_240; + Mat *pMStack_238; + long local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + Mat **local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + Mat *local_1d8; + Mat *local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined4 *local_1a0; + undefined8 *local_198; + undefined8 auStack_190 [2]; + undefined8 local_180; + undefined8 uStack_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + AutoBuffer *local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + AutoBuffer *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + int local_5c; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,(AutoBuffer *)&local_c0); + local_68 = 0; + local_80 = &local_b8; + local_a8 = local_108; + local_78 = &local_70; + local_a0 = local_100; + local_98 = local_f8; + local_c0 = local_120; + local_bc = local_11c; + local_b8 = local_118; + local_b4 = local_114; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + local_70 = 0; + if (local_e8 != 0) { + piVar2 = (int *)(local_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + pAVar15 = local_110; + if (local_11c < 3) { + local_70 = *local_d8; + local_68 = local_d8[1]; + } + else { + local_bc = 0; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + } + local_258 = &local_250; + local_1f8 = &local_1f0; + uStack_248 = 0; + local_250 = 0; + local_260 = &pMStack_298; + uStack_1e8 = 0; + local_1f0 = 0; + local_200 = &pMStack_238; + local_290 = 0; + pMStack_298 = _UNK_002eb168; + local_2a0 = _DAT_002eb160; + uStack_288 = 0; + pMStack_238 = _UNK_002eb168; + local_240 = _DAT_002eb160; + local_280 = 0; + uStack_278 = 0; + local_270 = 0; + lStack_268 = 0; + local_230 = 0; + uStack_228 = 0; + local_220 = 0; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + if ((param_1 == (undefined8 *)0x0) || (param_2 < 1)) { + local_2b8 = 0; + local_2b0 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_2b8,0x19); + cVar3 = s_vecarr____0____count_>__1_00469758[0x18]; + uVar7 = s_vecarr____0____count_>__1_00469758._8_8_; + uVar6 = s_vecarr____0____count_>__1_00469758._0_8_; + pAVar15 = (AutoBuffer *)(ulong)(byte)s_vecarr____0____count_>__1_00469758[0x18]; + *(undefined8 *)(pcVar12 + 0x10) = s_vecarr____0____count_>__1_00469758._16_8_; + pcVar12[0x18] = cVar3; + *(undefined8 *)pcVar12 = uVar6; + *(undefined8 *)(pcVar12 + 8) = uVar7; + cv::error(-0xd7,(String *)&local_2b8, + "void cvCalcCovarMatrix(const CvArr**, int, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matmul.cpp",0xd05); + cv::String::deallocate((String *)&local_2b8); + } + if (param_4 == (cv *)0x0) goto LAB_002ea5f0; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,pAVar15); + if (lStack_1a8 != 0) { + piVar2 = (int *)(lStack_1a8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_268 != 0) { + piVar2 = (int *)(lStack_268 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + puVar11 = local_198; + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (local_2a0._4_4_ < 1) { +LAB_002ea440: + if (2 < local_1e0._4_4_) goto LAB_002ea44c; + pMStack_298 = local_1d8; + local_2a0 = local_1e0; + *local_258 = *local_198; + local_258[1] = puVar11[1]; + } + else { + iVar9 = 0; + ppMVar14 = local_260; + do { + *(undefined4 *)ppMVar14 = 0; + iVar9 = iVar9 + 1; + ppMVar14 = (Mat **)((long)ppMVar14 + 4); + } while (iVar9 < local_2a0._4_4_); + if (local_2a0._4_4_ < 3) goto LAB_002ea440; +LAB_002ea44c: + local_2a0 = CONCAT44(local_2a0._4_4_,(undefined4)local_1e0); + cv::Mat::copySize((Mat *)&local_2a0,(Mat *)&local_1e0); + } + uStack_278 = uStack_1b8; + local_280 = local_1c0; + lStack_268 = lStack_1a8; + local_270 = local_1b0; + uStack_288 = uStack_1c8; + local_290 = (long)local_1d0; + if (lStack_1a8 != 0) { + piVar2 = (int *)(lStack_1a8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_208 != 0) { + piVar2 = (int *)(lStack_208 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_240._4_4_ < 1) { +LAB_002ea514: + if (2 < local_2a0._4_4_) goto LAB_002eadb4; + pMStack_238 = pMStack_298; + local_240 = local_2a0; + *local_1f8 = *local_258; + local_1f8[1] = local_258[1]; + } + else { + iVar9 = 0; + ppMVar14 = local_200; + do { + *(undefined4 *)ppMVar14 = 0; + iVar9 = iVar9 + 1; + ppMVar14 = (Mat **)((long)ppMVar14 + 4); + } while (iVar9 < local_240._4_4_); + if (local_240._4_4_ < 3) goto LAB_002ea514; +LAB_002eadb4: + local_240 = CONCAT44(local_240._4_4_,(uint)local_2a0); + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_2a0); + } + uStack_218 = uStack_278; + local_220 = local_280; + lStack_208 = lStack_268; + local_210 = local_270; + uStack_228 = uStack_288; + local_230 = local_290; + if (lStack_1a8 != 0) { + piVar2 = (int *)(lStack_1a8 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = (Mat *)0x0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar9 = 0; + do { + *local_1a0 = 0; + iVar9 = iVar9 + 1; + local_1a0 = local_1a0 + 1; + } while (iVar9 < local_1e0._4_4_); + } + if (local_198 != auStack_190) { + cv::fastFree(local_198); + } +LAB_002ea5f0: + if ((param_5 & 0x18) == 0) { + local_138 = &local_130; + local_140 = &uStack_178; + uVar16 = (ulong)param_2; + local_1e0 = (Mat *)0x0; + uStack_128 = 0; + local_130 = 0; + local_1d8 = (Mat *)0x0; + uStack_178 = _UNK_002eb168; + local_180 = _DAT_002eb160; + local_1d0 = (Mat *)0x0; + local_170 = 0; + local_168 = 0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + /* try { // try from 002ea9d0 to 003ea9d3 has its CatchHandler @ 002eaac8 */ + if (uVar16 == 0) { + /* try { // try from 002ea9d8 to 003eaa4f has its CatchHandler @ 002ea1e0 */ + local_1d0 = (Mat *)0x0; + local_1d8 = (Mat *)0x0; + } + else { + if (0x2aaaaaaaaaaaaaa < uVar16) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + pMVar13 = operator_new(uVar16 * 0x60); + local_1d0 = pMVar13 + uVar16 * 0x60; + local_1e0 = pMVar13; + local_1d8 = pMVar13; + do { + if (pMVar13 != (Mat *)0x0) { + *(undefined4 *)pMVar13 = (undefined4)local_180; + *(int *)(pMVar13 + 4) = local_180._4_4_; + *(undefined4 *)(pMVar13 + 8) = (undefined4)uStack_178; + *(undefined8 *)(pMVar13 + 0x10) = local_170; + *(undefined4 *)(pMVar13 + 0xc) = uStack_178._4_4_; + *(undefined8 *)(pMVar13 + 0x18) = local_168; + *(undefined8 *)(pMVar13 + 0x20) = local_160; + *(undefined8 *)(pMVar13 + 0x28) = local_158; + *(undefined8 *)(pMVar13 + 0x30) = local_150; + *(long *)(pMVar13 + 0x38) = local_148; + *(Mat **)(pMVar13 + 0x40) = pMVar13 + 8; + *(Mat **)(pMVar13 + 0x48) = pMVar13 + 0x50; + *(undefined8 *)(pMVar13 + 0x58) = 0; + *(undefined8 *)(pMVar13 + 0x50) = 0; + if (local_148 != 0) { + piVar2 = (int *)(local_148 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (local_180._4_4_ < 3) { + puVar11 = *(undefined8 **)(pMVar13 + 0x48); + *puVar11 = *local_138; + puVar11[1] = local_138[1]; + } + else { + *(undefined4 *)(pMVar13 + 4) = 0; + cv::Mat::copySize(pMVar13,(Mat *)&local_180); + } + } + uVar16 = uVar16 - 1; + pMVar13 = pMVar13 + 0x60; + } while (uVar16 != 0); + local_1d8 = local_1d0; + if (local_148 != 0) { + piVar2 = (int *)(local_148 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar9 = 0; + puVar11 = local_140; + do { + *(undefined4 *)puVar11 = 0; + iVar9 = iVar9 + 1; + puVar11 = (undefined8 *)((long)puVar11 + 4); + } while (iVar9 < local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (0 < param_2) { + lVar18 = 0; + lVar17 = 0; + do { + pMVar13 = local_1e0 + lVar18; + cv::cvarrToMat((cv *)param_1[lVar17],(void *)0x0,true,false,0,pAVar15); + if (pMVar13 != (Mat *)&local_60) { + if (lStack_28 != 0) { + piVar2 = (int *)(lStack_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002eaa90 to 003eaa93 has its CatchHandler @ 002eaadc */ + } while (cVar3 != '\0'); + } + if (*(long *)(pMVar13 + 0x38) == 0) { +LAB_002eaab8: + *(undefined8 *)(pMVar13 + 0x38) = 0; + *(undefined8 *)(pMVar13 + 0x10) = 0; + /* catch() { ... } // from try @ 002ea880 with catch @ 002eaac8 + catch() { ... } // from try @ 002ea8f0 with catch @ 002eaac8 + catch() { ... } // from try @ 002ea960 with catch @ 002eaac8 + catch() { ... } // from try @ 002ea9d0 with catch @ 002eaac8 */ + *(undefined8 *)(pMVar13 + 0x28) = 0; + *(undefined8 *)(pMVar13 + 0x20) = 0; + *(undefined8 *)(pMVar13 + 0x18) = 0; + if (0 < *(int *)(pMVar13 + 4)) goto LAB_002eaad8; +LAB_002ead9c: + *(undefined4 *)pMVar13 = local_60; +LAB_002eab04: + if (2 < local_5c) goto LAB_002ead58; + *(int *)(pMVar13 + 4) = local_5c; + *(undefined4 *)(pMVar13 + 8) = (undefined4)local_58; + puVar11 = *(undefined8 **)(pMVar13 + 0x48); + *(undefined4 *)(pMVar13 + 0xc) = local_58._4_4_; + *puVar11 = *local_18; + puVar11[1] = local_18[1]; + } + else { + /* try { // try from 002eaa9c to 003eaa9f has its CatchHandler @ 002ea1e0 */ + piVar2 = (int *)(*(long *)(pMVar13 + 0x38) + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 != 1) goto LAB_002eaab8; + cv::Mat::deallocate(pMVar13); + *(undefined8 *)(pMVar13 + 0x38) = 0; + *(undefined8 *)(pMVar13 + 0x10) = 0; + *(undefined8 *)(pMVar13 + 0x28) = 0; + *(undefined8 *)(pMVar13 + 0x20) = 0; + *(undefined8 *)(pMVar13 + 0x18) = 0; + if (*(int *)(pMVar13 + 4) < 1) goto LAB_002ead9c; +LAB_002eaad8: + /* try { // try from 002eaad8 to 003eaadb has its CatchHandler @ 002ea1e0 */ + /* catch() { ... } // from try @ 002eaa90 with catch @ 002eaadc */ + pAVar15 = (AutoBuffer *)0x0; + puVar10 = *(undefined4 **)(pMVar13 + 0x40); + do { + *puVar10 = 0; + uVar1 = (int)pAVar15 + 1; + pAVar15 = (AutoBuffer *)(ulong)uVar1; + /* try { // try from 002eaaec to 003eaaef has its CatchHandler @ 002ea1e0 */ + puVar10 = puVar10 + 1; + } while ((int)uVar1 < *(int *)(pMVar13 + 4)); + *(undefined4 *)pMVar13 = local_60; + if (*(int *)(pMVar13 + 4) < 3) goto LAB_002eab04; +LAB_002ead58: + cv::Mat::copySize(pMVar13,(Mat *)&local_60); + } + /* catch() { ... } // from try @ 002eab84 with catch @ 002eab50 + catch() { ... } // from try @ 002eaf8c with catch @ 002eab50 + catch() { ... } // from try @ 002eb34c with catch @ 002eab50 */ + *(undefined8 *)(pMVar13 + 0x18) = uStack_48; + *(undefined8 *)(pMVar13 + 0x10) = local_50; + *(undefined8 *)(pMVar13 + 0x28) = uStack_38; + *(undefined8 *)(pMVar13 + 0x20) = local_40; + *(long *)(pMVar13 + 0x38) = lStack_28; + *(undefined8 *)(pMVar13 + 0x30) = local_30; + } + if (lStack_28 != 0) { + piVar2 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002eab84 to 003eaba7 has its CatchHandler @ 002eab50 */ + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + pAVar15 = (AutoBuffer *)0x0; + puVar10 = local_20; + do { + /* try { // try from 002eabb8 to 003eabff has its CatchHandler @ 002eb350 */ + *puVar10 = 0; + uVar1 = (int)pAVar15 + 1; + pAVar15 = (AutoBuffer *)(ulong)uVar1; + puVar10 = puVar10 + 1; + } while ((int)uVar1 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + lVar17 = lVar17 + 1; + lVar18 = lVar18 + 0x60; + } while ((int)lVar17 < param_2); + } + cv::calcCovarMatrix(local_1e0,param_2,(Mat *)&local_c0,(Mat *)&local_240,param_5, + local_c0 & 0xfff); + pMVar8 = local_1d8; + pMVar5 = local_1d8; + for (pMVar13 = local_1e0; pMVar13 != pMVar8; pMVar13 = pMVar13 + 0x60) { + if (*(long *)(pMVar13 + 0x38) != 0) { + piVar2 = (int *)(*(long *)(pMVar13 + 0x38) + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate(pMVar13); + } + } + /* try { // try from 002eac48 to 003eac4b has its CatchHandler @ 002eb318 */ + *(undefined8 *)(pMVar13 + 0x38) = 0; + *(undefined8 *)(pMVar13 + 0x10) = 0; + /* try { // try from 002eac50 to 003eae8f has its CatchHandler @ 002eb350 */ + *(undefined8 *)(pMVar13 + 0x28) = 0; + *(undefined8 *)(pMVar13 + 0x20) = 0; + *(undefined8 *)(pMVar13 + 0x18) = 0; + if (0 < *(int *)(pMVar13 + 4)) { + iVar9 = 0; + puVar10 = *(undefined4 **)(pMVar13 + 0x40); + do { + *puVar10 = 0; + iVar9 = iVar9 + 1; + puVar10 = puVar10 + 1; + } while (iVar9 < *(int *)(pMVar13 + 4)); + } + if (*(Mat **)(pMVar13 + 0x48) != pMVar13 + 0x50) { + cv::fastFree(*(Mat **)(pMVar13 + 0x48)); + } + pMVar5 = local_1e0; + } + if (pMVar5 != (Mat *)0x0) { + operator_delete(pMVar5); + } + } + else { + cv::cvarrToMat((cv *)*param_1,(void *)0x0,true,false,0,pAVar15); + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x3010000); + local_2a8 = 0; + local_2a4 = 0; + local_2b8 = CONCAT44(local_2b8._4_4_,0x1010000); + local_1d0 = (Mat *)0x0; + local_1e0 = (Mat *)CONCAT44(local_1e0._4_4_,0x2010000); + local_2b0 = (Mat *)&local_60; + local_1d8 = (Mat *)&local_c0; + uStack_178 = (Mat *)&local_240; + cv::calcCovarMatrix((_InputArray *)&local_2b8,(_OutputArray *)&local_1e0, + (_InputOutputArray *)&local_180,param_5,local_c0 & 0xfff); + if (lStack_28 != 0) { + piVar2 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_5c) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_5c); + } + lStack_28 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + local_50 = 0; + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + } + if ((local_230 != local_290) && (local_290 != 0)) { + local_50 = 0; + local_60 = 0x2010000; + local_58 = (Mat *)&local_2a0; + cv::Mat::convertTo((Mat *)&local_240,(_OutputArray *)&local_60,(uint)local_2a0 & 0xfff,1.0,0.0); + } + if (local_b0 != local_110) { + local_50 = 0; + local_60 = 0x2010000; + local_58 = (Mat *)&local_120; + cv::Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_60,local_120 & 0xfff,1.0,0.0); + } + if (lStack_208 != 0) { + piVar2 = (int *)(lStack_208 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar9 = 0; + ppMVar14 = local_200; + do { + *(undefined4 *)ppMVar14 = 0; + iVar9 = iVar9 + 1; + ppMVar14 = (Mat **)((long)ppMVar14 + 4); + } while (iVar9 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + cv::fastFree(local_1f8); + } + if (lStack_268 != 0) { + piVar2 = (int *)(lStack_268 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_2a0._4_4_) { + /* try { // try from 002ea834 to 003ea837 has its CatchHandler @ 002ea1e0 */ + iVar9 = 0; + ppMVar14 = local_260; + do { + *(undefined4 *)ppMVar14 = 0; + iVar9 = iVar9 + 1; + ppMVar14 = (Mat **)((long)ppMVar14 + 4); + } while (iVar9 < local_2a0._4_4_); + } + if (local_258 != &local_250) { + cv::fastFree(local_258); + } + if (local_88 != 0) { + piVar2 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 002ea880 to 003ea883 has its CatchHandler @ 002eaac8 */ + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + /* try { // try from 002ea888 to 003ea8a7 has its CatchHandler @ 002ea1e0 */ + local_88 = 0; + local_b0 = (AutoBuffer *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + puVar10 = local_80; + do { + *puVar10 = 0; + iVar9 = iVar9 + 1; + puVar10 = puVar10 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar2 = (int *)(local_e8 + 0x14); + do { + iVar9 = *piVar2; + /* try { // try from 002ea8f0 to 003ea8f3 has its CatchHandler @ 002eaac8 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 002ea8f8 to 003ea917 has its CatchHandler @ 002ea1e0 */ + if (iVar9 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = (AutoBuffer *)0x0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + do { + *local_e0 = 0; + iVar9 = iVar9 + 1; + local_e0 = local_e0 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + /* try { // try from 002ea960 to 003ea963 has its CatchHandler @ 002eaac8 */ + /* try { // try from 002ea968 to 003ea987 has its CatchHandler @ 002ea1e0 */ + return; +} + + +================================================================== + +### FUNC 002eb170 (8 bytes) name=FUN_002eb170 + +undefined8 FUN_002eb170(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 002eb178 (8 bytes) name=FUN_002eb178 + +undefined8 FUN_002eb178(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 002eb180 (8 bytes) name=FUN_002eb180 + +undefined8 FUN_002eb180(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 002eb188 (8 bytes) name=FUN_002eb188 + +undefined8 FUN_002eb188(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 002eb190 (8 bytes) name=FUN_002eb190 + +undefined8 FUN_002eb190(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 002eb198 (8 bytes) name=FUN_002eb198 + +undefined8 FUN_002eb198(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 002eb1a0 (8 bytes) name=FUN_002eb1a0 + +undefined8 FUN_002eb1a0(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 002eb1a8 (8 bytes) name=FUN_002eb1a8 + +undefined8 FUN_002eb1a8(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 002eb1b0 (8 bytes) name=FUN_002eb1b0 + +undefined8 FUN_002eb1b0(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 002eb1b8 (108 bytes) name=FUN_002eb1b8 + +bool FUN_002eb1b8(undefined8 *param_1) + +{ + bool bVar1; + + bVar1 = false; + if ((((undefined8 *)*param_1 == &DAT_00531fa8) && + (((param_1[0x10] == 0 || ((double)param_1[0x27] == 0.0)) && + (bVar1 = false, (double)param_1[0x28] == 0.0)))) && + (((double)param_1[0x29] == 0.0 && ((double)param_1[0x2a] == 0.0)))) { + bVar1 = (double)param_1[0x2b] == 0.0; + } + return bVar1; +} + + +================================================================== + +### FUNC 002eb224 (8 bytes) name=elementWise + +/* cv::MatOp::elementWise(cv::MatExpr const&) const */ + +undefined8 cv::MatOp::elementWise(MatExpr *param_1) + +{ + return 0; +} + + +================================================================== + +### FUNC 002eb22c (524 bytes) name=FUN_002eb22c + +void FUN_002eb22c(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + int *piVar7; + char *pcVar8; + undefined4 local_38 [2]; + Mat *local_30; + undefined4 local_28; + undefined4 local_24; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 uStack_8; + + if (param_4 == 0xffffffff) { + param_4 = *(uint *)(param_2 + 0x10) & 0xfff; + } + if (*(int *)(param_2 + 0x14) < 3) { + piVar7 = *(int **)(param_2 + 0x50); + local_20 = *(undefined8 *)piVar7; + /* try { // try from 002eb418 to 003eb43b has its CatchHandler @ 002eb3e4 */ + if ((((2 < *(int *)(param_3 + 4)) || (*piVar7 != *(int *)(param_3 + 8))) || + (piVar7[1] != *(int *)(param_3 + 0xc))) || + (((param_4 & 0xfff) != (*(uint *)param_3 & 0xfff) || (*(long *)(param_3 + 0x10) == 0)))) { + cv::Mat::create(param_3,2,(int *)&local_20,param_4 & 0xfff); + iVar1 = *(int *)(param_2 + 8); + goto joined_r0x002eb348; + } + } + else { + cv::Mat::create(param_3,*(int *)(param_2 + 0x14),*(int **)(param_2 + 0x50),param_4); + } + iVar1 = *(int *)(param_2 + 8); +joined_r0x002eb348: + if (iVar1 == 0x49) { + if (*(int *)(param_2 + 0x14) < 3) { + local_20 = *(undefined8 *)(param_2 + 0x130); + local_38[0] = 0x3010000; + local_28 = 0; + /* catch() { ... } // from try @ 002eb418 with catch @ 002eb3e4 + catch() { ... } // from try @ 002eb87c with catch @ 002eb3e4 + catch() { ... } // from try @ 002eb9e4 with catch @ 002eb3e4 + catch() { ... } // from try @ 002eba1c with catch @ 002eb3e4 */ + local_18 = 0; + local_24 = 0; + local_10 = 0; + uStack_8 = 0; + local_30 = param_3; + cv::setIdentity((_InputOutputArray *)local_38,(Scalar_ *)&local_20); + return; + } + } + else { + /* try { // try from 002eb34c to 003eb34f has its CatchHandler @ 002eab50 */ + /* catch() { ... } // from try @ 002eabb8 with catch @ 002eb350 + catch() { ... } // from try @ 002eac50 with catch @ 002eb350 + catch() { ... } // from try @ 002eb310 with catch @ 002eb350 + catch() { ... } // from try @ 002eb364 with catch @ 002eb350 */ + if (iVar1 == 0x30) { + local_18 = 0; + local_20 = 0; + uStack_8 = 0; + local_10 = 0; + cv::Mat::operator=(param_3,(Scalar_ *)&local_20); + return; + } + if (iVar1 == 0x31) { + local_20 = *(undefined8 *)(param_2 + 0x130); + /* try { // try from 002eb364 to 003eb367 has its CatchHandler @ 002eb350 */ + local_18 = 0; + local_10 = 0; + uStack_8 = 0; + cv::Mat::operator=(param_3,(Scalar_ *)&local_20); + return; + } + } + local_20 = 0; + local_18 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_20,0x1f); + cVar6 = s_Invalid_matrix_initializer_type_00469a30[0x1e]; + uVar5 = s_Invalid_matrix_initializer_type_00469a30._28_2_; + uVar4 = s_Invalid_matrix_initializer_type_00469a30._24_4_; + uVar3 = s_Invalid_matrix_initializer_type_00469a30._8_8_; + uVar2 = s_Invalid_matrix_initializer_type_00469a30._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_matrix_initializer_type_00469a30._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar4; + *(undefined2 *)(pcVar8 + 0x1c) = uVar5; + pcVar8[0x1e] = cVar6; + /* try { // try from 002eb310 to 003eb313 has its CatchHandler @ 002eb350 */ + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-2,(String *)&local_20, + "virtual void cv::MatOp_Initializer::assign(const cv::MatExpr&, cv::Mat&, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matop.cpp",0x628); + /* catch() { ... } // from try @ 002eac48 with catch @ 002eb318 */ + cv::String::deallocate((String *)&local_20); + return; +} + + +================================================================== + +### FUNC 002eb44c (224 bytes) name=size + +/* cv::MatOp::size(cv::MatExpr const&) const */ + +void cv::MatOp::size(MatExpr *param_1) + +{ + long lVar1; + undefined4 uVar2; + long in_x1; + long lVar3; + long lVar4; + undefined4 *in_x8; + + /* try { // try from 002eb44c to 003eb483 has its CatchHandler @ 002eb9f4 */ + if (*(long *)(in_x1 + 0x20) != 0) { + if (*(int *)(in_x1 + 0x14) < 3) { + lVar4 = (long)*(int *)(in_x1 + 0x1c) * (long)*(int *)(in_x1 + 0x18); + } + else { + lVar3 = 0; + lVar4 = 1; + do { + lVar1 = lVar3 * 4; + lVar3 = lVar3 + 1; + lVar4 = lVar4 * *(int *)(*(long *)(in_x1 + 0x50) + lVar1); + } while ((int)lVar3 < *(int *)(in_x1 + 0x14)); + } + if (lVar4 != 0) { + uVar2 = (*(undefined4 **)(in_x1 + 0x50))[1]; + in_x8[1] = **(undefined4 **)(in_x1 + 0x50); + *in_x8 = uVar2; + return; + } + } + if (*(long *)(in_x1 + 0x80) != 0) { + if (*(int *)(in_x1 + 0x74) < 3) { + lVar4 = (long)*(int *)(in_x1 + 0x7c) * (long)*(int *)(in_x1 + 0x78); + } + else { + lVar3 = 0; + lVar4 = 1; + do { + lVar1 = lVar3 * 4; + lVar3 = lVar3 + 1; + /* try { // try from 002eb4cc to 003eb4cf has its CatchHandler @ 002eba20 */ + lVar4 = lVar4 * *(int *)(*(long *)(in_x1 + 0xb0) + lVar1); + /* try { // try from 002eb4d4 to 003eb4d7 has its CatchHandler @ 002eb9f4 */ + } while ((int)lVar3 < *(int *)(in_x1 + 0x74)); + } + if (lVar4 != 0) { + uVar2 = (*(undefined4 **)(in_x1 + 0x110))[1]; + in_x8[1] = **(undefined4 **)(in_x1 + 0x110); + *in_x8 = uVar2; + return; + } + } + uVar2 = (*(undefined4 **)(in_x1 + 0xb0))[1]; + in_x8[1] = **(undefined4 **)(in_x1 + 0xb0); + *in_x8 = uVar2; + return; +} + + +================================================================== + +### FUNC 002eb52c (184 bytes) name=type + +/* cv::MatOp::type(cv::MatExpr const&) const */ + +uint __thiscall cv::MatOp::type(MatOp *this,MatExpr *param_1) + +{ + long lVar1; + long lVar2; + long lVar3; + + if (*(long *)(param_1 + 0x20) != 0) { + if (*(int *)(param_1 + 0x14) < 3) { + lVar3 = (long)*(int *)(param_1 + 0x1c) * (long)*(int *)(param_1 + 0x18); + } + else { + lVar2 = 0; + lVar3 = 1; + do { + lVar1 = lVar2 * 4; + lVar2 = lVar2 + 1; + lVar3 = lVar3 * *(int *)(*(long *)(param_1 + 0x50) + lVar1); + } while ((int)lVar2 < *(int *)(param_1 + 0x14)); + } + if (lVar3 != 0) { + return *(uint *)(param_1 + 0x10) & 0xfff; + } + } + if (*(long *)(param_1 + 0x80) != 0) { + if (*(int *)(param_1 + 0x74) < 3) { + lVar3 = (long)*(int *)(param_1 + 0x7c) * (long)*(int *)(param_1 + 0x78); + } + else { + lVar2 = 0; + lVar3 = 1; + do { + lVar1 = lVar2 * 4; + lVar2 = lVar2 + 1; + lVar3 = lVar3 * *(int *)(*(long *)(param_1 + 0xb0) + lVar1); + } while ((int)lVar2 < *(int *)(param_1 + 0x74)); + } + if (lVar3 != 0) { + return *(uint *)(param_1 + 0xd0) & 0xfff; + } + } + return *(uint *)(param_1 + 0x70) & 0xfff; +} + + +================================================================== + +### FUNC 002eb5e4 (272 bytes) name=FUN_002eb5e4 + +void FUN_002eb5e4(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + char *pcVar5; + undefined8 local_18; + Mat *local_10; + undefined4 local_8; + undefined4 local_4; + + if ((param_4 != 0xffffffff) && (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff))) { + if ((param_4 >> 3 & 0x1ff) + 1 != (*(uint *)(param_2 + 0x10) >> 3 & 0x1ff) + 1) { + local_18 = 0; + local_10 = (Mat *)0x0; + pcVar5 = (char *)cv::String::allocate((String *)&local_18,0x22); + uVar4 = s_CV_MAT_CN__type_____e_a_channels_00469a90._24_8_; + uVar3 = s_CV_MAT_CN__type_____e_a_channels_00469a90._16_8_; + uVar2 = s_CV_MAT_CN__type_____e_a_channels_00469a90._8_8_; + uVar1 = s_CV_MAT_CN__type_____e_a_channels_00469a90._0_8_; + /* try { // try from 002eb654 to 003eb657 has its CatchHandler @ 002eba30 */ + *(undefined2 *)(pcVar5 + 0x20) = s_CV_MAT_CN__type_____e_a_channels_00469a90._32_2_; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + *(undefined8 *)(pcVar5 + 0x10) = uVar3; + *(undefined8 *)(pcVar5 + 0x18) = uVar4; + cv::error(-0xd7,(String *)&local_18, + "virtual void cv::MatOp_Identity::assign(const cv::MatExpr&, cv::Mat&, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matop.cpp",0x4af); + cv::String::deallocate((String *)&local_18); + } + local_18 = CONCAT44(local_18._4_4_,0x2010000); + local_8 = 0; + local_4 = 0; + local_10 = param_3; + cv::Mat::convertTo((Mat *)(param_2 + 0x10),(_OutputArray *)&local_18,param_4,1.0,0.0); + return; + } + cv::Mat::operator=(param_3,(Mat *)(param_2 + 0x10)); + return; +} + + +================================================================== + +### FUNC 002eb708 (240 bytes) name=augAssignAdd + +/* cv::MatOp::augAssignAdd(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignAdd(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + _InputArray *p_Var1; + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002eb820; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78[0] = 0x1010000; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_80 = 0; + local_7c = 0; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x2010000; + local_a0 = param_2; + local_88 = (Mat *)&uStack_60; + local_70 = param_2; + p_Var1 = (_InputArray *)noArray(); + cv::add((_InputArray *)local_78,(_InputArray *)local_90,(_OutputArray *)local_a8,p_Var1,-1); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002eb828 (240 bytes) name=augAssignSubtract + +/* cv::MatOp::augAssignSubtract(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignSubtract(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + _InputArray *p_Var1; + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 002eb840 to 003eb843 has its CatchHandler @ 002eb9f4 */ + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002eb940; + local_38 = 0; + local_30 = 0; + local_28 = 0; + /* try { // try from 002eb87c to 003eb8d7 has its CatchHandler @ 002eb3e4 */ + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78[0] = 0x1010000; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_80 = 0; + local_7c = 0; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x2010000; + local_a0 = param_2; + local_88 = (Mat *)&uStack_60; + local_70 = param_2; + p_Var1 = (_InputArray *)noArray(); + cv::subtract((_InputArray *)local_78,(_InputArray *)local_90,(_OutputArray *)local_a8,p_Var1,-1); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002eb950 (360 bytes) name=augAssignMultiply + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::augAssignMultiply(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignMultiply(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + undefined4 local_120 [2]; + Mat *local_118; + undefined4 local_110; + undefined4 local_10c; + undefined4 local_108 [2]; + Mat *local_100; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8 [2]; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002ebb08; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78 = &local_70; + /* try { // try from 002eb9e4 to 003eb9e7 has its CatchHandler @ 002eb3e4 */ + local_80 = &uStack_b8; + /* catch() { ... } // from try @ 002eb44c with catch @ 002eb9f4 + catch() { ... } // from try @ 002eb4d4 with catch @ 002eb9f4 + catch() { ... } // from try @ 002eb840 with catch @ 002eb9f4 + catch() { ... } // from try @ 002eb918 with catch @ 002eb9f4 */ + uStack_b8 = _UNK_002ebb18; + local_c0 = _DAT_002ebb10; + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x1010000; + uStack_68 = 0; + local_70 = 0; + /* try { // try from 002eba1c to 003eba1f has its CatchHandler @ 002eb3e4 */ + local_e0 = 0; + /* catch() { ... } // from try @ 002eb4cc with catch @ 002eba20 */ + local_dc = 0; + local_f0[0] = 0x1010000; + local_b0 = 0; + /* catch() { ... } // from try @ 002eb654 with catch @ 002eba30 */ + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_f8 = 0; + local_f4 = 0; + local_108[0] = 0x1010000; + /* catch() { ... } // from try @ 002eba74 with catch @ 002eba58 + catch() { ... } // from try @ 002ebc24 with catch @ 002eba58 + catch() { ... } // from try @ 002ebdb0 with catch @ 002eba58 */ + local_110 = 0; + local_10c = 0; + local_120[0] = 0x2010000; + local_118 = param_2; + local_100 = (Mat *)&local_c0; + local_e8 = (Mat *)&uStack_60; + local_d0 = param_2; + gemm((_InputArray *)local_d8,(_InputArray *)local_f0,1.0,(_InputArray *)local_108,0.0, + (_OutputArray *)local_120,0); + /* try { // try from 002eba74 to 003eba93 has its CatchHandler @ 002eba58 */ + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + /* try { // try from 002ebaa4 to 003ebadb has its CatchHandler @ 002ebd8c */ + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ebb20 (236 bytes) name=augAssignDivide + +/* cv::MatOp::augAssignDivide(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignDivide(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 002ebb24 to 003ebb27 has its CatchHandler @ 002ebdb4 */ + /* try { // try from 002ebb2c to 003ebb2f has its CatchHandler @ 002ebd8c */ + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002ebc38; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78[0] = 0x1010000; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_80 = 0; + local_7c = 0; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x2010000; + local_a0 = param_2; + local_88 = (Mat *)&uStack_60; + local_70 = param_2; + cv::divide((_InputArray *)local_78,(_InputArray *)local_90,(_OutputArray *)local_a8,1.0,-1); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ebc40 (236 bytes) name=augAssignAnd + +/* cv::MatOp::augAssignAnd(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignAnd(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + _InputArray *p_Var1; + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002ebd58; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78[0] = 0x1010000; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_80 = 0; + local_7c = 0; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x2010000; + local_a0 = param_2; + local_88 = (Mat *)&uStack_60; + local_70 = param_2; + p_Var1 = (_InputArray *)noArray(); + bitwise_and((_InputArray *)local_78,(_InputArray *)local_90,(_OutputArray *)local_a8,p_Var1); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ebd60 (236 bytes) name=augAssignOr + +/* cv::MatOp::augAssignOr(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignOr(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + _InputArray *p_Var1; + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + /* catch() { ... } // from try @ 002ebaa4 with catch @ 002ebd8c + catch() { ... } // from try @ 002ebb2c with catch @ 002ebd8c */ + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002ebe78; + local_38 = 0; + local_30 = 0; + /* try { // try from 002ebdb0 to 003ebdb3 has its CatchHandler @ 002eba58 */ + local_28 = 0; + /* catch() { ... } // from try @ 002ebb24 with catch @ 002ebdb4 */ + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + /* catch() { ... } // from try @ 002ebe08 with catch @ 002ebdd0 + catch() { ... } // from try @ 002ed2c0 with catch @ 002ebdd0 + catch() { ... } // from try @ 002ed99c with catch @ 002ebdd0 + catch() { ... } // from try @ 002edba8 with catch @ 002ebdd0 */ + local_78[0] = 0x1010000; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_80 = 0; + local_7c = 0; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x2010000; + local_a0 = param_2; + local_88 = (Mat *)&uStack_60; + local_70 = param_2; + /* try { // try from 002ebe08 to 003ebe27 has its CatchHandler @ 002ebdd0 */ + p_Var1 = (_InputArray *)noArray(); + bitwise_or((_InputArray *)local_78,(_InputArray *)local_90,(_OutputArray *)local_a8,p_Var1); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + /* try { // try from 002ebe38 to 003ebe6f has its CatchHandler @ 002edd04 */ + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ebe80 (236 bytes) name=augAssignXor + +/* cv::MatOp::augAssignXor(cv::MatExpr const&, cv::Mat&) const */ + +void __thiscall cv::MatOp::augAssignXor(MatOp *this,MatExpr *param_1,Mat *param_2) + +{ + _InputArray *p_Var1; + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002ebf98; + /* try { // try from 002ebec0 to 003ebec3 has its CatchHandler @ 002edcd0 */ + local_38 = 0; + /* try { // try from 002ebec8 to 003ebf0b has its CatchHandler @ 002edd04 */ + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78[0] = 0x1010000; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_80 = 0; + local_7c = 0; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x2010000; + local_a0 = param_2; + local_88 = (Mat *)&uStack_60; + local_70 = param_2; + p_Var1 = (_InputArray *)noArray(); + bitwise_xor((_InputArray *)local_78,(_InputArray *)local_90,(_OutputArray *)local_a8,p_Var1); + Mat::release((Mat *)&uStack_60); + /* try { // try from 002ebf54 to 003ebf57 has its CatchHandler @ 002edcbc */ + if (local_18 != &local_10) { + fastFree(local_18); + } + /* try { // try from 002ebf5c to 003ebfb7 has its CatchHandler @ 002edd04 */ + return; +} + + +================================================================== + +### FUNC 002ebfa0 (316 bytes) name=FUN_002ebfa0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ebfa0(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + Mat *this; + undefined4 local_90 [2]; + long local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_18 = &local_10; + local_50 = 0; + uStack_8 = 0; + local_10 = 0; + local_48 = 0; + local_20 = &uStack_58; + local_40 = 0; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002ec118; + local_60 = _DAT_002ec110; + local_28 = 0; + this = param_3; + /* try { // try from 002ec008 to 003ec00b has its CatchHandler @ 002edcb4 */ + if ((param_4 != 0xffffffff) && (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff))) { + this = (Mat *)&local_60; + } + local_88 = param_2 + 0x10; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = this; + cv::transpose((_InputArray *)local_90,(_OutputArray *)local_78); + if ((*(long *)(this + 0x10) != *(long *)(param_3 + 0x10)) || (*(double *)(param_2 + 0x130) != 1.0) + ) { + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = param_3; + cv::Mat::convertTo(this,(_OutputArray *)local_78,param_4,*(double *)(param_2 + 0x130),0.0); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ec120 (352 bytes) name=FUN_002ec120 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ec120(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + Mat *this; + undefined4 local_c0 [2]; + long local_b8; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8 [2]; + long local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + long local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_50 = 0; + local_18 = &local_10; + local_48 = 0; + uStack_8 = 0; + local_10 = 0; + local_40 = 0; + local_20 = &uStack_58; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002ec2b8; + local_60 = _DAT_002ec2b0; + local_28 = 0; + this = param_3; + if ((param_4 != 0xffffffff) && (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff))) { + this = (Mat *)&local_60; + } + local_b8 = param_2 + 0x10; + local_a0 = param_2 + 0x70; + local_88 = param_2 + 0xd0; + local_b0 = 0; + local_ac = 0; + local_c0[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = this; + cv::gemm((_InputArray *)local_c0,(_InputArray *)local_a8,*(double *)(param_2 + 0x130), + (_InputArray *)local_90,*(double *)(param_2 + 0x138),(_OutputArray *)local_78, + *(int *)(param_2 + 8)); + if (*(long *)(this + 0x10) != *(long *)(param_3 + 0x10)) { + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = param_3; + cv::Mat::convertTo(this,(_OutputArray *)local_78,param_4,1.0,0.0); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + /* try { // try from 002ec26c to 003ed01b has its CatchHandler @ 002edce4 */ + return; +} + + +================================================================== + +### FUNC 002ec2c0 (296 bytes) name=FUN_002ec2c0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ec2c0(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + Mat *this; + undefined4 local_90 [2]; + long local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_50 = 0; + local_18 = &local_10; + local_48 = 0; + uStack_8 = 0; + local_10 = 0; + local_40 = 0; + local_20 = &uStack_58; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002ec418; + local_60 = _DAT_002ec410; + local_28 = 0; + this = param_3; + if ((param_4 != 0xffffffff) && (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff))) { + this = (Mat *)&local_60; + } + local_88 = param_2 + 0x10; + local_90[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = this; + cv::invert((_InputArray *)local_90,(_OutputArray *)local_78,*(int *)(param_2 + 8)); + if (*(long *)(this + 0x10) != *(long *)(param_3 + 0x10)) { + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = param_3; + cv::Mat::convertTo(this,(_OutputArray *)local_78,param_4,1.0,0.0); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ec420 (320 bytes) name=FUN_002ec420 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ec420(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + Mat *this; + undefined4 local_a8 [2]; + long local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + long local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_50 = 0; + local_18 = &local_10; + local_48 = 0; + uStack_8 = 0; + local_10 = 0; + local_40 = 0; + local_20 = &uStack_58; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002ec598; + local_60 = _DAT_002ec590; + local_28 = 0; + this = param_3; + if ((param_4 != 0xffffffff) && (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff))) { + this = (Mat *)&local_60; + } + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x70; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = this; + cv::solve((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78, + *(int *)(param_2 + 8)); + if (*(long *)(this + 0x10) != *(long *)(param_3 + 0x10)) { + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = param_3; + cv::Mat::convertTo(this,(_OutputArray *)local_78,param_4,1.0,0.0); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ec5a0 (392 bytes) name=FUN_002ec5a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ec5a0(undefined8 param_1,long param_2,Mat *param_3,int param_4) + +{ + Mat *this; + undefined4 local_a8 [2]; + long local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + long local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_18 = &local_10; + uStack_8 = 0; + local_10 = 0; + local_20 = &uStack_58; + local_50 = 0; + uStack_58 = _UNK_002ec758; + local_60 = _DAT_002ec750; + local_48 = 0; + local_40 = 0; + local_38 = 0; + this = (Mat *)&local_60; + if (param_4 + 1U < 2) { + this = param_3; + } + local_30 = 0; + local_28 = 0; + local_70 = this; + if (*(long *)(param_2 + 0x80) == 0) { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x130; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_90[0] = 0xc1020006; + local_80 = 1; + local_7c = 1; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + cv::compare((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78, + *(int *)(param_2 + 8)); + } + else { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x70; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + cv::compare((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78, + *(int *)(param_2 + 8)); + } + if (*(long *)(this + 0x10) != *(long *)(param_3 + 0x10)) { + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = param_3; + cv::Mat::convertTo(this,(_OutputArray *)local_78,param_4,1.0,0.0); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ec760 (1732 bytes) name=FUN_002ec760 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ec760(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + int iVar1; + Mat *pMVar2; + undefined8 uVar3; + undefined8 uVar4; + char *pcVar5; + _InputArray *p_Var6; + undefined4 local_a8 [2]; + long local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + long local_88; + undefined4 local_80; + undefined4 local_7c; + undefined8 local_78; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_50 = 0; + local_18 = &local_10; + local_48 = 0; + uStack_8 = 0; + local_10 = 0; + local_40 = 0; + local_20 = &uStack_58; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002ece68; + local_60 = _DAT_002ece60; + local_28 = 0; + pMVar2 = param_3; + if (param_4 == 0xffffffff) { + iVar1 = *(int *)(param_2 + 8); + } + else { + iVar1 = *(int *)(param_2 + 8); + if (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff)) { + pMVar2 = (Mat *)&local_60; + } + } + if (iVar1 == 0x2a) { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x70; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::multiply((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78, + *(double *)(param_2 + 0x130),-1); + } + else if (iVar1 == 0x2f) { + if (*(long *)(param_2 + 0x80) == 0) { + local_88 = param_2 + 0x10; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_90[0] = 0x1010000; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::divide(*(double *)(param_2 + 0x130),(_InputArray *)local_90,(_OutputArray *)&local_78,-1); + } + else { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x70; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::divide((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78, + *(double *)(param_2 + 0x130),-1); + } + } + else if (iVar1 == 0x26) { + if (*(long *)(param_2 + 0x80) == 0) { + local_a0 = param_2 + 0x10; + local_90[0] = 0xc1020006; + local_88 = param_2 + 0x140; + local_98 = 0; + local_94 = 0; + local_80 = 1; + local_68 = 0; + local_64 = 0; + local_a8[0] = 0x1010000; + local_7c = 4; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + } + else { + local_a0 = param_2 + 0x10; + local_a8[0] = 0x1010000; + local_88 = param_2 + 0x70; + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + } + cv::bitwise_and((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78,p_Var6 + ); + } + else if (iVar1 == 0x7c) { + if (*(long *)(param_2 + 0x80) == 0) { + local_a0 = param_2 + 0x10; + local_90[0] = 0xc1020006; + local_88 = param_2 + 0x140; + local_98 = 0; + local_94 = 0; + local_80 = 1; + local_68 = 0; + local_64 = 0; + local_a8[0] = 0x1010000; + local_7c = 4; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + } + else { + local_a0 = param_2 + 0x10; + local_a8[0] = 0x1010000; + local_88 = param_2 + 0x70; + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + } + cv::bitwise_or((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78,p_Var6) + ; + } + else if (iVar1 == 0x5e) { + if (*(long *)(param_2 + 0x80) == 0) { + local_a0 = param_2 + 0x10; + local_90[0] = 0xc1020006; + local_88 = param_2 + 0x140; + local_98 = 0; + local_94 = 0; + local_80 = 1; + local_68 = 0; + local_64 = 0; + local_a8[0] = 0x1010000; + local_7c = 4; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + } + else { + local_a0 = param_2 + 0x10; + local_a8[0] = 0x1010000; + local_88 = param_2 + 0x70; + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + } + cv::bitwise_xor((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78,p_Var6 + ); + } + else { + if (iVar1 == 0x7e) { + if (*(long *)(param_2 + 0x80) == 0) { + local_88 = param_2 + 0x10; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_90[0] = 0x1010000; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + p_Var6 = (_InputArray *)cv::noArray(); + cv::bitwise_not((_InputArray *)local_90,(_OutputArray *)&local_78,p_Var6); + goto LAB_002ec9c0; + } + } + else { + if (iVar1 == 0x6d) { + cv::min((Mat *)(param_2 + 0x10),(Mat *)(param_2 + 0x70),pMVar2); + goto LAB_002ec9c0; + } + if (iVar1 == 0x6e) { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x140; + local_80 = 1; + local_7c = 1; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_90[0] = 0xc1020006; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::min((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78); + goto LAB_002ec9c0; + } + if (iVar1 == 0x4d) { + cv::max((Mat *)(param_2 + 0x10),(Mat *)(param_2 + 0x70),pMVar2); + goto LAB_002ec9c0; + } + if (iVar1 == 0x4e) { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x140; + local_80 = 1; + local_7c = 1; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_90[0] = 0xc1020006; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::max((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78); + goto LAB_002ec9c0; + } + if (iVar1 == 0x61) { + if (*(long *)(param_2 + 0x80) == 0) { + local_a0 = param_2 + 0x10; + local_88 = param_2 + 0x140; + local_98 = 0; + local_94 = 0; + local_80 = 1; + local_68 = 0; + local_64 = 0; + local_a8[0] = 0x1010000; + local_90[0] = 0xc1020006; + local_7c = 4; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::absdiff((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78); + } + else { + local_a0 = param_2 + 0x10; + local_a8[0] = 0x1010000; + local_88 = param_2 + 0x70; + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = pMVar2; + cv::absdiff((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)&local_78); + } + goto LAB_002ec9c0; + } + } + local_78 = 0; + local_70 = (Mat *)0x0; + pcVar5 = (char *)cv::String::allocate((String *)&local_78,0x11); + uVar4 = s_Unknown_operation_00469ab8._8_8_; + uVar3 = s_Unknown_operation_00469ab8._0_8_; + pcVar5[0x10] = s_Unknown_operation_00469ab8[0x10]; + *(undefined8 *)pcVar5 = uVar3; + *(undefined8 *)(pcVar5 + 8) = uVar4; + cv::error(-2,(String *)&local_78, + "virtual void cv::MatOp_Bin::assign(const cv::MatExpr&, cv::Mat&, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matop.cpp",0x54d); + cv::String::deallocate((String *)&local_78); + } +LAB_002ec9c0: + if (*(long *)(pMVar2 + 0x10) != *(long *)(param_3 + 0x10)) { + local_68 = 0; + local_64 = 0; + local_78 = CONCAT44(local_78._4_4_,0x2010000); + local_70 = param_3; + cv::Mat::convertTo(pMVar2,(_OutputArray *)&local_78,param_4,1.0,0.0); + } + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ece70 (1612 bytes) name=FUN_002ece70 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002ece70(undefined8 param_1,long param_2,Mat *param_3,uint param_4) + +{ + Mat *pMVar1; + Mat *pMVar2; + _InputArray *p_Var3; + double dVar4; + double dVar5; + undefined4 local_a8 [2]; + Mat *local_a0; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_50 = 0; + uStack_8 = 0; + local_10 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002ed4f8; + local_60 = _DAT_002ed4f0; + local_28 = 0; + local_20 = &uStack_58; + local_18 = &local_10; + pMVar2 = param_3; + if (param_4 == 0xffffffff) { + if (*(long *)(param_2 + 0x80) == 0) goto LAB_002ed15c; +LAB_002eceec: + local_70 = pMVar2; + if (*(double *)(param_2 + 0x140) == 0.0) { + if (((*(double *)(param_2 + 0x148) == 0.0) && (*(double *)(param_2 + 0x150) == 0.0)) && + (*(double *)(param_2 + 0x158) != 0.0)) goto LAB_002ecf14; + } + else if ((*(double *)(param_2 + 0x148) == 0.0) && (*(double *)(param_2 + 0x150) == 0.0)) { +LAB_002ecf14: + if (*(double *)(param_2 + 0x158) == 0.0) { + local_a0 = (Mat *)(param_2 + 0x10); + local_88 = (Mat *)(param_2 + 0x70); + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + cv::addWeighted((_InputArray *)local_a8,*(double *)(param_2 + 0x130),(_InputArray *)local_90 + ,*(double *)(param_2 + 0x138),*(double *)(param_2 + 0x140), + (_OutputArray *)local_78,-1); + goto LAB_002ecfdc; + } + } + dVar4 = *(double *)(param_2 + 0x130); + if (dVar4 == 1.0) { + dVar4 = *(double *)(param_2 + 0x138); + if (dVar4 == 1.0) { + local_a0 = (Mat *)(param_2 + 0x10); + local_a8[0] = 0x1010000; + local_88 = (Mat *)(param_2 + 0x70); + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + p_Var3 = (_InputArray *)cv::noArray(); + cv::add((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78,p_Var3,-1); + } + else { + if (dVar4 == -1.0) { + local_a0 = (Mat *)(param_2 + 0x10); + local_88 = (Mat *)(param_2 + 0x70); + goto LAB_002ed1b8; + } + local_a0 = (Mat *)(param_2 + 0x70); + local_88 = (Mat *)(param_2 + 0x10); +LAB_002ed08c: + local_a8[0] = 0x1010000; + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + cv::scaleAdd((_InputArray *)local_a8,dVar4,(_InputArray *)local_90,(_OutputArray *)local_78) + ; + } + } + else if (*(double *)(param_2 + 0x138) == 1.0) { + if (dVar4 != -1.0) { + local_a0 = (Mat *)(param_2 + 0x10); + local_88 = (Mat *)(param_2 + 0x70); + goto LAB_002ed08c; + } + local_a0 = (Mat *)(param_2 + 0x70); + local_88 = (Mat *)(param_2 + 0x10); +LAB_002ed1b8: + local_a8[0] = 0x1010000; + local_90[0] = 0x1010000; + local_98 = 0; + local_94 = 0; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + p_Var3 = (_InputArray *)cv::noArray(); + /* try { // try from 002ed1f0 to 003ed1f3 has its CatchHandler @ 002edbac */ + cv::subtract((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78,p_Var3, + -1); + } + else { + local_a0 = (Mat *)(param_2 + 0x10); + local_88 = (Mat *)(param_2 + 0x70); + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_90[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + cv::addWeighted((_InputArray *)local_a8,dVar4,(_InputArray *)local_90, + *(double *)(param_2 + 0x138),0.0,(_OutputArray *)local_78,-1); + } + if (((*(double *)(param_2 + 0x148) != 0.0) || (*(double *)(param_2 + 0x150) != 0.0)) || + (*(double *)(param_2 + 0x158) != 0.0)) { + local_90[0] = 0xc1020006; + local_80 = 1; + local_7c = 4; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_a0 = pMVar2; + local_88 = (Mat *)(param_2 + 0x140); + local_70 = pMVar2; + p_Var3 = (_InputArray *)cv::noArray(); + cv::add((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78,p_Var3,-1); + } +LAB_002ecfdc: + if (*(long *)(pMVar2 + 0x10) == *(long *)(param_3 + 0x10)) goto LAB_002ed01c; + dVar5 = 0.0; + param_4 = *(uint *)param_3 & 0xfff; + dVar4 = 1.0; + } + else { + if (param_4 != (*(uint *)(param_2 + 0x10) & 0xfff)) { + pMVar2 = (Mat *)&local_60; + } + if (*(long *)(param_2 + 0x80) != 0) goto LAB_002eceec; +LAB_002ed15c: + pMVar1 = (Mat *)(param_2 + 0x140); + /* try { // try from 002ed17c to 003ed17f has its CatchHandler @ 002edb18 */ + if (((*(double *)(param_2 + 0x148) != 0.0) || (*(double *)(param_2 + 0x150) != 0.0)) || + (*(double *)(param_2 + 0x158) != 0.0)) { + dVar4 = *(double *)(param_2 + 0x130); +LAB_002ed244: + local_88 = pMVar1; + local_70 = pMVar2; + if (dVar4 == 1.0) { + /* try { // try from 002ed43c to 003ed43f has its CatchHandler @ 002edc44 */ + local_a0 = (Mat *)(param_2 + 0x10); + local_90[0] = 0xc1020006; + /* try { // try from 002ed44c to 003ed44f has its CatchHandler @ 002edc6c */ + local_80 = 1; + local_7c = 4; + /* try { // try from 002ed45c to 003ed45f has its CatchHandler @ 002edc90 */ + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + p_Var3 = (_InputArray *)cv::noArray(); + cv::add((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78,p_Var3,-1); + } + else if (dVar4 == -1.0) { + local_88 = (Mat *)(param_2 + 0x10); + local_a8[0] = 0xc1020006; + local_98 = 1; + local_94 = 4; + local_90[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + /* try { // try from 002ed40c to 003ed40f has its CatchHandler @ 002edbbc */ + local_78[0] = 0x2010000; + local_a0 = pMVar1; + p_Var3 = (_InputArray *)cv::noArray(); + /* try { // try from 002ed41c to 003ed41f has its CatchHandler @ 002edbfc */ + /* try { // try from 002ed42c to 003ed42f has its CatchHandler @ 002edc20 */ + cv::subtract((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78,p_Var3 + ,-1); + } + else { + /* try { // try from 002ed264 to 003ed267 has its CatchHandler @ 002edbb4 */ + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + cv::Mat::convertTo((Mat *)(param_2 + 0x10),(_OutputArray *)local_78, + *(uint *)(param_2 + 0x10) & 0xfff,dVar4,0.0); + local_90[0] = 0xc1020006; + local_80 = 1; + local_7c = 4; + local_98 = 0; + local_94 = 0; + local_a8[0] = 0x1010000; + /* try { // try from 002ed2c0 to 003ed313 has its CatchHandler @ 002ebdd0 */ + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_a0 = pMVar2; + local_70 = pMVar2; + p_Var3 = (_InputArray *)cv::noArray(); + cv::add((_InputArray *)local_a8,(_InputArray *)local_90,(_OutputArray *)local_78,p_Var3,-1); + } + goto LAB_002ecfdc; + } + dVar4 = *(double *)(param_2 + 0x130); + if ((*(long *)(pMVar2 + 0x10) == *(long *)(param_3 + 0x10)) && (ABS(dVar4) == 1.0)) + goto LAB_002ed244; + dVar5 = *(double *)(param_2 + 0x140); + pMVar2 = (Mat *)(param_2 + 0x10); + } + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = param_3; + cv::Mat::convertTo(pMVar2,(_OutputArray *)local_78,param_4,dVar4,dVar5); +LAB_002ed01c: + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002ed500 (564 bytes) name=FUN_002ed500 + +void FUN_002ed500(undefined8 param_1,undefined8 *param_2,undefined8 *param_3) + +{ + Mat *this; + int *piVar1; + Mat *this_00; + int iVar2; + uint uVar3; + undefined4 uVar4; + char cVar5; + bool bVar6; + uint uVar7; + undefined8 uVar8; + undefined8 *puVar9; + uint uVar10; + undefined8 *puVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + + this = (Mat *)(param_3 + 2); + uVar8 = *param_2; + *(undefined4 *)(param_3 + 1) = *(undefined4 *)(param_2 + 1); + *param_3 = uVar8; + if (this != (Mat *)(param_2 + 2)) { + if (param_2[9] != 0) { + piVar1 = (int *)(param_2[9] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(this); + *(undefined4 *)(param_3 + 2) = *(undefined4 *)(param_2 + 2); + if ((*(int *)((long)param_3 + 0x14) < 3) && (iVar2 = *(int *)((long)param_2 + 0x14), iVar2 < 3)) + { + puVar11 = (undefined8 *)param_2[0xb]; + puVar9 = (undefined8 *)param_3[0xb]; + uVar4 = *(undefined4 *)(param_2 + 3); + *(undefined4 *)((long)param_3 + 0x1c) = *(undefined4 *)((long)param_2 + 0x1c); + *(int *)((long)param_3 + 0x14) = iVar2; + *(undefined4 *)(param_3 + 3) = uVar4; + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + } + else { + cv::Mat::copySize(this,(Mat *)(param_2 + 2)); + } + uVar15 = param_2[4]; + uVar14 = param_2[7]; + uVar12 = param_2[6]; + uVar13 = param_2[9]; + uVar8 = param_2[8]; + param_3[5] = param_2[5]; + param_3[4] = uVar15; + param_3[7] = uVar14; + param_3[6] = uVar12; + param_3[9] = uVar13; + param_3[8] = uVar8; + } + this_00 = (Mat *)(param_3 + 0xe); + if (this_00 != (Mat *)(param_2 + 0xe)) { + if (param_2[0x15] != 0) { + piVar1 = (int *)(param_2[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(this_00); + *(undefined4 *)(param_3 + 0xe) = *(undefined4 *)(param_2 + 0xe); + if ((*(int *)((long)param_3 + 0x74) < 3) && (iVar2 = *(int *)((long)param_2 + 0x74), iVar2 < 3)) + { + puVar11 = (undefined8 *)param_2[0x17]; + puVar9 = (undefined8 *)param_3[0x17]; + uVar4 = *(undefined4 *)(param_2 + 0xf); + *(undefined4 *)((long)param_3 + 0x7c) = *(undefined4 *)((long)param_2 + 0x7c); + *(int *)((long)param_3 + 0x74) = iVar2; + *(undefined4 *)(param_3 + 0xf) = uVar4; + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + } + else { + cv::Mat::copySize(this_00,(Mat *)(param_2 + 0xe)); + } + uVar15 = param_2[0x10]; + uVar14 = param_2[0x13]; + uVar12 = param_2[0x12]; + uVar13 = param_2[0x15]; + uVar8 = param_2[0x14]; + param_3[0x11] = param_2[0x11]; + param_3[0x10] = uVar15; + param_3[0x13] = uVar14; + param_3[0x12] = uVar12; + param_3[0x15] = uVar13; + param_3[0x14] = uVar8; + } + cv::Mat::operator=((Mat *)(param_3 + 0x1a),(Mat *)(param_2 + 0x1a)); + uVar3 = *(uint *)(param_2 + 1); + uVar12 = param_2[0x27]; + uVar8 = param_2[0x28]; + uVar13 = param_2[0x29]; + param_3[0x26] = param_2[0x26]; + param_3[0x27] = uVar12; + uVar10 = 2; + if ((uVar3 & 1) != 0) { + uVar10 = 0; + } + param_3[0x28] = uVar8; + param_3[0x29] = uVar13; + uVar8 = param_2[0x2b]; + param_3[0x2a] = param_2[0x2a]; + param_3[0x2b] = uVar8; + uVar7 = 4; + if ((uVar3 & 4) != 0) { + uVar7 = 0; + } + *(uint *)(param_3 + 1) = uVar10 | (uVar3 & 2) == 0 | uVar7; + cv::swap(this,this_00); + return; +} + + +================================================================== + +### FUNC 002ed734 (692 bytes) name=FUN_002ed734 + +void FUN_002ed734(double param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4) + +{ + Mat *pMVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + double dVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + + pMVar1 = (Mat *)(param_4 + 2); + uVar3 = *(undefined4 *)(param_3 + 1); + *param_4 = *param_3; + *(undefined4 *)(param_4 + 1) = uVar3; + if (pMVar1 != (Mat *)(param_3 + 2)) { + if (param_3[9] != 0) { + piVar2 = (int *)(param_3[9] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 2) = *(undefined4 *)(param_3 + 2); + if ((*(int *)((long)param_4 + 0x14) < 3) && (iVar4 = *(int *)((long)param_3 + 0x14), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0xb]; + puVar7 = (undefined8 *)param_4[0xb]; + uVar3 = *(undefined4 *)(param_3 + 3); + *(undefined4 *)((long)param_4 + 0x1c) = *(undefined4 *)((long)param_3 + 0x1c); + *(int *)((long)param_4 + 0x14) = iVar4; + *(undefined4 *)(param_4 + 3) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 2)); + } + uVar14 = param_3[4]; + uVar13 = param_3[7]; + uVar12 = param_3[6]; + uVar11 = param_3[9]; + uVar9 = param_3[8]; + param_4[5] = param_3[5]; + param_4[4] = uVar14; + param_4[7] = uVar13; + param_4[6] = uVar12; + param_4[9] = uVar11; + param_4[8] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0xe); + if (pMVar1 != (Mat *)(param_3 + 0xe)) { + if (param_3[0x15] != 0) { + piVar2 = (int *)(param_3[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xe) = *(undefined4 *)(param_3 + 0xe); + if ((*(int *)((long)param_4 + 0x74) < 3) && (iVar4 = *(int *)((long)param_3 + 0x74), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x17]; + /* try { // try from 002ed98c to 003ed98f has its CatchHandler @ 002edce4 */ + puVar7 = (undefined8 *)param_4[0x17]; + uVar3 = *(undefined4 *)(param_3 + 0xf); + *(undefined4 *)((long)param_4 + 0x7c) = *(undefined4 *)((long)param_3 + 0x7c); + /* try { // try from 002ed99c to 003ed99f has its CatchHandler @ 002ebdd0 */ + *(int *)((long)param_4 + 0x74) = iVar4; + *(undefined4 *)(param_4 + 0xf) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0xe)); + } + uVar14 = param_3[0x10]; + uVar13 = param_3[0x13]; + uVar12 = param_3[0x12]; + uVar11 = param_3[0x15]; + uVar9 = param_3[0x14]; + param_4[0x11] = param_3[0x11]; + param_4[0x10] = uVar14; + param_4[0x13] = uVar13; + param_4[0x12] = uVar12; + param_4[0x15] = uVar11; + param_4[0x14] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0x1a); + if (pMVar1 != (Mat *)(param_3 + 0x1a)) { + if (param_3[0x21] != 0) { + piVar2 = (int *)(param_3[0x21] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x1a) = *(undefined4 *)(param_3 + 0x1a); + if ((*(int *)((long)param_4 + 0xd4) < 3) && (iVar4 = *(int *)((long)param_3 + 0xd4), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x23]; + /* try { // try from 002ed95c to 003ed95f has its CatchHandler @ 002edce4 */ + puVar7 = (undefined8 *)param_4[0x23]; + uVar3 = *(undefined4 *)(param_3 + 0x1b); + /* try { // try from 002ed968 to 003ed96b has its CatchHandler @ 002edbac */ + *(undefined4 *)((long)param_4 + 0xdc) = *(undefined4 *)((long)param_3 + 0xdc); + *(int *)((long)param_4 + 0xd4) = iVar4; + *(undefined4 *)(param_4 + 0x1b) = uVar3; + /* try { // try from 002ed974 to 003ed977 has its CatchHandler @ 002edbb4 */ + *puVar7 = *puVar8; + /* try { // try from 002ed980 to 003ed983 has its CatchHandler @ 002edc90 */ + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0x1a)); + } + /* try { // try from 002ed8e4 to 003ed8e7 has its CatchHandler @ 002edb18 */ + /* try { // try from 002ed8f0 to 003ed8f3 has its CatchHandler @ 002edce4 */ + uVar14 = param_3[0x1c]; + /* try { // try from 002ed8fc to 003ed8ff has its CatchHandler @ 002edbbc */ + uVar13 = param_3[0x1f]; + uVar12 = param_3[0x1e]; + uVar11 = param_3[0x21]; + uVar9 = param_3[0x20]; + /* try { // try from 002ed908 to 003ed90b has its CatchHandler @ 002edce4 */ + param_4[0x1d] = param_3[0x1d]; + param_4[0x1c] = uVar14; + param_4[0x1f] = uVar13; + param_4[0x1e] = uVar12; + param_4[0x21] = uVar11; + param_4[0x20] = uVar9; + } + /* try { // try from 002ed914 to 003ed917 has its CatchHandler @ 002edc20 */ + /* try { // try from 002ed920 to 003ed923 has its CatchHandler @ 002edc44 */ + dVar10 = (double)param_3[0x26]; + uVar9 = param_3[0x28]; + uVar11 = param_3[0x29]; + /* try { // try from 002ed92c to 003ed93b has its CatchHandler @ 002edce4 */ + param_4[0x27] = param_3[0x27]; + param_4[0x28] = uVar9; + param_4[0x29] = uVar11; + uVar9 = param_3[0x2b]; + param_4[0x2a] = param_3[0x2a]; + param_4[0x2b] = uVar9; + param_4[0x26] = param_1 * dVar10; + /* try { // try from 002ed944 to 003ed947 has its CatchHandler @ 002edc6c */ + /* try { // try from 002ed950 to 003ed953 has its CatchHandler @ 002edbfc */ + return; +} + + +================================================================== + +### FUNC 002ed9e8 (692 bytes) name=FUN_002ed9e8 + +void FUN_002ed9e8(double param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4) + +{ + Mat *pMVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + double dVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + + pMVar1 = (Mat *)(param_4 + 2); + uVar3 = *(undefined4 *)(param_3 + 1); + *param_4 = *param_3; + *(undefined4 *)(param_4 + 1) = uVar3; + if (pMVar1 != (Mat *)(param_3 + 2)) { + if (param_3[9] != 0) { + piVar2 = (int *)(param_3[9] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 2) = *(undefined4 *)(param_3 + 2); + if ((*(int *)((long)param_4 + 0x14) < 3) && (iVar4 = *(int *)((long)param_3 + 0x14), iVar4 < 3)) + { + /* catch() { ... } // from try @ 002ed44c with catch @ 002edc6c + catch() { ... } // from try @ 002ed944 with catch @ 002edc6c */ + puVar8 = (undefined8 *)param_3[0xb]; + puVar7 = (undefined8 *)param_4[0xb]; + uVar3 = *(undefined4 *)(param_3 + 3); + *(undefined4 *)((long)param_4 + 0x1c) = *(undefined4 *)((long)param_3 + 0x1c); + *(int *)((long)param_4 + 0x14) = iVar4; + *(undefined4 *)(param_4 + 3) = uVar3; + *puVar7 = *puVar8; + /* catch() { ... } // from try @ 002ed45c with catch @ 002edc90 + catch() { ... } // from try @ 002ed980 with catch @ 002edc90 */ + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 2)); + } + uVar14 = param_3[4]; + uVar13 = param_3[7]; + uVar12 = param_3[6]; + uVar11 = param_3[9]; + uVar9 = param_3[8]; + param_4[5] = param_3[5]; + param_4[4] = uVar14; + param_4[7] = uVar13; + param_4[6] = uVar12; + param_4[9] = uVar11; + param_4[8] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0xe); + if (pMVar1 != (Mat *)(param_3 + 0xe)) { + if (param_3[0x15] != 0) { + piVar2 = (int *)(param_3[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xe) = *(undefined4 *)(param_3 + 0xe); + if ((*(int *)((long)param_4 + 0x74) < 3) && (iVar4 = *(int *)((long)param_3 + 0x74), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x17]; + puVar7 = (undefined8 *)param_4[0x17]; + /* catch() { ... } // from try @ 002ed43c with catch @ 002edc44 + catch() { ... } // from try @ 002ed920 with catch @ 002edc44 */ + uVar3 = *(undefined4 *)(param_3 + 0xf); + *(undefined4 *)((long)param_4 + 0x7c) = *(undefined4 *)((long)param_3 + 0x7c); + *(int *)((long)param_4 + 0x74) = iVar4; + *(undefined4 *)(param_4 + 0xf) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0xe)); + } + /* catch() { ... } // from try @ 002ed17c with catch @ 002edb18 + catch() { ... } // from try @ 002ed8e4 with catch @ 002edb18 */ + uVar14 = param_3[0x10]; + uVar13 = param_3[0x13]; + uVar12 = param_3[0x12]; + uVar11 = param_3[0x15]; + uVar9 = param_3[0x14]; + param_4[0x11] = param_3[0x11]; + param_4[0x10] = uVar14; + param_4[0x13] = uVar13; + param_4[0x12] = uVar12; + param_4[0x15] = uVar11; + param_4[0x14] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0x1a); + if (pMVar1 != (Mat *)(param_3 + 0x1a)) { + if (param_3[0x21] != 0) { + piVar2 = (int *)(param_3[0x21] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x1a) = *(undefined4 *)(param_3 + 0x1a); + if ((*(int *)((long)param_4 + 0xd4) < 3) && (iVar4 = *(int *)((long)param_3 + 0xd4), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x23]; + puVar7 = (undefined8 *)param_4[0x23]; + uVar3 = *(undefined4 *)(param_3 + 0x1b); + *(undefined4 *)((long)param_4 + 0xdc) = *(undefined4 *)((long)param_3 + 0xdc); + /* catch() { ... } // from try @ 002ed42c with catch @ 002edc20 + catch() { ... } // from try @ 002ed914 with catch @ 002edc20 */ + *(int *)((long)param_4 + 0xd4) = iVar4; + *(undefined4 *)(param_4 + 0x1b) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0x1a)); + } + /* try { // try from 002edba8 to 003edbab has its CatchHandler @ 002ebdd0 */ + uVar14 = param_3[0x1c]; + /* catch() { ... } // from try @ 002ed1f0 with catch @ 002edbac + catch() { ... } // from try @ 002ed968 with catch @ 002edbac */ + uVar13 = param_3[0x1f]; + uVar12 = param_3[0x1e]; + /* catch() { ... } // from try @ 002ed264 with catch @ 002edbb4 + catch() { ... } // from try @ 002ed974 with catch @ 002edbb4 */ + uVar11 = param_3[0x21]; + uVar9 = param_3[0x20]; + /* catch() { ... } // from try @ 002ed40c with catch @ 002edbbc + catch() { ... } // from try @ 002ed8fc with catch @ 002edbbc */ + param_4[0x1d] = param_3[0x1d]; + param_4[0x1c] = uVar14; + param_4[0x1f] = uVar13; + param_4[0x1e] = uVar12; + param_4[0x21] = uVar11; + param_4[0x20] = uVar9; + } + dVar10 = (double)param_3[0x26]; + uVar9 = param_3[0x28]; + uVar11 = param_3[0x29]; + param_4[0x27] = param_3[0x27]; + param_4[0x28] = uVar9; + param_4[0x29] = uVar11; + uVar9 = param_3[0x2b]; + param_4[0x2a] = param_3[0x2a]; + param_4[0x2b] = uVar9; + param_4[0x26] = param_1 * dVar10; + /* catch() { ... } // from try @ 002ed41c with catch @ 002edbfc + catch() { ... } // from try @ 002ed950 with catch @ 002edbfc */ + return; +} + + +================================================================== + +### FUNC 002edc9c (696 bytes) name=FUN_002edc9c + +void FUN_002edc9c(double param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4) + +{ + Mat *pMVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + double dVar10; + undefined8 uVar11; + undefined8 uVar12; + double dVar13; + undefined8 uVar14; + undefined8 uVar15; + + /* catch() { ... } // from try @ 002ec008 with catch @ 002edcb4 */ + pMVar1 = (Mat *)(param_4 + 2); + /* catch() { ... } // from try @ 002ebf54 with catch @ 002edcbc */ + uVar3 = *(undefined4 *)(param_3 + 1); + *param_4 = *param_3; + /* catch() { ... } // from try @ 002ebec0 with catch @ 002edcd0 */ + *(undefined4 *)(param_4 + 1) = uVar3; + if (pMVar1 != (Mat *)(param_3 + 2)) { + if (param_3[9] != 0) { + /* catch() { ... } // from try @ 002ec26c with catch @ 002edce4 + catch() { ... } // from try @ 002ed8f0 with catch @ 002edce4 + catch() { ... } // from try @ 002ed908 with catch @ 002edce4 + catch() { ... } // from try @ 002ed92c with catch @ 002edce4 + catch() { ... } // from try @ 002ed95c with catch @ 002edce4 + catch() { ... } // from try @ 002ed98c with catch @ 002edce4 */ + piVar2 = (int *)(param_3[9] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + /* catch() { ... } // from try @ 002ebe38 with catch @ 002edd04 + catch() { ... } // from try @ 002ebec8 with catch @ 002edd04 + catch() { ... } // from try @ 002ebf5c with catch @ 002edd04 */ + *(undefined4 *)(param_4 + 2) = *(undefined4 *)(param_3 + 2); + if ((*(int *)((long)param_4 + 0x14) < 3) && (iVar4 = *(int *)((long)param_3 + 0x14), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0xb]; + puVar7 = (undefined8 *)param_4[0xb]; + uVar3 = *(undefined4 *)(param_3 + 3); + *(undefined4 *)((long)param_4 + 0x1c) = *(undefined4 *)((long)param_3 + 0x1c); + *(int *)((long)param_4 + 0x14) = iVar4; + *(undefined4 *)(param_4 + 3) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 2)); + } + uVar15 = param_3[4]; + uVar14 = param_3[7]; + uVar12 = param_3[6]; + uVar11 = param_3[9]; + uVar9 = param_3[8]; + param_4[5] = param_3[5]; + param_4[4] = uVar15; + param_4[7] = uVar14; + param_4[6] = uVar12; + param_4[9] = uVar11; + param_4[8] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0xe); + if (pMVar1 != (Mat *)(param_3 + 0xe)) { + if (param_3[0x15] != 0) { + piVar2 = (int *)(param_3[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xe) = *(undefined4 *)(param_3 + 0xe); + if ((*(int *)((long)param_4 + 0x74) < 3) && (iVar4 = *(int *)((long)param_3 + 0x74), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x17]; + puVar7 = (undefined8 *)param_4[0x17]; + uVar3 = *(undefined4 *)(param_3 + 0xf); + *(undefined4 *)((long)param_4 + 0x7c) = *(undefined4 *)((long)param_3 + 0x7c); + *(int *)((long)param_4 + 0x74) = iVar4; + *(undefined4 *)(param_4 + 0xf) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0xe)); + } + /* catch() { ... } // from try @ 002eddd8 with catch @ 002eddc0 + catch() { ... } // from try @ 002edf8c with catch @ 002eddc0 + catch() { ... } // from try @ 002ee85c with catch @ 002eddc0 */ + uVar15 = param_3[0x10]; + uVar14 = param_3[0x13]; + uVar12 = param_3[0x12]; + /* try { // try from 002eddd8 to 003eddf7 has its CatchHandler @ 002eddc0 */ + uVar11 = param_3[0x15]; + uVar9 = param_3[0x14]; + param_4[0x11] = param_3[0x11]; + param_4[0x10] = uVar15; + param_4[0x13] = uVar14; + param_4[0x12] = uVar12; + param_4[0x15] = uVar11; + param_4[0x14] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0x1a); + if (pMVar1 != (Mat *)(param_3 + 0x1a)) { + if (param_3[0x21] != 0) { + piVar2 = (int *)(param_3[0x21] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + /* try { // try from 002ede14 to 003ede4b has its CatchHandler @ 002ee860 */ + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x1a) = *(undefined4 *)(param_3 + 0x1a); + if ((*(int *)((long)param_4 + 0xd4) < 3) && (iVar4 = *(int *)((long)param_3 + 0xd4), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x23]; + puVar7 = (undefined8 *)param_4[0x23]; + uVar3 = *(undefined4 *)(param_3 + 0x1b); + *(undefined4 *)((long)param_4 + 0xdc) = *(undefined4 *)((long)param_3 + 0xdc); + *(int *)((long)param_4 + 0xd4) = iVar4; + *(undefined4 *)(param_4 + 0x1b) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0x1a)); + } + uVar15 = param_3[0x1c]; + uVar14 = param_3[0x1f]; + uVar12 = param_3[0x1e]; + uVar11 = param_3[0x21]; + uVar9 = param_3[0x20]; + param_4[0x1d] = param_3[0x1d]; + param_4[0x1c] = uVar15; + param_4[0x1f] = uVar14; + param_4[0x1e] = uVar12; + param_4[0x21] = uVar11; + param_4[0x20] = uVar9; + } + dVar10 = (double)param_3[0x26]; + dVar13 = (double)param_3[0x27]; + uVar9 = param_3[0x29]; + param_4[0x28] = param_3[0x28]; + param_4[0x29] = uVar9; + /* try { // try from 002ede94 to 003ede97 has its CatchHandler @ 002ee868 */ + /* try { // try from 002ede9c to 003ede9f has its CatchHandler @ 002ee860 */ + uVar9 = param_3[0x2b]; + param_4[0x2a] = param_3[0x2a]; + param_4[0x2b] = uVar9; + param_4[0x26] = param_1 * dVar10; + param_4[0x27] = param_1 * dVar13; + return; +} + + +================================================================== + +### FUNC 002edf54 (572 bytes) name=FUN_002edf54 + +void FUN_002edf54(undefined8 param_1,double *param_2,undefined8 *param_3,undefined8 *param_4) + +{ + Mat *pMVar1; + int *piVar2; + int iVar3; + undefined4 uVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + double dVar10; + undefined8 uVar11; + undefined8 uVar12; + double dVar13; + undefined8 uVar14; + undefined8 uVar15; + double dVar16; + double dVar17; + double dVar18; + double dVar19; + + pMVar1 = (Mat *)(param_4 + 0xe); + uVar9 = *param_3; + *(undefined4 *)(param_4 + 1) = *(undefined4 *)(param_3 + 1); + /* try { // try from 002edf8c to 003ee413 has its CatchHandler @ 002eddc0 */ + *param_4 = uVar9; + cv::Mat::operator=((Mat *)(param_4 + 2),(Mat *)(param_3 + 2)); + if (pMVar1 != (Mat *)(param_3 + 0xe)) { + if (param_3[0x15] != 0) { + piVar2 = (int *)(param_3[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xe) = *(undefined4 *)(param_3 + 0xe); + if ((*(int *)((long)param_4 + 0x74) < 3) && (iVar3 = *(int *)((long)param_3 + 0x74), iVar3 < 3)) + { + puVar8 = (undefined8 *)param_3[0x17]; + puVar7 = (undefined8 *)param_4[0x17]; + uVar4 = *(undefined4 *)(param_3 + 0xf); + *(undefined4 *)((long)param_4 + 0x7c) = *(undefined4 *)((long)param_3 + 0x7c); + *(int *)((long)param_4 + 0x74) = iVar3; + *(undefined4 *)(param_4 + 0xf) = uVar4; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0xe)); + } + uVar15 = param_3[0x10]; + uVar14 = param_3[0x13]; + uVar12 = param_3[0x12]; + uVar11 = param_3[0x15]; + uVar9 = param_3[0x14]; + param_4[0x11] = param_3[0x11]; + param_4[0x10] = uVar15; + param_4[0x13] = uVar14; + param_4[0x12] = uVar12; + param_4[0x15] = uVar11; + param_4[0x14] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0x1a); + if (pMVar1 != (Mat *)(param_3 + 0x1a)) { + if (param_3[0x21] != 0) { + piVar2 = (int *)(param_3[0x21] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x1a) = *(undefined4 *)(param_3 + 0x1a); + if ((*(int *)((long)param_4 + 0xd4) < 3) && (iVar3 = *(int *)((long)param_3 + 0xd4), iVar3 < 3)) + { + puVar8 = (undefined8 *)param_3[0x23]; + puVar7 = (undefined8 *)param_4[0x23]; + uVar4 = *(undefined4 *)(param_3 + 0x1b); + *(undefined4 *)((long)param_4 + 0xdc) = *(undefined4 *)((long)param_3 + 0xdc); + *(int *)((long)param_4 + 0xd4) = iVar3; + *(undefined4 *)(param_4 + 0x1b) = uVar4; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0x1a)); + } + uVar15 = param_3[0x1c]; + uVar14 = param_3[0x1f]; + uVar12 = param_3[0x1e]; + uVar11 = param_3[0x21]; + uVar9 = param_3[0x20]; + param_4[0x1d] = param_3[0x1d]; + param_4[0x1c] = uVar15; + param_4[0x1f] = uVar14; + param_4[0x1e] = uVar12; + param_4[0x21] = uVar11; + param_4[0x20] = uVar9; + } + dVar19 = (double)param_3[0x26]; + dVar18 = (double)param_3[0x27]; + uVar9 = param_3[0x29]; + param_4[0x28] = param_3[0x28]; + param_4[0x29] = uVar9; + uVar9 = param_3[0x2b]; + param_4[0x2a] = param_3[0x2a]; + param_4[0x2b] = uVar9; + dVar17 = param_2[1]; + dVar13 = param_2[2]; + dVar10 = param_2[3]; + dVar16 = *param_2; + param_4[0x26] = -dVar19; + param_4[0x27] = -dVar18; + param_4[0x29] = dVar17 - (double)param_4[0x29]; + param_4[0x28] = dVar16 - (double)param_4[0x28]; + param_4[0x2a] = dVar13 - (double)param_4[0x2a]; + param_4[0x2b] = dVar10 - (double)param_4[0x2b]; + return; +} + + +================================================================== + +### FUNC 002ee190 (744 bytes) name=FUN_002ee190 + +void FUN_002ee190(undefined8 param_1,undefined8 *param_2,double *param_3,undefined8 *param_4) + +{ + Mat *pMVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + + pMVar1 = (Mat *)(param_4 + 2); + uVar3 = *(undefined4 *)(param_2 + 1); + *param_4 = *param_2; + *(undefined4 *)(param_4 + 1) = uVar3; + if (pMVar1 != (Mat *)(param_2 + 2)) { + if (param_2[9] != 0) { + piVar2 = (int *)(param_2[9] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 2) = *(undefined4 *)(param_2 + 2); + if ((*(int *)((long)param_4 + 0x14) < 3) && (iVar4 = *(int *)((long)param_2 + 0x14), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_2[0xb]; + puVar7 = (undefined8 *)param_4[0xb]; + uVar3 = *(undefined4 *)(param_2 + 3); + *(undefined4 *)((long)param_4 + 0x1c) = *(undefined4 *)((long)param_2 + 0x1c); + *(int *)((long)param_4 + 0x14) = iVar4; + *(undefined4 *)(param_4 + 3) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_2 + 2)); + } + uVar13 = param_2[4]; + uVar12 = param_2[7]; + uVar11 = param_2[6]; + uVar10 = param_2[9]; + uVar9 = param_2[8]; + param_4[5] = param_2[5]; + param_4[4] = uVar13; + param_4[7] = uVar12; + param_4[6] = uVar11; + param_4[9] = uVar10; + param_4[8] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0xe); + if (pMVar1 != (Mat *)(param_2 + 0xe)) { + if (param_2[0x15] != 0) { + piVar2 = (int *)(param_2[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xe) = *(undefined4 *)(param_2 + 0xe); + if ((*(int *)((long)param_4 + 0x74) < 3) && (iVar4 = *(int *)((long)param_2 + 0x74), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_2[0x17]; + puVar7 = (undefined8 *)param_4[0x17]; + uVar3 = *(undefined4 *)(param_2 + 0xf); + *(undefined4 *)((long)param_4 + 0x7c) = *(undefined4 *)((long)param_2 + 0x7c); + *(int *)((long)param_4 + 0x74) = iVar4; + *(undefined4 *)(param_4 + 0xf) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_2 + 0xe)); + } + uVar13 = param_2[0x10]; + uVar12 = param_2[0x13]; + uVar11 = param_2[0x12]; + uVar10 = param_2[0x15]; + uVar9 = param_2[0x14]; + param_4[0x11] = param_2[0x11]; + param_4[0x10] = uVar13; + param_4[0x13] = uVar12; + param_4[0x12] = uVar11; + param_4[0x15] = uVar10; + param_4[0x14] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0x1a); + if (pMVar1 != (Mat *)(param_2 + 0x1a)) { + if (param_2[0x21] != 0) { + piVar2 = (int *)(param_2[0x21] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x1a) = *(undefined4 *)(param_2 + 0x1a); + if ((*(int *)((long)param_4 + 0xd4) < 3) && (iVar4 = *(int *)((long)param_2 + 0xd4), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_2[0x23]; + puVar7 = (undefined8 *)param_4[0x23]; + uVar3 = *(undefined4 *)(param_2 + 0x1b); + *(undefined4 *)((long)param_4 + 0xdc) = *(undefined4 *)((long)param_2 + 0xdc); + *(int *)((long)param_4 + 0xd4) = iVar4; + *(undefined4 *)(param_4 + 0x1b) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_2 + 0x1a)); + } + uVar13 = param_2[0x1c]; + uVar12 = param_2[0x1f]; + uVar11 = param_2[0x1e]; + uVar10 = param_2[0x21]; + uVar9 = param_2[0x20]; + param_4[0x1d] = param_2[0x1d]; + param_4[0x1c] = uVar13; + param_4[0x1f] = uVar12; + param_4[0x1e] = uVar11; + param_4[0x21] = uVar10; + param_4[0x20] = uVar9; + } + uVar9 = param_2[0x26]; + param_4[0x27] = param_2[0x27]; + param_4[0x26] = uVar9; + uVar9 = param_2[0x29]; + param_4[0x28] = param_2[0x28]; + param_4[0x29] = uVar9; + uVar9 = param_2[0x2b]; + param_4[0x2a] = param_2[0x2a]; + param_4[0x2b] = uVar9; + param_4[0x28] = (double)param_4[0x28] + *param_3; + param_4[0x29] = (double)param_4[0x29] + param_3[1]; + param_4[0x2a] = (double)param_4[0x2a] + param_3[2]; + param_4[0x2b] = (double)param_4[0x2b] + param_3[3]; + return; +} + + +================================================================== + +### FUNC 002ee478 (744 bytes) name=FUN_002ee478 + +void FUN_002ee478(double param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4) + +{ + Mat *pMVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + double dVar12; + undefined8 uVar13; + undefined8 uVar14; + double dVar15; + + pMVar1 = (Mat *)(param_4 + 2); + uVar3 = *(undefined4 *)(param_3 + 1); + *param_4 = *param_3; + *(undefined4 *)(param_4 + 1) = uVar3; + if (pMVar1 != (Mat *)(param_3 + 2)) { + if (param_3[9] != 0) { + piVar2 = (int *)(param_3[9] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 2) = *(undefined4 *)(param_3 + 2); + if ((*(int *)((long)param_4 + 0x14) < 3) && (iVar4 = *(int *)((long)param_3 + 0x14), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0xb]; + puVar7 = (undefined8 *)param_4[0xb]; + uVar3 = *(undefined4 *)(param_3 + 3); + *(undefined4 *)((long)param_4 + 0x1c) = *(undefined4 *)((long)param_3 + 0x1c); + *(int *)((long)param_4 + 0x14) = iVar4; + *(undefined4 *)(param_4 + 3) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 2)); + } + uVar14 = param_3[4]; + uVar13 = param_3[7]; + uVar11 = param_3[6]; + uVar10 = param_3[9]; + uVar9 = param_3[8]; + param_4[5] = param_3[5]; + param_4[4] = uVar14; + param_4[7] = uVar13; + param_4[6] = uVar11; + param_4[9] = uVar10; + param_4[8] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0xe); + if (pMVar1 != (Mat *)(param_3 + 0xe)) { + if (param_3[0x15] != 0) { + piVar2 = (int *)(param_3[0x15] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xe) = *(undefined4 *)(param_3 + 0xe); + if ((*(int *)((long)param_4 + 0x74) < 3) && (iVar4 = *(int *)((long)param_3 + 0x74), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x17]; + /* try { // try from 002ee704 to 003ee707 has its CatchHandler @ 002ee860 */ + puVar7 = (undefined8 *)param_4[0x17]; + uVar3 = *(undefined4 *)(param_3 + 0xf); + *(undefined4 *)((long)param_4 + 0x7c) = *(undefined4 *)((long)param_3 + 0x7c); + *(int *)((long)param_4 + 0x74) = iVar4; + *(undefined4 *)(param_4 + 0xf) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0xe)); + } + uVar14 = param_3[0x10]; + uVar13 = param_3[0x13]; + uVar11 = param_3[0x12]; + uVar10 = param_3[0x15]; + uVar9 = param_3[0x14]; + param_4[0x11] = param_3[0x11]; + param_4[0x10] = uVar14; + param_4[0x13] = uVar13; + param_4[0x12] = uVar11; + param_4[0x15] = uVar10; + param_4[0x14] = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0x1a); + if (pMVar1 != (Mat *)(param_3 + 0x1a)) { + if (param_3[0x21] != 0) { + piVar2 = (int *)(param_3[0x21] + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x1a) = *(undefined4 *)(param_3 + 0x1a); + if ((*(int *)((long)param_4 + 0xd4) < 3) && (iVar4 = *(int *)((long)param_3 + 0xd4), iVar4 < 3)) + { + puVar8 = (undefined8 *)param_3[0x23]; + puVar7 = (undefined8 *)param_4[0x23]; + uVar3 = *(undefined4 *)(param_3 + 0x1b); + *(undefined4 *)((long)param_4 + 0xdc) = *(undefined4 *)((long)param_3 + 0xdc); + *(int *)((long)param_4 + 0xd4) = iVar4; + *(undefined4 *)(param_4 + 0x1b) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + /* try { // try from 002ee6fc to 003ee6ff has its CatchHandler @ 002ee830 */ + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0x1a)); + } + uVar14 = param_3[0x1c]; + uVar13 = param_3[0x1f]; + uVar11 = param_3[0x1e]; + uVar10 = param_3[0x21]; + uVar9 = param_3[0x20]; + param_4[0x1d] = param_3[0x1d]; + param_4[0x1c] = uVar14; + param_4[0x1f] = uVar13; + param_4[0x1e] = uVar11; + param_4[0x21] = uVar10; + param_4[0x20] = uVar9; + } + dVar15 = (double)param_3[0x26]; + dVar12 = (double)param_3[0x27]; + uVar9 = param_3[0x29]; + param_4[0x28] = param_3[0x28]; + param_4[0x29] = uVar9; + uVar9 = param_3[0x2b]; + param_4[0x2a] = param_3[0x2a]; + param_4[0x2b] = uVar9; + param_4[0x26] = param_1 * dVar15; + param_4[0x27] = param_1 * dVar12; + param_4[0x28] = param_1 * (double)param_4[0x28]; + /* try { // try from 002ee6a8 to 003ee6ab has its CatchHandler @ 002ee860 */ + param_4[0x29] = param_1 * (double)param_4[0x29]; + param_4[0x2a] = param_1 * (double)param_4[0x2a]; + param_4[0x2b] = param_1 * (double)param_4[0x2b]; + return; +} + + +================================================================== + +### FUNC 002ee760 (228 bytes) name=MatExpr + +/* cv::MatExpr::MatExpr() */ + +void __thiscall cv::MatExpr::MatExpr(MatExpr *this) + +{ + *(undefined8 *)this = 0; + *(undefined4 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0x42ff0000; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + *(undefined4 *)(this + 0x1c) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x40) = 0; + *(undefined8 *)(this + 0x48) = 0; + *(MatExpr **)(this + 0x50) = this + 0x18; + *(MatExpr **)(this + 0x58) = this + 0x60; + *(undefined8 *)(this + 0x68) = 0; + *(undefined8 *)(this + 0x60) = 0; + *(undefined4 *)(this + 0x70) = 0x42ff0000; + *(undefined4 *)(this + 0x74) = 0; + *(undefined4 *)(this + 0x78) = 0; + *(undefined4 *)(this + 0x7c) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0xa0) = 0; + *(undefined8 *)(this + 0xa8) = 0; + *(MatExpr **)(this + 0xb0) = this + 0x78; + *(MatExpr **)(this + 0xb8) = this + 0xc0; + *(undefined8 *)(this + 200) = 0; + *(undefined8 *)(this + 0xc0) = 0; + *(undefined4 *)(this + 0xd0) = 0x42ff0000; + *(undefined4 *)(this + 0xd4) = 0; + *(undefined4 *)(this + 0xd8) = 0; + *(undefined4 *)(this + 0xdc) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0x100) = 0; + *(undefined8 *)(this + 0x108) = 0; + *(MatExpr **)(this + 0x110) = this + 0xd8; + *(MatExpr **)(this + 0x118) = this + 0x120; + /* catch() { ... } // from try @ 002ee6fc with catch @ 002ee830 */ + *(undefined8 *)(this + 0x128) = 0; + *(undefined8 *)(this + 0x120) = 0; + *(undefined8 *)(this + 0x138) = 0; + *(undefined8 *)(this + 0x130) = 0; + *(undefined8 *)(this + 0x148) = 0; + *(undefined8 *)(this + 0x140) = 0; + *(undefined8 *)(this + 0x158) = 0; + *(undefined8 *)(this + 0x150) = 0; + return; +} + + +================================================================== + +### FUNC 002ee844 (664 bytes) name=MatExpr + +/* cv::MatExpr::MatExpr(cv::MatOp const*, int, cv::Mat const&, cv::Mat const&, cv::Mat const&, + double, double, cv::Scalar_ const&) */ + +void __thiscall +cv::MatExpr::MatExpr + (MatExpr *this,MatOp *param_1,int param_2,Mat *param_3,Mat *param_4,Mat *param_5, + double param_6,double param_7,Scalar_ *param_8) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + char cVar6; + bool bVar7; + long lVar8; + undefined8 *puVar9; + undefined8 uVar10; + undefined8 *puVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + + /* try { // try from 002ee85c to 003ee85f has its CatchHandler @ 002eddc0 */ + /* catch() { ... } // from try @ 002ede14 with catch @ 002ee860 + catch() { ... } // from try @ 002ede9c with catch @ 002ee860 + catch() { ... } // from try @ 002ee6a8 with catch @ 002ee860 + catch() { ... } // from try @ 002ee704 with catch @ 002ee860 */ + /* catch() { ... } // from try @ 002ede94 with catch @ 002ee868 */ + uVar2 = *(undefined4 *)param_3; + uVar3 = *(undefined4 *)(param_3 + 4); + /* catch() { ... } // from try @ 002eea14 with catch @ 002ee878 */ + uVar4 = *(undefined4 *)(param_3 + 8); + uVar5 = *(undefined4 *)(param_3 + 0xc); + uVar15 = *(undefined8 *)(param_3 + 0x10); + uVar14 = *(undefined8 *)(param_3 + 0x18); + *(MatOp **)this = param_1; + *(int *)(this + 8) = param_2; + *(undefined4 *)(this + 0x10) = uVar2; + uVar13 = *(undefined8 *)(param_3 + 0x20); + uVar12 = *(undefined8 *)(param_3 + 0x28); + uVar10 = *(undefined8 *)(param_3 + 0x30); + lVar8 = *(long *)(param_3 + 0x38); + *(long *)(this + 0x48) = lVar8; + *(undefined4 *)(this + 0x14) = uVar3; + *(undefined4 *)(this + 0x18) = uVar4; + *(undefined4 *)(this + 0x1c) = uVar5; + *(undefined8 *)(this + 0x20) = uVar15; + *(undefined8 *)(this + 0x28) = uVar14; + /* try { // try from 002ee8c4 to 003ee8c7 has its CatchHandler @ 002eea18 */ + *(undefined8 *)(this + 0x30) = uVar13; + *(undefined8 *)(this + 0x38) = uVar12; + *(undefined8 *)(this + 0x40) = uVar10; + *(MatExpr **)(this + 0x50) = this + 0x18; + *(MatExpr **)(this + 0x58) = this + 0x60; + *(undefined8 *)(this + 0x68) = 0; + *(undefined8 *)(this + 0x60) = 0; + if (lVar8 != 0) { + piVar1 = (int *)(lVar8 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + /* try { // try from 002ee900 to 003ee903 has its CatchHandler @ 002ee9d4 */ + if (*(int *)(param_3 + 4) < 3) { + puVar11 = *(undefined8 **)(param_3 + 0x48); + puVar9 = *(undefined8 **)(this + 0x58); + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + } + else { + *(undefined4 *)(this + 0x14) = 0; + Mat::copySize((Mat *)(this + 0x10),param_3); + } + uVar15 = *(undefined8 *)(param_4 + 0x10); + uVar14 = *(undefined8 *)(param_4 + 0x18); + uVar13 = *(undefined8 *)(param_4 + 0x20); + uVar12 = *(undefined8 *)(param_4 + 0x28); + uVar10 = *(undefined8 *)(param_4 + 0x30); + uVar16 = *(undefined8 *)(param_4 + 8); + lVar8 = *(long *)(param_4 + 0x38); + *(undefined8 *)(this + 0x70) = *(undefined8 *)param_4; + *(undefined8 *)(this + 0x78) = uVar16; + *(undefined8 *)(this + 0x80) = uVar15; + *(undefined8 *)(this + 0x88) = uVar14; + *(undefined8 *)(this + 0x90) = uVar13; + *(undefined8 *)(this + 0x98) = uVar12; + *(undefined8 *)(this + 0xa0) = uVar10; + *(long *)(this + 0xa8) = lVar8; + *(MatExpr **)(this + 0xb0) = this + 0x78; + *(MatExpr **)(this + 0xb8) = this + 0xc0; + *(undefined8 *)(this + 200) = 0; + *(undefined8 *)(this + 0xc0) = 0; + if (lVar8 != 0) { + piVar1 = (int *)(lVar8 + 0x14); + do { + /* try { // try from 002ee98c to 003ee9cf has its CatchHandler @ 002eea18 */ + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(param_4 + 4) < 3) { + puVar11 = *(undefined8 **)(param_4 + 0x48); + puVar9 = *(undefined8 **)(this + 0xb8); + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + } + else { + *(undefined4 *)(this + 0x74) = 0; + Mat::copySize((Mat *)(this + 0x70),param_4); + } + uVar15 = *(undefined8 *)(param_5 + 0x10); + uVar14 = *(undefined8 *)(param_5 + 0x18); + /* catch() { ... } // from try @ 002ee900 with catch @ 002ee9d4 */ + uVar13 = *(undefined8 *)(param_5 + 0x20); + uVar12 = *(undefined8 *)(param_5 + 0x28); + uVar10 = *(undefined8 *)(param_5 + 0x30); + uVar16 = *(undefined8 *)(param_5 + 8); + lVar8 = *(long *)(param_5 + 0x38); + *(undefined8 *)(this + 0xd0) = *(undefined8 *)param_5; + *(undefined8 *)(this + 0xd8) = uVar16; + *(undefined8 *)(this + 0xe0) = uVar15; + *(undefined8 *)(this + 0xe8) = uVar14; + *(undefined8 *)(this + 0xf0) = uVar13; + *(undefined8 *)(this + 0xf8) = uVar12; + *(undefined8 *)(this + 0x100) = uVar10; + *(long *)(this + 0x108) = lVar8; + *(MatExpr **)(this + 0x110) = this + 0xd8; + *(MatExpr **)(this + 0x118) = this + 0x120; + /* try { // try from 002eea14 to 003eea17 has its CatchHandler @ 002ee878 */ + *(undefined8 *)(this + 0x128) = 0; + /* catch() { ... } // from try @ 002ee8c4 with catch @ 002eea18 + catch() { ... } // from try @ 002ee98c with catch @ 002eea18 */ + *(undefined8 *)(this + 0x120) = 0; + if (lVar8 != 0) { + /* catch() { ... } // from try @ 002eea94 with catch @ 002eea20 + catch() { ... } // from try @ 002eeb10 with catch @ 002eea20 + catch() { ... } // from try @ 002eeb98 with catch @ 002eea20 + catch() { ... } // from try @ 002eefbc with catch @ 002eea20 + catch() { ... } // from try @ 002ef0ec with catch @ 002eea20 + catch() { ... } // from try @ 002ef208 with catch @ 002eea20 + catch() { ... } // from try @ 002ef26c with catch @ 002eea20 + catch() { ... } // from try @ 002ef29c with catch @ 002eea20 + catch() { ... } // from try @ 002ef324 with catch @ 002eea20 + catch() { ... } // from try @ 002ef3bc with catch @ 002eea20 + catch() { ... } // from try @ 002ef3d0 with catch @ 002eea20 + catch() { ... } // from try @ 002ef3e4 with catch @ 002eea20 + catch() { ... } // from try @ 002ef3f8 with catch @ 002eea20 + catch() { ... } // from try @ 002ef40c with catch @ 002eea20 + catch() { ... } // from try @ 002ef420 with catch @ 002eea20 */ + piVar1 = (int *)(lVar8 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(param_5 + 4) < 3) { + puVar11 = *(undefined8 **)(param_5 + 0x48); + puVar9 = *(undefined8 **)(this + 0x118); + *puVar9 = *puVar11; + puVar9[1] = puVar11[1]; + } + else { + *(undefined4 *)(this + 0xd4) = 0; + Mat::copySize((Mat *)(this + 0xd0),param_5); + } + *(double *)(this + 0x130) = param_6; + *(double *)(this + 0x138) = param_7; + *(undefined8 *)(this + 0x140) = *(undefined8 *)param_8; + *(undefined8 *)(this + 0x148) = *(undefined8 *)(param_8 + 8); + *(undefined8 *)(this + 0x150) = *(undefined8 *)(param_8 + 0x10); + *(undefined8 *)(this + 0x158) = *(undefined8 *)(param_8 + 0x18); + /* try { // try from 002eea94 to 003eeadb has its CatchHandler @ 002eea20 */ + return; +} + + +================================================================== + +### FUNC 002eeb20 (20 bytes) name=MatOp + +/* cv::MatOp::MatOp() */ + +void __thiscall cv::MatOp::MatOp(MatOp *this) + +{ + *(undefined **)this = PTR_vtable_00501e88 + 0x10; + return; +} + + +================================================================== + +### FUNC 002eeb34 (136 bytes) name=FUN_002eeb34 + +undefined8 * FUN_002eeb34(void) + +{ + int iVar1; + + if (((DAT_00531f78 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00531f78), iVar1 != 0)) { + cv::MatOp::MatOp((MatOp *)&DAT_00531f98); + DAT_00531f98 = &PTR_FUN_004fc530; + __cxa_guard_release(&DAT_00531f78); + /* try { // try from 002eeb90 to 003eeb93 has its CatchHandler @ 002ef3ac */ + /* try { // try from 002eeb98 to 003eef73 has its CatchHandler @ 002eea20 */ + __cxa_atexit(FUN_002eebd4,&DAT_00531f98,&DAT_00502000); + return &DAT_00531f98; + } + return &DAT_00531f98; +} + + +================================================================== + +### FUNC 002eebd0 (4 bytes) name=~MatOp + +/* cv::MatOp::~MatOp() */ + +void __thiscall cv::MatOp::~MatOp(MatOp *this) + +{ + return; +} + + +================================================================== + +### FUNC 002eebd4 (16 bytes) name=FUN_002eebd4 + +void FUN_002eebd4(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc530; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eebe4 (44 bytes) name=FUN_002eebe4 + +void FUN_002eebe4(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc530; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eec10 (16 bytes) name=FUN_002eec10 + +void FUN_002eec10(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc440; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eec20 (44 bytes) name=FUN_002eec20 + +void FUN_002eec20(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc440; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eec4c (16 bytes) name=FUN_002eec4c + +void FUN_002eec4c(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc350; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eec5c (44 bytes) name=FUN_002eec5c + +void FUN_002eec5c(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc350; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eec88 (16 bytes) name=FUN_002eec88 + +void FUN_002eec88(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc260; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eec98 (44 bytes) name=FUN_002eec98 + +void FUN_002eec98(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc260; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eecc4 (16 bytes) name=FUN_002eecc4 + +void FUN_002eecc4(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc170; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eecd4 (44 bytes) name=FUN_002eecd4 + +void FUN_002eecd4(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc170; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eed00 (16 bytes) name=FUN_002eed00 + +void FUN_002eed00(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc080; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eed10 (44 bytes) name=FUN_002eed10 + +void FUN_002eed10(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fc080; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eed3c (16 bytes) name=FUN_002eed3c + +void FUN_002eed3c(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fbf90; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eed4c (44 bytes) name=FUN_002eed4c + +void FUN_002eed4c(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fbf90; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eed78 (16 bytes) name=FUN_002eed78 + +void FUN_002eed78(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fbea0; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eed88 (44 bytes) name=FUN_002eed88 + +void FUN_002eed88(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fbea0; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eedb4 (16 bytes) name=FUN_002eedb4 + +void FUN_002eedb4(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fbdb0; + cv::MatOp::~MatOp(param_1); + return; +} + + +================================================================== + +### FUNC 002eedc4 (44 bytes) name=FUN_002eedc4 + +void FUN_002eedc4(MatOp *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004fbdb0; + cv::MatOp::~MatOp(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 002eedf0 (32 bytes) name=~MatOp + +/* cv::MatOp::~MatOp() */ + +void __thiscall cv::MatOp::~MatOp(MatOp *this) + +{ + ~MatOp(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 002eee10 (908 bytes) name=matmul + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::matmul(cv::MatExpr const&, cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::matmul(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + long *plVar1; + MatOp *pMVar2; + int iVar3; + int iVar4; + double dVar5; + undefined8 uStack_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + undefined8 *local_240; + undefined8 *local_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar2 = *(MatOp **)param_2; + if (pMVar2 == this) { + local_238 = &local_230; + local_1d8 = &local_1d0; + plVar1 = *(long **)param_1; + uStack_228 = 0; + local_230 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + local_240 = &uStack_278; + local_1e0 = &uStack_218; + uStack_278 = _UNK_002ef238; + local_280 = _DAT_002ef230; + local_270 = 0; + uStack_218 = _UNK_002ef238; + local_220 = _DAT_002ef230; + local_268 = 0; + local_260 = 0; + local_258 = 0; + local_250 = 0; + local_248 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + if (plVar1 == &DAT_00531fa0) { + dVar5 = *(double *)(param_1 + 0x130); + Mat::operator=((Mat *)&local_280,(Mat *)(param_1 + 0x10)); + iVar4 = 3; + iVar3 = 1; + } + else { + /* try { // try from 002ef0a8 to 003ef0ab has its CatchHandler @ 002ef45c */ + if (((plVar1 == &DAT_00531fa8) && + (((*(long *)(param_1 + 0x80) == 0 || (*(double *)(param_1 + 0x138) == 0.0)) && + (*(double *)(param_1 + 0x140) == 0.0)))) && + (((*(double *)(param_1 + 0x148) == 0.0 && (*(double *)(param_1 + 0x150) == 0.0)) && + (*(double *)(param_1 + 0x158) == 0.0)))) { + /* try { // try from 002ef0ec to 003ef1b7 has its CatchHandler @ 002eea20 */ + dVar5 = *(double *)(param_1 + 0x130); + Mat::operator=((Mat *)&local_280,(Mat *)(param_1 + 0x10)); + iVar4 = 2; + iVar3 = 0; + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_1,(Mat *)&local_280,0xffffffff); + iVar4 = 2; + iVar3 = 0; + dVar5 = 1.0; + } + } + plVar1 = *(long **)param_2; + if (plVar1 == &DAT_00531fa0) { + dVar5 = dVar5 * *(double *)(param_2 + 0x130); + Mat::operator=((Mat *)&local_220,(Mat *)(param_2 + 0x10)); + } + else { + iVar4 = iVar3; + if ((((plVar1 == &DAT_00531fa8) && + ((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) && + (*(double *)(param_2 + 0x140) == 0.0)) && + (((*(double *)(param_2 + 0x148) == 0.0 && (*(double *)(param_2 + 0x150) == 0.0)) && + (*(double *)(param_2 + 0x158) == 0.0)))) { + dVar5 = dVar5 * *(double *)(param_2 + 0x130); + Mat::operator=((Mat *)&local_220,(Mat *)(param_2 + 0x10)); + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_2,(Mat *)&local_220,0xffffffff); + } + } + local_178 = &local_170; + uStack_298 = 0; + uStack_2a0 = 0; + uStack_1b8 = _UNK_002ef238; + local_1c0 = _DAT_002ef230; + local_180 = &uStack_1b8; + uStack_288 = 0; + local_290 = 0; + /* try { // try from 002eefb4 to 003eefb7 has its CatchHandler @ 002ef3e8 */ + /* try { // try from 002eefbc to 003eefcb has its CatchHandler @ 002eea20 */ + uStack_168 = 0; + local_170 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,(MatOp *)&DAT_00531f88,iVar4,(Mat *)&local_280, + (Mat *)&local_220,(Mat *)&local_1c0,dVar5,1.0,(Scalar_ *)&uStack_2a0); + *(undefined8 *)param_3 = local_160; + *(undefined4 *)(param_3 + 8) = local_158; + Mat::operator=((Mat *)(param_3 + 0x10),aMStack_150); + /* try { // try from 002ef008 to 003ef00b has its CatchHandler @ 002ef45c */ + Mat::operator=((Mat *)(param_3 + 0x70),aMStack_f0); + Mat::operator=((Mat *)(param_3 + 0xd0),aMStack_90); + /* try { // try from 002ef030 to 003ef033 has its CatchHandler @ 002ef424 */ + *(undefined8 *)(param_3 + 0x138) = uStack_28; + *(undefined8 *)(param_3 + 0x130) = local_30; + *(undefined8 *)(param_3 + 0x140) = local_20; + *(undefined8 *)(param_3 + 0x148) = uStack_18; + *(undefined8 *)(param_3 + 0x150) = local_10; + *(undefined8 *)(param_3 + 0x158) = uStack_8; + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + fastFree(local_1d8); + } + Mat::release((Mat *)&local_280); + if (local_238 != &local_230) { + fastFree(local_238); + } + } + else { + (**(code **)(*(long *)pMVar2 + 0xb8))(pMVar2); + } + return; +} + + +================================================================== + +### FUNC 002ef240 (520 bytes) name=invert + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::invert(cv::MatExpr const&, int, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::invert(MatOp *this,MatExpr *param_1,int param_2,MatExpr *param_3) + +{ + undefined8 uStack_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + undefined8 *local_240; + undefined8 *local_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 uStack_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + /* try { // try from 002ef264 to 003ef267 has its CatchHandler @ 002ef3fc */ + /* try { // try from 002ef26c to 003ef26f has its CatchHandler @ 002eea20 */ + local_178 = &local_170; + /* try { // try from 002ef278 to 003ef27b has its CatchHandler @ 002ef45c */ + local_1a8 = 0; + local_180 = &local_1b8; + uStack_1c0 = DAT_002ef4d0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + /* try { // try from 002ef29c to 003ef2df has its CatchHandler @ 002eea20 */ + local_188 = 0; + local_1b8 = 0; + local_1b0 = 0; + local_168 = 0; + local_170 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_1c0,0xffffffff); + uStack_298 = 0; + uStack_2a0 = 0; + local_1d8 = &local_1d0; + local_238 = &local_230; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_218 = _UNK_002ef4e8; + local_220 = _DAT_002ef4e0; + uStack_278 = _UNK_002ef4e8; + local_280 = _DAT_002ef4e0; + local_1e0 = &uStack_218; + uStack_228 = 0; + local_230 = 0; + local_240 = &uStack_278; + uStack_288 = 0; + local_290 = 0; + /* try { // try from 002ef31c to 003ef31f has its CatchHandler @ 002ef410 */ + /* try { // try from 002ef324 to 003ef3a7 has its CatchHandler @ 002eea20 */ + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_270 = 0; + local_268 = 0; + local_260 = 0; + local_258 = 0; + local_250 = 0; + local_248 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,(MatOp *)&DAT_00531fb0,param_2,(Mat *)&uStack_1c0, + (Mat *)&local_220,(Mat *)&local_280,1.0,0.0,(Scalar_ *)&uStack_2a0); + *(undefined8 *)param_3 = local_160; + *(undefined4 *)(param_3 + 8) = local_158; + Mat::operator=((Mat *)(param_3 + 0x10),aMStack_150); + Mat::operator=((Mat *)(param_3 + 0x70),aMStack_f0); + Mat::operator=((Mat *)(param_3 + 0xd0),aMStack_90); + /* catch() { ... } // from try @ 002eeb90 with catch @ 002ef3ac */ + /* try { // try from 002ef3bc to 003ef3bf has its CatchHandler @ 002eea20 */ + /* catch() { ... } // from try @ 002ef200 with catch @ 002ef3c0 */ + *(undefined8 *)(param_3 + 0x138) = uStack_28; + *(undefined8 *)(param_3 + 0x130) = local_30; + *(undefined8 *)(param_3 + 0x140) = local_20; + *(undefined8 *)(param_3 + 0x148) = uStack_18; + /* try { // try from 002ef3d0 to 003ef3d3 has its CatchHandler @ 002eea20 */ + *(undefined8 *)(param_3 + 0x150) = local_10; + *(undefined8 *)(param_3 + 0x158) = uStack_8; + /* catch() { ... } // from try @ 002eeb08 with catch @ 002ef3d4 */ + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_280); + /* try { // try from 002ef3e4 to 003ef3e7 has its CatchHandler @ 002eea20 */ + /* catch() { ... } // from try @ 002eefb4 with catch @ 002ef3e8 */ + if (local_238 != &local_230) { + fastFree(local_238); + } + /* try { // try from 002ef3f8 to 003ef3fb has its CatchHandler @ 002eea20 */ + Mat::release((Mat *)&local_220); + /* catch() { ... } // from try @ 002ef264 with catch @ 002ef3fc */ + if (local_1d8 != &local_1d0) { + /* try { // try from 002ef40c to 003ef40f has its CatchHandler @ 002eea20 */ + fastFree(local_1d8); + } + /* catch() { ... } // from try @ 002ef31c with catch @ 002ef410 */ + Mat::release((Mat *)&uStack_1c0); + /* try { // try from 002ef420 to 003ef423 has its CatchHandler @ 002eea20 */ + /* catch() { ... } // from try @ 002ef030 with catch @ 002ef424 */ + if (local_178 != &local_170) { + fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 002ef4f0 (680 bytes) name=operator= + +/* cv::MatExpr::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&) */ + +MatExpr * __thiscall cv::MatExpr::operator=(MatExpr *this,MatExpr *param_1) + +{ + Mat *pMVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + + pMVar1 = (Mat *)(this + 0x10); + uVar3 = *(undefined4 *)(param_1 + 8); + *(undefined8 *)this = *(undefined8 *)param_1; + *(undefined4 *)(this + 8) = uVar3; + if (pMVar1 != (Mat *)(param_1 + 0x10)) { + if (*(long *)(param_1 + 0x48) != 0) { + piVar2 = (int *)(*(long *)(param_1 + 0x48) + 0x14); + do { + /* try { // try from 002ef538 to 003ef75f has its CatchHandler @ 002ef480 */ + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + Mat::release(pMVar1); + *(undefined4 *)(this + 0x10) = *(undefined4 *)(param_1 + 0x10); + if ((*(int *)(this + 0x14) < 3) && (iVar4 = *(int *)(param_1 + 0x14), iVar4 < 3)) { + puVar8 = *(undefined8 **)(param_1 + 0x58); + puVar7 = *(undefined8 **)(this + 0x58); + uVar3 = *(undefined4 *)(param_1 + 0x18); + *(undefined4 *)(this + 0x1c) = *(undefined4 *)(param_1 + 0x1c); + *(int *)(this + 0x14) = iVar4; + *(undefined4 *)(this + 0x18) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + Mat::copySize(pMVar1,(Mat *)(param_1 + 0x10)); + } + uVar13 = *(undefined8 *)(param_1 + 0x20); + uVar12 = *(undefined8 *)(param_1 + 0x38); + uVar11 = *(undefined8 *)(param_1 + 0x30); + uVar10 = *(undefined8 *)(param_1 + 0x48); + uVar9 = *(undefined8 *)(param_1 + 0x40); + *(undefined8 *)(this + 0x28) = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(this + 0x20) = uVar13; + *(undefined8 *)(this + 0x38) = uVar12; + *(undefined8 *)(this + 0x30) = uVar11; + *(undefined8 *)(this + 0x48) = uVar10; + *(undefined8 *)(this + 0x40) = uVar9; + } + pMVar1 = (Mat *)(this + 0x70); + if (pMVar1 != (Mat *)(param_1 + 0x70)) { + if (*(long *)(param_1 + 0xa8) != 0) { + piVar2 = (int *)(*(long *)(param_1 + 0xa8) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + Mat::release(pMVar1); + *(undefined4 *)(this + 0x70) = *(undefined4 *)(param_1 + 0x70); + if ((*(int *)(this + 0x74) < 3) && (iVar4 = *(int *)(param_1 + 0x74), iVar4 < 3)) { + puVar8 = *(undefined8 **)(param_1 + 0xb8); + puVar7 = *(undefined8 **)(this + 0xb8); + uVar3 = *(undefined4 *)(param_1 + 0x78); + *(undefined4 *)(this + 0x7c) = *(undefined4 *)(param_1 + 0x7c); + *(int *)(this + 0x74) = iVar4; + *(undefined4 *)(this + 0x78) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + Mat::copySize(pMVar1,(Mat *)(param_1 + 0x70)); + } + uVar13 = *(undefined8 *)(param_1 + 0x80); + uVar12 = *(undefined8 *)(param_1 + 0x98); + uVar11 = *(undefined8 *)(param_1 + 0x90); + uVar10 = *(undefined8 *)(param_1 + 0xa8); + uVar9 = *(undefined8 *)(param_1 + 0xa0); + *(undefined8 *)(this + 0x88) = *(undefined8 *)(param_1 + 0x88); + *(undefined8 *)(this + 0x80) = uVar13; + *(undefined8 *)(this + 0x98) = uVar12; + *(undefined8 *)(this + 0x90) = uVar11; + *(undefined8 *)(this + 0xa8) = uVar10; + *(undefined8 *)(this + 0xa0) = uVar9; + } + pMVar1 = (Mat *)(this + 0xd0); + if (pMVar1 != (Mat *)(param_1 + 0xd0)) { + if (*(long *)(param_1 + 0x108) != 0) { + piVar2 = (int *)(*(long *)(param_1 + 0x108) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + Mat::release(pMVar1); + *(undefined4 *)(this + 0xd0) = *(undefined4 *)(param_1 + 0xd0); + if ((*(int *)(this + 0xd4) < 3) && (iVar4 = *(int *)(param_1 + 0xd4), iVar4 < 3)) { + puVar8 = *(undefined8 **)(param_1 + 0x118); + puVar7 = *(undefined8 **)(this + 0x118); + uVar3 = *(undefined4 *)(param_1 + 0xd8); + *(undefined4 *)(this + 0xdc) = *(undefined4 *)(param_1 + 0xdc); + *(int *)(this + 0xd4) = iVar4; + *(undefined4 *)(this + 0xd8) = uVar3; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + Mat::copySize(pMVar1,(Mat *)(param_1 + 0xd0)); + } + uVar13 = *(undefined8 *)(param_1 + 0xe0); + uVar12 = *(undefined8 *)(param_1 + 0xf8); + uVar11 = *(undefined8 *)(param_1 + 0xf0); + uVar10 = *(undefined8 *)(param_1 + 0x108); + uVar9 = *(undefined8 *)(param_1 + 0x100); + *(undefined8 *)(this + 0xe8) = *(undefined8 *)(param_1 + 0xe8); + *(undefined8 *)(this + 0xe0) = uVar13; + *(undefined8 *)(this + 0xf8) = uVar12; + *(undefined8 *)(this + 0xf0) = uVar11; + *(undefined8 *)(this + 0x108) = uVar10; + *(undefined8 *)(this + 0x100) = uVar9; + } + uVar9 = *(undefined8 *)(param_1 + 0x130); + *(undefined8 *)(this + 0x138) = *(undefined8 *)(param_1 + 0x138); + *(undefined8 *)(this + 0x130) = uVar9; + uVar9 = *(undefined8 *)(param_1 + 0x148); + *(undefined8 *)(this + 0x140) = *(undefined8 *)(param_1 + 0x140); + *(undefined8 *)(this + 0x148) = uVar9; + uVar9 = *(undefined8 *)(param_1 + 0x158); + *(undefined8 *)(this + 0x150) = *(undefined8 *)(param_1 + 0x150); + *(undefined8 *)(this + 0x158) = uVar9; + return this; +} + + +================================================================== + +### FUNC 002ef7a0 (1252 bytes) name=roi + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::roi(cv::MatExpr const&, cv::Range const&, cv::Range const&, cv::MatExpr&) const */ + +void __thiscall +cv::MatOp::roi(MatOp *this,MatExpr *param_1,Range *param_2,Range *param_3,MatExpr *param_4) + +{ + char cVar1; + undefined8 local_318; + undefined8 local_310; + undefined8 local_308; + undefined8 local_300; + undefined8 uStack_2f8; + undefined8 local_2f0; + undefined8 uStack_2e8; + undefined8 local_2e0; + undefined8 uStack_2d8; + undefined8 local_2d0; + undefined8 local_2c8; + undefined8 local_2c0; + undefined8 local_2b8; + undefined8 local_2b0; + undefined8 local_2a8; + undefined8 *local_2a0; + undefined8 *local_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + undefined8 *local_240; + undefined8 *local_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [56]; + undefined1 *local_118; + undefined1 auStack_110 [32]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + /* try { // try from 002ef7a0 to 003ef7a3 has its CatchHandler @ 002ef7e4 */ + /* try { // try from 002ef7a8 to 003ef7c7 has its CatchHandler @ 002ef480 */ + cVar1 = (**(code **)(*(long *)this + 0x10))(); + /* catch() { ... } // from try @ 002ef7a0 with catch @ 002ef7e4 */ + if (cVar1 == '\0') { + local_1d8 = &local_1d0; + local_1e0 = &uStack_218; + /* try { // try from 002efad0 to 003efad3 has its CatchHandler @ 002f06b0 */ + local_220 = DAT_002efe40; + uStack_218 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&local_220,0xffffffff) + ; + /* try { // try from 002efb24 to 003efb27 has its CatchHandler @ 002f06d4 */ + local_310 = *(undefined8 *)param_2; + local_308 = *(undefined8 *)param_3; + /* try { // try from 002efb2c to 003efb2f has its CatchHandler @ 002f06b0 */ + Mat::Mat((Mat *)&local_1c0,(Mat *)&local_220,(Range *)&local_310,(Range *)&local_308); + uStack_2f8 = 0; + local_300 = 0; + local_298 = &local_290; + local_238 = &local_230; + local_270 = 0; + local_268 = 0; + uStack_278 = _UNK_002efe38; + local_280 = _DAT_002efe30; + local_240 = &uStack_278; + local_260 = 0; + uStack_2d8 = _UNK_002efe38; + local_2e0 = _DAT_002efe30; + local_258 = 0; + uStack_288 = 0; + local_290 = 0; + local_250 = 0; + uStack_2e8 = 0; + local_2f0 = 0; + local_248 = 0; + local_2a0 = &uStack_2d8; + uStack_228 = 0; + local_230 = 0; + local_2d0 = 0; + local_2c8 = 0; + local_2c0 = 0; + local_2b8 = 0; + local_2b0 = 0; + local_2a8 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,(MatOp *)&DAT_00531f80,0,(Mat *)&local_1c0, + (Mat *)&local_2e0,(Mat *)&local_280,1.0,1.0,(Scalar_ *)&local_300); + MatExpr::operator=(param_4,(MatExpr *)&local_160); + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_280); + if (local_238 != &local_230) { + fastFree(local_238); + } + Mat::release((Mat *)&local_2e0); + if (local_298 != &local_290) { + fastFree(local_298); + } + Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + fastFree(local_1d8); + } + } + else { + /* try { // try from 002ef7f4 to 003ef807 has its CatchHandler @ 002ef480 */ + local_238 = &local_230; + local_1d8 = &local_1d0; + local_178 = &local_170; + /* catch() { ... } // from try @ 002ef998 with catch @ 002ef80c */ + local_240 = &uStack_278; + local_1e0 = &uStack_218; + uStack_278 = _UNK_002efe38; + local_280 = _DAT_002efe30; + local_270 = 0; + uStack_218 = _UNK_002efe38; + local_220 = _DAT_002efe30; + local_268 = 0; + uStack_1b8 = _UNK_002efe38; + local_1c0 = _DAT_002efe30; + local_260 = 0; + local_180 = &uStack_1b8; + local_258 = 0; + local_250 = 0; + /* try { // try from 002ef850 to 003ef853 has its CatchHandler @ 002ef99c */ + local_248 = 0; + local_210 = 0; + uStack_228 = 0; + local_230 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + /* try { // try from 002ef878 to 003ef87b has its CatchHandler @ 002ef958 */ + local_1f0 = 0; + local_1e8 = 0; + local_1b0 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + uStack_168 = 0; + local_170 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,*(MatOp **)param_1,*(int *)(param_1 + 8), + (Mat *)&local_280,(Mat *)&local_220,(Mat *)&local_1c0, + *(double *)(param_1 + 0x130),*(double *)(param_1 + 0x138), + (Scalar_ *)(param_1 + 0x140)); + *(undefined8 *)param_4 = local_160; + *(undefined4 *)(param_4 + 8) = local_158; + Mat::operator=((Mat *)(param_4 + 0x10),aMStack_150); + Mat::operator=((Mat *)(param_4 + 0x70),aMStack_f0); + Mat::operator=((Mat *)(param_4 + 0xd0),aMStack_90); + /* try { // try from 002ef914 to 003ef953 has its CatchHandler @ 002ef99c */ + *(undefined8 *)(param_4 + 0x138) = uStack_28; + *(undefined8 *)(param_4 + 0x130) = local_30; + *(undefined8 *)(param_4 + 0x140) = local_20; + *(undefined8 *)(param_4 + 0x148) = uStack_18; + *(undefined8 *)(param_4 + 0x150) = local_10; + *(undefined8 *)(param_4 + 0x158) = uStack_8; + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + Mat::release((Mat *)&local_220); + /* catch() { ... } // from try @ 002ef878 with catch @ 002ef958 */ + if (local_1d8 != &local_1d0) { + fastFree(local_1d8); + } + Mat::release((Mat *)&local_280); + if (local_238 != &local_230) { + fastFree(local_238); + } + if (*(long *)(param_1 + 0x20) != 0) { + local_318 = *(undefined8 *)param_2; + /* try { // try from 002ef998 to 003ef99b has its CatchHandler @ 002ef80c */ + local_300 = *(undefined8 *)param_3; + /* catch() { ... } // from try @ 002ef850 with catch @ 002ef99c + catch() { ... } // from try @ 002ef914 with catch @ 002ef99c */ + /* catch() { ... } // from try @ 002efa00 with catch @ 002ef9a4 + catch() { ... } // from try @ 002efa8c with catch @ 002ef9a4 + catch() { ... } // from try @ 002efd70 with catch @ 002ef9a4 + catch() { ... } // from try @ 002eff38 with catch @ 002ef9a4 + catch() { ... } // from try @ 002f0674 with catch @ 002ef9a4 + catch() { ... } // from try @ 002f06ac with catch @ 002ef9a4 + catch() { ... } // from try @ 002f06f4 with catch @ 002ef9a4 */ + Mat::Mat((Mat *)&local_160,(Mat *)(param_1 + 0x10),(Range *)&local_318,(Range *)&local_300); + Mat::operator=((Mat *)(param_4 + 0x10),(Mat *)&local_160); + Mat::release((Mat *)&local_160); + if (local_118 != auStack_110) { + fastFree(local_118); + } + } + if (*(long *)(param_1 + 0x80) != 0) { + local_2e0 = *(undefined8 *)param_2; + local_280 = *(undefined8 *)param_3; + /* try { // try from 002efa00 to 003efa3b has its CatchHandler @ 002ef9a4 */ + Mat::Mat((Mat *)&local_160,(Mat *)(param_1 + 0x70),(Range *)&local_2e0,(Range *)&local_280); + Mat::operator=((Mat *)(param_4 + 0x70),(Mat *)&local_160); + Mat::release((Mat *)&local_160); + if (local_118 != auStack_110) { + fastFree(local_118); + } + } + if (*(long *)(param_1 + 0xe0) != 0) { + local_220 = *(undefined8 *)param_2; + local_1c0 = *(undefined8 *)param_3; + Mat::Mat((Mat *)&local_160,(Mat *)(param_1 + 0xd0),(Range *)&local_220,(Range *)&local_1c0); + Mat::operator=((Mat *)(param_4 + 0xd0),(Mat *)&local_160); + Mat::release((Mat *)&local_160); + if (local_118 != auStack_110) { + /* try { // try from 002efa84 to 003efa87 has its CatchHandler @ 002f06e4 */ + fastFree(local_118); + } + } + } + /* try { // try from 002efa8c to 003efaab has its CatchHandler @ 002ef9a4 */ + return; +} + + +================================================================== + +### FUNC 002efe50 (1112 bytes) name=diag + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::diag(cv::MatExpr const&, int, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::diag(MatOp *this,MatExpr *param_1,int param_2,MatExpr *param_3) + +{ + int iVar1; + char cVar2; + undefined8 uStack_300; + undefined8 uStack_2f8; + undefined8 local_2f0; + undefined8 uStack_2e8; + undefined8 local_2e0; + undefined8 uStack_2d8; + undefined8 local_2d0; + undefined8 local_2c8; + undefined8 local_2c0; + undefined8 local_2b8; + undefined8 local_2b0; + undefined8 local_2a8; + undefined8 *local_2a0; + undefined8 *local_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + undefined8 *local_240; + undefined8 *local_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [56]; + undefined1 *local_118; + undefined1 auStack_110 [32]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + cVar2 = (**(code **)(*(long *)this + 0x10))(); + if (cVar2 == '\0') { + /* try { // try from 002f00a0 to 003f00a3 has its CatchHandler @ 002f063c */ + local_1d8 = &local_1d0; + local_1e0 = &uStack_218; + local_220 = DAT_002f0460; + uStack_218 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&local_220,0xffffffff) + ; + Mat::diag((int)(Mat *)&local_220); + uStack_2f8 = 0; + uStack_300 = 0; + local_298 = &local_290; + local_238 = &local_230; + local_270 = 0; + local_268 = 0; + uStack_278 = _UNK_002f0458; + local_280 = _DAT_002f0450; + local_240 = &uStack_278; + local_260 = 0; + uStack_2d8 = _UNK_002f0458; + local_2e0 = _DAT_002f0450; + local_258 = 0; + uStack_288 = 0; + local_290 = 0; + local_250 = 0; + uStack_2e8 = 0; + local_2f0 = 0; + local_248 = 0; + local_2a0 = &uStack_2d8; + uStack_228 = 0; + local_230 = 0; + local_2d0 = 0; + local_2c8 = 0; + local_2c0 = 0; + local_2b8 = 0; + local_2b0 = 0; + local_2a8 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,(MatOp *)&DAT_00531f80,0,(Mat *)&local_1c0, + (Mat *)&local_2e0,(Mat *)&local_280,1.0,1.0,(Scalar_ *)&uStack_300); + *(undefined8 *)param_3 = local_160; + *(undefined4 *)(param_3 + 8) = local_158; + Mat::operator=((Mat *)(param_3 + 0x10),aMStack_150); + Mat::operator=((Mat *)(param_3 + 0x70),aMStack_f0); + Mat::operator=((Mat *)(param_3 + 0xd0),aMStack_90); + *(undefined8 *)(param_3 + 0x138) = uStack_28; + *(undefined8 *)(param_3 + 0x130) = local_30; + *(undefined8 *)(param_3 + 0x140) = local_20; + *(undefined8 *)(param_3 + 0x148) = uStack_18; + *(undefined8 *)(param_3 + 0x150) = local_10; + *(undefined8 *)(param_3 + 0x158) = uStack_8; + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_280); + if (local_238 != &local_230) { + fastFree(local_238); + } + Mat::release((Mat *)&local_2e0); + if (local_298 != &local_290) { + fastFree(local_298); + } + Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + fastFree(local_1d8); + } + } + else { + local_238 = &local_230; + local_1d8 = &local_1d0; + local_178 = &local_170; + local_240 = &uStack_278; + local_1e0 = &uStack_218; + uStack_278 = _UNK_002f0458; + local_280 = _DAT_002f0450; + local_270 = 0; + uStack_218 = _UNK_002f0458; + local_220 = _DAT_002f0450; + local_268 = 0; + uStack_1b8 = _UNK_002f0458; + local_1c0 = _DAT_002f0450; + local_260 = 0; + local_180 = &uStack_1b8; + local_258 = 0; + local_250 = 0; + local_248 = 0; + local_210 = 0; + uStack_228 = 0; + local_230 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1b0 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + local_1a8 = 0; + /* try { // try from 002eff30 to 003eff33 has its CatchHandler @ 002f069c */ + local_1a0 = 0; + local_198 = 0; + /* try { // try from 002eff38 to 003eff9f has its CatchHandler @ 002ef9a4 */ + local_190 = 0; + local_188 = 0; + uStack_168 = 0; + local_170 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,*(MatOp **)param_1,*(int *)(param_1 + 8), + (Mat *)&local_280,(Mat *)&local_220,(Mat *)&local_1c0, + *(double *)(param_1 + 0x130),*(double *)(param_1 + 0x138), + (Scalar_ *)(param_1 + 0x140)); + MatExpr::operator=(param_3,(MatExpr *)&local_160); + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + fastFree(local_1d8); + } + Mat::release((Mat *)&local_280); + if (local_238 != &local_230) { + fastFree(local_238); + } + iVar1 = (int)param_1; + if (*(long *)(param_1 + 0x20) != 0) { + Mat::diag(iVar1 + 0x10); + Mat::operator=((Mat *)(param_3 + 0x10),(Mat *)&local_160); + Mat::release((Mat *)&local_160); + if (local_118 != auStack_110) { + fastFree(local_118); + } + } + /* try { // try from 002f0004 to 003f0007 has its CatchHandler @ 002f0678 */ + if (*(long *)(param_1 + 0x80) != 0) { + /* try { // try from 002f0018 to 003f004f has its CatchHandler @ 002f063c */ + Mat::diag(iVar1 + 0x70); + Mat::operator=((Mat *)(param_3 + 0x70),(Mat *)&local_160); + Mat::release((Mat *)&local_160); + if (local_118 != auStack_110) { + fastFree(local_118); + } + } + if (*(long *)(param_1 + 0xe0) != 0) { + Mat::diag(iVar1 + 0xd0); + Mat::operator=((Mat *)(param_3 + 0xd0),(Mat *)&local_160); + Mat::release((Mat *)&local_160); + if (local_118 != auStack_110) { + fastFree(local_118); + } + } + } + /* try { // try from 002f0098 to 003f009b has its CatchHandler @ 002f068c */ + return; +} + + +================================================================== + +### FUNC 002f0470 (384 bytes) name=MatExpr + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatExpr::MatExpr(cv::Mat const&) */ + +void __thiscall cv::MatExpr::MatExpr(MatExpr *this,Mat *param_1) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + char cVar6; + bool bVar7; + undefined8 *puVar8; + undefined8 *puVar9; + long lVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + + uVar2 = *(undefined4 *)param_1; + uVar3 = *(undefined4 *)(param_1 + 4); + uVar4 = *(undefined4 *)(param_1 + 8); + uVar5 = *(undefined4 *)(param_1 + 0xc); + uVar15 = *(undefined8 *)(param_1 + 0x10); + uVar14 = *(undefined8 *)(param_1 + 0x18); + uVar13 = *(undefined8 *)(param_1 + 0x20); + uVar12 = *(undefined8 *)(param_1 + 0x28); + *(undefined8 **)this = &DAT_00531f80; + *(undefined4 *)(this + 0x10) = uVar2; + lVar10 = *(long *)(param_1 + 0x38); + uVar11 = *(undefined8 *)(param_1 + 0x30); + *(undefined4 *)(this + 8) = 0; + *(undefined4 *)(this + 0x14) = uVar3; + *(undefined4 *)(this + 0x18) = uVar4; + *(undefined4 *)(this + 0x1c) = uVar5; + *(undefined8 *)(this + 0x20) = uVar15; + *(undefined8 *)(this + 0x28) = uVar14; + *(undefined8 *)(this + 0x30) = uVar13; + *(undefined8 *)(this + 0x38) = uVar12; + *(undefined8 *)(this + 0x40) = uVar11; + *(long *)(this + 0x48) = lVar10; + *(MatExpr **)(this + 0x50) = this + 0x18; + *(MatExpr **)(this + 0x58) = this + 0x60; + *(undefined8 *)(this + 0x68) = 0; + *(undefined8 *)(this + 0x60) = 0; + if (lVar10 != 0) { + piVar1 = (int *)(lVar10 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(param_1 + 4) < 3) { + puVar9 = *(undefined8 **)(param_1 + 0x48); + puVar8 = *(undefined8 **)(this + 0x58); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + *(undefined4 *)(this + 0x14) = 0; + Mat::copySize((Mat *)(this + 0x10),param_1); + } + *(undefined4 *)(this + 0x74) = 0; + *(undefined4 *)(this + 0x78) = 0; + *(undefined4 *)(this + 0x70) = 0x42ff0000; + *(undefined4 *)(this + 0x7c) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0xa0) = 0; + *(undefined8 *)(this + 0xa8) = 0; + *(MatExpr **)(this + 0xb0) = this + 0x78; + *(MatExpr **)(this + 0xb8) = this + 0xc0; + *(undefined8 *)(this + 200) = 0; + *(undefined8 *)(this + 0xc0) = 0; + *(undefined4 *)(this + 0xd0) = 0x42ff0000; + *(undefined4 *)(this + 0xd4) = 0; + *(undefined4 *)(this + 0xd8) = 0; + *(undefined4 *)(this + 0xdc) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(undefined8 *)(this + 0x100) = 0; + *(undefined8 *)(this + 0x108) = 0; + *(MatExpr **)(this + 0x110) = this + 0xd8; + *(MatExpr **)(this + 0x118) = this + 0x120; + *(undefined8 *)(this + 0x128) = 0; + *(undefined8 *)(this + 0x120) = 0; + uVar11 = _DAT_002f05f0; + *(undefined8 *)(this + 0x138) = _UNK_002f05f8; + *(undefined8 *)(this + 0x130) = uVar11; + *(undefined8 *)(this + 0x148) = 0; + *(undefined8 *)(this + 0x140) = 0; + *(undefined8 *)(this + 0x158) = 0; + *(undefined8 *)(this + 0x150) = 0; + return; +} + + +================================================================== + +### FUNC 002f0600 (116 bytes) name=row + +/* cv::MatExpr::row(int) const */ + +void cv::MatExpr::row(int param_1) + +{ + int in_w1; + long *plVar1; + MatExpr *in_x8; + undefined1 local_10 [4]; + int local_c; + undefined4 local_8; + undefined4 local_4; + + MatExpr(in_x8); + plVar1 = *(long **)(ulong)(uint)param_1; + local_c = in_w1 + 1; + /* catch() { ... } // from try @ 002f0018 with catch @ 002f063c + catch() { ... } // from try @ 002f00a0 with catch @ 002f063c */ + local_8 = 0x80000000; + local_4 = 0x7fffffff; + (**(code **)(*plVar1 + 0x20))(plVar1,(undefined8 *)(ulong)(uint)param_1,local_10,&local_8); + return; +} + + +================================================================== + +### FUNC 002f0688 (116 bytes) name=col + +/* cv::MatExpr::col(int) const */ + +void cv::MatExpr::col(int param_1) + +{ + int in_w1; + long *plVar1; + MatExpr *in_x8; + undefined4 local_10; + undefined4 local_c; + undefined1 local_8 [4]; + int local_4; + + /* catch() { ... } // from try @ 002f0098 with catch @ 002f068c */ + /* catch() { ... } // from try @ 002eff30 with catch @ 002f069c */ + MatExpr(in_x8); + plVar1 = *(long **)(ulong)(uint)param_1; + /* try { // try from 002f06ac to 003f06af has its CatchHandler @ 002ef9a4 */ + /* catch() { ... } // from try @ 002efad0 with catch @ 002f06b0 + catch() { ... } // from try @ 002efb2c with catch @ 002f06b0 */ + local_4 = in_w1 + 1; + local_10 = 0x80000000; + local_c = 0x7fffffff; + /* catch() { ... } // from try @ 002efb24 with catch @ 002f06d4 */ + /* catch() { ... } // from try @ 002efa84 with catch @ 002f06e4 */ + (**(code **)(*plVar1 + 0x20))(plVar1,(undefined8 *)(ulong)(uint)param_1,&local_10,local_8); + /* try { // try from 002f06f4 to 003f06f7 has its CatchHandler @ 002ef9a4 */ + return; +} + + +================================================================== + +### FUNC 002f0710 (300 bytes) name=diag + +/* cv::MatExpr::diag(int) const */ + +void cv::MatExpr::diag(int param_1) + +{ + undefined4 in_w1; + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)(ulong)(uint)param_1; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x28); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,(undefined8 *)(ulong)(uint)param_1,in_w1); + return; +} + + +================================================================== + +### FUNC 002f0850 (308 bytes) name=operator() + +/* cv::MatExpr::TEMPNAMEPLACEHOLDERVALUE(cv::Range const&, cv::Range const&) const */ + +void cv::MatExpr::operator()(Range *param_1,Range *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)param_1; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x20); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 002f0998 (128 bytes) name=operator() + +/* cv::MatExpr::TEMPNAMEPLACEHOLDERVALUE(cv::Rect_ const&) const */ + +void __thiscall cv::MatExpr::operator()(MatExpr *this,Rect_ *param_1) + +{ + MatExpr *in_x8; + int local_10; + int local_c; + int local_8; + int local_4; + + MatExpr(in_x8); + local_10 = *(int *)(param_1 + 4); + local_8 = *(int *)param_1; + local_c = local_10 + *(int *)(param_1 + 0xc); + local_4 = local_8 + *(int *)(param_1 + 8); + (**(code **)(**(long **)this + 0x20))(*(long **)this,this,&local_10,&local_8); + return; +} + + +================================================================== + +### FUNC 002f0a30 (212 bytes) name=cross + +/* cv::MatExpr::cross(cv::Mat const&) const */ + +void __thiscall cv::MatExpr::cross(MatExpr *this,Mat *param_1) + +{ + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f0b50; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)this + 0x18))(*(long **)this,this,(_InputArray *)&uStack_60,0xffffffff); + Mat::cross((_InputArray *)&uStack_60); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f0b58 (212 bytes) name=dot + +/* cv::MatExpr::dot(cv::Mat const&) const */ + +undefined1 [16] __thiscall cv::MatExpr::dot(MatExpr *this,Mat *param_1) + +{ + undefined1 auVar1 [16]; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f0c78; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)this + 0x18))(*(long **)this,this,(Mat *)&uStack_60,0xffffffff); + local_68 = 0; + local_64 = 0; + local_78[0] = 0x1010000; + local_70 = param_1; + auVar1 = Mat::dot((Mat *)&uStack_60,(_InputArray *)local_78); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return auVar1; +} + + +================================================================== + +### FUNC 002f0c80 (296 bytes) name=t + +/* cv::MatExpr::t() const */ + +void cv::MatExpr::t(void) + +{ + undefined8 *in_x0; + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = (long *)*in_x0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0xb0); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3); + return; +} + + +================================================================== + +### FUNC 002f0dc0 (608 bytes) name=inv + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatExpr::inv(int) const */ + +void cv::MatExpr::inv(int param_1) + +{ + undefined8 *puVar1; + long *plVar2; + int in_w1; + code *pcVar3; + MatExpr *in_x8; + undefined8 uStack_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + undefined8 *local_240; + undefined8 *local_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 uStack_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + puVar1 = (undefined8 *)(ulong)(uint)param_1; + MatExpr(in_x8); + plVar2 = (long *)*puVar1; + pcVar3 = *(code **)(*plVar2 + 0xc0); + if (pcVar3 == MatOp::invert) { + local_178 = &local_170; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_180 = &local_1b8; + uStack_1c0 = DAT_002f10c0; + local_188 = 0; + local_1b0 = 0; + local_168 = 0; + local_1b8 = 0; + local_170 = 0; + (**(code **)(*plVar2 + 0x18))(plVar2,puVar1,(Mat *)&uStack_1c0,0xffffffff); + uStack_298 = 0; + uStack_2a0 = 0; + local_1d8 = &local_1d0; + local_238 = &local_230; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_218 = _UNK_002f10d8; + local_220 = _DAT_002f10d0; + uStack_278 = _UNK_002f10d8; + local_280 = _DAT_002f10d0; + local_1e0 = &uStack_218; + uStack_228 = 0; + local_230 = 0; + local_240 = &uStack_278; + uStack_288 = 0; + local_290 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_270 = 0; + local_268 = 0; + local_260 = 0; + local_258 = 0; + local_250 = 0; + local_248 = 0; + MatExpr((MatExpr *)&local_160,(MatOp *)&DAT_00531fb0,in_w1,(Mat *)&uStack_1c0,(Mat *)&local_220, + (Mat *)&local_280,1.0,0.0,(Scalar_ *)&uStack_2a0); + *(undefined8 *)in_x8 = local_160; + *(undefined4 *)(in_x8 + 8) = local_158; + Mat::operator=((Mat *)(in_x8 + 0x10),aMStack_150); + Mat::operator=((Mat *)(in_x8 + 0x70),aMStack_f0); + Mat::operator=((Mat *)(in_x8 + 0xd0),aMStack_90); + *(undefined8 *)(in_x8 + 0x138) = uStack_28; + *(undefined8 *)(in_x8 + 0x130) = local_30; + *(undefined8 *)(in_x8 + 0x140) = local_20; + *(undefined8 *)(in_x8 + 0x148) = uStack_18; + *(undefined8 *)(in_x8 + 0x150) = local_10; + *(undefined8 *)(in_x8 + 0x158) = uStack_8; + ~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_280); + if (local_238 != &local_230) { + fastFree(local_238); + } + Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + fastFree(local_1d8); + } + Mat::release((Mat *)&uStack_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + return; + } + (*pcVar3)(plVar2,puVar1,in_w1); + return; +} + + +================================================================== + +### FUNC 002f10e0 (300 bytes) name=mul + +/* cv::MatExpr::mul(cv::MatExpr const&, double) const */ + +void __thiscall cv::MatExpr::mul(MatExpr *this,MatExpr *param_1,double param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x88); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f1220 (132 bytes) name=mul + +/* cv::MatExpr::mul(cv::Mat const&, double) const */ + +void cv::MatExpr::mul(Mat *param_1,double param_2) + +{ + Mat *in_x1; + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr(in_x8); + plVar1 = *(long **)param_1; + pcVar2 = *(code **)(*plVar1 + 0x88); + MatExpr(aMStack_160,in_x1); + (*pcVar2)(param_2,plVar1,param_1,aMStack_160); + ~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f12cc (116 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::Mat const&) */ + +void __thiscall cv::operator+(cv *this,MatExpr *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)this; + pcVar2 = *(code **)(*plVar1 + 0x68); + MatExpr::MatExpr(aMStack_160,(Mat *)param_1); + (*pcVar2)(plVar1,this,aMStack_160); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f1368 (116 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::MatExpr const&) */ + +void __thiscall cv::operator+(cv *this,Mat *param_1,MatExpr *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)param_1; + pcVar2 = *(code **)(*plVar1 + 0x68); + MatExpr::MatExpr(aMStack_160,(Mat *)this); + (*pcVar2)(plVar1,param_1,aMStack_160); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f1404 (300 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator+(cv *this,MatExpr *param_1,Scalar_ *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x70); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f1544 (296 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::MatExpr const&) */ + +void __thiscall cv::operator+(cv *this,Scalar_ *param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)param_1; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x70); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,param_1,this); + return; +} + + +================================================================== + +### FUNC 002f1680 (300 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::MatExpr const&) */ + +void __thiscall cv::operator+(cv *this,MatExpr *param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x68); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f17c0 (116 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::Mat const&) */ + +void __thiscall cv::operator-(cv *this,MatExpr *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)this; + pcVar2 = *(code **)(*plVar1 + 0x78); + MatExpr::MatExpr(aMStack_160,(Mat *)param_1); + (*pcVar2)(plVar1,this,aMStack_160); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f185c (116 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::MatExpr const&) */ + +void __thiscall cv::operator-(cv *this,Mat *param_1,MatExpr *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)param_1; + pcVar2 = *(code **)(*plVar1 + 0x78); + MatExpr::MatExpr(aMStack_160,(Mat *)this); + (*pcVar2)(plVar1,aMStack_160,param_1); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f18f8 (132 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator-(cv *this,MatExpr *param_1,Scalar_ *param_2) + +{ + MatExpr *in_x8; + double local_20; + double local_18; + double local_10; + double local_8; + + MatExpr::MatExpr(in_x8); + local_18 = -*(double *)(param_1 + 8); + local_10 = -*(double *)(param_1 + 0x10); + local_8 = -*(double *)(param_1 + 0x18); + local_20 = -*(double *)param_1; + (**(code **)(**(long **)this + 0x70))(*(long **)this,this,&local_20); + return; +} + + +================================================================== + +### FUNC 002f1990 (304 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::MatExpr const&) */ + +void __thiscall cv::operator-(cv *this,Scalar_ *param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)param_1; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x80); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f1ad4 (300 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::MatExpr const&) */ + +void __thiscall cv::operator-(cv *this,MatExpr *param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x78); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f1c14 (100 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&) */ + +void __thiscall cv::operator-(cv *this,MatExpr *param_1) + +{ + MatExpr *in_x8; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + (**(code **)(**(long **)this + 0x80))(*(long **)this,&local_20); + return; +} + + +================================================================== + +### FUNC 002f1c8c (332 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator*(cv *this,Mat *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + undefined8 local_1e0; + undefined8 local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined4 local_1c0; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + MatExpr::MatExpr(in_x8); + local_180 = &local_1b8; + local_178 = &local_170; + local_168 = 0; + local_170 = 0; + local_1c0 = 0x42ff0000; + local_1bc = 0; + local_1b8 = 0; + local_1b4 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + local_1e0 = 0; + local_1d8 = 0; + local_1d0 = 0; + local_1c8 = 0; + MatExpr::MatExpr((MatExpr *)&local_160,(MatOp *)&DAT_00531f88,0,(Mat *)this,param_1, + (Mat *)&local_1c0,1.0,1.0,(Scalar_ *)&local_1e0); + *(undefined8 *)in_x8 = local_160; + *(undefined4 *)(in_x8 + 8) = local_158; + Mat::operator=((Mat *)(in_x8 + 0x10),aMStack_150); + Mat::operator=((Mat *)(in_x8 + 0x70),aMStack_f0); + Mat::operator=((Mat *)(in_x8 + 0xd0),aMStack_90); + *(undefined8 *)(in_x8 + 0x138) = uStack_28; + *(undefined8 *)(in_x8 + 0x130) = local_30; + *(undefined8 *)(in_x8 + 0x140) = local_20; + *(undefined8 *)(in_x8 + 0x148) = uStack_18; + *(undefined8 *)(in_x8 + 0x150) = local_10; + *(undefined8 *)(in_x8 + 0x158) = uStack_8; + MatExpr::~MatExpr((MatExpr *)&local_160); + Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 002f1e24 (116 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::Mat const&) */ + +void __thiscall cv::operator*(cv *this,MatExpr *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)this; + pcVar2 = *(code **)(*plVar1 + 0xb8); + MatExpr::MatExpr(aMStack_160,(Mat *)param_1); + (*pcVar2)(plVar1,this,aMStack_160); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f1ec0 (116 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::MatExpr const&) */ + +void __thiscall cv::operator*(cv *this,Mat *param_1,MatExpr *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)param_1; + pcVar2 = *(code **)(*plVar1 + 0xb8); + MatExpr::MatExpr(aMStack_160,(Mat *)this); + (*pcVar2)(plVar1,aMStack_160,param_1); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f1f5c (296 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, double) */ + +void cv::operator*(MatExpr *param_1,double param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)param_1; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x90); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,param_1); + return; +} + + +================================================================== + +### FUNC 002f2098 (296 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::MatExpr const&) */ + +void cv::operator*(double param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)param_2; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x90); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,param_2); + return; +} + + +================================================================== + +### FUNC 002f21d4 (300 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::MatExpr const&) */ + +void __thiscall cv::operator*(cv *this,MatExpr *param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0xb8); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f2314 (120 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::Mat const&) */ + +void __thiscall cv::operator/(cv *this,MatExpr *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)this; + pcVar2 = *(code **)(*plVar1 + 0x98); + MatExpr::MatExpr(aMStack_160,(Mat *)param_1); + (*pcVar2)(0x3ff0000000000000,plVar1,this,aMStack_160); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f23b4 (120 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::MatExpr const&) */ + +void __thiscall cv::operator/(cv *this,Mat *param_1,MatExpr *param_2) + +{ + MatExpr *in_x8; + long *plVar1; + code *pcVar2; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + plVar1 = *(long **)param_1; + pcVar2 = *(code **)(*plVar1 + 0x98); + MatExpr::MatExpr(aMStack_160,(Mat *)this); + (*pcVar2)(0x3ff0000000000000,plVar1,aMStack_160,param_1); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f2454 (92 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, double) */ + +void __thiscall cv::operator/(cv *this,MatExpr *param_1,double param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + (**(code **)(**(long **)this + 0x90))(1.0 / param_2,*(long **)this); + return; +} + + +================================================================== + +### FUNC 002f24c4 (296 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::MatExpr const&) */ + +void cv::operator/(double param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)param_2; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0xa0); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,param_2); + return; +} + + +================================================================== + +### FUNC 002f2600 (304 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::MatExpr const&, cv::MatExpr const&) */ + +void __thiscall cv::operator/(cv *this,MatExpr *param_1,MatExpr *param_2) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0x98); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(0x3ff0000000000000,plVar3,this,param_1); + return; +} + + +================================================================== + +### FUNC 002f2744 (296 bytes) name=abs + +/* cv::abs(cv::MatExpr const&) */ + +void __thiscall cv::abs(cv *this,MatExpr *param_1) + +{ + long lVar1; + code *pcVar2; + long *plVar3; + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + plVar3 = *(long **)this; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + lVar1 = *plVar3; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + pcVar2 = *(code **)(lVar1 + 0xa8); + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x26] = 0; + in_x8[0x27] = 0; + in_x8[0x28] = 0; + in_x8[0x29] = 0; + in_x8[0x2a] = 0; + in_x8[0x2b] = 0; + (*pcVar2)(plVar3,this); + return; +} + + +================================================================== + +### FUNC 002f2880 (608 bytes) name=size + +/* cv::MatExpr::size() const */ + +void cv::MatExpr::size(void) + +{ + long lVar1; + undefined4 uVar2; + int iVar3; + long *in_x0; + long lVar4; + long lVar5; + code *pcVar6; + long *in_x8; + undefined8 *puVar7; + + puVar7 = (undefined8 *)*in_x0; + if ((puVar7 == &DAT_00531fa0) || (puVar7 == &DAT_00531fb0)) { + *in_x8 = in_x0[3]; + } + else if (puVar7 == &DAT_00531f88) { + lVar4 = in_x0[3]; + *(undefined4 *)in_x8 = *(undefined4 *)((long)in_x0 + 0x7c); + *(int *)((long)in_x8 + 4) = (int)lVar4; + } + else { + if (puVar7 == &DAT_00531f70) { + uVar2 = *(undefined4 *)((long)in_x0 + 0x1c); + *(undefined4 *)in_x8 = *(undefined4 *)((long)in_x0 + 0x7c); + *(undefined4 *)((long)in_x8 + 4) = uVar2; + return; + } + if (((DAT_00531f78 & 1) == 0) && (iVar3 = __cxa_guard_acquire(&DAT_00531f78), iVar3 != 0)) { + MatOp::MatOp((MatOp *)&DAT_00531f98); + DAT_00531f98 = &PTR_FUN_004fc530; + __cxa_guard_release(&DAT_00531f78); + __cxa_atexit(FUN_002eebd4,&DAT_00531f98,&DAT_00502000); + } + if ((undefined ***)puVar7 == &DAT_00531f98) { +LAB_002f2940: + uVar2 = ((undefined4 *)in_x0[10])[1]; + *(undefined4 *)((long)in_x8 + 4) = *(undefined4 *)in_x0[10]; + *(undefined4 *)in_x8 = uVar2; + return; + } + if ((long *)*in_x0 == (long *)0x0) { + *(undefined4 *)in_x8 = 0; + *(undefined4 *)((long)in_x8 + 4) = 0; + return; + } + pcVar6 = *(code **)(*(long *)*in_x0 + 200); + if (pcVar6 == MatOp::size) { + if (in_x0[4] != 0) { + if (*(int *)((long)in_x0 + 0x14) < 3) { + lVar5 = (long)*(int *)((long)in_x0 + 0x1c) * (long)(int)in_x0[3]; + } + else { + lVar4 = 0; + lVar5 = 1; + do { + lVar1 = lVar4 * 4; + lVar4 = lVar4 + 1; + lVar5 = lVar5 * *(int *)(in_x0[10] + lVar1); + } while ((int)lVar4 < *(int *)((long)in_x0 + 0x14)); + } + if (lVar5 != 0) goto LAB_002f2940; + } + if (in_x0[0x10] != 0) { + if (*(int *)((long)in_x0 + 0x74) < 3) { + lVar5 = (long)*(int *)((long)in_x0 + 0x7c) * (long)(int)in_x0[0xf]; + } + else { + lVar4 = 0; + lVar5 = 1; + do { + lVar1 = lVar4 * 4; + lVar4 = lVar4 + 1; + lVar5 = lVar5 * *(int *)(in_x0[0x16] + lVar1); + } while ((int)lVar4 < *(int *)((long)in_x0 + 0x74)); + } + if (lVar5 != 0) { + uVar2 = ((undefined4 *)in_x0[0x22])[1]; + *(undefined4 *)((long)in_x8 + 4) = *(undefined4 *)in_x0[0x22]; + *(undefined4 *)in_x8 = uVar2; + return; + } + } + uVar2 = ((undefined4 *)in_x0[0x16])[1]; + *(undefined4 *)((long)in_x8 + 4) = *(undefined4 *)in_x0[0x16]; + *(undefined4 *)in_x8 = uVar2; + } + else { + (*pcVar6)(); + } + } + return; +} + + +================================================================== + +### FUNC 002f2af4 (464 bytes) name=type + +/* cv::MatExpr::type() const */ + +ulong __thiscall cv::MatExpr::type(MatExpr *this) + +{ + long lVar1; + int iVar2; + long *plVar3; + long lVar4; + ulong uVar5; + long lVar6; + undefined8 *puVar7; + + puVar7 = *(undefined8 **)this; + /* try { // try from 002f2ba0 to 003f2ba3 has its CatchHandler @ 002f2acc */ + if (((DAT_00531f78 & 1) == 0) && (iVar2 = __cxa_guard_acquire(&DAT_00531f78), iVar2 != 0)) { + MatOp::MatOp((MatOp *)&DAT_00531f98); + DAT_00531f98 = &PTR_FUN_004fc530; + __cxa_guard_release(&DAT_00531f78); + /* try { // try from 002f2bd4 to 003f2bd7 has its CatchHandler @ 002f2e38 */ + __cxa_atexit(FUN_002eebd4,&DAT_00531f98,&DAT_00502000); + /* try { // try from 002f2bdc to 003f2bdf has its CatchHandler @ 002f2acc */ + } + if ((undefined ***)puVar7 == &DAT_00531f98) { +LAB_002f2b80: + return (ulong)(*(uint *)(this + 0x10) & 0xfff); + } + plVar3 = *(long **)this; + if (plVar3 == &DAT_00531f90) { + return 0; + } + if (plVar3 == (long *)0x0) { + return 0xffffffff; + } + if (*(code **)(*plVar3 + 0xd0) != MatOp::type) { + uVar5 = (**(code **)(*plVar3 + 0xd0))(plVar3,this); + return uVar5; + } + if (*(long *)(this + 0x20) != 0) { + if (*(int *)(this + 0x14) < 3) { + lVar6 = (long)*(int *)(this + 0x1c) * (long)*(int *)(this + 0x18); + } + else { + lVar4 = 0; + lVar6 = 1; + do { + lVar1 = lVar4 * 4; + lVar4 = lVar4 + 1; + lVar6 = lVar6 * *(int *)(*(long *)(this + 0x50) + lVar1); + } while ((int)lVar4 < *(int *)(this + 0x14)); + } + if (lVar6 != 0) goto LAB_002f2b80; + } + if (*(long *)(this + 0x80) != 0) { + if (*(int *)(this + 0x74) < 3) { + lVar4 = (long)*(int *)(this + 0x7c) * (long)*(int *)(this + 0x78); + } + else { + lVar6 = 0; + lVar4 = 1; + do { + lVar1 = lVar6 * 4; + lVar6 = lVar6 + 1; + lVar4 = lVar4 * *(int *)(*(long *)(this + 0xb0) + lVar1); + } while ((int)lVar6 < *(int *)(this + 0x74)); + } + if (lVar4 != 0) { + return (ulong)(*(uint *)(this + 0xd0) & 0xfff); + } + } + return (ulong)(*(uint *)(this + 0x70) & 0xfff); +} + + +================================================================== + +### FUNC 002f2ce0 (444 bytes) name=FUN_002f2ce0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f2ce0(double param_1,double param_2,undefined8 *param_3,Mat *param_4,Mat *param_5, + Scalar_ *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 *puVar5; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + undefined4 local_f0; + int local_ec; + undefined4 local_e8; + undefined4 local_e4; + undefined8 local_e0; + undefined8 uStack_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + long lStack_b8; + undefined8 *local_a8; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + local_178 = &local_170; + uStack_1b8 = _UNK_002f2ee8; + local_1c0 = _DAT_002f2ee0; + local_180 = &uStack_1b8; + uStack_168 = 0; + local_170 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531fa8,0,param_4,param_5,(Mat *)&local_1c0, + param_1,param_2,param_6); + *param_3 = local_160; + *(undefined4 *)(param_3 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_3 + 2),aMStack_150); + if (lStack_b8 != 0) { + piVar1 = (int *)(lStack_b8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + cv::Mat::release((Mat *)(param_3 + 0xe)); + *(undefined4 *)(param_3 + 0xe) = local_f0; + if ((*(int *)((long)param_3 + 0x74) < 3) && (local_ec < 3)) { + puVar5 = (undefined8 *)param_3[0x17]; + *(int *)((long)param_3 + 0x74) = local_ec; + *(undefined4 *)(param_3 + 0xf) = local_e8; + uVar4 = *local_a8; + *(undefined4 *)((long)param_3 + 0x7c) = local_e4; + *puVar5 = uVar4; + puVar5[1] = local_a8[1]; + } + else { + cv::Mat::copySize((Mat *)(param_3 + 0xe),(Mat *)&local_f0); + } + param_3[0x11] = uStack_d8; + param_3[0x10] = local_e0; + param_3[0x13] = uStack_c8; + param_3[0x12] = local_d0; + param_3[0x15] = lStack_b8; + param_3[0x14] = local_c0; + cv::Mat::operator=((Mat *)(param_3 + 0x1a),aMStack_90); + param_3[0x27] = uStack_28; + param_3[0x26] = local_30; + param_3[0x28] = local_20; + param_3[0x29] = uStack_18; + param_3[0x2a] = local_10; + param_3[0x2b] = uStack_8; + /* catch() { ... } // from try @ 002f2bd4 with catch @ 002f2e38 */ + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + /* try { // try from 002f2e48 to 003f2e4b has its CatchHandler @ 002f2acc */ + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 002f2ef0 (288 bytes) name=add + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::add(cv::MatExpr const&, cv::Scalar_ const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::add(MatOp *this,MatExpr *param_1,Scalar_ *param_2,MatExpr *param_3) + +{ + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_48 = 0; + local_40 = 0; + local_18 = &local_10; + local_20 = &local_58; + uStack_60 = DAT_002f3060; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + uStack_b8 = _UNK_002f3078; + local_c0 = _DAT_002f3070; + local_98 = 0; + local_90 = 0; + local_88 = 0; + FUN_002f2ce0(0x3ff0000000000000,0,param_3,(Mat *)&uStack_60,(Mat *)&local_c0,param_2); + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3080 (292 bytes) name=subtract + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::subtract(cv::Scalar_ const&, cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::subtract(MatOp *this,Scalar_ *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f31f8; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_2 + 0x18))(*(long **)param_2,param_2,(Mat *)&uStack_60,0xffffffff); + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + uStack_b8 = _UNK_002f3208; + local_c0 = _DAT_002f3200; + local_98 = 0; + local_90 = 0; + local_88 = 0; + FUN_002f2ce0(0xbff0000000000000,0,param_3,(Mat *)&uStack_60,(Mat *)&local_c0,param_1); + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3210 (596 bytes) name=add + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::add(cv::MatExpr const&, cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::add(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + long *plVar1; + MatOp *pMVar2; + undefined8 uVar3; + undefined8 uVar4; + double local_e0; + double local_d8; + double local_d0; + double dStack_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar2 = *(MatOp **)param_2; + if (pMVar2 == this) { + local_d8 = 0.0; + local_e0 = 0.0; + local_78 = &local_70; + local_18 = &local_10; + plVar1 = *(long **)param_1; + uStack_68 = 0; + local_70 = 0; + uStack_8 = 0; + local_10 = 0; + dStack_c8 = 0.0; + local_d0 = 0.0; + local_20 = &uStack_58; + uStack_b8 = _UNK_002f34b8; + local_c0 = _DAT_002f34b0; + local_80 = &uStack_b8; + uStack_58 = _UNK_002f34b8; + local_60 = _DAT_002f34b0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + if ((plVar1 == &DAT_00531fa8) && + ((*(long *)(param_1 + 0x80) == 0 || (*(double *)(param_1 + 0x138) == 0.0)))) { + Mat::operator=((Mat *)&local_c0,(Mat *)(param_1 + 0x10)); + uVar4 = *(undefined8 *)(param_1 + 0x130); + local_e0 = *(double *)(param_1 + 0x140); + local_d8 = *(double *)(param_1 + 0x148); + local_d0 = *(double *)(param_1 + 0x150); + dStack_c8 = *(double *)(param_1 + 0x158); + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_1,(Mat *)&local_c0,0xffffffff); + uVar4 = 0x3ff0000000000000; + } + plVar1 = *(long **)param_2; + if ((plVar1 == &DAT_00531fa8) && + ((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + local_e0 = local_e0 + *(double *)(param_2 + 0x140); + local_d8 = local_d8 + *(double *)(param_2 + 0x148); + local_d0 = local_d0 + *(double *)(param_2 + 0x150); + dStack_c8 = dStack_c8 + *(double *)(param_2 + 0x158); + uVar3 = *(undefined8 *)(param_2 + 0x130); + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_2,(Mat *)&local_60,0xffffffff); + uVar3 = 0x3ff0000000000000; + } + FUN_002f2ce0(uVar4,uVar3,param_3,(Mat *)&local_c0,(Mat *)&local_60,&local_e0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + return; + } + } + else { + (**(code **)(*(long *)pMVar2 + 0x68))(pMVar2); + } + return; +} + + +================================================================== + +### FUNC 002f34c0 (596 bytes) name=subtract + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::subtract(cv::MatExpr const&, cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::subtract(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + long *plVar1; + MatOp *pMVar2; + double dVar3; + undefined8 uVar4; + double local_e0; + double local_d8; + double local_d0; + double dStack_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar2 = *(MatOp **)param_2; + if (pMVar2 == this) { + local_d8 = 0.0; + local_e0 = 0.0; + local_78 = &local_70; + local_18 = &local_10; + plVar1 = *(long **)param_1; + uStack_68 = 0; + local_70 = 0; + uStack_8 = 0; + local_10 = 0; + dStack_c8 = 0.0; + local_d0 = 0.0; + local_80 = &uStack_b8; + uStack_b8 = _UNK_002f3768; + local_c0 = _DAT_002f3760; + local_20 = &uStack_58; + uStack_58 = _UNK_002f3768; + local_60 = _DAT_002f3760; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + if ((plVar1 == &DAT_00531fa8) && + ((*(long *)(param_1 + 0x80) == 0 || (*(double *)(param_1 + 0x138) == 0.0)))) { + Mat::operator=((Mat *)&local_c0,(Mat *)(param_1 + 0x10)); + uVar4 = *(undefined8 *)(param_1 + 0x130); + local_e0 = *(double *)(param_1 + 0x140); + local_d8 = *(double *)(param_1 + 0x148); + local_d0 = *(double *)(param_1 + 0x150); + dStack_c8 = *(double *)(param_1 + 0x158); + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_1,(Mat *)&local_c0,0xffffffff); + uVar4 = 0x3ff0000000000000; + } + plVar1 = *(long **)param_2; + if ((plVar1 == &DAT_00531fa8) && + ((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + local_e0 = local_e0 - *(double *)(param_2 + 0x140); + local_d8 = local_d8 - *(double *)(param_2 + 0x148); + local_d0 = local_d0 - *(double *)(param_2 + 0x150); + dStack_c8 = dStack_c8 - *(double *)(param_2 + 0x158); + dVar3 = -*(double *)(param_2 + 0x130); + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_2,(Mat *)&local_60,0xffffffff); + dVar3 = -1.0; + } + FUN_002f2ce0(uVar4,dVar3,param_3,(Mat *)&local_c0,(Mat *)&local_60,&local_e0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + return; + } + } + else { + (**(code **)(*(long *)pMVar2 + 0x78))(pMVar2); + } + return; +} + + +================================================================== + +### FUNC 002f3770 (304 bytes) name=multiply + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::multiply(cv::MatExpr const&, double, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::multiply(MatOp *this,MatExpr *param_1,double param_2,MatExpr *param_3) + +{ + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f38f0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_b8 = _UNK_002f3908; + local_c0 = _DAT_002f3900; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + uStack_68 = 0; + local_70 = 0; + local_88 = 0; + FUN_002f2ce0(param_2,0,param_3,(Mat *)&uStack_60,(Mat *)&local_c0); + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3910 (552 bytes) name=FUN_002f3910 + +void FUN_002f3910(double param_1,MatOp *param_2,MatExpr *param_3,MatExpr *param_4) + +{ + Mat *pMVar1; + int *piVar2; + int iVar3; + undefined4 uVar4; + char cVar5; + bool bVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + double dVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + + iVar3 = *(int *)(param_3 + 8); + if ((iVar3 != 0x2f) && (iVar3 != 0x2a)) { + cv::MatOp::multiply(param_2,param_3,param_1,param_4); + return; + } + pMVar1 = (Mat *)(param_4 + 0x10); + *(undefined8 *)param_4 = *(undefined8 *)param_3; + *(int *)(param_4 + 8) = iVar3; + if (pMVar1 != (Mat *)(param_3 + 0x10)) { + if (*(long *)(param_3 + 0x48) != 0) { + piVar2 = (int *)(*(long *)(param_3 + 0x48) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0x10) = *(undefined4 *)(param_3 + 0x10); + if ((*(int *)(param_4 + 0x14) < 3) && (iVar3 = *(int *)(param_3 + 0x14), iVar3 < 3)) { + puVar8 = *(undefined8 **)(param_3 + 0x58); + puVar7 = *(undefined8 **)(param_4 + 0x58); + uVar4 = *(undefined4 *)(param_3 + 0x18); + *(undefined4 *)(param_4 + 0x1c) = *(undefined4 *)(param_3 + 0x1c); + *(int *)(param_4 + 0x14) = iVar3; + *(undefined4 *)(param_4 + 0x18) = uVar4; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0x10)); + } + uVar14 = *(undefined8 *)(param_3 + 0x20); + uVar13 = *(undefined8 *)(param_3 + 0x38); + uVar12 = *(undefined8 *)(param_3 + 0x30); + uVar11 = *(undefined8 *)(param_3 + 0x48); + uVar9 = *(undefined8 *)(param_3 + 0x40); + *(undefined8 *)(param_4 + 0x28) = *(undefined8 *)(param_3 + 0x28); + *(undefined8 *)(param_4 + 0x20) = uVar14; + *(undefined8 *)(param_4 + 0x38) = uVar13; + *(undefined8 *)(param_4 + 0x30) = uVar12; + *(undefined8 *)(param_4 + 0x48) = uVar11; + *(undefined8 *)(param_4 + 0x40) = uVar9; + } + pMVar1 = (Mat *)(param_4 + 0xd0); + cv::Mat::operator=((Mat *)(param_4 + 0x70),(Mat *)(param_3 + 0x70)); + if (pMVar1 != (Mat *)(param_3 + 0xd0)) { + if (*(long *)(param_3 + 0x108) != 0) { + piVar2 = (int *)(*(long *)(param_3 + 0x108) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + cv::Mat::release(pMVar1); + *(undefined4 *)(param_4 + 0xd0) = *(undefined4 *)(param_3 + 0xd0); + if ((*(int *)(param_4 + 0xd4) < 3) && (iVar3 = *(int *)(param_3 + 0xd4), iVar3 < 3)) { + puVar8 = *(undefined8 **)(param_3 + 0x118); + puVar7 = *(undefined8 **)(param_4 + 0x118); + uVar4 = *(undefined4 *)(param_3 + 0xd8); + *(undefined4 *)(param_4 + 0xdc) = *(undefined4 *)(param_3 + 0xdc); + *(int *)(param_4 + 0xd4) = iVar3; + *(undefined4 *)(param_4 + 0xd8) = uVar4; + *puVar7 = *puVar8; + puVar7[1] = puVar8[1]; + } + else { + cv::Mat::copySize(pMVar1,(Mat *)(param_3 + 0xd0)); + } + uVar14 = *(undefined8 *)(param_3 + 0xe0); + uVar13 = *(undefined8 *)(param_3 + 0xf8); + uVar12 = *(undefined8 *)(param_3 + 0xf0); + uVar11 = *(undefined8 *)(param_3 + 0x108); + uVar9 = *(undefined8 *)(param_3 + 0x100); + *(undefined8 *)(param_4 + 0xe8) = *(undefined8 *)(param_3 + 0xe8); + *(undefined8 *)(param_4 + 0xe0) = uVar14; + *(undefined8 *)(param_4 + 0xf8) = uVar13; + *(undefined8 *)(param_4 + 0xf0) = uVar12; + *(undefined8 *)(param_4 + 0x108) = uVar11; + *(undefined8 *)(param_4 + 0x100) = uVar9; + } + dVar10 = *(double *)(param_3 + 0x130); + uVar9 = *(undefined8 *)(param_3 + 0x140); + uVar11 = *(undefined8 *)(param_3 + 0x148); + *(undefined8 *)(param_4 + 0x138) = *(undefined8 *)(param_3 + 0x138); + *(undefined8 *)(param_4 + 0x140) = uVar9; + *(undefined8 *)(param_4 + 0x148) = uVar11; + uVar9 = *(undefined8 *)(param_3 + 0x158); + *(undefined8 *)(param_4 + 0x150) = *(undefined8 *)(param_3 + 0x150); + *(undefined8 *)(param_4 + 0x158) = uVar9; + *(double *)(param_4 + 0x130) = param_1 * dVar10; + return; +} + + +================================================================== + +### FUNC 002f3b38 (180 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator+(cv *this,Mat *param_1,Scalar_ *param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(0x3ff0000000000000,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3c28 (180 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::Mat const&) */ + +void __thiscall cv::operator+(cv *this,Scalar_ *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(0x3ff0000000000000,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3d18 (180 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::Mat const&) */ + +void __thiscall cv::operator-(cv *this,Scalar_ *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(0xbff0000000000000,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3e08 (100 bytes) name=operator+ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator+(cv *this,Mat *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f2ce0(0x3ff0000000000000,0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f3e80 (100 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator-(cv *this,Mat *param_1,Mat *param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f2ce0(0x3ff0000000000000,0xbff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f3ef8 (196 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&) */ + +void __thiscall cv::operator-(cv *this,Mat *param_1) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(0xbff0000000000000,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f3ff8 (200 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void __thiscall cv::operator*(cv *this,Mat *param_1,double param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(param_2,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f40fc (200 bytes) name=operator* + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void __thiscall cv::operator*(cv *this,double param_1,Mat *param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(param_1,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f4200 (208 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void __thiscall cv::operator/(cv *this,Mat *param_1,double param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(1.0 / param_2,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f4310 (532 bytes) name=FUN_002f4310 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f4310(undefined8 param_1,long param_2,undefined8 *param_3) + +{ + undefined8 *puVar1; + undefined8 uStack_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 uStack_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + undefined8 local_148; + undefined8 local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 *local_120; + undefined8 *local_118; + undefined8 local_110; + undefined8 uStack_108; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + if (*(double *)(param_2 + 0x130) == 1.0) { + uStack_238 = 0; + uStack_240 = 0; + local_178 = &local_170; + local_1d8 = &local_1d0; + local_1b0 = 0; + uStack_1a8 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_1b8 = _UNK_002f45b8; + local_1c0 = _DAT_002f45b0; + uStack_168 = 0; + local_170 = 0; + uStack_218 = _UNK_002f45b8; + local_220 = _DAT_002f45b0; + uStack_228 = 0; + local_230 = 0; + local_180 = &uStack_1b8; + local_1e0 = &uStack_218; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531f80,0,(Mat *)(param_2 + 0x10), + (Mat *)&local_1c0,(Mat *)&local_220,1.0,0.0,(Scalar_ *)&uStack_240); + *param_3 = local_160; + *(undefined4 *)(param_3 + 1) = (undefined4)uStack_158; + cv::Mat::operator=((Mat *)(param_3 + 2),(Mat *)&local_150); + cv::Mat::operator=((Mat *)(param_3 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_3 + 0x1a),aMStack_90); + param_3[0x27] = uStack_28; + param_3[0x26] = local_30; + param_3[0x28] = local_20; + param_3[0x29] = uStack_18; + param_3[0x2a] = local_10; + param_3[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + cv::Mat::release((Mat *)&local_1c0); + puVar1 = local_178; + if (local_178 == &local_170) { + return; + } + } + else { + local_118 = &local_110; + uStack_1b8 = 0; + local_1c0 = 0; + local_150 = 0; + local_120 = &uStack_158; + local_148 = 0; + local_140 = 0; + local_138 = 0; + uStack_1a8 = 0; + local_1b0 = 0; + local_130 = 0; + local_128 = 0; + uStack_158 = _UNK_002f45b8; + local_160 = _DAT_002f45b0; + uStack_108 = 0; + local_110 = 0; + FUN_002f2ce0(*(double *)(param_2 + 0x130),0,param_3,param_2 + 0x10,(Mat *)&local_160); + cv::Mat::release((Mat *)&local_160); + puVar1 = local_118; + if (local_118 == &local_110) { + return; + } + } + cv::fastFree(puVar1); + return; +} + + +================================================================== + +### FUNC 002f45c0 (228 bytes) name=operator- + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator-(cv *this,Mat *param_1,Scalar_ *param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f2ce0(0x3ff0000000000000,0); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f46e0 (312 bytes) name=FUN_002f46e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f46e0(double param_1,undefined8 *param_2,char param_3,Mat *param_4,Mat *param_5) + +{ + double dVar1; + undefined8 uStack_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + local_178 = &local_170; + local_180 = &uStack_1b8; + uStack_168 = 0; + local_170 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + uStack_1b8 = _UNK_002f4858; + local_1c0 = _DAT_002f4850; + local_198 = 0; + local_190 = 0; + local_188 = 0; + dVar1 = 1.0; + if (*(long *)(param_5 + 0x10) == 0) { + dVar1 = 0.0; + } + uStack_1d8 = 0; + uStack_1e0 = 0; + uStack_1c8 = 0; + local_1d0 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531fb8,(int)param_3,param_4,param_5, + (Mat *)&local_1c0,param_1,dVar1,(Scalar_ *)&uStack_1e0); + *param_2 = local_160; + *(undefined4 *)(param_2 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_2 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_2 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_2 + 0x1a),aMStack_90); + param_2[0x27] = uStack_28; + param_2[0x26] = local_30; + param_2[0x28] = local_20; + param_2[0x29] = uStack_18; + param_2[0x2a] = local_10; + param_2[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 002f4860 (696 bytes) name=multiply + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::multiply(cv::MatExpr const&, cv::MatExpr const&, cv::MatExpr&, double) const */ + +void __thiscall +cv::MatOp::multiply(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3,double param_4) + +{ + char cVar1; + undefined8 uVar2; + MatOp *pMVar3; + long *plVar4; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar3 = *(MatOp **)param_2; + if (pMVar3 == this) { + local_78 = &local_70; + local_18 = &local_10; + plVar4 = *(long **)param_1; + uStack_68 = 0; + local_70 = 0; + uStack_8 = 0; + local_10 = 0; + local_80 = &uStack_b8; + local_20 = &uStack_58; + uStack_b8 = _UNK_002f4b78; + local_c0 = _DAT_002f4b70; + local_b0 = 0; + uStack_58 = _UNK_002f4b78; + local_60 = _DAT_002f4b70; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + if (((plVar4 == &DAT_00531fb8) && (*(int *)(param_1 + 8) == 0x2f)) && + ((*(long *)(param_1 + 0x80) == 0 || (*(double *)(param_1 + 0x138) == 0.0)))) { + cVar1 = FUN_002eb1b8(param_2); + if (cVar1 == '\0') { + (**(code **)(*(long *)pMVar3 + 0x18))(pMVar3,param_2,(Mat *)&local_60,0xffffffff); + } + else { + param_4 = param_4 * *(double *)(param_2 + 0x130); + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + } + FUN_002f46e0(param_4 / *(double *)(param_1 + 0x130),param_3,0x2f,(Mat *)&local_60, + param_1 + 0x10); + } + else { + cVar1 = FUN_002eb1b8(param_1); + if (cVar1 == '\0') { + (**(code **)(*plVar4 + 0x18))(plVar4,param_1,(Mat *)&local_c0,0xffffffff); + } + else { + Mat::operator=((Mat *)&local_c0,(Mat *)(param_1 + 0x10)); + param_4 = param_4 * *(double *)(param_1 + 0x130); + } + cVar1 = FUN_002eb1b8(param_2); + if (cVar1 == '\0') { + plVar4 = *(long **)param_2; + if (((plVar4 == &DAT_00531fb8) && (*(int *)(param_2 + 8) == 0x2f)) && + ((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + uVar2 = 0x2f; + param_4 = param_4 / *(double *)(param_2 + 0x130); + } + else { + (**(code **)(*plVar4 + 0x18))(plVar4,param_2,(Mat *)&local_60,0xffffffff); + uVar2 = 0x2a; + } + } + else { + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + uVar2 = 0x2a; + param_4 = param_4 * *(double *)(param_2 + 0x130); + } + FUN_002f46e0(param_4,param_3,uVar2,(Mat *)&local_c0,(Mat *)&local_60); + } + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + return; + } + } + else { + (**(code **)(*(long *)pMVar3 + 0x88))(pMVar3); + } + return; +} + + +================================================================== + +### FUNC 002f4b80 (796 bytes) name=divide + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::divide(cv::MatExpr const&, cv::MatExpr const&, cv::MatExpr&, double) const */ + +void __thiscall +cv::MatOp::divide(MatOp *this,MatExpr *param_1,MatExpr *param_2,MatExpr *param_3,double param_4) + +{ + long *plVar1; + undefined8 uVar2; + MatOp *pMVar3; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar3 = *(MatOp **)param_2; + if (pMVar3 != this) { + (**(code **)(*(long *)pMVar3 + 0x98))(pMVar3); + return; + } + plVar1 = *(long **)param_1; + if (((((plVar1 == &DAT_00531fb8) && (*(int *)(param_1 + 8) == 0x2f)) && + ((*(long *)(param_1 + 0x80) == 0 || (*(double *)(param_1 + 0x138) == 0.0)))) && + ((pMVar3 == (MatOp *)&DAT_00531fb8 && (*(int *)(param_2 + 8) == 0x2f)))) && + ((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + FUN_002f46e0(*(double *)(param_1 + 0x130) / *(double *)(param_2 + 0x130),param_3,0x2f, + param_2 + 0x10,param_1 + 0x10); + return; + } + local_78 = &local_70; + local_18 = &local_10; + uStack_68 = 0; + local_70 = 0; + uStack_8 = 0; + local_10 = 0; + local_80 = &uStack_b8; + local_20 = &uStack_58; + local_b0 = 0; + uStack_b8 = _UNK_002f4ef8; + local_c0 = _DAT_002f4ef0; + local_a8 = 0; + uStack_58 = _UNK_002f4ef8; + local_60 = _DAT_002f4ef0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + if (((plVar1 == &DAT_00531fa8) && + (((*(long *)(param_1 + 0x80) == 0 || (*(double *)(param_1 + 0x138) == 0.0)) && + (*(double *)(param_1 + 0x140) == 0.0)))) && + (((*(double *)(param_1 + 0x148) == 0.0 && (*(double *)(param_1 + 0x150) == 0.0)) && + (*(double *)(param_1 + 0x158) == 0.0)))) { + Mat::operator=((Mat *)&local_c0,(Mat *)(param_1 + 0x10)); + param_4 = param_4 * *(double *)(param_1 + 0x130); + } + else { + (**(code **)(*plVar1 + 0x18))(plVar1,param_1,(Mat *)&local_c0,0xffffffff); + } + plVar1 = *(long **)param_2; + if (plVar1 == &DAT_00531fa8) { + if (((*(long *)(param_2 + 0x80) == 0) || (*(double *)(param_2 + 0x138) == 0.0)) && + ((*(double *)(param_2 + 0x140) == 0.0 && + (((*(double *)(param_2 + 0x148) == 0.0 && (*(double *)(param_2 + 0x150) == 0.0)) && + (*(double *)(param_2 + 0x158) == 0.0)))))) { + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + uVar2 = 0x2f; + param_4 = param_4 / *(double *)(param_2 + 0x130); + goto LAB_002f4ccc; + } + } + else if (((plVar1 == &DAT_00531fb8) && (*(int *)(param_2 + 8) == 0x2f)) && + ((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + Mat::operator=((Mat *)&local_60,(Mat *)(param_2 + 0x10)); + uVar2 = 0x2a; + param_4 = param_4 / *(double *)(param_2 + 0x130); + goto LAB_002f4ccc; + } + (**(code **)(*plVar1 + 0x18))(plVar1,param_2,(Mat *)&local_60,0xffffffff); + uVar2 = 0x2f; +LAB_002f4ccc: + FUN_002f46e0(param_4,param_3,uVar2,(Mat *)&local_c0,(Mat *)&local_60); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + Mat::release((Mat *)&local_c0); + if (local_78 == &local_70) { + return; + } + fastFree(local_78); + return; +} + + +================================================================== + +### FUNC 002f4f00 (284 bytes) name=divide + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::divide(double, cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::divide(MatOp *this,double param_1,MatExpr *param_2,MatExpr *param_3) + +{ + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f5070; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_2 + 0x18))(*(long **)param_2,param_2,(Mat *)&uStack_60,0xffffffff); + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + uStack_b8 = _UNK_002f5088; + local_c0 = _DAT_002f5080; + local_98 = 0; + local_90 = 0; + local_88 = 0; + FUN_002f46e0(param_1,param_3,0x2f,(Mat *)&uStack_60,(Mat *)&local_c0); + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f5090 (220 bytes) name=FUN_002f5090 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f5090(double param_1,MatOp *param_2,MatExpr *param_3,MatExpr *param_4) + +{ + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + if ((*(int *)(param_3 + 8) == 0x2f) && + ((*(long *)(param_3 + 0x80) == 0 || (*(double *)(param_3 + 0x138) == 0.0)))) { + local_18 = &local_10; + local_20 = &uStack_58; + uStack_58 = _UNK_002f51a8; + local_60 = _DAT_002f51a0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + uStack_8 = 0; + local_10 = 0; + local_30 = 0; + local_28 = 0; + FUN_002f2ce0(param_1 / *(double *)(param_3 + 0x130),0,param_4,param_3 + 0x10,(Mat *)&local_60); + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + return; + } + } + else { + cv::MatOp::divide(param_2,param_1,param_3,param_4); + } + return; +} + + +================================================================== + +### FUNC 002f51b0 (272 bytes) name=abs + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::MatOp::abs(cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::abs(MatOp *this,MatExpr *param_1,MatExpr *param_2) + +{ + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f5310; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_68 = 0; + local_70 = 0; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + uStack_b8 = _UNK_002f5328; + local_c0 = _DAT_002f5320; + local_90 = 0; + local_88 = 0; + FUN_002f46e0(0x3ff0000000000000,param_2,0x61,(Mat *)&uStack_60,(Mat *)&local_c0); + Mat::release((Mat *)&local_c0); + if (local_78 != &local_70) { + fastFree(local_78); + } + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f5330 (264 bytes) name=FUN_002f5330 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f5330(double param_1,MatOp *param_2,MatExpr *param_3,MatExpr *param_4) + +{ + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + if (((*(undefined8 **)param_3 == &DAT_00531fa8) && + (((*(long *)(param_3 + 0x80) == 0 || (*(double *)(param_3 + 0x138) == 0.0)) && + (*(double *)(param_3 + 0x140) == 0.0)))) && + (((*(double *)(param_3 + 0x148) == 0.0 && (*(double *)(param_3 + 0x150) == 0.0)) && + (*(double *)(param_3 + 0x158) == 0.0)))) { + local_18 = &local_10; + local_20 = &uStack_58; + local_50 = 0; + uStack_8 = 0; + local_10 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + uStack_58 = _UNK_002f5468; + local_60 = _DAT_002f5460; + local_28 = 0; + FUN_002f46e0(param_1 / *(double *)(param_3 + 0x130),param_4,0x2f,param_3 + 0x10,(Mat *)&local_60 + ); + cv::Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + cv::fastFree(local_18); + return; + } + } + else { + cv::MatOp::divide(param_2,param_1,param_3,param_4); + } + return; +} + + +================================================================== + +### FUNC 002f5470 (284 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator/(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f46e0(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f55a0 (176 bytes) name=operator/ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void __thiscall cv::operator/(cv *this,double param_1,Mat *param_2) + +{ + MatExpr *in_x8; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + MatExpr::MatExpr(in_x8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = 0; + local_54 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + FUN_002f46e0(param_1); + Mat::release((Mat *)&local_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f568c (284 bytes) name=min + +/* cv::min(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::min(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f46e0(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f57bc (284 bytes) name=max + +/* cv::max(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::max(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f46e0(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f58ec (284 bytes) name=operator& + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator&(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f46e0(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f5a1c (284 bytes) name=operator| + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator|(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f46e0(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f5b4c (284 bytes) name=operator^ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator^(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f46e0(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f5c80 (376 bytes) name=FUN_002f5c80 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f5c80(undefined8 *param_1,char param_2,Mat *param_3,Scalar_ *param_4) + +{ + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + local_1d8 = &local_1d0; + local_178 = &local_170; + uStack_218 = _UNK_002f5e68; + local_220 = _DAT_002f5e60; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_1b8 = _UNK_002f5e68; + local_1c0 = _DAT_002f5e60; + uStack_168 = 0; + local_170 = 0; + local_1e0 = &uStack_218; + local_180 = &uStack_1b8; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531fb8,(int)param_2,param_3,(Mat *)&local_220, + (Mat *)&local_1c0,1.0,0.0,param_4); + *param_1 = local_160; + *(undefined4 *)(param_1 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_1 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_1 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_1 + 0x1a),aMStack_90); + param_1[0x27] = uStack_28; + param_1[0x26] = local_30; + param_1[0x28] = local_20; + param_1[0x29] = uStack_18; + param_1[0x2a] = local_10; + param_1[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + return; +} + + +================================================================== + +### FUNC 002f5e70 (280 bytes) name=operator& + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator&(cv *this,Mat *param_1,Scalar_ *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f5f9c (280 bytes) name=operator& + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::Mat const&) */ + +void __thiscall cv::operator&(cv *this,Scalar_ *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f60c8 (280 bytes) name=operator| + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator|(cv *this,Mat *param_1,Scalar_ *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f61f4 (280 bytes) name=operator| + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::Mat const&) */ + +void __thiscall cv::operator|(cv *this,Scalar_ *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f6320 (280 bytes) name=operator^ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Scalar_ const&) */ + +void __thiscall cv::operator^(cv *this,Mat *param_1,Scalar_ *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f644c (280 bytes) name=operator^ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&, cv::Mat const&) */ + +void __thiscall cv::operator^(cv *this,Scalar_ *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f6578 (88 bytes) name=operator~ + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&) */ + +void __thiscall cv::operator~(cv *this,Mat *param_1) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f65e4 (88 bytes) name=abs + +/* cv::abs(cv::Mat const&) */ + +void __thiscall cv::abs(cv *this,Mat *param_1) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f6650 (236 bytes) name=FUN_002f6650 + +void FUN_002f6650(MatOp *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + double dVar1; + double dStack_20; + double dStack_18; + double local_10; + double dStack_8; + + if (*(long *)(param_2 + 0x80) == 0) { + dStack_8 = *(double *)(param_2 + 0x130); + if (ABS(dStack_8) == 1.0) { +LAB_002f66b8: + dStack_20 = dStack_8 * -*(double *)(param_2 + 0x140); + dStack_18 = dStack_8 * -*(double *)(param_2 + 0x148); + local_10 = dStack_8 * -*(double *)(param_2 + 0x150); + dStack_8 = dStack_8 * -*(double *)(param_2 + 0x158); + FUN_002f5c80(param_3,0x61,param_2 + 0x10,&dStack_20); + return; + } + } + else { + dVar1 = *(double *)(param_2 + 0x138); + if (dVar1 == 0.0) { + dStack_8 = *(double *)(param_2 + 0x130); + if (ABS(dStack_8) == 1.0) goto LAB_002f66b8; + } + else { + dStack_8 = *(double *)(param_2 + 0x130); + } + if ((dVar1 + dStack_8 == 0.0) && (dVar1 * dStack_8 == -1.0)) { + FUN_002f46e0(0x3ff0000000000000,param_3,0x61,param_2 + 0x10,param_2 + 0x70); + return; + } + } + cv::MatOp::abs(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 002f673c (96 bytes) name=min + +/* cv::min(cv::Mat const&, double) */ + +void __thiscall cv::min(cv *this,Mat *param_1,double param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f67b0 (96 bytes) name=min + +/* cv::min(double, cv::Mat const&) */ + +void __thiscall cv::min(cv *this,double param_1,Mat *param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f6824 (96 bytes) name=max + +/* cv::max(cv::Mat const&, double) */ + +void __thiscall cv::max(cv *this,Mat *param_1,double param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f6898 (96 bytes) name=max + +/* cv::max(double, cv::Mat const&) */ + +void __thiscall cv::max(cv *this,double param_1,Mat *param_2) + +{ + MatExpr *in_x8; + + MatExpr::MatExpr(in_x8); + FUN_002f5c80(); + return; +} + + +================================================================== + +### FUNC 002f6910 (304 bytes) name=FUN_002f6910 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f6910(undefined8 *param_1,int param_2,Mat *param_3,Mat *param_4) + +{ + undefined8 uStack_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_1d8 = 0; + uStack_1e0 = 0; + local_178 = &local_170; + uStack_1b8 = _UNK_002f6a88; + local_1c0 = _DAT_002f6a80; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_168 = 0; + local_170 = 0; + local_180 = &uStack_1b8; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531f90,param_2,param_3,param_4,(Mat *)&local_1c0, + 1.0,1.0,(Scalar_ *)&uStack_1e0); + *param_1 = local_160; + *(undefined4 *)(param_1 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_1 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_1 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_1 + 0x1a),aMStack_90); + param_1[0x27] = uStack_28; + param_1[0x26] = local_30; + param_1[0x28] = local_20; + param_1[0x29] = uStack_18; + param_1[0x2a] = local_10; + param_1[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 002f6a90 (280 bytes) name=operator< + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator<(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f6910(); + return; +} + + +================================================================== + +### FUNC 002f6bbc (280 bytes) name=operator<= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator<=(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f6910(); + return; +} + + +================================================================== + +### FUNC 002f6ce8 (280 bytes) name=operator== + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator==(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f6910(); + return; +} + + +================================================================== + +### FUNC 002f6e14 (280 bytes) name=operator!= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator!=(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f6910(); + return; +} + + +================================================================== + +### FUNC 002f6f40 (280 bytes) name=operator>= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator>=(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f6910(); + return; +} + + +================================================================== + +### FUNC 002f706c (280 bytes) name=operator> + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, cv::Mat const&) */ + +void __thiscall cv::operator>(cv *this,Mat *param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f6910(); + return; +} + + +================================================================== + +### FUNC 002f71a0 (384 bytes) name=FUN_002f71a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f71a0(double param_1,undefined8 *param_2,int param_3,Mat *param_4) + +{ + undefined8 uStack_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_238 = 0; + uStack_240 = 0; + local_1d8 = &local_1d0; + local_178 = &local_170; + uStack_218 = _UNK_002f7388; + local_220 = _DAT_002f7380; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_1b8 = _UNK_002f7388; + local_1c0 = _DAT_002f7380; + uStack_168 = 0; + local_170 = 0; + uStack_228 = 0; + local_230 = 0; + local_1e0 = &uStack_218; + local_180 = &uStack_1b8; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531f90,param_3,param_4,(Mat *)&local_220, + (Mat *)&local_1c0,param_1,1.0,(Scalar_ *)&uStack_240); + *param_2 = local_160; + *(undefined4 *)(param_2 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_2 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_2 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_2 + 0x1a),aMStack_90); + param_2[0x27] = uStack_28; + param_2[0x26] = local_30; + param_2[0x28] = local_20; + param_2[0x29] = uStack_18; + param_2[0x2a] = local_10; + param_2[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + return; +} + + +================================================================== + +### FUNC 002f7390 (276 bytes) name=operator< + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void cv::operator<(Mat *param_1,double param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f74b8 (276 bytes) name=operator< + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void cv::operator<(double param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f75e0 (276 bytes) name=operator<= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void cv::operator<=(Mat *param_1,double param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7708 (276 bytes) name=operator<= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void cv::operator<=(double param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7830 (276 bytes) name=operator== + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void cv::operator==(Mat *param_1,double param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7958 (276 bytes) name=operator== + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void cv::operator==(double param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7a80 (276 bytes) name=operator!= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void cv::operator!=(Mat *param_1,double param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7ba8 (276 bytes) name=operator!= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void cv::operator!=(double param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7cd0 (276 bytes) name=operator>= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void cv::operator>=(Mat *param_1,double param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7df8 (276 bytes) name=operator>= + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void cv::operator>=(double param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f7f20 (276 bytes) name=operator> + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::Mat const&, double) */ + +void cv::operator>(Mat *param_1,double param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f8048 (276 bytes) name=operator> + +/* cv::TEMPNAMEPLACEHOLDERVALUE(double, cv::Mat const&) */ + +void cv::operator>(double param_1,Mat *param_2) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f71a0(); + return; +} + + +================================================================== + +### FUNC 002f8170 (380 bytes) name=FUN_002f8170 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f8170(double param_1,undefined8 *param_2,Mat *param_3) + +{ + undefined8 uStack_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_238 = 0; + uStack_240 = 0; + local_1d8 = &local_1d0; + local_178 = &local_170; + uStack_218 = _UNK_002f8358; + local_220 = _DAT_002f8350; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_1b8 = _UNK_002f8358; + local_1c0 = _DAT_002f8350; + uStack_168 = 0; + local_170 = 0; + uStack_228 = 0; + local_230 = 0; + local_1e0 = &uStack_218; + local_180 = &uStack_1b8; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531fa0,0,param_3,(Mat *)&local_220, + (Mat *)&local_1c0,param_1,0.0,(Scalar_ *)&uStack_240); + *param_2 = local_160; + *(undefined4 *)(param_2 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_2 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_2 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_2 + 0x1a),aMStack_90); + param_2[0x27] = uStack_28; + param_2[0x26] = local_30; + param_2[0x28] = local_20; + param_2[0x29] = uStack_18; + param_2[0x2a] = local_10; + param_2[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + return; +} + + +================================================================== + +### FUNC 002f8360 (172 bytes) name=transpose + +/* cv::MatOp::transpose(cv::MatExpr const&, cv::MatExpr&) const */ + +void __thiscall cv::MatOp::transpose(MatOp *this,MatExpr *param_1,MatExpr *param_2) + +{ + undefined8 uStack_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + local_18 = &local_10; + local_48 = 0; + local_40 = 0; + local_20 = &local_58; + uStack_60 = DAT_002f8438; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_58 = 0; + local_50 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(**(long **)param_1 + 0x18))(*(long **)param_1,param_1,(Mat *)&uStack_60,0xffffffff); + FUN_002f8170(0x3ff0000000000000,param_2,(Mat *)&uStack_60); + Mat::release((Mat *)&uStack_60); + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 002f8440 (108 bytes) name=FUN_002f8440 + +void FUN_002f8440(MatOp *param_1,MatExpr *param_2,MatExpr *param_3) + +{ + if (((*(undefined8 **)param_2 == &DAT_00531fa8) && + (((*(long *)(param_2 + 0x80) == 0 || (*(double *)(param_2 + 0x138) == 0.0)) && + (*(double *)(param_2 + 0x140) == 0.0)))) && + (((*(double *)(param_2 + 0x148) == 0.0 && (*(double *)(param_2 + 0x150) == 0.0)) && + (*(double *)(param_2 + 0x158) == 0.0)))) { + FUN_002f8170(*(undefined8 *)(param_2 + 0x130),param_3,param_2 + 0x10); + return; + } + cv::MatOp::transpose(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 002f84ac (536 bytes) name=FUN_002f84ac + +void FUN_002f84ac(double param_1,double param_2,undefined8 *param_3,int param_4,Mat *param_5, + Mat *param_6,Mat *param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 *puVar5; + undefined8 uStack_180; + undefined8 uStack_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + undefined4 local_150; + int local_14c; + undefined4 local_148; + undefined4 local_144; + undefined8 local_140; + undefined8 uStack_138; + undefined8 local_130; + undefined8 uStack_128; + undefined8 local_120; + long lStack_118; + undefined8 *local_108; + undefined4 local_f0; + int local_ec; + undefined4 local_e8; + undefined4 local_e4; + undefined8 local_e0; + undefined8 uStack_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + long lStack_b8; + undefined8 *local_a8; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_178 = 0; + uStack_180 = 0; + uStack_168 = 0; + local_170 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531f88,param_4,param_5,param_6,param_7,param_1, + param_2,(Scalar_ *)&uStack_180); + *param_3 = local_160; + *(undefined4 *)(param_3 + 1) = local_158; + if (lStack_118 != 0) { + piVar1 = (int *)(lStack_118 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + cv::Mat::release((Mat *)(param_3 + 2)); + *(undefined4 *)(param_3 + 2) = local_150; + if ((*(int *)((long)param_3 + 0x14) < 3) && (local_14c < 3)) { + puVar5 = (undefined8 *)param_3[0xb]; + *(int *)((long)param_3 + 0x14) = local_14c; + *(undefined4 *)(param_3 + 3) = local_148; + uVar4 = *local_108; + *(undefined4 *)((long)param_3 + 0x1c) = local_144; + *puVar5 = uVar4; + puVar5[1] = local_108[1]; + } + else { + cv::Mat::copySize((Mat *)(param_3 + 2),(Mat *)&local_150); + } + param_3[5] = uStack_138; + param_3[4] = local_140; + param_3[7] = uStack_128; + param_3[6] = local_130; + param_3[9] = lStack_118; + param_3[8] = local_120; + if (lStack_b8 != 0) { + piVar1 = (int *)(lStack_b8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + cv::Mat::release((Mat *)(param_3 + 0xe)); + *(undefined4 *)(param_3 + 0xe) = local_f0; + if ((*(int *)((long)param_3 + 0x74) < 3) && (local_ec < 3)) { + puVar5 = (undefined8 *)param_3[0x17]; + *(int *)((long)param_3 + 0x74) = local_ec; + *(undefined4 *)(param_3 + 0xf) = local_e8; + uVar4 = *local_a8; + *(undefined4 *)((long)param_3 + 0x7c) = local_e4; + *puVar5 = uVar4; + puVar5[1] = local_a8[1]; + } + else { + cv::Mat::copySize((Mat *)(param_3 + 0xe),(Mat *)&local_f0); + } + param_3[0x11] = uStack_d8; + param_3[0x10] = local_e0; + param_3[0x13] = uStack_c8; + param_3[0x12] = local_d0; + param_3[0x15] = lStack_b8; + param_3[0x14] = local_c0; + cv::Mat::operator=((Mat *)(param_3 + 0x1a),aMStack_90); + param_3[0x27] = uStack_28; + param_3[0x26] = local_30; + param_3[0x28] = local_20; + param_3[0x29] = uStack_18; + param_3[0x2a] = local_10; + param_3[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + return; +} + + +================================================================== + +### FUNC 002f86d8 (592 bytes) name=FUN_002f86d8 + +void FUN_002f86d8(MatOp *param_1,MatExpr *param_2,MatExpr *param_3,MatExpr *param_4) + +{ + char cVar1; + uint uVar2; + uint uVar3; + MatOp *this; + undefined8 *puVar4; + undefined8 uVar5; + undefined8 uVar6; + + puVar4 = *(undefined8 **)param_2; + this = *(MatOp **)param_3; + uVar6 = 0x3ff0000000000000; + if (puVar4 != &DAT_00531f80) { + uVar6 = *(undefined8 *)(param_2 + 0x130); + } + uVar5 = 0x3ff0000000000000; + if (this != (MatOp *)&DAT_00531f80) { + uVar5 = *(undefined8 *)(param_3 + 0x130); + } + if ((puVar4 == &DAT_00531f88) && + ((*(long *)(param_2 + 0xe0) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + if (this == (MatOp *)&DAT_00531f80) { + uVar3 = *(uint *)(param_2 + 8) & 0xfffffffb; + uVar2 = 0; +LAB_002f8880: + FUN_002f84ac(uVar6,param_4,uVar3 | uVar2,param_2 + 0x10,param_2 + 0x70,param_3 + 0x10); + return; + } + if (this == (MatOp *)&DAT_00531fa8) { + if (((((*(long *)(param_3 + 0x80) == 0) || (*(double *)(param_3 + 0x138) == 0.0)) && + (*(double *)(param_3 + 0x140) == 0.0)) && + ((*(double *)(param_3 + 0x148) == 0.0 && (*(double *)(param_3 + 0x150) == 0.0)))) && + (*(double *)(param_3 + 0x158) == 0.0)) { + uVar2 = 0; + uVar3 = *(uint *)(param_2 + 8) & 0xfffffffb; + goto LAB_002f8880; + } + goto LAB_002f874c; + } + if (this == (MatOp *)&DAT_00531fa0) { + uVar2 = 4; + uVar3 = *(uint *)(param_2 + 8) & 0xfffffffb; + goto LAB_002f8880; + } + } + if (((this == (MatOp *)&DAT_00531f88) && + ((*(long *)(param_3 + 0xe0) == 0 || (*(double *)(param_3 + 0x138) == 0.0)))) && + ((puVar4 == &DAT_00531f80 || + ((cVar1 = FUN_002eb1b8(param_2), cVar1 != '\0' || (puVar4 == &DAT_00531fa0)))))) { + uVar3 = 4; + if (puVar4 != &DAT_00531fa0) { + uVar3 = 0; + } + FUN_002f84ac(uVar5,uVar6,param_4,uVar3 | *(uint *)(param_3 + 8) & 0xfffffffb,param_3 + 0x10, + param_3 + 0x70,param_2 + 0x10); + return; + } +LAB_002f874c: + if (this == param_1) { + cv::MatOp::add(this,param_2,param_3,param_4); + return; + } + (**(code **)(*(long *)this + 0x68))(this,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 002f8928 (592 bytes) name=FUN_002f8928 + +void FUN_002f8928(MatOp *param_1,MatExpr *param_2,MatExpr *param_3,MatExpr *param_4) + +{ + char cVar1; + uint uVar2; + uint uVar3; + MatOp *this; + undefined8 *puVar4; + undefined8 uVar5; + double dVar6; + + puVar4 = *(undefined8 **)param_2; + this = *(MatOp **)param_3; + uVar5 = 0x3ff0000000000000; + if (puVar4 != &DAT_00531f80) { + uVar5 = *(undefined8 *)(param_2 + 0x130); + } + dVar6 = 1.0; + if (this != (MatOp *)&DAT_00531f80) { + dVar6 = *(double *)(param_3 + 0x130); + } + if ((puVar4 == &DAT_00531f88) && + ((*(long *)(param_2 + 0xe0) == 0 || (*(double *)(param_2 + 0x138) == 0.0)))) { + if (this == (MatOp *)&DAT_00531f80) { + uVar3 = *(uint *)(param_2 + 8) & 0xfffffffb; + uVar2 = 0; +LAB_002f8acc: + FUN_002f84ac(uVar5,-dVar6,param_4,uVar3 | uVar2,param_2 + 0x10,param_2 + 0x70,param_3 + 0x10); + return; + } + if (this == (MatOp *)&DAT_00531fa8) { + if (((((*(long *)(param_3 + 0x80) == 0) || (*(double *)(param_3 + 0x138) == 0.0)) && + (*(double *)(param_3 + 0x140) == 0.0)) && + ((*(double *)(param_3 + 0x148) == 0.0 && (*(double *)(param_3 + 0x150) == 0.0)))) && + (*(double *)(param_3 + 0x158) == 0.0)) { + uVar2 = 0; + uVar3 = *(uint *)(param_2 + 8) & 0xfffffffb; + goto LAB_002f8acc; + } + goto LAB_002f899c; + } + if (this == (MatOp *)&DAT_00531fa0) { + uVar2 = 4; + uVar3 = *(uint *)(param_2 + 8) & 0xfffffffb; + goto LAB_002f8acc; + } + } + if (((this == (MatOp *)&DAT_00531f88) && + ((*(long *)(param_3 + 0xe0) == 0 || (*(double *)(param_3 + 0x138) == 0.0)))) && + ((puVar4 == &DAT_00531f80 || + ((cVar1 = FUN_002eb1b8(param_2), cVar1 != '\0' || (puVar4 == &DAT_00531fa0)))))) { + uVar3 = 4; + if (puVar4 != &DAT_00531fa0) { + uVar3 = 0; + } + FUN_002f84ac(-dVar6,uVar5,param_4,uVar3 | *(uint *)(param_3 + 8) & 0xfffffffb,param_3 + 0x10, + param_3 + 0x70,param_2 + 0x10); + return; + } +LAB_002f899c: + if (this == param_1) { + cv::MatOp::subtract(this,param_2,param_3,param_4); + return; + } + (**(code **)(*(long *)this + 0x78))(this,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 002f8b80 (388 bytes) name=FUN_002f8b80 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f8b80(undefined8 *param_1,int param_2,Mat *param_3) + +{ + undefined8 uStack_240; + undefined8 uStack_238; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_238 = 0; + uStack_240 = 0; + local_1d8 = &local_1d0; + local_178 = &local_170; + uStack_218 = _UNK_002f8d78; + local_220 = _DAT_002f8d70; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_1b8 = _UNK_002f8d78; + local_1c0 = _DAT_002f8d70; + uStack_168 = 0; + local_170 = 0; + uStack_228 = 0; + local_230 = 0; + local_1e0 = &uStack_218; + local_180 = &uStack_1b8; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531fb0,param_2,param_3,(Mat *)&local_220, + (Mat *)&local_1c0,1.0,0.0,(Scalar_ *)&uStack_240); + *param_1 = local_160; + *(undefined4 *)(param_1 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_1 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_1 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_1 + 0x1a),aMStack_90); + param_1[0x27] = uStack_28; + param_1[0x26] = local_30; + param_1[0x28] = local_20; + param_1[0x29] = uStack_18; + param_1[0x2a] = local_10; + param_1[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + return; +} + + +================================================================== + +### FUNC 002f8d80 (304 bytes) name=FUN_002f8d80 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_002f8d80(undefined8 *param_1,int param_2,Mat *param_3,Mat *param_4) + +{ + undefined8 uStack_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uStack_1d8 = 0; + uStack_1e0 = 0; + local_178 = &local_170; + uStack_1b8 = _UNK_002f8ef8; + local_1c0 = _DAT_002f8ef0; + uStack_1c8 = 0; + local_1d0 = 0; + uStack_168 = 0; + local_170 = 0; + local_180 = &uStack_1b8; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,(MatOp *)&DAT_00531f70,param_2,param_3,param_4,(Mat *)&local_1c0, + 1.0,1.0,(Scalar_ *)&uStack_1e0); + *param_1 = local_160; + *(undefined4 *)(param_1 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_1 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_1 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_1 + 0x1a),aMStack_90); + param_1[0x27] = uStack_28; + param_1[0x26] = local_30; + param_1[0x28] = local_20; + param_1[0x29] = uStack_18; + param_1[0x2a] = local_10; + param_1[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + return; +} + + +================================================================== + +### FUNC 002f8f00 (148 bytes) name=FUN_002f8f00 + +void FUN_002f8f00(MatOp *param_1,MatExpr *param_2,MatExpr *param_3,MatExpr *param_4) + +{ + MatOp *pMVar1; + + pMVar1 = *(MatOp **)param_3; + if ((*(undefined8 **)param_2 == &DAT_00531fb0) && (pMVar1 == (MatOp *)&DAT_00531f80)) { + FUN_002f8d80(param_4,*(undefined4 *)(param_2 + 8),param_2 + 0x10,param_3 + 0x10); + return; + } + if (param_1 != pMVar1) { + (**(code **)(*(long *)pMVar1 + 0xb8))(pMVar1,param_2,param_3); + return; + } + cv::MatOp::matmul(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 002f8f94 (604 bytes) name=FUN_002f8f94 + +void FUN_002f8f94(double param_1,undefined8 *param_2,int param_3,int *param_4,ulong param_5) + +{ + int iVar1; + MatOp *pMVar2; + undefined8 local_2a0; + undefined8 local_298; + undefined8 local_290; + undefined8 local_288; + uint local_280 [3]; + int local_274; + undefined8 local_270; + undefined8 local_268; + long local_260; + long local_258; + undefined8 local_250; + undefined8 local_248; + uint *local_240; + long *local_238; + long local_230; + long local_228; + undefined4 local_220; + undefined4 local_21c; + undefined4 local_218; + undefined4 local_214; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined4 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined4 local_1c0; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar2 = (MatOp *)FUN_002eeb34(); + local_274 = *param_4; + local_280[2] = param_4[1]; + iVar1 = ((uint)(param_5 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)param_5 & 7) << 1)) & 3); + local_230 = (long)iVar1 * (long)local_274; + local_260 = local_230 * (int)local_280[2]; + local_280[1] = 2; + local_240 = local_280 + 2; + local_238 = &local_230; + local_280[0] = ((uint)param_5 & 0xfff) + 0x42ff0000 | 0x4000; + local_270 = 0; + local_228 = (long)iVar1; + local_268 = 0; + local_1e0 = &local_218; + local_250 = 0; + local_1d8 = &local_1d0; + local_248 = 0; + local_180 = &local_1b8; + local_178 = &local_170; + local_220 = 0x42ff0000; + local_21c = 0; + local_218 = 0; + local_214 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1c8 = 0; + local_1d0 = 0; + local_1c0 = 0x42ff0000; + local_168 = 0; + local_170 = 0; + local_1bc = 0; + local_1b8 = 0; + local_1b4 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + local_2a0 = 0; + local_298 = 0; + local_290 = 0; + local_288 = 0; + local_258 = local_260; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,pMVar2,param_3,(Mat *)local_280,(Mat *)&local_220, + (Mat *)&local_1c0,param_1,0.0,(Scalar_ *)&local_2a0); + *param_2 = local_160; + *(undefined4 *)(param_2 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_2 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_2 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_2 + 0x1a),aMStack_90); + param_2[0x27] = uStack_28; + param_2[0x26] = local_30; + param_2[0x28] = local_20; + param_2[0x29] = uStack_18; + param_2[0x2a] = local_10; + param_2[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + cv::Mat::release((Mat *)local_280); + if (local_238 != &local_230) { + cv::fastFree(local_238); + } + return; +} + + +================================================================== + +### FUNC 002f9278 (516 bytes) name=FUN_002f9278 + +void FUN_002f9278(double param_1,undefined8 *param_2,int param_3,int param_4,int *param_5, + int param_6) + +{ + MatOp *pMVar1; + undefined8 local_2a0; + undefined8 local_298; + undefined8 local_290; + undefined8 local_288; + Mat aMStack_280 [72]; + undefined1 *local_238; + undefined1 auStack_230 [16]; + undefined4 local_220; + undefined4 local_21c; + undefined4 local_218; + undefined4 local_214; + undefined8 local_210; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined4 *local_1e0; + undefined8 *local_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined4 local_1c0; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined4 local_158; + Mat aMStack_150 [96]; + Mat aMStack_f0 [96]; + Mat aMStack_90 [96]; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + pMVar1 = (MatOp *)FUN_002eeb34(); + cv::Mat::Mat(aMStack_280,param_4,param_5,param_6,(void *)0x0,(ulong *)0x0); + local_1e0 = &local_218; + local_1d8 = &local_1d0; + local_180 = &local_1b8; + local_178 = &local_170; + local_1c8 = 0; + local_1d0 = 0; + local_168 = 0; + local_170 = 0; + local_220 = 0x42ff0000; + local_21c = 0; + local_218 = 0; + local_214 = 0; + local_210 = 0; + local_208 = 0; + local_200 = 0; + local_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1c0 = 0x42ff0000; + local_1bc = 0; + local_1b8 = 0; + local_1b4 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + local_198 = 0; + local_190 = 0; + local_188 = 0; + local_2a0 = 0; + local_298 = 0; + local_290 = 0; + local_288 = 0; + cv::MatExpr::MatExpr + ((MatExpr *)&local_160,pMVar1,param_3,aMStack_280,(Mat *)&local_220,(Mat *)&local_1c0, + param_1,0.0,(Scalar_ *)&local_2a0); + *param_2 = local_160; + *(undefined4 *)(param_2 + 1) = local_158; + cv::Mat::operator=((Mat *)(param_2 + 2),aMStack_150); + cv::Mat::operator=((Mat *)(param_2 + 0xe),aMStack_f0); + cv::Mat::operator=((Mat *)(param_2 + 0x1a),aMStack_90); + param_2[0x27] = uStack_28; + param_2[0x26] = local_30; + param_2[0x28] = local_20; + param_2[0x29] = uStack_18; + param_2[0x2a] = local_10; + param_2[0x2b] = uStack_8; + cv::MatExpr::~MatExpr((MatExpr *)&local_160); + cv::Mat::release((Mat *)&local_1c0); + if (local_178 != &local_170) { + cv::fastFree(local_178); + } + cv::Mat::release((Mat *)&local_220); + if (local_1d8 != &local_1d0) { + cv::fastFree(local_1d8); + } + cv::Mat::release(aMStack_280); + if (local_238 != auStack_230) { + cv::fastFree(local_238); + } + return; +} + + +================================================================== + +### FUNC 002f9504 (276 bytes) name=t + +/* cv::Mat::t() const */ + +void cv::Mat::t(void) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f8170(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f962c (272 bytes) name=inv + +/* cv::Mat::inv(int) const */ + +void cv::Mat::inv(int param_1) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f8b80(); + return; +} + + +================================================================== + +### FUNC 002f9750 (476 bytes) name=mul + +/* cv::Mat::mul(cv::_InputArray const&, double) const */ + +void cv::Mat::mul(_InputArray *param_1,double param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + _InputArray *in_x1; + Mat *pMVar5; + MatExpr *in_x8; + undefined8 *puVar6; + long *plVar7; + code *pcVar8; + undefined4 local_1c0; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 local_198; + undefined8 local_190; + long local_188; + undefined4 *local_180; + undefined8 *local_178; + undefined8 local_170; + undefined8 local_168; + MatExpr aMStack_160 [352]; + + MatExpr::MatExpr(in_x8); + iVar4 = _InputArray::kind(in_x1); + if (iVar4 != 0x60000) { + iVar4 = _InputArray::kind(in_x1); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(in_x1 + 8); + local_180 = &local_1b8; + local_178 = &local_170; + local_1c0 = *(undefined4 *)pMVar5; + local_1bc = *(undefined4 *)(pMVar5 + 4); + local_1b8 = *(undefined4 *)(pMVar5 + 8); + local_1b4 = *(undefined4 *)(pMVar5 + 0xc); + local_1b0 = *(undefined8 *)(pMVar5 + 0x10); + local_1a8 = *(undefined8 *)(pMVar5 + 0x18); + local_1a0 = *(undefined8 *)(pMVar5 + 0x20); + local_198 = *(undefined8 *)(pMVar5 + 0x28); + local_190 = *(undefined8 *)(pMVar5 + 0x30); + local_188 = *(long *)(pMVar5 + 0x38); + local_168 = 0; + local_170 = 0; + if (local_188 != 0) { + piVar1 = (int *)(local_188 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_170 = **(undefined8 **)(pMVar5 + 0x48); + local_168 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_1bc = 0; + copySize((Mat *)&local_1c0,pMVar5); + } + } + else { + _InputArray::getMat_((int)in_x1); + } + FUN_002f46e0(param_2); + release((Mat *)&local_1c0); + if (local_178 != &local_170) { + fastFree(local_178); + } + return; + } + puVar6 = *(undefined8 **)(in_x1 + 8); + plVar7 = (long *)*puVar6; + pcVar8 = *(code **)(*plVar7 + 0x88); + MatExpr::MatExpr(aMStack_160,(Mat *)param_1); + (*pcVar8)(param_2,plVar7,aMStack_160,puVar6); + MatExpr::~MatExpr(aMStack_160); + return; +} + + +================================================================== + +### FUNC 002f997c (292 bytes) name=zeros + +/* cv::Mat::zeros(int, int, int) */ + +void __thiscall cv::Mat::zeros(Mat *this,int param_1,int param_2,int param_3) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f8f94(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f9ab4 (304 bytes) name=zeros + +/* cv::Mat::zeros(cv::Size_, int) */ + +undefined8 * __thiscall cv::Mat::zeros(undefined8 *param_1,Mat *this,undefined4 param_3) + +{ + undefined4 local_8; + undefined4 local_4; + + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + *(undefined4 *)(param_1 + 2) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 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] = param_1 + 3; + param_1[0xb] = param_1 + 0xc; + param_1[0xd] = 0; + param_1[0xc] = 0; + *(undefined4 *)(param_1 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0xf) = 0; + *(undefined4 *)((long)param_1 + 0x7c) = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = param_1 + 0xf; + param_1[0x17] = param_1 + 0x18; + param_1[0x19] = 0; + param_1[0x18] = 0; + *(undefined4 *)(param_1 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0xd4) = 0; + *(undefined4 *)(param_1 + 0x1b) = 0; + *(undefined4 *)((long)param_1 + 0xdc) = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = param_1 + 0x1b; + param_1[0x23] = param_1 + 0x24; + param_1[0x25] = 0; + param_1[0x24] = 0; + local_8 = *(undefined4 *)this; + param_1[0x27] = 0; + param_1[0x26] = 0; + local_4 = *(undefined4 *)(this + 4); + param_1[0x29] = 0; + param_1[0x28] = 0; + param_1[0x2b] = 0; + param_1[0x2a] = 0; + FUN_002f8f94(0x3ff0000000000000,param_1,0x30,&local_8,param_3); + return param_1; +} + + +================================================================== + +### FUNC 002f9bf8 (292 bytes) name=zeros + +/* cv::Mat::zeros(int, int const*, int) */ + +void __thiscall cv::Mat::zeros(Mat *this,int param_1,int *param_2,int param_3) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[10] = in_x8 + 3; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f9278(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f9d30 (292 bytes) name=ones + +/* cv::Mat::ones(int, int, int) */ + +void __thiscall cv::Mat::ones(Mat *this,int param_1,int param_2,int param_3) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f8f94(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002f9e68 (304 bytes) name=ones + +/* cv::Mat::ones(cv::Size_, int) */ + +undefined8 * __thiscall cv::Mat::ones(undefined8 *param_1,Mat *this,undefined4 param_3) + +{ + undefined4 local_8; + undefined4 local_4; + + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + *(undefined4 *)(param_1 + 2) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 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] = param_1 + 3; + param_1[0xb] = param_1 + 0xc; + param_1[0xd] = 0; + param_1[0xc] = 0; + *(undefined4 *)(param_1 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0xf) = 0; + *(undefined4 *)((long)param_1 + 0x7c) = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = param_1 + 0xf; + param_1[0x17] = param_1 + 0x18; + param_1[0x19] = 0; + param_1[0x18] = 0; + *(undefined4 *)(param_1 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0xd4) = 0; + *(undefined4 *)(param_1 + 0x1b) = 0; + *(undefined4 *)((long)param_1 + 0xdc) = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = param_1 + 0x1b; + param_1[0x23] = param_1 + 0x24; + param_1[0x25] = 0; + param_1[0x24] = 0; + local_8 = *(undefined4 *)this; + param_1[0x27] = 0; + param_1[0x26] = 0; + local_4 = *(undefined4 *)(this + 4); + param_1[0x29] = 0; + param_1[0x28] = 0; + param_1[0x2b] = 0; + param_1[0x2a] = 0; + FUN_002f8f94(0x3ff0000000000000,param_1,0x31,&local_8,param_3); + return param_1; +} + + +================================================================== + +### FUNC 002f9fac (292 bytes) name=ones + +/* cv::Mat::ones(int, int const*, int) */ + +void __thiscall cv::Mat::ones(Mat *this,int param_1,int *param_2,int param_3) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[10] = in_x8 + 3; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f9278(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002fa0e4 (292 bytes) name=eye + +/* cv::Mat::eye(int, int, int) */ + +void __thiscall cv::Mat::eye(Mat *this,int param_1,int param_2,int param_3) + +{ + undefined8 *in_x8; + + *in_x8 = 0; + *(undefined4 *)(in_x8 + 1) = 0; + *(undefined4 *)(in_x8 + 2) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x14) = 0; + *(undefined4 *)(in_x8 + 3) = 0; + *(undefined4 *)((long)in_x8 + 0x1c) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[8] = 0; + in_x8[9] = 0; + in_x8[10] = in_x8 + 3; + in_x8[0xb] = in_x8 + 0xc; + in_x8[0xd] = 0; + in_x8[0xc] = 0; + *(undefined4 *)(in_x8 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0x74) = 0; + *(undefined4 *)(in_x8 + 0xf) = 0; + *(undefined4 *)((long)in_x8 + 0x7c) = 0; + in_x8[0x10] = 0; + in_x8[0x11] = 0; + in_x8[0x12] = 0; + in_x8[0x13] = 0; + in_x8[0x14] = 0; + in_x8[0x15] = 0; + in_x8[0x16] = in_x8 + 0xf; + in_x8[0x17] = in_x8 + 0x18; + in_x8[0x19] = 0; + in_x8[0x18] = 0; + *(undefined4 *)(in_x8 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)in_x8 + 0xd4) = 0; + *(undefined4 *)(in_x8 + 0x1b) = 0; + *(undefined4 *)((long)in_x8 + 0xdc) = 0; + in_x8[0x1c] = 0; + in_x8[0x1d] = 0; + in_x8[0x1e] = 0; + in_x8[0x1f] = 0; + in_x8[0x20] = 0; + in_x8[0x21] = 0; + in_x8[0x22] = in_x8 + 0x1b; + in_x8[0x23] = in_x8 + 0x24; + in_x8[0x25] = 0; + in_x8[0x24] = 0; + in_x8[0x27] = 0; + in_x8[0x26] = 0; + in_x8[0x29] = 0; + in_x8[0x28] = 0; + in_x8[0x2b] = 0; + in_x8[0x2a] = 0; + FUN_002f8f94(0x3ff0000000000000); + return; +} + + +================================================================== + +### FUNC 002fa21c (304 bytes) name=eye + +/* cv::Mat::eye(cv::Size_, int) */ + +undefined8 * __thiscall cv::Mat::eye(undefined8 *param_1,Mat *this,undefined4 param_3) + +{ + undefined4 local_8; + undefined4 local_4; + + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + *(undefined4 *)(param_1 + 2) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 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] = param_1 + 3; + param_1[0xb] = param_1 + 0xc; + param_1[0xd] = 0; + param_1[0xc] = 0; + *(undefined4 *)(param_1 + 0xe) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0xf) = 0; + *(undefined4 *)((long)param_1 + 0x7c) = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = param_1 + 0xf; + param_1[0x17] = param_1 + 0x18; + param_1[0x19] = 0; + param_1[0x18] = 0; + *(undefined4 *)(param_1 + 0x1a) = 0x42ff0000; + *(undefined4 *)((long)param_1 + 0xd4) = 0; + *(undefined4 *)(param_1 + 0x1b) = 0; + *(undefined4 *)((long)param_1 + 0xdc) = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = param_1 + 0x1b; + param_1[0x23] = param_1 + 0x24; + param_1[0x25] = 0; + param_1[0x24] = 0; + local_8 = *(undefined4 *)this; + param_1[0x27] = 0; + param_1[0x26] = 0; + local_4 = *(undefined4 *)(this + 4); + param_1[0x29] = 0; + param_1[0x28] = 0; + param_1[0x2b] = 0; + param_1[0x2a] = 0; + FUN_002f8f94(0x3ff0000000000000,param_1,0x49,&local_8,param_3); + return param_1; +} + + +================================================================== + +### FUNC 002fa360 (4 bytes) name=FUN_002fa360 + +void FUN_002fa360(void) + +{ + return; +} + + +================================================================== + +### FUNC 002fa364 (8 bytes) name=FUN_002fa364 + +undefined8 FUN_002fa364(void) + +{ + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 002fa36c (8 bytes) name=FUN_002fa36c + +undefined8 FUN_002fa36c(void) + +{ + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 002fa374 (4 bytes) name=FUN_002fa374 + +void FUN_002fa374(void) + +{ + return; +} + + +================================================================== + +### FUNC 002fa378 (4 bytes) name=FUN_002fa378 + +void FUN_002fa378(void) + +{ + return; +} + + +================================================================== + +### FUNC 002fa37c (4 bytes) name=map + +/* cv::MatAllocator::map(cv::UMatData*, int) const */ + +void cv::MatAllocator::map(UMatData *param_1,int param_2) + +{ + return; +} + + +================================================================== + +### FUNC 002fa380 (12 bytes) name=FUN_002fa380 + +bool FUN_002fa380(undefined8 param_1,long param_2) + +{ + return param_2 != 0; +} + + +================================================================== + +### FUNC 002fa38c (4 bytes) name=~_InputOutputArray + +/* cv::_InputOutputArray::~_InputOutputArray() */ + +void __thiscall cv::_InputOutputArray::~_InputOutputArray(_InputOutputArray *this) + +{ + return; +} + + +================================================================== + +### FUNC 002fa390 (744 bytes) name=FUN_002fa390 + +void FUN_002fa390(long param_1,long param_2,undefined1 *param_3,long param_4,int *param_5) + +{ + undefined1 *puVar1; + int iVar2; + int iVar3; + undefined1 uVar4; + uint uVar5; + int iVar6; + undefined1 *puVar7; + long lVar8; + undefined1 *puVar9; + undefined1 *puVar10; + undefined1 *puVar11; + undefined1 *puVar12; + undefined1 *puVar13; + undefined1 *puVar14; + undefined1 *puVar15; + undefined1 *puVar16; + undefined1 *puVar17; + undefined1 *puVar18; + long lVar19; + int iVar20; + int iVar21; + long lVar22; + long lVar23; + long lVar24; + undefined1 *puVar25; + + iVar2 = *param_5; + iVar3 = param_5[1]; + if (iVar2 + -3 < 1) { + iVar21 = 0; + } + else { + iVar6 = iVar3 + -3; + iVar21 = (iVar3 - 4U & 0xfffffffc) + 4; + puVar10 = param_3 + param_4; + if (iVar6 < 1) { + iVar21 = 0; + } + puVar9 = puVar10 + param_4; + lVar24 = (long)iVar21; + lVar23 = param_4 * 4; + lVar19 = param_2 * 4; + puVar13 = puVar9 + param_4; + lVar22 = 0; + puVar25 = param_3; + do { + if (0 < iVar6) { + puVar12 = (undefined1 *)(param_1 + lVar22); + lVar8 = lVar22 + param_2 + param_2; + puVar7 = (undefined1 *)(param_1 + lVar22 + param_2); + puVar11 = (undefined1 *)(param_1 + lVar8); + puVar14 = (undefined1 *)(param_1 + lVar8 + param_2); + iVar20 = 0; + puVar15 = puVar25; + puVar16 = puVar10; + puVar17 = puVar9; + puVar18 = puVar13; + do { + *puVar15 = *puVar12; + iVar20 = iVar20 + 4; + puVar15[1] = *puVar7; + puVar15[2] = *puVar11; + puVar15[3] = *puVar14; + *puVar16 = puVar12[1]; + puVar16[1] = puVar7[1]; + puVar16[2] = puVar11[1]; + puVar16[3] = puVar14[1]; + *puVar17 = puVar12[2]; + puVar17[1] = puVar7[2]; + puVar17[2] = puVar11[2]; + puVar17[3] = puVar14[2]; + puVar1 = puVar12 + 3; + puVar12 = puVar12 + lVar19; + *puVar18 = *puVar1; + puVar1 = puVar7 + 3; + puVar7 = puVar7 + lVar19; + puVar18[1] = *puVar1; + puVar1 = puVar11 + 3; + puVar11 = puVar11 + lVar19; + puVar18[2] = *puVar1; + puVar1 = puVar14 + 3; + puVar14 = puVar14 + lVar19; + puVar18[3] = *puVar1; + puVar15 = puVar15 + 4; + puVar16 = puVar16 + 4; + puVar17 = puVar17 + 4; + puVar18 = puVar18 + 4; + } while (iVar20 < iVar6); + } + if (iVar21 < iVar3) { + lVar8 = 0; + puVar12 = (undefined1 *)(param_1 + lVar22 + lVar24 * param_2); + do { + puVar25[lVar8 + lVar24] = *puVar12; + puVar10[lVar8 + lVar24] = puVar12[1]; + puVar9[lVar8 + lVar24] = puVar12[2]; + puVar7 = puVar12 + 3; + puVar12 = puVar12 + param_2; + puVar13[lVar8 + lVar24] = *puVar7; + lVar8 = lVar8 + 1; + } while (lVar8 != (ulong)(uint)((iVar3 + -1) - iVar21) + 1); + } + lVar22 = lVar22 + 4; + puVar25 = puVar25 + lVar23; + puVar10 = puVar10 + lVar23; + puVar9 = puVar9 + lVar23; + puVar13 = puVar13 + lVar23; + } while ((int)lVar22 < iVar2 + -3); + iVar21 = (iVar2 - 4U & 0xfffffffc) + 4; + } + if (iVar21 < iVar2) { + uVar5 = iVar3 - 4U >> 2; + lVar22 = (long)iVar21; + iVar6 = (uVar5 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar6 = 0; + } + lVar24 = (long)iVar6; + param_3 = param_3 + param_4 * lVar22; + lVar19 = lVar22; + lVar23 = lVar22 + 1; + while( true ) { + if (0 < iVar3 + -3) { + puVar10 = (undefined1 *)(param_1 + lVar19); + puVar9 = param_3 + 1; + do { + puVar25 = puVar9 + 4; + puVar9[-1] = *puVar10; + *puVar9 = puVar10[param_2]; + puVar9[1] = puVar10[param_2 * 2]; + puVar13 = puVar10 + param_2 * 3; + puVar10 = puVar10 + param_2 * 4; + puVar9[2] = *puVar13; + puVar9 = puVar25; + } while (puVar25 != param_3 + (ulong)uVar5 * 4 + 5); + } + if (iVar6 < iVar3) { + puVar10 = (undefined1 *)(param_1 + lVar19 + lVar24 * param_2); + puVar9 = param_3 + lVar24; + do { + uVar4 = *puVar10; + puVar10 = puVar10 + param_2; + puVar13 = puVar9 + 1; + *puVar9 = uVar4; + puVar9 = puVar13; + } while (puVar13 != param_3 + lVar24 + 1 + (ulong)(uint)((iVar3 + -1) - iVar6)); + } + param_3 = param_3 + param_4; + if (lVar23 == lVar22 + 1 + (ulong)(uint)((iVar2 + -1) - iVar21)) break; + lVar19 = lVar23; + lVar23 = lVar23 + 1; + } + } + return; +} + + +================================================================== + +### FUNC 002fa678 (104 bytes) name=FUN_002fa678 + +void FUN_002fa678(long param_1,long param_2,int param_3) + +{ + undefined1 *puVar1; + undefined1 uVar2; + uint uVar3; + undefined1 *puVar4; + undefined1 *puVar5; + undefined1 *puVar6; + + if (0 < param_3) { + puVar1 = (undefined1 *)(param_1 + 1); + for (uVar3 = param_3 - 2; uVar3 != 0xffffffff; uVar3 = uVar3 - 1) { + puVar6 = puVar1 + param_2 + -1; + puVar4 = puVar1; + do { + uVar2 = *puVar4; + puVar5 = puVar4 + 1; + *puVar4 = *puVar6; + *puVar6 = uVar2; + puVar6 = puVar6 + param_2; + puVar4 = puVar5; + } while (puVar5 != puVar1 + (ulong)uVar3 + 1); + puVar1 = puVar1 + param_2 + 1; + } + } + return; +} + + +================================================================== + +### FUNC 002fa6e0 (804 bytes) name=FUN_002fa6e0 + +void FUN_002fa6e0(long param_1,long param_2,undefined2 *param_3,long param_4,int *param_5) + +{ + undefined2 *puVar1; + int iVar2; + int iVar3; + undefined2 uVar4; + int iVar5; + uint uVar6; + undefined2 *puVar7; + undefined2 *puVar8; + undefined2 *puVar9; + undefined2 *puVar10; + undefined2 *puVar11; + int iVar12; + undefined2 *puVar13; + undefined2 *puVar14; + undefined2 *puVar15; + undefined2 *puVar16; + undefined2 *puVar17; + long lVar18; + long lVar19; + undefined2 *puVar20; + undefined2 *puVar21; + long lVar22; + uint uVar23; + + iVar2 = *param_5; + iVar3 = param_5[1]; + if (iVar2 < 4) { + iVar12 = 0; + } + else { + uVar6 = iVar3 - 4U >> 2; + iVar12 = (uVar6 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar12 = 0; + } + uVar23 = iVar2 - 4U >> 2; + lVar22 = (long)iVar12 * 2; + puVar9 = (undefined2 *)((long)param_3 + param_4); + puVar8 = (undefined2 *)((long)puVar9 + param_4); + puVar20 = (undefined2 *)((long)puVar8 + param_4); + lVar19 = 0; + puVar21 = param_3; + do { + if (0 < iVar3 + -3) { + puVar11 = (undefined2 *)(param_1 + lVar19); + lVar18 = lVar19 + param_2 + param_2; + puVar7 = (undefined2 *)(param_1 + lVar19 + param_2); + puVar10 = (undefined2 *)(param_1 + lVar18); + puVar13 = (undefined2 *)(param_1 + lVar18 + param_2); + lVar18 = 0; + puVar14 = puVar21; + puVar15 = puVar9; + puVar16 = puVar8; + puVar17 = puVar20; + do { + *puVar14 = *puVar11; + lVar18 = lVar18 + 8; + puVar14[1] = *puVar7; + puVar14[2] = *puVar10; + puVar14[3] = *puVar13; + *puVar15 = puVar11[1]; + puVar15[1] = puVar7[1]; + puVar15[2] = puVar10[1]; + puVar15[3] = puVar13[1]; + *puVar16 = puVar11[2]; + puVar16[1] = puVar7[2]; + puVar16[2] = puVar10[2]; + puVar16[3] = puVar13[2]; + puVar1 = puVar11 + 3; + puVar11 = puVar11 + param_2 * 2; + *puVar17 = *puVar1; + puVar1 = puVar7 + 3; + puVar7 = puVar7 + param_2 * 2; + puVar17[1] = *puVar1; + puVar1 = puVar10 + 3; + puVar10 = puVar10 + param_2 * 2; + puVar17[2] = *puVar1; + puVar1 = puVar13 + 3; + puVar13 = puVar13 + param_2 * 2; + puVar17[3] = *puVar1; + puVar14 = puVar14 + 4; + puVar15 = puVar15 + 4; + puVar16 = puVar16 + 4; + puVar17 = puVar17 + 4; + } while (lVar18 != ((ulong)uVar6 + 1) * 8); + } + if (iVar12 < iVar3) { + puVar11 = (undefined2 *)(param_1 + lVar19 + iVar12 * param_2); + lVar18 = 0; + do { + *(undefined2 *)((long)puVar21 + lVar18 + lVar22) = *puVar11; + *(undefined2 *)((long)puVar9 + lVar18 + lVar22) = puVar11[1]; + *(undefined2 *)((long)puVar8 + lVar18 + lVar22) = puVar11[2]; + puVar7 = puVar11 + 3; + puVar11 = (undefined2 *)((long)puVar11 + param_2); + *(undefined2 *)((long)puVar20 + lVar18 + lVar22) = *puVar7; + lVar18 = lVar18 + 2; + } while (lVar18 != ((ulong)(uint)((iVar3 + -1) - iVar12) + 1) * 2); + } + lVar19 = lVar19 + 8; + puVar21 = puVar21 + param_4 * 2; + puVar9 = puVar9 + param_4 * 2; + puVar8 = puVar8 + param_4 * 2; + puVar20 = puVar20 + param_4 * 2; + } while (lVar19 != ((ulong)uVar23 + 1) * 8); + iVar12 = (uVar23 + 1) * 4; + } + if (iVar12 < iVar2) { + uVar6 = iVar3 - 4U >> 2; + iVar5 = (uVar6 + 1) * 4; + lVar19 = (long)iVar12; + if (iVar3 + -3 < 1) { + iVar5 = 0; + } + lVar18 = (long)iVar5; + lVar22 = lVar19 << 1; + param_3 = (undefined2 *)((long)param_3 + param_4 * lVar19); + do { + if (0 < iVar3 + -3) { + puVar9 = (undefined2 *)(param_1 + lVar22); + puVar8 = param_3 + 1; + do { + puVar21 = puVar8 + 4; + puVar8[-1] = *puVar9; + *puVar8 = *(undefined2 *)((long)puVar9 + param_2); + puVar8[1] = puVar9[param_2]; + puVar20 = (undefined2 *)((long)puVar9 + param_2 * 3); + puVar9 = puVar9 + param_2 * 2; + puVar8[2] = *puVar20; + puVar8 = puVar21; + } while (puVar21 != param_3 + (ulong)uVar6 * 4 + 5); + } + if (iVar5 < iVar3) { + puVar9 = (undefined2 *)(param_1 + lVar22 + lVar18 * param_2); + puVar8 = param_3 + lVar18; + do { + uVar4 = *puVar9; + puVar9 = (undefined2 *)((long)puVar9 + param_2); + puVar20 = puVar8 + 1; + *puVar8 = uVar4; + puVar8 = puVar20; + } while (puVar20 != param_3 + lVar18 + 1 + (ulong)(uint)((iVar3 + -1) - iVar5)); + } + lVar22 = lVar22 + 2; + param_3 = (undefined2 *)((long)param_3 + param_4); + } while (lVar22 != (lVar19 + 1 + (ulong)(uint)((iVar2 + -1) - iVar12)) * 2); + } + return; +} + + +================================================================== + +### FUNC 002faa04 (120 bytes) name=FUN_002faa04 + +void FUN_002faa04(long param_1,long param_2,int param_3) + +{ + undefined2 uVar1; + undefined2 *puVar2; + undefined2 *puVar3; + undefined2 *puVar4; + long lVar5; + undefined2 *puVar6; + long lVar7; + uint uVar8; + + if (0 < param_3) { + lVar5 = 1; + puVar6 = (undefined2 *)(param_1 + 2); + uVar8 = param_3 - 2; + lVar7 = 0; + if (1 < param_3) { + do { + puVar4 = (undefined2 *)(param_2 + -2 + (long)puVar6); + puVar2 = puVar6; + do { + uVar1 = *puVar2; + puVar3 = puVar2 + 1; + *puVar2 = *puVar4; + *puVar4 = uVar1; + puVar4 = (undefined2 *)((long)puVar4 + param_2); + puVar2 = puVar3; + } while (puVar3 != (undefined2 *)(param_1 + lVar7 + 2 + (lVar5 + (ulong)uVar8) * 2)); + lVar5 = lVar5 + 1; + puVar6 = (undefined2 *)((long)puVar6 + param_2 + 2); + uVar8 = uVar8 - 1; + lVar7 = lVar7 + param_2; + } while ((int)lVar5 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002faa7c (988 bytes) name=FUN_002faa7c + +void FUN_002faa7c(undefined2 *param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + undefined1 *puVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + long lVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined2 *puVar13; + long lVar14; + long lVar15; + undefined2 *puVar16; + undefined2 *puVar17; + undefined2 *puVar18; + undefined2 *puVar19; + long lVar20; + long lVar21; + int iVar22; + + iVar8 = *param_5; + iVar9 = param_5[1]; + if (iVar8 < 4) { + iVar22 = 0; + } + else { + uVar11 = iVar9 - 4U >> 2; + uVar12 = iVar8 - 4U >> 2; + iVar22 = (uVar11 + 1) * 4; + if (iVar9 + -3 < 1) { + iVar22 = 0; + } + lVar20 = (long)iVar22 * 3; + lVar15 = param_3; + puVar13 = param_1; + do { + lVar21 = lVar15 + param_4; + lVar2 = lVar21 + param_4; + lVar3 = lVar2 + param_4; + if (0 < iVar9 + -3) { + puVar16 = (undefined2 *)((long)puVar13 + param_2); + puVar17 = (undefined2 *)((long)puVar16 + param_2); + lVar14 = 0; + puVar18 = (undefined2 *)((long)puVar17 + param_2); + puVar19 = puVar13; + do { + lVar4 = lVar15 + lVar14; + *(undefined2 *)(lVar15 + lVar14) = *puVar19; + lVar5 = lVar21 + lVar14; + lVar6 = lVar2 + lVar14; + lVar7 = lVar3 + lVar14; + *(undefined1 *)(lVar4 + 2) = *(undefined1 *)(puVar19 + 1); + *(undefined2 *)(lVar4 + 3) = *puVar16; + *(undefined1 *)(lVar4 + 5) = *(undefined1 *)(puVar16 + 1); + *(undefined2 *)(lVar4 + 6) = *puVar17; + *(undefined1 *)(lVar4 + 8) = *(undefined1 *)(puVar17 + 1); + *(undefined2 *)(lVar4 + 9) = *puVar18; + *(undefined1 *)(lVar4 + 0xb) = *(undefined1 *)(puVar18 + 1); + *(undefined2 *)(lVar21 + lVar14) = *(undefined2 *)((long)puVar19 + 3); + *(undefined1 *)(lVar5 + 2) = *(undefined1 *)((long)puVar19 + 5); + *(undefined2 *)(lVar5 + 3) = *(undefined2 *)((long)puVar16 + 3); + *(undefined1 *)(lVar5 + 5) = *(undefined1 *)((long)puVar16 + 5); + *(undefined2 *)(lVar5 + 6) = *(undefined2 *)((long)puVar17 + 3); + *(undefined1 *)(lVar5 + 8) = *(undefined1 *)((long)puVar17 + 5); + *(undefined2 *)(lVar5 + 9) = *(undefined2 *)((long)puVar18 + 3); + *(undefined1 *)(lVar5 + 0xb) = *(undefined1 *)((long)puVar18 + 5); + *(undefined2 *)(lVar2 + lVar14) = puVar19[3]; + *(undefined1 *)(lVar6 + 2) = *(undefined1 *)(puVar19 + 4); + *(undefined2 *)(lVar6 + 3) = puVar16[3]; + *(undefined1 *)(lVar6 + 5) = *(undefined1 *)(puVar16 + 4); + *(undefined2 *)(lVar6 + 6) = puVar17[3]; + *(undefined1 *)(lVar6 + 8) = *(undefined1 *)(puVar17 + 4); + *(undefined2 *)(lVar6 + 9) = puVar18[3]; + *(undefined1 *)(lVar6 + 0xb) = *(undefined1 *)(puVar18 + 4); + *(undefined2 *)(lVar3 + lVar14) = *(undefined2 *)((long)puVar19 + 9); + lVar14 = lVar14 + 0xc; + puVar1 = (undefined1 *)((long)puVar19 + 0xb); + puVar19 = puVar19 + param_2 * 2; + *(undefined1 *)(lVar7 + 2) = *puVar1; + *(undefined2 *)(lVar7 + 3) = *(undefined2 *)((long)puVar16 + 9); + puVar1 = (undefined1 *)((long)puVar16 + 0xb); + puVar16 = puVar16 + param_2 * 2; + *(undefined1 *)(lVar7 + 5) = *puVar1; + *(undefined2 *)(lVar7 + 6) = *(undefined2 *)((long)puVar17 + 9); + puVar1 = (undefined1 *)((long)puVar17 + 0xb); + puVar17 = puVar17 + param_2 * 2; + *(undefined1 *)(lVar7 + 8) = *puVar1; + *(undefined2 *)(lVar7 + 9) = *(undefined2 *)((long)puVar18 + 9); + puVar1 = (undefined1 *)((long)puVar18 + 0xb); + puVar18 = puVar18 + param_2 * 2; + *(undefined1 *)(lVar7 + 0xb) = *puVar1; + } while (lVar14 != ((ulong)uVar11 + 1) * 0xc); + } + if (iVar22 < iVar9) { + puVar16 = (undefined2 *)((long)puVar13 + iVar22 * param_2); + lVar14 = 0; + do { + *(undefined2 *)(lVar15 + lVar20 + lVar14) = *puVar16; + lVar4 = lVar3 + lVar20 + lVar14; + *(undefined1 *)(lVar15 + lVar20 + lVar14 + 2) = *(undefined1 *)(puVar16 + 1); + *(undefined2 *)(lVar21 + lVar20 + lVar14) = *(undefined2 *)((long)puVar16 + 3); + *(undefined1 *)(lVar21 + lVar20 + lVar14 + 2) = *(undefined1 *)((long)puVar16 + 5); + *(undefined2 *)(lVar2 + lVar20 + lVar14) = puVar16[3]; + *(undefined1 *)(lVar2 + lVar20 + lVar14 + 2) = *(undefined1 *)(puVar16 + 4); + *(undefined2 *)(lVar3 + lVar20 + lVar14) = *(undefined2 *)((long)puVar16 + 9); + lVar14 = lVar14 + 3; + puVar1 = (undefined1 *)((long)puVar16 + 0xb); + puVar16 = (undefined2 *)((long)puVar16 + param_2); + *(undefined1 *)(lVar4 + 2) = *puVar1; + } while (lVar14 != ((ulong)(uint)((iVar9 + -1) - iVar22) + 1) * 3); + } + puVar13 = puVar13 + 6; + lVar15 = lVar3 + param_4; + } while (puVar13 != param_1 + ((ulong)uVar12 + 1) * 6); + iVar22 = (uVar12 + 1) * 4; + } + if (iVar22 < iVar8) { + uVar11 = iVar9 - 4U >> 2; + lVar15 = (long)iVar22; + iVar10 = (uVar11 + 1) * 4; + if (iVar9 + -3 < 1) { + iVar10 = 0; + } + lVar21 = (long)iVar10; + lVar20 = lVar15 * 3; + puVar13 = (undefined2 *)(param_3 + param_4 * lVar15); + do { + if (0 < iVar9 + -3) { + puVar16 = puVar13; + puVar17 = (undefined2 *)((long)param_1 + lVar20); + do { + puVar18 = puVar16 + 6; + *puVar16 = *puVar17; + *(undefined1 *)(puVar16 + 1) = *(undefined1 *)(puVar17 + 1); + *(undefined2 *)((long)puVar16 + 3) = *(undefined2 *)((long)puVar17 + param_2); + *(undefined1 *)((long)puVar16 + 5) = *(undefined1 *)((long)puVar17 + param_2 + 2); + puVar16[3] = puVar17[param_2]; + *(undefined1 *)(puVar16 + 4) = *(undefined1 *)(puVar17 + param_2 + 1); + *(undefined2 *)((long)puVar16 + 9) = *(undefined2 *)((long)puVar17 + param_2 * 3); + *(undefined1 *)((long)puVar16 + 0xb) = *(undefined1 *)((long)puVar17 + param_2 * 3 + 2); + puVar16 = puVar18; + puVar17 = puVar17 + param_2 * 2; + } while (puVar18 != puVar13 + ((ulong)uVar11 + 1) * 6); + } + if (iVar10 < iVar9) { + puVar16 = (undefined2 *)((long)param_1 + lVar20 + lVar21 * param_2); + puVar17 = (undefined2 *)((long)puVar13 + lVar21 * 3); + do { + puVar19 = (undefined2 *)((long)puVar17 + 3); + *puVar17 = *puVar16; + puVar18 = puVar16 + 1; + puVar16 = (undefined2 *)((long)puVar16 + param_2); + *(undefined1 *)(puVar17 + 1) = *(undefined1 *)puVar18; + puVar17 = puVar19; + } while (puVar19 != + (undefined2 *) + ((long)puVar13 + (lVar21 + 1 + (ulong)(uint)((iVar9 + -1) - iVar10)) * 3)); + } + lVar20 = lVar20 + 3; + puVar13 = (undefined2 *)((long)puVar13 + param_4); + } while (lVar20 != (lVar15 + 1 + (ulong)(uint)((iVar8 + -1) - iVar22)) * 3); + } + return; +} + + +================================================================== + +### FUNC 002fae58 (152 bytes) name=FUN_002fae58 + +void FUN_002fae58(long param_1,long param_2,int param_3) + +{ + undefined2 *puVar1; + undefined1 uVar2; + undefined1 uVar3; + undefined1 uVar4; + undefined2 *puVar5; + undefined2 *puVar6; + long lVar7; + undefined2 *puVar8; + long lVar9; + uint uVar10; + + if (0 < param_3) { + lVar7 = 1; + puVar8 = (undefined2 *)(param_1 + 3); + uVar10 = param_3 - 2; + lVar9 = 0; + if (1 < param_3) { + do { + puVar6 = (undefined2 *)(param_2 + -3 + (long)puVar8); + puVar5 = puVar8; + do { + puVar1 = (undefined2 *)((long)puVar5 + 3); + uVar2 = *(undefined1 *)puVar5; + uVar3 = *(undefined1 *)((long)puVar5 + 1); + *puVar5 = *puVar6; + uVar4 = *(undefined1 *)(puVar5 + 1); + *(undefined1 *)(puVar5 + 1) = *(undefined1 *)(puVar6 + 1); + *(undefined1 *)puVar6 = uVar2; + *(undefined1 *)((long)puVar6 + 1) = uVar3; + *(undefined1 *)(puVar6 + 1) = uVar4; + puVar6 = (undefined2 *)((long)puVar6 + param_2); + puVar5 = puVar1; + } while (puVar1 != (undefined2 *)(param_1 + lVar9 + 3 + (lVar7 + (ulong)uVar10) * 3)); + lVar7 = lVar7 + 1; + puVar8 = (undefined2 *)((long)puVar8 + param_2 + 3); + uVar10 = uVar10 - 1; + lVar9 = lVar9 + param_2; + } while ((int)lVar7 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002faef0 (808 bytes) name=FUN_002faef0 + +void FUN_002faef0(long param_1,long param_2,undefined4 *param_3,long param_4,int *param_5) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int iVar5; + uint uVar6; + undefined4 *puVar7; + undefined4 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + int iVar12; + undefined4 *puVar13; + undefined4 *puVar14; + undefined4 *puVar15; + undefined4 *puVar16; + undefined4 *puVar17; + long lVar18; + long lVar19; + undefined4 *puVar20; + undefined4 *puVar21; + long lVar22; + uint uVar23; + + iVar2 = *param_5; + iVar3 = param_5[1]; + if (iVar2 < 4) { + iVar12 = 0; + } + else { + uVar6 = iVar3 - 4U >> 2; + iVar12 = (uVar6 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar12 = 0; + } + uVar23 = iVar2 - 4U >> 2; + lVar22 = (long)iVar12 * 4; + puVar9 = (undefined4 *)((long)param_3 + param_4); + puVar8 = (undefined4 *)((long)puVar9 + param_4); + puVar20 = (undefined4 *)((long)puVar8 + param_4); + lVar19 = 0; + puVar21 = param_3; + do { + if (0 < iVar3 + -3) { + puVar11 = (undefined4 *)(param_1 + lVar19); + lVar18 = lVar19 + param_2 + param_2; + puVar7 = (undefined4 *)(param_1 + lVar19 + param_2); + puVar10 = (undefined4 *)(param_1 + lVar18); + puVar13 = (undefined4 *)(param_1 + lVar18 + param_2); + lVar18 = 0; + puVar14 = puVar21; + puVar15 = puVar9; + puVar16 = puVar8; + puVar17 = puVar20; + do { + *puVar14 = *puVar11; + lVar18 = lVar18 + 0x10; + puVar14[1] = *puVar7; + puVar14[2] = *puVar10; + puVar14[3] = *puVar13; + *puVar15 = puVar11[1]; + puVar15[1] = puVar7[1]; + puVar15[2] = puVar10[1]; + puVar15[3] = puVar13[1]; + *puVar16 = puVar11[2]; + puVar16[1] = puVar7[2]; + puVar16[2] = puVar10[2]; + puVar16[3] = puVar13[2]; + puVar1 = puVar11 + 3; + puVar11 = puVar11 + param_2; + *puVar17 = *puVar1; + puVar1 = puVar7 + 3; + puVar7 = puVar7 + param_2; + puVar17[1] = *puVar1; + puVar1 = puVar10 + 3; + puVar10 = puVar10 + param_2; + puVar17[2] = *puVar1; + puVar1 = puVar13 + 3; + puVar13 = puVar13 + param_2; + puVar17[3] = *puVar1; + puVar14 = puVar14 + 4; + puVar15 = puVar15 + 4; + puVar16 = puVar16 + 4; + puVar17 = puVar17 + 4; + } while (lVar18 != ((ulong)uVar6 + 1) * 0x10); + } + if (iVar12 < iVar3) { + puVar11 = (undefined4 *)(param_1 + lVar19 + iVar12 * param_2); + lVar18 = 0; + do { + *(undefined4 *)((long)puVar21 + lVar18 + lVar22) = *puVar11; + *(undefined4 *)((long)puVar9 + lVar18 + lVar22) = puVar11[1]; + *(undefined4 *)((long)puVar8 + lVar18 + lVar22) = puVar11[2]; + puVar7 = puVar11 + 3; + puVar11 = (undefined4 *)((long)puVar11 + param_2); + *(undefined4 *)((long)puVar20 + lVar18 + lVar22) = *puVar7; + lVar18 = lVar18 + 4; + } while (lVar18 != ((ulong)(uint)((iVar3 + -1) - iVar12) + 1) * 4); + } + lVar19 = lVar19 + 0x10; + puVar21 = puVar21 + param_4; + puVar9 = puVar9 + param_4; + puVar8 = puVar8 + param_4; + puVar20 = puVar20 + param_4; + } while (lVar19 != ((ulong)uVar23 + 1) * 0x10); + iVar12 = (uVar23 + 1) * 4; + } + if (iVar12 < iVar2) { + uVar6 = iVar3 - 4U >> 2; + lVar19 = (long)iVar12; + iVar5 = (uVar6 + 1) * 4; + if (iVar3 + -3 < 1) { + iVar5 = 0; + } + lVar18 = (long)iVar5; + lVar22 = lVar19 << 2; + param_3 = (undefined4 *)((long)param_3 + param_4 * lVar19); + do { + if (0 < iVar3 + -3) { + puVar9 = (undefined4 *)(param_1 + lVar22); + puVar8 = param_3 + 1; + do { + puVar21 = puVar8 + 4; + puVar8[-1] = *puVar9; + *puVar8 = *(undefined4 *)((long)puVar9 + param_2); + puVar8[1] = *(undefined4 *)((long)puVar9 + param_2 * 2); + puVar20 = (undefined4 *)((long)puVar9 + param_2 * 3); + puVar9 = puVar9 + param_2; + puVar8[2] = *puVar20; + puVar8 = puVar21; + } while (puVar21 != param_3 + (ulong)uVar6 * 4 + 5); + } + if (iVar5 < iVar3) { + puVar9 = (undefined4 *)(param_1 + lVar22 + lVar18 * param_2); + puVar8 = param_3 + lVar18; + do { + uVar4 = *puVar9; + puVar9 = (undefined4 *)((long)puVar9 + param_2); + puVar20 = puVar8 + 1; + *puVar8 = uVar4; + puVar8 = puVar20; + } while (puVar20 != param_3 + lVar18 + 1 + (ulong)(uint)((iVar3 + -1) - iVar5)); + } + lVar22 = lVar22 + 4; + param_3 = (undefined4 *)((long)param_3 + param_4); + } while (lVar22 != (lVar19 + 1 + (ulong)(uint)((iVar2 + -1) - iVar12)) * 4); + } + return; +} + + +================================================================== + +### FUNC 002fb218 (120 bytes) name=FUN_002fb218 + +void FUN_002fb218(long param_1,long param_2,int param_3) + +{ + undefined4 uVar1; + undefined4 *puVar2; + undefined4 *puVar3; + undefined4 *puVar4; + long lVar5; + undefined4 *puVar6; + long lVar7; + uint uVar8; + + if (0 < param_3) { + lVar5 = 1; + puVar6 = (undefined4 *)(param_1 + 4); + uVar8 = param_3 - 2; + lVar7 = 0; + if (1 < param_3) { + do { + puVar4 = (undefined4 *)(param_2 + -4 + (long)puVar6); + puVar2 = puVar6; + do { + uVar1 = *puVar2; + puVar3 = puVar2 + 1; + *puVar2 = *puVar4; + *puVar4 = uVar1; + puVar4 = (undefined4 *)((long)puVar4 + param_2); + puVar2 = puVar3; + } while (puVar3 != (undefined4 *)(param_1 + lVar7 + 4 + (lVar5 + (ulong)uVar8) * 4)); + lVar5 = lVar5 + 1; + puVar6 = (undefined4 *)((long)puVar6 + param_2 + 4); + uVar8 = uVar8 - 1; + lVar7 = lVar7 + param_2; + } while ((int)lVar5 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fb290 (1012 bytes) name=FUN_002fb290 + +void FUN_002fb290(undefined4 *param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + undefined2 *puVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + long lVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + undefined4 *puVar13; + long lVar14; + long lVar15; + undefined4 *puVar16; + undefined4 *puVar17; + undefined4 *puVar18; + undefined4 *puVar19; + long lVar20; + long lVar21; + int iVar22; + + iVar8 = *param_5; + iVar9 = param_5[1]; + if (iVar8 < 4) { + iVar22 = 0; + } + else { + uVar11 = iVar9 - 4U >> 2; + iVar22 = (uVar11 + 1) * 4; + uVar12 = iVar8 - 4U >> 2; + if (iVar9 + -3 < 1) { + iVar22 = 0; + } + lVar21 = (long)iVar22 * 6; + lVar15 = param_3; + puVar13 = param_1; + do { + lVar20 = lVar15 + param_4; + lVar2 = lVar20 + param_4; + lVar3 = lVar2 + param_4; + if (0 < iVar9 + -3) { + puVar16 = (undefined4 *)((long)puVar13 + param_2); + puVar17 = (undefined4 *)((long)puVar16 + param_2); + lVar14 = 0; + puVar18 = (undefined4 *)((long)puVar17 + param_2); + puVar19 = puVar13; + do { + lVar4 = lVar15 + lVar14; + *(undefined4 *)(lVar15 + lVar14) = *puVar19; + lVar5 = lVar20 + lVar14; + lVar6 = lVar2 + lVar14; + lVar7 = lVar3 + lVar14; + *(undefined2 *)(lVar4 + 4) = *(undefined2 *)(puVar19 + 1); + *(undefined4 *)(lVar4 + 6) = *puVar16; + *(undefined2 *)(lVar4 + 10) = *(undefined2 *)(puVar16 + 1); + *(undefined4 *)(lVar4 + 0xc) = *puVar17; + *(undefined2 *)(lVar4 + 0x10) = *(undefined2 *)(puVar17 + 1); + *(undefined4 *)(lVar4 + 0x12) = *puVar18; + *(undefined2 *)(lVar4 + 0x16) = *(undefined2 *)(puVar18 + 1); + *(undefined4 *)(lVar20 + lVar14) = *(undefined4 *)((long)puVar19 + 6); + *(undefined2 *)(lVar5 + 4) = *(undefined2 *)((long)puVar19 + 10); + *(undefined4 *)(lVar5 + 6) = *(undefined4 *)((long)puVar16 + 6); + *(undefined2 *)(lVar5 + 10) = *(undefined2 *)((long)puVar16 + 10); + *(undefined4 *)(lVar5 + 0xc) = *(undefined4 *)((long)puVar17 + 6); + *(undefined2 *)(lVar5 + 0x10) = *(undefined2 *)((long)puVar17 + 10); + *(undefined4 *)(lVar5 + 0x12) = *(undefined4 *)((long)puVar18 + 6); + *(undefined2 *)(lVar5 + 0x16) = *(undefined2 *)((long)puVar18 + 10); + *(undefined4 *)(lVar2 + lVar14) = puVar19[3]; + *(undefined2 *)(lVar6 + 4) = *(undefined2 *)(puVar19 + 4); + *(undefined4 *)(lVar6 + 6) = puVar16[3]; + *(undefined2 *)(lVar6 + 10) = *(undefined2 *)(puVar16 + 4); + *(undefined4 *)(lVar6 + 0xc) = puVar17[3]; + *(undefined2 *)(lVar6 + 0x10) = *(undefined2 *)(puVar17 + 4); + *(undefined4 *)(lVar6 + 0x12) = puVar18[3]; + *(undefined2 *)(lVar6 + 0x16) = *(undefined2 *)(puVar18 + 4); + *(undefined4 *)(lVar3 + lVar14) = *(undefined4 *)((long)puVar19 + 0x12); + lVar14 = lVar14 + 0x18; + puVar1 = (undefined2 *)((long)puVar19 + 0x16); + puVar19 = puVar19 + param_2; + *(undefined2 *)(lVar7 + 4) = *puVar1; + *(undefined4 *)(lVar7 + 6) = *(undefined4 *)((long)puVar16 + 0x12); + puVar1 = (undefined2 *)((long)puVar16 + 0x16); + puVar16 = puVar16 + param_2; + *(undefined2 *)(lVar7 + 10) = *puVar1; + *(undefined4 *)(lVar7 + 0xc) = *(undefined4 *)((long)puVar17 + 0x12); + puVar1 = (undefined2 *)((long)puVar17 + 0x16); + puVar17 = puVar17 + param_2; + *(undefined2 *)(lVar7 + 0x10) = *puVar1; + *(undefined4 *)(lVar7 + 0x12) = *(undefined4 *)((long)puVar18 + 0x12); + puVar1 = (undefined2 *)((long)puVar18 + 0x16); + puVar18 = puVar18 + param_2; + *(undefined2 *)(lVar7 + 0x16) = *puVar1; + } while (lVar14 != ((ulong)uVar11 + 1) * 0x18); + } + if (iVar22 < iVar9) { + puVar16 = (undefined4 *)((long)puVar13 + iVar22 * param_2); + lVar14 = 0; + do { + *(undefined4 *)(lVar15 + lVar21 + lVar14) = *puVar16; + lVar4 = lVar3 + lVar21 + lVar14; + *(undefined2 *)(lVar15 + lVar21 + lVar14 + 4) = *(undefined2 *)(puVar16 + 1); + *(undefined4 *)(lVar20 + lVar21 + lVar14) = *(undefined4 *)((long)puVar16 + 6); + *(undefined2 *)(lVar20 + lVar21 + lVar14 + 4) = *(undefined2 *)((long)puVar16 + 10); + *(undefined4 *)(lVar2 + lVar21 + lVar14) = puVar16[3]; + *(undefined2 *)(lVar2 + lVar21 + lVar14 + 4) = *(undefined2 *)(puVar16 + 4); + *(undefined4 *)(lVar3 + lVar21 + lVar14) = *(undefined4 *)((long)puVar16 + 0x12); + lVar14 = lVar14 + 6; + puVar1 = (undefined2 *)((long)puVar16 + 0x16); + puVar16 = (undefined4 *)((long)puVar16 + param_2); + *(undefined2 *)(lVar4 + 4) = *puVar1; + } while (lVar14 != ((ulong)(uint)((iVar9 + -1) - iVar22) + 1) * 6); + } + puVar13 = puVar13 + 6; + lVar15 = lVar3 + param_4; + } while (puVar13 != param_1 + ((ulong)uVar12 + 1) * 6); + iVar22 = (uVar12 + 1) * 4; + } + if (iVar22 < iVar8) { + uVar11 = iVar9 - 4U >> 2; + lVar15 = (long)iVar22; + iVar10 = (uVar11 + 1) * 4; + if (iVar9 + -3 < 1) { + iVar10 = 0; + } + lVar20 = (long)iVar10; + puVar13 = (undefined4 *)(param_3 + param_4 * lVar15); + lVar21 = lVar15 * 6; + do { + if (0 < iVar9 + -3) { + puVar16 = puVar13; + puVar17 = (undefined4 *)((long)param_1 + lVar21); + do { + puVar18 = puVar16 + 6; + *puVar16 = *puVar17; + *(undefined2 *)(puVar16 + 1) = *(undefined2 *)(puVar17 + 1); + *(undefined4 *)((long)puVar16 + 6) = *(undefined4 *)((long)puVar17 + param_2); + *(undefined2 *)((long)puVar16 + 10) = *(undefined2 *)((long)puVar17 + param_2 + 4); + puVar16[3] = *(undefined4 *)((long)puVar17 + param_2 * 2); + *(undefined2 *)(puVar16 + 4) = *(undefined2 *)((long)puVar17 + param_2 * 2 + 4); + *(undefined4 *)((long)puVar16 + 0x12) = *(undefined4 *)((long)puVar17 + param_2 * 3); + *(undefined2 *)((long)puVar16 + 0x16) = *(undefined2 *)((long)puVar17 + param_2 * 3 + 4); + puVar16 = puVar18; + puVar17 = puVar17 + param_2; + } while (puVar18 != puVar13 + ((ulong)uVar11 + 1) * 6); + } + if (iVar10 < iVar9) { + puVar16 = (undefined4 *)((long)param_1 + lVar21 + lVar20 * param_2); + puVar17 = (undefined4 *)((long)puVar13 + lVar20 * 6); + do { + puVar19 = (undefined4 *)((long)puVar17 + 6); + *puVar17 = *puVar16; + puVar18 = puVar16 + 1; + puVar16 = (undefined4 *)((long)puVar16 + param_2); + *(undefined2 *)(puVar17 + 1) = *(undefined2 *)puVar18; + puVar17 = puVar19; + } while (puVar19 != + (undefined4 *) + ((long)puVar13 + (lVar20 + 1 + (ulong)(uint)((iVar9 + -1) - iVar10)) * 6)); + } + lVar21 = lVar21 + 6; + puVar13 = (undefined4 *)((long)puVar13 + param_4); + } while (lVar21 != (lVar15 + 1 + (ulong)(uint)((iVar8 + -1) - iVar22)) * 6); + } + return; +} + + +================================================================== + +### FUNC 002fb684 (152 bytes) name=FUN_002fb684 + +void FUN_002fb684(long param_1,long param_2,int param_3) + +{ + undefined4 *puVar1; + undefined2 uVar2; + undefined2 uVar3; + undefined2 uVar4; + undefined4 *puVar5; + undefined4 *puVar6; + long lVar7; + undefined4 *puVar8; + long lVar9; + uint uVar10; + + if (0 < param_3) { + lVar7 = 1; + puVar8 = (undefined4 *)(param_1 + 6); + uVar10 = param_3 - 2; + lVar9 = 0; + if (1 < param_3) { + do { + puVar6 = (undefined4 *)(param_2 + -6 + (long)puVar8); + puVar5 = puVar8; + do { + puVar1 = (undefined4 *)((long)puVar5 + 6); + uVar2 = *(undefined2 *)puVar5; + uVar3 = *(undefined2 *)((long)puVar5 + 2); + *puVar5 = *puVar6; + uVar4 = *(undefined2 *)(puVar5 + 1); + *(undefined2 *)(puVar5 + 1) = *(undefined2 *)(puVar6 + 1); + *(undefined2 *)puVar6 = uVar2; + *(undefined2 *)((long)puVar6 + 2) = uVar3; + *(undefined2 *)(puVar6 + 1) = uVar4; + puVar6 = (undefined4 *)((long)puVar6 + param_2); + puVar5 = puVar1; + } while (puVar1 != (undefined4 *)(param_1 + lVar9 + 6 + (lVar7 + (ulong)uVar10) * 6)); + lVar7 = lVar7 + 1; + puVar8 = (undefined4 *)((long)puVar8 + param_2 + 6); + uVar10 = uVar10 - 1; + lVar9 = lVar9 + param_2; + } while ((int)lVar7 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fb71c (764 bytes) name=FUN_002fb71c + +void FUN_002fb71c(long param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + undefined8 *puVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + long lVar14; + undefined8 *puVar15; + undefined8 *puVar16; + undefined8 *puVar17; + undefined8 uVar18; + undefined8 *puVar19; + long lVar20; + long lVar21; + long lVar22; + long lVar23; + int iVar24; + + iVar9 = *param_5; + iVar10 = param_5[1]; + if (iVar9 < 4) { + iVar24 = 0; + } + else { + uVar12 = iVar10 - 4U >> 2; + iVar24 = (uVar12 + 1) * 4; + if (iVar10 + -3 < 1) { + iVar24 = 0; + } + uVar13 = iVar9 - 4U >> 2; + lVar20 = param_2 * 4; + lVar22 = 0; + lVar23 = (long)iVar24 * 8; + lVar21 = param_3; + do { + lVar2 = lVar21 + param_4; + lVar3 = lVar2 + param_4; + lVar4 = lVar3 + param_4; + if (0 < iVar10 + -3) { + puVar16 = (undefined8 *)(param_1 + lVar22); + lVar5 = lVar22 + param_2 + param_2; + lVar14 = 0; + puVar15 = (undefined8 *)(param_1 + lVar22 + param_2); + puVar17 = (undefined8 *)(param_1 + lVar5); + puVar19 = (undefined8 *)(param_1 + lVar5 + param_2); + do { + lVar5 = lVar21 + lVar14; + *(undefined8 *)(lVar21 + lVar14) = *puVar16; + lVar6 = lVar2 + lVar14; + lVar7 = lVar3 + lVar14; + lVar8 = lVar4 + lVar14; + *(undefined8 *)(lVar5 + 8) = *puVar15; + *(undefined8 *)(lVar5 + 0x10) = *puVar17; + *(undefined8 *)(lVar5 + 0x18) = *puVar19; + *(undefined8 *)(lVar2 + lVar14) = puVar16[1]; + *(undefined8 *)(lVar6 + 8) = puVar15[1]; + *(undefined8 *)(lVar6 + 0x10) = puVar17[1]; + *(undefined8 *)(lVar6 + 0x18) = puVar19[1]; + *(undefined8 *)(lVar3 + lVar14) = puVar16[2]; + *(undefined8 *)(lVar7 + 8) = puVar15[2]; + *(undefined8 *)(lVar7 + 0x10) = puVar17[2]; + *(undefined8 *)(lVar7 + 0x18) = puVar19[2]; + puVar1 = puVar16 + 3; + puVar16 = (undefined8 *)((long)puVar16 + lVar20); + *(undefined8 *)(lVar4 + lVar14) = *puVar1; + lVar14 = lVar14 + 0x20; + puVar1 = puVar15 + 3; + puVar15 = (undefined8 *)((long)puVar15 + lVar20); + *(undefined8 *)(lVar8 + 8) = *puVar1; + puVar1 = puVar17 + 3; + puVar17 = (undefined8 *)((long)puVar17 + lVar20); + *(undefined8 *)(lVar8 + 0x10) = *puVar1; + puVar1 = puVar19 + 3; + puVar19 = (undefined8 *)((long)puVar19 + lVar20); + *(undefined8 *)(lVar8 + 0x18) = *puVar1; + } while (lVar14 != ((ulong)uVar12 + 1) * 0x20); + } + if (iVar24 < iVar10) { + puVar16 = (undefined8 *)(param_1 + lVar22 + iVar24 * param_2); + lVar14 = 0; + do { + *(undefined8 *)(lVar21 + lVar23 + lVar14) = *puVar16; + *(undefined8 *)(lVar2 + lVar23 + lVar14) = puVar16[1]; + *(undefined8 *)(lVar3 + lVar23 + lVar14) = puVar16[2]; + puVar15 = puVar16 + 3; + puVar16 = (undefined8 *)((long)puVar16 + param_2); + *(undefined8 *)(lVar4 + lVar23 + lVar14) = *puVar15; + lVar14 = lVar14 + 8; + } while (lVar14 != ((ulong)(uint)((iVar10 + -1) - iVar24) + 1) * 8); + } + lVar22 = lVar22 + 0x20; + lVar21 = lVar4 + param_4; + } while (lVar22 != ((ulong)uVar13 + 1) * 0x20); + iVar24 = (uVar13 + 1) * 4; + } + if (iVar24 < iVar9) { + uVar12 = iVar10 - 4U >> 2; + lVar22 = (long)iVar24; + iVar11 = (uVar12 + 1) * 4; + if (iVar10 + -3 < 1) { + iVar11 = 0; + } + lVar20 = (long)iVar11; + lVar21 = lVar22 << 3; + param_3 = param_3 + param_4 * lVar22; + do { + if (0 < iVar10 + -3) { + puVar16 = (undefined8 *)(param_1 + lVar21); + puVar15 = (undefined8 *)(param_3 + 8); + do { + puVar19 = puVar15 + 4; + puVar15[-1] = *puVar16; + *puVar15 = *(undefined8 *)((long)puVar16 + param_2); + puVar15[1] = *(undefined8 *)((long)puVar16 + param_2 * 2); + puVar17 = (undefined8 *)((long)puVar16 + param_2 * 3); + puVar16 = (undefined8 *)((long)puVar16 + param_2 * 4); + puVar15[2] = *puVar17; + puVar15 = puVar19; + } while (puVar19 != (undefined8 *)(param_3 + (ulong)uVar12 * 0x20 + 0x28)); + } + if (iVar11 < iVar10) { + puVar16 = (undefined8 *)(param_1 + lVar21 + lVar20 * param_2); + puVar15 = (undefined8 *)(param_3 + lVar20 * 8); + do { + uVar18 = *puVar16; + puVar16 = (undefined8 *)((long)puVar16 + param_2); + puVar17 = puVar15 + 1; + *puVar15 = uVar18; + puVar15 = puVar17; + } while (puVar17 != + (undefined8 *)(param_3 + (lVar20 + 1 + (ulong)(uint)((iVar10 + -1) - iVar11)) * 8)) + ; + } + lVar21 = lVar21 + 8; + param_3 = param_3 + param_4; + } while (lVar21 != (lVar22 + 1 + (ulong)(uint)((iVar9 + -1) - iVar24)) * 8); + } + return; +} + + +================================================================== + +### FUNC 002fba18 (128 bytes) name=FUN_002fba18 + +void FUN_002fba18(long param_1,long param_2,int param_3) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + long lVar6; + undefined8 *puVar7; + long lVar8; + uint uVar9; + + if (0 < param_3) { + lVar6 = 1; + puVar7 = (undefined8 *)(param_1 + 8); + uVar9 = param_3 - 2; + lVar8 = 0; + if (1 < param_3) { + do { + puVar5 = (undefined8 *)(param_2 + -8 + (long)puVar7); + puVar3 = puVar7; + do { + uVar1 = *(undefined4 *)puVar3; + uVar2 = *(undefined4 *)((long)puVar3 + 4); + puVar4 = puVar3 + 1; + *puVar3 = *puVar5; + *(undefined4 *)puVar5 = uVar1; + *(undefined4 *)((long)puVar5 + 4) = uVar2; + puVar5 = (undefined8 *)((long)puVar5 + param_2); + puVar3 = puVar4; + } while (puVar4 != (undefined8 *)(param_1 + lVar8 + 8 + (lVar6 + (ulong)uVar9) * 8)); + lVar6 = lVar6 + 1; + puVar7 = (undefined8 *)((long)puVar7 + param_2 + 8); + uVar9 = uVar9 - 1; + lVar8 = lVar8 + param_2; + } while ((int)lVar6 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fba98 (1012 bytes) name=FUN_002fba98 + +void FUN_002fba98(undefined8 *param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + undefined4 *puVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + undefined8 *puVar14; + long lVar15; + long lVar16; + undefined8 *puVar17; + undefined8 *puVar18; + undefined8 *puVar19; + undefined8 *puVar20; + long lVar21; + long lVar22; + int iVar23; + + iVar9 = *param_5; + iVar10 = param_5[1]; + if (iVar9 < 4) { + iVar23 = 0; + } + else { + uVar12 = iVar10 - 4U >> 2; + iVar23 = (uVar12 + 1) * 4; + uVar13 = iVar9 - 4U >> 2; + if (iVar10 + -3 < 1) { + iVar23 = 0; + } + lVar21 = param_2 * 4; + lVar22 = (long)iVar23 * 0xc; + lVar16 = param_3; + puVar14 = param_1; + do { + lVar2 = lVar16 + param_4; + lVar3 = lVar2 + param_4; + lVar4 = lVar3 + param_4; + if (0 < iVar10 + -3) { + puVar17 = (undefined8 *)((long)puVar14 + param_2); + puVar18 = (undefined8 *)((long)puVar17 + param_2); + lVar15 = 0; + puVar19 = (undefined8 *)((long)puVar18 + param_2); + puVar20 = puVar14; + do { + lVar5 = lVar16 + lVar15; + *(undefined8 *)(lVar16 + lVar15) = *puVar20; + lVar6 = lVar2 + lVar15; + lVar7 = lVar3 + lVar15; + lVar8 = lVar4 + lVar15; + *(undefined4 *)(lVar5 + 8) = *(undefined4 *)(puVar20 + 1); + *(undefined8 *)(lVar5 + 0xc) = *puVar17; + *(undefined4 *)(lVar5 + 0x14) = *(undefined4 *)(puVar17 + 1); + *(undefined8 *)(lVar5 + 0x18) = *puVar18; + *(undefined4 *)(lVar5 + 0x20) = *(undefined4 *)(puVar18 + 1); + *(undefined8 *)(lVar5 + 0x24) = *puVar19; + *(undefined4 *)(lVar5 + 0x2c) = *(undefined4 *)(puVar19 + 1); + *(undefined8 *)(lVar2 + lVar15) = *(undefined8 *)((long)puVar20 + 0xc); + *(undefined4 *)(lVar6 + 8) = *(undefined4 *)((long)puVar20 + 0x14); + *(undefined8 *)(lVar6 + 0xc) = *(undefined8 *)((long)puVar17 + 0xc); + *(undefined4 *)(lVar6 + 0x14) = *(undefined4 *)((long)puVar17 + 0x14); + *(undefined8 *)(lVar6 + 0x18) = *(undefined8 *)((long)puVar18 + 0xc); + *(undefined4 *)(lVar6 + 0x20) = *(undefined4 *)((long)puVar18 + 0x14); + *(undefined8 *)(lVar6 + 0x24) = *(undefined8 *)((long)puVar19 + 0xc); + *(undefined4 *)(lVar6 + 0x2c) = *(undefined4 *)((long)puVar19 + 0x14); + *(undefined8 *)(lVar3 + lVar15) = puVar20[3]; + *(undefined4 *)(lVar7 + 8) = *(undefined4 *)(puVar20 + 4); + *(undefined8 *)(lVar7 + 0xc) = puVar17[3]; + *(undefined4 *)(lVar7 + 0x14) = *(undefined4 *)(puVar17 + 4); + *(undefined8 *)(lVar7 + 0x18) = puVar18[3]; + *(undefined4 *)(lVar7 + 0x20) = *(undefined4 *)(puVar18 + 4); + *(undefined8 *)(lVar7 + 0x24) = puVar19[3]; + *(undefined4 *)(lVar7 + 0x2c) = *(undefined4 *)(puVar19 + 4); + *(undefined8 *)(lVar4 + lVar15) = *(undefined8 *)((long)puVar20 + 0x24); + lVar15 = lVar15 + 0x30; + puVar1 = (undefined4 *)((long)puVar20 + 0x2c); + puVar20 = (undefined8 *)((long)puVar20 + lVar21); + *(undefined4 *)(lVar8 + 8) = *puVar1; + *(undefined8 *)(lVar8 + 0xc) = *(undefined8 *)((long)puVar17 + 0x24); + puVar1 = (undefined4 *)((long)puVar17 + 0x2c); + puVar17 = (undefined8 *)((long)puVar17 + lVar21); + *(undefined4 *)(lVar8 + 0x14) = *puVar1; + *(undefined8 *)(lVar8 + 0x18) = *(undefined8 *)((long)puVar18 + 0x24); + puVar1 = (undefined4 *)((long)puVar18 + 0x2c); + puVar18 = (undefined8 *)((long)puVar18 + lVar21); + *(undefined4 *)(lVar8 + 0x20) = *puVar1; + *(undefined8 *)(lVar8 + 0x24) = *(undefined8 *)((long)puVar19 + 0x24); + puVar1 = (undefined4 *)((long)puVar19 + 0x2c); + puVar19 = (undefined8 *)((long)puVar19 + lVar21); + *(undefined4 *)(lVar8 + 0x2c) = *puVar1; + } while (lVar15 != ((ulong)uVar12 + 1) * 0x30); + } + if (iVar23 < iVar10) { + puVar17 = (undefined8 *)((long)puVar14 + iVar23 * param_2); + lVar15 = 0; + do { + *(undefined8 *)(lVar16 + lVar22 + lVar15) = *puVar17; + lVar5 = lVar4 + lVar22 + lVar15; + *(undefined4 *)(lVar16 + lVar22 + lVar15 + 8) = *(undefined4 *)(puVar17 + 1); + *(undefined8 *)(lVar2 + lVar22 + lVar15) = *(undefined8 *)((long)puVar17 + 0xc); + *(undefined4 *)(lVar2 + lVar22 + lVar15 + 8) = *(undefined4 *)((long)puVar17 + 0x14); + *(undefined8 *)(lVar3 + lVar22 + lVar15) = puVar17[3]; + *(undefined4 *)(lVar3 + lVar22 + lVar15 + 8) = *(undefined4 *)(puVar17 + 4); + *(undefined8 *)(lVar4 + lVar22 + lVar15) = *(undefined8 *)((long)puVar17 + 0x24); + lVar15 = lVar15 + 0xc; + puVar1 = (undefined4 *)((long)puVar17 + 0x2c); + puVar17 = (undefined8 *)((long)puVar17 + param_2); + *(undefined4 *)(lVar5 + 8) = *puVar1; + } while (lVar15 != ((ulong)(uint)((iVar10 + -1) - iVar23) + 1) * 0xc); + } + puVar14 = puVar14 + 6; + lVar16 = lVar4 + param_4; + } while (puVar14 != param_1 + ((ulong)uVar13 + 1) * 6); + iVar23 = (uVar13 + 1) * 4; + } + if (iVar23 < iVar9) { + uVar12 = iVar10 - 4U >> 2; + lVar16 = (long)iVar23; + iVar11 = (uVar12 + 1) * 4; + if (iVar10 + -3 < 1) { + iVar11 = 0; + } + lVar22 = (long)iVar11; + puVar14 = (undefined8 *)(param_3 + param_4 * lVar16); + lVar21 = lVar16 * 0xc; + do { + if (0 < iVar10 + -3) { + puVar17 = puVar14; + puVar18 = (undefined8 *)((long)param_1 + lVar21); + do { + puVar19 = puVar17 + 6; + *puVar17 = *puVar18; + *(undefined4 *)(puVar17 + 1) = *(undefined4 *)(puVar18 + 1); + *(undefined8 *)((long)puVar17 + 0xc) = *(undefined8 *)((long)puVar18 + param_2); + *(undefined4 *)((long)puVar17 + 0x14) = *(undefined4 *)((long)puVar18 + param_2 + 8); + puVar17[3] = *(undefined8 *)((long)puVar18 + param_2 * 2); + *(undefined4 *)(puVar17 + 4) = *(undefined4 *)((long)puVar18 + param_2 * 2 + 8); + *(undefined8 *)((long)puVar17 + 0x24) = *(undefined8 *)((long)puVar18 + param_2 * 3); + *(undefined4 *)((long)puVar17 + 0x2c) = *(undefined4 *)((long)puVar18 + param_2 * 3 + 8); + puVar17 = puVar19; + puVar18 = (undefined8 *)((long)puVar18 + param_2 * 4); + } while (puVar19 != puVar14 + ((ulong)uVar12 + 1) * 6); + } + if (iVar11 < iVar10) { + puVar17 = (undefined8 *)((long)param_1 + lVar21 + lVar22 * param_2); + puVar18 = (undefined8 *)((long)puVar14 + lVar22 * 0xc); + do { + puVar20 = (undefined8 *)((long)puVar18 + 0xc); + *puVar18 = *puVar17; + puVar19 = puVar17 + 1; + puVar17 = (undefined8 *)((long)puVar17 + param_2); + *(undefined4 *)(puVar18 + 1) = *(undefined4 *)puVar19; + puVar18 = puVar20; + } while (puVar20 != + (undefined8 *) + ((long)puVar14 + (lVar22 + 1 + (ulong)(uint)((iVar10 + -1) - iVar11)) * 0xc)); + } + lVar21 = lVar21 + 0xc; + puVar14 = (undefined8 *)((long)puVar14 + param_4); + } while (lVar21 != (lVar16 + 1 + (ulong)(uint)((iVar9 + -1) - iVar23)) * 0xc); + } + return; +} + + +================================================================== + +### FUNC 002fbe8c (152 bytes) name=FUN_002fbe8c + +void FUN_002fbe8c(long param_1,long param_2,int param_3) + +{ + undefined8 *puVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined8 *puVar5; + undefined8 *puVar6; + long lVar7; + undefined8 *puVar8; + long lVar9; + uint uVar10; + + if (0 < param_3) { + lVar7 = 1; + puVar8 = (undefined8 *)(param_1 + 0xc); + uVar10 = param_3 - 2; + lVar9 = 0; + if (1 < param_3) { + do { + puVar6 = (undefined8 *)(param_2 + -0xc + (long)puVar8); + puVar5 = puVar8; + do { + puVar1 = (undefined8 *)((long)puVar5 + 0xc); + uVar2 = *(undefined4 *)puVar5; + uVar3 = *(undefined4 *)((long)puVar5 + 4); + *puVar5 = *puVar6; + uVar4 = *(undefined4 *)(puVar5 + 1); + *(undefined4 *)(puVar5 + 1) = *(undefined4 *)(puVar6 + 1); + *(undefined4 *)puVar6 = uVar2; + *(undefined4 *)((long)puVar6 + 4) = uVar3; + *(undefined4 *)(puVar6 + 1) = uVar4; + puVar6 = (undefined8 *)((long)puVar6 + param_2); + puVar5 = puVar1; + } while (puVar1 != (undefined8 *)(param_1 + lVar9 + 0xc + (lVar7 + (ulong)uVar10) * 0xc)); + lVar7 = lVar7 + 1; + puVar8 = (undefined8 *)((long)puVar8 + param_2 + 0xc); + uVar10 = uVar10 - 1; + lVar9 = lVar9 + param_2; + } while ((int)lVar7 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fbf24 (808 bytes) name=FUN_002fbf24 + +void FUN_002fbf24(long param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + long lVar1; + long lVar2; + long lVar3; + long lVar4; + undefined8 *puVar5; + undefined8 *puVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + int iVar10; + int iVar11; + int iVar12; + uint uVar13; + long lVar14; + undefined8 *puVar15; + undefined8 *puVar16; + long lVar17; + long lVar18; + long lVar19; + int iVar20; + undefined8 *puVar21; + undefined8 *puVar22; + long lVar23; + uint uVar24; + + iVar10 = *param_5; + iVar11 = param_5[1]; + if (iVar10 < 4) { + iVar20 = 0; + } + else { + uVar13 = iVar11 - 4U >> 2; + iVar20 = (uVar13 + 1) * 4; + lVar18 = 0; + uVar24 = iVar10 - 4U >> 2; + lVar17 = param_2 * 4; + if (iVar11 + -3 < 1) { + iVar20 = 0; + } + lVar19 = (long)iVar20 * 0x10; + lVar23 = param_3; + do { + lVar1 = lVar23 + param_4; + lVar2 = lVar1 + param_4; + lVar3 = lVar2 + param_4; + if (0 < iVar11 + -3) { + puVar16 = (undefined8 *)(param_1 + lVar18); + lVar4 = lVar18 + param_2 + param_2; + lVar14 = 0; + puVar15 = (undefined8 *)(param_1 + lVar18 + param_2); + puVar21 = (undefined8 *)(param_1 + lVar4); + puVar22 = (undefined8 *)(param_1 + lVar4 + param_2); + do { + puVar5 = (undefined8 *)(lVar23 + lVar14); + puVar6 = (undefined8 *)(lVar1 + lVar14); + uVar9 = puVar16[1]; + puVar7 = (undefined8 *)(lVar2 + lVar14); + puVar8 = (undefined8 *)(lVar3 + lVar14); + *puVar5 = *puVar16; + puVar5[1] = uVar9; + lVar14 = lVar14 + 0x40; + uVar9 = puVar15[1]; + puVar5[2] = *puVar15; + puVar5[3] = uVar9; + uVar9 = puVar21[1]; + puVar5[4] = *puVar21; + puVar5[5] = uVar9; + uVar9 = puVar22[1]; + puVar5[6] = *puVar22; + puVar5[7] = uVar9; + uVar9 = puVar16[3]; + *puVar6 = puVar16[2]; + puVar6[1] = uVar9; + uVar9 = puVar15[3]; + puVar6[2] = puVar15[2]; + puVar6[3] = uVar9; + uVar9 = puVar21[3]; + puVar6[4] = puVar21[2]; + puVar6[5] = uVar9; + uVar9 = puVar22[3]; + puVar6[6] = puVar22[2]; + puVar6[7] = uVar9; + uVar9 = puVar16[5]; + *puVar7 = puVar16[4]; + puVar7[1] = uVar9; + uVar9 = puVar15[5]; + puVar7[2] = puVar15[4]; + puVar7[3] = uVar9; + uVar9 = puVar21[5]; + puVar7[4] = puVar21[4]; + puVar7[5] = uVar9; + uVar9 = puVar22[5]; + puVar7[6] = puVar22[4]; + puVar7[7] = uVar9; + uVar9 = puVar16[7]; + *puVar8 = puVar16[6]; + puVar8[1] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + lVar17); + uVar9 = puVar15[7]; + puVar8[2] = puVar15[6]; + puVar8[3] = uVar9; + puVar15 = (undefined8 *)((long)puVar15 + lVar17); + uVar9 = puVar21[7]; + puVar8[4] = puVar21[6]; + puVar8[5] = uVar9; + puVar21 = (undefined8 *)((long)puVar21 + lVar17); + uVar9 = puVar22[7]; + puVar8[6] = puVar22[6]; + puVar8[7] = uVar9; + puVar22 = (undefined8 *)((long)puVar22 + lVar17); + } while (lVar14 != ((ulong)uVar13 + 1) * 0x40); + } + if (iVar20 < iVar11) { + puVar16 = (undefined8 *)(param_1 + lVar18 + iVar20 * param_2); + lVar14 = 0; + do { + puVar15 = (undefined8 *)(lVar23 + lVar19 + lVar14); + puVar21 = (undefined8 *)(lVar1 + lVar19 + lVar14); + uVar9 = puVar16[1]; + puVar22 = (undefined8 *)(lVar2 + lVar19 + lVar14); + puVar5 = (undefined8 *)(lVar3 + lVar19 + lVar14); + *puVar15 = *puVar16; + puVar15[1] = uVar9; + lVar14 = lVar14 + 0x10; + uVar9 = puVar16[3]; + *puVar21 = puVar16[2]; + puVar21[1] = uVar9; + uVar9 = puVar16[5]; + *puVar22 = puVar16[4]; + puVar22[1] = uVar9; + uVar9 = puVar16[7]; + *puVar5 = puVar16[6]; + puVar5[1] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + param_2); + } while (lVar14 != ((ulong)(uint)((iVar11 + -1) - iVar20) + 1) * 0x10); + } + lVar18 = lVar18 + 0x40; + lVar23 = lVar3 + param_4; + } while (lVar18 != ((ulong)uVar24 + 1) * 0x40); + iVar20 = (uVar24 + 1) * 4; + } + if (iVar20 < iVar10) { + uVar13 = iVar11 - 4U >> 2; + lVar18 = (long)iVar20; + iVar12 = (uVar13 + 1) * 4; + if (iVar11 + -3 < 1) { + iVar12 = 0; + } + lVar17 = lVar18 << 4; + lVar23 = (long)iVar12; + param_3 = param_3 + param_4 * lVar18; + do { + if (0 < iVar11 + -3) { + puVar16 = (undefined8 *)(param_1 + lVar17); + puVar15 = (undefined8 *)(param_3 + 0x10); + do { + puVar21 = puVar15 + 8; + puVar22 = (undefined8 *)((long)puVar16 + param_2); + uVar9 = puVar16[1]; + puVar5 = (undefined8 *)((long)puVar16 + param_2 * 2); + puVar6 = (undefined8 *)((long)puVar16 + param_2 * 3); + puVar15[-2] = *puVar16; + puVar15[-1] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + param_2 * 4); + uVar9 = puVar22[1]; + *puVar15 = *puVar22; + puVar15[1] = uVar9; + uVar9 = puVar5[1]; + puVar15[2] = *puVar5; + puVar15[3] = uVar9; + uVar9 = puVar6[1]; + puVar15[4] = *puVar6; + puVar15[5] = uVar9; + puVar15 = puVar21; + } while (puVar21 != (undefined8 *)(param_3 + (ulong)uVar13 * 0x40 + 0x50)); + } + if (iVar12 < iVar11) { + puVar16 = (undefined8 *)(param_1 + lVar17 + lVar23 * param_2); + puVar15 = (undefined8 *)(param_3 + lVar23 * 0x10); + do { + uVar9 = puVar16[1]; + puVar21 = puVar15 + 2; + *puVar15 = *puVar16; + puVar15[1] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + param_2); + puVar15 = puVar21; + } while (puVar21 != + (undefined8 *) + (param_3 + (lVar23 + 1 + (ulong)(uint)((iVar11 + -1) - iVar12)) * 0x10)); + } + lVar17 = lVar17 + 0x10; + param_3 = param_3 + param_4; + } while (lVar17 != (lVar18 + 1 + (ulong)(uint)((iVar10 + -1) - iVar20)) * 0x10); + } + return; +} + + +================================================================== + +### FUNC 002fc24c (144 bytes) name=FUN_002fc24c + +void FUN_002fc24c(long param_1,long param_2,int param_3) + +{ + undefined8 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined8 *puVar6; + undefined8 *puVar7; + undefined8 *puVar8; + long lVar9; + undefined8 *puVar10; + long lVar11; + uint uVar12; + + if (0 < param_3) { + lVar9 = 1; + puVar10 = (undefined8 *)(param_1 + 0x10); + uVar12 = param_3 - 2; + lVar11 = 0; + if (1 < param_3) { + do { + puVar8 = (undefined8 *)(param_2 + -0x10 + (long)puVar10); + puVar6 = puVar10; + do { + uVar1 = puVar8[1]; + uVar2 = *(undefined4 *)puVar6; + uVar3 = *(undefined4 *)((long)puVar6 + 4); + uVar4 = *(undefined4 *)(puVar6 + 1); + uVar5 = *(undefined4 *)((long)puVar6 + 0xc); + puVar7 = puVar6 + 2; + *puVar6 = *puVar8; + puVar6[1] = uVar1; + *(undefined4 *)puVar8 = uVar2; + *(undefined4 *)((long)puVar8 + 4) = uVar3; + *(undefined4 *)(puVar8 + 1) = uVar4; + *(undefined4 *)((long)puVar8 + 0xc) = uVar5; + puVar8 = (undefined8 *)((long)puVar8 + param_2); + puVar6 = puVar7; + } while (puVar7 != (undefined8 *)(param_1 + lVar11 + 0x10 + (lVar9 + (ulong)uVar12) * 0x10)) + ; + lVar9 = lVar9 + 1; + puVar10 = (undefined8 *)((long)puVar10 + param_2 + 0x10); + uVar12 = uVar12 - 1; + lVar11 = lVar11 + param_2; + } while ((int)lVar9 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fc2dc (1332 bytes) name=FUN_002fc2dc + +void FUN_002fc2dc(undefined8 *param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + undefined8 uVar7; + int iVar8; + uint uVar9; + undefined8 *puVar10; + undefined8 *puVar11; + int iVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 *puVar15; + long lVar16; + long lVar17; + long lVar18; + int iVar19; + uint uVar20; + int iVar21; + long lVar22; + long lVar23; + long lVar24; + long lVar25; + + iVar19 = *param_5; + iVar21 = param_5[1]; + if (iVar19 < 4) { + iVar12 = 0; + } + else { + lVar17 = param_2 * 4; + uVar9 = iVar21 - 4U >> 2; + iVar12 = (uVar9 + 1) * 4; + uVar20 = iVar19 - 4U >> 2; + lVar24 = NEON_shl(((ulong)uVar9 + 1) * 3,5); + if (iVar21 + -3 < 1) { + iVar12 = 0; + } + lVar23 = NEON_shl(((ulong)(uint)((iVar21 + -1) - iVar12) + 1) * 3,3); + lVar22 = NEON_shl((long)iVar12 * 3,3); + lVar18 = param_3; + puVar11 = param_1; + do { + lVar1 = lVar18 + param_4; + lVar25 = lVar1 + param_4; + lVar2 = lVar25 + param_4; + if (0 < iVar21 + -3) { + lVar16 = 0; + puVar13 = (undefined8 *)((long)puVar11 + param_2 + param_2); + puVar10 = (undefined8 *)((long)puVar11 + param_2); + puVar14 = (undefined8 *)((long)puVar13 + param_2); + puVar15 = puVar11; + do { + puVar3 = (undefined8 *)(lVar18 + lVar16); + uVar7 = puVar15[1]; + *puVar3 = *puVar15; + puVar3[1] = uVar7; + puVar3[2] = puVar15[2]; + uVar7 = puVar10[1]; + puVar3[3] = *puVar10; + puVar3[4] = uVar7; + puVar4 = (undefined8 *)(lVar25 + lVar16); + puVar3[5] = puVar10[2]; + puVar5 = (undefined8 *)(lVar1 + lVar16); + puVar6 = (undefined8 *)(lVar2 + lVar16); + lVar16 = lVar16 + 0x60; + uVar7 = puVar13[1]; + puVar3[6] = *puVar13; + puVar3[7] = uVar7; + puVar3[8] = puVar13[2]; + uVar7 = puVar14[1]; + puVar3[9] = *puVar14; + puVar3[10] = uVar7; + puVar3[0xb] = puVar14[2]; + uVar7 = puVar15[4]; + *puVar5 = puVar15[3]; + puVar5[1] = uVar7; + puVar5[2] = puVar15[5]; + uVar7 = puVar10[4]; + puVar5[3] = puVar10[3]; + puVar5[4] = uVar7; + puVar5[5] = puVar10[5]; + uVar7 = puVar13[4]; + puVar5[6] = puVar13[3]; + puVar5[7] = uVar7; + puVar5[8] = puVar13[5]; + uVar7 = puVar14[4]; + puVar5[9] = puVar14[3]; + puVar5[10] = uVar7; + puVar5[0xb] = puVar14[5]; + uVar7 = puVar15[7]; + *puVar4 = puVar15[6]; + puVar4[1] = uVar7; + puVar4[2] = puVar15[8]; + uVar7 = puVar10[7]; + puVar4[3] = puVar10[6]; + puVar4[4] = uVar7; + puVar4[5] = puVar10[8]; + uVar7 = puVar13[7]; + puVar4[6] = puVar13[6]; + puVar4[7] = uVar7; + puVar4[8] = puVar13[8]; + uVar7 = puVar14[7]; + puVar4[9] = puVar14[6]; + puVar4[10] = uVar7; + puVar4[0xb] = puVar14[8]; + uVar7 = puVar15[10]; + *puVar6 = puVar15[9]; + puVar6[1] = uVar7; + puVar6[2] = puVar15[0xb]; + uVar7 = puVar10[10]; + puVar6[3] = puVar10[9]; + puVar6[4] = uVar7; + puVar6[5] = puVar10[0xb]; + uVar7 = puVar13[10]; + puVar6[6] = puVar13[9]; + puVar6[7] = uVar7; + puVar6[8] = puVar13[0xb]; + uVar7 = puVar14[10]; + puVar6[9] = puVar14[9]; + puVar6[10] = uVar7; + puVar6[0xb] = puVar14[0xb]; + puVar13 = (undefined8 *)((long)puVar13 + lVar17); + puVar10 = (undefined8 *)((long)puVar10 + lVar17); + puVar14 = (undefined8 *)((long)puVar14 + lVar17); + puVar15 = (undefined8 *)((long)puVar15 + lVar17); + } while (lVar16 != lVar24); + } + if (iVar12 < iVar21) { + lVar16 = 0; + puVar13 = (undefined8 *)((long)puVar11 + iVar12 * param_2); + do { + puVar10 = (undefined8 *)(lVar18 + lVar22 + lVar16); + uVar7 = puVar13[1]; + puVar14 = (undefined8 *)(lVar1 + lVar22 + lVar16); + puVar15 = (undefined8 *)(lVar25 + lVar22 + lVar16); + *puVar10 = *puVar13; + puVar10[1] = uVar7; + puVar3 = (undefined8 *)(lVar2 + lVar22 + lVar16); + lVar16 = lVar16 + 0x18; + puVar10[2] = puVar13[2]; + uVar7 = puVar13[4]; + *puVar14 = puVar13[3]; + puVar14[1] = uVar7; + puVar14[2] = puVar13[5]; + uVar7 = puVar13[7]; + *puVar15 = puVar13[6]; + puVar15[1] = uVar7; + puVar15[2] = puVar13[8]; + uVar7 = puVar13[10]; + *puVar3 = puVar13[9]; + puVar3[1] = uVar7; + puVar3[2] = puVar13[0xb]; + puVar13 = (undefined8 *)((long)puVar13 + param_2); + } while (lVar16 != lVar23); + } + puVar11 = puVar11 + 0xc; + lVar18 = lVar2 + param_4; + } while (puVar11 != param_1 + ((ulong)uVar20 + 1) * 0xc); + iVar12 = (uVar20 + 1) * 4; + } + if (iVar12 < iVar19) { + lVar24 = (long)iVar12; + lVar17 = lVar24 * 0x18; + uVar9 = iVar21 - 4U >> 2; + iVar8 = (uVar9 + 1) * 4; + if (iVar21 + -3 < 1) { + iVar8 = 0; + } + lVar18 = (long)iVar8; + puVar11 = (undefined8 *)(param_3 + param_4 * lVar24); + do { + if (0 < iVar21 + -3) { + puVar13 = (undefined8 *)((long)param_1 + lVar17); + puVar10 = puVar11; + do { + puVar15 = puVar10 + 0xc; + puVar3 = (undefined8 *)((long)puVar13 + param_2); + uVar7 = puVar13[1]; + puVar4 = (undefined8 *)((long)puVar13 + param_2 * 2); + puVar5 = (undefined8 *)((long)puVar13 + param_2 * 3); + *puVar10 = *puVar13; + puVar10[1] = uVar7; + puVar14 = puVar13 + 2; + puVar13 = (undefined8 *)((long)puVar13 + param_2 * 4); + puVar10[2] = *puVar14; + uVar7 = puVar3[1]; + puVar10[3] = *puVar3; + puVar10[4] = uVar7; + puVar10[5] = puVar3[2]; + uVar7 = puVar4[1]; + puVar10[6] = *puVar4; + puVar10[7] = uVar7; + puVar10[8] = puVar4[2]; + uVar7 = puVar5[1]; + puVar10[9] = *puVar5; + puVar10[10] = uVar7; + puVar10[0xb] = puVar5[2]; + puVar10 = puVar15; + } while (puVar15 != puVar11 + ((ulong)uVar9 + 1) * 0xc); + } + if (iVar8 < iVar21) { + puVar13 = (undefined8 *)((long)param_1 + lVar17 + lVar18 * param_2); + puVar10 = puVar11 + lVar18 * 3; + do { + uVar7 = puVar13[1]; + *puVar10 = *puVar13; + puVar10[1] = uVar7; + puVar15 = puVar10 + 3; + puVar14 = puVar13 + 2; + puVar13 = (undefined8 *)((long)puVar13 + param_2); + puVar10[2] = *puVar14; + puVar10 = puVar15; + } while (puVar15 != puVar11 + (lVar18 + 1 + (ulong)(uint)((iVar21 + -1) - iVar8)) * 3); + } + lVar17 = lVar17 + 0x18; + puVar11 = (undefined8 *)((long)puVar11 + param_4); + } while (lVar17 != (lVar24 + 1 + (ulong)(uint)((iVar19 + -1) - iVar12)) * 0x18); + } + return; +} + + +================================================================== + +### FUNC 002fc810 (192 bytes) name=FUN_002fc810 + +void FUN_002fc810(long param_1,long param_2,int param_3) + +{ + undefined8 *puVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined8 *puVar9; + undefined8 *puVar10; + long lVar11; + undefined8 *puVar12; + long lVar13; + uint uVar14; + + if (0 < param_3) { + lVar11 = 1; + puVar12 = (undefined8 *)(param_1 + 0x18); + uVar14 = param_3 - 2; + lVar13 = 0; + if (1 < param_3) { + do { + puVar10 = (undefined8 *)(param_2 + -0x18 + (long)puVar12); + puVar9 = puVar12; + do { + uVar2 = puVar10[1]; + uVar3 = *(undefined4 *)puVar9; + uVar4 = *(undefined4 *)((long)puVar9 + 4); + uVar5 = *(undefined4 *)(puVar9 + 1); + uVar6 = *(undefined4 *)((long)puVar9 + 0xc); + uVar7 = *(undefined4 *)(puVar9 + 2); + *puVar9 = *puVar10; + puVar9[1] = uVar2; + uVar8 = *(undefined4 *)((long)puVar9 + 0x14); + puVar1 = puVar9 + 3; + puVar9[2] = puVar10[2]; + *(undefined4 *)puVar10 = uVar3; + *(undefined4 *)((long)puVar10 + 4) = uVar4; + *(undefined4 *)(puVar10 + 1) = uVar5; + *(undefined4 *)((long)puVar10 + 0xc) = uVar6; + *(undefined4 *)(puVar10 + 2) = uVar7; + *(undefined4 *)((long)puVar10 + 0x14) = uVar8; + puVar10 = (undefined8 *)((long)puVar10 + param_2); + puVar9 = puVar1; + } while (puVar1 != (undefined8 *)(param_1 + lVar13 + 0x18 + (lVar11 + (ulong)uVar14) * 0x18) + ); + lVar11 = lVar11 + 1; + puVar12 = (undefined8 *)((long)puVar12 + param_2 + 0x18); + uVar14 = uVar14 - 1; + lVar13 = lVar13 + param_2; + } while ((int)lVar11 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fc8d0 (1012 bytes) name=FUN_002fc8d0 + +void FUN_002fc8d0(long param_1,long param_2,long param_3,long param_4,int *param_5) + +{ + long lVar1; + long lVar2; + long lVar3; + long lVar4; + undefined8 *puVar5; + undefined8 *puVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 uVar9; + int iVar10; + int iVar11; + int iVar12; + uint uVar13; + undefined8 *puVar14; + undefined8 *puVar15; + undefined8 *puVar16; + undefined8 *puVar17; + long lVar18; + long lVar19; + long lVar20; + long lVar21; + long lVar22; + int iVar23; + uint uVar24; + + iVar10 = *param_5; + iVar11 = param_5[1]; + if (iVar10 < 4) { + iVar23 = 0; + } + else { + uVar13 = iVar11 - 4U >> 2; + iVar23 = (uVar13 + 1) * 4; + lVar19 = param_2 * 4; + lVar20 = 0; + uVar24 = iVar10 - 4U >> 2; + if (iVar11 + -3 < 1) { + iVar23 = 0; + } + lVar22 = (long)iVar23 * 0x20; + lVar21 = param_3; + do { + lVar1 = lVar21 + param_4; + lVar2 = lVar1 + param_4; + lVar3 = lVar2 + param_4; + if (0 < iVar11 + -3) { + puVar16 = (undefined8 *)(param_1 + lVar20); + lVar4 = lVar20 + param_2 + param_2; + lVar18 = 0; + puVar14 = (undefined8 *)(param_1 + lVar20 + param_2); + puVar15 = (undefined8 *)(param_1 + lVar4); + puVar17 = (undefined8 *)(param_1 + lVar4 + param_2); + do { + puVar5 = (undefined8 *)(lVar21 + lVar18); + puVar6 = (undefined8 *)(lVar1 + lVar18); + uVar9 = puVar16[1]; + puVar7 = (undefined8 *)(lVar2 + lVar18); + puVar8 = (undefined8 *)(lVar3 + lVar18); + *puVar5 = *puVar16; + puVar5[1] = uVar9; + lVar18 = lVar18 + 0x80; + uVar9 = puVar16[3]; + puVar5[2] = puVar16[2]; + puVar5[3] = uVar9; + uVar9 = puVar14[1]; + puVar5[4] = *puVar14; + puVar5[5] = uVar9; + uVar9 = puVar14[3]; + puVar5[6] = puVar14[2]; + puVar5[7] = uVar9; + uVar9 = puVar15[1]; + puVar5[8] = *puVar15; + puVar5[9] = uVar9; + uVar9 = puVar15[3]; + puVar5[10] = puVar15[2]; + puVar5[0xb] = uVar9; + uVar9 = puVar17[1]; + puVar5[0xc] = *puVar17; + puVar5[0xd] = uVar9; + uVar9 = puVar17[3]; + puVar5[0xe] = puVar17[2]; + puVar5[0xf] = uVar9; + uVar9 = puVar16[5]; + *puVar6 = puVar16[4]; + puVar6[1] = uVar9; + uVar9 = puVar16[7]; + puVar6[2] = puVar16[6]; + puVar6[3] = uVar9; + uVar9 = puVar14[5]; + puVar6[4] = puVar14[4]; + puVar6[5] = uVar9; + uVar9 = puVar14[7]; + puVar6[6] = puVar14[6]; + puVar6[7] = uVar9; + uVar9 = puVar15[5]; + puVar6[8] = puVar15[4]; + puVar6[9] = uVar9; + uVar9 = puVar15[7]; + puVar6[10] = puVar15[6]; + puVar6[0xb] = uVar9; + uVar9 = puVar17[5]; + puVar6[0xc] = puVar17[4]; + puVar6[0xd] = uVar9; + uVar9 = puVar17[7]; + puVar6[0xe] = puVar17[6]; + puVar6[0xf] = uVar9; + uVar9 = puVar16[9]; + *puVar7 = puVar16[8]; + puVar7[1] = uVar9; + uVar9 = puVar16[0xb]; + puVar7[2] = puVar16[10]; + puVar7[3] = uVar9; + uVar9 = puVar14[9]; + puVar7[4] = puVar14[8]; + puVar7[5] = uVar9; + uVar9 = puVar14[0xb]; + puVar7[6] = puVar14[10]; + puVar7[7] = uVar9; + uVar9 = puVar15[9]; + puVar7[8] = puVar15[8]; + puVar7[9] = uVar9; + uVar9 = puVar15[0xb]; + puVar7[10] = puVar15[10]; + puVar7[0xb] = uVar9; + uVar9 = puVar17[9]; + puVar7[0xc] = puVar17[8]; + puVar7[0xd] = uVar9; + uVar9 = puVar17[0xb]; + puVar7[0xe] = puVar17[10]; + puVar7[0xf] = uVar9; + uVar9 = puVar16[0xd]; + *puVar8 = puVar16[0xc]; + puVar8[1] = uVar9; + uVar9 = puVar16[0xf]; + puVar8[2] = puVar16[0xe]; + puVar8[3] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + lVar19); + uVar9 = puVar14[0xd]; + puVar8[4] = puVar14[0xc]; + puVar8[5] = uVar9; + uVar9 = puVar14[0xf]; + puVar8[6] = puVar14[0xe]; + puVar8[7] = uVar9; + puVar14 = (undefined8 *)((long)puVar14 + lVar19); + uVar9 = puVar15[0xd]; + puVar8[8] = puVar15[0xc]; + puVar8[9] = uVar9; + uVar9 = puVar15[0xf]; + puVar8[10] = puVar15[0xe]; + puVar8[0xb] = uVar9; + puVar15 = (undefined8 *)((long)puVar15 + lVar19); + uVar9 = puVar17[0xd]; + puVar8[0xc] = puVar17[0xc]; + puVar8[0xd] = uVar9; + uVar9 = puVar17[0xf]; + puVar8[0xe] = puVar17[0xe]; + puVar8[0xf] = uVar9; + puVar17 = (undefined8 *)((long)puVar17 + lVar19); + } while (lVar18 != ((ulong)uVar13 + 1) * 0x80); + } + if (iVar23 < iVar11) { + puVar16 = (undefined8 *)(param_1 + lVar20 + iVar23 * param_2); + lVar18 = 0; + do { + puVar14 = (undefined8 *)(lVar21 + lVar22 + lVar18); + puVar15 = (undefined8 *)(lVar1 + lVar22 + lVar18); + uVar9 = puVar16[1]; + puVar17 = (undefined8 *)(lVar2 + lVar22 + lVar18); + puVar5 = (undefined8 *)(lVar3 + lVar22 + lVar18); + *puVar14 = *puVar16; + puVar14[1] = uVar9; + lVar18 = lVar18 + 0x20; + uVar9 = puVar16[3]; + puVar14[2] = puVar16[2]; + puVar14[3] = uVar9; + uVar9 = puVar16[5]; + *puVar15 = puVar16[4]; + puVar15[1] = uVar9; + uVar9 = puVar16[7]; + puVar15[2] = puVar16[6]; + puVar15[3] = uVar9; + uVar9 = puVar16[9]; + *puVar17 = puVar16[8]; + puVar17[1] = uVar9; + uVar9 = puVar16[0xb]; + puVar17[2] = puVar16[10]; + puVar17[3] = uVar9; + uVar9 = puVar16[0xd]; + *puVar5 = puVar16[0xc]; + puVar5[1] = uVar9; + uVar9 = puVar16[0xf]; + puVar5[2] = puVar16[0xe]; + puVar5[3] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + param_2); + } while (lVar18 != ((ulong)(uint)((iVar11 + -1) - iVar23) + 1) * 0x20); + } + lVar20 = lVar20 + 0x80; + lVar21 = lVar3 + param_4; + } while (lVar20 != ((ulong)uVar24 + 1) * 0x80); + iVar23 = (uVar24 + 1) * 4; + } + if (iVar23 < iVar10) { + uVar13 = iVar11 - 4U >> 2; + lVar20 = (long)iVar23; + iVar12 = (uVar13 + 1) * 4; + if (iVar11 + -3 < 1) { + iVar12 = 0; + } + lVar19 = lVar20 << 5; + lVar21 = (long)iVar12; + param_3 = param_3 + param_4 * lVar20; + do { + if (0 < iVar11 + -3) { + puVar16 = (undefined8 *)(param_1 + lVar19); + puVar14 = (undefined8 *)(param_3 + 0x20); + do { + puVar15 = puVar14 + 0x10; + puVar17 = (undefined8 *)((long)puVar16 + param_2); + uVar9 = puVar16[1]; + puVar5 = (undefined8 *)((long)puVar16 + param_2 * 2); + puVar6 = (undefined8 *)((long)puVar16 + param_2 * 3); + puVar14[-4] = *puVar16; + puVar14[-3] = uVar9; + uVar9 = puVar16[3]; + puVar14[-2] = puVar16[2]; + puVar14[-1] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + param_2 * 4); + uVar9 = puVar17[1]; + *puVar14 = *puVar17; + puVar14[1] = uVar9; + uVar9 = puVar17[3]; + puVar14[2] = puVar17[2]; + puVar14[3] = uVar9; + uVar9 = puVar5[1]; + puVar14[4] = *puVar5; + puVar14[5] = uVar9; + uVar9 = puVar5[3]; + puVar14[6] = puVar5[2]; + puVar14[7] = uVar9; + uVar9 = puVar6[1]; + puVar14[8] = *puVar6; + puVar14[9] = uVar9; + uVar9 = puVar6[3]; + puVar14[10] = puVar6[2]; + puVar14[0xb] = uVar9; + puVar14 = puVar15; + } while (puVar15 != (undefined8 *)(param_3 + (ulong)uVar13 * 0x80 + 0xa0)); + } + if (iVar12 < iVar11) { + puVar16 = (undefined8 *)(param_1 + lVar19 + lVar21 * param_2); + puVar14 = (undefined8 *)(param_3 + lVar21 * 0x20); + do { + puVar15 = puVar14 + 4; + uVar9 = puVar16[1]; + *puVar14 = *puVar16; + puVar14[1] = uVar9; + uVar9 = puVar16[3]; + puVar14[2] = puVar16[2]; + puVar14[3] = uVar9; + puVar16 = (undefined8 *)((long)puVar16 + param_2); + puVar14 = puVar15; + } while (puVar15 != + (undefined8 *) + (param_3 + (lVar21 + 1 + (ulong)(uint)((iVar11 + -1) - iVar12)) * 0x20)); + } + lVar19 = lVar19 + 0x20; + param_3 = param_3 + param_4; + } while (lVar19 != (lVar20 + 1 + (ulong)(uint)((iVar10 + -1) - iVar23)) * 0x20); + } + return; +} + + +================================================================== + +### FUNC 002fccc4 (212 bytes) name=FUN_002fccc4 + +void FUN_002fccc4(long param_1,long param_2,int param_3) + +{ + undefined8 *puVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + undefined4 uVar10; + undefined8 *puVar11; + undefined8 *puVar12; + long lVar13; + undefined8 *puVar14; + long lVar15; + uint uVar16; + + if (0 < param_3) { + lVar13 = 1; + puVar14 = (undefined8 *)(param_1 + 0x20); + uVar16 = param_3 - 2; + lVar15 = 0; + if (1 < param_3) { + do { + puVar12 = (undefined8 *)(param_2 + -0x20 + (long)puVar14); + puVar11 = puVar14; + do { + uVar3 = *(undefined4 *)puVar11; + puVar1 = puVar11 + 4; + uVar4 = *(undefined4 *)((long)puVar11 + 4); + uVar2 = puVar12[1]; + uVar5 = *(undefined4 *)(puVar11 + 1); + uVar6 = *(undefined4 *)((long)puVar11 + 0xc); + *puVar11 = *puVar12; + puVar11[1] = uVar2; + uVar7 = *(undefined4 *)(puVar11 + 2); + uVar2 = puVar12[3]; + uVar8 = *(undefined4 *)((long)puVar11 + 0x14); + uVar9 = *(undefined4 *)(puVar11 + 3); + uVar10 = *(undefined4 *)((long)puVar11 + 0x1c); + puVar11[2] = puVar12[2]; + puVar11[3] = uVar2; + *(undefined4 *)puVar12 = uVar3; + *(undefined4 *)((long)puVar12 + 4) = uVar4; + *(undefined4 *)(puVar12 + 1) = uVar5; + *(undefined4 *)((long)puVar12 + 0xc) = uVar6; + *(undefined4 *)(puVar12 + 2) = uVar7; + *(undefined4 *)((long)puVar12 + 0x14) = uVar8; + *(undefined4 *)(puVar12 + 3) = uVar9; + *(undefined4 *)((long)puVar12 + 0x1c) = uVar10; + puVar12 = (undefined8 *)((long)puVar12 + param_2); + puVar11 = puVar1; + } while (puVar1 != (undefined8 *)(param_1 + lVar15 + 0x20 + (lVar13 + (ulong)uVar16) * 0x20) + ); + lVar13 = lVar13 + 1; + puVar14 = (undefined8 *)((long)puVar14 + param_2 + 0x20); + uVar16 = uVar16 - 1; + lVar15 = lVar15 + param_2; + } while ((int)lVar13 < param_3); + } + } + return; +} + + +================================================================== + +### FUNC 002fcd98 (1168 bytes) name=FUN_002fcd98 + +void FUN_002fcd98(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + uint uVar3; + byte bVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + uint3 uVar9; + uint uVar10; + uint uVar11; + ulong *puVar12; + uint uVar13; + byte *pbVar14; + uint uVar15; + uint uVar16; + long lVar17; + ulong uVar18; + byte *pbVar19; + uint *puVar20; + byte *pbVar21; + long lVar22; + int iVar23; + long lVar24; + long lVar25; + long lVar26; + undefined1 uVar27; + undefined1 uVar28; + undefined1 uVar29; + int iVar30; + uint *puVar31; + undefined8 uVar32; + undefined8 uVar33; + + iVar30 = **(int **)(param_1 + 0x10); + uVar10 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar10 + 1; + uVar7 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar30 < 1) { + return; + } + pbVar21 = *(byte **)(param_1 + 4); + uVar3 = uVar7; + if ((int)uVar7 < 1) { + uVar3 = 1; + } + puVar31 = *(uint **)(param_2 + 0x10); + uVar5 = uVar1 * 2; + uVar18 = (ulong)uVar5; + lVar22 = 0; + lVar26 = **(long **)(param_1 + 0x12); + lVar25 = **(long **)(param_2 + 0x48); + iVar8 = uVar7 + uVar1 * -4; + lVar24 = 0; + iVar23 = 0; + pbVar19 = pbVar21; + puVar20 = puVar31; + do { + while (uVar7 != uVar1) { + lVar17 = 0; + do { + uVar13 = (uint)pbVar19[lVar17]; + uVar15 = (uint)pbVar21[lVar17 + (long)(int)uVar10 + 1 + lVar22]; + uVar11 = uVar5; + if ((int)uVar5 <= iVar8) { + pbVar14 = pbVar19 + lVar17 + (ulong)uVar5 * 2; + do { + uVar11 = uVar11 + uVar1 * 4; + uVar13 = (uint)*pbVar14 + uVar13 + pbVar14[-uVar18]; + uVar15 = (uint)pbVar14[uVar1 * 3 - uVar18] + uVar15 + pbVar14[(long)(int)uVar1 - uVar18] + ; + pbVar14 = pbVar14 + uVar1 * 4; + } while ((int)uVar11 <= iVar8); + } + if ((int)uVar11 < (int)uVar7) { + pbVar14 = pbVar19 + lVar17 + (int)uVar11; + do { + uVar11 = uVar11 + uVar1; + bVar4 = *pbVar14; + pbVar14 = pbVar14 + (int)uVar1; + uVar13 = uVar13 + bVar4; + } while ((int)uVar11 < (int)uVar7); + } + puVar20[lVar17] = uVar13 + uVar15; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar1); +joined_r0x002fd218: + lVar22 = lVar22 + lVar26; + pbVar19 = pbVar19 + lVar26; + lVar24 = lVar24 + lVar25; + puVar20 = (uint *)((long)puVar20 + lVar25); + iVar23 = iVar23 + 1; + if (iVar23 == iVar30) { + return; + } + } + if ((pbVar19 < (byte *)((long)puVar31 + lVar24 + (long)(int)uVar3 * 4) && + puVar20 < pbVar21 + lVar22 + (int)uVar3) || (uVar3 < 0x15)) { + lVar17 = 0; + do { + puVar20[lVar17] = (uint)pbVar19[lVar17]; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar7); + goto joined_r0x002fd218; + } + uVar13 = -((uint)((ulong)puVar20 >> 2) & 3) & 3; + uVar15 = uVar3; + if (uVar13 < uVar3) { + uVar15 = uVar13; + } + uVar13 = uVar15; + if ((uVar15 != 0) && (*puVar20 = (uint)*pbVar19, uVar15 != 1)) { + puVar20[1] = (uint)pbVar19[1]; + if (uVar15 == 3) { + puVar20[2] = (uint)pbVar19[2]; + } + else { + uVar13 = 2; + } + } + iVar2 = uVar7 - 1; + if ((int)uVar7 < 1) { + iVar2 = 0; + } + uVar11 = ((uVar3 - uVar15) - 0x10 >> 4) + 1; + iVar6 = uVar11 * 0x10; + if (0xe < iVar2 - uVar15) { + uVar16 = 0; + puVar12 = (ulong *)((long)puVar31 + lVar24 + (ulong)uVar15 * 4); + pbVar14 = pbVar21 + (ulong)uVar15 + lVar22; + do { + uVar33 = *(undefined8 *)(pbVar14 + 8); + uVar32 = *(undefined8 *)pbVar14; + uVar16 = uVar16 + 1; + uVar27 = (undefined1)((ulong)uVar32 >> 8); + uVar28 = (undefined1)((ulong)uVar32 >> 0x28); + uVar9 = CONCAT12((char)((ulong)uVar33 >> 8),(short)uVar33) & 0xff00ff; + uVar29 = (undefined1)((ulong)uVar33 >> 0x28); + puVar12[1] = (ulong)CONCAT14((char)((ulong)uVar32 >> 0x18), + (uint)(byte)((ulong)uVar32 >> 0x10)); + *puVar12 = (ulong)((uint6)CONCAT14(uVar27,(uint)CONCAT12(uVar27,(ushort)(byte)uVar32)) & + 0xffff0000ffff); + puVar12[3] = (ulong)CONCAT14((char)((ulong)uVar32 >> 0x38), + (uint)(byte)((ulong)uVar32 >> 0x30)); + puVar12[2] = (ulong)((uint6)CONCAT14(uVar28,(uint)CONCAT12(uVar28,(ushort)(byte)((ulong) + uVar32 >> 0x20))) & 0xffff0000ffff); + puVar12[5] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x18), + (uint)(byte)((ulong)uVar33 >> 0x10)); + puVar12[4] = (ulong)((uint6)CONCAT14((char)(uVar9 >> 0x10),(uint)uVar9) & 0xffff0000ffff); + puVar12[7] = (ulong)CONCAT14((char)((ulong)uVar33 >> 0x38), + (uint)(byte)((ulong)uVar33 >> 0x30)); + puVar12[6] = (ulong)((uint6)CONCAT14(uVar29,(uint)CONCAT12(uVar29,(ushort)(byte)((ulong) + uVar33 >> 0x20))) & 0xffff0000ffff); + puVar12 = puVar12 + 8; + pbVar14 = pbVar14 + 0x10; + } while (uVar16 < uVar11); + uVar13 = uVar13 + iVar6; + if (iVar6 == uVar3 - uVar15) goto joined_r0x002fd218; + } + iVar2 = uVar13 + 1; + puVar20[(int)uVar13] = (uint)pbVar19[(int)uVar13]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 2; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar2 = uVar13 + 3; + puVar20[iVar6] = (uint)pbVar19[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 4; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar2 = uVar13 + 5; + puVar20[iVar6] = (uint)pbVar19[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 6; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar2 = uVar13 + 7; + puVar20[iVar6] = (uint)pbVar19[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 8; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar2 = uVar13 + 9; + puVar20[iVar6] = (uint)pbVar19[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 10; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar2 = uVar13 + 0xb; + puVar20[iVar6] = (uint)pbVar19[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 0xc; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar2 = uVar13 + 0xd; + puVar20[iVar6] = (uint)pbVar19[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd218; + iVar6 = uVar13 + 0xe; + puVar20[iVar2] = (uint)pbVar19[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd218; + iVar23 = iVar23 + 1; + lVar24 = lVar24 + lVar25; + lVar22 = lVar22 + lVar26; + pbVar14 = pbVar19 + iVar6; + pbVar19 = pbVar19 + lVar26; + puVar20[iVar6] = (uint)*pbVar14; + puVar20 = (uint *)((long)puVar20 + lVar25); + if (iVar23 == iVar30) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 002fd228 (1264 bytes) name=FUN_002fd228 + +void FUN_002fd228(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + uint uVar3; + byte bVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + byte *pbVar11; + uint uVar12; + uint uVar13; + byte *pbVar14; + uint uVar15; + long lVar16; + ulong uVar17; + byte *pbVar18; + float *pfVar19; + byte *pbVar20; + long lVar21; + int iVar22; + long lVar23; + long lVar24; + long lVar25; + undefined1 auVar26 [16]; + int iVar27; + float *pfVar28; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + + iVar27 = **(int **)(param_1 + 0x10); + uVar9 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar9 + 1; + uVar7 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar27 < 1) { + return; + } + pbVar20 = *(byte **)(param_1 + 4); + uVar3 = uVar7; + if ((int)uVar7 < 1) { + uVar3 = 1; + } + pfVar28 = *(float **)(param_2 + 0x10); + uVar5 = uVar1 * 2; + uVar17 = (ulong)uVar5; + lVar21 = 0; + lVar25 = **(long **)(param_1 + 0x12); + lVar24 = **(long **)(param_2 + 0x48); + iVar8 = uVar7 + uVar1 * -4; + lVar23 = 0; + iVar22 = 0; + pbVar18 = pbVar20; + pfVar19 = pfVar28; + do { + while (uVar7 != uVar1) { + lVar16 = 0; + do { + uVar12 = (uint)pbVar18[lVar16]; + uVar13 = (uint)pbVar20[lVar16 + (long)(int)uVar9 + 1 + lVar21]; + uVar10 = uVar5; + if ((int)uVar5 <= iVar8) { + pbVar11 = pbVar18 + lVar16 + (ulong)uVar5 * 2; + do { + uVar10 = uVar10 + uVar1 * 4; + uVar12 = (uint)*pbVar11 + uVar12 + pbVar11[-uVar17]; + uVar13 = (uint)pbVar11[uVar1 * 3 - uVar17] + uVar13 + pbVar11[(long)(int)uVar1 - uVar17] + ; + pbVar11 = pbVar11 + uVar1 * 4; + } while ((int)uVar10 <= iVar8); + } + if ((int)uVar10 < (int)uVar7) { + pbVar11 = pbVar18 + lVar16 + (int)uVar10; + do { + uVar10 = uVar10 + uVar1; + bVar4 = *pbVar11; + pbVar11 = pbVar11 + (int)uVar1; + uVar12 = uVar12 + bVar4; + } while ((int)uVar10 < (int)uVar7); + } + pfVar19[lVar16] = (float)(int)(uVar12 + uVar13); + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar1); +joined_r0x002fd708: + lVar21 = lVar21 + lVar25; + pbVar18 = pbVar18 + lVar25; + lVar23 = lVar23 + lVar24; + pfVar19 = (float *)((long)pfVar19 + lVar24); + iVar22 = iVar22 + 1; + if (iVar22 == iVar27) { + return; + } + } + if ((pbVar18 < (byte *)((long)pfVar28 + lVar23 + (long)(int)uVar3 * 4) && + pfVar19 < pbVar20 + lVar21 + (int)uVar3) || (uVar3 < 0x15)) { + lVar16 = 0; + do { + pfVar19[lVar16] = (float)pbVar18[lVar16]; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar7); + goto joined_r0x002fd708; + } + uVar12 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + uVar13 = uVar3; + if (uVar12 < uVar3) { + uVar13 = uVar12; + } + uVar12 = uVar13; + if ((uVar13 != 0) && (*pfVar19 = (float)*pbVar18, uVar13 != 1)) { + pfVar19[1] = (float)pbVar18[1]; + if (uVar13 == 3) { + pfVar19[2] = (float)pbVar18[2]; + } + else { + uVar12 = 2; + } + } + iVar2 = uVar7 - 1; + if ((int)uVar7 < 1) { + iVar2 = 0; + } + uVar10 = ((uVar3 - uVar13) - 0x10 >> 4) + 1; + iVar6 = uVar10 * 0x10; + if (0xe < iVar2 - uVar13) { + uVar15 = 0; + pbVar11 = (byte *)((long)pfVar28 + lVar23 + (ulong)uVar13 * 4); + pbVar14 = pbVar20 + (ulong)uVar13 + lVar21; + do { + uVar15 = uVar15 + 1; + auVar31._6_2_ = 0; + auVar31._0_6_ = + (uint6)CONCAT14(pbVar14[1],(uint)CONCAT12(pbVar14[1],(ushort)*pbVar14)) & + 0xffff0000ffff; + auVar31[8] = pbVar14[2]; + auVar31._9_3_ = 0; + auVar31[0xc] = pbVar14[3]; + auVar31._13_3_ = 0; + auVar29._1_3_ = 0; + auVar29[0] = pbVar14[4]; + auVar29[4] = pbVar14[5]; + auVar29._5_3_ = 0; + auVar29[8] = pbVar14[6]; + auVar29._9_3_ = 0; + auVar29[0xc] = pbVar14[7]; + auVar29._13_3_ = 0; + auVar30._6_2_ = 0; + auVar30._0_6_ = + (uint6)CONCAT14(pbVar14[9],(uint)CONCAT12(pbVar14[9],(ushort)pbVar14[8])) & + 0xffff0000ffff; + auVar30[8] = pbVar14[10]; + auVar30._9_3_ = 0; + auVar30[0xc] = pbVar14[0xb]; + auVar30._13_3_ = 0; + auVar26._1_3_ = 0; + auVar26[0] = pbVar14[0xc]; + auVar26[4] = pbVar14[0xd]; + auVar26._5_3_ = 0; + auVar26[8] = pbVar14[0xe]; + auVar26._9_3_ = 0; + auVar26[0xc] = pbVar14[0xf]; + auVar26._13_3_ = 0; + auVar31 = NEON_scvtf(auVar31,4); + auVar29 = NEON_scvtf(auVar29,4); + auVar30 = NEON_scvtf(auVar30,4); + auVar26 = NEON_scvtf(auVar26,4); + *(long *)(pbVar11 + 8) = auVar31._8_8_; + *(long *)pbVar11 = auVar31._0_8_; + *(long *)(pbVar11 + 0x18) = auVar29._8_8_; + *(long *)(pbVar11 + 0x10) = auVar29._0_8_; + *(long *)(pbVar11 + 0x28) = auVar30._8_8_; + *(long *)(pbVar11 + 0x20) = auVar30._0_8_; + *(long *)(pbVar11 + 0x38) = auVar26._8_8_; + *(long *)(pbVar11 + 0x30) = auVar26._0_8_; + pbVar11 = pbVar11 + 0x40; + pbVar14 = pbVar14 + 0x10; + } while (uVar15 < uVar10); + uVar12 = uVar12 + iVar6; + if (iVar6 == uVar3 - uVar13) goto joined_r0x002fd708; + } + iVar2 = uVar12 + 1; + pfVar19[(int)uVar12] = (float)pbVar18[(int)uVar12]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 2; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar2 = uVar12 + 3; + pfVar19[iVar6] = (float)pbVar18[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 4; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar2 = uVar12 + 5; + pfVar19[iVar6] = (float)pbVar18[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 6; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar2 = uVar12 + 7; + pfVar19[iVar6] = (float)pbVar18[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 8; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar2 = uVar12 + 9; + pfVar19[iVar6] = (float)pbVar18[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 10; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar2 = uVar12 + 0xb; + pfVar19[iVar6] = (float)pbVar18[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 0xc; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar2 = uVar12 + 0xd; + pfVar19[iVar6] = (float)pbVar18[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fd708; + iVar6 = uVar12 + 0xe; + pfVar19[iVar2] = (float)pbVar18[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fd708; + iVar22 = iVar22 + 1; + lVar23 = lVar23 + lVar24; + lVar21 = lVar21 + lVar25; + pbVar11 = pbVar18 + iVar6; + pbVar18 = pbVar18 + lVar25; + pfVar19[iVar6] = (float)*pbVar11; + pfVar19 = (float *)((long)pfVar19 + lVar24); + if (iVar22 == iVar27) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 002fd718 (1312 bytes) name=FUN_002fd718 + +void FUN_002fd718(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + uint uVar3; + byte bVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + undefined1 auVar9 [13]; + undefined1 auVar10 [13]; + uint uVar11; + undefined1 auVar12 [13]; + undefined1 auVar13 [13]; + byte bVar14; + byte bVar15; + uint uVar16; + uint uVar17; + byte *pbVar18; + uint uVar19; + uint uVar20; + long lVar21; + ulong uVar22; + byte *pbVar23; + double *pdVar24; + byte *pbVar25; + long lVar26; + int iVar27; + long lVar28; + long lVar29; + long lVar30; + ulong uVar31; + int iVar32; + double *pdVar33; + ulong uVar34; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + ulong uVar37; + undefined1 auVar38 [16]; + ulong uVar39; + byte *pbVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + + iVar32 = **(int **)(param_1 + 0x10); + uVar11 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar11 + 1; + uVar7 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar32 < 1) { + return; + } + pbVar25 = *(byte **)(param_1 + 4); + uVar3 = uVar7; + if ((int)uVar7 < 1) { + uVar3 = 1; + } + pdVar33 = *(double **)(param_2 + 0x10); + uVar5 = uVar1 * 2; + uVar22 = (ulong)uVar5; + lVar26 = 0; + lVar30 = **(long **)(param_1 + 0x12); + lVar29 = **(long **)(param_2 + 0x48); + iVar8 = uVar7 + uVar1 * -4; + lVar28 = 0; + iVar27 = 0; + pbVar23 = pbVar25; + pdVar24 = pdVar33; + do { + while (uVar7 != uVar1) { + lVar21 = 0; + do { + uVar17 = (uint)pbVar23[lVar21]; + uVar19 = (uint)pbVar25[lVar21 + (long)(int)uVar11 + 1 + lVar26]; + uVar16 = uVar5; + if ((int)uVar5 <= iVar8) { + pbVar18 = pbVar23 + lVar21 + (ulong)uVar5 * 2; + do { + uVar16 = uVar16 + uVar1 * 4; + uVar17 = (uint)*pbVar18 + uVar17 + pbVar18[-uVar22]; + uVar19 = (uint)pbVar18[uVar1 * 3 - uVar22] + uVar19 + pbVar18[(long)(int)uVar1 - uVar22] + ; + pbVar18 = pbVar18 + uVar1 * 4; + } while ((int)uVar16 <= iVar8); + } + if ((int)uVar16 < (int)uVar7) { + pbVar18 = pbVar23 + lVar21 + (int)uVar16; + do { + uVar16 = uVar16 + uVar1; + bVar4 = *pbVar18; + pbVar18 = pbVar18 + (int)uVar1; + uVar17 = uVar17 + bVar4; + } while ((int)uVar16 < (int)uVar7); + } + pdVar24[lVar21] = (double)(int)(uVar17 + uVar19); + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar1); +joined_r0x002fdc30: + lVar26 = lVar26 + lVar30; + pbVar23 = pbVar23 + lVar30; + lVar28 = lVar28 + lVar29; + pdVar24 = (double *)((long)pdVar24 + lVar29); + iVar27 = iVar27 + 1; + if (iVar27 == iVar32) { + return; + } + } + if ((pbVar23 < (byte *)((long)pdVar33 + lVar28 + (long)(int)uVar3 * 8) && + pdVar24 < pbVar25 + lVar26 + (int)uVar3) || (uVar3 < 0x15)) { + lVar21 = 0; + do { + pdVar24[lVar21] = (double)pbVar23[lVar21]; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar7); + goto joined_r0x002fdc30; + } + uVar19 = (uint)((ulong)pdVar24 >> 3) & 1; + uVar17 = uVar3; + if (uVar19 < uVar3) { + uVar17 = uVar19; + } + if (uVar17 != 0) { + *pdVar24 = (double)*pbVar23; + } + uVar16 = (uint)(uVar17 != 0); + uVar19 = ((uVar3 - uVar17) - 0x10 >> 4) + 1; + iVar6 = uVar19 * 0x10; + iVar2 = uVar7 - 1; + if ((int)uVar7 < 1) { + iVar2 = 0; + } + if (0xe < iVar2 - uVar17) { + uVar20 = 0; + pbVar18 = (byte *)((long)pdVar33 + lVar28 + (ulong)uVar17 * 8); + pbVar40 = pbVar25 + (ulong)uVar17 + lVar26; + do { + uVar20 = uVar20 + 1; + bVar4 = pbVar40[1]; + bVar14 = pbVar40[9]; + bVar15 = pbVar40[0xd]; + uVar39 = CONCAT26(0,(uint6)CONCAT14(bVar4,(uint)CONCAT12(bVar4,(ushort)*pbVar40)) & + 0xffff0000ffff); + auVar12[8] = pbVar40[2]; + auVar12._0_8_ = uVar39; + auVar12._9_3_ = 0; + auVar12[0xc] = pbVar40[3]; + uVar34 = CONCAT35(0,CONCAT14(pbVar40[5],(uint)pbVar40[4])); + auVar9[8] = pbVar40[6]; + auVar9._0_8_ = uVar34; + auVar9._9_3_ = 0; + auVar9[0xc] = pbVar40[7]; + uVar37 = CONCAT26(0,(uint6)CONCAT14(bVar14,(uint)CONCAT12(bVar14,(ushort)pbVar40[8])) & + 0xffff0000ffff); + auVar13[8] = pbVar40[10]; + auVar13._0_8_ = uVar37; + auVar13._9_3_ = 0; + auVar13[0xc] = pbVar40[0xb]; + uVar31 = CONCAT35(0,CONCAT14(bVar15,(uint)pbVar40[0xc])); + auVar10[8] = pbVar40[0xe]; + auVar10._0_8_ = uVar31; + auVar10._9_3_ = 0; + auVar10[0xc] = pbVar40[0xf]; + auVar41._0_8_ = uVar39 & 0xffffffff; + auVar41[8] = bVar4; + auVar41._9_7_ = 0; + auVar45._0_8_ = (ulong)auVar12._8_5_ & 0xffffffff; + auVar45._8_5_ = auVar12._8_5_ >> 0x20; + auVar45._13_3_ = 0; + auVar44._0_8_ = uVar34 & 0xffffffff; + auVar44[8] = pbVar40[5]; + auVar44._9_7_ = 0; + auVar35._0_8_ = (ulong)auVar9._8_5_ & 0xffffffff; + auVar35._8_5_ = auVar9._8_5_ >> 0x20; + auVar35._13_3_ = 0; + auVar42 = NEON_scvtf(auVar41,8); + *(long *)(pbVar18 + 8) = auVar42._8_8_; + *(long *)pbVar18 = auVar42._0_8_; + auVar42 = NEON_scvtf(auVar45,8); + auVar38._0_8_ = (ulong)auVar13._8_5_ & 0xffffffff; + auVar38._8_5_ = auVar13._8_5_ >> 0x20; + auVar38._13_3_ = 0; + auVar45 = NEON_scvtf(auVar44,8); + auVar43._0_8_ = uVar31 & 0xffffffff; + auVar43[8] = bVar15; + auVar43._9_7_ = 0; + auVar36 = NEON_scvtf(auVar35,8); + *(long *)(pbVar18 + 0x18) = auVar42._8_8_; + *(long *)(pbVar18 + 0x10) = auVar42._0_8_; + *(long *)(pbVar18 + 0x28) = auVar45._8_8_; + *(long *)(pbVar18 + 0x20) = auVar45._0_8_; + auVar42[8] = bVar14; + auVar42._0_8_ = uVar37 & 0xffffffff; + auVar42._9_7_ = 0; + auVar42 = NEON_scvtf(auVar42,8); + *(long *)(pbVar18 + 0x38) = auVar36._8_8_; + *(long *)(pbVar18 + 0x30) = auVar36._0_8_; + auVar36 = NEON_scvtf(auVar38,8); + *(long *)(pbVar18 + 0x48) = auVar42._8_8_; + *(long *)(pbVar18 + 0x40) = auVar42._0_8_; + auVar42 = NEON_scvtf(auVar43,8); + *(long *)(pbVar18 + 0x58) = auVar36._8_8_; + *(long *)(pbVar18 + 0x50) = auVar36._0_8_; + *(long *)(pbVar18 + 0x68) = auVar42._8_8_; + *(long *)(pbVar18 + 0x60) = auVar42._0_8_; + auVar36._0_8_ = (ulong)auVar10._8_5_ & 0xffffffff; + auVar36._8_5_ = auVar10._8_5_ >> 0x20; + auVar36._13_3_ = 0; + auVar42 = NEON_scvtf(auVar36,8); + *(long *)(pbVar18 + 0x78) = auVar42._8_8_; + *(long *)(pbVar18 + 0x70) = auVar42._0_8_; + pbVar18 = pbVar18 + 0x80; + pbVar40 = pbVar40 + 0x10; + } while (uVar20 < uVar19); + uVar16 = uVar16 + iVar6; + if (iVar6 == uVar3 - uVar17) goto joined_r0x002fdc30; + } + iVar2 = uVar16 + 1; + pdVar24[(int)uVar16] = (double)pbVar23[(int)uVar16]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 2; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar2 = uVar16 + 3; + pdVar24[iVar6] = (double)pbVar23[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 4; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar2 = uVar16 + 5; + pdVar24[iVar6] = (double)pbVar23[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 6; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar2 = uVar16 + 7; + pdVar24[iVar6] = (double)pbVar23[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 8; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar2 = uVar16 + 9; + pdVar24[iVar6] = (double)pbVar23[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 10; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar2 = uVar16 + 0xb; + pdVar24[iVar6] = (double)pbVar23[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 0xc; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar2 = uVar16 + 0xd; + pdVar24[iVar6] = (double)pbVar23[iVar6]; + if ((int)uVar7 <= iVar2) goto joined_r0x002fdc30; + iVar6 = uVar16 + 0xe; + pdVar24[iVar2] = (double)pbVar23[iVar2]; + if ((int)uVar7 <= iVar6) goto joined_r0x002fdc30; + iVar27 = iVar27 + 1; + lVar28 = lVar28 + lVar29; + lVar26 = lVar26 + lVar30; + pbVar18 = pbVar23 + iVar6; + pbVar23 = pbVar23 + lVar30; + pdVar24[iVar6] = (double)*pbVar18; + pdVar24 = (double *)((long)pdVar24 + lVar29); + if (iVar27 == iVar32) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 002fdc38 (996 bytes) name=FUN_002fdc38 + +void FUN_002fdc38(uint *param_1,long param_2) + +{ + ushort *puVar1; + ushort *puVar2; + ushort *puVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + ushort uVar9; + uint uVar10; + int iVar11; + uint uVar12; + int iVar13; + uint uVar14; + uint uVar15; + ushort *puVar16; + uint uVar17; + ushort *puVar18; + float *pfVar19; + uint uVar20; + long lVar21; + ulong uVar22; + ulong uVar23; + int iVar24; + float *pfVar25; + ushort *puVar26; + long lVar27; + float fVar28; + undefined1 auVar29 [16]; + float fVar30; + undefined1 auVar31 [16]; + long lVar32; + + iVar8 = **(int **)(param_1 + 0x10); + uVar14 = *param_1 >> 3 & 0x1ff; + uVar4 = uVar14 + 1; + uVar12 = uVar4 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar8) { + uVar10 = uVar4 * 2; + uVar23 = (ulong)uVar10; + puVar26 = *(ushort **)(param_1 + 4); + pfVar25 = *(float **)(param_2 + 0x10); + lVar32 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar13 = uVar12 + uVar4 * -4; + uVar7 = uVar12; + if ((int)uVar12 < 1) { + uVar7 = 1; + } + iVar24 = 0; + do { + while (uVar12 == uVar4) { + uVar15 = -((uint)((ulong)pfVar25 >> 2) & 3) & 3; + if (uVar7 < uVar15) { + uVar15 = uVar7; + } + uVar5 = uVar7; + if (((int)uVar7 < 9) || (uVar17 = 0, uVar5 = uVar15, uVar15 != 0)) { + uVar15 = uVar5; + *pfVar25 = (float)*puVar26; + uVar17 = uVar15; + if (((uVar15 != 1) && + (((pfVar25[1] = (float)puVar26[1], uVar15 != 2 && + (pfVar25[2] = (float)puVar26[2], uVar15 != 3)) && + (pfVar25[3] = (float)puVar26[3], uVar15 != 4)))) && + ((pfVar25[4] = (float)puVar26[4], uVar15 != 5 && + (pfVar25[5] = (float)puVar26[5], uVar15 != 6)))) { + pfVar25[6] = (float)puVar26[6]; + if (uVar15 == 8) { + pfVar25[7] = (float)puVar26[7]; + } + else { + uVar17 = 7; + } + } + if (uVar15 == uVar7) goto LAB_002fddb0; + } + iVar6 = uVar12 - 1; + if ((int)uVar12 < 1) { + iVar6 = 0; + } + uVar5 = ((uVar7 - uVar15) - 8 >> 3) + 1; + iVar11 = uVar5 * 8; + if (6 < iVar6 - uVar15) { + uVar20 = 0; + puVar16 = puVar26 + uVar15; + pfVar19 = pfVar25 + uVar15; + do { + uVar20 = uVar20 + 1; + auVar31._2_2_ = 0; + auVar31._0_2_ = *puVar16; + auVar31._4_2_ = puVar16[1]; + auVar31._6_2_ = 0; + auVar31._8_2_ = puVar16[2]; + auVar31._10_2_ = 0; + auVar31._12_2_ = puVar16[3]; + auVar31._14_2_ = 0; + auVar29._2_2_ = 0; + auVar29._0_2_ = puVar16[4]; + auVar29._4_2_ = puVar16[5]; + auVar29._6_2_ = 0; + auVar29._8_2_ = puVar16[6]; + auVar29._10_2_ = 0; + auVar29._12_2_ = puVar16[7]; + auVar29._14_2_ = 0; + auVar31 = NEON_scvtf(auVar31,4); + auVar29 = NEON_scvtf(auVar29,4); + *(long *)(pfVar19 + 2) = auVar31._8_8_; + *(long *)pfVar19 = auVar31._0_8_; + *(long *)(pfVar19 + 6) = auVar29._8_8_; + *(long *)(pfVar19 + 4) = auVar29._0_8_; + puVar16 = puVar16 + 8; + pfVar19 = pfVar19 + 8; + } while (uVar20 < uVar5); + uVar17 = uVar17 + iVar11; + if (iVar11 == uVar7 - uVar15) goto LAB_002fddb0; + } + iVar6 = uVar17 + 1; + pfVar25[(int)uVar17] = (float)puVar26[(int)uVar17]; + if ((int)uVar12 <= iVar6) goto LAB_002fddb0; + iVar11 = uVar17 + 2; + pfVar25[iVar6] = (float)puVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fddb0; + iVar6 = uVar17 + 3; + pfVar25[iVar11] = (float)puVar26[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fddb0; + iVar11 = uVar17 + 4; + pfVar25[iVar6] = (float)puVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fddb0; + iVar6 = uVar17 + 5; + pfVar25[iVar11] = (float)puVar26[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fddb0; + iVar11 = uVar17 + 6; + pfVar25[iVar6] = (float)puVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fddb0; + iVar24 = iVar24 + 1; + pfVar25[iVar11] = (float)puVar26[iVar11]; + pfVar25 = (float *)((long)pfVar25 + lVar27); + puVar26 = (ushort *)((long)puVar26 + lVar32); + if (iVar24 == iVar8) { + return; + } + } + lVar21 = 0; + puVar16 = puVar26 + uVar23; + uVar22 = uVar23; + do { + fVar28 = (float)puVar26[lVar21]; + fVar30 = (float)puVar26[(long)(int)uVar14 + lVar21 + 1]; + uVar15 = uVar10; + if ((int)uVar10 <= iVar13) { + puVar18 = puVar16; + do { + uVar9 = *puVar18; + uVar15 = uVar15 + uVar4 * 4; + puVar1 = puVar18 + ((((long)(int)uVar14 + 1 + uVar22) - lVar21) - uVar23); + puVar2 = puVar18 + (uVar22 - lVar21); + puVar3 = puVar18 + (((uVar22 + uVar4 * 3) - lVar21) - uVar23); + puVar18 = puVar18 + uVar4 * 4; + fVar28 = (float)*puVar2 + fVar28 + (float)uVar9; + fVar30 = (float)*puVar3 + fVar30 + (float)*puVar1; + } while ((int)uVar15 <= iVar13); + } + if ((int)uVar15 < (int)uVar12) { + puVar18 = puVar26 + lVar21 + (int)uVar15; + do { + uVar9 = *puVar18; + uVar15 = uVar15 + uVar4; + puVar18 = puVar18 + (long)(int)uVar14 + 1; + fVar28 = fVar28 + (float)uVar9; + } while ((int)uVar15 < (int)uVar12); + } + puVar16 = puVar16 + 1; + uVar22 = uVar22 + 1; + pfVar25[lVar21] = fVar28 + fVar30; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar4); +LAB_002fddb0: + iVar24 = iVar24 + 1; + pfVar25 = (float *)((long)pfVar25 + lVar27); + puVar26 = (ushort *)((long)puVar26 + lVar32); + } while (iVar24 != iVar8); + } + return; +} + + +================================================================== + +### FUNC 002fe01c (1028 bytes) name=FUN_002fe01c + +void FUN_002fe01c(uint *param_1,long param_2) + +{ + ushort *puVar1; + ushort *puVar2; + ushort *puVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + ushort uVar9; + uint uVar10; + int iVar11; + uint uVar12; + int iVar13; + undefined1 auVar14 [14]; + undefined1 auVar15 [14]; + uint uVar16; + uint uVar17; + ushort *puVar18; + uint uVar19; + ushort *puVar20; + double *pdVar21; + uint uVar22; + long lVar23; + ulong uVar24; + ulong uVar25; + int iVar26; + double *pdVar27; + ushort *puVar28; + long lVar29; + double dVar30; + undefined1 auVar31 [16]; + double dVar32; + ulong uVar33; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + long lVar37; + + iVar8 = **(int **)(param_1 + 0x10); + uVar16 = *param_1 >> 3 & 0x1ff; + uVar4 = uVar16 + 1; + uVar12 = uVar4 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar8) { + uVar10 = uVar4 * 2; + uVar25 = (ulong)uVar10; + puVar28 = *(ushort **)(param_1 + 4); + pdVar27 = *(double **)(param_2 + 0x10); + lVar37 = **(long **)(param_1 + 0x12); + lVar29 = **(long **)(param_2 + 0x48); + iVar13 = uVar12 + uVar4 * -4; + uVar7 = uVar12; + if ((int)uVar12 < 1) { + uVar7 = 1; + } + iVar26 = 0; + do { + while (uVar12 == uVar4) { + uVar17 = (uint)((ulong)pdVar27 >> 3) & 1; + if (uVar7 < uVar17) { + uVar17 = uVar7; + } + uVar5 = uVar7; + if (((int)uVar7 < 9) || (uVar19 = 0, uVar5 = uVar17, uVar17 != 0)) { + uVar17 = uVar5; + *pdVar27 = (double)*puVar28; + uVar19 = uVar17; + if (((uVar17 != 1) && + (((pdVar27[1] = (double)puVar28[1], uVar17 != 2 && + (pdVar27[2] = (double)puVar28[2], uVar17 != 3)) && + (pdVar27[3] = (double)puVar28[3], uVar17 != 4)))) && + ((pdVar27[4] = (double)puVar28[4], uVar17 != 5 && + (pdVar27[5] = (double)puVar28[5], uVar17 != 6)))) { + pdVar27[6] = (double)puVar28[6]; + if (uVar17 == 8) { + pdVar27[7] = (double)puVar28[7]; + } + else { + uVar19 = 7; + } + } + if (uVar17 == uVar7) goto LAB_002fe194; + } + iVar6 = uVar12 - 1; + if ((int)uVar12 < 1) { + iVar6 = 0; + } + uVar5 = ((uVar7 - uVar17) - 8 >> 3) + 1; + iVar11 = uVar5 * 8; + if (6 < iVar6 - uVar17) { + uVar22 = 0; + puVar18 = puVar28 + uVar17; + pdVar21 = pdVar27 + uVar17; + do { + uVar22 = uVar22 + 1; + uVar33 = CONCAT26(0,CONCAT24(puVar18[1],(uint)*puVar18)); + auVar14._8_2_ = puVar18[2]; + auVar14._0_8_ = uVar33; + auVar14._10_2_ = 0; + auVar14._12_2_ = puVar18[3]; + uVar24 = CONCAT26(0,CONCAT24(puVar18[5],(uint)puVar18[4])); + auVar15._8_2_ = puVar18[6]; + auVar15._0_8_ = uVar24; + auVar15._10_2_ = 0; + auVar15._12_2_ = puVar18[7]; + auVar36._0_8_ = uVar33 & 0xffffffff; + auVar36._8_2_ = puVar18[1]; + auVar36._10_6_ = 0; + auVar34._0_8_ = (ulong)auVar14._8_6_ & 0xffffffff; + auVar34._8_6_ = auVar14._8_6_ >> 0x20; + auVar34._14_2_ = 0; + auVar35._0_8_ = uVar24 & 0xffffffff; + auVar35._8_2_ = puVar18[5]; + auVar35._10_6_ = 0; + auVar31._0_8_ = (ulong)auVar15._8_6_ & 0xffffffff; + auVar31._8_6_ = auVar15._8_6_ >> 0x20; + auVar31._14_2_ = 0; + auVar36 = NEON_scvtf(auVar36,8); + pdVar21[1] = auVar36._8_8_; + *pdVar21 = auVar36._0_8_; + auVar34 = NEON_scvtf(auVar34,8); + auVar35 = NEON_scvtf(auVar35,8); + auVar31 = NEON_scvtf(auVar31,8); + pdVar21[3] = auVar34._8_8_; + pdVar21[2] = auVar34._0_8_; + pdVar21[5] = auVar35._8_8_; + pdVar21[4] = auVar35._0_8_; + pdVar21[7] = auVar31._8_8_; + pdVar21[6] = auVar31._0_8_; + puVar18 = puVar18 + 8; + pdVar21 = pdVar21 + 8; + } while (uVar22 < uVar5); + uVar19 = uVar19 + iVar11; + if (iVar11 == uVar7 - uVar17) goto LAB_002fe194; + } + iVar6 = uVar19 + 1; + pdVar27[(int)uVar19] = (double)puVar28[(int)uVar19]; + if ((int)uVar12 <= iVar6) goto LAB_002fe194; + iVar11 = uVar19 + 2; + pdVar27[iVar6] = (double)puVar28[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe194; + iVar6 = uVar19 + 3; + pdVar27[iVar11] = (double)puVar28[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fe194; + iVar11 = uVar19 + 4; + pdVar27[iVar6] = (double)puVar28[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe194; + iVar6 = uVar19 + 5; + pdVar27[iVar11] = (double)puVar28[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fe194; + iVar11 = uVar19 + 6; + pdVar27[iVar6] = (double)puVar28[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe194; + iVar26 = iVar26 + 1; + pdVar27[iVar11] = (double)puVar28[iVar11]; + pdVar27 = (double *)((long)pdVar27 + lVar29); + puVar28 = (ushort *)((long)puVar28 + lVar37); + if (iVar26 == iVar8) { + return; + } + } + lVar23 = 0; + puVar18 = puVar28 + uVar25; + uVar24 = uVar25; + do { + dVar30 = (double)puVar28[lVar23]; + dVar32 = (double)puVar28[(long)(int)uVar16 + lVar23 + 1]; + uVar17 = uVar10; + if ((int)uVar10 <= iVar13) { + puVar20 = puVar18; + do { + uVar9 = *puVar20; + uVar17 = uVar17 + uVar4 * 4; + puVar1 = puVar20 + ((((long)(int)uVar16 + 1 + uVar24) - lVar23) - uVar25); + puVar2 = puVar20 + (uVar24 - lVar23); + puVar3 = puVar20 + (((uVar24 + uVar4 * 3) - lVar23) - uVar25); + puVar20 = puVar20 + uVar4 * 4; + dVar30 = (double)*puVar2 + dVar30 + (double)uVar9; + dVar32 = (double)*puVar3 + dVar32 + (double)*puVar1; + } while ((int)uVar17 <= iVar13); + } + if ((int)uVar17 < (int)uVar12) { + puVar20 = puVar28 + lVar23 + (int)uVar17; + do { + uVar9 = *puVar20; + uVar17 = uVar17 + uVar4; + puVar20 = puVar20 + (long)(int)uVar16 + 1; + dVar30 = dVar30 + (double)uVar9; + } while ((int)uVar17 < (int)uVar12); + } + puVar18 = puVar18 + 1; + uVar24 = uVar24 + 1; + pdVar27[lVar23] = dVar30 + dVar32; + lVar23 = lVar23 + 1; + } while ((int)lVar23 < (int)uVar4); +LAB_002fe194: + iVar26 = iVar26 + 1; + pdVar27 = (double *)((long)pdVar27 + lVar29); + puVar28 = (ushort *)((long)puVar28 + lVar37); + } while (iVar26 != iVar8); + } + return; +} + + +================================================================== + +### FUNC 002fe420 (996 bytes) name=FUN_002fe420 + +void FUN_002fe420(uint *param_1,long param_2) + +{ + short *psVar1; + short *psVar2; + short *psVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + short sVar9; + uint uVar10; + int iVar11; + uint uVar12; + int iVar13; + uint uVar14; + uint uVar15; + short *psVar16; + uint uVar17; + short *psVar18; + float *pfVar19; + uint uVar20; + long lVar21; + ulong uVar22; + ulong uVar23; + int iVar24; + float *pfVar25; + short *psVar26; + long lVar27; + float fVar28; + undefined1 auVar29 [16]; + float fVar30; + undefined1 auVar31 [16]; + long lVar32; + + iVar8 = **(int **)(param_1 + 0x10); + uVar14 = *param_1 >> 3 & 0x1ff; + uVar4 = uVar14 + 1; + uVar12 = uVar4 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar8) { + uVar10 = uVar4 * 2; + uVar23 = (ulong)uVar10; + psVar26 = *(short **)(param_1 + 4); + pfVar25 = *(float **)(param_2 + 0x10); + lVar32 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar13 = uVar12 + uVar4 * -4; + uVar7 = uVar12; + if ((int)uVar12 < 1) { + uVar7 = 1; + } + iVar24 = 0; + do { + while (uVar12 == uVar4) { + uVar15 = -((uint)((ulong)pfVar25 >> 2) & 3) & 3; + if (uVar7 < uVar15) { + uVar15 = uVar7; + } + uVar5 = uVar7; + if (((int)uVar7 < 9) || (uVar17 = 0, uVar5 = uVar15, uVar15 != 0)) { + uVar15 = uVar5; + *pfVar25 = (float)(int)*psVar26; + uVar17 = uVar15; + if (((uVar15 != 1) && + (((pfVar25[1] = (float)(int)psVar26[1], uVar15 != 2 && + (pfVar25[2] = (float)(int)psVar26[2], uVar15 != 3)) && + (pfVar25[3] = (float)(int)psVar26[3], uVar15 != 4)))) && + ((pfVar25[4] = (float)(int)psVar26[4], uVar15 != 5 && + (pfVar25[5] = (float)(int)psVar26[5], uVar15 != 6)))) { + pfVar25[6] = (float)(int)psVar26[6]; + if (uVar15 == 8) { + pfVar25[7] = (float)(int)psVar26[7]; + } + else { + uVar17 = 7; + } + } + if (uVar15 == uVar7) goto LAB_002fe598; + } + iVar6 = uVar12 - 1; + if ((int)uVar12 < 1) { + iVar6 = 0; + } + uVar5 = ((uVar7 - uVar15) - 8 >> 3) + 1; + iVar11 = uVar5 * 8; + if (6 < iVar6 - uVar15) { + uVar20 = 0; + psVar16 = psVar26 + uVar15; + pfVar19 = pfVar25 + uVar15; + do { + uVar20 = uVar20 + 1; + auVar31._0_4_ = (int)*psVar16; + auVar31._4_4_ = (int)psVar16[1]; + auVar31._8_4_ = (int)psVar16[2]; + auVar31._12_4_ = (int)psVar16[3]; + auVar29._0_4_ = (int)psVar16[4]; + auVar29._4_4_ = (int)psVar16[5]; + auVar29._8_4_ = (int)psVar16[6]; + auVar29._12_4_ = (int)psVar16[7]; + auVar31 = NEON_scvtf(auVar31,4); + auVar29 = NEON_scvtf(auVar29,4); + *(long *)(pfVar19 + 2) = auVar31._8_8_; + *(long *)pfVar19 = auVar31._0_8_; + *(long *)(pfVar19 + 6) = auVar29._8_8_; + *(long *)(pfVar19 + 4) = auVar29._0_8_; + psVar16 = psVar16 + 8; + pfVar19 = pfVar19 + 8; + } while (uVar20 < uVar5); + uVar17 = uVar17 + iVar11; + if (iVar11 == uVar7 - uVar15) goto LAB_002fe598; + } + iVar6 = uVar17 + 1; + pfVar25[(int)uVar17] = (float)(int)psVar26[(int)uVar17]; + if ((int)uVar12 <= iVar6) goto LAB_002fe598; + iVar11 = uVar17 + 2; + pfVar25[iVar6] = (float)(int)psVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe598; + iVar6 = uVar17 + 3; + pfVar25[iVar11] = (float)(int)psVar26[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fe598; + iVar11 = uVar17 + 4; + pfVar25[iVar6] = (float)(int)psVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe598; + iVar6 = uVar17 + 5; + pfVar25[iVar11] = (float)(int)psVar26[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fe598; + iVar11 = uVar17 + 6; + pfVar25[iVar6] = (float)(int)psVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe598; + iVar24 = iVar24 + 1; + pfVar25[iVar11] = (float)(int)psVar26[iVar11]; + pfVar25 = (float *)((long)pfVar25 + lVar27); + psVar26 = (short *)((long)psVar26 + lVar32); + if (iVar24 == iVar8) { + return; + } + } + lVar21 = 0; + psVar16 = psVar26 + uVar23; + uVar22 = uVar23; + do { + fVar28 = (float)(int)psVar26[lVar21]; + fVar30 = (float)(int)psVar26[(long)(int)uVar14 + lVar21 + 1]; + uVar15 = uVar10; + if ((int)uVar10 <= iVar13) { + psVar18 = psVar16; + do { + sVar9 = *psVar18; + uVar15 = uVar15 + uVar4 * 4; + psVar1 = psVar18 + ((((long)(int)uVar14 + 1 + uVar22) - lVar21) - uVar23); + psVar2 = psVar18 + (uVar22 - lVar21); + psVar3 = psVar18 + (((uVar22 + uVar4 * 3) - lVar21) - uVar23); + psVar18 = psVar18 + uVar4 * 4; + fVar28 = (float)(int)*psVar2 + fVar28 + (float)(int)sVar9; + fVar30 = (float)(int)*psVar3 + fVar30 + (float)(int)*psVar1; + } while ((int)uVar15 <= iVar13); + } + if ((int)uVar15 < (int)uVar12) { + psVar18 = psVar26 + lVar21 + (int)uVar15; + do { + sVar9 = *psVar18; + uVar15 = uVar15 + uVar4; + psVar18 = psVar18 + (long)(int)uVar14 + 1; + fVar28 = fVar28 + (float)(int)sVar9; + } while ((int)uVar15 < (int)uVar12); + } + psVar16 = psVar16 + 1; + uVar22 = uVar22 + 1; + pfVar25[lVar21] = fVar28 + fVar30; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar4); +LAB_002fe598: + iVar24 = iVar24 + 1; + pfVar25 = (float *)((long)pfVar25 + lVar27); + psVar26 = (short *)((long)psVar26 + lVar32); + } while (iVar24 != iVar8); + } + return; +} + + +================================================================== + +### FUNC 002fe804 (1028 bytes) name=FUN_002fe804 + +void FUN_002fe804(uint *param_1,long param_2) + +{ + short *psVar1; + short *psVar2; + short *psVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + short sVar9; + uint uVar10; + int iVar11; + uint uVar12; + int iVar13; + uint uVar14; + uint uVar15; + short *psVar16; + uint uVar17; + short *psVar18; + double *pdVar19; + uint uVar20; + long lVar21; + ulong uVar22; + ulong uVar23; + int iVar24; + double *pdVar25; + short *psVar26; + long lVar27; + double dVar28; + undefined1 auVar29 [16]; + double dVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + long lVar34; + + iVar8 = **(int **)(param_1 + 0x10); + uVar14 = *param_1 >> 3 & 0x1ff; + uVar4 = uVar14 + 1; + uVar12 = uVar4 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar8) { + uVar10 = uVar4 * 2; + uVar23 = (ulong)uVar10; + psVar26 = *(short **)(param_1 + 4); + pdVar25 = *(double **)(param_2 + 0x10); + lVar34 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar13 = uVar12 + uVar4 * -4; + uVar7 = uVar12; + if ((int)uVar12 < 1) { + uVar7 = 1; + } + iVar24 = 0; + do { + while (uVar12 == uVar4) { + uVar15 = (uint)((ulong)pdVar25 >> 3) & 1; + if (uVar7 < uVar15) { + uVar15 = uVar7; + } + uVar5 = uVar7; + if (((int)uVar7 < 9) || (uVar17 = 0, uVar5 = uVar15, uVar15 != 0)) { + uVar15 = uVar5; + *pdVar25 = (double)(int)*psVar26; + uVar17 = uVar15; + if (((uVar15 != 1) && + (((pdVar25[1] = (double)(int)psVar26[1], uVar15 != 2 && + (pdVar25[2] = (double)(int)psVar26[2], uVar15 != 3)) && + (pdVar25[3] = (double)(int)psVar26[3], uVar15 != 4)))) && + ((pdVar25[4] = (double)(int)psVar26[4], uVar15 != 5 && + (pdVar25[5] = (double)(int)psVar26[5], uVar15 != 6)))) { + pdVar25[6] = (double)(int)psVar26[6]; + if (uVar15 == 8) { + pdVar25[7] = (double)(int)psVar26[7]; + } + else { + uVar17 = 7; + } + } + if (uVar15 == uVar7) goto LAB_002fe97c; + } + iVar6 = uVar12 - 1; + if ((int)uVar12 < 1) { + iVar6 = 0; + } + uVar5 = ((uVar7 - uVar15) - 8 >> 3) + 1; + iVar11 = uVar5 * 8; + if (6 < iVar6 - uVar15) { + uVar20 = 0; + psVar16 = psVar26 + uVar15; + pdVar19 = pdVar25 + uVar15; + do { + uVar20 = uVar20 + 1; + auVar33._0_8_ = (long)(int)*psVar16; + auVar33._8_8_ = (long)(int)psVar16[1]; + auVar31._0_8_ = (long)(int)psVar16[2]; + auVar31._8_8_ = (long)(int)psVar16[3]; + auVar32._0_8_ = (long)(int)psVar16[4]; + auVar32._8_8_ = (long)(int)psVar16[5]; + auVar29._0_8_ = (long)(int)psVar16[6]; + auVar29._8_8_ = (long)(int)psVar16[7]; + auVar33 = NEON_scvtf(auVar33,8); + pdVar19[1] = auVar33._8_8_; + *pdVar19 = auVar33._0_8_; + auVar31 = NEON_scvtf(auVar31,8); + auVar32 = NEON_scvtf(auVar32,8); + auVar29 = NEON_scvtf(auVar29,8); + pdVar19[3] = auVar31._8_8_; + pdVar19[2] = auVar31._0_8_; + pdVar19[5] = auVar32._8_8_; + pdVar19[4] = auVar32._0_8_; + pdVar19[7] = auVar29._8_8_; + pdVar19[6] = auVar29._0_8_; + psVar16 = psVar16 + 8; + pdVar19 = pdVar19 + 8; + } while (uVar20 < uVar5); + uVar17 = uVar17 + iVar11; + if (iVar11 == uVar7 - uVar15) goto LAB_002fe97c; + } + iVar6 = uVar17 + 1; + pdVar25[(int)uVar17] = (double)(int)psVar26[(int)uVar17]; + if ((int)uVar12 <= iVar6) goto LAB_002fe97c; + iVar11 = uVar17 + 2; + pdVar25[iVar6] = (double)(int)psVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe97c; + iVar6 = uVar17 + 3; + pdVar25[iVar11] = (double)(int)psVar26[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fe97c; + iVar11 = uVar17 + 4; + pdVar25[iVar6] = (double)(int)psVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe97c; + iVar6 = uVar17 + 5; + pdVar25[iVar11] = (double)(int)psVar26[iVar11]; + if ((int)uVar12 <= iVar6) goto LAB_002fe97c; + iVar11 = uVar17 + 6; + pdVar25[iVar6] = (double)(int)psVar26[iVar6]; + if ((int)uVar12 <= iVar11) goto LAB_002fe97c; + iVar24 = iVar24 + 1; + pdVar25[iVar11] = (double)(int)psVar26[iVar11]; + pdVar25 = (double *)((long)pdVar25 + lVar27); + psVar26 = (short *)((long)psVar26 + lVar34); + if (iVar24 == iVar8) { + return; + } + } + lVar21 = 0; + psVar16 = psVar26 + uVar23; + uVar22 = uVar23; + do { + dVar28 = (double)(int)psVar26[lVar21]; + dVar30 = (double)(int)psVar26[(long)(int)uVar14 + lVar21 + 1]; + uVar15 = uVar10; + if ((int)uVar10 <= iVar13) { + psVar18 = psVar16; + do { + sVar9 = *psVar18; + uVar15 = uVar15 + uVar4 * 4; + psVar1 = psVar18 + ((((long)(int)uVar14 + 1 + uVar22) - lVar21) - uVar23); + psVar2 = psVar18 + (uVar22 - lVar21); + psVar3 = psVar18 + (((uVar22 + uVar4 * 3) - lVar21) - uVar23); + psVar18 = psVar18 + uVar4 * 4; + dVar28 = (double)(int)*psVar2 + dVar28 + (double)(int)sVar9; + dVar30 = (double)(int)*psVar3 + dVar30 + (double)(int)*psVar1; + } while ((int)uVar15 <= iVar13); + } + if ((int)uVar15 < (int)uVar12) { + psVar18 = psVar26 + lVar21 + (int)uVar15; + do { + sVar9 = *psVar18; + uVar15 = uVar15 + uVar4; + psVar18 = psVar18 + (long)(int)uVar14 + 1; + dVar28 = dVar28 + (double)(int)sVar9; + } while ((int)uVar15 < (int)uVar12); + } + psVar16 = psVar16 + 1; + uVar22 = uVar22 + 1; + pdVar25[lVar21] = dVar28 + dVar30; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar4); +LAB_002fe97c: + iVar24 = iVar24 + 1; + pdVar25 = (double *)((long)pdVar25 + lVar27); + psVar26 = (short *)((long)psVar26 + lVar34); + } while (iVar24 != iVar8); + } + return; +} + + +================================================================== + +### FUNC 002fec08 (744 bytes) name=FUN_002fec08 + +void FUN_002fec08(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + uint uVar13; + uint uVar14; + ulong uVar15; + float *pfVar16; + undefined8 *puVar17; + undefined8 *puVar18; + long lVar19; + ulong uVar20; + uint uVar21; + float *pfVar22; + ulong uVar23; + int iVar24; + undefined4 *puVar25; + undefined4 *puVar26; + long lVar27; + long lVar28; + float fVar29; + undefined8 uVar30; + float fVar31; + float fVar32; + + iVar5 = **(int **)(param_1 + 0x10); + uVar13 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar13 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar5) { + uVar6 = uVar1 * 2; + uVar23 = (ulong)uVar6; + puVar26 = *(undefined4 **)(param_1 + 4); + puVar25 = *(undefined4 **)(param_2 + 0x10); + lVar28 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + lVar27 = **(long **)(param_2 + 0x48); + iVar24 = 0; + do { + while (uVar8 == uVar1) { + uVar14 = uVar8; + if ((int)uVar8 < 1) { + uVar14 = 1; + } + if ((puVar26 < puVar25 + 4 && puVar25 < puVar26 + 4) || (uVar14 < 0xc)) { + lVar19 = 0; + do { + puVar25[lVar19] = puVar26[lVar19]; + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)uVar8); + } + else { + uVar3 = -((uint)((ulong)puVar26 >> 2) & 3) & 3; + if (uVar14 < uVar3) { + uVar3 = uVar14; + } + if ((uVar3 == 0) || (*puVar25 = *puVar26, uVar3 == 1)) { + uVar20 = (ulong)uVar3; + } + else { + puVar25[1] = puVar26[1]; + if (uVar3 == 3) { + uVar20 = 3; + puVar25[2] = puVar26[2]; + } + else { + uVar20 = 2; + } + } + iVar4 = uVar8 - 1; + if ((int)uVar8 < 1) { + iVar4 = 0; + } + uVar2 = ((uVar14 - uVar3) - 4 >> 2) + 1; + iVar7 = uVar2 * 4; + if (2 < iVar4 - uVar3) { + uVar21 = 0; + puVar17 = (undefined8 *)(puVar26 + uVar3); + puVar18 = (undefined8 *)(puVar25 + uVar3); + do { + uVar30 = *puVar17; + uVar21 = uVar21 + 1; + puVar18[1] = puVar17[1]; + *puVar18 = uVar30; + puVar17 = puVar17 + 2; + puVar18 = puVar18 + 2; + } while (uVar21 < uVar2); + uVar20 = (ulong)(uint)((int)uVar20 + iVar7); + if (iVar7 == uVar14 - uVar3) goto LAB_002fed54; + } + uVar15 = -(uVar20 >> 0x1f) & 0xfffffffc00000000 | uVar20 << 2; + *(undefined4 *)((long)puVar25 + uVar15) = *(undefined4 *)((long)puVar26 + uVar15); + if (((int)uVar8 <= (int)uVar20 + 1) || + (*(undefined4 *)((long)puVar25 + uVar15 + 4) = + *(undefined4 *)((long)puVar26 + uVar15 + 4), (int)uVar8 <= (int)uVar20 + 2)) + goto LAB_002fed54; + *(undefined4 *)((long)puVar25 + uVar15 + 8) = *(undefined4 *)((long)puVar26 + uVar15 + 8); + } + puVar25 = (undefined4 *)((long)puVar25 + lVar27); + puVar26 = (undefined4 *)((long)puVar26 + lVar28); + iVar24 = iVar24 + 1; + if (iVar24 == iVar5) { + return; + } + } + lVar19 = 0; + pfVar22 = (float *)(puVar26 + uVar23); + uVar20 = uVar23; + do { + fVar29 = (float)puVar26[lVar19]; + fVar31 = (float)puVar26[(long)(int)uVar13 + lVar19 + 1]; + uVar14 = uVar6; + if ((int)uVar6 <= iVar9) { + pfVar16 = pfVar22; + do { + fVar32 = *pfVar16; + uVar14 = uVar14 + uVar1 * 4; + pfVar10 = pfVar16 + ((((long)(int)uVar13 + 1 + uVar20) - lVar19) - uVar23); + pfVar11 = pfVar16 + (uVar20 - lVar19); + pfVar12 = pfVar16 + (((uVar20 + uVar1 * 3) - lVar19) - uVar23); + pfVar16 = pfVar16 + uVar1 * 4; + fVar29 = fVar29 + fVar32 + *pfVar11; + fVar31 = fVar31 + *pfVar10 + *pfVar12; + } while ((int)uVar14 <= iVar9); + } + if ((int)uVar14 < (int)uVar8) { + pfVar16 = (float *)(puVar26 + lVar19 + (int)uVar14); + do { + uVar14 = uVar14 + uVar1; + fVar32 = *pfVar16; + pfVar16 = pfVar16 + (long)(int)uVar13 + 1; + fVar29 = fVar29 + fVar32; + } while ((int)uVar14 < (int)uVar8); + } + pfVar22 = pfVar22 + 1; + uVar20 = uVar20 + 1; + puVar25[lVar19] = fVar29 + fVar31; + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)uVar1); +LAB_002fed54: + iVar24 = iVar24 + 1; + puVar25 = (undefined4 *)((long)puVar25 + lVar27); + puVar26 = (undefined4 *)((long)puVar26 + lVar28); + } while (iVar24 != iVar5); + } + return; +} + + +================================================================== + +### FUNC 002feef0 (772 bytes) name=FUN_002feef0 + +void FUN_002feef0(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + uint uVar13; + uint uVar14; + float *pfVar15; + uint uVar16; + float *pfVar17; + double *pdVar18; + uint uVar19; + long lVar20; + ulong uVar21; + ulong uVar22; + int iVar23; + double *pdVar24; + float *pfVar25; + long lVar26; + long lVar27; + double dVar28; + undefined8 uVar29; + undefined8 uVar30; + double dVar31; + float fVar32; + + iVar5 = **(int **)(param_1 + 0x10); + uVar13 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar13 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar5) { + uVar6 = uVar1 * 2; + uVar22 = (ulong)uVar6; + pfVar25 = *(float **)(param_1 + 4); + pdVar24 = *(double **)(param_2 + 0x10); + lVar26 = **(long **)(param_2 + 0x48); + lVar27 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + uVar4 = uVar8; + if ((int)uVar8 < 1) { + uVar4 = 1; + } + iVar23 = 0; + do { + while (uVar8 == uVar1) { + uVar14 = (uint)((ulong)pdVar24 >> 3) & 1; + if (uVar4 < uVar14) { + uVar14 = uVar4; + } + uVar2 = uVar4; + if (((int)uVar4 < 5) || (uVar16 = 0, uVar2 = uVar14, uVar14 != 0)) { + uVar14 = uVar2; + *pdVar24 = (double)*pfVar25; + uVar16 = uVar14; + if ((uVar14 != 1) && (pdVar24[1] = (double)pfVar25[1], uVar14 != 2)) { + pdVar24[2] = (double)pfVar25[2]; + if (uVar14 == 4) { + pdVar24[3] = (double)pfVar25[3]; + } + else { + uVar16 = 3; + } + } + if (uVar14 == uVar4) goto LAB_002ff064; + } + iVar3 = uVar8 - 1; + if ((int)uVar8 < 1) { + iVar3 = 0; + } + uVar2 = ((uVar4 - uVar14) - 4 >> 2) + 1; + iVar7 = uVar2 * 4; + if (2 < iVar3 - uVar14) { + uVar19 = 0; + pfVar15 = pfVar25 + uVar14; + pdVar18 = pdVar24 + uVar14; + do { + uVar30 = *(undefined8 *)(pfVar15 + 2); + uVar29 = *(undefined8 *)pfVar15; + uVar19 = uVar19 + 1; + pdVar18[1] = (double)(float)((ulong)uVar29 >> 0x20); + *pdVar18 = (double)(float)uVar29; + pdVar18[3] = (double)(float)((ulong)uVar30 >> 0x20); + pdVar18[2] = (double)(float)uVar30; + pfVar15 = pfVar15 + 4; + pdVar18 = pdVar18 + 4; + } while (uVar19 < uVar2); + uVar16 = uVar16 + iVar7; + if (iVar7 == uVar4 - uVar14) goto LAB_002ff064; + } + iVar3 = uVar16 + 1; + pdVar24[(int)uVar16] = (double)pfVar25[(int)uVar16]; + if ((int)uVar8 <= iVar3) goto LAB_002ff064; + iVar7 = uVar16 + 2; + pdVar24[iVar3] = (double)pfVar25[iVar3]; + if ((int)uVar8 <= iVar7) goto LAB_002ff064; + iVar23 = iVar23 + 1; + pfVar15 = pfVar25 + iVar7; + pfVar25 = (float *)((long)pfVar25 + lVar27); + pdVar24[iVar7] = (double)*pfVar15; + pdVar24 = (double *)((long)pdVar24 + lVar26); + if (iVar23 == iVar5) { + return; + } + } + lVar20 = 0; + pfVar15 = pfVar25 + uVar22; + uVar21 = uVar22; + do { + dVar28 = (double)pfVar25[lVar20]; + dVar31 = (double)pfVar25[(long)(int)uVar13 + lVar20 + 1]; + uVar14 = uVar6; + if ((int)uVar6 <= iVar9) { + pfVar17 = pfVar15; + do { + fVar32 = *pfVar17; + uVar14 = uVar14 + uVar1 * 4; + pfVar10 = pfVar17 + ((((long)(int)uVar13 + 1 + uVar21) - lVar20) - uVar22); + pfVar11 = pfVar17 + (uVar21 - lVar20); + pfVar12 = pfVar17 + (((uVar21 + uVar1 * 3) - lVar20) - uVar22); + pfVar17 = pfVar17 + uVar1 * 4; + dVar28 = (double)*pfVar11 + dVar28 + (double)fVar32; + dVar31 = (double)*pfVar12 + dVar31 + (double)*pfVar10; + } while ((int)uVar14 <= iVar9); + } + if ((int)uVar14 < (int)uVar8) { + pfVar17 = pfVar25 + lVar20 + (int)uVar14; + do { + fVar32 = *pfVar17; + uVar14 = uVar14 + uVar1; + pfVar17 = pfVar17 + (long)(int)uVar13 + 1; + dVar28 = dVar28 + (double)fVar32; + } while ((int)uVar14 < (int)uVar8); + } + pfVar15 = pfVar15 + 1; + uVar21 = uVar21 + 1; + pdVar24[lVar20] = dVar28 + dVar31; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar1); +LAB_002ff064: + iVar23 = iVar23 + 1; + pdVar24 = (double *)((long)pdVar24 + lVar26); + pfVar25 = (float *)((long)pfVar25 + lVar27); + } while (iVar23 != iVar5); + } + return; +} + + +================================================================== + +### FUNC 002ff1f4 (644 bytes) name=FUN_002ff1f4 + +void FUN_002ff1f4(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + bool bVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + double *pdVar10; + double *pdVar11; + double *pdVar12; + uint uVar13; + uint uVar14; + undefined8 *puVar15; + double *pdVar16; + undefined8 *puVar17; + uint uVar18; + ulong uVar19; + long lVar20; + double *pdVar21; + ulong uVar22; + int iVar23; + undefined8 *puVar24; + undefined8 *puVar25; + long lVar26; + long lVar27; + double dVar28; + undefined8 uVar29; + double dVar30; + double dVar31; + + iVar5 = **(int **)(param_1 + 0x10); + uVar13 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar13 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar5) { + uVar6 = uVar1 * 2; + uVar22 = (ulong)uVar6; + puVar25 = *(undefined8 **)(param_1 + 4); + puVar24 = *(undefined8 **)(param_2 + 0x10); + lVar27 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + lVar26 = **(long **)(param_2 + 0x48); + iVar23 = 0; + do { + while (uVar8 == uVar1) { + uVar14 = uVar8; + if ((int)uVar8 < 1) { + uVar14 = 1; + } + if ((puVar25 < puVar24 + 2 && puVar24 < puVar25 + 2) || (uVar14 < 0xe)) { + lVar20 = 0; + do { + puVar24[lVar20] = puVar25[lVar20]; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar8); + } + else { + uVar4 = (uint)((ulong)puVar25 >> 3) & 1; + if (uVar14 < uVar4) { + uVar4 = uVar14; + } + bVar3 = uVar4 != 0; + if (bVar3) { + *puVar24 = *puVar25; + } + uVar19 = (ulong)bVar3; + uVar18 = uVar8 - 1; + if ((int)uVar8 < 1) { + uVar18 = 0; + } + uVar2 = ((uVar14 - uVar4) - 2 >> 1) + 1; + iVar7 = uVar2 * 2; + if (uVar18 != uVar4) { + uVar18 = 0; + puVar15 = puVar25 + uVar4; + puVar17 = puVar24 + uVar4; + do { + uVar29 = *puVar15; + uVar18 = uVar18 + 1; + puVar17[1] = puVar15[1]; + *puVar17 = uVar29; + puVar15 = puVar15 + 2; + puVar17 = puVar17 + 2; + } while (uVar18 < uVar2); + uVar19 = (ulong)((uint)bVar3 + iVar7); + if (iVar7 == uVar14 - uVar4) goto LAB_002ff340; + } + uVar19 = -(uVar19 >> 0x1f) & 0xfffffff800000000 | uVar19 << 3; + *(undefined8 *)((long)puVar24 + uVar19) = *(undefined8 *)((long)puVar25 + uVar19); + } + puVar24 = (undefined8 *)((long)puVar24 + lVar26); + puVar25 = (undefined8 *)((long)puVar25 + lVar27); + iVar23 = iVar23 + 1; + if (iVar23 == iVar5) { + return; + } + } + lVar20 = 0; + pdVar21 = (double *)(puVar25 + uVar22); + uVar19 = uVar22; + do { + dVar28 = (double)puVar25[lVar20]; + dVar30 = (double)puVar25[(long)(int)uVar13 + lVar20 + 1]; + uVar14 = uVar6; + if ((int)uVar6 <= iVar9) { + pdVar16 = pdVar21; + do { + dVar31 = *pdVar16; + uVar14 = uVar14 + uVar1 * 4; + pdVar10 = pdVar16 + ((((long)(int)uVar13 + 1 + uVar19) - lVar20) - uVar22); + pdVar11 = pdVar16 + (uVar19 - lVar20); + pdVar12 = pdVar16 + (((uVar19 + uVar1 * 3) - lVar20) - uVar22); + pdVar16 = pdVar16 + uVar1 * 4; + dVar28 = dVar28 + dVar31 + *pdVar11; + dVar30 = dVar30 + *pdVar10 + *pdVar12; + } while ((int)uVar14 <= iVar9); + } + if ((int)uVar14 < (int)uVar8) { + pdVar16 = (double *)(puVar25 + lVar20 + (int)uVar14); + do { + uVar14 = uVar14 + uVar1; + dVar31 = *pdVar16; + pdVar16 = pdVar16 + (long)(int)uVar13 + 1; + dVar28 = dVar28 + dVar31; + } while ((int)uVar14 < (int)uVar8); + } + pdVar21 = pdVar21 + 1; + uVar19 = uVar19 + 1; + puVar24[lVar20] = dVar28 + dVar30; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar1); +LAB_002ff340: + iVar23 = iVar23 + 1; + puVar24 = (undefined8 *)((long)puVar24 + lVar26); + puVar25 = (undefined8 *)((long)puVar25 + lVar27); + } while (iVar23 != iVar5); + } + return; +} + + +================================================================== + +### FUNC 002ff478 (1216 bytes) name=FUN_002ff478 + +void FUN_002ff478(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + ulong uVar3; + ulong uVar4; + uint uVar5; + int iVar6; + int iVar7; + byte bVar8; + uint uVar9; + int iVar10; + uint uVar11; + int iVar12; + byte bVar13; + long lVar14; + undefined8 *puVar15; + uint uVar16; + long lVar17; + undefined8 *puVar18; + uint uVar19; + byte *pbVar20; + uint uVar21; + long lVar22; + byte bVar23; + long lVar24; + long lVar25; + long lVar26; + ulong uVar27; + long lVar28; + undefined8 uVar29; + + uVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar7 = **(int **)(param_1 + 0x10); + uVar11 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar7) { + uVar9 = uVar1 * 2; + uVar27 = (ulong)uVar9; + iVar12 = uVar11 + uVar1 * -4; + lVar28 = 0; + lVar25 = (long)(int)uVar1; + do { + while( true ) { + lVar26 = 0; + lVar22 = *(long *)(param_1 + 4); + lVar24 = *(long *)(param_2 + 0x10); + lVar14 = lVar28 * **(long **)(param_1 + 0x12); + lVar17 = lVar28 * **(long **)(param_2 + 0x48); + uVar3 = lVar22 + lVar14; + uVar4 = lVar24 + lVar17; + if (uVar11 == uVar1) break; + do { + bVar13 = *(byte *)(uVar3 + lVar26); + bVar23 = *(byte *)(uVar3 + lVar25 + lVar26); + uVar16 = uVar9; + if ((int)uVar9 <= iVar12) { + pbVar20 = (byte *)(uVar3 + lVar26 + (ulong)uVar9 * 2); + do { + uVar16 = uVar16 + uVar1 * 4; + bVar8 = pbVar20[-uVar27]; + if (pbVar20[-uVar27] < *pbVar20) { + bVar8 = *pbVar20; + } + if (bVar8 < bVar13) { + bVar8 = bVar13; + } + bVar13 = bVar8; + bVar8 = pbVar20[uVar1 * 3 - uVar27]; + if (pbVar20[uVar1 * 3 - uVar27] < pbVar20[lVar25 - uVar27]) { + bVar8 = pbVar20[lVar25 - uVar27]; + } + if (bVar8 < bVar23) { + bVar8 = bVar23; + } + bVar23 = bVar8; + pbVar20 = pbVar20 + uVar1 * 4; + } while ((int)uVar16 <= iVar12); + } + if ((int)uVar16 < (int)uVar11) { + pbVar20 = (byte *)(uVar3 + lVar26 + (int)uVar16); + do { + bVar8 = *pbVar20; + uVar16 = uVar16 + uVar1; + pbVar20 = pbVar20 + lVar25; + if (bVar8 <= bVar13) { + bVar8 = bVar13; + } + bVar13 = bVar8; + } while ((int)uVar16 < (int)uVar11); + } + if (bVar23 <= bVar13) { + bVar23 = bVar13; + } + *(byte *)(uVar4 + lVar26) = bVar23; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar1); +joined_r0x002ff920: + iVar6 = (int)lVar28; + lVar28 = lVar28 + 1; + if (iVar7 <= iVar6 + 1) { + return; + } + } + uVar16 = uVar11; + if ((int)uVar11 < 1) { + uVar16 = 1; + } + if ((uVar3 < (ulong)(lVar24 + lVar17 + 0x10) && uVar4 < (ulong)(lVar22 + lVar14 + 0x10)) || + (uVar16 < 0x16)) { + lVar26 = 0; + do { + *(undefined1 *)(uVar4 + lVar26) = *(undefined1 *)(uVar3 + lVar26); + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar11); + goto joined_r0x002ff920; + } + uVar21 = -(int)uVar3 & 0xf; + uVar5 = uVar16; + if (uVar21 < uVar16) { + uVar5 = uVar21; + } + uVar21 = uVar5; + if ((((uVar5 != 0) && + (*(undefined1 *)(lVar24 + lVar17) = *(undefined1 *)(lVar22 + lVar14), uVar5 != 1)) && + (*(undefined1 *)(uVar4 + 1) = *(undefined1 *)(uVar3 + 1), uVar5 != 2)) && + (((*(undefined1 *)(uVar4 + 2) = *(undefined1 *)(uVar3 + 2), uVar5 != 3 && + (*(undefined1 *)(uVar4 + 3) = *(undefined1 *)(uVar3 + 3), uVar5 != 4)) && + (*(undefined1 *)(uVar4 + 4) = *(undefined1 *)(uVar3 + 4), uVar5 != 5)))) { + *(undefined1 *)(uVar4 + 5) = *(undefined1 *)(uVar3 + 5); + if (uVar5 == 6) { + uVar21 = 6; + } + else { + *(undefined1 *)(uVar4 + 6) = *(undefined1 *)(uVar3 + 6); + if (((uVar5 != 7) && (*(undefined1 *)(uVar4 + 7) = *(undefined1 *)(uVar3 + 7), uVar5 != 8) + ) && (((*(undefined1 *)(uVar4 + 8) = *(undefined1 *)(uVar3 + 8), uVar5 != 9 && + (((*(undefined1 *)(uVar4 + 9) = *(undefined1 *)(uVar3 + 9), uVar5 != 10 && + (*(undefined1 *)(uVar4 + 10) = *(undefined1 *)(uVar3 + 10), uVar5 != 0xb)) && + (*(undefined1 *)(uVar4 + 0xb) = *(undefined1 *)(uVar3 + 0xb), uVar5 != 0xc)))) + && (*(undefined1 *)(uVar4 + 0xc) = *(undefined1 *)(uVar3 + 0xc), uVar5 != 0xd))) + ) { + *(undefined1 *)(uVar4 + 0xd) = *(undefined1 *)(uVar3 + 0xd); + if (uVar5 == 0xf) { + *(undefined1 *)(uVar4 + 0xe) = *(undefined1 *)(uVar3 + 0xe); + } + else { + uVar21 = 0xe; + } + } + } + } + iVar6 = uVar11 - 1; + if ((int)uVar11 < 1) { + iVar6 = 0; + } + uVar2 = ((uVar16 - uVar5) - 0x10 >> 4) + 1; + iVar10 = uVar2 * 0x10; + if (0xe < iVar6 - uVar5) { + uVar19 = 0; + puVar15 = (undefined8 *)(lVar22 + (ulong)uVar5 + lVar14); + puVar18 = (undefined8 *)(lVar24 + (ulong)uVar5 + lVar17); + do { + uVar29 = *puVar15; + uVar19 = uVar19 + 1; + puVar18[1] = puVar15[1]; + *puVar18 = uVar29; + puVar15 = puVar15 + 2; + puVar18 = puVar18 + 2; + } while (uVar19 < uVar2); + uVar21 = uVar21 + iVar10; + if (iVar10 == uVar16 - uVar5) goto joined_r0x002ff920; + } + iVar6 = uVar21 + 1; + *(undefined1 *)(uVar4 + (long)(int)uVar21) = *(undefined1 *)(uVar3 + (long)(int)uVar21); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 2; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + iVar6 = uVar21 + 3; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 4; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + iVar6 = uVar21 + 5; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 6; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + iVar6 = uVar21 + 7; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 8; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + iVar6 = uVar21 + 9; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 10; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + iVar6 = uVar21 + 0xb; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 0xc; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + iVar6 = uVar21 + 0xd; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x002ff920; + iVar10 = uVar21 + 0xe; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x002ff920; + lVar28 = lVar28 + 1; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + } while ((int)lVar28 < iVar7); + } + return; +} + + +================================================================== + +### FUNC 002ff938 (1000 bytes) name=FUN_002ff938 + +void FUN_002ff938(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + ushort uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + ushort uVar10; + undefined8 *puVar11; + ulong uVar12; + uint uVar13; + int iVar14; + ulong uVar15; + ushort *puVar16; + undefined8 *puVar17; + ushort uVar18; + uint uVar19; + long lVar20; + ushort *puVar21; + ulong uVar22; + int iVar23; + undefined2 *puVar24; + undefined2 *puVar25; + int iVar26; + long lVar27; + long lVar28; + undefined8 uVar29; + + iVar26 = **(int **)(param_1 + 0x10); + uVar9 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar9 + 1; + uVar7 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar26) { + uVar5 = uVar1 * 2; + uVar22 = (ulong)uVar5; + puVar25 = *(undefined2 **)(param_1 + 4); + puVar24 = *(undefined2 **)(param_2 + 0x10); + lVar28 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar8 = uVar7 + uVar1 * -4; + iVar23 = 0; + do { + while (uVar7 == uVar1) { + uVar13 = uVar7; + if ((int)uVar7 < 1) { + uVar13 = 1; + } + if ((puVar25 < puVar24 + 8 && puVar24 < puVar25 + 8) || (uVar13 < 0xf)) { + lVar20 = 0; + do { + puVar24[lVar20] = puVar25[lVar20]; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar7); + } + else { + uVar3 = -((uint)((ulong)puVar25 >> 1) & 7) & 7; + if (uVar13 < uVar3) { + uVar3 = uVar13; + } + if ((((uVar3 == 0) || (*puVar24 = *puVar25, uVar3 == 1)) || + (puVar24[1] = puVar25[1], uVar3 == 2)) || + (((puVar24[2] = puVar25[2], uVar3 == 3 || (puVar24[3] = puVar25[3], uVar3 == 4)) || + (puVar24[4] = puVar25[4], uVar3 == 5)))) { + uVar15 = (ulong)uVar3; + } + else { + puVar24[5] = puVar25[5]; + if (uVar3 == 7) { + uVar15 = 7; + puVar24[6] = puVar25[6]; + } + else { + uVar15 = 6; + } + } + iVar14 = uVar7 - 1; + if ((int)uVar7 < 1) { + iVar14 = 0; + } + uVar2 = ((uVar13 - uVar3) - 8 >> 3) + 1; + iVar6 = uVar2 * 8; + if (6 < iVar14 - uVar3) { + uVar19 = 0; + puVar11 = (undefined8 *)(puVar25 + uVar3); + puVar17 = (undefined8 *)(puVar24 + uVar3); + do { + uVar29 = *puVar11; + uVar19 = uVar19 + 1; + puVar17[1] = puVar11[1]; + *puVar17 = uVar29; + puVar11 = puVar11 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar15 = (ulong)(uint)((int)uVar15 + iVar6); + if (iVar6 == uVar13 - uVar3) goto LAB_002ffab4; + } + uVar12 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + iVar14 = (int)uVar15; + *(undefined2 *)((long)puVar24 + uVar12) = *(undefined2 *)((long)puVar25 + uVar12); + if ((((int)uVar7 <= iVar14 + 1) || + (*(undefined2 *)((long)puVar24 + uVar12 + 2) = + *(undefined2 *)((long)puVar25 + uVar12 + 2), (int)uVar7 <= iVar14 + 2)) || + ((*(undefined2 *)((long)puVar24 + uVar12 + 4) = + *(undefined2 *)((long)puVar25 + uVar12 + 4), (int)uVar7 <= iVar14 + 3 || + (((*(undefined2 *)((long)puVar24 + uVar12 + 6) = + *(undefined2 *)((long)puVar25 + uVar12 + 6), (int)uVar7 <= iVar14 + 4 || + (*(undefined2 *)((long)puVar24 + uVar12 + 8) = + *(undefined2 *)((long)puVar25 + uVar12 + 8), (int)uVar7 <= iVar14 + 5)) || + (*(undefined2 *)((long)puVar24 + uVar12 + 10) = + *(undefined2 *)((long)puVar25 + uVar12 + 10), (int)uVar7 <= iVar14 + 6)))))) + goto LAB_002ffab4; + *(undefined2 *)((long)puVar24 + uVar12 + 0xc) = + *(undefined2 *)((long)puVar25 + uVar12 + 0xc); + } + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + iVar23 = iVar23 + 1; + if (iVar23 == iVar26) { + return; + } + } + lVar20 = 0; + puVar21 = puVar25 + uVar22; + uVar15 = uVar22; + do { + uVar10 = puVar25[lVar20]; + uVar18 = puVar25[(long)(int)uVar9 + lVar20 + 1]; + uVar13 = uVar5; + if ((int)uVar5 <= iVar8) { + puVar16 = puVar21; + do { + uVar13 = uVar13 + uVar1 * 4; + uVar4 = puVar16[uVar15 - lVar20]; + if (puVar16[uVar15 - lVar20] < *puVar16) { + uVar4 = *puVar16; + } + if (uVar4 < uVar10) { + uVar4 = uVar10; + } + uVar10 = uVar4; + uVar4 = puVar16[((uVar15 + uVar1 * 3) - lVar20) - uVar22]; + if (puVar16[((uVar15 + uVar1 * 3) - lVar20) - uVar22] < + puVar16[(((long)(int)uVar9 + 1 + uVar15) - lVar20) - uVar22]) { + uVar4 = puVar16[(((long)(int)uVar9 + 1 + uVar15) - lVar20) - uVar22]; + } + if (uVar4 < uVar18) { + uVar4 = uVar18; + } + uVar18 = uVar4; + puVar16 = puVar16 + uVar1 * 4; + } while ((int)uVar13 <= iVar8); + } + if ((int)uVar13 < (int)uVar7) { + puVar16 = puVar25 + lVar20 + (int)uVar13; + do { + uVar4 = *puVar16; + uVar13 = uVar13 + uVar1; + puVar16 = puVar16 + (long)(int)uVar9 + 1; + if (uVar4 <= uVar10) { + uVar4 = uVar10; + } + uVar10 = uVar4; + } while ((int)uVar13 < (int)uVar7); + } + puVar21 = puVar21 + 1; + if (uVar18 <= uVar10) { + uVar18 = uVar10; + } + puVar24[lVar20] = uVar18; + lVar20 = lVar20 + 1; + uVar15 = uVar15 + 1; + } while ((int)lVar20 < (int)uVar1); +LAB_002ffab4: + iVar23 = iVar23 + 1; + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + } while (iVar23 != iVar26); + } + return; +} + + +================================================================== + +### FUNC 002ffd20 (1008 bytes) name=FUN_002ffd20 + +void FUN_002ffd20(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + ushort uVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + undefined8 *puVar10; + ulong uVar11; + int iVar12; + ushort *puVar13; + ulong uVar14; + uint uVar15; + uint uVar16; + undefined8 *puVar17; + uint uVar18; + long lVar19; + long lVar20; + ushort *puVar21; + ulong uVar22; + int iVar23; + undefined2 *puVar24; + undefined2 *puVar25; + int iVar26; + long lVar27; + long lVar28; + undefined8 uVar29; + + iVar26 = **(int **)(param_1 + 0x10); + uVar8 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar8 + 1; + uVar6 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar26) { + uVar4 = uVar1 * 2; + uVar22 = (ulong)uVar4; + puVar25 = *(undefined2 **)(param_1 + 4); + puVar24 = *(undefined2 **)(param_2 + 0x10); + lVar28 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar7 = uVar6 + uVar1 * -4; + iVar23 = 0; + do { + while (uVar6 == uVar1) { + uVar15 = uVar6; + if ((int)uVar6 < 1) { + uVar15 = 1; + } + if ((puVar25 < puVar24 + 8 && puVar24 < puVar25 + 8) || (uVar15 < 0xf)) { + lVar20 = 0; + do { + puVar24[lVar20] = puVar25[lVar20]; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar6); + } + else { + uVar16 = -((uint)((ulong)puVar25 >> 1) & 7) & 7; + if (uVar15 < uVar16) { + uVar16 = uVar15; + } + if ((((uVar16 == 0) || (*puVar24 = *puVar25, uVar16 == 1)) || + (puVar24[1] = puVar25[1], uVar16 == 2)) || + (((puVar24[2] = puVar25[2], uVar16 == 3 || (puVar24[3] = puVar25[3], uVar16 == 4)) || + (puVar24[4] = puVar25[4], uVar16 == 5)))) { + uVar14 = (ulong)uVar16; + } + else { + puVar24[5] = puVar25[5]; + if (uVar16 == 7) { + uVar14 = 7; + puVar24[6] = puVar25[6]; + } + else { + uVar14 = 6; + } + } + iVar12 = uVar6 - 1; + if ((int)uVar6 < 1) { + iVar12 = 0; + } + uVar9 = ((uVar15 - uVar16) - 8 >> 3) + 1; + iVar5 = uVar9 * 8; + if (6 < iVar12 - uVar16) { + uVar18 = 0; + puVar10 = (undefined8 *)(puVar25 + uVar16); + puVar17 = (undefined8 *)(puVar24 + uVar16); + do { + uVar29 = *puVar10; + uVar18 = uVar18 + 1; + puVar17[1] = puVar10[1]; + *puVar17 = uVar29; + puVar10 = puVar10 + 2; + puVar17 = puVar17 + 2; + } while (uVar18 < uVar9); + uVar14 = (ulong)(uint)((int)uVar14 + iVar5); + if (iVar5 == uVar15 - uVar16) goto LAB_002ffea4; + } + uVar11 = -(uVar14 >> 0x1f) & 0xfffffffe00000000 | uVar14 << 1; + iVar12 = (int)uVar14; + *(undefined2 *)((long)puVar24 + uVar11) = *(undefined2 *)((long)puVar25 + uVar11); + if ((((int)uVar6 <= iVar12 + 1) || + (*(undefined2 *)((long)puVar24 + uVar11 + 2) = + *(undefined2 *)((long)puVar25 + uVar11 + 2), (int)uVar6 <= iVar12 + 2)) || + ((*(undefined2 *)((long)puVar24 + uVar11 + 4) = + *(undefined2 *)((long)puVar25 + uVar11 + 4), (int)uVar6 <= iVar12 + 3 || + (((*(undefined2 *)((long)puVar24 + uVar11 + 6) = + *(undefined2 *)((long)puVar25 + uVar11 + 6), (int)uVar6 <= iVar12 + 4 || + (*(undefined2 *)((long)puVar24 + uVar11 + 8) = + *(undefined2 *)((long)puVar25 + uVar11 + 8), (int)uVar6 <= iVar12 + 5)) || + (*(undefined2 *)((long)puVar24 + uVar11 + 10) = + *(undefined2 *)((long)puVar25 + uVar11 + 10), (int)uVar6 <= iVar12 + 6)))))) + goto LAB_002ffea4; + *(undefined2 *)((long)puVar24 + uVar11 + 0xc) = + *(undefined2 *)((long)puVar25 + uVar11 + 0xc); + } + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + iVar23 = iVar23 + 1; + if (iVar23 == iVar26) { + return; + } + } + lVar20 = 0; + puVar21 = puVar25 + uVar22; + uVar14 = uVar22; + do { + uVar9 = (uint)(short)puVar25[lVar20]; + uVar16 = (uint)(short)puVar25[(long)(int)uVar8 + lVar20 + 1]; + uVar15 = uVar4; + if ((int)uVar4 <= iVar7) { + lVar19 = ((uVar14 + uVar1 * 3) - lVar20) - uVar22; + puVar13 = puVar21; + do { + uVar15 = uVar15 + uVar1 * 4; + uVar3 = puVar13[uVar14 - lVar20]; + if ((short)puVar13[uVar14 - lVar20] < (short)*puVar13) { + uVar3 = *puVar13; + } + uVar18 = (uint)uVar3; + if ((int)(short)uVar3 < (int)uVar9) { + uVar18 = uVar9; + } + uVar3 = puVar13[lVar19]; + if ((short)puVar13[lVar19] < + (short)puVar13[(((long)(int)uVar8 + 1 + uVar14) - lVar20) - uVar22]) { + uVar3 = puVar13[(((long)(int)uVar8 + 1 + uVar14) - lVar20) - uVar22]; + } + uVar2 = (uint)uVar3; + if ((int)(short)uVar3 < (int)uVar16) { + uVar2 = uVar16; + } + uVar9 = (uint)(short)uVar18; + uVar16 = (uint)(short)uVar2; + puVar13 = puVar13 + uVar1 * 4; + } while ((int)uVar15 <= iVar7); + } + if ((int)uVar15 < (int)uVar6) { + puVar13 = puVar25 + lVar20 + (int)uVar15; + do { + uVar3 = *puVar13; + uVar15 = uVar15 + uVar1; + puVar13 = puVar13 + (long)(int)uVar8 + 1; + uVar18 = (uint)uVar3; + if ((int)(short)uVar3 <= (int)uVar9) { + uVar18 = uVar9; + } + uVar9 = (uint)(short)uVar18; + } while ((int)uVar15 < (int)uVar6); + } + puVar21 = puVar21 + 1; + if ((int)uVar16 <= (int)uVar9) { + uVar16 = uVar9; + } + puVar24[lVar20] = (short)uVar16; + lVar20 = lVar20 + 1; + uVar14 = uVar14 + 1; + } while ((int)lVar20 < (int)uVar1); +LAB_002ffea4: + iVar23 = iVar23 + 1; + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + } while (iVar23 != iVar26); + } + return; +} + + +================================================================== + +### FUNC 00300110 (796 bytes) name=FUN_00300110 + +/* WARNING: Type propagation algorithm not settling */ + +void FUN_00300110(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + float *pfVar10; + uint uVar11; + uint uVar12; + ulong uVar13; + float *pfVar14; + undefined8 *puVar15; + undefined8 *puVar16; + long lVar17; + ulong uVar18; + uint uVar19; + float *pfVar20; + ulong uVar21; + int iVar22; + undefined4 *puVar23; + undefined4 *puVar24; + long lVar25; + long lVar26; + float fVar27; + undefined8 uVar28; + float fVar29; + float fVar30; + float fVar31; + + iVar5 = **(int **)(param_1 + 0x10); + uVar11 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar11 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar5 < 1) { + return; + } + uVar6 = uVar1 * 2; + uVar21 = (ulong)uVar6; + puVar24 = *(undefined4 **)(param_1 + 4); + puVar23 = *(undefined4 **)(param_2 + 0x10); + lVar26 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + lVar25 = **(long **)(param_2 + 0x48); + iVar22 = 0; + do { + while (uVar8 != uVar1) { + lVar17 = 0; + pfVar20 = (float *)(puVar24 + uVar21); + uVar18 = uVar21; + do { + fVar27 = (float)puVar24[lVar17]; + fVar29 = (float)puVar24[(long)(int)uVar11 + lVar17 + 1]; + uVar12 = uVar6; + if ((int)uVar6 <= iVar9) { + pfVar14 = pfVar20; + do { + uVar12 = uVar12 + uVar1 * 4; + fVar31 = *pfVar14; + if (*pfVar14 <= fVar27) { + fVar31 = fVar27; + } + fVar30 = pfVar14[(((long)(int)uVar11 + 1 + uVar18) - lVar17) - uVar21]; + if (pfVar14[(((long)(int)uVar11 + 1 + uVar18) - lVar17) - uVar21] <= fVar29) { + fVar30 = fVar29; + } + fVar27 = pfVar14[uVar18 - lVar17]; + if (pfVar14[uVar18 - lVar17] <= fVar31) { + fVar27 = fVar31; + } + pfVar10 = pfVar14 + (((uVar18 + uVar1 * 3) - lVar17) - uVar21); + pfVar14 = pfVar14 + uVar1 * 4; + fVar29 = *pfVar10; + if (*pfVar10 <= fVar30) { + fVar29 = fVar30; + } + } while ((int)uVar12 <= iVar9); + } + if ((int)uVar12 < (int)uVar8) { + pfVar14 = (float *)(puVar24 + lVar17 + (int)uVar12); + fVar31 = fVar27; + do { + fVar27 = *pfVar14; + uVar12 = uVar12 + uVar1; + pfVar14 = pfVar14 + (long)(int)uVar11 + 1; + if (fVar27 <= fVar31) { + fVar27 = fVar31; + } + fVar31 = fVar27; + } while ((int)uVar12 < (int)uVar8); + } + if (fVar29 <= fVar27) { + fVar29 = fVar27; + } + puVar23[lVar17] = fVar29; + lVar17 = lVar17 + 1; + pfVar20 = pfVar20 + 1; + uVar18 = uVar18 + 1; + } while ((int)lVar17 < (int)uVar1); +joined_r0x003003e4: + puVar23 = (undefined4 *)((long)puVar23 + lVar25); + puVar24 = (undefined4 *)((long)puVar24 + lVar26); + iVar22 = iVar22 + 1; + if (iVar22 == iVar5) { + return; + } + } + uVar12 = uVar8; + if ((int)uVar8 < 1) { + uVar12 = 1; + } + if ((puVar23 + 4 <= puVar24 || puVar24 + 4 <= puVar23) && (0xb < uVar12)) { + uVar3 = -((uint)((ulong)puVar24 >> 2) & 3) & 3; + if (uVar12 < uVar3) { + uVar3 = uVar12; + } + if ((uVar3 == 0) || (*puVar23 = *puVar24, uVar3 == 1)) { + uVar18 = (ulong)uVar3; + } + else { + puVar23[1] = puVar24[1]; + if (uVar3 == 3) { + uVar18 = 3; + puVar23[2] = puVar24[2]; + } + else { + uVar18 = 2; + } + } + iVar4 = uVar8 - 1; + if ((int)uVar8 < 1) { + iVar4 = 0; + } + uVar2 = ((uVar12 - uVar3) - 4 >> 2) + 1; + iVar7 = uVar2 * 4; + if (2 < iVar4 - uVar3) { + uVar19 = 0; + puVar15 = (undefined8 *)(puVar24 + uVar3); + puVar16 = (undefined8 *)(puVar23 + uVar3); + do { + uVar28 = *puVar15; + uVar19 = uVar19 + 1; + puVar16[1] = puVar15[1]; + *puVar16 = uVar28; + puVar15 = puVar15 + 2; + puVar16 = puVar16 + 2; + } while (uVar19 < uVar2); + uVar18 = (ulong)(uint)((int)uVar18 + iVar7); + if (iVar7 == uVar12 - uVar3) goto joined_r0x003003e4; + } + uVar13 = -(uVar18 >> 0x1f) & 0xfffffffc00000000 | uVar18 << 2; + *(undefined4 *)((long)puVar23 + uVar13) = *(undefined4 *)((long)puVar24 + uVar13); + if (((int)uVar18 + 1 < (int)uVar8) && + (*(undefined4 *)((long)puVar23 + uVar13 + 4) = *(undefined4 *)((long)puVar24 + uVar13 + 4), + (int)uVar18 + 2 < (int)uVar8)) { + *(undefined4 *)((long)puVar23 + uVar13 + 8) = *(undefined4 *)((long)puVar24 + uVar13 + 8); + } + goto joined_r0x003003e4; + } + lVar17 = 0; + do { + puVar23[lVar17] = puVar24[lVar17]; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar8); + iVar22 = iVar22 + 1; + puVar23 = (undefined4 *)((long)puVar23 + lVar25); + puVar24 = (undefined4 *)((long)puVar24 + lVar26); + if (iVar22 == iVar5) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 0030042c (696 bytes) name=FUN_0030042c + +/* WARNING: Type propagation algorithm not settling */ + +void FUN_0030042c(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + bool bVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + double *pdVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + double *pdVar14; + undefined8 *puVar15; + uint uVar16; + ulong uVar17; + long lVar18; + double *pdVar19; + ulong uVar20; + int iVar21; + undefined8 *puVar22; + undefined8 *puVar23; + long lVar24; + long lVar25; + double dVar26; + undefined8 uVar27; + double dVar28; + double dVar29; + double dVar30; + + iVar5 = **(int **)(param_1 + 0x10); + uVar11 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar11 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar5 < 1) { + return; + } + uVar6 = uVar1 * 2; + uVar20 = (ulong)uVar6; + puVar23 = *(undefined8 **)(param_1 + 4); + puVar22 = *(undefined8 **)(param_2 + 0x10); + lVar25 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + lVar24 = **(long **)(param_2 + 0x48); + iVar21 = 0; + do { + while (uVar8 != uVar1) { + lVar18 = 0; + pdVar19 = (double *)(puVar23 + uVar20); + uVar17 = uVar20; + do { + dVar26 = (double)puVar23[lVar18]; + dVar28 = (double)puVar23[(long)(int)uVar11 + lVar18 + 1]; + uVar12 = uVar6; + if ((int)uVar6 <= iVar9) { + pdVar14 = pdVar19; + do { + uVar12 = uVar12 + uVar1 * 4; + dVar30 = *pdVar14; + if (*pdVar14 <= dVar26) { + dVar30 = dVar26; + } + dVar29 = pdVar14[(((long)(int)uVar11 + 1 + uVar17) - lVar18) - uVar20]; + if (pdVar14[(((long)(int)uVar11 + 1 + uVar17) - lVar18) - uVar20] <= dVar28) { + dVar29 = dVar28; + } + dVar26 = pdVar14[uVar17 - lVar18]; + if (pdVar14[uVar17 - lVar18] <= dVar30) { + dVar26 = dVar30; + } + pdVar10 = pdVar14 + (((uVar17 + uVar1 * 3) - lVar18) - uVar20); + pdVar14 = pdVar14 + uVar1 * 4; + dVar28 = *pdVar10; + if (*pdVar10 <= dVar29) { + dVar28 = dVar29; + } + } while ((int)uVar12 <= iVar9); + } + if ((int)uVar12 < (int)uVar8) { + pdVar14 = (double *)(puVar23 + lVar18 + (int)uVar12); + do { + dVar30 = *pdVar14; + uVar12 = uVar12 + uVar1; + pdVar14 = pdVar14 + (long)(int)uVar11 + 1; + if (dVar30 <= dVar26) { + dVar30 = dVar26; + } + dVar26 = dVar30; + } while ((int)uVar12 < (int)uVar8); + } + if (dVar28 <= dVar26) { + dVar28 = dVar26; + } + puVar22[lVar18] = dVar28; + lVar18 = lVar18 + 1; + pdVar19 = pdVar19 + 1; + uVar17 = uVar17 + 1; + } while ((int)lVar18 < (int)uVar1); +joined_r0x003006a4: + puVar22 = (undefined8 *)((long)puVar22 + lVar24); + puVar23 = (undefined8 *)((long)puVar23 + lVar25); + iVar21 = iVar21 + 1; + if (iVar21 == iVar5) { + return; + } + } + uVar12 = uVar8; + if ((int)uVar8 < 1) { + uVar12 = 1; + } + if ((puVar22 + 2 <= puVar23 || puVar23 + 2 <= puVar22) && (0xd < uVar12)) { + uVar4 = (uint)((ulong)puVar23 >> 3) & 1; + if (uVar12 < uVar4) { + uVar4 = uVar12; + } + bVar3 = uVar4 != 0; + if (bVar3) { + *puVar22 = *puVar23; + } + uVar17 = (ulong)bVar3; + uVar16 = uVar8 - 1; + if ((int)uVar8 < 1) { + uVar16 = 0; + } + uVar2 = ((uVar12 - uVar4) - 2 >> 1) + 1; + iVar7 = uVar2 * 2; + if (uVar16 != uVar4) { + uVar16 = 0; + puVar13 = puVar23 + uVar4; + puVar15 = puVar22 + uVar4; + do { + uVar27 = *puVar13; + uVar16 = uVar16 + 1; + puVar15[1] = puVar13[1]; + *puVar15 = uVar27; + puVar13 = puVar13 + 2; + puVar15 = puVar15 + 2; + } while (uVar16 < uVar2); + uVar17 = (ulong)((uint)bVar3 + iVar7); + if (iVar7 == uVar12 - uVar4) goto joined_r0x003006a4; + } + uVar17 = -(uVar17 >> 0x1f) & 0xfffffff800000000 | uVar17 << 3; + *(undefined8 *)((long)puVar22 + uVar17) = *(undefined8 *)((long)puVar23 + uVar17); + goto joined_r0x003006a4; + } + lVar18 = 0; + do { + puVar22[lVar18] = puVar23[lVar18]; + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)uVar8); + iVar21 = iVar21 + 1; + puVar22 = (undefined8 *)((long)puVar22 + lVar24); + puVar23 = (undefined8 *)((long)puVar23 + lVar25); + if (iVar21 == iVar5) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 003006e4 (1216 bytes) name=FUN_003006e4 + +void FUN_003006e4(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + ulong uVar3; + ulong uVar4; + uint uVar5; + int iVar6; + int iVar7; + byte bVar8; + uint uVar9; + int iVar10; + uint uVar11; + int iVar12; + byte bVar13; + long lVar14; + undefined8 *puVar15; + uint uVar16; + long lVar17; + undefined8 *puVar18; + uint uVar19; + byte *pbVar20; + uint uVar21; + long lVar22; + byte bVar23; + long lVar24; + long lVar25; + long lVar26; + ulong uVar27; + long lVar28; + undefined8 uVar29; + + uVar1 = (*param_1 >> 3 & 0x1ff) + 1; + iVar7 = **(int **)(param_1 + 0x10); + uVar11 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar7) { + uVar9 = uVar1 * 2; + uVar27 = (ulong)uVar9; + iVar12 = uVar11 + uVar1 * -4; + lVar28 = 0; + lVar25 = (long)(int)uVar1; + do { + while( true ) { + lVar26 = 0; + lVar22 = *(long *)(param_1 + 4); + lVar24 = *(long *)(param_2 + 0x10); + lVar14 = lVar28 * **(long **)(param_1 + 0x12); + lVar17 = lVar28 * **(long **)(param_2 + 0x48); + uVar3 = lVar22 + lVar14; + uVar4 = lVar24 + lVar17; + if (uVar11 == uVar1) break; + do { + bVar13 = *(byte *)(uVar3 + lVar26); + bVar23 = *(byte *)(uVar3 + lVar25 + lVar26); + uVar16 = uVar9; + if ((int)uVar9 <= iVar12) { + pbVar20 = (byte *)(uVar3 + lVar26 + (ulong)uVar9 * 2); + do { + uVar16 = uVar16 + uVar1 * 4; + bVar8 = pbVar20[-uVar27]; + if (*pbVar20 < pbVar20[-uVar27]) { + bVar8 = *pbVar20; + } + if (bVar13 < bVar8) { + bVar8 = bVar13; + } + bVar13 = bVar8; + bVar8 = pbVar20[uVar1 * 3 - uVar27]; + if (pbVar20[lVar25 - uVar27] < pbVar20[uVar1 * 3 - uVar27]) { + bVar8 = pbVar20[lVar25 - uVar27]; + } + if (bVar23 < bVar8) { + bVar8 = bVar23; + } + bVar23 = bVar8; + pbVar20 = pbVar20 + uVar1 * 4; + } while ((int)uVar16 <= iVar12); + } + if ((int)uVar16 < (int)uVar11) { + pbVar20 = (byte *)(uVar3 + lVar26 + (int)uVar16); + do { + bVar8 = *pbVar20; + uVar16 = uVar16 + uVar1; + pbVar20 = pbVar20 + lVar25; + if (bVar13 <= bVar8) { + bVar8 = bVar13; + } + bVar13 = bVar8; + } while ((int)uVar16 < (int)uVar11); + } + if (bVar13 <= bVar23) { + bVar23 = bVar13; + } + *(byte *)(uVar4 + lVar26) = bVar23; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar1); +joined_r0x00300b8c: + iVar6 = (int)lVar28; + lVar28 = lVar28 + 1; + if (iVar7 <= iVar6 + 1) { + return; + } + } + uVar16 = uVar11; + if ((int)uVar11 < 1) { + uVar16 = 1; + } + if ((uVar3 < (ulong)(lVar24 + lVar17 + 0x10) && uVar4 < (ulong)(lVar22 + lVar14 + 0x10)) || + (uVar16 < 0x16)) { + lVar26 = 0; + do { + *(undefined1 *)(uVar4 + lVar26) = *(undefined1 *)(uVar3 + lVar26); + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar11); + goto joined_r0x00300b8c; + } + uVar21 = -(int)uVar3 & 0xf; + uVar5 = uVar16; + if (uVar21 < uVar16) { + uVar5 = uVar21; + } + uVar21 = uVar5; + if ((((uVar5 != 0) && + (*(undefined1 *)(lVar24 + lVar17) = *(undefined1 *)(lVar22 + lVar14), uVar5 != 1)) && + (*(undefined1 *)(uVar4 + 1) = *(undefined1 *)(uVar3 + 1), uVar5 != 2)) && + (((*(undefined1 *)(uVar4 + 2) = *(undefined1 *)(uVar3 + 2), uVar5 != 3 && + (*(undefined1 *)(uVar4 + 3) = *(undefined1 *)(uVar3 + 3), uVar5 != 4)) && + (*(undefined1 *)(uVar4 + 4) = *(undefined1 *)(uVar3 + 4), uVar5 != 5)))) { + *(undefined1 *)(uVar4 + 5) = *(undefined1 *)(uVar3 + 5); + if (uVar5 == 6) { + uVar21 = 6; + } + else { + *(undefined1 *)(uVar4 + 6) = *(undefined1 *)(uVar3 + 6); + if (((uVar5 != 7) && (*(undefined1 *)(uVar4 + 7) = *(undefined1 *)(uVar3 + 7), uVar5 != 8) + ) && (((*(undefined1 *)(uVar4 + 8) = *(undefined1 *)(uVar3 + 8), uVar5 != 9 && + (((*(undefined1 *)(uVar4 + 9) = *(undefined1 *)(uVar3 + 9), uVar5 != 10 && + (*(undefined1 *)(uVar4 + 10) = *(undefined1 *)(uVar3 + 10), uVar5 != 0xb)) && + (*(undefined1 *)(uVar4 + 0xb) = *(undefined1 *)(uVar3 + 0xb), uVar5 != 0xc)))) + && (*(undefined1 *)(uVar4 + 0xc) = *(undefined1 *)(uVar3 + 0xc), uVar5 != 0xd))) + ) { + *(undefined1 *)(uVar4 + 0xd) = *(undefined1 *)(uVar3 + 0xd); + if (uVar5 == 0xf) { + *(undefined1 *)(uVar4 + 0xe) = *(undefined1 *)(uVar3 + 0xe); + } + else { + uVar21 = 0xe; + } + } + } + } + iVar6 = uVar11 - 1; + if ((int)uVar11 < 1) { + iVar6 = 0; + } + uVar2 = ((uVar16 - uVar5) - 0x10 >> 4) + 1; + iVar10 = uVar2 * 0x10; + if (0xe < iVar6 - uVar5) { + uVar19 = 0; + puVar15 = (undefined8 *)(lVar22 + (ulong)uVar5 + lVar14); + puVar18 = (undefined8 *)(lVar24 + (ulong)uVar5 + lVar17); + do { + uVar29 = *puVar15; + uVar19 = uVar19 + 1; + puVar18[1] = puVar15[1]; + *puVar18 = uVar29; + puVar15 = puVar15 + 2; + puVar18 = puVar18 + 2; + } while (uVar19 < uVar2); + uVar21 = uVar21 + iVar10; + if (iVar10 == uVar16 - uVar5) goto joined_r0x00300b8c; + } + iVar6 = uVar21 + 1; + *(undefined1 *)(uVar4 + (long)(int)uVar21) = *(undefined1 *)(uVar3 + (long)(int)uVar21); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 2; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + iVar6 = uVar21 + 3; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 4; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + iVar6 = uVar21 + 5; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 6; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + iVar6 = uVar21 + 7; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 8; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + iVar6 = uVar21 + 9; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 10; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + iVar6 = uVar21 + 0xb; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 0xc; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + iVar6 = uVar21 + 0xd; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + if ((int)uVar11 <= iVar6) goto joined_r0x00300b8c; + iVar10 = uVar21 + 0xe; + *(undefined1 *)(uVar4 + (long)iVar6) = *(undefined1 *)(uVar3 + (long)iVar6); + if ((int)uVar11 <= iVar10) goto joined_r0x00300b8c; + lVar28 = lVar28 + 1; + *(undefined1 *)(uVar4 + (long)iVar10) = *(undefined1 *)(uVar3 + (long)iVar10); + } while ((int)lVar28 < iVar7); + } + return; +} + + +================================================================== + +### FUNC 00300ba4 (1000 bytes) name=FUN_00300ba4 + +void FUN_00300ba4(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + ushort uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + ushort uVar10; + undefined8 *puVar11; + ulong uVar12; + uint uVar13; + int iVar14; + ulong uVar15; + ushort *puVar16; + undefined8 *puVar17; + ushort uVar18; + uint uVar19; + long lVar20; + ushort *puVar21; + ulong uVar22; + int iVar23; + undefined2 *puVar24; + undefined2 *puVar25; + int iVar26; + long lVar27; + long lVar28; + undefined8 uVar29; + + iVar26 = **(int **)(param_1 + 0x10); + uVar9 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar9 + 1; + uVar7 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar26) { + uVar5 = uVar1 * 2; + uVar22 = (ulong)uVar5; + puVar25 = *(undefined2 **)(param_1 + 4); + puVar24 = *(undefined2 **)(param_2 + 0x10); + lVar28 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar8 = uVar7 + uVar1 * -4; + iVar23 = 0; + do { + while (uVar7 == uVar1) { + uVar13 = uVar7; + if ((int)uVar7 < 1) { + uVar13 = 1; + } + if ((puVar25 < puVar24 + 8 && puVar24 < puVar25 + 8) || (uVar13 < 0xf)) { + lVar20 = 0; + do { + puVar24[lVar20] = puVar25[lVar20]; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar7); + } + else { + uVar3 = -((uint)((ulong)puVar25 >> 1) & 7) & 7; + if (uVar13 < uVar3) { + uVar3 = uVar13; + } + if ((((uVar3 == 0) || (*puVar24 = *puVar25, uVar3 == 1)) || + (puVar24[1] = puVar25[1], uVar3 == 2)) || + (((puVar24[2] = puVar25[2], uVar3 == 3 || (puVar24[3] = puVar25[3], uVar3 == 4)) || + (puVar24[4] = puVar25[4], uVar3 == 5)))) { + uVar15 = (ulong)uVar3; + } + else { + puVar24[5] = puVar25[5]; + if (uVar3 == 7) { + uVar15 = 7; + puVar24[6] = puVar25[6]; + } + else { + uVar15 = 6; + } + } + iVar14 = uVar7 - 1; + if ((int)uVar7 < 1) { + iVar14 = 0; + } + uVar2 = ((uVar13 - uVar3) - 8 >> 3) + 1; + iVar6 = uVar2 * 8; + if (6 < iVar14 - uVar3) { + uVar19 = 0; + puVar11 = (undefined8 *)(puVar25 + uVar3); + puVar17 = (undefined8 *)(puVar24 + uVar3); + do { + uVar29 = *puVar11; + uVar19 = uVar19 + 1; + puVar17[1] = puVar11[1]; + *puVar17 = uVar29; + puVar11 = puVar11 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar15 = (ulong)(uint)((int)uVar15 + iVar6); + if (iVar6 == uVar13 - uVar3) goto LAB_00300d20; + } + uVar12 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + iVar14 = (int)uVar15; + *(undefined2 *)((long)puVar24 + uVar12) = *(undefined2 *)((long)puVar25 + uVar12); + if ((((int)uVar7 <= iVar14 + 1) || + (*(undefined2 *)((long)puVar24 + uVar12 + 2) = + *(undefined2 *)((long)puVar25 + uVar12 + 2), (int)uVar7 <= iVar14 + 2)) || + ((*(undefined2 *)((long)puVar24 + uVar12 + 4) = + *(undefined2 *)((long)puVar25 + uVar12 + 4), (int)uVar7 <= iVar14 + 3 || + (((*(undefined2 *)((long)puVar24 + uVar12 + 6) = + *(undefined2 *)((long)puVar25 + uVar12 + 6), (int)uVar7 <= iVar14 + 4 || + (*(undefined2 *)((long)puVar24 + uVar12 + 8) = + *(undefined2 *)((long)puVar25 + uVar12 + 8), (int)uVar7 <= iVar14 + 5)) || + (*(undefined2 *)((long)puVar24 + uVar12 + 10) = + *(undefined2 *)((long)puVar25 + uVar12 + 10), (int)uVar7 <= iVar14 + 6)))))) + goto LAB_00300d20; + *(undefined2 *)((long)puVar24 + uVar12 + 0xc) = + *(undefined2 *)((long)puVar25 + uVar12 + 0xc); + } + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + iVar23 = iVar23 + 1; + if (iVar23 == iVar26) { + return; + } + } + lVar20 = 0; + puVar21 = puVar25 + uVar22; + uVar15 = uVar22; + do { + uVar10 = puVar25[lVar20]; + uVar18 = puVar25[(long)(int)uVar9 + lVar20 + 1]; + uVar13 = uVar5; + if ((int)uVar5 <= iVar8) { + puVar16 = puVar21; + do { + uVar13 = uVar13 + uVar1 * 4; + uVar4 = puVar16[uVar15 - lVar20]; + if (*puVar16 < puVar16[uVar15 - lVar20]) { + uVar4 = *puVar16; + } + if (uVar10 < uVar4) { + uVar4 = uVar10; + } + uVar10 = uVar4; + uVar4 = puVar16[((uVar15 + uVar1 * 3) - lVar20) - uVar22]; + if (puVar16[(((long)(int)uVar9 + 1 + uVar15) - lVar20) - uVar22] < + puVar16[((uVar15 + uVar1 * 3) - lVar20) - uVar22]) { + uVar4 = puVar16[(((long)(int)uVar9 + 1 + uVar15) - lVar20) - uVar22]; + } + if (uVar18 < uVar4) { + uVar4 = uVar18; + } + uVar18 = uVar4; + puVar16 = puVar16 + uVar1 * 4; + } while ((int)uVar13 <= iVar8); + } + if ((int)uVar13 < (int)uVar7) { + puVar16 = puVar25 + lVar20 + (int)uVar13; + do { + uVar4 = *puVar16; + uVar13 = uVar13 + uVar1; + puVar16 = puVar16 + (long)(int)uVar9 + 1; + if (uVar10 <= uVar4) { + uVar4 = uVar10; + } + uVar10 = uVar4; + } while ((int)uVar13 < (int)uVar7); + } + puVar21 = puVar21 + 1; + if (uVar10 <= uVar18) { + uVar18 = uVar10; + } + puVar24[lVar20] = uVar18; + lVar20 = lVar20 + 1; + uVar15 = uVar15 + 1; + } while ((int)lVar20 < (int)uVar1); +LAB_00300d20: + iVar23 = iVar23 + 1; + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + } while (iVar23 != iVar26); + } + return; +} + + +================================================================== + +### FUNC 00300f8c (1008 bytes) name=FUN_00300f8c + +void FUN_00300f8c(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + ushort uVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + undefined8 *puVar10; + ulong uVar11; + int iVar12; + ushort *puVar13; + ulong uVar14; + uint uVar15; + uint uVar16; + undefined8 *puVar17; + uint uVar18; + long lVar19; + long lVar20; + ushort *puVar21; + ulong uVar22; + int iVar23; + undefined2 *puVar24; + undefined2 *puVar25; + int iVar26; + long lVar27; + long lVar28; + undefined8 uVar29; + + iVar26 = **(int **)(param_1 + 0x10); + uVar8 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar8 + 1; + uVar6 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (0 < iVar26) { + uVar4 = uVar1 * 2; + uVar22 = (ulong)uVar4; + puVar25 = *(undefined2 **)(param_1 + 4); + puVar24 = *(undefined2 **)(param_2 + 0x10); + lVar28 = **(long **)(param_1 + 0x12); + lVar27 = **(long **)(param_2 + 0x48); + iVar7 = uVar6 + uVar1 * -4; + iVar23 = 0; + do { + while (uVar6 == uVar1) { + uVar15 = uVar6; + if ((int)uVar6 < 1) { + uVar15 = 1; + } + if ((puVar25 < puVar24 + 8 && puVar24 < puVar25 + 8) || (uVar15 < 0xf)) { + lVar20 = 0; + do { + puVar24[lVar20] = puVar25[lVar20]; + lVar20 = lVar20 + 1; + } while ((int)lVar20 < (int)uVar6); + } + else { + uVar16 = -((uint)((ulong)puVar25 >> 1) & 7) & 7; + if (uVar15 < uVar16) { + uVar16 = uVar15; + } + if ((((uVar16 == 0) || (*puVar24 = *puVar25, uVar16 == 1)) || + (puVar24[1] = puVar25[1], uVar16 == 2)) || + (((puVar24[2] = puVar25[2], uVar16 == 3 || (puVar24[3] = puVar25[3], uVar16 == 4)) || + (puVar24[4] = puVar25[4], uVar16 == 5)))) { + uVar14 = (ulong)uVar16; + } + else { + puVar24[5] = puVar25[5]; + if (uVar16 == 7) { + uVar14 = 7; + puVar24[6] = puVar25[6]; + } + else { + uVar14 = 6; + } + } + iVar12 = uVar6 - 1; + if ((int)uVar6 < 1) { + iVar12 = 0; + } + uVar9 = ((uVar15 - uVar16) - 8 >> 3) + 1; + iVar5 = uVar9 * 8; + if (6 < iVar12 - uVar16) { + uVar18 = 0; + puVar10 = (undefined8 *)(puVar25 + uVar16); + puVar17 = (undefined8 *)(puVar24 + uVar16); + do { + uVar29 = *puVar10; + uVar18 = uVar18 + 1; + puVar17[1] = puVar10[1]; + *puVar17 = uVar29; + puVar10 = puVar10 + 2; + puVar17 = puVar17 + 2; + } while (uVar18 < uVar9); + uVar14 = (ulong)(uint)((int)uVar14 + iVar5); + if (iVar5 == uVar15 - uVar16) goto LAB_00301110; + } + uVar11 = -(uVar14 >> 0x1f) & 0xfffffffe00000000 | uVar14 << 1; + iVar12 = (int)uVar14; + *(undefined2 *)((long)puVar24 + uVar11) = *(undefined2 *)((long)puVar25 + uVar11); + if ((((int)uVar6 <= iVar12 + 1) || + (*(undefined2 *)((long)puVar24 + uVar11 + 2) = + *(undefined2 *)((long)puVar25 + uVar11 + 2), (int)uVar6 <= iVar12 + 2)) || + ((*(undefined2 *)((long)puVar24 + uVar11 + 4) = + *(undefined2 *)((long)puVar25 + uVar11 + 4), (int)uVar6 <= iVar12 + 3 || + (((*(undefined2 *)((long)puVar24 + uVar11 + 6) = + *(undefined2 *)((long)puVar25 + uVar11 + 6), (int)uVar6 <= iVar12 + 4 || + (*(undefined2 *)((long)puVar24 + uVar11 + 8) = + *(undefined2 *)((long)puVar25 + uVar11 + 8), (int)uVar6 <= iVar12 + 5)) || + (*(undefined2 *)((long)puVar24 + uVar11 + 10) = + *(undefined2 *)((long)puVar25 + uVar11 + 10), (int)uVar6 <= iVar12 + 6)))))) + goto LAB_00301110; + *(undefined2 *)((long)puVar24 + uVar11 + 0xc) = + *(undefined2 *)((long)puVar25 + uVar11 + 0xc); + } + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + iVar23 = iVar23 + 1; + if (iVar23 == iVar26) { + return; + } + } + lVar20 = 0; + puVar21 = puVar25 + uVar22; + uVar14 = uVar22; + do { + uVar9 = (uint)(short)puVar25[lVar20]; + uVar16 = (uint)(short)puVar25[(long)(int)uVar8 + lVar20 + 1]; + uVar15 = uVar4; + if ((int)uVar4 <= iVar7) { + lVar19 = ((uVar14 + uVar1 * 3) - lVar20) - uVar22; + puVar13 = puVar21; + do { + uVar15 = uVar15 + uVar1 * 4; + uVar3 = puVar13[uVar14 - lVar20]; + if ((short)*puVar13 < (short)puVar13[uVar14 - lVar20]) { + uVar3 = *puVar13; + } + uVar18 = (uint)uVar3; + if ((int)uVar9 < (int)(short)uVar3) { + uVar18 = uVar9; + } + uVar3 = puVar13[lVar19]; + if ((short)puVar13[(((long)(int)uVar8 + 1 + uVar14) - lVar20) - uVar22] < + (short)puVar13[lVar19]) { + uVar3 = puVar13[(((long)(int)uVar8 + 1 + uVar14) - lVar20) - uVar22]; + } + uVar2 = (uint)uVar3; + if ((int)uVar16 < (int)(short)uVar3) { + uVar2 = uVar16; + } + uVar9 = (uint)(short)uVar18; + uVar16 = (uint)(short)uVar2; + puVar13 = puVar13 + uVar1 * 4; + } while ((int)uVar15 <= iVar7); + } + if ((int)uVar15 < (int)uVar6) { + puVar13 = puVar25 + lVar20 + (int)uVar15; + do { + uVar3 = *puVar13; + uVar15 = uVar15 + uVar1; + puVar13 = puVar13 + (long)(int)uVar8 + 1; + uVar18 = (uint)uVar3; + if ((int)uVar9 <= (int)(short)uVar3) { + uVar18 = uVar9; + } + uVar9 = (uint)(short)uVar18; + } while ((int)uVar15 < (int)uVar6); + } + puVar21 = puVar21 + 1; + if ((int)uVar9 <= (int)uVar16) { + uVar16 = uVar9; + } + puVar24[lVar20] = (short)uVar16; + lVar20 = lVar20 + 1; + uVar14 = uVar14 + 1; + } while ((int)lVar20 < (int)uVar1); +LAB_00301110: + iVar23 = iVar23 + 1; + puVar24 = (undefined2 *)((long)puVar24 + lVar27); + puVar25 = (undefined2 *)((long)puVar25 + lVar28); + } while (iVar23 != iVar26); + } + return; +} + + +================================================================== + +### FUNC 0030137c (796 bytes) name=FUN_0030137c + +/* WARNING: Type propagation algorithm not settling */ + +void FUN_0030137c(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + float *pfVar10; + uint uVar11; + uint uVar12; + ulong uVar13; + float *pfVar14; + undefined8 *puVar15; + undefined8 *puVar16; + long lVar17; + ulong uVar18; + uint uVar19; + float *pfVar20; + ulong uVar21; + int iVar22; + undefined4 *puVar23; + undefined4 *puVar24; + long lVar25; + long lVar26; + float fVar27; + undefined8 uVar28; + float fVar29; + float fVar30; + float fVar31; + + iVar5 = **(int **)(param_1 + 0x10); + uVar11 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar11 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar5 < 1) { + return; + } + uVar6 = uVar1 * 2; + uVar21 = (ulong)uVar6; + puVar24 = *(undefined4 **)(param_1 + 4); + puVar23 = *(undefined4 **)(param_2 + 0x10); + lVar26 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + lVar25 = **(long **)(param_2 + 0x48); + iVar22 = 0; + do { + while (uVar8 != uVar1) { + lVar17 = 0; + pfVar20 = (float *)(puVar24 + uVar21); + uVar18 = uVar21; + do { + fVar27 = (float)puVar24[lVar17]; + fVar29 = (float)puVar24[(long)(int)uVar11 + lVar17 + 1]; + uVar12 = uVar6; + if ((int)uVar6 <= iVar9) { + pfVar14 = pfVar20; + do { + uVar12 = uVar12 + uVar1 * 4; + fVar31 = *pfVar14; + if (fVar27 <= *pfVar14) { + fVar31 = fVar27; + } + fVar30 = pfVar14[(((long)(int)uVar11 + 1 + uVar18) - lVar17) - uVar21]; + if (fVar29 <= pfVar14[(((long)(int)uVar11 + 1 + uVar18) - lVar17) - uVar21]) { + fVar30 = fVar29; + } + fVar27 = pfVar14[uVar18 - lVar17]; + if (fVar31 <= pfVar14[uVar18 - lVar17]) { + fVar27 = fVar31; + } + pfVar10 = pfVar14 + (((uVar18 + uVar1 * 3) - lVar17) - uVar21); + pfVar14 = pfVar14 + uVar1 * 4; + fVar29 = *pfVar10; + if (fVar30 <= *pfVar10) { + fVar29 = fVar30; + } + } while ((int)uVar12 <= iVar9); + } + if ((int)uVar12 < (int)uVar8) { + pfVar14 = (float *)(puVar24 + lVar17 + (int)uVar12); + fVar31 = fVar27; + do { + fVar27 = *pfVar14; + uVar12 = uVar12 + uVar1; + pfVar14 = pfVar14 + (long)(int)uVar11 + 1; + if (fVar31 <= fVar27) { + fVar27 = fVar31; + } + fVar31 = fVar27; + } while ((int)uVar12 < (int)uVar8); + } + if (fVar27 <= fVar29) { + fVar29 = fVar27; + } + puVar23[lVar17] = fVar29; + lVar17 = lVar17 + 1; + pfVar20 = pfVar20 + 1; + uVar18 = uVar18 + 1; + } while ((int)lVar17 < (int)uVar1); +joined_r0x00301650: + puVar23 = (undefined4 *)((long)puVar23 + lVar25); + puVar24 = (undefined4 *)((long)puVar24 + lVar26); + iVar22 = iVar22 + 1; + if (iVar22 == iVar5) { + return; + } + } + uVar12 = uVar8; + if ((int)uVar8 < 1) { + uVar12 = 1; + } + if ((puVar23 + 4 <= puVar24 || puVar24 + 4 <= puVar23) && (0xb < uVar12)) { + uVar3 = -((uint)((ulong)puVar24 >> 2) & 3) & 3; + if (uVar12 < uVar3) { + uVar3 = uVar12; + } + if ((uVar3 == 0) || (*puVar23 = *puVar24, uVar3 == 1)) { + uVar18 = (ulong)uVar3; + } + else { + puVar23[1] = puVar24[1]; + if (uVar3 == 3) { + uVar18 = 3; + puVar23[2] = puVar24[2]; + } + else { + uVar18 = 2; + } + } + iVar4 = uVar8 - 1; + if ((int)uVar8 < 1) { + iVar4 = 0; + } + uVar2 = ((uVar12 - uVar3) - 4 >> 2) + 1; + iVar7 = uVar2 * 4; + if (2 < iVar4 - uVar3) { + uVar19 = 0; + puVar15 = (undefined8 *)(puVar24 + uVar3); + puVar16 = (undefined8 *)(puVar23 + uVar3); + do { + uVar28 = *puVar15; + uVar19 = uVar19 + 1; + puVar16[1] = puVar15[1]; + *puVar16 = uVar28; + puVar15 = puVar15 + 2; + puVar16 = puVar16 + 2; + } while (uVar19 < uVar2); + uVar18 = (ulong)(uint)((int)uVar18 + iVar7); + if (iVar7 == uVar12 - uVar3) goto joined_r0x00301650; + } + uVar13 = -(uVar18 >> 0x1f) & 0xfffffffc00000000 | uVar18 << 2; + *(undefined4 *)((long)puVar23 + uVar13) = *(undefined4 *)((long)puVar24 + uVar13); + if (((int)uVar18 + 1 < (int)uVar8) && + (*(undefined4 *)((long)puVar23 + uVar13 + 4) = *(undefined4 *)((long)puVar24 + uVar13 + 4), + (int)uVar18 + 2 < (int)uVar8)) { + *(undefined4 *)((long)puVar23 + uVar13 + 8) = *(undefined4 *)((long)puVar24 + uVar13 + 8); + } + goto joined_r0x00301650; + } + lVar17 = 0; + do { + puVar23[lVar17] = puVar24[lVar17]; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar8); + iVar22 = iVar22 + 1; + puVar23 = (undefined4 *)((long)puVar23 + lVar25); + puVar24 = (undefined4 *)((long)puVar24 + lVar26); + if (iVar22 == iVar5) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 00301698 (696 bytes) name=FUN_00301698 + +/* WARNING: Type propagation algorithm not settling */ + +void FUN_00301698(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + bool bVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + double *pdVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + double *pdVar14; + undefined8 *puVar15; + uint uVar16; + ulong uVar17; + long lVar18; + double *pdVar19; + ulong uVar20; + int iVar21; + undefined8 *puVar22; + undefined8 *puVar23; + long lVar24; + long lVar25; + double dVar26; + undefined8 uVar27; + double dVar28; + double dVar29; + double dVar30; + + iVar5 = **(int **)(param_1 + 0x10); + uVar11 = *param_1 >> 3 & 0x1ff; + uVar1 = uVar11 + 1; + uVar8 = uVar1 * (*(int **)(param_1 + 0x10))[1]; + if (iVar5 < 1) { + return; + } + uVar6 = uVar1 * 2; + uVar20 = (ulong)uVar6; + puVar23 = *(undefined8 **)(param_1 + 4); + puVar22 = *(undefined8 **)(param_2 + 0x10); + lVar25 = **(long **)(param_1 + 0x12); + iVar9 = uVar8 + uVar1 * -4; + lVar24 = **(long **)(param_2 + 0x48); + iVar21 = 0; + do { + while (uVar8 != uVar1) { + lVar18 = 0; + pdVar19 = (double *)(puVar23 + uVar20); + uVar17 = uVar20; + do { + dVar26 = (double)puVar23[lVar18]; + dVar28 = (double)puVar23[(long)(int)uVar11 + lVar18 + 1]; + uVar12 = uVar6; + if ((int)uVar6 <= iVar9) { + pdVar14 = pdVar19; + do { + uVar12 = uVar12 + uVar1 * 4; + dVar30 = *pdVar14; + if (dVar26 <= *pdVar14) { + dVar30 = dVar26; + } + dVar29 = pdVar14[(((long)(int)uVar11 + 1 + uVar17) - lVar18) - uVar20]; + if (dVar28 <= pdVar14[(((long)(int)uVar11 + 1 + uVar17) - lVar18) - uVar20]) { + dVar29 = dVar28; + } + dVar26 = pdVar14[uVar17 - lVar18]; + if (dVar30 <= pdVar14[uVar17 - lVar18]) { + dVar26 = dVar30; + } + pdVar10 = pdVar14 + (((uVar17 + uVar1 * 3) - lVar18) - uVar20); + pdVar14 = pdVar14 + uVar1 * 4; + dVar28 = *pdVar10; + if (dVar29 <= *pdVar10) { + dVar28 = dVar29; + } + } while ((int)uVar12 <= iVar9); + } + if ((int)uVar12 < (int)uVar8) { + pdVar14 = (double *)(puVar23 + lVar18 + (int)uVar12); + do { + dVar30 = *pdVar14; + uVar12 = uVar12 + uVar1; + pdVar14 = pdVar14 + (long)(int)uVar11 + 1; + if (dVar26 <= dVar30) { + dVar30 = dVar26; + } + dVar26 = dVar30; + } while ((int)uVar12 < (int)uVar8); + } + if (dVar26 <= dVar28) { + dVar28 = dVar26; + } + puVar22[lVar18] = dVar28; + lVar18 = lVar18 + 1; + pdVar19 = pdVar19 + 1; + uVar17 = uVar17 + 1; + } while ((int)lVar18 < (int)uVar1); +joined_r0x00301910: + puVar22 = (undefined8 *)((long)puVar22 + lVar24); + puVar23 = (undefined8 *)((long)puVar23 + lVar25); + iVar21 = iVar21 + 1; + if (iVar21 == iVar5) { + return; + } + } + uVar12 = uVar8; + if ((int)uVar8 < 1) { + uVar12 = 1; + } + if ((puVar22 + 2 <= puVar23 || puVar23 + 2 <= puVar22) && (0xd < uVar12)) { + uVar4 = (uint)((ulong)puVar23 >> 3) & 1; + if (uVar12 < uVar4) { + uVar4 = uVar12; + } + bVar3 = uVar4 != 0; + if (bVar3) { + *puVar22 = *puVar23; + } + uVar17 = (ulong)bVar3; + uVar16 = uVar8 - 1; + if ((int)uVar8 < 1) { + uVar16 = 0; + } + uVar2 = ((uVar12 - uVar4) - 2 >> 1) + 1; + iVar7 = uVar2 * 2; + if (uVar16 != uVar4) { + uVar16 = 0; + puVar13 = puVar23 + uVar4; + puVar15 = puVar22 + uVar4; + do { + uVar27 = *puVar13; + uVar16 = uVar16 + 1; + puVar15[1] = puVar13[1]; + *puVar15 = uVar27; + puVar13 = puVar13 + 2; + puVar15 = puVar15 + 2; + } while (uVar16 < uVar2); + uVar17 = (ulong)((uint)bVar3 + iVar7); + if (iVar7 == uVar12 - uVar4) goto joined_r0x00301910; + } + uVar17 = -(uVar17 >> 0x1f) & 0xfffffff800000000 | uVar17 << 3; + *(undefined8 *)((long)puVar22 + uVar17) = *(undefined8 *)((long)puVar23 + uVar17); + goto joined_r0x00301910; + } + lVar18 = 0; + do { + puVar22[lVar18] = puVar23[lVar18]; + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)uVar8); + iVar21 = iVar21 + 1; + puVar22 = (undefined8 *)((long)puVar22 + lVar24); + puVar23 = (undefined8 *)((long)puVar23 + lVar25); + if (iVar21 == iVar5) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 00301950 (812 bytes) name=FUN_00301950 + +void FUN_00301950(undefined1 *param_1,undefined1 *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + undefined8 *puVar5; + long lVar6; + uint uVar7; + uint uVar8; + undefined8 *puVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 0x10 && param_1 < param_2 + 0x10) || (param_3 < 0x16)) { + lVar6 = 0; + do { + param_2[lVar6] = param_1[lVar6]; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar7 = -(int)param_1 & 0xf; + uVar3 = param_3; + if (uVar7 < param_3) { + uVar3 = uVar7; + } + uVar7 = uVar3; + if ((((uVar3 != 0) && (*param_2 = *param_1, uVar3 != 1)) && + (param_2[1] = param_1[1], uVar3 != 2)) && + ((param_2[2] = param_1[2], uVar3 != 3 && (param_2[3] = param_1[3], uVar3 != 4)))) { + param_2[4] = param_1[4]; + if (uVar3 == 5) { + uVar7 = 5; + } + else { + param_2[5] = param_1[5]; + if (((uVar3 != 6) && (param_2[6] = param_1[6], uVar3 != 7)) && + ((param_2[7] = param_1[7], uVar3 != 8 && + ((((param_2[8] = param_1[8], uVar3 != 9 && (param_2[9] = param_1[9], uVar3 != 10)) && + (param_2[10] = param_1[10], uVar3 != 0xb)) && + ((param_2[0xb] = param_1[0xb], uVar3 != 0xc && + (param_2[0xc] = param_1[0xc], uVar3 != 0xd)))))))) { + param_2[0xd] = param_1[0xd]; + if (uVar3 == 0xf) { + param_2[0xe] = param_1[0xe]; + } + else { + uVar7 = 0xe; + } + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar8 = 0; + puVar5 = (undefined8 *)(param_2 + uVar3); + puVar9 = (undefined8 *)(param_1 + uVar3); + do { + uVar10 = *puVar9; + uVar8 = uVar8 + 1; + puVar5[1] = puVar9[1]; + *puVar5 = uVar10; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar8 < uVar1); + uVar7 = uVar7 + iVar4; + if (param_3 - uVar3 == iVar4) { + return; + } + } + iVar4 = uVar7 + 1; + param_2[(int)uVar7] = param_1[(int)uVar7]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 2; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 3; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 4; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 5; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 6; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 7; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 8; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 9; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 10; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xb; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xc; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xd; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xe; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = param_1[iVar2]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00301c7c (712 bytes) name=FUN_00301c7c + +void FUN_00301c7c(ushort *param_1,ushort *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + ulong *puVar5; + long lVar6; + uint uVar7; + uint uVar8; + byte *pbVar9; + undefined8 uVar10; + undefined8 uVar11; + + if (param_3 == 1) { + *param_2 = (ushort)(byte)*param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && + param_2 < (ushort *)((long)param_1 + (long)(int)param_3)) || (param_3 < 0x15)) { + lVar6 = 0; + do { + param_2[lVar6] = (ushort)*(byte *)((long)param_1 + lVar6); + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar7 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + uVar3 = param_3; + if (uVar7 < param_3) { + uVar3 = uVar7; + } + uVar7 = uVar3; + if ((((uVar3 != 0) && (*param_2 = (ushort)(byte)*param_1, uVar3 != 1)) && + (param_2[1] = (ushort)*(byte *)((long)param_1 + 1), uVar3 != 2)) && + ((param_2[2] = (ushort)(byte)param_1[1], uVar3 != 3 && + (param_2[3] = (ushort)*(byte *)((long)param_1 + 3), uVar3 != 4)))) { + param_2[4] = (ushort)(byte)param_1[2]; + if (uVar3 == 5) { + uVar7 = 5; + } + else { + param_2[5] = (ushort)*(byte *)((long)param_1 + 5); + if (uVar3 == 7) { + param_2[6] = (ushort)(byte)param_1[3]; + } + else { + uVar7 = 6; + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar8 = 0; + puVar5 = (ulong *)(param_2 + uVar3); + pbVar9 = (byte *)((long)param_1 + (ulong)uVar3); + do { + uVar11 = *(undefined8 *)(pbVar9 + 8); + uVar10 = *(undefined8 *)pbVar9; + uVar8 = uVar8 + 1; + puVar5[1] = (ulong)CONCAT16((char)((ulong)uVar10 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar10 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar10 >> 0x28), + (ushort)(byte)((ulong)uVar10 >> + 0x20)))); + *puVar5 = (ulong)CONCAT16((char)((ulong)uVar10 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar10 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar10 >> 8), + (ushort)(byte)uVar10))); + puVar5[3] = (ulong)CONCAT16((char)((ulong)uVar11 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar11 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar11 >> 0x28), + (ushort)(byte)((ulong)uVar11 >> + 0x20)))); + puVar5[2] = (ulong)CONCAT16((char)((ulong)uVar11 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar11 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar11 >> 8), + (short)uVar11) & 0xff00ff))); + puVar5 = puVar5 + 4; + pbVar9 = pbVar9 + 0x10; + } while (uVar8 < uVar1); + uVar7 = uVar7 + iVar4; + if (param_3 - uVar3 == iVar4) { + return; + } + } + iVar4 = uVar7 + 1; + param_2[(int)uVar7] = (ushort)*(byte *)((long)param_1 + (long)(int)uVar7); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 2; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 3; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 4; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 5; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 6; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 7; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 8; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 9; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 10; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xb; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xc; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xd; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xe; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00301f44 (712 bytes) name=FUN_00301f44 + +void FUN_00301f44(ushort *param_1,ushort *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + ulong *puVar5; + long lVar6; + uint uVar7; + uint uVar8; + byte *pbVar9; + undefined8 uVar10; + undefined8 uVar11; + + if (param_3 == 1) { + *param_2 = (ushort)(byte)*param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && + param_2 < (ushort *)((long)param_1 + (long)(int)param_3)) || (param_3 < 0x15)) { + lVar6 = 0; + do { + param_2[lVar6] = (ushort)*(byte *)((long)param_1 + lVar6); + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar7 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + uVar3 = param_3; + if (uVar7 < param_3) { + uVar3 = uVar7; + } + uVar7 = uVar3; + if ((((uVar3 != 0) && (*param_2 = (ushort)(byte)*param_1, uVar3 != 1)) && + (param_2[1] = (ushort)*(byte *)((long)param_1 + 1), uVar3 != 2)) && + ((param_2[2] = (ushort)(byte)param_1[1], uVar3 != 3 && + (param_2[3] = (ushort)*(byte *)((long)param_1 + 3), uVar3 != 4)))) { + param_2[4] = (ushort)(byte)param_1[2]; + if (uVar3 == 5) { + uVar7 = 5; + } + else { + param_2[5] = (ushort)*(byte *)((long)param_1 + 5); + if (uVar3 == 7) { + param_2[6] = (ushort)(byte)param_1[3]; + } + else { + uVar7 = 6; + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar8 = 0; + puVar5 = (ulong *)(param_2 + uVar3); + pbVar9 = (byte *)((long)param_1 + (ulong)uVar3); + do { + uVar11 = *(undefined8 *)(pbVar9 + 8); + uVar10 = *(undefined8 *)pbVar9; + uVar8 = uVar8 + 1; + puVar5[1] = (ulong)CONCAT16((char)((ulong)uVar10 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar10 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar10 >> 0x28), + (ushort)(byte)((ulong)uVar10 >> + 0x20)))); + *puVar5 = (ulong)CONCAT16((char)((ulong)uVar10 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar10 >> 0x10), + (uint)CONCAT12((char)((ulong)uVar10 >> 8), + (ushort)(byte)uVar10))); + puVar5[3] = (ulong)CONCAT16((char)((ulong)uVar11 >> 0x38), + (uint6)CONCAT14((char)((ulong)uVar11 >> 0x30), + (uint)CONCAT12((char)((ulong)uVar11 >> 0x28), + (ushort)(byte)((ulong)uVar11 >> + 0x20)))); + puVar5[2] = (ulong)CONCAT16((char)((ulong)uVar11 >> 0x18), + (uint6)CONCAT14((char)((ulong)uVar11 >> 0x10), + (uint)(CONCAT12((char)((ulong)uVar11 >> 8), + (short)uVar11) & 0xff00ff))); + puVar5 = puVar5 + 4; + pbVar9 = pbVar9 + 0x10; + } while (uVar8 < uVar1); + uVar7 = uVar7 + iVar4; + if (param_3 - uVar3 == iVar4) { + return; + } + } + iVar4 = uVar7 + 1; + param_2[(int)uVar7] = (ushort)*(byte *)((long)param_1 + (long)(int)uVar7); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 2; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 3; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 4; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 5; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 6; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 7; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 8; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 9; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 10; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xb; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xc; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xd; + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xe; + param_2[iVar4] = (ushort)*(byte *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + param_2[iVar2] = (ushort)*(byte *)((long)param_1 + (long)iVar2); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030220c (656 bytes) name=FUN_0030220c + +void FUN_0030220c(uint *param_1,uint *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + uint3 uVar6; + ulong *puVar7; + long lVar8; + uint uVar9; + uint uVar10; + byte *pbVar11; + undefined1 uVar12; + undefined1 uVar13; + undefined1 uVar14; + undefined8 uVar15; + undefined8 uVar16; + + if (param_3 == 1) { + *param_2 = (uint)(byte)*param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && param_2 < (uint *)((long)param_1 + (long)(int)param_3)) + || (param_3 < 0x15)) { + lVar8 = 0; + do { + param_2[lVar8] = (uint)*(byte *)((long)param_1 + lVar8); + lVar8 = lVar8 + 1; + } while ((int)lVar8 < (int)param_3); + return; + } + uVar10 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar4 = param_3; + if (uVar10 < param_3) { + uVar4 = uVar10; + } + uVar10 = uVar4; + if ((uVar4 != 0) && (*param_2 = (uint)(byte)*param_1, uVar4 != 1)) { + param_2[1] = (uint)*(byte *)((long)param_1 + 1); + if (uVar4 == 3) { + param_2[2] = (uint)*(byte *)((long)param_1 + 2); + } + else { + uVar10 = 2; + } + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + uVar9 = 0; + iVar5 = uVar1 * 0x10; + puVar7 = (ulong *)(param_2 + uVar4); + pbVar11 = (byte *)((long)param_1 + (ulong)uVar4); + do { + uVar16 = *(undefined8 *)(pbVar11 + 8); + uVar15 = *(undefined8 *)pbVar11; + uVar9 = uVar9 + 1; + uVar12 = (undefined1)((ulong)uVar15 >> 8); + uVar13 = (undefined1)((ulong)uVar15 >> 0x28); + uVar6 = CONCAT12((char)((ulong)uVar16 >> 8),(short)uVar16) & 0xff00ff; + uVar14 = (undefined1)((ulong)uVar16 >> 0x28); + puVar7[1] = (ulong)CONCAT14((char)((ulong)uVar15 >> 0x18),(uint)(byte)((ulong)uVar15 >> 0x10)) + ; + *puVar7 = (ulong)((uint6)CONCAT14(uVar12,(uint)CONCAT12(uVar12,(ushort)(byte)uVar15)) & + 0xffff0000ffff); + puVar7[3] = (ulong)CONCAT14((char)((ulong)uVar15 >> 0x38),(uint)(byte)((ulong)uVar15 >> 0x30)) + ; + puVar7[2] = (ulong)((uint6)CONCAT14(uVar13,(uint)CONCAT12(uVar13,(ushort)(byte)((ulong)uVar15 + >> 0x20))) & + 0xffff0000ffff); + puVar7[5] = (ulong)CONCAT14((char)((ulong)uVar16 >> 0x18),(uint)(byte)((ulong)uVar16 >> 0x10)) + ; + puVar7[4] = (ulong)((uint6)CONCAT14((char)(uVar6 >> 0x10),(uint)uVar6) & 0xffff0000ffff); + puVar7[7] = (ulong)CONCAT14((char)((ulong)uVar16 >> 0x38),(uint)(byte)((ulong)uVar16 >> 0x30)) + ; + puVar7[6] = (ulong)((uint6)CONCAT14(uVar14,(uint)CONCAT12(uVar14,(ushort)(byte)((ulong)uVar16 + >> 0x20))) & + 0xffff0000ffff); + puVar7 = puVar7 + 8; + pbVar11 = pbVar11 + 0x10; + } while (uVar9 < uVar1); + iVar3 = uVar10 + iVar5; + if (param_3 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_2[iVar3] = (uint)*(byte *)((long)param_1 + (long)iVar3); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 2; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 3; + param_2[iVar2] = (uint)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 4; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 5; + param_2[iVar2] = (uint)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 6; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 7; + param_2[iVar2] = (uint)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 8; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 9; + param_2[iVar2] = (uint)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 10; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xb; + param_2[iVar2] = (uint)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 0xc; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xd; + param_2[iVar2] = (uint)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar3 = iVar3 + 0xe; + param_2[iVar5] = (uint)*(byte *)((long)param_1 + (long)iVar5); + if (iVar3 < (int)param_3) { + param_2[iVar3] = (uint)*(byte *)((long)param_1 + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030249c (752 bytes) name=FUN_0030249c + +void FUN_0030249c(float *param_1,float *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + float *pfVar6; + long lVar7; + uint uVar8; + uint uVar9; + byte *pbVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + if (param_3 == 1) { + *param_2 = (float)*(byte *)param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && param_2 < (float *)((long)param_1 + (long)(int)param_3) + ) || (param_3 < 0x15)) { + lVar7 = 0; + do { + param_2[lVar7] = (float)*(byte *)((long)param_1 + lVar7); + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar4 = param_3; + if (uVar9 < param_3) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if ((uVar4 != 0) && (*param_2 = (float)*(byte *)param_1, uVar4 != 1)) { + param_2[1] = (float)*(byte *)((long)param_1 + 1); + if (uVar4 == 3) { + param_2[2] = (float)*(byte *)((long)param_1 + 2); + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + uVar8 = 0; + iVar5 = uVar1 * 0x10; + pfVar6 = param_2 + uVar4; + pbVar10 = (byte *)((long)param_1 + (ulong)uVar4); + do { + uVar8 = uVar8 + 1; + auVar14._6_2_ = 0; + auVar14._0_6_ = + (uint6)CONCAT14(pbVar10[1],(uint)CONCAT12(pbVar10[1],(ushort)*pbVar10)) & 0xffff0000ffff; + auVar14[8] = pbVar10[2]; + auVar14._9_3_ = 0; + auVar14[0xc] = pbVar10[3]; + auVar14._13_3_ = 0; + auVar12._1_3_ = 0; + auVar12[0] = pbVar10[4]; + auVar12[4] = pbVar10[5]; + auVar12._5_3_ = 0; + auVar12[8] = pbVar10[6]; + auVar12._9_3_ = 0; + auVar12[0xc] = pbVar10[7]; + auVar12._13_3_ = 0; + auVar13._6_2_ = 0; + auVar13._0_6_ = + (uint6)CONCAT14(pbVar10[9],(uint)CONCAT12(pbVar10[9],(ushort)pbVar10[8])) & + 0xffff0000ffff; + auVar13[8] = pbVar10[10]; + auVar13._9_3_ = 0; + auVar13[0xc] = pbVar10[0xb]; + auVar13._13_3_ = 0; + auVar11._1_3_ = 0; + auVar11[0] = pbVar10[0xc]; + auVar11[4] = pbVar10[0xd]; + auVar11._5_3_ = 0; + auVar11[8] = pbVar10[0xe]; + auVar11._9_3_ = 0; + auVar11[0xc] = pbVar10[0xf]; + auVar11._13_3_ = 0; + auVar14 = NEON_scvtf(auVar14,4); + auVar12 = NEON_scvtf(auVar12,4); + auVar13 = NEON_scvtf(auVar13,4); + auVar11 = NEON_scvtf(auVar11,4); + *(long *)(pfVar6 + 2) = auVar14._8_8_; + *(long *)pfVar6 = auVar14._0_8_; + *(long *)(pfVar6 + 6) = auVar12._8_8_; + *(long *)(pfVar6 + 4) = auVar12._0_8_; + *(long *)(pfVar6 + 10) = auVar13._8_8_; + *(long *)(pfVar6 + 8) = auVar13._0_8_; + *(long *)(pfVar6 + 0xe) = auVar11._8_8_; + *(long *)(pfVar6 + 0xc) = auVar11._0_8_; + pfVar6 = pfVar6 + 0x10; + pbVar10 = pbVar10 + 0x10; + } while (uVar8 < uVar1); + iVar3 = uVar9 + iVar5; + if (param_3 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_2[iVar3] = (float)*(byte *)((long)param_1 + (long)iVar3); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 2; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 3; + param_2[iVar2] = (float)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 4; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 5; + param_2[iVar2] = (float)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 6; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 7; + param_2[iVar2] = (float)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 8; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 9; + param_2[iVar2] = (float)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 10; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xb; + param_2[iVar2] = (float)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 0xc; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xd; + param_2[iVar2] = (float)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar3 = iVar3 + 0xe; + param_2[iVar5] = (float)*(byte *)((long)param_1 + (long)iVar5); + if (iVar3 < (int)param_3) { + param_2[iVar3] = (float)*(byte *)((long)param_1 + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030278c (776 bytes) name=FUN_0030278c + +void FUN_0030278c(double *param_1,double *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + undefined1 auVar6 [13]; + undefined1 auVar7 [13]; + undefined1 auVar8 [13]; + undefined1 auVar9 [13]; + byte bVar10; + byte bVar11; + byte bVar12; + long lVar13; + double *pdVar14; + uint uVar15; + byte *pbVar16; + ulong uVar17; + ulong uVar18; + undefined1 auVar19 [16]; + ulong uVar20; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + ulong uVar23; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + + if (param_3 == 1) { + *param_2 = (double)*(byte *)param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && + param_2 < (double *)((long)param_1 + (long)(int)param_3)) || (param_3 < 0x15)) { + lVar13 = 0; + do { + param_2[lVar13] = (double)*(byte *)((long)param_1 + lVar13); + lVar13 = lVar13 + 1; + } while ((int)lVar13 < (int)param_3); + return; + } + uVar1 = (uint)((ulong)param_2 >> 3) & 1; + uVar4 = param_3; + if (uVar1 < param_3) { + uVar4 = uVar1; + } + if (uVar4 != 0) { + *param_2 = (double)*(byte *)param_1; + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + uVar15 = 0; + iVar5 = uVar1 * 0x10; + pdVar14 = param_2 + uVar4; + pbVar16 = (byte *)((long)param_1 + (ulong)uVar4); + do { + bVar10 = pbVar16[1]; + bVar11 = pbVar16[9]; + bVar12 = pbVar16[0xd]; + uVar15 = uVar15 + 1; + uVar23 = CONCAT26(0,(uint6)CONCAT14(bVar10,(uint)CONCAT12(bVar10,(ushort)*pbVar16)) & + 0xffff0000ffff); + auVar8[8] = pbVar16[2]; + auVar8._0_8_ = uVar23; + auVar8._9_3_ = 0; + auVar8[0xc] = pbVar16[3]; + uVar18 = CONCAT35(0,CONCAT14(pbVar16[5],(uint)pbVar16[4])); + auVar6[8] = pbVar16[6]; + auVar6._0_8_ = uVar18; + auVar6._9_3_ = 0; + auVar6[0xc] = pbVar16[7]; + uVar20 = CONCAT26(0,(uint6)CONCAT14(bVar11,(uint)CONCAT12(bVar11,(ushort)pbVar16[8])) & + 0xffff0000ffff); + auVar9[8] = pbVar16[10]; + auVar9._0_8_ = uVar20; + auVar9._9_3_ = 0; + auVar9[0xc] = pbVar16[0xb]; + uVar17 = CONCAT35(0,CONCAT14(bVar12,(uint)pbVar16[0xc])); + auVar7[8] = pbVar16[0xe]; + auVar7._0_8_ = uVar17; + auVar7._9_3_ = 0; + auVar7[0xc] = pbVar16[0xf]; + auVar24._0_8_ = uVar23 & 0xffffffff; + auVar24[8] = bVar10; + auVar24._9_7_ = 0; + auVar28._0_8_ = (ulong)auVar8._8_5_ & 0xffffffff; + auVar28._8_5_ = auVar8._8_5_ >> 0x20; + auVar28._13_3_ = 0; + auVar27._0_8_ = uVar18 & 0xffffffff; + auVar27[8] = pbVar16[5]; + auVar27._9_7_ = 0; + auVar22._0_8_ = (ulong)auVar6._8_5_ & 0xffffffff; + auVar22._8_5_ = auVar6._8_5_ >> 0x20; + auVar22._13_3_ = 0; + auVar25 = NEON_scvtf(auVar24,8); + pdVar14[1] = auVar25._8_8_; + *pdVar14 = auVar25._0_8_; + auVar25 = NEON_scvtf(auVar28,8); + auVar21._0_8_ = (ulong)auVar9._8_5_ & 0xffffffff; + auVar21._8_5_ = auVar9._8_5_ >> 0x20; + auVar21._13_3_ = 0; + auVar28 = NEON_scvtf(auVar27,8); + auVar26._0_8_ = uVar17 & 0xffffffff; + auVar26[8] = bVar12; + auVar26._9_7_ = 0; + auVar19 = NEON_scvtf(auVar22,8); + pdVar14[3] = auVar25._8_8_; + pdVar14[2] = auVar25._0_8_; + pdVar14[5] = auVar28._8_8_; + pdVar14[4] = auVar28._0_8_; + auVar25[8] = bVar11; + auVar25._0_8_ = uVar20 & 0xffffffff; + auVar25._9_7_ = 0; + auVar28 = NEON_scvtf(auVar25,8); + pdVar14[7] = auVar19._8_8_; + pdVar14[6] = auVar19._0_8_; + auVar22 = NEON_scvtf(auVar21,8); + auVar19._0_8_ = (ulong)auVar7._8_5_ & 0xffffffff; + auVar19._8_5_ = auVar7._8_5_ >> 0x20; + auVar19._13_3_ = 0; + auVar25 = NEON_scvtf(auVar26,8); + pdVar14[9] = auVar28._8_8_; + pdVar14[8] = auVar28._0_8_; + pdVar14[0xb] = auVar22._8_8_; + pdVar14[10] = auVar22._0_8_; + pdVar14[0xd] = auVar25._8_8_; + pdVar14[0xc] = auVar25._0_8_; + auVar25 = NEON_scvtf(auVar19,8); + pdVar14[0xf] = auVar25._8_8_; + pdVar14[0xe] = auVar25._0_8_; + pdVar14 = pdVar14 + 0x10; + pbVar16 = pbVar16 + 0x10; + } while (uVar15 < uVar1); + iVar3 = (uint)(uVar4 != 0) + iVar5; + if (param_3 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_2[iVar3] = (double)*(byte *)((long)param_1 + (long)iVar3); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 2; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 3; + param_2[iVar2] = (double)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 4; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 5; + param_2[iVar2] = (double)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 6; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 7; + param_2[iVar2] = (double)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 8; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 9; + param_2[iVar2] = (double)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 10; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xb; + param_2[iVar2] = (double)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 0xc; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xd; + param_2[iVar2] = (double)*(byte *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar3 = iVar3 + 0xe; + param_2[iVar5] = (double)*(byte *)((long)param_1 + (long)iVar5); + if (iVar3 < (int)param_3) { + param_2[iVar3] = (double)*(byte *)((long)param_1 + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00302a94 (812 bytes) name=FUN_00302a94 + +void FUN_00302a94(undefined1 *param_1,undefined1 *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + undefined8 *puVar5; + long lVar6; + uint uVar7; + uint uVar8; + undefined8 *puVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 0x10 && param_1 < param_2 + 0x10) || (param_3 < 0x16)) { + lVar6 = 0; + do { + param_2[lVar6] = param_1[lVar6]; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar7 = -(int)param_1 & 0xf; + uVar3 = param_3; + if (uVar7 < param_3) { + uVar3 = uVar7; + } + uVar7 = uVar3; + if ((((uVar3 != 0) && (*param_2 = *param_1, uVar3 != 1)) && + (param_2[1] = param_1[1], uVar3 != 2)) && + ((param_2[2] = param_1[2], uVar3 != 3 && (param_2[3] = param_1[3], uVar3 != 4)))) { + param_2[4] = param_1[4]; + if (uVar3 == 5) { + uVar7 = 5; + } + else { + param_2[5] = param_1[5]; + if (((uVar3 != 6) && (param_2[6] = param_1[6], uVar3 != 7)) && + ((param_2[7] = param_1[7], uVar3 != 8 && + ((((param_2[8] = param_1[8], uVar3 != 9 && (param_2[9] = param_1[9], uVar3 != 10)) && + (param_2[10] = param_1[10], uVar3 != 0xb)) && + ((param_2[0xb] = param_1[0xb], uVar3 != 0xc && + (param_2[0xc] = param_1[0xc], uVar3 != 0xd)))))))) { + param_2[0xd] = param_1[0xd]; + if (uVar3 == 0xf) { + param_2[0xe] = param_1[0xe]; + } + else { + uVar7 = 0xe; + } + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar8 = 0; + puVar5 = (undefined8 *)(param_2 + uVar3); + puVar9 = (undefined8 *)(param_1 + uVar3); + do { + uVar10 = *puVar9; + uVar8 = uVar8 + 1; + puVar5[1] = puVar9[1]; + *puVar5 = uVar10; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar8 < uVar1); + uVar7 = uVar7 + iVar4; + if (param_3 - uVar3 == iVar4) { + return; + } + } + iVar4 = uVar7 + 1; + param_2[(int)uVar7] = param_1[(int)uVar7]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 2; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 3; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 4; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 5; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 6; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 7; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 8; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 9; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 10; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xb; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xc; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xd; + param_2[iVar2] = param_1[iVar2]; + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xe; + param_2[iVar4] = param_1[iVar4]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = param_1[iVar2]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00302dc0 (712 bytes) name=FUN_00302dc0 + +void FUN_00302dc0(short *param_1,short *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + short *psVar5; + long lVar6; + uint uVar7; + uint uVar8; + char *pcVar9; + undefined8 uVar10; + undefined8 uVar11; + + if (param_3 == 1) { + *param_2 = (short)(char)*param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && param_2 < (short *)((long)param_1 + (long)(int)param_3) + ) || (param_3 < 0x15)) { + lVar6 = 0; + do { + param_2[lVar6] = (short)*(char *)((long)param_1 + lVar6); + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar7 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + uVar3 = param_3; + if (uVar7 < param_3) { + uVar3 = uVar7; + } + uVar7 = uVar3; + if ((((uVar3 != 0) && (*param_2 = (short)(char)*param_1, uVar3 != 1)) && + (param_2[1] = (short)*(char *)((long)param_1 + 1), uVar3 != 2)) && + ((param_2[2] = (short)(char)param_1[1], uVar3 != 3 && + (param_2[3] = (short)*(char *)((long)param_1 + 3), uVar3 != 4)))) { + param_2[4] = (short)(char)param_1[2]; + if (uVar3 == 5) { + uVar7 = 5; + } + else { + param_2[5] = (short)*(char *)((long)param_1 + 5); + if (uVar3 == 7) { + param_2[6] = (short)(char)param_1[3]; + } + else { + uVar7 = 6; + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar8 = 0; + psVar5 = param_2 + uVar3; + pcVar9 = (char *)((long)param_1 + (ulong)uVar3); + do { + uVar11 = *(undefined8 *)(pcVar9 + 8); + uVar10 = *(undefined8 *)pcVar9; + uVar8 = uVar8 + 1; + *(ulong *)(psVar5 + 4) = + CONCAT26((short)(char)((ulong)uVar10 >> 0x38), + CONCAT24((short)(char)((ulong)uVar10 >> 0x30), + CONCAT22((short)(char)((ulong)uVar10 >> 0x28), + (short)(char)((ulong)uVar10 >> 0x20)))); + *(ulong *)psVar5 = + CONCAT26((short)(char)((ulong)uVar10 >> 0x18), + CONCAT24((short)(char)((ulong)uVar10 >> 0x10), + CONCAT22((short)(char)((ulong)uVar10 >> 8),(short)(char)uVar10))); + *(ulong *)(psVar5 + 0xc) = + CONCAT26((short)(char)((ulong)uVar11 >> 0x38), + CONCAT24((short)(char)((ulong)uVar11 >> 0x30), + CONCAT22((short)(char)((ulong)uVar11 >> 0x28), + (short)(char)((ulong)uVar11 >> 0x20)))); + *(ulong *)(psVar5 + 8) = + CONCAT26((short)(char)((ulong)uVar11 >> 0x18), + CONCAT24((short)(char)((ulong)uVar11 >> 0x10), + CONCAT22((short)(char)((ulong)uVar11 >> 8),(short)(char)uVar11))); + psVar5 = psVar5 + 0x10; + pcVar9 = pcVar9 + 0x10; + } while (uVar8 < uVar1); + uVar7 = uVar7 + iVar4; + if (param_3 - uVar3 == iVar4) { + return; + } + } + iVar4 = uVar7 + 1; + param_2[(int)uVar7] = (short)*(char *)((long)param_1 + (long)(int)uVar7); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 2; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 3; + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 4; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 5; + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 6; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 7; + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 8; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 9; + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 10; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xb; + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xc; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + iVar4 = uVar7 + 0xd; + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + if (iVar4 < (int)param_3) { + iVar2 = uVar7 + 0xe; + param_2[iVar4] = (short)*(char *)((long)param_1 + (long)iVar4); + if (iVar2 < (int)param_3) { + param_2[iVar2] = (short)*(char *)((long)param_1 + (long)iVar2); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00303088 (656 bytes) name=FUN_00303088 + +void FUN_00303088(int *param_1,int *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + int *piVar6; + long lVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + undefined8 uVar11; + undefined8 uVar12; + short sVar13; + short sVar14; + + if (param_3 == 1) { + *param_2 = (int)(char)*param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && param_2 < (int *)((long)param_1 + (long)(int)param_3)) + || (param_3 < 0x15)) { + lVar7 = 0; + do { + param_2[lVar7] = (int)*(char *)((long)param_1 + lVar7); + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar4 = param_3; + if (uVar9 < param_3) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if ((uVar4 != 0) && (*param_2 = (int)(char)*param_1, uVar4 != 1)) { + param_2[1] = (int)*(char *)((long)param_1 + 1); + if (uVar4 == 3) { + param_2[2] = (int)*(char *)((long)param_1 + 2); + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + uVar8 = 0; + iVar5 = uVar1 * 0x10; + piVar6 = param_2 + uVar4; + pcVar10 = (char *)((long)param_1 + (ulong)uVar4); + do { + uVar12 = *(undefined8 *)(pcVar10 + 8); + uVar11 = *(undefined8 *)pcVar10; + uVar8 = uVar8 + 1; + sVar13 = (short)(char)((ulong)uVar11 >> 0x28); + sVar14 = (short)(char)((ulong)uVar11 >> 0x38); + *(ulong *)(piVar6 + 2) = + CONCAT44((int)(short)(char)((ulong)uVar11 >> 0x18), + (int)(short)(char)((ulong)uVar11 >> 0x10)); + *(ulong *)piVar6 = CONCAT44((int)(short)(char)((ulong)uVar11 >> 8),(int)(short)(char)uVar11); + *(ulong *)(piVar6 + 6) = + CONCAT26(sVar14 >> 0xf,CONCAT24(sVar14,(int)(short)(char)((ulong)uVar11 >> 0x30))); + *(ulong *)(piVar6 + 4) = + CONCAT26(sVar13 >> 0xf,CONCAT24(sVar13,(int)(short)(char)((ulong)uVar11 >> 0x20))); + *(ulong *)(piVar6 + 10) = + CONCAT44((int)(short)(char)((ulong)uVar12 >> 0x18), + (int)(short)(char)((ulong)uVar12 >> 0x10)); + *(ulong *)(piVar6 + 8) = + CONCAT44((int)(short)(char)((ulong)uVar12 >> 8),(int)(short)(char)uVar12); + *(ulong *)(piVar6 + 0xe) = + CONCAT44((int)(short)(char)((ulong)uVar12 >> 0x38), + (int)(short)(char)((ulong)uVar12 >> 0x30)); + *(ulong *)(piVar6 + 0xc) = + CONCAT44((int)(short)(char)((ulong)uVar12 >> 0x28), + (int)(short)(char)((ulong)uVar12 >> 0x20)); + piVar6 = piVar6 + 0x10; + pcVar10 = pcVar10 + 0x10; + } while (uVar8 < uVar1); + iVar3 = uVar9 + iVar5; + if (param_3 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_2[iVar3] = (int)*(char *)((long)param_1 + (long)iVar3); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 2; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 3; + param_2[iVar2] = (int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 4; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 5; + param_2[iVar2] = (int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 6; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 7; + param_2[iVar2] = (int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 8; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 9; + param_2[iVar2] = (int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 10; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xb; + param_2[iVar2] = (int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 0xc; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xd; + param_2[iVar2] = (int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar3 = iVar3 + 0xe; + param_2[iVar5] = (int)*(char *)((long)param_1 + (long)iVar5); + if (iVar3 < (int)param_3) { + param_2[iVar3] = (int)*(char *)((long)param_1 + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00303318 (752 bytes) name=FUN_00303318 + +void FUN_00303318(float *param_1,float *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + float *pfVar6; + long lVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + if (param_3 == 1) { + *param_2 = (float)(int)*(char *)param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && param_2 < (float *)((long)param_1 + (long)(int)param_3) + ) || (param_3 < 0x15)) { + lVar7 = 0; + do { + param_2[lVar7] = (float)(int)*(char *)((long)param_1 + lVar7); + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar4 = param_3; + if (uVar9 < param_3) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if ((uVar4 != 0) && (*param_2 = (float)(int)*(char *)param_1, uVar4 != 1)) { + param_2[1] = (float)(int)*(char *)((long)param_1 + 1); + if (uVar4 == 3) { + param_2[2] = (float)(int)*(char *)((long)param_1 + 2); + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + uVar8 = 0; + iVar5 = uVar1 * 0x10; + pfVar6 = param_2 + uVar4; + pcVar10 = (char *)((long)param_1 + (ulong)uVar4); + do { + uVar8 = uVar8 + 1; + auVar14._0_4_ = (int)(short)*pcVar10; + auVar14._4_4_ = (int)(short)pcVar10[1]; + auVar14._8_4_ = (int)(short)pcVar10[2]; + auVar14._12_4_ = (int)(short)pcVar10[3]; + auVar12._0_4_ = (int)(short)pcVar10[4]; + auVar12._4_4_ = (int)(short)pcVar10[5]; + auVar12._8_4_ = (int)(short)pcVar10[6]; + auVar12._12_4_ = (int)(short)pcVar10[7]; + auVar13._0_4_ = (int)(short)pcVar10[8]; + auVar13._4_4_ = (int)(short)pcVar10[9]; + auVar13._8_4_ = (int)(short)pcVar10[10]; + auVar13._12_4_ = (int)(short)pcVar10[0xb]; + auVar11._0_4_ = (int)(short)pcVar10[0xc]; + auVar11._4_4_ = (int)(short)pcVar10[0xd]; + auVar11._8_4_ = (int)(short)pcVar10[0xe]; + auVar11._12_4_ = (int)(short)pcVar10[0xf]; + auVar14 = NEON_scvtf(auVar14,4); + auVar12 = NEON_scvtf(auVar12,4); + auVar13 = NEON_scvtf(auVar13,4); + auVar11 = NEON_scvtf(auVar11,4); + *(long *)(pfVar6 + 2) = auVar14._8_8_; + *(long *)pfVar6 = auVar14._0_8_; + *(long *)(pfVar6 + 6) = auVar12._8_8_; + *(long *)(pfVar6 + 4) = auVar12._0_8_; + *(long *)(pfVar6 + 10) = auVar13._8_8_; + *(long *)(pfVar6 + 8) = auVar13._0_8_; + *(long *)(pfVar6 + 0xe) = auVar11._8_8_; + *(long *)(pfVar6 + 0xc) = auVar11._0_8_; + pfVar6 = pfVar6 + 0x10; + pcVar10 = pcVar10 + 0x10; + } while (uVar8 < uVar1); + iVar3 = uVar9 + iVar5; + if (param_3 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_2[iVar3] = (float)(int)*(char *)((long)param_1 + (long)iVar3); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 2; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 3; + param_2[iVar2] = (float)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 4; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 5; + param_2[iVar2] = (float)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 6; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 7; + param_2[iVar2] = (float)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 8; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 9; + param_2[iVar2] = (float)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 10; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xb; + param_2[iVar2] = (float)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 0xc; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xd; + param_2[iVar2] = (float)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar3 = iVar3 + 0xe; + param_2[iVar5] = (float)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar3 < (int)param_3) { + param_2[iVar3] = + (float)(int)*(char *)((long)param_1 + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00303608 (776 bytes) name=FUN_00303608 + +void FUN_00303608(double *param_1,double *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + char cVar6; + char cVar7; + char cVar8; + char cVar9; + char cVar10; + char cVar11; + char cVar12; + char cVar13; + long lVar14; + double *pdVar15; + uint uVar16; + char *pcVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + + if (param_3 == 1) { + *param_2 = (double)(int)*(char *)param_1; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && + param_2 < (double *)((long)param_1 + (long)(int)param_3)) || (param_3 < 0x15)) { + lVar14 = 0; + do { + param_2[lVar14] = (double)(int)*(char *)((long)param_1 + lVar14); + lVar14 = lVar14 + 1; + } while ((int)lVar14 < (int)param_3); + return; + } + uVar1 = (uint)((ulong)param_2 >> 3) & 1; + uVar4 = param_3; + if (uVar1 < param_3) { + uVar4 = uVar1; + } + if (uVar4 != 0) { + *param_2 = (double)(int)*(char *)param_1; + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + uVar16 = 0; + iVar5 = uVar1 * 0x10; + pdVar15 = param_2 + uVar4; + pcVar17 = (char *)((long)param_1 + (ulong)uVar4); + do { + cVar6 = pcVar17[8]; + cVar7 = pcVar17[9]; + cVar8 = pcVar17[10]; + cVar9 = pcVar17[0xb]; + cVar10 = pcVar17[0xc]; + cVar11 = pcVar17[0xd]; + cVar12 = pcVar17[0xe]; + cVar13 = pcVar17[0xf]; + uVar16 = uVar16 + 1; + auVar21._0_8_ = (long)(int)(short)*pcVar17; + auVar21._8_8_ = (long)(int)(short)pcVar17[1]; + auVar25._0_8_ = (long)(int)(short)pcVar17[2]; + auVar25._8_8_ = (long)(int)(short)pcVar17[3]; + auVar24._0_8_ = (long)(int)(short)pcVar17[4]; + auVar24._8_8_ = (long)(int)(short)pcVar17[5]; + auVar20._0_8_ = (long)(int)(short)pcVar17[6]; + auVar20._8_8_ = (long)(int)(short)pcVar17[7]; + auVar22 = NEON_scvtf(auVar21,8); + pdVar15[1] = auVar22._8_8_; + *pdVar15 = auVar22._0_8_; + auVar22 = NEON_scvtf(auVar25,8); + auVar19._0_8_ = (long)(int)(short)cVar8; + auVar19._8_8_ = (long)(int)(short)cVar9; + auVar25 = NEON_scvtf(auVar24,8); + /* catch() { ... } // from try @ 00303ab8 with catch @ 003036f4 + catch() { ... } // from try @ 00303e0c with catch @ 003036f4 + catch() { ... } // from try @ 00303fe4 with catch @ 003036f4 */ + auVar23._0_8_ = (long)(int)(short)cVar10; + auVar23._8_8_ = (long)(int)(short)cVar11; + auVar18 = NEON_scvtf(auVar20,8); + pdVar15[3] = auVar22._8_8_; + pdVar15[2] = auVar22._0_8_; + pdVar15[5] = auVar25._8_8_; + pdVar15[4] = auVar25._0_8_; + auVar22._8_8_ = (long)(int)(short)cVar7; + auVar22._0_8_ = (long)(int)(short)cVar6; + auVar25 = NEON_scvtf(auVar22,8); + pdVar15[7] = auVar18._8_8_; + pdVar15[6] = auVar18._0_8_; + auVar20 = NEON_scvtf(auVar19,8); + auVar18._0_8_ = (long)(int)(short)cVar12; + auVar18._8_8_ = (long)(int)(short)cVar13; + auVar22 = NEON_scvtf(auVar23,8); + pdVar15[9] = auVar25._8_8_; + pdVar15[8] = auVar25._0_8_; + pdVar15[0xb] = auVar20._8_8_; + pdVar15[10] = auVar20._0_8_; + pdVar15[0xd] = auVar22._8_8_; + pdVar15[0xc] = auVar22._0_8_; + auVar22 = NEON_scvtf(auVar18,8); + pdVar15[0xf] = auVar22._8_8_; + pdVar15[0xe] = auVar22._0_8_; + pdVar15 = pdVar15 + 0x10; + pcVar17 = pcVar17 + 0x10; + } while (uVar16 < uVar1); + iVar3 = (uint)(uVar4 != 0) + iVar5; + if (param_3 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_2[iVar3] = (double)(int)*(char *)((long)param_1 + (long)iVar3); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 2; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 3; + param_2[iVar2] = (double)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 4; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 5; + param_2[iVar2] = (double)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 6; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 7; + param_2[iVar2] = (double)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 8; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 9; + param_2[iVar2] = (double)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 10; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xb; + param_2[iVar2] = (double)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar2 = iVar3 + 0xc; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5); + if (iVar2 < (int)param_3) { + iVar5 = iVar3 + 0xd; + param_2[iVar2] = (double)(int)*(char *)((long)param_1 + (long)iVar2); + if (iVar5 < (int)param_3) { + iVar3 = iVar3 + 0xe; + param_2[iVar5] = (double)(int)*(char *)((long)param_1 + (long)iVar5) + ; + if (iVar3 < (int)param_3) { + param_2[iVar3] = + (double)(int)*(char *)((long)param_1 + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00303910 (480 bytes) name=FUN_00303910 + +void FUN_00303910(undefined2 *param_1,undefined2 *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 *puVar4; + long lVar5; + ulong uVar6; + uint uVar7; + undefined8 *puVar8; + uint uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + /* try { // try from 00303ab8 to 00403dc3 has its CatchHandler @ 003036f4 */ + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 8 && param_1 < param_2 + 8) || (param_3 < 0xf)) { + lVar5 = 0; + do { + param_2[lVar5] = param_1[lVar5]; + lVar5 = lVar5 + 1; + } while ((int)lVar5 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + uVar2 = param_3; + if (uVar9 < param_3) { + uVar2 = uVar9; + } + uVar9 = uVar2; + if ((((uVar2 != 0) && (*param_2 = *param_1, uVar2 != 1)) && + (param_2[1] = param_1[1], uVar2 != 2)) && + ((param_2[2] = param_1[2], uVar2 != 3 && (param_2[3] = param_1[3], uVar2 != 4)))) { + param_2[4] = param_1[4]; + if (uVar2 == 5) { + uVar9 = 5; + } + else { + param_2[5] = param_1[5]; + if (uVar2 == 7) { + param_2[6] = param_1[6]; + } + else { + uVar9 = 6; + } + } + } + uVar1 = ((param_3 - uVar2) - 8 >> 3) + 1; + uVar7 = 0; + iVar3 = uVar1 * 8; + puVar4 = (undefined8 *)(param_2 + uVar2); + puVar8 = (undefined8 *)(param_1 + uVar2); + do { + uVar10 = *puVar8; + uVar7 = uVar7 + 1; + puVar4[1] = puVar8[1]; + *puVar4 = uVar10; + puVar4 = puVar4 + 2; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar1); + uVar9 = uVar9 + iVar3; + if (param_3 - uVar2 != iVar3) { + uVar6 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar9 << 1; + *(undefined2 *)((long)param_2 + uVar6) = *(undefined2 *)((long)param_1 + uVar6); + if ((((int)(uVar9 + 1) < (int)param_3) && + (*(undefined2 *)((long)param_2 + uVar6 + 2) = *(undefined2 *)((long)param_1 + uVar6 + 2), + (int)(uVar9 + 2) < (int)param_3)) && + ((*(undefined2 *)((long)param_2 + uVar6 + 4) = *(undefined2 *)((long)param_1 + uVar6 + 4), + (int)(uVar9 + 3) < (int)param_3 && + (((*(undefined2 *)((long)param_2 + uVar6 + 6) = *(undefined2 *)((long)param_1 + uVar6 + 6) + , (int)(uVar9 + 4) < (int)param_3 && + (*(undefined2 *)((long)param_2 + uVar6 + 8) = *(undefined2 *)((long)param_1 + uVar6 + 8) + , (int)(uVar9 + 5) < (int)param_3)) && + (*(undefined2 *)((long)param_2 + uVar6 + 10) = + *(undefined2 *)((long)param_1 + uVar6 + 10), (int)(uVar9 + 6) < (int)param_3)))))) + { + *(undefined2 *)((long)param_2 + uVar6 + 0xc) = *(undefined2 *)((long)param_1 + uVar6 + 0xc); + } + } + } + return; +} + + +================================================================== + +### FUNC 00303af0 (492 bytes) name=FUN_00303af0 + +void FUN_00303af0(ushort *param_1,uint *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + ulong *puVar5; + uint uVar6; + uint uVar7; + ushort *puVar8; + undefined8 uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = (uint)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (uint)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (uint)param_1[1]; + if (((uVar4 != 2) && (param_2[2] = (uint)param_1[2], uVar4 != 3)) && + ((param_2[3] = (uint)param_1[3], uVar4 != 4 && + ((param_2[4] = (uint)param_1[4], uVar4 != 5 && (param_2[5] = (uint)param_1[5], uVar4 != 6) + ))))) { + param_2[6] = (uint)param_1[6]; + if (uVar4 == 8) { + param_2[7] = (uint)param_1[7]; + } + else { + uVar6 = 7; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar4) { + uVar7 = 0; + puVar5 = (ulong *)(param_2 + uVar4); + puVar8 = param_1 + uVar4; + do { + uVar10 = *(undefined8 *)(puVar8 + 4); + uVar9 = *(undefined8 *)puVar8; + uVar7 = uVar7 + 1; + puVar5[1] = (ulong)CONCAT24((short)((ulong)uVar9 >> 0x30), + (uint)(ushort)((ulong)uVar9 >> 0x20)); + *puVar5 = (ulong)CONCAT24((short)((ulong)uVar9 >> 0x10),(uint)(ushort)uVar9); + puVar5[3] = (ulong)CONCAT24((short)((ulong)uVar10 >> 0x30), + (uint)(ushort)((ulong)uVar10 >> 0x20)); + puVar5[2] = (ulong)(CONCAT24((short)((ulong)uVar10 >> 0x10),(int)uVar10) & 0xffff0000ffff); + puVar5 = puVar5 + 4; + puVar8 = puVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (uint)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (uint)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 3; + param_2[iVar2] = (uint)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 4; + param_2[iVar3] = (uint)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 5; + param_2[iVar2] = (uint)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 6; + param_2[iVar3] = (uint)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (uint)param_1[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00303cdc (564 bytes) name=FUN_00303cdc + +void FUN_00303cdc(ushort *param_1,float *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + ushort *puVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + + if (param_3 == 1) { + *param_2 = (float)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (float)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (float)param_1[1]; + if (((uVar4 != 2) && (param_2[2] = (float)param_1[2], uVar4 != 3)) && + ((param_2[3] = (float)param_1[3], uVar4 != 4 && + ((param_2[4] = (float)param_1[4], uVar4 != 5 && + (param_2[5] = (float)param_1[5], uVar4 != 6)))))) { + param_2[6] = (float)param_1[6]; + if (uVar4 == 8) { + param_2[7] = (float)param_1[7]; + } + else { + uVar6 = 7; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar4) { + uVar7 = 0; + pfVar5 = param_2 + uVar4; + puVar8 = param_1 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar10._2_2_ = 0; + auVar10._0_2_ = *puVar8; + auVar10._4_2_ = puVar8[1]; + auVar10._6_2_ = 0; + auVar10._8_2_ = puVar8[2]; + auVar10._10_2_ = 0; + auVar10._12_2_ = puVar8[3]; + auVar10._14_2_ = 0; + auVar9._2_2_ = 0; + auVar9._0_2_ = puVar8[4]; + auVar9._4_2_ = puVar8[5]; + auVar9._6_2_ = 0; + auVar9._8_2_ = puVar8[6]; + auVar9._10_2_ = 0; + auVar9._12_2_ = puVar8[7]; + auVar9._14_2_ = 0; + auVar10 = NEON_scvtf(auVar10,4); + /* try { // try from 00303e04 to 00403e07 has its CatchHandler @ 00303fd4 */ + auVar9 = NEON_scvtf(auVar9,4); + *(long *)(pfVar5 + 2) = auVar10._8_8_; + *(long *)pfVar5 = auVar10._0_8_; + /* try { // try from 00303e0c to 00403fbf has its CatchHandler @ 003036f4 */ + *(long *)(pfVar5 + 6) = auVar9._8_8_; + *(long *)(pfVar5 + 4) = auVar9._0_8_; + pfVar5 = pfVar5 + 8; + puVar8 = puVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (float)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (float)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 3; + param_2[iVar2] = (float)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 4; + param_2[iVar3] = (float)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 5; + param_2[iVar2] = (float)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 6; + param_2[iVar3] = (float)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (float)param_1[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00303f10 (596 bytes) name=FUN_00303f10 + +void FUN_00303f10(ushort *param_1,double *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined1 auVar4 [14]; + undefined1 auVar5 [14]; + uint uVar6; + double *pdVar7; + uint uVar8; + uint uVar9; + ushort *puVar10; + ulong uVar11; + undefined1 auVar12 [16]; + ulong uVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + + if (param_3 == 1) { + *param_2 = (double)*param_1; + return; + } + if (0 < (int)param_3) { + uVar6 = (uint)((ulong)param_2 >> 3) & 1; + if (param_3 < uVar6) { + uVar6 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 9) || (uVar1 = uVar6, uVar8 = 0, uVar6 != 0)) && + (uVar6 = uVar1, *param_2 = (double)*param_1, uVar8 = uVar6, uVar6 != 1)) { + param_2[1] = (double)param_1[1]; + if (((uVar6 != 2) && (param_2[2] = (double)param_1[2], uVar6 != 3)) && + ((param_2[3] = (double)param_1[3], uVar6 != 4 && + ((param_2[4] = (double)param_1[4], uVar6 != 5 && + (param_2[5] = (double)param_1[5], uVar6 != 6)))))) { + param_2[6] = (double)param_1[6]; + if (uVar6 == 8) { + param_2[7] = (double)param_1[7]; + } + else { + uVar8 = 7; + } + } + /* catch() { ... } // from try @ 00303e04 with catch @ 00303fd4 */ + if (param_3 == uVar6) { + return; + } + } + /* try { // try from 00303fe4 to 00403fe7 has its CatchHandler @ 003036f4 */ + /* catch() { ... } // from try @ 00305298 with catch @ 00303fe8 + catch() { ... } // from try @ 00305fb8 with catch @ 00303fe8 */ + uVar1 = ((param_3 - uVar6) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar6) { + uVar9 = 0; + pdVar7 = param_2 + uVar6; + puVar10 = param_1 + uVar6; + do { + uVar9 = uVar9 + 1; + uVar13 = CONCAT26(0,CONCAT24(puVar10[1],(uint)*puVar10)); + auVar4._8_2_ = puVar10[2]; + auVar4._0_8_ = uVar13; + auVar4._10_2_ = 0; + auVar4._12_2_ = puVar10[3]; + uVar11 = CONCAT26(0,CONCAT24(puVar10[5],(uint)puVar10[4])); + auVar5._8_2_ = puVar10[6]; + auVar5._0_8_ = uVar11; + auVar5._10_2_ = 0; + auVar5._12_2_ = puVar10[7]; + auVar16._0_8_ = uVar13 & 0xffffffff; + auVar16._8_2_ = puVar10[1]; + auVar16._10_6_ = 0; + auVar14._0_8_ = (ulong)auVar4._8_6_ & 0xffffffff; + auVar14._8_6_ = auVar4._8_6_ >> 0x20; + auVar14._14_2_ = 0; + auVar15._0_8_ = uVar11 & 0xffffffff; + auVar15._8_2_ = puVar10[5]; + auVar15._10_6_ = 0; + auVar12._0_8_ = (ulong)auVar5._8_6_ & 0xffffffff; + auVar12._8_6_ = auVar5._8_6_ >> 0x20; + auVar12._14_2_ = 0; + auVar16 = NEON_scvtf(auVar16,8); + pdVar7[1] = auVar16._8_8_; + *pdVar7 = auVar16._0_8_; + auVar14 = NEON_scvtf(auVar14,8); + auVar15 = NEON_scvtf(auVar15,8); + auVar12 = NEON_scvtf(auVar12,8); + pdVar7[3] = auVar14._8_8_; + pdVar7[2] = auVar14._0_8_; + pdVar7[5] = auVar15._8_8_; + pdVar7[4] = auVar15._0_8_; + pdVar7[7] = auVar12._8_8_; + pdVar7[6] = auVar12._0_8_; + pdVar7 = pdVar7 + 8; + puVar10 = puVar10 + 8; + } while (uVar9 < uVar1); + uVar8 = uVar8 + iVar3; + if (param_3 - uVar6 == iVar3) { + return; + } + } + iVar3 = uVar8 + 1; + param_2[(int)uVar8] = (double)param_1[(int)uVar8]; + if (iVar3 < (int)param_3) { + iVar2 = uVar8 + 2; + param_2[iVar3] = (double)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar8 + 3; + param_2[iVar2] = (double)param_1[iVar2]; + /* try { // try from 003040c4 to 004040c7 has its CatchHandler @ 00305fa4 */ + if (iVar3 < (int)param_3) { + iVar2 = uVar8 + 4; + param_2[iVar3] = (double)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar8 + 5; + /* try { // try from 003040f8 to 004040fb has its CatchHandler @ 00305fc0 */ + param_2[iVar2] = (double)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar8 + 6; + param_2[iVar3] = (double)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (double)param_1[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00304164 (480 bytes) name=FUN_00304164 + +void FUN_00304164(undefined2 *param_1,undefined2 *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 *puVar4; + long lVar5; + ulong uVar6; + uint uVar7; + undefined8 *puVar8; + uint uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 8 && param_1 < param_2 + 8) || (param_3 < 0xf)) { + lVar5 = 0; + do { + param_2[lVar5] = param_1[lVar5]; + lVar5 = lVar5 + 1; + } while ((int)lVar5 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + uVar2 = param_3; + if (uVar9 < param_3) { + uVar2 = uVar9; + } + uVar9 = uVar2; + if ((((uVar2 != 0) && (*param_2 = *param_1, uVar2 != 1)) && + (param_2[1] = param_1[1], uVar2 != 2)) && + ((param_2[2] = param_1[2], uVar2 != 3 && (param_2[3] = param_1[3], uVar2 != 4)))) { + param_2[4] = param_1[4]; + if (uVar2 == 5) { + uVar9 = 5; + } + else { + param_2[5] = param_1[5]; + if (uVar2 == 7) { + param_2[6] = param_1[6]; + } + else { + uVar9 = 6; + } + } + } + uVar1 = ((param_3 - uVar2) - 8 >> 3) + 1; + uVar7 = 0; + iVar3 = uVar1 * 8; + puVar4 = (undefined8 *)(param_2 + uVar2); + puVar8 = (undefined8 *)(param_1 + uVar2); + do { + uVar10 = *puVar8; + uVar7 = uVar7 + 1; + puVar4[1] = puVar8[1]; + *puVar4 = uVar10; + puVar4 = puVar4 + 2; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar1); + uVar9 = uVar9 + iVar3; + if (param_3 - uVar2 != iVar3) { + uVar6 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar9 << 1; + *(undefined2 *)((long)param_2 + uVar6) = *(undefined2 *)((long)param_1 + uVar6); + if ((((int)(uVar9 + 1) < (int)param_3) && + (*(undefined2 *)((long)param_2 + uVar6 + 2) = *(undefined2 *)((long)param_1 + uVar6 + 2), + (int)(uVar9 + 2) < (int)param_3)) && + ((*(undefined2 *)((long)param_2 + uVar6 + 4) = *(undefined2 *)((long)param_1 + uVar6 + 4), + (int)(uVar9 + 3) < (int)param_3 && + (((*(undefined2 *)((long)param_2 + uVar6 + 6) = *(undefined2 *)((long)param_1 + uVar6 + 6) + , (int)(uVar9 + 4) < (int)param_3 && + (*(undefined2 *)((long)param_2 + uVar6 + 8) = *(undefined2 *)((long)param_1 + uVar6 + 8) + , (int)(uVar9 + 5) < (int)param_3)) && + (*(undefined2 *)((long)param_2 + uVar6 + 10) = + *(undefined2 *)((long)param_1 + uVar6 + 10), (int)(uVar9 + 6) < (int)param_3)))))) + { + *(undefined2 *)((long)param_2 + uVar6 + 0xc) = *(undefined2 *)((long)param_1 + uVar6 + 0xc); + } + } + } + return; +} + + +================================================================== + +### FUNC 00304344 (492 bytes) name=FUN_00304344 + +void FUN_00304344(short *param_1,int *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int *piVar5; + uint uVar6; + uint uVar7; + short *psVar8; + undefined8 uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = (int)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (int)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (int)param_1[1]; + if (((uVar4 != 2) && (param_2[2] = (int)param_1[2], uVar4 != 3)) && + ((param_2[3] = (int)param_1[3], uVar4 != 4 && + ((param_2[4] = (int)param_1[4], uVar4 != 5 && (param_2[5] = (int)param_1[5], uVar4 != 6))) + ))) { + param_2[6] = (int)param_1[6]; + if (uVar4 == 8) { + param_2[7] = (int)param_1[7]; + } + else { + uVar6 = 7; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar4) { + uVar7 = 0; + piVar5 = param_2 + uVar4; + psVar8 = param_1 + uVar4; + do { + uVar10 = *(undefined8 *)(psVar8 + 4); + uVar9 = *(undefined8 *)psVar8; + uVar7 = uVar7 + 1; + *(ulong *)(piVar5 + 2) = + CONCAT44((int)(short)((ulong)uVar9 >> 0x30),(int)(short)((ulong)uVar9 >> 0x20)); + *(ulong *)piVar5 = CONCAT44((int)(short)((ulong)uVar9 >> 0x10),(int)(short)uVar9); + *(ulong *)(piVar5 + 6) = + CONCAT44((int)(short)((ulong)uVar10 >> 0x30),(int)(short)((ulong)uVar10 >> 0x20)); + *(ulong *)(piVar5 + 4) = CONCAT44((int)(short)((ulong)uVar10 >> 0x10),(int)(short)uVar10); + piVar5 = piVar5 + 8; + psVar8 = psVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (int)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 3; + param_2[iVar2] = (int)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 4; + param_2[iVar3] = (int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 5; + param_2[iVar2] = (int)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 6; + param_2[iVar3] = (int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (int)param_1[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00304530 (564 bytes) name=FUN_00304530 + +void FUN_00304530(short *param_1,float *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + short *psVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + + if (param_3 == 1) { + *param_2 = (float)(int)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (float)(int)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (float)(int)param_1[1]; + if (((uVar4 != 2) && (param_2[2] = (float)(int)param_1[2], uVar4 != 3)) && + ((param_2[3] = (float)(int)param_1[3], uVar4 != 4 && + ((param_2[4] = (float)(int)param_1[4], uVar4 != 5 && + (param_2[5] = (float)(int)param_1[5], uVar4 != 6)))))) { + param_2[6] = (float)(int)param_1[6]; + if (uVar4 == 8) { + param_2[7] = (float)(int)param_1[7]; + } + else { + uVar6 = 7; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar4) { + uVar7 = 0; + pfVar5 = param_2 + uVar4; + psVar8 = param_1 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar10._0_4_ = (int)*psVar8; + auVar10._4_4_ = (int)psVar8[1]; + auVar10._8_4_ = (int)psVar8[2]; + auVar10._12_4_ = (int)psVar8[3]; + auVar9._0_4_ = (int)psVar8[4]; + auVar9._4_4_ = (int)psVar8[5]; + auVar9._8_4_ = (int)psVar8[6]; + auVar9._12_4_ = (int)psVar8[7]; + auVar10 = NEON_scvtf(auVar10,4); + auVar9 = NEON_scvtf(auVar9,4); + *(long *)(pfVar5 + 2) = auVar10._8_8_; + *(long *)pfVar5 = auVar10._0_8_; + *(long *)(pfVar5 + 6) = auVar9._8_8_; + *(long *)(pfVar5 + 4) = auVar9._0_8_; + pfVar5 = pfVar5 + 8; + psVar8 = psVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (float)(int)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (float)(int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 3; + param_2[iVar2] = (float)(int)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 4; + param_2[iVar3] = (float)(int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 5; + param_2[iVar2] = (float)(int)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 6; + param_2[iVar3] = (float)(int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (float)(int)param_1[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00304764 (596 bytes) name=FUN_00304764 + +void FUN_00304764(short *param_1,double *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + short *psVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + + if (param_3 == 1) { + *param_2 = (double)(int)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = (uint)((ulong)param_2 >> 3) & 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (double)(int)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (double)(int)param_1[1]; + if (((uVar4 != 2) && (param_2[2] = (double)(int)param_1[2], uVar4 != 3)) && + ((param_2[3] = (double)(int)param_1[3], uVar4 != 4 && + ((param_2[4] = (double)(int)param_1[4], uVar4 != 5 && + (param_2[5] = (double)(int)param_1[5], uVar4 != 6)))))) { + param_2[6] = (double)(int)param_1[6]; + if (uVar4 == 8) { + param_2[7] = (double)(int)param_1[7]; + } + else { + uVar6 = 7; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar4) { + uVar7 = 0; + pdVar5 = param_2 + uVar4; + psVar8 = param_1 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar12._0_8_ = (long)(int)*psVar8; + auVar12._8_8_ = (long)(int)psVar8[1]; + auVar10._0_8_ = (long)(int)psVar8[2]; + auVar10._8_8_ = (long)(int)psVar8[3]; + auVar11._0_8_ = (long)(int)psVar8[4]; + auVar11._8_8_ = (long)(int)psVar8[5]; + auVar9._0_8_ = (long)(int)psVar8[6]; + auVar9._8_8_ = (long)(int)psVar8[7]; + auVar12 = NEON_scvtf(auVar12,8); + pdVar5[1] = auVar12._8_8_; + *pdVar5 = auVar12._0_8_; + auVar10 = NEON_scvtf(auVar10,8); + auVar11 = NEON_scvtf(auVar11,8); + auVar9 = NEON_scvtf(auVar9,8); + pdVar5[3] = auVar10._8_8_; + pdVar5[2] = auVar10._0_8_; + pdVar5[5] = auVar11._8_8_; + pdVar5[4] = auVar11._0_8_; + pdVar5[7] = auVar9._8_8_; + pdVar5[6] = auVar9._0_8_; + pdVar5 = pdVar5 + 8; + psVar8 = psVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (double)(int)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (double)(int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 3; + param_2[iVar2] = (double)(int)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 4; + param_2[iVar3] = (double)(int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + iVar3 = uVar6 + 5; + param_2[iVar2] = (double)(int)param_1[iVar2]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 6; + param_2[iVar3] = (double)(int)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (double)(int)param_1[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 003049b8 (312 bytes) name=FUN_003049b8 + +void FUN_003049b8(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 *puVar4; + long lVar5; + ulong uVar6; + uint uVar7; + undefined8 *puVar8; + uint uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 4 && param_1 < param_2 + 4) || (param_3 < 0xc)) { + lVar5 = 0; + do { + param_2[lVar5] = param_1[lVar5]; + lVar5 = lVar5 + 1; + } while ((int)lVar5 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar2 = param_3; + if (uVar9 < param_3) { + uVar2 = uVar9; + } + uVar9 = uVar2; + if ((uVar2 != 0) && (*param_2 = *param_1, uVar2 != 1)) { + param_2[1] = param_1[1]; + if (uVar2 == 3) { + param_2[2] = param_1[2]; + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_3 - uVar2) - 4 >> 2) + 1; + uVar7 = 0; + iVar3 = uVar1 * 4; + puVar4 = (undefined8 *)(param_2 + uVar2); + puVar8 = (undefined8 *)(param_1 + uVar2); + do { + uVar10 = *puVar8; + uVar7 = uVar7 + 1; + puVar4[1] = puVar8[1]; + *puVar4 = uVar10; + puVar4 = puVar4 + 2; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar1); + uVar9 = uVar9 + iVar3; + if (param_3 - uVar2 != iVar3) { + uVar6 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar9 << 2; + *(undefined4 *)((long)param_2 + uVar6) = *(undefined4 *)((long)param_1 + uVar6); + if (((int)(uVar9 + 1) < (int)param_3) && + (*(undefined4 *)((long)param_2 + uVar6 + 4) = *(undefined4 *)((long)param_1 + uVar6 + 4), + (int)(uVar9 + 2) < (int)param_3)) { + *(undefined4 *)((long)param_2 + uVar6 + 8) = *(undefined4 *)((long)param_1 + uVar6 + 8); + } + } + } + return; +} + + +================================================================== + +### FUNC 00304af0 (348 bytes) name=FUN_00304af0 + +void FUN_00304af0(int *param_1,float *param_2,uint param_3) + +{ + int iVar1; + int iVar2; + uint uVar3; + ulong uVar4; + float *pfVar5; + ulong uVar6; + uint uVar7; + undefined1 (*pauVar8) [16]; + undefined1 auVar9 [16]; + + if (param_3 == 1) { + *param_2 = (float)*param_1; + return; + } + if ((int)param_3 < 1) { + return; + } + uVar3 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + if (param_3 < uVar3) { + uVar3 = param_3; + } + uVar4 = (ulong)uVar3; + if ((int)param_3 < 5) { + uVar4 = (ulong)param_3; + } + else { + uVar6 = 0; + if (uVar3 == 0) goto LAB_00304b74; + } + uVar3 = (uint)uVar4; + *param_2 = (float)*param_1; + uVar6 = uVar4; + if (uVar3 != 1) { + param_2[1] = (float)param_1[1]; + if (uVar3 != 2) { + param_2[2] = (float)param_1[2]; + if (uVar3 == 4) { + param_2[3] = (float)param_1[3]; + } + else { + uVar6 = 3; + } + } + if (param_3 == uVar3) { + return; + } + } +LAB_00304b74: + iVar2 = param_3 - (int)uVar4; + uVar3 = (iVar2 - 4U >> 2) + 1; + iVar1 = uVar3 * 4; + if (2 < (param_3 - 1) - (int)uVar4) { + uVar7 = 0; + pfVar5 = param_2 + uVar4; + pauVar8 = (undefined1 (*) [16])(param_1 + uVar4); + do { + uVar7 = uVar7 + 1; + auVar9 = NEON_scvtf(*pauVar8,4); + *(long *)(pfVar5 + 2) = auVar9._8_8_; + *(long *)pfVar5 = auVar9._0_8_; + pfVar5 = pfVar5 + 4; + pauVar8 = pauVar8 + 1; + } while (uVar7 < uVar3); + uVar6 = (ulong)(uint)((int)uVar6 + iVar1); + if (iVar2 == iVar1) { + return; + } + } + uVar4 = -(uVar6 >> 0x1f) & 0xfffffffc00000000 | uVar6 << 2; + *(float *)((long)param_2 + uVar4) = (float)*(int *)((long)param_1 + uVar4); + if (((int)uVar6 + 1 < (int)param_3) && + (*(float *)((long)param_2 + uVar4 + 4) = (float)*(int *)((long)param_1 + uVar4 + 4), + (int)uVar6 + 2 < (int)param_3)) { + *(float *)((long)param_2 + uVar4 + 8) = (float)*(int *)((long)param_1 + uVar4 + 8); + } + return; +} + + +================================================================== + +### FUNC 00304c4c (364 bytes) name=FUN_00304c4c + +void FUN_00304c4c(int *param_1,double *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + int *piVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + + if (param_3 == 1) { + *param_2 = (double)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = (uint)((ulong)param_2 >> 3) & 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 5) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (double)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (double)param_1[1]; + if (uVar4 != 2) { + param_2[2] = (double)param_1[2]; + if (uVar4 == 4) { + param_2[3] = (double)param_1[3]; + } + else { + uVar6 = 3; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 4 >> 2) + 1; + iVar3 = uVar1 * 4; + if (2 < (param_3 - 1) - uVar4) { + uVar7 = 0; + pdVar5 = param_2 + uVar4; + piVar8 = param_1 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar10._0_8_ = (long)*piVar8; + auVar10._8_8_ = (long)piVar8[1]; + auVar9._0_8_ = (long)piVar8[2]; + auVar9._8_8_ = (long)piVar8[3]; + auVar10 = NEON_scvtf(auVar10,8); + pdVar5[1] = auVar10._8_8_; + *pdVar5 = auVar10._0_8_; + auVar9 = NEON_scvtf(auVar9,8); + pdVar5[3] = auVar9._8_8_; + pdVar5[2] = auVar9._0_8_; + pdVar5 = pdVar5 + 4; + piVar8 = piVar8 + 4; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (double)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (double)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (double)param_1[iVar2]; + } + } + } + return; +} + + +================================================================== + +### FUNC 00304db8 (312 bytes) name=FUN_00304db8 + +void FUN_00304db8(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 *puVar4; + long lVar5; + ulong uVar6; + uint uVar7; + undefined8 *puVar8; + uint uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 4 && param_1 < param_2 + 4) || (param_3 < 0xc)) { + lVar5 = 0; + do { + param_2[lVar5] = param_1[lVar5]; + lVar5 = lVar5 + 1; + } while ((int)lVar5 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar2 = param_3; + if (uVar9 < param_3) { + uVar2 = uVar9; + } + uVar9 = uVar2; + if ((uVar2 != 0) && (*param_2 = *param_1, uVar2 != 1)) { + param_2[1] = param_1[1]; + if (uVar2 == 3) { + param_2[2] = param_1[2]; + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_3 - uVar2) - 4 >> 2) + 1; + uVar7 = 0; + iVar3 = uVar1 * 4; + puVar4 = (undefined8 *)(param_2 + uVar2); + puVar8 = (undefined8 *)(param_1 + uVar2); + do { + uVar10 = *puVar8; + uVar7 = uVar7 + 1; + puVar4[1] = puVar8[1]; + *puVar4 = uVar10; + puVar4 = puVar4 + 2; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar1); + uVar9 = uVar9 + iVar3; + if (param_3 - uVar2 != iVar3) { + uVar6 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar9 << 2; + *(undefined4 *)((long)param_2 + uVar6) = *(undefined4 *)((long)param_1 + uVar6); + if (((int)(uVar9 + 1) < (int)param_3) && + (*(undefined4 *)((long)param_2 + uVar6 + 4) = *(undefined4 *)((long)param_1 + uVar6 + 4), + (int)(uVar9 + 2) < (int)param_3)) { + *(undefined4 *)((long)param_2 + uVar6 + 8) = *(undefined4 *)((long)param_1 + uVar6 + 8); + } + } + } + return; +} + + +================================================================== + +### FUNC 00304ef0 (356 bytes) name=FUN_00304ef0 + +void FUN_00304ef0(float *param_1,double *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + float *pfVar8; + undefined8 uVar9; + undefined8 uVar10; + + if (param_3 == 1) { + *param_2 = (double)*param_1; + return; + } + if (0 < (int)param_3) { + uVar4 = (uint)((ulong)param_2 >> 3) & 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 5) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_2 = (double)*param_1, uVar6 = uVar4, uVar4 != 1)) { + param_2[1] = (double)param_1[1]; + if (uVar4 != 2) { + param_2[2] = (double)param_1[2]; + if (uVar4 == 4) { + param_2[3] = (double)param_1[3]; + } + else { + uVar6 = 3; + } + } + if (param_3 == uVar4) { + return; + } + } + uVar1 = ((param_3 - uVar4) - 4 >> 2) + 1; + iVar3 = uVar1 * 4; + if (2 < (param_3 - 1) - uVar4) { + uVar7 = 0; + pdVar5 = param_2 + uVar4; + pfVar8 = param_1 + uVar4; + do { + uVar10 = *(undefined8 *)(pfVar8 + 2); + uVar9 = *(undefined8 *)pfVar8; + uVar7 = uVar7 + 1; + pdVar5[1] = (double)(float)((ulong)uVar9 >> 0x20); + *pdVar5 = (double)(float)uVar9; + pdVar5[3] = (double)(float)((ulong)uVar10 >> 0x20); + pdVar5[2] = (double)(float)uVar10; + pdVar5 = pdVar5 + 4; + pfVar8 = pfVar8 + 4; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_3 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_2[(int)uVar6] = (double)param_1[(int)uVar6]; + if (iVar3 < (int)param_3) { + iVar2 = uVar6 + 2; + param_2[iVar3] = (double)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (double)param_1[iVar2]; + } + } + } + return; +} + + +================================================================== + +### FUNC 00305054 (356 bytes) name=FUN_00305054 + +void FUN_00305054(double *param_1,float *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + double dVar4; + uint uVar5; + float *pfVar6; + uint uVar7; + double *pdVar8; + uint uVar9; + double dVar10; + + if (param_3 == 1) { + *param_2 = (float)*param_1; + return; + } + if (0 < (int)param_3) { + uVar5 = (uint)((ulong)param_1 >> 3) & 1; + if (param_3 < uVar5) { + uVar5 = param_3; + } + uVar1 = param_3; + if ((((int)param_3 < 5) || (uVar1 = uVar5, uVar7 = 0, uVar5 != 0)) && + (uVar5 = uVar1, *param_2 = (float)*param_1, uVar7 = uVar5, uVar5 != 1)) { + param_2[1] = (float)param_1[1]; + if (uVar5 != 2) { + param_2[2] = (float)param_1[2]; + if (uVar5 == 4) { + param_2[3] = (float)param_1[3]; + } + else { + uVar7 = 3; + } + } + if (param_3 == uVar5) { + return; + } + } + uVar1 = ((param_3 - uVar5) - 4 >> 2) + 1; + iVar3 = uVar1 * 4; + if (2 < (param_3 - 1) - uVar5) { + uVar9 = 0; + pfVar6 = param_2 + uVar5; + pdVar8 = param_1 + uVar5; + do { + dVar10 = pdVar8[1]; + dVar4 = *pdVar8; + uVar9 = uVar9 + 1; + *(ulong *)(pfVar6 + 2) = CONCAT44((float)pdVar8[3],(float)pdVar8[2]); + *(ulong *)pfVar6 = CONCAT44((float)dVar10,(float)dVar4); + pfVar6 = pfVar6 + 4; + pdVar8 = pdVar8 + 4; + } while (uVar9 < uVar1); + uVar7 = uVar7 + iVar3; + if (param_3 - uVar5 == iVar3) { + return; + } + } + iVar3 = uVar7 + 1; + param_2[(int)uVar7] = (float)param_1[(int)uVar7]; + if (iVar3 < (int)param_3) { + iVar2 = uVar7 + 2; + param_2[iVar3] = (float)param_1[iVar3]; + if (iVar2 < (int)param_3) { + param_2[iVar2] = (float)param_1[iVar2]; + } + } + } + return; +} + + +================================================================== + +### FUNC 003051b8 (216 bytes) name=FUN_003051b8 + +void FUN_003051b8(undefined8 *param_1,undefined8 *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + ulong uVar4; + undefined8 *puVar5; + long lVar6; + uint uVar7; + undefined8 *puVar8; + undefined8 uVar9; + + if (param_3 == 1) { + *param_2 = *param_1; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 2 && param_1 < param_2 + 2) || (param_3 < 0xe)) { + lVar6 = 0; + do { + param_2[lVar6] = param_1[lVar6]; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar1 = (uint)((ulong)param_1 >> 3) & 1; + uVar2 = param_3; + if (uVar1 < param_3) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + *param_2 = *param_1; + } + uVar1 = ((param_3 - uVar2) - 2 >> 1) + 1; + uVar7 = 0; + iVar3 = uVar1 * 2; + puVar5 = param_2 + uVar2; + puVar8 = param_1 + uVar2; + do { + uVar9 = *puVar8; + uVar7 = uVar7 + 1; + puVar5[1] = puVar8[1]; + *puVar5 = uVar9; + puVar5 = puVar5 + 2; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar3; + if (param_3 - uVar2 != iVar3) { + uVar4 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)param_2 + uVar4) = *(undefined8 *)((long)param_1 + uVar4); + } + } + return; +} + + +================================================================== + +### FUNC 00305290 (1076 bytes) name=FUN_00305290 + +void FUN_00305290(double param_1,double param_2,float *param_3,float *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + float *pfVar6; + long lVar7; + uint uVar8; + uint uVar9; + byte *pbVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * (double)*(byte *)param_3); + return; + } + /* try { // try from 00305298 to 004052b3 has its CatchHandler @ 00303fe8 */ + if (0 < (int)param_5) { + if ((param_3 < param_4 + (int)param_5 && param_4 < (float *)((long)param_3 + (long)(int)param_5) + ) || (param_5 < 0x13)) { + lVar7 = 0; + do { + param_4[lVar7] = (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + lVar7)); + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_5); + return; + } + uVar9 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + uVar4 = param_5; + if (uVar9 < param_5) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if ((uVar4 != 0) && + (*param_4 = (float)(param_2 + param_1 * (double)*(byte *)param_3), uVar4 != 1)) { + param_4[1] = (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + 1)); + if (uVar4 == 3) { + param_4[2] = (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + 2)); + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_5 - uVar4) - 0x10 >> 4) + 1; + uVar8 = 0; + iVar5 = uVar1 * 0x10; + pfVar6 = param_4 + uVar4; + pbVar10 = (byte *)((long)param_3 + (ulong)uVar4); + do { + uVar8 = uVar8 + 1; + auVar15._0_8_ = (long)(int)(CONCAT12(pbVar10[1],(ushort)*pbVar10) & 0xffff); + auVar15._8_8_ = (long)(int)(uint)pbVar10[1]; + auVar14._0_8_ = (long)(int)(uint)pbVar10[2]; + auVar14._8_8_ = (long)(int)(uint)pbVar10[3]; + auVar18._0_8_ = (long)(int)(uint)pbVar10[4]; + auVar18._8_8_ = (long)(int)(uint)pbVar10[5]; + auVar19._0_8_ = (long)(int)(CONCAT12(pbVar10[9],(ushort)pbVar10[8]) & 0xffff); + auVar19._8_8_ = (long)(int)(uint)pbVar10[9]; + auVar16 = NEON_scvtf(auVar15,8); + auVar14 = NEON_scvtf(auVar14,8); + auVar18 = NEON_scvtf(auVar18,8); + auVar17._0_8_ = (long)(int)(uint)pbVar10[0xc]; + auVar17._8_8_ = (long)(int)(uint)pbVar10[0xd]; + auVar19 = NEON_scvtf(auVar19,8); + auVar12._0_8_ = (long)(int)(uint)pbVar10[6]; + auVar12._8_8_ = (long)(int)(uint)pbVar10[7]; + auVar13._0_8_ = (long)(int)(uint)pbVar10[10]; + auVar13._8_8_ = (long)(int)(uint)pbVar10[0xb]; + auVar12 = NEON_scvtf(auVar12,8); + auVar15 = NEON_scvtf(auVar17,8); + auVar13 = NEON_scvtf(auVar13,8); + auVar11._0_8_ = (long)(int)(uint)pbVar10[0xe]; + auVar11._8_8_ = (long)(int)(uint)pbVar10[0xf]; + auVar11 = NEON_scvtf(auVar11,8); + *(ulong *)(pfVar6 + 2) = + CONCAT44((float)(param_2 + auVar14._8_8_ * param_1), + (float)(param_2 + auVar14._0_8_ * param_1)); + *(ulong *)pfVar6 = + CONCAT44((float)(param_2 + auVar16._8_8_ * param_1), + (float)(param_2 + auVar16._0_8_ * param_1)); + *(ulong *)(pfVar6 + 6) = + CONCAT44((float)(param_2 + auVar12._8_8_ * param_1), + (float)(param_2 + auVar12._0_8_ * param_1)); + *(ulong *)(pfVar6 + 4) = + CONCAT44((float)(param_2 + auVar18._8_8_ * param_1), + (float)(param_2 + auVar18._0_8_ * param_1)); + *(ulong *)(pfVar6 + 10) = + CONCAT44((float)(param_2 + auVar13._8_8_ * param_1), + (float)(param_2 + auVar13._0_8_ * param_1)); + *(ulong *)(pfVar6 + 8) = + CONCAT44((float)(param_2 + auVar19._8_8_ * param_1), + (float)(param_2 + auVar19._0_8_ * param_1)); + *(ulong *)(pfVar6 + 0xe) = + CONCAT44((float)(param_2 + auVar11._8_8_ * param_1), + (float)(param_2 + auVar11._0_8_ * param_1)); + *(ulong *)(pfVar6 + 0xc) = + CONCAT44((float)(param_2 + auVar15._8_8_ * param_1), + (float)(param_2 + auVar15._0_8_ * param_1)); + pfVar6 = pfVar6 + 0x10; + pbVar10 = pbVar10 + 0x10; + } while (uVar8 < uVar1); + iVar3 = uVar9 + iVar5; + if (param_5 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_4[iVar3] = (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar3)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 2; + param_4[iVar5] = (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5)) + ; + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 3; + param_4[iVar2] = + (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 4; + param_4[iVar5] = + (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 5; + param_4[iVar2] = + (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 6; + param_4[iVar5] = + (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 7; + param_4[iVar2] = + (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 8; + param_4[iVar5] = + (float)(param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5)) + ; + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 9; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 10; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xb; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 0xc; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xd; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar3 = iVar3 + 0xe; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5) + ); + if (iVar3 < (int)param_5) { + param_4[iVar3] = + (float)(param_2 + + param_1 * (double)*(byte *)((long)param_3 + + (long)iVar3)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 003056c4 (932 bytes) name=FUN_003056c4 + +void FUN_003056c4(double param_1,double param_2,double *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + byte bVar6; + byte bVar7; + byte bVar8; + byte bVar9; + double *pdVar10; + long lVar11; + uint uVar12; + byte *pbVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * (double)*(byte *)param_3; + return; + } + if (0 < (int)param_5) { + if ((param_3 < param_4 + (int)param_5 && + param_4 < (double *)((long)param_3 + (long)(int)param_5)) || (param_5 < 0x14)) { + lVar11 = 0; + do { + param_4[lVar11] = param_2 + param_1 * (double)*(byte *)((long)param_3 + lVar11); + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)param_5); + return; + } + uVar1 = (uint)((ulong)param_4 >> 3) & 1; + uVar4 = param_5; + if (uVar1 < param_5) { + uVar4 = uVar1; + } + if (uVar4 != 0) { + *param_4 = param_2 + param_1 * (double)*(byte *)param_3; + } + uVar1 = ((param_5 - uVar4) - 0x10 >> 4) + 1; + uVar12 = 0; + iVar5 = uVar1 * 0x10; + pdVar10 = param_4 + uVar4; + pbVar13 = (byte *)((long)param_3 + (ulong)uVar4); + do { + bVar6 = pbVar13[0xc]; + bVar7 = pbVar13[0xd]; + bVar8 = pbVar13[0xe]; + bVar9 = pbVar13[0xf]; + uVar12 = uVar12 + 1; + auVar20._0_8_ = (long)(int)(CONCAT12(pbVar13[1],(ushort)*pbVar13) & 0xffff); + auVar20._8_8_ = (long)(int)(uint)pbVar13[1]; + auVar21._0_8_ = (long)(int)(uint)pbVar13[4]; + auVar21._8_8_ = (long)(int)(uint)pbVar13[5]; + auVar14._0_8_ = (long)(int)(uint)pbVar13[6]; + auVar14._8_8_ = (long)(int)(uint)pbVar13[7]; + auVar16._0_8_ = (long)(int)(uint)pbVar13[2]; + auVar16._8_8_ = (long)(int)(uint)pbVar13[3]; + auVar18 = NEON_scvtf(auVar20,8); + auVar21 = NEON_scvtf(auVar21,8); + auVar19._0_8_ = (long)(int)(CONCAT12(pbVar13[9],(ushort)pbVar13[8]) & 0xffff); + auVar19._8_8_ = (long)(int)(uint)pbVar13[9]; + auVar14 = NEON_scvtf(auVar14,8); + auVar15._0_8_ = (long)(int)(uint)pbVar13[10]; + auVar15._8_8_ = (long)(int)(uint)pbVar13[0xb]; + auVar16 = NEON_scvtf(auVar16,8); + pdVar10[1] = param_2 + auVar18._8_8_ * param_1; + *pdVar10 = param_2 + auVar18._0_8_ * param_1; + auVar20 = NEON_scvtf(auVar19,8); + auVar17._0_8_ = (long)(int)(uint)bVar6; + auVar17._8_8_ = (long)(int)(uint)bVar7; + auVar15 = NEON_scvtf(auVar15,8); + auVar18._0_8_ = (long)(int)(uint)bVar8; + auVar18._8_8_ = (long)(int)(uint)bVar9; + pdVar10[3] = param_2 + auVar16._8_8_ * param_1; + pdVar10[2] = param_2 + auVar16._0_8_ * param_1; + auVar18 = NEON_scvtf(auVar18,8); + pdVar10[5] = param_2 + auVar21._8_8_ * param_1; + pdVar10[4] = param_2 + auVar21._0_8_ * param_1; + pdVar10[7] = param_2 + auVar14._8_8_ * param_1; + pdVar10[6] = param_2 + auVar14._0_8_ * param_1; + auVar14 = NEON_scvtf(auVar17,8); + pdVar10[9] = param_2 + auVar20._8_8_ * param_1; + pdVar10[8] = param_2 + auVar20._0_8_ * param_1; + pdVar10[0xb] = param_2 + auVar15._8_8_ * param_1; + pdVar10[10] = param_2 + auVar15._0_8_ * param_1; + pdVar10[0xd] = param_2 + auVar14._8_8_ * param_1; + pdVar10[0xc] = param_2 + auVar14._0_8_ * param_1; + pdVar10[0xf] = param_2 + auVar18._8_8_ * param_1; + pdVar10[0xe] = param_2 + auVar18._0_8_ * param_1; + pdVar10 = pdVar10 + 0x10; + pbVar13 = pbVar13 + 0x10; + } while (uVar12 < uVar1); + iVar3 = (uint)(uVar4 != 0) + iVar5; + if (param_5 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_4[iVar3] = param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar3); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 2; + param_4[iVar5] = param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 3; + param_4[iVar2] = param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 4; + param_4[iVar5] = param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 5; + param_4[iVar2] = param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 6; + param_4[iVar5] = param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 7; + param_4[iVar2] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 8; + param_4[iVar5] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 9; + param_4[iVar2] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 10; + param_4[iVar5] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xb; + param_4[iVar2] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 0xc; + param_4[iVar5] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xd; + param_4[iVar2] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + (long)iVar2 + ); + if (iVar5 < (int)param_5) { + iVar3 = iVar3 + 0xe; + param_4[iVar5] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + + (long)iVar5); + if (iVar3 < (int)param_5) { + param_4[iVar3] = + param_2 + param_1 * (double)*(byte *)((long)param_3 + + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00305a68 (1076 bytes) name=FUN_00305a68 + +void FUN_00305a68(double param_1,double param_2,float *param_3,float *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + float *pfVar6; + long lVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * (double)(int)*(char *)param_3); + return; + } + if (0 < (int)param_5) { + if ((param_3 < param_4 + (int)param_5 && param_4 < (float *)((long)param_3 + (long)(int)param_5) + ) || (param_5 < 0x13)) { + lVar7 = 0; + do { + param_4[lVar7] = (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + lVar7)); + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_5); + return; + } + uVar9 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + uVar4 = param_5; + if (uVar9 < param_5) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if ((uVar4 != 0) && + (*param_4 = (float)(param_2 + param_1 * (double)(int)*(char *)param_3), uVar4 != 1)) { + param_4[1] = (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + 1)); + if (uVar4 == 3) { + param_4[2] = (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + 2)); + } + else { + uVar9 = 2; + } + } + uVar1 = ((param_5 - uVar4) - 0x10 >> 4) + 1; + uVar8 = 0; + iVar5 = uVar1 * 0x10; + pfVar6 = param_4 + uVar4; + pcVar10 = (char *)((long)param_3 + (ulong)uVar4); + do { + uVar8 = uVar8 + 1; + auVar15._0_8_ = (long)(int)(short)*pcVar10; + auVar15._8_8_ = (long)(int)(short)pcVar10[1]; + auVar14._0_8_ = (long)(int)(short)pcVar10[2]; + auVar14._8_8_ = (long)(int)(short)pcVar10[3]; + auVar18._0_8_ = (long)(int)(short)pcVar10[4]; + auVar18._8_8_ = (long)(int)(short)pcVar10[5]; + auVar19._0_8_ = (long)(int)(short)pcVar10[8]; + auVar19._8_8_ = (long)(int)(short)pcVar10[9]; + auVar16 = NEON_scvtf(auVar15,8); + auVar14 = NEON_scvtf(auVar14,8); + auVar18 = NEON_scvtf(auVar18,8); + auVar17._0_8_ = (long)(int)(short)pcVar10[0xc]; + auVar17._8_8_ = (long)(int)(short)pcVar10[0xd]; + auVar19 = NEON_scvtf(auVar19,8); + auVar12._0_8_ = (long)(int)(short)pcVar10[6]; + auVar12._8_8_ = (long)(int)(short)pcVar10[7]; + auVar13._0_8_ = (long)(int)(short)pcVar10[10]; + auVar13._8_8_ = (long)(int)(short)pcVar10[0xb]; + auVar12 = NEON_scvtf(auVar12,8); + auVar15 = NEON_scvtf(auVar17,8); + auVar13 = NEON_scvtf(auVar13,8); + auVar11._0_8_ = (long)(int)(short)pcVar10[0xe]; + auVar11._8_8_ = (long)(int)(short)pcVar10[0xf]; + auVar11 = NEON_scvtf(auVar11,8); + *(ulong *)(pfVar6 + 2) = + CONCAT44((float)(param_2 + auVar14._8_8_ * param_1), + (float)(param_2 + auVar14._0_8_ * param_1)); + *(ulong *)pfVar6 = + CONCAT44((float)(param_2 + auVar16._8_8_ * param_1), + (float)(param_2 + auVar16._0_8_ * param_1)); + *(ulong *)(pfVar6 + 6) = + CONCAT44((float)(param_2 + auVar12._8_8_ * param_1), + (float)(param_2 + auVar12._0_8_ * param_1)); + *(ulong *)(pfVar6 + 4) = + CONCAT44((float)(param_2 + auVar18._8_8_ * param_1), + (float)(param_2 + auVar18._0_8_ * param_1)); + *(ulong *)(pfVar6 + 10) = + CONCAT44((float)(param_2 + auVar13._8_8_ * param_1), + (float)(param_2 + auVar13._0_8_ * param_1)); + *(ulong *)(pfVar6 + 8) = + CONCAT44((float)(param_2 + auVar19._8_8_ * param_1), + (float)(param_2 + auVar19._0_8_ * param_1)); + *(ulong *)(pfVar6 + 0xe) = + CONCAT44((float)(param_2 + auVar11._8_8_ * param_1), + (float)(param_2 + auVar11._0_8_ * param_1)); + *(ulong *)(pfVar6 + 0xc) = + CONCAT44((float)(param_2 + auVar15._8_8_ * param_1), + (float)(param_2 + auVar15._0_8_ * param_1)); + pfVar6 = pfVar6 + 0x10; + pcVar10 = pcVar10 + 0x10; + } while (uVar8 < uVar1); + iVar3 = uVar9 + iVar5; + if (param_5 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_4[iVar3] = + (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar3)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 2; + param_4[iVar5] = + (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 3; + param_4[iVar2] = + (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 4; + param_4[iVar5] = + (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 5; + param_4[iVar2] = + (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 6; + param_4[iVar5] = + (float)(param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5) + ); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 7; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 8; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 9; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 10; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5)); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xb; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2)) + ; + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 0xc; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5 + )); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xd; + param_4[iVar2] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar2)); + if (iVar5 < (int)param_5) { + iVar3 = iVar3 + 0xe; + param_4[iVar5] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar5)); + if (iVar3 < (int)param_5) { + param_4[iVar3] = + (float)(param_2 + + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar3)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00305e9c (932 bytes) name=FUN_00305e9c + +void FUN_00305e9c(double param_1,double param_2,double *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + char cVar6; + char cVar7; + char cVar8; + char cVar9; + double *pdVar10; + long lVar11; + uint uVar12; + char *pcVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * (double)(int)*(char *)param_3; + return; + } + if (0 < (int)param_5) { + if ((param_3 < param_4 + (int)param_5 && + param_4 < (double *)((long)param_3 + (long)(int)param_5)) || (param_5 < 0x14)) { + lVar11 = 0; + do { + param_4[lVar11] = param_2 + param_1 * (double)(int)*(char *)((long)param_3 + lVar11); + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)param_5); + return; + } + uVar1 = (uint)((ulong)param_4 >> 3) & 1; + uVar4 = param_5; + if (uVar1 < param_5) { + uVar4 = uVar1; + } + if (uVar4 != 0) { + *param_4 = param_2 + param_1 * (double)(int)*(char *)param_3; + } + uVar1 = ((param_5 - uVar4) - 0x10 >> 4) + 1; + uVar12 = 0; + iVar5 = uVar1 * 0x10; + pdVar10 = param_4 + uVar4; + pcVar13 = (char *)((long)param_3 + (ulong)uVar4); + do { + cVar6 = pcVar13[0xc]; + cVar7 = pcVar13[0xd]; + cVar8 = pcVar13[0xe]; + cVar9 = pcVar13[0xf]; + uVar12 = uVar12 + 1; + auVar20._0_8_ = (long)(int)(short)*pcVar13; + auVar20._8_8_ = (long)(int)(short)pcVar13[1]; + auVar21._0_8_ = (long)(int)(short)pcVar13[4]; + auVar21._8_8_ = (long)(int)(short)pcVar13[5]; + auVar14._0_8_ = (long)(int)(short)pcVar13[6]; + auVar14._8_8_ = (long)(int)(short)pcVar13[7]; + auVar16._0_8_ = (long)(int)(short)pcVar13[2]; + auVar16._8_8_ = (long)(int)(short)pcVar13[3]; + auVar18 = NEON_scvtf(auVar20,8); + auVar21 = NEON_scvtf(auVar21,8); + auVar19._0_8_ = (long)(int)(short)pcVar13[8]; + auVar19._8_8_ = (long)(int)(short)pcVar13[9]; + auVar14 = NEON_scvtf(auVar14,8); + /* try { // try from 00305f98 to 00405f9b has its CatchHandler @ 00305fc0 */ + auVar15._0_8_ = (long)(int)(short)pcVar13[10]; + auVar15._8_8_ = (long)(int)(short)pcVar13[0xb]; + auVar16 = NEON_scvtf(auVar16,8); + /* catch() { ... } // from try @ 003040c4 with catch @ 00305fa4 + catch() { ... } // from try @ 00305fbc with catch @ 00305fa4 */ + pdVar10[1] = param_2 + auVar18._8_8_ * param_1; + *pdVar10 = param_2 + auVar18._0_8_ * param_1; + auVar20 = NEON_scvtf(auVar19,8); + auVar17._0_8_ = (long)(int)(short)cVar6; + auVar17._8_8_ = (long)(int)(short)cVar7; + auVar15 = NEON_scvtf(auVar15,8); + /* try { // try from 00305fb8 to 00405fbb has its CatchHandler @ 00303fe8 */ + auVar18._0_8_ = (long)(int)(short)cVar8; + auVar18._8_8_ = (long)(int)(short)cVar9; + /* try { // try from 00305fbc to 00405fbf has its CatchHandler @ 00305fa4 */ + pdVar10[3] = param_2 + auVar16._8_8_ * param_1; + pdVar10[2] = param_2 + auVar16._0_8_ * param_1; + /* catch() { ... } // from try @ 003040f8 with catch @ 00305fc0 + catch() { ... } // from try @ 00305f98 with catch @ 00305fc0 */ + auVar18 = NEON_scvtf(auVar18,8); + pdVar10[5] = param_2 + auVar21._8_8_ * param_1; + pdVar10[4] = param_2 + auVar21._0_8_ * param_1; + /* catch() { ... } // from try @ 00306780 with catch @ 00305fd0 + catch() { ... } // from try @ 003068a0 with catch @ 00305fd0 + catch() { ... } // from try @ 00306a70 with catch @ 00305fd0 */ + pdVar10[7] = param_2 + auVar14._8_8_ * param_1; + pdVar10[6] = param_2 + auVar14._0_8_ * param_1; + auVar14 = NEON_scvtf(auVar17,8); + pdVar10[9] = param_2 + auVar20._8_8_ * param_1; + pdVar10[8] = param_2 + auVar20._0_8_ * param_1; + pdVar10[0xb] = param_2 + auVar15._8_8_ * param_1; + pdVar10[10] = param_2 + auVar15._0_8_ * param_1; + pdVar10[0xd] = param_2 + auVar14._8_8_ * param_1; + pdVar10[0xc] = param_2 + auVar14._0_8_ * param_1; + pdVar10[0xf] = param_2 + auVar18._8_8_ * param_1; + pdVar10[0xe] = param_2 + auVar18._0_8_ * param_1; + pdVar10 = pdVar10 + 0x10; + pcVar13 = pcVar13 + 0x10; + } while (uVar12 < uVar1); + iVar3 = (uint)(uVar4 != 0) + iVar5; + if (param_5 - uVar4 != iVar5) { + iVar5 = iVar3 + 1; + param_4[iVar3] = param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar3); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 2; + param_4[iVar5] = param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 3; + param_4[iVar2] = param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 4; + param_4[iVar5] = param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5) + ; + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 5; + param_4[iVar2] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 6; + param_4[iVar5] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 7; + param_4[iVar2] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 8; + param_4[iVar5] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 9; + param_4[iVar2] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 10; + param_4[iVar5] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + (long)iVar5) + ; + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xb; + param_4[iVar2] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar2 = iVar3 + 0xc; + param_4[iVar5] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar5); + if (iVar2 < (int)param_5) { + iVar5 = iVar3 + 0xd; + param_4[iVar2] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar2); + if (iVar5 < (int)param_5) { + iVar3 = iVar3 + 0xe; + param_4[iVar5] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar5); + if (iVar3 < (int)param_5) { + param_4[iVar3] = + param_2 + param_1 * (double)(int)*(char *)((long)param_3 + + (long)iVar3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00306240 (784 bytes) name=FUN_00306240 + +void FUN_00306240(double param_1,double param_2,ushort *param_3,float *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + ushort *puVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * (double)*param_3); + return; + } + if (0 < (int)param_5) { + uVar4 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + if (param_5 < uVar4) { + uVar4 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_4 = (float)(param_2 + param_1 * (double)*param_3), uVar6 = uVar4, + uVar4 != 1)) { + param_4[1] = (float)(param_2 + param_1 * (double)param_3[1]); + if (((uVar4 != 2) && + (param_4[2] = (float)(param_2 + param_1 * (double)param_3[2]), uVar4 != 3)) && + ((param_4[3] = (float)(param_2 + param_1 * (double)param_3[3]), uVar4 != 4 && + ((param_4[4] = (float)(param_2 + param_1 * (double)param_3[4]), uVar4 != 5 && + (param_4[5] = (float)(param_2 + param_1 * (double)param_3[5]), uVar4 != 6)))))) { + param_4[6] = (float)(param_2 + param_1 * (double)param_3[6]); + if (uVar4 == 8) { + param_4[7] = (float)(param_2 + param_1 * (double)param_3[7]); + } + else { + uVar6 = 7; + } + } + if (param_5 == uVar4) { + return; + } + } + uVar1 = ((param_5 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_5 - 1) - uVar4) { + uVar7 = 0; + pfVar5 = param_4 + uVar4; + puVar8 = param_3 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar12._0_8_ = (long)(int)(uint)*puVar8; + auVar12._8_8_ = (long)(int)(uint)puVar8[1]; + auVar10._0_8_ = (long)(int)(uint)puVar8[2]; + auVar10._8_8_ = (long)(int)(uint)puVar8[3]; + auVar9._0_8_ = (long)(int)(uint)puVar8[6]; + auVar9._8_8_ = (long)(int)(uint)puVar8[7]; + auVar12 = NEON_scvtf(auVar12,8); + auVar10 = NEON_scvtf(auVar10,8); + auVar9 = NEON_scvtf(auVar9,8); + auVar11._8_8_ = (long)(int)(uint)puVar8[5]; + auVar11._0_8_ = (long)(int)(uint)puVar8[4]; + auVar11 = NEON_scvtf(auVar11,8); + *(ulong *)(pfVar5 + 2) = + CONCAT44((float)(param_2 + auVar10._8_8_ * param_1), + (float)(param_2 + auVar10._0_8_ * param_1)); + *(ulong *)pfVar5 = + CONCAT44((float)(param_2 + auVar12._8_8_ * param_1), + (float)(param_2 + auVar12._0_8_ * param_1)); + *(ulong *)(pfVar5 + 6) = + CONCAT44((float)(param_2 + auVar9._8_8_ * param_1), + (float)(param_2 + auVar9._0_8_ * param_1)); + *(ulong *)(pfVar5 + 4) = + CONCAT44((float)(param_2 + auVar11._8_8_ * param_1), + (float)(param_2 + auVar11._0_8_ * param_1)); + pfVar5 = pfVar5 + 8; + puVar8 = puVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_5 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_4[(int)uVar6] = (float)(param_2 + param_1 * (double)param_3[(int)uVar6]); + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 2; + param_4[iVar3] = (float)(param_2 + param_1 * (double)param_3[iVar3]); + if (iVar2 < (int)param_5) { + iVar3 = uVar6 + 3; + param_4[iVar2] = (float)(param_2 + param_1 * (double)param_3[iVar2]); + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 4; + param_4[iVar3] = (float)(param_2 + param_1 * (double)param_3[iVar3]); + if (iVar2 < (int)param_5) { + iVar3 = uVar6 + 5; + param_4[iVar2] = (float)(param_2 + param_1 * (double)param_3[iVar2]); + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 6; + param_4[iVar3] = (float)(param_2 + param_1 * (double)param_3[iVar3]); + if (iVar2 < (int)param_5) { + param_4[iVar2] = (float)(param_2 + param_1 * (double)param_3[iVar2]); + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00306550 (704 bytes) name=FUN_00306550 + +void FUN_00306550(double param_1,double param_2,ushort *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + ushort uVar4; + ushort uVar5; + uint uVar6; + double *pdVar7; + uint uVar8; + uint uVar9; + ushort *puVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * (double)*param_3; + return; + } + if (0 < (int)param_5) { + uVar6 = (uint)((ulong)param_4 >> 3) & 1; + if (param_5 < uVar6) { + uVar6 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 9) || (uVar1 = uVar6, uVar8 = 0, uVar6 != 0)) && + (uVar6 = uVar1, *param_4 = param_2 + param_1 * (double)*param_3, uVar8 = uVar6, uVar6 != 1)) + { + param_4[1] = param_2 + param_1 * (double)param_3[1]; + if (((uVar6 != 2) && (param_4[2] = param_2 + param_1 * (double)param_3[2], uVar6 != 3)) && + ((param_4[3] = param_2 + param_1 * (double)param_3[3], uVar6 != 4 && + ((param_4[4] = param_2 + param_1 * (double)param_3[4], uVar6 != 5 && + (param_4[5] = param_2 + param_1 * (double)param_3[5], uVar6 != 6)))))) { + param_4[6] = param_2 + param_1 * (double)param_3[6]; + if (uVar6 == 8) { + param_4[7] = param_2 + param_1 * (double)param_3[7]; + } + else { + uVar8 = 7; + } + } + if (param_5 == uVar6) { + return; + } + } + uVar1 = ((param_5 - uVar6) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_5 - 1) - uVar6) { + uVar9 = 0; + pdVar7 = param_4 + uVar6; + puVar10 = param_3 + uVar6; + do { + uVar4 = puVar10[4]; + uVar5 = puVar10[5]; + uVar9 = uVar9 + 1; + auVar13._0_8_ = (long)(int)(uint)*puVar10; + auVar13._8_8_ = (long)(int)(uint)puVar10[1]; + auVar12._0_8_ = (long)(int)(uint)puVar10[2]; + auVar12._8_8_ = (long)(int)(uint)puVar10[3]; + auVar11._0_8_ = (long)(int)(uint)puVar10[6]; + auVar11._8_8_ = (long)(int)(uint)puVar10[7]; + auVar14 = NEON_scvtf(auVar13,8); + auVar12 = NEON_scvtf(auVar12,8); + auVar11 = NEON_scvtf(auVar11,8); + pdVar7[1] = param_2 + auVar14._8_8_ * param_1; + *pdVar7 = param_2 + auVar14._0_8_ * param_1; + auVar14._8_8_ = (long)(int)(uint)uVar5; + auVar14._0_8_ = (long)(int)(uint)uVar4; + auVar14 = NEON_scvtf(auVar14,8); + pdVar7[3] = param_2 + auVar12._8_8_ * param_1; + pdVar7[2] = param_2 + auVar12._0_8_ * param_1; + pdVar7[5] = param_2 + auVar14._8_8_ * param_1; + pdVar7[4] = param_2 + auVar14._0_8_ * param_1; + pdVar7[7] = param_2 + auVar11._8_8_ * param_1; + pdVar7[6] = param_2 + auVar11._0_8_ * param_1; + pdVar7 = pdVar7 + 8; + puVar10 = puVar10 + 8; + } while (uVar9 < uVar1); + uVar8 = uVar8 + iVar3; + if (param_5 - uVar6 == iVar3) { + return; + } + } + iVar3 = uVar8 + 1; + param_4[(int)uVar8] = param_2 + param_1 * (double)param_3[(int)uVar8]; + if (iVar3 < (int)param_5) { + iVar2 = uVar8 + 2; + param_4[iVar3] = param_2 + param_1 * (double)param_3[iVar3]; + if (iVar2 < (int)param_5) { + iVar3 = uVar8 + 3; + param_4[iVar2] = param_2 + param_1 * (double)param_3[iVar2]; + if (iVar3 < (int)param_5) { + iVar2 = uVar8 + 4; + param_4[iVar3] = param_2 + param_1 * (double)param_3[iVar3]; + if (iVar2 < (int)param_5) { + iVar3 = uVar8 + 5; + /* try { // try from 00306780 to 00406857 has its CatchHandler @ 00305fd0 */ + param_4[iVar2] = param_2 + param_1 * (double)param_3[iVar2]; + if (iVar3 < (int)param_5) { + iVar2 = uVar8 + 6; + param_4[iVar3] = param_2 + param_1 * (double)param_3[iVar3]; + if (iVar2 < (int)param_5) { + param_4[iVar2] = param_2 + param_1 * (double)param_3[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00306810 (784 bytes) name=FUN_00306810 + +void FUN_00306810(double param_1,double param_2,short *param_3,float *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + uint uVar7; + short *psVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * (double)(int)*param_3); + return; + } + if (0 < (int)param_5) { + uVar4 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + if (param_5 < uVar4) { + uVar4 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 9) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_4 = (float)(param_2 + param_1 * (double)(int)*param_3), uVar6 = uVar4, + uVar4 != 1)) { + param_4[1] = (float)(param_2 + param_1 * (double)(int)param_3[1]); + /* try { // try from 00306898 to 0040689b has its CatchHandler @ 00306a60 */ + /* try { // try from 003068a0 to 00406a4f has its CatchHandler @ 00305fd0 */ + if (((uVar4 != 2) && + (param_4[2] = (float)(param_2 + param_1 * (double)(int)param_3[2]), uVar4 != 3)) && + ((param_4[3] = (float)(param_2 + param_1 * (double)(int)param_3[3]), uVar4 != 4 && + ((param_4[4] = (float)(param_2 + param_1 * (double)(int)param_3[4]), uVar4 != 5 && + (param_4[5] = (float)(param_2 + param_1 * (double)(int)param_3[5]), uVar4 != 6)))))) { + param_4[6] = (float)(param_2 + param_1 * (double)(int)param_3[6]); + if (uVar4 == 8) { + param_4[7] = (float)(param_2 + param_1 * (double)(int)param_3[7]); + } + else { + uVar6 = 7; + } + } + if (param_5 == uVar4) { + return; + } + } + uVar1 = ((param_5 - uVar4) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_5 - 1) - uVar4) { + uVar7 = 0; + pfVar5 = param_4 + uVar4; + psVar8 = param_3 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar12._0_8_ = (long)(int)*psVar8; + auVar12._8_8_ = (long)(int)psVar8[1]; + auVar10._0_8_ = (long)(int)psVar8[2]; + auVar10._8_8_ = (long)(int)psVar8[3]; + auVar9._0_8_ = (long)(int)psVar8[6]; + auVar9._8_8_ = (long)(int)psVar8[7]; + auVar12 = NEON_scvtf(auVar12,8); + auVar10 = NEON_scvtf(auVar10,8); + auVar9 = NEON_scvtf(auVar9,8); + auVar11._8_8_ = (long)(int)psVar8[5]; + auVar11._0_8_ = (long)(int)psVar8[4]; + auVar11 = NEON_scvtf(auVar11,8); + *(ulong *)(pfVar5 + 2) = + CONCAT44((float)(param_2 + auVar10._8_8_ * param_1), + (float)(param_2 + auVar10._0_8_ * param_1)); + *(ulong *)pfVar5 = + CONCAT44((float)(param_2 + auVar12._8_8_ * param_1), + (float)(param_2 + auVar12._0_8_ * param_1)); + *(ulong *)(pfVar5 + 6) = + CONCAT44((float)(param_2 + auVar9._8_8_ * param_1), + (float)(param_2 + auVar9._0_8_ * param_1)); + *(ulong *)(pfVar5 + 4) = + CONCAT44((float)(param_2 + auVar11._8_8_ * param_1), + (float)(param_2 + auVar11._0_8_ * param_1)); + pfVar5 = pfVar5 + 8; + psVar8 = psVar8 + 8; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_5 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_4[(int)uVar6] = (float)(param_2 + param_1 * (double)(int)param_3[(int)uVar6]); + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 2; + param_4[iVar3] = (float)(param_2 + param_1 * (double)(int)param_3[iVar3]); + if (iVar2 < (int)param_5) { + iVar3 = uVar6 + 3; + param_4[iVar2] = (float)(param_2 + param_1 * (double)(int)param_3[iVar2]); + if (iVar3 < (int)param_5) { + /* catch() { ... } // from try @ 00306898 with catch @ 00306a60 */ + iVar2 = uVar6 + 4; + /* try { // try from 00306a70 to 00406a73 has its CatchHandler @ 00305fd0 */ + /* catch() { ... } // from try @ 003075bc with catch @ 00306a74 + catch() { ... } // from try @ 00307608 with catch @ 00306a74 + catch() { ... } // from try @ 003077d4 with catch @ 00306a74 */ + param_4[iVar3] = (float)(param_2 + param_1 * (double)(int)param_3[iVar3]); + if (iVar2 < (int)param_5) { + iVar3 = uVar6 + 5; + param_4[iVar2] = (float)(param_2 + param_1 * (double)(int)param_3[iVar2]); + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 6; + param_4[iVar3] = (float)(param_2 + param_1 * (double)(int)param_3[iVar3]); + if (iVar2 < (int)param_5) { + param_4[iVar2] = (float)(param_2 + param_1 * (double)(int)param_3[iVar2]); + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00306b20 (704 bytes) name=FUN_00306b20 + +void FUN_00306b20(double param_1,double param_2,short *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + short sVar4; + short sVar5; + uint uVar6; + double *pdVar7; + uint uVar8; + uint uVar9; + short *psVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * (double)(int)*param_3; + return; + } + if (0 < (int)param_5) { + uVar6 = (uint)((ulong)param_4 >> 3) & 1; + if (param_5 < uVar6) { + uVar6 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 9) || (uVar1 = uVar6, uVar8 = 0, uVar6 != 0)) && + (uVar6 = uVar1, *param_4 = param_2 + param_1 * (double)(int)*param_3, uVar8 = uVar6, + uVar6 != 1)) { + param_4[1] = param_2 + param_1 * (double)(int)param_3[1]; + if (((uVar6 != 2) && (param_4[2] = param_2 + param_1 * (double)(int)param_3[2], uVar6 != 3)) + && ((param_4[3] = param_2 + param_1 * (double)(int)param_3[3], uVar6 != 4 && + ((param_4[4] = param_2 + param_1 * (double)(int)param_3[4], uVar6 != 5 && + (param_4[5] = param_2 + param_1 * (double)(int)param_3[5], uVar6 != 6)))))) { + param_4[6] = param_2 + param_1 * (double)(int)param_3[6]; + if (uVar6 == 8) { + param_4[7] = param_2 + param_1 * (double)(int)param_3[7]; + } + else { + uVar8 = 7; + } + } + if (param_5 == uVar6) { + return; + } + } + uVar1 = ((param_5 - uVar6) - 8 >> 3) + 1; + iVar3 = uVar1 * 8; + if (6 < (param_5 - 1) - uVar6) { + uVar9 = 0; + pdVar7 = param_4 + uVar6; + psVar10 = param_3 + uVar6; + do { + sVar4 = psVar10[4]; + sVar5 = psVar10[5]; + uVar9 = uVar9 + 1; + auVar13._0_8_ = (long)(int)*psVar10; + auVar13._8_8_ = (long)(int)psVar10[1]; + auVar12._0_8_ = (long)(int)psVar10[2]; + auVar12._8_8_ = (long)(int)psVar10[3]; + auVar11._0_8_ = (long)(int)psVar10[6]; + auVar11._8_8_ = (long)(int)psVar10[7]; + auVar14 = NEON_scvtf(auVar13,8); + auVar12 = NEON_scvtf(auVar12,8); + auVar11 = NEON_scvtf(auVar11,8); + pdVar7[1] = param_2 + auVar14._8_8_ * param_1; + *pdVar7 = param_2 + auVar14._0_8_ * param_1; + auVar14._8_8_ = (long)(int)sVar5; + auVar14._0_8_ = (long)(int)sVar4; + auVar14 = NEON_scvtf(auVar14,8); + pdVar7[3] = param_2 + auVar12._8_8_ * param_1; + pdVar7[2] = param_2 + auVar12._0_8_ * param_1; + pdVar7[5] = param_2 + auVar14._8_8_ * param_1; + pdVar7[4] = param_2 + auVar14._0_8_ * param_1; + pdVar7[7] = param_2 + auVar11._8_8_ * param_1; + pdVar7[6] = param_2 + auVar11._0_8_ * param_1; + pdVar7 = pdVar7 + 8; + psVar10 = psVar10 + 8; + } while (uVar9 < uVar1); + uVar8 = uVar8 + iVar3; + if (param_5 - uVar6 == iVar3) { + return; + } + } + iVar3 = uVar8 + 1; + param_4[(int)uVar8] = param_2 + param_1 * (double)(int)param_3[(int)uVar8]; + if (iVar3 < (int)param_5) { + iVar2 = uVar8 + 2; + param_4[iVar3] = param_2 + param_1 * (double)(int)param_3[iVar3]; + if (iVar2 < (int)param_5) { + iVar3 = uVar8 + 3; + param_4[iVar2] = param_2 + param_1 * (double)(int)param_3[iVar2]; + if (iVar3 < (int)param_5) { + iVar2 = uVar8 + 4; + param_4[iVar3] = param_2 + param_1 * (double)(int)param_3[iVar3]; + if (iVar2 < (int)param_5) { + iVar3 = uVar8 + 5; + param_4[iVar2] = param_2 + param_1 * (double)(int)param_3[iVar2]; + if (iVar3 < (int)param_5) { + iVar2 = uVar8 + 6; + param_4[iVar3] = param_2 + param_1 * (double)(int)param_3[iVar3]; + if (iVar2 < (int)param_5) { + param_4[iVar2] = param_2 + param_1 * (double)(int)param_3[iVar2]; + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 00306de0 (460 bytes) name=FUN_00306de0 + +void FUN_00306de0(double param_1,double param_2,int *param_3,float *param_4,uint param_5) + +{ + int iVar1; + int iVar2; + uint uVar3; + ulong uVar4; + float *pfVar5; + ulong uVar6; + uint uVar7; + int *piVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * (double)*param_3); + return; + } + if ((int)param_5 < 1) { + return; + } + uVar3 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + if (param_5 < uVar3) { + uVar3 = param_5; + } + uVar4 = (ulong)uVar3; + if ((int)param_5 < 5) { + uVar4 = (ulong)param_5; + } + else { + uVar6 = 0; + if (uVar3 == 0) goto LAB_00306e84; + } + uVar3 = (uint)uVar4; + *param_4 = (float)(param_2 + param_1 * (double)*param_3); + uVar6 = uVar4; + if (uVar3 != 1) { + param_4[1] = (float)(param_2 + param_1 * (double)param_3[1]); + if (uVar3 != 2) { + param_4[2] = (float)(param_2 + param_1 * (double)param_3[2]); + if (uVar3 == 4) { + param_4[3] = (float)(param_2 + param_1 * (double)param_3[3]); + } + else { + uVar6 = 3; + } + } + if (param_5 == uVar3) { + return; + } + } +LAB_00306e84: + iVar2 = param_5 - (int)uVar4; + uVar3 = (iVar2 - 4U >> 2) + 1; + iVar1 = uVar3 * 4; + if (2 < (param_5 - 1) - (int)uVar4) { + uVar7 = 0; + pfVar5 = param_4 + uVar4; + piVar8 = param_3 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar10._0_8_ = (long)*piVar8; + auVar10._8_8_ = (long)piVar8[1]; + auVar9._0_8_ = (long)piVar8[2]; + auVar9._8_8_ = (long)piVar8[3]; + auVar10 = NEON_scvtf(auVar10,8); + auVar9 = NEON_scvtf(auVar9,8); + *(ulong *)(pfVar5 + 2) = + CONCAT44((float)(param_2 + auVar9._8_8_ * param_1), + (float)(param_2 + auVar9._0_8_ * param_1)); + *(ulong *)pfVar5 = + CONCAT44((float)(param_2 + auVar10._8_8_ * param_1), + (float)(param_2 + auVar10._0_8_ * param_1)); + pfVar5 = pfVar5 + 4; + piVar8 = piVar8 + 4; + } while (uVar7 < uVar3); + uVar6 = (ulong)(uint)((int)uVar6 + iVar1); + if (iVar2 == iVar1) { + return; + } + } + uVar4 = -(uVar6 >> 0x1f) & 0xfffffffc00000000 | uVar6 << 2; + *(float *)((long)param_4 + uVar4) = + (float)(param_2 + param_1 * (double)*(int *)((long)param_3 + uVar4)); + if (((int)uVar6 + 1 < (int)param_5) && + (*(float *)((long)param_4 + uVar4 + 4) = + (float)(param_2 + param_1 * (double)*(int *)((long)param_3 + uVar4 + 4)), + (int)uVar6 + 2 < (int)param_5)) { + *(float *)((long)param_4 + uVar4 + 8) = + (float)(param_2 + param_1 * (double)*(int *)((long)param_3 + uVar4 + 8)); + } + return; +} + + +================================================================== + +### FUNC 00306fac (448 bytes) name=FUN_00306fac + +void FUN_00306fac(double param_1,double param_2,int *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + int *piVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * (double)*param_3; + return; + } + if (0 < (int)param_5) { + uVar4 = (uint)((ulong)param_4 >> 3) & 1; + if (param_5 < uVar4) { + uVar4 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 6) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_4 = param_2 + param_1 * (double)*param_3, uVar6 = uVar4, uVar4 != 1)) + { + param_4[1] = param_2 + param_1 * (double)param_3[1]; + if ((uVar4 != 2) && (param_4[2] = param_2 + param_1 * (double)param_3[2], uVar4 != 3)) { + param_4[3] = param_2 + param_1 * (double)param_3[3]; + if (uVar4 == 5) { + param_4[4] = param_2 + param_1 * (double)param_3[4]; + } + else { + uVar6 = 4; + } + } + if (param_5 == uVar4) { + return; + } + } + uVar1 = ((param_5 - uVar4) - 4 >> 2) + 1; + iVar3 = uVar1 * 4; + if (2 < (param_5 - 1) - uVar4) { + uVar7 = 0; + pdVar5 = param_4 + uVar4; + piVar8 = param_3 + uVar4; + do { + uVar7 = uVar7 + 1; + auVar10._0_8_ = (long)*piVar8; + auVar10._8_8_ = (long)piVar8[1]; + auVar9._0_8_ = (long)piVar8[2]; + auVar9._8_8_ = (long)piVar8[3]; + auVar10 = NEON_scvtf(auVar10,8); + auVar9 = NEON_scvtf(auVar9,8); + pdVar5[1] = param_2 + auVar10._8_8_ * param_1; + *pdVar5 = param_2 + auVar10._0_8_ * param_1; + pdVar5[3] = param_2 + auVar9._8_8_ * param_1; + pdVar5[2] = param_2 + auVar9._0_8_ * param_1; + pdVar5 = pdVar5 + 4; + piVar8 = piVar8 + 4; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_5 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_4[(int)uVar6] = param_2 + param_1 * (double)param_3[(int)uVar6]; + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 2; + param_4[iVar3] = param_2 + param_1 * (double)param_3[iVar3]; + if (iVar2 < (int)param_5) { + param_4[iVar2] = param_2 + param_1 * (double)param_3[iVar2]; + } + } + } + return; +} + + +================================================================== + +### FUNC 0030716c (448 bytes) name=FUN_0030716c + +void FUN_0030716c(double param_1,double param_2,float *param_3,float *param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + float *pfVar5; + long lVar6; + ulong uVar7; + uint uVar8; + float *pfVar9; + uint uVar10; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * (double)*param_3); + return; + } + if (0 < (int)param_5) { + if ((param_4 < param_3 + 4 && param_3 < param_4 + 4) || (param_5 < 8)) { + lVar6 = 0; + do { + param_4[lVar6] = (float)(param_2 + param_1 * (double)param_3[lVar6]); + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_5); + return; + } + uVar10 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + uVar2 = param_5; + if (uVar10 < param_5) { + uVar2 = uVar10; + } + uVar10 = uVar2; + if ((uVar2 != 0) && (*param_4 = (float)(param_2 + param_1 * (double)*param_3), uVar2 != 1)) { + param_4[1] = (float)(param_2 + param_1 * (double)param_3[1]); + if (uVar2 == 3) { + param_4[2] = (float)(param_2 + param_1 * (double)param_3[2]); + } + else { + uVar10 = 2; + } + } + uVar1 = ((param_5 - uVar2) - 4 >> 2) + 1; + uVar8 = 0; + iVar3 = uVar1 * 4; + pfVar5 = param_4 + uVar2; + pfVar9 = param_3 + uVar2; + do { + uVar4 = *(undefined8 *)pfVar9; + uVar8 = uVar8 + 1; + *(ulong *)(pfVar5 + 2) = + CONCAT44((float)(param_2 + + (double)(float)((ulong)*(undefined8 *)(pfVar9 + 2) >> 0x20) * param_1), + (float)(param_2 + (double)(float)*(undefined8 *)(pfVar9 + 2) * param_1)); + *(ulong *)pfVar5 = + CONCAT44((float)(param_2 + (double)(float)((ulong)uVar4 >> 0x20) * param_1), + (float)(param_2 + (double)(float)uVar4 * param_1)); + pfVar5 = pfVar5 + 4; + pfVar9 = pfVar9 + 4; + } while (uVar8 < uVar1); + uVar10 = uVar10 + iVar3; + if (param_5 - uVar2 != iVar3) { + uVar7 = -(ulong)(uVar10 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar10 << 2; + *(float *)((long)param_4 + uVar7) = + (float)(param_2 + param_1 * (double)*(float *)((long)param_3 + uVar7)); + if (((int)(uVar10 + 1) < (int)param_5) && + (*(float *)((long)param_4 + uVar7 + 4) = + (float)(param_2 + param_1 * (double)*(float *)((long)param_3 + uVar7 + 4)), + (int)(uVar10 + 2) < (int)param_5)) { + *(float *)((long)param_4 + uVar7 + 8) = + (float)(param_2 + param_1 * (double)*(float *)((long)param_3 + uVar7 + 8)); + } + } + } + return; +} + + +================================================================== + +### FUNC 0030732c (440 bytes) name=FUN_0030732c + +void FUN_0030732c(double param_1,double param_2,float *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + double *pdVar5; + uint uVar6; + uint uVar7; + float *pfVar8; + undefined8 uVar9; + undefined8 uVar10; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * (double)*param_3; + return; + } + if (0 < (int)param_5) { + uVar4 = (uint)((ulong)param_4 >> 3) & 1; + if (param_5 < uVar4) { + uVar4 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 6) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_4 = param_2 + param_1 * (double)*param_3, uVar6 = uVar4, uVar4 != 1)) + { + param_4[1] = param_2 + param_1 * (double)param_3[1]; + if ((uVar4 != 2) && (param_4[2] = param_2 + param_1 * (double)param_3[2], uVar4 != 3)) { + param_4[3] = param_2 + param_1 * (double)param_3[3]; + if (uVar4 == 5) { + param_4[4] = param_2 + param_1 * (double)param_3[4]; + } + else { + uVar6 = 4; + } + } + if (param_5 == uVar4) { + return; + } + } + uVar1 = ((param_5 - uVar4) - 4 >> 2) + 1; + iVar3 = uVar1 * 4; + if (2 < (param_5 - 1) - uVar4) { + uVar7 = 0; + pdVar5 = param_4 + uVar4; + pfVar8 = param_3 + uVar4; + do { + uVar10 = *(undefined8 *)(pfVar8 + 2); + uVar9 = *(undefined8 *)pfVar8; + uVar7 = uVar7 + 1; + pdVar5[1] = param_2 + (double)(float)((ulong)uVar9 >> 0x20) * param_1; + *pdVar5 = param_2 + (double)(float)uVar9 * param_1; + pdVar5[3] = param_2 + (double)(float)((ulong)uVar10 >> 0x20) * param_1; + pdVar5[2] = param_2 + (double)(float)uVar10 * param_1; + pdVar5 = pdVar5 + 4; + pfVar8 = pfVar8 + 4; + } while (uVar7 < uVar1); + uVar6 = uVar6 + iVar3; + if (param_5 - uVar4 == iVar3) { + return; + } + } + iVar3 = uVar6 + 1; + param_4[(int)uVar6] = param_2 + param_1 * (double)param_3[(int)uVar6]; + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 2; + param_4[iVar3] = param_2 + param_1 * (double)param_3[iVar3]; + if (iVar2 < (int)param_5) { + param_4[iVar2] = param_2 + param_1 * (double)param_3[iVar2]; + } + } + } + return; +} + + +================================================================== + +### FUNC 003074e4 (436 bytes) name=FUN_003074e4 + +void FUN_003074e4(double param_1,double param_2,double *param_3,float *param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + double *pdVar7; + uint uVar8; + double dVar9; + double dVar10; + + if (param_5 == 1) { + *param_4 = (float)(param_2 + param_1 * *param_3); + return; + } + if (0 < (int)param_5) { + uVar4 = (uint)((ulong)param_3 >> 3) & 1; + if (param_5 < uVar4) { + uVar4 = param_5; + } + uVar1 = param_5; + if ((((int)param_5 < 6) || (uVar1 = uVar4, uVar6 = 0, uVar4 != 0)) && + (uVar4 = uVar1, *param_4 = (float)(param_2 + param_1 * *param_3), uVar6 = uVar4, uVar4 != 1)) + { + param_4[1] = (float)(param_2 + param_1 * param_3[1]); + if ((uVar4 != 2) && (param_4[2] = (float)(param_2 + param_1 * param_3[2]), uVar4 != 3)) { + param_4[3] = (float)(param_2 + param_1 * param_3[3]); + if (uVar4 == 5) { + param_4[4] = (float)(param_2 + param_1 * param_3[4]); + } + else { + uVar6 = 4; + } + } + if (param_5 == uVar4) { + return; + } + } + uVar1 = ((param_5 - uVar4) - 4 >> 2) + 1; + iVar3 = uVar1 * 4; + if (2 < (param_5 - 1) - uVar4) { + uVar8 = 0; + /* try { // try from 003075bc to 004075bf has its CatchHandler @ 00306a74 */ + pfVar5 = param_4 + uVar4; + pdVar7 = param_3 + uVar4; + do { + uVar8 = uVar8 + 1; + dVar10 = pdVar7[1]; + dVar9 = *pdVar7; + *(ulong *)(pfVar5 + 2) = + CONCAT44((float)(param_2 + pdVar7[3] * param_1),(float)(param_2 + pdVar7[2] * param_1)) + ; + *(ulong *)pfVar5 = + CONCAT44((float)(param_2 + dVar10 * param_1),(float)(param_2 + dVar9 * param_1)); + pfVar5 = pfVar5 + 4; + pdVar7 = pdVar7 + 4; + } while (uVar8 < uVar1); + /* try { // try from 00307600 to 00407603 has its CatchHandler @ 003077c4 */ + uVar6 = uVar6 + iVar3; + if (param_5 - uVar4 == iVar3) { + return; + } + } + /* try { // try from 00307608 to 004077b7 has its CatchHandler @ 00306a74 */ + iVar3 = uVar6 + 1; + param_4[(int)uVar6] = (float)(param_2 + param_1 * param_3[(int)uVar6]); + if (iVar3 < (int)param_5) { + iVar2 = uVar6 + 2; + param_4[iVar3] = (float)(param_2 + param_1 * param_3[iVar3]); + if (iVar2 < (int)param_5) { + param_4[iVar2] = (float)(param_2 + param_1 * param_3[iVar2]); + } + } + } + return; +} + + +================================================================== + +### FUNC 00307698 (248 bytes) name=FUN_00307698 + +void FUN_00307698(double param_1,double param_2,double *param_3,double *param_4,uint param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + ulong uVar4; + double *pdVar5; + long lVar6; + uint uVar7; + double *pdVar8; + double dVar9; + + if (param_5 == 1) { + *param_4 = param_2 + param_1 * *param_3; + return; + } + if (0 < (int)param_5) { + if ((param_4 < param_3 + 2 && param_3 < param_4 + 2) || (param_5 < 9)) { + lVar6 = 0; + do { + param_4[lVar6] = param_2 + param_1 * param_3[lVar6]; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_5); + return; + } + uVar1 = (uint)((ulong)param_3 >> 3) & 1; + uVar2 = param_5; + if (uVar1 < param_5) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + *param_4 = param_2 + param_1 * *param_3; + } + uVar1 = ((param_5 - uVar2) - 2 >> 1) + 1; + uVar7 = 0; + iVar3 = uVar1 * 2; + pdVar5 = param_4 + uVar2; + pdVar8 = param_3 + uVar2; + do { + dVar9 = *pdVar8; + uVar7 = uVar7 + 1; + pdVar5[1] = param_2 + pdVar8[1] * param_1; + *pdVar5 = param_2 + dVar9 * param_1; + pdVar5 = pdVar5 + 2; + pdVar8 = pdVar8 + 2; + } while (uVar7 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar3; + if (param_5 - uVar2 != iVar3) { + uVar4 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(double *)((long)param_4 + uVar4) = param_2 + param_1 * *(double *)((long)param_3 + uVar4); + } + } + return; +} + + +================================================================== + +### FUNC 00307790 (4 bytes) name=FUN_00307790 + +void FUN_00307790(void) + +{ + return; +} + + +================================================================== + +### FUNC 00307794 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 00307798 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 0030779c (464 bytes) name=FUN_0030779c + +UMatData * +FUN_0030779c(MatAllocator *param_1,int param_2,long param_3,ulong param_4,long param_5,long param_6) + +{ + int iVar1; + uint uVar2; + undefined8 uVar3; + long lVar4; + UMatData *this; + char *pcVar5; + long lVar6; + int *piVar7; + ulong uVar9; + ulong uVar10; + ulong *puVar11; + ulong *puVar12; + undefined8 local_10; + undefined8 local_8; + int *piVar8; + + uVar2 = param_2 - 1; + /* catch() { ... } // from try @ 00307600 with catch @ 003077c4 */ + /* try { // try from 003077d4 to 004077d7 has its CatchHandler @ 00306a74 */ + /* catch() { ... } // from try @ 00308554 with catch @ 003077d8 + catch() { ... } // from try @ 003085a0 with catch @ 003077d8 + catch() { ... } // from try @ 0030876c with catch @ 003077d8 */ + uVar10 = (ulong)(int)(((uint)(param_4 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)param_4 & 7) << 1)) & 3)); + if ((int)uVar2 < 0) { +LAB_00307868: + lVar4 = param_5; + if (param_5 != 0) goto LAB_00307870; + } + else { + lVar4 = (long)(int)uVar2; + if (param_6 == 0) { + piVar7 = (int *)(param_3 + lVar4 * 4); + do { + piVar8 = piVar7 + -1; + uVar10 = uVar10 * (long)*piVar7; + piVar7 = piVar8; + } while (piVar8 != (int *)(param_3 + (lVar4 - (ulong)uVar2) * 4 + -4)); + goto LAB_00307868; + } + if (param_5 != 0) { + puVar11 = (ulong *)(param_6 + lVar4 * 8); + puVar12 = (ulong *)(param_6 + (lVar4 - (ulong)uVar2) * 8 + -8); + piVar7 = (int *)(param_3 + lVar4 * 4); + do { + while (uVar9 = *puVar11, uVar9 != 0x7fffffff) { + if (uVar9 < uVar10) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x10); + uVar3 = s_total_<__step[i]_0046abe0._8_8_; + *(undefined8 *)pcVar5 = s_total_<__step[i]_0046abe0._0_8_; + *(undefined8 *)(pcVar5 + 8) = uVar3; + cv::error(-0xd7,(String *)&local_10, + "virtual cv::UMatData* cv::StdMatAllocator::allocate(int, const int*, int, void*, size_t*, int, cv::UMatUsageFlags) const" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xb6); + cv::String::deallocate((String *)&local_10); + uVar9 = *puVar11; + } + puVar11 = puVar11 + -1; + uVar10 = uVar9 * (long)*piVar7; + piVar7 = piVar7 + -1; + if (puVar11 == puVar12) goto LAB_00307868; + } + *puVar11 = uVar10; + puVar11 = puVar11 + -1; + uVar10 = uVar10 * (long)*piVar7; + piVar7 = piVar7 + -1; + } while (puVar11 != puVar12); + goto LAB_00307868; + } + uVar9 = 0; + do { + lVar6 = uVar9 * 2; + iVar1 = *(int *)(param_3 + lVar4 * 4 + uVar9); + uVar9 = uVar9 - 4; + *(ulong *)(param_6 + lVar4 * 8 + lVar6) = uVar10; + uVar10 = uVar10 * (long)iVar1; + } while (uVar9 != ((ulong)uVar2 << 2 ^ 0xfffffffffffffffc)); + } + lVar4 = cv::fastMalloc(uVar10); +LAB_00307870: + this = operator_new(0x50); + cv::UMatData::UMatData(this,param_1); + *(long *)(this + 0x20) = lVar4; + *(long *)(this + 0x18) = lVar4; + *(ulong *)(this + 0x28) = uVar10; + if (param_5 != 0) { + *(uint *)(this + 0x30) = *(uint *)(this + 0x30) | 0x20; + } + return this; +} + + +================================================================== + +### FUNC 00307994 (104 bytes) name=FUN_00307994 + +void FUN_00307994(ushort *param_1,char *param_2,int param_3) + +{ + uint uVar1; + ushort uVar2; + long lVar3; + + if (param_3 != 1) { + lVar3 = 0; + if (0 < param_3) { + do { + uVar2 = param_1[lVar3]; + uVar1 = (int)(short)uVar2; + if (0xff < (uint)(int)(short)uVar2) { + uVar1 = -(uint)(0 < (short)uVar2); + } + param_2[lVar3] = (char)uVar1; + lVar3 = lVar3 + 1; + } while ((int)lVar3 < param_3); + } + return; + } + uVar2 = *param_1; + if (uVar2 < 0x100) { + *param_2 = (char)uVar2; + } + else { + *param_2 = -(0 < (short)uVar2); + } + return; +} + + +================================================================== + +### FUNC 003079fc (120 bytes) name=FUN_003079fc + +void FUN_003079fc(short *param_1,undefined1 *param_2,int param_3) + +{ + short sVar1; + long lVar2; + undefined1 uVar3; + + if (param_3 == 1) { + sVar1 = *param_1; + uVar3 = (undefined1)sVar1; + if ((0xff < (int)sVar1 + 0x80U) && (uVar3 = 0x7f, sVar1 < 1)) { + uVar3 = 0x80; + } + *param_2 = uVar3; + return; + } + lVar2 = 0; + if (0 < param_3) { + do { + sVar1 = param_1[lVar2]; + uVar3 = (undefined1)sVar1; + if ((0xff < (int)sVar1 + 0x80U) && (uVar3 = 0x7f, sVar1 < 1)) { + uVar3 = 0x80; + } + param_2[lVar2] = uVar3; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00307a74 (104 bytes) name=FUN_00307a74 + +void FUN_00307a74(uint *param_1,char *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + + if (param_3 != 1) { + lVar2 = 0; + if (0 < param_3) { + do { + uVar1 = param_1[lVar2]; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + param_2[lVar2] = (char)uVar1; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < param_3); + } + return; + } + uVar1 = *param_1; + if (uVar1 < 0x100) { + *param_2 = (char)uVar1; + } + else { + *param_2 = -(0 < (int)uVar1); + } + return; +} + + +================================================================== + +### FUNC 00307adc (120 bytes) name=FUN_00307adc + +void FUN_00307adc(int *param_1,undefined1 *param_2,int param_3) + +{ + int iVar1; + long lVar2; + undefined1 uVar3; + + if (param_3 == 1) { + iVar1 = *param_1; + uVar3 = (undefined1)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar3 = 0x7f, iVar1 < 1)) { + uVar3 = 0x80; + } + *param_2 = uVar3; + return; + } + lVar2 = 0; + if (0 < param_3) { + do { + iVar1 = param_1[lVar2]; + uVar3 = (undefined1)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar3 = 0x7f, iVar1 < 1)) { + uVar3 = 0x80; + } + param_2[lVar2] = uVar3; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00307b54 (112 bytes) name=FUN_00307b54 + +void FUN_00307b54(uint *param_1,short *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + + if (param_3 != 1) { + lVar2 = 0; + if (0 < param_3) { + do { + uVar1 = param_1[lVar2]; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + param_2[lVar2] = (short)uVar1; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < param_3); + } + return; + } + uVar1 = *param_1; + if (uVar1 < 0x10000) { + *param_2 = (short)uVar1; + } + else { + *param_2 = -(ushort)(0 < (int)uVar1); + } + return; +} + + +================================================================== + +### FUNC 00307bc4 (128 bytes) name=FUN_00307bc4 + +void FUN_00307bc4(int *param_1,undefined2 *param_2,int param_3) + +{ + int iVar1; + long lVar2; + undefined2 uVar3; + + if (param_3 == 1) { + iVar1 = *param_1; + uVar3 = (undefined2)iVar1; + if ((0xffff < iVar1 + 0x8000U) && (uVar3 = 0x7fff, iVar1 < 1)) { + uVar3 = 0x8000; + } + *param_2 = uVar3; + return; + } + lVar2 = 0; + if (0 < param_3) { + do { + iVar1 = param_1[lVar2]; + uVar3 = (undefined2)iVar1; + if ((0xffff < iVar1 + 0x8000U) && (uVar3 = 0x7fff, iVar1 < 1)) { + uVar3 = 0x8000; + } + param_2[lVar2] = uVar3; + lVar2 = lVar2 + 1; + } while ((int)lVar2 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00307c44 (172 bytes) name=FUN_00307c44 + +void FUN_00307c44(double *param_1,undefined1 *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_3 != 1) { + if (0 < param_3) { + lVar4 = 0; + do { + lVar2 = lrint(param_1[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_2[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_3 - 1) + 1); + } + return; + } + lVar4 = lrint(*param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_2 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00307cf0 (200 bytes) name=FUN_00307cf0 + +void FUN_00307cf0(double param_1,double param_2,double *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + *param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00307db8 (208 bytes) name=FUN_00307db8 + +void FUN_00307db8(double param_1,double param_2,float *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00307e88 (208 bytes) name=FUN_00307e88 + +void FUN_00307e88(double param_1,double param_2,int *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00307f58 (208 bytes) name=FUN_00307f58 + +void FUN_00307f58(double param_1,double param_2,short *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)(int)param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00308028 (208 bytes) name=FUN_00308028 + +void FUN_00308028(double param_1,double param_2,ushort *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 003080f8 (208 bytes) name=FUN_003080f8 + +void FUN_003080f8(double param_1,double param_2,char *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)(int)param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 003081c8 (208 bytes) name=FUN_003081c8 + +void FUN_003081c8(double param_1,double param_2,byte *param_3,undefined1 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_4[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00308298 (204 bytes) name=FUN_00308298 + +void FUN_00308298(double *param_1,undefined1 *param_2,int param_3) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_3 == 1) { + lVar3 = lrint(*param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_2 = uVar2; + return; + } + if (0 < param_3) { + lVar3 = 0; + do { + lVar1 = lrint(param_1[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_2[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00308364 (232 bytes) name=FUN_00308364 + +void FUN_00308364(double param_1,double param_2,double *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + *param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * param_3[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030844c (240 bytes) name=FUN_0030844c + +void FUN_0030844c(double param_1,double param_2,float *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030853c (240 bytes) name=FUN_0030853c + +void FUN_0030853c(double param_1,double param_2,int *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + /* try { // try from 00308554 to 00408557 has its CatchHandler @ 003077d8 */ + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + /* try { // try from 00308598 to 0040859b has its CatchHandler @ 0030875c */ + /* try { // try from 003085a0 to 0040874f has its CatchHandler @ 003077d8 */ + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030862c (240 bytes) name=FUN_0030862c + +void FUN_0030862c(double param_1,double param_2,short *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)(int)param_3[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030871c (240 bytes) name=FUN_0030871c + +void FUN_0030871c(double param_1,double param_2,ushort *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + /* catch() { ... } // from try @ 00308598 with catch @ 0030875c */ + do { + /* try { // try from 0030876c to 0040876f has its CatchHandler @ 003077d8 */ + /* catch() { ... } // from try @ 00309298 with catch @ 00308770 + catch() { ... } // from try @ 003092e4 with catch @ 00308770 + catch() { ... } // from try @ 003094c0 with catch @ 00308770 */ + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030880c (240 bytes) name=FUN_0030880c + +void FUN_0030880c(double param_1,double param_2,char *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)(int)param_3[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003088fc (240 bytes) name=FUN_003088fc + +void FUN_003088fc(double param_1,double param_2,byte *param_3,undefined1 *param_4,int param_5) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003089ec (180 bytes) name=FUN_003089ec + +void FUN_003089ec(double *param_1,undefined2 *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_3 != 1) { + if (0 < param_3) { + lVar4 = 0; + do { + lVar2 = lrint(param_1[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_2[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_3 - 1) + 1); + } + return; + } + lVar4 = lrint(*param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_2 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308aa0 (208 bytes) name=FUN_00308aa0 + +void FUN_00308aa0(double param_1,double param_2,double *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + *param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308b70 (216 bytes) name=FUN_00308b70 + +void FUN_00308b70(double param_1,double param_2,float *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308c48 (216 bytes) name=FUN_00308c48 + +void FUN_00308c48(double param_1,double param_2,int *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308d20 (216 bytes) name=FUN_00308d20 + +void FUN_00308d20(double param_1,double param_2,short *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)(int)param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308df8 (216 bytes) name=FUN_00308df8 + +void FUN_00308df8(double param_1,double param_2,ushort *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308ed0 (216 bytes) name=FUN_00308ed0 + +void FUN_00308ed0(double param_1,double param_2,char *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)(int)param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00308fa8 (216 bytes) name=FUN_00308fa8 + +void FUN_00308fa8(double param_1,double param_2,byte *param_3,undefined2 *param_4,int param_5) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_5 != 1) { + if (0 < param_5) { + lVar4 = 0; + do { + lVar2 = lrint(param_2 + param_1 * (double)param_3[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_4[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_5 - 1) + 1); + } + return; + } + lVar4 = lrint(param_2 + (double)*param_3 * param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_4 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00309080 (212 bytes) name=FUN_00309080 + +void FUN_00309080(double *param_1,undefined2 *param_2,int param_3) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_3 == 1) { + lVar3 = lrint(*param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_2 = uVar2; + return; + } + if (0 < param_3) { + lVar3 = 0; + do { + lVar1 = lrint(param_1[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_2[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309154 (240 bytes) name=FUN_00309154 + +void FUN_00309154(double param_1,double param_2,double *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + *param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309244 (248 bytes) name=FUN_00309244 + +void FUN_00309244(double param_1,double param_2,float *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + /* try { // try from 00309298 to 0040929b has its CatchHandler @ 00308770 */ + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + /* try { // try from 003092dc to 004092df has its CatchHandler @ 003094b0 */ + /* try { // try from 003092e4 to 004094a3 has its CatchHandler @ 00308770 */ + return; +} + + +================================================================== + +### FUNC 0030933c (248 bytes) name=FUN_0030933c + +void FUN_0030933c(double param_1,double param_2,int *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309434 (248 bytes) name=FUN_00309434 + +void FUN_00309434(double param_1,double param_2,short *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)(int)param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + /* catch() { ... } // from try @ 003092dc with catch @ 003094b0 */ + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + /* try { // try from 003094c0 to 004094c3 has its CatchHandler @ 00308770 */ + /* catch() { ... } // from try @ 00309dd8 with catch @ 003094c4 + catch() { ... } // from try @ 00309f44 with catch @ 003094c4 + catch() { ... } // from try @ 0030a10c with catch @ 003094c4 */ + return; +} + + +================================================================== + +### FUNC 0030952c (248 bytes) name=FUN_0030952c + +void FUN_0030952c(double param_1,double param_2,ushort *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309624 (248 bytes) name=FUN_00309624 + +void FUN_00309624(double param_1,double param_2,char *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)(int)*param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)(int)param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030971c (248 bytes) name=FUN_0030971c + +void FUN_0030971c(double param_1,double param_2,byte *param_3,undefined2 *param_4,int param_5) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_5 == 1) { + lVar3 = lrint(param_2 + (double)*param_3 * param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_4 = uVar2; + return; + } + if (0 < param_5) { + lVar3 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_4[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309814 (112 bytes) name=FUN_00309814 + +void FUN_00309814(double *param_1,undefined4 *param_2,int param_3) + +{ + long lVar1; + long lVar2; + + if (param_3 == 1) { + lVar2 = lrint(*param_1); + *param_2 = (int)lVar2; + } + else if (0 < param_3) { + lVar2 = 0; + do { + lVar1 = lrint(param_1[lVar2]); + param_2[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309884 (136 bytes) name=FUN_00309884 + +void FUN_00309884(double param_1,double param_2,double *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + *param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030990c (144 bytes) name=FUN_0030990c + +void FUN_0030990c(double param_1,double param_2,float *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + (double)*param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 0030999c (144 bytes) name=FUN_0030999c + +void FUN_0030999c(double param_1,double param_2,int *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + (double)*param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309a2c (144 bytes) name=FUN_00309a2c + +void FUN_00309a2c(double param_1,double param_2,short *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + (double)(int)*param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)(int)param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309abc (144 bytes) name=FUN_00309abc + +void FUN_00309abc(double param_1,double param_2,ushort *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + (double)*param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309b4c (144 bytes) name=FUN_00309b4c + +void FUN_00309b4c(double param_1,double param_2,char *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + (double)(int)*param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)(int)param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309bdc (144 bytes) name=FUN_00309bdc + +void FUN_00309bdc(double param_1,double param_2,byte *param_3,undefined4 *param_4,int param_5) + +{ + long lVar1; + long lVar2; + + if (param_5 == 1) { + lVar2 = lrint(param_2 + (double)*param_3 * param_1); + *param_4 = (int)lVar2; + } + else if (0 < param_5) { + lVar2 = 0; + do { + lVar1 = lrint(param_2 + param_1 * (double)param_3[lVar2]); + param_4[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_5 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309c6c (112 bytes) name=FUN_00309c6c + +void FUN_00309c6c(float *param_1,undefined4 *param_2,int param_3) + +{ + long lVar1; + long lVar2; + + if (param_3 == 1) { + lVar2 = lrintf(*param_1); + *param_2 = (int)lVar2; + } + else if (0 < param_3) { + lVar2 = 0; + do { + lVar1 = lrintf(param_1[lVar2]); + param_2[lVar2] = (int)lVar1; + lVar2 = lVar2 + 1; + } while (lVar2 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309cdc (212 bytes) name=FUN_00309cdc + +void FUN_00309cdc(float *param_1,undefined2 *param_2,int param_3) + +{ + long lVar1; + undefined2 uVar2; + long lVar3; + + if (param_3 == 1) { + lVar3 = lrintf(*param_1); + uVar2 = (undefined2)lVar3; + if ((0xffff < (int)lVar3 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar3 < 1)) { + uVar2 = 0x8000; + } + *param_2 = uVar2; + return; + } + if (0 < param_3) { + lVar3 = 0; + do { + lVar1 = lrintf(param_1[lVar3]); + uVar2 = (undefined2)lVar1; + if ((0xffff < (int)lVar1 + 0x8000U) && (uVar2 = 0x7fff, (int)lVar1 < 1)) { + uVar2 = 0x8000; + } + param_2[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309db0 (180 bytes) name=FUN_00309db0 + +void FUN_00309db0(float *param_1,undefined2 *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + short sVar3; + long lVar4; + + if (param_3 != 1) { + if (0 < param_3) { + /* try { // try from 00309dd8 to 00409efb has its CatchHandler @ 003094c4 */ + lVar4 = 0; + do { + lVar2 = lrintf(param_1[lVar4]); + sVar3 = (short)lVar2; + if (0xffff < (uint)lVar2) { + sVar3 = -(ushort)(0 < (int)(uint)lVar2); + } + param_2[lVar4] = sVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_3 - 1) + 1); + } + return; + } + lVar4 = lrintf(*param_1); + uVar1 = (uint)lVar4; + if (0xffff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_2 = (short)uVar1; + return; +} + + +================================================================== + +### FUNC 00309e64 (204 bytes) name=FUN_00309e64 + +void FUN_00309e64(float *param_1,undefined1 *param_2,int param_3) + +{ + long lVar1; + undefined1 uVar2; + long lVar3; + + if (param_3 == 1) { + lVar3 = lrintf(*param_1); + uVar2 = (undefined1)lVar3; + if ((0xff < (int)lVar3 + 0x80U) && (uVar2 = 0x7f, (int)lVar3 < 1)) { + uVar2 = 0x80; + } + *param_2 = uVar2; + return; + } + if (0 < param_3) { + lVar3 = 0; + do { + lVar1 = lrintf(param_1[lVar3]); + uVar2 = (undefined1)lVar1; + if ((0xff < (int)lVar1 + 0x80U) && (uVar2 = 0x7f, (int)lVar1 < 1)) { + uVar2 = 0x80; + } + param_2[lVar3] = uVar2; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 00309f30 (172 bytes) name=FUN_00309f30 + +void FUN_00309f30(float *param_1,undefined1 *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + char cVar3; + long lVar4; + + /* try { // try from 00309f3c to 00409f3f has its CatchHandler @ 0030a0fc */ + /* try { // try from 00309f44 to 0040a0eb has its CatchHandler @ 003094c4 */ + if (param_3 != 1) { + if (0 < param_3) { + lVar4 = 0; + do { + lVar2 = lrintf(param_1[lVar4]); + cVar3 = (char)lVar2; + if (0xff < (uint)lVar2) { + cVar3 = -(0 < (int)(uint)lVar2); + } + param_2[lVar4] = cVar3; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_3 - 1) + 1); + } + return; + } + lVar4 = lrintf(*param_1); + uVar1 = (uint)lVar4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + *param_2 = (char)uVar1; + return; +} + + +================================================================== + +### FUNC 00309fdc (280 bytes) name=FUN_00309fdc + +void FUN_00309fdc(undefined8 param_1,UMatData *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + undefined8 local_10; + undefined8 local_8; + + if (param_2 != (UMatData *)0x0) { + if (*(int *)(param_2 + 0x10) < 0) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)cv::String::allocate((String *)&local_10,0x11); + uVar2 = s_u_>urefcount_>__0_0046ac38._8_8_; + uVar1 = s_u_>urefcount_>__0_0046ac38._0_8_; + pcVar4[0x10] = s_u_>urefcount_>__0_0046ac38[0x10]; + *(undefined8 *)pcVar4 = uVar1; + *(undefined8 *)(pcVar4 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::StdMatAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xd3); + cv::String::deallocate((String *)&local_10); + } + iVar3 = *(int *)(param_2 + 0x14); + if (iVar3 < 0) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)cv::String::allocate((String *)&local_10,0x10); + uVar1 = s_u_>refcount_>__0_0046ac50._8_8_; + *(undefined8 *)pcVar4 = s_u_>refcount_>__0_0046ac50._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::StdMatAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xd4); + cv::String::deallocate((String *)&local_10); + iVar3 = *(int *)(param_2 + 0x14); + } + if (iVar3 == 0) { + if ((*(uint *)(param_2 + 0x30) >> 5 & 1) == 0) { + cv::fastFree(*(void **)(param_2 + 0x20)); + *(undefined8 *)(param_2 + 0x20) = 0; + } + cv::UMatData::~UMatData(param_2); + operator_delete(param_2); + } + } + return; +} + + +================================================================== + +### FUNC 0030a11c (136 bytes) name=getBufferPoolController + +/* cv::MatAllocator::getBufferPoolController(char const*) const */ + +undefined8 * cv::MatAllocator::getBufferPoolController(char *param_1) + +{ + int iVar1; + + if (((DAT_00531fe8 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00531fe8), iVar1 != 0)) { + DAT_00531fe0 = &PTR_FUN_004f61c0; + __cxa_guard_release(&DAT_00531fe8); + __cxa_atexit(FUN_002fa360,&DAT_00531fe0,&DAT_00502000); + return &DAT_00531fe0; + } + return &DAT_00531fe0; +} + + +================================================================== + +### FUNC 0030a1a4 (652 bytes) name=FUN_0030a1a4 + +void FUN_0030a1a4(short *param_1,short *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + short sVar3; + short *psVar4; + ulong uVar5; + long lVar6; + int iVar7; + ulong uVar8; + uint uVar9; + short *psVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + + if (param_3 == 1) { + sVar3 = *param_1; + if (sVar3 < 0) { + sVar3 = 0; + } + *param_2 = sVar3; + return; + } + if ((int)param_3 < 1) { + return; + } + if ((param_2 < param_1 + 8 && param_1 < param_2 + 8) || (param_3 < 0xb)) { + lVar6 = 0; + do { + sVar3 = param_1[lVar6]; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[lVar6] = sVar3; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar1 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + uVar2 = param_3; + if (uVar1 < param_3) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + sVar3 = *param_1; + if (sVar3 < 0) { + sVar3 = 0; + } + *param_2 = sVar3; + if (uVar2 != 1) { + sVar3 = param_1[1]; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[1] = sVar3; + if (uVar2 != 2) { + sVar3 = param_1[2]; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[2] = sVar3; + if (uVar2 != 3) { + sVar3 = param_1[3]; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[3] = sVar3; + if (uVar2 != 4) { + sVar3 = param_1[4]; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[4] = sVar3; + if (uVar2 == 5) { + uVar8 = 5; + } + else { + sVar3 = param_1[5]; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[5] = sVar3; + if (uVar2 == 7) { + sVar3 = param_1[6]; + uVar8 = 7; + if (sVar3 < 0) { + sVar3 = 0; + } + param_2[6] = sVar3; + } + else { + uVar8 = 6; + } + } + goto LAB_0030a298; + } + } + } + } + } + uVar8 = (ulong)uVar2; +LAB_0030a298: + uVar1 = ((param_3 - uVar2) - 8 >> 3) + 1; + iVar7 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar2) { + uVar9 = 0; + psVar4 = param_2 + uVar2; + psVar10 = param_1 + uVar2; + do { + uVar9 = uVar9 + 1; + auVar12._0_4_ = (int)*psVar10; + auVar12._4_4_ = (int)psVar10[1]; + auVar12._8_4_ = (int)psVar10[2]; + auVar12._12_4_ = (int)psVar10[3]; + auVar11._0_4_ = (int)psVar10[4]; + auVar11._4_4_ = (int)psVar10[5]; + auVar11._8_4_ = (int)psVar10[6]; + auVar11._12_4_ = (int)psVar10[7]; + auVar12 = NEON_smax(auVar12,ZEXT816(0),4); + auVar11 = NEON_smax(auVar11,ZEXT816(0),4); + *(ulong *)(psVar4 + 4) = + CONCAT26(auVar11._12_2_,CONCAT24(auVar11._8_2_,CONCAT22(auVar11._4_2_,auVar11._0_2_))); + *(ulong *)psVar4 = + CONCAT26(auVar12._12_2_,CONCAT24(auVar12._8_2_,CONCAT22(auVar12._4_2_,auVar12._0_2_))); + psVar4 = psVar4 + 8; + psVar10 = psVar10 + 8; + } while (uVar9 < uVar1); + uVar8 = (ulong)(uint)((int)uVar8 + iVar7); + if (param_3 - uVar2 == iVar7) { + return; + } + } + uVar5 = -(uVar8 >> 0x1f) & 0xfffffffe00000000 | uVar8 << 1; + iVar7 = (int)uVar8; + sVar3 = *(short *)((long)param_1 + uVar5); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5) = sVar3; + if (iVar7 + 1 < (int)param_3) { + sVar3 = *(short *)((long)param_1 + uVar5 + 2); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5 + 2) = sVar3; + if (iVar7 + 2 < (int)param_3) { + sVar3 = *(short *)((long)param_1 + uVar5 + 4); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5 + 4) = sVar3; + if (iVar7 + 3 < (int)param_3) { + sVar3 = *(short *)((long)param_1 + uVar5 + 6); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5 + 6) = sVar3; + if (iVar7 + 4 < (int)param_3) { + sVar3 = *(short *)((long)param_1 + uVar5 + 8); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5 + 8) = sVar3; + if (iVar7 + 5 < (int)param_3) { + sVar3 = *(short *)((long)param_1 + uVar5 + 10); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5 + 10) = sVar3; + if (iVar7 + 6 < (int)param_3) { + sVar3 = *(short *)((long)param_1 + uVar5 + 0xc); + if (sVar3 < 0) { + sVar3 = 0; + } + *(short *)((long)param_2 + uVar5 + 0xc) = sVar3; + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030a430 (956 bytes) name=FUN_0030a430 + +void FUN_0030a430(short *param_1,short *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + char cVar4; + int iVar5; + short *psVar6; + long lVar7; + short sVar8; + uint uVar9; + uint uVar10; + char *pcVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + + if (param_3 == 1) { + sVar8 = (short)(char)*param_1; + if ((char)*param_1 < '\0') { + sVar8 = 0; + } + *param_2 = sVar8; + return; + } + if (0 < (int)param_3) { + if ((param_1 < param_2 + (int)param_3 && param_2 < (short *)((long)param_1 + (long)(int)param_3) + ) || (param_3 < 0x13)) { + lVar7 = 0; + do { + sVar8 = (short)*(char *)((long)param_1 + lVar7); + if (*(char *)((long)param_1 + lVar7) < '\0') { + sVar8 = 0; + } + param_2[lVar7] = sVar8; + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + uVar3 = param_3; + if (uVar9 < param_3) { + uVar3 = uVar9; + } + uVar9 = uVar3; + if (uVar3 != 0) { + sVar8 = (short)(char)*param_1; + if ((char)*param_1 < '\0') { + sVar8 = 0; + } + *param_2 = sVar8; + if (uVar3 != 1) { + sVar8 = (short)*(char *)((long)param_1 + 1); + if (*(char *)((long)param_1 + 1) < '\0') { + sVar8 = 0; + } + param_2[1] = sVar8; + if (uVar3 != 2) { + sVar8 = (short)(char)param_1[1]; + if ((char)param_1[1] < '\0') { + sVar8 = 0; + } + param_2[2] = sVar8; + if (uVar3 != 3) { + sVar8 = (short)*(char *)((long)param_1 + 3); + if (*(char *)((long)param_1 + 3) < '\0') { + sVar8 = 0; + } + param_2[3] = sVar8; + if (uVar3 != 4) { + sVar8 = (short)(char)param_1[2]; + if ((char)param_1[2] < '\0') { + sVar8 = 0; + } + param_2[4] = sVar8; + if (uVar3 == 5) { + uVar9 = 5; + } + else { + sVar8 = (short)*(char *)((long)param_1 + 5); + if (*(char *)((long)param_1 + 5) < '\0') { + sVar8 = 0; + } + param_2[5] = sVar8; + if (uVar3 == 7) { + sVar8 = (short)(char)param_1[3]; + if ((char)param_1[3] < '\0') { + sVar8 = 0; + } + param_2[6] = sVar8; + } + else { + uVar9 = 6; + } + } + } + } + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar5 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar10 = 0; + psVar6 = param_2 + uVar3; + pcVar11 = (char *)((long)param_1 + (ulong)uVar3); + do { + uVar10 = uVar10 + 1; + auVar15._0_4_ = (int)(short)*pcVar11; + auVar15._4_4_ = (int)(short)pcVar11[1]; + auVar15._8_4_ = (int)(short)pcVar11[2]; + auVar15._12_4_ = (int)(short)pcVar11[3]; + auVar13._0_4_ = (int)(short)pcVar11[4]; + auVar13._4_4_ = (int)(short)pcVar11[5]; + auVar13._8_4_ = (int)(short)pcVar11[6]; + auVar13._12_4_ = (int)(short)pcVar11[7]; + auVar14._0_4_ = (int)(short)pcVar11[8]; + auVar14._4_4_ = (int)(short)pcVar11[9]; + auVar14._8_4_ = (int)(short)pcVar11[10]; + auVar14._12_4_ = (int)(short)pcVar11[0xb]; + auVar12._0_4_ = (int)(short)pcVar11[0xc]; + auVar12._4_4_ = (int)(short)pcVar11[0xd]; + auVar12._8_4_ = (int)(short)pcVar11[0xe]; + auVar12._12_4_ = (int)(short)pcVar11[0xf]; + auVar15 = NEON_smax(auVar15,ZEXT816(0),4); + auVar13 = NEON_smax(auVar13,ZEXT816(0),4); + auVar14 = NEON_smax(auVar14,ZEXT816(0),4); + auVar12 = NEON_smax(auVar12,ZEXT816(0),4); + *(ulong *)(psVar6 + 4) = + CONCAT26(auVar13._12_2_,CONCAT24(auVar13._8_2_,CONCAT22(auVar13._4_2_,auVar13._0_2_))); + *(ulong *)psVar6 = + CONCAT26(auVar15._12_2_,CONCAT24(auVar15._8_2_,CONCAT22(auVar15._4_2_,auVar15._0_2_))); + psVar6[0xc] = auVar12._0_2_; + psVar6[0xd] = auVar12._4_2_; + psVar6[0xe] = auVar12._8_2_; + psVar6[0xf] = auVar12._12_2_; + psVar6[8] = auVar14._0_2_; + psVar6[9] = auVar14._4_2_; + psVar6[10] = auVar14._8_2_; + psVar6[0xb] = auVar14._12_2_; + psVar6 = psVar6 + 0x10; + pcVar11 = pcVar11 + 0x10; + } while (uVar10 < uVar1); + uVar9 = uVar9 + iVar5; + if (param_3 - uVar3 == iVar5) { + return; + } + } + iVar5 = uVar9 + 1; + cVar4 = *(char *)((long)param_1 + (long)(int)uVar9); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[(int)uVar9] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 2; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 3; + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 4; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 5; + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 6; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 7; + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 8; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 9; + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 10; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 0xb; + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 0xc; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 0xd; + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 0xe; + cVar4 = *(char *)((long)param_1 + (long)iVar5); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar5] = sVar8; + if (iVar2 < (int)param_3) { + cVar4 = *(char *)((long)param_1 + (long)iVar2); + sVar8 = (short)cVar4; + if (cVar4 < '\0') { + sVar8 = 0; + } + param_2[iVar2] = sVar8; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030a7ec (1136 bytes) name=FUN_0030a7ec + +void FUN_0030a7ec(char *param_1,char *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + char cVar4; + int iVar5; + char *pcVar6; + long lVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + if (param_3 == 1) { + cVar4 = *param_1; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + *param_2 = cVar4; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 0x10 && param_1 < param_2 + 0x10) || (param_3 < 0x13)) { + lVar7 = 0; + do { + cVar4 = param_1[lVar7]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[lVar7] = cVar4; + lVar7 = lVar7 + 1; + } while ((int)lVar7 < (int)param_3); + return; + } + uVar8 = -(int)param_1 & 0xf; + uVar3 = param_3; + if (uVar8 < param_3) { + uVar3 = uVar8; + } + uVar8 = uVar3; + if (uVar3 != 0) { + cVar4 = *param_1; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + *param_2 = cVar4; + if (uVar3 != 1) { + cVar4 = param_1[1]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[1] = cVar4; + if (uVar3 != 2) { + cVar4 = param_1[2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[2] = cVar4; + if (uVar3 != 3) { + cVar4 = param_1[3]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[3] = cVar4; + if (uVar3 != 4) { + cVar4 = param_1[4]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[4] = cVar4; + if (uVar3 == 5) { + uVar8 = 5; + } + else { + cVar4 = param_1[5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[5] = cVar4; + if (uVar3 != 6) { + cVar4 = param_1[6]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[6] = cVar4; + if (uVar3 != 7) { + cVar4 = param_1[7]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[7] = cVar4; + if (uVar3 != 8) { + cVar4 = param_1[8]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[8] = cVar4; + if (uVar3 != 9) { + cVar4 = param_1[9]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[9] = cVar4; + if (uVar3 != 10) { + cVar4 = param_1[10]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[10] = cVar4; + if (uVar3 != 0xb) { + cVar4 = param_1[0xb]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[0xb] = cVar4; + if (uVar3 != 0xc) { + cVar4 = param_1[0xc]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[0xc] = cVar4; + if (uVar3 != 0xd) { + cVar4 = param_1[0xd]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[0xd] = cVar4; + if (uVar3 == 0xf) { + cVar4 = param_1[0xe]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[0xe] = cVar4; + } + else { + uVar8 = 0xe; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar5 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar9 = 0; + pcVar6 = param_2 + uVar3; + pcVar10 = param_1 + uVar3; + do { + uVar9 = uVar9 + 1; + auVar14._0_4_ = (int)(short)*pcVar10; + auVar14._4_4_ = (int)(short)pcVar10[1]; + auVar14._8_4_ = (int)(short)pcVar10[2]; + auVar14._12_4_ = (int)(short)pcVar10[3]; + auVar13._0_4_ = (int)(short)pcVar10[8]; + auVar13._4_4_ = (int)(short)pcVar10[9]; + auVar13._8_4_ = (int)(short)pcVar10[10]; + auVar13._12_4_ = (int)(short)pcVar10[0xb]; + auVar12._0_4_ = (int)(short)pcVar10[4]; + auVar12._4_4_ = (int)(short)pcVar10[5]; + auVar12._8_4_ = (int)(short)pcVar10[6]; + auVar12._12_4_ = (int)(short)pcVar10[7]; + auVar11._0_4_ = (int)(short)pcVar10[0xc]; + auVar11._4_4_ = (int)(short)pcVar10[0xd]; + auVar11._8_4_ = (int)(short)pcVar10[0xe]; + auVar11._12_4_ = (int)(short)pcVar10[0xf]; + auVar14 = NEON_smax(auVar14,ZEXT816(0),4); + auVar13 = NEON_smax(auVar13,ZEXT816(0),4); + auVar12 = NEON_smax(auVar12,ZEXT816(0),4); + auVar11 = NEON_smax(auVar11,ZEXT816(0),4); + pcVar6[8] = auVar13[0]; + pcVar6[9] = auVar13[4]; + pcVar6[10] = auVar13[8]; + pcVar6[0xb] = auVar13[0xc]; + pcVar6[0xc] = auVar11[0]; + pcVar6[0xd] = auVar11[4]; + pcVar6[0xe] = auVar11[8]; + pcVar6[0xf] = auVar11[0xc]; + *pcVar6 = auVar14[0]; + pcVar6[1] = auVar14[4]; + pcVar6[2] = auVar14[8]; + pcVar6[3] = auVar14[0xc]; + pcVar6[4] = auVar12[0]; + pcVar6[5] = auVar12[4]; + pcVar6[6] = auVar12[8]; + pcVar6[7] = auVar12[0xc]; + pcVar6 = pcVar6 + 0x10; + pcVar10 = pcVar10 + 0x10; + } while (uVar9 < uVar1); + uVar8 = uVar8 + iVar5; + if (param_3 - uVar3 == iVar5) { + return; + } + } + iVar5 = uVar8 + 1; + cVar4 = param_1[(int)uVar8]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[(int)uVar8] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 2; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + iVar5 = uVar8 + 3; + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 4; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + iVar5 = uVar8 + 5; + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 6; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + iVar5 = uVar8 + 7; + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 8; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + iVar5 = uVar8 + 9; + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 10; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + iVar5 = uVar8 + 0xb; + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 0xc; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + iVar5 = uVar8 + 0xd; + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + if (iVar5 < (int)param_3) { + iVar2 = uVar8 + 0xe; + cVar4 = param_1[iVar5]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar5] = cVar4; + if (iVar2 < (int)param_3) { + cVar4 = param_1[iVar2]; + if (cVar4 < '\0') { + cVar4 = '\0'; + } + param_2[iVar2] = cVar4; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030ac5c (980 bytes) name=FUN_0030ac5c + +void FUN_0030ac5c(ushort *param_1,ushort *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + ushort uVar3; + uint uVar4; + int iVar5; + undefined1 auVar6 [16]; + undefined1 *puVar7; + long lVar8; + uint uVar9; + undefined1 uVar10; + uint uVar11; + ushort *puVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + + if (param_3 == 1) { + uVar10 = (undefined1)*param_1; + if (0x7f < *param_1) { + uVar10 = 0x7f; + } + *(undefined1 *)param_2 = uVar10; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + (int)param_3 && + param_1 < (ushort *)((long)param_2 + (long)(int)param_3)) || (param_3 < 0x13)) { + lVar8 = 0; + do { + uVar10 = (undefined1)param_1[lVar8]; + if (0x7f < param_1[lVar8]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + lVar8) = uVar10; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + uVar4 = param_3; + if (uVar9 < param_3) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if (uVar4 != 0) { + uVar3 = *param_1; + if (0x7f < *param_1) { + uVar3 = 0x7f; + } + *(char *)param_2 = (char)uVar3; + if (uVar4 != 1) { + uVar10 = (undefined1)param_1[1]; + if (0x7f < param_1[1]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + 1) = uVar10; + if (uVar4 != 2) { + uVar10 = (undefined1)param_1[2]; + if (0x7f < param_1[2]) { + uVar10 = 0x7f; + } + *(undefined1 *)(param_2 + 1) = uVar10; + if (uVar4 != 3) { + uVar10 = (undefined1)param_1[3]; + if (0x7f < param_1[3]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + 3) = uVar10; + if (uVar4 != 4) { + uVar10 = (undefined1)param_1[4]; + if (0x7f < param_1[4]) { + uVar10 = 0x7f; + } + *(undefined1 *)(param_2 + 2) = uVar10; + if (uVar4 == 5) { + uVar9 = 5; + } + else { + uVar3 = param_1[5]; + if (0x7f < param_1[5]) { + uVar3 = 0x7f; + } + *(char *)((long)param_2 + 5) = (char)uVar3; + if (uVar4 == 7) { + uVar10 = (undefined1)param_1[6]; + if (0x7f < param_1[6]) { + uVar10 = 0x7f; + } + *(undefined1 *)(param_2 + 3) = uVar10; + } + else { + uVar9 = 6; + } + } + } + } + } + } + } + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + iVar5 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar4) { + uVar11 = 0; + puVar7 = (undefined1 *)((long)param_2 + (ulong)uVar4); + puVar12 = param_1 + uVar4; + do { + uVar11 = uVar11 + 1; + auVar19._2_2_ = 0; + auVar19._0_2_ = *puVar12; + auVar19._4_2_ = puVar12[1]; + auVar19._6_2_ = 0; + auVar19._8_2_ = puVar12[2]; + auVar19._10_2_ = 0; + auVar19._12_2_ = puVar12[3]; + auVar19._14_2_ = 0; + auVar15._2_2_ = 0; + auVar15._0_2_ = puVar12[4]; + auVar15._4_2_ = puVar12[5]; + auVar15._6_2_ = 0; + auVar15._8_2_ = puVar12[6]; + auVar15._10_2_ = 0; + auVar15._12_2_ = puVar12[7]; + auVar15._14_2_ = 0; + auVar14._8_4_ = 0x7f; + auVar14._0_8_ = 0x7f0000007f; + auVar14._12_4_ = 0x7f; + auVar19 = NEON_umin(auVar19,auVar14,4); + auVar17._2_2_ = 0; + auVar17._0_2_ = puVar12[8]; + auVar17._4_2_ = puVar12[9]; + auVar17._6_2_ = 0; + auVar17._8_2_ = puVar12[10]; + auVar17._10_2_ = 0; + auVar17._12_2_ = puVar12[0xb]; + auVar17._14_2_ = 0; + auVar13._2_2_ = 0; + auVar13._0_2_ = puVar12[0xc]; + auVar13._4_2_ = puVar12[0xd]; + auVar13._6_2_ = 0; + auVar13._8_2_ = puVar12[0xe]; + auVar13._10_2_ = 0; + auVar13._12_2_ = puVar12[0xf]; + auVar13._14_2_ = 0; + auVar16._8_4_ = 0x7f; + auVar16._0_8_ = 0x7f0000007f; + auVar16._12_4_ = 0x7f; + auVar16 = NEON_umin(auVar15,auVar16,4); + auVar18._8_4_ = 0x7f; + auVar18._0_8_ = 0x7f0000007f; + auVar18._12_4_ = 0x7f; + auVar18 = NEON_umin(auVar17,auVar18,4); + auVar6._8_4_ = 0x7f; + auVar6._0_8_ = 0x7f0000007f; + auVar6._12_4_ = 0x7f; + auVar14 = NEON_umin(auVar13,auVar6,4); + puVar7[8] = auVar18[0]; + puVar7[9] = auVar18[4]; + puVar7[10] = auVar18[8]; + puVar7[0xb] = auVar18[0xc]; + puVar7[0xc] = auVar14[0]; + puVar7[0xd] = auVar14[4]; + puVar7[0xe] = auVar14[8]; + puVar7[0xf] = auVar14[0xc]; + *puVar7 = auVar19[0]; + puVar7[1] = auVar19[4]; + puVar7[2] = auVar19[8]; + puVar7[3] = auVar19[0xc]; + puVar7[4] = auVar16[0]; + puVar7[5] = auVar16[4]; + puVar7[6] = auVar16[8]; + puVar7[7] = auVar16[0xc]; + puVar7 = puVar7 + 0x10; + puVar12 = puVar12 + 0x10; + } while (uVar11 < uVar1); + uVar9 = uVar9 + iVar5; + if (param_3 - uVar4 == iVar5) { + return; + } + } + iVar5 = uVar9 + 1; + uVar3 = param_1[(int)uVar9]; + if (0x7f < param_1[(int)uVar9]) { + uVar3 = 0x7f; + } + *(char *)((long)param_2 + (long)(int)uVar9) = (char)uVar3; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 2; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 3; + uVar10 = (undefined1)param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 4; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 5; + uVar3 = param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar3 = 0x7f; + } + *(char *)((long)param_2 + (long)iVar2) = (char)uVar3; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 6; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 7; + uVar10 = (undefined1)param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 8; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 9; + uVar10 = (undefined1)param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 10; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 0xb; + uVar3 = param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar3 = 0x7f; + } + *(char *)((long)param_2 + (long)iVar2) = (char)uVar3; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 0xc; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 0xd; + uVar10 = (undefined1)param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 0xe; + uVar10 = (undefined1)param_1[iVar5]; + if (0x7f < param_1[iVar5]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + uVar10 = (undefined1)param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + uVar10 = 0x7f; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030b030 (980 bytes) name=FUN_0030b030 + +void FUN_0030b030(ushort *param_1,ushort *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + ushort uVar3; + uint uVar4; + int iVar5; + undefined1 auVar6 [16]; + undefined1 *puVar7; + long lVar8; + uint uVar9; + undefined1 uVar10; + uint uVar11; + ushort *puVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + + if (param_3 == 1) { + uVar10 = (undefined1)*param_1; + if (0xff < *param_1) { + uVar10 = 0xff; + } + *(undefined1 *)param_2 = uVar10; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + (int)param_3 && + param_1 < (ushort *)((long)param_2 + (long)(int)param_3)) || (param_3 < 0x13)) { + lVar8 = 0; + do { + uVar10 = (undefined1)param_1[lVar8]; + if (0xff < param_1[lVar8]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + lVar8) = uVar10; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < (int)param_3); + return; + } + uVar9 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + uVar4 = param_3; + if (uVar9 < param_3) { + uVar4 = uVar9; + } + uVar9 = uVar4; + if (uVar4 != 0) { + uVar3 = *param_1; + if (0xff < *param_1) { + uVar3 = 0xff; + } + *(char *)param_2 = (char)uVar3; + if (uVar4 != 1) { + uVar10 = (undefined1)param_1[1]; + if (0xff < param_1[1]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + 1) = uVar10; + if (uVar4 != 2) { + uVar10 = (undefined1)param_1[2]; + if (0xff < param_1[2]) { + uVar10 = 0xff; + } + *(undefined1 *)(param_2 + 1) = uVar10; + if (uVar4 != 3) { + uVar10 = (undefined1)param_1[3]; + if (0xff < param_1[3]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + 3) = uVar10; + if (uVar4 != 4) { + uVar10 = (undefined1)param_1[4]; + if (0xff < param_1[4]) { + uVar10 = 0xff; + } + *(undefined1 *)(param_2 + 2) = uVar10; + if (uVar4 == 5) { + uVar9 = 5; + } + else { + uVar3 = param_1[5]; + if (0xff < param_1[5]) { + uVar3 = 0xff; + } + *(char *)((long)param_2 + 5) = (char)uVar3; + if (uVar4 == 7) { + uVar10 = (undefined1)param_1[6]; + if (0xff < param_1[6]) { + uVar10 = 0xff; + } + *(undefined1 *)(param_2 + 3) = uVar10; + } + else { + uVar9 = 6; + } + } + } + } + } + } + } + /* try { // try from 0030b148 to 0040b14b has its CatchHandler @ 0030a110 */ + uVar1 = ((param_3 - uVar4) - 0x10 >> 4) + 1; + iVar5 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar4) { + uVar11 = 0; + puVar7 = (undefined1 *)((long)param_2 + (ulong)uVar4); + puVar12 = param_1 + uVar4; + do { + uVar11 = uVar11 + 1; + auVar19._2_2_ = 0; + auVar19._0_2_ = *puVar12; + auVar19._4_2_ = puVar12[1]; + auVar19._6_2_ = 0; + auVar19._8_2_ = puVar12[2]; + auVar19._10_2_ = 0; + auVar19._12_2_ = puVar12[3]; + auVar19._14_2_ = 0; + auVar15._2_2_ = 0; + auVar15._0_2_ = puVar12[4]; + auVar15._4_2_ = puVar12[5]; + auVar15._6_2_ = 0; + auVar15._8_2_ = puVar12[6]; + auVar15._10_2_ = 0; + auVar15._12_2_ = puVar12[7]; + auVar15._14_2_ = 0; + auVar14._8_4_ = 0xff; + auVar14._0_8_ = 0xff000000ff; + auVar14._12_4_ = 0xff; + auVar19 = NEON_umin(auVar19,auVar14,4); + auVar17._2_2_ = 0; + auVar17._0_2_ = puVar12[8]; + /* try { // try from 0030b18c to 0040b18f has its CatchHandler @ 0030b360 */ + auVar17._4_2_ = puVar12[9]; + auVar17._6_2_ = 0; + auVar17._8_2_ = puVar12[10]; + auVar17._10_2_ = 0; + auVar17._12_2_ = puVar12[0xb]; + auVar17._14_2_ = 0; + auVar13._2_2_ = 0; + auVar13._0_2_ = puVar12[0xc]; + auVar13._4_2_ = puVar12[0xd]; + auVar13._6_2_ = 0; + auVar13._8_2_ = puVar12[0xe]; + auVar13._10_2_ = 0; + auVar13._12_2_ = puVar12[0xf]; + auVar13._14_2_ = 0; + auVar16._8_4_ = 0xff; + auVar16._0_8_ = 0xff000000ff; + auVar16._12_4_ = 0xff; + /* try { // try from 0030b194 to 0040b353 has its CatchHandler @ 0030a110 */ + auVar16 = NEON_umin(auVar15,auVar16,4); + auVar18._8_4_ = 0xff; + auVar18._0_8_ = 0xff000000ff; + auVar18._12_4_ = 0xff; + auVar18 = NEON_umin(auVar17,auVar18,4); + auVar6._8_4_ = 0xff; + auVar6._0_8_ = 0xff000000ff; + auVar6._12_4_ = 0xff; + auVar14 = NEON_umin(auVar13,auVar6,4); + puVar7[8] = auVar18[0]; + puVar7[9] = auVar18[4]; + puVar7[10] = auVar18[8]; + puVar7[0xb] = auVar18[0xc]; + puVar7[0xc] = auVar14[0]; + puVar7[0xd] = auVar14[4]; + puVar7[0xe] = auVar14[8]; + puVar7[0xf] = auVar14[0xc]; + *puVar7 = auVar19[0]; + puVar7[1] = auVar19[4]; + puVar7[2] = auVar19[8]; + puVar7[3] = auVar19[0xc]; + puVar7[4] = auVar16[0]; + puVar7[5] = auVar16[4]; + puVar7[6] = auVar16[8]; + puVar7[7] = auVar16[0xc]; + puVar7 = puVar7 + 0x10; + puVar12 = puVar12 + 0x10; + } while (uVar11 < uVar1); + uVar9 = uVar9 + iVar5; + if (param_3 - uVar4 == iVar5) { + return; + } + } + iVar5 = uVar9 + 1; + uVar3 = param_1[(int)uVar9]; + if (0xff < param_1[(int)uVar9]) { + uVar3 = 0xff; + } + *(char *)((long)param_2 + (long)(int)uVar9) = (char)uVar3; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 2; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 3; + uVar10 = (undefined1)param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 4; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 5; + uVar3 = param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar3 = 0xff; + } + *(char *)((long)param_2 + (long)iVar2) = (char)uVar3; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 6; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 7; + uVar10 = (undefined1)param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 8; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 9; + uVar10 = (undefined1)param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 10; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 0xb; + uVar3 = param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar3 = 0xff; + } + *(char *)((long)param_2 + (long)iVar2) = (char)uVar3; + if (iVar5 < (int)param_3) { + iVar2 = uVar9 + 0xc; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + iVar5 = uVar9 + 0xd; + /* catch() { ... } // from try @ 0030b18c with catch @ 0030b360 */ + uVar10 = (undefined1)param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + /* try { // try from 0030b370 to 0040b373 has its CatchHandler @ 0030a110 */ + if (iVar5 < (int)param_3) { + /* catch() { ... } // from try @ 0030b720 with catch @ 0030b374 + catch() { ... } // from try @ 0030ba54 with catch @ 0030b374 + catch() { ... } // from try @ 0030bc30 with catch @ 0030b374 */ + iVar2 = uVar9 + 0xe; + uVar10 = (undefined1)param_1[iVar5]; + if (0xff < param_1[iVar5]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar5) = uVar10; + if (iVar2 < (int)param_3) { + uVar10 = (undefined1)param_1[iVar2]; + if (0xff < param_1[iVar2]) { + uVar10 = 0xff; + } + *(undefined1 *)((long)param_2 + (long)iVar2) = uVar10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030b404 (672 bytes) name=FUN_0030b404 + +void FUN_0030b404(ushort *param_1,ushort *param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + undefined1 auVar3 [16]; + ushort uVar4; + ushort *puVar5; + long lVar6; + int iVar7; + ulong uVar8; + ulong uVar9; + uint uVar10; + ushort *puVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + + if (param_3 == 1) { + uVar4 = *param_1; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *param_2 = uVar4; + return; + } + if ((int)param_3 < 1) { + return; + } + if ((param_2 < param_1 + 8 && param_1 < param_2 + 8) || (param_3 < 0xb)) { + lVar6 = 0; + do { + uVar4 = param_1[lVar6]; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + param_2[lVar6] = uVar4; + lVar6 = lVar6 + 1; + } while ((int)lVar6 < (int)param_3); + return; + } + uVar1 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + uVar2 = param_3; + if (uVar1 < param_3) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + uVar4 = *param_1; + if (0x7fff < *param_1) { + uVar4 = 0x7fff; + } + *param_2 = uVar4; + if (uVar2 != 1) { + uVar4 = param_1[1]; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + param_2[1] = uVar4; + if (uVar2 != 2) { + uVar4 = param_1[2]; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + param_2[2] = uVar4; + if (uVar2 != 3) { + uVar4 = param_1[3]; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + param_2[3] = uVar4; + if (uVar2 != 4) { + uVar4 = param_1[4]; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + param_2[4] = uVar4; + if (uVar2 == 5) { + uVar8 = 5; + } + else { + uVar4 = param_1[5]; + if (0x7fff < param_1[5]) { + uVar4 = 0x7fff; + } + param_2[5] = uVar4; + if (uVar2 == 7) { + uVar4 = param_1[6]; + uVar8 = 7; + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + param_2[6] = uVar4; + } + else { + uVar8 = 6; + } + } + goto LAB_0030b500; + } + } + } + } + } + uVar8 = (ulong)uVar2; +LAB_0030b500: + uVar1 = ((param_3 - uVar2) - 8 >> 3) + 1; + iVar7 = uVar1 * 8; + if (6 < (param_3 - 1) - uVar2) { + uVar10 = 0; + puVar5 = param_2 + uVar2; + puVar11 = param_1 + uVar2; + do { + uVar10 = uVar10 + 1; + auVar14._2_2_ = 0; + auVar14._0_2_ = *puVar11; + auVar14._4_2_ = puVar11[1]; + auVar14._6_2_ = 0; + auVar14._8_2_ = puVar11[2]; + auVar14._10_2_ = 0; + auVar14._12_2_ = puVar11[3]; + auVar14._14_2_ = 0; + auVar12._2_2_ = 0; + auVar12._0_2_ = puVar11[4]; + auVar12._4_2_ = puVar11[5]; + auVar12._6_2_ = 0; + auVar12._8_2_ = puVar11[6]; + auVar12._10_2_ = 0; + auVar12._12_2_ = puVar11[7]; + auVar12._14_2_ = 0; + auVar13._8_4_ = 0x7fff; + auVar13._0_8_ = 0x7fff00007fff; + auVar13._12_4_ = 0x7fff; + auVar14 = NEON_smin(auVar14,auVar13,4); + auVar3._8_4_ = 0x7fff; + auVar3._0_8_ = 0x7fff00007fff; + auVar3._12_4_ = 0x7fff; + auVar13 = NEON_smin(auVar12,auVar3,4); + *(ulong *)(puVar5 + 4) = + CONCAT26(auVar13._12_2_,CONCAT24(auVar13._8_2_,CONCAT22(auVar13._4_2_,auVar13._0_2_))); + *(ulong *)puVar5 = + CONCAT26(auVar14._12_2_,CONCAT24(auVar14._8_2_,CONCAT22(auVar14._4_2_,auVar14._0_2_))); + puVar5 = puVar5 + 8; + puVar11 = puVar11 + 8; + } while (uVar10 < uVar1); + uVar8 = (ulong)(uint)((int)uVar8 + iVar7); + if (param_3 - uVar2 == iVar7) { + return; + } + } + uVar9 = -(uVar8 >> 0x1f) & 0xfffffffe00000000 | uVar8 << 1; + iVar7 = (int)uVar8; + uVar4 = *(ushort *)((long)param_1 + uVar9); + if (0x7fff < *(ushort *)((long)param_1 + uVar9)) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9) = uVar4; + if (iVar7 + 1 < (int)param_3) { + uVar4 = *(ushort *)((long)param_1 + uVar9 + 2); + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9 + 2) = uVar4; + if (iVar7 + 2 < (int)param_3) { + uVar4 = *(ushort *)((long)param_1 + uVar9 + 4); + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9 + 4) = uVar4; + if (iVar7 + 3 < (int)param_3) { + uVar4 = *(ushort *)((long)param_1 + uVar9 + 6); + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9 + 6) = uVar4; + if (iVar7 + 4 < (int)param_3) { + uVar4 = *(ushort *)((long)param_1 + uVar9 + 8); + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9 + 8) = uVar4; + if (iVar7 + 5 < (int)param_3) { + uVar4 = *(ushort *)((long)param_1 + uVar9 + 10); + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9 + 10) = uVar4; + if (iVar7 + 6 < (int)param_3) { + uVar4 = *(ushort *)((long)param_1 + uVar9 + 0xc); + if (0x7fff < uVar4) { + uVar4 = 0x7fff; + } + *(ushort *)((long)param_2 + uVar9 + 0xc) = uVar4; + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030b6a4 (1160 bytes) name=FUN_0030b6a4 + +void FUN_0030b6a4(byte *param_1,byte *param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + int iVar4; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + byte bVar7; + byte *pbVar8; + long lVar9; + uint uVar10; + uint uVar11; + byte *pbVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + + if (param_3 == 1) { + bVar7 = *param_1; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + *param_2 = bVar7; + return; + } + if (0 < (int)param_3) { + if ((param_2 < param_1 + 0x10 && param_1 < param_2 + 0x10) || (param_3 < 0x13)) { + lVar9 = 0; + do { + bVar7 = param_1[lVar9]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[lVar9] = bVar7; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)param_3); + return; + } + uVar10 = -(int)param_1 & 0xf; + uVar3 = param_3; + if (uVar10 < param_3) { + uVar3 = uVar10; + } + uVar10 = uVar3; + if (uVar3 != 0) { + bVar7 = *param_1; + if (0x7f < *param_1) { + bVar7 = 0x7f; + } + *param_2 = bVar7; + if (uVar3 != 1) { + bVar7 = param_1[1]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[1] = bVar7; + /* try { // try from 0030b720 to 0040ba0b has its CatchHandler @ 0030b374 */ + if (uVar3 != 2) { + bVar7 = param_1[2]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[2] = bVar7; + if (uVar3 != 3) { + bVar7 = param_1[3]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[3] = bVar7; + if (uVar3 != 4) { + bVar7 = param_1[4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[4] = bVar7; + if (uVar3 == 5) { + uVar10 = 5; + } + else { + bVar7 = param_1[5]; + if (0x7f < param_1[5]) { + bVar7 = 0x7f; + } + param_2[5] = bVar7; + if (uVar3 != 6) { + bVar7 = param_1[6]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[6] = bVar7; + if (uVar3 != 7) { + bVar7 = param_1[7]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[7] = bVar7; + if (uVar3 != 8) { + bVar7 = param_1[8]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[8] = bVar7; + if (uVar3 != 9) { + bVar7 = param_1[9]; + if (0x7f < param_1[9]) { + bVar7 = 0x7f; + } + param_2[9] = bVar7; + if (uVar3 != 10) { + bVar7 = param_1[10]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[10] = bVar7; + if (uVar3 != 0xb) { + bVar7 = param_1[0xb]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[0xb] = bVar7; + if (uVar3 != 0xc) { + bVar7 = param_1[0xc]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[0xc] = bVar7; + if (uVar3 != 0xd) { + bVar7 = param_1[0xd]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[0xd] = bVar7; + if (uVar3 == 0xf) { + bVar7 = param_1[0xe]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[0xe] = bVar7; + } + else { + uVar10 = 0xe; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((param_3 - uVar3) - 0x10 >> 4) + 1; + iVar4 = uVar1 * 0x10; + if (0xe < (param_3 - 1) - uVar3) { + uVar11 = 0; + pbVar8 = param_2 + uVar3; + pbVar12 = param_1 + uVar3; + do { + uVar11 = uVar11 + 1; + auVar18._6_2_ = 0; + auVar18._0_6_ = + (uint6)CONCAT14(pbVar12[1],(uint)CONCAT12(pbVar12[1],(ushort)*pbVar12)) & + 0xffff0000ffff; + auVar18[8] = pbVar12[2]; + auVar18._9_3_ = 0; + auVar18[0xc] = pbVar12[3]; + auVar18._13_3_ = 0; + auVar17._6_2_ = 0; + auVar17._0_6_ = + (uint6)CONCAT14(pbVar12[9],(uint)CONCAT12(pbVar12[9],(ushort)pbVar12[8])) & + 0xffff0000ffff; + auVar17[8] = pbVar12[10]; + auVar17._9_3_ = 0; + auVar17[0xc] = pbVar12[0xb]; + auVar17._13_3_ = 0; + auVar15._1_3_ = 0; + auVar15[0] = pbVar12[4]; + auVar15[4] = pbVar12[5]; + auVar15._5_3_ = 0; + auVar15[8] = pbVar12[6]; + auVar15._9_3_ = 0; + auVar15[0xc] = pbVar12[7]; + auVar15._13_3_ = 0; + auVar13._1_3_ = 0; + auVar13[0] = pbVar12[0xc]; + auVar13[4] = pbVar12[0xd]; + auVar13._5_3_ = 0; + auVar13[8] = pbVar12[0xe]; + auVar13._9_3_ = 0; + auVar13[0xc] = pbVar12[0xf]; + auVar13._13_3_ = 0; + auVar14._8_4_ = 0x7f; + auVar14._0_8_ = 0x7f0000007f; + auVar14._12_4_ = 0x7f; + auVar18 = NEON_smin(auVar18,auVar14,4); + auVar16._8_4_ = 0x7f; + auVar16._0_8_ = 0x7f0000007f; + auVar16._12_4_ = 0x7f; + auVar17 = NEON_smin(auVar17,auVar16,4); + auVar5._8_4_ = 0x7f; + auVar5._0_8_ = 0x7f0000007f; + auVar5._12_4_ = 0x7f; + auVar16 = NEON_smin(auVar15,auVar5,4); + auVar6._8_4_ = 0x7f; + auVar6._0_8_ = 0x7f0000007f; + auVar6._12_4_ = 0x7f; + auVar14 = NEON_smin(auVar13,auVar6,4); + pbVar8[8] = auVar17[0]; + pbVar8[9] = auVar17[4]; + pbVar8[10] = auVar17[8]; + pbVar8[0xb] = auVar17[0xc]; + pbVar8[0xc] = auVar14[0]; + pbVar8[0xd] = auVar14[4]; + pbVar8[0xe] = auVar14[8]; + pbVar8[0xf] = auVar14[0xc]; + *pbVar8 = auVar18[0]; + pbVar8[1] = auVar18[4]; + pbVar8[2] = auVar18[8]; + pbVar8[3] = auVar18[0xc]; + pbVar8[4] = auVar16[0]; + pbVar8[5] = auVar16[4]; + pbVar8[6] = auVar16[8]; + pbVar8[7] = auVar16[0xc]; + pbVar8 = pbVar8 + 0x10; + pbVar12 = pbVar12 + 0x10; + } while (uVar11 < uVar1); + uVar10 = uVar10 + iVar4; + if (param_3 - uVar3 == iVar4) { + return; + } + } + iVar4 = uVar10 + 1; + bVar7 = param_1[(int)uVar10]; + if (0x7f < param_1[(int)uVar10]) { + bVar7 = 0x7f; + } + param_2[(int)uVar10] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 2; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + iVar4 = uVar10 + 3; + bVar7 = param_1[iVar2]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 4; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + iVar4 = uVar10 + 5; + bVar7 = param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 6; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + iVar4 = uVar10 + 7; + bVar7 = param_1[iVar2]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 8; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + iVar4 = uVar10 + 9; + bVar7 = param_1[iVar2]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 10; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + iVar4 = uVar10 + 0xb; + /* try { // try from 0030ba4c to 0040ba4f has its CatchHandler @ 0030bc20 */ + /* try { // try from 0030ba54 to 0040bc0f has its CatchHandler @ 0030b374 */ + bVar7 = param_1[iVar2]; + if (0x7f < param_1[iVar2]) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 0xc; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + iVar4 = uVar10 + 0xd; + bVar7 = param_1[iVar2]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + if (iVar4 < (int)param_3) { + iVar2 = uVar10 + 0xe; + bVar7 = param_1[iVar4]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar4] = bVar7; + if (iVar2 < (int)param_3) { + bVar7 = param_1[iVar2]; + if (0x7f < bVar7) { + bVar7 = 0x7f; + } + param_2[iVar2] = bVar7; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 0030bb2c (336 bytes) name=unmap + +/* cv::MatAllocator::unmap(cv::UMatData*) const */ + +void __thiscall cv::MatAllocator::unmap(MatAllocator *this,UMatData *param_1) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + char *pcVar4; + long lVar5; + long local_10; + long local_8; + + lVar5 = *(long *)(param_1 + 0x10); + if (lVar5 == 0) { + if (*(code **)(*(long *)this + 0x20) == FUN_00309fdc) { + if (*(int *)(param_1 + 0x10) < 0) { + local_10 = lVar5; + local_8 = lVar5; + /* catch() { ... } // from try @ 0030ba4c with catch @ 0030bc20 */ + /* try { // try from 0030bc30 to 0040bc33 has its CatchHandler @ 0030b374 */ + pcVar4 = (char *)String::allocate((String *)&local_10,0x11); + uVar3 = s_u_>urefcount_>__0_0046ac38._8_8_; + uVar2 = s_u_>urefcount_>__0_0046ac38._0_8_; + /* catch() { ... } // from try @ 0030bfe0 with catch @ 0030bc34 + catch() { ... } // from try @ 0030c320 with catch @ 0030bc34 + catch() { ... } // from try @ 0030c4ec with catch @ 0030bc34 */ + pcVar4[0x10] = s_u_>urefcount_>__0_0046ac38[0x10]; + *(undefined8 *)pcVar4 = uVar2; + *(undefined8 *)(pcVar4 + 8) = uVar3; + error(-0xd7,(String *)&local_10, + "virtual void cv::StdMatAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xd3); + String::deallocate((String *)&local_10); + } + iVar1 = *(int *)(param_1 + 0x14); + if (iVar1 < 0) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x10); + uVar2 = s_u_>refcount_>__0_0046ac50._8_8_; + *(undefined8 *)pcVar4 = s_u_>refcount_>__0_0046ac50._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_10, + "virtual void cv::StdMatAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xd4); + String::deallocate((String *)&local_10); + iVar1 = *(int *)(param_1 + 0x14); + } + if (iVar1 == 0) { + if ((*(uint *)(param_1 + 0x30) >> 5 & 1) == 0) { + fastFree(*(void **)(param_1 + 0x20)); + *(undefined8 *)(param_1 + 0x20) = 0; + } + UMatData::~UMatData(param_1); + operator_delete(param_1); + return; + } + } + else { + (**(code **)(*(long *)this + 0x20))(); + } + } + return; +} + + +================================================================== + +### FUNC 0030bca4 (4872 bytes) name=FUN_0030bca4 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0030bca4(uint *param_1,long param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + byte *pbVar17; + byte *pbVar18; + uint uVar19; + uint uVar20; + byte bVar21; + uint uVar22; + ulong uVar23; + byte bVar24; + byte bVar25; + int iVar26; + uint uVar27; + uint uVar28; + uint uVar29; + uint uVar30; + undefined8 uVar31; + int iVar32; + int iVar33; + undefined1 (*pauVar34) [16]; + undefined8 *puVar35; + int iVar36; + uint uVar37; + long lVar39; + int iVar40; + undefined1 (*pauVar41) [16]; + undefined1 (*pauVar42) [16]; + long lVar43; + long lVar44; + undefined8 *puVar45; + uint uVar46; + long lVar47; + undefined1 (*pauVar48) [16]; + undefined1 (*pauVar49) [16]; + undefined1 (*pauVar50) [16]; + byte *pbVar51; + long lVar52; + int iVar53; + undefined1 auVar54 [16]; + long lVar55; + int local_45c; + undefined1 auStack_408 [1032]; + ulong uVar38; + + pauVar34 = (undefined1 (*) [16])auStack_408; + iVar32 = (*(int **)(param_1 + 0x10))[1]; + iVar33 = **(int **)(param_1 + 0x10); + uVar28 = iVar32 + (*param_1 >> 3 & 0x1ff) * iVar32; + if ((ulong)(long)(int)uVar28 < 0x409) { + pauVar49 = *(undefined1 (**) [16])(param_2 + 0x10); + pauVar42 = *(undefined1 (**) [16])(param_1 + 4); + lVar55 = *(long *)(param_1 + 0x14); + } + else { + pauVar34 = operator_new__((long)(int)uVar28); + pauVar42 = *(undefined1 (**) [16])(param_1 + 4); + lVar55 = *(long *)(param_1 + 0x14); + pauVar49 = *(undefined1 (**) [16])(param_2 + 0x10); + } + if (0 < (int)uVar28) { + if ((pauVar42 < pauVar34 + 1 && pauVar34 < pauVar42 + 1) || (uVar28 < 0x16)) { + lVar44 = 0; + do { + (*pauVar34)[lVar44] = (*pauVar42)[lVar44]; + lVar44 = lVar44 + 1; + } while ((int)lVar44 < (int)uVar28); + } + else { + uVar19 = -(int)pauVar42 & 0xf; + uVar23 = (ulong)uVar28; + if (uVar19 < uVar28) { + uVar23 = (ulong)uVar19; + } + iVar32 = (int)uVar23; + uVar38 = uVar23; + if (((((iVar32 != 0) && ((*pauVar34)[0] = (*pauVar42)[0], iVar32 != 1)) && + ((*pauVar34)[1] = (*pauVar42)[1], iVar32 != 2)) && + (((*pauVar34)[2] = (*pauVar42)[2], iVar32 != 3 && + ((*pauVar34)[3] = (*pauVar42)[3], iVar32 != 4)))) && + ((*pauVar34)[4] = (*pauVar42)[4], iVar32 != 5)) { + (*pauVar34)[5] = (*pauVar42)[5]; + if (iVar32 == 6) { + uVar38 = 6; + } + else { + (*pauVar34)[6] = (*pauVar42)[6]; + if ((((iVar32 != 7) && ((*pauVar34)[7] = (*pauVar42)[7], iVar32 != 8)) && + (((*pauVar34)[8] = (*pauVar42)[8], iVar32 != 9 && + ((((*pauVar34)[9] = (*pauVar42)[9], iVar32 != 10 && + ((*pauVar34)[10] = (*pauVar42)[10], iVar32 != 0xb)) && + ((*pauVar34)[0xb] = (*pauVar42)[0xb], iVar32 != 0xc)))))) && + ((*pauVar34)[0xc] = (*pauVar42)[0xc], iVar32 != 0xd)) { + (*pauVar34)[0xd] = (*pauVar42)[0xd]; + if (iVar32 == 0xf) { + (*pauVar34)[0xe] = (*pauVar42)[0xe]; + } + else { + uVar38 = 0xe; + } + } + } + } + iVar36 = (int)uVar38; + uVar19 = ((uVar28 - iVar32) - 0x10 >> 4) + 1; + iVar26 = uVar19 * 0x10; + if (0xe < (uVar28 - 1) - iVar32) { + uVar46 = 0; + puVar35 = (undefined8 *)(*pauVar34 + uVar23); + puVar45 = (undefined8 *)(*pauVar42 + uVar23); + do { + uVar31 = *puVar45; + uVar46 = uVar46 + 1; + puVar35[1] = puVar45[1]; + *puVar35 = uVar31; + puVar35 = puVar35 + 2; + puVar45 = puVar45 + 2; + } while (uVar46 < uVar19); + iVar36 = iVar36 + iVar26; + if (uVar28 - iVar32 == iVar26) goto LAB_0030c034; + } + iVar32 = iVar36 + 1; + (*pauVar34)[iVar36] = (*pauVar42)[iVar36]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 2; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 3; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 4; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 5; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 6; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 7; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 8; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 9; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 10; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 0xb; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 0xc; + /* try { // try from 0030bfe0 to 0040c2d7 has its CatchHandler @ 0030bc34 */ + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 0xd; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar36 = iVar36 + 0xe; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar36 < (int)uVar28) { + (*pauVar34)[iVar36] = (*pauVar42)[iVar36]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0030c034: + local_45c = uVar28 - 1; + uVar29 = uVar28 - 4; + iVar26 = uVar28 - 3; + uVar27 = uVar29 >> 2; + uVar19 = uVar27 + 1; + uVar46 = (uVar27 - 3 >> 2) + 1; + iVar36 = uVar19 * 4; + iVar32 = uVar46 * 0x10; + if (uVar29 < 0xc) { + iVar32 = 0; + } + if (iVar26 < 1) { + iVar36 = 0; + } + uVar30 = uVar28 - iVar36; + lVar47 = (long)(iVar32 + 4); + iVar1 = iVar36 + 1; + lVar44 = (long)iVar36; + iVar2 = iVar36 + 2; + pbVar18 = *pauVar34 + lVar44; + uVar20 = -(int)pbVar18 & 0xf; + uVar22 = uVar30; + if (uVar20 < uVar30) { + uVar22 = uVar20; + } + iVar3 = iVar36 + 3; + lVar52 = (long)(iVar32 + 8); + iVar4 = iVar36 + 4; + uVar20 = ((uVar30 - uVar22) - 0x10 >> 4) + 1; + lVar39 = (long)iVar32; + iVar5 = iVar36 + 5; + iVar6 = iVar36 + 6; + iVar7 = iVar36 + 7; + iVar8 = iVar36 + 8; + iVar9 = iVar36 + 9; + iVar10 = iVar36 + 10; + iVar11 = iVar36 + 0xb; + iVar12 = iVar36 + 0xc; + iVar13 = iVar36 + 0xd; + iVar53 = uVar20 * 0x10; + iVar14 = iVar36 + 0xe; + /* try { // try from 0030c318 to 0040c31b has its CatchHandler @ 0030c4dc */ + /* try { // try from 0030c320 to 0040c4cb has its CatchHandler @ 0030bc34 */ +joined_r0x0030c424: + pauVar50 = pauVar42; + iVar33 = iVar33 + -1; + if (iVar33 != 0) { + pauVar42 = (undefined1 (*) [16])(*pauVar50 + lVar55); + if (0 < iVar26) { + if ((pauVar34 < pauVar42 + 4 && pauVar42 < pauVar34 + 4) || (uVar19 < 4)) { + pbVar51 = *pauVar42 + 1; + pauVar41 = pauVar34; + do { + pbVar17 = pbVar51 + 4; + bVar25 = (*pauVar41)[0]; + bVar24 = pbVar51[-1]; + bVar21 = *pbVar51; + if ((byte)(*pauVar41)[1] < *pbVar51) { + bVar21 = (*pauVar41)[1]; + } + (*pauVar41)[1] = bVar21; + if (bVar25 < bVar24) { + bVar24 = bVar25; + } + (*pauVar41)[0] = bVar24; + bVar24 = pbVar51[1]; + bVar21 = pbVar51[2]; + if ((byte)(*pauVar41)[3] < pbVar51[2]) { + bVar21 = (*pauVar41)[3]; + } + (*pauVar41)[3] = bVar21; + if ((byte)(*pauVar41)[2] < bVar24) { + bVar24 = (*pauVar41)[2]; + } + (*pauVar41)[2] = bVar24; + pbVar51 = pbVar17; + pauVar41 = (undefined1 (*) [16])(*pauVar41 + 4); + } while (pbVar17 != *pauVar42 + (ulong)uVar27 * 4 + 5); + } + else { + if (0xb < uVar29) { + uVar37 = 0; + pauVar41 = pauVar34; + pauVar48 = pauVar42; + do { + uVar37 = uVar37 + 1; + auVar54 = NEON_umin(*pauVar48,*pauVar41,1); + *(long *)(*pauVar41 + 8) = auVar54._8_8_; + *(long *)*pauVar41 = auVar54._0_8_; + pauVar41 = pauVar41 + 1; + pauVar48 = pauVar48 + 1; + } while (uVar37 < uVar46); + if (uVar19 == uVar46 * 4) goto LAB_0030c5e4; + } + bVar24 = (*pauVar34)[lVar39 + 1]; + bVar25 = (*pauVar34)[lVar39]; + bVar21 = (*pauVar42)[lVar39 + 1]; + if (bVar24 < (byte)(*pauVar42)[lVar39 + 1]) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar39]; + if (bVar25 < (byte)(*pauVar42)[lVar39]) { + bVar24 = bVar25; + } + (*pauVar34)[lVar39] = bVar24; + /* catch() { ... } // from try @ 0030c318 with catch @ 0030c4dc */ + (*pauVar34)[lVar39 + 1] = bVar21; + bVar24 = (*pauVar34)[lVar39 + 3]; + /* try { // try from 0030c4ec to 0040c4ef has its CatchHandler @ 0030bc34 */ + /* catch() { ... } // from try @ 0030cbd8 with catch @ 0030c4f0 + catch() { ... } // from try @ 0030ccec with catch @ 0030c4f0 + catch() { ... } // from try @ 0030ced8 with catch @ 0030c4f0 */ + bVar25 = (*pauVar34)[lVar39 + 2]; + bVar21 = (*pauVar42)[lVar39 + 3]; + if (bVar24 < (byte)(*pauVar42)[lVar39 + 3]) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar39 + 2]; + if (bVar25 < (byte)(*pauVar42)[lVar39 + 2]) { + bVar24 = bVar25; + } + (*pauVar34)[lVar39 + 2] = bVar24; + (*pauVar34)[lVar39 + 3] = bVar21; + if (iVar32 + 4 < iVar26) { + bVar24 = (*pauVar34)[lVar47 + 1]; + bVar25 = (*pauVar34)[lVar47]; + bVar21 = (*pauVar42)[lVar47 + 1]; + if (bVar24 < (byte)(*pauVar42)[lVar47 + 1]) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar47]; + if (bVar25 < (byte)(*pauVar42)[lVar47]) { + bVar24 = bVar25; + } + (*pauVar34)[lVar47] = bVar24; + (*pauVar34)[lVar47 + 1] = bVar21; + bVar24 = (*pauVar34)[lVar47 + 3]; + bVar25 = (*pauVar34)[lVar47 + 2]; + bVar21 = (*pauVar42)[lVar47 + 3]; + if (bVar24 < (byte)(*pauVar42)[lVar47 + 3]) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar47 + 2]; + if (bVar25 < (byte)(*pauVar42)[lVar47 + 2]) { + bVar24 = bVar25; + } + (*pauVar34)[lVar47 + 2] = bVar24; + (*pauVar34)[lVar47 + 3] = bVar21; + if (iVar32 + 8 < iVar26) { + bVar24 = (*pauVar34)[lVar52 + 1]; + bVar25 = (*pauVar34)[lVar52]; + bVar21 = (*pauVar42)[lVar52 + 1]; + if (bVar24 < (byte)(*pauVar42)[lVar52 + 1]) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar52]; + if (bVar25 < (byte)(*pauVar42)[lVar52]) { + bVar24 = bVar25; + } + (*pauVar34)[lVar52] = bVar24; + (*pauVar34)[lVar52 + 1] = bVar21; + bVar24 = (*pauVar34)[lVar52 + 3]; + bVar25 = (*pauVar34)[lVar52 + 2]; + bVar21 = (*pauVar42)[lVar52 + 3]; + if (bVar24 < (byte)(*pauVar42)[lVar52 + 3]) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar52 + 2]; + if (bVar25 < (byte)(*pauVar42)[lVar52 + 2]) { + bVar24 = bVar25; + } + (*pauVar34)[lVar52 + 2] = bVar24; + (*pauVar34)[lVar52 + 3] = bVar21; + } + } + } + } +LAB_0030c5e4: + if (iVar36 < (int)uVar28) { + if ((pauVar34[1] + lVar44 <= *pauVar50 + lVar44 + lVar55 || + pauVar50[1] + lVar44 + lVar55 <= pbVar18) && (0x12 < uVar30)) { + iVar40 = iVar36; + if (uVar22 != 0) { + bVar21 = (*pauVar42)[lVar44]; + if (*pbVar18 < (byte)(*pauVar42)[lVar44]) { + bVar21 = *pbVar18; + } + *pbVar18 = bVar21; + iVar40 = iVar1; + if (uVar22 != 1) { + bVar24 = (*pauVar34)[iVar1]; + bVar21 = (*pauVar42)[iVar1]; + if (bVar24 < (byte)(*pauVar42)[iVar1]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar1] = bVar21; + iVar40 = iVar2; + if (uVar22 != 2) { + bVar24 = (*pauVar34)[iVar2]; + bVar21 = (*pauVar42)[iVar2]; + if (bVar24 < (byte)(*pauVar42)[iVar2]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar2] = bVar21; + iVar40 = iVar3; + if (uVar22 != 3) { + bVar24 = (*pauVar34)[iVar3]; + bVar21 = (*pauVar42)[iVar3]; + if (bVar24 < (byte)(*pauVar42)[iVar3]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar3] = bVar21; + iVar40 = iVar4; + if (uVar22 != 4) { + bVar24 = (*pauVar34)[iVar4]; + bVar21 = (*pauVar42)[iVar4]; + if (bVar24 < (byte)(*pauVar42)[iVar4]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar4] = bVar21; + iVar40 = iVar5; + if (uVar22 != 5) { + bVar24 = (*pauVar34)[iVar5]; + bVar21 = (*pauVar42)[iVar5]; + if (bVar24 < (byte)(*pauVar42)[iVar5]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar5] = bVar21; + iVar40 = iVar6; + if (uVar22 != 6) { + bVar24 = (*pauVar34)[iVar6]; + bVar21 = (*pauVar42)[iVar6]; + if (bVar24 < (byte)(*pauVar42)[iVar6]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar6] = bVar21; + iVar40 = iVar7; + if (uVar22 != 7) { + bVar24 = (*pauVar34)[iVar7]; + bVar21 = (*pauVar42)[iVar7]; + if (bVar24 < (byte)(*pauVar42)[iVar7]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar7] = bVar21; + iVar40 = iVar8; + if (uVar22 != 8) { + bVar24 = (*pauVar34)[iVar8]; + bVar21 = (*pauVar42)[iVar8]; + if (bVar24 < (byte)(*pauVar42)[iVar8]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar8] = bVar21; + iVar40 = iVar9; + if (uVar22 != 9) { + bVar24 = (*pauVar34)[iVar9]; + bVar21 = (*pauVar42)[iVar9]; + if (bVar24 < (byte)(*pauVar42)[iVar9]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar9] = bVar21; + iVar40 = iVar10; + if (uVar22 != 10) { + bVar24 = (*pauVar34)[iVar10]; + bVar21 = (*pauVar42)[iVar10]; + if (bVar24 < (byte)(*pauVar42)[iVar10]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar10] = bVar21; + iVar40 = iVar11; + if (uVar22 != 0xb) { + bVar24 = (*pauVar34)[iVar11]; + bVar21 = (*pauVar42)[iVar11]; + if (bVar24 < (byte)(*pauVar42)[iVar11]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar11] = bVar21; + iVar40 = iVar12; + if (uVar22 != 0xc) { + bVar24 = (*pauVar34)[iVar12]; + bVar21 = (*pauVar42)[iVar12]; + if (bVar24 < (byte)(*pauVar42)[iVar12]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar12] = bVar21; + iVar40 = iVar13; + if (uVar22 != 0xd) { + bVar24 = (*pauVar34)[iVar13]; + bVar21 = (*pauVar42)[iVar13]; + if (bVar24 < (byte)(*pauVar42)[iVar13]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar13] = bVar21; + iVar40 = iVar14; + if (uVar22 == 0xf) { + bVar24 = (*pauVar34)[iVar14]; + bVar21 = (*pauVar42)[iVar14]; + if (bVar24 < (byte)(*pauVar42)[iVar14]) { + bVar21 = bVar24; + } + (*pauVar34)[iVar14] = bVar21; + iVar40 = iVar36 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (0xe < (uVar30 - 1) - uVar22) { + uVar37 = 0; + pauVar41 = (undefined1 (*) [16])(*pauVar34 + lVar44 + (ulong)uVar22); + pauVar48 = (undefined1 (*) [16])(*pauVar34 + lVar44 + (ulong)uVar22); + pauVar50 = (undefined1 (*) [16])(*pauVar50 + (ulong)uVar22 + lVar44 + lVar55); + do { + uVar37 = uVar37 + 1; + auVar54 = NEON_umin(*pauVar50,*pauVar41,1); + *(long *)(*pauVar48 + 8) = auVar54._8_8_; + *(long *)*pauVar48 = auVar54._0_8_; + pauVar41 = pauVar41 + 1; + pauVar48 = pauVar48 + 1; + pauVar50 = pauVar50 + 1; + } while (uVar37 < uVar20); + iVar40 = iVar40 + iVar53; + if (uVar30 - uVar22 == iVar53) goto joined_r0x0030c424; + } + iVar15 = iVar40 + 1; + bVar21 = (*pauVar42)[iVar40]; + if ((byte)(*pauVar34)[iVar40] < (byte)(*pauVar42)[iVar40]) { + bVar21 = (*pauVar34)[iVar40]; + } + (*pauVar34)[iVar40] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 2; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 3; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar34)[iVar16] < (byte)(*pauVar42)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 4; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 5; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar34)[iVar16] < (byte)(*pauVar42)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 6; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 7; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar34)[iVar16] < (byte)(*pauVar42)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 8; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 9; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar34)[iVar16] < (byte)(*pauVar42)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 10; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 0xb; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar34)[iVar16] < (byte)(*pauVar42)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 0xc; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 0xd; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar34)[iVar16] < (byte)(*pauVar42)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar40 = iVar40 + 0xe; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar34)[iVar15] < (byte)(*pauVar42)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar40 < (int)uVar28) { + bVar21 = (*pauVar42)[iVar40]; + if ((byte)(*pauVar34)[iVar40] < (byte)(*pauVar42)[iVar40]) { + bVar21 = (*pauVar34)[iVar40]; + } + (*pauVar34)[iVar40] = bVar21; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + goto joined_r0x0030c424; + } + lVar43 = 0; + do { + bVar21 = (*pauVar42)[lVar43 + lVar44]; + if (pbVar18[lVar43] < (byte)(*pauVar42)[lVar43 + lVar44]) { + bVar21 = pbVar18[lVar43]; + } + pbVar18[lVar43] = bVar21; + lVar43 = lVar43 + 1; + } while (lVar43 != (ulong)(uint)(local_45c - iVar36) + 1); + } + goto joined_r0x0030c424; + } + if (0 < (int)uVar28) { + if ((pauVar49 < pauVar34 + 1 && pauVar34 < pauVar49 + 1) || (uVar28 < 0x16)) { + lVar55 = 0; + do { + (*pauVar49)[lVar55] = (*pauVar34)[lVar55]; + lVar55 = lVar55 + 1; + } while ((int)lVar55 < (int)uVar28); + } + else { + uVar19 = -(int)pauVar34 & 0xf; + uVar23 = (ulong)uVar19; + if (uVar28 < uVar19) { + uVar23 = (ulong)uVar28; + } + iVar33 = (int)uVar23; + iVar32 = 0; + if (((iVar33 != 0) && ((*pauVar49)[0] = (*pauVar34)[0], iVar32 = iVar33, iVar33 != 1)) && + (((*pauVar49)[1] = (*pauVar34)[1], iVar33 != 2 && + (((*pauVar49)[2] = (*pauVar34)[2], iVar33 != 3 && + ((*pauVar49)[3] = (*pauVar34)[3], iVar33 != 4)))))) { + (*pauVar49)[4] = (*pauVar34)[4]; + if (iVar33 == 5) { + iVar32 = 5; + } + else { + (*pauVar49)[5] = (*pauVar34)[5]; + /* try { // try from 0030cbd8 to 0040cca3 has its CatchHandler @ 0030c4f0 */ + if (((((iVar33 != 6) && ((*pauVar49)[6] = (*pauVar34)[6], iVar33 != 7)) && + ((*pauVar49)[7] = (*pauVar34)[7], iVar33 != 8)) && + (((*pauVar49)[8] = (*pauVar34)[8], iVar33 != 9 && + ((*pauVar49)[9] = (*pauVar34)[9], iVar33 != 10)))) && + (((*pauVar49)[10] = (*pauVar34)[10], iVar33 != 0xb && + (((*pauVar49)[0xb] = (*pauVar34)[0xb], iVar33 != 0xc && + ((*pauVar49)[0xc] = (*pauVar34)[0xc], iVar33 != 0xd)))))) { + (*pauVar49)[0xd] = (*pauVar34)[0xd]; + if (iVar33 == 0xf) { + (*pauVar49)[0xe] = (*pauVar34)[0xe]; + } + else { + iVar32 = 0xe; + } + } + } + } + uVar19 = ((uVar28 - iVar33) - 0x10 >> 4) + 1; + iVar36 = uVar19 * 0x10; + if (0xe < (uint)(local_45c - iVar33)) { + uVar46 = 0; + puVar35 = (undefined8 *)(*pauVar34 + uVar23); + puVar45 = (undefined8 *)(*pauVar49 + uVar23); + do { + uVar31 = *puVar35; + uVar46 = uVar46 + 1; + puVar45[1] = puVar35[1]; + *puVar45 = uVar31; + puVar35 = puVar35 + 2; + puVar45 = puVar45 + 2; + } while (uVar46 < uVar19); + iVar32 = iVar32 + iVar36; + if (iVar36 == uVar28 - iVar33) goto LAB_0030cdb4; + } + iVar33 = iVar32 + 1; + (*pauVar49)[iVar32] = (*pauVar34)[iVar32]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 2; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 3; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 4; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 5; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 6; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + /* try { // try from 0030cce4 to 0040cce7 has its CatchHandler @ 0030cec8 */ + if (iVar36 < (int)uVar28) { + /* try { // try from 0030ccec to 0040ceb7 has its CatchHandler @ 0030c4f0 */ + iVar33 = iVar32 + 7; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 8; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 9; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 10; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 0xb; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 0xc; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 0xd; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar32 = iVar32 + 0xe; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar32 < (int)uVar28) { + (*pauVar49)[iVar32] = (*pauVar34)[iVar32]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0030cdb4: + if ((pauVar34 != (undefined1 (*) [16])auStack_408) && (pauVar34 != (undefined1 (*) [16])0x0)) { + operator_delete__(pauVar34); + } + return; +} + + +================================================================== + +### FUNC 0030cfac (4872 bytes) name=FUN_0030cfac + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0030cfac(uint *param_1,long param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + byte *pbVar17; + byte *pbVar18; + uint uVar19; + uint uVar20; + byte bVar21; + uint uVar22; + ulong uVar23; + byte bVar24; + byte bVar25; + int iVar26; + uint uVar27; + uint uVar28; + uint uVar29; + uint uVar30; + undefined8 uVar31; + int iVar32; + int iVar33; + undefined1 (*pauVar34) [16]; + undefined8 *puVar35; + int iVar36; + uint uVar37; + long lVar39; + int iVar40; + undefined1 (*pauVar41) [16]; + undefined1 (*pauVar42) [16]; + long lVar43; + long lVar44; + undefined8 *puVar45; + uint uVar46; + long lVar47; + undefined1 (*pauVar48) [16]; + undefined1 (*pauVar49) [16]; + undefined1 (*pauVar50) [16]; + byte *pbVar51; + long lVar52; + int iVar53; + undefined1 auVar54 [16]; + long lVar55; + int local_45c; + undefined1 auStack_408 [1032]; + ulong uVar38; + + pauVar34 = (undefined1 (*) [16])auStack_408; + iVar32 = (*(int **)(param_1 + 0x10))[1]; + iVar33 = **(int **)(param_1 + 0x10); + uVar28 = iVar32 + (*param_1 >> 3 & 0x1ff) * iVar32; + if ((ulong)(long)(int)uVar28 < 0x409) { + pauVar49 = *(undefined1 (**) [16])(param_2 + 0x10); + pauVar42 = *(undefined1 (**) [16])(param_1 + 4); + lVar55 = *(long *)(param_1 + 0x14); + } + else { + pauVar34 = operator_new__((long)(int)uVar28); + pauVar42 = *(undefined1 (**) [16])(param_1 + 4); + lVar55 = *(long *)(param_1 + 0x14); + pauVar49 = *(undefined1 (**) [16])(param_2 + 0x10); + } + if (0 < (int)uVar28) { + if ((pauVar42 < pauVar34 + 1 && pauVar34 < pauVar42 + 1) || (uVar28 < 0x16)) { + lVar44 = 0; + do { + (*pauVar34)[lVar44] = (*pauVar42)[lVar44]; + lVar44 = lVar44 + 1; + /* try { // try from 0030e284 to 0040e287 has its CatchHandler @ 0030e77c */ + } while ((int)lVar44 < (int)uVar28); + } + else { + uVar19 = -(int)pauVar42 & 0xf; + uVar23 = (ulong)uVar28; + if (uVar19 < uVar28) { + uVar23 = (ulong)uVar19; + } + iVar32 = (int)uVar23; + uVar38 = uVar23; + if (((((iVar32 != 0) && ((*pauVar34)[0] = (*pauVar42)[0], iVar32 != 1)) && + ((*pauVar34)[1] = (*pauVar42)[1], iVar32 != 2)) && + (((*pauVar34)[2] = (*pauVar42)[2], iVar32 != 3 && + ((*pauVar34)[3] = (*pauVar42)[3], iVar32 != 4)))) && + ((*pauVar34)[4] = (*pauVar42)[4], iVar32 != 5)) { + (*pauVar34)[5] = (*pauVar42)[5]; + if (iVar32 == 6) { + uVar38 = 6; + } + else { + (*pauVar34)[6] = (*pauVar42)[6]; + if ((((iVar32 != 7) && ((*pauVar34)[7] = (*pauVar42)[7], iVar32 != 8)) && + (((*pauVar34)[8] = (*pauVar42)[8], iVar32 != 9 && + ((((*pauVar34)[9] = (*pauVar42)[9], iVar32 != 10 && + ((*pauVar34)[10] = (*pauVar42)[10], iVar32 != 0xb)) && + ((*pauVar34)[0xb] = (*pauVar42)[0xb], iVar32 != 0xc)))))) && + ((*pauVar34)[0xc] = (*pauVar42)[0xc], iVar32 != 0xd)) { + (*pauVar34)[0xd] = (*pauVar42)[0xd]; + if (iVar32 == 0xf) { + (*pauVar34)[0xe] = (*pauVar42)[0xe]; + } + else { + uVar38 = 0xe; + } + } + } + } + iVar36 = (int)uVar38; + uVar19 = ((uVar28 - iVar32) - 0x10 >> 4) + 1; + iVar26 = uVar19 * 0x10; + if (0xe < (uVar28 - 1) - iVar32) { + uVar46 = 0; + puVar35 = (undefined8 *)(*pauVar34 + uVar23); + puVar45 = (undefined8 *)(*pauVar42 + uVar23); + do { + uVar31 = *puVar45; + uVar46 = uVar46 + 1; + puVar35[1] = puVar45[1]; + *puVar35 = uVar31; + puVar35 = puVar35 + 2; + puVar45 = puVar45 + 2; + } while (uVar46 < uVar19); + iVar36 = iVar36 + iVar26; + if (uVar28 - iVar32 == iVar26) goto LAB_0030d33c; + } + iVar32 = iVar36 + 1; + (*pauVar34)[iVar36] = (*pauVar42)[iVar36]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 2; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 3; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 4; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 5; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 6; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 7; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 8; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 9; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 10; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 0xb; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar26 = iVar36 + 0xc; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar26 < (int)uVar28) { + iVar32 = iVar36 + 0xd; + (*pauVar34)[iVar26] = (*pauVar42)[iVar26]; + if (iVar32 < (int)uVar28) { + iVar36 = iVar36 + 0xe; + (*pauVar34)[iVar32] = (*pauVar42)[iVar32]; + if (iVar36 < (int)uVar28) { + (*pauVar34)[iVar36] = (*pauVar42)[iVar36]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0030d33c: + local_45c = uVar28 - 1; + uVar29 = uVar28 - 4; + iVar26 = uVar28 - 3; + uVar27 = uVar29 >> 2; + uVar19 = uVar27 + 1; + uVar46 = (uVar27 - 3 >> 2) + 1; + iVar36 = uVar19 * 4; + iVar32 = uVar46 * 0x10; + if (uVar29 < 0xc) { + iVar32 = 0; + } + if (iVar26 < 1) { + iVar36 = 0; + } + uVar30 = uVar28 - iVar36; + lVar47 = (long)(iVar32 + 4); + iVar1 = iVar36 + 1; + lVar44 = (long)iVar36; + iVar2 = iVar36 + 2; + pbVar18 = *pauVar34 + lVar44; + uVar20 = -(int)pbVar18 & 0xf; + uVar22 = uVar30; + if (uVar20 < uVar30) { + uVar22 = uVar20; + } + iVar3 = iVar36 + 3; + lVar52 = (long)(iVar32 + 8); + iVar4 = iVar36 + 4; + uVar20 = ((uVar30 - uVar22) - 0x10 >> 4) + 1; + lVar39 = (long)iVar32; + iVar5 = iVar36 + 5; + iVar6 = iVar36 + 6; + iVar7 = iVar36 + 7; + iVar8 = iVar36 + 8; + iVar9 = iVar36 + 9; + iVar10 = iVar36 + 10; + iVar11 = iVar36 + 0xb; + iVar12 = iVar36 + 0xc; + iVar13 = iVar36 + 0xd; + iVar53 = uVar20 * 0x10; + iVar14 = iVar36 + 0xe; + /* try { // try from 0030d5c0 to 0040d68b has its CatchHandler @ 0030cedc */ + /* try { // try from 0030d6cc to 0040d6cf has its CatchHandler @ 0030d8b0 */ + /* try { // try from 0030d6d4 to 0040d89f has its CatchHandler @ 0030cedc */ +joined_r0x0030d72c: + pauVar50 = pauVar42; + iVar33 = iVar33 + -1; + if (iVar33 != 0) { + pauVar42 = (undefined1 (*) [16])(*pauVar50 + lVar55); + if (0 < iVar26) { + if ((pauVar34 < pauVar42 + 4 && pauVar42 < pauVar34 + 4) || (uVar19 < 4)) { + /* try { // try from 0030e144 to 0040e147 has its CatchHandler @ 0030e7a4 */ + pbVar51 = *pauVar42 + 1; + pauVar41 = pauVar34; + do { + pbVar17 = pbVar51 + 4; + bVar25 = (*pauVar41)[0]; + bVar24 = pbVar51[-1]; + bVar21 = *pbVar51; + if (*pbVar51 < (byte)(*pauVar41)[1]) { + bVar21 = (*pauVar41)[1]; + } + /* try { // try from 0030e178 to 0040e1cf has its CatchHandler @ 0030df30 */ + (*pauVar41)[1] = bVar21; + if (bVar24 < bVar25) { + bVar24 = bVar25; + } + (*pauVar41)[0] = bVar24; + bVar24 = pbVar51[1]; + bVar21 = pbVar51[2]; + if (pbVar51[2] < (byte)(*pauVar41)[3]) { + bVar21 = (*pauVar41)[3]; + } + (*pauVar41)[3] = bVar21; + if (bVar24 < (byte)(*pauVar41)[2]) { + bVar24 = (*pauVar41)[2]; + } + (*pauVar41)[2] = bVar24; + pbVar51 = pbVar17; + pauVar41 = (undefined1 (*) [16])(*pauVar41 + 4); + } while (pbVar17 != *pauVar42 + (ulong)uVar27 * 4 + 5); + } + else { + if (0xb < uVar29) { + uVar37 = 0; + pauVar41 = pauVar34; + pauVar48 = pauVar42; + do { + uVar37 = uVar37 + 1; + auVar54 = NEON_umax(*pauVar48,*pauVar41,1); + *(long *)(*pauVar41 + 8) = auVar54._8_8_; + *(long *)*pauVar41 = auVar54._0_8_; + pauVar41 = pauVar41 + 1; + pauVar48 = pauVar48 + 1; + } while (uVar37 < uVar46); + if (uVar19 == uVar46 * 4) goto LAB_0030d8ec; + } + bVar24 = (*pauVar34)[lVar39 + 1]; + bVar25 = (*pauVar34)[lVar39]; + bVar21 = (*pauVar42)[lVar39 + 1]; + if ((byte)(*pauVar42)[lVar39 + 1] < bVar24) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar39]; + if ((byte)(*pauVar42)[lVar39] < bVar25) { + bVar24 = bVar25; + } + (*pauVar34)[lVar39] = bVar24; + (*pauVar34)[lVar39 + 1] = bVar21; + bVar24 = (*pauVar34)[lVar39 + 3]; + bVar25 = (*pauVar34)[lVar39 + 2]; + bVar21 = (*pauVar42)[lVar39 + 3]; + if ((byte)(*pauVar42)[lVar39 + 3] < bVar24) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar39 + 2]; + if ((byte)(*pauVar42)[lVar39 + 2] < bVar25) { + bVar24 = bVar25; + } + (*pauVar34)[lVar39 + 2] = bVar24; + (*pauVar34)[lVar39 + 3] = bVar21; + if (iVar32 + 4 < iVar26) { + bVar24 = (*pauVar34)[lVar47 + 1]; + bVar25 = (*pauVar34)[lVar47]; + bVar21 = (*pauVar42)[lVar47 + 1]; + if ((byte)(*pauVar42)[lVar47 + 1] < bVar24) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar47]; + if ((byte)(*pauVar42)[lVar47] < bVar25) { + bVar24 = bVar25; + } + (*pauVar34)[lVar47] = bVar24; + (*pauVar34)[lVar47 + 1] = bVar21; + bVar24 = (*pauVar34)[lVar47 + 3]; + bVar25 = (*pauVar34)[lVar47 + 2]; + bVar21 = (*pauVar42)[lVar47 + 3]; + if ((byte)(*pauVar42)[lVar47 + 3] < bVar24) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar47 + 2]; + if ((byte)(*pauVar42)[lVar47 + 2] < bVar25) { + bVar24 = bVar25; + } + (*pauVar34)[lVar47 + 2] = bVar24; + (*pauVar34)[lVar47 + 3] = bVar21; + if (iVar32 + 8 < iVar26) { + bVar24 = (*pauVar34)[lVar52 + 1]; + bVar25 = (*pauVar34)[lVar52]; + bVar21 = (*pauVar42)[lVar52 + 1]; + if ((byte)(*pauVar42)[lVar52 + 1] < bVar24) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar52]; + /* catch() { ... } // from try @ 0030d6cc with catch @ 0030d8b0 */ + if ((byte)(*pauVar42)[lVar52] < bVar25) { + bVar24 = bVar25; + } + (*pauVar34)[lVar52] = bVar24; + /* try { // try from 0030d8c0 to 0040d8c3 has its CatchHandler @ 0030cedc */ + (*pauVar34)[lVar52 + 1] = bVar21; + /* catch() { ... } // from try @ 0030d924 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030d970 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030d9c8 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030da74 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030db1c with catch @ 0030d8c4 + catch() { ... } // from try @ 0030dbd0 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030dc54 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030dccc with catch @ 0030d8c4 + catch() { ... } // from try @ 0030dd44 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030ddbc with catch @ 0030d8c4 + catch() { ... } // from try @ 0030de34 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030dec4 with catch @ 0030d8c4 + catch() { ... } // from try @ 0030defc with catch @ 0030d8c4 + catch() { ... } // from try @ 0030df14 with catch @ 0030d8c4 */ + bVar24 = (*pauVar34)[lVar52 + 3]; + bVar25 = (*pauVar34)[lVar52 + 2]; + bVar21 = (*pauVar42)[lVar52 + 3]; + if ((byte)(*pauVar42)[lVar52 + 3] < bVar24) { + bVar21 = bVar24; + } + bVar24 = (*pauVar42)[lVar52 + 2]; + if ((byte)(*pauVar42)[lVar52 + 2] < bVar25) { + bVar24 = bVar25; + } + (*pauVar34)[lVar52 + 2] = bVar24; + (*pauVar34)[lVar52 + 3] = bVar21; + } + } + } + } +LAB_0030d8ec: + if (iVar36 < (int)uVar28) { + /* try { // try from 0030d924 to 0040d927 has its CatchHandler @ 0030d8c4 */ + if ((pauVar34[1] + lVar44 <= *pauVar50 + lVar44 + lVar55 || + pauVar50[1] + lVar44 + lVar55 <= pbVar18) && (0x12 < uVar30)) { + iVar40 = iVar36; + if (uVar22 != 0) { + bVar21 = (*pauVar42)[lVar44]; + if ((byte)(*pauVar42)[lVar44] < *pbVar18) { + bVar21 = *pbVar18; + } + *pbVar18 = bVar21; + iVar40 = iVar1; + if (uVar22 != 1) { + bVar24 = (*pauVar34)[iVar1]; + bVar21 = (*pauVar42)[iVar1]; + if ((byte)(*pauVar42)[iVar1] < bVar24) { + bVar21 = bVar24; + } + /* try { // try from 0030d968 to 0040d96b has its CatchHandler @ 0030df04 */ + (*pauVar34)[iVar1] = bVar21; + iVar40 = iVar2; + if (uVar22 != 2) { + /* try { // try from 0030d970 to 0040d9a7 has its CatchHandler @ 0030d8c4 */ + bVar24 = (*pauVar34)[iVar2]; + bVar21 = (*pauVar42)[iVar2]; + if ((byte)(*pauVar42)[iVar2] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar2] = bVar21; + iVar40 = iVar3; + if (uVar22 != 3) { + bVar24 = (*pauVar34)[iVar3]; + bVar21 = (*pauVar42)[iVar3]; + /* try { // try from 0030d9ac to 0040d9af has its CatchHandler @ 0030df00 */ + if ((byte)(*pauVar42)[iVar3] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar3] = bVar21; + iVar40 = iVar4; + if (uVar22 != 4) { + /* try { // try from 0030d9c8 to 0040da53 has its CatchHandler @ 0030d8c4 */ + bVar24 = (*pauVar34)[iVar4]; + bVar21 = (*pauVar42)[iVar4]; + if ((byte)(*pauVar42)[iVar4] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar4] = bVar21; + iVar40 = iVar5; + if (uVar22 != 5) { + bVar24 = (*pauVar34)[iVar5]; + bVar21 = (*pauVar42)[iVar5]; + if ((byte)(*pauVar42)[iVar5] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar5] = bVar21; + iVar40 = iVar6; + if (uVar22 != 6) { + bVar24 = (*pauVar34)[iVar6]; + bVar21 = (*pauVar42)[iVar6]; + if ((byte)(*pauVar42)[iVar6] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar6] = bVar21; + iVar40 = iVar7; + if (uVar22 != 7) { + bVar24 = (*pauVar34)[iVar7]; + bVar21 = (*pauVar42)[iVar7]; + if ((byte)(*pauVar42)[iVar7] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar7] = bVar21; + iVar40 = iVar8; + if (uVar22 != 8) { + /* try { // try from 0030da58 to 0040da5b has its CatchHandler @ 0030df24 */ + bVar24 = (*pauVar34)[iVar8]; + bVar21 = (*pauVar42)[iVar8]; + if ((byte)(*pauVar42)[iVar8] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar8] = bVar21; + iVar40 = iVar9; + /* try { // try from 0030da74 to 0040dafb has its CatchHandler @ 0030d8c4 */ + if (uVar22 != 9) { + bVar24 = (*pauVar34)[iVar9]; + bVar21 = (*pauVar42)[iVar9]; + if ((byte)(*pauVar42)[iVar9] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar9] = bVar21; + iVar40 = iVar10; + if (uVar22 != 10) { + bVar24 = (*pauVar34)[iVar10]; + bVar21 = (*pauVar42)[iVar10]; + if ((byte)(*pauVar42)[iVar10] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar10] = bVar21; + iVar40 = iVar11; + if (uVar22 != 0xb) { + bVar24 = (*pauVar34)[iVar11]; + bVar21 = (*pauVar42)[iVar11]; + if ((byte)(*pauVar42)[iVar11] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar11] = bVar21; + iVar40 = iVar12; + if (uVar22 != 0xc) { + bVar24 = (*pauVar34)[iVar12]; + /* try { // try from 0030db00 to 0040db03 has its CatchHandler @ 0030df18 */ + bVar21 = (*pauVar42)[iVar12]; + if ((byte)(*pauVar42)[iVar12] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar12] = bVar21; + iVar40 = iVar13; + if (uVar22 != 0xd) { + /* try { // try from 0030db1c to 0040dbaf has its CatchHandler @ 0030d8c4 */ + bVar24 = (*pauVar34)[iVar13]; + bVar21 = (*pauVar42)[iVar13]; + if ((byte)(*pauVar42)[iVar13] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar13] = bVar21; + iVar40 = iVar14; + if (uVar22 == 0xf) { + bVar24 = (*pauVar34)[iVar14]; + bVar21 = (*pauVar42)[iVar14]; + if ((byte)(*pauVar42)[iVar14] < bVar24) { + bVar21 = bVar24; + } + (*pauVar34)[iVar14] = bVar21; + iVar40 = iVar36 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (0xe < (uVar30 - 1) - uVar22) { + uVar37 = 0; + pauVar41 = (undefined1 (*) [16])(*pauVar34 + lVar44 + (ulong)uVar22); + pauVar48 = (undefined1 (*) [16])(*pauVar34 + lVar44 + (ulong)uVar22); + pauVar50 = (undefined1 (*) [16])(*pauVar50 + (ulong)uVar22 + lVar44 + lVar55); + do { + uVar37 = uVar37 + 1; + auVar54 = NEON_umax(*pauVar50,*pauVar41,1); + *(long *)(*pauVar48 + 8) = auVar54._8_8_; + *(long *)*pauVar48 = auVar54._0_8_; + pauVar41 = pauVar41 + 1; + pauVar48 = pauVar48 + 1; + pauVar50 = pauVar50 + 1; + } while (uVar37 < uVar20); + /* try { // try from 0030dbb4 to 0040dbb7 has its CatchHandler @ 0030df2c */ + iVar40 = iVar40 + iVar53; + if (uVar30 - uVar22 == iVar53) goto joined_r0x0030d72c; + } + iVar15 = iVar40 + 1; + /* try { // try from 0030dbd0 to 0040dc33 has its CatchHandler @ 0030d8c4 */ + bVar21 = (*pauVar42)[iVar40]; + if ((byte)(*pauVar42)[iVar40] < (byte)(*pauVar34)[iVar40]) { + bVar21 = (*pauVar34)[iVar40]; + } + (*pauVar34)[iVar40] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 2; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 3; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar42)[iVar16] < (byte)(*pauVar34)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 4; + /* try { // try from 0030dc38 to 0040dc3b has its CatchHandler @ 0030df20 */ + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + /* try { // try from 0030dc54 to 0040dcab has its CatchHandler @ 0030d8c4 */ + iVar15 = iVar40 + 5; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar42)[iVar16] < (byte)(*pauVar34)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 6; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 7; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar42)[iVar16] < (byte)(*pauVar34)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + /* try { // try from 0030dcb0 to 0040dcb3 has its CatchHandler @ 0030df28 */ + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 8; + /* try { // try from 0030dccc to 0040dd23 has its CatchHandler @ 0030d8c4 */ + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 9; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar42)[iVar16] < (byte)(*pauVar34)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 10; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 0xb; + /* try { // try from 0030dd28 to 0040dd2b has its CatchHandler @ 0030df1c */ + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar42)[iVar16] < (byte)(*pauVar34)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + /* try { // try from 0030dd44 to 0040dd9b has its CatchHandler @ 0030d8c4 */ + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar16 = iVar40 + 0xc; + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar16 < (int)uVar28) { + iVar15 = iVar40 + 0xd; + bVar21 = (*pauVar42)[iVar16]; + if ((byte)(*pauVar42)[iVar16] < (byte)(*pauVar34)[iVar16]) { + bVar21 = (*pauVar34)[iVar16]; + } + (*pauVar34)[iVar16] = bVar21; + if (iVar15 < (int)uVar28) { + iVar40 = iVar40 + 0xe; + /* try { // try from 0030dda0 to 0040dda3 has its CatchHandler @ 0030ded4 */ + bVar21 = (*pauVar42)[iVar15]; + if ((byte)(*pauVar42)[iVar15] < (byte)(*pauVar34)[iVar15]) { + bVar21 = (*pauVar34)[iVar15]; + } + (*pauVar34)[iVar15] = bVar21; + if (iVar40 < (int)uVar28) { + /* try { // try from 0030ddbc to 0040de13 has its CatchHandler @ 0030d8c4 */ + bVar21 = (*pauVar42)[iVar40]; + if ((byte)(*pauVar42)[iVar40] < (byte)(*pauVar34)[iVar40]) { + bVar21 = (*pauVar34)[iVar40]; + } + (*pauVar34)[iVar40] = bVar21; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + goto joined_r0x0030d72c; + } + lVar43 = 0; + do { + bVar21 = (*pauVar42)[lVar43 + lVar44]; + if ((byte)(*pauVar42)[lVar43 + lVar44] < pbVar18[lVar43]) { + bVar21 = pbVar18[lVar43]; + } + pbVar18[lVar43] = bVar21; + lVar43 = lVar43 + 1; + } while (lVar43 != (ulong)(uint)(local_45c - iVar36) + 1); + } + goto joined_r0x0030d72c; + } + if (0 < (int)uVar28) { + if ((pauVar49 < pauVar34 + 1 && pauVar34 < pauVar49 + 1) || (uVar28 < 0x16)) { + lVar55 = 0; + do { + (*pauVar49)[lVar55] = (*pauVar34)[lVar55]; + lVar55 = lVar55 + 1; + } while ((int)lVar55 < (int)uVar28); + } + else { + uVar19 = -(int)pauVar34 & 0xf; + /* try { // try from 0030de18 to 0040de1b has its CatchHandler @ 0030dee8 */ + uVar23 = (ulong)uVar19; + if (uVar28 < uVar19) { + uVar23 = (ulong)uVar28; + } + iVar33 = (int)uVar23; + iVar32 = 0; + /* try { // try from 0030de34 to 0040de9f has its CatchHandler @ 0030d8c4 */ + if (((iVar33 != 0) && ((*pauVar49)[0] = (*pauVar34)[0], iVar32 = iVar33, iVar33 != 1)) && + (((*pauVar49)[1] = (*pauVar34)[1], iVar33 != 2 && + (((*pauVar49)[2] = (*pauVar34)[2], iVar33 != 3 && + ((*pauVar49)[3] = (*pauVar34)[3], iVar33 != 4)))))) { + (*pauVar49)[4] = (*pauVar34)[4]; + if (iVar33 == 5) { + iVar32 = 5; + } + else { + (*pauVar49)[5] = (*pauVar34)[5]; + /* try { // try from 0030debc to 0040debf has its CatchHandler @ 0030deec */ + /* try { // try from 0030dec4 to 0040dee7 has its CatchHandler @ 0030d8c4 */ + /* catch() { ... } // from try @ 0030dda0 with catch @ 0030ded4 */ + /* catch() { ... } // from try @ 0030de18 with catch @ 0030dee8 */ + /* catch() { ... } // from try @ 0030debc with catch @ 0030deec */ + if (((((iVar33 != 6) && ((*pauVar49)[6] = (*pauVar34)[6], iVar33 != 7)) && + ((*pauVar49)[7] = (*pauVar34)[7], iVar33 != 8)) && + (((*pauVar49)[8] = (*pauVar34)[8], iVar33 != 9 && + ((*pauVar49)[9] = (*pauVar34)[9], iVar33 != 10)))) && + (((*pauVar49)[10] = (*pauVar34)[10], iVar33 != 0xb && + (((*pauVar49)[0xb] = (*pauVar34)[0xb], iVar33 != 0xc && + ((*pauVar49)[0xc] = (*pauVar34)[0xc], iVar33 != 0xd)))))) { + /* try { // try from 0030defc to 0040deff has its CatchHandler @ 0030d8c4 */ + (*pauVar49)[0xd] = (*pauVar34)[0xd]; + /* catch() { ... } // from try @ 0030d9ac with catch @ 0030df00 */ + if (iVar33 == 0xf) { + /* catch() { ... } // from try @ 0030d968 with catch @ 0030df04 */ + (*pauVar49)[0xe] = (*pauVar34)[0xe]; + } + else { + iVar32 = 0xe; + } + } + } + } + /* try { // try from 0030df14 to 0040df17 has its CatchHandler @ 0030d8c4 */ + /* catch() { ... } // from try @ 0030db00 with catch @ 0030df18 */ + /* catch() { ... } // from try @ 0030dd28 with catch @ 0030df1c */ + /* catch() { ... } // from try @ 0030dc38 with catch @ 0030df20 */ + /* catch() { ... } // from try @ 0030da58 with catch @ 0030df24 */ + /* catch() { ... } // from try @ 0030dcb0 with catch @ 0030df28 */ + uVar19 = ((uVar28 - iVar33) - 0x10 >> 4) + 1; + /* catch() { ... } // from try @ 0030dbb4 with catch @ 0030df2c */ + iVar36 = uVar19 * 0x10; + /* catch() { ... } // from try @ 0030df98 with catch @ 0030df30 + catch() { ... } // from try @ 0030dfe4 with catch @ 0030df30 + catch() { ... } // from try @ 0030e054 with catch @ 0030df30 + catch() { ... } // from try @ 0030e178 with catch @ 0030df30 + catch() { ... } // from try @ 0030e208 with catch @ 0030df30 + catch() { ... } // from try @ 0030e2b8 with catch @ 0030df30 + catch() { ... } // from try @ 0030e348 with catch @ 0030df30 + catch() { ... } // from try @ 0030e3d8 with catch @ 0030df30 + catch() { ... } // from try @ 0030e468 with catch @ 0030df30 + catch() { ... } // from try @ 0030e4f8 with catch @ 0030df30 + catch() { ... } // from try @ 0030e588 with catch @ 0030df30 + catch() { ... } // from try @ 0030e618 with catch @ 0030df30 + catch() { ... } // from try @ 0030e6a8 with catch @ 0030df30 + catch() { ... } // from try @ 0030e738 with catch @ 0030df30 + catch() { ... } // from try @ 0030e778 with catch @ 0030df30 + catch() { ... } // from try @ 0030e790 with catch @ 0030df30 */ + if (0xe < (uint)(local_45c - iVar33)) { + uVar46 = 0; + puVar35 = (undefined8 *)(*pauVar34 + uVar23); + puVar45 = (undefined8 *)(*pauVar49 + uVar23); + do { + uVar31 = *puVar35; + uVar46 = uVar46 + 1; + puVar45[1] = puVar35[1]; + *puVar45 = uVar31; + puVar35 = puVar35 + 2; + puVar45 = puVar45 + 2; + } while (uVar46 < uVar19); + iVar32 = iVar32 + iVar36; + if (iVar36 == uVar28 - iVar33) goto LAB_0030e0bc; + } + iVar33 = iVar32 + 1; + (*pauVar49)[iVar32] = (*pauVar34)[iVar32]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 2; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 3; + /* try { // try from 0030df98 to 0040df9b has its CatchHandler @ 0030df30 */ + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 4; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 5; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + /* try { // try from 0030dfdc to 0040dfdf has its CatchHandler @ 0030e780 */ + iVar36 = iVar32 + 6; + /* try { // try from 0030dfe4 to 0040e01b has its CatchHandler @ 0030df30 */ + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 7; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 8; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 9; + /* try { // try from 0030e020 to 0040e023 has its CatchHandler @ 0030e794 */ + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 10; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + /* try { // try from 0030e054 to 0040e13f has its CatchHandler @ 0030df30 */ + iVar33 = iVar32 + 0xb; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar36 = iVar32 + 0xc; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar36 < (int)uVar28) { + iVar33 = iVar32 + 0xd; + (*pauVar49)[iVar36] = (*pauVar34)[iVar36]; + if (iVar33 < (int)uVar28) { + iVar32 = iVar32 + 0xe; + (*pauVar49)[iVar33] = (*pauVar34)[iVar33]; + if (iVar32 < (int)uVar28) { + (*pauVar49)[iVar32] = (*pauVar34)[iVar32]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0030e0bc: + if ((pauVar34 != (undefined1 (*) [16])auStack_408) && (pauVar34 != (undefined1 (*) [16])0x0)) { + operator_delete__(pauVar34); + } + return; +} + + +================================================================== + +### FUNC 0030e2b4 (2908 bytes) name=FUN_0030e2b4 + +void FUN_0030e2b4(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + ushort *puVar7; + ushort *puVar8; + uint uVar9; + ushort uVar10; + uint uVar11; + int iVar12; + ushort uVar13; + ushort uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + undefined8 uVar19; + undefined1 (*pauVar20) [16]; + bool bVar21; + uint uVar22; + ulong uVar23; + undefined1 (*pauVar24) [16]; + undefined8 *puVar25; + long lVar26; + undefined1 (*pauVar27) [16]; + uint uVar28; + uint uVar29; + long lVar30; + undefined1 (*pauVar31) [16]; + undefined1 (*pauVar32) [16]; + uint uVar33; + undefined8 *puVar34; + ulong uVar35; + ulong uVar36; + ulong uVar37; + ulong uVar38; + ulong uVar39; + ulong uVar40; + undefined1 (*pauVar41) [16]; + ulong uVar42; + int iVar43; + ulong uVar44; + ushort *puVar45; + ulong uVar46; + long lVar47; + undefined1 auVar48 [16]; + long lVar49; + undefined1 (*pauVar50) [16]; + long lVar51; + long lVar52; + int iVar53; + undefined1 auStack_410 [1040]; + + /* try { // try from 0030e2b8 to 0040e30f has its CatchHandler @ 0030df30 */ + pauVar32 = (undefined1 (*) [16])auStack_410; + iVar53 = (*(int **)(param_1 + 0x10))[1]; + iVar12 = **(int **)(param_1 + 0x10); + uVar16 = iVar53 + (*param_1 >> 3 & 0x1ff) * iVar53; + /* try { // try from 0030e314 to 0040e317 has its CatchHandler @ 0030e7a0 */ + uVar46 = (ulong)(int)uVar16; + if (uVar46 < 0x209) { + bVar21 = false; + } + else { + uVar23 = uVar46 << 1; + if (0x3f80000000000000 < uVar46) { + uVar23 = 0xffffffffffffffff; + } + pauVar24 = operator_new__(uVar23); + bVar21 = pauVar24 != pauVar32; + /* try { // try from 0030e348 to 0040e39f has its CatchHandler @ 0030df30 */ + pauVar32 = pauVar24; + } + pauVar50 = *(undefined1 (**) [16])(param_2 + 0x10); + pauVar24 = *(undefined1 (**) [16])(param_1 + 4); + uVar46 = *(ulong *)(param_1 + 0x14) >> 1; + if (0 < (int)uVar16) { + if ((pauVar24 < pauVar32 + 1 && pauVar32 < pauVar24 + 1) || (uVar16 < 0xf)) { + lVar26 = 0; + do { + *(undefined2 *)(*pauVar32 + lVar26 * 2) = *(undefined2 *)(*pauVar24 + lVar26 * 2); + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar16); + } + else { + uVar33 = -((uint)((ulong)pauVar24 >> 1) & 7) & 7; + /* try { // try from 0030e3a4 to 0040e3a7 has its CatchHandler @ 0030e79c */ + uVar1 = uVar16; + if (uVar33 < uVar16) { + uVar1 = uVar33; + } + uVar33 = uVar1; + /* try { // try from 0030e3d8 to 0040e42f has its CatchHandler @ 0030df30 */ + if (((((uVar1 != 0) && (*(undefined2 *)*pauVar32 = *(undefined2 *)*pauVar24, uVar1 != 1)) && + (*(undefined2 *)(*pauVar32 + 2) = *(undefined2 *)(*pauVar24 + 2), uVar1 != 2)) && + ((*(undefined2 *)(*pauVar32 + 4) = *(undefined2 *)(*pauVar24 + 4), uVar1 != 3 && + (*(undefined2 *)(*pauVar32 + 6) = *(undefined2 *)(*pauVar24 + 6), uVar1 != 4)))) && + (*(undefined2 *)(*pauVar32 + 8) = *(undefined2 *)(*pauVar24 + 8), uVar1 != 5)) { + *(undefined2 *)(*pauVar32 + 10) = *(undefined2 *)(*pauVar24 + 10); + if (uVar1 == 7) { + *(undefined2 *)(*pauVar32 + 0xc) = *(undefined2 *)(*pauVar24 + 0xc); + uVar33 = 7; + } + else { + uVar33 = 6; + } + } + /* try { // try from 0030e434 to 0040e437 has its CatchHandler @ 0030e748 */ + uVar28 = ((uVar16 - uVar1) - 8 >> 3) + 1; + uVar29 = 0; + iVar53 = uVar28 * 8; + puVar25 = (undefined8 *)(*pauVar32 + (ulong)uVar1 * 2); + puVar34 = (undefined8 *)(*pauVar24 + (ulong)uVar1 * 2); + do { + uVar19 = *puVar34; + uVar29 = uVar29 + 1; + puVar25[1] = puVar34[1]; + *puVar25 = uVar19; + puVar25 = puVar25 + 2; + puVar34 = puVar34 + 2; + } while (uVar29 < uVar28); + uVar33 = uVar33 + iVar53; + if (uVar16 - uVar1 != iVar53) { + uVar23 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar33 << 1; + /* try { // try from 0030e468 to 0040e4bf has its CatchHandler @ 0030df30 */ + *(undefined2 *)(*pauVar32 + uVar23) = *(undefined2 *)(*pauVar24 + uVar23); + /* try { // try from 0030e4c4 to 0040e4c7 has its CatchHandler @ 0030e75c */ + if ((((int)(uVar33 + 1) < (int)uVar16) && + (*(undefined2 *)(*pauVar32 + uVar23 + 2) = *(undefined2 *)(*pauVar24 + uVar23 + 2), + (int)(uVar33 + 2) < (int)uVar16)) && + ((*(undefined2 *)(*pauVar32 + uVar23 + 4) = *(undefined2 *)(*pauVar24 + uVar23 + 4), + (int)(uVar33 + 3) < (int)uVar16 && + (((*(undefined2 *)(*pauVar32 + uVar23 + 6) = *(undefined2 *)(*pauVar24 + uVar23 + 6), + (int)(uVar33 + 4) < (int)uVar16 && + (*(undefined2 *)(*pauVar32 + uVar23 + 8) = *(undefined2 *)(*pauVar24 + uVar23 + 8), + (int)(uVar33 + 5) < (int)uVar16)) && + (*(undefined2 *)(*pauVar32 + uVar23 + 10) = *(undefined2 *)(*pauVar24 + uVar23 + 10), + (int)(uVar33 + 6) < (int)uVar16)))))) { + /* try { // try from 0030e4f8 to 0040e54f has its CatchHandler @ 0030df30 */ + *(undefined2 *)(*pauVar32 + uVar23 + 0xc) = *(undefined2 *)(*pauVar24 + uVar23 + 0xc); + } + } + } + } + uVar17 = uVar16 - 4; + uVar15 = uVar17 >> 2; + uVar33 = uVar15 + 1; + /* try { // try from 0030e554 to 0040e557 has its CatchHandler @ 0030e764 */ + uVar1 = (uVar15 - 1 >> 1) + 1; + uVar28 = uVar1 * 8; + uVar29 = uVar33 * 4; + /* try { // try from 0030e588 to 0040e5df has its CatchHandler @ 0030df30 */ + if (uVar17 < 4) { + uVar28 = 0; + } + uVar23 = -(ulong)(uVar28 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar28 << 1; + if ((int)(uVar16 - 3) < 1) { + uVar29 = 0; + } + uVar28 = uVar29 + 1; + lVar26 = (long)(int)uVar29; + uVar18 = uVar16 - uVar29; + lVar51 = NEON_shl(lVar26,1); + uVar2 = uVar29 + 2; + /* try { // try from 0030e5e4 to 0040e5e7 has its CatchHandler @ 0030e760 */ + uVar35 = -(ulong)(uVar28 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar28 << 1; + uVar3 = uVar29 + 3; + lVar49 = NEON_shl(lVar26 + uVar46,1); + puVar8 = (ushort *)(*pauVar32 + lVar51); + /* try { // try from 0030e618 to 0040e66f has its CatchHandler @ 0030df30 */ + uVar4 = uVar29 + 4; + uVar9 = -((uint)((ulong)puVar8 >> 1) & 7) & 7; + uVar11 = uVar18; + if (uVar9 < uVar18) { + uVar11 = uVar9; + } + uVar9 = uVar29 + 5; + uVar36 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar2 << 1; + uVar37 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar38 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar4 << 1; + /* try { // try from 0030e674 to 0040e677 has its CatchHandler @ 0030e7a8 */ + uVar39 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar9 << 1; + uVar5 = uVar29 + 6; + /* try { // try from 0030e6a8 to 0040e713 has its CatchHandler @ 0030df30 */ + uVar6 = ((uVar18 - uVar11) - 8 >> 3) + 1; + uVar40 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + lVar30 = (ulong)uVar11 * 2; + lVar52 = NEON_shl(uVar46 + 8 + lVar26,1); + /* try { // try from 0030e730 to 0040e733 has its CatchHandler @ 0030e768 */ + /* try { // try from 0030e738 to 0040e75b has its CatchHandler @ 0030df30 */ + iVar53 = uVar6 * 8; + /* catch() { ... } // from try @ 0030e434 with catch @ 0030e748 */ + pauVar20 = pauVar24; + /* catch() { ... } // from try @ 0030e4c4 with catch @ 0030e75c */ + /* catch() { ... } // from try @ 0030e5e4 with catch @ 0030e760 */ +joined_r0x0030e764: + do { + pauVar41 = pauVar20; + iVar12 = iVar12 + -1; + /* catch() { ... } // from try @ 0030e554 with catch @ 0030e764 */ + if (iVar12 == 0) break; + pauVar24 = (undefined1 (*) [16])(*pauVar24 + uVar46 * 2); + /* catch() { ... } // from try @ 0030e730 with catch @ 0030e768 */ + pauVar20 = (undefined1 (*) [16])(*pauVar41 + uVar46 * 2); + if (0 < (int)(uVar16 - 3)) { + /* try { // try from 0030e778 to 0040e77b has its CatchHandler @ 0030df30 */ + /* catch() { ... } // from try @ 0030e284 with catch @ 0030e77c */ + /* catch() { ... } // from try @ 0030dfdc with catch @ 0030e780 */ + /* try { // try from 0030e790 to 0040e793 has its CatchHandler @ 0030df30 */ + /* catch() { ... } // from try @ 0030e020 with catch @ 0030e794 */ + /* catch() { ... } // from try @ 0030e1d4 with catch @ 0030e798 */ + /* catch() { ... } // from try @ 0030e3a4 with catch @ 0030e79c */ + if ((pauVar32 < pauVar24 + 4 && pauVar24 < pauVar32 + 4) || (uVar33 < 3)) { + /* try { // try from 0030ed0c to 0040ed0f has its CatchHandler @ 0030ef7c */ + puVar45 = (ushort *)(*pauVar20 + 2); + pauVar27 = pauVar32; + do { + puVar7 = puVar45 + 4; + uVar14 = *(ushort *)*pauVar27; + uVar13 = puVar45[-1]; + uVar10 = *puVar45; + if (*(ushort *)(*pauVar27 + 2) < *puVar45) { + uVar10 = *(ushort *)(*pauVar27 + 2); + } + *(ushort *)(*pauVar27 + 2) = uVar10; + if (uVar14 < uVar13) { + uVar13 = uVar14; + } + *(ushort *)*pauVar27 = uVar13; + uVar13 = puVar45[1]; + uVar10 = puVar45[2]; + if (*(ushort *)(*pauVar27 + 6) < puVar45[2]) { + uVar10 = *(ushort *)(*pauVar27 + 6); + } + *(ushort *)(*pauVar27 + 6) = uVar10; + if (*(ushort *)(*pauVar27 + 4) < uVar13) { + uVar13 = *(ushort *)(*pauVar27 + 4); + } + *(ushort *)(*pauVar27 + 4) = uVar13; + puVar45 = puVar7; + pauVar27 = (undefined1 (*) [16])(*pauVar27 + 8); + } while (puVar7 != (ushort *)(*pauVar20 + (ulong)uVar15 * 8 + 10)); + } + else { + /* catch() { ... } // from try @ 0030e314 with catch @ 0030e7a0 */ + /* catch() { ... } // from try @ 0030e144 with catch @ 0030e7a4 */ + /* catch() { ... } // from try @ 0030e674 with catch @ 0030e7a8 */ + if (3 < uVar17) { + /* catch() { ... } // from try @ 0030e814 with catch @ 0030e7ac + catch() { ... } // from try @ 0030e968 with catch @ 0030e7ac + catch() { ... } // from try @ 0030eac8 with catch @ 0030e7ac */ + uVar22 = 0; + pauVar27 = pauVar32; + pauVar31 = pauVar24; + do { + uVar22 = uVar22 + 1; + auVar48 = NEON_umin(*pauVar31,*pauVar27,2); + *(long *)(*pauVar27 + 8) = auVar48._8_8_; + *(long *)*pauVar27 = auVar48._0_8_; + pauVar27 = pauVar27 + 1; + pauVar31 = pauVar31 + 1; + } while (uVar22 < uVar1); + if (uVar33 == uVar1 * 2) goto LAB_0030e844; + } + uVar13 = *(ushort *)(*pauVar32 + uVar23 + 2); + uVar14 = *(ushort *)(*pauVar32 + uVar23); + uVar10 = *(ushort *)(*pauVar20 + uVar23 + 2); + if (uVar13 < *(ushort *)(*pauVar20 + uVar23 + 2)) { + uVar10 = uVar13; + } + uVar13 = *(ushort *)(*pauVar20 + uVar23); + if (uVar14 < *(ushort *)(*pauVar20 + uVar23)) { + uVar13 = uVar14; + } + *(ushort *)(*pauVar32 + uVar23) = uVar13; + /* try { // try from 0030e814 to 0040e817 has its CatchHandler @ 0030e7ac */ + *(ushort *)(*pauVar32 + uVar23 + 2) = uVar10; + uVar13 = *(ushort *)(*pauVar32 + uVar23 + 6); + uVar14 = *(ushort *)(*pauVar32 + uVar23 + 4); + uVar10 = *(ushort *)(*pauVar20 + uVar23 + 6); + if (uVar13 < *(ushort *)(*pauVar20 + uVar23 + 6)) { + uVar10 = uVar13; + } + /* try { // try from 0030e834 to 0040e837 has its CatchHandler @ 0030eafc */ + uVar13 = *(ushort *)(*pauVar20 + uVar23 + 4); + if (uVar14 < *(ushort *)(*pauVar20 + uVar23 + 4)) { + uVar13 = uVar14; + } + *(ushort *)(*pauVar32 + uVar23 + 4) = uVar13; + *(ushort *)(*pauVar32 + uVar23 + 6) = uVar10; + } + } +LAB_0030e844: + if ((int)uVar29 < (int)uVar16) { + /* try { // try from 0030e85c to 0040e85f has its CatchHandler @ 0030eacc */ + if ((*pauVar41 + lVar49 < pauVar32[1] + lVar51 && puVar8 < *pauVar41 + lVar52) || + (uVar18 < 0xc)) { + lVar47 = 0; + do { + uVar10 = *(ushort *)(*pauVar20 + lVar47 + lVar51); + if (*(ushort *)((long)puVar8 + lVar47) < *(ushort *)(*pauVar20 + lVar47 + lVar51)) { + uVar10 = *(ushort *)((long)puVar8 + lVar47); + } + *(ushort *)((long)puVar8 + lVar47) = uVar10; + lVar47 = lVar47 + 2; + } while (lVar47 != ((ulong)((uVar16 - 1) - uVar29) + 1) * 2); + goto joined_r0x0030e764; + } + if (uVar11 == 0) { + uVar44 = (ulong)uVar29; + } + else { + /* try { // try from 0030e88c to 0040e88f has its CatchHandler @ 0030eb04 */ + /* try { // try from 0030e894 to 0040e897 has its CatchHandler @ 0030eacc */ + uVar10 = *(ushort *)(*pauVar20 + lVar51); + if (*puVar8 < *(ushort *)(*pauVar20 + lVar51)) { + uVar10 = *puVar8; + } + *puVar8 = uVar10; + if (uVar11 == 1) { + uVar44 = (ulong)uVar28; + /* try { // try from 0030ed80 to 0040edcb has its CatchHandler @ 0030eb14 */ + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar35); + uVar10 = *(ushort *)(*pauVar20 + uVar35); + if (uVar13 < *(ushort *)(*pauVar20 + uVar35)) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar35) = uVar10; + if (uVar11 == 2) { + uVar44 = (ulong)uVar2; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar36); + uVar10 = *(ushort *)(*pauVar20 + uVar36); + if (uVar13 < *(ushort *)(*pauVar20 + uVar36)) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar36) = uVar10; + if (uVar11 == 3) { + uVar44 = (ulong)uVar3; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar37); + uVar10 = *(ushort *)(*pauVar20 + uVar37); + if (uVar13 < *(ushort *)(*pauVar20 + uVar37)) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar37) = uVar10; + if (uVar11 == 4) { + uVar44 = (ulong)uVar4; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar38); + uVar10 = *(ushort *)(*pauVar20 + uVar38); + if (uVar13 < *(ushort *)(*pauVar20 + uVar38)) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar38) = uVar10; + if (uVar11 == 5) { + uVar44 = (ulong)uVar9; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar39); + uVar10 = *(ushort *)(*pauVar20 + uVar39); + if (uVar13 < *(ushort *)(*pauVar20 + uVar39)) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar39) = uVar10; + if (uVar11 == 7) { + uVar13 = *(ushort *)(*pauVar32 + uVar40); + uVar44 = (ulong)(uVar29 + 7); + uVar10 = *(ushort *)(*pauVar20 + uVar40); + if (uVar13 < *(ushort *)(*pauVar20 + uVar40)) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar40) = uVar10; + } + else { + uVar44 = (ulong)uVar5; + } + } + } + } + } + } + } + /* try { // try from 0030e968 to 0040ea4b has its CatchHandler @ 0030e7ac */ + if (6 < (uVar18 - 1) - uVar11) { + uVar22 = 0; + pauVar27 = (undefined1 (*) [16])(*pauVar32 + (lVar26 + (ulong)uVar11) * 2); + puVar25 = (undefined8 *)(*pauVar32 + lVar51 + lVar30); + pauVar41 = (undefined1 (*) [16])(*pauVar41 + lVar30 + lVar49); + do { + uVar22 = uVar22 + 1; + auVar48 = NEON_umin(*pauVar41,*pauVar27,2); + puVar25[1] = auVar48._8_8_; + *puVar25 = auVar48._0_8_; + pauVar27 = pauVar27 + 1; + puVar25 = puVar25 + 2; + pauVar41 = pauVar41 + 1; + } while (uVar22 < uVar6); + uVar44 = (ulong)(uint)((int)uVar44 + iVar53); + if (uVar18 - uVar11 == iVar53) goto joined_r0x0030e764; + } + uVar42 = -(uVar44 >> 0x1f) & 0xfffffffe00000000 | uVar44 << 1; + iVar43 = (int)uVar44; + uVar10 = *(ushort *)(*pauVar20 + uVar42); + if (*(ushort *)(*pauVar32 + uVar42) < *(ushort *)(*pauVar20 + uVar42)) { + uVar10 = *(ushort *)(*pauVar32 + uVar42); + } + *(ushort *)(*pauVar32 + uVar42) = uVar10; + if (iVar43 + 1 < (int)uVar16) { + lVar47 = uVar42 + 2; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar32 + lVar47) < *(ushort *)(*pauVar20 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 2 < (int)uVar16) { + lVar47 = uVar42 + 4; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar32 + lVar47) < *(ushort *)(*pauVar20 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 3 < (int)uVar16) { + lVar47 = uVar42 + 6; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar32 + lVar47) < *(ushort *)(*pauVar20 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 4 < (int)uVar16) { + lVar47 = uVar42 + 8; + /* try { // try from 0030ea58 to 0040ea5b has its CatchHandler @ 0030eafc */ + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar32 + lVar47) < *(ushort *)(*pauVar20 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + /* try { // try from 0030ea68 to 0040ea6b has its CatchHandler @ 0030ea70 */ + if (iVar43 + 5 < (int)uVar16) { + lVar47 = uVar42 + 10; + /* catch() { ... } // from try @ 0030ea68 with catch @ 0030ea70 */ + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar32 + lVar47) < *(ushort *)(*pauVar20 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 6 < (int)uVar16) { + lVar47 = uVar42 + 0xc; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar32 + lVar47) < *(ushort *)(*pauVar20 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + } + } + } + } + } + } + } + } while( true ); + if (0 < (int)uVar16) { + /* try { // try from 0030eac8 to 0040eacb has its CatchHandler @ 0030e7ac */ + /* catch() { ... } // from try @ 0030e85c with catch @ 0030eacc + catch() { ... } // from try @ 0030e894 with catch @ 0030eacc */ + if ((pauVar50 < pauVar32 + 1 && pauVar32 < pauVar50 + 1) || (uVar16 < 0xf)) { + lVar26 = 0; + do { + *(undefined2 *)(*pauVar50 + lVar26 * 2) = *(undefined2 *)(*pauVar32 + lVar26 * 2); + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar16); + } + else { + /* catch() { ... } // from try @ 0030e834 with catch @ 0030eafc + catch() { ... } // from try @ 0030ea58 with catch @ 0030eafc */ + uVar33 = -((uint)((ulong)pauVar32 >> 1) & 7) & 7; + /* catch() { ... } // from try @ 0030e88c with catch @ 0030eb04 */ + if (uVar16 < uVar33) { + uVar33 = uVar16; + } + uVar46 = 0; + if (uVar33 != 0) { + /* catch() { ... } // from try @ 0030eb48 with catch @ 0030eb14 + catch() { ... } // from try @ 0030ed80 with catch @ 0030eb14 + catch() { ... } // from try @ 0030ef4c with catch @ 0030eb14 + catch() { ... } // from try @ 0030efa0 with catch @ 0030eb14 */ + *(undefined2 *)*pauVar50 = *(undefined2 *)*pauVar32; + /* try { // try from 0030eb48 to 0040eb67 has its CatchHandler @ 0030eb14 */ + if (((uVar33 == 1) || + (*(undefined2 *)(*pauVar50 + 2) = *(undefined2 *)(*pauVar32 + 2), uVar33 == 2)) || + ((*(undefined2 *)(*pauVar50 + 4) = *(undefined2 *)(*pauVar32 + 4), uVar33 == 3 || + (*(undefined2 *)(*pauVar50 + 6) = *(undefined2 *)(*pauVar32 + 6), uVar33 == 4)))) { + uVar46 = (ulong)uVar33; + } + else { + *(undefined2 *)(*pauVar50 + 8) = *(undefined2 *)(*pauVar32 + 8); + if (uVar33 == 5) { + uVar46 = 5; + } + else { + *(undefined2 *)(*pauVar50 + 10) = *(undefined2 *)(*pauVar32 + 10); + if (uVar33 == 7) { + uVar46 = 7; + *(undefined2 *)(*pauVar50 + 0xc) = *(undefined2 *)(*pauVar32 + 0xc); + } + else { + uVar46 = 6; + } + } + } + } + uVar1 = ((uVar16 - uVar33) - 8 >> 3) + 1; + iVar53 = uVar1 * 8; + if (6 < (uVar16 - 1) - uVar33) { + uVar28 = 0; + /* try { // try from 0030ebb0 to 0040ebd3 has its CatchHandler @ 0030ef7c */ + puVar25 = (undefined8 *)(*pauVar32 + (ulong)uVar33 * 2); + puVar34 = (undefined8 *)(*pauVar50 + (ulong)uVar33 * 2); + do { + uVar19 = *puVar25; + uVar28 = uVar28 + 1; + puVar34[1] = puVar25[1]; + *puVar34 = uVar19; + puVar25 = puVar25 + 2; + puVar34 = puVar34 + 2; + } while (uVar28 < uVar1); + uVar46 = (ulong)(uint)((int)uVar46 + iVar53); + if (iVar53 == uVar16 - uVar33) goto LAB_0030ec7c; + } + uVar23 = -(uVar46 >> 0x1f) & 0xfffffffe00000000 | uVar46 << 1; + iVar53 = (int)uVar46; + *(undefined2 *)(*pauVar50 + uVar23) = *(undefined2 *)(*pauVar32 + uVar23); + /* try { // try from 0030ec30 to 0040ec33 has its CatchHandler @ 0030eff8 */ + if (((((iVar53 + 1 < (int)uVar16) && + (*(undefined2 *)(*pauVar50 + uVar23 + 2) = *(undefined2 *)(*pauVar32 + uVar23 + 2), + iVar53 + 2 < (int)uVar16)) && + (*(undefined2 *)(*pauVar50 + uVar23 + 4) = *(undefined2 *)(*pauVar32 + uVar23 + 4), + iVar53 + 3 < (int)uVar16)) && + ((*(undefined2 *)(*pauVar50 + uVar23 + 6) = *(undefined2 *)(*pauVar32 + uVar23 + 6), + iVar53 + 4 < (int)uVar16 && + (*(undefined2 *)(*pauVar50 + uVar23 + 8) = *(undefined2 *)(*pauVar32 + uVar23 + 8), + iVar53 + 5 < (int)uVar16)))) && + (*(undefined2 *)(*pauVar50 + uVar23 + 10) = *(undefined2 *)(*pauVar32 + uVar23 + 10), + iVar53 + 6 < (int)uVar16)) { + /* try { // try from 0030ec74 to 0040ec77 has its CatchHandler @ 0030efa4 */ + *(undefined2 *)(*pauVar50 + uVar23 + 0xc) = *(undefined2 *)(*pauVar32 + uVar23 + 0xc); + } + } + } +LAB_0030ec7c: + if (bVar21) { + operator_delete__(pauVar32); + } + return; +} + + +================================================================== + +### FUNC 0030ee10 (3000 bytes) name=FUN_0030ee10 + +void FUN_0030ee10(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + long lVar8; + short *psVar9; + short *psVar10; + uint uVar11; + short sVar12; + uint uVar13; + int iVar14; + short sVar15; + short sVar16; + short sVar17; + uint uVar18; + uint uVar19; + uint uVar20; + uint uVar21; + undefined8 uVar22; + undefined1 (*pauVar23) [16]; + bool bVar24; + ulong uVar25; + undefined1 (*pauVar26) [16]; + undefined8 *puVar27; + long lVar28; + uint uVar29; + long lVar30; + uint uVar31; + undefined1 (*pauVar32) [16]; + long lVar33; + undefined1 (*pauVar34) [16]; + long lVar35; + uint uVar36; + int iVar37; + ulong uVar38; + short *psVar39; + undefined1 (*pauVar40) [16]; + undefined1 (*pauVar41) [16]; + ulong uVar42; + undefined8 *puVar43; + uint uVar44; + ulong uVar45; + ulong uVar46; + ulong uVar47; + ulong uVar48; + ulong uVar49; + ulong uVar50; + ulong uVar51; + long lVar52; + undefined1 auVar53 [16]; + undefined1 (*pauVar54) [16]; + long lVar55; + long lVar56; + int iVar57; + undefined1 auStack_410 [1040]; + + pauVar40 = (undefined1 (*) [16])auStack_410; + iVar57 = (*(int **)(param_1 + 0x10))[1]; + iVar14 = **(int **)(param_1 + 0x10); + uVar19 = iVar57 + (*param_1 >> 3 & 0x1ff) * iVar57; + uVar51 = (ulong)(int)uVar19; + if (uVar51 < 0x209) { + bVar24 = false; + /* try { // try from 0030f968 to 0040f96b has its CatchHandler @ 0030f044 */ + } + else { + uVar25 = uVar51 << 1; + if (0x3f80000000000000 < uVar51) { + uVar25 = 0xffffffffffffffff; + } + pauVar26 = operator_new__(uVar25); + bVar24 = pauVar26 != pauVar40; + pauVar40 = pauVar26; + } + pauVar54 = *(undefined1 (**) [16])(param_2 + 0x10); + pauVar26 = *(undefined1 (**) [16])(param_1 + 4); + uVar51 = *(ulong *)(param_1 + 0x14) >> 1; + if (0 < (int)uVar19) { + if ((pauVar26 < pauVar40 + 1 && pauVar40 < pauVar26 + 1) || (uVar19 < 0xf)) { + lVar28 = 0; + do { + /* try { // try from 0030f978 to 0040f97b has its CatchHandler @ 0030fb88 */ + *(undefined2 *)(*pauVar40 + lVar28 * 2) = *(undefined2 *)(*pauVar26 + lVar28 * 2); + lVar28 = lVar28 + 1; + /* try { // try from 0030f988 to 0040f997 has its CatchHandler @ 0030faa8 */ + } while ((int)lVar28 < (int)uVar19); + } + else { + uVar44 = -((uint)((ulong)pauVar26 >> 1) & 7) & 7; + uVar1 = uVar19; + if (uVar44 < uVar19) { + uVar1 = uVar44; + } + uVar44 = uVar1; + /* try { // try from 0030ef4c to 0040ef4f has its CatchHandler @ 0030eb14 */ + if (((((uVar1 != 0) && (*(undefined2 *)*pauVar40 = *(undefined2 *)*pauVar26, uVar1 != 1)) && + (*(undefined2 *)(*pauVar40 + 2) = *(undefined2 *)(*pauVar26 + 2), uVar1 != 2)) && + ((*(undefined2 *)(*pauVar40 + 4) = *(undefined2 *)(*pauVar26 + 4), uVar1 != 3 && + (*(undefined2 *)(*pauVar40 + 6) = *(undefined2 *)(*pauVar26 + 6), uVar1 != 4)))) && + (*(undefined2 *)(*pauVar40 + 8) = *(undefined2 *)(*pauVar26 + 8), uVar1 != 5)) { + /* try { // try from 0030ef5c to 0040ef5f has its CatchHandler @ 0030ef7c */ + *(undefined2 *)(*pauVar40 + 10) = *(undefined2 *)(*pauVar26 + 10); + if (uVar1 == 7) { + /* try { // try from 0030ef6c to 0040ef6f has its CatchHandler @ 0030eff8 */ + *(undefined2 *)(*pauVar40 + 0xc) = *(undefined2 *)(*pauVar26 + 0xc); + uVar44 = 7; + } + else { + /* try { // try from 0030f9b8 to 0040f9bb has its CatchHandler @ 0030faa8 */ + uVar44 = 6; + } + } + /* catch() { ... } // from try @ 0030ebb0 with catch @ 0030ef7c + catch() { ... } // from try @ 0030ed0c with catch @ 0030ef7c + catch() { ... } // from try @ 0030edd4 with catch @ 0030ef7c + catch() { ... } // from try @ 0030ef5c with catch @ 0030ef7c */ + uVar31 = ((uVar19 - uVar1) - 8 >> 3) + 1; + uVar36 = 0; + iVar57 = uVar31 * 8; + puVar27 = (undefined8 *)(*pauVar40 + (ulong)uVar1 * 2); + puVar43 = (undefined8 *)(*pauVar26 + (ulong)uVar1 * 2); + do { + /* try { // try from 0030efa0 to 0040efa3 has its CatchHandler @ 0030eb14 */ + uVar22 = *puVar43; + /* catch() { ... } // from try @ 0030ec74 with catch @ 0030efa4 */ + uVar36 = uVar36 + 1; + puVar27[1] = puVar43[1]; + *puVar27 = uVar22; + puVar27 = puVar27 + 2; + puVar43 = puVar43 + 2; + } while (uVar36 < uVar31); + uVar44 = uVar44 + iVar57; + if (uVar19 - uVar1 != iVar57) { + uVar25 = -(ulong)(uVar44 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar44 << 1; + *(undefined2 *)(*pauVar40 + uVar25) = *(undefined2 *)(*pauVar26 + uVar25); + /* catch() { ... } // from try @ 0030ec30 with catch @ 0030eff8 + catch() { ... } // from try @ 0030ef6c with catch @ 0030eff8 */ + /* catch() { ... } // from try @ 0030f08c with catch @ 0030f044 + catch() { ... } // from try @ 0030f550 with catch @ 0030f044 + catch() { ... } // from try @ 0030f968 with catch @ 0030f044 + catch() { ... } // from try @ 0030fa78 with catch @ 0030f044 */ + if ((((int)(uVar44 + 1) < (int)uVar19) && + (*(undefined2 *)(*pauVar40 + uVar25 + 2) = *(undefined2 *)(*pauVar26 + uVar25 + 2), + (int)(uVar44 + 2) < (int)uVar19)) && + ((*(undefined2 *)(*pauVar40 + uVar25 + 4) = *(undefined2 *)(*pauVar26 + uVar25 + 4), + (int)(uVar44 + 3) < (int)uVar19 && + (((*(undefined2 *)(*pauVar40 + uVar25 + 6) = *(undefined2 *)(*pauVar26 + uVar25 + 6), + (int)(uVar44 + 4) < (int)uVar19 && + (*(undefined2 *)(*pauVar40 + uVar25 + 8) = *(undefined2 *)(*pauVar26 + uVar25 + 8), + (int)(uVar44 + 5) < (int)uVar19)) && + (*(undefined2 *)(*pauVar40 + uVar25 + 10) = *(undefined2 *)(*pauVar26 + uVar25 + 10), + (int)(uVar44 + 6) < (int)uVar19)))))) { + *(undefined2 *)(*pauVar40 + uVar25 + 0xc) = *(undefined2 *)(*pauVar26 + uVar25 + 0xc); + } + } + } + } + uVar20 = uVar19 - 4; + /* try { // try from 0030f08c to 0040f11f has its CatchHandler @ 0030f044 */ + uVar18 = uVar20 >> 2; + uVar44 = uVar18 + 1; + uVar1 = (uVar18 - 1 >> 1) + 1; + uVar31 = uVar1 * 8; + uVar36 = uVar44 * 4; + if (uVar20 < 4) { + uVar31 = 0; + } + uVar25 = -(ulong)(uVar31 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar31 << 1; + lVar28 = uVar25 + 2; + lVar7 = uVar25 + 4; + lVar8 = uVar25 + 6; + if ((int)(uVar19 - 3) < 1) { + uVar36 = 0; + } + uVar21 = uVar19 - uVar36; + uVar31 = uVar36 + 1; + lVar30 = (long)(int)uVar36; + uVar2 = uVar36 + 2; + uVar45 = -(ulong)(uVar31 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar31 << 1; + uVar3 = uVar36 + 3; + lVar52 = lVar30 * 2; + /* try { // try from 0030f144 to 0040f167 has its CatchHandler @ 0030fa90 */ + uVar4 = uVar36 + 4; + uVar5 = uVar36 + 5; + uVar46 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar2 << 1; + psVar10 = (short *)(*pauVar40 + lVar52); + uVar47 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar11 = -((uint)((ulong)psVar10 >> 1) & 7) & 7; + lVar55 = NEON_shl(lVar30 + uVar51,1); + uVar13 = uVar21; + if (uVar11 < uVar21) { + uVar13 = uVar11; + } + /* try { // try from 0030f1a8 to 0040f1ab has its CatchHandler @ 0030faa8 */ + uVar11 = uVar36 + 6; + uVar48 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar4 << 1; + uVar50 = -(ulong)(uVar11 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar11 << 1; + uVar49 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + /* try { // try from 0030f1ec to 0040f1ef has its CatchHandler @ 0030fa98 */ + /* try { // try from 0030f1f4 to 0040f243 has its CatchHandler @ 0030faa8 */ + lVar33 = (ulong)uVar13 * 2; + uVar6 = ((uVar21 - uVar13) - 8 >> 3) + 1; + /* try { // try from 0030f248 to 0040f24b has its CatchHandler @ 0030fa7c */ + /* try { // try from 0030f264 to 0040f2bf has its CatchHandler @ 0030faa8 */ + lVar56 = NEON_shl(uVar51 + 8 + lVar30,1); + iVar57 = uVar6 * 8; + pauVar23 = pauVar26; +joined_r0x0030f2a8: + do { + pauVar41 = pauVar23; + iVar14 = iVar14 + -1; + if (iVar14 == 0) break; + pauVar26 = (undefined1 (*) [16])(*pauVar26 + uVar51 * 2); + pauVar23 = (undefined1 (*) [16])(*pauVar41 + uVar51 * 2); + if (0 < (int)(uVar19 - 3)) { + /* try { // try from 0030f2c4 to 0040f2c7 has its CatchHandler @ 0030fb38 */ + /* try { // try from 0030f2e0 to 0040f2e3 has its CatchHandler @ 0030faa8 */ + if ((pauVar40 < pauVar26 + 4 && pauVar26 < pauVar40 + 4) || (uVar44 < 3)) { + psVar39 = (short *)(*pauVar23 + 2); + pauVar32 = pauVar40; + do { + psVar9 = psVar39 + 4; + sVar17 = *(short *)*pauVar32; + sVar15 = psVar39[-1]; + sVar16 = psVar39[-1]; + /* try { // try from 0030f8dc to 0040f8df has its CatchHandler @ 0030fbb4 */ + sVar12 = *psVar39; + if (*(short *)(*pauVar32 + 2) < *psVar39) { + sVar12 = *(short *)(*pauVar32 + 2); + } + *(short *)(*pauVar32 + 2) = sVar12; + if (sVar17 < sVar16) { + sVar15 = sVar17; + } + *(short *)*pauVar32 = sVar15; + /* try { // try from 0030f8f8 to 0040f8fb has its CatchHandler @ 0030faa8 */ + sVar15 = psVar39[1]; + sVar12 = psVar39[2]; + if (*(short *)(*pauVar32 + 6) < psVar39[2]) { + sVar12 = *(short *)(*pauVar32 + 6); + } + sVar16 = psVar39[1]; + *(short *)(*pauVar32 + 6) = sVar12; + if (*(short *)(*pauVar32 + 4) < sVar16) { + sVar15 = *(short *)(*pauVar32 + 4); + } + *(short *)(*pauVar32 + 4) = sVar15; + psVar39 = psVar9; + pauVar32 = (undefined1 (*) [16])(*pauVar32 + 8); + } while (psVar9 != (short *)(*pauVar23 + (ulong)uVar18 * 8 + 10)); + } + else { + if (3 < uVar20) { + uVar29 = 0; + pauVar32 = pauVar40; + pauVar34 = pauVar26; + do { + uVar29 = uVar29 + 1; + auVar53 = NEON_smin(*pauVar34,*pauVar32,2); + *(long *)(*pauVar32 + 8) = auVar53._8_8_; + *(long *)*pauVar32 = auVar53._0_8_; + pauVar32 = pauVar32 + 1; + pauVar34 = pauVar34 + 1; + } while (uVar29 < uVar1); + if (uVar44 == uVar1 * 2) goto LAB_0030f388; + } + sVar15 = *(short *)(*pauVar40 + lVar28); + sVar16 = *(short *)(*pauVar40 + uVar25); + sVar12 = *(short *)(*pauVar23 + lVar28); + if (sVar15 < *(short *)(*pauVar23 + lVar28)) { + sVar12 = sVar15; + } + sVar15 = *(short *)(*pauVar23 + uVar25); + if (sVar16 < *(short *)(*pauVar23 + uVar25)) { + sVar15 = sVar16; + } + *(short *)(*pauVar40 + uVar25) = sVar15; + *(short *)(*pauVar40 + lVar28) = sVar12; + sVar15 = *(short *)(*pauVar40 + lVar8); + sVar16 = *(short *)(*pauVar40 + lVar7); + /* try { // try from 0030f36c to 0040f36f has its CatchHandler @ 0030fb3c */ + sVar12 = *(short *)(*pauVar23 + lVar8); + if (sVar15 < *(short *)(*pauVar23 + lVar8)) { + sVar12 = sVar15; + } + sVar15 = *(short *)(*pauVar23 + lVar7); + if (sVar16 < *(short *)(*pauVar23 + lVar7)) { + sVar15 = sVar16; + } + *(short *)(*pauVar40 + lVar7) = sVar15; + *(short *)(*pauVar40 + lVar8) = sVar12; + } + } +LAB_0030f388: + if ((int)uVar36 < (int)uVar19) { + /* try { // try from 0030f394 to 0040f397 has its CatchHandler @ 0030fb44 */ + /* try { // try from 0030f3c4 to 0040f3c7 has its CatchHandler @ 0030fab0 */ + if ((*pauVar41 + lVar55 < pauVar40[1] + lVar52 && psVar10 < *pauVar41 + lVar56) || + (uVar21 < 0xc)) { + lVar35 = 0; + do { + /* try { // try from 0030f87c to 0040f8d7 has its CatchHandler @ 0030faa8 */ + sVar12 = *(short *)(*pauVar23 + lVar35 + lVar52); + if (*(short *)((long)psVar10 + lVar35) < *(short *)(*pauVar23 + lVar35 + lVar52)) { + sVar12 = *(short *)((long)psVar10 + lVar35); + } + *(short *)((long)psVar10 + lVar35) = sVar12; + lVar35 = lVar35 + 2; + } while (lVar35 != ((ulong)((uVar19 - 1) - uVar36) + 1) * 2); + goto joined_r0x0030f2a8; + } + if (uVar13 == 0) { + uVar38 = (ulong)uVar36; + } + else { + /* try { // try from 0030f3cc to 0040f3cf has its CatchHandler @ 0030fb44 */ + sVar12 = *(short *)(*pauVar23 + lVar52); + if (*psVar10 < *(short *)(*pauVar23 + lVar52)) { + sVar12 = *psVar10; + } + *psVar10 = sVar12; + if (uVar13 == 1) { + uVar38 = (ulong)uVar31; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar45); + sVar12 = *(short *)(*pauVar23 + uVar45); + if (sVar15 < *(short *)(*pauVar23 + uVar45)) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar45) = sVar12; + if (uVar13 == 2) { + uVar38 = (ulong)uVar2; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar46); + sVar12 = *(short *)(*pauVar23 + uVar46); + if (sVar15 < *(short *)(*pauVar23 + uVar46)) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar46) = sVar12; + if (uVar13 == 3) { + /* try { // try from 0030f954 to 0040f957 has its CatchHandler @ 0030fa90 */ + uVar38 = (ulong)uVar3; + } + else { + /* try { // try from 0030f44c to 0040f44f has its CatchHandler @ 0030fb4c */ + sVar15 = *(short *)(*pauVar40 + uVar47); + sVar12 = *(short *)(*pauVar23 + uVar47); + if (sVar15 < *(short *)(*pauVar23 + uVar47)) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar47) = sVar12; + if (uVar13 == 4) { + uVar38 = (ulong)uVar4; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar48); + sVar12 = *(short *)(*pauVar23 + uVar48); + if (sVar15 < *(short *)(*pauVar23 + uVar48)) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar48) = sVar12; + if (uVar13 == 5) { + uVar38 = (ulong)uVar5; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar49); + sVar12 = *(short *)(*pauVar23 + uVar49); + if (sVar15 < *(short *)(*pauVar23 + uVar49)) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar49) = sVar12; + if (uVar13 == 7) { + uVar38 = (ulong)(uVar36 + 7); + sVar15 = *(short *)(*pauVar40 + uVar50); + sVar12 = *(short *)(*pauVar23 + uVar50); + if (sVar15 < *(short *)(*pauVar23 + uVar50)) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar50) = sVar12; + } + else { + uVar38 = (ulong)uVar11; + } + } + } + } + } + } + } + if (6 < (uVar21 - 1) - uVar13) { + uVar29 = 0; + pauVar32 = (undefined1 (*) [16])(*pauVar40 + (lVar30 + (ulong)uVar13) * 2); + puVar27 = (undefined8 *)(*pauVar40 + lVar52 + lVar33); + pauVar41 = (undefined1 (*) [16])(*pauVar41 + lVar33 + lVar55); + do { + uVar29 = uVar29 + 1; + /* try { // try from 0030f524 to 0040f527 has its CatchHandler @ 0030fa90 */ + auVar53 = NEON_smin(*pauVar41,*pauVar32,2); + puVar27[1] = auVar53._8_8_; + *puVar27 = auVar53._0_8_; + pauVar32 = pauVar32 + 1; + puVar27 = puVar27 + 2; + pauVar41 = pauVar41 + 1; + } while (uVar29 < uVar6); + uVar38 = (ulong)(uint)((int)uVar38 + iVar57); + if (uVar21 - uVar13 == iVar57) goto joined_r0x0030f2a8; + } + uVar42 = -(uVar38 >> 0x1f) & 0xfffffffe00000000 | uVar38 << 1; + iVar37 = (int)uVar38; + /* try { // try from 0030f550 to 0040f5a3 has its CatchHandler @ 0030f044 */ + sVar12 = *(short *)(*pauVar23 + uVar42); + if (*(short *)(*pauVar40 + uVar42) < *(short *)(*pauVar23 + uVar42)) { + sVar12 = *(short *)(*pauVar40 + uVar42); + } + *(short *)(*pauVar40 + uVar42) = sVar12; + if (iVar37 + 1 < (int)uVar19) { + lVar35 = uVar42 + 2; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar40 + lVar35) < *(short *)(*pauVar23 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 2 < (int)uVar19) { + lVar35 = uVar42 + 4; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar40 + lVar35) < *(short *)(*pauVar23 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 3 < (int)uVar19) { + lVar35 = uVar42 + 6; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar40 + lVar35) < *(short *)(*pauVar23 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 4 < (int)uVar19) { + lVar35 = uVar42 + 8; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar40 + lVar35) < *(short *)(*pauVar23 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 5 < (int)uVar19) { + lVar35 = uVar42 + 10; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar40 + lVar35) < *(short *)(*pauVar23 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 6 < (int)uVar19) { + lVar35 = uVar42 + 0xc; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar40 + lVar35) < *(short *)(*pauVar23 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + } + } + } + } + } + } + } + } while( true ); + if (0 < (int)uVar19) { + if ((pauVar54 < pauVar40 + 1 && pauVar40 < pauVar54 + 1) || (uVar19 < 0xf)) { + lVar28 = 0; + do { + /* try { // try from 0030f99c to 0040f99f has its CatchHandler @ 0030fb84 */ + *(undefined2 *)(*pauVar54 + lVar28 * 2) = *(undefined2 *)(*pauVar40 + lVar28 * 2); + lVar28 = lVar28 + 1; + } while ((int)lVar28 < (int)uVar19); + } + else { + uVar44 = -((uint)((ulong)pauVar40 >> 1) & 7) & 7; + if (uVar19 < uVar44) { + uVar44 = uVar19; + } + uVar51 = 0; + if (uVar44 != 0) { + *(undefined2 *)*pauVar54 = *(undefined2 *)*pauVar40; + if (((uVar44 == 1) || + (*(undefined2 *)(*pauVar54 + 2) = *(undefined2 *)(*pauVar40 + 2), uVar44 == 2)) || + ((*(undefined2 *)(*pauVar54 + 4) = *(undefined2 *)(*pauVar40 + 4), uVar44 == 3 || + (*(undefined2 *)(*pauVar54 + 6) = *(undefined2 *)(*pauVar40 + 6), uVar44 == 4)))) { + uVar51 = (ulong)uVar44; + } + else { + *(undefined2 *)(*pauVar54 + 8) = *(undefined2 *)(*pauVar40 + 8); + if (uVar44 == 5) { + uVar51 = 5; + } + else { + *(undefined2 *)(*pauVar54 + 10) = *(undefined2 *)(*pauVar40 + 10); + if (uVar44 == 7) { + uVar51 = 7; + *(undefined2 *)(*pauVar54 + 0xc) = *(undefined2 *)(*pauVar40 + 0xc); + } + else { + uVar51 = 6; + } + } + } + } + /* try { // try from 0030f72c to 0040f72f has its CatchHandler @ 0030fa90 */ + uVar1 = ((uVar19 - uVar44) - 8 >> 3) + 1; + iVar57 = uVar1 * 8; + if (6 < (uVar19 - 1) - uVar44) { + uVar31 = 0; + puVar27 = (undefined8 *)(*pauVar40 + (ulong)uVar44 * 2); + puVar43 = (undefined8 *)(*pauVar54 + (ulong)uVar44 * 2); + do { + /* try { // try from 0030f75c to 0040f75f has its CatchHandler @ 0030faa8 */ + uVar22 = *puVar27; + uVar31 = uVar31 + 1; + /* try { // try from 0030f764 to 0040f767 has its CatchHandler @ 0030fa8c */ + puVar43[1] = puVar27[1]; + *puVar43 = uVar22; + puVar27 = puVar27 + 2; + puVar43 = puVar43 + 2; + } while (uVar31 < uVar1); + uVar51 = (ulong)(uint)((int)uVar51 + iVar57); + if (iVar57 == uVar19 - uVar44) goto LAB_0030f824; + } + uVar25 = -(uVar51 >> 0x1f) & 0xfffffffe00000000 | uVar51 << 1; + iVar57 = (int)uVar51; + /* try { // try from 0030f780 to 0040f803 has its CatchHandler @ 0030faa8 */ + *(undefined2 *)(*pauVar54 + uVar25) = *(undefined2 *)(*pauVar40 + uVar25); + if (((((iVar57 + 1 < (int)uVar19) && + (*(undefined2 *)(*pauVar54 + uVar25 + 2) = *(undefined2 *)(*pauVar40 + uVar25 + 2), + iVar57 + 2 < (int)uVar19)) && + (*(undefined2 *)(*pauVar54 + uVar25 + 4) = *(undefined2 *)(*pauVar40 + uVar25 + 4), + iVar57 + 3 < (int)uVar19)) && + ((*(undefined2 *)(*pauVar54 + uVar25 + 6) = *(undefined2 *)(*pauVar40 + uVar25 + 6), + iVar57 + 4 < (int)uVar19 && + (*(undefined2 *)(*pauVar54 + uVar25 + 8) = *(undefined2 *)(*pauVar40 + uVar25 + 8), + iVar57 + 5 < (int)uVar19)))) && + (*(undefined2 *)(*pauVar54 + uVar25 + 10) = *(undefined2 *)(*pauVar40 + uVar25 + 10), + iVar57 + 6 < (int)uVar19)) { + /* try { // try from 0030f820 to 0040f823 has its CatchHandler @ 0030fa30 */ + *(undefined2 *)(*pauVar54 + uVar25 + 0xc) = *(undefined2 *)(*pauVar40 + uVar25 + 0xc); + } + } + } +LAB_0030f824: + /* try { // try from 0030f828 to 0040f85b has its CatchHandler @ 0030faa8 */ + if (bVar24) { + operator_delete__(pauVar40); + } + /* try { // try from 0030f860 to 0040f863 has its CatchHandler @ 0030fbb8 */ + return; +} + + +================================================================== + +### FUNC 0030f9c8 (2908 bytes) name=FUN_0030f9c8 + +void FUN_0030f9c8(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + ushort *puVar7; + ushort *puVar8; + uint uVar9; + ushort uVar10; + uint uVar11; + int iVar12; + ushort uVar13; + ushort uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + undefined8 uVar19; + undefined1 (*pauVar20) [16]; + bool bVar21; + uint uVar22; + ulong uVar23; + undefined1 (*pauVar24) [16]; + undefined8 *puVar25; + long lVar26; + undefined1 (*pauVar27) [16]; + uint uVar28; + uint uVar29; + long lVar30; + undefined1 (*pauVar31) [16]; + undefined1 (*pauVar32) [16]; + uint uVar33; + undefined8 *puVar34; + ulong uVar35; + ulong uVar36; + ulong uVar37; + ulong uVar38; + ulong uVar39; + ulong uVar40; + undefined1 (*pauVar41) [16]; + ulong uVar42; + int iVar43; + ulong uVar44; + ushort *puVar45; + ulong uVar46; + long lVar47; + undefined1 auVar48 [16]; + long lVar49; + undefined1 (*pauVar50) [16]; + long lVar51; + long lVar52; + int iVar53; + undefined1 auStack_410 [1040]; + + pauVar32 = (undefined1 (*) [16])auStack_410; + iVar53 = (*(int **)(param_1 + 0x10))[1]; + /* try { // try from 0030fa14 to 0040fa17 has its CatchHandler @ 0030fb3c */ + iVar12 = **(int **)(param_1 + 0x10); + uVar16 = iVar53 + (*param_1 >> 3 & 0x1ff) * iVar53; + /* try { // try from 0030fa28 to 0040fa2b has its CatchHandler @ 0030fb7c */ + uVar46 = (ulong)(int)uVar16; + /* catch() { ... } // from try @ 0030f820 with catch @ 0030fa30 */ + if (uVar46 < 0x209) { + bVar21 = false; + } + else { + uVar23 = uVar46 << 1; + if (0x3f80000000000000 < uVar46) { + uVar23 = 0xffffffffffffffff; + } + pauVar24 = operator_new__(uVar23); + bVar21 = pauVar24 != pauVar32; + pauVar32 = pauVar24; + } + pauVar50 = *(undefined1 (**) [16])(param_2 + 0x10); + pauVar24 = *(undefined1 (**) [16])(param_1 + 4); + /* try { // try from 0030fa78 to 0040fa7b has its CatchHandler @ 0030f044 */ + uVar46 = *(ulong *)(param_1 + 0x14) >> 1; + /* catch() { ... } // from try @ 0030f248 with catch @ 0030fa7c */ + if (0 < (int)uVar16) { + /* catch() { ... } // from try @ 0030f764 with catch @ 0030fa8c */ + /* catch() { ... } // from try @ 0030f144 with catch @ 0030fa90 + catch() { ... } // from try @ 0030f524 with catch @ 0030fa90 + catch() { ... } // from try @ 0030f72c with catch @ 0030fa90 + catch() { ... } // from try @ 0030f954 with catch @ 0030fa90 */ + /* catch() { ... } // from try @ 0030f1ec with catch @ 0030fa98 */ + if ((pauVar24 < pauVar32 + 1 && pauVar32 < pauVar24 + 1) || (uVar16 < 0xf)) { + lVar26 = 0; + do { + *(undefined2 *)(*pauVar32 + lVar26 * 2) = *(undefined2 *)(*pauVar24 + lVar26 * 2); + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar16); + } + else { + /* catch() { ... } // from try @ 0030f1a8 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f1f4 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f264 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f2e0 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f75c with catch @ 0030faa8 + catch() { ... } // from try @ 0030f780 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f828 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f87c with catch @ 0030faa8 + catch() { ... } // from try @ 0030f8f8 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f988 with catch @ 0030faa8 + catch() { ... } // from try @ 0030f9b8 with catch @ 0030faa8 */ + /* catch() { ... } // from try @ 0030f3c4 with catch @ 0030fab0 */ + uVar33 = -((uint)((ulong)pauVar24 >> 1) & 7) & 7; + uVar1 = uVar16; + if (uVar33 < uVar16) { + uVar1 = uVar33; + } + uVar33 = uVar1; + if (((((uVar1 != 0) && (*(undefined2 *)*pauVar32 = *(undefined2 *)*pauVar24, uVar1 != 1)) && + (*(undefined2 *)(*pauVar32 + 2) = *(undefined2 *)(*pauVar24 + 2), uVar1 != 2)) && + ((*(undefined2 *)(*pauVar32 + 4) = *(undefined2 *)(*pauVar24 + 4), uVar1 != 3 && + (*(undefined2 *)(*pauVar32 + 6) = *(undefined2 *)(*pauVar24 + 6), uVar1 != 4)))) && + (*(undefined2 *)(*pauVar32 + 8) = *(undefined2 *)(*pauVar24 + 8), uVar1 != 5)) { + *(undefined2 *)(*pauVar32 + 10) = *(undefined2 *)(*pauVar24 + 10); + if (uVar1 == 7) { + *(undefined2 *)(*pauVar32 + 0xc) = *(undefined2 *)(*pauVar24 + 0xc); + uVar33 = 7; + } + else { + uVar33 = 6; + } + } + /* catch() { ... } // from try @ 0030f2c4 with catch @ 0030fb38 */ + /* catch() { ... } // from try @ 0030f36c with catch @ 0030fb3c + catch() { ... } // from try @ 0030fa14 with catch @ 0030fb3c */ + /* catch() { ... } // from try @ 0030f394 with catch @ 0030fb44 + catch() { ... } // from try @ 0030f3cc with catch @ 0030fb44 */ + /* catch() { ... } // from try @ 0030f44c with catch @ 0030fb4c */ + uVar28 = ((uVar16 - uVar1) - 8 >> 3) + 1; + uVar29 = 0; + iVar53 = uVar28 * 8; + puVar25 = (undefined8 *)(*pauVar32 + (ulong)uVar1 * 2); + puVar34 = (undefined8 *)(*pauVar24 + (ulong)uVar1 * 2); + do { + uVar19 = *puVar34; + uVar29 = uVar29 + 1; + puVar25[1] = puVar34[1]; + *puVar25 = uVar19; + puVar25 = puVar25 + 2; + puVar34 = puVar34 + 2; + } while (uVar29 < uVar28); + uVar33 = uVar33 + iVar53; + if (uVar16 - uVar1 != iVar53) { + uVar23 = -(ulong)(uVar33 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar33 << 1; + /* catch() { ... } // from try @ 0030fa28 with catch @ 0030fb7c */ + /* catch() { ... } // from try @ 0030f99c with catch @ 0030fb84 */ + /* catch() { ... } // from try @ 0030f978 with catch @ 0030fb88 */ + *(undefined2 *)(*pauVar32 + uVar23) = *(undefined2 *)(*pauVar24 + uVar23); + /* catch() { ... } // from try @ 0030f8dc with catch @ 0030fbb4 */ + /* catch() { ... } // from try @ 0030f860 with catch @ 0030fbb8 */ + /* catch() { ... } // from try @ 0030fc40 with catch @ 0030fbc0 + catch() { ... } // from try @ 0030fc8c with catch @ 0030fbc0 + catch() { ... } // from try @ 003100c0 with catch @ 0030fbc0 */ + if ((((int)(uVar33 + 1) < (int)uVar16) && + (*(undefined2 *)(*pauVar32 + uVar23 + 2) = *(undefined2 *)(*pauVar24 + uVar23 + 2), + (int)(uVar33 + 2) < (int)uVar16)) && + ((*(undefined2 *)(*pauVar32 + uVar23 + 4) = *(undefined2 *)(*pauVar24 + uVar23 + 4), + (int)(uVar33 + 3) < (int)uVar16 && + (((*(undefined2 *)(*pauVar32 + uVar23 + 6) = *(undefined2 *)(*pauVar24 + uVar23 + 6), + (int)(uVar33 + 4) < (int)uVar16 && + (*(undefined2 *)(*pauVar32 + uVar23 + 8) = *(undefined2 *)(*pauVar24 + uVar23 + 8), + (int)(uVar33 + 5) < (int)uVar16)) && + (*(undefined2 *)(*pauVar32 + uVar23 + 10) = *(undefined2 *)(*pauVar24 + uVar23 + 10), + (int)(uVar33 + 6) < (int)uVar16)))))) { + *(undefined2 *)(*pauVar32 + uVar23 + 0xc) = *(undefined2 *)(*pauVar24 + uVar23 + 0xc); + } + } + } + } + uVar17 = uVar16 - 4; + /* try { // try from 0030fc40 to 0040fc43 has its CatchHandler @ 0030fbc0 */ + uVar15 = uVar17 >> 2; + uVar33 = uVar15 + 1; + uVar1 = (uVar15 - 1 >> 1) + 1; + uVar28 = uVar1 * 8; + /* try { // try from 0030fc84 to 0040fc87 has its CatchHandler @ 003100b0 */ + uVar29 = uVar33 * 4; + /* try { // try from 0030fc8c to 0040fceb has its CatchHandler @ 0030fbc0 */ + if (uVar17 < 4) { + uVar28 = 0; + } + uVar23 = -(ulong)(uVar28 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar28 << 1; + if ((int)(uVar16 - 3) < 1) { + uVar29 = 0; + } + uVar28 = uVar29 + 1; + lVar26 = (long)(int)uVar29; + uVar18 = uVar16 - uVar29; + lVar51 = NEON_shl(lVar26,1); + uVar2 = uVar29 + 2; + uVar35 = -(ulong)(uVar28 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar28 << 1; + uVar3 = uVar29 + 3; + lVar49 = NEON_shl(lVar26 + uVar46,1); + puVar8 = (ushort *)(*pauVar32 + lVar51); + uVar4 = uVar29 + 4; + uVar9 = -((uint)((ulong)puVar8 >> 1) & 7) & 7; + uVar11 = uVar18; + if (uVar9 < uVar18) { + uVar11 = uVar9; + } + uVar9 = uVar29 + 5; + uVar36 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar2 << 1; + uVar37 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar38 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar4 << 1; + uVar39 = -(ulong)(uVar9 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar9 << 1; + uVar5 = uVar29 + 6; + uVar6 = ((uVar18 - uVar11) - 8 >> 3) + 1; + uVar40 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + lVar30 = (ulong)uVar11 * 2; + lVar52 = NEON_shl(uVar46 + 8 + lVar26,1); + iVar53 = uVar6 * 8; + pauVar20 = pauVar24; +joined_r0x0030fe78: + do { + pauVar41 = pauVar20; + iVar12 = iVar12 + -1; + if (iVar12 == 0) break; + pauVar24 = (undefined1 (*) [16])(*pauVar24 + uVar46 * 2); + pauVar20 = (undefined1 (*) [16])(*pauVar41 + uVar46 * 2); + if (0 < (int)(uVar16 - 3)) { + if ((pauVar32 < pauVar24 + 4 && pauVar24 < pauVar32 + 4) || (uVar33 < 3)) { + puVar45 = (ushort *)(*pauVar20 + 2); + pauVar27 = pauVar32; + do { + puVar7 = puVar45 + 4; + uVar14 = *(ushort *)*pauVar27; + uVar13 = puVar45[-1]; + uVar10 = *puVar45; + if (*puVar45 < *(ushort *)(*pauVar27 + 2)) { + uVar10 = *(ushort *)(*pauVar27 + 2); + } + *(ushort *)(*pauVar27 + 2) = uVar10; + if (uVar13 < uVar14) { + uVar13 = uVar14; + } + *(ushort *)*pauVar27 = uVar13; + uVar13 = puVar45[1]; + uVar10 = puVar45[2]; + if (puVar45[2] < *(ushort *)(*pauVar27 + 6)) { + uVar10 = *(ushort *)(*pauVar27 + 6); + } + *(ushort *)(*pauVar27 + 6) = uVar10; + if (uVar13 < *(ushort *)(*pauVar27 + 4)) { + uVar13 = *(ushort *)(*pauVar27 + 4); + } + *(ushort *)(*pauVar27 + 4) = uVar13; + puVar45 = puVar7; + pauVar27 = (undefined1 (*) [16])(*pauVar27 + 8); + } while (puVar7 != (ushort *)(*pauVar20 + (ulong)uVar15 * 8 + 10)); + } + else { + if (3 < uVar17) { + uVar22 = 0; + pauVar27 = pauVar32; + pauVar31 = pauVar24; + do { + uVar22 = uVar22 + 1; + auVar48 = NEON_umax(*pauVar31,*pauVar27,2); + *(long *)(*pauVar27 + 8) = auVar48._8_8_; + *(long *)*pauVar27 = auVar48._0_8_; + pauVar27 = pauVar27 + 1; + pauVar31 = pauVar31 + 1; + } while (uVar22 < uVar1); + if (uVar33 == uVar1 * 2) goto LAB_0030ff58; + } + uVar13 = *(ushort *)(*pauVar32 + uVar23 + 2); + uVar14 = *(ushort *)(*pauVar32 + uVar23); + uVar10 = *(ushort *)(*pauVar20 + uVar23 + 2); + if (*(ushort *)(*pauVar20 + uVar23 + 2) < uVar13) { + uVar10 = uVar13; + } + uVar13 = *(ushort *)(*pauVar20 + uVar23); + if (*(ushort *)(*pauVar20 + uVar23) < uVar14) { + uVar13 = uVar14; + } + *(ushort *)(*pauVar32 + uVar23) = uVar13; + *(ushort *)(*pauVar32 + uVar23 + 2) = uVar10; + uVar13 = *(ushort *)(*pauVar32 + uVar23 + 6); + uVar14 = *(ushort *)(*pauVar32 + uVar23 + 4); + uVar10 = *(ushort *)(*pauVar20 + uVar23 + 6); + if (*(ushort *)(*pauVar20 + uVar23 + 6) < uVar13) { + uVar10 = uVar13; + } + uVar13 = *(ushort *)(*pauVar20 + uVar23 + 4); + if (*(ushort *)(*pauVar20 + uVar23 + 4) < uVar14) { + uVar13 = uVar14; + } + *(ushort *)(*pauVar32 + uVar23 + 4) = uVar13; + *(ushort *)(*pauVar32 + uVar23 + 6) = uVar10; + } + } +LAB_0030ff58: + if ((int)uVar29 < (int)uVar16) { + if ((*pauVar41 + lVar49 < pauVar32[1] + lVar51 && puVar8 < *pauVar41 + lVar52) || + (uVar18 < 0xc)) { + lVar47 = 0; + do { + uVar10 = *(ushort *)(*pauVar20 + lVar47 + lVar51); + if (*(ushort *)(*pauVar20 + lVar47 + lVar51) < *(ushort *)((long)puVar8 + lVar47)) { + uVar10 = *(ushort *)((long)puVar8 + lVar47); + } + *(ushort *)((long)puVar8 + lVar47) = uVar10; + lVar47 = lVar47 + 2; + /* try { // try from 00310404 to 00410407 has its CatchHandler @ 0031078c */ + } while (lVar47 != ((ulong)((uVar16 - 1) - uVar29) + 1) * 2); + goto joined_r0x0030fe78; + } + if (uVar11 == 0) { + uVar44 = (ulong)uVar29; + } + else { + uVar10 = *(ushort *)(*pauVar20 + lVar51); + if (*(ushort *)(*pauVar20 + lVar51) < *puVar8) { + uVar10 = *puVar8; + } + *puVar8 = uVar10; + if (uVar11 == 1) { + uVar44 = (ulong)uVar28; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar35); + uVar10 = *(ushort *)(*pauVar20 + uVar35); + if (*(ushort *)(*pauVar20 + uVar35) < uVar13) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar35) = uVar10; + if (uVar11 == 2) { + uVar44 = (ulong)uVar2; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar36); + uVar10 = *(ushort *)(*pauVar20 + uVar36); + if (*(ushort *)(*pauVar20 + uVar36) < uVar13) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar36) = uVar10; + if (uVar11 == 3) { + uVar44 = (ulong)uVar3; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar37); + uVar10 = *(ushort *)(*pauVar20 + uVar37); + if (*(ushort *)(*pauVar20 + uVar37) < uVar13) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar37) = uVar10; + if (uVar11 == 4) { + /* try { // try from 003104a8 to 00410533 has its CatchHandler @ 003100f0 */ + uVar44 = (ulong)uVar4; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar38); + uVar10 = *(ushort *)(*pauVar20 + uVar38); + if (*(ushort *)(*pauVar20 + uVar38) < uVar13) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar38) = uVar10; + if (uVar11 == 5) { + uVar44 = (ulong)uVar9; + } + else { + uVar13 = *(ushort *)(*pauVar32 + uVar39); + uVar10 = *(ushort *)(*pauVar20 + uVar39); + if (*(ushort *)(*pauVar20 + uVar39) < uVar13) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar39) = uVar10; + if (uVar11 == 7) { + uVar13 = *(ushort *)(*pauVar32 + uVar40); + uVar44 = (ulong)(uVar29 + 7); + uVar10 = *(ushort *)(*pauVar20 + uVar40); + if (*(ushort *)(*pauVar20 + uVar40) < uVar13) { + uVar10 = uVar13; + } + *(ushort *)(*pauVar32 + uVar40) = uVar10; + } + else { + uVar44 = (ulong)uVar5; + } + } + } + } + } + } + } + if (6 < (uVar18 - 1) - uVar11) { + uVar22 = 0; + pauVar27 = (undefined1 (*) [16])(*pauVar32 + (lVar26 + (ulong)uVar11) * 2); + puVar25 = (undefined8 *)(*pauVar32 + lVar51 + lVar30); + pauVar41 = (undefined1 (*) [16])(*pauVar41 + lVar30 + lVar49); + do { + uVar22 = uVar22 + 1; + auVar48 = NEON_umax(*pauVar41,*pauVar27,2); + puVar25[1] = auVar48._8_8_; + *puVar25 = auVar48._0_8_; + pauVar27 = pauVar27 + 1; + puVar25 = puVar25 + 2; + pauVar41 = pauVar41 + 1; + /* catch() { ... } // from try @ 0030fc84 with catch @ 003100b0 */ + } while (uVar22 < uVar6); + /* try { // try from 003100c0 to 004100c3 has its CatchHandler @ 0030fbc0 */ + uVar44 = (ulong)(uint)((int)uVar44 + iVar53); + if (uVar18 - uVar11 == iVar53) goto joined_r0x0030fe78; + } + uVar42 = -(uVar44 >> 0x1f) & 0xfffffffe00000000 | uVar44 << 1; + iVar43 = (int)uVar44; + uVar10 = *(ushort *)(*pauVar20 + uVar42); + if (*(ushort *)(*pauVar20 + uVar42) < *(ushort *)(*pauVar32 + uVar42)) { + uVar10 = *(ushort *)(*pauVar32 + uVar42); + } + *(ushort *)(*pauVar32 + uVar42) = uVar10; + if (iVar43 + 1 < (int)uVar16) { + /* catch() { ... } // from try @ 0031015c with catch @ 003100f0 + catch() { ... } // from try @ 003101c0 with catch @ 003100f0 + catch() { ... } // from try @ 00310338 with catch @ 003100f0 + catch() { ... } // from try @ 003104a8 with catch @ 003100f0 + catch() { ... } // from try @ 00310554 with catch @ 003100f0 + catch() { ... } // from try @ 003107b0 with catch @ 003100f0 + catch() { ... } // from try @ 003107e8 with catch @ 003100f0 */ + lVar47 = uVar42 + 2; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar20 + lVar47) < *(ushort *)(*pauVar32 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 2 < (int)uVar16) { + lVar47 = uVar42 + 4; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar20 + lVar47) < *(ushort *)(*pauVar32 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 3 < (int)uVar16) { + lVar47 = uVar42 + 6; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar20 + lVar47) < *(ushort *)(*pauVar32 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 4 < (int)uVar16) { + /* try { // try from 0031015c to 0041015f has its CatchHandler @ 003100f0 */ + lVar47 = uVar42 + 8; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar20 + lVar47) < *(ushort *)(*pauVar32 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 5 < (int)uVar16) { + lVar47 = uVar42 + 10; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar20 + lVar47) < *(ushort *)(*pauVar32 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + *(ushort *)(*pauVar32 + lVar47) = uVar10; + if (iVar43 + 6 < (int)uVar16) { + lVar47 = uVar42 + 0xc; + uVar10 = *(ushort *)(*pauVar20 + lVar47); + if (*(ushort *)(*pauVar20 + lVar47) < *(ushort *)(*pauVar32 + lVar47)) { + uVar10 = *(ushort *)(*pauVar32 + lVar47); + } + /* try { // try from 003101b8 to 004101bb has its CatchHandler @ 003107d8 */ + *(ushort *)(*pauVar32 + lVar47) = uVar10; + } + } + } + } + } + } + } + } while( true ); + if (0 < (int)uVar16) { + if ((pauVar50 < pauVar32 + 1 && pauVar32 < pauVar50 + 1) || (uVar16 < 0xf)) { + lVar26 = 0; + do { + *(undefined2 *)(*pauVar50 + lVar26 * 2) = *(undefined2 *)(*pauVar32 + lVar26 * 2); + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar16); + } + else { + uVar33 = -((uint)((ulong)pauVar32 >> 1) & 7) & 7; + if (uVar16 < uVar33) { + uVar33 = uVar16; + } + uVar46 = 0; + if (uVar33 != 0) { + *(undefined2 *)*pauVar50 = *(undefined2 *)*pauVar32; + if (((uVar33 == 1) || + (*(undefined2 *)(*pauVar50 + 2) = *(undefined2 *)(*pauVar32 + 2), uVar33 == 2)) || + ((*(undefined2 *)(*pauVar50 + 4) = *(undefined2 *)(*pauVar32 + 4), uVar33 == 3 || + (*(undefined2 *)(*pauVar50 + 6) = *(undefined2 *)(*pauVar32 + 6), uVar33 == 4)))) { + uVar46 = (ulong)uVar33; + } + else { + *(undefined2 *)(*pauVar50 + 8) = *(undefined2 *)(*pauVar32 + 8); + if (uVar33 == 5) { + uVar46 = 5; + } + else { + *(undefined2 *)(*pauVar50 + 10) = *(undefined2 *)(*pauVar32 + 10); + if (uVar33 == 7) { + uVar46 = 7; + *(undefined2 *)(*pauVar50 + 0xc) = *(undefined2 *)(*pauVar32 + 0xc); + } + else { + uVar46 = 6; + } + } + } + } + /* try { // try from 00310294 to 00410297 has its CatchHandler @ 003107b4 */ + uVar1 = ((uVar16 - uVar33) - 8 >> 3) + 1; + iVar53 = uVar1 * 8; + if (6 < (uVar16 - 1) - uVar33) { + uVar28 = 0; + puVar25 = (undefined8 *)(*pauVar32 + (ulong)uVar33 * 2); + puVar34 = (undefined8 *)(*pauVar50 + (ulong)uVar33 * 2); + do { + uVar19 = *puVar25; + uVar28 = uVar28 + 1; + puVar34[1] = puVar25[1]; + *puVar34 = uVar19; + puVar25 = puVar25 + 2; + puVar34 = puVar34 + 2; + } while (uVar28 < uVar1); + uVar46 = (ulong)(uint)((int)uVar46 + iVar53); + if (iVar53 == uVar16 - uVar33) goto LAB_00310390; + } + uVar23 = -(uVar46 >> 0x1f) & 0xfffffffe00000000 | uVar46 << 1; + iVar53 = (int)uVar46; + *(undefined2 *)(*pauVar50 + uVar23) = *(undefined2 *)(*pauVar32 + uVar23); + /* try { // try from 00310338 to 00410363 has its CatchHandler @ 003100f0 */ + if (((((iVar53 + 1 < (int)uVar16) && + (*(undefined2 *)(*pauVar50 + uVar23 + 2) = *(undefined2 *)(*pauVar32 + uVar23 + 2), + iVar53 + 2 < (int)uVar16)) && + (*(undefined2 *)(*pauVar50 + uVar23 + 4) = *(undefined2 *)(*pauVar32 + uVar23 + 4), + iVar53 + 3 < (int)uVar16)) && + ((*(undefined2 *)(*pauVar50 + uVar23 + 6) = *(undefined2 *)(*pauVar32 + uVar23 + 6), + iVar53 + 4 < (int)uVar16 && + (*(undefined2 *)(*pauVar50 + uVar23 + 8) = *(undefined2 *)(*pauVar32 + uVar23 + 8), + iVar53 + 5 < (int)uVar16)))) && + (*(undefined2 *)(*pauVar50 + uVar23 + 10) = *(undefined2 *)(*pauVar32 + uVar23 + 10), + iVar53 + 6 < (int)uVar16)) { + *(undefined2 *)(*pauVar50 + uVar23 + 0xc) = *(undefined2 *)(*pauVar32 + uVar23 + 0xc); + } + } + } +LAB_00310390: + if (bVar21) { + operator_delete__(pauVar32); + } + return; +} + + +================================================================== + +### FUNC 00310524 (3000 bytes) name=FUN_00310524 + +void FUN_00310524(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + long lVar7; + long lVar8; + short *psVar9; + short *psVar10; + uint uVar11; + short sVar12; + uint uVar13; + int iVar14; + short sVar15; + short sVar16; + short sVar17; + uint uVar18; + uint uVar19; + uint uVar20; + uint uVar21; + undefined8 uVar22; + undefined1 (*pauVar23) [16]; + bool bVar24; + ulong uVar25; + undefined1 (*pauVar26) [16]; + undefined8 *puVar27; + long lVar28; + uint uVar29; + long lVar30; + uint uVar31; + undefined1 (*pauVar32) [16]; + long lVar33; + undefined1 (*pauVar34) [16]; + long lVar35; + uint uVar36; + int iVar37; + ulong uVar38; + short *psVar39; + undefined1 (*pauVar40) [16]; + undefined1 (*pauVar41) [16]; + ulong uVar42; + undefined8 *puVar43; + uint uVar44; + ulong uVar45; + ulong uVar46; + ulong uVar47; + ulong uVar48; + ulong uVar49; + ulong uVar50; + ulong uVar51; + long lVar52; + undefined1 auVar53 [16]; + undefined1 (*pauVar54) [16]; + long lVar55; + long lVar56; + int iVar57; + undefined1 auStack_410 [1040]; + + /* try { // try from 0031053c to 0041053f has its CatchHandler @ 003107b4 */ + /* try { // try from 00310548 to 0041054b has its CatchHandler @ 0031078c */ + /* try { // try from 00310554 to 00410763 has its CatchHandler @ 003100f0 */ + pauVar40 = (undefined1 (*) [16])auStack_410; + iVar57 = (*(int **)(param_1 + 0x10))[1]; + iVar14 = **(int **)(param_1 + 0x10); + uVar19 = iVar57 + (*param_1 >> 3 & 0x1ff) * iVar57; + uVar51 = (ulong)(int)uVar19; + if (uVar51 < 0x209) { + bVar24 = false; + } + else { + uVar25 = uVar51 << 1; + if (0x3f80000000000000 < uVar51) { + uVar25 = 0xffffffffffffffff; + } + pauVar26 = operator_new__(uVar25); + bVar24 = pauVar26 != pauVar40; + pauVar40 = pauVar26; + } + pauVar54 = *(undefined1 (**) [16])(param_2 + 0x10); + pauVar26 = *(undefined1 (**) [16])(param_1 + 4); + uVar51 = *(ulong *)(param_1 + 0x14) >> 1; + if (0 < (int)uVar19) { + if ((pauVar26 < pauVar40 + 1 && pauVar40 < pauVar26 + 1) || (uVar19 < 0xf)) { + lVar28 = 0; + do { + *(undefined2 *)(*pauVar40 + lVar28 * 2) = *(undefined2 *)(*pauVar26 + lVar28 * 2); + lVar28 = lVar28 + 1; + } while ((int)lVar28 < (int)uVar19); + } + else { + uVar44 = -((uint)((ulong)pauVar26 >> 1) & 7) & 7; + uVar1 = uVar19; + if (uVar44 < uVar19) { + uVar1 = uVar44; + } + uVar44 = uVar1; + if (((((uVar1 != 0) && (*(undefined2 *)*pauVar40 = *(undefined2 *)*pauVar26, uVar1 != 1)) && + (*(undefined2 *)(*pauVar40 + 2) = *(undefined2 *)(*pauVar26 + 2), uVar1 != 2)) && + ((*(undefined2 *)(*pauVar40 + 4) = *(undefined2 *)(*pauVar26 + 4), uVar1 != 3 && + (*(undefined2 *)(*pauVar40 + 6) = *(undefined2 *)(*pauVar26 + 6), uVar1 != 4)))) && + (*(undefined2 *)(*pauVar40 + 8) = *(undefined2 *)(*pauVar26 + 8), uVar1 != 5)) { + *(undefined2 *)(*pauVar40 + 10) = *(undefined2 *)(*pauVar26 + 10); + if (uVar1 == 7) { + *(undefined2 *)(*pauVar40 + 0xc) = *(undefined2 *)(*pauVar26 + 0xc); + uVar44 = 7; + } + else { + uVar44 = 6; + } + } + uVar31 = ((uVar19 - uVar1) - 8 >> 3) + 1; + uVar36 = 0; + iVar57 = uVar31 * 8; + puVar27 = (undefined8 *)(*pauVar40 + (ulong)uVar1 * 2); + puVar43 = (undefined8 *)(*pauVar26 + (ulong)uVar1 * 2); + do { + uVar22 = *puVar43; + uVar36 = uVar36 + 1; + puVar27[1] = puVar43[1]; + *puVar27 = uVar22; + puVar27 = puVar27 + 2; + puVar43 = puVar43 + 2; + } while (uVar36 < uVar31); + uVar44 = uVar44 + iVar57; + if (uVar19 - uVar1 != iVar57) { + uVar25 = -(ulong)(uVar44 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar44 << 1; + *(undefined2 *)(*pauVar40 + uVar25) = *(undefined2 *)(*pauVar26 + uVar25); + if ((((int)(uVar44 + 1) < (int)uVar19) && + (*(undefined2 *)(*pauVar40 + uVar25 + 2) = *(undefined2 *)(*pauVar26 + uVar25 + 2), + (int)(uVar44 + 2) < (int)uVar19)) && + ((*(undefined2 *)(*pauVar40 + uVar25 + 4) = *(undefined2 *)(*pauVar26 + uVar25 + 4), + (int)(uVar44 + 3) < (int)uVar19 && + (((*(undefined2 *)(*pauVar40 + uVar25 + 6) = *(undefined2 *)(*pauVar26 + uVar25 + 6), + (int)(uVar44 + 4) < (int)uVar19 && + (*(undefined2 *)(*pauVar40 + uVar25 + 8) = *(undefined2 *)(*pauVar26 + uVar25 + 8), + (int)(uVar44 + 5) < (int)uVar19)) && + (*(undefined2 *)(*pauVar40 + uVar25 + 10) = *(undefined2 *)(*pauVar26 + uVar25 + 10), + (int)(uVar44 + 6) < (int)uVar19)))))) { + *(undefined2 *)(*pauVar40 + uVar25 + 0xc) = *(undefined2 *)(*pauVar26 + uVar25 + 0xc); + } + } + } + } + uVar20 = uVar19 - 4; + uVar18 = uVar20 >> 2; + uVar44 = uVar18 + 1; + /* try { // try from 003107b0 to 004107b3 has its CatchHandler @ 003100f0 */ + /* catch() { ... } // from try @ 00310294 with catch @ 003107b4 + catch() { ... } // from try @ 0031053c with catch @ 003107b4 */ + uVar1 = (uVar18 - 1 >> 1) + 1; + uVar31 = uVar1 * 8; + /* catch() { ... } // from try @ 003101b8 with catch @ 003107d8 */ + uVar36 = uVar44 * 4; + /* try { // try from 003107e8 to 004107eb has its CatchHandler @ 003100f0 */ + /* catch() { ... } // from try @ 00310404 with catch @ 0031078c + catch() { ... } // from try @ 00310548 with catch @ 0031078c */ + if (uVar20 < 4) { + uVar31 = 0; + } + uVar25 = -(ulong)(uVar31 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar31 << 1; + /* catch() { ... } // from try @ 00310a18 with catch @ 00310800 + catch() { ... } // from try @ 00310a74 with catch @ 00310800 */ + lVar28 = uVar25 + 2; + lVar7 = uVar25 + 4; + lVar8 = uVar25 + 6; + if ((int)(uVar19 - 3) < 1) { + uVar36 = 0; + } + uVar21 = uVar19 - uVar36; + uVar31 = uVar36 + 1; + lVar30 = (long)(int)uVar36; + uVar2 = uVar36 + 2; + uVar45 = -(ulong)(uVar31 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar31 << 1; + uVar3 = uVar36 + 3; + lVar52 = lVar30 * 2; + uVar4 = uVar36 + 4; + uVar5 = uVar36 + 5; + uVar46 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar2 << 1; + psVar10 = (short *)(*pauVar40 + lVar52); + uVar47 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar11 = -((uint)((ulong)psVar10 >> 1) & 7) & 7; + lVar55 = NEON_shl(lVar30 + uVar51,1); + uVar13 = uVar21; + if (uVar11 < uVar21) { + uVar13 = uVar11; + } + /* try { // try from 003108bc to 00410933 has its CatchHandler @ 00310a78 */ + uVar11 = uVar36 + 6; + uVar48 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar4 << 1; + uVar50 = -(ulong)(uVar11 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar11 << 1; + uVar49 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar5 << 1; + lVar33 = (ulong)uVar13 * 2; + uVar6 = ((uVar21 - uVar13) - 8 >> 3) + 1; + lVar56 = NEON_shl(uVar51 + 8 + lVar30,1); + iVar57 = uVar6 * 8; + /* try { // try from 003109a4 to 004109a7 has its CatchHandler @ 00310a50 */ + pauVar23 = pauVar26; +joined_r0x003109bc: + do { + pauVar41 = pauVar23; + iVar14 = iVar14 + -1; + if (iVar14 == 0) break; + pauVar26 = (undefined1 (*) [16])(*pauVar26 + uVar51 * 2); + pauVar23 = (undefined1 (*) [16])(*pauVar41 + uVar51 * 2); + if (0 < (int)(uVar19 - 3)) { + if ((pauVar40 < pauVar26 + 4 && pauVar26 < pauVar40 + 4) || (uVar44 < 3)) { + psVar39 = (short *)(*pauVar23 + 2); + pauVar32 = pauVar40; + do { + psVar9 = psVar39 + 4; + sVar17 = *(short *)*pauVar32; + sVar15 = psVar39[-1]; + sVar16 = psVar39[-1]; + sVar12 = *psVar39; + if (*psVar39 < *(short *)(*pauVar32 + 2)) { + sVar12 = *(short *)(*pauVar32 + 2); + } + *(short *)(*pauVar32 + 2) = sVar12; + if (sVar16 < sVar17) { + sVar15 = sVar17; + } + *(short *)*pauVar32 = sVar15; + sVar15 = psVar39[1]; + sVar12 = psVar39[2]; + if (psVar39[2] < *(short *)(*pauVar32 + 6)) { + sVar12 = *(short *)(*pauVar32 + 6); + } + sVar16 = psVar39[1]; + *(short *)(*pauVar32 + 6) = sVar12; + /* try { // try from 0031102c to 0041109b has its CatchHandler @ 00312f40 */ + if (sVar16 < *(short *)(*pauVar32 + 4)) { + sVar15 = *(short *)(*pauVar32 + 4); + } + *(short *)(*pauVar32 + 4) = sVar15; + psVar39 = psVar9; + pauVar32 = (undefined1 (*) [16])(*pauVar32 + 8); + } while (psVar9 != (short *)(*pauVar23 + (ulong)uVar18 * 8 + 10)); + } + else { + if (3 < uVar20) { + uVar29 = 0; + pauVar32 = pauVar40; + pauVar34 = pauVar26; + do { + uVar29 = uVar29 + 1; + /* try { // try from 00310a18 to 00410a3f has its CatchHandler @ 00310800 */ + auVar53 = NEON_smax(*pauVar34,*pauVar32,2); + *(long *)(*pauVar32 + 8) = auVar53._8_8_; + *(long *)*pauVar32 = auVar53._0_8_; + pauVar32 = pauVar32 + 1; + pauVar34 = pauVar34 + 1; + } while (uVar29 < uVar1); + if (uVar44 == uVar1 * 2) goto LAB_00310a9c; + } + sVar15 = *(short *)(*pauVar40 + lVar28); + sVar16 = *(short *)(*pauVar40 + uVar25); + /* try { // try from 00310a48 to 00410a4b has its CatchHandler @ 00310a50 */ + /* catch() { ... } // from try @ 003109a4 with catch @ 00310a50 + catch() { ... } // from try @ 00310a48 with catch @ 00310a50 */ + sVar12 = *(short *)(*pauVar23 + lVar28); + if (*(short *)(*pauVar23 + lVar28) < sVar15) { + sVar12 = sVar15; + } + sVar15 = *(short *)(*pauVar23 + uVar25); + if (*(short *)(*pauVar23 + uVar25) < sVar16) { + sVar15 = sVar16; + } + *(short *)(*pauVar40 + uVar25) = sVar15; + *(short *)(*pauVar40 + lVar28) = sVar12; + sVar15 = *(short *)(*pauVar40 + lVar8); + sVar16 = *(short *)(*pauVar40 + lVar7); + /* try { // try from 00310a74 to 00410a77 has its CatchHandler @ 00310800 */ + /* catch() { ... } // from try @ 003108bc with catch @ 00310a78 */ + sVar12 = *(short *)(*pauVar23 + lVar8); + if (*(short *)(*pauVar23 + lVar8) < sVar15) { + sVar12 = sVar15; + } + sVar15 = *(short *)(*pauVar23 + lVar7); + if (*(short *)(*pauVar23 + lVar7) < sVar16) { + sVar15 = sVar16; + } + *(short *)(*pauVar40 + lVar7) = sVar15; + *(short *)(*pauVar40 + lVar8) = sVar12; + } + } +LAB_00310a9c: + if ((int)uVar36 < (int)uVar19) { + /* catch() { ... } // from try @ 00310ae4 with catch @ 00310ab0 + catch() { ... } // from try @ 00310d14 with catch @ 00310ab0 + catch() { ... } // from try @ 00310db0 with catch @ 00310ab0 */ + if ((*pauVar41 + lVar55 < pauVar40[1] + lVar52 && psVar10 < *pauVar41 + lVar56) || + (uVar21 < 0xc)) { + lVar35 = 0; + do { + sVar12 = *(short *)(*pauVar23 + lVar35 + lVar52); + if (*(short *)(*pauVar23 + lVar35 + lVar52) < *(short *)((long)psVar10 + lVar35)) { + sVar12 = *(short *)((long)psVar10 + lVar35); + } + *(short *)((long)psVar10 + lVar35) = sVar12; + lVar35 = lVar35 + 2; + } while (lVar35 != ((ulong)((uVar19 - 1) - uVar36) + 1) * 2); + goto joined_r0x003109bc; + } + if (uVar13 == 0) { + uVar38 = (ulong)uVar36; + } + else { + /* try { // try from 00310ae4 to 00410b2b has its CatchHandler @ 00310ab0 */ + sVar12 = *(short *)(*pauVar23 + lVar52); + if (*(short *)(*pauVar23 + lVar52) < *psVar10) { + sVar12 = *psVar10; + } + *psVar10 = sVar12; + if (uVar13 == 1) { + uVar38 = (ulong)uVar31; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar45); + sVar12 = *(short *)(*pauVar23 + uVar45); + if (*(short *)(*pauVar23 + uVar45) < sVar15) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar45) = sVar12; + if (uVar13 == 2) { + uVar38 = (ulong)uVar2; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar46); + sVar12 = *(short *)(*pauVar23 + uVar46); + if (*(short *)(*pauVar23 + uVar46) < sVar15) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar46) = sVar12; + if (uVar13 == 3) { + uVar38 = (ulong)uVar3; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar47); + sVar12 = *(short *)(*pauVar23 + uVar47); + if (*(short *)(*pauVar23 + uVar47) < sVar15) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar47) = sVar12; + if (uVar13 == 4) { + uVar38 = (ulong)uVar4; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar48); + sVar12 = *(short *)(*pauVar23 + uVar48); + if (*(short *)(*pauVar23 + uVar48) < sVar15) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar48) = sVar12; + if (uVar13 == 5) { + uVar38 = (ulong)uVar5; + } + else { + sVar15 = *(short *)(*pauVar40 + uVar49); + sVar12 = *(short *)(*pauVar23 + uVar49); + if (*(short *)(*pauVar23 + uVar49) < sVar15) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar49) = sVar12; + /* try { // try from 00310bd8 to 00410c2f has its CatchHandler @ 00310db4 */ + if (uVar13 == 7) { + uVar38 = (ulong)(uVar36 + 7); + sVar15 = *(short *)(*pauVar40 + uVar50); + sVar12 = *(short *)(*pauVar23 + uVar50); + if (*(short *)(*pauVar23 + uVar50) < sVar15) { + sVar12 = sVar15; + } + *(short *)(*pauVar40 + uVar50) = sVar12; + } + else { + uVar38 = (ulong)uVar11; + } + } + } + } + } + } + } + if (6 < (uVar21 - 1) - uVar13) { + uVar29 = 0; + pauVar32 = (undefined1 (*) [16])(*pauVar40 + (lVar30 + (ulong)uVar13) * 2); + puVar27 = (undefined8 *)(*pauVar40 + lVar52 + lVar33); + pauVar41 = (undefined1 (*) [16])(*pauVar41 + lVar33 + lVar55); + do { + uVar29 = uVar29 + 1; + auVar53 = NEON_smax(*pauVar41,*pauVar32,2); + puVar27[1] = auVar53._8_8_; + *puVar27 = auVar53._0_8_; + pauVar32 = pauVar32 + 1; + puVar27 = puVar27 + 2; + pauVar41 = pauVar41 + 1; + } while (uVar29 < uVar6); + uVar38 = (ulong)(uint)((int)uVar38 + iVar57); + if (uVar21 - uVar13 == iVar57) goto joined_r0x003109bc; + } + uVar42 = -(uVar38 >> 0x1f) & 0xfffffffe00000000 | uVar38 << 1; + iVar37 = (int)uVar38; + sVar12 = *(short *)(*pauVar23 + uVar42); + if (*(short *)(*pauVar23 + uVar42) < *(short *)(*pauVar40 + uVar42)) { + sVar12 = *(short *)(*pauVar40 + uVar42); + } + *(short *)(*pauVar40 + uVar42) = sVar12; + if (iVar37 + 1 < (int)uVar19) { + lVar35 = uVar42 + 2; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar23 + lVar35) < *(short *)(*pauVar40 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + /* try { // try from 00310ca0 to 00410ca3 has its CatchHandler @ 00310d8c */ + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 2 < (int)uVar19) { + lVar35 = uVar42 + 4; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar23 + lVar35) < *(short *)(*pauVar40 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 3 < (int)uVar19) { + lVar35 = uVar42 + 6; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar23 + lVar35) < *(short *)(*pauVar40 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 4 < (int)uVar19) { + lVar35 = uVar42 + 8; + /* try { // try from 00310d14 to 00410d73 has its CatchHandler @ 00310ab0 */ + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar23 + lVar35) < *(short *)(*pauVar40 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 5 < (int)uVar19) { + lVar35 = uVar42 + 10; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar23 + lVar35) < *(short *)(*pauVar40 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + if (iVar37 + 6 < (int)uVar19) { + lVar35 = uVar42 + 0xc; + sVar12 = *(short *)(*pauVar23 + lVar35); + if (*(short *)(*pauVar23 + lVar35) < *(short *)(*pauVar40 + lVar35)) { + sVar12 = *(short *)(*pauVar40 + lVar35); + } + *(short *)(*pauVar40 + lVar35) = sVar12; + } + } + } + } + } + } + } + } while( true ); + /* try { // try from 00310d7c to 00410d7f has its CatchHandler @ 00310d8c */ + if (0 < (int)uVar19) { + /* catch() { ... } // from try @ 00310ca0 with catch @ 00310d8c + catch() { ... } // from try @ 00310d7c with catch @ 00310d8c */ + if ((pauVar54 < pauVar40 + 1 && pauVar40 < pauVar54 + 1) || (uVar19 < 0xf)) { + lVar28 = 0; + do { + *(undefined2 *)(*pauVar54 + lVar28 * 2) = *(undefined2 *)(*pauVar40 + lVar28 * 2); + lVar28 = lVar28 + 1; + /* try { // try from 003110b8 to 004110bb has its CatchHandler @ 00312f00 */ + } while ((int)lVar28 < (int)uVar19); + } + else { + /* try { // try from 00310db0 to 00410db3 has its CatchHandler @ 00310ab0 */ + /* catch() { ... } // from try @ 00310bd8 with catch @ 00310db4 */ + uVar44 = -((uint)((ulong)pauVar40 >> 1) & 7) & 7; + if (uVar19 < uVar44) { + uVar44 = uVar19; + } + uVar51 = 0; + if (uVar44 != 0) { + *(undefined2 *)*pauVar54 = *(undefined2 *)*pauVar40; + /* catch() { ... } // from try @ 00310e58 with catch @ 00310df0 + catch() { ... } // from try @ 00310ea4 with catch @ 00310df0 + catch() { ... } // from try @ 003111d4 with catch @ 00310df0 + catch() { ... } // from try @ 003114b8 with catch @ 00310df0 + catch() { ... } // from try @ 00311748 with catch @ 00310df0 + catch() { ... } // from try @ 00312efc with catch @ 00310df0 + catch() { ... } // from try @ 00312f3c with catch @ 00310df0 */ + if (((uVar44 == 1) || + (*(undefined2 *)(*pauVar54 + 2) = *(undefined2 *)(*pauVar40 + 2), uVar44 == 2)) || + ((*(undefined2 *)(*pauVar54 + 4) = *(undefined2 *)(*pauVar40 + 4), uVar44 == 3 || + (*(undefined2 *)(*pauVar54 + 6) = *(undefined2 *)(*pauVar40 + 6), uVar44 == 4)))) { + uVar51 = (ulong)uVar44; + } + else { + *(undefined2 *)(*pauVar54 + 8) = *(undefined2 *)(*pauVar40 + 8); + if (uVar44 == 5) { + uVar51 = 5; + } + else { + *(undefined2 *)(*pauVar54 + 10) = *(undefined2 *)(*pauVar40 + 10); + if (uVar44 == 7) { + uVar51 = 7; + *(undefined2 *)(*pauVar54 + 0xc) = *(undefined2 *)(*pauVar40 + 0xc); + } + else { + uVar51 = 6; + } + } + } + } + uVar1 = ((uVar19 - uVar44) - 8 >> 3) + 1; + iVar57 = uVar1 * 8; + /* try { // try from 00310e58 to 00410e5b has its CatchHandler @ 00310df0 */ + if (6 < (uVar19 - 1) - uVar44) { + uVar31 = 0; + puVar27 = (undefined8 *)(*pauVar40 + (ulong)uVar44 * 2); + puVar43 = (undefined8 *)(*pauVar54 + (ulong)uVar44 * 2); + do { + uVar22 = *puVar27; + uVar31 = uVar31 + 1; + puVar43[1] = puVar27[1]; + *puVar43 = uVar22; + puVar27 = puVar27 + 2; + puVar43 = puVar43 + 2; + } while (uVar31 < uVar1); + uVar51 = (ulong)(uint)((int)uVar51 + iVar57); + if (iVar57 == uVar19 - uVar44) goto LAB_00310f38; + } + uVar25 = -(uVar51 >> 0x1f) & 0xfffffffe00000000 | uVar51 << 1; + iVar57 = (int)uVar51; + /* try { // try from 00310e9c to 00410e9f has its CatchHandler @ 00312f2c */ + /* try { // try from 00310ea4 to 00410ed3 has its CatchHandler @ 00310df0 */ + *(undefined2 *)(*pauVar54 + uVar25) = *(undefined2 *)(*pauVar40 + uVar25); + /* try { // try from 00310f08 to 00410f2b has its CatchHandler @ 00312f5c */ + if (((((iVar57 + 1 < (int)uVar19) && + (*(undefined2 *)(*pauVar54 + uVar25 + 2) = *(undefined2 *)(*pauVar40 + uVar25 + 2), + iVar57 + 2 < (int)uVar19)) && + (*(undefined2 *)(*pauVar54 + uVar25 + 4) = *(undefined2 *)(*pauVar40 + uVar25 + 4), + iVar57 + 3 < (int)uVar19)) && + ((*(undefined2 *)(*pauVar54 + uVar25 + 6) = *(undefined2 *)(*pauVar40 + uVar25 + 6), + iVar57 + 4 < (int)uVar19 && + (*(undefined2 *)(*pauVar54 + uVar25 + 8) = *(undefined2 *)(*pauVar40 + uVar25 + 8), + iVar57 + 5 < (int)uVar19)))) && + (*(undefined2 *)(*pauVar54 + uVar25 + 10) = *(undefined2 *)(*pauVar40 + uVar25 + 10), + iVar57 + 6 < (int)uVar19)) { + *(undefined2 *)(*pauVar54 + uVar25 + 0xc) = *(undefined2 *)(*pauVar40 + uVar25 + 0xc); + } + } + } +LAB_00310f38: + if (bVar24) { + operator_delete__(pauVar40); + } + return; +} + + +================================================================== + +### FUNC 003110dc (1696 bytes) name=FUN_003110dc + +void FUN_003110dc(uint *param_1,long param_2) + +{ + uint uVar1; + float *pfVar2; + float *pfVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + uint uVar9; + float *pfVar10; + bool bVar11; + ulong uVar12; + float *pfVar13; + float *pfVar14; + float *pfVar15; + uint uVar16; + uint uVar17; + uint uVar18; + float *pfVar19; + ulong uVar20; + long lVar21; + float *pfVar22; + ulong uVar23; + float *pfVar24; + uint uVar25; + long lVar26; + ulong uVar27; + float *pfVar28; + ulong uVar29; + undefined8 uVar30; + float fVar31; + undefined8 uVar32; + float *pfVar33; + int iVar34; + float afStack_420 [264]; + + pfVar15 = afStack_420; + iVar34 = (*(int **)(param_1 + 0x10))[1]; + iVar6 = **(int **)(param_1 + 0x10); + uVar8 = iVar34 + (*param_1 >> 3 & 0x1ff) * iVar34; + uVar27 = (ulong)(int)uVar8; + /* try { // try from 00311134 to 00411137 has its CatchHandler @ 00312ebc */ + if (uVar27 < 0x109) { + bVar11 = false; + } + else { + uVar12 = uVar27 << 2; + if (0x1fc0000000000000 < uVar27) { + uVar12 = 0xffffffffffffffff; + } + pfVar13 = operator_new__(uVar12); + bVar11 = pfVar13 != pfVar15; + pfVar15 = pfVar13; + } + pfVar33 = *(float **)(param_2 + 0x10); + pfVar13 = *(float **)(param_1 + 4); + uVar27 = *(ulong *)(param_1 + 0x14) >> 2; + if (0 < (int)uVar8) { + /* try { // try from 003111a8 to 004111ab has its CatchHandler @ 00312f5c */ + if ((pfVar13 < pfVar15 + 4 && pfVar15 < pfVar13 + 4) || (uVar8 < 0xc)) { + /* try { // try from 00311748 to 0041174b has its CatchHandler @ 00310df0 */ + lVar26 = 0; + do { + pfVar15[lVar26] = pfVar13[lVar26]; + lVar26 = lVar26 + 1; + /* try { // try from 0031175c to 0041176b has its CatchHandler @ 00312ebc */ + } while ((int)lVar26 < (int)uVar8); + } + else { + uVar25 = -((uint)((ulong)pfVar13 >> 2) & 3) & 3; + uVar7 = uVar8; + if (uVar25 < uVar8) { + uVar7 = uVar25; + } + uVar25 = uVar7; + if ((uVar7 != 0) && (*pfVar15 = *pfVar13, uVar7 != 1)) { + /* try { // try from 003111d4 to 00411227 has its CatchHandler @ 00310df0 */ + pfVar15[1] = pfVar13[1]; + if (uVar7 == 3) { + pfVar15[2] = pfVar13[2]; + } + else { + uVar25 = 2; + } + } + uVar16 = ((uVar8 - uVar7) - 4 >> 2) + 1; + uVar17 = 0; + iVar34 = uVar16 * 4; + pfVar14 = pfVar15 + uVar7; + pfVar19 = pfVar13 + uVar7; + do { + uVar30 = *(undefined8 *)pfVar19; + uVar17 = uVar17 + 1; + *(undefined8 *)(pfVar14 + 2) = *(undefined8 *)(pfVar19 + 2); + *(undefined8 *)pfVar14 = uVar30; + pfVar14 = pfVar14 + 4; + pfVar19 = pfVar19 + 4; + } while (uVar17 < uVar16); + uVar25 = uVar25 + iVar34; + if (uVar8 - uVar7 != iVar34) { + uVar12 = -(ulong)(uVar25 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar25 << 2; + *(undefined4 *)((long)pfVar15 + uVar12) = *(undefined4 *)((long)pfVar13 + uVar12); + if (((int)(uVar25 + 1) < (int)uVar8) && + (*(undefined4 *)((long)pfVar15 + uVar12 + 4) = + *(undefined4 *)((long)pfVar13 + uVar12 + 4), (int)(uVar25 + 2) < (int)uVar8)) { + *(undefined4 *)((long)pfVar15 + uVar12 + 8) = *(undefined4 *)((long)pfVar13 + uVar12 + 8); + } + } + } + } + uVar16 = uVar8 - 4 >> 2; + uVar25 = uVar16 + 1; + /* try { // try from 00311290 to 004112b7 has its CatchHandler @ 00312f40 */ + uVar7 = uVar25 * 4; + if ((int)(uVar8 - 3) < 1) { + uVar7 = 0; + } + uVar9 = uVar8 - uVar7; + lVar26 = (long)(int)uVar7; + uVar17 = uVar7 + 1; + uVar1 = uVar7 + 2; + pfVar14 = pfVar15 + lVar26; + /* try { // try from 00311310 to 00411313 has its CatchHandler @ 00312f48 */ + uVar4 = -((uint)((ulong)pfVar14 >> 2) & 3) & 3; + /* try { // try from 00311318 to 00411387 has its CatchHandler @ 00312f40 */ + uVar5 = uVar9; + if (uVar4 < uVar9) { + uVar5 = uVar4; + } + uVar29 = -(ulong)(uVar17 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar17 << 2; + uVar4 = ((uVar9 - uVar5) - 4 >> 2) + 1; + uVar12 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + pfVar19 = (float *)((long)pfVar15 + uVar29); + pfVar3 = (float *)((long)pfVar15 + uVar12); + iVar34 = uVar4 * 4; + pfVar10 = pfVar13; +joined_r0x00311394: + pfVar28 = pfVar10; + iVar6 = iVar6 + -1; + if (iVar6 != 0) { + pfVar13 = pfVar13 + uVar27; + pfVar10 = pfVar28 + uVar27; + if (0 < (int)(uVar8 - 3)) { + if ((pfVar15 < pfVar13 + 0x10 && pfVar13 < pfVar15 + 0x10) || (uVar25 < 3)) { + pfVar22 = pfVar15; + pfVar24 = pfVar10 + 1; + do { + pfVar2 = pfVar24 + 4; + fVar31 = pfVar24[-1]; + pfVar22[1] = pfVar22[1] + *pfVar24; + *pfVar22 = *pfVar22 + fVar31; + fVar31 = pfVar24[1]; + pfVar22[3] = pfVar22[3] + pfVar24[2]; + pfVar22[2] = pfVar22[2] + fVar31; + pfVar22 = pfVar22 + 4; + pfVar24 = pfVar2; + } while (pfVar2 != pfVar10 + (ulong)uVar16 * 4 + 5); + } + else { + uVar18 = 0; + pfVar22 = pfVar15; + pfVar24 = pfVar13; + do { + uVar18 = uVar18 + 1; + uVar30 = *(undefined8 *)pfVar24; + *(ulong *)(pfVar22 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar22 + 2) >> 0x20) + + (float)((ulong)*(undefined8 *)(pfVar24 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar22 + 2) + (float)*(undefined8 *)(pfVar24 + 2)); + *(ulong *)pfVar22 = + CONCAT44((float)((ulong)*(undefined8 *)pfVar22 >> 0x20) + + (float)((ulong)uVar30 >> 0x20),(float)*(undefined8 *)pfVar22 + (float)uVar30 + ); + pfVar22 = pfVar22 + 4; + pfVar24 = pfVar24 + 4; + } while (uVar18 < uVar25); + } + } + if ((int)uVar7 < (int)uVar8) { + /* try { // try from 00311418 to 0041141b has its CatchHandler @ 00312ebc */ + if ((pfVar15 + lVar26 + 4 <= pfVar28 + lVar26 + uVar27 || + pfVar28 + uVar27 + 4 + lVar26 <= pfVar14) && (7 < uVar9)) { + if (uVar5 == 0) { + uVar23 = (ulong)uVar7; + } + else { + *pfVar14 = *pfVar14 + pfVar10[lVar26]; + if (uVar5 == 1) { + uVar23 = (ulong)uVar17; + } + else { + *pfVar19 = *pfVar19 + *(float *)((long)pfVar10 + uVar29); + if (uVar5 == 3) { + uVar23 = (ulong)(uVar7 + 3); + *pfVar3 = *pfVar3 + *(float *)((long)pfVar10 + uVar12); + } + else { + uVar23 = (ulong)uVar1; + } + } + } + if (2 < (uVar9 - 1) - uVar5) { + uVar18 = 0; + pfVar22 = pfVar15 + (ulong)uVar5 + lVar26; + pfVar28 = pfVar28 + lVar26 + uVar27 + (ulong)uVar5; + pfVar24 = pfVar15 + lVar26 + (ulong)uVar5; + do { + uVar32 = *(undefined8 *)pfVar28; + uVar18 = uVar18 + 1; + /* try { // try from 0031148c to 0041148f has its CatchHandler @ 00312f5c */ + uVar30 = *(undefined8 *)pfVar24; + *(ulong *)(pfVar22 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar24 + 2) >> 0x20) + + (float)((ulong)*(undefined8 *)(pfVar28 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar24 + 2) + (float)*(undefined8 *)(pfVar28 + 2)) + ; + *(ulong *)pfVar22 = + CONCAT44((float)((ulong)uVar30 >> 0x20) + (float)((ulong)uVar32 >> 0x20), + (float)uVar30 + (float)uVar32); + pfVar22 = pfVar22 + 4; + pfVar28 = pfVar28 + 4; + pfVar24 = pfVar24 + 4; + } while (uVar18 < uVar4); + uVar23 = (ulong)(uint)((int)uVar23 + iVar34); + if (uVar9 - uVar5 == iVar34) goto joined_r0x00311394; + } + uVar20 = -(uVar23 >> 0x1f) & 0xfffffffc00000000 | uVar23 << 2; + /* try { // try from 003114b8 to 0041171b has its CatchHandler @ 00310df0 */ + *(float *)((long)pfVar15 + uVar20) = + *(float *)((long)pfVar15 + uVar20) + *(float *)((long)pfVar10 + uVar20); + if ((int)uVar23 + 1 < (int)uVar8) { + lVar21 = uVar20 + 4; + *(float *)((long)pfVar15 + lVar21) = + *(float *)((long)pfVar15 + lVar21) + *(float *)((long)pfVar10 + lVar21); + if ((int)uVar23 + 2 < (int)uVar8) { + lVar21 = uVar20 + 8; + *(float *)((long)pfVar15 + lVar21) = + *(float *)((long)pfVar15 + lVar21) + *(float *)((long)pfVar10 + lVar21); + } + } + goto joined_r0x00311394; + } + lVar21 = 0; + do { + *(float *)((long)pfVar14 + lVar21) = + *(float *)((long)pfVar14 + lVar21) + *(float *)((long)pfVar10 + lVar21 + lVar26 * 4); + lVar21 = lVar21 + 4; + } while (lVar21 != ((ulong)((uVar8 - 1) - uVar7) + 1) * 4); + } + goto joined_r0x00311394; + } + if (0 < (int)uVar8) { + if ((pfVar33 < pfVar15 + 4 && pfVar15 < pfVar33 + 4) || (uVar8 < 0xc)) { + /* try { // try from 00311728 to 0041172b has its CatchHandler @ 00312f5c */ + lVar26 = 0; + do { + /* try { // try from 00311734 to 0041173f has its CatchHandler @ 00312f40 */ + pfVar33[lVar26] = pfVar15[lVar26]; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar8); + } + else { + uVar25 = -((uint)((ulong)pfVar15 >> 2) & 3) & 3; + if (uVar8 < uVar25) { + uVar25 = uVar8; + } + uVar27 = 0; + if (uVar25 != 0) { + *pfVar33 = *pfVar15; + if (uVar25 == 1) { + uVar27 = 1; + } + else { + pfVar33[1] = pfVar15[1]; + if (uVar25 == 3) { + uVar27 = 3; + pfVar33[2] = pfVar15[2]; + } + else { + /* try { // try from 00311774 to 00411777 has its CatchHandler @ 00312f5c */ + uVar27 = 2; + } + } + } + uVar7 = ((uVar8 - uVar25) - 4 >> 2) + 1; + iVar34 = uVar7 * 4; + if (2 < (uVar8 - 1) - uVar25) { + uVar16 = 0; + pfVar13 = pfVar15 + uVar25; + pfVar14 = pfVar33 + uVar25; + do { + uVar30 = *(undefined8 *)pfVar13; + uVar16 = uVar16 + 1; + *(undefined8 *)(pfVar14 + 2) = *(undefined8 *)(pfVar13 + 2); + *(undefined8 *)pfVar14 = uVar30; + pfVar13 = pfVar13 + 4; + pfVar14 = pfVar14 + 4; + } while (uVar16 < uVar7); + uVar27 = (ulong)(uint)((int)uVar27 + iVar34); + if (iVar34 == uVar8 - uVar25) goto LAB_00311638; + } + uVar12 = -(uVar27 >> 0x1f) & 0xfffffffc00000000 | uVar27 << 2; + *(undefined4 *)((long)pfVar33 + uVar12) = *(undefined4 *)((long)pfVar15 + uVar12); + if (((int)uVar27 + 1 < (int)uVar8) && + (*(undefined4 *)((long)pfVar33 + uVar12 + 4) = *(undefined4 *)((long)pfVar15 + uVar12 + 4), + (int)uVar27 + 2 < (int)uVar8)) { + *(undefined4 *)((long)pfVar33 + uVar12 + 8) = *(undefined4 *)((long)pfVar15 + uVar12 + 8); + } + } + } +LAB_00311638: + if (bVar11) { + operator_delete__(pfVar15); + } + return; +} + + +================================================================== + +### FUNC 0031177c (2572 bytes) name=FUN_0031177c + +void FUN_0031177c(uint *param_1,long param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + int iVar10; + short sVar11; + short sVar12; + short sVar13; + int iVar14; + int iVar15; + uint uVar16; + int iVar17; + float *pfVar18; + bool bVar19; + uint uVar20; + ulong uVar21; + float *pfVar22; + long lVar23; + float *pfVar24; + int iVar25; + ulong uVar26; + float *pfVar27; + uint uVar28; + float *pfVar29; + uint uVar30; + short *psVar31; + short *psVar32; + long lVar33; + uint uVar34; + uint uVar35; + undefined1 (*pauVar36) [16]; + ulong uVar37; + short *psVar38; + float *pfVar39; + int iVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined8 uVar49; + undefined1 auVar50 [16]; + long lVar51; + long lVar52; + long lVar53; + long lVar54; + long lVar55; + long lVar56; + long lVar57; + long lVar58; + long lVar59; + float afStack_420 [264]; + + /* try { // try from 00311780 to 00411783 has its CatchHandler @ 00312f40 */ + /* try { // try from 00311798 to 0041179b has its CatchHandler @ 00312f5c */ + /* try { // try from 003117ac to 00412c3b has its CatchHandler @ 00312f40 */ + pfVar27 = afStack_420; + iVar25 = (*(int **)(param_1 + 0x10))[1]; + iVar10 = **(int **)(param_1 + 0x10); + uVar16 = iVar25 + (*param_1 >> 3 & 0x1ff) * iVar25; + uVar37 = (ulong)(int)uVar16; + if (uVar37 < 0x109) { + bVar19 = false; + } + else { + uVar21 = uVar37 << 2; + if (0x1fc0000000000000 < uVar37) { + uVar21 = 0xffffffffffffffff; + } + pfVar22 = operator_new__(uVar21); + bVar19 = pfVar22 != pfVar27; + pfVar27 = pfVar22; + } + uVar37 = *(ulong *)(param_1 + 0x14); + pfVar22 = *(float **)(param_2 + 0x10); + psVar31 = *(short **)(param_1 + 4); + if ((int)uVar16 < 1) goto LAB_00311a24; + uVar20 = -((uint)((ulong)pfVar27 >> 2) & 3) & 3; + if (uVar16 < uVar20) { + uVar20 = uVar16; + } + uVar21 = (ulong)uVar20; + if ((int)uVar16 < 9) { + uVar21 = (ulong)uVar16; +LAB_0031185c: + uVar20 = (uint)uVar21; + *pfVar27 = (float)(int)*psVar31; + uVar26 = uVar21; + if ((((uVar20 != 1) && (pfVar27[1] = (float)(int)psVar31[1], uVar20 != 2)) && + (pfVar27[2] = (float)(int)psVar31[2], uVar20 != 3)) && + (((pfVar27[3] = (float)(int)psVar31[3], uVar20 != 4 && + (pfVar27[4] = (float)(int)psVar31[4], uVar20 != 5)) && + (pfVar27[5] = (float)(int)psVar31[5], uVar20 != 6)))) { + pfVar27[6] = (float)(int)psVar31[6]; + if (uVar20 == 8) { + pfVar27[7] = (float)(int)psVar31[7]; + } + else { + uVar26 = 7; + } + } + iVar25 = (int)uVar26; + if (uVar16 == uVar20) goto LAB_00311a24; + } + else { + iVar25 = 0; + if (uVar20 != 0) goto LAB_0031185c; + } + iVar17 = uVar16 - (int)uVar21; + uVar20 = (iVar17 - 8U >> 3) + 1; + iVar14 = uVar20 * 8; + if (6 < (uVar16 - 1) - (int)uVar21) { + uVar30 = 0; + pfVar24 = pfVar27 + uVar21; + psVar32 = psVar31 + uVar21; + do { + uVar30 = uVar30 + 1; + auVar45._0_4_ = (int)*psVar32; + auVar45._4_4_ = (int)psVar32[1]; + auVar45._8_4_ = (int)psVar32[2]; + auVar45._12_4_ = (int)psVar32[3]; + auVar41._0_4_ = (int)psVar32[4]; + auVar41._4_4_ = (int)psVar32[5]; + auVar41._8_4_ = (int)psVar32[6]; + auVar41._12_4_ = (int)psVar32[7]; + auVar45 = NEON_scvtf(auVar45,4); + auVar41 = NEON_scvtf(auVar41,4); + *(long *)(pfVar24 + 2) = auVar45._8_8_; + *(long *)pfVar24 = auVar45._0_8_; + *(long *)(pfVar24 + 6) = auVar41._8_8_; + *(long *)(pfVar24 + 4) = auVar41._0_8_; + pfVar24 = pfVar24 + 8; + psVar32 = psVar32 + 8; + } while (uVar30 < uVar20); + iVar25 = iVar25 + iVar14; + if (iVar17 == iVar14) goto LAB_00311a24; + } + iVar14 = iVar25 + 1; + pfVar27[iVar25] = (float)(int)psVar31[iVar25]; + if (iVar14 < (int)uVar16) { + iVar17 = iVar25 + 2; + pfVar27[iVar14] = (float)(int)psVar31[iVar14]; + if (iVar17 < (int)uVar16) { + iVar14 = iVar25 + 3; + pfVar27[iVar17] = (float)(int)psVar31[iVar17]; + if (iVar14 < (int)uVar16) { + iVar17 = iVar25 + 4; + pfVar27[iVar14] = (float)(int)psVar31[iVar14]; + if (iVar17 < (int)uVar16) { + iVar14 = iVar25 + 5; + pfVar27[iVar17] = (float)(int)psVar31[iVar17]; + if (iVar14 < (int)uVar16) { + iVar25 = iVar25 + 6; + pfVar27[iVar14] = (float)(int)psVar31[iVar14]; + if (iVar25 < (int)uVar16) { + pfVar27[iVar25] = (float)(int)psVar31[iVar25]; + } + } + } + } + } + } +LAB_00311a24: + uVar30 = uVar16 - 4; + iVar25 = (uVar30 >> 2) + 1; + uVar20 = ((uVar30 >> 2) - 1 >> 1) + 1; + iVar17 = iVar25 * 4; + iVar14 = uVar20 * 8; + lVar53 = NEON_shl(uVar37 >> 1,1); + if (uVar30 < 4) { + iVar14 = 0; + } + if ((int)(uVar16 - 3) < 1) { + iVar17 = 0; + } + iVar1 = iVar17 + 1; + lVar33 = (long)iVar14; + iVar14 = iVar17 + 2; + lVar23 = (long)iVar17; + pfVar24 = pfVar27 + lVar23; + uVar9 = -((uint)((ulong)pfVar24 >> 2) & 3) & 3; + iVar2 = iVar17 + 3; + iVar3 = iVar17 + 4; + lVar59 = NEON_shl(lVar23,1); + iVar4 = iVar17 + 5; + iVar5 = iVar17 + 6; + iVar6 = iVar17 + 7; + lVar58 = NEON_shl((long)iVar1,1); + uVar28 = uVar16 - iVar17; + if (uVar28 < uVar9) { + uVar9 = uVar28; + } + lVar57 = NEON_shl((long)iVar14,1); + lVar56 = NEON_shl((long)iVar2,1); + lVar55 = NEON_shl((long)iVar3,1); + lVar54 = NEON_shl((long)iVar4,1); + lVar52 = NEON_shl((long)iVar5,1); + lVar51 = NEON_shl((long)iVar6,1); +joined_r0x00311bd8: + do { + psVar32 = psVar31; + iVar10 = iVar10 + -1; + if (iVar10 == 0) { + if (0 < (int)uVar16) { + if ((pfVar22 < pfVar27 + 4 && pfVar27 < pfVar22 + 4) || (uVar16 < 0xc)) { + lVar53 = 0; + do { + pfVar22[lVar53] = pfVar27[lVar53]; + lVar53 = lVar53 + 1; + } while ((int)lVar53 < (int)uVar16); + } + else { + uVar20 = -((uint)((ulong)pfVar27 >> 2) & 3) & 3; + if (uVar16 < uVar20) { + uVar20 = uVar16; + } + uVar30 = 0; + if ((uVar20 != 0) && (*pfVar22 = *pfVar27, uVar30 = uVar20, uVar20 != 1)) { + pfVar22[1] = pfVar27[1]; + if (uVar20 == 3) { + pfVar22[2] = pfVar27[2]; + } + else { + uVar30 = 2; + } + } + uVar9 = ((uVar16 - uVar20) - 4 >> 2) + 1; + iVar25 = uVar9 * 4; + uVar28 = 0; + pfVar24 = pfVar27 + uVar20; + pfVar29 = pfVar22 + uVar20; + do { + uVar49 = *(undefined8 *)pfVar24; + uVar28 = uVar28 + 1; + *(undefined8 *)(pfVar29 + 2) = *(undefined8 *)(pfVar24 + 2); + *(undefined8 *)pfVar29 = uVar49; + pfVar24 = pfVar24 + 4; + pfVar29 = pfVar29 + 4; + } while (uVar28 < uVar9); + uVar30 = iVar25 + uVar30; + if (iVar25 != uVar16 - uVar20) { + uVar37 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar30 << 2; + *(undefined4 *)((long)pfVar22 + uVar37) = *(undefined4 *)((long)pfVar27 + uVar37); + if (((int)(uVar30 + 1) < (int)uVar16) && + (*(undefined4 *)((long)pfVar22 + uVar37 + 4) = + *(undefined4 *)((long)pfVar27 + uVar37 + 4), (int)(uVar30 + 2) < (int)uVar16)) + { + *(undefined4 *)((long)pfVar22 + uVar37 + 8) = + *(undefined4 *)((long)pfVar27 + uVar37 + 8); + } + } + } + } + if (bVar19) { + operator_delete__(pfVar27); + } + return; + } + psVar31 = (short *)((long)psVar32 + lVar53); + if (0 < (int)(uVar16 - 3)) { + if (3 < uVar30) { + pauVar36 = (undefined1 (*) [16])(pfVar27 + 4); + uVar34 = 0; + psVar38 = psVar31; + pfVar29 = pfVar27; + do { + uVar34 = uVar34 + 1; + auVar41 = *pauVar36; + auVar50._0_4_ = (int)*psVar38; + auVar50._4_4_ = (int)psVar38[1]; + auVar50._8_4_ = (int)psVar38[2]; + auVar50._12_4_ = (int)psVar38[3]; + auVar47._0_4_ = (int)psVar38[4]; + auVar47._4_4_ = (int)psVar38[5]; + auVar47._8_4_ = (int)psVar38[6]; + auVar47._12_4_ = (int)psVar38[7]; + auVar50 = NEON_scvtf(auVar50,4); + auVar45 = NEON_scvtf(auVar47,4); + auVar42._0_8_ = CONCAT44(auVar41._4_4_ + auVar45._4_4_,auVar41._0_4_ + auVar45._0_4_); + auVar42._8_4_ = auVar41._8_4_ + auVar45._8_4_; + auVar42._12_4_ = auVar41._12_4_ + auVar45._12_4_; + *(ulong *)(pfVar29 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar29 + 2) >> 0x20) + auVar50._12_4_, + (float)*(undefined8 *)(pfVar29 + 2) + auVar50._8_4_); + *(ulong *)pfVar29 = + CONCAT44((float)((ulong)*(undefined8 *)pfVar29 >> 0x20) + auVar50._4_4_, + (float)*(undefined8 *)pfVar29 + auVar50._0_4_); + pfVar29 = pfVar29 + 8; + *(long *)((long)*pauVar36 + 8) = auVar42._8_8_; + *(undefined8 *)*pauVar36 = auVar42._0_8_; + pauVar36 = pauVar36 + 2; + psVar38 = psVar38 + 8; + } while (uVar34 < uVar20); + if (iVar25 == uVar20 * 2) goto LAB_00311cbc; + } + sVar11 = psVar31[lVar33 + 1]; + sVar12 = psVar31[lVar33 + 2]; + sVar13 = psVar31[lVar33 + 3]; + pfVar27[lVar33] = pfVar27[lVar33] + (float)(int)psVar31[lVar33]; + pfVar27[lVar33 + 1] = (float)(int)sVar11 + pfVar27[lVar33 + 1]; + pfVar27[lVar33 + 2] = pfVar27[lVar33 + 2] + (float)(int)sVar12; + pfVar27[lVar33 + 3] = (float)(int)sVar13 + pfVar27[lVar33 + 3]; + } +LAB_00311cbc: + } while ((int)uVar16 <= iVar17); + uVar34 = uVar9; + if (uVar28 < 9) { + uVar34 = uVar28; + } + iVar40 = iVar17; + if (uVar34 != 0) { + *pfVar24 = *pfVar24 + (float)(int)*(short *)((long)psVar31 + lVar59); + iVar40 = iVar1; + if (((((uVar34 != 1) && + (pfVar27[iVar1] = pfVar27[iVar1] + (float)(int)*(short *)((long)psVar31 + lVar58), + iVar40 = iVar14, uVar34 != 2)) && + (pfVar27[iVar14] = pfVar27[iVar14] + (float)(int)*(short *)((long)psVar31 + lVar57), + iVar40 = iVar2, uVar34 != 3)) && + ((pfVar27[iVar2] = pfVar27[iVar2] + (float)(int)*(short *)((long)psVar31 + lVar56), + iVar40 = iVar3, uVar34 != 4 && + (pfVar27[iVar3] = pfVar27[iVar3] + (float)(int)*(short *)((long)psVar31 + lVar55), + iVar40 = iVar4, uVar34 != 5)))) && + ((pfVar27[iVar4] = pfVar27[iVar4] + (float)(int)*(short *)((long)psVar31 + lVar54), + iVar40 = iVar5, uVar34 != 6 && + (pfVar27[iVar5] = pfVar27[iVar5] + (float)(int)*(short *)((long)psVar31 + lVar52), + iVar40 = iVar6, uVar34 == 8)))) { + pfVar27[iVar6] = pfVar27[iVar6] + (float)(int)*(short *)((long)psVar31 + lVar51); + iVar40 = iVar17 + 8; + } + if (uVar34 == uVar28) goto joined_r0x00311bd8; + } + uVar7 = ((uVar28 - uVar34) - 8 >> 3) + 1; + iVar15 = uVar7 * 8; + if (6 < (uVar28 - 1) - uVar34) { + pfVar29 = pfVar27 + lVar23 + (ulong)uVar34; + uVar35 = 0; + psVar32 = psVar32 + (ulong)uVar34 + (uVar37 >> 1) + lVar23; + pfVar39 = pfVar29; + do { + pfVar18 = pfVar29 + 2; + uVar49 = *(undefined8 *)pfVar29; + auVar41 = *(undefined1 (*) [16])(pfVar29 + 4); + uVar35 = uVar35 + 1; + pfVar29 = pfVar29 + 8; + auVar46._0_4_ = (int)*psVar32; + auVar46._4_4_ = (int)psVar32[1]; + auVar46._8_4_ = (int)psVar32[2]; + auVar46._12_4_ = (int)psVar32[3]; + auVar43._0_4_ = (int)psVar32[4]; + auVar43._4_4_ = (int)psVar32[5]; + auVar43._8_4_ = (int)psVar32[6]; + auVar43._12_4_ = (int)psVar32[7]; + auVar47 = NEON_scvtf(auVar46,4); + auVar45 = NEON_scvtf(auVar43,4); + auVar48._0_8_ = + CONCAT44((float)((ulong)uVar49 >> 0x20) + auVar47._4_4_,(float)uVar49 + auVar47._0_4_); + auVar48._8_4_ = (float)*(undefined8 *)pfVar18 + auVar47._8_4_; + auVar48._12_4_ = (float)((ulong)*(undefined8 *)pfVar18 >> 0x20) + auVar47._12_4_; + auVar44._0_8_ = CONCAT44(auVar45._4_4_ + auVar41._4_4_,auVar45._0_4_ + auVar41._0_4_); + auVar44._8_4_ = auVar45._8_4_ + auVar41._8_4_; + auVar44._12_4_ = auVar45._12_4_ + auVar41._12_4_; + *(long *)(pfVar39 + 2) = auVar48._8_8_; + *(undefined8 *)pfVar39 = auVar48._0_8_; + *(long *)(pfVar39 + 6) = auVar44._8_8_; + *(undefined8 *)(pfVar39 + 4) = auVar44._0_8_; + psVar32 = psVar32 + 8; + pfVar39 = pfVar39 + 8; + } while (uVar35 < uVar7); + iVar40 = iVar40 + iVar15; + if (iVar15 == uVar28 - uVar34) goto joined_r0x00311bd8; + } + iVar15 = iVar40 + 1; + pfVar27[iVar40] = pfVar27[iVar40] + (float)(int)psVar31[iVar40]; + if (iVar15 < (int)uVar16) { + iVar8 = iVar40 + 2; + pfVar27[iVar15] = pfVar27[iVar15] + (float)(int)psVar31[iVar15]; + if (iVar8 < (int)uVar16) { + iVar15 = iVar40 + 3; + pfVar27[iVar8] = pfVar27[iVar8] + (float)(int)psVar31[iVar8]; + if (iVar15 < (int)uVar16) { + iVar8 = iVar40 + 4; + pfVar27[iVar15] = pfVar27[iVar15] + (float)(int)psVar31[iVar15]; + if (iVar8 < (int)uVar16) { + iVar15 = iVar40 + 5; + pfVar27[iVar8] = pfVar27[iVar8] + (float)(int)psVar31[iVar8]; + if (iVar15 < (int)uVar16) { + iVar40 = iVar40 + 6; + pfVar27[iVar15] = pfVar27[iVar15] + (float)(int)psVar31[iVar15]; + if (iVar40 < (int)uVar16) { + pfVar27[iVar40] = pfVar27[iVar40] + (float)(int)psVar31[iVar40]; + } + } + } + } + } + } + goto joined_r0x00311bd8; +} + + +================================================================== + +### FUNC 00312188 (2572 bytes) name=FUN_00312188 + +void FUN_00312188(uint *param_1,long param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + uint uVar7; + int iVar8; + uint uVar9; + int iVar10; + ushort uVar11; + ushort uVar12; + ushort uVar13; + int iVar14; + int iVar15; + uint uVar16; + int iVar17; + float *pfVar18; + bool bVar19; + uint uVar20; + ulong uVar21; + float *pfVar22; + long lVar23; + float *pfVar24; + int iVar25; + ulong uVar26; + float *pfVar27; + uint uVar28; + float *pfVar29; + uint uVar30; + ushort *puVar31; + ushort *puVar32; + long lVar33; + uint uVar34; + uint uVar35; + undefined1 (*pauVar36) [16]; + ulong uVar37; + ushort *puVar38; + float *pfVar39; + int iVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined8 uVar49; + undefined1 auVar50 [16]; + long lVar51; + long lVar52; + long lVar53; + long lVar54; + long lVar55; + long lVar56; + long lVar57; + long lVar58; + long lVar59; + float afStack_420 [264]; + + pfVar27 = afStack_420; + iVar25 = (*(int **)(param_1 + 0x10))[1]; + iVar10 = **(int **)(param_1 + 0x10); + uVar16 = iVar25 + (*param_1 >> 3 & 0x1ff) * iVar25; + uVar37 = (ulong)(int)uVar16; + if (uVar37 < 0x109) { + bVar19 = false; + } + else { + uVar21 = uVar37 << 2; + if (0x1fc0000000000000 < uVar37) { + uVar21 = 0xffffffffffffffff; + } + pfVar22 = operator_new__(uVar21); + bVar19 = pfVar22 != pfVar27; + pfVar27 = pfVar22; + } + uVar37 = *(ulong *)(param_1 + 0x14); + pfVar22 = *(float **)(param_2 + 0x10); + puVar31 = *(ushort **)(param_1 + 4); + if ((int)uVar16 < 1) goto LAB_00312430; + uVar20 = -((uint)((ulong)pfVar27 >> 2) & 3) & 3; + if (uVar16 < uVar20) { + uVar20 = uVar16; + } + uVar21 = (ulong)uVar20; + if ((int)uVar16 < 9) { + uVar21 = (ulong)uVar16; +LAB_00312268: + uVar20 = (uint)uVar21; + *pfVar27 = (float)*puVar31; + uVar26 = uVar21; + if ((((uVar20 != 1) && (pfVar27[1] = (float)puVar31[1], uVar20 != 2)) && + (pfVar27[2] = (float)puVar31[2], uVar20 != 3)) && + (((pfVar27[3] = (float)puVar31[3], uVar20 != 4 && + (pfVar27[4] = (float)puVar31[4], uVar20 != 5)) && + (pfVar27[5] = (float)puVar31[5], uVar20 != 6)))) { + pfVar27[6] = (float)puVar31[6]; + if (uVar20 == 8) { + pfVar27[7] = (float)puVar31[7]; + } + else { + uVar26 = 7; + } + } + iVar25 = (int)uVar26; + if (uVar16 == uVar20) goto LAB_00312430; + } + else { + iVar25 = 0; + if (uVar20 != 0) goto LAB_00312268; + } + iVar17 = uVar16 - (int)uVar21; + uVar20 = (iVar17 - 8U >> 3) + 1; + iVar14 = uVar20 * 8; + if (6 < (uVar16 - 1) - (int)uVar21) { + uVar30 = 0; + pfVar24 = pfVar27 + uVar21; + puVar32 = puVar31 + uVar21; + do { + uVar30 = uVar30 + 1; + auVar45._2_2_ = 0; + auVar45._0_2_ = *puVar32; + auVar45._4_2_ = puVar32[1]; + auVar45._6_2_ = 0; + auVar45._8_2_ = puVar32[2]; + auVar45._10_2_ = 0; + auVar45._12_2_ = puVar32[3]; + auVar45._14_2_ = 0; + auVar41._2_2_ = 0; + auVar41._0_2_ = puVar32[4]; + auVar41._4_2_ = puVar32[5]; + auVar41._6_2_ = 0; + auVar41._8_2_ = puVar32[6]; + auVar41._10_2_ = 0; + auVar41._12_2_ = puVar32[7]; + auVar41._14_2_ = 0; + auVar45 = NEON_scvtf(auVar45,4); + auVar41 = NEON_scvtf(auVar41,4); + *(long *)(pfVar24 + 2) = auVar45._8_8_; + *(long *)pfVar24 = auVar45._0_8_; + *(long *)(pfVar24 + 6) = auVar41._8_8_; + *(long *)(pfVar24 + 4) = auVar41._0_8_; + pfVar24 = pfVar24 + 8; + puVar32 = puVar32 + 8; + } while (uVar30 < uVar20); + iVar25 = iVar25 + iVar14; + if (iVar17 == iVar14) goto LAB_00312430; + } + iVar14 = iVar25 + 1; + pfVar27[iVar25] = (float)puVar31[iVar25]; + if (iVar14 < (int)uVar16) { + iVar17 = iVar25 + 2; + pfVar27[iVar14] = (float)puVar31[iVar14]; + if (iVar17 < (int)uVar16) { + iVar14 = iVar25 + 3; + pfVar27[iVar17] = (float)puVar31[iVar17]; + if (iVar14 < (int)uVar16) { + iVar17 = iVar25 + 4; + pfVar27[iVar14] = (float)puVar31[iVar14]; + if (iVar17 < (int)uVar16) { + iVar14 = iVar25 + 5; + pfVar27[iVar17] = (float)puVar31[iVar17]; + if (iVar14 < (int)uVar16) { + iVar25 = iVar25 + 6; + pfVar27[iVar14] = (float)puVar31[iVar14]; + if (iVar25 < (int)uVar16) { + pfVar27[iVar25] = (float)puVar31[iVar25]; + } + } + } + } + } + } +LAB_00312430: + uVar30 = uVar16 - 4; + iVar25 = (uVar30 >> 2) + 1; + uVar20 = ((uVar30 >> 2) - 1 >> 1) + 1; + iVar17 = iVar25 * 4; + iVar14 = uVar20 * 8; + lVar53 = NEON_shl(uVar37 >> 1,1); + if (uVar30 < 4) { + iVar14 = 0; + } + if ((int)(uVar16 - 3) < 1) { + iVar17 = 0; + } + iVar1 = iVar17 + 1; + lVar33 = (long)iVar14; + iVar14 = iVar17 + 2; + lVar23 = (long)iVar17; + pfVar24 = pfVar27 + lVar23; + uVar9 = -((uint)((ulong)pfVar24 >> 2) & 3) & 3; + iVar2 = iVar17 + 3; + iVar3 = iVar17 + 4; + lVar59 = NEON_shl(lVar23,1); + iVar4 = iVar17 + 5; + iVar5 = iVar17 + 6; + iVar6 = iVar17 + 7; + lVar58 = NEON_shl((long)iVar1,1); + uVar28 = uVar16 - iVar17; + if (uVar28 < uVar9) { + uVar9 = uVar28; + } + lVar57 = NEON_shl((long)iVar14,1); + lVar56 = NEON_shl((long)iVar2,1); + lVar55 = NEON_shl((long)iVar3,1); + lVar54 = NEON_shl((long)iVar4,1); + lVar52 = NEON_shl((long)iVar5,1); + lVar51 = NEON_shl((long)iVar6,1); +joined_r0x003125e4: + do { + puVar32 = puVar31; + iVar10 = iVar10 + -1; + if (iVar10 == 0) { + if (0 < (int)uVar16) { + if ((pfVar22 < pfVar27 + 4 && pfVar27 < pfVar22 + 4) || (uVar16 < 0xc)) { + lVar53 = 0; + do { + pfVar22[lVar53] = pfVar27[lVar53]; + lVar53 = lVar53 + 1; + } while ((int)lVar53 < (int)uVar16); + } + else { + uVar20 = -((uint)((ulong)pfVar27 >> 2) & 3) & 3; + if (uVar16 < uVar20) { + uVar20 = uVar16; + } + uVar30 = 0; + if ((uVar20 != 0) && (*pfVar22 = *pfVar27, uVar30 = uVar20, uVar20 != 1)) { + pfVar22[1] = pfVar27[1]; + if (uVar20 == 3) { + pfVar22[2] = pfVar27[2]; + } + else { + uVar30 = 2; + } + } + uVar9 = ((uVar16 - uVar20) - 4 >> 2) + 1; + iVar25 = uVar9 * 4; + uVar28 = 0; + pfVar24 = pfVar27 + uVar20; + pfVar29 = pfVar22 + uVar20; + do { + uVar49 = *(undefined8 *)pfVar24; + uVar28 = uVar28 + 1; + *(undefined8 *)(pfVar29 + 2) = *(undefined8 *)(pfVar24 + 2); + *(undefined8 *)pfVar29 = uVar49; + pfVar24 = pfVar24 + 4; + pfVar29 = pfVar29 + 4; + } while (uVar28 < uVar9); + uVar30 = iVar25 + uVar30; + if (iVar25 != uVar16 - uVar20) { + uVar37 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar30 << 2; + *(undefined4 *)((long)pfVar22 + uVar37) = *(undefined4 *)((long)pfVar27 + uVar37); + if (((int)(uVar30 + 1) < (int)uVar16) && + (*(undefined4 *)((long)pfVar22 + uVar37 + 4) = + *(undefined4 *)((long)pfVar27 + uVar37 + 4), (int)(uVar30 + 2) < (int)uVar16)) + { + *(undefined4 *)((long)pfVar22 + uVar37 + 8) = + *(undefined4 *)((long)pfVar27 + uVar37 + 8); + } + } + } + } + if (bVar19) { + operator_delete__(pfVar27); + } + return; + } + puVar31 = (ushort *)((long)puVar32 + lVar53); + if (0 < (int)(uVar16 - 3)) { + if (3 < uVar30) { + pauVar36 = (undefined1 (*) [16])(pfVar27 + 4); + uVar34 = 0; + puVar38 = puVar31; + pfVar29 = pfVar27; + do { + uVar34 = uVar34 + 1; + auVar41 = *pauVar36; + auVar50._2_2_ = 0; + auVar50._0_2_ = *puVar38; + auVar50._4_2_ = puVar38[1]; + auVar50._6_2_ = 0; + auVar50._8_2_ = puVar38[2]; + auVar50._10_2_ = 0; + auVar50._12_2_ = puVar38[3]; + auVar50._14_2_ = 0; + auVar47._2_2_ = 0; + auVar47._0_2_ = puVar38[4]; + auVar47._4_2_ = puVar38[5]; + auVar47._6_2_ = 0; + auVar47._8_2_ = puVar38[6]; + auVar47._10_2_ = 0; + auVar47._12_2_ = puVar38[7]; + auVar47._14_2_ = 0; + auVar50 = NEON_scvtf(auVar50,4); + auVar45 = NEON_scvtf(auVar47,4); + auVar42._0_8_ = CONCAT44(auVar41._4_4_ + auVar45._4_4_,auVar41._0_4_ + auVar45._0_4_); + auVar42._8_4_ = auVar41._8_4_ + auVar45._8_4_; + auVar42._12_4_ = auVar41._12_4_ + auVar45._12_4_; + *(ulong *)(pfVar29 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar29 + 2) >> 0x20) + auVar50._12_4_, + (float)*(undefined8 *)(pfVar29 + 2) + auVar50._8_4_); + *(ulong *)pfVar29 = + CONCAT44((float)((ulong)*(undefined8 *)pfVar29 >> 0x20) + auVar50._4_4_, + (float)*(undefined8 *)pfVar29 + auVar50._0_4_); + pfVar29 = pfVar29 + 8; + *(long *)((long)*pauVar36 + 8) = auVar42._8_8_; + *(undefined8 *)*pauVar36 = auVar42._0_8_; + pauVar36 = pauVar36 + 2; + puVar38 = puVar38 + 8; + } while (uVar34 < uVar20); + if (iVar25 == uVar20 * 2) goto LAB_003126c8; + } + uVar11 = puVar31[lVar33 + 1]; + uVar12 = puVar31[lVar33 + 2]; + uVar13 = puVar31[lVar33 + 3]; + pfVar27[lVar33] = pfVar27[lVar33] + (float)puVar31[lVar33]; + pfVar27[lVar33 + 1] = (float)uVar11 + pfVar27[lVar33 + 1]; + pfVar27[lVar33 + 2] = pfVar27[lVar33 + 2] + (float)uVar12; + pfVar27[lVar33 + 3] = (float)uVar13 + pfVar27[lVar33 + 3]; + } +LAB_003126c8: + } while ((int)uVar16 <= iVar17); + uVar34 = uVar9; + if (uVar28 < 9) { + uVar34 = uVar28; + } + iVar40 = iVar17; + if (uVar34 != 0) { + *pfVar24 = *pfVar24 + (float)*(ushort *)((long)puVar31 + lVar59); + iVar40 = iVar1; + if (((((uVar34 != 1) && + (pfVar27[iVar1] = pfVar27[iVar1] + (float)*(ushort *)((long)puVar31 + lVar58), + iVar40 = iVar14, uVar34 != 2)) && + (pfVar27[iVar14] = pfVar27[iVar14] + (float)*(ushort *)((long)puVar31 + lVar57), + iVar40 = iVar2, uVar34 != 3)) && + ((pfVar27[iVar2] = pfVar27[iVar2] + (float)*(ushort *)((long)puVar31 + lVar56), + iVar40 = iVar3, uVar34 != 4 && + (pfVar27[iVar3] = pfVar27[iVar3] + (float)*(ushort *)((long)puVar31 + lVar55), + iVar40 = iVar4, uVar34 != 5)))) && + ((pfVar27[iVar4] = pfVar27[iVar4] + (float)*(ushort *)((long)puVar31 + lVar54), + iVar40 = iVar5, uVar34 != 6 && + (pfVar27[iVar5] = pfVar27[iVar5] + (float)*(ushort *)((long)puVar31 + lVar52), + iVar40 = iVar6, uVar34 == 8)))) { + pfVar27[iVar6] = pfVar27[iVar6] + (float)*(ushort *)((long)puVar31 + lVar51); + iVar40 = iVar17 + 8; + } + if (uVar34 == uVar28) goto joined_r0x003125e4; + } + uVar7 = ((uVar28 - uVar34) - 8 >> 3) + 1; + iVar15 = uVar7 * 8; + if (6 < (uVar28 - 1) - uVar34) { + pfVar29 = pfVar27 + lVar23 + (ulong)uVar34; + uVar35 = 0; + puVar32 = puVar32 + (ulong)uVar34 + (uVar37 >> 1) + lVar23; + pfVar39 = pfVar29; + do { + pfVar18 = pfVar29 + 2; + uVar49 = *(undefined8 *)pfVar29; + auVar41 = *(undefined1 (*) [16])(pfVar29 + 4); + uVar35 = uVar35 + 1; + pfVar29 = pfVar29 + 8; + auVar46._2_2_ = 0; + auVar46._0_2_ = *puVar32; + auVar46._4_2_ = puVar32[1]; + auVar46._6_2_ = 0; + auVar46._8_2_ = puVar32[2]; + auVar46._10_2_ = 0; + auVar46._12_2_ = puVar32[3]; + auVar46._14_2_ = 0; + auVar43._2_2_ = 0; + auVar43._0_2_ = puVar32[4]; + auVar43._4_2_ = puVar32[5]; + auVar43._6_2_ = 0; + auVar43._8_2_ = puVar32[6]; + auVar43._10_2_ = 0; + auVar43._12_2_ = puVar32[7]; + auVar43._14_2_ = 0; + auVar47 = NEON_scvtf(auVar46,4); + auVar45 = NEON_scvtf(auVar43,4); + auVar48._0_8_ = + CONCAT44((float)((ulong)uVar49 >> 0x20) + auVar47._4_4_,(float)uVar49 + auVar47._0_4_); + auVar48._8_4_ = (float)*(undefined8 *)pfVar18 + auVar47._8_4_; + auVar48._12_4_ = (float)((ulong)*(undefined8 *)pfVar18 >> 0x20) + auVar47._12_4_; + auVar44._0_8_ = CONCAT44(auVar45._4_4_ + auVar41._4_4_,auVar45._0_4_ + auVar41._0_4_); + auVar44._8_4_ = auVar45._8_4_ + auVar41._8_4_; + auVar44._12_4_ = auVar45._12_4_ + auVar41._12_4_; + *(long *)(pfVar39 + 2) = auVar48._8_8_; + *(undefined8 *)pfVar39 = auVar48._0_8_; + *(long *)(pfVar39 + 6) = auVar44._8_8_; + *(undefined8 *)(pfVar39 + 4) = auVar44._0_8_; + puVar32 = puVar32 + 8; + pfVar39 = pfVar39 + 8; + } while (uVar35 < uVar7); + iVar40 = iVar40 + iVar15; + if (iVar15 == uVar28 - uVar34) goto joined_r0x003125e4; + } + iVar15 = iVar40 + 1; + pfVar27[iVar40] = pfVar27[iVar40] + (float)puVar31[iVar40]; + if (iVar15 < (int)uVar16) { + iVar8 = iVar40 + 2; + pfVar27[iVar15] = pfVar27[iVar15] + (float)puVar31[iVar15]; + if (iVar8 < (int)uVar16) { + iVar15 = iVar40 + 3; + pfVar27[iVar8] = pfVar27[iVar8] + (float)puVar31[iVar8]; + if (iVar15 < (int)uVar16) { + iVar8 = iVar40 + 4; + pfVar27[iVar15] = pfVar27[iVar15] + (float)puVar31[iVar15]; + if (iVar8 < (int)uVar16) { + iVar15 = iVar40 + 5; + pfVar27[iVar8] = pfVar27[iVar8] + (float)puVar31[iVar8]; + if (iVar15 < (int)uVar16) { + iVar40 = iVar40 + 6; + pfVar27[iVar15] = pfVar27[iVar15] + (float)puVar31[iVar15]; + if (iVar40 < (int)uVar16) { + pfVar27[iVar40] = pfVar27[iVar40] + (float)puVar31[iVar40]; + } + } + } + } + } + } + goto joined_r0x003125e4; +} + + +================================================================== + +### FUNC 00312b94 (1284 bytes) name=FUN_00312b94 + +void FUN_00312b94(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + double *pdVar10; + bool bVar11; + ulong uVar12; + double *pdVar13; + double *pdVar14; + uint uVar15; + double *pdVar16; + long lVar17; + double *pdVar18; + uint uVar19; + double *pdVar20; + uint uVar21; + double *pdVar22; + double *pdVar23; + double *pdVar24; + ulong uVar25; + long lVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double *pdVar32; + double adStack_440 [136]; + + pdVar24 = adStack_440; + iVar5 = (*(int **)(param_1 + 0x10))[1]; + iVar6 = **(int **)(param_1 + 0x10); + uVar7 = iVar5 + (*param_1 >> 3 & 0x1ff) * iVar5; + uVar25 = (ulong)(int)uVar7; + if (uVar25 < 0x89) { + bVar11 = false; + } + else { + uVar12 = uVar25 << 3; + if (0xfe0000000000000 < uVar25) { + uVar12 = 0xffffffffffffffff; + } + pdVar13 = operator_new__(uVar12); + bVar11 = pdVar13 != pdVar24; + pdVar24 = pdVar13; + } + pdVar32 = *(double **)(param_2 + 0x10); + pdVar13 = *(double **)(param_1 + 4); + uVar25 = *(ulong *)(param_1 + 0x14) >> 3; + if (0 < (int)uVar7) { + if ((pdVar13 < pdVar24 + 2 && pdVar24 < pdVar13 + 2) || (uVar7 < 0xe)) { + lVar26 = 0; + do { + pdVar24[lVar26] = pdVar13[lVar26]; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar7); + } + else { + uVar1 = (uint)((ulong)pdVar13 >> 3) & 1; + uVar2 = uVar7; + if (uVar1 < uVar7) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + *pdVar24 = *pdVar13; + } + uVar1 = ((uVar7 - uVar2) - 2 >> 1) + 1; + uVar15 = 0; + iVar5 = uVar1 * 2; + pdVar14 = pdVar24 + uVar2; + pdVar22 = pdVar13 + uVar2; + do { + dVar29 = *pdVar22; + uVar15 = uVar15 + 1; + pdVar14[1] = pdVar22[1]; + *pdVar14 = dVar29; + pdVar14 = pdVar14 + 2; + pdVar22 = pdVar22 + 2; + } while (uVar15 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar5; + if (uVar7 - uVar2 != iVar5) { + uVar12 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar24 + uVar12) = *(undefined8 *)((long)pdVar13 + uVar12); + } + } + } + uVar15 = uVar7 - 4 >> 2; + uVar2 = uVar15 + 1; + uVar1 = uVar2 * 4; + if ((int)(uVar7 - 3) < 1) { + uVar1 = 0; + } + uVar8 = uVar7 - uVar1; + lVar26 = (long)(int)uVar1; + pdVar14 = pdVar24 + lVar26; + uVar3 = (uint)((ulong)pdVar14 >> 3) & 1; + uVar4 = uVar8; + if (uVar3 < uVar8) { + uVar4 = uVar3; + } + iVar9 = uVar8 - uVar4; + uVar3 = (iVar9 - 2U >> 1) + 1; + iVar5 = uVar3 * 2; + pdVar22 = pdVar13; +joined_r0x00312da4: + while( true ) { + do { + pdVar23 = pdVar22; + iVar6 = iVar6 + -1; + if (iVar6 == 0) { + if (0 < (int)uVar7) { + /* try { // try from 00312efc to 00412eff has its CatchHandler @ 00310df0 */ + /* catch() { ... } // from try @ 003110b8 with catch @ 00312f00 */ + if ((pdVar32 < pdVar24 + 2 && pdVar24 < pdVar32 + 2) || (uVar7 < 0xe)) { + lVar26 = 0; + do { + /* try { // try from 00313060 to 0041307f has its CatchHandler @ 00313f30 */ + pdVar32[lVar26] = pdVar24[lVar26]; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar7); + } + else { + uVar2 = (uint)((ulong)pdVar24 >> 3) & 1; + if (uVar7 < uVar2) { + uVar2 = uVar7; + } + if (uVar2 != 0) { + *pdVar32 = *pdVar24; + } + /* catch() { ... } // from try @ 00310e9c with catch @ 00312f2c */ + uVar1 = ((uVar7 - uVar2) - 2 >> 1) + 1; + /* try { // try from 00312f3c to 00412f3f has its CatchHandler @ 00310df0 */ + iVar5 = uVar1 * 2; + /* catch() { ... } // from try @ 0031102c with catch @ 00312f40 + catch() { ... } // from try @ 003110c0 with catch @ 00312f40 + catch() { ... } // from try @ 00311290 with catch @ 00312f40 + catch() { ... } // from try @ 00311318 with catch @ 00312f40 + catch() { ... } // from try @ 00311734 with catch @ 00312f40 + catch() { ... } // from try @ 00311780 with catch @ 00312f40 + catch() { ... } // from try @ 003117ac with catch @ 00312f40 */ + /* catch() { ... } // from try @ 00311310 with catch @ 00312f48 */ + uVar15 = 0; + pdVar13 = pdVar24 + uVar2; + pdVar14 = pdVar32 + uVar2; + do { + dVar29 = *pdVar13; + uVar15 = uVar15 + 1; + pdVar14[1] = pdVar13[1]; + *pdVar14 = dVar29; + /* catch() { ... } // from try @ 00310f08 with catch @ 00312f5c + catch() { ... } // from try @ 003111a8 with catch @ 00312f5c + catch() { ... } // from try @ 0031148c with catch @ 00312f5c + catch() { ... } // from try @ 00311728 with catch @ 00312f5c + catch() { ... } // from try @ 00311774 with catch @ 00312f5c + catch() { ... } // from try @ 00311798 with catch @ 00312f5c */ + pdVar13 = pdVar13 + 2; + pdVar14 = pdVar14 + 2; + } while (uVar15 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar5; + if (iVar5 != uVar7 - uVar2) { + uVar25 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar32 + uVar25) = *(undefined8 *)((long)pdVar24 + uVar25); + } + } + } + if (bVar11) { + operator_delete__(pdVar24); + } + return; + } + pdVar13 = pdVar13 + uVar25; + pdVar22 = pdVar23 + uVar25; + if (0 < (int)(uVar7 - 3)) { + if ((pdVar24 < pdVar13 + 8 && pdVar13 < pdVar24 + 8) || (uVar2 < 4)) { + pdVar18 = pdVar24; + pdVar16 = pdVar22 + 1; + do { + pdVar20 = pdVar16 + 4; + /* try { // try from 0031300c to 0041305b has its CatchHandler @ 00312fb0 */ + dVar29 = pdVar16[-1]; + pdVar18[1] = pdVar18[1] + *pdVar16; + *pdVar18 = *pdVar18 + dVar29; + dVar29 = pdVar16[1]; + pdVar18[3] = pdVar18[3] + pdVar16[2]; + pdVar18[2] = pdVar18[2] + dVar29; + pdVar18 = pdVar18 + 4; + pdVar16 = pdVar20; + } while (pdVar20 != pdVar22 + (ulong)uVar15 * 4 + 5); + } + else { + pdVar18 = pdVar24 + 2; + uVar21 = 0; + pdVar16 = pdVar13; + pdVar20 = pdVar24; + do { + pdVar10 = pdVar16 + 1; + dVar31 = *pdVar16; + uVar21 = uVar21 + 1; + dVar27 = pdVar18[1]; + dVar29 = *pdVar18; + dVar30 = pdVar16[3]; + dVar28 = pdVar16[2]; + pdVar16 = pdVar16 + 4; + pdVar20[1] = pdVar20[1] + *pdVar10; + *pdVar20 = *pdVar20 + dVar31; + pdVar20 = pdVar20 + 4; + pdVar18[1] = dVar27 + dVar30; + *pdVar18 = dVar29 + dVar28; + pdVar18 = pdVar18 + 4; + } while (uVar21 < uVar2); + } + } + } while ((int)uVar7 <= (int)uVar1); + if ((pdVar24 + lVar26 + 2 <= pdVar23 + lVar26 + uVar25 || + pdVar23 + uVar25 + 2 + lVar26 <= pdVar14) && (7 < uVar8)) break; + lVar17 = 0; + do { + *(double *)((long)pdVar14 + lVar17) = + *(double *)((long)pdVar14 + lVar17) + *(double *)((long)pdVar22 + lVar17 + lVar26 * 8); + lVar17 = lVar17 + 8; + } while (lVar17 != ((ulong)((uVar7 - 1) - uVar1) + 1) * 8); + } + uVar21 = uVar1; + if (uVar4 != 0) { + *pdVar14 = *pdVar14 + pdVar22[lVar26]; + uVar21 = uVar1 + 1; + } + if (iVar9 != 1) goto code_r0x00312e70; + goto LAB_00312ea8; +code_r0x00312e70: + uVar19 = 0; + pdVar18 = pdVar24 + lVar26 + (ulong)uVar4; + pdVar16 = pdVar24 + (ulong)uVar4 + lVar26; + pdVar23 = pdVar23 + lVar26 + uVar25 + (ulong)uVar4; + do { + dVar27 = *pdVar23; + uVar19 = uVar19 + 1; + dVar29 = *pdVar18; + pdVar16[1] = pdVar18[1] + pdVar23[1]; + *pdVar16 = dVar29 + dVar27; + pdVar18 = pdVar18 + 2; + pdVar16 = pdVar16 + 2; + pdVar23 = pdVar23 + 2; + } while (uVar19 < uVar3); + uVar21 = uVar21 + iVar5; + if (iVar9 != iVar5) { +LAB_00312ea8: + uVar12 = -(ulong)(uVar21 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar21 << 3; + *(double *)((long)pdVar24 + uVar12) = + *(double *)((long)pdVar24 + uVar12) + *(double *)((long)pdVar22 + uVar12); + } + goto joined_r0x00312da4; +} + + +================================================================== + +### FUNC 00313098 (1820 bytes) name=FUN_00313098 + +void FUN_00313098(uint *param_1,long param_2) + +{ + uint uVar1; + float *pfVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + uint uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + float fVar13; + float fVar14; + float fVar15; + float *pfVar16; + bool bVar17; + ulong uVar18; + float *pfVar19; + float *pfVar20; + uint uVar21; + ulong uVar22; + ulong uVar23; + long lVar24; + float *pfVar25; + uint uVar26; + ulong uVar27; + float *pfVar28; + uint uVar29; + float *pfVar30; + float *pfVar31; + float *pfVar32; + float *pfVar33; + uint uVar34; + long lVar35; + ulong uVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + float *pfVar42; + float afStack_420 [264]; + + /* try { // try from 003130a8 to 004130ab has its CatchHandler @ 00313f28 */ + pfVar33 = afStack_420; + iVar5 = (*(int **)(param_1 + 0x10))[1]; + iVar6 = **(int **)(param_1 + 0x10); + uVar8 = iVar5 + (*param_1 >> 3 & 0x1ff) * iVar5; + uVar36 = (ulong)(int)uVar8; + if (uVar36 < 0x109) { + bVar17 = false; + } + else { + uVar18 = uVar36 << 2; + /* try { // try from 00313104 to 00413107 has its CatchHandler @ 00313f14 */ + if (0x1fc0000000000000 < uVar36) { + uVar18 = 0xffffffffffffffff; + } + pfVar19 = operator_new__(uVar18); + /* try { // try from 0031310c to 0041310f has its CatchHandler @ 00313f28 */ + bVar17 = pfVar19 != pfVar33; + pfVar33 = pfVar19; + } + pfVar42 = *(float **)(param_2 + 0x10); + pfVar19 = *(float **)(param_1 + 4); + uVar36 = *(ulong *)(param_1 + 0x14) >> 2; + if (0 < (int)uVar8) { + if ((pfVar19 < pfVar33 + 4 && pfVar33 < pfVar19 + 4) || (uVar8 < 0xc)) { + lVar35 = 0; + do { + pfVar33[lVar35] = pfVar19[lVar35]; + lVar35 = lVar35 + 1; + } while ((int)lVar35 < (int)uVar8); + } + else { + uVar34 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + uVar7 = uVar8; + if (uVar34 < uVar8) { + uVar7 = uVar34; + } + uVar34 = uVar7; + /* try { // try from 00313180 to 00413183 has its CatchHandler @ 00313f30 */ + if ((uVar7 != 0) && (*pfVar33 = *pfVar19, uVar7 != 1)) { + pfVar33[1] = pfVar19[1]; + if (uVar7 == 3) { + pfVar33[2] = pfVar19[2]; + } + else { + uVar34 = 2; + } + } + /* try { // try from 003131ac to 004131ff has its CatchHandler @ 00312fb0 */ + uVar26 = ((uVar8 - uVar7) - 4 >> 2) + 1; + uVar29 = 0; + iVar5 = uVar26 * 4; + pfVar20 = pfVar33 + uVar7; + pfVar30 = pfVar19 + uVar7; + do { + fVar37 = *pfVar30; + fVar38 = pfVar30[1]; + fVar13 = pfVar30[3]; + uVar29 = uVar29 + 1; + pfVar20[2] = pfVar30[2]; + pfVar20[3] = fVar13; + *pfVar20 = fVar37; + pfVar20[1] = fVar38; + pfVar20 = pfVar20 + 4; + pfVar30 = pfVar30 + 4; + } while (uVar29 < uVar26); + uVar34 = uVar34 + iVar5; + if (uVar8 - uVar7 != iVar5) { + uVar18 = -(ulong)(uVar34 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar34 << 2; + *(undefined4 *)((long)pfVar33 + uVar18) = *(undefined4 *)((long)pfVar19 + uVar18); + if (((int)(uVar34 + 1) < (int)uVar8) && + (*(undefined4 *)((long)pfVar33 + uVar18 + 4) = + *(undefined4 *)((long)pfVar19 + uVar18 + 4), (int)(uVar34 + 2) < (int)uVar8)) { + *(undefined4 *)((long)pfVar33 + uVar18 + 8) = *(undefined4 *)((long)pfVar19 + uVar18 + 8); + } + } + } + } + uVar26 = uVar8 - 4 >> 2; + uVar34 = uVar26 + 1; + uVar7 = uVar34 * 4; + if ((int)(uVar8 - 3) < 1) { + uVar7 = 0; + } + uVar9 = uVar8 - uVar7; + lVar35 = (long)(int)uVar7; + uVar29 = uVar7 + 1; + uVar1 = uVar7 + 2; + pfVar20 = pfVar33 + lVar35; + uVar3 = -((uint)((ulong)pfVar20 >> 2) & 3) & 3; + uVar4 = uVar9; + if (uVar3 < uVar9) { + uVar4 = uVar3; + } + uVar18 = -(ulong)(uVar29 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar29 << 2; + uVar22 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + pfVar30 = (float *)((long)pfVar33 + uVar18); + /* try { // try from 00313320 to 00413323 has its CatchHandler @ 00313f28 */ + pfVar2 = (float *)((long)pfVar33 + uVar22); + uVar3 = ((uVar9 - uVar4) - 4 >> 2) + 1; + iVar5 = uVar3 * 4; + pfVar16 = pfVar19; +joined_r0x0031335c: + do { + pfVar32 = pfVar16; + iVar6 = iVar6 + -1; + if (iVar6 == 0) break; + pfVar19 = pfVar19 + uVar36; + pfVar16 = pfVar32 + uVar36; + if (0 < (int)(uVar8 - 3)) { + /* try { // try from 00313374 to 00413377 has its CatchHandler @ 00313ed0 */ + /* try { // try from 0031337c to 0041337f has its CatchHandler @ 00313f28 */ + if ((pfVar33 < pfVar19 + 0x10 && pfVar19 < pfVar33 + 0x10) || (uVar34 < 3)) { + /* try { // try from 003136bc to 004136bf has its CatchHandler @ 00313f28 */ + pfVar25 = pfVar33; + pfVar28 = pfVar16 + 1; + do { + fVar37 = *pfVar28; + fVar38 = pfVar28[-1]; + if (pfVar28[-1] <= *pfVar25) { + fVar38 = *pfVar25; + } + *pfVar25 = fVar38; + if (fVar37 <= pfVar25[1]) { + fVar37 = pfVar25[1]; + } + pfVar25[1] = fVar37; + pfVar31 = pfVar28 + 4; + fVar37 = pfVar28[2]; + fVar38 = pfVar28[1]; + if (pfVar28[1] <= pfVar25[2]) { + fVar38 = pfVar25[2]; + } + pfVar25[2] = fVar38; + if (fVar37 <= pfVar25[3]) { + fVar37 = pfVar25[3]; + } + pfVar25[3] = fVar37; + pfVar25 = pfVar25 + 4; + pfVar28 = pfVar31; + } while (pfVar31 != pfVar16 + (ulong)uVar26 * 4 + 5); + } + else { + uVar21 = 0; + pfVar25 = pfVar33; + pfVar28 = pfVar19; + pfVar31 = pfVar19; + do { + fVar40 = (float)((ulong)*(undefined8 *)(pfVar25 + 2) >> 0x20); + uVar12 = *(undefined8 *)pfVar25; + uVar21 = uVar21 + 1; + uVar11 = *(undefined8 *)(pfVar28 + 2); + uVar10 = *(undefined8 *)pfVar28; + fVar37 = *pfVar31; + fVar38 = pfVar31[1]; + fVar13 = pfVar31[3]; + pfVar25[2] = (float)((uint)pfVar25[2] ^ + ((uint)pfVar25[2] ^ (uint)pfVar31[2]) & + -(uint)((float)*(undefined8 *)(pfVar25 + 2) < (float)uVar11)); + pfVar25[3] = (float)((uint)fVar40 ^ + ((uint)fVar40 ^ (uint)fVar13) & + -(uint)(fVar40 < (float)((ulong)uVar11 >> 0x20))); + *pfVar25 = (float)((uint)*pfVar25 ^ + ((uint)*pfVar25 ^ (uint)fVar37) & -(uint)((float)uVar12 < (float)uVar10) + ); + pfVar25[1] = (float)((uint)pfVar25[1] ^ + ((uint)pfVar25[1] ^ (uint)fVar38) & + -(uint)((float)((ulong)uVar12 >> 0x20) < + (float)((ulong)uVar10 >> 0x20))); + pfVar25 = pfVar25 + 4; + pfVar28 = pfVar28 + 4; + pfVar31 = pfVar31 + 4; + } while (uVar21 < uVar34); + } + } + if ((int)uVar7 < (int)uVar8) { + if ((pfVar32 + lVar35 + uVar36 < pfVar33 + lVar35 + 4 && + pfVar20 < pfVar32 + uVar36 + 4 + lVar35) || (uVar9 < 8)) { + lVar24 = 0; + do { + fVar37 = *(float *)((long)pfVar16 + lVar24 + lVar35 * 4); + if (fVar37 <= *(float *)((long)pfVar20 + lVar24)) { + fVar37 = *(float *)((long)pfVar20 + lVar24); + } + *(float *)((long)pfVar20 + lVar24) = fVar37; + lVar24 = lVar24 + 4; + } while (lVar24 != ((ulong)((uVar8 - 1) - uVar7) + 1) * 4); + goto joined_r0x0031335c; + } + if (uVar4 == 0) { + uVar27 = (ulong)uVar7; + } + else { + fVar37 = pfVar16[lVar35]; + if (pfVar16[lVar35] <= *pfVar20) { + fVar37 = *pfVar20; + } + *pfVar20 = fVar37; + if (uVar4 == 1) { + uVar27 = (ulong)uVar29; + } + else { + fVar38 = *pfVar30; + fVar37 = *(float *)((long)pfVar16 + uVar18); + if (fVar37 <= fVar38) { + fVar37 = fVar38; + } + *pfVar30 = fVar37; + if (uVar4 == 3) { + fVar38 = *pfVar2; + fVar37 = *(float *)((long)pfVar16 + uVar22); + if (fVar37 <= fVar38) { + fVar37 = fVar38; + } + uVar27 = (ulong)(uVar7 + 3); + *pfVar2 = fVar37; + } + else { + uVar27 = (ulong)uVar1; + } + } + } + if (2 < (uVar9 - 1) - uVar4) { + /* try { // try from 00313464 to 00413477 has its CatchHandler @ 00313fb0 */ + uVar21 = 0; + pfVar25 = pfVar33 + lVar35 + (ulong)uVar4; + pfVar28 = pfVar33 + (ulong)uVar4 + lVar35; + pfVar32 = pfVar32 + lVar35 + uVar36 + (ulong)uVar4; + do { + fVar39 = (float)((ulong)*(undefined8 *)(pfVar25 + 2) >> 0x20); + uVar10 = *(undefined8 *)pfVar25; + fVar37 = *pfVar25; + fVar38 = pfVar25[1]; + fVar14 = *pfVar25; + fVar15 = pfVar25[1]; + uVar21 = uVar21 + 1; + fVar41 = (float)((ulong)*(undefined8 *)(pfVar32 + 2) >> 0x20); + uVar11 = *(undefined8 *)pfVar32; + fVar13 = *pfVar32; + fVar40 = pfVar32[1]; + pfVar28[2] = (float)((uint)pfVar25[2] ^ + ((uint)pfVar25[2] ^ (uint)pfVar32[2]) & + -(uint)((float)*(undefined8 *)(pfVar25 + 2) < + (float)*(undefined8 *)(pfVar32 + 2))); + pfVar28[3] = (float)((uint)fVar39 ^ + ((uint)fVar39 ^ (uint)fVar41) & -(uint)(fVar39 < fVar41)); + *pfVar28 = (float)((uint)fVar37 ^ + ((uint)fVar14 ^ (uint)fVar13) & -(uint)((float)uVar10 < (float)uVar11)); + pfVar28[1] = (float)((uint)fVar38 ^ + ((uint)fVar15 ^ (uint)fVar40) & + -(uint)((float)((ulong)uVar10 >> 0x20) < + (float)((ulong)uVar11 >> 0x20))); + pfVar25 = pfVar25 + 4; + pfVar28 = pfVar28 + 4; + pfVar32 = pfVar32 + 4; + } while (uVar21 < uVar3); + /* try { // try from 00313494 to 00413497 has its CatchHandler @ 00313fb8 */ + uVar27 = (ulong)(uint)((int)uVar27 + iVar5); + if (uVar9 - uVar4 == iVar5) goto joined_r0x0031335c; + } + uVar23 = -(uVar27 >> 0x1f) & 0xfffffffc00000000 | uVar27 << 2; + fVar37 = *(float *)((long)pfVar16 + uVar23); + /* try { // try from 003134b4 to 004134b7 has its CatchHandler @ 00313ee0 */ + if (*(float *)((long)pfVar16 + uVar23) <= *(float *)((long)pfVar33 + uVar23)) { + fVar37 = *(float *)((long)pfVar33 + uVar23); + } + *(float *)((long)pfVar33 + uVar23) = fVar37; + if ((int)uVar27 + 1 < (int)uVar8) { + lVar24 = uVar23 + 4; + fVar37 = *(float *)((long)pfVar16 + lVar24); + if (*(float *)((long)pfVar16 + lVar24) <= *(float *)((long)pfVar33 + lVar24)) { + fVar37 = *(float *)((long)pfVar33 + lVar24); + } + *(float *)((long)pfVar33 + lVar24) = fVar37; + if ((int)uVar27 + 2 < (int)uVar8) { + lVar24 = uVar23 + 8; + fVar37 = *(float *)((long)pfVar16 + lVar24); + if (*(float *)((long)pfVar16 + lVar24) <= *(float *)((long)pfVar33 + lVar24)) { + fVar37 = *(float *)((long)pfVar33 + lVar24); + } + *(float *)((long)pfVar33 + lVar24) = fVar37; + } + } + } + } while( true ); + if (0 < (int)uVar8) { + if ((pfVar42 < pfVar33 + 4 && pfVar33 < pfVar42 + 4) || (uVar8 < 0xc)) { + lVar35 = 0; + do { + pfVar42[lVar35] = pfVar33[lVar35]; + lVar35 = lVar35 + 1; + /* try { // try from 00313778 to 0041377b has its CatchHandler @ 00313f30 */ + } while ((int)lVar35 < (int)uVar8); + } + else { + uVar34 = -((uint)((ulong)pfVar33 >> 2) & 3) & 3; + if (uVar8 < uVar34) { + uVar34 = uVar8; + } + uVar36 = 0; + if (uVar34 != 0) { + *pfVar42 = *pfVar33; + if (uVar34 == 1) { + uVar36 = 1; + } + else { + pfVar42[1] = pfVar33[1]; + if (uVar34 == 3) { + uVar36 = 3; + pfVar42[2] = pfVar33[2]; + } + else { + uVar36 = 2; + } + } + } + uVar7 = ((uVar8 - uVar34) - 4 >> 2) + 1; + iVar5 = uVar7 * 4; + if (2 < (uVar8 - 1) - uVar34) { + uVar26 = 0; + pfVar19 = pfVar42 + uVar34; + pfVar20 = pfVar33 + uVar34; + do { + uVar10 = *(undefined8 *)pfVar20; + uVar26 = uVar26 + 1; + *(undefined8 *)(pfVar19 + 2) = *(undefined8 *)(pfVar20 + 2); + *(undefined8 *)pfVar19 = uVar10; + pfVar19 = pfVar19 + 4; + pfVar20 = pfVar20 + 4; + } while (uVar26 < uVar7); + uVar36 = (ulong)(uint)((int)uVar36 + iVar5); + if (iVar5 == uVar8 - uVar34) goto LAB_00313648; + } + uVar18 = -(uVar36 >> 0x1f) & 0xfffffffc00000000 | uVar36 << 2; + /* try { // try from 00313614 to 00413617 has its CatchHandler @ 00313f98 */ + *(undefined4 *)((long)pfVar42 + uVar18) = *(undefined4 *)((long)pfVar33 + uVar18); + /* try { // try from 00313624 to 00413627 has its CatchHandler @ 00313f7c */ + if (((int)uVar36 + 1 < (int)uVar8) && + (*(undefined4 *)((long)pfVar42 + uVar18 + 4) = *(undefined4 *)((long)pfVar33 + uVar18 + 4), + (int)uVar36 + 2 < (int)uVar8)) { + *(undefined4 *)((long)pfVar42 + uVar18 + 8) = *(undefined4 *)((long)pfVar33 + uVar18 + 8); + } + } + } +LAB_00313648: + if (bVar17) { + operator_delete__(pfVar33); + } + return; +} + + +================================================================== + +### FUNC 003137b4 (1820 bytes) name=FUN_003137b4 + +void FUN_003137b4(uint *param_1,long param_2) + +{ + uint uVar1; + float *pfVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + uint uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + float fVar13; + float fVar14; + float fVar15; + float *pfVar16; + bool bVar17; + ulong uVar18; + float *pfVar19; + float *pfVar20; + uint uVar21; + ulong uVar22; + ulong uVar23; + long lVar24; + float *pfVar25; + uint uVar26; + ulong uVar27; + float *pfVar28; + uint uVar29; + float *pfVar30; + float *pfVar31; + float *pfVar32; + float *pfVar33; + uint uVar34; + long lVar35; + ulong uVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + float *pfVar42; + float afStack_420 [264]; + + /* try { // try from 003137d0 to 004137d3 has its CatchHandler @ 00313f28 */ + pfVar33 = afStack_420; + iVar5 = (*(int **)(param_1 + 0x10))[1]; + iVar6 = **(int **)(param_1 + 0x10); + uVar8 = iVar5 + (*param_1 >> 3 & 0x1ff) * iVar5; + uVar36 = (ulong)(int)uVar8; + if (uVar36 < 0x109) { + bVar17 = false; + } + else { + uVar18 = uVar36 << 2; + if (0x1fc0000000000000 < uVar36) { + uVar18 = 0xffffffffffffffff; + } + pfVar19 = operator_new__(uVar18); + bVar17 = pfVar19 != pfVar33; + /* try { // try from 0031382c to 0041382f has its CatchHandler @ 00313ec0 */ + /* try { // try from 00313834 to 00413893 has its CatchHandler @ 00313f28 */ + pfVar33 = pfVar19; + } + pfVar42 = *(float **)(param_2 + 0x10); + pfVar19 = *(float **)(param_1 + 4); + uVar36 = *(ulong *)(param_1 + 0x14) >> 2; + if (0 < (int)uVar8) { + if ((pfVar19 < pfVar33 + 4 && pfVar33 < pfVar19 + 4) || (uVar8 < 0xc)) { + lVar35 = 0; + do { + pfVar33[lVar35] = pfVar19[lVar35]; + lVar35 = lVar35 + 1; + } while ((int)lVar35 < (int)uVar8); + } + else { + uVar34 = -((uint)((ulong)pfVar19 >> 2) & 3) & 3; + uVar7 = uVar8; + if (uVar34 < uVar8) { + uVar7 = uVar34; + } + uVar34 = uVar7; + if ((uVar7 != 0) && (*pfVar33 = *pfVar19, uVar7 != 1)) { + /* try { // try from 003138ac to 004138cb has its CatchHandler @ 00313f40 */ + pfVar33[1] = pfVar19[1]; + if (uVar7 == 3) { + pfVar33[2] = pfVar19[2]; + } + else { + /* catch() { ... } // from try @ 0031382c with catch @ 00313ec0 */ + uVar34 = 2; + } + } + uVar26 = ((uVar8 - uVar7) - 4 >> 2) + 1; + uVar29 = 0; + iVar5 = uVar26 * 4; + pfVar20 = pfVar33 + uVar7; + pfVar30 = pfVar19 + uVar7; + do { + fVar37 = *pfVar30; + fVar38 = pfVar30[1]; + fVar13 = pfVar30[3]; + uVar29 = uVar29 + 1; + pfVar20[2] = pfVar30[2]; + pfVar20[3] = fVar13; + *pfVar20 = fVar37; + pfVar20[1] = fVar38; + pfVar20 = pfVar20 + 4; + pfVar30 = pfVar30 + 4; + } while (uVar29 < uVar26); + uVar34 = uVar34 + iVar5; + if (uVar8 - uVar7 != iVar5) { + uVar18 = -(ulong)(uVar34 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar34 << 2; + *(undefined4 *)((long)pfVar33 + uVar18) = *(undefined4 *)((long)pfVar19 + uVar18); + if (((int)(uVar34 + 1) < (int)uVar8) && + (*(undefined4 *)((long)pfVar33 + uVar18 + 4) = + *(undefined4 *)((long)pfVar19 + uVar18 + 4), (int)(uVar34 + 2) < (int)uVar8)) { + /* try { // try from 00313944 to 00413947 has its CatchHandler @ 00313f28 */ + *(undefined4 *)((long)pfVar33 + uVar18 + 8) = *(undefined4 *)((long)pfVar19 + uVar18 + 8); + } + } + } + } + uVar26 = uVar8 - 4 >> 2; + uVar34 = uVar26 + 1; + uVar7 = uVar34 * 4; + if ((int)(uVar8 - 3) < 1) { + uVar7 = 0; + } + uVar9 = uVar8 - uVar7; + lVar35 = (long)(int)uVar7; + uVar29 = uVar7 + 1; + uVar1 = uVar7 + 2; + pfVar20 = pfVar33 + lVar35; + uVar3 = -((uint)((ulong)pfVar20 >> 2) & 3) & 3; + uVar4 = uVar9; + if (uVar3 < uVar9) { + uVar4 = uVar3; + } + uVar18 = -(ulong)(uVar29 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar29 << 2; + /* try { // try from 00313a04 to 00413a3f has its CatchHandler @ 00313e24 */ + uVar22 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + pfVar30 = (float *)((long)pfVar33 + uVar18); + pfVar2 = (float *)((long)pfVar33 + uVar22); + /* try { // try from 00313a60 to 00413a63 has its CatchHandler @ 00313f74 */ + uVar3 = ((uVar9 - uVar4) - 4 >> 2) + 1; + iVar5 = uVar3 * 4; + pfVar16 = pfVar19; +joined_r0x00313a78: + do { + pfVar32 = pfVar16; + iVar6 = iVar6 + -1; + if (iVar6 == 0) break; + pfVar19 = pfVar19 + uVar36; + pfVar16 = pfVar32 + uVar36; + if (0 < (int)(uVar8 - 3)) { + /* try { // try from 00313aa4 to 00413aa7 has its CatchHandler @ 00313f6c */ + if ((pfVar33 < pfVar19 + 0x10 && pfVar19 < pfVar33 + 0x10) || (uVar34 < 3)) { + pfVar25 = pfVar33; + pfVar28 = pfVar16 + 1; + do { + fVar37 = *pfVar28; + fVar38 = pfVar28[-1]; + if (*pfVar25 <= pfVar28[-1]) { + fVar38 = *pfVar25; + } + *pfVar25 = fVar38; + if (pfVar25[1] <= fVar37) { + fVar37 = pfVar25[1]; + } + pfVar25[1] = fVar37; + pfVar31 = pfVar28 + 4; + fVar37 = pfVar28[2]; + /* catch() { ... } // from try @ 00313a04 with catch @ 00313e24 */ + fVar38 = pfVar28[1]; + if (pfVar25[2] <= pfVar28[1]) { + fVar38 = pfVar25[2]; + } + pfVar25[2] = fVar38; + if (pfVar25[3] <= fVar37) { + fVar37 = pfVar25[3]; + } + pfVar25[3] = fVar37; + pfVar25 = pfVar25 + 4; + pfVar28 = pfVar31; + } while (pfVar31 != pfVar16 + (ulong)uVar26 * 4 + 5); + } + else { + uVar21 = 0; + pfVar25 = pfVar33; + pfVar28 = pfVar19; + pfVar31 = pfVar19; + do { + fVar40 = (float)((ulong)*(undefined8 *)(pfVar25 + 2) >> 0x20); + uVar12 = *(undefined8 *)pfVar25; + uVar21 = uVar21 + 1; + uVar11 = *(undefined8 *)(pfVar28 + 2); + uVar10 = *(undefined8 *)pfVar28; + fVar37 = *pfVar31; + fVar38 = pfVar31[1]; + fVar13 = pfVar31[3]; + pfVar25[2] = (float)((uint)pfVar25[2] ^ + ((uint)pfVar25[2] ^ (uint)pfVar31[2]) & + -(uint)((float)uVar11 < (float)*(undefined8 *)(pfVar25 + 2))); + pfVar25[3] = (float)((uint)fVar40 ^ + ((uint)fVar40 ^ (uint)fVar13) & + -(uint)((float)((ulong)uVar11 >> 0x20) < fVar40)); + *pfVar25 = (float)((uint)*pfVar25 ^ + ((uint)*pfVar25 ^ (uint)fVar37) & -(uint)((float)uVar10 < (float)uVar12) + ); + pfVar25[1] = (float)((uint)pfVar25[1] ^ + ((uint)pfVar25[1] ^ (uint)fVar38) & + -(uint)((float)((ulong)uVar10 >> 0x20) < + (float)((ulong)uVar12 >> 0x20))); + pfVar25 = pfVar25 + 4; + pfVar28 = pfVar28 + 4; + pfVar31 = pfVar31 + 4; + } while (uVar21 < uVar34); + } + } + if ((int)uVar7 < (int)uVar8) { + if ((pfVar32 + lVar35 + uVar36 < pfVar33 + lVar35 + 4 && + pfVar20 < pfVar32 + uVar36 + 4 + lVar35) || (uVar9 < 8)) { + lVar24 = 0; + do { + fVar37 = *(float *)((long)pfVar16 + lVar24 + lVar35 * 4); + if (*(float *)((long)pfVar20 + lVar24) <= fVar37) { + fVar37 = *(float *)((long)pfVar20 + lVar24); + } + *(float *)((long)pfVar20 + lVar24) = fVar37; + lVar24 = lVar24 + 4; + } while (lVar24 != ((ulong)((uVar8 - 1) - uVar7) + 1) * 4); + goto joined_r0x00313a78; + } + if (uVar4 == 0) { + uVar27 = (ulong)uVar7; + } + else { + fVar37 = pfVar16[lVar35]; + if (*pfVar20 <= pfVar16[lVar35]) { + fVar37 = *pfVar20; + } + *pfVar20 = fVar37; + if (uVar4 == 1) { + uVar27 = (ulong)uVar29; + } + else { + fVar38 = *pfVar30; + fVar37 = *(float *)((long)pfVar16 + uVar18); + if (fVar38 <= fVar37) { + fVar37 = fVar38; + } + *pfVar30 = fVar37; + if (uVar4 == 3) { + fVar38 = *pfVar2; + fVar37 = *(float *)((long)pfVar16 + uVar22); + if (fVar38 <= fVar37) { + fVar37 = fVar38; + } + uVar27 = (ulong)(uVar7 + 3); + *pfVar2 = fVar37; + } + else { + uVar27 = (ulong)uVar1; + } + } + } + if (2 < (uVar9 - 1) - uVar4) { + uVar21 = 0; + pfVar25 = pfVar33 + lVar35 + (ulong)uVar4; + pfVar28 = pfVar33 + (ulong)uVar4 + lVar35; + pfVar32 = pfVar32 + lVar35 + uVar36 + (ulong)uVar4; + do { + fVar39 = (float)((ulong)*(undefined8 *)(pfVar25 + 2) >> 0x20); + uVar10 = *(undefined8 *)pfVar25; + fVar37 = *pfVar25; + fVar38 = pfVar25[1]; + fVar14 = *pfVar25; + fVar15 = pfVar25[1]; + uVar21 = uVar21 + 1; + fVar41 = (float)((ulong)*(undefined8 *)(pfVar32 + 2) >> 0x20); + uVar11 = *(undefined8 *)pfVar32; + fVar13 = *pfVar32; + fVar40 = pfVar32[1]; + pfVar28[2] = (float)((uint)pfVar25[2] ^ + ((uint)pfVar25[2] ^ (uint)pfVar32[2]) & + -(uint)((float)*(undefined8 *)(pfVar32 + 2) < + (float)*(undefined8 *)(pfVar25 + 2))); + pfVar28[3] = (float)((uint)fVar39 ^ + ((uint)fVar39 ^ (uint)fVar41) & -(uint)(fVar41 < fVar39)); + *pfVar28 = (float)((uint)fVar37 ^ + ((uint)fVar14 ^ (uint)fVar13) & -(uint)((float)uVar11 < (float)uVar10)); + pfVar28[1] = (float)((uint)fVar38 ^ + ((uint)fVar15 ^ (uint)fVar40) & + -(uint)((float)((ulong)uVar11 >> 0x20) < + (float)((ulong)uVar10 >> 0x20))); + pfVar25 = pfVar25 + 4; + pfVar28 = pfVar28 + 4; + pfVar32 = pfVar32 + 4; + } while (uVar21 < uVar3); + uVar27 = (ulong)(uint)((int)uVar27 + iVar5); + if (uVar9 - uVar4 == iVar5) goto joined_r0x00313a78; + } + uVar23 = -(uVar27 >> 0x1f) & 0xfffffffc00000000 | uVar27 << 2; + fVar37 = *(float *)((long)pfVar16 + uVar23); + if (*(float *)((long)pfVar33 + uVar23) <= *(float *)((long)pfVar16 + uVar23)) { + fVar37 = *(float *)((long)pfVar33 + uVar23); + } + *(float *)((long)pfVar33 + uVar23) = fVar37; + if ((int)uVar27 + 1 < (int)uVar8) { + lVar24 = uVar23 + 4; + fVar37 = *(float *)((long)pfVar16 + lVar24); + if (*(float *)((long)pfVar33 + lVar24) <= *(float *)((long)pfVar16 + lVar24)) { + fVar37 = *(float *)((long)pfVar33 + lVar24); + } + *(float *)((long)pfVar33 + lVar24) = fVar37; + if ((int)uVar27 + 2 < (int)uVar8) { + lVar24 = uVar23 + 8; + fVar37 = *(float *)((long)pfVar16 + lVar24); + if (*(float *)((long)pfVar33 + lVar24) <= *(float *)((long)pfVar16 + lVar24)) { + fVar37 = *(float *)((long)pfVar33 + lVar24); + } + *(float *)((long)pfVar33 + lVar24) = fVar37; + } + } + } + } while( true ); + if (0 < (int)uVar8) { + /* try { // try from 00313c4c to 00413c4f has its CatchHandler @ 00313e84 */ + /* try { // try from 00313c5c to 00413c5f has its CatchHandler @ 00313f38 */ + if ((pfVar42 < pfVar33 + 4 && pfVar33 < pfVar42 + 4) || (uVar8 < 0xc)) { + lVar35 = 0; + do { + /* try { // try from 00313e80 to 00413e83 has its CatchHandler @ 00312fb0 */ + /* catch() { ... } // from try @ 00313c4c with catch @ 00313e84 */ + pfVar42[lVar35] = pfVar33[lVar35]; + lVar35 = lVar35 + 1; + } while ((int)lVar35 < (int)uVar8); + } + else { + uVar34 = -((uint)((ulong)pfVar33 >> 2) & 3) & 3; + if (uVar8 < uVar34) { + uVar34 = uVar8; + } + uVar36 = 0; + if (uVar34 != 0) { + *pfVar42 = *pfVar33; + if (uVar34 == 1) { + uVar36 = 1; + } + else { + pfVar42[1] = pfVar33[1]; + if (uVar34 == 3) { + uVar36 = 3; + pfVar42[2] = pfVar33[2]; + } + else { + uVar36 = 2; + } + } + } + uVar7 = ((uVar8 - uVar34) - 4 >> 2) + 1; + iVar5 = uVar7 * 4; + if (2 < (uVar8 - 1) - uVar34) { + uVar26 = 0; + pfVar19 = pfVar42 + uVar34; + pfVar20 = pfVar33 + uVar34; + do { + uVar10 = *(undefined8 *)pfVar20; + uVar26 = uVar26 + 1; + *(undefined8 *)(pfVar19 + 2) = *(undefined8 *)(pfVar20 + 2); + *(undefined8 *)pfVar19 = uVar10; + pfVar19 = pfVar19 + 4; + pfVar20 = pfVar20 + 4; + } while (uVar26 < uVar7); + uVar36 = (ulong)(uint)((int)uVar36 + iVar5); + if (iVar5 == uVar8 - uVar34) goto LAB_00313d64; + } + uVar18 = -(uVar36 >> 0x1f) & 0xfffffffc00000000 | uVar36 << 2; + /* try { // try from 00313d24 to 00413d27 has its CatchHandler @ 00313f30 */ + *(undefined4 *)((long)pfVar42 + uVar18) = *(undefined4 *)((long)pfVar33 + uVar18); + /* try { // try from 00313d38 to 00413d3b has its CatchHandler @ 00312fb0 */ + /* try { // try from 00313d44 to 00413df7 has its CatchHandler @ 00313f28 */ + if (((int)uVar36 + 1 < (int)uVar8) && + (*(undefined4 *)((long)pfVar42 + uVar18 + 4) = *(undefined4 *)((long)pfVar33 + uVar18 + 4), + (int)uVar36 + 2 < (int)uVar8)) { + *(undefined4 *)((long)pfVar42 + uVar18 + 8) = *(undefined4 *)((long)pfVar33 + uVar18 + 8); + } + } + } +LAB_00313d64: + if (bVar17) { + operator_delete__(pfVar33); + } + return; +} + + +================================================================== + +### FUNC 00313ed0 (1436 bytes) name=FUN_00313ed0 + +void FUN_00313ed0(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + double *pdVar10; + bool bVar11; + uint uVar12; + int iVar13; + ulong uVar14; + double *pdVar15; + double *pdVar16; + uint uVar17; + double *pdVar18; + float *pfVar19; + double *pdVar20; + uint uVar21; + float *pfVar22; + double *pdVar23; + float *pfVar24; + uint uVar25; + long lVar26; + ulong uVar27; + undefined8 uVar28; + double dVar29; + undefined8 uVar30; + double dVar31; + double dVar32; + double local_440 [136]; + + /* catch() { ... } // from try @ 00313374 with catch @ 00313ed0 */ + /* catch() { ... } // from try @ 003134b4 with catch @ 00313ee0 */ + pdVar23 = local_440; + iVar6 = (*(int **)(param_1 + 0x10))[1]; + iVar7 = **(int **)(param_1 + 0x10); + /* catch() { ... } // from try @ 00313104 with catch @ 00313f14 */ + uVar9 = iVar6 + (*param_1 >> 3 & 0x1ff) * iVar6; + uVar27 = (ulong)(int)uVar9; + /* catch() { ... } // from try @ 003130a8 with catch @ 00313f28 + catch() { ... } // from try @ 0031310c with catch @ 00313f28 + catch() { ... } // from try @ 00313320 with catch @ 00313f28 + catch() { ... } // from try @ 0031337c with catch @ 00313f28 + catch() { ... } // from try @ 003136bc with catch @ 00313f28 + catch() { ... } // from try @ 003137d0 with catch @ 00313f28 + catch() { ... } // from try @ 00313834 with catch @ 00313f28 + catch() { ... } // from try @ 00313944 with catch @ 00313f28 + catch() { ... } // from try @ 00313d44 with catch @ 00313f28 */ + if (uVar27 < 0x89) { + bVar11 = false; + } + else { + /* catch() { ... } // from try @ 00313060 with catch @ 00313f30 + catch() { ... } // from try @ 00313180 with catch @ 00313f30 + catch() { ... } // from try @ 00313778 with catch @ 00313f30 + catch() { ... } // from try @ 00313d24 with catch @ 00313f30 */ + uVar14 = uVar27 << 3; + /* catch() { ... } // from try @ 00313c5c with catch @ 00313f38 */ + if (0xfe0000000000000 < uVar27) { + uVar14 = 0xffffffffffffffff; + } + /* catch() { ... } // from try @ 003138ac with catch @ 00313f40 */ + pdVar15 = operator_new__(uVar14); + bVar11 = pdVar15 != pdVar23; + pdVar23 = pdVar15; + } + uVar27 = *(ulong *)(param_1 + 0x14); + pdVar15 = *(double **)(param_2 + 0x10); + /* catch() { ... } // from try @ 00313aa4 with catch @ 00313f6c */ + pfVar24 = *(float **)(param_1 + 4); + /* catch() { ... } // from try @ 00313a60 with catch @ 00313f74 */ + if (0 < (int)uVar9) { + /* catch() { ... } // from try @ 00313624 with catch @ 00313f7c */ + uVar12 = (uint)((ulong)pdVar23 >> 3) & 1; + if (uVar9 < uVar12) { + uVar12 = uVar9; + } + uVar1 = uVar9; + if (((int)uVar9 < 5) || (uVar17 = 0, uVar1 = uVar12, uVar12 != 0)) { + uVar12 = uVar1; + /* catch() { ... } // from try @ 00313614 with catch @ 00313f98 */ + *pdVar23 = (double)*pfVar24; + uVar17 = uVar12; + /* catch() { ... } // from try @ 00313464 with catch @ 00313fb0 */ + if ((uVar12 != 1) && (pdVar23[1] = (double)pfVar24[1], uVar12 != 2)) { + /* catch() { ... } // from try @ 00313494 with catch @ 00313fb8 */ + pdVar23[2] = (double)pfVar24[2]; + if (uVar12 == 4) { + pdVar23[3] = (double)pfVar24[3]; + } + else { + uVar17 = 3; + } + } + /* catch() { ... } // from try @ 00314030 with catch @ 00313fe0 + catch() { ... } // from try @ 0031439c with catch @ 00313fe0 + catch() { ... } // from try @ 003145c8 with catch @ 00313fe0 */ + if (uVar9 == uVar12) goto LAB_00314094; + } + uVar1 = ((uVar9 - uVar12) - 4 >> 2) + 1; + iVar6 = uVar1 * 4; + if (2 < (uVar9 - 1) - uVar12) { + uVar21 = 0; + pdVar16 = pdVar23 + uVar12; + pfVar19 = pfVar24 + uVar12; + do { + uVar30 = *(undefined8 *)(pfVar19 + 2); + uVar28 = *(undefined8 *)pfVar19; + uVar21 = uVar21 + 1; + /* try { // try from 00314030 to 00414033 has its CatchHandler @ 00313fe0 */ + pdVar16[1] = (double)(float)((ulong)uVar28 >> 0x20); + *pdVar16 = (double)(float)uVar28; + pdVar16[3] = (double)(float)((ulong)uVar30 >> 0x20); + pdVar16[2] = (double)(float)uVar30; + pdVar16 = pdVar16 + 4; + pfVar19 = pfVar19 + 4; + } while (uVar21 < uVar1); + uVar17 = uVar17 + iVar6; + if (uVar9 - uVar12 == iVar6) goto LAB_00314094; + } + /* try { // try from 0031404c to 0041404f has its CatchHandler @ 003145f0 */ + iVar6 = uVar17 + 1; + pdVar23[(int)uVar17] = (double)pfVar24[(int)uVar17]; + if (iVar6 < (int)uVar9) { + iVar2 = uVar17 + 2; + pdVar23[iVar6] = (double)pfVar24[iVar6]; + if (iVar2 < (int)uVar9) { + pdVar23[iVar2] = (double)pfVar24[iVar2]; + } + } + } +LAB_00314094: + uVar12 = (uVar9 - 4 >> 2) + 1; + iVar6 = uVar12 * 4; + if ((int)(uVar9 - 3) < 1) { + iVar6 = 0; + } + iVar2 = iVar6 + 1; + uVar17 = uVar9 - iVar6; + lVar26 = (long)iVar6; + iVar3 = iVar6 + 2; + pdVar16 = pdVar23 + lVar26; + iVar4 = iVar6 + 3; + uVar1 = (uint)((ulong)pdVar16 >> 3) & 1; + if (uVar17 < uVar1) { + uVar1 = uVar17; + } + /* try { // try from 00314120 to 00414123 has its CatchHandler @ 003145e0 */ +joined_r0x00314134: + do { + pfVar19 = pfVar24; + iVar7 = iVar7 + -1; + if (iVar7 == 0) { + if (0 < (int)uVar9) { + /* try { // try from 00314328 to 0041432b has its CatchHandler @ 003145f0 */ + if ((pdVar15 < pdVar23 + 2 && pdVar23 < pdVar15 + 2) || (uVar9 < 0xe)) { + lVar26 = 0; + do { + pdVar15[lVar26] = pdVar23[lVar26]; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar9); + } + else { + uVar12 = (uint)((ulong)pdVar23 >> 3) & 1; + if (uVar9 < uVar12) { + uVar12 = uVar9; + } + if (uVar12 != 0) { + *pdVar15 = *pdVar23; + } + uVar1 = ((uVar9 - uVar12) - 2 >> 1) + 1; + iVar6 = uVar1 * 2; + uVar17 = 0; + pdVar16 = pdVar23 + uVar12; + pdVar18 = pdVar15 + uVar12; + do { + /* try { // try from 0031439c to 004143c7 has its CatchHandler @ 00313fe0 */ + dVar29 = *pdVar16; + uVar17 = uVar17 + 1; + pdVar18[1] = pdVar16[1]; + *pdVar18 = dVar29; + pdVar16 = pdVar16 + 2; + pdVar18 = pdVar18 + 2; + } while (uVar17 < uVar1); + uVar1 = iVar6 + (uint)(uVar12 != 0); + if (iVar6 != uVar9 - uVar12) { + uVar27 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar15 + uVar27) = *(undefined8 *)((long)pdVar23 + uVar27); + } + } + } + /* try { // try from 003143d0 to 004143d3 has its CatchHandler @ 003145f0 */ + if (bVar11) { + operator_delete__(pdVar23); + } + /* try { // try from 003143dc to 004143f3 has its CatchHandler @ 003145e8 */ + return; + } + pfVar24 = pfVar19 + (uVar27 >> 2); + if (0 < (int)(uVar9 - 3)) { + pdVar18 = pdVar23 + 2; + /* try { // try from 00314150 to 00414153 has its CatchHandler @ 003145cc */ + uVar21 = 0; + pdVar20 = pdVar23; + pfVar22 = pfVar24; + do { + uVar30 = *(undefined8 *)(pfVar22 + 2); + uVar28 = *(undefined8 *)pfVar22; + /* try { // try from 00314158 to 004141e7 has its CatchHandler @ 003145e0 */ + uVar21 = uVar21 + 1; + dVar31 = pdVar18[1]; + dVar29 = *pdVar18; + pdVar20[1] = pdVar20[1] + (double)(float)((ulong)uVar28 >> 0x20); + *pdVar20 = *pdVar20 + (double)(float)uVar28; + pdVar20 = pdVar20 + 4; + pdVar18[1] = dVar31 + (double)(float)((ulong)uVar30 >> 0x20); + *pdVar18 = dVar29 + (double)(float)uVar30; + pdVar18 = pdVar18 + 4; + pfVar22 = pfVar22 + 4; + } while (uVar21 < uVar12); + } + } while ((int)uVar9 <= iVar6); + uVar21 = uVar1; + if (uVar17 < 5) { + uVar21 = uVar17; + } + iVar13 = iVar6; + if (uVar21 != 0) goto code_r0x003141a0; + goto LAB_00314214; +code_r0x003141a0: + *pdVar16 = *pdVar16 + (double)pfVar24[lVar26]; + iVar13 = iVar2; + if (((uVar21 != 1) && + (pdVar23[iVar2] = pdVar23[iVar2] + (double)pfVar24[iVar2], iVar13 = iVar3, uVar21 != 2)) && + (pdVar23[iVar3] = pdVar23[iVar3] + (double)pfVar24[iVar3], iVar13 = iVar4, uVar21 == 4)) { + pdVar23[iVar4] = pdVar23[iVar4] + (double)pfVar24[iVar4]; + iVar13 = iVar6 + 4; + } + if (uVar21 != uVar17) { +LAB_00314214: + uVar5 = ((uVar17 - uVar21) - 4 >> 2) + 1; + iVar8 = uVar5 * 4; + /* try { // try from 00314238 to 0041423b has its CatchHandler @ 00314564 */ + if (2 < (uVar17 - 1) - uVar21) { + /* try { // try from 00314240 to 00414243 has its CatchHandler @ 003145e0 */ + uVar25 = 0; + pdVar18 = pdVar23 + (ulong)uVar21 + lVar26; + pfVar19 = pfVar19 + (ulong)uVar21 + (uVar27 >> 2) + lVar26; + pdVar20 = pdVar18; + do { + uVar30 = *(undefined8 *)(pfVar19 + 2); + uVar28 = *(undefined8 *)pfVar19; + pdVar10 = pdVar18 + 1; + dVar29 = *pdVar18; + dVar32 = pdVar18[3]; + dVar31 = pdVar18[2]; + uVar25 = uVar25 + 1; + pdVar18 = pdVar18 + 4; + pdVar20[1] = *pdVar10 + (double)(float)((ulong)uVar28 >> 0x20); + *pdVar20 = dVar29 + (double)(float)uVar28; + pdVar20[3] = (double)(float)((ulong)uVar30 >> 0x20) + dVar32; + pdVar20[2] = (double)(float)uVar30 + dVar31; + pfVar19 = pfVar19 + 4; + pdVar20 = pdVar20 + 4; + } while (uVar25 < uVar5); + iVar13 = iVar13 + iVar8; + if (iVar8 == uVar17 - uVar21) goto joined_r0x00314134; + } + iVar8 = iVar13 + 1; + /* try { // try from 003142b4 to 004142b7 has its CatchHandler @ 003145e8 */ + pdVar23[iVar13] = pdVar23[iVar13] + (double)pfVar24[iVar13]; + if (iVar8 < (int)uVar9) { + iVar13 = iVar13 + 2; + pdVar23[iVar8] = pdVar23[iVar8] + (double)pfVar24[iVar8]; + if (iVar13 < (int)uVar9) { + pdVar23[iVar13] = pdVar23[iVar13] + (double)pfVar24[iVar13]; + } + } + } + goto joined_r0x00314134; +} + + +================================================================== + +### FUNC 0031446c (2576 bytes) name=FUN_0031446c + +void FUN_0031446c(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + int iVar12; + ushort uVar13; + ushort uVar14; + ushort uVar15; + int iVar16; + int iVar17; + uint uVar18; + undefined1 auVar19 [14]; + undefined1 auVar20 [14]; + undefined1 auVar21 [14]; + undefined1 auVar22 [14]; + undefined1 auVar23 [14]; + undefined1 auVar24 [14]; + bool bVar25; + uint uVar26; + ulong uVar27; + double *pdVar28; + double *pdVar29; + uint uVar30; + double *pdVar31; + long lVar32; + double *pdVar33; + ushort *puVar34; + undefined1 (*pauVar35) [16]; + uint uVar36; + long lVar37; + ushort *puVar38; + uint uVar39; + uint uVar40; + double *pdVar41; + ulong uVar42; + ushort *puVar43; + double *pdVar44; + int iVar45; + double dVar46; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + ulong uVar50; + undefined1 auVar51 [16]; + undefined1 auVar52 [16]; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + undefined1 auVar55 [16]; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + long lVar59; + double dVar60; + double dVar61; + long lVar62; + undefined1 auVar63 [16]; + double dVar64; + double dVar65; + long lVar66; + long lVar67; + long lVar68; + long lVar69; + long lVar70; + long lVar71; + long lVar72; + double local_440 [136]; + + /* try { // try from 00314494 to 0041455f has its CatchHandler @ 003145e0 */ + pdVar31 = local_440; + iVar11 = (*(int **)(param_1 + 0x10))[1]; + iVar12 = **(int **)(param_1 + 0x10); + uVar18 = iVar11 + (*param_1 >> 3 & 0x1ff) * iVar11; + uVar42 = (ulong)(int)uVar18; + if (uVar42 < 0x89) { + /* try { // try from 00314e40 to 00414e43 has its CatchHandler @ 0031670c */ + bVar25 = false; + } + else { + uVar27 = uVar42 << 3; + if (0xfe0000000000000 < uVar42) { + uVar27 = 0xffffffffffffffff; + } + pdVar28 = operator_new__(uVar27); + bVar25 = pdVar28 != pdVar31; + pdVar31 = pdVar28; + } + uVar42 = *(ulong *)(param_1 + 0x14); + pdVar28 = *(double **)(param_2 + 0x10); + puVar34 = *(ushort **)(param_1 + 4); + if (0 < (int)uVar18) { + uVar26 = (uint)((ulong)pdVar31 >> 3) & 1; + if (uVar18 < uVar26) { + uVar26 = uVar18; + } + uVar1 = uVar18; + if (((int)uVar18 < 9) || (uVar30 = 0, uVar1 = uVar26, uVar26 != 0)) { + uVar26 = uVar1; + *pdVar31 = (double)*puVar34; + uVar30 = uVar26; + /* catch() { ... } // from try @ 00314238 with catch @ 00314564 */ + if (((uVar26 != 1) && + (((pdVar31[1] = (double)puVar34[1], uVar26 != 2 && + (pdVar31[2] = (double)puVar34[2], uVar26 != 3)) && + (pdVar31[3] = (double)puVar34[3], uVar26 != 4)))) && + ((pdVar31[4] = (double)puVar34[4], uVar26 != 5 && + (pdVar31[5] = (double)puVar34[5], uVar26 != 6)))) { + pdVar31[6] = (double)puVar34[6]; + if (uVar26 == 8) { + /* try { // try from 003145c8 to 004145cb has its CatchHandler @ 00313fe0 */ + /* catch() { ... } // from try @ 00314150 with catch @ 003145cc */ + pdVar31[7] = (double)puVar34[7]; + } + else { + uVar30 = 7; + } + } + if (uVar18 == uVar26) goto LAB_00314730; + } + /* catch() { ... } // from try @ 00314120 with catch @ 003145e0 + catch() { ... } // from try @ 00314158 with catch @ 003145e0 + catch() { ... } // from try @ 00314240 with catch @ 003145e0 + catch() { ... } // from try @ 00314494 with catch @ 003145e0 */ + /* catch() { ... } // from try @ 003142b4 with catch @ 003145e8 + catch() { ... } // from try @ 003143dc with catch @ 003145e8 */ + /* catch() { ... } // from try @ 0031404c with catch @ 003145f0 + catch() { ... } // from try @ 00314328 with catch @ 003145f0 + catch() { ... } // from try @ 003143d0 with catch @ 003145f0 */ + uVar1 = ((uVar18 - uVar26) - 8 >> 3) + 1; + iVar11 = uVar1 * 8; + /* catch() { ... } // from try @ 003166d4 with catch @ 00314600 */ + if (6 < (uVar18 - 1) - uVar26) { + uVar36 = 0; + pdVar29 = pdVar31 + uVar26; + puVar38 = puVar34 + uVar26; + do { + uVar36 = uVar36 + 1; + uVar50 = CONCAT26(0,CONCAT24(puVar38[1],(uint)*puVar38)); + auVar19._8_2_ = puVar38[2]; + auVar19._0_8_ = uVar50; + auVar19._10_2_ = 0; + auVar19._12_2_ = puVar38[3]; + uVar27 = CONCAT26(0,CONCAT24(puVar38[5],(uint)puVar38[4])); + auVar20._8_2_ = puVar38[6]; + auVar20._0_8_ = uVar27; + auVar20._10_2_ = 0; + auVar20._12_2_ = puVar38[7]; + auVar56._0_8_ = uVar50 & 0xffffffff; + auVar56._8_2_ = puVar38[1]; + auVar56._10_6_ = 0; + auVar51._0_8_ = (ulong)auVar19._8_6_ & 0xffffffff; + auVar51._8_6_ = auVar19._8_6_ >> 0x20; + auVar51._14_2_ = 0; + auVar54._0_8_ = uVar27 & 0xffffffff; + auVar54._8_2_ = puVar38[5]; + auVar54._10_6_ = 0; + auVar47._0_8_ = (ulong)auVar20._8_6_ & 0xffffffff; + auVar47._8_6_ = auVar20._8_6_ >> 0x20; + auVar47._14_2_ = 0; + auVar56 = NEON_scvtf(auVar56,8); + pdVar29[1] = auVar56._8_8_; + *pdVar29 = auVar56._0_8_; + auVar51 = NEON_scvtf(auVar51,8); + auVar54 = NEON_scvtf(auVar54,8); + auVar47 = NEON_scvtf(auVar47,8); + pdVar29[3] = auVar51._8_8_; + pdVar29[2] = auVar51._0_8_; + pdVar29[5] = auVar54._8_8_; + pdVar29[4] = auVar54._0_8_; + pdVar29[7] = auVar47._8_8_; + pdVar29[6] = auVar47._0_8_; + pdVar29 = pdVar29 + 8; + puVar38 = puVar38 + 8; + } while (uVar36 < uVar1); + uVar30 = uVar30 + iVar11; + if (uVar18 - uVar26 == iVar11) goto LAB_00314730; + } + iVar11 = uVar30 + 1; + pdVar31[(int)uVar30] = (double)puVar34[(int)uVar30]; + if (iVar11 < (int)uVar18) { + iVar2 = uVar30 + 2; + pdVar31[iVar11] = (double)puVar34[iVar11]; + if (iVar2 < (int)uVar18) { + iVar11 = uVar30 + 3; + pdVar31[iVar2] = (double)puVar34[iVar2]; + if (iVar11 < (int)uVar18) { + iVar2 = uVar30 + 4; + pdVar31[iVar11] = (double)puVar34[iVar11]; + if (iVar2 < (int)uVar18) { + iVar11 = uVar30 + 5; + pdVar31[iVar2] = (double)puVar34[iVar2]; + if (iVar11 < (int)uVar18) { + iVar2 = uVar30 + 6; + pdVar31[iVar11] = (double)puVar34[iVar11]; + if (iVar2 < (int)uVar18) { + pdVar31[iVar2] = (double)puVar34[iVar2]; + } + } + } + } + } + } + } +LAB_00314730: + uVar1 = uVar18 - 4; + iVar11 = (uVar1 >> 2) + 1; + uVar26 = ((uVar1 >> 2) - 1 >> 1) + 1; + iVar16 = iVar11 * 4; + iVar2 = uVar26 * 8; + if (uVar1 < 4) { + iVar2 = 0; + } + if ((int)(uVar18 - 3) < 1) { + iVar16 = 0; + } + iVar3 = iVar16 + 1; + iVar4 = iVar16 + 2; + lVar37 = (long)iVar2; + lVar32 = (long)iVar16; + /* try { // try from 003147a0 to 004147a3 has its CatchHandler @ 00316d90 */ + iVar2 = iVar16 + 3; + lVar68 = NEON_shl((long)iVar3,1); + iVar5 = iVar16 + 4; + iVar6 = iVar16 + 5; + lVar67 = NEON_shl((long)iVar4,1); + iVar7 = iVar16 + 6; + iVar8 = iVar16 + 7; + lVar66 = NEON_shl((long)iVar2,1); + /* try { // try from 003147ec to 004147ef has its CatchHandler @ 00316d80 */ + /* try { // try from 003147f4 to 0041487f has its CatchHandler @ 00316d90 */ + pdVar29 = pdVar31 + lVar32; + uVar30 = (uint)((ulong)pdVar29 >> 3) & 1; + lVar59 = NEON_shl((long)iVar5,1); + uVar36 = uVar18 - iVar16; + lVar70 = NEON_shl((long)iVar6,1); + lVar62 = NEON_shl(uVar42 >> 1,1); + lVar71 = NEON_shl((long)iVar7,1); + if (uVar36 < uVar30) { + uVar30 = uVar36; + } + lVar69 = NEON_shl(lVar32,1); + lVar72 = NEON_shl((long)iVar8,1); +joined_r0x003148b4: + do { + puVar38 = puVar34; + iVar12 = iVar12 + -1; + if (iVar12 == 0) { + if (0 < (int)uVar18) { + if ((pdVar28 < pdVar31 + 2 && pdVar31 < pdVar28 + 2) || (uVar18 < 0xe)) { + lVar32 = 0; + do { + pdVar28[lVar32] = pdVar31[lVar32]; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < (int)uVar18); + } + else { + uVar26 = (uint)((ulong)pdVar31 >> 3) & 1; + if (uVar18 < uVar26) { + uVar26 = uVar18; + } + if (uVar26 != 0) { + *pdVar28 = *pdVar31; + } + uVar1 = ((uVar18 - uVar26) - 2 >> 1) + 1; + iVar11 = uVar1 * 2; + uVar30 = 0; + pdVar29 = pdVar31 + uVar26; + pdVar33 = pdVar28 + uVar26; + do { + dVar46 = *pdVar29; + uVar30 = uVar30 + 1; + pdVar33[1] = pdVar29[1]; + *pdVar33 = dVar46; + pdVar29 = pdVar29 + 2; + pdVar33 = pdVar33 + 2; + } while (uVar30 < uVar1); + uVar1 = iVar11 + (uint)(uVar26 != 0); + if (iVar11 != uVar18 - uVar26) { + uVar42 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar28 + uVar42) = *(undefined8 *)((long)pdVar31 + uVar42); + } + } + } + if (bVar25) { + operator_delete__(pdVar31); + } + return; + } + puVar34 = (ushort *)((long)puVar38 + lVar62); + /* try { // try from 003148c8 to 004148cb has its CatchHandler @ 00316e0c */ + if (0 < (int)(uVar18 - 3)) { + /* try { // try from 003148d0 to 0041491f has its CatchHandler @ 00316d90 */ + if (3 < uVar1) { + pdVar33 = pdVar31 + 2; + pdVar41 = pdVar31 + 4; + pauVar35 = (undefined1 (*) [16])(pdVar31 + 6); + uVar39 = 0; + puVar43 = puVar34; + pdVar44 = pdVar31; + do { + uVar39 = uVar39 + 1; + dVar46 = *pdVar33; + dVar60 = pdVar33[1]; + dVar61 = *pdVar41; + dVar64 = pdVar41[1]; + auVar47 = *pauVar35; + uVar50 = CONCAT26(0,CONCAT24(puVar43[1],(uint)*puVar43)); + auVar21._8_2_ = puVar43[2]; + auVar21._0_8_ = uVar50; + auVar21._10_2_ = 0; + auVar21._12_2_ = puVar43[3]; + uVar27 = CONCAT26(0,CONCAT24(puVar43[5],(uint)puVar43[4])); + auVar22._8_2_ = puVar43[6]; + auVar22._0_8_ = uVar27; + auVar22._10_2_ = 0; + auVar22._12_2_ = puVar43[7]; + auVar63._0_8_ = uVar50 & 0xffffffff; + auVar63._8_2_ = puVar43[1]; + auVar63._10_6_ = 0; + auVar52._0_8_ = (ulong)auVar21._8_6_ & 0xffffffff; + auVar52._8_6_ = auVar21._8_6_ >> 0x20; + auVar52._14_2_ = 0; + auVar48._0_8_ = (ulong)auVar22._8_6_ & 0xffffffff; + auVar48._8_6_ = auVar22._8_6_ >> 0x20; + auVar48._14_2_ = 0; + auVar63 = NEON_scvtf(auVar63,8); + auVar54 = NEON_scvtf(auVar52,8); + auVar58._8_2_ = puVar43[5]; + auVar58._0_8_ = uVar27 & 0xffffffff; + auVar58._10_6_ = 0; + auVar56 = NEON_scvtf(auVar58,8); + auVar51 = NEON_scvtf(auVar48,8); + pdVar44[1] = pdVar44[1] + auVar63._8_8_; + *pdVar44 = *pdVar44 + auVar63._0_8_; + /* try { // try from 0031494c to 0041494f has its CatchHandler @ 00316db8 */ + pdVar44 = pdVar44 + 8; + pdVar33[1] = dVar60 + auVar54._8_8_; + *pdVar33 = dVar46 + auVar54._0_8_; + /* try { // try from 00314954 to 00414983 has its CatchHandler @ 00316d90 */ + pdVar33 = pdVar33 + 8; + pdVar41[1] = dVar64 + auVar56._8_8_; + *pdVar41 = dVar61 + auVar56._0_8_; + pdVar41 = pdVar41 + 8; + *(double *)(*pauVar35 + 8) = auVar47._8_8_ + auVar51._8_8_; + *(double *)*pauVar35 = auVar47._0_8_ + auVar51._0_8_; + pauVar35 = pauVar35 + 4; + puVar43 = puVar43 + 8; + } while (uVar39 < uVar26); + if (iVar11 == uVar26 * 2) goto LAB_003149dc; + } + uVar13 = puVar34[lVar37 + 1]; + uVar14 = puVar34[lVar37 + 2]; + uVar15 = puVar34[lVar37 + 3]; + pdVar31[lVar37] = pdVar31[lVar37] + (double)puVar34[lVar37]; + pdVar31[lVar37 + 1] = (double)uVar13 + pdVar31[lVar37 + 1]; + /* try { // try from 003149c4 to 004149c7 has its CatchHandler @ 00316dc8 */ + /* try { // try from 003149cc to 00414bb3 has its CatchHandler @ 00316d90 */ + pdVar31[lVar37 + 2] = pdVar31[lVar37 + 2] + (double)uVar14; + pdVar31[lVar37 + 3] = (double)uVar15 + pdVar31[lVar37 + 3]; + } +LAB_003149dc: + } while ((int)uVar18 <= iVar16); + uVar39 = uVar30; + if (uVar36 < 9) { + uVar39 = uVar36; + } + iVar45 = iVar16; + if (uVar39 != 0) { + *pdVar29 = *pdVar29 + (double)*(ushort *)((long)puVar34 + lVar69); + iVar45 = iVar3; + if (((((uVar39 != 1) && + (pdVar31[iVar3] = pdVar31[iVar3] + (double)*(ushort *)((long)puVar34 + lVar68), + iVar45 = iVar4, uVar39 != 2)) && + (pdVar31[iVar4] = pdVar31[iVar4] + (double)*(ushort *)((long)puVar34 + lVar67), + iVar45 = iVar2, uVar39 != 3)) && + ((pdVar31[iVar2] = pdVar31[iVar2] + (double)*(ushort *)((long)puVar34 + lVar66), + iVar45 = iVar5, uVar39 != 4 && + (pdVar31[iVar5] = pdVar31[iVar5] + (double)*(ushort *)((long)puVar34 + lVar59), + iVar45 = iVar6, uVar39 != 5)))) && + ((pdVar31[iVar6] = pdVar31[iVar6] + (double)*(ushort *)((long)puVar34 + lVar70), + iVar45 = iVar7, uVar39 != 6 && + (pdVar31[iVar7] = pdVar31[iVar7] + (double)*(ushort *)((long)puVar34 + lVar71), + iVar45 = iVar8, uVar39 == 8)))) { + pdVar31[iVar8] = pdVar31[iVar8] + (double)*(ushort *)((long)puVar34 + lVar72); + iVar45 = iVar16 + 8; + } + if (uVar39 == uVar36) goto joined_r0x003148b4; + } + uVar9 = ((uVar36 - uVar39) - 8 >> 3) + 1; + iVar17 = uVar9 * 8; + if (6 < (uVar36 - 1) - uVar39) { + uVar40 = 0; + pdVar33 = pdVar31 + (ulong)uVar39 + lVar32; + puVar38 = puVar38 + (ulong)uVar39 + (uVar42 >> 1) + lVar32; + pdVar41 = pdVar33; + do { + pdVar44 = pdVar33 + 1; + dVar46 = *pdVar33; + dVar65 = pdVar33[3]; + dVar64 = pdVar33[2]; + auVar47 = *(undefined1 (*) [16])(pdVar33 + 4); + dVar61 = pdVar33[7]; + dVar60 = pdVar33[6]; + uVar50 = CONCAT26(0,CONCAT24(puVar38[1],(uint)*puVar38)); + auVar23._8_2_ = puVar38[2]; + auVar23._0_8_ = uVar50; + auVar23._10_2_ = 0; + auVar23._12_2_ = puVar38[3]; + uVar27 = CONCAT26(0,CONCAT24(puVar38[5],(uint)puVar38[4])); + auVar24._8_2_ = puVar38[6]; + auVar24._0_8_ = uVar27; + auVar24._10_2_ = 0; + auVar24._12_2_ = puVar38[7]; + uVar40 = uVar40 + 1; + pdVar33 = pdVar33 + 8; + auVar57._0_8_ = uVar50 & 0xffffffff; + auVar57._8_2_ = puVar38[1]; + auVar57._10_6_ = 0; + auVar53._0_8_ = (ulong)auVar23._8_6_ & 0xffffffff; + auVar53._8_6_ = auVar23._8_6_ >> 0x20; + auVar53._14_2_ = 0; + auVar55._0_8_ = uVar27 & 0xffffffff; + auVar55._8_2_ = puVar38[5]; + auVar55._10_6_ = 0; + auVar49._0_8_ = (ulong)auVar24._8_6_ & 0xffffffff; + auVar49._8_6_ = auVar24._8_6_ >> 0x20; + auVar49._14_2_ = 0; + auVar58 = NEON_scvtf(auVar57,8); + auVar54 = NEON_scvtf(auVar53,8); + auVar56 = NEON_scvtf(auVar55,8); + auVar51 = NEON_scvtf(auVar49,8); + pdVar41[1] = *pdVar44 + auVar58._8_8_; + *pdVar41 = dVar46 + auVar58._0_8_; + pdVar41[3] = auVar54._8_8_ + dVar65; + pdVar41[2] = auVar54._0_8_ + dVar64; + pdVar41[5] = auVar56._8_8_ + auVar47._8_8_; + pdVar41[4] = auVar56._0_8_ + auVar47._0_8_; + pdVar41[7] = auVar51._8_8_ + dVar61; + pdVar41[6] = auVar51._0_8_ + dVar60; + puVar38 = puVar38 + 8; + pdVar41 = pdVar41 + 8; + } while (uVar40 < uVar9); + iVar45 = iVar45 + iVar17; + if (iVar17 == uVar36 - uVar39) goto joined_r0x003148b4; + } + iVar17 = iVar45 + 1; + pdVar31[iVar45] = pdVar31[iVar45] + (double)puVar34[iVar45]; + if (iVar17 < (int)uVar18) { + /* try { // try from 00314c10 to 00414c13 has its CatchHandler @ 00316f68 */ + iVar10 = iVar45 + 2; + pdVar31[iVar17] = pdVar31[iVar17] + (double)puVar34[iVar17]; + if (iVar10 < (int)uVar18) { + iVar17 = iVar45 + 3; + pdVar31[iVar10] = pdVar31[iVar10] + (double)puVar34[iVar10]; + if (iVar17 < (int)uVar18) { + iVar10 = iVar45 + 4; + pdVar31[iVar17] = pdVar31[iVar17] + (double)puVar34[iVar17]; + if (iVar10 < (int)uVar18) { + iVar17 = iVar45 + 5; + pdVar31[iVar10] = pdVar31[iVar10] + (double)puVar34[iVar10]; + if (iVar17 < (int)uVar18) { + iVar45 = iVar45 + 6; + pdVar31[iVar17] = pdVar31[iVar17] + (double)puVar34[iVar17]; + if (iVar45 < (int)uVar18) { + pdVar31[iVar45] = pdVar31[iVar45] + (double)puVar34[iVar45]; + } + } + } + } + } + } + goto joined_r0x003148b4; +} + + +================================================================== + +### FUNC 00314e7c (2576 bytes) name=FUN_00314e7c + +void FUN_00314e7c(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + uint uVar9; + int iVar10; + int iVar11; + int iVar12; + short sVar13; + short sVar14; + short sVar15; + int iVar16; + int iVar17; + uint uVar18; + bool bVar19; + uint uVar20; + ulong uVar21; + double *pdVar22; + double *pdVar23; + uint uVar24; + double *pdVar25; + long lVar26; + double *pdVar27; + short *psVar28; + undefined1 (*pauVar29) [16]; + uint uVar30; + long lVar31; + short *psVar32; + uint uVar33; + uint uVar34; + double *pdVar35; + ulong uVar36; + short *psVar37; + double *pdVar38; + int iVar39; + double dVar40; + undefined1 auVar41 [16]; + undefined1 auVar42 [16]; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + long lVar52; + double dVar53; + double dVar54; + long lVar55; + undefined1 auVar56 [16]; + double dVar57; + double dVar58; + long lVar59; + long lVar60; + long lVar61; + long lVar62; + long lVar63; + long lVar64; + long lVar65; + double local_440 [136]; + + pdVar25 = local_440; + iVar11 = (*(int **)(param_1 + 0x10))[1]; + iVar12 = **(int **)(param_1 + 0x10); + uVar18 = iVar11 + (*param_1 >> 3 & 0x1ff) * iVar11; + uVar36 = (ulong)(int)uVar18; + if (uVar36 < 0x89) { + bVar19 = false; + } + else { + uVar21 = uVar36 << 3; + if (0xfe0000000000000 < uVar36) { + uVar21 = 0xffffffffffffffff; + } + pdVar22 = operator_new__(uVar21); + bVar19 = pdVar22 != pdVar25; + pdVar25 = pdVar22; + } + uVar36 = *(ulong *)(param_1 + 0x14); + pdVar22 = *(double **)(param_2 + 0x10); + psVar28 = *(short **)(param_1 + 4); + if (0 < (int)uVar18) { + uVar20 = (uint)((ulong)pdVar25 >> 3) & 1; + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + uVar1 = uVar18; + if (((int)uVar18 < 9) || (uVar24 = 0, uVar1 = uVar20, uVar20 != 0)) { + uVar20 = uVar1; + *pdVar25 = (double)(int)*psVar28; + uVar24 = uVar20; + if (((uVar20 != 1) && + (((pdVar25[1] = (double)(int)psVar28[1], uVar20 != 2 && + (pdVar25[2] = (double)(int)psVar28[2], uVar20 != 3)) && + (pdVar25[3] = (double)(int)psVar28[3], uVar20 != 4)))) && + ((pdVar25[4] = (double)(int)psVar28[4], uVar20 != 5 && + (pdVar25[5] = (double)(int)psVar28[5], uVar20 != 6)))) { + pdVar25[6] = (double)(int)psVar28[6]; + if (uVar20 == 8) { + pdVar25[7] = (double)(int)psVar28[7]; + } + else { + uVar24 = 7; + } + } + if (uVar18 == uVar20) goto LAB_00315140; + } + uVar1 = ((uVar18 - uVar20) - 8 >> 3) + 1; + iVar11 = uVar1 * 8; + if (6 < (uVar18 - 1) - uVar20) { + uVar30 = 0; + pdVar23 = pdVar25 + uVar20; + psVar32 = psVar28 + uVar20; + do { + uVar30 = uVar30 + 1; + auVar49._0_8_ = (long)(int)*psVar32; + auVar49._8_8_ = (long)(int)psVar32[1]; + auVar44._0_8_ = (long)(int)psVar32[2]; + auVar44._8_8_ = (long)(int)psVar32[3]; + auVar47._0_8_ = (long)(int)psVar32[4]; + auVar47._8_8_ = (long)(int)psVar32[5]; + /* try { // try from 00315054 to 00415057 has its CatchHandler @ 0031671c */ + auVar41._0_8_ = (long)(int)psVar32[6]; + auVar41._8_8_ = (long)(int)psVar32[7]; + auVar49 = NEON_scvtf(auVar49,8); + pdVar23[1] = auVar49._8_8_; + *pdVar23 = auVar49._0_8_; + auVar44 = NEON_scvtf(auVar44,8); + auVar47 = NEON_scvtf(auVar47,8); + auVar41 = NEON_scvtf(auVar41,8); + pdVar23[3] = auVar44._8_8_; + pdVar23[2] = auVar44._0_8_; + pdVar23[5] = auVar47._8_8_; + pdVar23[4] = auVar47._0_8_; + pdVar23[7] = auVar41._8_8_; + pdVar23[6] = auVar41._0_8_; + pdVar23 = pdVar23 + 8; + psVar32 = psVar32 + 8; + /* try { // try from 00315078 to 0041510f has its CatchHandler @ 00316604 */ + } while (uVar30 < uVar1); + uVar24 = uVar24 + iVar11; + if (uVar18 - uVar20 == iVar11) goto LAB_00315140; + } + iVar11 = uVar24 + 1; + pdVar25[(int)uVar24] = (double)(int)psVar28[(int)uVar24]; + if (iVar11 < (int)uVar18) { + iVar2 = uVar24 + 2; + pdVar25[iVar11] = (double)(int)psVar28[iVar11]; + if (iVar2 < (int)uVar18) { + iVar11 = uVar24 + 3; + pdVar25[iVar2] = (double)(int)psVar28[iVar2]; + if (iVar11 < (int)uVar18) { + iVar2 = uVar24 + 4; + pdVar25[iVar11] = (double)(int)psVar28[iVar11]; + if (iVar2 < (int)uVar18) { + iVar11 = uVar24 + 5; + pdVar25[iVar2] = (double)(int)psVar28[iVar2]; + if (iVar11 < (int)uVar18) { + iVar2 = uVar24 + 6; + /* try { // try from 00315128 to 0041512b has its CatchHandler @ 003166e8 */ + pdVar25[iVar11] = (double)(int)psVar28[iVar11]; + if (iVar2 < (int)uVar18) { + pdVar25[iVar2] = (double)(int)psVar28[iVar2]; + } + } + } + } + } + } + } +LAB_00315140: + uVar1 = uVar18 - 4; + iVar11 = (uVar1 >> 2) + 1; + uVar20 = ((uVar1 >> 2) - 1 >> 1) + 1; + iVar16 = iVar11 * 4; + iVar2 = uVar20 * 8; + if (uVar1 < 4) { + iVar2 = 0; + } + if ((int)(uVar18 - 3) < 1) { + iVar16 = 0; + } + iVar3 = iVar16 + 1; + iVar4 = iVar16 + 2; + /* try { // try from 00315198 to 004151db has its CatchHandler @ 00316604 */ + lVar31 = (long)iVar2; + lVar26 = (long)iVar16; + iVar2 = iVar16 + 3; + lVar61 = NEON_shl((long)iVar3,1); + iVar5 = iVar16 + 4; + iVar6 = iVar16 + 5; + lVar60 = NEON_shl((long)iVar4,1); + iVar7 = iVar16 + 6; + iVar8 = iVar16 + 7; + lVar59 = NEON_shl((long)iVar2,1); + pdVar23 = pdVar25 + lVar26; + /* try { // try from 0031524c to 0041524f has its CatchHandler @ 0031670c */ + uVar24 = (uint)((ulong)pdVar23 >> 3) & 1; + lVar52 = NEON_shl((long)iVar5,1); + uVar30 = uVar18 - iVar16; + lVar63 = NEON_shl((long)iVar6,1); + lVar55 = NEON_shl(uVar36 >> 1,1); + lVar64 = NEON_shl((long)iVar7,1); + if (uVar30 < uVar24) { + uVar24 = uVar30; + } + lVar62 = NEON_shl(lVar26,1); + lVar65 = NEON_shl((long)iVar8,1); +joined_r0x003152c4: + do { + psVar32 = psVar28; + iVar12 = iVar12 + -1; + if (iVar12 == 0) { + if (0 < (int)uVar18) { + if ((pdVar22 < pdVar25 + 2 && pdVar25 < pdVar22 + 2) || (uVar18 < 0xe)) { + lVar26 = 0; + do { + pdVar22[lVar26] = pdVar25[lVar26]; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < (int)uVar18); + } + else { + uVar20 = (uint)((ulong)pdVar25 >> 3) & 1; + if (uVar18 < uVar20) { + uVar20 = uVar18; + } + if (uVar20 != 0) { + *pdVar22 = *pdVar25; + } + uVar1 = ((uVar18 - uVar20) - 2 >> 1) + 1; + iVar11 = uVar1 * 2; + uVar24 = 0; + pdVar23 = pdVar25 + uVar20; + pdVar27 = pdVar22 + uVar20; + do { + dVar40 = *pdVar23; + uVar24 = uVar24 + 1; + pdVar27[1] = pdVar23[1]; + *pdVar27 = dVar40; + pdVar23 = pdVar23 + 2; + pdVar27 = pdVar27 + 2; + } while (uVar24 < uVar1); + uVar1 = iVar11 + (uint)(uVar20 != 0); + if (iVar11 != uVar18 - uVar20) { + uVar36 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + /* try { // try from 003157b4 to 00415aef has its CatchHandler @ 00316d54 */ + *(undefined8 *)((long)pdVar22 + uVar36) = *(undefined8 *)((long)pdVar25 + uVar36); + } + } + } + if (bVar19) { + operator_delete__(pdVar25); + } + return; + } + /* try { // try from 003152d0 to 004152d3 has its CatchHandler @ 00316714 */ + psVar28 = (short *)((long)psVar32 + lVar55); + if (0 < (int)(uVar18 - 3)) { + if (3 < uVar1) { + pdVar27 = pdVar25 + 2; + pdVar35 = pdVar25 + 4; + pauVar29 = (undefined1 (*) [16])(pdVar25 + 6); + uVar33 = 0; + psVar37 = psVar28; + pdVar38 = pdVar25; + do { + uVar33 = uVar33 + 1; + dVar40 = *pdVar27; + dVar53 = pdVar27[1]; + dVar54 = *pdVar35; + dVar57 = pdVar35[1]; + auVar41 = *pauVar29; + auVar56._0_8_ = (long)(int)*psVar37; + auVar56._8_8_ = (long)(int)psVar37[1]; + auVar45._0_8_ = (long)(int)psVar37[2]; + auVar45._8_8_ = (long)(int)psVar37[3]; + auVar42._0_8_ = (long)(int)psVar37[6]; + auVar42._8_8_ = (long)(int)psVar37[7]; + auVar56 = NEON_scvtf(auVar56,8); + auVar47 = NEON_scvtf(auVar45,8); + auVar51._8_8_ = (long)(int)psVar37[5]; + auVar51._0_8_ = (long)(int)psVar37[4]; + auVar49 = NEON_scvtf(auVar51,8); + auVar44 = NEON_scvtf(auVar42,8); + /* try { // try from 00315354 to 00415357 has its CatchHandler @ 00316c24 */ + pdVar38[1] = pdVar38[1] + auVar56._8_8_; + *pdVar38 = *pdVar38 + auVar56._0_8_; + pdVar38 = pdVar38 + 8; + pdVar27[1] = dVar53 + auVar47._8_8_; + *pdVar27 = dVar40 + auVar47._0_8_; + pdVar27 = pdVar27 + 8; + pdVar35[1] = dVar57 + auVar49._8_8_; + *pdVar35 = dVar54 + auVar49._0_8_; + pdVar35 = pdVar35 + 8; + *(double *)(*pauVar29 + 8) = auVar41._8_8_ + auVar44._8_8_; + *(double *)*pauVar29 = auVar41._0_8_ + auVar44._0_8_; + pauVar29 = pauVar29 + 4; + psVar37 = psVar37 + 8; + } while (uVar33 < uVar20); + if (iVar11 == uVar20 * 2) goto LAB_003153ec; + } + sVar13 = psVar28[lVar31 + 1]; + sVar14 = psVar28[lVar31 + 2]; + sVar15 = psVar28[lVar31 + 3]; + pdVar25[lVar31] = pdVar25[lVar31] + (double)(int)psVar28[lVar31]; + pdVar25[lVar31 + 1] = (double)(int)sVar13 + pdVar25[lVar31 + 1]; + pdVar25[lVar31 + 2] = pdVar25[lVar31 + 2] + (double)(int)sVar14; + pdVar25[lVar31 + 3] = (double)(int)sVar15 + pdVar25[lVar31 + 3]; + } +LAB_003153ec: + } while ((int)uVar18 <= iVar16); + uVar33 = uVar24; + if (uVar30 < 9) { + uVar33 = uVar30; + } + iVar39 = iVar16; + if (uVar33 != 0) { + *pdVar23 = *pdVar23 + (double)(int)*(short *)((long)psVar28 + lVar62); + iVar39 = iVar3; + if (((((uVar33 != 1) && + (pdVar25[iVar3] = pdVar25[iVar3] + (double)(int)*(short *)((long)psVar28 + lVar61), + iVar39 = iVar4, uVar33 != 2)) && + (pdVar25[iVar4] = pdVar25[iVar4] + (double)(int)*(short *)((long)psVar28 + lVar60), + iVar39 = iVar2, uVar33 != 3)) && + ((pdVar25[iVar2] = pdVar25[iVar2] + (double)(int)*(short *)((long)psVar28 + lVar59), + iVar39 = iVar5, uVar33 != 4 && + (pdVar25[iVar5] = pdVar25[iVar5] + (double)(int)*(short *)((long)psVar28 + lVar52), + iVar39 = iVar6, uVar33 != 5)))) && + ((pdVar25[iVar6] = pdVar25[iVar6] + (double)(int)*(short *)((long)psVar28 + lVar63), + iVar39 = iVar7, uVar33 != 6 && + (pdVar25[iVar7] = pdVar25[iVar7] + (double)(int)*(short *)((long)psVar28 + lVar64), + iVar39 = iVar8, uVar33 == 8)))) { + pdVar25[iVar8] = pdVar25[iVar8] + (double)(int)*(short *)((long)psVar28 + lVar65); + iVar39 = iVar16 + 8; + } + if (uVar33 == uVar30) goto joined_r0x003152c4; + } + uVar9 = ((uVar30 - uVar33) - 8 >> 3) + 1; + iVar17 = uVar9 * 8; + if (6 < (uVar30 - 1) - uVar33) { + uVar34 = 0; + pdVar27 = pdVar25 + (ulong)uVar33 + lVar26; + psVar32 = psVar32 + (ulong)uVar33 + (uVar36 >> 1) + lVar26; + pdVar35 = pdVar27; + do { + pdVar38 = pdVar27 + 1; + dVar40 = *pdVar27; + dVar58 = pdVar27[3]; + dVar57 = pdVar27[2]; + auVar41 = *(undefined1 (*) [16])(pdVar27 + 4); + dVar54 = pdVar27[7]; + dVar53 = pdVar27[6]; + uVar34 = uVar34 + 1; + pdVar27 = pdVar27 + 8; + auVar50._0_8_ = (long)(int)*psVar32; + auVar50._8_8_ = (long)(int)psVar32[1]; + auVar46._0_8_ = (long)(int)psVar32[2]; + auVar46._8_8_ = (long)(int)psVar32[3]; + auVar48._0_8_ = (long)(int)psVar32[4]; + auVar48._8_8_ = (long)(int)psVar32[5]; + auVar43._0_8_ = (long)(int)psVar32[6]; + auVar43._8_8_ = (long)(int)psVar32[7]; + auVar51 = NEON_scvtf(auVar50,8); + auVar47 = NEON_scvtf(auVar46,8); + auVar49 = NEON_scvtf(auVar48,8); + auVar44 = NEON_scvtf(auVar43,8); + pdVar35[1] = *pdVar38 + auVar51._8_8_; + *pdVar35 = dVar40 + auVar51._0_8_; + pdVar35[3] = auVar47._8_8_ + dVar58; + pdVar35[2] = auVar47._0_8_ + dVar57; + pdVar35[5] = auVar49._8_8_ + auVar41._8_8_; + pdVar35[4] = auVar49._0_8_ + auVar41._0_8_; + pdVar35[7] = auVar44._8_8_ + dVar54; + pdVar35[6] = auVar44._0_8_ + dVar53; + psVar32 = psVar32 + 8; + pdVar35 = pdVar35 + 8; + } while (uVar34 < uVar9); + iVar39 = iVar39 + iVar17; + /* try { // try from 003155ec to 004155ef has its CatchHandler @ 00316e78 */ + if (iVar17 == uVar30 - uVar33) goto joined_r0x003152c4; + } + iVar17 = iVar39 + 1; + /* try { // try from 00315610 to 00415613 has its CatchHandler @ 00316e70 */ + pdVar25[iVar39] = pdVar25[iVar39] + (double)(int)psVar28[iVar39]; + if (iVar17 < (int)uVar18) { + iVar10 = iVar39 + 2; + pdVar25[iVar17] = pdVar25[iVar17] + (double)(int)psVar28[iVar17]; + if (iVar10 < (int)uVar18) { + iVar17 = iVar39 + 3; + pdVar25[iVar10] = pdVar25[iVar10] + (double)(int)psVar28[iVar10]; + if (iVar17 < (int)uVar18) { + /* try { // try from 00315670 to 00415673 has its CatchHandler @ 00316e68 */ + iVar10 = iVar39 + 4; + pdVar25[iVar17] = pdVar25[iVar17] + (double)(int)psVar28[iVar17]; + if (iVar10 < (int)uVar18) { + iVar17 = iVar39 + 5; + /* try { // try from 003156ac to 004156af has its CatchHandler @ 00316fd8 */ + pdVar25[iVar10] = pdVar25[iVar10] + (double)(int)psVar28[iVar10]; + if (iVar17 < (int)uVar18) { + iVar39 = iVar39 + 6; + pdVar25[iVar17] = pdVar25[iVar17] + (double)(int)psVar28[iVar17]; + if (iVar39 < (int)uVar18) { + pdVar25[iVar39] = pdVar25[iVar39] + (double)(int)psVar28[iVar39]; + } + } + } + } + } + } + goto joined_r0x003152c4; +} + + +================================================================== + +### FUNC 0031588c (1392 bytes) name=FUN_0031588c + +void FUN_0031588c(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + double *pdVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + double *pdVar15; + bool bVar16; + ulong uVar17; + double *pdVar18; + double *pdVar19; + uint uVar20; + double *pdVar21; + long lVar22; + double *pdVar23; + uint uVar24; + double *pdVar25; + double *pdVar26; + double *pdVar27; + uint uVar28; + double *pdVar29; + double *pdVar30; + ulong uVar31; + long lVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double *pdVar41; + double adStack_440 [136]; + + pdVar30 = adStack_440; + iVar5 = (*(int **)(param_1 + 0x10))[1]; + iVar6 = **(int **)(param_1 + 0x10); + uVar7 = iVar5 + (*param_1 >> 3 & 0x1ff) * iVar5; + uVar31 = (ulong)(int)uVar7; + if (uVar31 < 0x89) { + bVar16 = false; + } + else { + uVar17 = uVar31 << 3; + if (0xfe0000000000000 < uVar31) { + uVar17 = 0xffffffffffffffff; + } + pdVar18 = operator_new__(uVar17); + bVar16 = pdVar18 != pdVar30; + pdVar30 = pdVar18; + } + pdVar41 = *(double **)(param_2 + 0x10); + pdVar18 = *(double **)(param_1 + 4); + uVar31 = *(ulong *)(param_1 + 0x14) >> 3; + if (0 < (int)uVar7) { + if ((pdVar18 < pdVar30 + 2 && pdVar30 < pdVar18 + 2) || (uVar7 < 0xe)) { + /* try { // try from 00315de0 to 00415de3 has its CatchHandler @ 00317004 */ + lVar32 = 0; + do { + pdVar30[lVar32] = pdVar18[lVar32]; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < (int)uVar7); + } + else { + uVar1 = (uint)((ulong)pdVar18 >> 3) & 1; + uVar2 = uVar7; + if (uVar1 < uVar7) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + *pdVar30 = *pdVar18; + } + uVar1 = ((uVar7 - uVar2) - 2 >> 1) + 1; + uVar20 = 0; + iVar5 = uVar1 * 2; + pdVar19 = pdVar30 + uVar2; + pdVar26 = pdVar18 + uVar2; + do { + dVar33 = *pdVar26; + uVar20 = uVar20 + 1; + pdVar19[1] = pdVar26[1]; + *pdVar19 = dVar33; + pdVar19 = pdVar19 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar20 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar5; + if (uVar7 - uVar2 != iVar5) { + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar30 + uVar17) = *(undefined8 *)((long)pdVar18 + uVar17); + } + } + } + uVar20 = uVar7 - 4 >> 2; + uVar2 = uVar20 + 1; + uVar1 = uVar2 * 4; + if ((int)(uVar7 - 3) < 1) { + uVar1 = 0; + } + uVar8 = uVar7 - uVar1; + lVar32 = (long)(int)uVar1; + pdVar19 = pdVar30 + lVar32; + uVar3 = (uint)((ulong)pdVar19 >> 3) & 1; + uVar4 = uVar8; + if (uVar3 < uVar8) { + uVar4 = uVar3; + } + iVar9 = uVar8 - uVar4; + uVar3 = (iVar9 - 2U >> 1) + 1; + iVar5 = uVar3 * 2; + pdVar26 = pdVar18; +joined_r0x00315aa4: + while( true ) { + do { + pdVar29 = pdVar26; + iVar6 = iVar6 + -1; + if (iVar6 == 0) { + if (0 < (int)uVar7) { + if ((pdVar41 < pdVar30 + 2 && pdVar30 < pdVar41 + 2) || (uVar7 < 0xe)) { + lVar32 = 0; + do { + pdVar41[lVar32] = pdVar30[lVar32]; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < (int)uVar7); + } + else { + uVar2 = (uint)((ulong)pdVar30 >> 3) & 1; + if (uVar7 < uVar2) { + uVar2 = uVar7; + } + if (uVar2 != 0) { + *pdVar41 = *pdVar30; + } + uVar1 = ((uVar7 - uVar2) - 2 >> 1) + 1; + iVar5 = uVar1 * 2; + uVar20 = 0; + pdVar18 = pdVar41 + uVar2; + pdVar19 = pdVar30 + uVar2; + do { + dVar33 = *pdVar19; + uVar20 = uVar20 + 1; + pdVar18[1] = pdVar19[1]; + *pdVar18 = dVar33; + pdVar18 = pdVar18 + 2; + pdVar19 = pdVar19 + 2; + } while (uVar20 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar5; + if (iVar5 != uVar7 - uVar2) { + uVar31 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar41 + uVar31) = *(undefined8 *)((long)pdVar30 + uVar31); + } + } + } + if (bVar16) { + operator_delete__(pdVar30); + } + return; + } + pdVar18 = pdVar18 + uVar31; + pdVar26 = pdVar29 + uVar31; + if (0 < (int)(uVar7 - 3)) { + if ((pdVar30 < pdVar18 + 8 && pdVar18 < pdVar30 + 8) || (uVar2 < 7)) { + pdVar23 = pdVar30; + pdVar21 = pdVar26 + 1; + do { + dVar33 = *pdVar21; + dVar36 = pdVar21[-1]; + if (*pdVar23 <= pdVar21[-1]) { + dVar36 = *pdVar23; + } + *pdVar23 = dVar36; + if (pdVar23[1] <= dVar33) { + dVar33 = pdVar23[1]; + } + pdVar23[1] = dVar33; + pdVar25 = pdVar21 + 4; + dVar33 = pdVar21[2]; + dVar36 = pdVar21[1]; + if (pdVar23[2] <= pdVar21[1]) { + dVar36 = pdVar23[2]; + } + pdVar23[2] = dVar36; + if (pdVar23[3] <= dVar33) { + dVar33 = pdVar23[3]; + } + pdVar23[3] = dVar33; + pdVar23 = pdVar23 + 4; + pdVar21 = pdVar25; + } while (pdVar25 != pdVar26 + (ulong)uVar20 * 4 + 5); + } + else { + pdVar23 = pdVar30 + 2; + uVar28 = 0; + pdVar21 = pdVar18; + pdVar25 = pdVar18; + pdVar27 = pdVar30; + do { + pdVar10 = pdVar21 + 1; + dVar38 = *pdVar21; + dVar40 = pdVar23[1]; + dVar39 = *pdVar23; + dVar12 = *pdVar23; + dVar13 = pdVar23[1]; + dVar11 = *pdVar23; + dVar35 = pdVar23[1]; + uVar28 = uVar28 + 1; + dVar37 = pdVar21[3]; + dVar34 = pdVar21[2]; + dVar14 = *pdVar25; + pdVar15 = pdVar25 + 1; + pdVar21 = pdVar21 + 4; + dVar33 = pdVar25[2]; + dVar36 = pdVar25[3]; + pdVar25 = pdVar25 + 4; + pdVar27[1] = (double)((ulong)pdVar27[1] ^ + ((ulong)pdVar27[1] ^ (ulong)*pdVar15) & + -(ulong)(*pdVar10 < pdVar27[1])); + *pdVar27 = (double)((ulong)*pdVar27 ^ + ((ulong)*pdVar27 ^ (ulong)dVar14) & -(ulong)(dVar38 < *pdVar27)); + pdVar27 = pdVar27 + 4; + pdVar23[1] = (double)((ulong)dVar13 ^ + ((ulong)dVar35 ^ (ulong)dVar36) & -(ulong)(dVar37 < dVar40)); + *pdVar23 = (double)((ulong)dVar12 ^ + ((ulong)dVar11 ^ (ulong)dVar33) & -(ulong)(dVar34 < dVar39)); + /* try { // try from 00315b3c to 00415d0b has its CatchHandler @ 00316e60 */ + pdVar23 = pdVar23 + 4; + } while (uVar28 < uVar2); + } + } + } while ((int)uVar7 <= (int)uVar1); + if ((pdVar30 + lVar32 + 2 <= pdVar29 + lVar32 + uVar31 || + pdVar29 + uVar31 + 2 + lVar32 <= pdVar19) && (6 < uVar8)) break; + lVar22 = 0; + do { + dVar33 = *(double *)((long)pdVar26 + lVar22 + lVar32 * 8); + if (*(double *)((long)pdVar19 + lVar22) <= dVar33) { + dVar33 = *(double *)((long)pdVar19 + lVar22); + } + *(double *)((long)pdVar19 + lVar22) = dVar33; + lVar22 = lVar22 + 8; + } while (lVar22 != ((ulong)((uVar7 - 1) - uVar1) + 1) * 8); + } + uVar28 = uVar1; + if (uVar4 != 0) { + dVar33 = pdVar26[lVar32]; + if (*pdVar19 <= pdVar26[lVar32]) { + dVar33 = *pdVar19; + } + *pdVar19 = dVar33; + uVar28 = uVar1 + 1; + } + if (iVar9 != 1) goto code_r0x00315b9c; + goto LAB_00315bd8; +code_r0x00315b9c: + uVar24 = 0; + pdVar23 = pdVar30 + lVar32 + (ulong)uVar4; + pdVar21 = pdVar30 + (ulong)uVar4 + lVar32; + pdVar29 = pdVar29 + lVar32 + uVar31 + (ulong)uVar4; + do { + dVar35 = *pdVar23; + dVar11 = *pdVar23; + dVar36 = *pdVar23; + uVar24 = uVar24 + 1; + dVar33 = *pdVar29; + pdVar21[1] = (double)((ulong)pdVar23[1] ^ + ((ulong)pdVar23[1] ^ (ulong)pdVar29[1]) & -(ulong)(pdVar29[1] < pdVar23[1]) + ); + *pdVar21 = (double)((ulong)dVar11 ^ ((ulong)dVar36 ^ (ulong)dVar33) & -(ulong)(dVar33 < dVar35)) + ; + pdVar23 = pdVar23 + 2; + pdVar21 = pdVar21 + 2; + pdVar29 = pdVar29 + 2; + } while (uVar24 < uVar3); + uVar28 = uVar28 + iVar5; + if (iVar9 != iVar5) { +LAB_00315bd8: + uVar17 = -(ulong)(uVar28 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar28 << 3; + dVar33 = *(double *)((long)pdVar26 + uVar17); + if (*(double *)((long)pdVar30 + uVar17) <= *(double *)((long)pdVar26 + uVar17)) { + dVar33 = *(double *)((long)pdVar30 + uVar17); + } + *(double *)((long)pdVar30 + uVar17) = dVar33; + } + goto joined_r0x00315aa4; +} + + +================================================================== + +### FUNC 00315dfc (1392 bytes) name=FUN_00315dfc + +void FUN_00315dfc(uint *param_1,long param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint uVar8; + int iVar9; + double *pdVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + double *pdVar15; + bool bVar16; + ulong uVar17; + double *pdVar18; + double *pdVar19; + uint uVar20; + double *pdVar21; + long lVar22; + double *pdVar23; + uint uVar24; + double *pdVar25; + double *pdVar26; + double *pdVar27; + uint uVar28; + double *pdVar29; + double *pdVar30; + ulong uVar31; + long lVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double dVar39; + double dVar40; + double *pdVar41; + double adStack_440 [136]; + + pdVar30 = adStack_440; + iVar5 = (*(int **)(param_1 + 0x10))[1]; + iVar6 = **(int **)(param_1 + 0x10); + uVar7 = iVar5 + (*param_1 >> 3 & 0x1ff) * iVar5; + uVar31 = (ulong)(int)uVar7; + if (uVar31 < 0x89) { + bVar16 = false; + } + else { + uVar17 = uVar31 << 3; + if (0xfe0000000000000 < uVar31) { + uVar17 = 0xffffffffffffffff; + } + pdVar18 = operator_new__(uVar17); + bVar16 = pdVar18 != pdVar30; + pdVar30 = pdVar18; + } + pdVar41 = *(double **)(param_2 + 0x10); + pdVar18 = *(double **)(param_1 + 4); + uVar31 = *(ulong *)(param_1 + 0x14) >> 3; + if (0 < (int)uVar7) { + if ((pdVar18 < pdVar30 + 2 && pdVar30 < pdVar18 + 2) || (uVar7 < 0xe)) { + lVar32 = 0; + do { + pdVar30[lVar32] = pdVar18[lVar32]; + lVar32 = lVar32 + 1; + /* try { // try from 00316364 to 00416367 has its CatchHandler @ 00316f68 */ + } while ((int)lVar32 < (int)uVar7); + } + else { + uVar1 = (uint)((ulong)pdVar18 >> 3) & 1; + uVar2 = uVar7; + if (uVar1 < uVar7) { + uVar2 = uVar1; + } + if (uVar2 != 0) { + *pdVar30 = *pdVar18; + } + uVar1 = ((uVar7 - uVar2) - 2 >> 1) + 1; + uVar20 = 0; + iVar5 = uVar1 * 2; + pdVar19 = pdVar30 + uVar2; + pdVar26 = pdVar18 + uVar2; + do { + dVar33 = *pdVar26; + uVar20 = uVar20 + 1; + pdVar19[1] = pdVar26[1]; + *pdVar19 = dVar33; + pdVar19 = pdVar19 + 2; + pdVar26 = pdVar26 + 2; + } while (uVar20 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar5; + if (uVar7 - uVar2 != iVar5) { + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar30 + uVar17) = *(undefined8 *)((long)pdVar18 + uVar17); + } + } + } + uVar20 = uVar7 - 4 >> 2; + /* try { // try from 00315f48 to 00415f6f has its CatchHandler @ 00316e60 */ + uVar2 = uVar20 + 1; + uVar1 = uVar2 * 4; + if ((int)(uVar7 - 3) < 1) { + uVar1 = 0; + } + uVar8 = uVar7 - uVar1; + lVar32 = (long)(int)uVar1; + pdVar19 = pdVar30 + lVar32; + uVar3 = (uint)((ulong)pdVar19 >> 3) & 1; + uVar4 = uVar8; + if (uVar3 < uVar8) { + uVar4 = uVar3; + } + iVar9 = uVar8 - uVar4; + /* try { // try from 00315fe0 to 00415fe3 has its CatchHandler @ 00316d54 */ + uVar3 = (iVar9 - 2U >> 1) + 1; + iVar5 = uVar3 * 2; + pdVar26 = pdVar18; +joined_r0x00316014: + while( true ) { + do { + pdVar29 = pdVar26; + iVar6 = iVar6 + -1; + if (iVar6 == 0) { + if (0 < (int)uVar7) { + if ((pdVar41 < pdVar30 + 2 && pdVar30 < pdVar41 + 2) || (uVar7 < 0xe)) { + lVar32 = 0; + do { + pdVar41[lVar32] = pdVar30[lVar32]; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < (int)uVar7); + } + else { + uVar2 = (uint)((ulong)pdVar30 >> 3) & 1; + if (uVar7 < uVar2) { + uVar2 = uVar7; + } + if (uVar2 != 0) { + *pdVar41 = *pdVar30; + } + /* try { // try from 003161e0 to 004161e3 has its CatchHandler @ 00316e70 */ + uVar1 = ((uVar7 - uVar2) - 2 >> 1) + 1; + iVar5 = uVar1 * 2; + uVar20 = 0; + pdVar18 = pdVar41 + uVar2; + pdVar19 = pdVar30 + uVar2; + do { + dVar33 = *pdVar19; + uVar20 = uVar20 + 1; + pdVar18[1] = pdVar19[1]; + *pdVar18 = dVar33; + pdVar18 = pdVar18 + 2; + pdVar19 = pdVar19 + 2; + } while (uVar20 < uVar1); + uVar1 = (uint)(uVar2 != 0) + iVar5; + if (iVar5 != uVar7 - uVar2) { + uVar31 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + *(undefined8 *)((long)pdVar41 + uVar31) = *(undefined8 *)((long)pdVar30 + uVar31); + } + } + } + if (bVar16) { + operator_delete__(pdVar30); + } + /* try { // try from 00316254 to 00416257 has its CatchHandler @ 00316e78 */ + return; + } + pdVar18 = pdVar18 + uVar31; + pdVar26 = pdVar29 + uVar31; + if (0 < (int)(uVar7 - 3)) { + if ((pdVar30 < pdVar18 + 8 && pdVar18 < pdVar30 + 8) || (uVar2 < 7)) { + pdVar23 = pdVar30; + pdVar21 = pdVar26 + 1; + do { + dVar33 = *pdVar21; + dVar36 = pdVar21[-1]; + if (pdVar21[-1] <= *pdVar23) { + dVar36 = *pdVar23; + } + *pdVar23 = dVar36; + if (dVar33 <= pdVar23[1]) { + dVar33 = pdVar23[1]; + } + pdVar23[1] = dVar33; + pdVar25 = pdVar21 + 4; + dVar33 = pdVar21[2]; + dVar36 = pdVar21[1]; + if (pdVar21[1] <= pdVar23[2]) { + /* try { // try from 003162f0 to 004162f3 has its CatchHandler @ 00316c24 */ + dVar36 = pdVar23[2]; + } + pdVar23[2] = dVar36; + if (dVar33 <= pdVar23[3]) { + dVar33 = pdVar23[3]; + } + pdVar23[3] = dVar33; + pdVar23 = pdVar23 + 4; + pdVar21 = pdVar25; + } while (pdVar25 != pdVar26 + (ulong)uVar20 * 4 + 5); + } + else { + pdVar23 = pdVar30 + 2; + /* try { // try from 00316054 to 00416057 has its CatchHandler @ 00316e58 */ + uVar28 = 0; + pdVar21 = pdVar18; + pdVar25 = pdVar18; + pdVar27 = pdVar30; + do { + pdVar10 = pdVar21 + 1; + dVar38 = *pdVar21; + dVar40 = pdVar23[1]; + dVar39 = *pdVar23; + dVar12 = *pdVar23; + dVar13 = pdVar23[1]; + dVar11 = *pdVar23; + dVar35 = pdVar23[1]; + uVar28 = uVar28 + 1; + dVar37 = pdVar21[3]; + dVar34 = pdVar21[2]; + dVar14 = *pdVar25; + pdVar15 = pdVar25 + 1; + pdVar21 = pdVar21 + 4; + dVar33 = pdVar25[2]; + dVar36 = pdVar25[3]; + pdVar25 = pdVar25 + 4; + pdVar27[1] = (double)((ulong)pdVar27[1] ^ + ((ulong)pdVar27[1] ^ (ulong)*pdVar15) & + -(ulong)(pdVar27[1] < *pdVar10)); + *pdVar27 = (double)((ulong)*pdVar27 ^ + ((ulong)*pdVar27 ^ (ulong)dVar14) & -(ulong)(*pdVar27 < dVar38)); + pdVar27 = pdVar27 + 4; + pdVar23[1] = (double)((ulong)dVar13 ^ + ((ulong)dVar35 ^ (ulong)dVar36) & -(ulong)(dVar40 < dVar37)); + *pdVar23 = (double)((ulong)dVar12 ^ + ((ulong)dVar11 ^ (ulong)dVar33) & -(ulong)(dVar39 < dVar34)); + pdVar23 = pdVar23 + 4; + } while (uVar28 < uVar2); + } + } + } while ((int)uVar7 <= (int)uVar1); + if ((pdVar30 + lVar32 + 2 <= pdVar29 + lVar32 + uVar31 || + pdVar29 + uVar31 + 2 + lVar32 <= pdVar19) && (6 < uVar8)) break; + lVar22 = 0; + do { + dVar33 = *(double *)((long)pdVar26 + lVar22 + lVar32 * 8); + if (dVar33 <= *(double *)((long)pdVar19 + lVar22)) { + dVar33 = *(double *)((long)pdVar19 + lVar22); + } + *(double *)((long)pdVar19 + lVar22) = dVar33; + lVar22 = lVar22 + 8; + } while (lVar22 != ((ulong)((uVar7 - 1) - uVar1) + 1) * 8); + } + uVar28 = uVar1; + if (uVar4 != 0) { + dVar33 = pdVar26[lVar32]; + if (pdVar26[lVar32] <= *pdVar19) { + /* try { // try from 003160f8 to 004160fb has its CatchHandler @ 00316fd8 */ + dVar33 = *pdVar19; + } + *pdVar19 = dVar33; + uVar28 = uVar1 + 1; + } + if (iVar9 != 1) goto code_r0x0031610c; + goto LAB_00316148; +code_r0x0031610c: + uVar24 = 0; + pdVar23 = pdVar30 + lVar32 + (ulong)uVar4; + pdVar21 = pdVar30 + (ulong)uVar4 + lVar32; + pdVar29 = pdVar29 + lVar32 + uVar31 + (ulong)uVar4; + do { + dVar35 = *pdVar23; + dVar11 = *pdVar23; + dVar36 = *pdVar23; + uVar24 = uVar24 + 1; + dVar33 = *pdVar29; + pdVar21[1] = (double)((ulong)pdVar23[1] ^ + ((ulong)pdVar23[1] ^ (ulong)pdVar29[1]) & -(ulong)(pdVar23[1] < pdVar29[1]) + ); + *pdVar21 = (double)((ulong)dVar11 ^ ((ulong)dVar36 ^ (ulong)dVar33) & -(ulong)(dVar35 < dVar33)) + ; + pdVar23 = pdVar23 + 2; + pdVar21 = pdVar21 + 2; + pdVar29 = pdVar29 + 2; + } while (uVar24 < uVar3); + uVar28 = uVar28 + iVar5; + if (iVar9 != iVar5) { +LAB_00316148: + uVar17 = -(ulong)(uVar28 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar28 << 3; + dVar33 = *(double *)((long)pdVar26 + uVar17); + if (*(double *)((long)pdVar26 + uVar17) <= *(double *)((long)pdVar30 + uVar17)) { + dVar33 = *(double *)((long)pdVar30 + uVar17); + } + *(double *)((long)pdVar30 + uVar17) = dVar33; + } + goto joined_r0x00316014; +} + + +================================================================== + +### FUNC 0031636c (3480 bytes) name=FUN_0031636c + +void FUN_0031636c(uint *param_1,long param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + byte *pbVar5; + int iVar6; + uint *puVar7; + long lVar8; + uint uVar9; + uint uVar10; + int iVar11; + int iVar12; + uint uVar13; + uint uVar14; + int iVar15; + uint3 uVar16; + undefined1 auVar17 [13]; + uint *puVar18; + bool bVar19; + ulong uVar20; + uint *puVar21; + float *pfVar22; + ulong *puVar23; + undefined1 (*pauVar24) [16]; + long lVar25; + long lVar26; + long lVar27; + long lVar28; + uint *puVar29; + long lVar30; + uint *puVar31; + uint uVar32; + uint *puVar33; + float *pfVar34; + uint uVar35; + uint uVar36; + uint uVar37; + uint *puVar38; + byte *pbVar39; + uint *puVar40; + ulong uVar41; + long lVar42; + int iVar43; + uint *puVar44; + byte bVar45; + byte bVar46; + byte bVar47; + undefined1 auVar48 [16]; + undefined8 uVar49; + undefined8 uVar50; + undefined8 uVar51; + undefined8 uVar52; + undefined8 uVar53; + undefined8 uVar54; + undefined8 uVar55; + undefined8 uVar56; + undefined8 uVar57; + int iVar58; + uint auStack_420 [264]; + + puVar31 = auStack_420; + iVar11 = (*(int **)(param_1 + 0x10))[1]; + iVar12 = **(int **)(param_1 + 0x10); + uVar13 = iVar11 + (*param_1 >> 3 & 0x1ff) * iVar11; + uVar41 = (ulong)(int)uVar13; + if (uVar41 < 0x109) { + bVar19 = false; + } + else { + uVar20 = uVar41 << 2; + /* try { // try from 003163e8 to 004163eb has its CatchHandler @ 00316d90 */ + if (0x1fc0000000000000 < uVar41) { + uVar20 = 0xffffffffffffffff; + } + puVar21 = operator_new__(uVar20); + bVar19 = puVar21 != puVar31; + puVar31 = puVar21; + } + pfVar22 = *(float **)(param_2 + 0x10); + puVar21 = *(uint **)(param_1 + 4); + lVar42 = *(long *)(param_1 + 0x14); + if (0 < (int)uVar13) { + if ((puVar21 < puVar31 + uVar41 && puVar31 < (uint *)((long)puVar21 + uVar41)) || + (uVar13 < 0x15)) { + lVar25 = 0; + do { + puVar31[lVar25] = (uint)*(byte *)((long)puVar21 + lVar25); + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar13); + } + else { + uVar35 = -((uint)((ulong)puVar31 >> 2) & 3) & 3; + uVar2 = uVar13; + if (uVar35 < uVar13) { + uVar2 = uVar35; + } + uVar35 = uVar2; + /* try { // try from 0031646c to 0041646f has its CatchHandler @ 00316e1c */ + if ((uVar2 != 0) && (*puVar31 = (uint)(byte)*puVar21, uVar2 != 1)) { + puVar31[1] = (uint)*(byte *)((long)puVar21 + 1); + if (uVar2 == 3) { + puVar31[2] = (uint)*(byte *)((long)puVar21 + 2); + } + else { + uVar35 = 2; + } + } + uVar36 = 0; + uVar32 = ((uVar13 - uVar2) - 0x10 >> 4) + 1; + iVar11 = uVar32 * 0x10; + puVar23 = (ulong *)(puVar31 + uVar2); + pauVar24 = (undefined1 (*) [16])((long)puVar21 + (ulong)uVar2); + do { + auVar48 = *pauVar24; + /* try { // try from 003164bc to 004164bf has its CatchHandler @ 00316c2c */ + uVar36 = uVar36 + 1; + uVar16 = CONCAT12(auVar48[1],auVar48._0_2_) & 0xff00ff; + /* try { // try from 003164d4 to 004164e3 has its CatchHandler @ 00316c24 */ + uVar41 = CONCAT35(0,CONCAT14(auVar48[0xd],(uint)auVar48[0xc])); + auVar17[8] = auVar48[0xe]; + auVar17._0_8_ = uVar41; + auVar17._9_3_ = 0; + auVar17[0xc] = auVar48[0xf]; + puVar23[1] = (ulong)CONCAT14(auVar48[3],(uint)auVar48[2]); + *puVar23 = (ulong)((uint6)CONCAT14((char)(uVar16 >> 0x10),(uint)uVar16) & 0xffff0000ffff); + /* try { // try from 003164ec to 004164ef has its CatchHandler @ 0031670c */ + puVar23[3] = (ulong)CONCAT14(auVar48[7],(uint)auVar48[6]); + puVar23[2] = (ulong)((uint6)CONCAT14(auVar48[5], + (uint)CONCAT12(auVar48[5],(ushort)auVar48[4])) & + 0xffff0000ffff); + puVar23[5] = (ulong)CONCAT14(auVar48[0xb],(uint)auVar48[10]); + puVar23[4] = (ulong)((uint6)CONCAT14(auVar48[9], + (uint)CONCAT12(auVar48[9],(ushort)auVar48[8])) & + 0xffff0000ffff); + puVar23[7] = (ulong)auVar17._8_5_; + puVar23[6] = uVar41; + puVar23 = puVar23 + 8; + pauVar24 = pauVar24 + 1; + /* try { // try from 003164f8 to 004164fb has its CatchHandler @ 00316714 */ + } while (uVar36 < uVar32); + iVar6 = uVar35 + iVar11; + if (uVar13 - uVar2 != iVar11) { + iVar11 = iVar6 + 1; + puVar31[iVar6] = (uint)*(byte *)((long)puVar21 + (long)iVar6); + if (iVar11 < (int)uVar13) { + iVar1 = iVar6 + 2; + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + if (iVar1 < (int)uVar13) { + iVar11 = iVar6 + 3; + puVar31[iVar1] = (uint)*(byte *)((long)puVar21 + (long)iVar1); + if (iVar11 < (int)uVar13) { + iVar1 = iVar6 + 4; + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + if (iVar1 < (int)uVar13) { + iVar11 = iVar6 + 5; + puVar31[iVar1] = (uint)*(byte *)((long)puVar21 + (long)iVar1); + if (iVar11 < (int)uVar13) { + iVar1 = iVar6 + 6; + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + if (iVar1 < (int)uVar13) { + iVar11 = iVar6 + 7; + puVar31[iVar1] = (uint)*(byte *)((long)puVar21 + (long)iVar1); + if (iVar11 < (int)uVar13) { + iVar1 = iVar6 + 8; + /* try { // try from 003165b8 to 004165bb has its CatchHandler @ 0031671c */ + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + /* try { // try from 003165c4 to 004165c7 has its CatchHandler @ 00316c2c */ + if (iVar1 < (int)uVar13) { + iVar11 = iVar6 + 9; + /* try { // try from 003165d0 to 004165e7 has its CatchHandler @ 00316604 */ + puVar31[iVar1] = (uint)*(byte *)((long)puVar21 + (long)iVar1); + if (iVar11 < (int)uVar13) { + iVar1 = iVar6 + 10; + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + if (iVar1 < (int)uVar13) { + iVar11 = iVar6 + 0xb; + /* catch() { ... } // from try @ 00315078 with catch @ 00316604 + catch() { ... } // from try @ 00315198 with catch @ 00316604 + catch() { ... } // from try @ 003165d0 with catch @ 00316604 */ + puVar31[iVar1] = (uint)*(byte *)((long)puVar21 + (long)iVar1); + if (iVar11 < (int)uVar13) { + iVar1 = iVar6 + 0xc; + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + if (iVar1 < (int)uVar13) { + iVar11 = iVar6 + 0xd; + puVar31[iVar1] = (uint)*(byte *)((long)puVar21 + (long)iVar1); + if (iVar11 < (int)uVar13) { + iVar6 = iVar6 + 0xe; + puVar31[iVar11] = (uint)*(byte *)((long)puVar21 + (long)iVar11); + if (iVar6 < (int)uVar13) { + puVar31[iVar6] = (uint)*(byte *)((long)puVar21 + (long)iVar6); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar36 = uVar13 - 4; + iVar1 = uVar13 - 3; + uVar32 = uVar36 >> 2; + uVar35 = uVar32 + 1; + uVar2 = (uVar32 - 3 >> 2) + 1; + iVar6 = uVar35 * 4; + iVar11 = uVar2 * 0x10; + /* try { // try from 003166d4 to 004166d7 has its CatchHandler @ 00314600 */ + if (uVar36 < 0xc) { + iVar11 = 0; + } + /* try { // try from 003166e0 to 004166e3 has its CatchHandler @ 00316c24 */ + /* catch() { ... } // from try @ 00315128 with catch @ 003166e8 */ + if (iVar1 < 1) { + iVar6 = 0; + } + uVar14 = uVar13 - iVar6; + iVar3 = iVar6 + 1; + lVar25 = (long)iVar6; + /* catch() { ... } // from try @ 00314e40 with catch @ 0031670c + catch() { ... } // from try @ 0031524c with catch @ 0031670c + catch() { ... } // from try @ 003164ec with catch @ 0031670c */ + /* catch() { ... } // from try @ 00314e14 with catch @ 00316714 + catch() { ... } // from try @ 003152d0 with catch @ 00316714 + catch() { ... } // from try @ 003164f8 with catch @ 00316714 */ + /* catch() { ... } // from try @ 00315054 with catch @ 0031671c + catch() { ... } // from try @ 003165b8 with catch @ 0031671c */ + lVar26 = (long)iVar11; + /* try { // try from 00316728 to 0041672b has its CatchHandler @ 00316c5c */ + /* try { // try from 00316738 to 0041673b has its CatchHandler @ 00316d5c */ + puVar7 = puVar31 + lVar25; + /* try { // try from 0031674c to 0041674f has its CatchHandler @ 00316e58 */ + uVar9 = -((uint)((ulong)puVar7 >> 2) & 3) & 3; + lVar27 = (long)(iVar11 + 4); + /* try { // try from 0031675c to 0041675f has its CatchHandler @ 00317004 */ + uVar10 = uVar14; + if (uVar9 < uVar14) { + uVar10 = uVar9; + } + /* try { // try from 00316770 to 00416773 has its CatchHandler @ 00316d54 */ + lVar28 = (long)(iVar11 + 8); + /* try { // try from 0031677c to 0041677f has its CatchHandler @ 00316e58 */ + /* try { // try from 00316788 to 0041678b has its CatchHandler @ 00316e60 */ + /* try { // try from 00316794 to 00416797 has its CatchHandler @ 00316c5c */ + iVar4 = iVar6 + 2; + lVar8 = lVar25 + lVar42; + uVar9 = ((uVar14 - uVar10) - 0x10 >> 4) + 1; + iVar58 = uVar9 * 0x10; + /* try { // try from 00316890 to 00416893 has its CatchHandler @ 00316fe0 */ +joined_r0x00316934: + do { + puVar18 = puVar21; + iVar12 = iVar12 + -1; + if (iVar12 == 0) break; + puVar21 = (uint *)((long)puVar18 + lVar42); + if (0 < iVar1) { + if ((puVar21 < puVar31 + (ulong)uVar35 * 4 && + puVar31 < (uint *)((long)puVar18 + lVar42 + (ulong)uVar35 * 4)) || (uVar35 < 4)) { + pbVar39 = (byte *)((long)puVar21 + 1); + puVar38 = puVar31; + do { + /* catch() { ... } // from try @ 00317098 with catch @ 00317050 + catch() { ... } // from try @ 00317130 with catch @ 00317050 + catch() { ... } // from try @ 00317c34 with catch @ 00317050 + catch() { ... } // from try @ 00318424 with catch @ 00317050 + catch() { ... } // from try @ 003184c0 with catch @ 00317050 + catch() { ... } // from try @ 00318c28 with catch @ 00317050 + catch() { ... } // from try @ 003192a4 with catch @ 00317050 + catch() { ... } // from try @ 0031943c with catch @ 00317050 + catch() { ... } // from try @ 003194cc with catch @ 00317050 */ + pbVar5 = pbVar39 + 4; + bVar45 = pbVar39[-1]; + puVar38[1] = (uint)*pbVar39 + puVar38[1]; + *puVar38 = *puVar38 + (uint)bVar45; + bVar45 = pbVar39[1]; + puVar38[3] = (uint)pbVar39[2] + puVar38[3]; + /* try { // try from 00317098 to 004170d7 has its CatchHandler @ 00317050 */ + puVar38[2] = puVar38[2] + (uint)bVar45; + pbVar39 = pbVar5; + puVar38 = puVar38 + 4; + } while (pbVar5 != (byte *)((long)puVar21 + (ulong)uVar32 * 4 + 5)); + } + else { + if (0xb < uVar36) { + puVar38 = puVar31 + 4; + puVar33 = puVar31 + 8; + puVar29 = puVar31 + 0xc; + uVar37 = 0; + puVar40 = puVar31; + puVar44 = puVar21; + do { + uVar50 = *(undefined8 *)(puVar44 + 2); + uVar49 = *(undefined8 *)puVar44; + uVar37 = uVar37 + 1; + uVar56 = *(undefined8 *)(puVar38 + 2); + uVar55 = *(undefined8 *)puVar38; + uVar54 = *(undefined8 *)(puVar33 + 2); + uVar53 = *(undefined8 *)puVar33; + uVar52 = *(undefined8 *)(puVar29 + 2); + uVar51 = *(undefined8 *)puVar29; + bVar45 = (byte)((ulong)uVar49 >> 8); + bVar46 = (byte)((ulong)uVar49 >> 0x28); + uVar16 = CONCAT12((char)((ulong)uVar50 >> 8),(short)uVar50) & 0xff00ff; + bVar47 = (byte)((ulong)uVar50 >> 0x28); + iVar43 = (int)((ulong)uVar55 >> 0x20) + (uint)bVar46; + *(ulong *)(puVar40 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(puVar40 + 2) >> 0x20) + + (uint)(byte)((ulong)uVar49 >> 0x18), + (int)*(undefined8 *)(puVar40 + 2) + (uint)(byte)((ulong)uVar49 >> 0x10)); + *(ulong *)puVar40 = + CONCAT44((int)((ulong)*(undefined8 *)puVar40 >> 0x20) + (uint)bVar45, + (int)*(undefined8 *)puVar40 + + (CONCAT12(bVar45,(ushort)(byte)uVar49) & 0xffff)); + puVar40 = puVar40 + 0x10; + *(ulong *)(puVar38 + 2) = + CONCAT44((int)((ulong)uVar56 >> 0x20) + (uint)(byte)((ulong)uVar49 >> 0x38), + (int)uVar56 + (uint)(byte)((ulong)uVar49 >> 0x30)); + *(ulong *)puVar38 = + CONCAT26((short)((uint)iVar43 >> 0x10), + CONCAT24((short)iVar43, + (int)uVar55 + + (CONCAT12(bVar46,(ushort)(byte)((ulong)uVar49 >> 0x20)) & 0xffff) + )); + puVar38 = puVar38 + 0x10; + *(ulong *)(puVar33 + 2) = + CONCAT44((int)((ulong)uVar54 >> 0x20) + (uint)(byte)((ulong)uVar50 >> 0x18), + (int)uVar54 + (uint)(byte)((ulong)uVar50 >> 0x10)); + *(ulong *)puVar33 = + CONCAT44((int)((ulong)uVar53 >> 0x20) + (uint)(byte)(uVar16 >> 0x10), + (int)uVar53 + (uVar16 & 0xffff)); + puVar33 = puVar33 + 0x10; + *(ulong *)(puVar29 + 2) = + CONCAT44((int)((ulong)uVar52 >> 0x20) + (uint)(byte)((ulong)uVar50 >> 0x38), + (int)uVar52 + (uint)(byte)((ulong)uVar50 >> 0x30)); + *(ulong *)puVar29 = + CONCAT44((int)((ulong)uVar51 >> 0x20) + (uint)bVar47, + (int)uVar51 + + (CONCAT12(bVar47,(ushort)(byte)((ulong)uVar50 >> 0x20)) & 0xffff)); + puVar29 = puVar29 + 0x10; + puVar44 = puVar44 + 4; + /* try { // try from 003169f8 to 00416a4f has its CatchHandler @ 00316e60 */ + } while (uVar37 < uVar2); + if (uVar35 == uVar2 * 4) goto LAB_00316b20; + } + bVar45 = *(byte *)((long)puVar21 + lVar26 + 1); + puVar31[lVar26] = puVar31[lVar26] + (uint)*(byte *)((long)puVar21 + lVar26); + puVar31[lVar26 + 1] = (uint)bVar45 + puVar31[lVar26 + 1]; + bVar45 = *(byte *)((long)puVar21 + lVar26 + 3); + /* try { // try from 00316a58 to 00416a5b has its CatchHandler @ 00316d54 */ + puVar31[lVar26 + 2] = puVar31[lVar26 + 2] + (uint)*(byte *)((long)puVar21 + lVar26 + 2); + puVar31[lVar26 + 3] = (uint)bVar45 + puVar31[lVar26 + 3]; + /* try { // try from 00316a64 to 00416a67 has its CatchHandler @ 00316d5c */ + if (iVar11 + 4 < iVar1) { + bVar45 = *(byte *)((long)puVar21 + lVar27 + 1); + puVar31[lVar27] = puVar31[lVar27] + (uint)*(byte *)((long)puVar21 + lVar27); + puVar31[lVar27 + 1] = (uint)bVar45 + puVar31[lVar27 + 1]; + bVar45 = *(byte *)((long)puVar21 + lVar27 + 3); + puVar31[lVar27 + 2] = puVar31[lVar27 + 2] + (uint)*(byte *)((long)puVar21 + lVar27 + 2); + puVar31[lVar27 + 3] = (uint)bVar45 + puVar31[lVar27 + 3]; + if (iVar11 + 8 < iVar1) { + bVar45 = *(byte *)((long)puVar21 + lVar28 + 1); + puVar31[lVar28] = puVar31[lVar28] + (uint)*(byte *)((long)puVar21 + lVar28); + puVar31[lVar28 + 1] = (uint)bVar45 + puVar31[lVar28 + 1]; + bVar45 = *(byte *)((long)puVar21 + lVar28 + 3); + puVar31[lVar28 + 2] = puVar31[lVar28 + 2] + (uint)*(byte *)((long)puVar21 + lVar28 + 2); + puVar31[lVar28 + 3] = (uint)bVar45 + puVar31[lVar28 + 3]; + } + } + } + } +LAB_00316b20: + if (iVar6 < (int)uVar13) { + /* try { // try from 00316b48 to 00416b4b has its CatchHandler @ 00316e60 */ + /* try { // try from 00316b54 to 00416b57 has its CatchHandler @ 00317004 */ + if (((uint *)((long)puVar18 + lVar8) < puVar31 + (ulong)uVar14 + lVar25 && + puVar7 < (uint *)((long)puVar18 + lVar8 + (ulong)uVar14)) || (uVar14 < 0x13)) { + lVar30 = 0; + do { + puVar7[lVar30] = puVar7[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30 + lVar25); + lVar30 = lVar30 + 1; + /* catch() { ... } // from try @ 00316fc8 with catch @ 00317028 */ + } while (lVar30 != (ulong)((uVar13 - 1) - iVar6) + 1); + goto joined_r0x00316934; + } + iVar43 = iVar6; + /* try { // try from 00316b8c to 00416b8f has its CatchHandler @ 00316fe0 */ + if ((uVar10 != 0) && + ((*puVar7 = *puVar7 + (uint)*(byte *)((long)puVar21 + lVar25), iVar43 = iVar3, uVar10 != 1 + && (puVar31[iVar3] = puVar31[iVar3] + (uint)*(byte *)((long)puVar21 + (long)iVar3), + iVar43 = iVar4, uVar10 == 3)))) { + /* try { // try from 00316ba0 to 00416ba3 has its CatchHandler @ 00316d54 */ + puVar31[iVar4] = puVar31[iVar4] + (uint)*(byte *)((long)puVar21 + (long)iVar4); + iVar43 = iVar6 + 3; + } + /* try { // try from 00316bb8 to 00416bbb has its CatchHandler @ 00316fe0 */ + if (0xe < (uVar14 - 1) - uVar10) { + uVar37 = 0; + puVar38 = puVar31 + lVar25 + (ulong)uVar10; + puVar33 = puVar31 + (ulong)uVar10 + lVar25; + pbVar39 = (byte *)((long)puVar18 + lVar8 + (ulong)uVar10); + do { + uVar51 = *(undefined8 *)puVar38; + /* try { // try from 00316bec to 00416bef has its CatchHandler @ 00316e60 */ + uVar37 = uVar37 + 1; + uVar55 = *(undefined8 *)(puVar38 + 10); + uVar54 = *(undefined8 *)(puVar38 + 8); + /* try { // try from 00316bf8 to 00416bfb has its CatchHandler @ 00316fd8 */ + uVar50 = *(undefined8 *)(pbVar39 + 8); + uVar49 = *(undefined8 *)pbVar39; + bVar45 = (byte)((ulong)uVar49 >> 8); + bVar46 = (byte)((ulong)uVar49 >> 0x28); + /* try { // try from 00316c04 to 00416c07 has its CatchHandler @ 00316e68 */ + uVar16 = CONCAT12((char)((ulong)uVar50 >> 8),(short)uVar50) & 0xff00ff; + bVar47 = (byte)((ulong)uVar50 >> 0x28); + /* try { // try from 00316c10 to 00416c13 has its CatchHandler @ 00316e70 */ + uVar57 = *(undefined8 *)(puVar38 + 6); + uVar56 = *(undefined8 *)(puVar38 + 4); + /* try { // try from 00316c1c to 00416c1f has its CatchHandler @ 00316e78 */ + /* catch() { ... } // from try @ 00315354 with catch @ 00316c24 + catch() { ... } // from try @ 003162f0 with catch @ 00316c24 + catch() { ... } // from try @ 003164d4 with catch @ 00316c24 + catch() { ... } // from try @ 003166e0 with catch @ 00316c24 + catch() { ... } // from try @ 00316e84 with catch @ 00316c24 + catch() { ... } // from try @ 00316f18 with catch @ 00316c24 */ + uVar53 = *(undefined8 *)(puVar38 + 0xe); + uVar52 = *(undefined8 *)(puVar38 + 0xc); + /* catch() { ... } // from try @ 003164bc with catch @ 00316c2c + catch() { ... } // from try @ 003165c4 with catch @ 00316c2c */ + iVar15 = (uint)bVar46 + (int)((ulong)uVar56 >> 0x20); + *(ulong *)(puVar33 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(puVar38 + 2) >> 0x20) + + (uint)(byte)((ulong)uVar49 >> 0x18), + (int)*(undefined8 *)(puVar38 + 2) + (uint)(byte)((ulong)uVar49 >> 0x10)); + *(ulong *)puVar33 = + CONCAT44((int)((ulong)uVar51 >> 0x20) + (uint)bVar45, + (int)uVar51 + (CONCAT12(bVar45,(ushort)(byte)uVar49) & 0xffff)); + *(ulong *)(puVar33 + 6) = + CONCAT44((uint)(byte)((ulong)uVar49 >> 0x38) + (int)((ulong)uVar57 >> 0x20), + (uint)(byte)((ulong)uVar49 >> 0x30) + (int)uVar57); + *(ulong *)(puVar33 + 4) = + CONCAT26((short)((uint)iVar15 >> 0x10), + CONCAT24((short)iVar15, + (CONCAT12(bVar46,(ushort)(byte)((ulong)uVar49 >> 0x20)) & 0xffff) + + (int)uVar56)); + *(ulong *)(puVar33 + 10) = + CONCAT44((uint)(byte)((ulong)uVar50 >> 0x18) + (int)((ulong)uVar55 >> 0x20), + (uint)(byte)((ulong)uVar50 >> 0x10) + (int)uVar55); + *(ulong *)(puVar33 + 8) = + CONCAT44((uint)(byte)(uVar16 >> 0x10) + (int)((ulong)uVar54 >> 0x20), + (uVar16 & 0xffff) + (int)uVar54); + *(ulong *)(puVar33 + 0xe) = + CONCAT44((uint)(byte)((ulong)uVar50 >> 0x38) + (int)((ulong)uVar53 >> 0x20), + (uint)(byte)((ulong)uVar50 >> 0x30) + (int)uVar53); + *(ulong *)(puVar33 + 0xc) = + CONCAT44((uint)bVar47 + (int)((ulong)uVar52 >> 0x20), + (CONCAT12(bVar47,(ushort)(byte)((ulong)uVar50 >> 0x20)) & 0xffff) + + (int)uVar52); + puVar38 = puVar38 + 0x10; + puVar33 = puVar33 + 0x10; + pbVar39 = pbVar39 + 0x10; + } while (uVar37 < uVar9); + /* catch() { ... } // from try @ 00316728 with catch @ 00316c5c + catch() { ... } // from try @ 00316794 with catch @ 00316c5c */ + iVar43 = iVar43 + iVar58; + if (uVar14 - uVar10 == iVar58) goto joined_r0x00316934; + } + lVar30 = (long)iVar43; + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 1 < (int)uVar13) { + lVar30 = (long)(iVar43 + 1); + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 2 < (int)uVar13) { + lVar30 = (long)(iVar43 + 2); + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 3 < (int)uVar13) { + lVar30 = (long)(iVar43 + 3); + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 4 < (int)uVar13) { + lVar30 = (long)(iVar43 + 4); + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 5 < (int)uVar13) { + lVar30 = (long)(iVar43 + 5); + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 6 < (int)uVar13) { + lVar30 = (long)(iVar43 + 6); + /* catch() { ... } // from try @ 003157b4 with catch @ 00316d54 + catch() { ... } // from try @ 00315fe0 with catch @ 00316d54 + catch() { ... } // from try @ 00316770 with catch @ 00316d54 + catch() { ... } // from try @ 00316a58 with catch @ 00316d54 + catch() { ... } // from try @ 00316ba0 with catch @ 00316d54 */ + /* catch() { ... } // from try @ 00316738 with catch @ 00316d5c + catch() { ... } // from try @ 00316a64 with catch @ 00316d5c */ + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 7 < (int)uVar13) { + lVar30 = (long)(iVar43 + 7); + /* catch() { ... } // from try @ 003147ec with catch @ 00316d80 */ + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + /* catch() { ... } // from try @ 003147a0 with catch @ 00316d90 + catch() { ... } // from try @ 003147f4 with catch @ 00316d90 + catch() { ... } // from try @ 003148d0 with catch @ 00316d90 + catch() { ... } // from try @ 00314954 with catch @ 00316d90 + catch() { ... } // from try @ 003149cc with catch @ 00316d90 + catch() { ... } // from try @ 003163e8 with catch @ 00316d90 + catch() { ... } // from try @ 00316e9c with catch @ 00316d90 + catch() { ... } // from try @ 00316f84 with catch @ 00316d90 + catch() { ... } // from try @ 00316fd0 with catch @ 00316d90 */ + if (iVar43 + 8 < (int)uVar13) { + lVar30 = (long)(iVar43 + 8); + /* try { // try from 00316db0 to 00416db3 has its CatchHandler @ 00316e1c */ + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 9 < (int)uVar13) { + /* catch() { ... } // from try @ 0031494c with catch @ 00316db8 */ + lVar30 = (long)(iVar43 + 9); + /* catch() { ... } // from try @ 003149c4 with catch @ 00316dc8 */ + puVar31[lVar30] = puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 10 < (int)uVar13) { + lVar30 = (long)(iVar43 + 10); + puVar31[lVar30] = + puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 0xb < (int)uVar13) { + lVar30 = (long)(iVar43 + 0xb); + /* catch() { ... } // from try @ 003148c8 with catch @ 00316e0c */ + /* catch() { ... } // from try @ 0031646c with catch @ 00316e1c + catch() { ... } // from try @ 00316db0 with catch @ 00316e1c + catch() { ... } // from try @ 00316ea8 with catch @ 00316e1c */ + puVar31[lVar30] = + puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 0xc < (int)uVar13) { + lVar30 = (long)(iVar43 + 0xc); + puVar31[lVar30] = + puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + if (iVar43 + 0xd < (int)uVar13) { + lVar30 = (long)(iVar43 + 0xd); + /* try { // try from 00316e50 to 00416e53 has its CatchHandler @ 00316e60 */ + /* catch() { ... } // from try @ 00316054 with catch @ 00316e58 + catch() { ... } // from try @ 0031674c with catch @ 00316e58 + catch() { ... } // from try @ 0031677c with catch @ 00316e58 */ + /* catch() { ... } // from try @ 00315b3c with catch @ 00316e60 + catch() { ... } // from try @ 00315f48 with catch @ 00316e60 + catch() { ... } // from try @ 00316788 with catch @ 00316e60 + catch() { ... } // from try @ 003169f8 with catch @ 00316e60 + catch() { ... } // from try @ 00316b48 with catch @ 00316e60 + catch() { ... } // from try @ 00316bec with catch @ 00316e60 + catch() { ... } // from try @ 00316e50 with catch @ 00316e60 */ + puVar31[lVar30] = + puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + /* catch() { ... } // from try @ 00315670 with catch @ 00316e68 + catch() { ... } // from try @ 0031616c with catch @ 00316e68 + catch() { ... } // from try @ 00316c04 with catch @ 00316e68 */ + if (iVar43 + 0xe < (int)uVar13) { + lVar30 = (long)(iVar43 + 0xe); + /* catch() { ... } // from try @ 00315610 with catch @ 00316e70 + catch() { ... } // from try @ 003161e0 with catch @ 00316e70 + catch() { ... } // from try @ 00316c10 with catch @ 00316e70 */ + /* catch() { ... } // from try @ 003155ec with catch @ 00316e78 + catch() { ... } // from try @ 00316254 with catch @ 00316e78 + catch() { ... } // from try @ 00316c1c with catch @ 00316e78 + catch() { ... } // from try @ 00316ec0 with catch @ 00316e78 */ + puVar31[lVar30] = + puVar31[lVar30] + (uint)*(byte *)((long)puVar21 + lVar30); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } while( true ); + /* try { // try from 00316e90 to 00416e93 has its CatchHandler @ 00316f68 */ + if (0 < (int)uVar13) { + /* try { // try from 00316e9c to 00416e9f has its CatchHandler @ 00316d90 */ + uVar35 = -((uint)((ulong)puVar31 >> 2) & 3) & 3; + /* try { // try from 00316ea8 to 00416eab has its CatchHandler @ 00316e1c */ + if (uVar13 < uVar35) { + uVar35 = uVar13; + } + if (uVar13 < 5) { + uVar35 = uVar13; + } + uVar41 = 0; + if (uVar35 != 0) { + /* try { // try from 00316ec0 to 00416f03 has its CatchHandler @ 00316e78 */ + *pfVar22 = (float)(int)*puVar31; + if ((uVar35 == 1) || (pfVar22[1] = (float)(int)puVar31[1], uVar35 == 2)) { + uVar41 = (ulong)uVar35; + } + else { + pfVar22[2] = (float)(int)puVar31[2]; + if (uVar35 == 4) { + uVar41 = 4; + pfVar22[3] = (float)(int)puVar31[3]; + } + else { + uVar41 = 3; + } + } + if (uVar35 == uVar13) goto LAB_00316fbc; + } + /* try { // try from 00316f18 to 00416f1b has its CatchHandler @ 00316c24 */ + uVar2 = ((uVar13 - uVar35) - 4 >> 2) + 1; + iVar11 = uVar2 * 4; + if (2 < (uVar13 - 1) - uVar35) { + uVar32 = 0; + pauVar24 = (undefined1 (*) [16])(puVar31 + uVar35); + pfVar34 = pfVar22 + uVar35; + do { + uVar32 = uVar32 + 1; + auVar48 = NEON_scvtf(*pauVar24,4); + *(long *)(pfVar34 + 2) = auVar48._8_8_; + *(long *)pfVar34 = auVar48._0_8_; + pauVar24 = pauVar24 + 1; + pfVar34 = pfVar34 + 4; + } while (uVar32 < uVar2); + uVar41 = (ulong)(uint)((int)uVar41 + iVar11); + /* catch() { ... } // from try @ 00314c10 with catch @ 00316f68 + catch() { ... } // from try @ 00316364 with catch @ 00316f68 + catch() { ... } // from try @ 00316e90 with catch @ 00316f68 */ + if (iVar11 == uVar13 - uVar35) goto LAB_00316fbc; + } + uVar20 = -(uVar41 >> 0x1f) & 0xfffffffc00000000 | uVar41 << 2; + /* try { // try from 00316f84 to 00416f87 has its CatchHandler @ 00316d90 */ + *(float *)((long)pfVar22 + uVar20) = (float)*(int *)((long)puVar31 + uVar20); + if (((int)uVar41 + 1 < (int)uVar13) && + (*(float *)((long)pfVar22 + uVar20 + 4) = (float)*(int *)((long)puVar31 + uVar20 + 4), + (int)uVar41 + 2 < (int)uVar13)) { + *(float *)((long)pfVar22 + uVar20 + 8) = (float)*(int *)((long)puVar31 + uVar20 + 8); + } + } +LAB_00316fbc: + if (bVar19) { + /* try { // try from 00316fc8 to 00416fcb has its CatchHandler @ 00317028 */ + operator_delete__(puVar31); + } + /* try { // try from 00316fd0 to 00416fd3 has its CatchHandler @ 00316d90 */ + /* catch() { ... } // from try @ 003156ac with catch @ 00316fd8 + catch() { ... } // from try @ 003160f8 with catch @ 00316fd8 + catch() { ... } // from try @ 00316bf8 with catch @ 00316fd8 */ + /* catch() { ... } // from try @ 00316890 with catch @ 00316fe0 + catch() { ... } // from try @ 00316b8c with catch @ 00316fe0 + catch() { ... } // from try @ 00316bb8 with catch @ 00316fe0 */ + return; +} + + +================================================================== + +### FUNC 00317104 (3504 bytes) name=FUN_00317104 + +void FUN_00317104(uint *param_1,long param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + byte *pbVar5; + int iVar6; + long lVar7; + uint uVar8; + uint uVar9; + int iVar10; + int iVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint3 uVar15; + uint3 uVar16; + uint *puVar17; + bool bVar18; + ulong uVar19; + uint *puVar20; + ulong *puVar21; + long lVar22; + long lVar23; + long lVar24; + long lVar25; + uint *puVar26; + long lVar27; + uint *puVar28; + uint uVar29; + uint *puVar30; + uint *puVar31; + uint uVar32; + uint uVar33; + byte *pbVar34; + uint uVar35; + uint *puVar36; + uint *puVar37; + ulong uVar38; + long lVar39; + int iVar40; + uint *puVar41; + byte bVar42; + undefined1 uVar43; + undefined1 uVar44; + byte bVar45; + byte bVar46; + undefined8 uVar47; + undefined8 uVar48; + undefined8 uVar49; + undefined8 uVar50; + undefined8 uVar51; + undefined8 uVar52; + undefined8 uVar53; + undefined8 uVar54; + undefined8 uVar55; + int iVar56; + uint *puVar57; + uint auStack_420 [264]; + + /* try { // try from 00317128 to 0041712b has its CatchHandler @ 003194bc */ + /* try { // try from 00317130 to 00417157 has its CatchHandler @ 00317050 */ + puVar28 = auStack_420; + iVar10 = (*(int **)(param_1 + 0x10))[1]; + iVar11 = **(int **)(param_1 + 0x10); + /* try { // try from 0031715c to 0041717b has its CatchHandler @ 00319508 */ + uVar12 = iVar10 + (*param_1 >> 3 & 0x1ff) * iVar10; + uVar38 = (ulong)(int)uVar12; + if (uVar38 < 0x109) { + bVar18 = false; + } + else { + uVar19 = uVar38 << 2; + /* try { // try from 00317180 to 0041719f has its CatchHandler @ 003194f4 */ + if (0x1fc0000000000000 < uVar38) { + uVar19 = 0xffffffffffffffff; + } + puVar20 = operator_new__(uVar19); + bVar18 = puVar20 != puVar28; + puVar28 = puVar20; + } + puVar57 = *(uint **)(param_2 + 0x10); + puVar20 = *(uint **)(param_1 + 4); + lVar39 = *(long *)(param_1 + 0x14); + if (0 < (int)uVar12) { + if ((puVar20 < puVar28 + uVar38 && puVar28 < (uint *)((long)puVar20 + uVar38)) || + (uVar12 < 0x15)) { + lVar22 = 0; + do { + puVar28[lVar22] = (uint)*(byte *)((long)puVar20 + lVar22); + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar12); + } + else { + uVar32 = -((uint)((ulong)puVar28 >> 2) & 3) & 3; + uVar2 = uVar12; + if (uVar32 < uVar12) { + uVar2 = uVar32; + } + uVar32 = uVar2; + /* try { // try from 00317200 to 00417227 has its CatchHandler @ 0031934c */ + if ((uVar2 != 0) && (*puVar28 = (uint)(byte)*puVar20, uVar2 != 1)) { + puVar28[1] = (uint)*(byte *)((long)puVar20 + 1); + if (uVar2 == 3) { + puVar28[2] = (uint)*(byte *)((long)puVar20 + 2); + } + else { + uVar32 = 2; + /* try { // try from 00317ea8 to 00417eab has its CatchHandler @ 0031934c */ + } + } + uVar33 = 0; + uVar29 = ((uVar12 - uVar2) - 0x10 >> 4) + 1; + iVar10 = uVar29 * 0x10; + puVar21 = (ulong *)(puVar28 + uVar2); + pbVar34 = (byte *)((long)puVar20 + (ulong)uVar2); + do { + uVar48 = *(undefined8 *)(pbVar34 + 8); + uVar47 = *(undefined8 *)pbVar34; + /* try { // try from 00317250 to 00417253 has its CatchHandler @ 003195a4 */ + uVar33 = uVar33 + 1; + uVar15 = CONCAT12((char)((ulong)uVar47 >> 8),(short)uVar47) & 0xff00ff; + uVar43 = (undefined1)((ulong)uVar47 >> 0x28); + uVar16 = CONCAT12((char)((ulong)uVar48 >> 8),(short)uVar48) & 0xff00ff; + uVar44 = (undefined1)((ulong)uVar48 >> 0x28); + puVar21[1] = (ulong)CONCAT14((char)((ulong)uVar47 >> 0x18), + (uint)(byte)((ulong)uVar47 >> 0x10)); + *puVar21 = (ulong)((uint6)CONCAT14((char)(uVar15 >> 0x10),(uint)uVar15) & 0xffff0000ffff); + puVar21[3] = (ulong)CONCAT14((char)((ulong)uVar47 >> 0x38), + (uint)(byte)((ulong)uVar47 >> 0x30)); + puVar21[2] = (ulong)((uint6)CONCAT14(uVar43,(uint)CONCAT12(uVar43,(ushort)(byte)((ulong) + uVar47 >> 0x20))) & 0xffff0000ffff); + puVar21[5] = (ulong)CONCAT14((char)((ulong)uVar48 >> 0x18), + (uint)(byte)((ulong)uVar48 >> 0x10)); + puVar21[4] = (ulong)((uint6)CONCAT14((char)(uVar16 >> 0x10),(uint)uVar16) & 0xffff0000ffff); + puVar21[7] = (ulong)CONCAT14((char)((ulong)uVar48 >> 0x38), + (uint)(byte)((ulong)uVar48 >> 0x30)); + puVar21[6] = (ulong)((uint6)CONCAT14(uVar44,(uint)CONCAT12(uVar44,(ushort)(byte)((ulong) + uVar48 >> 0x20))) & 0xffff0000ffff); + puVar21 = puVar21 + 8; + pbVar34 = pbVar34 + 0x10; + } while (uVar33 < uVar29); + iVar6 = uVar32 + iVar10; + if (uVar12 - uVar2 != iVar10) { + iVar10 = iVar6 + 1; + puVar28[iVar6] = (uint)*(byte *)((long)puVar20 + (long)iVar6); + if (iVar10 < (int)uVar12) { + iVar1 = iVar6 + 2; + /* try { // try from 003172bc to 004172bf has its CatchHandler @ 00319578 */ + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar1 < (int)uVar12) { + iVar10 = iVar6 + 3; + puVar28[iVar1] = (uint)*(byte *)((long)puVar20 + (long)iVar1); + if (iVar10 < (int)uVar12) { + iVar1 = iVar6 + 4; + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar1 < (int)uVar12) { + iVar10 = iVar6 + 5; + puVar28[iVar1] = (uint)*(byte *)((long)puVar20 + (long)iVar1); + if (iVar10 < (int)uVar12) { + iVar1 = iVar6 + 6; + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar1 < (int)uVar12) { + /* try { // try from 00317330 to 00417333 has its CatchHandler @ 00319554 */ + iVar10 = iVar6 + 7; + puVar28[iVar1] = (uint)*(byte *)((long)puVar20 + (long)iVar1); + if (iVar10 < (int)uVar12) { + iVar1 = iVar6 + 8; + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar1 < (int)uVar12) { + iVar10 = iVar6 + 9; + puVar28[iVar1] = (uint)*(byte *)((long)puVar20 + (long)iVar1); + if (iVar10 < (int)uVar12) { + iVar1 = iVar6 + 10; + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar1 < (int)uVar12) { + iVar10 = iVar6 + 0xb; + puVar28[iVar1] = (uint)*(byte *)((long)puVar20 + (long)iVar1); + if (iVar10 < (int)uVar12) { + /* try { // try from 003173a4 to 004173a7 has its CatchHandler @ 00319354 */ + iVar1 = iVar6 + 0xc; + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar1 < (int)uVar12) { + iVar10 = iVar6 + 0xd; + puVar28[iVar1] = (uint)*(byte *)((long)puVar20 + (long)iVar1); + if (iVar10 < (int)uVar12) { + iVar6 = iVar6 + 0xe; + puVar28[iVar10] = (uint)*(byte *)((long)puVar20 + (long)iVar10); + if (iVar6 < (int)uVar12) { + puVar28[iVar6] = (uint)*(byte *)((long)puVar20 + (long)iVar6); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar33 = uVar12 - 4; + iVar1 = uVar12 - 3; + uVar29 = uVar33 >> 2; + /* try { // try from 00317418 to 0041741b has its CatchHandler @ 00319604 */ + uVar32 = uVar29 + 1; + /* try { // try from 00317444 to 00417447 has its CatchHandler @ 003195d8 */ + uVar2 = (uVar29 - 3 >> 2) + 1; + iVar6 = uVar32 * 4; + iVar10 = uVar2 * 0x10; + if (uVar33 < 0xc) { + iVar10 = 0; + } + if (iVar1 < 1) { + iVar6 = 0; + } + uVar13 = uVar12 - iVar6; + iVar3 = iVar6 + 1; + lVar22 = (long)iVar6; + /* try { // try from 003174ac to 004174af has its CatchHandler @ 003195ac */ + lVar23 = (long)iVar10; + puVar31 = puVar28 + lVar22; + uVar8 = -((uint)((ulong)puVar31 >> 2) & 3) & 3; + lVar24 = (long)(iVar10 + 4); + uVar9 = uVar13; + if (uVar8 < uVar13) { + uVar9 = uVar8; + } + lVar25 = (long)(iVar10 + 8); + /* try { // try from 00317520 to 00417523 has its CatchHandler @ 003195e0 */ + iVar4 = iVar6 + 2; + lVar7 = lVar22 + lVar39; + uVar8 = ((uVar13 - uVar9) - 0x10 >> 4) + 1; + /* try { // try from 00317594 to 00417597 has its CatchHandler @ 00319474 */ + iVar56 = uVar8 * 0x10; + /* try { // try from 00317608 to 0041760b has its CatchHandler @ 00319510 */ + /* try { // try from 00317634 to 00417637 has its CatchHandler @ 00319680 */ + /* try { // try from 0031769c to 0041769f has its CatchHandler @ 00319654 */ +joined_r0x003176cc: + do { + puVar17 = puVar20; + iVar11 = iVar11 + -1; + if (iVar11 == 0) break; + puVar20 = (uint *)((long)puVar17 + lVar39); + if (0 < iVar1) { + if ((puVar20 < puVar28 + (ulong)uVar32 * 4 && + puVar28 < (uint *)((long)puVar17 + lVar39 + (ulong)uVar32 * 4)) || (uVar32 < 4)) { + pbVar34 = (byte *)((long)puVar20 + 1); + puVar36 = puVar28; + do { + pbVar5 = pbVar34 + 4; + bVar42 = pbVar34[-1]; + puVar36[1] = (uint)*pbVar34 + puVar36[1]; + *puVar36 = *puVar36 + (uint)bVar42; + bVar42 = pbVar34[1]; + puVar36[3] = (uint)pbVar34[2] + puVar36[3]; + puVar36[2] = puVar36[2] + (uint)bVar42; + pbVar34 = pbVar5; + puVar36 = puVar36 + 4; + } while (pbVar5 != (byte *)((long)puVar20 + (ulong)uVar29 * 4 + 5)); + } + else { + /* try { // try from 00317710 to 00417713 has its CatchHandler @ 00319630 */ + if (0xb < uVar33) { + puVar36 = puVar28 + 4; + puVar30 = puVar28 + 8; + puVar26 = puVar28 + 0xc; + uVar35 = 0; + puVar37 = puVar28; + puVar41 = puVar20; + do { + uVar48 = *(undefined8 *)(puVar41 + 2); + uVar47 = *(undefined8 *)puVar41; + uVar35 = uVar35 + 1; + uVar54 = *(undefined8 *)(puVar36 + 2); + uVar53 = *(undefined8 *)puVar36; + uVar52 = *(undefined8 *)(puVar30 + 2); + uVar51 = *(undefined8 *)puVar30; + uVar50 = *(undefined8 *)(puVar26 + 2); + uVar49 = *(undefined8 *)puVar26; + bVar42 = (byte)((ulong)uVar47 >> 8); + bVar45 = (byte)((ulong)uVar47 >> 0x28); + uVar15 = CONCAT12((char)((ulong)uVar48 >> 8),(short)uVar48) & 0xff00ff; + bVar46 = (byte)((ulong)uVar48 >> 0x28); + iVar40 = (int)((ulong)uVar53 >> 0x20) + (uint)bVar45; + *(ulong *)(puVar37 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(puVar37 + 2) >> 0x20) + + (uint)(byte)((ulong)uVar47 >> 0x18), + (int)*(undefined8 *)(puVar37 + 2) + (uint)(byte)((ulong)uVar47 >> 0x10)); + *(ulong *)puVar37 = + CONCAT44((int)((ulong)*(undefined8 *)puVar37 >> 0x20) + (uint)bVar42, + (int)*(undefined8 *)puVar37 + + (CONCAT12(bVar42,(ushort)(byte)uVar47) & 0xffff)); + puVar37 = puVar37 + 0x10; + *(ulong *)(puVar36 + 2) = + CONCAT44((int)((ulong)uVar54 >> 0x20) + (uint)(byte)((ulong)uVar47 >> 0x38), + (int)uVar54 + (uint)(byte)((ulong)uVar47 >> 0x30)); + *(ulong *)puVar36 = + CONCAT26((short)((uint)iVar40 >> 0x10), + CONCAT24((short)iVar40, + (int)uVar53 + + (CONCAT12(bVar45,(ushort)(byte)((ulong)uVar47 >> 0x20)) & 0xffff) + )); + puVar36 = puVar36 + 0x10; + *(ulong *)(puVar30 + 2) = + CONCAT44((int)((ulong)uVar52 >> 0x20) + (uint)(byte)((ulong)uVar48 >> 0x18), + (int)uVar52 + (uint)(byte)((ulong)uVar48 >> 0x10)); + *(ulong *)puVar30 = + CONCAT44((int)((ulong)uVar51 >> 0x20) + (uint)(byte)(uVar15 >> 0x10), + (int)uVar51 + (uVar15 & 0xffff)); + /* try { // try from 00317784 to 00417787 has its CatchHandler @ 0031960c */ + puVar30 = puVar30 + 0x10; + *(ulong *)(puVar26 + 2) = + CONCAT44((int)((ulong)uVar50 >> 0x20) + (uint)(byte)((ulong)uVar48 >> 0x38), + (int)uVar50 + (uint)(byte)((ulong)uVar48 >> 0x30)); + *(ulong *)puVar26 = + CONCAT44((int)((ulong)uVar49 >> 0x20) + (uint)bVar46, + (int)uVar49 + + (CONCAT12(bVar46,(ushort)(byte)((ulong)uVar48 >> 0x20)) & 0xffff)); + puVar26 = puVar26 + 0x10; + puVar41 = puVar41 + 4; + } while (uVar35 < uVar2); + if (uVar32 == uVar2 * 4) goto LAB_003178b8; + } + bVar42 = *(byte *)((long)puVar20 + lVar23 + 1); + puVar28[lVar23] = puVar28[lVar23] + (uint)*(byte *)((long)puVar20 + lVar23); + puVar28[lVar23 + 1] = (uint)bVar42 + puVar28[lVar23 + 1]; + bVar42 = *(byte *)((long)puVar20 + lVar23 + 3); + puVar28[lVar23 + 2] = puVar28[lVar23 + 2] + (uint)*(byte *)((long)puVar20 + lVar23 + 2); + /* try { // try from 003177f8 to 004177fb has its CatchHandler @ 003194d0 */ + puVar28[lVar23 + 3] = (uint)bVar42 + puVar28[lVar23 + 3]; + if (iVar10 + 4 < iVar1) { + bVar42 = *(byte *)((long)puVar20 + lVar24 + 1); + puVar28[lVar24] = puVar28[lVar24] + (uint)*(byte *)((long)puVar20 + lVar24); + puVar28[lVar24 + 1] = (uint)bVar42 + puVar28[lVar24 + 1]; + bVar42 = *(byte *)((long)puVar20 + lVar24 + 3); + puVar28[lVar24 + 2] = puVar28[lVar24 + 2] + (uint)*(byte *)((long)puVar20 + lVar24 + 2); + puVar28[lVar24 + 3] = (uint)bVar42 + puVar28[lVar24 + 3]; + if (iVar10 + 8 < iVar1) { + bVar42 = *(byte *)((long)puVar20 + lVar25 + 1); + puVar28[lVar25] = puVar28[lVar25] + (uint)*(byte *)((long)puVar20 + lVar25); + /* try { // try from 00317884 to 0041792b has its CatchHandler @ 003194b4 */ + puVar28[lVar25 + 1] = (uint)bVar42 + puVar28[lVar25 + 1]; + bVar42 = *(byte *)((long)puVar20 + lVar25 + 3); + puVar28[lVar25 + 2] = puVar28[lVar25 + 2] + (uint)*(byte *)((long)puVar20 + lVar25 + 2); + puVar28[lVar25 + 3] = (uint)bVar42 + puVar28[lVar25 + 3]; + } + } + } + } +LAB_003178b8: + if (iVar6 < (int)uVar12) { + if (((uint *)((long)puVar17 + lVar7) < puVar28 + (ulong)uVar13 + lVar22 && + puVar31 < (uint *)((long)puVar17 + lVar7 + (ulong)uVar13)) || (uVar13 < 0x13)) { + lVar27 = 0; + do { + puVar31[lVar27] = puVar31[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27 + lVar22); + lVar27 = lVar27 + 1; + } while (lVar27 != (ulong)((uVar12 - 1) - iVar6) + 1); + goto joined_r0x003176cc; + } + iVar40 = iVar6; + if ((uVar9 != 0) && + ((*puVar31 = *puVar31 + (uint)*(byte *)((long)puVar20 + lVar22), iVar40 = iVar3, uVar9 != 1 + && (puVar28[iVar3] = puVar28[iVar3] + (uint)*(byte *)((long)puVar20 + (long)iVar3), + iVar40 = iVar4, uVar9 == 3)))) { + puVar28[iVar4] = puVar28[iVar4] + (uint)*(byte *)((long)puVar20 + (long)iVar4); + iVar40 = iVar6 + 3; + } + /* try { // try from 00317948 to 0041794b has its CatchHandler @ 00319688 */ + /* try { // try from 00317950 to 00417953 has its CatchHandler @ 003194b4 */ + if (0xe < (uVar13 - 1) - uVar9) { + uVar35 = 0; + puVar36 = puVar28 + lVar22 + (ulong)uVar9; + puVar30 = puVar28 + (ulong)uVar9 + lVar22; + pbVar34 = (byte *)((long)puVar17 + lVar7 + (ulong)uVar9); + do { + uVar49 = *(undefined8 *)puVar36; + uVar35 = uVar35 + 1; + uVar53 = *(undefined8 *)(puVar36 + 10); + uVar52 = *(undefined8 *)(puVar36 + 8); + uVar48 = *(undefined8 *)(pbVar34 + 8); + uVar47 = *(undefined8 *)pbVar34; + bVar42 = (byte)((ulong)uVar47 >> 8); + bVar45 = (byte)((ulong)uVar47 >> 0x28); + uVar15 = CONCAT12((char)((ulong)uVar48 >> 8),(short)uVar48) & 0xff00ff; + bVar46 = (byte)((ulong)uVar48 >> 0x28); + uVar55 = *(undefined8 *)(puVar36 + 6); + uVar54 = *(undefined8 *)(puVar36 + 4); + uVar51 = *(undefined8 *)(puVar36 + 0xe); + uVar50 = *(undefined8 *)(puVar36 + 0xc); + /* try { // try from 003179c4 to 004179c7 has its CatchHandler @ 00319680 */ + iVar14 = (uint)bVar45 + (int)((ulong)uVar54 >> 0x20); + *(ulong *)(puVar30 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(puVar36 + 2) >> 0x20) + + (uint)(byte)((ulong)uVar47 >> 0x18), + (int)*(undefined8 *)(puVar36 + 2) + (uint)(byte)((ulong)uVar47 >> 0x10)); + *(ulong *)puVar30 = + CONCAT44((int)((ulong)uVar49 >> 0x20) + (uint)bVar42, + (int)uVar49 + (CONCAT12(bVar42,(ushort)(byte)uVar47) & 0xffff)); + *(ulong *)(puVar30 + 6) = + CONCAT44((uint)(byte)((ulong)uVar47 >> 0x38) + (int)((ulong)uVar55 >> 0x20), + (uint)(byte)((ulong)uVar47 >> 0x30) + (int)uVar55); + *(ulong *)(puVar30 + 4) = + CONCAT26((short)((uint)iVar14 >> 0x10), + CONCAT24((short)iVar14, + (CONCAT12(bVar45,(ushort)(byte)((ulong)uVar47 >> 0x20)) & 0xffff) + + (int)uVar54)); + *(ulong *)(puVar30 + 10) = + CONCAT44((uint)(byte)((ulong)uVar48 >> 0x18) + (int)((ulong)uVar53 >> 0x20), + (uint)(byte)((ulong)uVar48 >> 0x10) + (int)uVar53); + *(ulong *)(puVar30 + 8) = + CONCAT44((uint)(byte)(uVar15 >> 0x10) + (int)((ulong)uVar52 >> 0x20), + (uVar15 & 0xffff) + (int)uVar52); + *(ulong *)(puVar30 + 0xe) = + CONCAT44((uint)(byte)((ulong)uVar48 >> 0x38) + (int)((ulong)uVar51 >> 0x20), + (uint)(byte)((ulong)uVar48 >> 0x30) + (int)uVar51); + *(ulong *)(puVar30 + 0xc) = + CONCAT44((uint)bVar46 + (int)((ulong)uVar50 >> 0x20), + (CONCAT12(bVar46,(ushort)(byte)((ulong)uVar48 >> 0x20)) & 0xffff) + + (int)uVar50); + puVar36 = puVar36 + 0x10; + puVar30 = puVar30 + 0x10; + pbVar34 = pbVar34 + 0x10; + } while (uVar35 < uVar8); + iVar40 = iVar40 + iVar56; + if (uVar13 - uVar9 == iVar56) goto joined_r0x003176cc; + } + lVar27 = (long)iVar40; + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 1 < (int)uVar12) { + lVar27 = (long)(iVar40 + 1); + /* try { // try from 00317a38 to 00417a3b has its CatchHandler @ 003195d8 */ + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 2 < (int)uVar12) { + lVar27 = (long)(iVar40 + 2); + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 3 < (int)uVar12) { + lVar27 = (long)(iVar40 + 3); + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 4 < (int)uVar12) { + lVar27 = (long)(iVar40 + 4); + /* try { // try from 00317aac to 00417aaf has its CatchHandler @ 003195a4 */ + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 5 < (int)uVar12) { + lVar27 = (long)(iVar40 + 5); + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 6 < (int)uVar12) { + lVar27 = (long)(iVar40 + 6); + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 7 < (int)uVar12) { + lVar27 = (long)(iVar40 + 7); + /* try { // try from 00317b20 to 00417b23 has its CatchHandler @ 0031934c */ + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 8 < (int)uVar12) { + lVar27 = (long)(iVar40 + 8); + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 9 < (int)uVar12) { + lVar27 = (long)(iVar40 + 9); + puVar28[lVar27] = puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 10 < (int)uVar12) { + lVar27 = (long)(iVar40 + 10); + puVar28[lVar27] = + puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + /* try { // try from 00317b94 to 00417b97 has its CatchHandler @ 003194f4 */ + if (iVar40 + 0xb < (int)uVar12) { + lVar27 = (long)(iVar40 + 0xb); + puVar28[lVar27] = + puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 0xc < (int)uVar12) { + lVar27 = (long)(iVar40 + 0xc); + puVar28[lVar27] = + puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 0xd < (int)uVar12) { + lVar27 = (long)(iVar40 + 0xd); + puVar28[lVar27] = + puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + if (iVar40 + 0xe < (int)uVar12) { + lVar27 = (long)(iVar40 + 0xe); + /* try { // try from 00317c08 to 00417c0b has its CatchHandler @ 00319508 */ + puVar28[lVar27] = + puVar28[lVar27] + (uint)*(byte *)((long)puVar20 + lVar27); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } while( true ); + if (0 < (int)uVar12) { + /* try { // try from 00317c34 to 00417c87 has its CatchHandler @ 00317050 */ + if ((puVar57 < puVar28 + 4 && puVar28 < puVar57 + 4) || (uVar12 < 0xc)) { + lVar39 = 0; + do { + puVar57[lVar39] = puVar28[lVar39]; + lVar39 = lVar39 + 1; + } while ((int)lVar39 < (int)uVar12); + } + else { + uVar32 = -((uint)((ulong)puVar28 >> 2) & 3) & 3; + if (uVar12 < uVar32) { + uVar32 = uVar12; + } + uVar38 = 0; + if (uVar32 != 0) { + *puVar57 = *puVar28; + if (uVar32 == 1) { + uVar38 = 1; + } + else { + puVar57[1] = puVar28[1]; + if (uVar32 == 3) { + uVar38 = 3; + puVar57[2] = puVar28[2]; + } + else { + uVar38 = 2; + } + } + } + uVar2 = ((uVar12 - uVar32) - 4 >> 2) + 1; + iVar10 = uVar2 * 4; + if (2 < (uVar12 - 1) - uVar32) { + /* try { // try from 00317cd8 to 00417cdb has its CatchHandler @ 003194b4 */ + uVar29 = 0; + puVar20 = puVar28 + uVar32; + puVar31 = puVar57 + uVar32; + do { + uVar47 = *(undefined8 *)puVar20; + uVar29 = uVar29 + 1; + *(undefined8 *)(puVar31 + 2) = *(undefined8 *)(puVar20 + 2); + *(undefined8 *)puVar31 = uVar47; + puVar20 = puVar20 + 4; + puVar31 = puVar31 + 4; + } while (uVar29 < uVar2); + uVar38 = (ulong)(uint)((int)uVar38 + iVar10); + if (iVar10 == uVar12 - uVar32) goto LAB_00317d4c; + } + uVar19 = -(uVar38 >> 0x1f) & 0xfffffffc00000000 | uVar38 << 2; + *(undefined4 *)((long)puVar57 + uVar19) = *(undefined4 *)((long)puVar28 + uVar19); + if (((int)uVar38 + 1 < (int)uVar12) && + (*(undefined4 *)((long)puVar57 + uVar19 + 4) = *(undefined4 *)((long)puVar28 + uVar19 + 4), + (int)uVar38 + 2 < (int)uVar12)) { + *(undefined4 *)((long)puVar57 + uVar19 + 8) = *(undefined4 *)((long)puVar28 + uVar19 + 8); + } + } + } +LAB_00317d4c: + /* try { // try from 00317d4c to 00417d4f has its CatchHandler @ 00319680 */ + if (bVar18) { + operator_delete__(puVar28); + } + return; +} + + +================================================================== + +### FUNC 00317eb4 (3496 bytes) name=FUN_00317eb4 + +void FUN_00317eb4(uint *param_1,long param_2) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + byte *pbVar5; + int iVar6; + uint *puVar7; + long lVar8; + uint uVar9; + uint uVar10; + int iVar11; + int iVar12; + byte bVar13; + uint uVar14; + uint uVar15; + int iVar16; + undefined1 auVar17 [13]; + undefined1 auVar18 [13]; + byte bVar19; + byte bVar20; + byte bVar21; + byte bVar22; + byte bVar23; + byte bVar24; + byte bVar25; + byte bVar26; + byte bVar27; + uint *puVar28; + uint uVar29; + uint uVar30; + uint uVar31; + bool bVar32; + ulong uVar33; + uint *puVar34; + double *pdVar35; + ulong *puVar36; + long lVar37; + long lVar38; + long lVar39; + long lVar40; + uint *puVar41; + long lVar42; + uint *puVar43; + uint *puVar44; + double *pdVar45; + uint uVar46; + uint uVar47; + byte *pbVar48; + uint uVar49; + uint *puVar50; + uint *puVar51; + uint uVar52; + ulong uVar53; + long lVar54; + int iVar55; + uint *puVar56; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined8 uVar61; + undefined8 uVar62; + undefined8 uVar63; + undefined8 uVar64; + undefined8 uVar65; + int iVar66; + uint auStack_420 [264]; + + puVar43 = auStack_420; + iVar11 = (*(int **)(param_1 + 0x10))[1]; + iVar12 = **(int **)(param_1 + 0x10); + uVar14 = iVar11 + (*param_1 >> 3 & 0x1ff) * iVar11; + uVar53 = (ulong)(int)uVar14; + /* try { // try from 00317f1c to 00417f1f has its CatchHandler @ 003194f4 */ + if (uVar53 < 0x109) { + /* try { // try from 00318c28 to 00418c3b has its CatchHandler @ 00317050 */ + bVar32 = false; + } + else { + uVar33 = uVar53 << 2; + if (0x1fc0000000000000 < uVar53) { + uVar33 = 0xffffffffffffffff; + } + puVar34 = operator_new__(uVar33); + bVar32 = puVar34 != puVar43; + puVar43 = puVar34; + } + pdVar35 = *(double **)(param_2 + 0x10); + puVar34 = *(uint **)(param_1 + 4); + lVar54 = *(long *)(param_1 + 0x14); + if (0 < (int)uVar14) { + /* try { // try from 00317f90 to 00417f93 has its CatchHandler @ 00319508 */ + if ((puVar34 < puVar43 + uVar53 && puVar43 < (uint *)((long)puVar34 + uVar53)) || + (uVar14 < 0x15)) { + lVar37 = 0; + do { + puVar43[lVar37] = (uint)*(byte *)((long)puVar34 + lVar37); + lVar37 = lVar37 + 1; + /* try { // try from 00318c48 to 00418c4b has its CatchHandler @ 00319508 */ + } while ((int)lVar37 < (int)uVar14); + } + else { + uVar46 = -((uint)((ulong)puVar43 >> 2) & 3) & 3; + uVar52 = uVar14; + if (uVar46 < uVar14) { + uVar52 = uVar46; + } + uVar46 = uVar52; + if ((uVar52 != 0) && (*puVar43 = (uint)(byte)*puVar34, uVar52 != 1)) { + puVar43[1] = (uint)*(byte *)((long)puVar34 + 1); + if (uVar52 == 3) { + puVar43[2] = (uint)*(byte *)((long)puVar34 + 2); + } + else { + uVar46 = 2; + /* try { // try from 00318c58 to 00418c5b has its CatchHandler @ 003194f4 */ + } + } + uVar47 = 0; + uVar1 = ((uVar14 - uVar52) - 0x10 >> 4) + 1; + iVar11 = uVar1 * 0x10; + puVar36 = (ulong *)(puVar43 + uVar52); + pbVar48 = (byte *)((long)puVar34 + (ulong)uVar52); + do { + /* try { // try from 00317ffc to 00417fff has its CatchHandler @ 003194d0 */ + bVar13 = *pbVar48; + bVar19 = pbVar48[1]; + bVar20 = pbVar48[8]; + bVar21 = pbVar48[9]; + bVar22 = pbVar48[10]; + bVar23 = pbVar48[0xb]; + /* try { // try from 00318008 to 0041800b has its CatchHandler @ 0031960c */ + uVar47 = uVar47 + 1; + /* try { // try from 00318014 to 00418017 has its CatchHandler @ 00319630 */ + /* try { // try from 00318020 to 00418023 has its CatchHandler @ 00319510 */ + uVar33 = CONCAT35(0,CONCAT14(pbVar48[5],(uint)pbVar48[4])); + auVar17[8] = pbVar48[6]; + auVar17._0_8_ = uVar33; + auVar17._9_3_ = 0; + auVar17[0xc] = pbVar48[7]; + /* try { // try from 0031802c to 0041802f has its CatchHandler @ 00319474 */ + uVar53 = CONCAT35(0,CONCAT14(pbVar48[0xd],(uint)pbVar48[0xc])); + auVar18[8] = pbVar48[0xe]; + auVar18._0_8_ = uVar53; + auVar18._9_3_ = 0; + auVar18[0xc] = pbVar48[0xf]; + puVar36[1] = (ulong)CONCAT14(pbVar48[3],(uint)pbVar48[2]); + *puVar36 = (ulong)((uint6)CONCAT14(bVar19,(uint)CONCAT12(bVar19,(ushort)bVar13)) & + 0xffff0000ffff); + puVar36[3] = (ulong)auVar17._8_5_; + puVar36[2] = uVar33; + /* try { // try from 00318038 to 0041803b has its CatchHandler @ 003195e0 */ + puVar36[5] = (ulong)CONCAT14(bVar23,(uint)bVar22); + puVar36[4] = (ulong)((uint6)CONCAT14(bVar21,(uint)CONCAT12(bVar21,(ushort)bVar20)) & + 0xffff0000ffff); + puVar36[7] = (ulong)auVar18._8_5_; + puVar36[6] = uVar53; + puVar36 = puVar36 + 8; + pbVar48 = pbVar48 + 0x10; + } while (uVar47 < uVar1); + /* try { // try from 00318044 to 00418047 has its CatchHandler @ 00319604 */ + iVar6 = uVar46 + iVar11; + if (uVar14 - uVar52 != iVar11) { + /* try { // try from 00318050 to 00418053 has its CatchHandler @ 00319354 */ + iVar11 = iVar6 + 1; + /* try { // try from 0031805c to 0041805f has its CatchHandler @ 00319554 */ + puVar43[iVar6] = (uint)*(byte *)((long)puVar34 + (long)iVar6); + if (iVar11 < (int)uVar14) { + iVar2 = iVar6 + 2; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar2 < (int)uVar14) { + iVar11 = iVar6 + 3; + puVar43[iVar2] = (uint)*(byte *)((long)puVar34 + (long)iVar2); + if (iVar11 < (int)uVar14) { + iVar2 = iVar6 + 4; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar2 < (int)uVar14) { + iVar11 = iVar6 + 5; + puVar43[iVar2] = (uint)*(byte *)((long)puVar34 + (long)iVar2); + if (iVar11 < (int)uVar14) { + iVar2 = iVar6 + 6; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar2 < (int)uVar14) { + iVar11 = iVar6 + 7; + puVar43[iVar2] = (uint)*(byte *)((long)puVar34 + (long)iVar2); + if (iVar11 < (int)uVar14) { + iVar2 = iVar6 + 8; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar2 < (int)uVar14) { + iVar11 = iVar6 + 9; + puVar43[iVar2] = (uint)*(byte *)((long)puVar34 + (long)iVar2); + if (iVar11 < (int)uVar14) { + iVar2 = iVar6 + 10; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar2 < (int)uVar14) { + iVar11 = iVar6 + 0xb; + puVar43[iVar2] = (uint)*(byte *)((long)puVar34 + (long)iVar2); + if (iVar11 < (int)uVar14) { + iVar2 = iVar6 + 0xc; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar2 < (int)uVar14) { + iVar11 = iVar6 + 0xd; + puVar43[iVar2] = (uint)*(byte *)((long)puVar34 + (long)iVar2); + if (iVar11 < (int)uVar14) { + iVar6 = iVar6 + 0xe; + puVar43[iVar11] = (uint)*(byte *)((long)puVar34 + (long)iVar11); + if (iVar6 < (int)uVar14) { + puVar43[iVar6] = (uint)*(byte *)((long)puVar34 + (long)iVar6); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar47 = uVar14 - 4; + iVar2 = uVar14 - 3; + uVar1 = uVar47 >> 2; + uVar46 = uVar1 + 1; + uVar52 = (uVar1 - 3 >> 2) + 1; + iVar6 = uVar46 * 4; + /* try { // try from 00318204 to 004182b7 has its CatchHandler @ 0031934c */ + iVar11 = uVar52 * 0x10; + if (uVar47 < 0xc) { + iVar11 = 0; + } + if (iVar2 < 1) { + iVar6 = 0; + } + uVar15 = uVar14 - iVar6; + iVar3 = iVar6 + 1; + lVar37 = (long)iVar6; + lVar38 = (long)iVar11; + puVar7 = puVar43 + lVar37; + uVar9 = -((uint)((ulong)puVar7 >> 2) & 3) & 3; + lVar39 = (long)(iVar11 + 4); + uVar10 = uVar15; + if (uVar9 < uVar15) { + uVar10 = uVar9; + } + lVar40 = (long)(iVar11 + 8); + iVar4 = iVar6 + 2; + lVar8 = lVar37 + lVar54; + uVar9 = ((uVar15 - uVar10) - 0x10 >> 4) + 1; + iVar66 = uVar9 * 0x10; + /* try { // try from 00318424 to 0041845f has its CatchHandler @ 00317050 */ +joined_r0x0031847c: + do { + puVar28 = puVar34; + iVar12 = iVar12 + -1; + if (iVar12 == 0) break; + puVar34 = (uint *)((long)puVar28 + lVar54); + if (0 < iVar2) { + if ((puVar34 < puVar43 + (ulong)uVar46 * 4 && + puVar43 < (uint *)((long)puVar28 + lVar54 + (ulong)uVar46 * 4)) || (uVar46 < 4)) { + /* try { // try from 00318b94 to 00418b97 has its CatchHandler @ 00319440 */ + /* try { // try from 00318ba4 to 00418ba7 has its CatchHandler @ 003193c4 */ + pbVar48 = (byte *)((long)puVar34 + 1); + puVar50 = puVar43; + do { + /* try { // try from 00318bb0 to 00418bb3 has its CatchHandler @ 003196e0 */ + pbVar5 = pbVar48 + 4; + /* try { // try from 00318bbc to 00418bbf has its CatchHandler @ 0031969c */ + bVar13 = pbVar48[-1]; + /* try { // try from 00318bc8 to 00418bcb has its CatchHandler @ 00319450 */ + puVar50[1] = (uint)*pbVar48 + puVar50[1]; + *puVar50 = *puVar50 + (uint)bVar13; + /* try { // try from 00318bd4 to 00418bd7 has its CatchHandler @ 00319518 */ + bVar13 = pbVar48[1]; + /* try { // try from 00318be0 to 00418be3 has its CatchHandler @ 003195d8 */ + puVar50[3] = (uint)pbVar48[2] + puVar50[3]; + /* try { // try from 00318bec to 00418bef has its CatchHandler @ 003195a4 */ + puVar50[2] = puVar50[2] + (uint)bVar13; + pbVar48 = pbVar5; + puVar50 = puVar50 + 4; + } while (pbVar5 != (byte *)((long)puVar34 + (ulong)uVar1 * 4 + 5)); + } + else { + /* try { // try from 003184b8 to 004184bb has its CatchHandler @ 0031942c */ + /* try { // try from 003184c0 to 004184c3 has its CatchHandler @ 00317050 */ + if (0xb < uVar47) { + puVar50 = puVar43 + 4; + puVar44 = puVar43 + 8; + puVar41 = puVar43 + 0xc; + uVar49 = 0; + puVar51 = puVar43; + puVar56 = puVar34; + do { + uVar29 = *puVar56; + bVar13 = *(byte *)((long)puVar56 + 1); + uVar30 = puVar56[1]; + bVar19 = *(byte *)((long)puVar56 + 5); + bVar20 = *(byte *)((long)puVar56 + 6); + bVar21 = *(byte *)((long)puVar56 + 7); + uVar31 = puVar56[2]; + bVar22 = *(byte *)((long)puVar56 + 9); + bVar23 = *(byte *)((long)puVar56 + 10); + bVar24 = *(byte *)((long)puVar56 + 0xb); + uVar49 = uVar49 + 1; + uVar64 = *(undefined8 *)(puVar50 + 2); + uVar63 = *(undefined8 *)puVar50; + uVar62 = *(undefined8 *)(puVar44 + 2); + uVar61 = *(undefined8 *)puVar44; + /* try { // try from 003184fc to 004184ff has its CatchHandler @ 003194b4 */ + iVar55 = (int)((ulong)uVar63 >> 0x20) + (uint)bVar19; + auVar60._0_8_ = + CONCAT44((int)((ulong)*(undefined8 *)puVar41 >> 0x20) + + (uint)*(byte *)((long)puVar56 + 0xd), + (int)*(undefined8 *)puVar41 + (uint)(byte)puVar56[3]); + auVar60._8_4_ = (int)*(undefined8 *)(puVar41 + 2) + (uint)*(byte *)((long)puVar56 + 0xe) + ; + auVar60._12_4_ = + (int)((ulong)*(undefined8 *)(puVar41 + 2) >> 0x20) + + (uint)*(byte *)((long)puVar56 + 0xf); + *(ulong *)(puVar51 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(puVar51 + 2) >> 0x20) + + (uint)*(byte *)((long)puVar56 + 3), + (int)*(undefined8 *)(puVar51 + 2) + (uint)*(byte *)((long)puVar56 + 2)); + *(ulong *)puVar51 = + CONCAT44((int)((ulong)*(undefined8 *)puVar51 >> 0x20) + (uint)bVar13, + (int)*(undefined8 *)puVar51 + + (CONCAT12(bVar13,(ushort)(byte)uVar29) & 0xffff)); + puVar51 = puVar51 + 0x10; + *(ulong *)(puVar50 + 2) = + CONCAT44((int)((ulong)uVar64 >> 0x20) + (uint)bVar21,(int)uVar64 + (uint)bVar20); + *(ulong *)puVar50 = + CONCAT26((short)((uint)iVar55 >> 0x10), + CONCAT24((short)iVar55, + (int)uVar63 + (CONCAT12(bVar19,(ushort)(byte)uVar30) & 0xffff))); + puVar50 = puVar50 + 0x10; + *(ulong *)(puVar44 + 2) = + CONCAT44((int)((ulong)uVar62 >> 0x20) + (uint)bVar24,(int)uVar62 + (uint)bVar23); + *(ulong *)puVar44 = + CONCAT44((int)((ulong)uVar61 >> 0x20) + (uint)bVar22, + (int)uVar61 + (CONCAT12(bVar22,(ushort)(byte)uVar31) & 0xffff)); + puVar44 = puVar44 + 0x10; + *(long *)(puVar41 + 2) = auVar60._8_8_; + *(undefined8 *)puVar41 = auVar60._0_8_; + puVar41 = puVar41 + 0x10; + puVar56 = puVar56 + 4; + } while (uVar49 < uVar52); + if (uVar46 == uVar52 * 4) goto LAB_00318668; + } + /* try { // try from 00318560 to 00418563 has its CatchHandler @ 00319394 */ + bVar13 = *(byte *)((long)puVar34 + lVar38 + 1); + puVar43[lVar38] = puVar43[lVar38] + (uint)*(byte *)((long)puVar34 + lVar38); + puVar43[lVar38 + 1] = (uint)bVar13 + puVar43[lVar38 + 1]; + bVar13 = *(byte *)((long)puVar34 + lVar38 + 3); + puVar43[lVar38 + 2] = puVar43[lVar38 + 2] + (uint)*(byte *)((long)puVar34 + lVar38 + 2); + puVar43[lVar38 + 3] = (uint)bVar13 + puVar43[lVar38 + 3]; + if (iVar11 + 4 < iVar2) { + bVar13 = *(byte *)((long)puVar34 + lVar39 + 1); + puVar43[lVar39] = puVar43[lVar39] + (uint)*(byte *)((long)puVar34 + lVar39); + /* try { // try from 003185e4 to 004185e7 has its CatchHandler @ 003193c4 */ + puVar43[lVar39 + 1] = (uint)bVar13 + puVar43[lVar39 + 1]; + bVar13 = *(byte *)((long)puVar34 + lVar39 + 3); + puVar43[lVar39 + 2] = puVar43[lVar39 + 2] + (uint)*(byte *)((long)puVar34 + lVar39 + 2); + puVar43[lVar39 + 3] = (uint)bVar13 + puVar43[lVar39 + 3]; + if (iVar11 + 8 < iVar2) { + bVar13 = *(byte *)((long)puVar34 + lVar40 + 1); + puVar43[lVar40] = puVar43[lVar40] + (uint)*(byte *)((long)puVar34 + lVar40); + puVar43[lVar40 + 1] = (uint)bVar13 + puVar43[lVar40 + 1]; + bVar13 = *(byte *)((long)puVar34 + lVar40 + 3); + puVar43[lVar40 + 2] = puVar43[lVar40 + 2] + (uint)*(byte *)((long)puVar34 + lVar40 + 2); + puVar43[lVar40 + 3] = (uint)bVar13 + puVar43[lVar40 + 3]; + } + } + } + } +LAB_00318668: + /* try { // try from 00318668 to 0041866b has its CatchHandler @ 00319440 */ + if (iVar6 < (int)uVar14) { + if (((uint *)((long)puVar28 + lVar8) < puVar43 + (ulong)uVar15 + lVar37 && + puVar7 < (uint *)((long)puVar28 + lVar8 + (ulong)uVar15)) || (uVar15 < 0x13)) { + lVar42 = 0; + /* try { // try from 00318b68 to 00418b6b has its CatchHandler @ 003194f4 */ + do { + /* try { // try from 00318b74 to 00418b77 has its CatchHandler @ 003194b4 */ + puVar7[lVar42] = puVar7[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42 + lVar37); + lVar42 = lVar42 + 1; + /* try { // try from 00318b84 to 00418b87 has its CatchHandler @ 00319448 */ + } while (lVar42 != (ulong)((uVar14 - 1) - iVar6) + 1); + goto joined_r0x0031847c; + } + iVar55 = iVar6; + if ((uVar10 != 0) && + ((*puVar7 = *puVar7 + (uint)*(byte *)((long)puVar34 + lVar37), iVar55 = iVar3, uVar10 != 1 + && (puVar43[iVar3] = puVar43[iVar3] + (uint)*(byte *)((long)puVar34 + (long)iVar3), + iVar55 = iVar4, uVar10 == 3)))) { + /* try { // try from 003186ec to 004186ef has its CatchHandler @ 00319448 */ + puVar43[iVar4] = puVar43[iVar4] + (uint)*(byte *)((long)puVar34 + (long)iVar4); + iVar55 = iVar6 + 3; + } + if (0xe < (uVar15 - 1) - uVar10) { + uVar49 = 0; + puVar50 = puVar43 + lVar37 + (ulong)uVar10; + puVar44 = puVar43 + (ulong)uVar10 + lVar37; + pbVar48 = (byte *)((long)puVar28 + lVar8 + (ulong)uVar10); + do { + uVar61 = *(undefined8 *)puVar50; + uVar49 = uVar49 + 1; + uVar63 = *(undefined8 *)(puVar50 + 10); + uVar62 = *(undefined8 *)(puVar50 + 8); + bVar13 = *pbVar48; + bVar19 = pbVar48[1]; + bVar20 = pbVar48[4]; + bVar21 = pbVar48[5]; + bVar22 = pbVar48[6]; + bVar23 = pbVar48[7]; + bVar24 = pbVar48[8]; + bVar25 = pbVar48[9]; + bVar26 = pbVar48[10]; + bVar27 = pbVar48[0xb]; + /* try { // try from 00318748 to 0041874b has its CatchHandler @ 00319450 */ + uVar65 = *(undefined8 *)(puVar50 + 6); + uVar64 = *(undefined8 *)(puVar50 + 4); + iVar16 = (uint)bVar21 + (int)((ulong)uVar64 >> 0x20); + auVar58._0_8_ = + CONCAT44((uint)pbVar48[0xd] + (int)((ulong)*(undefined8 *)(puVar50 + 0xc) >> 0x20), + (uint)pbVar48[0xc] + (int)*(undefined8 *)(puVar50 + 0xc)); + auVar58._8_4_ = (uint)pbVar48[0xe] + (int)*(undefined8 *)(puVar50 + 0xe); + auVar58._12_4_ = (uint)pbVar48[0xf] + (int)((ulong)*(undefined8 *)(puVar50 + 0xe) >> 0x20) + ; + /* try { // try from 00318790 to 004187eb has its CatchHandler @ 00319518 */ + *(ulong *)(puVar44 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(puVar50 + 2) >> 0x20) + (uint)pbVar48[3], + (int)*(undefined8 *)(puVar50 + 2) + (uint)pbVar48[2]); + *(ulong *)puVar44 = + CONCAT44((int)((ulong)uVar61 >> 0x20) + (uint)bVar19, + (int)uVar61 + (CONCAT12(bVar19,(ushort)bVar13) & 0xffff)); + *(ulong *)(puVar44 + 6) = + CONCAT44((uint)bVar23 + (int)((ulong)uVar65 >> 0x20),(uint)bVar22 + (int)uVar65); + *(ulong *)(puVar44 + 4) = + CONCAT26((short)((uint)iVar16 >> 0x10), + CONCAT24((short)iVar16, + (CONCAT12(bVar21,(ushort)bVar20) & 0xffff) + (int)uVar64)); + *(ulong *)(puVar44 + 10) = + CONCAT44((uint)bVar27 + (int)((ulong)uVar63 >> 0x20),(uint)bVar26 + (int)uVar63); + *(ulong *)(puVar44 + 8) = + CONCAT44((uint)bVar25 + (int)((ulong)uVar62 >> 0x20), + (CONCAT12(bVar25,(ushort)bVar24) & 0xffff) + (int)uVar62); + *(long *)(puVar44 + 0xe) = auVar58._8_8_; + *(undefined8 *)(puVar44 + 0xc) = auVar58._0_8_; + puVar50 = puVar50 + 0x10; + puVar44 = puVar44 + 0x10; + pbVar48 = pbVar48 + 0x10; + } while (uVar49 < uVar9); + iVar55 = iVar55 + iVar66; + if (uVar15 - uVar10 == iVar66) goto joined_r0x0031847c; + } + lVar42 = (long)iVar55; + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 1 < (int)uVar14) { + lVar42 = (long)(iVar55 + 1); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 2 < (int)uVar14) { + /* try { // try from 00318804 to 00418807 has its CatchHandler @ 00319540 */ + lVar42 = (long)(iVar55 + 2); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 3 < (int)uVar14) { + lVar42 = (long)(iVar55 + 3); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 4 < (int)uVar14) { + lVar42 = (long)(iVar55 + 4); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 5 < (int)uVar14) { + lVar42 = (long)(iVar55 + 5); + /* try { // try from 00318878 to 0041887b has its CatchHandler @ 0031969c */ + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 6 < (int)uVar14) { + lVar42 = (long)(iVar55 + 6); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 7 < (int)uVar14) { + lVar42 = (long)(iVar55 + 7); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 8 < (int)uVar14) { + lVar42 = (long)(iVar55 + 8); + /* try { // try from 003188ec to 004188ef has its CatchHandler @ 003196e0 */ + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 9 < (int)uVar14) { + lVar42 = (long)(iVar55 + 9); + puVar43[lVar42] = puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 10 < (int)uVar14) { + lVar42 = (long)(iVar55 + 10); + puVar43[lVar42] = + puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 0xb < (int)uVar14) { + lVar42 = (long)(iVar55 + 0xb); + /* try { // try from 00318960 to 004189ff has its CatchHandler @ 00319518 */ + puVar43[lVar42] = + puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 0xc < (int)uVar14) { + lVar42 = (long)(iVar55 + 0xc); + puVar43[lVar42] = + puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 0xd < (int)uVar14) { + lVar42 = (long)(iVar55 + 0xd); + puVar43[lVar42] = + puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + if (iVar55 + 0xe < (int)uVar14) { + lVar42 = (long)(iVar55 + 0xe); + puVar43[lVar42] = + puVar43[lVar42] + (uint)*(byte *)((long)puVar34 + lVar42); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } while( true ); + if (0 < (int)uVar14) { + uVar46 = (uint)((ulong)pdVar35 >> 3) & 1; + if (uVar14 < uVar46) { + uVar46 = uVar14; + } + if (uVar14 < 5) { + uVar46 = uVar14; + } + uVar52 = 0; + if (uVar46 != 0) { + *pdVar35 = (double)(int)*puVar43; + uVar52 = uVar46; + if ((uVar46 != 1) && (pdVar35[1] = (double)(int)puVar43[1], uVar46 != 2)) { + pdVar35[2] = (double)(int)puVar43[2]; + if (uVar46 == 4) { + pdVar35[3] = (double)(int)puVar43[3]; + } + else { + uVar52 = 3; + } + } + if (uVar46 == uVar14) goto LAB_00318b14; + } + uVar1 = ((uVar14 - uVar46) - 4 >> 2) + 1; + iVar11 = uVar1 * 4; + /* try { // try from 00318a70 to 00418a73 has its CatchHandler @ 00319450 */ + if (2 < (uVar14 - 1) - uVar46) { + uVar47 = 0; + puVar34 = puVar43 + uVar46; + pdVar45 = pdVar35 + uVar46; + do { + uVar47 = uVar47 + 1; + auVar59._0_8_ = (long)(int)*puVar34; + auVar59._8_8_ = (long)(int)puVar34[1]; + auVar57._0_8_ = (long)(int)puVar34[2]; + auVar57._8_8_ = (long)(int)puVar34[3]; + auVar60 = NEON_scvtf(auVar59,8); + pdVar45[1] = auVar60._8_8_; + *pdVar45 = auVar60._0_8_; + auVar60 = NEON_scvtf(auVar57,8); + pdVar45[3] = auVar60._8_8_; + pdVar45[2] = auVar60._0_8_; + puVar34 = puVar34 + 4; + pdVar45 = pdVar45 + 4; + } while (uVar47 < uVar1); + uVar52 = uVar52 + iVar11; + if (iVar11 == uVar14 - uVar46) goto LAB_00318b14; + } + iVar11 = uVar52 + 1; + pdVar35[(int)uVar52] = (double)(int)puVar43[(int)uVar52]; + if (iVar11 < (int)uVar14) { + iVar12 = uVar52 + 2; + /* try { // try from 00318ae4 to 00418ae7 has its CatchHandler @ 003194b4 */ + pdVar35[iVar11] = (double)(int)puVar43[iVar11]; + if (iVar12 < (int)uVar14) { + pdVar35[iVar12] = (double)(int)puVar43[iVar12]; + } + } + } +LAB_00318b14: + if (bVar32) { + /* try { // try from 00318b1c to 00418b1f has its CatchHandler @ 0031934c */ + operator_delete__(puVar43); + } + /* try { // try from 00318b2c to 00418b2f has its CatchHandler @ 00319508 */ + /* try { // try from 00318b38 to 00418b3b has its CatchHandler @ 00319680 */ + /* try { // try from 00318b44 to 00418b47 has its CatchHandler @ 003195d8 */ + /* try { // try from 00318b50 to 00418b53 has its CatchHandler @ 003195a4 */ + return; +} + + +================================================================== + +### FUNC 00318c5c (840 bytes) name=FUN_00318c5c + +void FUN_00318c5c(char *param_1,char *param_2,long param_3) + +{ + char cVar1; + long lVar2; + ulong uVar3; + int iVar4; + long lVar5; + long lVar6; + ulong uVar7; + long lVar8; + char cVar9; + char *pcVar10; + ulong uVar11; + char *pcVar12; + uint uVar13; + char *pcVar14; + int iVar15; + long lVar16; + uint uVar17; + ulong uVar18; + long lVar19; + + /* try { // try from 00318c68 to 00418c6b has its CatchHandler @ 0031934c */ + lVar5 = (long)param_2 - (long)param_1; + if (lVar5 < 0x11) { + return; + } + if (param_3 != 0) { + lVar5 = lVar5 >> 1; + iVar15 = (int)param_1[1]; + param_3 = param_3 + -1; + uVar13 = (uint)(byte)param_2[-1]; + iVar4 = (int)param_1[lVar5]; + if (param_1[lVar5] <= param_1[1]) goto LAB_00318d5c; +LAB_00318ca4: + if (iVar4 < (int)uVar13) goto LAB_00318d6c; + if ((int)uVar13 <= iVar15) goto LAB_00318d88; + do { + cVar1 = *param_1; + uVar17 = (uint)cVar1; + *param_1 = (char)uVar13; + param_2[-1] = cVar1; + iVar15 = (int)*param_1; + iVar4 = (int)param_1[1]; + pcVar14 = param_2; + pcVar12 = param_1; + pcVar10 = param_2; + while( true ) { + while( true ) { + while( true ) { + param_2 = pcVar12 + 1; + while (iVar4 < iVar15) { + param_2 = param_2 + 1; + iVar4 = (int)*param_2; + } + pcVar14 = pcVar14 + -1; + while (iVar15 < (int)uVar17) { + pcVar14 = pcVar14 + -1; + uVar17 = (uint)*pcVar14; + } + if (pcVar14 <= param_2) break; + /* try { // try from 00318d0c to 00418d97 has its CatchHandler @ 003192b0 */ + *param_2 = (char)uVar17; + *pcVar14 = (char)iVar4; + uVar17 = (uint)(byte)pcVar14[-1]; + iVar15 = (int)*param_1; + iVar4 = (int)param_2[1]; + pcVar12 = param_2; + } + FUN_00318c5c(param_2,pcVar10,param_3); + lVar5 = (long)param_2 - (long)param_1; + if (lVar5 < 0x11) { + return; + } + if (param_3 == 0) goto LAB_00318e8c; + lVar5 = lVar5 >> 1; + iVar15 = (int)param_1[1]; + param_3 = param_3 + -1; + iVar4 = (int)param_1[lVar5]; + uVar13 = (uint)(byte)param_2[-1]; + if (param_1[1] < iVar4) goto LAB_00318ca4; +LAB_00318d5c: + if ((int)uVar13 <= iVar15) break; +LAB_00318d88: + iVar4 = (int)*param_1; + param_1[1] = *param_1; + *param_1 = (char)iVar15; + uVar17 = (uint)(byte)param_2[-1]; + pcVar14 = param_2; + pcVar12 = param_1; + pcVar10 = param_2; + } + if (iVar4 < (int)uVar13) break; +LAB_00318d6c: + cVar1 = *param_1; + *param_1 = (char)iVar4; + param_1[lVar5] = cVar1; + iVar15 = (int)*param_1; + iVar4 = (int)param_1[1]; + uVar17 = (uint)(byte)param_2[-1]; + pcVar14 = param_2; + pcVar12 = param_1; + pcVar10 = param_2; + } + } while( true ); + } +LAB_00318e8c: + lVar19 = lVar5 + -2 >> 1; + lVar16 = lVar19; + do { + pcVar12 = param_1 + lVar16; + cVar1 = param_1[lVar16]; + lVar6 = lVar16; + while (lVar6 < lVar5 + -1 >> 1) { + lVar8 = (lVar6 + 1) * 2; + pcVar12 = param_1 + lVar8; + /* try { // try from 00318ec8 to 00418ecb has its CatchHandler @ 003192b8 */ + cVar9 = param_1[lVar8]; + if ((int)cVar9 < (int)(uint)(byte)pcVar12[-1]) { + lVar8 = lVar8 + -1; + pcVar12 = param_1 + lVar8; + cVar9 = param_1[lVar8]; + } + param_1[lVar6] = cVar9; + lVar6 = lVar8; + } + if ((lVar6 == lVar19) && (((uint)lVar5 & 1) != 1)) { + lVar8 = (lVar6 + 1) * 2; + lVar6 = lVar8 + -1; + /* try { // try from 00318dc0 to 00418dc3 has its CatchHandler @ 003192a8 */ + *pcVar12 = param_1[lVar8 + -1]; + pcVar12 = param_1 + lVar6; + } + if (lVar16 < lVar6) { + lVar8 = lVar6 + -1 >> 1; + cVar9 = param_1[lVar8]; + /* try { // try from 00318de0 to 00418de3 has its CatchHandler @ 003191a8 */ + while (lVar2 = lVar8, cVar9 < cVar1) { + param_1[lVar6] = cVar9; + pcVar12 = param_1 + lVar2; + if (lVar2 <= lVar16) break; + lVar8 = (lVar2 + -1) / 2; + cVar9 = param_1[lVar8]; + lVar6 = lVar2; + } + *pcVar12 = cVar1; + if (lVar16 == 0) break; + } + else { + *pcVar12 = cVar1; + } + lVar16 = lVar16 + -1; + } while( true ); +LAB_00318dec: + param_2 = param_2 + -1; + cVar1 = *param_2; + uVar18 = (long)param_2 - (long)param_1; + *param_2 = *param_1; + lVar5 = (long)(uVar18 - 1) / 2; + if (lVar5 < 1) { + uVar7 = uVar18 & 1; + pcVar12 = param_1; + if ((uVar18 & 1) == 0) goto LAB_00318e50; + } + else { + uVar11 = 0; + do { + uVar7 = (uVar11 + 1) * 2; + pcVar12 = param_1 + uVar7; + cVar9 = param_1[uVar7]; + if ((int)cVar9 < (int)(uint)(byte)pcVar12[-1]) { + uVar7 = uVar7 - 1; + pcVar12 = param_1 + uVar7; + cVar9 = param_1[uVar7]; + } + param_1[uVar11] = cVar9; + uVar11 = uVar7; + } while ((long)uVar7 < lVar5); + if ((uVar18 & 1) == 0) { +LAB_00318e50: + /* try { // try from 00318e54 to 00418e57 has its CatchHandler @ 003192e0 */ + if (uVar7 == (long)(uVar18 - 2) / 2) { + /* try { // try from 00318f3c to 00418f3f has its CatchHandler @ 003192a8 */ + lVar5 = (uVar7 + 1) * 2; + uVar7 = lVar5 - 1; + *pcVar12 = param_1[lVar5 + -1]; + pcVar12 = param_1 + uVar7; + } + else if ((long)uVar7 < 1) goto LAB_00318e68; + } + uVar11 = (long)(uVar7 - 1) >> 1; + cVar9 = param_1[uVar11]; + while (uVar3 = uVar11, cVar9 < cVar1) { + param_1[uVar7] = cVar9; + pcVar12 = param_1 + uVar3; + uVar11 = (long)(uVar3 - 1) >> 1; + if (uVar3 == 0) break; + cVar9 = param_1[uVar11]; + uVar7 = uVar3; + } + } +LAB_00318e68: + *pcVar12 = cVar1; + if ((long)uVar18 < 2) { + return; + } + goto LAB_00318dec; +} + + +================================================================== + +### FUNC 00318fb0 (2376 bytes) name=FUN_00318fb0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00318fb0(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + uint uVar4; + byte bVar5; + long lVar6; + int iVar7; + size_t sVar8; + undefined1 auVar9 [16]; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + undefined1 (*pauVar14) [16]; + size_t __n; + byte *pbVar15; + int iVar16; + byte *pbVar17; + byte *pbVar18; + uint uVar19; + undefined1 (*pauVar20) [16]; + byte *pbVar21; + uint uVar22; + undefined1 (*pauVar23) [16]; + undefined1 (*pauVar24) [16]; + int iVar25; + long lVar26; + byte *__dest; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + int iVar29; + byte *local_418; + byte local_408 [1032]; + + /* try { // try from 00318fb0 to 00418fb3 has its CatchHandler @ 00319328 */ + local_418 = local_408; + lVar11 = *(long *)(param_1 + 0x10); + uVar4 = param_3 & 1 ^ 1; + lVar12 = *(long *)(param_2 + 0x10); + if (uVar4 == 0) { + iVar25 = *(int *)(param_1 + 8); + iVar29 = *(int *)(param_1 + 0xc); + /* try { // try from 003198b8 to 004198bb has its CatchHandler @ 0031adc0 */ + if (0x408 < (ulong)(long)iVar25) { + local_418 = operator_new__((long)iVar25); + /* try { // try from 003198d4 to 004198d7 has its CatchHandler @ 0031ada0 */ + } + } + else { + /* try { // try from 00319024 to 00419027 has its CatchHandler @ 00319304 */ + iVar29 = *(int *)(param_1 + 8); + iVar25 = *(int *)(param_1 + 0xc); + } + if (0 < iVar29) { + __n = (size_t)iVar25; + uVar3 = iVar25 / 2; + lVar26 = 0; + iVar7 = iVar25 + -1; + /* try { // try from 00319098 to 004190db has its CatchHandler @ 003192b0 */ + do { + if (uVar4 == 0) { + lVar13 = 0; + __dest = local_418; + if (0 < iVar25) { + do { + local_418[lVar13] = + *(byte *)(*(long *)(param_1 + 0x10) + lVar13 * **(long **)(param_1 + 0x48) + lVar26 + ); + lVar13 = lVar13 + 1; + } while ((int)lVar13 < iVar25); + } + } + else { + /* catch() { ... } // from try @ 00319768 with catch @ 00319720 + catch() { ... } // from try @ 00319860 with catch @ 00319720 + catch() { ... } // from try @ 003198f8 with catch @ 00319720 + catch() { ... } // from try @ 00319938 with catch @ 00319720 + catch() { ... } // from try @ 0031a354 with catch @ 00319720 + catch() { ... } // from try @ 0031a424 with catch @ 00319720 + catch() { ... } // from try @ 0031aba0 with catch @ 00319720 + catch() { ... } // from try @ 0031ac60 with catch @ 00319720 + catch() { ... } // from try @ 0031ad88 with catch @ 00319720 + catch() { ... } // from try @ 0031ad9c with catch @ 00319720 + catch() { ... } // from try @ 0031adb4 with catch @ 00319720 */ + __dest = (byte *)(*(long *)(param_2 + 0x10) + lVar26 * **(long **)(param_2 + 0x48)); + if (lVar11 != lVar12) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar26 * **(long **)(param_1 + 0x48)), + __n); + } + } + pbVar15 = __dest + __n; + if (__dest != pbVar15) { + FUN_00318c5c(__dest,pbVar15,(0x3f - LZCOUNT(__n)) * 2); + pbVar17 = __dest; + if (iVar25 < 0x11) { + while (pbVar21 = pbVar17 + 1, pbVar15 != pbVar21) { + bVar5 = *pbVar21; + if ((char)bVar5 < (char)*__dest) { + sVar8 = (long)pbVar21 - (long)__dest; + if (sVar8 != 0) { + memmove(pbVar21 + (1 - sVar8),__dest,sVar8); + } + *__dest = bVar5; + pbVar17 = pbVar21; + } + else { + uVar19 = (uint)*pbVar17; + /* catch() { ... } // from try @ 003188ec with catch @ 003196e0 + catch() { ... } // from try @ 00318bb0 with catch @ 003196e0 */ + pbVar18 = pbVar21; + if ((int)(char)bVar5 < (int)(uint)*pbVar17) { + do { + pbVar17 = pbVar18 + -1; + *pbVar18 = (byte)uVar19; + uVar19 = (uint)pbVar18[-2]; + pbVar18 = pbVar17; + } while ((int)(char)bVar5 < (int)uVar19); + *pbVar17 = bVar5; + pbVar17 = pbVar21; + } + else { + /* try { // try from 00319860 to 00419863 has its CatchHandler @ 00319720 */ + *pbVar21 = bVar5; + pbVar17 = pbVar21; + } + } + } + } + else { + pbVar17 = __dest + 1; + do { + pbVar21 = pbVar17; + bVar5 = *pbVar21; + if ((char)bVar5 < (char)*__dest) { + sVar8 = (long)pbVar21 - (long)__dest; + if (sVar8 != 0) { + memmove(pbVar21 + (1 - sVar8),__dest,sVar8); + } + /* try { // try from 00319768 to 00419807 has its CatchHandler @ 00319720 */ + *__dest = bVar5; + } + else { + uVar19 = (uint)pbVar21[-1]; + pbVar17 = pbVar21; + if ((int)(char)bVar5 < (int)(uint)pbVar21[-1]) { + do { + pbVar18 = pbVar17 + -1; + *pbVar17 = (byte)uVar19; + uVar19 = (uint)pbVar17[-2]; + pbVar17 = pbVar18; + } while ((int)(char)bVar5 < (int)uVar19); + *pbVar18 = bVar5; + } + else { + *pbVar21 = bVar5; + } + } + pbVar17 = pbVar21 + 1; + } while (pbVar17 != __dest + 0x10); + if (pbVar15 != pbVar17) { + uVar19 = (uint)*pbVar21; + iVar16 = (int)(char)*pbVar17; + if ((int)(char)*pbVar17 < (int)(uint)*pbVar21) goto LAB_003197a0; + do { + *pbVar17 = (byte)iVar16; + while( true ) { + pbVar17 = pbVar17 + 1; + if (pbVar17 == pbVar15) goto LAB_00319144; + uVar19 = (uint)pbVar17[-1]; + iVar16 = (int)(char)*pbVar17; + pbVar21 = pbVar17 + -1; + if ((int)uVar19 <= iVar16) break; +LAB_003197a0: + do { + pbVar18 = pbVar21; + pbVar18[1] = (byte)uVar19; + uVar19 = (uint)pbVar18[-1]; + pbVar21 = pbVar18 + -1; + } while (iVar16 < (int)uVar19); + *pbVar18 = (byte)iVar16; + } + } while( true ); + } + } + } +LAB_00319144: + /* try { // try from 0031914c to 0041915b has its CatchHandler @ 003194b4 */ + if (((param_3 & 0x10) != 0) && (0 < (int)uVar3)) { + if (uVar3 < 0x14 || (long)(__n - uVar3) < (long)(ulong)uVar3 && 0 < iVar25) { + lVar13 = 0; + /* try { // try from 00319878 to 0041987b has its CatchHandler @ 0031adb8 */ + pbVar15 = __dest + iVar7; + do { + bVar5 = __dest[lVar13]; + __dest[lVar13] = *pbVar15; + lVar13 = lVar13 + 1; + *pbVar15 = bVar5; + pbVar15 = pbVar15 + -1; + } while ((int)lVar13 < (int)uVar3); + } + else { + uVar19 = -(int)__dest & 0xf; + /* try { // try from 00319164 to 00419167 has its CatchHandler @ 003192b0 */ + uVar10 = uVar3; + if (uVar19 < uVar3) { + uVar10 = uVar19; + } + uVar19 = uVar10; + if (uVar10 != 0) { + bVar5 = *__dest; + /* try { // try from 00319170 to 00419173 has its CatchHandler @ 00319304 */ + /* try { // try from 0031917c to 0041917f has its CatchHandler @ 00319328 */ + *__dest = __dest[iVar7]; + __dest[iVar7] = bVar5; + /* try { // try from 00319188 to 0041918b has its CatchHandler @ 003192a8 */ + if (uVar10 != 1) { + /* try { // try from 00319194 to 00419197 has its CatchHandler @ 003192b8 */ + bVar5 = __dest[1]; + __dest[1] = __dest[iVar25 + -2]; + /* try { // try from 003191a0 to 004191a3 has its CatchHandler @ 003192e0 */ + __dest[iVar25 + -2] = bVar5; + if (uVar10 != 2) { + /* catch() { ... } // from try @ 00318de0 with catch @ 003191a8 */ + bVar5 = __dest[2]; + __dest[2] = __dest[iVar25 + -3]; + __dest[iVar25 + -3] = bVar5; + if (uVar10 != 3) { + bVar5 = __dest[3]; + __dest[3] = __dest[iVar25 + -4]; + __dest[iVar25 + -4] = bVar5; + if (uVar10 != 4) { + bVar5 = __dest[4]; + __dest[4] = __dest[iVar25 + -5]; + __dest[iVar25 + -5] = bVar5; + if (uVar10 != 5) { + bVar5 = __dest[5]; + __dest[5] = __dest[iVar25 + -6]; + __dest[iVar25 + -6] = bVar5; + if (uVar10 == 6) { + uVar19 = 6; + } + else { + bVar5 = __dest[6]; + __dest[6] = __dest[iVar25 + -7]; + __dest[iVar25 + -7] = bVar5; + if (uVar10 != 7) { + bVar5 = __dest[7]; + __dest[7] = __dest[iVar25 + -8]; + __dest[iVar25 + -8] = bVar5; + if (uVar10 != 8) { + bVar5 = __dest[8]; + __dest[8] = __dest[iVar25 + -9]; + __dest[iVar25 + -9] = bVar5; + if (uVar10 != 9) { + bVar5 = __dest[9]; + __dest[9] = __dest[iVar25 + -10]; + __dest[iVar25 + -10] = bVar5; + /* try { // try from 003192a4 to 004192a7 has its CatchHandler @ 00317050 */ + if (uVar10 != 10) { + /* catch() { ... } // from try @ 00318dc0 with catch @ 003192a8 + catch() { ... } // from try @ 00318f3c with catch @ 003192a8 + catch() { ... } // from try @ 00319188 with catch @ 003192a8 */ + bVar5 = __dest[10]; + /* catch() { ... } // from try @ 00318d0c with catch @ 003192b0 + catch() { ... } // from try @ 00319098 with catch @ 003192b0 + catch() { ... } // from try @ 00319164 with catch @ 003192b0 */ + /* catch() { ... } // from try @ 00318ec8 with catch @ 003192b8 + catch() { ... } // from try @ 00319194 with catch @ 003192b8 */ + __dest[10] = __dest[iVar25 + -0xb]; + __dest[iVar25 + -0xb] = bVar5; + if (uVar10 != 0xb) { + bVar5 = __dest[0xb]; + __dest[0xb] = __dest[iVar25 + -0xc]; + /* catch() { ... } // from try @ 00318e54 with catch @ 003192e0 + catch() { ... } // from try @ 003191a0 with catch @ 003192e0 */ + __dest[iVar25 + -0xc] = bVar5; + if (uVar10 != 0xc) { + bVar5 = __dest[0xc]; + __dest[0xc] = __dest[iVar25 + -0xd]; + __dest[iVar25 + -0xd] = bVar5; + /* catch() { ... } // from try @ 00319024 with catch @ 00319304 + catch() { ... } // from try @ 00319170 with catch @ 00319304 */ + if (uVar10 != 0xd) { + bVar5 = __dest[0xd]; + __dest[0xd] = __dest[iVar25 + -0xe]; + __dest[iVar25 + -0xe] = bVar5; + if (uVar10 == 0xf) { + /* catch() { ... } // from try @ 00318fb0 with catch @ 00319328 + catch() { ... } // from try @ 0031917c with catch @ 00319328 */ + bVar5 = __dest[0xe]; + __dest[0xe] = __dest[iVar25 + -0xf]; + __dest[iVar25 + -0xf] = bVar5; + } + else { + /* try { // try from 0031989c to 0041989f has its CatchHandler @ 0031adbc */ + uVar19 = 0xe; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + /* catch() { ... } // from try @ 00317200 with catch @ 0031934c + catch() { ... } // from try @ 00317b20 with catch @ 0031934c + catch() { ... } // from try @ 00317ea8 with catch @ 0031934c + catch() { ... } // from try @ 00318204 with catch @ 0031934c + catch() { ... } // from try @ 00318b1c with catch @ 0031934c + catch() { ... } // from try @ 00318b5c with catch @ 0031934c + catch() { ... } // from try @ 00318bf8 with catch @ 0031934c + catch() { ... } // from try @ 00318c68 with catch @ 0031934c */ + /* catch() { ... } // from try @ 003173a4 with catch @ 00319354 + catch() { ... } // from try @ 00318050 with catch @ 00319354 */ + uVar1 = ((uVar3 - uVar10) - 0x10 >> 4) + 1; + iVar16 = uVar1 * 0x10; + if (0xe < (uVar3 - 1) - uVar10) { + uVar22 = 0; + pauVar20 = (undefined1 (*) [16])(__dest + ((__n - 0x10) - (ulong)uVar10)); + pauVar14 = (undefined1 (*) [16])(__dest + uVar10); + pauVar23 = pauVar20; + pauVar24 = (undefined1 (*) [16])(__dest + uVar10); + do { + auVar9 = *pauVar23; + /* catch() { ... } // from try @ 00318560 with catch @ 00319394 */ + uVar22 = uVar22 + 1; + pauVar23 = pauVar23 + -1; + auVar27._8_8_ = _DAT_00319928; + auVar27._0_8_ = _DAT_00319920; + auVar28 = a64_TBL(ZEXT816(0),auVar9,auVar27); + auVar9._8_8_ = _DAT_00319928; + auVar9._0_8_ = _DAT_00319920; + auVar27 = a64_TBL(ZEXT816(0),*pauVar24,auVar9); + *(long *)(*pauVar14 + 8) = auVar28._8_8_; + *(long *)*pauVar14 = auVar28._0_8_; + *(long *)(*pauVar20 + 8) = auVar27._8_8_; + *(long *)*pauVar20 = auVar27._0_8_; + pauVar20 = pauVar20 + -1; + pauVar14 = pauVar14 + 1; + pauVar24 = pauVar24 + 1; + } while (uVar22 < uVar1); + uVar19 = uVar19 + iVar16; + /* catch() { ... } // from try @ 003185e4 with catch @ 003193c4 + catch() { ... } // from try @ 00318ba4 with catch @ 003193c4 */ + if (iVar16 == uVar3 - uVar10) goto LAB_00319614; + } + iVar16 = uVar19 + 1; + bVar5 = __dest[(int)uVar19]; + __dest[(int)uVar19] = __dest[(int)(iVar7 - uVar19)]; + __dest[(int)(iVar7 - uVar19)] = bVar5; + if (iVar16 < (int)uVar3) { + iVar2 = uVar19 + 2; + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + if (iVar2 < (int)uVar3) { + iVar16 = uVar19 + 3; + /* catch() { ... } // from try @ 003184b8 with catch @ 0031942c */ + bVar5 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar5; + /* try { // try from 0031943c to 0041943f has its CatchHandler @ 00317050 */ + if (iVar16 < (int)uVar3) { + /* catch() { ... } // from try @ 00318668 with catch @ 00319440 + catch() { ... } // from try @ 00318b94 with catch @ 00319440 */ + /* catch() { ... } // from try @ 003186ec with catch @ 00319448 + catch() { ... } // from try @ 00318b84 with catch @ 00319448 */ + iVar2 = uVar19 + 4; + /* catch() { ... } // from try @ 00318748 with catch @ 00319450 + catch() { ... } // from try @ 00318a70 with catch @ 00319450 + catch() { ... } // from try @ 00318bc8 with catch @ 00319450 */ + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + if (iVar2 < (int)uVar3) { + iVar16 = uVar19 + 5; + bVar5 = __dest[iVar2]; + /* catch() { ... } // from try @ 00317594 with catch @ 00319474 + catch() { ... } // from try @ 0031802c with catch @ 00319474 */ + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar5; + if (iVar16 < (int)uVar3) { + iVar2 = uVar19 + 6; + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + /* catch() { ... } // from try @ 00317884 with catch @ 003194b4 + catch() { ... } // from try @ 00317950 with catch @ 003194b4 + catch() { ... } // from try @ 00317cd8 with catch @ 003194b4 + catch() { ... } // from try @ 003184fc with catch @ 003194b4 + catch() { ... } // from try @ 00318ae4 with catch @ 003194b4 + catch() { ... } // from try @ 00318b74 with catch @ 003194b4 + catch() { ... } // from try @ 00318cc8 with catch @ 003194b4 + catch() { ... } // from try @ 0031914c with catch @ 003194b4 */ + if (iVar2 < (int)uVar3) { + iVar16 = uVar19 + 7; + /* catch() { ... } // from try @ 00317128 with catch @ 003194bc */ + /* try { // try from 003194cc to 004194cf has its CatchHandler @ 00317050 */ + bVar5 = __dest[iVar2]; + /* catch() { ... } // from try @ 003177f8 with catch @ 003194d0 + catch() { ... } // from try @ 00317ffc with catch @ 003194d0 */ + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar5; + if (iVar16 < (int)uVar3) { + iVar2 = uVar19 + 8; + /* catch() { ... } // from try @ 00317180 with catch @ 003194f4 + catch() { ... } // from try @ 00317b94 with catch @ 003194f4 + catch() { ... } // from try @ 00317f1c with catch @ 003194f4 + catch() { ... } // from try @ 00318b68 with catch @ 003194f4 + catch() { ... } // from try @ 00318c1c with catch @ 003194f4 + catch() { ... } // from try @ 00318c58 with catch @ 003194f4 */ + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + if (iVar2 < (int)uVar3) { + /* catch() { ... } // from try @ 0031715c with catch @ 00319508 + catch() { ... } // from try @ 00317c08 with catch @ 00319508 + catch() { ... } // from try @ 00317f90 with catch @ 00319508 + catch() { ... } // from try @ 00318b2c with catch @ 00319508 + catch() { ... } // from try @ 00318c10 with catch @ 00319508 + catch() { ... } // from try @ 00318c48 with catch @ 00319508 */ + /* catch() { ... } // from try @ 00317608 with catch @ 00319510 + catch() { ... } // from try @ 00318020 with catch @ 00319510 */ + iVar16 = uVar19 + 9; + /* catch() { ... } // from try @ 00318790 with catch @ 00319518 + catch() { ... } // from try @ 00318960 with catch @ 00319518 + catch() { ... } // from try @ 00318bd4 with catch @ 00319518 */ + bVar5 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar5; + if (iVar16 < (int)uVar3) { + iVar2 = uVar19 + 10; + /* catch() { ... } // from try @ 00318804 with catch @ 00319540 */ + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + /* catch() { ... } // from try @ 00317330 with catch @ 00319554 + catch() { ... } // from try @ 0031805c with catch @ 00319554 */ + if (iVar2 < (int)uVar3) { + iVar16 = uVar19 + 0xb; + bVar5 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + /* catch() { ... } // from try @ 003172bc with catch @ 00319578 */ + __dest[iVar7 - iVar2] = bVar5; + if (iVar16 < (int)uVar3) { + iVar2 = uVar19 + 0xc; + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + /* catch() { ... } // from try @ 00317250 with catch @ 003195a4 + catch() { ... } // from try @ 00317aac with catch @ 003195a4 + catch() { ... } // from try @ 00317e34 with catch @ 003195a4 + catch() { ... } // from try @ 00318b50 with catch @ 003195a4 + catch() { ... } // from try @ 00318bec with catch @ 003195a4 */ + if (iVar2 < (int)uVar3) { + iVar16 = uVar19 + 0xd; + /* catch() { ... } // from try @ 003174ac with catch @ 003195ac */ + bVar5 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar5; + if (iVar16 < (int)uVar3) { + /* catch() { ... } // from try @ 00317444 with catch @ 003195d8 + catch() { ... } // from try @ 00317a38 with catch @ 003195d8 + catch() { ... } // from try @ 00317dc0 with catch @ 003195d8 + catch() { ... } // from try @ 00318b44 with catch @ 003195d8 + catch() { ... } // from try @ 00318be0 with catch @ 003195d8 */ + iVar2 = uVar19 + 0xe; + /* catch() { ... } // from try @ 00317520 with catch @ 003195e0 + catch() { ... } // from try @ 00318038 with catch @ 003195e0 */ + bVar5 = __dest[iVar16]; + __dest[iVar16] = __dest[iVar7 - iVar16]; + __dest[iVar7 - iVar16] = bVar5; + if (iVar2 < (int)uVar3) { + /* catch() { ... } // from try @ 00317418 with catch @ 00319604 + catch() { ... } // from try @ 00318044 with catch @ 00319604 */ + bVar5 = __dest[iVar2]; + /* catch() { ... } // from try @ 00317784 with catch @ 0031960c + catch() { ... } // from try @ 00318008 with catch @ 0031960c */ + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar5; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00319614: + if ((uVar4 == 0) && (0 < iVar25)) { + lVar13 = 0; + do { + pbVar15 = __dest + lVar13; + /* catch() { ... } // from try @ 00317710 with catch @ 00319630 + catch() { ... } // from try @ 00318014 with catch @ 00319630 */ + lVar6 = lVar13 * **(long **)(param_2 + 0x48); + lVar13 = lVar13 + 1; + *(byte *)(*(long *)(param_2 + 0x10) + lVar6 + lVar26) = *pbVar15; + } while ((int)lVar13 < iVar25); + } + lVar26 = lVar26 + 1; + /* catch() { ... } // from try @ 0031769c with catch @ 00319654 */ + } while ((int)lVar26 < iVar29); + } + if ((local_418 != local_408) && (local_418 != (byte *)0x0)) { + operator_delete__(local_418); + } + /* catch() { ... } // from try @ 00317634 with catch @ 00319680 + catch() { ... } // from try @ 003179c4 with catch @ 00319680 + catch() { ... } // from try @ 00317d4c with catch @ 00319680 + catch() { ... } // from try @ 00318b38 with catch @ 00319680 + catch() { ... } // from try @ 00318c04 with catch @ 00319680 */ + /* catch() { ... } // from try @ 00317948 with catch @ 00319688 */ + /* catch() { ... } // from try @ 00318878 with catch @ 0031969c + catch() { ... } // from try @ 00318bbc with catch @ 0031969c */ + return; +} + + +================================================================== + +### FUNC 00319930 (840 bytes) name=FUN_00319930 + +void FUN_00319930(byte *param_1,byte *param_2,long param_3) + +{ + long lVar1; + ulong uVar2; + byte bVar3; + long lVar4; + long lVar5; + ulong uVar6; + long lVar7; + byte *pbVar8; + ulong uVar9; + byte *pbVar10; + byte bVar11; + byte *pbVar12; + byte bVar13; + long lVar14; + byte bVar15; + ulong uVar16; + long lVar17; + + /* try { // try from 00319938 to 00419997 has its CatchHandler @ 00319720 */ + lVar4 = (long)param_2 - (long)param_1; + if (lVar4 < 0x11) { + return; + } + if (param_3 != 0) { + lVar4 = lVar4 >> 1; + bVar13 = param_1[1]; + param_3 = param_3 + -1; + bVar11 = param_2[-1]; + bVar3 = param_1[lVar4]; + if (bVar3 <= bVar13) goto LAB_00319a30; +LAB_00319978: + if (bVar3 < bVar11) goto LAB_00319a40; + if (bVar11 <= bVar13) goto LAB_00319a5c; + do { + bVar15 = *param_1; + *param_1 = bVar11; + param_2[-1] = bVar15; + bVar13 = *param_1; + bVar3 = param_1[1]; + pbVar12 = param_2; + pbVar10 = param_1; + pbVar8 = param_2; + while( true ) { + while( true ) { + while( true ) { + param_2 = pbVar10 + 1; + while (bVar3 < bVar13) { + param_2 = param_2 + 1; + bVar3 = *param_2; + } + pbVar12 = pbVar12 + -1; + while (bVar13 < bVar15) { + pbVar12 = pbVar12 + -1; + bVar15 = *pbVar12; + } + if (pbVar12 <= param_2) break; + *param_2 = bVar15; + *pbVar12 = bVar3; + bVar15 = pbVar12[-1]; + bVar13 = *param_1; + bVar3 = param_2[1]; + pbVar10 = param_2; + } + FUN_00319930(param_2,pbVar8,param_3); + lVar4 = (long)param_2 - (long)param_1; + if (lVar4 < 0x11) { + return; + } + if (param_3 == 0) goto LAB_00319b60; + lVar4 = lVar4 >> 1; + bVar13 = param_1[1]; + param_3 = param_3 + -1; + bVar3 = param_1[lVar4]; + bVar11 = param_2[-1]; + if (bVar13 < bVar3) goto LAB_00319978; +LAB_00319a30: + if (bVar11 <= bVar13) break; +LAB_00319a5c: + bVar3 = *param_1; + param_1[1] = bVar3; + *param_1 = bVar13; + bVar15 = param_2[-1]; + pbVar12 = param_2; + pbVar10 = param_1; + pbVar8 = param_2; + } + if (bVar3 < bVar11) break; +LAB_00319a40: + bVar13 = *param_1; + *param_1 = bVar3; + param_1[lVar4] = bVar13; + bVar13 = *param_1; + bVar3 = param_1[1]; + bVar15 = param_2[-1]; + pbVar12 = param_2; + pbVar10 = param_1; + pbVar8 = param_2; + } + } while( true ); + } +LAB_00319b60: + lVar17 = lVar4 + -2 >> 1; + lVar14 = lVar17; + do { + pbVar10 = param_1 + lVar14; + bVar13 = param_1[lVar14]; + lVar5 = lVar14; + while (lVar5 < lVar4 + -1 >> 1) { + lVar7 = (lVar5 + 1) * 2; + pbVar10 = param_1 + lVar7; + bVar3 = param_1[lVar7]; + if (bVar3 < pbVar10[-1]) { + lVar7 = lVar7 + -1; + pbVar10 = param_1 + lVar7; + bVar3 = param_1[lVar7]; + } + param_1[lVar5] = bVar3; + lVar5 = lVar7; + } + if ((lVar5 == lVar17) && (((uint)lVar4 & 1) != 1)) { + lVar7 = (lVar5 + 1) * 2; + lVar5 = lVar7 + -1; + *pbVar10 = param_1[lVar7 + -1]; + pbVar10 = param_1 + lVar5; + } + if (lVar14 < lVar5) { + lVar7 = lVar5 + -1 >> 1; + bVar3 = param_1[lVar7]; + while (lVar1 = lVar7, bVar3 < bVar13) { + param_1[lVar5] = bVar3; + pbVar10 = param_1 + lVar1; + if (lVar1 <= lVar14) break; + lVar7 = (lVar1 + -1) / 2; + bVar3 = param_1[lVar7]; + lVar5 = lVar1; + } + *pbVar10 = bVar13; + if (lVar14 == 0) break; + } + else { + *pbVar10 = bVar13; + } + lVar14 = lVar14 + -1; + } while( true ); +LAB_00319ac0: + param_2 = param_2 + -1; + bVar13 = *param_2; + uVar16 = (long)param_2 - (long)param_1; + *param_2 = *param_1; + lVar4 = (long)(uVar16 - 1) / 2; + if (lVar4 < 1) { + uVar6 = uVar16 & 1; + pbVar10 = param_1; + if ((uVar16 & 1) == 0) goto LAB_00319b24; + } + else { + uVar9 = 0; + do { + uVar6 = (uVar9 + 1) * 2; + pbVar10 = param_1 + uVar6; + bVar3 = param_1[uVar6]; + if (bVar3 < pbVar10[-1]) { + uVar6 = uVar6 - 1; + pbVar10 = param_1 + uVar6; + bVar3 = param_1[uVar6]; + } + param_1[uVar9] = bVar3; + uVar9 = uVar6; + } while ((long)uVar6 < lVar4); + if ((uVar16 & 1) == 0) { +LAB_00319b24: + if (uVar6 == (long)(uVar16 - 2) / 2) { + lVar4 = (uVar6 + 1) * 2; + uVar6 = lVar4 - 1; + *pbVar10 = param_1[lVar4 + -1]; + pbVar10 = param_1 + uVar6; + } + else if ((long)uVar6 < 1) goto LAB_00319b3c; + } + uVar9 = (long)(uVar6 - 1) >> 1; + bVar3 = param_1[uVar9]; + while (uVar2 = uVar9, bVar3 < bVar13) { + param_1[uVar6] = bVar3; + pbVar10 = param_1 + uVar2; + uVar9 = (long)(uVar2 - 1) >> 1; + if (uVar2 == 0) break; + bVar3 = param_1[uVar9]; + uVar6 = uVar2; + } + } +LAB_00319b3c: + *pbVar10 = bVar13; + if ((long)uVar16 < 2) { + return; + } + goto LAB_00319ac0; +} + + +================================================================== + +### FUNC 00319c80 (2376 bytes) name=FUN_00319c80 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00319c80(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + uint uVar4; + int iVar5; + long lVar6; + int iVar7; + size_t sVar8; + undefined1 auVar9 [16]; + uint uVar10; + long lVar11; + long lVar12; + long lVar13; + undefined1 (*pauVar14) [16]; + uint uVar15; + size_t __n; + byte *pbVar16; + byte bVar17; + byte *pbVar18; + byte bVar19; + undefined1 (*pauVar20) [16]; + byte *pbVar21; + uint uVar22; + byte *pbVar23; + undefined1 (*pauVar24) [16]; + undefined1 (*pauVar25) [16]; + int iVar26; + long lVar27; + byte *__dest; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + int iVar30; + byte *local_418; + byte local_408 [1032]; + + local_418 = local_408; + /* try { // try from 00319cb4 to 00419d1b has its CatchHandler @ 0031aca0 */ + lVar11 = *(long *)(param_1 + 0x10); + uVar4 = param_3 & 1 ^ 1; + lVar12 = *(long *)(param_2 + 0x10); + if (uVar4 == 0) { + iVar26 = *(int *)(param_1 + 8); + iVar30 = *(int *)(param_1 + 0xc); + if (0x408 < (ulong)(long)iVar26) { + local_418 = operator_new__((long)iVar26); + } + } + else { + iVar30 = *(int *)(param_1 + 8); + iVar26 = *(int *)(param_1 + 0xc); + } + if (0 < iVar30) { + __n = (size_t)iVar26; + uVar3 = iVar26 / 2; + lVar27 = 0; + iVar7 = iVar26 + -1; + /* try { // try from 00319d64 to 00419d67 has its CatchHandler @ 0031ac98 */ + do { + if (uVar4 == 0) { + lVar13 = 0; + __dest = local_418; + if (0 < iVar26) { + do { + local_418[lVar13] = + *(byte *)(*(long *)(param_1 + 0x10) + lVar13 * **(long **)(param_1 + 0x48) + lVar27 + ); + lVar13 = lVar13 + 1; + } while ((int)lVar13 < iVar26); + } + } + else { + __dest = (byte *)(*(long *)(param_2 + 0x10) + lVar27 * **(long **)(param_2 + 0x48)); + if (lVar11 != lVar12) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar27 * **(long **)(param_1 + 0x48)), + __n); + } + } + pbVar16 = __dest + __n; + if (__dest != pbVar16) { + FUN_00319930(__dest,pbVar16,(0x3f - LZCOUNT(__n)) * 2); + pbVar23 = __dest; + if (iVar26 < 0x11) { + while (pbVar21 = pbVar23 + 1, pbVar16 != pbVar21) { + bVar17 = *pbVar21; + if (bVar17 < *__dest) { + sVar8 = (long)pbVar21 - (long)__dest; + if (sVar8 != 0) { + memmove(pbVar21 + (1 - sVar8),__dest,sVar8); + } + *__dest = bVar17; + pbVar23 = pbVar21; + } + else { + bVar19 = *pbVar23; + pbVar23 = pbVar21; + if (bVar17 < bVar19) { + do { + pbVar18 = pbVar23 + -1; + *pbVar23 = bVar19; + bVar19 = pbVar23[-2]; + pbVar23 = pbVar18; + } while (bVar17 < bVar19); + *pbVar18 = bVar17; + pbVar23 = pbVar21; + } + else { + *pbVar21 = bVar17; + } + } + } + } + else { + /* try { // try from 0031a41c to 0041a41f has its CatchHandler @ 0031ad8c */ + pbVar23 = __dest + 1; + do { + pbVar21 = pbVar23; + bVar17 = *pbVar21; + /* try { // try from 0031a424 to 0041a4bf has its CatchHandler @ 00319720 */ + if (bVar17 < *__dest) { + sVar8 = (long)pbVar21 - (long)__dest; + if (sVar8 != 0) { + /* try { // try from 0031a4d8 to 0041a4db has its CatchHandler @ 0031ac94 */ + memmove(pbVar21 + (1 - sVar8),__dest,sVar8); + } + *__dest = bVar17; + } + else { + /* try { // try from 0031a4f0 to 0041a4f3 has its CatchHandler @ 0031ac90 */ + bVar19 = pbVar21[-1]; + pbVar23 = pbVar21; + if (bVar17 < bVar19) { + do { + pbVar18 = pbVar23 + -1; + *pbVar23 = bVar19; + bVar19 = pbVar23[-2]; + pbVar23 = pbVar18; + } while (bVar17 < bVar19); + *pbVar18 = bVar17; + } + else { + *pbVar21 = bVar17; + } + } + pbVar23 = pbVar21 + 1; + } while (pbVar23 != __dest + 0x10); + if (pbVar16 != pbVar23) { + bVar19 = *pbVar21; + bVar17 = *pbVar23; + if (bVar17 < bVar19) goto LAB_0031a470; + do { + *pbVar23 = bVar17; + while( true ) { + pbVar23 = pbVar23 + 1; + if (pbVar23 == pbVar16) goto LAB_00319e14; + bVar19 = pbVar23[-1]; + bVar17 = *pbVar23; + pbVar21 = pbVar23 + -1; + if (bVar19 <= bVar17) break; +LAB_0031a470: + do { + pbVar18 = pbVar21; + pbVar18[1] = bVar19; + bVar19 = pbVar18[-1]; + pbVar21 = pbVar18 + -1; + } while (bVar17 < bVar19); + *pbVar18 = bVar17; + } + } while( true ); + } + } + } +LAB_00319e14: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar3)) { + if (uVar3 < 0x14 || (long)(__n - uVar3) < (long)(ulong)uVar3 && 0 < iVar26) { + lVar13 = 0; + pbVar16 = __dest + iVar7; + do { + bVar17 = __dest[lVar13]; + __dest[lVar13] = *pbVar16; + lVar13 = lVar13 + 1; + *pbVar16 = bVar17; + pbVar16 = pbVar16 + -1; + } while ((int)lVar13 < (int)uVar3); + } + else { + uVar15 = -(int)__dest & 0xf; + uVar10 = uVar3; + if (uVar15 < uVar3) { + uVar10 = uVar15; + } + uVar15 = uVar10; + if (uVar10 != 0) { + bVar17 = *__dest; + *__dest = __dest[iVar7]; + __dest[iVar7] = bVar17; + if (uVar10 != 1) { + bVar17 = __dest[1]; + __dest[1] = __dest[iVar26 + -2]; + __dest[iVar26 + -2] = bVar17; + if (uVar10 != 2) { + bVar17 = __dest[2]; + /* try { // try from 00319e84 to 00419eeb has its CatchHandler @ 0031ad48 */ + __dest[2] = __dest[iVar26 + -3]; + __dest[iVar26 + -3] = bVar17; + if (uVar10 != 3) { + bVar17 = __dest[3]; + __dest[3] = __dest[iVar26 + -4]; + __dest[iVar26 + -4] = bVar17; + if (uVar10 != 4) { + bVar17 = __dest[4]; + __dest[4] = __dest[iVar26 + -5]; + __dest[iVar26 + -5] = bVar17; + if (uVar10 != 5) { + bVar17 = __dest[5]; + __dest[5] = __dest[iVar26 + -6]; + __dest[iVar26 + -6] = bVar17; + if (uVar10 == 6) { + uVar15 = 6; + } + else { + bVar17 = __dest[6]; + __dest[6] = __dest[iVar26 + -7]; + __dest[iVar26 + -7] = bVar17; + if (uVar10 != 7) { + bVar17 = __dest[7]; + __dest[7] = __dest[iVar26 + -8]; + __dest[iVar26 + -8] = bVar17; + if (uVar10 != 8) { + bVar17 = __dest[8]; + __dest[8] = __dest[iVar26 + -9]; + __dest[iVar26 + -9] = bVar17; + if (uVar10 != 9) { + bVar17 = __dest[9]; + __dest[9] = __dest[iVar26 + -10]; + __dest[iVar26 + -10] = bVar17; + if (uVar10 != 10) { + bVar17 = __dest[10]; + __dest[10] = __dest[iVar26 + -0xb]; + __dest[iVar26 + -0xb] = bVar17; + if (uVar10 != 0xb) { + bVar17 = __dest[0xb]; + __dest[0xb] = __dest[iVar26 + -0xc]; + __dest[iVar26 + -0xc] = bVar17; + if (uVar10 != 0xc) { + bVar17 = __dest[0xc]; + __dest[0xc] = __dest[iVar26 + -0xd]; + __dest[iVar26 + -0xd] = bVar17; + if (uVar10 != 0xd) { + bVar17 = __dest[0xd]; + __dest[0xd] = __dest[iVar26 + -0xe]; + __dest[iVar26 + -0xe] = bVar17; + if (uVar10 == 0xf) { + bVar17 = __dest[0xe]; + __dest[0xe] = __dest[iVar26 + -0xf]; + __dest[iVar26 + -0xf] = bVar17; + } + else { + uVar15 = 0xe; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar3 - uVar10) - 0x10 >> 4) + 1; + iVar5 = uVar1 * 0x10; + if (0xe < (uVar3 - 1) - uVar10) { + uVar22 = 0; + pauVar20 = (undefined1 (*) [16])(__dest + ((__n - 0x10) - (ulong)uVar10)); + pauVar14 = (undefined1 (*) [16])(__dest + uVar10); + pauVar24 = pauVar20; + pauVar25 = (undefined1 (*) [16])(__dest + uVar10); + do { + auVar9 = *pauVar24; + uVar22 = uVar22 + 1; + pauVar24 = pauVar24 + -1; + auVar28._8_8_ = _UNK_0031a5f8; + auVar28._0_8_ = _DAT_0031a5f0; + auVar29 = a64_TBL(ZEXT816(0),auVar9,auVar28); + auVar9._8_8_ = _UNK_0031a5f8; + auVar9._0_8_ = _DAT_0031a5f0; + auVar28 = a64_TBL(ZEXT816(0),*pauVar25,auVar9); + *(long *)(*pauVar14 + 8) = auVar29._8_8_; + *(long *)*pauVar14 = auVar29._0_8_; + *(long *)(*pauVar20 + 8) = auVar28._8_8_; + *(long *)*pauVar20 = auVar28._0_8_; + pauVar20 = pauVar20 + -1; + pauVar14 = pauVar14 + 1; + pauVar25 = pauVar25 + 1; + } while (uVar22 < uVar1); + uVar15 = uVar15 + iVar5; + if (iVar5 == uVar3 - uVar10) goto LAB_0031a2e4; + } + iVar5 = uVar15 + 1; + bVar17 = __dest[(int)uVar15]; + __dest[(int)uVar15] = __dest[(int)(iVar7 - uVar15)]; + __dest[(int)(iVar7 - uVar15)] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 2; + bVar17 = __dest[iVar5]; + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + iVar5 = uVar15 + 3; + bVar17 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 4; + bVar17 = __dest[iVar5]; + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + iVar5 = uVar15 + 5; + bVar17 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 6; + bVar17 = __dest[iVar5]; + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + iVar5 = uVar15 + 7; + bVar17 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 8; + bVar17 = __dest[iVar5]; + /* try { // try from 0031a1bc to 0041a1bf has its CatchHandler @ 0031abe4 */ + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + iVar5 = uVar15 + 9; + bVar17 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 10; + bVar17 = __dest[iVar5]; + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + iVar5 = uVar15 + 0xb; + bVar17 = __dest[iVar2]; + /* try { // try from 0031a240 to 0041a243 has its CatchHandler @ 0031ac98 */ + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 0xc; + bVar17 = __dest[iVar5]; + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + iVar5 = uVar15 + 0xd; + bVar17 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + if (iVar5 < (int)uVar3) { + iVar2 = uVar15 + 0xe; + /* try { // try from 0031a2b4 to 0041a2b7 has its CatchHandler @ 0031aca0 */ + bVar17 = __dest[iVar5]; + __dest[iVar5] = __dest[iVar7 - iVar5]; + __dest[iVar7 - iVar5] = bVar17; + if (iVar2 < (int)uVar3) { + bVar17 = __dest[iVar2]; + __dest[iVar2] = __dest[iVar7 - iVar2]; + __dest[iVar7 - iVar2] = bVar17; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0031a2e4: + if ((uVar4 == 0) && (0 < iVar26)) { + lVar13 = 0; + do { + pbVar16 = __dest + lVar13; + lVar6 = lVar13 * **(long **)(param_2 + 0x48); + lVar13 = lVar13 + 1; + *(byte *)(*(long *)(param_2 + 0x10) + lVar6 + lVar27) = *pbVar16; + } while ((int)lVar13 < iVar26); + } + lVar27 = lVar27 + 1; + } while ((int)lVar27 < iVar30); + } + if ((local_418 != local_408) && (local_418 != (byte *)0x0)) { + operator_delete__(local_418); + } + /* try { // try from 0031a354 to 0041a3c3 has its CatchHandler @ 00319720 */ + return; +} + + +================================================================== + +### FUNC 0031a600 (864 bytes) name=FUN_0031a600 + +void FUN_0031a600(short *param_1,short *param_2,long param_3) + +{ + long lVar1; + long lVar2; + long lVar3; + ulong uVar4; + ulong uVar5; + short *psVar6; + short *psVar7; + short sVar8; + short *psVar9; + short sVar10; + long lVar11; + long lVar12; + short sVar13; + ulong uVar14; + long lVar15; + + lVar11 = (long)param_2 - (long)param_1; + if (lVar11 < 0x22) { + return; + } + if (param_3 != 0) { + sVar13 = param_1[1]; + lVar1 = (lVar11 >> 2) * 2; + param_3 = param_3 + -1; + sVar10 = param_2[-1]; + sVar8 = param_1[lVar11 >> 2]; + if (sVar8 <= sVar13) goto LAB_0031a708; +LAB_0031a64c: + if (sVar8 < sVar10) goto LAB_0031a718; + if (sVar10 <= sVar13) goto LAB_0031a734; + do { + sVar8 = *param_1; + *param_1 = sVar10; + param_2[-1] = sVar8; + sVar13 = *param_1; + sVar10 = param_1[1]; + psVar9 = param_2; + psVar7 = param_1; + psVar6 = param_2; + while( true ) { + while( true ) { + while( true ) { + param_2 = psVar7 + 1; + while (sVar10 < sVar13) { + param_2 = param_2 + 1; + sVar10 = *param_2; + } + psVar9 = psVar9 + -1; + while (sVar13 < sVar8) { + psVar9 = psVar9 + -1; + sVar8 = *psVar9; + } + if (psVar9 <= param_2) break; + *param_2 = sVar8; + *psVar9 = sVar10; + sVar8 = psVar9[-1]; + sVar13 = *param_1; + sVar10 = param_2[1]; + psVar7 = param_2; + } + FUN_0031a600(param_2,psVar6,param_3); + lVar11 = (long)param_2 - (long)param_1; + if (lVar11 < 0x22) { + return; + } + if (param_3 == 0) goto LAB_0031a74c; + sVar13 = param_1[1]; + lVar1 = (lVar11 >> 2) * 2; + param_3 = param_3 + -1; + sVar8 = param_1[lVar11 >> 2]; + sVar10 = param_2[-1]; + if (sVar13 < sVar8) goto LAB_0031a64c; +LAB_0031a708: + if (sVar10 <= sVar13) break; +LAB_0031a734: + sVar10 = *param_1; + param_1[1] = sVar10; + *param_1 = sVar13; + sVar8 = param_2[-1]; + psVar9 = param_2; + psVar7 = param_1; + psVar6 = param_2; + } + if (sVar8 < sVar10) break; +LAB_0031a718: + sVar13 = *param_1; + *param_1 = sVar8; + *(short *)((long)param_1 + lVar1) = sVar13; + sVar13 = *param_1; + sVar10 = param_1[1]; + sVar8 = param_2[-1]; + psVar9 = param_2; + psVar7 = param_1; + psVar6 = param_2; + } + } while( true ); + } +LAB_0031a74c: + lVar11 = lVar11 >> 1; + lVar15 = lVar11 + -2 >> 1; + psVar7 = param_1 + lVar15; + lVar1 = lVar15; + do { + /* try { // try from 0031a770 to 0041a773 has its CatchHandler @ 0031ac8c */ + sVar13 = *psVar7; + lVar3 = lVar1; + psVar9 = psVar7; + while (lVar3 < lVar11 + -1 >> 1) { + lVar12 = lVar3 + 1; + /* try { // try from 0031a788 to 0041a78b has its CatchHandler @ 0031ac88 */ + lVar2 = lVar12 * 2; + psVar9 = param_1 + lVar12 * 2; + sVar10 = param_1[lVar12 * 2]; + if (sVar10 < psVar9[-1]) { + lVar2 = lVar2 + -1; + sVar10 = param_1[lVar2]; + psVar9 = param_1 + lVar2; + } + param_1[lVar3] = sVar10; + /* try { // try from 0031a7c0 to 0041a7d3 has its CatchHandler @ 0031ac64 */ + lVar3 = lVar2; + } + if ((lVar3 == lVar15) && (((uint)lVar11 & 1) != 1)) { + lVar12 = lVar3 + 1; + /* try { // try from 0031a7dc to 0041a7df has its CatchHandler @ 0031abe4 */ + lVar3 = lVar12 * 2 + -1; + *psVar9 = param_1[lVar12 * 2 + -1]; + /* try { // try from 0031a7e8 to 0041a7eb has its CatchHandler @ 0031ac98 */ + psVar9 = param_1 + lVar3; + } + if (lVar1 < lVar3) { + lVar12 = lVar3 + -1; + do { + lVar2 = lVar12 >> 1; + if (sVar13 <= param_1[lVar2]) break; + param_1[lVar3] = param_1[lVar2]; + /* try { // try from 0031a8d8 to 0041a937 has its CatchHandler @ 0031abe4 */ + psVar9 = param_1 + lVar2; + lVar12 = (lVar2 + -1) - (lVar2 + -1 >> 0x3f); + lVar3 = lVar2; + } while (lVar1 < lVar2); + *psVar9 = sVar13; + if (lVar1 == 0) break; + } + else { + *psVar9 = sVar13; + } + psVar7 = psVar7 + -1; + lVar1 = lVar1 + -1; + } while( true ); +LAB_0031a814: + param_2 = param_2 + -1; + sVar13 = *param_2; + *param_2 = *param_1; + uVar14 = (long)param_2 - (long)param_1 >> 1; + /* try { // try from 0031a828 to 0041a8af has its CatchHandler @ 0031ad48 */ + lVar11 = (long)(uVar14 - 1) / 2; + if (lVar11 < 1) { + uVar5 = uVar14 & 1; + psVar7 = param_1; + if ((uVar14 & 1) == 0) goto LAB_0031a884; + } + else { + uVar4 = 0; + do { + lVar1 = uVar4 + 1; + uVar5 = lVar1 * 2; + psVar7 = param_1 + lVar1 * 2; + sVar10 = param_1[lVar1 * 2]; + if (sVar10 < psVar7[-1]) { + uVar5 = uVar5 - 1; + sVar10 = param_1[uVar5]; + psVar7 = param_1 + uVar5; + } + param_1[uVar4] = sVar10; + uVar4 = uVar5; + } while ((long)uVar5 < lVar11); + if ((uVar14 & 1) == 0) { +LAB_0031a884: + if (uVar5 == (long)(uVar14 - 2) / 2) { + lVar11 = uVar5 + 1; + uVar5 = lVar11 * 2 - 1; + *psVar7 = param_1[lVar11 * 2 + -1]; + psVar7 = param_1 + uVar5; + } + else if ((long)uVar5 < 1) goto LAB_0031a89c; + } + uVar14 = (long)(uVar5 - 1) >> 1; + sVar10 = param_1[uVar14]; + while (uVar4 = uVar14, sVar10 < sVar13) { + param_1[uVar5] = sVar10; + psVar7 = param_1 + uVar4; + uVar14 = (long)(uVar4 - 1) >> 1; + if (uVar4 == 0) break; + sVar10 = param_1[uVar14]; + uVar5 = uVar4; + } + } +LAB_0031a89c: + *psVar7 = sVar13; + if ((long)param_2 - (long)param_1 < 4) { + return; + } + goto LAB_0031a814; +} + + +================================================================== + +### FUNC 0031a960 (1876 bytes) name=FUN_0031a960 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0031a960(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined2 uVar4; + int iVar5; + uint uVar6; + undefined1 auVar7 [16]; + int iVar8; + long lVar9; + long lVar10; + long lVar11; + undefined1 (*pauVar12) [16]; + ulong uVar13; + ulong uVar14; + ulong uVar15; + short *psVar16; + ulong uVar17; + size_t sVar18; + undefined1 (*pauVar19) [16]; + short *psVar20; + short sVar21; + short sVar22; + uint uVar23; + ulong uVar24; + long lVar25; + ulong uVar26; + ulong uVar27; + undefined1 (*pauVar28) [16]; + ulong uVar29; + short *psVar30; + short *psVar31; + ulong uVar32; + undefined1 (*pauVar33) [16]; + int iVar34; + ulong uVar35; + ulong __n; + short *__dest; + long lVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + int iVar39; + short *local_420; + short local_410 [520]; + + /* try { // try from 0031a964 to 0041a9c3 has its CatchHandler @ 0031ac98 */ + local_420 = local_410; + lVar9 = *(long *)(param_1 + 0x10); + uVar3 = param_3 & 1 ^ 1; + lVar10 = *(long *)(param_2 + 0x10); + if (uVar3 == 0) { + uVar35 = (ulong)*(uint *)(param_1 + 8); + iVar39 = *(int *)(param_1 + 0xc); + uVar14 = (ulong)(int)*(uint *)(param_1 + 8); + if (0x208 < uVar14) { + uVar17 = uVar14 << 1; + if (0x3f80000000000000 < uVar14) { + uVar17 = 0xffffffffffffffff; + } + local_420 = operator_new__(uVar17); + } + } + else { + iVar39 = *(int *)(param_1 + 8); + uVar35 = (ulong)*(uint *)(param_1 + 0xc); + } + if (0 < iVar39) { + iVar34 = (int)uVar35; + uVar6 = iVar34 - 1; + uVar2 = iVar34 / 2; + uVar29 = (ulong)uVar2; + uVar27 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + __n = -(uVar35 >> 0x1f) & 0xfffffffe00000000 | uVar35 << 1; + /* try { // try from 0031aa34 to 0041aa37 has its CatchHandler @ 0031aca0 */ + uVar35 = -(ulong)(iVar34 - 7U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 7U) << 1; + uVar32 = -(ulong)(iVar34 - 2U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 2U) << 1; + uVar26 = -(ulong)(iVar34 - 3U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 3U) << 1; + uVar24 = -(ulong)(iVar34 - 4U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 4U) << 1; + uVar17 = -(ulong)(iVar34 - 5U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 5U) << 1; + uVar14 = -(ulong)(iVar34 - 6U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 6U) << 1; + lVar36 = 0; + do { + /* try { // try from 0031aaa8 to 0041aaab has its CatchHandler @ 0031ad70 */ + if (uVar3 == 0) { + __dest = local_420; + if (0 < iVar34) { + lVar11 = 0; + lVar25 = **(long **)(param_1 + 0x48); + psVar16 = (short *)(*(long *)(param_1 + 0x10) + lVar36 * 2); + do { + sVar22 = *psVar16; + psVar16 = (short *)((long)psVar16 + lVar25); + local_420[lVar11] = sVar22; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < iVar34); + } + } + else { + /* try { // try from 0031aed4 to 0041aed7 has its CatchHandler @ 0031b190 */ + __dest = (short *)(*(long *)(param_2 + 0x10) + lVar36 * **(long **)(param_2 + 0x48)); + if (lVar9 != lVar10) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar36 * **(long **)(param_1 + 0x48)), + __n); + } + } + psVar16 = (short *)((long)__dest + __n); + if (__dest != psVar16) { + FUN_0031a600(__dest,psVar16,(0x3f - LZCOUNT((long)__n >> 1)) * 2); + psVar31 = __dest + 1; + if ((long)__n < 0x22) { + for (; psVar16 != psVar31; psVar31 = psVar31 + 1) { + /* try { // try from 0031ab14 to 0041ab17 has its CatchHandler @ 0031aca0 */ + sVar22 = *psVar31; + /* try { // try from 0031ab20 to 0041ab23 has its CatchHandler @ 0031ad70 */ + if (sVar22 < *__dest) { + sVar18 = (long)psVar31 - (long)__dest; + if ((long)sVar18 >> 1 != 0) { + /* try { // try from 0031ae68 to 0041ae6b has its CatchHandler @ 0031b198 */ + memmove((void *)((long)psVar31 + (2 - sVar18)),__dest,sVar18); + } + *__dest = sVar22; + } + else { + sVar21 = psVar31[-1]; + psVar30 = psVar31; + if (sVar22 < sVar21) { + do { + psVar20 = psVar30 + -1; + *psVar30 = sVar21; + sVar21 = psVar30[-2]; + psVar30 = psVar20; + } while (sVar22 < sVar21); + *psVar20 = sVar22; + } + else { + *psVar31 = sVar22; + } + } + /* try { // try from 0031ab34 to 0041ab37 has its CatchHandler @ 0031aca0 */ + } + } + else { + do { + psVar30 = psVar31; + /* try { // try from 0031af04 to 0041af07 has its CatchHandler @ 0031b11c */ + sVar22 = *psVar30; + /* try { // try from 0031af0c to 0041af6b has its CatchHandler @ 0031b190 */ + if (sVar22 < *__dest) { + sVar18 = (long)psVar30 - (long)__dest; + if ((long)sVar18 >> 1 != 0) { + memmove((void *)((long)psVar30 + (2 - sVar18)),__dest,sVar18); + } + *__dest = sVar22; + } + else { + sVar21 = psVar30[-1]; + /* try { // try from 0031afdc to 0041afdf has its CatchHandler @ 0031b198 */ + psVar31 = psVar30; + if (sVar22 < sVar21) { + do { + psVar20 = psVar31 + -1; + *psVar31 = sVar21; + sVar21 = psVar31[-2]; + psVar31 = psVar20; + } while (sVar22 < sVar21); + *psVar20 = sVar22; + } + else { + *psVar30 = sVar22; + } + } + psVar31 = psVar30 + 1; + } while (psVar31 != __dest + 0x10); + if (psVar16 != psVar31) { + sVar22 = *psVar30; + sVar21 = *psVar31; + if (sVar21 < sVar22) goto LAB_0031af54; + do { + *psVar31 = sVar21; + while( true ) { + psVar31 = psVar31 + 1; + if (psVar16 == psVar31) goto LAB_0031ab40; + sVar22 = psVar31[-1]; + sVar21 = *psVar31; + psVar30 = psVar31 + -1; + if (sVar22 <= sVar21) break; +LAB_0031af54: + do { + psVar20 = psVar30; + psVar20[1] = sVar22; + sVar22 = psVar20[-1]; + psVar30 = psVar20 + -1; + } while (sVar21 < sVar22); + *psVar20 = sVar21; + } + } while( true ); + } + } + } +LAB_0031ab40: + /* try { // try from 0031ab48 to 0041ab4b has its CatchHandler @ 0031ac64 */ + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 0xc || (long)(__n + uVar29 * -2) < (long)(uVar29 * 2) && 0 < (long)__n) { + lVar11 = 0; + psVar16 = (short *)((long)__dest + uVar27); + do { + sVar22 = __dest[lVar11]; + __dest[lVar11] = *psVar16; + lVar11 = lVar11 + 1; + *psVar16 = sVar22; + psVar16 = psVar16 + -1; + } while ((int)lVar11 < (int)uVar2); + } + else { + /* try { // try from 0031ab58 to 0041ab5b has its CatchHandler @ 0031aca0 */ + uVar1 = -((uint)((ulong)__dest >> 1) & 7) & 7; + /* try { // try from 0031ab68 to 0041ab6b has its CatchHandler @ 0031ad70 */ + uVar13 = uVar29; + if (uVar1 < uVar2) { + uVar13 = (ulong)uVar1; + } + iVar8 = (int)uVar13; + uVar15 = uVar13; + if (iVar8 != 0) { + /* try { // try from 0031ab74 to 0041ab77 has its CatchHandler @ 0031ac64 */ + sVar22 = *__dest; + /* try { // try from 0031ab80 to 0041ab83 has its CatchHandler @ 0031aca0 */ + *__dest = *(short *)((long)__dest + uVar27); + *(short *)((long)__dest + uVar27) = sVar22; + if (iVar8 != 1) { + sVar22 = __dest[1]; + __dest[1] = *(short *)((long)__dest + uVar32); + /* try { // try from 0031aba0 to 0041abaf has its CatchHandler @ 00319720 */ + *(short *)((long)__dest + uVar32) = sVar22; + if (iVar8 != 2) { + sVar22 = __dest[2]; + /* try { // try from 0031abb8 to 0041abbb has its CatchHandler @ 0031ad70 */ + __dest[2] = *(short *)((long)__dest + uVar26); + *(short *)((long)__dest + uVar26) = sVar22; + if (iVar8 != 3) { + /* try { // try from 0031abc4 to 0041abc7 has its CatchHandler @ 0031aca0 */ + sVar22 = __dest[3]; + __dest[3] = *(short *)((long)__dest + uVar24); + *(short *)((long)__dest + uVar24) = sVar22; + if (iVar8 != 4) { + /* catch() { ... } // from try @ 0031a1bc with catch @ 0031abe4 + catch() { ... } // from try @ 0031a7dc with catch @ 0031abe4 + catch() { ... } // from try @ 0031a8d8 with catch @ 0031abe4 */ + sVar22 = __dest[4]; + __dest[4] = *(short *)((long)__dest + uVar17); + *(short *)((long)__dest + uVar17) = sVar22; + if (iVar8 != 5) { + sVar22 = __dest[5]; + __dest[5] = *(short *)((long)__dest + uVar14); + *(short *)((long)__dest + uVar14) = sVar22; + if (iVar8 == 7) { + sVar22 = __dest[6]; + __dest[6] = *(short *)((long)__dest + uVar35); + *(short *)((long)__dest + uVar35) = sVar22; + uVar15 = 7; + } + else { + uVar15 = 6; + } + } + } + } + } + } + } + uVar1 = ((uVar2 - iVar8) - 8 >> 3) + 1; + iVar5 = uVar1 * 8; + if (6 < (uVar2 - 1) - iVar8) { + /* try { // try from 0031ac60 to 0041ac63 has its CatchHandler @ 00319720 */ + /* catch() { ... } // from try @ 0031a7c0 with catch @ 0031ac64 + catch() { ... } // from try @ 0031ab48 with catch @ 0031ac64 + catch() { ... } // from try @ 0031ab74 with catch @ 0031ac64 */ + pauVar19 = (undefined1 (*) [16])((long)__dest + (__n - 0xe) + ~uVar13 * 2); + uVar23 = 0; + pauVar12 = (undefined1 (*) [16])(__dest + uVar13); + pauVar28 = pauVar19; + pauVar33 = (undefined1 (*) [16])(__dest + uVar13); + do { + auVar7 = *pauVar19; + uVar23 = uVar23 + 1; + /* catch() { ... } // from try @ 0031a788 with catch @ 0031ac88 */ + /* catch() { ... } // from try @ 0031a770 with catch @ 0031ac8c */ + pauVar19 = pauVar19 + -1; + /* catch() { ... } // from try @ 0031a4f0 with catch @ 0031ac90 */ + auVar37._8_8_ = _UNK_0031b0e8; + auVar37._0_8_ = _DAT_0031b0e0; + auVar38 = a64_TBL(ZEXT816(0),auVar7,auVar37); + /* catch() { ... } // from try @ 0031a4d8 with catch @ 0031ac94 */ + auVar7._8_8_ = _UNK_0031b0e8; + auVar7._0_8_ = _DAT_0031b0e0; + auVar37 = a64_TBL(ZEXT816(0),*pauVar33,auVar7); + /* catch() { ... } // from try @ 00319d64 with catch @ 0031ac98 + catch() { ... } // from try @ 0031a240 with catch @ 0031ac98 + catch() { ... } // from try @ 0031a7e8 with catch @ 0031ac98 + catch() { ... } // from try @ 0031a964 with catch @ 0031ac98 */ + *(long *)((long)*pauVar12 + 8) = auVar38._8_8_; + *(long *)*pauVar12 = auVar38._0_8_; + *(long *)(*pauVar28 + 8) = auVar37._8_8_; + *(long *)*pauVar28 = auVar37._0_8_; + /* catch() { ... } // from try @ 00319cb4 with catch @ 0031aca0 + catch() { ... } // from try @ 0031a2b4 with catch @ 0031aca0 + catch() { ... } // from try @ 0031aa34 with catch @ 0031aca0 + catch() { ... } // from try @ 0031ab14 with catch @ 0031aca0 + catch() { ... } // from try @ 0031ab34 with catch @ 0031aca0 + catch() { ... } // from try @ 0031ab58 with catch @ 0031aca0 + catch() { ... } // from try @ 0031ab80 with catch @ 0031aca0 + catch() { ... } // from try @ 0031abc4 with catch @ 0031aca0 */ + pauVar28 = pauVar28 + -1; + pauVar12 = pauVar12 + 1; + pauVar33 = pauVar33 + 1; + } while (uVar23 < uVar1); + uVar15 = (ulong)(uint)((int)uVar15 + iVar5); + if (iVar5 == uVar2 - iVar8) goto LAB_0031adc8; + } + uVar13 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + iVar8 = (int)uVar15; + uVar4 = *(undefined2 *)((long)__dest + uVar13); + uVar15 = -(ulong)(uVar6 - iVar8 >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uVar6 - iVar8) << 1; + *(undefined2 *)((long)__dest + uVar13) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 1 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 1); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 2); + *(undefined2 *)((long)__dest + uVar13 + 2) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 2 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 2); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 4); + *(undefined2 *)((long)__dest + uVar13 + 4) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 3 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 3); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 6); + /* catch() { ... } // from try @ 00319e84 with catch @ 0031ad48 + catch() { ... } // from try @ 0031a828 with catch @ 0031ad48 */ + *(undefined2 *)((long)__dest + uVar13 + 6) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 4 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 4); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 8); + /* catch() { ... } // from try @ 0031999c with catch @ 0031ad70 + catch() { ... } // from try @ 0031a328 with catch @ 0031ad70 + catch() { ... } // from try @ 0031aaa8 with catch @ 0031ad70 + catch() { ... } // from try @ 0031ab20 with catch @ 0031ad70 + catch() { ... } // from try @ 0031ab68 with catch @ 0031ad70 + catch() { ... } // from try @ 0031abb8 with catch @ 0031ad70 */ + *(undefined2 *)((long)__dest + uVar13 + 8) = + *(undefined2 *)((long)__dest + uVar15); + /* catch() { ... } // from try @ 00319928 with catch @ 0031ad78 */ + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 5 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 5); + /* try { // try from 0031ad88 to 0041ad8b has its CatchHandler @ 00319720 */ + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + /* catch() { ... } // from try @ 0031a41c with catch @ 0031ad8c */ + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 10); + /* try { // try from 0031ad9c to 0041ad9f has its CatchHandler @ 00319720 */ + *(undefined2 *)((long)__dest + uVar13 + 10) = + *(undefined2 *)((long)__dest + uVar15); + /* catch() { ... } // from try @ 003198d4 with catch @ 0031ada0 */ + *(undefined2 *)((long)__dest + uVar15) = uVar4; + /* catch() { ... } // from try @ 00319858 with catch @ 0031ada4 */ + if (iVar8 + 6 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 6); + /* try { // try from 0031adb4 to 0041adb7 has its CatchHandler @ 00319720 */ + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 0xc); + /* catch() { ... } // from try @ 00319878 with catch @ 0031adb8 */ + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + /* catch() { ... } // from try @ 0031989c with catch @ 0031adbc */ + /* catch() { ... } // from try @ 003198b8 with catch @ 0031adc0 */ + *(undefined2 *)((long)__dest + uVar13 + 0xc) = + *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + } + } + } + } + } + } + } + } +LAB_0031adc8: + if ((uVar3 == 0) && (0 < iVar34)) { + lVar11 = 0; + lVar25 = **(long **)(param_2 + 0x48); + psVar16 = (short *)(*(long *)(param_2 + 0x10) + lVar36 * 2); + do { + psVar31 = __dest + lVar11; + lVar11 = lVar11 + 1; + /* catch() { ... } // from try @ 0031ae2c with catch @ 0031adf0 + catch() { ... } // from try @ 0031b0c4 with catch @ 0031adf0 + catch() { ... } // from try @ 0031b18c with catch @ 0031adf0 */ + *psVar16 = *psVar31; + psVar16 = (short *)((long)psVar16 + lVar25); + } while ((int)lVar11 < iVar34); + } + lVar36 = lVar36 + 1; + } while ((int)lVar36 < iVar39); + } + if ((local_420 != local_410) && (local_420 != (short *)0x0)) { + /* try { // try from 0031ae2c to 0041ae2f has its CatchHandler @ 0031adf0 */ + operator_delete__(local_420); + } + /* try { // try from 0031ae48 to 0041ae4b has its CatchHandler @ 0031b1a0 */ + return; +} + + +================================================================== + +### FUNC 0031b0f0 (888 bytes) name=FUN_0031b0f0 + +void FUN_0031b0f0(float *param_1,float *param_2,long param_3) + +{ + long lVar1; + long lVar2; + ulong uVar3; + long lVar4; + float *pfVar5; + float *pfVar6; + float *pfVar7; + ulong uVar8; + long lVar9; + long lVar10; + ulong uVar11; + long lVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + + lVar9 = (long)param_2 - (long)param_1; + /* try { // try from 0031b108 to 0041b10b has its CatchHandler @ 0031b1a0 */ + if (lVar9 < 0x44) { + return; + } + if (param_3 != 0) { + /* catch() { ... } // from try @ 0031af04 with catch @ 0031b11c */ + param_3 = param_3 + -1; + lVar1 = (lVar9 >> 3) * 4; + fVar13 = param_1[1]; + fVar14 = param_1[lVar9 >> 3]; + fVar16 = param_2[-1]; + if (fVar14 <= fVar13) goto LAB_0031b1f8; +LAB_0031b13c: + if (fVar14 < fVar16) goto LAB_0031b208; + if (fVar16 <= fVar13) goto LAB_0031b224; + do { + fVar15 = *param_1; + *param_1 = fVar16; + param_2[-1] = fVar15; + fVar13 = *param_1; + fVar14 = param_1[1]; + pfVar7 = param_2; + pfVar6 = param_1; + pfVar5 = param_2; + while( true ) { + while( true ) { + while( true ) { + /* try { // try from 0031b114 to 0041b117 has its CatchHandler @ 0031b198 */ + param_2 = pfVar6 + 1; + while (fVar14 < fVar13) { + param_2 = param_2 + 1; + fVar14 = *param_2; + } + pfVar7 = pfVar7 + -1; + while (fVar13 < fVar15) { + pfVar7 = pfVar7 + -1; + /* try { // try from 0031b18c to 0041b18f has its CatchHandler @ 0031adf0 */ + fVar15 = *pfVar7; + /* catch() { ... } // from try @ 0031aed4 with catch @ 0031b190 + catch() { ... } // from try @ 0031af0c with catch @ 0031b190 */ + } + /* catch() { ... } // from try @ 0031ae68 with catch @ 0031b198 + catch() { ... } // from try @ 0031afdc with catch @ 0031b198 + catch() { ... } // from try @ 0031b114 with catch @ 0031b198 */ + /* catch() { ... } // from try @ 0031ae48 with catch @ 0031b1a0 + catch() { ... } // from try @ 0031b050 with catch @ 0031b1a0 + catch() { ... } // from try @ 0031b108 with catch @ 0031b1a0 */ + if (pfVar7 <= param_2) break; + *param_2 = fVar15; + /* catch() { ... } // from try @ 0031b2c4 with catch @ 0031b1a8 + catch() { ... } // from try @ 0031b310 with catch @ 0031b1a8 */ + *pfVar7 = fVar14; + fVar15 = pfVar7[-1]; + fVar13 = *param_1; + fVar14 = param_2[1]; + pfVar6 = param_2; + } + FUN_0031b0f0(param_2,pfVar5,param_3); + lVar9 = (long)param_2 - (long)param_1; + if (lVar9 < 0x44) { + return; + } + if (param_3 == 0) goto LAB_0031b338; + lVar1 = (lVar9 >> 3) * 4; + param_3 = param_3 + -1; + fVar13 = param_1[1]; + fVar14 = param_1[lVar9 >> 3]; + fVar16 = param_2[-1]; + if (fVar13 < fVar14) goto LAB_0031b13c; +LAB_0031b1f8: + if (fVar16 <= fVar13) break; +LAB_0031b224: + fVar14 = *param_1; + *param_1 = fVar13; + param_1[1] = fVar14; + fVar15 = param_2[-1]; + pfVar7 = param_2; + pfVar6 = param_1; + pfVar5 = param_2; + } + if (fVar14 < fVar16) break; +LAB_0031b208: + fVar13 = *param_1; + *param_1 = fVar14; + *(float *)((long)param_1 + lVar1) = fVar13; + fVar15 = param_2[-1]; + fVar13 = *param_1; + fVar14 = param_1[1]; + pfVar7 = param_2; + pfVar6 = param_1; + pfVar5 = param_2; + } + } while( true ); + } +LAB_0031b338: + lVar9 = lVar9 >> 2; + lVar12 = lVar9 + -2 >> 1; + pfVar6 = param_1 + lVar12; + lVar1 = lVar12; + do { + fVar13 = *pfVar6; + lVar2 = lVar1; + pfVar7 = pfVar6; + while (lVar2 < lVar9 + -1 >> 1) { + lVar10 = lVar2 + 1; + lVar4 = lVar10 * 2; + pfVar7 = param_1 + lVar10 * 2; + fVar14 = param_1[lVar10 * 2]; + /* try { // try from 0031b388 to 0041b38b has its CatchHandler @ 0031b320 */ + if (fVar14 < pfVar7[-1]) { + lVar4 = lVar4 + -1; + fVar14 = param_1[lVar4]; + pfVar7 = param_1 + lVar4; + } + param_1[lVar2] = fVar14; + lVar2 = lVar4; + } + if ((lVar2 == lVar12) && (((uint)lVar9 & 1) != 1)) { + lVar10 = lVar2 + 1; + lVar2 = lVar10 * 2 + -1; + *pfVar7 = param_1[lVar10 * 2 + -1]; + pfVar7 = param_1 + lVar2; + } + if (lVar1 < lVar2) { + lVar10 = lVar2 + -1 >> 1; + fVar14 = param_1[lVar10]; + while (lVar4 = lVar10, fVar14 < fVar13) { + param_1[lVar2] = fVar14; + pfVar7 = param_1 + lVar4; + if (lVar4 <= lVar1) break; + lVar10 = (lVar4 + -1) / 2; + fVar14 = param_1[lVar10]; + lVar2 = lVar4; + } + *pfVar7 = fVar13; + if (lVar1 == 0) break; + } + else { + /* try { // try from 0031b3b4 to 0041b447 has its CatchHandler @ 0031e4d4 */ + *pfVar7 = fVar13; + } + pfVar6 = pfVar6 + -1; + lVar1 = lVar1 + -1; + } while( true ); +LAB_0031b28c: + param_2 = param_2 + -1; + fVar13 = *param_2; + uVar11 = (long)param_2 - (long)param_1 >> 2; + *param_2 = *param_1; + lVar9 = (long)(uVar11 - 1) / 2; + /* try { // try from 0031b2b0 to 0041b2b3 has its CatchHandler @ 0031b314 */ + if (lVar9 < 1) { + uVar3 = uVar11 & 1; + pfVar6 = param_1; + if ((uVar11 & 1) == 0) goto LAB_0031b2fc; + } + else { + uVar8 = 0; + do { + lVar1 = uVar8 + 1; + uVar3 = lVar1 * 2; + /* try { // try from 0031b2c4 to 0041b2c7 has its CatchHandler @ 0031b1a8 */ + pfVar6 = param_1 + lVar1 * 2; + fVar14 = param_1[lVar1 * 2]; + /* try { // try from 0031b2cc to 0041b2cf has its CatchHandler @ 0031b314 */ + if (fVar14 < pfVar6[-1]) { + /* try { // try from 0031b2d8 to 0041b2db has its CatchHandler @ 0031b2e0 */ + uVar3 = uVar3 - 1; + /* catch() { ... } // from try @ 0031b238 with catch @ 0031b2e0 + catch() { ... } // from try @ 0031b2d8 with catch @ 0031b2e0 */ + fVar14 = param_1[uVar3]; + pfVar6 = param_1 + uVar3; + } + param_1[uVar8] = fVar14; + uVar8 = uVar3; + } while ((long)uVar3 < lVar9); + if ((uVar11 & 1) == 0) { +LAB_0031b2fc: + if (uVar3 == (long)(uVar11 - 2) / 2) { + lVar9 = uVar3 + 1; + uVar3 = lVar9 * 2 - 1; + *pfVar6 = param_1[lVar9 * 2 + -1]; + pfVar6 = param_1 + uVar3; + } + else { + /* try { // try from 0031b310 to 0041b313 has its CatchHandler @ 0031b1a8 */ + if ((long)uVar3 < 1) goto LAB_0031b314; + } + } + uVar11 = (long)(uVar3 - 1) >> 1; + fVar14 = param_1[uVar11]; + while (uVar8 = uVar11, fVar14 < fVar13) { + pfVar6 = param_1 + uVar8; + param_1[uVar3] = fVar14; + uVar11 = (long)(uVar8 - 1) >> 1; + if (uVar8 == 0) break; + fVar14 = param_1[uVar11]; + uVar3 = uVar8; + } + } +LAB_0031b314: + /* catch() { ... } // from try @ 0031b2b0 with catch @ 0031b314 + catch() { ... } // from try @ 0031b2cc with catch @ 0031b314 */ + *pfVar6 = fVar13; + if ((long)param_2 - (long)param_1 < 8) { + /* catch() { ... } // from try @ 0031b388 with catch @ 0031b320 + catch() { ... } // from try @ 0031b4b8 with catch @ 0031b320 + catch() { ... } // from try @ 0031e4b8 with catch @ 0031b320 */ + return; + } + goto LAB_0031b28c; +} + + +================================================================== + +### FUNC 0031b470 (1524 bytes) name=FUN_0031b470 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0031b470(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + int iVar5; + uint uVar6; + int iVar7; + long lVar8; + long lVar9; + long lVar10; + undefined1 (*pauVar11) [16]; + ulong uVar12; + float *pfVar13; + size_t sVar14; + undefined1 (*pauVar15) [16]; + ulong uVar16; + float *pfVar17; + ulong uVar18; + long lVar19; + ulong uVar20; + undefined1 (*pauVar21) [16]; + float *pfVar22; + float *pfVar23; + uint uVar24; + undefined1 (*pauVar25) [16]; + int iVar26; + ulong uVar27; + ulong uVar28; + ulong __n; + float *__dest; + long lVar29; + float fVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + float fVar33; + int iVar34; + float *local_430; + float local_420 [264]; + + local_430 = local_420; + /* try { // try from 0031b4b8 to 0041b4eb has its CatchHandler @ 0031b320 */ + lVar8 = *(long *)(param_1 + 0x10); + uVar3 = param_3 & 1 ^ 1; + lVar9 = *(long *)(param_2 + 0x10); + if (uVar3 == 0) { + uVar27 = (ulong)*(uint *)(param_1 + 8); + iVar34 = *(int *)(param_1 + 0xc); + uVar12 = (ulong)(int)*(uint *)(param_1 + 8); + if (0x108 < uVar12) { + uVar18 = uVar12 << 2; + if (0x1fc0000000000000 < uVar12) { + uVar18 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar18); + } + } + else { + iVar34 = *(int *)(param_1 + 8); + uVar27 = (ulong)*(uint *)(param_1 + 0xc); + } + /* try { // try from 0031b4f4 to 0041b4f7 has its CatchHandler @ 0031e4d4 */ + if (0 < iVar34) { + iVar26 = (int)uVar27; + uVar6 = iVar26 - 1; + uVar2 = iVar26 / 2; + uVar28 = (ulong)uVar2; + __n = -(uVar27 >> 0x1f) & 0xfffffffc00000000 | uVar27 << 2; + uVar12 = -(ulong)(iVar26 - 2U >> 0x1f) & 0xfffffffc00000000 | (ulong)(iVar26 - 2U) << 2; + uVar27 = -(ulong)(iVar26 - 3U >> 0x1f) & 0xfffffffc00000000 | (ulong)(iVar26 - 3U) << 2; + lVar29 = 0; + uVar18 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar6 << 2; + /* try { // try from 0031b570 to 0041b573 has its CatchHandler @ 0031e4bc */ + do { + if (uVar3 == 0) { + __dest = local_430; + if (0 < iVar26) { + lVar10 = 0; + lVar19 = **(long **)(param_1 + 0x48); + pfVar13 = (float *)(*(long *)(param_1 + 0x10) + lVar29 * 4); + do { + fVar33 = *pfVar13; + pfVar13 = (float *)((long)pfVar13 + lVar19); + local_430[lVar10] = fVar33; + lVar10 = lVar10 + 1; + /* try { // try from 0031b5b8 to 0041b5bb has its CatchHandler @ 0031e470 */ + } while ((int)lVar10 < iVar26); + } + } + else { + __dest = (float *)(*(long *)(param_2 + 0x10) + lVar29 * **(long **)(param_2 + 0x48)); + if (lVar8 != lVar9) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar29 * **(long **)(param_1 + 0x48)), + __n); + } + } + pfVar13 = (float *)((long)__dest + __n); + if (__dest != pfVar13) { + FUN_0031b0f0(__dest,pfVar13,(0x3f - LZCOUNT((long)__n >> 2)) * 2); + pfVar23 = __dest + 1; + if ((long)__n < 0x44) { + for (; pfVar13 != pfVar23; pfVar23 = pfVar23 + 1) { + fVar33 = *pfVar23; + if (*__dest <= fVar33) { + fVar30 = pfVar23[-1]; + pfVar22 = pfVar23; + if (fVar33 < fVar30) { + do { + pfVar17 = pfVar22 + -1; + *pfVar22 = fVar30; + fVar30 = pfVar22[-2]; + pfVar22 = pfVar17; + } while (fVar33 < fVar30); + *pfVar17 = fVar33; + } + else { + *pfVar23 = fVar33; + } + } + else { + sVar14 = (long)pfVar23 - (long)__dest; + /* try { // try from 0031b608 to 0041b60b has its CatchHandler @ 0031e4ec */ + if ((long)sVar14 >> 2 != 0) { + memmove((void *)((long)pfVar23 + (4 - sVar14)),__dest,sVar14); + } + /* try { // try from 0031b610 to 0041c767 has its CatchHandler @ 0031e4bc */ + *__dest = fVar33; + } + } + } + else { + do { + pfVar22 = pfVar23; + fVar33 = *pfVar22; + if (*__dest <= fVar33) { + fVar30 = pfVar22[-1]; + pfVar23 = pfVar22; + if (fVar33 < fVar30) { + do { + pfVar17 = pfVar23 + -1; + *pfVar23 = fVar30; + fVar30 = pfVar23[-2]; + pfVar23 = pfVar17; + } while (fVar33 < fVar30); + *pfVar17 = fVar33; + } + else { + *pfVar22 = fVar33; + } + } + else { + sVar14 = (long)pfVar22 - (long)__dest; + if ((long)sVar14 >> 2 != 0) { + memmove((void *)((long)pfVar22 + (4 - sVar14)),__dest,sVar14); + } + *__dest = fVar33; + } + pfVar23 = pfVar22 + 1; + } while (pfVar23 != __dest + 0x10); + if (pfVar13 != pfVar23) { + fVar33 = *pfVar22; + fVar30 = *pfVar23; + if (fVar30 < fVar33) goto LAB_0031b90c; + do { + *pfVar23 = fVar30; + while( true ) { + pfVar23 = pfVar23 + 1; + if (pfVar13 == pfVar23) goto LAB_0031b620; + fVar33 = pfVar23[-1]; + fVar30 = *pfVar23; + pfVar22 = pfVar23 + -1; + if (fVar33 <= fVar30) break; +LAB_0031b90c: + do { + pfVar17 = pfVar22; + pfVar17[1] = fVar33; + fVar33 = pfVar17[-1]; + pfVar22 = pfVar17 + -1; + } while (fVar30 < fVar33); + *pfVar17 = fVar30; + } + } while( true ); + } + } + } +LAB_0031b620: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(__n + uVar28 * -4) < (long)(uVar28 * 4) && 0 < (long)__n) { + lVar10 = 0; + pfVar13 = (float *)((long)__dest + uVar18); + do { + fVar33 = __dest[lVar10]; + __dest[lVar10] = *pfVar13; + lVar10 = lVar10 + 1; + *pfVar13 = fVar33; + pfVar13 = pfVar13 + -1; + } while ((int)lVar10 < (int)uVar2); + } + else { + uVar1 = -((uint)((ulong)__dest >> 2) & 3) & 3; + uVar16 = uVar28; + if (uVar1 < uVar2) { + uVar16 = (ulong)uVar1; + } + iVar7 = (int)uVar16; + uVar20 = uVar16; + if (iVar7 != 0) { + fVar33 = *__dest; + *__dest = *(float *)((long)__dest + uVar18); + *(float *)((long)__dest + uVar18) = fVar33; + if (iVar7 != 1) { + fVar33 = __dest[1]; + __dest[1] = *(float *)((long)__dest + uVar12); + *(float *)((long)__dest + uVar12) = fVar33; + if (iVar7 == 3) { + fVar33 = __dest[2]; + __dest[2] = *(float *)((long)__dest + uVar27); + *(float *)((long)__dest + uVar27) = fVar33; + } + else { + uVar20 = 2; + } + } + } + uVar1 = ((uVar2 - iVar7) - 4 >> 2) + 1; + uVar24 = 0; + pauVar15 = (undefined1 (*) [16])((long)__dest + (__n - 0xc) + ~uVar16 * 4); + iVar5 = uVar1 * 4; + pauVar11 = (undefined1 (*) [16])(__dest + uVar16); + pauVar21 = pauVar15; + pauVar25 = (undefined1 (*) [16])(__dest + uVar16); + do { + auVar32 = *pauVar15; + uVar24 = uVar24 + 1; + pauVar15 = pauVar15 + -1; + auVar31._8_8_ = _UNK_0031ba98; + auVar31._0_8_ = _DAT_0031ba90; + auVar31 = a64_TBL(ZEXT816(0),auVar32,auVar31); + auVar32._8_8_ = _UNK_0031ba98; + auVar32._0_8_ = _DAT_0031ba90; + auVar32 = a64_TBL(ZEXT816(0),*pauVar25,auVar32); + *(long *)((long)*pauVar11 + 8) = auVar31._8_8_; + *(long *)*pauVar11 = auVar31._0_8_; + *(long *)(*pauVar21 + 8) = auVar32._8_8_; + *(long *)*pauVar21 = auVar32._0_8_; + pauVar21 = pauVar21 + -1; + pauVar11 = pauVar11 + 1; + pauVar25 = pauVar25 + 1; + } while (uVar24 < uVar1); + uVar1 = iVar5 + (int)uVar20; + if (iVar5 != uVar2 - iVar7) { + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar4 = *(undefined4 *)((long)__dest + uVar16); + uVar20 = -(ulong)(uVar6 - uVar1 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar6 - uVar1) << 2; + *(undefined4 *)((long)__dest + uVar16) = *(undefined4 *)((long)__dest + uVar20); + *(undefined4 *)((long)__dest + uVar20) = uVar4; + if ((int)(uVar1 + 1) < (int)uVar2) { + uVar24 = uVar6 - (uVar1 + 1); + uVar20 = -(ulong)(uVar24 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar24 << 2; + uVar4 = *(undefined4 *)((long)__dest + uVar16 + 4); + *(undefined4 *)((long)__dest + uVar16 + 4) = *(undefined4 *)((long)__dest + uVar20); + *(undefined4 *)((long)__dest + uVar20) = uVar4; + if ((int)(uVar1 + 2) < (int)uVar2) { + uVar1 = uVar6 - (uVar1 + 2); + uVar20 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar4 = *(undefined4 *)((long)__dest + uVar16 + 8); + *(undefined4 *)((long)__dest + uVar16 + 8) = *(undefined4 *)((long)__dest + uVar20); + *(undefined4 *)((long)__dest + uVar20) = uVar4; + } + } + } + } + } + if ((uVar3 == 0) && (0 < iVar26)) { + lVar10 = 0; + lVar19 = **(long **)(param_2 + 0x48); + pfVar13 = (float *)(*(long *)(param_2 + 0x10) + lVar29 * 4); + do { + pfVar23 = __dest + lVar10; + lVar10 = lVar10 + 1; + *pfVar13 = *pfVar23; + pfVar13 = (float *)((long)pfVar13 + lVar19); + } while ((int)lVar10 < iVar26); + } + lVar29 = lVar29 + 1; + } while ((int)lVar29 < iVar34); + } + if ((local_430 != local_420) && (local_430 != (float *)0x0)) { + operator_delete__(local_430); + } + return; +} + + +================================================================== + +### FUNC 0031baa0 (888 bytes) name=FUN_0031baa0 + +void FUN_0031baa0(double *param_1,double *param_2,long param_3) + +{ + long lVar1; + long lVar2; + ulong uVar3; + long lVar4; + double *pdVar5; + double *pdVar6; + double *pdVar7; + ulong uVar8; + long lVar9; + long lVar10; + ulong uVar11; + long lVar12; + double dVar13; + double dVar14; + double dVar15; + double dVar16; + + lVar9 = (long)param_2 - (long)param_1; + if (lVar9 < 0x88) { + return; + } + if (param_3 != 0) { + param_3 = param_3 + -1; + lVar1 = (lVar9 >> 4) * 8; + dVar13 = param_1[1]; + dVar14 = param_1[lVar9 >> 4]; + dVar16 = param_2[-1]; + if (dVar14 <= dVar13) goto LAB_0031bba8; +LAB_0031baec: + if (dVar14 < dVar16) goto LAB_0031bbb8; + if (dVar16 <= dVar13) goto LAB_0031bbd4; + do { + dVar15 = *param_1; + *param_1 = dVar16; + param_2[-1] = dVar15; + dVar13 = *param_1; + dVar14 = param_1[1]; + pdVar7 = param_2; + pdVar6 = param_1; + pdVar5 = param_2; + while( true ) { + while( true ) { + while( true ) { + param_2 = pdVar6 + 1; + while (dVar14 < dVar13) { + param_2 = param_2 + 1; + dVar14 = *param_2; + } + pdVar7 = pdVar7 + -1; + while (dVar13 < dVar15) { + pdVar7 = pdVar7 + -1; + dVar15 = *pdVar7; + } + if (pdVar7 <= param_2) break; + *param_2 = dVar15; + *pdVar7 = dVar14; + dVar15 = pdVar7[-1]; + dVar13 = *param_1; + dVar14 = param_2[1]; + pdVar6 = param_2; + } + FUN_0031baa0(param_2,pdVar5,param_3); + lVar9 = (long)param_2 - (long)param_1; + if (lVar9 < 0x88) { + return; + } + if (param_3 == 0) goto LAB_0031bce8; + lVar1 = (lVar9 >> 4) * 8; + param_3 = param_3 + -1; + dVar13 = param_1[1]; + dVar14 = param_1[lVar9 >> 4]; + dVar16 = param_2[-1]; + if (dVar13 < dVar14) goto LAB_0031baec; +LAB_0031bba8: + if (dVar16 <= dVar13) break; +LAB_0031bbd4: + dVar14 = *param_1; + *param_1 = dVar13; + param_1[1] = dVar14; + dVar15 = param_2[-1]; + pdVar7 = param_2; + pdVar6 = param_1; + pdVar5 = param_2; + } + if (dVar14 < dVar16) break; +LAB_0031bbb8: + dVar13 = *param_1; + *param_1 = dVar14; + *(double *)((long)param_1 + lVar1) = dVar13; + dVar15 = param_2[-1]; + dVar13 = *param_1; + dVar14 = param_1[1]; + pdVar7 = param_2; + pdVar6 = param_1; + pdVar5 = param_2; + } + } while( true ); + } +LAB_0031bce8: + lVar9 = lVar9 >> 3; + lVar12 = lVar9 + -2 >> 1; + pdVar6 = param_1 + lVar12; + lVar1 = lVar12; + do { + dVar13 = *pdVar6; + lVar2 = lVar1; + pdVar7 = pdVar6; + while (lVar2 < lVar9 + -1 >> 1) { + lVar10 = lVar2 + 1; + lVar4 = lVar10 * 2; + pdVar7 = param_1 + lVar10 * 2; + dVar14 = param_1[lVar10 * 2]; + if (dVar14 < pdVar7[-1]) { + lVar4 = lVar4 + -1; + dVar14 = param_1[lVar4]; + pdVar7 = param_1 + lVar4; + } + param_1[lVar2] = dVar14; + lVar2 = lVar4; + } + if ((lVar2 == lVar12) && (((uint)lVar9 & 1) != 1)) { + lVar10 = lVar2 + 1; + lVar2 = lVar10 * 2 + -1; + *pdVar7 = param_1[lVar10 * 2 + -1]; + pdVar7 = param_1 + lVar2; + } + if (lVar1 < lVar2) { + lVar10 = lVar2 + -1 >> 1; + dVar14 = param_1[lVar10]; + while (lVar4 = lVar10, dVar14 < dVar13) { + param_1[lVar2] = dVar14; + pdVar7 = param_1 + lVar4; + if (lVar4 <= lVar1) break; + lVar10 = (lVar4 + -1) / 2; + dVar14 = param_1[lVar10]; + lVar2 = lVar4; + } + *pdVar7 = dVar13; + if (lVar1 == 0) break; + } + else { + *pdVar7 = dVar13; + } + pdVar6 = pdVar6 + -1; + lVar1 = lVar1 + -1; + } while( true ); +LAB_0031bc3c: + param_2 = param_2 + -1; + dVar13 = *param_2; + uVar11 = (long)param_2 - (long)param_1 >> 3; + *param_2 = *param_1; + lVar9 = (long)(uVar11 - 1) / 2; + if (lVar9 < 1) { + uVar3 = uVar11 & 1; + pdVar6 = param_1; + if ((uVar11 & 1) == 0) goto LAB_0031bcac; + } + else { + uVar8 = 0; + do { + lVar1 = uVar8 + 1; + uVar3 = lVar1 * 2; + pdVar6 = param_1 + lVar1 * 2; + dVar14 = param_1[lVar1 * 2]; + if (dVar14 < pdVar6[-1]) { + uVar3 = uVar3 - 1; + dVar14 = param_1[uVar3]; + pdVar6 = param_1 + uVar3; + } + param_1[uVar8] = dVar14; + uVar8 = uVar3; + } while ((long)uVar3 < lVar9); + if ((uVar11 & 1) == 0) { +LAB_0031bcac: + if (uVar3 == (long)(uVar11 - 2) / 2) { + lVar9 = uVar3 + 1; + uVar3 = lVar9 * 2 - 1; + *pdVar6 = param_1[lVar9 * 2 + -1]; + pdVar6 = param_1 + uVar3; + } + else if ((long)uVar3 < 1) goto LAB_0031bcc4; + } + uVar11 = (long)(uVar3 - 1) >> 1; + dVar14 = param_1[uVar11]; + while (uVar8 = uVar11, dVar14 < dVar13) { + pdVar6 = param_1 + uVar8; + param_1[uVar3] = dVar14; + uVar11 = (long)(uVar8 - 1) >> 1; + if (uVar8 == 0) break; + dVar14 = param_1[uVar11]; + uVar3 = uVar8; + } + } +LAB_0031bcc4: + *pdVar6 = dVar13; + if ((long)param_2 - (long)param_1 < 0x10) { + return; + } + goto LAB_0031bc3c; +} + + +================================================================== + +### FUNC 0031be20 (1340 bytes) name=FUN_0031be20 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0031be20(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + undefined1 auVar7 [16]; + undefined1 auVar8 [16]; + long lVar9; + long lVar10; + long lVar11; + undefined1 (*pauVar12) [16]; + ulong uVar13; + undefined1 (*pauVar14) [16]; + ulong uVar15; + double *pdVar16; + double dVar17; + size_t sVar18; + undefined8 uVar19; + double *pdVar20; + long lVar21; + undefined1 (*pauVar22) [16]; + uint uVar23; + double *pdVar24; + double *pdVar25; + undefined1 (*pauVar26) [16]; + int iVar27; + ulong uVar28; + ulong uVar29; + double *__dest; + long lVar30; + double dVar31; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + int iVar34; + double *local_450; + double local_440 [136]; + + local_450 = local_440; + lVar9 = *(long *)(param_1 + 0x10); + uVar4 = param_3 & 1 ^ 1; + lVar10 = *(long *)(param_2 + 0x10); + if (uVar4 == 0) { + uVar28 = (ulong)*(uint *)(param_1 + 8); + iVar34 = *(int *)(param_1 + 0xc); + uVar29 = (ulong)(int)*(uint *)(param_1 + 8); + if (0x88 < uVar29) { + uVar13 = uVar29 << 3; + if (0xfe0000000000000 < uVar29) { + uVar13 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar13); + } + } + else { + iVar34 = *(int *)(param_1 + 8); + uVar28 = (ulong)*(uint *)(param_1 + 0xc); + } + if (0 < iVar34) { + iVar27 = (int)uVar28; + uVar6 = iVar27 - 1; + uVar29 = -(uVar28 >> 0x1f) & 0xfffffff800000000 | uVar28 << 3; + uVar2 = iVar27 / 2; + uVar28 = -(ulong)(uVar6 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar6 << 3; + lVar30 = 0; + do { + if (uVar4 == 0) { + __dest = local_450; + if (0 < iVar27) { + lVar11 = 0; + lVar21 = **(long **)(param_1 + 0x48); + pdVar16 = (double *)(*(long *)(param_1 + 0x10) + lVar30 * 8); + do { + dVar17 = *pdVar16; + pdVar16 = (double *)((long)pdVar16 + lVar21); + local_450[lVar11] = dVar17; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < iVar27); + } + } + else { + __dest = (double *)(*(long *)(param_2 + 0x10) + lVar30 * **(long **)(param_2 + 0x48)); + if (lVar9 != lVar10) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar30 * **(long **)(param_1 + 0x48)), + uVar29); + } + } + pdVar16 = (double *)((long)__dest + uVar29); + if (__dest != pdVar16) { + FUN_0031baa0(__dest,pdVar16,(0x3f - LZCOUNT((long)uVar29 >> 3)) * 2); + pdVar25 = __dest + 1; + if ((long)uVar29 < 0x88) { + for (; pdVar16 != pdVar25; pdVar25 = pdVar25 + 1) { + dVar17 = *pdVar25; + if (*__dest <= dVar17) { + dVar31 = pdVar25[-1]; + pdVar24 = pdVar25; + if (dVar17 < dVar31) { + do { + pdVar20 = pdVar24 + -1; + *pdVar24 = dVar31; + dVar31 = pdVar24[-2]; + pdVar24 = pdVar20; + } while (dVar17 < dVar31); + *pdVar20 = dVar17; + } + else { + *pdVar25 = dVar17; + } + } + else { + sVar18 = (long)pdVar25 - (long)__dest; + if ((long)sVar18 >> 3 != 0) { + memmove((void *)((long)pdVar25 + (8 - sVar18)),__dest,sVar18); + } + *__dest = dVar17; + } + } + } + else { + do { + pdVar24 = pdVar25; + dVar17 = *pdVar24; + if (*__dest <= dVar17) { + dVar31 = pdVar24[-1]; + pdVar25 = pdVar24; + if (dVar17 < dVar31) { + do { + pdVar20 = pdVar25 + -1; + *pdVar25 = dVar31; + dVar31 = pdVar25[-2]; + pdVar25 = pdVar20; + } while (dVar17 < dVar31); + *pdVar20 = dVar17; + } + else { + *pdVar24 = dVar17; + } + } + else { + sVar18 = (long)pdVar24 - (long)__dest; + if ((long)sVar18 >> 3 != 0) { + memmove((void *)((long)pdVar24 + (8 - sVar18)),__dest,sVar18); + } + *__dest = dVar17; + } + pdVar25 = pdVar24 + 1; + } while (pdVar25 != __dest + 0x10); + if (pdVar16 != pdVar25) { + auVar32._0_8_ = *pdVar24; + auVar32._8_8_ = 0; + auVar33._0_8_ = *pdVar25; + auVar33._8_8_ = 0; + if (auVar33._0_8_ < auVar32._0_8_) goto LAB_0031c20c; + do { + *pdVar25 = auVar33._0_8_; + while( true ) { + pdVar25 = pdVar25 + 1; + if (pdVar16 == pdVar25) goto LAB_0031bfb4; + auVar32._0_8_ = pdVar25[-1]; + auVar32._8_8_ = 0; + auVar33._0_8_ = *pdVar25; + auVar33._8_8_ = 0; + pdVar24 = pdVar25 + -1; + if (auVar32._0_8_ <= auVar33._0_8_) break; +LAB_0031c20c: + do { + pdVar20 = pdVar24; + pdVar20[1] = auVar32._0_8_; + auVar32._0_8_ = pdVar20[-1]; + auVar32._8_8_ = 0; + pdVar24 = pdVar20 + -1; + } while (auVar33._0_8_ < auVar32._0_8_); + *pdVar20 = auVar33._0_8_; + } + } while( true ); + } + } + } +LAB_0031bfb4: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || + (long)(uVar29 + (ulong)uVar2 * -8) < (long)((ulong)uVar2 * 8) && 0 < (long)uVar29) { + lVar11 = 0; + pdVar16 = (double *)((long)__dest + uVar28); + do { + dVar17 = __dest[lVar11]; + __dest[lVar11] = *pdVar16; + lVar11 = lVar11 + 1; + *pdVar16 = dVar17; + pdVar16 = pdVar16 + -1; + } while ((int)lVar11 < (int)uVar2); + } + else { + uVar1 = (uint)((ulong)__dest >> 3) & 1; + uVar3 = uVar2; + if (uVar1 < uVar2) { + uVar3 = uVar1; + } + if (uVar3 != 0) { + dVar17 = *__dest; + *__dest = *(double *)((long)__dest + uVar28); + *(double *)((long)__dest + uVar28) = dVar17; + } + uVar1 = ((uVar2 - uVar3) - 2 >> 1) + 1; + uVar23 = 0; + iVar5 = uVar1 * 2; + pauVar14 = (undefined1 (*) [16])((long)__dest + (uVar29 - 0x10) + (ulong)uVar3 * -8); + pauVar12 = (undefined1 (*) [16])(__dest + uVar3); + pauVar22 = pauVar14; + pauVar26 = (undefined1 (*) [16])(__dest + uVar3); + do { + auVar32 = *pauVar14; + uVar23 = uVar23 + 1; + pauVar14 = pauVar14 + -1; + auVar7._8_8_ = _UNK_0031c388; + auVar7._0_8_ = _DAT_0031c380; + auVar32 = a64_TBL(ZEXT816(0),auVar32,auVar7); + auVar8._8_8_ = _UNK_0031c388; + auVar8._0_8_ = _DAT_0031c380; + auVar33 = a64_TBL(ZEXT816(0),*pauVar12,auVar8); + *(long *)(*pauVar26 + 8) = auVar32._8_8_; + *(long *)*pauVar26 = auVar32._0_8_; + *(long *)(*pauVar22 + 8) = auVar33._8_8_; + *(long *)*pauVar22 = auVar33._0_8_; + pauVar22 = pauVar22 + -1; + pauVar12 = pauVar12 + 1; + pauVar26 = pauVar26 + 1; + } while (uVar23 < uVar1); + uVar1 = iVar5 + (uint)(uVar3 != 0); + if (iVar5 != uVar2 - uVar3) { + uVar13 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + uVar15 = -(ulong)(uVar6 - uVar1 >> 0x1f) & 0xfffffff800000000 | + (ulong)(uVar6 - uVar1) << 3; + uVar19 = *(undefined8 *)((long)__dest + uVar13); + *(undefined8 *)((long)__dest + uVar13) = *(undefined8 *)((long)__dest + uVar15); + *(undefined8 *)((long)__dest + uVar15) = uVar19; + } + } + } + if ((uVar4 == 0) && (0 < iVar27)) { + lVar11 = 0; + lVar21 = **(long **)(param_2 + 0x48); + pdVar16 = (double *)(*(long *)(param_2 + 0x10) + lVar30 * 8); + do { + pdVar25 = __dest + lVar11; + lVar11 = lVar11 + 1; + *pdVar16 = *pdVar25; + pdVar16 = (double *)((long)pdVar16 + lVar21); + } while ((int)lVar11 < iVar27); + } + lVar30 = lVar30 + 1; + } while ((int)lVar30 < iVar34); + } + if ((local_450 != local_440) && (local_450 != (double *)0x0)) { + operator_delete__(local_450); + } + return; +} + + +================================================================== + +### FUNC 0031c390 (864 bytes) name=FUN_0031c390 + +void FUN_0031c390(ushort *param_1,ushort *param_2,long param_3) + +{ + long lVar1; + long lVar2; + long lVar3; + ulong uVar4; + ulong uVar5; + ushort *puVar6; + ushort *puVar7; + ushort uVar8; + ushort *puVar9; + ushort uVar10; + long lVar11; + long lVar12; + ushort uVar13; + ulong uVar14; + long lVar15; + + lVar11 = (long)param_2 - (long)param_1; + if (lVar11 < 0x22) { + return; + } + if (param_3 != 0) { + uVar13 = param_1[1]; + lVar1 = (lVar11 >> 2) * 2; + param_3 = param_3 + -1; + uVar10 = param_2[-1]; + uVar8 = param_1[lVar11 >> 2]; + if (uVar8 <= uVar13) goto LAB_0031c498; +LAB_0031c3dc: + if (uVar8 < uVar10) goto LAB_0031c4a8; + if (uVar10 <= uVar13) goto LAB_0031c4c4; + do { + uVar8 = *param_1; + *param_1 = uVar10; + param_2[-1] = uVar8; + uVar13 = *param_1; + uVar10 = param_1[1]; + puVar9 = param_2; + puVar7 = param_1; + puVar6 = param_2; + while( true ) { + while( true ) { + while( true ) { + param_2 = puVar7 + 1; + while (uVar10 < uVar13) { + param_2 = param_2 + 1; + uVar10 = *param_2; + } + puVar9 = puVar9 + -1; + while (uVar13 < uVar8) { + puVar9 = puVar9 + -1; + uVar8 = *puVar9; + } + if (puVar9 <= param_2) break; + *param_2 = uVar8; + *puVar9 = uVar10; + uVar8 = puVar9[-1]; + uVar13 = *param_1; + uVar10 = param_2[1]; + puVar7 = param_2; + } + FUN_0031c390(param_2,puVar6,param_3); + lVar11 = (long)param_2 - (long)param_1; + if (lVar11 < 0x22) { + return; + } + if (param_3 == 0) goto LAB_0031c4dc; + uVar13 = param_1[1]; + lVar1 = (lVar11 >> 2) * 2; + param_3 = param_3 + -1; + uVar8 = param_1[lVar11 >> 2]; + uVar10 = param_2[-1]; + if (uVar13 < uVar8) goto LAB_0031c3dc; +LAB_0031c498: + if (uVar10 <= uVar13) break; +LAB_0031c4c4: + uVar10 = *param_1; + param_1[1] = uVar10; + *param_1 = uVar13; + uVar8 = param_2[-1]; + puVar9 = param_2; + puVar7 = param_1; + puVar6 = param_2; + } + if (uVar8 < uVar10) break; +LAB_0031c4a8: + uVar13 = *param_1; + *param_1 = uVar8; + *(ushort *)((long)param_1 + lVar1) = uVar13; + uVar13 = *param_1; + uVar10 = param_1[1]; + uVar8 = param_2[-1]; + puVar9 = param_2; + puVar7 = param_1; + puVar6 = param_2; + } + } while( true ); + } +LAB_0031c4dc: + lVar11 = lVar11 >> 1; + lVar15 = lVar11 + -2 >> 1; + puVar7 = param_1 + lVar15; + lVar1 = lVar15; + do { + uVar13 = *puVar7; + lVar3 = lVar1; + puVar9 = puVar7; + while (lVar3 < lVar11 + -1 >> 1) { + lVar12 = lVar3 + 1; + lVar2 = lVar12 * 2; + puVar9 = param_1 + lVar12 * 2; + uVar8 = param_1[lVar12 * 2]; + if (uVar8 < puVar9[-1]) { + lVar2 = lVar2 + -1; + uVar8 = param_1[lVar2]; + puVar9 = param_1 + lVar2; + } + param_1[lVar3] = uVar8; + lVar3 = lVar2; + } + if ((lVar3 == lVar15) && (((uint)lVar11 & 1) != 1)) { + lVar12 = lVar3 + 1; + lVar3 = lVar12 * 2 + -1; + *puVar9 = param_1[lVar12 * 2 + -1]; + puVar9 = param_1 + lVar3; + } + if (lVar1 < lVar3) { + lVar12 = lVar3 + -1; + do { + lVar2 = lVar12 >> 1; + if (uVar13 <= param_1[lVar2]) break; + param_1[lVar3] = param_1[lVar2]; + puVar9 = param_1 + lVar2; + lVar12 = (lVar2 + -1) - (lVar2 + -1 >> 0x3f); + lVar3 = lVar2; + } while (lVar1 < lVar2); + *puVar9 = uVar13; + if (lVar1 == 0) break; + } + else { + *puVar9 = uVar13; + } + puVar7 = puVar7 + -1; + lVar1 = lVar1 + -1; + } while( true ); +LAB_0031c5a4: + param_2 = param_2 + -1; + uVar13 = *param_2; + *param_2 = *param_1; + uVar14 = (long)param_2 - (long)param_1 >> 1; + lVar11 = (long)(uVar14 - 1) / 2; + if (lVar11 < 1) { + uVar5 = uVar14 & 1; + puVar7 = param_1; + if ((uVar14 & 1) == 0) goto LAB_0031c614; + } + else { + uVar4 = 0; + do { + lVar1 = uVar4 + 1; + uVar5 = lVar1 * 2; + puVar7 = param_1 + lVar1 * 2; + uVar8 = param_1[lVar1 * 2]; + if (uVar8 < puVar7[-1]) { + uVar5 = uVar5 - 1; + uVar8 = param_1[uVar5]; + puVar7 = param_1 + uVar5; + } + param_1[uVar4] = uVar8; + uVar4 = uVar5; + } while ((long)uVar5 < lVar11); + if ((uVar14 & 1) == 0) { +LAB_0031c614: + if (uVar5 == (long)(uVar14 - 2) / 2) { + lVar11 = uVar5 + 1; + uVar5 = lVar11 * 2 - 1; + *puVar7 = param_1[lVar11 * 2 + -1]; + puVar7 = param_1 + uVar5; + } + else if ((long)uVar5 < 1) goto LAB_0031c62c; + } + uVar14 = (long)(uVar5 - 1) >> 1; + uVar8 = param_1[uVar14]; + while (uVar4 = uVar14, uVar8 < uVar13) { + param_1[uVar5] = uVar8; + puVar7 = param_1 + uVar4; + uVar14 = (long)(uVar4 - 1) >> 1; + if (uVar4 == 0) break; + uVar8 = param_1[uVar14]; + uVar5 = uVar4; + } + } +LAB_0031c62c: + *puVar7 = uVar13; + if ((long)param_2 - (long)param_1 < 4) { + return; + } + goto LAB_0031c5a4; +} + + +================================================================== + +### FUNC 0031c6f0 (1876 bytes) name=FUN_0031c6f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0031c6f0(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined2 uVar4; + int iVar5; + uint uVar6; + undefined1 auVar7 [16]; + int iVar8; + long lVar9; + long lVar10; + long lVar11; + undefined1 (*pauVar12) [16]; + ulong uVar13; + ulong uVar14; + ulong uVar15; + ushort *puVar16; + ulong uVar17; + size_t sVar18; + undefined1 (*pauVar19) [16]; + ushort *puVar20; + ushort uVar21; + uint uVar22; + ulong uVar23; + long lVar24; + ulong uVar25; + ushort uVar26; + ulong uVar27; + undefined1 (*pauVar28) [16]; + ulong uVar29; + ushort *puVar30; + ushort *puVar31; + ulong uVar32; + undefined1 (*pauVar33) [16]; + int iVar34; + ulong uVar35; + ulong __n; + ushort *__dest; + long lVar36; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + int iVar39; + ushort *local_420; + ushort local_410 [520]; + + local_420 = local_410; + lVar9 = *(long *)(param_1 + 0x10); + uVar3 = param_3 & 1 ^ 1; + lVar10 = *(long *)(param_2 + 0x10); + if (uVar3 == 0) { + uVar35 = (ulong)*(uint *)(param_1 + 8); + iVar39 = *(int *)(param_1 + 0xc); + uVar14 = (ulong)(int)*(uint *)(param_1 + 8); + if (0x208 < uVar14) { + uVar17 = uVar14 << 1; + if (0x3f80000000000000 < uVar14) { + uVar17 = 0xffffffffffffffff; + } + local_420 = operator_new__(uVar17); + } + } + else { + iVar39 = *(int *)(param_1 + 8); + uVar35 = (ulong)*(uint *)(param_1 + 0xc); + } + if (0 < iVar39) { + iVar34 = (int)uVar35; + uVar6 = iVar34 - 1; + /* try { // try from 0031c784 to 0041c787 has its CatchHandler @ 0031e4dc */ + /* try { // try from 0031c78c to 0041c82f has its CatchHandler @ 0031e4bc */ + uVar2 = iVar34 / 2; + uVar29 = (ulong)uVar2; + uVar27 = -(ulong)(uVar6 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar6 << 1; + __n = -(uVar35 >> 0x1f) & 0xfffffffe00000000 | uVar35 << 1; + uVar35 = -(ulong)(iVar34 - 7U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 7U) << 1; + uVar32 = -(ulong)(iVar34 - 2U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 2U) << 1; + uVar25 = -(ulong)(iVar34 - 3U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 3U) << 1; + uVar23 = -(ulong)(iVar34 - 4U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 4U) << 1; + uVar17 = -(ulong)(iVar34 - 5U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 5U) << 1; + uVar14 = -(ulong)(iVar34 - 6U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar34 - 6U) << 1; + lVar36 = 0; + do { + if (uVar3 == 0) { + __dest = local_420; + if (0 < iVar34) { + lVar11 = 0; + /* try { // try from 0031c84c to 0041c84f has its CatchHandler @ 0031e4c4 */ + lVar24 = **(long **)(param_1 + 0x48); + puVar16 = (ushort *)(*(long *)(param_1 + 0x10) + lVar36 * 2); + do { + uVar26 = *puVar16; + puVar16 = (ushort *)((long)puVar16 + lVar24); + local_420[lVar11] = uVar26; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < iVar34); + } + } + else { + __dest = (ushort *)(*(long *)(param_2 + 0x10) + lVar36 * **(long **)(param_2 + 0x48)); + if (lVar9 != lVar10) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar36 * **(long **)(param_1 + 0x48)), + __n); + } + } + puVar16 = (ushort *)((long)__dest + __n); + if (__dest != puVar16) { + FUN_0031c390(__dest,puVar16,(0x3f - LZCOUNT((long)__n >> 1)) * 2); + puVar31 = __dest + 1; + if ((long)__n < 0x22) { + for (; puVar16 != puVar31; puVar31 = puVar31 + 1) { + uVar26 = *puVar31; + if (uVar26 < *__dest) { + sVar18 = (long)puVar31 - (long)__dest; + if ((long)sVar18 >> 1 != 0) { + memmove((void *)((long)puVar31 + (2 - sVar18)),__dest,sVar18); + } + *__dest = uVar26; + } + else { + uVar21 = puVar31[-1]; + puVar30 = puVar31; + if (uVar26 < uVar21) { + do { + puVar20 = puVar30 + -1; + *puVar30 = uVar21; + uVar21 = puVar30[-2]; + puVar30 = puVar20; + } while (uVar26 < uVar21); + *puVar20 = uVar26; + } + else { + *puVar31 = uVar26; + } + } + } + } + else { + do { + puVar30 = puVar31; + uVar26 = *puVar30; + if (uVar26 < *__dest) { + sVar18 = (long)puVar30 - (long)__dest; + if ((long)sVar18 >> 1 != 0) { + memmove((void *)((long)puVar30 + (2 - sVar18)),__dest,sVar18); + } + *__dest = uVar26; + } + else { + uVar21 = puVar30[-1]; + puVar31 = puVar30; + if (uVar26 < uVar21) { + do { + puVar20 = puVar31 + -1; + *puVar31 = uVar21; + uVar21 = puVar31[-2]; + puVar31 = puVar20; + } while (uVar26 < uVar21); + *puVar20 = uVar26; + } + else { + *puVar30 = uVar26; + } + } + puVar31 = puVar30 + 1; + } while (puVar31 != __dest + 0x10); + if (puVar16 != puVar31) { + uVar21 = *puVar30; + uVar26 = *puVar31; + if (uVar26 < uVar21) goto LAB_0031cce4; + do { + *puVar31 = uVar26; + while( true ) { + puVar31 = puVar31 + 1; + if (puVar16 == puVar31) goto LAB_0031c8d0; + uVar21 = puVar31[-1]; + uVar26 = *puVar31; + puVar30 = puVar31 + -1; + if (uVar21 <= uVar26) break; +LAB_0031cce4: + do { + puVar20 = puVar30; + puVar20[1] = uVar21; + uVar21 = puVar20[-1]; + puVar30 = puVar20 + -1; + } while (uVar26 < uVar21); + *puVar20 = uVar26; + } + } while( true ); + } + } + } +LAB_0031c8d0: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 0xc || (long)(__n + uVar29 * -2) < (long)(uVar29 * 2) && 0 < (long)__n) { + lVar11 = 0; + puVar16 = (ushort *)((long)__dest + uVar27); + do { + uVar26 = __dest[lVar11]; + __dest[lVar11] = *puVar16; + lVar11 = lVar11 + 1; + *puVar16 = uVar26; + puVar16 = puVar16 + -1; + } while ((int)lVar11 < (int)uVar2); + } + else { + uVar1 = -((uint)((ulong)__dest >> 1) & 7) & 7; + uVar13 = uVar29; + if (uVar1 < uVar2) { + uVar13 = (ulong)uVar1; + } + iVar8 = (int)uVar13; + uVar15 = uVar13; + if (iVar8 != 0) { + uVar26 = *__dest; + *__dest = *(ushort *)((long)__dest + uVar27); + *(ushort *)((long)__dest + uVar27) = uVar26; + if (iVar8 != 1) { + uVar26 = __dest[1]; + __dest[1] = *(ushort *)((long)__dest + uVar32); + *(ushort *)((long)__dest + uVar32) = uVar26; + if (iVar8 != 2) { + uVar26 = __dest[2]; + __dest[2] = *(ushort *)((long)__dest + uVar25); + *(ushort *)((long)__dest + uVar25) = uVar26; + if (iVar8 != 3) { + uVar26 = __dest[3]; + __dest[3] = *(ushort *)((long)__dest + uVar23); + *(ushort *)((long)__dest + uVar23) = uVar26; + if (iVar8 != 4) { + uVar26 = __dest[4]; + __dest[4] = *(ushort *)((long)__dest + uVar17); + *(ushort *)((long)__dest + uVar17) = uVar26; + if (iVar8 != 5) { + uVar26 = __dest[5]; + __dest[5] = *(ushort *)((long)__dest + uVar14); + *(ushort *)((long)__dest + uVar14) = uVar26; + if (iVar8 == 7) { + uVar26 = __dest[6]; + __dest[6] = *(ushort *)((long)__dest + uVar35); + *(ushort *)((long)__dest + uVar35) = uVar26; + uVar15 = 7; + } + else { + uVar15 = 6; + } + } + } + } + } + } + } + uVar1 = ((uVar2 - iVar8) - 8 >> 3) + 1; + iVar5 = uVar1 * 8; + if (6 < (uVar2 - 1) - iVar8) { + pauVar19 = (undefined1 (*) [16])((long)__dest + (__n - 0xe) + ~uVar13 * 2); + uVar22 = 0; + pauVar12 = (undefined1 (*) [16])(__dest + uVar13); + pauVar28 = pauVar19; + pauVar33 = (undefined1 (*) [16])(__dest + uVar13); + do { + auVar7 = *pauVar19; + uVar22 = uVar22 + 1; + pauVar19 = pauVar19 + -1; + auVar37._8_8_ = _UNK_0031ce78; + auVar37._0_8_ = _DAT_0031ce70; + auVar38 = a64_TBL(ZEXT816(0),auVar7,auVar37); + auVar7._8_8_ = _UNK_0031ce78; + auVar7._0_8_ = _DAT_0031ce70; + auVar37 = a64_TBL(ZEXT816(0),*pauVar33,auVar7); + *(long *)((long)*pauVar12 + 8) = auVar38._8_8_; + *(long *)*pauVar12 = auVar38._0_8_; + *(long *)(*pauVar28 + 8) = auVar37._8_8_; + *(long *)*pauVar28 = auVar37._0_8_; + pauVar28 = pauVar28 + -1; + pauVar12 = pauVar12 + 1; + pauVar33 = pauVar33 + 1; + } while (uVar22 < uVar1); + uVar15 = (ulong)(uint)((int)uVar15 + iVar5); + if (iVar5 == uVar2 - iVar8) goto LAB_0031cb58; + } + uVar13 = -(uVar15 >> 0x1f) & 0xfffffffe00000000 | uVar15 << 1; + iVar8 = (int)uVar15; + uVar4 = *(undefined2 *)((long)__dest + uVar13); + uVar15 = -(ulong)(uVar6 - iVar8 >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uVar6 - iVar8) << 1; + *(undefined2 *)((long)__dest + uVar13) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 1 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 1); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 2); + *(undefined2 *)((long)__dest + uVar13 + 2) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 2 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 2); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 4); + *(undefined2 *)((long)__dest + uVar13 + 4) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 3 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 3); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 6); + *(undefined2 *)((long)__dest + uVar13 + 6) = *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 4 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 4); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 8); + *(undefined2 *)((long)__dest + uVar13 + 8) = + *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 5 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 5); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 10); + *(undefined2 *)((long)__dest + uVar13 + 10) = + *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + if (iVar8 + 6 < (int)uVar2) { + uVar1 = uVar6 - (iVar8 + 6); + uVar4 = *(undefined2 *)((long)__dest + uVar13 + 0xc); + uVar15 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + *(undefined2 *)((long)__dest + uVar13 + 0xc) = + *(undefined2 *)((long)__dest + uVar15); + *(undefined2 *)((long)__dest + uVar15) = uVar4; + } + } + } + } + } + } + } + } +LAB_0031cb58: + if ((uVar3 == 0) && (0 < iVar34)) { + lVar11 = 0; + lVar24 = **(long **)(param_2 + 0x48); + puVar16 = (ushort *)(*(long *)(param_2 + 0x10) + lVar36 * 2); + do { + puVar31 = __dest + lVar11; + lVar11 = lVar11 + 1; + *puVar16 = *puVar31; + puVar16 = (ushort *)((long)puVar16 + lVar24); + } while ((int)lVar11 < iVar34); + } + lVar36 = lVar36 + 1; + } while ((int)lVar36 < iVar39); + } + if ((local_420 != local_410) && (local_420 != (ushort *)0x0)) { + operator_delete__(local_420); + } + return; +} + + +================================================================== + +### FUNC 0031ce80 (872 bytes) name=FUN_0031ce80 + +void FUN_0031ce80(int *param_1,int *param_2,long param_3) + +{ + long lVar1; + long lVar2; + ulong uVar3; + long lVar4; + int *piVar5; + int *piVar6; + int iVar7; + int *piVar8; + int iVar9; + long lVar10; + long lVar11; + ulong uVar12; + int iVar13; + ulong uVar14; + long lVar15; + + lVar10 = (long)param_2 - (long)param_1; + if (lVar10 < 0x44) { + return; + } + if (param_3 != 0) { + iVar13 = param_1[1]; + lVar1 = (lVar10 >> 3) * 4; + param_3 = param_3 + -1; + iVar9 = param_2[-1]; + iVar7 = param_1[lVar10 >> 3]; + if (iVar7 <= iVar13) goto LAB_0031cf88; +LAB_0031cecc: + if (iVar7 < iVar9) goto LAB_0031cf98; + if (iVar9 <= iVar13) goto LAB_0031cfb4; + do { + iVar7 = *param_1; + *param_1 = iVar9; + param_2[-1] = iVar7; + iVar13 = *param_1; + iVar9 = param_1[1]; + piVar8 = param_2; + piVar6 = param_1; + piVar5 = param_2; + while( true ) { + while( true ) { + while( true ) { + param_2 = piVar6 + 1; + while (iVar9 < iVar13) { + param_2 = param_2 + 1; + iVar9 = *param_2; + } + piVar8 = piVar8 + -1; + while (iVar13 < iVar7) { + piVar8 = piVar8 + -1; + iVar7 = *piVar8; + } + if (piVar8 <= param_2) break; + *param_2 = iVar7; + *piVar8 = iVar9; + iVar7 = piVar8[-1]; + iVar13 = *param_1; + iVar9 = param_2[1]; + piVar6 = param_2; + } + FUN_0031ce80(param_2,piVar5,param_3); + lVar10 = (long)param_2 - (long)param_1; + if (lVar10 < 0x44) { + return; + } + if (param_3 == 0) goto LAB_0031d0c8; + iVar13 = param_1[1]; + lVar1 = (lVar10 >> 3) * 4; + param_3 = param_3 + -1; + iVar7 = param_1[lVar10 >> 3]; + iVar9 = param_2[-1]; + if (iVar13 < iVar7) goto LAB_0031cecc; +LAB_0031cf88: + if (iVar9 <= iVar13) break; +LAB_0031cfb4: + iVar9 = *param_1; + param_1[1] = iVar9; + *param_1 = iVar13; + iVar7 = param_2[-1]; + piVar8 = param_2; + piVar6 = param_1; + piVar5 = param_2; + } + if (iVar7 < iVar9) break; +LAB_0031cf98: + iVar13 = *param_1; + *param_1 = iVar7; + *(int *)((long)param_1 + lVar1) = iVar13; + iVar13 = *param_1; + iVar9 = param_1[1]; + iVar7 = param_2[-1]; + piVar8 = param_2; + piVar6 = param_1; + piVar5 = param_2; + } + } while( true ); + } +LAB_0031d0c8: + lVar10 = lVar10 >> 2; + lVar15 = lVar10 + -2 >> 1; + piVar6 = param_1 + lVar15; + lVar1 = lVar15; + do { + iVar13 = *piVar6; + lVar2 = lVar1; + piVar8 = piVar6; + while (lVar2 < lVar10 + -1 >> 1) { + lVar11 = lVar2 + 1; + lVar4 = lVar11 * 2; + piVar8 = param_1 + lVar11 * 2; + iVar9 = param_1[lVar11 * 2]; + if (iVar9 < piVar8[-1]) { + lVar4 = lVar4 + -1; + iVar9 = param_1[lVar4]; + piVar8 = param_1 + lVar4; + } + param_1[lVar2] = iVar9; + lVar2 = lVar4; + } + if ((lVar2 == lVar15) && (((uint)lVar10 & 1) != 1)) { + lVar11 = lVar2 + 1; + lVar2 = lVar11 * 2 + -1; + *piVar8 = param_1[lVar11 * 2 + -1]; + piVar8 = param_1 + lVar2; + } + if (lVar1 < lVar2) { + lVar11 = lVar2 + -1; + do { + lVar4 = lVar11 >> 1; + if (iVar13 <= param_1[lVar4]) break; + param_1[lVar2] = param_1[lVar4]; + piVar8 = param_1 + lVar4; + lVar11 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f); + lVar2 = lVar4; + } while (lVar1 < lVar4); + *piVar8 = iVar13; + if (lVar1 == 0) break; + } + else { + *piVar8 = iVar13; + } + piVar6 = piVar6 + -1; + lVar1 = lVar1 + -1; + } while( true ); +LAB_0031d01c: + param_2 = param_2 + -1; + iVar13 = *param_2; + *param_2 = *param_1; + uVar14 = (long)param_2 - (long)param_1 >> 2; + lVar10 = (long)(uVar14 - 1) / 2; + if (lVar10 < 1) { + uVar3 = uVar14 & 1; + piVar6 = param_1; + if ((uVar14 & 1) == 0) goto LAB_0031d08c; + } + else { + uVar12 = 0; + do { + lVar1 = uVar12 + 1; + uVar3 = lVar1 * 2; + piVar6 = param_1 + lVar1 * 2; + iVar9 = param_1[lVar1 * 2]; + if (iVar9 < piVar6[-1]) { + uVar3 = uVar3 - 1; + iVar9 = param_1[uVar3]; + piVar6 = param_1 + uVar3; + } + param_1[uVar12] = iVar9; + uVar12 = uVar3; + } while ((long)uVar3 < lVar10); + if ((uVar14 & 1) == 0) { +LAB_0031d08c: + if (uVar3 == (long)(uVar14 - 2) / 2) { + lVar10 = uVar3 + 1; + uVar3 = lVar10 * 2 - 1; + *piVar6 = param_1[lVar10 * 2 + -1]; + piVar6 = param_1 + uVar3; + } + else if ((long)uVar3 < 1) goto LAB_0031d0a4; + } + uVar14 = (long)(uVar3 - 1) >> 1; + iVar9 = param_1[uVar14]; + while (uVar12 = uVar14, iVar9 < iVar13) { + param_1[uVar3] = iVar9; + piVar6 = param_1 + uVar12; + uVar14 = (long)(uVar12 - 1) >> 1; + if (uVar12 == 0) break; + iVar9 = param_1[uVar14]; + uVar3 = uVar12; + } + } +LAB_0031d0a4: + *piVar6 = iVar13; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_0031d01c; +} + + +================================================================== + +### FUNC 0031d1f0 (1540 bytes) name=FUN_0031d1f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0031d1f0(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + uint uVar5; + undefined1 auVar6 [16]; + int iVar7; + long lVar8; + long lVar9; + long lVar10; + undefined1 (*pauVar11) [16]; + ulong uVar12; + int *piVar13; + size_t sVar14; + undefined1 (*pauVar15) [16]; + ulong uVar16; + int *piVar17; + int iVar18; + ulong uVar19; + long lVar20; + ulong uVar21; + undefined1 (*pauVar22) [16]; + uint uVar23; + undefined1 (*pauVar24) [16]; + int *piVar25; + int *piVar26; + int iVar27; + ulong uVar28; + ulong uVar29; + ulong __n; + int *__dest; + long lVar30; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + int iVar33; + int *local_430; + int local_420 [264]; + + local_430 = local_420; + lVar8 = *(long *)(param_1 + 0x10); + uVar3 = param_3 & 1 ^ 1; + lVar9 = *(long *)(param_2 + 0x10); + if (uVar3 == 0) { + uVar28 = (ulong)*(uint *)(param_1 + 8); + iVar33 = *(int *)(param_1 + 0xc); + uVar12 = (ulong)(int)*(uint *)(param_1 + 8); + if (0x108 < uVar12) { + uVar19 = uVar12 << 2; + if (0x1fc0000000000000 < uVar12) { + uVar19 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar19); + } + } + else { + iVar33 = *(int *)(param_1 + 8); + uVar28 = (ulong)*(uint *)(param_1 + 0xc); + } + if (0 < iVar33) { + iVar27 = (int)uVar28; + uVar5 = iVar27 - 1; + uVar2 = iVar27 / 2; + uVar29 = (ulong)uVar2; + __n = -(uVar28 >> 0x1f) & 0xfffffffc00000000 | uVar28 << 2; + uVar12 = -(ulong)(iVar27 - 2U >> 0x1f) & 0xfffffffc00000000 | (ulong)(iVar27 - 2U) << 2; + uVar28 = -(ulong)(iVar27 - 3U >> 0x1f) & 0xfffffffc00000000 | (ulong)(iVar27 - 3U) << 2; + lVar30 = 0; + uVar19 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + do { + if (uVar3 == 0) { + __dest = local_430; + if (0 < iVar27) { + lVar10 = 0; + lVar20 = **(long **)(param_1 + 0x48); + piVar13 = (int *)(*(long *)(param_1 + 0x10) + lVar30 * 4); + do { + iVar7 = *piVar13; + piVar13 = (int *)((long)piVar13 + lVar20); + local_430[lVar10] = iVar7; + lVar10 = lVar10 + 1; + } while ((int)lVar10 < iVar27); + } + } + else { + __dest = (int *)(*(long *)(param_2 + 0x10) + lVar30 * **(long **)(param_2 + 0x48)); + if (lVar8 != lVar9) { + memcpy(__dest,(void *)(*(long *)(param_1 + 0x10) + lVar30 * **(long **)(param_1 + 0x48)), + __n); + } + } + piVar13 = (int *)((long)__dest + __n); + if (__dest != piVar13) { + FUN_0031ce80(__dest,piVar13,(0x3f - LZCOUNT((long)__n >> 2)) * 2); + piVar26 = __dest + 1; + if ((long)__n < 0x44) { + for (; piVar13 != piVar26; piVar26 = piVar26 + 1) { + iVar7 = *piVar26; + if (iVar7 < *__dest) { + sVar14 = (long)piVar26 - (long)__dest; + if ((long)sVar14 >> 2 != 0) { + memmove((void *)((long)piVar26 + (4 - sVar14)),__dest,sVar14); + } + *__dest = iVar7; + } + else { + iVar18 = piVar26[-1]; + piVar25 = piVar26; + if (iVar7 < iVar18) { + do { + piVar17 = piVar25 + -1; + *piVar25 = iVar18; + iVar18 = piVar25[-2]; + piVar25 = piVar17; + } while (iVar7 < iVar18); + *piVar17 = iVar7; + } + else { + *piVar26 = iVar7; + } + } + } + } + else { + do { + piVar25 = piVar26; + iVar7 = *piVar25; + if (iVar7 < *__dest) { + sVar14 = (long)piVar25 - (long)__dest; + if ((long)sVar14 >> 2 != 0) { + memmove((void *)((long)piVar25 + (4 - sVar14)),__dest,sVar14); + } + *__dest = iVar7; + } + else { + iVar18 = piVar25[-1]; + piVar26 = piVar25; + if (iVar7 < iVar18) { + do { + piVar17 = piVar26 + -1; + *piVar26 = iVar18; + iVar18 = piVar26[-2]; + piVar26 = piVar17; + } while (iVar7 < iVar18); + *piVar17 = iVar7; + } + else { + *piVar25 = iVar7; + } + } + piVar26 = piVar25 + 1; + } while (piVar26 != __dest + 0x10); + if (piVar13 != piVar26) { + iVar7 = *piVar25; + iVar18 = *piVar26; + if (iVar18 < iVar7) goto LAB_0031d694; + do { + *piVar26 = iVar18; + while( true ) { + piVar26 = piVar26 + 1; + if (piVar13 == piVar26) goto LAB_0031d3a0; + iVar7 = piVar26[-1]; + iVar18 = *piVar26; + piVar25 = piVar26 + -1; + if (iVar7 <= iVar18) break; +LAB_0031d694: + do { + piVar17 = piVar25; + piVar17[1] = iVar7; + iVar7 = piVar17[-1]; + piVar25 = piVar17 + -1; + } while (iVar18 < iVar7); + *piVar17 = iVar18; + } + } while( true ); + } + } + } +LAB_0031d3a0: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(__n + uVar29 * -4) < (long)(uVar29 * 4) && 0 < (long)__n) { + lVar10 = 0; + piVar13 = (int *)((long)__dest + uVar19); + do { + iVar7 = __dest[lVar10]; + __dest[lVar10] = *piVar13; + lVar10 = lVar10 + 1; + *piVar13 = iVar7; + piVar13 = piVar13 + -1; + } while ((int)lVar10 < (int)uVar2); + } + else { + uVar1 = -((uint)((ulong)__dest >> 2) & 3) & 3; + uVar16 = uVar29; + if (uVar1 < uVar2) { + uVar16 = (ulong)uVar1; + } + iVar7 = (int)uVar16; + uVar21 = uVar16; + if (iVar7 != 0) { + iVar18 = *__dest; + *__dest = *(int *)((long)__dest + uVar19); + *(int *)((long)__dest + uVar19) = iVar18; + if (iVar7 != 1) { + iVar18 = __dest[1]; + __dest[1] = *(int *)((long)__dest + uVar12); + *(int *)((long)__dest + uVar12) = iVar18; + if (iVar7 == 3) { + iVar18 = __dest[2]; + __dest[2] = *(int *)((long)__dest + uVar28); + *(int *)((long)__dest + uVar28) = iVar18; + } + else { + uVar21 = 2; + } + } + } + uVar1 = ((uVar2 - iVar7) - 4 >> 2) + 1; + uVar23 = 0; + pauVar15 = (undefined1 (*) [16])((long)__dest + (__n - 0xc) + ~uVar16 * 4); + iVar18 = uVar1 * 4; + pauVar11 = (undefined1 (*) [16])(__dest + uVar16); + pauVar22 = pauVar15; + pauVar24 = (undefined1 (*) [16])(__dest + uVar16); + do { + auVar6 = *pauVar15; + uVar23 = uVar23 + 1; + pauVar15 = pauVar15 + -1; + auVar31._8_8_ = _UNK_0031d828; + auVar31._0_8_ = _DAT_0031d820; + auVar32 = a64_TBL(ZEXT816(0),auVar6,auVar31); + auVar6._8_8_ = _UNK_0031d828; + auVar6._0_8_ = _DAT_0031d820; + auVar31 = a64_TBL(ZEXT816(0),*pauVar24,auVar6); + *(long *)((long)*pauVar11 + 8) = auVar32._8_8_; + *(long *)*pauVar11 = auVar32._0_8_; + *(long *)(*pauVar22 + 8) = auVar31._8_8_; + *(long *)*pauVar22 = auVar31._0_8_; + pauVar22 = pauVar22 + -1; + pauVar11 = pauVar11 + 1; + pauVar24 = pauVar24 + 1; + } while (uVar23 < uVar1); + uVar1 = iVar18 + (int)uVar21; + if (iVar18 != uVar2 - iVar7) { + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar4 = *(undefined4 *)((long)__dest + uVar16); + uVar21 = -(ulong)(uVar5 - uVar1 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar5 - uVar1) << 2; + *(undefined4 *)((long)__dest + uVar16) = *(undefined4 *)((long)__dest + uVar21); + *(undefined4 *)((long)__dest + uVar21) = uVar4; + if ((int)(uVar1 + 1) < (int)uVar2) { + uVar23 = uVar5 - (uVar1 + 1); + uVar21 = -(ulong)(uVar23 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar23 << 2; + uVar4 = *(undefined4 *)((long)__dest + uVar16 + 4); + *(undefined4 *)((long)__dest + uVar16 + 4) = *(undefined4 *)((long)__dest + uVar21); + *(undefined4 *)((long)__dest + uVar21) = uVar4; + if ((int)(uVar1 + 2) < (int)uVar2) { + uVar1 = uVar5 - (uVar1 + 2); + uVar4 = *(undefined4 *)((long)__dest + uVar16 + 8); + uVar21 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + *(undefined4 *)((long)__dest + uVar16 + 8) = *(undefined4 *)((long)__dest + uVar21); + *(undefined4 *)((long)__dest + uVar21) = uVar4; + } + } + } + } + } + if ((uVar3 == 0) && (0 < iVar27)) { + lVar10 = 0; + lVar20 = **(long **)(param_2 + 0x48); + piVar13 = (int *)(*(long *)(param_2 + 0x10) + lVar30 * 4); + do { + piVar26 = __dest + lVar10; + lVar10 = lVar10 + 1; + *piVar13 = *piVar26; + piVar13 = (int *)((long)piVar13 + lVar20); + } while ((int)lVar10 < iVar27); + } + lVar30 = lVar30 + 1; + } while ((int)lVar30 < iVar33); + } + if ((local_430 != local_420) && (local_430 != (int *)0x0)) { + operator_delete__(local_430); + } + return; +} + + +================================================================== + +### FUNC 0031d830 (136 bytes) name=getStdAllocator + +/* cv::Mat::getStdAllocator() */ + +undefined8 * cv::Mat::getStdAllocator(void) + +{ + int iVar1; + + if (((DAT_00531ff0 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00531ff0), iVar1 != 0)) { + DAT_00531fd8 = &PTR_FUN_004fc710; + __cxa_guard_release(&DAT_00531ff0); + __cxa_atexit(FUN_00307790,&DAT_00531fd8,&DAT_00502000); + return &DAT_00531fd8; + } + return &DAT_00531fd8; +} + + +================================================================== + +### FUNC 0031d8b8 (292 bytes) name=swap + +/* cv::swap(cv::Mat&, cv::Mat&) */ + +void cv::swap(Mat *param_1,Mat *param_2) + +{ + undefined4 uVar1; + undefined8 uVar2; + Mat *pMVar3; + Mat *pMVar4; + + uVar1 = *(undefined4 *)param_1; + *(undefined4 *)param_1 = *(undefined4 *)param_2; + *(undefined4 *)param_2 = uVar1; + uVar1 = *(undefined4 *)(param_1 + 4); + *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4); + *(undefined4 *)(param_2 + 4) = uVar1; + uVar1 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8); + *(undefined4 *)(param_2 + 8) = uVar1; + uVar1 = *(undefined4 *)(param_1 + 0xc); + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + *(undefined4 *)(param_2 + 0xc) = uVar1; + uVar2 = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_2 + 0x10); + *(undefined8 *)(param_2 + 0x10) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_2 + 0x18); + *(undefined8 *)(param_2 + 0x18) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x20); + *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_2 + 0x20); + *(undefined8 *)(param_2 + 0x20) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_2 + 0x28); + *(undefined8 *)(param_2 + 0x28) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x30); + *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(param_2 + 0x30); + *(undefined8 *)(param_2 + 0x30) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x38); + *(undefined8 *)(param_1 + 0x38) = *(undefined8 *)(param_2 + 0x38); + *(undefined8 *)(param_2 + 0x38) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x40); + *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(param_2 + 0x40); + *(undefined8 *)(param_2 + 0x40) = uVar2; + pMVar3 = *(Mat **)(param_1 + 0x48); + *(undefined8 *)(param_1 + 0x48) = *(undefined8 *)(param_2 + 0x48); + *(Mat **)(param_2 + 0x48) = pMVar3; + uVar2 = *(undefined8 *)(param_1 + 0x50); + *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(param_2 + 0x50); + *(undefined8 *)(param_2 + 0x50) = uVar2; + pMVar4 = *(Mat **)(param_1 + 0x48); + uVar2 = *(undefined8 *)(param_1 + 0x58); + *(undefined8 *)(param_1 + 0x58) = *(undefined8 *)(param_2 + 0x58); + *(undefined8 *)(param_2 + 0x58) = uVar2; + if (pMVar4 == param_2 + 0x50) { + *(Mat **)(param_1 + 0x48) = param_1 + 0x50; + *(Mat **)(param_1 + 0x40) = param_1 + 8; + pMVar3 = *(Mat **)(param_2 + 0x48); + } + if (pMVar3 != param_1 + 0x50) { + return; + } + *(Mat **)(param_2 + 0x48) = param_2 + 0x50; + *(Mat **)(param_2 + 0x40) = param_2 + 8; + return; +} + + +================================================================== + +### FUNC 0031d9dc (332 bytes) name=copySize + +/* cv::Mat::copySize(cv::Mat const&) */ + +void __thiscall cv::Mat::copySize(Mat *this,Mat *param_1) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + long lVar7; + char *pcVar8; + int iVar9; + long lVar10; + long lVar11; + long lVar12; + long lVar13; + ulong uVar14; + undefined8 local_10; + undefined8 local_8; + + uVar1 = *(uint *)(param_1 + 4); + if (0x20 < uVar1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x21); + uVar6 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar5 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar4 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar3 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar8[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10a); + String::deallocate((String *)&local_10); + } + if (uVar1 != *(uint *)(this + 4)) { + if (*(Mat **)(this + 0x48) != this + 0x50) { + fastFree(*(Mat **)(this + 0x48)); + *(Mat **)(this + 0x48) = this + 0x50; + *(Mat **)(this + 0x40) = this + 8; + } + if (2 < (int)uVar1) { + uVar14 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + lVar10 = fastMalloc(uVar14 + (long)(int)(uVar1 + 1) * 4); + *(long *)(this + 0x48) = lVar10; + lVar10 = lVar10 + uVar14 + 4; + *(long *)(this + 0x40) = lVar10; + *(uint *)(lVar10 + -4) = uVar1; + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + } + } + *(uint *)(this + 4) = uVar1; + if (0 < (int)uVar1) { + lVar13 = *(long *)(this + 0x48); + lVar10 = 0; + lVar12 = *(long *)(param_1 + 0x48); + lVar11 = *(long *)(this + 0x40); + lVar7 = *(long *)(param_1 + 0x40); + do { + iVar9 = (int)lVar10; + *(undefined4 *)(lVar11 + lVar10 * 4) = *(undefined4 *)(lVar7 + lVar10 * 4); + iVar2 = *(int *)(this + 4); + *(undefined8 *)(lVar13 + lVar10 * 8) = *(undefined8 *)(lVar12 + lVar10 * 8); + lVar10 = lVar10 + 1; + } while (iVar9 + 1 < iVar2); + } + return; +} + + +================================================================== + +### FUNC 0031db3c (444 bytes) name=deallocate + +/* cv::Mat::deallocate() */ + +void __thiscall cv::Mat::deallocate(Mat *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + char *pcVar4; + long *plVar5; + code *pcVar6; + long lVar7; + UMatData *this_00; + long local_10; + long local_8; + + this_00 = *(UMatData **)(this + 0x38); + if (this_00 != (UMatData *)0x0) { + plVar5 = *(long **)(this_00 + 8); + if ((plVar5 == (long *)0x0) && (plVar5 = *(long **)(this + 0x30), plVar5 == (long *)0x0)) { + plVar5 = (long *)getStdAllocator(); + this_00 = *(UMatData **)(this + 0x38); + } + pcVar6 = *(code **)(*plVar5 + 0x30); + if (pcVar6 != MatAllocator::unmap) { + (*pcVar6)(plVar5,this_00); + *(undefined8 *)(this + 0x38) = 0; + return; + } + lVar7 = *(long *)(this_00 + 0x10); + if (lVar7 == 0) { + pcVar6 = *(code **)(*plVar5 + 0x20); + if (pcVar6 == FUN_00309fdc) { + if (*(int *)(this_00 + 0x10) < 0) { + local_10 = lVar7; + local_8 = lVar7; + pcVar4 = (char *)String::allocate((String *)&local_10,0x11); + uVar3 = s_u_>urefcount_>__0_0046ac38._8_8_; + uVar2 = s_u_>urefcount_>__0_0046ac38._0_8_; + pcVar4[0x10] = s_u_>urefcount_>__0_0046ac38[0x10]; + *(undefined8 *)pcVar4 = uVar2; + *(undefined8 *)(pcVar4 + 8) = uVar3; + error(-0xd7,(String *)&local_10, + "virtual void cv::StdMatAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xd3); + String::deallocate((String *)&local_10); + } + iVar1 = *(int *)(this_00 + 0x14); + if (iVar1 < 0) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x10); + uVar2 = s_u_>refcount_>__0_0046ac50._8_8_; + *(undefined8 *)pcVar4 = s_u_>refcount_>__0_0046ac50._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_10, + "virtual void cv::StdMatAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xd4); + String::deallocate((String *)&local_10); + iVar1 = *(int *)(this_00 + 0x14); + } + if (iVar1 == 0) { + if ((*(uint *)(this_00 + 0x30) >> 5 & 1) == 0) { + fastFree(*(void **)(this_00 + 0x20)); + *(undefined8 *)(this_00 + 0x20) = 0; + } + UMatData::~UMatData(this_00); + operator_delete(this_00); + *(undefined8 *)(this + 0x38) = 0; + return; + } + } + else { + (*pcVar6)(plVar5,this_00); + } + } + } + *(undefined8 *)(this + 0x38) = 0; + return; +} + + +================================================================== + +### FUNC 0031dd20 (2124 bytes) name=create + +/* cv::Mat::create(int, int const*, int) */ + +void __thiscall cv::Mat::create(Mat *this,int param_1,int *param_2,int param_3) + +{ + ulong *puVar1; + long *plVar2; + uint uVar3; + int iVar4; + char cVar5; + bool bVar6; + int iVar7; + uint uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined2 uVar12; + int iVar13; + long lVar14; + undefined4 *puVar15; + int *piVar16; + MatAllocator *pMVar17; + undefined8 uVar18; + UMatData *this_00; + char *pcVar19; + int *piVar20; + ulong uVar21; + int iVar22; + long lVar23; + int *piVar24; + long *plVar25; + long lVar26; + long lVar27; + ulong uVar28; + long lVar29; + MatAllocator *pMVar30; + long lVar31; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + if ((0x20U < (uint)param_1) || (param_2 == (int *)0x0)) { + local_10 = 0; + local_8 = 0; + pcVar19 = (char *)String::allocate((String *)&local_10,0x23); + cVar5 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90[0x22]; + uVar11 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._24_8_; + uVar10 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._16_8_; + uVar9 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._8_8_; + uVar18 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._0_8_; + *(undefined2 *)(pcVar19 + 0x20) = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._32_2_; + pcVar19[0x22] = cVar5; + *(undefined8 *)pcVar19 = uVar18; + *(undefined8 *)(pcVar19 + 8) = uVar9; + *(undefined8 *)(pcVar19 + 0x10) = uVar10; + *(undefined8 *)(pcVar19 + 0x18) = uVar11; + error(-0xd7,(String *)&local_10,"void cv::Mat::create(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x175); + String::deallocate((String *)&local_10); + } + uVar3 = param_3 & 0xfff; + if ((*(long *)(this + 0x10) != 0) && + (((*(int *)(this + 4) == param_1 || ((param_1 == 1 && (*(int *)(this + 4) < 3)))) && + ((*(uint *)this & 0xfff) == uVar3)))) { + if (param_1 == 2) { + iVar22 = *param_2; + if ((*(int *)(this + 8) == iVar22) && (*(int *)(this + 0xc) == param_2[1])) { + return; + } + } + else { + if (param_1 < 1) { + if (param_1 == 0) { + piVar16 = *(int **)(this + 0x40); + /* try { // try from 0031e4b8 to 0041e4bb has its CatchHandler @ 0031b320 */ +LAB_0031dfd8: + if (piVar16[1] == 1) { + return; + } + } + goto LAB_0031dda8; + } + iVar22 = *param_2; + } + piVar16 = *(int **)(this + 0x40); + if (*piVar16 == iVar22) { + iVar22 = 0; + piVar20 = param_2; + piVar24 = piVar16; + do { + piVar24 = piVar24 + 1; + piVar20 = piVar20 + 1; + iVar22 = iVar22 + 1; + if (param_1 <= iVar22) { + if (param_1 == iVar22) { + if (param_1 != 1) { + return; + } + goto LAB_0031dfd8; + } + break; + } + } while (*piVar24 == *piVar20); + } + } +LAB_0031dda8: + if (*(long *)(this + 0x38) != 0) { + piVar16 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar22 = *piVar16; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar6) { + *piVar16 = iVar22 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar22 == 1) { + deallocate(this); + } + } + iVar22 = *(int *)(this + 4); + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (0 < iVar22) { + iVar13 = 0; + puVar15 = *(undefined4 **)(this + 0x40); + do { + *puVar15 = 0; + iVar13 = iVar13 + 1; + iVar22 = *(int *)(this + 4); + puVar15 = puVar15 + 1; + } while (iVar13 < iVar22); + } + if (param_1 == 0) { + return; + } + *(uint *)this = uVar3 | 0x42ff0000; + if (0x20U < (uint)param_1) { + local_10 = 0; + local_8 = 0; + pcVar19 = (char *)String::allocate((String *)&local_10,0x21); + uVar11 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar10 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar9 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar18 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar19[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar19 = uVar18; + *(undefined8 *)(pcVar19 + 8) = uVar9; + *(undefined8 *)(pcVar19 + 0x10) = uVar10; + *(undefined8 *)(pcVar19 + 0x18) = uVar11; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10a); + String::deallocate((String *)&local_10); + iVar22 = *(int *)(this + 4); + } + if (param_1 == iVar22) { +LAB_0031de78: + *(int *)(this + 4) = param_1; + if (param_2 == (int *)0x0) { +LAB_0031e064: + if (2 < param_1) goto LAB_0031e06c; + } + else { +LAB_0031de80: + uVar8 = param_1 - 1; + lVar14 = (long)(int)((*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3)); + if (-1 < (int)uVar8) { + lVar26 = (long)(int)uVar8; + lVar29 = lVar26 << 2; + lVar27 = lVar26 << 3; + lVar31 = lVar14; + do { + iVar22 = *(int *)((long)param_2 + lVar29); + if (iVar22 < 0) { + local_10 = 0; + local_8 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_10,6); + uVar12 = DAT_0046acbc; + *puVar15 = DAT_0046acb8; + *(undefined2 *)(puVar15 + 1) = uVar12; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x125); + String::deallocate((String *)&local_10); + } + lVar23 = *(long *)(this + 0x48); + *(int *)(*(long *)(this + 0x40) + lVar29) = iVar22; + lVar29 = lVar29 + -4; + *(long *)(lVar23 + lVar27) = lVar31; + lVar27 = lVar27 + -8; + lVar31 = iVar22 * lVar31; + } while (lVar27 != (lVar26 - (ulong)uVar8) * 8 + -8); + } + if (param_1 != 1) { + param_1 = *(int *)(this + 4); + goto LAB_0031e064; + } + *(undefined4 *)(this + 0xc) = 1; + *(undefined4 *)(this + 4) = 2; + *(long *)(*(long *)(this + 0x48) + 8) = lVar14; + } + lVar14 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + if (*(Mat **)(this + 0x48) != this + 0x50) { + fastFree(*(Mat **)(this + 0x48)); + *(Mat **)(this + 0x48) = this + 0x50; + *(Mat **)(this + 0x40) = this + 8; + } + if (param_1 < 3) goto LAB_0031de78; + uVar28 = -(ulong)((uint)param_1 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)param_1 << 3; + lVar14 = fastMalloc(uVar28 + (long)(param_1 + 1) * 4); + *(long *)(this + 0x48) = lVar14; + lVar14 = lVar14 + uVar28 + 4; + *(long *)(this + 0x40) = lVar14; + *(int *)(lVar14 + -4) = param_1; + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + *(int *)(this + 4) = param_1; + if (param_2 != (int *)0x0) goto LAB_0031de80; +LAB_0031e06c: + lVar31 = 0; + lVar14 = 1; + do { + lVar26 = lVar31 * 4; + lVar31 = lVar31 + 1; + lVar14 = lVar14 * *(int *)(*(long *)(this + 0x40) + lVar26); + } while ((int)lVar31 < param_1); + } + if (lVar14 != 0) { + pMVar30 = *(MatAllocator **)(this + 0x30); + pMVar17 = (MatAllocator *)getStdAllocator(); + lVar14 = *(long *)(this + 0x40); + if (pMVar30 == (MatAllocator *)0x0) { + pMVar30 = pMVar17; + } + lVar31 = *(long *)(this + 0x48); + if (*(code **)(*(long *)pMVar30 + 0x10) == FUN_0030779c) { + uVar3 = *(int *)(this + 4) - 1; + uVar28 = (ulong)(int)(((uint)param_3 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((param_3 & 7U) << 1)) & 3)); + if (-1 < (int)uVar3) { + lVar26 = (long)(int)uVar3; + if (lVar31 == 0) { + piVar16 = (int *)(lVar14 + lVar26 * 4); + do { + piVar20 = piVar16 + -1; + uVar28 = uVar28 * (long)*piVar16; + piVar16 = piVar20; + } while (piVar20 != (int *)(lVar14 + (lVar26 - (ulong)uVar3) * 4 + -4)); + } + else { + uVar21 = 0; + do { + lVar27 = uVar21 * 2; + iVar22 = *(int *)(lVar14 + lVar26 * 4 + uVar21); + uVar21 = uVar21 - 4; + *(ulong *)(lVar31 + lVar26 * 8 + lVar27) = uVar28; + uVar28 = uVar28 * (long)iVar22; + } while (uVar21 != ((ulong)uVar3 << 2 ^ 0xfffffffffffffffc)); + } + } + uVar18 = fastMalloc(uVar28); + this_00 = operator_new(0x50); + UMatData::UMatData(this_00,pMVar30); + *(undefined8 *)(this_00 + 0x20) = uVar18; + *(undefined8 *)(this_00 + 0x18) = uVar18; + *(ulong *)(this_00 + 0x28) = uVar28; + *(UMatData **)(this + 0x38) = this_00; + } + else { + /* catch() { ... } // from try @ 0031c84c with catch @ 0031e4c4 */ + /* catch() { ... } // from try @ 0031b3b4 with catch @ 0031e4d4 + catch() { ... } // from try @ 0031b4f4 with catch @ 0031e4d4 */ + lVar14 = (**(code **)(*(long *)pMVar30 + 0x10)) + (pMVar30,*(int *)(this + 4),lVar14,uVar3,0,lVar31,0,0); + /* catch() { ... } // from try @ 0031c784 with catch @ 0031e4dc */ + *(long *)(this + 0x38) = lVar14; + if (lVar14 == 0) { + local_20 = lVar14; + local_18 = lVar14; + /* catch() { ... } // from try @ 0031b608 with catch @ 0031e4ec */ + puVar15 = (undefined4 *)String::allocate((String *)&local_20,6); + uVar12 = DAT_0046acc4; + *puVar15 = DAT_0046acc0; + *(undefined2 *)(puVar15 + 1) = uVar12; + error(-0xd7,(String *)&local_20,"void cv::Mat::create(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x195); + String::deallocate((String *)&local_20); + } + } + if (*(long *)(*(long *)(this + 0x48) + (long)(*(int *)(this + 4) + -1) * 8) != + (long)(int)((*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3))) { + local_10 = 0; + local_8 = 0; + pcVar19 = (char *)String::allocate((String *)&local_10,0x2b); + cVar5 = s_step_dims_1______size_t_CV_ELEM__0046acc8[0x2a]; + uVar12 = s_step_dims_1______size_t_CV_ELEM__0046acc8._40_2_; + uVar11 = s_step_dims_1______size_t_CV_ELEM__0046acc8._24_8_; + uVar10 = s_step_dims_1______size_t_CV_ELEM__0046acc8._16_8_; + uVar9 = s_step_dims_1______size_t_CV_ELEM__0046acc8._8_8_; + uVar18 = s_step_dims_1______size_t_CV_ELEM__0046acc8._0_8_; + /* catch() { ... } // from try @ 0031b5b8 with catch @ 0031e470 */ + *(undefined8 *)(pcVar19 + 0x20) = s_step_dims_1______size_t_CV_ELEM__0046acc8._32_8_; + *(undefined2 *)(pcVar19 + 0x28) = uVar12; + pcVar19[0x2a] = cVar5; + *(undefined8 *)pcVar19 = uVar18; + *(undefined8 *)(pcVar19 + 8) = uVar9; + *(undefined8 *)(pcVar19 + 0x10) = uVar10; + *(undefined8 *)(pcVar19 + 0x18) = uVar11; + error(-0xd7,(String *)&local_10,"void cv::Mat::create(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x19d); + String::deallocate((String *)&local_10); + } + } + lVar14 = 0; + if (*(long *)(this + 0x38) != 0) { + piVar16 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar6) { + *piVar16 = *piVar16 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + lVar14 = *(long *)(this + 0x38); + } + iVar22 = *(int *)(this + 4); + if ((iVar22 < 1) || (piVar16 = *(int **)(this + 0x40), 1 < *piVar16)) { + /* catch() { ... } // from try @ 0031b570 with catch @ 0031e4bc + catch() { ... } // from try @ 0031b5c0 with catch @ 0031e4bc + catch() { ... } // from try @ 0031b610 with catch @ 0031e4bc + catch() { ... } // from try @ 0031c78c with catch @ 0031e4bc */ + iVar13 = 0; + } + else { + iVar13 = 0; + do { + piVar16 = piVar16 + 1; + iVar13 = iVar13 + 1; + if (iVar13 == iVar22) break; + } while (*piVar16 < 2); + } + iVar7 = iVar22 + -1; + if (iVar13 < iVar7) { + lVar26 = *(long *)(this + 0x48); + lVar27 = (long)iVar7 * 8; + lVar31 = (long)iVar7 * 4; + lVar29 = lVar27 + -8; + if (*(ulong *)(lVar26 + lVar29) <= + (ulong)((long)*(int *)(*(long *)(this + 0x40) + lVar31) * *(long *)(lVar26 + lVar27))) { + plVar25 = (long *)(lVar26 + lVar29); + piVar16 = (int *)(*(long *)(this + 0x40) + lVar31 + -4); + do { + if (plVar25 == + (long *)(lVar26 + ((long)(iVar22 + -2) - (ulong)(uint)((iVar22 + -2) - iVar13)) * 8)) + goto LAB_0031e174; + iVar4 = *piVar16; + lVar31 = *plVar25; + puVar1 = (ulong *)(plVar25 + -1); + plVar25 = plVar25 + -1; + piVar16 = piVar16 + -1; + } while (*puVar1 <= (ulong)(iVar4 * lVar31)); + } + *(uint *)this = *(uint *)this & 0xffffbfff; + } + else { +LAB_0031e174: + *(uint *)this = *(uint *)this | 0x4000; + } + if (2 < iVar22) { + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + } + if (lVar14 == 0) { + lVar14 = *(long *)(this + 0x10); + } + else { + lVar14 = *(long *)(lVar14 + 0x18); + *(long *)(this + 0x10) = lVar14; + *(long *)(this + 0x18) = lVar14; + } + if (lVar14 == 0) { + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + } + else { + piVar16 = *(int **)(this + 0x40); + plVar25 = *(long **)(this + 0x48); + iVar22 = *piVar16; + lVar31 = *(long *)(this + 0x18) + (long)iVar22 * *plVar25; + *(long *)(this + 0x28) = lVar31; + if (iVar22 < 1) { + *(long *)(this + 0x20) = lVar31; + } + else { + lVar14 = lVar14 + (long)piVar16[iVar7] * plVar25[iVar7]; + *(long *)(this + 0x20) = lVar14; + if (0 < iVar7) { + lVar31 = 0; + do { + piVar20 = piVar16 + lVar31; + plVar2 = plVar25 + lVar31; + lVar31 = lVar31 + 1; + lVar14 = lVar14 + (long)(*piVar20 + -1) * *plVar2; + } while ((int)lVar31 < iVar7); + *(long *)(this + 0x20) = lVar14; + } + } + } + return; +} + + +================================================================== + +### FUNC 0031e6b0 (800 bytes) name=Mat + +/* cv::Mat::Mat(cv::Mat const&, cv::Rect_ const&) */ + +void __thiscall cv::Mat::Mat(Mat *this,Mat *param_1,Rect_ *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined2 uVar7; + uint uVar8; + uint uVar9; + void *__dest; + undefined8 *puVar10; + char *pcVar11; + int iVar12; + undefined4 *puVar13; + long lVar14; + undefined8 *puVar15; + int iVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + long lVar22; + undefined8 local_10; + undefined8 local_8; + + iVar3 = *(int *)(param_2 + 4); + uVar9 = *(uint *)param_1; + lVar22 = **(long **)(param_1 + 0x48); + lVar14 = *(long *)(param_1 + 0x10); + *(undefined4 *)(this + 4) = 2; + iVar16 = *(int *)(param_2 + 0xc); + iVar2 = *(int *)(param_1 + 4); + iVar12 = *(int *)(param_2 + 8); + uVar21 = *(undefined8 *)(param_1 + 0x18); + uVar20 = *(undefined8 *)(param_1 + 0x20); + uVar19 = *(undefined8 *)(param_1 + 0x28); + uVar18 = *(undefined8 *)(param_1 + 0x30); + uVar17 = *(undefined8 *)(param_1 + 0x38); + lVar14 = lVar14 + iVar3 * lVar22; + *(uint *)this = uVar9; + *(int *)(this + 8) = iVar16; + *(int *)(this + 0xc) = iVar12; + *(long *)(this + 0x10) = lVar14; + *(undefined8 *)(this + 0x18) = uVar21; + *(undefined8 *)(this + 0x20) = uVar20; + *(undefined8 *)(this + 0x28) = uVar19; + *(undefined8 *)(this + 0x30) = uVar18; + *(undefined8 *)(this + 0x38) = uVar17; + *(Mat **)(this + 0x40) = this + 8; + *(Mat **)(this + 0x48) = this + 0x50; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + if (2 < iVar2) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)String::allocate((String *)&local_10,0xb); + cVar5 = s_m_dims_<__2_0046acf8[10]; + uVar7 = s_m_dims_<__2_0046acf8._8_2_; + *(undefined8 *)pcVar11 = s_m_dims_<__2_0046acf8._0_8_; + *(undefined2 *)(pcVar11 + 8) = uVar7; + pcVar11[10] = cVar5; + error(-0xd7,(String *)&local_10,"cv::Mat::Mat(const cv::Mat&, const Rect&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1e8); + String::deallocate((String *)&local_10); + uVar9 = *(uint *)this; + iVar12 = *(int *)(param_2 + 8); + iVar16 = *(int *)(param_2 + 0xc); + lVar14 = *(long *)(this + 0x10); + } + iVar2 = *(int *)(param_1 + 0xc); + iVar3 = *(int *)param_2; + uVar8 = 0xffffbfff; + if (iVar2 <= iVar12) { + uVar8 = 0xffffffff; + } + uVar8 = uVar8 & uVar9; + uVar9 = 0x4000; + if (iVar16 != 1) { + uVar9 = 0; + } + *(uint *)this = uVar9 | uVar8; + iVar4 = ((uVar8 & 0xff8) >> 3) + 1 << (ulong)((uint)(0xfa50L >> ((uVar8 & 7) << 1)) & 3); + *(long *)(this + 0x10) = lVar14 + (long)iVar4 * (long)iVar3; + if (((((iVar12 < 0) || (iVar3 < 0)) || (iVar2 < iVar3 + iVar12)) || + ((iVar16 < 0 || (*(int *)(param_2 + 4) < 0)))) || + (*(int *)(param_1 + 8) < *(int *)(param_2 + 4) + iVar16)) { + local_10 = 0; + local_8 = 0; + __dest = (void *)String::allocate((String *)&local_10,0x7c); + memcpy(__dest, + "0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows" + ,0x7c); + error(-0xd7,(String *)&local_10,"cv::Mat::Mat(const cv::Mat&, const Rect&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1ef); + String::deallocate((String *)&local_10); + } + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if ((*(int *)(param_2 + 8) < *(int *)(param_1 + 0xc)) || + (*(int *)(param_2 + 0xc) < *(int *)(param_1 + 8))) { + puVar15 = *(undefined8 **)(param_1 + 0x48); + *(uint *)this = *(uint *)this | 0x8000; + puVar10 = *(undefined8 **)(this + 0x48); + iVar16 = *(int *)(this + 8); + *puVar10 = *puVar15; + puVar10[1] = (long)iVar4; + uVar17 = s_m_dims_<__2_0046acf8._0_8_; + uVar7 = s_m_dims_<__2_0046acf8._8_2_; + } + else { + puVar10 = *(undefined8 **)(this + 0x48); + iVar16 = *(int *)(this + 8); + *puVar10 = **(undefined8 **)(param_1 + 0x48); + puVar10[1] = (long)iVar4; + uVar17 = s_m_dims_<__2_0046acf8._0_8_; + uVar7 = s_m_dims_<__2_0046acf8._8_2_; + } + if (0 < iVar16) { + s_m_dims_<__2_0046acf8[0] = (char)uVar17; + s_m_dims_<__2_0046acf8[1] = SUB81(uVar17,1); + s_m_dims_<__2_0046acf8[2] = SUB81(uVar17,2); + s_m_dims_<__2_0046acf8[3] = SUB81(uVar17,3); + s_m_dims_<__2_0046acf8[4] = SUB81(uVar17,4); + s_m_dims_<__2_0046acf8[5] = SUB81(uVar17,5); + s_m_dims_<__2_0046acf8[6] = SUB81(uVar17,6); + s_m_dims_<__2_0046acf8[7] = SUB81(uVar17,7); + s_m_dims_<__2_0046acf8[8] = (char)uVar7; + s_m_dims_<__2_0046acf8[9] = SUB21(uVar7,1); + if (0 < *(int *)(this + 0xc)) { + return; + } + } + s_m_dims_<__2_0046acf8._0_8_ = uVar17; + s_m_dims_<__2_0046acf8._8_2_ = uVar7; + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar16 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar16 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar16 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (0 < *(int *)(this + 4)) { + iVar16 = 0; + puVar13 = *(undefined4 **)(this + 0x40); + do { + *puVar13 = 0; + iVar16 = iVar16 + 1; + puVar13 = puVar13 + 1; + } while (iVar16 < *(int *)(this + 4)); + } + *(undefined4 *)(this + 0xc) = 0; + *(undefined4 *)(this + 8) = 0; + return; +} + + +================================================================== + +### FUNC 0031e9f8 (1348 bytes) name=Mat + +/* cv::Mat::Mat(int, int const*, int, void*, unsigned long const*) */ + +void __thiscall +cv::Mat::Mat(Mat *this,int param_1,int *param_2,int param_3,void *param_4,ulong *param_5) + +{ + ulong *puVar1; + int *piVar2; + long *plVar3; + Mat *pMVar4; + int iVar5; + ulong uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + undefined2 uVar10; + char cVar11; + undefined8 uVar12; + undefined8 uVar13; + int iVar14; + int iVar15; + long lVar16; + long lVar17; + char *pcVar18; + undefined4 *puVar19; + long lVar20; + int *piVar21; + int iVar22; + long *plVar23; + uint uVar24; + long lVar25; + long lVar26; + ulong uVar27; + undefined8 local_10; + undefined8 local_8; + + /* catch() { ... } // from try @ 0031eb10 with catch @ 0031ea00 + catch() { ... } // from try @ 0031eb70 with catch @ 0031ea00 */ + pMVar4 = this + 0x50; + *(undefined4 *)(this + 4) = 0; + *(undefined4 *)(this + 8) = 0; + *(undefined4 *)(this + 0xc) = 0; + *(undefined8 *)(this + 0x20) = 0; + iVar14 = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(Mat **)(this + 0x40) = this + 8; + *(Mat **)(this + 0x48) = pMVar4; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(uint *)this = param_3 & 0xfffU | 0x42ff0000; + *(void **)(this + 0x10) = param_4; + *(void **)(this + 0x18) = param_4; + if (0x20 < (uint)param_1) { + local_10 = 0; + local_8 = 0; + pcVar18 = (char *)String::allocate((String *)&local_10,0x21); + uVar13 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar12 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar8 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar7 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar18[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar18 = uVar7; + *(undefined8 *)(pcVar18 + 8) = uVar8; + *(undefined8 *)(pcVar18 + 0x10) = uVar12; + *(undefined8 *)(pcVar18 + 0x18) = uVar13; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10a); + String::deallocate((String *)&local_10); + iVar14 = *(int *)(this + 4); + } + /* try { // try from 0031ea90 to 0041ea93 has its CatchHandler @ 0031eb40 */ + if (param_1 == iVar14) { +LAB_0031eab8: + *(int *)(this + 4) = param_1; + if (param_2 != (int *)0x0) goto LAB_0031eac4; +LAB_0031ef04: + uVar24 = *(uint *)this; +LAB_0031ebb0: + iVar14 = param_1 + -1; + /* try { // try from 0031ebb4 to 0041ebd3 has its CatchHandler @ 0031eb80 */ + if ((param_1 < 1) || (piVar21 = *(int **)(this + 0x40), iVar22 = param_1, 1 < *piVar21)) { + iVar22 = 0; + } + else { +LAB_0031ebcc: + param_1 = iVar22; + iVar15 = 0; + do { + piVar21 = piVar21 + 1; + iVar15 = iVar15 + 1; + iVar22 = param_1; + if (iVar15 == param_1) break; + iVar22 = iVar15; + } while (*piVar21 < 2); + } + if (iVar14 <= iVar22) { +LAB_0031ec60: + *(uint *)this = uVar24 | 0x4000; + goto LAB_0031ec68; + } + lVar20 = *(long *)(this + 0x48); + piVar21 = *(int **)(this + 0x40); + } + else { + if (pMVar4 != *(Mat **)(this + 0x48)) { + fastFree(*(Mat **)(this + 0x48)); + *(Mat **)(this + 0x48) = pMVar4; + *(Mat **)(this + 0x40) = this + 8; + } + if (param_1 < 3) goto LAB_0031eab8; + uVar27 = -(ulong)((uint)param_1 >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)param_1 << 3; + lVar16 = fastMalloc(uVar27 + (long)(param_1 + 1) * 4); + *(long *)(this + 0x48) = lVar16; + lVar16 = lVar16 + uVar27 + 4; + *(long *)(this + 0x40) = lVar16; + *(int *)(lVar16 + -4) = param_1; + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + *(int *)(this + 4) = param_1; + if (param_2 == (int *)0x0) goto LAB_0031ef04; +LAB_0031eac4: + uVar24 = *(uint *)this; + iVar14 = param_1 + -1; + uVar27 = 0x88442211UL >> ((uVar24 & 7) << 2) & 0xf; + lVar16 = (long)(int)((uVar24 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar24 & 7) << 1)) & 3)); + /* try { // try from 0031eb08 to 0041eb0b has its CatchHandler @ 0031eb74 */ + if (-1 < iVar14) { + /* try { // try from 0031eb10 to 0041eb13 has its CatchHandler @ 0031ea00 */ + lVar25 = (long)iVar14 << 3; + /* try { // try from 0031eb2c to 0041eb2f has its CatchHandler @ 0031eb74 */ + lVar26 = (long)iVar14 << 2; + /* try { // try from 0031eb38 to 0041eb3b has its CatchHandler @ 0031eb40 */ + /* catch() { ... } // from try @ 0031ea90 with catch @ 0031eb40 + catch() { ... } // from try @ 0031eb38 with catch @ 0031eb40 */ + lVar20 = lVar16; + iVar22 = iVar14; + do { + iVar15 = *(int *)((long)param_2 + lVar26); + if (iVar15 < 0) { + local_10 = 0; + local_8 = 0; + puVar19 = (undefined4 *)String::allocate((String *)&local_10,6); + uVar10 = DAT_0046acbc; + *puVar19 = DAT_0046acb8; + *(undefined2 *)(puVar19 + 1) = uVar10; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x125); + String::deallocate((String *)&local_10); + } + *(int *)(*(long *)(this + 0x40) + lVar26) = iVar15; + if (param_5 == (ulong *)0x0) { + *(long *)(*(long *)(this + 0x48) + lVar25) = lVar20; + lVar20 = iVar15 * lVar20; + } + else { + uVar6 = 0; + if (uVar27 != 0) { + uVar6 = *(ulong *)((long)param_5 + lVar25) / uVar27; + } + if (*(ulong *)((long)param_5 + lVar25) != uVar6 * uVar27) { + local_10 = 0; + local_8 = 0; + pcVar18 = (char *)String::allocate((String *)&local_10,0x1f); + cVar11 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar10 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar8 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar18 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar18 + 0x18) = uVar9; + *(undefined2 *)(pcVar18 + 0x1c) = uVar10; + pcVar18[0x1e] = cVar11; + *(undefined8 *)pcVar18 = uVar7; + *(undefined8 *)(pcVar18 + 8) = uVar8; + error(-0xd,(String *)&local_10, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",300); + String::deallocate((String *)&local_10); + } + /* try { // try from 0031eb70 to 0041eb73 has its CatchHandler @ 0031ea00 */ + /* catch() { ... } // from try @ 0031eb08 with catch @ 0031eb74 + catch() { ... } // from try @ 0031eb2c with catch @ 0031eb74 */ + lVar17 = lVar16; + if (iVar22 < iVar14) { + lVar17 = *(long *)((long)param_5 + lVar25); + } + /* catch() { ... } // from try @ 0031ebb4 with catch @ 0031eb80 + catch() { ... } // from try @ 0031f338 with catch @ 0031eb80 + catch() { ... } // from try @ 0031fc58 with catch @ 0031eb80 + catch() { ... } // from try @ 0031feb8 with catch @ 0031eb80 */ + *(long *)(*(long *)(this + 0x48) + lVar25) = lVar17; + } + iVar22 = iVar22 + -1; + lVar25 = lVar25 + -8; + lVar26 = lVar26 + -4; + } while (iVar22 != -1); + uVar24 = *(uint *)this; + } + if (param_1 != 1) { + param_1 = *(int *)(this + 4); + goto LAB_0031ebb0; + } + piVar21 = *(int **)(this + 0x40); + *(undefined4 *)(this + 0xc) = 1; + param_1 = 2; + *(undefined4 *)(this + 4) = 2; + lVar20 = *(long *)(this + 0x48); + iVar15 = *piVar21; + *(long *)(lVar20 + 8) = lVar16; + iVar14 = 1; + iVar22 = 2; + if (iVar15 < 2) goto LAB_0031ebcc; + iVar22 = 0; + } + iVar15 = param_1 + -2; + lVar16 = (long)iVar15 * 8; + /* try { // try from 0031ec2c to 0041ec53 has its CatchHandler @ 0031ffb0 */ + if (*(ulong *)(lVar20 + lVar16) <= + (ulong)((long)piVar21[iVar14] * *(long *)(lVar20 + (long)iVar14 * 8))) { + plVar23 = (long *)(lVar20 + lVar16); + piVar21 = piVar21 + iVar15; + do { + if (iVar15 <= iVar22) goto LAB_0031ec60; + iVar5 = *piVar21; + lVar16 = *plVar23; + iVar15 = iVar15 + -1; + puVar1 = (ulong *)(plVar23 + -1); + plVar23 = plVar23 + -1; + piVar21 = piVar21 + -1; + } while (*puVar1 <= (ulong)(iVar5 * lVar16)); + } + *(uint *)this = uVar24 & 0xffffbfff; +LAB_0031ec68: + if (2 < param_1) { + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + } + if (*(long *)(this + 0x38) == 0) { + lVar16 = *(long *)(this + 0x10); + } + else { + /* try { // try from 0031ec84 to 0041ec87 has its CatchHandler @ 0031ffa8 */ + lVar16 = *(long *)(*(long *)(this + 0x38) + 0x18); + *(long *)(this + 0x10) = lVar16; + *(long *)(this + 0x18) = lVar16; + } + if (lVar16 == 0) { + *(undefined8 *)(this + 0x28) = 0; + lVar16 = 0; + } + else { + piVar21 = *(int **)(this + 0x40); + plVar23 = *(long **)(this + 0x48); + iVar22 = *piVar21; + /* try { // try from 0031eca4 to 0041eca7 has its CatchHandler @ 00320004 */ + /* try { // try from 0031ecac to 0041ecaf has its CatchHandler @ 0031ffa8 */ + lVar20 = *(long *)(this + 0x18) + (long)iVar22 * *plVar23; + *(long *)(this + 0x28) = lVar20; + if (iVar22 < 1) { + *(long *)(this + 0x20) = lVar20; + return; + } + lVar20 = 0; + lVar16 = lVar16 + (long)piVar21[iVar14] * plVar23[iVar14]; + *(long *)(this + 0x20) = lVar16; + if (iVar14 < 1) { + return; + } + do { + piVar2 = piVar21 + lVar20; + plVar3 = plVar23 + lVar20; + lVar20 = lVar20 + 1; + lVar16 = lVar16 + (long)(*piVar2 + -1) * *plVar3; + } while ((int)lVar20 < iVar14); + } + *(long *)(this + 0x20) = lVar16; + return; +} + + +================================================================== + +### FUNC 0031ef78 (1172 bytes) name=Mat + +/* cv::Mat::Mat(cv::Mat const&, cv::Range const*) */ + +void __thiscall cv::Mat::Mat(Mat *this,Mat *param_1,Range *param_2) + +{ + ulong *puVar1; + int iVar2; + int iVar3; + int iVar4; + undefined4 uVar5; + char cVar6; + bool bVar7; + undefined2 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + int iVar12; + char *pcVar13; + int *piVar14; + long *plVar15; + undefined8 *puVar16; + undefined4 *puVar17; + undefined8 *puVar18; + long lVar19; + long lVar20; + long lVar21; + Range *pRVar22; + long lVar23; + undefined8 uVar24; + undefined8 uVar25; + undefined8 uVar26; + undefined8 uVar27; + undefined8 uVar28; + Range *local_10; + Range *local_8; + + *(undefined8 *)this = DAT_0031f438; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(Mat **)(this + 0x40) = this + 8; + *(Mat **)(this + 0x48) = this + 0x50; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + iVar2 = *(int *)(param_1 + 4); + if (param_2 == (Range *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar13 = (char *)String::allocate((String *)&local_10,6); + uVar8 = s_ranges_0046ad88._4_2_; + /* try { // try from 0031f3c0 to 0041f3c3 has its CatchHandler @ 0031ffa8 */ + *(undefined4 *)pcVar13 = s_ranges_0046ad88._0_4_; + *(undefined2 *)(pcVar13 + 4) = uVar8; + error(-0xd7,(String *)&local_10,"cv::Mat::Mat(const cv::Mat&, const cv::Range*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x210); + String::deallocate((String *)&local_10); + } + if (iVar2 < 1) { + if (this == param_1) goto LAB_0031f24c; +LAB_0031f0e4: + if (*(long *)(param_1 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(param_1 + 0x38) + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = *piVar14 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar14 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar12 = *piVar14; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar12 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar12 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + /* try { // try from 0031f134 to 0041f137 has its CatchHandler @ 0031ff5c */ + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = *(undefined4 *)param_1; +LAB_0031f170: + iVar12 = *(int *)(param_1 + 4); + if (2 < iVar12) goto LAB_0031f17c; + puVar18 = *(undefined8 **)(param_1 + 0x48); + puVar16 = *(undefined8 **)(this + 0x48); + uVar5 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(this + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(this + 4) = iVar12; + *(undefined4 *)(this + 8) = uVar5; + *puVar16 = *puVar18; + puVar16[1] = puVar18[1]; + } + else { + iVar12 = 0; + puVar17 = *(undefined4 **)(this + 0x40); + do { + *puVar17 = 0; + iVar12 = iVar12 + 1; + puVar17 = puVar17 + 1; + } while (iVar12 < *(int *)(this + 4)); + *(undefined4 *)this = *(undefined4 *)param_1; + if (*(int *)(this + 4) < 3) goto LAB_0031f170; +LAB_0031f17c: + copySize(this,param_1); + } + uVar28 = *(undefined8 *)(param_1 + 0x10); + uVar27 = *(undefined8 *)(param_1 + 0x28); + uVar26 = *(undefined8 *)(param_1 + 0x20); + /* try { // try from 0031f1a8 to 0041f1ab has its CatchHandler @ 0031ff90 */ + uVar25 = *(undefined8 *)(param_1 + 0x38); + uVar24 = *(undefined8 *)(param_1 + 0x30); + /* try { // try from 0031f1b0 to 0041f1b3 has its CatchHandler @ 0031ff98 */ + *(undefined8 *)(this + 0x18) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = uVar28; + *(undefined8 *)(this + 0x28) = uVar27; + *(undefined8 *)(this + 0x20) = uVar26; + *(undefined8 *)(this + 0x38) = uVar25; + *(undefined8 *)(this + 0x30) = uVar24; + if (iVar2 < 1) goto LAB_0031f24c; + } + else { + lVar23 = 0; + pRVar22 = param_2; + do { + iVar12 = *(int *)pRVar22; + iVar3 = *(int *)(pRVar22 + 4); + if (((iVar12 != -0x80000000) || (iVar3 != 0x7fffffff)) && + ((iVar12 < 0 || + ((iVar3 <= iVar12 || (*(int *)(*(long *)(param_1 + 0x40) + lVar23) < iVar3)))))) { + local_10 = (Range *)0x0; + local_8 = (Range *)0x0; + pcVar13 = (char *)String::allocate((String *)&local_10,0x4c); + uVar5 = s_r____Range__all_______0_<__r_sta_0046ad90._72_4_; + uVar11 = s_r____Range__all_______0_<__r_sta_0046ad90._56_8_; + uVar10 = s_r____Range__all_______0_<__r_sta_0046ad90._48_8_; + uVar9 = s_r____Range__all_______0_<__r_sta_0046ad90._40_8_; + uVar28 = s_r____Range__all_______0_<__r_sta_0046ad90._32_8_; + uVar27 = s_r____Range__all_______0_<__r_sta_0046ad90._24_8_; + uVar26 = s_r____Range__all_______0_<__r_sta_0046ad90._16_8_; + uVar25 = s_r____Range__all_______0_<__r_sta_0046ad90._8_8_; + uVar24 = s_r____Range__all_______0_<__r_sta_0046ad90._0_8_; + *(undefined8 *)(pcVar13 + 0x40) = s_r____Range__all_______0_<__r_sta_0046ad90._64_8_; + *(undefined4 *)(pcVar13 + 0x48) = uVar5; + *(undefined8 *)pcVar13 = uVar24; + *(undefined8 *)(pcVar13 + 8) = uVar25; + *(undefined8 *)(pcVar13 + 0x10) = uVar26; + *(undefined8 *)(pcVar13 + 0x18) = uVar27; + /* try { // try from 0031f0b8 to 0041f0bb has its CatchHandler @ 0031febc */ + *(undefined8 *)(pcVar13 + 0x20) = uVar28; + *(undefined8 *)(pcVar13 + 0x28) = uVar9; + *(undefined8 *)(pcVar13 + 0x30) = uVar10; + *(undefined8 *)(pcVar13 + 0x38) = uVar11; + error(-0xd7,(String *)&local_10,"cv::Mat::Mat(const cv::Mat&, const cv::Range*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x214); + String::deallocate((String *)&local_10); + } + lVar23 = lVar23 + 4; + pRVar22 = pRVar22 + 8; + } while (lVar23 != ((ulong)(iVar2 - 1) + 1) * 4); + if (this != param_1) goto LAB_0031f0e4; + } + lVar23 = 0; + iVar12 = 0; + do { + iVar3 = *(int *)param_2; + iVar4 = *(int *)(param_2 + 4); + if (((iVar3 != -0x80000000) || (iVar4 != 0x7fffffff)) && + ((iVar4 != *(int *)(*(long *)(this + 0x40) + lVar23) || (iVar3 != 0)))) { + lVar21 = *(long *)(this + 0x48); + lVar19 = *(long *)(this + 0x10); + *(int *)(*(long *)(this + 0x40) + lVar23) = iVar4 - iVar3; + /* try { // try from 0031f224 to 0041f227 has its CatchHandler @ 0031ffa0 */ + *(long *)(this + 0x10) = lVar19 + (long)iVar3 * *(long *)(lVar21 + lVar23 * 2); + *(uint *)this = *(uint *)this | 0x8000; + } + iVar12 = iVar12 + 1; + param_2 = param_2 + 8; + lVar23 = lVar23 + 4; + } while (iVar12 < iVar2); +LAB_0031f24c: + iVar2 = *(int *)(this + 4); + if ((iVar2 < 1) || (piVar14 = *(int **)(this + 0x40), 1 < *piVar14)) { + iVar12 = 0; + } + else { + iVar12 = 0; + do { + piVar14 = piVar14 + 1; + iVar12 = iVar12 + 1; + if (iVar12 == iVar2) break; + } while (*piVar14 < 2); + } + iVar3 = iVar2 + -1; + if (iVar12 < iVar3) { + /* try { // try from 0031f298 to 0041f29b has its CatchHandler @ 0031ffa8 */ + lVar19 = *(long *)(this + 0x48); + lVar21 = (long)iVar3 * 8; + lVar23 = (long)iVar3 * 4; + lVar20 = lVar21 + -8; + if (*(ulong *)(lVar19 + lVar20) <= + (ulong)((long)*(int *)(*(long *)(this + 0x40) + lVar23) * *(long *)(lVar19 + lVar21))) { + plVar15 = (long *)(lVar19 + lVar20); + piVar14 = (int *)(*(long *)(this + 0x40) + lVar23 + -4); + do { + /* try { // try from 0031f30c to 0041f30f has its CatchHandler @ 0031ffb0 */ + if (plVar15 == + (long *)(lVar19 + ((long)(iVar2 + -2) - (ulong)(uint)((iVar2 + -2) - iVar12)) * 8)) + goto LAB_0031f310; + iVar3 = *piVar14; + lVar23 = *plVar15; + puVar1 = (ulong *)(plVar15 + -1); + plVar15 = plVar15 + -1; + piVar14 = piVar14 + -1; + } while (*puVar1 <= (ulong)(iVar3 * lVar23)); + } + *(uint *)this = *(uint *)this & 0xffffbfff; + } + else { +LAB_0031f310: + *(uint *)this = *(uint *)this | 0x4000; + } + /* try { // try from 0031f338 to 0041f38b has its CatchHandler @ 0031eb80 */ + return; +} + + +================================================================== + +### FUNC 0031f440 (2012 bytes) name=Mat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::Mat(cv::Mat const&, cv::Range const&, cv::Range const&) */ + +void __thiscall cv::Mat::Mat(Mat *this,Mat *param_1,Range *param_2,Range *param_3) + +{ + int *piVar1; + undefined4 uVar2; + char cVar3; + bool bVar4; + undefined2 uVar5; + int iVar6; + ulong uVar7; + undefined8 uVar8; + char *pcVar9; + void *pvVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + undefined4 *puVar14; + undefined8 *puVar15; + ulong uVar16; + Range *pRVar17; + int iVar18; + long lVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + undefined8 uVar23; + undefined4 local_4b0; + int local_4ac; + undefined4 local_4a8; + undefined4 local_4a4; + undefined8 local_4a0; + undefined8 uStack_498; + undefined8 local_490; + undefined8 uStack_488; + undefined8 local_480; + long lStack_478; + undefined4 *local_470; + undefined8 *local_468; + undefined8 auStack_460 [2]; + Range *local_450; + long local_448; + undefined8 local_440 [136]; + + *(undefined8 *)this = DAT_0031fc98; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + iVar18 = *(int *)(param_1 + 4); + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(Mat **)(this + 0x40) = this + 8; + *(Mat **)(this + 0x48) = this + 0x50; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + if (iVar18 < 2) { + local_450 = (Range *)0x0; + local_448 = 0; + pcVar9 = (char *)String::allocate((String *)&local_450,0xb); + cVar3 = s_m_dims_>__2_0046ade0[10]; + uVar5 = s_m_dims_>__2_0046ade0._8_2_; + *(undefined8 *)pcVar9 = s_m_dims_>__2_0046ade0._0_8_; + *(undefined2 *)(pcVar9 + 8) = uVar5; + pcVar9[10] = cVar3; + error(-0xd7,(String *)&local_450, + "cv::Mat::Mat(const cv::Mat&, const cv::Range&, const cv::Range&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1b9); + String::deallocate((String *)&local_450); + iVar18 = *(int *)(param_1 + 4); + } + if (iVar18 < 3) { + if (this != param_1) { + if (*(long *)(param_1 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x38) + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar18 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = *(undefined4 *)param_1; +LAB_0031f858: + iVar18 = *(int *)(param_1 + 4); + if (2 < iVar18) goto LAB_0031f928; + puVar15 = *(undefined8 **)(param_1 + 0x48); + puVar13 = *(undefined8 **)(this + 0x48); + uVar2 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(this + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(this + 4) = iVar18; + *(undefined4 *)(this + 8) = uVar2; + *puVar13 = *puVar15; + puVar13[1] = puVar15[1]; + } + else { + iVar18 = 0; + puVar14 = *(undefined4 **)(this + 0x40); + do { + *puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = puVar14 + 1; + } while (iVar18 < *(int *)(this + 4)); + *(undefined4 *)this = *(undefined4 *)param_1; + if (*(int *)(this + 4) < 3) goto LAB_0031f858; +LAB_0031f928: + copySize(this,param_1); + } + /* try { // try from 0031f890 to 0041f893 has its CatchHandler @ 0031ffb0 */ + uVar23 = *(undefined8 *)(param_1 + 0x10); + uVar22 = *(undefined8 *)(param_1 + 0x28); + uVar21 = *(undefined8 *)(param_1 + 0x20); + uVar20 = *(undefined8 *)(param_1 + 0x38); + uVar8 = *(undefined8 *)(param_1 + 0x30); + *(undefined8 *)(this + 0x18) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = uVar23; + *(undefined8 *)(this + 0x28) = uVar22; + *(undefined8 *)(this + 0x20) = uVar21; + *(undefined8 *)(this + 0x38) = uVar20; + *(undefined8 *)(this + 0x30) = uVar8; + } + iVar18 = *(int *)param_2; + if (iVar18 == -0x80000000) { + if (*(int *)(param_2 + 4) != 0x7fffffff) goto LAB_0031f954; + } + else { + if (iVar18 == 0) { + iVar6 = *(int *)(param_2 + 4); + /* try { // try from 0031f8e4 to 0041f8e7 has its CatchHandler @ 0031ff34 */ + if (*(int *)(this + 8) == iVar6) goto LAB_0031f8e8; + } + else { + if (iVar18 < 0) goto LAB_0031f954; + iVar6 = *(int *)(param_2 + 4); + } + if ((iVar6 < iVar18) || (*(int *)(param_1 + 8) < iVar6)) { +LAB_0031f954: + local_450 = (Range *)0x0; + local_448 = 0; + pvVar10 = (void *)String::allocate((String *)&local_450,0x53); + memcpy(pvVar10, + "0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows" + ,0x53); + error(-0xd7,(String *)&local_450, + "cv::Mat::Mat(const cv::Mat&, const cv::Range&, const cv::Range&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1c8); + String::deallocate((String *)&local_450); + iVar18 = *(int *)param_2; + iVar6 = *(int *)(param_2 + 4); + } + *(int *)(this + 8) = iVar6 - iVar18; + *(long *)(this + 0x10) = *(long *)(this + 0x10) + (long)iVar18 * *(long *)(this + 0x50); + *(uint *)this = *(uint *)this | 0x8000; + } +LAB_0031f8e8: + iVar18 = *(int *)param_3; + /* try { // try from 0031f8ec to 0041f8ef has its CatchHandler @ 0031ffb0 */ + if (iVar18 == -0x80000000) { + if (*(int *)(param_3 + 4) != 0x7fffffff) goto LAB_0031fa58; + } + else { + /* try { // try from 0031f900 to 0041f903 has its CatchHandler @ 0031ffa0 */ + if (iVar18 == 0) { + iVar6 = *(int *)(param_3 + 4); + if (*(int *)(this + 0xc) == iVar6) goto LAB_0031fb08; + } + else { + if (iVar18 < 0) goto LAB_0031fa58; + iVar6 = *(int *)(param_3 + 4); + /* try { // try from 0031f90c to 0041f90f has its CatchHandler @ 0031ffb0 */ + } + /* try { // try from 0031fbe4 to 0041fbe7 has its CatchHandler @ 0031ffb0 */ + if ((iVar6 < iVar18) || (*(int *)(param_1 + 0xc) < iVar6)) { +LAB_0031fa58: + local_450 = (Range *)0x0; + local_448 = 0; + pvVar10 = (void *)String::allocate((String *)&local_450,0x53); + memcpy(pvVar10, + "0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols" + ,0x53); + error(-0xd7,(String *)&local_450, + "cv::Mat::Mat(const cv::Mat&, const cv::Range&, const cv::Range&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1d0); + String::deallocate((String *)&local_450); + iVar18 = *(int *)param_3; + iVar6 = *(int *)(param_3 + 4); + } + *(int *)(this + 0xc) = iVar6 - iVar18; + if (*(int *)(this + 4) < 1) { + lVar19 = 0; + } + else { + lVar19 = (long)iVar18 * + *(long *)(*(long *)(this + 0x48) + (long)*(int *)(this + 4) * 8 + -8); + } + uVar12 = 0xffffbfff; + if (*(int *)(param_1 + 0xc) <= iVar6 - iVar18) { + uVar12 = 0xffffffff; + } + *(long *)(this + 0x10) = *(long *)(this + 0x10) + lVar19; + *(uint *)this = uVar12 & *(uint *)this | 0x8000; + } +LAB_0031fb08: + if (*(int *)(this + 8) == 1) { + *(uint *)this = *(uint *)this | 0x4000; + } + else if (*(int *)(this + 8) < 1) goto LAB_0031fb28; + /* try { // try from 0031fb20 to 0041fb23 has its CatchHandler @ 0031ffa8 */ + if (0 < *(int *)(this + 0xc)) { + return; + } +LAB_0031fb28: + /* try { // try from 0031fb2c to 0041fb2f has its CatchHandler @ 0031ff5c */ + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar18 = *piVar1; + /* try { // try from 0031fb38 to 0041fb3b has its CatchHandler @ 0031ff90 */ + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 0031fb44 to 0041fb47 has its CatchHandler @ 0031ffa0 */ + if (iVar18 == 1) { + /* try { // try from 0031fb50 to 0041fb5f has its CatchHandler @ 0031ffb8 */ + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (0 < *(int *)(this + 4)) { + iVar18 = 0; + puVar14 = *(undefined4 **)(this + 0x40); + do { + *puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = puVar14 + 1; + } while (iVar18 < *(int *)(this + 4)); + } + *(undefined4 *)(this + 0xc) = 0; + *(undefined4 *)(this + 8) = 0; + return; + } + lVar19 = (long)iVar18; + puVar13 = local_440; + do { + puVar15 = puVar13 + 2; + puVar13[1] = 0; + *puVar13 = 0; + puVar13 = puVar15; + } while (puVar15 != (undefined8 *)&stack0x00000000); + local_450 = (Range *)local_440; + local_448 = 0x88; + if (iVar18 < 0x89) { + local_440[0] = *(undefined8 *)param_2; + local_440[1] = *(undefined8 *)param_3; + if (iVar18 == 3) goto LAB_0031f584; +LAB_0031f5bc: + uVar11 = (iVar18 - 4U >> 1) + 1; + iVar6 = uVar11 * 2; + uVar12 = 0; + pRVar17 = local_450; + do { + *(undefined8 *)(pRVar17 + 0x18) = _DAT_0031fca8; + *(undefined8 *)(pRVar17 + 0x10) = _DAT_0031fca0; + uVar12 = uVar12 + 1; + pRVar17 = pRVar17 + 0x10; + } while (uVar12 < uVar11); + uVar7 = (ulong)(iVar6 + 2); + if (iVar18 + -2 == iVar6) goto LAB_0031f600; +LAB_0031f5e8: + uVar7 = -(uVar7 >> 0x1f) & 0xfffffff800000000 | uVar7 << 3; + *(undefined4 *)(local_450 + uVar7) = 0x80000000; + *(undefined4 *)(local_450 + uVar7 + 4) = 0x7fffffff; + } + else { + local_450 = operator_new__(lVar19 << 3); + uVar16 = 0; + uVar7 = (lVar19 - 2U >> 1) + 1; + pRVar17 = local_450; + do { + *(undefined8 *)(pRVar17 + 8) = 0; + *(undefined8 *)pRVar17 = 0; + uVar16 = uVar16 + 1; + pRVar17 = pRVar17 + 0x10; + } while (uVar16 < uVar7); + if (lVar19 != uVar7 * 2) { + *(undefined4 *)(local_450 + uVar7 * 0x10) = 0; + *(undefined4 *)(local_450 + uVar7 * 0x10 + 4) = 0; + } + iVar18 = *(int *)(param_1 + 4); + *(undefined8 *)local_450 = *(undefined8 *)param_2; + *(undefined8 *)(local_450 + 8) = *(undefined8 *)param_3; + if (2 < iVar18) { + if (iVar18 != 3) goto LAB_0031f5bc; +LAB_0031f584: + uVar7 = 2; + goto LAB_0031f5e8; + } + } +LAB_0031f600: + local_448 = lVar19; + Mat((Mat *)&local_4b0,param_1,local_450); + if (lStack_478 != 0) { + piVar1 = (int *)(lStack_478 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar1 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar18 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 0031f650 to 0041f663 has its CatchHandler @ 0031ffb8 */ + if (iVar18 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = local_4b0; +LAB_0031f6a0: + if (local_4ac < 3) { + puVar13 = *(undefined8 **)(this + 0x48); + *(int *)(this + 4) = local_4ac; + *(undefined4 *)(this + 8) = local_4a8; + uVar8 = *local_468; + *(undefined4 *)(this + 0xc) = local_4a4; + *puVar13 = uVar8; + puVar13[1] = local_468[1]; + goto LAB_0031f6d8; + } + } + else { + iVar18 = 0; + puVar14 = *(undefined4 **)(this + 0x40); + do { + *puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = puVar14 + 1; + } while (iVar18 < *(int *)(this + 4)); + *(undefined4 *)this = local_4b0; + if (*(int *)(this + 4) < 3) goto LAB_0031f6a0; + } + copySize(this,(Mat *)&local_4b0); +LAB_0031f6d8: + *(undefined8 *)(this + 0x18) = uStack_498; + *(undefined8 *)(this + 0x10) = local_4a0; + *(undefined8 *)(this + 0x28) = uStack_488; + *(undefined8 *)(this + 0x20) = local_490; + *(long *)(this + 0x38) = lStack_478; + *(undefined8 *)(this + 0x30) = local_480; + if (lStack_478 != 0) { + piVar1 = (int *)(lStack_478 + 0x14); + do { + iVar18 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + deallocate((Mat *)&local_4b0); + } + } + lStack_478 = 0; + local_4a0 = 0; + uStack_488 = 0; + local_490 = 0; + uStack_498 = 0; + if (0 < local_4ac) { + iVar18 = 0; + do { + *local_470 = 0; + iVar18 = iVar18 + 1; + /* try { // try from 0031f760 to 0041f763 has its CatchHandler @ 0031ffa8 */ + local_470 = local_470 + 1; + } while (iVar18 < local_4ac); + } + if (local_468 != auStack_460) { + fastFree(local_468); + } + if ((local_450 != (Range *)local_440) && (local_450 != (Range *)0x0)) { + operator_delete__(local_450); + } + return; +} + + +================================================================== + +### FUNC 0031fcb0 (596 bytes) name=diag + +/* cv::Mat::diag(int) const */ + +void cv::Mat::diag(int param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined1 uVar7; + uint uVar8; + Mat *pMVar9; + undefined8 *puVar10; + long lVar11; + int *piVar12; + int in_w1; + long *plVar13; + int iVar14; + long lVar15; + undefined8 uVar16; + long *plVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + Mat *in_x8; + undefined8 uVar21; + undefined8 local_10; + undefined8 local_8; + + pMVar9 = (Mat *)(ulong)(uint)param_1; + iVar14 = *(int *)(pMVar9 + 4); + if (2 < iVar14) { + local_10 = 0; + local_8 = 0; + /* try { // try from 0031fcec to 0041fcef has its CatchHandler @ 0031ffb0 */ + puVar10 = (undefined8 *)String::allocate((String *)&local_10,9); + uVar7 = LAB_0046aea8; + *puVar10 = DAT_0046aea0; + *(undefined1 *)(puVar10 + 1) = uVar7; + error(-0xd7,(String *)&local_10,"cv::Mat cv::Mat::diag(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x29f); + /* try { // try from 0031fd30 to 0041fd33 has its CatchHandler @ 0031fe8c */ + String::deallocate((String *)&local_10); + iVar14 = *(int *)(pMVar9 + 4); + } + /* try { // try from 0031fd38 to 0041fd3b has its CatchHandler @ 0031ffb0 */ + uVar1 = *(undefined4 *)pMVar9; + uVar2 = *(undefined4 *)(pMVar9 + 8); + uVar3 = *(undefined4 *)(pMVar9 + 0xc); + uVar21 = *(undefined8 *)(pMVar9 + 0x10); + uVar20 = *(undefined8 *)(pMVar9 + 0x18); + uVar19 = *(undefined8 *)(pMVar9 + 0x20); + uVar18 = *(undefined8 *)(pMVar9 + 0x28); + uVar16 = *(undefined8 *)(pMVar9 + 0x30); + lVar11 = *(long *)(pMVar9 + 0x38); + *(long *)(in_x8 + 0x38) = lVar11; + *(undefined4 *)in_x8 = uVar1; + *(int *)(in_x8 + 4) = iVar14; + *(undefined4 *)(in_x8 + 8) = uVar2; + *(undefined4 *)(in_x8 + 0xc) = uVar3; + *(undefined8 *)(in_x8 + 0x10) = uVar21; + *(undefined8 *)(in_x8 + 0x18) = uVar20; + *(undefined8 *)(in_x8 + 0x20) = uVar19; + *(undefined8 *)(in_x8 + 0x28) = uVar18; + *(undefined8 *)(in_x8 + 0x30) = uVar16; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (lVar11 != 0) { + piVar12 = (int *)(lVar11 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar6) { + *piVar12 = *piVar12 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + iVar14 = *(int *)(pMVar9 + 4); + /* try { // try from 0031fdbc to 0041fe6f has its CatchHandler @ 0031ffa8 */ + if (iVar14 < 3) { + plVar13 = *(long **)(pMVar9 + 0x48); + plVar17 = *(long **)(in_x8 + 0x48); + lVar11 = *plVar13; + *plVar17 = lVar11; + plVar17[1] = plVar13[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + copySize(in_x8,pMVar9); + iVar14 = *(int *)(pMVar9 + 4); + plVar17 = *(long **)(in_x8 + 0x48); + /* try { // try from 0031feb8 to 0041febb has its CatchHandler @ 0031eb80 */ + lVar11 = *plVar17; + } + /* catch() { ... } // from try @ 0031f0b8 with catch @ 0031febc */ + if (iVar14 < 1) { + lVar15 = 0; + } + else { + lVar15 = *(long *)(*(long *)(pMVar9 + 0x48) + (long)iVar14 * 8 + -8); + } + if (in_w1 < 0) { + iVar4 = *(int *)(pMVar9 + 8); + iVar14 = *(int *)(pMVar9 + 0xc); + *(long *)(in_x8 + 0x10) = *(long *)(in_x8 + 0x10) - (long)in_w1 * **(long **)(pMVar9 + 0x48); + if (in_w1 + iVar4 < iVar14) { + iVar14 = in_w1 + iVar4; + } + } + else { + iVar14 = *(int *)(pMVar9 + 8); + if (*(int *)(pMVar9 + 0xc) - in_w1 < *(int *)(pMVar9 + 8)) { + iVar14 = *(int *)(pMVar9 + 0xc) - in_w1; + } + *(long *)(in_x8 + 0x10) = *(long *)(in_x8 + 0x10) + lVar15 * in_w1; + } + piVar12 = *(int **)(in_x8 + 0x40); + *(int *)(in_x8 + 8) = iVar14; + if (iVar14 < 2) { + lVar15 = 0; + } + *piVar12 = iVar14; + *(undefined4 *)(in_x8 + 0xc) = 1; + piVar12[1] = 1; + *plVar17 = lVar15 + lVar11; + if (*(int *)(in_x8 + 8) < 2) { + uVar8 = *(uint *)in_x8 | 0x4000; + } + else { + uVar8 = *(uint *)in_x8 & 0xffffbfff; + } + piVar12 = *(int **)(pMVar9 + 0x40); + *(uint *)in_x8 = uVar8; + if ((piVar12[1] != 1) || (*piVar12 != 1)) { + *(uint *)in_x8 = uVar8 | 0x8000; + } + /* catch() { ... } // from try @ 0031fd30 with catch @ 0031fe8c */ + return; +} + + +================================================================== + +### FUNC 0031ff18 (688 bytes) name=pop_back + +/* cv::Mat::pop_back(unsigned long) */ + +void __thiscall cv::Mat::pop_back(Mat *this,ulong param_1) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + int *piVar7; + char *pcVar8; + long lVar9; + undefined4 *puVar10; + undefined8 *puVar11; + int iVar12; + long *plVar13; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + int local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + /* catch() { ... } // from try @ 0031fc28 with catch @ 0031ff24 */ + piVar7 = *(int **)(this + 0x40); + local_64 = *piVar7; + /* catch() { ... } // from try @ 0031f8e4 with catch @ 0031ff34 */ + if ((ulong)(long)local_64 < param_1) { + local_60 = 0; + local_58 = 0; + pcVar8 = (char *)String::allocate((String *)&local_60,0x1b); + cVar2 = s_nelems_<__(size_t)size_p[0]_0046aeb0[0x1a]; + uVar6 = s_nelems_<__(size_t)size_p[0]_0046aeb0._24_2_; + uVar5 = s_nelems_<__(size_t)size_p[0]_0046aeb0._8_8_; + uVar4 = s_nelems_<__(size_t)size_p[0]_0046aeb0._0_8_; + /* catch() { ... } // from try @ 0031f1a8 with catch @ 0031ff90 + catch() { ... } // from try @ 0031fb38 with catch @ 0031ff90 */ + /* catch() { ... } // from try @ 0031f1b0 with catch @ 0031ff98 */ + /* catch() { ... } // from try @ 0031f224 with catch @ 0031ffa0 + catch() { ... } // from try @ 0031f900 with catch @ 0031ffa0 + catch() { ... } // from try @ 0031fb44 with catch @ 0031ffa0 */ + /* catch() { ... } // from try @ 0031ec84 with catch @ 0031ffa8 + catch() { ... } // from try @ 0031ecac with catch @ 0031ffa8 + catch() { ... } // from try @ 0031f298 with catch @ 0031ffa8 + catch() { ... } // from try @ 0031f3c0 with catch @ 0031ffa8 + catch() { ... } // from try @ 0031f760 with catch @ 0031ffa8 + catch() { ... } // from try @ 0031fb20 with catch @ 0031ffa8 + catch() { ... } // from try @ 0031fca8 with catch @ 0031ffa8 + catch() { ... } // from try @ 0031fdbc with catch @ 0031ffa8 */ + /* catch() { ... } // from try @ 0031ec2c with catch @ 0031ffb0 + catch() { ... } // from try @ 0031f30c with catch @ 0031ffb0 + catch() { ... } // from try @ 0031f890 with catch @ 0031ffb0 + catch() { ... } // from try @ 0031f8ec with catch @ 0031ffb0 + catch() { ... } // from try @ 0031f90c with catch @ 0031ffb0 + catch() { ... } // from try @ 0031fbe4 with catch @ 0031ffb0 + catch() { ... } // from try @ 0031fc30 with catch @ 0031ffb0 + catch() { ... } // from try @ 0031fcec with catch @ 0031ffb0 + catch() { ... } // from try @ 0031fd38 with catch @ 0031ffb0 */ + /* catch() { ... } // from try @ 0031f650 with catch @ 0031ffb8 + catch() { ... } // from try @ 0031fb50 with catch @ 0031ffb8 */ + *(undefined8 *)(pcVar8 + 0x10) = s_nelems_<__(size_t)size_p[0]_0046aeb0._16_8_; + *(undefined2 *)(pcVar8 + 0x18) = uVar6; + pcVar8[0x1a] = cVar2; + *(undefined8 *)pcVar8 = uVar4; + *(undefined8 *)(pcVar8 + 8) = uVar5; + error(-0xd7,(String *)&local_60,"void cv::Mat::pop_back(size_t)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x2c1); + String::deallocate((String *)&local_60); + piVar7 = *(int **)(this + 0x40); + uVar1 = *(uint *)this; + local_64 = *piVar7; + } + else { + uVar1 = *(uint *)this; + } + if ((uVar1 >> 0xf & 1) == 0) { + plVar13 = *(long **)(this + 0x48); + lVar9 = *(long *)(this + 0x20); + *piVar7 = local_64 - (int)param_1; + /* catch() { ... } // from try @ 0031f134 with catch @ 0031ff5c + catch() { ... } // from try @ 0031fb2c with catch @ 0031ff5c */ + *(ulong *)(this + 0x20) = lVar9 - param_1 * *plVar13; + return; + } + local_64 = local_64 - (int)param_1; + local_70 = 0x80000000; + /* catch() { ... } // from try @ 0031eca4 with catch @ 00320004 */ + local_68 = 0; + local_6c = 0x7fffffff; + Mat((Mat *)&local_60,this,(Range *)&local_68,(Range *)&local_70); + if (lStack_28 != 0) { + piVar7 = (int *)(lStack_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar3) { + *piVar7 = *piVar7 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar7 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar12 = *piVar7; + /* catch() { ... } // from try @ 0032008c with catch @ 00320050 + catch() { ... } // from try @ 003204e4 with catch @ 00320050 + catch() { ... } // from try @ 00320748 with catch @ 00320050 + catch() { ... } // from try @ 00320aa4 with catch @ 00320050 + catch() { ... } // from try @ 00320b20 with catch @ 00320050 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar3) { + *piVar7 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar12 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_60; +LAB_003200ac: + if (local_60._4_4_ < 3) { + *(int *)(this + 4) = local_60._4_4_; + puVar11 = *(undefined8 **)(this + 0x48); + *(undefined4 *)(this + 8) = (undefined4)local_58; + *(undefined4 *)(this + 0xc) = local_58._4_4_; + *puVar11 = *local_18; + puVar11[1] = local_18[1]; + goto LAB_003200c4; + } + } + else { + iVar12 = 0; + puVar10 = *(undefined4 **)(this + 0x40); + do { + *puVar10 = 0; + /* try { // try from 0032008c to 004200ab has its CatchHandler @ 00320050 */ + iVar12 = iVar12 + 1; + puVar10 = puVar10 + 1; + } while (iVar12 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_60; + if (*(int *)(this + 4) < 3) goto LAB_003200ac; + } + copySize(this,(Mat *)&local_60); +LAB_003200c4: + *(undefined8 *)(this + 0x18) = uStack_48; + *(undefined8 *)(this + 0x10) = local_50; + *(undefined8 *)(this + 0x28) = uStack_38; + *(undefined8 *)(this + 0x20) = local_40; + *(long *)(this + 0x38) = lStack_28; + *(undefined8 *)(this + 0x30) = local_30; + if (lStack_28 != 0) { + piVar7 = (int *)(lStack_28 + 0x14); + do { + iVar12 = *piVar7; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar3) { + *piVar7 = iVar12 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 0032010c to 00420133 has its CatchHandler @ 00320b58 */ + } while (cVar2 != '\0'); + if (iVar12 == 1) { + deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_60._4_4_) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_60._4_4_); + } + if (local_18 == auStack_10) { + return; + } + fastFree(local_18); + return; +} + + +================================================================== + +### FUNC 00320210 (1092 bytes) name=reserve + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::reserve(unsigned long) */ + +void __thiscall cv::Mat::reserve(Mat *this,ulong param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + long lVar6; + char *pcVar7; + int iVar8; + int *piVar9; + long *plVar10; + ulong uVar11; + undefined8 *puVar12; + long lVar13; + undefined4 *puVar14; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + int local_d4; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined8 *local_80; + long *local_78; + long local_70 [2]; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar8 = (int)param_1; + /* try { // try from 0032022c to 00420283 has its CatchHandler @ 00320b60 */ + if (iVar8 < 0) { + local_60 = 0; + local_58 = 0; + pcVar7 = (char *)String::allocate((String *)&local_60,0x10); + uVar5 = s__int_nelems_>__0_0046aed0._8_8_; + *(undefined8 *)pcVar7 = s__int_nelems_>__0_0046aed0._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar5; + error(-0xd7,(String *)&local_60,"void cv::Mat::reserve(size_t)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x2e6); + String::deallocate((String *)&local_60); + } + if (((*(uint *)this >> 0xf & 1) == 0) && + (*(long *)(this + 0x10) + param_1 * **(long **)(this + 0x48) <= *(ulong *)(this + 0x28))) { + return; + } + piVar9 = *(int **)(this + 0x40); + iVar2 = *piVar9; + if (param_1 <= (ulong)(long)iVar2) { + return; + } + if (iVar8 < 1) { + iVar8 = 1; + } + *piVar9 = iVar8; + iVar8 = *(int *)(this + 4); + if (iVar8 < 3) { + if (0 < iVar8) { + lVar13 = (long)*(int *)(this + 8) * (long)*(int *)(this + 0xc); + goto LAB_003202e4; + } + lVar6 = 0x3f; + uVar11 = 0; +LAB_003202b4: + iVar8 = 0; + if (uVar11 != 0) { + iVar8 = (int)((lVar6 * param_1) / uVar11); + } + *piVar9 = iVar8; + iVar8 = *(int *)(this + 4); + } + else { + lVar6 = 0; + lVar13 = 1; + do { + piVar1 = piVar9 + lVar6; + /* try { // try from 003202d4 to 004202d7 has its CatchHandler @ 00320b34 */ + lVar6 = lVar6 + 1; + /* try { // try from 003202dc to 004202e7 has its CatchHandler @ 00320b60 */ + lVar13 = lVar13 * *piVar1; + } while ((int)lVar6 < iVar8); +LAB_003202e4: + uVar11 = lVar13 * *(long *)(*(long *)(this + 0x48) + (long)iVar8 * 8 + -8); + lVar6 = uVar11 + 0x3f; + if (uVar11 < 0x40) goto LAB_003202b4; + } + local_78 = local_70; + local_80 = &uStack_b8; + local_b0 = 0; + local_70[1] = 0; + local_70[0] = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + uStack_b8 = _UNK_003206c8; + local_c0 = _DAT_003206c0; + local_88 = 0; + create((Mat *)&local_c0,iVar8,piVar9,*(uint *)this & 0xfff); + **(int **)(this + 0x40) = iVar2; + if (0 < iVar2) { + local_e0 = 0x80000000; + local_d8 = 0; + local_dc = 0x7fffffff; + local_d4 = iVar2; + Mat((Mat *)&local_60,(Mat *)&local_c0,(Range *)&local_d8,(Range *)&local_e0); + local_c8 = 0; + local_c4 = 0; + local_d8 = 0x2010000; + local_d0 = (Mat *)&local_60; + copyTo(this,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar9; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar4) { + *piVar9 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + } + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar4) { + *piVar9 = *piVar9 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 00320444 to 00420447 has its CatchHandler @ 00320b68 */ + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar9 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar8 = *piVar9; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar4) { + *piVar9 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_c0; +LAB_003204b8: + /* try { // try from 003204b8 to 004204bb has its CatchHandler @ 00320b58 */ + if (local_c0._4_4_ < 3) { + *(int *)(this + 4) = local_c0._4_4_; + plVar10 = *(long **)(this + 0x48); + *(undefined4 *)(this + 8) = (undefined4)uStack_b8; + *(undefined4 *)(this + 0xc) = uStack_b8._4_4_; + lVar6 = *local_78; + /* try { // try from 003204e4 to 00420537 has its CatchHandler @ 00320050 */ + *plVar10 = lVar6; + plVar10[1] = local_78[1]; + goto LAB_003204f0; + } + } + else { + iVar8 = 0; + puVar14 = *(undefined4 **)(this + 0x40); + do { + *puVar14 = 0; + iVar8 = iVar8 + 1; + puVar14 = puVar14 + 1; + } while (iVar8 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_c0; + if (*(int *)(this + 4) < 3) goto LAB_003204b8; + } + /* try { // try from 003205bc to 004205bf has its CatchHandler @ 00320b44 */ + /* try { // try from 003205c4 to 004205c7 has its CatchHandler @ 00320b58 */ + copySize(this,(Mat *)&local_c0); + lVar6 = **(long **)(this + 0x48); +LAB_003204f0: + *(undefined8 *)(this + 0x18) = local_a8; + *(undefined8 *)(this + 0x28) = local_98; + *(long *)(this + 0x10) = local_b0; + *(undefined8 *)(this + 0x30) = local_90; + *(long *)(this + 0x38) = local_88; + **(int **)(this + 0x40) = iVar2; + *(long *)(this + 0x20) = local_b0 + lVar6 * iVar2; + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar9; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar4) { + *piVar9 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + /* try { // try from 00320570 to 00420573 has its CatchHandler @ 00320b58 */ + if (0 < local_c0._4_4_) { + iVar8 = 0; + puVar12 = local_80; + do { + *(undefined4 *)puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar8 < local_c0._4_4_); + } + if (local_78 == local_70) { + return; + } + fastFree(local_78); + return; +} + + +================================================================== + +### FUNC 003206d0 (252 bytes) name=push_back_ + +/* cv::Mat::push_back_(void const*) */ + +void __thiscall cv::Mat::push_back_(Mat *this,void *param_1) + +{ + int iVar1; + int iVar2; + long lVar3; + ulong uVar4; + long *plVar5; + size_t __n; + + iVar2 = **(int **)(this + 0x40); + if ((*(uint *)this >> 0xf & 1) == 0) { + plVar5 = *(long **)(this + 0x48); + lVar3 = *plVar5; + if ((ulong)(*(long *)(this + 0x20) + lVar3) <= *(ulong *)(this + 0x28)) { + iVar1 = *(int *)(this + 4); + goto joined_r0x003207c0; + } + } + iVar1 = (iVar2 * 3 + 1) / 2; + if (iVar1 < iVar2 + 1) { + iVar1 = iVar2 + 1; + } + reserve(this,(long)iVar1); + iVar1 = *(int *)(this + 4); + plVar5 = *(long **)(this + 0x48); + /* try { // try from 00320748 to 0042074b has its CatchHandler @ 00320050 */ + lVar3 = *plVar5; +joined_r0x003207c0: + if (iVar1 < 1) { + __n = 0; + } + else { + __n = plVar5[(long)iVar1 + -1]; + } + memcpy((void *)(*(long *)(this + 0x10) + lVar3 * iVar2),param_1,__n); + lVar3 = *(long *)(this + 0x20); + uVar4 = **(ulong **)(this + 0x48); + **(int **)(this + 0x40) = iVar2 + 1; + *(ulong *)(this + 0x20) = lVar3 + uVar4; + if (__n < uVar4) { + *(uint *)this = *(uint *)this & 0xffffbfff; + } + return; +} + + +================================================================== + +### FUNC 003207cc (240 bytes) name=resize + +/* cv::Mat::resize(unsigned long) */ + +void __thiscall cv::Mat::resize(Mat *this,ulong param_1) + +{ + int iVar1; + undefined8 uVar2; + long lVar3; + char *pcVar4; + int iVar5; + long lVar6; + undefined8 local_10; + undefined8 local_8; + + iVar1 = **(int **)(this + 0x40); + iVar5 = (int)param_1; + if (iVar5 != iVar1) { + if (iVar5 < 0) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x10); + uVar2 = s__int_nelems_>__0_0046aed0._8_8_; + /* try { // try from 0032089c to 0042089f has its CatchHandler @ 00320b24 */ + *(undefined8 *)pcVar4 = s__int_nelems_>__0_0046aed0._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar2; + /* try { // try from 003208a4 to 004208a7 has its CatchHandler @ 00320b58 */ + error(-0xd7,(String *)&local_10,"void cv::Mat::resize(size_t)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x308); + String::deallocate((String *)&local_10); + } + /* try { // try from 00320858 to 0042085b has its CatchHandler @ 00320b58 */ + if (((*(uint *)this >> 0xf & 1) != 0) || + (lVar3 = **(long **)(this + 0x48), + *(ulong *)(this + 0x28) < *(long *)(this + 0x10) + param_1 * lVar3)) { + reserve(this,param_1); + lVar3 = **(long **)(this + 0x48); + } + lVar6 = *(long *)(this + 0x20); + **(int **)(this + 0x40) = iVar5; + *(long *)(this + 0x20) = lVar6 + lVar3 * (iVar5 - iVar1); + } + return; +} + + +================================================================== + +### FUNC 003208d0 (280 bytes) name=resize + +/* cv::Mat::resize(unsigned long, cv::Scalar_ const&) */ + +void __thiscall cv::Mat::resize(Mat *this,ulong param_1,Scalar_ *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_70; + undefined4 local_6c; + int local_68; + int local_64; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar4 = **(int **)(this + 0x40); + resize(this,param_1); + local_64 = **(int **)(this + 0x40); + if (iVar4 < local_64) { + /* try { // try from 00320920 to 00420923 has its CatchHandler @ 00320b58 */ + local_70 = 0x80000000; + local_6c = 0x7fffffff; + local_68 = iVar4; + Mat(aMStack_60,this,(Range *)&local_68,(Range *)&local_70); + operator=(aMStack_60,param_2); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + /* try { // try from 00320990 to 00420993 has its CatchHandler @ 00320b60 */ + local_48 = 0; + if (0 < local_5c) { + /* try { // try from 0032099c to 0042099f has its CatchHandler @ 00320b68 */ + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + return; + } + } + /* try { // try from 0032090c to 0042090f has its CatchHandler @ 00320abc */ + /* try { // try from 00320914 to 00420917 has its CatchHandler @ 00320b60 */ + return; +} + + +================================================================== + +### FUNC 00320a10 (1648 bytes) name=push_back + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::push_back(cv::Mat const&) */ + +void __thiscall cv::Mat::push_back(Mat *this,Mat *param_1) + +{ + long lVar1; + int iVar2; + int iVar3; + char cVar4; + bool bVar5; + int iVar6; + int *piVar7; + void *__dest; + uint uVar8; + ulong uVar9; + undefined8 *puVar10; + int *piVar11; + long lVar12; + long lVar13; + undefined4 *puVar14; + int *piVar15; + undefined4 local_80; + undefined4 local_7c; + int local_78; + int local_74; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 uStack_58; + long local_50; + long lStack_48; + long local_40; + long lStack_38; + long local_30; + long lStack_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + piVar11 = *(int **)(param_1 + 0x40); + piVar15 = *(int **)(this + 0x40); + iVar6 = *piVar11; + iVar2 = *piVar15; + if (iVar6 == 0) { + return; + } + if (this == param_1) { + uStack_58 = *(undefined8 *)(this + 8); + local_60 = *(ulong *)this; + local_18 = &local_10; + local_50 = *(long *)(this + 0x10); + lStack_48 = *(long *)(this + 0x18); + local_20 = &uStack_58; + local_40 = *(long *)(this + 0x20); + lStack_38 = *(long *)(this + 0x28); + local_30 = *(long *)(this + 0x30); + lStack_28 = *(long *)(this + 0x38); + uStack_8 = 0; + local_10 = 0; + iVar6 = *(int *)(this + 4); + if (lStack_28 != 0) { + piVar11 = (int *)(lStack_28 + 0x14); + do { + /* try { // try from 00320dd4 to 00420dd7 has its CatchHandler @ 00320fd8 */ + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar5) { + *piVar11 = *piVar11 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + iVar6 = *(int *)(this + 4); + } + if (iVar6 < 3) { + local_10 = **(undefined8 **)(this + 0x48); + uStack_8 = (*(undefined8 **)(this + 0x48))[1]; + } + else { + local_60 = local_60 & 0xffffffff; + copySize((Mat *)&local_60,this); + /* catch() { ... } // from try @ 00320ca0 with catch @ 0032105c + catch() { ... } // from try @ 00320cd8 with catch @ 0032105c */ + } + push_back(this,(Mat *)&local_60); + if (lStack_28 != 0) { + piVar11 = (int *)(lStack_28 + 0x14); + do { + iVar6 = *piVar11; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar5) { + *piVar11 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + deallocate((Mat *)&local_60); + } + } + /* try { // try from 00320e48 to 00420e4b has its CatchHandler @ 00321020 */ + if (0 < local_60._4_4_) { + iVar6 = 0; + puVar10 = local_20; + do { + *(undefined4 *)puVar10 = 0; + iVar6 = iVar6 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar6 < local_60._4_4_); + } + goto LAB_00320c08; + } + local_50 = *(long *)(this + 0x10); + if (local_50 == 0) { + local_78 = 0x2010000; + local_18 = &local_10; + local_20 = &uStack_58; + local_68 = 0; + local_64 = 0; + uStack_58 = _LAB_00321148; + local_60 = _DAT_00321140; + /* try { // try from 00320ebc to 00420ee3 has its CatchHandler @ 00320b80 */ + uStack_8 = 0; + local_10 = 0; + local_70 = (Mat *)&local_60; + lStack_48 = local_50; + local_40 = local_50; + lStack_38 = local_50; + local_30 = local_50; + lStack_28 = local_50; + copyTo(param_1,(_OutputArray *)&local_78); + if (lStack_28 != 0) { + piVar11 = (int *)(lStack_28 + 0x14); + do { + /* try { // try from 00320eec to 00420eef has its CatchHandler @ 00321020 */ + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar5) { + *piVar11 = *piVar11 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + /* try { // try from 00320ef8 to 00420f0f has its CatchHandler @ 00320fd8 */ + if (*(long *)(this + 0x38) != 0) { + piVar11 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar6 = *piVar11; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar5) { + *piVar11 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + deallocate(this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_60; +LAB_00320f68: + if (2 < local_60._4_4_) goto LAB_0032103c; + *(int *)(this + 4) = local_60._4_4_; + puVar10 = *(undefined8 **)(this + 0x48); + *(undefined4 *)(this + 8) = (undefined4)uStack_58; + *(undefined4 *)(this + 0xc) = uStack_58._4_4_; + *puVar10 = *local_18; + puVar10[1] = local_18[1]; + } + else { + iVar6 = 0; + puVar14 = *(undefined4 **)(this + 0x40); + do { + *puVar14 = 0; + iVar6 = iVar6 + 1; + puVar14 = puVar14 + 1; + } while (iVar6 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_60; + if (*(int *)(this + 4) < 3) goto LAB_00320f68; +LAB_0032103c: + copySize(this,(Mat *)&local_60); + } + *(long *)(this + 0x18) = lStack_48; + *(long *)(this + 0x10) = local_50; + *(long *)(this + 0x28) = lStack_38; + *(long *)(this + 0x20) = local_40; + *(long *)(this + 0x38) = lStack_28; + *(long *)(this + 0x30) = local_30; + if (lStack_28 != 0) { + /* catch() { ... } // from try @ 00320dd4 with catch @ 00320fd8 + catch() { ... } // from try @ 00320ef8 with catch @ 00320fd8 */ + piVar11 = (int *)(lStack_28 + 0x14); + do { + iVar6 = *piVar11; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar5) { + *piVar11 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + /* try { // try from 0032101c to 0042101f has its CatchHandler @ 00320b80 */ + /* catch() { ... } // from try @ 00320bdc with catch @ 00321020 + catch() { ... } // from try @ 00320e48 with catch @ 00321020 + catch() { ... } // from try @ 00320eec with catch @ 00321020 */ + iVar6 = 0; + puVar10 = local_20; + do { + *(undefined4 *)puVar10 = 0; + /* catch() { ... } // from try @ 00320cd0 with catch @ 00321028 */ + iVar6 = iVar6 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar6 < local_60._4_4_); + } + goto LAB_00320c08; + } + *piVar15 = iVar6; + iVar3 = piVar15[-1]; + /* try { // try from 00320a5c to 00420a6b has its CatchHandler @ 00320b60 */ + if (iVar3 == piVar11[-1]) { + if (iVar3 == 2) { + if ((iVar6 != *piVar11) || (piVar15[1] != piVar11[1])) goto LAB_00320a60; + *piVar15 = iVar2; + } + else { + if (0 < iVar3) { + if (iVar6 == *piVar11) { + piVar7 = piVar15; + do { + piVar11 = piVar11 + 1; + if (piVar7 == piVar15 + (iVar3 - 1)) goto LAB_00320c78; + piVar7 = piVar7 + 1; + } while (*piVar7 == *piVar11); + } + goto LAB_00320a60; + } +LAB_00320c78: + *piVar15 = iVar2; + } + } + else { +LAB_00320a60: + *piVar15 = iVar2; + local_60 = 0; + uStack_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xd1,(String *)&local_60,"void cv::Mat::push_back(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x335); + String::deallocate((String *)&local_60); + } + /* try { // try from 00320aa4 to 00420aa7 has its CatchHandler @ 00320050 */ + uVar8 = *(uint *)this; + /* try { // try from 00320ab4 to 00420ab7 has its CatchHandler @ 00320b58 */ + if ((uVar8 & 0xfff) != (*(uint *)param_1 & 0xfff)) { + /* catch() { ... } // from try @ 0032090c with catch @ 00320abc */ + local_60 = 0; + uStack_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xcd,(String *)&local_60,"void cv::Mat::push_back(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x337); + String::deallocate((String *)&local_60); + uVar8 = *(uint *)this; + } + if ((uVar8 >> 0xf & 1) == 0) { + lVar12 = **(long **)(this + 0x48); + uVar9 = *(long *)(this + 0x20) + iVar6 * lVar12; + /* try { // try from 00320b20 to 00420b23 has its CatchHandler @ 00320050 */ + if (*(ulong *)(this + 0x28) < uVar9) goto LAB_00320c84; + } + else { +LAB_00320c84: + iVar3 = (iVar2 * 3 + 1) / 2; + /* try { // try from 00320ca0 to 00420ca3 has its CatchHandler @ 0032105c */ + if (iVar3 < iVar2 + iVar6) { + iVar3 = iVar2 + iVar6; + } + reserve(this,(long)iVar3); + lVar12 = **(long **)(this + 0x48); + uVar9 = *(long *)(this + 0x20) + iVar6 * lVar12; + } + /* catch() { ... } // from try @ 0032089c with catch @ 00320b24 */ + **(int **)(this + 0x40) = **(int **)(this + 0x40) + iVar6; + /* catch() { ... } // from try @ 003202d4 with catch @ 00320b34 */ + *(ulong *)(this + 0x20) = uVar9; + /* catch() { ... } // from try @ 003205bc with catch @ 00320b44 */ + if (((*(uint *)this >> 0xe & 1) != 0) && ((*(uint *)param_1 >> 0xe & 1) != 0)) { + iVar6 = *(int *)(param_1 + 4); + /* try { // try from 00320cd0 to 00420cd3 has its CatchHandler @ 00321028 */ + /* try { // try from 00320cd8 to 00420d63 has its CatchHandler @ 0032105c */ + __dest = (void *)(*(long *)(this + 0x10) + lVar12 * iVar2); + if (iVar6 < 3) { + lVar13 = (long)*(int *)(param_1 + 0xc) * (long)*(int *)(param_1 + 8); + if (iVar6 < 1) { + memcpy(__dest,*(void **)(param_1 + 0x10),0); + return; + } + } + else { + lVar12 = 0; + lVar13 = 1; + do { + lVar1 = lVar12 * 4; + lVar12 = lVar12 + 1; + lVar13 = lVar13 * *(int *)(*(long *)(param_1 + 0x40) + lVar1); + } while ((int)lVar12 < iVar6); + } + memcpy(__dest,*(void **)(param_1 + 0x10), + lVar13 * *(long *)(*(long *)(param_1 + 0x48) + (long)iVar6 * 8 + -8)); + return; + } + /* catch() { ... } // from try @ 0032010c with catch @ 00320b58 + catch() { ... } // from try @ 003204b8 with catch @ 00320b58 + catch() { ... } // from try @ 00320570 with catch @ 00320b58 + catch() { ... } // from try @ 003205c4 with catch @ 00320b58 + catch() { ... } // from try @ 003206cc with catch @ 00320b58 + catch() { ... } // from try @ 00320858 with catch @ 00320b58 + catch() { ... } // from try @ 003208a4 with catch @ 00320b58 + catch() { ... } // from try @ 00320920 with catch @ 00320b58 + catch() { ... } // from try @ 00320ab4 with catch @ 00320b58 */ + local_80 = 0x80000000; + /* catch() { ... } // from try @ 0032022c with catch @ 00320b60 + catch() { ... } // from try @ 003202dc with catch @ 00320b60 + catch() { ... } // from try @ 003208c8 with catch @ 00320b60 + catch() { ... } // from try @ 00320914 with catch @ 00320b60 + catch() { ... } // from try @ 00320990 with catch @ 00320b60 + catch() { ... } // from try @ 00320a5c with catch @ 00320b60 */ + /* catch() { ... } // from try @ 00320444 with catch @ 00320b68 + catch() { ... } // from try @ 003206a0 with catch @ 00320b68 + catch() { ... } // from try @ 0032099c with catch @ 00320b68 */ + local_74 = iVar2 + iVar6; + local_7c = 0x7fffffff; + local_78 = iVar2; + Mat((Mat *)&local_60,this,(Range *)&local_78,(Range *)&local_80); + /* catch() { ... } // from try @ 00320bc0 with catch @ 00320b80 + catch() { ... } // from try @ 00320ebc with catch @ 00320b80 + catch() { ... } // from try @ 0032101c with catch @ 00320b80 */ + local_68 = 0; + local_64 = 0; + local_78 = 0x2010000; + local_70 = (Mat *)&local_60; + copyTo(param_1,(_OutputArray *)&local_78); + if (lStack_28 != 0) { + piVar11 = (int *)(lStack_28 + 0x14); + do { + iVar6 = *piVar11; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar5) { + *piVar11 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + /* try { // try from 00320bc0 to 00420bc3 has its CatchHandler @ 00320b80 */ + if (iVar6 == 1) { + deallocate((Mat *)&local_60); + } + } + /* try { // try from 00320bdc to 00420bdf has its CatchHandler @ 00321020 */ + if (0 < local_60._4_4_) { + iVar6 = 0; + puVar10 = local_20; + do { + *(undefined4 *)puVar10 = 0; + iVar6 = iVar6 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar6 < local_60._4_4_); + } +LAB_00320c08: + lStack_28 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + local_50 = 0; + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00321150 (6104 bytes) name=cvarrToMat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::cvarrToMat(void const*, bool, bool, int, cv::AutoBuffer*) */ + +void __thiscall +cv::cvarrToMat(cv *this,void *param_1,bool param_2,bool param_3,int param_4,AutoBuffer *param_5) + +{ + int *piVar1; + long *plVar2; + int iVar3; + char cVar4; + bool bVar5; + ulong uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + int iVar14; + uint uVar15; + char *pcVar16; + undefined4 *puVar17; + undefined8 *puVar18; + long lVar19; + undefined8 *puVar20; + ulong uVar21; + ulong *puVar22; + undefined8 *puVar23; + int iVar24; + long lVar25; + int *piVar26; + long lVar27; + int iVar28; + uint uVar29; + long lVar30; + int iVar31; + long *plVar32; + Mat *in_x8; + Mat *pMVar33; + ulong uVar34; + ulong uVar35; + undefined4 uVar36; + undefined4 uVar37; + undefined4 uVar38; + undefined4 uVar39; + undefined8 local_208; + undefined8 local_200; + undefined8 local_1f8; + undefined8 local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 local_1d8; + long local_1d0; + undefined8 local_1c8; + long local_1c0; + long local_1b8; + undefined8 local_1b0; + long local_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + undefined8 uStack_148; + undefined8 local_140; + undefined8 uStack_138; + undefined8 local_130; + undefined8 uStack_128; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 *local_f0; + undefined8 *puStack_e8; + undefined8 *local_e0; + undefined8 *puStack_d8; + undefined8 *local_d0; + undefined8 *puStack_c8; + undefined8 *local_c0; + ulong *puStack_b8; + ulong local_b0; + ulong uStack_a8; + long local_a0; + long lStack_98; + long local_90; + long lStack_88; + long local_80; + long lStack_78; + long local_70; + long lStack_68; + long local_60; + long lStack_58; + long local_50; + long lStack_48; + long local_40; + long lStack_38; + long local_30; + long lStack_28; + long local_20; + long lStack_18; + long local_10; + long lStack_8; + + puVar23 = (undefined8 *)(ulong)(uint)param_4; + if (this == (cv *)0x0) { + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar8 = _UNK_00322ad8; + uVar7 = _DAT_00322ad0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 8) = uVar8; + *(undefined8 *)in_x8 = uVar7; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + return; + } + uVar15 = *(uint *)this; + uVar29 = uVar15 & 0xffff0000; + if (uVar29 == 0x42420000) { + iVar14 = *(int *)(this + 0x24); + /* try { // try from 003212a8 to 004212ab has its CatchHandler @ 0032133c */ + if ((iVar14 < 0) || (iVar24 = *(int *)(this + 0x20), iVar24 < 0)) { +LAB_003211bc: + if (uVar29 == 0x42990000) { + iVar14 = *(int *)(this + 0x28); + iVar24 = *(int *)(this + 0x2c); + if (iVar14 == 0) { + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar8 = _UNK_00322ad8; + uVar7 = _DAT_00322ad0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 8) = uVar8; + *(undefined8 *)in_x8 = uVar7; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + return; + } + if ((iVar14 < 1) || + ((uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3) != + iVar24)) { + local_100 = (int *)0x0; + uStack_f8 = (int *)0x0; + puVar18 = (undefined8 *)String::allocate((String *)&local_100,0x2c); + uVar36 = DAT_0046afa0; + uVar11 = _LAB_0046af90; + uVar10 = DAT_0046af88; + uVar8 = DAT_0046af80; + uVar7 = DAT_0046af78; + puVar18[4] = DAT_0046af98; + *(undefined4 *)(puVar18 + 5) = uVar36; + *puVar18 = uVar7; + puVar18[1] = uVar8; + puVar18[2] = uVar10; + puVar18[3] = uVar11; + error(-0xd7,(String *)&local_100, + "cv::Mat cv::cvarrToMat(const CvArr*, bool, bool, int, cv::AutoBuffer*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x361); + String::deallocate((String *)&local_100); + } + if ((((ulong)param_1 & 0xff) == 0) && + (lVar19 = *(long *)(this + 0x58), lVar19 == *(long *)(lVar19 + 8))) { + lVar19 = *(long *)(lVar19 + 0x18); + iVar24 = (uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3); + *(undefined4 *)(in_x8 + 4) = 2; + *(long *)(in_x8 + 0x10) = lVar19; + *(long *)(in_x8 + 0x18) = lVar19; + puVar18 = (undefined8 *)(lVar19 + (long)iVar24 * (long)iVar14); + *(int *)(in_x8 + 8) = iVar14; + *(undefined4 *)(in_x8 + 0xc) = 1; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + } + else { + if (puVar23 == (undefined8 *)0x0) { + puStack_b8 = &local_b0; + local_c0 = &uStack_f8; + local_180 = CONCAT44(1,iVar14); + uStack_f8 = (int *)_UNK_00322ad8; + local_100 = (int *)_DAT_00322ad0; + uStack_a8 = 0; + local_b0 = 0; + local_f0 = puVar23; + puStack_e8 = puVar23; + local_e0 = puVar23; + puStack_d8 = puVar23; + local_d0 = puVar23; + puStack_c8 = puVar23; + Mat::create((Mat *)&local_100,2,(int *)&local_180,uVar15 & 0xfff); + cvCvtSeqToArray(this,local_f0,0x3fffffff00000000); + *(undefined8 **)(in_x8 + 0x10) = local_f0; + *(undefined8 **)(in_x8 + 0x18) = puStack_e8; + *(int **)(in_x8 + 8) = uStack_f8; + *(int **)in_x8 = local_100; + *(undefined8 **)(in_x8 + 0x20) = local_e0; + *(undefined8 **)(in_x8 + 0x28) = puStack_d8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 **)(in_x8 + 0x30) = local_d0; + *(undefined8 **)(in_x8 + 0x38) = puStack_c8; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (puStack_c8 != (undefined8 *)0x0) { + piVar26 = (int *)((long)puStack_c8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = *piVar26 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (local_100._4_4_ < 3) { + puVar22 = *(ulong **)(in_x8 + 0x48); + *puVar22 = *puStack_b8; + puVar22[1] = puStack_b8[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + Mat::copySize(in_x8,(Mat *)&local_100); + } + if (puStack_c8 != (undefined8 *)0x0) { + piVar26 = (int *)((long)puStack_c8 + 0x14); + do { + iVar14 = *piVar26; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_100); + } + } + puStack_c8 = (undefined8 *)0x0; + local_f0 = (undefined8 *)0x0; + puStack_d8 = (undefined8 *)0x0; + local_e0 = (undefined8 *)0x0; + puStack_e8 = (undefined8 *)0x0; + if (0 < local_100._4_4_) { + iVar14 = 0; + puVar23 = local_c0; + do { + *(undefined4 *)puVar23 = 0; + iVar14 = iVar14 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar14 < local_100._4_4_); + } + if (puStack_b8 == &local_b0) { + return; + } + fastFree(puStack_b8); + return; + } + uVar35 = (long)iVar24 * (long)iVar14 + 7U >> 3; + if ((ulong)puVar23[1] < uVar35) { + puVar18 = puVar23 + 2; + puVar20 = (undefined8 *)*puVar23; + if (puVar20 != puVar18) { + if (puVar20 != (void *)0x0) { + operator_delete__(puVar20); + } + *puVar23 = puVar18; + puVar23[1] = 0x88; + } + if (0x88 < uVar35) { + uVar21 = uVar35 << 3; + if (0xfe0000000000000 < uVar35) { + uVar21 = 0xffffffffffffffff; + } + puVar18 = operator_new__(uVar21); + puVar23[1] = uVar35; + *puVar23 = puVar18; + } + } + else { + puVar23[1] = uVar35; + puVar18 = (undefined8 *)*puVar23; + } + cvCvtSeqToArray(this,puVar18,0x3fffffff00000000); + *(undefined8 **)(in_x8 + 0x10) = puVar18; + iVar24 = (uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3); + *(undefined4 *)(in_x8 + 4) = 2; + *(undefined8 **)(in_x8 + 0x18) = puVar18; + puVar18 = (undefined8 *)((long)puVar18 + (long)iVar24 * (long)iVar14); + *(int *)(in_x8 + 8) = iVar14; + *(undefined4 *)(in_x8 + 0xc) = 1; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + } + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(uint *)in_x8 = (uVar15 & 0xfff) + 0x42ff0000 | 0x4000; + *(long *)(in_x8 + 0x50) = (long)iVar24; + *(long *)(in_x8 + 0x58) = (long)iVar24; + *(undefined8 **)(in_x8 + 0x28) = puVar18; + *(undefined8 **)(in_x8 + 0x20) = puVar18; + return; + } +LAB_003211c8: + local_100 = (int *)0x0; + uStack_f8 = (int *)0x0; + pcVar16 = (char *)String::allocate((String *)&local_100,0x12); + uVar8 = s_Unknown_array_type_0046afa8._8_8_; + uVar7 = s_Unknown_array_type_0046afa8._0_8_; + /* try { // try from 00321204 to 00421207 has its CatchHandler @ 0032133c */ + *(undefined2 *)(pcVar16 + 0x10) = s_Unknown_array_type_0046afa8._16_2_; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + error(-5,(String *)&local_100, + "cv::Mat cv::cvarrToMat(const CvArr*, bool, bool, int, cv::AutoBuffer*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x370); + String::deallocate((String *)&local_100); + *(undefined4 *)(in_x8 + 4) = 0; + *(undefined4 *)(in_x8 + 8) = 0; + *(undefined4 *)in_x8 = 0x42ff0000; + *(undefined4 *)(in_x8 + 0xc) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + return; + } + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar8 = _UNK_00322ad8; + uVar7 = _DAT_00322ad0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 8) = uVar8; + *(undefined8 *)in_x8 = uVar7; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (((ulong)param_1 & 0xff) == 0) { + *(undefined4 *)(in_x8 + 4) = 2; + *(uint *)in_x8 = (uVar15 & 0x4fff) + 0x42ff0000; + *(int *)(in_x8 + 8) = iVar24; + *(int *)(in_x8 + 0xc) = iVar14; + iVar28 = (uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3); + lVar30 = (long)*(int *)(this + 4); + lVar27 = 0; + lVar25 = *(long *)(this + 0x18); + /* catch() { ... } // from try @ 003210cc with catch @ 0032133c + catch() { ... } // from try @ 00321204 with catch @ 0032133c + catch() { ... } // from try @ 003212a8 with catch @ 0032133c */ + *(long *)(in_x8 + 0x10) = lVar25; + *(long *)(in_x8 + 0x18) = lVar25; + lVar19 = (long)iVar28 * (long)iVar14; + if (lVar30 != 0) { + lVar27 = lVar19 - lVar30; + lVar19 = lVar30; + } + *(long *)(in_x8 + 0x50) = lVar19; + /* try { // try from 00321360 to 00421363 has its CatchHandler @ 00321064 */ + *(long *)(in_x8 + 0x58) = (long)iVar28; + /* catch() { ... } // from try @ 00321140 with catch @ 00321364 */ + lVar25 = lVar25 + lVar19 * iVar24; + *(long *)(in_x8 + 0x28) = lVar25; + *(long *)(in_x8 + 0x20) = lVar25 + lVar27; + return; + } + local_100._0_4_ = (uVar15 & 0xfff) + 0x42ff0000; + local_f0 = *(undefined8 **)(this + 0x18); + uVar35 = (ulong)*(int *)(this + 4); + iVar28 = (uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3); + local_c0 = &uStack_f8; + puStack_b8 = &local_b0; + local_100._4_4_ = 2; + uStack_f8 = (int *)CONCAT44(iVar14,iVar24); + local_e0 = (undefined8 *)0x0; + puStack_d8 = (undefined8 *)0x0; + local_d0 = (undefined8 *)0x0; + puStack_c8 = (undefined8 *)0x0; + uStack_a8 = 0; + local_b0 = 0; + uVar21 = (long)iVar28 * (long)iVar14; + puStack_e8 = local_f0; + if (uVar35 == 0) { + local_100 = (int *)CONCAT44(2,(uint)local_100 | 0x4000); + lVar19 = 0; + goto LAB_003222dc; + } + uVar34 = 0x88442211UL >> ((uVar15 & 7) << 2) & 0xf; + if (iVar24 == 1) { + uVar6 = 0; + if (uVar34 != 0) { + uVar6 = uVar21 / uVar34; + } + uVar35 = uVar21; + if (uVar21 - uVar6 * uVar34 != 0) goto LAB_003228a0; +LAB_00322898: + uVar29 = 0x4000; + } + else { + uVar6 = 0; + if (uVar34 != 0) { + uVar6 = uVar35 / uVar34; + } + if (uVar35 != uVar6 * uVar34) { +LAB_003228a0: + local_180 = 0; + pMStack_178 = (Mat *)0x0; + pcVar16 = (char *)String::allocate((String *)&local_180,0x1f); + cVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar36 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar8 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar16 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar16 + 0x18) = uVar36; + *(undefined2 *)(pcVar16 + 0x1c) = uVar9; + pcVar16[0x1e] = cVar4; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + error(-0xd,(String *)&local_180,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)&local_180); + iVar24 = (int)uStack_f8; + } + uVar29 = 0; + if (uVar21 - uVar35 == 0) goto LAB_00322898; + } + lVar19 = uVar21 - uVar35; + local_100 = (int *)CONCAT44(local_100._4_4_,(uint)local_100 | uVar29); + uVar21 = uVar35; +LAB_003222dc: + *puStack_b8 = uVar21; + puStack_b8[1] = (long)iVar28; + puStack_d8 = (undefined8 *)((long)puStack_e8 + (long)iVar24 * uVar21); + local_e0 = (undefined8 *)((long)puStack_d8 + lVar19); + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + Mat::copyTo((Mat *)&local_100,(_OutputArray *)&local_180); + if (puStack_c8 != (undefined8 *)0x0) { + piVar26 = (int *)((long)puStack_c8 + 0x14); + do { + iVar14 = *piVar26; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_100); + } + } + puStack_c8 = (undefined8 *)0x0; + local_f0 = (undefined8 *)0x0; + puStack_d8 = (undefined8 *)0x0; + local_e0 = (undefined8 *)0x0; + puStack_e8 = (undefined8 *)0x0; + if (0 < local_100._4_4_) { + iVar14 = 0; + puVar23 = local_c0; + do { + *(undefined4 *)puVar23 = 0; + iVar14 = iVar14 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar14 < local_100._4_4_); + } + if (puStack_b8 == &local_b0) { + return; + } + fastFree(puStack_b8); + return; + } + if (uVar29 != 0x42430000) { + if ((uVar15 != 0x90) || (*(long *)(this + 0x58) == 0)) goto LAB_003211bc; + piVar26 = *(int **)(this + 0x30); + if (((!param_3) && (piVar26 != (int *)0x0)) && (0 < *piVar26)) { + local_100 = (int *)0x0; + uStack_f8 = (int *)0x0; + pcVar16 = (char *)String::allocate((String *)&local_100,0x24); + uVar11 = s_COI_is_not_supported_by_the_func_0046aee8._24_8_; + uVar10 = s_COI_is_not_supported_by_the_func_0046aee8._16_8_; + uVar8 = s_COI_is_not_supported_by_the_func_0046aee8._8_8_; + uVar7 = s_COI_is_not_supported_by_the_func_0046aee8._0_8_; + /* try { // try from 0032189c to 0042189f has its CatchHandler @ 003219a0 */ + *(undefined4 *)(pcVar16 + 0x20) = s_COI_is_not_supported_by_the_func_0046aee8._32_4_; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + *(undefined8 *)(pcVar16 + 0x10) = uVar10; + *(undefined8 *)(pcVar16 + 0x18) = uVar11; + error(-0x18,(String *)&local_100, + "cv::Mat cv::cvarrToMat(const CvArr*, bool, bool, int, cv::AutoBuffer*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x358); + String::deallocate((String *)&local_100); + piVar26 = *(int **)(this + 0x30); + } + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + uVar8 = _UNK_00322ae8; + uVar7 = _DAT_00322ae0; + pMVar33 = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 8) = uVar8; + *(undefined8 *)in_x8 = uVar7; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + /* try { // try from 00321910 to 00421937 has its CatchHandler @ 003216b8 */ + *(Mat **)(in_x8 + 0x48) = pMVar33; + uVar29 = *(uint *)(this + 0x10); + lVar19 = (long)*(int *)(this + 0x60); + *(undefined8 *)(in_x8 + 0x58) = 0; + iVar14 = 0x14; + if (-1 < (int)uVar29) { + iVar14 = 0; + } + *(long *)(in_x8 + 0x50) = lVar19; + uVar29 = 0x43160520 >> (iVar14 + ((uVar29 & 0xf0) >> 2) & 0x1f); + if (piVar26 == (int *)0x0) { + if (*(int *)(this + 0x1c) != 0) { + local_100 = piVar26; + uStack_f8 = piVar26; + puVar23 = (undefined8 *)String::allocate((String *)&local_100,0x26); + uVar9 = DAT_0046af34; + uVar11 = DAT_0046af28; + uVar10 = _LAB_0046af20; + uVar8 = _DAT_0046af18; + uVar7 = DAT_0046af10; + *(undefined4 *)(puVar23 + 4) = DAT_0046af30; + *(undefined2 *)((long)puVar23 + 0x24) = uVar9; + *puVar23 = uVar7; + puVar23[1] = uVar8; + puVar23[2] = uVar10; + puVar23[3] = uVar11; + error(-0xd7,(String *)&local_100,"cv::Mat cv::iplImageToMat(const IplImage*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x273); + String::deallocate((String *)&local_100); + pMVar33 = *(Mat **)(in_x8 + 0x48); + lVar19 = *(long *)pMVar33; + } + puStack_e8 = *(undefined8 **)(this + 0x58); + iVar14 = *(int *)(this + 0x2c); + iVar24 = *(int *)(this + 0x28); + uVar29 = (uVar29 & 7) + (*(int *)(this + 8) + -1) * 8 + 0x42ff0000; + *(int *)(in_x8 + 8) = iVar14; + *(int *)(in_x8 + 0xc) = iVar24; + iVar28 = (uVar29 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar29 & 7) << 1)) & 3); + *(undefined8 **)(in_x8 + 0x10) = puStack_e8; + *(undefined8 **)(in_x8 + 0x18) = puStack_e8; + goto LAB_003219f0; + } + /* try { // try from 00321940 to 00421943 has its CatchHandler @ 003219a0 */ + iVar14 = *(int *)(this + 0x1c); + if (iVar14 == 0) { + iVar31 = *piVar26; +LAB_0032195c: + bVar5 = false; + iVar14 = (*(int *)(this + 8) + -1) * 8; + } + else { + /* catch() { ... } // from try @ 003217b8 with catch @ 00321948 */ + iVar31 = *piVar26; + if (iVar31 == 0) { + local_180 = 0; + pMStack_178 = (Mat *)0x0; + pcVar16 = (char *)String::allocate((String *)&local_180,0x3c); + uVar36 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._56_4_; + uVar13 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._40_8_; + uVar12 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._32_8_; + uVar11 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._24_8_; + uVar10 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._16_8_; + uVar8 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._8_8_; + uVar7 = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._0_8_; + *(undefined8 *)(pcVar16 + 0x30) = s_img_>dataOrder____IPL_DATA_ORDER_0046af38._48_8_; + *(undefined4 *)(pcVar16 + 0x38) = uVar36; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + *(undefined8 *)(pcVar16 + 0x10) = uVar10; + *(undefined8 *)(pcVar16 + 0x18) = uVar11; + *(undefined8 *)(pcVar16 + 0x20) = uVar12; + *(undefined8 *)(pcVar16 + 0x28) = uVar13; + error(-0xd7,(String *)&local_180,"cv::Mat cv::iplImageToMat(const IplImage*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x27c); + String::deallocate((String *)&local_180); + piVar26 = *(int **)(this + 0x30); + pMVar33 = *(Mat **)(in_x8 + 0x48); + iVar31 = *piVar26; + if (iVar31 == 0) { + lVar19 = *(long *)pMVar33; + goto LAB_0032195c; + } + iVar14 = *(int *)(this + 0x1c); + lVar19 = *(long *)pMVar33; + } + if (iVar14 != 1) goto LAB_0032195c; + iVar14 = 0; + bVar5 = true; + } + uVar29 = (uVar29 & 7) + iVar14 + 0x42ff0000; + iVar14 = piVar26[4]; + iVar24 = piVar26[3]; + /* try { // try from 00321994 to 00421997 has its CatchHandler @ 003216b8 */ + /* catch() { ... } // from try @ 0032177c with catch @ 00321998 + catch() { ... } // from try @ 003217c0 with catch @ 00321998 */ + *(int *)(in_x8 + 8) = iVar14; + /* catch() { ... } // from try @ 00321728 with catch @ 003219a0 + catch() { ... } // from try @ 0032189c with catch @ 003219a0 + catch() { ... } // from try @ 00321940 with catch @ 003219a0 */ + iVar28 = (uVar29 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar29 & 7) << 1)) & 3); + *(int *)(in_x8 + 0xc) = iVar24; + lVar25 = 0; + if (bVar5) { + lVar25 = (long)*(int *)(this + 0x2c) * *(long *)(in_x8 + 0x50) * (long)(iVar31 + -1); + } + puStack_e8 = (undefined8 *) + (*(long *)(this + 0x58) + + lVar19 * piVar26[2] + (long)iVar28 * (long)piVar26[1] + lVar25); + *(undefined8 **)(in_x8 + 0x10) = puStack_e8; + *(undefined8 **)(in_x8 + 0x18) = puStack_e8; +LAB_003219f0: + lVar25 = (long)iVar24 * (long)iVar28; + puStack_d8 = (undefined8 *)((long)puStack_e8 + iVar14 * lVar19); + *(undefined8 **)(in_x8 + 0x28) = puStack_d8; + local_e0 = (undefined8 *)((long)puStack_e8 + (iVar14 * lVar19 - lVar19) + lVar25); + *(undefined8 **)(in_x8 + 0x20) = local_e0; + if ((lVar25 - lVar19 == 0) || (uVar15 = 0, iVar14 == 1)) { + uVar15 = 0x4000; + } + uVar15 = uVar15 | uVar29; + *(uint *)in_x8 = uVar15; + *(long *)(pMVar33 + 8) = (long)iVar28; + if (((ulong)param_1 & 0xff) == 0) { + return; + } + iVar28 = *(int *)(in_x8 + 4); + local_f0 = *(undefined8 **)(in_x8 + 0x10); + local_c0 = &uStack_f8; + local_d0 = *(undefined8 **)(in_x8 + 0x30); + puStack_b8 = &local_b0; + puStack_c8 = *(undefined8 **)(in_x8 + 0x38); + local_100 = (int *)CONCAT44(iVar28,uVar15); + uStack_f8 = (int *)CONCAT44(iVar24,iVar14); + uStack_a8 = 0; + local_b0 = 0; + if (puStack_c8 != (undefined8 *)0x0) { + piVar26 = (int *)((long)puStack_c8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = *piVar26 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + iVar28 = *(int *)(in_x8 + 4); + } + if (iVar28 < 3) { + local_b0 = **(ulong **)(in_x8 + 0x48); + uStack_a8 = (*(ulong **)(in_x8 + 0x48))[1]; + } + else { + local_100 = (int *)(ulong)uVar15; + Mat::copySize((Mat *)&local_100,in_x8); + } + if (*(long *)(in_x8 + 0x38) != 0) { + piVar26 = (int *)(*(long *)(in_x8 + 0x38) + 0x14); + do { + iVar14 = *piVar26; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate(in_x8); + } + } + *(undefined8 *)(in_x8 + 0x38) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + if (0 < *(int *)(in_x8 + 4)) { + iVar14 = 0; + puVar17 = *(undefined4 **)(in_x8 + 0x40); + do { + *puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < *(int *)(in_x8 + 4)); + } + if (((*(int **)(this + 0x30) == (int *)0x0) || (iVar14 = **(int **)(this + 0x30), iVar14 == 0)) + || (*(int *)(this + 0x1c) == 1)) { + local_170 = 0; + local_180 = CONCAT44(local_180._4_4_,0x2010000); + pMStack_178 = in_x8; + Mat::copyTo((Mat *)&local_100,(_OutputArray *)&local_180); + } + else { + local_180 = (ulong)(iVar14 - 1); + local_1e0 = (ulong)uStack_f8; + Mat::create(in_x8,2,(int *)&local_1e0,(uint)local_100 & 0xfff); + mixChannels((Mat *)&local_100,1,in_x8,1,(int *)&local_180,1); + } + if (puStack_c8 != (undefined8 *)0x0) { + piVar26 = (int *)((long)puStack_c8 + 0x14); + do { + iVar14 = *piVar26; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_100); + } + } + puStack_c8 = (undefined8 *)0x0; + local_f0 = (undefined8 *)0x0; + puStack_d8 = (undefined8 *)0x0; + local_e0 = (undefined8 *)0x0; + puStack_e8 = (undefined8 *)0x0; + if (0 < local_100._4_4_) { + iVar14 = 0; + puVar23 = local_c0; + do { + *(undefined4 *)puVar23 = 0; + iVar14 = iVar14 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar14 < local_100._4_4_); + } + if (puStack_b8 == &local_b0) { + return; + } + fastFree(puStack_b8); + return; + } + lVar19 = *(long *)(this + 0x18); + if (lVar19 == 0) goto LAB_003211c8; + uVar29 = *(uint *)(this + 4); + *(undefined4 *)(in_x8 + 4) = 0; + /* catch() { ... } // from try @ 003210fc with catch @ 00321394 + catch() { ... } // from try @ 00321148 with catch @ 00321394 */ + *(undefined4 *)(in_x8 + 8) = 0; + /* catch() { ... } // from try @ 0032140c with catch @ 0032139c + catch() { ... } // from try @ 00321450 with catch @ 0032139c + catch() { ... } // from try @ 003214c8 with catch @ 0032139c + catch() { ... } // from try @ 00321530 with catch @ 0032139c + catch() { ... } // from try @ 00321610 with catch @ 0032139c + catch() { ... } // from try @ 00321678 with catch @ 0032139c + catch() { ... } // from try @ 0032168c with catch @ 0032139c + catch() { ... } // from try @ 003216a0 with catch @ 0032139c + catch() { ... } // from try @ 003216b4 with catch @ 0032139c */ + pMVar33 = in_x8 + 0x50; + *(undefined4 *)(in_x8 + 0xc) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = pMVar33; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + *(long *)(in_x8 + 0x10) = lVar19; + *(long *)(in_x8 + 0x18) = lVar19; + *(uint *)in_x8 = uVar15 & 0xfff | 0x42ff0000; + if ((int)uVar29 < 1) { + uVar15 = 0; + if (0x20 < uVar29) goto LAB_003224b0; +LAB_00321c78: + if (uVar29 != uVar15) goto LAB_00321690; + } + else { + iVar14 = (uVar29 - 4 >> 2) + 1; + uVar15 = iVar14 * 4; + if (uVar29 - 1 < 3) { + uVar15 = 0; +LAB_0032162c: + iVar14 = uVar15 + 1; + iVar24 = *(int *)(this + (long)(int)uVar15 * 8 + 0x24); + *(undefined4 *)((long)&local_180 + (long)(int)uVar15 * 4) = + *(undefined4 *)(this + (long)(int)uVar15 * 8 + 0x20); + (&local_100)[(int)uVar15] = (long)iVar24; + if (iVar14 < (int)uVar29) { + iVar24 = uVar15 + 2; + iVar28 = *(int *)(this + (long)iVar14 * 8 + 0x24); + *(undefined4 *)((long)&local_180 + (long)iVar14 * 4) = + *(undefined4 *)(this + (long)iVar14 * 8 + 0x20); + /* catch() { ... } // from try @ 00321608 with catch @ 00321668 */ + (&local_100)[iVar14] = (long)iVar28; + if (iVar24 < (int)uVar29) { + /* try { // try from 00321678 to 0042167b has its CatchHandler @ 0032139c */ + iVar14 = *(int *)(this + (long)iVar24 * 8 + 0x24); + /* catch() { ... } // from try @ 00321448 with catch @ 0032167c */ + *(undefined4 *)((long)&local_180 + (long)iVar24 * 4) = + *(undefined4 *)(this + (long)iVar24 * 8 + 0x20); + (&local_100)[iVar24] = (long)iVar14; + } + } + } + else { + /* try { // try from 0032140c to 0042140f has its CatchHandler @ 0032139c */ + uVar36 = *(undefined4 *)(this + 0x28); + uVar38 = *(undefined4 *)(this + 0x2c); + uVar37 = *(undefined4 *)(this + 0x38); + uVar39 = *(undefined4 *)(this + 0x3c); + pMStack_178 = (Mat *)CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37, + *(undefined4 *)(this + 0x30))))); + local_180 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36,*(undefined4 *)(this + 0x20))))); + /* try { // try from 00321448 to 0042144b has its CatchHandler @ 0032167c */ + uStack_f8 = (int *)(long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 0x24))))) + >> 0x20); + local_100 = (int *)(long)*(int *)(this + 0x24); + puStack_e8 = (undefined8 *) + (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0x34))))) >> 0x20 + ); + local_f0 = (undefined8 *)(long)*(int *)(this + 0x34); + /* try { // try from 00321450 to 00421493 has its CatchHandler @ 0032139c */ + if (iVar14 != 1) { + uVar36 = *(undefined4 *)(this + 0x48); + uVar38 = *(undefined4 *)(this + 0x4c); + uVar37 = *(undefined4 *)(this + 0x58); + uVar39 = *(undefined4 *)(this + 0x5c); + uStack_168 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37,*(undefined4 *)(this + 0x50))) + )); + local_170 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36,*(undefined4 *)(this + 0x40)))) + ); + puStack_d8 = (undefined8 *) + (long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 0x44))))) >> + 0x20); + local_e0 = (undefined8 *)(long)*(int *)(this + 0x44); + puStack_c8 = (undefined8 *) + (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0x54))))) >> + 0x20); + local_d0 = (undefined8 *)(long)*(int *)(this + 0x54); + if (iVar14 != 2) { + uVar36 = *(undefined4 *)(this + 0x68); + uVar38 = *(undefined4 *)(this + 0x6c); + uVar37 = *(undefined4 *)(this + 0x78); + uVar39 = *(undefined4 *)(this + 0x7c); + /* try { // try from 003214c0 to 004214c3 has its CatchHandler @ 00321690 */ + /* try { // try from 003214c8 to 004214fb has its CatchHandler @ 0032139c */ + uStack_158 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37,*(undefined4 *)(this + 0x70) + )))); + local_160 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36,*(undefined4 *)(this + 0x60)) + ))); + puStack_b8 = (ulong *)(long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 100) + )))) >> 0x20); + local_c0 = (undefined8 *)(long)*(int *)(this + 100); + uStack_a8 = (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0x74))))) >> + 0x20); + local_b0 = (long)*(int *)(this + 0x74); + if (iVar14 != 3) { + uVar36 = *(undefined4 *)(this + 0x88); + uVar38 = *(undefined4 *)(this + 0x8c); + uVar37 = *(undefined4 *)(this + 0x98); + uVar39 = *(undefined4 *)(this + 0x9c); + uStack_148 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37, + *(undefined4 *)(this + 0x90))))); + local_150 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36, + *(undefined4 *)(this + 0x80))))); + lStack_98 = (long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 0x84))))) >> + 0x20); + local_a0 = (long)*(int *)(this + 0x84); + lStack_88 = (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0x94))))) >> + 0x20); + local_90 = (long)*(int *)(this + 0x94); + if (iVar14 != 4) { + uVar36 = *(undefined4 *)(this + 0xa8); + uVar38 = *(undefined4 *)(this + 0xac); + uVar37 = *(undefined4 *)(this + 0xb8); + uVar39 = *(undefined4 *)(this + 0xbc); + /* try { // try from 00321528 to 0042152b has its CatchHandler @ 003216a4 */ + /* try { // try from 00321530 to 004215bb has its CatchHandler @ 0032139c */ + uStack_138 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37, + *(undefined4 *)(this + 0xb0))))); + local_140 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36, + *(undefined4 *)(this + 0xa0))))); + lStack_78 = (long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 0xa4))))) + >> 0x20); + local_80 = (long)*(int *)(this + 0xa4); + lStack_68 = (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0xb4))))) + >> 0x20); + local_70 = (long)*(int *)(this + 0xb4); + if (iVar14 != 5) { + uVar36 = *(undefined4 *)(this + 200); + uVar38 = *(undefined4 *)(this + 0xcc); + uVar37 = *(undefined4 *)(this + 0xd8); + uVar39 = *(undefined4 *)(this + 0xdc); + uStack_128 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37, + *(undefined4 *)(this + 0xd0))))); + local_130 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36, + *(undefined4 *)(this + 0xc0))))); + lStack_58 = (long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 0xc4)))) + ) >> 0x20); + local_60 = (long)*(int *)(this + 0xc4); + lStack_48 = (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0xd4)))) + ) >> 0x20); + local_50 = (long)*(int *)(this + 0xd4); + if (iVar14 != 6) { + uVar36 = *(undefined4 *)(this + 0xe8); + uVar38 = *(undefined4 *)(this + 0xec); + uVar37 = *(undefined4 *)(this + 0xf8); + uVar39 = *(undefined4 *)(this + 0xfc); + uStack_118 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37, + *(undefined4 *)(this + 0xf0))))); + local_120 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36, + *(undefined4 *)(this + 0xe0))))); + lStack_38 = (long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + 0xe4)) + ))) >> 0x20); + local_40 = (long)*(int *)(this + 0xe4); + lStack_28 = (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0xf4)) + ))) >> 0x20); + local_30 = (long)*(int *)(this + 0xf4); + if (iVar14 != 7) { + uVar36 = *(undefined4 *)(this + 0x108); + uVar38 = *(undefined4 *)(this + 0x10c); + uVar37 = *(undefined4 *)(this + 0x118); + uVar39 = *(undefined4 *)(this + 0x11c); + /* try { // try from 00321608 to 0042160b has its CatchHandler @ 00321668 */ + /* try { // try from 00321610 to 0042165b has its CatchHandler @ 0032139c */ + uStack_108 = CONCAT17((char)((uint)uVar37 >> 0x18), + CONCAT16((char)((uint)uVar37 >> 0x10), + CONCAT15((char)((uint)uVar37 >> 8), + CONCAT14((char)uVar37, + *(undefined4 *)(this + 0x110))) + )); + local_110 = CONCAT17((char)((uint)uVar36 >> 0x18), + CONCAT16((char)((uint)uVar36 >> 0x10), + CONCAT15((char)((uint)uVar36 >> 8), + CONCAT14((char)uVar36, + *(undefined4 *)(this + 0x100)))) + ); + lStack_18 = (long)(int)(CONCAT17((char)((uint)uVar38 >> 0x18), + CONCAT16((char)((uint)uVar38 >> 0x10), + CONCAT15((char)((uint)uVar38 >> 8), + CONCAT14((char)uVar38, + *(int *)(this + + 0x104))))) >> 0x20); + local_20 = (long)*(int *)(this + 0x104); + lStack_8 = (long)(int)(CONCAT17((char)((uint)uVar39 >> 0x18), + CONCAT16((char)((uint)uVar39 >> 0x10), + CONCAT15((char)((uint)uVar39 >> 8), + CONCAT14((char)uVar39, + *(int *)(this + 0x114 + ))))) >> 0x20 + ); + local_10 = (long)*(int *)(this + 0x114); + } + } + } + } + } + } + } + if (uVar29 != uVar15) goto LAB_0032162c; + } + /* try { // try from 0032168c to 0042168f has its CatchHandler @ 0032139c */ + if (0x20 < (int)uVar29) { +LAB_003224b0: + local_1e0 = 0; + local_1d8 = 0; + pcVar16 = (char *)String::allocate((String *)&local_1e0,0x21); + uVar11 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar10 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar8 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar7 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar16[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + *(undefined8 *)(pcVar16 + 0x10) = uVar10; + *(undefined8 *)(pcVar16 + 0x18) = uVar11; + error(-0xd7,(String *)&local_1e0, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10a); + String::deallocate((String *)&local_1e0); + uVar15 = *(uint *)(in_x8 + 4); + goto LAB_00321c78; + } +LAB_00321690: + /* catch() { ... } // from try @ 003214c0 with catch @ 00321690 */ + if (pMVar33 != *(Mat **)(in_x8 + 0x48)) { + /* try { // try from 003216a0 to 004216a3 has its CatchHandler @ 0032139c */ + fastFree(*(Mat **)(in_x8 + 0x48)); + /* catch() { ... } // from try @ 00321528 with catch @ 003216a4 */ + *(Mat **)(in_x8 + 0x48) = pMVar33; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + } + /* try { // try from 003216b4 to 004216b7 has its CatchHandler @ 0032139c */ + if (2 < (int)uVar29) { + uVar35 = -(ulong)(uVar29 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar29 << 3; + lVar19 = fastMalloc(uVar35 + (long)(int)(uVar29 + 1) * 4); + *(long *)(in_x8 + 0x48) = lVar19; + lVar19 = lVar19 + uVar35 + 4; + *(long *)(in_x8 + 0x40) = lVar19; + *(uint *)(lVar19 + -4) = uVar29; + *(undefined4 *)(in_x8 + 0xc) = 0xffffffff; + *(undefined4 *)(in_x8 + 8) = 0xffffffff; + } + } + /* catch() { ... } // from try @ 0032170c with catch @ 003216b8 + catch() { ... } // from try @ 00321910 with catch @ 003216b8 + catch() { ... } // from try @ 00321994 with catch @ 003216b8 */ + uVar15 = *(uint *)in_x8; + *(uint *)(in_x8 + 4) = uVar29; + iVar14 = uVar29 - 1; + uVar35 = 0x88442211UL >> ((uVar15 & 7) << 2) & 0xf; + uVar21 = (ulong)(int)((uVar15 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3)); + if (-1 < iVar14) { + /* try { // try from 0032170c to 0042170f has its CatchHandler @ 003216b8 */ + lVar25 = (long)iVar14 << 3; + lVar19 = (long)iVar14 << 2; + iVar24 = iVar14; + /* try { // try from 00321728 to 0042172b has its CatchHandler @ 003219a0 */ + do { + iVar28 = *(int *)((long)&local_180 + lVar19); + if (iVar28 < 0) { + local_1f8 = 0; + local_1f0 = 0; + puVar17 = (undefined4 *)String::allocate((String *)&local_1f8,6); + uVar9 = DAT_0046acbc; + *puVar17 = DAT_0046acb8; + *(undefined2 *)(puVar17 + 1) = uVar9; + error(-0xd7,(String *)&local_1f8, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x125); + String::deallocate((String *)&local_1f8); + } + uVar34 = *(ulong *)((long)&local_100 + lVar25); + *(int *)(*(long *)(in_x8 + 0x40) + lVar19) = iVar28; + /* try { // try from 0032177c to 0042177f has its CatchHandler @ 00321998 */ + uVar6 = 0; + if (uVar35 != 0) { + uVar6 = uVar34 / uVar35; + } + if (uVar34 != uVar6 * uVar35) { + local_208 = 0; + local_200 = 0; + pcVar16 = (char *)String::allocate((String *)&local_208,0x1f); + cVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar36 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar8 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + /* try { // try from 003217b8 to 004217bb has its CatchHandler @ 00321948 */ + /* try { // try from 003217c0 to 0042182b has its CatchHandler @ 00321998 */ + *(undefined8 *)(pcVar16 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar16 + 0x18) = uVar36; + *(undefined2 *)(pcVar16 + 0x1c) = uVar9; + pcVar16[0x1e] = cVar4; + *(undefined8 *)pcVar16 = uVar7; + *(undefined8 *)(pcVar16 + 8) = uVar8; + error(-0xd,(String *)&local_208, + "void cv::setSize(cv::Mat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",300); + String::deallocate((String *)&local_208); + } + iVar28 = iVar24 + -1; + if (iVar14 <= iVar24) { + uVar34 = uVar21; + } + lVar19 = lVar19 + -4; + *(ulong *)(*(long *)(in_x8 + 0x48) + lVar25) = uVar34; + lVar25 = lVar25 + -8; + iVar24 = iVar28; + } while (iVar28 != -1); + uVar15 = *(uint *)in_x8; + } + if (uVar29 == 1) { + piVar26 = *(int **)(in_x8 + 0x40); + *(undefined4 *)(in_x8 + 0xc) = 1; + iVar14 = 2; + *(undefined4 *)(in_x8 + 4) = 2; + lVar19 = *(long *)(in_x8 + 0x48); + iVar24 = *piVar26; + *(ulong *)(lVar19 + 8) = uVar21; + iVar28 = 1; + iVar31 = 2; + if (iVar24 < 2) goto LAB_00321cbc; + iVar24 = 0; + } + else { + iVar14 = *(int *)(in_x8 + 4); + iVar28 = iVar14 + -1; + if ((iVar14 < 1) || (piVar26 = *(int **)(in_x8 + 0x40), iVar31 = iVar14, 1 < *piVar26)) { + iVar24 = 0; + } + else { +LAB_00321cbc: + iVar14 = iVar31; + iVar31 = 0; + do { + piVar26 = piVar26 + 1; + iVar31 = iVar31 + 1; + iVar24 = iVar14; + if (iVar31 == iVar14) break; + iVar24 = iVar31; + } while (*piVar26 < 2); + } + if (iVar28 <= iVar24) { +LAB_00321d50: + *(uint *)in_x8 = uVar15 | 0x4000; + goto LAB_00321d58; + } + lVar19 = *(long *)(in_x8 + 0x48); + piVar26 = *(int **)(in_x8 + 0x40); + } + iVar31 = iVar14 + -2; + lVar25 = (long)iVar31 * 8; + if (*(ulong *)(lVar19 + lVar25) <= + (ulong)((long)piVar26[iVar28] * *(long *)(lVar19 + (long)iVar28 * 8))) { + plVar32 = (long *)(lVar19 + lVar25); + piVar26 = piVar26 + iVar31; + do { + if (iVar31 <= iVar24) goto LAB_00321d50; + iVar3 = *piVar26; + lVar19 = *plVar32; + iVar31 = iVar31 + -1; + puVar22 = (ulong *)(plVar32 + -1); + plVar32 = plVar32 + -1; + piVar26 = piVar26 + -1; + } while (*puVar22 <= (ulong)(iVar3 * lVar19)); + } + *(uint *)in_x8 = uVar15 & 0xffffbfff; +LAB_00321d58: + if (2 < iVar14) { + *(undefined4 *)(in_x8 + 0xc) = 0xffffffff; + *(undefined4 *)(in_x8 + 8) = 0xffffffff; + } + local_1a8 = *(long *)(in_x8 + 0x38); + if (local_1a8 == 0) { + local_1d0 = *(long *)(in_x8 + 0x10); + } + else { + local_1d0 = *(long *)(local_1a8 + 0x18); + *(long *)(in_x8 + 0x10) = local_1d0; + *(long *)(in_x8 + 0x18) = local_1d0; + } + if (local_1d0 == 0) { + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + local_1b8 = 0; + local_1c0 = 0; + } + else { + piVar26 = *(int **)(in_x8 + 0x40); + plVar32 = *(long **)(in_x8 + 0x48); + iVar24 = *piVar26; + local_1b8 = *(long *)(in_x8 + 0x18) + (long)iVar24 * *plVar32; + *(long *)(in_x8 + 0x28) = local_1b8; + if (iVar24 < 1) { + *(long *)(in_x8 + 0x20) = local_1b8; + local_1c0 = local_1b8; + } + else { + local_1c0 = local_1d0 + (long)piVar26[iVar28] * plVar32[iVar28]; + *(long *)(in_x8 + 0x20) = local_1c0; + if (0 < iVar28) { + lVar19 = 0; + do { + piVar1 = piVar26 + lVar19; + plVar2 = plVar32 + lVar19; + lVar19 = lVar19 + 1; + local_1c0 = local_1c0 + (long)(*piVar1 + -1) * *plVar2; + } while ((int)lVar19 < iVar28); + *(long *)(in_x8 + 0x20) = local_1c0; + } + } + } + if (((ulong)param_1 & 0xff) != 0) { + uVar29 = *(uint *)in_x8; + local_1a0 = &local_1d8; + local_1d8 = *(undefined8 *)(in_x8 + 8); + local_198 = &local_190; + local_1c8 = *(undefined8 *)(in_x8 + 0x18); + local_1b0 = *(undefined8 *)(in_x8 + 0x30); + local_1e0 = CONCAT44(iVar14,uVar29); + local_188 = 0; + local_190 = 0; + if (local_1a8 != 0) { + piVar26 = (int *)(local_1a8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = *piVar26 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + iVar14 = *(int *)(in_x8 + 4); + } + if (iVar14 < 3) { + local_190 = **(undefined8 **)(in_x8 + 0x48); + local_188 = (*(undefined8 **)(in_x8 + 0x48))[1]; + } + else { + local_1e0 = (ulong)uVar29; + Mat::copySize((Mat *)&local_1e0,in_x8); + } + if (*(long *)(in_x8 + 0x38) != 0) { + piVar26 = (int *)(*(long *)(in_x8 + 0x38) + 0x14); + do { + iVar14 = *piVar26; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate(in_x8); + } + } + *(undefined8 *)(in_x8 + 0x38) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + if (0 < *(int *)(in_x8 + 4)) { + iVar14 = 0; + puVar17 = *(undefined4 **)(in_x8 + 0x40); + do { + *puVar17 = 0; + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < *(int *)(in_x8 + 4)); + } + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x2010000); + Mat::copyTo((Mat *)&local_1e0,(_OutputArray *)&local_1f8); + if (local_1a8 != 0) { + piVar26 = (int *)(local_1a8 + 0x14); + do { + iVar14 = *piVar26; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar5) { + *piVar26 = iVar14 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar14 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar14 = 0; + puVar23 = local_1a0; + do { + *(undefined4 *)puVar23 = 0; + iVar14 = iVar14 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar14 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + } + /* try { // try from 00321278 to 0042129f has its CatchHandler @ 00321064 */ + return; +} + + +================================================================== + +### FUNC 00322af0 (372 bytes) name=locateROI + +/* cv::Mat::locateROI(cv::Size_&, cv::Point_&) const */ + +void __thiscall cv::Mat::locateROI(Mat *this,Size_ *param_1,Point_ *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + ulong uVar4; + undefined8 uVar5; + undefined8 uVar6; + long lVar7; + char *pcVar8; + ulong *puVar9; + ulong uVar10; + int iVar11; + long lVar12; + ulong uVar13; + int iVar14; + undefined8 local_10; + undefined8 local_8; + + iVar14 = *(int *)(this + 4); + /* try { // try from 00322b10 to 00422b13 has its CatchHandler @ 00323424 */ + if (iVar14 < 3) { + puVar9 = *(ulong **)(this + 0x48); + uVar10 = *puVar9; + if (uVar10 != 0) goto joined_r0x00322c38; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x18); + uVar6 = s_dims_<__2_&&_step[0]_>_0_0046afc0._8_8_; + uVar5 = s_dims_<__2_&&_step[0]_>_0_0046afc0._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_dims_<__2_&&_step[0]_>_0_0046afc0._16_8_; + *(undefined8 *)pcVar8 = uVar5; + *(undefined8 *)(pcVar8 + 8) = uVar6; + error(-0xd7,(String *)&local_10,"void cv::Mat::locateROI(cv::Size&, cv::Point&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x376); + String::deallocate((String *)&local_10); + iVar14 = *(int *)(this + 4); + puVar9 = *(ulong **)(this + 0x48); + uVar10 = *puVar9; +joined_r0x00322c38: + if (iVar14 < 1) { + uVar13 = 0; + uVar4 = *(long *)(this + 0x10) - *(long *)(this + 0x18); + lVar12 = *(long *)(this + 0x20) - *(long *)(this + 0x18); + } + else { + uVar4 = *(long *)(this + 0x10) - *(long *)(this + 0x18); + uVar13 = puVar9[(long)iVar14 + -1]; + lVar12 = *(long *)(this + 0x20) - *(long *)(this + 0x18); + } + if (uVar4 == 0) { + iVar11 = 0; + iVar14 = iVar11; + } + else { + iVar14 = 0; + /* try { // try from 00322b4c to 00422b4f has its CatchHandler @ 0032342c */ + if (uVar10 != 0) { + iVar14 = (int)(uVar4 / uVar10); + } + /* try { // try from 00322b54 to 00422b77 has its CatchHandler @ 00323424 */ + iVar11 = 0; + if (uVar13 != 0) { + iVar11 = (int)((uVar4 - (long)iVar14 * uVar10) / uVar13); + } + } + lVar7 = *(long *)(this + 0x50); + iVar1 = iVar11 + *(int *)(this + 0xc); + iVar3 = *(int *)(this + 8); + *(int *)param_2 = iVar11; + *(int *)(param_2 + 4) = iVar14; + iVar11 = 0; + if (uVar10 != 0) { + iVar11 = (int)((lVar12 - (long)iVar1 * uVar13) / uVar10); + } + iVar2 = iVar11 + 1; + if (iVar11 + 1 < iVar14 + iVar3) { + iVar2 = iVar14 + iVar3; + } + *(int *)(param_1 + 4) = iVar2; + iVar14 = 0; + if (uVar13 != 0) { + iVar14 = (int)((ulong)(lVar12 - (iVar2 + -1) * lVar7) / uVar13); + } + if (iVar1 <= iVar14) { + iVar1 = iVar14; + } + *(int *)param_1 = iVar1; + /* try { // try from 00322bc0 to 00422bc3 has its CatchHandler @ 003233f8 */ + /* try { // try from 00322bc8 to 00423137 has its CatchHandler @ 00323424 */ + return; +} + + +================================================================== + +### FUNC 00322c78 (516 bytes) name=adjustROI + +/* cv::Mat::adjustROI(int, int, int, int) */ + +Mat * __thiscall cv::Mat::adjustROI(Mat *this,int param_1,int param_2,int param_3,int param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + char *pcVar7; + int *piVar8; + long *plVar9; + long lVar10; + int local_18; + int local_14; + int local_10 [2]; + undefined8 local_8; + + iVar2 = *(int *)(this + 4); + if ((2 < iVar2) || (**(long **)(this + 0x48) == 0)) { + local_10[0] = 0; + local_10[1] = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)local_10,0x18); + uVar6 = s_dims_<__2_&&_step[0]_>_0_0046afc0._8_8_; + uVar5 = s_dims_<__2_&&_step[0]_>_0_0046afc0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_dims_<__2_&&_step[0]_>_0_0046afc0._16_8_; + *(undefined8 *)pcVar7 = uVar5; + *(undefined8 *)(pcVar7 + 8) = uVar6; + error(-0xd7,(String *)local_10,"cv::Mat& cv::Mat::adjustROI(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x38b); + String::deallocate((String *)local_10); + iVar2 = *(int *)(this + 4); + } + if (iVar2 < 1) { + lVar10 = 0; + } + else { + lVar10 = *(long *)(*(long *)(this + 0x48) + (long)iVar2 * 8 + -8); + } + local_10[0] = 0; + local_10[1] = 0; + local_14 = 0; + local_18 = 0; + locateROI(this,(Size_ *)&local_18,(Point_ *)local_10); + iVar3 = local_10[1] - param_1; + iVar2 = local_10[1] + *(int *)(this + 8) + param_2; + if (iVar3 < 0) { + iVar3 = 0; + } + if (local_14 < iVar2) { + iVar2 = local_14; + } + iVar4 = local_10[0] - param_3; + if (iVar4 < 0) { + iVar4 = 0; + } + iVar1 = local_10[0] + *(int *)(this + 0xc) + param_4; + piVar8 = *(int **)(this + 0x40); + if (local_18 < iVar1) { + iVar1 = local_18; + } + *(int *)(this + 8) = iVar2 - iVar3; + *(long *)(this + 0x10) = + *(long *)(this + 0x10) + + (long)(iVar3 - local_10[1]) * *(long *)(this + 0x50) + lVar10 * (iVar4 - local_10[0]); + *(int *)(this + 0xc) = iVar1 - iVar4; + *piVar8 = iVar2 - iVar3; + plVar9 = *(long **)(this + 0x48); + piVar8[1] = *(int *)(this + 0xc); + if ((lVar10 * *(int *)(this + 0xc) - *plVar9 != 0) && (*(int *)(this + 8) != 1)) { + *(uint *)this = *(uint *)this & 0xffffbfff; + return this; + } + *(uint *)this = *(uint *)this | 0x4000; + return this; +} + + +================================================================== + +### FUNC 00322e90 (1164 bytes) name=reshape + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::reshape(int, int) const */ + +void cv::Mat::reshape(int param_1,int param_2) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + undefined4 uVar11; + undefined1 uVar12; + Mat *pMVar13; + long lVar14; + undefined8 *puVar15; + void *__dest; + char *pcVar16; + undefined8 uVar17; + undefined8 *puVar18; + uint in_w2; + undefined8 uVar19; + long lVar20; + undefined8 uVar21; + long lVar22; + undefined8 uVar23; + undefined8 uVar24; + Mat *in_x8; + int iVar25; + undefined8 uVar26; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + pMVar13 = (Mat *)(ulong)(uint)param_1; + uVar2 = *(uint *)pMVar13; + uVar24 = *(undefined8 *)(pMVar13 + 0x10); + uVar26 = *(undefined8 *)(pMVar13 + 8); + uVar23 = *(undefined8 *)(pMVar13 + 0x18); + uVar21 = *(undefined8 *)(pMVar13 + 0x20); + uVar19 = *(undefined8 *)(pMVar13 + 0x28); + *(undefined8 *)in_x8 = *(undefined8 *)pMVar13; + uVar17 = *(undefined8 *)(pMVar13 + 0x30); + iVar25 = (uVar2 >> 3 & 0x1ff) + 1; + lVar14 = *(long *)(pMVar13 + 0x38); + *(undefined8 *)(in_x8 + 8) = uVar26; + *(undefined8 *)(in_x8 + 0x10) = uVar24; + *(undefined8 *)(in_x8 + 0x18) = uVar23; + *(undefined8 *)(in_x8 + 0x20) = uVar21; + *(undefined8 *)(in_x8 + 0x28) = uVar19; + *(undefined8 *)(in_x8 + 0x30) = uVar17; + *(long *)(in_x8 + 0x38) = lVar14; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (lVar14 != 0) { + piVar1 = (int *)(lVar14 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar13 + 4) < 3) { + puVar18 = *(undefined8 **)(pMVar13 + 0x48); + puVar15 = *(undefined8 **)(in_x8 + 0x48); + *puVar15 = *puVar18; + puVar15[1] = puVar18[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + copySize(in_x8,pMVar13); + if (2 < *(int *)(pMVar13 + 4)) { + if ((in_w2 == 0) && (param_2 != 0)) { + lVar14 = (long)(*(int *)(pMVar13 + 4) + -1); + lVar20 = lVar14 * 4; + iVar4 = iVar25 * *(int *)(*(long *)(pMVar13 + 0x40) + lVar20); + iVar5 = 0; + if (param_2 != 0) { + iVar5 = iVar4 / param_2; + } + if (iVar4 - iVar5 * param_2 == 0) { + uVar3 = *(uint *)in_x8; + lVar22 = *(long *)(in_x8 + 0x40); + uVar2 = (param_2 + -1) * 8; + *(uint *)in_x8 = uVar3 & 0xfffff007 | uVar2; + iVar4 = 0; + if (param_2 != 0) { + iVar4 = (iVar25 * *(int *)(lVar22 + lVar20)) / param_2; + } + *(long *)(*(long *)(in_x8 + 0x48) + lVar14 * 8) = + (long)(int)(((uVar2 & 0xff8) >> 3) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar3 & 7) << 1)) & 3)); + *(int *)(lVar22 + lVar20) = iVar4; + return; + } + } + local_50 = 0; + local_48 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_50,9); + uVar12 = LAB_0046aea8; + *puVar15 = DAT_0046aea0; + *(undefined1 *)(puVar15 + 1) = uVar12; + error(-0xd7,(String *)&local_50,"cv::Mat cv::Mat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3c9); + String::deallocate((String *)&local_50); + } + } + if (param_2 == 0) { + param_2 = iVar25; + } + iVar25 = iVar25 * *(int *)(pMVar13 + 0xc); + if (iVar25 < param_2) { +joined_r0x00323074: + if (in_w2 == 0) { + in_w2 = 0; + if (param_2 != 0) { + in_w2 = (iVar25 * *(int *)(pMVar13 + 8)) / param_2; + } + goto LAB_00322f7c; + } + } + else { + iVar4 = 0; + if (param_2 != 0) { + iVar4 = iVar25 / param_2; + } + if (iVar25 - iVar4 * param_2 != 0) goto joined_r0x00323074; +LAB_00322f7c: + if (in_w2 == 0) goto LAB_00322f80; + } + if (*(uint *)(pMVar13 + 8) != in_w2) { + uVar2 = iVar25 * *(uint *)(pMVar13 + 8); + if ((*(uint *)pMVar13 >> 0xe & 1) == 0) { + local_40 = 0; + local_38 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_40,0x48); + uVar26 = DAT_00462218; + uVar24 = DAT_00462210; + uVar23 = DAT_00462208; + uVar21 = DAT_00462200; + uVar19 = DAT_004621f8; + uVar17 = DAT_004621f0; + puVar15[8] = s_changed_00462230._0_8_; + uVar9 = _DAT_00462228; + uVar8 = DAT_00462220; + *puVar15 = uVar17; + puVar15[1] = uVar19; + puVar15[2] = uVar21; + puVar15[3] = uVar23; + puVar15[4] = uVar24; + puVar15[5] = uVar26; + puVar15[6] = uVar8; + puVar15[7] = uVar9; + error(-0xd,(String *)&local_40,"cv::Mat cv::Mat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3d8); + String::deallocate((String *)&local_40); + } + if (uVar2 < in_w2) { + local_30 = 0; + local_28 = 0; + pcVar16 = (char *)String::allocate((String *)&local_30,0x16); + uVar10 = s_Bad_new_number_of_rows_00462240._20_2_; + uVar19 = s_Bad_new_number_of_rows_00462240._8_8_; + uVar17 = s_Bad_new_number_of_rows_00462240._0_8_; + *(undefined4 *)(pcVar16 + 0x10) = s_Bad_new_number_of_rows_00462240._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar10; + *(undefined8 *)pcVar16 = uVar17; + *(undefined8 *)(pcVar16 + 8) = uVar19; + error(-0xd3,(String *)&local_30,"cv::Mat cv::Mat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3db); + String::deallocate((String *)&local_30); + } + iVar25 = 0; + if (in_w2 != 0) { + iVar25 = (int)uVar2 / (int)in_w2; + } + if (iVar25 * in_w2 != uVar2) { + local_20 = 0; + local_18 = 0; + __dest = (void *)String::allocate((String *)&local_20,0x4e); + memcpy(__dest,&DAT_00461f80,0x4e); + error(-5,(String *)&local_20,"cv::Mat cv::Mat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3e1); + String::deallocate((String *)&local_20); + } + *(uint *)(in_x8 + 8) = in_w2; + **(long **)(in_x8 + 0x48) = (long)iVar25 * (0x88442211UL >> ((*(uint *)pMVar13 & 7) << 2) & 0xf) + ; + } +LAB_00322f80: + iVar4 = 0; + if (param_2 != 0) { + iVar4 = iVar25 / param_2; + } + if (iVar4 * param_2 != iVar25) { + local_10 = 0; + local_8 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_10,0x3e); + uVar10 = DAT_00462294; + uVar11 = DAT_00462290; + uVar26 = DAT_00462280; + uVar24 = DAT_00462278; + uVar23 = DAT_00462270; + uVar21 = _LAB_00462268; + uVar19 = DAT_00462260; + uVar17 = DAT_00462258; + puVar15[6] = DAT_00462288; + *(undefined4 *)(puVar15 + 7) = uVar11; + *(undefined2 *)((long)puVar15 + 0x3c) = uVar10; + *puVar15 = uVar17; + puVar15[1] = uVar19; + puVar15[2] = uVar21; + puVar15[3] = uVar23; + puVar15[4] = uVar24; + puVar15[5] = uVar26; + error(-0xf,(String *)&local_10,"cv::Mat cv::Mat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3eb); + String::deallocate((String *)&local_10); + } + uVar3 = *(uint *)in_x8; + *(int *)(in_x8 + 0xc) = iVar4; + uVar2 = (param_2 + -1) * 8; + *(uint *)in_x8 = uVar3 & 0xfffff007 | uVar2; + *(long *)(*(long *)(in_x8 + 0x48) + 8) = + (long)(int)(((uVar2 & 0xff8) >> 3) + 1 << (ulong)((uint)(0xfa50L >> ((uVar3 & 7) << 1)) & 3)) + ; + return; +} + + +================================================================== + +### FUNC 00323390 (284 bytes) name=checkVector + +/* cv::Mat::checkVector(int, int, bool) const */ + +ulong __thiscall cv::Mat::checkVector(Mat *this,int param_1,int param_2,bool param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + ulong uVar4; + int iVar5; + long lVar6; + int *piVar7; + + uVar1 = *(uint *)this; + if (((param_2 != (uVar1 & 7)) && (0 < param_2)) || (((uVar1 & 0x4000) == 0 && (param_3)))) { + return 0xffffffff; + } + if (*(int *)(this + 4) == 2) { + iVar2 = *(int *)(this + 8); + iVar3 = *(int *)(this + 0xc); + if (((iVar2 == 1) || (iVar3 == 1)) && (iVar5 = (uVar1 >> 3 & 0x1ff) + 1, param_1 == iVar5)) { + lVar6 = (long)iVar3 * (long)iVar2; + } + else { + uVar4 = 0xffffffff; + if ((param_1 != iVar3) || ((uVar1 >> 3 & 0x1ff) != 0)) goto LAB_00323428; + iVar5 = 1; + lVar6 = (long)param_1 * (long)iVar2; + } + } + else { + uVar4 = 0xffffffff; + if ((*(int *)(this + 4) != 3) || ((uVar1 >> 3 & 0x1ff) != 0)) goto LAB_00323428; + piVar7 = *(int **)(this + 0x40); + /* catch() { ... } // from try @ 00322bc0 with catch @ 003233f8 */ + if ((piVar7[2] != param_1) || ((*piVar7 != 1 && (piVar7[1] != 1)))) goto LAB_00323428; + /* catch() { ... } // from try @ 003234c8 with catch @ 00323448 + catch() { ... } // from try @ 003235c0 with catch @ 00323448 + catch() { ... } // from try @ 00323618 with catch @ 00323448 + catch() { ... } // from try @ 0032365c with catch @ 00323448 + catch() { ... } // from try @ 0032367c with catch @ 00323448 + catch() { ... } // from try @ 00323690 with catch @ 00323448 + catch() { ... } // from try @ 003236a4 with catch @ 00323448 */ + if (((uVar1 & 0x4000) == 0) && + (*(long *)(*(long *)(this + 0x48) + 8) != + (long)piVar7[2] * *(long *)(*(long *)(this + 0x48) + 0x10))) { + return 0xffffffff; + } + iVar5 = 1; + lVar6 = (long)*piVar7 * (long)piVar7[1] * (long)piVar7[2]; + } + /* try { // try from 00323420 to 00423423 has its CatchHandler @ 003229f0 */ + /* catch() { ... } // from try @ 00322b10 with catch @ 00323424 + catch() { ... } // from try @ 00322b54 with catch @ 00323424 + catch() { ... } // from try @ 00322bc8 with catch @ 00323424 */ + uVar4 = 0; + if ((long)param_1 != 0) { + uVar4 = (ulong)(iVar5 * lVar6) / (ulong)(long)param_1; + } +LAB_00323428: + /* catch() { ... } // from try @ 00322b4c with catch @ 0032342c */ + return uVar4 & 0xffffffff; +} + + +================================================================== + +### FUNC 003234ac (4388 bytes) name=scalarToRawData + +/* cv::scalarToRawData(cv::Scalar_ const&, void*, int, int) */ + +void cv::scalarToRawData(Scalar_ *param_1,void *param_2,int param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined1 *puVar4; + undefined2 *puVar5; + int iVar6; + uint uVar7; + uint uVar8; + uint uVar9; + undefined4 *puVar10; + long lVar11; + undefined8 *puVar12; + long lVar13; + undefined1 uVar14; + undefined2 uVar15; + ulong uVar16; + undefined8 *puVar17; + uint uVar18; + uint uVar19; + undefined8 uVar20; + undefined8 local_10; + undefined8 local_8; + + uVar7 = (uint)param_3 >> 3 & 0x1ff; + uVar1 = uVar7 + 1; + /* try { // try from 003234c8 to 0042359b has its CatchHandler @ 00323448 */ + if (4 < uVar1) { + local_10 = 0; + local_8 = 0; + puVar10 = (undefined4 *)String::allocate((String *)&local_10,7); + uVar14 = DAT_0046afe6; + uVar15 = DAT_0046afe4; + *puVar10 = DAT_0046afe0; + *(undefined2 *)(puVar10 + 1) = uVar15; + *(undefined1 *)((long)puVar10 + 6) = uVar14; + /* try { // try from 003235b8 to 004235bb has its CatchHandler @ 0032366c */ + error(-0xd7,(String *)&local_10,"void cv::scalarToRawData(const Scalar&, void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x40f); + /* try { // try from 003235c0 to 004235f3 has its CatchHandler @ 00323448 */ + String::deallocate((String *)&local_10); + } + switch(param_3 & 7) { + case 0: + lVar11 = 0; + do { + lVar13 = lrint(*(double *)(param_1 + lVar11 * 8)); + uVar9 = (uint)lVar13; + if (0xff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *(char *)((long)param_2 + lVar11) = (char)uVar9; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + if ((int)uVar1 < param_4) { + uVar9 = (param_4 - uVar7) - 1; + if (((ulong)((long)param_2 + (long)(int)uVar7 + 1) < (long)param_2 + 0x10U) || (uVar9 < 0x16)) + { + /* try { // try from 003244cc to 004244cf has its CatchHandler @ 00324654 */ + puVar4 = (undefined1 *)((long)param_2 + (ulong)((param_4 + -2) - uVar7) + 1); + do { + *(undefined1 *)((long)param_2 + (long)(int)uVar1) = *(undefined1 *)param_2; + param_2 = (void *)((long)param_2 + 1); + } while (param_2 != puVar4); + } + else { + uVar18 = -(int)param_2 & 0xf; + if (uVar9 < uVar18) { + uVar18 = uVar9; + } + uVar8 = uVar1; + if (uVar18 != 0) { + *(undefined1 *)((long)param_2 + (long)(int)uVar1) = *(undefined1 *)param_2; + uVar8 = uVar7 + 2; + if (uVar18 != 1) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + /* try { // try from 00323878 to 0042387b has its CatchHandler @ 00323d28 */ + uVar8 = uVar7 + 3; + if (uVar18 != 2) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 4; + if (uVar18 != 3) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 5; + if (uVar18 != 4) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 6; + if (uVar18 != 5) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 7; + if (uVar18 != 6) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 8; + /* try { // try from 003238f4 to 004238f7 has its CatchHandler @ 00323ca0 */ + if (uVar18 != 7) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 9; + if (uVar18 != 8) { + /* try { // try from 00323914 to 00423917 has its CatchHandler @ 00323cf0 */ + /* try { // try from 0032391c to 0042391f has its CatchHandler @ 00323ca0 */ + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 10; + if (uVar18 != 9) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 0xb; + if (uVar18 != 10) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 0xc; + if (uVar18 != 0xb) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 0xd; + if (uVar18 != 0xc) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + uVar8 = uVar7 + 0xe; + if (uVar18 != 0xd) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)) + ; + uVar8 = uVar7 + 0xf; + if (uVar18 == 0xf) { + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *) + ((long)param_2 + (long)(int)(uVar8 - uVar1)); + /* try { // try from 003239ac to 004239af has its CatchHandler @ 00323d00 */ + uVar8 = uVar7 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar2 = ((uVar9 - uVar18) - 0x10 >> 4) + 1; + iVar6 = uVar2 * 0x10; + if (0xe < ((param_4 - uVar7) + -2) - uVar18) { + uVar19 = 0; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar18); + puVar17 = (undefined8 *)((long)param_2 + (ulong)uVar18 + (long)(int)uVar7 + 1); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar8 = uVar8 + iVar6; + if (iVar6 == uVar9 - uVar18) { + return; + } + } + iVar6 = uVar8 + 1; + *(undefined1 *)((long)param_2 + (long)(int)uVar8) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar8 - uVar1)); + if (iVar6 < param_4) { + /* try { // try from 00323a20 to 00423a23 has its CatchHandler @ 00323ca0 */ + iVar3 = uVar8 + 2; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar8 + 3; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar8 + 4; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar8 + 5; + /* try { // try from 00323a74 to 00423ac7 has its CatchHandler @ 003236a8 */ + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar8 + 6; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar8 + 7; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar8 + 8; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar8 + 9; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar8 + 10; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar8 + 0xb; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar8 + 0xc; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar8 + 0xd; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar8 + 0xe; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)) + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 1: + lVar11 = 0; + do { + lVar13 = lrint(*(double *)(param_1 + lVar11 * 8)); + uVar14 = (undefined1)lVar13; + if ((0xff < (int)lVar13 + 0x80U) && (uVar14 = 0x7f, (int)lVar13 < 1)) { + uVar14 = 0x80; + } + *(undefined1 *)((long)param_2 + lVar11) = uVar14; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + /* try { // try from 00323ba0 to 00423ba3 has its CatchHandler @ 00323d40 */ + if ((int)uVar1 < param_4) { + uVar9 = (param_4 - uVar7) - 1; + if (((ulong)((long)param_2 + (long)(int)uVar7 + 1) < (long)param_2 + 0x10U) || (uVar9 < 0x16)) + { + puVar4 = (undefined1 *)((long)param_2 + (ulong)((param_4 + -2) - uVar7) + 1); + do { + /* try { // try from 00324538 to 0042453b has its CatchHandler @ 0032470c */ + *(undefined1 *)((long)param_2 + (long)(int)uVar1) = *(undefined1 *)param_2; + param_2 = (void *)((long)param_2 + 1); + /* try { // try from 00324540 to 00424583 has its CatchHandler @ 003246a4 */ + } while (param_2 != puVar4); + } + else { + uVar18 = -(int)param_2 & 0xf; + uVar8 = uVar9; + if (uVar18 < uVar9) { + uVar8 = uVar18; + } + uVar18 = uVar1; + if (uVar8 != 0) { + *(undefined1 *)((long)param_2 + (long)(int)uVar1) = *(undefined1 *)param_2; + uVar18 = uVar7 + 2; + if (uVar8 != 1) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 3; + /* try { // try from 00323c0c to 00423c6f has its CatchHandler @ 00323ca0 */ + if (uVar8 != 2) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 4; + if (uVar8 != 3) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 5; + if (uVar8 != 4) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 6; + if (uVar8 != 5) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 7; + if (uVar8 != 6) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 8; + if (uVar8 != 7) { + /* try { // try from 00323c88 to 00423c9b has its CatchHandler @ 003236a8 */ + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 9; + if (uVar8 != 8) { + /* catch() { ... } // from try @ 003238f4 with catch @ 00323ca0 + catch() { ... } // from try @ 0032391c with catch @ 00323ca0 + catch() { ... } // from try @ 00323a20 with catch @ 00323ca0 + catch() { ... } // from try @ 00323c0c with catch @ 00323ca0 */ + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 10; + if (uVar8 != 9) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 0xb; + if (uVar8 != 10) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 0xc; + if (uVar8 != 0xb) { + /* try { // try from 00323cec to 00423cef has its CatchHandler @ 003236a8 */ + /* catch() { ... } // from try @ 00323914 with catch @ 00323cf0 */ + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 0xd; + if (uVar8 != 0xc) { + /* catch() { ... } // from try @ 003239ac with catch @ 00323d00 */ + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 0xe; + if (uVar8 != 0xd) { + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *) + ((long)param_2 + (long)(int)(uVar18 - uVar1)); + /* catch() { ... } // from try @ 00323878 with catch @ 00323d28 */ + uVar18 = uVar7 + 0xf; + if (uVar8 == 0xf) { + /* catch() { ... } // from try @ 00323788 with catch @ 00323d30 */ + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *) + ((long)param_2 + (long)(int)(uVar18 - uVar1)); + uVar18 = uVar7 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + /* catch() { ... } // from try @ 00323708 with catch @ 00323d40 + catch() { ... } // from try @ 00323790 with catch @ 00323d40 + catch() { ... } // from try @ 00323ba0 with catch @ 00323d40 */ + /* catch() { ... } // from try @ 00324690 with catch @ 00323d48 */ + uVar2 = ((uVar9 - uVar8) - 0x10 >> 4) + 1; + iVar6 = uVar2 * 0x10; + if (0xe < ((param_4 - uVar7) + -2) - uVar8) { + uVar19 = 0; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar8); + puVar17 = (undefined8 *)((long)param_2 + (long)(int)uVar7 + 1 + (ulong)uVar8); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar18 = uVar18 + iVar6; + if (uVar9 - uVar8 == iVar6) { + return; + } + } + iVar6 = uVar18 + 1; + *(undefined1 *)((long)param_2 + (long)(int)uVar18) = + *(undefined1 *)((long)param_2 + (long)(int)(uVar18 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar18 + 2; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar18 + 3; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar18 + 4; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar18 + 5; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar18 + 6; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar18 + 7; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + /* try { // try from 00323e38 to 00423e83 has its CatchHandler @ 003246a4 */ + if (iVar6 < param_4) { + iVar3 = uVar18 + 8; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar18 + 9; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar18 + 10; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar18 + 0xb; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + iVar3 = uVar18 + 0xc; + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + iVar6 = uVar18 + 0xd; + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)); + if (iVar6 < param_4) { + /* try { // try from 00323ecc to 00423ecf has its CatchHandler @ 003246ac */ + iVar3 = uVar18 + 0xe; + /* try { // try from 00323ed4 to 00423f57 has its CatchHandler @ 003246a4 */ + *(undefined1 *)((long)param_2 + (long)iVar6) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar6 - uVar1)); + if (iVar3 < param_4) { + *(undefined1 *)((long)param_2 + (long)iVar3) = + *(undefined1 *)((long)param_2 + (long)(int)(iVar3 - uVar1)) + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 2: + lVar11 = 0; + do { + lVar13 = lrint(*(double *)(param_1 + lVar11 * 8)); + uVar9 = (uint)lVar13; + if (0xffff < uVar9) { + uVar9 = -(uint)(0 < (int)uVar9); + } + *(short *)((long)param_2 + lVar11 * 2) = (short)uVar9; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + if ((int)uVar1 < param_4) { + lVar11 = ((long)(int)uVar7 + 9) * 2; + uVar9 = (param_4 - uVar7) - 1; + if (((ulong)((long)param_2 + lVar11 + -0x10) < (long)param_2 + 0x10U) || (uVar9 < 0xf)) { + puVar5 = (undefined2 *)((long)param_2 + ((ulong)((param_4 + -2) - uVar7) + 1) * 2); + do { + *(undefined2 *)((long)param_2 + (long)(int)uVar1 * 2) = *(undefined2 *)param_2; + param_2 = (void *)((long)param_2 + 2); + } while (param_2 != puVar5); + } + else { + uVar18 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + /* try { // try from 00324190 to 00424193 has its CatchHandler @ 003246cc */ + uVar8 = uVar9; + if (uVar18 < uVar9) { + uVar8 = uVar18; + } + /* try { // try from 00324198 to 00424303 has its CatchHandler @ 003246a4 */ + uVar18 = uVar1; + if (uVar8 != 0) { + *(undefined2 *)((long)param_2 + lVar11 + -0x10) = *(undefined2 *)param_2; + uVar18 = uVar7 + 2; + if (uVar8 != 1) { + *(undefined2 *)((long)param_2 + lVar11 + -0xe) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 2) - uVar1) * 2); + uVar18 = uVar7 + 3; + if (uVar8 != 2) { + *(undefined2 *)((long)param_2 + lVar11 + -0xc) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 3) - uVar1) * 2); + uVar18 = uVar7 + 4; + if (uVar8 != 3) { + *(undefined2 *)((long)param_2 + lVar11 + -10) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 4) - uVar1) * 2); + uVar18 = uVar7 + 5; + if (uVar8 != 4) { + *(undefined2 *)((long)param_2 + lVar11 + -8) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 5) - uVar1) * 2); + uVar18 = uVar7 + 6; + if (uVar8 != 5) { + *(undefined2 *)((long)param_2 + lVar11 + -6) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 6) - uVar1) * 2); + uVar18 = uVar7 + 7; + if (uVar8 == 7) { + *(undefined2 *)((long)param_2 + lVar11 + -4) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 7) - uVar1) * 2); + uVar18 = uVar7 + 8; + } + } + } + } + } + } + } + uVar19 = 0; + uVar2 = ((uVar9 - uVar8) - 8 >> 3) + 1; + iVar6 = uVar2 * 8; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar8 * 2); + puVar17 = (undefined8 *)((long)param_2 + ((long)(int)uVar7 + 1 + (ulong)uVar8) * 2); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar18 = uVar18 + iVar6; + if (uVar9 - uVar8 != iVar6) { + uVar16 = -(ulong)(uVar18 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar18 << 1; + *(undefined2 *)((long)param_2 + uVar16) = + *(undefined2 *)((long)param_2 + (long)(int)(uVar18 - uVar1) * 2); + if ((int)(uVar18 + 1) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 2) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 1) - uVar1) * 2); + if ((int)(uVar18 + 2) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 4) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 2) - uVar1) * 2); + if ((int)(uVar18 + 3) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 6) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 3) - uVar1) * 2); + if ((int)(uVar18 + 4) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 8) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 4) - uVar1) * 2); + if ((int)(uVar18 + 5) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 10) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 5) - uVar1) * 2); + if ((int)(uVar18 + 6) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 0xc) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 6) - uVar1) * 2); + } + } + } + } + } + } + } + } + } + break; + case 3: + lVar11 = 0; + do { + lVar13 = lrint(*(double *)(param_1 + lVar11 * 8)); + uVar15 = (undefined2)lVar13; + if ((0xffff < (int)lVar13 + 0x8000U) && (uVar15 = 0x7fff, (int)lVar13 < 1)) { + uVar15 = 0x8000; + } + *(undefined2 *)((long)param_2 + lVar11 * 2) = uVar15; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + if ((int)uVar1 < param_4) { + lVar11 = ((long)(int)uVar7 + 9) * 2; + uVar9 = (param_4 - uVar7) - 1; + if (((ulong)((long)param_2 + lVar11 + -0x10) < (long)param_2 + 0x10U) || (uVar9 < 0xf)) { + puVar5 = (undefined2 *)((long)param_2 + ((ulong)((param_4 + -2) - uVar7) + 1) * 2); + do { + *(undefined2 *)((long)param_2 + (long)(int)uVar1 * 2) = *(undefined2 *)param_2; + param_2 = (void *)((long)param_2 + 2); + } while (param_2 != puVar5); + } + else { + uVar18 = -((uint)((ulong)param_2 >> 1) & 7) & 7; + uVar8 = uVar9; + if (uVar18 < uVar9) { + uVar8 = uVar18; + } + uVar18 = uVar1; + if (uVar8 != 0) { + *(undefined2 *)((long)param_2 + lVar11 + -0x10) = *(undefined2 *)param_2; + uVar18 = uVar7 + 2; + if (uVar8 != 1) { + /* try { // try from 00323fa4 to 00423fa7 has its CatchHandler @ 003246bc */ + /* try { // try from 00323fac to 004240ab has its CatchHandler @ 003246a4 */ + *(undefined2 *)((long)param_2 + lVar11 + -0xe) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 2) - uVar1) * 2); + uVar18 = uVar7 + 3; + if (uVar8 != 2) { + *(undefined2 *)((long)param_2 + lVar11 + -0xc) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 3) - uVar1) * 2); + uVar18 = uVar7 + 4; + if (uVar8 != 3) { + *(undefined2 *)((long)param_2 + lVar11 + -10) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 4) - uVar1) * 2); + uVar18 = uVar7 + 5; + if (uVar8 != 4) { + *(undefined2 *)((long)param_2 + lVar11 + -8) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 5) - uVar1) * 2); + uVar18 = uVar7 + 6; + if (uVar8 != 5) { + *(undefined2 *)((long)param_2 + lVar11 + -6) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 6) - uVar1) * 2); + uVar18 = uVar7 + 7; + if (uVar8 == 7) { + *(undefined2 *)((long)param_2 + lVar11 + -4) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar7 + 7) - uVar1) * 2); + uVar18 = uVar7 + 8; + } + } + } + } + } + } + } + uVar19 = 0; + uVar2 = ((uVar9 - uVar8) - 8 >> 3) + 1; + iVar6 = uVar2 * 8; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar8 * 2); + puVar17 = (undefined8 *)((long)param_2 + ((long)(int)uVar7 + 1 + (ulong)uVar8) * 2); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar18 = uVar18 + iVar6; + if (uVar9 - uVar8 != iVar6) { + uVar16 = -(ulong)(uVar18 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar18 << 1; + *(undefined2 *)((long)param_2 + uVar16) = + *(undefined2 *)((long)param_2 + (long)(int)(uVar18 - uVar1) * 2); + if ((int)(uVar18 + 1) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 2) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 1) - uVar1) * 2); + if ((int)(uVar18 + 2) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 4) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 2) - uVar1) * 2); + if ((int)(uVar18 + 3) < param_4) { + /* try { // try from 003240c4 to 004240c7 has its CatchHandler @ 003246dc */ + /* try { // try from 003240cc to 00424157 has its CatchHandler @ 003246a4 */ + *(undefined2 *)((long)param_2 + uVar16 + 6) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 3) - uVar1) * 2); + if ((int)(uVar18 + 4) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 8) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 4) - uVar1) * 2); + if ((int)(uVar18 + 5) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 10) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 5) - uVar1) * 2); + if ((int)(uVar18 + 6) < param_4) { + *(undefined2 *)((long)param_2 + uVar16 + 0xc) = + *(undefined2 *)((long)param_2 + (long)(int)((uVar18 + 6) - uVar1) * 2); + } + } + } + } + } + } + } + } + } + break; + case 4: + lVar11 = 0; + do { + lVar13 = lrint(*(double *)(param_1 + lVar11 * 8)); + *(int *)((long)param_2 + lVar11 * 4) = (int)lVar13; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + /* try { // try from 00324348 to 0042434b has its CatchHandler @ 00324694 */ + if ((int)uVar1 < param_4) { + /* try { // try from 00324350 to 0042437b has its CatchHandler @ 003246a4 */ + lVar11 = ((long)(int)uVar7 + 5) * 4; + uVar9 = (param_4 - uVar7) - 1; + if (((ulong)((long)param_2 + lVar11 + -0x10) < (long)param_2 + 0x10U) || (uVar9 < 0xc)) { + puVar10 = (undefined4 *)((long)param_2 + ((ulong)((param_4 + -2) - uVar7) + 1) * 4); + do { + *(undefined4 *)((long)param_2 + (long)(int)uVar1 * 4) = *(undefined4 *)param_2; + param_2 = (void *)((long)param_2 + 4); + } while (param_2 != puVar10); + } + else { + uVar18 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar8 = uVar9; + if (uVar18 < uVar9) { + uVar8 = uVar18; + } + uVar18 = uVar1; + if (uVar8 != 0) { + *(undefined4 *)((long)param_2 + lVar11 + -0x10) = *(undefined4 *)param_2; + uVar18 = uVar7 + 2; + if (uVar8 != 1) { + *(undefined4 *)((long)param_2 + lVar11 + -0xc) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar7 + 2) - uVar1) * 4); + uVar18 = uVar7 + 3; + if (uVar8 == 3) { + /* try { // try from 003243d4 to 004243d7 has its CatchHandler @ 003246ec */ + *(undefined4 *)((long)param_2 + lVar11 + -8) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar7 + 3) - uVar1) * 4); + uVar18 = uVar7 + 4; + } + } + } + /* try { // try from 003243dc to 004243ff has its CatchHandler @ 003246a4 */ + uVar19 = 0; + uVar2 = ((uVar9 - uVar8) - 4 >> 2) + 1; + iVar6 = uVar2 * 4; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar8 * 4); + puVar17 = (undefined8 *)((long)param_2 + ((long)(int)uVar7 + 1 + (ulong)uVar8) * 4); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar18 = uVar18 + iVar6; + if (uVar9 - uVar8 != iVar6) { + uVar16 = -(ulong)(uVar18 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar18 << 2; + *(undefined4 *)((long)param_2 + uVar16) = + *(undefined4 *)((long)param_2 + (long)(int)(uVar18 - uVar1) * 4); + if ((int)(uVar18 + 1) < param_4) { + /* try { // try from 00324440 to 00424443 has its CatchHandler @ 003246fc */ + /* try { // try from 00324448 to 00424483 has its CatchHandler @ 003246a4 */ + *(undefined4 *)((long)param_2 + uVar16 + 4) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar18 + 1) - uVar1) * 4); + if ((int)(uVar18 + 2) < param_4) { + *(undefined4 *)((long)param_2 + uVar16 + 8) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar18 + 2) - uVar1) * 4); + } + } + } + } + } + break; + case 5: + lVar11 = 0; + do { + *(float *)((long)param_2 + lVar11 * 4) = (float)*(double *)(param_1 + lVar11 * 8); + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + if ((int)uVar1 < param_4) { + lVar11 = ((long)(int)uVar7 + 5) * 4; + uVar9 = (param_4 - uVar7) - 1; + /* try { // try from 00323610 to 00423613 has its CatchHandler @ 00323680 */ + /* try { // try from 00323618 to 00423637 has its CatchHandler @ 00323448 */ + if (((ulong)((long)param_2 + lVar11 + -0x10) < (long)param_2 + 0x10U) || (uVar9 < 0xc)) { + puVar10 = (undefined4 *)((long)param_2 + ((ulong)((param_4 + -2) - uVar7) + 1) * 4); + do { + *(undefined4 *)((long)param_2 + (long)(int)uVar1 * 4) = *(undefined4 *)param_2; + param_2 = (void *)((long)param_2 + 4); + } while (param_2 != puVar10); + } + else { + uVar18 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar8 = uVar9; + if (uVar18 < uVar9) { + uVar8 = uVar18; + } + uVar18 = uVar1; + if (uVar8 != 0) { + *(undefined4 *)((long)param_2 + lVar11 + -0x10) = *(undefined4 *)param_2; + uVar18 = uVar7 + 2; + if (uVar8 != 1) { + /* try { // try from 00323654 to 00423657 has its CatchHandler @ 00323694 */ + /* try { // try from 0032365c to 0042365f has its CatchHandler @ 00323448 */ + *(undefined4 *)((long)param_2 + lVar11 + -0xc) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar7 + 2) - uVar1) * 4); + uVar18 = uVar7 + 3; + if (uVar8 == 3) { + /* catch() { ... } // from try @ 003235b8 with catch @ 0032366c */ + *(undefined4 *)((long)param_2 + lVar11 + -8) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar7 + 3) - uVar1) * 4); + uVar18 = uVar7 + 4; + } + } + } + /* try { // try from 0032367c to 0042367f has its CatchHandler @ 00323448 */ + /* catch() { ... } // from try @ 00323610 with catch @ 00323680 */ + uVar19 = 0; + /* try { // try from 00323690 to 00423693 has its CatchHandler @ 00323448 */ + uVar2 = ((uVar9 - uVar8) - 4 >> 2) + 1; + /* catch() { ... } // from try @ 00323654 with catch @ 00323694 */ + iVar6 = uVar2 * 4; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar8 * 4); + puVar17 = (undefined8 *)((long)param_2 + ((long)(int)uVar7 + 1 + (ulong)uVar8) * 4); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + /* try { // try from 003236a4 to 004236a7 has its CatchHandler @ 00323448 */ + /* catch() { ... } // from try @ 003236d8 with catch @ 003236a8 + catch() { ... } // from try @ 00323a74 with catch @ 003236a8 + catch() { ... } // from try @ 00323c88 with catch @ 003236a8 + catch() { ... } // from try @ 00323cec with catch @ 003236a8 */ + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + uVar18 = uVar18 + iVar6; + if (uVar9 - uVar8 != iVar6) { + uVar16 = -(ulong)(uVar18 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar18 << 2; + *(undefined4 *)((long)param_2 + uVar16) = + *(undefined4 *)((long)param_2 + (long)(int)(uVar18 - uVar1) * 4); + if ((int)(uVar18 + 1) < param_4) { + /* try { // try from 003236d8 to 004236f7 has its CatchHandler @ 003236a8 */ + *(undefined4 *)((long)param_2 + uVar16 + 4) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar18 + 1) - uVar1) * 4); + if ((int)(uVar18 + 2) < param_4) { + *(undefined4 *)((long)param_2 + uVar16 + 8) = + *(undefined4 *)((long)param_2 + (long)(int)((uVar18 + 2) - uVar1) * 4); + } + } + } + } + } + break; + case 6: + lVar11 = 0; + do { + /* try { // try from 00323708 to 0042373f has its CatchHandler @ 00323d40 */ + *(undefined8 *)((long)param_2 + lVar11 * 8) = *(undefined8 *)(param_1 + lVar11 * 8); + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)uVar1); + if ((int)uVar1 < param_4) { + lVar11 = (long)(int)uVar7 * 8 + 8; + uVar9 = (param_4 - uVar7) - 1; + if (((ulong)((long)param_2 + lVar11) < (long)param_2 + 0x10U) || (uVar9 < 0xe)) { + /* try { // try from 003244f4 to 004244f7 has its CatchHandler @ 003246a4 */ + puVar12 = (undefined8 *)((long)param_2 + ((ulong)((param_4 + -2) - uVar7) + 1) * 8); + do { + *(undefined8 *)((long)param_2 + (long)(int)uVar1 * 8) = *(undefined8 *)param_2; + param_2 = (void *)((long)param_2 + 8); + } while (param_2 != puVar12); + } + else { + uVar8 = (uint)((ulong)param_2 >> 3) & 1; + uVar18 = uVar9; + if (uVar8 < uVar9) { + uVar18 = uVar8; + } + uVar8 = uVar1; + if (uVar18 != 0) { + *(undefined8 *)((long)param_2 + lVar11) = *(undefined8 *)param_2; + uVar8 = uVar7 + 2; + } + /* try { // try from 00323788 to 0042378b has its CatchHandler @ 00323d30 */ + uVar2 = ((uVar9 - uVar18) - 2 >> 1) + 1; + uVar19 = 0; + /* try { // try from 00323790 to 004237e3 has its CatchHandler @ 00323d40 */ + iVar6 = uVar2 * 2; + puVar12 = (undefined8 *)((long)param_2 + (ulong)uVar18 * 8); + puVar17 = (undefined8 *)((long)param_2 + ((long)(int)uVar7 + 1 + (ulong)uVar18) * 8); + do { + uVar20 = *puVar12; + uVar19 = uVar19 + 1; + puVar17[1] = puVar12[1]; + *puVar17 = uVar20; + puVar12 = puVar12 + 2; + puVar17 = puVar17 + 2; + } while (uVar19 < uVar2); + iVar3 = uVar8 + iVar6; + if (uVar9 - uVar18 != iVar6) { + *(undefined8 *)((long)param_2 + (long)iVar3 * 8) = + *(undefined8 *)((long)param_2 + (long)(int)(iVar3 - uVar1) * 8); + return; + } + } + } + break; + default: + local_10 = 0; + local_8 = 0; + String::allocate((String *)&local_10,0); + error(-0xd2,(String *)&local_10,"void cv::scalarToRawData(const Scalar&, void*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x452); + String::deallocate((String *)&local_10); + } + return; +} + + +================================================================== + +### FUNC 003245f8 (12 bytes) name=kind + +/* cv::_InputArray::kind() const */ + +uint __thiscall cv::_InputArray::kind(_InputArray *this) + +{ + return *(uint *)this & 0x1f0000; +} + + +================================================================== + +### FUNC 00324604 (452 bytes) name=getGpuMat + +/* cv::_InputArray::getGpuMat() const */ + +void cv::_InputArray::getGpuMat(void) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + int iVar9; + _InputArray *in_x0; + char *pcVar10; + undefined8 uVar11; + void *__dest; + undefined4 *puVar12; + int *piVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + iVar9 = kind(in_x0); + if (iVar9 == 0x90000) { + puVar12 = *(undefined4 **)(in_x0 + 8); + uVar1 = *puVar12; + uVar2 = puVar12[1]; + uVar3 = puVar12[2]; + uVar16 = *(undefined8 *)(puVar12 + 4); + uVar15 = *(undefined8 *)(puVar12 + 6); + piVar13 = *(int **)(puVar12 + 8); + uVar14 = *(undefined8 *)(puVar12 + 10); + uVar11 = *(undefined8 *)(puVar12 + 0xc); + *(undefined8 *)(in_x8 + 0xe) = *(undefined8 *)(puVar12 + 0xe); + *in_x8 = uVar1; + in_x8[1] = uVar2; + in_x8[2] = uVar3; + /* try { // try from 0032478c to 0042483b has its CatchHandler @ 00324740 */ + *(undefined8 *)(in_x8 + 4) = uVar16; + *(undefined8 *)(in_x8 + 6) = uVar15; + *(int **)(in_x8 + 8) = piVar13; + *(undefined8 *)(in_x8 + 10) = uVar14; + *(undefined8 *)(in_x8 + 0xc) = uVar11; + if (piVar13 == (int *)0x0) { + return; + } + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = *piVar13 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + return; + } + if (iVar9 == 0x80000) { + cuda::HostMem::createGpuMatHeader(*(HostMem **)(in_x0 + 8)); + return; + } + if (iVar9 == 0x70000) { + /* catch() { ... } // from try @ 00324538 with catch @ 0032470c */ + local_10 = 0; + local_8 = 0; + /* catch() { ... } // from try @ 00324644 with catch @ 0032471c */ + __dest = (void *)String::allocate((String *)&local_10,0x4f); + /* catch() { ... } // from try @ 003245dc with catch @ 0032472c */ + memcpy(__dest,&DAT_0046afe8,0x4f); + /* catch() { ... } // from try @ 0032478c with catch @ 00324740 + catch() { ... } // from try @ 00324d74 with catch @ 00324740 + catch() { ... } // from try @ 003252a4 with catch @ 00324740 + catch() { ... } // from try @ 00325498 with catch @ 00324740 */ + error(-0xd5,(String *)&local_10,"cv::cuda::GpuMat cv::_InputArray::getGpuMat() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x592); + } + else { + if (iVar9 == 0) { + uVar11 = cuda::GpuMat::defaultAllocator(); + *in_x8 = 0; + /* catch() { ... } // from try @ 00324440 with catch @ 003246fc */ + in_x8[1] = 0; + in_x8[2] = 0; + goto LAB_003246c8; + } + /* try { // try from 00324644 to 00424647 has its CatchHandler @ 0032471c */ + local_10 = 0; + /* try { // try from 0032464c to 0042464f has its CatchHandler @ 003246a4 */ + local_8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_10,0x3e); + uVar8 = s_getGpuMat_is_available_only_for_c_0046b038._60_2_; + uVar1 = s_getGpuMat_is_available_only_for_c_0046b038._56_4_; + uVar7 = s_getGpuMat_is_available_only_for_c_0046b038._40_8_; + uVar6 = s_getGpuMat_is_available_only_for_c_0046b038._32_8_; + uVar16 = s_getGpuMat_is_available_only_for_c_0046b038._24_8_; + uVar15 = s_getGpuMat_is_available_only_for_c_0046b038._16_8_; + uVar14 = s_getGpuMat_is_available_only_for_c_0046b038._8_8_; + uVar11 = s_getGpuMat_is_available_only_for_c_0046b038._0_8_; + /* catch() { ... } // from try @ 003244cc with catch @ 00324654 */ + *(undefined8 *)(pcVar10 + 0x30) = s_getGpuMat_is_available_only_for_c_0046b038._48_8_; + /* try { // try from 00324690 to 00424693 has its CatchHandler @ 00323d48 */ + /* catch() { ... } // from try @ 00324348 with catch @ 00324694 */ + *(undefined4 *)(pcVar10 + 0x38) = uVar1; + *(undefined2 *)(pcVar10 + 0x3c) = uVar8; + *(undefined8 *)pcVar10 = uVar11; + *(undefined8 *)(pcVar10 + 8) = uVar14; + /* catch() { ... } // from try @ 00323e38 with catch @ 003246a4 + catch() { ... } // from try @ 00323ed4 with catch @ 003246a4 + catch() { ... } // from try @ 00323fac with catch @ 003246a4 + catch() { ... } // from try @ 003240cc with catch @ 003246a4 + catch() { ... } // from try @ 00324198 with catch @ 003246a4 + catch() { ... } // from try @ 00324350 with catch @ 003246a4 + catch() { ... } // from try @ 003243dc with catch @ 003246a4 + catch() { ... } // from try @ 00324448 with catch @ 003246a4 + catch() { ... } // from try @ 003244f4 with catch @ 003246a4 + catch() { ... } // from try @ 00324540 with catch @ 003246a4 + catch() { ... } // from try @ 003245e4 with catch @ 003246a4 + catch() { ... } // from try @ 0032464c with catch @ 003246a4 */ + *(undefined8 *)(pcVar10 + 0x10) = uVar15; + *(undefined8 *)(pcVar10 + 0x18) = uVar16; + *(undefined8 *)(pcVar10 + 0x20) = uVar6; + *(undefined8 *)(pcVar10 + 0x28) = uVar7; + /* catch() { ... } // from try @ 00323ecc with catch @ 003246ac */ + error(-0xd5,(String *)&local_10,"cv::cuda::GpuMat cv::_InputArray::getGpuMat() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x599); + } + String::deallocate((String *)&local_10); + uVar11 = cuda::GpuMat::defaultAllocator(); + /* catch() { ... } // from try @ 00323fa4 with catch @ 003246bc */ + *in_x8 = 0; + in_x8[1] = 0; + in_x8[2] = 0; +LAB_003246c8: + *(undefined8 *)(in_x8 + 4) = 0; + /* catch() { ... } // from try @ 00324190 with catch @ 003246cc */ + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + /* catch() { ... } // from try @ 003240c4 with catch @ 003246dc */ + *(undefined8 *)(in_x8 + 0xe) = uVar11; + /* catch() { ... } // from try @ 003243d4 with catch @ 003246ec */ + return; +} + + +================================================================== + +### FUNC 003247f0 (212 bytes) name=getOGlBuffer + +/* cv::_InputArray::getOGlBuffer() const */ + +void cv::_InputArray::getOGlBuffer(void) + +{ + int *piVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined8 uVar5; + undefined8 uVar6; + int iVar7; + _InputArray *in_x0; + char *pcVar8; + long lVar9; + long *plVar10; + long *in_x8; + undefined8 local_10; + undefined8 local_8; + + iVar7 = kind(in_x0); + if (iVar7 != 0x70000) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x12); + uVar6 = s_k____OPENGL_BUFFER_0046b078._8_8_; + uVar5 = s_k____OPENGL_BUFFER_0046b078._0_8_; + /* try { // try from 00324840 to 0042485b has its CatchHandler @ 003254a4 */ + *(undefined2 *)(pcVar8 + 0x10) = s_k____OPENGL_BUFFER_0046b078._16_2_; + *(undefined8 *)pcVar8 = uVar5; + *(undefined8 *)(pcVar8 + 8) = uVar6; + error(-0xd7,(String *)&local_10,"cv::ogl::Buffer cv::_InputArray::getOGlBuffer() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5a1); + String::deallocate((String *)&local_10); + } + plVar10 = *(long **)(in_x0 + 8); + lVar9 = *plVar10; + in_x8[1] = plVar10[1]; + *in_x8 = lVar9; + if (lVar9 != 0) { + piVar1 = (int *)(lVar9 + 8); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + lVar9 = plVar10[3]; + lVar4 = plVar10[2]; + *(undefined4 *)((long)in_x8 + 0x14) = *(undefined4 *)((long)plVar10 + 0x14); + *(int *)(in_x8 + 3) = (int)lVar9; + *(int *)(in_x8 + 2) = (int)lVar4; + return; +} + + +================================================================== + +### FUNC 003248d8 (2156 bytes) name=size + +/* cv::_InputArray::size(int) const */ + +void cv::_InputArray::size(int param_1) + +{ + uint uVar1; + int iVar2; + undefined1 uVar3; + undefined4 uVar4; + undefined2 uVar5; + int iVar6; + _InputArray *this; + undefined4 *puVar7; + ulong uVar8; + char *pcVar9; + undefined8 uVar10; + int *piVar11; + int in_w1; + undefined8 uVar12; + ulong uVar13; + undefined8 *puVar14; + long lVar15; + long lVar16; + int *in_x8; + long lVar17; + long *plVar18; + undefined8 local_10; + undefined8 local_8; + + this = (_InputArray *)(ulong)(uint)param_1; + lVar17 = (long)in_w1; + iVar6 = kind(this); + if (iVar6 == 0x10000) { + if (-1 < in_w1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5bc); + String::deallocate((String *)&local_10); + } + iVar6 = (*(int **)(*(long *)(this + 8) + 0x40))[1]; + in_x8[1] = **(int **)(*(long *)(this + 8) + 0x40); + *in_x8 = iVar6; + return; + } + if (iVar6 == 0x60000) { + if (-1 < in_w1) { + /* try { // try from 00324a74 to 00424b0b has its CatchHandler @ 0032549c */ + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5c2); + String::deallocate((String *)&local_10); + } + MatExpr::size(); + return; + } + if (iVar6 == 0xa0000) { + if (-1 < in_w1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + /* try { // try from 00324b28 to 00424b2b has its CatchHandler @ 003254bc */ + /* try { // try from 00324b30 to 00424bef has its CatchHandler @ 0032549c */ + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5c8); + String::deallocate((String *)&local_10); + } + iVar6 = (*(int **)(*(long *)(this + 8) + 0x30))[1]; + in_x8[1] = **(int **)(*(long *)(this + 8) + 0x30); + *in_x8 = iVar6; + return; + } + if (iVar6 == 0x20000) { + if (-1 < in_w1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + /* try { // try from 00324c60 to 00424c63 has its CatchHandler @ 003254b4 */ + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5ce); + String::deallocate((String *)&local_10); + } + *(undefined8 *)in_x8 = *(undefined8 *)(this + 0x10); + return; + } + if (iVar6 == 0x30000) { + if (-1 < in_w1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5d4); + String::deallocate((String *)&local_10); + } + uVar13 = (*(long **)(this + 8))[1] - **(long **)(this + 8); + if (uVar13 != (long)uVar13 >> 2) { +LAB_00324bf0: + uVar1 = *(uint *)this; + in_x8[1] = 1; + uVar8 = (ulong)(int)((uVar1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3)); + iVar6 = 0; + if (uVar8 != 0) { + iVar6 = (int)(uVar13 / uVar8); + } + *in_x8 = iVar6; + return; + } +LAB_00324e58: + *in_x8 = (int)uVar13; + in_x8[1] = 1; + return; + } + if (iVar6 == 0xc0000) { + if (-1 < in_w1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + /* try { // try from 00324d48 to 00424d4b has its CatchHandler @ 003254a4 */ + *puVar7 = DAT_0046b090; + /* try { // try from 00324d74 to 00424dc7 has its CatchHandler @ 00324740 */ + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5dd); + String::deallocate((String *)&local_10); + } + puVar14 = *(undefined8 **)(this + 8); + uVar10 = puVar14[2]; + uVar12 = *puVar14; + iVar6 = *(int *)(puVar14 + 3); + iVar2 = *(int *)(puVar14 + 1); + in_x8[1] = 1; + *in_x8 = (iVar6 + ((int)uVar10 - (int)uVar12) * 8) - iVar2; + return; + } + if (iVar6 == 0) { +LAB_00324d18: + *in_x8 = 0; + in_x8[1] = 0; + return; + } + if (iVar6 == 0x40000) { + plVar18 = *(long **)(this + 8); + lVar15 = *plVar18; + if (-1 < in_w1) { + lVar16 = lVar15; + if ((int)(plVar18[1] - lVar15 >> 3) * -0x55555555 <= in_w1) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x12); + uVar12 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar10 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar9 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar9 = uVar10; + *(undefined8 *)(pcVar9 + 8) = uVar12; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5ea); + String::deallocate((String *)&local_10); + lVar15 = *plVar18; + lVar16 = **(long **)(this + 8); + } + lVar17 = lVar17 * 0x18; + uVar13 = *(long *)(lVar15 + lVar17 + 8) - *(long *)(lVar15 + lVar17); + if (uVar13 != *(long *)(lVar16 + lVar17 + 8) - *(long *)(lVar16 + lVar17) >> 2) + goto LAB_00324bf0; + goto LAB_00324e58; + } + lVar17 = plVar18[1]; + if (lVar17 != lVar15) { + in_x8[1] = 1; + *in_x8 = (int)(lVar17 - lVar15 >> 3) * -0x55555555; + return; + } + goto LAB_00324d18; + } + if (iVar6 == 0x50000) { + plVar18 = *(long **)(this + 8); + if (-1 < in_w1) { + lVar15 = *plVar18; + if ((int)(plVar18[1] - lVar15 >> 5) * -0x55555555 <= in_w1) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x12); + uVar12 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar10 = s_i_<_(int)vv_size()_0046b098._0_8_; + /* try { // try from 00325044 to 00425047 has its CatchHandler @ 003254d0 */ + *(undefined2 *)(pcVar9 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar9 = uVar10; + *(undefined8 *)(pcVar9 + 8) = uVar12; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x5f6); + String::deallocate((String *)&local_10); + lVar15 = *plVar18; + } + piVar11 = *(int **)(lVar15 + lVar17 * 0x60 + 0x40); + iVar6 = piVar11[1]; + in_x8[1] = *piVar11; + *in_x8 = iVar6; + return; + } + lVar15 = *plVar18; + lVar17 = plVar18[1]; + if (lVar15 != lVar17) { + in_x8[1] = 1; + *in_x8 = (int)(lVar17 - lVar15 >> 5) * -0x55555555; + return; + } + goto LAB_00324d18; + } + if (iVar6 == 0xb0000) { + plVar18 = *(long **)(this + 8); + if (-1 < in_w1) { + lVar15 = *plVar18; + if ((int)(plVar18[1] - lVar15 >> 4) * -0x33333333 <= in_w1) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x12); + uVar12 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar10 = s_i_<_(int)vv_size()_0046b098._0_8_; + /* try { // try from 003250e8 to 004250eb has its CatchHandler @ 0032549c */ + *(undefined2 *)(pcVar9 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar9 = uVar10; + *(undefined8 *)(pcVar9 + 8) = uVar12; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x600); + String::deallocate((String *)&local_10); + lVar15 = *plVar18; + } + piVar11 = *(int **)(lVar15 + lVar17 * 0x50 + 0x30); + iVar6 = piVar11[1]; + in_x8[1] = *piVar11; + *in_x8 = iVar6; + return; + } + lVar15 = *plVar18; + lVar17 = plVar18[1]; + if (lVar15 != lVar17) { + in_x8[1] = 1; + *in_x8 = (int)(lVar17 - lVar15 >> 4) * -0x33333333; + return; + } + goto LAB_00324d18; + } + if (iVar6 == 0x70000) { + if (-1 < in_w1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x607); + String::deallocate((String *)&local_10); + } + iVar6 = *(int *)(*(long *)(this + 8) + 0x10); + *in_x8 = *(int *)(*(long *)(this + 8) + 0x14); + in_x8[1] = iVar6; + return; + } + if (iVar6 == 0x90000) { + if (in_w1 < 0) goto LAB_003249bc; + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x60e); + /* try { // try from 00324f80 to 00424fa3 has its CatchHandler @ 0032549c */ + } + else { + if (iVar6 != 0x80000) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x1e); + uVar5 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar4 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar12 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar10 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + /* try { // try from 00324cd4 to 00424cd7 has its CatchHandler @ 003254ac */ + *(undefined8 *)(pcVar9 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar4; + *(undefined2 *)(pcVar9 + 0x1c) = uVar5; + *(undefined8 *)pcVar9 = uVar10; + *(undefined8 *)(pcVar9 + 8) = uVar12; + error(-0xd5,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x61a); + String::deallocate((String *)&local_10); + goto LAB_00324d18; + } + if (in_w1 < 0) goto LAB_003249bc; + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar3 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar3; + error(-0xd7,(String *)&local_10,"cv::Size cv::_InputArray::size(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x615); + } + String::deallocate((String *)&local_10); +LAB_003249bc: + iVar6 = *(int *)(*(long *)(this + 8) + 4); + *in_x8 = *(int *)(*(long *)(this + 8) + 8); + in_x8[1] = iVar6; + return; + /* try { // try from 003249d0 to 004249d3 has its CatchHandler @ 003253fc */ +} + + +================================================================== + +### FUNC 00325248 (32 bytes) name=rows + +/* cv::_InputArray::rows(int) const */ + +undefined4 cv::_InputArray::rows(int param_1) + +{ + undefined4 local_4; + + size(param_1); + return local_4; +} + + +================================================================== + +### FUNC 00325268 (32 bytes) name=cols + +/* cv::_InputArray::cols(int) const */ + +undefined4 cv::_InputArray::cols(int param_1) + +{ + undefined4 local_8; + + /* try { // try from 00325268 to 0042526b has its CatchHandler @ 003254b4 */ + /* try { // try from 00325274 to 00425277 has its CatchHandler @ 003254ac */ + size(param_1); + /* try { // try from 00325280 to 00425293 has its CatchHandler @ 003254a4 */ + return local_8; +} + + +================================================================== + +### FUNC 00325288 (1632 bytes) name=sizend + +/* cv::_InputArray::sizend(int*, int) const */ + +ulong __thiscall cv::_InputArray::sizend(_InputArray *this,int *param_1,int param_2) + +{ + uint uVar1; + undefined1 uVar2; + undefined8 uVar3; + int iVar4; + ulong uVar5; + undefined4 *puVar6; + char *pcVar7; + int *piVar8; + long lVar9; + int *piVar10; + ulong uVar11; + uint uVar12; + uint uVar13; + int *piVar14; + int iVar15; + uint uVar16; + long *plVar17; + undefined8 uVar18; + int local_10 [4]; + + /* try { // try from 003252a4 to 004252a7 has its CatchHandler @ 00324740 */ + uVar5 = kind(this); + iVar4 = (int)uVar5; + if (iVar4 == 0) { + return uVar5; + } + /* try { // try from 003252b0 to 004252b3 has its CatchHandler @ 0032549c */ + if (iVar4 == 0x10000) { + if (-1 < param_2) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar6 = (undefined4 *)String::allocate((String *)local_10,5); + uVar2 = DAT_0046b094; + *puVar6 = DAT_0046b090; + *(undefined1 *)(puVar6 + 1) = uVar2; + error(-0xd7,(String *)local_10,"int cv::_InputArray::sizend(int*, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x626); + String::deallocate((String *)local_10); + } + uVar1 = *(uint *)(*(long *)(this + 8) + 4); + uVar5 = (ulong)uVar1; + if (param_1 == (int *)0x0) { + return uVar5; + } + if ((int)uVar1 < 1) { + return uVar5; + } + piVar10 = *(int **)(*(long *)(this + 8) + 0x40); + /* try { // try from 00325498 to 0042549b has its CatchHandler @ 00324740 */ + /* catch() { ... } // from try @ 003248d4 with catch @ 0032549c + catch() { ... } // from try @ 00324a74 with catch @ 0032549c + catch() { ... } // from try @ 00324b30 with catch @ 0032549c + catch() { ... } // from try @ 00324f80 with catch @ 0032549c + catch() { ... } // from try @ 003250e8 with catch @ 0032549c + catch() { ... } // from try @ 003252b0 with catch @ 0032549c + catch() { ... } // from try @ 00325398 with catch @ 0032549c */ + /* catch() { ... } // from try @ 00324840 with catch @ 003254a4 + catch() { ... } // from try @ 00324d48 with catch @ 003254a4 + catch() { ... } // from try @ 00325280 with catch @ 003254a4 */ + /* catch() { ... } // from try @ 00324cd4 with catch @ 003254ac + catch() { ... } // from try @ 00325274 with catch @ 003254ac */ + if ((piVar10 < param_1 + 4 && param_1 < piVar10 + 4) || (uVar1 < 0xc)) { + lVar9 = 0; + do { + param_1[lVar9] = piVar10[lVar9]; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar1); + return uVar5; + } + /* catch() { ... } // from try @ 00324c60 with catch @ 003254b4 + catch() { ... } // from try @ 00325268 with catch @ 003254b4 */ + uVar12 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + /* catch() { ... } // from try @ 00324b28 with catch @ 003254bc */ + if (uVar1 < uVar12) { + uVar12 = uVar1; + } + uVar16 = uVar12; + /* catch() { ... } // from try @ 00325044 with catch @ 003254d0 + catch() { ... } // from try @ 0032523c with catch @ 003254d0 */ + if ((uVar12 != 0) && (*param_1 = *piVar10, uVar12 != 1)) { + param_1[1] = piVar10[1]; + if (uVar12 == 3) { + param_1[2] = piVar10[2]; + } + else { + uVar16 = 2; + } + } + iVar15 = uVar1 - uVar12; + uVar1 = (iVar15 - 4U >> 2) + 1; + uVar13 = 0; + iVar4 = uVar1 * 4; + piVar8 = param_1 + uVar12; + piVar14 = piVar10 + uVar12; + do { + uVar18 = *(undefined8 *)piVar14; + uVar13 = uVar13 + 1; + *(undefined8 *)(piVar8 + 2) = *(undefined8 *)(piVar14 + 2); + *(undefined8 *)piVar8 = uVar18; + piVar8 = piVar8 + 4; + piVar14 = piVar14 + 4; + } while (uVar13 < uVar1); + } + else if (iVar4 == 0xa0000) { + if (-1 < param_2) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar6 = (undefined4 *)String::allocate((String *)local_10,5); + uVar2 = DAT_0046b094; + *puVar6 = DAT_0046b090; + *(undefined1 *)(puVar6 + 1) = uVar2; + error(-0xd7,(String *)local_10,"int cv::_InputArray::sizend(int*, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x62f); + String::deallocate((String *)local_10); + } + uVar1 = *(uint *)(*(long *)(this + 8) + 4); + uVar5 = (ulong)uVar1; + if (param_1 == (int *)0x0) { + return uVar5; + } + if ((int)uVar1 < 1) { + return uVar5; + } + piVar10 = *(int **)(*(long *)(this + 8) + 0x30); + if ((piVar10 < param_1 + 4 && param_1 < piVar10 + 4) || (uVar1 < 0xc)) { + lVar9 = 0; + do { + param_1[lVar9] = piVar10[lVar9]; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar1); + return uVar5; + } + uVar12 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar13 = uVar1; + if (uVar12 < uVar1) { + uVar13 = uVar12; + } + uVar16 = uVar13; + if ((uVar13 != 0) && (*param_1 = *piVar10, uVar13 != 1)) { + param_1[1] = piVar10[1]; + if (uVar13 == 3) { + param_1[2] = piVar10[2]; + } + else { + uVar16 = 2; + } + } + iVar15 = uVar1 - uVar13; + uVar1 = (iVar15 - 4U >> 2) + 1; + uVar12 = 0; + iVar4 = uVar1 * 4; + piVar8 = param_1 + uVar13; + piVar14 = piVar10 + uVar13; + do { + uVar18 = *(undefined8 *)piVar14; + uVar12 = uVar12 + 1; + *(undefined8 *)(piVar8 + 2) = *(undefined8 *)(piVar14 + 2); + *(undefined8 *)piVar8 = uVar18; + piVar8 = piVar8 + 4; + piVar14 = piVar14 + 4; + } while (uVar12 < uVar1); + } + else { + /* try { // try from 003252bc to 004252bf has its CatchHandler @ 003253fc */ + if ((iVar4 == 0x50000) && (-1 < param_2)) { + plVar17 = *(long **)(this + 8); + lVar9 = *plVar17; + if ((int)(plVar17[1] - lVar9 >> 5) * -0x55555555 <= param_2) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + /* try { // try from 003257ac to 00425d3b has its CatchHandler @ 003262b0 */ + pcVar7 = (char *)String::allocate((String *)local_10,0x12); + uVar3 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar18 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar7 = uVar18; + *(undefined8 *)(pcVar7 + 8) = uVar3; + error(-0xd7,(String *)local_10,"int cv::_InputArray::sizend(int*, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x639); + String::deallocate((String *)local_10); + lVar9 = *plVar17; + } + lVar9 = lVar9 + (long)param_2 * 0x60; + uVar1 = *(uint *)(lVar9 + 4); + uVar5 = (ulong)uVar1; + if (param_1 == (int *)0x0) { + return uVar5; + } + if ((int)uVar1 < 1) { + return uVar5; + } + piVar10 = *(int **)(lVar9 + 0x40); + if ((piVar10 < param_1 + 4 && param_1 < piVar10 + 4) || (uVar1 < 0xc)) { + lVar9 = 0; + do { + param_1[lVar9] = piVar10[lVar9]; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar1); + return uVar5; + } + uVar12 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar13 = uVar1; + if (uVar12 < uVar1) { + uVar13 = uVar12; + } + uVar16 = uVar13; + if ((uVar13 != 0) && (*param_1 = *piVar10, uVar13 != 1)) { + param_1[1] = piVar10[1]; + if (uVar13 == 3) { + param_1[2] = piVar10[2]; + } + else { + uVar16 = 2; + } + } + iVar15 = uVar1 - uVar13; + uVar1 = (iVar15 - 4U >> 2) + 1; + /* try { // try from 00325398 to 004253df has its CatchHandler @ 0032549c */ + uVar12 = 0; + iVar4 = uVar1 * 4; + piVar8 = param_1 + uVar13; + piVar14 = piVar10 + uVar13; + do { + uVar18 = *(undefined8 *)piVar14; + uVar12 = uVar12 + 1; + *(undefined8 *)(piVar8 + 2) = *(undefined8 *)(piVar14 + 2); + *(undefined8 *)piVar8 = uVar18; + piVar8 = piVar8 + 4; + piVar14 = piVar14 + 4; + } while (uVar12 < uVar1); + } + else { + if ((iVar4 != 0xb0000) || (param_2 < 0)) { + size((int)this); + if (param_1 != (int *)0x0) { + *param_1 = local_10[1]; + param_1[1] = local_10[0]; + } + return 2; + } + plVar17 = *(long **)(this + 8); + lVar9 = *plVar17; + if ((int)(plVar17[1] - lVar9 >> 4) * -0x33333333 <= param_2) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar7 = (char *)String::allocate((String *)local_10,0x12); + uVar3 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar18 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar7 = uVar18; + *(undefined8 *)(pcVar7 + 8) = uVar3; + error(-0xd7,(String *)local_10,"int cv::_InputArray::sizend(int*, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x643); + String::deallocate((String *)local_10); + lVar9 = *plVar17; + } + lVar9 = lVar9 + (long)param_2 * 0x50; + uVar1 = *(uint *)(lVar9 + 4); + uVar5 = (ulong)uVar1; + if (param_1 == (int *)0x0) { + return uVar5; + } + if ((int)uVar1 < 1) { + return uVar5; + } + piVar10 = *(int **)(lVar9 + 0x30); + if ((piVar10 < param_1 + 4 && param_1 < piVar10 + 4) || (uVar1 < 0xc)) { + lVar9 = 0; + do { + param_1[lVar9] = piVar10[lVar9]; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar1); + return uVar5; + } + uVar12 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + /* catch() { ... } // from try @ 003255fc with catch @ 003255b0 + catch() { ... } // from try @ 00326080 with catch @ 003255b0 + catch() { ... } // from try @ 00326380 with catch @ 003255b0 */ + uVar13 = uVar1; + if (uVar12 < uVar1) { + uVar13 = uVar12; + } + uVar16 = uVar13; + if ((uVar13 != 0) && (*param_1 = *piVar10, uVar13 != 1)) { + param_1[1] = piVar10[1]; + if (uVar13 == 3) { + param_1[2] = piVar10[2]; + } + else { + uVar16 = 2; + } + } + iVar15 = uVar1 - uVar13; + /* try { // try from 003255fc to 004255ff has its CatchHandler @ 003255b0 */ + uVar1 = (iVar15 - 4U >> 2) + 1; + uVar12 = 0; + iVar4 = uVar1 * 4; + piVar8 = param_1 + uVar13; + piVar14 = piVar10 + uVar13; + do { + uVar18 = *(undefined8 *)piVar14; + uVar12 = uVar12 + 1; + /* try { // try from 00325618 to 0042561b has its CatchHandler @ 00326384 */ + *(undefined8 *)(piVar8 + 2) = *(undefined8 *)(piVar14 + 2); + *(undefined8 *)piVar8 = uVar18; + piVar8 = piVar8 + 4; + piVar14 = piVar14 + 4; + } while (uVar12 < uVar1); + } + } + uVar16 = uVar16 + iVar4; + if (iVar15 != iVar4) { + uVar11 = -(ulong)(uVar16 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar16 << 2; + *(undefined4 *)((long)param_1 + uVar11) = *(undefined4 *)((long)piVar10 + uVar11); + if (((int)(uVar16 + 1) < (int)uVar5) && + (*(undefined4 *)((long)param_1 + uVar11 + 4) = *(undefined4 *)((long)piVar10 + uVar11 + 4), + (int)(uVar16 + 2) < (int)uVar5)) { + *(undefined4 *)((long)param_1 + uVar11 + 8) = *(undefined4 *)((long)piVar10 + uVar11 + 8); + } + } + /* catch() { ... } // from try @ 003249d0 with catch @ 003253fc + catch() { ... } // from try @ 003252bc with catch @ 003253fc */ + return uVar5; +} + + +================================================================== + +### FUNC 00325938 (1528 bytes) name=dims + +/* cv::_InputArray::dims(int) const */ + +ulong __thiscall cv::_InputArray::dims(_InputArray *this,int param_1) + +{ + undefined1 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + int iVar6; + ulong uVar7; + undefined4 *puVar8; + char *pcVar9; + long lVar10; + long *plVar11; + undefined8 local_10; + undefined8 local_8; + + uVar7 = kind(this); + iVar6 = (int)uVar7; + if (iVar6 == 0x10000) { + if (param_1 < 0) goto LAB_00325a70; + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x680); + } + else { + if (iVar6 == 0x60000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x686); + String::deallocate((String *)&local_10); + } + return (ulong)*(uint *)(*(long *)(this + 8) + 0x14); + } + if (iVar6 != 0xa0000) { + if (iVar6 == 0x20000) { + if (param_1 < 0) { + return 2; + } + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x692); + } + else { + if ((iVar6 != 0xc0000) && (iVar6 != 0x30000)) { + if (iVar6 == 0) { + return uVar7; + } + if (iVar6 == 0x40000) { + if (-1 < param_1) { + if (param_1 < (int)((*(long **)(this + 8))[1] - **(long **)(this + 8) >> 3) * + -0x55555555) { + return 2; + } + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x12); + uVar3 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar2 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar9 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar9 = uVar2; + *(undefined8 *)(pcVar9 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6a4); + goto LAB_00325bb4; + } + } + else if (iVar6 == 0x50000) { + plVar11 = *(long **)(this + 8); + if (-1 < param_1) { + lVar10 = *plVar11; + if ((int)(plVar11[1] - lVar10 >> 5) * -0x55555555 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x12); + uVar3 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar2 = s_i_<_(int)vv_size()_0046b098._0_8_; + /* try { // try from 00325e84 to 00425e87 has its CatchHandler @ 00326438 */ + *(undefined2 *)(pcVar9 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar9 = uVar2; + *(undefined8 *)(pcVar9 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6ad); + String::deallocate((String *)&local_10); + lVar10 = *plVar11; + } + return (ulong)*(uint *)(lVar10 + (long)param_1 * 0x60 + 4); + } + } + else { + if (iVar6 != 0xb0000) { + if (iVar6 == 0x70000) { + if (param_1 < 0) { + return 2; + } + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6be); + /* try { // try from 00325d94 to 00425d97 has its CatchHandler @ 0032641c */ + } + else if (iVar6 == 0x90000) { + if (param_1 < 0) { + return 2; + } + /* try { // try from 00325e10 to 00425e13 has its CatchHandler @ 00326430 */ + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6c4); + } + else { + if (iVar6 != 0x80000) { + /* try { // try from 00325d9c to 00425d9f has its CatchHandler @ 003262b0 */ + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x1e); + uVar5 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar4 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar3 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar2 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar4; + *(undefined2 *)(pcVar9 + 0x1c) = uVar5; + *(undefined8 *)pcVar9 = uVar2; + *(undefined8 *)(pcVar9 + 8) = uVar3; + error(-0xd5,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6ce); + String::deallocate((String *)&local_10); + return 0; + } + if (param_1 < 0) { + return 2; + } + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6ca); + } + goto LAB_00325bb4; + } + plVar11 = *(long **)(this + 8); + if (-1 < param_1) { + lVar10 = *plVar11; + if ((int)(plVar11[1] - lVar10 >> 4) * -0x33333333 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x12); + uVar3 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar2 = s_i_<_(int)vv_size()_0046b098._0_8_; + /* try { // try from 00325ef8 to 00425efb has its CatchHandler @ 00326440 */ + *(undefined2 *)(pcVar9 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar9 = uVar2; + *(undefined8 *)(pcVar9 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6b7); + String::deallocate((String *)&local_10); + lVar10 = *plVar11; + } + return (ulong)*(uint *)(lVar10 + (long)param_1 * 0x50 + 4); + } + } + return 1; + } + if (param_1 < 0) { + return 2; + } + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x698); + } +LAB_00325bb4: + String::deallocate((String *)&local_10); + return 2; + } + if (param_1 < 0) goto LAB_00325a70; + local_10 = 0; + local_8 = 0; + puVar8 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar8 = DAT_0046b090; + *(undefined1 *)(puVar8 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::dims(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x68c); + } + String::deallocate((String *)&local_10); +LAB_00325a70: + return (ulong)*(uint *)(*(long *)(this + 8) + 4); +} + + +================================================================== + +### FUNC 00326020 (764 bytes) name=sameSize + +/* cv::_InputArray::sameSize(cv::_InputArray const&) const */ + +bool __thiscall cv::_InputArray::sameSize(_InputArray *this,_InputArray *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + long lVar5; + int *piVar6; + int *piVar7; + int local_8; + int local_4; + + iVar2 = kind(this); + iVar3 = kind(param_1); + if (iVar2 == 0x10000) { + /* try { // try from 00326104 to 00426113 has its CatchHandler @ 003263d4 */ + lVar5 = *(long *)(this + 8); + if (iVar3 == 0x10000) { + /* try { // try from 00326218 to 0042621b has its CatchHandler @ 00326384 */ + piVar6 = *(int **)(lVar5 + 0x40); + piVar7 = *(int **)(*(long *)(param_1 + 8) + 0x40); + iVar2 = piVar6[-1]; + /* try { // try from 00326224 to 00426227 has its CatchHandler @ 00326440 */ + if (iVar2 != piVar7[-1]) { + return false; + } + /* try { // try from 00326230 to 00426233 has its CatchHandler @ 003263c4 */ + if (iVar2 != 2) { + /* try { // try from 0032623c to 0042623f has its CatchHandler @ 00326430 */ + if (iVar2 < 1) { + return true; + } + /* try { // try from 00326248 to 0042624b has its CatchHandler @ 003262b0 */ + if (*piVar6 != *piVar7) { + return false; + } + piVar1 = piVar6 + (iVar2 - 1); + /* try { // try from 00326260 to 00426263 has its CatchHandler @ 003262b0 */ + /* try { // try from 00326254 to 00426257 has its CatchHandler @ 003263f8 */ + do { + piVar7 = piVar7 + 1; + /* try { // try from 00326278 to 0042627b has its CatchHandler @ 003263f8 */ + if (piVar6 == piVar1) { + return true; + } + piVar6 = piVar6 + 1; + /* try { // try from 0032626c to 0042626f has its CatchHandler @ 003263d4 */ + } while (*piVar6 == *piVar7); + return false; + } +LAB_003262f4: + if (*piVar6 == *piVar7) { + return piVar6[1] == piVar7[1]; + } + return false; + } + if (iVar3 == 0xa0000) { + piVar6 = *(int **)(lVar5 + 0x40); + piVar7 = *(int **)(*(long *)(param_1 + 8) + 0x30); + iVar2 = piVar6[-1]; + if (iVar2 != piVar7[-1]) { + return false; + } + if (iVar2 != 2) { + if (iVar2 < 1) { + return true; + } + /* catch() { ... } // from try @ 003257ac with catch @ 003262b0 + catch() { ... } // from try @ 00325d9c with catch @ 003262b0 + catch() { ... } // from try @ 00326248 with catch @ 003262b0 + catch() { ... } // from try @ 00326260 with catch @ 003262b0 */ + if (*piVar6 != *piVar7) { + return false; + } + piVar1 = piVar6 + (iVar2 - 1); + do { + piVar7 = piVar7 + 1; + if (piVar6 == piVar1) { + return true; + } + piVar6 = piVar6 + 1; + } while (*piVar6 == *piVar7); + return false; + } + goto LAB_003262f4; + } + /* try { // try from 00326120 to 00426133 has its CatchHandler @ 003263f8 */ + if (2 < *(int *)(lVar5 + 4)) { + return false; + } + iVar2 = (*(int **)(lVar5 + 0x40))[1]; + iVar3 = **(int **)(lVar5 + 0x40); + } + else { + if (iVar2 == 0xa0000) { + lVar5 = *(long *)(this + 8); + if (iVar3 == 0x10000) { + piVar6 = *(int **)(lVar5 + 0x30); + piVar7 = *(int **)(*(long *)(param_1 + 8) + 0x40); + /* try { // try from 00326140 to 00426143 has its CatchHandler @ 003263d4 */ + iVar2 = piVar6[-1]; + if (iVar2 != piVar7[-1]) { + return false; + } + /* try { // try from 00326154 to 00426157 has its CatchHandler @ 003263cc */ + if (iVar2 != 2) { + if (iVar2 < 1) { + return true; + } + if (*piVar6 != *piVar7) { + return false; + } + piVar1 = piVar6 + (iVar2 - 1); + do { + piVar7 = piVar7 + 1; + if (piVar6 == piVar1) { + return true; + } + piVar6 = piVar6 + 1; + } while (*piVar6 == *piVar7); + return false; + } + goto LAB_003262f4; + } + if (iVar3 == 0xa0000) { + piVar6 = *(int **)(lVar5 + 0x30); + piVar7 = *(int **)(*(long *)(param_1 + 8) + 0x30); + iVar2 = piVar6[-1]; + if (iVar2 != piVar7[-1]) { + return false; + } + if (iVar2 != 2) { + if (iVar2 < 1) { + return true; + } + if (*piVar6 != *piVar7) { + return false; + } + piVar1 = piVar6 + (iVar2 - 1); + do { + piVar7 = piVar7 + 1; + if (piVar6 == piVar1) { + return true; + } + piVar6 = piVar6 + 1; + /* try { // try from 00326200 to 00426203 has its CatchHandler @ 00326438 */ + } while (*piVar6 == *piVar7); + return false; + } + goto LAB_003262f4; + } + if (2 < *(int *)(lVar5 + 4)) { + return false; + } + iVar2 = (*(int **)(lVar5 + 0x30))[1]; + iVar3 = **(int **)(lVar5 + 0x30); + iVar4 = dims(param_1,-1); + goto joined_r0x003260d0; + } + /* try { // try from 00326054 to 00426057 has its CatchHandler @ 00326384 */ + size((int)this); + iVar2 = local_8; + iVar3 = local_4; + } + iVar4 = dims(param_1,-1); +joined_r0x003260d0: + if (2 < iVar4) { + /* try { // try from 00326080 to 004260d3 has its CatchHandler @ 003255b0 */ + return false; + } + size((int)param_1); + if (local_8 == iVar2) { + return local_4 == iVar3; + } + return false; +} + + +================================================================== + +### FUNC 0032631c (928 bytes) name=total + +/* cv::_InputArray::total(int) const */ + +long __thiscall cv::_InputArray::total(_InputArray *this,int param_1) + +{ + long lVar1; + undefined1 uVar2; + undefined8 uVar3; + undefined8 uVar4; + int iVar5; + undefined4 *puVar6; + long lVar7; + char *pcVar8; + long lVar9; + long lVar10; + long *plVar11; + int local_10 [4]; + + iVar5 = kind(this); + if (iVar5 == 0x10000) { + /* catch() { ... } // from try @ 00325618 with catch @ 00326384 + catch() { ... } // from try @ 00326054 with catch @ 00326384 + catch() { ... } // from try @ 00326218 with catch @ 00326384 */ + if (-1 < param_1) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar6 = (undefined4 *)String::allocate((String *)local_10,5); + uVar2 = DAT_0046b094; + /* catch() { ... } // from try @ 00325f6c with catch @ 003263c4 + catch() { ... } // from try @ 00326230 with catch @ 003263c4 */ + /* catch() { ... } // from try @ 00325fe0 with catch @ 003263cc + catch() { ... } // from try @ 00326154 with catch @ 003263cc + catch() { ... } // from try @ 0032620c with catch @ 003263cc */ + *puVar6 = DAT_0046b090; + /* catch() { ... } // from try @ 00326104 with catch @ 003263d4 + catch() { ... } // from try @ 00326140 with catch @ 003263d4 + catch() { ... } // from try @ 0032626c with catch @ 003263d4 */ + *(undefined1 *)(puVar6 + 1) = uVar2; + error(-0xd7,(String *)local_10,"size_t cv::_InputArray::total(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6d8); + String::deallocate((String *)local_10); + } + lVar10 = *(long *)(this + 8); + if (2 < *(int *)(lVar10 + 4)) { + lVar7 = 1; + lVar9 = 0; + do { + lVar1 = lVar9 * 4; + lVar9 = lVar9 + 1; + lVar7 = lVar7 * *(int *)(*(long *)(lVar10 + 0x40) + lVar1); + } while ((int)lVar9 < *(int *)(lVar10 + 4)); + return lVar7; + } + } + else { + if (iVar5 != 0xa0000) { + if (iVar5 == 0x50000) { + plVar11 = *(long **)(this + 8); + if (param_1 < 0) { + return (plVar11[1] - *plVar11 >> 5) * -0x5555555555555555; + } + lVar10 = *plVar11; + if ((int)(plVar11[1] - lVar10 >> 5) * -0x55555555 <= param_1) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar8 = (char *)String::allocate((String *)local_10,0x12); + uVar4 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar3 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + error(-0xd7,(String *)local_10,"size_t cv::_InputArray::total(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6e8); + String::deallocate((String *)local_10); + lVar10 = *plVar11; + } + lVar10 = lVar10 + (long)param_1 * 0x60; + if (2 < *(int *)(lVar10 + 4)) { + lVar9 = 0; + lVar7 = 1; + do { + lVar1 = lVar9 * 4; + lVar9 = lVar9 + 1; + lVar7 = lVar7 * *(int *)(*(long *)(lVar10 + 0x40) + lVar1); + } while ((int)lVar9 < *(int *)(lVar10 + 4)); + return lVar7; + } + } + else { + if (iVar5 != 0xb0000) { + size((int)this); + /* try { // try from 00326380 to 00426383 has its CatchHandler @ 003255b0 */ + return (long)(local_10[0] * local_10[1]); + } + plVar11 = *(long **)(this + 8); + if (param_1 < 0) { + return (plVar11[1] - *plVar11 >> 4) * -0x3333333333333333; + } + lVar10 = *plVar11; + if ((int)(plVar11[1] - lVar10 >> 4) * -0x33333333 <= param_1) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar8 = (char *)String::allocate((String *)local_10,0x12); + uVar4 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar3 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + error(-0xd7,(String *)local_10,"size_t cv::_InputArray::total(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6f2); + String::deallocate((String *)local_10); + lVar10 = *plVar11; + } + lVar10 = lVar10 + (long)param_1 * 0x50; + if (2 < *(int *)(lVar10 + 4)) { + lVar9 = 0; + lVar7 = 1; + do { + lVar1 = lVar9 * 4; + lVar9 = lVar9 + 1; + lVar7 = lVar7 * *(int *)(*(long *)(lVar10 + 0x30) + lVar1); + } while ((int)lVar9 < *(int *)(lVar10 + 4)); + return lVar7; + } + } + return (long)*(int *)(lVar10 + 0xc) * (long)*(int *)(lVar10 + 8); + } + if (-1 < param_1) { + local_10[0] = 0; + local_10[1] = 0; + /* catch() { ... } // from try @ 00325d94 with catch @ 0032641c */ + local_10[2] = 0; + local_10[3] = 0; + puVar6 = (undefined4 *)String::allocate((String *)local_10,5); + uVar2 = DAT_0046b094; + /* catch() { ... } // from try @ 00325e10 with catch @ 00326430 + catch() { ... } // from try @ 0032623c with catch @ 00326430 */ + /* catch() { ... } // from try @ 00325e84 with catch @ 00326438 + catch() { ... } // from try @ 00326200 with catch @ 00326438 */ + /* catch() { ... } // from try @ 00325ef8 with catch @ 00326440 + catch() { ... } // from try @ 00326224 with catch @ 00326440 */ + *puVar6 = DAT_0046b090; + *(undefined1 *)(puVar6 + 1) = uVar2; + error(-0xd7,(String *)local_10,"size_t cv::_InputArray::total(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6de); + String::deallocate((String *)local_10); + } + lVar10 = *(long *)(this + 8); + if (2 < *(int *)(lVar10 + 4)) { + lVar7 = 1; + lVar9 = 0; + do { + lVar1 = lVar9 * 4; + lVar9 = lVar9 + 1; + lVar7 = lVar7 * *(int *)(*(long *)(lVar10 + 0x30) + lVar1); + } while ((int)lVar9 < *(int *)(lVar10 + 4)); + return lVar7; + } + } + /* catch() { ... } // from try @ 00326120 with catch @ 003263f8 + catch() { ... } // from try @ 00326254 with catch @ 003263f8 + catch() { ... } // from try @ 00326278 with catch @ 003263f8 */ + return (long)*(int *)(lVar10 + 0xc) * (long)*(int *)(lVar10 + 8); +} + + +================================================================== + +### FUNC 0032670c (896 bytes) name=type + +/* cv::_InputArray::type(int) const */ + +ulong __thiscall cv::_InputArray::type(_InputArray *this,int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + uint uVar6; + char *pcVar7; + ulong uVar8; + long lVar9; + long *plVar10; + undefined8 local_10; + undefined8 local_8; + + uVar6 = kind(this); + if ((uVar6 == 0x10000) || (uVar6 == 0xa0000)) { +LAB_0032680c: + return (ulong)(**(uint **)(this + 8) & 0xfff); + } + if (uVar6 == 0x60000) { + uVar8 = MatExpr::type(*(MatExpr **)(this + 8)); + return uVar8; + } + if (((uVar6 & 0xfffeffff) == 0x20000) || ((uVar6 & 0xfff7ffff) == 0x40000)) { + return (ulong)(*(uint *)this & 0xfff); + } + if (uVar6 == 0) { + return 0xffffffff; + } + if (uVar6 == 0xb0000) { + plVar10 = *(long **)(this + 8); + lVar9 = *plVar10; + if (lVar9 != plVar10[1]) { + if ((int)(plVar10[1] - lVar9 >> 4) * -0x33333333 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x12); + uVar2 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar1 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::type(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x714); + String::deallocate((String *)&local_10); + lVar9 = *plVar10; + } + if (param_1 < 0) { + param_1 = 0; + } + return (ulong)(*(uint *)(lVar9 + (long)param_1 * 0x50) & 0xfff); + } + uVar6 = *(uint *)this; + if ((int)uVar6 < 0) goto LAB_003268f4; + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x19); + cVar5 = s__flags___FIXED_TYPE_____0_0046b0d0[0x18]; + uVar2 = s__flags___FIXED_TYPE_____0_0046b0d0._8_8_; + uVar1 = s__flags___FIXED_TYPE_____0_0046b0d0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s__flags___FIXED_TYPE_____0_0046b0d0._16_8_; + pcVar7[0x18] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::type(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x711); + } + else { + if (uVar6 != 0x50000) { + if (uVar6 == 0x70000) { + return (ulong)*(uint *)(*(long *)(this + 8) + 0x18); + } + if ((uVar6 & 0xfffeffff) != 0x80000) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x1e); + uVar4 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar3 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar2 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar1 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar3; + *(undefined2 *)(pcVar7 + 0x1c) = uVar4; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd5,(String *)&local_10,"int cv::_InputArray::type(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x72d); + String::deallocate((String *)&local_10); + return 0; + } + goto LAB_0032680c; + } + plVar10 = *(long **)(this + 8); + lVar9 = *plVar10; + if (lVar9 != plVar10[1]) { + if ((int)(plVar10[1] - lVar9 >> 5) * -0x55555555 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x12); + uVar2 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar1 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::type(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x720); + String::deallocate((String *)&local_10); + lVar9 = *plVar10; + } + if (param_1 < 0) { + param_1 = 0; + } + return (ulong)(*(uint *)(lVar9 + (long)param_1 * 0x60) & 0xfff); + } + uVar6 = *(uint *)this; + if ((int)uVar6 < 0) goto LAB_003268f4; + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x19); + cVar5 = s__flags___FIXED_TYPE_____0_0046b0d0[0x18]; + uVar2 = s__flags___FIXED_TYPE_____0_0046b0d0._8_8_; + uVar1 = s__flags___FIXED_TYPE_____0_0046b0d0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s__flags___FIXED_TYPE_____0_0046b0d0._16_8_; + pcVar7[0x18] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"int cv::_InputArray::type(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x71d); + } + String::deallocate((String *)&local_10); + uVar6 = *(uint *)this; +LAB_003268f4: + return (ulong)(uVar6 & 0xfff); +} + + +================================================================== + +### FUNC 00326af0 (3960 bytes) name=getMat_ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::_InputArray::getMat_(int) const */ + +void cv::_InputArray::getMat_(int param_1) + +{ + int *piVar1; + uint uVar2; + int iVar3; + char cVar4; + bool bVar5; + ulong uVar6; + undefined4 uVar7; + undefined2 uVar8; + undefined1 uVar9; + undefined8 uVar10; + undefined8 uVar11; + int iVar12; + uint uVar13; + int iVar14; + _InputArray *this; + undefined4 *puVar15; + undefined8 *puVar16; + void *__dest; + char *pcVar17; + int in_w1; + uint uVar18; + undefined8 *puVar19; + ulong uVar20; + Mat *pMVar21; + uint uVar22; + long lVar23; + code *pcVar24; + undefined8 uVar25; + uint *puVar26; + undefined8 uVar27; + long lVar28; + undefined8 uVar29; + undefined8 uVar30; + Mat *in_x8; + undefined8 uVar31; + ulong uVar32; + long lVar33; + long *plVar34; + ulong uVar35; + undefined8 uVar36; + undefined4 local_70; + undefined4 local_6c; + int local_68; + int local_64; + undefined8 local_60; + undefined8 uStack_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + this = (_InputArray *)(ulong)(uint)param_1; + iVar12 = kind(this); + uVar18 = *(uint *)this; + if (iVar12 == 0x10000) { + pMVar21 = *(Mat **)(this + 8); + if (-1 < in_w1) { + local_68 = -0x80000000; + local_60 = CONCAT44(in_w1 + 1,in_w1); + local_64 = 0x7fffffff; + Mat::Mat(in_x8,pMVar21,(Range *)&local_60,(Range *)&local_68); + return; + } + uVar31 = *(undefined8 *)(pMVar21 + 0x10); + uVar30 = *(undefined8 *)(pMVar21 + 0x18); + uVar29 = *(undefined8 *)(pMVar21 + 0x20); + uVar27 = *(undefined8 *)(pMVar21 + 0x28); + uVar25 = *(undefined8 *)(pMVar21 + 0x30); + uVar36 = *(undefined8 *)(pMVar21 + 8); + lVar23 = *(long *)(pMVar21 + 0x38); + *(undefined8 *)in_x8 = *(undefined8 *)pMVar21; + *(undefined8 *)(in_x8 + 8) = uVar36; + *(undefined8 *)(in_x8 + 0x10) = uVar31; + *(undefined8 *)(in_x8 + 0x18) = uVar30; + *(undefined8 *)(in_x8 + 0x20) = uVar29; + *(undefined8 *)(in_x8 + 0x28) = uVar27; + *(undefined8 *)(in_x8 + 0x30) = uVar25; + *(long *)(in_x8 + 0x38) = lVar23; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (lVar23 != 0) { + piVar1 = (int *)(lVar23 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } +LAB_00327248: + if (*(int *)(pMVar21 + 4) < 3) { + puVar19 = *(undefined8 **)(pMVar21 + 0x48); + puVar16 = *(undefined8 **)(in_x8 + 0x48); + *puVar16 = *puVar19; + puVar16[1] = puVar19[1]; + return; + } + *(undefined4 *)(in_x8 + 4) = 0; + Mat::copySize(in_x8,pMVar21); + return; + } + if (iVar12 == 0xa0000) { + if (in_w1 < 0) { + UMat::getMat((int)*(undefined8 *)(this + 8)); + return; + } + UMat::getMat((int)*(undefined8 *)(this + 8)); + local_64 = in_w1 + 1; + local_70 = 0x80000000; + local_6c = 0x7fffffff; + local_68 = in_w1; + Mat::Mat(in_x8,(Mat *)&local_60,(Range *)&local_68,(Range *)&local_70); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar12 = 0; + puVar16 = local_20; + do { + *(undefined4 *)puVar16 = 0; + iVar12 = iVar12 + 1; + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (iVar12 < local_60._4_4_); + } +LAB_00326ddc: + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 == &local_10) { + return; + } + fastFree(local_18); + return; + } + if (iVar12 == 0x60000) { + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x472); + String::deallocate((String *)&local_60); + } + puVar16 = *(undefined8 **)(this + 8); + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + plVar34 = (long *)*puVar16; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + lVar23 = *plVar34; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined4 *)in_x8 = 0x42ff0000; + pcVar24 = *(code **)(lVar23 + 0x18); + *(undefined4 *)(in_x8 + 4) = 0; + *(undefined4 *)(in_x8 + 8) = 0; + *(undefined4 *)(in_x8 + 0xc) = 0; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + (*pcVar24)(plVar34); + return; + } + if (iVar12 == 0x20000) { + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x478); + String::deallocate((String *)&local_60); + uVar18 = *(uint *)this; + } + iVar12 = *(int *)(this + 0x10); + iVar3 = *(int *)(this + 0x14); + iVar14 = (uVar18 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar18 & 7) << 1)) & 3); + lVar28 = *(long *)(this + 8); + *(undefined4 *)(in_x8 + 4) = 2; + lVar23 = (long)iVar14 * (long)iVar12; + *(int *)(in_x8 + 0xc) = iVar12; + lVar33 = lVar28 + lVar23 * iVar3; + *(int *)(in_x8 + 8) = iVar3; + *(long *)(in_x8 + 0x10) = lVar28; + *(long *)(in_x8 + 0x18) = lVar28; + *(undefined8 *)(in_x8 + 0x30) = 0; +LAB_00327198: + *(long *)(in_x8 + 0x58) = (long)iVar14; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(uint *)in_x8 = (uVar18 & 0xfff) + 0x42ff0000 | 0x4000; + *(long *)(in_x8 + 0x50) = lVar23; + *(long *)(in_x8 + 0x28) = lVar33; + *(long *)(in_x8 + 0x20) = lVar33; + return; + } + if (iVar12 == 0x30000) { + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x47e); + String::deallocate((String *)&local_60); + uVar18 = *(uint *)this; + } + plVar34 = *(long **)(this + 8); + if (plVar34[1] != *plVar34) { + size(param_1); + iVar14 = (uVar18 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar18 & 7) << 1)) & 3); + lVar33 = *plVar34; + *(int *)(in_x8 + 0xc) = (int)local_60; + lVar23 = (long)iVar14 * (long)(int)local_60; + *(undefined4 *)(in_x8 + 4) = 2; + *(int *)(in_x8 + 8) = local_60._4_4_; + *(long *)(in_x8 + 0x10) = lVar33; + *(long *)(in_x8 + 0x18) = lVar33; + *(undefined8 *)(in_x8 + 0x30) = 0; + lVar33 = lVar33 + lVar23 * local_60._4_4_; + goto LAB_00327198; + } +LAB_00327070: + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar27 = _UNK_00327bf8; + uVar25 = _DAT_00327bf0; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 8) = uVar27; + *(undefined8 *)in_x8 = uVar25; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + return; + } + if (iVar12 == 0xc0000) { + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x487); + String::deallocate((String *)&local_60); + } + plVar34 = *(long **)(this + 8); + iVar12 = ((int)plVar34[3] + ((int)plVar34[2] - (int)*plVar34) * 8) - (int)plVar34[1]; + if (iVar12 != 0) { + local_68 = 1; + local_18 = &local_10; + local_20 = &uStack_58; + uStack_58 = _UNK_00327bf8; + local_60 = _DAT_00327bf0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + uStack_8 = 0; + local_10 = 0; + local_64 = iVar12; + Mat::create((Mat *)&local_60,2,&local_68,0); + if (0 < iVar12) { + uVar35 = 0; + do { + *(bool *)(local_50 + uVar35) = + (1L << ((uint)uVar35 & 0x3f) & *(ulong *)(*plVar34 + (uVar35 >> 6) * 8)) != 0; + uVar35 = uVar35 + 1; + } while ((int)uVar35 < iVar12); + } + *(undefined8 *)(in_x8 + 0x18) = local_48; + *(undefined8 *)(in_x8 + 0x20) = local_40; + *(undefined8 *)(in_x8 + 8) = uStack_58; + *(undefined8 *)in_x8 = local_60; + *(undefined8 *)(in_x8 + 0x28) = local_38; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(long *)(in_x8 + 0x10) = local_50; + *(undefined8 *)(in_x8 + 0x30) = local_30; + *(long *)(in_x8 + 0x38) = local_28; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (local_60._4_4_ < 3) { + puVar16 = *(undefined8 **)(in_x8 + 0x48); + *puVar16 = *local_18; + puVar16[1] = local_18[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + Mat::copySize(in_x8,(Mat *)&local_60); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar12 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar12 = 0; + puVar16 = local_20; + do { + *(undefined4 *)puVar16 = 0; + iVar12 = iVar12 + 1; + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (iVar12 < local_60._4_4_); + } + goto LAB_00326ddc; + } + goto LAB_00327070; + } + if (iVar12 == 0) goto LAB_00327070; + if (iVar12 == 0x40000) { + uVar35 = type(this,in_w1); + plVar34 = *(long **)(this + 8); + if ((in_w1 < 0) || (lVar23 = *plVar34, (int)(plVar34[1] - lVar23 >> 3) * -0x55555555 <= in_w1)) + { + local_60 = 0; + uStack_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x1c); + uVar7 = s_0_<__i_&&_i_<_(int)vv_size()_0046b188._24_4_; + uVar27 = s_0_<__i_&&_i_<_(int)vv_size()_0046b188._8_8_; + uVar25 = s_0_<__i_&&_i_<_(int)vv_size()_0046b188._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_0_<__i_&&_i_<_(int)vv_size()_0046b188._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar7; + *(undefined8 *)pcVar17 = uVar25; + *(undefined8 *)(pcVar17 + 8) = uVar27; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x49b); + String::deallocate((String *)&local_60); + lVar23 = *plVar34; + } + lVar33 = (long)in_w1 * 0x18; + if (*(long *)(lVar23 + lVar33) != *(long *)(lVar23 + lVar33 + 8)) { + size(param_1); + iVar12 = ((uint)((uVar35 & 0xffffffff) >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar35 & 7) << 1)) & 3); + lVar28 = *(long *)(lVar23 + lVar33); + *(int *)(in_x8 + 0xc) = (int)local_60; + lVar33 = (long)iVar12 * (long)(int)local_60; + *(undefined4 *)(in_x8 + 4) = 2; + lVar23 = lVar28 + lVar33 * local_60._4_4_; + *(int *)(in_x8 + 8) = local_60._4_4_; + *(long *)(in_x8 + 0x10) = lVar28; + *(long *)(in_x8 + 0x18) = lVar28; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(uint *)in_x8 = ((uint)uVar35 & 0xfff) + 0x42ff0000 | 0x4000; + *(long *)(in_x8 + 0x50) = lVar33; + *(long *)(in_x8 + 0x58) = (long)iVar12; + *(long *)(in_x8 + 0x28) = lVar23; + *(long *)(in_x8 + 0x20) = lVar23; + return; + } + goto LAB_00327070; + } + if (iVar12 == 0x50000) { + plVar34 = *(long **)(this + 8); + if ((in_w1 < 0) || (lVar23 = *plVar34, (int)(plVar34[1] - lVar23 >> 5) * -0x55555555 <= in_w1)) + { + local_60 = 0; + uStack_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x1b); + cVar4 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8[0x1a]; + uVar8 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._24_2_; + uVar27 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._8_8_; + uVar25 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._16_8_; + *(undefined2 *)(pcVar17 + 0x18) = uVar8; + pcVar17[0x1a] = cVar4; + *(undefined8 *)pcVar17 = uVar25; + *(undefined8 *)(pcVar17 + 8) = uVar27; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4a4); + String::deallocate((String *)&local_60); + lVar23 = *plVar34; + } + pMVar21 = (Mat *)(lVar23 + (long)in_w1 * 0x60); + uVar31 = *(undefined8 *)(pMVar21 + 0x10); + uVar30 = *(undefined8 *)(pMVar21 + 0x18); + uVar29 = *(undefined8 *)(pMVar21 + 0x20); + uVar27 = *(undefined8 *)(pMVar21 + 0x28); + uVar36 = *(undefined8 *)(pMVar21 + 8); + uVar25 = *(undefined8 *)(pMVar21 + 0x30); + *(undefined8 *)in_x8 = *(undefined8 *)pMVar21; + lVar23 = *(long *)(pMVar21 + 0x38); + *(undefined8 *)(in_x8 + 8) = uVar36; + *(undefined8 *)(in_x8 + 0x10) = uVar31; + *(undefined8 *)(in_x8 + 0x18) = uVar30; + *(undefined8 *)(in_x8 + 0x20) = uVar29; + *(undefined8 *)(in_x8 + 0x28) = uVar27; + *(undefined8 *)(in_x8 + 0x30) = uVar25; + *(long *)(in_x8 + 0x38) = lVar23; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (lVar23 != 0) { + piVar1 = (int *)(lVar23 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + goto LAB_00327248; + } + if (iVar12 == 0xb0000) { + plVar34 = *(long **)(this + 8); + if ((in_w1 < 0) || (lVar23 = *plVar34, (int)(plVar34[1] - lVar23 >> 4) * -0x33333333 <= in_w1)) + { + local_60 = 0; + uStack_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x1b); + cVar4 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8[0x1a]; + uVar8 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._24_2_; + uVar27 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._8_8_; + uVar25 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._16_8_; + *(undefined2 *)(pcVar17 + 0x18) = uVar8; + pcVar17[0x1a] = cVar4; + *(undefined8 *)pcVar17 = uVar25; + *(undefined8 *)(pcVar17 + 8) = uVar27; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4ac); + String::deallocate((String *)&local_60); + lVar23 = *plVar34; + } + UMat::getMat((int)lVar23 + in_w1 * 0x50); + return; + } + if (iVar12 == 0x70000) { + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4b3); + String::deallocate((String *)&local_60); + } + local_60 = 0; + uStack_58 = 0; + __dest = (void *)String::allocate((String *)&local_60,0x4b); + memcpy(__dest,"You should explicitly call mapHost/unmapHost methods for ogl::Buffer object",0x4b + ); + error(-0xd5,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4b4); +LAB_003277f8: + String::deallocate((String *)&local_60); + *(undefined4 *)(in_x8 + 4) = 0; + *(undefined4 *)(in_x8 + 8) = 0; + *(undefined4 *)in_x8 = 0x42ff0000; + *(undefined4 *)(in_x8 + 0xc) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + return; + } + if (iVar12 == 0x90000) { + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4ba); + String::deallocate((String *)&local_60); + } + local_60 = 0; + uStack_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x42); + uVar36 = s_You_should_explicitly_call_downl_0046b140._40_8_; + uVar31 = s_You_should_explicitly_call_downl_0046b140._32_8_; + uVar30 = s_You_should_explicitly_call_downl_0046b140._24_8_; + uVar29 = s_You_should_explicitly_call_downl_0046b140._16_8_; + uVar27 = s_You_should_explicitly_call_downl_0046b140._8_8_; + uVar25 = s_You_should_explicitly_call_downl_0046b140._0_8_; + *(undefined2 *)(pcVar17 + 0x40) = s_You_should_explicitly_call_downl_0046b140._64_2_; + uVar11 = s_You_should_explicitly_call_downl_0046b140._56_8_; + uVar10 = s_You_should_explicitly_call_downl_0046b140._48_8_; + *(undefined8 *)pcVar17 = uVar25; + *(undefined8 *)(pcVar17 + 8) = uVar27; + *(undefined8 *)(pcVar17 + 0x10) = uVar29; + *(undefined8 *)(pcVar17 + 0x18) = uVar30; + *(undefined8 *)(pcVar17 + 0x20) = uVar31; + *(undefined8 *)(pcVar17 + 0x28) = uVar36; + *(undefined8 *)(pcVar17 + 0x30) = uVar10; + *(undefined8 *)(pcVar17 + 0x38) = uVar11; + error(-0xd5,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4bb); + goto LAB_003277f8; + } + if (iVar12 != 0x80000) { + local_60 = 0; + uStack_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x1e); + uVar8 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar7 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar27 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar25 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar7; + *(undefined2 *)(pcVar17 + 0x1c) = uVar8; + *(undefined8 *)pcVar17 = uVar25; + *(undefined8 *)(pcVar17 + 8) = uVar27; + error(-0xd5,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4c8); + goto LAB_003277f8; + } + if (-1 < in_w1) { + local_60 = 0; + uStack_58 = 0; + puVar15 = (undefined4 *)String::allocate((String *)&local_60,5); + uVar9 = DAT_0046b094; + *puVar15 = DAT_0046b090; + *(undefined1 *)(puVar15 + 1) = uVar9; + error(-0xd7,(String *)&local_60,"cv::Mat cv::_InputArray::getMat_(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4c1); + String::deallocate((String *)&local_60); + } + puVar26 = *(uint **)(this + 8); + pMVar21 = in_x8 + 0x50; + uVar22 = *puVar26; + uVar2 = puVar26[2]; + uVar13 = puVar26[1]; + lVar23 = *(long *)(puVar26 + 6); + uVar35 = *(ulong *)(puVar26 + 4); + uVar18 = (uVar22 & 0xfff) + 0x42ff0000; + *(undefined4 *)(in_x8 + 4) = 2; + *(uint *)in_x8 = uVar18; + iVar12 = (uVar22 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar22 & 7) << 1)) & 3); + *(uint *)(in_x8 + 8) = uVar13; + *(uint *)(in_x8 + 0xc) = uVar2; + *(long *)(in_x8 + 0x10) = lVar23; + *(long *)(in_x8 + 0x18) = lVar23; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = pMVar21; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + uVar32 = (long)iVar12 * (long)(int)uVar2; + if (uVar35 == 0) { + *(uint *)in_x8 = uVar18 | 0x4000; + lVar33 = 0; + goto LAB_00326cb8; + } + uVar20 = 0x88442211UL >> ((uVar22 & 7) << 2) & 0xf; + if (uVar13 == 1) { + uVar6 = 0; + if (uVar20 != 0) { + uVar6 = uVar32 / uVar20; + } + uVar35 = uVar32; + if (uVar32 - uVar6 * uVar20 != 0) goto LAB_003279e0; +LAB_003279d4: + uVar22 = 0x4000; + } + else { + uVar6 = 0; + if (uVar20 != 0) { + uVar6 = uVar35 / uVar20; + } + if (uVar35 != uVar6 * uVar20) { +LAB_003279e0: + local_60 = 0; + uStack_58 = 0; + pcVar17 = (char *)String::allocate((String *)&local_60,0x1f); + cVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar8 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar27 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar25 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar17 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar17 + 0x18) = uVar7; + *(undefined2 *)(pcVar17 + 0x1c) = uVar8; + pcVar17[0x1e] = cVar4; + *(undefined8 *)pcVar17 = uVar25; + *(undefined8 *)(pcVar17 + 8) = uVar27; + error(-0xd,(String *)&local_60,"cv::Mat::Mat(cv::Size, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp",0x1bc + ); + String::deallocate((String *)&local_60); + uVar18 = *(uint *)in_x8; + pMVar21 = *(Mat **)(in_x8 + 0x48); + lVar23 = *(long *)(in_x8 + 0x18); + uVar13 = *(uint *)(in_x8 + 8); + } + uVar22 = 0; + if (uVar32 - uVar35 == 0) goto LAB_003279d4; + } + lVar33 = uVar32 - uVar35; + *(uint *)in_x8 = uVar22 | uVar18; + uVar32 = uVar35; +LAB_00326cb8: + *(ulong *)pMVar21 = uVar32; + *(long *)(pMVar21 + 8) = (long)iVar12; + lVar23 = lVar23 + (long)(int)uVar13 * uVar32; + *(long *)(in_x8 + 0x28) = lVar23; + *(long *)(in_x8 + 0x20) = lVar23 + lVar33; + return; +} + + +================================================================== + +### FUNC 00327c00 (1212 bytes) name=getUMat + +/* cv::_InputArray::getUMat(int) const */ + +void cv::_InputArray::getUMat(int param_1) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + char cVar5; + bool bVar6; + undefined2 uVar7; + int iVar8; + _InputArray *this; + char *pcVar9; + undefined8 *puVar10; + int in_w1; + Mat *pMVar11; + UMat *pUVar12; + long lVar13; + undefined8 *puVar14; + undefined8 uVar15; + undefined8 uVar16; + UMat *in_x8; + long *plVar17; + undefined8 uVar18; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + int local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + this = (_InputArray *)(ulong)(uint)param_1; + iVar8 = kind(this); + if (iVar8 == 0xa0000) { + pUVar12 = *(UMat **)(this + 8); + if (-1 < in_w1) { + local_68 = 0x80000000; + local_60 = CONCAT44(in_w1 + 1,in_w1); + local_64 = 0x7fffffff; + UMat::UMat(in_x8,pUVar12,(Range *)&local_60,(Range *)&local_68); + return; + } + uVar16 = *(undefined8 *)(pUVar12 + 0x10); + uVar4 = *(undefined4 *)(pUVar12 + 0x18); + lVar13 = *(long *)(pUVar12 + 0x20); + uVar15 = *(undefined8 *)(pUVar12 + 0x28); + uVar18 = *(undefined8 *)(pUVar12 + 8); + *(undefined8 *)in_x8 = *(undefined8 *)pUVar12; + *(undefined8 *)(in_x8 + 8) = uVar18; + *(undefined8 *)(in_x8 + 0x10) = uVar16; + *(undefined4 *)(in_x8 + 0x18) = uVar4; + *(long *)(in_x8 + 0x20) = lVar13; + *(undefined8 *)(in_x8 + 0x28) = uVar15; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + if (lVar13 != 0) { + piVar1 = (int *)(lVar13 + 0x10); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + } + else { + if (iVar8 != 0xb0000) { + uVar2 = *(uint *)this & 0x3000000; + if (iVar8 == 0x10000) { + if (in_w1 < 0) { + Mat::getUMat(*(Mat **)(this + 8),uVar2,0); + return; + } + local_70 = 0x80000000; + local_6c = 0x7fffffff; + local_64 = in_w1 + 1; + Mat::Mat((Mat *)&local_60,*(Mat **)(this + 8),(Range *)&local_68,(Range *)&local_70); + Mat::getUMat((Mat *)&local_60,uVar2,0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar10 = local_20; + do { + *(undefined4 *)puVar10 = 0; + iVar8 = iVar8 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar8 < local_60._4_4_); + } + } + else { + iVar8 = kind(this); + if ((iVar8 == 0x10000) && (in_w1 < 0)) { + pMVar11 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar3 = *(uint *)pMVar11; + local_50 = *(undefined8 *)(pMVar11 + 0x10); + local_60 = *(ulong *)pMVar11; + local_58 = *(undefined8 *)(pMVar11 + 8); + local_48 = *(undefined8 *)(pMVar11 + 0x18); + local_40 = *(undefined8 *)(pMVar11 + 0x20); + local_38 = *(undefined8 *)(pMVar11 + 0x28); + local_30 = *(undefined8 *)(pMVar11 + 0x30); + local_28 = *(long *)(pMVar11 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(int *)(pMVar11 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar11 + 0x48); + local_8 = (*(undefined8 **)(pMVar11 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar3; + Mat::copySize((Mat *)&local_60,pMVar11); + } + } + else { + getMat_(param_1); + } + Mat::getUMat((Mat *)&local_60,uVar2,0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar10 = local_20; + do { + *(undefined4 *)puVar10 = 0; + iVar8 = iVar8 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar8 < local_60._4_4_); + } + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 != &local_10) { + fastFree(local_18); + } + return; + } + plVar17 = *(long **)(this + 8); + if ((in_w1 < 0) || (lVar13 = *plVar17, (int)(plVar17[1] - lVar13 >> 4) * -0x33333333 <= in_w1)) + { + local_60 = 0; + local_58 = 0; + pcVar9 = (char *)String::allocate((String *)&local_60,0x1b); + cVar5 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8[0x1a]; + uVar7 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._24_2_; + uVar16 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._8_8_; + uVar15 = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_0_<__i_&&_i_<_(int)v_size()_0046b1a8._16_8_; + *(undefined2 *)(pcVar9 + 0x18) = uVar7; + pcVar9[0x1a] = cVar5; + *(undefined8 *)pcVar9 = uVar15; + *(undefined8 *)(pcVar9 + 8) = uVar16; + error(-0xd7,(String *)&local_60,"cv::UMat cv::_InputArray::getUMat(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4dc); + String::deallocate((String *)&local_60); + lVar13 = *plVar17; + } + pUVar12 = (UMat *)(lVar13 + (long)in_w1 * 0x50); + uVar16 = *(undefined8 *)(pUVar12 + 0x10); + uVar4 = *(undefined4 *)(pUVar12 + 0x18); + lVar13 = *(long *)(pUVar12 + 0x20); + uVar15 = *(undefined8 *)(pUVar12 + 0x28); + uVar18 = *(undefined8 *)(pUVar12 + 8); + *(undefined8 *)in_x8 = *(undefined8 *)pUVar12; + *(undefined8 *)(in_x8 + 8) = uVar18; + *(undefined8 *)(in_x8 + 0x10) = uVar16; + *(undefined4 *)(in_x8 + 0x18) = uVar4; + *(long *)(in_x8 + 0x20) = lVar13; + *(undefined8 *)(in_x8 + 0x28) = uVar15; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + if (lVar13 != 0) { + piVar1 = (int *)(lVar13 + 0x10); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + } + if (*(int *)(pUVar12 + 4) < 3) { + puVar14 = *(undefined8 **)(pUVar12 + 0x38); + puVar10 = *(undefined8 **)(in_x8 + 0x38); + *puVar10 = *puVar14; + puVar10[1] = puVar14[1]; + return; + } + *(undefined4 *)(in_x8 + 4) = 0; + UMat::copySize(in_x8,pUVar12); + return; +} + + +================================================================== + +### FUNC 0032811c (1028 bytes) name=insertImageCOI + +/* cv::insertImageCOI(cv::_InputArray const&, void*, int) */ + +void cv::insertImageCOI(_InputArray *param_1,void *param_2,int param_3) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + char *pcVar14; + int *piVar15; + Mat *pMVar16; + int *piVar17; + AutoBuffer *in_x5; + long local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + AutoBuffer *local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x10000) { + pMVar16 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar16; + local_bc = *(int *)(pMVar16 + 4); + local_b8 = *(int *)(pMVar16 + 8); + local_b4 = *(undefined4 *)(pMVar16 + 0xc); + local_b0 = *(undefined8 *)(pMVar16 + 0x10); + local_a8 = *(undefined8 *)(pMVar16 + 0x18); + local_a0 = *(undefined8 *)(pMVar16 + 0x20); + in_x5 = *(AutoBuffer **)(pMVar16 + 0x28); + local_90 = *(undefined8 *)(pMVar16 + 0x30); + local_88 = *(long *)(pMVar16 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar15 = (int *)(local_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar2) { + *piVar15 = *piVar15 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + local_98 = in_x5; + if (*(int *)(pMVar16 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar16 + 0x48); + local_68 = (*(undefined8 **)(pMVar16 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar16); + } + } + else { + _InputArray::getMat_((int)param_1); + } + cvarrToMat(param_2,(void *)0x0,true,true,0,in_x5); + if (param_3 < 0) { + if (((param_2 == (void *)0x0) || (*(int *)param_2 != 0x90)) || + (*(long *)((long)param_2 + 0x58) == 0)) { + local_e0 = 0; + local_d8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_e0,0x10); + uVar3 = s_CV_IS_IMAGE_arr__0046b1c8._8_8_; + *(undefined8 *)pcVar14 = s_CV_IS_IMAGE_arr__0046b1c8._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar3; + error(-0xd7,(String *)&local_e0,"void cv::insertImageCOI(cv::InputArray, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3b1); + String::deallocate((String *)&local_e0); + } + iVar13 = cvGetImageCOI(param_2); + param_3 = iVar13 - 1; + } + iVar13 = local_80[-1]; + if (iVar13 == local_20[-1]) { + if (iVar13 == 2) { + if ((*local_80 == *local_20) && (local_80[1] == local_20[1])) goto LAB_00328440; + } + else if (iVar13 < 1) { +LAB_00328440: + if (((-1 < param_3) && ((local_c0 & 7) == (local_60 & 7))) && + (param_3 <= (int)(local_60 >> 3 & 0x1ff))) goto LAB_00328210; + } + else if (*local_80 == *local_20) { + piVar15 = local_80; + piVar17 = local_20; + do { + piVar17 = piVar17 + 1; + if (piVar15 == local_80 + (iVar13 - 1)) goto LAB_00328440; + piVar15 = piVar15 + 1; + } while (*piVar15 == *piVar17); + } + } + local_d0 = 0; + local_c8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_d0,0x54); + uVar12 = s_ch_size____mat_size____ch_depth__0046b1e0._72_8_; + uVar11 = s_ch_size____mat_size____ch_depth__0046b1e0._64_8_; + uVar10 = s_ch_size____mat_size____ch_depth__0046b1e0._56_8_; + uVar9 = s_ch_size____mat_size____ch_depth__0046b1e0._48_8_; + uVar8 = s_ch_size____mat_size____ch_depth__0046b1e0._40_8_; + uVar7 = s_ch_size____mat_size____ch_depth__0046b1e0._32_8_; + uVar6 = s_ch_size____mat_size____ch_depth__0046b1e0._24_8_; + uVar5 = s_ch_size____mat_size____ch_depth__0046b1e0._16_8_; + uVar4 = s_ch_size____mat_size____ch_depth__0046b1e0._8_8_; + uVar3 = s_ch_size____mat_size____ch_depth__0046b1e0._0_8_; + *(undefined4 *)(pcVar14 + 0x50) = s_ch_size____mat_size____ch_depth__0046b1e0._80_4_; + *(undefined8 *)pcVar14 = uVar3; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + *(undefined8 *)(pcVar14 + 0x20) = uVar7; + *(undefined8 *)(pcVar14 + 0x28) = uVar8; + *(undefined8 *)(pcVar14 + 0x30) = uVar9; + *(undefined8 *)(pcVar14 + 0x38) = uVar10; + *(undefined8 *)(pcVar14 + 0x40) = uVar11; + *(undefined8 *)(pcVar14 + 0x48) = uVar12; + error(-0xd7,(String *)&local_d0,"void cv::insertImageCOI(cv::InputArray, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3b4); + String::deallocate((String *)&local_d0); +LAB_00328210: + local_e8 = (ulong)(uint)param_3 << 0x20; + mixChannels((Mat *)&local_c0,1,(Mat *)&local_60,1,(int *)&local_e8,1); + if (local_28 != 0) { + piVar15 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar15; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar2) { + *piVar15 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar15 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar15; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar2) { + *piVar15 = iVar13 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = (AutoBuffer *)0x0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + piVar15 = local_80; + do { + *piVar15 = 0; + iVar13 = iVar13 + 1; + piVar15 = piVar15 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00328590 (28 bytes) name=depth + +/* cv::_InputArray::depth(int) const */ + +uint __thiscall cv::_InputArray::depth(_InputArray *this,int param_1) + +{ + uint uVar1; + + uVar1 = type(this,param_1); + return uVar1 & 7; +} + + +================================================================== + +### FUNC 003285ac (32 bytes) name=channels + +/* cv::_InputArray::channels(int) const */ + +int __thiscall cv::_InputArray::channels(_InputArray *this,int param_1) + +{ + ulong uVar1; + + uVar1 = type(this,param_1); + return ((uint)(uVar1 >> 3) & 0x1ff) + 1; +} + + +================================================================== + +### FUNC 003285cc (556 bytes) name=empty + +/* cv::_InputArray::empty() const */ + +bool __thiscall cv::_InputArray::empty(_InputArray *this) + +{ + long lVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + bool bVar6; + uint uVar7; + char *pcVar8; + long lVar9; + long lVar10; + long *plVar11; + long lVar12; + undefined8 local_10; + undefined8 local_8; + + uVar7 = kind(this); + if (uVar7 == 0x10000) { + lVar9 = *(long *)(this + 8); + if (*(long *)(lVar9 + 0x10) == 0) { + return true; + } + if (2 < *(int *)(lVar9 + 4)) { + lVar12 = 1; + lVar10 = 0; + do { + lVar1 = lVar10 * 4; + lVar10 = lVar10 + 1; + lVar12 = lVar12 * *(int *)(*(long *)(lVar9 + 0x40) + lVar1); + } while ((int)lVar10 < *(int *)(lVar9 + 4)); + goto LAB_00328710; + } + } + else { + if (uVar7 != 0xa0000) { + if ((uVar7 & 0xfffbffff) == 0x20000) { + bVar6 = false; + } + else { + if (uVar7 == 0x30000) { +LAB_00328774: + return **(long **)(this + 8) == (*(long **)(this + 8))[1]; + } + if (uVar7 == 0xc0000) { + plVar11 = *(long **)(this + 8); + bVar6 = *plVar11 == plVar11[2] && (int)plVar11[1] == (int)plVar11[3]; + } + else { + if (uVar7 == 0) { + return true; + } + if (((uVar7 & 0xfffeffff) == 0x40000) || (uVar7 == 0xb0000)) goto LAB_00328774; + if (uVar7 == 0x70000) { + bVar6 = true; + if (*(int *)(*(long *)(this + 8) + 0x10) != 0) { + bVar6 = *(int *)(*(long *)(this + 8) + 0x14) == 0; + } + } + else if ((uVar7 & 0xfffeffff) == 0x80000) { + bVar6 = *(long *)(*(long *)(this + 8) + 0x18) == 0; + } + else { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x1e); + uVar5 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar4 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar3 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar2 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar4; + *(undefined2 *)(pcVar8 + 0x1c) = uVar5; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + error(-0xd5,(String *)&local_10,"bool cv::_InputArray::empty() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x775); + String::deallocate((String *)&local_10); + bVar6 = true; + } + } + } + return bVar6; + } + lVar9 = *(long *)(this + 8); + if (*(long *)(lVar9 + 0x20) == 0) { + return true; + } + if (2 < *(int *)(lVar9 + 4)) { + lVar12 = 1; + lVar10 = 0; + do { + lVar1 = lVar10 * 4; + lVar10 = lVar10 + 1; + lVar12 = lVar12 * *(int *)(*(long *)(lVar9 + 0x30) + lVar1); + } while ((int)lVar10 < *(int *)(lVar9 + 4)); + goto LAB_00328710; + } + } + lVar12 = (long)*(int *)(lVar9 + 0xc) * (long)*(int *)(lVar9 + 8); +LAB_00328710: + return lVar12 == 0; +} + + +================================================================== + +### FUNC 0032880c (604 bytes) name=isContinuous + +/* cv::_InputArray::isContinuous(int) const */ + +uint __thiscall cv::_InputArray::isContinuous(_InputArray *this,int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + uint uVar6; + char *pcVar7; + long lVar8; + uint uVar9; + long *plVar10; + undefined8 local_10; + undefined8 local_8; + + uVar6 = kind(this); + if ((uVar6 == 0x10000) || (uVar6 == 0xa0000)) { + uVar9 = 1; + if (param_1 < 0) { + return **(uint **)(this + 8) >> 0xe & 1; + } + } + else { + uVar9 = (uint)(uVar6 == 0x30000 || (uVar6 & 0xfff9ffff) == 0); + if (uVar9 == 0) { + if (uVar6 == 0xc0000) { + uVar9 = 1; + } + else if (uVar6 == 0x50000) { + plVar10 = *(long **)(this + 8); + lVar8 = *plVar10; + if ((ulong)((plVar10[1] - lVar8 >> 5) * -0x5555555555555555) <= (ulong)(long)param_1) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x15); + cVar5 = s__size_t_i_<_vv_size()_0046b238[0x14]; + uVar2 = s__size_t_i_<_vv_size()_0046b238._8_8_; + uVar1 = s__size_t_i_<_vv_size()_0046b238._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s__size_t_i_<_vv_size()_0046b238._16_4_; + pcVar7[0x14] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"bool cv::_InputArray::isContinuous(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x78a); + String::deallocate((String *)&local_10); + lVar8 = *plVar10; + } + uVar9 = *(uint *)(lVar8 + (long)param_1 * 0x60) >> 0xe & 1; + } + else if (uVar6 == 0xb0000) { + plVar10 = *(long **)(this + 8); + lVar8 = *plVar10; + if ((ulong)((plVar10[1] - lVar8 >> 4) * -0x3333333333333333) <= (ulong)(long)param_1) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x15); + cVar5 = s__size_t_i_<_vv_size()_0046b238[0x14]; + uVar2 = s__size_t_i_<_vv_size()_0046b238._8_8_; + uVar1 = s__size_t_i_<_vv_size()_0046b238._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s__size_t_i_<_vv_size()_0046b238._16_4_; + pcVar7[0x14] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"bool cv::_InputArray::isContinuous(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x791); + String::deallocate((String *)&local_10); + lVar8 = *plVar10; + } + uVar9 = *(uint *)(lVar8 + (long)param_1 * 0x50) >> 0xe & 1; + } + else { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x1e); + uVar4 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar3 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar2 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar1 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar7 + 0x18) = uVar3; + *(undefined2 *)(pcVar7 + 0x1c) = uVar4; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd5,(String *)&local_10,"bool cv::_InputArray::isContinuous(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x795); + String::deallocate((String *)&local_10); + } + } + } + return uVar9; +} + + +================================================================== + +### FUNC 00328aa4 (580 bytes) name=isSubmatrix + +/* cv::_InputArray::isSubmatrix(int) const */ + +uint __thiscall cv::_InputArray::isSubmatrix(_InputArray *this,int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + uint uVar4; + char *pcVar5; + long lVar6; + uint uVar7; + long *plVar8; + undefined8 local_10; + undefined8 local_8; + + uVar4 = kind(this); + if ((uVar4 == 0x10000) || (uVar4 == 0xa0000)) { + uVar7 = 0; + if (param_1 < 0) { + return **(uint **)(this + 8) >> 0xf & 1; + } + } + else { + if (uVar4 == 0x30000 || (uVar4 & 0xfff9ffff) == 0) { + return 0; + } + uVar7 = 0; + if (uVar4 != 0xc0000) { + if (uVar4 == 0x50000) { + plVar8 = *(long **)(this + 8); + lVar6 = *plVar8; + if ((ulong)((plVar8[1] - lVar6 >> 5) * -0x5555555555555555) <= (ulong)(long)param_1) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x15); + cVar3 = s__size_t_i_<_vv_size()_0046b238[0x14]; + uVar2 = s__size_t_i_<_vv_size()_0046b238._8_8_; + uVar1 = s__size_t_i_<_vv_size()_0046b238._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s__size_t_i_<_vv_size()_0046b238._16_4_; + pcVar5[0x14] = cVar3; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"bool cv::_InputArray::isSubmatrix(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7aa); + String::deallocate((String *)&local_10); + lVar6 = *plVar8; + } + uVar7 = *(uint *)(lVar6 + (long)param_1 * 0x60) >> 0xf & 1; + } + else if (uVar4 == 0xb0000) { + plVar8 = *(long **)(this + 8); + lVar6 = *plVar8; + if ((ulong)((plVar8[1] - lVar6 >> 4) * -0x3333333333333333) <= (ulong)(long)param_1) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x15); + cVar3 = s__size_t_i_<_vv_size()_0046b238[0x14]; + uVar2 = s__size_t_i_<_vv_size()_0046b238._8_8_; + uVar1 = s__size_t_i_<_vv_size()_0046b238._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s__size_t_i_<_vv_size()_0046b238._16_4_; + pcVar5[0x14] = cVar3; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"bool cv::_InputArray::isSubmatrix(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7b1); + String::deallocate((String *)&local_10); + lVar6 = *plVar8; + } + uVar7 = *(uint *)(lVar6 + (long)param_1 * 0x50) >> 0xf & 1; + } + else { + local_10 = 0; + local_8 = 0; + String::allocate((String *)&local_10,0); + error(-0xd5,(String *)&local_10,"bool cv::_InputArray::isSubmatrix(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7b5); + String::deallocate((String *)&local_10); + } + } + } + return uVar7; +} + + +================================================================== + +### FUNC 00328d24 (876 bytes) name=offset + +/* cv::_InputArray::offset(int) const */ + +long __thiscall cv::_InputArray::offset(_InputArray *this,int param_1) + +{ + undefined1 uVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + uint uVar5; + long lVar6; + undefined4 *puVar7; + char *pcVar8; + ulong uVar9; + long *plVar10; + undefined8 local_10; + undefined8 local_8; + + uVar9 = (ulong)param_1; + uVar5 = kind(this); + if (uVar5 == 0x10000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::offset(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7bf); + String::deallocate((String *)&local_10); + } + lVar6 = *(long *)(*(long *)(this + 8) + 0x10) - *(long *)(*(long *)(this + 8) + 0x18); + } + else { + if (uVar5 == 0xa0000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::offset(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7c6); + String::deallocate((String *)&local_10); + } + return *(long *)(*(long *)(this + 8) + 0x28); + } + if (((uVar5 == 0x30000) || ((uVar5 & 0xfff9ffff) == 0)) || (uVar5 == 0xc0000)) { + return 0; + } + if (uVar5 == 0x50000) { + plVar10 = *(long **)(this + 8); + if (param_1 < 0) { + lVar6 = 1; + } + else { + lVar6 = *plVar10; + if ((int)(plVar10[1] - lVar6 >> 5) * -0x55555555 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x12); + uVar3 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar2 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::offset(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7d3); + String::deallocate((String *)&local_10); + lVar6 = *plVar10; + } + lVar6 = lVar6 + uVar9 * 0x60; + lVar6 = *(long *)(lVar6 + 0x10) - *(long *)(lVar6 + 0x18); + } + } + else if (uVar5 == 0xb0000) { + plVar10 = *(long **)(this + 8); + lVar6 = *plVar10; + if ((ulong)((plVar10[1] - lVar6 >> 4) * -0x3333333333333333) <= uVar9) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x15); + cVar4 = s__size_t_i_<_vv_size()_0046b238[0x14]; + uVar3 = s__size_t_i_<_vv_size()_0046b238._8_8_; + uVar2 = s__size_t_i_<_vv_size()_0046b238._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s__size_t_i_<_vv_size()_0046b238._16_4_; + pcVar8[0x14] = cVar4; + *(undefined8 *)pcVar8 = uVar2; + *(undefined8 *)(pcVar8 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::offset(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7db); + String::deallocate((String *)&local_10); + lVar6 = *plVar10; + } + lVar6 = *(long *)(lVar6 + uVar9 * 0x50 + 0x28); + } + else if (uVar5 == 0x90000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar7 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar7 = DAT_0046b090; + *(undefined1 *)(puVar7 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::offset(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7e1); + String::deallocate((String *)&local_10); + } + lVar6 = *(long *)(*(long *)(this + 8) + 0x18) - *(long *)(*(long *)(this + 8) + 0x28); + } + else { + local_10 = 0; + local_8 = 0; + String::allocate((String *)&local_10,0); + error(-0xd5,(String *)&local_10,"size_t cv::_InputArray::offset(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7e6); + String::deallocate((String *)&local_10); + lVar6 = 0; + } + } + return lVar6; +} + + +================================================================== + +### FUNC 00329108 (852 bytes) name=step + +/* cv::_InputArray::step(int) const */ + +undefined8 __thiscall cv::_InputArray::step(_InputArray *this,int param_1) + +{ + undefined1 uVar1; + undefined8 uVar2; + char cVar3; + uint uVar4; + undefined8 uVar5; + undefined4 *puVar6; + char *pcVar7; + long lVar8; + ulong uVar9; + long *plVar10; + undefined8 local_10; + undefined8 local_8; + + uVar9 = (ulong)param_1; + uVar4 = kind(this); + if (uVar4 == 0x10000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar6 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar6 = DAT_0046b090; + *(undefined1 *)(puVar6 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::step(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7f0); + String::deallocate((String *)&local_10); + } + uVar5 = *(undefined8 *)(*(long *)(this + 8) + 0x50); + } + else { + if (uVar4 == 0xa0000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar6 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar6 = DAT_0046b090; + *(undefined1 *)(puVar6 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::step(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x7f6); + String::deallocate((String *)&local_10); + } + return *(undefined8 *)(*(long *)(this + 8) + 0x40); + } + if (((uVar4 == 0x30000) || ((uVar4 & 0xfff9ffff) == 0)) || (uVar4 == 0xc0000)) { + return 0; + } + if (uVar4 == 0x50000) { + plVar10 = *(long **)(this + 8); + if (param_1 < 0) { + uVar5 = 1; + } + else { + lVar8 = *plVar10; + if ((int)(plVar10[1] - lVar8 >> 5) * -0x55555555 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x12); + uVar2 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar5 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar7 = uVar5; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::step(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x803); + String::deallocate((String *)&local_10); + lVar8 = *plVar10; + } + uVar5 = *(undefined8 *)(lVar8 + uVar9 * 0x60 + 0x50); + } + } + else if (uVar4 == 0xb0000) { + plVar10 = *(long **)(this + 8); + lVar8 = *plVar10; + if ((ulong)((plVar10[1] - lVar8 >> 4) * -0x3333333333333333) <= uVar9) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x15); + cVar3 = s__size_t_i_<_vv_size()_0046b238[0x14]; + uVar2 = s__size_t_i_<_vv_size()_0046b238._8_8_; + uVar5 = s__size_t_i_<_vv_size()_0046b238._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s__size_t_i_<_vv_size()_0046b238._16_4_; + pcVar7[0x14] = cVar3; + *(undefined8 *)pcVar7 = uVar5; + *(undefined8 *)(pcVar7 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::step(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x80a); + String::deallocate((String *)&local_10); + lVar8 = *plVar10; + } + uVar5 = *(undefined8 *)(lVar8 + uVar9 * 0x50 + 0x40); + } + else if (uVar4 == 0x90000) { + if (-1 < param_1) { + local_10 = 0; + local_8 = 0; + puVar6 = (undefined4 *)String::allocate((String *)&local_10,5); + uVar1 = DAT_0046b094; + *puVar6 = DAT_0046b090; + *(undefined1 *)(puVar6 + 1) = uVar1; + error(-0xd7,(String *)&local_10,"size_t cv::_InputArray::step(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x810); + String::deallocate((String *)&local_10); + } + uVar5 = *(undefined8 *)(*(long *)(this + 8) + 0x10); + } + else { + local_10 = 0; + local_8 = 0; + String::allocate((String *)&local_10,0); + error(-0xd5,(String *)&local_10,"size_t cv::_InputArray::step(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x814); + String::deallocate((String *)&local_10); + uVar5 = 0; + } + } + return uVar5; +} + + +================================================================== + +### FUNC 003294d4 (12 bytes) name=fixedSize + +/* cv::_OutputArray::fixedSize() const */ + +uint __thiscall cv::_OutputArray::fixedSize(_OutputArray *this) + +{ + return *(uint *)this >> 0x1e & 1; +} + + +================================================================== + +### FUNC 003294e0 (12 bytes) name=fixedType + +/* cv::_OutputArray::fixedType() const */ + +uint __thiscall cv::_OutputArray::fixedType(_OutputArray *this) + +{ + return *(uint *)this >> 0x1f; +} + + +================================================================== + +### FUNC 003294ec (32 bytes) name=needed + +/* cv::_OutputArray::needed() const */ + +bool __thiscall cv::_OutputArray::needed(_OutputArray *this) + +{ + int iVar1; + + iVar1 = _InputArray::kind((_InputArray *)this); + return iVar1 != 0; +} + + +================================================================== + +### FUNC 0032950c (408 bytes) name=getMatRef + +/* cv::_OutputArray::getMatRef(int) const */ + +long __thiscall cv::_OutputArray::getMatRef(_OutputArray *this,int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + int iVar4; + char *pcVar5; + long lVar6; + long *plVar7; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind((_InputArray *)this); + if (-1 < param_1) { + if (iVar4 != 0x50000) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x13); + cVar3 = s_k____STD_VECTOR_MAT_0046b260[0x12]; + uVar2 = s_k____STD_VECTOR_MAT_0046b260._8_8_; + uVar1 = s_k____STD_VECTOR_MAT_0046b260._0_8_; + *(undefined2 *)(pcVar5 + 0x10) = s_k____STD_VECTOR_MAT_0046b260._16_2_; + pcVar5[0x12] = cVar3; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::Mat& cv::_OutputArray::getMatRef(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa2a); + String::deallocate((String *)&local_10); + } + plVar7 = *(long **)(this + 8); + lVar6 = *plVar7; + if ((int)(plVar7[1] - lVar6 >> 5) * -0x55555555 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x11); + uVar2 = s_i_<_(int)v_size()_0046b278._8_8_; + uVar1 = s_i_<_(int)v_size()_0046b278._0_8_; + pcVar5[0x10] = s_i_<_(int)v_size()_0046b278[0x10]; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::Mat& cv::_OutputArray::getMatRef(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa2c); + String::deallocate((String *)&local_10); + lVar6 = *plVar7; + } + return lVar6 + (long)param_1 * 0x60; + } + if (iVar4 != 0x10000) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,8); + *(undefined8 *)pcVar5 = s_k____MAT_0046b250._0_8_; + error(-0xd7,(String *)&local_10,"cv::Mat& cv::_OutputArray::getMatRef(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa25); + String::deallocate((String *)&local_10); + } + return *(long *)(this + 8); +} + + +================================================================== + +### FUNC 003296e0 (412 bytes) name=getUMatRef + +/* cv::_OutputArray::getUMatRef(int) const */ + +long __thiscall cv::_OutputArray::getUMatRef(_OutputArray *this,int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + int iVar4; + char *pcVar5; + long lVar6; + long *plVar7; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind((_InputArray *)this); + if (-1 < param_1) { + if (iVar4 != 0xb0000) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x14); + uVar2 = s_k____STD_VECTOR_UMAT_0046b2a0._8_8_; + uVar1 = s_k____STD_VECTOR_UMAT_0046b2a0._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_k____STD_VECTOR_UMAT_0046b2a0._16_4_; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::UMat& cv::_OutputArray::getUMatRef(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa3b); + String::deallocate((String *)&local_10); + } + plVar7 = *(long **)(this + 8); + lVar6 = *plVar7; + if ((int)(plVar7[1] - lVar6 >> 4) * -0x33333333 <= param_1) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x11); + uVar2 = s_i_<_(int)v_size()_0046b278._8_8_; + uVar1 = s_i_<_(int)v_size()_0046b278._0_8_; + pcVar5[0x10] = s_i_<_(int)v_size()_0046b278[0x10]; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::UMat& cv::_OutputArray::getUMatRef(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa3d); + String::deallocate((String *)&local_10); + lVar6 = *plVar7; + } + return lVar6 + (long)param_1 * 0x50; + } + if (iVar4 != 0xa0000) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,9); + cVar3 = s_k____UMAT_0046b290[8]; + *(undefined8 *)pcVar5 = s_k____UMAT_0046b290._0_8_; + pcVar5[8] = cVar3; + error(-0xd7,(String *)&local_10,"cv::UMat& cv::_OutputArray::getUMatRef(int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa36); + String::deallocate((String *)&local_10); + } + return *(long *)(this + 8); +} + + +================================================================== + +### FUNC 003298b8 (140 bytes) name=getGpuMatRef + +/* cv::_OutputArray::getGpuMatRef() const */ + +undefined8 __thiscall cv::_OutputArray::getGpuMatRef(_OutputArray *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + undefined8 local_10; + undefined8 local_8; + + iVar3 = _InputArray::kind((_InputArray *)this); + if (iVar3 != 0x90000) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x11); + uVar2 = s_k____CUDA_GPU_MAT_0046b2b8._8_8_; + uVar1 = s_k____CUDA_GPU_MAT_0046b2b8._0_8_; + pcVar4[0x10] = s_k____CUDA_GPU_MAT_0046b2b8[0x10]; + *(undefined8 *)pcVar4 = uVar1; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::cuda::GpuMat& cv::_OutputArray::getGpuMatRef() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa45); + String::deallocate((String *)&local_10); + } + return *(undefined8 *)(this + 8); +} + + +================================================================== + +### FUNC 00329958 (140 bytes) name=getOGlBufferRef + +/* cv::_OutputArray::getOGlBufferRef() const */ + +undefined8 __thiscall cv::_OutputArray::getOGlBufferRef(_OutputArray *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + undefined8 local_10; + undefined8 local_8; + + iVar3 = _InputArray::kind((_InputArray *)this); + if (iVar3 != 0x70000) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x12); + uVar2 = s_k____OPENGL_BUFFER_0046b078._8_8_; + uVar1 = s_k____OPENGL_BUFFER_0046b078._0_8_; + *(undefined2 *)(pcVar4 + 0x10) = s_k____OPENGL_BUFFER_0046b078._16_2_; + *(undefined8 *)pcVar4 = uVar1; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::ogl::Buffer& cv::_OutputArray::getOGlBufferRef() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa4c); + String::deallocate((String *)&local_10); + } + return *(undefined8 *)(this + 8); +} + + +================================================================== + +### FUNC 003299f8 (140 bytes) name=getHostMemRef + +/* cv::_OutputArray::getHostMemRef() const */ + +undefined8 __thiscall cv::_OutputArray::getHostMemRef(_OutputArray *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + undefined8 local_10; + undefined8 local_8; + + iVar3 = _InputArray::kind((_InputArray *)this); + if (iVar3 != 0x80000) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x12); + uVar2 = s_k____CUDA_HOST_MEM_0046b2d0._8_8_; + uVar1 = s_k____CUDA_HOST_MEM_0046b2d0._0_8_; + *(undefined2 *)(pcVar4 + 0x10) = s_k____CUDA_HOST_MEM_0046b2d0._16_2_; + *(undefined8 *)pcVar4 = uVar1; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"cv::cuda::HostMem& cv::_OutputArray::getHostMemRef() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa53); + String::deallocate((String *)&local_10); + } + return *(undefined8 *)(this + 8); +} + + +================================================================== + +### FUNC 00329a98 (1256 bytes) name=setTo + +/* cv::_OutputArray::setTo(cv::_InputArray const&, cv::_InputArray const&) const */ + +void __thiscall +cv::_OutputArray::setTo(_OutputArray *this,_InputArray *param_1,_InputArray *param_2) + +{ + uint uVar1; + int *piVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + uint uVar11; + int iVar12; + uint *puVar13; + ulong uVar14; + char *pcVar15; + undefined8 uVar16; + Mat *pMVar17; + undefined8 uVar18; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + uint *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar11 = _InputArray::kind((_InputArray *)this); + if (uVar11 == 0) { + return; + } + if (((uVar11 & 0xfffdffff) == 0x10000) || (uVar11 == 0x20000)) { + iVar12 = _InputArray::kind((_InputArray *)this); + if (iVar12 == 0x10000) { + pMVar17 = *(Mat **)(this + 8); + local_20 = (uint *)&local_58; + local_18 = &local_10; + uVar11 = *(uint *)pMVar17; + local_50 = *(undefined8 **)(pMVar17 + 0x10); + local_60 = *(ulong *)pMVar17; + local_58 = *(undefined8 *)(pMVar17 + 8); + local_48 = *(undefined8 *)(pMVar17 + 0x18); + local_40 = *(undefined8 *)(pMVar17 + 0x20); + local_38 = *(undefined8 *)(pMVar17 + 0x28); + local_30 = *(undefined8 *)(pMVar17 + 0x30); + local_28 = *(long *)(pMVar17 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar17 + 0x48); + local_8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar11; + Mat::copySize((Mat *)&local_60,pMVar17); + } + } + else { + _InputArray::getMat_((int)this); + } + Mat::setTo((Mat *)&local_60,param_1,param_2); + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar12 = 0; + puVar13 = local_20; + do { + *puVar13 = 0; + iVar12 = iVar12 + 1; + puVar13 = puVar13 + 1; + } while (iVar12 < local_60._4_4_); + } + goto LAB_00329bc8; + } + if (uVar11 == 0xa0000) { + UMat::setTo(*(UMat **)(this + 8),param_1,param_2); + return; + } + if (uVar11 != 0x90000) { + local_60 = 0; + local_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xd5,(String *)&local_60, + "void cv::_OutputArray::setTo(const cv::_InputArray&, const cv::_InputArray&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa6b); + String::deallocate((String *)&local_60); + return; + } + iVar12 = _InputArray::kind(param_1); + if (iVar12 == 0x10000) { + pMVar17 = *(Mat **)(param_1 + 8); + local_20 = (uint *)&local_58; + local_18 = &local_10; + uVar11 = *(uint *)pMVar17; + local_50 = *(undefined8 **)(pMVar17 + 0x10); + local_60 = *(ulong *)pMVar17; + local_58 = *(undefined8 *)(pMVar17 + 8); + local_48 = *(undefined8 *)(pMVar17 + 0x18); + local_40 = *(undefined8 *)(pMVar17 + 0x20); + local_38 = *(undefined8 *)(pMVar17 + 0x28); + local_30 = *(undefined8 *)(pMVar17 + 0x30); + local_28 = *(long *)(pMVar17 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar17 + 0x48); + local_8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar11; + Mat::copySize((Mat *)&local_60,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_1); + } + uVar14 = _InputArray::type((_InputArray *)this,-1); + _InputArray::kind(param_1); + if ((local_60._4_4_ < 3) && (((uint)local_60 >> 0xe & 1) != 0)) { + uVar11 = *local_20; + if (local_20[1] == 1) { + if (((uVar11 != 1) && + (uVar1 = ((uint)((uVar14 & 0xffffffff) >> 3) & 0x1ff) + 1, uVar11 != uVar1)) && + ((uVar11 != 4 || ((4 < uVar1 || (((uint)local_60 & 0xfff) != 6)))))) goto LAB_00329cfc; + } + else if ((uVar11 != 1) || (local_20[1] != ((uint)((uVar14 & 0xffffffff) >> 3) & 0x1ff) + 1)) + goto LAB_00329cfc; + } + else { +LAB_00329cfc: + local_a0 = 0; + local_98 = 0; + pcVar15 = (char *)String::allocate((String *)&local_a0,0x41); + uVar8 = s_checkScalar_value__type____arr_k_0046b2e8._40_8_; + uVar7 = s_checkScalar_value__type____arr_k_0046b2e8._32_8_; + uVar6 = s_checkScalar_value__type____arr_k_0046b2e8._24_8_; + uVar5 = s_checkScalar_value__type____arr_k_0046b2e8._16_8_; + uVar18 = s_checkScalar_value__type____arr_k_0046b2e8._8_8_; + uVar16 = s_checkScalar_value__type____arr_k_0046b2e8._0_8_; + pcVar15[0x40] = s_checkScalar_value__type____arr_k_0046b2e8[0x40]; + uVar10 = s_checkScalar_value__type____arr_k_0046b2e8._56_8_; + uVar9 = s_checkScalar_value__type____arr_k_0046b2e8._48_8_; + *(undefined8 *)pcVar15 = uVar16; + *(undefined8 *)(pcVar15 + 8) = uVar18; + *(undefined8 *)(pcVar15 + 0x10) = uVar5; + *(undefined8 *)(pcVar15 + 0x18) = uVar6; + *(undefined8 *)(pcVar15 + 0x20) = uVar7; + *(undefined8 *)(pcVar15 + 0x28) = uVar8; + *(undefined8 *)(pcVar15 + 0x30) = uVar9; + *(undefined8 *)(pcVar15 + 0x38) = uVar10; + error(-0xd7,(String *)&local_a0, + "void cv::_OutputArray::setTo(const cv::_InputArray&, const cv::_InputArray&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa67); + String::deallocate((String *)&local_a0); + } + uVar18 = *(undefined8 *)(this + 8); + local_a0 = *local_50; + local_98 = local_50[1]; + local_90 = local_50[2]; + local_88 = local_50[3]; + local_80 = local_a0; + local_78 = local_98; + local_70 = local_90; + local_68 = local_88; + uVar16 = cuda::Stream::Null(); + cuda::GpuMat::setTo(uVar18,&local_80,param_2,uVar16); + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar12 = 0; + puVar13 = local_20; + do { + *puVar13 = 0; + iVar12 = iVar12 + 1; + puVar13 = puVar13 + 1; + } while (iVar12 < local_60._4_4_); + } +LAB_00329bc8: + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = (undefined8 *)0x0; + if (local_18 == &local_10) { + return; + } + fastFree(local_18); + return; +} + + +================================================================== + +### FUNC 00329fec (848 bytes) name=assign + +/* cv::_OutputArray::assign(cv::UMat const&) const */ + +void __thiscall cv::_OutputArray::assign(_OutputArray *this,UMat *param_1) + +{ + int *piVar1; + uint uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + int iVar6; + Mat *pMVar7; + undefined4 *puVar8; + undefined8 uVar9; + undefined8 *puVar10; + undefined8 *puVar11; + UMat *this_00; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar6 = _InputArray::kind((_InputArray *)this); + if (iVar6 != 0xa0000) { + if (iVar6 == 0x10000) { + local_58 = *(undefined8 *)(this + 8); + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + UMat::copyTo(param_1,(_OutputArray *)&local_60); + return; + } + if (iVar6 != 0x20000) { + local_60 = 0; + local_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xd5,(String *)&local_60,"void cv::_OutputArray::assign(const cv::UMat&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa80); + String::deallocate((String *)&local_60); + return; + } + iVar6 = _InputArray::kind((_InputArray *)this); + if (iVar6 == 0x10000) { + pMVar7 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar2 = *(uint *)pMVar7; + local_50 = *(undefined8 *)(pMVar7 + 0x10); + local_60 = *(ulong *)pMVar7; + local_58 = *(undefined8 *)(pMVar7 + 8); + local_48 = *(undefined8 *)(pMVar7 + 0x18); + local_40 = *(undefined8 *)(pMVar7 + 0x20); + local_38 = *(undefined8 *)(pMVar7 + 0x28); + local_30 = *(undefined8 *)(pMVar7 + 0x30); + local_28 = *(long *)(pMVar7 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar7 + 0x48); + local_8 = (*(undefined8 **)(pMVar7 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar2; + Mat::copySize((Mat *)&local_60,pMVar7); + } + } + else { + _InputArray::getMat_((int)this); + } + local_68 = 0; + local_64 = 0; + local_78[0] = 0xc2010000; + local_70 = (Mat *)&local_60; + UMat::copyTo(param_1,(_OutputArray *)local_78); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar6 = 0; + puVar10 = local_20; + do { + *(undefined4 *)puVar10 = 0; + iVar6 = iVar6 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar6 < local_60._4_4_); + } + if (local_18 == &local_10) { + return; + } + fastFree(local_18); + return; + } + this_00 = *(UMat **)(this + 8); + if (this_00 == param_1) { + return; + } + if (*(long *)(param_1 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x20) + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(this_00 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(this_00 + 0x20) + 0x10); + do { + iVar6 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + UMat::deallocate(this_00); + } + } + if (*(int *)(this_00 + 4) < 1) { + *(undefined4 *)this_00 = *(undefined4 *)param_1; + *(undefined8 *)(this_00 + 0x20) = 0; +LAB_0032a274: + iVar6 = *(int *)(param_1 + 4); + if (iVar6 < 3) { + puVar11 = *(undefined8 **)(param_1 + 0x38); + puVar10 = *(undefined8 **)(this_00 + 0x38); + uVar3 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(this_00 + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(this_00 + 4) = iVar6; + *(undefined4 *)(this_00 + 8) = uVar3; + *puVar10 = *puVar11; + puVar10[1] = puVar11[1]; + goto LAB_0032a28c; + } + } + else { + iVar6 = 0; + puVar8 = *(undefined4 **)(this_00 + 0x30); + do { + *puVar8 = 0; + iVar6 = iVar6 + 1; + puVar8 = puVar8 + 1; + } while (iVar6 < *(int *)(this_00 + 4)); + uVar3 = *(undefined4 *)param_1; + *(undefined8 *)(this_00 + 0x20) = 0; + *(undefined4 *)this_00 = uVar3; + if (*(int *)(this_00 + 4) < 3) goto LAB_0032a274; + } + UMat::copySize(this_00,param_1); +LAB_0032a28c: + *(undefined8 *)(this_00 + 0x10) = *(undefined8 *)(param_1 + 0x10); + if (*(int *)(this_00 + 0x18) == 0) { + *(undefined4 *)(this_00 + 0x18) = *(undefined4 *)(param_1 + 0x18); + } + uVar9 = *(undefined8 *)(param_1 + 0x20); + *(undefined8 *)(this_00 + 0x28) = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(this_00 + 0x20) = uVar9; + return; +} + + +================================================================== + +### FUNC 0032a374 (868 bytes) name=assign + +/* cv::_OutputArray::assign(cv::Mat const&) const */ + +void __thiscall cv::_OutputArray::assign(_OutputArray *this,Mat *param_1) + +{ + int *piVar1; + uint uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + int iVar6; + Mat *pMVar7; + undefined4 *puVar8; + undefined8 *puVar9; + undefined8 *puVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar6 = _InputArray::kind((_InputArray *)this); + if (iVar6 == 0xa0000) { + local_58 = *(undefined8 *)(this + 8); + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x20a0000); + Mat::copyTo(param_1,(_OutputArray *)&local_60); + return; + } + if (iVar6 != 0x10000) { + if (iVar6 != 0x20000) { + local_60 = 0; + local_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xd5,(String *)&local_60,"void cv::_OutputArray::assign(const cv::Mat&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa96); + String::deallocate((String *)&local_60); + return; + } + iVar6 = _InputArray::kind((_InputArray *)this); + if (iVar6 == 0x10000) { + pMVar7 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar2 = *(uint *)pMVar7; + local_50 = *(undefined8 *)(pMVar7 + 0x10); + local_60 = *(ulong *)pMVar7; + local_58 = *(undefined8 *)(pMVar7 + 8); + local_48 = *(undefined8 *)(pMVar7 + 0x18); + local_40 = *(undefined8 *)(pMVar7 + 0x20); + local_38 = *(undefined8 *)(pMVar7 + 0x28); + local_30 = *(undefined8 *)(pMVar7 + 0x30); + local_28 = *(long *)(pMVar7 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar7 + 0x48); + local_8 = (*(undefined8 **)(pMVar7 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar2; + Mat::copySize((Mat *)&local_60,pMVar7); + } + } + else { + _InputArray::getMat_((int)this); + } + local_68 = 0; + local_64 = 0; + local_78[0] = 0xc2010000; + local_70 = (Mat *)&local_60; + Mat::copyTo(param_1,(_OutputArray *)local_78); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar6 = 0; + puVar9 = local_20; + do { + *(undefined4 *)puVar9 = 0; + iVar6 = iVar6 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar6 < local_60._4_4_); + } + if (local_18 == &local_10) { + return; + } + fastFree(local_18); + return; + } + pMVar7 = *(Mat **)(this + 8); + if (param_1 == pMVar7) { + return; + } + if (*(long *)(param_1 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x38) + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(pMVar7 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar7 + 0x38) + 0x14); + do { + iVar6 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar6 == 1) { + Mat::deallocate(pMVar7); + } + } + *(undefined8 *)(pMVar7 + 0x38) = 0; + *(undefined8 *)(pMVar7 + 0x10) = 0; + *(undefined8 *)(pMVar7 + 0x28) = 0; + *(undefined8 *)(pMVar7 + 0x20) = 0; + *(undefined8 *)(pMVar7 + 0x18) = 0; + if (*(int *)(pMVar7 + 4) < 1) { + *(undefined4 *)pMVar7 = *(undefined4 *)param_1; +LAB_0032a634: + iVar6 = *(int *)(param_1 + 4); + if (iVar6 < 3) { + puVar10 = *(undefined8 **)(param_1 + 0x48); + puVar9 = *(undefined8 **)(pMVar7 + 0x48); + uVar3 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(pMVar7 + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(pMVar7 + 4) = iVar6; + *(undefined4 *)(pMVar7 + 8) = uVar3; + *puVar9 = *puVar10; + puVar9[1] = puVar10[1]; + goto LAB_0032a64c; + } + } + else { + iVar6 = 0; + puVar8 = *(undefined4 **)(pMVar7 + 0x40); + do { + *puVar8 = 0; + iVar6 = iVar6 + 1; + puVar8 = puVar8 + 1; + } while (iVar6 < *(int *)(pMVar7 + 4)); + *(undefined4 *)pMVar7 = *(undefined4 *)param_1; + if (*(int *)(pMVar7 + 4) < 3) goto LAB_0032a634; + } + Mat::copySize(pMVar7,param_1); +LAB_0032a64c: + uVar15 = *(undefined8 *)(param_1 + 0x10); + uVar14 = *(undefined8 *)(param_1 + 0x28); + uVar13 = *(undefined8 *)(param_1 + 0x20); + uVar12 = *(undefined8 *)(param_1 + 0x38); + uVar11 = *(undefined8 *)(param_1 + 0x30); + *(undefined8 *)(pMVar7 + 0x18) = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(pMVar7 + 0x10) = uVar15; + *(undefined8 *)(pMVar7 + 0x28) = uVar14; + *(undefined8 *)(pMVar7 + 0x20) = uVar13; + *(undefined8 *)(pMVar7 + 0x38) = uVar12; + *(undefined8 *)(pMVar7 + 0x30) = uVar11; + return; +} + + +================================================================== + +### FUNC 0032a710 (12 bytes) name=noArray + +/* cv::noArray() */ + +undefined4 * cv::noArray(void) + +{ + return &DAT_00531fc0; +} + + +================================================================== + +### FUNC 0032a71c (1080 bytes) name=setIdentity + +/* cv::setIdentity(cv::_InputOutputArray const&, cv::Scalar_ const&) */ + +void cv::setIdentity(_InputOutputArray *param_1,Scalar_ *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + undefined2 uVar5; + int iVar6; + char *pcVar7; + long lVar8; + int *piVar9; + Mat *pMVar10; + float *pfVar11; + int iVar12; + float *pfVar13; + ulong uVar14; + undefined8 uVar15; + double dVar16; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + float *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + ulong *local_78; + ulong local_70; + ulong local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar6 = _InputArray::dims((_InputArray *)param_1,-1); + if (2 < iVar6) { + local_60 = 0; + local_58 = 0; + pcVar7 = (char *)String::allocate((String *)&local_60,0xe); + uVar5 = s__m_dims___<__2_0046b330._12_2_; + uVar4 = s__m_dims___<__2_0046b330._8_4_; + *(undefined8 *)pcVar7 = s__m_dims___<__2_0046b330._0_8_; + *(undefined4 *)(pcVar7 + 8) = uVar4; + *(undefined2 *)(pcVar7 + 0xc) = uVar5; + error(-0xd7,(String *)&local_60,"void cv::setIdentity(cv::InputOutputArray, const Scalar&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xb20); + String::deallocate((String *)&local_60); + } + iVar6 = _InputArray::kind((_InputArray *)param_1); + if (iVar6 == 0x10000) { + pMVar10 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar10; + local_bc = *(int *)(pMVar10 + 4); + local_b8 = *(int *)(pMVar10 + 8); + local_b4 = *(int *)(pMVar10 + 0xc); + local_b0 = *(float **)(pMVar10 + 0x10); + local_a8 = *(undefined8 *)(pMVar10 + 0x18); + local_a0 = *(undefined8 *)(pMVar10 + 0x20); + local_98 = *(undefined8 *)(pMVar10 + 0x28); + local_90 = *(undefined8 *)(pMVar10 + 0x30); + local_88 = *(long *)(pMVar10 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar10 + 4) < 3) { + local_70 = **(ulong **)(pMVar10 + 0x48); + local_68 = (*(ulong **)(pMVar10 + 0x48))[1]; + iVar6 = local_b8; + iVar3 = local_b4; + pfVar11 = local_b0; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar10); + iVar6 = local_b8; + iVar3 = local_b4; + pfVar11 = local_b0; + } + } + else { + _InputArray::getMat_((int)param_1); + iVar6 = local_b8; + iVar3 = local_b4; + pfVar11 = local_b0; + } + local_b8 = iVar6; + local_b4 = iVar3; + local_b0 = pfVar11; + if ((local_c0 & 0xfff) == 5) { + dVar16 = *(double *)param_2; + if (0 < iVar6) { + uVar14 = local_70 & 0xfffffffffffffffc; + iVar12 = 0; + lVar8 = uVar14 + 4; + pfVar13 = pfVar11; + if (iVar3 < 1) { + do { + if (iVar12 < iVar3) { + *pfVar11 = (float)dVar16; + } + iVar12 = iVar12 + 1; + pfVar11 = (float *)((long)pfVar11 + lVar8); + } while (iVar12 != iVar6); + } + else { + do { + memset(pfVar11,0,((ulong)(iVar3 - 1) + 1) * 4); + if (iVar12 < iVar3) { + *pfVar13 = (float)dVar16; + } + iVar12 = iVar12 + 1; + pfVar11 = (float *)((long)pfVar11 + uVar14); + pfVar13 = (float *)((long)pfVar13 + lVar8); + } while (iVar12 != iVar6); + } + } + goto LAB_0032a8a8; + } + if ((local_c0 & 0xfff) == 6) { + uVar15 = *(undefined8 *)param_2; + if (0 < iVar6) { + iVar12 = 0; + do { + lVar8 = 0; + if (0 < iVar3) { + do { + while (iVar12 != (int)lVar8) { + (pfVar11 + lVar8 * 2)[0] = 0.0; + (pfVar11 + lVar8 * 2)[1] = 0.0; + lVar8 = lVar8 + 1; + if (iVar3 <= (int)lVar8) goto LAB_0032ab00; + } + *(undefined8 *)(pfVar11 + lVar8 * 2) = uVar15; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < iVar3); + } +LAB_0032ab00: + iVar12 = iVar12 + 1; + pfVar11 = (float *)((long)pfVar11 + (local_70 & 0xfffffffffffffff8)); + } while (iVar12 != iVar6); + } + goto LAB_0032a8a8; + } + local_58 = 0; + local_60 = 0; + uStack_48 = 0; + local_50 = 0; + Mat::operator=((Mat *)&local_c0,(Scalar_ *)&local_60); + Mat::diag((int)(Mat *)&local_c0); + Mat::operator=((Mat *)&local_60,param_2); + if (local_28 == 0) { +LAB_0032a858: + uVar15 = local_60; + } + else { + piVar9 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar6 != 1) goto LAB_0032a858; + Mat::deallocate((Mat *)&local_60); + uVar15 = local_60; + } + if (0 < local_60._4_4_) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_60._4_4_ = (int)((ulong)uVar15 >> 0x20); + local_20 = local_20 + 1; + } while (iVar6 < local_60._4_4_); + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + uStack_48 = 0; + local_50 = 0; + local_60 = uVar15; + if (local_18 != auStack_10) { + fastFree(local_18); + } +LAB_0032a8a8: + if (local_88 != 0) { + piVar9 = (int *)(local_88 + 0x14); + do { + iVar6 = *piVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (float *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + piVar9 = local_80; + do { + *piVar9 = 0; + iVar6 = iVar6 + 1; + piVar9 = piVar9 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0032abb8 (948 bytes) name=trace + +/* cv::trace(cv::_InputArray const&) */ + +void __thiscall cv::trace(cv *this,_InputArray *param_1) + +{ + char cVar1; + bool bVar2; + undefined2 uVar3; + int iVar4; + char *pcVar5; + double *pdVar6; + Mat *pMVar7; + int *piVar8; + int iVar9; + double *in_x8; + float fVar10; + double dVar11; + double dVar12; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + double *local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + ulong *local_78; + ulong local_70; + ulong local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar4 = _InputArray::kind((_InputArray *)this); + if (iVar4 == 0x10000) { + pMVar7 = *(Mat **)(this + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar7; + local_bc = *(int *)(pMVar7 + 4); + local_b8 = *(int *)(pMVar7 + 8); + local_b4 = *(int *)(pMVar7 + 0xc); + local_b0 = *(double **)(pMVar7 + 0x10); + local_a8 = *(undefined8 *)(pMVar7 + 0x18); + local_a0 = *(undefined8 *)(pMVar7 + 0x20); + local_98 = *(undefined8 *)(pMVar7 + 0x28); + local_90 = *(undefined8 *)(pMVar7 + 0x30); + local_88 = *(long *)(pMVar7 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar8 = (int *)(local_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_70 = **(ulong **)(pMVar7 + 0x48); + local_68 = (*(ulong **)(pMVar7 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar7); + } + } + else { + _InputArray::getMat_((int)this); + } + if (local_bc < 3) { + iVar4 = local_b8; + if (local_b4 < local_b8) { + iVar4 = local_b4; + } + } + else { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar5 = (char *)String::allocate((String *)&local_d8,0xb); + cVar1 = s_m_dims_<__2_0046acf8[10]; + uVar3 = s_m_dims_<__2_0046acf8._8_2_; + *(undefined8 *)pcVar5 = s_m_dims_<__2_0046acf8._0_8_; + *(undefined2 *)(pcVar5 + 8) = uVar3; + pcVar5[10] = cVar1; + error(-0xd7,(String *)&local_d8,"cv::Scalar cv::trace(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xb4e); + String::deallocate((String *)&local_d8); + iVar4 = local_b8; + if (local_b4 < local_b8) { + iVar4 = local_b4; + } + } + if ((local_c0 & 0xfff) == 5) { + if (iVar4 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar9 = 0; + pdVar6 = local_b0; + do { + fVar10 = *(float *)pdVar6; + iVar9 = iVar9 + 1; + pdVar6 = (double *)((long)pdVar6 + ((local_70 >> 2) + 1) * 4); + dVar11 = dVar11 + (double)fVar10; + } while (iVar9 != iVar4); + } + *in_x8 = dVar11; + in_x8[1] = 0.0; + in_x8[2] = 0.0; + in_x8[3] = 0.0; + } + else if ((local_c0 & 0xfff) == 6) { + if (iVar4 < 1) { + dVar11 = 0.0; + } + else { + dVar11 = 0.0; + iVar9 = 0; + pdVar6 = local_b0; + do { + iVar9 = iVar9 + 1; + dVar12 = *pdVar6; + pdVar6 = pdVar6 + (local_70 >> 3) + 1; + dVar11 = dVar11 + dVar12; + } while (iVar9 != iVar4); + } + *in_x8 = dVar11; + in_x8[1] = 0.0; + in_x8[2] = 0.0; + in_x8[3] = 0.0; + } + else { + Mat::diag((int)&local_c0); + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x1010000); + local_d0 = aMStack_60; + sum((cv *)&local_d8,(_InputArray *)0x1010000); + if (local_28 != 0) { + piVar8 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + } + if (local_88 != 0) { + piVar8 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (double *)0x0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + piVar8 = local_80; + do { + *piVar8 = 0; + iVar4 = iVar4 + 1; + piVar8 = piVar8 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0032afc8 (848 bytes) name=completeSymm + +/* cv::completeSymm(cv::_InputOutputArray const&, bool) */ + +void cv::completeSymm(_InputOutputArray *param_1,bool param_2) + +{ + bool bVar1; + int iVar2; + char cVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined2 uVar8; + long lVar9; + int iVar10; + char *pcVar11; + int *piVar12; + Mat *pMVar13; + void *__src; + void *__dest; + size_t __n; + long lVar14; + int iVar15; + int iVar16; + long lVar17; + long lVar18; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + long *local_18; + long local_10; + long local_8; + + iVar10 = _InputArray::kind((_InputArray *)param_1); + if (iVar10 == 0x10000) { + pMVar13 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar13; + local_5c = *(int *)(pMVar13 + 4); + local_58 = *(int *)(pMVar13 + 8); + local_54 = *(int *)(pMVar13 + 0xc); + local_50 = *(long *)(pMVar13 + 0x10); + local_48 = *(undefined8 *)(pMVar13 + 0x18); + local_40 = *(undefined8 *)(pMVar13 + 0x20); + local_38 = *(undefined8 *)(pMVar13 + 0x28); + local_30 = *(undefined8 *)(pMVar13 + 0x30); + local_28 = *(long *)(pMVar13 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar12 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar1) { + *piVar12 = *piVar12 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar13 + 4)) { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar13); + goto LAB_0032b020; + } + local_10 = **(long **)(pMVar13 + 0x48); + local_8 = (*(long **)(pMVar13 + 0x48))[1]; + if (local_5c < 1) goto LAB_0032b2ec; +LAB_0032b030: + __n = local_18[(long)local_5c + -1]; + if ((local_5c < 3) && (lVar14 = local_10, local_58 == local_54)) goto LAB_0032b0d4; + } + else { + _InputArray::getMat_((int)param_1); +LAB_0032b020: + if (0 < local_5c) goto LAB_0032b030; +LAB_0032b2ec: + __n = 0; + lVar14 = local_10; + if (local_58 == local_54) goto LAB_0032b0d4; + } + lVar14 = local_10; + local_70 = 0; + local_68 = 0; + pcVar11 = (char *)String::allocate((String *)&local_70,0x1f); + cVar3 = s_m_dims_<__2_&&_m_rows____m_cols_0046b340[0x1e]; + uVar8 = s_m_dims_<__2_&&_m_rows____m_cols_0046b340._28_2_; + uVar7 = s_m_dims_<__2_&&_m_rows____m_cols_0046b340._24_4_; + uVar6 = s_m_dims_<__2_&&_m_rows____m_cols_0046b340._8_8_; + uVar5 = s_m_dims_<__2_&&_m_rows____m_cols_0046b340._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_m_dims_<__2_&&_m_rows____m_cols_0046b340._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar7; + *(undefined2 *)(pcVar11 + 0x1c) = uVar8; + pcVar11[0x1e] = cVar3; + *(undefined8 *)pcVar11 = uVar5; + *(undefined8 *)(pcVar11 + 8) = uVar6; + error(-0xd7,(String *)&local_70,"void cv::completeSymm(cv::InputOutputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xc8c); + String::deallocate((String *)&local_70); +LAB_0032b0d4: + lVar9 = local_50; + iVar10 = local_58; + if (0 < local_58) { + lVar17 = 0; + lVar18 = 0; + iVar15 = 1; + iVar16 = 0; + iVar4 = local_58; + do { + iVar2 = iVar15; + if (!param_2) { + iVar2 = iVar16; + iVar4 = iVar15 + -1; + } + if (iVar2 < iVar4) { + __src = (void *)(lVar9 + lVar17 + lVar14 * iVar2); + __dest = (void *)(lVar9 + lVar18 + (long)iVar2 * __n); + iVar16 = iVar2; + do { + iVar16 = iVar16 + 1; + memcpy(__dest,__src,__n); + __src = (void *)((long)__src + lVar14); + __dest = (void *)((long)__dest + __n); + } while (iVar16 != iVar4); + } + lVar18 = lVar18 + lVar14; + lVar17 = lVar17 + __n; + bVar1 = iVar15 < iVar10; + iVar15 = iVar15 + 1; + iVar16 = iVar2; + } while (bVar1); + } + if (local_28 != 0) { + piVar12 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar12; + cVar3 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar1) { + *piVar12 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + piVar12 = local_20; + do { + *piVar12 = 0; + iVar10 = iVar10 + 1; + piVar12 = piVar12 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 0032b360 (1088 bytes) name=cross + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::cross(cv::_InputArray const&) const */ + +void cv::Mat::cross(_InputArray *param_1) + +{ + uint uVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + int iVar6; + void *__dest; + _InputArray *in_x1; + Mat *pMVar7; + float *pfVar8; + double *pdVar9; + int *piVar10; + long lVar11; + long lVar12; + float *pfVar13; + double *pdVar14; + long lVar15; + long lVar16; + Mat *in_x8; + int local_78; + int local_74; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + undefined4 local_54; + double *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + ulong *local_18; + ulong local_10; + ulong local_8; + + iVar6 = _InputArray::kind(in_x1); + if (iVar6 == 0x10000) { + pMVar7 = *(Mat **)(in_x1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar7; + local_5c = *(int *)(pMVar7 + 4); + local_58 = *(int *)(pMVar7 + 8); + local_54 = *(undefined4 *)(pMVar7 + 0xc); + local_50 = *(double **)(pMVar7 + 0x10); + local_48 = *(undefined8 *)(pMVar7 + 0x18); + local_40 = *(undefined8 *)(pMVar7 + 0x20); + local_38 = *(undefined8 *)(pMVar7 + 0x28); + local_30 = *(undefined8 *)(pMVar7 + 0x30); + local_28 = *(long *)(pMVar7 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = *piVar10 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_10 = **(ulong **)(pMVar7 + 0x48); + local_8 = (*(ulong **)(pMVar7 + 0x48))[1]; + } + else { + local_5c = 0; + copySize((Mat *)&local_60,pMVar7); + } + } + else { + _InputArray::getMat_((int)in_x1); + } + uVar1 = *(uint *)param_1; + if ((*(int *)(param_1 + 4) < 3) && (local_5c < 3)) { + if ((**(int **)(param_1 + 0x40) != *local_20) || + (((*(int **)(param_1 + 0x40))[1] != local_20[1] || ((uVar1 & 0xfff) != (local_60 & 0xfff))))) + goto LAB_0032b3cc; + if (*(long *)(param_1 + 8) != 0x100000003) { + local_74 = *(int *)(param_1 + 0xc); + if ((local_74 + (uVar1 >> 3 & 0x1ff) * local_74 == 3) && (*(int *)(param_1 + 8) == 1)) { + local_78 = 1; + goto LAB_0032b424; + } + goto LAB_0032b3cc; + } + } + else { +LAB_0032b3cc: + local_70 = 0; + local_68 = 0; + __dest = (void *)String::allocate((String *)&local_70,0x85); + memcpy(__dest,&DAT_0046b360,0x85); + error(-0xd7,(String *)&local_70,"cv::Mat cv::Mat::cross(cv::InputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xca0); + String::deallocate((String *)&local_70); + } + local_78 = *(int *)(param_1 + 8); + local_74 = *(int *)(param_1 + 0xc); +LAB_0032b424: + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar5 = _UNK_0032b7e8; + uVar4 = _DAT_0032b7e0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 8) = uVar5; + *(undefined8 *)in_x8 = uVar4; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + create(in_x8,2,&local_78,uVar1 & 0xfff); + if ((uVar1 & 7) == 5) { + pfVar8 = *(float **)(param_1 + 0x10); + pfVar13 = *(float **)(in_x8 + 0x10); + if (*(int *)(param_1 + 8) < 2) { + lVar11 = 4; + lVar12 = 8; + lVar15 = lVar11; + lVar16 = lVar12; + } + else { + lVar12 = (*(ulong *)(param_1 + 0x50) >> 2) << 3; + lVar11 = (local_10 >> 2) << 2; + lVar15 = (*(ulong *)(param_1 + 0x50) >> 2) << 2; + lVar16 = (local_10 >> 2) << 3; + } + *pfVar13 = *(float *)((long)pfVar8 + lVar15) * *(float *)((long)local_50 + lVar16) - + *(float *)((long)pfVar8 + lVar12) * *(float *)((long)local_50 + lVar11); + pfVar13[1] = *(float *)((long)pfVar8 + lVar12) * *(float *)local_50 - + *pfVar8 * *(float *)((long)local_50 + lVar16); + pfVar13[2] = *pfVar8 * *(float *)((long)local_50 + lVar11) - + *(float *)((long)pfVar8 + lVar15) * *(float *)local_50; + } + else if ((uVar1 & 7) == 6) { + pdVar9 = *(double **)(param_1 + 0x10); + pdVar14 = *(double **)(in_x8 + 0x10); + if (*(int *)(param_1 + 8) < 2) { + lVar11 = 8; + lVar12 = 0x10; + lVar15 = lVar11; + lVar16 = lVar12; + } + else { + lVar12 = (*(ulong *)(param_1 + 0x50) >> 3) << 4; + lVar11 = (local_10 >> 3) << 3; + lVar15 = (*(ulong *)(param_1 + 0x50) >> 3) << 3; + lVar16 = (local_10 >> 3) << 4; + } + *pdVar14 = *(double *)((long)pdVar9 + lVar15) * *(double *)((long)local_50 + lVar16) - + *(double *)((long)pdVar9 + lVar12) * *(double *)((long)local_50 + lVar11); + pdVar14[1] = *(double *)((long)pdVar9 + lVar12) * *local_50 - + *pdVar9 * *(double *)((long)local_50 + lVar16); + pdVar14[2] = *pdVar9 * *(double *)((long)local_50 + lVar11) - + *(double *)((long)pdVar9 + lVar15) * *local_50; + } + if (local_28 != 0) { + piVar10 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (double *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + piVar10 = local_20; + do { + *piVar10 = 0; + iVar6 = iVar6 + 1; + piVar10 = piVar10 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 0032b7f0 (264 bytes) name=cvSetIdentity + +void cvSetIdentity(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + cv *param_5) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_5,(void *)0x0,true,false,0,in_x5); + local_98[0] = 0x3010000; + local_88 = 0; + local_84 = 0; + local_90 = aMStack_60; + local_80 = param_1; + local_78 = param_2; + local_70 = param_3; + local_68 = param_4; + cv::setIdentity((_InputOutputArray *)local_98,(Scalar_ *)&local_80); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 0032b920 (260 bytes) name=cvTrace + +undefined1 [16] cvTrace(cv *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined1 auVar5 [16]; + undefined4 local_b8 [2]; + Mat *local_b0; + undefined4 local_a8; + undefined4 local_a4; + ulong local_a0; + undefined8 uStack_98; + undefined8 local_90; + undefined8 uStack_88; + ulong local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 uStack_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + local_a8 = 0; + local_a4 = 0; + local_b8[0] = 0x1010000; + local_b0 = aMStack_60; + cv::trace((cv *)local_b8,(_InputArray *)0x1010000); + local_78 = uStack_98; + local_80 = local_a0; + uStack_68 = uStack_88; + local_70 = local_90; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + auVar5._8_8_ = 0; + auVar5._0_8_ = local_80; + return auVar5; +} + + +================================================================== + +### FUNC 0032ba4c (224 bytes) name=cvCompleteSymm + +void cvCompleteSymm(cv *param_1,int param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + local_68 = 0; + local_64 = 0; + local_78[0] = 0x3010000; + local_70 = aMStack_60; + cv::completeSymm((_InputOutputArray *)local_78,param_2 != 0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 0032bb54 (912 bytes) name=cvCrossProduct + +void cvCrossProduct(cv *param_1,cv *param_2,cv *param_3,undefined8 param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + int iVar11; + undefined8 local_198; + Mat *local_190; + undefined4 local_188; + undefined4 local_184; + uint local_180; + int local_17c; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + long local_148; + int *local_140; + undefined1 *local_138; + undefined1 auStack_130 [16]; + uint local_120; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + int *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + if (((local_140[1] != local_e0[1]) || (*local_140 != *local_e0)) || + ((local_180 & 0xfff) != (local_120 & 0xfff))) { + local_198 = 0; + local_190 = (Mat *)0x0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_198,0x36); + uVar10 = s_srcA_size______dst_size______src_0046b3e8._52_2_; + uVar9 = s_srcA_size______dst_size______src_0046b3e8._40_8_; + uVar8 = s_srcA_size______dst_size______src_0046b3e8._32_8_; + uVar7 = s_srcA_size______dst_size______src_0046b3e8._24_8_; + uVar6 = s_srcA_size______dst_size______src_0046b3e8._16_8_; + uVar5 = s_srcA_size______dst_size______src_0046b3e8._8_8_; + uVar4 = s_srcA_size______dst_size______src_0046b3e8._0_8_; + *(undefined4 *)(param_6 + 0x30) = s_srcA_size______dst_size______src_0046b3e8._48_4_; + *(undefined2 *)(param_6 + 0x34) = uVar10; + *(undefined8 *)param_6 = uVar4; + *(undefined8 *)(param_6 + 8) = uVar5; + *(undefined8 *)(param_6 + 0x10) = uVar6; + *(undefined8 *)(param_6 + 0x18) = uVar7; + *(undefined8 *)(param_6 + 0x20) = uVar8; + *(undefined8 *)(param_6 + 0x28) = uVar9; + cv::error(-0xd7,(String *)&local_198,"void cvCrossProduct(const CvArr*, const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x100b); + cv::String::deallocate((String *)&local_198); + } + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + cv::Mat::cross((_InputArray *)&local_180); + local_188 = 0; + local_184 = 0; + local_198 = CONCAT44(local_198._4_4_,0x2010000); + local_190 = (Mat *)&local_120; + cv::Mat::copyTo(aMStack_60,(_OutputArray *)&local_198); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar11 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar11 = 0; + do { + *local_80 = 0; + iVar11 = iVar11 + 1; + local_80 = local_80 + 1; + } while (iVar11 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar11 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar11 = 0; + do { + *local_e0 = 0; + iVar11 = iVar11 + 1; + local_e0 = local_e0 + 1; + } while (iVar11 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (local_148 != 0) { + piVar1 = (int *)(local_148 + 0x14); + do { + iVar11 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar11 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar11 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar11 = 0; + do { + *local_140 = 0; + iVar11 = iVar11 + 1; + local_140 = local_140 + 1; + } while (iVar11 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + return; +} + + +================================================================== + +### FUNC 0032bf98 (1032 bytes) name=cvRange + +uint * cvRange(double param_1,double param_2,uint *param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + uint uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + uint *puVar11; + char *pcVar12; + ulong uVar13; + int *piVar14; + long lVar15; + int iVar16; + long lVar17; + uint uVar18; + uint uVar19; + uint uVar20; + ulong uVar21; + int *piVar22; + uint uVar23; + int iVar24; + ulong uVar25; + undefined8 uVar26; + undefined8 uVar27; + float fVar28; + double __x; + undefined8 local_38; + undefined8 local_30; + undefined1 auStack_28 [40]; + + if ((((param_3 == (uint *)0x0) || (uVar20 = *param_3, (uVar20 & 0xffff0000) != 0x42420000)) || + (uVar18 = param_3[9], (int)uVar18 < 1)) || + ((uVar23 = param_3[8], (int)uVar23 < 1 || (puVar11 = param_3, *(long *)(param_3 + 6) == 0)))) { + puVar11 = (uint *)cvGetMat(param_3,auStack_28,0,0); + uVar20 = *puVar11; + uVar18 = puVar11[9]; + uVar23 = puVar11[8]; + } + uVar5 = uVar18 * uVar23; + __x = (param_2 - param_1) / (double)(int)uVar5; + if ((uVar20 >> 0xe & 1) == 0) { + iVar10 = (uVar20 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar20 & 7) << 1)) & 3); + uVar5 = 0; + if (iVar10 != 0) { + uVar5 = (int)puVar11[1] / iVar10; + } + uVar21 = (ulong)uVar5; + } + else { + uVar23 = 1; + uVar21 = 1; + uVar18 = uVar5; + } + if ((uVar20 & 0xfff) == 4) { + piVar22 = *(int **)(puVar11 + 6); + uVar13 = lrint(param_1); + uVar25 = uVar13 & 0xffffffff; + lVar17 = lrint(__x); + if ((DAT_0032c3b8 <= ABS(param_1 - (double)(int)uVar13)) || + (iVar10 = (int)lVar17, DAT_0032c3b8 <= ABS(__x - (double)iVar10))) { + if (0 < (int)uVar23) { + uVar20 = 0; + do { + lVar17 = 0; + if (0 < (int)uVar18) { + do { + lVar15 = lrint(param_1); + piVar22[lVar17] = (int)lVar15; + lVar17 = lVar17 + 1; + param_1 = param_1 + __x; + } while ((int)lVar17 < (int)uVar18); + } + uVar20 = uVar20 + 1; + piVar22 = (int *)((long)piVar22 + (-(uVar21 >> 0x1f) & 0xfffffffc00000000 | uVar21 << 2)); + } while (uVar20 != uVar23); + } + } + else if (0 < (int)uVar23) { + iVar3 = iVar10 * 4; + uVar20 = 0; + do { + iVar24 = (int)uVar25; + if (0 < (int)uVar18) { + uVar5 = -((uint)((ulong)piVar22 >> 2) & 3) & 3; + if (uVar18 < uVar5) { + uVar5 = uVar18; + } + if (uVar18 < 8) { + uVar5 = uVar18; + } + if (uVar5 == 0) { + uVar13 = 0; + iVar16 = iVar24; +LAB_0032c1e8: + uVar1 = ((uVar18 - uVar5) - 4 >> 2) + 1; + iVar4 = uVar1 * 4; + if (2 < (uVar18 - 1) - uVar5) { + iVar2 = iVar10 + iVar16 + iVar10; + uVar19 = 0; + uVar27 = CONCAT44(iVar10 + iVar2,iVar2); + uVar26 = CONCAT44(iVar16 + iVar10,iVar16); + piVar14 = piVar22 + uVar5; + do { + *(undefined8 *)(piVar14 + 2) = uVar27; + *(undefined8 *)piVar14 = uVar26; + uVar19 = uVar19 + 1; + uVar26 = CONCAT44((int)((ulong)uVar26 >> 0x20) + iVar3,(int)uVar26 + iVar3); + uVar27 = CONCAT44((int)((ulong)uVar27 >> 0x20) + iVar3,(int)uVar27 + iVar3); + piVar14 = piVar14 + 4; + } while (uVar19 < uVar1); + uVar13 = (ulong)(uint)((int)uVar13 + iVar4); + iVar16 = iVar16 + iVar10 * iVar4; + if (iVar4 == uVar18 - uVar5) goto LAB_0032c28c; + } + uVar25 = -(uVar13 >> 0x1f) & 0xfffffffc00000000 | uVar13 << 2; + *(int *)((long)piVar22 + uVar25) = iVar16; + if ((int)uVar13 + 1 < (int)uVar18) { + *(int *)((long)piVar22 + uVar25 + 4) = iVar10 + iVar16; + if ((int)uVar13 + 2 < (int)uVar18) { + *(int *)((long)piVar22 + uVar25 + 8) = iVar10 + iVar10 + iVar16; + } + } + } + else { + *piVar22 = iVar24; + iVar16 = iVar24 + iVar10; + if (uVar5 == 1) { +LAB_0032c380: + uVar13 = (ulong)uVar5; + } + else { + piVar22[1] = iVar16; + iVar16 = iVar16 + iVar10; + if (uVar5 == 2) goto LAB_0032c380; + piVar22[2] = iVar16; + iVar16 = iVar16 + iVar10; + if (uVar5 == 3) goto LAB_0032c380; + piVar22[3] = iVar16; + iVar16 = iVar16 + iVar10; + if (uVar5 == 4) goto LAB_0032c380; + piVar22[4] = iVar16; + iVar16 = iVar16 + iVar10; + if (uVar5 == 5) goto LAB_0032c380; + piVar22[5] = iVar16; + iVar16 = iVar16 + iVar10; + if (uVar5 == 7) { + piVar22[6] = iVar16; + uVar13 = 7; + iVar16 = iVar16 + iVar10; + } + else { + uVar13 = 6; + } + } + if (uVar5 != uVar18) goto LAB_0032c1e8; + } +LAB_0032c28c: + uVar25 = (ulong)(iVar24 + iVar10 + (uVar18 - 1) * iVar10); + } + uVar20 = uVar20 + 1; + piVar22 = (int *)((long)piVar22 + (-(uVar21 >> 0x1f) & 0xfffffffc00000000 | uVar21 << 2)); + } while (uVar20 != uVar23); + } + } + else if ((uVar20 & 0xfff) == 5) { + lVar17 = *(long *)(puVar11 + 6); + if (0 < (int)uVar23) { + uVar20 = 0; + do { + lVar15 = 0; + if (0 < (int)uVar18) { + do { + fVar28 = (float)param_1; + param_1 = param_1 + __x; + *(float *)(lVar17 + lVar15 * 4) = fVar28; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar18); + } + uVar20 = uVar20 + 1; + lVar17 = lVar17 + (-(uVar21 >> 0x1f) & 0xfffffffc00000000 | uVar21 << 2); + } while (uVar20 != uVar23); + return param_3; + } + } + else { + local_38 = 0; + local_30 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_38,0x34); + uVar9 = s_The_function_only_supports_32sC1_0046b420._40_8_; + uVar8 = s_The_function_only_supports_32sC1_0046b420._32_8_; + uVar7 = s_The_function_only_supports_32sC1_0046b420._24_8_; + uVar6 = s_The_function_only_supports_32sC1_0046b420._16_8_; + uVar27 = s_The_function_only_supports_32sC1_0046b420._8_8_; + uVar26 = s_The_function_only_supports_32sC1_0046b420._0_8_; + *(undefined4 *)(pcVar12 + 0x30) = s_The_function_only_supports_32sC1_0046b420._48_4_; + *(undefined8 *)pcVar12 = uVar26; + *(undefined8 *)(pcVar12 + 8) = uVar27; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + *(undefined8 *)(pcVar12 + 0x20) = uVar8; + *(undefined8 *)(pcVar12 + 0x28) = uVar9; + cv::error(-0xd2,(String *)&local_38,"CvArr* cvRange(CvArr*, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x105e); + cv::String::deallocate((String *)&local_38); + } + return param_3; +} + + +================================================================== + +### FUNC 0032c3c0 (2772 bytes) name=cvKMeans2 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +cvKMeans2(cv *param_1,int param_2,cv *param_3,ulong param_4,undefined8 param_5,AutoBuffer *param_6, + undefined8 param_7,undefined4 param_8,cv *param_9,undefined8 *param_10) + +{ + long lVar1; + int *piVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + char *pcVar8; + void *__dest; + long lVar9; + undefined8 *puVar10; + long lVar11; + int iVar12; + undefined8 *puVar13; + undefined4 *puVar14; + ulong uVar15; + undefined8 uVar16; + undefined8 local_290; + undefined8 local_288; + undefined8 local_280; + undefined8 local_278; + undefined8 local_270; + undefined8 local_268; + undefined8 local_260; + undefined8 local_258; + undefined8 local_250; + undefined8 local_248; + uint local_240; + int local_23c; + int local_238; + int local_234; + undefined8 local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined4 *local_200; + undefined8 *local_1f8; + undefined8 auStack_1f0 [2]; + undefined8 local_1e0; + undefined8 uStack_1d8; + long local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + Mat *local_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined4 local_120; + int local_11c; + Mat *local_118; + long local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + uint local_c0; + int local_bc; + undefined8 local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + uVar15 = (ulong)param_6 & 0xffffffff; + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_198 = &local_190; + local_1a0 = &uStack_1d8; + local_1d0 = 0; + uStack_1c8 = 0; + uStack_188 = 0; + local_190 = 0; + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + uStack_1d8 = _UNK_0032cfe8; + local_1e0 = _DAT_0032cfe0; + if (param_9 == (cv *)0x0) goto LAB_0032caa4; + cv::cvarrToMat(param_9,(void *)0x0,true,false,0,param_6); + if (lStack_148 != 0) { + piVar2 = (int *)(lStack_148 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar2 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar13 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_0032c52c: + if (2 < local_17c) goto LAB_0032cd14; + uStack_1d8 = local_178; + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar13[1]; + } + else { + iVar12 = 0; + puVar10 = local_1a0; + do { + *(undefined4 *)puVar10 = 0; + iVar12 = iVar12 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar12 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_0032c52c; +LAB_0032cd14: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + if (lStack_148 != 0) { + piVar2 = (int *)(lStack_148 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar12 = 0; + do { + *local_140 = 0; + iVar12 = iVar12 + 1; + local_140 = local_140 + 1; + } while (iVar12 < local_17c); + } + if (local_138 != auStack_130) { + cv::fastFree(local_138); + } + cv::Mat::reshape((int)(Mat *)&local_1e0,1); + if (lStack_e8 != 0) { + piVar2 = (int *)(lStack_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar2 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar13 = local_d8; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_0032c6ac: + if (2 < local_11c) goto LAB_0032cd64; + uStack_1d8 = local_118; + local_1e0 = CONCAT44(local_11c,local_120); + *local_198 = *local_d8; + local_198[1] = puVar13[1]; + } + else { + iVar12 = 0; + puVar10 = local_1a0; + do { + *(undefined4 *)puVar10 = 0; + iVar12 = iVar12 + 1; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } while (iVar12 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_0032c6ac; +LAB_0032cd64: + local_1e0 = CONCAT44(local_1e0._4_4_,local_120); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_120); + } + uStack_1b8 = uStack_f8; + local_1c0 = local_100; + lStack_1a8 = lStack_e8; + local_1b0 = local_f0; + uStack_1c8 = uStack_108; + local_1d0 = local_110; + if (lStack_e8 != 0) { + piVar2 = (int *)(lStack_e8 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar12 = 0; + do { + *local_e0 = 0; + iVar12 = iVar12 + 1; + local_e0 = local_e0 + 1; + } while (iVar12 < local_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + cv::Mat::reshape((int)(Mat *)&local_240,1); + if (lStack_88 != 0) { + piVar2 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_208 != 0) { + piVar2 = (int *)(lStack_208 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_23c < 1) { +LAB_0032c82c: + local_240 = local_c0; + if (2 < local_bc) goto LAB_0032cd54; + local_238 = (int)local_b8; + local_234 = local_b8._4_4_; + local_23c = local_bc; + *local_1f8 = *local_78; + local_1f8[1] = local_78[1]; + } + else { + iVar12 = 0; + puVar14 = local_200; + do { + *puVar14 = 0; + iVar12 = iVar12 + 1; + puVar14 = puVar14 + 1; + } while (iVar12 < local_23c); + if (local_23c < 3) goto LAB_0032c82c; +LAB_0032cd54: + local_240 = local_c0; + cv::Mat::copySize((Mat *)&local_240,(Mat *)&local_c0); + } + uStack_218 = uStack_98; + local_220 = local_a0; + lStack_208 = lStack_88; + local_210 = local_90; + uStack_228 = uStack_a8; + local_230 = local_b0; + if (lStack_88 != 0) { + piVar2 = (int *)(lStack_88 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar12 = 0; + do { + *local_80 = 0; + iVar12 = iVar12 + 1; + local_80 = local_80 + 1; + } while (iVar12 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + if (local_1d0 == 0) { +LAB_0032cd74: + local_290 = 0; + local_288 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_290,0x10); + uVar16 = s__centers_empty___0046b458._8_8_; + *(undefined8 *)pcVar8 = s__centers_empty___0046b458._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar16; + cv::error(-0xd7,(String *)&local_290, + "int cvKMeans2(const CvArr*, int, CvArr*, CvTermCriteria, int, CvRNG*, int, CvArr*, double*)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1089); + cv::String::deallocate((String *)&local_290); + } + else { + if (local_1e0._4_4_ < 3) { + lVar11 = (long)uStack_1d8._4_4_ * (long)(int)uStack_1d8; + } + else { + lVar9 = 0; + lVar11 = 1; + do { + lVar1 = lVar9 * 4; + lVar9 = lVar9 + 1; + lVar11 = lVar11 * *(int *)((long)local_1a0 + lVar1); + } while ((int)lVar9 < local_1e0._4_4_); + } + if (lVar11 == 0) goto LAB_0032cd74; + } + if ((int)uStack_1d8 != param_2) { + local_280 = 0; + local_278 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_280,0x1d); + cVar3 = s_centers_rows____cluster_count_0046b470[0x1c]; + uVar6 = s_centers_rows____cluster_count_0046b470._24_4_; + uVar5 = s_centers_rows____cluster_count_0046b470._8_8_; + uVar16 = s_centers_rows____cluster_count_0046b470._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_centers_rows____cluster_count_0046b470._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar6; + pcVar8[0x1c] = cVar3; + *(undefined8 *)pcVar8 = uVar16; + *(undefined8 *)(pcVar8 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_280, + "int cvKMeans2(const CvArr*, int, CvArr*, CvTermCriteria, int, CvRNG*, int, CvArr*, double*)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x108a); + cv::String::deallocate((String *)&local_280); + } + if (uStack_1d8._4_4_ != local_234) { + local_270 = 0; + local_268 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_270,0x19); + cVar3 = s_centers_cols____data_cols_0046b490[0x18]; + uVar5 = s_centers_cols____data_cols_0046b490._8_8_; + uVar16 = s_centers_cols____data_cols_0046b490._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_centers_cols____data_cols_0046b490._16_8_; + pcVar8[0x18] = cVar3; + *(undefined8 *)pcVar8 = uVar16; + *(undefined8 *)(pcVar8 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_270, + "int cvKMeans2(const CvArr*, int, CvArr*, CvTermCriteria, int, CvRNG*, int, CvArr*, double*)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x108b); + cv::String::deallocate((String *)&local_270); + } + if (((uint)local_1e0 & 7) != (local_240 & 7)) { + local_260 = 0; + local_258 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_260,0x1f); + cVar3 = s_centers_depth______data_depth___0046b4b0[0x1e]; + uVar7 = s_centers_depth______data_depth___0046b4b0._28_2_; + uVar6 = s_centers_depth______data_depth___0046b4b0._24_4_; + uVar5 = s_centers_depth______data_depth___0046b4b0._8_8_; + uVar16 = s_centers_depth______data_depth___0046b4b0._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_centers_depth______data_depth___0046b4b0._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar6; + *(undefined2 *)(pcVar8 + 0x1c) = uVar7; + pcVar8[0x1e] = cVar3; + *(undefined8 *)pcVar8 = uVar16; + *(undefined8 *)(pcVar8 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_260, + "int cvKMeans2(const CvArr*, int, CvArr*, CvTermCriteria, int, CvRNG*, int, CvArr*, double*)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x108c); + cv::String::deallocate((String *)&local_260); + } +LAB_0032caa4: + if (((((local_60 >> 0xe & 1) == 0) || ((local_60 & 0xfff) != 4)) || + ((local_54 != 1 && (local_58 != 1)))) || (local_54 + local_58 + -1 != local_238)) { + local_250 = 0; + local_248 = 0; + __dest = (void *)cv::String::allocate((String *)&local_250,0x88); + memcpy(__dest,&DAT_0046b4d0,0x88); + cv::error(-0xd7,(String *)&local_250, + "int cvKMeans2(const CvArr*, int, CvArr*, CvTermCriteria, int, CvRNG*, int, CvArr*, double*)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1090); + cv::String::deallocate((String *)&local_250); + } + local_120 = 0x1010000; + local_110 = 0; + local_b0 = 0; + local_c0 = 0x3010000; + if (param_9 == (cv *)0x0) { + local_178 = (Mat *)param_9; + local_180 = 0x2000000; + } + else { + local_180 = 0x2010000; + local_178 = (Mat *)&local_1e0; + } + local_170 = 0; + local_118 = (Mat *)&local_240; + local_b8 = (Mat *)&local_60; + uVar16 = cv::kmeans((cv *)&local_120,param_2,&local_c0, + param_4 & 0xffffffff | ((long)param_4 >> 0x20) << 0x20,param_5,uVar15,param_8, + &local_180); + if (param_10 != (undefined8 *)0x0) { + *param_10 = uVar16; + } + if (lStack_1a8 != 0) { + piVar2 = (int *)(lStack_1a8 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar12 = 0; + puVar13 = local_1a0; + do { + *(undefined4 *)puVar13 = 0; + iVar12 = iVar12 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar12 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + cv::fastFree(local_198); + } + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (lStack_208 != 0) { + piVar2 = (int *)(lStack_208 + 0x14); + do { + iVar12 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + cv::Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_23c) { + iVar12 = 0; + do { + *local_200 = 0; + iVar12 = iVar12 + 1; + local_200 = local_200 + 1; + } while (iVar12 < local_23c); + } + if (local_1f8 != auStack_1f0) { + cv::fastFree(local_1f8); + } + return 1; +} + + +================================================================== + +### FUNC 0032cff0 (216 bytes) name=reshape + +/* cv::Mat::reshape(int, int, int const*) const */ + +void cv::Mat::reshape(int param_1,int param_2,int *param_3) + +{ + long in_x3; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + if (*(int *)((ulong)(uint)param_1 + 4) == (int)param_3) { + if (in_x3 == 0) { + reshape(param_1,param_2); + return; + } + if (*(int *)((ulong)(uint)param_1 + 4) == 2) { + reshape(param_1,param_2); + return; + } + } + local_10 = 0; + local_8 = 0; + String::allocate((String *)&local_10,0); + error(-0xd5,(String *)&local_10,"cv::Mat cv::Mat::reshape(int, int, const int*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10a8); + String::deallocate((String *)&local_10); + in_x8[1] = 0; + in_x8[2] = 0; + *in_x8 = 0x42ff0000; + in_x8[3] = 0; + *(undefined8 *)(in_x8 + 4) = 0; + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + *(undefined8 *)(in_x8 + 0xe) = 0; + *(undefined4 **)(in_x8 + 0x10) = in_x8 + 2; + *(undefined4 **)(in_x8 + 0x12) = in_x8 + 0x14; + *(undefined8 *)(in_x8 + 0x16) = 0; + *(undefined8 *)(in_x8 + 0x14) = 0; + return; +} + + +================================================================== + +### FUNC 0032d0dc (36 bytes) name=NAryMatIterator + +/* cv::NAryMatIterator::NAryMatIterator() */ + +void __thiscall cv::NAryMatIterator::NAryMatIterator(NAryMatIterator *this) + +{ + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined4 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + return; +} + + +================================================================== + +### FUNC 0032d100 (2692 bytes) name=init + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::NAryMatIterator::init(cv::Mat const**, cv::Mat*, unsigned char**, int) */ + +void __thiscall +cv::NAryMatIterator::init + (NAryMatIterator *this,Mat **param_1,Mat *param_2,uchar **param_3,int param_4) + +{ + Mat *pMVar1; + int *piVar2; + int iVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined4 uVar8; + undefined1 uVar9; + undefined2 uVar10; + int iVar11; + undefined8 *puVar12; + int *piVar13; + char *pcVar14; + long lVar15; + ulong *puVar16; + long *plVar17; + int *piVar18; + ulong uVar19; + ulong uVar20; + undefined4 *puVar21; + uint uVar22; + uint uVar23; + uint uVar24; + int iVar25; + long lVar26; + uint uVar27; + uint uVar28; + long lVar29; + uint *puVar30; + long lVar31; + undefined8 local_60; + undefined8 uStack_58; + long local_50; + long local_48; + long local_40; + long local_38; + long local_30; + long local_28; + undefined8 *local_20; + long *local_18; + long local_10; + long lStack_8; + + if ((param_1 == (Mat **)0x0) || ((param_3 == (uchar **)0x0 && (param_2 == (Mat *)0x0)))) { + local_60 = (Mat *)0x0; + uStack_58 = (Mat *)0x0; + puVar12 = (undefined8 *)String::allocate((String *)&local_60,0x1d); + uVar9 = DAT_0046b57c; + uVar8 = DAT_0046b578; + uVar7 = _LAB_0046b568; + uVar6 = DAT_0046b560; + puVar12[2] = DAT_0046b570; + *(undefined4 *)(puVar12 + 3) = uVar8; + *(undefined1 *)((long)puVar12 + 0x1c) = uVar9; + *puVar12 = uVar6; + puVar12[1] = uVar7; + error(-0xd7,(String *)&local_60, + "void cv::NAryMatIterator::init(const cv::Mat**, cv::Mat*, uchar**, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10c0); + String::deallocate((String *)&local_60); + } + *(Mat ***)this = param_1; + *(uchar ***)(this + 0x10) = param_3; + *(Mat **)(this + 8) = param_2; + *(int *)(this + 0x18) = param_4; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + if (param_4 < 0) { + if (*param_1 != (Mat *)0x0) { + iVar11 = 0; + do { + param_1 = param_1 + 1; + local_60 = *param_1; + iVar11 = iVar11 + 1; + } while (local_60 != (Mat *)0x0); + *(int *)(this + 0x18) = iVar11; + if (1000 < iVar11) { + uStack_58 = local_60; + pcVar14 = (char *)String::allocate((String *)&local_60,0xf); + cVar4 = s_narrays_<__1000_0046b580[0xe]; + uVar10 = s_narrays_<__1000_0046b580._12_2_; + uVar8 = s_narrays_<__1000_0046b580._8_4_; + *(undefined8 *)pcVar14 = s_narrays_<__1000_0046b580._0_8_; + *(undefined4 *)(pcVar14 + 8) = uVar8; + *(undefined2 *)(pcVar14 + 0xc) = uVar10; + pcVar14[0xe] = cVar4; + error(-0xd7,(String *)&local_60, + "void cv::NAryMatIterator::init(const cv::Mat**, cv::Mat*, uchar**, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10cf); + String::deallocate((String *)&local_60); + param_4 = *(int *)(this + 0x18); + goto LAB_0032d1d0; + } + *(undefined4 *)(this + 0x30) = 0; + goto LAB_0032d1dc; + } + *(undefined4 *)(this + 0x18) = 0; + } + else { +LAB_0032d1d0: + *(undefined4 *)(this + 0x30) = 0; + if (0 < param_4) { +LAB_0032d1dc: + lVar29 = 0; + uVar27 = 0xffffffff; + iVar25 = -1; + uVar24 = 0; + iVar11 = 0; + do { + puVar30 = *(uint **)(*(long *)this + lVar29); + if (puVar30 == (uint *)0x0) { + local_60 = (Mat *)puVar30; + uStack_58 = (Mat *)puVar30; + pcVar14 = (char *)String::allocate((String *)&local_60,0xe); + uVar10 = s_arrays_i_____0_0046b590._12_2_; + uVar8 = s_arrays_i_____0_0046b590._8_4_; + *(undefined8 *)pcVar14 = s_arrays_i_____0_0046b590._0_8_; + *(undefined4 *)(pcVar14 + 8) = uVar8; + *(undefined2 *)(pcVar14 + 0xc) = uVar10; + error(-0xd7,(String *)&local_60, + "void cv::NAryMatIterator::init(const cv::Mat**, cv::Mat*, uchar**, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10d6); + String::deallocate((String *)&local_60); + puVar30 = *(uint **)(*(long *)this + lVar29); + } + if (*(long *)(this + 0x10) != 0) { + *(undefined8 *)(*(long *)(this + 0x10) + lVar29) = *(undefined8 *)(puVar30 + 4); + } + if (*(long *)(puVar30 + 4) != 0) { + if (iVar25 < 0) { + uVar27 = puVar30[1]; + iVar25 = iVar11; + if (((int)uVar27 < 1) || (piVar13 = *(int **)(puVar30 + 0x10), 1 < *piVar13)) { + uVar24 = 0; + } + else { + uVar24 = 0; + do { + piVar13 = piVar13 + 1; + uVar24 = uVar24 + 1; + if (uVar24 == uVar27) break; + } while (*piVar13 < 2); + } + goto LAB_0032d2b8; + } + piVar13 = *(int **)(puVar30 + 0x10); + iVar3 = piVar13[-1]; + piVar18 = *(int **)(*(long *)(*(long *)this + (long)iVar25 * 8) + 0x40); + if (iVar3 == piVar18[-1]) { + if (iVar3 == 2) { + if ((*piVar13 != *piVar18) || (piVar13[1] != piVar18[1])) goto LAB_0032d25c; + } + else if (0 < iVar3) { + if (*piVar13 == *piVar18) { + piVar2 = piVar13 + (iVar3 - 1); + do { + piVar18 = piVar18 + 1; + if (piVar13 == piVar2) goto LAB_0032d2b8; + piVar13 = piVar13 + 1; + } while (*piVar13 == *piVar18); + } + goto LAB_0032d25c; + } + } + else { +LAB_0032d25c: + local_60 = (Mat *)0x0; + uStack_58 = (Mat *)0x0; + pcVar14 = (char *)String::allocate((String *)&local_60,0x1a); + uVar10 = s_A_size____arrays_i0__>size_0046b5c0._24_2_; + uVar7 = s_A_size____arrays_i0__>size_0046b5c0._8_8_; + uVar6 = s_A_size____arrays_i0__>size_0046b5c0._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_A_size____arrays_i0__>size_0046b5c0._16_8_; + *(undefined2 *)(pcVar14 + 0x18) = uVar10; + *(undefined8 *)pcVar14 = uVar6; + *(undefined8 *)(pcVar14 + 8) = uVar7; + error(-0xd7,(String *)&local_60, + "void cv::NAryMatIterator::init(const cv::Mat**, cv::Mat*, uchar**, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10ea); + String::deallocate((String *)&local_60); + } +LAB_0032d2b8: + if ((*puVar30 >> 0xe & 1) == 0) { + uVar23 = uVar27 - 1; + lVar31 = (long)(int)uVar23 * 8; + if ((int)puVar30[1] < 1) { + lVar15 = 0; + } + else { + lVar15 = *(long *)(*(long *)(puVar30 + 0x12) + (long)(int)puVar30[1] * 8 + -8); + } + if (*(long *)(*(long *)(puVar30 + 0x12) + lVar31) != lVar15) { + local_60 = (Mat *)0x0; + uStack_58 = (Mat *)0x0; + pcVar14 = (char *)String::allocate((String *)&local_60,0x1b); + cVar4 = s_A_step_d_1_____A_elemSize___0046b5a0[0x1a]; + uVar10 = s_A_step_d_1_____A_elemSize___0046b5a0._24_2_; + uVar7 = s_A_step_d_1_____A_elemSize___0046b5a0._8_8_; + uVar6 = s_A_step_d_1_____A_elemSize___0046b5a0._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_A_step_d_1_____A_elemSize___0046b5a0._16_8_; + *(undefined2 *)(pcVar14 + 0x18) = uVar10; + pcVar14[0x1a] = cVar4; + *(undefined8 *)pcVar14 = uVar6; + *(undefined8 *)(pcVar14 + 8) = uVar7; + error(-0xd7,(String *)&local_60, + "void cv::NAryMatIterator::init(const cv::Mat**, cv::Mat*, uchar**, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x10ee); + String::deallocate((String *)&local_60); + } + if ((int)uVar24 < (int)uVar23) { + lVar15 = *(long *)(puVar30 + 0x12); + lVar26 = (long)(int)uVar23 * 4; + puVar16 = (ulong *)(lVar15 + lVar31 + -8); + uVar19 = *(ulong *)(lVar15 + lVar31 + -8); + if (uVar19 <= (ulong)((long)*(int *)(*(long *)(puVar30 + 0x10) + lVar26) * + *(long *)(lVar15 + lVar31))) { + piVar13 = (int *)(*(long *)(puVar30 + 0x10) + lVar26 + -4); + uVar28 = uVar27 - 2; + do { + uVar22 = uVar28; + uVar23 = uVar24; + if (uVar22 == uVar24) break; + puVar16 = puVar16 + -1; + uVar20 = uVar19 * (long)*piVar13; + uVar19 = *puVar16; + piVar13 = piVar13 + -1; + uVar28 = uVar22 - 1; + uVar23 = uVar22; + } while (*puVar16 <= uVar20); + } + } + if ((int)uVar23 < (int)*(uint *)(this + 0x30)) { + uVar23 = *(uint *)(this + 0x30); + } + *(uint *)(this + 0x30) = uVar23; + } + } + iVar11 = iVar11 + 1; + lVar29 = lVar29 + 8; + } while (iVar11 < *(int *)(this + 0x18)); + if (-1 < iVar25) { + uVar28 = uVar27 - 1; + uVar19 = -(ulong)(uVar28 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar28 << 2; + uVar23 = *(uint *)(this + 0x30); + lVar29 = *(long *)(*(long *)(*(long *)this + (long)iVar25 * 8) + 0x40); + iVar11 = *(int *)(lVar29 + uVar19); + *(long *)(this + 0x28) = (long)iVar11; + if ((int)uVar23 < (int)uVar28) { + lVar31 = uVar19 - 4; + piVar13 = (int *)(lVar29 + lVar31); + lVar31 = (long)iVar11 * (long)*(int *)(lVar29 + lVar31); + uVar27 = uVar27 - 2; + if (lVar31 - (int)lVar31 == 0) { + do { + uVar28 = uVar27; + iVar11 = (int)lVar31; + if (uVar28 == uVar23) { + *(long *)(this + 0x28) = (long)iVar11; + uVar28 = uVar23; + goto joined_r0x0032da70; + } + piVar13 = piVar13 + -1; + lVar31 = (long)iVar11 * (long)*piVar13; + uVar27 = uVar28 - 1; + } while (lVar31 - (int)lVar31 == 0); + *(long *)(this + 0x28) = (long)iVar11; + } + } +joined_r0x0032da70: + if (uVar28 == uVar24) { + *(undefined4 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x20) = 1; + } + else { + lVar31 = 1; + *(uint *)(this + 0x30) = uVar28; + *(undefined8 *)(this + 0x20) = 1; + if (-1 < (int)(uVar28 - 1)) { + piVar13 = (int *)(lVar29 + (long)(int)(uVar28 - 1) * 4); + do { + piVar18 = piVar13 + -1; + lVar31 = lVar31 * *piVar13; + piVar13 = piVar18; + } while (piVar18 != (int *)(lVar29 + -4)); + *(long *)(this + 0x20) = lVar31; + } + } + goto LAB_0032d4a0; + } + } + } + *(undefined4 *)(this + 0x30) = 0; +LAB_0032d4a0: + *(undefined8 *)(this + 0x38) = 0; + if ((*(long *)(this + 8) != 0) && (0 < *(int *)(this + 0x18))) { + lVar31 = 0; + lVar29 = 0; + iVar11 = 0; + do { + local_60 = *(Mat **)(*(long *)this + lVar29); + if (local_60 == (Mat *)0x0) { + uStack_58 = local_60; + pcVar14 = (char *)String::allocate((String *)&local_60,0xe); + uVar10 = s_arrays_i_____0_0046b590._12_2_; + uVar8 = s_arrays_i_____0_0046b590._8_4_; + *(undefined8 *)pcVar14 = s_arrays_i_____0_0046b590._0_8_; + *(undefined4 *)(pcVar14 + 8) = uVar8; + *(undefined2 *)(pcVar14 + 0xc) = uVar10; + error(-0xd7,(String *)&local_60, + "void cv::NAryMatIterator::init(const cv::Mat**, cv::Mat*, uchar**, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1113); + String::deallocate((String *)&local_60); + local_60 = *(Mat **)(*(long *)this + lVar29); + } + local_50 = *(long *)((long)local_60 + 0x10); + local_48 = local_50; + if (local_50 == 0) { + local_18 = &local_10; + local_20 = &uStack_58; + pMVar1 = (Mat *)(*(long *)(this + 8) + lVar31); + uStack_58 = (Mat *)_UNK_0032dc58; + local_60 = (Mat *)_DAT_0032dc50; + lStack_8 = 0; + local_10 = 0; + local_30 = local_50; + if (pMVar1 != (Mat *)&local_60) { + local_40 = local_50; + local_38 = local_50; + local_28 = local_50; + if (*(long *)(pMVar1 + 0x38) != 0) { + piVar13 = (int *)(*(long *)(pMVar1 + 0x38) + 0x14); + do { + iVar25 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar25 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar25 == 1) { + Mat::deallocate(pMVar1); + } + } + *(undefined8 *)(pMVar1 + 0x38) = 0; + *(undefined8 *)(pMVar1 + 0x10) = 0; + *(undefined8 *)(pMVar1 + 0x28) = 0; + *(undefined8 *)(pMVar1 + 0x20) = 0; + *(undefined8 *)(pMVar1 + 0x18) = 0; + if (*(int *)(pMVar1 + 4) < 1) { + *(undefined4 *)pMVar1 = (undefined4)local_60; +LAB_0032d954: + if (2 < local_60._4_4_) goto LAB_0032d960; + *(int *)(pMVar1 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar1 + 8) = (undefined4)uStack_58; + plVar17 = *(long **)(pMVar1 + 0x48); + *(undefined4 *)(pMVar1 + 0xc) = uStack_58._4_4_; + *plVar17 = *local_18; + plVar17[1] = local_18[1]; + } + else { + iVar25 = 0; + puVar21 = *(undefined4 **)(pMVar1 + 0x40); + do { + *puVar21 = 0; + iVar25 = iVar25 + 1; + puVar21 = puVar21 + 1; + } while (iVar25 < *(int *)(pMVar1 + 4)); + *(undefined4 *)pMVar1 = (undefined4)local_60; + if (*(int *)(pMVar1 + 4) < 3) goto LAB_0032d954; +LAB_0032d960: + Mat::copySize(pMVar1,(Mat *)&local_60); + } + *(long *)(pMVar1 + 0x10) = local_50; + *(long *)(pMVar1 + 0x18) = local_48; + *(long *)(pMVar1 + 0x20) = local_40; + *(long *)(pMVar1 + 0x28) = local_38; + *(long *)(pMVar1 + 0x30) = local_30; + *(long *)(pMVar1 + 0x38) = local_28; + if (local_28 != 0) { + piVar13 = (int *)(local_28 + 0x14); + do { + iVar25 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar25 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + } + if (0 < local_60._4_4_) { + iVar25 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar25 = iVar25 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar25 < local_60._4_4_); + } + } + else { + uVar24 = *(uint *)local_60; + iVar25 = (uVar24 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar24 & 7) << 1)) & 3); + local_18 = &local_10; + uStack_58 = (Mat *)CONCAT44((int)*(undefined8 *)(this + 0x28),1); + local_20 = &uStack_58; + local_10 = (long)iVar25 * (long)(int)*(undefined8 *)(this + 0x28); + /* catch() { ... } // from try @ 0032d59c with catch @ 0032d548 + catch() { ... } // from try @ 0032d5c4 with catch @ 0032d548 + catch() { ... } // from try @ 0032d5e0 with catch @ 0032d548 */ + pMVar1 = (Mat *)(*(long *)(this + 8) + lVar31); + lStack_8 = (long)iVar25; + local_30 = 0; + local_28 = 0; + local_60 = (Mat *)(CONCAT44(2,(uVar24 & 0xfff) + 0x42ff0000) | 0x4000); + local_40 = local_50 + local_10; + if (pMVar1 != (Mat *)&local_60) { + local_38 = local_40; + if (*(long *)(pMVar1 + 0x38) == 0) { +LAB_0032d5ac: + *(undefined8 *)(pMVar1 + 0x38) = 0; + *(undefined8 *)(pMVar1 + 0x10) = 0; + /* try { // try from 0032d5bc to 0042d5bf has its CatchHandler @ 0032d5d0 */ + *(undefined8 *)(pMVar1 + 0x28) = 0; + *(undefined8 *)(pMVar1 + 0x20) = 0; + /* try { // try from 0032d5c4 to 0042d5c7 has its CatchHandler @ 0032d548 */ + *(undefined8 *)(pMVar1 + 0x18) = 0; + if (0 < *(int *)(pMVar1 + 4)) goto LAB_0032d5cc; +LAB_0032d88c: + *(undefined4 *)pMVar1 = (undefined4)local_60; +LAB_0032d5f8: + if (2 < local_60._4_4_) goto LAB_0032d854; + *(int *)(pMVar1 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar1 + 8) = (undefined4)uStack_58; + plVar17 = *(long **)(pMVar1 + 0x48); + *(undefined4 *)(pMVar1 + 0xc) = uStack_58._4_4_; + *plVar17 = *local_18; + plVar17[1] = local_18[1]; + } + else { + piVar13 = (int *)(*(long *)(pMVar1 + 0x38) + 0x14); + do { + iVar25 = *piVar13; + /* try { // try from 0032d59c to 0042d59f has its CatchHandler @ 0032d548 */ + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar25 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar25 != 1) goto LAB_0032d5ac; + Mat::deallocate(pMVar1); + *(undefined8 *)(pMVar1 + 0x38) = 0; + *(undefined8 *)(pMVar1 + 0x10) = 0; + *(undefined8 *)(pMVar1 + 0x28) = 0; + *(undefined8 *)(pMVar1 + 0x20) = 0; + *(undefined8 *)(pMVar1 + 0x18) = 0; + if (*(int *)(pMVar1 + 4) < 1) goto LAB_0032d88c; +LAB_0032d5cc: + /* catch() { ... } // from try @ 0032d5bc with catch @ 0032d5d0 */ + iVar25 = 0; + puVar21 = *(undefined4 **)(pMVar1 + 0x40); + do { + *puVar21 = 0; + iVar25 = iVar25 + 1; + /* try { // try from 0032d5e0 to 0042d5e3 has its CatchHandler @ 0032d548 */ + puVar21 = puVar21 + 1; + } while (iVar25 < *(int *)(pMVar1 + 4)); + *(undefined4 *)pMVar1 = (undefined4)local_60; + if (*(int *)(pMVar1 + 4) < 3) goto LAB_0032d5f8; +LAB_0032d854: + Mat::copySize(pMVar1,(Mat *)&local_60); + } + *(long *)(pMVar1 + 0x10) = local_50; + *(long *)(pMVar1 + 0x18) = local_48; + *(long *)(pMVar1 + 0x20) = local_40; + *(long *)(pMVar1 + 0x28) = local_38; + *(long *)(pMVar1 + 0x30) = local_30; + *(long *)(pMVar1 + 0x38) = local_28; + if (local_28 != 0) { + piVar13 = (int *)(local_28 + 0x14); + do { + iVar25 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar25 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + } + if (0 < local_60._4_4_) { + iVar25 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar25 = iVar25 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar25 < local_60._4_4_); + } + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 != &local_10) { + fastFree(local_18); + } + iVar11 = iVar11 + 1; + lVar29 = lVar29 + 8; + lVar31 = lVar31 + 0x60; + } while (iVar11 < *(int *)(this + 0x18)); + } + return; +} + + +================================================================== + +### FUNC 0032dc60 (44 bytes) name=NAryMatIterator + +/* cv::NAryMatIterator::NAryMatIterator(cv::Mat const**, cv::Mat*, int) */ + +void __thiscall +cv::NAryMatIterator::NAryMatIterator(NAryMatIterator *this,Mat **param_1,Mat *param_2,int param_3) + +{ + *(undefined4 *)(this + 0x18) = 0; + *(undefined4 *)(this + 0x30) = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x38) = 0; + init(this,param_1,param_2,(uchar **)0x0,param_3); + return; +} + + +================================================================== + +### FUNC 0032dc8c (52 bytes) name=NAryMatIterator + +/* cv::NAryMatIterator::NAryMatIterator(cv::Mat const**, unsigned char**, int) */ + +void __thiscall +cv::NAryMatIterator::NAryMatIterator + (NAryMatIterator *this,Mat **param_1,uchar **param_2,int param_3) + +{ + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined4 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + init(this,param_1,(Mat *)0x0,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0032dcc0 (432 bytes) name=operator++ + +/* cv::NAryMatIterator::TEMPNAMEPLACEHOLDERVALUE() */ + +void __thiscall cv::NAryMatIterator::operator++(NAryMatIterator *this) + +{ + ulong uVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + bool bVar7; + long lVar8; + int iVar9; + ulong uVar10; + long *plVar11; + long lVar12; + int *piVar13; + long lVar14; + long lVar15; + + if (*(ulong *)(this + 0x38) < *(long *)(this + 0x20) - 1U) { + uVar1 = *(ulong *)(this + 0x38) + 1; + *(ulong *)(this + 0x38) = uVar1; + if (*(int *)(this + 0x30) == 1) { + lVar14 = *(long *)(this + 0x10); + if (lVar14 != 0) { + iVar2 = *(int *)(this + 0x18); + if (iVar2 < 1) { + return; + } + lVar15 = 0; + while( true ) { + bVar7 = lVar15 == (ulong)(iVar2 - 1) * 8; + if (*(long *)(lVar14 + lVar15) != 0) { + *(ulong *)(lVar14 + lVar15) = + *(long *)(*(long *)(*(long *)this + lVar15) + 0x10) + + uVar1 * **(long **)(*(long *)(*(long *)this + lVar15) + 0x48); + } + lVar15 = lVar15 + 8; + if (bVar7) break; + lVar14 = *(long *)(this + 0x10); + } + } + if ((*(long *)(this + 8) != 0) && (iVar2 = *(int *)(this + 0x18), 0 < iVar2)) { + plVar11 = (long *)(*(long *)(this + 8) + 0x10); + lVar14 = 0; + do { + if (*plVar11 != 0) { + *plVar11 = *(long *)(*(long *)(*(long *)this + lVar14) + 0x10) + + uVar1 * **(long **)(*(long *)(*(long *)this + lVar14) + 0x48); + } + lVar14 = lVar14 + 8; + plVar11 = plVar11 + 0xc; + } while (lVar14 != ((ulong)(iVar2 - 1) + 1) * 8); + return; + } + } + else { + iVar2 = *(int *)(this + 0x18); + if (0 < iVar2) { + uVar5 = *(int *)(this + 0x30) - 1; + lVar15 = 0; + lVar14 = 0; + do { + lVar8 = *(long *)(*(long *)this + lVar14); + lVar12 = *(long *)(lVar8 + 0x10); + if (lVar12 != 0) { + if (((uint)(0 < (int)uVar1) & ~uVar5 >> 0x1f) != 0) { + uVar10 = uVar1 & 0xffffffff; + plVar11 = (long *)(*(long *)(lVar8 + 0x48) + (long)(int)uVar5 * 8); + piVar13 = (int *)(*(long *)(lVar8 + 0x40) + (long)(int)uVar5 * 4); + uVar6 = uVar5; + do { + iVar3 = *piVar13; + uVar6 = uVar6 - 1; + uVar4 = 0; + iVar9 = (int)uVar10; + if (iVar3 != 0) { + uVar4 = iVar9 / iVar3; + } + uVar10 = (ulong)uVar4; + lVar12 = lVar12 + (long)(int)(iVar9 - uVar4 * iVar3) * *plVar11; + } while ((0 < (int)uVar4) && + (plVar11 = plVar11 + -1, piVar13 = piVar13 + -1, -1 < (int)uVar6)); + } + if (*(long *)(this + 0x10) != 0) { + *(long *)(*(long *)(this + 0x10) + lVar14) = lVar12; + } + if (*(long *)(this + 8) != 0) { + *(long *)(*(long *)(this + 8) + lVar15 + 0x10) = lVar12; + } + } + lVar14 = lVar14 + 8; + lVar15 = lVar15 + 0x60; + } while (lVar14 != ((ulong)(iVar2 - 1) + 1) * 8); + } + } + } + return; +} + + +================================================================== + +### FUNC 0032de70 (920 bytes) name=download + +/* cv::MatAllocator::download(cv::UMatData*, void*, int, unsigned long const*, unsigned long const*, + unsigned long const*, unsigned long const*) const */ + +MatAllocator * __thiscall +cv::MatAllocator::download + (MatAllocator *this,UMatData *param_1,void *param_2,int param_3,ulong *param_4, + ulong *param_5,ulong *param_6,ulong *param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + ulong uVar6; + char *pcVar7; + int iVar8; + ulong uVar9; + long lVar10; + void *pvVar11; + Mat *local_1a0; + Mat *local_198; + uchar *local_190; + void *local_188; + NAryMatIterator aNStack_180 [32]; + ulong local_160; + size_t local_158; + Mat aMStack_140 [4]; + int local_13c; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + long local_108; + undefined4 *local_100; + MatAllocator *local_f8; + MatAllocator aMStack_f0 [16]; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + long local_a8; + undefined4 *local_a0; + undefined1 *local_98; + undefined1 auStack_90 [16]; + int local_80 [32]; + + if (param_1 != (UMatData *)0x0) { + pvVar11 = *(void **)(param_1 + 0x18); + if (0 < param_3) { + if (param_5 == (ulong *)0x0) { + uVar6 = *param_4; + lVar10 = 0; + while( true ) { + if (0x7fffffff < uVar6) { + local_e0 = 0; + local_d8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_e0,0x18); + uVar5 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._8_8_; + uVar4 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_sz_i__<__(size_t)INT_MAX_0046b5e0._16_8_; + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + error(-0xd7,(String *)&local_e0, + "virtual void cv::MatAllocator::download(cv::UMatData*, void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4e); + String::deallocate((String *)&local_e0); + uVar6 = param_4[lVar10]; + } + if (uVar6 == 0) { + return (MatAllocator *)0x0; + } + local_80[lVar10] = (int)uVar6; + lVar10 = lVar10 + 1; + if (lVar10 == (ulong)(param_3 - 1) + 1) break; + uVar6 = param_4[lVar10]; + } + } + else { + lVar10 = 0; + do { + uVar6 = param_4[lVar10]; + if (0x7fffffff < uVar6) { + local_e0 = 0; + local_d8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_e0,0x18); + *(undefined8 *)(pcVar7 + 0x10) = s_sz_i__<__(size_t)INT_MAX_0046b5e0._16_8_; + uVar4 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._8_8_; + *(undefined8 *)pcVar7 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar4; + error(-0xd7,(String *)&local_e0, + "virtual void cv::MatAllocator::download(cv::UMatData*, void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x4e); + String::deallocate((String *)&local_e0); + uVar6 = param_4[lVar10]; + } + if (uVar6 == 0) { + return (MatAllocator *)0x0; + } + if ((int)lVar10 < (int)(param_3 - 1U)) { + uVar9 = param_6[lVar10]; + } + else { + uVar9 = 1; + } + pvVar11 = (void *)((long)pvVar11 + uVar9 * param_5[lVar10]); + local_80[lVar10] = (int)uVar6; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(param_3 - 1U) + 1); + } + } + Mat::Mat(aMStack_140,param_3,local_80,0,pvVar11,param_6); + Mat::Mat((Mat *)&local_e0,param_3,local_80,0,param_2,param_7); + local_1a0 = aMStack_140; + local_198 = (Mat *)&local_e0; + NAryMatIterator::NAryMatIterator(aNStack_180,&local_1a0,&local_190,2); + for (uVar6 = 0; uVar6 < local_160; uVar6 = uVar6 + 1) { + memcpy(local_188,local_190,local_158); + NAryMatIterator::operator++(aNStack_180); + } + if (local_a8 != 0) { + piVar1 = (int *)(local_a8 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_e0); + } + } + local_a8 = 0; + local_d0 = 0; + local_b8 = 0; + local_c0 = 0; + local_c8 = 0; + if (0 < local_e0._4_4_) { + iVar8 = 0; + do { + *local_a0 = 0; + iVar8 = iVar8 + 1; + local_a0 = local_a0 + 1; + } while (iVar8 < local_e0._4_4_); + } + if (local_98 != auStack_90) { + fastFree(local_98); + } + if (local_108 != 0) { + piVar1 = (int *)(local_108 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(aMStack_140); + } + } + local_108 = 0; + local_130 = 0; + local_118 = 0; + local_120 = 0; + local_128 = 0; + if (0 < local_13c) { + iVar8 = 0; + do { + *local_100 = 0; + iVar8 = iVar8 + 1; + local_100 = local_100 + 1; + } while (iVar8 < local_13c); + } + this = local_f8; + if (local_f8 != aMStack_f0) { + this = (MatAllocator *)fastFree(local_f8); + } + } + return this; +} + + +================================================================== + +### FUNC 0032e268 (920 bytes) name=upload + +/* cv::MatAllocator::upload(cv::UMatData*, void const*, int, unsigned long const*, unsigned long + const*, unsigned long const*, unsigned long const*) const */ + +MatAllocator * __thiscall +cv::MatAllocator::upload + (MatAllocator *this,UMatData *param_1,void *param_2,int param_3,ulong *param_4, + ulong *param_5,ulong *param_6,ulong *param_7) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + ulong uVar6; + char *pcVar7; + int iVar8; + ulong uVar9; + long lVar10; + void *pvVar11; + Mat *local_1a0; + Mat *local_198; + uchar *local_190; + void *local_188; + NAryMatIterator aNStack_180 [32]; + ulong local_160; + size_t local_158; + Mat aMStack_140 [4]; + int local_13c; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + long local_108; + undefined4 *local_100; + MatAllocator *local_f8; + MatAllocator aMStack_f0 [16]; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + long local_a8; + undefined4 *local_a0; + undefined1 *local_98; + undefined1 auStack_90 [16]; + int local_80 [32]; + + if (param_1 != (UMatData *)0x0) { + pvVar11 = *(void **)(param_1 + 0x18); + if (0 < param_3) { + if (param_5 == (ulong *)0x0) { + uVar6 = *param_4; + lVar10 = 0; + while( true ) { + if (0x7fffffff < uVar6) { + local_e0 = 0; + local_d8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_e0,0x18); + uVar5 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._8_8_; + uVar4 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_sz_i__<__(size_t)INT_MAX_0046b5e0._16_8_; + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + error(-0xd7,(String *)&local_e0, + "virtual void cv::MatAllocator::upload(cv::UMatData*, const void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6d); + String::deallocate((String *)&local_e0); + uVar6 = param_4[lVar10]; + } + if (uVar6 == 0) { + return (MatAllocator *)0x0; + } + local_80[lVar10] = (int)uVar6; + lVar10 = lVar10 + 1; + if (lVar10 == (ulong)(param_3 - 1) + 1) break; + uVar6 = param_4[lVar10]; + } + } + else { + lVar10 = 0; + do { + uVar6 = param_4[lVar10]; + if (0x7fffffff < uVar6) { + local_e0 = 0; + local_d8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_e0,0x18); + *(undefined8 *)(pcVar7 + 0x10) = s_sz_i__<__(size_t)INT_MAX_0046b5e0._16_8_; + uVar4 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._8_8_; + *(undefined8 *)pcVar7 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar4; + error(-0xd7,(String *)&local_e0, + "virtual void cv::MatAllocator::upload(cv::UMatData*, const void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x6d); + String::deallocate((String *)&local_e0); + uVar6 = param_4[lVar10]; + } + if (uVar6 == 0) { + return (MatAllocator *)0x0; + } + if ((int)lVar10 < (int)(param_3 - 1U)) { + uVar9 = param_6[lVar10]; + } + else { + uVar9 = 1; + } + pvVar11 = (void *)((long)pvVar11 + uVar9 * param_5[lVar10]); + local_80[lVar10] = (int)uVar6; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)(param_3 - 1U) + 1); + } + } + Mat::Mat(aMStack_140,param_3,local_80,0,param_2,param_7); + Mat::Mat((Mat *)&local_e0,param_3,local_80,0,pvVar11,param_6); + local_1a0 = aMStack_140; + local_198 = (Mat *)&local_e0; + NAryMatIterator::NAryMatIterator(aNStack_180,&local_1a0,&local_190,2); + for (uVar6 = 0; uVar6 < local_160; uVar6 = uVar6 + 1) { + memcpy(local_188,local_190,local_158); + NAryMatIterator::operator++(aNStack_180); + } + if (local_a8 != 0) { + piVar1 = (int *)(local_a8 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_e0); + } + } + local_a8 = 0; + local_d0 = 0; + local_b8 = 0; + local_c0 = 0; + local_c8 = 0; + if (0 < local_e0._4_4_) { + iVar8 = 0; + do { + *local_a0 = 0; + iVar8 = iVar8 + 1; + local_a0 = local_a0 + 1; + } while (iVar8 < local_e0._4_4_); + } + if (local_98 != auStack_90) { + fastFree(local_98); + } + if (local_108 != 0) { + piVar1 = (int *)(local_108 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(aMStack_140); + } + } + local_108 = 0; + local_130 = 0; + local_118 = 0; + local_120 = 0; + local_128 = 0; + if (0 < local_13c) { + iVar8 = 0; + do { + *local_100 = 0; + iVar8 = iVar8 + 1; + local_100 = local_100 + 1; + } while (iVar8 < local_13c); + } + this = local_f8; + if (local_f8 != aMStack_f0) { + this = (MatAllocator *)fastFree(local_f8); + } + } + return this; +} + + +================================================================== + +### FUNC 0032e660 (808 bytes) name=copy + +/* cv::MatAllocator::copy(cv::UMatData*, cv::UMatData*, int, unsigned long const*, unsigned long + const*, unsigned long const*, unsigned long const*, unsigned long const*, bool) const */ + +UMatData * +cv::MatAllocator::copy + (UMatData *param_1,UMatData *param_2,int param_3,ulong *param_4,ulong *param_5, + ulong *param_6,ulong *param_7,ulong *param_8,bool param_9) + +{ + int *piVar1; + char cVar2; + bool bVar3; + uint uVar4; + undefined8 uVar5; + ulong uVar6; + char *pcVar7; + long lVar8; + int iVar9; + long lVar10; + void *pvVar11; + void *pvVar12; + undefined7 in_stack_00000001; + Mat *local_1a0; + Mat *local_198; + uchar *local_190; + void *local_188; + NAryMatIterator aNStack_180 [32]; + ulong local_160; + size_t local_158; + Mat aMStack_140 [4]; + int local_13c; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 local_118; + long local_108; + undefined4 *local_100; + UMatData *local_f8; + UMatData aUStack_f0 [16]; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + long local_a8; + undefined4 *local_a0; + undefined1 *local_98; + undefined1 auStack_90 [16]; + int local_80 [32]; + + if ((param_2 != (UMatData *)0x0) && ((ulong)(uint)param_3 != 0)) { + iVar9 = (int)param_4; + pvVar12 = *(void **)(param_2 + 0x18); + pvVar11 = *(void **)((ulong)(uint)param_3 + 0x18); + if (0 < iVar9) { + uVar4 = iVar9 - 1; + lVar10 = 0; + do { + uVar6 = param_5[lVar10]; + if (0x7fffffff < uVar6) { + local_e0 = 0; + local_d8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_e0,0x18); + *(undefined8 *)(pcVar7 + 0x10) = s_sz_i__<__(size_t)INT_MAX_0046b5e0._16_8_; + uVar5 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._8_8_; + *(undefined8 *)pcVar7 = s_sz_i__<__(size_t)INT_MAX_0046b5e0._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar5; + error(-0xd7,(String *)&local_e0, + "virtual void cv::MatAllocator::copy(cv::UMatData*, cv::UMatData*, int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, bool) const" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8c); + String::deallocate((String *)&local_e0); + uVar6 = param_5[lVar10]; + } + if (uVar6 == 0) { + return (UMatData *)0x0; + } + if (param_6 != (ulong *)0x0) { + if ((int)lVar10 < (int)uVar4) { + pvVar12 = (void *)((long)pvVar12 + param_7[lVar10] * param_6[lVar10]); + } + else { + pvVar12 = (void *)((long)pvVar12 + param_6[lVar10]); + } + } + if (param_8 != (ulong *)0x0) { + if ((int)lVar10 < (int)uVar4) { + lVar8 = *(long *)(CONCAT71(in_stack_00000001,param_9) + lVar10 * 8); + } + else { + lVar8 = 1; + } + pvVar11 = (void *)((long)pvVar11 + lVar8 * param_8[lVar10]); + } + local_80[lVar10] = (int)uVar6; + lVar10 = lVar10 + 1; + } while (lVar10 != (ulong)uVar4 + 1); + } + Mat::Mat(aMStack_140,iVar9,local_80,0,pvVar12,param_7); + Mat::Mat((Mat *)&local_e0,iVar9,local_80,0,pvVar11,(ulong *)CONCAT71(in_stack_00000001,param_9)) + ; + local_1a0 = aMStack_140; + local_198 = (Mat *)&local_e0; + NAryMatIterator::NAryMatIterator(aNStack_180,&local_1a0,&local_190,2); + for (uVar6 = 0; uVar6 < local_160; uVar6 = uVar6 + 1) { + memcpy(local_188,local_190,local_158); + NAryMatIterator::operator++(aNStack_180); + } + if (local_a8 != 0) { + piVar1 = (int *)(local_a8 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_e0); + } + } + local_a8 = 0; + local_d0 = 0; + local_b8 = 0; + local_c0 = 0; + local_c8 = 0; + if (0 < local_e0._4_4_) { + iVar9 = 0; + do { + *local_a0 = 0; + iVar9 = iVar9 + 1; + local_a0 = local_a0 + 1; + } while (iVar9 < local_e0._4_4_); + } + if (local_98 != auStack_90) { + fastFree(local_98); + } + if (local_108 != 0) { + piVar1 = (int *)(local_108 + 0x14); + do { + iVar9 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + Mat::deallocate(aMStack_140); + } + } + local_108 = 0; + local_130 = 0; + local_118 = 0; + local_120 = 0; + local_128 = 0; + if (0 < local_13c) { + iVar9 = 0; + do { + *local_100 = 0; + iVar9 = iVar9 + 1; + local_100 = local_100 + 1; + } while (iVar9 < local_13c); + } + param_1 = local_f8; + if (local_f8 != aUStack_f0) { + param_1 = (UMatData *)fastFree(local_f8); + } + } + return param_1; +} + + +================================================================== + +### FUNC 0032e9e8 (68 bytes) name=operator++ + +/* cv::NAryMatIterator::TEMPNAMEPLACEHOLDERVALUE(int) */ + +undefined8 * __thiscall cv::NAryMatIterator::operator++(NAryMatIterator *this,int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 *in_x8; + + uVar4 = *(undefined8 *)(this + 8); + uVar1 = *(undefined8 *)(this + 0x10); + uVar5 = *(undefined8 *)(this + 0x18); + uVar2 = *(undefined8 *)(this + 0x20); + uVar6 = *(undefined8 *)(this + 0x28); + uVar3 = *(undefined8 *)(this + 0x30); + uVar7 = *(undefined8 *)(this + 0x38); + *in_x8 = *(undefined8 *)this; + in_x8[1] = uVar4; + in_x8[2] = uVar1; + in_x8[3] = uVar5; + in_x8[4] = uVar2; + in_x8[5] = uVar6; + in_x8[6] = uVar3; + in_x8[7] = uVar7; + operator++(this); + return in_x8; +} + + +================================================================== + +### FUNC 0032ea2c (88 bytes) name=pos + +/* cv::MatConstIterator::pos() const */ + +void cv::MatConstIterator::pos(void) + +{ + int iVar1; + undefined4 uVar2; + long *in_x0; + long lVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + undefined4 *in_x8; + + lVar3 = *in_x0; + if (lVar3 != 0) { + uVar6 = **(ulong **)(lVar3 + 0x48); + uVar5 = in_x0[2] - *(long *)(lVar3 + 0x10); + uVar4 = in_x0[1]; + iVar1 = 0; + if (uVar6 != 0) { + iVar1 = (int)(uVar5 / uVar6); + } + in_x8[1] = iVar1; + uVar2 = 0; + if (uVar4 != 0) { + uVar2 = (undefined4)((uVar5 - (long)iVar1 * uVar6) / uVar4); + } + *in_x8 = uVar2; + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 0032ea84 (224 bytes) name=pos + +/* cv::MatConstIterator::pos(int*) const */ + +void __thiscall cv::MatConstIterator::pos(MatConstIterator *this,int *param_1) + +{ + ulong uVar1; + undefined4 uVar2; + undefined2 uVar3; + int iVar4; + long lVar5; + char *pcVar6; + long lVar7; + ulong uVar8; + ulong uVar9; + long lVar10; + undefined8 local_10; + undefined8 local_8; + + lVar10 = *(long *)this; + if ((param_1 == (int *)0x0) || (lVar10 == 0)) { + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0xe); + uVar3 = s_m____0_____idx_0046b600._12_2_; + uVar2 = s_m____0_____idx_0046b600._8_4_; + *(undefined8 *)pcVar6 = s_m____0_____idx_0046b600._0_8_; + *(undefined4 *)(pcVar6 + 8) = uVar2; + *(undefined2 *)(pcVar6 + 0xc) = uVar3; + error(-0xd7,(String *)&local_10,"void cv::MatConstIterator::pos(int*) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x116d); + String::deallocate((String *)&local_10); + lVar10 = *(long *)this; + } + uVar8 = *(long *)(this + 0x10) - *(long *)(lVar10 + 0x10); + if (0 < *(int *)(lVar10 + 4)) { + lVar7 = *(long *)(lVar10 + 0x48); + lVar5 = 0; + do { + uVar9 = *(ulong *)(lVar7 + lVar5 * 8); + iVar4 = (int)lVar5; + uVar1 = 0; + if (uVar9 != 0) { + uVar1 = uVar8 / uVar9; + } + param_1[lVar5] = (int)uVar1; + lVar5 = lVar5 + 1; + uVar8 = uVar8 - uVar1 * uVar9; + } while (iVar4 + 1 < *(int *)(lVar10 + 4)); + } + return; +} + + +================================================================== + +### FUNC 0032eb78 (172 bytes) name=lpos + +/* cv::MatConstIterator::lpos() const */ + +ulong __thiscall cv::MatConstIterator::lpos(MatConstIterator *this) + +{ + long lVar1; + uint uVar2; + ulong uVar3; + long lVar4; + uint *puVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + + puVar5 = *(uint **)this; + if (puVar5 == (uint *)0x0) { + return 0; + } + if ((*puVar5 >> 0xe & 1) == 0) { + uVar2 = puVar5[1]; + uVar6 = *(long *)(this + 0x10) - *(long *)(puVar5 + 4); + if (uVar2 != 2) { + uVar3 = 0; + if (0 < (int)uVar2) { + lVar4 = 0; + uVar3 = 0; + do { + uVar7 = *(ulong *)(*(long *)(puVar5 + 0x12) + lVar4 * 8); + lVar1 = lVar4 * 4; + lVar4 = lVar4 + 1; + uVar8 = 0; + if (uVar7 != 0) { + uVar8 = uVar6 / uVar7; + } + uVar6 = uVar6 - uVar8 * uVar7; + uVar3 = uVar8 + (long)*(int *)(*(long *)(puVar5 + 0x10) + lVar1) * uVar3; + } while ((int)lVar4 < (int)uVar2); + } + return uVar3; + } + uVar8 = **(ulong **)(puVar5 + 0x12); + uVar3 = 0; + if (uVar8 != 0) { + uVar3 = uVar6 / uVar8; + } + uVar7 = 0; + if (*(ulong *)(this + 8) != 0) { + uVar7 = (uVar6 - uVar3 * uVar8) / *(ulong *)(this + 8); + } + return uVar7 + (long)(int)puVar5[3] * uVar3; + } + uVar6 = 0; + if (*(ulong *)(this + 8) != 0) { + uVar6 = (ulong)(*(long *)(this + 0x10) - *(long *)(this + 0x18)) / *(ulong *)(this + 8); + } + return uVar6; +} + + +================================================================== + +### FUNC 0032ec24 (560 bytes) name=seek + +/* cv::MatConstIterator::seek(long, bool) */ + +void __thiscall cv::MatConstIterator::seek(MatConstIterator *this,long param_1,bool param_2) + +{ + long *plVar1; + uint uVar2; + int iVar3; + ulong uVar4; + long lVar5; + int *piVar6; + ulong uVar7; + ulong uVar8; + long lVar9; + long lVar10; + int iVar11; + long lVar12; + uint *puVar13; + ulong uVar14; + long lVar15; + long lVar16; + + puVar13 = *(uint **)this; + if ((*puVar13 >> 0xe & 1) == 0) { + uVar2 = puVar13[1]; + if (uVar2 != 2) { + if (param_2) { + lVar5 = lpos(this); + puVar13 = *(uint **)this; + param_1 = param_1 + lVar5; + } + lVar5 = *(long *)(puVar13 + 0x10); + uVar8 = -(ulong)(uVar2 - 1 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar2 - 1) << 2; + if (param_1 < 0) { + param_1 = 0; + } + uVar2 = uVar2 - 2; + iVar11 = *(int *)(lVar5 + uVar8); + lVar16 = (long)iVar11; + lVar10 = 0; + if (lVar16 != 0) { + lVar10 = param_1 / lVar16; + } + lVar15 = *(long *)(puVar13 + 4) + + (long)((int)param_1 - iVar11 * (int)lVar10) * *(long *)(this + 8); + *(long *)(this + 0x10) = lVar15; + lVar12 = *(long *)(puVar13 + 4); + *(long *)(this + 0x18) = lVar12; + if (-1 < (int)uVar2) { + lVar9 = (long)(int)uVar2 << 3; + piVar6 = (int *)(lVar5 + (uVar8 - 4)); + lVar5 = lVar10; + do { + iVar11 = *piVar6; + plVar1 = (long *)(*(long *)(puVar13 + 0x12) + lVar9); + lVar9 = lVar9 + -8; + lVar10 = 0; + if ((long)iVar11 != 0) { + lVar10 = lVar5 / (long)iVar11; + } + lVar12 = lVar12 + (long)((int)lVar5 - iVar11 * (int)lVar10) * *plVar1; + *(long *)(this + 0x18) = lVar12; + piVar6 = piVar6 + -1; + lVar5 = lVar10; + } while (lVar9 != ((long)(int)uVar2 - (ulong)uVar2) * 8 + -8); + } + lVar5 = lVar12 + lVar16 * *(long *)(this + 8); + *(long *)(this + 0x20) = lVar5; + if (0 < lVar10) { + *(long *)(this + 0x10) = lVar5; + return; + } + *(long *)(this + 0x10) = lVar12 + (lVar15 - *(long *)(puVar13 + 4)); + return; + } + if (param_2) { + lVar5 = *(long *)(puVar13 + 4); + uVar7 = **(ulong **)(puVar13 + 0x12); + uVar14 = *(ulong *)(this + 8); + lVar10 = (long)(int)puVar13[3]; + uVar8 = 0; + if (uVar7 != 0) { + uVar8 = (ulong)(*(long *)(this + 0x10) - lVar5) / uVar7; + } + uVar4 = 0; + if (uVar14 != 0) { + uVar4 = ((*(long *)(this + 0x10) - lVar5) - uVar8 * uVar7) / uVar14; + } + param_1 = uVar4 + lVar10 * uVar8 + param_1; + } + else { + lVar10 = (long)(int)puVar13[3]; + lVar5 = *(long *)(puVar13 + 4); + uVar7 = **(ulong **)(puVar13 + 0x12); + uVar14 = *(ulong *)(this + 8); + } + lVar16 = 0; + if (lVar10 != 0) { + lVar16 = param_1 / lVar10; + } + uVar2 = puVar13[2]; + iVar11 = (int)lVar16; + iVar3 = uVar2 - 1; + if (iVar11 < 0) { + iVar11 = 0; + } + if (iVar3 < iVar11) { + iVar11 = iVar3; + } + lVar5 = lVar5 + (long)iVar11 * uVar7; + *(long *)(this + 0x18) = lVar5; + uVar8 = lVar5 + lVar10 * uVar14; + *(ulong *)(this + 0x20) = uVar8; + if (lVar16 < 0) { + *(long *)(this + 0x10) = lVar5; + return; + } + if (lVar16 < (int)uVar2) { + uVar8 = lVar5 + (param_1 - lVar16 * lVar10) * uVar14; + } + } + else { + uVar8 = *(ulong *)(this + 0x18); + uVar7 = *(ulong *)(this + 0x10); + if (!param_2) { + uVar7 = uVar8; + } + uVar7 = uVar7 + param_1 * *(long *)(this + 8); + *(ulong *)(this + 0x10) = uVar7; + if (uVar8 <= uVar7) { + if (uVar7 <= *(ulong *)(this + 0x20)) { + return; + } + *(ulong *)(this + 0x10) = *(ulong *)(this + 0x20); + return; + } + } + *(ulong *)(this + 0x10) = uVar8; + return; +} + + +================================================================== + +### FUNC 0032ee54 (120 bytes) name=seek + +/* cv::MatConstIterator::seek(int const*, bool) */ + +void __thiscall cv::MatConstIterator::seek(MatConstIterator *this,int *param_1,bool param_2) + +{ + long lVar1; + int *piVar2; + int iVar3; + long lVar4; + long lVar5; + long lVar6; + + lVar4 = *(long *)this; + iVar3 = *(int *)(lVar4 + 4); + if (param_1 == (int *)0x0) { + seek(this,0,param_2); + return; + } + if (iVar3 != 2) { + if (0 < iVar3) { + lVar6 = 0; + lVar5 = 0; + do { + lVar1 = lVar6 * 4; + piVar2 = param_1 + lVar6; + lVar6 = lVar6 + 1; + lVar5 = (long)*piVar2 + *(int *)(*(long *)(lVar4 + 0x40) + lVar1) * lVar5; + } while ((int)lVar6 < iVar3); + seek(this,lVar5,param_2); + return; + } + seek(this,0,param_2); + return; + } + seek(this,(long)(param_1[1] + *param_1 * *(int *)(*(long *)(lVar4 + 0x40) + 4)),param_2); + return; +} + + +================================================================== + +### FUNC 0032eecc (500 bytes) name=clear + +/* cv::SparseMat::Hdr::clear() */ + +void __thiscall cv::SparseMat::Hdr::clear(Hdr *this) + +{ + void *__s; + undefined8 *__dest; + void *__dest_00; + undefined8 *__src; + ulong __n; + void *pvVar1; + size_t sVar2; + + __src = *(undefined8 **)(this + 0x40); + *(undefined8 **)(this + 0x48) = __src; + if ((ulong)(*(long *)(this + 0x50) - (long)__src) < 0x40) { + __dest = operator_new(0x40); + *__dest = 0; + __dest[1] = 0; + __dest[2] = 0; + __dest[3] = 0; + __dest[4] = 0; + __dest[5] = 0; + __dest[6] = 0; + __dest[7] = 0; + sVar2 = (long)__src - (long)*(void **)(this + 0x40); + if ((long)sVar2 >> 3 != 0) { + memmove(__dest,*(void **)(this + 0x40),sVar2); + } + pvVar1 = (void *)((long)__dest + sVar2 + 0x40); + sVar2 = *(long *)(this + 0x48) - (long)__src; + if ((long)sVar2 >> 3 != 0) { + memmove(pvVar1,__src,sVar2); + } + if (*(void **)(this + 0x40) != (void *)0x0) { + operator_delete(*(void **)(this + 0x40)); + } + *(undefined8 **)(this + 0x40) = __dest; + *(size_t *)(this + 0x48) = (long)pvVar1 + sVar2; + *(undefined8 **)(this + 0x50) = __dest + 8; + } + else { + *__src = 0; + __src[1] = 0; + __src[2] = 0; + __src[3] = 0; + __src[4] = 0; + __src[5] = 0; + __src[6] = 0; + __src[7] = 0; + *(undefined8 **)(this + 0x48) = __src + 8; + } + pvVar1 = *(void **)(this + 0x28); + __n = *(ulong *)(this + 0x10); + *(void **)(this + 0x30) = pvVar1; + if (__n == 0) { + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + return; + } + if ((ulong)(*(long *)(this + 0x38) - (long)pvVar1) < __n) { + __s = operator_new(__n); + memset(__s,0,__n); + sVar2 = (long)pvVar1 - (long)*(void **)(this + 0x28); + if (sVar2 != 0) { + memmove(__s,*(void **)(this + 0x28),sVar2); + } + __dest_00 = (void *)((long)__s + sVar2 + __n); + sVar2 = *(long *)(this + 0x30) - (long)pvVar1; + if (sVar2 != 0) { + __dest_00 = memmove(__dest_00,pvVar1,sVar2); + } + if (*(void **)(this + 0x28) != (void *)0x0) { + operator_delete(*(void **)(this + 0x28)); + } + *(void **)(this + 0x28) = __s; + *(size_t *)(this + 0x30) = (long)__dest_00 + sVar2; + *(ulong *)(this + 0x38) = (long)__s + __n; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + return; + } + memset(pvVar1,0,__n); + *(ulong *)(this + 0x30) = *(long *)(this + 0x30) + __n; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 0032f0c0 (572 bytes) name=Hdr + +/* cv::SparseMat::Hdr::Hdr(int, int const*, int) */ + +void __thiscall cv::SparseMat::Hdr::Hdr(Hdr *this,int param_1,int *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + size_t __n; + uint uVar7; + int *piVar8; + long lVar9; + Hdr *pHVar10; + undefined8 uVar11; + + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x28) = 0; + uVar7 = (uint)(0x88442211L >> ((param_3 & 7U) << 2)) & 0xf; + *(undefined8 *)(this + 0x40) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined8 *)(this + 0x48) = 0; + *(undefined4 *)this = 1; + uVar7 = -uVar7 & param_1 * 4 + 0xf + uVar7; + *(uint *)(this + 8) = uVar7; + *(int *)(this + 4) = param_1; + *(ulong *)(this + 0x10) = + (long)(int)((((uint)param_3 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((param_3 & 7U) << 1)) & 3)) + uVar7) + 7U & + 0xfffffffffffffff8; + if (param_1 < 1) { + param_1 = 0; + } + else { + if ((this + 0x58 < (Hdr *)(param_2 + 4) && param_2 < this + 0x68) || ((uint)param_1 < 0xc)) { + lVar9 = 0; + do { + lVar2 = lVar9 + 4; + *(undefined4 *)(this + lVar9 + 0x58) = *(undefined4 *)((long)param_2 + lVar9); + lVar9 = lVar2; + } while (lVar2 != ((ulong)(param_1 - 1) + 1) * 4); + } + else { + uVar7 = -((uint)((ulong)param_2 >> 2) & 3) & 3; + uVar4 = param_1; + if (uVar7 < (uint)param_1) { + uVar4 = uVar7; + } + uVar7 = uVar4; + if ((uVar4 != 0) && (*(int *)(this + 0x58) = *param_2, uVar4 != 1)) { + *(int *)(this + 0x5c) = param_2[1]; + if (uVar4 == 3) { + *(int *)(this + 0x60) = param_2[2]; + } + else { + uVar7 = 2; + } + } + uVar1 = ((param_1 - uVar4) - 4 >> 2) + 1; + uVar6 = 0; + iVar5 = uVar1 * 4; + piVar8 = param_2 + uVar4; + pHVar10 = this + (ulong)uVar4 * 4 + 0x58; + do { + uVar11 = *(undefined8 *)piVar8; + uVar6 = uVar6 + 1; + *(undefined8 *)(pHVar10 + 8) = *(undefined8 *)(piVar8 + 2); + *(undefined8 *)pHVar10 = uVar11; + piVar8 = piVar8 + 4; + pHVar10 = pHVar10 + 0x10; + } while (uVar6 < uVar1); + iVar3 = uVar7 + iVar5; + if (param_1 - uVar4 != iVar5) { + lVar9 = (long)iVar3; + *(int *)(this + lVar9 * 4 + 0x58) = param_2[lVar9]; + if (iVar3 + 1 < param_1) { + *(int *)(this + (long)(iVar3 + 1) * 4 + 0x58) = param_2[lVar9 + 1]; + if (iVar3 + 2 < param_1) { + *(int *)(this + (long)(iVar3 + 2) * 4 + 0x58) = param_2[lVar9 + 2]; + } + } + } + } + if (0x1f < param_1) goto LAB_0032f2a0; + } + __n = ((ulong)(0x1f - param_1) + 1) * 4; + if (0x1f < param_1) { + __n = 4; + } + memset(this + (long)param_1 * 4 + 0x58,0,__n); +LAB_0032f2a0: + clear(this); + return; +} + + +================================================================== + +### FUNC 0032f324 (16 bytes) name=clear + +/* cv::SparseMat::clear() */ + +void __thiscall cv::SparseMat::clear(SparseMat *this) + +{ + if (*(Hdr **)(this + 8) != (Hdr *)0x0) { + Hdr::clear(*(Hdr **)(this + 8)); + return; + } + return; +} + + +================================================================== + +### FUNC 0032f334 (620 bytes) name=create + +/* cv::SparseMat::create(int, int const*, int) */ + +void __thiscall cv::SparseMat::create(SparseMat *this,int param_1,int *param_2,int param_3) + +{ + uint uVar1; + int iVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + char *pcVar10; + Hdr *this_00; + int *piVar11; + int iVar12; + int *piVar13; + int *piVar14; + void *pvVar15; + undefined8 local_10; + undefined8 local_8; + + if ((0x1f < param_1 - 1U) || (param_2 == (int *)0x0)) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_10,0x22); + uVar8 = s__sizes____0_<_d_&&_d_<__CV_MAX_D_0046b610._24_8_; + uVar7 = s__sizes____0_<_d_&&_d_<__CV_MAX_D_0046b610._16_8_; + uVar6 = s__sizes____0_<_d_&&_d_<__CV_MAX_D_0046b610._8_8_; + uVar5 = s__sizes____0_<_d_&&_d_<__CV_MAX_D_0046b610._0_8_; + *(undefined2 *)(pcVar10 + 0x20) = s__sizes____0_<_d_&&_d_<__CV_MAX_D_0046b610._32_2_; + *(undefined8 *)pcVar10 = uVar5; + *(undefined8 *)(pcVar10 + 8) = uVar6; + *(undefined8 *)(pcVar10 + 0x10) = uVar7; + *(undefined8 *)(pcVar10 + 0x18) = uVar8; + error(-0xd7,(String *)&local_10,"void cv::SparseMat::create(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x12a7); + String::deallocate((String *)&local_10); + if (param_1 < 1) goto LAB_0032f410; + } + piVar11 = param_2; + do { + while (*piVar11 < 1) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_10,0xd); + cVar3 = s__sizes_i__>_0_0046b638[0xc]; + uVar9 = s__sizes_i__>_0_0046b638._8_4_; + *(undefined8 *)pcVar10 = s__sizes_i__>_0_0046b638._0_8_; + *(undefined4 *)(pcVar10 + 8) = uVar9; + pcVar10[0xc] = cVar3; + error(-0xd7,(String *)&local_10,"void cv::SparseMat::create(int, const int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x12a9); + piVar11 = piVar11 + 1; + String::deallocate((String *)&local_10); + if (piVar11 == param_2 + (ulong)(param_1 - 1U) + 1) goto LAB_0032f410; + } + piVar11 = piVar11 + 1; + } while (piVar11 != param_2 + (ulong)(param_1 - 1U) + 1); +LAB_0032f410: + piVar11 = *(int **)(this + 8); + uVar1 = param_3 & 0xfff; + if (piVar11 != (int *)0x0) { + if ((((*(uint *)this & 0xfff) == uVar1) && (piVar11[1] == param_1)) && (*piVar11 == 1)) { + if (param_1 < 1) { + if (param_1 == 0) { +LAB_0032f58c: + clear(this); + return; + } + } + else if (*param_2 == piVar11[0x16]) { + iVar12 = 0; + piVar13 = piVar11 + 0x17; + piVar14 = param_2; + do { + piVar14 = piVar14 + 1; + iVar12 = iVar12 + 1; + if (iVar12 == piVar11[1]) goto LAB_0032f58c; + iVar2 = *piVar13; + piVar13 = piVar13 + 1; + } while (*piVar14 == iVar2); + } + } + do { + iVar12 = *piVar11; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar4) { + *piVar11 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((iVar12 == 1) && (pvVar15 = *(void **)(this + 8), pvVar15 != (void *)0x0)) { + if (*(void **)((long)pvVar15 + 0x40) != (void *)0x0) { + operator_delete(*(void **)((long)pvVar15 + 0x40)); + } + if (*(void **)((long)pvVar15 + 0x28) != (void *)0x0) { + operator_delete(*(void **)((long)pvVar15 + 0x28)); + } + operator_delete(pvVar15); + } + } + *(undefined8 *)(this + 8) = 0; + *(uint *)this = uVar1 | 0x42fd0000; + this_00 = operator_new(0xd8); + Hdr::Hdr(this_00,param_1,param_2,uVar1); + *(Hdr **)(this + 8) = this_00; + return; +} + + +================================================================== + +### FUNC 0032f5e0 (712 bytes) name=resizeHashTab + +/* cv::SparseMat::resizeHashTab(unsigned long) */ + +void __thiscall cv::SparseMat::resizeHashTab(SparseMat *this,ulong param_1) + +{ + long *plVar1; + long lVar2; + long lVar3; + void *pvVar4; + void *__s; + long lVar5; + void *pvVar6; + size_t sVar7; + long lVar8; + int iVar9; + long *plVar10; + ulong __n; + long lVar11; + ulong uVar12; + long lVar13; + long lVar14; + size_t __n_00; + double dVar15; + void *local_18; + void *local_10; + void *local_8; + + if (param_1 < 8) { + sVar7 = 0x40; + param_1 = 8; + lVar11 = *(long *)(*(long *)(this + 8) + 0x48) - *(long *)(*(long *)(this + 8) + 0x40) >> 3; +LAB_0032f75c: + __s = operator_new(sVar7); + lVar14 = (long)__s + sVar7; + local_18 = __s; + local_8 = (void *)lVar14; + memset(__s,0,sVar7); + if (param_1 == 0) { + sVar7 = 8; + } + lVar13 = *(long *)(this + 8); + local_10 = (void *)lVar14; + memset(__s,0,sVar7); + } + else { + if ((param_1 - 1 & param_1) == 0) { + lVar11 = *(long *)(*(long *)(this + 8) + 0x48) - *(long *)(*(long *)(this + 8) + 0x40) >> 3; +LAB_0032f7e4: + local_8 = (void *)0x0; + sVar7 = param_1 << 3; + local_18 = local_8; + local_10 = local_8; + if (0x1fffffffffffffff < param_1) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + goto LAB_0032f75c; + } + dVar15 = ::log((double)param_1); + lVar13 = *(long *)(this + 8); + local_18 = (void *)0x0; + lVar11 = *(long *)(lVar13 + 0x48) - *(long *)(lVar13 + 0x40) >> 3; + iVar9 = (int)(dVar15 / DAT_0032f8c0); + param_1 = 1L << ((ulong)(iVar9 + (uint)((double)iVar9 < dVar15 / DAT_0032f8c0)) & 0x3f); + if (param_1 != 0) goto LAB_0032f7e4; + local_8 = (void *)0x0; + local_10 = (void *)0x0; + __s = (void *)0x0; + lVar14 = 0; + } + lVar3 = *(long *)(lVar13 + 0x28); + if (lVar11 != 0) { + plVar10 = *(long **)(lVar13 + 0x40); + plVar1 = plVar10 + lVar11; + do { + lVar11 = *plVar10; + while (lVar11 != 0) { + lVar2 = lVar3 + lVar11; + lVar8 = (param_1 - 1 & *(ulong *)(lVar3 + lVar11)) * 8; + lVar5 = *(long *)(lVar2 + 8); + *(undefined8 *)(lVar2 + 8) = *(undefined8 *)((long)__s + lVar8); + *(long *)((long)__s + lVar8) = lVar11; + lVar11 = lVar5; + } + plVar10 = plVar10 + 1; + } while (plVar10 != plVar1); + } + if (&local_18 == (void **)(lVar13 + 0x40)) goto LAB_0032f71c; + pvVar4 = *(void **)(lVar13 + 0x40); + __n = lVar14 - (long)__s; + uVar12 = (long)__n >> 3; + if (uVar12 <= (ulong)(*(long *)(lVar13 + 0x50) - (long)pvVar4 >> 3)) { + pvVar6 = *(void **)(lVar13 + 0x48); + sVar7 = (long)pvVar6 - (long)pvVar4; + if ((ulong)((long)sVar7 >> 3) < uVar12) { + if ((long)sVar7 >> 3 != 0) { + memmove(pvVar4,__s,sVar7); + pvVar4 = *(void **)(lVar13 + 0x40); + pvVar6 = *(void **)(lVar13 + 0x48); + sVar7 = (long)pvVar6 - (long)pvVar4; + } + __n_00 = lVar14 - (long)((long)__s + sVar7); + if ((long)__n_00 >> 3 != 0) { + memmove(pvVar6,(void *)((long)__s + sVar7),__n_00); + pvVar4 = *(void **)(lVar13 + 0x40); + } + } + else if (uVar12 != 0) { + memmove(pvVar4,__s,__n); + *(ulong *)(lVar13 + 0x48) = (long)*(void **)(lVar13 + 0x40) + __n; + goto LAB_0032f71c; + } + *(ulong *)(lVar13 + 0x48) = (long)pvVar4 + __n; + goto LAB_0032f71c; + } + pvVar4 = (void *)0x0; + if (uVar12 == 0) { +LAB_0032f820: + pvVar6 = *(void **)(lVar13 + 0x40); + } + else { + if (0x1fffffffffffffff < uVar12) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + pvVar4 = operator_new(__n); + if (uVar12 == 0) goto LAB_0032f820; + memmove(pvVar4,__s,__n); + pvVar6 = *(void **)(lVar13 + 0x40); + } + if (pvVar6 != (void *)0x0) { + operator_delete(pvVar6); + } + *(void **)(lVar13 + 0x40) = pvVar4; + *(ulong *)(lVar13 + 0x50) = (long)pvVar4 + __n; + *(ulong *)(lVar13 + 0x48) = (long)pvVar4 + __n; +LAB_0032f71c: + if (__s == (void *)0x0) { + return; + } + operator_delete(__s); + return; +} + + +================================================================== + +### FUNC 0032f8c8 (1212 bytes) name=newNode + +/* cv::SparseMat::newNode(int const*, unsigned long) */ + +void * __thiscall cv::SparseMat::newNode(SparseMat *this,int *param_1,ulong param_2) + +{ + undefined4 *puVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + size_t sVar7; + ulong uVar8; + void *__dest; + void *__dest_00; + uint uVar9; + ulong uVar10; + long lVar11; + int *piVar12; + size_t sVar13; + long lVar14; + undefined8 *puVar15; + uint uVar16; + long lVar17; + long lVar18; + ulong uVar19; + long lVar20; + ulong uVar21; + ulong uVar22; + void *__s; + undefined8 uVar23; + ulong uVar24; + + lVar17 = *(long *)(this + 8); + lVar11 = *(long *)(lVar17 + 0x40); + lVar20 = *(long *)(lVar17 + 0x48) - lVar11 >> 3; + uVar22 = *(long *)(lVar17 + 0x18) + 1; + uVar10 = lVar20 * 2; + *(ulong *)(lVar17 + 0x18) = uVar22; + if ((ulong)(lVar20 * 3) < uVar22) { + if (uVar10 < 8) { + uVar10 = 8; + } + resizeHashTab(this,uVar10); + lVar17 = *(long *)(this + 8); + lVar11 = *(long *)(lVar17 + 0x40); + lVar20 = *(long *)(lVar17 + 0x48) - lVar11 >> 3; + } + uVar22 = *(ulong *)(lVar17 + 0x20); + lVar14 = *(long *)(lVar17 + 0x28); + lVar18 = lVar17; + if (uVar22 != 0) goto LAB_0032f9d0; + __s = *(void **)(lVar17 + 0x30); + uVar21 = *(ulong *)(lVar17 + 0x10); + uVar22 = (long)__s - lVar14; + uVar10 = uVar22 * 3 >> 1; + if (uVar10 < uVar21 << 3) { + uVar10 = uVar21 << 3; + } + uVar19 = 0; + if (uVar21 != 0) { + uVar19 = uVar10 / uVar21; + } + uVar19 = uVar19 * uVar21; + if (uVar22 <= uVar19 && uVar19 - uVar22 != 0) { + uVar10 = uVar19 - uVar22; + if (uVar10 != 0) { + if ((ulong)(*(long *)(lVar17 + 0x38) - (long)__s) < uVar10) { + if (~uVar22 < uVar10) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar8 = uVar10; + if (uVar10 < uVar22) { + uVar8 = uVar22; + } + uVar8 = uVar8 + uVar22; + if (uVar8 < uVar22) { + uVar8 = 0xffffffffffffffff; +LAB_0032fd10: + __dest = operator_new(uVar8); + uVar24 = uVar8; + } + else { + __dest = (void *)0x0; + uVar24 = 0; + if (uVar8 != 0) goto LAB_0032fd10; + } + memset((void *)((long)__dest + uVar22),0,uVar10); + sVar7 = (long)__s - (long)*(void **)(lVar17 + 0x28); + sVar13 = 0; + if (sVar7 != 0) { + memmove(__dest,*(void **)(lVar17 + 0x28),sVar7); + sVar13 = sVar7; + } + sVar7 = *(long *)(lVar17 + 0x30) - (long)__s; + __dest_00 = (void *)((long)__dest + sVar13 + uVar10); + sVar13 = 0; + if (sVar7 != 0) { + __dest_00 = memmove(__dest_00,__s,sVar7); + sVar13 = sVar7; + } + if (*(void **)(lVar17 + 0x28) != (void *)0x0) { + operator_delete(*(void **)(lVar17 + 0x28)); + } + *(void **)(lVar17 + 0x28) = __dest; + lVar18 = *(long *)(this + 8); + *(size_t *)(lVar17 + 0x30) = (long)__dest_00 + sVar13; + *(ulong *)(lVar17 + 0x38) = (long)__dest + uVar24; + lVar14 = *(long *)(lVar18 + 0x28); + lVar11 = *(long *)(lVar18 + 0x40); + } + else { + memset(__s,0,uVar10); + lVar18 = *(long *)(this + 8); + *(ulong *)(lVar17 + 0x30) = *(long *)(lVar17 + 0x30) + uVar10; + lVar14 = *(long *)(lVar18 + 0x28); + lVar11 = *(long *)(lVar18 + 0x40); + } + } + } + else if (uVar22 > uVar19) { + *(ulong *)(lVar17 + 0x30) = lVar14 + uVar19; + lVar18 = *(long *)(this + 8); + lVar14 = *(long *)(lVar18 + 0x28); + lVar11 = *(long *)(lVar18 + 0x40); + } + if (uVar22 < uVar21) { + uVar22 = uVar21; + } + *(ulong *)(lVar18 + 0x20) = uVar22; + uVar10 = uVar22; + while (uVar10 < uVar19 - uVar21) { + lVar17 = lVar14 + uVar10; + uVar10 = uVar10 + uVar21; + *(ulong *)(lVar17 + 8) = uVar10; + } + *(undefined8 *)(lVar14 + uVar10 + 8) = 0; +LAB_0032f9d0: + lVar17 = lVar14 + uVar22; + uVar5 = *(uint *)(lVar18 + 4); + lVar20 = (lVar20 - 1U & param_2) * 8; + *(undefined8 *)(lVar18 + 0x20) = *(undefined8 *)(lVar17 + 8); + *(ulong *)(lVar14 + uVar22) = param_2; + *(undefined8 *)(lVar17 + 8) = *(undefined8 *)(lVar11 + lVar20); + *(ulong *)(lVar11 + lVar20) = uVar22; + if (0 < (int)uVar5) { + if (((int *)(lVar14 + uVar22 + 0x10) < param_1 + 4 && param_1 < (int *)(lVar14 + uVar22 + 0x20)) + || (uVar5 < 0xc)) { + lVar11 = 0; + do { + lVar20 = lVar17 + lVar11; + puVar1 = (undefined4 *)((long)param_1 + lVar11); + lVar11 = lVar11 + 4; + *(undefined4 *)(lVar20 + 0x10) = *puVar1; + } while (lVar11 != ((ulong)(uVar5 - 1) + 1) * 4); + } + else { + uVar16 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar4 = uVar5; + if (uVar16 < uVar5) { + uVar4 = uVar16; + } + uVar16 = uVar4; + if ((uVar4 != 0) && (*(int *)(lVar17 + 0x10) = *param_1, uVar4 != 1)) { + *(int *)(lVar17 + 0x14) = param_1[1]; + if (uVar4 == 3) { + *(int *)(lVar17 + 0x18) = param_1[2]; + } + else { + uVar16 = 2; + } + } + uVar2 = ((uVar5 - uVar4) - 4 >> 2) + 1; + iVar6 = uVar2 * 4; + uVar9 = 0; + piVar12 = param_1 + uVar4; + puVar15 = (undefined8 *)(lVar14 + uVar22 + (ulong)uVar4 * 4 + 0x10); + do { + uVar23 = *(undefined8 *)piVar12; + uVar9 = uVar9 + 1; + puVar15[1] = *(undefined8 *)(piVar12 + 2); + *puVar15 = uVar23; + piVar12 = piVar12 + 4; + puVar15 = puVar15 + 2; + } while (uVar9 < uVar2); + iVar3 = iVar6 + uVar16; + if (iVar6 != uVar5 - uVar4) { + lVar11 = (long)iVar3; + *(int *)(lVar17 + (lVar11 + 4) * 4) = param_1[lVar11]; + if (iVar3 + 1 < (int)uVar5) { + *(int *)(lVar17 + (long)(iVar3 + 1) * 4 + 0x10) = param_1[lVar11 + 1]; + if (iVar3 + 2 < (int)uVar5) { + *(int *)(lVar17 + (long)(iVar3 + 2) * 4 + 0x10) = param_1[lVar11 + 2]; + } + } + } + } + } + lVar11 = (long)*(int *)(lVar18 + 8); + iVar6 = (*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3); + if (iVar6 == 4) { + *(undefined4 *)(lVar17 + lVar11) = 0; + } + else if (iVar6 == 8) { + *(undefined8 *)(lVar17 + lVar11) = 0; + } + else { + memset((void *)(lVar17 + lVar11),0,(long)iVar6); + } + return (void *)(lVar17 + lVar11); +} + + +================================================================== + +### FUNC 0032fd84 (1432 bytes) name=SparseMat + +/* cv::SparseMat::SparseMat(cv::Mat const&) */ + +void __thiscall cv::SparseMat::SparseMat(SparseMat *this,Mat *param_1) + +{ + ulong uVar1; + undefined1 *puVar2; + ulong uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + char cVar8; + int iVar9; + int iVar10; + ulong uVar11; + int *piVar12; + long lVar13; + ulong uVar14; + undefined8 *puVar15; + long *plVar16; + uint *puVar17; + long lVar19; + ulong uVar20; + long lVar21; + ulong uVar22; + undefined8 *puVar23; + ulong uVar24; + long lVar25; + int iVar26; + undefined8 uVar27; + undefined8 local_80; + undefined8 uStack_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + undefined8 uStack_28; + undefined8 local_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + uint *puVar18; + + *(undefined4 *)this = 0x42fd0000; + uVar4 = *(uint *)param_1; + iVar5 = *(int *)(param_1 + 4); + piVar12 = *(int **)(param_1 + 0x40); + *(undefined8 *)(this + 8) = 0; + create(this,iVar5,piVar12,uVar4 & 0xfff); + iVar5 = *(int *)(param_1 + 4); + local_80 = 0; + uStack_78 = 0; + local_70 = 0; + uStack_68 = 0; + local_60 = 0; + uStack_58 = 0; + local_50 = 0; + uStack_48 = 0; + local_40 = 0; + uStack_38 = 0; + local_30 = 0; + uStack_28 = 0; + local_20 = 0; + uStack_18 = 0; + local_10 = 0; + uStack_8 = 0; + iVar7 = *(int *)(*(long *)(param_1 + 0x40) + (long)(iVar5 + -1) * 4); + if (iVar5 < 1) { + uVar24 = 0; + } + else { + uVar24 = *(ulong *)(*(long *)(param_1 + 0x48) + (long)iVar5 * 8 + -8); + } + iVar10 = iVar5 + -2; + lVar25 = *(long *)(param_1 + 0x10); + do { + iVar26 = 0; + lVar21 = lVar25; + if (0 < iVar7) { + do { + uVar14 = 0; + do { + uVar22 = uVar14 + 4; + if (uVar24 < uVar22) { + if (uVar24 <= uVar14) goto joined_r0x003302d0; + cVar8 = *(char *)(lVar21 + uVar14); + goto joined_r0x0032fe90; + } + uVar14 = uVar22; + } while (*(int *)(lVar21 + uVar22 + -4) == 0); +LAB_0032ff54: + lVar13 = *(long *)(this + 8); + *(int *)((long)&local_80 + (long)(iVar5 + -1) * 4) = iVar26; + uVar14 = 0; + if (lVar13 != 0) { + iVar6 = *(int *)(lVar13 + 4); + uVar14 = local_80 & 0xffffffff; + if (1 < iVar6) { + puVar17 = (uint *)((long)&local_80 + 4); + do { + puVar18 = puVar17 + 1; + uVar14 = (ulong)*puVar17 + uVar14 * 0x5bd1e995; + puVar17 = puVar18; + } while (puVar18 != (uint *)((long)&local_80 + ((ulong)(iVar6 - 2) + 2) * 4)); + } + } + lVar13 = newNode(this,(int *)&local_80,uVar14); + if (uVar24 < 4) { + uVar14 = 0; + } + else { + lVar19 = 0; + uVar22 = 4; + do { + uVar14 = uVar22; + *(undefined4 *)(lVar13 + lVar19) = *(undefined4 *)(lVar21 + lVar19); + lVar19 = lVar19 + 4; + uVar22 = uVar14 + 4; + } while (uVar14 + 4 <= uVar24); + } + if (uVar14 < uVar24) { + puVar2 = (undefined1 *)(lVar21 + uVar14); + uVar22 = uVar24 - uVar14; + if ((puVar2 < (undefined1 *)(lVar13 + uVar14 + 0x10) && + (undefined1 *)(lVar13 + uVar14) < (undefined1 *)(lVar21 + uVar14 + 0x10)) || + (uVar22 < 0x16)) { + do { + *(undefined1 *)(lVar13 + uVar14) = *(undefined1 *)(lVar21 + uVar14); + uVar22 = uVar14 + 1; + if (uVar22 == uVar24) break; + *(undefined1 *)(lVar13 + uVar22) = *(undefined1 *)(lVar21 + uVar22); + uVar14 = uVar14 + 2; + } while (uVar14 != uVar24); + } + else { + uVar3 = -(long)puVar2 & 0xfU; + if (uVar22 < (-(long)puVar2 & 0xfU)) { + uVar3 = uVar22; + } + uVar20 = uVar14; + if (uVar3 != 0) { + *(undefined1 *)(lVar13 + uVar14) = *puVar2; + uVar20 = uVar14 + 1; + if (uVar3 != 1) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 2; + if (uVar3 != 2) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 3; + if (uVar3 != 3) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 4; + if (uVar3 != 4) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 5; + if (uVar3 != 5) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 6; + if (uVar3 != 6) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 7; + if (uVar3 != 7) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 8; + if (uVar3 != 8) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 9; + if (uVar3 != 9) { + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 10; + if (uVar3 != 10) { + *(undefined1 *)(lVar13 + uVar20) = + *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 0xb; + if (uVar3 != 0xb) { + *(undefined1 *)(lVar13 + uVar20) = + *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 0xc; + if (uVar3 != 0xc) { + *(undefined1 *)(lVar13 + uVar20) = + *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 0xd; + if (uVar3 != 0xd) { + *(undefined1 *)(lVar13 + uVar20) = + *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 0xe; + if (uVar3 == 0xf) { + *(undefined1 *)(lVar13 + uVar20) = + *(undefined1 *)(lVar21 + uVar20); + uVar20 = uVar14 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar22 - uVar3) - 0x10 >> 4) + 1; + lVar19 = uVar1 * 0x10; + if (0xe < (uVar22 - 1) - uVar3) { + uVar11 = 0; + puVar15 = (undefined8 *)(lVar21 + uVar3 + uVar14); + puVar23 = (undefined8 *)(lVar13 + uVar3 + uVar14); + do { + uVar27 = *puVar15; + uVar11 = uVar11 + 1; + puVar23[1] = puVar15[1]; + *puVar23 = uVar27; + puVar15 = puVar15 + 2; + puVar23 = puVar23 + 2; + } while (uVar11 < uVar1); + uVar20 = uVar20 + lVar19; + if (lVar19 - (uVar22 - uVar3) == 0) goto joined_r0x003302d0; + } + uVar14 = uVar20 + 1; + *(undefined1 *)(lVar13 + uVar20) = *(undefined1 *)(lVar21 + uVar20); + if (uVar14 < uVar24) { + uVar22 = uVar20 + 2; + *(undefined1 *)(lVar13 + uVar14) = *(undefined1 *)(lVar21 + uVar14); + if (uVar22 < uVar24) { + uVar14 = uVar20 + 3; + *(undefined1 *)(lVar13 + uVar22) = *(undefined1 *)(lVar21 + uVar22); + if (uVar14 < uVar24) { + uVar22 = uVar20 + 4; + *(undefined1 *)(lVar13 + uVar14) = *(undefined1 *)(lVar21 + uVar14); + if (uVar22 < uVar24) { + uVar14 = uVar20 + 5; + *(undefined1 *)(lVar13 + uVar22) = *(undefined1 *)(lVar21 + uVar22); + if (uVar14 < uVar24) { + uVar22 = uVar20 + 6; + *(undefined1 *)(lVar13 + uVar14) = *(undefined1 *)(lVar21 + uVar14); + if (uVar22 < uVar24) { + uVar14 = uVar20 + 7; + *(undefined1 *)(lVar13 + uVar22) = *(undefined1 *)(lVar21 + uVar22); + if (uVar14 < uVar24) { + uVar22 = uVar20 + 8; + *(undefined1 *)(lVar13 + uVar14) = *(undefined1 *)(lVar21 + uVar14); + if (uVar22 < uVar24) { + uVar14 = uVar20 + 9; + *(undefined1 *)(lVar13 + uVar22) = *(undefined1 *)(lVar21 + uVar22); + if (uVar14 < uVar24) { + uVar22 = uVar20 + 10; + *(undefined1 *)(lVar13 + uVar14) = *(undefined1 *)(lVar21 + uVar14); + if (uVar22 < uVar24) { + uVar14 = uVar20 + 0xb; + *(undefined1 *)(lVar13 + uVar22) = *(undefined1 *)(lVar21 + uVar22); + if (uVar14 < uVar24) { + uVar22 = uVar20 + 0xc; + *(undefined1 *)(lVar13 + uVar14) = + *(undefined1 *)(lVar21 + uVar14); + if (uVar22 < uVar24) { + uVar14 = uVar20 + 0xd; + *(undefined1 *)(lVar13 + uVar22) = + *(undefined1 *)(lVar21 + uVar22); + if (uVar14 < uVar24) { + uVar20 = uVar20 + 0xe; + *(undefined1 *)(lVar13 + uVar14) = + *(undefined1 *)(lVar21 + uVar14); + if (uVar20 < uVar24) { + *(undefined1 *)(lVar13 + uVar20) = + *(undefined1 *)(lVar21 + uVar20); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +joined_r0x003302d0: + lVar21 = lVar21 + uVar24; + iVar26 = iVar26 + 1; + } while (iVar26 != iVar7); + lVar25 = lVar25 + uVar24 + (iVar7 - 1) * uVar24; + } + if (iVar10 < 0) { + return; + } + piVar12 = (int *)(*(long *)(param_1 + 0x40) + ((long)iVar10 + 1) * 4); + plVar16 = (long *)(*(long *)(param_1 + 0x48) + (long)iVar10 * 8); + iVar26 = iVar10; + while( true ) { + iVar9 = *piVar12; + piVar12 = piVar12 + -1; + lVar21 = plVar16[1]; + iVar6 = *(int *)((long)&local_80 + (long)iVar26 * 4) + 1; + lVar13 = *plVar16; + *(int *)((long)&local_80 + (long)iVar26 * 4) = iVar6; + lVar25 = lVar25 + (lVar13 - iVar9 * lVar21); + if (iVar6 < *piVar12) break; + *(int *)((long)&local_80 + (long)iVar26 * 4) = 0; + iVar26 = iVar26 + -1; + plVar16 = plVar16 + -1; + if (iVar26 == -1) { + return; + } + } + } while( true ); +joined_r0x0032fe90: + if (cVar8 != '\0') goto LAB_0032ff54; + uVar14 = uVar14 + 1; + if (uVar24 <= uVar14) goto joined_r0x003302d0; + cVar8 = *(char *)(lVar21 + uVar14); + goto joined_r0x0032fe90; +} + + +================================================================== + +### FUNC 0033031c (340 bytes) name=ptr + +/* cv::SparseMat::ptr(int, bool, unsigned long*) */ + +long __thiscall cv::SparseMat::ptr(SparseMat *this,int param_1,bool param_2,ulong *param_3) + +{ + long lVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + char *pcVar5; + ulong uVar6; + long lVar7; + long lVar8; + int local_10 [4]; + + lVar8 = *(long *)(this + 8); + if ((lVar8 == 0) || (*(int *)(lVar8 + 4) != 1)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar5 = (char *)String::allocate((String *)local_10,0x15); + cVar4 = s_hdr____hdr_>dims____1_0046b648[0x14]; + uVar3 = s_hdr____hdr_>dims____1_0046b648._8_8_; + uVar2 = s_hdr____hdr_>dims____1_0046b648._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_hdr____hdr_>dims____1_0046b648._16_4_; + pcVar5[0x14] = cVar4; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + error(-0xd7,(String *)local_10,"uchar* cv::SparseMat::ptr(int, bool, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x133a); + String::deallocate((String *)local_10); + lVar8 = *(long *)(this + 8); + } + if (param_3 == (ulong *)0x0) { + uVar6 = (ulong)param_1; + } + else { + uVar6 = *param_3; + } + lVar7 = *(long *)(*(long *)(lVar8 + 0x40) + + (uVar6 & (*(long *)(lVar8 + 0x48) - *(long *)(lVar8 + 0x40) >> 3) - 1U) * 8); + while( true ) { + if (lVar7 == 0) { + if (param_2) { + local_10[0] = param_1; + lVar8 = newNode(this,local_10,uVar6); + return lVar8; + } + return 0; + } + lVar1 = *(long *)(lVar8 + 0x28) + lVar7; + if ((uVar6 == *(ulong *)(*(long *)(lVar8 + 0x28) + lVar7)) && + (*(int *)(lVar1 + 0x10) == param_1)) break; + lVar7 = *(long *)(lVar1 + 8); + } + return lVar1 + *(int *)(lVar8 + 8); +} + + +================================================================== + +### FUNC 00330484 (368 bytes) name=ptr + +/* cv::SparseMat::ptr(int, int, bool, unsigned long*) */ + +long __thiscall +cv::SparseMat::ptr(SparseMat *this,int param_1,int param_2,bool param_3,ulong *param_4) + +{ + long lVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + ulong uVar7; + long lVar8; + int local_10 [4]; + + lVar6 = *(long *)(this + 8); + if ((lVar6 == 0) || (*(int *)(lVar6 + 4) != 2)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar5 = (char *)String::allocate((String *)local_10,0x15); + cVar4 = s_hdr____hdr_>dims____2_0046b660[0x14]; + uVar3 = s_hdr____hdr_>dims____2_0046b660._8_8_; + uVar2 = s_hdr____hdr_>dims____2_0046b660._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_hdr____hdr_>dims____2_0046b660._16_4_; + pcVar5[0x14] = cVar4; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + error(-0xd7,(String *)local_10,"uchar* cv::SparseMat::ptr(int, int, bool, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1350); + String::deallocate((String *)local_10); + lVar6 = *(long *)(this + 8); + } + if (param_4 == (ulong *)0x0) { + uVar7 = (ulong)(uint)param_2 + (ulong)(uint)param_1 * 0x5bd1e995; + } + else { + uVar7 = *param_4; + } + lVar8 = *(long *)(*(long *)(lVar6 + 0x40) + + (uVar7 & (*(long *)(lVar6 + 0x48) - *(long *)(lVar6 + 0x40) >> 3) - 1U) * 8); + while( true ) { + if (lVar8 == 0) { + if (param_3) { + local_10[1] = param_2; + local_10[0] = param_1; + lVar6 = newNode(this,local_10,uVar7); + return lVar6; + } + return 0; + } + lVar1 = *(long *)(lVar6 + 0x28) + lVar8; + if (((uVar7 == *(ulong *)(*(long *)(lVar6 + 0x28) + lVar8)) && + (*(int *)(lVar1 + 0x10) == param_1)) && (*(int *)(lVar1 + 0x14) == param_2)) break; + lVar8 = *(long *)(lVar1 + 8); + } + return lVar1 + *(int *)(lVar6 + 8); +} + + +================================================================== + +### FUNC 00330608 (404 bytes) name=ptr + +/* cv::SparseMat::ptr(int, int, int, bool, unsigned long*) */ + +long __thiscall +cv::SparseMat::ptr(SparseMat *this,int param_1,int param_2,int param_3,bool param_4,ulong *param_5) + +{ + long lVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + ulong uVar7; + long lVar8; + int local_10 [4]; + + lVar6 = *(long *)(this + 8); + if ((lVar6 == 0) || (*(int *)(lVar6 + 4) != 3)) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar5 = (char *)String::allocate((String *)local_10,0x15); + cVar4 = s_hdr____hdr_>dims____3_0046b678[0x14]; + uVar3 = s_hdr____hdr_>dims____3_0046b678._8_8_; + uVar2 = s_hdr____hdr_>dims____3_0046b678._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_hdr____hdr_>dims____3_0046b678._16_4_; + pcVar5[0x14] = cVar4; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + error(-0xd7,(String *)local_10,"uchar* cv::SparseMat::ptr(int, int, int, bool, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1366); + String::deallocate((String *)local_10); + lVar6 = *(long *)(this + 8); + } + if (param_5 == (ulong *)0x0) { + uVar7 = (ulong)(uint)param_3 + + ((ulong)(uint)param_2 + (ulong)(uint)param_1 * 0x5bd1e995) * 0x5bd1e995; + } + else { + uVar7 = *param_5; + } + lVar8 = *(long *)(*(long *)(lVar6 + 0x40) + + (uVar7 & (*(long *)(lVar6 + 0x48) - *(long *)(lVar6 + 0x40) >> 3) - 1U) * 8); + while( true ) { + if (lVar8 == 0) { + if (param_4) { + local_10[1] = param_2; + local_10[0] = param_1; + local_10[2] = param_3; + lVar6 = newNode(this,local_10,uVar7); + return lVar6; + } + return 0; + } + lVar1 = *(long *)(lVar6 + 0x28) + lVar8; + if ((((uVar7 == *(ulong *)(*(long *)(lVar6 + 0x28) + lVar8)) && + (*(int *)(lVar1 + 0x10) == param_1)) && (*(int *)(lVar1 + 0x14) == param_2)) && + (*(int *)(lVar1 + 0x18) == param_3)) break; + lVar8 = *(long *)(lVar1 + 8); + } + return lVar1 + *(int *)(lVar6 + 8); +} + + +================================================================== + +### FUNC 003307b0 (436 bytes) name=ptr + +/* cv::SparseMat::ptr(int const*, bool, unsigned long*) */ + +long __thiscall cv::SparseMat::ptr(SparseMat *this,int *param_1,bool param_2,ulong *param_3) + +{ + long lVar1; + int iVar2; + int iVar3; + undefined1 uVar4; + uint *puVar5; + undefined2 *puVar7; + ulong uVar8; + int iVar9; + long lVar10; + int *piVar11; + int *piVar12; + long lVar13; + long local_10; + long local_8; + uint *puVar6; + + lVar13 = *(long *)(this + 8); + if (lVar13 == 0) { + local_10 = lVar13; + local_8 = lVar13; + puVar7 = (undefined2 *)String::allocate((String *)&local_10,3); + uVar4 = DAT_0046b692; + *puVar7 = DAT_0046b690; + *(undefined1 *)(puVar7 + 1) = uVar4; + error(-0xd7,(String *)&local_10,"uchar* cv::SparseMat::ptr(const int*, bool, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x137d); + String::deallocate((String *)&local_10); + lVar13 = *(long *)(this + 8); + } + iVar2 = *(int *)(lVar13 + 4); + if (param_3 == (ulong *)0x0) { + uVar8 = (ulong)(uint)*param_1; + if (1 < iVar2) { + puVar5 = (uint *)(param_1 + 1); + do { + puVar6 = puVar5 + 1; + uVar8 = (ulong)*puVar5 + uVar8 * 0x5bd1e995; + puVar5 = puVar6; + } while (puVar6 != (uint *)(param_1 + (ulong)(iVar2 - 2) + 2)); + } + } + else { + uVar8 = *param_3; + } + lVar10 = *(long *)(*(long *)(lVar13 + 0x40) + + (uVar8 & (*(long *)(lVar13 + 0x48) - *(long *)(lVar13 + 0x40) >> 3) - 1U) * 8); + do { + if (lVar10 == 0) { + if (!param_2) { + return 0; + } + lVar13 = newNode(this,param_1,uVar8); + return lVar13; + } + lVar1 = *(long *)(lVar13 + 0x28) + lVar10; + if (uVar8 == *(ulong *)(*(long *)(lVar13 + 0x28) + lVar10)) { + if (iVar2 < 1) { + if (iVar2 == 0) { +LAB_00330868: + return lVar1 + *(int *)(lVar13 + 8); + } + } + else if (*(int *)(lVar1 + 0x10) == *param_1) { + iVar9 = 0; + piVar12 = (int *)(lVar1 + 0x14); + piVar11 = param_1; + do { + piVar11 = piVar11 + 1; + iVar9 = iVar9 + 1; + if (iVar9 == iVar2) goto LAB_00330868; + iVar3 = *piVar12; + piVar12 = piVar12 + 1; + } while (iVar3 == *piVar11); + } + } + lVar10 = *(long *)(lVar1 + 8); + } while( true ); +} + + +================================================================== + +### FUNC 00330978 (96 bytes) name=removeNode + +/* cv::SparseMat::removeNode(unsigned long, unsigned long, unsigned long) */ + +void __thiscall cv::SparseMat::removeNode(SparseMat *this,ulong param_1,ulong param_2,ulong param_3) + +{ + long lVar1; + long lVar2; + long lVar3; + + lVar2 = *(long *)(this + 8); + lVar1 = *(long *)(lVar2 + 0x28) + param_2; + if (param_3 == 0) { + *(undefined8 *)(*(long *)(lVar2 + 0x40) + param_1 * 8) = *(undefined8 *)(lVar1 + 8); + lVar3 = *(long *)(lVar2 + 0x18); + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(lVar2 + 0x20); + *(ulong *)(lVar2 + 0x20) = param_2; + *(long *)(lVar2 + 0x18) = lVar3 + -1; + return; + } + *(undefined8 *)(*(long *)(lVar2 + 0x28) + param_3 + 8) = *(undefined8 *)(lVar1 + 8); + lVar3 = *(long *)(lVar2 + 0x18); + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(lVar2 + 0x20); + *(ulong *)(lVar2 + 0x20) = param_2; + *(long *)(lVar2 + 0x18) = lVar3 + -1; + return; +} + + +================================================================== + +### FUNC 003309d8 (312 bytes) name=erase + +/* cv::SparseMat::erase(int, int, unsigned long*) */ + +void __thiscall cv::SparseMat::erase(SparseMat *this,int param_1,int param_2,ulong *param_3) + +{ + long lVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + undefined8 local_10; + undefined8 local_8; + + lVar6 = *(long *)(this + 8); + if ((lVar6 == 0) || (*(int *)(lVar6 + 4) != 2)) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x15); + cVar4 = s_hdr____hdr_>dims____2_0046b660[0x14]; + uVar3 = s_hdr____hdr_>dims____2_0046b660._8_8_; + uVar2 = s_hdr____hdr_>dims____2_0046b660._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_hdr____hdr_>dims____2_0046b660._16_4_; + pcVar5[0x14] = cVar4; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"void cv::SparseMat::erase(int, int, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1395); + String::deallocate((String *)&local_10); + lVar6 = *(long *)(this + 8); + } + if (param_3 == (ulong *)0x0) { + uVar11 = (ulong)(uint)param_2 + (ulong)(uint)param_1 * 0x5bd1e995; + } + else { + uVar11 = *param_3; + } + uVar7 = uVar11 & (*(long *)(lVar6 + 0x48) - *(long *)(lVar6 + 0x40) >> 3) - 1U; + uVar8 = *(ulong *)(*(long *)(lVar6 + 0x40) + uVar7 * 8); + if (uVar8 != 0) { + uVar10 = 0; + do { + uVar9 = uVar8; + lVar1 = *(long *)(lVar6 + 0x28) + uVar9; + if (((uVar11 == *(ulong *)(*(long *)(lVar6 + 0x28) + uVar9)) && + (*(int *)(lVar1 + 0x10) == param_1)) && (*(int *)(lVar1 + 0x14) == param_2)) { + removeNode(this,uVar7,uVar9,uVar10); + return; + } + uVar8 = *(ulong *)(lVar1 + 8); + uVar10 = uVar9; + } while (*(ulong *)(lVar1 + 8) != 0); + } + return; +} + + +================================================================== + +### FUNC 00330b24 (352 bytes) name=erase + +/* cv::SparseMat::erase(int, int, int, unsigned long*) */ + +void __thiscall +cv::SparseMat::erase(SparseMat *this,int param_1,int param_2,int param_3,ulong *param_4) + +{ + long lVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + undefined8 local_10; + undefined8 local_8; + + lVar6 = *(long *)(this + 8); + if ((lVar6 == 0) || (*(int *)(lVar6 + 4) != 3)) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x15); + cVar4 = s_hdr____hdr_>dims____3_0046b678[0x14]; + uVar3 = s_hdr____hdr_>dims____3_0046b678._8_8_; + uVar2 = s_hdr____hdr_>dims____3_0046b678._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_hdr____hdr_>dims____3_0046b678._16_4_; + pcVar5[0x14] = cVar4; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + error(-0xd7,(String *)&local_10,"void cv::SparseMat::erase(int, int, int, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x13a8); + String::deallocate((String *)&local_10); + lVar6 = *(long *)(this + 8); + } + if (param_4 == (ulong *)0x0) { + uVar11 = (ulong)(uint)param_3 + + ((ulong)(uint)param_2 + (ulong)(uint)param_1 * 0x5bd1e995) * 0x5bd1e995; + } + else { + uVar11 = *param_4; + } + uVar7 = uVar11 & (*(long *)(lVar6 + 0x48) - *(long *)(lVar6 + 0x40) >> 3) - 1U; + uVar8 = *(ulong *)(*(long *)(lVar6 + 0x40) + uVar7 * 8); + if (uVar8 != 0) { + uVar10 = 0; + do { + uVar9 = uVar8; + lVar1 = *(long *)(lVar6 + 0x28) + uVar9; + if ((((uVar11 == *(ulong *)(*(long *)(lVar6 + 0x28) + uVar9)) && + (*(int *)(lVar1 + 0x10) == param_1)) && (*(int *)(lVar1 + 0x14) == param_2)) && + (*(int *)(lVar1 + 0x18) == param_3)) { + removeNode(this,uVar7,uVar9,uVar10); + return; + } + uVar8 = *(ulong *)(lVar1 + 8); + uVar10 = uVar9; + } while (*(ulong *)(lVar1 + 8) != 0); + } + return; +} + + +================================================================== + +### FUNC 00330c98 (384 bytes) name=erase + +/* cv::SparseMat::erase(int const*, unsigned long*) */ + +void __thiscall cv::SparseMat::erase(SparseMat *this,int *param_1,ulong *param_2) + +{ + long lVar1; + int iVar2; + int iVar3; + undefined1 uVar4; + uint *puVar5; + undefined2 *puVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + long lVar11; + ulong uVar12; + int iVar13; + int *piVar14; + int *piVar15; + ulong uVar16; + long local_10; + long local_8; + uint *puVar6; + + lVar11 = *(long *)(this + 8); + if (lVar11 == 0) { + local_10 = lVar11; + local_8 = lVar11; + puVar7 = (undefined2 *)String::allocate((String *)&local_10,3); + uVar4 = DAT_0046b692; + *puVar7 = DAT_0046b690; + *(undefined1 *)(puVar7 + 1) = uVar4; + error(-0xd7,(String *)&local_10,"void cv::SparseMat::erase(const int*, size_t*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x13bc); + String::deallocate((String *)&local_10); + lVar11 = *(long *)(this + 8); + } + iVar2 = *(int *)(lVar11 + 4); + if (param_2 == (ulong *)0x0) { + uVar16 = (ulong)(uint)*param_1; + if (1 < iVar2) { + puVar5 = (uint *)(param_1 + 1); + do { + puVar6 = puVar5 + 1; + uVar16 = (ulong)*puVar5 + uVar16 * 0x5bd1e995; + puVar5 = puVar6; + } while (puVar6 != (uint *)(param_1 + (ulong)(iVar2 - 2) + 2)); + } + } + else { + uVar16 = *param_2; + } + uVar8 = uVar16 & (*(long *)(lVar11 + 0x48) - *(long *)(lVar11 + 0x40) >> 3) - 1U; + uVar9 = *(ulong *)(*(long *)(lVar11 + 0x40) + uVar8 * 8); + if (uVar9 != 0) { + uVar12 = 0; + do { + uVar10 = uVar9; + lVar1 = *(long *)(lVar11 + 0x28) + uVar10; + if (uVar16 == *(ulong *)(*(long *)(lVar11 + 0x28) + uVar10)) { + if (iVar2 < 1) { + if (iVar2 == 0) { +LAB_00330d58: + removeNode(this,uVar8,uVar10,uVar12); + return; + } + } + else if (*(int *)(lVar1 + 0x10) == *param_1) { + iVar13 = 0; + piVar15 = (int *)(lVar1 + 0x14); + piVar14 = param_1; + do { + piVar14 = piVar14 + 1; + iVar13 = iVar13 + 1; + if (iVar13 == iVar2) goto LAB_00330d58; + iVar3 = *piVar15; + piVar15 = piVar15 + 1; + } while (iVar3 == *piVar14); + } + } + uVar9 = *(ulong *)(lVar1 + 8); + uVar12 = uVar10; + } while (*(ulong *)(lVar1 + 8) != 0); + } + return; +} + + +================================================================== + +### FUNC 00330e2c (116 bytes) name=SparseMatConstIterator + +/* cv::SparseMatConstIterator::SparseMatConstIterator(cv::SparseMat const*) */ + +void __thiscall +cv::SparseMatConstIterator::SparseMatConstIterator(SparseMatConstIterator *this,SparseMat *param_1) + +{ + int iVar1; + long lVar2; + long lVar3; + long *plVar4; + long lVar5; + long lVar6; + + *(undefined8 *)(this + 8) = 0; + *(SparseMat **)this = param_1; + *(undefined8 *)(this + 0x10) = 0; + if ((param_1 != (SparseMat *)0x0) && (lVar6 = *(long *)(param_1 + 8), lVar6 != 0)) { + plVar4 = *(long **)(lVar6 + 0x40); + lVar5 = *(long *)(lVar6 + 0x48) - (long)plVar4 >> 3; + if (lVar5 != 0) { + lVar3 = *plVar4; + if (lVar3 == 0) { + lVar2 = 0; + do { + lVar2 = lVar2 + 1; + if (lVar2 == lVar5) { + return; + } + lVar3 = plVar4[lVar2]; + } while (lVar3 == 0); + } + else { + lVar2 = 0; + } + iVar1 = *(int *)(lVar6 + 8); + lVar6 = *(long *)(lVar6 + 0x28); + *(long *)(this + 8) = lVar2; + *(long *)(this + 0x10) = lVar6 + lVar3 + iVar1; + return; + } + } + return; +} + + +================================================================== + +### FUNC 00330ea0 (152 bytes) name=operator++ + +/* cv::SparseMatConstIterator::TEMPNAMEPLACEHOLDERVALUE() */ + +void __thiscall cv::SparseMatConstIterator::operator++(SparseMatConstIterator *this) + +{ + long lVar1; + ulong uVar2; + ulong uVar3; + long lVar4; + long lVar5; + + if (((*(long *)(this + 0x10) != 0) && (*(long *)this != 0)) && + (lVar4 = *(long *)(*(long *)this + 8), lVar4 != 0)) { + lVar5 = (long)*(int *)(lVar4 + 8); + lVar1 = *(long *)((*(long *)(this + 0x10) - lVar5) + 8); + if (lVar1 != 0) { + *(long *)(this + 0x10) = *(long *)(lVar4 + 0x28) + lVar5 + lVar1; + return; + } + uVar2 = *(ulong *)(this + 8); + uVar3 = *(long *)(lVar4 + 0x48) - *(long *)(lVar4 + 0x40) >> 3; + do { + uVar2 = uVar2 + 1; + if (uVar3 <= uVar2) { + *(ulong *)(this + 8) = uVar3; + *(undefined8 *)(this + 0x10) = 0; + return; + } + lVar1 = *(long *)(*(long *)(lVar4 + 0x40) + uVar2 * 8); + } while (lVar1 == 0); + lVar4 = *(long *)(lVar4 + 0x28); + *(ulong *)(this + 8) = uVar2; + *(long *)(this + 0x10) = lVar4 + lVar1 + lVar5; + } + return; +} + + +================================================================== + +### FUNC 00330f38 (1300 bytes) name=copyTo + +/* cv::SparseMat::copyTo(cv::Mat&) const */ + +void __thiscall cv::SparseMat::copyTo(SparseMat *this,Mat *param_1) + +{ + long lVar1; + long lVar2; + ulong uVar3; + undefined1 *puVar4; + ulong uVar5; + int iVar6; + undefined1 uVar7; + ulong uVar8; + undefined2 *puVar9; + ulong uVar10; + long lVar11; + long lVar12; + long lVar13; + undefined8 *puVar14; + ulong uVar15; + long lVar16; + ulong uVar17; + undefined8 *puVar18; + ulong uVar19; + int iVar20; + long lVar21; + undefined8 uVar22; + long local_20; + long local_18; + long local_10; + undefined8 local_8; + + lVar11 = *(long *)(this + 8); + if (lVar11 == 0) { + local_20 = lVar11; + local_18 = lVar11; + puVar9 = (undefined2 *)String::allocate((String *)&local_20,3); + uVar7 = DAT_0046b692; + *puVar9 = DAT_0046b690; + *(undefined1 *)(puVar9 + 1) = uVar7; + error(-0xd7,(String *)&local_20,"void cv::SparseMat::copyTo(cv::Mat&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x12d2); + iVar20 = 0; + String::deallocate((String *)&local_20); + lVar11 = *(long *)(this + 8); + if (lVar11 == 0) goto LAB_00330f64; + } + iVar20 = *(int *)(lVar11 + 4); +LAB_00330f64: + Mat::create(param_1,iVar20,(int *)(lVar11 + 0x58),*(uint *)this & 0xfff); + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + Mat::operator=(param_1,(Scalar_ *)&local_20); + SparseMatConstIterator::SparseMatConstIterator((SparseMatConstIterator *)&local_20,this); + if (*(long *)(this + 8) != 0) { + lVar11 = *(long *)(*(long *)(this + 8) + 0x18); + iVar6 = (*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3); + uVar19 = (ulong)iVar6; + if (lVar11 != 0) { + lVar21 = 0; + do { + if ((local_10 == 0) || (local_20 == 0)) { + lVar16 = 0; + } + else { + lVar16 = 0; + if (*(long *)(local_20 + 8) != 0) { + lVar16 = local_10 - *(int *)(*(long *)(local_20 + 8) + 8); + } + } + if (iVar20 < 2) { + lVar12 = *(long *)(param_1 + 0x10) + + (long)*(int *)(lVar16 + 0x10) * **(long **)(param_1 + 0x48); + if (3 < iVar6) goto LAB_00331044; +LAB_003313cc: + uVar15 = 0; +LAB_00331074: + puVar4 = (undefined1 *)(local_10 + uVar15); + uVar10 = uVar19 - uVar15; + if ((puVar4 < (undefined1 *)(lVar12 + uVar15 + 0x10) && + (undefined1 *)(lVar12 + uVar15) < (undefined1 *)(local_10 + uVar15 + 0x10)) || + (uVar10 < 0x16)) { + do { + *(undefined1 *)(lVar12 + uVar15) = *(undefined1 *)(local_10 + uVar15); + uVar10 = uVar15 + 1; + if (uVar19 == uVar10) break; + *(undefined1 *)(lVar12 + uVar10) = *(undefined1 *)(local_10 + uVar10); + uVar15 = uVar15 + 2; + } while (uVar19 != uVar15); + } + else { + uVar5 = uVar10; + if ((-(long)puVar4 & 0xfU) < uVar10) { + uVar5 = -(long)puVar4 & 0xfU; + } + uVar17 = uVar15; + if (uVar5 != 0) { + *(undefined1 *)(lVar12 + uVar15) = *puVar4; + uVar17 = uVar15 + 1; + if (uVar5 != 1) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 2; + if (uVar5 != 2) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 3; + if (uVar5 != 3) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 4; + if (uVar5 != 4) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 5; + if (uVar5 != 5) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 6; + if (uVar5 != 6) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 7; + if (uVar5 != 7) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 8; + if (uVar5 != 8) { + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 9; + if (uVar5 != 9) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 10; + if (uVar5 != 10) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 0xb; + if (uVar5 != 0xb) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 0xc; + if (uVar5 != 0xc) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 0xd; + if (uVar5 != 0xd) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 0xe; + if (uVar5 == 0xf) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + uVar17 = uVar15 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar3 = ((uVar10 - uVar5) - 0x10 >> 4) + 1; + lVar16 = uVar3 * 0x10; + if (0xe < (uVar10 - 1) - uVar5) { + uVar8 = 0; + puVar14 = (undefined8 *)(lVar12 + uVar5 + uVar15); + puVar18 = (undefined8 *)(local_10 + uVar5 + uVar15); + do { + uVar22 = *puVar18; + uVar8 = uVar8 + 1; + puVar14[1] = puVar18[1]; + *puVar14 = uVar22; + puVar14 = puVar14 + 2; + puVar18 = puVar18 + 2; + } while (uVar8 < uVar3); + uVar17 = uVar17 + lVar16; + if (lVar16 - (uVar10 - uVar5) == 0) goto LAB_00331358; + } + uVar10 = uVar17 + 1; + *(undefined1 *)(lVar12 + uVar17) = *(undefined1 *)(local_10 + uVar17); + if (uVar10 < uVar19) { + uVar15 = uVar17 + 2; + *(undefined1 *)(lVar12 + uVar10) = *(undefined1 *)(local_10 + uVar10); + if (uVar15 < uVar19) { + uVar10 = uVar17 + 3; + *(undefined1 *)(lVar12 + uVar15) = *(undefined1 *)(local_10 + uVar15); + if (uVar10 < uVar19) { + uVar15 = uVar17 + 4; + *(undefined1 *)(lVar12 + uVar10) = *(undefined1 *)(local_10 + uVar10); + if (uVar15 < uVar19) { + uVar10 = uVar17 + 5; + *(undefined1 *)(lVar12 + uVar15) = *(undefined1 *)(local_10 + uVar15); + if (uVar10 < uVar19) { + uVar15 = uVar17 + 6; + *(undefined1 *)(lVar12 + uVar10) = *(undefined1 *)(local_10 + uVar10); + if (uVar15 < uVar19) { + uVar10 = uVar17 + 7; + *(undefined1 *)(lVar12 + uVar15) = *(undefined1 *)(local_10 + uVar15); + if (uVar10 < uVar19) { + uVar15 = uVar17 + 8; + *(undefined1 *)(lVar12 + uVar10) = *(undefined1 *)(local_10 + uVar10); + if (uVar15 < uVar19) { + uVar10 = uVar17 + 9; + *(undefined1 *)(lVar12 + uVar15) = *(undefined1 *)(local_10 + uVar15); + if (uVar10 < uVar19) { + uVar15 = uVar17 + 10; + *(undefined1 *)(lVar12 + uVar10) = *(undefined1 *)(local_10 + uVar10); + if (uVar15 < uVar19) { + uVar10 = uVar17 + 0xb; + *(undefined1 *)(lVar12 + uVar15) = + *(undefined1 *)(local_10 + uVar15); + if (uVar10 < uVar19) { + uVar15 = uVar17 + 0xc; + *(undefined1 *)(lVar12 + uVar10) = + *(undefined1 *)(local_10 + uVar10); + if (uVar15 < uVar19) { + uVar10 = uVar17 + 0xd; + *(undefined1 *)(lVar12 + uVar15) = + *(undefined1 *)(local_10 + uVar15); + if (uVar10 < uVar19) { + uVar17 = uVar17 + 0xe; + *(undefined1 *)(lVar12 + uVar10) = + *(undefined1 *)(local_10 + uVar10); + if (uVar17 < uVar19) { + *(undefined1 *)(lVar12 + uVar17) = + *(undefined1 *)(local_10 + uVar17); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + lVar12 = *(long *)(param_1 + 0x10); + if (0 < *(int *)(param_1 + 4)) { + lVar13 = 0; + do { + lVar1 = lVar13 * 4; + lVar2 = lVar13 * 8; + lVar13 = lVar13 + 1; + lVar12 = lVar12 + (long)*(int *)(lVar16 + 0x10 + lVar1) * + *(long *)(*(long *)(param_1 + 0x48) + lVar2); + } while ((int)lVar13 < *(int *)(param_1 + 4)); + } + if (iVar6 < 4) goto LAB_003313cc; +LAB_00331044: + lVar16 = 0; + uVar10 = 4; + do { + uVar15 = uVar10; + *(undefined4 *)(lVar12 + lVar16) = *(undefined4 *)(local_10 + lVar16); + lVar16 = lVar16 + 4; + uVar10 = uVar15 + 4; + } while (uVar15 + 4 <= uVar19); + if (uVar15 < uVar19) goto LAB_00331074; + } +LAB_00331358: + lVar21 = lVar21 + 1; + SparseMatConstIterator::operator++((SparseMatConstIterator *)&local_20); + } while (lVar21 != lVar11); + } + } + return; +} + + +================================================================== + +### FUNC 00331460 (852 bytes) name=convertTo + +/* cv::SparseMat::convertTo(cv::Mat&, int, double, double) const */ + +void __thiscall +cv::SparseMat::convertTo(SparseMat *this,Mat *param_1,int param_2,double param_3,double param_4) + +{ + long lVar1; + long lVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined1 uVar6; + char cVar7; + undefined2 *puVar8; + char *pcVar9; + int iVar10; + long lVar11; + long lVar12; + long lVar13; + long lVar14; + long lVar15; + code *pcVar16; + code *local_30; + code *local_28; + double local_20; + long local_18; + long local_10; + undefined8 local_8; + + lVar13 = *(long *)(this + 8); + uVar5 = *(uint *)this >> 3 & 0x1ff; + uVar4 = *(uint *)this & 0xfff; + if (-1 < param_2) { + uVar4 = param_2; + } + iVar3 = uVar5 + 1; + uVar4 = (uVar4 & 7) + uVar5 * 8; + if (lVar13 == 0) { + local_20 = (double)lVar13; + local_18 = lVar13; + puVar8 = (undefined2 *)String::allocate((String *)&local_20,3); + uVar6 = DAT_0046b692; + *puVar8 = DAT_0046b690; + *(undefined1 *)(puVar8 + 1) = uVar6; + error(-0xd7,(String *)&local_20, + "void cv::SparseMat::convertTo(cv::Mat&, int, double, double) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1315); + String::deallocate((String *)&local_20); + lVar13 = *(long *)(this + 8); + iVar10 = 0; + if (lVar13 == 0) goto LAB_003314bc; + } + iVar10 = *(int *)(lVar13 + 4); +LAB_003314bc: + Mat::create(param_1,iVar10,(int *)(lVar13 + 0x58),uVar4); + local_18 = 0; + local_10 = 0; + local_8 = 0; + local_20 = param_4; + Mat::operator=(param_1,(Scalar_ *)&local_20); + SparseMatConstIterator::SparseMatConstIterator((SparseMatConstIterator *)&local_20,this); + lVar13 = 0; + if (*(long *)(this + 8) != 0) { + lVar13 = *(long *)(*(long *)(this + 8) + 0x18); + } + if ((param_4 == 0.0) && (param_3 == 1.0)) { + pcVar16 = (code *)(&PTR_FUN_004f61f0)[((ulong)*(uint *)this & 7) * 8 + ((ulong)uVar4 & 7)]; + if (pcVar16 == (code *)0x0) { + local_30 = pcVar16; + local_28 = pcVar16; + pcVar9 = (char *)String::allocate((String *)&local_30,9); + cVar7 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar9 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar9[8] = cVar7; + error(-0xd7,(String *)&local_30, + "void (* cv::getConvertElem(int, int))(const void*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1220); + String::deallocate((String *)&local_30); + } + lVar15 = 0; + if (lVar13 != 0) { + do { + if ((local_10 == 0) || (local_20 == 0.0)) { + lVar14 = 0; + } + else { + lVar14 = 0; + if (*(long *)((long)local_20 + 8) != 0) { + lVar14 = local_10 - *(int *)(*(long *)((long)local_20 + 8) + 8); + } + } + lVar11 = *(long *)(param_1 + 0x10); + if (0 < *(int *)(param_1 + 4)) { + lVar12 = 0; + do { + lVar1 = lVar12 * 4; + lVar2 = lVar12 * 8; + lVar12 = lVar12 + 1; + lVar11 = lVar11 + (long)*(int *)(lVar14 + 0x10 + lVar1) * + *(long *)(*(long *)(param_1 + 0x48) + lVar2); + } while ((int)lVar12 < *(int *)(param_1 + 4)); + } + lVar15 = lVar15 + 1; + (*pcVar16)(local_10,lVar11,iVar3); + SparseMatConstIterator::operator++((SparseMatConstIterator *)&local_20); + } while (lVar15 != lVar13); + } + } + else { + pcVar16 = (code *)(&PTR_FUN_004f6650)[((ulong)*(uint *)this & 7) * 8 + ((ulong)uVar4 & 7)]; + if (pcVar16 == (code *)0x0) { + local_30 = pcVar16; + local_28 = pcVar16; + pcVar9 = (char *)String::allocate((String *)&local_30,9); + cVar7 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar9 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar9[8] = cVar7; + error(-0xd7,(String *)&local_30, + "void (* cv::getConvertScaleElem(int, int))(const void*, void*, int, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x124d); + String::deallocate((String *)&local_30); + } + lVar15 = 0; + if (lVar13 != 0) { + if (local_10 == 0) goto LAB_00331680; + do { + if (local_20 == 0.0) goto LAB_00331680; + lVar14 = 0; + if (*(long *)((long)local_20 + 8) != 0) { + lVar14 = local_10 - *(int *)(*(long *)((long)local_20 + 8) + 8); + } + while( true ) { + lVar11 = *(long *)(param_1 + 0x10); + if (0 < *(int *)(param_1 + 4)) { + lVar12 = 0; + do { + lVar1 = lVar12 * 4; + lVar2 = lVar12 * 8; + lVar12 = lVar12 + 1; + lVar11 = lVar11 + (long)*(int *)(lVar14 + 0x10 + lVar1) * + *(long *)(*(long *)(param_1 + 0x48) + lVar2); + } while ((int)lVar12 < *(int *)(param_1 + 4)); + } + lVar15 = lVar15 + 1; + (*pcVar16)(param_3,param_4,local_10,lVar11,iVar3); + SparseMatConstIterator::operator++((SparseMatConstIterator *)&local_20); + if (lVar15 == lVar13) { + return; + } + if (local_10 != 0) break; +LAB_00331680: + lVar14 = 0; + } + } while( true ); + } + } + return; +} + + +================================================================== + +### FUNC 003317f0 (1216 bytes) name=copyTo + +/* cv::SparseMat::copyTo(cv::SparseMat&) const */ + +void __thiscall cv::SparseMat::copyTo(SparseMat *this,SparseMat *param_1) + +{ + ulong uVar1; + undefined1 *puVar2; + ulong uVar3; + int iVar4; + char cVar5; + bool bVar6; + code *pcVar7; + long lVar8; + ulong uVar9; + int *piVar10; + ulong *puVar11; + undefined8 *puVar12; + ulong uVar13; + int *piVar14; + long lVar15; + ulong uVar16; + ulong uVar17; + undefined8 *puVar18; + ulong uVar19; + void *pvVar20; + long lVar21; + long lVar22; + undefined8 uVar23; + long local_18 [2]; + long local_8; + + piVar10 = *(int **)(this + 8); + piVar14 = *(int **)(param_1 + 8); + if (piVar10 == piVar14) { + return; + } + if (piVar10 == (int *)0x0) { + if (piVar14 != (int *)0x0) { + do { + iVar4 = *piVar14; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar6) { + *piVar14 = iVar4 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if ((iVar4 == 1) && (pvVar20 = *(void **)(param_1 + 8), pvVar20 != (void *)0x0)) { + if (*(void **)((long)pvVar20 + 0x40) != (void *)0x0) { + operator_delete(*(void **)((long)pvVar20 + 0x40)); + } + if (*(void **)((long)pvVar20 + 0x28) != (void *)0x0) { + operator_delete(*(void **)((long)pvVar20 + 0x28)); + } + operator_delete(pvVar20); + *(undefined8 *)(param_1 + 8) = 0; + return; + } + } + *(undefined8 *)(param_1 + 8) = 0; + return; + } + create(param_1,piVar10[1],piVar10 + 0x16,*(uint *)this & 0xfff); + SparseMatConstIterator::SparseMatConstIterator((SparseMatConstIterator *)local_18,this); + if (*(long *)(this + 8) == 0) { + return; + } + lVar22 = *(long *)(*(long *)(this + 8) + 0x18); + iVar4 = (*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3); + uVar19 = (ulong)iVar4; + if (lVar22 == 0) { + return; + } + lVar21 = 0; + do { + if (((local_8 == 0) || (local_18[0] == 0)) || (*(long *)(local_18[0] + 8) == 0)) { + /* WARNING: Does not return */ + pcVar7 = (code *)SoftwareBreakpoint(1000,0x331c38); + (*pcVar7)(); + } + puVar11 = (ulong *)(local_8 - *(int *)(*(long *)(local_18[0] + 8) + 8)); + lVar8 = newNode(param_1,(int *)(puVar11 + 2),*puVar11); + if (iVar4 < 4) { + uVar13 = 0; +LAB_003318f0: + puVar2 = (undefined1 *)(local_8 + uVar13); + uVar9 = uVar19 - uVar13; + if ((puVar2 < (undefined1 *)(lVar8 + uVar13 + 0x10) && + (undefined1 *)(lVar8 + uVar13) < (undefined1 *)(local_8 + uVar13 + 0x10)) || + (uVar9 < 0x16)) { + do { + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + uVar9 = uVar13 + 1; + if (uVar19 == uVar9) break; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + uVar13 = uVar13 + 2; + } while (uVar19 != uVar13); + } + else { + uVar3 = uVar9; + if ((-(long)puVar2 & 0xfU) < uVar9) { + uVar3 = -(long)puVar2 & 0xfU; + } + uVar16 = uVar13; + if (uVar3 != 0) { + *(undefined1 *)(lVar8 + uVar13) = *puVar2; + uVar16 = uVar13 + 1; + if (uVar3 != 1) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 2; + if (uVar3 != 2) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 3; + if (uVar3 != 3) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 4; + if (uVar3 != 4) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 5; + if (uVar3 != 5) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 6; + if (uVar3 != 6) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 7; + if (uVar3 != 7) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 8; + if (uVar3 != 8) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 9; + if (uVar3 != 9) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 10; + if (uVar3 != 10) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 0xb; + if (uVar3 != 0xb) { + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 0xc; + if (uVar3 != 0xc) { + *(undefined1 *)(lVar8 + uVar16) = + *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 0xd; + if (uVar3 != 0xd) { + *(undefined1 *)(lVar8 + uVar16) = + *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 0xe; + if (uVar3 == 0xf) { + *(undefined1 *)(lVar8 + uVar16) = + *(undefined1 *)(local_8 + uVar16); + uVar16 = uVar13 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar9 - uVar3) - 0x10 >> 4) + 1; + lVar15 = uVar1 * 0x10; + if (0xe < (uVar9 - 1) - uVar3) { + uVar17 = 0; + puVar12 = (undefined8 *)(lVar8 + uVar3 + uVar13); + puVar18 = (undefined8 *)(local_8 + uVar3 + uVar13); + do { + uVar23 = *puVar18; + uVar17 = uVar17 + 1; + puVar12[1] = puVar18[1]; + *puVar12 = uVar23; + puVar12 = puVar12 + 2; + puVar18 = puVar18 + 2; + } while (uVar17 < uVar1); + uVar16 = uVar16 + lVar15; + if (uVar9 - uVar3 == lVar15) goto LAB_00331bd4; + } + uVar13 = uVar16 + 1; + *(undefined1 *)(lVar8 + uVar16) = *(undefined1 *)(local_8 + uVar16); + if (uVar13 < uVar19) { + uVar9 = uVar16 + 2; + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + if (uVar9 < uVar19) { + uVar13 = uVar16 + 3; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar13 < uVar19) { + uVar9 = uVar16 + 4; + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + if (uVar9 < uVar19) { + uVar13 = uVar16 + 5; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar13 < uVar19) { + uVar9 = uVar16 + 6; + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + if (uVar9 < uVar19) { + uVar13 = uVar16 + 7; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar13 < uVar19) { + uVar9 = uVar16 + 8; + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + if (uVar9 < uVar19) { + uVar13 = uVar16 + 9; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar13 < uVar19) { + uVar9 = uVar16 + 10; + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + if (uVar9 < uVar19) { + uVar13 = uVar16 + 0xb; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar13 < uVar19) { + uVar9 = uVar16 + 0xc; + *(undefined1 *)(lVar8 + uVar13) = *(undefined1 *)(local_8 + uVar13); + if (uVar9 < uVar19) { + uVar13 = uVar16 + 0xd; + *(undefined1 *)(lVar8 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar13 < uVar19) { + uVar16 = uVar16 + 0xe; + *(undefined1 *)(lVar8 + uVar13) = + *(undefined1 *)(local_8 + uVar13); + if (uVar16 < uVar19) { + *(undefined1 *)(lVar8 + uVar16) = + *(undefined1 *)(local_8 + uVar16); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + lVar15 = 0; + uVar9 = 4; + do { + uVar13 = uVar9; + *(undefined4 *)(lVar8 + lVar15) = *(undefined4 *)(local_8 + lVar15); + lVar15 = lVar15 + 4; + uVar9 = uVar13 + 4; + } while (uVar13 + 4 <= uVar19); + if (uVar13 < uVar19) goto LAB_003318f0; + } +LAB_00331bd4: + lVar21 = lVar21 + 1; + SparseMatConstIterator::operator++((SparseMatConstIterator *)local_18); + if (lVar21 == lVar22) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 00331cb0 (1056 bytes) name=convertTo + +/* cv::SparseMat::convertTo(cv::SparseMat&, int, double) const */ + +void __thiscall +cv::SparseMat::convertTo(SparseMat *this,SparseMat *param_1,int param_2,double param_3) + +{ + int iVar1; + uint uVar2; + uint uVar3; + char cVar4; + bool bVar5; + uint uVar6; + undefined8 uVar7; + long lVar8; + int *piVar9; + void *pvVar10; + char *pcVar11; + long lVar12; + ulong *puVar13; + long lVar14; + code *pcVar15; + code *local_28; + code *local_20; + long local_18; + int *local_10; + long local_8; + + lVar12 = *(long *)(this + 8); + uVar3 = *(uint *)this & 0xfff; + uVar2 = uVar3; + if (-1 < param_2) { + uVar2 = param_2; + } + uVar6 = *(uint *)this >> 3 & 0x1ff; + uVar2 = (uVar2 & 7) + uVar6 * 8; + if (lVar12 == *(long *)(param_1 + 8)) { + if (uVar2 != uVar3) { + local_10 = (int *)0x0; + local_18 = CONCAT44(local_18._4_4_,0x42fd0000); + convertTo(this,(SparseMat *)&local_18,uVar2,param_3); + if (local_10 != (int *)0x0) { + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(local_10,0x10); + if (bVar5) { + *local_10 = *local_10 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + piVar9 = *(int **)(param_1 + 8); + if (piVar9 != (int *)0x0) { + do { + iVar1 = *piVar9; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar5) { + *piVar9 = iVar1 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if ((iVar1 == 1) && (pvVar10 = *(void **)(param_1 + 8), pvVar10 != (void *)0x0)) { + if (*(void **)((long)pvVar10 + 0x40) != (void *)0x0) { + operator_delete(*(void **)((long)pvVar10 + 0x40)); + } + if (*(void **)((long)pvVar10 + 0x28) != (void *)0x0) { + operator_delete(*(void **)((long)pvVar10 + 0x28)); + } + operator_delete(pvVar10); + } + } + piVar9 = local_10; + *(undefined4 *)param_1 = (undefined4)local_18; + *(int **)(param_1 + 8) = local_10; + if (local_10 == (int *)0x0) { + return; + } + do { + iVar1 = *local_10; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(local_10,0x10); + if (bVar5) { + *local_10 = iVar1 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar1 != 1) { + return; + } + if (local_10 == (int *)0x0) { + return; + } + if (*(void **)(local_10 + 0x10) != (void *)0x0) { + operator_delete(*(void **)(local_10 + 0x10)); + } + pvVar10 = *(void **)(piVar9 + 10); + if (pvVar10 != (void *)0x0) { + operator_delete(pvVar10); + } + operator_delete(piVar9); + return; + } + if (lVar12 != 0) goto LAB_00331d1c; +LAB_00331fac: + local_18 = 0; + local_10 = (int *)0x0; + pcVar11 = (char *)String::allocate((String *)&local_18,8); + *(undefined8 *)pcVar11 = s_hdr____0_0046b698._0_8_; + error(-0xd7,(String *)&local_18, + "void cv::SparseMat::convertTo(cv::SparseMat&, int, double) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x12f0); + String::deallocate((String *)&local_18); + lVar12 = *(long *)(this + 8); + if (lVar12 == *(long *)(param_1 + 8)) goto LAB_00331d1c; + } + else if (lVar12 == 0) goto LAB_00331fac; + create(param_1,*(int *)(lVar12 + 4),(int *)(lVar12 + 0x58),uVar2); +LAB_00331d1c: + SparseMatConstIterator::SparseMatConstIterator((SparseMatConstIterator *)&local_18,this); + lVar12 = 0; + if (*(long *)(this + 8) != 0) { + lVar12 = *(long *)(*(long *)(this + 8) + 0x18); + } + iVar1 = uVar6 + 1; + lVar14 = ((ulong)*(uint *)this & 7) * 8 + ((ulong)uVar2 & 7); + if (param_3 == 1.0) { + pcVar15 = (code *)(&PTR_FUN_004f61f0)[lVar14]; + if (pcVar15 == (code *)0x0) { + local_28 = pcVar15; + local_20 = pcVar15; + pcVar11 = (char *)String::allocate((String *)&local_28,9); + cVar4 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar11 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar11[8] = cVar4; + error(-0xd7,(String *)&local_28, + "void (* cv::getConvertElem(int, int))(const void*, void*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1220); + String::deallocate((String *)&local_28); + } + lVar14 = 0; + if (lVar12 != 0) { + do { + while( true ) { + if ((local_8 == 0) || (local_18 == 0)) { + puVar13 = (ulong *)0x0; + } + else { + puVar13 = (ulong *)0x0; + if (*(long *)(local_18 + 8) != 0) { + puVar13 = (ulong *)(local_8 - *(int *)(*(long *)(local_18 + 8) + 8)); + } + } + if (*(long *)(this + 8) != *(long *)(param_1 + 8)) break; + lVar14 = lVar14 + 1; + (*pcVar15)(local_8,local_8,iVar1); + SparseMatConstIterator::operator++((SparseMatConstIterator *)&local_18); + if (lVar14 == lVar12) { + return; + } + } + lVar14 = lVar14 + 1; + uVar7 = newNode(param_1,(int *)(puVar13 + 2),*puVar13); + (*pcVar15)(local_8,uVar7,iVar1); + SparseMatConstIterator::operator++((SparseMatConstIterator *)&local_18); + } while (lVar14 != lVar12); + } + } + else { + pcVar15 = (code *)(&PTR_FUN_004f6650)[lVar14]; + if (pcVar15 == (code *)0x0) { + local_28 = pcVar15; + local_20 = pcVar15; + pcVar11 = (char *)String::allocate((String *)&local_28,9); + cVar4 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar11 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar11[8] = cVar4; + error(-0xd7,(String *)&local_28, + "void (* cv::getConvertScaleElem(int, int))(const void*, void*, int, double, double)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x124d); + String::deallocate((String *)&local_28); + } + lVar14 = 0; + if (lVar12 != 0) { + do { + if ((local_8 == 0) || (local_18 == 0)) { + puVar13 = (ulong *)0x0; + } + else { + puVar13 = (ulong *)0x0; + if (*(long *)(local_18 + 8) != 0) { + puVar13 = (ulong *)(local_8 - *(int *)(*(long *)(local_18 + 8) + 8)); + } + } + lVar8 = local_8; + if (*(long *)(this + 8) != *(long *)(param_1 + 8)) { + lVar8 = newNode(param_1,(int *)(puVar13 + 2),*puVar13); + } + lVar14 = lVar14 + 1; + (*pcVar15)(param_3,0,local_8,lVar8,iVar1); + SparseMatConstIterator::operator++((SparseMatConstIterator *)&local_18); + } while (lVar14 != lVar12); + } + } + return; +} + + +================================================================== + +### FUNC 00332164 (796 bytes) name=norm + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::norm(cv::SparseMat const&, int) */ + +undefined1 [16] cv::norm(SparseMat *param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined4 uVar11; + undefined2 uVar12; + bool bVar13; + char *pcVar14; + undefined8 *puVar15; + long lVar16; + long lVar17; + double dVar18; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + double __x; + undefined8 local_28; + undefined8 local_20; + SparseMatConstIterator aSStack_18 [16]; + double *local_8; + + SparseMatConstIterator::SparseMatConstIterator(aSStack_18,param_1); + lVar16 = 0; + if (*(long *)(param_1 + 8) != 0) { + lVar16 = *(long *)(*(long *)(param_1 + 8) + 0x18); + } + uVar1 = param_2 & 7; + bVar13 = uVar1 == 4; + uVar2 = *(uint *)param_1 & 0xfff; + if ((uVar1 - 1 < 2) || (bVar13)) { + if (uVar2 == 5) goto LAB_00332354; +LAB_003321cc: + if (uVar2 == 6) { + __x = 0.0; + if (uVar1 == 1) { + dVar18 = __x; + if (lVar16 != 0) { + lVar17 = 0; + do { + if (__x < ABS(*local_8)) { + __x = ABS(*local_8); + } + lVar17 = lVar17 + 1; + SparseMatConstIterator::operator++(aSStack_18); + dVar18 = __x; + } while (lVar17 != lVar16); + } + goto LAB_00332248; + } + if (uVar1 == 2) { + dVar18 = 0.0; + if (lVar16 != 0) { + lVar17 = 0; + dVar18 = __x; + do { + lVar17 = lVar17 + 1; + dVar18 = dVar18 + ABS(*local_8); + SparseMatConstIterator::operator++(aSStack_18); + } while (lVar17 != lVar16); + } + goto LAB_00332248; + } + lVar17 = 0; + dVar18 = 0.0; + if (lVar16 != 0) { + do { + lVar17 = lVar17 + 1; + __x = __x + *local_8 * *local_8; + SparseMatConstIterator::operator++(aSStack_18); + } while (lVar17 != lVar16); + dVar18 = __x; + if (!bVar13) goto LAB_00332248; + goto LAB_003322a8; + } + } + else { + local_28 = 0; + local_20 = 0; + pcVar14 = (char *)String::allocate((String *)&local_28,0x1e); + uVar12 = s_Only_32f_and_64f_are_supported_0046b6f0._28_2_; + uVar11 = s_Only_32f_and_64f_are_supported_0046b6f0._24_4_; + uVar4 = s_Only_32f_and_64f_are_supported_0046b6f0._8_8_; + uVar3 = s_Only_32f_and_64f_are_supported_0046b6f0._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_Only_32f_and_64f_are_supported_0046b6f0._16_8_; + *(undefined4 *)(pcVar14 + 0x18) = uVar11; + *(undefined2 *)(pcVar14 + 0x1c) = uVar12; + *(undefined8 *)pcVar14 = uVar3; + *(undefined8 *)(pcVar14 + 8) = uVar4; + error(-0xd2,(String *)&local_28,"double cv::norm(const cv::SparseMat&, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1489); + String::deallocate((String *)&local_28); + dVar18 = 0.0; + } + } + else { + local_28 = 0; + local_20 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_28,0x42); + uVar10 = _LAB_0046b6e0; + uVar9 = DAT_0046b6d8; + uVar8 = DAT_0046b6d0; + uVar7 = DAT_0046b6c8; + uVar6 = DAT_0046b6c0; + uVar5 = DAT_0046b6b8; + uVar4 = DAT_0046b6b0; + uVar3 = DAT_0046b6a8; + *(undefined2 *)(puVar15 + 8) = DAT_0046b6e8; + *puVar15 = uVar3; + puVar15[1] = uVar4; + puVar15[2] = uVar5; + puVar15[3] = uVar6; + puVar15[4] = uVar7; + puVar15[5] = uVar8; + puVar15[6] = uVar9; + puVar15[7] = uVar10; + error(-0xd7,(String *)&local_28,"double cv::norm(const cv::SparseMat&, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1468); + String::deallocate((String *)&local_28); + if (uVar2 != 5) goto LAB_003321cc; +LAB_00332354: + dVar18 = 0.0; + if (uVar1 == 1) { + if (lVar16 != 0) { + lVar17 = 0; + do { + if (dVar18 < ABS((double)*(float *)local_8)) { + dVar18 = ABS((double)*(float *)local_8); + } + lVar17 = lVar17 + 1; + SparseMatConstIterator::operator++(aSStack_18); + } while (lVar17 != lVar16); + } + goto LAB_00332248; + } + if (uVar1 == 2) { + if (lVar16 != 0) { + lVar17 = 0; + do { + lVar17 = lVar17 + 1; + dVar18 = dVar18 + (double)ABS(*(float *)local_8); + SparseMatConstIterator::operator++(aSStack_18); + } while (lVar17 != lVar16); + } + goto LAB_00332248; + } + lVar17 = 0; + if (lVar16 != 0) { + do { + lVar17 = lVar17 + 1; + dVar18 = dVar18 + (double)*(float *)local_8 * (double)*(float *)local_8; + SparseMatConstIterator::operator++(aSStack_18); + } while (lVar17 != lVar16); + } + } + __x = dVar18; + dVar18 = __x; + if (bVar13) { +LAB_003322a8: + dVar18 = SQRT(__x); + if (NAN(dVar18)) { + dVar18 = ::sqrt(__x); + } + auVar20._8_8_ = 0; + auVar20._0_8_ = dVar18; + return auVar20; + } +LAB_00332248: + auVar19._8_8_ = 0; + auVar19._0_8_ = dVar18; + return auVar19; +} + + +================================================================== + +### FUNC 003324a8 (1256 bytes) name=minMaxLoc + +/* WARNING: Type propagation algorithm not settling */ +/* cv::minMaxLoc(cv::SparseMat const&, double*, double*, int*, int*) */ + +void cv::minMaxLoc(SparseMat *param_1,double *param_2,double *param_3,int *param_4,int *param_5) + +{ + ulong uVar1; + uint uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char *pcVar6; + int *piVar7; + int *piVar8; + int *piVar9; + ulong uVar10; + int *piVar11; + int *piVar12; + int *piVar13; + long lVar14; + int *piVar15; + int *piVar16; + float fVar17; + undefined8 uVar18; + double dVar19; + float fVar20; + double dVar21; + float fVar22; + double dVar23; + undefined8 local_28; + undefined8 local_20; + long local_18 [2]; + double *local_8; + + SparseMatConstIterator::SparseMatConstIterator((SparseMatConstIterator *)local_18,param_1); + lVar14 = *(long *)(param_1 + 8); + dVar21 = DAT_003329b0; + dVar23 = DAT_003329b8; + fVar20 = DAT_003329a4; + fVar22 = DAT_003329a8; + if (lVar14 == 0) { + uVar2 = *(uint *)param_1 & 0xfff; + if (uVar2 == 5) { + piVar15 = (int *)0x0; + piVar12 = (int *)0x0; + piVar13 = (int *)0x0; + goto LAB_003328c8; + } + piVar15 = (int *)0x0; + if (uVar2 == 6) { + piVar15 = (int *)0x0; + piVar12 = (int *)0x0; + piVar13 = (int *)0x0; + goto LAB_00332814; + } + } + else { + uVar2 = *(uint *)param_1 & 0xfff; + piVar16 = *(int **)(lVar14 + 0x18); + piVar15 = (int *)(long)*(int *)(lVar14 + 4); + piVar12 = piVar16; + piVar13 = piVar16; + if (uVar2 == 5) { + if (piVar16 != (int *)0x0) { + piVar12 = (int *)0x0; + piVar13 = (int *)0x0; + piVar9 = (int *)0x0; + do { + fVar17 = *(float *)local_8; + if (fVar17 < fVar22) { + lVar14 = 0; + if (local_18[0] != 0) { + lVar14 = 0; + if (*(long *)(local_18[0] + 8) != 0) { + lVar14 = (long)local_8 - (long)*(int *)(*(long *)(local_18[0] + 8) + 8); + } + } + piVar13 = (int *)(lVar14 + 0x10); + fVar22 = fVar17; + } + if (fVar20 < fVar17) { + lVar14 = 0; + if (local_18[0] != 0) { + lVar14 = 0; + if (*(long *)(local_18[0] + 8) != 0) { + lVar14 = (long)local_8 - (long)*(int *)(*(long *)(local_18[0] + 8) + 8); + } + } + piVar12 = (int *)(lVar14 + 0x10); + fVar20 = fVar17; + } + piVar9 = (int *)((long)piVar9 + 1); + SparseMatConstIterator::operator++((SparseMatConstIterator *)local_18); + } while (piVar9 != piVar16); + } +LAB_003328c8: + if (param_2 != (double *)0x0) { + *param_2 = (double)fVar22; + } + if (param_3 != (double *)0x0) { + *param_3 = (double)fVar20; + } + goto joined_r0x00332824; + } + if (uVar2 == 6) { + if (piVar16 != (int *)0x0) { + piVar12 = (int *)0x0; + piVar13 = (int *)0x0; + piVar9 = (int *)0x0; + do { + dVar19 = *local_8; + if (dVar19 < dVar23) { + lVar14 = 0; + if (local_18[0] != 0) { + lVar14 = 0; + if (*(long *)(local_18[0] + 8) != 0) { + lVar14 = (long)local_8 - (long)*(int *)(*(long *)(local_18[0] + 8) + 8); + } + } + piVar13 = (int *)(lVar14 + 0x10); + dVar23 = dVar19; + } + if (dVar21 < dVar19) { + lVar14 = 0; + if (local_18[0] != 0) { + lVar14 = 0; + if (*(long *)(local_18[0] + 8) != 0) { + lVar14 = (long)local_8 - (long)*(int *)(*(long *)(local_18[0] + 8) + 8); + } + } + piVar12 = (int *)(lVar14 + 0x10); + dVar21 = dVar19; + } + piVar9 = (int *)((long)piVar9 + 1); + SparseMatConstIterator::operator++((SparseMatConstIterator *)local_18); + } while (piVar9 != piVar16); + } +LAB_00332814: + if (param_2 != (double *)0x0) { + *param_2 = dVar23; + } + if (param_3 != (double *)0x0) { + *param_3 = dVar21; + } + goto joined_r0x00332824; + } + } + local_28 = 0; + local_20 = 0; + pcVar6 = (char *)String::allocate((String *)&local_28,0x1e); + uVar5 = s_Only_32f_and_64f_are_supported_0046b6f0._28_2_; + uVar4 = s_Only_32f_and_64f_are_supported_0046b6f0._24_4_; + uVar3 = s_Only_32f_and_64f_are_supported_0046b6f0._8_8_; + uVar18 = s_Only_32f_and_64f_are_supported_0046b6f0._0_8_; + *(undefined8 *)(pcVar6 + 0x10) = s_Only_32f_and_64f_are_supported_0046b6f0._16_8_; + *(undefined4 *)(pcVar6 + 0x18) = uVar4; + *(undefined2 *)(pcVar6 + 0x1c) = uVar5; + *(undefined8 *)pcVar6 = uVar18; + *(undefined8 *)(pcVar6 + 8) = uVar3; + error(-0xd2,(String *)&local_28, + "void cv::minMaxLoc(const cv::SparseMat&, double*, double*, int*, int*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x14c4); + piVar12 = (int *)0x0; + piVar13 = (int *)0x0; + String::deallocate((String *)&local_28); +joined_r0x00332824: + if (param_4 == (int *)0x0) { + piVar16 = piVar15; + if (param_5 == (int *)0x0) { + s_Only_32f_and_64f_are_supported_0046b6f0[0] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._0_8_; + s_Only_32f_and_64f_are_supported_0046b6f0[1] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[2] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[3] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[4] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,4); + s_Only_32f_and_64f_are_supported_0046b6f0[5] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,5); + s_Only_32f_and_64f_are_supported_0046b6f0[6] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,6); + s_Only_32f_and_64f_are_supported_0046b6f0[7] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,7); + s_Only_32f_and_64f_are_supported_0046b6f0[8] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._8_8_; + s_Only_32f_and_64f_are_supported_0046b6f0[9] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[10] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[0xb] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[0xc] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,4); + s_Only_32f_and_64f_are_supported_0046b6f0[0xd] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,5); + s_Only_32f_and_64f_are_supported_0046b6f0[0xe] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,6); + s_Only_32f_and_64f_are_supported_0046b6f0[0xf] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,7); + s_Only_32f_and_64f_are_supported_0046b6f0[0x10] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._16_8_; + s_Only_32f_and_64f_are_supported_0046b6f0[0x11] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[0x12] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[0x13] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[0x14] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,4); + s_Only_32f_and_64f_are_supported_0046b6f0[0x15] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,5); + s_Only_32f_and_64f_are_supported_0046b6f0[0x16] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,6); + s_Only_32f_and_64f_are_supported_0046b6f0[0x17] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,7); + s_Only_32f_and_64f_are_supported_0046b6f0[0x18] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._24_4_; + s_Only_32f_and_64f_are_supported_0046b6f0[0x19] = + SUB41(s_Only_32f_and_64f_are_supported_0046b6f0._24_4_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[0x1a] = + SUB41(s_Only_32f_and_64f_are_supported_0046b6f0._24_4_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[0x1b] = + SUB41(s_Only_32f_and_64f_are_supported_0046b6f0._24_4_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[0x1c] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._28_2_; + s_Only_32f_and_64f_are_supported_0046b6f0[0x1d] = + SUB21(s_Only_32f_and_64f_are_supported_0046b6f0._28_2_,1); + return; + } + } + else { + if (piVar15 == (int *)0x0) { + s_Only_32f_and_64f_are_supported_0046b6f0[0] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._0_8_; + s_Only_32f_and_64f_are_supported_0046b6f0[1] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[2] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[3] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[4] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,4); + s_Only_32f_and_64f_are_supported_0046b6f0[5] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,5); + s_Only_32f_and_64f_are_supported_0046b6f0[6] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,6); + s_Only_32f_and_64f_are_supported_0046b6f0[7] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._0_8_,7); + s_Only_32f_and_64f_are_supported_0046b6f0[8] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._8_8_; + s_Only_32f_and_64f_are_supported_0046b6f0[9] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[10] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[0xb] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[0xc] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,4); + s_Only_32f_and_64f_are_supported_0046b6f0[0xd] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,5); + s_Only_32f_and_64f_are_supported_0046b6f0[0xe] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,6); + s_Only_32f_and_64f_are_supported_0046b6f0[0xf] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._8_8_,7); + s_Only_32f_and_64f_are_supported_0046b6f0[0x10] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._16_8_; + s_Only_32f_and_64f_are_supported_0046b6f0[0x11] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[0x12] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[0x13] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[0x14] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,4); + s_Only_32f_and_64f_are_supported_0046b6f0[0x15] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,5); + s_Only_32f_and_64f_are_supported_0046b6f0[0x16] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,6); + s_Only_32f_and_64f_are_supported_0046b6f0[0x17] = + SUB81(s_Only_32f_and_64f_are_supported_0046b6f0._16_8_,7); + s_Only_32f_and_64f_are_supported_0046b6f0[0x18] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._24_4_; + s_Only_32f_and_64f_are_supported_0046b6f0[0x19] = + SUB41(s_Only_32f_and_64f_are_supported_0046b6f0._24_4_,1); + s_Only_32f_and_64f_are_supported_0046b6f0[0x1a] = + SUB41(s_Only_32f_and_64f_are_supported_0046b6f0._24_4_,2); + s_Only_32f_and_64f_are_supported_0046b6f0[0x1b] = + SUB41(s_Only_32f_and_64f_are_supported_0046b6f0._24_4_,3); + s_Only_32f_and_64f_are_supported_0046b6f0[0x1c] = + (char)s_Only_32f_and_64f_are_supported_0046b6f0._28_2_; + s_Only_32f_and_64f_are_supported_0046b6f0[0x1d] = + SUB21(s_Only_32f_and_64f_are_supported_0046b6f0._28_2_,1); + return; + } + piVar16 = param_5; + if ((param_4 < piVar13 + 4 && piVar13 < param_4 + 4) || (piVar15 < (int *)0xc)) { + piVar9 = (int *)0x0; + do { + param_4[(long)piVar9] = piVar13[(long)piVar9]; + piVar9 = (int *)((long)piVar9 + 1); + } while (piVar9 != piVar15); + } + else { + piVar7 = (int *)(-((ulong)param_4 >> 2 & 3) & 3); + piVar9 = piVar15; + if (piVar7 < piVar15) { + piVar9 = piVar7; + } + piVar7 = piVar9; + if ((piVar9 != (int *)0x0) && (*param_4 = *piVar13, piVar9 != (int *)0x1)) { + param_4[1] = piVar13[1]; + if (piVar9 == (int *)0x3) { + param_4[2] = piVar13[2]; + } + else { + piVar7 = (int *)0x2; + } + } + uVar10 = 0; + uVar1 = (((long)piVar15 - (long)piVar9) - 4U >> 2) + 1; + piVar8 = param_4 + (long)piVar9; + piVar11 = piVar13 + (long)piVar9; + do { + uVar18 = *(undefined8 *)piVar11; + uVar10 = uVar10 + 1; + *(undefined8 *)(piVar8 + 2) = *(undefined8 *)(piVar11 + 2); + *(undefined8 *)piVar8 = uVar18; + piVar8 = piVar8 + 4; + piVar11 = piVar11 + 4; + } while (uVar10 < uVar1); + piVar7 = piVar7 + uVar1; + if ((long)piVar15 - (long)piVar9 != uVar1 * 4) { + piVar9 = (int *)((long)piVar7 + 1); + param_4[(long)piVar7] = piVar13[(long)piVar7]; + if (piVar9 < piVar15) { + piVar7 = (int *)((long)piVar7 + 2); + param_4[(long)piVar9] = piVar13[(long)piVar9]; + if (piVar7 < piVar15) { + param_4[(long)piVar7] = piVar13[(long)piVar7]; + } + } + } + } + } + if (piVar16 != (int *)0x0) { + if ((param_5 < piVar12 + 4 && piVar12 < param_5 + 4) || (piVar15 < (int *)0xc)) { + piVar13 = (int *)0x0; + do { + param_5[(long)piVar13] = piVar12[(long)piVar13]; + piVar13 = (int *)((long)piVar13 + 1); + } while (piVar13 != piVar15); + } + else { + piVar16 = (int *)(-((ulong)param_5 >> 2 & 3) & 3); + piVar13 = piVar15; + if (piVar16 < piVar15) { + piVar13 = piVar16; + } + piVar16 = piVar13; + if ((piVar13 != (int *)0x0) && (*param_5 = *piVar12, piVar13 != (int *)0x1)) { + param_5[1] = piVar12[1]; + if (piVar13 == (int *)0x3) { + param_5[2] = piVar12[2]; + } + else { + piVar16 = (int *)0x2; + } + } + uVar10 = 0; + uVar1 = (((long)piVar15 - (long)piVar13) - 4U >> 2) + 1; + piVar9 = param_5 + (long)piVar13; + piVar7 = piVar12 + (long)piVar13; + do { + uVar18 = *(undefined8 *)piVar7; + uVar10 = uVar10 + 1; + *(undefined8 *)(piVar9 + 2) = *(undefined8 *)(piVar7 + 2); + *(undefined8 *)piVar9 = uVar18; + piVar9 = piVar9 + 4; + piVar7 = piVar7 + 4; + } while (uVar10 < uVar1); + piVar16 = piVar16 + uVar1; + if ((long)piVar15 - (long)piVar13 != uVar1 * 4) { + piVar13 = (int *)((long)piVar16 + 1); + param_5[(long)piVar16] = piVar12[(long)piVar16]; + if (piVar13 < piVar15) { + piVar16 = (int *)((long)piVar16 + 2); + param_5[(long)piVar13] = piVar12[(long)piVar13]; + if (piVar16 < piVar15) { + param_5[(long)piVar16] = piVar12[(long)piVar16]; + } + } + } + } + } + return; +} + + +================================================================== + +### FUNC 003329c0 (236 bytes) name=normalize + +/* cv::normalize(cv::SparseMat const&, cv::SparseMat&, double, int) */ + +void cv::normalize(SparseMat *param_1,SparseMat *param_2,double param_3,int param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + char cVar4; + char *pcVar5; + double dVar6; + undefined8 local_10; + undefined8 local_8; + + if ((param_4 - 1U < 2) || (param_4 == 4)) { + dVar6 = (double)norm(param_1,param_4); + if (dVar6 <= DAT_00332ac0) { + dVar6 = 0.0; + } + else { + dVar6 = param_3 / dVar6; + } + } + else { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x1d); + cVar4 = s_Unknown_unsupported_norm_type_00463410[0x1c]; + uVar3 = s_Unknown_unsupported_norm_type_00463410._24_4_; + uVar2 = s_Unknown_unsupported_norm_type_00463410._8_8_; + uVar1 = s_Unknown_unsupported_norm_type_00463410._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_Unknown_unsupported_norm_type_00463410._16_8_; + *(undefined4 *)(pcVar5 + 0x18) = uVar3; + pcVar5[0x1c] = cVar4; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-5,(String *)&local_10, + "void cv::normalize(const cv::SparseMat&, cv::SparseMat&, double, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x14d8); + String::deallocate((String *)&local_10); + dVar6 = 1.0; + } + SparseMat::convertTo(param_1,param_2,-1,dVar6); + return; +} + + +================================================================== + +### FUNC 00332ac8 (640 bytes) name=RotatedRect + +/* cv::RotatedRect::RotatedRect(cv::Point_ const&, cv::Point_ const&, + cv::Point_ const&) */ + +void __thiscall +cv::RotatedRect::RotatedRect(RotatedRect *this,Point_ *param_1,Point_ *param_2,Point_ *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + char *pcVar10; + uint uVar11; + double dVar12; + float fVar13; + double dVar14; + double dVar15; + float fVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + double dVar23; + float local_20 [4]; + undefined8 local_10; + undefined8 local_8; + + *(undefined4 *)this = 0; + fVar19 = *(float *)param_1; + fVar21 = *(float *)param_2; + *(undefined4 *)(this + 4) = 0; + fVar13 = fVar19 - fVar21; + fVar16 = *(float *)(param_1 + 4); + fVar18 = *(float *)(param_3 + 4); + fVar22 = fVar16 - *(float *)(param_2 + 4); + fVar17 = *(float *)param_3; + fVar20 = *(float *)(param_2 + 4) - fVar18; + fVar21 = fVar21 - fVar17; + *(undefined4 *)(this + 8) = 0; + *(undefined4 *)(this + 0xc) = 0; + dVar12 = (double)fVar13 * (double)fVar13 + 0.0 + (double)fVar22 * (double)fVar22; + local_20[0] = fVar13; + local_20[1] = fVar22; + local_20[2] = fVar21; + local_20[3] = fVar20; + dVar23 = SQRT(dVar12); + if (NAN(dVar23)) { + dVar23 = ::sqrt(dVar12); + } + dVar15 = (double)fVar21 * (double)fVar21 + 0.0 + (double)fVar20 * (double)fVar20; + dVar12 = SQRT(dVar15); + if (NAN(dVar12)) { + dVar12 = ::sqrt(dVar15); + } + if (DAT_00332d60 < (double)ABS(fVar21 * fVar13 + 0.0 + fVar20 * fVar22) / (dVar23 * dVar12)) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_10,0x4a); + uVar9 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._64_8_; + uVar8 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._56_8_; + uVar7 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._48_8_; + uVar6 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._40_8_; + uVar5 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._32_8_; + uVar4 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._24_8_; + uVar3 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._16_8_; + uVar2 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._8_8_; + uVar1 = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._0_8_; + *(undefined2 *)(pcVar10 + 0x48) = s_abs_vecs_0__dot_vecs_1_______nor_0046b710._72_2_; + *(undefined8 *)(pcVar10 + 0x40) = uVar9; + *(undefined8 *)pcVar10 = uVar1; + *(undefined8 *)(pcVar10 + 8) = uVar2; + *(undefined8 *)(pcVar10 + 0x10) = uVar3; + *(undefined8 *)(pcVar10 + 0x18) = uVar4; + *(undefined8 *)(pcVar10 + 0x20) = uVar5; + *(undefined8 *)(pcVar10 + 0x28) = uVar6; + *(undefined8 *)(pcVar10 + 0x30) = uVar7; + *(undefined8 *)(pcVar10 + 0x38) = uVar8; + error(-0xd7,(String *)&local_10, + "cv::RotatedRect::RotatedRect(const Point2f&, const Point2f&, const Point2f&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x14e6); + String::deallocate((String *)&local_10); + } + uVar11 = (uint)(ABS(fVar20) < ABS(fVar21)); + fVar20 = local_20[(long)(int)uVar11 * 2]; + fVar13 = local_20[(long)(int)uVar11 * 2 + 1]; + dVar12 = atan((double)(fVar13 / fVar20)); + dVar15 = (double)fVar20; + dVar23 = (double)fVar13; + dVar23 = dVar15 * dVar15 + 0.0 + dVar23 * dVar23; + dVar15 = SQRT(dVar23); + if (NAN(dVar15)) { + dVar15 = ::sqrt(dVar23); + } + dVar23 = (double)local_20[(long)(int)(uVar11 ^ 1) * 2] * + (double)local_20[(long)(int)(uVar11 ^ 1) * 2] + 0.0 + + (double)local_20[(long)(int)(uVar11 ^ 1) * 2 + 1] * + (double)local_20[(long)(int)(uVar11 ^ 1) * 2 + 1]; + dVar14 = SQRT(dVar23); + if (NAN(dVar14)) { + dVar14 = ::sqrt(dVar23); + } + dVar23 = DAT_00332d70; + dVar12 = dVar12 * DAT_00332d68; + *(float *)this = (fVar17 + fVar19) * 0.5; + *(float *)(this + 4) = (fVar16 + fVar18) * 0.5; + *(float *)(this + 8) = (float)dVar15; + *(float *)(this + 0xc) = (float)dVar14; + *(float *)(this + 0x10) = (float)(dVar12 / dVar23); + return; +} + + +================================================================== + +### FUNC 00332d78 (228 bytes) name=points + +/* cv::RotatedRect::points(cv::Point_*) const */ + +void __thiscall cv::RotatedRect::points(RotatedRect *this,Point_ *param_1) + +{ + float fVar1; + double dVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + double __x; + + __x = ((double)*(float *)(this + 0x10) * DAT_00332e60) / DAT_00332e68; + dVar2 = cos(__x); + fVar8 = (float)dVar2 * 0.5; + dVar2 = sin(__x); + fVar6 = *(float *)(this + 0xc); + fVar1 = (float)dVar2 * 0.5; + fVar3 = *(float *)(this + 8); + fVar5 = (*(float *)(this + 4) + fVar6 * fVar8) - fVar3 * fVar1; + fVar4 = (*(float *)this - fVar1 * fVar6) - fVar8 * fVar3; + *(float *)(param_1 + 4) = fVar5; + fVar7 = *(float *)(this + 4); + *(float *)param_1 = fVar4; + fVar7 = (fVar7 - fVar6 * fVar8) - fVar3 * fVar1; + fVar1 = (*(float *)this + fVar1 * fVar6) - fVar8 * fVar3; + *(float *)(param_1 + 0xc) = fVar7; + *(float *)(param_1 + 8) = fVar1; + fVar3 = *(float *)this; + *(float *)(param_1 + 0x14) = *(float *)(this + 4) * 2.0 - fVar5; + *(float *)(param_1 + 0x10) = fVar3 * 2.0 - fVar4; + fVar3 = *(float *)this; + *(float *)(param_1 + 0x1c) = *(float *)(this + 4) * 2.0 - fVar7; + *(float *)(param_1 + 0x18) = fVar3 * 2.0 - fVar1; + return; +} + + +================================================================== + +### FUNC 00332e70 (356 bytes) name=boundingRect + +/* cv::RotatedRect::boundingRect() const */ + +int * cv::RotatedRect::boundingRect(void) + +{ + int iVar1; + int iVar2; + RotatedRect *in_x0; + int *in_x8; + float fVar3; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 uStack_8; + + local_18 = 0; + local_20 = 0; + uStack_8 = 0; + local_10 = 0; + points(in_x0,(Point_ *)&local_20); + fVar3 = (float)local_18; + if ((float)local_20 <= (float)local_18) { + fVar3 = (float)local_20; + } + if ((float)local_10 < fVar3) { + fVar3 = (float)local_10; + } + if ((float)uStack_8 < fVar3) { + fVar3 = (float)uStack_8; + } + iVar1 = (int)fVar3 - (uint)(fVar3 < (float)(int)fVar3); + fVar3 = local_18._4_4_; + if (local_20._4_4_ <= local_18._4_4_) { + fVar3 = local_20._4_4_; + } + if (local_10._4_4_ < fVar3) { + fVar3 = local_10._4_4_; + } + if (uStack_8._4_4_ < fVar3) { + fVar3 = uStack_8._4_4_; + } + iVar2 = (int)fVar3 - (uint)(fVar3 < (float)(int)fVar3); + if ((float)local_18 <= (float)local_20) { + local_18._0_4_ = (float)local_20; + } + if ((float)local_18 < (float)local_10) { + local_18._0_4_ = (float)local_10; + } + if ((float)local_18 < (float)uStack_8) { + local_18._0_4_ = (float)uStack_8; + } + if (local_18._4_4_ <= local_20._4_4_) { + local_18._4_4_ = local_20._4_4_; + } + if (local_18._4_4_ < local_10._4_4_) { + local_18._4_4_ = local_10._4_4_; + } + if (local_18._4_4_ < uStack_8._4_4_) { + local_18._4_4_ = uStack_8._4_4_; + } + in_x8[2] = (1 - iVar1) + + (int)(float)local_18 + (uint)((float)(int)(float)local_18 < (float)local_18); + *in_x8 = iVar1; + in_x8[1] = iVar2; + in_x8[3] = (1 - iVar2) + (int)local_18._4_4_ + (uint)((float)(int)local_18._4_4_ < local_18._4_4_) + ; + return in_x8; +} + + +================================================================== + +### FUNC 00332fd4 (136 bytes) name=CvMatND + +/* CvMatND::CvMatND(cv::Mat const&) */ + +void __thiscall CvMatND::CvMatND(CvMatND *this,Mat *param_1) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + + cvInitMatNDHeader(this,*(undefined4 *)(param_1 + 4),*(undefined8 *)(param_1 + 0x40), + *(uint *)param_1 & 0xfff,*(undefined8 *)(param_1 + 0x10)); + iVar2 = *(int *)(param_1 + 4); + if (0 < iVar2) { + lVar3 = *(long *)(param_1 + 0x48); + lVar4 = 0; + do { + lVar1 = lVar4 + 8; + *(int *)(this + lVar4 + 0x24) = (int)*(undefined8 *)(lVar3 + lVar4); + lVar4 = lVar1; + } while (lVar1 != ((ulong)(iVar2 - 1) + 1) * 8); + } + *(uint *)this = *(uint *)this | *(uint *)param_1 & 0x4000; + return; +} + + +================================================================== + +### FUNC 0033305c (284 bytes) name=_IplImage + +/* _IplImage::_IplImage(cv::Mat const&) */ + +void __thiscall _IplImage::_IplImage(_IplImage *this,Mat *param_1) + +{ + uint uVar1; + undefined2 uVar2; + char cVar3; + char *pcVar4; + uint uVar5; + undefined8 local_10; + undefined8 local_8; + + if (2 < *(int *)(param_1 + 4)) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)cv::String::allocate((String *)&local_10,0xb); + cVar3 = s_m_dims_<__2_0046acf8[10]; + uVar2 = s_m_dims_<__2_0046acf8._8_2_; + *(undefined8 *)pcVar4 = s_m_dims_<__2_0046acf8._0_8_; + *(undefined2 *)(pcVar4 + 8) = uVar2; + pcVar4[10] = cVar3; + cv::error(-0xd7,(String *)&local_10,"_IplImage::_IplImage(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1523); + cv::String::deallocate((String *)&local_10); + } + uVar1 = *(uint *)param_1 & 7; + if ((uVar1 - 3 < 2) || (uVar5 = 0, uVar1 == 1)) { + uVar5 = 0x80000000; + } + cvInitImageHeader(this,CONCAT44(**(undefined4 **)(param_1 + 0x40), + (*(undefined4 **)(param_1 + 0x40))[1]), + uVar5 | ((uint)(0x88442211L >> (ulong)(uVar1 << 2)) & 0xf) << 3, + (*(uint *)param_1 >> 3 & 0x1ff) + 1,0,4); + cvSetData(this,*(undefined8 *)(param_1 + 0x10),**(undefined4 **)(param_1 + 0x48)); + return; +} + + +================================================================== + +### FUNC 0033318c (1116 bytes) name=cvCreateSparseMat + +/* cvCreateSparseMat(cv::SparseMat const&) */ + +undefined8 cvCreateSparseMat(SparseMat *param_1) + +{ + ulong uVar1; + undefined1 *puVar2; + ulong uVar3; + int iVar4; + undefined8 uVar5; + ulong uVar6; + long lVar7; + undefined8 *puVar8; + ulong uVar9; + long lVar10; + ulong uVar11; + long lVar12; + ulong uVar13; + undefined8 *puVar14; + ulong uVar15; + long lVar16; + undefined8 uVar17; + long local_18 [2]; + long local_8; + + lVar12 = *(long *)(param_1 + 8); + if (lVar12 == 0) { + uVar5 = 0; + } + else { + uVar5 = cvCreateSparseMat(*(undefined4 *)(lVar12 + 4),lVar12 + 0x58,*(uint *)param_1 & 0xfff); + cv::SparseMatConstIterator::SparseMatConstIterator((SparseMatConstIterator *)local_18,param_1); + if (*(long *)(param_1 + 8) != 0) { + lVar12 = *(long *)(*(long *)(param_1 + 8) + 0x18); + iVar4 = (*(uint *)param_1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)param_1 & 7) << 1)) & 3); + uVar15 = (ulong)iVar4; + if (lVar12 != 0) { + lVar16 = 0; + do { + if ((local_8 == 0) || (local_18[0] == 0)) { + lVar7 = 0; + } + else { + lVar7 = 0; + if (*(long *)(local_18[0] + 8) != 0) { + lVar7 = local_8 - *(int *)(*(long *)(local_18[0] + 8) + 8); + } + } + lVar7 = cvPtrND(uVar5,lVar7 + 0x10,0,0xfffffffe,0); + if (iVar4 < 4) { + uVar9 = 0; +LAB_00333288: + puVar2 = (undefined1 *)(local_8 + uVar9); + uVar6 = uVar15 - uVar9; + if ((puVar2 < (undefined1 *)(lVar7 + uVar9 + 0x10) && + (undefined1 *)(lVar7 + uVar9) < (undefined1 *)(local_8 + uVar9 + 0x10)) || + (uVar6 < 0x16)) { + do { + *(undefined1 *)(lVar7 + uVar9) = *(undefined1 *)(local_8 + uVar9); + uVar6 = uVar9 + 1; + if (uVar15 == uVar6) break; + *(undefined1 *)(lVar7 + uVar6) = *(undefined1 *)(local_8 + uVar6); + uVar9 = uVar9 + 2; + } while (uVar15 != uVar9); + } + else { + uVar3 = uVar6; + if ((-(long)puVar2 & 0xfU) < uVar6) { + uVar3 = -(long)puVar2 & 0xfU; + } + uVar11 = uVar9; + if (uVar3 != 0) { + *(undefined1 *)(lVar7 + uVar9) = *puVar2; + uVar11 = uVar9 + 1; + if (uVar3 != 1) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 2; + if (uVar3 != 2) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 3; + if (uVar3 != 3) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 4; + if (uVar3 != 4) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 5; + if (uVar3 != 5) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 6; + if (uVar3 != 6) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 7; + if (uVar3 != 7) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 8; + if (uVar3 != 8) { + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 9; + if (uVar3 != 9) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 10; + if (uVar3 != 10) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 0xb; + if (uVar3 != 0xb) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 0xc; + if (uVar3 != 0xc) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 0xd; + if (uVar3 != 0xd) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 0xe; + if (uVar3 == 0xf) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + uVar11 = uVar9 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar6 - uVar3) - 0x10 >> 4) + 1; + lVar10 = uVar1 * 0x10; + if (0xe < (uVar6 - 1) - uVar3) { + uVar13 = 0; + puVar8 = (undefined8 *)(lVar7 + uVar3 + uVar9); + puVar14 = (undefined8 *)(local_8 + uVar3 + uVar9); + do { + uVar17 = *puVar14; + uVar13 = uVar13 + 1; + puVar8[1] = puVar14[1]; + *puVar8 = uVar17; + puVar8 = puVar8 + 2; + puVar14 = puVar14 + 2; + } while (uVar13 < uVar1); + uVar11 = uVar11 + lVar10; + if (uVar6 - uVar3 == lVar10) goto LAB_0033356c; + } + uVar9 = uVar11 + 1; + *(undefined1 *)(lVar7 + uVar11) = *(undefined1 *)(local_8 + uVar11); + if (uVar9 < uVar15) { + uVar6 = uVar11 + 2; + *(undefined1 *)(lVar7 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar6 < uVar15) { + uVar9 = uVar11 + 3; + *(undefined1 *)(lVar7 + uVar6) = *(undefined1 *)(local_8 + uVar6); + if (uVar9 < uVar15) { + uVar6 = uVar11 + 4; + *(undefined1 *)(lVar7 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar6 < uVar15) { + uVar9 = uVar11 + 5; + *(undefined1 *)(lVar7 + uVar6) = *(undefined1 *)(local_8 + uVar6); + if (uVar9 < uVar15) { + uVar6 = uVar11 + 6; + *(undefined1 *)(lVar7 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar6 < uVar15) { + uVar9 = uVar11 + 7; + *(undefined1 *)(lVar7 + uVar6) = *(undefined1 *)(local_8 + uVar6); + if (uVar9 < uVar15) { + uVar6 = uVar11 + 8; + *(undefined1 *)(lVar7 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar6 < uVar15) { + uVar9 = uVar11 + 9; + *(undefined1 *)(lVar7 + uVar6) = *(undefined1 *)(local_8 + uVar6); + if (uVar9 < uVar15) { + uVar6 = uVar11 + 10; + *(undefined1 *)(lVar7 + uVar9) = *(undefined1 *)(local_8 + uVar9); + if (uVar6 < uVar15) { + uVar9 = uVar11 + 0xb; + *(undefined1 *)(lVar7 + uVar6) = *(undefined1 *)(local_8 + uVar6); + if (uVar9 < uVar15) { + uVar6 = uVar11 + 0xc; + *(undefined1 *)(lVar7 + uVar9) = + *(undefined1 *)(local_8 + uVar9); + if (uVar6 < uVar15) { + uVar9 = uVar11 + 0xd; + *(undefined1 *)(lVar7 + uVar6) = + *(undefined1 *)(local_8 + uVar6); + if (uVar9 < uVar15) { + uVar11 = uVar11 + 0xe; + *(undefined1 *)(lVar7 + uVar9) = + *(undefined1 *)(local_8 + uVar9); + if (uVar11 < uVar15) { + *(undefined1 *)(lVar7 + uVar11) = + *(undefined1 *)(local_8 + uVar11); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + lVar10 = 0; + uVar6 = 4; + do { + uVar9 = uVar6; + *(undefined4 *)(lVar7 + lVar10) = *(undefined4 *)(local_8 + lVar10); + lVar10 = lVar10 + 4; + uVar6 = uVar9 + 4; + } while (uVar9 + 4 <= uVar15); + if (uVar9 < uVar15) goto LAB_00333288; + } +LAB_0033356c: + lVar16 = lVar16 + 1; + cv::SparseMatConstIterator::operator++((SparseMatConstIterator *)local_18); + } while (lVar16 != lVar12); + } + } + } + return uVar5; +} + + +================================================================== + +### FUNC 003335e8 (1240 bytes) name=copyToSparseMat + +/* CvSparseMat::copyToSparseMat(cv::SparseMat&) const */ + +void __thiscall CvSparseMat::copyToSparseMat(CvSparseMat *this,SparseMat *param_1) + +{ + ulong uVar1; + uint uVar2; + int iVar3; + long lVar4; + long lVar5; + long *plVar6; + int *piVar7; + ulong uVar8; + ulong uVar9; + undefined8 *puVar10; + ulong uVar11; + long lVar12; + uint *puVar13; + long lVar15; + ulong uVar16; + ulong uVar17; + long lVar18; + ulong uVar19; + undefined8 *puVar20; + undefined8 uVar21; + long local_18; + long local_10; + uint local_8; + uint *puVar14; + + cv::SparseMat::create(param_1,*(int *)(this + 4),(int *)(this + 0x34),*(int *)this); + lVar4 = cvInitSparseMatIterator(this,&local_18); + iVar3 = (*(uint *)param_1 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)param_1 & 7) << 1)) & 3); + uVar19 = (ulong)iVar3; + if (lVar4 == 0) { + return; + } + lVar12 = *(long *)(param_1 + 8); + piVar7 = (int *)(lVar4 + *(int *)(this + 0x30)); + uVar2 = *(uint *)(lVar4 + *(int *)(this + 0x30)); + if (lVar12 == 0) goto LAB_003339fc; +LAB_00333668: + uVar9 = (ulong)uVar2; + if (1 < *(int *)(lVar12 + 4)) { + puVar13 = (uint *)(piVar7 + 1); + do { + puVar14 = puVar13 + 1; + uVar9 = (ulong)*puVar13 + uVar9 * 0x5bd1e995; + puVar13 = puVar14; + } while (puVar14 != (uint *)(piVar7 + (ulong)(*(int *)(lVar12 + 4) - 2) + 2)); + } + lVar5 = cv::SparseMat::newNode(param_1,piVar7,uVar9); + lVar18 = (long)*(int *)(this + 0x2c); + lVar12 = lVar4 + lVar18; + if (iVar3 < 4) goto LAB_00333a18; +LAB_003336b4: + lVar15 = 0; + uVar9 = 4; + do { + uVar11 = uVar9; + *(undefined4 *)(lVar5 + lVar15) = *(undefined4 *)(lVar12 + lVar15); + lVar15 = lVar15 + 4; + uVar9 = uVar11 + 4; + } while (uVar11 + 4 <= uVar19); + if (uVar19 <= uVar11) goto LAB_003339d8; + do { + uVar9 = lVar4 + lVar18 + uVar11; + uVar8 = uVar19 - uVar11; + if (((undefined1 *)(lVar5 + uVar11) < (undefined1 *)(lVar4 + lVar18 + 0x10 + uVar11) && + uVar9 < lVar5 + uVar11 + 0x10) || (uVar8 < 0x16)) { + do { + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + uVar9 = uVar11 + 1; + if (uVar19 == uVar9) break; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + uVar11 = uVar11 + 2; + } while (uVar19 != uVar11); + } + else { + uVar9 = -uVar9 & 0xf; + if (uVar8 < uVar9) { + uVar9 = uVar8; + } + uVar16 = uVar11; + if (uVar9 != 0) { + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + uVar16 = uVar11 + 1; + if (uVar9 != 1) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 2; + if (uVar9 != 2) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 3; + if (uVar9 != 3) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 4; + if (uVar9 != 4) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 5; + if (uVar9 != 5) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 6; + if (uVar9 != 6) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 7; + if (uVar9 != 7) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 8; + if (uVar9 != 8) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 9; + if (uVar9 != 9) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 10; + if (uVar9 != 10) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 0xb; + if (uVar9 != 0xb) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 0xc; + if (uVar9 != 0xc) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 0xd; + if (uVar9 != 0xd) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16) + ; + uVar16 = uVar11 + 0xe; + if (uVar9 == 0xf) { + *(undefined1 *)(lVar5 + uVar16) = + *(undefined1 *)(lVar12 + uVar16); + uVar16 = uVar11 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar1 = ((uVar8 - uVar9) - 0x10 >> 4) + 1; + lVar15 = uVar1 * 0x10; + if (0xe < (uVar8 - 1) - uVar9) { + uVar17 = 0; + puVar10 = (undefined8 *)(lVar5 + uVar9 + uVar11); + puVar20 = (undefined8 *)(lVar4 + uVar9 + lVar18 + uVar11); + do { + uVar21 = *puVar20; + uVar17 = uVar17 + 1; + puVar10[1] = puVar20[1]; + *puVar10 = uVar21; + puVar10 = puVar10 + 2; + puVar20 = puVar20 + 2; + } while (uVar17 < uVar1); + uVar16 = uVar16 + lVar15; + if (lVar15 - (uVar8 - uVar9) == 0) goto LAB_003339d8; + } + uVar9 = uVar16 + 1; + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16); + if (uVar9 < uVar19) { + uVar11 = uVar16 + 2; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar11 < uVar19) { + uVar9 = uVar16 + 3; + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + if (uVar9 < uVar19) { + uVar11 = uVar16 + 4; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar11 < uVar19) { + uVar9 = uVar16 + 5; + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + if (uVar9 < uVar19) { + uVar11 = uVar16 + 6; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar11 < uVar19) { + uVar9 = uVar16 + 7; + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + if (uVar9 < uVar19) { + uVar11 = uVar16 + 8; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar11 < uVar19) { + uVar9 = uVar16 + 9; + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + if (uVar9 < uVar19) { + uVar11 = uVar16 + 10; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar11 < uVar19) { + uVar9 = uVar16 + 0xb; + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + if (uVar9 < uVar19) { + uVar11 = uVar16 + 0xc; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar11 < uVar19) { + uVar9 = uVar16 + 0xd; + *(undefined1 *)(lVar5 + uVar11) = *(undefined1 *)(lVar12 + uVar11); + if (uVar9 < uVar19) { + uVar16 = uVar16 + 0xe; + *(undefined1 *)(lVar5 + uVar9) = *(undefined1 *)(lVar12 + uVar9); + if (uVar16 < uVar19) { + *(undefined1 *)(lVar5 + uVar16) = *(undefined1 *)(lVar12 + uVar16) + ; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003339d8: + lVar4 = *(long *)(local_10 + 8); + if (lVar4 == 0) { + local_8 = local_8 + 1; + uVar9 = (ulong)local_8; + if ((int)*(uint *)(local_18 + 0x28) <= (int)local_8) { + return; + } + uVar11 = -(ulong)(local_8 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + plVar6 = (long *)(*(long *)(local_18 + 0x20) + uVar11); + lVar4 = *(long *)(*(long *)(local_18 + 0x20) + uVar11); + while (lVar4 == 0) { + local_8 = (int)uVar9 + 1; + uVar9 = (ulong)local_8; + if (local_8 == *(uint *)(local_18 + 0x28)) { + return; + } + plVar6 = plVar6 + 1; + lVar4 = *plVar6; + } + } + lVar12 = *(long *)(param_1 + 8); + piVar7 = (int *)(lVar4 + *(int *)(this + 0x30)); + uVar2 = *(uint *)(lVar4 + *(int *)(this + 0x30)); + local_10 = lVar4; + if (lVar12 != 0) goto LAB_00333668; +LAB_003339fc: + lVar5 = cv::SparseMat::newNode(param_1,piVar7,0); + lVar18 = (long)*(int *)(this + 0x2c); + lVar12 = lVar4 + lVar18; + if (3 < iVar3) goto LAB_003336b4; +LAB_00333a18: + uVar11 = 0; + } while( true ); +} + + +================================================================== + +### FUNC 00333ac0 (3288 bytes) name=_M_fill_insert + +/* std::vector + >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, cv::Mat const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,Mat *param_2,ulong param_3,Mat *param_4) + +{ + int *piVar1; + undefined4 uVar2; + char cVar3; + bool bVar4; + long lVar5; + int iVar6; + undefined8 *puVar7; + ulong uVar8; + undefined8 *puVar9; + long lVar10; + undefined4 *puVar11; + undefined8 uVar12; + Mat *pMVar13; + Mat *pMVar14; + Mat *pMVar15; + ulong uVar16; + long lVar17; + Mat *pMVar18; + Mat *pMVar19; + undefined8 local_60; + undefined8 uStack_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + if (param_3 == 0) { + return; + } + if (param_3 <= (ulong)((*(long *)(this + 0x10) - *(long *)(this + 8) >> 5) * -0x5555555555555555)) + { + uStack_58 = *(undefined8 *)(param_4 + 8); + local_60 = *(ulong *)param_4; + local_50 = *(undefined8 *)(param_4 + 0x10); + local_18 = &local_10; + local_48 = *(undefined8 *)(param_4 + 0x18); + local_40 = *(undefined8 *)(param_4 + 0x20); + local_20 = &uStack_58; + uStack_8 = 0; + local_10 = 0; + local_38 = *(undefined8 *)(param_4 + 0x28); + local_30 = *(undefined8 *)(param_4 + 0x30); + local_28 = *(long *)(param_4 + 0x38); + iVar6 = *(int *)(param_4 + 4); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + iVar6 = *(int *)(param_4 + 4); + } + if (iVar6 < 3) { + pMVar13 = *(Mat **)(this + 8); + local_10 = **(undefined8 **)(param_4 + 0x48); + lVar17 = (long)pMVar13 - (long)param_2; + uStack_8 = (*(undefined8 **)(param_4 + 0x48))[1]; + } + else { + local_60 = local_60 & 0xffffffff; + cv::Mat::copySize((Mat *)&local_60,param_4); + pMVar13 = *(Mat **)(this + 8); + lVar17 = (long)pMVar13 - (long)param_2; + } + if (param_3 < (ulong)((lVar17 >> 5) * -0x5555555555555555)) { + pMVar18 = pMVar13 + param_3 * -0x60; + pMVar15 = pMVar18; + pMVar14 = pMVar13; + if (pMVar18 != pMVar13) { + do { + if (pMVar14 != (Mat *)0x0) { + *(undefined4 *)pMVar14 = *(undefined4 *)pMVar15; + uVar12 = *(undefined8 *)(pMVar15 + 0x10); + *(undefined4 *)(pMVar14 + 4) = *(undefined4 *)(pMVar15 + 4); + *(undefined4 *)(pMVar14 + 8) = *(undefined4 *)(pMVar15 + 8); + uVar2 = *(undefined4 *)(pMVar15 + 0xc); + *(undefined8 *)(pMVar14 + 0x10) = uVar12; + *(undefined4 *)(pMVar14 + 0xc) = uVar2; + *(undefined8 *)(pMVar14 + 0x18) = *(undefined8 *)(pMVar15 + 0x18); + *(undefined8 *)(pMVar14 + 0x20) = *(undefined8 *)(pMVar15 + 0x20); + *(undefined8 *)(pMVar14 + 0x28) = *(undefined8 *)(pMVar15 + 0x28); + *(undefined8 *)(pMVar14 + 0x30) = *(undefined8 *)(pMVar15 + 0x30); + lVar17 = *(long *)(pMVar15 + 0x38); + *(long *)(pMVar14 + 0x38) = lVar17; + *(Mat **)(pMVar14 + 0x40) = pMVar14 + 8; + *(Mat **)(pMVar14 + 0x48) = pMVar14 + 0x50; + *(undefined8 *)(pMVar14 + 0x58) = 0; + *(undefined8 *)(pMVar14 + 0x50) = 0; + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + puVar9 = *(undefined8 **)(pMVar15 + 0x48); + puVar7 = *(undefined8 **)(pMVar14 + 0x48); + *puVar7 = *puVar9; + puVar7[1] = puVar9[1]; + } + else { + *(undefined4 *)(pMVar14 + 4) = 0; + cv::Mat::copySize(pMVar14,pMVar15); + } + } + pMVar15 = pMVar15 + 0x60; + pMVar14 = pMVar14 + 0x60; + } while (pMVar13 != pMVar15); + pMVar15 = *(Mat **)(this + 8); + } + *(Mat **)(this + 8) = pMVar15 + param_3 * 0x60; + pMVar15 = pMVar18; + if (0 < ((long)pMVar18 - (long)param_2 >> 5) * -0x5555555555555555) { + do { + pMVar14 = pMVar13 + -0x60; + pMVar19 = pMVar15 + -0x60; + if (pMVar14 != pMVar19) { + if (*(long *)(pMVar15 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar15 + -0x28) + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(pMVar13 + -0x28) == 0) { +LAB_00333d10: + *(undefined8 *)(pMVar13 + -0x28) = 0; + *(undefined8 *)(pMVar13 + -0x50) = 0; + *(undefined8 *)(pMVar13 + -0x38) = 0; + *(undefined8 *)(pMVar13 + -0x40) = 0; + *(undefined8 *)(pMVar13 + -0x48) = 0; + if (0 < *(int *)(pMVar13 + -0x5c)) goto LAB_00333d30; +LAB_0033468c: + *(undefined4 *)pMVar14 = *(undefined4 *)pMVar19; +LAB_00333d5c: + if (2 < *(int *)(pMVar15 + -0x5c)) goto LAB_00334640; + *(int *)(pMVar13 + -0x5c) = *(int *)(pMVar15 + -0x5c); + puVar9 = *(undefined8 **)(pMVar15 + -0x18); + *(undefined4 *)(pMVar13 + -0x58) = *(undefined4 *)(pMVar15 + -0x58); + puVar7 = *(undefined8 **)(pMVar13 + -0x18); + *(undefined4 *)(pMVar13 + -0x54) = *(undefined4 *)(pMVar15 + -0x54); + *puVar7 = *puVar9; + puVar7[1] = puVar9[1]; + } + else { + piVar1 = (int *)(*(long *)(pMVar13 + -0x28) + 0x14); + do { + iVar6 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 != 1) goto LAB_00333d10; + cv::Mat::deallocate(pMVar14); + *(undefined8 *)(pMVar13 + -0x28) = 0; + *(undefined8 *)(pMVar13 + -0x50) = 0; + *(undefined8 *)(pMVar13 + -0x38) = 0; + *(undefined8 *)(pMVar13 + -0x40) = 0; + *(undefined8 *)(pMVar13 + -0x48) = 0; + if (*(int *)(pMVar13 + -0x5c) < 1) goto LAB_0033468c; +LAB_00333d30: + iVar6 = 0; + puVar11 = *(undefined4 **)(pMVar13 + -0x20); + do { + *puVar11 = 0; + iVar6 = iVar6 + 1; + puVar11 = puVar11 + 1; + } while (iVar6 < *(int *)(pMVar13 + -0x5c)); + *(undefined4 *)pMVar14 = *(undefined4 *)pMVar19; + if (*(int *)(pMVar13 + -0x5c) < 3) goto LAB_00333d5c; +LAB_00334640: + cv::Mat::copySize(pMVar14,pMVar19); + } + *(undefined8 *)(pMVar13 + -0x50) = *(undefined8 *)(pMVar15 + -0x50); + *(undefined8 *)(pMVar13 + -0x48) = *(undefined8 *)(pMVar15 + -0x48); + *(undefined8 *)(pMVar13 + -0x40) = *(undefined8 *)(pMVar15 + -0x40); + *(undefined8 *)(pMVar13 + -0x38) = *(undefined8 *)(pMVar15 + -0x38); + *(undefined8 *)(pMVar13 + -0x30) = *(undefined8 *)(pMVar15 + -0x30); + *(undefined8 *)(pMVar13 + -0x28) = *(undefined8 *)(pMVar15 + -0x28); + } + pMVar13 = pMVar14; + pMVar15 = pMVar19; + } while (pMVar19 != pMVar18 + -((long)pMVar18 - (long)param_2)); + } + pMVar13 = param_2 + param_3 * 0x60; + lVar17 = local_28; + for (; param_2 != pMVar13; param_2 = param_2 + 0x60) { + if (param_2 != (Mat *)&local_60) { + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(param_2 + 0x38) == 0) { +LAB_00333e20: + *(undefined8 *)(param_2 + 0x38) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined8 *)(param_2 + 0x28) = 0; + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined8 *)(param_2 + 0x18) = 0; + if (0 < *(int *)(param_2 + 4)) goto LAB_00333e40; +LAB_003346c0: + *(undefined4 *)param_2 = (undefined4)local_60; +LAB_00333e6c: + if (2 < local_60._4_4_) goto LAB_00334630; + puVar7 = *(undefined8 **)(param_2 + 0x48); + *(int *)(param_2 + 4) = local_60._4_4_; + *(undefined4 *)(param_2 + 8) = (undefined4)uStack_58; + uVar12 = *local_18; + *(undefined4 *)(param_2 + 0xc) = uStack_58._4_4_; + *puVar7 = uVar12; + puVar7[1] = local_18[1]; + } + else { + piVar1 = (int *)(*(long *)(param_2 + 0x38) + 0x14); + do { + iVar6 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 != 1) goto LAB_00333e20; + cv::Mat::deallocate(param_2); + *(undefined8 *)(param_2 + 0x38) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined8 *)(param_2 + 0x28) = 0; + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined8 *)(param_2 + 0x18) = 0; + if (*(int *)(param_2 + 4) < 1) goto LAB_003346c0; +LAB_00333e40: + iVar6 = 0; + puVar11 = *(undefined4 **)(param_2 + 0x40); + do { + *puVar11 = 0; + iVar6 = iVar6 + 1; + puVar11 = puVar11 + 1; + } while (iVar6 < *(int *)(param_2 + 4)); + *(undefined4 *)param_2 = (undefined4)local_60; + if (*(int *)(param_2 + 4) < 3) goto LAB_00333e6c; +LAB_00334630: + cv::Mat::copySize(param_2,(Mat *)&local_60); + } + *(undefined8 *)(param_2 + 0x10) = local_50; + *(undefined8 *)(param_2 + 0x18) = local_48; + *(undefined8 *)(param_2 + 0x20) = local_40; + *(undefined8 *)(param_2 + 0x28) = local_38; + *(undefined8 *)(param_2 + 0x30) = local_30; + *(long *)(param_2 + 0x38) = local_28; + lVar17 = local_28; + } + } + } + else { + lVar5 = param_3 + (lVar17 >> 5) * 0x5555555555555555; + pMVar15 = pMVar13; + lVar10 = lVar5; + if (lVar5 != 0) { + do { + if (pMVar15 != (Mat *)0x0) { + *(undefined4 *)pMVar15 = (undefined4)local_60; + *(int *)(pMVar15 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar15 + 8) = (undefined4)uStack_58; + *(undefined8 *)(pMVar15 + 0x10) = local_50; + *(undefined4 *)(pMVar15 + 0xc) = uStack_58._4_4_; + *(undefined8 *)(pMVar15 + 0x18) = local_48; + *(undefined8 *)(pMVar15 + 0x20) = local_40; + *(undefined8 *)(pMVar15 + 0x28) = local_38; + *(undefined8 *)(pMVar15 + 0x30) = local_30; + *(long *)(pMVar15 + 0x38) = local_28; + *(Mat **)(pMVar15 + 0x40) = pMVar15 + 8; + *(Mat **)(pMVar15 + 0x48) = pMVar15 + 0x50; + *(undefined8 *)(pMVar15 + 0x58) = 0; + *(undefined8 *)(pMVar15 + 0x50) = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (local_60._4_4_ < 3) { + puVar7 = *(undefined8 **)(pMVar15 + 0x48); + *puVar7 = *local_18; + puVar7[1] = local_18[1]; + } + else { + *(undefined4 *)(pMVar15 + 4) = 0; + cv::Mat::copySize(pMVar15,(Mat *)&local_60); + } + } + lVar10 = lVar10 + -1; + pMVar15 = pMVar15 + 0x60; + } while (lVar10 != 0); + pMVar15 = *(Mat **)(this + 8); + } + pMVar15 = pMVar15 + lVar5 * 0x60; + *(Mat **)(this + 8) = pMVar15; + pMVar14 = param_2; + if (param_2 == pMVar13) { + *(Mat **)(this + 8) = pMVar15 + lVar17; + lVar17 = local_28; + } + else { + do { + if (pMVar15 != (Mat *)0x0) { + *(undefined4 *)pMVar15 = *(undefined4 *)pMVar14; + uVar12 = *(undefined8 *)(pMVar14 + 0x10); + *(undefined4 *)(pMVar15 + 4) = *(undefined4 *)(pMVar14 + 4); + *(undefined4 *)(pMVar15 + 8) = *(undefined4 *)(pMVar14 + 8); + uVar2 = *(undefined4 *)(pMVar14 + 0xc); + *(undefined8 *)(pMVar15 + 0x10) = uVar12; + *(undefined4 *)(pMVar15 + 0xc) = uVar2; + *(undefined8 *)(pMVar15 + 0x18) = *(undefined8 *)(pMVar14 + 0x18); + *(undefined8 *)(pMVar15 + 0x20) = *(undefined8 *)(pMVar14 + 0x20); + *(undefined8 *)(pMVar15 + 0x28) = *(undefined8 *)(pMVar14 + 0x28); + *(undefined8 *)(pMVar15 + 0x30) = *(undefined8 *)(pMVar14 + 0x30); + lVar10 = *(long *)(pMVar14 + 0x38); + *(long *)(pMVar15 + 0x38) = lVar10; + *(Mat **)(pMVar15 + 0x40) = pMVar15 + 8; + *(Mat **)(pMVar15 + 0x48) = pMVar15 + 0x50; + *(undefined8 *)(pMVar15 + 0x58) = 0; + *(undefined8 *)(pMVar15 + 0x50) = 0; + if (lVar10 != 0) { + piVar1 = (int *)(lVar10 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + puVar9 = *(undefined8 **)(pMVar14 + 0x48); + puVar7 = *(undefined8 **)(pMVar15 + 0x48); + *puVar7 = *puVar9; + puVar7[1] = puVar9[1]; + } + else { + *(undefined4 *)(pMVar15 + 4) = 0; + cv::Mat::copySize(pMVar15,pMVar14); + } + } + pMVar14 = pMVar14 + 0x60; + pMVar15 = pMVar15 + 0x60; + } while (pMVar13 != pMVar14); + *(long *)(this + 8) = *(long *)(this + 8) + lVar17; + lVar17 = local_28; + do { + if (param_2 != (Mat *)&local_60) { + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(param_2 + 0x38) == 0) { +LAB_0033456c: + *(undefined8 *)(param_2 + 0x38) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined8 *)(param_2 + 0x28) = 0; + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined8 *)(param_2 + 0x18) = 0; + if (0 < *(int *)(param_2 + 4)) goto LAB_0033458c; +LAB_0033472c: + *(undefined4 *)param_2 = (undefined4)local_60; +LAB_003345b8: + if (2 < local_60._4_4_) goto LAB_003346cc; + puVar7 = *(undefined8 **)(param_2 + 0x48); + *(int *)(param_2 + 4) = local_60._4_4_; + *(undefined4 *)(param_2 + 8) = (undefined4)uStack_58; + uVar12 = *local_18; + *(undefined4 *)(param_2 + 0xc) = uStack_58._4_4_; + *puVar7 = uVar12; + puVar7[1] = local_18[1]; + } + else { + piVar1 = (int *)(*(long *)(param_2 + 0x38) + 0x14); + do { + iVar6 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 != 1) goto LAB_0033456c; + cv::Mat::deallocate(param_2); + *(undefined8 *)(param_2 + 0x38) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined8 *)(param_2 + 0x28) = 0; + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined8 *)(param_2 + 0x18) = 0; + if (*(int *)(param_2 + 4) < 1) goto LAB_0033472c; +LAB_0033458c: + iVar6 = 0; + puVar11 = *(undefined4 **)(param_2 + 0x40); + do { + *puVar11 = 0; + iVar6 = iVar6 + 1; + puVar11 = puVar11 + 1; + } while (iVar6 < *(int *)(param_2 + 4)); + *(undefined4 *)param_2 = (undefined4)local_60; + if (*(int *)(param_2 + 4) < 3) goto LAB_003345b8; +LAB_003346cc: + cv::Mat::copySize(param_2,(Mat *)&local_60); + } + *(undefined8 *)(param_2 + 0x10) = local_50; + *(undefined8 *)(param_2 + 0x18) = local_48; + *(undefined8 *)(param_2 + 0x20) = local_40; + *(undefined8 *)(param_2 + 0x28) = local_38; + *(undefined8 *)(param_2 + 0x30) = local_30; + *(long *)(param_2 + 0x38) = local_28; + lVar17 = local_28; + } + param_2 = param_2 + 0x60; + } while (pMVar13 != param_2); + } + } + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + iVar6 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar6 = 0; + puVar7 = local_20; + do { + *(undefined4 *)puVar7 = 0; + iVar6 = iVar6 + 1; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } while (iVar6 < local_60._4_4_); + } + if (local_18 != &local_10) { + cv::fastFree(local_18); + } + return; + } + lVar10 = *(long *)this; + lVar17 = *(long *)(this + 8) - lVar10 >> 5; + uVar8 = lVar17 * -0x5555555555555555; + if (lVar17 * 0x5555555555555555 + 0x2aaaaaaaaaaaaaaU < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar16 = uVar8; + if (uVar8 < param_3) { + uVar16 = param_3; + } + uVar16 = uVar16 + uVar8; + if ((uVar8 < uVar16 || uVar8 - uVar16 == 0) && (uVar16 < 0x2aaaaaaaaaaaaab)) { + lVar10 = (long)param_2 - lVar10; + if (uVar16 == 0) { + pMVar13 = (Mat *)0x0; + goto LAB_00333fe0; + } + uVar8 = uVar16 * 0x60; + } + else { + lVar10 = (long)param_2 - lVar10; + uVar8 = 0xffffffffffffffc0; + uVar16 = 0x2aaaaaaaaaaaaaa; + } + pMVar13 = operator_new(uVar8); +LAB_00333fe0: + pMVar15 = pMVar13 + lVar10; + uVar8 = param_3; + do { + if (pMVar15 != (Mat *)0x0) { + *(undefined4 *)pMVar15 = *(undefined4 *)param_4; + uVar12 = *(undefined8 *)(param_4 + 0x10); + *(undefined4 *)(pMVar15 + 4) = *(undefined4 *)(param_4 + 4); + *(undefined4 *)(pMVar15 + 8) = *(undefined4 *)(param_4 + 8); + uVar2 = *(undefined4 *)(param_4 + 0xc); + *(undefined8 *)(pMVar15 + 0x10) = uVar12; + *(undefined4 *)(pMVar15 + 0xc) = uVar2; + *(undefined8 *)(pMVar15 + 0x18) = *(undefined8 *)(param_4 + 0x18); + *(undefined8 *)(pMVar15 + 0x20) = *(undefined8 *)(param_4 + 0x20); + *(undefined8 *)(pMVar15 + 0x28) = *(undefined8 *)(param_4 + 0x28); + *(undefined8 *)(pMVar15 + 0x30) = *(undefined8 *)(param_4 + 0x30); + lVar17 = *(long *)(param_4 + 0x38); + *(long *)(pMVar15 + 0x38) = lVar17; + *(Mat **)(pMVar15 + 0x40) = pMVar15 + 8; + *(Mat **)(pMVar15 + 0x48) = pMVar15 + 0x50; + *(undefined8 *)(pMVar15 + 0x58) = 0; + *(undefined8 *)(pMVar15 + 0x50) = 0; + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(param_4 + 4) < 3) { + puVar9 = *(undefined8 **)(param_4 + 0x48); + puVar7 = *(undefined8 **)(pMVar15 + 0x48); + *puVar7 = *puVar9; + puVar7[1] = puVar9[1]; + } + else { + *(undefined4 *)(pMVar15 + 4) = 0; + cv::Mat::copySize(pMVar15,param_4); + } + } + uVar8 = uVar8 - 1; + pMVar15 = pMVar15 + 0x60; + } while (uVar8 != 0); + pMVar14 = pMVar13; + for (pMVar15 = *(Mat **)this; param_2 != pMVar15; pMVar15 = pMVar15 + 0x60) { + if (pMVar14 != (Mat *)0x0) { + *(undefined4 *)pMVar14 = *(undefined4 *)pMVar15; + uVar12 = *(undefined8 *)(pMVar15 + 0x10); + *(undefined4 *)(pMVar14 + 4) = *(undefined4 *)(pMVar15 + 4); + *(undefined4 *)(pMVar14 + 8) = *(undefined4 *)(pMVar15 + 8); + uVar2 = *(undefined4 *)(pMVar15 + 0xc); + *(undefined8 *)(pMVar14 + 0x10) = uVar12; + *(undefined4 *)(pMVar14 + 0xc) = uVar2; + *(undefined8 *)(pMVar14 + 0x18) = *(undefined8 *)(pMVar15 + 0x18); + *(undefined8 *)(pMVar14 + 0x20) = *(undefined8 *)(pMVar15 + 0x20); + *(undefined8 *)(pMVar14 + 0x28) = *(undefined8 *)(pMVar15 + 0x28); + *(undefined8 *)(pMVar14 + 0x30) = *(undefined8 *)(pMVar15 + 0x30); + lVar17 = *(long *)(pMVar15 + 0x38); + *(long *)(pMVar14 + 0x38) = lVar17; + *(Mat **)(pMVar14 + 0x40) = pMVar14 + 8; + *(Mat **)(pMVar14 + 0x48) = pMVar14 + 0x50; + *(undefined8 *)(pMVar14 + 0x58) = 0; + *(undefined8 *)(pMVar14 + 0x50) = 0; + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + puVar9 = *(undefined8 **)(pMVar15 + 0x48); + puVar7 = *(undefined8 **)(pMVar14 + 0x48); + *puVar7 = *puVar9; + puVar7[1] = puVar9[1]; + } + else { + *(undefined4 *)(pMVar14 + 4) = 0; + cv::Mat::copySize(pMVar14,pMVar15); + } + } + pMVar14 = pMVar14 + 0x60; + } + pMVar15 = *(Mat **)(this + 8); + pMVar14 = pMVar14 + param_3 * 0x60; + if (param_2 != pMVar15) { + do { + if (pMVar14 != (Mat *)0x0) { + *(undefined4 *)pMVar14 = *(undefined4 *)param_2; + uVar12 = *(undefined8 *)(param_2 + 0x10); + *(undefined4 *)(pMVar14 + 4) = *(undefined4 *)(param_2 + 4); + *(undefined4 *)(pMVar14 + 8) = *(undefined4 *)(param_2 + 8); + uVar2 = *(undefined4 *)(param_2 + 0xc); + *(undefined8 *)(pMVar14 + 0x10) = uVar12; + *(undefined4 *)(pMVar14 + 0xc) = uVar2; + *(undefined8 *)(pMVar14 + 0x18) = *(undefined8 *)(param_2 + 0x18); + *(undefined8 *)(pMVar14 + 0x20) = *(undefined8 *)(param_2 + 0x20); + *(undefined8 *)(pMVar14 + 0x28) = *(undefined8 *)(param_2 + 0x28); + *(undefined8 *)(pMVar14 + 0x30) = *(undefined8 *)(param_2 + 0x30); + lVar17 = *(long *)(param_2 + 0x38); + *(long *)(pMVar14 + 0x38) = lVar17; + *(Mat **)(pMVar14 + 0x40) = pMVar14 + 8; + *(Mat **)(pMVar14 + 0x48) = pMVar14 + 0x50; + *(undefined8 *)(pMVar14 + 0x58) = 0; + *(undefined8 *)(pMVar14 + 0x50) = 0; + if (lVar17 != 0) { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(param_2 + 4) < 3) { + puVar9 = *(undefined8 **)(param_2 + 0x48); + puVar7 = *(undefined8 **)(pMVar14 + 0x48); + *puVar7 = *puVar9; + puVar7[1] = puVar9[1]; + } + else { + *(undefined4 *)(pMVar14 + 4) = 0; + cv::Mat::copySize(pMVar14,param_2); + } + } + param_2 = param_2 + 0x60; + pMVar14 = pMVar14 + 0x60; + } while (pMVar15 != param_2); + pMVar15 = *(Mat **)(this + 8); + } + pMVar18 = *(Mat **)this; + if (pMVar18 != pMVar15) { + do { + if (*(long *)(pMVar18 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar18 + 0x38) + 0x14); + do { + iVar6 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate(pMVar18); + } + } + *(undefined8 *)(pMVar18 + 0x38) = 0; + *(undefined8 *)(pMVar18 + 0x10) = 0; + *(undefined8 *)(pMVar18 + 0x28) = 0; + *(undefined8 *)(pMVar18 + 0x20) = 0; + *(undefined8 *)(pMVar18 + 0x18) = 0; + if (0 < *(int *)(pMVar18 + 4)) { + iVar6 = 0; + puVar11 = *(undefined4 **)(pMVar18 + 0x40); + do { + *puVar11 = 0; + iVar6 = iVar6 + 1; + puVar11 = puVar11 + 1; + } while (iVar6 < *(int *)(pMVar18 + 4)); + } + if (*(Mat **)(pMVar18 + 0x48) != pMVar18 + 0x50) { + cv::fastFree(*(Mat **)(pMVar18 + 0x48)); + } + pMVar18 = pMVar18 + 0x60; + } while (pMVar18 != pMVar15); + pMVar15 = *(Mat **)this; + } + if (pMVar15 != (Mat *)0x0) { + operator_delete(pMVar15); + } + *(Mat **)this = pMVar13; + *(Mat **)(this + 8) = pMVar14; + *(Mat **)(this + 0x10) = pMVar13 + uVar16 * 0x60; + return; +} + + +================================================================== + +### FUNC 003349c0 (7972 bytes) name=getMatVector + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::_InputArray::getMatVector(std::vector >&) const */ + +void __thiscall cv::_InputArray::getMatVector(_InputArray *this,vector *param_1) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + char cVar5; + undefined2 uVar6; + bool bVar7; + int iVar8; + int iVar9; + char *pcVar10; + long *plVar11; + undefined4 *puVar12; + uint uVar13; + int *piVar14; + undefined8 *puVar15; + long lVar16; + undefined8 *puVar17; + int iVar18; + Mat *pMVar19; + long lVar20; + Mat *pMVar21; + uint *puVar22; + Mat *pMVar23; + ulong uVar24; + long lVar25; + ulong uVar26; + long lVar27; + long *plVar28; + long lVar29; + undefined8 uVar30; + undefined8 uVar31; + undefined8 uVar32; + undefined8 uVar33; + undefined8 uVar34; + undefined4 local_130; + undefined4 local_12c; + int local_128; + int local_124; + undefined4 local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + int local_c0; + int local_bc; + int local_b8 [12]; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 uStack_58; + long local_50; + long lStack_48; + long local_40; + long lStack_38; + undefined8 local_30; + long lStack_28; + undefined8 *local_20; + long *local_18; + long local_10; + long lStack_8; + + iVar8 = kind(this); + uVar13 = *(uint *)this; + if (iVar8 != 0x10000) { + if (iVar8 != 0x60000) { + if (iVar8 != 0x20000) { + if (iVar8 != 0x30000) { + if (iVar8 == 0) { + pMVar19 = *(Mat **)(param_1 + 8); + pMVar21 = *(Mat **)param_1; + for (pMVar23 = pMVar21; pMVar23 != pMVar19; pMVar23 = pMVar23 + 0x60) { + if (*(long *)(pMVar23 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar23); + } + } + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) { + iVar8 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar8 < *(int *)(pMVar23 + 4)); + } + if (*(Mat **)(pMVar23 + 0x48) != pMVar23 + 0x50) { + fastFree(*(Mat **)(pMVar23 + 0x48)); + } + } + *(Mat **)(param_1 + 8) = pMVar21; + return; + } + if (iVar8 != 0x40000) { + if (iVar8 != 0x50000) { + if (iVar8 != 0xb0000) { + local_60 = 0; + uStack_58 = 0; + pcVar10 = (char *)String::allocate((String *)&local_60,0x1e); + uVar6 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar2 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar31 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar30 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar2; + *(undefined2 *)(pcVar10 + 0x1c) = uVar6; + *(undefined8 *)pcVar10 = uVar30; + *(undefined8 *)(pcVar10 + 8) = uVar31; + error(-0xd5,(String *)&local_60, + "void cv::_InputArray::getMatVector(std::vector&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x54a); + String::deallocate((String *)&local_60); + return; + } + plVar28 = *(long **)(this + 8); + local_20 = &uStack_58; + pMVar23 = *(Mat **)(param_1 + 8); + local_18 = &local_10; + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + lVar27 = plVar28[1] - *plVar28 >> 4; + uVar24 = lVar16 * -0x5555555555555555; + local_60._4_4_ = 0; + local_60._0_4_ = 0x42ff0000; + uStack_58 = 0; + uVar26 = lVar27 * -0x3333333333333333; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + lStack_8 = 0; + local_10 = 0; + if (uVar24 < uVar26) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar26 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (uVar24 <= uVar26) goto LAB_00335a10; + pMVar21 = (Mat *)(*(long *)param_1 + lVar27 * -0x3333333333333320); + pMVar19 = pMVar21; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar8 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar8 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_00335a10: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar8 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (uVar26 == 0) { + return; + } + iVar8 = 0; + lVar16 = 0; + uVar24 = 0; + do { + pMVar23 = (Mat *)(*(long *)param_1 + lVar16); + UMat::getMat((int)*plVar28 + iVar8); + if (pMVar23 != (Mat *)&local_60) { + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = *piVar14 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_00335adc: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_00335afc; +LAB_00335c58: + *(uint *)pMVar23 = (uint)local_60; +LAB_00335b28: + if (2 < (int)local_60._4_4_) goto LAB_00335c20; + *(uint *)(pMVar23 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar23 + 8) = (undefined4)uStack_58; + plVar11 = *(long **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 0xc) = uStack_58._4_4_; + *plVar11 = *local_18; + plVar11[1] = local_18[1]; + } + else { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 != 1) goto LAB_00335adc; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_00335c58; +LAB_00335afc: + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar23 + 4)); + *(uint *)pMVar23 = (uint)local_60; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_00335b28; +LAB_00335c20: + Mat::copySize(pMVar23,(Mat *)&local_60); + } + *(long *)(pMVar23 + 0x18) = lStack_48; + *(long *)(pMVar23 + 0x10) = local_50; + *(long *)(pMVar23 + 0x28) = lStack_38; + *(long *)(pMVar23 + 0x20) = local_40; + *(long *)(pMVar23 + 0x38) = lStack_28; + *(undefined8 *)(pMVar23 + 0x30) = local_30; + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + uVar24 = uVar24 + 1; + lVar16 = lVar16 + 0x60; + iVar8 = iVar8 + 0x50; + if (uVar24 == uVar26) { + return; + } + } while( true ); + } + plVar28 = *(long **)(this + 8); + pMVar23 = *(Mat **)(param_1 + 8); + local_20 = &uStack_58; + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + local_18 = &local_10; + uVar24 = (plVar28[1] - *plVar28 >> 5) * -0x5555555555555555; + local_60 = 0x42ff0000; + bVar7 = (ulong)(lVar16 * -0x5555555555555555) <= uVar24; + uStack_58 = 0; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + lStack_8 = 0; + local_10 = 0; + if (bVar7 && uVar24 + lVar16 * 0x5555555555555555 != 0) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar24 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (bVar7) goto LAB_00336064; + pMVar21 = (Mat *)(*(long *)param_1 + (plVar28[1] - *plVar28)); + pMVar19 = pMVar21; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar8 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar8 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_00336064: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar8 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (uVar24 == 0) { + return; + } + lVar16 = 0; + uVar26 = 0; + do { + pMVar23 = (Mat *)(*(long *)param_1 + lVar16); + pMVar19 = (Mat *)(*plVar28 + lVar16); + if (pMVar23 != pMVar19) { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = *piVar14 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(pMVar23 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar23); + } + } + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) { + *(undefined4 *)pMVar23 = *(undefined4 *)pMVar19; +LAB_0033616c: + iVar8 = *(int *)(pMVar19 + 4); + if (2 < iVar8) goto LAB_003363c8; + puVar17 = *(undefined8 **)(pMVar19 + 0x48); + puVar15 = *(undefined8 **)(pMVar23 + 0x48); + uVar2 = *(undefined4 *)(pMVar19 + 8); + *(undefined4 *)(pMVar23 + 0xc) = *(undefined4 *)(pMVar19 + 0xc); + *(int *)(pMVar23 + 4) = iVar8; + *(undefined4 *)(pMVar23 + 8) = uVar2; + *puVar15 = *puVar17; + puVar15[1] = puVar17[1]; + } + else { + iVar8 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar8 < *(int *)(pMVar23 + 4)); + *(undefined4 *)pMVar23 = *(undefined4 *)pMVar19; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_0033616c; +LAB_003363c8: + Mat::copySize(pMVar23,pMVar19); + } + uVar34 = *(undefined8 *)(pMVar19 + 0x10); + uVar33 = *(undefined8 *)(pMVar19 + 0x28); + uVar32 = *(undefined8 *)(pMVar19 + 0x20); + uVar31 = *(undefined8 *)(pMVar19 + 0x38); + uVar30 = *(undefined8 *)(pMVar19 + 0x30); + *(undefined8 *)(pMVar23 + 0x18) = *(undefined8 *)(pMVar19 + 0x18); + *(undefined8 *)(pMVar23 + 0x10) = uVar34; + *(undefined8 *)(pMVar23 + 0x28) = uVar33; + *(undefined8 *)(pMVar23 + 0x20) = uVar32; + *(undefined8 *)(pMVar23 + 0x38) = uVar31; + *(undefined8 *)(pMVar23 + 0x30) = uVar30; + } + uVar26 = uVar26 + 1; + lVar16 = lVar16 + 0x60; + if (uVar26 == uVar24) { + return; + } + } while( true ); + } + plVar28 = *(long **)(this + 8); + pMVar23 = *(Mat **)(param_1 + 8); + local_20 = &uStack_58; + local_18 = &local_10; + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + uVar26 = lVar16 * -0x5555555555555555; + iVar8 = (int)(plVar28[1] - *plVar28 >> 3) * -0x55555555; + local_60._4_4_ = 0; + local_60._0_4_ = 0x42ff0000; + uVar24 = (ulong)iVar8; + uStack_58 = 0; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + lStack_8 = 0; + local_10 = 0; + if (uVar26 < uVar24) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar24 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (uVar26 <= uVar24) goto LAB_00335cfc; + pMVar21 = (Mat *)(*(long *)param_1 + uVar24 * 0x60); + pMVar19 = pMVar21; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_00335cfc: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (iVar8 < 1) { + return; + } + uVar4 = (uVar13 & 0xfff) + 0x42ff0000 | 0x4000; + iVar3 = (uVar13 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3); + lVar16 = 0; + lVar27 = (long)iVar3; + iVar9 = 0; + do { + lVar25 = *(long *)param_1; + lVar29 = lVar16 * 4; + lVar20 = *plVar28; + size((int)this); + local_50 = *(long *)(lVar20 + lVar16); + pMVar23 = (Mat *)(lVar25 + lVar29); + local_10 = (long)iVar3 * (long)local_c0; + uStack_58 = CONCAT44(local_c0,local_bc); + local_30 = 0; + lStack_28 = 0; + local_60._4_4_ = 2; + local_40 = local_50 + local_10 * local_bc; + local_20 = &uStack_58; + local_18 = &local_10; + lStack_8 = lVar27; + local_60._0_4_ = uVar4; + if (pMVar23 != (Mat *)&local_60) { + lStack_48 = local_50; + lStack_38 = local_40; + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_00335e54: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_00335e74; +LAB_00335fd0: + *(uint *)(lVar25 + lVar29) = (uint)local_60; +LAB_00335ea0: + if (2 < (int)local_60._4_4_) goto LAB_00335f98; + *(uint *)(pMVar23 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar23 + 8) = (undefined4)uStack_58; + plVar11 = *(long **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 0xc) = uStack_58._4_4_; + *plVar11 = *local_18; + plVar11[1] = local_18[1]; + } + else { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar18 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar18 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar18 != 1) goto LAB_00335e54; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_00335fd0; +LAB_00335e74: + iVar18 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar18 = iVar18 + 1; + iVar1 = *(int *)(pMVar23 + 4); + puVar12 = puVar12 + 1; + } while (iVar18 < iVar1); + *(uint *)(lVar25 + lVar29) = (uint)local_60; + if (iVar1 < 3) goto LAB_00335ea0; +LAB_00335f98: + Mat::copySize(pMVar23,(Mat *)&local_60); + } + *(long *)(pMVar23 + 0x10) = local_50; + *(long *)(pMVar23 + 0x18) = lStack_48; + *(long *)(pMVar23 + 0x20) = local_40; + *(long *)(pMVar23 + 0x28) = lStack_38; + *(undefined8 *)(pMVar23 + 0x30) = local_30; + *(long *)(pMVar23 + 0x38) = lStack_28; + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar18 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar18 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + } + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar18 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar18 = iVar18 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar18 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + iVar9 = iVar9 + 1; + lVar16 = lVar16 + 0x18; + if (iVar9 == iVar8) { + return; + } + } while( true ); + } + plVar28 = *(long **)(this + 8); + iVar8 = (uVar13 >> 3 & 0x1ff) + 1; + pMVar23 = *(Mat **)(param_1 + 8); + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + uVar26 = plVar28[1] - *plVar28; + local_20 = &uStack_58; + uVar4 = (uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3; + local_18 = &local_10; + local_60 = 0x42ff0000; + uVar24 = lVar16 * -0x5555555555555555; + uStack_58 = 0; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + lStack_8 = 0; + local_10 = 0; + if (uVar24 < uVar26) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar26 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (uVar24 <= uVar26) goto LAB_003356dc; + pMVar21 = (Mat *)(*(long *)param_1 + uVar26 * 0x60); + pMVar19 = pMVar21; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_003356dc: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (uVar26 == 0) { + return; + } + iVar9 = 1 << (ulong)uVar4; + lVar27 = 0; + lVar16 = 0; + uVar24 = 0; + lVar20 = (long)iVar9 * (long)iVar8; + lVar25 = (long)iVar9; + do { + local_50 = *plVar28 + lVar27; + pMVar23 = (Mat *)(*(long *)param_1 + lVar16); + uStack_58 = CONCAT44(iVar8,1); + local_40 = local_50 + lVar20; + local_30 = 0; + lStack_28 = 0; + local_60 = CONCAT44(2,(uVar13 & 7) + 0x42ff0000) | 0x4000; + local_20 = &uStack_58; + local_18 = &local_10; + local_10 = lVar20; + lStack_8 = lVar25; + if (pMVar23 != (Mat *)&local_60) { + lStack_48 = local_50; + lStack_38 = local_40; + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_003357f0: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_00335810; +LAB_00335974: + *(uint *)pMVar23 = (uint)local_60; +LAB_0033583c: + if (2 < (int)local_60._4_4_) goto LAB_0033593c; + *(uint *)(pMVar23 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar23 + 8) = (undefined4)uStack_58; + plVar11 = *(long **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 0xc) = uStack_58._4_4_; + *plVar11 = *local_18; + plVar11[1] = local_18[1]; + } + else { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 != 1) goto LAB_003357f0; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_00335974; +LAB_00335810: + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar23 + 4)); + *(uint *)pMVar23 = (uint)local_60; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_0033583c; +LAB_0033593c: + Mat::copySize(pMVar23,(Mat *)&local_60); + } + *(long *)(pMVar23 + 0x10) = local_50; + *(long *)(pMVar23 + 0x18) = lStack_48; + *(long *)(pMVar23 + 0x20) = local_40; + *(long *)(pMVar23 + 0x28) = lStack_38; + *(undefined8 *)(pMVar23 + 0x30) = local_30; + *(long *)(pMVar23 + 0x38) = lStack_28; + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + } + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + uVar24 = uVar24 + 1; + lVar16 = lVar16 + 0x60; + lVar27 = lVar27 + (iVar8 << (ulong)uVar4); + if (uVar24 == uVar26) { + return; + } + } while( true ); + } + pMVar23 = *(Mat **)(param_1 + 8); + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + local_18 = &local_10; + uStack_58 = _UNK_00336b28; + local_60 = _DAT_00336b20; + local_20 = &uStack_58; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + uVar26 = (ulong)*(int *)(this + 0x14); + lStack_8 = 0; + local_10 = 0; + uVar24 = lVar16 * -0x5555555555555555; + if (uVar24 < uVar26) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar26 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (uVar24 <= uVar26) goto LAB_00335378; + pMVar21 = (Mat *)(*(long *)param_1 + uVar26 * 0x60); + pMVar19 = pMVar21; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar8 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar8 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_00335378: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar8 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (uVar26 == 0) { + return; + } + lVar16 = 0; + uVar24 = 0; + do { + uVar4 = *(uint *)this; + iVar8 = *(int *)(this + 0x10); + iVar9 = (uVar4 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar4 & 7) << 1)) & 3); + local_50 = *(long *)(this + 8) + + (long)(int)((uVar13 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar13 & 7) << 1)) & 3)) * (long)iVar8 * + uVar24; + uStack_58 = CONCAT44(iVar8,1); + pMVar23 = (Mat *)(*(long *)param_1 + lVar16); + lStack_8 = (long)iVar9; + local_30 = 0; + lStack_28 = 0; + local_10 = (long)iVar9 * (long)iVar8; + local_60 = CONCAT44(2,(uVar4 & 0xfff) + 0x42ff0000) | 0x4000; + local_40 = local_50 + local_10; + local_20 = &uStack_58; + local_18 = &local_10; + if (pMVar23 != (Mat *)&local_60) { + lStack_48 = local_50; + lStack_38 = local_40; + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_003354a0: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_003354c0; +LAB_00335618: + *(uint *)pMVar23 = (uint)local_60; +LAB_003354ec: + if (2 < (int)local_60._4_4_) goto LAB_003355e0; + *(uint *)(pMVar23 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar23 + 8) = (undefined4)uStack_58; + plVar28 = *(long **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 0xc) = uStack_58._4_4_; + *plVar28 = *local_18; + plVar28[1] = local_18[1]; + } + else { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 != 1) goto LAB_003354a0; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_00335618; +LAB_003354c0: + iVar8 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar8 = iVar8 + 1; + puVar12 = puVar12 + 1; + } while (iVar8 < *(int *)(pMVar23 + 4)); + *(uint *)pMVar23 = (uint)local_60; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_003354ec; +LAB_003355e0: + Mat::copySize(pMVar23,(Mat *)&local_60); + } + *(long *)(pMVar23 + 0x10) = local_50; + *(long *)(pMVar23 + 0x18) = lStack_48; + *(long *)(pMVar23 + 0x20) = local_40; + *(long *)(pMVar23 + 0x28) = lStack_38; + *(undefined8 *)(pMVar23 + 0x30) = local_30; + *(long *)(pMVar23 + 0x38) = lStack_28; + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + } + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar8 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar8 = iVar8 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar8 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + uVar24 = uVar24 + 1; + lVar16 = lVar16 + 0x60; + if (uVar26 == uVar24) { + return; + } + } while( true ); + } + local_b8[2] = 0; + local_b8[3] = 0; + local_78 = &local_70; + local_b8[4] = 0; + local_b8[5] = 0; + local_80 = local_b8; + local_b8[6] = 0; + local_b8[7] = 0; + local_b8[8] = 0; + local_b8[9] = 0; + local_b8[10] = 0; + local_b8[0xb] = 0; + local_88 = 0; + local_c0 = 0x42ff0000; + plVar28 = (long *)**(undefined8 **)(this + 8); + local_bc = 0; + local_b8[0] = 0; + local_b8[1] = 0; + local_68 = 0; + local_70 = 0; + (**(code **)(*plVar28 + 0x18))(plVar28,*(undefined8 **)(this + 8),(Mat *)&local_c0,0xffffffff); + pMVar23 = *(Mat **)(param_1 + 8); + local_20 = &uStack_58; + local_18 = &local_10; + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + uVar24 = lVar16 * -0x5555555555555555; + iVar8 = *local_80; + local_60 = 0x42ff0000; + uVar26 = (ulong)iVar8; + uStack_58 = 0; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + lStack_8 = 0; + local_10 = 0; + if (uVar24 < uVar26) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar26 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (uVar24 <= uVar26) goto LAB_00334ff4; + pMVar21 = (Mat *)(*(long *)param_1 + uVar26 * 0x60); + pMVar19 = pMVar21; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_00334ff4: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (0 < iVar8) { + lVar16 = 0; + iVar9 = 0; + do { + iVar3 = iVar9 + 1; + local_130 = 0x80000000; + pMVar23 = (Mat *)(*(long *)param_1 + lVar16); + local_12c = 0x7fffffff; + local_128 = iVar9; + local_124 = iVar3; + Mat::Mat((Mat *)&local_120,(Mat *)&local_c0,(Range *)&local_128,(Range *)&local_130); + if (pMVar23 != (Mat *)&local_120) { + if (lStack_e8 != 0) { + piVar14 = (int *)(lStack_e8 + 0x14); + do { + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = *piVar14 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_003350e8: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_00335108; +LAB_003352e4: + *(undefined4 *)pMVar23 = local_120; +LAB_00335134: + if (2 < local_11c) goto LAB_003352a0; + puVar15 = *(undefined8 **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 8) = local_118; + *(int *)(pMVar23 + 4) = local_11c; + *(undefined4 *)(pMVar23 + 0xc) = local_114; + *puVar15 = *local_d8; + puVar15[1] = local_d8[1]; + } + else { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 != 1) goto LAB_003350e8; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_003352e4; +LAB_00335108: + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar23 + 4)); + *(undefined4 *)pMVar23 = local_120; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_00335134; +LAB_003352a0: + Mat::copySize(pMVar23,(Mat *)&local_120); + } + *(undefined8 *)(pMVar23 + 0x18) = uStack_108; + *(undefined8 *)(pMVar23 + 0x10) = local_110; + *(undefined8 *)(pMVar23 + 0x28) = uStack_f8; + *(undefined8 *)(pMVar23 + 0x20) = local_100; + *(long *)(pMVar23 + 0x38) = lStack_e8; + *(undefined8 *)(pMVar23 + 0x30) = local_f0; + } + if (lStack_e8 != 0) { + piVar14 = (int *)(lStack_e8 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar9 = 0; + puVar12 = local_e0; + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + lVar16 = lVar16 + 0x60; + iVar9 = iVar3; + } while (iVar3 != iVar8); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar8 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar8 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b8[2] = 0; + local_b8[3] = 0; + local_b8[8] = 0; + local_b8[9] = 0; + local_b8[6] = 0; + local_b8[7] = 0; + local_b8[4] = 0; + local_b8[5] = 0; + if (0 < local_bc) { + iVar8 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar8 = iVar8 + 1; + piVar14 = piVar14 + 1; + } while (iVar8 < local_bc); + } + if (local_78 == &local_70) { + return; + } + fastFree(local_78); + return; + } + puVar22 = *(uint **)(this + 8); + local_20 = &uStack_58; + pMVar23 = *(Mat **)(param_1 + 8); + local_18 = &local_10; + lVar16 = (long)pMVar23 - *(long *)param_1 >> 5; + iVar8 = **(int **)(puVar22 + 0x10); + uVar24 = lVar16 * -0x5555555555555555; + uVar26 = (ulong)iVar8; + local_60._0_4_ = 0x42ff0000; + uVar13 = (uint)local_60; + local_60._0_4_ = 0x42ff0000; + local_60._4_4_ = 0; + uStack_58 = 0; + local_50 = 0; + lStack_48 = 0; + local_40 = 0; + lStack_38 = 0; + local_30 = 0; + lStack_28 = 0; + lStack_8 = 0; + local_10 = 0; + if (uVar24 < uVar26) { + local_60._0_4_ = uVar13; + std::vector>::_M_fill_insert + ((vector> *)param_1,pMVar23, + uVar26 + lVar16 * 0x5555555555555555,(Mat *)&local_60); + } + else { + if (uVar24 <= uVar26) goto LAB_00334bec; + pMVar21 = (Mat *)(*(long *)param_1 + uVar26 * 0x60); + pMVar19 = pMVar21; + local_60._0_4_ = uVar13; + if (pMVar23 == pMVar21) { + *(Mat **)(param_1 + 8) = pMVar21; + } + else { + do { + if (*(long *)(pMVar19 + 0x38) != 0) { + piVar14 = (int *)(*(long *)(pMVar19 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate(pMVar19); + } + } + *(undefined8 *)(pMVar19 + 0x38) = 0; + *(undefined8 *)(pMVar19 + 0x10) = 0; + *(undefined8 *)(pMVar19 + 0x28) = 0; + *(undefined8 *)(pMVar19 + 0x20) = 0; + *(undefined8 *)(pMVar19 + 0x18) = 0; + if (0 < *(int *)(pMVar19 + 4)) { + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar19 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar19 + 4)); + } + if (*(Mat **)(pMVar19 + 0x48) != pMVar19 + 0x50) { + fastFree(*(Mat **)(pMVar19 + 0x48)); + } + pMVar19 = pMVar19 + 0x60; + } while (pMVar23 != pMVar19); + *(Mat **)(param_1 + 8) = pMVar21; + } + } + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } +LAB_00334bec: + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + lVar27 = 0; + lVar16 = 0; + if (iVar8 < 1) { + return; + } + uVar13 = puVar22[1]; + pMVar23 = *(Mat **)param_1; + if (uVar13 == 2) goto LAB_00334e30; +LAB_00334c6c: + Mat::Mat((Mat *)&local_60,uVar13 - 1,(int *)(*(long *)(puVar22 + 0x10) + 4),*puVar22 & 0xfff, + (void *)(*(long *)(puVar22 + 4) + lVar16 * **(long **)(puVar22 + 0x12)), + (ulong *)(*(long **)(puVar22 + 0x12) + 1)); + if (pMVar23 == (Mat *)&local_60) goto LAB_00334d98; + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = *piVar14 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + do { + if (*(long *)(pMVar23 + 0x38) == 0) { +LAB_00334ce0: + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (0 < *(int *)(pMVar23 + 4)) goto LAB_00334d00; +LAB_00334f00: + *(uint *)pMVar23 = (uint)local_60; +LAB_00334d2c: + if (2 < (int)local_60._4_4_) goto LAB_00334ec8; + *(uint *)(pMVar23 + 4) = local_60._4_4_; + *(undefined4 *)(pMVar23 + 8) = (undefined4)uStack_58; + plVar28 = *(long **)(pMVar23 + 0x48); + *(undefined4 *)(pMVar23 + 0xc) = uStack_58._4_4_; + *plVar28 = *local_18; + plVar28[1] = local_18[1]; + } + else { + piVar14 = (int *)(*(long *)(pMVar23 + 0x38) + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 != 1) goto LAB_00334ce0; + Mat::deallocate(pMVar23); + *(undefined8 *)(pMVar23 + 0x38) = 0; + *(undefined8 *)(pMVar23 + 0x10) = 0; + *(undefined8 *)(pMVar23 + 0x28) = 0; + *(undefined8 *)(pMVar23 + 0x20) = 0; + *(undefined8 *)(pMVar23 + 0x18) = 0; + if (*(int *)(pMVar23 + 4) < 1) goto LAB_00334f00; +LAB_00334d00: + iVar9 = 0; + puVar12 = *(undefined4 **)(pMVar23 + 0x40); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + puVar12 = puVar12 + 1; + } while (iVar9 < *(int *)(pMVar23 + 4)); + *(uint *)pMVar23 = (uint)local_60; + if (*(int *)(pMVar23 + 4) < 3) goto LAB_00334d2c; +LAB_00334ec8: + Mat::copySize(pMVar23,(Mat *)&local_60); + } + *(long *)(pMVar23 + 0x10) = local_50; + *(long *)(pMVar23 + 0x18) = lStack_48; + *(long *)(pMVar23 + 0x20) = local_40; + *(long *)(pMVar23 + 0x28) = lStack_38; + *(undefined8 *)(pMVar23 + 0x30) = local_30; + *(long *)(pMVar23 + 0x38) = lStack_28; +LAB_00334d98: + if (lStack_28 != 0) { + piVar14 = (int *)(lStack_28 + 0x14); + do { + iVar9 = *piVar14; + cVar5 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar7) { + *piVar14 = iVar9 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + do { + lStack_28 = 0; + local_50 = 0; + lStack_38 = 0; + local_40 = 0; + lStack_48 = 0; + if (0 < (int)local_60._4_4_) { + iVar9 = 0; + puVar15 = local_20; + do { + *(undefined4 *)puVar15 = 0; + iVar9 = iVar9 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar9 < (int)local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + lVar16 = lVar16 + 1; + lVar27 = lVar27 + 0x60; + if (iVar8 <= (int)lVar16) { + return; + } + uVar13 = puVar22[1]; + pMVar23 = (Mat *)(*(long *)param_1 + lVar27); + if (uVar13 != 2) goto LAB_00334c6c; +LAB_00334e30: + uVar4 = *puVar22; + iVar9 = (uVar4 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar4 & 7) << 1)) & 3); + local_50 = *(long *)(puVar22 + 4) + lVar16 * **(long **)(puVar22 + 0x12); + uStack_58 = CONCAT44(puVar22[3],1); + local_60._0_4_ = (uVar4 & 0xfff) + 0x42ff0000 | 0x4000; + lStack_8 = (long)iVar9; + local_30 = 0; + lStack_28 = 0; + local_10 = (long)iVar9 * (long)(int)puVar22[3]; + local_40 = local_50 + local_10; + lStack_48 = local_50; + lStack_38 = local_40; + local_20 = &uStack_58; + local_18 = &local_10; + local_60._4_4_ = uVar13; + } while (pMVar23 == (Mat *)&local_60); + } while( true ); +} + + +================================================================== + +### FUNC 00336b30 (2828 bytes) name=_M_fill_insert + +/* std::vector + >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, cv::UMat const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,UMat *param_2,ulong param_3,UMat *param_4 + ) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + long lVar6; + int iVar7; + undefined8 *puVar8; + undefined8 *puVar9; + ulong uVar10; + long lVar11; + undefined4 *puVar12; + undefined8 uVar13; + undefined8 uVar14; + UMat *pUVar15; + UMat *pUVar16; + UMat *pUVar17; + long lVar18; + UMat *pUVar19; + UMat *pUVar20; + ulong uVar21; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined4 local_38; + long local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + if (param_3 == 0) { + return; + } + if (param_3 <= (ulong)((*(long *)(this + 0x10) - *(long *)(this + 8) >> 4) * -0x3333333333333333)) + { + uStack_48 = *(undefined8 *)(param_4 + 8); + local_50 = *(ulong *)param_4; + local_40 = *(undefined8 *)(param_4 + 0x10); + local_18 = &local_10; + local_38 = *(undefined4 *)(param_4 + 0x18); + local_30 = *(long *)(param_4 + 0x20); + local_20 = &uStack_48; + uStack_8 = 0; + local_10 = 0; + local_28 = *(undefined8 *)(param_4 + 0x28); + iVar7 = *(int *)(param_4 + 4); + if (local_30 != 0) { + piVar1 = (int *)(local_30 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + iVar7 = *(int *)(param_4 + 4); + } + if (iVar7 < 3) { + pUVar15 = *(UMat **)(this + 8); + local_10 = **(undefined8 **)(param_4 + 0x38); + lVar18 = (long)pUVar15 - (long)param_2; + uStack_8 = (*(undefined8 **)(param_4 + 0x38))[1]; + } + else { + local_50 = local_50 & 0xffffffff; + cv::UMat::copySize((UMat *)&local_50,param_4); + pUVar15 = *(UMat **)(this + 8); + lVar18 = (long)pUVar15 - (long)param_2; + } + if (param_3 < (ulong)((lVar18 >> 4) * -0x3333333333333333)) { + pUVar19 = pUVar15 + param_3 * -0x50; + pUVar17 = pUVar19; + pUVar16 = pUVar15; + if (pUVar19 != pUVar15) { + do { + if (pUVar16 != (UMat *)0x0) { + *(undefined4 *)pUVar16 = *(undefined4 *)pUVar17; + uVar14 = *(undefined8 *)(pUVar17 + 0x10); + *(undefined4 *)(pUVar16 + 4) = *(undefined4 *)(pUVar17 + 4); + uVar2 = *(undefined4 *)(pUVar17 + 0x18); + *(undefined4 *)(pUVar16 + 8) = *(undefined4 *)(pUVar17 + 8); + uVar13 = *(undefined8 *)(pUVar17 + 0x28); + uVar3 = *(undefined4 *)(pUVar17 + 0xc); + *(undefined8 *)(pUVar16 + 0x10) = uVar14; + *(undefined4 *)(pUVar16 + 0xc) = uVar3; + lVar18 = *(long *)(pUVar17 + 0x20); + *(long *)(pUVar16 + 0x20) = lVar18; + *(undefined4 *)(pUVar16 + 0x18) = uVar2; + *(undefined8 *)(pUVar16 + 0x28) = uVar13; + *(UMat **)(pUVar16 + 0x30) = pUVar16 + 8; + *(UMat **)(pUVar16 + 0x38) = pUVar16 + 0x40; + *(undefined8 *)(pUVar16 + 0x48) = 0; + *(undefined8 *)(pUVar16 + 0x40) = 0; + if (lVar18 != 0) { + piVar1 = (int *)(lVar18 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pUVar17 + 4) < 3) { + puVar9 = *(undefined8 **)(pUVar17 + 0x38); + puVar8 = *(undefined8 **)(pUVar16 + 0x38); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + *(undefined4 *)(pUVar16 + 4) = 0; + cv::UMat::copySize(pUVar16,pUVar17); + } + } + pUVar17 = pUVar17 + 0x50; + pUVar16 = pUVar16 + 0x50; + } while (pUVar15 != pUVar17); + pUVar17 = *(UMat **)(this + 8); + } + *(UMat **)(this + 8) = pUVar17 + param_3 * 0x50; + pUVar17 = pUVar19; + if (0 < ((long)pUVar19 - (long)param_2 >> 4) * -0x3333333333333333) { + do { + pUVar16 = pUVar15 + -0x50; + pUVar20 = pUVar17 + -0x50; + if (pUVar16 != pUVar20) { + if (*(long *)(pUVar17 + -0x30) != 0) { + piVar1 = (int *)(*(long *)(pUVar17 + -0x30) + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(pUVar15 + -0x30) == 0) { +LAB_00336d60: + if (0 < *(int *)(pUVar15 + -0x4c)) goto LAB_00336d6c; +LAB_0033757c: + *(undefined4 *)pUVar16 = *(undefined4 *)pUVar20; + *(undefined8 *)(pUVar15 + -0x30) = 0; +LAB_00336d9c: + if (2 < *(int *)(pUVar17 + -0x4c)) goto LAB_00337520; + *(int *)(pUVar15 + -0x4c) = *(int *)(pUVar17 + -0x4c); + puVar9 = *(undefined8 **)(pUVar17 + -0x18); + *(undefined4 *)(pUVar15 + -0x48) = *(undefined4 *)(pUVar17 + -0x48); + puVar8 = *(undefined8 **)(pUVar15 + -0x18); + *(undefined4 *)(pUVar15 + -0x44) = *(undefined4 *)(pUVar17 + -0x44); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + piVar1 = (int *)(*(long *)(pUVar15 + -0x30) + 0x10); + do { + iVar7 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 != 1) goto LAB_00336d60; + cv::UMat::deallocate(pUVar16); + if (*(int *)(pUVar15 + -0x4c) < 1) goto LAB_0033757c; +LAB_00336d6c: + iVar7 = 0; + puVar12 = *(undefined4 **)(pUVar15 + -0x20); + do { + *puVar12 = 0; + iVar7 = iVar7 + 1; + puVar12 = puVar12 + 1; + } while (iVar7 < *(int *)(pUVar15 + -0x4c)); + uVar2 = *(undefined4 *)pUVar20; + *(undefined8 *)(pUVar15 + -0x30) = 0; + *(undefined4 *)pUVar16 = uVar2; + if (*(int *)(pUVar15 + -0x4c) < 3) goto LAB_00336d9c; +LAB_00337520: + cv::UMat::copySize(pUVar16,pUVar20); + } + *(undefined8 *)(pUVar15 + -0x40) = *(undefined8 *)(pUVar17 + -0x40); + if (*(int *)(pUVar15 + -0x38) == 0) { + *(undefined4 *)(pUVar15 + -0x38) = *(undefined4 *)(pUVar17 + -0x38); + } + uVar13 = *(undefined8 *)(pUVar17 + -0x30); + *(undefined8 *)(pUVar15 + -0x28) = *(undefined8 *)(pUVar17 + -0x28); + *(undefined8 *)(pUVar15 + -0x30) = uVar13; + } + pUVar15 = pUVar16; + pUVar17 = pUVar20; + } while (pUVar20 != pUVar19 + -((long)pUVar19 - (long)param_2)); + } + pUVar15 = param_2 + param_3 * 0x50; + for (; param_2 != pUVar15; param_2 = param_2 + 0x50) { + if (param_2 != (UMat *)&local_50) { + if (local_30 != 0) { + piVar1 = (int *)(local_30 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(param_2 + 0x20) == 0) { +LAB_00336e58: + if (0 < *(int *)(param_2 + 4)) goto LAB_00336e64; +LAB_00337558: + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined4 *)param_2 = (undefined4)local_50; +LAB_00336e94: + if (2 < local_50._4_4_) goto LAB_00337510; + puVar8 = *(undefined8 **)(param_2 + 0x38); + *(int *)(param_2 + 4) = local_50._4_4_; + *(undefined4 *)(param_2 + 8) = (undefined4)uStack_48; + uVar13 = *local_18; + *(undefined4 *)(param_2 + 0xc) = uStack_48._4_4_; + *puVar8 = uVar13; + puVar8[1] = local_18[1]; + } + else { + piVar1 = (int *)(*(long *)(param_2 + 0x20) + 0x10); + do { + iVar7 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 != 1) goto LAB_00336e58; + cv::UMat::deallocate(param_2); + if (*(int *)(param_2 + 4) < 1) goto LAB_00337558; +LAB_00336e64: + iVar7 = 0; + puVar12 = *(undefined4 **)(param_2 + 0x30); + do { + *puVar12 = 0; + iVar7 = iVar7 + 1; + puVar12 = puVar12 + 1; + } while (iVar7 < *(int *)(param_2 + 4)); + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined4 *)param_2 = (undefined4)local_50; + if (*(int *)(param_2 + 4) < 3) goto LAB_00336e94; +LAB_00337510: + cv::UMat::copySize(param_2,(UMat *)&local_50); + } + *(undefined8 *)(param_2 + 0x10) = local_40; + if (*(int *)(param_2 + 0x18) == 0) { + *(undefined4 *)(param_2 + 0x18) = local_38; + } + *(long *)(param_2 + 0x20) = local_30; + *(undefined8 *)(param_2 + 0x28) = local_28; + } + } + } + else { + lVar6 = param_3 + (lVar18 >> 4) * 0x3333333333333333; + pUVar17 = pUVar15; + lVar11 = lVar6; + if (lVar6 != 0) { + do { + if (pUVar17 != (UMat *)0x0) { + *(undefined4 *)pUVar17 = (undefined4)local_50; + *(int *)(pUVar17 + 4) = local_50._4_4_; + *(undefined4 *)(pUVar17 + 8) = (undefined4)uStack_48; + *(undefined8 *)(pUVar17 + 0x10) = local_40; + *(undefined4 *)(pUVar17 + 0xc) = uStack_48._4_4_; + *(long *)(pUVar17 + 0x20) = local_30; + *(undefined4 *)(pUVar17 + 0x18) = local_38; + *(undefined8 *)(pUVar17 + 0x28) = local_28; + *(UMat **)(pUVar17 + 0x30) = pUVar17 + 8; + *(UMat **)(pUVar17 + 0x38) = pUVar17 + 0x40; + *(undefined8 *)(pUVar17 + 0x48) = 0; + *(undefined8 *)(pUVar17 + 0x40) = 0; + if (local_30 != 0) { + piVar1 = (int *)(local_30 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (local_50._4_4_ < 3) { + puVar8 = *(undefined8 **)(pUVar17 + 0x38); + *puVar8 = *local_18; + puVar8[1] = local_18[1]; + } + else { + *(undefined4 *)(pUVar17 + 4) = 0; + cv::UMat::copySize(pUVar17,(UMat *)&local_50); + } + } + lVar11 = lVar11 + -1; + pUVar17 = pUVar17 + 0x50; + } while (lVar11 != 0); + pUVar17 = *(UMat **)(this + 8); + } + pUVar17 = pUVar17 + lVar6 * 0x50; + *(UMat **)(this + 8) = pUVar17; + pUVar16 = param_2; + if (param_2 != pUVar15) { + do { + if (pUVar17 != (UMat *)0x0) { + *(undefined4 *)pUVar17 = *(undefined4 *)pUVar16; + uVar13 = *(undefined8 *)(pUVar16 + 0x10); + *(undefined4 *)(pUVar17 + 4) = *(undefined4 *)(pUVar16 + 4); + uVar2 = *(undefined4 *)(pUVar16 + 0x18); + *(undefined4 *)(pUVar17 + 8) = *(undefined4 *)(pUVar16 + 8); + uVar14 = *(undefined8 *)(pUVar16 + 0x28); + uVar3 = *(undefined4 *)(pUVar16 + 0xc); + *(undefined8 *)(pUVar17 + 0x10) = uVar13; + *(undefined4 *)(pUVar17 + 0xc) = uVar3; + lVar11 = *(long *)(pUVar16 + 0x20); + *(long *)(pUVar17 + 0x20) = lVar11; + *(undefined4 *)(pUVar17 + 0x18) = uVar2; + *(undefined8 *)(pUVar17 + 0x28) = uVar14; + *(UMat **)(pUVar17 + 0x30) = pUVar17 + 8; + *(UMat **)(pUVar17 + 0x38) = pUVar17 + 0x40; + *(undefined8 *)(pUVar17 + 0x48) = 0; + *(undefined8 *)(pUVar17 + 0x40) = 0; + if (lVar11 != 0) { + piVar1 = (int *)(lVar11 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pUVar16 + 4) < 3) { + puVar9 = *(undefined8 **)(pUVar16 + 0x38); + puVar8 = *(undefined8 **)(pUVar17 + 0x38); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + *(undefined4 *)(pUVar17 + 4) = 0; + cv::UMat::copySize(pUVar17,pUVar16); + } + } + pUVar16 = pUVar16 + 0x50; + pUVar17 = pUVar17 + 0x50; + } while (pUVar15 != pUVar16); + *(long *)(this + 8) = *(long *)(this + 8) + lVar18; + do { + if (param_2 != (UMat *)&local_50) { + if (local_30 != 0) { + piVar1 = (int *)(local_30 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(param_2 + 0x20) == 0) { +LAB_0033745c: + if (0 < *(int *)(param_2 + 4)) goto LAB_00337468; +LAB_003375d8: + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined4 *)param_2 = (undefined4)local_50; +LAB_00337498: + if (2 < local_50._4_4_) goto LAB_0033758c; + puVar8 = *(undefined8 **)(param_2 + 0x38); + *(int *)(param_2 + 4) = local_50._4_4_; + *(undefined4 *)(param_2 + 8) = (undefined4)uStack_48; + uVar13 = *local_18; + *(undefined4 *)(param_2 + 0xc) = uStack_48._4_4_; + *puVar8 = uVar13; + puVar8[1] = local_18[1]; + } + else { + piVar1 = (int *)(*(long *)(param_2 + 0x20) + 0x10); + do { + iVar7 = *piVar1; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = iVar7 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar7 != 1) goto LAB_0033745c; + cv::UMat::deallocate(param_2); + if (*(int *)(param_2 + 4) < 1) goto LAB_003375d8; +LAB_00337468: + iVar7 = 0; + puVar12 = *(undefined4 **)(param_2 + 0x30); + do { + *puVar12 = 0; + iVar7 = iVar7 + 1; + puVar12 = puVar12 + 1; + } while (iVar7 < *(int *)(param_2 + 4)); + *(undefined8 *)(param_2 + 0x20) = 0; + *(undefined4 *)param_2 = (undefined4)local_50; + if (*(int *)(param_2 + 4) < 3) goto LAB_00337498; +LAB_0033758c: + cv::UMat::copySize(param_2,(UMat *)&local_50); + } + *(undefined8 *)(param_2 + 0x10) = local_40; + if (*(int *)(param_2 + 0x18) == 0) { + *(undefined4 *)(param_2 + 0x18) = local_38; + } + *(long *)(param_2 + 0x20) = local_30; + *(undefined8 *)(param_2 + 0x28) = local_28; + } + param_2 = param_2 + 0x50; + if (pUVar15 == param_2) { + cv::UMat::~UMat((UMat *)&local_50); + return; + } + } while( true ); + } + *(UMat **)(this + 8) = pUVar17 + lVar18; + } + cv::UMat::~UMat((UMat *)&local_50); + return; + } + lVar11 = *(long *)this; + lVar18 = *(long *)(this + 8) - lVar11 >> 4; + uVar10 = lVar18 * -0x3333333333333333; + if (lVar18 * 0x3333333333333333 + 0x333333333333333U < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar21 = uVar10; + if (uVar10 < param_3) { + uVar21 = param_3; + } + uVar21 = uVar21 + uVar10; + if ((uVar10 < uVar21 || uVar10 - uVar21 == 0) && (uVar21 < 0x333333333333334)) { + lVar11 = (long)param_2 - lVar11; + if (uVar21 == 0) { + pUVar15 = (UMat *)0x0; + goto LAB_00336f94; + } + uVar10 = uVar21 * 0x50; + } + else { + lVar11 = (long)param_2 - lVar11; + uVar10 = 0xfffffffffffffff0; + uVar21 = 0x333333333333333; + } + pUVar15 = operator_new(uVar10); +LAB_00336f94: + pUVar17 = pUVar15 + lVar11; + uVar10 = param_3; + do { + if (pUVar17 != (UMat *)0x0) { + *(undefined4 *)pUVar17 = *(undefined4 *)param_4; + uVar14 = *(undefined8 *)(param_4 + 0x10); + *(undefined4 *)(pUVar17 + 4) = *(undefined4 *)(param_4 + 4); + uVar2 = *(undefined4 *)(param_4 + 0x18); + *(undefined4 *)(pUVar17 + 8) = *(undefined4 *)(param_4 + 8); + uVar13 = *(undefined8 *)(param_4 + 0x28); + uVar3 = *(undefined4 *)(param_4 + 0xc); + *(undefined8 *)(pUVar17 + 0x10) = uVar14; + *(undefined4 *)(pUVar17 + 0xc) = uVar3; + lVar18 = *(long *)(param_4 + 0x20); + *(long *)(pUVar17 + 0x20) = lVar18; + *(undefined4 *)(pUVar17 + 0x18) = uVar2; + *(undefined8 *)(pUVar17 + 0x28) = uVar13; + *(UMat **)(pUVar17 + 0x30) = pUVar17 + 8; + *(UMat **)(pUVar17 + 0x38) = pUVar17 + 0x40; + *(undefined8 *)(pUVar17 + 0x48) = 0; + *(undefined8 *)(pUVar17 + 0x40) = 0; + if (lVar18 != 0) { + piVar1 = (int *)(lVar18 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(param_4 + 4) < 3) { + puVar9 = *(undefined8 **)(param_4 + 0x38); + puVar8 = *(undefined8 **)(pUVar17 + 0x38); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + *(undefined4 *)(pUVar17 + 4) = 0; + cv::UMat::copySize(pUVar17,param_4); + } + } + uVar10 = uVar10 - 1; + pUVar17 = pUVar17 + 0x50; + } while (uVar10 != 0); + pUVar16 = pUVar15; + for (pUVar17 = *(UMat **)this; param_2 != pUVar17; pUVar17 = pUVar17 + 0x50) { + if (pUVar16 != (UMat *)0x0) { + *(undefined4 *)pUVar16 = *(undefined4 *)pUVar17; + uVar14 = *(undefined8 *)(pUVar17 + 0x10); + *(undefined4 *)(pUVar16 + 4) = *(undefined4 *)(pUVar17 + 4); + uVar2 = *(undefined4 *)(pUVar17 + 0x18); + *(undefined4 *)(pUVar16 + 8) = *(undefined4 *)(pUVar17 + 8); + uVar13 = *(undefined8 *)(pUVar17 + 0x28); + uVar3 = *(undefined4 *)(pUVar17 + 0xc); + *(undefined8 *)(pUVar16 + 0x10) = uVar14; + *(undefined4 *)(pUVar16 + 0xc) = uVar3; + lVar18 = *(long *)(pUVar17 + 0x20); + *(long *)(pUVar16 + 0x20) = lVar18; + *(undefined4 *)(pUVar16 + 0x18) = uVar2; + *(undefined8 *)(pUVar16 + 0x28) = uVar13; + *(UMat **)(pUVar16 + 0x30) = pUVar16 + 8; + *(UMat **)(pUVar16 + 0x38) = pUVar16 + 0x40; + *(undefined8 *)(pUVar16 + 0x48) = 0; + *(undefined8 *)(pUVar16 + 0x40) = 0; + if (lVar18 != 0) { + piVar1 = (int *)(lVar18 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pUVar17 + 4) < 3) { + puVar9 = *(undefined8 **)(pUVar17 + 0x38); + puVar8 = *(undefined8 **)(pUVar16 + 0x38); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + *(undefined4 *)(pUVar16 + 4) = 0; + cv::UMat::copySize(pUVar16,pUVar17); + } + } + pUVar16 = pUVar16 + 0x50; + } + pUVar17 = *(UMat **)(this + 8); + pUVar16 = pUVar16 + param_3 * 0x50; + if (param_2 != pUVar17) { + do { + if (pUVar16 != (UMat *)0x0) { + *(undefined4 *)pUVar16 = *(undefined4 *)param_2; + uVar14 = *(undefined8 *)(param_2 + 0x10); + *(undefined4 *)(pUVar16 + 4) = *(undefined4 *)(param_2 + 4); + uVar2 = *(undefined4 *)(param_2 + 0x18); + *(undefined4 *)(pUVar16 + 8) = *(undefined4 *)(param_2 + 8); + uVar13 = *(undefined8 *)(param_2 + 0x28); + uVar3 = *(undefined4 *)(param_2 + 0xc); + *(undefined8 *)(pUVar16 + 0x10) = uVar14; + *(undefined4 *)(pUVar16 + 0xc) = uVar3; + lVar18 = *(long *)(param_2 + 0x20); + *(long *)(pUVar16 + 0x20) = lVar18; + *(undefined4 *)(pUVar16 + 0x18) = uVar2; + *(undefined8 *)(pUVar16 + 0x28) = uVar13; + *(UMat **)(pUVar16 + 0x30) = pUVar16 + 8; + *(UMat **)(pUVar16 + 0x38) = pUVar16 + 0x40; + *(undefined8 *)(pUVar16 + 0x48) = 0; + *(undefined8 *)(pUVar16 + 0x40) = 0; + if (lVar18 != 0) { + piVar1 = (int *)(lVar18 + 0x10); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar5) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(param_2 + 4) < 3) { + puVar9 = *(undefined8 **)(param_2 + 0x38); + puVar8 = *(undefined8 **)(pUVar16 + 0x38); + *puVar8 = *puVar9; + puVar8[1] = puVar9[1]; + } + else { + *(undefined4 *)(pUVar16 + 4) = 0; + cv::UMat::copySize(pUVar16,param_2); + } + } + param_2 = param_2 + 0x50; + pUVar16 = pUVar16 + 0x50; + } while (pUVar17 != param_2); + pUVar17 = *(UMat **)(this + 8); + } + pUVar19 = *(UMat **)this; + if (*(UMat **)this != pUVar17) { + do { + pUVar20 = pUVar19 + 0x50; + cv::UMat::~UMat(pUVar19); + pUVar19 = pUVar20; + } while (pUVar20 != pUVar17); + pUVar17 = *(UMat **)this; + } + if (pUVar17 != (UMat *)0x0) { + operator_delete(pUVar17); + } + *(UMat **)this = pUVar15; + *(UMat **)(this + 8) = pUVar16; + *(UMat **)(this + 0x10) = pUVar15 + uVar21 * 0x50; + return; +} + + +================================================================== + +### FUNC 00337800 (2304 bytes) name=getUMatVector + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::_InputArray::getUMatVector(std::vector >&) const */ + +void __thiscall cv::_InputArray::getUMatVector(_InputArray *this,vector *param_1) + +{ + int *piVar1; + UMat *this_00; + uint uVar2; + undefined4 uVar3; + char cVar4; + undefined8 uVar5; + undefined2 uVar6; + bool bVar7; + int iVar8; + char *pcVar9; + undefined8 *puVar10; + undefined4 *puVar11; + long lVar12; + undefined8 *puVar13; + UMat *pUVar14; + UMat *pUVar15; + UMat *pUVar16; + ulong uVar17; + undefined8 uVar18; + ulong uVar19; + long *plVar20; + long lVar21; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined4 local_38; + long local_30; + undefined8 local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + iVar8 = kind(this); + uVar2 = *(uint *)this; + if (iVar8 == 0) { + pUVar14 = *(UMat **)(param_1 + 8); + pUVar15 = *(UMat **)param_1; + for (pUVar16 = pUVar15; pUVar16 != pUVar14; pUVar16 = pUVar16 + 0x50) { + UMat::~UMat(pUVar16); + } + *(UMat **)(param_1 + 8) = pUVar15; + return; + } + if (iVar8 == 0x50000) { + plVar20 = *(long **)(this + 8); + local_20 = &uStack_48; + pUVar16 = *(UMat **)(param_1 + 8); + local_18 = &local_10; + lVar12 = (long)pUVar16 - *(long *)param_1 >> 4; + lVar21 = plVar20[1] - *plVar20 >> 5; + uVar19 = lVar12 * -0x3333333333333333; + local_50 = 0x42ff0000; + uStack_48 = 0; + uVar17 = lVar21 * -0x5555555555555555; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + uStack_8 = 0; + local_10 = 0; + if (uVar19 < uVar17) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pUVar16, + uVar17 + lVar12 * 0x3333333333333333,(UMat *)&local_50); + } + else if (uVar17 < uVar19) { + pUVar15 = (UMat *)(*(long *)param_1 + lVar21 * 0x5555555555555570); + for (pUVar14 = pUVar15; pUVar16 != pUVar14; pUVar14 = pUVar14 + 0x50) { + UMat::~UMat(pUVar14); + } + *(UMat **)(param_1 + 8) = pUVar15; + } + UMat::~UMat((UMat *)&local_50); + if (uVar17 == 0) { + return; + } + lVar21 = 0; + lVar12 = 0; + uVar19 = 0; + do { + pUVar16 = (UMat *)(*(long *)param_1 + lVar12); + Mat::getUMat((UMat *)&local_50,*plVar20 + lVar21,uVar2 & 0x3000000,0); + if (pUVar16 != (UMat *)&local_50) { + if (local_30 != 0) { + piVar1 = (int *)(local_30 + 0x10); + do { + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(pUVar16 + 0x20) == 0) { +LAB_00337a54: + if (0 < *(int *)(pUVar16 + 4)) goto LAB_00337a60; +LAB_00337b34: + *(undefined4 *)pUVar16 = (undefined4)local_50; + *(undefined8 *)(pUVar16 + 0x20) = 0; +LAB_00337a90: + if (2 < local_50._4_4_) goto LAB_00337b10; + *(int *)(pUVar16 + 4) = local_50._4_4_; + *(undefined4 *)(pUVar16 + 8) = (undefined4)uStack_48; + puVar10 = *(undefined8 **)(pUVar16 + 0x38); + *(undefined4 *)(pUVar16 + 0xc) = uStack_48._4_4_; + *puVar10 = *local_18; + puVar10[1] = local_18[1]; + } + else { + piVar1 = (int *)(*(long *)(pUVar16 + 0x20) + 0x10); + do { + iVar8 = *piVar1; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 != 1) goto LAB_00337a54; + UMat::deallocate(pUVar16); + if (*(int *)(pUVar16 + 4) < 1) goto LAB_00337b34; +LAB_00337a60: + iVar8 = 0; + puVar11 = *(undefined4 **)(pUVar16 + 0x30); + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < *(int *)(pUVar16 + 4)); + *(undefined8 *)(pUVar16 + 0x20) = 0; + *(undefined4 *)pUVar16 = (undefined4)local_50; + if (*(int *)(pUVar16 + 4) < 3) goto LAB_00337a90; +LAB_00337b10: + UMat::copySize(pUVar16,(UMat *)&local_50); + } + *(undefined8 *)(pUVar16 + 0x10) = local_40; + if (*(int *)(pUVar16 + 0x18) == 0) { + *(undefined4 *)(pUVar16 + 0x18) = local_38; + } + *(undefined8 *)(pUVar16 + 0x28) = local_28; + *(long *)(pUVar16 + 0x20) = local_30; + } + uVar19 = uVar19 + 1; + lVar12 = lVar12 + 0x50; + lVar21 = lVar21 + 0x60; + UMat::~UMat((UMat *)&local_50); + if (uVar19 == uVar17) { + return; + } + } while( true ); + } + if (iVar8 == 0xb0000) { + plVar20 = *(long **)(this + 8); + pUVar16 = *(UMat **)(param_1 + 8); + local_20 = &uStack_48; + lVar12 = (long)pUVar16 - *(long *)param_1 >> 4; + local_18 = &local_10; + uVar19 = (plVar20[1] - *plVar20 >> 4) * -0x3333333333333333; + local_50 = 0x42ff0000; + bVar7 = (ulong)(lVar12 * -0x3333333333333333) <= uVar19; + uStack_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + uStack_8 = 0; + local_10 = 0; + if (bVar7 && uVar19 + lVar12 * 0x3333333333333333 != 0) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pUVar16, + uVar19 + lVar12 * 0x3333333333333333,(UMat *)&local_50); + } + else if (!bVar7) { + pUVar15 = (UMat *)(*(long *)param_1 + (plVar20[1] - *plVar20)); + for (pUVar14 = pUVar15; pUVar16 != pUVar14; pUVar14 = pUVar14 + 0x50) { + UMat::~UMat(pUVar14); + } + *(UMat **)(param_1 + 8) = pUVar15; + } + UMat::~UMat((UMat *)&local_50); + if (uVar19 == 0) { + return; + } + lVar12 = 0; + uVar17 = 0; + do { + pUVar16 = (UMat *)(*(long *)param_1 + lVar12); + pUVar14 = (UMat *)(*plVar20 + lVar12); + if (pUVar16 != pUVar14) { + if (*(long *)(pUVar14 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(pUVar14 + 0x20) + 0x10); + do { + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(pUVar16 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(pUVar16 + 0x20) + 0x10); + do { + iVar8 = *piVar1; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + UMat::deallocate(pUVar16); + } + } + if (*(int *)(pUVar16 + 4) < 1) { + *(undefined4 *)pUVar16 = *(undefined4 *)pUVar14; + *(undefined8 *)(pUVar16 + 0x20) = 0; +LAB_00337e10: + iVar8 = *(int *)(pUVar14 + 4); + if (2 < iVar8) goto LAB_00338080; + puVar13 = *(undefined8 **)(pUVar14 + 0x38); + puVar10 = *(undefined8 **)(pUVar16 + 0x38); + uVar3 = *(undefined4 *)(pUVar14 + 8); + *(undefined4 *)(pUVar16 + 0xc) = *(undefined4 *)(pUVar14 + 0xc); + *(int *)(pUVar16 + 4) = iVar8; + *(undefined4 *)(pUVar16 + 8) = uVar3; + *puVar10 = *puVar13; + puVar10[1] = puVar13[1]; + } + else { + iVar8 = 0; + puVar11 = *(undefined4 **)(pUVar16 + 0x30); + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < *(int *)(pUVar16 + 4)); + uVar3 = *(undefined4 *)pUVar14; + *(undefined8 *)(pUVar16 + 0x20) = 0; + *(undefined4 *)pUVar16 = uVar3; + if (*(int *)(pUVar16 + 4) < 3) goto LAB_00337e10; +LAB_00338080: + UMat::copySize(pUVar16,pUVar14); + } + *(undefined8 *)(pUVar16 + 0x10) = *(undefined8 *)(pUVar14 + 0x10); + if (*(int *)(pUVar16 + 0x18) == 0) { + *(undefined4 *)(pUVar16 + 0x18) = *(undefined4 *)(pUVar14 + 0x18); + } + uVar18 = *(undefined8 *)(pUVar14 + 0x20); + *(undefined8 *)(pUVar16 + 0x28) = *(undefined8 *)(pUVar14 + 0x28); + *(undefined8 *)(pUVar16 + 0x20) = uVar18; + } + uVar17 = uVar17 + 1; + lVar12 = lVar12 + 0x50; + if (uVar17 == uVar19) { + return; + } + } while( true ); + } + uStack_48 = _UNK_00338198; + local_50 = _DAT_00338190; + if (iVar8 != 0xa0000) { + if (iVar8 != 0x10000) { + local_50 = 0; + uStack_48 = 0; + pcVar9 = (char *)String::allocate((String *)&local_50,0x1e); + uVar6 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar3 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar5 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar18 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar3; + *(undefined2 *)(pcVar9 + 0x1c) = uVar6; + *(undefined8 *)pcVar9 = uVar18; + *(undefined8 *)(pcVar9 + 8) = uVar5; + error(-0xd5,(String *)&local_50, + "void cv::_InputArray::getUMatVector(std::vector&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x57d); + String::deallocate((String *)&local_50); + return; + } + pUVar16 = *(UMat **)(param_1 + 8); + local_18 = &local_10; + local_20 = &uStack_48; + uVar18 = *(undefined8 *)(this + 8); + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + uStack_8 = 0; + local_10 = 0; + uVar19 = ((long)pUVar16 - *(long *)param_1 >> 4) * -0x3333333333333333; + if (uVar19 == 0) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pUVar16,1,(UMat *)&local_50); + } + else if (1 < uVar19) { + pUVar14 = (UMat *)(*(long *)param_1 + 0x50); + for (pUVar15 = pUVar14; pUVar16 != pUVar15; pUVar15 = pUVar15 + 0x50) { + UMat::~UMat(pUVar15); + } + *(UMat **)(param_1 + 8) = pUVar14; + } + UMat::~UMat((UMat *)&local_50); + pUVar16 = *(UMat **)param_1; + Mat::getUMat((UMat *)&local_50,uVar18,uVar2 & 0x3000000,0); + if (pUVar16 == (UMat *)&local_50) goto LAB_00337cac; + if (local_30 != 0) { + piVar1 = (int *)(local_30 + 0x10); + do { + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(pUVar16 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(pUVar16 + 0x20) + 0x10); + do { + iVar8 = *piVar1; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + UMat::deallocate(pUVar16); + } + } + if (*(int *)(pUVar16 + 4) < 1) { + *(undefined4 *)pUVar16 = (undefined4)local_50; + *(undefined8 *)(pUVar16 + 0x20) = 0; +LAB_00337c74: + if (2 < local_50._4_4_) goto LAB_00337c80; + *(int *)(pUVar16 + 4) = local_50._4_4_; + *(undefined4 *)(pUVar16 + 8) = (undefined4)uStack_48; + puVar10 = *(undefined8 **)(pUVar16 + 0x38); + *(undefined4 *)(pUVar16 + 0xc) = uStack_48._4_4_; + *puVar10 = *local_18; + puVar10[1] = local_18[1]; + } + else { + iVar8 = 0; + puVar11 = *(undefined4 **)(pUVar16 + 0x30); + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < *(int *)(pUVar16 + 4)); + *(undefined8 *)(pUVar16 + 0x20) = 0; + *(undefined4 *)pUVar16 = (undefined4)local_50; + if (*(int *)(pUVar16 + 4) < 3) goto LAB_00337c74; +LAB_00337c80: + UMat::copySize(pUVar16,(UMat *)&local_50); + } + *(undefined8 *)(pUVar16 + 0x10) = local_40; + if (*(int *)(pUVar16 + 0x18) == 0) { + *(undefined4 *)(pUVar16 + 0x18) = local_38; + } + *(long *)(pUVar16 + 0x20) = local_30; + *(undefined8 *)(pUVar16 + 0x28) = local_28; +LAB_00337cac: + UMat::~UMat((UMat *)&local_50); + return; + } + pUVar14 = *(UMat **)(param_1 + 8); + local_18 = &local_10; + local_20 = &uStack_48; + pUVar16 = *(UMat **)(this + 8); + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + uStack_8 = 0; + local_10 = 0; + uVar19 = ((long)pUVar14 - *(long *)param_1 >> 4) * -0x3333333333333333; + if (uVar19 == 0) { + std::vector>::_M_fill_insert + ((vector> *)param_1,pUVar14,1,(UMat *)&local_50); + } + else if (1 < uVar19) { + pUVar15 = (UMat *)(*(long *)param_1 + 0x50); + for (this_00 = pUVar15; pUVar14 != this_00; this_00 = this_00 + 0x50) { + UMat::~UMat(this_00); + } + *(UMat **)(param_1 + 8) = pUVar15; + } + UMat::~UMat((UMat *)&local_50); + pUVar14 = *(UMat **)param_1; + if (pUVar16 == pUVar14) { + return; + } + if (*(long *)(pUVar16 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(pUVar16 + 0x20) + 0x10); + do { + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(pUVar14 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(pUVar14 + 0x20) + 0x10); + do { + iVar8 = *piVar1; + cVar4 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + UMat::deallocate(pUVar14); + } + } + if (*(int *)(pUVar14 + 4) < 1) { + *(undefined4 *)pUVar14 = *(undefined4 *)pUVar16; + *(undefined8 *)(pUVar14 + 0x20) = 0; +LAB_00337fa4: + iVar8 = *(int *)(pUVar16 + 4); + if (iVar8 < 3) { + puVar13 = *(undefined8 **)(pUVar16 + 0x38); + puVar10 = *(undefined8 **)(pUVar14 + 0x38); + uVar3 = *(undefined4 *)(pUVar16 + 8); + *(undefined4 *)(pUVar14 + 0xc) = *(undefined4 *)(pUVar16 + 0xc); + *(int *)(pUVar14 + 4) = iVar8; + *(undefined4 *)(pUVar14 + 8) = uVar3; + *puVar10 = *puVar13; + puVar10[1] = puVar13[1]; + goto LAB_00337fdc; + } + } + else { + iVar8 = 0; + puVar11 = *(undefined4 **)(pUVar14 + 0x30); + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < *(int *)(pUVar14 + 4)); + uVar3 = *(undefined4 *)pUVar16; + *(undefined8 *)(pUVar14 + 0x20) = 0; + *(undefined4 *)pUVar14 = uVar3; + if (*(int *)(pUVar14 + 4) < 3) goto LAB_00337fa4; + } + UMat::copySize(pUVar14,pUVar16); +LAB_00337fdc: + *(undefined8 *)(pUVar14 + 0x10) = *(undefined8 *)(pUVar16 + 0x10); + if (*(int *)(pUVar14 + 0x18) == 0) { + *(undefined4 *)(pUVar14 + 0x18) = *(undefined4 *)(pUVar16 + 0x18); + } + uVar18 = *(undefined8 *)(pUVar16 + 0x20); + *(undefined8 *)(pUVar14 + 0x28) = *(undefined8 *)(pUVar16 + 0x28); + *(undefined8 *)(pUVar14 + 0x20) = uVar18; + return; +} + + +================================================================== + +### FUNC 003381a0 (2352 bytes) name=_M_fill_insert + +/* WARNING: Removing unreachable block (ram,0x00338a5c) */ +/* WARNING: Removing unreachable block (ram,0x00338a64) */ +/* WARNING: Removing unreachable block (ram,0x00338a68) */ +/* WARNING: Removing unreachable block (ram,0x00338a8c) */ +/* WARNING: Removing unreachable block (ram,0x00338a98) */ +/* std::vector >, + std::allocator > > + >::_M_fill_insert(__gnu_cxx::__normal_iterator >*, std::vector >, + std::allocator > > > >, unsigned long, + std::vector > const&) */ + +void __thiscall +std:: +vector>,std::allocator>>> +::_M_fill_insert(vector>,std::allocator>>> + *this,void **param_2,ulong param_3,long *param_4) + +{ + long lVar1; + ulong uVar2; + long lVar3; + undefined8 *puVar4; + void *pvVar5; + ulong uVar6; + void *pvVar7; + void *pvVar8; + long lVar9; + long lVar10; + ulong uVar11; + size_t sVar12; + void *__dest; + void **ppvVar13; + undefined8 *puVar14; + void **ppvVar15; + void **ppvVar16; + void *pvVar17; + void **ppvVar18; + void **ppvVar19; + void *local_18; + void *local_10; + long local_8; + + if (param_3 == 0) { + return; + } + if (param_3 <= (ulong)((*(long *)(this + 0x10) - *(long *)(this + 8) >> 3) * -0x5555555555555555)) + { + pvVar7 = (void *)*param_4; + local_18 = (void *)0x0; + local_10 = (void *)0x0; + uVar11 = param_4[1] - (long)pvVar7; + local_8 = 0; + if (uVar11 == 0) { + pvVar5 = (void *)0x0; + uVar6 = 0; + } + else { + pvVar5 = operator_new(uVar11); + pvVar7 = (void *)*param_4; + uVar6 = param_4[1] - (long)pvVar7; + } + local_8 = (long)pvVar5 + uVar11; + local_18 = pvVar5; + if (uVar6 != 0) { + local_10 = pvVar5; + memmove(pvVar5,pvVar7,uVar6); + } + lVar9 = (long)pvVar5 + uVar6; + ppvVar13 = *(void ***)(this + 8); + lVar3 = (long)ppvVar13 - (long)param_2; + local_10 = (void *)lVar9; + if (param_3 < (ulong)((lVar3 >> 3) * -0x5555555555555555)) { + ppvVar18 = ppvVar13 + param_3 * -3; + ppvVar15 = ppvVar18; + ppvVar16 = ppvVar13; + if (ppvVar18 != ppvVar13) { + do { + if (ppvVar16 != (void **)0x0) { + pvVar8 = ppvVar15[1]; + pvVar7 = (void *)0x0; + pvVar17 = *ppvVar15; + *ppvVar16 = (void *)0x0; + ppvVar16[1] = (void *)0x0; + uVar11 = (long)pvVar8 - (long)pvVar17; + ppvVar16[2] = (void *)0x0; + if (uVar11 != 0) { + pvVar7 = operator_new(uVar11); + } + *ppvVar16 = pvVar7; + ppvVar16[1] = pvVar7; + ppvVar16[2] = (void *)((long)pvVar7 + uVar11); + sVar12 = (long)ppvVar15[1] - (long)*ppvVar15; + if (sVar12 != 0) { + pvVar7 = memmove(pvVar7,*ppvVar15,sVar12); + } + ppvVar16[1] = (void *)((long)pvVar7 + sVar12); + } + ppvVar15 = ppvVar15 + 3; + ppvVar16 = ppvVar16 + 3; + } while (ppvVar13 != ppvVar15); + ppvVar15 = *(void ***)(this + 8); + } + *(void ***)(this + 8) = ppvVar15 + param_3 * 3; + ppvVar15 = ppvVar18; + if (0 < ((long)ppvVar18 - (long)param_2 >> 3) * -0x5555555555555555) { + do { + ppvVar16 = ppvVar13 + -3; + ppvVar19 = ppvVar15 + -3; + if (ppvVar16 != ppvVar19) { + pvVar7 = *ppvVar19; + pvVar17 = ppvVar15[-2]; + pvVar8 = *ppvVar16; + uVar11 = (long)pvVar17 - (long)pvVar7; + if ((ulong)((long)ppvVar13[-1] - (long)pvVar8) < uVar11) { + pvVar8 = operator_new(uVar11); + if (uVar11 != 0) { + memmove(pvVar8,pvVar7,uVar11); + } + if (*ppvVar16 != (void *)0x0) { + operator_delete(*ppvVar16); + } + *ppvVar16 = pvVar8; + ppvVar13[-1] = (void *)((long)pvVar8 + uVar11); + } + else { + __dest = ppvVar13[-2]; + sVar12 = (long)__dest - (long)pvVar8; + if (sVar12 < uVar11) { + if (sVar12 != 0) { + memmove(pvVar8,pvVar7,sVar12); + pvVar7 = *ppvVar19; + pvVar17 = ppvVar15[-2]; + pvVar8 = *ppvVar16; + __dest = ppvVar13[-2]; + } + pvVar7 = (void *)((long)pvVar7 + ((long)__dest - (long)pvVar8)); + sVar12 = (long)pvVar17 - (long)pvVar7; + if (sVar12 != 0) { + memmove(__dest,pvVar7,sVar12); + pvVar8 = *ppvVar16; + } + } + else if (uVar11 != 0) { + memmove(pvVar8,pvVar7,uVar11); + pvVar8 = *ppvVar16; + } + } + ppvVar13[-2] = (void *)((long)pvVar8 + uVar11); + } + ppvVar13 = ppvVar16; + ppvVar15 = ppvVar19; + } while (ppvVar19 != (void **)((long)ppvVar18 - ((long)ppvVar18 - (long)param_2))); + } + ppvVar13 = param_2 + param_3 * 3; + for (; param_2 != ppvVar13; param_2 = param_2 + 3) { + if (param_2 != &local_18) { + pvVar7 = *param_2; + if ((ulong)((long)param_2[2] - (long)pvVar7) < uVar6) { + pvVar8 = operator_new(uVar6); + if (uVar6 != 0) { + memmove(pvVar8,pvVar5,uVar6); + } + if (*param_2 != (void *)0x0) { + operator_delete(*param_2); + } + pvVar7 = (void *)((long)pvVar8 + uVar6); + *param_2 = pvVar8; + param_2[2] = pvVar7; + } + else { + pvVar8 = param_2[1]; + uVar11 = (long)pvVar8 - (long)pvVar7; + if (uVar11 < uVar6) { + lVar3 = 0; + if (uVar11 != 0) { + memmove(pvVar7,pvVar5,uVar11); + pvVar7 = *param_2; + pvVar8 = param_2[1]; + lVar3 = (long)pvVar8 - (long)pvVar7; + } + sVar12 = lVar9 - ((long)pvVar5 + lVar3); + if (sVar12 == 0) goto LAB_003388f0; + memmove(pvVar8,(void *)((long)pvVar5 + lVar3),sVar12); + pvVar7 = (void *)((long)*param_2 + uVar6); + } + else if (uVar6 == 0) { +LAB_003388f0: + pvVar7 = (void *)((long)pvVar7 + uVar6); + } + else { + memmove(pvVar7,pvVar5,uVar6); + pvVar7 = (void *)((long)*param_2 + uVar6); + } + } + param_2[1] = pvVar7; + } + } + } + else { + lVar1 = param_3 + (lVar3 >> 3) * 0x5555555555555555; + ppvVar15 = ppvVar13; + if (lVar1 != 0) { + lVar10 = lVar1; + if (uVar6 == 0) { + do { + if (ppvVar15 != (void **)0x0) { + *ppvVar15 = (void *)0x0; + ppvVar15[2] = (void *)0x0; + ppvVar15[1] = (void *)0x0; + } + lVar10 = lVar10 + -1; + ppvVar15 = ppvVar15 + 3; + } while (lVar10 != 0); + } + else if (uVar6 == 0) { + do { + if (ppvVar15 != (void **)0x0) { + *ppvVar15 = (void *)0x0; + ppvVar15[2] = (void *)0x0; + ppvVar15[1] = (void *)0x0; + } + lVar10 = lVar10 + -1; + ppvVar15 = ppvVar15 + 3; + } while (lVar10 != 0); + } + else { + do { + if (ppvVar15 != (void **)0x0) { + *ppvVar15 = (void *)0x0; + ppvVar15[1] = (void *)0x0; + ppvVar15[2] = (void *)0x0; + pvVar7 = operator_new(uVar6); + *ppvVar15 = pvVar7; + ppvVar15[1] = pvVar7; + ppvVar15[2] = (void *)((long)pvVar7 + uVar6); + memmove(pvVar7,pvVar5,uVar6); + ppvVar15[1] = (void *)((long)pvVar7 + uVar6); + } + lVar10 = lVar10 + -1; + ppvVar15 = ppvVar15 + 3; + } while (lVar10 != 0); + } + ppvVar15 = *(void ***)(this + 8); + } + ppvVar15 = ppvVar15 + lVar1 * 3; + *(void ***)(this + 8) = ppvVar15; + ppvVar16 = param_2; + if (param_2 == ppvVar13) { + *(long *)(this + 8) = (long)ppvVar15 + lVar3; + } + else { + do { + if (ppvVar15 != (void **)0x0) { + pvVar8 = ppvVar16[1]; + pvVar7 = (void *)0x0; + pvVar17 = *ppvVar16; + *ppvVar15 = (void *)0x0; + ppvVar15[1] = (void *)0x0; + uVar11 = (long)pvVar8 - (long)pvVar17; + ppvVar15[2] = (void *)0x0; + if (uVar11 != 0) { + pvVar7 = operator_new(uVar11); + } + *ppvVar15 = pvVar7; + ppvVar15[1] = pvVar7; + ppvVar15[2] = (void *)((long)pvVar7 + uVar11); + sVar12 = (long)ppvVar16[1] - (long)*ppvVar16; + if (sVar12 != 0) { + pvVar7 = memmove(pvVar7,*ppvVar16,sVar12); + } + ppvVar15[1] = (void *)((long)pvVar7 + sVar12); + } + ppvVar16 = ppvVar16 + 3; + ppvVar15 = ppvVar15 + 3; + } while (ppvVar13 != ppvVar16); + *(long *)(this + 8) = *(long *)(this + 8) + lVar3; + do { + if (param_2 != &local_18) { + pvVar7 = *param_2; + if ((ulong)((long)param_2[2] - (long)pvVar7) < uVar6) { + pvVar8 = operator_new(uVar6); + if (uVar6 != 0) { + memmove(pvVar8,pvVar5,uVar6); + } + if (*param_2 != (void *)0x0) { + operator_delete(*param_2); + } + pvVar7 = (void *)((long)pvVar8 + uVar6); + *param_2 = pvVar8; + param_2[2] = pvVar7; + } + else { + pvVar8 = param_2[1]; + uVar11 = (long)pvVar8 - (long)pvVar7; + if (uVar11 < uVar6) { + lVar3 = 0; + if (uVar11 != 0) { + memmove(pvVar7,pvVar5,uVar11); + pvVar7 = *param_2; + pvVar8 = param_2[1]; + lVar3 = (long)pvVar8 - (long)pvVar7; + } + sVar12 = lVar9 - ((long)pvVar5 + lVar3); + if (sVar12 == 0) goto LAB_00338374; + memmove(pvVar8,(void *)((long)pvVar5 + lVar3),sVar12); + pvVar7 = (void *)((long)*param_2 + uVar6); + } + else if (uVar6 == 0) { +LAB_00338374: + pvVar7 = (void *)((long)pvVar7 + uVar6); + } + else { + memmove(pvVar7,pvVar5,uVar6); + pvVar7 = (void *)((long)*param_2 + uVar6); + } + } + param_2[1] = pvVar7; + } + param_2 = param_2 + 3; + } while (ppvVar13 != param_2); + } + } + if (pvVar5 == (void *)0x0) { + return; + } + operator_delete(pvVar5); + return; + } + lVar3 = *(long *)this; + lVar9 = *(long *)(this + 8) - lVar3 >> 3; + uVar11 = lVar9 * -0x5555555555555555; + if (lVar9 * 0x5555555555555555 + 0xaaaaaaaaaaaaaaaU < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar6 = uVar11; + if (uVar11 < param_3) { + uVar6 = param_3; + } + uVar6 = uVar6 + uVar11; + if ((uVar11 < uVar6 || uVar11 - uVar6 == 0) && (uVar6 < 0xaaaaaaaaaaaaaab)) { + lVar3 = (long)param_2 - lVar3; + if (uVar6 == 0) { + puVar4 = (undefined8 *)0x0; + goto LAB_00338424; + } + uVar11 = uVar6 * 0x18; + } + else { + lVar3 = (long)param_2 - lVar3; + uVar11 = 0xfffffffffffffff0; + uVar6 = 0xaaaaaaaaaaaaaaa; + } + puVar4 = operator_new(uVar11); +LAB_00338424: + puVar14 = (undefined8 *)((long)puVar4 + lVar3); + uVar11 = param_3; + do { + if (puVar14 != (undefined8 *)0x0) { + lVar9 = param_4[1]; + pvVar7 = (void *)0x0; + lVar3 = *param_4; + *puVar14 = 0; + puVar14[1] = 0; + uVar2 = lVar9 - lVar3; + puVar14[2] = 0; + if (uVar2 != 0) { + pvVar7 = operator_new(uVar2); + } + *puVar14 = pvVar7; + puVar14[1] = pvVar7; + puVar14[2] = (long)pvVar7 + uVar2; + sVar12 = param_4[1] - *param_4; + if (sVar12 != 0) { + pvVar7 = memmove(pvVar7,(void *)*param_4,sVar12); + } + puVar14[1] = (long)pvVar7 + sVar12; + } + uVar11 = uVar11 - 1; + puVar14 = puVar14 + 3; + } while (uVar11 != 0); + puVar14 = puVar4; + for (ppvVar13 = *(void ***)this; param_2 != ppvVar13; ppvVar13 = ppvVar13 + 3) { + if (puVar14 != (undefined8 *)0x0) { + pvVar5 = ppvVar13[1]; + pvVar7 = (void *)0x0; + pvVar8 = *ppvVar13; + *puVar14 = 0; + puVar14[1] = 0; + uVar11 = (long)pvVar5 - (long)pvVar8; + puVar14[2] = 0; + if (uVar11 != 0) { + pvVar7 = operator_new(uVar11); + } + *puVar14 = pvVar7; + puVar14[1] = pvVar7; + puVar14[2] = (long)pvVar7 + uVar11; + sVar12 = (long)ppvVar13[1] - (long)*ppvVar13; + if (sVar12 != 0) { + pvVar7 = memmove(pvVar7,*ppvVar13,sVar12); + } + puVar14[1] = (long)pvVar7 + sVar12; + } + puVar14 = puVar14 + 3; + } + ppvVar13 = *(void ***)(this + 8); + puVar14 = puVar14 + param_3 * 3; + if (param_2 != ppvVar13) { + do { + if (puVar14 != (undefined8 *)0x0) { + pvVar5 = param_2[1]; + pvVar7 = (void *)0x0; + pvVar8 = *param_2; + *puVar14 = 0; + puVar14[1] = 0; + uVar11 = (long)pvVar5 - (long)pvVar8; + puVar14[2] = 0; + if (uVar11 != 0) { + pvVar7 = operator_new(uVar11); + } + *puVar14 = pvVar7; + puVar14[1] = pvVar7; + puVar14[2] = (long)pvVar7 + uVar11; + sVar12 = (long)param_2[1] - (long)*param_2; + if (sVar12 != 0) { + pvVar7 = memmove(pvVar7,*param_2,sVar12); + } + puVar14[1] = (long)pvVar7 + sVar12; + } + param_2 = param_2 + 3; + puVar14 = puVar14 + 3; + } while (ppvVar13 != param_2); + ppvVar13 = *(void ***)(this + 8); + } + ppvVar15 = *(void ***)this; + if (ppvVar15 != ppvVar13) { + do { + if (*ppvVar15 != (void *)0x0) { + operator_delete(*ppvVar15); + } + ppvVar15 = ppvVar15 + 3; + } while (ppvVar15 != ppvVar13); + ppvVar13 = *(void ***)this; + } + if (ppvVar13 != (void **)0x0) { + operator_delete(ppvVar13); + } + *(undefined8 **)this = puVar4; + *(undefined8 **)(this + 8) = puVar14; + *(undefined8 **)(this + 0x10) = puVar4 + uVar6 * 3; + return; +} + + +================================================================== + +### FUNC 00338cb4 (1304 bytes) name=FUN_00338cb4 + +void FUN_00338cb4(long *param_1,undefined8 *param_2,ulong param_3,undefined2 *param_4) + +{ + undefined1 uVar1; + undefined1 uVar2; + long lVar3; + undefined2 uVar4; + undefined2 uVar5; + undefined2 uVar6; + undefined2 uVar7; + ulong uVar8; + undefined1 *puVar9; + undefined2 *puVar10; + undefined1 *puVar11; + undefined8 *puVar12; + undefined8 *puVar13; + undefined1 *puVar14; + undefined8 *puVar15; + ulong uVar16; + long lVar17; + long lVar18; + undefined8 *puVar19; + ulong uVar20; + + if (param_3 == 0) { + return; + } + puVar15 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar15 >> 1)) { + lVar18 = (long)puVar15 - (long)param_2; + uVar1 = *(undefined1 *)param_4; + uVar2 = *(undefined1 *)((long)param_4 + 1); + uVar7 = *param_4; + uVar6 = *param_4; + uVar5 = *param_4; + uVar4 = *param_4; + if (param_3 < (ulong)(lVar18 >> 1)) { + puVar19 = (undefined8 *)((long)puVar15 + param_3 * -2); + puVar12 = puVar15; + puVar13 = puVar19; + if (puVar15 != puVar19) { + do { + if (puVar12 != (undefined8 *)0x0) { + *(undefined1 *)puVar12 = *(undefined1 *)puVar13; + *(undefined1 *)((long)puVar12 + 1) = *(undefined1 *)((long)puVar13 + 1); + } + puVar13 = (undefined8 *)((long)puVar13 + 2); + puVar12 = (undefined8 *)((long)puVar12 + 2); + } while (puVar15 != puVar13); + puVar12 = (undefined8 *)param_1[1]; + } + param_1[1] = (long)((long)puVar12 + param_3 * 2); + puVar13 = (undefined8 *)((long)puVar19 - ((long)puVar19 - (long)param_2)); + if (1 < (long)puVar19 - (long)param_2) { + do { + puVar19 = (undefined8 *)((long)puVar19 + -2); + puVar15 = (undefined8 *)((long)puVar15 + -2); + *(undefined2 *)puVar15 = *(undefined2 *)puVar19; + } while (puVar19 != puVar13); + } + puVar15 = (undefined8 *)((long)param_2 + param_3 * 2); + if (param_2 != puVar15) { + uVar8 = (ulong)((long)puVar15 - (long)((long)param_2 + 2)) >> 1; + uVar20 = (uVar8 - 7 >> 3) + 1; + if (6 < uVar8) { + uVar16 = 0; + puVar13 = param_2; + do { + puVar13[1] = CONCAT17(uVar2,CONCAT16(uVar1,CONCAT15(uVar2,CONCAT14(uVar1,CONCAT13(uVar2, + CONCAT12(uVar1,uVar5)))))); + *puVar13 = CONCAT17(uVar2,CONCAT16(uVar1,CONCAT15(uVar2,CONCAT14(uVar1,CONCAT13(uVar2, + CONCAT12(uVar1,uVar4)))))); + uVar16 = uVar16 + 1; + puVar13 = puVar13 + 2; + } while (uVar16 < uVar20); + param_2 = param_2 + uVar20 * 2; + if (uVar8 + 1 == uVar20 * 8) { + return; + } + } + *(undefined1 *)param_2 = uVar1; + *(undefined1 *)((long)param_2 + 1) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 2)) { + *(undefined1 *)((long)param_2 + 2) = uVar1; + *(undefined1 *)((long)param_2 + 3) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 4)) { + *(undefined1 *)((long)param_2 + 4) = uVar1; + *(undefined1 *)((long)param_2 + 5) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 6)) { + *(undefined1 *)((long)param_2 + 6) = uVar1; + *(undefined1 *)((long)param_2 + 7) = uVar2; + if (puVar15 != param_2 + 1) { + *(undefined1 *)(param_2 + 1) = uVar1; + *(undefined1 *)((long)param_2 + 9) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 10)) { + *(undefined1 *)((long)param_2 + 10) = uVar1; + *(undefined1 *)((long)param_2 + 0xb) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 0xc)) { +LAB_00339010: + *(undefined1 *)((long)param_2 + 0xc) = uVar1; + *(undefined1 *)((long)param_2 + 0xd) = uVar2; + return; + } + } + } + } + } + } + } + } + else { + lVar3 = param_3 - (lVar18 >> 1); + puVar13 = puVar15; + lVar17 = lVar3; + if (lVar3 != 0) { + do { + if (puVar13 != (undefined8 *)0x0) { + *(undefined1 *)puVar13 = uVar1; + *(undefined1 *)((long)puVar13 + 1) = uVar2; + } + lVar17 = lVar17 + -1; + puVar13 = (undefined8 *)((long)puVar13 + 2); + } while (lVar17 != 0); + puVar13 = (undefined8 *)param_1[1]; + } + puVar10 = (undefined2 *)((long)puVar13 + lVar3 * 2); + param_1[1] = (long)puVar10; + puVar13 = param_2; + if (puVar15 == param_2) { + param_1[1] = (long)((long)puVar10 + lVar18); + } + else { + do { + if (puVar10 != (undefined2 *)0x0) { + *(undefined1 *)puVar10 = *(undefined1 *)puVar13; + *(undefined1 *)((long)puVar10 + 1) = *(undefined1 *)((long)puVar13 + 1); + } + puVar13 = (undefined8 *)((long)puVar13 + 2); + puVar10 = puVar10 + 1; + } while (puVar15 != puVar13); + param_1[1] = param_1[1] + lVar18; + uVar8 = (ulong)((long)puVar15 - (long)((long)param_2 + 2)) >> 1; + uVar20 = (uVar8 - 7 >> 3) + 1; + if (6 < uVar8) { + uVar16 = 0; + puVar13 = param_2; + do { + puVar13[1] = CONCAT17(uVar2,CONCAT16(uVar1,CONCAT15(uVar2,CONCAT14(uVar1,CONCAT13(uVar2, + CONCAT12(uVar1,uVar7)))))); + *puVar13 = CONCAT17(uVar2,CONCAT16(uVar1,CONCAT15(uVar2,CONCAT14(uVar1,CONCAT13(uVar2, + CONCAT12(uVar1,uVar6)))))); + uVar16 = uVar16 + 1; + puVar13 = puVar13 + 2; + } while (uVar16 < uVar20); + param_2 = param_2 + uVar20 * 2; + if (uVar20 * 8 - (uVar8 + 1) == 0) { + return; + } + } + *(undefined1 *)param_2 = uVar1; + *(undefined1 *)((long)param_2 + 1) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 2)) { + *(undefined1 *)((long)param_2 + 2) = uVar1; + *(undefined1 *)((long)param_2 + 3) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 4)) { + *(undefined1 *)((long)param_2 + 4) = uVar1; + *(undefined1 *)((long)param_2 + 5) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 6)) { + *(undefined1 *)((long)param_2 + 6) = uVar1; + *(undefined1 *)((long)param_2 + 7) = uVar2; + if (puVar15 != param_2 + 1) { + *(undefined1 *)(param_2 + 1) = uVar1; + *(undefined1 *)((long)param_2 + 9) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 10)) { + *(undefined1 *)((long)param_2 + 10) = uVar1; + *(undefined1 *)((long)param_2 + 0xb) = uVar2; + if (puVar15 != (undefined8 *)((long)param_2 + 0xc)) goto LAB_00339010; + } + } + } + } + } + } + } + return; + } + lVar18 = *param_1; + uVar20 = (long)puVar15 - lVar18 >> 1; + if (0x7fffffffffffffff - uVar20 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar8 = uVar20; + if (uVar20 < param_3) { + uVar8 = param_3; + } + uVar8 = uVar8 + uVar20; + if (((long)uVar8 < 0) || (uVar8 < uVar20)) { + lVar18 = (long)param_2 - lVar18; + uVar8 = 0xfffffffffffffffe; + } + else { + lVar18 = (long)param_2 - lVar18; + if (uVar8 == 0) { + uVar8 = 0; + puVar9 = (undefined1 *)0x0; + goto LAB_0033909c; + } + uVar8 = uVar8 * 2; + } + puVar9 = operator_new(uVar8); +LAB_0033909c: + puVar14 = puVar9 + lVar18; + uVar20 = param_3; + do { + if (puVar14 != (undefined1 *)0x0) { + *puVar14 = *(undefined1 *)param_4; + puVar14[1] = *(undefined1 *)((long)param_4 + 1); + } + uVar20 = uVar20 - 1; + puVar14 = puVar14 + 2; + } while (uVar20 != 0); + puVar13 = (undefined8 *)*param_1; + puVar14 = puVar9; + puVar15 = puVar13; + if (param_2 != puVar13) { + do { + if (puVar14 != (undefined1 *)0x0) { + *puVar14 = *(undefined1 *)puVar15; + puVar14[1] = *(undefined1 *)((long)puVar15 + 1); + } + puVar15 = (undefined8 *)((long)puVar15 + 2); + puVar14 = puVar14 + 2; + } while (param_2 != puVar15); + puVar14 = puVar9 + ((long)param_2 - (long)((long)puVar13 + 2) & 0xfffffffffffffffeU) + 2; + } + puVar13 = (undefined8 *)param_1[1]; + puVar14 = puVar14 + param_3 * 2; + puVar11 = puVar14; + puVar15 = param_2; + if (param_2 != puVar13) { + do { + if (puVar11 != (undefined1 *)0x0) { + *puVar11 = *(undefined1 *)puVar15; + puVar11[1] = *(undefined1 *)((long)puVar15 + 1); + } + puVar15 = (undefined8 *)((long)puVar15 + 2); + puVar11 = puVar11 + 2; + } while (puVar13 != puVar15); + puVar14 = puVar14 + ((long)puVar13 - (long)((long)param_2 + 2) & 0xfffffffffffffffeU) + 2; + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)puVar9; + param_1[1] = (long)puVar14; + param_1[2] = (long)(puVar9 + uVar8); + return; +} + + +================================================================== + +### FUNC 003391cc (908 bytes) name=FUN_003391cc + +void FUN_003391cc(long *param_1,undefined2 *param_2,ulong param_3,undefined2 *param_4) + +{ + undefined1 uVar1; + undefined2 uVar2; + long lVar3; + undefined1 *puVar4; + undefined2 *puVar5; + undefined1 *puVar6; + undefined1 *puVar7; + undefined2 *puVar8; + undefined2 *puVar9; + ulong uVar10; + undefined2 *puVar11; + undefined2 *puVar12; + long lVar13; + long lVar14; + ulong uVar15; + undefined1 local_8; + undefined1 uStack_7; + + if (param_3 == 0) { + return; + } + puVar8 = (undefined2 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar8) * -0x5555555555555555)) { + lVar13 = (long)puVar8 - (long)param_2; + uVar2 = *param_4; + uVar1 = *(undefined1 *)(param_4 + 1); + if (param_3 < (ulong)(lVar13 * -0x5555555555555555)) { + puVar12 = (undefined2 *)((long)puVar8 + param_3 * -3); + puVar5 = puVar8; + puVar11 = puVar12; + if (puVar8 != puVar12) { + do { + if (puVar5 != (undefined2 *)0x0) { + *(undefined1 *)puVar5 = *(undefined1 *)puVar11; + *(undefined1 *)((long)puVar5 + 1) = *(undefined1 *)((long)puVar11 + 1); + *(undefined1 *)(puVar5 + 1) = *(undefined1 *)(puVar11 + 1); + } + puVar11 = (undefined2 *)((long)puVar11 + 3); + puVar5 = (undefined2 *)((long)puVar5 + 3); + } while (puVar11 != puVar8); + puVar5 = (undefined2 *)param_1[1]; + } + param_1[1] = (long)((long)puVar5 + param_3 * 3); + puVar11 = puVar8; + puVar5 = puVar12; + if (0 < ((long)puVar12 - (long)param_2) * -0x5555555555555555) { + do { + puVar9 = (undefined2 *)((long)puVar11 + -3); + *puVar9 = *(undefined2 *)((long)puVar5 + -3); + *(undefined1 *)((long)puVar11 + -1) = *(undefined1 *)((long)puVar5 + -1); + puVar11 = puVar9; + puVar5 = (undefined2 *)((long)puVar5 + -3); + } while (puVar9 != (undefined2 *)((long)puVar8 - ((long)puVar12 - (long)param_2))); + } + puVar8 = (undefined2 *)((long)param_2 + param_3 * 3); + for (; param_2 != puVar8; param_2 = (undefined2 *)((long)param_2 + 3)) { + *param_2 = uVar2; + *(undefined1 *)(param_2 + 1) = uVar1; + } + return; + } + lVar3 = param_3 + lVar13 * 0x5555555555555555; + if (lVar3 == 0) { + lVar14 = 0; + puVar11 = puVar8; + } + else { + lVar14 = lVar3 * 2; + local_8 = (undefined1)uVar2; + uStack_7 = (undefined1)((ushort)uVar2 >> 8); + puVar11 = puVar8; + do { + if (puVar11 != (undefined2 *)0x0) { + *(undefined1 *)puVar11 = local_8; + *(undefined1 *)((long)puVar11 + 1) = uStack_7; + *(undefined1 *)(puVar11 + 1) = uVar1; + } + puVar11 = (undefined2 *)((long)puVar11 + 3); + } while (puVar11 != (undefined2 *)((long)puVar8 + lVar3 * 3)); + puVar11 = (undefined2 *)param_1[1]; + } + puVar4 = (undefined1 *)((long)puVar11 + lVar14 + lVar3); + param_1[1] = (long)puVar4; + puVar11 = param_2; + if (puVar8 == param_2) { + param_1[1] = (long)(puVar4 + lVar13); + return; + } + do { + if (puVar4 != (undefined1 *)0x0) { + *puVar4 = *(undefined1 *)puVar11; + puVar4[1] = *(undefined1 *)((long)puVar11 + 1); + puVar4[2] = *(undefined1 *)(puVar11 + 1); + } + puVar11 = (undefined2 *)((long)puVar11 + 3); + puVar4 = puVar4 + 3; + } while (puVar11 != puVar8); + param_1[1] = param_1[1] + lVar13; + do { + puVar8 = (undefined2 *)((long)param_2 + 3); + *param_2 = uVar2; + *(undefined1 *)(param_2 + 1) = uVar1; + param_2 = puVar8; + } while (puVar8 != puVar11); + return; + } + lVar13 = *param_1; + uVar10 = ((long)puVar8 - lVar13) * -0x5555555555555555; + if (((long)puVar8 - lVar13) * 0x5555555555555555 + 0x5555555555555555U < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar15 = uVar10; + if (uVar10 < param_3) { + uVar15 = param_3; + } + uVar15 = uVar15 + uVar10; + if ((uVar10 < uVar15 || uVar10 - uVar15 == 0) && (uVar15 < 0x5555555555555556)) { + lVar13 = (long)param_2 - lVar13; + if (uVar15 == 0) { + uVar15 = 0; + puVar4 = (undefined1 *)0x0; + goto LAB_00339420; + } + uVar15 = uVar15 * 3; + } + else { + lVar13 = (long)param_2 - lVar13; + uVar15 = 0xffffffffffffffff; + } + puVar4 = operator_new(uVar15); +LAB_00339420: + puVar6 = puVar4 + lVar13; + puVar7 = puVar6 + param_3 * 3; + do { + if (puVar6 != (undefined1 *)0x0) { + *puVar6 = *(undefined1 *)param_4; + puVar6[1] = *(undefined1 *)((long)param_4 + 1); + puVar6[2] = *(undefined1 *)(param_4 + 1); + } + puVar6 = puVar6 + 3; + } while (puVar6 != puVar7); + puVar11 = (undefined2 *)*param_1; + puVar6 = puVar4; + puVar8 = puVar11; + if (param_2 != puVar11) { + do { + if (puVar6 != (undefined1 *)0x0) { + *puVar6 = *(undefined1 *)puVar8; + puVar6[1] = *(undefined1 *)((long)puVar8 + 1); + puVar6[2] = *(undefined1 *)(puVar8 + 1); + } + puVar8 = (undefined2 *)((long)puVar8 + 3); + puVar6 = puVar6 + 3; + } while (puVar8 != param_2); + puVar6 = puVar4 + ((long)param_2 - (long)puVar11); + } + puVar11 = (undefined2 *)param_1[1]; + puVar6 = puVar6 + param_3 * 3; + puVar8 = param_2; + puVar7 = puVar6; + if (param_2 != puVar11) { + do { + if (puVar7 != (undefined1 *)0x0) { + *puVar7 = *(undefined1 *)puVar8; + puVar7[1] = *(undefined1 *)((long)puVar8 + 1); + puVar7[2] = *(undefined1 *)(puVar8 + 1); + } + puVar8 = (undefined2 *)((long)puVar8 + 3); + puVar7 = puVar7 + 3; + } while (puVar8 != puVar11); + puVar6 = puVar6 + ((long)puVar8 - (long)param_2); + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)puVar4; + param_1[1] = (long)puVar6; + param_1[2] = (long)(puVar4 + uVar15); + return; +} + + +================================================================== + +### FUNC 00339558 (1692 bytes) name=FUN_00339558 + +void FUN_00339558(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined6 *param_4) + +{ + undefined4 *puVar1; + undefined2 uVar2; + undefined2 uVar3; + undefined2 uVar4; + long lVar5; + undefined4 uVar6; + undefined6 uVar7; + undefined6 uVar8; + undefined4 uVar9; + undefined4 uVar10; + undefined6 uVar11; + undefined6 uVar12; + undefined4 uVar13; + undefined8 *puVar14; + undefined2 *puVar15; + ulong uVar16; + long lVar17; + undefined2 *puVar18; + undefined2 *puVar19; + undefined8 *puVar20; + undefined8 *puVar21; + undefined8 *puVar22; + undefined8 *puVar23; + ulong uVar24; + ulong uVar25; + long lVar26; + + if (param_3 == 0) { + return; + } + puVar21 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar21 >> 1) * -0x5555555555555555)) { + lVar26 = (long)puVar21 - (long)param_2; + uVar2 = *(undefined2 *)param_4; + puVar1 = (undefined4 *)((long)param_4 + 2); + uVar3 = *(undefined2 *)puVar1; + uVar4 = *(undefined2 *)((long)param_4 + 4); + uVar13 = *puVar1; + uVar12 = *param_4; + uVar11 = *param_4; + uVar10 = *puVar1; + uVar9 = *puVar1; + uVar8 = *param_4; + uVar7 = *param_4; + uVar6 = *puVar1; + if (param_3 < (ulong)((lVar26 >> 1) * -0x5555555555555555)) { + puVar23 = (undefined8 *)((long)puVar21 + param_3 * -6); + puVar20 = puVar21; + for (puVar14 = puVar23; puVar21 != puVar14; puVar14 = (undefined8 *)((long)puVar14 + 6)) { + if (puVar20 != (undefined8 *)0x0) { + *(undefined2 *)puVar20 = *(undefined2 *)puVar14; + *(undefined2 *)((long)puVar20 + 2) = *(undefined2 *)((long)puVar14 + 2); + *(undefined2 *)((long)puVar20 + 4) = *(undefined2 *)((long)puVar14 + 4); + } + puVar20 = (undefined8 *)((long)puVar20 + 6); + } + param_1[1] = (long)puVar21 + param_3 * 6; + puVar14 = puVar21; + puVar20 = puVar23; + if (0 < ((long)puVar23 - (long)param_2 >> 1) * -0x5555555555555555) { + do { + puVar22 = (undefined8 *)((long)puVar14 + -6); + *(undefined4 *)puVar22 = *(undefined4 *)((long)puVar20 + -6); + *(undefined2 *)((long)puVar14 + -2) = *(undefined2 *)((long)puVar20 + -2); + puVar14 = puVar22; + puVar20 = (undefined8 *)((long)puVar20 + -6); + } while (puVar22 != (undefined8 *)((long)puVar21 - ((long)puVar23 - (long)param_2))); + } + puVar21 = (undefined8 *)((long)param_2 + param_3 * 6); + if (param_2 != puVar21) { + uVar16 = ((ulong)((long)puVar21 - ((long)param_2 + 6)) >> 1) * 0x2aaaaaaaaaaaaaab & + 0x7fffffffffffffff; + uVar25 = (uVar16 - 7 >> 3) + 1; + if (6 < uVar16) { + uVar24 = 0; + puVar14 = param_2; + do { + uVar24 = uVar24 + 1; + puVar14[1] = CONCAT26(uVar3,CONCAT24(uVar2,uVar9)); + *puVar14 = CONCAT26(uVar2,uVar8); + puVar14[3] = CONCAT26(uVar2,uVar7); + puVar14[2] = CONCAT26(uVar4,CONCAT24(uVar3,CONCAT22(uVar2,uVar4))); + puVar14[5] = CONCAT26(uVar4,CONCAT24(uVar3,CONCAT22(uVar2,uVar4))); + puVar14[4] = CONCAT26(uVar3,CONCAT24(uVar2,uVar6)); + puVar14 = puVar14 + 6; + } while (uVar24 < uVar25); + param_2 = param_2 + uVar25 * 6; + if (uVar16 + 1 == uVar25 * 8) { + return; + } + } + *(undefined2 *)param_2 = uVar2; + *(undefined2 *)((long)param_2 + 2) = uVar3; + *(undefined2 *)((long)param_2 + 4) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 6)) { + *(undefined2 *)((long)param_2 + 6) = uVar2; + *(undefined2 *)(param_2 + 1) = uVar3; + *(undefined2 *)((long)param_2 + 10) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0xc)) { + *(undefined2 *)((long)param_2 + 0xc) = uVar2; + *(undefined2 *)((long)param_2 + 0xe) = uVar3; + *(undefined2 *)(param_2 + 2) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0x12)) { + *(undefined2 *)((long)param_2 + 0x12) = uVar2; + *(undefined2 *)((long)param_2 + 0x14) = uVar3; + *(undefined2 *)((long)param_2 + 0x16) = uVar4; + if (puVar21 != param_2 + 3) { + *(undefined2 *)(param_2 + 3) = uVar2; + *(undefined2 *)((long)param_2 + 0x1a) = uVar3; + *(undefined2 *)((long)param_2 + 0x1c) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0x1e)) { + *(undefined2 *)((long)param_2 + 0x1e) = uVar2; + *(undefined2 *)(param_2 + 4) = uVar3; + *(undefined2 *)((long)param_2 + 0x22) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0x24)) { +LAB_003399e4: + *(undefined2 *)((long)param_2 + 0x24) = uVar2; + *(undefined2 *)((long)param_2 + 0x26) = uVar3; + *(undefined2 *)(param_2 + 5) = uVar4; + return; + } + } + } + } + } + } + } + } + else { + lVar17 = param_3 + (lVar26 >> 1) * 0x5555555555555555; + puVar14 = puVar21; + for (lVar5 = lVar17; lVar5 != 0; lVar5 = lVar5 + -1) { + if (puVar14 != (undefined8 *)0x0) { + *(undefined2 *)puVar14 = uVar2; + *(undefined2 *)((long)puVar14 + 2) = uVar3; + *(undefined2 *)((long)puVar14 + 4) = uVar4; + } + puVar14 = (undefined8 *)((long)puVar14 + 6); + } + puVar19 = (undefined2 *)((long)puVar21 + lVar17 * 6); + param_1[1] = puVar19; + puVar15 = puVar19; + puVar14 = param_2; + if (puVar21 == param_2) { + param_1[1] = (long)puVar19 + lVar26; + } + else { + do { + if (puVar15 != (undefined2 *)0x0) { + *puVar15 = *(undefined2 *)puVar14; + puVar15[1] = *(undefined2 *)((long)puVar14 + 2); + puVar15[2] = *(undefined2 *)((long)puVar14 + 4); + } + puVar14 = (undefined8 *)((long)puVar14 + 6); + puVar15 = puVar15 + 3; + } while (puVar21 != puVar14); + param_1[1] = (long)puVar19 + lVar26; + uVar16 = ((ulong)((long)puVar21 - ((long)param_2 + 6)) >> 1) * 0x2aaaaaaaaaaaaaab & + 0x7fffffffffffffff; + uVar25 = (uVar16 - 7 >> 3) + 1; + if (6 < uVar16) { + uVar24 = 0; + puVar14 = param_2; + do { + uVar24 = uVar24 + 1; + puVar14[1] = CONCAT26(uVar3,CONCAT24(uVar2,uVar13)); + *puVar14 = CONCAT26(uVar2,uVar12); + puVar14[3] = CONCAT26(uVar2,uVar11); + puVar14[2] = CONCAT26(uVar4,CONCAT24(uVar3,CONCAT22(uVar2,uVar4))); + puVar14[5] = CONCAT26(uVar4,CONCAT24(uVar3,CONCAT22(uVar2,uVar4))); + puVar14[4] = CONCAT26(uVar3,CONCAT24(uVar2,uVar10)); + puVar14 = puVar14 + 6; + } while (uVar24 < uVar25); + param_2 = param_2 + uVar25 * 6; + if (uVar25 * 8 - (uVar16 + 1) == 0) { + return; + } + } + *(undefined2 *)param_2 = uVar2; + *(undefined2 *)((long)param_2 + 2) = uVar3; + *(undefined2 *)((long)param_2 + 4) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 6)) { + *(undefined2 *)((long)param_2 + 6) = uVar2; + *(undefined2 *)(param_2 + 1) = uVar3; + *(undefined2 *)((long)param_2 + 10) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0xc)) { + *(undefined2 *)((long)param_2 + 0xc) = uVar2; + *(undefined2 *)((long)param_2 + 0xe) = uVar3; + *(undefined2 *)(param_2 + 2) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0x12)) { + *(undefined2 *)((long)param_2 + 0x12) = uVar2; + *(undefined2 *)((long)param_2 + 0x14) = uVar3; + *(undefined2 *)((long)param_2 + 0x16) = uVar4; + if (puVar21 != param_2 + 3) { + *(undefined2 *)(param_2 + 3) = uVar2; + *(undefined2 *)((long)param_2 + 0x1a) = uVar3; + *(undefined2 *)((long)param_2 + 0x1c) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0x1e)) { + *(undefined2 *)((long)param_2 + 0x1e) = uVar2; + *(undefined2 *)(param_2 + 4) = uVar3; + *(undefined2 *)((long)param_2 + 0x22) = uVar4; + if (puVar21 != (undefined8 *)((long)param_2 + 0x24)) goto LAB_003399e4; + } + } + } + } + } + } + } + return; + } + puVar14 = (undefined8 *)*param_1; + lVar26 = (long)puVar21 - (long)puVar14 >> 1; + uVar25 = lVar26 * -0x5555555555555555; + if (lVar26 * 0x5555555555555555 + 0x2aaaaaaaaaaaaaaaU < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar16 = uVar25; + if (uVar25 < param_3) { + uVar16 = param_3; + } + uVar16 = uVar16 + uVar25; + if ((uVar25 < uVar16 || uVar25 - uVar16 == 0) && (uVar16 < 0x2aaaaaaaaaaaaaab)) { + lVar26 = (long)param_2 - (long)puVar14; + if (uVar16 == 0) { + uVar16 = 0; + puVar15 = (undefined2 *)0x0; + goto LAB_00339a88; + } + uVar16 = uVar16 * 6; + } + else { + lVar26 = (long)param_2 - (long)puVar14; + uVar16 = 0xfffffffffffffffc; + } + puVar15 = operator_new(uVar16); + puVar21 = (undefined8 *)param_1[1]; + puVar14 = (undefined8 *)*param_1; +LAB_00339a88: + puVar19 = (undefined2 *)((long)puVar15 + lVar26); + uVar25 = param_3; + do { + if (puVar19 != (undefined2 *)0x0) { + *puVar19 = *(undefined2 *)param_4; + puVar19[1] = *(undefined2 *)((long)param_4 + 2); + puVar19[2] = *(undefined2 *)((long)param_4 + 4); + } + uVar25 = uVar25 - 1; + puVar19 = puVar19 + 3; + } while (uVar25 != 0); + puVar19 = puVar15; + puVar20 = puVar14; + if (param_2 != puVar14) { + do { + if (puVar19 != (undefined2 *)0x0) { + *puVar19 = *(undefined2 *)puVar20; + puVar19[1] = *(undefined2 *)((long)puVar20 + 2); + puVar19[2] = *(undefined2 *)((long)puVar20 + 4); + } + puVar20 = (undefined8 *)((long)puVar20 + 6); + puVar19 = puVar19 + 3; + } while (param_2 != puVar20); + puVar19 = puVar15 + ((((ulong)((long)param_2 - ((long)puVar14 + 6)) >> 1) * 0x2aaaaaaaaaaaaaab & + 0x7fffffffffffffff) + 1) * 3; + } + puVar19 = puVar19 + param_3 * 3; + puVar18 = puVar19; + puVar20 = param_2; + if (param_2 != puVar21) { + do { + if (puVar18 != (undefined2 *)0x0) { + *puVar18 = *(undefined2 *)puVar20; + puVar18[1] = *(undefined2 *)((long)puVar20 + 2); + puVar18[2] = *(undefined2 *)((long)puVar20 + 4); + } + puVar20 = (undefined8 *)((long)puVar20 + 6); + puVar18 = puVar18 + 3; + } while (puVar21 != puVar20); + puVar19 = puVar19 + ((((ulong)((long)puVar21 - ((long)param_2 + 6)) >> 1) * 0x2aaaaaaaaaaaaaab & + 0x7fffffffffffffff) + 1) * 3; + } + if (puVar14 != (undefined8 *)0x0) { + operator_delete(puVar14); + } + *param_1 = puVar15; + param_1[1] = puVar19; + param_1[2] = (long)puVar15 + uVar16; + return; +} + + +================================================================== + +### FUNC 00339bf4 (936 bytes) name=FUN_00339bf4 + +void FUN_00339bf4(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + long lVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + ulong uVar8; + ulong uVar9; + undefined4 *puVar10; + long lVar11; + undefined4 *puVar12; + undefined8 *puVar13; + undefined4 *puVar14; + undefined8 *puVar15; + undefined8 *puVar16; + undefined8 *puVar17; + ulong uVar18; + long lVar19; + + if (param_3 == 0) { + return; + } + puVar16 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar16 >> 3)) { + lVar19 = (long)puVar16 - (long)param_2; + uVar1 = *(undefined4 *)param_4; + uVar2 = *(undefined4 *)((long)param_4 + 4); + uVar7 = *param_4; + uVar6 = *param_4; + uVar5 = *param_4; + uVar4 = *param_4; + if (param_3 < (ulong)(lVar19 >> 3)) { + puVar17 = puVar16 + -param_3; + puVar15 = puVar16; + for (puVar13 = puVar17; puVar16 != puVar13; puVar13 = puVar13 + 1) { + if (puVar15 != (undefined8 *)0x0) { + *(undefined4 *)puVar15 = *(undefined4 *)puVar13; + *(undefined4 *)((long)puVar15 + 4) = *(undefined4 *)((long)puVar13 + 4); + } + puVar15 = puVar15 + 1; + } + param_1[1] = puVar16 + param_3; + puVar13 = (undefined8 *)((long)puVar16 - ((long)puVar17 - (long)param_2)); + if (7 < (long)puVar17 - (long)param_2) { + do { + puVar17 = puVar17 + -1; + puVar16 = puVar16 + -1; + *puVar16 = *puVar17; + } while (puVar16 != puVar13); + } + if (param_2 != param_2 + param_3) { + uVar8 = (ulong)((long)(param_2 + param_3) - (long)(param_2 + 1)) >> 3; + uVar18 = (uVar8 - 1 >> 1) + 1; + if (uVar8 != 0) { + uVar9 = 0; + puVar16 = param_2; + do { + puVar16[1] = uVar5; + *puVar16 = uVar4; + uVar9 = uVar9 + 1; + puVar16 = puVar16 + 2; + } while (uVar9 < uVar18); + param_2 = param_2 + uVar18 * 2; + if (uVar8 + 1 == uVar18 * 2) { + return; + } + } +LAB_00339df0: + *(undefined4 *)param_2 = uVar1; + *(undefined4 *)((long)param_2 + 4) = uVar2; + return; + } + } + else { + lVar11 = param_3 - (lVar19 >> 3); + puVar13 = puVar16; + for (lVar3 = lVar11; lVar3 != 0; lVar3 = lVar3 + -1) { + if (puVar13 != (undefined8 *)0x0) { + *(undefined4 *)puVar13 = uVar1; + *(undefined4 *)((long)puVar13 + 4) = uVar2; + } + puVar13 = puVar13 + 1; + } + puVar17 = puVar16 + lVar11; + param_1[1] = puVar17; + puVar15 = puVar17; + puVar13 = param_2; + if (puVar16 != param_2) { + do { + if (puVar15 != (undefined8 *)0x0) { + *(undefined4 *)puVar15 = *(undefined4 *)puVar13; + *(undefined4 *)((long)puVar15 + 4) = *(undefined4 *)((long)puVar13 + 4); + } + puVar13 = puVar13 + 1; + puVar15 = puVar15 + 1; + } while (puVar16 != puVar13); + param_1[1] = (long)puVar17 + lVar19; + uVar8 = (ulong)((long)puVar16 - (long)(param_2 + 1)) >> 3; + uVar18 = (uVar8 - 1 >> 1) + 1; + if (uVar8 != 0) { + uVar9 = 0; + puVar16 = param_2; + do { + puVar16[1] = uVar7; + *puVar16 = uVar6; + uVar9 = uVar9 + 1; + puVar16 = puVar16 + 2; + } while (uVar9 < uVar18); + param_2 = param_2 + uVar18 * 2; + if (uVar18 * 2 - (uVar8 + 1) == 0) { + return; + } + } + goto LAB_00339df0; + } + param_1[1] = (long)puVar17 + lVar19; + } + return; + } + puVar13 = (undefined8 *)*param_1; + uVar18 = (long)puVar16 - (long)puVar13 >> 3; + if (0x1fffffffffffffff - uVar18 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar8 = uVar18; + if (uVar18 < param_3) { + uVar8 = param_3; + } + uVar8 = uVar8 + uVar18; + if ((uVar8 < uVar18) || (0x1fffffffffffffff < uVar8)) { + lVar19 = (long)param_2 - (long)puVar13; + uVar8 = 0xfffffffffffffff8; + } + else { + lVar19 = (long)param_2 - (long)puVar13; + if (uVar8 == 0) { + uVar8 = 0; + puVar10 = (undefined4 *)0x0; + goto LAB_00339e88; + } + uVar8 = uVar8 * 8; + } + puVar10 = operator_new(uVar8); + puVar16 = (undefined8 *)param_1[1]; + puVar13 = (undefined8 *)*param_1; +LAB_00339e88: + puVar14 = (undefined4 *)((long)puVar10 + lVar19); + uVar18 = param_3; + do { + if (puVar14 != (undefined4 *)0x0) { + *puVar14 = *(undefined4 *)param_4; + puVar14[1] = *(undefined4 *)((long)param_4 + 4); + } + uVar18 = uVar18 - 1; + puVar14 = puVar14 + 2; + } while (uVar18 != 0); + puVar14 = puVar10; + puVar15 = puVar13; + if (param_2 != puVar13) { + do { + if (puVar14 != (undefined4 *)0x0) { + *puVar14 = *(undefined4 *)puVar15; + puVar14[1] = *(undefined4 *)((long)puVar15 + 4); + } + puVar15 = puVar15 + 1; + puVar14 = puVar14 + 2; + } while (param_2 != puVar15); + puVar14 = (undefined4 *) + ((long)puVar10 + ((long)param_2 - (long)(puVar13 + 1) & 0xfffffffffffffff8U) + 8); + } + puVar14 = puVar14 + param_3 * 2; + puVar12 = puVar14; + puVar15 = param_2; + if (param_2 != puVar16) { + do { + if (puVar12 != (undefined4 *)0x0) { + *puVar12 = *(undefined4 *)puVar15; + puVar12[1] = *(undefined4 *)((long)puVar15 + 4); + } + puVar15 = puVar15 + 1; + puVar12 = puVar12 + 2; + } while (puVar16 != puVar15); + puVar14 = (undefined4 *) + ((long)puVar14 + ((long)puVar16 - (long)(param_2 + 1) & 0xfffffffffffffff8U) + 8); + } + if (puVar13 != (undefined8 *)0x0) { + operator_delete(puVar13); + } + *param_1 = puVar10; + param_1[1] = puVar14; + param_1[2] = (long)puVar10 + uVar8; + return; +} + + +================================================================== + +### FUNC 00339f9c (1408 bytes) name=FUN_00339f9c + +void FUN_00339f9c(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + long lVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 *puVar13; + undefined4 *puVar14; + ulong uVar15; + long lVar16; + undefined4 *puVar17; + undefined4 *puVar18; + undefined8 *puVar19; + undefined8 *puVar20; + undefined8 *puVar21; + undefined8 *puVar22; + ulong uVar23; + ulong uVar24; + long lVar25; + + if (param_3 == 0) { + return; + } + puVar20 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar20 >> 2) * -0x5555555555555555)) { + lVar25 = (long)puVar20 - (long)param_2; + uVar1 = *(undefined4 *)param_4; + puVar13 = (undefined8 *)((long)param_4 + 4); + uVar2 = *(undefined4 *)puVar13; + uVar12 = *param_4; + uVar11 = *param_4; + uVar8 = *param_4; + uVar7 = *param_4; + uVar3 = *(undefined4 *)(param_4 + 1); + uVar10 = *puVar13; + uVar9 = *puVar13; + uVar6 = *puVar13; + uVar5 = *puVar13; + if (param_3 < (ulong)((lVar25 >> 2) * -0x5555555555555555)) { + puVar22 = (undefined8 *)((long)puVar20 + param_3 * -0xc); + puVar19 = puVar20; + for (puVar13 = puVar22; puVar20 != puVar13; puVar13 = (undefined8 *)((long)puVar13 + 0xc)) { + if (puVar19 != (undefined8 *)0x0) { + *(undefined4 *)puVar19 = *(undefined4 *)puVar13; + *(undefined4 *)((long)puVar19 + 4) = *(undefined4 *)((long)puVar13 + 4); + *(undefined4 *)(puVar19 + 1) = *(undefined4 *)(puVar13 + 1); + } + puVar19 = (undefined8 *)((long)puVar19 + 0xc); + } + param_1[1] = (undefined4 *)((long)puVar20 + param_3 * 0xc); + puVar13 = puVar20; + puVar19 = puVar22; + if (0 < ((long)puVar22 - (long)param_2 >> 2) * -0x5555555555555555) { + do { + puVar21 = (undefined8 *)((long)puVar13 + -0xc); + *puVar21 = *(undefined8 *)((long)puVar19 + -0xc); + *(undefined4 *)((long)puVar13 + -4) = *(undefined4 *)((long)puVar19 + -4); + puVar13 = puVar21; + puVar19 = (undefined8 *)((long)puVar19 + -0xc); + } while (puVar21 != (undefined8 *)((long)puVar20 - ((long)puVar22 - (long)param_2))); + } + puVar20 = (undefined8 *)((long)param_2 + param_3 * 0xc); + if (param_2 != puVar20) { + uVar15 = ((ulong)((long)puVar20 - (long)((long)param_2 + 0xc)) >> 2) * 0x2aaaaaaaaaaaaaab & + 0x3fffffffffffffff; + uVar24 = (uVar15 - 3 >> 2) + 1; + if (2 < uVar15) { + uVar23 = 0; + puVar13 = param_2; + do { + uVar23 = uVar23 + 1; + puVar13[1] = CONCAT44(uVar1,uVar3); + *puVar13 = uVar8; + puVar13[3] = uVar7; + puVar13[2] = uVar6; + puVar13[5] = uVar5; + puVar13[4] = CONCAT44(uVar1,uVar3); + puVar13 = puVar13 + 6; + } while (uVar23 < uVar24); + param_2 = param_2 + uVar24 * 6; + if (uVar15 + 1 == uVar24 * 4) { + return; + } + } + *(undefined4 *)param_2 = uVar1; + *(undefined4 *)((long)param_2 + 4) = uVar2; + *(undefined4 *)(param_2 + 1) = uVar3; + if (puVar20 != (undefined8 *)((long)param_2 + 0xc)) { + *(undefined4 *)((long)param_2 + 0xc) = uVar1; + *(undefined4 *)(param_2 + 2) = uVar2; + *(undefined4 *)((long)param_2 + 0x14) = uVar3; + if (puVar20 != param_2 + 3) { +LAB_0033a308: + *(undefined4 *)(param_2 + 3) = uVar1; + *(undefined4 *)((long)param_2 + 0x1c) = uVar2; + *(undefined4 *)(param_2 + 4) = uVar3; + return; + } + } + } + } + else { + lVar16 = param_3 + (lVar25 >> 2) * 0x5555555555555555; + puVar13 = puVar20; + for (lVar4 = lVar16; lVar4 != 0; lVar4 = lVar4 + -1) { + if (puVar13 != (undefined8 *)0x0) { + *(undefined4 *)puVar13 = uVar1; + *(undefined4 *)((long)puVar13 + 4) = uVar2; + *(undefined4 *)(puVar13 + 1) = uVar3; + } + puVar13 = (undefined8 *)((long)puVar13 + 0xc); + } + puVar18 = (undefined4 *)((long)puVar20 + lVar16 * 0xc); + param_1[1] = puVar18; + puVar14 = puVar18; + puVar13 = param_2; + if (puVar20 == param_2) { + param_1[1] = (long)puVar18 + lVar25; + } + else { + do { + if (puVar14 != (undefined4 *)0x0) { + *puVar14 = *(undefined4 *)puVar13; + puVar14[1] = *(undefined4 *)((long)puVar13 + 4); + puVar14[2] = *(undefined4 *)(puVar13 + 1); + } + puVar13 = (undefined8 *)((long)puVar13 + 0xc); + puVar14 = puVar14 + 3; + } while (puVar20 != puVar13); + param_1[1] = (long)puVar18 + lVar25; + uVar15 = ((ulong)((long)puVar20 - (long)((long)param_2 + 0xc)) >> 2) * 0x2aaaaaaaaaaaaaab & + 0x3fffffffffffffff; + uVar24 = (uVar15 - 3 >> 2) + 1; + if (2 < uVar15) { + uVar23 = 0; + puVar13 = param_2; + do { + uVar23 = uVar23 + 1; + puVar13[1] = CONCAT44(uVar1,uVar3); + *puVar13 = uVar12; + puVar13[3] = uVar11; + puVar13[2] = uVar10; + puVar13[5] = uVar9; + puVar13[4] = CONCAT44(uVar1,uVar3); + puVar13 = puVar13 + 6; + } while (uVar23 < uVar24); + param_2 = param_2 + uVar24 * 6; + if (uVar24 * 4 - (uVar15 + 1) == 0) { + return; + } + } + *(undefined4 *)param_2 = uVar1; + *(undefined4 *)((long)param_2 + 4) = uVar2; + *(undefined4 *)(param_2 + 1) = uVar3; + if (puVar20 != (undefined8 *)((long)param_2 + 0xc)) { + *(undefined4 *)((long)param_2 + 0xc) = uVar1; + *(undefined4 *)(param_2 + 2) = uVar2; + *(undefined4 *)((long)param_2 + 0x14) = uVar3; + if (puVar20 != param_2 + 3) goto LAB_0033a308; + } + } + } + return; + } + puVar13 = (undefined8 *)*param_1; + lVar25 = (long)puVar20 - (long)puVar13 >> 2; + uVar24 = lVar25 * -0x5555555555555555; + if (lVar25 * 0x5555555555555555 + 0x1555555555555555U < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar15 = uVar24; + if (uVar24 < param_3) { + uVar15 = param_3; + } + uVar15 = uVar15 + uVar24; + if ((uVar24 < uVar15 || uVar24 - uVar15 == 0) && (uVar15 < 0x1555555555555556)) { + lVar25 = (long)param_2 - (long)puVar13; + if (uVar15 == 0) { + uVar15 = 0; + puVar14 = (undefined4 *)0x0; + goto LAB_0033a3b0; + } + uVar15 = uVar15 * 0xc; + } + else { + lVar25 = (long)param_2 - (long)puVar13; + uVar15 = 0xfffffffffffffffc; + } + puVar14 = operator_new(uVar15); + puVar20 = (undefined8 *)param_1[1]; + puVar13 = (undefined8 *)*param_1; +LAB_0033a3b0: + puVar18 = (undefined4 *)((long)puVar14 + lVar25); + uVar24 = param_3; + do { + if (puVar18 != (undefined4 *)0x0) { + *puVar18 = *(undefined4 *)param_4; + puVar18[1] = *(undefined4 *)((long)param_4 + 4); + puVar18[2] = *(undefined4 *)(param_4 + 1); + } + uVar24 = uVar24 - 1; + puVar18 = puVar18 + 3; + } while (uVar24 != 0); + puVar18 = puVar14; + puVar19 = puVar13; + if (param_2 != puVar13) { + do { + if (puVar18 != (undefined4 *)0x0) { + *puVar18 = *(undefined4 *)puVar19; + puVar18[1] = *(undefined4 *)((long)puVar19 + 4); + puVar18[2] = *(undefined4 *)(puVar19 + 1); + } + puVar19 = (undefined8 *)((long)puVar19 + 0xc); + puVar18 = puVar18 + 3; + } while (param_2 != puVar19); + puVar18 = puVar14 + ((((ulong)((long)param_2 - (long)((long)puVar13 + 0xc)) >> 2) * + 0x2aaaaaaaaaaaaaab & 0x3fffffffffffffff) + 1) * 3; + } + puVar18 = puVar18 + param_3 * 3; + puVar17 = puVar18; + puVar19 = param_2; + if (param_2 != puVar20) { + do { + if (puVar17 != (undefined4 *)0x0) { + *puVar17 = *(undefined4 *)puVar19; + puVar17[1] = *(undefined4 *)((long)puVar19 + 4); + puVar17[2] = *(undefined4 *)(puVar19 + 1); + } + puVar19 = (undefined8 *)((long)puVar19 + 0xc); + puVar17 = puVar17 + 3; + } while (puVar20 != puVar19); + puVar18 = puVar18 + ((((ulong)((long)puVar20 - (long)((long)param_2 + 0xc)) >> 2) * + 0x2aaaaaaaaaaaaaab & 0x3fffffffffffffff) + 1) * 3; + } + if (puVar13 != (undefined8 *)0x0) { + operator_delete(puVar13); + } + *param_1 = puVar14; + param_1[1] = puVar18; + param_1[2] = (long)puVar14 + uVar15; + return; +} + + +================================================================== + +### FUNC 0033a51c (884 bytes) name=FUN_0033a51c + +void FUN_0033a51c(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + long lVar4; + long lVar5; + undefined8 *puVar6; + undefined4 *puVar7; + undefined8 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined8 *puVar11; + ulong uVar12; + undefined8 *puVar13; + long lVar14; + ulong uVar15; + + if (param_3 == 0) { + return; + } + puVar11 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar11 >> 4)) { + lVar14 = (long)puVar11 - (long)param_2; + uVar1 = *param_4; + uVar2 = param_4[1]; + if (param_3 < (ulong)(lVar14 >> 4)) { + puVar13 = puVar11 + param_3 * -2; + puVar8 = puVar11; + for (puVar6 = puVar13; puVar11 != puVar6; puVar6 = puVar6 + 2) { + if (puVar8 != (undefined8 *)0x0) { + *(undefined4 *)puVar8 = *(undefined4 *)puVar6; + *(undefined4 *)((long)puVar8 + 4) = *(undefined4 *)((long)puVar6 + 4); + *(undefined4 *)(puVar8 + 1) = *(undefined4 *)(puVar6 + 1); + *(undefined4 *)((long)puVar8 + 0xc) = *(undefined4 *)((long)puVar6 + 0xc); + } + puVar8 = puVar8 + 2; + } + param_1[1] = puVar11 + param_3 * 2; + puVar6 = puVar13; + if (0xf < (long)puVar13 - (long)param_2) { + do { + puVar8 = puVar6 + -2; + uVar3 = puVar6[-1]; + puVar11[-2] = *puVar8; + puVar11[-1] = uVar3; + puVar11 = puVar11 + -2; + puVar6 = puVar8; + } while (puVar8 != (undefined8 *)((long)puVar13 - ((long)puVar13 - (long)param_2))); + } + puVar11 = param_2 + param_3 * 2; + for (; param_2 != puVar11; param_2 = param_2 + 2) { + *param_2 = uVar1; + param_2[1] = uVar2; + } + return; + } + lVar5 = param_3 - (lVar14 >> 4); + puVar6 = puVar11; + for (lVar4 = lVar5; lVar4 != 0; lVar4 = lVar4 + -1) { + if (puVar6 != (undefined8 *)0x0) { + puVar6[1] = uVar2; + *puVar6 = uVar1; + } + puVar6 = puVar6 + 2; + } + puVar13 = puVar11 + lVar5 * 2; + param_1[1] = puVar13; + puVar8 = puVar13; + puVar6 = param_2; + if (puVar11 == param_2) { + param_1[1] = (long)puVar13 + lVar14; + return; + } + do { + if (puVar8 != (undefined8 *)0x0) { + *(undefined4 *)puVar8 = *(undefined4 *)puVar6; + *(undefined4 *)((long)puVar8 + 4) = *(undefined4 *)((long)puVar6 + 4); + *(undefined4 *)(puVar8 + 1) = *(undefined4 *)(puVar6 + 1); + *(undefined4 *)((long)puVar8 + 0xc) = *(undefined4 *)((long)puVar6 + 0xc); + } + puVar6 = puVar6 + 2; + puVar8 = puVar8 + 2; + } while (puVar11 != puVar6); + param_1[1] = (long)puVar13 + lVar14; + do { + puVar6 = param_2 + 2; + *param_2 = uVar1; + param_2[1] = uVar2; + param_2 = puVar6; + } while (puVar11 != puVar6); + return; + } + puVar6 = (undefined8 *)*param_1; + uVar12 = (long)puVar11 - (long)puVar6 >> 4; + if (0xfffffffffffffff - uVar12 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar15 = uVar12; + if (uVar12 < param_3) { + uVar15 = param_3; + } + uVar15 = uVar15 + uVar12; + if ((uVar15 < uVar12) || (0xfffffffffffffff < uVar15)) { + lVar14 = (long)param_2 - (long)puVar6; + uVar15 = 0xfffffffffffffff0; + } + else { + lVar14 = (long)param_2 - (long)puVar6; + if (uVar15 == 0) { + uVar15 = 0; + puVar7 = (undefined4 *)0x0; + goto LAB_0033a74c; + } + uVar15 = uVar15 * 0x10; + } + puVar7 = operator_new(uVar15); + puVar11 = (undefined8 *)param_1[1]; + puVar6 = (undefined8 *)*param_1; +LAB_0033a74c: + puVar9 = (undefined4 *)((long)puVar7 + lVar14); + uVar12 = param_3; + do { + if (puVar9 != (undefined4 *)0x0) { + *puVar9 = *(undefined4 *)param_4; + puVar9[1] = *(undefined4 *)((long)param_4 + 4); + puVar9[2] = *(undefined4 *)(param_4 + 1); + puVar9[3] = *(undefined4 *)((long)param_4 + 0xc); + } + uVar12 = uVar12 - 1; + puVar9 = puVar9 + 4; + } while (uVar12 != 0); + puVar9 = puVar7; + puVar8 = puVar6; + if (param_2 != puVar6) { + do { + if (puVar9 != (undefined4 *)0x0) { + *puVar9 = *(undefined4 *)puVar8; + puVar9[1] = *(undefined4 *)((long)puVar8 + 4); + puVar9[2] = *(undefined4 *)(puVar8 + 1); + puVar9[3] = *(undefined4 *)((long)puVar8 + 0xc); + } + puVar8 = puVar8 + 2; + puVar9 = puVar9 + 4; + } while (param_2 != puVar8); + puVar9 = (undefined4 *) + ((long)puVar7 + ((long)param_2 - (long)(puVar6 + 2) & 0xfffffffffffffff0U) + 0x10); + } + puVar9 = puVar9 + param_3 * 4; + puVar8 = param_2; + puVar10 = puVar9; + if (param_2 != puVar11) { + do { + if (puVar10 != (undefined4 *)0x0) { + *puVar10 = *(undefined4 *)puVar8; + puVar10[1] = *(undefined4 *)((long)puVar8 + 4); + puVar10[2] = *(undefined4 *)(puVar8 + 1); + puVar10[3] = *(undefined4 *)((long)puVar8 + 0xc); + } + puVar8 = puVar8 + 2; + puVar10 = puVar10 + 4; + } while (puVar8 != puVar11); + puVar9 = (undefined4 *) + ((long)puVar9 + ((long)puVar8 - (long)(param_2 + 2) & 0xfffffffffffffff0U) + 0x10); + } + if (puVar6 != (undefined8 *)0x0) { + operator_delete(puVar6); + } + *param_1 = puVar7; + param_1[1] = puVar9; + param_1[2] = (long)puVar7 + uVar15; + return; +} + + +================================================================== + +### FUNC 0033a890 (1172 bytes) name=FUN_0033a890 + +void FUN_0033a890(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + long lVar4; + long lVar5; + undefined8 *puVar6; + undefined4 *puVar7; + undefined8 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined8 *puVar11; + undefined8 *puVar12; + undefined8 uVar13; + undefined8 *puVar14; + ulong uVar15; + long lVar16; + ulong uVar17; + + if (param_3 == 0) { + return; + } + puVar11 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar11 >> 3) * -0x5555555555555555)) { + lVar16 = (long)puVar11 - (long)param_2; + uVar13 = param_4[2]; + uVar1 = *param_4; + uVar2 = param_4[1]; + if (param_3 < (ulong)((lVar16 >> 3) * -0x5555555555555555)) { + puVar14 = puVar11 + param_3 * -3; + puVar8 = puVar11; + for (puVar6 = puVar14; puVar11 != puVar6; puVar6 = puVar6 + 3) { + if (puVar8 != (undefined8 *)0x0) { + *(undefined4 *)puVar8 = *(undefined4 *)puVar6; + *(undefined4 *)((long)puVar8 + 4) = *(undefined4 *)((long)puVar6 + 4); + *(undefined4 *)(puVar8 + 1) = *(undefined4 *)(puVar6 + 1); + *(undefined4 *)((long)puVar8 + 0xc) = *(undefined4 *)((long)puVar6 + 0xc); + *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(puVar6 + 2); + *(undefined4 *)((long)puVar8 + 0x14) = *(undefined4 *)((long)puVar6 + 0x14); + } + puVar8 = puVar8 + 3; + } + param_1[1] = puVar11 + param_3 * 3; + puVar6 = puVar11; + puVar8 = puVar14; + if (0 < ((long)puVar14 - (long)param_2 >> 3) * -0x5555555555555555) { + do { + puVar12 = puVar6 + -3; + uVar3 = puVar8[-2]; + *puVar12 = puVar8[-3]; + puVar6[-2] = uVar3; + puVar6[-1] = puVar8[-1]; + puVar6 = puVar12; + puVar8 = puVar8 + -3; + } while (puVar12 != (undefined8 *)((long)puVar11 - ((long)puVar14 - (long)param_2))); + } + puVar11 = param_2 + param_3 * 3; + for (; param_2 != puVar11; param_2 = param_2 + 3) { + param_2[2] = uVar13; + *param_2 = uVar1; + param_2[1] = uVar2; + } + return; + } + lVar5 = param_3 + (lVar16 >> 3) * 0x5555555555555555; + puVar6 = puVar11; + for (lVar4 = lVar5; lVar4 != 0; lVar4 = lVar4 + -1) { + if (puVar6 != (undefined8 *)0x0) { + *puVar6 = uVar1; + puVar6[1] = uVar2; + puVar6[2] = uVar13; + } + puVar6 = puVar6 + 3; + } + puVar14 = puVar11 + lVar5 * 3; + param_1[1] = puVar14; + puVar8 = puVar14; + puVar6 = param_2; + if (puVar11 == param_2) { + param_1[1] = (long)puVar14 + lVar16; + return; + } + do { + if (puVar8 != (undefined8 *)0x0) { + *(undefined4 *)puVar8 = *(undefined4 *)puVar6; + *(undefined4 *)((long)puVar8 + 4) = *(undefined4 *)((long)puVar6 + 4); + *(undefined4 *)(puVar8 + 1) = *(undefined4 *)(puVar6 + 1); + *(undefined4 *)((long)puVar8 + 0xc) = *(undefined4 *)((long)puVar6 + 0xc); + *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(puVar6 + 2); + *(undefined4 *)((long)puVar8 + 0x14) = *(undefined4 *)((long)puVar6 + 0x14); + } + puVar6 = puVar6 + 3; + puVar8 = puVar8 + 3; + } while (puVar11 != puVar6); + param_1[1] = (long)puVar14 + lVar16; + do { + param_2[2] = uVar13; + *param_2 = uVar1; + param_2[1] = uVar2; + param_2 = param_2 + 3; + } while (puVar11 != param_2); + return; + } + puVar6 = (undefined8 *)*param_1; + lVar16 = (long)puVar11 - (long)puVar6 >> 3; + uVar15 = lVar16 * -0x5555555555555555; + if (lVar16 * 0x5555555555555555 + 0xaaaaaaaaaaaaaaaU < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar17 = uVar15; + if (uVar15 < param_3) { + uVar17 = param_3; + } + uVar17 = uVar17 + uVar15; + if ((uVar15 < uVar17 || uVar15 - uVar17 == 0) && (uVar17 < 0xaaaaaaaaaaaaaab)) { + lVar16 = (long)param_2 - (long)puVar6; + if (uVar17 == 0) { + uVar17 = 0; + puVar7 = (undefined4 *)0x0; + goto LAB_0033ab70; + } + uVar17 = uVar17 * 0x18; + } + else { + lVar16 = (long)param_2 - (long)puVar6; + uVar17 = 0xfffffffffffffff0; + } + puVar7 = operator_new(uVar17); + puVar11 = (undefined8 *)param_1[1]; + puVar6 = (undefined8 *)*param_1; +LAB_0033ab70: + puVar9 = (undefined4 *)((long)puVar7 + lVar16); + uVar15 = param_3; + do { + if (puVar9 != (undefined4 *)0x0) { + *puVar9 = *(undefined4 *)param_4; + puVar9[1] = *(undefined4 *)((long)param_4 + 4); + puVar9[2] = *(undefined4 *)(param_4 + 1); + puVar9[3] = *(undefined4 *)((long)param_4 + 0xc); + puVar9[4] = *(undefined4 *)(param_4 + 2); + puVar9[5] = *(undefined4 *)((long)param_4 + 0x14); + } + uVar15 = uVar15 - 1; + puVar9 = puVar9 + 6; + } while (uVar15 != 0); + puVar9 = puVar7; + puVar8 = puVar6; + if (param_2 != puVar6) { + do { + if (puVar9 != (undefined4 *)0x0) { + *puVar9 = *(undefined4 *)puVar8; + puVar9[1] = *(undefined4 *)((long)puVar8 + 4); + puVar9[2] = *(undefined4 *)(puVar8 + 1); + puVar9[3] = *(undefined4 *)((long)puVar8 + 0xc); + puVar9[4] = *(undefined4 *)(puVar8 + 2); + puVar9[5] = *(undefined4 *)((long)puVar8 + 0x14); + } + puVar8 = puVar8 + 3; + puVar9 = puVar9 + 6; + } while (param_2 != puVar8); + puVar9 = puVar7 + ((((ulong)((long)param_2 - (long)(puVar6 + 3)) >> 3) * 0xaaaaaaaaaaaaaab & + 0x1fffffffffffffff) + 1) * 6; + } + puVar9 = puVar9 + param_3 * 6; + puVar8 = param_2; + puVar10 = puVar9; + if (param_2 != puVar11) { + do { + if (puVar10 != (undefined4 *)0x0) { + *puVar10 = *(undefined4 *)puVar8; + puVar10[1] = *(undefined4 *)((long)puVar8 + 4); + puVar10[2] = *(undefined4 *)(puVar8 + 1); + puVar10[3] = *(undefined4 *)((long)puVar8 + 0xc); + puVar10[4] = *(undefined4 *)(puVar8 + 2); + puVar10[5] = *(undefined4 *)((long)puVar8 + 0x14); + } + puVar8 = puVar8 + 3; + puVar10 = puVar10 + 6; + } while (puVar8 != puVar11); + puVar9 = puVar9 + ((((ulong)((long)puVar8 - (long)(param_2 + 3)) >> 3) * 0xaaaaaaaaaaaaaab & + 0x1fffffffffffffff) + 1) * 6; + } + if (puVar6 != (undefined8 *)0x0) { + operator_delete(puVar6); + } + *param_1 = puVar7; + param_1[1] = puVar9; + param_1[2] = (long)puVar7 + uVar17; + return; +} + + +================================================================== + +### FUNC 0033ad24 (1136 bytes) name=FUN_0033ad24 + +void FUN_0033ad24(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + long lVar6; + long lVar7; + undefined8 *puVar8; + undefined4 *puVar9; + undefined8 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + ulong uVar13; + undefined8 *puVar14; + undefined8 *puVar15; + undefined8 *puVar16; + long lVar17; + ulong uVar18; + + if (param_3 == 0) { + return; + } + puVar14 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar14 >> 5)) { + lVar17 = (long)puVar14 - (long)param_2; + uVar1 = *param_4; + uVar3 = param_4[1]; + uVar2 = param_4[2]; + uVar4 = param_4[3]; + if (param_3 < (ulong)(lVar17 >> 5)) { + puVar16 = puVar14 + param_3 * -4; + puVar10 = puVar14; + for (puVar8 = puVar16; puVar14 != puVar8; puVar8 = puVar8 + 4) { + if (puVar10 != (undefined8 *)0x0) { + *(undefined4 *)puVar10 = *(undefined4 *)puVar8; + *(undefined4 *)((long)puVar10 + 4) = *(undefined4 *)((long)puVar8 + 4); + *(undefined4 *)(puVar10 + 1) = *(undefined4 *)(puVar8 + 1); + *(undefined4 *)((long)puVar10 + 0xc) = *(undefined4 *)((long)puVar8 + 0xc); + *(undefined4 *)(puVar10 + 2) = *(undefined4 *)(puVar8 + 2); + *(undefined4 *)((long)puVar10 + 0x14) = *(undefined4 *)((long)puVar8 + 0x14); + *(undefined4 *)(puVar10 + 3) = *(undefined4 *)(puVar8 + 3); + *(undefined4 *)((long)puVar10 + 0x1c) = *(undefined4 *)((long)puVar8 + 0x1c); + } + puVar10 = puVar10 + 4; + } + param_1[1] = puVar14 + param_3 * 4; + puVar8 = puVar14; + puVar10 = puVar16; + if (0x1f < (long)puVar16 - (long)param_2) { + do { + uVar5 = puVar10[-3]; + puVar15 = puVar8 + -4; + *puVar15 = puVar10[-4]; + puVar8[-3] = uVar5; + uVar5 = puVar10[-1]; + puVar8[-2] = puVar10[-2]; + puVar8[-1] = uVar5; + puVar8 = puVar15; + puVar10 = puVar10 + -4; + } while (puVar15 != (undefined8 *)((long)puVar14 - ((long)puVar16 - (long)param_2))); + } + puVar14 = param_2 + param_3 * 4; + for (; param_2 != puVar14; param_2 = param_2 + 4) { + *param_2 = uVar1; + param_2[1] = uVar3; + param_2[2] = uVar2; + param_2[3] = uVar4; + } + return; + } + lVar7 = param_3 - (lVar17 >> 5); + puVar8 = puVar14; + for (lVar6 = lVar7; lVar6 != 0; lVar6 = lVar6 + -1) { + if (puVar8 != (undefined8 *)0x0) { + puVar8[1] = uVar3; + *puVar8 = uVar1; + puVar8[3] = uVar4; + puVar8[2] = uVar2; + } + puVar8 = puVar8 + 4; + } + puVar16 = puVar14 + lVar7 * 4; + param_1[1] = puVar16; + puVar10 = puVar16; + puVar8 = param_2; + if (puVar14 == param_2) { + param_1[1] = (long)puVar16 + lVar17; + return; + } + do { + if (puVar10 != (undefined8 *)0x0) { + *(undefined4 *)puVar10 = *(undefined4 *)puVar8; + *(undefined4 *)((long)puVar10 + 4) = *(undefined4 *)((long)puVar8 + 4); + *(undefined4 *)(puVar10 + 1) = *(undefined4 *)(puVar8 + 1); + *(undefined4 *)((long)puVar10 + 0xc) = *(undefined4 *)((long)puVar8 + 0xc); + *(undefined4 *)(puVar10 + 2) = *(undefined4 *)(puVar8 + 2); + *(undefined4 *)((long)puVar10 + 0x14) = *(undefined4 *)((long)puVar8 + 0x14); + *(undefined4 *)(puVar10 + 3) = *(undefined4 *)(puVar8 + 3); + *(undefined4 *)((long)puVar10 + 0x1c) = *(undefined4 *)((long)puVar8 + 0x1c); + } + puVar8 = puVar8 + 4; + puVar10 = puVar10 + 4; + } while (puVar14 != puVar8); + param_1[1] = (long)puVar16 + lVar17; + do { + puVar8 = param_2 + 4; + *param_2 = uVar1; + param_2[1] = uVar3; + param_2[2] = uVar2; + param_2[3] = uVar4; + param_2 = puVar8; + } while (puVar14 != puVar8); + return; + } + puVar8 = (undefined8 *)*param_1; + uVar13 = (long)puVar14 - (long)puVar8 >> 5; + if (0x7ffffffffffffff - uVar13 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar18 = uVar13; + if (uVar13 < param_3) { + uVar18 = param_3; + } + uVar18 = uVar18 + uVar13; + if ((uVar18 < uVar13) || (0x7ffffffffffffff < uVar18)) { + lVar17 = (long)param_2 - (long)puVar8; + uVar18 = 0xffffffffffffffe0; + } + else { + lVar17 = (long)param_2 - (long)puVar8; + if (uVar18 == 0) { + uVar18 = 0; + puVar9 = (undefined4 *)0x0; + goto LAB_0033aff0; + } + uVar18 = uVar18 * 0x20; + } + puVar9 = operator_new(uVar18); + puVar14 = (undefined8 *)param_1[1]; + puVar8 = (undefined8 *)*param_1; +LAB_0033aff0: + puVar11 = (undefined4 *)((long)puVar9 + lVar17); + uVar13 = param_3; + do { + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = *(undefined4 *)param_4; + puVar11[1] = *(undefined4 *)((long)param_4 + 4); + puVar11[2] = *(undefined4 *)(param_4 + 1); + puVar11[3] = *(undefined4 *)((long)param_4 + 0xc); + puVar11[4] = *(undefined4 *)(param_4 + 2); + puVar11[5] = *(undefined4 *)((long)param_4 + 0x14); + puVar11[6] = *(undefined4 *)(param_4 + 3); + puVar11[7] = *(undefined4 *)((long)param_4 + 0x1c); + } + uVar13 = uVar13 - 1; + puVar11 = puVar11 + 8; + } while (uVar13 != 0); + puVar11 = puVar9; + puVar10 = puVar8; + if (param_2 != puVar8) { + do { + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = *(undefined4 *)puVar10; + puVar11[1] = *(undefined4 *)((long)puVar10 + 4); + puVar11[2] = *(undefined4 *)(puVar10 + 1); + puVar11[3] = *(undefined4 *)((long)puVar10 + 0xc); + puVar11[4] = *(undefined4 *)(puVar10 + 2); + puVar11[5] = *(undefined4 *)((long)puVar10 + 0x14); + puVar11[6] = *(undefined4 *)(puVar10 + 3); + puVar11[7] = *(undefined4 *)((long)puVar10 + 0x1c); + } + puVar10 = puVar10 + 4; + puVar11 = puVar11 + 8; + } while (param_2 != puVar10); + puVar11 = (undefined4 *) + ((long)puVar9 + ((long)param_2 - (long)(puVar8 + 4) & 0xffffffffffffffe0U) + 0x20); + } + puVar11 = puVar11 + param_3 * 8; + puVar10 = param_2; + puVar12 = puVar11; + if (param_2 != puVar14) { + do { + if (puVar12 != (undefined4 *)0x0) { + *puVar12 = *(undefined4 *)puVar10; + puVar12[1] = *(undefined4 *)((long)puVar10 + 4); + puVar12[2] = *(undefined4 *)(puVar10 + 1); + puVar12[3] = *(undefined4 *)((long)puVar10 + 0xc); + puVar12[4] = *(undefined4 *)(puVar10 + 2); + puVar12[5] = *(undefined4 *)((long)puVar10 + 0x14); + puVar12[6] = *(undefined4 *)(puVar10 + 3); + puVar12[7] = *(undefined4 *)((long)puVar10 + 0x1c); + } + puVar10 = puVar10 + 4; + puVar12 = puVar12 + 8; + } while (puVar10 != puVar14); + puVar11 = (undefined4 *) + ((long)puVar11 + ((long)puVar10 - (long)(param_2 + 4) & 0xffffffffffffffe0U) + 0x20); + } + if (puVar8 != (undefined8 *)0x0) { + operator_delete(puVar8); + } + *param_1 = puVar9; + param_1[1] = puVar11; + param_1[2] = (long)puVar9 + uVar18; + return; +} + + +================================================================== + +### FUNC 0033b194 (1372 bytes) name=FUN_0033b194 + +void FUN_0033b194(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + long lVar7; + undefined8 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + undefined4 *puVar11; + undefined8 *puVar12; + undefined8 *puVar13; + undefined8 *puVar14; + ulong uVar15; + long lVar16; + long lVar17; + ulong uVar18; + undefined4 local_28; + undefined4 uStack_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 uStack_14; + undefined4 local_10; + undefined4 local_c; + + if (param_3 == 0) { + return; + } + puVar12 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar12 >> 2) * -0x71c71c71c71c71c7)) { + lVar17 = (long)puVar12 - (long)param_2; + uVar6 = *(undefined4 *)(param_4 + 4); + uVar1 = *param_4; + uVar3 = param_4[1]; + uVar2 = param_4[2]; + uVar4 = param_4[3]; + if (param_3 < (ulong)((lVar17 >> 2) * -0x71c71c71c71c71c7)) { + puVar13 = (undefined8 *)((long)puVar12 + param_3 * -0x24); + puVar14 = puVar12; + for (puVar8 = puVar13; puVar12 != puVar8; puVar8 = (undefined8 *)((long)puVar8 + 0x24)) { + if (puVar14 != (undefined8 *)0x0) { + *(undefined4 *)puVar14 = *(undefined4 *)puVar8; + *(undefined4 *)((long)puVar14 + 4) = *(undefined4 *)((long)puVar8 + 4); + *(undefined4 *)(puVar14 + 1) = *(undefined4 *)(puVar8 + 1); + *(undefined4 *)((long)puVar14 + 0xc) = *(undefined4 *)((long)puVar8 + 0xc); + *(undefined4 *)(puVar14 + 2) = *(undefined4 *)(puVar8 + 2); + *(undefined4 *)((long)puVar14 + 0x14) = *(undefined4 *)((long)puVar8 + 0x14); + *(undefined4 *)(puVar14 + 3) = *(undefined4 *)(puVar8 + 3); + *(undefined4 *)((long)puVar14 + 0x1c) = *(undefined4 *)((long)puVar8 + 0x1c); + *(undefined4 *)(puVar14 + 4) = *(undefined4 *)(puVar8 + 4); + } + puVar14 = (undefined8 *)((long)puVar14 + 0x24); + } + param_1[1] = (long)puVar12 + param_3 * 0x24; + puVar8 = puVar13; + if (0 < ((long)puVar13 - (long)param_2 >> 2) * -0x71c71c71c71c71c7) { + do { + puVar14 = (undefined8 *)((long)puVar8 + -0x24); + uVar5 = *(undefined8 *)((long)puVar8 + -0x1c); + *(undefined8 *)((long)puVar12 + -0x24) = *puVar14; + *(undefined8 *)((long)puVar12 + -0x1c) = uVar5; + uVar5 = *(undefined8 *)((long)puVar8 + -0xc); + *(undefined8 *)((long)puVar12 + -0x14) = *(undefined8 *)((long)puVar8 + -0x14); + *(undefined8 *)((long)puVar12 + -0xc) = uVar5; + *(undefined4 *)((long)puVar12 + -4) = *(undefined4 *)((long)puVar8 + -4); + puVar12 = (undefined8 *)((long)puVar12 + -0x24); + puVar8 = puVar14; + } while (puVar14 != (undefined8 *)((long)puVar13 - ((long)puVar13 - (long)param_2))); + } + puVar12 = (undefined8 *)((long)param_2 + param_3 * 0x24); + for (; param_2 != puVar12; param_2 = (undefined8 *)((long)param_2 + 0x24)) { + *(undefined4 *)(param_2 + 4) = uVar6; + *param_2 = uVar1; + param_2[1] = uVar3; + param_2[2] = uVar2; + param_2[3] = uVar4; + } + return; + } + lVar7 = param_3 + (lVar17 >> 2) * 0x71c71c71c71c71c7; + if (lVar7 != 0) { + local_28 = (undefined4)uVar1; + uStack_24 = (undefined4)((ulong)uVar1 >> 0x20); + local_20 = (undefined4)uVar3; + local_1c = (undefined4)((ulong)uVar3 >> 0x20); + local_18 = (undefined4)uVar2; + uStack_14 = (undefined4)((ulong)uVar2 >> 0x20); + local_10 = (undefined4)uVar4; + local_c = (undefined4)((ulong)uVar4 >> 0x20); + puVar8 = puVar12; + lVar16 = lVar7; + do { + if (puVar8 != (undefined8 *)0x0) { + *(undefined4 *)puVar8 = local_28; + *(undefined4 *)((long)puVar8 + 4) = uStack_24; + *(undefined4 *)(puVar8 + 1) = local_20; + *(undefined4 *)((long)puVar8 + 0xc) = local_1c; + *(undefined4 *)(puVar8 + 2) = local_18; + *(undefined4 *)((long)puVar8 + 0x14) = uStack_14; + *(undefined4 *)(puVar8 + 3) = local_10; + *(undefined4 *)((long)puVar8 + 0x1c) = local_c; + *(undefined4 *)(puVar8 + 4) = uVar6; + } + lVar16 = lVar16 + -1; + puVar8 = (undefined8 *)((long)puVar8 + 0x24); + } while (lVar16 != 0); + } + puVar10 = (undefined4 *)((long)puVar12 + lVar7 * 0x24); + param_1[1] = puVar10; + puVar9 = puVar10; + puVar8 = param_2; + if (puVar12 == param_2) { + param_1[1] = (long)puVar10 + lVar17; + return; + } + do { + if (puVar9 != (undefined4 *)0x0) { + *puVar9 = *(undefined4 *)puVar8; + puVar9[1] = *(undefined4 *)((long)puVar8 + 4); + puVar9[2] = *(undefined4 *)(puVar8 + 1); + puVar9[3] = *(undefined4 *)((long)puVar8 + 0xc); + puVar9[4] = *(undefined4 *)(puVar8 + 2); + puVar9[5] = *(undefined4 *)((long)puVar8 + 0x14); + puVar9[6] = *(undefined4 *)(puVar8 + 3); + puVar9[7] = *(undefined4 *)((long)puVar8 + 0x1c); + puVar9[8] = *(undefined4 *)(puVar8 + 4); + } + puVar8 = (undefined8 *)((long)puVar8 + 0x24); + puVar9 = puVar9 + 9; + } while (puVar12 != puVar8); + param_1[1] = (long)puVar10 + lVar17; + do { + *(undefined4 *)(param_2 + 4) = uVar6; + *param_2 = uVar1; + param_2[1] = uVar3; + param_2[2] = uVar2; + param_2[3] = uVar4; + param_2 = (undefined8 *)((long)param_2 + 0x24); + } while (puVar12 != param_2); + return; + } + puVar8 = (undefined8 *)*param_1; + lVar17 = (long)puVar12 - (long)puVar8 >> 2; + uVar15 = lVar17 * -0x71c71c71c71c71c7; + if (lVar17 * 0x71c71c71c71c71c7 + 0x71c71c71c71c71cU < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar18 = uVar15; + if (uVar15 < param_3) { + uVar18 = param_3; + } + uVar18 = uVar18 + uVar15; + if ((uVar15 < uVar18 || uVar15 - uVar18 == 0) && (uVar18 < 0x71c71c71c71c71d)) { + lVar17 = (long)param_2 - (long)puVar8; + if (uVar18 == 0) { + uVar18 = 0; + puVar9 = (undefined4 *)0x0; + goto LAB_0033b4f4; + } + uVar18 = uVar18 * 0x24; + } + else { + lVar17 = (long)param_2 - (long)puVar8; + uVar18 = 0xfffffffffffffff0; + } + puVar9 = operator_new(uVar18); + puVar12 = (undefined8 *)param_1[1]; + puVar8 = (undefined8 *)*param_1; +LAB_0033b4f4: + puVar10 = (undefined4 *)((long)puVar9 + lVar17); + uVar15 = param_3; + do { + if (puVar10 != (undefined4 *)0x0) { + *puVar10 = *(undefined4 *)param_4; + puVar10[1] = *(undefined4 *)((long)param_4 + 4); + puVar10[2] = *(undefined4 *)(param_4 + 1); + puVar10[3] = *(undefined4 *)((long)param_4 + 0xc); + puVar10[4] = *(undefined4 *)(param_4 + 2); + puVar10[5] = *(undefined4 *)((long)param_4 + 0x14); + puVar10[6] = *(undefined4 *)(param_4 + 3); + puVar10[7] = *(undefined4 *)((long)param_4 + 0x1c); + puVar10[8] = *(undefined4 *)(param_4 + 4); + } + uVar15 = uVar15 - 1; + puVar10 = puVar10 + 9; + } while (uVar15 != 0); + puVar10 = puVar9; + puVar14 = puVar8; + if (param_2 != puVar8) { + do { + if (puVar10 != (undefined4 *)0x0) { + *puVar10 = *(undefined4 *)puVar14; + puVar10[1] = *(undefined4 *)((long)puVar14 + 4); + puVar10[2] = *(undefined4 *)(puVar14 + 1); + puVar10[3] = *(undefined4 *)((long)puVar14 + 0xc); + puVar10[4] = *(undefined4 *)(puVar14 + 2); + puVar10[5] = *(undefined4 *)((long)puVar14 + 0x14); + puVar10[6] = *(undefined4 *)(puVar14 + 3); + puVar10[7] = *(undefined4 *)((long)puVar14 + 0x1c); + puVar10[8] = *(undefined4 *)(puVar14 + 4); + } + puVar14 = (undefined8 *)((long)puVar14 + 0x24); + puVar10 = puVar10 + 9; + } while (param_2 != puVar14); + puVar10 = puVar9 + ((((ulong)((long)param_2 - ((long)puVar8 + 0x24)) >> 2) * 0xe38e38e38e38e39 & + 0x3fffffffffffffff) + 1) * 9; + } + puVar10 = puVar10 + param_3 * 9; + puVar14 = param_2; + puVar11 = puVar10; + if (param_2 != puVar12) { + do { + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = *(undefined4 *)puVar14; + puVar11[1] = *(undefined4 *)((long)puVar14 + 4); + puVar11[2] = *(undefined4 *)(puVar14 + 1); + puVar11[3] = *(undefined4 *)((long)puVar14 + 0xc); + puVar11[4] = *(undefined4 *)(puVar14 + 2); + puVar11[5] = *(undefined4 *)((long)puVar14 + 0x14); + puVar11[6] = *(undefined4 *)(puVar14 + 3); + puVar11[7] = *(undefined4 *)((long)puVar14 + 0x1c); + puVar11[8] = *(undefined4 *)(puVar14 + 4); + } + puVar14 = (undefined8 *)((long)puVar14 + 0x24); + puVar11 = puVar11 + 9; + } while (puVar14 != puVar12); + puVar10 = puVar10 + ((((ulong)((long)puVar14 - ((long)param_2 + 0x24)) >> 2) * 0xe38e38e38e38e39 + & 0x3fffffffffffffff) + 1) * 9; + } + if (puVar8 != (undefined8 *)0x0) { + operator_delete(puVar8); + } + *param_1 = puVar9; + param_1[1] = puVar10; + param_1[2] = (long)puVar9 + uVar18; + return; +} + + +================================================================== + +### FUNC 0033b6f0 (1496 bytes) name=FUN_0033b6f0 + +void FUN_0033b6f0(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + long lVar8; + long lVar9; + undefined8 *puVar10; + undefined4 *puVar11; + undefined8 *puVar12; + undefined4 *puVar13; + undefined4 *puVar14; + undefined8 *puVar15; + undefined8 *puVar16; + ulong uVar17; + ulong uVar18; + long lVar19; + + if (param_3 == 0) { + return; + } + puVar16 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)((param_1[2] - (long)puVar16 >> 4) * -0x5555555555555555)) { + lVar19 = (long)puVar16 - (long)param_2; + uVar1 = *param_4; + uVar4 = param_4[1]; + uVar2 = param_4[2]; + uVar5 = param_4[3]; + uVar3 = param_4[4]; + uVar6 = param_4[5]; + if (param_3 < (ulong)((lVar19 >> 4) * -0x5555555555555555)) { + puVar15 = puVar16 + param_3 * -6; + puVar12 = puVar16; + for (puVar10 = puVar15; puVar16 != puVar10; puVar10 = puVar10 + 6) { + if (puVar12 != (undefined8 *)0x0) { + *(undefined4 *)puVar12 = *(undefined4 *)puVar10; + *(undefined4 *)((long)puVar12 + 4) = *(undefined4 *)((long)puVar10 + 4); + *(undefined4 *)(puVar12 + 1) = *(undefined4 *)(puVar10 + 1); + *(undefined4 *)((long)puVar12 + 0xc) = *(undefined4 *)((long)puVar10 + 0xc); + *(undefined4 *)(puVar12 + 2) = *(undefined4 *)(puVar10 + 2); + *(undefined4 *)((long)puVar12 + 0x14) = *(undefined4 *)((long)puVar10 + 0x14); + *(undefined4 *)(puVar12 + 3) = *(undefined4 *)(puVar10 + 3); + *(undefined4 *)((long)puVar12 + 0x1c) = *(undefined4 *)((long)puVar10 + 0x1c); + *(undefined4 *)(puVar12 + 4) = *(undefined4 *)(puVar10 + 4); + *(undefined4 *)((long)puVar12 + 0x24) = *(undefined4 *)((long)puVar10 + 0x24); + *(undefined4 *)(puVar12 + 5) = *(undefined4 *)(puVar10 + 5); + *(undefined4 *)((long)puVar12 + 0x2c) = *(undefined4 *)((long)puVar10 + 0x2c); + } + puVar12 = puVar12 + 6; + } + param_1[1] = puVar16 + param_3 * 6; + puVar10 = puVar15; + if (0 < ((long)puVar15 - (long)param_2 >> 4) * -0x5555555555555555) { + do { + puVar12 = puVar10 + -6; + uVar7 = puVar10[-5]; + puVar16[-6] = *puVar12; + puVar16[-5] = uVar7; + uVar7 = puVar10[-3]; + puVar16[-4] = puVar10[-4]; + puVar16[-3] = uVar7; + uVar7 = puVar10[-1]; + puVar16[-2] = puVar10[-2]; + puVar16[-1] = uVar7; + puVar10 = puVar12; + puVar16 = puVar16 + -6; + } while (puVar12 != (undefined8 *)((long)puVar15 - ((long)puVar15 - (long)param_2))); + } + puVar16 = param_2 + param_3 * 6; + for (; param_2 != puVar16; param_2 = param_2 + 6) { + *param_2 = uVar1; + param_2[1] = uVar4; + param_2[2] = uVar2; + param_2[3] = uVar5; + param_2[4] = uVar3; + param_2[5] = uVar6; + } + return; + } + lVar9 = param_3 + (lVar19 >> 4) * 0x5555555555555555; + puVar10 = puVar16; + for (lVar8 = lVar9; lVar8 != 0; lVar8 = lVar8 + -1) { + if (puVar10 != (undefined8 *)0x0) { + puVar10[1] = uVar4; + *puVar10 = uVar1; + puVar10[3] = uVar5; + puVar10[2] = uVar2; + puVar10[5] = uVar6; + puVar10[4] = uVar3; + } + puVar10 = puVar10 + 6; + } + puVar15 = puVar16 + lVar9 * 6; + param_1[1] = puVar15; + puVar12 = puVar15; + puVar10 = param_2; + if (puVar16 == param_2) { + param_1[1] = (long)puVar15 + lVar19; + return; + } + do { + if (puVar12 != (undefined8 *)0x0) { + *(undefined4 *)puVar12 = *(undefined4 *)puVar10; + *(undefined4 *)((long)puVar12 + 4) = *(undefined4 *)((long)puVar10 + 4); + *(undefined4 *)(puVar12 + 1) = *(undefined4 *)(puVar10 + 1); + *(undefined4 *)((long)puVar12 + 0xc) = *(undefined4 *)((long)puVar10 + 0xc); + *(undefined4 *)(puVar12 + 2) = *(undefined4 *)(puVar10 + 2); + *(undefined4 *)((long)puVar12 + 0x14) = *(undefined4 *)((long)puVar10 + 0x14); + *(undefined4 *)(puVar12 + 3) = *(undefined4 *)(puVar10 + 3); + *(undefined4 *)((long)puVar12 + 0x1c) = *(undefined4 *)((long)puVar10 + 0x1c); + *(undefined4 *)(puVar12 + 4) = *(undefined4 *)(puVar10 + 4); + *(undefined4 *)((long)puVar12 + 0x24) = *(undefined4 *)((long)puVar10 + 0x24); + *(undefined4 *)(puVar12 + 5) = *(undefined4 *)(puVar10 + 5); + *(undefined4 *)((long)puVar12 + 0x2c) = *(undefined4 *)((long)puVar10 + 0x2c); + } + puVar10 = puVar10 + 6; + puVar12 = puVar12 + 6; + } while (puVar16 != puVar10); + param_1[1] = (long)puVar15 + lVar19; + do { + puVar10 = param_2 + 6; + *param_2 = uVar1; + param_2[1] = uVar4; + param_2[2] = uVar2; + param_2[3] = uVar5; + param_2[4] = uVar3; + param_2[5] = uVar6; + param_2 = puVar10; + } while (puVar16 != puVar10); + return; + } + puVar10 = (undefined8 *)*param_1; + lVar19 = (long)puVar16 - (long)puVar10 >> 4; + uVar17 = lVar19 * -0x5555555555555555; + if (lVar19 * 0x5555555555555555 + 0x555555555555555U < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar18 = uVar17; + if (uVar17 < param_3) { + uVar18 = param_3; + } + uVar18 = uVar18 + uVar17; + if ((uVar17 < uVar18 || uVar17 - uVar18 == 0) && (uVar18 < 0x555555555555556)) { + lVar19 = (long)param_2 - (long)puVar10; + if (uVar18 == 0) { + uVar18 = 0; + puVar11 = (undefined4 *)0x0; + goto LAB_0033ba84; + } + uVar18 = uVar18 * 0x30; + } + else { + lVar19 = (long)param_2 - (long)puVar10; + uVar18 = 0xfffffffffffffff0; + } + puVar11 = operator_new(uVar18); + puVar16 = (undefined8 *)param_1[1]; + puVar10 = (undefined8 *)*param_1; +LAB_0033ba84: + puVar13 = (undefined4 *)((long)puVar11 + lVar19); + uVar17 = param_3; + do { + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = *(undefined4 *)param_4; + puVar13[1] = *(undefined4 *)((long)param_4 + 4); + puVar13[2] = *(undefined4 *)(param_4 + 1); + puVar13[3] = *(undefined4 *)((long)param_4 + 0xc); + puVar13[4] = *(undefined4 *)(param_4 + 2); + puVar13[5] = *(undefined4 *)((long)param_4 + 0x14); + puVar13[6] = *(undefined4 *)(param_4 + 3); + puVar13[7] = *(undefined4 *)((long)param_4 + 0x1c); + puVar13[8] = *(undefined4 *)(param_4 + 4); + puVar13[9] = *(undefined4 *)((long)param_4 + 0x24); + puVar13[10] = *(undefined4 *)(param_4 + 5); + puVar13[0xb] = *(undefined4 *)((long)param_4 + 0x2c); + } + uVar17 = uVar17 - 1; + puVar13 = puVar13 + 0xc; + } while (uVar17 != 0); + puVar13 = puVar11; + puVar12 = puVar10; + if (param_2 != puVar10) { + do { + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = *(undefined4 *)puVar12; + puVar13[1] = *(undefined4 *)((long)puVar12 + 4); + puVar13[2] = *(undefined4 *)(puVar12 + 1); + puVar13[3] = *(undefined4 *)((long)puVar12 + 0xc); + puVar13[4] = *(undefined4 *)(puVar12 + 2); + puVar13[5] = *(undefined4 *)((long)puVar12 + 0x14); + puVar13[6] = *(undefined4 *)(puVar12 + 3); + puVar13[7] = *(undefined4 *)((long)puVar12 + 0x1c); + puVar13[8] = *(undefined4 *)(puVar12 + 4); + puVar13[9] = *(undefined4 *)((long)puVar12 + 0x24); + puVar13[10] = *(undefined4 *)(puVar12 + 5); + puVar13[0xb] = *(undefined4 *)((long)puVar12 + 0x2c); + } + puVar12 = puVar12 + 6; + puVar13 = puVar13 + 0xc; + } while (param_2 != puVar12); + puVar13 = puVar11 + ((((ulong)((long)param_2 - (long)(puVar10 + 6)) >> 4) * 0xaaaaaaaaaaaaaab & + 0xfffffffffffffff) + 1) * 0xc; + } + puVar13 = puVar13 + param_3 * 0xc; + puVar12 = param_2; + puVar14 = puVar13; + if (param_2 != puVar16) { + do { + if (puVar14 != (undefined4 *)0x0) { + *puVar14 = *(undefined4 *)puVar12; + puVar14[1] = *(undefined4 *)((long)puVar12 + 4); + puVar14[2] = *(undefined4 *)(puVar12 + 1); + puVar14[3] = *(undefined4 *)((long)puVar12 + 0xc); + puVar14[4] = *(undefined4 *)(puVar12 + 2); + puVar14[5] = *(undefined4 *)((long)puVar12 + 0x14); + puVar14[6] = *(undefined4 *)(puVar12 + 3); + puVar14[7] = *(undefined4 *)((long)puVar12 + 0x1c); + puVar14[8] = *(undefined4 *)(puVar12 + 4); + puVar14[9] = *(undefined4 *)((long)puVar12 + 0x24); + puVar14[10] = *(undefined4 *)(puVar12 + 5); + puVar14[0xb] = *(undefined4 *)((long)puVar12 + 0x2c); + } + puVar12 = puVar12 + 6; + puVar14 = puVar14 + 0xc; + } while (puVar12 != puVar16); + puVar13 = puVar13 + ((((ulong)((long)puVar12 - (long)(param_2 + 6)) >> 4) * 0xaaaaaaaaaaaaaab & + 0xfffffffffffffff) + 1) * 0xc; + } + if (puVar10 != (undefined8 *)0x0) { + operator_delete(puVar10); + } + *param_1 = puVar11; + param_1[1] = puVar13; + param_1[2] = (long)puVar11 + uVar18; + return; +} + + +================================================================== + +### FUNC 0033bcc8 (1628 bytes) name=FUN_0033bcc8 + +void FUN_0033bcc8(undefined8 *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + long lVar10; + long lVar11; + undefined8 *puVar12; + undefined4 *puVar13; + undefined8 *puVar14; + undefined4 *puVar15; + undefined4 *puVar16; + ulong uVar17; + undefined8 *puVar18; + undefined8 *puVar19; + ulong uVar20; + long lVar21; + + if (param_3 == 0) { + return; + } + puVar19 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar19 >> 6)) { + lVar21 = (long)puVar19 - (long)param_2; + uVar1 = *param_4; + uVar5 = param_4[1]; + uVar2 = param_4[2]; + uVar6 = param_4[3]; + uVar3 = param_4[4]; + uVar7 = param_4[5]; + uVar4 = param_4[6]; + uVar8 = param_4[7]; + if (param_3 < (ulong)(lVar21 >> 6)) { + puVar18 = puVar19 + param_3 * -8; + puVar14 = puVar19; + for (puVar12 = puVar18; puVar19 != puVar12; puVar12 = puVar12 + 8) { + if (puVar14 != (undefined8 *)0x0) { + *(undefined4 *)puVar14 = *(undefined4 *)puVar12; + *(undefined4 *)((long)puVar14 + 4) = *(undefined4 *)((long)puVar12 + 4); + *(undefined4 *)(puVar14 + 1) = *(undefined4 *)(puVar12 + 1); + *(undefined4 *)((long)puVar14 + 0xc) = *(undefined4 *)((long)puVar12 + 0xc); + *(undefined4 *)(puVar14 + 2) = *(undefined4 *)(puVar12 + 2); + *(undefined4 *)((long)puVar14 + 0x14) = *(undefined4 *)((long)puVar12 + 0x14); + *(undefined4 *)(puVar14 + 3) = *(undefined4 *)(puVar12 + 3); + *(undefined4 *)((long)puVar14 + 0x1c) = *(undefined4 *)((long)puVar12 + 0x1c); + *(undefined4 *)(puVar14 + 4) = *(undefined4 *)(puVar12 + 4); + *(undefined4 *)((long)puVar14 + 0x24) = *(undefined4 *)((long)puVar12 + 0x24); + *(undefined4 *)(puVar14 + 5) = *(undefined4 *)(puVar12 + 5); + *(undefined4 *)((long)puVar14 + 0x2c) = *(undefined4 *)((long)puVar12 + 0x2c); + *(undefined4 *)(puVar14 + 6) = *(undefined4 *)(puVar12 + 6); + *(undefined4 *)((long)puVar14 + 0x34) = *(undefined4 *)((long)puVar12 + 0x34); + *(undefined4 *)(puVar14 + 7) = *(undefined4 *)(puVar12 + 7); + *(undefined4 *)((long)puVar14 + 0x3c) = *(undefined4 *)((long)puVar12 + 0x3c); + } + puVar14 = puVar14 + 8; + } + param_1[1] = puVar19 + param_3 * 8; + puVar12 = puVar18; + if (0x3f < (long)puVar18 - (long)param_2) { + do { + puVar14 = puVar12 + -8; + uVar9 = puVar12[-7]; + puVar19[-8] = *puVar14; + puVar19[-7] = uVar9; + uVar9 = puVar12[-5]; + puVar19[-6] = puVar12[-6]; + puVar19[-5] = uVar9; + uVar9 = puVar12[-3]; + puVar19[-4] = puVar12[-4]; + puVar19[-3] = uVar9; + uVar9 = puVar12[-1]; + puVar19[-2] = puVar12[-2]; + puVar19[-1] = uVar9; + puVar12 = puVar14; + puVar19 = puVar19 + -8; + } while (puVar14 != (undefined8 *)((long)puVar18 - ((long)puVar18 - (long)param_2))); + } + puVar19 = param_2 + param_3 * 8; + for (; param_2 != puVar19; param_2 = param_2 + 8) { + *param_2 = uVar1; + param_2[1] = uVar5; + param_2[2] = uVar2; + param_2[3] = uVar6; + param_2[4] = uVar3; + param_2[5] = uVar7; + param_2[6] = uVar4; + param_2[7] = uVar8; + } + return; + } + lVar11 = param_3 - (lVar21 >> 6); + puVar12 = puVar19; + for (lVar10 = lVar11; lVar10 != 0; lVar10 = lVar10 + -1) { + if (puVar12 != (undefined8 *)0x0) { + puVar12[1] = uVar5; + *puVar12 = uVar1; + puVar12[3] = uVar6; + puVar12[2] = uVar2; + puVar12[5] = uVar7; + puVar12[4] = uVar3; + puVar12[7] = uVar8; + puVar12[6] = uVar4; + } + puVar12 = puVar12 + 8; + } + puVar18 = puVar19 + lVar11 * 8; + param_1[1] = puVar18; + puVar14 = puVar18; + puVar12 = param_2; + if (puVar19 == param_2) { + param_1[1] = (long)puVar18 + lVar21; + return; + } + do { + if (puVar14 != (undefined8 *)0x0) { + *(undefined4 *)puVar14 = *(undefined4 *)puVar12; + *(undefined4 *)((long)puVar14 + 4) = *(undefined4 *)((long)puVar12 + 4); + *(undefined4 *)(puVar14 + 1) = *(undefined4 *)(puVar12 + 1); + *(undefined4 *)((long)puVar14 + 0xc) = *(undefined4 *)((long)puVar12 + 0xc); + *(undefined4 *)(puVar14 + 2) = *(undefined4 *)(puVar12 + 2); + *(undefined4 *)((long)puVar14 + 0x14) = *(undefined4 *)((long)puVar12 + 0x14); + *(undefined4 *)(puVar14 + 3) = *(undefined4 *)(puVar12 + 3); + *(undefined4 *)((long)puVar14 + 0x1c) = *(undefined4 *)((long)puVar12 + 0x1c); + *(undefined4 *)(puVar14 + 4) = *(undefined4 *)(puVar12 + 4); + *(undefined4 *)((long)puVar14 + 0x24) = *(undefined4 *)((long)puVar12 + 0x24); + *(undefined4 *)(puVar14 + 5) = *(undefined4 *)(puVar12 + 5); + *(undefined4 *)((long)puVar14 + 0x2c) = *(undefined4 *)((long)puVar12 + 0x2c); + *(undefined4 *)(puVar14 + 6) = *(undefined4 *)(puVar12 + 6); + *(undefined4 *)((long)puVar14 + 0x34) = *(undefined4 *)((long)puVar12 + 0x34); + *(undefined4 *)(puVar14 + 7) = *(undefined4 *)(puVar12 + 7); + *(undefined4 *)((long)puVar14 + 0x3c) = *(undefined4 *)((long)puVar12 + 0x3c); + } + puVar12 = puVar12 + 8; + puVar14 = puVar14 + 8; + } while (puVar19 != puVar12); + param_1[1] = (long)puVar18 + lVar21; + do { + puVar12 = param_2 + 8; + *param_2 = uVar1; + param_2[1] = uVar5; + param_2[2] = uVar2; + param_2[3] = uVar6; + param_2[4] = uVar3; + param_2[5] = uVar7; + param_2[6] = uVar4; + param_2[7] = uVar8; + param_2 = puVar12; + } while (puVar19 != puVar12); + return; + } + puVar12 = (undefined8 *)*param_1; + uVar17 = (long)puVar19 - (long)puVar12 >> 6; + if (0x3ffffffffffffff - uVar17 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar20 = uVar17; + if (uVar17 < param_3) { + uVar20 = param_3; + } + uVar20 = uVar20 + uVar17; + if ((uVar20 < uVar17) || (0x3ffffffffffffff < uVar20)) { + lVar21 = (long)param_2 - (long)puVar12; + uVar20 = 0xffffffffffffffc0; + } + else { + lVar21 = (long)param_2 - (long)puVar12; + if (uVar20 == 0) { + uVar20 = 0; + puVar13 = (undefined4 *)0x0; + goto LAB_0033c0bc; + } + uVar20 = uVar20 * 0x40; + } + puVar13 = operator_new(uVar20); + puVar19 = (undefined8 *)param_1[1]; + puVar12 = (undefined8 *)*param_1; +LAB_0033c0bc: + puVar15 = (undefined4 *)((long)puVar13 + lVar21); + uVar17 = param_3; + do { + if (puVar15 != (undefined4 *)0x0) { + *puVar15 = *(undefined4 *)param_4; + puVar15[1] = *(undefined4 *)((long)param_4 + 4); + puVar15[2] = *(undefined4 *)(param_4 + 1); + puVar15[3] = *(undefined4 *)((long)param_4 + 0xc); + puVar15[4] = *(undefined4 *)(param_4 + 2); + puVar15[5] = *(undefined4 *)((long)param_4 + 0x14); + puVar15[6] = *(undefined4 *)(param_4 + 3); + puVar15[7] = *(undefined4 *)((long)param_4 + 0x1c); + puVar15[8] = *(undefined4 *)(param_4 + 4); + puVar15[9] = *(undefined4 *)((long)param_4 + 0x24); + puVar15[10] = *(undefined4 *)(param_4 + 5); + puVar15[0xb] = *(undefined4 *)((long)param_4 + 0x2c); + puVar15[0xc] = *(undefined4 *)(param_4 + 6); + puVar15[0xd] = *(undefined4 *)((long)param_4 + 0x34); + puVar15[0xe] = *(undefined4 *)(param_4 + 7); + puVar15[0xf] = *(undefined4 *)((long)param_4 + 0x3c); + } + uVar17 = uVar17 - 1; + puVar15 = puVar15 + 0x10; + } while (uVar17 != 0); + puVar15 = puVar13; + puVar14 = puVar12; + if (param_2 != puVar12) { + do { + if (puVar15 != (undefined4 *)0x0) { + *puVar15 = *(undefined4 *)puVar14; + puVar15[1] = *(undefined4 *)((long)puVar14 + 4); + puVar15[2] = *(undefined4 *)(puVar14 + 1); + puVar15[3] = *(undefined4 *)((long)puVar14 + 0xc); + puVar15[4] = *(undefined4 *)(puVar14 + 2); + puVar15[5] = *(undefined4 *)((long)puVar14 + 0x14); + puVar15[6] = *(undefined4 *)(puVar14 + 3); + puVar15[7] = *(undefined4 *)((long)puVar14 + 0x1c); + puVar15[8] = *(undefined4 *)(puVar14 + 4); + puVar15[9] = *(undefined4 *)((long)puVar14 + 0x24); + puVar15[10] = *(undefined4 *)(puVar14 + 5); + puVar15[0xb] = *(undefined4 *)((long)puVar14 + 0x2c); + puVar15[0xc] = *(undefined4 *)(puVar14 + 6); + puVar15[0xd] = *(undefined4 *)((long)puVar14 + 0x34); + puVar15[0xe] = *(undefined4 *)(puVar14 + 7); + puVar15[0xf] = *(undefined4 *)((long)puVar14 + 0x3c); + } + puVar14 = puVar14 + 8; + puVar15 = puVar15 + 0x10; + } while (param_2 != puVar14); + puVar15 = (undefined4 *) + ((long)puVar13 + ((long)param_2 - (long)(puVar12 + 8) & 0xffffffffffffffc0U) + 0x40); + } + puVar15 = puVar15 + param_3 * 0x10; + puVar14 = param_2; + puVar16 = puVar15; + if (param_2 != puVar19) { + do { + if (puVar16 != (undefined4 *)0x0) { + *puVar16 = *(undefined4 *)puVar14; + puVar16[1] = *(undefined4 *)((long)puVar14 + 4); + puVar16[2] = *(undefined4 *)(puVar14 + 1); + puVar16[3] = *(undefined4 *)((long)puVar14 + 0xc); + puVar16[4] = *(undefined4 *)(puVar14 + 2); + puVar16[5] = *(undefined4 *)((long)puVar14 + 0x14); + puVar16[6] = *(undefined4 *)(puVar14 + 3); + puVar16[7] = *(undefined4 *)((long)puVar14 + 0x1c); + puVar16[8] = *(undefined4 *)(puVar14 + 4); + puVar16[9] = *(undefined4 *)((long)puVar14 + 0x24); + puVar16[10] = *(undefined4 *)(puVar14 + 5); + puVar16[0xb] = *(undefined4 *)((long)puVar14 + 0x2c); + puVar16[0xc] = *(undefined4 *)(puVar14 + 6); + puVar16[0xd] = *(undefined4 *)((long)puVar14 + 0x34); + puVar16[0xe] = *(undefined4 *)(puVar14 + 7); + puVar16[0xf] = *(undefined4 *)((long)puVar14 + 0x3c); + } + puVar14 = puVar14 + 8; + puVar16 = puVar16 + 0x10; + } while (puVar14 != puVar19); + puVar15 = (undefined4 *) + ((long)puVar15 + ((long)puVar14 - (long)(param_2 + 8) & 0xffffffffffffffc0U) + 0x40); + } + if (puVar12 != (undefined8 *)0x0) { + operator_delete(puVar12); + } + *param_1 = puVar13; + param_1[1] = puVar15; + param_1[2] = (long)puVar13 + uVar20; + return; +} + + +================================================================== + +### FUNC 0033c324 (2768 bytes) name=FUN_0033c324 + +void FUN_0033c324(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + uint uVar3; + void *pvVar4; + undefined4 *puVar5; + ulong uVar6; + int iVar7; + undefined4 *puVar8; + undefined4 *puVar9; + ulong uVar10; + long lVar11; + ulong uVar12; + undefined4 *puVar13; + uint uVar14; + int iVar15; + int iVar16; + int iVar17; + undefined4 *puVar18; + undefined4 *puVar19; + long lVar20; + long lVar21; + undefined8 uVar22; + undefined1 auStack_80 [128]; + + if (param_3 == 0) { + return; + } + puVar19 = (undefined4 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar19 >> 7)) { + lVar20 = (long)puVar19 - (long)param_2; + memcpy(auStack_80,param_4,0x80); + if (param_3 < (ulong)(lVar20 >> 7)) { + puVar8 = puVar19 + param_3 * -0x20; + puVar5 = puVar19; + for (puVar18 = puVar8; puVar19 != puVar18; puVar18 = puVar18 + 0x20) { + if (puVar5 != (undefined4 *)0x0) { + if ((puVar18 < puVar5 + 4) && (puVar5 < puVar18 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar5 + lVar20) = *(undefined4 *)((long)puVar18 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x80); + } + else { + uVar10 = -((ulong)puVar18 >> 2 & 3); + uVar3 = (uint)uVar10 & 3; + if ((uVar10 & 3) == 0) { + iVar17 = 0x20; + uVar10 = 0; + iVar15 = 8; + iVar16 = 0x20; + uVar14 = 0; + iVar7 = 0x20; + } + else { + *puVar5 = *puVar18; + uVar14 = uVar3; + if (uVar3 == 1) { + iVar7 = 0x1f; + } + else { + puVar5[1] = puVar18[1]; + if (uVar3 == 3) { + iVar7 = 0x1d; + puVar5[2] = puVar18[2]; + } + else { + iVar7 = 0x1e; + uVar14 = 2; + } + } + uVar10 = (ulong)uVar3; + iVar15 = 7; + iVar17 = 0x20 - uVar3; + iVar16 = 0x1c; + } + puVar1 = (undefined8 *)(puVar18 + uVar10); + puVar2 = (undefined8 *)(puVar5 + uVar10); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + if (iVar15 == 8) { + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + } + uVar14 = uVar14 + iVar16; + if (iVar16 != iVar17) { + puVar5[(int)uVar14] = puVar18[uVar14]; + if (iVar7 - iVar16 != 1) { + puVar5[(int)(uVar14 + 1)] = puVar18[(ulong)uVar14 + 1]; + if (iVar7 - iVar16 != 2) { + puVar5[(int)(uVar14 + 2)] = puVar18[(ulong)uVar14 + 2]; + } + } + } + } + } + puVar5 = puVar5 + 0x20; + } + param_1[1] = puVar19 + param_3 * 0x20; + puVar18 = (undefined4 *)((long)puVar19 - ((long)puVar8 - (long)param_2)); + if (0x7f < (long)puVar8 - (long)param_2) { + do { + puVar19 = puVar19 + -0x20; + puVar8 = puVar8 + -0x20; + memcpy(puVar19,puVar8,0x80); + } while (puVar19 != puVar18); + } + puVar19 = param_2 + param_3 * 0x20; + for (; param_2 != puVar19; param_2 = param_2 + 0x20) { + memcpy(param_2,auStack_80,0x80); + } + return; + } + lVar21 = param_3 - (lVar20 >> 7); + puVar18 = puVar19; + for (lVar11 = lVar21; lVar11 != 0; lVar11 = lVar11 + -1) { + pvVar4 = (void *)0x0; + if (puVar18 != (undefined4 *)0x0) { + pvVar4 = memcpy(puVar18,auStack_80,0x80); + } + puVar18 = (undefined4 *)((long)pvVar4 + 0x80); + } + puVar8 = puVar19 + lVar21 * 0x20; + param_1[1] = puVar8; + puVar18 = param_2; + puVar5 = puVar8; + if (puVar19 != param_2) { + do { + if (puVar5 != (undefined4 *)0x0) { + if ((puVar5 < puVar18 + 4) && (puVar18 < puVar5 + 4)) { + lVar11 = 0; + do { + *(undefined4 *)((long)puVar5 + lVar11) = *(undefined4 *)((long)puVar18 + lVar11); + lVar11 = lVar11 + 4; + } while (lVar11 != 0x80); + } + else { + uVar10 = -((ulong)puVar18 >> 2 & 3); + uVar3 = (uint)uVar10 & 3; + if ((uVar10 & 3) == 0) { + uVar10 = 0; + iVar15 = 8; + iVar17 = 0x20; + iVar16 = 0x20; + uVar14 = 0; + iVar7 = iVar17; + } + else { + *puVar5 = *puVar18; + uVar14 = uVar3; + if (uVar3 == 1) { + iVar16 = 0x1f; + } + else { + puVar5[1] = puVar18[1]; + if (uVar3 == 3) { + iVar16 = 0x1d; + puVar5[2] = puVar18[2]; + } + else { + iVar16 = 0x1e; + uVar14 = 2; + } + } + uVar10 = (ulong)uVar3; + iVar17 = 0x20 - uVar3; + iVar15 = 7; + iVar7 = 0x1c; + } + puVar1 = (undefined8 *)(puVar18 + uVar10); + puVar2 = (undefined8 *)(puVar5 + uVar10); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + if (iVar15 == 8) { + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + } + uVar14 = uVar14 + iVar7; + if (iVar17 != iVar7) { + puVar5[(int)uVar14] = puVar18[uVar14]; + if (iVar16 - iVar7 != 1) { + puVar5[(int)(uVar14 + 1)] = puVar18[(ulong)uVar14 + 1]; + if (iVar16 - iVar7 != 2) { + puVar5[(int)(uVar14 + 2)] = puVar18[(ulong)uVar14 + 2]; + } + } + } + } + } + puVar18 = puVar18 + 0x20; + puVar5 = puVar5 + 0x20; + } while (puVar19 != puVar18); + param_1[1] = (long)puVar8 + lVar20; + do { + puVar18 = param_2 + 0x20; + memcpy(param_2,auStack_80,0x80); + param_2 = puVar18; + } while (puVar19 != puVar18); + return; + } + param_1[1] = (long)puVar8 + lVar20; + return; + } + puVar18 = (undefined4 *)*param_1; + uVar10 = (long)puVar19 - (long)puVar18 >> 7; + if (0x1ffffffffffffff - uVar10 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar6 = uVar10; + if (uVar10 < param_3) { + uVar6 = param_3; + } + uVar6 = uVar6 + uVar10; + if ((uVar6 < uVar10) || (0x1ffffffffffffff < uVar6)) { + lVar20 = (long)param_2 - (long)puVar18; + uVar6 = 0xffffffffffffff80; + } + else { + lVar20 = (long)param_2 - (long)puVar18; + if (uVar6 == 0) { + puVar5 = (undefined4 *)0x0; + uVar6 = 0; + goto LAB_0033c860; + } + uVar6 = uVar6 * 0x80; + } + puVar5 = operator_new(uVar6); + puVar19 = (undefined4 *)param_1[1]; + puVar18 = (undefined4 *)*param_1; +LAB_0033c860: + uVar3 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + puVar8 = (undefined4 *)((long)puVar5 + lVar20); + iVar17 = (0x1c - uVar3 >> 2) + 1; + puVar1 = (undefined8 *)(param_4 + uVar3); + uVar10 = param_3; + do { + if (puVar8 != (undefined4 *)0x0) { + if ((param_4 < puVar8 + 4) && (puVar8 < param_4 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar8 + lVar20) = *(undefined4 *)((long)param_4 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x80); + } + else { + uVar14 = uVar3; + if (uVar3 == 0) { + iVar7 = 0x20; + } + else { + *puVar8 = *param_4; + if (uVar3 == 1) { + iVar7 = 0x1f; + } + else { + puVar8[1] = param_4[1]; + if (uVar3 == 3) { + iVar7 = 0x1d; + puVar8[2] = param_4[2]; + } + else { + iVar7 = 0x1e; + uVar14 = 2; + } + } + } + puVar2 = (undefined8 *)(puVar8 + uVar3); + uVar22 = *puVar1; + /* catch() { ... } // from try @ 0033c9ac with catch @ 0033c90c + catch() { ... } // from try @ 0033ca08 with catch @ 0033c90c + catch() { ... } // from try @ 0033e058 with catch @ 0033c90c */ + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + if (iVar17 == 8) { + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + } + iVar7 = iVar7 + iVar17 * -4; + uVar14 = uVar14 + iVar17 * 4; + if (0x20 - uVar3 != iVar17 * 4) { + uVar12 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + puVar8[(int)uVar14] = *(undefined4 *)((long)param_4 + uVar12); + if (iVar7 != 1) { + /* try { // try from 0033c9ac to 0043c9af has its CatchHandler @ 0033c90c */ + puVar8[(int)(uVar14 + 1)] = *(undefined4 *)((long)param_4 + uVar12 + 4); + if (iVar7 != 2) { + puVar8[(int)(uVar14 + 2)] = *(undefined4 *)((long)param_4 + uVar12 + 8); + } + } + } + } + } + uVar10 = uVar10 - 1; + puVar8 = puVar8 + 0x20; + } while (uVar10 != 0); + puVar8 = puVar18; + puVar13 = puVar5; + if (param_2 != puVar18) { + do { + if (puVar13 != (undefined4 *)0x0) { + if ((puVar8 < puVar13 + 4) && (puVar13 < puVar8 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar13 + lVar20) = *(undefined4 *)((long)puVar8 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x80); + } + else { + /* try { // try from 0033ca00 to 0043ca03 has its CatchHandler @ 0033e048 */ + uVar10 = -((ulong)puVar8 >> 2 & 3); + uVar3 = (uint)uVar10 & 3; + /* try { // try from 0033ca08 to 0043ca0b has its CatchHandler @ 0033c90c */ + if ((uVar10 & 3) == 0) { + uVar10 = 0; + iVar15 = 8; + iVar17 = 0x20; + iVar16 = 0x20; + uVar14 = 0; + iVar7 = iVar17; + } + else { + *puVar13 = *puVar8; + uVar14 = uVar3; + if (uVar3 == 1) { + iVar16 = 0x1f; + } + else { + puVar13[1] = puVar8[1]; + if (uVar3 == 3) { + iVar16 = 0x1d; + puVar13[2] = puVar8[2]; + } + else { + iVar16 = 0x1e; + uVar14 = 2; + } + } + uVar10 = (ulong)uVar3; + iVar17 = 0x20 - uVar3; + iVar15 = 7; + iVar7 = 0x1c; + } + puVar1 = (undefined8 *)(puVar8 + uVar10); + puVar2 = (undefined8 *)(puVar13 + uVar10); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + if (iVar15 == 8) { + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + } + uVar14 = uVar14 + iVar7; + if (iVar17 != iVar7) { + puVar13[(int)uVar14] = puVar8[uVar14]; + if (iVar16 - iVar7 != 1) { + puVar13[(int)(uVar14 + 1)] = puVar8[(ulong)uVar14 + 1]; + if (iVar16 - iVar7 != 2) { + puVar13[(int)(uVar14 + 2)] = puVar8[(ulong)uVar14 + 2]; + } + } + } + } + } + puVar8 = puVar8 + 0x20; + puVar13 = puVar13 + 0x20; + } while (param_2 != puVar8); + puVar13 = (undefined4 *) + ((long)puVar5 + ((long)param_2 - (long)(puVar18 + 0x20) & 0xffffffffffffff80U) + 0x80) + ; + } + puVar13 = puVar13 + param_3 * 0x20; + puVar9 = puVar13; + puVar8 = param_2; + if (param_2 != puVar19) { + do { + if (puVar9 != (undefined4 *)0x0) { + if ((puVar9 < puVar8 + 4) && (puVar8 < puVar9 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar9 + lVar20) = *(undefined4 *)((long)puVar8 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x80); + } + else { + uVar10 = -((ulong)puVar8 >> 2 & 3); + uVar3 = (uint)uVar10 & 3; + if ((uVar10 & 3) == 0) { + uVar10 = 0; + iVar15 = 8; + iVar17 = 0x20; + iVar16 = 0x20; + uVar14 = 0; + iVar7 = iVar17; + } + else { + *puVar9 = *puVar8; + uVar14 = uVar3; + if (uVar3 == 1) { + iVar16 = 0x1f; + } + else { + puVar9[1] = puVar8[1]; + if (uVar3 == 3) { + iVar16 = 0x1d; + puVar9[2] = puVar8[2]; + } + else { + iVar16 = 0x1e; + uVar14 = 2; + } + } + uVar10 = (ulong)uVar3; + iVar17 = 0x20 - uVar3; + iVar15 = 7; + iVar7 = 0x1c; + } + puVar1 = (undefined8 *)(puVar8 + uVar10); + puVar2 = (undefined8 *)(puVar9 + uVar10); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + if (iVar15 == 8) { + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + } + uVar14 = uVar14 + iVar7; + if (iVar17 != iVar7) { + puVar9[(int)uVar14] = puVar8[uVar14]; + if (iVar16 - iVar7 != 1) { + puVar9[(int)(uVar14 + 1)] = puVar8[(ulong)uVar14 + 1]; + if (iVar16 - iVar7 != 2) { + puVar9[(int)(uVar14 + 2)] = puVar8[(ulong)uVar14 + 2]; + } + } + } + } + } + puVar8 = puVar8 + 0x20; + puVar9 = puVar9 + 0x20; + } while (puVar8 != puVar19); + puVar13 = (undefined4 *) + ((long)puVar13 + ((long)puVar8 - (long)(param_2 + 0x20) & 0xffffffffffffff80U) + 0x80) + ; + } + if (puVar18 != (undefined4 *)0x0) { + operator_delete(puVar18); + } + *param_1 = puVar5; + param_1[1] = puVar13; + param_1[2] = (long)puVar5 + uVar6; + return; +} + + +================================================================== + +### FUNC 0033cdf4 (3936 bytes) name=FUN_0033cdf4 + +void FUN_0033cdf4(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + uint uVar3; + ulong uVar4; + void *pvVar5; + undefined4 *puVar6; + ulong uVar7; + int iVar8; + undefined4 *puVar9; + undefined4 *puVar10; + long lVar11; + ulong uVar12; + int iVar13; + long lVar14; + undefined4 *puVar15; + uint uVar16; + int iVar17; + int iVar18; + undefined4 *puVar19; + undefined4 *puVar20; + long lVar21; + undefined8 uVar22; + undefined1 auStack_100 [256]; + + if (param_3 == 0) { + return; + } + puVar20 = (undefined4 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar20 >> 8)) { + lVar14 = (long)puVar20 - (long)param_2; + memcpy(auStack_100,param_4,0x100); + if (param_3 < (ulong)(lVar14 >> 8)) { + puVar9 = puVar20 + param_3 * -0x40; + puVar6 = puVar20; + for (puVar19 = puVar9; puVar20 != puVar19; puVar19 = puVar19 + 0x40) { + if (puVar6 != (undefined4 *)0x0) { + if ((puVar19 < puVar6 + 4) && (puVar6 < puVar19 + 4)) { + lVar14 = 0; + do { + *(undefined4 *)((long)puVar6 + lVar14) = *(undefined4 *)((long)puVar19 + lVar14); + lVar14 = lVar14 + 4; + } while (lVar14 != 0x100); + } + else { + uVar4 = -((ulong)puVar19 >> 2 & 3); + uVar3 = (uint)uVar4 & 3; + if ((uVar4 & 3) == 0) { + iVar18 = 0x40; + uVar4 = 0; + iVar13 = 0x10; + iVar17 = 0x40; + uVar16 = 0; + iVar8 = 0x40; + } + else { + *puVar6 = *puVar19; + uVar16 = uVar3; + if (uVar3 == 1) { + iVar8 = 0x3f; + } + else { + puVar6[1] = puVar19[1]; + if (uVar3 == 3) { + iVar8 = 0x3d; + puVar6[2] = puVar19[2]; + } + else { + iVar8 = 0x3e; + uVar16 = 2; + } + } + uVar4 = (ulong)uVar3; + iVar17 = 0x3c; + iVar18 = 0x40 - uVar3; + iVar13 = 0xf; + } + puVar1 = (undefined8 *)(puVar19 + uVar4); + puVar2 = (undefined8 *)(puVar6 + uVar4); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + uVar22 = puVar1[0x10]; + puVar2[0x11] = puVar1[0x11]; + puVar2[0x10] = uVar22; + uVar22 = puVar1[0x12]; + puVar2[0x13] = puVar1[0x13]; + puVar2[0x12] = uVar22; + uVar22 = puVar1[0x14]; + puVar2[0x15] = puVar1[0x15]; + puVar2[0x14] = uVar22; + uVar22 = puVar1[0x16]; + puVar2[0x17] = puVar1[0x17]; + puVar2[0x16] = uVar22; + uVar22 = puVar1[0x18]; + puVar2[0x19] = puVar1[0x19]; + puVar2[0x18] = uVar22; + uVar22 = puVar1[0x1a]; + puVar2[0x1b] = puVar1[0x1b]; + puVar2[0x1a] = uVar22; + uVar22 = puVar1[0x1c]; + puVar2[0x1d] = puVar1[0x1d]; + puVar2[0x1c] = uVar22; + if (iVar13 == 0x10) { + uVar22 = puVar1[0x1e]; + puVar2[0x1f] = puVar1[0x1f]; + puVar2[0x1e] = uVar22; + } + uVar16 = uVar16 + iVar17; + if (iVar17 != iVar18) { + puVar6[(int)uVar16] = puVar19[uVar16]; + if (iVar8 - iVar17 != 1) { + puVar6[(int)(uVar16 + 1)] = puVar19[(ulong)uVar16 + 1]; + if (iVar8 - iVar17 != 2) { + puVar6[(int)(uVar16 + 2)] = puVar19[(ulong)uVar16 + 2]; + } + } + } + } + } + puVar6 = puVar6 + 0x40; + } + param_1[1] = puVar20 + param_3 * 0x40; + puVar19 = (undefined4 *)((long)puVar20 - ((long)puVar9 - (long)param_2)); + if (0xff < (long)puVar9 - (long)param_2) { + do { + puVar20 = puVar20 + -0x40; + puVar9 = puVar9 + -0x40; + memcpy(puVar20,puVar9,0x100); + } while (puVar20 != puVar19); + } + puVar20 = param_2 + param_3 * 0x40; + for (; param_2 != puVar20; param_2 = param_2 + 0x40) { + memcpy(param_2,auStack_100,0x100); + } + return; + } + lVar21 = param_3 - (lVar14 >> 8); + puVar19 = puVar20; + for (lVar11 = lVar21; lVar11 != 0; lVar11 = lVar11 + -1) { + pvVar5 = (void *)0x0; + if (puVar19 != (undefined4 *)0x0) { + pvVar5 = memcpy(puVar19,auStack_100,0x100); + } + puVar19 = (undefined4 *)((long)pvVar5 + 0x100); + } + puVar9 = puVar20 + lVar21 * 0x40; + param_1[1] = puVar9; + puVar19 = param_2; + puVar6 = puVar9; + if (puVar20 != param_2) { + do { + if (puVar6 != (undefined4 *)0x0) { + if ((puVar6 < puVar19 + 4) && (puVar19 < puVar6 + 4)) { + lVar11 = 0; + do { + *(undefined4 *)((long)puVar6 + lVar11) = *(undefined4 *)((long)puVar19 + lVar11); + lVar11 = lVar11 + 4; + } while (lVar11 != 0x100); + } + else { + uVar4 = -((ulong)puVar19 >> 2 & 3); + uVar3 = (uint)uVar4 & 3; + if ((uVar4 & 3) == 0) { + uVar4 = 0; + iVar13 = 0x10; + iVar18 = 0x40; + iVar17 = 0x40; + uVar16 = 0; + iVar8 = iVar18; + } + else { + *puVar6 = *puVar19; + uVar16 = uVar3; + if (uVar3 == 1) { + iVar17 = 0x3f; + } + else { + puVar6[1] = puVar19[1]; + if (uVar3 == 3) { + iVar17 = 0x3d; + puVar6[2] = puVar19[2]; + } + else { + iVar17 = 0x3e; + uVar16 = 2; + } + } + uVar4 = (ulong)uVar3; + iVar18 = 0x40 - uVar3; + iVar13 = 0xf; + iVar8 = 0x3c; + } + puVar1 = (undefined8 *)(puVar19 + uVar4); + puVar2 = (undefined8 *)(puVar6 + uVar4); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + uVar22 = puVar1[0x10]; + puVar2[0x11] = puVar1[0x11]; + puVar2[0x10] = uVar22; + uVar22 = puVar1[0x12]; + puVar2[0x13] = puVar1[0x13]; + puVar2[0x12] = uVar22; + uVar22 = puVar1[0x14]; + puVar2[0x15] = puVar1[0x15]; + puVar2[0x14] = uVar22; + uVar22 = puVar1[0x16]; + puVar2[0x17] = puVar1[0x17]; + puVar2[0x16] = uVar22; + uVar22 = puVar1[0x18]; + puVar2[0x19] = puVar1[0x19]; + puVar2[0x18] = uVar22; + uVar22 = puVar1[0x1a]; + puVar2[0x1b] = puVar1[0x1b]; + puVar2[0x1a] = uVar22; + uVar22 = puVar1[0x1c]; + puVar2[0x1d] = puVar1[0x1d]; + puVar2[0x1c] = uVar22; + if (iVar13 == 0x10) { + uVar22 = puVar1[0x1e]; + puVar2[0x1f] = puVar1[0x1f]; + puVar2[0x1e] = uVar22; + } + uVar16 = uVar16 + iVar8; + if (iVar18 != iVar8) { + puVar6[(int)uVar16] = puVar19[uVar16]; + if (iVar17 - iVar8 != 1) { + puVar6[(int)(uVar16 + 1)] = puVar19[(ulong)uVar16 + 1]; + if (iVar17 - iVar8 != 2) { + puVar6[(int)(uVar16 + 2)] = puVar19[(ulong)uVar16 + 2]; + } + } + } + } + } + puVar19 = puVar19 + 0x40; + puVar6 = puVar6 + 0x40; + } while (puVar20 != puVar19); + param_1[1] = (long)puVar9 + lVar14; + do { + puVar19 = param_2 + 0x40; + memcpy(param_2,auStack_100,0x100); + param_2 = puVar19; + } while (puVar20 != puVar19); + return; + } + param_1[1] = (long)puVar9 + lVar14; + return; + } + puVar19 = (undefined4 *)*param_1; + uVar4 = (long)puVar20 - (long)puVar19 >> 8; + if (0xffffffffffffff - uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar7 = uVar4; + if (uVar4 < param_3) { + uVar7 = param_3; + } + uVar7 = uVar7 + uVar4; + if ((uVar7 < uVar4) || (0xffffffffffffff < uVar7)) { + lVar14 = (long)param_2 - (long)puVar19; + uVar7 = 0xffffffffffffff00; + } + else { + lVar14 = (long)param_2 - (long)puVar19; + if (uVar7 == 0) { + puVar6 = (undefined4 *)0x0; + uVar7 = 0; + goto LAB_0033d508; + } + uVar7 = uVar7 * 0x100; + } + puVar6 = operator_new(uVar7); + puVar20 = (undefined4 *)param_1[1]; + puVar19 = (undefined4 *)*param_1; +LAB_0033d508: + uVar3 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + puVar9 = (undefined4 *)((long)puVar6 + lVar14); + puVar1 = (undefined8 *)(param_4 + uVar3); + iVar18 = (0x3c - uVar3 >> 2) + 1; + uVar4 = param_3; + do { + if (puVar9 != (undefined4 *)0x0) { + if ((param_4 < puVar9 + 4) && (puVar9 < param_4 + 4)) { + lVar14 = 0; + do { + *(undefined4 *)((long)puVar9 + lVar14) = *(undefined4 *)((long)param_4 + lVar14); + lVar14 = lVar14 + 4; + } while (lVar14 != 0x100); + } + else { + uVar16 = uVar3; + if (uVar3 == 0) { + iVar8 = 0x40; + } + else { + *puVar9 = *param_4; + if (uVar3 == 1) { + iVar8 = 0x3f; + } + else { + puVar9[1] = param_4[1]; + if (uVar3 == 3) { + iVar8 = 0x3d; + puVar9[2] = param_4[2]; + } + else { + iVar8 = 0x3e; + uVar16 = 2; + } + } + } + uVar22 = *puVar1; + puVar2 = (undefined8 *)(puVar9 + uVar3); + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + uVar22 = puVar1[0x10]; + puVar2[0x11] = puVar1[0x11]; + puVar2[0x10] = uVar22; + uVar22 = puVar1[0x12]; + puVar2[0x13] = puVar1[0x13]; + puVar2[0x12] = uVar22; + uVar22 = puVar1[0x14]; + puVar2[0x15] = puVar1[0x15]; + puVar2[0x14] = uVar22; + uVar22 = puVar1[0x16]; + puVar2[0x17] = puVar1[0x17]; + puVar2[0x16] = uVar22; + uVar22 = puVar1[0x18]; + puVar2[0x19] = puVar1[0x19]; + puVar2[0x18] = uVar22; + uVar22 = puVar1[0x1a]; + puVar2[0x1b] = puVar1[0x1b]; + puVar2[0x1a] = uVar22; + uVar22 = puVar1[0x1c]; + puVar2[0x1d] = puVar1[0x1d]; + puVar2[0x1c] = uVar22; + if (iVar18 == 0x10) { + uVar22 = puVar1[0x1e]; + puVar2[0x1f] = puVar1[0x1f]; + puVar2[0x1e] = uVar22; + } + uVar16 = uVar16 + iVar18 * 4; + iVar8 = iVar8 + iVar18 * -4; + if (0x40 - uVar3 != iVar18 * 4) { + uVar12 = -(ulong)(uVar16 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar16 << 2; + puVar9[(int)uVar16] = *(undefined4 *)((long)param_4 + uVar12); + if (iVar8 != 1) { + puVar9[(int)(uVar16 + 1)] = *(undefined4 *)((long)param_4 + uVar12 + 4); + if (iVar8 != 2) { + puVar9[(int)(uVar16 + 2)] = *(undefined4 *)((long)param_4 + uVar12 + 8); + } + } + } + } + } + uVar4 = uVar4 - 1; + puVar9 = puVar9 + 0x40; + } while (uVar4 != 0); + puVar9 = puVar19; + puVar15 = puVar6; + if (param_2 != puVar19) { + do { + if (puVar15 != (undefined4 *)0x0) { + if ((puVar9 < puVar15 + 4) && (puVar15 < puVar9 + 4)) { + lVar14 = 0; + do { + *(undefined4 *)((long)puVar15 + lVar14) = *(undefined4 *)((long)puVar9 + lVar14); + lVar14 = lVar14 + 4; + } while (lVar14 != 0x100); + } + else { + uVar4 = -((ulong)puVar9 >> 2 & 3); + uVar3 = (uint)uVar4 & 3; + if ((uVar4 & 3) == 0) { + uVar4 = 0; + iVar17 = 0x10; + iVar18 = 0x40; + iVar13 = 0x40; + uVar16 = 0; + iVar8 = iVar18; + } + else { + *puVar15 = *puVar9; + uVar16 = uVar3; + if (uVar3 == 1) { + iVar13 = 0x3f; + } + else { + puVar15[1] = puVar9[1]; + if (uVar3 == 3) { + iVar13 = 0x3d; + puVar15[2] = puVar9[2]; + } + else { + iVar13 = 0x3e; + uVar16 = 2; + } + } + uVar4 = (ulong)uVar3; + iVar18 = 0x40 - uVar3; + iVar17 = 0xf; + iVar8 = 0x3c; + } + puVar1 = (undefined8 *)(puVar9 + uVar4); + puVar2 = (undefined8 *)(puVar15 + uVar4); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + uVar22 = puVar1[0x10]; + puVar2[0x11] = puVar1[0x11]; + puVar2[0x10] = uVar22; + uVar22 = puVar1[0x12]; + puVar2[0x13] = puVar1[0x13]; + puVar2[0x12] = uVar22; + uVar22 = puVar1[0x14]; + puVar2[0x15] = puVar1[0x15]; + puVar2[0x14] = uVar22; + uVar22 = puVar1[0x16]; + puVar2[0x17] = puVar1[0x17]; + puVar2[0x16] = uVar22; + uVar22 = puVar1[0x18]; + puVar2[0x19] = puVar1[0x19]; + puVar2[0x18] = uVar22; + uVar22 = puVar1[0x1a]; + puVar2[0x1b] = puVar1[0x1b]; + puVar2[0x1a] = uVar22; + uVar22 = puVar1[0x1c]; + puVar2[0x1d] = puVar1[0x1d]; + puVar2[0x1c] = uVar22; + if (iVar17 == 0x10) { + uVar22 = puVar1[0x1e]; + puVar2[0x1f] = puVar1[0x1f]; + puVar2[0x1e] = uVar22; + } + uVar16 = uVar16 + iVar8; + if (iVar18 != iVar8) { + puVar15[(int)uVar16] = puVar9[uVar16]; + if (iVar13 - iVar8 != 1) { + puVar15[(int)(uVar16 + 1)] = puVar9[(ulong)uVar16 + 1]; + if (iVar13 - iVar8 != 2) { + puVar15[(int)(uVar16 + 2)] = puVar9[(ulong)uVar16 + 2]; + } + } + } + } + } + puVar9 = puVar9 + 0x40; + puVar15 = puVar15 + 0x40; + } while (param_2 != puVar9); + puVar15 = (undefined4 *) + ((long)puVar6 + ((long)param_2 - (long)(puVar19 + 0x40) & 0xffffffffffffff00U) + 0x100 + ); + } + puVar15 = puVar15 + param_3 * 0x40; + puVar10 = puVar15; + puVar9 = param_2; + if (param_2 != puVar20) { + do { + if (puVar10 != (undefined4 *)0x0) { + if ((puVar10 < puVar9 + 4) && (puVar9 < puVar10 + 4)) { + lVar14 = 0; + do { + *(undefined4 *)((long)puVar10 + lVar14) = *(undefined4 *)((long)puVar9 + lVar14); + lVar14 = lVar14 + 4; + } while (lVar14 != 0x100); + } + else { + uVar4 = -((ulong)puVar9 >> 2 & 3); + uVar3 = (uint)uVar4 & 3; + if ((uVar4 & 3) == 0) { + uVar4 = 0; + iVar13 = 0x10; + iVar18 = 0x40; + iVar17 = 0x40; + uVar16 = 0; + iVar8 = iVar18; + } + else { + *puVar10 = *puVar9; + uVar16 = uVar3; + if (uVar3 == 1) { + iVar17 = 0x3f; + } + else { + puVar10[1] = puVar9[1]; + if (uVar3 == 3) { + iVar17 = 0x3d; + puVar10[2] = puVar9[2]; + } + else { + iVar17 = 0x3e; + uVar16 = 2; + } + } + uVar4 = (ulong)uVar3; + iVar18 = 0x40 - uVar3; + iVar13 = 0xf; + iVar8 = 0x3c; + } + puVar1 = (undefined8 *)(puVar9 + uVar4); + puVar2 = (undefined8 *)(puVar10 + uVar4); + uVar22 = *puVar1; + puVar2[1] = puVar1[1]; + *puVar2 = uVar22; + uVar22 = puVar1[2]; + puVar2[3] = puVar1[3]; + puVar2[2] = uVar22; + uVar22 = puVar1[4]; + puVar2[5] = puVar1[5]; + puVar2[4] = uVar22; + uVar22 = puVar1[6]; + puVar2[7] = puVar1[7]; + puVar2[6] = uVar22; + uVar22 = puVar1[8]; + puVar2[9] = puVar1[9]; + puVar2[8] = uVar22; + uVar22 = puVar1[10]; + puVar2[0xb] = puVar1[0xb]; + puVar2[10] = uVar22; + uVar22 = puVar1[0xc]; + puVar2[0xd] = puVar1[0xd]; + puVar2[0xc] = uVar22; + uVar22 = puVar1[0xe]; + puVar2[0xf] = puVar1[0xf]; + puVar2[0xe] = uVar22; + uVar22 = puVar1[0x10]; + puVar2[0x11] = puVar1[0x11]; + puVar2[0x10] = uVar22; + uVar22 = puVar1[0x12]; + puVar2[0x13] = puVar1[0x13]; + puVar2[0x12] = uVar22; + uVar22 = puVar1[0x14]; + puVar2[0x15] = puVar1[0x15]; + puVar2[0x14] = uVar22; + uVar22 = puVar1[0x16]; + puVar2[0x17] = puVar1[0x17]; + puVar2[0x16] = uVar22; + uVar22 = puVar1[0x18]; + puVar2[0x19] = puVar1[0x19]; + puVar2[0x18] = uVar22; + uVar22 = puVar1[0x1a]; + puVar2[0x1b] = puVar1[0x1b]; + puVar2[0x1a] = uVar22; + uVar22 = puVar1[0x1c]; + puVar2[0x1d] = puVar1[0x1d]; + puVar2[0x1c] = uVar22; + if (iVar13 == 0x10) { + uVar22 = puVar1[0x1e]; + puVar2[0x1f] = puVar1[0x1f]; + puVar2[0x1e] = uVar22; + } + uVar16 = uVar16 + iVar8; + if (iVar18 != iVar8) { + puVar10[(int)uVar16] = puVar9[uVar16]; + if (iVar17 - iVar8 != 1) { + puVar10[(int)(uVar16 + 1)] = puVar9[(ulong)uVar16 + 1]; + if (iVar17 - iVar8 != 2) { + puVar10[(int)(uVar16 + 2)] = puVar9[(ulong)uVar16 + 2]; + } + } + } + } + } + puVar9 = puVar9 + 0x40; + puVar10 = puVar10 + 0x40; + } while (puVar9 != puVar20); + puVar15 = (undefined4 *) + ((long)puVar15 + ((long)puVar9 - (long)(param_2 + 0x40) & 0xffffffffffffff00U) + 0x100 + ); + } + if (puVar19 != (undefined4 *)0x0) { + operator_delete(puVar19); + } + *param_1 = puVar6; + param_1[1] = puVar15; + param_1[2] = (long)puVar6 + uVar7; + return; +} + + +================================================================== + +### FUNC 0033dd54 (2252 bytes) name=FUN_0033dd54 + +void FUN_0033dd54(undefined8 *param_1,undefined4 *param_2,ulong param_3,undefined4 *param_4) + +{ + ulong uVar1; + void *pvVar2; + undefined4 *puVar3; + int iVar4; + undefined8 *puVar5; + undefined4 *puVar6; + uint uVar7; + long lVar8; + undefined8 *puVar9; + uint uVar10; + undefined4 *puVar11; + ulong uVar12; + undefined4 *puVar13; + uint uVar14; + uint uVar15; + int iVar16; + int iVar17; + undefined4 *puVar18; + undefined4 *puVar19; + long lVar20; + ulong uVar21; + long lVar22; + undefined8 uVar23; + undefined1 auStack_200 [512]; + + if (param_3 == 0) { + return; + } + puVar19 = (undefined4 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar19 >> 9)) { + lVar20 = (long)puVar19 - (long)param_2; + memcpy(auStack_200,param_4,0x200); + if (param_3 < (ulong)(lVar20 >> 9)) { + puVar11 = puVar19 + param_3 * -0x80; + puVar3 = puVar19; + for (puVar18 = puVar11; puVar19 != puVar18; puVar18 = puVar18 + 0x80) { + if (puVar3 != (undefined4 *)0x0) { + if ((puVar18 < puVar3 + 4) && (puVar3 < puVar18 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar3 + lVar20) = *(undefined4 *)((long)puVar18 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x200); + } + else { + uVar1 = -((ulong)puVar18 >> 2 & 3); + uVar7 = (uint)uVar1 & 3; + if ((uVar1 & 3) == 0) { + iVar17 = 0x80; + uVar1 = 0; + uVar14 = 0x20; + iVar16 = 0x80; + uVar15 = 0; + iVar4 = 0x80; + } + else { + *puVar3 = *puVar18; + uVar15 = uVar7; + if (uVar7 == 1) { + iVar4 = 0x7f; + } + else { + puVar3[1] = puVar18[1]; + if (uVar7 == 3) { + iVar4 = 0x7d; + puVar3[2] = puVar18[2]; + } + else { + iVar4 = 0x7e; + uVar15 = 2; + } + } + uVar1 = (ulong)uVar7; + uVar14 = 0x1f; + iVar17 = 0x80 - uVar7; + iVar16 = 0x7c; + } + uVar7 = 0; + puVar5 = (undefined8 *)(puVar3 + uVar1); + puVar9 = (undefined8 *)(puVar18 + uVar1); + do { + uVar23 = *puVar9; + uVar7 = uVar7 + 1; + puVar5[1] = puVar9[1]; + *puVar5 = uVar23; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar7 < uVar14); + uVar15 = uVar15 + iVar16; + if (iVar16 != iVar17) { + puVar3[(int)uVar15] = puVar18[uVar15]; + if (iVar4 - iVar16 != 1) { + puVar3[(int)(uVar15 + 1)] = puVar18[(ulong)uVar15 + 1]; + if (iVar4 - iVar16 != 2) { + puVar3[(int)(uVar15 + 2)] = puVar18[(ulong)uVar15 + 2]; + } + } + } + } + } + puVar3 = puVar3 + 0x80; + } + param_1[1] = puVar19 + param_3 * 0x80; + puVar18 = (undefined4 *)((long)puVar19 - ((long)puVar11 - (long)param_2)); + if (0x1ff < (long)puVar11 - (long)param_2) { + do { + puVar19 = puVar19 + -0x80; + puVar11 = puVar11 + -0x80; + memcpy(puVar19,puVar11,0x200); + } while (puVar19 != puVar18); + } + puVar19 = param_2 + param_3 * 0x80; + for (; param_2 != puVar19; param_2 = param_2 + 0x80) { + memcpy(param_2,auStack_200,0x200); + } + return; + } + lVar22 = param_3 - (lVar20 >> 9); + puVar18 = puVar19; + for (lVar8 = lVar22; lVar8 != 0; lVar8 = lVar8 + -1) { + pvVar2 = (void *)0x0; + if (puVar18 != (undefined4 *)0x0) { + pvVar2 = memcpy(puVar18,auStack_200,0x200); + } + puVar18 = (undefined4 *)((long)pvVar2 + 0x200); + } + puVar11 = puVar19 + lVar22 * 0x80; + param_1[1] = puVar11; + puVar18 = param_2; + puVar3 = puVar11; + if (puVar19 == param_2) { + param_1[1] = (long)puVar11 + lVar20; + return; + } + do { + if (puVar3 != (undefined4 *)0x0) { + if ((puVar3 < puVar18 + 4) && (puVar18 < puVar3 + 4)) { + lVar8 = 0; + do { + *(undefined4 *)((long)puVar3 + lVar8) = *(undefined4 *)((long)puVar18 + lVar8); + lVar8 = lVar8 + 4; + } while (lVar8 != 0x200); + } + else { + uVar1 = -((ulong)puVar18 >> 2 & 3); + uVar7 = (uint)uVar1 & 3; + if ((uVar1 & 3) == 0) { + uVar1 = 0; + uVar7 = 0x20; + iVar17 = 0x80; + iVar16 = 0x80; + uVar15 = 0; + iVar4 = iVar17; + } + else { + *puVar3 = *puVar18; + uVar15 = uVar7; + if (uVar7 == 1) { + iVar16 = 0x7f; + } + else { + puVar3[1] = puVar18[1]; + if (uVar7 == 3) { + iVar16 = 0x7d; + puVar3[2] = puVar18[2]; + } + else { + iVar16 = 0x7e; + uVar15 = 2; + } + } + uVar1 = (ulong)uVar7; + iVar17 = 0x80 - uVar7; + uVar7 = 0x1f; + iVar4 = 0x7c; + } + /* catch() { ... } // from try @ 0033ca00 with catch @ 0033e048 */ + uVar14 = 0; + puVar5 = (undefined8 *)(puVar3 + uVar1); + puVar9 = (undefined8 *)(puVar18 + uVar1); + do { + uVar23 = *puVar9; + /* try { // try from 0033e058 to 0043e05b has its CatchHandler @ 0033c90c */ + uVar14 = uVar14 + 1; + /* catch() { ... } // from try @ 0033e0fc with catch @ 0033e05c + catch() { ... } // from try @ 0033e158 with catch @ 0033e05c + catch() { ... } // from try @ 0033f6c0 with catch @ 0033e05c */ + puVar5[1] = puVar9[1]; + *puVar5 = uVar23; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar14 < uVar7); + uVar15 = uVar15 + iVar4; + if (iVar17 != iVar4) { + puVar3[(int)uVar15] = puVar18[uVar15]; + if (iVar16 - iVar4 != 1) { + puVar3[(int)(uVar15 + 1)] = puVar18[(ulong)uVar15 + 1]; + if (iVar16 - iVar4 != 2) { + puVar3[(int)(uVar15 + 2)] = puVar18[(ulong)uVar15 + 2]; + } + } + } + } + } + puVar18 = puVar18 + 0x80; + puVar3 = puVar3 + 0x80; + } while (puVar19 != puVar18); + param_1[1] = (long)puVar11 + lVar20; + do { + puVar18 = param_2 + 0x80; + memcpy(param_2,auStack_200,0x200); + param_2 = puVar18; + } while (puVar19 != puVar18); + /* try { // try from 0033e0fc to 0043e0ff has its CatchHandler @ 0033e05c */ + return; + } + /* try { // try from 0033e150 to 0043e153 has its CatchHandler @ 0033f6b0 */ + puVar18 = (undefined4 *)*param_1; + /* try { // try from 0033e158 to 0043e15b has its CatchHandler @ 0033e05c */ + uVar1 = (long)puVar19 - (long)puVar18 >> 9; + if (0x7fffffffffffff - uVar1 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar21 = uVar1; + if (uVar1 < param_3) { + uVar21 = param_3; + } + uVar21 = uVar21 + uVar1; + if ((uVar21 < uVar1) || (0x7fffffffffffff < uVar21)) { + lVar20 = (long)param_2 - (long)puVar18; + uVar21 = 0xfffffffffffffe00; + } + else { + lVar20 = (long)param_2 - (long)puVar18; + if (uVar21 == 0) { + puVar3 = (undefined4 *)0x0; + uVar21 = 0; + goto LAB_0033e1b8; + } + uVar21 = uVar21 * 0x200; + } + puVar3 = operator_new(uVar21); + puVar19 = (undefined4 *)param_1[1]; + puVar18 = (undefined4 *)*param_1; +LAB_0033e1b8: + uVar15 = -((uint)((ulong)param_4 >> 2) & 3) & 3; + puVar11 = (undefined4 *)((long)puVar3 + lVar20); + uVar7 = (0x7c - uVar15 >> 2) + 1; + uVar1 = param_3; + do { + if (puVar11 != (undefined4 *)0x0) { + if ((param_4 < puVar11 + 4) && (puVar11 < param_4 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar11 + lVar20) = *(undefined4 *)((long)param_4 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x200); + } + else { + uVar14 = uVar15; + if (uVar15 == 0) { + iVar17 = 0x80; + } + else { + *puVar11 = *param_4; + if (uVar15 == 1) { + iVar17 = 0x7f; + } + else { + puVar11[1] = param_4[1]; + if (uVar15 == 3) { + iVar17 = 0x7d; + puVar11[2] = param_4[2]; + } + else { + iVar17 = 0x7e; + uVar14 = 2; + } + } + } + uVar10 = 0; + puVar5 = (undefined8 *)(param_4 + uVar15); + puVar9 = (undefined8 *)(puVar11 + uVar15); + do { + uVar23 = *puVar5; + uVar10 = uVar10 + 1; + puVar9[1] = puVar5[1]; + *puVar9 = uVar23; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar10 < uVar7); + uVar14 = uVar14 + uVar7 * 4; + iVar17 = iVar17 + uVar7 * -4; + if (0x80 - uVar15 != uVar7 * 4) { + uVar12 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + puVar11[(int)uVar14] = *(undefined4 *)((long)param_4 + uVar12); + if (iVar17 != 1) { + puVar11[(int)(uVar14 + 1)] = *(undefined4 *)((long)param_4 + uVar12 + 4); + if (iVar17 != 2) { + puVar11[(int)(uVar14 + 2)] = *(undefined4 *)((long)param_4 + uVar12 + 8); + } + } + } + } + } + puVar11 = puVar11 + 0x80; + uVar1 = uVar1 - 1; + } while (uVar1 != 0); + puVar6 = puVar3; + puVar11 = puVar18; + if (param_2 != puVar18) { + do { + if (puVar6 != (undefined4 *)0x0) { + if ((puVar11 < puVar6 + 4) && (puVar6 < puVar11 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar6 + lVar20) = *(undefined4 *)((long)puVar11 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x200); + } + else { + uVar1 = -((ulong)puVar11 >> 2 & 3); + uVar7 = (uint)uVar1 & 3; + if ((uVar1 & 3) == 0) { + uVar1 = 0; + uVar7 = 0x20; + iVar17 = 0x80; + iVar16 = 0x80; + uVar15 = 0; + iVar4 = iVar17; + } + else { + *puVar6 = *puVar11; + uVar15 = uVar7; + if (uVar7 == 1) { + iVar16 = 0x7f; + } + else { + puVar6[1] = puVar11[1]; + if (uVar7 == 3) { + iVar16 = 0x7d; + puVar6[2] = puVar11[2]; + } + else { + iVar16 = 0x7e; + uVar15 = 2; + } + } + uVar1 = (ulong)uVar7; + iVar17 = 0x80 - uVar7; + uVar7 = 0x1f; + iVar4 = 0x7c; + } + uVar14 = 0; + puVar5 = (undefined8 *)(puVar6 + uVar1); + puVar9 = (undefined8 *)(puVar11 + uVar1); + do { + uVar23 = *puVar9; + uVar14 = uVar14 + 1; + puVar5[1] = puVar9[1]; + *puVar5 = uVar23; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar14 < uVar7); + uVar15 = uVar15 + iVar4; + if (iVar17 != iVar4) { + puVar6[(int)uVar15] = puVar11[uVar15]; + if (iVar16 - iVar4 != 1) { + puVar6[(int)(uVar15 + 1)] = puVar11[(ulong)uVar15 + 1]; + if (iVar16 - iVar4 != 2) { + puVar6[(int)(uVar15 + 2)] = puVar11[(ulong)uVar15 + 2]; + } + } + } + } + } + puVar11 = puVar11 + 0x80; + puVar6 = puVar6 + 0x80; + } while (param_2 != puVar11); + puVar6 = (undefined4 *) + ((long)puVar3 + ((long)param_2 - (long)(puVar18 + 0x80) & 0xfffffffffffffe00U) + 0x200) + ; + } + puVar6 = puVar6 + param_3 * 0x80; + puVar11 = param_2; + puVar13 = puVar6; + if (param_2 != puVar19) { + do { + if (puVar13 != (undefined4 *)0x0) { + if ((puVar13 < puVar11 + 4) && (puVar11 < puVar13 + 4)) { + lVar20 = 0; + do { + *(undefined4 *)((long)puVar13 + lVar20) = *(undefined4 *)((long)puVar11 + lVar20); + lVar20 = lVar20 + 4; + } while (lVar20 != 0x200); + } + else { + uVar1 = -((ulong)puVar11 >> 2 & 3); + uVar7 = (uint)uVar1 & 3; + if ((uVar1 & 3) == 0) { + uVar1 = 0; + uVar7 = 0x20; + iVar17 = 0x80; + iVar16 = 0x80; + uVar15 = 0; + iVar4 = iVar17; + } + else { + *puVar13 = *puVar11; + uVar15 = uVar7; + if (uVar7 == 1) { + iVar16 = 0x7f; + } + else { + puVar13[1] = puVar11[1]; + if (uVar7 == 3) { + iVar16 = 0x7d; + puVar13[2] = puVar11[2]; + } + else { + iVar16 = 0x7e; + uVar15 = 2; + } + } + uVar1 = (ulong)uVar7; + iVar17 = 0x80 - uVar7; + uVar7 = 0x1f; + iVar4 = 0x7c; + } + uVar14 = 0; + puVar5 = (undefined8 *)(puVar13 + uVar1); + puVar9 = (undefined8 *)(puVar11 + uVar1); + do { + uVar23 = *puVar9; + uVar14 = uVar14 + 1; + puVar5[1] = puVar9[1]; + *puVar5 = uVar23; + puVar5 = puVar5 + 2; + puVar9 = puVar9 + 2; + } while (uVar14 < uVar7); + uVar15 = uVar15 + iVar4; + if (iVar17 != iVar4) { + puVar13[(int)uVar15] = puVar11[uVar15]; + if (iVar16 - iVar4 != 1) { + puVar13[(int)(uVar15 + 1)] = puVar11[(ulong)uVar15 + 1]; + if (iVar16 - iVar4 != 2) { + puVar13[(int)(uVar15 + 2)] = puVar11[(ulong)uVar15 + 2]; + } + } + } + } + } + puVar11 = puVar11 + 0x80; + puVar13 = puVar13 + 0x80; + } while (puVar11 != puVar19); + puVar6 = (undefined4 *) + ((long)puVar6 + ((long)puVar11 - (long)(param_2 + 0x80) & 0xfffffffffffffe00U) + 0x200) + ; + } + if (puVar18 != (undefined4 *)0x0) { + operator_delete(puVar18); + } + *param_1 = puVar3; + param_1[1] = puVar6; + param_1[2] = (long)puVar3 + uVar21; + return; +} + + +================================================================== + +### FUNC 0033e620 (9488 bytes) name=create + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::_OutputArray::create(int, int const*, int, int, bool, int) const */ + +void __thiscall +cv::_OutputArray::create + (_OutputArray *this,int param_1,int *param_2,int param_3,int param_4,bool param_5, + int param_6) + +{ + long lVar1; + UMat *this_00; + int *piVar2; + Mat *this_01; + undefined8 *puVar3; + UMat *pUVar4; + Mat *pMVar5; + void *pvVar6; + bool bVar7; + undefined8 *puVar8; + undefined1 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined4 uVar12; + undefined2 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + char cVar23; + byte bVar24; + int iVar25; + int iVar26; + char *pcVar27; + undefined4 *puVar28; + undefined8 *puVar29; + long lVar30; + long lVar31; + long lVar32; + ulong *puVar33; + ulong uVar34; + uint *puVar35; + uint uVar36; + void *pvVar37; + ulong uVar38; + ulong uVar39; + size_t sVar40; + void *pvVar41; + vector>,std::allocator>>> + *pvVar42; + vector> *pvVar43; + vector> *pvVar44; + int iVar45; + ulong uVar46; + uint uVar47; + UMat *pUVar48; + Mat *pMVar49; + long lVar50; + undefined8 local_200; + ulong uStack_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 local_1e0; + undefined8 local_1d8; + ulong *local_1d0; + ulong **local_1c8; + ulong *local_1c0; + undefined8 *local_1b8; + undefined8 local_1b0; + undefined8 local_1a8; + undefined8 local_1a0; + undefined8 uStack_198; + undefined8 local_190; + undefined8 uStack_188; + + lVar50 = (long)param_4; + iVar25 = _InputArray::kind((_InputArray *)this); + uVar47 = param_3 & 0xfff; + if (iVar25 == 0x10000) { + if (-1 < param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar28 = (undefined4 *)String::allocate((String *)&local_200,5); + uVar9 = DAT_0046b094; + *puVar28 = DAT_0046b090; + *(undefined1 *)(puVar28 + 1) = uVar9; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8a8); + String::deallocate((String *)&local_200); + } + pMVar49 = *(Mat **)(this + 8); + if (param_5) { + if ((*(uint *)pMVar49 >> 0xe & 1) == 0) { + cVar23 = fixedType(this); + if ((cVar23 != '\0') || (cVar23 = fixedSize(this), cVar23 != '\0')) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x1c); + uVar12 = s__fixedType_______fixedSize___0046b9c0._24_4_; + uVar11 = s__fixedType_______fixedSize___0046b9c0._8_8_; + uVar10 = s__fixedType_______fixedSize___0046b9c0._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s__fixedType_______fixedSize___0046b9c0._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8ae); + String::deallocate((String *)&local_200); + } + if (*(long *)(pMVar49 + 0x38) != 0) { + piVar2 = (int *)(*(long *)(pMVar49 + 0x38) + 0x14); + do { + iVar25 = *piVar2; + cVar23 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar25 + -1; + cVar23 = ExclusiveMonitorsStatus(); + } + } while (cVar23 != '\0'); + if (iVar25 == 1) { + Mat::deallocate(pMVar49); + } + } + *(undefined8 *)(pMVar49 + 0x38) = 0; + *(undefined8 *)(pMVar49 + 0x10) = 0; + *(undefined8 *)(pMVar49 + 0x28) = 0; + *(undefined8 *)(pMVar49 + 0x20) = 0; + *(undefined8 *)(pMVar49 + 0x18) = 0; + if (0 < *(int *)(pMVar49 + 4)) { + iVar25 = 0; + puVar28 = *(undefined4 **)(pMVar49 + 0x40); + do { + *puVar28 = 0; + iVar25 = iVar25 + 1; + puVar28 = puVar28 + 1; + } while (iVar25 < *(int *)(pMVar49 + 4)); + } + } + if (((((param_1 == 2) && (*(int *)(pMVar49 + 4) == 2)) && (*(long *)(pMVar49 + 0x10) != 0)) && + ((uVar47 == (*(uint *)pMVar49 & 0xfff) && (*(int *)(pMVar49 + 8) == param_2[1])))) && + (*(int *)(pMVar49 + 0xc) == *param_2)) { + return; + } + } + cVar23 = fixedType(this); + if (cVar23 != '\0') { + uVar36 = *(uint *)pMVar49; + if ((((uint)param_3 >> 3 & 0x1ff) + 1 == (uVar36 >> 3 & 0x1ff) + 1) && + ((param_6 >> (*(uint *)this & 0x1f) & 1U) != 0)) { + uVar47 = uVar36 & 0xfff; + } + else if (uVar47 != (uVar36 & 0xfff)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x1e); + uVar13 = _LAB_0046b77c; + uVar12 = _LAB_0046b778; + uVar11 = DAT_0046b768; + uVar10 = DAT_0046b760; + puVar29[2] = _DAT_0046b770; + *(undefined4 *)(puVar29 + 3) = uVar12; + *(undefined2 *)((long)puVar29 + 0x1c) = uVar13; + *puVar29 = uVar10; + puVar29[1] = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8bc); + String::deallocate((String *)&local_200); + } + } + cVar23 = fixedSize(this); + if (cVar23 != '\0') { + if (*(int *)(pMVar49 + 4) != param_1) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0xb); + cVar23 = s_m_dims____d_0046b780[10]; + uVar13 = s_m_dims____d_0046b780._8_2_; + *(undefined8 *)pcVar27 = s_m_dims____d_0046b780._0_8_; + *(undefined2 *)(pcVar27 + 8) = uVar13; + pcVar27[10] = cVar23; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8c0); + String::deallocate((String *)&local_200); + } + if (0 < param_1) { + lVar50 = 0; + do { + if (*(int *)(*(long *)(pMVar49 + 0x40) + lVar50) != *(int *)((long)param_2 + lVar50)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x15); + uVar12 = s_m_size_j_____sizes_j__0046b790._16_4_; + uVar11 = s_m_size_j_____sizes_j__0046b790._8_8_; + uVar10 = s_m_size_j_____sizes_j__0046b790._0_8_; + pcVar27[0x14] = s_m_size_j_____sizes_j__0046b790[0x14]; + *(undefined4 *)(pcVar27 + 0x10) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8c2); + String::deallocate((String *)&local_200); + } + lVar50 = lVar50 + 4; + } while (lVar50 != ((ulong)(param_1 - 1) + 1) * 4); + } + } +LAB_0033eb5c: + Mat::create(pMVar49,param_1,param_2,uVar47); + return; + } + if (iVar25 == 0xa0000) { + if (-1 < param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar28 = (undefined4 *)String::allocate((String *)&local_200,5); + uVar9 = DAT_0046b094; + *puVar28 = DAT_0046b090; + *(undefined1 *)(puVar28 + 1) = uVar9; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8ca); + String::deallocate((String *)&local_200); + } + pUVar48 = *(UMat **)(this + 8); + if (param_5) { + if ((*(uint *)pUVar48 >> 0xe & 1) == 0) { + /* try { // try from 0033f6c0 to 0043f6c3 has its CatchHandler @ 0033e05c */ + /* catch() { ... } // from try @ 0033f764 with catch @ 0033f6c4 + catch() { ... } // from try @ 0033f7c0 with catch @ 0033f6c4 + catch() { ... } // from try @ 00340ee8 with catch @ 0033f6c4 */ + cVar23 = fixedType(this); + if ((cVar23 != '\0') || (cVar23 = fixedSize(this), cVar23 != '\0')) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x1c); + uVar12 = s__fixedType_______fixedSize___0046b9c0._24_4_; + uVar11 = s__fixedType_______fixedSize___0046b9c0._8_8_; + uVar10 = s__fixedType_______fixedSize___0046b9c0._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s__fixedType_______fixedSize___0046b9c0._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8d0); + String::deallocate((String *)&local_200); + } + if (*(long *)(pUVar48 + 0x20) != 0) { + piVar2 = (int *)(*(long *)(pUVar48 + 0x20) + 0x10); + do { + iVar25 = *piVar2; + cVar23 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar25 + -1; + cVar23 = ExclusiveMonitorsStatus(); + } + } while (cVar23 != '\0'); + if (iVar25 == 1) { + UMat::deallocate(pUVar48); + } + } + /* try { // try from 0033f764 to 0043f767 has its CatchHandler @ 0033f6c4 */ + if (0 < *(int *)(pUVar48 + 4)) { + iVar25 = 0; + puVar28 = *(undefined4 **)(pUVar48 + 0x30); + do { + *puVar28 = 0; + iVar25 = iVar25 + 1; + puVar28 = puVar28 + 1; + } while (iVar25 < *(int *)(pUVar48 + 4)); + } + *(undefined8 *)(pUVar48 + 0x20) = 0; + } + if (((param_1 == 2) && (*(int *)(pUVar48 + 4) == 2)) && (*(long *)(pUVar48 + 0x20) != 0)) { + if ((((long)*(int *)(pUVar48 + 0xc) * (long)*(int *)(pUVar48 + 8) != 0) && + (uVar47 == (*(uint *)pUVar48 & 0xfff))) && + ((param_2[1] == *(int *)(pUVar48 + 8) && (*param_2 == *(int *)(pUVar48 + 0xc))))) { + return; + } + } + } + cVar23 = fixedType(this); + if (cVar23 != '\0') { + uVar36 = *(uint *)pUVar48; + if ((((uint)param_3 >> 3 & 0x1ff) + 1 == (uVar36 >> 3 & 0x1ff) + 1) && + ((param_6 >> (*(uint *)this & 0x1f) & 1U) != 0)) { + uVar47 = uVar36 & 0xfff; + } + else if (uVar47 != (uVar36 & 0xfff)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x1e); + uVar13 = _LAB_0046b77c; + uVar12 = _LAB_0046b778; + uVar11 = DAT_0046b768; + uVar10 = DAT_0046b760; + puVar29[2] = _DAT_0046b770; + *(undefined4 *)(puVar29 + 3) = uVar12; + *(undefined2 *)((long)puVar29 + 0x1c) = uVar13; + *puVar29 = uVar10; + puVar29[1] = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8de); + String::deallocate((String *)&local_200); + } + } + cVar23 = fixedSize(this); + if (cVar23 != '\0') { + if (*(int *)(pUVar48 + 4) != param_1) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0xb); + cVar23 = s_m_dims____d_0046b780[10]; + uVar13 = s_m_dims____d_0046b780._8_2_; + *(undefined8 *)pcVar27 = s_m_dims____d_0046b780._0_8_; + *(undefined2 *)(pcVar27 + 8) = uVar13; + pcVar27[10] = cVar23; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8e2); + String::deallocate((String *)&local_200); + } + if (0 < param_1) { + lVar50 = 0; + do { + if (*(int *)(*(long *)(pUVar48 + 0x30) + lVar50) != *(int *)((long)param_2 + lVar50)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x15); + uVar12 = s_m_size_j_____sizes_j__0046b790._16_4_; + uVar11 = s_m_size_j_____sizes_j__0046b790._8_8_; + uVar10 = s_m_size_j_____sizes_j__0046b790._0_8_; + pcVar27[0x14] = s_m_size_j_____sizes_j__0046b790[0x14]; + *(undefined4 *)(pcVar27 + 0x10) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8e4); + String::deallocate((String *)&local_200); + } + lVar50 = lVar50 + 4; + } while (lVar50 != ((ulong)(param_1 - 1) + 1) * 4); + } + } +LAB_0033edd4: + UMat::create(pUVar48,param_1,param_2,uVar47,0); + return; + } + if (iVar25 == 0x20000) { + if (-1 < param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar28 = (undefined4 *)String::allocate((String *)&local_200,5); + uVar9 = DAT_0046b094; + *puVar28 = DAT_0046b090; + *(undefined1 *)(puVar28 + 1) = uVar9; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8ec); + String::deallocate((String *)&local_200); + } + if ((uVar47 != (*(uint *)this & 0xfff)) && + ((((uint)param_3 >> 3 & 0x1ff) != 0 || ((param_6 >> (*(uint *)this & 0x1f) & 1U) == 0)))) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x51); + uVar21 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._72_8_; + uVar20 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._64_8_; + uVar19 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._56_8_; + uVar18 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._48_8_; + uVar17 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._40_8_; + uVar16 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._32_8_; + uVar15 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._24_8_; + uVar14 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._16_8_; + uVar11 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._8_8_; + uVar10 = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8._0_8_; + pcVar27[0x50] = s_mtype____type0_____CV_MAT_CN_mty_0046b7a8[0x50]; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + *(undefined8 *)(pcVar27 + 0x10) = uVar14; + *(undefined8 *)(pcVar27 + 0x18) = uVar15; + *(undefined8 *)(pcVar27 + 0x20) = uVar16; + *(undefined8 *)(pcVar27 + 0x28) = uVar17; + *(undefined8 *)(pcVar27 + 0x30) = uVar18; + *(undefined8 *)(pcVar27 + 0x38) = uVar19; + *(undefined8 *)(pcVar27 + 0x40) = uVar20; + *(undefined8 *)(pcVar27 + 0x48) = uVar21; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8ee); + String::deallocate((String *)&local_200); + } + if (param_1 == 2) { + if ((*param_2 == *(int *)(this + 0x14)) && (param_2[1] == *(int *)(this + 0x10))) { + return; + } + if (((param_5) && (*param_2 == *(int *)(this + 0x10))) && + (*(int *)(this + 0x14) == param_2[1])) { + return; + } + } + local_200 = (void *)0x0; + uStack_1f8 = 0; + pvVar37 = (void *)String::allocate((String *)&local_200,0x81); + memcpy(pvVar37,&LAB_0046b800,0x81); + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8f0); + goto LAB_0033ef68; + } + if ((iVar25 - 0x30000U & 0xfffeffff) != 0) { + if (iVar25 == 0) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x2c); + uVar12 = s_create___called_for_the_missing_o_0046b990._40_4_; + uVar15 = s_create___called_for_the_missing_o_0046b990._24_8_; + uVar14 = s_create___called_for_the_missing_o_0046b990._16_8_; + uVar11 = s_create___called_for_the_missing_o_0046b990._8_8_; + uVar10 = s_create___called_for_the_missing_o_0046b990._0_8_; + *(undefined8 *)(pcVar27 + 0x20) = s_create___called_for_the_missing_o_0046b990._32_8_; + *(undefined4 *)(pcVar27 + 0x28) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + *(undefined8 *)(pcVar27 + 0x10) = uVar14; + *(undefined8 *)(pcVar27 + 0x18) = uVar15; + error(-0x1b,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x948); + goto LAB_0033ef68; + } + if (iVar25 != 0x50000) { + if (iVar25 != 0xb0000) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x1e); + uVar13 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar12 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar11 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar10 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar12; + *(undefined2 *)(pcVar27 + 0x1c) = uVar13; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd5,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9c2); + goto LAB_0033ef68; + } + pvVar43 = *(vector> **)(this + 8); + if (-1 < param_4) { + lVar31 = *(long *)pvVar43; + if ((int)(*(long *)(pvVar43 + 8) - lVar31 >> 4) * -0x33333333 <= param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x11); + uVar11 = s_i_<_(int)v_size()_0046b278._8_8_; + uVar10 = s_i_<_(int)v_size()_0046b278._0_8_; + pcVar27[0x10] = s_i_<_(int)v_size()_0046b278[0x10]; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9a0); + String::deallocate((String *)&local_200); + lVar31 = *(long *)pvVar43; + } + pUVar48 = (UMat *)(lVar31 + lVar50 * 0x50); + if (param_5) { + if ((*(uint *)(lVar31 + lVar50 * 0x50) >> 0xe & 1) == 0) { + cVar23 = fixedType(this); + if ((cVar23 != '\0') || (cVar23 = fixedSize(this), cVar23 != '\0')) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x1c); + uVar12 = s__fixedType_______fixedSize___0046b9c0._24_4_; + uVar11 = s__fixedType_______fixedSize___0046b9c0._8_8_; + uVar10 = s__fixedType_______fixedSize___0046b9c0._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s__fixedType_______fixedSize___0046b9c0._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9a7); + String::deallocate((String *)&local_200); + } + if (*(long *)(pUVar48 + 0x20) != 0) { + piVar2 = (int *)(*(long *)(pUVar48 + 0x20) + 0x10); + do { + iVar25 = *piVar2; + cVar23 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar25 + -1; + cVar23 = ExclusiveMonitorsStatus(); + } + } while (cVar23 != '\0'); + if (iVar25 == 1) { + UMat::deallocate(pUVar48); + } + } + if (0 < *(int *)(pUVar48 + 4)) { + iVar25 = 0; + puVar28 = *(undefined4 **)(pUVar48 + 0x30); + do { + *puVar28 = 0; + iVar25 = iVar25 + 1; + puVar28 = puVar28 + 1; + } while (iVar25 < *(int *)(pUVar48 + 4)); + } + *(undefined8 *)(pUVar48 + 0x20) = 0; + } + if (((param_1 == 2) && (*(int *)(pUVar48 + 4) == 2)) && + ((*(long *)(pUVar48 + 0x20) != 0 && + (((uVar47 == (*(uint *)pUVar48 & 0xfff) && (*(int *)(pUVar48 + 8) == param_2[1])) && + (*(int *)(pUVar48 + 0xc) == *param_2)))))) { + return; + } + } + cVar23 = fixedType(this); + if (cVar23 != '\0') { + uVar36 = *(uint *)pUVar48; + if ((((uint)param_3 >> 3 & 0x1ff) + 1 == (uVar36 >> 3 & 0x1ff) + 1) && + ((param_6 >> (*(uint *)this & 0x1f) & 1U) != 0)) { + uVar47 = uVar36 & 0xfff; + } + else if (uVar47 != (uVar36 & 0xfff)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x1e); + uVar13 = _LAB_0046b77c; + uVar12 = _LAB_0046b778; + uVar11 = DAT_0046b768; + uVar10 = DAT_0046b760; + puVar29[2] = _DAT_0046b770; + *(undefined4 *)(puVar29 + 3) = uVar12; + *(undefined2 *)((long)puVar29 + 0x1c) = uVar13; + *puVar29 = uVar10; + puVar29[1] = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9b5); + String::deallocate((String *)&local_200); + } + } + cVar23 = fixedSize(this); + if (cVar23 != '\0') { + if (*(int *)(pUVar48 + 4) != param_1) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0xb); + cVar23 = s_m_dims____d_0046b780[10]; + uVar13 = s_m_dims____d_0046b780._8_2_; + *(undefined8 *)pcVar27 = s_m_dims____d_0046b780._0_8_; + *(undefined2 *)(pcVar27 + 8) = uVar13; + pcVar27[10] = cVar23; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9b9); + String::deallocate((String *)&local_200); + } + if (0 < param_1) { + lVar50 = 0; + do { + if (*(int *)(*(long *)(pUVar48 + 0x30) + lVar50) != *(int *)((long)param_2 + lVar50)) + { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x15); + uVar12 = s_m_size_j_____sizes_j__0046b790._16_4_; + uVar11 = s_m_size_j_____sizes_j__0046b790._8_8_; + uVar10 = s_m_size_j_____sizes_j__0046b790._0_8_; + pcVar27[0x14] = s_m_size_j_____sizes_j__0046b790[0x14]; + *(undefined4 *)(pcVar27 + 0x10) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9bb); + String::deallocate((String *)&local_200); + } + lVar50 = lVar50 + 4; + } while (lVar50 != ((ulong)(param_1 - 1) + 1) * 4); + } + } + goto LAB_0033edd4; + } + if (param_1 == 2) { + iVar45 = *param_2; + iVar25 = param_2[1]; + if ((iVar45 == 1) || (iVar25 == 1)) goto LAB_00340360; + if (iVar45 * iVar25 != 0) goto LAB_003402e4; + } + else { +LAB_003402e4: + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x44); + uVar17 = s_d____2_____sizes_0_____1____size_0046b888._40_8_; + uVar16 = s_d____2_____sizes_0_____1____size_0046b888._32_8_; + uVar15 = s_d____2_____sizes_0_____1____size_0046b888._24_8_; + uVar14 = s_d____2_____sizes_0_____1____size_0046b888._16_8_; + uVar11 = s_d____2_____sizes_0_____1____size_0046b888._8_8_; + uVar10 = s_d____2_____sizes_0_____1____size_0046b888._0_8_; + *(undefined4 *)(pcVar27 + 0x40) = s_d____2_____sizes_0_____1____size_0046b888._64_4_; + uVar19 = s_d____2_____sizes_0_____1____size_0046b888._56_8_; + uVar18 = s_d____2_____sizes_0_____1____size_0046b888._48_8_; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + *(undefined8 *)(pcVar27 + 0x10) = uVar14; + *(undefined8 *)(pcVar27 + 0x18) = uVar15; + *(undefined8 *)(pcVar27 + 0x20) = uVar16; + *(undefined8 *)(pcVar27 + 0x28) = uVar17; + *(undefined8 *)(pcVar27 + 0x30) = uVar18; + *(undefined8 *)(pcVar27 + 0x38) = uVar19; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x98d); + String::deallocate((String *)&local_200); + iVar25 = param_2[1]; + iVar45 = *param_2; +LAB_00340360: + if (0 < iVar25 * iVar45) { + uVar46 = (ulong)(iVar25 + iVar45 + -1); + goto LAB_0033fa78; + } + } + uVar46 = 0; +LAB_0033fa78: + lVar50 = *(long *)(pvVar43 + 8) - *(long *)pvVar43; + uVar34 = (lVar50 >> 4) * -0x3333333333333333; + bVar24 = fixedSize(this); + if ((uVar46 == uVar34) < bVar24) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x1b); + uVar9 = DAT_0046ba62; + uVar13 = DAT_0046ba60; + uVar11 = _LAB_0046ba50; + uVar10 = DAT_0046ba48; + puVar29[2] = DAT_0046ba58; + *(undefined2 *)(puVar29 + 3) = uVar13; + *(undefined1 *)((long)puVar29 + 0x1a) = uVar9; + *puVar29 = uVar10; + puVar29[1] = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x990); + String::deallocate((String *)&local_200); + } + local_1c8 = &local_1c0; + local_1d0 = &uStack_1f8; + local_200 = (void *)DAT_00340e80; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e0 = 0; + local_1e8 = (ulong)local_1e8._4_4_ << 0x20; + pUVar48 = *(UMat **)(pvVar43 + 8); + local_1d8 = 0; + local_1b8 = (undefined8 *)0x0; + lVar31 = (long)pUVar48 - *(long *)pvVar43 >> 4; + local_1c0 = (ulong *)0x0; + uVar39 = lVar31 * -0x3333333333333333; + if (uVar39 < uVar46) { + std::vector>::_M_fill_insert + (pvVar43,pUVar48,uVar46 + lVar31 * 0x3333333333333333,&local_200); + } + else if (uVar46 < uVar39) { + pUVar4 = (UMat *)(*(long *)pvVar43 + uVar46 * 0x50); + for (this_00 = pUVar4; pUVar48 != this_00; this_00 = this_00 + 0x50) { + UMat::~UMat(this_00); + } + *(UMat **)(pvVar43 + 8) = pUVar4; + } + UMat::~UMat((UMat *)&local_200); + cVar23 = fixedType(this); + if (cVar23 == '\0') { + return; + } + uVar47 = *(uint *)this; + if (uVar46 <= uVar34) { + return; + } + lVar31 = *(long *)pvVar43; + do { + uVar36 = *(uint *)(lVar31 + lVar50); + puVar35 = (uint *)(lVar31 + lVar50); + if ((uVar47 & 0xfff) != (uVar36 & 0xfff)) { + if (*(long *)(puVar35 + 8) != 0) { + if ((int)puVar35[1] < 3) { + lVar32 = (long)(int)puVar35[3] * (long)(int)puVar35[2]; + } + else { + lVar30 = 0; + lVar32 = 1; + do { + lVar1 = lVar30 * 4; + lVar30 = lVar30 + 1; + lVar32 = lVar32 * *(int *)(*(long *)(puVar35 + 0xc) + lVar1); + } while ((int)lVar30 < (int)puVar35[1]); + } + if (lVar32 != 0) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0xc); + uVar12 = DAT_0046ba70; + *puVar29 = DAT_0046ba68; + *(undefined4 *)(puVar29 + 1) = uVar12; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x999); + String::deallocate((String *)&local_200); + lVar31 = *(long *)pvVar43; + puVar35 = (uint *)(lVar31 + lVar50); + uVar36 = *(uint *)(lVar31 + lVar50); + } + } + *puVar35 = uVar36 & 0xfffff000 | uVar47 & 0xfff; + } + uVar34 = uVar34 + 1; + lVar50 = lVar50 + 0x50; + } while (uVar34 < uVar46); + return; + } + pvVar44 = *(vector> **)(this + 8); + if (-1 < param_4) { + lVar31 = *(long *)pvVar44; + /* try { // try from 0033f7b8 to 0043f7bb has its CatchHandler @ 00340ed8 */ + /* try { // try from 0033f7c0 to 0043f7c3 has its CatchHandler @ 0033f6c4 */ + if ((int)(*(long *)(pvVar44 + 8) - lVar31 >> 5) * -0x55555555 <= param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x11); + uVar11 = s_i_<_(int)v_size()_0046b278._8_8_; + uVar10 = s_i_<_(int)v_size()_0046b278._0_8_; + pcVar27[0x10] = s_i_<_(int)v_size()_0046b278[0x10]; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x965); + String::deallocate((String *)&local_200); + lVar31 = *(long *)pvVar44; + } + pMVar49 = (Mat *)(lVar31 + lVar50 * 0x60); + if (param_5) { + if ((*(uint *)(lVar31 + lVar50 * 0x60) >> 0xe & 1) == 0) { + cVar23 = fixedType(this); + if ((cVar23 != '\0') || (cVar23 = fixedSize(this), cVar23 != '\0')) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x1c); + uVar12 = s__fixedType_______fixedSize___0046b9c0._24_4_; + uVar11 = s__fixedType_______fixedSize___0046b9c0._8_8_; + uVar10 = s__fixedType_______fixedSize___0046b9c0._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s__fixedType_______fixedSize___0046b9c0._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x96c); + String::deallocate((String *)&local_200); + } + if (*(long *)(pMVar49 + 0x38) != 0) { + piVar2 = (int *)(*(long *)(pMVar49 + 0x38) + 0x14); + do { + iVar25 = *piVar2; + cVar23 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar25 + -1; + cVar23 = ExclusiveMonitorsStatus(); + } + } while (cVar23 != '\0'); + if (iVar25 == 1) { + Mat::deallocate(pMVar49); + } + } + *(undefined8 *)(pMVar49 + 0x38) = 0; + *(undefined8 *)(pMVar49 + 0x10) = 0; + *(undefined8 *)(pMVar49 + 0x28) = 0; + *(undefined8 *)(pMVar49 + 0x20) = 0; + *(undefined8 *)(pMVar49 + 0x18) = 0; + if (0 < *(int *)(pMVar49 + 4)) { + iVar25 = 0; + puVar28 = *(undefined4 **)(pMVar49 + 0x40); + do { + *puVar28 = 0; + iVar25 = iVar25 + 1; + puVar28 = puVar28 + 1; + } while (iVar25 < *(int *)(pMVar49 + 4)); + } + } + if (((((param_1 == 2) && (*(int *)(pMVar49 + 4) == 2)) && (*(long *)(pMVar49 + 0x10) != 0)) + && ((uVar47 == (*(uint *)pMVar49 & 0xfff) && (*(int *)(pMVar49 + 8) == param_2[1])))) && + (*(int *)(pMVar49 + 0xc) == *param_2)) { + return; + } + } + cVar23 = fixedType(this); + if (cVar23 != '\0') { + uVar36 = *(uint *)pMVar49; + if ((((uint)param_3 >> 3 & 0x1ff) + 1 == (uVar36 >> 3 & 0x1ff) + 1) && + ((param_6 >> (*(uint *)this & 0x1f) & 1U) != 0)) { + uVar47 = uVar36 & 0xfff; + } + else if (uVar47 != (uVar36 & 0xfff)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x1e); + uVar13 = _LAB_0046b77c; + uVar12 = _LAB_0046b778; + uVar11 = DAT_0046b768; + uVar10 = DAT_0046b760; + puVar29[2] = _DAT_0046b770; + *(undefined4 *)(puVar29 + 3) = uVar12; + *(undefined2 *)((long)puVar29 + 0x1c) = uVar13; + *puVar29 = uVar10; + puVar29[1] = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x97a); + String::deallocate((String *)&local_200); + } + } + cVar23 = fixedSize(this); + if (cVar23 != '\0') { + if (*(int *)(pMVar49 + 4) != param_1) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0xb); + cVar23 = s_m_dims____d_0046b780[10]; + uVar13 = s_m_dims____d_0046b780._8_2_; + *(undefined8 *)pcVar27 = s_m_dims____d_0046b780._0_8_; + *(undefined2 *)(pcVar27 + 8) = uVar13; + pcVar27[10] = cVar23; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x97e); + String::deallocate((String *)&local_200); + } + if (0 < param_1) { + lVar50 = 0; + do { + if (*(int *)(*(long *)(pMVar49 + 0x40) + lVar50) != *(int *)((long)param_2 + lVar50)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x15); + uVar12 = s_m_size_j_____sizes_j__0046b790._16_4_; + uVar11 = s_m_size_j_____sizes_j__0046b790._8_8_; + uVar10 = s_m_size_j_____sizes_j__0046b790._0_8_; + pcVar27[0x14] = s_m_size_j_____sizes_j__0046b790[0x14]; + *(undefined4 *)(pcVar27 + 0x10) = uVar12; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x980); + String::deallocate((String *)&local_200); + } + lVar50 = lVar50 + 4; + } while (lVar50 != ((ulong)(param_1 - 1) + 1) * 4); + } + } + goto LAB_0033eb5c; + } + if (param_1 == 2) { + iVar25 = *param_2; + iVar45 = param_2[1]; + if (iVar25 == 1) goto LAB_00340574; + if (iVar45 == 1) { + iVar45 = 1; + goto LAB_00340574; + } + if (iVar25 * iVar45 != 0) goto LAB_003404f8; +LAB_00340080: + uVar46 = 0; + } + else { +LAB_003404f8: + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x44); + uVar17 = s_d____2_____sizes_0_____1____size_0046b888._40_8_; + uVar16 = s_d____2_____sizes_0_____1____size_0046b888._32_8_; + uVar15 = s_d____2_____sizes_0_____1____size_0046b888._24_8_; + uVar14 = s_d____2_____sizes_0_____1____size_0046b888._16_8_; + uVar11 = s_d____2_____sizes_0_____1____size_0046b888._8_8_; + uVar10 = s_d____2_____sizes_0_____1____size_0046b888._0_8_; + *(undefined4 *)(pcVar27 + 0x40) = s_d____2_____sizes_0_____1____size_0046b888._64_4_; + uVar19 = s_d____2_____sizes_0_____1____size_0046b888._56_8_; + uVar18 = s_d____2_____sizes_0_____1____size_0046b888._48_8_; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + *(undefined8 *)(pcVar27 + 0x10) = uVar14; + *(undefined8 *)(pcVar27 + 0x18) = uVar15; + *(undefined8 *)(pcVar27 + 0x20) = uVar16; + *(undefined8 *)(pcVar27 + 0x28) = uVar17; + *(undefined8 *)(pcVar27 + 0x30) = uVar18; + *(undefined8 *)(pcVar27 + 0x38) = uVar19; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x952); + String::deallocate((String *)&local_200); + iVar25 = *param_2; + iVar45 = param_2[1]; +LAB_00340574: + if (iVar25 * iVar45 < 1) goto LAB_00340080; + uVar46 = (ulong)(iVar25 + iVar45 + -1); + } + lVar50 = *(long *)(pvVar44 + 8) - *(long *)pvVar44; + uVar34 = (lVar50 >> 5) * -0x5555555555555555; + bVar24 = fixedSize(this); + if ((uVar46 == uVar34) < bVar24) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x1b); + uVar9 = DAT_0046ba62; + uVar13 = DAT_0046ba60; + uVar11 = _LAB_0046ba50; + uVar10 = DAT_0046ba48; + puVar29[2] = DAT_0046ba58; + *(undefined2 *)(puVar29 + 3) = uVar13; + *(undefined1 *)((long)puVar29 + 0x1a) = uVar9; + *puVar29 = uVar10; + puVar29[1] = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x955); + String::deallocate((String *)&local_200); + } + local_1b8 = &local_1b0; + local_1c0 = &uStack_1f8; + local_200 = (void *)DAT_00340e80; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1e0 = 0; + local_1d8 = 0; + local_1d0 = (ulong *)0x0; + local_1c8 = (ulong **)0x0; + local_1a8 = 0; + pMVar49 = *(Mat **)(pvVar44 + 8); + local_1b0 = 0; + lVar31 = (long)pMVar49 - *(long *)pvVar44 >> 5; + uVar39 = lVar31 * -0x5555555555555555; + if (uVar39 < uVar46) { + std::vector>::_M_fill_insert + (pvVar44,pMVar49,uVar46 + lVar31 * 0x5555555555555555,&local_200); + } + else { + if (uVar39 <= uVar46) goto LAB_00340184; + pMVar5 = (Mat *)(*(long *)pvVar44 + uVar46 * 0x60); + for (this_01 = pMVar5; pMVar49 != this_01; this_01 = this_01 + 0x60) { + if (*(long *)(this_01 + 0x38) != 0) { + piVar2 = (int *)(*(long *)(this_01 + 0x38) + 0x14); + do { + iVar25 = *piVar2; + cVar23 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar25 + -1; + cVar23 = ExclusiveMonitorsStatus(); + } + } while (cVar23 != '\0'); + if (iVar25 == 1) { + Mat::deallocate(this_01); + } + } + *(undefined8 *)(this_01 + 0x38) = 0; + *(undefined8 *)(this_01 + 0x10) = 0; + *(undefined8 *)(this_01 + 0x28) = 0; + *(undefined8 *)(this_01 + 0x20) = 0; + *(undefined8 *)(this_01 + 0x18) = 0; + if (0 < *(int *)(this_01 + 4)) { + iVar25 = 0; + puVar28 = *(undefined4 **)(this_01 + 0x40); + do { + *puVar28 = 0; + iVar25 = iVar25 + 1; + puVar28 = puVar28 + 1; + } while (iVar25 < *(int *)(this_01 + 4)); + } + if (*(Mat **)(this_01 + 0x48) != this_01 + 0x50) { + fastFree(*(Mat **)(this_01 + 0x48)); + } + } + *(Mat **)(pvVar44 + 8) = pMVar5; + } + if (local_1c8 != (ulong **)0x0) { + piVar2 = (int *)((long)local_1c8 + 0x14); + do { + iVar25 = *piVar2; + cVar23 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar7) { + *piVar2 = iVar25 + -1; + cVar23 = ExclusiveMonitorsStatus(); + } + } while (cVar23 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_200); + } + } +LAB_00340184: + local_1c8 = (ulong **)0x0; + local_1f0 = 0; + local_1d8 = 0; + local_1e0 = 0; + local_1e8 = 0; + if (0 < local_200._4_4_) { + iVar25 = 0; + puVar33 = local_1c0; + do { + *(undefined4 *)puVar33 = 0; + iVar25 = iVar25 + 1; + puVar33 = (ulong *)((long)puVar33 + 4); + } while (iVar25 < local_200._4_4_); + } + if (local_1b8 != &local_1b0) { + fastFree(local_1b8); + } + cVar23 = fixedType(this); + if (cVar23 == '\0') { + return; + } + uVar47 = *(uint *)this; + if (uVar46 <= uVar34) { + return; + } + lVar31 = *(long *)pvVar44; + do { + uVar36 = *(uint *)(lVar31 + lVar50); + puVar35 = (uint *)(lVar31 + lVar50); + if ((uVar47 & 0xfff) != (uVar36 & 0xfff)) { + if (*(long *)(puVar35 + 4) != 0) { + if ((int)puVar35[1] < 3) { + lVar32 = (long)(int)puVar35[3] * (long)(int)puVar35[2]; + } + else { + lVar30 = 0; + lVar32 = 1; + do { + lVar1 = lVar30 * 4; + lVar30 = lVar30 + 1; + lVar32 = lVar32 * *(int *)(*(long *)(puVar35 + 0x10) + lVar1); + } while ((int)lVar30 < (int)puVar35[1]); + } + if (lVar32 != 0) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0xc); + uVar12 = DAT_0046ba70; + *puVar29 = DAT_0046ba68; + *(undefined4 *)(puVar29 + 1) = uVar12; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x95e); + String::deallocate((String *)&local_200); + lVar31 = *(long *)pvVar44; + puVar35 = (uint *)(lVar31 + lVar50); + uVar36 = *(uint *)(lVar31 + lVar50); + } + } + *puVar35 = uVar36 & 0xfffff000 | uVar47 & 0xfff; + } + uVar34 = uVar34 + 1; + lVar50 = lVar50 + 0x60; + } while (uVar34 < uVar46); + return; + } + if (param_1 == 2) { + iVar45 = *param_2; + if (iVar45 == 1) goto LAB_0033e72c; + if (param_2[1] == 1) { + iVar26 = 1; + goto LAB_0033e730; + } + if (iVar45 * param_2[1] != 0) goto LAB_0033e6b4; +LAB_0033f234: + uVar46 = 0; + } + else { +LAB_0033e6b4: + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x44); + uVar19 = s_d____2_____sizes_0_____1____size_0046b888._56_8_; + uVar18 = s_d____2_____sizes_0_____1____size_0046b888._48_8_; + uVar17 = s_d____2_____sizes_0_____1____size_0046b888._40_8_; + uVar16 = s_d____2_____sizes_0_____1____size_0046b888._32_8_; + uVar15 = s_d____2_____sizes_0_____1____size_0046b888._24_8_; + uVar14 = s_d____2_____sizes_0_____1____size_0046b888._16_8_; + uVar11 = s_d____2_____sizes_0_____1____size_0046b888._8_8_; + uVar10 = s_d____2_____sizes_0_____1____size_0046b888._0_8_; + *(undefined4 *)(pcVar27 + 0x40) = s_d____2_____sizes_0_____1____size_0046b888._64_4_; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + *(undefined8 *)(pcVar27 + 0x10) = uVar14; + *(undefined8 *)(pcVar27 + 0x18) = uVar15; + *(undefined8 *)(pcVar27 + 0x20) = uVar16; + *(undefined8 *)(pcVar27 + 0x28) = uVar17; + *(undefined8 *)(pcVar27 + 0x30) = uVar18; + *(undefined8 *)(pcVar27 + 0x38) = uVar19; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8f6); + String::deallocate((String *)&local_200); + iVar45 = *param_2; +LAB_0033e72c: + iVar26 = param_2[1]; +LAB_0033e730: + if (iVar45 * iVar26 < 1) goto LAB_0033f234; + uVar46 = (ulong)(iVar45 + iVar26 + -1); + } + pvVar42 = *(vector>,std::allocator>>> + **)(this + 8); + if (iVar25 == 0x40000) { + if (param_4 < 0) { + cVar23 = fixedSize(this); + if ((cVar23 != '\0') && + (uVar46 != (*(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 3) * -0x5555555555555555)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x20); + uVar14 = _DAT_0046b9f8; + uVar11 = DAT_0046b9f0; + uVar10 = _LAB_0046b9e8; + *puVar29 = _DAT_0046b9e0; + puVar29[1] = uVar10; + puVar29[2] = uVar11; + puVar29[3] = uVar14; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x8ff); + String::deallocate((String *)&local_200); + } + local_200 = (void *)0x0; + uStack_1f8 = 0; + local_1f0 = 0; + puVar29 = *(undefined8 **)(pvVar42 + 8); + lVar50 = (long)puVar29 - *(long *)pvVar42 >> 3; + uVar34 = lVar50 * -0x5555555555555555; + if (uVar34 < uVar46) { + std:: + vector>,std::allocator>>> + ::_M_fill_insert(pvVar42,puVar29,uVar46 + lVar50 * 0x5555555555555555,&local_200); + } + else { + if (uVar34 <= uVar46) { + return; + } + puVar3 = (undefined8 *)(*(long *)pvVar42 + uVar46 * 0x18); + for (puVar8 = puVar3; puVar29 != puVar8; puVar8 = puVar8 + 3) { + if ((void *)*puVar8 != (void *)0x0) { + operator_delete((void *)*puVar8); + } + } + *(undefined8 **)(pvVar42 + 8) = puVar3; + } + /* catch() { ... } // from try @ 0033e150 with catch @ 0033f6b0 */ + if (local_200 == (void *)0x0) { + return; + } + operator_delete(local_200); + return; + } + lVar31 = *(long *)pvVar42; + if ((int)(*(long *)(pvVar42 + 8) - lVar31 >> 3) * -0x55555555 <= param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + pcVar27 = (char *)String::allocate((String *)&local_200,0x12); + uVar11 = s_i_<_(int)vv_size()_0046b098._8_8_; + uVar10 = s_i_<_(int)vv_size()_0046b098._0_8_; + *(undefined2 *)(pcVar27 + 0x10) = s_i_<_(int)vv_size()_0046b098._16_2_; + *(undefined8 *)pcVar27 = uVar10; + *(undefined8 *)(pcVar27 + 8) = uVar11; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x903); + String::deallocate((String *)&local_200); + lVar31 = *(long *)pvVar42; + } + pvVar42 = (vector>,std::allocator>>> + *)(lVar31 + lVar50 * 0x18); + } + else if (-1 < param_4) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar28 = (undefined4 *)String::allocate((String *)&local_200,5); + uVar9 = DAT_0046b094; + *puVar28 = DAT_0046b090; + *(undefined1 *)(puVar28 + 1) = uVar9; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x907); + String::deallocate((String *)&local_200); + } + uVar36 = *(uint *)this; + if (uVar47 == (uVar36 & 0xfff)) { + iVar25 = (uVar36 >> 3 & 0x1ff) + 1; + } + else { + iVar25 = (uVar36 >> 3 & 0x1ff) + 1; + if ((((uint)param_3 >> 3 & 0x1ff) + 1 != iVar25) || ((param_6 >> (uVar36 & 0x1f) & 1U) == 0)) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x60); + uVar22 = s_k_____0__0046b928._0_8_; + uVar21 = DAT_0046b920; + uVar20 = DAT_0046b918; + uVar19 = DAT_0046b910; + uVar18 = DAT_0046b908; + uVar17 = _LAB_0046b900; + uVar16 = DAT_0046b8f8; + uVar15 = DAT_0046b8f0; + uVar14 = DAT_0046b8e8; + uVar11 = DAT_0046b8e0; + uVar10 = DAT_0046b8d8; + *puVar29 = DAT_0046b8d0; + puVar29[1] = uVar10; + puVar29[2] = uVar11; + puVar29[3] = uVar14; + puVar29[4] = uVar15; + puVar29[5] = uVar16; + puVar29[6] = uVar17; + puVar29[7] = uVar18; + puVar29[8] = uVar19; + puVar29[9] = uVar20; + puVar29[10] = uVar21; + puVar29[0xb] = uVar22; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x90a); + String::deallocate((String *)&local_200); + } + } + cVar23 = fixedSize(this); + uVar47 = iVar25 << (ulong)((uint)(0xfa50L >> ((uVar36 & 7) << 1)) & 3); + if (cVar23 != '\0') { + uVar34 = 0; + if ((long)(int)uVar47 != 0) { + uVar34 = (ulong)(*(long *)(pvVar42 + 8) - *(long *)pvVar42) / (ulong)(long)(int)uVar47; + } + if (uVar46 != uVar34) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + puVar29 = (undefined8 *)String::allocate((String *)&local_200,0x3d); + uVar9 = LAB_0046ba44; + uVar12 = DAT_0046ba40; + uVar17 = DAT_0046ba30; + uVar16 = DAT_0046ba28; + uVar15 = DAT_0046ba20; + uVar14 = DAT_0046ba18; + uVar11 = DAT_0046ba10; + uVar10 = DAT_0046ba08; + puVar29[6] = DAT_0046ba38; + *(undefined4 *)(puVar29 + 7) = uVar12; + *(undefined1 *)((long)puVar29 + 0x3c) = uVar9; + *puVar29 = uVar10; + puVar29[1] = uVar11; + puVar29[2] = uVar14; + puVar29[3] = uVar15; + puVar29[4] = uVar16; + puVar29[5] = uVar17; + error(-0xd7,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x90d); + String::deallocate((String *)&local_200); + } + } + if (uVar47 == 0x10) { + uStack_1f8 = 0; + local_200 = (void *)0x0; + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 4; + if (uVar34 < uVar46) { + FUN_0033a51c(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x10; + return; + } + if ((int)uVar47 < 0x11) { + if (uVar47 == 4) { + pvVar37 = *(void **)(pvVar42 + 8); + lVar50 = (long)pvVar37 - *(long *)pvVar42; + uVar34 = lVar50 >> 2; + if (uVar46 <= uVar34) { + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 4; + return; + } + uVar46 = uVar46 - uVar34; + if (uVar46 == 0) { + return; + } + if (uVar46 <= (ulong)(*(long *)(pvVar42 + 0x10) - (long)pvVar37 >> 2)) { + memset(pvVar37,0,uVar46 * 4); + *(void **)(pvVar42 + 8) = (void *)((long)pvVar37 + uVar46 * 4); + return; + } + if (0x3fffffffffffffff - uVar34 < uVar46) { +LAB_00340c08: + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar39 = uVar46; + if (uVar46 < uVar34) { + uVar39 = uVar34; + } + uVar39 = uVar39 + uVar34; + if ((uVar39 < uVar34) || (0x3fffffffffffffff < uVar39)) { + uVar39 = 0x3fffffffffffffff; + } + else if (uVar39 == 0) { + pvVar41 = (void *)0x0; + uVar39 = 0; + goto LAB_00340a80; + } + uVar39 = uVar39 << 2; + pvVar41 = operator_new(uVar39); +LAB_00340a80: + memset((void *)((long)pvVar41 + lVar50),0,uVar46 * 4); + sVar40 = (long)pvVar37 - (long)*(void **)pvVar42; + if ((long)sVar40 >> 2 != 0) { + memmove(pvVar41,*(void **)pvVar42,sVar40); + } + pvVar6 = (void *)((long)pvVar41 + uVar46 * 4 + sVar40); + sVar40 = *(long *)(pvVar42 + 8) - (long)pvVar37; + if ((long)sVar40 >> 2 != 0) { + memmove(pvVar6,pvVar37,sVar40); + } + if (*(void **)pvVar42 != (void *)0x0) { + operator_delete(*(void **)pvVar42); + } + *(void **)pvVar42 = pvVar41; + *(size_t *)(pvVar42 + 8) = (long)pvVar6 + sVar40; + *(ulong *)(pvVar42 + 0x10) = (long)pvVar41 + uVar39; + return; + } + if ((int)uVar47 < 5) { + if (uVar47 == 2) { + local_200 = (void *)((ulong)local_200 & 0xffffffffffff0000); + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 1; + if (uVar34 < uVar46) { + FUN_00338cb4(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 2; + return; + } + if (2 < (int)uVar47) { + local_200 = (void *)((ulong)local_200 & 0xffffffffff000000); + lVar50 = *(long *)(pvVar42 + 8) - *(long *)pvVar42; + uVar34 = lVar50 * -0x5555555555555555; + if (uVar34 < uVar46) { + FUN_003391cc(pvVar42,*(long *)(pvVar42 + 8),uVar46 + lVar50 * 0x5555555555555555); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 3; + return; + } + if (uVar47 == 1) { + pvVar37 = *(void **)(pvVar42 + 8); + uVar34 = (long)pvVar37 - *(long *)pvVar42; + if (uVar46 <= uVar34) { + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46; + return; + } + uVar46 = uVar46 - uVar34; + if (uVar46 == 0) { + return; + } + if (uVar46 <= (ulong)(*(long *)(pvVar42 + 0x10) - (long)pvVar37)) { + memset(pvVar37,0,uVar46); + *(ulong *)(pvVar42 + 8) = *(long *)(pvVar42 + 8) + uVar46; + return; + } + if (~uVar34 < uVar46) goto LAB_00340c08; + uVar39 = uVar46; + if (uVar46 < uVar34) { + uVar39 = uVar34; + } + uVar39 = uVar39 + uVar34; + if (uVar39 < uVar34) { + uVar39 = 0xffffffffffffffff; + } + else { + pvVar41 = (void *)0x0; + uVar38 = 0; + if (uVar39 == 0) goto LAB_003409c4; + } + pvVar41 = operator_new(uVar39); + uVar38 = uVar39; +LAB_003409c4: + memset((void *)((long)pvVar41 + uVar34),0,uVar46); + sVar40 = (long)pvVar37 - (long)*(void **)pvVar42; + if (sVar40 != 0) { + memmove(pvVar41,*(void **)pvVar42,sVar40); + } + pvVar6 = (void *)((long)pvVar41 + uVar46 + sVar40); + sVar40 = *(long *)(pvVar42 + 8) - (long)pvVar37; + if (sVar40 != 0) { + memmove(pvVar6,pvVar37,sVar40); + } + if (*(void **)pvVar42 != (void *)0x0) { + operator_delete(*(void **)pvVar42); + } + *(void **)pvVar42 = pvVar41; + *(size_t *)(pvVar42 + 8) = (long)pvVar6 + sVar40; + *(ulong *)(pvVar42 + 0x10) = (long)pvVar41 + uVar38; + return; + } + } + else { + if (uVar47 == 8) { + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 3; + local_200 = (void *)0x0; + if (uVar34 < uVar46) { + FUN_00339bf4(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 8; + return; + } + if (uVar47 == 0xc) { + lVar50 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 2; + local_200 = (void *)0x0; + uVar34 = lVar50 * -0x5555555555555555; + uStack_1f8 = uStack_1f8 & 0xffffffff00000000; + if (uVar34 < uVar46) { + FUN_00339f9c(pvVar42,*(long *)(pvVar42 + 8),uVar46 + lVar50 * 0x5555555555555555); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0xc; + return; + } + if (uVar47 == 6) { + lVar50 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 1; + uVar34 = lVar50 * -0x5555555555555555; + local_200 = (void *)((ulong)local_200 & 0xffff000000000000); + if (uVar34 < uVar46) { + FUN_00339558(pvVar42,*(long *)(pvVar42 + 8),uVar46 + lVar50 * 0x5555555555555555); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 6; + return; + } + } + } + else { + if (uVar47 == 0x30) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1e0 = 0; + local_1d8 = 0; + lVar50 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 4; + uVar34 = lVar50 * -0x5555555555555555; + if (uVar34 < uVar46) { + FUN_0033b6f0(pvVar42,*(long *)(pvVar42 + 8),uVar46 + lVar50 * 0x5555555555555555); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x30; + return; + } + if ((int)uVar47 < 0x31) { + if (uVar47 == 0x20) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 5; + if (uVar34 < uVar46) { + FUN_0033ad24(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x20; + return; + } + if (uVar47 == 0x24) { + local_1e0 = (ulong)local_1e0._4_4_ << 0x20; + local_200 = (void *)0x0; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + lVar50 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 2; + uVar34 = lVar50 * -0x71c71c71c71c71c7; + if (uVar34 < uVar46) { + FUN_0033b194(pvVar42,*(long *)(pvVar42 + 8),uVar46 + lVar50 * 0x71c71c71c71c71c7); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x24; + return; + } + if (uVar47 == 0x18) { + local_1f0 = 0; + local_200 = (void *)0x0; + uStack_1f8 = 0; + lVar50 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 3; + uVar34 = lVar50 * -0x5555555555555555; + if (uVar34 < uVar46) { + FUN_0033a890(pvVar42,*(long *)(pvVar42 + 8),uVar46 + lVar50 * 0x5555555555555555); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x18; + return; + } + } + else { + if (uVar47 == 0x80) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1e0 = 0; + local_1d8 = 0; + local_1d0 = (ulong *)0x0; + local_1c8 = (ulong **)0x0; + local_1c0 = (ulong *)0x0; + local_1b8 = (undefined8 *)0x0; + local_1b0 = 0; + local_1a8 = 0; + local_1a0 = 0; + uStack_198 = 0; + local_190 = 0; + uStack_188 = 0; + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 7; + if (uVar34 < uVar46) { + FUN_0033c324(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x80; + return; + } + if ((int)uVar47 < 0x81) { + if (uVar47 == 0x40) { + local_200 = (void *)0x0; + uStack_1f8 = 0; + local_1f0 = 0; + local_1e8 = 0; + local_1e0 = 0; + local_1d8 = 0; + local_1d0 = (ulong *)0x0; + local_1c8 = (ulong **)0x0; + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 6; + if (uVar34 < uVar46) { + FUN_0033bcc8(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x40; + return; + } + } + else { + if (uVar47 == 0x100) { + memset(&local_200,0,0x100); + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 8; + if (uVar34 < uVar46) { + FUN_0033cdf4(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34,&local_200); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x100; + return; + } + if (uVar47 == 0x200) { + memset(&local_200,0,0x200); + uVar34 = *(long *)(pvVar42 + 8) - *(long *)pvVar42 >> 9; + if (uVar34 < uVar46) { + FUN_0033dd54(pvVar42,*(long *)(pvVar42 + 8),uVar46 - uVar34,&local_200); + return; + } + if (uVar34 <= uVar46) { + return; + } + *(ulong *)(pvVar42 + 8) = *(long *)pvVar42 + uVar46 * 0x200; + return; + } + } + } + } + format("Vectors with element size %d are not supported. Please, modify OutputArray::create()\n", + &local_200,(ulong)uVar47); + error(-5,(String *)&local_200, + "void cv::_OutputArray::create(int, const int*, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x941); +LAB_0033ef68: + String::deallocate((String *)&local_200); + return; +} + + +================================================================== + +### FUNC 00340e88 (872 bytes) name=extractImageCOI + +/* cv::extractImageCOI(void const*, cv::_OutputArray const&, int) */ + +void cv::extractImageCOI(void *param_1,_OutputArray *param_2,int param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + int iVar7; + char *pcVar8; + Mat *pMVar9; + undefined4 *puVar10; + AutoBuffer *in_x5; + ulong local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + int *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined4 local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + cvarrToMat(param_1,(void *)0x0,true,true,0,in_x5); + /* catch() { ... } // from try @ 0033f7b8 with catch @ 00340ed8 */ + _OutputArray::create(param_2,local_bc,local_80,local_c0 & 7,-1,false,0); + /* try { // try from 00340ee8 to 00440eeb has its CatchHandler @ 0033f6c4 */ + iVar7 = _InputArray::kind((_InputArray *)param_2); + /* catch() { ... } // from try @ 00340f8c with catch @ 00340eec + catch() { ... } // from try @ 00340fe8 with catch @ 00340eec + catch() { ... } // from try @ 003425dc with catch @ 00340eec */ + if (iVar7 == 0x10000) { + pMVar9 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar9; + local_5c = *(int *)(pMVar9 + 4); + local_58 = *(undefined4 *)(pMVar9 + 8); + local_54 = *(undefined4 *)(pMVar9 + 0xc); + local_50 = *(undefined8 *)(pMVar9 + 0x10); + local_48 = *(undefined8 *)(pMVar9 + 0x18); + local_40 = *(undefined8 *)(pMVar9 + 0x20); + local_38 = *(undefined8 *)(pMVar9 + 0x28); + local_30 = *(undefined8 *)(pMVar9 + 0x30); + local_28 = *(long *)(pMVar9 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar9 + 0x48); + local_8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar9); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (param_3 < 0) { + if (((param_1 == (void *)0x0) || (*(int *)param_1 != 0x90)) || + (*(long *)((long)param_1 + 0x58) == 0)) { + local_e0 = 0; + local_d8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_e0,0x10); + uVar4 = s_CV_IS_IMAGE_arr__0046b1c8._8_8_; + *(undefined8 *)pcVar8 = s_CV_IS_IMAGE_arr__0046b1c8._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar4; + error(-0xd7,(String *)&local_e0,"void cv::extractImageCOI(const CvArr*, cv::OutputArray, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3a4); + String::deallocate((String *)&local_e0); + } + iVar7 = cvGetImageCOI(param_1); + param_3 = iVar7 - 1; + if (-1 < param_3) goto LAB_00340f0c; + } + else { +LAB_00340f0c: + if (param_3 <= (int)(local_c0 >> 3 & 0x1ff)) goto LAB_00340f1c; + } + local_d0 = 0; + local_c8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_d0,0x20); + uVar6 = s_0_<__coi_&&_coi_<_mat_channels()_0046ba78._24_8_; + uVar5 = s_0_<__coi_&&_coi_<_mat_channels()_0046ba78._16_8_; + uVar4 = s_0_<__coi_&&_coi_<_mat_channels()_0046ba78._8_8_; + *(undefined8 *)pcVar8 = s_0_<__coi_&&_coi_<_mat_channels()_0046ba78._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + error(-0xd7,(String *)&local_d0,"void cv::extractImageCOI(const CvArr*, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3a7); + String::deallocate((String *)&local_d0); +LAB_00340f1c: + local_e8 = (ulong)(uint)param_3; + mixChannels((Mat *)&local_c0,1,(Mat *)&local_60,1,(int *)&local_e8,1); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + puVar10 = local_20; + do { + /* try { // try from 00340f8c to 00440f8f has its CatchHandler @ 00340eec */ + *puVar10 = 0; + iVar7 = iVar7 + 1; + puVar10 = puVar10 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + /* try { // try from 00340fe0 to 00440fe3 has its CatchHandler @ 003425cc */ + local_b0 = 0; + /* try { // try from 00340fe8 to 00440feb has its CatchHandler @ 00340eec */ + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar7 = 0; + do { + *local_80 = 0; + iVar7 = iVar7 + 1; + local_80 = local_80 + 1; + } while (iVar7 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00341264 (2228 bytes) name=create + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::_OutputArray::create(cv::Size_, int, int, bool, int) const */ + +void __thiscall +cv::_OutputArray::create + (_OutputArray *this,int *param_2,uint param_3,int param_4,bool param_5,int param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + undefined4 uVar8; + char cVar9; + int iVar10; + uint *puVar11; + Mat *this_00; + undefined8 *puVar12; + UMat *pUVar13; + char *pcVar14; + long lVar15; + int local_10 [4]; + + iVar10 = _InputArray::kind((_InputArray *)this); + if ((iVar10 == 0x10000) && (param_4 < 0)) { + if (param_5 < (param_6 == 0)) { + cVar9 = fixedSize(this); + if ((cVar9 != '\0') && + (((*(int **)(*(long *)(this + 8) + 0x40))[1] != *param_2 || + (**(int **)(*(long *)(this + 8) + 0x40) != param_2[1])))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x35); + uVar8 = s__fixedSize________Mat__obj__>siz_0046bbe0._48_4_; + uVar6 = s__fixedSize________Mat__obj__>siz_0046bbe0._40_8_; + uVar5 = s__fixedSize________Mat__obj__>siz_0046bbe0._32_8_; + uVar4 = s__fixedSize________Mat__obj__>siz_0046bbe0._24_8_; + uVar3 = s__fixedSize________Mat__obj__>siz_0046bbe0._16_8_; + uVar2 = s__fixedSize________Mat__obj__>siz_0046bbe0._8_8_; + uVar1 = s__fixedSize________Mat__obj__>siz_0046bbe0._0_8_; + pcVar14[0x34] = s__fixedSize________Mat__obj__>siz_0046bbe0[0x34]; + *(undefined4 *)(pcVar14 + 0x30) = uVar8; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x851); + String::deallocate((String *)local_10); + } + cVar9 = fixedType(this); + if (cVar9 != '\0') { + this_00 = *(Mat **)(this + 8); + if ((*(uint *)this_00 & 0xfff) == param_3) goto LAB_00341758; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x2c); + uVar8 = s__fixedType________Mat__obj__>typ_0046bad8._40_4_; + uVar4 = s__fixedType________Mat__obj__>typ_0046bad8._24_8_; + uVar3 = s__fixedType________Mat__obj__>typ_0046bad8._16_8_; + uVar2 = s__fixedType________Mat__obj__>typ_0046bad8._8_8_; + uVar1 = s__fixedType________Mat__obj__>typ_0046bad8._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s__fixedType________Mat__obj__>typ_0046bad8._32_8_; + *(undefined4 *)(pcVar14 + 0x28) = uVar8; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x852); + String::deallocate((String *)local_10); + } + this_00 = *(Mat **)(this + 8); +LAB_00341758: + if ((((*(int *)(this_00 + 4) < 3) && (param_2[1] == *(int *)(this_00 + 8))) && + (*param_2 == *(int *)(this_00 + 0xc))) && + (((param_3 & 0xfff) == (*(uint *)this_00 & 0xfff) && (*(long *)(this_00 + 0x10) != 0)))) { + return; + } + local_10[1] = *param_2; + local_10[0] = param_2[1]; + Mat::create(this_00,2,local_10,param_3 & 0xfff); + return; + } +LAB_003412b4: + if (iVar10 == 0x70000) { + if ((param_4 < 0) && (param_5 < (param_6 == 0))) { + cVar9 = fixedSize(this); + if ((cVar9 != '\0') && + ((*(int *)(*(long *)(this + 8) + 0x14) != *param_2 || + (*(int *)(*(long *)(this + 8) + 0x10) != param_2[1])))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x32); + uVar6 = s__fixedSize________ogl__Buffer__o_0046bc50._40_8_; + uVar5 = s__fixedSize________ogl__Buffer__o_0046bc50._32_8_; + uVar4 = s__fixedSize________ogl__Buffer__o_0046bc50._24_8_; + uVar3 = s__fixedSize________ogl__Buffer__o_0046bc50._16_8_; + uVar2 = s__fixedSize________ogl__Buffer__o_0046bc50._8_8_; + uVar1 = s__fixedSize________ogl__Buffer__o_0046bc50._0_8_; + *(undefined2 *)(pcVar14 + 0x30) = s__fixedSize________ogl__Buffer__o_0046bc50._48_2_; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x866); + String::deallocate((String *)local_10); + } + cVar9 = fixedType(this); + if (cVar9 != '\0') { + lVar15 = *(long *)(this + 8); + if (param_3 == *(uint *)(lVar15 + 0x18)) goto LAB_00341a5c; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x34); + uVar6 = s__fixedType________ogl__Buffer__o_0046bb70._40_8_; + uVar5 = s__fixedType________ogl__Buffer__o_0046bb70._32_8_; + uVar4 = s__fixedType________ogl__Buffer__o_0046bb70._24_8_; + uVar3 = s__fixedType________ogl__Buffer__o_0046bb70._16_8_; + uVar2 = s__fixedType________ogl__Buffer__o_0046bb70._8_8_; + uVar1 = s__fixedType________ogl__Buffer__o_0046bb70._0_8_; + *(undefined4 *)(pcVar14 + 0x30) = s__fixedType________ogl__Buffer__o_0046bb70._48_4_; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x867); + String::deallocate((String *)local_10); + } + lVar15 = *(long *)(this + 8); +LAB_00341a5c: + ogl::Buffer::create(lVar15,param_2[1],*param_2,param_3,0x8892,0); + return; + } + goto LAB_003412d0; + } + } + else { + if ((iVar10 != 0xa0000) || (-1 < param_4)) { + if ((iVar10 == 0x90000) && (param_4 < 0)) { + if (param_5 < (param_6 == 0)) { + cVar9 = fixedSize(this); + if ((cVar9 != '\0') && + ((*(int *)(*(long *)(this + 8) + 8) != *param_2 || + (*(int *)(*(long *)(this + 8) + 4) != param_2[1])))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x33); + uVar7 = s__fixedSize________cuda__GpuMat___0046baa0._48_2_; + uVar6 = s__fixedSize________cuda__GpuMat___0046baa0._40_8_; + uVar5 = s__fixedSize________cuda__GpuMat___0046baa0._32_8_; + uVar4 = s__fixedSize________cuda__GpuMat___0046baa0._24_8_; + uVar3 = s__fixedSize________cuda__GpuMat___0046baa0._16_8_; + uVar2 = s__fixedSize________cuda__GpuMat___0046baa0._8_8_; + uVar1 = s__fixedSize________cuda__GpuMat___0046baa0._0_8_; + pcVar14[0x32] = s__fixedSize________cuda__GpuMat___0046baa0[0x32]; + *(undefined2 *)(pcVar14 + 0x30) = uVar7; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x85f); + String::deallocate((String *)local_10); + } + cVar9 = fixedType(this); + if (cVar9 != '\0') { + puVar11 = *(uint **)(this + 8); + if (param_3 == (*puVar11 & 0xfff)) goto LAB_003415fc; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x35); + uVar8 = s__fixedType________cuda__GpuMat___0046bb38._48_4_; + uVar6 = s__fixedType________cuda__GpuMat___0046bb38._40_8_; + uVar5 = s__fixedType________cuda__GpuMat___0046bb38._32_8_; + uVar4 = s__fixedType________cuda__GpuMat___0046bb38._24_8_; + uVar3 = s__fixedType________cuda__GpuMat___0046bb38._16_8_; + uVar2 = s__fixedType________cuda__GpuMat___0046bb38._8_8_; + uVar1 = s__fixedType________cuda__GpuMat___0046bb38._0_8_; + pcVar14[0x34] = s__fixedType________cuda__GpuMat___0046bb38[0x34]; + *(undefined4 *)(pcVar14 + 0x30) = uVar8; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x860); + String::deallocate((String *)local_10); + } + puVar11 = *(uint **)(this + 8); +LAB_003415fc: + cuda::GpuMat::create((int)puVar11,param_2[1],*param_2); + return; + } + goto LAB_003412d0; + } + goto LAB_003412b4; + } + if (param_5 < (param_6 == 0)) { + cVar9 = fixedSize(this); + if ((cVar9 != '\0') && + (((*(int **)(*(long *)(this + 8) + 0x30))[1] != *param_2 || + (**(int **)(*(long *)(this + 8) + 0x30) != param_2[1])))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar12 = (undefined8 *)String::allocate((String *)local_10,0x36); + uVar8 = DAT_0046bc48; + uVar6 = DAT_0046bc40; + uVar5 = DAT_0046bc38; + uVar4 = DAT_0046bc30; + uVar3 = DAT_0046bc28; + uVar2 = DAT_0046bc20; + uVar1 = DAT_0046bc18; + *(undefined2 *)((long)puVar12 + 0x34) = _LAB_0046bc4c; + *(undefined4 *)(puVar12 + 6) = uVar8; + *puVar12 = uVar1; + puVar12[1] = uVar2; + puVar12[2] = uVar3; + puVar12[3] = uVar4; + puVar12[4] = uVar5; + puVar12[5] = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x858); + String::deallocate((String *)local_10); + } + cVar9 = fixedType(this); + if (cVar9 != '\0') { + pUVar13 = *(UMat **)(this + 8); + if (param_3 == (*(uint *)pUVar13 & 0xfff)) goto LAB_003418e4; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x2d); + cVar9 = s__fixedType________UMat__obj__>ty_0046bb08[0x2c]; + uVar8 = s__fixedType________UMat__obj__>ty_0046bb08._40_4_; + uVar4 = s__fixedType________UMat__obj__>ty_0046bb08._24_8_; + uVar3 = s__fixedType________UMat__obj__>ty_0046bb08._16_8_; + uVar2 = s__fixedType________UMat__obj__>ty_0046bb08._8_8_; + uVar1 = s__fixedType________UMat__obj__>ty_0046bb08._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s__fixedType________UMat__obj__>ty_0046bb08._32_8_; + *(undefined4 *)(pcVar14 + 0x28) = uVar8; + pcVar14[0x2c] = cVar9; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x859); + String::deallocate((String *)local_10); + } + pUVar13 = *(UMat **)(this + 8); +LAB_003418e4: + if ((((*(int *)(pUVar13 + 4) < 3) && (param_2[1] == *(int *)(pUVar13 + 8))) && + (*param_2 == *(int *)(pUVar13 + 0xc))) && + (((param_3 & 0xfff) == (*(uint *)pUVar13 & 0xfff) && (*(long *)(pUVar13 + 0x20) != 0)))) { + return; + } + local_10[1] = *param_2; + local_10[0] = param_2[1]; + UMat::create(pUVar13,2,local_10,param_3 & 0xfff,0); + return; + } + } + if (((-1 < param_4) || (iVar10 != 0x80000)) || ((param_6 == 0) <= param_5)) { +LAB_003412d0: + local_10[1] = *param_2; + local_10[0] = param_2[1]; + create(this,2,local_10,param_3,param_4,param_5,param_6); + return; + } + cVar9 = fixedSize(this); + if ((cVar9 != '\0') && + ((*(int *)(*(long *)(this + 8) + 8) != *param_2 || + (*(int *)(*(long *)(this + 8) + 4) != param_2[1])))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x34); + uVar6 = s__fixedSize________cuda__HostMem__0046bc88._40_8_; + uVar5 = s__fixedSize________cuda__HostMem__0046bc88._32_8_; + uVar4 = s__fixedSize________cuda__HostMem__0046bc88._24_8_; + uVar3 = s__fixedSize________cuda__HostMem__0046bc88._16_8_; + uVar2 = s__fixedSize________cuda__HostMem__0046bc88._8_8_; + uVar1 = s__fixedSize________cuda__HostMem__0046bc88._0_8_; + *(undefined4 *)(pcVar14 + 0x30) = s__fixedSize________cuda__HostMem__0046bc88._48_4_; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x86d); + String::deallocate((String *)local_10); + } + cVar9 = fixedType(this); + if (cVar9 != '\0') { + puVar11 = *(uint **)(this + 8); + if (param_3 == (*puVar11 & 0xfff)) goto LAB_00341480; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar14 = (char *)String::allocate((String *)local_10,0x36); + uVar8 = s__fixedType________cuda__HostMem__0046bba8._48_4_; + uVar6 = s__fixedType________cuda__HostMem__0046bba8._40_8_; + uVar5 = s__fixedType________cuda__HostMem__0046bba8._32_8_; + uVar4 = s__fixedType________cuda__HostMem__0046bba8._24_8_; + uVar3 = s__fixedType________cuda__HostMem__0046bba8._16_8_; + uVar2 = s__fixedType________cuda__HostMem__0046bba8._8_8_; + uVar1 = s__fixedType________cuda__HostMem__0046bba8._0_8_; + *(undefined2 *)(pcVar14 + 0x34) = s__fixedType________cuda__HostMem__0046bba8._52_2_; + *(undefined4 *)(pcVar14 + 0x30) = uVar8; + *(undefined8 *)pcVar14 = uVar1; + *(undefined8 *)(pcVar14 + 8) = uVar2; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + *(undefined8 *)(pcVar14 + 0x20) = uVar5; + *(undefined8 *)(pcVar14 + 0x28) = uVar6; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(cv::Size, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x86e); + String::deallocate((String *)local_10); + } + puVar11 = *(uint **)(this + 8); +LAB_00341480: + cuda::HostMem::create((int)puVar11,param_2[1],*param_2); + return; +} + + +================================================================== + +### FUNC 00341be0 (924 bytes) name=release + +/* cv::_OutputArray::release() const */ + +void __thiscall cv::_OutputArray::release(_OutputArray *this) + +{ + int *piVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char cVar7; + int iVar8; + char *pcVar9; + undefined4 *puVar10; + Mat *pMVar11; + UMat *pUVar12; + UMat *pUVar13; + Mat *pMVar14; + UMat *pUVar15; + undefined8 *puVar16; + Mat *pMVar17; + undefined8 local_10; + undefined8 local_8; + + cVar7 = fixedSize(this); + if (cVar7 != '\0') { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0xc); + uVar5 = s__fixedType_______fixedSize___0046b9c0._24_4_; + *(undefined8 *)pcVar9 = s__fixedType_______fixedSize___0046b9c0._16_8_; + *(undefined4 *)(pcVar9 + 8) = uVar5; + error(-0xd7,(String *)&local_10,"void cv::_OutputArray::release() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x9cd); + String::deallocate((String *)&local_10); + } + iVar8 = _InputArray::kind((_InputArray *)this); + if (iVar8 == 0x10000) { + pMVar11 = *(Mat **)(this + 8); + if (*(long *)(pMVar11 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar11 + 0x38) + 0x14); + do { + iVar8 = *piVar1; + cVar7 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar11); + } + } + *(undefined8 *)(pMVar11 + 0x38) = 0; + *(undefined8 *)(pMVar11 + 0x10) = 0; + *(undefined8 *)(pMVar11 + 0x28) = 0; + *(undefined8 *)(pMVar11 + 0x20) = 0; + *(undefined8 *)(pMVar11 + 0x18) = 0; + if (0 < *(int *)(pMVar11 + 4)) { + iVar8 = 0; + puVar10 = *(undefined4 **)(pMVar11 + 0x40); + do { + *puVar10 = 0; + iVar8 = iVar8 + 1; + puVar10 = puVar10 + 1; + } while (iVar8 < *(int *)(pMVar11 + 4)); + } + return; + } + if (iVar8 == 0xa0000) { + pUVar12 = *(UMat **)(this + 8); + if (*(long *)(pUVar12 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(pUVar12 + 0x20) + 0x10); + do { + iVar8 = *piVar1; + cVar7 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar8 == 1) { + UMat::deallocate(pUVar12); + } + } + if (0 < *(int *)(pUVar12 + 4)) { + iVar8 = 0; + puVar10 = *(undefined4 **)(pUVar12 + 0x30); + do { + *puVar10 = 0; + iVar8 = iVar8 + 1; + puVar10 = puVar10 + 1; + } while (iVar8 < *(int *)(pUVar12 + 4)); + } + *(undefined8 *)(pUVar12 + 0x20) = 0; + return; + } + if (iVar8 == 0x90000) { + cuda::GpuMat::release(); + return; + } + if (iVar8 == 0x80000) { + cuda::HostMem::release(); + return; + } + if (iVar8 == 0x70000) { + ogl::Buffer::release(); + return; + } + if (iVar8 == 0) { + return; + } + if (iVar8 != 0x30000) { + if (iVar8 == 0x40000) { + puVar16 = *(undefined8 **)(this + 8); + pUVar15 = (UMat *)*puVar16; + pUVar13 = (UMat *)puVar16[1]; + pUVar12 = pUVar15; + if (pUVar13 != pUVar15) { + do { + if (*(void **)pUVar12 != (void *)0x0) { + operator_delete(*(void **)pUVar12); + } + pUVar12 = pUVar12 + 0x18; + } while (pUVar13 != pUVar12); + puVar16[1] = pUVar15; + return; + } + } + else { + if (iVar8 == 0x50000) { + puVar16 = *(undefined8 **)(this + 8); + pMVar14 = (Mat *)puVar16[1]; + pMVar17 = (Mat *)*puVar16; + for (pMVar11 = pMVar17; pMVar11 != pMVar14; pMVar11 = pMVar11 + 0x60) { + if (*(long *)(pMVar11 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar11 + 0x38) + 0x14); + do { + iVar8 = *piVar1; + cVar7 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar8 + -1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(pMVar11); + } + } + *(undefined8 *)(pMVar11 + 0x38) = 0; + *(undefined8 *)(pMVar11 + 0x10) = 0; + *(undefined8 *)(pMVar11 + 0x28) = 0; + *(undefined8 *)(pMVar11 + 0x20) = 0; + *(undefined8 *)(pMVar11 + 0x18) = 0; + if (0 < *(int *)(pMVar11 + 4)) { + iVar8 = 0; + puVar10 = *(undefined4 **)(pMVar11 + 0x40); + do { + *puVar10 = 0; + iVar8 = iVar8 + 1; + puVar10 = puVar10 + 1; + } while (iVar8 < *(int *)(pMVar11 + 4)); + } + if (*(Mat **)(pMVar11 + 0x48) != pMVar11 + 0x50) { + fastFree(*(Mat **)(pMVar11 + 0x48)); + } + } + puVar16[1] = pMVar17; + return; + } + if (iVar8 != 0xb0000) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x1e); + uVar6 = s_Unknown_unsupported_array_type_0046b0b0._28_2_; + uVar5 = s_Unknown_unsupported_array_type_0046b0b0._24_4_; + uVar4 = s_Unknown_unsupported_array_type_0046b0b0._8_8_; + uVar3 = s_Unknown_unsupported_array_type_0046b0b0._0_8_; + *(undefined8 *)(pcVar9 + 0x10) = s_Unknown_unsupported_array_type_0046b0b0._16_8_; + *(undefined4 *)(pcVar9 + 0x18) = uVar5; + *(undefined2 *)(pcVar9 + 0x1c) = uVar6; + *(undefined8 *)pcVar9 = uVar3; + *(undefined8 *)(pcVar9 + 8) = uVar4; + error(-0xd5,(String *)&local_10,"void cv::_OutputArray::release() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa0a); + String::deallocate((String *)&local_10); + return; + } + puVar16 = *(undefined8 **)(this + 8); + pUVar13 = (UMat *)puVar16[1]; + pUVar15 = (UMat *)*puVar16; + for (pUVar12 = pUVar15; pUVar12 != pUVar13; pUVar12 = pUVar12 + 0x50) { + UMat::~UMat(pUVar12); + } + } + puVar16[1] = pUVar15; + return; + } + local_10 = 0; + create(this,&local_10,*(uint *)this & 0xfff,0xffffffff,0); + return; +} + + +================================================================== + +### FUNC 00341fa8 (868 bytes) name=copyTo + +/* cv::_InputArray::copyTo(cv::_OutputArray const&) const */ + +void __thiscall cv::_InputArray::copyTo(_InputArray *this,_OutputArray *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + uint uVar4; + int iVar5; + undefined8 uVar6; + Mat *pMVar7; + undefined8 *puVar8; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar4 = kind(this); + if (uVar4 == 0) { + _OutputArray::release(param_1); + return; + } + if ((((uVar4 & 0xfffdffff) == 0x10000) || (uVar4 == 0x20000)) || (uVar4 == 0xc0000)) { + iVar5 = kind(this); + if (iVar5 == 0x10000) { + pMVar7 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar4 = *(uint *)pMVar7; + local_50 = *(undefined8 *)(pMVar7 + 0x10); + local_60 = *(ulong *)pMVar7; + local_58 = *(undefined8 *)(pMVar7 + 8); + local_48 = *(undefined8 *)(pMVar7 + 0x18); + local_40 = *(undefined8 *)(pMVar7 + 0x20); + local_38 = *(undefined8 *)(pMVar7 + 0x28); + local_30 = *(undefined8 *)(pMVar7 + 0x30); + local_28 = *(long *)(pMVar7 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar7 + 0x48); + local_8 = (*(undefined8 **)(pMVar7 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar4; + Mat::copySize((Mat *)&local_60,pMVar7); + } + } + else { + getMat_((int)this); + } + Mat::copyTo((Mat *)&local_60,param_1); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar5 = 0; + puVar8 = local_20; + do { + *(undefined4 *)puVar8 = 0; + iVar5 = iVar5 + 1; + puVar8 = (undefined8 *)((long)puVar8 + 4); + } while (iVar5 < local_60._4_4_); + } + } + else { + if (uVar4 != 0x60000) { + if (uVar4 == 0xa0000) { + UMat::copyTo(*(UMat **)(this + 8),param_1); + return; + } + local_60 = 0; + local_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xd5,(String *)&local_60,"void cv::_InputArray::copyTo(const cv::_OutputArray&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x82e); + String::deallocate((String *)&local_60); + return; + } + puVar8 = *(undefined8 **)(this + 8); + iVar5 = kind((_InputArray *)param_1); + if (iVar5 == 0x10000) { + uVar6 = _OutputArray::getMatRef(param_1,-1); + (**(code **)(*(long *)*puVar8 + 0x18))((long *)*puVar8,puVar8,uVar6,0xffffffff); + return; + } + local_18 = &local_10; + local_20 = &local_58; + local_60 = DAT_00342390; + local_58 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + (**(code **)(*(long *)*puVar8 + 0x18))((long *)*puVar8,puVar8,(Mat *)&local_60,0xffffffff); + Mat::copyTo((Mat *)&local_60,param_1); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar5 = 0; + puVar8 = local_20; + do { + *(undefined4 *)puVar8 = 0; + iVar5 = iVar5 + 1; + puVar8 = (undefined8 *)((long)puVar8 + 4); + } while (iVar5 < local_60._4_4_); + } + } + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00342398 (596 bytes) name=copyTo + +/* cv::_InputArray::copyTo(cv::_OutputArray const&, cv::_InputArray const&) const */ + +void __thiscall +cv::_InputArray::copyTo(_InputArray *this,_OutputArray *param_1,_InputArray *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + uint uVar4; + int iVar5; + undefined8 *puVar6; + Mat *pMVar7; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar4 = kind(this); + if (uVar4 == 0) { + _OutputArray::release(param_1); + return; + } + if ((((uVar4 & 0xfffdffff) == 0x10000) || (uVar4 == 0x20000)) || (uVar4 == 0xc0000)) { + iVar5 = kind(this); + if (iVar5 == 0x10000) { + pMVar7 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar4 = *(uint *)pMVar7; + local_50 = *(undefined8 *)(pMVar7 + 0x10); + local_60 = *(ulong *)pMVar7; + local_58 = *(undefined8 *)(pMVar7 + 8); + local_48 = *(undefined8 *)(pMVar7 + 0x18); + local_40 = *(undefined8 *)(pMVar7 + 0x20); + local_38 = *(undefined8 *)(pMVar7 + 0x28); + local_30 = *(undefined8 *)(pMVar7 + 0x30); + local_28 = *(long *)(pMVar7 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar7 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar7 + 0x48); + local_8 = (*(undefined8 **)(pMVar7 + 0x48))[1]; + } + else { + /* catch() { ... } // from try @ 00340fe0 with catch @ 003425cc */ + local_60 = (ulong)uVar4; + Mat::copySize((Mat *)&local_60,pMVar7); + } + } + else { + getMat_((int)this); + } + Mat::copyTo((Mat *)&local_60,param_1,param_2); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar5 = 0; + puVar6 = local_20; + do { + *(undefined4 *)puVar6 = 0; + iVar5 = iVar5 + 1; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } while (iVar5 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + } + else { + if (uVar4 != 0xa0000) { + local_60 = 0; + local_58 = 0; + String::allocate((String *)&local_60,0); + error(-0xd5,(String *)&local_60, + "void cv::_InputArray::copyTo(const cv::_OutputArray&, const cv::_InputArray&) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x83f); + String::deallocate((String *)&local_60); + return; + } + /* try { // try from 003425dc to 004425df has its CatchHandler @ 00340eec */ + UMat::copyTo(*(UMat **)(this + 8),param_1,param_2); + } + return; +} + + +================================================================== + +### FUNC 00342624 (184 bytes) name=clear + +/* cv::_OutputArray::clear() const */ + +void __thiscall cv::_OutputArray::clear(_OutputArray *this) + +{ + undefined4 uVar1; + char cVar2; + int iVar3; + char *pcVar4; + undefined8 local_10; + undefined8 local_8; + + iVar3 = _InputArray::kind((_InputArray *)this); + if (iVar3 != 0x10000) { + release(this); + return; + } + cVar2 = fixedSize(this); + if (cVar2 != '\0') { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0xc); + uVar1 = s__fixedType_______fixedSize___0046b9c0._24_4_; + *(undefined8 *)pcVar4 = s__fixedType_______fixedSize___0046b9c0._16_8_; + *(undefined4 *)(pcVar4 + 8) = uVar1; + error(-0xd7,(String *)&local_10,"void cv::_OutputArray::clear() const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xa13); + String::deallocate((String *)&local_10); + } + Mat::resize(*(Mat **)(this + 8),0); + return; +} + + +================================================================== + +### FUNC 003426f0 (976 bytes) name=sort + +/* cv::sort(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::sort(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + char *pcVar10; + Mat *pMVar11; + int *piVar12; + undefined4 *puVar13; + code *pcVar14; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + int local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar9 = _InputArray::kind(param_1); + if (iVar9 == 0x10000) { + pMVar11 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar11; + local_bc = *(int *)(pMVar11 + 4); + local_b8 = *(int *)(pMVar11 + 8); + local_b4 = *(undefined4 *)(pMVar11 + 0xc); + local_b0 = *(undefined8 *)(pMVar11 + 0x10); + local_a8 = *(undefined8 *)(pMVar11 + 0x18); + local_a0 = *(undefined8 *)(pMVar11 + 0x20); + local_98 = *(undefined8 *)(pMVar11 + 0x28); + local_90 = *(undefined8 *)(pMVar11 + 0x30); + local_88 = *(long *)(pMVar11 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar12 = (int *)(local_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar11 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar11 + 0x48); + local_68 = (*(undefined8 **)(pMVar11 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar11); + } + } + else { + _InputArray::getMat_((int)param_1); + } + pcVar14 = (code *)(&PTR_FUN_004f6850)[(int)(local_c0 & 7)]; + if (((2 < local_bc) || (pcVar14 == (code *)0x0)) || ((local_c0 >> 3 & 0x1ff) != 0)) { + local_d0 = 0; + local_c8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_d0,0x31); + uVar8 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + uVar7 = s_src_dims_<__2_&&_src_channels()___0046bcc0._32_8_; + uVar6 = s_src_dims_<__2_&&_src_channels()___0046bcc0._24_8_; + uVar5 = s_src_dims_<__2_&&_src_channels()___0046bcc0._16_8_; + uVar4 = s_src_dims_<__2_&&_src_channels()___0046bcc0._8_8_; + uVar3 = s_src_dims_<__2_&&_src_channels()___0046bcc0._0_8_; + pcVar10[0x30] = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + error(-0xd7,(String *)&local_d0,"void cv::sort(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xfd0); + String::deallocate((String *)&local_d0); + } + local_5c = *local_80; + local_60 = local_80[1]; + _OutputArray::create(param_2,(Mat *)&local_60,local_c0 & 0xfff,0xffffffff,0,0); + iVar9 = _InputArray::kind((_InputArray *)param_2); + if (iVar9 == 0x10000) { + pMVar11 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(int *)pMVar11; + local_50 = *(undefined8 *)(pMVar11 + 0x10); + local_5c = *(int *)(pMVar11 + 4); + local_58 = *(undefined4 *)(pMVar11 + 8); + local_54 = *(undefined4 *)(pMVar11 + 0xc); + local_48 = *(undefined8 *)(pMVar11 + 0x18); + local_40 = *(undefined8 *)(pMVar11 + 0x20); + local_38 = *(undefined8 *)(pMVar11 + 0x28); + local_30 = *(undefined8 *)(pMVar11 + 0x30); + local_28 = *(long *)(pMVar11 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar12 = (int *)(local_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = *piVar12 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar11 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar11 + 0x48); + local_8 = (*(undefined8 **)(pMVar11 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar11); + } + } + else { + _InputArray::getMat_((int)param_2); + } + (*pcVar14)((Mat *)&local_c0,(Mat *)&local_60,param_3); + if (local_28 != 0) { + piVar12 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar9 = 0; + puVar13 = local_20; + do { + *puVar13 = 0; + iVar9 = iVar9 + 1; + puVar13 = puVar13 + 1; + } while (iVar9 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar12 = (int *)(local_88 + 0x14); + do { + iVar9 = *piVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar12,0x10); + if (bVar2) { + *piVar12 = iVar9 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar9 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar9 = 0; + piVar12 = local_80; + do { + *piVar12 = 0; + iVar9 = iVar9 + 1; + piVar12 = piVar12 + 1; + } while (iVar9 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00342b24 (1656 bytes) name=sortIdx + +/* cv::sortIdx(cv::_InputArray const&, cv::_OutputArray const&, int) */ + +void cv::sortIdx(_InputArray *param_1,_OutputArray *param_2,int param_3) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 *puVar9; + int iVar10; + char *pcVar11; + Mat *pMVar12; + undefined4 *puVar13; + int *piVar14; + code *pcVar15; + undefined8 local_130; + undefined8 local_128; + int local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + long local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + int local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + undefined4 local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar10 = _InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar12; + local_5c = *(int *)(pMVar12 + 4); + local_58 = *(int *)(pMVar12 + 8); + local_54 = *(undefined4 *)(pMVar12 + 0xc); + local_50 = *(long *)(pMVar12 + 0x10); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = *piVar14 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar12 + 0x48); + local_8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_1); + } + pcVar15 = (code *)(&PTR_FUN_004f6500)[(int)(local_60 & 7)]; + if (((2 < local_5c) || (pcVar15 == (code *)0x0)) || ((local_60 >> 3 & 0x1ff) != 0)) { + local_130 = 0; + local_128 = 0; + pcVar11 = (char *)String::allocate((String *)&local_130,0x31); + uVar8 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + uVar7 = s_src_dims_<__2_&&_src_channels()___0046bcc0._32_8_; + uVar6 = s_src_dims_<__2_&&_src_channels()___0046bcc0._24_8_; + uVar5 = s_src_dims_<__2_&&_src_channels()___0046bcc0._16_8_; + uVar4 = s_src_dims_<__2_&&_src_channels()___0046bcc0._8_8_; + uVar3 = s_src_dims_<__2_&&_src_channels()___0046bcc0._0_8_; + pcVar11[0x30] = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar11 = uVar3; + *(undefined8 *)(pcVar11 + 8) = uVar4; + *(undefined8 *)(pcVar11 + 0x10) = uVar5; + *(undefined8 *)(pcVar11 + 0x18) = uVar6; + *(undefined8 *)(pcVar11 + 0x20) = uVar7; + *(undefined8 *)(pcVar11 + 0x28) = uVar8; + error(-0xd7,(String *)&local_130,"void cv::sortIdx(cv::InputArray, cv::OutputArray, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xfdf); + String::deallocate((String *)&local_130); + } + iVar10 = _InputArray::kind((_InputArray *)param_2); + if (iVar10 == 0x10000) { + pMVar12 = *(Mat **)(param_2 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(int *)pMVar12; + local_11c = *(int *)(pMVar12 + 4); + local_118 = *(undefined4 *)(pMVar12 + 8); + local_114 = *(undefined4 *)(pMVar12 + 0xc); + local_110 = *(long *)(pMVar12 + 0x10); + uStack_108 = *(undefined8 *)(pMVar12 + 0x18); + local_100 = *(undefined8 *)(pMVar12 + 0x20); + uStack_f8 = *(undefined8 *)(pMVar12 + 0x28); + local_f0 = *(undefined8 *)(pMVar12 + 0x30); + lStack_e8 = *(long *)(pMVar12 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (lStack_e8 != 0) { + piVar14 = (int *)(lStack_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = *piVar14 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (2 < *(int *)(pMVar12 + 4)) { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar12); + goto LAB_00342c20; + } + local_d0 = **(undefined8 **)(pMVar12 + 0x48); + local_c8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + if (local_110 == local_50) goto LAB_00343154; + } + else { + _InputArray::getMat_((int)param_2); +LAB_00342c20: + if (local_110 == local_50) { +LAB_00343154: + _OutputArray::release(param_2); + } + } + local_bc = *local_20; + local_c0 = local_20[1]; + _OutputArray::create(param_2,(Mat *)&local_c0,4,0xffffffff,0,0); + iVar10 = _InputArray::kind((_InputArray *)param_2); + if (iVar10 == 0x10000) { + pMVar12 = *(Mat **)(param_2 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(int *)pMVar12; + local_b0 = *(undefined8 *)(pMVar12 + 0x10); + local_bc = *(int *)(pMVar12 + 4); + local_b8 = *(undefined4 *)(pMVar12 + 8); + local_b4 = *(undefined4 *)(pMVar12 + 0xc); + uStack_a8 = *(undefined8 *)(pMVar12 + 0x18); + local_a0 = *(undefined8 *)(pMVar12 + 0x20); + uStack_98 = *(undefined8 *)(pMVar12 + 0x28); + local_90 = *(undefined8 *)(pMVar12 + 0x30); + lStack_88 = *(long *)(pMVar12 + 0x38); + local_68 = 0; + local_70 = 0; + if (lStack_88 != 0) { + piVar14 = (int *)(lStack_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = *piVar14 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar12 + 0x48); + local_68 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar12); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (lStack_88 != 0) { + piVar14 = (int *)(lStack_88 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = *piVar14 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (lStack_e8 != 0) { + piVar14 = (int *)(lStack_e8 + 0x14); + do { + iVar10 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + puVar9 = local_78; + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_11c < 1) { +LAB_00342d10: + local_120 = local_c0; + if (local_bc < 3) { + local_118 = local_b8; + local_114 = local_b4; + local_11c = local_bc; + *local_d8 = *local_78; + local_d8[1] = puVar9[1]; + goto LAB_00342d28; + } + } + else { + iVar10 = 0; + puVar13 = local_e0; + do { + *puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = puVar13 + 1; + } while (iVar10 < local_11c); + if (local_11c < 3) goto LAB_00342d10; + } + local_120 = local_c0; + Mat::copySize((Mat *)&local_120,(Mat *)&local_c0); +LAB_00342d28: + uStack_f8 = uStack_98; + local_100 = local_a0; + lStack_e8 = lStack_88; + local_f0 = local_90; + uStack_108 = uStack_a8; + local_110 = local_b0; + if (lStack_88 != 0) { + piVar14 = (int *)(lStack_88 + 0x14); + do { + iVar10 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar10 = 0; + puVar13 = local_80; + do { + *puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = puVar13 + 1; + } while (iVar10 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + (*pcVar15)((Mat *)&local_60,(Mat *)&local_120,param_3); + if (lStack_e8 != 0) { + piVar14 = (int *)(lStack_e8 + 0x14); + do { + iVar10 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + puVar13 = local_e0; + do { + *puVar13 = 0; + iVar10 = iVar10 + 1; + puVar13 = puVar13 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar14; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar2) { + *piVar14 = iVar10 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + piVar14 = local_20; + do { + *piVar14 = 0; + iVar10 = iVar10 + 1; + piVar14 = piVar14 + 1; + } while (iVar10 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00343228 (1912 bytes) name=cvSort + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void cvSort(cv *param_1,cv *param_2,cv *param_3,int param_4,undefined8 param_5,AutoBuffer *param_6) + +{ + char cVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + bool bVar10; + char *pcVar11; + undefined8 *puVar12; + int *piVar13; + int iVar14; + undefined4 *puVar15; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + undefined8 uStack_118; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + int local_5c; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + int *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + if (param_3 == (cv *)0x0) goto LAB_00343554; + cv::cvarrToMat(param_3,(void *)0x0,true,false,0,param_6); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_80 = (int *)&uStack_b8; + uStack_b8 = uStack_118; + uVar2 = uStack_b8; + local_a8 = local_108; + local_a0 = local_100; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + uStack_68 = 0; + local_70 = 0; + if (local_e8 == 0) { + if (iStack_11c < 3) goto LAB_00343304; +LAB_003438ec: + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + if ((local_20[1] != local_80[1]) || (*local_20 != *local_80)) goto LAB_00343344; +LAB_00343924: + if ((((uint)local_c0 & 0xfff) != 4) || (local_50 == local_b0)) goto LAB_00343344; + } + else { + piVar13 = (int *)(local_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = *piVar13 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (2 < iStack_11c) goto LAB_003438ec; +LAB_00343304: + local_70 = *local_d8; + param_6 = (AutoBuffer *)(ulong)(uint)local_20[1]; + uStack_b8._4_4_ = (uint)((ulong)uStack_118 >> 0x20); + uStack_68 = local_d8[1]; + bVar10 = local_20[1] == uStack_b8._4_4_; + uStack_b8 = uVar2; + if ((bVar10) && + (uStack_b8._0_4_ = (int)uStack_118, bVar10 = *local_20 == (int)uStack_b8, bVar10)) + goto LAB_00343924; +LAB_00343344: + local_170 = 0; + local_168 = 0; + param_6 = (AutoBuffer *)cv::String::allocate((String *)&local_170,0x48); + uVar7 = DAT_0046bd20; + uVar6 = DAT_0046bd18; + uVar5 = DAT_0046bd10; + uVar4 = _LAB_0046bd08; + uVar3 = _DAT_0046bd00; + uVar2 = DAT_0046bcf8; + *(undefined8 *)(param_6 + 0x40) = s_idx_data_0046bd38._0_8_; + uVar9 = DAT_0046bd30; + uVar8 = DAT_0046bd28; + *(undefined8 *)param_6 = uVar2; + *(undefined8 *)(param_6 + 8) = uVar3; + *(undefined8 *)(param_6 + 0x10) = uVar4; + *(undefined8 *)(param_6 + 0x18) = uVar5; + *(undefined8 *)(param_6 + 0x20) = uVar6; + *(undefined8 *)(param_6 + 0x28) = uVar7; + *(undefined8 *)(param_6 + 0x30) = uVar8; + *(undefined8 *)(param_6 + 0x38) = uVar9; + cv::error(-0xd7,(String *)&local_170,"void cvSort(const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x106d); + cv::String::deallocate((String *)&local_170); + } + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_148 = (Mat *)&local_60; + local_130 = (Mat *)&local_c0; + cv::sortIdx((_InputArray *)&local_150,(_OutputArray *)&local_138,param_4); + if (local_110 != local_b0) { + local_160 = 0; + local_158 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_160,0x15); + cVar1 = s_idx0_data____idx_data_0046bd48[0x14]; + uVar3 = s_idx0_data____idx_data_0046bd48._8_8_; + uVar2 = s_idx0_data____idx_data_0046bd48._0_8_; + param_6 = (AutoBuffer *)(ulong)(byte)s_idx0_data____idx_data_0046bd48[0x14]; + *(undefined4 *)(pcVar11 + 0x10) = s_idx0_data____idx_data_0046bd48._16_4_; + pcVar11[0x14] = cVar1; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0xd7,(String *)&local_160,"void cvSort(const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x106f); + cv::String::deallocate((String *)&local_160); + } + if (local_88 != 0) { + piVar13 = (int *)(local_88 + 0x14); + do { + iVar14 = *piVar13; + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar14 = 0; + piVar13 = local_80; + do { + *piVar13 = 0; + iVar14 = iVar14 + 1; + piVar13 = piVar13 + 1; + } while (iVar14 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar13 = (int *)(local_e8 + 0x14); + do { + iVar14 = *piVar13; + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar14 = 0; + puVar15 = local_e0; + do { + *puVar15 = 0; + iVar14 = iVar14 + 1; + puVar15 = puVar15 + 1; + } while (iVar14 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } +LAB_00343554: + if (param_2 != (cv *)0x0) { + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + local_c0 = CONCAT44(iStack_11c,local_120); + local_78 = &local_70; + local_80 = (int *)&uStack_b8; + uStack_b8 = uStack_118; + local_a8 = local_108; + local_a0 = local_100; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + uStack_68 = 0; + local_70 = 0; + if (local_e8 != 0) { + piVar13 = (int *)(local_e8 + 0x14); + do { + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = *piVar13 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_68 = local_d8[1]; + } + else { + local_c0 = (ulong)local_120; + cv::Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + } + if (((*local_20 != *local_80) || (local_80[1] != local_20[1])) || + ((local_60 & 0xfff) != ((uint)local_c0 & 0xfff))) { + local_150 = 0; + local_148 = (Mat *)0x0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_150,0x34); + uVar7 = DAT_0045bf30; + uVar6 = _LAB_0045bf28; + uVar5 = _DAT_0045bf20; + uVar4 = DAT_0045bf18; + uVar3 = DAT_0045bf10; + uVar2 = DAT_0045bf08; + *(undefined4 *)(puVar12 + 6) = DAT_0045bf38; + *puVar12 = uVar2; + puVar12[1] = uVar3; + puVar12[2] = uVar4; + puVar12[3] = uVar5; + puVar12[4] = uVar6; + puVar12[5] = uVar7; + cv::error(-0xd7,(String *)&local_150,"void cvSort(const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1075); + cv::String::deallocate((String *)&local_150); + } + local_150 = CONCAT44(local_150._4_4_,0x1010000); + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + local_140 = 0; + local_13c = 0; + local_148 = (Mat *)&local_60; + local_130 = (Mat *)&local_c0; + cv::sort((_InputArray *)&local_150,(_OutputArray *)&local_138,param_4); + if (local_110 != local_b0) { + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_138,0x15); + cVar1 = s_dst0_data____dst_data_00469338[0x14]; + uVar3 = s_dst0_data____dst_data_00469338._8_8_; + uVar2 = s_dst0_data____dst_data_00469338._0_8_; + *(undefined4 *)(pcVar11 + 0x10) = s_dst0_data____dst_data_00469338._16_4_; + pcVar11[0x14] = cVar1; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(-0xd7,(String *)&local_138,"void cvSort(const CvArr*, CvArr*, CvArr*, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1077); + cv::String::deallocate((String *)&local_138); + } + if (local_88 != 0) { + piVar13 = (int *)(local_88 + 0x14); + do { + iVar14 = *piVar13; + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar14 = 0; + piVar13 = local_80; + do { + *piVar13 = 0; + iVar14 = iVar14 + 1; + piVar13 = piVar13 + 1; + } while (iVar14 < local_c0._4_4_); + } + if (local_78 != &local_70) { + cv::fastFree(local_78); + } + if (local_e8 != 0) { + piVar13 = (int *)(local_e8 + 0x14); + do { + iVar14 = *piVar13; + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar14 = 0; + do { + *local_e0 = 0; + iVar14 = iVar14 + 1; + local_e0 = local_e0 + 1; + } while (iVar14 < iStack_11c); + } + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + } + if (local_28 != 0) { + piVar13 = (int *)(local_28 + 0x14); + do { + iVar14 = *piVar13; + cVar1 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar10) { + *piVar13 = iVar14 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar14 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar14 = 0; + do { + *local_20 = 0; + iVar14 = iVar14 + 1; + local_20 = local_20 + 1; + } while (iVar14 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00343a98 (2172 bytes) name=create + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::_OutputArray::create(int, int, int, int, bool, int) const */ + +void __thiscall +cv::_OutputArray::create + (_OutputArray *this,int param_1,int param_2,int param_3,int param_4,bool param_5, + int param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined2 uVar10; + char cVar11; + int iVar12; + uint *puVar13; + Mat *this_00; + UMat *pUVar14; + undefined8 *puVar15; + long lVar16; + char *pcVar17; + int local_10 [4]; + + iVar12 = _InputArray::kind((_InputArray *)this); + if ((iVar12 == 0x10000) && (param_4 < 0)) { + if (param_5 < (param_6 == 0)) { + cVar11 = fixedSize(this); + if ((cVar11 != '\0') && + ((param_2 != (*(int **)(*(long *)(this + 8) + 0x40))[1] || + (param_1 != **(int **)(*(long *)(this + 8) + 0x40))))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar15 = (undefined8 *)String::allocate((String *)local_10,0x44); + uVar9 = DAT_0046bd98; + uVar8 = DAT_0046bd90; + uVar7 = DAT_0046bd88; + uVar6 = DAT_0046bd80; + uVar4 = DAT_0046bd78; + uVar3 = DAT_0046bd70; + uVar2 = DAT_0046bd68; + uVar1 = DAT_0046bd60; + *(undefined4 *)(puVar15 + 8) = _LAB_0046bda0; + *puVar15 = uVar1; + puVar15[1] = uVar2; + puVar15[2] = uVar3; + puVar15[3] = uVar4; + puVar15[4] = uVar6; + puVar15[5] = uVar7; + puVar15[6] = uVar8; + puVar15[7] = uVar9; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x87b); + String::deallocate((String *)local_10); + } + cVar11 = fixedType(this); + if (cVar11 != '\0') { + this_00 = *(Mat **)(this + 8); + if ((*(uint *)this_00 & 0xfff) == param_3) goto LAB_00343f70; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar17 = (char *)String::allocate((String *)local_10,0x2c); + uVar5 = s__fixedType________Mat__obj__>typ_0046bad8._40_4_; + uVar4 = s__fixedType________Mat__obj__>typ_0046bad8._24_8_; + uVar3 = s__fixedType________Mat__obj__>typ_0046bad8._16_8_; + uVar2 = s__fixedType________Mat__obj__>typ_0046bad8._8_8_; + uVar1 = s__fixedType________Mat__obj__>typ_0046bad8._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s__fixedType________Mat__obj__>typ_0046bad8._32_8_; + *(undefined4 *)(pcVar17 + 0x28) = uVar5; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar4; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x87c); + String::deallocate((String *)local_10); + } + this_00 = *(Mat **)(this + 8); +LAB_00343f70: + if ((((*(int *)(this_00 + 4) < 3) && (param_1 == *(int *)(this_00 + 8))) && + (param_2 == *(int *)(this_00 + 0xc))) && + (((param_3 & 0xfffU) == (*(uint *)this_00 & 0xfff) && (*(long *)(this_00 + 0x10) != 0)))) { + return; + } + local_10[1] = param_2; + local_10[0] = param_1; + Mat::create(this_00,2,local_10,param_3 & 0xfffU); + return; + } +LAB_00343af0: + if (iVar12 == 0x70000) { + if ((param_4 < 0) && (param_5 < (param_6 == 0))) { + cVar11 = fixedSize(this); + if ((cVar11 != '\0') && + ((param_2 != *(int *)(*(long *)(this + 8) + 0x14) || + (param_1 != *(int *)(*(long *)(this + 8) + 0x10))))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar15 = (undefined8 *)String::allocate((String *)local_10,0x41); + uVar9 = DAT_0046be70; + uVar8 = _DAT_0046be68; + uVar7 = DAT_0046be60; + uVar6 = DAT_0046be58; + uVar4 = DAT_0046be50; + uVar3 = DAT_0046be48; + uVar2 = _LAB_0046be40; + uVar1 = DAT_0046be38; + *(undefined1 *)(puVar15 + 8) = DAT_0046be78; + *puVar15 = uVar1; + puVar15[1] = uVar2; + puVar15[2] = uVar3; + puVar15[3] = uVar4; + puVar15[4] = uVar6; + puVar15[5] = uVar7; + puVar15[6] = uVar8; + puVar15[7] = uVar9; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x890); + String::deallocate((String *)local_10); + } + cVar11 = fixedType(this); + if (cVar11 != '\0') { + lVar16 = *(long *)(this + 8); + if (param_3 == *(int *)(lVar16 + 0x18)) goto LAB_00344268; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar17 = (char *)String::allocate((String *)local_10,0x34); + uVar7 = s__fixedType________ogl__Buffer__o_0046bb70._40_8_; + uVar6 = s__fixedType________ogl__Buffer__o_0046bb70._32_8_; + uVar4 = s__fixedType________ogl__Buffer__o_0046bb70._24_8_; + uVar3 = s__fixedType________ogl__Buffer__o_0046bb70._16_8_; + uVar2 = s__fixedType________ogl__Buffer__o_0046bb70._8_8_; + uVar1 = s__fixedType________ogl__Buffer__o_0046bb70._0_8_; + *(undefined4 *)(pcVar17 + 0x30) = s__fixedType________ogl__Buffer__o_0046bb70._48_4_; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar4; + *(undefined8 *)(pcVar17 + 0x20) = uVar6; + *(undefined8 *)(pcVar17 + 0x28) = uVar7; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x891); + String::deallocate((String *)local_10); + } + lVar16 = *(long *)(this + 8); +LAB_00344268: + ogl::Buffer::create(lVar16,param_1,param_2,param_3,0x8892,0); + return; + } + goto LAB_00343b0c; + } + } + else { + if ((iVar12 != 0xa0000) || (-1 < param_4)) { + if ((iVar12 == 0x90000) && (param_4 < 0)) { + if (param_5 < (param_6 == 0)) { + cVar11 = fixedSize(this); + if ((cVar11 != '\0') && + ((param_2 != *(int *)(*(long *)(this + 8) + 8) || + (param_1 != *(int *)(*(long *)(this + 8) + 4))))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar15 = (undefined8 *)String::allocate((String *)local_10,0x42); + uVar9 = DAT_0046be28; + uVar8 = DAT_0046be20; + uVar7 = _LAB_0046be18; + uVar6 = _LAB_0046be10; + uVar4 = _DAT_0046be08; + uVar3 = DAT_0046be00; + uVar2 = DAT_0046bdf8; + uVar1 = DAT_0046bdf0; + *(undefined2 *)(puVar15 + 8) = DAT_0046be30; + *puVar15 = uVar1; + puVar15[1] = uVar2; + puVar15[2] = uVar3; + puVar15[3] = uVar4; + puVar15[4] = uVar6; + puVar15[5] = uVar7; + puVar15[6] = uVar8; + puVar15[7] = uVar9; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x889); + String::deallocate((String *)local_10); + } + cVar11 = fixedType(this); + if (cVar11 != '\0') { + puVar13 = *(uint **)(this + 8); + if (param_3 == (*puVar13 & 0xfff)) goto LAB_00343e20; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar17 = (char *)String::allocate((String *)local_10,0x35); + uVar5 = s__fixedType________cuda__GpuMat___0046bb38._48_4_; + uVar7 = s__fixedType________cuda__GpuMat___0046bb38._40_8_; + uVar6 = s__fixedType________cuda__GpuMat___0046bb38._32_8_; + uVar4 = s__fixedType________cuda__GpuMat___0046bb38._24_8_; + uVar3 = s__fixedType________cuda__GpuMat___0046bb38._16_8_; + uVar2 = s__fixedType________cuda__GpuMat___0046bb38._8_8_; + uVar1 = s__fixedType________cuda__GpuMat___0046bb38._0_8_; + pcVar17[0x34] = s__fixedType________cuda__GpuMat___0046bb38[0x34]; + *(undefined4 *)(pcVar17 + 0x30) = uVar5; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar4; + *(undefined8 *)(pcVar17 + 0x20) = uVar6; + *(undefined8 *)(pcVar17 + 0x28) = uVar7; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x88a); + String::deallocate((String *)local_10); + } + puVar13 = *(uint **)(this + 8); +LAB_00343e20: + cuda::GpuMat::create((int)puVar13,param_1,param_2); + return; + } + goto LAB_00343b0c; + } + goto LAB_00343af0; + } + if (param_5 < (param_6 == 0)) { + cVar11 = fixedSize(this); + if ((cVar11 != '\0') && + ((param_2 != (*(int **)(*(long *)(this + 8) + 0x30))[1] || + (param_1 != **(int **)(*(long *)(this + 8) + 0x30))))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + puVar15 = (undefined8 *)String::allocate((String *)local_10,0x45); + uVar5 = DAT_0046bde8; + uVar9 = DAT_0046bde0; + uVar8 = DAT_0046bdd8; + uVar7 = DAT_0046bdd0; + uVar6 = _LAB_0046bdc8; + uVar4 = DAT_0046bdc0; + uVar3 = DAT_0046bdb8; + uVar2 = DAT_0046bdb0; + uVar1 = DAT_0046bda8; + *(undefined1 *)((long)puVar15 + 0x44) = LAB_0046bdec; + *(undefined4 *)(puVar15 + 8) = uVar5; + *puVar15 = uVar1; + puVar15[1] = uVar2; + puVar15[2] = uVar3; + puVar15[3] = uVar4; + puVar15[4] = uVar6; + puVar15[5] = uVar7; + puVar15[6] = uVar8; + puVar15[7] = uVar9; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x882); + String::deallocate((String *)local_10); + } + cVar11 = fixedType(this); + if (cVar11 != '\0') { + pUVar14 = *(UMat **)(this + 8); + if (param_3 == (*(uint *)pUVar14 & 0xfff)) goto LAB_003440f0; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar17 = (char *)String::allocate((String *)local_10,0x2d); + cVar11 = s__fixedType________UMat__obj__>ty_0046bb08[0x2c]; + uVar5 = s__fixedType________UMat__obj__>ty_0046bb08._40_4_; + uVar4 = s__fixedType________UMat__obj__>ty_0046bb08._24_8_; + uVar3 = s__fixedType________UMat__obj__>ty_0046bb08._16_8_; + uVar2 = s__fixedType________UMat__obj__>ty_0046bb08._8_8_; + uVar1 = s__fixedType________UMat__obj__>ty_0046bb08._0_8_; + *(undefined8 *)(pcVar17 + 0x20) = s__fixedType________UMat__obj__>ty_0046bb08._32_8_; + *(undefined4 *)(pcVar17 + 0x28) = uVar5; + pcVar17[0x2c] = cVar11; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar4; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x883); + String::deallocate((String *)local_10); + } + pUVar14 = *(UMat **)(this + 8); +LAB_003440f0: + if ((((*(int *)(pUVar14 + 4) < 3) && (param_1 == *(int *)(pUVar14 + 8))) && + (param_2 == *(int *)(pUVar14 + 0xc))) && + (((param_3 & 0xfffU) == (*(uint *)pUVar14 & 0xfff) && (*(long *)(pUVar14 + 0x20) != 0)))) { + return; + } + local_10[1] = param_2; + local_10[0] = param_1; + UMat::create(pUVar14,2,local_10,param_3 & 0xfffU,0); + return; + } + } + if (((-1 < param_4) || (iVar12 != 0x80000)) || ((param_6 == 0) <= param_5)) { +LAB_00343b0c: + local_10[1] = param_2; + local_10[0] = param_1; + create(this,2,local_10,param_3,param_4,param_5,param_6); + return; + } + cVar11 = fixedSize(this); + if ((cVar11 != '\0') && + ((param_2 != *(int *)(*(long *)(this + 8) + 8) || + (param_1 != *(int *)(*(long *)(this + 8) + 4))))) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar17 = (char *)String::allocate((String *)local_10,0x43); + uVar10 = s__fixedSize________cuda__HostMem__0046be80._64_2_; + uVar9 = s__fixedSize________cuda__HostMem__0046be80._56_8_; + uVar8 = s__fixedSize________cuda__HostMem__0046be80._48_8_; + uVar7 = s__fixedSize________cuda__HostMem__0046be80._40_8_; + uVar6 = s__fixedSize________cuda__HostMem__0046be80._32_8_; + uVar4 = s__fixedSize________cuda__HostMem__0046be80._24_8_; + uVar3 = s__fixedSize________cuda__HostMem__0046be80._16_8_; + uVar2 = s__fixedSize________cuda__HostMem__0046be80._8_8_; + uVar1 = s__fixedSize________cuda__HostMem__0046be80._0_8_; + pcVar17[0x42] = s__fixedSize________cuda__HostMem__0046be80[0x42]; + *(undefined2 *)(pcVar17 + 0x40) = uVar10; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar4; + *(undefined8 *)(pcVar17 + 0x20) = uVar6; + *(undefined8 *)(pcVar17 + 0x28) = uVar7; + *(undefined8 *)(pcVar17 + 0x30) = uVar8; + *(undefined8 *)(pcVar17 + 0x38) = uVar9; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x897); + String::deallocate((String *)local_10); + } + cVar11 = fixedType(this); + if (cVar11 != '\0') { + puVar13 = *(uint **)(this + 8); + if (param_3 == (*puVar13 & 0xfff)) goto LAB_00343cb0; + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + pcVar17 = (char *)String::allocate((String *)local_10,0x36); + uVar5 = s__fixedType________cuda__HostMem__0046bba8._48_4_; + uVar7 = s__fixedType________cuda__HostMem__0046bba8._40_8_; + uVar6 = s__fixedType________cuda__HostMem__0046bba8._32_8_; + uVar4 = s__fixedType________cuda__HostMem__0046bba8._24_8_; + uVar3 = s__fixedType________cuda__HostMem__0046bba8._16_8_; + uVar2 = s__fixedType________cuda__HostMem__0046bba8._8_8_; + uVar1 = s__fixedType________cuda__HostMem__0046bba8._0_8_; + *(undefined2 *)(pcVar17 + 0x34) = s__fixedType________cuda__HostMem__0046bba8._52_2_; + *(undefined4 *)(pcVar17 + 0x30) = uVar5; + *(undefined8 *)pcVar17 = uVar1; + *(undefined8 *)(pcVar17 + 8) = uVar2; + *(undefined8 *)(pcVar17 + 0x10) = uVar3; + *(undefined8 *)(pcVar17 + 0x18) = uVar4; + *(undefined8 *)(pcVar17 + 0x20) = uVar6; + *(undefined8 *)(pcVar17 + 0x28) = uVar7; + error(-0xd7,(String *)local_10, + "void cv::_OutputArray::create(int, int, int, int, bool, int) const", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x898); + String::deallocate((String *)local_10); + } + puVar13 = *(uint **)(this + 8); +LAB_00343cb0: + cuda::HostMem::create((int)puVar13,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003443dc (988 bytes) name=hconcat + +/* cv::hconcat(cv::Mat const*, unsigned long, cv::_OutputArray const&) */ + +void cv::hconcat(Mat *param_1,ulong param_2,_OutputArray *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + char *pcVar14; + undefined4 *puVar15; + Mat *pMVar16; + int iVar17; + ulong uVar18; + int local_d8 [2]; + undefined8 local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if ((param_2 == 0) || (param_1 == (Mat *)0x0)) { + _OutputArray::release(param_3); + return; + } + uVar18 = 0; + iVar13 = 0; + pMVar16 = param_1 + 4; + do { + while (((*(int *)pMVar16 < 3 && (*(int *)(pMVar16 + 4) == *(int *)(param_1 + 8))) && + ((*(uint *)(pMVar16 + -4) & 0xfff) == (*(uint *)param_1 & 0xfff)))) { + uVar18 = uVar18 + 1; + iVar13 = iVar13 + *(int *)(pMVar16 + 8); + pMVar16 = pMVar16 + 0x60; + if (uVar18 == param_2) goto LAB_003444fc; + } + local_60 = 0; + local_58 = 0; + pcVar14 = (char *)String::allocate((String *)&local_60,0x50); + uVar12 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._72_8_; + uVar11 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._64_8_; + uVar10 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._56_8_; + uVar9 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._48_8_; + uVar8 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._40_8_; + uVar7 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._32_8_; + uVar6 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._24_8_; + uVar5 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._16_8_; + uVar4 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._8_8_; + *(undefined8 *)pcVar14 = s_src_i__dims_<__2_&&_src[i]_rows___0046bec8._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + *(undefined8 *)(pcVar14 + 0x20) = uVar7; + *(undefined8 *)(pcVar14 + 0x28) = uVar8; + *(undefined8 *)(pcVar14 + 0x30) = uVar9; + *(undefined8 *)(pcVar14 + 0x38) = uVar10; + *(undefined8 *)(pcVar14 + 0x40) = uVar11; + *(undefined8 *)(pcVar14 + 0x48) = uVar12; + error(-0xd7,(String *)&local_60,"void cv::hconcat(const cv::Mat*, size_t, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xab2); + uVar18 = uVar18 + 1; + String::deallocate((String *)&local_60); + iVar13 = iVar13 + *(int *)(pMVar16 + 8); + pMVar16 = pMVar16 + 0x60; + } while (uVar18 != param_2); +LAB_003444fc: + _OutputArray::create(param_3,*(int *)(param_1 + 8),iVar13,*(uint *)param_1 & 0xfff,-1,false,0); + iVar13 = _InputArray::kind((_InputArray *)param_3); + if (iVar13 == 0x10000) { + pMVar16 = *(Mat **)(param_3 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar16; + local_bc = *(int *)(pMVar16 + 4); + local_b8 = *(undefined4 *)(pMVar16 + 8); + local_b4 = *(undefined4 *)(pMVar16 + 0xc); + local_b0 = *(undefined8 *)(pMVar16 + 0x10); + local_a8 = *(undefined8 *)(pMVar16 + 0x18); + local_a0 = *(undefined8 *)(pMVar16 + 0x20); + local_98 = *(undefined8 *)(pMVar16 + 0x28); + local_90 = *(undefined8 *)(pMVar16 + 0x30); + local_88 = *(long *)(pMVar16 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar16 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar16 + 0x48); + local_68 = (*(undefined8 **)(pMVar16 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar16); + } + } + else { + _InputArray::getMat_((int)param_3); + } + uVar18 = 0; + iVar13 = 0; + do { + local_d8[1] = 0; + local_d0 = (String *)CONCAT44(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 0xc)); + local_d8[0] = iVar13; + Mat::Mat((Mat *)&local_60,(Mat *)&local_c0,(_OutputArray *)local_d8); + local_c8 = 0; + local_c4 = 0; + local_d8[0] = 0x2010000; + local_d0 = (String *)&local_60; + Mat::copyTo(param_1,(_OutputArray *)local_d8); + iVar13 = iVar13 + *(int *)(param_1 + 0xc); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar17 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar17 = 0; + puVar15 = local_20; + do { + *puVar15 = 0; + iVar17 = iVar17 + 1; + puVar15 = puVar15 + 1; + } while (iVar17 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + uVar18 = uVar18 + 1; + param_1 = param_1 + 0x60; + } while (uVar18 != param_2); + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + puVar15 = local_80; + do { + *puVar15 = 0; + iVar13 = iVar13 + 1; + puVar15 = puVar15 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 0034481c (652 bytes) name=hconcat + +/* cv::hconcat(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::hconcat(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + Mat *pMVar5; + undefined4 *puVar6; + Mat *this; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind(param_1); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar5; + local_bc = *(undefined4 *)(pMVar5 + 4); + local_b8 = *(undefined4 *)(pMVar5 + 8); + local_b4 = *(undefined4 *)(pMVar5 + 0xc); + local_b0 = *(undefined8 *)(pMVar5 + 0x10); + local_a8 = *(undefined8 *)(pMVar5 + 0x18); + local_a0 = *(undefined8 *)(pMVar5 + 0x20); + local_98 = *(undefined8 *)(pMVar5 + 0x28); + local_90 = *(undefined8 *)(pMVar5 + 0x30); + local_88 = *(long *)(pMVar5 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar5 + 0x48); + local_68 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar4 = _InputArray::kind(param_2); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar5; + local_50 = *(undefined8 *)(pMVar5 + 0x10); + local_5c = *(undefined4 *)(pMVar5 + 4); + local_58 = *(undefined4 *)(pMVar5 + 8); + local_54 = *(undefined4 *)(pMVar5 + 0xc); + local_48 = *(undefined8 *)(pMVar5 + 0x18); + local_40 = *(undefined8 *)(pMVar5 + 0x20); + local_38 = *(undefined8 *)(pMVar5 + 0x28); + local_30 = *(undefined8 *)(pMVar5 + 0x30); + local_28 = *(long *)(pMVar5 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar5 + 0x48); + local_8 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_2); + } + hconcat((Mat *)&local_c0,2,param_3); + pMVar5 = (Mat *)register0x00000008; + do { + this = pMVar5 + -0x60; + if (*(long *)(pMVar5 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar5 + -0x28) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(this); + } + } + *(undefined8 *)(pMVar5 + -0x28) = 0; + *(undefined8 *)(pMVar5 + -0x50) = 0; + *(undefined8 *)(pMVar5 + -0x38) = 0; + *(undefined8 *)(pMVar5 + -0x40) = 0; + *(undefined8 *)(pMVar5 + -0x48) = 0; + if (0 < *(int *)(pMVar5 + -0x5c)) { + iVar4 = 0; + puVar6 = *(undefined4 **)(pMVar5 + -0x20); + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < *(int *)(pMVar5 + -0x5c)); + } + if (*(Mat **)(pMVar5 + -0x18) != pMVar5 + -0x10) { + fastFree(*(Mat **)(pMVar5 + -0x18)); + } + pMVar5 = this; + } while (this != (Mat *)&local_c0); + return; +} + + +================================================================== + +### FUNC 00344b14 (268 bytes) name=hconcat + +/* cv::hconcat(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::hconcat(_InputArray *param_1,_OutputArray *param_2) + +{ + int *piVar1; + Mat *pMVar2; + char cVar3; + bool bVar4; + Mat *pMVar5; + Mat *pMVar6; + int iVar7; + undefined4 *puVar8; + Mat *local_18; + Mat *local_10; + undefined8 local_8; + + local_18 = (Mat *)0x0; + local_10 = (Mat *)0x0; + local_8 = 0; + _InputArray::getMatVector(param_1,(vector *)&local_18); + pMVar2 = local_18; + if (local_18 == local_10) { + pMVar2 = (Mat *)0x0; + } + hconcat(pMVar2,((long)local_10 - (long)local_18 >> 5) * -0x5555555555555555,param_2); + pMVar6 = local_10; + pMVar5 = local_10; + for (pMVar2 = local_18; pMVar2 != pMVar6; pMVar2 = pMVar2 + 0x60) { + if (*(long *)(pMVar2 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar2 + 0x38) + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate(pMVar2); + } + } + *(undefined8 *)(pMVar2 + 0x38) = 0; + *(undefined8 *)(pMVar2 + 0x10) = 0; + *(undefined8 *)(pMVar2 + 0x28) = 0; + *(undefined8 *)(pMVar2 + 0x20) = 0; + *(undefined8 *)(pMVar2 + 0x18) = 0; + if (0 < *(int *)(pMVar2 + 4)) { + iVar7 = 0; + puVar8 = *(undefined4 **)(pMVar2 + 0x40); + do { + *puVar8 = 0; + iVar7 = iVar7 + 1; + puVar8 = puVar8 + 1; + } while (iVar7 < *(int *)(pMVar2 + 4)); + } + if (*(Mat **)(pMVar2 + 0x48) != pMVar2 + 0x50) { + fastFree(*(Mat **)(pMVar2 + 0x48)); + } + pMVar5 = local_18; + } + if (pMVar5 != (Mat *)0x0) { + operator_delete(pMVar5); + } + return; +} + + +================================================================== + +### FUNC 00344c50 (988 bytes) name=vconcat + +/* cv::vconcat(cv::Mat const*, unsigned long, cv::_OutputArray const&) */ + +void cv::vconcat(Mat *param_1,ulong param_2,_OutputArray *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + char *pcVar14; + undefined4 *puVar15; + Mat *pMVar16; + int iVar17; + ulong uVar18; + undefined4 local_d8; + int local_d4; + undefined8 local_d0; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if ((param_2 == 0) || (param_1 == (Mat *)0x0)) { + _OutputArray::release(param_3); + return; + } + uVar18 = 0; + iVar13 = 0; + pMVar16 = param_1 + 4; + do { + while (((*(int *)pMVar16 < 3 && (*(int *)(pMVar16 + 8) == *(int *)(param_1 + 0xc))) && + ((*(uint *)(pMVar16 + -4) & 0xfff) == (*(uint *)param_1 & 0xfff)))) { + uVar18 = uVar18 + 1; + iVar13 = iVar13 + *(int *)(pMVar16 + 4); + pMVar16 = pMVar16 + 0x60; + if (uVar18 == param_2) goto LAB_00344d70; + } + local_60 = 0; + local_58 = 0; + pcVar14 = (char *)String::allocate((String *)&local_60,0x50); + uVar12 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._72_8_; + uVar11 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._64_8_; + uVar10 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._56_8_; + uVar9 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._48_8_; + uVar8 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._40_8_; + uVar7 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._32_8_; + uVar6 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._24_8_; + uVar5 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._16_8_; + uVar4 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._8_8_; + *(undefined8 *)pcVar14 = s_src_i__dims_<__2_&&_src[i]_cols___0046bf20._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar4; + *(undefined8 *)(pcVar14 + 0x10) = uVar5; + *(undefined8 *)(pcVar14 + 0x18) = uVar6; + *(undefined8 *)(pcVar14 + 0x20) = uVar7; + *(undefined8 *)(pcVar14 + 0x28) = uVar8; + *(undefined8 *)(pcVar14 + 0x30) = uVar9; + *(undefined8 *)(pcVar14 + 0x38) = uVar10; + *(undefined8 *)(pcVar14 + 0x40) = uVar11; + *(undefined8 *)(pcVar14 + 0x48) = uVar12; + error(-0xd7,(String *)&local_60,"void cv::vconcat(const cv::Mat*, size_t, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xada); + uVar18 = uVar18 + 1; + String::deallocate((String *)&local_60); + iVar13 = iVar13 + *(int *)(pMVar16 + 4); + pMVar16 = pMVar16 + 0x60; + } while (uVar18 != param_2); +LAB_00344d70: + _OutputArray::create(param_3,iVar13,*(int *)(param_1 + 0xc),*(uint *)param_1 & 0xfff,-1,false,0); + iVar13 = _InputArray::kind((_InputArray *)param_3); + if (iVar13 == 0x10000) { + pMVar16 = *(Mat **)(param_3 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar16; + local_bc = *(int *)(pMVar16 + 4); + local_b8 = *(undefined4 *)(pMVar16 + 8); + local_b4 = *(undefined4 *)(pMVar16 + 0xc); + local_b0 = *(undefined8 *)(pMVar16 + 0x10); + local_a8 = *(undefined8 *)(pMVar16 + 0x18); + local_a0 = *(undefined8 *)(pMVar16 + 0x20); + local_98 = *(undefined8 *)(pMVar16 + 0x28); + local_90 = *(undefined8 *)(pMVar16 + 0x30); + local_88 = *(long *)(pMVar16 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar16 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar16 + 0x48); + local_68 = (*(undefined8 **)(pMVar16 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar16); + } + } + else { + _InputArray::getMat_((int)param_3); + } + uVar18 = 0; + iVar13 = 0; + do { + local_d8 = 0; + local_d0 = (String *)CONCAT44(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 0xc)); + local_d4 = iVar13; + Mat::Mat((Mat *)&local_60,(Mat *)&local_c0,(_OutputArray *)&local_d8); + local_c8 = 0; + local_c4 = 0; + local_d8 = 0x2010000; + local_d0 = (String *)&local_60; + Mat::copyTo(param_1,(_OutputArray *)&local_d8); + iVar13 = iVar13 + *(int *)(param_1 + 8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar17 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar17 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar17 = 0; + puVar15 = local_20; + do { + *puVar15 = 0; + iVar17 = iVar17 + 1; + puVar15 = puVar15 + 1; + } while (iVar17 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + uVar18 = uVar18 + 1; + param_1 = param_1 + 0x60; + } while (uVar18 != param_2); + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + puVar15 = local_80; + do { + *puVar15 = 0; + iVar13 = iVar13 + 1; + puVar15 = puVar15 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00345090 (652 bytes) name=vconcat + +/* cv::vconcat(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::vconcat(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + Mat *pMVar5; + undefined4 *puVar6; + Mat *this; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::kind(param_1); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar5; + local_bc = *(undefined4 *)(pMVar5 + 4); + local_b8 = *(undefined4 *)(pMVar5 + 8); + local_b4 = *(undefined4 *)(pMVar5 + 0xc); + local_b0 = *(undefined8 *)(pMVar5 + 0x10); + local_a8 = *(undefined8 *)(pMVar5 + 0x18); + local_a0 = *(undefined8 *)(pMVar5 + 0x20); + local_98 = *(undefined8 *)(pMVar5 + 0x28); + local_90 = *(undefined8 *)(pMVar5 + 0x30); + local_88 = *(long *)(pMVar5 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar5 + 0x48); + local_68 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar4 = _InputArray::kind(param_2); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar5; + local_50 = *(undefined8 *)(pMVar5 + 0x10); + local_5c = *(undefined4 *)(pMVar5 + 4); + local_58 = *(undefined4 *)(pMVar5 + 8); + local_54 = *(undefined4 *)(pMVar5 + 0xc); + local_48 = *(undefined8 *)(pMVar5 + 0x18); + local_40 = *(undefined8 *)(pMVar5 + 0x20); + local_38 = *(undefined8 *)(pMVar5 + 0x28); + local_30 = *(undefined8 *)(pMVar5 + 0x30); + local_28 = *(long *)(pMVar5 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar5 + 0x48); + local_8 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_2); + } + vconcat((Mat *)&local_c0,2,param_3); + pMVar5 = (Mat *)register0x00000008; + do { + this = pMVar5 + -0x60; + if (*(long *)(pMVar5 + -0x28) != 0) { + piVar1 = (int *)(*(long *)(pMVar5 + -0x28) + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(this); + } + } + *(undefined8 *)(pMVar5 + -0x28) = 0; + *(undefined8 *)(pMVar5 + -0x50) = 0; + *(undefined8 *)(pMVar5 + -0x38) = 0; + *(undefined8 *)(pMVar5 + -0x40) = 0; + *(undefined8 *)(pMVar5 + -0x48) = 0; + if (0 < *(int *)(pMVar5 + -0x5c)) { + iVar4 = 0; + puVar6 = *(undefined4 **)(pMVar5 + -0x20); + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < *(int *)(pMVar5 + -0x5c)); + } + if (*(Mat **)(pMVar5 + -0x18) != pMVar5 + -0x10) { + fastFree(*(Mat **)(pMVar5 + -0x18)); + } + pMVar5 = this; + } while (this != (Mat *)&local_c0); + return; +} + + +================================================================== + +### FUNC 00345388 (268 bytes) name=vconcat + +/* cv::vconcat(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::vconcat(_InputArray *param_1,_OutputArray *param_2) + +{ + int *piVar1; + Mat *pMVar2; + char cVar3; + bool bVar4; + Mat *pMVar5; + Mat *pMVar6; + int iVar7; + undefined4 *puVar8; + Mat *local_18; + Mat *local_10; + undefined8 local_8; + + local_18 = (Mat *)0x0; + local_10 = (Mat *)0x0; + local_8 = 0; + _InputArray::getMatVector(param_1,(vector *)&local_18); + pMVar2 = local_18; + if (local_18 == local_10) { + pMVar2 = (Mat *)0x0; + } + vconcat(pMVar2,((long)local_10 - (long)local_18 >> 5) * -0x5555555555555555,param_2); + pMVar6 = local_10; + pMVar5 = local_10; + for (pMVar2 = local_18; pMVar2 != pMVar6; pMVar2 = pMVar2 + 0x60) { + if (*(long *)(pMVar2 + 0x38) != 0) { + piVar1 = (int *)(*(long *)(pMVar2 + 0x38) + 0x14); + do { + iVar7 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar7 == 1) { + Mat::deallocate(pMVar2); + } + } + *(undefined8 *)(pMVar2 + 0x38) = 0; + *(undefined8 *)(pMVar2 + 0x10) = 0; + *(undefined8 *)(pMVar2 + 0x28) = 0; + *(undefined8 *)(pMVar2 + 0x20) = 0; + *(undefined8 *)(pMVar2 + 0x18) = 0; + if (0 < *(int *)(pMVar2 + 4)) { + iVar7 = 0; + puVar8 = *(undefined4 **)(pMVar2 + 0x40); + do { + *puVar8 = 0; + iVar7 = iVar7 + 1; + puVar8 = puVar8 + 1; + } while (iVar7 < *(int *)(pMVar2 + 4)); + } + if (*(Mat **)(pMVar2 + 0x48) != pMVar2 + 0x50) { + fastFree(*(Mat **)(pMVar2 + 0x48)); + } + pMVar5 = local_18; + } + if (pMVar5 != (Mat *)0x0) { + operator_delete(pMVar5); + } + return; +} + + +================================================================== + +### FUNC 003454c4 (1980 bytes) name=transpose + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::transpose(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::transpose(_InputArray *param_1,_OutputArray *param_2) + +{ + uint uVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + bool bVar10; + int iVar11; + ulong uVar12; + undefined8 *puVar13; + int *piVar14; + char *pcVar15; + int iVar16; + long lVar17; + long lVar18; + Mat *pMVar19; + code *pcVar20; + undefined8 local_108; + undefined8 local_100; + code *local_f8; + code *local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar12 = _InputArray::type(param_1,-1); + iVar16 = ((uint)(uVar12 >> 3) & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (((uint)uVar12 & 7) << 1)) & 3); + iVar11 = _InputArray::dims(param_1,-1); + if ((iVar16 < 0x21) && (iVar11 < 3)) { + iVar11 = _InputArray::kind(param_1); + if (iVar11 != 0x10000) goto LAB_0034552c; +LAB_003457e8: + pMVar19 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar19; + local_bc = *(int *)(pMVar19 + 4); + local_b8 = *(int *)(pMVar19 + 8); + local_b4 = *(int *)(pMVar19 + 0xc); + local_b0 = *(long *)(pMVar19 + 0x10); + local_a8 = *(undefined8 *)(pMVar19 + 0x18); + local_a0 = *(undefined8 *)(pMVar19 + 0x20); + local_98 = *(undefined8 *)(pMVar19 + 0x28); + local_90 = *(undefined8 *)(pMVar19 + 0x30); + local_88 = *(long *)(pMVar19 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar10) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(pMVar19 + 4)) { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar19); + goto LAB_00345540; + } + local_70 = **(undefined8 **)(pMVar19 + 0x48); + local_68 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + if (local_b0 != 0) goto LAB_00345548; +LAB_0034589c: + _OutputArray::release(param_2); + } + else { + local_60 = 0; + local_58 = 0; + pcVar15 = (char *)String::allocate((String *)&local_60,0x1d); + cVar2 = s__src_dims___<__2_&&_esz_<__32_0046bfd0[0x1c]; + uVar9 = s__src_dims___<__2_&&_esz_<__32_0046bfd0._24_4_; + uVar4 = s__src_dims___<__2_&&_esz_<__32_0046bfd0._8_8_; + uVar3 = s__src_dims___<__2_&&_esz_<__32_0046bfd0._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s__src_dims___<__2_&&_esz_<__32_0046bfd0._16_8_; + *(undefined4 *)(pcVar15 + 0x18) = uVar9; + pcVar15[0x1c] = cVar2; + *(undefined8 *)pcVar15 = uVar3; + *(undefined8 *)(pcVar15 + 8) = uVar4; + error(-0xd7,(String *)&local_60,"void cv::transpose(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xc18); + String::deallocate((String *)&local_60); + iVar11 = _InputArray::kind(param_1); + if (iVar11 == 0x10000) goto LAB_003457e8; +LAB_0034552c: + _InputArray::getMat_((int)param_1); +LAB_00345540: + if (local_b0 == 0) goto LAB_0034589c; +LAB_00345548: + if (local_bc < 3) { + lVar18 = (long)local_b4 * (long)local_b8; + } + else { + lVar17 = 0; + lVar18 = 1; + do { + piVar14 = local_80 + lVar17; + lVar17 = lVar17 + 1; + lVar18 = lVar18 * *piVar14; + } while ((int)lVar17 < local_bc); + } + if (lVar18 == 0) goto LAB_0034589c; + _OutputArray::create(param_2,local_b4,local_b8,local_c0 & 0xfff,-1,false,0); + iVar11 = _InputArray::kind((_InputArray *)param_2); + if (iVar11 == 0x10000) { + pMVar19 = *(Mat **)(param_2 + 8); + local_20 = (int *)&local_58; + local_18 = &local_10; + uVar1 = *(uint *)pMVar19; + local_50 = *(long *)(pMVar19 + 0x10); + local_60 = *(ulong *)pMVar19; + local_58 = *(undefined8 *)(pMVar19 + 8); + local_48 = *(undefined8 *)(pMVar19 + 0x18); + local_40 = *(undefined8 *)(pMVar19 + 0x20); + local_38 = *(undefined8 *)(pMVar19 + 0x28); + local_30 = *(undefined8 *)(pMVar19 + 0x30); + local_28 = *(long *)(pMVar19 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar10) { + *piVar14 = *piVar14 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (2 < *(int *)(pMVar19 + 4)) { + local_60 = (ulong)uVar1; + Mat::copySize((Mat *)&local_60,pMVar19); + goto LAB_003455c0; + } + local_10 = **(undefined8 **)(pMVar19 + 0x48); + local_8 = (*(undefined8 **)(pMVar19 + 0x48))[1]; + local_58._4_4_ = (int)((ulong)local_58 >> 0x20); + bVar10 = local_b8 == local_58._4_4_; + if (bVar10) goto LAB_003459b8; + } + else { + _InputArray::getMat_((int)param_2); +LAB_003455c0: + bVar10 = local_b8 == local_58._4_4_; + if (bVar10) { +LAB_003459b8: + bVar10 = local_b4 == (int)local_58; + if (bVar10) { + if (local_50 == local_b0) { + pcVar20 = *(code **)(&DAT_004f6540 + (long)iVar16 * 8); + iVar11 = local_b8; + iVar16 = local_b4; + if (pcVar20 == (code *)0x0) { + local_f8 = pcVar20; + local_f0 = pcVar20; + pcVar15 = (char *)String::allocate((String *)&local_f8,9); + cVar2 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar15 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar15[8] = cVar2; + error(-0xd7,(String *)&local_f8,"void cv::transpose(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xc79); + String::deallocate((String *)&local_f8); + iVar11 = local_58._4_4_; + iVar16 = (int)local_58; + } + if (iVar11 != iVar16) { + local_e8 = 0; + local_e0 = 0; + pcVar15 = (char *)String::allocate((String *)&local_e8,0x14); + uVar4 = s_dst_cols____dst_rows_0046bfb8._8_8_; + uVar3 = s_dst_cols____dst_rows_0046bfb8._0_8_; + *(undefined4 *)(pcVar15 + 0x10) = s_dst_cols____dst_rows_0046bfb8._16_4_; + *(undefined8 *)pcVar15 = uVar3; + *(undefined8 *)(pcVar15 + 8) = uVar4; + error(-0xd7,(String *)&local_e8,"void cv::transpose(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xc7a); + String::deallocate((String *)&local_e8); + iVar16 = (int)local_58; + } + (*pcVar20)(local_50,local_10,iVar16); + } + else { + pMVar19 = *(Mat **)(&DAT_004f63f0 + (long)iVar16 * 8); + if (pMVar19 == (Mat *)0x0) { + local_d8 = pMVar19; + local_d0 = pMVar19; + pcVar15 = (char *)String::allocate((String *)&local_d8,9); + cVar2 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar15 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar15[8] = cVar2; + error(-0xd7,(String *)&local_d8,"void cv::transpose(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xc80); + String::deallocate((String *)&local_d8); + } + local_d8 = (Mat *)CONCAT44(*local_80,local_80[1]); + (*(code *)pMVar19)(local_b0,local_70,local_50,local_10,(String *)&local_d8); + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar16 = *piVar14; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar10) { + *piVar14 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar16 = 0; + piVar14 = local_20; + do { + *piVar14 = 0; + iVar16 = iVar16 + 1; + piVar14 = piVar14 + 1; + } while (iVar16 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar16 = *piVar14; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar10) { + *piVar14 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + if (0 < local_bc) { + iVar16 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar16 = iVar16 + 1; + piVar14 = piVar14 + 1; + } while (iVar16 < local_bc); + } + goto LAB_00345744; + } + } + } + if (((local_80[1] != local_20[1]) || (*local_80 != *local_20)) || + ((local_b4 != 1 && (local_b8 != 1)))) { + local_100 = 0; + local_108 = 0; + puVar13 = (undefined8 *)String::allocate((String *)&local_108,0x3c); + uVar9 = DAT_0046bfb0; + uVar8 = DAT_0046bfa0; + uVar7 = DAT_0046bf98; + uVar6 = DAT_0046bf90; + uVar5 = DAT_0046bf88; + uVar4 = _LAB_0046bf80; + uVar3 = _LAB_0046bf78; + puVar13[6] = DAT_0046bfa8; + *(undefined4 *)(puVar13 + 7) = uVar9; + *puVar13 = uVar3; + puVar13[1] = uVar4; + puVar13[2] = uVar5; + puVar13[3] = uVar6; + puVar13[4] = uVar7; + puVar13[5] = uVar8; + error(-0xd7,(String *)&local_108,"void cv::transpose(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xc2a); + String::deallocate((String *)&local_108); + } + local_c8 = 0; + local_c4 = 0; + local_d8 = (Mat *)CONCAT44(local_d8._4_4_,0x2010000); + local_d0 = (Mat *)&local_60; + Mat::copyTo((Mat *)&local_c0,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar16 = *piVar14; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar10) { + *piVar14 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar16 = 0; + piVar14 = local_20; + do { + *piVar14 = 0; + iVar16 = iVar16 + 1; + piVar14 = piVar14 + 1; + } while (iVar16 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + } + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar16 = *piVar14; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar10) { + *piVar14 = iVar16 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar16 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + if (0 < local_bc) { + iVar16 = 0; + piVar14 = local_80; + do { + *piVar14 = 0; + iVar16 = iVar16 + 1; + piVar14 = piVar14 + 1; + } while (iVar16 < local_bc); + } +LAB_00345744: + local_88 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + local_b0 = 0; + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00345d24 (580 bytes) name=diag + +/* cv::Mat::diag(cv::Mat const&) */ + +void __thiscall cv::Mat::diag(Mat *this,Mat *param_1) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + char *pcVar8; + int iVar9; + int iVar10; + Mat *in_x8; + undefined4 local_90 [2]; + Mat *local_88; + undefined4 local_80; + undefined4 local_7c; + int local_78; + int local_74; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar10 = *(int *)(this + 0xc); + iVar9 = *(int *)(this + 8); + if ((iVar10 != 1) && (iVar9 != 1)) { + local_60 = 0; + local_58 = 0; + pcVar8 = (char *)String::allocate((String *)&local_60,0x1a); + uVar7 = s_d_cols____1____d_rows____1_0046bff0._24_2_; + uVar6 = s_d_cols____1____d_rows____1_0046bff0._8_8_; + uVar5 = s_d_cols____1____d_rows____1_0046bff0._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_d_cols____1____d_rows____1_0046bff0._16_8_; + *(undefined2 *)(pcVar8 + 0x18) = uVar7; + *(undefined8 *)pcVar8 = uVar5; + *(undefined8 *)(pcVar8 + 8) = uVar6; + error(-0xd7,(String *)&local_60,"static cv::Mat cv::Mat::diag(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x3f5); + String::deallocate((String *)&local_60); + iVar9 = *(int *)(this + 8); + iVar10 = *(int *)(this + 0xc); + } + uVar2 = *(uint *)this; + local_78 = iVar9 + iVar10 + -1; + *(undefined4 *)in_x8 = 0x42ff0000; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined4 *)(in_x8 + 4) = 0; + *(undefined4 *)(in_x8 + 8) = 0; + *(undefined4 *)(in_x8 + 0xc) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + local_60 = 0; + local_58 = 0; + local_50 = 0; + local_48 = 0; + local_74 = local_78; + create(in_x8,2,&local_78,uVar2 & 0xfff); + operator=(in_x8,(Scalar_ *)&local_60); + diag((int)in_x8); + local_70 = (Mat *)&local_60; + if (*(int *)(this + 0xc) == 1) { + local_68 = 0; + local_64 = 0; + local_78 = 0x2010000; + copyTo(this,(_OutputArray *)&local_78); + } + else { + local_90[0] = 0x1010000; + local_80 = 0; + local_7c = 0; + local_68 = 0; + local_64 = 0; + local_78 = 0x2010000; + local_88 = this; + transpose((_InputArray *)local_90,(_OutputArray *)&local_78); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar9 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar9 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar9 == 1) { + deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar9 = 0; + do { + *local_20 = 0; + iVar9 = iVar9 + 1; + local_20 = local_20 + 1; + } while (iVar9 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00345fc8 (580 bytes) name=cvTranspose + +void cvTranspose(cv *param_1,cv *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + char *pcVar12; + int iVar13; + AutoBuffer *in_x5; + undefined4 local_f0 [2]; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,in_x5); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + if (((local_b8 != local_54) || (local_b4 != local_58)) || + ((local_c0 & 0xfff) != (local_60 & 0xfff))) { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_d8,0x48); + uVar9 = s_src_rows____dst_cols____src_cols_0046c010._40_8_; + uVar8 = s_src_rows____dst_cols____src_cols_0046c010._32_8_; + uVar7 = s_src_rows____dst_cols____src_cols_0046c010._24_8_; + uVar6 = s_src_rows____dst_cols____src_cols_0046c010._16_8_; + uVar5 = s_src_rows____dst_cols____src_cols_0046c010._8_8_; + uVar4 = s_src_rows____dst_cols____src_cols_0046c010._0_8_; + *(undefined8 *)(pcVar12 + 0x40) = s_src_rows____dst_cols____src_cols_0046c010._64_8_; + uVar11 = s_src_rows____dst_cols____src_cols_0046c010._56_8_; + uVar10 = s_src_rows____dst_cols____src_cols_0046c010._48_8_; + *(undefined8 *)pcVar12 = uVar4; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar6; + *(undefined8 *)(pcVar12 + 0x18) = uVar7; + *(undefined8 *)(pcVar12 + 0x20) = uVar8; + *(undefined8 *)(pcVar12 + 0x28) = uVar9; + *(undefined8 *)(pcVar12 + 0x30) = uVar10; + *(undefined8 *)(pcVar12 + 0x38) = uVar11; + cv::error(-0xd7,(String *)&local_d8,"void cvTranspose(const CvArr*, CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xffb); + cv::String::deallocate((String *)&local_d8); + } + local_f0[0] = 0x1010000; + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::transpose((_InputArray *)local_f0,(_OutputArray *)&local_d8); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 00346270 (3224 bytes) name=reduce + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::reduce(cv::_InputArray const&, cv::_OutputArray const&, int, int, int) */ + +void cv::reduce(_InputArray *param_1,_OutputArray *param_2,int param_3,int param_4,int param_5) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + bool bVar14; + bool bVar15; + bool bVar16; + char cVar17; + int iVar18; + int iVar19; + undefined8 *puVar20; + ulong uVar21; + char *pcVar22; + int *piVar23; + Mat *pMVar24; + int iVar25; + code *pcVar26; + uint uVar27; + uint uVar28; + uint uVar29; + int local_140; + int local_13c; + undefined8 local_138; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + uint local_120; + int iStack_11c; + int iStack_118; + int iStack_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int iStack_bc; + int iStack_b8; + int iStack_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar18 = _InputArray::dims(param_1,-1); + if (2 < iVar18) { + local_60 = 0; + local_58 = 0; + puVar20 = (undefined8 *)String::allocate((String *)&local_60,0x10); + uVar3 = _DAT_00463f58; + *puVar20 = DAT_00463f50; + puVar20[1] = uVar3; + error(-0xd7,(String *)&local_60, + "void cv::reduce(cv::InputArray, cv::OutputArray, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xe2f); + String::deallocate((String *)&local_60); + } + uVar21 = _InputArray::type(param_1,-1); + uVar28 = (uint)uVar21; + uVar2 = uVar28 & 7; + uVar1 = (uint)((uVar21 & 0xffffffff) >> 3) & 0x1ff; + if (param_5 < 0) { + cVar17 = _OutputArray::fixedType(param_2); + param_5 = uVar28; + if (cVar17 != '\0') { + param_5 = _InputArray::type((_InputArray *)param_2,-1); + } + uVar27 = uVar2; + if (-1 < param_5) goto LAB_00346328; + } + else { +LAB_00346328: + uVar27 = param_5 & 7; + } + iVar18 = uVar1 * 8; + uVar27 = uVar27 + iVar18; + uVar29 = uVar27 & 7; + if ((uVar27 >> 3) + 1 != uVar1 + 1) { + local_60 = 0; + local_58 = 0; + pcVar22 = (char *)String::allocate((String *)&local_60,0x16); + uVar5 = s_cn____CV_MAT_CN_dtype__0046c060._20_2_; + uVar4 = s_cn____CV_MAT_CN_dtype__0046c060._8_8_; + uVar3 = s_cn____CV_MAT_CN_dtype__0046c060._0_8_; + *(undefined4 *)(pcVar22 + 0x10) = s_cn____CV_MAT_CN_dtype__0046c060._16_4_; + *(undefined2 *)(pcVar22 + 0x14) = uVar5; + *(undefined8 *)pcVar22 = uVar3; + *(undefined8 *)(pcVar22 + 8) = uVar4; + error(-0xd7,(String *)&local_60, + "void cv::reduce(cv::InputArray, cv::OutputArray, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xe37); + String::deallocate((String *)&local_60); + } + bVar14 = param_4 == 0; + bVar15 = param_4 == 2; + if (((!bVar14) && (!bVar15)) && ((param_4 & 0xfffffffdU) != 1)) { + local_60 = 0; + local_58 = 0; + puVar20 = (undefined8 *)String::allocate((String *)&local_60,0x58); + uVar13 = DAT_0046c0c0; + uVar12 = DAT_0046c0b8; + uVar11 = DAT_0046c0b0; + uVar10 = DAT_0046c0a8; + uVar9 = DAT_0046c0a0; + uVar8 = DAT_0046c098; + uVar7 = DAT_0046c090; + uVar6 = DAT_0046c088; + uVar4 = DAT_0046c080; + uVar3 = _LAB_0046c078; + puVar20[10] = s_DUCE_AVG_0046c0c8._0_8_; + *puVar20 = uVar3; + puVar20[1] = uVar4; + puVar20[2] = uVar6; + puVar20[3] = uVar7; + puVar20[4] = uVar8; + puVar20[5] = uVar9; + puVar20[6] = uVar10; + puVar20[7] = uVar11; + puVar20[8] = uVar12; + puVar20[9] = uVar13; + error(-0xd7,(String *)&local_60, + "void cv::reduce(cv::InputArray, cv::OutputArray, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xe39); + String::deallocate((String *)&local_60); + } + iVar19 = _InputArray::kind(param_1); + if (iVar19 == 0x10000) { + pMVar24 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar1 = *(uint *)pMVar24; + local_50 = *(undefined8 *)(pMVar24 + 0x10); + local_60 = *(ulong *)pMVar24; + local_58 = *(undefined8 *)(pMVar24 + 8); + local_48 = *(undefined8 *)(pMVar24 + 0x18); + local_40 = *(undefined8 *)(pMVar24 + 0x20); + local_38 = *(undefined8 *)(pMVar24 + 0x28); + local_30 = *(undefined8 *)(pMVar24 + 0x30); + local_28 = *(long *)(pMVar24 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar23 = (int *)(local_28 + 0x14); + do { + cVar17 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar16) { + *piVar23 = *piVar23 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar24 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar24 + 0x48); + local_8 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar1; + Mat::copySize((Mat *)&local_60,pMVar24); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (param_3 == 0) { + iVar19 = 1; + iVar25 = local_58._4_4_; + } + else { + iVar19 = (int)local_58; + iVar25 = 1; + } + _OutputArray::create(param_2,iVar19,iVar25,uVar27,-1,false,0); + iVar19 = _InputArray::kind((_InputArray *)param_2); + if (iVar19 == 0x10000) { + pMVar24 = *(Mat **)(param_2 + 8); + local_e0 = &iStack_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar24; + iStack_11c = *(int *)(pMVar24 + 4); + iStack_118 = *(int *)(pMVar24 + 8); + iStack_114 = *(int *)(pMVar24 + 0xc); + local_110 = *(long *)(pMVar24 + 0x10); + local_108 = *(undefined8 *)(pMVar24 + 0x18); + local_100 = *(undefined8 *)(pMVar24 + 0x20); + local_f8 = *(undefined8 *)(pMVar24 + 0x28); + local_f0 = *(undefined8 *)(pMVar24 + 0x30); + local_e8 = *(long *)(pMVar24 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar23 = (int *)(local_e8 + 0x14); + do { + cVar17 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar16) { + *piVar23 = *piVar23 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar24 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar24 + 0x48); + local_c8 = (*(undefined8 **)(pMVar24 + 0x48))[1]; + } + else { + iStack_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar24); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iStack_b8 = iStack_118; + iStack_b4 = iStack_114; + local_c0 = local_120; + iStack_bc = iStack_11c; + local_78 = &local_70; + local_a8 = local_108; + local_80 = &iStack_b8; + uStack_68 = 0; + local_70 = 0; + local_a0 = local_100; + local_98 = local_f8; + local_b0 = local_110; + local_90 = local_f0; + local_88 = local_e8; + if (local_e8 != 0) { + piVar23 = (int *)(local_e8 + 0x14); + do { + cVar17 = '\x01'; + bVar16 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar16) { + *piVar23 = *piVar23 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (iStack_11c < 3) { + local_70 = *local_d8; + uStack_68 = local_d8[1]; + if (param_4 == 1) goto LAB_003465ec; +LAB_003464d4: + if (param_3 == 0) { + if (!bVar14) { + if (bVar15) { + if (((uVar27 | uVar28) & 7) == 0) { + pcVar26 = FUN_0030cfac; + goto LAB_00346630; + } + if ((uVar29 == 2) && (uVar2 == 2)) { + pcVar26 = FUN_0030f9c8; + goto LAB_00346630; + } + if ((uVar29 == 3) && (uVar2 == 3)) { + pcVar26 = FUN_00310524; + goto LAB_00346630; + } + if ((uVar29 == 5) && (uVar2 == 5)) { + pcVar26 = FUN_00313098; + goto LAB_00346630; + } + if ((uVar29 == 6) && (uVar2 == 6)) { + pcVar26 = FUN_00315dfc; + goto LAB_00346630; + } + } + else if (param_4 == 3) { + if (((uVar27 | uVar28) & 7) == 0) { + pcVar26 = FUN_0030bca4; + goto LAB_00346630; + } + if ((uVar29 == 2) && (uVar2 == 2)) { + pcVar26 = FUN_0030e2b4; + goto LAB_00346630; + } + if ((uVar29 == 3) && (uVar2 == 3)) { + pcVar26 = FUN_0030ee10; + goto LAB_00346630; + } + if ((uVar29 == 5) && (uVar2 == 5)) { + pcVar26 = FUN_003137b4; + goto LAB_00346630; + } + if ((uVar29 == 6) && (uVar2 == 6)) { + pcVar26 = FUN_0031588c; + goto LAB_00346630; + } + } + goto LAB_00346558; + } + bVar14 = uVar29 == 4; + goto LAB_0034652c; + } + if (bVar14) { + bVar14 = uVar29 == 4; + goto LAB_00346614; + } + if (bVar15) { + if (((uVar27 | uVar28) & 7) == 0) { + pcVar26 = FUN_002ff478; + goto LAB_00346630; + } + if ((uVar29 == 2) && (uVar2 == 2)) { + pcVar26 = FUN_002ff938; + goto LAB_00346630; + } + if ((uVar29 == 3) && (uVar2 == 3)) { + pcVar26 = FUN_002ffd20; + goto LAB_00346630; + } + if ((uVar29 == 5) && (uVar2 == 5)) { + pcVar26 = FUN_00300110; + goto LAB_00346630; + } + if ((uVar29 == 6) && (uVar2 == 6)) { + pcVar26 = FUN_0030042c; + goto LAB_00346630; + } + } + else if (param_4 == 3) { + if (((uVar27 | uVar28) & 7) == 0) { + pcVar26 = FUN_003006e4; + goto LAB_00346630; + } + if ((uVar29 == 2) && (uVar2 == 2)) { + pcVar26 = FUN_00300ba4; + goto LAB_00346630; + } + if ((uVar29 == 3) && (uVar2 == 3)) { + pcVar26 = FUN_00300f8c; + goto LAB_00346630; + } + if ((uVar29 == 5) && (uVar2 == 5)) { + pcVar26 = FUN_0030137c; + goto LAB_00346630; + } + if ((uVar29 == 6) && (uVar2 == 6)) { + pcVar26 = FUN_00301698; + goto LAB_00346630; + } + } + } + else { + iStack_bc = 0; + Mat::copySize((Mat *)&local_c0,(Mat *)&local_120); + if (param_4 != 1) goto LAB_003464d4; +LAB_003465ec: + if (uVar29 < 4 && uVar2 < 4) { + uVar1 = iVar18 + 4; + bVar14 = true; + if ((((2 < iStack_bc) || (iStack_118 != iStack_b8)) || (iStack_114 != iStack_b4)) || + ((uVar1 != (local_c0 & 0xfff) || (uVar29 = 4, local_b0 == 0)))) { + local_140 = iStack_118; + local_13c = iStack_114; + Mat::create((Mat *)&local_c0,2,&local_140,uVar1); + uVar29 = 4; + } + } + else { + bVar14 = uVar29 == 4; + } + if (param_3 == 0) { +LAB_0034652c: + bVar15 = (uVar21 & 7) == 0; + if ((bVar14) && (bVar15)) { + pcVar26 = FUN_00317104; + goto LAB_00346630; + } + bVar14 = uVar29 == 5; + if ((bVar14) && (bVar15)) { + pcVar26 = FUN_0031636c; + goto LAB_00346630; + } + bVar16 = uVar29 == 6; + if ((bVar16) && (bVar15)) { + pcVar26 = FUN_00317eb4; + goto LAB_00346630; + } + if ((bVar14) && (uVar2 == 2)) { + pcVar26 = FUN_00312188; + goto LAB_00346630; + } + if ((bVar16) && (uVar2 == 2)) { + pcVar26 = FUN_0031446c; + goto LAB_00346630; + } + if ((bVar14) && (uVar2 == 3)) { + pcVar26 = FUN_0031177c; + goto LAB_00346630; + } + if ((bVar16) && (uVar2 == 3)) { + pcVar26 = FUN_00314e7c; + goto LAB_00346630; + } + if ((bVar14) && (uVar2 == 5)) { + pcVar26 = FUN_003110dc; + goto LAB_00346630; + } + if (bVar16) { + if (uVar2 == 5) { + pcVar26 = FUN_00313ed0; + goto LAB_00346630; + } + if (uVar2 == 6) { + pcVar26 = FUN_00312b94; + goto LAB_00346630; + } + } + } + else { +LAB_00346614: + bVar15 = (uVar21 & 7) == 0; + if ((bVar14) && (bVar15)) { + pcVar26 = FUN_002fcd98; + goto LAB_00346630; + } + bVar14 = uVar29 == 5; + if ((bVar14) && (bVar15)) { + pcVar26 = FUN_002fd228; + goto LAB_00346630; + } + bVar16 = uVar29 == 6; + if ((bVar16) && (bVar15)) { + pcVar26 = FUN_002fd718; + goto LAB_00346630; + } + if ((bVar14) && (uVar2 == 2)) { + pcVar26 = FUN_002fdc38; + goto LAB_00346630; + } + if ((bVar16) && (uVar2 == 2)) { + pcVar26 = FUN_002fe01c; + goto LAB_00346630; + } + if ((bVar14) && (uVar2 == 3)) { + pcVar26 = FUN_002fe420; + goto LAB_00346630; + } + if ((bVar16) && (uVar2 == 3)) { + pcVar26 = FUN_002fe804; + goto LAB_00346630; + } + if ((bVar14) && (uVar2 == 5)) { + pcVar26 = FUN_002fec08; + goto LAB_00346630; + } + if (bVar16) { + if (uVar2 == 5) { + pcVar26 = FUN_002feef0; + goto LAB_00346630; + } + if (uVar2 == 6) { + pcVar26 = FUN_002ff1f4; + goto LAB_00346630; + } + } + } + } +LAB_00346558: + local_138 = 0; + local_130 = (Mat *)0x0; + pcVar22 = (char *)String::allocate((String *)&local_138,0x39); + cVar17 = s_Unsupported_combination_of_input_0046c0d8[0x38]; + uVar9 = s_Unsupported_combination_of_input_0046c0d8._40_8_; + uVar8 = s_Unsupported_combination_of_input_0046c0d8._32_8_; + uVar7 = s_Unsupported_combination_of_input_0046c0d8._24_8_; + uVar6 = s_Unsupported_combination_of_input_0046c0d8._16_8_; + uVar4 = s_Unsupported_combination_of_input_0046c0d8._8_8_; + uVar3 = s_Unsupported_combination_of_input_0046c0d8._0_8_; + *(undefined8 *)(pcVar22 + 0x30) = s_Unsupported_combination_of_input_0046c0d8._48_8_; + pcVar22[0x38] = cVar17; + *(undefined8 *)pcVar22 = uVar3; + *(undefined8 *)(pcVar22 + 8) = uVar4; + *(undefined8 *)(pcVar22 + 0x10) = uVar6; + *(undefined8 *)(pcVar22 + 0x18) = uVar7; + *(undefined8 *)(pcVar22 + 0x20) = uVar8; + *(undefined8 *)(pcVar22 + 0x28) = uVar9; + error(-0xd2,(String *)&local_138,"void cv::reduce(cv::InputArray, cv::OutputArray, int, int, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xeb8); + String::deallocate((String *)&local_138); + pcVar26 = (code *)0x0; +LAB_00346630: + (*pcVar26)((String *)&local_60,(Mat *)&local_c0); + if (param_4 == 1) { + local_128 = 0; + local_124 = 0; + local_138 = CONCAT44(local_138._4_4_,0x2010000); + if (param_3 == 0) { + iVar18 = (int)local_58; + } + else { + iVar18 = local_58._4_4_; + } + local_130 = (Mat *)&local_120; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_138,local_120 & 0xfff, + 1.0 / (double)iVar18,0.0); + } + if (local_88 != 0) { + piVar23 = (int *)(local_88 + 0x14); + do { + iVar18 = *piVar23; + cVar17 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar14) { + *piVar23 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < iStack_bc) { + iVar18 = 0; + piVar23 = local_80; + do { + *piVar23 = 0; + iVar18 = iVar18 + 1; + piVar23 = piVar23 + 1; + } while (iVar18 < iStack_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar23 = (int *)(local_e8 + 0x14); + do { + iVar18 = *piVar23; + cVar17 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar14) { + *piVar23 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < iStack_11c) { + iVar18 = 0; + piVar23 = local_e0; + do { + *piVar23 = 0; + iVar18 = iVar18 + 1; + piVar23 = piVar23 + 1; + } while (iVar18 < iStack_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_28 != 0) { + piVar23 = (int *)(local_28 + 0x14); + do { + iVar18 = *piVar23; + cVar17 = '\x01'; + bVar14 = (bool)ExclusiveMonitorPass(piVar23,0x10); + if (bVar14) { + *piVar23 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar18 = 0; + puVar20 = local_20; + do { + *(undefined4 *)puVar20 = 0; + iVar18 = iVar18 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar18 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 00346fc8 (932 bytes) name=cvReduce + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvReduce(cv *param_1,cv *param_2,uint param_3,int param_4,undefined8 param_5, + AutoBuffer *param_6) + +{ + int *piVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + bool bVar10; + undefined8 *puVar11; + char *pcVar12; + int iVar13; + String *this; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + Mat *local_e8; + undefined4 local_e0; + undefined4 local_dc; + undefined8 local_d8; + Mat *local_d0; + undefined4 local_c8; + undefined4 local_c4; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,false,0,param_6); + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,param_6); + if ((int)param_3 < 0) { + if (local_b8 <= local_58) { + param_3 = (uint)(local_54 < local_b4 || local_54 == 1); + goto LAB_003472b0; + } +joined_r0x00347334: + param_3 = 0; + if (local_54 == local_b4) { +joined_r0x00347340: + if (local_58 == 1) goto LAB_00347090; + } +LAB_003472c4: + this = (String *)&local_f0; + local_f0 = 0; + local_e8 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate(this,0x22); + uVar6 = s_The_output_array_size_is_incorre_0046c150._24_8_; + uVar5 = s_The_output_array_size_is_incorre_0046c150._16_8_; + uVar4 = s_The_output_array_size_is_incorre_0046c150._8_8_; + uVar3 = s_The_output_array_size_is_incorre_0046c150._0_8_; + *(undefined2 *)(pcVar12 + 0x20) = s_The_output_array_size_is_incorre_0046c150._32_2_; + *(undefined8 *)pcVar12 = uVar3; + *(undefined8 *)(pcVar12 + 8) = uVar4; + *(undefined8 *)(pcVar12 + 0x10) = uVar5; + *(undefined8 *)(pcVar12 + 0x18) = uVar6; + cv::error(-0xc9,this,"void cvReduce(const CvArr*, CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x101d); + } + else { + if ((int)param_3 < 2) { +LAB_003472b0: + if (param_3 == 0) goto joined_r0x00347334; + param_3 = 1; + bVar10 = local_58 == local_b8; + local_58 = local_54; + if (bVar10) goto joined_r0x00347340; + goto LAB_003472c4; + } + this = (String *)&local_100; + local_100 = 0; + local_f8 = 0; + puVar11 = (undefined8 *)cv::String::allocate(this,0x30); + uVar7 = _DAT_0046c140; + uVar6 = DAT_0046c138; + uVar5 = DAT_0046c130; + uVar4 = DAT_0046c128; + uVar3 = DAT_0046c120; + *puVar11 = DAT_0046c118; + puVar11[1] = uVar3; + puVar11[2] = uVar4; + puVar11[3] = uVar5; + puVar11[4] = uVar6; + puVar11[5] = uVar7; + cv::error(-0xd3,this,"void cvReduce(const CvArr*, CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1019); + } + cv::String::deallocate(this); +LAB_00347090: + if ((local_c0 >> 3 & 0x1ff) + 1 != (local_60 >> 3 & 0x1ff) + 1) { + local_d8 = 0; + local_d0 = (Mat *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_d8,0x3d); + cVar2 = s_Input_and_output_arrays_must_hav_0046c178[0x3c]; + uVar9 = s_Input_and_output_arrays_must_hav_0046c178._56_4_; + uVar8 = s_Input_and_output_arrays_must_hav_0046c178._40_8_; + uVar7 = s_Input_and_output_arrays_must_hav_0046c178._32_8_; + uVar6 = s_Input_and_output_arrays_must_hav_0046c178._24_8_; + uVar5 = s_Input_and_output_arrays_must_hav_0046c178._16_8_; + uVar4 = s_Input_and_output_arrays_must_hav_0046c178._8_8_; + uVar3 = s_Input_and_output_arrays_must_hav_0046c178._0_8_; + *(undefined8 *)(pcVar12 + 0x30) = s_Input_and_output_arrays_must_hav_0046c178._48_8_; + *(undefined4 *)(pcVar12 + 0x38) = uVar9; + pcVar12[0x3c] = cVar2; + *(undefined8 *)pcVar12 = uVar3; + *(undefined8 *)(pcVar12 + 8) = uVar4; + *(undefined8 *)(pcVar12 + 0x10) = uVar5; + *(undefined8 *)(pcVar12 + 0x18) = uVar6; + *(undefined8 *)(pcVar12 + 0x20) = uVar7; + *(undefined8 *)(pcVar12 + 0x28) = uVar8; + cv::error(-0xcd,(String *)&local_d8,"void cvReduce(const CvArr*, CvArr*, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0x1020); + cv::String::deallocate((String *)&local_d8); + } + local_f0 = CONCAT44(local_f0._4_4_,0x1010000); + local_e0 = 0; + local_dc = 0; + local_c8 = 0; + local_c4 = 0; + local_d8 = CONCAT44(local_d8._4_4_,0x2010000); + local_e8 = (Mat *)&local_c0; + local_d0 = (Mat *)&local_60; + cv::reduce((_InputArray *)&local_f0,(_OutputArray *)&local_d8,param_3,param_4,local_60 & 0xfff); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar13 = 0; + do { + *local_20 = 0; + iVar13 = iVar13 + 1; + local_20 = local_20 + 1; + } while (iVar13 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar13 = *piVar1; + cVar2 = '\x01'; + bVar10 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar10) { + *piVar1 = iVar13 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar13 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar13 = 0; + do { + *local_80 = 0; + iVar13 = iVar13 + 1; + local_80 = local_80 + 1; + } while (iVar13 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 003473e8 (92 bytes) name=createSameSize + +/* cv::_OutputArray::createSameSize(cv::_InputArray const&, int) const */ + +void __thiscall +cv::_OutputArray::createSameSize(_OutputArray *this,_InputArray *param_1,int param_2) + +{ + int iVar1; + int aiStack_80 [32]; + + iVar1 = _InputArray::sizend(param_1,aiStack_80,-1); + create(this,iVar1,aiStack_80,param_2,-1,false,0); + return; +} + + +================================================================== + +### FUNC 00347444 (968 bytes) name=FUN_00347444 + +void FUN_00347444(int *param_1,int *param_2,long param_3,long param_4) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + long lVar4; + ulong uVar5; + long lVar6; + long lVar7; + int *piVar8; + int *piVar9; + long lVar10; + int iVar11; + long lVar12; + ulong uVar13; + int iVar14; + ulong uVar15; + long lVar16; + + lVar10 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar10 < 0x44) { + return; + } + if (param_3 == 0) break; + iVar14 = param_1[1]; + param_3 = param_3 + -1; + lVar12 = (long)iVar14; + bVar1 = *(byte *)(param_4 + param_2[-1]); + bVar2 = *(byte *)(param_4 + lVar12); + bVar3 = *(byte *)(param_4 + param_1[lVar10 >> 3]); + piVar9 = param_2; + piVar8 = param_1; + if (bVar2 < bVar3) { + if (bVar3 < bVar1) { +LAB_00347570: + iVar14 = *param_1; + *param_1 = param_1[lVar10 >> 3]; + param_1[lVar10 >> 3] = iVar14; + iVar14 = param_2[-1]; + iVar11 = param_1[1]; + lVar12 = (long)*param_1; + } + else { + if (bVar1 <= bVar2) goto LAB_0034758c; +LAB_003474b8: + iVar14 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = iVar14; + iVar11 = param_1[1]; + lVar12 = (long)*param_1; + } + } + else { + if (bVar1 <= bVar2) { + if (bVar3 < bVar1) goto LAB_003474b8; + goto LAB_00347570; + } +LAB_0034758c: + iVar11 = *param_1; + param_1[1] = iVar11; + *param_1 = iVar14; + iVar14 = param_2[-1]; + } + while( true ) { + piVar8 = piVar8 + 1; + bVar1 = *(byte *)(param_4 + iVar11); + while (bVar1 < *(byte *)(param_4 + lVar12)) { + piVar8 = piVar8 + 1; + iVar11 = *piVar8; + bVar1 = *(byte *)(param_4 + iVar11); + } + piVar9 = piVar9 + -1; + bVar1 = *(byte *)(param_4 + iVar14); + while (*(byte *)(param_4 + lVar12) < bVar1) { + piVar9 = piVar9 + -1; + iVar14 = *piVar9; + bVar1 = *(byte *)(param_4 + iVar14); + } + if (piVar9 <= piVar8) break; + *piVar8 = iVar14; + *piVar9 = iVar11; + iVar14 = piVar9[-1]; + iVar11 = piVar8[1]; + lVar12 = (long)*param_1; + } + FUN_00347444(piVar8,param_2,param_3,param_4); + lVar10 = (long)piVar8 - (long)param_1; + param_2 = piVar8; + } + lVar10 = lVar10 >> 2; + lVar16 = lVar10 + -2 >> 1; + piVar8 = param_1 + lVar16; + lVar12 = lVar16; + do { + iVar14 = *piVar8; + lVar4 = lVar12; + piVar9 = piVar8; + while (lVar4 < lVar10 + -1 >> 1) { + lVar7 = lVar4 + 1; + lVar6 = lVar7 * 2; + piVar9 = param_1 + lVar7 * 2; + iVar11 = param_1[lVar7 * 2]; + if (*(byte *)(param_4 + iVar11) < *(byte *)(param_4 + piVar9[-1])) { + lVar6 = lVar6 + -1; + iVar11 = param_1[lVar6]; + piVar9 = param_1 + lVar6; + } + param_1[lVar4] = iVar11; + lVar4 = lVar6; + } + if ((lVar16 == lVar4) && (((uint)lVar10 & 1) != 1)) { + lVar7 = lVar4 + 1; + lVar4 = lVar7 * 2 + -1; + *piVar9 = param_1[lVar7 * 2 + -1]; + piVar9 = param_1 + lVar4; + } + if (lVar12 < lVar4) { + lVar7 = lVar4 + -1 >> 1; + iVar11 = param_1[lVar7]; + if (*(byte *)(param_4 + iVar11) < *(byte *)(param_4 + iVar14)) { + do { + param_1[lVar4] = iVar11; + piVar9 = param_1 + lVar7; + if (lVar7 <= lVar12) break; + lVar6 = (lVar7 + -1) / 2; + iVar11 = param_1[lVar6]; + lVar4 = lVar7; + lVar7 = lVar6; + } while (*(byte *)(param_4 + iVar11) < *(byte *)(param_4 + iVar14)); + } + *piVar9 = iVar14; + if (lVar12 == 0) break; + } + else { + *piVar9 = iVar14; + } + piVar8 = piVar8 + -1; + lVar12 = lVar12 + -1; + } while( true ); +LAB_00347604: + param_2 = param_2 + -1; + iVar14 = *param_2; + *param_2 = *param_1; + uVar15 = (long)param_2 - (long)param_1 >> 2; + lVar10 = (long)(uVar15 - 1) / 2; + if (lVar10 < 1) { + uVar5 = uVar15 & 1; + piVar8 = param_1; + if ((uVar15 & 1) == 0) goto LAB_0034767c; + } + else { + uVar13 = 0; + do { + lVar12 = uVar13 + 1; + uVar5 = lVar12 * 2; + piVar8 = param_1 + lVar12 * 2; + iVar11 = param_1[lVar12 * 2]; + if (*(byte *)(param_4 + iVar11) < *(byte *)(param_4 + piVar8[-1])) { + uVar5 = uVar5 - 1; + iVar11 = param_1[uVar5]; + piVar8 = param_1 + uVar5; + } + param_1[uVar13] = iVar11; + uVar13 = uVar5; + } while ((long)uVar5 < lVar10); + if ((uVar15 & 1) == 0) { +LAB_0034767c: + if (uVar5 == (long)(uVar15 - 2) / 2) { + lVar10 = uVar5 + 1; + uVar5 = lVar10 * 2 - 1; + *piVar8 = param_1[lVar10 * 2 + -1]; + piVar8 = param_1 + uVar5; + } + else if ((long)uVar5 < 1) goto LAB_00347694; + } + uVar15 = (long)(uVar5 - 1) >> 1; + iVar11 = param_1[uVar15]; + if (*(byte *)(param_4 + iVar11) < *(byte *)(param_4 + iVar14)) { + do { + param_1[uVar5] = iVar11; + piVar8 = param_1 + uVar15; + uVar13 = (long)(uVar15 - 1) >> 1; + if (uVar15 == 0) break; + iVar11 = param_1[uVar13]; + uVar5 = uVar15; + uVar15 = uVar13; + } while (*(byte *)(param_4 + iVar11) < *(byte *)(param_4 + iVar14)); + } + } +LAB_00347694: + *piVar8 = iVar14; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_00347604; +} + + +================================================================== + +### FUNC 00347810 (2388 bytes) name=FUN_00347810 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00347810(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + byte bVar7; + uint uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int *piVar11; + undefined1 *puVar12; + undefined8 uVar13; + undefined8 uVar14; + uint uVar15; + int iVar16; + long lVar17; + int *piVar18; + ulong uVar19; + undefined1 (*pauVar20) [16]; + char *pcVar21; + int iVar22; + ulong uVar23; + ulong uVar24; + ulong uVar25; + size_t sVar26; + int *piVar27; + undefined1 (*pauVar28) [16]; + int *piVar29; + uint uVar30; + ulong uVar31; + long lVar32; + undefined1 (*pauVar33) [16]; + undefined1 (*pauVar34) [16]; + int *piVar35; + int *piVar36; + uint uVar37; + ulong uVar38; + ulong uVar39; + int *piVar40; + undefined1 *puVar41; + long lVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined8 local_858; + undefined8 local_850; + undefined1 *local_848; + ulong local_840; + undefined1 local_838 [1032]; + int *local_430; + ulong local_428; + int local_420 [264]; + + local_430 = local_420; + local_428 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_848 = local_838; + local_840 = 0x408; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + local_858 = 0; + local_850 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_858,0x14); + uVar14 = s_src_data____dst_data_0046c1b8._8_8_; + uVar13 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar21 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar21 = uVar13; + *(undefined8 *)(pcVar21 + 8) = uVar14; + cv::error(-0xd7,(String *)&local_858, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = unsigned char]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_858); + } + if (uVar4 == 0) { + uVar38 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + uVar31 = (ulong)(int)*(uint *)(param_1 + 8); + uVar23 = uVar31; + if (local_840 < uVar31) { + if (local_848 != local_838) { + if (local_848 != (undefined1 *)0x0) { + operator_delete__(local_848); + } + local_848 = local_838; + local_840 = 0x408; + } + uVar23 = local_840; + if (0x408 < uVar31) { + local_848 = operator_new__(uVar31); + uVar23 = uVar31; + } + } + local_840 = uVar23; + if (local_428 < uVar31) { + if (local_430 != local_420) { + if (local_430 != (int *)0x0) { + operator_delete__(local_430); + } + local_430 = local_420; + local_428 = 0x108; + } + if (uVar31 < 0x109) { + piVar11 = local_420; + puVar12 = local_848; + } + else { + uVar23 = uVar31 << 2; + if (0x1fc0000000000000 < uVar31) { + uVar23 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar23); + local_428 = uVar31; + piVar11 = local_430; + puVar12 = local_848; + } + } + else { + local_428 = uVar31; + piVar11 = local_430; + puVar12 = local_848; + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar38 = (ulong)*(uint *)(param_1 + 0xc); + piVar11 = local_430; + puVar12 = local_848; + } + piVar40 = piVar11; + local_848 = puVar12; + if (0 < iVar5) { + uVar23 = -(uVar38 >> 0x1f) & 0xfffffffc00000000 | uVar38 << 2; + uVar37 = (uint)uVar38; + uVar2 = (int)uVar37 / 2; + uVar39 = (ulong)uVar2; + uVar8 = uVar37 - 1; + uVar31 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + uVar38 = -(ulong)(uVar37 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 2) << 2; + uVar3 = uVar37; + if ((int)uVar37 < 1) { + uVar3 = 1; + } + uVar24 = -(ulong)(uVar37 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 3) << 2; + lVar42 = 0; + do { + if (uVar4 == 0) { + lVar17 = 0; + piVar40 = piVar11; + puVar41 = puVar12; + if (0 < (int)uVar37) { + do { + puVar12[lVar17] = + *(undefined1 *) + (*(long *)(param_1 + 0x10) + lVar17 * **(long **)(param_1 + 0x48) + lVar42); + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar37); + uVar15 = -((uint)((ulong)piVar11 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } +joined_r0x00347e7c: + uVar30 = uVar3; + if (((int)uVar3 < 8) || (uVar25 = 0, uVar30 = uVar15, uVar15 != 0)) { + uVar15 = uVar30; + *piVar40 = 0; + if ((uVar15 == 1) || + ((((piVar40[1] = 1, uVar15 == 2 || (piVar40[2] = 2, uVar15 == 3)) || + (piVar40[3] = 3, uVar15 == 4)) || (piVar40[4] = 4, uVar15 == 5)))) { + uVar25 = (ulong)uVar15; + } + else { + piVar40[5] = 5; + if (uVar15 == 7) { + uVar25 = 7; + piVar40[6] = 6; + } + else { + uVar25 = 6; + } + } + if (uVar15 == uVar3) goto LAB_00347ad4; + } + uVar30 = uVar8; + if ((int)uVar37 < 1) { + uVar30 = 0; + } + uVar1 = ((uVar3 - uVar15) - 4 >> 2) + 1; + iVar16 = uVar1 * 4; + if (2 < uVar30 - uVar15) { + iVar22 = (int)uVar25; + uVar30 = 0; + auVar43._0_4_ = iVar22 + (int)_DAT_003481c0; + auVar43._4_4_ = iVar22 + (int)((ulong)_DAT_003481c0 >> 0x20); + auVar43._8_4_ = iVar22 + (int)_UNK_003481c8; + auVar43._12_4_ = iVar22 + (int)((ulong)_UNK_003481c8 >> 0x20); + piVar18 = piVar40 + uVar15; + do { + *(long *)(piVar18 + 2) = auVar43._8_8_; + *(long *)piVar18 = auVar43._0_8_; + uVar30 = uVar30 + 1; + auVar44._0_4_ = auVar43._0_4_ + 4; + auVar44._4_4_ = auVar43._4_4_ + 4; + auVar44._8_4_ = auVar43._8_4_ + 4; + auVar44._12_4_ = auVar43._12_4_ + 4; + piVar18 = piVar18 + 4; + auVar43 = auVar44; + } while (uVar30 < uVar1); + uVar25 = (ulong)(uint)(iVar22 + iVar16); + if (iVar16 == uVar3 - uVar15) goto LAB_00347ad4; + } + uVar19 = -(uVar25 >> 0x1f) & 0xfffffffc00000000 | uVar25 << 2; + iVar16 = (int)uVar25; + *(int *)((long)piVar40 + uVar19) = iVar16; + if (iVar16 + 1 < (int)uVar37) { + *(int *)((long)piVar40 + uVar19 + 4) = iVar16 + 1; + if (iVar16 + 2 < (int)uVar37) { + *(int *)((long)piVar40 + uVar19 + 8) = iVar16 + 2; + } + } + } + } + else { + puVar41 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar42 * *(long *)(param_1 + 0x50)); + piVar40 = (int *)(*(long *)(param_2 + 0x10) + lVar42 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar37) { + uVar15 = -((uint)((ulong)piVar40 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } + goto joined_r0x00347e7c; + } + } +LAB_00347ad4: + piVar18 = (int *)((long)piVar40 + uVar23); + if (piVar40 != piVar18) { + FUN_00347444(piVar40,piVar18,(0x3f - LZCOUNT((long)uVar23 >> 2)) * 2,puVar41); + if ((long)uVar23 < 0x44) { + piVar35 = piVar40 + 1; + if (piVar18 != piVar35) { + iVar16 = *piVar35; + lVar17 = (long)iVar16; + bVar7 = puVar41[lVar17]; + if ((byte)puVar41[*piVar40] <= bVar7) goto LAB_00347efc; + do { + sVar26 = (long)piVar35 - (long)piVar40; + if ((long)sVar26 >> 2 != 0) { + memmove((void *)((long)piVar35 + (4 - sVar26)),piVar40,sVar26); + } + *piVar40 = iVar16; + while( true ) { + piVar35 = piVar35 + 1; + if (piVar18 == piVar35) goto LAB_00347ba8; + iVar16 = *piVar35; + lVar17 = (long)iVar16; + bVar7 = puVar41[lVar17]; + if (bVar7 < (byte)puVar41[*piVar40]) break; +LAB_00347efc: + iVar22 = piVar35[-1]; + piVar36 = piVar35; + if (bVar7 < (byte)puVar41[iVar22]) { + do { + piVar27 = piVar36 + -1; + *piVar36 = iVar22; + iVar22 = piVar36[-2]; + piVar36 = piVar27; + } while ((byte)puVar41[lVar17] < (byte)puVar41[iVar22]); + *piVar27 = iVar16; + } + else { + *piVar35 = iVar16; + } + } + } while( true ); + } + } + else { + piVar36 = piVar40 + 0x10; + piVar35 = piVar40 + 1; + do { + iVar16 = *piVar35; + if ((byte)puVar41[iVar16] < (byte)puVar41[*piVar40]) { + sVar26 = (long)piVar35 - (long)piVar40; + if ((long)sVar26 >> 2 != 0) { + memmove((void *)((long)piVar35 + (4 - sVar26)),piVar40,sVar26); + } + *piVar40 = iVar16; + } + else { + iVar22 = piVar35[-1]; + piVar27 = piVar35; + if ((byte)puVar41[iVar16] < (byte)puVar41[iVar22]) { + do { + piVar29 = piVar27 + -1; + *piVar27 = iVar22; + iVar22 = piVar27[-2]; + piVar27 = piVar29; + } while ((byte)puVar41[iVar16] < (byte)puVar41[iVar22]); + *piVar29 = iVar16; + } + else { + *piVar35 = iVar16; + } + } + piVar35 = piVar35 + 1; + } while (piVar36 != piVar35); + for (; piVar18 != piVar36; piVar36 = piVar36 + 1) { + while( true ) { + iVar16 = piVar36[-1]; + iVar22 = *piVar36; + piVar35 = piVar36; + if ((byte)puVar41[iVar22] < (byte)puVar41[iVar16]) break; + piVar35 = piVar36 + 1; + *piVar36 = iVar22; + piVar36 = piVar35; + if (piVar18 == piVar35) goto LAB_00347ba8; + } + do { + piVar27 = piVar35 + -1; + *piVar35 = iVar16; + iVar16 = piVar35[-2]; + piVar35 = piVar27; + } while ((byte)puVar41[iVar22] < (byte)puVar41[iVar16]); + *piVar27 = iVar22; + } + } + } +LAB_00347ba8: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(uVar23 + uVar39 * -4) < (long)(uVar39 * 4) && 0 < (long)uVar23) { + lVar17 = 0; + piVar18 = (int *)((long)piVar40 + uVar31); + do { + iVar16 = piVar40[lVar17]; + piVar40[lVar17] = *piVar18; + lVar17 = lVar17 + 1; + *piVar18 = iVar16; + piVar18 = piVar18 + -1; + } while ((int)lVar17 < (int)uVar2); + } + else { + uVar15 = -((uint)((ulong)piVar40 >> 2) & 3) & 3; + uVar25 = uVar39; + if (uVar15 < uVar2) { + uVar25 = (ulong)uVar15; + } + iVar16 = (int)uVar25; + uVar19 = uVar25; + if (iVar16 != 0) { + iVar22 = *piVar40; + *piVar40 = *(int *)((long)piVar40 + uVar31); + *(int *)((long)piVar40 + uVar31) = iVar22; + if (iVar16 != 1) { + iVar22 = piVar40[1]; + piVar40[1] = *(int *)((long)piVar40 + uVar38); + *(int *)((long)piVar40 + uVar38) = iVar22; + if (iVar16 == 3) { + iVar22 = piVar40[2]; + piVar40[2] = *(int *)((long)piVar40 + uVar24); + *(int *)((long)piVar40 + uVar24) = iVar22; + } + else { + uVar19 = 2; + } + } + } + uVar15 = ((uVar2 - iVar16) - 4 >> 2) + 1; + pauVar28 = (undefined1 (*) [16])((long)piVar40 + (uVar23 - 0xc) + ~uVar25 * 4); + uVar30 = 0; + iVar22 = uVar15 * 4; + pauVar20 = (undefined1 (*) [16])(piVar40 + uVar25); + pauVar33 = pauVar28; + pauVar34 = (undefined1 (*) [16])(piVar40 + uVar25); + do { + auVar43 = *pauVar28; + uVar30 = uVar30 + 1; + pauVar28 = pauVar28 + -1; + auVar9._8_8_ = _UNK_003481d8; + auVar9._0_8_ = _DAT_003481d0; + auVar44 = a64_TBL(ZEXT816(0),auVar43,auVar9); + auVar10._8_8_ = _UNK_003481d8; + auVar10._0_8_ = _DAT_003481d0; + auVar43 = a64_TBL(ZEXT816(0),*pauVar20,auVar10); + *(long *)((long)*pauVar34 + 8) = auVar44._8_8_; + *(long *)*pauVar34 = auVar44._0_8_; + *(long *)(*pauVar33 + 8) = auVar43._8_8_; + *(long *)*pauVar33 = auVar43._0_8_; + pauVar33 = pauVar33 + -1; + pauVar20 = pauVar20 + 1; + pauVar34 = pauVar34 + 1; + } while (uVar30 < uVar15); + uVar15 = iVar22 + (int)uVar19; + if (iVar22 != uVar2 - iVar16) { + uVar25 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + uVar6 = *(undefined4 *)((long)piVar40 + uVar25); + uVar19 = -(ulong)(uVar8 - uVar15 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar8 - uVar15) << 2; + *(undefined4 *)((long)piVar40 + uVar25) = *(undefined4 *)((long)piVar40 + uVar19); + *(undefined4 *)((long)piVar40 + uVar19) = uVar6; + if ((int)(uVar15 + 1) < (int)uVar2) { + uVar30 = uVar8 - (uVar15 + 1); + uVar19 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar30 << 2; + uVar6 = *(undefined4 *)((long)piVar40 + uVar25 + 4); + *(undefined4 *)((long)piVar40 + uVar25 + 4) = *(undefined4 *)((long)piVar40 + uVar19); + *(undefined4 *)((long)piVar40 + uVar19) = uVar6; + if ((int)(uVar15 + 2) < (int)uVar2) { + uVar15 = uVar8 - (uVar15 + 2); + uVar6 = *(undefined4 *)((long)piVar40 + uVar25 + 8); + uVar19 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + *(undefined4 *)((long)piVar40 + uVar25 + 8) = + *(undefined4 *)((long)piVar40 + uVar19); + *(undefined4 *)((long)piVar40 + uVar19) = uVar6; + } + } + } + } + } + if ((uVar4 == 0) && (0 < (int)uVar37)) { + lVar17 = 0; + lVar32 = **(long **)(param_2 + 0x48); + piVar18 = (int *)(*(long *)(param_2 + 0x10) + lVar42 * 4); + do { + piVar35 = piVar40 + lVar17; + lVar17 = lVar17 + 1; + *piVar18 = *piVar35; + piVar18 = (int *)((long)piVar18 + lVar32); + } while ((int)lVar17 < (int)uVar37); + } + lVar42 = lVar42 + 1; + piVar40 = local_430; + } while ((int)lVar42 < iVar5); + } + if ((piVar40 != local_420) && (piVar40 != (int *)0x0)) { + operator_delete__(piVar40); + } + if ((local_848 != local_838) && (local_848 != (undefined1 *)0x0)) { + operator_delete__(local_848); + } + return; +} + + +================================================================== + +### FUNC 003481e0 (968 bytes) name=FUN_003481e0 + +void FUN_003481e0(int *param_1,int *param_2,long param_3,long param_4) + +{ + char cVar1; + char cVar2; + char cVar3; + long lVar4; + ulong uVar5; + long lVar6; + long lVar7; + int *piVar8; + int *piVar9; + long lVar10; + int iVar11; + long lVar12; + ulong uVar13; + int iVar14; + ulong uVar15; + long lVar16; + + lVar10 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar10 < 0x44) { + return; + } + if (param_3 == 0) break; + iVar14 = param_1[1]; + param_3 = param_3 + -1; + lVar12 = (long)iVar14; + cVar1 = *(char *)(param_4 + param_2[-1]); + cVar2 = *(char *)(param_4 + lVar12); + cVar3 = *(char *)(param_4 + param_1[lVar10 >> 3]); + piVar9 = param_2; + piVar8 = param_1; + if (cVar2 < cVar3) { + if (cVar3 < cVar1) { +LAB_0034830c: + iVar14 = *param_1; + *param_1 = param_1[lVar10 >> 3]; + param_1[lVar10 >> 3] = iVar14; + iVar14 = param_2[-1]; + iVar11 = param_1[1]; + lVar12 = (long)*param_1; + } + else { + if (cVar1 <= cVar2) goto LAB_00348328; +LAB_00348254: + iVar14 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = iVar14; + iVar11 = param_1[1]; + lVar12 = (long)*param_1; + } + } + else { + if (cVar1 <= cVar2) { + if (cVar3 < cVar1) goto LAB_00348254; + goto LAB_0034830c; + } +LAB_00348328: + iVar11 = *param_1; + param_1[1] = iVar11; + *param_1 = iVar14; + iVar14 = param_2[-1]; + } + while( true ) { + piVar8 = piVar8 + 1; + cVar1 = *(char *)(param_4 + iVar11); + while (cVar1 < *(char *)(param_4 + lVar12)) { + piVar8 = piVar8 + 1; + iVar11 = *piVar8; + cVar1 = *(char *)(param_4 + iVar11); + } + piVar9 = piVar9 + -1; + cVar1 = *(char *)(param_4 + iVar14); + while (*(char *)(param_4 + lVar12) < cVar1) { + piVar9 = piVar9 + -1; + iVar14 = *piVar9; + cVar1 = *(char *)(param_4 + iVar14); + } + if (piVar9 <= piVar8) break; + *piVar8 = iVar14; + *piVar9 = iVar11; + iVar14 = piVar9[-1]; + iVar11 = piVar8[1]; + lVar12 = (long)*param_1; + } + FUN_003481e0(piVar8,param_2,param_3,param_4); + lVar10 = (long)piVar8 - (long)param_1; + param_2 = piVar8; + } + lVar10 = lVar10 >> 2; + lVar16 = lVar10 + -2 >> 1; + piVar8 = param_1 + lVar16; + lVar12 = lVar16; + do { + iVar14 = *piVar8; + lVar4 = lVar12; + piVar9 = piVar8; + while (lVar4 < lVar10 + -1 >> 1) { + lVar7 = lVar4 + 1; + lVar6 = lVar7 * 2; + piVar9 = param_1 + lVar7 * 2; + iVar11 = param_1[lVar7 * 2]; + if (*(char *)(param_4 + iVar11) < *(char *)(param_4 + piVar9[-1])) { + lVar6 = lVar6 + -1; + iVar11 = param_1[lVar6]; + piVar9 = param_1 + lVar6; + } + param_1[lVar4] = iVar11; + lVar4 = lVar6; + } + if ((lVar16 == lVar4) && (((uint)lVar10 & 1) != 1)) { + lVar7 = lVar4 + 1; + lVar4 = lVar7 * 2 + -1; + *piVar9 = param_1[lVar7 * 2 + -1]; + piVar9 = param_1 + lVar4; + } + if (lVar12 < lVar4) { + lVar7 = lVar4 + -1 >> 1; + iVar11 = param_1[lVar7]; + if (*(char *)(param_4 + iVar11) < *(char *)(param_4 + iVar14)) { + do { + param_1[lVar4] = iVar11; + piVar9 = param_1 + lVar7; + if (lVar7 <= lVar12) break; + lVar6 = (lVar7 + -1) / 2; + iVar11 = param_1[lVar6]; + lVar4 = lVar7; + lVar7 = lVar6; + } while (*(char *)(param_4 + iVar11) < *(char *)(param_4 + iVar14)); + } + *piVar9 = iVar14; + if (lVar12 == 0) break; + } + else { + *piVar9 = iVar14; + } + piVar8 = piVar8 + -1; + lVar12 = lVar12 + -1; + } while( true ); +LAB_003483a0: + param_2 = param_2 + -1; + iVar14 = *param_2; + *param_2 = *param_1; + uVar15 = (long)param_2 - (long)param_1 >> 2; + lVar10 = (long)(uVar15 - 1) / 2; + if (lVar10 < 1) { + uVar5 = uVar15 & 1; + piVar8 = param_1; + if ((uVar15 & 1) == 0) goto LAB_00348418; + } + else { + uVar13 = 0; + do { + lVar12 = uVar13 + 1; + uVar5 = lVar12 * 2; + piVar8 = param_1 + lVar12 * 2; + iVar11 = param_1[lVar12 * 2]; + if (*(char *)(param_4 + iVar11) < *(char *)(param_4 + piVar8[-1])) { + uVar5 = uVar5 - 1; + iVar11 = param_1[uVar5]; + piVar8 = param_1 + uVar5; + } + param_1[uVar13] = iVar11; + uVar13 = uVar5; + } while ((long)uVar5 < lVar10); + if ((uVar15 & 1) == 0) { +LAB_00348418: + if (uVar5 == (long)(uVar15 - 2) / 2) { + lVar10 = uVar5 + 1; + uVar5 = lVar10 * 2 - 1; + *piVar8 = param_1[lVar10 * 2 + -1]; + piVar8 = param_1 + uVar5; + } + else if ((long)uVar5 < 1) goto LAB_00348430; + } + uVar15 = (long)(uVar5 - 1) >> 1; + iVar11 = param_1[uVar15]; + if (*(char *)(param_4 + iVar11) < *(char *)(param_4 + iVar14)) { + do { + param_1[uVar5] = iVar11; + piVar8 = param_1 + uVar15; + uVar13 = (long)(uVar15 - 1) >> 1; + if (uVar15 == 0) break; + iVar11 = param_1[uVar13]; + uVar5 = uVar15; + uVar15 = uVar13; + } while (*(char *)(param_4 + iVar11) < *(char *)(param_4 + iVar14)); + } + } +LAB_00348430: + *piVar8 = iVar14; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_003483a0; +} + + +================================================================== + +### FUNC 003485b0 (2388 bytes) name=FUN_003485b0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_003485b0(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + char cVar7; + uint uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int *piVar11; + undefined1 *puVar12; + undefined8 uVar13; + undefined8 uVar14; + uint uVar15; + int iVar16; + long lVar17; + int *piVar18; + ulong uVar19; + undefined1 (*pauVar20) [16]; + char *pcVar21; + int iVar22; + ulong uVar23; + ulong uVar24; + ulong uVar25; + size_t sVar26; + int *piVar27; + undefined1 (*pauVar28) [16]; + int *piVar29; + uint uVar30; + ulong uVar31; + long lVar32; + undefined1 (*pauVar33) [16]; + undefined1 (*pauVar34) [16]; + int *piVar35; + int *piVar36; + uint uVar37; + ulong uVar38; + ulong uVar39; + int *piVar40; + undefined1 *puVar41; + long lVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined8 local_858; + undefined8 local_850; + undefined1 *local_848; + ulong local_840; + undefined1 local_838 [1032]; + int *local_430; + ulong local_428; + int local_420 [264]; + + local_430 = local_420; + local_428 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_848 = local_838; + local_840 = 0x408; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + local_858 = 0; + local_850 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_858,0x14); + uVar14 = s_src_data____dst_data_0046c1b8._8_8_; + uVar13 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar21 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar21 = uVar13; + *(undefined8 *)(pcVar21 + 8) = uVar14; + cv::error(-0xd7,(String *)&local_858, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = signed char]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_858); + } + if (uVar4 == 0) { + uVar38 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + uVar31 = (ulong)(int)*(uint *)(param_1 + 8); + uVar23 = uVar31; + if (local_840 < uVar31) { + if (local_848 != local_838) { + if (local_848 != (undefined1 *)0x0) { + operator_delete__(local_848); + } + local_848 = local_838; + local_840 = 0x408; + } + uVar23 = local_840; + if (0x408 < uVar31) { + local_848 = operator_new__(uVar31); + uVar23 = uVar31; + } + } + local_840 = uVar23; + if (local_428 < uVar31) { + if (local_430 != local_420) { + if (local_430 != (int *)0x0) { + operator_delete__(local_430); + } + local_430 = local_420; + local_428 = 0x108; + } + if (uVar31 < 0x109) { + piVar11 = local_420; + puVar12 = local_848; + } + else { + uVar23 = uVar31 << 2; + if (0x1fc0000000000000 < uVar31) { + uVar23 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar23); + local_428 = uVar31; + piVar11 = local_430; + puVar12 = local_848; + } + } + else { + local_428 = uVar31; + piVar11 = local_430; + puVar12 = local_848; + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar38 = (ulong)*(uint *)(param_1 + 0xc); + piVar11 = local_430; + puVar12 = local_848; + } + piVar40 = piVar11; + local_848 = puVar12; + if (0 < iVar5) { + uVar23 = -(uVar38 >> 0x1f) & 0xfffffffc00000000 | uVar38 << 2; + uVar37 = (uint)uVar38; + uVar2 = (int)uVar37 / 2; + uVar39 = (ulong)uVar2; + uVar8 = uVar37 - 1; + uVar31 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + uVar38 = -(ulong)(uVar37 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 2) << 2; + uVar3 = uVar37; + if ((int)uVar37 < 1) { + uVar3 = 1; + } + uVar24 = -(ulong)(uVar37 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 3) << 2; + lVar42 = 0; + do { + if (uVar4 == 0) { + lVar17 = 0; + piVar40 = piVar11; + puVar41 = puVar12; + if (0 < (int)uVar37) { + do { + puVar12[lVar17] = + *(undefined1 *) + (*(long *)(param_1 + 0x10) + lVar17 * **(long **)(param_1 + 0x48) + lVar42); + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar37); + uVar15 = -((uint)((ulong)piVar11 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } +joined_r0x00348c1c: + uVar30 = uVar3; + if (((int)uVar3 < 8) || (uVar25 = 0, uVar30 = uVar15, uVar15 != 0)) { + uVar15 = uVar30; + *piVar40 = 0; + if ((uVar15 == 1) || + ((((piVar40[1] = 1, uVar15 == 2 || (piVar40[2] = 2, uVar15 == 3)) || + (piVar40[3] = 3, uVar15 == 4)) || (piVar40[4] = 4, uVar15 == 5)))) { + uVar25 = (ulong)uVar15; + } + else { + piVar40[5] = 5; + if (uVar15 == 7) { + uVar25 = 7; + piVar40[6] = 6; + } + else { + uVar25 = 6; + } + } + if (uVar15 == uVar3) goto LAB_00348874; + } + uVar30 = uVar8; + if ((int)uVar37 < 1) { + uVar30 = 0; + } + uVar1 = ((uVar3 - uVar15) - 4 >> 2) + 1; + iVar16 = uVar1 * 4; + if (2 < uVar30 - uVar15) { + iVar22 = (int)uVar25; + uVar30 = 0; + auVar43._0_4_ = iVar22 + (int)_DAT_00348f60; + auVar43._4_4_ = iVar22 + (int)((ulong)_DAT_00348f60 >> 0x20); + auVar43._8_4_ = iVar22 + (int)_UNK_00348f68; + auVar43._12_4_ = iVar22 + (int)((ulong)_UNK_00348f68 >> 0x20); + piVar18 = piVar40 + uVar15; + do { + *(long *)(piVar18 + 2) = auVar43._8_8_; + *(long *)piVar18 = auVar43._0_8_; + uVar30 = uVar30 + 1; + auVar44._0_4_ = auVar43._0_4_ + 4; + auVar44._4_4_ = auVar43._4_4_ + 4; + auVar44._8_4_ = auVar43._8_4_ + 4; + auVar44._12_4_ = auVar43._12_4_ + 4; + piVar18 = piVar18 + 4; + auVar43 = auVar44; + } while (uVar30 < uVar1); + uVar25 = (ulong)(uint)(iVar22 + iVar16); + if (iVar16 == uVar3 - uVar15) goto LAB_00348874; + } + uVar19 = -(uVar25 >> 0x1f) & 0xfffffffc00000000 | uVar25 << 2; + iVar16 = (int)uVar25; + *(int *)((long)piVar40 + uVar19) = iVar16; + if (iVar16 + 1 < (int)uVar37) { + *(int *)((long)piVar40 + uVar19 + 4) = iVar16 + 1; + if (iVar16 + 2 < (int)uVar37) { + *(int *)((long)piVar40 + uVar19 + 8) = iVar16 + 2; + } + } + } + } + else { + puVar41 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar42 * *(long *)(param_1 + 0x50)); + piVar40 = (int *)(*(long *)(param_2 + 0x10) + lVar42 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar37) { + uVar15 = -((uint)((ulong)piVar40 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } + goto joined_r0x00348c1c; + } + } +LAB_00348874: + piVar18 = (int *)((long)piVar40 + uVar23); + if (piVar40 != piVar18) { + FUN_003481e0(piVar40,piVar18,(0x3f - LZCOUNT((long)uVar23 >> 2)) * 2,puVar41); + if ((long)uVar23 < 0x44) { + piVar35 = piVar40 + 1; + if (piVar18 != piVar35) { + iVar16 = *piVar35; + lVar17 = (long)iVar16; + cVar7 = puVar41[lVar17]; + if ((char)puVar41[*piVar40] <= cVar7) goto LAB_00348c9c; + do { + sVar26 = (long)piVar35 - (long)piVar40; + if ((long)sVar26 >> 2 != 0) { + memmove((void *)((long)piVar35 + (4 - sVar26)),piVar40,sVar26); + } + *piVar40 = iVar16; + while( true ) { + piVar35 = piVar35 + 1; + if (piVar18 == piVar35) goto LAB_00348948; + iVar16 = *piVar35; + lVar17 = (long)iVar16; + cVar7 = puVar41[lVar17]; + if (cVar7 < (char)puVar41[*piVar40]) break; +LAB_00348c9c: + iVar22 = piVar35[-1]; + piVar36 = piVar35; + if (cVar7 < (char)puVar41[iVar22]) { + do { + piVar27 = piVar36 + -1; + *piVar36 = iVar22; + iVar22 = piVar36[-2]; + piVar36 = piVar27; + } while ((char)puVar41[lVar17] < (char)puVar41[iVar22]); + *piVar27 = iVar16; + } + else { + *piVar35 = iVar16; + } + } + } while( true ); + } + } + else { + piVar36 = piVar40 + 0x10; + piVar35 = piVar40 + 1; + do { + iVar16 = *piVar35; + if ((char)puVar41[iVar16] < (char)puVar41[*piVar40]) { + sVar26 = (long)piVar35 - (long)piVar40; + if ((long)sVar26 >> 2 != 0) { + memmove((void *)((long)piVar35 + (4 - sVar26)),piVar40,sVar26); + } + *piVar40 = iVar16; + } + else { + iVar22 = piVar35[-1]; + piVar27 = piVar35; + if ((char)puVar41[iVar16] < (char)puVar41[iVar22]) { + do { + piVar29 = piVar27 + -1; + *piVar27 = iVar22; + iVar22 = piVar27[-2]; + piVar27 = piVar29; + } while ((char)puVar41[iVar16] < (char)puVar41[iVar22]); + *piVar29 = iVar16; + } + else { + *piVar35 = iVar16; + } + } + piVar35 = piVar35 + 1; + } while (piVar36 != piVar35); + for (; piVar18 != piVar36; piVar36 = piVar36 + 1) { + while( true ) { + iVar16 = piVar36[-1]; + iVar22 = *piVar36; + piVar35 = piVar36; + if ((char)puVar41[iVar22] < (char)puVar41[iVar16]) break; + piVar35 = piVar36 + 1; + *piVar36 = iVar22; + piVar36 = piVar35; + if (piVar18 == piVar35) goto LAB_00348948; + } + do { + piVar27 = piVar35 + -1; + *piVar35 = iVar16; + iVar16 = piVar35[-2]; + piVar35 = piVar27; + } while ((char)puVar41[iVar22] < (char)puVar41[iVar16]); + *piVar27 = iVar22; + } + } + } +LAB_00348948: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(uVar23 + uVar39 * -4) < (long)(uVar39 * 4) && 0 < (long)uVar23) { + lVar17 = 0; + piVar18 = (int *)((long)piVar40 + uVar31); + do { + iVar16 = piVar40[lVar17]; + piVar40[lVar17] = *piVar18; + lVar17 = lVar17 + 1; + *piVar18 = iVar16; + piVar18 = piVar18 + -1; + } while ((int)lVar17 < (int)uVar2); + } + else { + uVar15 = -((uint)((ulong)piVar40 >> 2) & 3) & 3; + uVar25 = uVar39; + if (uVar15 < uVar2) { + uVar25 = (ulong)uVar15; + } + iVar16 = (int)uVar25; + uVar19 = uVar25; + if (iVar16 != 0) { + iVar22 = *piVar40; + *piVar40 = *(int *)((long)piVar40 + uVar31); + *(int *)((long)piVar40 + uVar31) = iVar22; + if (iVar16 != 1) { + iVar22 = piVar40[1]; + piVar40[1] = *(int *)((long)piVar40 + uVar38); + *(int *)((long)piVar40 + uVar38) = iVar22; + if (iVar16 == 3) { + iVar22 = piVar40[2]; + piVar40[2] = *(int *)((long)piVar40 + uVar24); + *(int *)((long)piVar40 + uVar24) = iVar22; + } + else { + uVar19 = 2; + } + } + } + uVar15 = ((uVar2 - iVar16) - 4 >> 2) + 1; + pauVar28 = (undefined1 (*) [16])((long)piVar40 + (uVar23 - 0xc) + ~uVar25 * 4); + uVar30 = 0; + iVar22 = uVar15 * 4; + pauVar20 = (undefined1 (*) [16])(piVar40 + uVar25); + pauVar33 = pauVar28; + pauVar34 = (undefined1 (*) [16])(piVar40 + uVar25); + do { + auVar43 = *pauVar28; + uVar30 = uVar30 + 1; + pauVar28 = pauVar28 + -1; + auVar9._8_8_ = _UNK_00348f78; + auVar9._0_8_ = _DAT_00348f70; + auVar44 = a64_TBL(ZEXT816(0),auVar43,auVar9); + auVar10._8_8_ = _UNK_00348f78; + auVar10._0_8_ = _DAT_00348f70; + auVar43 = a64_TBL(ZEXT816(0),*pauVar20,auVar10); + *(long *)((long)*pauVar34 + 8) = auVar44._8_8_; + *(long *)*pauVar34 = auVar44._0_8_; + *(long *)(*pauVar33 + 8) = auVar43._8_8_; + *(long *)*pauVar33 = auVar43._0_8_; + pauVar33 = pauVar33 + -1; + pauVar20 = pauVar20 + 1; + pauVar34 = pauVar34 + 1; + } while (uVar30 < uVar15); + uVar15 = iVar22 + (int)uVar19; + if (iVar22 != uVar2 - iVar16) { + uVar25 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + uVar6 = *(undefined4 *)((long)piVar40 + uVar25); + uVar19 = -(ulong)(uVar8 - uVar15 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar8 - uVar15) << 2; + *(undefined4 *)((long)piVar40 + uVar25) = *(undefined4 *)((long)piVar40 + uVar19); + *(undefined4 *)((long)piVar40 + uVar19) = uVar6; + if ((int)(uVar15 + 1) < (int)uVar2) { + uVar30 = uVar8 - (uVar15 + 1); + uVar19 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar30 << 2; + uVar6 = *(undefined4 *)((long)piVar40 + uVar25 + 4); + *(undefined4 *)((long)piVar40 + uVar25 + 4) = *(undefined4 *)((long)piVar40 + uVar19); + *(undefined4 *)((long)piVar40 + uVar19) = uVar6; + if ((int)(uVar15 + 2) < (int)uVar2) { + uVar15 = uVar8 - (uVar15 + 2); + uVar6 = *(undefined4 *)((long)piVar40 + uVar25 + 8); + uVar19 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + *(undefined4 *)((long)piVar40 + uVar25 + 8) = + *(undefined4 *)((long)piVar40 + uVar19); + *(undefined4 *)((long)piVar40 + uVar19) = uVar6; + } + } + } + } + } + if ((uVar4 == 0) && (0 < (int)uVar37)) { + lVar17 = 0; + lVar32 = **(long **)(param_2 + 0x48); + piVar18 = (int *)(*(long *)(param_2 + 0x10) + lVar42 * 4); + do { + piVar35 = piVar40 + lVar17; + lVar17 = lVar17 + 1; + *piVar18 = *piVar35; + piVar18 = (int *)((long)piVar18 + lVar32); + } while ((int)lVar17 < (int)uVar37); + } + lVar42 = lVar42 + 1; + piVar40 = local_430; + } while ((int)lVar42 < iVar5); + } + if ((piVar40 != local_420) && (piVar40 != (int *)0x0)) { + operator_delete__(piVar40); + } + if ((local_848 != local_838) && (local_848 != (undefined1 *)0x0)) { + operator_delete__(local_848); + } + return; +} + + +================================================================== + +### FUNC 00348f80 (932 bytes) name=FUN_00348f80 + +void FUN_00348f80(int *param_1,int *param_2,long param_3,long param_4) + +{ + ushort uVar1; + ushort uVar2; + long lVar3; + ulong uVar4; + long lVar5; + long lVar6; + int *piVar7; + int iVar8; + int *piVar9; + ulong uVar10; + ushort uVar11; + long lVar12; + long lVar13; + int iVar14; + ulong uVar15; + long lVar16; + + lVar12 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar12 < 0x44) { + return; + } + if (param_3 == 0) break; + iVar14 = param_1[1]; + param_3 = param_3 + -1; + uVar11 = *(ushort *)(param_4 + (long)iVar14 * 2); + uVar1 = *(ushort *)(param_4 + (long)param_2[-1] * 2); + uVar2 = *(ushort *)(param_4 + (long)param_1[lVar12 >> 3] * 2); + piVar9 = param_2; + piVar7 = param_1; + if (uVar11 < uVar2) { + if (uVar2 < uVar1) { +LAB_003490ac: + iVar14 = *param_1; + *param_1 = param_1[lVar12 >> 3]; + param_1[lVar12 >> 3] = iVar14; + iVar14 = param_2[-1]; + iVar8 = param_1[1]; + uVar11 = *(ushort *)(param_4 + (long)*param_1 * 2); + } + else { + if (uVar1 <= uVar11) goto LAB_003490cc; +LAB_00348ff0: + iVar14 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = iVar14; + iVar8 = param_1[1]; + uVar11 = *(ushort *)(param_4 + (long)*param_1 * 2); + } + } + else { + if (uVar1 <= uVar11) { + if (uVar2 < uVar1) goto LAB_00348ff0; + goto LAB_003490ac; + } +LAB_003490cc: + iVar8 = *param_1; + param_1[1] = iVar8; + *param_1 = iVar14; + iVar14 = param_2[-1]; + } + while( true ) { + piVar7 = piVar7 + 1; + uVar1 = *(ushort *)(param_4 + (long)iVar8 * 2); + while (uVar1 < uVar11) { + piVar7 = piVar7 + 1; + iVar8 = *piVar7; + uVar1 = *(ushort *)(param_4 + (long)iVar8 * 2); + } + piVar9 = piVar9 + -1; + uVar1 = *(ushort *)(param_4 + (long)iVar14 * 2); + while (uVar11 < uVar1) { + piVar9 = piVar9 + -1; + iVar14 = *piVar9; + uVar1 = *(ushort *)(param_4 + (long)iVar14 * 2); + } + if (piVar9 <= piVar7) break; + *piVar7 = iVar14; + *piVar9 = iVar8; + iVar14 = piVar9[-1]; + iVar8 = piVar7[1]; + uVar11 = *(ushort *)(param_4 + (long)*param_1 * 2); + } + FUN_00348f80(piVar7,param_2,param_3,param_4); + lVar12 = (long)piVar7 - (long)param_1; + param_2 = piVar7; + } + lVar12 = lVar12 >> 2; + lVar16 = lVar12 + -2 >> 1; + piVar7 = param_1 + lVar16; + lVar13 = lVar16; + do { + iVar14 = *piVar7; + lVar3 = lVar13; + piVar9 = piVar7; + while (lVar3 < lVar12 + -1 >> 1) { + lVar6 = lVar3 + 1; + lVar5 = lVar6 * 2; + piVar9 = param_1 + lVar6 * 2; + iVar8 = param_1[lVar6 * 2]; + if (*(ushort *)(param_4 + (long)iVar8 * 2) < *(ushort *)(param_4 + (long)piVar9[-1] * 2)) { + lVar5 = lVar5 + -1; + iVar8 = param_1[lVar5]; + piVar9 = param_1 + lVar5; + } + param_1[lVar3] = iVar8; + lVar3 = lVar5; + } + if ((lVar16 == lVar3) && (((uint)lVar12 & 1) != 1)) { + lVar6 = lVar3 + 1; + lVar3 = lVar6 * 2 + -1; + *piVar9 = param_1[lVar6 * 2 + -1]; + piVar9 = param_1 + lVar3; + } + if (lVar13 < lVar3) { + lVar6 = lVar3 + -1; + uVar1 = *(ushort *)(param_4 + (long)iVar14 * 2); + do { + lVar5 = lVar6 >> 1; + if (uVar1 <= *(ushort *)(param_4 + (long)param_1[lVar5] * 2)) break; + param_1[lVar3] = param_1[lVar5]; + piVar9 = param_1 + lVar5; + lVar6 = (lVar5 + -1) - (lVar5 + -1 >> 0x3f); + /* catch() { ... } // from try @ 003492e8 with catch @ 00349298 + catch() { ... } // from try @ 00349464 with catch @ 00349298 + catch() { ... } // from try @ 0034957c with catch @ 00349298 + catch() { ... } // from try @ 00349634 with catch @ 00349298 + catch() { ... } // from try @ 0034a9e4 with catch @ 00349298 + catch() { ... } // from try @ 0034ab24 with catch @ 00349298 + catch() { ... } // from try @ 0034ae08 with catch @ 00349298 + catch() { ... } // from try @ 0034afb4 with catch @ 00349298 + catch() { ... } // from try @ 0034afec with catch @ 00349298 + catch() { ... } // from try @ 0034b0ec with catch @ 00349298 + catch() { ... } // from try @ 0034b188 with catch @ 00349298 + catch() { ... } // from try @ 0034b2b0 with catch @ 00349298 + catch() { ... } // from try @ 0034b2d4 with catch @ 00349298 */ + lVar3 = lVar5; + } while (lVar13 < lVar5); + *piVar9 = iVar14; + if (lVar13 == 0) break; + } + else { + *piVar9 = iVar14; + } + piVar7 = piVar7 + -1; + lVar13 = lVar13 + -1; + } while( true ); +LAB_00349140: + param_2 = param_2 + -1; + iVar14 = *param_2; + *param_2 = *param_1; + uVar15 = (long)param_2 - (long)param_1 >> 2; + lVar12 = (long)(uVar15 - 1) / 2; + if (lVar12 < 1) { + uVar4 = uVar15 & 1; + piVar7 = param_1; + if ((uVar15 & 1) == 0) goto LAB_003491b8; + } + else { + uVar10 = 0; + do { + lVar13 = uVar10 + 1; + uVar4 = lVar13 * 2; + piVar7 = param_1 + lVar13 * 2; + iVar8 = param_1[lVar13 * 2]; + if (*(ushort *)(param_4 + (long)iVar8 * 2) < *(ushort *)(param_4 + (long)piVar7[-1] * 2)) { + uVar4 = uVar4 - 1; + iVar8 = param_1[uVar4]; + piVar7 = param_1 + uVar4; + } + param_1[uVar10] = iVar8; + uVar10 = uVar4; + } while ((long)uVar4 < lVar12); + if ((uVar15 & 1) == 0) { +LAB_003491b8: + if (uVar4 == (long)(uVar15 - 2) / 2) { + lVar12 = uVar4 + 1; + uVar4 = lVar12 * 2 - 1; + *piVar7 = param_1[lVar12 * 2 + -1]; + piVar7 = param_1 + uVar4; + } + else if ((long)uVar4 < 1) goto LAB_003491d0; + } + uVar1 = *(ushort *)(param_4 + (long)iVar14 * 2); + uVar15 = (long)(uVar4 - 1) >> 1; + iVar8 = param_1[uVar15]; + uVar2 = *(ushort *)(param_4 + (long)iVar8 * 2); + while (uVar10 = uVar15, uVar2 < uVar1) { + param_1[uVar4] = iVar8; + piVar7 = param_1 + uVar10; + /* try { // try from 003492e8 to 00449427 has its CatchHandler @ 00349298 */ + uVar15 = (long)(uVar10 - 1) >> 1; + if (uVar10 == 0) break; + iVar8 = param_1[uVar15]; + uVar4 = uVar10; + uVar2 = *(ushort *)(param_4 + (long)iVar8 * 2); + } + } +LAB_003491d0: + *piVar7 = iVar14; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_00349140; +} + + +================================================================== + +### FUNC 00349330 (2360 bytes) name=FUN_00349330 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_00349330(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + undefined2 uVar7; + uint uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int *piVar11; + undefined1 *puVar12; + undefined8 uVar13; + undefined8 uVar14; + uint uVar15; + int iVar16; + long lVar17; + int *piVar18; + ulong uVar19; + undefined1 (*pauVar20) [16]; + int *piVar21; + char *pcVar22; + ushort uVar23; + int iVar24; + ulong uVar25; + ulong uVar26; + undefined2 *puVar27; + ulong uVar28; + size_t sVar29; + undefined1 (*pauVar30) [16]; + int *piVar31; + uint uVar32; + ulong uVar33; + long lVar34; + undefined1 (*pauVar35) [16]; + undefined1 (*pauVar36) [16]; + int *piVar37; + int *piVar38; + uint uVar39; + ulong uVar40; + ulong uVar41; + int *piVar42; + undefined1 *puVar43; + long lVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined8 local_860; + undefined8 local_858; + undefined1 *local_850; + ulong local_848; + undefined1 local_840 [1040]; + int *local_430; + ulong local_428; + int local_420 [264]; + + local_430 = local_420; + local_850 = local_840; + local_428 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_848 = 0x208; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + local_860 = 0; + local_858 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_860,0x14); + uVar14 = s_src_data____dst_data_0046c1b8._8_8_; + uVar13 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar22 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar22 = uVar13; + *(undefined8 *)(pcVar22 + 8) = uVar14; + cv::error(-0xd7,(String *)&local_860, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = short unsigned int]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_860); + } + if (uVar4 == 0) { + uVar40 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + uVar33 = (ulong)(int)*(uint *)(param_1 + 8); + uVar25 = uVar33; + if (local_848 < uVar33) { + if (local_850 != local_840) { + if (local_850 != (undefined1 *)0x0) { + operator_delete__(local_850); + } + local_850 = local_840; + local_848 = 0x208; + } + uVar25 = local_848; + if (0x208 < uVar33) { + uVar25 = uVar33 << 1; + if (0x3f80000000000000 < uVar33) { + uVar25 = 0xffffffffffffffff; + } + local_850 = operator_new__(uVar25); + uVar25 = uVar33; + } + } + local_848 = uVar25; + piVar11 = local_430; + puVar12 = local_850; + if (local_428 < uVar33) { + if (local_430 != local_420) { + if (local_430 != (int *)0x0) { + operator_delete__(local_430); + } + local_430 = local_420; + local_428 = 0x108; + } + if (uVar33 < 0x109) { + piVar11 = local_420; + puVar12 = local_850; + uVar33 = local_428; + } + else { + uVar25 = uVar33 << 2; + if (0x1fc0000000000000 < uVar33) { + uVar25 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar25); + piVar11 = local_430; + puVar12 = local_850; + } + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar40 = (ulong)*(uint *)(param_1 + 0xc); + piVar11 = local_430; + puVar12 = local_850; + uVar33 = local_428; + } + local_428 = uVar33; + piVar42 = piVar11; + local_850 = puVar12; + if (0 < iVar5) { + uVar25 = -(uVar40 >> 0x1f) & 0xfffffffc00000000 | uVar40 << 2; + uVar39 = (uint)uVar40; + uVar2 = (int)uVar39 / 2; + uVar41 = (ulong)uVar2; + uVar8 = uVar39 - 1; + uVar33 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + uVar40 = -(ulong)(uVar39 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar39 - 2) << 2; + uVar3 = uVar39; + if ((int)uVar39 < 1) { + uVar3 = 1; + } + uVar26 = -(ulong)(uVar39 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar39 - 3) << 2; + /* try { // try from 00349454 to 00449457 has its CatchHandler @ 0034b170 */ + /* try { // try from 00349464 to 00449523 has its CatchHandler @ 00349298 */ + lVar44 = 0; + do { + if (uVar4 == 0) { + piVar42 = piVar11; + puVar43 = puVar12; + if (0 < (int)uVar39) { + lVar17 = 0; + lVar34 = **(long **)(param_1 + 0x48); + puVar27 = (undefined2 *)(*(long *)(param_1 + 0x10) + lVar44 * 2); + do { + uVar7 = *puVar27; + puVar27 = (undefined2 *)((long)puVar27 + lVar34); + *(undefined2 *)(puVar12 + lVar17 * 2) = uVar7; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar39); + uVar15 = -((uint)((ulong)piVar11 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } +joined_r0x00349930: + uVar32 = uVar3; + if (((int)uVar3 < 8) || (uVar28 = 0, uVar32 = uVar15, uVar15 != 0)) { + uVar15 = uVar32; + *piVar42 = 0; + if ((uVar15 == 1) || + ((((piVar42[1] = 1, uVar15 == 2 || (piVar42[2] = 2, uVar15 == 3)) || + (piVar42[3] = 3, uVar15 == 4)) || (piVar42[4] = 4, uVar15 == 5)))) { + uVar28 = (ulong)uVar15; + } + else { + piVar42[5] = 5; + if (uVar15 == 7) { + uVar28 = 7; + piVar42[6] = 6; + } + else { + uVar28 = 6; + } + } + if (uVar15 == uVar3) goto LAB_003495f8; + } + /* try { // try from 0034956c to 0044956f has its CatchHandler @ 0034b2a0 */ + uVar32 = uVar8; + if ((int)uVar39 < 1) { + uVar32 = 0; + } + /* try { // try from 0034957c to 004495db has its CatchHandler @ 00349298 */ + uVar1 = ((uVar3 - uVar15) - 4 >> 2) + 1; + iVar16 = uVar1 * 4; + if (2 < uVar32 - uVar15) { + iVar24 = (int)uVar28; + uVar32 = 0; + auVar45._0_4_ = iVar24 + (int)_DAT_00349cc0; + auVar45._4_4_ = iVar24 + (int)((ulong)_DAT_00349cc0 >> 0x20); + auVar45._8_4_ = iVar24 + (int)_UNK_00349cc8; + auVar45._12_4_ = iVar24 + (int)((ulong)_UNK_00349cc8 >> 0x20); + piVar18 = piVar42 + uVar15; + do { + *(long *)(piVar18 + 2) = auVar45._8_8_; + *(long *)piVar18 = auVar45._0_8_; + uVar32 = uVar32 + 1; + auVar46._0_4_ = auVar45._0_4_ + 4; + auVar46._4_4_ = auVar45._4_4_ + 4; + auVar46._8_4_ = auVar45._8_4_ + 4; + auVar46._12_4_ = auVar45._12_4_ + 4; + piVar18 = piVar18 + 4; + auVar45 = auVar46; + } while (uVar32 < uVar1); + uVar28 = (ulong)(uint)(iVar24 + iVar16); + if (iVar16 == uVar3 - uVar15) goto LAB_003495f8; + } + uVar19 = -(uVar28 >> 0x1f) & 0xfffffffc00000000 | uVar28 << 2; + iVar16 = (int)uVar28; + *(int *)((long)piVar42 + uVar19) = iVar16; + if (iVar16 + 1 < (int)uVar39) { + *(int *)((long)piVar42 + uVar19 + 4) = iVar16 + 1; + if (iVar16 + 2 < (int)uVar39) { + *(int *)((long)piVar42 + uVar19 + 8) = iVar16 + 2; + } + } + } + } + else { + puVar43 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar44 * *(long *)(param_1 + 0x50)); + piVar42 = (int *)(*(long *)(param_2 + 0x10) + lVar44 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar39) { + uVar15 = -((uint)((ulong)piVar42 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } + goto joined_r0x00349930; + } + } +LAB_003495f8: + piVar18 = (int *)((long)piVar42 + uVar25); + if (piVar42 != piVar18) { + FUN_00348f80(piVar42,piVar18,(0x3f - LZCOUNT((long)uVar25 >> 2)) * 2,puVar43); + piVar37 = piVar42; + if ((long)uVar25 < 0x44) { + /* try { // try from 0034962c to 0044962f has its CatchHandler @ 0034b2c4 */ + while (piVar38 = piVar37 + 1, piVar18 != piVar38) { + /* try { // try from 00349634 to 00449653 has its CatchHandler @ 00349298 */ + iVar16 = *piVar38; + uVar23 = *(ushort *)(puVar43 + (long)iVar16 * 2); + if (uVar23 < *(ushort *)(puVar43 + (long)*piVar42 * 2)) { + sVar29 = (long)piVar38 - (long)piVar42; + if ((long)sVar29 >> 2 != 0) { + memmove((void *)((long)piVar38 + (4 - sVar29)),piVar42,sVar29); + } + *piVar42 = iVar16; + piVar37 = piVar38; + } + else { + iVar24 = *piVar37; + piVar37 = piVar38; + if (uVar23 < *(ushort *)(puVar43 + (long)iVar24 * 2)) { + do { + piVar31 = piVar37 + -1; + *piVar37 = iVar24; + iVar24 = piVar37[-2]; + piVar37 = piVar31; + } while (uVar23 < *(ushort *)(puVar43 + (long)iVar24 * 2)); + *piVar31 = iVar16; + piVar37 = piVar38; + } + else { + *piVar38 = iVar16; + } + } + } + } + else { + piVar37 = piVar42 + 0x10; + piVar38 = piVar42 + 1; + do { + iVar16 = *piVar38; + uVar23 = *(ushort *)(puVar43 + (long)iVar16 * 2); + if (uVar23 < *(ushort *)(puVar43 + (long)*piVar42 * 2)) { + sVar29 = (long)piVar38 - (long)piVar42; + if ((long)sVar29 >> 2 != 0) { + memmove((void *)((long)piVar38 + (4 - sVar29)),piVar42,sVar29); + } + *piVar42 = iVar16; + } + else { + iVar24 = piVar38[-1]; + piVar31 = piVar38; + if (uVar23 < *(ushort *)(puVar43 + (long)iVar24 * 2)) { + do { + piVar21 = piVar31 + -1; + *piVar31 = iVar24; + iVar24 = piVar31[-2]; + piVar31 = piVar21; + } while (uVar23 < *(ushort *)(puVar43 + (long)iVar24 * 2)); + *piVar21 = iVar16; + } + else { + *piVar38 = iVar16; + } + } + piVar38 = piVar38 + 1; + } while (piVar37 != piVar38); + if (piVar18 != piVar37) { + iVar16 = piVar42[0xf]; + iVar24 = *piVar37; + uVar23 = *(ushort *)(puVar43 + (long)iVar24 * 2); + piVar38 = piVar42 + 0xf; + if (uVar23 < *(ushort *)(puVar43 + (long)iVar16 * 2)) goto LAB_003499b0; + do { + *piVar37 = iVar24; + while( true ) { + piVar37 = piVar37 + 1; + if (piVar18 == piVar37) goto LAB_00349668; + iVar16 = piVar37[-1]; + iVar24 = *piVar37; + uVar23 = *(ushort *)(puVar43 + (long)iVar24 * 2); + piVar38 = piVar37 + -1; + if (*(ushort *)(puVar43 + (long)iVar16 * 2) <= uVar23) break; +LAB_003499b0: + do { + piVar31 = piVar38; + piVar31[1] = iVar16; + iVar16 = piVar31[-1]; + piVar38 = piVar31 + -1; + } while (uVar23 < *(ushort *)(puVar43 + (long)iVar16 * 2)); + *piVar31 = iVar24; + } + } while( true ); + } + } + } +LAB_00349668: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + /* try { // try from 0034967c to 00449703 has its CatchHandler @ 0034b2e0 */ + if (uVar2 < 9 || (long)(uVar25 + uVar41 * -4) < (long)(uVar41 * 4) && 0 < (long)uVar25) { + lVar17 = 0; + piVar18 = (int *)((long)piVar42 + uVar33); + do { + iVar16 = piVar42[lVar17]; + piVar42[lVar17] = *piVar18; + lVar17 = lVar17 + 1; + *piVar18 = iVar16; + piVar18 = piVar18 + -1; + } while ((int)lVar17 < (int)uVar2); + } + else { + uVar15 = -((uint)((ulong)piVar42 >> 2) & 3) & 3; + uVar28 = uVar41; + if (uVar15 < uVar2) { + uVar28 = (ulong)uVar15; + } + iVar16 = (int)uVar28; + uVar19 = uVar28; + if (iVar16 != 0) { + iVar24 = *piVar42; + *piVar42 = *(int *)((long)piVar42 + uVar33); + *(int *)((long)piVar42 + uVar33) = iVar24; + if (iVar16 != 1) { + iVar24 = piVar42[1]; + piVar42[1] = *(int *)((long)piVar42 + uVar40); + *(int *)((long)piVar42 + uVar40) = iVar24; + if (iVar16 == 3) { + iVar24 = piVar42[2]; + piVar42[2] = *(int *)((long)piVar42 + uVar26); + *(int *)((long)piVar42 + uVar26) = iVar24; + } + else { + uVar19 = 2; + } + } + } + /* try { // try from 00349708 to 0044972b has its CatchHandler @ 0034b2d8 */ + uVar15 = ((uVar2 - iVar16) - 4 >> 2) + 1; + pauVar30 = (undefined1 (*) [16])((long)piVar42 + (uVar25 - 0xc) + ~uVar28 * 4); + uVar32 = 0; + iVar24 = uVar15 * 4; + pauVar20 = (undefined1 (*) [16])(piVar42 + uVar28); + pauVar35 = pauVar30; + pauVar36 = (undefined1 (*) [16])(piVar42 + uVar28); + do { + auVar45 = *pauVar30; + uVar32 = uVar32 + 1; + /* try { // try from 00349730 to 00449753 has its CatchHandler @ 0034b0f0 */ + pauVar30 = pauVar30 + -1; + auVar9._8_8_ = _UNK_00349cd8; + auVar9._0_8_ = _DAT_00349cd0; + auVar46 = a64_TBL(ZEXT816(0),auVar45,auVar9); + auVar10._8_8_ = _UNK_00349cd8; + auVar10._0_8_ = _DAT_00349cd0; + auVar45 = a64_TBL(ZEXT816(0),*pauVar20,auVar10); + *(long *)((long)*pauVar36 + 8) = auVar46._8_8_; + *(long *)*pauVar36 = auVar46._0_8_; + *(long *)(*pauVar35 + 8) = auVar45._8_8_; + *(long *)*pauVar35 = auVar45._0_8_; + pauVar35 = pauVar35 + -1; + pauVar20 = pauVar20 + 1; + pauVar36 = pauVar36 + 1; + } while (uVar32 < uVar15); + /* try { // try from 00349758 to 0044977b has its CatchHandler @ 0034b06c */ + uVar15 = iVar24 + (int)uVar19; + if (iVar24 != uVar2 - iVar16) { + uVar28 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + uVar6 = *(undefined4 *)((long)piVar42 + uVar28); + uVar19 = -(ulong)(uVar8 - uVar15 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar8 - uVar15) << 2; + *(undefined4 *)((long)piVar42 + uVar28) = *(undefined4 *)((long)piVar42 + uVar19); + *(undefined4 *)((long)piVar42 + uVar19) = uVar6; + if ((int)(uVar15 + 1) < (int)uVar2) { + uVar32 = uVar8 - (uVar15 + 1); + uVar19 = -(ulong)(uVar32 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar32 << 2; + uVar6 = *(undefined4 *)((long)piVar42 + uVar28 + 4); + *(undefined4 *)((long)piVar42 + uVar28 + 4) = *(undefined4 *)((long)piVar42 + uVar19); + *(undefined4 *)((long)piVar42 + uVar19) = uVar6; + if ((int)(uVar15 + 2) < (int)uVar2) { + uVar15 = uVar8 - (uVar15 + 2); + uVar6 = *(undefined4 *)((long)piVar42 + uVar28 + 8); + uVar19 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + *(undefined4 *)((long)piVar42 + uVar28 + 8) = + *(undefined4 *)((long)piVar42 + uVar19); + *(undefined4 *)((long)piVar42 + uVar19) = uVar6; + } + } + } + } + } + /* try { // try from 003497d4 to 00449d6b has its CatchHandler @ 0034b0f8 */ + if ((uVar4 == 0) && (0 < (int)uVar39)) { + lVar17 = 0; + lVar34 = **(long **)(param_2 + 0x48); + piVar18 = (int *)(*(long *)(param_2 + 0x10) + lVar44 * 4); + do { + piVar37 = piVar42 + lVar17; + lVar17 = lVar17 + 1; + *piVar18 = *piVar37; + piVar18 = (int *)((long)piVar18 + lVar34); + } while ((int)lVar17 < (int)uVar39); + } + lVar44 = lVar44 + 1; + piVar42 = local_430; + } while ((int)lVar44 < iVar5); + } + if ((piVar42 != local_420) && (piVar42 != (int *)0x0)) { + operator_delete__(piVar42); + } + if ((local_850 != local_840) && (local_850 != (undefined1 *)0x0)) { + operator_delete__(local_850); + } + return; +} + + +================================================================== + +### FUNC 00349ce0 (932 bytes) name=FUN_00349ce0 + +void FUN_00349ce0(int *param_1,int *param_2,long param_3,long param_4) + +{ + short sVar1; + short sVar2; + long lVar3; + ulong uVar4; + long lVar5; + long lVar6; + int *piVar7; + int iVar8; + int *piVar9; + ulong uVar10; + short sVar11; + long lVar12; + long lVar13; + int iVar14; + ulong uVar15; + long lVar16; + + lVar12 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar12 < 0x44) { + return; + } + if (param_3 == 0) break; + iVar14 = param_1[1]; + param_3 = param_3 + -1; + sVar11 = *(short *)(param_4 + (long)iVar14 * 2); + sVar1 = *(short *)(param_4 + (long)param_2[-1] * 2); + sVar2 = *(short *)(param_4 + (long)param_1[lVar12 >> 3] * 2); + piVar9 = param_2; + piVar7 = param_1; + if (sVar11 < sVar2) { + if (sVar2 < sVar1) { +LAB_00349e0c: + iVar14 = *param_1; + *param_1 = param_1[lVar12 >> 3]; + param_1[lVar12 >> 3] = iVar14; + iVar14 = param_2[-1]; + iVar8 = param_1[1]; + sVar11 = *(short *)(param_4 + (long)*param_1 * 2); + } + else { + if (sVar1 <= sVar11) goto LAB_00349e2c; +LAB_00349d50: + iVar14 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = iVar14; + iVar8 = param_1[1]; + sVar11 = *(short *)(param_4 + (long)*param_1 * 2); + } + } + else { + /* try { // try from 00349e00 to 00449e03 has its CatchHandler @ 0034b06c */ + if (sVar1 <= sVar11) { + if (sVar2 < sVar1) goto LAB_00349d50; + goto LAB_00349e0c; + } +LAB_00349e2c: + iVar8 = *param_1; + param_1[1] = iVar8; + *param_1 = iVar14; + iVar14 = param_2[-1]; + } + while( true ) { + piVar7 = piVar7 + 1; + sVar1 = *(short *)(param_4 + (long)iVar8 * 2); + while (sVar1 < sVar11) { + piVar7 = piVar7 + 1; + iVar8 = *piVar7; + sVar1 = *(short *)(param_4 + (long)iVar8 * 2); + } + piVar9 = piVar9 + -1; + sVar1 = *(short *)(param_4 + (long)iVar14 * 2); + while (sVar11 < sVar1) { + piVar9 = piVar9 + -1; + iVar14 = *piVar9; + sVar1 = *(short *)(param_4 + (long)iVar14 * 2); + } + if (piVar9 <= piVar7) break; + *piVar7 = iVar14; + *piVar9 = iVar8; + iVar14 = piVar9[-1]; + iVar8 = piVar7[1]; + sVar11 = *(short *)(param_4 + (long)*param_1 * 2); + } + FUN_00349ce0(piVar7,param_2,param_3,param_4); + lVar12 = (long)piVar7 - (long)param_1; + param_2 = piVar7; + } + lVar12 = lVar12 >> 2; + lVar16 = lVar12 + -2 >> 1; + piVar7 = param_1 + lVar16; + lVar13 = lVar16; + do { + iVar14 = *piVar7; + lVar3 = lVar13; + piVar9 = piVar7; + while (lVar3 < lVar12 + -1 >> 1) { + lVar6 = lVar3 + 1; + /* try { // try from 00349f8c to 00449f8f has its CatchHandler @ 0034b2e0 */ + lVar5 = lVar6 * 2; + piVar9 = param_1 + lVar6 * 2; + iVar8 = param_1[lVar6 * 2]; + if (*(short *)(param_4 + (long)iVar8 * 2) < *(short *)(param_4 + (long)piVar9[-1] * 2)) { + lVar5 = lVar5 + -1; + iVar8 = param_1[lVar5]; + piVar9 = param_1 + lVar5; + } + param_1[lVar3] = iVar8; + lVar3 = lVar5; + } + if ((lVar16 == lVar3) && (((uint)lVar12 & 1) != 1)) { + lVar6 = lVar3 + 1; + lVar3 = lVar6 * 2 + -1; + *piVar9 = param_1[lVar6 * 2 + -1]; + piVar9 = param_1 + lVar3; + } + if (lVar13 < lVar3) { + lVar6 = lVar3 + -1; + sVar1 = *(short *)(param_4 + (long)iVar14 * 2); + do { + lVar5 = lVar6 >> 1; + /* try { // try from 00349e84 to 00449e87 has its CatchHandler @ 0034b0f0 */ + if (sVar1 <= *(short *)(param_4 + (long)param_1[lVar5] * 2)) break; + param_1[lVar3] = param_1[lVar5]; + /* try { // try from 00349fec to 00449fef has its CatchHandler @ 0034b0f0 */ + piVar9 = param_1 + lVar5; + lVar6 = (lVar5 + -1) - (lVar5 + -1 >> 0x3f); + /* try { // try from 00349ff8 to 00449ffb has its CatchHandler @ 0034b2d8 */ + lVar3 = lVar5; + } while (lVar13 < lVar5); + *piVar9 = iVar14; + if (lVar13 == 0) break; + } + else { + *piVar9 = iVar14; + } + piVar7 = piVar7 + -1; + lVar13 = lVar13 + -1; + /* try { // try from 00349fe0 to 00449fe3 has its CatchHandler @ 0034b06c */ + } while( true ); +LAB_00349ea0: + param_2 = param_2 + -1; + iVar14 = *param_2; + *param_2 = *param_1; + uVar15 = (long)param_2 - (long)param_1 >> 2; + lVar12 = (long)(uVar15 - 1) / 2; + if (lVar12 < 1) { + uVar4 = uVar15 & 1; + piVar7 = param_1; + if ((uVar15 & 1) == 0) goto LAB_00349f18; + } + else { + uVar10 = 0; + do { + lVar13 = uVar10 + 1; + uVar4 = lVar13 * 2; + piVar7 = param_1 + lVar13 * 2; + iVar8 = param_1[lVar13 * 2]; + if (*(short *)(param_4 + (long)iVar8 * 2) < *(short *)(param_4 + (long)piVar7[-1] * 2)) { + uVar4 = uVar4 - 1; + iVar8 = param_1[uVar4]; + piVar7 = param_1 + uVar4; + } + param_1[uVar10] = iVar8; + /* try { // try from 00349f08 to 00449f0b has its CatchHandler @ 0034b2d8 */ + uVar10 = uVar4; + } while ((long)uVar4 < lVar12); + if ((uVar15 & 1) == 0) { +LAB_00349f18: + if (uVar4 == (long)(uVar15 - 2) / 2) { + /* try { // try from 0034a004 to 0044a007 has its CatchHandler @ 0034b2e0 */ + lVar12 = uVar4 + 1; + uVar4 = lVar12 * 2 - 1; + *piVar7 = param_1[lVar12 * 2 + -1]; + piVar7 = param_1 + uVar4; + } + else if ((long)uVar4 < 1) goto LAB_00349f30; + } + sVar1 = *(short *)(param_4 + (long)iVar14 * 2); + uVar15 = (long)(uVar4 - 1) >> 1; + iVar8 = param_1[uVar15]; + sVar2 = *(short *)(param_4 + (long)iVar8 * 2); + while (uVar10 = uVar15, sVar2 < sVar1) { + param_1[uVar4] = iVar8; + piVar7 = param_1 + uVar10; + uVar15 = (long)(uVar10 - 1) >> 1; + if (uVar10 == 0) break; + iVar8 = param_1[uVar15]; + uVar4 = uVar10; + sVar2 = *(short *)(param_4 + (long)iVar8 * 2); + } + } +LAB_00349f30: + *piVar7 = iVar14; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_00349ea0; +} + + +================================================================== + +### FUNC 0034a090 (2360 bytes) name=FUN_0034a090 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0034a090(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + undefined2 uVar7; + uint uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + int *piVar11; + undefined1 *puVar12; + undefined8 uVar13; + undefined8 uVar14; + uint uVar15; + int iVar16; + long lVar17; + int *piVar18; + ulong uVar19; + undefined1 (*pauVar20) [16]; + int *piVar21; + char *pcVar22; + short sVar23; + int iVar24; + ulong uVar25; + ulong uVar26; + undefined2 *puVar27; + ulong uVar28; + size_t sVar29; + undefined1 (*pauVar30) [16]; + int *piVar31; + uint uVar32; + ulong uVar33; + long lVar34; + undefined1 (*pauVar35) [16]; + undefined1 (*pauVar36) [16]; + int *piVar37; + int *piVar38; + uint uVar39; + ulong uVar40; + ulong uVar41; + int *piVar42; + undefined1 *puVar43; + long lVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined8 local_860; + undefined8 local_858; + undefined1 *local_850; + ulong local_848; + undefined1 local_840 [1040]; + int *local_430; + ulong local_428; + int local_420 [264]; + + /* try { // try from 0034a098 to 0044a10b has its CatchHandler @ 0034b0f8 */ + local_430 = local_420; + local_850 = local_840; + local_428 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_848 = 0x208; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + local_860 = 0; + local_858 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_860,0x14); + uVar14 = s_src_data____dst_data_0046c1b8._8_8_; + uVar13 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar22 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar22 = uVar13; + *(undefined8 *)(pcVar22 + 8) = uVar14; + cv::error(-0xd7,(String *)&local_860, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = short int]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_860); + } + if (uVar4 == 0) { + uVar40 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + uVar33 = (ulong)(int)*(uint *)(param_1 + 8); + uVar25 = uVar33; + if (local_848 < uVar33) { + if (local_850 != local_840) { + if (local_850 != (undefined1 *)0x0) { + operator_delete__(local_850); + } + local_850 = local_840; + local_848 = 0x208; + } + uVar25 = local_848; + if (0x208 < uVar33) { + uVar25 = uVar33 << 1; + if (0x3f80000000000000 < uVar33) { + uVar25 = 0xffffffffffffffff; + } + local_850 = operator_new__(uVar25); + uVar25 = uVar33; + } + } + local_848 = uVar25; + piVar11 = local_430; + puVar12 = local_850; + if (local_428 < uVar33) { + if (local_430 != local_420) { + if (local_430 != (int *)0x0) { + operator_delete__(local_430); + } + local_430 = local_420; + local_428 = 0x108; + } + if (uVar33 < 0x109) { + piVar11 = local_420; + puVar12 = local_850; + uVar33 = local_428; + } + else { + uVar25 = uVar33 << 2; + if (0x1fc0000000000000 < uVar33) { + uVar25 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar25); + piVar11 = local_430; + puVar12 = local_850; + } + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar40 = (ulong)*(uint *)(param_1 + 0xc); + /* try { // try from 0034a138 to 0044a13b has its CatchHandler @ 0034b2b4 */ + /* try { // try from 0034a140 to 0044a953 has its CatchHandler @ 0034b0f8 */ + piVar11 = local_430; + puVar12 = local_850; + uVar33 = local_428; + } + local_428 = uVar33; + piVar42 = piVar11; + local_850 = puVar12; + if (0 < iVar5) { + uVar25 = -(uVar40 >> 0x1f) & 0xfffffffc00000000 | uVar40 << 2; + uVar39 = (uint)uVar40; + uVar2 = (int)uVar39 / 2; + uVar41 = (ulong)uVar2; + uVar8 = uVar39 - 1; + uVar33 = -(ulong)(uVar8 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar8 << 2; + uVar40 = -(ulong)(uVar39 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar39 - 2) << 2; + uVar3 = uVar39; + if ((int)uVar39 < 1) { + uVar3 = 1; + } + uVar26 = -(ulong)(uVar39 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar39 - 3) << 2; + lVar44 = 0; + do { + if (uVar4 == 0) { + piVar42 = piVar11; + puVar43 = puVar12; + if (0 < (int)uVar39) { + lVar17 = 0; + lVar34 = **(long **)(param_1 + 0x48); + puVar27 = (undefined2 *)(*(long *)(param_1 + 0x10) + lVar44 * 2); + do { + uVar7 = *puVar27; + puVar27 = (undefined2 *)((long)puVar27 + lVar34); + *(undefined2 *)(puVar12 + lVar17 * 2) = uVar7; + lVar17 = lVar17 + 1; + } while ((int)lVar17 < (int)uVar39); + uVar15 = -((uint)((ulong)piVar11 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } +joined_r0x0034a690: + uVar32 = uVar3; + if (((int)uVar3 < 8) || (uVar28 = 0, uVar32 = uVar15, uVar15 != 0)) { + uVar15 = uVar32; + *piVar42 = 0; + if ((uVar15 == 1) || + ((((piVar42[1] = 1, uVar15 == 2 || (piVar42[2] = 2, uVar15 == 3)) || + (piVar42[3] = 3, uVar15 == 4)) || (piVar42[4] = 4, uVar15 == 5)))) { + uVar28 = (ulong)uVar15; + } + else { + piVar42[5] = 5; + if (uVar15 == 7) { + uVar28 = 7; + piVar42[6] = 6; + } + else { + uVar28 = 6; + } + } + if (uVar15 == uVar3) goto LAB_0034a358; + } + uVar32 = uVar8; + if ((int)uVar39 < 1) { + uVar32 = 0; + } + uVar1 = ((uVar3 - uVar15) - 4 >> 2) + 1; + iVar16 = uVar1 * 4; + if (2 < uVar32 - uVar15) { + iVar24 = (int)uVar28; + uVar32 = 0; + auVar45._0_4_ = iVar24 + (int)_DAT_0034aa20; + auVar45._4_4_ = iVar24 + (int)((ulong)_DAT_0034aa20 >> 0x20); + auVar45._8_4_ = iVar24 + (int)_UNK_0034aa28; + auVar45._12_4_ = iVar24 + (int)((ulong)_UNK_0034aa28 >> 0x20); + piVar18 = piVar42 + uVar15; + do { + *(long *)(piVar18 + 2) = auVar45._8_8_; + *(long *)piVar18 = auVar45._0_8_; + uVar32 = uVar32 + 1; + auVar46._0_4_ = auVar45._0_4_ + 4; + auVar46._4_4_ = auVar45._4_4_ + 4; + auVar46._8_4_ = auVar45._8_4_ + 4; + auVar46._12_4_ = auVar45._12_4_ + 4; + piVar18 = piVar18 + 4; + auVar45 = auVar46; + } while (uVar32 < uVar1); + uVar28 = (ulong)(uint)(iVar24 + iVar16); + if (iVar16 == uVar3 - uVar15) goto LAB_0034a358; + } + uVar19 = -(uVar28 >> 0x1f) & 0xfffffffc00000000 | uVar28 << 2; + iVar16 = (int)uVar28; + *(int *)((long)piVar42 + uVar19) = iVar16; + if (iVar16 + 1 < (int)uVar39) { + *(int *)((long)piVar42 + uVar19 + 4) = iVar16 + 1; + if (iVar16 + 2 < (int)uVar39) { + *(int *)((long)piVar42 + uVar19 + 8) = iVar16 + 2; + } + } + } + } + else { + puVar43 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar44 * *(long *)(param_1 + 0x50)); + piVar42 = (int *)(*(long *)(param_2 + 0x10) + lVar44 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar39) { + uVar15 = -((uint)((ulong)piVar42 >> 2) & 3) & 3; + if (uVar3 < uVar15) { + uVar15 = uVar3; + } + goto joined_r0x0034a690; + } + } +LAB_0034a358: + piVar18 = (int *)((long)piVar42 + uVar25); + if (piVar42 != piVar18) { + FUN_00349ce0(piVar42,piVar18,(0x3f - LZCOUNT((long)uVar25 >> 2)) * 2,puVar43); + piVar37 = piVar42; + if ((long)uVar25 < 0x44) { + while (piVar38 = piVar37 + 1, piVar18 != piVar38) { + iVar16 = *piVar38; + sVar23 = *(short *)(puVar43 + (long)iVar16 * 2); + if (sVar23 < *(short *)(puVar43 + (long)*piVar42 * 2)) { + sVar29 = (long)piVar38 - (long)piVar42; + if ((long)sVar29 >> 2 != 0) { + memmove((void *)((long)piVar38 + (4 - sVar29)),piVar42,sVar29); + } + *piVar42 = iVar16; + piVar37 = piVar38; + } + else { + iVar24 = *piVar37; + piVar37 = piVar38; + if (sVar23 < *(short *)(puVar43 + (long)iVar24 * 2)) { + do { + piVar31 = piVar37 + -1; + *piVar37 = iVar24; + iVar24 = piVar37[-2]; + piVar37 = piVar31; + } while (sVar23 < *(short *)(puVar43 + (long)iVar24 * 2)); + *piVar31 = iVar16; + piVar37 = piVar38; + } + else { + *piVar38 = iVar16; + } + } + } + } + else { + piVar37 = piVar42 + 0x10; + piVar38 = piVar42 + 1; + do { + iVar16 = *piVar38; + sVar23 = *(short *)(puVar43 + (long)iVar16 * 2); + if (sVar23 < *(short *)(puVar43 + (long)*piVar42 * 2)) { + sVar29 = (long)piVar38 - (long)piVar42; + if ((long)sVar29 >> 2 != 0) { + memmove((void *)((long)piVar38 + (4 - sVar29)),piVar42,sVar29); + } + *piVar42 = iVar16; + } + else { + iVar24 = piVar38[-1]; + piVar31 = piVar38; + if (sVar23 < *(short *)(puVar43 + (long)iVar24 * 2)) { + do { + piVar21 = piVar31 + -1; + *piVar31 = iVar24; + iVar24 = piVar31[-2]; + piVar31 = piVar21; + } while (sVar23 < *(short *)(puVar43 + (long)iVar24 * 2)); + *piVar21 = iVar16; + } + else { + *piVar38 = iVar16; + } + } + piVar38 = piVar38 + 1; + } while (piVar37 != piVar38); + if (piVar18 != piVar37) { + iVar16 = piVar42[0xf]; + iVar24 = *piVar37; + sVar23 = *(short *)(puVar43 + (long)iVar24 * 2); + piVar38 = piVar42 + 0xf; + if (sVar23 < *(short *)(puVar43 + (long)iVar16 * 2)) goto LAB_0034a710; + do { + *piVar37 = iVar24; + while( true ) { + piVar37 = piVar37 + 1; + if (piVar18 == piVar37) goto LAB_0034a3c8; + iVar16 = piVar37[-1]; + iVar24 = *piVar37; + sVar23 = *(short *)(puVar43 + (long)iVar24 * 2); + piVar38 = piVar37 + -1; + if (*(short *)(puVar43 + (long)iVar16 * 2) <= sVar23) break; +LAB_0034a710: + do { + piVar31 = piVar38; + piVar31[1] = iVar16; + iVar16 = piVar31[-1]; + piVar38 = piVar31 + -1; + } while (sVar23 < *(short *)(puVar43 + (long)iVar16 * 2)); + *piVar31 = iVar24; + } + } while( true ); + } + } + } +LAB_0034a3c8: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(uVar25 + uVar41 * -4) < (long)(uVar41 * 4) && 0 < (long)uVar25) { + lVar17 = 0; + piVar18 = (int *)((long)piVar42 + uVar33); + do { + iVar16 = piVar42[lVar17]; + piVar42[lVar17] = *piVar18; + lVar17 = lVar17 + 1; + *piVar18 = iVar16; + piVar18 = piVar18 + -1; + } while ((int)lVar17 < (int)uVar2); + } + else { + uVar15 = -((uint)((ulong)piVar42 >> 2) & 3) & 3; + uVar28 = uVar41; + if (uVar15 < uVar2) { + uVar28 = (ulong)uVar15; + } + iVar16 = (int)uVar28; + uVar19 = uVar28; + if (iVar16 != 0) { + iVar24 = *piVar42; + *piVar42 = *(int *)((long)piVar42 + uVar33); + *(int *)((long)piVar42 + uVar33) = iVar24; + if (iVar16 != 1) { + iVar24 = piVar42[1]; + piVar42[1] = *(int *)((long)piVar42 + uVar40); + *(int *)((long)piVar42 + uVar40) = iVar24; + if (iVar16 == 3) { + iVar24 = piVar42[2]; + piVar42[2] = *(int *)((long)piVar42 + uVar26); + *(int *)((long)piVar42 + uVar26) = iVar24; + } + else { + uVar19 = 2; + } + } + } + uVar15 = ((uVar2 - iVar16) - 4 >> 2) + 1; + pauVar30 = (undefined1 (*) [16])((long)piVar42 + (uVar25 - 0xc) + ~uVar28 * 4); + uVar32 = 0; + iVar24 = uVar15 * 4; + pauVar20 = (undefined1 (*) [16])(piVar42 + uVar28); + pauVar35 = pauVar30; + pauVar36 = (undefined1 (*) [16])(piVar42 + uVar28); + do { + auVar45 = *pauVar30; + uVar32 = uVar32 + 1; + pauVar30 = pauVar30 + -1; + auVar9._8_8_ = _UNK_0034aa38; + auVar9._0_8_ = _DAT_0034aa30; + auVar46 = a64_TBL(ZEXT816(0),auVar45,auVar9); + auVar10._8_8_ = _UNK_0034aa38; + auVar10._0_8_ = _DAT_0034aa30; + auVar45 = a64_TBL(ZEXT816(0),*pauVar20,auVar10); + *(long *)((long)*pauVar36 + 8) = auVar46._8_8_; + *(long *)*pauVar36 = auVar46._0_8_; + *(long *)(*pauVar35 + 8) = auVar45._8_8_; + *(long *)*pauVar35 = auVar45._0_8_; + pauVar35 = pauVar35 + -1; + pauVar20 = pauVar20 + 1; + pauVar36 = pauVar36 + 1; + } while (uVar32 < uVar15); + uVar15 = iVar24 + (int)uVar19; + if (iVar24 != uVar2 - iVar16) { + uVar28 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + uVar6 = *(undefined4 *)((long)piVar42 + uVar28); + uVar19 = -(ulong)(uVar8 - uVar15 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar8 - uVar15) << 2; + *(undefined4 *)((long)piVar42 + uVar28) = *(undefined4 *)((long)piVar42 + uVar19); + *(undefined4 *)((long)piVar42 + uVar19) = uVar6; + if ((int)(uVar15 + 1) < (int)uVar2) { + uVar32 = uVar8 - (uVar15 + 1); + uVar19 = -(ulong)(uVar32 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar32 << 2; + uVar6 = *(undefined4 *)((long)piVar42 + uVar28 + 4); + *(undefined4 *)((long)piVar42 + uVar28 + 4) = *(undefined4 *)((long)piVar42 + uVar19); + *(undefined4 *)((long)piVar42 + uVar19) = uVar6; + if ((int)(uVar15 + 2) < (int)uVar2) { + uVar15 = uVar8 - (uVar15 + 2); + uVar6 = *(undefined4 *)((long)piVar42 + uVar28 + 8); + uVar19 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + *(undefined4 *)((long)piVar42 + uVar28 + 8) = + *(undefined4 *)((long)piVar42 + uVar19); + *(undefined4 *)((long)piVar42 + uVar19) = uVar6; + } + } + } + } + } + if ((uVar4 == 0) && (0 < (int)uVar39)) { + lVar17 = 0; + lVar34 = **(long **)(param_2 + 0x48); + piVar18 = (int *)(*(long *)(param_2 + 0x10) + lVar44 * 4); + do { + piVar37 = piVar42 + lVar17; + lVar17 = lVar17 + 1; + *piVar18 = *piVar37; + piVar18 = (int *)((long)piVar18 + lVar34); + } while ((int)lVar17 < (int)uVar39); + } + lVar44 = lVar44 + 1; + piVar42 = local_430; + } while ((int)lVar44 < iVar5); + } + if ((piVar42 != local_420) && (piVar42 != (int *)0x0)) { + operator_delete__(piVar42); + } + if ((local_850 != local_840) && (local_850 != (undefined1 *)0x0)) { + operator_delete__(local_850); + } + return; +} + + +================================================================== + +### FUNC 0034aa40 (968 bytes) name=FUN_0034aa40 + +void FUN_0034aa40(uint *param_1,uint *param_2,long param_3,long param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + long lVar4; + ulong uVar5; + long lVar6; + long lVar7; + uint *puVar8; + uint *puVar9; + long lVar10; + ulong uVar11; + uint uVar12; + long lVar13; + ulong uVar14; + ulong uVar15; + uint uVar16; + long lVar17; + + /* try { // try from 0034aa40 to 0044aa63 has its CatchHandler @ 0034b120 */ + lVar10 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar10 < 0x44) { + return; + } + if (param_3 == 0) break; + uVar16 = param_1[1]; + param_3 = param_3 + -1; + lVar13 = (long)(int)uVar16; + iVar1 = *(int *)(param_4 + (long)(int)param_2[-1] * 4); + iVar2 = *(int *)(param_4 + lVar13 * 4); + iVar3 = *(int *)(param_4 + (long)(int)param_1[lVar10 >> 3] * 4); + puVar9 = param_2; + puVar8 = param_1; + if (iVar2 < iVar3) { + if (iVar3 < iVar1) { +LAB_0034ab6c: + uVar16 = *param_1; + *param_1 = param_1[lVar10 >> 3]; + param_1[lVar10 >> 3] = uVar16; + uVar16 = param_2[-1]; + uVar12 = param_1[1]; + lVar13 = (long)(int)*param_1; + } + else { + if (iVar1 <= iVar2) goto LAB_0034ab88; +LAB_0034aab4: + uVar16 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = uVar16; + uVar12 = param_1[1]; + lVar13 = (long)(int)*param_1; + } + } + else { + if (iVar1 <= iVar2) { + if (iVar3 < iVar1) goto LAB_0034aab4; + goto LAB_0034ab6c; + } +LAB_0034ab88: + uVar12 = *param_1; + param_1[1] = uVar12; + *param_1 = uVar16; + uVar16 = param_2[-1]; + } + while( true ) { + /* try { // try from 0034aa68 to 0044aafb has its CatchHandler @ 0034b148 */ + puVar8 = puVar8 + 1; + iVar1 = *(int *)(param_4 + lVar13 * 4); + iVar2 = *(int *)(param_4 + (long)(int)uVar12 * 4); + while (iVar2 < iVar1) { + puVar8 = puVar8 + 1; + uVar12 = *puVar8; + iVar2 = *(int *)(param_4 + (long)(int)uVar12 * 4); + } + puVar9 = puVar9 + -1; + iVar2 = *(int *)(param_4 + (long)(int)uVar16 * 4); + /* try { // try from 0034ab00 to 0044ab1b has its CatchHandler @ 0034b120 */ + while (iVar1 < iVar2) { + puVar9 = puVar9 + -1; + uVar16 = *puVar9; + iVar2 = *(int *)(param_4 + (long)(int)uVar16 * 4); + } + if (puVar9 <= puVar8) break; + *puVar8 = uVar16; + /* try { // try from 0034ab24 to 0044ace7 has its CatchHandler @ 00349298 */ + *puVar9 = uVar12; + uVar16 = puVar9[-1]; + uVar12 = puVar8[1]; + lVar13 = (long)(int)*param_1; + } + FUN_0034aa40(puVar8,param_2,param_3,param_4); + lVar10 = (long)puVar8 - (long)param_1; + param_2 = puVar8; + } + lVar10 = lVar10 >> 2; + lVar17 = lVar10 + -2 >> 1; + puVar8 = param_1 + lVar17; + lVar13 = lVar17; + do { + uVar16 = *puVar8; + lVar4 = lVar13; + puVar9 = puVar8; + while (lVar4 < lVar10 + -1 >> 1) { + lVar7 = lVar4 + 1; + lVar6 = lVar7 * 2; + puVar9 = param_1 + lVar7 * 2; + uVar12 = param_1[lVar7 * 2]; + /* try { // try from 0034ad00 to 0044ad03 has its CatchHandler @ 0034b06c */ + if (*(int *)(param_4 + (long)(int)uVar12 * 4) < *(int *)(param_4 + (long)(int)puVar9[-1] * 4)) + { + lVar6 = lVar6 + -1; + /* try { // try from 0034ad14 to 0044ad17 has its CatchHandler @ 0034b2e0 */ + uVar12 = param_1[lVar6]; + puVar9 = param_1 + lVar6; + } + param_1[lVar4] = uVar12; + /* try { // try from 0034ad28 to 0044ad2b has its CatchHandler @ 0034b2d8 */ + lVar4 = lVar6; + } + if ((lVar17 == lVar4) && (((uint)lVar10 & 1) != 1)) { + lVar7 = lVar4 + 1; + lVar4 = lVar7 * 2 + -1; + *puVar9 = param_1[lVar7 * 2 + -1]; + puVar9 = param_1 + lVar4; + } + if (lVar13 < lVar4) { + uVar14 = -(ulong)(uVar16 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar16 << 2; + lVar7 = lVar4 + -1 >> 1; + uVar12 = param_1[lVar7]; + if (*(int *)(param_4 + (long)(int)uVar12 * 4) < *(int *)(param_4 + uVar14)) { + do { + param_1[lVar4] = uVar12; + puVar9 = param_1 + lVar7; + if (lVar7 <= lVar13) break; + lVar6 = (lVar7 + -1) / 2; + uVar12 = param_1[lVar6]; + lVar4 = lVar7; + lVar7 = lVar6; + } while (*(int *)(param_4 + (long)(int)uVar12 * 4) < *(int *)(param_4 + uVar14)); + } + *puVar9 = uVar16; + if (lVar13 == 0) break; + } + else { + *puVar9 = uVar16; + } + puVar8 = puVar8 + -1; + /* try { // try from 0034ad3c to 0044ad3f has its CatchHandler @ 0034b0f0 */ + lVar13 = lVar13 + -1; + } while( true ); +LAB_0034ac00: + param_2 = param_2 + -1; + uVar16 = *param_2; + *param_2 = *param_1; + uVar14 = (long)param_2 - (long)param_1 >> 2; + lVar10 = (long)(uVar14 - 1) / 2; + if (lVar10 < 1) { + uVar5 = uVar14 & 1; + puVar8 = param_1; + if ((uVar14 & 1) == 0) goto LAB_0034ac78; + } + else { + uVar11 = 0; + do { + lVar13 = uVar11 + 1; + uVar5 = lVar13 * 2; + puVar8 = param_1 + lVar13 * 2; + uVar12 = param_1[lVar13 * 2]; + if (*(int *)(param_4 + (long)(int)uVar12 * 4) < *(int *)(param_4 + (long)(int)puVar8[-1] * 4)) + { + uVar5 = uVar5 - 1; + uVar12 = param_1[uVar5]; + puVar8 = param_1 + uVar5; + } + param_1[uVar11] = uVar12; + uVar11 = uVar5; + } while ((long)uVar5 < lVar10); + if ((uVar14 & 1) == 0) { +LAB_0034ac78: + if (uVar5 == (long)(uVar14 - 2) / 2) { + lVar10 = uVar5 + 1; + uVar5 = lVar10 * 2 - 1; + *puVar8 = param_1[lVar10 * 2 + -1]; + puVar8 = param_1 + uVar5; + } + else if ((long)uVar5 < 1) goto LAB_0034ac90; + } + uVar11 = -(ulong)(uVar16 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar16 << 2; + uVar14 = (long)(uVar5 - 1) >> 1; + uVar12 = param_1[uVar14]; + if (*(int *)(param_4 + (long)(int)uVar12 * 4) < *(int *)(param_4 + uVar11)) { + do { + param_1[uVar5] = uVar12; + puVar8 = param_1 + uVar14; + uVar15 = (long)(uVar14 - 1) >> 1; + if (uVar14 == 0) break; + uVar12 = param_1[uVar15]; + uVar5 = uVar14; + uVar14 = uVar15; + } while (*(int *)(param_4 + (long)(int)uVar12 * 4) < *(int *)(param_4 + uVar11)); + } + } +LAB_0034ac90: + *puVar8 = uVar16; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_0034ac00; +} + + +================================================================== + +### FUNC 0034ae10 (2368 bytes) name=FUN_0034ae10 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0034ae10(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + uint uVar7; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + uint *puVar10; + undefined1 *puVar11; + undefined8 uVar12; + undefined8 uVar13; + uint uVar14; + int iVar15; + long lVar16; + uint *puVar17; + ulong uVar18; + undefined1 (*pauVar19) [16]; + char *pcVar20; + int iVar21; + ulong uVar22; + ulong uVar23; + undefined4 *puVar24; + ulong uVar25; + size_t sVar26; + undefined1 (*pauVar27) [16]; + uint *puVar28; + uint uVar29; + ulong uVar30; + long lVar31; + uint *puVar32; + undefined1 (*pauVar33) [16]; + uint *puVar34; + undefined1 (*pauVar35) [16]; + uint *puVar36; + uint uVar37; + ulong uVar38; + ulong uVar39; + uint *puVar40; + undefined1 *puVar41; + long lVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined8 local_870; + undefined8 local_868; + undefined1 *local_860; + ulong local_858; + undefined1 local_850 [1056]; + uint *local_430; + ulong local_428; + uint local_420 [264]; + + local_430 = local_420; + local_860 = local_850; + local_858 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_428 = 0x108; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + local_870 = 0; + local_868 = 0; + pcVar20 = (char *)cv::String::allocate((String *)&local_870,0x14); + uVar13 = s_src_data____dst_data_0046c1b8._8_8_; + uVar12 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar20 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar20 = uVar12; + *(undefined8 *)(pcVar20 + 8) = uVar13; + cv::error(-0xd7,(String *)&local_870, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = int]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_870); + } + if (uVar4 == 0) { + /* try { // try from 0034b5c0 to 0044b5c3 has its CatchHandler @ 0034bca0 */ + uVar38 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + /* try { // try from 0034b5c8 to 0044b5cb has its CatchHandler @ 0034b4c4 */ + uVar30 = (ulong)(int)*(uint *)(param_1 + 8); + uVar22 = uVar30; + if (local_858 < uVar30) { + if (local_860 != local_850) { + if (local_860 != (undefined1 *)0x0) { + operator_delete__(local_860); + } + local_860 = local_850; + local_858 = 0x108; + } + uVar22 = local_858; + if (0x108 < uVar30) { + uVar22 = uVar30 << 2; + if (0x1fc0000000000000 < uVar30) { + uVar22 = 0xffffffffffffffff; + } + local_860 = operator_new__(uVar22); + uVar22 = uVar30; + } + } + local_858 = uVar22; + puVar10 = local_430; + puVar11 = local_860; + if (local_428 < uVar30) { + if (local_430 != local_420) { + if (local_430 != (uint *)0x0) { + operator_delete__(local_430); + } + local_430 = local_420; + local_428 = 0x108; + } + if (uVar30 < 0x109) { + puVar10 = local_420; + puVar11 = local_860; + uVar30 = local_428; + } + else { + uVar22 = uVar30 << 2; + if (0x1fc0000000000000 < uVar30) { + uVar22 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar22); + puVar10 = local_430; + puVar11 = local_860; + } + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar38 = (ulong)*(uint *)(param_1 + 0xc); + puVar10 = local_430; + puVar11 = local_860; + uVar30 = local_428; + } + local_428 = uVar30; + puVar40 = puVar10; + local_860 = puVar11; + if (0 < iVar5) { + uVar22 = -(uVar38 >> 0x1f) & 0xfffffffc00000000 | uVar38 << 2; + uVar37 = (uint)uVar38; + uVar2 = (int)uVar37 / 2; + uVar39 = (ulong)uVar2; + uVar7 = uVar37 - 1; + uVar30 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar7 << 2; + uVar38 = -(ulong)(uVar37 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 2) << 2; + uVar3 = uVar37; + if ((int)uVar37 < 1) { + uVar3 = 1; + } + uVar23 = -(ulong)(uVar37 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 3) << 2; + lVar42 = 0; + do { + if (uVar4 == 0) { + /* try { // try from 0034af6c to 0044af6f has its CatchHandler @ 0034b278 */ + /* try { // try from 0034af74 to 0044af8b has its CatchHandler @ 0034b148 */ + puVar40 = puVar10; + puVar41 = puVar11; + if (0 < (int)uVar37) { + lVar16 = 0; + lVar31 = **(long **)(param_1 + 0x48); + puVar24 = (undefined4 *)(*(long *)(param_1 + 0x10) + lVar42 * 4); + do { + /* try { // try from 0034af90 to 0044afab has its CatchHandler @ 0034b120 */ + uVar6 = *puVar24; + puVar24 = (undefined4 *)((long)puVar24 + lVar31); + *(undefined4 *)(puVar11 + lVar16 * 4) = uVar6; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar37); + /* try { // try from 0034afb4 to 0044afcb has its CatchHandler @ 00349298 */ + uVar14 = -((uint)((ulong)puVar10 >> 2) & 3) & 3; + if (uVar3 < uVar14) { + uVar14 = uVar3; + } +joined_r0x0034b418: + uVar29 = uVar3; + if (((int)uVar3 < 8) || (uVar25 = 0, uVar29 = uVar14, uVar14 != 0)) { + uVar14 = uVar29; + *puVar40 = 0; + /* try { // try from 0034afdc to 0044afdf has its CatchHandler @ 0034b148 */ + /* try { // try from 0034afec to 0044b00b has its CatchHandler @ 00349298 */ + if ((uVar14 == 1) || + ((((puVar40[1] = 1, uVar14 == 2 || (puVar40[2] = 2, uVar14 == 3)) || + (puVar40[3] = 3, uVar14 == 4)) || (puVar40[4] = 4, uVar14 == 5)))) { + uVar25 = (ulong)uVar14; + } + else { + /* try { // try from 0034b01c to 0044b01f has its CatchHandler @ 0034b120 */ + puVar40[5] = 5; + if (uVar14 == 7) { + uVar25 = 7; + puVar40[6] = 6; + } + else { + uVar25 = 6; + } + } + if (uVar14 == uVar3) goto LAB_0034b0d4; + } + uVar29 = uVar7; + if ((int)uVar37 < 1) { + uVar29 = 0; + } + uVar1 = ((uVar3 - uVar14) - 4 >> 2) + 1; + iVar15 = uVar1 * 4; + if (2 < uVar29 - uVar14) { + /* catch() { ... } // from try @ 00349758 with catch @ 0034b06c + catch() { ... } // from try @ 00349e00 with catch @ 0034b06c + catch() { ... } // from try @ 00349fe0 with catch @ 0034b06c + catch() { ... } // from try @ 0034ad00 with catch @ 0034b06c */ + iVar21 = (int)uVar25; + uVar29 = 0; + auVar43._0_4_ = iVar21 + (int)_DAT_0034b7a0; + auVar43._4_4_ = iVar21 + (int)((ulong)_DAT_0034b7a0 >> 0x20); + auVar43._8_4_ = iVar21 + (int)_UNK_0034b7a8; + auVar43._12_4_ = iVar21 + (int)((ulong)_UNK_0034b7a8 >> 0x20); + puVar17 = puVar40 + uVar14; + do { + *(long *)(puVar17 + 2) = auVar43._8_8_; + *(long *)puVar17 = auVar43._0_8_; + uVar29 = uVar29 + 1; + auVar44._0_4_ = auVar43._0_4_ + 4; + auVar44._4_4_ = auVar43._4_4_ + 4; + auVar44._8_4_ = auVar43._8_4_ + 4; + auVar44._12_4_ = auVar43._12_4_ + 4; + puVar17 = puVar17 + 4; + auVar43 = auVar44; + } while (uVar29 < uVar1); + uVar25 = (ulong)(uint)(iVar21 + iVar15); + if (iVar15 == uVar3 - uVar14) goto LAB_0034b0d4; + } + uVar18 = -(uVar25 >> 0x1f) & 0xfffffffc00000000 | uVar25 << 2; + iVar15 = (int)uVar25; + *(int *)((long)puVar40 + uVar18) = iVar15; + if (iVar15 + 1 < (int)uVar37) { + *(int *)((long)puVar40 + uVar18 + 4) = iVar15 + 1; + if (iVar15 + 2 < (int)uVar37) { + *(int *)((long)puVar40 + uVar18 + 8) = iVar15 + 2; + } + } + } + } + else { + puVar41 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar42 * *(long *)(param_1 + 0x50)); + puVar40 = (uint *)(*(long *)(param_2 + 0x10) + lVar42 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar37) { + uVar14 = -((uint)((ulong)puVar40 >> 2) & 3) & 3; + if (uVar3 < uVar14) { + uVar14 = uVar3; + } + goto joined_r0x0034b418; + } + } +LAB_0034b0d4: + puVar17 = (uint *)((long)puVar40 + uVar22); + if (puVar40 != puVar17) { + /* try { // try from 0034b0ec to 0044b0ef has its CatchHandler @ 00349298 */ + /* catch() { ... } // from try @ 00349730 with catch @ 0034b0f0 + catch() { ... } // from try @ 00349e84 with catch @ 0034b0f0 + catch() { ... } // from try @ 00349fec with catch @ 0034b0f0 + catch() { ... } // from try @ 0034ad3c with catch @ 0034b0f0 */ + FUN_0034aa40(puVar40,puVar17,(0x3f - LZCOUNT((long)uVar22 >> 2)) * 2,puVar41); + /* catch() { ... } // from try @ 003497d4 with catch @ 0034b0f8 + catch() { ... } // from try @ 0034a098 with catch @ 0034b0f8 + catch() { ... } // from try @ 0034a140 with catch @ 0034b0f8 */ + puVar34 = puVar40; + if ((long)uVar22 < 0x44) { + while (puVar36 = puVar34 + 1, puVar17 != puVar36) { + uVar14 = *puVar36; + uVar25 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + /* catch() { ... } // from try @ 0034aa40 with catch @ 0034b120 + catch() { ... } // from try @ 0034ab00 with catch @ 0034b120 + catch() { ... } // from try @ 0034af90 with catch @ 0034b120 + catch() { ... } // from try @ 0034b01c with catch @ 0034b120 */ + if (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)*puVar40 * 4)) { + sVar26 = (long)puVar36 - (long)puVar40; + if ((long)sVar26 >> 2 != 0) { + memmove((void *)((long)puVar36 + (4 - sVar26)),puVar40,sVar26); + } + *puVar40 = uVar14; + puVar34 = puVar36; + } + else { + uVar29 = *puVar34; + puVar34 = puVar36; + if (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)uVar29 * 4)) { + do { + puVar28 = puVar34 + -1; + *puVar34 = uVar29; + uVar29 = puVar34[-2]; + puVar34 = puVar28; + } while (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)uVar29 * 4)); + *puVar28 = uVar14; + puVar34 = puVar36; + } + else { + *puVar36 = uVar14; + } + } + } + } + else { + puVar36 = puVar40 + 0x10; + puVar34 = puVar40 + 1; + do { + uVar14 = *puVar34; + uVar25 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + if (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)*puVar40 * 4)) { + sVar26 = (long)puVar34 - (long)puVar40; + if ((long)sVar26 >> 2 != 0) { + memmove((void *)((long)puVar34 + (4 - sVar26)),puVar40,sVar26); + } + *puVar40 = uVar14; + } + else { + uVar29 = puVar34[-1]; + puVar28 = puVar34; + if (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)uVar29 * 4)) { + do { + puVar32 = puVar28 + -1; + *puVar28 = uVar29; + uVar29 = puVar28[-2]; + puVar28 = puVar32; + } while (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)uVar29 * 4)); + *puVar32 = uVar14; + } + else { + *puVar34 = uVar14; + } + } + puVar34 = puVar34 + 1; + } while (puVar36 != puVar34); + for (; puVar17 != puVar36; puVar36 = puVar36 + 1) { + while( true ) { + uVar14 = puVar36[-1]; + uVar29 = *puVar36; + uVar25 = -(ulong)(uVar29 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar29 << 2; + puVar34 = puVar36; + if (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)uVar14 * 4)) break; + puVar34 = puVar36 + 1; + *puVar36 = uVar29; + puVar36 = puVar34; + if (puVar17 == puVar34) goto LAB_0034b14c; + } + do { + puVar28 = puVar34 + -1; + *puVar34 = uVar14; + uVar14 = puVar34[-2]; + puVar34 = puVar28; + } while (*(int *)(puVar41 + uVar25) < *(int *)(puVar41 + (long)(int)uVar14 * 4)); + *puVar28 = uVar29; + /* catch() { ... } // from try @ 0034b520 with catch @ 0034b4c4 + catch() { ... } // from try @ 0034b5c8 with catch @ 0034b4c4 + catch() { ... } // from try @ 0034bcb0 with catch @ 0034b4c4 */ + } + } + } +LAB_0034b14c: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(uVar22 + uVar39 * -4) < (long)(uVar39 * 4) && 0 < (long)uVar22) { + lVar16 = 0; + puVar17 = (uint *)((long)puVar40 + uVar30); + do { + uVar14 = puVar40[lVar16]; + puVar40[lVar16] = *puVar17; + lVar16 = lVar16 + 1; + *puVar17 = uVar14; + puVar17 = puVar17 + -1; + } while ((int)lVar16 < (int)uVar2); + } + else { + uVar14 = -((uint)((ulong)puVar40 >> 2) & 3) & 3; + /* catch() { ... } // from try @ 00349454 with catch @ 0034b170 */ + uVar25 = uVar39; + if (uVar14 < uVar2) { + uVar25 = (ulong)uVar14; + } + iVar15 = (int)uVar25; + uVar18 = uVar25; + if (iVar15 != 0) { + uVar14 = *puVar40; + /* try { // try from 0034b188 to 0044b267 has its CatchHandler @ 00349298 */ + *puVar40 = *(uint *)((long)puVar40 + uVar30); + *(uint *)((long)puVar40 + uVar30) = uVar14; + if (iVar15 != 1) { + uVar14 = puVar40[1]; + puVar40[1] = *(uint *)((long)puVar40 + uVar38); + *(uint *)((long)puVar40 + uVar38) = uVar14; + if (iVar15 == 3) { + uVar14 = puVar40[2]; + puVar40[2] = *(uint *)((long)puVar40 + uVar23); + *(uint *)((long)puVar40 + uVar23) = uVar14; + } + else { + uVar18 = 2; + } + } + } + uVar14 = ((uVar2 - iVar15) - 4 >> 2) + 1; + pauVar27 = (undefined1 (*) [16])((long)puVar40 + (uVar22 - 0xc) + ~uVar25 * 4); + uVar29 = 0; + iVar21 = uVar14 * 4; + pauVar19 = (undefined1 (*) [16])(puVar40 + uVar25); + pauVar33 = pauVar27; + pauVar35 = (undefined1 (*) [16])(puVar40 + uVar25); + do { + auVar43 = *pauVar27; + uVar29 = uVar29 + 1; + pauVar27 = pauVar27 + -1; + auVar8._8_8_ = _UNK_0034b7b8; + auVar8._0_8_ = _DAT_0034b7b0; + auVar44 = a64_TBL(ZEXT816(0),auVar43,auVar8); + auVar9._8_8_ = _UNK_0034b7b8; + auVar9._0_8_ = _DAT_0034b7b0; + auVar43 = a64_TBL(ZEXT816(0),*pauVar19,auVar9); + *(long *)((long)*pauVar35 + 8) = auVar44._8_8_; + *(long *)*pauVar35 = auVar44._0_8_; + *(long *)(*pauVar33 + 8) = auVar43._8_8_; + *(long *)*pauVar33 = auVar43._0_8_; + pauVar33 = pauVar33 + -1; + pauVar19 = pauVar19 + 1; + pauVar35 = pauVar35 + 1; + } while (uVar29 < uVar14); + uVar14 = iVar21 + (int)uVar18; + if (iVar21 != uVar2 - iVar15) { + uVar25 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + uVar6 = *(undefined4 *)((long)puVar40 + uVar25); + uVar18 = -(ulong)(uVar7 - uVar14 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar7 - uVar14) << 2; + *(undefined4 *)((long)puVar40 + uVar25) = *(undefined4 *)((long)puVar40 + uVar18); + *(undefined4 *)((long)puVar40 + uVar18) = uVar6; + if ((int)(uVar14 + 1) < (int)uVar2) { + uVar29 = uVar7 - (uVar14 + 1); + /* catch() { ... } // from try @ 0034af6c with catch @ 0034b278 */ + uVar18 = -(ulong)(uVar29 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar29 << 2; + uVar6 = *(undefined4 *)((long)puVar40 + uVar25 + 4); + *(undefined4 *)((long)puVar40 + uVar25 + 4) = *(undefined4 *)((long)puVar40 + uVar18); + *(undefined4 *)((long)puVar40 + uVar18) = uVar6; + if ((int)(uVar14 + 2) < (int)uVar2) { + /* catch() { ... } // from try @ 0034956c with catch @ 0034b2a0 */ + uVar14 = uVar7 - (uVar14 + 2); + uVar6 = *(undefined4 *)((long)puVar40 + uVar25 + 8); + uVar18 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + /* try { // try from 0034b2b0 to 0044b2b3 has its CatchHandler @ 00349298 */ + *(undefined4 *)((long)puVar40 + uVar25 + 8) = + *(undefined4 *)((long)puVar40 + uVar18); + /* catch() { ... } // from try @ 0034a138 with catch @ 0034b2b4 */ + *(undefined4 *)((long)puVar40 + uVar18) = uVar6; + } + } + } + } + } + /* catch() { ... } // from try @ 0034962c with catch @ 0034b2c4 */ + if ((uVar4 == 0) && (0 < (int)uVar37)) { + lVar16 = 0; + /* try { // try from 0034b2d4 to 0044b2d7 has its CatchHandler @ 00349298 */ + lVar31 = **(long **)(param_2 + 0x48); + /* catch() { ... } // from try @ 00349708 with catch @ 0034b2d8 + catch() { ... } // from try @ 00349f08 with catch @ 0034b2d8 + catch() { ... } // from try @ 00349ff8 with catch @ 0034b2d8 + catch() { ... } // from try @ 0034ad28 with catch @ 0034b2d8 */ + puVar17 = (uint *)(*(long *)(param_2 + 0x10) + lVar42 * 4); + do { + puVar34 = puVar40 + lVar16; + /* catch() { ... } // from try @ 0034967c with catch @ 0034b2e0 + catch() { ... } // from try @ 00349f8c with catch @ 0034b2e0 + catch() { ... } // from try @ 0034a004 with catch @ 0034b2e0 + catch() { ... } // from try @ 0034ad14 with catch @ 0034b2e0 */ + lVar16 = lVar16 + 1; + *puVar17 = *puVar34; + puVar17 = (uint *)((long)puVar17 + lVar31); + } while ((int)lVar16 < (int)uVar37); + } + lVar42 = lVar42 + 1; + puVar40 = local_430; + } while ((int)lVar42 < iVar5); + } + if ((puVar40 != local_420) && (puVar40 != (uint *)0x0)) { + operator_delete__(puVar40); + } + if ((local_860 != local_850) && (local_860 != (undefined1 *)0x0)) { + operator_delete__(local_860); + } + return; +} + + +================================================================== + +### FUNC 0034b7c0 (948 bytes) name=FUN_0034b7c0 + +void FUN_0034b7c0(int *param_1,int *param_2,long param_3,long param_4) + +{ + long lVar1; + ulong uVar2; + long lVar3; + long lVar4; + int *piVar5; + int iVar6; + int *piVar7; + ulong uVar8; + long lVar9; + long lVar10; + int iVar11; + ulong uVar12; + long lVar13; + float fVar14; + float fVar15; + float fVar16; + + lVar9 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar9 < 0x44) { + return; + } + if (param_3 == 0) break; + iVar11 = param_1[1]; + param_3 = param_3 + -1; + fVar14 = *(float *)(param_4 + (long)iVar11 * 4); + fVar16 = *(float *)(param_4 + (long)param_2[-1] * 4); + fVar15 = *(float *)(param_4 + (long)param_1[lVar9 >> 3] * 4); + piVar7 = param_2; + piVar5 = param_1; + if (fVar15 <= fVar14) { + if (fVar16 <= fVar14) { + if (fVar15 < fVar16) goto LAB_0034b830; + goto LAB_0034b8ec; + } +LAB_0034b90c: + iVar6 = *param_1; + param_1[1] = iVar6; + *param_1 = iVar11; + iVar11 = param_2[-1]; + } + else if (fVar15 < fVar16) { +LAB_0034b8ec: + iVar11 = *param_1; + *param_1 = param_1[lVar9 >> 3]; + param_1[lVar9 >> 3] = iVar11; + iVar11 = param_2[-1]; + iVar6 = param_1[1]; + fVar14 = *(float *)(param_4 + (long)*param_1 * 4); + } + else { + if (fVar16 <= fVar14) goto LAB_0034b90c; +LAB_0034b830: + iVar11 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = iVar11; + iVar6 = param_1[1]; + fVar14 = *(float *)(param_4 + (long)*param_1 * 4); + } + while( true ) { + piVar5 = piVar5 + 1; + fVar15 = *(float *)(param_4 + (long)iVar6 * 4); + while (fVar15 < fVar14) { + piVar5 = piVar5 + 1; + iVar6 = *piVar5; + fVar15 = *(float *)(param_4 + (long)iVar6 * 4); + } + piVar7 = piVar7 + -1; + fVar15 = *(float *)(param_4 + (long)iVar11 * 4); + while (fVar14 < fVar15) { + piVar7 = piVar7 + -1; + iVar11 = *piVar7; + fVar15 = *(float *)(param_4 + (long)iVar11 * 4); + } + if (piVar7 <= piVar5) break; + *piVar5 = iVar11; + *piVar7 = iVar6; + iVar11 = piVar7[-1]; + iVar6 = piVar5[1]; + fVar14 = *(float *)(param_4 + (long)*param_1 * 4); + } + FUN_0034b7c0(piVar5,param_2,param_3,param_4); + lVar9 = (long)piVar5 - (long)param_1; + param_2 = piVar5; + } + lVar9 = lVar9 >> 2; + lVar13 = lVar9 + -2 >> 1; + piVar5 = param_1 + lVar13; + lVar10 = lVar13; + do { + iVar11 = *piVar5; + lVar1 = lVar10; + piVar7 = piVar5; + while (lVar1 < lVar9 + -1 >> 1) { + lVar4 = lVar1 + 1; + lVar3 = lVar4 * 2; + piVar7 = param_1 + lVar4 * 2; + iVar6 = param_1[lVar4 * 2]; + if (*(float *)(param_4 + (long)iVar6 * 4) < *(float *)(param_4 + (long)piVar7[-1] * 4)) { + lVar3 = lVar3 + -1; + iVar6 = param_1[lVar3]; + piVar7 = param_1 + lVar3; + } + param_1[lVar1] = iVar6; + lVar1 = lVar3; + } + if ((lVar13 == lVar1) && (((uint)lVar9 & 1) != 1)) { + lVar4 = lVar1 + 1; + lVar1 = lVar4 * 2 + -1; + *piVar7 = param_1[lVar4 * 2 + -1]; + piVar7 = param_1 + lVar1; + } + if (lVar10 < lVar1) { + lVar4 = lVar1 + -1 >> 1; + fVar15 = *(float *)(param_4 + (long)iVar11 * 4); + iVar6 = param_1[lVar4]; + fVar14 = *(float *)(param_4 + (long)iVar6 * 4); + while (lVar3 = lVar4, fVar14 < fVar15) { + param_1[lVar1] = iVar6; + piVar7 = param_1 + lVar3; + if (lVar3 <= lVar10) break; + lVar4 = (lVar3 + -1) / 2; + iVar6 = param_1[lVar4]; + lVar1 = lVar3; + fVar14 = *(float *)(param_4 + (long)iVar6 * 4); + } + *piVar7 = iVar11; + if (lVar10 == 0) break; + } + else { + *piVar7 = iVar11; + } + piVar5 = piVar5 + -1; + lVar10 = lVar10 + -1; + } while( true ); +LAB_0034b97c: + param_2 = param_2 + -1; + iVar11 = *param_2; + *param_2 = *param_1; + uVar12 = (long)param_2 - (long)param_1 >> 2; + lVar9 = (long)(uVar12 - 1) / 2; + if (lVar9 < 1) { + uVar2 = uVar12 & 1; + piVar5 = param_1; + if ((uVar12 & 1) == 0) goto LAB_0034b9f4; + } + else { + uVar8 = 0; + do { + lVar10 = uVar8 + 1; + uVar2 = lVar10 * 2; + piVar5 = param_1 + lVar10 * 2; + iVar6 = param_1[lVar10 * 2]; + if (*(float *)(param_4 + (long)iVar6 * 4) < *(float *)(param_4 + (long)piVar5[-1] * 4)) { + uVar2 = uVar2 - 1; + iVar6 = param_1[uVar2]; + piVar5 = param_1 + uVar2; + } + param_1[uVar8] = iVar6; + uVar8 = uVar2; + } while ((long)uVar2 < lVar9); + if ((uVar12 & 1) == 0) { +LAB_0034b9f4: + if (uVar2 == (long)(uVar12 - 2) / 2) { + lVar9 = uVar2 + 1; + uVar2 = lVar9 * 2 - 1; + *piVar5 = param_1[lVar9 * 2 + -1]; + piVar5 = param_1 + uVar2; + } + else if ((long)uVar2 < 1) goto LAB_0034ba0c; + } + uVar12 = (long)(uVar2 - 1) >> 1; + fVar15 = *(float *)(param_4 + (long)iVar11 * 4); + iVar6 = param_1[uVar12]; + fVar14 = *(float *)(param_4 + (long)iVar6 * 4); + while (uVar8 = uVar12, fVar14 < fVar15) { + param_1[uVar2] = iVar6; + piVar5 = param_1 + uVar8; + uVar12 = (long)(uVar8 - 1) >> 1; + if (uVar8 == 0) break; + iVar6 = param_1[uVar12]; + uVar2 = uVar8; + fVar14 = *(float *)(param_4 + (long)iVar6 * 4); + } + } +LAB_0034ba0c: + *piVar5 = iVar11; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_0034b97c; +} + + +================================================================== + +### FUNC 0034bb80 (2356 bytes) name=FUN_0034bb80 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0034bb80(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + uint uVar7; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + int *piVar10; + undefined1 *puVar11; + undefined8 uVar12; + undefined8 uVar13; + uint uVar14; + int iVar15; + long lVar16; + int *piVar17; + ulong uVar18; + undefined1 (*pauVar19) [16]; + int *piVar20; + char *pcVar21; + int iVar22; + ulong uVar23; + ulong uVar24; + undefined4 *puVar25; + ulong uVar26; + size_t sVar27; + undefined1 (*pauVar28) [16]; + int *piVar29; + uint uVar30; + ulong uVar31; + long lVar32; + int *piVar33; + undefined1 (*pauVar34) [16]; + undefined1 (*pauVar35) [16]; + int *piVar36; + uint uVar37; + ulong uVar38; + ulong uVar39; + int *piVar40; + undefined1 *puVar41; + long lVar42; + undefined1 auVar43 [16]; + float fVar44; + undefined1 auVar45 [16]; + undefined8 local_870; + undefined8 local_868; + undefined1 *local_860; + ulong local_858; + undefined1 local_850 [1056]; + int *local_430; + ulong local_428; + int local_420 [264]; + + local_430 = local_420; + local_860 = local_850; + local_858 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_428 = 0x108; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + local_870 = 0; + local_868 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_870,0x14); + uVar13 = s_src_data____dst_data_0046c1b8._8_8_; + uVar12 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar21 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar21 = uVar12; + *(undefined8 *)(pcVar21 + 8) = uVar13; + cv::error(-0xd7,(String *)&local_870, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = float]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_870); + } + if (uVar4 == 0) { + uVar38 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + uVar31 = (ulong)(int)*(uint *)(param_1 + 8); + uVar23 = uVar31; + if (local_858 < uVar31) { + if (local_860 != local_850) { + if (local_860 != (undefined1 *)0x0) { + operator_delete__(local_860); + } + local_860 = local_850; + local_858 = 0x108; + } + uVar23 = local_858; + if (0x108 < uVar31) { + uVar23 = uVar31 << 2; + if (0x1fc0000000000000 < uVar31) { + uVar23 = 0xffffffffffffffff; + } + local_860 = operator_new__(uVar23); + uVar23 = uVar31; + } + } + local_858 = uVar23; + piVar10 = local_430; + puVar11 = local_860; + if (local_428 < uVar31) { + if (local_430 != local_420) { + if (local_430 != (int *)0x0) { + operator_delete__(local_430); + } + local_430 = local_420; + local_428 = 0x108; + } + /* try { // try from 0034c3d0 to 0044c68f has its CatchHandler @ 0034dabc */ + if (uVar31 < 0x109) { + piVar10 = local_420; + puVar11 = local_860; + uVar31 = local_428; + } + else { + uVar23 = uVar31 << 2; + if (0x1fc0000000000000 < uVar31) { + uVar23 = 0xffffffffffffffff; + } + local_430 = operator_new__(uVar23); + piVar10 = local_430; + puVar11 = local_860; + } + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar38 = (ulong)*(uint *)(param_1 + 0xc); + piVar10 = local_430; + puVar11 = local_860; + uVar31 = local_428; + } + local_428 = uVar31; + piVar40 = piVar10; + local_860 = puVar11; + if (0 < iVar5) { + uVar23 = -(uVar38 >> 0x1f) & 0xfffffffc00000000 | uVar38 << 2; + uVar37 = (uint)uVar38; + uVar2 = (int)uVar37 / 2; + uVar39 = (ulong)uVar2; + uVar7 = uVar37 - 1; + uVar31 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar7 << 2; + uVar38 = -(ulong)(uVar37 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 2) << 2; + uVar3 = uVar37; + if ((int)uVar37 < 1) { + uVar3 = 1; + } + uVar24 = -(ulong)(uVar37 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar37 - 3) << 2; + /* catch() { ... } // from try @ 0034b5c0 with catch @ 0034bca0 */ + /* try { // try from 0034bcb0 to 0044bcb3 has its CatchHandler @ 0034b4c4 */ + /* catch() { ... } // from try @ 0034bd0c with catch @ 0034bcb4 + catch() { ... } // from try @ 0034bedc with catch @ 0034bcb4 + catch() { ... } // from try @ 0034bf78 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034c10c with catch @ 0034bcb4 + catch() { ... } // from try @ 0034c874 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034cc14 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034d1c8 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034d63c with catch @ 0034bcb4 + catch() { ... } // from try @ 0034d6f4 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034d768 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034da8c with catch @ 0034bcb4 + catch() { ... } // from try @ 0034db5c with catch @ 0034bcb4 + catch() { ... } // from try @ 0034dbd8 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034dc24 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034dcd0 with catch @ 0034bcb4 + catch() { ... } // from try @ 0034dd2c with catch @ 0034bcb4 + catch() { ... } // from try @ 0034dea4 with catch @ 0034bcb4 */ + lVar42 = 0; + do { + if (uVar4 == 0) { + piVar40 = piVar10; + puVar41 = puVar11; + if (0 < (int)uVar37) { + lVar16 = 0; + lVar32 = **(long **)(param_1 + 0x48); + puVar25 = (undefined4 *)(*(long *)(param_1 + 0x10) + lVar42 * 4); + do { + uVar6 = *puVar25; + puVar25 = (undefined4 *)((long)puVar25 + lVar32); + *(undefined4 *)(puVar11 + lVar16 * 4) = uVar6; + /* try { // try from 0034bd0c to 0044be7b has its CatchHandler @ 0034bcb4 */ + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar37); + uVar14 = -((uint)((ulong)piVar10 >> 2) & 3) & 3; + if (uVar3 < uVar14) { + uVar14 = uVar3; + } +joined_r0x0034c17c: + uVar30 = uVar3; + if (((int)uVar3 < 8) || (uVar26 = 0, uVar30 = uVar14, uVar14 != 0)) { + uVar14 = uVar30; + *piVar40 = 0; + if ((uVar14 == 1) || + ((((piVar40[1] = 1, uVar14 == 2 || (piVar40[2] = 2, uVar14 == 3)) || + (piVar40[3] = 3, uVar14 == 4)) || (piVar40[4] = 4, uVar14 == 5)))) { + uVar26 = (ulong)uVar14; + } + else { + piVar40[5] = 5; + if (uVar14 == 7) { + uVar26 = 7; + piVar40[6] = 6; + } + else { + uVar26 = 6; + } + } + if (uVar14 == uVar3) goto LAB_0034be44; + } + uVar30 = uVar7; + if ((int)uVar37 < 1) { + uVar30 = 0; + } + uVar1 = ((uVar3 - uVar14) - 4 >> 2) + 1; + iVar15 = uVar1 * 4; + if (2 < uVar30 - uVar14) { + iVar22 = (int)uVar26; + uVar30 = 0; + auVar43._0_4_ = iVar22 + (int)_DAT_0034c510; + auVar43._4_4_ = iVar22 + (int)((ulong)_DAT_0034c510 >> 0x20); + auVar43._8_4_ = iVar22 + (int)_UNK_0034c518; + auVar43._12_4_ = iVar22 + (int)((ulong)_UNK_0034c518 >> 0x20); + piVar17 = piVar40 + uVar14; + do { + *(long *)(piVar17 + 2) = auVar43._8_8_; + *(long *)piVar17 = auVar43._0_8_; + uVar30 = uVar30 + 1; + auVar45._0_4_ = auVar43._0_4_ + 4; + auVar45._4_4_ = auVar43._4_4_ + 4; + auVar45._8_4_ = auVar43._8_4_ + 4; + auVar45._12_4_ = auVar43._12_4_ + 4; + piVar17 = piVar17 + 4; + auVar43 = auVar45; + } while (uVar30 < uVar1); + uVar26 = (ulong)(uint)(iVar22 + iVar15); + if (iVar15 == uVar3 - uVar14) goto LAB_0034be44; + } + uVar18 = -(uVar26 >> 0x1f) & 0xfffffffc00000000 | uVar26 << 2; + iVar15 = (int)uVar26; + *(int *)((long)piVar40 + uVar18) = iVar15; + if (iVar15 + 1 < (int)uVar37) { + *(int *)((long)piVar40 + uVar18 + 4) = iVar15 + 1; + if (iVar15 + 2 < (int)uVar37) { + *(int *)((long)piVar40 + uVar18 + 8) = iVar15 + 2; + } + } + } + } + else { + puVar41 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar42 * *(long *)(param_1 + 0x50)); + piVar40 = (int *)(*(long *)(param_2 + 0x10) + lVar42 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar37) { + uVar14 = -((uint)((ulong)piVar40 >> 2) & 3) & 3; + if (uVar3 < uVar14) { + uVar14 = uVar3; + } + goto joined_r0x0034c17c; + } + } +LAB_0034be44: + piVar17 = (int *)((long)piVar40 + uVar23); + if (piVar40 != piVar17) { + FUN_0034b7c0(piVar40,piVar17,(0x3f - LZCOUNT((long)uVar23 >> 2)) * 2,puVar41); + piVar36 = piVar40; + if ((long)uVar23 < 0x44) { + while (piVar33 = piVar36 + 1, piVar17 != piVar33) { + iVar15 = *piVar33; + fVar44 = *(float *)(puVar41 + (long)iVar15 * 4); + if (*(float *)(puVar41 + (long)*piVar40 * 4) <= fVar44) { + iVar22 = *piVar36; + /* try { // try from 0034c10c to 0044c27f has its CatchHandler @ 0034bcb4 */ + piVar36 = piVar33; + /* try { // try from 0034c104 to 0044c107 has its CatchHandler @ 0034dba8 */ + if (fVar44 < *(float *)(puVar41 + (long)iVar22 * 4)) { + do { + piVar29 = piVar36 + -1; + *piVar36 = iVar22; + iVar22 = piVar36[-2]; + piVar36 = piVar29; + } while (fVar44 < *(float *)(puVar41 + (long)iVar22 * 4)); + *piVar29 = iVar15; + piVar36 = piVar33; + } + else { + *piVar33 = iVar15; + } + } + else { + sVar27 = (long)piVar33 - (long)piVar40; + if ((long)sVar27 >> 2 != 0) { + memmove((void *)((long)piVar33 + (4 - sVar27)),piVar40,sVar27); + } + *piVar40 = iVar15; + piVar36 = piVar33; + } + } + } + else { + piVar36 = piVar40 + 0x10; + piVar33 = piVar40 + 1; + do { + iVar15 = *piVar33; + fVar44 = *(float *)(puVar41 + (long)iVar15 * 4); + if (*(float *)(puVar41 + (long)*piVar40 * 4) <= fVar44) { + iVar22 = piVar33[-1]; + piVar29 = piVar33; + if (fVar44 < *(float *)(puVar41 + (long)iVar22 * 4)) { + do { + piVar20 = piVar29 + -1; + *piVar29 = iVar22; + /* try { // try from 0034c2ac to 0044c2cf has its CatchHandler @ 0034dbb8 */ + iVar22 = piVar29[-2]; + piVar29 = piVar20; + } while (fVar44 < *(float *)(puVar41 + (long)iVar22 * 4)); + *piVar20 = iVar15; + } + else { + *piVar33 = iVar15; + } + } + else { + sVar27 = (long)piVar33 - (long)piVar40; + if ((long)sVar27 >> 2 != 0) { + memmove((void *)((long)piVar33 + (4 - sVar27)),piVar40,sVar27); + /* try { // try from 0034c284 to 0044c2a7 has its CatchHandler @ 0034dbc0 */ + } + *piVar40 = iVar15; + } + piVar33 = piVar33 + 1; + } while (piVar36 != piVar33); + if (piVar17 != piVar36) { + iVar15 = piVar40[0xf]; + iVar22 = *piVar36; + fVar44 = *(float *)(puVar41 + (long)iVar22 * 4); + piVar33 = piVar40 + 0xf; + if (fVar44 < *(float *)(puVar41 + (long)iVar15 * 4)) goto LAB_0034c1fc; + do { + *piVar36 = iVar22; + while( true ) { + piVar36 = piVar36 + 1; + if (piVar17 == piVar36) goto LAB_0034beb4; + iVar15 = piVar36[-1]; + iVar22 = *piVar36; + fVar44 = *(float *)(puVar41 + (long)iVar22 * 4); + piVar33 = piVar36 + -1; + if (*(float *)(puVar41 + (long)iVar15 * 4) <= fVar44) break; +LAB_0034c1fc: + do { + piVar29 = piVar33; + piVar29[1] = iVar15; + iVar15 = piVar29[-1]; + piVar33 = piVar29 + -1; + } while (fVar44 < *(float *)(puVar41 + (long)iVar15 * 4)); + *piVar29 = iVar22; + } + } while( true ); + } + } + } +LAB_0034beb4: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(uVar23 + uVar39 * -4) < (long)(uVar39 * 4) && 0 < (long)uVar23) { + lVar16 = 0; + piVar17 = (int *)((long)piVar40 + uVar31); + do { + iVar15 = piVar40[lVar16]; + piVar40[lVar16] = *piVar17; + lVar16 = lVar16 + 1; + *piVar17 = iVar15; + piVar17 = piVar17 + -1; + } while ((int)lVar16 < (int)uVar2); + } + else { + /* try { // try from 0034bed4 to 0044bed7 has its CatchHandler @ 0034dcc0 */ + uVar14 = -((uint)((ulong)piVar40 >> 2) & 3) & 3; + /* try { // try from 0034bedc to 0044bf43 has its CatchHandler @ 0034bcb4 */ + uVar26 = uVar39; + if (uVar14 < uVar2) { + uVar26 = (ulong)uVar14; + } + iVar15 = (int)uVar26; + uVar18 = uVar26; + if (iVar15 != 0) { + iVar22 = *piVar40; + *piVar40 = *(int *)((long)piVar40 + uVar31); + *(int *)((long)piVar40 + uVar31) = iVar22; + if (iVar15 != 1) { + iVar22 = piVar40[1]; + piVar40[1] = *(int *)((long)piVar40 + uVar38); + *(int *)((long)piVar40 + uVar38) = iVar22; + if (iVar15 == 3) { + iVar22 = piVar40[2]; + piVar40[2] = *(int *)((long)piVar40 + uVar24); + *(int *)((long)piVar40 + uVar24) = iVar22; + } + else { + uVar18 = 2; + } + } + } + uVar14 = ((uVar2 - iVar15) - 4 >> 2) + 1; + pauVar28 = (undefined1 (*) [16])((long)piVar40 + (uVar23 - 0xc) + ~uVar26 * 4); + uVar30 = 0; + /* try { // try from 0034bf70 to 0044bf73 has its CatchHandler @ 0034dbc8 */ + iVar22 = uVar14 * 4; + pauVar19 = (undefined1 (*) [16])(piVar40 + uVar26); + pauVar34 = pauVar28; + pauVar35 = (undefined1 (*) [16])(piVar40 + uVar26); + do { + auVar43 = *pauVar28; + /* try { // try from 0034bf78 to 0044c0bb has its CatchHandler @ 0034bcb4 */ + uVar30 = uVar30 + 1; + pauVar28 = pauVar28 + -1; + auVar8._8_8_ = _UNK_0034c528; + auVar8._0_8_ = _DAT_0034c520; + auVar45 = a64_TBL(ZEXT816(0),auVar43,auVar8); + auVar9._8_8_ = _UNK_0034c528; + auVar9._0_8_ = _DAT_0034c520; + auVar43 = a64_TBL(ZEXT816(0),*pauVar19,auVar9); + *(long *)((long)*pauVar35 + 8) = auVar45._8_8_; + *(long *)*pauVar35 = auVar45._0_8_; + *(long *)(*pauVar34 + 8) = auVar43._8_8_; + *(long *)*pauVar34 = auVar43._0_8_; + pauVar34 = pauVar34 + -1; + pauVar19 = pauVar19 + 1; + pauVar35 = pauVar35 + 1; + } while (uVar30 < uVar14); + uVar14 = iVar22 + (int)uVar18; + if (iVar22 != uVar2 - iVar15) { + uVar26 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + uVar6 = *(undefined4 *)((long)piVar40 + uVar26); + uVar18 = -(ulong)(uVar7 - uVar14 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar7 - uVar14) << 2; + *(undefined4 *)((long)piVar40 + uVar26) = *(undefined4 *)((long)piVar40 + uVar18); + *(undefined4 *)((long)piVar40 + uVar18) = uVar6; + if ((int)(uVar14 + 1) < (int)uVar2) { + uVar30 = uVar7 - (uVar14 + 1); + uVar18 = -(ulong)(uVar30 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar30 << 2; + uVar6 = *(undefined4 *)((long)piVar40 + uVar26 + 4); + *(undefined4 *)((long)piVar40 + uVar26 + 4) = *(undefined4 *)((long)piVar40 + uVar18); + *(undefined4 *)((long)piVar40 + uVar18) = uVar6; + if ((int)(uVar14 + 2) < (int)uVar2) { + uVar14 = uVar7 - (uVar14 + 2); + uVar6 = *(undefined4 *)((long)piVar40 + uVar26 + 8); + uVar18 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + *(undefined4 *)((long)piVar40 + uVar26 + 8) = + *(undefined4 *)((long)piVar40 + uVar18); + *(undefined4 *)((long)piVar40 + uVar18) = uVar6; + } + } + } + } + } + if ((uVar4 == 0) && (0 < (int)uVar37)) { + lVar16 = 0; + lVar32 = **(long **)(param_2 + 0x48); + piVar17 = (int *)(*(long *)(param_2 + 0x10) + lVar42 * 4); + do { + piVar36 = piVar40 + lVar16; + lVar16 = lVar16 + 1; + *piVar17 = *piVar36; + piVar17 = (int *)((long)piVar17 + lVar32); + } while ((int)lVar16 < (int)uVar37); + } + lVar42 = lVar42 + 1; + piVar40 = local_430; + } while ((int)lVar42 < iVar5); + } + if ((piVar40 != local_420) && (piVar40 != (int *)0x0)) { + operator_delete__(piVar40); + } + if ((local_860 != local_850) && (local_860 != (undefined1 *)0x0)) { + operator_delete__(local_860); + } + return; +} + + +================================================================== + +### FUNC 0034c530 (948 bytes) name=FUN_0034c530 + +void FUN_0034c530(int *param_1,int *param_2,long param_3,long param_4) + +{ + long lVar1; + ulong uVar2; + long lVar3; + long lVar4; + int *piVar5; + int iVar6; + int *piVar7; + ulong uVar8; + long lVar9; + long lVar10; + int iVar11; + ulong uVar12; + long lVar13; + double dVar14; + double dVar15; + double dVar16; + + lVar9 = (long)param_2 - (long)param_1; + while( true ) { + if (lVar9 < 0x44) { + return; + } + if (param_3 == 0) break; + iVar11 = param_1[1]; + param_3 = param_3 + -1; + dVar14 = *(double *)(param_4 + (long)iVar11 * 8); + dVar16 = *(double *)(param_4 + (long)param_2[-1] * 8); + dVar15 = *(double *)(param_4 + (long)param_1[lVar9 >> 3] * 8); + piVar7 = param_2; + piVar5 = param_1; + if (dVar15 <= dVar14) { + if (dVar16 <= dVar14) { + if (dVar15 < dVar16) goto LAB_0034c5a0; + goto LAB_0034c65c; + } +LAB_0034c67c: + iVar6 = *param_1; + param_1[1] = iVar6; + *param_1 = iVar11; + iVar11 = param_2[-1]; + } + else if (dVar15 < dVar16) { +LAB_0034c65c: + iVar11 = *param_1; + *param_1 = param_1[lVar9 >> 3]; + param_1[lVar9 >> 3] = iVar11; + iVar11 = param_2[-1]; + iVar6 = param_1[1]; + dVar14 = *(double *)(param_4 + (long)*param_1 * 8); + } + else { + if (dVar16 <= dVar14) goto LAB_0034c67c; +LAB_0034c5a0: + iVar11 = *param_1; + *param_1 = param_2[-1]; + param_2[-1] = iVar11; + iVar6 = param_1[1]; + dVar14 = *(double *)(param_4 + (long)*param_1 * 8); + } + while( true ) { + piVar5 = piVar5 + 1; + dVar15 = *(double *)(param_4 + (long)iVar6 * 8); + while (dVar15 < dVar14) { + piVar5 = piVar5 + 1; + iVar6 = *piVar5; + dVar15 = *(double *)(param_4 + (long)iVar6 * 8); + } + piVar7 = piVar7 + -1; + dVar15 = *(double *)(param_4 + (long)iVar11 * 8); + while (dVar14 < dVar15) { + piVar7 = piVar7 + -1; + iVar11 = *piVar7; + dVar15 = *(double *)(param_4 + (long)iVar11 * 8); + } + if (piVar7 <= piVar5) break; + *piVar5 = iVar11; + *piVar7 = iVar6; + iVar11 = piVar7[-1]; + iVar6 = piVar5[1]; + dVar14 = *(double *)(param_4 + (long)*param_1 * 8); + } + FUN_0034c530(piVar5,param_2,param_3,param_4); + lVar9 = (long)piVar5 - (long)param_1; + param_2 = piVar5; + } + lVar9 = lVar9 >> 2; + lVar13 = lVar9 + -2 >> 1; + piVar5 = param_1 + lVar13; + lVar10 = lVar13; + do { + /* try { // try from 0034c7c0 to 0044c7c3 has its CatchHandler @ 0034dbb8 */ + iVar11 = *piVar5; + lVar1 = lVar10; + piVar7 = piVar5; + while (lVar1 < lVar9 + -1 >> 1) { + lVar4 = lVar1 + 1; + lVar3 = lVar4 * 2; + piVar7 = param_1 + lVar4 * 2; + iVar6 = param_1[lVar4 * 2]; + if (*(double *)(param_4 + (long)iVar6 * 8) < *(double *)(param_4 + (long)piVar7[-1] * 8)) { + lVar3 = lVar3 + -1; + iVar6 = param_1[lVar3]; + piVar7 = param_1 + lVar3; + } + param_1[lVar1] = iVar6; + lVar1 = lVar3; + } + if ((lVar13 == lVar1) && (((uint)lVar9 & 1) != 1)) { + lVar4 = lVar1 + 1; + lVar1 = lVar4 * 2 + -1; + *piVar7 = param_1[lVar4 * 2 + -1]; + piVar7 = param_1 + lVar1; + } + if (lVar10 < lVar1) { + lVar4 = lVar1 + -1 >> 1; + dVar15 = *(double *)(param_4 + (long)iVar11 * 8); + iVar6 = param_1[lVar4]; + dVar14 = *(double *)(param_4 + (long)iVar6 * 8); + while (lVar3 = lVar4, dVar14 < dVar15) { + param_1[lVar1] = iVar6; + piVar7 = param_1 + lVar3; + /* try { // try from 0034c844 to 0044c847 has its CatchHandler @ 0034dbc0 */ + if (lVar3 <= lVar10) break; + lVar4 = (lVar3 + -1) / 2; + iVar6 = param_1[lVar4]; + lVar1 = lVar3; + dVar14 = *(double *)(param_4 + (long)iVar6 * 8); + } + *piVar7 = iVar11; + if (lVar10 == 0) break; + } + else { + *piVar7 = iVar11; + } + piVar5 = piVar5 + -1; + lVar10 = lVar10 + -1; + } while( true ); +LAB_0034c6ec: + param_2 = param_2 + -1; + iVar11 = *param_2; + *param_2 = *param_1; + uVar12 = (long)param_2 - (long)param_1 >> 2; + lVar9 = (long)(uVar12 - 1) / 2; + if (lVar9 < 1) { + uVar2 = uVar12 & 1; + piVar5 = param_1; + if ((uVar12 & 1) == 0) goto LAB_0034c764; + } + else { + uVar8 = 0; + do { + lVar10 = uVar8 + 1; + uVar2 = lVar10 * 2; + piVar5 = param_1 + lVar10 * 2; + iVar6 = param_1[lVar10 * 2]; + /* try { // try from 0034c73c to 0044c73f has its CatchHandler @ 0034dcb8 */ + if (*(double *)(param_4 + (long)iVar6 * 8) < *(double *)(param_4 + (long)piVar5[-1] * 8)) { + uVar2 = uVar2 - 1; + iVar6 = param_1[uVar2]; + piVar5 = param_1 + uVar2; + } + param_1[uVar8] = iVar6; + uVar8 = uVar2; + } while ((long)uVar2 < lVar9); + if ((uVar12 & 1) == 0) { +LAB_0034c764: + if (uVar2 == (long)(uVar12 - 2) / 2) { + lVar9 = uVar2 + 1; + /* try { // try from 0034c874 to 0044cab7 has its CatchHandler @ 0034bcb4 */ + uVar2 = lVar9 * 2 - 1; + *piVar5 = param_1[lVar9 * 2 + -1]; + piVar5 = param_1 + uVar2; + } + else if ((long)uVar2 < 1) goto LAB_0034c77c; + } + uVar12 = (long)(uVar2 - 1) >> 1; + dVar15 = *(double *)(param_4 + (long)iVar11 * 8); + iVar6 = param_1[uVar12]; + dVar14 = *(double *)(param_4 + (long)iVar6 * 8); + while (uVar8 = uVar12, dVar14 < dVar15) { + param_1[uVar2] = iVar6; + piVar5 = param_1 + uVar8; + uVar12 = (long)(uVar8 - 1) >> 1; + if (uVar8 == 0) break; + iVar6 = param_1[uVar12]; + uVar2 = uVar8; + dVar14 = *(double *)(param_4 + (long)iVar6 * 8); + } + } +LAB_0034c77c: + *piVar5 = iVar11; + if ((long)param_2 - (long)param_1 < 8) { + return; + } + goto LAB_0034c6ec; +} + + +================================================================== + +### FUNC 0034c8f0 (2360 bytes) name=FUN_0034c8f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void FUN_0034c8f0(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + uint uVar7; + undefined1 auVar8 [16]; + undefined1 auVar9 [16]; + int *piVar10; + undefined1 *puVar11; + undefined1 *puVar12; + undefined8 uVar13; + uint uVar14; + int iVar15; + long lVar16; + int *piVar17; + ulong uVar18; + undefined1 (*pauVar19) [16]; + int *piVar20; + char *pcVar21; + int iVar22; + ulong uVar23; + ulong uVar24; + undefined8 *puVar25; + ulong uVar26; + undefined8 uVar27; + size_t sVar28; + undefined1 (*pauVar29) [16]; + int *piVar30; + uint uVar31; + ulong uVar32; + long lVar33; + int *piVar34; + undefined1 (*pauVar35) [16]; + undefined1 (*pauVar36) [16]; + int *piVar37; + uint uVar38; + ulong uVar39; + ulong uVar40; + int *piVar41; + undefined1 *puVar42; + long lVar43; + undefined1 auVar44 [16]; + double dVar45; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined8 local_890; + undefined8 local_888; + int *local_880; + ulong local_878; + int local_870 [264]; + undefined1 *local_450; + ulong local_448; + undefined1 local_440 [1088]; + + local_880 = local_870; + local_450 = local_440; + local_878 = 0x108; + uVar4 = param_3 & 1 ^ 1; + local_448 = 0x88; + if (*(long *)(param_1 + 0x10) == *(long *)(param_2 + 0x10)) { + /* try { // try from 0034d1c8 to 0044d1e3 has its CatchHandler @ 0034bcb4 */ + local_890 = 0; + local_888 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_890,0x14); + uVar13 = s_src_data____dst_data_0046c1b8._8_8_; + uVar27 = s_src_data____dst_data_0046c1b8._0_8_; + *(undefined4 *)(pcVar21 + 0x10) = s_src_data____dst_data_0046c1b8._16_4_; + *(undefined8 *)pcVar21 = uVar27; + *(undefined8 *)(pcVar21 + 8) = uVar13; + cv::error(-0xd7,(String *)&local_890, + "void cv::sortIdx_(const cv::Mat&, cv::Mat&, int) [with T = double]", + "/builds/master_pack-android/opencv/modules/core/src/matrix.cpp",0xf70); + cv::String::deallocate((String *)&local_890); + } + if (uVar4 == 0) { + uVar39 = (ulong)*(uint *)(param_1 + 8); + iVar5 = *(int *)(param_1 + 0xc); + uVar32 = (ulong)(int)*(uint *)(param_1 + 8); + uVar23 = uVar32; + if (local_448 < uVar32) { + if (local_450 != local_440) { + if (local_450 != (undefined1 *)0x0) { + operator_delete__(local_450); + } + local_450 = local_440; + local_448 = 0x88; + } + uVar23 = local_448; + if (0x88 < uVar32) { + uVar23 = uVar32 << 3; + if (0xfe0000000000000 < uVar32) { + uVar23 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar23); + uVar23 = uVar32; + } + } + local_448 = uVar23; + piVar10 = local_880; + puVar11 = local_450; + if (local_878 < uVar32) { + if (local_880 != local_870) { + if (local_880 != (int *)0x0) { + operator_delete__(local_880); + } + local_880 = local_870; + local_878 = 0x108; + } + if (uVar32 < 0x109) { + piVar10 = local_870; + uVar32 = local_878; + puVar11 = local_450; + } + else { + uVar23 = uVar32 << 2; + if (0x1fc0000000000000 < uVar32) { + uVar23 = 0xffffffffffffffff; + } + local_880 = operator_new__(uVar23); + piVar10 = local_880; + puVar11 = local_450; + } + } + } + else { + iVar5 = *(int *)(param_1 + 8); + uVar39 = (ulong)*(uint *)(param_1 + 0xc); + piVar10 = local_880; + uVar32 = local_878; + puVar11 = local_450; + } + local_878 = uVar32; + piVar41 = piVar10; + local_450 = puVar11; + if (0 < iVar5) { + uVar23 = -(uVar39 >> 0x1f) & 0xfffffffc00000000 | uVar39 << 2; + uVar38 = (uint)uVar39; + uVar2 = (int)uVar38 / 2; + uVar40 = (ulong)uVar2; + uVar7 = uVar38 - 1; + uVar32 = -(ulong)(uVar7 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar7 << 2; + uVar39 = -(ulong)(uVar38 - 2 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar38 - 2) << 2; + uVar3 = uVar38; + if ((int)uVar38 < 1) { + uVar3 = 1; + } + uVar24 = -(ulong)(uVar38 - 3 >> 0x1f) & 0xfffffffc00000000 | (ulong)(uVar38 - 3) << 2; + lVar43 = 0; + do { + if (uVar4 == 0) { + piVar41 = piVar10; + puVar42 = puVar11; + if (0 < (int)uVar38) { + lVar16 = 0; + lVar33 = **(long **)(param_1 + 0x48); + puVar25 = (undefined8 *)(*(long *)(param_1 + 0x10) + lVar43 * 8); + do { + uVar27 = *puVar25; + puVar25 = (undefined8 *)((long)puVar25 + lVar33); + *(undefined8 *)(puVar11 + lVar16 * 8) = uVar27; + lVar16 = lVar16 + 1; + } while ((int)lVar16 < (int)uVar38); + uVar14 = -((uint)((ulong)piVar10 >> 2) & 3) & 3; + if (uVar3 < uVar14) { + uVar14 = uVar3; + } +joined_r0x0034cef0: + uVar31 = uVar3; + if (((int)uVar3 < 8) || (uVar26 = 0, uVar31 = uVar14, uVar14 != 0)) { + uVar14 = uVar31; + *piVar41 = 0; + /* try { // try from 0034cabc to 0044cadf has its CatchHandler @ 0034dc14 */ + /* try { // try from 0034cae4 to 0044cb07 has its CatchHandler @ 0034db60 */ + if ((uVar14 == 1) || + ((((piVar41[1] = 1, uVar14 == 2 || (piVar41[2] = 2, uVar14 == 3)) || + (piVar41[3] = 3, uVar14 == 4)) || (piVar41[4] = 4, uVar14 == 5)))) { + uVar26 = (ulong)uVar14; + } + else { + piVar41[5] = 5; + if (uVar14 == 7) { + uVar26 = 7; + piVar41[6] = 6; + } + else { + uVar26 = 6; + } + } + if (uVar14 == uVar3) goto LAB_0034cbb8; + } + uVar31 = uVar7; + if ((int)uVar38 < 1) { + uVar31 = 0; + } + uVar1 = ((uVar3 - uVar14) - 4 >> 2) + 1; + iVar15 = uVar1 * 4; + if (2 < uVar31 - uVar14) { + iVar22 = (int)uVar26; + uVar31 = 0; + auVar44._0_4_ = iVar22 + (int)_DAT_0034d280; + auVar44._4_4_ = iVar22 + (int)((ulong)_DAT_0034d280 >> 0x20); + auVar44._8_4_ = iVar22 + (int)_UNK_0034d288; + auVar44._12_4_ = iVar22 + (int)((ulong)_UNK_0034d288 >> 0x20); + piVar17 = piVar41 + uVar14; + do { + *(long *)(piVar17 + 2) = auVar44._8_8_; + *(long *)piVar17 = auVar44._0_8_; + uVar31 = uVar31 + 1; + auVar46._0_4_ = auVar44._0_4_ + 4; + auVar46._4_4_ = auVar44._4_4_ + 4; + auVar46._8_4_ = auVar44._8_4_ + 4; + auVar46._12_4_ = auVar44._12_4_ + 4; + piVar17 = piVar17 + 4; + auVar44 = auVar46; + } while (uVar31 < uVar1); + uVar26 = (ulong)(uint)(iVar22 + iVar15); + if (iVar15 == uVar3 - uVar14) goto LAB_0034cbb8; + } + uVar18 = -(uVar26 >> 0x1f) & 0xfffffffc00000000 | uVar26 << 2; + iVar15 = (int)uVar26; + *(int *)((long)piVar41 + uVar18) = iVar15; + if (iVar15 + 1 < (int)uVar38) { + *(int *)((long)piVar41 + uVar18 + 4) = iVar15 + 1; + if (iVar15 + 2 < (int)uVar38) { + *(int *)((long)piVar41 + uVar18 + 8) = iVar15 + 2; + } + } + } + } + else { + puVar42 = (undefined1 *)(*(long *)(param_1 + 0x10) + lVar43 * *(long *)(param_1 + 0x50)); + piVar41 = (int *)(*(long *)(param_2 + 0x10) + lVar43 * **(long **)(param_2 + 0x48)); + if (0 < (int)uVar38) { + uVar14 = -((uint)((ulong)piVar41 >> 2) & 3) & 3; + if (uVar3 < uVar14) { + uVar14 = uVar3; + } + goto joined_r0x0034cef0; + } + } +LAB_0034cbb8: + piVar17 = (int *)((long)piVar41 + uVar23); + if (piVar41 != piVar17) { + /* try { // try from 0034cbcc to 0044cbcf has its CatchHandler @ 0034dbec */ + /* try { // try from 0034cbd4 to 0044cbeb has its CatchHandler @ 0034db60 */ + FUN_0034c530(piVar41,piVar17,(0x3f - LZCOUNT((long)uVar23 >> 2)) * 2,puVar42); + puVar12 = local_450; + uVar26 = local_448; + piVar37 = piVar41; + if ((long)uVar23 < 0x44) { + /* try { // try from 0034cbf0 to 0044cc0b has its CatchHandler @ 0034dc14 */ + while (piVar34 = piVar37 + 1, local_450 = puVar12, local_448 = uVar26, piVar17 != piVar34) + { + iVar15 = *piVar34; + dVar45 = *(double *)(puVar42 + (long)iVar15 * 8); + if (*(double *)(puVar42 + (long)*piVar41 * 8) <= dVar45) { + iVar22 = *piVar37; + piVar37 = piVar34; + if (dVar45 < *(double *)(puVar42 + (long)iVar22 * 8)) { + do { + piVar30 = piVar37 + -1; + *piVar37 = iVar22; + iVar22 = piVar37[-2]; + piVar37 = piVar30; + } while (dVar45 < *(double *)(puVar42 + (long)iVar22 * 8)); + *piVar30 = iVar15; + piVar37 = piVar34; + } + else { + *piVar34 = iVar15; + } + } + else { + sVar28 = (long)piVar34 - (long)piVar41; + /* try { // try from 0034cc14 to 0044ccab has its CatchHandler @ 0034bcb4 */ + if ((long)sVar28 >> 2 != 0) { + memmove((void *)((long)piVar34 + (4 - sVar28)),piVar41,sVar28); + } + *piVar41 = iVar15; + puVar12 = local_450; + uVar26 = local_448; + piVar37 = piVar34; + } + } + } + else { + piVar37 = piVar41 + 0x10; + piVar34 = piVar41 + 1; + do { + iVar15 = *piVar34; + dVar45 = *(double *)(puVar42 + (long)iVar15 * 8); + if (*(double *)(puVar42 + (long)*piVar41 * 8) <= dVar45) { + iVar22 = piVar34[-1]; + piVar30 = piVar34; + if (dVar45 < *(double *)(puVar42 + (long)iVar22 * 8)) { + do { + piVar20 = piVar30 + -1; + *piVar30 = iVar22; + iVar22 = piVar30[-2]; + piVar30 = piVar20; + } while (dVar45 < *(double *)(puVar42 + (long)iVar22 * 8)); + *piVar20 = iVar15; + } + else { + *piVar34 = iVar15; + } + } + else { + sVar28 = (long)piVar34 - (long)piVar41; + if ((long)sVar28 >> 2 != 0) { + memmove((void *)((long)piVar34 + (4 - sVar28)),piVar41,sVar28); + } + *piVar41 = iVar15; + } + piVar34 = piVar34 + 1; + } while (piVar37 != piVar34); + if (piVar17 != piVar37) { + iVar15 = piVar41[0xf]; + iVar22 = *piVar37; + auVar47._0_8_ = *(double *)(puVar42 + (long)iVar22 * 8); + auVar47._8_8_ = 0; + piVar34 = piVar41 + 0xf; + if (auVar47._0_8_ < *(double *)(puVar42 + (long)iVar15 * 8)) goto LAB_0034cf70; + do { + *piVar37 = iVar22; + while( true ) { + piVar37 = piVar37 + 1; + if (piVar17 == piVar37) goto LAB_0034cc28; + iVar15 = piVar37[-1]; + iVar22 = *piVar37; + auVar47._0_8_ = *(double *)(puVar42 + (long)iVar22 * 8); + auVar47._8_8_ = 0; + piVar34 = piVar37 + -1; + if (*(double *)(puVar42 + (long)iVar15 * 8) <= auVar47._0_8_) break; +LAB_0034cf70: + do { + piVar30 = piVar34; + piVar30[1] = iVar15; + iVar15 = piVar30[-1]; + piVar34 = piVar30 + -1; + } while (auVar47._0_8_ < *(double *)(puVar42 + (long)iVar15 * 8)); + *piVar30 = iVar22; + } + } while( true ); + } + } + } +LAB_0034cc28: + if (((param_3 & 0x10) != 0) && (0 < (int)uVar2)) { + if (uVar2 < 9 || (long)(uVar23 + uVar40 * -4) < (long)(uVar40 * 4) && 0 < (long)uVar23) { + lVar16 = 0; + piVar17 = (int *)((long)piVar41 + uVar32); + do { + iVar15 = piVar41[lVar16]; + piVar41[lVar16] = *piVar17; + lVar16 = lVar16 + 1; + *piVar17 = iVar15; + piVar17 = piVar17 + -1; + } while ((int)lVar16 < (int)uVar2); + } + else { + uVar14 = -((uint)((ulong)piVar41 >> 2) & 3) & 3; + uVar26 = uVar40; + if (uVar14 < uVar2) { + uVar26 = (ulong)uVar14; + } + iVar15 = (int)uVar26; + uVar18 = uVar26; + if (iVar15 != 0) { + iVar22 = *piVar41; + *piVar41 = *(int *)((long)piVar41 + uVar32); + *(int *)((long)piVar41 + uVar32) = iVar22; + if (iVar15 != 1) { + iVar22 = piVar41[1]; + piVar41[1] = *(int *)((long)piVar41 + uVar39); + *(int *)((long)piVar41 + uVar39) = iVar22; + if (iVar15 == 3) { + iVar22 = piVar41[2]; + piVar41[2] = *(int *)((long)piVar41 + uVar24); + *(int *)((long)piVar41 + uVar24) = iVar22; + } + else { + uVar18 = 2; + } + } + } + uVar14 = ((uVar2 - iVar15) - 4 >> 2) + 1; + pauVar29 = (undefined1 (*) [16])((long)piVar41 + (uVar23 - 0xc) + ~uVar26 * 4); + uVar31 = 0; + iVar22 = uVar14 * 4; + pauVar19 = (undefined1 (*) [16])(piVar41 + uVar26); + pauVar35 = pauVar29; + pauVar36 = (undefined1 (*) [16])(piVar41 + uVar26); + do { + auVar44 = *pauVar29; + uVar31 = uVar31 + 1; + pauVar29 = pauVar29 + -1; + auVar8._8_8_ = _UNK_0034d298; + auVar8._0_8_ = _DAT_0034d290; + auVar46 = a64_TBL(ZEXT816(0),auVar44,auVar8); + auVar9._8_8_ = _UNK_0034d298; + auVar9._0_8_ = _DAT_0034d290; + auVar44 = a64_TBL(ZEXT816(0),*pauVar19,auVar9); + *(long *)((long)*pauVar36 + 8) = auVar46._8_8_; + *(long *)*pauVar36 = auVar46._0_8_; + *(long *)(*pauVar35 + 8) = auVar44._8_8_; + *(long *)*pauVar35 = auVar44._0_8_; + pauVar35 = pauVar35 + -1; + pauVar19 = pauVar19 + 1; + pauVar36 = pauVar36 + 1; + } while (uVar31 < uVar14); + uVar14 = iVar22 + (int)uVar18; + if (iVar22 != uVar2 - iVar15) { + uVar26 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + uVar6 = *(undefined4 *)((long)piVar41 + uVar26); + uVar18 = -(ulong)(uVar7 - uVar14 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar7 - uVar14) << 2; + *(undefined4 *)((long)piVar41 + uVar26) = *(undefined4 *)((long)piVar41 + uVar18); + *(undefined4 *)((long)piVar41 + uVar18) = uVar6; + if ((int)(uVar14 + 1) < (int)uVar2) { + uVar31 = uVar7 - (uVar14 + 1); + uVar18 = -(ulong)(uVar31 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar31 << 2; + uVar6 = *(undefined4 *)((long)piVar41 + uVar26 + 4); + *(undefined4 *)((long)piVar41 + uVar26 + 4) = *(undefined4 *)((long)piVar41 + uVar18); + *(undefined4 *)((long)piVar41 + uVar18) = uVar6; + if ((int)(uVar14 + 2) < (int)uVar2) { + /* try { // try from 0034cd78 to 0044d1b3 has its CatchHandler @ 0034dabc */ + uVar14 = uVar7 - (uVar14 + 2); + uVar6 = *(undefined4 *)((long)piVar41 + uVar26 + 8); + uVar18 = -(ulong)(uVar14 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar14 << 2; + *(undefined4 *)((long)piVar41 + uVar26 + 8) = + *(undefined4 *)((long)piVar41 + uVar18); + *(undefined4 *)((long)piVar41 + uVar18) = uVar6; + } + } + } + } + } + if ((uVar4 == 0) && (0 < (int)uVar38)) { + lVar16 = 0; + lVar33 = **(long **)(param_2 + 0x48); + piVar17 = (int *)(*(long *)(param_2 + 0x10) + lVar43 * 4); + do { + piVar37 = piVar41 + lVar16; + lVar16 = lVar16 + 1; + *piVar17 = *piVar37; + piVar17 = (int *)((long)piVar17 + lVar33); + } while ((int)lVar16 < (int)uVar38); + } + lVar43 = lVar43 + 1; + piVar41 = local_880; + } while ((int)lVar43 < iVar5); + } + if ((piVar41 != local_870) && (piVar41 != (int *)0x0)) { + operator_delete__(piVar41); + } + if ((local_450 != local_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + return; +} + + +================================================================== + +### FUNC 0034d2a0 (8 bytes) name=FUN_0034d2a0 + +undefined4 FUN_0034d2a0(undefined8 param_1,undefined4 param_2) + +{ + return param_2; +} + + +================================================================== + +### FUNC 0034d2a8 (8 bytes) name=FUN_0034d2a8 + +undefined8 FUN_0034d2a8(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x18); +} + + +================================================================== + +### FUNC 0034d2b0 (8 bytes) name=FUN_0034d2b0 + +undefined8 FUN_0034d2b0(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x20); +} + + +================================================================== + +### FUNC 0034d2b8 (4 bytes) name=~String + +/* cv::String::~String() */ + +void __thiscall cv::String::~String(String *this) + +{ + (*(code *)PTR_deallocate_005015e8)(); + return; +} + + +================================================================== + +### FUNC 0034d2bc (208 bytes) name=FUN_0034d2bc + +undefined8 FUN_0034d2bc(long param_1) + +{ + char cVar1; + undefined8 uVar2; + long lVar3; + + cVar1 = DAT_00532040; + if (DAT_00532998 == 0) { + if (DAT_00532040 != '\0') { + return 0; + } + DAT_00532998 = dlopen("libOpenCL.so",1); + if ((DAT_00532998 == 0) && (DAT_00532998 = dlopen("libCL.so",1), DAT_00532998 == 0)) { + DAT_00532040 = 1; + DAT_00532970 = cVar1; + return 0; + } + DAT_00532040 = '\x01'; + lVar3 = dlsym(DAT_00532998,"clEnqueueReadBufferRect"); + DAT_00532970 = lVar3 != 0; + if (DAT_00532998 == 0) { + return 0; + } + } + if (param_1 == 0) { + return 0; + } + uVar2 = dlsym(DAT_00532998,param_1); + return uVar2; +} + + +================================================================== + +### FUNC 0034d38c (100 bytes) name=FUN_0034d38c + +undefined8 FUN_0034d38c(undefined4 param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined8 uVar1; + + if ((DAT_005320b8 == (code *)0x0) && + (DAT_005320b8 = (code *)FUN_0034d2bc("clGetPlatformIDs"), DAT_005320b8 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_005320b8)(param_1,param_2,param_3); + return uVar1; +} + + +================================================================== + +### FUNC 0034d3f0 (116 bytes) name=FUN_0034d3f0 + +undefined8 +FUN_0034d3f0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5) + +{ + undefined8 uVar1; + + if ((DAT_005320b0 == (code *)0x0) && + (DAT_005320b0 = (code *)FUN_0034d2bc("clGetPlatformInfo"), DAT_005320b0 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_005320b0)(param_1,param_2,param_3,param_4,param_5); + return uVar1; +} + + +================================================================== + +### FUNC 0034d464 (116 bytes) name=FUN_0034d464 + +undefined8 +FUN_0034d464(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5) + +{ + undefined8 uVar1; + + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_00532990)(param_1,param_2,param_3,param_4,param_5); + return uVar1; +} + + +================================================================== + +### FUNC 0034d4d8 (84 bytes) name=FUN_0034d4d8 + +undefined8 FUN_0034d4d8(undefined8 param_1) + +{ + undefined8 uVar1; + + if ((DAT_00532988 == (code *)0x0) && + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_00532988)(param_1); + return uVar1; +} + + +================================================================== + +### FUNC 0034d52c (84 bytes) name=FUN_0034d52c + +undefined8 FUN_0034d52c(undefined8 param_1) + +{ + undefined8 uVar1; + + if ((DAT_00532980 == (code *)0x0) && + (DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"), DAT_00532980 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_00532980)(param_1); + /* try { // try from 0034d554 to 0044d557 has its CatchHandler @ 0034dbc0 */ + return uVar1; +} + + +================================================================== + +### FUNC 0034d580 (108 bytes) name=FUN_0034d580 + +undefined8 FUN_0034d580(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 uVar1; + + /* try { // try from 0034d5b8 to 0044d5bb has its CatchHandler @ 0034dcb8 */ + /* try { // try from 0034d5c4 to 0044d617 has its CatchHandler @ 0034dbb8 */ + if ((DAT_00532008 == (code *)0x0) && + (DAT_00532008 = (code *)FUN_0034d2bc("clSetKernelArg"), DAT_00532008 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_00532008)(param_1,param_2,param_3,param_4); + return uVar1; +} + + +================================================================== + +### FUNC 0034d5ec (84 bytes) name=FUN_0034d5ec + +undefined8 FUN_0034d5ec(undefined8 param_1) + +{ + undefined8 uVar1; + + if ((DAT_00532000 == (code *)0x0) && + (DAT_00532000 = (code *)FUN_0034d2bc("clFlush"), DAT_00532000 == (code *)0x0)) { + return 0xfffffc18; + } + uVar1 = (*DAT_00532000)(param_1); + /* try { // try from 0034d620 to 0044d623 has its CatchHandler @ 0034dabc */ + return uVar1; +} + + +================================================================== + +### FUNC 0034d640 (36 bytes) name=FUN_0034d640 + +void FUN_0034d640(void *param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (0 < iVar2) { + return; + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0034d664 (92 bytes) name=~Platform + +/* cv::ocl::Platform::~Platform() */ + +void __thiscall cv::ocl::Platform::~Platform(Platform *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + String::deallocate((String *)(piVar4 + 4)); + /* try { // try from 0034d6b0 to 0044d6b3 has its CatchHandler @ 0034ddb0 */ + operator_delete(piVar4); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0034d6c0 (92 bytes) name=~ProgramSource + +/* cv::ocl::ProgramSource::~ProgramSource() */ + +void __thiscall cv::ocl::ProgramSource::~ProgramSource(ProgramSource *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 0034d6f4 to 0044d70f has its CatchHandler @ 0034bcb4 */ + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + String::deallocate((String *)(piVar4 + 2)); + operator_delete(piVar4); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0034d71c (128 bytes) name=~Device + +/* cv::ocl::Device::~Device() */ + +void __thiscall cv::ocl::Device::~Device(Device *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 0034d73c to 0044d73f has its CatchHandler @ 0034dbc0 */ + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + /* try { // try from 0034d768 to 0044d88f has its CatchHandler @ 0034bcb4 */ + String::deallocate((String *)(piVar4 + 0x1a)); + String::deallocate((String *)(piVar4 + 0x16)); + String::deallocate((String *)(piVar4 + 8)); + String::deallocate((String *)(piVar4 + 4)); + operator_delete(piVar4); + return; + } + } + /* try { // try from 0034d748 to 0044d74b has its CatchHandler @ 0034dabc */ + return; +} + + +================================================================== + +### FUNC 0034d7d0 (236 bytes) name=FUN_0034d7d0 + +String * FUN_0034d7d0(String *param_1,undefined8 param_2,undefined8 param_3) + +{ + int iVar1; + size_t __n; + void *__dest; + ulong local_408; + char acStack_400 [1024]; + + local_408 = 0; + if ((DAT_005320b0 != (code *)0x0) || + (DAT_005320b0 = (code *)FUN_0034d2bc("clGetPlatformInfo"), DAT_005320b0 != (code *)0x0)) { + iVar1 = (*DAT_005320b0)(param_2,param_3,0x3f0,acStack_400,&local_408); + if ((iVar1 == 0) && (local_408 < 0x400)) { + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + __n = strlen(acStack_400); + __dest = (void *)cv::String::allocate(param_1,__n); + memcpy(__dest,acStack_400,__n); + return param_1; + } + } + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + return param_1; +} + + +================================================================== + +### FUNC 0034d8bc (448 bytes) name=FUN_0034d8bc + +void FUN_0034d8bc(long param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined2 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 *puVar9; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + cv::Mutex::lock((Mutex *)(param_1 + 0x10)); + puVar9 = (undefined8 *)(param_1 + 0x38); + puVar7 = (undefined8 *)*puVar9; + if (puVar7 != puVar9) { + do { + lVar6 = puVar7[3]; + if (lVar6 == 0) { + local_20 = lVar6; + local_18 = lVar6; + pcVar5 = (char *)cv::String::allocate((String *)&local_20,0x14); + uVar2 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar1 = s_entry_capacity_____0_0046d5e8._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_20, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + cv::String::deallocate((String *)&local_20); + lVar6 = puVar7[2]; + if (lVar6 == 0) goto LAB_0034d9a0; +LAB_0034d91c: + if (DAT_00532980 == (code *)0x0) goto LAB_0034da14; +LAB_0034d928: + (*DAT_00532980)(lVar6); + } + else { + lVar6 = puVar7[2]; + if (lVar6 != 0) goto LAB_0034d91c; +LAB_0034d9a0: + local_10 = 0; + local_8 = local_10; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar4 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar3 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar1 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar5 + 0x14) = uVar3; + pcVar5[0x16] = cVar4; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_10, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + cv::String::deallocate((String *)&local_10); + lVar6 = puVar7[2]; + if (DAT_00532980 != (code *)0x0) goto LAB_0034d928; +LAB_0034da14: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0034d928; + } + puVar7 = (undefined8 *)*puVar7; + } while (puVar7 != puVar9); + puVar7 = *(undefined8 **)(param_1 + 0x38); + while (puVar7 != puVar9) { + puVar8 = (undefined8 *)*puVar7; + operator_delete(puVar7); + puVar7 = puVar8; + } + } + *(undefined8 **)(param_1 + 0x38) = puVar9; + *(undefined8 **)(param_1 + 0x40) = puVar9; + *(undefined8 *)(param_1 + 0x18) = 0; + cv::Mutex::unlock((Mutex *)(param_1 + 0x10)); + return; +} + + +================================================================== + +### FUNC 0034dab0 (800 bytes) name=FUN_0034dab0 + +long FUN_0034dab0(char *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + code *pcVar3; + int iVar4; + int iVar5; + char *pcVar6; + size_t __n; + void *pvVar7; + int *piVar8; + char *pcVar9; + long lVar10; + char *local_40; + char *local_38; + char *local_30; + char *local_28; + char *local_20; + char *local_18; + String aSStack_10 [16]; + + /* try { // try from 0034dab4 to 0044dab7 has its CatchHandler @ 0034dc14 */ + /* catch() { ... } // from try @ 0034c3d0 with catch @ 0034dabc + catch() { ... } // from try @ 0034cd78 with catch @ 0034dabc + catch() { ... } // from try @ 0034d620 with catch @ 0034dabc + catch() { ... } // from try @ 0034d748 with catch @ 0034dabc */ + pcVar6 = getenv(param_1); + if (pcVar6 == (char *)0x0) { + return param_2; + } + local_40 = (char *)0x0; + local_38 = (char *)0x0; + __n = strlen(pcVar6); + pvVar7 = (void *)cv::String::allocate((String *)&local_40,__n); + memcpy(pvVar7,pcVar6,__n); + local_28 = local_38; + if (local_38 == (char *)0x0) { + pcVar6 = (char *)0x0; + pcVar9 = local_28; + /* catch() { ... } // from try @ 0034d6b0 with catch @ 0034ddb0 */ + } + else { + if ((int)*local_40 - 0x30U < 10) { + pcVar6 = (char *)0x0; +LAB_0034db38: + pcVar6 = pcVar6 + 1; + if (pcVar6 != local_38) goto LAB_0034db28; + piVar8 = (int *)(local_40 + -4); + do { + /* try { // try from 0034db5c to 0044db5f has its CatchHandler @ 0034bcb4 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + /* catch() { ... } // from try @ 0034cae4 with catch @ 0034db60 + catch() { ... } // from try @ 0034cbd4 with catch @ 0034db60 + catch() { ... } // from try @ 0034daa0 with catch @ 0034db60 */ + } while (cVar1 != '\0'); + local_30 = local_40; + goto LAB_0034db78; + } + local_28 = (char *)0x0; + pcVar6 = (char *)0x0; + pcVar9 = local_28; + } +LAB_0034dbd4: + local_30 = pcVar9; + local_18 = (char *)0x0; + local_20 = (char *)0x0; + pcVar9 = local_38 + -(long)pcVar6; + /* try { // try from 0034dbd8 to 0044dbe7 has its CatchHandler @ 0034bcb4 */ + if (pcVar9 != (char *)0x0) { + if (pcVar9 == local_38) { + piVar8 = (int *)(local_40 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + local_18 = local_38; + local_20 = local_40; + } + else { + /* catch() { ... } // from try @ 0034cbcc with catch @ 0034dbec */ + pvVar7 = (void *)cv::String::allocate((String *)&local_20,(ulong)pcVar9); + memcpy(pvVar7,local_40 + (long)pcVar6,(size_t)pcVar9); + } + pcVar6 = local_18; + pcVar9 = local_30; + if (local_30 == (char *)0x0) { + pcVar9 = ""; + } + iVar4 = atoi(pcVar9); + pcVar9 = local_20; + /* catch() { ... } // from try @ 0034cabc with catch @ 0034dc14 + catch() { ... } // from try @ 0034cbf0 with catch @ 0034dc14 + catch() { ... } // from try @ 0034dab4 with catch @ 0034dc14 */ + lVar10 = (long)iVar4; + if (pcVar6 == (char *)0x0) goto LAB_0034db98; + /* try { // try from 0034dc24 to 0044dc87 has its CatchHandler @ 0034bcb4 */ + if (local_20 == "MB") { +LAB_0034dc78: + lVar10 = (long)(iVar4 << 0x14); + } + else { + if (local_20 == (char *)0x0) { +LAB_0034dce4: + if ((pcVar9 != "Kb") && + ((pcVar9 == (char *)0x0 || + (((iVar5 = strcmp(pcVar9,"Kb"), iVar5 != 0 && (pcVar9 != "kb")) && + (iVar5 = strcmp(pcVar9,"kb"), iVar5 != 0)))))) { + /* try { // try from 0034dd20 to 0044dd23 has its CatchHandler @ 0034dda0 */ + pcVar6 = local_40; + if (local_40 == (char *)0x0) { + /* try { // try from 0034dd2c to 0044dd2f has its CatchHandler @ 0034bcb4 */ + pcVar6 = ""; + } + cv::format("Invalid value for %s parameter: %s",aSStack_10,param_1,pcVar6); + cv::error(-5,aSStack_10,"size_t getConfigurationParameterForSize(const char*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x79); + /* WARNING: Does not return */ + pcVar3 = (code *)SoftwareBreakpoint(1000,0x34dd6c); + (*pcVar3)(); + } + } + else { + iVar5 = strcmp(local_20,"MB"); + if ((((iVar5 == 0) || (pcVar9 == "Mb")) || (iVar5 = strcmp(pcVar9,"Mb"), iVar5 == 0)) || + ((pcVar9 == "mb" || (iVar5 = strcmp(pcVar9,"mb"), iVar5 == 0)))) goto LAB_0034dc78; + /* catch() { ... } // from try @ 0034c2d4 with catch @ 0034dcb8 + catch() { ... } // from try @ 0034c73c with catch @ 0034dcb8 + catch() { ... } // from try @ 0034d5b8 with catch @ 0034dcb8 + catch() { ... } // from try @ 0034d8b8 with catch @ 0034dcb8 */ + /* catch() { ... } // from try @ 0034bed4 with catch @ 0034dcc0 */ + if ((pcVar9 != "KB") && (iVar5 = strcmp(pcVar9,"KB"), iVar5 != 0)) goto LAB_0034dce4; + } + /* try { // try from 0034dcd0 to 0044dcf3 has its CatchHandler @ 0034bcb4 */ + lVar10 = (long)(iVar4 << 10); + } + goto LAB_0034db98; + } +LAB_0034db88: + local_18 = (char *)0x0; + local_20 = (char *)0x0; + pcVar6 = local_30; + if (local_30 == (char *)0x0) { + /* catch() { ... } // from try @ 0034dd20 with catch @ 0034dda0 */ + pcVar6 = ""; + } + iVar4 = atoi(pcVar6); + lVar10 = (long)iVar4; +LAB_0034db98: + cv::String::deallocate((String *)&local_20); + cv::String::deallocate((String *)&local_30); + /* catch() { ... } // from try @ 0034c104 with catch @ 0034dba8 */ + cv::String::deallocate((String *)&local_40); + /* catch() { ... } // from try @ 0034c2ac with catch @ 0034dbb8 + catch() { ... } // from try @ 0034c7c0 with catch @ 0034dbb8 + catch() { ... } // from try @ 0034d5c4 with catch @ 0034dbb8 */ + /* catch() { ... } // from try @ 0034c284 with catch @ 0034dbc0 + catch() { ... } // from try @ 0034c844 with catch @ 0034dbc0 + catch() { ... } // from try @ 0034d554 with catch @ 0034dbc0 + catch() { ... } // from try @ 0034d73c with catch @ 0034dbc0 */ + return lVar10; +LAB_0034db28: + if (9 < (int)local_40[(long)pcVar6] - 0x30U) goto LAB_0034dc84; + goto LAB_0034db38; +LAB_0034dc84: + local_30 = (char *)0x0; + local_28 = (char *)0x0; + pcVar9 = local_28; + if (pcVar6 == (char *)0x0) goto LAB_0034dbd4; + pvVar7 = (void *)cv::String::allocate((String *)&local_30,(ulong)pcVar6); + memcpy(pvVar7,local_40,(size_t)pcVar6); +LAB_0034db78: + pcVar9 = local_30; + if (pcVar6 <= local_38) goto LAB_0034dbd4; + goto LAB_0034db88; +} + + +================================================================== + +### FUNC 0034de14 (664 bytes) name=FUN_0034de14 + +void FUN_0034de14(undefined8 *param_1) + +{ + Mutex *this; + undefined8 uVar1; + undefined8 uVar2; + undefined2 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + undefined8 *puVar7; + undefined8 *puVar8; + void *pvVar9; + undefined8 *puVar10; + undefined8 local_30; + undefined8 local_28; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + this = (Mutex *)(param_1 + 2); + param_1[1] = &PTR_FUN_004f68f0; + *param_1 = &PTR_FUN_004f68a0; + cv::Mutex::lock(this); + puVar10 = param_1 + 7; + puVar7 = (undefined8 *)*puVar10; + if (puVar7 != puVar10) { + do { + lVar6 = puVar7[3]; + if (lVar6 == 0) { + local_20 = lVar6; + local_18 = lVar6; + pcVar5 = (char *)cv::String::allocate((String *)&local_20,0x14); + uVar2 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar1 = s_entry_capacity_____0_0046d5e8._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_20, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + cv::String::deallocate((String *)&local_20); + lVar6 = puVar7[2]; + if (lVar6 == 0) goto LAB_0034df18; +LAB_0034de94: + if (DAT_00532980 == (code *)0x0) goto LAB_0034df8c; +LAB_0034dea0: + /* try { // try from 0034dea4 to 0044dea7 has its CatchHandler @ 0034bcb4 */ + (*DAT_00532980)(lVar6); + } + else { + lVar6 = puVar7[2]; + if (lVar6 != 0) goto LAB_0034de94; +LAB_0034df18: + local_10 = 0; + local_8 = local_10; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar4 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar3 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar1 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar5 + 0x14) = uVar3; + pcVar5[0x16] = cVar4; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_10, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + cv::String::deallocate((String *)&local_10); + lVar6 = puVar7[2]; + if (DAT_00532980 != (code *)0x0) goto LAB_0034dea0; +LAB_0034df8c: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0034dea0; + } + puVar7 = (undefined8 *)*puVar7; + } while (puVar7 != puVar10); + puVar7 = (undefined8 *)param_1[7]; + while (puVar7 != puVar10) { + puVar8 = (undefined8 *)*puVar7; + operator_delete(puVar7); + puVar7 = puVar8; + } + } + param_1[7] = puVar10; + param_1[8] = puVar10; + param_1[3] = 0; + cv::Mutex::unlock(this); + if ((undefined8 *)param_1[7] != puVar10) { + local_30 = 0; + local_28 = 0; + pcVar5 = (char *)cv::String::allocate((String *)&local_30,0x18); + uVar2 = s_reservedEntries__empty___0046d6a8._8_8_; + uVar1 = s_reservedEntries__empty___0046d6a8._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_reservedEntries__empty___0046d6a8._16_8_; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_30, + "cv::ocl::OpenCLBufferPoolBaseImpl::~OpenCLBufferPoolBaseImpl() [with Derived = cv::ocl::OpenCLBufferPoolImpl; BufferEntry = cv::ocl::CLBufferEntry; T = _cl_mem*]" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xf31); + cv::String::deallocate((String *)&local_30); + puVar7 = (undefined8 *)param_1[7]; + while (puVar7 != puVar10) { + puVar8 = (undefined8 *)*puVar7; + operator_delete(puVar7); + puVar7 = puVar8; + } + } + puVar7 = (void *)param_1[5]; + while (puVar7 != param_1 + 5) { + pvVar9 = (void *)*puVar7; + operator_delete(puVar7); + puVar7 = pvVar9; + } + cv::Mutex::~Mutex(this); + return; +} + + +================================================================== + +### FUNC 0034e158 (32 bytes) name=FUN_0034e158 + +void FUN_0034e158(void *param_1) + +{ + FUN_0034de14(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0034e178 (28 bytes) name=FUN_0034e178 + +void FUN_0034e178(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f6910; + param_1[1] = &PTR_FUN_004f6960; + FUN_0034de14(); + return; +} + + +================================================================== + +### FUNC 0034e194 (100 bytes) name=FUN_0034e194 + +void FUN_0034e194(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f6980; + param_1[0xb] = &PTR_FUN_004f6910; + param_1[0xc] = &PTR_FUN_004f6960; + FUN_0034de14(); + param_1[1] = &PTR_FUN_004f6910; + param_1[2] = &PTR_FUN_004f6960; + FUN_0034de14(param_1 + 1); + return; +} + + +================================================================== + +### FUNC 0034e220 (56 bytes) name=FUN_0034e220 + +void FUN_0034e220(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f6910; + param_1[1] = &PTR_FUN_004f6960; + FUN_0034de14(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0034e258 (104 bytes) name=FUN_0034e258 + +void FUN_0034e258(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f6980; + param_1[0xb] = &PTR_FUN_004f6910; + param_1[0xc] = &PTR_FUN_004f6960; + FUN_0034de14(); + param_1[1] = &PTR_FUN_004f6910; + param_1[2] = &PTR_FUN_004f6960; + FUN_0034de14(param_1 + 1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0034e2e8 (236 bytes) name=FUN_0034e2e8 + +String * FUN_0034e2e8(String *param_1,undefined8 param_2,undefined8 param_3) + +{ + int iVar1; + size_t __n; + void *__dest; + ulong local_408; + char acStack_400 [1024]; + + local_408 = 0; + if ((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) { + iVar1 = (*DAT_00532990)(param_2,param_3,0x3f0,acStack_400,&local_408); + if ((iVar1 == 0) && (local_408 < 0x400)) { + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + __n = strlen(acStack_400); + __dest = (void *)cv::String::allocate(param_1,__n); + memcpy(__dest,acStack_400,__n); + return param_1; + } + } + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + return param_1; +} + + +================================================================== + +### FUNC 0034e3d4 (356 bytes) name=FUN_0034e3d4 + +int FUN_0034e3d4(undefined8 param_1,long *param_2) + +{ + ulong uVar1; + int iVar2; + undefined1 *puVar3; + long local_420; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + /* catch() { ... } // from try @ 0034e444 with catch @ 0034e3e0 + catch() { ... } // from try @ 0034e47c with catch @ 0034e3e0 + catch() { ... } // from try @ 0034e590 with catch @ 0034e3e0 + catch() { ... } // from try @ 0034ec64 with catch @ 0034e3e0 + catch() { ... } // from try @ 0034f1c4 with catch @ 0034e3e0 + catch() { ... } // from try @ 0034f9e4 with catch @ 0034e3e0 + catch() { ... } // from try @ 0034fb80 with catch @ 0034e3e0 + catch() { ... } // from try @ 0034fd2c with catch @ 0034e3e0 + catch() { ... } // from try @ 0034fdc8 with catch @ 0034e3e0 + catch() { ... } // from try @ 00350090 with catch @ 0034e3e0 + catch() { ... } // from try @ 003500fc with catch @ 0034e3e0 + catch() { ... } // from try @ 00350110 with catch @ 0034e3e0 */ + if ((DAT_005320b0 == (code *)0x0) && + (DAT_005320b0 = (code *)FUN_0034d2bc("clGetPlatformInfo"), DAT_005320b0 == (code *)0x0)) { + return -1000; + } + iVar2 = (*DAT_005320b0)(param_1,0x902,0,0,&local_420); + if (iVar2 != 0) { + return iVar2; + } + FUN_00412b08(param_2,0,*(undefined8 *)(*param_2 + -0x18),0); + if (local_420 == 0) { + return 0; + } + uVar1 = local_420 + 1; + puVar3 = auStack_408; + /* try { // try from 0034e474 to 0044e477 has its CatchHandler @ 00350100 */ + /* try { // try from 0034e47c to 0044e557 has its CatchHandler @ 0034e3e0 */ + local_410 = 0x408; + if (0x408 < uVar1) { + local_418 = puVar3; + puVar3 = operator_new__(uVar1); + } + local_418 = puVar3; + local_410 = uVar1; + if (DAT_005320b0 == (code *)0x0) { + DAT_005320b0 = (code *)FUN_0034d2bc("clGetPlatformInfo"); + iVar2 = -1000; + if (DAT_005320b0 == (code *)0x0) goto LAB_0034e4cc; + } + iVar2 = (*DAT_005320b0)(param_1,0x902,local_420,puVar3,0); + if (iVar2 == 0) { + FUN_00413174(param_2,puVar3); + } +LAB_0034e4cc: + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + /* try { // try from 0034e444 to 0044e447 has its CatchHandler @ 0034e3e0 */ + return iVar2; +} + + +================================================================== + +### FUNC 0034e558 (736 bytes) name=FUN_0034e558 + +void FUN_0034e558(long param_1,ulong param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + ulong uVar6; + char *pcVar7; + long lVar8; + undefined8 *puVar9; + undefined8 *puVar10; + void *pvVar11; + long lVar12; + undefined8 *puVar13; + long local_30; + long local_28; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + cv::Mutex::lock((Mutex *)(param_1 + 0x10)); + /* try { // try from 0034e584 to 0044e587 has its CatchHandler @ 00350080 */ + uVar6 = *(ulong *)(param_1 + 0x20); + *(ulong *)(param_1 + 0x20) = param_2; + /* try { // try from 0034e590 to 0044e5d3 has its CatchHandler @ 0034e3e0 */ + if (param_2 < uVar6) { + puVar13 = (undefined8 *)(param_1 + 0x38); + puVar9 = (undefined8 *)*puVar13; + while (puVar10 = puVar9, puVar9 != puVar13) { + while ((ulong)puVar10[3] <= param_2 >> 3) { + puVar10 = (undefined8 *)*puVar10; + if (puVar10 == puVar13) goto LAB_0034e5d8; + } + lVar8 = puVar10[2]; + *(long *)(param_1 + 0x18) = *(long *)(param_1 + 0x18) - puVar10[3]; + if (lVar8 == 0) { + local_30 = lVar8; + local_28 = lVar8; + pcVar7 = (char *)cv::String::allocate((String *)&local_30,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar3 = s_entry_clBuffer_____NULL_0046d640._16_4_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar1 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined2 *)(pcVar7 + 0x14) = s_entry_clBuffer_____NULL_0046d640._20_2_; + *(undefined4 *)(pcVar7 + 0x10) = uVar3; + pcVar7[0x16] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_30, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + cv::String::deallocate((String *)&local_30); + lVar8 = puVar10[2]; + if (DAT_00532980 == (code *)0x0) goto LAB_0034e800; +LAB_0034e764: + (*DAT_00532980)(lVar8); + } + else { + if (DAT_00532980 != (code *)0x0) goto LAB_0034e764; +LAB_0034e800: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0034e764; + } + puVar9 = (undefined8 *)*puVar10; + FUN_003dc008(puVar10); + operator_delete(puVar10); + param_2 = *(ulong *)(param_1 + 0x20); + } +LAB_0034e5d8: + /* try { // try from 0034e5d8 to 0044e5fb has its CatchHandler @ 0035011c */ + uVar6 = *(ulong *)(param_1 + 0x18); + if (param_2 < uVar6) { + do { + lVar12 = *(long *)(param_1 + 0x40); + lVar8 = *(long *)(lVar12 + 0x18); + *(ulong *)(param_1 + 0x18) = uVar6 - lVar8; + if (lVar8 == 0) { + local_20 = lVar8; + local_18 = lVar8; + pcVar7 = (char *)cv::String::allocate((String *)&local_20,0x14); + uVar2 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar1 = s_entry_capacity_____0_0046d5e8._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_20, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + cv::String::deallocate((String *)&local_20); + lVar8 = *(long *)(lVar12 + 0x10); + if (lVar8 != 0) goto LAB_0034e60c; +LAB_0034e6b4: + local_10 = 0; + local_8 = local_10; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar4 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar1 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined4 *)(pcVar7 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar7 + 0x14) = uVar4; + pcVar7[0x16] = cVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-0xd7,(String *)&local_10, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + cv::String::deallocate((String *)&local_10); + lVar8 = *(long *)(lVar12 + 0x10); + if (DAT_00532980 == (code *)0x0) goto LAB_0034e728; +LAB_0034e618: + (*DAT_00532980)(lVar8); + } + else { + lVar8 = *(long *)(lVar12 + 0x10); + if (lVar8 == 0) goto LAB_0034e6b4; +LAB_0034e60c: + if (DAT_00532980 != (code *)0x0) goto LAB_0034e618; +LAB_0034e728: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0034e618; + } + pvVar11 = *(void **)(param_1 + 0x40); + FUN_003dc008(pvVar11); + /* try { // try from 0034e634 to 0044e9b3 has its CatchHandler @ 00350114 */ + operator_delete(pvVar11); + uVar6 = *(ulong *)(param_1 + 0x18); + } while (*(ulong *)(param_1 + 0x20) < uVar6); + } + } + cv::Mutex::unlock((Mutex *)(param_1 + 0x10)); + return; +} + + +================================================================== + +### FUNC 0034e87c (996 bytes) name=FUN_0034e87c + +void FUN_0034e87c(long param_1,long param_2) + +{ + undefined8 uVar1; + undefined2 uVar2; + char cVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + long lVar8; + void *pvVar9; + char *pcVar10; + undefined8 *puVar11; + undefined8 *puVar12; + undefined8 uVar13; + long lVar14; + ulong uVar15; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_30; + long local_28; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + cv::Mutex::lock((Mutex *)(param_1 + 0x10)); + puVar11 = (undefined8 *)(param_1 + 0x28); + puVar12 = (undefined8 *)*puVar11; + if (puVar12 == puVar11) { +LAB_0034e8e4: + local_50 = 0; + local_48 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_50,0x33); + cVar3 = s__findAndRemoveEntryFromAllocated_0046d6c8[0x32]; + uVar7 = s__findAndRemoveEntryFromAllocated_0046d6c8._40_8_; + uVar6 = s__findAndRemoveEntryFromAllocated_0046d6c8._32_8_; + uVar5 = s__findAndRemoveEntryFromAllocated_0046d6c8._24_8_; + uVar4 = s__findAndRemoveEntryFromAllocated_0046d6c8._16_8_; + uVar1 = s__findAndRemoveEntryFromAllocated_0046d6c8._8_8_; + uVar13 = s__findAndRemoveEntryFromAllocated_0046d6c8._0_8_; + *(undefined2 *)(pcVar10 + 0x30) = s__findAndRemoveEntryFromAllocated_0046d6c8._48_2_; + pcVar10[0x32] = cVar3; + *(undefined8 *)pcVar10 = uVar13; + *(undefined8 *)(pcVar10 + 8) = uVar1; + *(undefined8 *)(pcVar10 + 0x10) = uVar4; + *(undefined8 *)(pcVar10 + 0x18) = uVar5; + *(undefined8 *)(pcVar10 + 0x20) = uVar6; + *(undefined8 *)(pcVar10 + 0x28) = uVar7; + cv::error(-0xd7,(String *)&local_50, + "void cv::ocl::OpenCLBufferPoolBaseImpl::release(T) [with Derived = cv::ocl::OpenCLBufferPoolImpl; BufferEntry = cv::ocl::CLBufferEntry; T = _cl_mem*]" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xf47); + cv::String::deallocate((String *)&local_50); + if (*(long *)(param_1 + 0x20) != 0) { + uVar15 = 0; + param_2 = 0; +LAB_0034e968: + uVar13 = *(undefined8 *)(param_1 + 0x38); + pvVar9 = operator_new(0x20); + *(long *)((long)pvVar9 + 0x10) = param_2; + *(ulong *)((long)pvVar9 + 0x18) = uVar15; + FUN_003dbfec(pvVar9,uVar13); + uVar15 = uVar15 + *(long *)(param_1 + 0x18); + *(ulong *)(param_1 + 0x18) = uVar15; + if (*(ulong *)(param_1 + 0x20) < uVar15) { + do { + lVar14 = *(long *)(param_1 + 0x40); + lVar8 = *(long *)(lVar14 + 0x18); + *(ulong *)(param_1 + 0x18) = uVar15 - lVar8; + if (lVar8 == 0) { + local_20 = lVar8; + local_18 = lVar8; + pcVar10 = (char *)cv::String::allocate((String *)&local_20,0x14); + uVar1 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar13 = s_entry_capacity_____0_0046d5e8._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + /* try { // try from 0034ea50 to 0044ea53 has its CatchHandler @ 003501b4 */ + *(undefined8 *)pcVar10 = uVar13; + *(undefined8 *)(pcVar10 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_20, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + cv::String::deallocate((String *)&local_20); + lVar8 = *(long *)(lVar14 + 0x10); + if (lVar8 != 0) goto LAB_0034e9c8; +LAB_0034ea70: + local_10 = 0; + local_8 = local_10; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x17); + cVar3 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar2 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar1 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar13 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + /* try { // try from 0034eabc to 0044eb1f has its CatchHandler @ 003501ac */ + *(undefined2 *)(pcVar10 + 0x14) = uVar2; + pcVar10[0x16] = cVar3; + *(undefined8 *)pcVar10 = uVar13; + *(undefined8 *)(pcVar10 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_10, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + cv::String::deallocate((String *)&local_10); + lVar8 = *(long *)(lVar14 + 0x10); + if (DAT_00532980 == (code *)0x0) goto LAB_0034eae4; +LAB_0034e9d4: + (*DAT_00532980)(lVar8); + } + else { + lVar8 = *(long *)(lVar14 + 0x10); + if (lVar8 == 0) goto LAB_0034ea70; +LAB_0034e9c8: + /* try { // try from 0034e9d0 to 0044e9d3 has its CatchHandler @ 003501dc */ + if (DAT_00532980 != (code *)0x0) goto LAB_0034e9d4; +LAB_0034eae4: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0034e9d4; + } + pvVar9 = *(void **)(param_1 + 0x40); + FUN_003dc008(pvVar9); + operator_delete(pvVar9); + uVar15 = *(ulong *)(param_1 + 0x18); + } while (*(ulong *)(param_1 + 0x20) < uVar15); + } + goto LAB_0034eb78; + } + param_2 = 0; +LAB_0034eb00: + local_40 = 0; + local_38 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_40,0x14); + uVar1 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar13 = s_entry_capacity_____0_0046d5e8._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + *(undefined8 *)pcVar10 = uVar13; + *(undefined8 *)(pcVar10 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_40, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + cv::String::deallocate((String *)&local_40); + } + else { + lVar8 = puVar12[2]; + while (param_2 != lVar8) { + puVar12 = (undefined8 *)*puVar12; + if (puVar12 == puVar11) goto LAB_0034e8e4; + lVar8 = puVar12[2]; + } + uVar15 = puVar12[3]; + FUN_003dc008(puVar12); + /* try { // try from 0034ebb0 to 0044ebb3 has its CatchHandler @ 00350114 */ + operator_delete(puVar12); + if (*(ulong *)(param_1 + 0x20) == 0) { + if (uVar15 == 0) goto LAB_0034eb00; + } + else if (uVar15 <= *(ulong *)(param_1 + 0x20) >> 3) goto LAB_0034e968; + } + if (param_2 == 0) { + local_30 = param_2; + local_28 = param_2; + pcVar10 = (char *)cv::String::allocate((String *)&local_30,0x17); + cVar3 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar2 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar1 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar13 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar2; + pcVar10[0x16] = cVar3; + *(undefined8 *)pcVar10 = uVar13; + *(undefined8 *)(pcVar10 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_30, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + cv::String::deallocate((String *)&local_30); + /* try { // try from 0034ec34 to 0044ec37 has its CatchHandler @ 0035011c */ + } + if ((DAT_00532980 != (code *)0x0) || + (DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"), DAT_00532980 != (code *)0x0)) { + (*DAT_00532980)(param_2); + } +LAB_0034eb78: + cv::Mutex::unlock((Mutex *)(param_1 + 0x10)); + return; +} + + +================================================================== + +### FUNC 0034ecd0 (8 bytes) name=FUN_0034ecd0 + +void FUN_0034ecd0(long param_1) + +{ + FUN_0034e87c(param_1 + -8); + return; +} + + +================================================================== + +### FUNC 0034ecd8 (664 bytes) name=FUN_0034ecd8 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034ecd8(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [8]; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(long)*(short *)(lVar6 + lVar5 * 2)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(long)*(short *)(lVar6 + (long)iVar3 * 2)); + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f22fc(local_160,*(undefined2 *)(lVar6 + lVar5 * 2)); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f22fc(local_160,*(undefined2 *)(lVar6 + (long)iVar3 * 2)); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034edb0; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f22fc(local_160,*(undefined2 *)(lVar6 + lVar5 * 2)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f22fc(local_160,*(undefined2 *)(lVar6 + (long)iVar3 * 2)); + } + FUN_003f1ad0(uVar4,")",1); +LAB_0034edb0: + FUN_003f8018(param_1,local_160 + 1); + local_160[0] = PTR_DAT_00501e68 + 0x18; + local_160[1] = PTR_DAT_00501cc0 + 0x10; + local_108 = PTR_DAT_00501e68 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + } + local_160[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(); + return param_1; +} + + +================================================================== + +### FUNC 0034ef84 (664 bytes) name=FUN_0034ef84 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034ef84(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [8]; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + /* try { // try from 0034efa4 to 0044efc7 has its CatchHandler @ 00350114 */ + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined2 *)(lVar6 + lVar5 * 2)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined2 *)(lVar6 + (long)iVar3 * 2)); + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + /* try { // try from 0034f194 to 0044f197 has its CatchHandler @ 0035011c */ + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + /* try { // try from 0034f1c4 to 0044f1c7 has its CatchHandler @ 0034e3e0 */ + uVar4 = FUN_003f2380(local_160,*(undefined2 *)(lVar6 + lVar5 * 2)); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2380(local_160,*(undefined2 *)(lVar6 + (long)iVar3 * 2)); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034f05c; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2380(local_160,*(undefined2 *)(lVar6 + lVar5 * 2)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2380(local_160,*(undefined2 *)(lVar6 + (long)iVar3 * 2)); + } + FUN_003f1ad0(uVar4,")",1); +LAB_0034f05c: + FUN_003f8018(param_1,local_160 + 1); + local_160[0] = PTR_DAT_00501e68 + 0x18; + local_160[1] = PTR_DAT_00501cc0 + 0x10; + /* try { // try from 0034f090 to 0044f093 has its CatchHandler @ 00350094 */ + local_108 = PTR_DAT_00501e68 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + /* try { // try from 0034f218 to 0044f21b has its CatchHandler @ 00350244 */ + } + local_160[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(); + /* try { // try from 0034f110 to 0044f113 has its CatchHandler @ 00350114 */ + return param_1; +} + + +================================================================== + +### FUNC 0034f230 (636 bytes) name=FUN_0034f230 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034f230(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [8]; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + /* try { // try from 0034f254 to 0044f297 has its CatchHandler @ 003501ac */ + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined4 *)(lVar6 + lVar5 * 4)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined4 *)(lVar6 + lVar5 * 4)); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined4 *)(lVar6 + (long)iVar3 * 4)); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034f308; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined4 *)(lVar6 + lVar5 * 4)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined4 *)(lVar6 + (long)iVar3 * 4)); + /* try { // try from 0034f2fc to 0044f367 has its CatchHandler @ 00350214 */ + FUN_003f1ad0(uVar4,")",1); +LAB_0034f308: + FUN_003f8018(param_1,local_160 + 1); + local_160[0] = PTR_DAT_00501e68 + 0x18; + local_160[1] = PTR_DAT_00501cc0 + 0x10; + local_108 = PTR_DAT_00501e68 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + } + local_160[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + /* try { // try from 0034f394 to 0044f397 has its CatchHandler @ 00350204 */ + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + /* try { // try from 0034f39c to 0044f9d7 has its CatchHandler @ 00350214 */ + FUN_003d381c(); + return param_1; +} + + +================================================================== + +### FUNC 0034f4c0 (672 bytes) name=FUN_0034f4c0 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034f4c0(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [8]; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(int)*(double *)(lVar6 + lVar5 * 8)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(int)*(double *)(lVar6 + (long)iVar3 * 8)); + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60(*(undefined8 *)(lVar6 + lVar5 * 8),local_160); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60(*(undefined8 *)(lVar6 + (long)iVar3 * 8),local_160); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034f598; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60(*(undefined8 *)(lVar6 + lVar5 * 8),local_160); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60(*(undefined8 *)(lVar6 + (long)iVar3 * 8),local_160); + } + FUN_003f1ad0(uVar4,")",1); +LAB_0034f598: + FUN_003f8018(param_1,local_160 + 1); + local_160[0] = PTR_DAT_00501e68 + 0x18; + local_160[1] = PTR_DAT_00501cc0 + 0x10; + local_108 = PTR_DAT_00501e68 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + } + local_160[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(); + return param_1; +} + + +================================================================== + +### FUNC 0034f774 (688 bytes) name=FUN_0034f774 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034f774(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [8]; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(int)*(float *)(lVar6 + lVar5 * 4)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(int)*(float *)(lVar6 + (long)iVar3 * 4)); + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60((double)*(float *)(lVar6 + lVar5 * 4),local_160); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + /* try { // try from 0034f9e4 to 0044fa87 has its CatchHandler @ 0034e3e0 */ + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60((double)*(float *)(lVar6 + (long)iVar3 * 4),local_160); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034f854; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60((double)*(float *)(lVar6 + lVar5 * 4),local_160); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2c60((double)*(float *)(lVar6 + (long)iVar3 * 4),local_160); + } + FUN_003f1ad0(uVar4,")",1); +LAB_0034f854: + FUN_003f8018(param_1,local_160 + 1); + local_160[0] = PTR_DAT_00501e68 + 0x18; + local_160[1] = PTR_DAT_00501cc0 + 0x10; + local_108 = PTR_DAT_00501e68 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + } + local_160[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(); + return param_1; +} + + +================================================================== + +### FUNC 0034fa38 (728 bytes) name=FUN_0034fa38 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034fa38(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [4]; + undefined1 local_164; + undefined1 local_163; + undefined1 local_162; + undefined1 local_161; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + lVar5 = 0; + /* try { // try from 0034fbf0 to 0044fc7f has its CatchHandler @ 00350214 */ + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(long)*(char *)(lVar6 + lVar5)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,(long)*(char *)(lVar6 + iVar3)); + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_164 = *(undefined1 *)(lVar6 + lVar5); + /* try { // try from 0034fca0 to 0044fcbf has its CatchHandler @ 00350114 */ + uVar4 = FUN_003f1ad0(local_160,&local_164,1); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + /* try { // try from 0034fcd0 to 0044fcd3 has its CatchHandler @ 0035011c */ + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_163 = *(undefined1 *)(lVar6 + iVar3); + uVar4 = FUN_003f1ad0(local_160,&local_163,1); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034fb30; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_162 = *(undefined1 *)(lVar6 + lVar5); + uVar4 = FUN_003f1ad0(local_160,&local_162,1); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_161 = *(undefined1 *)(lVar6 + iVar3); + uVar4 = FUN_003f1ad0(local_160,&local_161,1); + } + FUN_003f1ad0(uVar4,")",1); +LAB_0034fb30: + FUN_003f8018(param_1,local_160 + 1); + /* try { // try from 0034fb4c to 0044fb4f has its CatchHandler @ 00350114 */ + local_160[0] = PTR_DAT_00501e68 + 0x18; + /* try { // try from 0034fb60 to 0044fb63 has its CatchHandler @ 0035011c */ + local_160[1] = PTR_DAT_00501cc0 + 0x10; + local_108 = PTR_DAT_00501e68 + 0x40; + /* try { // try from 0034fb6c to 0044fb6f has its CatchHandler @ 00350244 */ + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + } + /* try { // try from 0034fb80 to 0044fb83 has its CatchHandler @ 0034e3e0 */ + local_160[1] = PTR_DAT_00501bb0 + 0x10; + /* try { // try from 0034fb8c to 0044fb8f has its CatchHandler @ 0035021c */ + FUN_003ed708(auStack_120); + /* try { // try from 0034fb98 to 0044fb9b has its CatchHandler @ 00350114 */ + /* try { // try from 0034fba4 to 0044fba7 has its CatchHandler @ 003501b4 */ + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(); + return param_1; +} + + +================================================================== + +### FUNC 0034fd24 (728 bytes) name=FUN_0034fd24 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_0034fd24(undefined8 param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + long lVar6; + undefined1 auStack_168 [4]; + undefined1 local_164; + undefined1 local_163; + undefined1 local_162; + undefined1 local_161; + undefined *local_160 [8]; + undefined1 auStack_120 [16]; + long local_110; + undefined *local_108; + undefined8 local_100; + uint local_f0; + + /* try { // try from 0034fd2c to 0044fd2f has its CatchHandler @ 0034e3e0 */ + /* try { // try from 0034fd50 to 0044fd53 has its CatchHandler @ 00350114 */ + uVar1 = *param_2; + uVar2 = param_2[3]; + lVar6 = *(long *)(param_2 + 4); + FUN_003f90d8(local_160,0x10); + iVar3 = uVar2 - 1; + local_100 = 10; + if ((uVar1 & 7) < 2) { + /* try { // try from 0034fed4 to 0044feeb has its CatchHandler @ 00350114 */ + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + uVar4 = FUN_003f2340(local_160,*(undefined1 *)(lVar6 + lVar5)); + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + /* try { // try from 0034ff38 to 0044ff3b has its CatchHandler @ 00350214 */ + uVar4 = FUN_003f2340(local_160,*(undefined1 *)(lVar6 + iVar3)); + } + else { + if ((uVar1 & 7) == 5) { + lVar5 = 0; + local_f0 = local_f0 | 0x400; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_164 = *(undefined1 *)(lVar6 + lVar5); + uVar4 = FUN_003f1ad0(local_160,&local_164,1); + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_163 = *(undefined1 *)(lVar6 + iVar3); + uVar4 = FUN_003f1ad0(local_160,&local_163,1); + /* try { // try from 0034ffe0 to 0044ffe3 has its CatchHandler @ 0035014c */ + FUN_003f1ad0(uVar4,&DAT_0046d708,2); + goto LAB_0034fe1c; + } + lVar5 = 0; + if (0 < iVar3) { + do { + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_162 = *(undefined1 *)(lVar6 + lVar5); + uVar4 = FUN_003f1ad0(local_160,&local_162,1); + /* try { // try from 0034fdc8 to 0044fdcb has its CatchHandler @ 0034e3e0 */ + FUN_003f1ad0(uVar4,")",1); + lVar5 = lVar5 + 1; + } while ((int)lVar5 < iVar3); + } + FUN_003f1ad0(local_160,&DAT_0046d700,4); + local_161 = *(undefined1 *)(lVar6 + iVar3); + uVar4 = FUN_003f1ad0(local_160,&local_161,1); + } + FUN_003f1ad0(uVar4,")",1); +LAB_0034fe1c: + FUN_003f8018(param_1,local_160 + 1); + local_160[0] = PTR_DAT_00501e68 + 0x18; + local_160[1] = PTR_DAT_00501cc0 + 0x10; + local_108 = PTR_DAT_00501e68 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_110 + -0x18),auStack_168); + } + local_160[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + local_160[0] = *(undefined **)(PTR_PTR_00501908 + 8); + *(undefined8 *)((long)local_160 + *(long *)(local_160[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_00501908 + 0x10); + local_108 = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(); + /* try { // try from 0034fec8 to 0044fecb has its CatchHandler @ 0035011c */ + return param_1; +} + + +================================================================== + +### FUNC 00350010 (496 bytes) name=FUN_00350010 + +undefined4 FUN_00350010(char *param_1) + +{ + code *pcVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + size_t __n; + void *__dest; + char *local_20; + undefined8 local_18; + String aSStack_10 [16]; + + pcVar4 = getenv(param_1); + if (pcVar4 == (char *)0x0) { + /* catch() { ... } // from try @ 0034e9d0 with catch @ 003501dc */ + return 0; + } + local_20 = (char *)0x0; + local_18 = 0; + __n = strlen(pcVar4); + __dest = (void *)cv::String::allocate((String *)&local_20,__n); + /* try { // try from 00350054 to 00450057 has its CatchHandler @ 00350214 */ + memcpy(__dest,pcVar4,__n); + pcVar4 = local_20; + if (local_20 == "1") { +LAB_00350168: + uVar3 = 1; + goto LAB_0035016c; + } + if (local_20 != (char *)0x0) { + iVar2 = strcmp(local_20,"1"); + /* catch() { ... } // from try @ 0034e584 with catch @ 00350080 */ + /* try { // try from 00350090 to 00450093 has its CatchHandler @ 0034e3e0 */ + /* catch() { ... } // from try @ 0034f090 with catch @ 00350094 */ + if ((((iVar2 == 0) || (pcVar4 == "True")) || (iVar2 = strcmp(pcVar4,"True"), iVar2 == 0)) || + (pcVar4 == "true")) goto LAB_00350168; + uVar3 = 1; + iVar2 = strcmp(pcVar4,"true"); + if (((iVar2 == 0) || (pcVar4 == "TRUE")) || (iVar2 = strcmp(pcVar4,"TRUE"), iVar2 == 0)) + goto LAB_0035016c; + } + if (pcVar4 == "0") goto LAB_003501d0; + if (pcVar4 == (char *)0x0) { + pcVar4 = ""; + goto LAB_00350194; + } + iVar2 = strcmp(pcVar4,"0"); + if (iVar2 != 0) { + /* try { // try from 003500fc to 004500ff has its CatchHandler @ 0034e3e0 */ + /* catch() { ... } // from try @ 0034e474 with catch @ 00350100 */ + if (pcVar4 == "False") { +LAB_003501d0: + uVar3 = 0; + goto LAB_0035016c; + } + /* try { // try from 00350110 to 00450113 has its CatchHandler @ 0034e3e0 */ + iVar2 = strcmp(pcVar4,"False"); + /* catch() { ... } // from try @ 0034e634 with catch @ 00350114 + catch() { ... } // from try @ 0034ebb0 with catch @ 00350114 + catch() { ... } // from try @ 0034efa4 with catch @ 00350114 + catch() { ... } // from try @ 0034f110 with catch @ 00350114 + catch() { ... } // from try @ 0034fb4c with catch @ 00350114 + catch() { ... } // from try @ 0034fb98 with catch @ 00350114 + catch() { ... } // from try @ 0034fca0 with catch @ 00350114 + catch() { ... } // from try @ 0034fd50 with catch @ 00350114 + catch() { ... } // from try @ 0034fed4 with catch @ 00350114 */ + if (iVar2 != 0) { + /* catch() { ... } // from try @ 0034e5d8 with catch @ 0035011c + catch() { ... } // from try @ 0034ec34 with catch @ 0035011c + catch() { ... } // from try @ 0034f194 with catch @ 0035011c + catch() { ... } // from try @ 0034fb60 with catch @ 0035011c + catch() { ... } // from try @ 0034fcd0 with catch @ 0035011c + catch() { ... } // from try @ 0034fec8 with catch @ 0035011c */ + if (pcVar4 == "false") goto LAB_003501d0; + if (pcVar4 == (char *)0x0) { +LAB_003501f4: + pcVar4 = ""; +LAB_00350194: + cv::format("Invalid value for %s parameter: %s",aSStack_10,param_1,pcVar4); + /* catch() { ... } // from try @ 0034eabc with catch @ 003501ac + catch() { ... } // from try @ 0034f254 with catch @ 003501ac */ + /* catch() { ... } // from try @ 0034ea50 with catch @ 003501b4 + catch() { ... } // from try @ 0034fba4 with catch @ 003501b4 */ + cv::error(-5,aSStack_10,"bool getBoolParameter(const char*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x59); + /* WARNING: Does not return */ + pcVar1 = (code *)SoftwareBreakpoint(1000,0x3501d0); + (*pcVar1)(); + } + iVar2 = strcmp(pcVar4,"false"); + if (iVar2 != 0) { + /* try { // try from 00350144 to 00450147 has its CatchHandler @ 00350214 */ + if (pcVar4 == "FALSE") goto LAB_003501d0; + if (pcVar4 == (char *)0x0) goto LAB_003501f4; + /* catch() { ... } // from try @ 0034ffe0 with catch @ 0035014c */ + iVar2 = strcmp(pcVar4,"FALSE"); + if (iVar2 != 0) goto LAB_00350194; + } + } + } + uVar3 = 0; +LAB_0035016c: + cv::String::deallocate((String *)&local_20); + return uVar3; +} + + +================================================================== + +### FUNC 00350224 (84 bytes) name=FUN_00350224 + +undefined1 FUN_00350224(void) + +{ + if (DAT_00532119 != '\0') { + /* catch() { ... } // from try @ 0034f218 with catch @ 00350244 + catch() { ... } // from try @ 0034fb6c with catch @ 00350244 */ + return DAT_005329c8; + } + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = 1; + return DAT_005329c8; +} + + +================================================================== + +### FUNC 00350278 (180 bytes) name=FUN_00350278 + +long FUN_00350278(long param_1,char *param_2) + +{ + code *pcVar1; + int iVar2; + void *__dest; + undefined8 local_10; + undefined8 local_8; + + if (param_2 != (char *)0x0) { + iVar2 = strcmp(param_2,"HOST_ALLOC"); + /* catch() { ... } // from try @ 003502e4 with catch @ 003502a0 + catch() { ... } // from try @ 0035118c with catch @ 003502a0 + catch() { ... } // from try @ 00351294 with catch @ 003502a0 + catch() { ... } // from try @ 00351ea8 with catch @ 003502a0 */ + if (iVar2 == 0) { + return param_1 + 0x58; + } + iVar2 = strcmp(param_2,"OCL"); + if (iVar2 != 0) { + /* try { // try from 003502e4 to 0045032b has its CatchHandler @ 003502a0 */ + local_10 = 0; + local_8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x31); + memcpy(__dest,"getBufferPoolController(): unknown BufferPool ID\n",0x31); + cv::error(-5,(String *)&local_10, + "virtual cv::BufferPoolController* cv::ocl::OpenCLAllocator::getBufferPoolController(const char*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1423); + /* WARNING: Does not return */ + pcVar1 = (code *)SoftwareBreakpoint(1000,0x35032c); + (*pcVar1)(); + } + } + return param_1 + 8; +} + + +================================================================== + +### FUNC 00350340 (8 bytes) name=haveOpenCL + +/* cv::ocl::haveOpenCL() */ + +undefined8 cv::ocl::haveOpenCL(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00350348 (8 bytes) name=haveAmdBlas + +/* cv::ocl::haveAmdBlas() */ + +undefined8 cv::ocl::haveAmdBlas(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00350350 (8 bytes) name=haveAmdFft + +/* cv::ocl::haveAmdFft() */ + +undefined8 cv::ocl::haveAmdFft(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00350358 (8 bytes) name=haveSVM + +/* cv::ocl::haveSVM() */ + +undefined8 cv::ocl::haveSVM(void) + +{ + /* try { // try from 00350358 to 00450377 has its CatchHandler @ 00351ce0 */ + return 0; +} + + +================================================================== + +### FUNC 00350360 (656 bytes) name=FUN_00350360 + +void FUN_00350360(long param_1) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + undefined2 uVar10; + int iVar11; + size_t __n; + void *__dest; + char *pcVar12; + int *piVar13; + long lVar14; + uint local_404; + long local_400; + long local_3f8; + undefined8 local_3f0; + char acStack_3e8 [1000]; + + local_404 = (uint)*(byte *)(param_1 + 0x20); + if (local_404 == 0) { + /* try { // try from 003503b8 to 004503bb has its CatchHandler @ 00351b38 */ + if ((((DAT_005320b8 == (code *)0x0) && + (DAT_005320b8 = (code *)FUN_0034d2bc("clGetPlatformIDs"), DAT_005320b8 == (code *)0x0)) || + (iVar11 = (*DAT_005320b8)(1,param_1 + 8,&local_404), iVar11 != 0)) || (local_404 == 0)) { + *(undefined8 *)(param_1 + 8) = 0; + } + else { + lVar14 = *(long *)(param_1 + 8); + if (lVar14 != 0) { + local_400 = 0; + if (DAT_00532119 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + lVar14 = *(long *)(param_1 + 8); + DAT_00532119 = '\x01'; + } + /* try { // try from 003503f0 to 00450433 has its CatchHandler @ 00351b38 */ + if (DAT_005329c8 == '\0') { + /* try { // try from 003505dc to 00450647 has its CatchHandler @ 003518c4 */ + if ((DAT_005320b0 != (code *)0x0) || + (DAT_005320b0 = (code *)FUN_0034d2bc("clGetPlatformInfo"), DAT_005320b0 != (code *)0x0) + ) { + (*DAT_005320b0)(lVar14,0x903,1000,acStack_3e8,&local_400); + } + } + else if (((DAT_005320b0 == (code *)0x0) && + (DAT_005320b0 = (code *)FUN_0034d2bc("clGetPlatformInfo"), + DAT_005320b0 == (code *)0x0)) || + (iVar11 = (*DAT_005320b0)(lVar14,0x903,1000,acStack_3e8,&local_400), iVar11 != 0)) { + local_3f8 = 0; + local_3f0 = 0; + pcVar12 = (char *)cv::String::allocate((String *)&local_3f8,0x3e); + uVar10 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._60_2_; + uVar9 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._56_4_; + uVar8 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._40_8_; + uVar7 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._32_8_; + uVar6 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._24_8_; + uVar5 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._16_8_; + uVar4 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._8_8_; + uVar3 = s_clGetPlatformInfo_handle__0x0903_0046d7b0._0_8_; + *(undefined8 *)(pcVar12 + 0x30) = s_clGetPlatformInfo_handle__0x0903_0046d7b0._48_8_; + *(undefined4 *)(pcVar12 + 0x38) = uVar9; + *(undefined2 *)(pcVar12 + 0x3c) = uVar10; + *(undefined8 *)pcVar12 = uVar3; + *(undefined8 *)(pcVar12 + 8) = uVar4; + *(undefined8 *)(pcVar12 + 0x10) = uVar5; + *(undefined8 *)(pcVar12 + 0x18) = uVar6; + *(undefined8 *)(pcVar12 + 0x20) = uVar7; + *(undefined8 *)(pcVar12 + 0x28) = uVar8; + cv::error(-0xd7,(String *)&local_3f8,"void cv::ocl::Platform::Impl::init()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x6a9); + cv::String::deallocate((String *)&local_3f8); + } + local_3f8 = 0; + local_3f0 = 0; + acStack_3e8[local_400] = '\0'; + __n = strlen(acStack_3e8); + __dest = (void *)cv::String::allocate((String *)&local_3f8,__n); + /* try { // try from 00350460 to 00450463 has its CatchHandler @ 00351a34 */ + memcpy(__dest,acStack_3e8,__n); + /* try { // try from 00350468 to 0045049b has its CatchHandler @ 00351b38 */ + if ((String *)(param_1 + 0x10) != (String *)&local_3f8) { + cv::String::deallocate((String *)(param_1 + 0x10)); + if (local_3f8 != 0) { + piVar13 = (int *)(local_3f8 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar2) { + *piVar13 = *piVar13 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)(param_1 + 0x10) = local_3f8; + *(undefined8 *)(param_1 + 0x18) = local_3f0; + } + cv::String::deallocate((String *)&local_3f8); + } + } + *(undefined1 *)(param_1 + 0x20) = 1; + /* try { // try from 003504d4 to 004504d7 has its CatchHandler @ 00351e8c */ + /* try { // try from 003504dc to 0045056f has its CatchHandler @ 00351b38 */ + return; + } + return; +} + + +================================================================== + +### FUNC 00350618 (8 bytes) name=Platform + +/* cv::ocl::Platform::Platform() */ + +void __thiscall cv::ocl::Platform::Platform(Platform *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00350620 (32 bytes) name=Platform + +/* cv::ocl::Platform::Platform(cv::ocl::Platform const&) */ + +void __thiscall cv::ocl::Platform::Platform(Platform *this,Platform *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 00350640 (152 bytes) name=operator= + +/* cv::ocl::Platform::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Platform const&) */ + +Platform * __thiscall cv::ocl::Platform::operator=(Platform *this,Platform *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + + piVar5 = *(int **)param_1; + if (piVar5 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = *piVar5 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + /* try { // try from 003506b4 to 004506b7 has its CatchHandler @ 00351a54 */ + String::deallocate((String *)(piVar4 + 4)); + operator_delete(piVar4); + *(int **)this = piVar5; + return this; + } + } + *(int **)this = piVar5; + return this; +} + + +================================================================== + +### FUNC 003506d8 (16 bytes) name=ptr + +/* cv::ocl::Platform::ptr() const */ + +undefined8 __thiscall cv::ocl::Platform::ptr(Platform *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 8); + } + return uVar1; +} + + +================================================================== + +### FUNC 003506e8 (172 bytes) name=getDefault + +/* cv::ocl::Platform::getDefault() */ + +undefined8 * cv::ocl::Platform::getDefault(void) + +{ + int iVar1; + + /* try { // try from 003506f8 to 004506fb has its CatchHandler @ 00351a44 */ + /* try { // try from 00350700 to 004507e7 has its CatchHandler @ 00351a54 */ + if (((DAT_00532080 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00532080), iVar1 != 0)) { + Platform((Platform *)&DAT_00532148); + __cxa_guard_release(&DAT_00532080); + __cxa_atexit(PTR__Platform_00501ca0,&DAT_00532148,&DAT_00502000); + } + if (DAT_00532148 != (undefined4 *)0x0) { + return &DAT_00532148; + } + DAT_00532148 = operator_new(0x28); + *(undefined8 *)(DAT_00532148 + 4) = 0; + *(undefined8 *)(DAT_00532148 + 6) = 0; + *DAT_00532148 = 1; + *(undefined8 *)(DAT_00532148 + 2) = 0; + *(undefined1 *)(DAT_00532148 + 8) = 0; + FUN_00350360(); + return &DAT_00532148; +} + + +================================================================== + +### FUNC 003507a8 (1848 bytes) name=FUN_003507a8 + +void FUN_003507a8(undefined4 *param_1,undefined8 param_2) + +{ + char cVar1; + bool bVar2; + code *pcVar3; + int iVar4; + ulong uVar5; + void *pvVar6; + char *pcVar7; + undefined4 uVar8; + int *piVar9; + ulong uVar10; + ulong uVar11; + char *pcVar12; + undefined8 uVar13; + long lVar14; + int local_a8; + undefined4 local_a4; + undefined8 local_a0; + long local_98; + long local_90; + long local_88; + undefined8 local_80; + long local_78; + undefined8 local_70; + long local_68; + long local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + char *local_40; + ulong local_38; + long local_30; + undefined8 local_28; + char *local_20; + ulong local_18; + char *local_10; + ulong local_8; + + *(undefined8 *)(param_1 + 4) = 0; + *(undefined8 *)(param_1 + 6) = 0; + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 *)(param_1 + 10) = 0; + *(undefined8 *)(param_1 + 0x16) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x1a) = 0; + *(undefined8 *)(param_1 + 0x1c) = 0; + *(undefined8 *)(param_1 + 2) = param_2; + *param_1 = 1; + FUN_0034e2e8((String *)&local_60,param_2,0x102b); + if ((String *)(param_1 + 4) != (String *)&local_60) { + cv::String::deallocate((String *)(param_1 + 4)); + if (local_60 != 0) { + piVar9 = (int *)(local_60 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)(param_1 + 4) = local_60; + *(undefined8 *)(param_1 + 6) = local_58; + } + cv::String::deallocate((String *)&local_60); + FUN_0034e2e8((String *)&local_50,*(undefined8 *)(param_1 + 2),0x102f); + if ((String *)(param_1 + 8) != (String *)&local_50) { + cv::String::deallocate((String *)(param_1 + 8)); + if (local_50 != 0) { + piVar9 = (int *)(local_50 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + /* try { // try from 003508a8 to 004508ab has its CatchHandler @ 00351610 */ + *(long *)(param_1 + 8) = local_50; + /* try { // try from 003508b0 to 004508c7 has its CatchHandler @ 00351a54 */ + *(undefined8 *)(param_1 + 10) = local_48; + } + cv::String::deallocate((String *)&local_50); + local_a0 = 0; + local_98 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if ((((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) || + (iVar4 = (*DAT_00532990)(uVar13,0x1032,8,&local_a0,&local_98), pcVar3 = DAT_00532990, + iVar4 != 0)) || (local_98 != 8)) { + pcVar3 = DAT_00532990; + local_a8 = 0; + param_1[0xc] = 0; + local_90 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 == (code *)0x0) goto LAB_00350d70; +LAB_0035091c: + /* try { // try from 0035092c to 0045092f has its CatchHandler @ 003511dc */ + iVar4 = (*DAT_00532990)(uVar13,0x1035,4,&local_a8,&local_90); + pcVar3 = DAT_00532990; + if ((iVar4 != 0) || (local_90 != 4)) goto LAB_0035094c; + local_a4 = 0; + local_88 = 0; + *(bool *)(param_1 + 0xd) = local_a8 != 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 == (code *)0x0) goto LAB_00350e10; +LAB_00350964: + iVar4 = (*DAT_00532990)(uVar13,0x1002,4,&local_a4,&local_88); + pcVar3 = DAT_00532990; + if ((iVar4 != 0) || (local_88 != 4)) goto LAB_00350990; + param_1[0xe] = local_a4; + local_80 = 0; + local_78 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 == (code *)0x0) goto LAB_00350d3c; +LAB_003509ac: + iVar4 = (*DAT_00532990)(uVar13,0x1004,8,&local_80,&local_78); + pcVar3 = DAT_00532990; + if ((iVar4 != 0) || (local_78 != 8)) goto LAB_003509d8; + *(undefined8 *)(param_1 + 0x10) = local_80; + local_70 = 0; + local_68 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 == (code *)0x0) goto LAB_00350d08; +LAB_003509f4: + iVar4 = (*DAT_00532990)(uVar13,0x1000,8,&local_70,&local_68); + if ((iVar4 != 0) || (local_68 != 8)) goto LAB_00350a20; + uVar8 = (undefined4)local_70; + } + else { + param_1[0xc] = (undefined4)local_a0; + local_a8 = 0; + local_90 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 != (code *)0x0) goto LAB_0035091c; +LAB_00350d70: + local_90 = 0; + local_a8 = 0; + DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"); + if (DAT_00532990 != (code *)0x0) goto LAB_0035091c; +LAB_0035094c: + pcVar3 = DAT_00532990; + *(undefined1 *)(param_1 + 0xd) = 0; + local_a4 = 0; + local_88 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 != (code *)0x0) goto LAB_00350964; +LAB_00350e10: + local_88 = 0; + local_a4 = 0; + DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"); + if (DAT_00532990 != (code *)0x0) goto LAB_00350964; +LAB_00350990: + pcVar3 = DAT_00532990; + local_80 = 0; + param_1[0xe] = 0; + /* try { // try from 003509a0 to 004510a3 has its CatchHandler @ 00351a54 */ + local_78 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 != (code *)0x0) goto LAB_003509ac; +LAB_00350d3c: + local_78 = 0; + local_80 = 0; + DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"); + if (DAT_00532990 != (code *)0x0) goto LAB_003509ac; +LAB_003509d8: + pcVar3 = DAT_00532990; + local_70 = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + local_68 = 0; + uVar13 = *(undefined8 *)(param_1 + 2); + if (pcVar3 != (code *)0x0) goto LAB_003509f4; +LAB_00350d08: + local_68 = 0; + local_70 = 0; + DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"); + if (DAT_00532990 != (code *)0x0) goto LAB_003509f4; +LAB_00350a20: + uVar8 = 0; + } + param_1[0x12] = uVar8; + FUN_0034e2e8((String *)&local_40,*(undefined8 *)(param_1 + 2),0x102d); + if ((String *)(param_1 + 0x16) != (String *)&local_40) { + cv::String::deallocate((String *)(param_1 + 0x16)); + if (local_40 != (char *)0x0) { + piVar9 = (int *)(local_40 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(char **)(param_1 + 0x16) = local_40; + *(ulong *)(param_1 + 0x18) = local_38; + } + cv::String::deallocate((String *)&local_40); + FUN_0034e2e8((String *)&local_40,*(undefined8 *)(param_1 + 2),0x102f); + uVar11 = local_38; + pcVar12 = local_40; + param_1[0x14] = 0; + param_1[0x13] = 0; + if (((10 < local_38) && (local_40 != (char *)0x0)) && + (iVar4 = strncmp(local_40,"OpenCL ",7), iVar4 == 0)) { + pcVar7 = pcVar12 + 7; + if (pcVar7 <= pcVar12 + (uVar11 - 1)) { + do { + if (*pcVar7 == '.') { + lVar14 = (long)pcVar7 - (long)pcVar12; + if (lVar14 != -1) { + uVar5 = lVar14 - 7; + uVar10 = uVar11 - 7; + local_20 = (char *)0x0; + local_18 = 0; + if ((uVar5 < uVar10) && (uVar10 = uVar5, uVar5 == 0)) { + pcVar12 = ""; + } + else { + if (uVar11 == uVar10) { + piVar9 = (int *)(pcVar12 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + local_20 = local_40; + local_18 = local_38; + } + else { + pvVar6 = (void *)cv::String::allocate((String *)&local_20,uVar10); + memcpy(pvVar6,local_40 + 7,uVar10); + } + pcVar12 = local_20; + uVar11 = local_38; + if (local_20 == (char *)0x0) { + pcVar12 = ""; + } + } + iVar4 = atoi(pcVar12); + local_10 = (char *)0x0; + param_1[0x13] = iVar4; + uVar10 = uVar11; + if (lVar14 + 1U < uVar11) { + uVar10 = lVar14 + 1U; + } + local_8 = 0; + uVar5 = uVar11 - uVar10; + if (uVar5 != 0) { + if (uVar11 == uVar5) { + piVar9 = (int *)(local_40 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + local_10 = local_40; + local_8 = local_38; + } + else { + pvVar6 = (void *)cv::String::allocate((String *)&local_10,uVar5); + memcpy(pvVar6,local_40 + uVar10,uVar5); + } + } + cv::String::deallocate((String *)&local_20); + if (local_10 != (char *)0x0) { + piVar9 = (int *)(local_10 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + local_20 = local_10; + local_18 = local_8; + cv::String::deallocate((String *)&local_10); + pcVar12 = local_20; + if (local_20 == (char *)0x0) { + pcVar12 = ""; + } + iVar4 = atoi(pcVar12); + param_1[0x14] = iVar4; + cv::String::deallocate((String *)&local_20); + } + break; + } + pcVar7 = pcVar7 + 1; + } while (pcVar7 != pcVar12 + (uVar11 - 1) + 1); + } + } + FUN_0034e2e8((String *)&local_30,*(undefined8 *)(param_1 + 2),0x102c); + if ((String *)(param_1 + 0x1a) != (String *)&local_30) { + cv::String::deallocate((String *)(param_1 + 0x1a)); + if (local_30 != 0) { + piVar9 = (int *)(local_30 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)(param_1 + 0x1a) = local_30; + *(undefined8 *)(param_1 + 0x1c) = local_28; + } + cv::String::deallocate((String *)&local_30); + pcVar12 = *(char **)(param_1 + 0x1a); + if (pcVar12 == "Advanced Micro Devices, Inc.") { +LAB_00350cb0: + param_1[0x1e] = 1; + } + else { + if (pcVar12 == (char *)0x0) { +LAB_00350da8: + if ((*(char **)(param_1 + 4) == (char *)0x0) || + (pcVar7 = strstr(*(char **)(param_1 + 4),"Iris"), pcVar7 == (char *)0x0)) { + if ((pcVar12 == "NVIDIA Corporation") || + ((pcVar12 != (char *)0x0 && (iVar4 = strcmp(pcVar12,"NVIDIA Corporation"), iVar4 == 0)))) + { + param_1[0x1e] = 3; + } + else { + param_1[0x1e] = 0; + } + goto LAB_00350cb8; + } + } + else { + iVar4 = strcmp(pcVar12,"Advanced Micro Devices, Inc."); + if (((iVar4 == 0) || (pcVar12 == "AMD")) || (iVar4 = strcmp(pcVar12,"AMD"), iVar4 == 0)) + goto LAB_00350cb0; + if ((((pcVar12 != "Intel(R) Corporation") && + (iVar4 = strcmp(pcVar12,"Intel(R) Corporation"), iVar4 != 0)) && (pcVar12 != "Intel")) && + (iVar4 = strcmp(pcVar12,"Intel"), iVar4 != 0)) goto LAB_00350da8; + } + param_1[0x1e] = 2; + } +LAB_00350cb8: + cv::String::deallocate((String *)&local_40); + return; +} + + +================================================================== + +### FUNC 00350fc8 (8 bytes) name=Device + +/* cv::ocl::Device::Device() */ + +void __thiscall cv::ocl::Device::Device(Device *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00350fd0 (32 bytes) name=Device + +/* cv::ocl::Device::Device(cv::ocl::Device const&) */ + +void __thiscall cv::ocl::Device::Device(Device *this,Device *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 00350ff0 (176 bytes) name=operator= + +/* cv::ocl::Device::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Device const&) */ + +Device * __thiscall cv::ocl::Device::operator=(Device *this,Device *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + + piVar5 = *(int **)param_1; + if (piVar5 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = *piVar5 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + String::deallocate((String *)(piVar4 + 0x1a)); + String::deallocate((String *)(piVar4 + 0x16)); + String::deallocate((String *)(piVar4 + 8)); + String::deallocate((String *)(piVar4 + 4)); + operator_delete(piVar4); + *(int **)this = piVar5; + return this; + } + } + *(int **)this = piVar5; + return this; +} + + +================================================================== + +### FUNC 003510d4 (152 bytes) name=set + +/* cv::ocl::Device::set(void*) */ + +void __thiscall cv::ocl::Device::set(Device *this,void *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + void *pvVar4; + int *piVar5; + + /* try { // try from 003510d8 to 004510ef has its CatchHandler @ 00351b38 */ + piVar5 = *(int **)this; + if (piVar5 != (int *)0x0) { + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + String::deallocate((String *)(piVar5 + 0x1a)); + String::deallocate((String *)(piVar5 + 0x16)); + String::deallocate((String *)(piVar5 + 8)); + String::deallocate((String *)(piVar5 + 4)); + /* try { // try from 00351160 to 00451163 has its CatchHandler @ 00351ce0 */ + operator_delete(piVar5); + /* try { // try from 00351168 to 00451183 has its CatchHandler @ 00351db4 */ + } + } + pvVar4 = operator_new(0x80); + FUN_003507a8(pvVar4,param_1); + *(void **)this = pvVar4; + return; +} + + +================================================================== + +### FUNC 003511b4 (8 bytes) name=Device + +/* cv::ocl::Device::Device(void*) */ + +void __thiscall cv::ocl::Device::Device(Device *this,void *param_1) + +{ + *(undefined8 *)this = 0; + set(this,param_1); + return; +} + + +================================================================== + +### FUNC 003511bc (16 bytes) name=ptr + +/* cv::ocl::Device::ptr() const */ + +undefined8 __thiscall cv::ocl::Device::ptr(Device *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 8); + } + return uVar1; +} + + +================================================================== + +### FUNC 003511cc (68 bytes) name=name + +/* cv::ocl::Device::name() const */ + +void cv::ocl::Device::name(void) + +{ + char cVar1; + bool bVar2; + long *in_x0; + long lVar3; + int *piVar4; + long lVar5; + long *in_x8; + + lVar5 = *in_x0; + if (lVar5 != 0) { + lVar3 = *(long *)(lVar5 + 0x10); + /* catch() { ... } // from try @ 0035092c with catch @ 003511dc */ + in_x8[1] = *(long *)(lVar5 + 0x18); + *in_x8 = lVar3; + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 00351210 (72 bytes) name=extensions + +/* cv::ocl::Device::extensions() const */ + +void cv::ocl::Device::extensions(void) + +{ + long *in_x0; + undefined8 *in_x8; + + if (*in_x0 != 0) { + FUN_0034e2e8(*(undefined8 *)(*in_x0 + 8),0x1030); + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 00351258 (68 bytes) name=version + +/* cv::ocl::Device::version() const */ + +void cv::ocl::Device::version(void) + +{ + char cVar1; + bool bVar2; + long *in_x0; + long lVar3; + int *piVar4; + long lVar5; + long *in_x8; + + lVar5 = *in_x0; + if (lVar5 != 0) { + lVar3 = *(long *)(lVar5 + 0x20); + in_x8[1] = *(long *)(lVar5 + 0x28); + *in_x8 = lVar3; + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; + } + *in_x8 = 0; + /* try { // try from 00351294 to 00451297 has its CatchHandler @ 003502a0 */ + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 0035129c (68 bytes) name=vendorName + +/* cv::ocl::Device::vendorName() const */ + +void cv::ocl::Device::vendorName(void) + +{ + char cVar1; + bool bVar2; + long *in_x0; + long lVar3; + int *piVar4; + long lVar5; + long *in_x8; + + lVar5 = *in_x0; + if (lVar5 != 0) { + lVar3 = *(long *)(lVar5 + 0x68); + in_x8[1] = *(long *)(lVar5 + 0x70); + *in_x8 = lVar3; + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 003512e0 (16 bytes) name=vendorID + +/* cv::ocl::Device::vendorID() const */ + +undefined4 __thiscall cv::ocl::Device::vendorID(Device *this) + +{ + undefined4 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined4 *)(*(long *)this + 0x78); + } + return uVar1; +} + + +================================================================== + +### FUNC 003512f0 (72 bytes) name=OpenCL_C_Version + +/* cv::ocl::Device::OpenCL_C_Version() const */ + +void cv::ocl::Device::OpenCL_C_Version(void) + +{ + long *in_x0; + undefined8 *in_x8; + + if (*in_x0 != 0) { + FUN_0034e2e8(*(undefined8 *)(*in_x0 + 8),0x103d); + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 00351338 (72 bytes) name=OpenCLVersion + +/* cv::ocl::Device::OpenCLVersion() const */ + +void cv::ocl::Device::OpenCLVersion(void) + +{ + long *in_x0; + undefined8 *in_x8; + + if (*in_x0 != 0) { + FUN_0034e2e8(*(undefined8 *)(*in_x0 + 8),0x1030); + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 00351380 (16 bytes) name=deviceVersionMajor + +/* cv::ocl::Device::deviceVersionMajor() const */ + +undefined4 __thiscall cv::ocl::Device::deviceVersionMajor(Device *this) + +{ + undefined4 uVar1; + + /* try { // try from 00351384 to 00451387 has its CatchHandler @ 00351ce0 */ + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined4 *)(*(long *)this + 0x4c); + } + return uVar1; +} + + +================================================================== + +### FUNC 00351390 (16 bytes) name=deviceVersionMinor + +/* cv::ocl::Device::deviceVersionMinor() const */ + +undefined4 __thiscall cv::ocl::Device::deviceVersionMinor(Device *this) + +{ + undefined4 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined4 *)(*(long *)this + 0x50); + } + return uVar1; +} + + +================================================================== + +### FUNC 003513a0 (68 bytes) name=driverVersion + +/* cv::ocl::Device::driverVersion() const */ + +void cv::ocl::Device::driverVersion(void) + +{ + char cVar1; + bool bVar2; + long *in_x0; + long lVar3; + int *piVar4; + long lVar5; + long *in_x8; + + lVar5 = *in_x0; + if (lVar5 != 0) { + lVar3 = *(long *)(lVar5 + 0x58); + in_x8[1] = *(long *)(lVar5 + 0x60); + *in_x8 = lVar3; + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003513d0 to 004513d3 has its CatchHandler @ 00351a54 */ + } while (cVar1 != '\0'); + } + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 003513e4 (16 bytes) name=type + +/* cv::ocl::Device::type() const */ + +undefined4 __thiscall cv::ocl::Device::type(Device *this) + +{ + undefined4 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined4 *)(*(long *)this + 0x48); + } + return uVar1; +} + + +================================================================== + +### FUNC 003513f4 (152 bytes) name=addressBits + +/* cv::ocl::Device::addressBits() const */ + +undefined4 __thiscall cv::ocl::Device::addressBits(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + /* try { // try from 00351400 to 00451403 has its CatchHandler @ 00351664 */ + if (*(long *)this != 0) { + /* try { // try from 00351408 to 0045140b has its CatchHandler @ 00351a54 */ + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x100d,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035148c (176 bytes) name=available + +/* cv::ocl::Device::available() const */ + +ulong __thiscall cv::ocl::Device::available(Device *this) + +{ + ulong uVar1; + undefined8 uVar2; + int local_c; + long local_8; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar2 = *(undefined8 *)(*(long *)this + 8); + local_c = 0; + local_8 = 0; + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0; + } + uVar1 = (*DAT_00532990)(uVar2,0x1027,4,&local_c,&local_8); + if ((int)uVar1 != 0) { + return 0; + } + if (local_8 == 4) { + return (ulong)(local_c != 0); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 0035153c (176 bytes) name=compilerAvailable + +/* cv::ocl::Device::compilerAvailable() const */ + +ulong __thiscall cv::ocl::Device::compilerAvailable(Device *this) + +{ + ulong uVar1; + undefined8 uVar2; + int local_c; + long local_8; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar2 = *(undefined8 *)(*(long *)this + 8); + local_c = 0; + local_8 = 0; + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0; + } + uVar1 = (*DAT_00532990)(uVar2,0x1028,4,&local_c,&local_8); + if ((int)uVar1 != 0) { + return 0; + } + if (local_8 == 4) { + return (ulong)(local_c != 0); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 003515ec (176 bytes) name=linkerAvailable + +/* cv::ocl::Device::linkerAvailable() const */ + +ulong __thiscall cv::ocl::Device::linkerAvailable(Device *this) + +{ + ulong uVar1; + undefined8 uVar2; + int local_c; + long local_8; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar2 = *(undefined8 *)(*(long *)this + 8); + local_c = 0; + local_8 = 0; + /* catch() { ... } // from try @ 003508a8 with catch @ 00351610 */ + /* try { // try from 00351694 to 00451697 has its CatchHandler @ 00351a54 */ + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0; + } + uVar1 = (*DAT_00532990)(uVar2,0x103e,4,&local_c,&local_8); + if ((int)uVar1 != 0) { + /* catch() { ... } // from try @ 00351400 with catch @ 00351664 */ + return 0; + } + /* try { // try from 00351638 to 0045163b has its CatchHandler @ 00351a54 */ + if (local_8 == 4) { + return (ulong)(local_c != 0); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 0035169c (16 bytes) name=doubleFPConfig + +/* cv::ocl::Device::doubleFPConfig() const */ + +undefined4 __thiscall cv::ocl::Device::doubleFPConfig(Device *this) + +{ + undefined4 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined4 *)(*(long *)this + 0x30); + } + return uVar1; +} + + +================================================================== + +### FUNC 003516ac (152 bytes) name=singleFPConfig + +/* cv::ocl::Device::singleFPConfig() const */ + +ulong __thiscall cv::ocl::Device::singleFPConfig(Device *this) + +{ + int iVar1; + undefined8 uVar2; + ulong local_10; + long local_8; + + if (*(long *)this != 0) { + /* try { // try from 003516c4 to 004516c7 has its CatchHandler @ 003519e8 */ + local_10 = 0; + local_8 = 0; + /* try { // try from 003516cc to 004516cf has its CatchHandler @ 00351a54 */ + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x101b,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10 & 0xffffffff; + } + } + return 0; +} + + +================================================================== + +### FUNC 00351744 (152 bytes) name=halfFPConfig + +/* cv::ocl::Device::halfFPConfig() const */ + +ulong __thiscall cv::ocl::Device::halfFPConfig(Device *this) + +{ + int iVar1; + undefined8 uVar2; + ulong local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1033,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10 & 0xffffffff; + } + } + return 0; +} + + +================================================================== + +### FUNC 003517dc (176 bytes) name=endianLittle + +/* cv::ocl::Device::endianLittle() const */ + +ulong __thiscall cv::ocl::Device::endianLittle(Device *this) + +{ + ulong uVar1; + undefined8 uVar2; + int local_c; + long local_8; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar2 = *(undefined8 *)(*(long *)this + 8); + local_c = 0; + local_8 = 0; + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0; + } + uVar1 = (*DAT_00532990)(uVar2,0x1026,4,&local_c,&local_8); + if ((int)uVar1 != 0) { + return 0; + } + if (local_8 == 4) { + return (ulong)(local_c != 0); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 0035188c (176 bytes) name=errorCorrectionSupport + +/* cv::ocl::Device::errorCorrectionSupport() const */ + +ulong __thiscall cv::ocl::Device::errorCorrectionSupport(Device *this) + +{ + ulong uVar1; + undefined8 uVar2; + int local_c; + long local_8; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar2 = *(undefined8 *)(*(long *)this + 8); + local_c = 0; + local_8 = 0; + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0; + } + /* catch() { ... } // from try @ 003505dc with catch @ 003518c4 */ + uVar1 = (*DAT_00532990)(uVar2,0x1024,4,&local_c,&local_8); + if ((int)uVar1 != 0) { + return 0; + } + if (local_8 == 4) { + return (ulong)(local_c != 0); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 0035193c (152 bytes) name=executionCapabilities + +/* cv::ocl::Device::executionCapabilities() const */ + +ulong __thiscall cv::ocl::Device::executionCapabilities(Device *this) + +{ + int iVar1; + undefined8 uVar2; + ulong local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1029,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10 & 0xffffffff; + } + } + return 0; +} + + +================================================================== + +### FUNC 003519d4 (152 bytes) name=globalMemCacheSize + +/* cv::ocl::Device::globalMemCacheSize() const */ + +undefined8 __thiscall cv::ocl::Device::globalMemCacheSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + /* catch() { ... } // from try @ 003516c4 with catch @ 003519e8 */ + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 003506b4 with catch @ 00351a54 + catch() { ... } // from try @ 00350700 with catch @ 00351a54 + catch() { ... } // from try @ 003508b0 with catch @ 00351a54 + catch() { ... } // from try @ 003509a0 with catch @ 00351a54 + catch() { ... } // from try @ 003513d0 with catch @ 00351a54 + catch() { ... } // from try @ 00351408 with catch @ 00351a54 + catch() { ... } // from try @ 00351638 with catch @ 00351a54 + catch() { ... } // from try @ 00351694 with catch @ 00351a54 + catch() { ... } // from try @ 003516cc with catch @ 00351a54 */ + /* try { // try from 00351a20 to 00451a23 has its CatchHandler @ 00351b38 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x101e,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + /* catch() { ... } // from try @ 003506f8 with catch @ 00351a44 */ + return local_10; + } + } + /* catch() { ... } // from try @ 00350460 with catch @ 00351a34 */ + return 0; +} + + +================================================================== + +### FUNC 00351a6c (152 bytes) name=globalMemCacheType + +/* cv::ocl::Device::globalMemCacheType() const */ + +undefined4 __thiscall cv::ocl::Device::globalMemCacheType(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x101c,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00351b04 (152 bytes) name=globalMemCacheLineSize + +/* cv::ocl::Device::globalMemCacheLineSize() const */ + +undefined4 __thiscall cv::ocl::Device::globalMemCacheLineSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 003503e8 with catch @ 00351b28 */ + /* catch() { ... } // from try @ 003503b8 with catch @ 00351b38 + catch() { ... } // from try @ 003503f0 with catch @ 00351b38 + catch() { ... } // from try @ 00350468 with catch @ 00351b38 + catch() { ... } // from try @ 003504dc with catch @ 00351b38 + catch() { ... } // from try @ 003510d8 with catch @ 00351b38 + catch() { ... } // from try @ 00351a20 with catch @ 00351b38 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x101d,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00351b9c (152 bytes) name=globalMemSize + +/* cv::ocl::Device::globalMemSize() const */ + +undefined8 __thiscall cv::ocl::Device::globalMemSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x101f,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00351c34 (152 bytes) name=localMemSize + +/* cv::ocl::Device::localMemSize() const */ + +undefined8 __thiscall cv::ocl::Device::localMemSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1023,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00351ccc (152 bytes) name=localMemType + +/* cv::ocl::Device::localMemType() const */ + +undefined4 __thiscall cv::ocl::Device::localMemType(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + /* catch() { ... } // from try @ 00350358 with catch @ 00351ce0 + catch() { ... } // from try @ 00351160 with catch @ 00351ce0 + catch() { ... } // from try @ 00351384 with catch @ 00351ce0 + catch() { ... } // from try @ 00351cf0 with catch @ 00351ce0 */ + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00351cf0 to 00451cf3 has its CatchHandler @ 00351ce0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1022,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00351d64 (16 bytes) name=hostUnifiedMemory + +/* cv::ocl::Device::hostUnifiedMemory() const */ + +undefined1 __thiscall cv::ocl::Device::hostUnifiedMemory(Device *this) + +{ + undefined1 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined1 *)(*(long *)this + 0x34); + } + return uVar1; +} + + +================================================================== + +### FUNC 00351d74 (176 bytes) name=imageSupport + +/* cv::ocl::Device::imageSupport() const */ + +ulong __thiscall cv::ocl::Device::imageSupport(Device *this) + +{ + ulong uVar1; + undefined8 uVar2; + int local_c; + long local_8; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar2 = *(undefined8 *)(*(long *)this + 8); + local_c = 0; + local_8 = 0; + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + return 0; + } + /* catch() { ... } // from try @ 00350330 with catch @ 00351db4 + catch() { ... } // from try @ 00351168 with catch @ 00351db4 + catch() { ... } // from try @ 00351dc8 with catch @ 00351db4 */ + uVar1 = (*DAT_00532990)(uVar2,0x1016,4,&local_c,&local_8); + if ((int)uVar1 != 0) { + return 0; + } + /* try { // try from 00351dc8 to 00451dcb has its CatchHandler @ 00351db4 */ + if (local_8 == 4) { + return (ulong)(local_c != 0); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 00351e24 (244 bytes) name=imageFromBufferSupport + +/* cv::ocl::Device::imageFromBufferSupport() const */ + +bool __thiscall cv::ocl::Device::imageFromBufferSupport(Device *this) + +{ + long lVar1; + char *pcVar2; + long lVar3; + char *pcVar4; + long lVar5; + char *local_10; + long local_8; + + if (*(long *)this == 0) { + return false; + } + FUN_0034e2e8((String *)&local_10,*(undefined8 *)(*(long *)this + 8),0x1030); + /* catch() { ... } // from try @ 003504d4 with catch @ 00351e8c */ + if ((local_8 != 0) && (pcVar2 = local_10 + local_8, local_10 < pcVar2)) { + lVar5 = (long)pcVar2 - (long)local_10; + pcVar4 = local_10; + do { + /* try { // try from 00351ea8 to 00451eab has its CatchHandler @ 003502a0 */ + if (*pcVar4 == 'c') { + /* catch() { ... } // from try @ 00351edc with catch @ 00351eb0 + catch() { ... } // from try @ 00352098 with catch @ 00351eb0 + catch() { ... } // from try @ 00352170 with catch @ 00351eb0 */ + if (pcVar2 <= pcVar4) break; + lVar3 = 0; + while( true ) { + lVar1 = lVar3 + 1; + /* try { // try from 00351edc to 00451edf has its CatchHandler @ 00351eb0 */ + if ("cl_khr_image2d_from_buffer"[lVar3 + 1] == '\0') { + String::deallocate((String *)&local_10); + /* try { // try from 00351ef8 to 00451efb has its CatchHandler @ 0035214c */ + return (long)pcVar4 - (long)local_10 != -1; + } + if (pcVar4[lVar1] != "cl_khr_image2d_from_buffer"[lVar3 + 1]) break; + lVar3 = lVar1; + if (lVar1 == lVar5) goto LAB_00351e54; + } + } + pcVar4 = pcVar4 + 1; + lVar5 = lVar5 + -1; + } while (pcVar4 != pcVar2); + } +LAB_00351e54: + String::deallocate((String *)&local_10); + return false; +} + + +================================================================== + +### FUNC 00351f18 (152 bytes) name=imagePitchAlignment + +/* cv::ocl::Device::imagePitchAlignment() const */ + +undefined4 __thiscall cv::ocl::Device::imagePitchAlignment(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + /* try { // try from 00351f28 to 00451f2b has its CatchHandler @ 003521a8 */ + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00351f6c to 00451f6f has its CatchHandler @ 00352174 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x104a,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + /* try { // try from 00351f74 to 00451fb3 has its CatchHandler @ 003521a8 */ + return 0; +} + + +================================================================== + +### FUNC 00351fb0 (152 bytes) name=imageBaseAddressAlignment + +/* cv::ocl::Device::imageBaseAddressAlignment() const */ + +undefined4 __thiscall cv::ocl::Device::imageBaseAddressAlignment(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x104b,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + /* try { // try from 00352024 to 00452027 has its CatchHandler @ 0035214c */ + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352048 (152 bytes) name=image2DMaxWidth + +/* cv::ocl::Device::image2DMaxWidth() const */ + +undefined8 __thiscall cv::ocl::Device::image2DMaxWidth(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352098 to 004520b3 has its CatchHandler @ 00351eb0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1011,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + /* try { // try from 003520bc to 004520bf has its CatchHandler @ 0035214c */ + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 003520e0 (152 bytes) name=image2DMaxHeight + +/* cv::ocl::Device::image2DMaxHeight() const */ + +undefined8 __thiscall cv::ocl::Device::image2DMaxHeight(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352170 to 00452173 has its CatchHandler @ 00351eb0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1012,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + /* catch() { ... } // from try @ 00351ef8 with catch @ 0035214c + catch() { ... } // from try @ 00352024 with catch @ 0035214c + catch() { ... } // from try @ 003520bc with catch @ 0035214c */ + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352178 (152 bytes) name=image3DMaxWidth + +/* cv::ocl::Device::image3DMaxWidth() const */ + +undefined8 __thiscall cv::ocl::Device::image3DMaxWidth(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 00351f28 with catch @ 003521a8 + catch() { ... } // from try @ 00351f74 with catch @ 003521a8 */ + /* catch() { ... } // from try @ 003521f0 with catch @ 003521b0 + catch() { ... } // from try @ 0035269c with catch @ 003521b0 + catch() { ... } // from try @ 00352844 with catch @ 003521b0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1013,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + /* try { // try from 003521f0 to 004521f3 has its CatchHandler @ 003521b0 */ + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352210 (152 bytes) name=image3DMaxHeight + +/* cv::ocl::Device::image3DMaxHeight() const */ + +undefined8 __thiscall cv::ocl::Device::image3DMaxHeight(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + /* try { // try from 0035222c to 0045222f has its CatchHandler @ 00352848 */ + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1014,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 003522a8 (152 bytes) name=image3DMaxDepth + +/* cv::ocl::Device::image3DMaxDepth() const */ + +undefined8 __thiscall cv::ocl::Device::image3DMaxDepth(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 003522f0 to 004522f3 has its CatchHandler @ 00352850 */ + /* try { // try from 003522f8 to 0045231f has its CatchHandler @ 003527c8 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1015,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352340 (152 bytes) name=imageMaxBufferSize + +/* cv::ocl::Device::imageMaxBufferSize() const */ + +undefined8 __thiscall cv::ocl::Device::imageMaxBufferSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 003523c0 to 004523c3 has its CatchHandler @ 0035286c */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1040,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 003523d8 (152 bytes) name=imageMaxArraySize + +/* cv::ocl::Device::imageMaxArraySize() const */ + +undefined8 __thiscall cv::ocl::Device::imageMaxArraySize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352464 to 004524cf has its CatchHandler @ 003527c8 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1041,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352470 (152 bytes) name=maxClockFrequency + +/* cv::ocl::Device::maxClockFrequency() const */ + +undefined4 __thiscall cv::ocl::Device::maxClockFrequency(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x100c,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352508 (16 bytes) name=maxComputeUnits + +/* cv::ocl::Device::maxComputeUnits() const */ + +undefined4 __thiscall cv::ocl::Device::maxComputeUnits(Device *this) + +{ + undefined4 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined4 *)(*(long *)this + 0x38); + } + return uVar1; +} + + +================================================================== + +### FUNC 00352518 (152 bytes) name=maxConstantArgs + +/* cv::ocl::Device::maxConstantArgs() const */ + +undefined4 __thiscall cv::ocl::Device::maxConstantArgs(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352540 to 00452543 has its CatchHandler @ 00352864 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1021,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 003525b0 (152 bytes) name=maxConstantBufferSize + +/* cv::ocl::Device::maxConstantBufferSize() const */ + +undefined8 __thiscall cv::ocl::Device::maxConstantBufferSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + /* try { // try from 003525b4 to 004525b7 has its CatchHandler @ 00352848 */ + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1020,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + /* try { // try from 00352628 to 0045262b has its CatchHandler @ 00352894 */ + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352648 (152 bytes) name=maxMemAllocSize + +/* cv::ocl::Device::maxMemAllocSize() const */ + +undefined8 __thiscall cv::ocl::Device::maxMemAllocSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 0035269c to 004526f3 has its CatchHandler @ 003521b0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1010,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 003526e0 (152 bytes) name=maxParameterSize + +/* cv::ocl::Device::maxParameterSize() const */ + +undefined8 __thiscall cv::ocl::Device::maxParameterSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + /* try { // try from 003526fc to 004526ff has its CatchHandler @ 00352894 */ + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352708 to 0045270b has its CatchHandler @ 00352848 */ + /* try { // try from 00352714 to 00452717 has its CatchHandler @ 00352864 */ + /* try { // try from 00352720 to 00452723 has its CatchHandler @ 0035286c */ + /* try { // try from 0035272c to 0045272f has its CatchHandler @ 003527c8 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1017,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352778 (152 bytes) name=maxReadImageArgs + +/* cv::ocl::Device::maxReadImageArgs() const */ + +undefined4 __thiscall cv::ocl::Device::maxReadImageArgs(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 003522a4 with catch @ 003527c8 + catch() { ... } // from try @ 003522f8 with catch @ 003527c8 + catch() { ... } // from try @ 00352464 with catch @ 003527c8 + catch() { ... } // from try @ 0035272c with catch @ 003527c8 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x100e,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352810 (152 bytes) name=maxWriteImageArgs + +/* cv::ocl::Device::maxWriteImageArgs() const */ + +undefined4 __thiscall cv::ocl::Device::maxWriteImageArgs(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 0035220c with catch @ 00352894 + catch() { ... } // from try @ 00352628 with catch @ 00352894 + catch() { ... } // from try @ 003526fc with catch @ 00352894 */ + /* try { // try from 00352844 to 00452847 has its CatchHandler @ 003521b0 */ + /* catch() { ... } // from try @ 0035222c with catch @ 00352848 + catch() { ... } // from try @ 003525b4 with catch @ 00352848 + catch() { ... } // from try @ 00352708 with catch @ 00352848 */ + /* catch() { ... } // from try @ 003522f0 with catch @ 00352850 */ + /* catch() { ... } // from try @ 00352540 with catch @ 00352864 + catch() { ... } // from try @ 00352714 with catch @ 00352864 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x100f,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + /* catch() { ... } // from try @ 003523c0 with catch @ 0035286c + catch() { ... } // from try @ 00352720 with catch @ 0035286c */ + return 0; +} + + +================================================================== + +### FUNC 003528a8 (152 bytes) name=maxSamplers + +/* cv::ocl::Device::maxSamplers() const */ + +undefined4 __thiscall cv::ocl::Device::maxSamplers(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + /* catch() { ... } // from try @ 003528e8 with catch @ 003528a8 + catch() { ... } // from try @ 00352d94 with catch @ 003528a8 + catch() { ... } // from try @ 00352f3c with catch @ 003528a8 */ + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 003528e8 to 004528eb has its CatchHandler @ 003528a8 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1018,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + /* try { // try from 00352924 to 00452927 has its CatchHandler @ 00352f40 */ + return local_c; + } + } + /* try { // try from 00352904 to 00452907 has its CatchHandler @ 00352f8c */ + return 0; +} + + +================================================================== + +### FUNC 00352940 (16 bytes) name=maxWorkGroupSize + +/* cv::ocl::Device::maxWorkGroupSize() const */ + +undefined8 __thiscall cv::ocl::Device::maxWorkGroupSize(Device *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 0x40); + } + return uVar1; +} + + +================================================================== + +### FUNC 00352950 (152 bytes) name=maxWorkItemDims + +/* cv::ocl::Device::maxWorkItemDims() const */ + +undefined4 __thiscall cv::ocl::Device::maxWorkItemDims(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 0035299c to 0045299f has its CatchHandler @ 00352ec0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1003,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 003529e8 (376 bytes) name=maxWorkItemSizes + +/* cv::ocl::Device::maxWorkItemSizes(unsigned long*) const */ + +void __thiscall cv::ocl::Device::maxWorkItemSizes(Device *this,ulong *param_1) + +{ + int iVar1; + void *__dest; + undefined8 uVar2; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003529e8 to 004529eb has its CatchHandler @ 00352f48 */ + /* try { // try from 003529f0 to 00452a17 has its CatchHandler @ 00352ec0 */ + if (*(long *)this == 0) { + return; + } + local_18 = 0; + if (DAT_00532119 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + uVar2 = *(undefined8 *)(*(long *)this + 8); + } + else { + uVar2 = *(undefined8 *)(*(long *)this + 8); + } + if (DAT_005329c8 != '\0') { + if (((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1005,0x100,param_1,&local_18), iVar1 == 0)) { + return; + } + local_10 = 0; + local_8 = 0; + __dest = (void *)String::allocate((String *)&local_10,0x55); + memcpy(__dest,&DAT_0046d880,0x55); + error(-0xd7,(String *)&local_10,"void cv::ocl::Device::maxWorkItemSizes(size_t*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x83d); + String::deallocate((String *)&local_10); + return; + } + if ((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) { + DAT_00532990 = (code *)0x0; + return; + } + (*DAT_00532990)(uVar2,0x1005,0x100,param_1,&local_18); + /* try { // try from 00352ab8 to 00452abb has its CatchHandler @ 00352f64 */ + return; +} + + +================================================================== + +### FUNC 00352b74 (152 bytes) name=memBaseAddrAlign + +/* cv::ocl::Device::memBaseAddrAlign() const */ + +undefined4 __thiscall cv::ocl::Device::memBaseAddrAlign(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1019,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352c0c (152 bytes) name=nativeVectorWidthChar + +/* cv::ocl::Device::nativeVectorWidthChar() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthChar(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352c38 to 00452c3b has its CatchHandler @ 00352f5c */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1036,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352ca4 (152 bytes) name=nativeVectorWidthShort + +/* cv::ocl::Device::nativeVectorWidthShort() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthShort(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + /* try { // try from 00352cac to 00452caf has its CatchHandler @ 00352f40 */ + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1037,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + /* try { // try from 00352d20 to 00452d23 has its CatchHandler @ 00352f8c */ + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352d3c (152 bytes) name=nativeVectorWidthInt + +/* cv::ocl::Device::nativeVectorWidthInt() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthInt(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1038,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352dd4 (152 bytes) name=nativeVectorWidthLong + +/* cv::ocl::Device::nativeVectorWidthLong() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthLong(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + /* try { // try from 00352df4 to 00452df7 has its CatchHandler @ 00352f8c */ + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00352e00 to 00452e03 has its CatchHandler @ 00352f40 */ + /* try { // try from 00352e0c to 00452e0f has its CatchHandler @ 00352f5c */ + /* try { // try from 00352e18 to 00452e1b has its CatchHandler @ 00352f64 */ + /* try { // try from 00352e24 to 00452e27 has its CatchHandler @ 00352ec0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1039,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352e6c (152 bytes) name=nativeVectorWidthFloat + +/* cv::ocl::Device::nativeVectorWidthFloat() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthFloat(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 0035299c with catch @ 00352ec0 + catch() { ... } // from try @ 003529f0 with catch @ 00352ec0 + catch() { ... } // from try @ 00352b5c with catch @ 00352ec0 + catch() { ... } // from try @ 00352e24 with catch @ 00352ec0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x103a,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00352f04 (152 bytes) name=nativeVectorWidthDouble + +/* cv::ocl::Device::nativeVectorWidthDouble() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthDouble(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* catch() { ... } // from try @ 00352904 with catch @ 00352f8c + catch() { ... } // from try @ 00352d20 with catch @ 00352f8c + catch() { ... } // from try @ 00352df4 with catch @ 00352f8c */ + /* try { // try from 00352f3c to 00452f3f has its CatchHandler @ 003528a8 */ + /* catch() { ... } // from try @ 00352924 with catch @ 00352f40 + catch() { ... } // from try @ 00352cac with catch @ 00352f40 + catch() { ... } // from try @ 00352e00 with catch @ 00352f40 */ + /* catch() { ... } // from try @ 003529e8 with catch @ 00352f48 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x103b,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + /* catch() { ... } // from try @ 00352ab8 with catch @ 00352f64 + catch() { ... } // from try @ 00352e18 with catch @ 00352f64 */ + return 0; +} + + +================================================================== + +### FUNC 00352f9c (152 bytes) name=nativeVectorWidthHalf + +/* cv::ocl::Device::nativeVectorWidthHalf() const */ + +undefined4 __thiscall cv::ocl::Device::nativeVectorWidthHalf(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + /* catch() { ... } // from try @ 00352fe0 with catch @ 00352fa0 + catch() { ... } // from try @ 0035348c with catch @ 00352fa0 + catch() { ... } // from try @ 00353634 with catch @ 00352fa0 */ + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 0035301c to 0045301f has its CatchHandler @ 00353638 */ + /* try { // try from 00352fe0 to 00452fe3 has its CatchHandler @ 00352fa0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x103c,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + /* try { // try from 00352ffc to 00452fff has its CatchHandler @ 00353684 */ + return 0; +} + + +================================================================== + +### FUNC 00353034 (152 bytes) name=preferredVectorWidthChar + +/* cv::ocl::Device::preferredVectorWidthChar() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthChar(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1006,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + /* try { // try from 00353094 to 00453097 has its CatchHandler @ 003535b8 */ + return 0; +} + + +================================================================== + +### FUNC 003530cc (152 bytes) name=preferredVectorWidthShort + +/* cv::ocl::Device::preferredVectorWidthShort() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthShort(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + /* try { // try from 003530e0 to 004530e3 has its CatchHandler @ 00353640 */ + local_c = 0; + /* try { // try from 003530e8 to 0045310f has its CatchHandler @ 003535b8 */ + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1007,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00353164 (152 bytes) name=preferredVectorWidthInt + +/* cv::ocl::Device::preferredVectorWidthInt() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthInt(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 003531b0 to 004531b3 has its CatchHandler @ 0035365c */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1008,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 003531fc (152 bytes) name=preferredVectorWidthLong + +/* cv::ocl::Device::preferredVectorWidthLong() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthLong(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1009,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 00353294 (152 bytes) name=preferredVectorWidthFloat + +/* cv::ocl::Device::preferredVectorWidthFloat() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthFloat(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x100a,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035332c (152 bytes) name=preferredVectorWidthDouble + +/* cv::ocl::Device::preferredVectorWidthDouble() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthDouble(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + /* try { // try from 00353330 to 00453333 has its CatchHandler @ 00353654 */ + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x100b,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + /* try { // try from 003533a4 to 004533a7 has its CatchHandler @ 00353638 */ + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 003533c4 (152 bytes) name=preferredVectorWidthHalf + +/* cv::ocl::Device::preferredVectorWidthHalf() const */ + +undefined4 __thiscall cv::ocl::Device::preferredVectorWidthHalf(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined4 local_c; + long local_8; + + if (*(long *)this != 0) { + local_c = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 00353418 to 0045341b has its CatchHandler @ 00353684 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1034,4,&local_c,&local_8), iVar1 == 0)) && (local_8 == 4)) + { + return local_c; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035345c (152 bytes) name=printfBufferSize + +/* cv::ocl::Device::printfBufferSize() const */ + +undefined8 __thiscall cv::ocl::Device::printfBufferSize(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + if (*(long *)this != 0) { + local_10 = 0; + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 003534ec to 004534ef has its CatchHandler @ 00353684 */ + /* try { // try from 0035348c to 004534e3 has its CatchHandler @ 00352fa0 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1049,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 003534f4 (152 bytes) name=profilingTimerResolution + +/* cv::ocl::Device::profilingTimerResolution() const */ + +undefined8 __thiscall cv::ocl::Device::profilingTimerResolution(Device *this) + +{ + int iVar1; + undefined8 uVar2; + undefined8 local_10; + long local_8; + + /* try { // try from 003534f8 to 004534fb has its CatchHandler @ 00353638 */ + /* try { // try from 00353504 to 00453507 has its CatchHandler @ 00353654 */ + if (*(long *)this != 0) { + local_10 = 0; + /* try { // try from 00353510 to 00453513 has its CatchHandler @ 0035365c */ + local_8 = 0; + uVar2 = *(undefined8 *)(*(long *)this + 8); + /* try { // try from 0035351c to 0045351f has its CatchHandler @ 003535b8 */ + if ((((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) && + (iVar1 = (*DAT_00532990)(uVar2,0x1025,8,&local_10,&local_8), iVar1 == 0)) && (local_8 == 8)) + { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035358c (8 bytes) name=Context + +/* cv::ocl::Context::Context() */ + +void __thiscall cv::ocl::Context::Context(Context *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00353594 (32 bytes) name=Context + +/* cv::ocl::Context::Context(cv::ocl::Context const&) */ + +void __thiscall cv::ocl::Context::Context(Context *this,Context *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 003535b4 (16 bytes) name=ptr + +/* cv::ocl::Context::ptr() const */ + +undefined8 __thiscall cv::ocl::Context::ptr(Context *this) + +{ + undefined8 uVar1; + + /* catch() { ... } // from try @ 00353094 with catch @ 003535b8 + catch() { ... } // from try @ 003530e8 with catch @ 003535b8 + catch() { ... } // from try @ 00353254 with catch @ 003535b8 + catch() { ... } // from try @ 0035351c with catch @ 003535b8 */ + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 8); + } + return uVar1; +} + + +================================================================== + +### FUNC 003535c4 (28 bytes) name=ndevices + +/* cv::ocl::Context::ndevices() const */ + +long __thiscall cv::ocl::Context::ndevices(Context *this) + +{ + long lVar1; + long lVar2; + + lVar1 = *(long *)this; + lVar2 = 0; + if (lVar1 != 0) { + lVar2 = *(long *)(lVar1 + 0x18) - *(long *)(lVar1 + 0x10) >> 3; + } + return lVar2; +} + + +================================================================== + +### FUNC 003535e0 (176 bytes) name=device + +/* cv::ocl::Context::device(unsigned long) const */ + +undefined * __thiscall cv::ocl::Context::device(Context *this,ulong param_1) + +{ + int iVar1; + long lVar2; + + /* catch() { ... } // from try @ 003531b0 with catch @ 0035365c + catch() { ... } // from try @ 00353510 with catch @ 0035365c */ + if (((DAT_005320d8 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_005320d8), iVar1 != 0)) { + Device::Device((Device *)&DAT_00532098); + __cxa_guard_release(&DAT_005320d8); + /* catch() { ... } // from try @ 00352ffc with catch @ 00353684 + catch() { ... } // from try @ 00353418 with catch @ 00353684 + catch() { ... } // from try @ 003534ec with catch @ 00353684 */ + __cxa_atexit(PTR__Device_00501890,&DAT_00532098,&DAT_00502000); + } + lVar2 = *(long *)this; + if ((lVar2 != 0) && (param_1 < (ulong)(*(long *)(lVar2 + 0x18) - *(long *)(lVar2 + 0x10) >> 3))) { + /* try { // try from 00353634 to 00453637 has its CatchHandler @ 00352fa0 */ + /* catch() { ... } // from try @ 0035301c with catch @ 00353638 + catch() { ... } // from try @ 003533a4 with catch @ 00353638 + catch() { ... } // from try @ 003534f8 with catch @ 00353638 */ + return (undefined *)(*(long *)(lVar2 + 0x10) + param_1 * 8); + } + /* catch() { ... } // from try @ 003530e0 with catch @ 00353640 */ + /* catch() { ... } // from try @ 00353330 with catch @ 00353654 + catch() { ... } // from try @ 00353504 with catch @ 00353654 */ + return &DAT_00532098; +} + + +================================================================== + +### FUNC 003536a4 (8 bytes) name=useSVM + +/* cv::ocl::Context::useSVM() const */ + +undefined8 cv::ocl::Context::useSVM(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003536ac (132 bytes) name=setUseSVM + +/* cv::ocl::Context::setUseSVM(bool) */ + +void __thiscall cv::ocl::Context::setUseSVM(Context *this,bool param_1) + +{ + char *pcVar1; + undefined8 local_10; + undefined8 local_8; + + if (!param_1) { + return; + } + local_10 = 0; + local_8 = 0; + pcVar1 = (char *)String::allocate((String *)&local_10,8); + /* try { // try from 003536e8 to 004536eb has its CatchHandler @ 00353698 */ + /* try { // try from 00353704 to 00453707 has its CatchHandler @ 00353ca4 */ + *(undefined8 *)pcVar1 = s__enabled_0046d8d8._0_8_; + error(-0xd7,(String *)&local_10,"void cv::ocl::Context::setUseSVM(bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xb49); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00353744 (8 bytes) name=Queue + +/* cv::ocl::Queue::Queue() */ + +void __thiscall cv::ocl::Queue::Queue(Queue *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 0035374c (32 bytes) name=Queue + +/* cv::ocl::Queue::Queue(cv::ocl::Queue const&) */ + +void __thiscall cv::ocl::Queue::Queue(Queue *this,Queue *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 0035376c (264 bytes) name=operator= + +/* cv::ocl::Queue::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Queue const&) */ + +Queue * __thiscall cv::ocl::Queue::operator=(Queue *this,Queue *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + long lVar6; + undefined8 uVar7; + + /* try { // try from 0035377c to 0045377f has its CatchHandler @ 00353c44 */ + piVar5 = *(int **)param_1; + if (piVar5 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = *piVar5 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar6 = *(long *)(piVar4 + 2); + if (lVar6 != 0) { + if ((DAT_00532988 != (code *)0x0) || + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 != (code *)0x0)) { + (*DAT_00532988)(lVar6); + } + uVar7 = *(undefined8 *)(piVar4 + 2); + if ((DAT_00532138 != (code *)0x0) || + (DAT_00532138 = (code *)FUN_0034d2bc("clReleaseCommandQueue"), + DAT_00532138 != (code *)0x0)) { + (*DAT_00532138)(uVar7); + } + } + operator_delete(piVar4); + *(int **)this = piVar5; + return this; + } + } + *(int **)this = piVar5; + /* try { // try from 003537c0 to 004537c3 has its CatchHandler @ 00353cdc */ + /* try { // try from 003537c8 to 004539eb has its CatchHandler @ 00353c44 */ + return this; +} + + +================================================================== + +### FUNC 00353874 (204 bytes) name=~Queue + +/* cv::ocl::Queue::~Queue() */ + +void __thiscall cv::ocl::Queue::~Queue(Queue *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + undefined8 uVar6; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar5 = *(long *)(piVar4 + 2); + if (lVar5 != 0) { + if ((DAT_00532988 != (code *)0x0) || + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 != (code *)0x0)) { + (*DAT_00532988)(lVar5); + } + uVar6 = *(undefined8 *)(piVar4 + 2); + if ((DAT_00532138 != (code *)0x0) || + (DAT_00532138 = (code *)FUN_0034d2bc("clReleaseCommandQueue"), + DAT_00532138 != (code *)0x0)) { + (*DAT_00532138)(uVar6); + } + } + operator_delete(piVar4); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00353940 (336 bytes) name=finish + +/* cv::ocl::Queue::finish() */ + +void __thiscall cv::ocl::Queue::finish(Queue *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + long lVar5; + undefined8 local_10; + undefined8 local_8; + + if (*(long *)this == 0) { + return; + } + lVar5 = *(long *)(*(long *)this + 8); + if (lVar5 == 0) { + return; + } + if (DAT_00532119 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + lVar5 = *(long *)(*(long *)this + 8); + } + if (DAT_005329c8 == '\0') { + if ((DAT_00532988 == (code *)0x0) && + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 == (code *)0x0)) { + DAT_00532988 = (code *)0x0; + return; + } + (*DAT_00532988)(lVar5); + return; + } + if (((DAT_00532988 != (code *)0x0) || + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 != (code *)0x0)) && + (iVar3 = (*DAT_00532988)(lVar5), iVar3 == 0)) { + return; + } + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x18); + uVar2 = s_clFinish_p_>handle_____0_0046d900._8_8_; + uVar1 = s_clFinish_p_>handle_____0_0046d900._0_8_; + *(undefined8 *)(pcVar4 + 0x10) = s_clFinish_p_>handle_____0_0046d900._16_8_; + *(undefined8 *)pcVar4 = uVar1; + *(undefined8 *)(pcVar4 + 8) = uVar2; + /* try { // try from 00353a5c to 00453a5f has its CatchHandler @ 00353cac */ + error(-0xd7,(String *)&local_10,"void cv::ocl::Queue::finish()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xbe0); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00353aa4 (16 bytes) name=ptr + +/* cv::ocl::Queue::ptr() const */ + +undefined8 __thiscall cv::ocl::Queue::ptr(Queue *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 8); + } + return uVar1; +} + + +================================================================== + +### FUNC 00353ab4 (32 bytes) name=KernelArg + +/* cv::ocl::KernelArg::KernelArg() */ + +void __thiscall cv::ocl::KernelArg::KernelArg(KernelArg *this) + +{ + *(undefined4 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined4 *)(this + 0x20) = 1; + *(undefined4 *)(this + 0x24) = 1; + /* try { // try from 00353ad0 to 00453ad3 has its CatchHandler @ 00353ca4 */ + return; +} + + +================================================================== + +### FUNC 00353ad4 (28 bytes) name=KernelArg + +/* cv::ocl::KernelArg::KernelArg(int, cv::UMat*, int, int, void const*, unsigned long) */ + +void __thiscall +cv::ocl::KernelArg::KernelArg + (KernelArg *this,int param_1,UMat *param_2,int param_3,int param_4,void *param_5, + ulong param_6) + +{ + *(int *)this = param_1; + *(UMat **)(this + 8) = param_2; + *(void **)(this + 0x10) = param_5; + *(ulong *)(this + 0x18) = param_6; + *(int *)(this + 0x20) = param_3; + *(int *)(this + 0x24) = param_4; + return; +} + + +================================================================== + +### FUNC 00353af0 (256 bytes) name=Constant + +/* cv::ocl::KernelArg::Constant(cv::Mat const&) */ + +void __thiscall cv::ocl::KernelArg::Constant(KernelArg *this,Mat *param_1) + +{ + long lVar1; + int iVar2; + undefined8 uVar3; + char *pcVar4; + long lVar5; + long lVar6; + ulong uVar7; + KernelArg *in_x8; + undefined8 local_10; + undefined8 local_8; + + if ((*(uint *)this >> 0xe & 1) == 0) { + /* try { // try from 00353b9c to 00453b9f has its CatchHandler @ 00353cb4 */ + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x10); + uVar3 = s_m_isContinuous___0046d920._8_8_; + *(undefined8 *)pcVar4 = s_m_isContinuous___0046d920._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar3; + error(-0xd7,(String *)&local_10, + "static cv::ocl::KernelArg cv::ocl::KernelArg::Constant(const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xc07); + String::deallocate((String *)&local_10); + } + iVar2 = *(int *)(this + 4); + if (iVar2 < 3) { + lVar6 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + if (iVar2 < 1) { + uVar7 = 0; + goto LAB_00353b44; + } + } + else { + lVar5 = 0; + /* try { // try from 00353b78 to 00453b7b has its CatchHandler @ 00353cac */ + lVar6 = 1; + do { + lVar1 = lVar5 * 4; + lVar5 = lVar5 + 1; + /* try { // try from 00353b84 to 00453b87 has its CatchHandler @ 00353698 */ + lVar6 = lVar6 * *(int *)(*(long *)(this + 0x40) + lVar1); + } while ((int)lVar5 < iVar2); + } + uVar7 = lVar6 * *(long *)(*(long *)(this + 0x48) + (long)iVar2 * 8 + -8); +LAB_00353b44: + /* try { // try from 00353b44 to 00453b47 has its CatchHandler @ 00353698 */ + KernelArg(in_x8,8,(UMat *)0x0,0,0,*(void **)(this + 0x10),uVar7); + /* try { // try from 00353b6c to 00453b6f has its CatchHandler @ 00353cb4 */ + return; +} + + +================================================================== + +### FUNC 00353c04 (8 bytes) name=Kernel + +/* cv::ocl::Kernel::Kernel() */ + +void __thiscall cv::ocl::Kernel::Kernel(Kernel *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00353c0c (32 bytes) name=Kernel + +/* cv::ocl::Kernel::Kernel(cv::ocl::Kernel const&) */ + +void __thiscall cv::ocl::Kernel::Kernel(Kernel *this,Kernel *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + /* try { // try from 00353c0c to 00453c0f has its CatchHandler @ 00353c44 */ + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 00353c2c (16 bytes) name=ptr + +/* cv::ocl::Kernel::ptr() const */ + +undefined8 __thiscall cv::ocl::Kernel::ptr(Kernel *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 8); + } + return uVar1; +} + + +================================================================== + +### FUNC 00353c3c (32 bytes) name=empty + +/* cv::ocl::Kernel::empty() const */ + +bool __thiscall cv::ocl::Kernel::empty(Kernel *this) + +{ + long lVar1; + + /* catch() { ... } // from try @ 0035377c with catch @ 00353c44 + catch() { ... } // from try @ 003537c8 with catch @ 00353c44 + catch() { ... } // from try @ 00353c0c with catch @ 00353c44 */ + lVar1 = ptr(this); + return lVar1 == 0; +} + + +================================================================== + +### FUNC 00353c5c (524 bytes) name=set + +/* cv::ocl::Kernel::set(int, void const*, unsigned long) */ + +int __thiscall cv::ocl::Kernel::set(Kernel *this,int param_1,void *param_2,ulong param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined2 uVar4; + int iVar5; + char *pcVar6; + long *plVar7; + long lVar8; + long *plVar9; + long lVar10; + undefined8 local_10; + undefined8 local_8; + + lVar10 = *(long *)this; + if (lVar10 == 0) { + return -1; + } + lVar8 = *(long *)(lVar10 + 8); + if (lVar8 == 0) { + return -1; + } + if (param_1 < 0) { + return param_1; + } + if (param_1 == 0) { + plVar9 = (long *)(lVar10 + 0x18); + do { + /* try { // try from 00353d48 to 00453d4b has its CatchHandler @ 00353cf8 */ + if (*plVar9 != 0) { + piVar1 = (int *)(*plVar9 + 0x10); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 00353d64 to 00453d67 has its CatchHandler @ 00354304 */ + if (iVar5 == 1) { + plVar7 = *(long **)(*plVar9 + 8); + (**(code **)(*plVar7 + 0x20))(plVar7,*plVar9); + /* try { // try from 00353ddc to 00453ddf has its CatchHandler @ 003542a4 */ + } + *plVar9 = 0; + } + plVar9 = plVar9 + 1; + } while (plVar9 != (long *)(lVar10 + 0x98)); + lVar8 = *(long *)this; + *(undefined4 *)(lVar10 + 0x98) = 0; + *(undefined1 *)(lVar10 + 0xb0) = 0; + lVar8 = *(long *)(lVar8 + 8); + if (DAT_00532008 == (code *)0x0) goto LAB_00353d94; +LAB_00353ca8: + /* catch() { ... } // from try @ 00353a5c with catch @ 00353cac + catch() { ... } // from try @ 00353b78 with catch @ 00353cac */ + /* catch() { ... } // from try @ 00353b6c with catch @ 00353cb4 + catch() { ... } // from try @ 00353b9c with catch @ 00353cb4 */ + iVar5 = (*DAT_00532008)(lVar8,param_1,param_3,param_2); + } + else { + /* try { // try from 00353ca0 to 00453ca3 has its CatchHandler @ 00353698 */ + /* catch() { ... } // from try @ 00353704 with catch @ 00353ca4 + catch() { ... } // from try @ 00353ad0 with catch @ 00353ca4 + catch() { ... } // from try @ 00353b90 with catch @ 00353ca4 */ + if (DAT_00532008 != (code *)0x0) goto LAB_00353ca8; +LAB_00353d94: + DAT_00532008 = (code *)FUN_0034d2bc("clSetKernelArg"); + if (DAT_00532008 != (code *)0x0) goto LAB_00353ca8; + iVar5 = -1000; + } + if (DAT_00532119 == '\0') { + /* catch() { ... } // from try @ 00353d48 with catch @ 00353cf8 + catch() { ... } // from try @ 003541a4 with catch @ 00353cf8 + catch() { ... } // from try @ 003541e4 with catch @ 00353cf8 + catch() { ... } // from try @ 00354300 with catch @ 00353cf8 */ + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + } + if (DAT_005329c8 == '\0') { + if (iVar5 == 0) goto LAB_00353cdc; + } + else { + if (iVar5 == 0) { +LAB_00353cdc: + s_retval____0_0046d938[8] = (char)s_retval____0_0046d938._8_2_; + s_retval____0_0046d938[9] = SUB21(s_retval____0_0046d938._8_2_,1); + s_retval____0_0046d938[0] = (char)s_retval____0_0046d938._0_8_; + s_retval____0_0046d938[1] = SUB81(s_retval____0_0046d938._0_8_,1); + s_retval____0_0046d938[2] = SUB81(s_retval____0_0046d938._0_8_,2); + s_retval____0_0046d938[3] = SUB81(s_retval____0_0046d938._0_8_,3); + s_retval____0_0046d938[4] = SUB81(s_retval____0_0046d938._0_8_,4); + s_retval____0_0046d938[5] = SUB81(s_retval____0_0046d938._0_8_,5); + s_retval____0_0046d938[6] = SUB81(s_retval____0_0046d938._0_8_,6); + s_retval____0_0046d938[7] = SUB81(s_retval____0_0046d938._0_8_,7); + /* catch() { ... } // from try @ 003537c0 with catch @ 00353cdc */ + return param_1 + 1; + } + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0xb); + cVar2 = s_retval____0_0046d938[10]; + uVar4 = s_retval____0_0046d938._8_2_; + /* try { // try from 00353e20 to 00453e23 has its CatchHandler @ 0035433c */ + /* try { // try from 00353e28 to 0045404b has its CatchHandler @ 003542a4 */ + *(undefined8 *)pcVar6 = s_retval____0_0046d938._0_8_; + *(undefined2 *)(pcVar6 + 8) = uVar4; + pcVar6[10] = cVar2; + error(-0xd7,(String *)&local_10,"int cv::ocl::Kernel::set(int, const void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xcba); + String::deallocate((String *)&local_10); + } + return -1; +} + + +================================================================== + +### FUNC 00353e7c (8 bytes) name=Program + +/* cv::ocl::Program::Program() */ + +void __thiscall cv::ocl::Program::Program(Program *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00353e84 (32 bytes) name=Program + +/* cv::ocl::Program::Program(cv::ocl::Program const&) */ + +void __thiscall cv::ocl::Program::Program(Program *this,Program *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 00353ea4 (232 bytes) name=operator= + +/* cv::ocl::Program::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Program const&) */ + +Program * __thiscall cv::ocl::Program::operator=(Program *this,Program *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + long lVar6; + + piVar5 = *(int **)param_1; + if (piVar5 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = *piVar5 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar6 = *(long *)(piVar4 + 8); + if (lVar6 != 0) { + if ((DAT_005329a8 != (code *)0x0) || + (DAT_005329a8 = (code *)FUN_0034d2bc("clReleaseProgram"), DAT_005329a8 != (code *)0x0)) { + (*DAT_005329a8)(lVar6); + } + piVar4[8] = 0; + piVar4[9] = 0; + } + String::deallocate((String *)(piVar4 + 4)); + ProgramSource::~ProgramSource((ProgramSource *)(piVar4 + 2)); + operator_delete(piVar4); + *(int **)this = piVar5; + return this; + } + } + *(int **)this = piVar5; + return this; +} + + +================================================================== + +### FUNC 00353fb0 (172 bytes) name=~Program + +/* cv::ocl::Program::~Program() */ + +void __thiscall cv::ocl::Program::~Program(Program *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar5 = *(long *)(piVar4 + 8); + if (lVar5 != 0) { + if ((DAT_005329a8 != (code *)0x0) || + (DAT_005329a8 = (code *)FUN_0034d2bc("clReleaseProgram"), DAT_005329a8 != (code *)0x0)) { + (*DAT_005329a8)(lVar5); + } + piVar4[8] = 0; + piVar4[9] = 0; + } + String::deallocate((String *)(piVar4 + 4)); + ProgramSource::~ProgramSource((ProgramSource *)(piVar4 + 2)); + operator_delete(piVar4); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00354080 (16 bytes) name=ptr + +/* cv::ocl::Program::ptr() const */ + +undefined8 __thiscall cv::ocl::Program::ptr(Program *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 0x20); + } + return uVar1; +} + + +================================================================== + +### FUNC 00354090 (8 bytes) name=ProgramSource + +/* cv::ocl::ProgramSource::ProgramSource() */ + +void __thiscall cv::ocl::ProgramSource::ProgramSource(ProgramSource *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00354098 (140 bytes) name=source + +/* cv::ocl::Program::source() const */ + +undefined * __thiscall cv::ocl::Program::source(Program *this) + +{ + int iVar1; + + if (((DAT_00532150 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00532150), iVar1 != 0)) { + ProgramSource::ProgramSource((ProgramSource *)&DAT_00532100); + __cxa_guard_release(&DAT_00532150); + __cxa_atexit(PTR__ProgramSource_00501f68,&DAT_00532100,&DAT_00502000); + } + /* try { // try from 003540bc to 004540bf has its CatchHandler @ 0035430c */ + if (*(long *)this != 0) { + return (undefined *)(*(long *)this + 8); + } + return &DAT_00532100; +} + + +================================================================== + +### FUNC 00354138 (608 bytes) name=ProgramSource + +/* cv::ocl::ProgramSource::ProgramSource(char const*) */ + +void __thiscall cv::ocl::ProgramSource::ProgramSource(ProgramSource *this,char *param_1) + +{ + char cVar1; + bool bVar2; + long lVar3; + undefined4 *puVar4; + size_t __n; + void *__dest; + byte *pbVar5; + byte *pbVar6; + ulong uVar8; + ulong uVar9; + int iVar10; + ulong uVar11; + byte *local_10; + long local_8; + byte *pbVar7; + + puVar4 = operator_new(0x20); + *(undefined8 *)(puVar4 + 2) = 0; + local_10 = (byte *)0x0; + *(undefined8 *)(puVar4 + 4) = 0; + local_8 = 0; + if (param_1 != (char *)0x0) { + __n = strlen(param_1); + __dest = (void *)String::allocate((String *)&local_10,__n); + memcpy(__dest,param_1,__n); + } + /* try { // try from 003541a4 to 004541a7 has its CatchHandler @ 00353cf8 */ + *puVar4 = 1; + if ((String *)(puVar4 + 2) == (String *)&local_10) { + pbVar5 = *(byte **)(puVar4 + 2); + lVar3 = *(long *)(puVar4 + 4); + } + else { + String::deallocate((String *)(puVar4 + 2)); + if (local_10 != (byte *)0x0) { + pbVar5 = local_10 + -4; + do { + /* try { // try from 003541cc to 004541cf has its CatchHandler @ 00354314 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(pbVar5,0x10); + if (bVar2) { + *(int *)pbVar5 = *(int *)pbVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + /* try { // try from 003541d8 to 004541db has its CatchHandler @ 0035430c */ + *(byte **)(puVar4 + 2) = local_10; + *(long *)(puVar4 + 4) = local_8; + /* try { // try from 003541e4 to 004541e7 has its CatchHandler @ 00353cf8 */ + pbVar5 = local_10; + lVar3 = local_8; + } + if (pbVar5 == (byte *)0x0) { + pbVar5 = &DAT_00472008; + } + /* try { // try from 003541f0 to 004541f3 has its CatchHandler @ 00354304 */ + if (DAT_00532128 == '\0') { + /* try { // try from 003541fc to 004541ff has its CatchHandler @ 00354314 */ + uVar11 = 0; + do { + uVar8 = uVar11 >> 1; + while( true ) { + uVar9 = uVar8 & 1; + if ((uVar8 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + uVar9 = uVar9 ^ uVar8 >> 1; + uVar8 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + uVar8 = 0xc96c5795d7870f42; + } + uVar8 = uVar8 ^ uVar9 >> 1; + uVar9 = uVar8 & 1; + if ((uVar8 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + uVar9 = uVar9 ^ uVar8 >> 1; + uVar8 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + /* try { // try from 0035426c to 0045426f has its CatchHandler @ 003542a4 */ + uVar8 = 0xc96c5795d7870f42; + } + uVar8 = uVar8 ^ uVar9 >> 1; + uVar9 = uVar8 & 1; + if ((uVar8 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + uVar9 = uVar9 ^ uVar8 >> 1; + uVar8 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + /* catch() { ... } // from try @ 00353ddc with catch @ 003542a4 + catch() { ... } // from try @ 00353e28 with catch @ 003542a4 + catch() { ... } // from try @ 0035426c with catch @ 003542a4 */ + uVar8 = 0xc96c5795d7870f42; + } + uVar8 = uVar8 ^ uVar9 >> 1; + uVar9 = uVar8 & 1; + if ((uVar8 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + iVar10 = (int)uVar11; + (&DAT_00532160)[uVar11] = uVar9 ^ uVar8 >> 1; + if (uVar11 == 0xff) { + /* catch() { ... } // from try @ 003541cc with catch @ 00354314 + catch() { ... } // from try @ 003541fc with catch @ 00354314 */ + DAT_00532128 = '\x01'; + goto LAB_00354318; + } + uVar11 = uVar11 + 1; + if ((iVar10 + 1U & 1) == 0) break; + /* try { // try from 00354300 to 00454303 has its CatchHandler @ 00353cf8 */ + uVar8 = uVar11 >> 1 ^ 0xc96c5795d7870f42; + /* catch() { ... } // from try @ 00353d64 with catch @ 00354304 + catch() { ... } // from try @ 00354130 with catch @ 00354304 + catch() { ... } // from try @ 003541f0 with catch @ 00354304 */ + } + } while( true ); + } +LAB_00354318: + if (lVar3 == 0) { + uVar11 = 0; + } + else { + uVar11 = 0xffffffffffffffff; + pbVar7 = pbVar5; + do { + pbVar6 = pbVar7 + 1; + /* catch() { ... } // from try @ 00353e20 with catch @ 0035433c */ + uVar11 = (&DAT_00532160)[(int)(((uint)*pbVar7 ^ (uint)uVar11) & 0xff)] ^ uVar11 >> 8; + pbVar7 = pbVar6; + } while (pbVar6 != pbVar5 + lVar3); + uVar11 = ~uVar11; + } + *(ulong *)(puVar4 + 6) = uVar11; + /* catch() { ... } // from try @ 003543a8 with catch @ 00354358 + catch() { ... } // from try @ 00354804 with catch @ 00354358 + catch() { ... } // from try @ 00354844 with catch @ 00354358 + catch() { ... } // from try @ 00354960 with catch @ 00354358 */ + String::deallocate((String *)&local_10); + *(undefined4 **)this = puVar4; + return; +} + + +================================================================== + +### FUNC 003543cc (624 bytes) name=ProgramSource + +/* cv::ocl::ProgramSource::ProgramSource(cv::String const&) */ + +void __thiscall cv::ocl::ProgramSource::ProgramSource(ProgramSource *this,String *param_1) + +{ + char cVar1; + bool bVar2; + undefined4 *puVar3; + int *piVar4; + long lVar5; + byte *pbVar6; + byte *pbVar7; + ulong uVar9; + ulong uVar10; + int iVar11; + ulong uVar12; + byte *pbVar8; + + puVar3 = operator_new(0x20); + *(undefined8 *)(puVar3 + 2) = 0; + *(undefined8 *)(puVar3 + 4) = 0; + *puVar3 = 1; + if (param_1 == (String *)(puVar3 + 2)) { + lVar5 = 0; + pbVar6 = &DAT_00472008; + if (DAT_00532128 != '\0') { + *(undefined8 *)(puVar3 + 6) = 0; + *(undefined4 **)this = puVar3; + return; + } + goto LAB_00354458; + } + String::deallocate((String *)(puVar3 + 2)); + if (*(long *)param_1 == 0) { + *(undefined8 *)(puVar3 + 2) = 0; + lVar5 = *(long *)(param_1 + 8); + *(long *)(puVar3 + 4) = lVar5; +LAB_0035460c: + pbVar6 = &DAT_00472008; + } + else { + piVar4 = (int *)(*(long *)param_1 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + pbVar6 = *(byte **)param_1; + lVar5 = *(long *)(param_1 + 8); + *(byte **)(puVar3 + 2) = pbVar6; + /* try { // try from 0035443c to 0045443f has its CatchHandler @ 00354904 */ + *(long *)(puVar3 + 4) = lVar5; + if (pbVar6 == (byte *)0x0) goto LAB_0035460c; + } + if (DAT_00532128 != '\0') { +LAB_00354574: + if (lVar5 != 0) { + uVar12 = 0xffffffffffffffff; + pbVar8 = pbVar6; + do { + pbVar7 = pbVar8 + 1; + uVar12 = (&DAT_00532160)[(int)(((uint)*pbVar8 ^ (uint)uVar12) & 0xff)] ^ uVar12 >> 8; + pbVar8 = pbVar7; + } while (pbVar7 != pbVar6 + lVar5); + *(ulong *)(puVar3 + 6) = ~uVar12; + *(undefined4 **)this = puVar3; + return; + } + *(undefined8 *)(puVar3 + 6) = 0; + *(undefined4 **)this = puVar3; + return; + } +LAB_00354458: + uVar12 = 0; + do { + uVar9 = uVar12 >> 1; + while( true ) { + uVar10 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + /* try { // try from 00354480 to 00454483 has its CatchHandler @ 0035499c */ + uVar10 = uVar10 ^ uVar9 >> 1; + uVar9 = uVar10 & 1; + /* try { // try from 00354488 to 004546ab has its CatchHandler @ 00354904 */ + if ((uVar10 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + uVar9 = uVar9 ^ uVar10 >> 1; + uVar10 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + uVar10 = uVar10 ^ uVar9 >> 1; + uVar9 = uVar10 & 1; + if ((uVar10 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + uVar9 = uVar9 ^ uVar10 >> 1; + uVar10 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + uVar10 = uVar10 ^ uVar9 >> 1; + uVar9 = uVar10 & 1; + if ((uVar10 & 1) != 0) { + uVar9 = 0xc96c5795d7870f42; + } + uVar9 = uVar9 ^ uVar10 >> 1; + uVar10 = uVar9 & 1; + if ((uVar9 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + iVar11 = (int)uVar12; + (&DAT_00532160)[uVar12] = uVar10 ^ uVar9 >> 1; + if (uVar12 == 0xff) { + DAT_00532128 = '\x01'; + goto LAB_00354574; + } + uVar12 = uVar12 + 1; + if ((iVar11 + 1U & 1) == 0) break; + uVar9 = uVar12 >> 1 ^ 0xc96c5795d7870f42; + } + } while( true ); +} + + +================================================================== + +### FUNC 00354658 (32 bytes) name=ProgramSource + +/* cv::ocl::ProgramSource::ProgramSource(cv::ocl::ProgramSource const&) */ + +void __thiscall cv::ocl::ProgramSource::ProgramSource(ProgramSource *this,ProgramSource *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 00354678 (152 bytes) name=operator= + +/* cv::ocl::ProgramSource::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::ProgramSource const&) */ + +ProgramSource * __thiscall +cv::ocl::ProgramSource::operator=(ProgramSource *this,ProgramSource *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + + piVar5 = *(int **)param_1; + if (piVar5 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = *piVar5 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + String::deallocate((String *)(piVar4 + 2)); + operator_delete(piVar4); + *(int **)this = piVar5; + return this; + } + } + *(int **)this = piVar5; + return this; +} + + +================================================================== + +### FUNC 00354710 (156 bytes) name=source + +/* cv::ocl::ProgramSource::source() const */ + +undefined8 * __thiscall cv::ocl::ProgramSource::source(ProgramSource *this) + +{ + int iVar1; + ulong uVar2; + + /* try { // try from 0035471c to 0045471f has its CatchHandler @ 0035496c */ + uVar2 = DAT_005329b8 & 1; + if (((DAT_005329b8 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_005329b8), iVar1 != 0)) { + DAT_00532050 = uVar2; + DAT_00532058 = uVar2; + __cxa_guard_release(&DAT_005329b8); + __cxa_atexit(PTR__String_005018a0,&DAT_00532050,&DAT_00502000); + /* try { // try from 00354790 to 00454793 has its CatchHandler @ 00354964 */ + } + if (*(long *)this != 0) { + return (undefined8 *)(*(long *)this + 8); + } + return &DAT_00532050; +} + + +================================================================== + +### FUNC 003547ac (16 bytes) name=hash + +/* cv::ocl::ProgramSource::hash() const */ + +undefined8 __thiscall cv::ocl::ProgramSource::hash(ProgramSource *this) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 0x18); + } + return uVar1; +} + + +================================================================== + +### FUNC 003547bc (8 bytes) name=PlatformInfo + +/* cv::ocl::PlatformInfo::PlatformInfo() */ + +void __thiscall cv::ocl::PlatformInfo::PlatformInfo(PlatformInfo *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 003547c4 (1000 bytes) name=PlatformInfo + +/* cv::ocl::PlatformInfo::PlatformInfo(void*) */ + +void __thiscall cv::ocl::PlatformInfo::PlatformInfo(PlatformInfo *this,void *param_1) + +{ + ulong uVar1; + void *__dest; + uint uVar2; + char cVar3; + int iVar4; + undefined4 *puVar5; + void *pvVar6; + ulong uVar7; + ulong uVar8; + undefined8 uVar9; + undefined8 uVar10; + long lVar11; + void *__dest_00; + size_t sVar12; + uint local_24; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + puVar5 = operator_new(0x28); + cVar3 = DAT_00532119; + /* try { // try from 00354804 to 00454807 has its CatchHandler @ 00354358 */ + *(undefined8 *)(puVar5 + 2) = 0; + *(undefined8 *)(puVar5 + 4) = 0; + *(undefined8 *)(puVar5 + 6) = 0; + *puVar5 = 1; + uVar9 = *(undefined8 *)param_1; + *(undefined8 *)(puVar5 + 8) = uVar9; + local_24 = 0; + if (cVar3 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + } + /* try { // try from 00354838 to 0045483b has its CatchHandler @ 0035496c */ + if (DAT_005329c8 == '\0') { + /* catch() { ... } // from try @ 0035482c with catch @ 00354974 + catch() { ... } // from try @ 0035485c with catch @ 00354974 */ + if ((DAT_00532120 != (code *)0x0) || + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 != (code *)0x0)) { + (*DAT_00532120)(uVar9,0xffffffff,0,0,&local_24); + } + } + else { + /* try { // try from 00354844 to 00454847 has its CatchHandler @ 00354358 */ + /* try { // try from 00354850 to 00454853 has its CatchHandler @ 00354964 */ + /* try { // try from 0035485c to 0045485f has its CatchHandler @ 00354974 */ + if (((DAT_00532120 == (code *)0x0) && + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 == (code *)0x0)) || + (iVar4 = (*DAT_00532120)(uVar9,0xffffffff,0,0,&local_24), iVar4 != 0)) { + local_10 = 0; + local_8 = 0; + pvVar6 = (void *)String::allocate((String *)&local_10,0x57); + memcpy(pvVar6, + "clGetDeviceIDs(platform, (cl_device_type)Device::TYPE_ALL, 0, __null, &numDevices) == 0" + ,0x57); + error(-0xd7,(String *)&local_10, + "void cv::ocl::getDevices(std::vector<_cl_device_id*>&, cl_platform_id)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1437); + String::deallocate((String *)&local_10); + } + } + if (local_24 == 0) { + /* catch() { ... } // from try @ 00354480 with catch @ 0035499c */ + *(undefined8 *)(puVar5 + 4) = *(undefined8 *)(puVar5 + 2); + goto LAB_003549a4; + } + uVar7 = (ulong)local_24; + pvVar6 = *(void **)(puVar5 + 4); + lVar11 = (long)pvVar6 - *(long *)(puVar5 + 2); + /* try { // try from 003548cc to 004548cf has its CatchHandler @ 00354904 */ + uVar8 = lVar11 >> 3; + if (uVar8 < uVar7) { + uVar7 = uVar7 - uVar8; + if (uVar7 != 0) { + if ((ulong)(*(long *)(puVar5 + 6) - (long)pvVar6 >> 3) < uVar7) { + if (0x1fffffffffffffff - uVar8 < uVar7) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar1 = uVar7; + if (uVar7 < uVar8) { + uVar1 = uVar8; + } + uVar1 = uVar1 + uVar8; + if ((uVar1 < uVar8) || (0x1fffffffffffffff < uVar1)) { + uVar8 = 0xfffffffffffffff8; +LAB_00354b60: + __dest_00 = operator_new(uVar8); + } + else { + __dest_00 = (void *)0x0; + uVar8 = 0; + if (uVar1 != 0) { + uVar8 = uVar1 * 8; + goto LAB_00354b60; + } + } + /* try { // try from 00354b00 to 00454b03 has its CatchHandler @ 00355070 */ + memset((void *)((long)__dest_00 + lVar11),0,uVar7 * 8); + /* try { // try from 00354b08 to 00454b2f has its CatchHandler @ 00354fe8 */ + sVar12 = (long)pvVar6 - (long)*(void **)(puVar5 + 2); + if ((long)sVar12 >> 3 != 0) { + memmove(__dest_00,*(void **)(puVar5 + 2),sVar12); + } + __dest = (void *)((long)__dest_00 + sVar12 + uVar7 * 8); + sVar12 = *(long *)(puVar5 + 4) - (long)pvVar6; + if ((long)sVar12 >> 3 != 0) { + memmove(__dest,pvVar6,sVar12); + } + if (*(void **)(puVar5 + 2) != (void *)0x0) { + operator_delete(*(void **)(puVar5 + 2)); + } + *(void **)(puVar5 + 2) = __dest_00; + *(size_t *)(puVar5 + 4) = (long)__dest + sVar12; + *(ulong *)(puVar5 + 6) = (long)__dest_00 + uVar8; + } + else { + memset(pvVar6,0,uVar7 * 8); + *(ulong *)(puVar5 + 4) = *(long *)(puVar5 + 4) + uVar7 * 8; + } + } + } + else if (uVar7 < uVar8) { + *(ulong *)(puVar5 + 4) = *(long *)(puVar5 + 2) + uVar7 * 8; + } + cVar3 = FUN_00350224(); + uVar2 = local_24; + if (cVar3 == '\0') { + /* try { // try from 003549f8 to 004549fb has its CatchHandler @ 003549b8 */ + uVar10 = *(undefined8 *)(puVar5 + 2); + /* try { // try from 00354aac to 00454aaf has its CatchHandler @ 00354fe8 */ + if ((DAT_00532120 != (code *)0x0) || + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 != (code *)0x0)) { + /* try { // try from 00354a14 to 00454a17 has its CatchHandler @ 003550b4 */ + (*DAT_00532120)(uVar9,0xffffffff,uVar2,uVar10,&local_24); + } + } + else { + uVar10 = *(undefined8 *)(puVar5 + 2); + /* catch() { ... } // from try @ 0035443c with catch @ 00354904 + catch() { ... } // from try @ 00354488 with catch @ 00354904 + catch() { ... } // from try @ 003548cc with catch @ 00354904 */ + if (((DAT_00532120 == (code *)0x0) && + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 == (code *)0x0)) || + (iVar4 = (*DAT_00532120)(uVar9,0xffffffff,uVar2,uVar10,&local_24), iVar4 != 0)) { + local_20 = 0; + local_18 = 0; + pvVar6 = (void *)String::allocate((String *)&local_20,0x65); + memcpy(pvVar6, + "clGetDeviceIDs(platform, (cl_device_type)Device::TYPE_ALL, numDevices, &devices[0], &numDevices) == 0" + ,0x65); + /* try { // try from 00354960 to 00454963 has its CatchHandler @ 00354358 */ + /* catch() { ... } // from try @ 003543c4 with catch @ 00354964 + catch() { ... } // from try @ 00354790 with catch @ 00354964 + catch() { ... } // from try @ 00354850 with catch @ 00354964 */ + error(-0xd7,(String *)&local_20, + "void cv::ocl::getDevices(std::vector<_cl_device_id*>&, cl_platform_id)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1441); + /* catch() { ... } // from try @ 0035471c with catch @ 0035496c + catch() { ... } // from try @ 00354838 with catch @ 0035496c */ + String::deallocate((String *)&local_20); + } + } +LAB_003549a4: + *(undefined4 **)this = puVar5; + /* catch() { ... } // from try @ 003549f8 with catch @ 003549b8 + catch() { ... } // from try @ 00354eb4 with catch @ 003549b8 + catch() { ... } // from try @ 00355064 with catch @ 003549b8 */ + return; +} + + +================================================================== + +### FUNC 00354bf4 (96 bytes) name=~PlatformInfo + +/* cv::ocl::PlatformInfo::~PlatformInfo() */ + +void __thiscall cv::ocl::PlatformInfo::~PlatformInfo(PlatformInfo *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + if (*(void **)(piVar4 + 2) != (void *)0x0) { + operator_delete(*(void **)(piVar4 + 2)); + } + operator_delete(piVar4); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00354c54 (36 bytes) name=PlatformInfo + +/* cv::ocl::PlatformInfo::PlatformInfo(cv::ocl::PlatformInfo const&) */ + +void __thiscall cv::ocl::PlatformInfo::PlatformInfo(PlatformInfo *this,PlatformInfo *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + undefined8 uVar4; + + piVar3 = *(int **)param_1; + uVar4 = 0; + if (piVar3 != (int *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + uVar4 = *(undefined8 *)param_1; + } + *(undefined8 *)this = uVar4; + /* try { // try from 00354c74 to 00454ce7 has its CatchHandler @ 00354fe8 */ + return; +} + + +================================================================== + +### FUNC 00354c78 (168 bytes) name=operator= + +/* cv::ocl::PlatformInfo::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::PlatformInfo const&) */ + +PlatformInfo * __thiscall cv::ocl::PlatformInfo::operator=(PlatformInfo *this,PlatformInfo *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + + piVar5 = *(int **)this; + piVar4 = *(int **)param_1; + if (piVar4 != piVar5) { + if (piVar4 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = *piVar4 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + piVar5 = *(int **)this; + } + if (piVar5 != (int *)0x0) { + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + if (*(void **)(piVar5 + 2) != (void *)0x0) { + operator_delete(*(void **)(piVar5 + 2)); + } + operator_delete(piVar5); + } + } + *(undefined8 *)this = *(undefined8 *)param_1; + } + return this; +} + + +================================================================== + +### FUNC 00354d20 (28 bytes) name=deviceNumber + +/* cv::ocl::PlatformInfo::deviceNumber() const */ + +ulong __thiscall cv::ocl::PlatformInfo::deviceNumber(PlatformInfo *this) + +{ + long lVar1; + ulong uVar2; + + lVar1 = *(long *)this; + uVar2 = 0; + if (lVar1 != 0) { + uVar2 = (ulong)(*(long *)(lVar1 + 0x10) - *(long *)(lVar1 + 8)) >> 3; + } + return uVar2; +} + + +================================================================== + +### FUNC 00354d3c (224 bytes) name=getDevice + +/* cv::ocl::PlatformInfo::getDevice(cv::ocl::Device&, int) const */ + +void __thiscall cv::ocl::PlatformInfo::getDevice(PlatformInfo *this,Device *param_1,int param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + char *pcVar6; + long lVar7; + long lVar8; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00354d58 to 00454d5b has its CatchHandler @ 00355084 */ + lVar7 = *(long *)this; + if ((lVar7 == 0) || + (lVar8 = *(long *)(lVar7 + 8), (int)(*(long *)(lVar7 + 0x10) - lVar8 >> 3) <= param_2)) { + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x1f); + cVar5 = s_p____d_<_(int)p_>devices_size___0046da30[0x1e]; + uVar4 = s_p____d_<_(int)p_>devices_size___0046da30._28_2_; + uVar3 = s_p____d_<_(int)p_>devices_size___0046da30._24_4_; + uVar2 = s_p____d_<_(int)p_>devices_size___0046da30._8_8_; + uVar1 = s_p____d_<_(int)p_>devices_size___0046da30._0_8_; + /* try { // try from 00354dcc to 00454dcf has its CatchHandler @ 00355068 */ + *(undefined8 *)(pcVar6 + 0x10) = s_p____d_<_(int)p_>devices_size___0046da30._16_8_; + *(undefined4 *)(pcVar6 + 0x18) = uVar3; + *(undefined2 *)(pcVar6 + 0x1c) = uVar4; + pcVar6[0x1e] = cVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + error(-0xd7,(String *)&local_10, + "void cv::ocl::PlatformInfo::getDevice(cv::ocl::Device&, int) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1485); + String::deallocate((String *)&local_10); + if (*(long *)this == 0) { + return; + } + lVar8 = *(long *)(*(long *)this + 8); + } + Device::set(param_1,*(void **)(lVar8 + (long)param_2 * 8)); + return; +} + + +================================================================== + +### FUNC 00354e30 (72 bytes) name=name + +/* cv::ocl::PlatformInfo::name() const */ + +void cv::ocl::PlatformInfo::name(void) + +{ + long *in_x0; + undefined8 *in_x8; + + /* try { // try from 00354e40 to 00454e43 has its CatchHandler @ 003550b4 */ + if (*in_x0 != 0) { + FUN_0034d7d0(*(undefined8 *)(*in_x0 + 0x20),0x902); + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 00354e78 (72 bytes) name=vendor + +/* cv::ocl::PlatformInfo::vendor() const */ + +void cv::ocl::PlatformInfo::vendor(void) + +{ + long *in_x0; + undefined8 *in_x8; + + if (*in_x0 != 0) { + FUN_0034d7d0(*(undefined8 *)(*in_x0 + 0x20),0x903); + return; + } + *in_x8 = 0; + in_x8[1] = 0; + /* try { // try from 00354eb4 to 00454f0b has its CatchHandler @ 003549b8 */ + return; +} + + +================================================================== + +### FUNC 00354ec0 (72 bytes) name=version + +/* cv::ocl::PlatformInfo::version() const */ + +void cv::ocl::PlatformInfo::version(void) + +{ + long *in_x0; + undefined8 *in_x8; + + if (*in_x0 != 0) { + FUN_0034d7d0(*(undefined8 *)(*in_x0 + 0x20),0x901); + return; + } + *in_x8 = 0; + in_x8[1] = 0; + return; +} + + +================================================================== + +### FUNC 00354f08 (56 bytes) name=typeToStr + +/* cv::ocl::typeToStr(int) */ + +undefined * cv::ocl::typeToStr(int param_1) + +{ + uint uVar1; + + uVar1 = ((uint)param_1 >> 3 & 0x1ff) + 1; + /* try { // try from 00354f14 to 00454f17 has its CatchHandler @ 003550b4 */ + if (uVar1 < 0x11) { + /* try { // try from 00354f20 to 00454f23 has its CatchHandler @ 00355068 */ + /* try { // try from 00354f2c to 00454f2f has its CatchHandler @ 00355084 */ + return (&PTR_s_uchar_004f71e0)[(int)((param_1 & 7U) * 0x10 + uVar1 + -1)]; + } + /* try { // try from 00354f38 to 00454f3b has its CatchHandler @ 0035508c */ + return &DAT_0046da50; +} + + +================================================================== + +### FUNC 00354f40 (56 bytes) name=memopTypeToStr + +/* cv::ocl::memopTypeToStr(int) */ + +undefined * cv::ocl::memopTypeToStr(int param_1) + +{ + uint uVar1; + + /* try { // try from 00354f44 to 00454f47 has its CatchHandler @ 00354fe8 */ + uVar1 = ((uint)param_1 >> 3 & 0x1ff) + 1; + if (uVar1 < 0x11) { + return (&PTR_s_uchar_004f69e0)[(int)((param_1 & 7U) * 0x10 + uVar1 + -1)]; + } + return &DAT_0046da50; +} + + +================================================================== + +### FUNC 00354f78 (56 bytes) name=vecopTypeToStr + +/* cv::ocl::vecopTypeToStr(int) */ + +undefined * cv::ocl::vecopTypeToStr(int param_1) + +{ + uint uVar1; + + uVar1 = ((uint)param_1 >> 3 & 0x1ff) + 1; + if (uVar1 < 0x11) { + return (&PTR_s_uchar_004f6de0)[(int)((param_1 & 7U) * 0x10 + uVar1 + -1)]; + } + return &DAT_0046da50; +} + + +================================================================== + +### FUNC 00354fb0 (248 bytes) name=convertTypeStr + +/* cv::ocl::convertTypeStr(int, int, int, char*) */ + +char * cv::ocl::convertTypeStr(int param_1,int param_2,int param_3,char *param_4) + +{ + undefined8 uVar1; + undefined *puVar2; + + if (param_1 != param_2) { + uVar1 = typeToStr((param_2 & 7U) + (param_3 + -1) * 8); + /* catch() { ... } // from try @ 00354aac with catch @ 00354fe8 + catch() { ... } // from try @ 00354b08 with catch @ 00354fe8 + catch() { ... } // from try @ 00354c74 with catch @ 00354fe8 + catch() { ... } // from try @ 00354f44 with catch @ 00354fe8 */ + if ((((param_2 < 5) && ((3 < param_1 || (param_2 != 4)))) && ((1 < param_1 || (param_2 != 3)))) + && ((param_1 != 0 || (param_2 != 2)))) { + if (param_1 < 5) { + /* catch() { ... } // from try @ 00354d58 with catch @ 00355084 + catch() { ... } // from try @ 00354f2c with catch @ 00355084 */ + /* catch() { ... } // from try @ 00354bd0 with catch @ 0035508c + catch() { ... } // from try @ 00354f38 with catch @ 0035508c */ + sprintf(param_4,"convert_%s_sat",uVar1); + } + else { + if (param_2 == 4) { + puVar2 = &DAT_00472008; + } + else { + puVar2 = &DAT_0046da58; + } + sprintf(param_4,"convert_%s%s_rte",uVar1,puVar2); + /* try { // try from 00355064 to 00455067 has its CatchHandler @ 003549b8 */ + /* catch() { ... } // from try @ 00354a34 with catch @ 00355068 + catch() { ... } // from try @ 00354dcc with catch @ 00355068 + catch() { ... } // from try @ 00354f20 with catch @ 00355068 */ + } + } + else { + sprintf(param_4,"convert_%s",uVar1); + } + return param_4; + } + /* catch() { ... } // from try @ 00354b00 with catch @ 00355070 */ + return "noconvert"; +} + + +================================================================== + +### FUNC 003550a8 (856 bytes) name=kernelToStr + +/* cv::ocl::kernelToStr(cv::_InputArray const&, int, char const*) */ + +void __thiscall cv::ocl::kernelToStr(ocl *this,_InputArray *param_1,int param_2,char *param_3) + +{ + char cVar1; + bool bVar2; + int iVar3; + char *pcVar4; + undefined *puVar5; + int *piVar6; + Mat **ppMVar7; + uint uVar8; + Mat *pMVar9; + long local_c8; + uint local_c0; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + Mat **local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + puVar5 = (undefined *)(ulong)(uint)param_2; + /* catch() { ... } // from try @ 00354a14 with catch @ 003550b4 + catch() { ... } // from try @ 00354e40 with catch @ 003550b4 + catch() { ... } // from try @ 00354f14 with catch @ 003550b4 */ + /* catch() { ... } // from try @ 00355108 with catch @ 003550c8 + catch() { ... } // from try @ 003555c4 with catch @ 003550c8 + catch() { ... } // from try @ 00355774 with catch @ 003550c8 */ + iVar3 = _InputArray::kind((_InputArray *)this); + if (iVar3 == 0x10000) { + pMVar9 = *(Mat **)(this + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar8 = *(uint *)pMVar9; + local_50 = *(undefined8 *)(pMVar9 + 0x10); + local_60 = *(Mat **)pMVar9; + local_58 = *(Mat **)(pMVar9 + 8); + /* try { // try from 003552e0 to 004552e3 has its CatchHandler @ 0035579c */ + local_48 = *(undefined8 *)(pMVar9 + 0x18); + local_40 = *(undefined8 *)(pMVar9 + 0x20); + local_38 = *(undefined8 *)(pMVar9 + 0x28); + local_30 = *(undefined8 *)(pMVar9 + 0x30); + local_28 = *(long *)(pMVar9 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar6 = (int *)(local_28 + 0x14); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (*(int *)(pMVar9 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar9 + 0x48); + local_8 = (*(undefined8 **)(pMVar9 + 0x48))[1]; + } + else { + local_60 = (Mat *)(ulong)uVar8; + Mat::copySize((Mat *)&local_60,pMVar9); + } + } + else { + _InputArray::getMat_((int)this); + } + Mat::reshape((int)(Mat *)&local_60,1); + if (local_28 != 0) { + /* try { // try from 00355108 to 0045510b has its CatchHandler @ 003550c8 */ + piVar6 = (int *)(local_28 + 0x14); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar3 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + /* try { // try from 00355124 to 00455127 has its CatchHandler @ 003557c4 */ + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + /* try { // try from 00355144 to 00455147 has its CatchHandler @ 00355778 */ + iVar3 = 0; + ppMVar7 = local_20; + do { + *(undefined4 *)ppMVar7 = 0; + iVar3 = iVar3 + 1; + ppMVar7 = (Mat **)((long)ppMVar7 + 4); + } while (iVar3 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + local_c0 = local_c0 & 7; + uVar8 = (uint)param_1; + if ((-1 < (int)uVar8) && (uVar8 != local_c0)) { + local_50 = 0; + local_60 = (Mat *)CONCAT44(local_60._4_4_,0x2010000); + local_58 = (Mat *)&local_c0; + Mat::convertTo((Mat *)&local_c0,(_OutputArray *)&local_60,uVar8,1.0,0.0); + local_c0 = uVar8; + } + /* try { // try from 003551bc to 004551bf has its CatchHandler @ 003556f8 */ + pMVar9 = (Mat *)(&PTR_FUN_004f75e0)[(int)local_c0]; + if (pMVar9 == (Mat *)0x0) { + local_60 = pMVar9; + local_58 = pMVar9; + pcVar4 = (char *)String::allocate((String *)&local_60,9); + cVar1 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + /* try { // try from 00355384 to 004553f7 has its CatchHandler @ 003556f8 */ + *(undefined8 *)pcVar4 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar4[8] = cVar1; + error(-0xd7,(String *)&local_60, + "cv::String cv::ocl::kernelToStr(cv::InputArray, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1527); + String::deallocate((String *)&local_60); + } + if (puVar5 == (undefined *)0x0) { + puVar5 = &UNK_0046daa8; + } + (*(code *)pMVar9)(&local_c8,(Mat *)&local_c0); + format(" -D %s=%s",puVar5,local_c8); + if ((undefined *)(local_c8 + -0x18) != PTR_DAT_00501f30) { + piVar6 = (int *)(local_c8 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar3 < 1) { + operator_delete((undefined *)(local_c8 + -0x18)); + } + } + if (local_88 != 0) { + /* try { // try from 00355210 to 00455213 has its CatchHandler @ 00355780 */ + piVar6 = (int *)(local_88 + 0x14); + do { + iVar3 = *piVar6; + /* try { // try from 00355218 to 0045523f has its CatchHandler @ 003556f8 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar3 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar3 = 0; + do { + *local_80 = 0; + iVar3 = iVar3 + 1; + local_80 = local_80 + 1; + } while (iVar3 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 003554b4 (628 bytes) name=buildOptionsAddMatrixDescription + +/* cv::ocl::buildOptionsAddMatrixDescription(cv::String&, cv::String const&, cv::_InputArray const&) + */ + +void cv::ocl::buildOptionsAddMatrixDescription(String *param_1,String *param_2,_InputArray *param_3) + +{ + uint uVar1; + char cVar2; + bool bVar3; + uint uVar4; + ulong uVar5; + undefined8 uVar6; + undefined8 uVar7; + int *piVar8; + undefined1 *puVar9; + undefined1 *puVar10; + int iVar11; + uint uVar12; + undefined1 *puVar13; + void *local_20; + size_t local_18; + void *local_10; + undefined8 local_8; + + /* try { // try from 003554dc to 004554df has its CatchHandler @ 00355778 */ + if (*(long *)(param_1 + 8) == 0) { + uVar5 = _InputArray::type(param_3,-1); + puVar13 = *(undefined1 **)param_2; + uVar4 = (uint)uVar5; + } + else { + /* try { // try from 0035563c to 0045563f has its CatchHandler @ 00355794 */ + local_10 = (void *)0x0; + local_8 = 0; + String::allocate((String *)&local_10,*(long *)(param_1 + 8) + 1); + /* try { // try from 00355648 to 0045564b has its CatchHandler @ 0035579c */ + /* try { // try from 00355654 to 00455657 has its CatchHandler @ 003556f8 */ + memcpy(local_10,*(void **)param_1,*(size_t *)(param_1 + 8)); + *(undefined1 *)((long)local_10 + *(long *)(param_1 + 8)) = LAB_0046e338; + String::deallocate(param_1); + if (local_10 != (void *)0x0) { + piVar8 = (int *)((long)local_10 + -4); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = *piVar8 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + *(void **)param_1 = local_10; + *(undefined8 *)(param_1 + 8) = local_8; + String::deallocate((String *)&local_10); + uVar5 = _InputArray::type(param_3,-1); + puVar13 = *(undefined1 **)param_2; + uVar4 = (uint)uVar5; + } + uVar4 = uVar4 & 7; + if (puVar13 == (undefined1 *)0x0) { + puVar13 = &DAT_00472008; + uVar6 = typeToStr((int)uVar5); + puVar9 = *(undefined1 **)param_2; + } + else { + uVar6 = typeToStr((int)uVar5); + puVar9 = *(undefined1 **)param_2; + } + if (puVar9 == (undefined1 *)0x0) { + puVar9 = &DAT_00472008; + } + uVar7 = typeToStr(uVar4); + puVar10 = *(undefined1 **)param_2; + if (puVar10 == (undefined1 *)0x0) { + /* catch() { ... } // from try @ 003551bc with catch @ 003556f8 + catch() { ... } // from try @ 00355218 with catch @ 003556f8 + catch() { ... } // from try @ 00355384 with catch @ 003556f8 + catch() { ... } // from try @ 00355654 with catch @ 003556f8 */ + uVar1 = ((uint)((uVar5 & 0xffffffff) >> 3) & 0x1ff) + 1; + puVar10 = &DAT_00472008; + uVar12 = (uint)(0x88442211L >> (uVar4 << 2)); + iVar11 = uVar1 << (ulong)((uint)(0xfa50L >> (uVar4 << 1)) & 3); + } + else { + /* try { // try from 00355550 to 00455553 has its CatchHandler @ 003557c4 */ + uVar1 = ((uint)((uVar5 & 0xffffffff) >> 3) & 0x1ff) + 1; + uVar12 = (uint)(0x88442211L >> (uVar4 << 2)); + iVar11 = uVar1 << (ulong)((uint)(0xfa50L >> (uVar4 << 1)) & 3); + } + format("-D %s_T=%s -D %s_T1=%s -D %s_CN=%d -D %s_TSIZE=%d -D %s_T1SIZE=%d -D %s_DEPTH=%d", + (String *)&local_20,puVar13,uVar6,puVar9,uVar7,puVar10,(ulong)uVar1,puVar10,iVar11,puVar10, + uVar12 & 0xf,puVar10,uVar4); + local_10 = (void *)0x0; + local_8 = 0; + String::allocate((String *)&local_10,local_18 + *(long *)(param_1 + 8)); + memcpy(local_10,*(void **)param_1,*(size_t *)(param_1 + 8)); + /* try { // try from 003555c4 to 0045561b has its CatchHandler @ 003550c8 */ + memcpy((void *)((long)local_10 + *(long *)(param_1 + 8)),local_20,local_18); + String::deallocate(param_1); + if (local_10 != (void *)0x0) { + piVar8 = (int *)((long)local_10 + -4); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = *piVar8 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + *(void **)param_1 = local_10; + *(undefined8 *)(param_1 + 8) = local_8; + String::deallocate((String *)&local_10); + String::deallocate((String *)&local_20); + /* try { // try from 00355624 to 00455627 has its CatchHandler @ 003557c4 */ + /* try { // try from 00355630 to 00455633 has its CatchHandler @ 00355778 */ + return; +} + + +================================================================== + +### FUNC 00355784 (8 bytes) name=Image2D + +/* cv::ocl::Image2D::Image2D() */ + +void __thiscall cv::ocl::Image2D::Image2D(Image2D *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 0035578c (32 bytes) name=Image2D + +/* cv::ocl::Image2D::Image2D(cv::ocl::Image2D const&) */ + +void __thiscall cv::ocl::Image2D::Image2D(Image2D *this,Image2D *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = *(int **)param_1; + *(int **)this = piVar3; + /* catch() { ... } // from try @ 00355468 with catch @ 00355794 + catch() { ... } // from try @ 0035563c with catch @ 00355794 */ + if (piVar3 != (int *)0x0) { + do { + /* catch() { ... } // from try @ 003552e0 with catch @ 0035579c + catch() { ... } // from try @ 00355648 with catch @ 0035579c */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 003557ac (228 bytes) name=operator= + +/* cv::ocl::Image2D::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Image2D const&) */ + +Image2D * __thiscall cv::ocl::Image2D::operator=(Image2D *this,Image2D *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + int *piVar5; + long lVar6; + + piVar5 = *(int **)this; + /* catch() { ... } // from try @ 00355124 with catch @ 003557c4 + catch() { ... } // from try @ 00355550 with catch @ 003557c4 + catch() { ... } // from try @ 00355624 with catch @ 003557c4 */ + piVar4 = *(int **)param_1; + if (piVar4 != piVar5) { + if (piVar4 != (int *)0x0) { + do { + /* catch() { ... } // from try @ 00355828 with catch @ 003557d8 + catch() { ... } // from try @ 00355c9c with catch @ 003557d8 + catch() { ... } // from try @ 00355cdc with catch @ 003557d8 + catch() { ... } // from try @ 00355e00 with catch @ 003557d8 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = *piVar4 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + piVar5 = *(int **)this; + } + if (piVar5 != (int *)0x0) { + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 00355828 to 0045582b has its CatchHandler @ 003557d8 */ + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar6 = *(long *)(piVar5 + 2); + /* try { // try from 00355844 to 00455847 has its CatchHandler @ 00355e04 */ + if ((lVar6 != 0) && + ((DAT_00532980 != (code *)0x0 || + (DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"), DAT_00532980 != (code *)0x0) + ))) { + (*DAT_00532980)(lVar6); + } + operator_delete(piVar5); + } + } + *(undefined8 *)this = *(undefined8 *)param_1; + } + return this; +} + + +================================================================== + +### FUNC 00355890 (152 bytes) name=~Image2D + +/* cv::ocl::Image2D::~Image2D() */ + +void __thiscall cv::ocl::Image2D::~Image2D(Image2D *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + + piVar4 = *(int **)this; + if (piVar4 != (int *)0x0) { + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar5 = *(long *)(piVar4 + 2); + /* try { // try from 00355910 to 00455913 has its CatchHandler @ 00355e3c */ + /* try { // try from 00355918 to 00455b43 has its CatchHandler @ 00355da4 */ + if ((lVar5 != 0) && + ((DAT_00532980 != (code *)0x0 || + (DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"), DAT_00532980 != (code *)0x0))) + ) { + (*DAT_00532980)(lVar5); + } + operator_delete(piVar4); + return; + } + } + /* try { // try from 003558bc to 004558bf has its CatchHandler @ 00355da4 */ + return; +} + + +================================================================== + +### FUNC 00355928 (220 bytes) name=FUN_00355928 + +void FUN_00355928(int *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + int *piVar6; + + do { + iVar1 = *param_1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(param_1,0x10); + if (bVar3) { + *param_1 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && ((byte)*PTR_DAT_00501f58 < (param_1 != (int *)0x0))) { + lVar5 = *(long *)(param_1 + 2); + if ((lVar5 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar5); + } + piVar4 = *(int **)(param_1 + 0x28); + while (piVar4 != param_1 + 0x28) { + piVar6 = *(int **)piVar4; + cv::ocl::Image2D::~Image2D((Image2D *)(piVar4 + 4)); + operator_delete(piVar4); + piVar4 = piVar6; + } + operator_delete(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 00355a38 (212 bytes) name=~Kernel + +/* cv::ocl::Kernel::~Kernel() */ + +void __thiscall cv::ocl::Kernel::~Kernel(Kernel *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + int *piVar6; + int *piVar7; + + piVar7 = *(int **)this; + if (piVar7 != (int *)0x0) { + do { + iVar1 = *piVar7; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar3) { + *piVar7 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar5 = *(long *)(piVar7 + 2); + if ((lVar5 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar5); + } + piVar4 = *(int **)(piVar7 + 0x28); + while (piVar4 != piVar7 + 0x28) { + piVar6 = *(int **)piVar4; + Image2D::~Image2D((Image2D *)(piVar4 + 4)); + operator_delete(piVar4); + piVar4 = piVar6; + } + operator_delete(piVar7); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00355b40 (272 bytes) name=operator= + +/* cv::ocl::Kernel::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Kernel const&) */ + +Kernel * __thiscall cv::ocl::Kernel::operator=(Kernel *this,Kernel *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + int *piVar6; + int *piVar7; + int *piVar8; + + piVar8 = *(int **)param_1; + if (piVar8 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar3) { + *piVar8 = *piVar8 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar7 = *(int **)this; + if (piVar7 != (int *)0x0) { + do { + iVar1 = *piVar7; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar3) { + *piVar7 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 00355bb4 to 00455bb7 has its CatchHandler @ 00355e0c */ + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar5 = *(long *)(piVar7 + 2); + if ((lVar5 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar5); + } + piVar4 = *(int **)(piVar7 + 0x28); + while (piVar4 != piVar7 + 0x28) { + piVar6 = *(int **)piVar4; + Image2D::~Image2D((Image2D *)(piVar4 + 4)); + operator_delete(piVar4); + piVar4 = piVar6; + } + operator_delete(piVar7); + *(int **)this = piVar8; + /* try { // try from 00355c28 to 00455c2b has its CatchHandler @ 00355e04 */ + return this; + } + } + *(int **)this = piVar8; + return this; +} + + +================================================================== + +### FUNC 00355c84 (572 bytes) name=create + +/* cv::ocl::Kernel::create(char const*, cv::ocl::Program const&) */ + +undefined8 __thiscall cv::ocl::Kernel::create(Kernel *this,char *param_1,Program *param_2) + +{ + int iVar1; + bool bVar2; + int *piVar3; + undefined2 uVar4; + char cVar5; + undefined4 *puVar6; + long lVar7; + undefined8 uVar8; + char *pcVar9; + int *piVar10; + int *piVar11; + int local_14; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00355c9c to 00455c9f has its CatchHandler @ 003557d8 */ + piVar11 = *(int **)this; + if (piVar11 != (int *)0x0) { + do { + iVar1 = *piVar11; + cVar5 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar1 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar7 = *(long *)(piVar11 + 2); + /* catch() { ... } // from try @ 003558bc with catch @ 00355da4 + catch() { ... } // from try @ 00355918 with catch @ 00355da4 + catch() { ... } // from try @ 00355d6c with catch @ 00355da4 */ + /* try { // try from 00355ea8 to 00455eab has its CatchHandler @ 00355e58 */ + if ((lVar7 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar7); + } + piVar3 = *(int **)(piVar11 + 0x28); + while (piVar3 != piVar11 + 0x28) { + piVar10 = *(int **)piVar3; + Image2D::~Image2D((Image2D *)(piVar3 + 4)); + operator_delete(piVar3); + piVar3 = piVar10; + } + operator_delete(piVar11); + } + } + /* try { // try from 00355cc4 to 00455cc7 has its CatchHandler @ 00355e14 */ + puVar6 = operator_new(0xb8); + /* try { // try from 00355cd0 to 00455cd3 has its CatchHandler @ 00355e0c */ + /* try { // try from 00355cdc to 00455cdf has its CatchHandler @ 003557d8 */ + *puVar6 = 1; + *(undefined8 *)(puVar6 + 4) = 0; + puVar6[0x26] = 0; + /* try { // try from 00355ce8 to 00455ceb has its CatchHandler @ 00355e04 */ + *(undefined4 **)(puVar6 + 0x28) = puVar6 + 0x28; + *(undefined4 **)(puVar6 + 0x2a) = puVar6 + 0x28; + lVar7 = Program::ptr(param_2); + /* try { // try from 00355cf4 to 00455cf7 has its CatchHandler @ 00355e14 */ + local_14 = 0; + if (lVar7 == 0) { + uVar8 = 0; + } + else if ((DAT_00532110 == (code *)0x0) && + (DAT_00532110 = (code *)FUN_0034d2bc("clCreateKernel"), DAT_00532110 == (code *)0x0)) { + local_14 = -1000; + uVar8 = 0; + } + else { + uVar8 = (*DAT_00532110)(lVar7,param_1,&local_14); + } + *(undefined8 *)(puVar6 + 2) = uVar8; + cVar5 = FUN_00350224(); + if ((cVar5 != '\0') && (local_14 != 0)) { + /* try { // try from 00355e00 to 00455e03 has its CatchHandler @ 003557d8 */ + local_10 = 0; + /* catch() { ... } // from try @ 00355844 with catch @ 00355e04 + catch() { ... } // from try @ 00355c28 with catch @ 00355e04 + catch() { ... } // from try @ 00355ce8 with catch @ 00355e04 */ + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0xb); + cVar5 = s_retval____0_0046d938[10]; + uVar4 = s_retval____0_0046d938._8_2_; + /* catch() { ... } // from try @ 00355bb4 with catch @ 00355e0c + catch() { ... } // from try @ 00355cd0 with catch @ 00355e0c */ + /* catch() { ... } // from try @ 00355cc4 with catch @ 00355e14 + catch() { ... } // from try @ 00355cf4 with catch @ 00355e14 */ + /* catch() { ... } // from try @ 00355910 with catch @ 00355e3c */ + *(undefined8 *)pcVar9 = s_retval____0_0046d938._0_8_; + *(undefined2 *)(pcVar9 + 8) = uVar4; + pcVar9[10] = cVar5; + error(-0xd7,(String *)&local_10, + "cv::ocl::Kernel::Impl::Impl(const char*, const cv::ocl::Program&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xc16); + String::deallocate((String *)&local_10); + /* catch() { ... } // from try @ 00355ea8 with catch @ 00355e58 + catch() { ... } // from try @ 0035631c with catch @ 00355e58 + catch() { ... } // from try @ 0035635c with catch @ 00355e58 + catch() { ... } // from try @ 00356480 with catch @ 00355e58 */ + } + *(undefined8 *)(puVar6 + 6) = 0; + *(undefined8 *)(puVar6 + 8) = 0; + *(undefined8 *)(puVar6 + 10) = 0; + *(undefined8 *)(puVar6 + 0xc) = 0; + *(undefined8 *)(puVar6 + 0xe) = 0; + *(undefined8 *)(puVar6 + 0x10) = 0; + *(undefined8 *)(puVar6 + 0x12) = 0; + *(undefined8 *)(puVar6 + 0x14) = 0; + *(undefined8 *)(puVar6 + 0x16) = 0; + *(undefined8 *)(puVar6 + 0x18) = 0; + *(undefined8 *)(puVar6 + 0x1a) = 0; + *(undefined8 *)(puVar6 + 0x1c) = 0; + *(undefined8 *)(puVar6 + 0x1e) = 0; + *(undefined8 *)(puVar6 + 0x20) = 0; + *(undefined8 *)(puVar6 + 0x22) = 0; + *(undefined8 *)(puVar6 + 0x24) = 0; + *(undefined1 *)(puVar6 + 0x2c) = 0; + lVar7 = *(long *)(puVar6 + 2); + *(undefined4 **)this = puVar6; + if (lVar7 != 0) { + /* try { // try from 00355d6c to 00455d6f has its CatchHandler @ 00355da4 */ + return 1; + } + FUN_00355928(puVar6); + *(undefined8 *)this = 0; + return 0; +} + + +================================================================== + +### FUNC 00355f4c (8 bytes) name=Kernel + +/* cv::ocl::Kernel::Kernel(char const*, cv::ocl::Program const&) */ + +void __thiscall cv::ocl::Kernel::Kernel(Kernel *this,char *param_1,Program *param_2) + +{ + *(undefined8 *)this = 0; + create(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00355f54 (420 bytes) name=FUN_00355f54 + +void FUN_00355f54(undefined8 param_1,undefined8 param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + int *piVar5; + long *plVar6; + long *plVar7; + long lVar8; + int *piVar9; + + plVar7 = (long *)(param_3 + 6); + do { + if (*plVar7 != 0) { + piVar1 = (int *)(*plVar7 + 0x10); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 00355f90 to 00455f93 has its CatchHandler @ 003564bc */ + if (iVar2 == 1) { + plVar6 = *(long **)(*plVar7 + 8); + (**(code **)(*plVar6 + 0x20))(plVar6,*plVar7); + } + *plVar7 = 0; + } + /* try { // try from 00355f98 to 004561c3 has its CatchHandler @ 00356424 */ + plVar7 = plVar7 + 1; + } while (plVar7 != (long *)(param_3 + 0x26)); + piVar1 = param_3 + 0x28; + param_3[0x26] = 0; + *(undefined1 *)(param_3 + 0x2c) = 0; + piVar5 = *(int **)(param_3 + 0x28); + while (piVar5 != piVar1) { + piVar9 = *(int **)piVar5; + cv::ocl::Image2D::~Image2D((Image2D *)(piVar5 + 4)); + operator_delete(piVar5); + piVar5 = piVar9; + } + *(int **)(param_3 + 0x28) = piVar1; + lVar8 = *(long *)(param_3 + 4); + *(int **)(param_3 + 0x2a) = piVar1; + if (lVar8 != 0) { + if ((DAT_005329d0 != (code *)0x0) || + (DAT_005329d0 = (code *)FUN_0034d2bc("clReleaseEvent"), DAT_005329d0 != (code *)0x0)) { + (*DAT_005329d0)(lVar8); + } + param_3[4] = 0; + param_3[5] = 0; + } + do { + iVar2 = *param_3; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(param_3,0x10); + if (bVar4) { + *param_3 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((iVar2 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar8 = *(long *)(param_3 + 2); + if ((lVar8 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar8); + } + piVar5 = *(int **)(param_3 + 0x28); + while (piVar1 != piVar5) { + piVar9 = *(int **)piVar5; + cv::ocl::Image2D::~Image2D((Image2D *)(piVar5 + 4)); + operator_delete(piVar5); + piVar5 = piVar9; + } + operator_delete(param_3); + return; + } + return; +} + + +================================================================== + +### FUNC 00356130 (2956 bytes) name=set + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::ocl::Kernel::set(int, cv::ocl::KernelArg const&) */ + +int __thiscall cv::ocl::Kernel::set(Kernel *this,int param_1,KernelArg *param_2) + +{ + uint uVar1; + bool bVar2; + int *piVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined2 uVar12; + undefined8 uVar13; + char cVar14; + int iVar15; + undefined4 *puVar16; + char *pcVar17; + void *pvVar18; + undefined8 *puVar19; + uint uVar20; + long lVar21; + long *plVar22; + int iVar23; + long lVar24; + int *piVar25; + uint uVar26; + long *plVar27; + int *piVar28; + long lVar29; + UMat *this_00; + int local_34; + long local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + UMat *local_10; + undefined4 local_8; + int local_4; + + lVar29 = *(long *)this; + if ((lVar29 == 0) || (*(long *)(lVar29 + 8) == 0)) { + return -1; + } + if (param_1 < 0) { + return param_1; + } + if (param_1 == 0) { + plVar27 = (long *)(lVar29 + 0x18); + do { + if (*plVar27 != 0) { + piVar28 = (int *)(*plVar27 + 0x10); + do { + iVar15 = *piVar28; + /* try { // try from 00356480 to 00456483 has its CatchHandler @ 00355e58 */ + /* catch() { ... } // from try @ 00355ec4 with catch @ 00356484 + catch() { ... } // from try @ 003562a8 with catch @ 00356484 + catch() { ... } // from try @ 00356368 with catch @ 00356484 */ + cVar14 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar28,0x10); + if (bVar2) { + *piVar28 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + /* catch() { ... } // from try @ 00356234 with catch @ 0035648c + catch() { ... } // from try @ 00356350 with catch @ 0035648c */ + if (iVar15 == 1) { + plVar22 = *(long **)(*plVar27 + 8); + /* catch() { ... } // from try @ 00355f90 with catch @ 003564bc */ + (**(code **)(*plVar22 + 0x20))(plVar22,*plVar27); + } + /* catch() { ... } // from try @ 00356344 with catch @ 00356494 + catch() { ... } // from try @ 00356374 with catch @ 00356494 */ + *plVar27 = 0; + } + plVar27 = plVar27 + 1; + } while (plVar27 != (long *)(lVar29 + 0x98)); + *(undefined4 *)(lVar29 + 0x98) = 0; + *(undefined1 *)(lVar29 + 0xb0) = 0; + } + this_00 = *(UMat **)(param_2 + 8); + if (this_00 == (UMat *)0x0) { + /* try { // try from 00356794 to 004567b7 has its CatchHandler @ 003564d8 */ + cVar14 = FUN_00350224(); + if (cVar14 != '\0') { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1, + *(undefined8 *)(param_2 + 0x18),*(undefined8 *)(param_2 + 0x10)); + if (iVar15 != 0) { + local_18 = this_00; + local_10 = this_00; + /* try { // try from 003567c0 to 004567c3 has its CatchHandler @ 003568ec */ + /* try { // try from 003567cc to 004567cf has its CatchHandler @ 003568e4 */ + pcVar17 = (char *)String::allocate((String *)&local_18,0x3b); + cVar14 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8[0x3a]; + uVar12 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._56_2_; + uVar9 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._40_8_; + uVar8 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._32_8_; + uVar7 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._24_8_; + uVar6 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._16_8_; + uVar5 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._8_8_; + uVar4 = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._0_8_; + *(undefined8 *)(pcVar17 + 0x30) = s_clSetKernelArg_p_>handle___cl_ui_0046dec8._48_8_; + *(undefined2 *)(pcVar17 + 0x38) = uVar12; + pcVar17[0x3a] = cVar14; + *(undefined8 *)pcVar17 = uVar4; + *(undefined8 *)(pcVar17 + 8) = uVar5; + *(undefined8 *)(pcVar17 + 0x10) = uVar6; + *(undefined8 *)(pcVar17 + 0x18) = uVar7; + *(undefined8 *)(pcVar17 + 0x20) = uVar8; + *(undefined8 *)(pcVar17 + 0x28) = uVar9; + error(-0xd7,(String *)&local_18,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd1c); + String::deallocate((String *)&local_18); + } + return param_1 + 1; + } + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1,*(undefined8 *)(param_2 + 0x18), + *(undefined8 *)(param_2 + 0x10)); + return param_1 + 1; + } + uVar1 = *(uint *)param_2; + uVar26 = 0x2000000; + uVar20 = uVar1 & 2; + if ((uVar1 >> 1 & 1) != 0) { + uVar26 = 0x3000000; + uVar20 = 0x1000000; + } + if ((uVar1 & 4) == 0) { + uVar26 = uVar20; + } + local_30 = UMat::handle(this_00,uVar26); + if (local_30 == 0) { + piVar28 = *(int **)this; + do { + iVar15 = *piVar28; + cVar14 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar28,0x10); + if (bVar2) { + *piVar28 = iVar15 + -1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + /* try { // try from 00356720 to 00456723 has its CatchHandler @ 003568ec */ + if ((iVar15 == 1) && ((byte)*PTR_DAT_00501f58 < (piVar28 != (int *)0x0))) { + lVar29 = *(long *)(piVar28 + 2); + /* try { // try from 00356cb0 to 00456cb3 has its CatchHandler @ 00356e30 */ + if ((lVar29 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar29); + } + piVar3 = *(int **)(piVar28 + 0x28); + while (piVar3 != piVar28 + 0x28) { + piVar25 = *(int **)piVar3; + Image2D::~Image2D((Image2D *)(piVar3 + 4)); + operator_delete(piVar3); + piVar3 = piVar25; + } + operator_delete(piVar28); + } + *(undefined8 *)this = 0; + return -1; + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1,8,&local_30); + } + else { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1,8,&local_30); + if (iVar15 != 0) { + local_18 = (UMat *)0x0; + local_10 = (UMat *)0x0; + /* try { // try from 003565d4 to 004565d7 has its CatchHandler @ 00356868 */ + pcVar17 = (char *)String::allocate((String *)&local_18,0x39); + uVar10 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._48_8_; + uVar9 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._40_8_; + uVar8 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._32_8_; + uVar7 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._24_8_; + uVar6 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._16_8_; + uVar5 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._8_8_; + uVar4 = s_clSetKernelArg_p_>handle___cl_ui_0046db48._0_8_; + /* try { // try from 003565dc to 0045663b has its CatchHandler @ 003568dc */ + pcVar17[0x38] = s_clSetKernelArg_p_>handle___cl_ui_0046db48[0x38]; + *(undefined8 *)(pcVar17 + 0x30) = uVar10; + *(undefined8 *)pcVar17 = uVar4; + *(undefined8 *)(pcVar17 + 8) = uVar5; + *(undefined8 *)(pcVar17 + 0x10) = uVar6; + *(undefined8 *)(pcVar17 + 0x18) = uVar7; + *(undefined8 *)(pcVar17 + 0x20) = uVar8; + *(undefined8 *)(pcVar17 + 0x28) = uVar9; + error(-0xd7,(String *)&local_18,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xcf3); + String::deallocate((String *)&local_18); + } + } + if ((uVar1 & 0x10) == 0) { + lVar29 = *(long *)(param_2 + 8); + if (*(int *)(lVar29 + 4) < 3) { + /* catch() { ... } // from try @ 00356514 with catch @ 003564d8 + catch() { ... } // from try @ 00356794 with catch @ 003564d8 + catch() { ... } // from try @ 003568d8 with catch @ 003564d8 */ + local_28 = CONCAT44((int)*(undefined8 *)(lVar29 + 0x40),(int)*(undefined8 *)(lVar29 + 0x28)); + local_20 = *(undefined8 *)(lVar29 + 8); + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 1,4,(long)&local_28 + 4); + } + else { + /* try { // try from 00356514 to 00456517 has its CatchHandler @ 003564d8 */ + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 1,4,(long)&local_28 + 4); + if (iVar15 != 0) { + local_18 = (UMat *)0x0; + local_10 = (UMat *)0x0; + pvVar18 = (void *)String::allocate((String *)&local_18,0x4b); + /* try { // try from 00356ab0 to 00456ab3 has its CatchHandler @ 00356da8 */ + memcpy(pvVar18, + "clSetKernelArg(p->handle, (cl_uint)(i+1), sizeof(u2d.step), &u2d.step) == 0",0x4b) + ; + error(-0xd7,(String *)&local_18,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xcfd); + String::deallocate((String *)&local_18); + } + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 2,4,&local_28); + } + else { + /* try { // try from 00356530 to 00456533 has its CatchHandler @ 003568ec */ + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 2,4,&local_28); + if (iVar15 != 0) { + local_18 = (UMat *)0x0; + local_10 = (UMat *)0x0; + pvVar18 = (void *)String::allocate((String *)&local_18,0x4f); + memcpy(pvVar18, + "clSetKernelArg(p->handle, (cl_uint)(i+2), sizeof(u2d.offset), &u2d.offset) == 0", + 0x4f); + error(-0xd7,(String *)&local_18,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xcfe); + String::deallocate((String *)&local_18); + } + } + iVar15 = param_1 + 3; + if ((*(uint *)param_2 >> 8 & 1) == 0) { + /* try { // try from 00356550 to 00456553 has its CatchHandler @ 003568e4 */ + local_34 = 0; + if (*(int *)(param_2 + 0x24) != 0) { + local_34 = (local_20._4_4_ * *(int *)(param_2 + 0x20)) / *(int *)(param_2 + 0x24); + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),iVar15,4,&local_20); + } + else { + /* try { // try from 00356580 to 00456583 has its CatchHandler @ 003568dc */ + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),iVar15,4,&local_20); + if (iVar15 != 0) { + local_18 = (UMat *)0x0; + local_10 = (UMat *)0x0; + pvVar18 = (void *)String::allocate((String *)&local_18,0x47); + /* try { // try from 00356b98 to 00456b9b has its CatchHandler @ 00356e28 */ + memcpy(pvVar18,"clSetKernelArg(p->handle, (cl_uint)i, sizeof(u2d.rows), &u2d.rows) == 0" + ,0x47); + error(-0xd7,(String *)&local_18, + "int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd04); + String::deallocate((String *)&local_18); + } + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + /* try { // try from 00356a24 to 00456a27 has its CatchHandler @ 00356e38 */ + /* try { // try from 00356a2c to 00456a53 has its CatchHandler @ 00356e4c */ + iVar15 = param_1 + 5; + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 4,4,&local_34); + } + else { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 4,4,&local_34); + if (iVar15 == 0) { + iVar15 = param_1 + 5; + } + else { + local_18 = (UMat *)0x0; + local_10 = (UMat *)0x0; + pcVar17 = (char *)String::allocate((String *)&local_18,0x43); + uVar12 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._64_2_; + uVar11 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._56_8_; + uVar10 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._48_8_; + uVar9 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._40_8_; + uVar8 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._32_8_; + uVar7 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._24_8_; + uVar6 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._16_8_; + uVar5 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._8_8_; + uVar4 = s_clSetKernelArg_p_>handle___cl_ui_0046dc70._0_8_; + /* try { // try from 003568d8 to 004568db has its CatchHandler @ 003564d8 */ + /* catch() { ... } // from try @ 00356580 with catch @ 003568dc + catch() { ... } // from try @ 003565dc with catch @ 003568dc */ + /* catch() { ... } // from try @ 00356550 with catch @ 003568e4 + catch() { ... } // from try @ 003566ac with catch @ 003568e4 + catch() { ... } // from try @ 003567cc with catch @ 003568e4 */ + /* catch() { ... } // from try @ 00356530 with catch @ 003568ec + catch() { ... } // from try @ 00356720 with catch @ 003568ec + catch() { ... } // from try @ 003567c0 with catch @ 003568ec */ + /* catch() { ... } // from try @ 0035693c with catch @ 003568f8 + catch() { ... } // from try @ 00356c80 with catch @ 003568f8 + catch() { ... } // from try @ 00356e24 with catch @ 003568f8 */ + pcVar17[0x42] = s_clSetKernelArg_p_>handle___cl_ui_0046dc70[0x42]; + *(undefined2 *)(pcVar17 + 0x40) = uVar12; + *(undefined8 *)pcVar17 = uVar4; + *(undefined8 *)(pcVar17 + 8) = uVar5; + *(undefined8 *)(pcVar17 + 0x10) = uVar6; + *(undefined8 *)(pcVar17 + 0x18) = uVar7; + *(undefined8 *)(pcVar17 + 0x20) = uVar8; + *(undefined8 *)(pcVar17 + 0x28) = uVar9; + *(undefined8 *)(pcVar17 + 0x30) = uVar10; + *(undefined8 *)(pcVar17 + 0x38) = uVar11; + error(-0xd7,(String *)&local_18, + "int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd05); + iVar15 = param_1 + 5; + String::deallocate((String *)&local_18); + } + } + } + } + else { + puVar16 = *(undefined4 **)(lVar29 + 0x30); + /* try { // try from 003562a8 to 004562ab has its CatchHandler @ 00356484 */ + local_18 = (UMat *)CONCAT44((int)**(undefined8 **)(lVar29 + 0x38), + (int)*(undefined8 *)(lVar29 + 0x28)); + local_10 = (UMat *)CONCAT44(*puVar16,(int)(*(undefined8 **)(lVar29 + 0x38))[1]); + local_8 = puVar16[1]; + local_4 = puVar16[2]; + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 1,4,(long)&local_18 + 4); + } + else { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 1,4,(long)&local_18 + 4); + if (iVar15 != 0) { + local_28 = 0; + local_20 = 0; + pvVar18 = (void *)String::allocate((String *)&local_28,0x55); + memcpy(pvVar18,&DAT_0046dcb8,0x55); + /* try { // try from 003569d0 to 004569d3 has its CatchHandler @ 00356e4c */ + error(-0xd7,(String *)&local_28,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd0c); + String::deallocate((String *)&local_28); + } + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + /* try { // try from 003566ac to 004566af has its CatchHandler @ 003568e4 */ + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 2,4,&local_10); + } + else { + /* try { // try from 0035631c to 0045631f has its CatchHandler @ 00355e58 */ + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 2,4,&local_10); + if (iVar15 != 0) { + /* try { // try from 0035693c to 0045693f has its CatchHandler @ 003568f8 */ + local_28 = 0; + local_20 = 0; + pvVar18 = (void *)String::allocate((String *)&local_28,0x4b); + /* try { // try from 00356958 to 0045695b has its CatchHandler @ 00356e30 */ + memcpy(pvVar18, + "clSetKernelArg(p->handle, (cl_uint)(i+2), sizeof(u3d.step), &u3d.step) == 0",0x4b) + ; + error(-0xd7,(String *)&local_28,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd0d); + String::deallocate((String *)&local_28); + } + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 3,4,&local_18); + } + else { + /* try { // try from 00356344 to 00456347 has its CatchHandler @ 00356494 */ + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 3,4,&local_18); + if (iVar15 != 0) { + local_28 = 0; + local_20 = 0; + pvVar18 = (void *)String::allocate((String *)&local_28,0x4f); + memcpy(pvVar18, + "clSetKernelArg(p->handle, (cl_uint)(i+3), sizeof(u3d.offset), &u3d.offset) == 0", + 0x4f); + /* try { // try from 00356b24 to 00456b27 has its CatchHandler @ 00356e4c */ + error(-0xd7,(String *)&local_28,"int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd0e); + String::deallocate((String *)&local_28); + } + } + /* try { // try from 00356350 to 00456353 has its CatchHandler @ 0035648c */ + iVar15 = param_1 + 4; + if ((*(uint *)param_2 >> 8 & 1) == 0) { + /* try { // try from 0035635c to 0045635f has its CatchHandler @ 00355e58 */ + /* try { // try from 00356368 to 0045636b has its CatchHandler @ 00356484 */ + local_34 = 0; + if (*(int *)(param_2 + 0x24) != 0) { + local_34 = (local_4 * *(int *)(param_2 + 0x20)) / *(int *)(param_2 + 0x24); + } + cVar14 = FUN_00350224(); + /* try { // try from 00356374 to 00456377 has its CatchHandler @ 00356494 */ + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),iVar15,4,&local_8); + } + else { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),iVar15,4,&local_8); + if (iVar15 != 0) { + local_28 = 0; + local_20 = 0; + puVar19 = (undefined8 *)String::allocate((String *)&local_28,0x49); + uVar13 = _LAB_0046ddf0; + uVar11 = _DAT_0046dde8; + uVar10 = DAT_0046dde0; + uVar9 = DAT_0046ddd8; + uVar8 = DAT_0046ddd0; + uVar7 = DAT_0046ddc8; + uVar6 = DAT_0046ddc0; + uVar5 = DAT_0046ddb8; + uVar4 = DAT_0046ddb0; + /* try { // try from 00356c0c to 00456c0f has its CatchHandler @ 00356e30 */ + *(undefined1 *)(puVar19 + 9) = DAT_0046ddf8; + puVar19[8] = uVar13; + *puVar19 = uVar4; + puVar19[1] = uVar5; + puVar19[2] = uVar6; + puVar19[3] = uVar7; + puVar19[4] = uVar8; + puVar19[5] = uVar9; + puVar19[6] = uVar10; + puVar19[7] = uVar11; + error(-0xd7,(String *)&local_28, + "int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd13); + String::deallocate((String *)&local_28); + } + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 5,4,&local_8); + } + else { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 5,4,&local_8); + if (iVar15 != 0) { + local_28 = 0; + local_20 = 0; + pvVar18 = (void *)String::allocate((String *)&local_28,0x4b); + memcpy(pvVar18, + "clSetKernelArg(p->handle, (cl_uint)(i+1), sizeof(u3d.rows), &u3d.rows) == 0", + 0x4b); + /* try { // try from 00356c80 to 00456ca7 has its CatchHandler @ 003568f8 */ + error(-0xd7,(String *)&local_28, + "int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd14); + String::deallocate((String *)&local_28); + } + } + cVar14 = FUN_00350224(); + if (cVar14 == '\0') { + iVar15 = param_1 + 7; + FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 6,4,&local_34); + } + else { + iVar15 = FUN_0034d580(*(undefined8 *)(*(long *)this + 8),param_1 + 6,4,&local_34); + if (iVar15 == 0) { + iVar15 = param_1 + 7; + /* try { // try from 003563ec to 004563ef has its CatchHandler @ 00356424 */ + } + else { + /* catch() { ... } // from try @ 003565d4 with catch @ 00356868 */ + local_28 = 0; + local_20 = 0; + pvVar18 = (void *)String::allocate((String *)&local_28,0x47); + memcpy(pvVar18,"clSetKernelArg(p->handle, (cl_uint)(i+2), sizeof(u3d.cols), &cols) == 0" + ,0x47); + error(-0xd7,(String *)&local_28, + "int cv::ocl::Kernel::set(int, const cv::ocl::KernelArg&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd15); + iVar15 = param_1 + 7; + String::deallocate((String *)&local_28); + } + } + } + } + } + else { + iVar15 = param_1 + 1; + } + lVar24 = *(long *)this; + lVar29 = *(long *)(param_2 + 8); + iVar23 = *(int *)(lVar24 + 0x98); + if (((0xf < iVar23) || (lVar21 = *(long *)(lVar29 + 0x20), lVar21 == 0)) || + (*(int *)(lVar21 + 0x10) < 1)) { + local_18 = (UMat *)0x0; + local_10 = (UMat *)0x0; + pcVar17 = (char *)String::allocate((String *)&local_18,0x2a); + uVar12 = s_nu_<_MAX_ARRS_&&_m_u_&&_m_u_>ure_0046de98._40_2_; + uVar7 = s_nu_<_MAX_ARRS_&&_m_u_&&_m_u_>ure_0046de98._24_8_; + uVar6 = s_nu_<_MAX_ARRS_&&_m_u_&&_m_u_>ure_0046de98._16_8_; + uVar5 = s_nu_<_MAX_ARRS_&&_m_u_&&_m_u_>ure_0046de98._8_8_; + uVar4 = s_nu_<_MAX_ARRS_&&_m_u_&&_m_u_>ure_0046de98._0_8_; + /* catch() { ... } // from try @ 00355f3c with catch @ 00356424 + catch() { ... } // from try @ 00355f98 with catch @ 00356424 + catch() { ... } // from try @ 003563ec with catch @ 00356424 */ + *(undefined8 *)(pcVar17 + 0x20) = s_nu_<_MAX_ARRS_&&_m_u_&&_m_u_>ure_0046de98._32_8_; + *(undefined2 *)(pcVar17 + 0x28) = uVar12; + *(undefined8 *)pcVar17 = uVar4; + *(undefined8 *)(pcVar17 + 8) = uVar5; + *(undefined8 *)(pcVar17 + 0x10) = uVar6; + *(undefined8 *)(pcVar17 + 0x18) = uVar7; + error(-0xd7,(String *)&local_18,"void cv::ocl::Kernel::Impl::addUMat(const cv::UMat&, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xc2b); + String::deallocate((String *)&local_18); + iVar23 = *(int *)(lVar24 + 0x98); + lVar21 = *(long *)(lVar29 + 0x20); + } + *(long *)(lVar24 + (long)iVar23 * 8 + 0x18) = lVar21; + piVar28 = (int *)(lVar21 + 0x10); + do { + cVar14 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar28,0x10); + if (bVar2) { + *piVar28 = *piVar28 + 1; + cVar14 = ExclusiveMonitorsStatus(); + } + } while (cVar14 != '\0'); + *(int *)(lVar24 + 0x98) = *(int *)(lVar24 + 0x98) + 1; + /* try { // try from 00356234 to 00456237 has its CatchHandler @ 0035648c */ + if (((uVar26 & 0x2000000) != 0) && ((*(uint *)(*(long *)(lVar29 + 0x20) + 0x30) >> 3 & 1) != 0)) { + *(undefined1 *)(lVar24 + 0xb0) = 1; + } + return iVar15; +} + + +================================================================== + +### FUNC 00356df4 (84 bytes) name=set + +/* cv::ocl::Kernel::set(int, cv::UMat const&) */ + +void __thiscall cv::ocl::Kernel::set(Kernel *this,int param_1,UMat *param_2) + +{ + KernelArg aKStack_28 [40]; + + /* try { // try from 00356e24 to 00456e27 has its CatchHandler @ 003568f8 */ + KernelArg::KernelArg(aKStack_28,6,param_2,0,0,(void *)0x0,0); + /* catch() { ... } // from try @ 00356b98 with catch @ 00356e28 + catch() { ... } // from try @ 00356cbc with catch @ 00356e28 */ + /* catch() { ... } // from try @ 00356958 with catch @ 00356e30 + catch() { ... } // from try @ 00356c0c with catch @ 00356e30 + catch() { ... } // from try @ 00356cb0 with catch @ 00356e30 */ + set(this,param_1,aKStack_28); + /* catch() { ... } // from try @ 00356a24 with catch @ 00356e38 */ + return; +} + + +================================================================== + +### FUNC 00356e48 (16 bytes) name=ptr + +/* cv::ocl::Image2D::ptr() const */ + +undefined8 __thiscall cv::ocl::Image2D::ptr(Image2D *this) + +{ + undefined8 uVar1; + + /* catch() { ... } // from try @ 003569d0 with catch @ 00356e4c + catch() { ... } // from try @ 00356a2c with catch @ 00356e4c + catch() { ... } // from try @ 00356b24 with catch @ 00356e4c + catch() { ... } // from try @ 00356cc8 with catch @ 00356e4c */ + uVar1 = 0; + if (*(long *)this != 0) { + uVar1 = *(undefined8 *)(*(long *)this + 8); + } + return uVar1; +} + + +================================================================== + +### FUNC 00356e58 (124 bytes) name=set + +/* cv::ocl::Kernel::set(int, cv::ocl::Image2D const&) */ + +void __thiscall cv::ocl::Kernel::set(Kernel *this,int param_1,Image2D *param_2) + +{ + void *pvVar1; + long lVar2; + undefined8 local_8; + + /* catch() { ... } // from try @ 00356ea8 with catch @ 00356e60 + catch() { ... } // from try @ 00357130 with catch @ 00356e60 + catch() { ... } // from try @ 00357278 with catch @ 00356e60 */ + lVar2 = *(long *)this; + pvVar1 = operator_new(0x18); + Image2D::Image2D((Image2D *)((long)pvVar1 + 0x10),param_2); + FUN_003dbfec(pvVar1,lVar2 + 0xa0); + local_8 = Image2D::ptr(param_2); + /* try { // try from 00356ea8 to 00456eab has its CatchHandler @ 00356e60 */ + set(this,param_1,&local_8,8); + /* try { // try from 00356ec4 to 00456ec7 has its CatchHandler @ 0035728c */ + return; +} + + +================================================================== + +### FUNC 00356ef4 (84 bytes) name=isPerformanceCheckBypassed + +/* cv::ocl::internal::isPerformanceCheckBypassed() */ + +undefined1 cv::ocl::internal::isPerformanceCheckBypassed(void) + +{ + if (DAT_00532078 != '\0') { + /* try { // try from 00356f14 to 00456f17 has its CatchHandler @ 0035727c */ + return DAT_00532118; + } + DAT_00532118 = FUN_00350010("OPENCV_OPENCL_PERF_CHECK_BYPASS"); + DAT_00532078 = 1; + return DAT_00532118; +} + + +================================================================== + +### FUNC 00356f48 (68 bytes) name=isCLBuffer + +/* cv::ocl::internal::isCLBuffer(cv::UMat&) */ + +bool cv::ocl::internal::isCLBuffer(UMat *param_1) + +{ + long lVar1; + + lVar1 = UMat::handle(param_1,0x3000000); + if (lVar1 != 0) { + /* try { // try from 00356f68 to 00456f6b has its CatchHandler @ 00357208 */ + /* try { // try from 00356f70 to 00456fd7 has its CatchHandler @ 0035727c */ + return (*(uint *)(*(long *)(param_1 + 0x20) + 0x48) & 0xffff0000) == 0; + } + return true; +} + + +================================================================== + +### FUNC 00356f8c (836 bytes) name=FUN_00356f8c + +void FUN_00356f8c(long *param_1,ulong param_2,undefined8 param_3) + +{ + void *__dest; + ulong uVar1; + ulong uVar2; + ulong uVar3; + undefined8 *puVar4; + undefined8 *puVar5; + ulong uVar6; + ulong uVar7; + undefined8 *puVar8; + long lVar9; + size_t sVar10; + void *__dest_00; + + puVar8 = (undefined8 *)param_1[1]; + lVar9 = (long)puVar8 - *param_1; + uVar3 = lVar9 >> 3; + if (param_2 <= uVar3) { + if (uVar3 <= param_2) { + return; + } + param_1[1] = *param_1 + param_2 * 8; + return; + } + param_2 = param_2 - uVar3; + if (param_2 == 0) { + return; + } + if ((ulong)(param_1[2] - (long)puVar8 >> 3) < param_2) { + if (0x1fffffffffffffff - uVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar2 = param_2; + if (param_2 < uVar3) { + uVar2 = uVar3; + } + uVar2 = uVar2 + uVar3; + if ((uVar2 < uVar3) || (0x1fffffffffffffff < uVar2)) { + uVar3 = 0xfffffffffffffff8; +LAB_00357260: + __dest_00 = operator_new(uVar3); + } + else { + uVar3 = 0; + __dest_00 = (void *)0x0; + if (uVar2 != 0) { + uVar3 = uVar2 * 8; + goto LAB_00357260; + } + } + puVar4 = (undefined8 *)((long)__dest_00 + lVar9); + uVar2 = (ulong)puVar4 >> 3 & 1; + /* try { // try from 00357130 to 00457157 has its CatchHandler @ 00356e60 */ + if (param_2 < uVar2) { + uVar2 = param_2; + } + if (param_2 < 7) { + *(undefined8 *)((long)__dest_00 + lVar9) = param_3; + puVar5 = puVar4 + 1; + uVar2 = param_2; + if (1 < param_2) { + puVar4[1] = param_3; + puVar5 = puVar4 + 2; + if (param_2 != 2) { + puVar4[2] = param_3; + /* try { // try from 00357160 to 00457163 has its CatchHandler @ 0035728c */ + puVar5 = puVar4 + 3; + if (param_2 != 3) { + /* try { // try from 0035716c to 0045716f has its CatchHandler @ 00357284 */ + puVar4[3] = param_3; + puVar5 = puVar4 + 4; + if (param_2 != 4) { + puVar4[4] = param_3; + puVar5 = puVar4 + 5; + if (param_2 == 6) { + puVar4[5] = param_3; + puVar5 = puVar4 + 6; + } + } + } + } + } +LAB_00357198: + if (param_2 == uVar2) goto LAB_003571c0; + uVar1 = param_2 - uVar2; + puVar4 = puVar5; + if (param_2 - uVar2 != 1) goto LAB_00357224; + } + else { + if (uVar2 != 0) { + puVar5 = puVar4 + 1; + *puVar4 = param_3; + uVar2 = 1; + goto LAB_00357198; + } + uVar2 = 0; + uVar1 = param_2; +LAB_00357224: + uVar7 = (uVar1 - 2 >> 1) + 1; + uVar6 = 0; + puVar5 = (undefined8 *)((long)__dest_00 + lVar9 + uVar2 * 8); + do { + puVar5[1] = param_3; + *puVar5 = param_3; + uVar6 = uVar6 + 1; + puVar5 = puVar5 + 2; + } while (uVar6 < uVar7); + puVar5 = puVar4 + uVar7 * 2; + if (uVar1 == uVar7 * 2) goto LAB_003571c0; + } + *puVar5 = param_3; +LAB_003571c0: + sVar10 = (long)puVar8 - *param_1; + if ((long)sVar10 >> 3 != 0) { + /* catch() { ... } // from try @ 003572c8 with catch @ 00357294 + catch() { ... } // from try @ 0035753c with catch @ 00357294 + catch() { ... } // from try @ 00357660 with catch @ 00357294 */ + memmove(__dest_00,(void *)*param_1,sVar10); + } + __dest = (void *)((long)__dest_00 + sVar10 + param_2 * 8); + sVar10 = param_1[1] - (long)puVar8; + if ((long)sVar10 >> 3 != 0) { + /* catch() { ... } // from try @ 00356f14 with catch @ 0035727c + catch() { ... } // from try @ 00356f70 with catch @ 0035727c */ + /* catch() { ... } // from try @ 00356ee4 with catch @ 00357284 + catch() { ... } // from try @ 00357048 with catch @ 00357284 + catch() { ... } // from try @ 0035716c with catch @ 00357284 */ + memmove(__dest,puVar8,sVar10); + /* catch() { ... } // from try @ 00356ec4 with catch @ 0035728c + catch() { ... } // from try @ 003570bc with catch @ 0035728c + catch() { ... } // from try @ 00357160 with catch @ 0035728c */ + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)__dest_00; + param_1[1] = (long)__dest + sVar10; + param_1[2] = (long)__dest_00 + uVar3; + return; + /* catch() { ... } // from try @ 00356f68 with catch @ 00357208 */ + } + uVar3 = (ulong)puVar8 >> 3 & 1; + if (param_2 < uVar3) { + uVar3 = param_2; + } + if (param_2 < 7) { + puVar4 = puVar8 + 1; + *puVar8 = param_3; + uVar3 = param_2; + if (1 < param_2) { + puVar8[1] = param_3; + puVar4 = puVar8 + 2; + if (param_2 != 2) { + puVar8[2] = param_3; + puVar4 = puVar8 + 3; + if (param_2 != 3) { + puVar8[3] = param_3; + puVar4 = puVar8 + 4; + if (param_2 != 4) { + /* try { // try from 00357048 to 0045704b has its CatchHandler @ 00357284 */ + puVar8[4] = param_3; + puVar4 = puVar8 + 5; + if (param_2 == 6) { + puVar8[5] = param_3; + puVar4 = puVar8 + 6; + } + } + } + } + } +LAB_00357064: + if (param_2 == uVar3) goto LAB_0035708c; + uVar2 = param_2 - uVar3; + if (param_2 - uVar3 != 1) goto LAB_003570b8; + } + else { + if (uVar3 != 0) { + puVar4 = puVar8 + 1; + /* try { // try from 003572c8 to 004572cb has its CatchHandler @ 00357294 */ + *puVar8 = param_3; + uVar3 = 1; + goto LAB_00357064; + } + uVar3 = 0; + puVar4 = puVar8; + uVar2 = param_2; +LAB_003570b8: + uVar6 = (uVar2 - 2 >> 1) + 1; + /* try { // try from 003570bc to 004570bf has its CatchHandler @ 0035728c */ + uVar1 = 0; + puVar8 = puVar8 + uVar3; + do { + puVar8[1] = param_3; + *puVar8 = param_3; + uVar1 = uVar1 + 1; + puVar8 = puVar8 + 2; + } while (uVar1 < uVar6); + puVar4 = puVar4 + uVar6 * 2; + if (uVar2 == uVar6 * 2) goto LAB_0035708c; + } + *puVar4 = param_3; +LAB_0035708c: + param_1[1] = param_1[1] + param_2 * 8; + return; +} + + +================================================================== + +### FUNC 003572d0 (96 bytes) name=~vector + +/* std::vector >::~vector() */ + +void __thiscall +std::vector>::~vector + (vector> *this) + +{ + Device *this_00; + Device *pDVar1; + + this_00 = *(Device **)this; + /* try { // try from 003572e4 to 004572e7 has its CatchHandler @ 00357664 */ + pDVar1 = *(Device **)(this + 8); + if (this_00 != pDVar1) { + do { + cv::ocl::Device::~Device(this_00); + this_00 = this_00 + 8; + } while (pDVar1 != this_00); + pDVar1 = *(Device **)this; + } + if (pDVar1 != (Device *)0x0) { + /* try { // try from 00357314 to 00457317 has its CatchHandler @ 00357680 */ + operator_delete(pDVar1); + return; + } + return; +} + + +================================================================== + +### FUNC 0035734c (68 bytes) name=FUN_0035734c + +void FUN_0035734c(size_t *param_1) + +{ + if (param_1[4] != 0) { + /* try { // try from 00357360 to 00457363 has its CatchHandler @ 0035766c */ + /* try { // try from 00357368 to 004573a3 has its CatchHandler @ 00357680 */ + memcpy((void *)param_1[1],(void *)param_1[3],*param_1); + if ((void *)param_1[4] != (void *)0x0) { + operator_delete__((void *)param_1[4]); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00357390 (612 bytes) name=_M_insert_aux + +/* std::vector + >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, std::string const&) */ + +void __thiscall +std::vector>::_M_insert_aux + (vector> *this,long *param_2,undefined8 param_3) + +{ + void *pvVar1; + int iVar2; + char cVar3; + bool bVar4; + long lVar5; + long lVar6; + ulong uVar7; + void *pvVar8; + int *piVar9; + undefined *puVar10; + long lVar11; + long *plVar12; + long lVar13; + long *plVar14; + ulong uVar15; + long local_8; + + lVar5 = *(long *)(this + 8); + if (lVar5 != *(long *)(this + 0x10)) { + lVar6 = 0; + if (lVar5 != 0) { + FUN_00414378(lVar5,lVar5 + -8); + lVar6 = *(long *)(this + 8); + } + /* try { // try from 003573e0 to 004573e3 has its CatchHandler @ 00357600 */ + *(long *)(this + 8) = lVar6 + 8; + FUN_00414378(&local_8,param_3); + lVar6 = *(long *)(this + 8); + lVar5 = lVar6 + -0x10; + lVar13 = lVar5 - (long)param_2; + if (7 < lVar13) { + do { + lVar11 = lVar5 + -8; + FUN_004144f8(lVar5,lVar11); + lVar5 = lVar11; + } while (lVar11 != (lVar6 - lVar13) + -0x10); + } + FUN_004144f8(param_2,&local_8); + if ((undefined *)(local_8 + -0x18) == PTR_DAT_00501f30) { + return; + } + piVar9 = (int *)(local_8 + -8); + do { + iVar2 = *piVar9; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar4) { + *piVar9 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (0 < iVar2) { + return; + } + operator_delete((undefined *)(local_8 + -0x18)); + return; + } + lVar6 = *(long *)this; + uVar7 = lVar5 - lVar6 >> 3; + if (uVar7 == 0) { + lVar6 = (long)param_2 - lVar6; + uVar15 = 1; +LAB_003575ac: + uVar7 = uVar15 << 3; + } + else { + uVar15 = uVar7 * 2; + if ((uVar7 <= uVar15) && (uVar15 < 0x2000000000000000)) { + lVar6 = (long)param_2 - lVar6; + if (uVar15 == 0) { + pvVar8 = (void *)0x0; + goto LAB_003574c4; + } + goto LAB_003575ac; + } + lVar6 = (long)param_2 - lVar6; + uVar7 = 0xfffffffffffffff8; + uVar15 = 0x1fffffffffffffff; + } + pvVar8 = operator_new(uVar7); +LAB_003574c4: + /* try { // try from 003574c8 to 004574cb has its CatchHandler @ 00357664 */ + if ((long)pvVar8 + lVar6 != 0) { + FUN_00414378((long)pvVar8 + lVar6,param_3); + } + pvVar1 = pvVar8; + for (plVar14 = *(long **)this; param_2 != plVar14; plVar14 = plVar14 + 1) { + if (pvVar1 != (void *)0x0) { + FUN_00414378(pvVar1,plVar14); + } + pvVar1 = (void *)((long)pvVar1 + 8); + } + plVar14 = *(long **)(this + 8); + lVar5 = (long)pvVar1 + 8; + if (param_2 != plVar14) { + do { + if (lVar5 != 0) { + FUN_00414378(lVar5,param_2); + } + param_2 = param_2 + 1; + lVar5 = lVar5 + 8; + } while (plVar14 != param_2); + /* try { // try from 0035753c to 0045755b has its CatchHandler @ 00357294 */ + plVar14 = *(long **)(this + 8); + } + plVar12 = *(long **)this; + if (plVar12 != plVar14) { + do { + /* try { // try from 00357564 to 00457567 has its CatchHandler @ 00357664 */ + puVar10 = (undefined *)(*plVar12 + -0x18); + /* try { // try from 00357570 to 00457573 has its CatchHandler @ 00357680 */ + if (puVar10 != PTR_DAT_00501f30) { + piVar9 = (int *)(*plVar12 + -8); + do { + iVar2 = *piVar9; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar4) { + *piVar9 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar2 < 1) { + operator_delete(puVar10); + } + } + plVar12 = plVar12 + 1; + } while (plVar14 != plVar12); + plVar14 = *(long **)this; + } + if (plVar14 != (long *)0x0) { + operator_delete(plVar14); + } + *(void **)this = pvVar8; + *(long *)(this + 8) = lVar5; + *(void **)(this + 0x10) = (void *)((long)pvVar8 + uVar15 * 8); + /* try { // try from 00357454 to 00457457 has its CatchHandler @ 00357680 */ + return; +} + + +================================================================== + +### FUNC 00357728 (80 bytes) name=push_back + +/* std::vector >::push_back(std::string const&) */ + +void __thiscall +std::vector>::push_back + (vector> *this,string *param_1) + +{ + long lVar1; + long lVar2; + + lVar1 = *(long *)(this + 8); + if (lVar1 == *(long *)(this + 0x10)) { + /* try { // try from 0035776c to 004577e7 has its CatchHandler @ 003579e0 */ + _M_insert_aux(this,lVar1,param_1); + } + else { + lVar2 = 0; + if (lVar1 != 0) { + FUN_00414378(lVar1); + lVar2 = *(long *)(this + 8); + } + *(long *)(this + 8) = lVar2 + 8; + } + /* try { // try from 00357764 to 00457767 has its CatchHandler @ 003579b0 */ + return; +} + + +================================================================== + +### FUNC 00357778 (808 bytes) name=FUN_00357778 + +void FUN_00357778(long *param_1,char param_2, + vector> *param_3) + +{ + int iVar1; + char cVar2; + bool bVar3; + long lVar4; + long lVar5; + int *piVar6; + long *plVar7; + long *plVar8; + undefined *puVar9; + long *plVar10; + undefined *local_170; + undefined *local_168 [9]; + undefined1 auStack_120 [8]; + undefined4 local_118; + long local_110; + undefined *local_108 [4]; + uint local_e8; + undefined8 local_30; + undefined1 local_28; + undefined1 local_27; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + plVar10 = *(long **)param_3; + plVar8 = *(long **)(param_3 + 8); + plVar7 = plVar10; +joined_r0x003577bc: + if (plVar7 != plVar8) { + do { + puVar9 = (undefined *)(*plVar7 + -0x18); + if (puVar9 != PTR_DAT_00501f30) { + piVar6 = (int *)(*plVar7 + -8); + do { + iVar1 = *piVar6; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar3) { + *piVar6 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 < 1) goto code_r0x00357800; + } + plVar7 = plVar7 + 1; + if (plVar8 == plVar7) break; + } while( true ); + } + *(long **)(param_3 + 8) = plVar10; + if (*(long *)(*param_1 + -0x18) != 0) { + /* try { // try from 00357858 to 0045785b has its CatchHandler @ 00357988 */ + FUN_003d347c(local_108); + local_28 = 0; + local_30 = 0; + puVar9 = *(undefined **)(PTR_PTR_005019a8 + 8); + local_108[0] = PTR_DAT_00501a40 + 0x10; + local_27 = 0; + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + local_168[0] = puVar9; + *(undefined8 *)((long)local_168 + *(long *)(puVar9 + -0x18)) = + *(undefined8 *)(PTR_PTR_005019a8 + 0x10); + local_168[1] = (undefined *)0x0; + FUN_003d2728((long)local_168 + *(long *)(puVar9 + -0x18)); + local_168[3] = (undefined *)0x0; + local_168[4] = (undefined *)0x0; + /* try { // try from 003578cc to 004578eb has its CatchHandler @ 00357688 */ + local_168[0] = PTR_DAT_00501d70 + 0x18; + local_168[5] = (undefined *)0x0; + local_108[0] = PTR_DAT_00501d70 + 0x40; + local_168[2] = PTR_DAT_00501bb0 + 0x10; + /* try { // try from 003578f4 to 004578f7 has its CatchHandler @ 00357988 */ + local_168[6] = (undefined *)0x0; + local_168[7] = (undefined *)0x0; + local_168[8] = (undefined *)0x0; + FUN_003ef168(auStack_120); + local_118 = 0; + local_168[2] = PTR_DAT_00501cc0 + 0x10; + FUN_004108cc(&local_110,*param_1,*(undefined8 *)(*param_1 + -0x18),&local_170); + local_118 = 8; + FUN_003f81cc(local_168 + 2,local_110,0,0); + FUN_003d2728(local_108,local_168 + 2); + local_170 = PTR_DAT_00501f30 + 0x18; + /* catch() { ... } // from try @ 003576e8 with catch @ 00357988 + catch() { ... } // from try @ 00357858 with catch @ 00357988 + catch() { ... } // from try @ 003578f4 with catch @ 00357988 */ + while ((local_e8 >> 1 & 1) == 0) { + while( true ) { + FUN_003db200(local_168,&local_170,(int)param_2); + lVar5 = *(long *)(param_3 + 8); + if (lVar5 != *(long *)(param_3 + 0x10)) break; + /* try { // try from 003579ac to 004579af has its CatchHandler @ 00357688 */ + /* catch() { ... } // from try @ 00357764 with catch @ 003579b0 */ + std::vector>::_M_insert_aux + (param_3,lVar5,&local_170); + if ((local_e8 >> 1 & 1) != 0) goto LAB_003579c0; + } + lVar4 = 0; + if (lVar5 != 0) { + FUN_00414378(lVar5,&local_170); + lVar4 = *(long *)(param_3 + 8); + } + *(long *)(param_3 + 8) = lVar4 + 8; + } +LAB_003579c0: + if (local_170 + -0x18 != PTR_DAT_00501f30) { + piVar6 = (int *)(local_170 + -8); + do { + iVar1 = *piVar6; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar3) { + *piVar6 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 < 1) { + operator_delete(local_170 + -0x18); + } + } + /* catch() { ... } // from try @ 00357718 with catch @ 003579e0 + catch() { ... } // from try @ 0035776c with catch @ 003579e0 */ + /* catch() { ... } // from try @ 00357a28 with catch @ 003579e8 + catch() { ... } // from try @ 00357d4c with catch @ 003579e8 + catch() { ... } // from try @ 00357e3c with catch @ 003579e8 */ + local_168[0] = PTR_DAT_00501d70 + 0x18; + local_168[2] = PTR_DAT_00501cc0 + 0x10; + local_108[0] = PTR_DAT_00501d70 + 0x40; + if ((undefined *)(local_110 + -0x18) != PTR_DAT_00501f30) { + piVar6 = (int *)(local_110 + -8); + do { + iVar1 = *piVar6; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar3) { + *piVar6 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 < 1) { + operator_delete((undefined *)(local_110 + -0x18)); + /* try { // try from 00357a74 to 00457a77 has its CatchHandler @ 00357ec0 */ + } + } + local_168[2] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(auStack_120); + /* try { // try from 00357a28 to 00457a2b has its CatchHandler @ 003579e8 */ + local_168[0] = *(undefined **)(PTR_PTR_005019a8 + 8); + *(undefined8 *)((long)local_168 + *(long *)(local_168[0] + -0x18)) = + *(undefined8 *)(PTR_PTR_005019a8 + 0x10); + local_108[0] = PTR_DAT_00501a40 + 0x10; + /* try { // try from 00357a44 to 00457a47 has its CatchHandler @ 00357e18 */ + FUN_003d381c(); + } + return; +code_r0x00357800: + plVar7 = plVar7 + 1; + operator_delete(puVar9); + goto joined_r0x003577bc; +} + + +================================================================== + +### FUNC 00357b6c (452 bytes) name=_M_erase + +/* std::_Rb_tree, std::_Select1st >, std::less, + std::allocator > + >::_M_erase(std::_Rb_tree_node + >*) */ + +void __thiscall +std:: +_Rb_tree,std::_Select1st>,std::less,std::allocator>> +::_M_erase(_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *this,_Rb_tree_node *param_1) + +{ + void *pvVar1; + void *pvVar2; + void *pvVar3; + void *pvVar4; + void *pvVar5; + void *pvVar6; + void *pvVar7; + void *pvVar8; + _Rb_tree_node *p_Var9; + void *pvVar10; + + while (param_1 != (_Rb_tree_node *)0x0) { + pvVar1 = *(void **)(param_1 + 0x18); + while (pvVar1 != (void *)0x0) { + pvVar8 = *(void **)((long)pvVar1 + 0x18); + while (pvVar8 != (void *)0x0) { + pvVar7 = *(void **)((long)pvVar8 + 0x18); + while (pvVar7 != (void *)0x0) { + pvVar6 = *(void **)((long)pvVar7 + 0x18); + while (pvVar6 != (void *)0x0) { + pvVar5 = *(void **)((long)pvVar6 + 0x18); + while (pvVar5 != (void *)0x0) { + pvVar4 = *(void **)((long)pvVar5 + 0x18); + while (pvVar4 != (void *)0x0) { + pvVar3 = *(void **)((long)pvVar4 + 0x18); + while (pvVar3 != (void *)0x0) { + pvVar2 = *(void **)((long)pvVar3 + 0x18); + while (pvVar2 != (void *)0x0) { + _M_erase(this,*(_Rb_tree_node **)((long)pvVar2 + 0x18)); + pvVar10 = *(void **)((long)pvVar2 + 0x10); + /* try { // try from 00357bf0 to 00457bf3 has its CatchHandler @ 00357ea4 */ + cv::ocl::Program::~Program((Program *)((long)pvVar2 + 0x30)); + operator_delete(pvVar2); + pvVar2 = pvVar10; + } + pvVar2 = *(void **)((long)pvVar3 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar3 + 0x30)); + operator_delete(pvVar3); + pvVar3 = pvVar2; + } + pvVar3 = *(void **)((long)pvVar4 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar4 + 0x30)); + operator_delete(pvVar4); + pvVar4 = pvVar3; + } + pvVar4 = *(void **)((long)pvVar5 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar5 + 0x30)); + operator_delete(pvVar5); + pvVar5 = pvVar4; + } + pvVar5 = *(void **)((long)pvVar6 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar6 + 0x30)); + operator_delete(pvVar6); + pvVar6 = pvVar5; + } + pvVar6 = *(void **)((long)pvVar7 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar7 + 0x30)); + operator_delete(pvVar7); + pvVar7 = pvVar6; + } + pvVar7 = *(void **)((long)pvVar8 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar8 + 0x30)); + operator_delete(pvVar8); + pvVar8 = pvVar7; + } + pvVar8 = *(void **)((long)pvVar1 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar1 + 0x30)); + /* try { // try from 00357cd8 to 00457cdb has its CatchHandler @ 00357e18 */ + operator_delete(pvVar1); + pvVar1 = pvVar8; + } + p_Var9 = *(_Rb_tree_node **)(param_1 + 0x10); + cv::ocl::Program::~Program((Program *)(param_1 + 0x30)); + operator_delete(param_1); + param_1 = p_Var9; + } + return; +} + + +================================================================== + +### FUNC 00357d30 (268 bytes) name=FUN_00357d30 + +void FUN_00357d30(long param_1) + +{ + long lVar1; + void *pvVar2; + Device *pDVar3; + Device *pDVar4; + void *pvVar5; + Device *pDVar6; + + lVar1 = *(long *)(param_1 + 8); + if (lVar1 != 0) { + /* try { // try from 00357d4c to 00457d73 has its CatchHandler @ 003579e8 */ + if ((DAT_005329b0 != (code *)0x0) || + (DAT_005329b0 = (code *)FUN_0034d2bc("clReleaseContext"), DAT_005329b0 != (code *)0x0)) { + (*DAT_005329b0)(lVar1); + } + *(undefined8 *)(param_1 + 8) = 0; + } + pDVar6 = *(Device **)(param_1 + 0x18); + pDVar4 = *(Device **)(param_1 + 0x10); + for (pDVar3 = pDVar4; pDVar3 != pDVar6; pDVar3 = pDVar3 + 8) { + /* try { // try from 00357d7c to 00457d7f has its CatchHandler @ 00357e18 */ + cv::ocl::Device::~Device(pDVar3); + /* try { // try from 00357d88 to 00457d8b has its CatchHandler @ 00357ec0 */ + } + /* try { // try from 00357d94 to 00457d97 has its CatchHandler @ 00357ea4 */ + *(Device **)(param_1 + 0x18) = pDVar4; + pvVar2 = *(void **)(param_1 + 0x38); + if (*(void **)(param_1 + 0x38) != (void *)0x0) { + do { + std:: + _Rb_tree,std::_Select1st>,std::less,std::allocator>> + ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *)(param_1 + 0x28),*(_Rb_tree_node **)((long)pvVar2 + 0x18)); + pvVar5 = *(void **)((long)pvVar2 + 0x10); + cv::ocl::Program::~Program((Program *)((long)pvVar2 + 0x30)); + operator_delete(pvVar2); + pvVar2 = pvVar5; + } while (pvVar5 != (void *)0x0); + pDVar4 = *(Device **)(param_1 + 0x18); + } + pDVar3 = *(Device **)(param_1 + 0x10); + if (pDVar3 != pDVar4) { + do { + cv::ocl::Device::~Device(pDVar3); + pDVar3 = pDVar3 + 8; + } while (pDVar4 != pDVar3); + pDVar4 = *(Device **)(param_1 + 0x10); + } + if (pDVar4 != (Device *)0x0) { + operator_delete(pDVar4); + return; + } + /* catch() { ... } // from try @ 00357a44 with catch @ 00357e18 + catch() { ... } // from try @ 00357cd8 with catch @ 00357e18 + catch() { ... } // from try @ 00357d7c with catch @ 00357e18 */ + return; +} + + +================================================================== + +### FUNC 00357ea8 (320 bytes) name=~Context + +/* cv::ocl::Context::~Context() */ + +void __thiscall cv::ocl::Context::~Context(Context *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + long lVar4; + void *pvVar5; + Device *pDVar6; + Device *pDVar7; + void *pvVar8; + Device *pDVar9; + int *piVar10; + + /* catch() { ... } // from try @ 00357ac0 with catch @ 00357eac */ + piVar10 = *(int **)this; + if (piVar10 != (int *)0x0) { + do { + /* catch() { ... } // from try @ 00357a74 with catch @ 00357ec0 + catch() { ... } // from try @ 00357ac8 with catch @ 00357ec0 + catch() { ... } // from try @ 00357c64 with catch @ 00357ec0 + catch() { ... } // from try @ 00357d88 with catch @ 00357ec0 */ + iVar1 = *piVar10; + /* catch() { ... } // from try @ 00357f20 with catch @ 00357ec8 + catch() { ... } // from try @ 00358160 with catch @ 00357ec8 + catch() { ... } // from try @ 00358234 with catch @ 00357ec8 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar4 = *(long *)(piVar10 + 2); + if (lVar4 != 0) { + if ((DAT_005329b0 != (code *)0x0) || + (DAT_005329b0 = (code *)FUN_0034d2bc("clReleaseContext"), DAT_005329b0 != (code *)0x0)) { + (*DAT_005329b0)(lVar4); + } + piVar10[2] = 0; + piVar10[3] = 0; + } + pDVar9 = *(Device **)(piVar10 + 6); + /* try { // try from 00357f20 to 00457f23 has its CatchHandler @ 00357ec8 */ + pDVar7 = *(Device **)(piVar10 + 4); + for (pDVar6 = pDVar7; pDVar6 != pDVar9; pDVar6 = pDVar6 + 8) { + Device::~Device(pDVar6); + /* try { // try from 00357f3c to 00457f3f has its CatchHandler @ 00358210 */ + } + *(Device **)(piVar10 + 6) = pDVar7; + pvVar5 = *(void **)(piVar10 + 0xe); + if (*(void **)(piVar10 + 0xe) != (void *)0x0) { + do { + std:: + _Rb_tree,std::_Select1st>,std::less,std::allocator>> + ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *)(piVar10 + 10),*(_Rb_tree_node **)((long)pvVar5 + 0x18)); + /* try { // try from 00357f6c to 00457f6f has its CatchHandler @ 00358268 */ + pvVar8 = *(void **)((long)pvVar5 + 0x10); + Program::~Program((Program *)((long)pvVar5 + 0x30)); + operator_delete(pvVar5); + pvVar5 = pvVar8; + } while (pvVar8 != (void *)0x0); + pDVar7 = *(Device **)(piVar10 + 6); + } + pDVar6 = *(Device **)(piVar10 + 4); + if (pDVar6 != pDVar7) { + do { + Device::~Device(pDVar6); + pDVar6 = pDVar6 + 8; + } while (pDVar6 != pDVar7); + pDVar7 = *(Device **)(piVar10 + 4); + } + if (pDVar7 != (Device *)0x0) { + operator_delete(pDVar7); + } + /* try { // try from 00357fb8 to 00457fbb has its CatchHandler @ 00358238 */ + /* try { // try from 00357fc0 to 0045807b has its CatchHandler @ 00358268 */ + operator_delete(piVar10); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00358054 (368 bytes) name=create + +/* WARNING: Removing unreachable block (ram,0x003580ec) */ +/* cv::ocl::Context::create() */ + +undefined8 __thiscall cv::ocl::Context::create(Context *this) + +{ + int iVar1; + bool bVar2; + char cVar3; + undefined4 *puVar4; + int *piVar5; + void *pvVar6; + Device *pDVar7; + void *pvVar8; + Device *this_00; + + cVar3 = haveOpenCL(); + if (cVar3 == '\0') { + return 0; + } + piVar5 = *(int **)this; + if (piVar5 != (int *)0x0) { + do { + iVar1 = *piVar5; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar1 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + FUN_00357d30(piVar5); + operator_delete(piVar5); + } + } + puVar4 = operator_new(0x58); + *(undefined8 *)(puVar4 + 4) = 0; + *(undefined8 *)(puVar4 + 6) = 0; + *(undefined8 *)(puVar4 + 8) = 0; + *(undefined4 **)(puVar4 + 0x10) = puVar4 + 0xc; + *(undefined4 **)(puVar4 + 0x12) = puVar4 + 0xc; + puVar4[0xc] = 0; + *(undefined8 *)(puVar4 + 0xe) = 0; + *(undefined8 *)(puVar4 + 0x14) = 0; + *puVar4 = 1; + *(undefined8 *)(puVar4 + 2) = 0; + *(undefined4 **)this = puVar4; + *(undefined8 *)(puVar4 + 6) = 0; + pvVar6 = *(void **)(puVar4 + 0xe); + if (*(void **)(puVar4 + 0xe) == (void *)0x0) { + this_00 = *(Device **)(puVar4 + 4); + pDVar7 = (Device *)0x0; + if (this_00 == (Device *)0x0) goto LAB_0035816c; +LAB_00358148: + do { + Device::~Device(this_00); + this_00 = this_00 + 8; + } while (this_00 != pDVar7); + pDVar7 = *(Device **)(puVar4 + 4); + } + else { + do { + std:: + _Rb_tree,std::_Select1st>,std::less,std::allocator>> + ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *)(puVar4 + 10),*(_Rb_tree_node **)((long)pvVar6 + 0x18)); + pvVar8 = *(void **)((long)pvVar6 + 0x10); + Program::~Program((Program *)((long)pvVar6 + 0x30)); + operator_delete(pvVar6); + pvVar6 = pvVar8; + } while (pvVar8 != (void *)0x0); + pDVar7 = *(Device **)(puVar4 + 6); + this_00 = *(Device **)(puVar4 + 4); + if (this_00 != pDVar7) goto LAB_00358148; + } + /* try { // try from 00358160 to 0045817f has its CatchHandler @ 00357ec8 */ + if (pDVar7 != (Device *)0x0) { + operator_delete(pDVar7); + } +LAB_0035816c: + operator_delete(puVar4); + *(undefined8 *)this = 0; + /* try { // try from 00358188 to 0045818b has its CatchHandler @ 00358210 */ + return 0; +} + + +================================================================== + +### FUNC 0035822c (380 bytes) name=operator= + +/* cv::ocl::Context::TEMPNAMEPLACEHOLDERVALUE(cv::ocl::Context const&) */ + +Context * __thiscall cv::ocl::Context::operator=(Context *this,Context *param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + long lVar4; + void *pvVar5; + Device *pDVar6; + Device *pDVar7; + void *pvVar8; + Device *pDVar9; + int *piVar10; + int *piVar11; + + /* try { // try from 00358234 to 00458237 has its CatchHandler @ 00357ec8 */ + /* catch() { ... } // from try @ 00357fb8 with catch @ 00358238 */ + piVar11 = *(int **)param_1; + if (piVar11 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = *piVar11 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + piVar10 = *(int **)this; + if (piVar10 != (int *)0x0) { + do { + iVar1 = *piVar10; + /* catch() { ... } // from try @ 00357f6c with catch @ 00358268 + catch() { ... } // from try @ 00357fc0 with catch @ 00358268 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* catch() { ... } // from try @ 003582ac with catch @ 00358270 + catch() { ... } // from try @ 00358524 with catch @ 00358270 + catch() { ... } // from try @ 00358640 with catch @ 00358270 */ + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + /* try { // try from 003582ac to 004582af has its CatchHandler @ 00358270 */ + lVar4 = *(long *)(piVar10 + 2); + if (lVar4 != 0) { + if ((DAT_005329b0 != (code *)0x0) || + (DAT_005329b0 = (code *)FUN_0034d2bc("clReleaseContext"), DAT_005329b0 != (code *)0x0)) { + /* try { // try from 003582c8 to 004582cb has its CatchHandler @ 00358644 */ + (*DAT_005329b0)(lVar4); + } + piVar10[2] = 0; + piVar10[3] = 0; + } + pDVar9 = *(Device **)(piVar10 + 6); + pDVar7 = *(Device **)(piVar10 + 4); + for (pDVar6 = pDVar7; pDVar6 != pDVar9; pDVar6 = pDVar6 + 8) { + Device::~Device(pDVar6); + } + /* try { // try from 003582f8 to 004582fb has its CatchHandler @ 00358660 */ + *(Device **)(piVar10 + 6) = pDVar7; + pvVar5 = *(void **)(piVar10 + 0xe); + if (*(void **)(piVar10 + 0xe) != (void *)0x0) { + do { + std:: + _Rb_tree,std::_Select1st>,std::less,std::allocator>> + ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *)(piVar10 + 10),*(_Rb_tree_node **)((long)pvVar5 + 0x18)); + pvVar8 = *(void **)((long)pvVar5 + 0x10); + Program::~Program((Program *)((long)pvVar5 + 0x30)); + operator_delete(pvVar5); + pvVar5 = pvVar8; + } while (pvVar8 != (void *)0x0); + pDVar7 = *(Device **)(piVar10 + 6); + } + pDVar6 = *(Device **)(piVar10 + 4); + if (pDVar6 != pDVar7) { + do { + /* try { // try from 00358344 to 00458347 has its CatchHandler @ 0035864c */ + Device::~Device(pDVar6); + /* try { // try from 0035834c to 00458387 has its CatchHandler @ 00358660 */ + pDVar6 = pDVar6 + 8; + } while (pDVar6 != pDVar7); + pDVar7 = *(Device **)(piVar10 + 4); + } + if (pDVar7 != (Device *)0x0) { + operator_delete(pDVar7); + } + operator_delete(piVar10); + *(int **)this = piVar11; + return this; + } + } + *(int **)this = piVar11; + return this; +} + + +================================================================== + +### FUNC 00358414 (488 bytes) name=_M_insert_aux + +/* std::vector + >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, + cv::ocl::PlatformInfo const&) */ + +void __thiscall +std::vector>::_M_insert_aux + (vector> *this, + PlatformInfo *param_2,PlatformInfo *param_3) + +{ + PlatformInfo *pPVar1; + PlatformInfo *pPVar2; + long lVar3; + ulong uVar4; + PlatformInfo *pPVar5; + long lVar6; + PlatformInfo *this_00; + PlatformInfo *pPVar7; + ulong uVar8; + PlatformInfo aPStack_8 [8]; + + pPVar2 = *(PlatformInfo **)(this + 8); + /* try { // try from 0035843c to 0045843f has its CatchHandler @ 00358660 */ + if (pPVar2 != *(PlatformInfo **)(this + 0x10)) { + lVar3 = 0; + if (pPVar2 != (PlatformInfo *)0x0) { + cv::ocl::PlatformInfo::PlatformInfo(pPVar2,pPVar2 + -8); + lVar3 = *(long *)(this + 8); + } + *(long *)(this + 8) = lVar3 + 8; + cv::ocl::PlatformInfo::PlatformInfo(aPStack_8,param_3); + lVar3 = *(long *)(this + 8); + pPVar2 = (PlatformInfo *)(lVar3 + -0x10); + lVar6 = (long)pPVar2 - (long)param_2; + if (7 < lVar6) { + do { + pPVar5 = pPVar2 + -8; + cv::ocl::PlatformInfo::operator=(pPVar2,pPVar5); + pPVar2 = pPVar5; + } while (pPVar5 != (PlatformInfo *)((lVar3 - lVar6) + -0x10)); + } + /* try { // try from 003584b0 to 004584b3 has its CatchHandler @ 00358644 */ + cv::ocl::PlatformInfo::operator=(param_2,aPStack_8); + cv::ocl::PlatformInfo::~PlatformInfo(aPStack_8); + return; + } + lVar3 = *(long *)this; + uVar4 = (long)pPVar2 - lVar3 >> 3; + if (uVar4 == 0) { + lVar3 = (long)param_2 - lVar3; + uVar8 = 1; +LAB_003585d8: + uVar4 = uVar8 << 3; + } + else { + uVar8 = uVar4 * 2; + if ((uVar4 <= uVar8) && (uVar8 < 0x2000000000000000)) { + /* try { // try from 003586c0 to 004586c3 has its CatchHandler @ 00358938 */ + lVar3 = (long)param_2 - lVar3; + if (uVar8 == 0) { + pPVar2 = (PlatformInfo *)0x0; + goto LAB_00358510; + } + goto LAB_003585d8; + } + lVar3 = (long)param_2 - lVar3; + uVar4 = 0xfffffffffffffff8; + uVar8 = 0x1fffffffffffffff; + } + pPVar2 = operator_new(uVar4); +LAB_00358510: + if (pPVar2 + lVar3 != (PlatformInfo *)0x0) { + cv::ocl::PlatformInfo::PlatformInfo(pPVar2 + lVar3,param_3); + } + pPVar7 = pPVar2; + /* try { // try from 00358524 to 00458547 has its CatchHandler @ 00358270 */ + for (pPVar5 = *(PlatformInfo **)this; param_2 != pPVar5; pPVar5 = pPVar5 + 8) { + if (pPVar7 != (PlatformInfo *)0x0) { + cv::ocl::PlatformInfo::PlatformInfo(pPVar7,pPVar5); + } + pPVar7 = pPVar7 + 8; + /* try { // try from 00358550 to 00458553 has its CatchHandler @ 00358644 */ + } + pPVar5 = *(PlatformInfo **)(this + 8); + pPVar7 = pPVar7 + 8; + /* try { // try from 0035855c to 0045855f has its CatchHandler @ 00358660 */ + if (param_2 != pPVar5) { + do { + if (pPVar7 != (PlatformInfo *)0x0) { + cv::ocl::PlatformInfo::PlatformInfo(pPVar7,param_2); + } + param_2 = param_2 + 8; + pPVar7 = pPVar7 + 8; + } while (pPVar5 != param_2); + pPVar5 = *(PlatformInfo **)(this + 8); + } + this_00 = *(PlatformInfo **)this; + if (*(PlatformInfo **)this != pPVar5) { + do { + pPVar1 = this_00 + 8; + cv::ocl::PlatformInfo::~PlatformInfo(this_00); + this_00 = pPVar1; + } while (pPVar1 != pPVar5); + pPVar5 = *(PlatformInfo **)this; + } + if (pPVar5 != (PlatformInfo *)0x0) { + operator_delete(pPVar5); + } + *(PlatformInfo **)this = pPVar2; + *(PlatformInfo **)(this + 8) = pPVar7; + *(PlatformInfo **)(this + 0x10) = pPVar2 + uVar8 * 8; + return; +} + + +================================================================== + +### FUNC 003586dc (364 bytes) name=_M_insert_aux + +/* std::vector + >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, unsigned long const&) */ + +void __thiscall +std::vector>::_M_insert_aux + (vector> *this,undefined8 *param_2, + undefined8 *param_3) + +{ + ulong uVar1; + void *__dest; + void *pvVar2; + undefined8 *puVar3; + size_t sVar4; + undefined8 uVar5; + size_t __n; + ulong uVar6; + + /* try { // try from 003586f0 to 004586f3 has its CatchHandler @ 00358994 */ + puVar3 = *(undefined8 **)(this + 8); + if (puVar3 != *(undefined8 **)(this + 0x10)) { + if (puVar3 != (undefined8 *)0x0) { + *puVar3 = puVar3[-1]; + } + sVar4 = (long)puVar3 + (-8 - (long)param_2); + *(undefined8 **)(this + 8) = puVar3 + 1; + uVar5 = *param_3; + if ((long)sVar4 >> 3 != 0) { + memmove((void *)((long)(puVar3 + 1) + (-8 - sVar4)),param_2,sVar4); + } + *param_2 = uVar5; + return; + } + pvVar2 = *(void **)this; + uVar1 = (long)puVar3 - (long)pvVar2 >> 3; + if (uVar1 == 0) { + sVar4 = (long)param_2 - (long)pvVar2; + uVar1 = 8; + } + else { + uVar6 = uVar1 * 2; + if ((uVar6 < uVar1) || (0x1fffffffffffffff < uVar6)) { + sVar4 = (long)param_2 - (long)pvVar2; + uVar1 = 0xfffffffffffffff8; + } + else { + sVar4 = (long)param_2 - (long)pvVar2; + uVar1 = uVar1 << 4; + __dest = (void *)0x0; + __n = sVar4; + if (uVar6 == 0) goto LAB_003587a4; + } + } + __dest = operator_new(uVar1); + pvVar2 = *(void **)this; + __n = (long)param_2 - (long)pvVar2; +LAB_003587a4: + if ((long)__dest + sVar4 != 0) { + *(undefined8 *)((long)__dest + sVar4) = *param_3; + } + if ((long)__n >> 3 != 0) { + memmove(__dest,pvVar2,__n); + } + pvVar2 = (void *)((long)__dest + __n + 8); + sVar4 = *(long *)(this + 8) - (long)param_2; + if ((long)sVar4 >> 3 != 0) { + memmove(pvVar2,param_2,sVar4); + /* try { // try from 00358814 to 00458817 has its CatchHandler @ 00358938 */ + } + if (*(void **)this != (void *)0x0) { + operator_delete(*(void **)this); + } + *(void **)this = __dest; + *(size_t *)(this + 8) = (long)pvVar2 + sVar4; + *(ulong *)(this + 0x10) = (long)__dest + uVar1; + /* try { // try from 0035873c to 0045873f has its CatchHandler @ 00358960 */ + /* try { // try from 00358744 to 004587a3 has its CatchHandler @ 00358994 */ + return; +} + + +================================================================== + +### FUNC 00358848 (364 bytes) name=_M_insert_aux + +/* std::vector >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, int const&) */ + +void __thiscall +std::vector>::_M_insert_aux + (vector> *this,undefined4 *param_2,undefined4 *param_3) + +{ + undefined4 uVar1; + ulong uVar2; + void *__dest; + void *pvVar3; + undefined4 *puVar4; + size_t sVar5; + size_t __n; + ulong uVar6; + + puVar4 = *(undefined4 **)(this + 8); + if (puVar4 != *(undefined4 **)(this + 0x10)) { + if (puVar4 != (undefined4 *)0x0) { + *puVar4 = puVar4[-1]; + } + /* try { // try from 00358888 to 004588a7 has its CatchHandler @ 00358668 */ + sVar5 = (long)puVar4 + (-4 - (long)param_2); + *(undefined4 **)(this + 8) = puVar4 + 1; + uVar1 = *param_3; + if ((long)sVar5 >> 2 != 0) { + memmove((void *)((long)(puVar4 + 1) + (-4 - sVar5)),param_2,sVar5); + } + *param_2 = uVar1; + return; + } + pvVar3 = *(void **)this; + uVar2 = (long)puVar4 - (long)pvVar3 >> 2; + if (uVar2 == 0) { + sVar5 = (long)param_2 - (long)pvVar3; + uVar2 = 4; + } + else { + uVar6 = uVar2 * 2; + /* catch() { ... } // from try @ 003586f0 with catch @ 00358994 + catch() { ... } // from try @ 00358744 with catch @ 00358994 */ + /* catch() { ... } // from try @ 003589d0 with catch @ 0035899c + catch() { ... } // from try @ 00358bfc with catch @ 0035899c + catch() { ... } // from try @ 00358d20 with catch @ 0035899c */ + if ((uVar6 < uVar2) || (0x3fffffffffffffff < uVar6)) { + sVar5 = (long)param_2 - (long)pvVar3; + uVar2 = 0xfffffffffffffffc; + } + else { + sVar5 = (long)param_2 - (long)pvVar3; + uVar2 = uVar2 << 3; + __dest = (void *)0x0; + __n = sVar5; + if (uVar6 == 0) goto LAB_00358910; + } + } + __dest = operator_new(uVar2); + pvVar3 = *(void **)this; + __n = (long)param_2 - (long)pvVar3; +LAB_00358910: + if ((long)__dest + sVar5 != 0) { + *(undefined4 *)((long)__dest + sVar5) = *param_3; + } + if ((long)__n >> 2 != 0) { + memmove(__dest,pvVar3,__n); + } + pvVar3 = (void *)((long)__dest + __n + 4); + sVar5 = *(long *)(this + 8) - (long)param_2; + /* catch() { ... } // from try @ 003586c0 with catch @ 00358938 + catch() { ... } // from try @ 00358814 with catch @ 00358938 + catch() { ... } // from try @ 003588b0 with catch @ 00358938 */ + if ((long)sVar5 >> 2 != 0) { + memmove(pvVar3,param_2,sVar5); + } + if (*(void **)this != (void *)0x0) { + operator_delete(*(void **)this); + } + *(void **)this = __dest; + *(size_t *)(this + 8) = (long)pvVar3 + sVar5; + /* try { // try from 0035895c to 0045895f has its CatchHandler @ 00358668 */ + *(ulong *)(this + 0x10) = (long)__dest + uVar2; + /* try { // try from 003588b0 to 004588b3 has its CatchHandler @ 00358938 */ + return; + /* catch() { ... } // from try @ 0035873c with catch @ 00358960 */ +} + + +================================================================== + +### FUNC 003589b4 (5640 bytes) name=checkOptimalVectorWidth + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::ocl::checkOptimalVectorWidth(int const*, cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::ocl::OclVectorStrategy) */ + +int cv::ocl::checkOptimalVectorWidth + (long param_1,_InputArray *param_2,_InputArray *param_3,_InputArray *param_4, + _InputArray *param_5,_InputArray *param_6,_InputArray *param_7,_InputArray *param_8, + _InputArray *param_9,_InputArray *param_10,int param_11) + +{ + int iVar1; + ulong uVar2; + undefined4 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined1 uVar6; + char cVar7; + uint uVar8; + int iVar9; + uint uVar10; + char *pcVar11; + ulong uVar12; + long lVar13; + int *piVar14; + undefined8 *puVar15; + ulong uVar16; + ulong uVar17; + ulong uVar18; + long lVar19; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 local_b8; + undefined8 local_b0; + int local_a8 [4]; + int local_98 [4]; + long local_88 [2]; + void *local_78; + long *local_70; + long *local_68; + void *local_60; + long *local_58; + long *local_50; + void *local_48; + long *local_40; + long *local_38; + void *local_30; + int *local_28; + int *local_20; + int *local_18; + int *local_10; + int *local_8; + + /* try { // try from 003589d0 to 004589d3 has its CatchHandler @ 0035899c */ + /* try { // try from 003589ec to 004589ef has its CatchHandler @ 00358d24 */ + if (param_1 == 0) { + local_18 = (int *)param_1; + local_10 = (int *)param_1; + pcVar11 = (char *)String::allocate((String *)&local_18,0xc); + uVar3 = s_vectorWidths_0046df40._8_4_; + /* try { // try from 003598d4 to 0045994b has its CatchHandler @ 0035987c */ + *(undefined8 *)pcVar11 = s_vectorWidths_0046df40._0_8_; + *(undefined4 *)(pcVar11 + 8) = uVar3; + error(-0xd7,(String *)&local_18, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1560); + String::deallocate((String *)&local_18); + } + uVar8 = _InputArray::type(param_2,-1); + local_78 = (void *)0x0; + local_70 = (long *)0x0; + local_68 = (long *)0x0; + local_60 = (void *)0x0; + /* try { // try from 00358a1c to 00458a1f has its CatchHandler @ 00358d40 */ + local_58 = (long *)0x0; + local_50 = (long *)0x0; + local_48 = (void *)0x0; + local_40 = (long *)0x0; + local_38 = (long *)0x0; + local_30 = (void *)0x0; + local_28 = (int *)0x0; + local_20 = (int *)0x0; + local_18 = (int *)0x0; + local_10 = (int *)0x0; + local_8 = (int *)0x0; + cVar7 = _InputArray::empty(param_2); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_2); + /* try { // try from 00358a68 to 00458a6b has its CatchHandler @ 00358d2c */ + /* try { // try from 00358a70 to 00458a93 has its CatchHandler @ 00358d40 */ + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_2), iVar9 != 0xa0000)) { + local_100 = 0; + local_108 = 0; + pcVar11 = (char *)String::allocate((String *)&local_108,0x1d); + cVar7 = s_src1_isMat______src1_isUMat___0046df50[0x1c]; + uVar3 = s_src1_isMat______src1_isUMat___0046df50._24_4_; + uVar5 = s_src1_isMat______src1_isUMat___0046df50._8_8_; + uVar4 = s_src1_isMat______src1_isUMat___0046df50._0_8_; + /* try { // try from 00358aa0 to 00458aa3 has its CatchHandler @ 00358cc0 */ + *(undefined8 *)(pcVar11 + 0x10) = s_src1_isMat______src1_isUMat___0046df50._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)&local_108, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1566); + String::deallocate((String *)&local_108); + } + _InputArray::size((int)param_2); + uVar12 = _InputArray::type(param_2,-1); + uVar10 = (uint)uVar12 & 7; + local_a8[0] = *(int *)(param_1 + (long)(int)uVar10 * 4); + /* try { // try from 00358b14 to 00458b17 has its CatchHandler @ 00358d40 */ + iVar9 = local_98[0] + ((uint)((uVar12 & 0xffffffff) >> 3) & 0x1ff) * local_98[0]; + if ((0 < local_a8[0]) && (local_a8[0] <= iVar9)) { + local_88[0] = (long)iVar9; + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48,local_38, + local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + if ((uVar8 == (uint)uVar12) || (param_11 != 0)) { + local_88[0] = _InputArray::offset(param_2,-1); + if (local_68 == local_70) { + std::vector>::_M_insert_aux + ((vector> *)&local_78,local_68, + local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + /* try { // try from 00358bfc to 00458c1b has its CatchHandler @ 0035899c */ + local_88[0] = _InputArray::step(param_2,-1); + if (local_58 == local_50) { + std::vector>::_M_insert_aux + ((vector> *)&local_60,local_58, + local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + /* try { // try from 00358c24 to 00458c27 has its CatchHandler @ 00358d24 */ + local_58 = local_58 + 1; + } + /* try { // try from 00358c30 to 00458c33 has its CatchHandler @ 00358d40 */ + iVar9 = ((uint)(0x88442211L >> (uVar10 << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + /* try { // try from 00359b48 to 00459b4b has its CatchHandler @ 00359a2c */ + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00358c94; + } + } + } + else { +LAB_00358c94: + cVar7 = _InputArray::empty(param_3); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_3); + /* catch() { ... } // from try @ 00358aa0 with catch @ 00358cc0 */ + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_3), iVar9 != 0xa0000)) { + local_f8 = 0; + local_f0 = 0; + pcVar11 = (char *)String::allocate((String *)&local_f8,0x1d); + cVar7 = s_src2_isMat______src2_isUMat___0046df70[0x1c]; + uVar3 = s_src2_isMat______src2_isUMat___0046df70._24_4_; + uVar5 = s_src2_isMat______src2_isUMat___0046df70._8_8_; + uVar4 = s_src2_isMat______src2_isUMat___0046df70._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_src2_isMat______src2_isUMat___0046df70._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + /* try { // try from 00358d20 to 00458d23 has its CatchHandler @ 0035899c */ + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + /* catch() { ... } // from try @ 003589ec with catch @ 00358d24 + catch() { ... } // from try @ 00358b88 with catch @ 00358d24 + catch() { ... } // from try @ 00358c24 with catch @ 00358d24 */ + error(-0xd7,(String *)&local_f8, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1567); + /* catch() { ... } // from try @ 00358a68 with catch @ 00358d2c */ + String::deallocate((String *)&local_f8); + } + _InputArray::size((int)param_3); + /* catch() { ... } // from try @ 00358a1c with catch @ 00358d40 + catch() { ... } // from try @ 00358a70 with catch @ 00358d40 + catch() { ... } // from try @ 00358b14 with catch @ 00358d40 + catch() { ... } // from try @ 00358c30 with catch @ 00358d40 */ + /* catch() { ... } // from try @ 00358d7c with catch @ 00358d48 + catch() { ... } // from try @ 00358fa8 with catch @ 00358d48 + catch() { ... } // from try @ 003590cc with catch @ 00358d48 */ + uVar10 = _InputArray::type(param_3,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + if ((0 < iVar9) && (iVar9 <= iVar1)) { + /* try { // try from 00358d7c to 00458d7f has its CatchHandler @ 00358d48 */ + local_88[0] = (long)iVar1; + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48,local_38, + local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + /* try { // try from 00358d98 to 00458d9b has its CatchHandler @ 003590d0 */ + local_40 = local_40 + 1; + } + if ((uVar8 == uVar10) || (param_11 != 0)) { + local_88[0] = _InputArray::offset(param_3,-1); + /* try { // try from 00358dc8 to 00458dcb has its CatchHandler @ 003590ec */ + if (local_70 == local_68) { + std::vector>::_M_insert_aux + ((vector> *)&local_78,local_70, + local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_3,-1); + if (local_58 == local_50) { + std::vector>::_M_insert_aux + ((vector> *)&local_60,local_58, + local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + /* try { // try from 00358e14 to 00458e17 has its CatchHandler @ 003590d8 */ + /* try { // try from 00358e1c to 00458e3f has its CatchHandler @ 003590ec */ + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + /* try { // try from 00358e4c to 00458e4f has its CatchHandler @ 0035906c */ + } + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00358e74; + } + } + } + else { +LAB_00358e74: + cVar7 = _InputArray::empty(param_4); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_4); + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_4), iVar9 != 0xa0000)) { + local_e8 = 0; + local_e0 = 0; + pcVar11 = (char *)String::allocate((String *)&local_e8,0x1d); + cVar7 = s_src3_isMat______src3_isUMat___0046df90[0x1c]; + uVar3 = s_src3_isMat______src3_isUMat___0046df90._24_4_; + uVar5 = s_src3_isMat______src3_isUMat___0046df90._8_8_; + uVar4 = s_src3_isMat______src3_isUMat___0046df90._0_8_; + /* try { // try from 00358ec0 to 00458ec3 has its CatchHandler @ 003590ec */ + *(undefined8 *)(pcVar11 + 0x10) = s_src3_isMat______src3_isUMat___0046df90._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)&local_e8, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1568); + String::deallocate((String *)&local_e8); + } + _InputArray::size((int)param_4); + uVar10 = _InputArray::type(param_4,-1); + /* try { // try from 00358f34 to 00458f37 has its CatchHandler @ 003590d0 */ + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + if ((0 < iVar9) && (iVar9 <= iVar1)) { + local_88[0] = (long)iVar1; + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48,local_38, + local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + if ((uVar8 == uVar10) || (param_11 != 0)) { + local_88[0] = _InputArray::offset(param_4,-1); + /* try { // try from 00358fa8 to 00458fc7 has its CatchHandler @ 00358d48 */ + if (local_70 == local_68) { + /* try { // try from 00359dc8 to 00459dcb has its CatchHandler @ 00359dd8 */ + std::vector>::_M_insert_aux + ((vector> *)&local_78,local_70, + local_88); + /* try { // try from 00359dd0 to 00459dd3 has its CatchHandler @ 00359c78 */ + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_4,-1); + /* try { // try from 00358fd0 to 00458fd3 has its CatchHandler @ 003590d0 */ + /* try { // try from 00358fdc to 00458fdf has its CatchHandler @ 003590ec */ + if (local_58 == local_50) { + std::vector>::_M_insert_aux + ((vector> *)&local_60,local_58, + local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + if (local_10 == local_8) { + /* catch() { ... } // from try @ 00359dc8 with catch @ 00359dd8 */ + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00359054; + } + } + } + else { +LAB_00359054: + cVar7 = _InputArray::empty(param_5); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_5); + /* catch() { ... } // from try @ 00358e4c with catch @ 0035906c */ + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_5), iVar9 != 0xa0000)) { + local_d8 = 0; + local_d0 = 0; + pcVar11 = (char *)String::allocate((String *)&local_d8,0x1d); + cVar7 = s_src4_isMat______src4_isUMat___0046dfb0[0x1c]; + uVar3 = s_src4_isMat______src4_isUMat___0046dfb0._24_4_; + uVar5 = s_src4_isMat______src4_isUMat___0046dfb0._8_8_; + uVar4 = s_src4_isMat______src4_isUMat___0046dfb0._0_8_; + /* try { // try from 003590cc to 004590cf has its CatchHandler @ 00358d48 */ + /* catch() { ... } // from try @ 00358d98 with catch @ 003590d0 + catch() { ... } // from try @ 00358f34 with catch @ 003590d0 + catch() { ... } // from try @ 00358fd0 with catch @ 003590d0 */ + *(undefined8 *)(pcVar11 + 0x10) = s_src4_isMat______src4_isUMat___0046dfb0._16_8_; + /* catch() { ... } // from try @ 00358e14 with catch @ 003590d8 */ + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)&local_d8, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1569); + /* catch() { ... } // from try @ 00358dc8 with catch @ 003590ec + catch() { ... } // from try @ 00358e1c with catch @ 003590ec + catch() { ... } // from try @ 00358ec0 with catch @ 003590ec + catch() { ... } // from try @ 00358fdc with catch @ 003590ec */ + String::deallocate((String *)&local_d8); + } + /* catch() { ... } // from try @ 0035912c with catch @ 003590f4 + catch() { ... } // from try @ 0035930c with catch @ 003590f4 + catch() { ... } // from try @ 003593ec with catch @ 003590f4 */ + _InputArray::size((int)param_5); + uVar10 = _InputArray::type(param_5,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + /* try { // try from 0035912c to 0045912f has its CatchHandler @ 003590f4 */ + if ((0 < iVar9) && (iVar9 <= iVar1)) { + local_88[0] = (long)iVar1; + /* try { // try from 00359148 to 0045914b has its CatchHandler @ 003593c8 */ + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48,local_38, + local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + if ((uVar8 == uVar10) || (param_11 != 0)) { + /* try { // try from 00359178 to 0045917b has its CatchHandler @ 00359420 */ + local_88[0] = _InputArray::offset(param_5,-1); + if (local_70 == local_68) { + std::vector>::_M_insert_aux + ((vector> *)&local_78,local_70 + ,local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_5,-1); + if (local_58 == local_50) { + std::vector>::_M_insert_aux + ((vector> *)&local_60,local_58 + ,local_88); + } + else { + if (local_58 != (long *)0x0) { + /* try { // try from 003591c4 to 004591c7 has its CatchHandler @ 003593f0 */ + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + /* try { // try from 003591cc to 00459227 has its CatchHandler @ 00359420 */ + } + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + if (local_10 == local_8) { + /* try { // try from 00359dfc to 00459dff has its CatchHandler @ 00359c78 */ + /* catch() { ... } // from try @ 00359ed8 with catch @ 00359e00 + catch() { ... } // from try @ 00359f18 with catch @ 00359e00 + catch() { ... } // from try @ 00359fd8 with catch @ 00359e00 + catch() { ... } // from try @ 0035a054 with catch @ 00359e00 + catch() { ... } // from try @ 0035a0c8 with catch @ 00359e00 + catch() { ... } // from try @ 0035a128 with catch @ 00359e00 + catch() { ... } // from try @ 0035a140 with catch @ 00359e00 + catch() { ... } // from try @ 0035a154 with catch @ 00359e00 + catch() { ... } // from try @ 0035a168 with catch @ 00359e00 + catch() { ... } // from try @ 0035a17c with catch @ 00359e00 + catch() { ... } // from try @ 0035a190 with catch @ 00359e00 */ + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00359234; + } + } + } + else { +LAB_00359234: + cVar7 = _InputArray::empty(param_6); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_6); + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_6), iVar9 != 0xa0000)) { + local_c8 = 0; + local_c0 = 0; + pcVar11 = (char *)String::allocate((String *)&local_c8,0x1d); + cVar7 = s_src5_isMat______src5_isUMat___0046dfd0[0x1c]; + uVar3 = s_src5_isMat______src5_isUMat___0046dfd0._24_4_; + uVar5 = s_src5_isMat______src5_isUMat___0046dfd0._8_8_; + uVar4 = s_src5_isMat______src5_isUMat___0046dfd0._0_8_; + /* try { // try from 00359298 to 0045929b has its CatchHandler @ 003593c8 */ + *(undefined8 *)(pcVar11 + 0x10) = s_src5_isMat______src5_isUMat___0046dfd0._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)&local_c8, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x156a); + String::deallocate((String *)&local_c8); + } + _InputArray::size((int)param_6); + uVar10 = _InputArray::type(param_6,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + /* try { // try from 0035930c to 0045932b has its CatchHandler @ 003590f4 */ + if ((0 < iVar9) && (iVar9 <= iVar1)) { + local_88[0] = (long)iVar1; + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48,local_38 + ,local_88); + } + else { + if (local_40 != (long *)0x0) { + /* try { // try from 00359334 to 00459337 has its CatchHandler @ 003593c8 */ + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + if ((uVar8 == uVar10) || (param_11 != 0)) { + local_88[0] = _InputArray::offset(param_6,-1); + if (local_70 == local_68) { + std::vector>::_M_insert_aux + ((vector> *)&local_78, + local_70,local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_6,-1); + if (local_58 == local_50) { + std::vector>::_M_insert_aux + ((vector> *)&local_60, + local_58,local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + /* catch() { ... } // from try @ 00359148 with catch @ 003593c8 + catch() { ... } // from try @ 00359298 with catch @ 003593c8 + catch() { ... } // from try @ 00359334 with catch @ 003593c8 */ + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + /* try { // try from 003593ec to 004593ef has its CatchHandler @ 003590f4 */ + } + /* catch() { ... } // from try @ 003591c4 with catch @ 003593f0 */ + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00359414; + } + } + } + else { +LAB_00359414: + cVar7 = _InputArray::empty(param_7); + /* catch() { ... } // from try @ 00359178 with catch @ 00359420 + catch() { ... } // from try @ 003591cc with catch @ 00359420 */ + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_7); + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_7), iVar9 != 0xa0000)) { + local_b8 = 0; + local_b0 = 0; + pcVar11 = (char *)String::allocate((String *)&local_b8,0x1d); + cVar7 = s_src6_isMat______src6_isUMat___0046dff0[0x1c]; + uVar3 = s_src6_isMat______src6_isUMat___0046dff0._24_4_; + uVar5 = s_src6_isMat______src6_isUMat___0046dff0._8_8_; + uVar4 = s_src6_isMat______src6_isUMat___0046dff0._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_src6_isMat______src6_isUMat___0046dff0._16_8_; + /* try { // try from 0035998c to 0045998f has its CatchHandler @ 00359a04 */ + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + /* try { // try from 00359994 to 004599b3 has its CatchHandler @ 0035987c */ + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)&local_b8, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x156b); + String::deallocate((String *)&local_b8); + } + _InputArray::size((int)param_7); + uVar10 = _InputArray::type(param_7,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + if ((0 < iVar9) && (iVar9 <= iVar1)) { + local_88[0] = (long)iVar1; + /* try { // try from 003599f4 to 004599f7 has its CatchHandler @ 00359a18 */ + /* try { // try from 003599fc to 004599ff has its CatchHandler @ 0035987c */ + if (local_38 == local_40) { + /* try { // try from 00359de8 to 00459deb has its CatchHandler @ 00359c78 */ + /* catch() { ... } // from try @ 00359ce8 with catch @ 00359dec */ + std::vector>::_M_insert_aux + ((vector> *)&local_48, + local_38,local_88); + } + else { + /* catch() { ... } // from try @ 0035998c with catch @ 00359a04 */ + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + /* try { // try from 00359a14 to 00459a17 has its CatchHandler @ 0035987c */ + /* catch() { ... } // from try @ 003599f4 with catch @ 00359a18 */ + if ((uVar8 == uVar10) || (param_11 != 0)) { + /* try { // try from 00359a28 to 00459a2b has its CatchHandler @ 0035987c */ + /* catch() { ... } // from try @ 00359b48 with catch @ 00359a2c + catch() { ... } // from try @ 00359b94 with catch @ 00359a2c + catch() { ... } // from try @ 00359bec with catch @ 00359a2c + catch() { ... } // from try @ 00359c34 with catch @ 00359a2c + catch() { ... } // from try @ 00359c4c with catch @ 00359a2c + catch() { ... } // from try @ 00359c60 with catch @ 00359a2c + catch() { ... } // from try @ 00359c74 with catch @ 00359a2c */ + local_88[0] = _InputArray::offset(param_7,-1); + if (local_70 == local_68) { + std::vector>::_M_insert_aux + ((vector> *)&local_78, + local_70,local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_7,-1); + if (local_58 == local_50) { + /* try { // try from 00359ed8 to 00459edb has its CatchHandler @ 00359e00 */ + std::vector>::_M_insert_aux + ((vector> *)&local_60, + local_58,local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00359424; + } + } + } + else { +LAB_00359424: + /* catch() { ... } // from try @ 00359460 with catch @ 00359428 + catch() { ... } // from try @ 00359640 with catch @ 00359428 + catch() { ... } // from try @ 00359720 with catch @ 00359428 */ + cVar7 = _InputArray::empty(param_8); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_8); + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_8), iVar9 != 0xa0000)) { + local_a8[0] = 0; + local_a8[1] = 0; + /* try { // try from 00359460 to 00459463 has its CatchHandler @ 00359428 */ + local_a8[2] = 0; + local_a8[3] = 0; + pcVar11 = (char *)String::allocate((String *)local_a8,0x1d); + cVar7 = s_src7_isMat______src7_isUMat___0046e010[0x1c]; + uVar3 = s_src7_isMat______src7_isUMat___0046e010._24_4_; + uVar5 = s_src7_isMat______src7_isUMat___0046e010._8_8_; + uVar4 = s_src7_isMat______src7_isUMat___0046e010._0_8_; + /* try { // try from 0035947c to 0045947f has its CatchHandler @ 003596fc */ + *(undefined8 *)(pcVar11 + 0x10) = s_src7_isMat______src7_isUMat___0046e010._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + /* try { // try from 003594ac to 004594af has its CatchHandler @ 00359754 */ + pcVar11[0x1c] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)local_a8, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x156c); + String::deallocate((String *)local_a8); + } + _InputArray::size((int)param_8); + uVar10 = _InputArray::type(param_8,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + /* try { // try from 003594f8 to 004594fb has its CatchHandler @ 00359724 */ + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + /* try { // try from 00359500 to 0045955b has its CatchHandler @ 00359754 */ + if ((0 < iVar9) && (iVar9 <= iVar1)) { + local_88[0] = (long)iVar1; + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48, + local_38,local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + if ((uVar8 == uVar10) || (param_11 != 0)) { + local_88[0] = _InputArray::offset(param_8,-1); + if (local_70 == local_68) { + /* try { // try from 00359f18 to 00459f97 has its CatchHandler @ 00359e00 */ + std::vector>::_M_insert_aux + ((vector> *)&local_78, + local_70,local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_8,-1); + if (local_58 == local_50) { + /* try { // try from 00359f0c to 00459f0f has its CatchHandler @ 0035a16c */ + std::vector>::_M_insert_aux + ((vector> *)&local_60, + local_58,local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + /* try { // try from 003595cc to 004595cf has its CatchHandler @ 003596fc */ + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_00359604; + } + } + } + else { +LAB_00359604: + cVar7 = _InputArray::empty(param_9); + if (cVar7 == '\0') { + iVar9 = _InputArray::kind(param_9); + if (iVar9 != 0x10000) { + iVar9 = _InputArray::kind(param_9); + if (iVar9 != 0xa0000) { + local_98[0] = 0; + local_98[1] = 0; + /* try { // try from 00359640 to 0045965f has its CatchHandler @ 00359428 */ + local_98[2] = 0; + local_98[3] = 0; + pcVar11 = (char *)String::allocate((String *)local_98,0x1d); + cVar7 = s_src8_isMat______src8_isUMat___0046e030[0x1c]; + uVar3 = s_src8_isMat______src8_isUMat___0046e030._24_4_; + uVar5 = s_src8_isMat______src8_isUMat___0046e030._8_8_; + uVar4 = s_src8_isMat______src8_isUMat___0046e030._0_8_; + /* try { // try from 00359668 to 0045966b has its CatchHandler @ 003596fc */ + *(undefined8 *)(pcVar11 + 0x10) = + s_src8_isMat______src8_isUMat___0046e030._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar3; + pcVar11[0x1c] = cVar7; + *(undefined8 *)pcVar11 = uVar4; + *(undefined8 *)(pcVar11 + 8) = uVar5; + error(-0xd7,(String *)local_98, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x156d); + String::deallocate((String *)local_98); + } + } + _InputArray::size((int)param_9); + uVar10 = _InputArray::type(param_9,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + if ((0 < iVar9) && (iVar9 <= iVar1)) { + local_88[0] = (long)iVar1; + /* catch() { ... } // from try @ 0035947c with catch @ 003596fc + catch() { ... } // from try @ 003595cc with catch @ 003596fc + catch() { ... } // from try @ 00359668 with catch @ 003596fc */ + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48, + local_38,local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + } + /* try { // try from 00359720 to 00459723 has its CatchHandler @ 00359428 */ + if ((uVar8 == uVar10) || (param_11 != 0)) { + /* catch() { ... } // from try @ 003594f8 with catch @ 00359724 */ + local_88[0] = _InputArray::offset(param_9,-1); + if (local_70 == local_68) { + std::vector>::_M_insert_aux + ((vector> *)&local_78, + local_70,local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + /* catch() { ... } // from try @ 003594ac with catch @ 00359754 + catch() { ... } // from try @ 00359500 with catch @ 00359754 */ + /* catch() { ... } // from try @ 003597cc with catch @ 0035975c + catch() { ... } // from try @ 00359830 with catch @ 0035975c + catch() { ... } // from try @ 00359878 with catch @ 0035975c */ + local_88[0] = _InputArray::step(param_9,-1); + if (local_58 == local_50) { + std::vector>::_M_insert_aux + ((vector> *)&local_60, + local_58,local_88); + } + else { + if (local_58 != (long *)0x0) { + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + /* try { // try from 003597cc to 004597cf has its CatchHandler @ 0035975c */ + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_003597e8; + } + } + } + else { +LAB_003597e8: + cVar7 = _InputArray::empty(param_10); + if (cVar7 != '\0') { +LAB_003597f8: + lVar19 = (long)local_70 - (long)local_78 >> 3; + if (lVar19 != 0) { + lVar13 = 0; +LAB_00359820: + uVar12 = *(ulong *)((long)local_78 + lVar13 * 8); + uVar17 = *(ulong *)((long)local_60 + lVar13 * 8); + /* try { // try from 00359828 to 0045982b has its CatchHandler @ 00359868 */ + uVar18 = *(ulong *)((long)local_48 + lVar13 * 8); + do { + iVar9 = *(int *)((long)local_30 + lVar13 * 4); + uVar16 = (ulong)iVar9; + uVar2 = 0; + if (uVar16 != 0) { + uVar2 = uVar12 / uVar16; + } + if (uVar12 == uVar2 * uVar16) { + uVar2 = 0; + if (uVar16 != 0) { + uVar2 = uVar17 / uVar16; + } + if (uVar17 == uVar2 * uVar16) { + uVar16 = (ulong)local_18[lVar13]; + /* catch() { ... } // from try @ 00359828 with catch @ 00359868 */ + uVar2 = 0; + if (uVar16 != 0) { + uVar2 = uVar18 / uVar16; + } + if (uVar18 == uVar2 * uVar16) goto code_r0x00359874; + } + } + /* try { // try from 00359830 to 00459833 has its CatchHandler @ 0035975c */ + *(int *)((long)local_30 + lVar13 * 4) = iVar9 >> 1; + local_18[lVar13] = local_18[lVar13] >> 1; + } while( true ); + } +LAB_00359880: + iVar9 = *local_18; + piVar14 = local_18; + if (local_10 != local_18) { + while (piVar14 = piVar14 + 1, local_10 != piVar14) { + if (*piVar14 < iVar9) { + iVar9 = *piVar14; + } + } + } + goto LAB_00358b6c; + } + iVar9 = _InputArray::kind(param_10); + if ((iVar9 != 0x10000) && (iVar9 = _InputArray::kind(param_10), iVar9 != 0xa0000)) + { + /* try { // try from 00359b8c to 00459b8f has its CatchHandler @ 00359c50 */ + /* try { // try from 00359b94 to 00459bc7 has its CatchHandler @ 00359a2c */ + local_88[0] = 0; + local_88[1] = 0; + puVar15 = (undefined8 *)String::allocate((String *)local_88,0x1d); + uVar6 = LAB_0046e06c; + uVar3 = _LAB_0046e068; + uVar5 = DAT_0046e058; + uVar4 = DAT_0046e050; + puVar15[2] = DAT_0046e060; + *(undefined4 *)(puVar15 + 3) = uVar3; + *(undefined1 *)((long)puVar15 + 0x1c) = uVar6; + /* try { // try from 00359be4 to 00459be7 has its CatchHandler @ 00359c3c */ + *puVar15 = uVar4; + puVar15[1] = uVar5; + error(-0xd7,(String *)local_88, + "int cv::ocl::checkOptimalVectorWidth(const int*, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::InputArray, cv::ocl::OclVectorStrategy)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x156e); + /* try { // try from 00359bec to 00459c0f has its CatchHandler @ 00359a2c */ + String::deallocate((String *)local_88); + } + _InputArray::size((int)param_10); + uVar10 = _InputArray::type(param_10,-1); + iVar9 = *(int *)(param_1 + (long)(int)(uVar10 & 7) * 4); + local_a8[0] = iVar9; + /* try { // try from 00359c2c to 00459c2f has its CatchHandler @ 00359c64 */ + iVar1 = local_98[0] + (uVar10 >> 3 & 0x1ff) * local_98[0]; + /* try { // try from 00359c34 to 00459c37 has its CatchHandler @ 00359a2c */ + if ((0 < iVar9) && (iVar9 <= iVar1)) { + /* catch() { ... } // from try @ 00359be4 with catch @ 00359c3c */ + local_88[0] = (long)iVar1; + /* try { // try from 00359c4c to 00459c4f has its CatchHandler @ 00359a2c */ + /* catch() { ... } // from try @ 00359b8c with catch @ 00359c50 */ + if (local_38 == local_40) { + std::vector>::_M_insert_aux + ((vector> *)&local_48, + local_38,local_88); + } + else { + if (local_40 != (long *)0x0) { + *local_40 = local_88[0]; + } + local_40 = local_40 + 1; + /* try { // try from 00359c60 to 00459c63 has its CatchHandler @ 00359a2c */ + } + /* catch() { ... } // from try @ 00359c2c with catch @ 00359c64 */ + if ((uVar8 == uVar10) || (param_11 != 0)) { + /* try { // try from 00359c74 to 00459c77 has its CatchHandler @ 00359a2c */ + /* catch() { ... } // from try @ 00359cc8 with catch @ 00359c78 + catch() { ... } // from try @ 00359cf0 with catch @ 00359c78 + catch() { ... } // from try @ 00359dd0 with catch @ 00359c78 + catch() { ... } // from try @ 00359de8 with catch @ 00359c78 + catch() { ... } // from try @ 00359dfc with catch @ 00359c78 */ + local_88[0] = _InputArray::offset(param_10,-1); + if (local_70 == local_68) { + std::vector>::_M_insert_aux + ((vector> *)&local_78, + local_70,local_88); + } + else { + if (local_70 != (long *)0x0) { + *local_70 = local_88[0]; + } + local_70 = local_70 + 1; + } + local_88[0] = _InputArray::step(param_10,-1); + if (local_58 == local_50) { + /* try { // try from 00359fd0 to 00459fd3 has its CatchHandler @ 0035a144 */ + std::vector>::_M_insert_aux + ((vector> *)&local_60, + local_58,local_88); + /* try { // try from 00359fd8 to 00459ffb has its CatchHandler @ 00359e00 */ + } + else { + if (local_58 != (long *)0x0) { + /* try { // try from 00359cc8 to 00459ccb has its CatchHandler @ 00359c78 */ + *local_58 = local_88[0]; + } + local_58 = local_58 + 1; + } + /* try { // try from 00359ce8 to 00459ceb has its CatchHandler @ 00359dec */ + /* try { // try from 00359cf0 to 00459dab has its CatchHandler @ 00359c78 */ + iVar9 = ((uint)(0x88442211L >> ((uVar10 & 7) << 2)) & 0xf) * local_a8[0]; + local_88[0] = CONCAT44(local_88[0]._4_4_,iVar9); + if (local_28 == local_20) { + std::vector>::_M_insert_aux + ((vector> *)&local_30,local_28,local_88); + } + else { + if (local_28 != (int *)0x0) { + *local_28 = iVar9; + } + local_28 = local_28 + 1; + } + if (local_10 == local_8) { + std::vector>::_M_insert_aux + ((vector> *)&local_18,local_10,local_a8); + } + else { + if (local_10 != (int *)0x0) { + *local_10 = local_a8[0]; + } + local_10 = local_10 + 1; + } + goto LAB_003597f8; + } + } + } + } + } + } + } + } + } + } + iVar9 = 1; +LAB_00358b6c: + if (local_18 != (int *)0x0) { + operator_delete(local_18); + } + if (local_30 != (void *)0x0) { + operator_delete(local_30); + } + if (local_48 != (void *)0x0) { + /* try { // try from 00358b88 to 00458b8b has its CatchHandler @ 00358d24 */ + operator_delete(local_48); + } + if (local_60 != (void *)0x0) { + operator_delete(local_60); + } + if (local_78 != (void *)0x0) { + operator_delete(local_78); + } + return iVar9; +code_r0x00359874: + lVar13 = lVar13 + 1; + /* try { // try from 00359878 to 0045987b has its CatchHandler @ 0035975c */ + /* catch() { ... } // from try @ 003598d4 with catch @ 0035987c + catch() { ... } // from try @ 00359994 with catch @ 0035987c + catch() { ... } // from try @ 003599fc with catch @ 0035987c + catch() { ... } // from try @ 00359a14 with catch @ 0035987c + catch() { ... } // from try @ 00359a28 with catch @ 0035987c */ + if (lVar13 == lVar19) goto LAB_00359880; + goto LAB_00359820; +} + + +================================================================== + +### FUNC 0035a0c4 (1468 bytes) name=FUN_0035a0c4 + +void FUN_0035a0c4(long *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + void *__dest; + undefined8 *puVar1; + void *__dest_00; + ulong uVar2; + ulong uVar3; + ulong uVar4; + undefined8 *puVar5; + ulong uVar6; + ulong uVar7; + undefined8 *puVar8; + undefined8 uVar9; + long lVar10; + size_t sVar11; + + /* try { // try from 0035a0c8 to 0045a0e7 has its CatchHandler @ 00359e00 */ + if (param_3 == 0) { + return; + } + puVar8 = (undefined8 *)param_1[1]; + if (param_3 <= (ulong)(param_1[2] - (long)puVar8 >> 3)) { + sVar11 = (long)puVar8 - (long)param_2; + uVar9 = *param_4; + uVar6 = (long)sVar11 >> 3; + if (param_3 < uVar6) { + puVar5 = puVar8 + -param_3; + /* try { // try from 0035a120 to 0045a123 has its CatchHandler @ 0035a180 */ + /* try { // try from 0035a128 to 0045a12b has its CatchHandler @ 00359e00 */ + puVar1 = puVar8; + if ((long)puVar8 - (long)puVar5 >> 3 != 0) { + memmove(puVar8,puVar5,(long)puVar8 - (long)puVar5); + puVar1 = (undefined8 *)param_1[1]; + } + /* catch() { ... } // from try @ 0035a0c0 with catch @ 0035a130 */ + sVar11 = (long)puVar5 - (long)param_2; + param_1[1] = (long)(puVar1 + param_3); + if ((long)sVar11 >> 3 != 0) { + memmove((void *)((long)puVar8 - sVar11),param_2,sVar11); + } + /* try { // try from 0035a140 to 0045a143 has its CatchHandler @ 00359e00 */ + /* catch() { ... } // from try @ 00359fd0 with catch @ 0035a144 */ + if (param_2 == param_2 + param_3) { + return; + } + puVar8 = param_2 + 1; + uVar3 = (ulong)param_2 >> 3 & 1; + /* try { // try from 0035a154 to 0045a157 has its CatchHandler @ 00359e00 */ + /* catch() { ... } // from try @ 0035a04c with catch @ 0035a158 */ + uVar7 = (ulong)((long)(param_2 + param_3) - (long)puVar8) >> 3; + uVar6 = uVar7 + 1; + uVar4 = uVar6; + if (uVar3 < uVar6) { + uVar4 = uVar3; + } + /* try { // try from 0035a168 to 0045a16b has its CatchHandler @ 00359e00 */ + /* catch() { ... } // from try @ 00359f0c with catch @ 0035a16c */ + uVar3 = uVar6; + if ((uVar6 < 7) || (uVar3 = uVar4, puVar1 = param_2, uVar4 != 0)) { + *param_2 = uVar9; + /* try { // try from 0035a17c to 0045a17f has its CatchHandler @ 00359e00 */ + if (uVar3 != 1) { + /* catch() { ... } // from try @ 0035a120 with catch @ 0035a180 */ + param_2[1] = uVar9; + puVar8 = param_2 + 2; + if (uVar3 != 2) { + /* try { // try from 0035a190 to 0045a193 has its CatchHandler @ 00359e00 */ + param_2[2] = uVar9; + /* catch() { ... } // from try @ 0035a1d0 with catch @ 0035a194 + catch() { ... } // from try @ 0035a22c with catch @ 0035a194 + catch() { ... } // from try @ 0035a280 with catch @ 0035a194 */ + puVar8 = param_2 + 3; + if (uVar3 != 3) { + param_2[3] = uVar9; + puVar8 = param_2 + 4; + if (uVar3 != 4) { + param_2[4] = uVar9; + puVar8 = param_2 + 5; + if (uVar3 == 6) { + param_2[5] = uVar9; + puVar8 = param_2 + 6; + } + } + } + } + } + uVar4 = uVar3; + puVar1 = puVar8; + if (uVar6 == uVar3) { + return; + } + } + /* try { // try from 0035a1d0 to 0045a1d3 has its CatchHandler @ 0035a194 */ + uVar3 = ((uVar6 - uVar4) - 2 >> 1) + 1; + if (uVar7 != uVar4) { + uVar7 = 0; + puVar8 = param_2 + uVar4; + do { + puVar8[1] = uVar9; + *puVar8 = uVar9; + uVar7 = uVar7 + 1; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar3); + puVar1 = puVar1 + uVar3 * 2; + if (uVar6 - uVar4 == uVar3 * 2) { + return; + } + } + *puVar1 = uVar9; + return; + } + param_3 = param_3 - uVar6; + puVar1 = puVar8; + if (param_3 == 0) goto LAB_0035a2d4; + uVar4 = (ulong)puVar8 >> 3 & 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + if (param_3 < 7) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar4 = param_3; + if (param_3 != 1) { + puVar8[1] = uVar9; + puVar1 = puVar8 + 2; + if (param_3 != 2) { + puVar8[2] = uVar9; + /* catch() { ... } // from try @ 0035a224 with catch @ 0035a270 */ + puVar1 = puVar8 + 3; + if (param_3 != 3) { + puVar8[3] = uVar9; + /* try { // try from 0035a280 to 0045a283 has its CatchHandler @ 0035a194 */ + puVar1 = puVar8 + 4; + if (param_3 != 4) { + puVar8[4] = uVar9; + puVar1 = puVar8 + 5; + if (param_3 == 6) { + puVar8[5] = uVar9; + puVar1 = puVar8 + 6; + uVar4 = 6; + } + } + } + } + } +LAB_0035a2a8: + if (param_3 != uVar4) { + uVar3 = param_3 - uVar4; + if (param_3 - uVar4 != 1) goto LAB_0035a458; + *puVar1 = uVar9; + } + } + else { + if (uVar4 != 0) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar4 = 1; + goto LAB_0035a2a8; + } + uVar4 = 0; + uVar3 = param_3; +LAB_0035a458: + uVar2 = (uVar3 - 2 >> 1) + 1; + uVar7 = 0; + puVar5 = puVar8 + uVar4; + do { + puVar5[1] = uVar9; + *puVar5 = uVar9; + uVar7 = uVar7 + 1; + puVar5 = puVar5 + 2; + } while (uVar7 < uVar2); + if (uVar3 != uVar2 * 2) { + puVar1[uVar2 * 2] = uVar9; + } + } + puVar1 = (undefined8 *)param_1[1]; +LAB_0035a2d4: + puVar1 = puVar1 + param_3; + param_1[1] = (long)puVar1; + if (uVar6 != 0) { + memmove(puVar1,param_2,sVar11); + puVar1 = (undefined8 *)param_1[1]; + } + param_1[1] = (long)puVar1 + sVar11; + if (puVar8 == param_2) { + /* try { // try from 0035a224 to 0045a227 has its CatchHandler @ 0035a270 */ + /* try { // try from 0035a22c to 0045a24f has its CatchHandler @ 0035a194 */ + return; + } + puVar1 = param_2 + 1; + uVar4 = (ulong)param_2 >> 3 & 1; + uVar3 = (ulong)((long)puVar8 - (long)puVar1) >> 3; + uVar6 = uVar3 + 1; + if (uVar6 < uVar4) { + uVar4 = uVar6; + } + uVar7 = uVar6; + if ((uVar6 < 7) || (uVar7 = uVar4, puVar8 = param_2, uVar4 != 0)) { + *param_2 = uVar9; + if (uVar7 != 1) { + param_2[1] = uVar9; + puVar1 = param_2 + 2; + if (uVar7 != 2) { + param_2[2] = uVar9; + puVar1 = param_2 + 3; + if (uVar7 != 3) { + param_2[3] = uVar9; + puVar1 = param_2 + 4; + if (uVar7 != 4) { + param_2[4] = uVar9; + puVar1 = param_2 + 5; + if (uVar7 == 6) { + param_2[5] = uVar9; + puVar1 = param_2 + 6; + } + } + } + } + } + uVar4 = uVar7; + puVar8 = puVar1; + if (uVar6 == uVar7) { + return; + } + } + uVar7 = ((uVar6 - uVar4) - 2 >> 1) + 1; + if (uVar3 != uVar4) { + uVar3 = 0; + puVar1 = param_2 + uVar4; + do { + puVar1[1] = uVar9; + *puVar1 = uVar9; + uVar3 = uVar3 + 1; + puVar1 = puVar1 + 2; + } while (uVar3 < uVar7); + puVar8 = puVar8 + uVar7 * 2; + if (uVar6 - uVar4 == uVar7 * 2) { + return; + } + } + *puVar8 = uVar9; + return; + } + lVar10 = *param_1; + uVar6 = (long)puVar8 - lVar10 >> 3; + if (0x1fffffffffffffff - uVar6 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar4 = uVar6; + if (uVar6 < param_3) { + uVar4 = param_3; + } + uVar4 = uVar4 + uVar6; + if ((uVar4 < uVar6) || (0x1fffffffffffffff < uVar4)) { + lVar10 = (long)param_2 - lVar10; + uVar4 = 0xfffffffffffffff8; +LAB_0035a490: + __dest_00 = operator_new(uVar4); + } + else { + lVar10 = (long)param_2 - lVar10; + if (uVar4 != 0) { + uVar4 = uVar4 * 8; + goto LAB_0035a490; + } + uVar4 = 0; + __dest_00 = (void *)0x0; + } + puVar8 = (undefined8 *)((long)__dest_00 + lVar10); + uVar9 = *param_4; + uVar6 = (ulong)puVar8 >> 3 & 1; + if (param_3 < uVar6) { + uVar6 = param_3; + } + if (param_3 < 7) { + *(undefined8 *)((long)__dest_00 + lVar10) = uVar9; + puVar1 = puVar8 + 1; + uVar6 = param_3; + if (1 < param_3) { + puVar8[1] = uVar9; + puVar1 = puVar8 + 2; + if (param_3 != 2) { + puVar8[2] = uVar9; + puVar1 = puVar8 + 3; + if (param_3 != 3) { + puVar8[3] = uVar9; + puVar1 = puVar8 + 4; + if (param_3 != 4) { + puVar8[4] = uVar9; + puVar1 = puVar8 + 5; + if (param_3 == 6) { + puVar8[5] = uVar9; + puVar1 = puVar8 + 6; + } + } + } + } + } +LAB_0035a514: + if (param_3 == uVar6) goto LAB_0035a53c; + uVar3 = param_3 - uVar6; + puVar8 = puVar1; + if (param_3 - uVar6 != 1) goto LAB_0035a5b4; + } + else { + if (uVar6 != 0) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar6 = 1; + goto LAB_0035a514; + } + uVar6 = 0; + uVar3 = param_3; +LAB_0035a5b4: + uVar2 = (uVar3 - 2 >> 1) + 1; + uVar7 = 0; + puVar1 = (undefined8 *)((long)__dest_00 + lVar10 + uVar6 * 8); + do { + puVar1[1] = uVar9; + *puVar1 = uVar9; + uVar7 = uVar7 + 1; + puVar1 = puVar1 + 2; + } while (uVar7 < uVar2); + puVar1 = puVar8 + uVar2 * 2; + if (uVar3 == uVar2 * 2) goto LAB_0035a53c; + } + *puVar1 = uVar9; +LAB_0035a53c: + sVar11 = (long)param_2 - *param_1; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest_00,(void *)*param_1,sVar11); + } + __dest = (void *)((long)__dest_00 + sVar11 + param_3 * 8); + sVar11 = param_1[1] - (long)param_2; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest,param_2,sVar11); + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)__dest_00; + param_1[1] = (long)__dest + sVar11; + param_1[2] = (long)__dest_00 + uVar4; + /* catch() { ... } // from try @ 0035a648 with catch @ 0035a58c + catch() { ... } // from try @ 0035a690 with catch @ 0035a58c + catch() { ... } // from try @ 0035a7d0 with catch @ 0035a58c + catch() { ... } // from try @ 0035a848 with catch @ 0035a58c + catch() { ... } // from try @ 0035a8a8 with catch @ 0035a58c + catch() { ... } // from try @ 0035a8c0 with catch @ 0035a58c + catch() { ... } // from try @ 0035a8d4 with catch @ 0035a58c + catch() { ... } // from try @ 0035a8e8 with catch @ 0035a58c + catch() { ... } // from try @ 0035a8fc with catch @ 0035a58c */ + return; +} + + +================================================================== + +### FUNC 0035a680 (632 bytes) name=getPlatfomsInfo + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::ocl::getPlatfomsInfo(std::vector + >&) */ + +void cv::ocl::getPlatfomsInfo(vector *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + undefined1 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + void *pvVar12; + char cVar13; + int iVar14; + undefined8 *puVar15; + long lVar16; + PlatformInfo *this; + ulong uVar17; + ulong uVar18; + uint local_4c; + PlatformInfo aPStack_48 [8]; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + void *local_18; + void *local_10; + undefined8 local_8; + + /* try { // try from 0035a684 to 0045a687 has its CatchHandler @ 0035a8c4 */ + /* try { // try from 0035a690 to 0045a78f has its CatchHandler @ 0035a58c */ + local_18 = (void *)0x0; + local_10 = (void *)0x0; + local_8 = 0; + local_4c = 0; + cVar13 = FUN_00350224(); + if (cVar13 == '\0') { + FUN_0034d38c(0,0,&local_4c); + } + else { + iVar14 = FUN_0034d38c(0,0,&local_4c); + if (iVar14 != 0) { + local_38 = 0; + local_30 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_38,0x2f); + uVar7 = DAT_0046e09e; + uVar6 = DAT_0046e09c; + uVar5 = _LAB_0046e098; + uVar4 = _DAT_0046e088; + uVar3 = DAT_0046e080; + uVar2 = DAT_0046e078; + uVar1 = DAT_0046e070; + /* try { // try from 0035a8a0 to 0045a8a3 has its CatchHandler @ 0035a8b0 */ + /* try { // try from 0035a8a8 to 0045a8ab has its CatchHandler @ 0035a58c */ + /* catch() { ... } // from try @ 0035a8a0 with catch @ 0035a8b0 */ + puVar15[4] = DAT_0046e090; + /* try { // try from 0035a8c0 to 0045a8c3 has its CatchHandler @ 0035a58c */ + *(undefined4 *)(puVar15 + 5) = uVar5; + /* catch() { ... } // from try @ 0035a684 with catch @ 0035a8c4 */ + *(undefined2 *)((long)puVar15 + 0x2c) = uVar6; + *(undefined1 *)((long)puVar15 + 0x2e) = uVar7; + *puVar15 = uVar1; + puVar15[1] = uVar2; + puVar15[2] = uVar3; + puVar15[3] = uVar4; + /* try { // try from 0035a8d4 to 0045a8d7 has its CatchHandler @ 0035a58c */ + error(-0xd7,(String *)&local_38,"void cv::ocl::getPlatforms(std::vector<_cl_platform_id*>&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x149c); + /* catch() { ... } // from try @ 0035a7c8 with catch @ 0035a8d8 */ + String::deallocate((String *)&local_38); + } + } + pvVar12 = local_18; + if (local_4c != 0) { + uVar18 = (ulong)local_4c; + local_40 = 0; + uVar17 = (long)local_10 - (long)local_18 >> 3; + if (uVar17 < uVar18) { + /* try { // try from 0035a8e8 to 0045a8eb has its CatchHandler @ 0035a58c */ + /* catch() { ... } // from try @ 0035a840 with catch @ 0035a8ec */ + FUN_0035a0c4(&local_18,local_10,uVar18 - uVar17,&local_40); + } + else if (uVar18 < uVar17) { + local_10 = (void *)((long)local_18 + uVar18 * 8); + } + cVar13 = FUN_00350224(); + if (cVar13 == '\0') { + FUN_0034d38c(local_4c,local_18,&local_4c); + } + else { + iVar14 = FUN_0034d38c(local_4c,local_18,&local_4c); + if (iVar14 != 0) { + local_28 = 0; + local_20 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_28,0x41); + uVar9 = DAT_0046e0c8; + uVar8 = _DAT_0046e0c0; + uVar4 = DAT_0046e0b8; + uVar3 = DAT_0046e0b0; + uVar2 = DAT_0046e0a8; + uVar1 = DAT_0046e0a0; + *(undefined1 *)(puVar15 + 8) = DAT_0046e0e0; + uVar11 = DAT_0046e0d8; + uVar10 = DAT_0046e0d0; + /* try { // try from 0035a840 to 0045a843 has its CatchHandler @ 0035a8ec */ + *puVar15 = uVar1; + puVar15[1] = uVar2; + /* try { // try from 0035a848 to 0045a867 has its CatchHandler @ 0035a58c */ + puVar15[2] = uVar3; + puVar15[3] = uVar4; + puVar15[4] = uVar8; + puVar15[5] = uVar9; + puVar15[6] = uVar10; + puVar15[7] = uVar11; + error(-0xd7,(String *)&local_28,"void cv::ocl::getPlatforms(std::vector<_cl_platform_id*>&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x14a5); + String::deallocate((String *)&local_28); + } + } + uVar17 = 0; + pvVar12 = local_10; + if ((long)local_10 - (long)local_18 >> 3 != 0) { + do { + PlatformInfo::PlatformInfo(aPStack_48,(void *)((long)local_18 + uVar17 * 8)); + this = *(PlatformInfo **)(param_1 + 8); + if (this == *(PlatformInfo **)(param_1 + 0x10)) { + /* try { // try from 0035a7c8 to 0045a7cb has its CatchHandler @ 0035a8d8 */ + /* try { // try from 0035a7d0 to 0045a7f7 has its CatchHandler @ 0035a58c */ + std::vector>::_M_insert_aux + ((vector> *)param_1, + this,aPStack_48); + } + else { + lVar16 = 0; + if (this != (PlatformInfo *)0x0) { + PlatformInfo::PlatformInfo(this,aPStack_48); + lVar16 = *(long *)(param_1 + 8); + } + *(long *)(param_1 + 8) = lVar16 + 8; + } + PlatformInfo::~PlatformInfo(aPStack_48); + uVar17 = uVar17 + 1; + pvVar12 = local_10; + } while (uVar17 < (ulong)((long)local_10 - (long)local_18 >> 3)); + } + } + local_10 = pvVar12; + if (local_18 != (void *)0x0) { + operator_delete(local_18); + } + return; +} + + +================================================================== + +### FUNC 0035a940 (1468 bytes) name=FUN_0035a940 + +void FUN_0035a940(long *param_1,undefined8 *param_2,ulong param_3,undefined8 *param_4) + +{ + void *__dest; + undefined8 *puVar1; + void *__dest_00; + ulong uVar2; + ulong uVar3; + ulong uVar4; + undefined8 *puVar5; + ulong uVar6; + ulong uVar7; + undefined8 *puVar8; + undefined8 uVar9; + long lVar10; + size_t sVar11; + + /* try { // try from 0035a944 to 0045a947 has its CatchHandler @ 0035a900 */ + if (param_3 == 0) { + return; + } + puVar8 = (undefined8 *)param_1[1]; + /* try { // try from 0035a964 to 0045a967 has its CatchHandler @ 0035aa04 */ + /* try { // try from 0035a96c to 0045a9c3 has its CatchHandler @ 0035a900 */ + if (param_3 <= (ulong)(param_1[2] - (long)puVar8 >> 3)) { + sVar11 = (long)puVar8 - (long)param_2; + uVar9 = *param_4; + uVar6 = (long)sVar11 >> 3; + if (param_3 < uVar6) { + puVar5 = puVar8 + -param_3; + puVar1 = puVar8; + if ((long)puVar8 - (long)puVar5 >> 3 != 0) { + memmove(puVar8,puVar5,(long)puVar8 - (long)puVar5); + /* try { // try from 0035aca0 to 0045aca3 has its CatchHandler @ 0035aaf8 */ + puVar1 = (undefined8 *)param_1[1]; + /* catch() { ... } // from try @ 0035ae98 with catch @ 0035aca4 + catch() { ... } // from try @ 0035b08c with catch @ 0035aca4 + catch() { ... } // from try @ 0035b0b4 with catch @ 0035aca4 */ + } + sVar11 = (long)puVar5 - (long)param_2; + param_1[1] = (long)(puVar1 + param_3); + if ((long)sVar11 >> 3 != 0) { + memmove((void *)((long)puVar8 - sVar11),param_2,sVar11); + } + if (param_2 == param_2 + param_3) { + return; + } + puVar8 = param_2 + 1; + uVar3 = (ulong)param_2 >> 3 & 1; + uVar7 = (ulong)((long)(param_2 + param_3) - (long)puVar8) >> 3; + uVar6 = uVar7 + 1; + /* try { // try from 0035a9e0 to 0045a9e3 has its CatchHandler @ 0035a9f0 */ + uVar4 = uVar6; + if (uVar3 < uVar6) { + uVar4 = uVar3; + } + /* try { // try from 0035a9e8 to 0045a9eb has its CatchHandler @ 0035a900 */ + uVar3 = uVar6; + if ((uVar6 < 7) || (uVar3 = uVar4, puVar1 = param_2, uVar4 != 0)) { + /* catch() { ... } // from try @ 0035a9e0 with catch @ 0035a9f0 */ + *param_2 = uVar9; + if (uVar3 != 1) { + param_2[1] = uVar9; + /* try { // try from 0035aa00 to 0045aa03 has its CatchHandler @ 0035a900 */ + /* catch() { ... } // from try @ 0035a964 with catch @ 0035aa04 */ + puVar8 = param_2 + 2; + if (uVar3 != 2) { + param_2[2] = uVar9; + /* try { // try from 0035aa14 to 0045aa17 has its CatchHandler @ 0035a900 */ + puVar8 = param_2 + 3; + /* catch() { ... } // from try @ 0035aa54 with catch @ 0035aa18 + catch() { ... } // from try @ 0035aaa8 with catch @ 0035aa18 + catch() { ... } // from try @ 0035aaf4 with catch @ 0035aa18 */ + if (uVar3 != 3) { + param_2[3] = uVar9; + puVar8 = param_2 + 4; + if (uVar3 != 4) { + param_2[4] = uVar9; + puVar8 = param_2 + 5; + if (uVar3 == 6) { + param_2[5] = uVar9; + puVar8 = param_2 + 6; + } + } + } + } + } + uVar4 = uVar3; + puVar1 = puVar8; + if (uVar6 == uVar3) { + return; + } + } + /* try { // try from 0035aa54 to 0045aa57 has its CatchHandler @ 0035aa18 */ + uVar3 = ((uVar6 - uVar4) - 2 >> 1) + 1; + if (uVar7 != uVar4) { + uVar7 = 0; + puVar8 = param_2 + uVar4; + do { + puVar8[1] = uVar9; + *puVar8 = uVar9; + uVar7 = uVar7 + 1; + puVar8 = puVar8 + 2; + } while (uVar7 < uVar3); + puVar1 = puVar1 + uVar3 * 2; + if (uVar6 - uVar4 == uVar3 * 2) { + return; + } + } + *puVar1 = uVar9; + return; + } + param_3 = param_3 - uVar6; + puVar1 = puVar8; + if (param_3 == 0) goto LAB_0035ab50; + uVar4 = (ulong)puVar8 >> 3 & 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + if (param_3 < 7) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar4 = param_3; + if (param_3 != 1) { + puVar8[1] = uVar9; + puVar1 = puVar8 + 2; + /* catch() { ... } // from try @ 0035aaa0 with catch @ 0035aae4 */ + if (param_3 != 2) { + puVar8[2] = uVar9; + puVar1 = puVar8 + 3; + /* try { // try from 0035aaf4 to 0045aaf7 has its CatchHandler @ 0035aa18 */ + if (param_3 != 3) { + /* catch() { ... } // from try @ 0035ab38 with catch @ 0035aaf8 + catch() { ... } // from try @ 0035ab84 with catch @ 0035aaf8 + catch() { ... } // from try @ 0035ac68 with catch @ 0035aaf8 + catch() { ... } // from try @ 0035ac8c with catch @ 0035aaf8 + catch() { ... } // from try @ 0035aca0 with catch @ 0035aaf8 */ + puVar8[3] = uVar9; + puVar1 = puVar8 + 4; + if (param_3 != 4) { + puVar8[4] = uVar9; + puVar1 = puVar8 + 5; + if (param_3 == 6) { + puVar8[5] = uVar9; + puVar1 = puVar8 + 6; + uVar4 = 6; + } + } + } + } + } +LAB_0035ab24: + if (param_3 != uVar4) { + uVar3 = param_3 - uVar4; + /* try { // try from 0035ab38 to 0045ab3b has its CatchHandler @ 0035aaf8 */ + if (param_3 - uVar4 != 1) goto LAB_0035acd4; + *puVar1 = uVar9; + } + } + else { + if (uVar4 != 0) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar4 = 1; + goto LAB_0035ab24; + } + uVar4 = 0; + uVar3 = param_3; +LAB_0035acd4: + uVar2 = (uVar3 - 2 >> 1) + 1; + uVar7 = 0; + puVar5 = puVar8 + uVar4; + do { + puVar5[1] = uVar9; + *puVar5 = uVar9; + uVar7 = uVar7 + 1; + puVar5 = puVar5 + 2; + } while (uVar7 < uVar2); + if (uVar3 != uVar2 * 2) { + puVar1[uVar2 * 2] = uVar9; + } + } + puVar1 = (undefined8 *)param_1[1]; +LAB_0035ab50: + puVar1 = puVar1 + param_3; + param_1[1] = (long)puVar1; + if (uVar6 != 0) { + memmove(puVar1,param_2,sVar11); + /* try { // try from 0035ae98 to 0045b04b has its CatchHandler @ 0035aca4 */ + puVar1 = (undefined8 *)param_1[1]; + } + param_1[1] = (long)puVar1 + sVar11; + if (puVar8 == param_2) { + /* try { // try from 0035aaa0 to 0045aaa3 has its CatchHandler @ 0035aae4 */ + /* try { // try from 0035aaa8 to 0045aacf has its CatchHandler @ 0035aa18 */ + return; + } + puVar1 = param_2 + 1; + uVar4 = (ulong)param_2 >> 3 & 1; + uVar3 = (ulong)((long)puVar8 - (long)puVar1) >> 3; + /* try { // try from 0035ab7c to 0045ab7f has its CatchHandler @ 0035ac90 */ + uVar6 = uVar3 + 1; + /* try { // try from 0035ab84 to 0045ac1f has its CatchHandler @ 0035aaf8 */ + if (uVar6 < uVar4) { + uVar4 = uVar6; + } + uVar7 = uVar6; + if ((uVar6 < 7) || (uVar7 = uVar4, puVar8 = param_2, uVar4 != 0)) { + *param_2 = uVar9; + if (uVar7 != 1) { + param_2[1] = uVar9; + puVar1 = param_2 + 2; + if (uVar7 != 2) { + param_2[2] = uVar9; + puVar1 = param_2 + 3; + if (uVar7 != 3) { + param_2[3] = uVar9; + puVar1 = param_2 + 4; + if (uVar7 != 4) { + param_2[4] = uVar9; + puVar1 = param_2 + 5; + if (uVar7 == 6) { + param_2[5] = uVar9; + puVar1 = param_2 + 6; + } + } + } + } + } + uVar4 = uVar7; + puVar8 = puVar1; + if (uVar6 == uVar7) { + return; + } + } + uVar7 = ((uVar6 - uVar4) - 2 >> 1) + 1; + if (uVar3 != uVar4) { + uVar3 = 0; + puVar1 = param_2 + uVar4; + do { + puVar1[1] = uVar9; + *puVar1 = uVar9; + uVar3 = uVar3 + 1; + puVar1 = puVar1 + 2; + } while (uVar3 < uVar7); + puVar8 = puVar8 + uVar7 * 2; + if (uVar6 - uVar4 == uVar7 * 2) { + return; + } + } + *puVar8 = uVar9; + return; + } + lVar10 = *param_1; + uVar6 = (long)puVar8 - lVar10 >> 3; + /* try { // try from 0035ac60 to 0045ac63 has its CatchHandler @ 0035ac7c */ + /* try { // try from 0035ac68 to 0045ac6b has its CatchHandler @ 0035aaf8 */ + if (0x1fffffffffffffff - uVar6 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar4 = uVar6; + if (uVar6 < param_3) { + uVar4 = param_3; + } + uVar4 = uVar4 + uVar6; + /* catch() { ... } // from try @ 0035ac60 with catch @ 0035ac7c */ + if ((uVar4 < uVar6) || (0x1fffffffffffffff < uVar4)) { + lVar10 = (long)param_2 - lVar10; + uVar4 = 0xfffffffffffffff8; +LAB_0035ad0c: + __dest_00 = operator_new(uVar4); + } + else { + lVar10 = (long)param_2 - lVar10; + /* try { // try from 0035ac8c to 0045ac8f has its CatchHandler @ 0035aaf8 */ + if (uVar4 != 0) { + uVar4 = uVar4 * 8; + goto LAB_0035ad0c; + } + uVar4 = 0; + __dest_00 = (void *)0x0; + /* catch() { ... } // from try @ 0035ab7c with catch @ 0035ac90 */ + } + puVar8 = (undefined8 *)((long)__dest_00 + lVar10); + uVar9 = *param_4; + uVar6 = (ulong)puVar8 >> 3 & 1; + if (param_3 < uVar6) { + uVar6 = param_3; + } + if (param_3 < 7) { + *(undefined8 *)((long)__dest_00 + lVar10) = uVar9; + puVar1 = puVar8 + 1; + uVar6 = param_3; + if (1 < param_3) { + puVar8[1] = uVar9; + puVar1 = puVar8 + 2; + if (param_3 != 2) { + puVar8[2] = uVar9; + puVar1 = puVar8 + 3; + if (param_3 != 3) { + puVar8[3] = uVar9; + puVar1 = puVar8 + 4; + if (param_3 != 4) { + puVar8[4] = uVar9; + puVar1 = puVar8 + 5; + if (param_3 == 6) { + puVar8[5] = uVar9; + puVar1 = puVar8 + 6; + } + } + } + } + } +LAB_0035ad90: + if (param_3 == uVar6) goto LAB_0035adb8; + uVar3 = param_3 - uVar6; + puVar8 = puVar1; + if (param_3 - uVar6 != 1) goto LAB_0035ae30; + } + else { + if (uVar6 != 0) { + puVar1 = puVar8 + 1; + *puVar8 = uVar9; + uVar6 = 1; + goto LAB_0035ad90; + } + uVar6 = 0; + uVar3 = param_3; +LAB_0035ae30: + uVar2 = (uVar3 - 2 >> 1) + 1; + uVar7 = 0; + puVar1 = (undefined8 *)((long)__dest_00 + lVar10 + uVar6 * 8); + do { + puVar1[1] = uVar9; + *puVar1 = uVar9; + uVar7 = uVar7 + 1; + puVar1 = puVar1 + 2; + } while (uVar7 < uVar2); + puVar1 = puVar8 + uVar2 * 2; + if (uVar3 == uVar2 * 2) goto LAB_0035adb8; + } + *puVar1 = uVar9; +LAB_0035adb8: + sVar11 = (long)param_2 - *param_1; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest_00,(void *)*param_1,sVar11); + } + __dest = (void *)((long)__dest_00 + sVar11 + param_3 * 8); + sVar11 = param_1[1] - (long)param_2; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest,param_2,sVar11); + } + if ((void *)*param_1 != (void *)0x0) { + operator_delete((void *)*param_1); + } + *param_1 = (long)__dest_00; + param_1[1] = (long)__dest + sVar11; + param_1[2] = (long)__dest_00 + uVar4; + return; +} + + +================================================================== + +### FUNC 0035aefc (5152 bytes) name=FUN_0035aefc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined8 FUN_0035aefc(void) + +{ + ulong uVar1; + uint uVar2; + bool bVar3; + long *plVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined2 uVar8; + undefined1 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + long lVar14; + long *plVar15; + char cVar16; + int iVar17; + int iVar18; + char *__s1; + ulong uVar19; + long lVar20; + ulong uVar21; + char *pcVar22; + long lVar23; + long *plVar24; + long *plVar25; + size_t sVar26; + undefined8 *puVar27; + bool bVar28; + int *piVar29; + undefined *puVar30; + ulong uVar31; + uint uVar32; + undefined8 uVar33; + long lVar34; + undefined8 uVar35; + long lVar36; + ulong uVar37; + ulong uVar38; + uint uVar39; + undefined8 local_9a8; + ulong local_950; + undefined1 auStack_928 [8]; + undefined1 auStack_920 [8]; + char *local_918; + char *local_910; + long local_908; + long local_900; + long local_8f8; + long local_8f0; + long local_8e8; + undefined8 local_8e0; + long local_8d8; + long local_8d0; + undefined8 local_8c8; + undefined8 local_8c0; + long local_8b8; + undefined8 local_8b0; + undefined8 local_8a8; + undefined8 local_8a0; + undefined *local_898; + undefined8 local_890; + undefined8 local_888; + undefined8 local_880; + long *local_878; + long *local_870; + undefined8 local_868; + void *local_860; + long local_858; + undefined8 local_850; + void *local_848; + void *local_840; + undefined8 local_838; + long *local_830; + ulong local_828; + long alStack_820 [129]; + long *local_418; + long *local_410; + long local_408 [129]; + + local_918 = PTR_DAT_00501f30 + 0x18; + local_878 = (long *)0x0; + local_870 = (long *)0x0; + local_868 = 0; + local_910 = local_918; + __s1 = getenv("OPENCV_OPENCL_DEVICE"); + if (__s1 != (char *)0x0) { + iVar17 = strcmp(__s1,"disabled"); + if (iVar17 != 0) { + /* try { // try from 0035b084 to 0045b087 has its CatchHandler @ 0035b0a4 */ + /* try { // try from 0035b08c to 0045b08f has its CatchHandler @ 0035aca4 */ + FUN_00410a08(&local_860,__s1,&local_848); + /* catch() { ... } // from try @ 0035b084 with catch @ 0035b0a4 */ + local_418 = (long *)0x0; + local_410 = (long *)0x0; + local_408[0] = 0; + /* try { // try from 0035b0b4 to 0045b0b7 has its CatchHandler @ 0035aca4 */ + FUN_00357778(&local_860,0x3a,&local_418); + /* catch() { ... } // from try @ 0035b108 with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b15c with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b1f8 with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b2ac with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b384 with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b458 with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b46c with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b480 with catch @ 0035b0b8 + catch() { ... } // from try @ 0035b494 with catch @ 0035b0b8 */ + uVar19 = (long)local_410 - (long)local_418 >> 3; + if (uVar19 < 4) { + if (uVar19 == 3) { + FUN_004144f8(&local_910,local_418 + 2); + uVar19 = (long)local_410 - (long)local_418 >> 3; + } + if (1 < uVar19) { + FUN_00357778(local_418 + 1,0x7c, + (vector> *)&local_878); + uVar19 = (long)local_410 - (long)local_418 >> 3; + } + if (uVar19 == 0) { + /* try { // try from 0035b108 to 0045b10b has its CatchHandler @ 0035b0b8 */ + bVar28 = false; + plVar25 = local_418; + plVar24 = local_410; + plVar4 = local_410; + } + else { + FUN_004144f8(&local_918); + bVar28 = false; + plVar25 = local_418; + plVar24 = local_410; + plVar4 = local_410; + } + } + else { + FUN_003f1ad0(PTR_DAT_00501c50,"ERROR: Invalid configuration string for OpenCL device",0x35); + plVar25 = *(long **)(PTR_DAT_00501c50 + *(long *)(*(long *)PTR_DAT_00501c50 + -0x18) + 0xf0) + ; + if (plVar25 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar25[7] == '\0') { + FUN_003d14e0(plVar25); + uVar19 = 10; + if (*(code **)(*plVar25 + 0x30) != FUN_0034d2a0) { + cVar16 = (**(code **)(*plVar25 + 0x30))(plVar25,10); + uVar19 = (ulong)(uint)(int)cVar16; + } + } + else { + uVar19 = (ulong)*(char *)((long)plVar25 + 0x43); + } + FUN_003f1564(PTR_DAT_00501c50,uVar19); + FUN_003f0db8(); + bVar28 = true; + plVar25 = local_418; + plVar24 = local_410; + plVar4 = local_410; + } + for (; plVar15 = local_410, plVar25 != local_410; plVar25 = plVar25 + 1) { + puVar30 = (undefined *)(*plVar25 + -0x18); + local_410 = plVar4; + if (puVar30 != PTR_DAT_00501f30) { + piVar29 = (int *)(*plVar25 + -8); + do { + iVar17 = *piVar29; + cVar16 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar29,0x10); + if (bVar3) { + *piVar29 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + /* try { // try from 0035b154 to 0045b157 has its CatchHandler @ 0035b448 */ + if (iVar17 < 1) { + /* try { // try from 0035b15c to 0045b1af has its CatchHandler @ 0035b0b8 */ + operator_delete(puVar30); + } + } + plVar24 = local_418; + plVar4 = local_410; + local_410 = plVar15; + } + local_410 = plVar4; + if (plVar24 != (long *)0x0) { + operator_delete(plVar24); + } + if ((undefined *)((long)local_860 + -0x18) != PTR_DAT_00501f30) { + /* catch() { ... } // from try @ 0035c218 with catch @ 0035c150 + catch() { ... } // from try @ 0035c26c with catch @ 0035c150 + catch() { ... } // from try @ 0035c288 with catch @ 0035c150 */ + FUN_0034d640((undefined *)((long)local_860 + -0x18),&local_418); + } + if (!bVar28) goto LAB_0035b1f0; + } +LAB_0035af94: + uVar33 = 0; + plVar24 = local_878; + plVar4 = local_870; + plVar15 = local_870; + plVar25 = local_870; + goto joined_r0x0035afa8; + } +LAB_0035b1f0: + /* try { // try from 0035b1f0 to 0045b1f3 has its CatchHandler @ 0035b45c */ + /* try { // try from 0035b1f8 to 0045b263 has its CatchHandler @ 0035b0b8 */ + if (*(long *)(local_910 + -0x18) == 1) { + uVar19 = 0; + pcVar22 = local_910; + do { + if (-1 < *(int *)(pcVar22 + -8)) { + FUN_00412cf8(&local_910); + pcVar22 = local_910; + } + if (9 < (int)pcVar22[uVar19] - 0x30U) goto LAB_0035b244; + uVar19 = uVar19 + 1; + } while (uVar19 < *(ulong *)(pcVar22 + -0x18)); + iVar17 = atoi(pcVar22); + /* catch() { ... } // from try @ 0035b154 with catch @ 0035b448 */ + if (iVar17 < 0) goto LAB_0035af94; + bVar28 = true; + /* try { // try from 0035b458 to 0045b45b has its CatchHandler @ 0035b0b8 */ + } + else { +LAB_0035b244: + bVar28 = false; + iVar17 = -1; + } + local_860 = (void *)0x0; + local_858 = 0; + local_850 = 0; + local_418 = (long *)((ulong)local_418 & 0xffffffff00000000); + cVar16 = FUN_00350224(); + if (cVar16 == '\0') { + FUN_0034d38c(0,0,&local_418); + } + else { + iVar18 = FUN_0034d38c(0,0,&local_418); + if (iVar18 != 0) { + local_8c8 = 0; + local_8c0 = 0; + puVar27 = (undefined8 *)cv::String::allocate((String *)&local_8c8,0x2f); + uVar9 = DAT_0046e09e; + uVar8 = DAT_0046e09c; + uVar7 = _LAB_0046e098; + uVar6 = _DAT_0046e088; + uVar5 = DAT_0046e080; + uVar35 = DAT_0046e078; + uVar33 = DAT_0046e070; + puVar27[4] = DAT_0046e090; + *(undefined4 *)(puVar27 + 5) = uVar7; + *(undefined2 *)((long)puVar27 + 0x2c) = uVar8; + *(undefined1 *)((long)puVar27 + 0x2e) = uVar9; + *puVar27 = uVar33; + puVar27[1] = uVar35; + puVar27[2] = uVar5; + puVar27[3] = uVar6; + cv::error(-0xd7,(String *)&local_8c8,"_cl_device_id* cv::ocl::selectOpenCLDevice()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x8f1); + cv::String::deallocate((String *)&local_8c8); + } + } + if ((uint)local_418 != 0) { + /* try { // try from 0035b2a4 to 0045b2a7 has its CatchHandler @ 0035b470 */ + /* try { // try from 0035b2ac to 0045b33b has its CatchHandler @ 0035b0b8 */ + FUN_00356f8c(&local_860,(ulong)local_418 & 0xffffffff,0); + cVar16 = FUN_00350224(); + if (cVar16 == '\0') { + FUN_0034d38c((ulong)local_418 & 0xffffffff,local_860,&local_418); + } + else { + iVar18 = FUN_0034d38c((ulong)local_418 & 0xffffffff,local_860,&local_418); + if (iVar18 != 0) { + local_8b8 = 0; + local_8b0 = 0; + puVar27 = (undefined8 *)cv::String::allocate((String *)&local_8b8,0x41); + uVar11 = DAT_0046e0c8; + uVar10 = _DAT_0046e0c0; + uVar6 = DAT_0046e0b8; + uVar5 = DAT_0046e0b0; + uVar35 = DAT_0046e0a8; + uVar33 = DAT_0046e0a0; + /* try { // try from 0035c218 to 0045c21b has its CatchHandler @ 0035c150 */ + *(undefined1 *)(puVar27 + 8) = DAT_0046e0e0; + uVar13 = DAT_0046e0d8; + uVar12 = DAT_0046e0d0; + *puVar27 = uVar33; + puVar27[1] = uVar35; + puVar27[2] = uVar5; + puVar27[3] = uVar6; + puVar27[4] = uVar10; + puVar27[5] = uVar11; + puVar27[6] = uVar12; + puVar27[7] = uVar13; + cv::error(-0xd7,(String *)&local_8b8,"_cl_device_id* cv::ocl::selectOpenCLDevice()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x8f6); + cv::String::deallocate((String *)&local_8b8); + } + } + FUN_00356f8c(&local_860,(ulong)local_418 & 0xffffffff,0); + if (*(long *)(local_918 + -0x18) == 0) { + /* try { // try from 0035b46c to 0045b46f has its CatchHandler @ 0035b0b8 */ + uVar39 = 0xffffffff; +LAB_0035b470: + /* catch() { ... } // from try @ 0035b2a4 with catch @ 0035b470 */ + /* try { // try from 0035b480 to 0045b483 has its CatchHandler @ 0035b0b8 */ + /* catch() { ... } // from try @ 0035b37c with catch @ 0035b484 */ + if ((long)local_870 - (long)local_878 >> 3 != 0) { +LAB_0035b6a4: + local_950 = 0; + uVar2 = uVar39; + if ((int)uVar39 < 0) { + uVar2 = 0; + } + uVar19 = (long)iVar17; + if (!bVar28) { + uVar19 = 0; + } + uVar21 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + lVar34 = NEON_shl(uVar19,3); +LAB_0035b730: + FUN_00414378(&local_8b8,local_878 + local_950); + if ((*(int *)(local_8b8 + -8) < 0) || + (FUN_00412cf8(&local_8b8), lVar20 = local_8b8, *(int *)(local_8b8 + -8) < 0)) { + lVar23 = local_8b8 + *(long *)(local_8b8 + -0x18); + lVar20 = local_8b8; + } + else { + FUN_00412cf8(&local_8b8); + lVar23 = local_8b8 + *(long *)(local_8b8 + -0x18); + if (-1 < *(int *)(local_8b8 + -8)) { + FUN_00412cf8(&local_8b8); + } + } + lVar14 = local_8b8; + lVar36 = 0; + if (lVar20 != lVar23) { + do { + iVar18 = tolower((int)*(char *)(lVar20 + lVar36)); + *(char *)(lVar14 + lVar36) = (char)iVar18; + lVar36 = lVar36 + 1; + } while (lVar36 != lVar23 - lVar20); + } + iVar18 = FUN_00412830(&local_8b8,&DAT_0046e218); + if (((iVar18 == 0) || (iVar18 = FUN_00412830(&local_8b8,&DAT_0046e220), iVar18 == 0)) || + (iVar18 = FUN_00412830(&local_8b8,&DAT_0046e228), iVar18 == 0)) { + uVar33 = 4; + } + else { + /* try { // try from 0035bf90 to 0045bf93 has its CatchHandler @ 0035c128 */ + /* try { // try from 0035bf98 to 0045c0a3 has its CatchHandler @ 0035bc54 */ + iVar18 = FUN_00412830(&local_8b8,&DAT_0046e340); + uVar33 = 2; + if (iVar18 != 0) { + iVar18 = FUN_00412830(&local_8b8,"accelerator"); + uVar33 = 8; + if (iVar18 != 0) { + iVar18 = FUN_00412830(&local_8b8,&DAT_0046e240); + if (iVar18 != 0) { + uVar33 = FUN_003f1f84(PTR_DAT_00501c50, + "ERROR: Unsupported device type for OpenCL device (GPU, CPU, ACCELERATOR): " + ); + FUN_003f1ad0(uVar33,local_878[local_950], + *(undefined8 *)(local_878[local_950] + -0x18)); + FUN_003f18d4(); + if ((undefined *)(local_8b8 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_8b8 + -0x18),&local_418); + } + goto LAB_0035c0f0; + } + uVar33 = 0xffffffffffffffff; + } + } + } + local_848 = (void *)0x0; + local_840 = (void *)0x0; + local_838 = 0; + lVar20 = lVar34; + uVar38 = uVar19; + if (((int)uVar39 < 0 || uVar39 == uVar2) && + ((int)uVar2 < (int)(local_858 - (long)local_860 >> 3))) { + local_418 = (long *)((ulong)local_418 & 0xffffffff00000000); + uVar35 = *(undefined8 *)((long)local_860 + uVar21); + uVar37 = uVar21; + uVar32 = uVar2; + if (DAT_00532120 == (code *)0x0) goto LAB_0035b9c8; +LAB_0035b854: + /* try { // try from 0035b85c to 0045b85f has its CatchHandler @ 0035bb00 */ + iVar18 = (*DAT_00532120)(uVar35,uVar33,0,0,&local_418); + do { + if (DAT_00532119 == '\0') { + /* try { // try from 0035bbac to 0045bc3b has its CatchHandler @ 0035bb08 */ + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + } + /* try { // try from 0035b884 to 0045b8a7 has its CatchHandler @ 0035baf8 */ + if ((DAT_005329c8 != '\0') && (1 < iVar18 + 1U)) { + local_8a8 = 0; + local_8a0 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_8a8,0x1b); + cVar16 = s_status____0____status_____1_0046e298[0x1a]; + uVar8 = s_status____0____status_____1_0046e298._24_2_; + uVar5 = s_status____0____status_____1_0046e298._8_8_; + uVar35 = s_status____0____status_____1_0046e298._0_8_; + /* try { // try from 0035b8e0 to 0045b8e3 has its CatchHandler @ 0035baa4 */ + *(undefined8 *)(pcVar22 + 0x10) = s_status____0____status_____1_0046e298._16_8_; + /* try { // try from 0035b8e8 to 0045b8eb has its CatchHandler @ 0035baf8 */ + *(undefined2 *)(pcVar22 + 0x18) = uVar8; + pcVar22[0x1a] = cVar16; + *(undefined8 *)pcVar22 = uVar35; + *(undefined8 *)(pcVar22 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_8a8,"_cl_device_id* cv::ocl::selectOpenCLDevice()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x933); + cv::String::deallocate((String *)&local_8a8); + } + if ((uint)local_418 != 0) { + local_8e0 = 0; + lVar23 = (long)local_840 - (long)local_848; + uVar31 = lVar23 >> 3; + uVar1 = uVar31 + ((ulong)local_418 & 0xffffffff); + if (uVar31 < uVar1) { + FUN_0035a940(&local_848); + lVar23 = (long)local_848 + lVar23; + local_9a8 = *(undefined8 *)((long)local_860 + uVar37); + /* try { // try from 0035beac to 0045beaf has its CatchHandler @ 0035c100 */ + iVar18 = (uint)local_418; + if (DAT_00532120 == (code *)0x0) goto LAB_0035beb0; +LAB_0035bc14: + iVar18 = (*DAT_00532120)(local_9a8,uVar33,iVar18,lVar23,&local_418); + } + else { + if (uVar1 < uVar31) { + local_840 = (void *)((long)local_848 + uVar1 * 8); + } + lVar23 = (long)local_848 + lVar23; + local_9a8 = *(undefined8 *)((long)local_860 + uVar37); + iVar18 = (uint)local_418; + if (DAT_00532120 != (code *)0x0) goto LAB_0035bc14; +LAB_0035beb0: + /* try { // try from 0035beb4 to 0045bf73 has its CatchHandler @ 0035bc54 */ + DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"); + if (DAT_00532120 != (code *)0x0) goto LAB_0035bc14; + iVar18 = -1000; + } + cVar16 = FUN_00350224(); + /* catch() { ... } // from try @ 0035bba4 with catch @ 0035bc40 */ + if ((cVar16 != '\0') && (1 < iVar18 + 1U)) { + /* try { // try from 0035bc50 to 0045bc53 has its CatchHandler @ 0035bb08 */ + /* catch() { ... } // from try @ 0035bcb4 with catch @ 0035bc54 + catch() { ... } // from try @ 0035bd08 with catch @ 0035bc54 + catch() { ... } // from try @ 0035bdf0 with catch @ 0035bc54 + catch() { ... } // from try @ 0035beb4 with catch @ 0035bc54 + catch() { ... } // from try @ 0035bf98 with catch @ 0035bc54 + catch() { ... } // from try @ 0035c0c8 with catch @ 0035bc54 + catch() { ... } // from try @ 0035c0fc with catch @ 0035bc54 + catch() { ... } // from try @ 0035c110 with catch @ 0035bc54 + catch() { ... } // from try @ 0035c124 with catch @ 0035bc54 + catch() { ... } // from try @ 0035c138 with catch @ 0035bc54 + catch() { ... } // from try @ 0035c14c with catch @ 0035bc54 */ + local_898 = (undefined *)0x0; + local_890 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_898,0x1b); + cVar16 = s_status____0____status_____1_0046e298[0x1a]; + uVar8 = s_status____0____status_____1_0046e298._24_2_; + uVar5 = s_status____0____status_____1_0046e298._8_8_; + uVar35 = s_status____0____status_____1_0046e298._0_8_; + *(undefined8 *)(pcVar22 + 0x10) = s_status____0____status_____1_0046e298._16_8_; + *(undefined2 *)(pcVar22 + 0x18) = uVar8; + pcVar22[0x1a] = cVar16; + *(undefined8 *)pcVar22 = uVar35; + *(undefined8 *)(pcVar22 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_898,"_cl_device_id* cv::ocl::selectOpenCLDevice()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x939); + /* try { // try from 0035bcb4 to 0045bcb7 has its CatchHandler @ 0035bc54 */ + cv::String::deallocate((String *)&local_898); + } + } + uVar32 = uVar32 + 1; + if (((uVar39 != uVar32) && (-1 < (int)uVar39)) || + (uVar37 = uVar37 + 8, (int)(local_858 - (long)local_860 >> 3) <= (int)uVar32)) break; + local_418 = (long *)((ulong)local_418 & 0xffffffff00000000); + uVar35 = *(undefined8 *)((long)local_860 + uVar37); + if (DAT_00532120 != (code *)0x0) goto LAB_0035b854; +LAB_0035b9c8: + DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"); + /* try { // try from 0035b9d0 to 0045b9f3 has its CatchHandler @ 0035b5cc */ + if (DAT_00532120 != (code *)0x0) goto LAB_0035b854; + iVar18 = -1000; + } while( true ); + } + do { + if (((bVar28) && (uVar38 != (long)iVar17)) || + ((ulong)((long)local_840 - (long)local_848 >> 3) <= uVar38)) goto LAB_0035b954; + local_898 = PTR_DAT_00501f30 + 0x18; + /* try { // try from 0035b9fc to 0045b9ff has its CatchHandler @ 0035bb00 */ + cVar16 = FUN_00350224(); + if (cVar16 == '\0') { + uVar33 = *(undefined8 *)((long)local_848 + lVar20); + /* try { // try from 0035bd00 to 0045bd03 has its CatchHandler @ 0035c0ec */ + /* try { // try from 0035bd08 to 0045bd8f has its CatchHandler @ 0035bc54 */ + if (((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0 + )) && ((iVar18 = (*DAT_00532990)(uVar33,0x102b,0,0,&local_8d0), iVar18 == 0 && + (FUN_00412b08(&local_898,0,*(undefined8 *)(local_898 + -0x18),0), + local_8d0 != 0)))) { + plVar25 = (long *)(local_8d0 + 1); + plVar24 = local_408; + local_410 = (long *)0x408; + if ((long *)0x408 < plVar25) { + local_418 = plVar24; + plVar24 = operator_new__((ulong)plVar25); + } + local_418 = plVar24; + local_410 = plVar25; + iVar18 = FUN_0034d464(uVar33,0x102b,local_8d0,plVar24,0); + if (iVar18 == 0) { + sVar26 = strlen((char *)plVar24); + FUN_00412fdc(&local_898,plVar24,sVar26); + } + plVar25 = local_418; + if (local_418 != local_408) { +LAB_0035bd74: + if (plVar25 != (long *)0x0) { + operator_delete__(plVar25); + } + } + } + } + else { + uVar33 = *(undefined8 *)((long)local_848 + lVar20); + /* try { // try from 0035ba1c to 0045ba1f has its CatchHandler @ 0035b5cc */ + if (((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0 + )) || (iVar18 = (*DAT_00532990)(uVar33,0x102b,0,0,&local_8d8), iVar18 != 0)) { +LAB_0035ba48: + local_888 = 0; + local_880 = 0; + pcVar22 = (char *)cv::String::allocate((String *)&local_888,0x3d); + cVar16 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8[0x3c]; + uVar12 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._48_8_; + uVar11 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._40_8_; + uVar10 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._32_8_; + uVar6 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._24_8_; + uVar5 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._16_8_; + uVar35 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._8_8_; + uVar33 = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._0_8_; + /* try { // try from 0035ba68 to 0045ba6b has its CatchHandler @ 0035ba7c */ + /* try { // try from 0035ba70 to 0045ba73 has its CatchHandler @ 0035b5cc */ + /* catch() { ... } // from try @ 0035ba68 with catch @ 0035ba7c */ + *(undefined4 *)(pcVar22 + 0x38) = s_getStringInfo_clGetDeviceInfo__d_0046e2b8._56_4_; + /* try { // try from 0035ba8c to 0045ba8f has its CatchHandler @ 0035b5cc */ + pcVar22[0x3c] = cVar16; + /* catch() { ... } // from try @ 0035b648 with catch @ 0035ba90 */ + *(undefined8 *)(pcVar22 + 0x30) = uVar12; + /* try { // try from 0035baa0 to 0045baa3 has its CatchHandler @ 0035b5cc */ + /* catch() { ... } // from try @ 0035b8e0 with catch @ 0035baa4 */ + *(undefined8 *)pcVar22 = uVar33; + *(undefined8 *)(pcVar22 + 8) = uVar35; + *(undefined8 *)(pcVar22 + 0x10) = uVar5; + *(undefined8 *)(pcVar22 + 0x18) = uVar6; + *(undefined8 *)(pcVar22 + 0x20) = uVar10; + *(undefined8 *)(pcVar22 + 0x28) = uVar11; + cv::error(-0xd7,(String *)&local_888,"_cl_device_id* cv::ocl::selectOpenCLDevice()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x941); + cv::String::deallocate((String *)&local_888); + } + else { + /* try { // try from 0035bde8 to 0045bdeb has its CatchHandler @ 0035c114 */ + /* try { // try from 0035bdf0 to 0045be83 has its CatchHandler @ 0035bc54 */ + FUN_00412b08(&local_898,0,*(undefined8 *)(local_898 + -0x18),0); + if (local_8d8 != 0) { + uVar37 = local_8d8 + 1; + local_828 = 0x408; + plVar25 = alStack_820; + if (0x408 < uVar37) { + local_830 = alStack_820; + plVar25 = operator_new__(uVar37); + } + local_830 = plVar25; + local_828 = uVar37; + iVar18 = FUN_0034d464(uVar33,0x102b,local_8d8,plVar25,0); + if (iVar18 != 0) { + if ((local_830 != alStack_820) && (local_830 != (long *)0x0)) { + operator_delete__(local_830); + } + goto LAB_0035ba48; + } + sVar26 = strlen((char *)plVar25); + FUN_00412fdc(&local_898,plVar25,sVar26); + plVar25 = local_830; + if (local_830 != alStack_820) goto LAB_0035bd74; + } + } + } + iVar18 = FUN_00412830(&local_8b8,&DAT_0046e220); + if ((iVar18 != 0) && (iVar18 = FUN_00412830(&local_8b8,&DAT_0046e228), iVar18 != 0)) { + if (!bVar28) { + uVar32 = 1; + goto LAB_0035bb44; + } +LAB_0035bd9c: + uVar33 = *(undefined8 *)((long)local_848 + lVar20); + if (local_898 + -0x18 != PTR_DAT_00501f30) { + FUN_0034d640(local_898 + -0x18,&local_418); + } + if (local_848 != (void *)0x0) { + operator_delete(local_848); + } + if ((undefined *)(local_8b8 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_8b8 + -0x18),&local_418); + } + goto LAB_0035b290; + } + local_418 = (long *)((ulong)local_418 & 0xffffffff00000000); + FUN_0034d464(*(undefined8 *)((long)local_848 + lVar20),0x1035,4,&local_418,0); + /* try { // try from 0035baf4 to 0045baf7 has its CatchHandler @ 0035b5cc */ + iVar18 = FUN_00412830(&local_8b8,&DAT_0046e220); + /* catch() { ... } // from try @ 0035b884 with catch @ 0035baf8 + catch() { ... } // from try @ 0035b8e8 with catch @ 0035baf8 */ + uVar32 = (uint)local_418; + if (iVar18 == 0) { + /* catch() { ... } // from try @ 0035b85c with catch @ 0035bb00 + catch() { ... } // from try @ 0035b95c with catch @ 0035bb00 + catch() { ... } // from try @ 0035b9fc with catch @ 0035bb00 */ + /* catch() { ... } // from try @ 0035bb58 with catch @ 0035bb08 + catch() { ... } // from try @ 0035bbac with catch @ 0035bb08 + catch() { ... } // from try @ 0035bc50 with catch @ 0035bb08 */ + uVar32 = (uint)((uint)local_418 == 0); + } + if (bVar28) { +LAB_0035bb14: + if (uVar32 != 0) goto LAB_0035bd9c; + puVar30 = local_898 + -0x18; + if (puVar30 != PTR_DAT_00501f30) { +LAB_0035bb80: + piVar29 = (int *)(local_898 + -8); + do { + iVar18 = *piVar29; + cVar16 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar29,0x10); + if (bVar3) { + *piVar29 = iVar18 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar18 < 1) { + operator_delete(puVar30); + /* try { // try from 0035bba4 to 0045bba7 has its CatchHandler @ 0035bc40 */ + } + } + } + else { +LAB_0035bb44: + /* try { // try from 0035bb58 to 0045bb5b has its CatchHandler @ 0035bb08 */ + lVar23 = FUN_00411a6c(&local_898,local_910,0,*(undefined8 *)(local_910 + -0x18)); + if (lVar23 != -1) goto LAB_0035bb14; + puVar30 = local_898 + -0x18; + if (puVar30 != PTR_DAT_00501f30) goto LAB_0035bb80; + } + lVar20 = lVar20 + 8; + uVar38 = uVar38 + 1; + } while( true ); + } + if (bVar28) { + /* try { // try from 0035c0fc to 0045c0ff has its CatchHandler @ 0035bc54 */ + /* catch() { ... } // from try @ 0035beac with catch @ 0035c100 */ + /* try { // try from 0035c110 to 0045c113 has its CatchHandler @ 0035bc54 */ + FUN_00410a08((string *)&local_8f8,&DAT_0046e210,&local_830); + /* catch() { ... } // from try @ 0035bde8 with catch @ 0035c114 */ + std::vector>::push_back + ((vector> *)&local_878, + (string *)&local_8f8); + /* try { // try from 0035c124 to 0045c127 has its CatchHandler @ 0035bc54 */ + /* catch() { ... } // from try @ 0035bf90 with catch @ 0035c128 */ + if ((undefined *)(local_8f8 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_8f8 + -0x18),&local_418); + } + /* try { // try from 0035c138 to 0045c13b has its CatchHandler @ 0035bc54 */ + /* catch() { ... } // from try @ 0035c0c0 with catch @ 0035c13c */ + if ((long)local_870 - (long)local_878 >> 3 != 0) goto LAB_0035b6a4; + goto LAB_0035c0f0; + } + /* try { // try from 0035b494 to 0045b497 has its CatchHandler @ 0035b0b8 */ + FUN_00410a08((string *)&local_908,&DAT_0046e1c0,&local_830); + std::vector>::push_back + ((vector> *)&local_878,(string *)&local_908) + ; + /* catch() { ... } // from try @ 0035b4f8 with catch @ 0035b4bc + catch() { ... } // from try @ 0035b530 with catch @ 0035b4bc + catch() { ... } // from try @ 0035b5a4 with catch @ 0035b4bc */ + if ((undefined *)(local_908 + -0x18) != PTR_DAT_00501f30) { + /* catch() { ... } // from try @ 0035c4b8 with catch @ 0035c28c + catch() { ... } // from try @ 0035c510 with catch @ 0035c28c + catch() { ... } // from try @ 0035c550 with catch @ 0035c28c */ + FUN_0034d640((undefined *)(local_908 + -0x18),&local_418); + } + if (__s1 == (char *)0x0) { + if ((long)local_870 - (long)local_878 >> 3 != 0) goto LAB_0035b6a4; + goto LAB_0035b28c; + } + FUN_00410a08((string *)&local_900,&DAT_0046e1c8,&local_830); + std::vector>::push_back + ((vector> *)&local_878,(string *)&local_900) + ; + /* try { // try from 0035b4f8 to 0045b4fb has its CatchHandler @ 0035b4bc */ + if ((undefined *)(local_900 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_900 + -0x18),&local_418); + } + if ((long)local_870 - (long)local_878 >> 3 != 0) goto LAB_0035b6a4; + } + else { + lVar34 = 0; + uVar19 = 0; + if (local_858 - (long)local_860 >> 3 != 0) { + do { + local_418 = (long *)(PTR_DAT_00501f30 + 0x18); + cVar16 = FUN_00350224(); + if (cVar16 == '\0') { + FUN_0034e3d4(*(undefined8 *)((long)local_860 + lVar34),&local_418); + } + else { + iVar18 = FUN_0034e3d4(*(undefined8 *)((long)local_860 + lVar34),&local_418); + if (iVar18 != 0) { + local_848 = (void *)0x0; + local_840 = (void *)0x0; + pcVar22 = (char *)cv::String::allocate((String *)&local_848,0x41); + uVar13 = s_getStringInfo_clGetPlatformInfo__0046e178._56_8_; + uVar12 = s_getStringInfo_clGetPlatformInfo__0046e178._48_8_; + uVar11 = s_getStringInfo_clGetPlatformInfo__0046e178._40_8_; + uVar10 = s_getStringInfo_clGetPlatformInfo__0046e178._32_8_; + uVar6 = s_getStringInfo_clGetPlatformInfo__0046e178._24_8_; + uVar5 = s_getStringInfo_clGetPlatformInfo__0046e178._16_8_; + uVar35 = s_getStringInfo_clGetPlatformInfo__0046e178._8_8_; + uVar33 = s_getStringInfo_clGetPlatformInfo__0046e178._0_8_; + pcVar22[0x40] = s_getStringInfo_clGetPlatformInfo__0046e178[0x40]; + *(undefined8 *)pcVar22 = uVar33; + *(undefined8 *)(pcVar22 + 8) = uVar35; + *(undefined8 *)(pcVar22 + 0x10) = uVar5; + *(undefined8 *)(pcVar22 + 0x18) = uVar6; + *(undefined8 *)(pcVar22 + 0x20) = uVar10; + *(undefined8 *)(pcVar22 + 0x28) = uVar11; + *(undefined8 *)(pcVar22 + 0x30) = uVar12; + *(undefined8 *)(pcVar22 + 0x38) = uVar13; + cv::error(-0xd7,(String *)&local_848,"_cl_device_id* cv::ocl::selectOpenCLDevice()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x900); + cv::String::deallocate((String *)&local_848); + } + } + lVar20 = FUN_00411a6c(&local_418,local_918,0,*(undefined8 *)(local_918 + -0x18)); + if (lVar20 != -1) { + uVar39 = (uint)uVar19; + if (local_418 + -3 != (long *)PTR_DAT_00501f30) { + FUN_0034d640(local_418 + -3,&local_830); + } + if (uVar39 != 0xffffffff) goto LAB_0035b470; + break; + } + if (local_418 + -3 != (long *)PTR_DAT_00501f30) { + FUN_0034d640(local_418 + -3,&local_830); + } + /* try { // try from 0035b37c to 0045b37f has its CatchHandler @ 0035b484 */ + uVar19 = uVar19 + 1; + /* try { // try from 0035b384 to 0045b433 has its CatchHandler @ 0035b0b8 */ + lVar34 = lVar34 + 8; + } while (uVar19 < (ulong)(local_858 - (long)local_860 >> 3)); + } + /* try { // try from 0035c0c0 to 0045c0c3 has its CatchHandler @ 0035c13c */ + /* try { // try from 0035c0c8 to 0045c0cb has its CatchHandler @ 0035bc54 */ + FUN_003f1ad0(PTR_DAT_00501c50,"ERROR: Can\'t find OpenCL platform by name: ",0x2b); + FUN_003f1ad0(PTR_DAT_00501c50,local_918,*(undefined8 *)(local_918 + -0x18)); + /* catch() { ... } // from try @ 0035bd00 with catch @ 0035c0ec */ + FUN_003f18d4(); +LAB_0035c0f0: + if (__s1 == (char *)0x0) goto LAB_0035b28c; + } + /* try { // try from 0035b528 to 0045b52b has its CatchHandler @ 0035b594 */ + /* try { // try from 0035b530 to 0045b563 has its CatchHandler @ 0035b4bc */ + uVar33 = FUN_003f1f84(PTR_DAT_00501c50, + "ERROR: Requested OpenCL device not found, check configuration: "); + FUN_003f1f84(uVar33,__s1); + uVar33 = FUN_003f18d4(); + uVar33 = FUN_003f1f84(uVar33," Platform: "); + if (*(long *)(local_918 + -0x18) == 0) { + FUN_00410a08(&local_8f0,&DAT_0046e308,auStack_928); + } + else { + FUN_00414378(&local_8f0,&local_918); + /* try { // try from 0035c288 to 0045c28b has its CatchHandler @ 0035c150 */ + } + FUN_003f1ad0(uVar33,local_8f0,*(undefined8 *)(local_8f0 + -0x18)); + uVar33 = FUN_003f18d4(); + /* catch() { ... } // from try @ 0035b528 with catch @ 0035b594 */ + FUN_003f1f84(uVar33," Device types: "); + /* try { // try from 0035b5a4 to 0045b5a7 has its CatchHandler @ 0035b4bc */ + if ((undefined *)(local_8f0 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_8f0 + -0x18),&local_418); + } + uVar19 = 0; + /* catch() { ... } // from try @ 0035b60c with catch @ 0035b5cc + catch() { ... } // from try @ 0035b650 with catch @ 0035b5cc + catch() { ... } // from try @ 0035b9d0 with catch @ 0035b5cc + catch() { ... } // from try @ 0035ba1c with catch @ 0035b5cc + catch() { ... } // from try @ 0035ba70 with catch @ 0035b5cc + catch() { ... } // from try @ 0035ba8c with catch @ 0035b5cc + catch() { ... } // from try @ 0035baa0 with catch @ 0035b5cc + catch() { ... } // from try @ 0035baf4 with catch @ 0035b5cc */ + if ((long)local_870 - (long)local_878 >> 3 != 0) { + do { + uVar33 = FUN_003f1ad0(PTR_DAT_00501c50,local_878[uVar19], + *(undefined8 *)(local_878[uVar19] + -0x18)); + FUN_003f1ad0(uVar33,&LAB_0046e338,1); + uVar19 = uVar19 + 1; + } while (uVar19 < (ulong)((long)local_870 - (long)local_878 >> 3)); + } + /* try { // try from 0035b60c to 0045b60f has its CatchHandler @ 0035b5cc */ + uVar33 = FUN_003f18d4(PTR_DAT_00501c50); + FUN_003f1ad0(uVar33,&DAT_0046e328,0x11); + if (*(long *)(local_910 + -0x18) == 0) { + /* try { // try from 0035b648 to 0045b64b has its CatchHandler @ 0035ba90 */ + FUN_00410a08(&local_8e8,&DAT_0046e308,auStack_920); + /* try { // try from 0035b650 to 0045b843 has its CatchHandler @ 0035b5cc */ + } + else { + /* try { // try from 0035c26c to 0045c26f has its CatchHandler @ 0035c150 */ + FUN_00414378(&local_8e8,&local_910); + /* catch() { ... } // from try @ 0035c264 with catch @ 0035c278 */ + } + FUN_003f1ad0(uVar33,local_8e8,*(undefined8 *)(local_8e8 + -0x18)); + FUN_003f18d4(); + if ((undefined *)(local_8e8 + -0x18) != PTR_DAT_00501f30) { + FUN_0034d640((undefined *)(local_8e8 + -0x18),&local_418); + } + } +LAB_0035b28c: + uVar33 = 0; +LAB_0035b290: + plVar24 = local_878; + plVar4 = local_870; + plVar15 = local_870; + plVar25 = local_870; + if (local_860 != (void *)0x0) { + operator_delete(local_860); + plVar24 = local_878; + plVar4 = local_870; + plVar15 = local_870; + plVar25 = local_870; + } +joined_r0x0035afa8: + do { + while( true ) { + local_870 = plVar15; + plVar15 = local_870; + if (local_870 == plVar24) { + local_870 = plVar25; + if (plVar4 != (long *)0x0) { + operator_delete(plVar4); + } + if (local_910 + -0x18 != PTR_DAT_00501f30) { + FUN_0034d640(local_910 + -0x18,&local_418); + } + if (local_918 + -0x18 != PTR_DAT_00501f30) { + FUN_0034d640(local_918 + -0x18,&local_418); + } + return uVar33; + } + puVar30 = (undefined *)(*plVar24 + -0x18); + if (puVar30 != PTR_DAT_00501f30) break; +LAB_0035afb4: + plVar24 = plVar24 + 1; + plVar4 = local_878; + } + piVar29 = (int *)(*plVar24 + -8); + do { + iVar17 = *piVar29; + cVar16 = '\x01'; + bVar28 = (bool)ExclusiveMonitorPass(piVar29,0x10); + if (bVar28) { + *piVar29 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (0 < iVar17) goto LAB_0035afb4; + local_870 = plVar25; + operator_delete(puVar30); + plVar24 = plVar24 + 1; + plVar4 = local_878; + plVar25 = local_870; + } while( true ); +LAB_0035b954: + if (local_848 != (void *)0x0) { + operator_delete(local_848); + } + /* try { // try from 0035b95c to 0045b95f has its CatchHandler @ 0035bb00 */ + if ((undefined *)(local_8b8 + -0x18) != PTR_DAT_00501f30) { + /* try { // try from 0035c264 to 0045c267 has its CatchHandler @ 0035c278 */ + FUN_0034d640((undefined *)(local_8b8 + -0x18),&local_418); + } + local_950 = local_950 + 1; + if ((ulong)((long)local_870 - (long)local_878 >> 3) <= local_950) goto LAB_0035c0f0; + goto LAB_0035b730; +} + + +================================================================== + +### FUNC 0035c558 (840 bytes) name=_M_fill_insert + +/* std::vector + >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, cv::ocl::Device const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,Device *param_2, + ulong param_3,Device *param_4) + +{ + Device *pDVar1; + long lVar2; + long lVar3; + Device *pDVar4; + ulong uVar5; + Device *pDVar6; + Device *pDVar7; + long lVar8; + Device *pDVar9; + ulong uVar10; + Device aDStack_8 [8]; + + if (param_3 == 0) { + return; + } + if (param_3 <= (ulong)(*(long *)(this + 0x10) - *(long *)(this + 8) >> 3)) { + cv::ocl::Device::Device(aDStack_8,param_4); + pDVar4 = *(Device **)(this + 8); + lVar3 = (long)pDVar4 - (long)param_2; + /* try { // try from 0035c6fc to 0045c6ff has its CatchHandler @ 0035c8bc */ + if (param_3 < (ulong)(lVar3 >> 3)) { + /* try { // try from 0035c704 to 0045c733 has its CatchHandler @ 0035c554 */ + pDVar9 = pDVar4 + param_3 * -8; + pDVar6 = pDVar9; + pDVar7 = pDVar4; + if (pDVar9 != pDVar4) { + do { + if (pDVar7 != (Device *)0x0) { + cv::ocl::Device::Device(pDVar7,pDVar6); + } + pDVar6 = pDVar6 + 8; + pDVar7 = pDVar7 + 8; + } while (pDVar4 != pDVar6); + pDVar6 = *(Device **)(this + 8); + } + *(Device **)(this + 8) = pDVar6 + param_3 * 8; + pDVar6 = pDVar4 + -((long)pDVar9 - (long)param_2); + if (7 < (long)pDVar9 - (long)param_2) { + do { + pDVar4 = pDVar4 + -8; + pDVar9 = pDVar9 + -8; + cv::ocl::Device::operator=(pDVar4,pDVar9); + } while (pDVar4 != pDVar6); + } + pDVar4 = param_2 + param_3 * 8; + /* try { // try from 0035c774 to 0045c777 has its CatchHandler @ 0035c8a8 */ + for (; param_2 != pDVar4; param_2 = param_2 + 8) { + /* try { // try from 0035c77c to 0045c79b has its CatchHandler @ 0035c554 */ + cv::ocl::Device::operator=(param_2,aDStack_8); + } + } + else { + lVar2 = param_3 - (lVar3 >> 3); + pDVar6 = pDVar4; + lVar8 = lVar2; + if (lVar2 != 0) { + do { + if (pDVar6 != (Device *)0x0) { + cv::ocl::Device::Device(pDVar6,aDStack_8); + } + /* try { // try from 0035c7dc to 0045c7df has its CatchHandler @ 0035c894 */ + lVar8 = lVar8 + -1; + pDVar6 = pDVar6 + 8; + /* try { // try from 0035c7e4 to 0045c803 has its CatchHandler @ 0035c554 */ + } while (lVar8 != 0); + pDVar6 = *(Device **)(this + 8); + } + pDVar6 = pDVar6 + lVar2 * 8; + *(Device **)(this + 8) = pDVar6; + pDVar7 = param_2; + if (param_2 != pDVar4) { + do { + if (pDVar6 != (Device *)0x0) { + cv::ocl::Device::Device(pDVar6,pDVar7); + } + pDVar7 = pDVar7 + 8; + pDVar6 = pDVar6 + 8; + } while (pDVar4 != pDVar7); + *(long *)(this + 8) = *(long *)(this + 8) + lVar3; + do { + cv::ocl::Device::operator=(param_2,aDStack_8); + param_2 = param_2 + 8; + /* try { // try from 0035c844 to 0045c847 has its CatchHandler @ 0035c880 */ + } while (pDVar4 != param_2); + cv::ocl::Device::~Device(aDStack_8); + return; + } + /* catch() { ... } // from try @ 0035c64c with catch @ 0035c86c */ + *(Device **)(this + 8) = pDVar6 + lVar3; + } + cv::ocl::Device::~Device(aDStack_8); + return; + } + lVar3 = *(long *)this; + uVar5 = *(long *)(this + 8) - lVar3 >> 3; + if (0x1fffffffffffffff - uVar5 < param_3) { + /* try { // try from 0035c9f8 to 0045c9fb has its CatchHandler @ 0035c8d0 */ + /* WARNING: Subroutine does not return */ + /* catch() { ... } // from try @ 0035ca54 with catch @ 0035c9fc + catch() { ... } // from try @ 0035ca7c with catch @ 0035c9fc + catch() { ... } // from try @ 0035cb94 with catch @ 0035c9fc + catch() { ... } // from try @ 0035cdc4 with catch @ 0035c9fc + catch() { ... } // from try @ 0035cdd8 with catch @ 0035c9fc */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar10 = uVar5; + if (uVar5 < param_3) { + uVar10 = param_3; + } + uVar10 = uVar10 + uVar5; + if ((uVar10 < uVar5) || (0x1fffffffffffffff < uVar10)) { + lVar3 = (long)param_2 - lVar3; + uVar10 = 0x1fffffffffffffff; + uVar5 = 0xfffffffffffffff8; + } + else { + lVar3 = (long)param_2 - lVar3; + if (uVar10 == 0) { + pDVar4 = (Device *)0x0; + goto LAB_0035c5ec; + } + /* try { // try from 0035c8b8 to 0045c8bb has its CatchHandler @ 0035c554 */ + uVar5 = uVar10 * 8; + /* catch() { ... } // from try @ 0035c6fc with catch @ 0035c8bc */ + } + pDVar4 = operator_new(uVar5); +LAB_0035c5ec: + pDVar6 = pDVar4 + lVar3; + uVar5 = param_3; + do { + if (pDVar6 != (Device *)0x0) { + cv::ocl::Device::Device(pDVar6,param_4); + } + /* try { // try from 0035c608 to 0045c60b has its CatchHandler @ 0035c554 */ + uVar5 = uVar5 - 1; + pDVar6 = pDVar6 + 8; + } while (uVar5 != 0); + pDVar7 = pDVar4; + for (pDVar6 = *(Device **)this; param_2 != pDVar6; pDVar6 = pDVar6 + 8) { + if (pDVar7 != (Device *)0x0) { + cv::ocl::Device::Device(pDVar7,pDVar6); + } + pDVar7 = pDVar7 + 8; + } + pDVar6 = *(Device **)(this + 8); + pDVar7 = pDVar7 + param_3 * 8; + /* try { // try from 0035c64c to 0045c64f has its CatchHandler @ 0035c86c */ + if (param_2 != pDVar6) { + do { + if (pDVar7 != (Device *)0x0) { + cv::ocl::Device::Device(pDVar7,param_2); + } + param_2 = param_2 + 8; + pDVar7 = pDVar7 + 8; + } while (pDVar6 != param_2); + pDVar6 = *(Device **)(this + 8); + } + pDVar9 = *(Device **)this; + if (*(Device **)this != pDVar6) { + do { + pDVar1 = pDVar9 + 8; + cv::ocl::Device::~Device(pDVar9); + pDVar9 = pDVar1; + } while (pDVar6 != pDVar1); + pDVar6 = *(Device **)this; + } + if (pDVar6 != (Device *)0x0) { + operator_delete(pDVar6); + } + /* try { // try from 0035c6b0 to 0045c6b3 has its CatchHandler @ 0035c554 */ + *(Device **)this = pDVar4; + *(Device **)(this + 8) = pDVar7; + *(Device **)(this + 0x10) = pDVar4 + uVar10 * 8; + return; +} + + +================================================================== + +### FUNC 0035ca38 (1516 bytes) name=FUN_0035ca38 + +void FUN_0035ca38(undefined4 *param_1,uint param_2) + +{ + undefined8 *puVar1; + uint uVar2; + uint uVar3; + Device *pDVar4; + Device *this; + bool bVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined4 uVar10; + undefined8 uVar11; + char cVar12; + int iVar13; + Platform *this_00; + undefined8 uVar14; + undefined1 *puVar15; + char *__s1; + int *piVar16; + long lVar17; + char *pcVar18; + ulong uVar19; + Device *pDVar20; + uint uVar21; + int local_498; + uint local_494; + Device aDStack_490 [8]; + char *local_488; + undefined8 local_480; + char *local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + undefined8 local_458; + undefined1 *local_450; + ulong local_448; + undefined1 auStack_440 [1088]; + + /* try { // try from 0035ca54 to 0045ca57 has its CatchHandler @ 0035c9fc */ + /* try { // try from 0035ca74 to 0045ca77 has its CatchHandler @ 0035cdb4 */ + /* try { // try from 0035ca7c to 0045cb3b has its CatchHandler @ 0035c9fc */ + *(undefined8 *)(param_1 + 4) = 0; + *(undefined8 *)(param_1 + 6) = 0; + *(undefined8 *)(param_1 + 8) = 0; + param_1[0xc] = 0; + *(undefined8 *)(param_1 + 0xe) = 0; + *(undefined4 **)(param_1 + 0x10) = param_1 + 0xc; + *(undefined4 **)(param_1 + 0x12) = param_1 + 0xc; + *(undefined8 *)(param_1 + 0x14) = 0; + *param_1 = 1; + *(undefined8 *)(param_1 + 2) = 0; + local_498 = 0; + this_00 = (Platform *)cv::ocl::Platform::getDefault(); + uVar14 = cv::ocl::Platform::ptr(this_00); + uVar21 = param_2 & 0xf; + local_458 = 0; + local_468 = 0x1084; + local_494 = 0; + local_460 = uVar14; + cVar12 = FUN_00350224(); + if (cVar12 == '\0') { + if ((DAT_00532120 != (code *)0x0) || + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 != (code *)0x0)) { + /* try { // try from 0035ce6c to 0045ce6f has its CatchHandler @ 0035d0a0 */ + /* try { // try from 0035ce74 to 0045cea3 has its CatchHandler @ 0035cddc */ + (*DAT_00532120)(uVar14,uVar21,0,0,&local_494); + } + } + else if (((DAT_00532120 == (code *)0x0) && + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 == (code *)0x0)) || + (iVar13 = (*DAT_00532120)(uVar14,uVar21,0,0,&local_494), iVar13 != 0)) { + local_450 = (undefined1 *)0x0; + local_448 = 0; + pcVar18 = (char *)cv::String::allocate((String *)&local_450,0x2c); + uVar10 = s_clGetDeviceIDs__pl__dtype__0__0__0046e348._40_4_; + uVar9 = s_clGetDeviceIDs__pl__dtype__0__0__0046e348._24_8_; + uVar8 = s_clGetDeviceIDs__pl__dtype__0__0__0046e348._16_8_; + uVar7 = s_clGetDeviceIDs__pl__dtype__0__0__0046e348._8_8_; + uVar6 = s_clGetDeviceIDs__pl__dtype__0__0__0046e348._0_8_; + *(undefined8 *)(pcVar18 + 0x20) = s_clGetDeviceIDs__pl__dtype__0__0__0046e348._32_8_; + *(undefined4 *)(pcVar18 + 0x28) = uVar10; + *(undefined8 *)pcVar18 = uVar6; + *(undefined8 *)(pcVar18 + 8) = uVar7; + *(undefined8 *)(pcVar18 + 0x10) = uVar8; + *(undefined8 *)(pcVar18 + 0x18) = uVar9; + cv::error(-0xd7,(String *)&local_450,"cv::ocl::Context::Impl::Impl(int)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x9e2); + cv::String::deallocate((String *)&local_450); + } + uVar2 = local_494 * 2 + 1; + puVar15 = auStack_440; + local_448 = 0x88; + if (0x88 < uVar2) { + local_450 = puVar15; + puVar15 = operator_new__((ulong)uVar2 << 3); + } + puVar1 = (undefined8 *)(puVar15 + (ulong)local_494 * 8); + local_450 = puVar15; + local_448 = (ulong)uVar2; + /* try { // try from 0035cb8c to 0045cb8f has its CatchHandler @ 0035cdc8 */ + cVar12 = FUN_00350224(); + uVar2 = local_494; + /* try { // try from 0035cb94 to 0045cda3 has its CatchHandler @ 0035c9fc */ + if (cVar12 == '\0') { + if ((DAT_00532120 != (code *)0x0) || + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 != (code *)0x0)) { + (*DAT_00532120)(uVar14,uVar21,uVar2,puVar15,&local_494); + } + } + else if (((DAT_00532120 == (code *)0x0) && + (DAT_00532120 = (code *)FUN_0034d2bc("clGetDeviceIDs"), DAT_00532120 == (code *)0x0)) || + (iVar13 = (*DAT_00532120)(uVar14,uVar21,uVar2,puVar15,&local_494), iVar13 != 0)) { + /* try { // try from 0035cec0 to 0045cec3 has its CatchHandler @ 0035d0b4 */ + local_478 = (char *)0x0; + /* try { // try from 0035cec8 to 0045cecb has its CatchHandler @ 0035cddc */ + local_470 = 0; + pcVar18 = (char *)cv::String::allocate((String *)&local_478,0x32); + uVar11 = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._40_8_; + uVar9 = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._32_8_; + uVar8 = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._24_8_; + uVar7 = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._16_8_; + uVar6 = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._8_8_; + uVar14 = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._0_8_; + *(undefined2 *)(pcVar18 + 0x30) = s_clGetDeviceIDs__pl__dtype__nd0__d_0046e378._48_2_; + *(undefined8 *)pcVar18 = uVar14; + *(undefined8 *)(pcVar18 + 8) = uVar6; + *(undefined8 *)(pcVar18 + 0x10) = uVar7; + *(undefined8 *)(pcVar18 + 0x18) = uVar8; + *(undefined8 *)(pcVar18 + 0x20) = uVar9; + *(undefined8 *)(pcVar18 + 0x28) = uVar11; + cv::error(-0xd7,(String *)&local_478,"cv::ocl::Context::Impl::Impl(int)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x9e7); + cv::String::deallocate((String *)&local_478); + } + local_488 = (char *)0x0; + local_480 = 0; + if (local_494 != 0) { + uVar19 = 0; + uVar21 = 0; + do { + while( true ) { + cv::ocl::Device::Device(aDStack_490,*(void **)(puVar15 + uVar19 * 8)); + cVar12 = cv::ocl::Device::available(aDStack_490); + if ((cVar12 != '\0') && + (cVar12 = cv::ocl::Device::compilerAvailable(aDStack_490), cVar12 != '\0')) break; +LAB_0035cbf8: + cv::ocl::Device::~Device(aDStack_490); + uVar2 = (int)uVar19 + 1; + uVar19 = (ulong)uVar2; + if (local_494 <= uVar2) goto LAB_0035cd00; + } + if (param_2 == 0x10004) { + cVar12 = cv::ocl::Device::hostUnifiedMemory(aDStack_490); + if (cVar12 == '\0') goto LAB_0035cc64; + goto LAB_0035cbf8; + } + if ((param_2 == 0x20004) && + (cVar12 = cv::ocl::Device::hostUnifiedMemory(aDStack_490), cVar12 == '\0')) + goto LAB_0035cbf8; +LAB_0035cc64: + cv::ocl::Device::name(); + if ((uVar21 != 0) && (local_488 != local_478)) { + pcVar18 = local_488; + if (local_478 == (char *)0x0) { + __s1 = ""; + if (local_488 == (char *)0x0) goto LAB_0035cc94; + } + else { + __s1 = local_478; + if (local_488 == (char *)0x0) { + pcVar18 = ""; + } + } + iVar13 = strcmp(__s1,pcVar18); + if (iVar13 != 0) { + cv::String::deallocate((String *)&local_478); + /* try { // try from 0035ce18 to 0045ce1b has its CatchHandler @ 0035cddc */ + goto LAB_0035cbf8; + } + } +LAB_0035cc94: + cv::String::deallocate((String *)&local_488); + if (local_478 != (char *)0x0) { + piVar16 = (int *)(local_478 + -4); + do { + cVar12 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar5) { + *piVar16 = *piVar16 + 1; + cVar12 = ExclusiveMonitorsStatus(); + } + } while (cVar12 != '\0'); + } + uVar2 = uVar21 + 1; + local_488 = local_478; + local_480 = local_470; + puVar1[uVar21] = *(undefined8 *)(puVar15 + uVar19 * 8); + cv::String::deallocate((String *)&local_478); + cv::ocl::Device::~Device(aDStack_490); + uVar3 = (int)uVar19 + 1; + uVar19 = (ulong)uVar3; + uVar21 = uVar2; + } while (uVar3 < local_494); +LAB_0035cd00: + if (uVar21 != 0) { + if ((DAT_00532108 == (code *)0x0) && + (DAT_00532108 = (code *)FUN_0034d2bc("clCreateContext"), DAT_00532108 == (code *)0x0)) { + *(undefined8 *)(param_1 + 2) = 0; + local_498 = -1000; + } + else { + lVar17 = (*DAT_00532108)(&local_468,1,puVar1,0,0,&local_498); + *(long *)(param_1 + 2) = lVar17; + if ((lVar17 != 0) && (local_498 == 0)) { + cv::ocl::Device::Device(aDStack_490); + pDVar20 = *(Device **)(param_1 + 6); + uVar19 = (long)pDVar20 - *(long *)(param_1 + 4) >> 3; + if (uVar19 == 0) { + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 4), + pDVar20,1,aDStack_490); + } + else if (1 < uVar19) { + pDVar4 = (Device *)(*(long *)(param_1 + 4) + 8); + for (this = pDVar4; pDVar20 != this; this = this + 8) { + cv::ocl::Device::~Device(this); + } + *(Device **)(param_1 + 6) = pDVar4; + } + cv::ocl::Device::~Device(aDStack_490); + cv::ocl::Device::set(*(Device **)(param_1 + 4),(void *)*puVar1); + } + } + } + } + cv::String::deallocate((String *)&local_488); + /* catch() { ... } // from try @ 0035ca74 with catch @ 0035cdb4 */ + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + /* try { // try from 0035cdc4 to 0045cdc7 has its CatchHandler @ 0035c9fc */ + operator_delete__(local_450); + } + /* catch() { ... } // from try @ 0035cb8c with catch @ 0035cdc8 */ + /* try { // try from 0035cdd8 to 0045cddb has its CatchHandler @ 0035c9fc */ + /* catch() { ... } // from try @ 0035ce18 with catch @ 0035cddc + catch() { ... } // from try @ 0035ce74 with catch @ 0035cddc + catch() { ... } // from try @ 0035cec8 with catch @ 0035cddc + catch() { ... } // from try @ 0035d0b0 with catch @ 0035cddc + catch() { ... } // from try @ 0035d0c4 with catch @ 0035cddc */ + return; +} + + +================================================================== + +### FUNC 0035d0e8 (400 bytes) name=create + +/* cv::ocl::Context::create(int) */ + +char __thiscall cv::ocl::Context::create(Context *this,int param_1) + +{ + int iVar1; + char cVar2; + bool bVar3; + char cVar4; + void *pvVar5; + Device *pDVar6; + long lVar7; + Device *pDVar8; + void *pvVar9; + Device *pDVar10; + int *piVar11; + + cVar4 = haveOpenCL(); + if (cVar4 != '\0') { + piVar11 = *(int **)this; + if (piVar11 != (int *)0x0) { + do { + iVar1 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar7 = *(long *)(piVar11 + 2); + if (lVar7 != 0) { + if ((DAT_005329b0 != (code *)0x0) || + (DAT_005329b0 = (code *)FUN_0034d2bc("clReleaseContext"), DAT_005329b0 != (code *)0x0)) + { + (*DAT_005329b0)(lVar7); + } + piVar11[2] = 0; + piVar11[3] = 0; + } + pDVar10 = *(Device **)(piVar11 + 6); + pDVar8 = *(Device **)(piVar11 + 4); + for (pDVar6 = pDVar8; pDVar6 != pDVar10; pDVar6 = pDVar6 + 8) { + Device::~Device(pDVar6); + } + *(Device **)(piVar11 + 6) = pDVar8; + pvVar5 = *(void **)(piVar11 + 0xe); + if (*(void **)(piVar11 + 0xe) != (void *)0x0) { + do { + /* try { // try from 0035d1e8 to 0045d1eb has its CatchHandler @ 0035d5fc */ + std:: + _Rb_tree,std::_Select1st>,std::less,std::allocator>> + ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> + *)(piVar11 + 10),*(_Rb_tree_node **)((long)pvVar5 + 0x18)); + pvVar9 = *(void **)((long)pvVar5 + 0x10); + /* try { // try from 0035d1f4 to 0045d353 has its CatchHandler @ 0035d0c8 */ + Program::~Program((Program *)((long)pvVar5 + 0x30)); + operator_delete(pvVar5); + pvVar5 = pvVar9; + } while (pvVar9 != (void *)0x0); + pDVar8 = *(Device **)(piVar11 + 6); + } + pDVar6 = *(Device **)(piVar11 + 4); + if (pDVar6 != pDVar8) { + do { + Device::~Device(pDVar6); + pDVar6 = pDVar6 + 8; + } while (pDVar6 != pDVar8); + pDVar8 = *(Device **)(piVar11 + 4); + } + if (pDVar8 != (Device *)0x0) { + operator_delete(pDVar8); + } + operator_delete(piVar11); + } + } + pvVar5 = operator_new(0x58); + FUN_0035ca38(pvVar5,param_1); + lVar7 = *(long *)((long)pvVar5 + 8); + *(void **)this = pvVar5; + /* try { // try from 0035d14c to 0045d19f has its CatchHandler @ 0035d0c8 */ + if (lVar7 == 0) { + cVar4 = '\0'; + FUN_00357d30(pvVar5); + operator_delete(pvVar5); + *(undefined8 *)this = 0; + } + } + return cVar4; +} + + +================================================================== + +### FUNC 0035d2f8 (8 bytes) name=Context + +/* cv::ocl::Context::Context(int) */ + +void __thiscall cv::ocl::Context::Context(Context *this,int param_1) + +{ + *(undefined8 *)this = 0; + create(this,param_1); + return; +} + + +================================================================== + +### FUNC 0035d300 (488 bytes) name=FUN_0035d300 + +void FUN_0035d300(long *param_1,undefined8 param_2,undefined8 param_3,void *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + int iVar5; + ulong uVar6; + long *plVar7; + char *pcVar8; + undefined8 uVar9; + Device *pDVar10; + Device *pDVar11; + long lVar12; + Device *pDVar13; + undefined8 local_10; + undefined8 local_8; + + lVar12 = *param_1; + if (*(long *)(lVar12 + 8) != 0) { + cVar4 = FUN_00350224(); + uVar9 = *(undefined8 *)(lVar12 + 8); + if (cVar4 == '\0') { + if ((DAT_005329b0 != (code *)0x0) || + (DAT_005329b0 = (code *)FUN_0034d2bc("clReleaseContext"), DAT_005329b0 != (code *)0x0)) { + /* try { // try from 0035d428 to 0045d42b has its CatchHandler @ 0035d638 */ + (*DAT_005329b0)(uVar9); + /* try { // try from 0035d430 to 0045d49f has its CatchHandler @ 0035d0c8 */ + } + } + else if (((DAT_005329b0 == (code *)0x0) && + (DAT_005329b0 = (code *)FUN_0034d2bc("clReleaseContext"), DAT_005329b0 == (code *)0x0)) + || (iVar5 = (*DAT_005329b0)(uVar9), iVar5 != 0)) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x23); + cVar4 = s_clReleaseContext_impl_>handle____0046e3c0[0x22]; + uVar3 = s_clReleaseContext_impl_>handle____0046e3c0._24_8_; + uVar2 = s_clReleaseContext_impl_>handle____0046e3c0._16_8_; + uVar1 = s_clReleaseContext_impl_>handle____0046e3c0._8_8_; + uVar9 = s_clReleaseContext_impl_>handle____0046e3c0._0_8_; + *(undefined2 *)(pcVar8 + 0x20) = s_clReleaseContext_impl_>handle____0046e3c0._32_2_; + pcVar8[0x22] = cVar4; + *(undefined8 *)pcVar8 = uVar9; + *(undefined8 *)(pcVar8 + 8) = uVar1; + /* try { // try from 0035d4bc to 0045d4bf has its CatchHandler @ 0035d5d4 */ + *(undefined8 *)(pcVar8 + 0x10) = uVar2; + *(undefined8 *)(pcVar8 + 0x18) = uVar3; + cv::error(-0xd7,(String *)&local_10, + "void cv::ocl::initializeContextFromHandle(cv::ocl::Context&, void*, void*, void*)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xb7a); + /* try { // try from 0035d4c4 to 0045d4eb has its CatchHandler @ 0035d0c8 */ + cv::String::deallocate((String *)&local_10); + } + } + pDVar10 = *(Device **)(lVar12 + 0x18); + pDVar13 = *(Device **)(lVar12 + 0x10); + for (pDVar11 = pDVar13; pDVar10 != pDVar11; pDVar11 = pDVar11 + 8) { + cv::ocl::Device::~Device(pDVar11); + } + *(Device **)(lVar12 + 0x18) = pDVar13; + *(undefined8 *)(lVar12 + 8) = param_3; + /* try { // try from 0035d394 to 0045d397 has its CatchHandler @ 0035d624 */ + cv::ocl::Device::Device((Device *)&local_10); + pDVar11 = *(Device **)(lVar12 + 0x18); + /* try { // try from 0035d39c to 0045d3e7 has its CatchHandler @ 0035d0c8 */ + uVar6 = (long)pDVar11 - *(long *)(lVar12 + 0x10) >> 3; + if (uVar6 == 0) { + std::vector>::_M_fill_insert + ((vector> *)(lVar12 + 0x10),pDVar11,1, + (Device *)&local_10); + } + else if (1 < uVar6) { + pDVar10 = (Device *)(*(long *)(lVar12 + 0x10) + 8); + for (pDVar13 = pDVar10; pDVar11 != pDVar13; pDVar13 = pDVar13 + 8) { + cv::ocl::Device::~Device(pDVar13); + } + *(Device **)(lVar12 + 0x18) = pDVar10; + } + cv::ocl::Device::~Device((Device *)&local_10); + cv::ocl::Device::set(*(Device **)(lVar12 + 0x10),param_4); + plVar7 = (long *)cv::ocl::Platform::getDefault(); + *(undefined8 *)(*plVar7 + 8) = param_2; + return; +} + + +================================================================== + +### FUNC 0035d510 (744 bytes) name=FUN_0035d510 + +void FUN_0035d510(long param_1) + +{ + Device *pDVar1; + Device *this; + void *pvVar2; + undefined4 uVar3; + undefined2 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + char *pcVar14; + long lVar15; + ulong uVar16; + Device *pDVar17; + int local_34; + void *local_30; + undefined8 local_28; + Device aDStack_20 [8]; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + if (*(long *)(param_1 + 8) != 0) { + /* try { // try from 0035d52c to 0045d52f has its CatchHandler @ 0035d610 */ + /* try { // try from 0035d534 to 0045d573 has its CatchHandler @ 0035d0c8 */ + local_18 = 0; + local_10 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_18,0xe); + uVar4 = s_handle____NULL_0046e3e8._12_2_; + uVar3 = s_handle____NULL_0046e3e8._8_4_; + *(undefined8 *)pcVar14 = s_handle____NULL_0046e3e8._0_8_; + *(undefined4 *)(pcVar14 + 8) = uVar3; + *(undefined2 *)(pcVar14 + 0xc) = uVar4; + cv::error(-0xd7,(String *)&local_18,"void cv::ocl::Context::Impl::setDefault()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x9b4); + cv::String::deallocate((String *)&local_18); + } + local_30 = (void *)FUN_0035aefc(); + if (local_30 == (void *)0x0) { + return; + } + local_28 = 0; + pvVar2 = local_30; + if (DAT_00532119 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + pvVar2 = local_30; + } + local_30 = pvVar2; + if (DAT_005329c8 == '\0') { + if ((DAT_00532990 != (code *)0x0) || + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 != (code *)0x0)) { + /* try { // try from 0035d6fc to 0045d8af has its CatchHandler @ 0035d64c */ + (*DAT_00532990)(pvVar2,0x1031,8,&local_28,0); + } + } + else { + /* try { // try from 0035d5c4 to 0045d5c7 has its CatchHandler @ 0035d5e8 */ + /* try { // try from 0035d5cc to 0045d5cf has its CatchHandler @ 0035d0c8 */ + /* catch() { ... } // from try @ 0035d4bc with catch @ 0035d5d4 */ + /* try { // try from 0035d5e4 to 0045d5e7 has its CatchHandler @ 0035d0c8 */ + if (((DAT_00532990 == (code *)0x0) && + (DAT_00532990 = (code *)FUN_0034d2bc("clGetDeviceInfo"), DAT_00532990 == (code *)0x0)) || + (iVar13 = (*DAT_00532990)(pvVar2,0x1031,8,&local_28,0), iVar13 != 0)) { + local_18 = 0; + local_10 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_18,0x44); + uVar12 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._56_8_; + uVar11 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._48_8_; + uVar10 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._40_8_; + uVar9 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._32_8_; + uVar8 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._24_8_; + uVar7 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._16_8_; + uVar6 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._8_8_; + uVar5 = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._0_8_; + *(undefined4 *)(pcVar14 + 0x40) = s_clGetDeviceInfo_d__0x1031__sizeo_0046e3f8._64_4_; + *(undefined8 *)pcVar14 = uVar5; + *(undefined8 *)(pcVar14 + 8) = uVar6; + *(undefined8 *)(pcVar14 + 0x10) = uVar7; + *(undefined8 *)(pcVar14 + 0x18) = uVar8; + *(undefined8 *)(pcVar14 + 0x20) = uVar9; + *(undefined8 *)(pcVar14 + 0x28) = uVar10; + *(undefined8 *)(pcVar14 + 0x30) = uVar11; + *(undefined8 *)(pcVar14 + 0x38) = uVar12; + cv::error(-0xd7,(String *)&local_18,"void cv::ocl::Context::Impl::setDefault()", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x9bc); + cv::String::deallocate((String *)&local_18); + } + } + /* try { // try from 0035d5f8 to 0045d5fb has its CatchHandler @ 0035d0c8 */ + local_18 = 0x1084; + /* catch() { ... } // from try @ 0035d1e8 with catch @ 0035d5fc */ + local_8 = 0; + local_10 = local_28; + /* try { // try from 0035d60c to 0045d60f has its CatchHandler @ 0035d0c8 */ + if ((DAT_00532108 != (code *)0x0) || + (DAT_00532108 = (code *)FUN_0034d2bc("clCreateContext"), DAT_00532108 != (code *)0x0)) { + /* catch() { ... } // from try @ 0035d52c with catch @ 0035d610 */ + /* try { // try from 0035d620 to 0045d623 has its CatchHandler @ 0035d0c8 */ + /* catch() { ... } // from try @ 0035d394 with catch @ 0035d624 */ + lVar15 = (*DAT_00532108)(&local_18,1,&local_30,0,0,&local_34); + *(long *)(param_1 + 8) = lVar15; + /* try { // try from 0035d634 to 0045d637 has its CatchHandler @ 0035d0c8 */ + /* catch() { ... } // from try @ 0035d428 with catch @ 0035d638 */ + if ((lVar15 != 0) && (local_34 == 0)) { + /* try { // try from 0035d648 to 0045d64b has its CatchHandler @ 0035d0c8 */ + cv::ocl::Device::Device(aDStack_20); + /* catch() { ... } // from try @ 0035d6fc with catch @ 0035d64c + catch() { ... } // from try @ 0035d900 with catch @ 0035d64c + catch() { ... } // from try @ 0035d9bc with catch @ 0035d64c + catch() { ... } // from try @ 0035da30 with catch @ 0035d64c + catch() { ... } // from try @ 0035da5c with catch @ 0035d64c + catch() { ... } // from try @ 0035da70 with catch @ 0035d64c + catch() { ... } // from try @ 0035da84 with catch @ 0035d64c */ + pDVar17 = *(Device **)(param_1 + 0x18); + uVar16 = (long)pDVar17 - *(long *)(param_1 + 0x10) >> 3; + if (uVar16 == 0) { + std::vector>::_M_fill_insert + ((vector> *)(param_1 + 0x10), + pDVar17,1,aDStack_20); + } + else if (1 < uVar16) { + pDVar1 = (Device *)(*(long *)(param_1 + 0x10) + 8); + for (this = pDVar1; pDVar17 != this; this = this + 8) { + cv::ocl::Device::~Device(this); + } + *(Device **)(param_1 + 0x18) = pDVar1; + } + cv::ocl::Device::~Device(aDStack_20); + cv::ocl::Device::set(*(Device **)(param_1 + 0x10),local_30); + return; + } + } + *(undefined8 *)(param_1 + 8) = 0; + return; +} + + +================================================================== + +### FUNC 0035d834 (248 bytes) name=getDefault + +/* cv::ocl::Context::getDefault(bool) */ + +Context * cv::ocl::Context::getDefault(bool param_1) + +{ + char cVar1; + int iVar2; + Context *this; + undefined4 *puVar3; + + this = DAT_00532960; + if (((DAT_00532010 & 1) == 0) && + (iVar2 = __cxa_guard_acquire(&DAT_00532010), this = DAT_00532960, iVar2 != 0)) { + this = operator_new(8); + Context(this); + DAT_00532960 = this; + __cxa_guard_release(&DAT_00532010); + } + if ((*(long *)this == 0) && (cVar1 = haveOpenCL(), this = DAT_00532960, cVar1 != '\0')) { + puVar3 = *(undefined4 **)DAT_00532960; + if (puVar3 == (undefined4 *)0x0) { + puVar3 = operator_new(0x58); + this = DAT_00532960; + /* try { // try from 0035d8f8 to 0045d8fb has its CatchHandler @ 0035da60 */ + *(undefined8 *)(puVar3 + 4) = 0; + *(undefined8 *)(puVar3 + 6) = 0; + /* try { // try from 0035d900 to 0045d973 has its CatchHandler @ 0035d64c */ + *(undefined8 *)(puVar3 + 8) = 0; + puVar3[0xc] = 0; + *(undefined8 *)(puVar3 + 0xe) = 0; + *(undefined8 *)(puVar3 + 0x14) = 0; + *(undefined8 *)(puVar3 + 2) = 0; + *(undefined4 **)(puVar3 + 0x10) = puVar3 + 0xc; + *(undefined4 **)(puVar3 + 0x12) = puVar3 + 0xc; + *puVar3 = 1; + *(undefined4 **)this = puVar3; + } + if ((param_1) && (*(long *)(puVar3 + 2) == 0)) { + FUN_0035d510(puVar3); + this = DAT_00532960; + } + } + return this; +} + + +================================================================== + +### FUNC 0035d954 (48 bytes) name=getDefault + +/* cv::ocl::Device::getDefault() */ + +void cv::ocl::Device::getDefault(void) + +{ + Context *this; + TLSDataContainer *this_00; + long lVar1; + + this = (Context *)Context::getDefault(true); + this_00 = (TLSDataContainer *)FUN_003b7ff8(); + lVar1 = TLSDataContainer::getData(this_00); + Context::device(this,(long)*(int *)(lVar1 + 8)); + return; +} + + +================================================================== + +### FUNC 0035d984 (124 bytes) name=useOpenCL + +/* cv::ocl::useOpenCL() */ + +bool cv::ocl::useOpenCL(void) + +{ + char cVar1; + byte bVar2; + TLSDataContainer *this; + long lVar3; + Device *pDVar4; + long lVar5; + + this = (TLSDataContainer *)FUN_003b7ff8(); + lVar3 = TLSDataContainer::getData(this); + if (-1 < *(int *)(lVar3 + 0x18)) { + return 0 < *(int *)(lVar3 + 0x18); + } + /* try { // try from 0035d9b4 to 0045d9b7 has its CatchHandler @ 0035da74 */ + cVar1 = haveOpenCL(); + /* try { // try from 0035d9bc to 0045d9e7 has its CatchHandler @ 0035d64c */ + if (cVar1 != '\0') { + pDVar4 = (Device *)Device::getDefault(); + lVar5 = Device::ptr(pDVar4); + if (lVar5 != 0) { + pDVar4 = (Device *)Device::getDefault(); + bVar2 = Device::available(pDVar4); + *(uint *)(lVar3 + 0x18) = (uint)bVar2; + return bVar2 != 0; + } + } + *(undefined4 *)(lVar3 + 0x18) = 0; + return false; +} + + +================================================================== + +### FUNC 0035da18 (108 bytes) name=setUseOpenCL + +/* cv::ocl::setUseOpenCL(bool) */ + +void cv::ocl::setUseOpenCL(bool param_1) + +{ + char cVar1; + TLSDataContainer *this; + long lVar2; + Device *this_00; + long lVar3; + + /* try { // try from 0035da28 to 0045da2b has its CatchHandler @ 0035da4c */ + cVar1 = haveOpenCL(); + /* try { // try from 0035da30 to 0045da47 has its CatchHandler @ 0035d64c */ + if (cVar1 == '\0') { + return; + } + this = (TLSDataContainer *)FUN_003b7ff8(); + lVar2 = TLSDataContainer::getData(this); + /* catch() { ... } // from try @ 0035da28 with catch @ 0035da4c */ + if (param_1) { + this_00 = (Device *)Device::getDefault(); + /* try { // try from 0035da70 to 0045da73 has its CatchHandler @ 0035d64c */ + lVar3 = Device::ptr(this_00); + /* catch() { ... } // from try @ 0035d9b4 with catch @ 0035da74 */ + *(uint *)(lVar2 + 0x18) = (uint)(lVar3 != 0); + } + else { + *(undefined4 *)(lVar2 + 0x18) = 0; + } + /* try { // try from 0035da5c to 0045da5f has its CatchHandler @ 0035d64c */ + /* catch() { ... } // from try @ 0035d8f8 with catch @ 0035da60 */ + return; +} + + +================================================================== + +### FUNC 0035da84 (172 bytes) name=workGroupSize + +/* cv::ocl::Kernel::workGroupSize() const */ + +undefined8 __thiscall cv::ocl::Kernel::workGroupSize(Kernel *this) + +{ + int iVar1; + Device *this_00; + undefined8 uVar2; + undefined8 uVar3; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 0035da84 to 0045da87 has its CatchHandler @ 0035d64c */ + /* catch() { ... } // from try @ 0035dae8 with catch @ 0035da88 + catch() { ... } // from try @ 0035db3c with catch @ 0035da88 + catch() { ... } // from try @ 0035ddc4 with catch @ 0035da88 + catch() { ... } // from try @ 0035de20 with catch @ 0035da88 + catch() { ... } // from try @ 0035de34 with catch @ 0035da88 */ + if ((*(long *)this != 0) && (*(long *)(*(long *)this + 8) != 0)) { + local_10 = 0; + local_8 = 0; + this_00 = (Device *)Device::getDefault(); + uVar2 = Device::ptr(this_00); + uVar3 = *(undefined8 *)(*(long *)this + 8); + if ((DAT_00532028 == (code *)0x0) && + (DAT_00532028 = (code *)FUN_0034d2bc(&LAB_0046e440,uVar2), DAT_00532028 == (code *)0x0)) { + return 0; + } + iVar1 = (*DAT_00532028)(uVar3,uVar2,0x11b0,8,&local_10,&local_8); + /* try { // try from 0035dae8 to 0045daeb has its CatchHandler @ 0035da88 */ + if (iVar1 == 0) { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035db30 (172 bytes) name=preferedWorkGroupSizeMultiple + +/* cv::ocl::Kernel::preferedWorkGroupSizeMultiple() const */ + +undefined8 __thiscall cv::ocl::Kernel::preferedWorkGroupSizeMultiple(Kernel *this) + +{ + int iVar1; + Device *this_00; + undefined8 uVar2; + undefined8 uVar3; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 0035db34 to 0045db37 has its CatchHandler @ 0035de10 */ + /* try { // try from 0035db3c to 0045dd73 has its CatchHandler @ 0035da88 */ + if ((*(long *)this != 0) && (*(long *)(*(long *)this + 8) != 0)) { + local_10 = 0; + local_8 = 0; + this_00 = (Device *)Device::getDefault(); + uVar2 = Device::ptr(this_00); + uVar3 = *(undefined8 *)(*(long *)this + 8); + if ((DAT_00532028 == (code *)0x0) && + (DAT_00532028 = (code *)FUN_0034d2bc(&LAB_0046e440,uVar2), DAT_00532028 == (code *)0x0)) { + return 0; + } + iVar1 = (*DAT_00532028)(uVar3,uVar2,0x11b3,8,&local_10,&local_8); + if (iVar1 == 0) { + return local_10; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035dbdc (204 bytes) name=compileWorkGroupSize + +/* cv::ocl::Kernel::compileWorkGroupSize(unsigned long*) const */ + +bool __thiscall cv::ocl::Kernel::compileWorkGroupSize(Kernel *this,ulong *param_1) + +{ + int iVar1; + Device *this_00; + undefined8 uVar2; + undefined8 uVar3; + undefined8 local_8; + + if (*(long *)this == 0) { + return false; + } + if ((param_1 == (ulong *)0x0) || (*(long *)(*(long *)this + 8) == 0)) { + return false; + } + local_8 = 0; + this_00 = (Device *)Device::getDefault(); + uVar2 = Device::ptr(this_00); + uVar3 = *(undefined8 *)(*(long *)this + 8); + if (DAT_00532028 == (code *)0x0) { + DAT_00532028 = (code *)FUN_0034d2bc(&LAB_0046e440); + if (DAT_00532028 == (code *)0x0) { + iVar1 = -1000; + goto LAB_0035dc44; + } + } + iVar1 = (*DAT_00532028)(uVar3,uVar2,0x11b1,0x18,param_1,&local_8); +LAB_0035dc44: + return iVar1 == 0; +} + + +================================================================== + +### FUNC 0035dca8 (172 bytes) name=localMemSize + +/* cv::ocl::Kernel::localMemSize() const */ + +undefined8 __thiscall cv::ocl::Kernel::localMemSize(Kernel *this) + +{ + int iVar1; + Device *this_00; + undefined8 uVar2; + undefined8 uVar3; + undefined8 local_10; + undefined8 local_8; + + if ((*(long *)this != 0) && (*(long *)(*(long *)this + 8) != 0)) { + local_10 = 0; + local_8 = 0; + this_00 = (Device *)Device::getDefault(); + uVar2 = Device::ptr(this_00); + uVar3 = *(undefined8 *)(*(long *)this + 8); + if ((DAT_00532028 == (code *)0x0) && + (DAT_00532028 = (code *)FUN_0034d2bc(&LAB_0046e440,uVar2), DAT_00532028 == (code *)0x0)) { + return 0; + } + iVar1 = (*DAT_00532028)(uVar3,uVar2,0x11b2,8,&local_8,&local_10); + if (iVar1 == 0) { + return local_8; + } + } + return 0; +} + + +================================================================== + +### FUNC 0035dd54 (288 bytes) name=predictOptimalVectorWidth + +/* cv::ocl::predictOptimalVectorWidth(cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::ocl::OclVectorStrategy) */ + +void cv::ocl::predictOptimalVectorWidth + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8, + undefined8 param_9,undefined4 param_10) + +{ + undefined4 uVar1; + Device *this; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined4 local_8; + undefined4 local_4; + + this = (Device *)Device::getDefault(); + local_10 = 0; + local_8 = 0; + local_4 = 0xffffffff; + local_20 = 0; + local_18 = 0; + uVar1 = Device::preferredVectorWidthChar(this); + local_20 = CONCAT44(local_20._4_4_,uVar1); + uVar1 = Device::preferredVectorWidthChar(this); + local_20 = CONCAT44(uVar1,(int)local_20); + uVar1 = Device::preferredVectorWidthShort(this); + /* try { // try from 0035ddbc to 0045ddbf has its CatchHandler @ 0035de24 */ + local_18 = CONCAT44(local_18._4_4_,uVar1); + /* try { // try from 0035ddc4 to 0045ddc7 has its CatchHandler @ 0035da88 */ + uVar1 = Device::preferredVectorWidthShort(this); + local_18 = CONCAT44(uVar1,(undefined4)local_18); + uVar1 = Device::preferredVectorWidthInt(this); + local_10 = CONCAT44(local_10._4_4_,uVar1); + uVar1 = Device::preferredVectorWidthFloat(this); + local_10 = CONCAT44(uVar1,(undefined4)local_10); + uVar1 = Device::preferredVectorWidthDouble(this); + if ((int)local_20 == 1) { + /* catch() { ... } // from try @ 0035db34 with catch @ 0035de10 */ + local_20 = 0x400000004; + local_18 = 0x200000002; + /* try { // try from 0035de20 to 0045de23 has its CatchHandler @ 0035da88 */ + /* catch() { ... } // from try @ 0035ddbc with catch @ 0035de24 */ + local_10 = 0x100000001; + uVar1 = 1; + } + _local_8 = CONCAT44(local_4,uVar1); + /* try { // try from 0035de34 to 0045de37 has its CatchHandler @ 0035da88 */ + /* catch() { ... } // from try @ 0035dea0 with catch @ 0035de38 + catch() { ... } // from try @ 0035df24 with catch @ 0035de38 + catch() { ... } // from try @ 0035dfb8 with catch @ 0035de38 + catch() { ... } // from try @ 0035e040 with catch @ 0035de38 + catch() { ... } // from try @ 0035e054 with catch @ 0035de38 */ + checkOptimalVectorWidth + (&local_20,param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9, + param_10); + return; +} + + +================================================================== + +### FUNC 0035de74 (40 bytes) name=predictOptimalVectorWidthMax + +/* cv::ocl::predictOptimalVectorWidthMax(cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&) */ + +void cv::ocl::predictOptimalVectorWidthMax + (_InputArray *param_1,_InputArray *param_2,_InputArray *param_3,_InputArray *param_4, + _InputArray *param_5,_InputArray *param_6,_InputArray *param_7,_InputArray *param_8, + _InputArray *param_9) + +{ + predictOptimalVectorWidth(); + return; +} + + +================================================================== + +### FUNC 0035de9c (232 bytes) name=canCreateAlias + +/* cv::ocl::Image2D::canCreateAlias(cv::UMat const&) */ + +ulong cv::ocl::Image2D::canCreateAlias(UMat *param_1) + +{ + long lVar1; + ulong uVar2; + char cVar3; + uint uVar4; + Device *this; + ulong uVar5; + long lVar6; + long lVar7; + + /* try { // try from 0035dea0 to 0045ded3 has its CatchHandler @ 0035de38 */ + this = (Device *)Device::getDefault(); + cVar3 = Device::imageFromBufferSupport(this); + if ((cVar3 != '\0') && (*(long *)(param_1 + 0x20) != 0)) { + if (*(int *)(param_1 + 4) < 3) { + lVar7 = (long)*(int *)(param_1 + 0xc) * (long)*(int *)(param_1 + 8); + } + else { + lVar6 = 0; + lVar7 = 1; + do { + lVar1 = lVar6 * 4; + lVar6 = lVar6 + 1; + lVar7 = lVar7 * *(int *)(*(long *)(param_1 + 0x30) + lVar1); + } while ((int)lVar6 < *(int *)(param_1 + 4)); + } + if ((lVar7 != 0) && (uVar4 = Device::imagePitchAlignment(this), uVar4 != 0)) { + if (*(int *)(param_1 + 4) < 1) { + uVar5 = 0; + } + else { + uVar5 = (ulong)uVar4 * + *(long *)(*(long *)(param_1 + 0x38) + (long)*(int *)(param_1 + 4) * 8 + -8); + } + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = *(ulong *)(param_1 + 0x40) / uVar5; + } + /* try { // try from 0035df1c to 0045df1f has its CatchHandler @ 0035e044 */ + if (*(ulong *)(param_1 + 0x40) == uVar2 * uVar5) { + /* try { // try from 0035df24 to 0045df6f has its CatchHandler @ 0035de38 */ + return ((ulong)*(uint *)(*(long *)(param_1 + 0x20) + 0x30) ^ 8) >> 3 & 1; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 0035df84 (1800 bytes) name=getOpenCLAllocator + +/* cv::ocl::getOpenCLAllocator() */ + +undefined8 * cv::ocl::getOpenCLAllocator(void) + +{ + Mutex *this; + Mutex *this_00; + undefined8 *puVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined2 uVar4; + char cVar5; + int iVar6; + undefined8 *puVar7; + Device *this_01; + ulong uVar8; + ulong uVar9; + char *pcVar10; + undefined8 uVar11; + long lVar12; + undefined8 *puVar13; + void *pvVar14; + long lVar15; + undefined8 *puVar16; + undefined8 *puVar17; + long local_60; + long local_58; + long local_50; + long local_48; + undefined8 local_40; + undefined8 local_38; + long local_30; + long local_28; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 0035dfb0 to 0045dfb3 has its CatchHandler @ 0035e030 */ + /* try { // try from 0035dfb8 to 0045dfbb has its CatchHandler @ 0035de38 */ + puVar7 = DAT_00532968; + if (((DAT_005320a8 & 1) == 0) && + (iVar6 = __cxa_guard_acquire(&DAT_005320a8), puVar7 = DAT_00532968, iVar6 != 0)) { + puVar7 = operator_new(0xb0); + *puVar7 = &PTR_FUN_004f6980; + this = (Mutex *)(puVar7 + 3); + puVar7[1] = &PTR_FUN_004f68a0; + /* catch() { ... } // from try @ 0035dfb0 with catch @ 0035e030 */ + puVar7[2] = &PTR_FUN_004f68f0; + Mutex::Mutex(this); + /* try { // try from 0035e040 to 0045e043 has its CatchHandler @ 0035de38 */ + puVar7[4] = 0; + /* catch() { ... } // from try @ 0035df1c with catch @ 0035e044 */ + puVar7[5] = 0; + puVar17 = puVar7 + 8; + puVar7[6] = puVar7 + 6; + /* try { // try from 0035e054 to 0045e057 has its CatchHandler @ 0035de38 */ + puVar7[7] = puVar7 + 6; + /* catch() { ... } // from try @ 0035e0d4 with catch @ 0035e058 + catch() { ... } // from try @ 0035e1b8 with catch @ 0035e058 + catch() { ... } // from try @ 0035e26c with catch @ 0035e058 + catch() { ... } // from try @ 0035e2dc with catch @ 0035e058 + catch() { ... } // from try @ 0035e314 with catch @ 0035e058 + catch() { ... } // from try @ 0035e328 with catch @ 0035e058 + catch() { ... } // from try @ 0035e33c with catch @ 0035e058 */ + puVar7[8] = puVar17; + puVar7[9] = puVar17; + puVar7[1] = &PTR_FUN_004f6910; + this_00 = (Mutex *)(puVar7 + 0xd); + puVar7[2] = &PTR_FUN_004f6960; + *(undefined4 *)(puVar7 + 10) = 0; + puVar7[0xb] = &PTR_FUN_004f68a0; + puVar7[0xc] = &PTR_FUN_004f68f0; + Mutex::Mutex(this_00); + puVar7[0xe] = 0; + puVar7[0xf] = 0; + puVar1 = puVar7 + 0x12; + puVar7[0x10] = puVar7 + 0x10; + puVar7[0x11] = puVar7 + 0x10; + puVar7[0x12] = puVar1; + puVar7[0x13] = puVar1; + puVar7[0xb] = &PTR_FUN_004f6910; + puVar7[0xc] = &PTR_FUN_004f6960; + /* try { // try from 0035e0d4 to 0045e177 has its CatchHandler @ 0035e058 */ + *(undefined4 *)(puVar7 + 0x14) = 0x10; + this_01 = (Device *)Device::getDefault(); + iVar6 = Device::vendorID(this_01); + uVar11 = 0x8000000; + if (iVar6 != 2) { + uVar11 = 0; + } + uVar8 = FUN_0034dab0(&DAT_0046e460,uVar11); + Mutex::lock(this); + uVar9 = puVar7[5]; + puVar7[5] = uVar8; + if (uVar8 < uVar9) { + puVar16 = (undefined8 *)puVar7[8]; + while (puVar17 != puVar16) { + while ((ulong)puVar16[3] <= uVar8 >> 3) { + puVar16 = (undefined8 *)*puVar16; + if (puVar17 == puVar16) goto LAB_0035e1bc; + } + lVar12 = puVar16[2]; + puVar7[4] = puVar7[4] - puVar16[3]; + if (lVar12 == 0) { + local_60 = lVar12; + local_58 = lVar12; + /* try { // try from 0035e328 to 0045e32b has its CatchHandler @ 0035e058 */ + /* catch() { ... } // from try @ 0035e2d4 with catch @ 0035e32c */ + pcVar10 = (char *)String::allocate((String *)&local_60,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar4 = s_entry_clBuffer_____NULL_0046d640._20_2_; + /* try { // try from 0035e33c to 0045e33f has its CatchHandler @ 0035e058 */ + /* catch() { ... } // from try @ 0035e3ac with catch @ 0035e340 + catch() { ... } // from try @ 0035e4c0 with catch @ 0035e340 + catch() { ... } // from try @ 0035e594 with catch @ 0035e340 + catch() { ... } // from try @ 0035e660 with catch @ 0035e340 + catch() { ... } // from try @ 0035e674 with catch @ 0035e340 */ + *(undefined4 *)(pcVar10 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar4; + uVar3 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._0_8_; + pcVar10[0x16] = cVar5; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + error(-0xd7,(String *)&local_60, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + String::deallocate((String *)&local_60); + lVar12 = puVar16[2]; + if (DAT_00532980 == (code *)0x0) goto LAB_0035e394; +LAB_0035e18c: + (*DAT_00532980)(lVar12); + } + else { + if (DAT_00532980 != (code *)0x0) goto LAB_0035e18c; +LAB_0035e394: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0035e18c; + } + puVar13 = (undefined8 *)*puVar16; + FUN_003dc008(puVar16); + /* try { // try from 0035e1a8 to 0045e1ab has its CatchHandler @ 0035e304 */ + operator_delete(puVar16); + uVar8 = puVar7[5]; + /* try { // try from 0035e1b8 to 0045e217 has its CatchHandler @ 0035e058 */ + puVar16 = puVar13; + } +LAB_0035e1bc: + uVar9 = puVar7[4]; + if (uVar8 < uVar9) { + do { + lVar15 = puVar7[9]; + lVar12 = *(long *)(lVar15 + 0x18); + puVar7[4] = uVar9 - lVar12; + if (lVar12 == 0) { + local_50 = lVar12; + local_48 = lVar12; + pcVar10 = (char *)String::allocate((String *)&local_50,0x14); + uVar3 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar2 = s_entry_capacity_____0_0046d5e8._0_8_; + /* try { // try from 0035e260 to 0045e263 has its CatchHandler @ 0035e318 */ + /* try { // try from 0035e26c to 0045e28b has its CatchHandler @ 0035e058 */ + *(undefined4 *)(pcVar10 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + error(-0xd7,(String *)&local_50, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + String::deallocate((String *)&local_50); + lVar12 = *(long *)(lVar15 + 0x10); + if (lVar12 == 0) goto LAB_0035e298; +LAB_0035e1f0: + if (DAT_00532980 == (code *)0x0) goto LAB_0035e30c; +LAB_0035e1fc: + (*DAT_00532980)(lVar12); + } + else { + lVar12 = *(long *)(lVar15 + 0x10); + if (lVar12 != 0) goto LAB_0035e1f0; +LAB_0035e298: + local_40 = 0; + local_38 = local_40; + pcVar10 = (char *)String::allocate((String *)&local_40,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar4 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar3 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._0_8_; + /* try { // try from 0035e2d4 to 0045e2d7 has its CatchHandler @ 0035e32c */ + /* try { // try from 0035e2dc to 0045e2fb has its CatchHandler @ 0035e058 */ + *(undefined4 *)(pcVar10 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar4; + pcVar10[0x16] = cVar5; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + error(-0xd7,(String *)&local_40, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + String::deallocate((String *)&local_40); + lVar12 = *(long *)(lVar15 + 0x10); + /* catch() { ... } // from try @ 0035e1a8 with catch @ 0035e304 */ + if (DAT_00532980 != (code *)0x0) goto LAB_0035e1fc; +LAB_0035e30c: + /* try { // try from 0035e314 to 0045e317 has its CatchHandler @ 0035e058 */ + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + /* catch() { ... } // from try @ 0035e260 with catch @ 0035e318 */ + if (DAT_00532980 != (code *)0x0) goto LAB_0035e1fc; + } + pvVar14 = (void *)puVar7[9]; + FUN_003dc008(pvVar14); + operator_delete(pvVar14); + uVar9 = puVar7[4]; + } while ((ulong)puVar7[5] < uVar9); + } + } + /* try { // try from 0035e3ac to 0045e47f has its CatchHandler @ 0035e340 */ + Mutex::unlock(this); + uVar8 = FUN_0034dab0("OPENCV_OPENCL_HOST_PTR_BUFFERPOOL_LIMIT",uVar11); + Mutex::lock(this_00); + uVar9 = puVar7[0xf]; + puVar7[0xf] = uVar8; + if (uVar8 < uVar9) { + puVar17 = (undefined8 *)puVar7[0x12]; + while (puVar1 != puVar17) { + while ((ulong)puVar17[3] <= uVar8 >> 3) { + puVar17 = (undefined8 *)*puVar17; + if (puVar1 == puVar17) goto LAB_0035e478; + } + lVar12 = puVar17[2]; + puVar7[0xe] = puVar7[0xe] - puVar17[3]; + if (lVar12 == 0) { + local_30 = lVar12; + local_28 = lVar12; + pcVar10 = (char *)String::allocate((String *)&local_30,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar4 = s_entry_clBuffer_____NULL_0046d640._20_2_; + *(undefined4 *)(pcVar10 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar4; + uVar2 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar11 = s_entry_clBuffer_____NULL_0046d640._0_8_; + pcVar10[0x16] = cVar5; + *(undefined8 *)pcVar10 = uVar11; + *(undefined8 *)(pcVar10 + 8) = uVar2; + error(-0xd7,(String *)&local_30, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + String::deallocate((String *)&local_30); + lVar12 = puVar17[2]; + if (DAT_00532980 == (code *)0x0) goto LAB_0035e650; +LAB_0035e448: + (*DAT_00532980)(lVar12); + } + else { + if (DAT_00532980 != (code *)0x0) goto LAB_0035e448; +LAB_0035e650: + /* catch() { ... } // from try @ 0035e4b8 with catch @ 0035e650 */ + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0035e448; + } + puVar16 = (undefined8 *)*puVar17; + FUN_003dc008(puVar17); + operator_delete(puVar17); + uVar8 = puVar7[0xf]; + puVar17 = puVar16; + } +LAB_0035e478: + uVar9 = puVar7[0xe]; + if (uVar8 < uVar9) { + do { + lVar15 = puVar7[0x13]; + lVar12 = *(long *)(lVar15 + 0x18); + puVar7[0xe] = uVar9 - lVar12; + if (lVar12 == 0) { + local_20 = lVar12; + local_18 = lVar12; + pcVar10 = (char *)String::allocate((String *)&local_20,0x14); + uVar2 = s_entry_capacity_____0_0046d5e8._8_8_; + uVar11 = s_entry_capacity_____0_0046d5e8._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_entry_capacity_____0_0046d5e8._16_4_; + *(undefined8 *)pcVar10 = uVar11; + *(undefined8 *)(pcVar10 + 8) = uVar2; + error(-0xd7,(String *)&local_20, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa3); + String::deallocate((String *)&local_20); + lVar12 = *(long *)(lVar15 + 0x10); + if (lVar12 == 0) goto LAB_0035e554; +LAB_0035e4ac: + if (DAT_00532980 == (code *)0x0) goto LAB_0035e5c8; +LAB_0035e4b8: + /* try { // try from 0035e4b8 to 0045e4bb has its CatchHandler @ 0035e650 */ + /* try { // try from 0035e4c0 to 0045e54b has its CatchHandler @ 0035e340 */ + (*DAT_00532980)(lVar12); + } + else { + lVar12 = *(long *)(lVar15 + 0x10); + if (lVar12 != 0) goto LAB_0035e4ac; +LAB_0035e554: + local_10 = 0; + local_8 = local_10; + pcVar10 = (char *)String::allocate((String *)&local_10,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar4 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar2 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar11 = s_entry_clBuffer_____NULL_0046d640._0_8_; + /* try { // try from 0035e58c to 0045e58f has its CatchHandler @ 0035e664 */ + /* try { // try from 0035e594 to 0045e597 has its CatchHandler @ 0035e340 */ + *(undefined4 *)(pcVar10 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar4; + pcVar10[0x16] = cVar5; + *(undefined8 *)pcVar10 = uVar11; + *(undefined8 *)(pcVar10 + 8) = uVar2; + error(-0xd7,(String *)&local_10, + "void cv::ocl::OpenCLBufferPoolImpl::_releaseBufferEntry(const BufferEntry&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xfa4); + String::deallocate((String *)&local_10); + lVar12 = *(long *)(lVar15 + 0x10); + if (DAT_00532980 != (code *)0x0) goto LAB_0035e4b8; +LAB_0035e5c8: + DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"); + if (DAT_00532980 != (code *)0x0) goto LAB_0035e4b8; + } + pvVar14 = (void *)puVar7[0x13]; + FUN_003dc008(pvVar14); + operator_delete(pvVar14); + uVar9 = puVar7[0xe]; + } while ((ulong)puVar7[0xf] < uVar9); + } + } + /* catch() { ... } // from try @ 0035e58c with catch @ 0035e664 */ + Mutex::unlock(this_00); + uVar11 = Mat::getStdAllocator(); + /* try { // try from 0035e674 to 0045e677 has its CatchHandler @ 0035e340 */ + puVar7[0x15] = uVar11; + DAT_00532968 = puVar7; + /* catch() { ... } // from try @ 0035e6f0 with catch @ 0035e678 + catch() { ... } // from try @ 0035e7d8 with catch @ 0035e678 + catch() { ... } // from try @ 0035e8e8 with catch @ 0035e678 + catch() { ... } // from try @ 0035e9d0 with catch @ 0035e678 + catch() { ... } // from try @ 0035e9e4 with catch @ 0035e678 */ + __cxa_guard_release(&DAT_005320a8); + } + return puVar7; +} + + +================================================================== + +### FUNC 0035e788 (1568 bytes) name=FUN_0035e788 + +void FUN_0035e788(undefined4 *param_1,ProgramSource *param_2,String *param_3,String *param_4) + +{ + ProgramSource *this; + String *this_00; + char cVar1; + bool bVar2; + undefined2 uVar3; + int iVar4; + int iVar5; + Context *this_01; + undefined8 *puVar6; + long lVar7; + ulong uVar8; + Device *pDVar9; + char *__s; + size_t __n; + void *__dest; + int *piVar10; + undefined8 uVar11; + undefined1 *puVar12; + undefined1 *puVar13; + ulong uVar14; + undefined8 uVar15; + int local_8a4; + undefined1 *local_8a0; + long local_898; + Device aDStack_890 [8]; + long local_888; + undefined8 local_880; + void *local_878; + undefined8 local_870; + char *local_868; + ulong local_860; + char acStack_858 [1032]; + undefined8 *local_450; + ulong local_448; + undefined8 auStack_440 [136]; + + this = (ProgramSource *)(param_1 + 2); + this_00 = (String *)(param_1 + 4); + cv::ocl::ProgramSource::ProgramSource(this); + /* try { // try from 0035e7d0 to 0045e7d3 has its CatchHandler @ 0035e9d4 */ + *(undefined8 *)(param_1 + 4) = 0; + *(undefined8 *)(param_1 + 6) = 0; + /* try { // try from 0035e7d8 to 0045e8a7 has its CatchHandler @ 0035e678 */ + *param_1 = 1; + this_01 = (Context *)cv::ocl::Context::getDefault(true); + cv::ocl::ProgramSource::operator=(this,param_2); + if (this_00 != param_3) { + cv::String::deallocate(this_00); + uVar11 = 0; + if (*(long *)param_3 != 0) { + piVar10 = (int *)(*(long *)param_3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + uVar11 = *(undefined8 *)param_3; + } + *(undefined8 *)(param_1 + 4) = uVar11; + *(undefined8 *)(param_1 + 6) = *(undefined8 *)(param_3 + 8); + } + puVar6 = (undefined8 *)cv::ocl::ProgramSource::source(this); + local_8a0 = (undefined1 *)*puVar6; + if (local_8a0 == (undefined1 *)0x0) { + local_8a0 = &DAT_00472008; + } + local_898 = puVar6[1]; + local_8a4 = 0; + uVar11 = cv::ocl::Context::ptr(this_01); + if ((DAT_005320e8 == (code *)0x0) && + (DAT_005320e8 = (code *)FUN_0034d2bc("clCreateProgramWithSource"), DAT_005320e8 == (code *)0x0) + ) { + *(undefined8 *)(param_1 + 8) = 0; + return; + } + lVar7 = (*DAT_005320e8)(uVar11,1,&local_8a0,&local_898,&local_8a4); + *(long *)(param_1 + 8) = lVar7; + if (lVar7 == 0) { + return; + } + if (local_8a4 != 0) { + return; + } + iVar4 = cv::ocl::Context::ndevices(this_01); + /* try { // try from 0035e8e0 to 0045e8e3 has its CatchHandler @ 0035e9c0 */ + puVar6 = auStack_440; + /* try { // try from 0035e8e8 to 0045e8eb has its CatchHandler @ 0035e678 */ + uVar14 = (ulong)(iVar4 + 1); + local_448 = 0x88; + if (0x88 < uVar14) { + uVar8 = uVar14 << 3; + if (0xfe0000000000000 < uVar14) { + uVar8 = 0xffffffffffffffff; + } + local_450 = puVar6; + puVar6 = operator_new__(uVar8); + } + uVar8 = 0; + local_450 = puVar6; + local_448 = uVar14; + if (0 < iVar4) { + do { + pDVar9 = (Device *)cv::ocl::Context::device(this_01,uVar8); + uVar11 = cv::ocl::Device::ptr(pDVar9); + puVar6[uVar8] = uVar11; + uVar8 = uVar8 + 1; + } while ((int)uVar8 < iVar4); + } + pDVar9 = (Device *)cv::ocl::Device::getDefault(); + cv::ocl::Device::Device(aDStack_890,pDVar9); + iVar5 = cv::ocl::Device::vendorID(aDStack_890); + if (iVar5 == 1) { + local_878 = (void *)0x0; + local_870 = 0; + cv::String::allocate((String *)&local_878,*(long *)(param_1 + 6) + 0xe); + memcpy(local_878,*(void **)(param_1 + 4),*(size_t *)(param_1 + 6)); + lVar7 = *(long *)(param_1 + 6); + *(undefined8 *)((long)local_878 + lVar7) = s__D_AMD_DEVICE_0046e4c8._0_8_; + uVar3 = s__D_AMD_DEVICE_0046e4c8._12_2_; + *(undefined4 *)((long)local_878 + lVar7 + 8) = s__D_AMD_DEVICE_0046e4c8._8_4_; + *(undefined2 *)((long)local_878 + lVar7 + 0xc) = uVar3; + cv::String::deallocate(this_00); + if (local_878 != (void *)0x0) { + piVar10 = (int *)((long)local_878 - 4); + do { + /* catch() { ... } // from try @ 0035eb68 with catch @ 0035ec48 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + /* try { // try from 0035ec58 to 0045ec5b has its CatchHandler @ 0035e9e8 */ + *(void **)(param_1 + 4) = local_878; + /* catch() { ... } // from try @ 0035ecc8 with catch @ 0035ec5c + catch() { ... } // from try @ 0035edf0 with catch @ 0035ec5c + catch() { ... } // from try @ 0035eec4 with catch @ 0035ec5c */ + *(undefined8 *)(param_1 + 6) = local_870; + cv::String::deallocate((String *)&local_878); + } + else { + iVar5 = cv::ocl::Device::vendorID(aDStack_890); + if (iVar5 == 2) { + local_868 = (char *)0x0; + local_860 = 0; + cv::String::allocate((String *)&local_868,*(long *)(param_1 + 6) + 0x10); + /* try { // try from 0035ecc8 to 0045eda7 has its CatchHandler @ 0035ec5c */ + memcpy(local_868,*(void **)(param_1 + 4),*(size_t *)(param_1 + 6)); + uVar11 = s__D_INTEL_DEVICE_0046e4d8._8_8_; + lVar7 = *(long *)(param_1 + 6); + *(undefined8 *)(local_868 + lVar7) = s__D_INTEL_DEVICE_0046e4d8._0_8_; + *(undefined8 *)(local_868 + lVar7 + 8) = uVar11; + cv::String::deallocate(this_00); + if (local_868 != (char *)0x0) { + piVar10 = (int *)(local_868 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(char **)(param_1 + 4) = local_868; + *(ulong *)(param_1 + 6) = local_860; + cv::String::deallocate((String *)&local_868); + } + } + puVar13 = *(undefined1 **)(param_1 + 4); + uVar11 = *(undefined8 *)(param_1 + 8); + if (puVar13 == (undefined1 *)0x0) { + puVar13 = &DAT_00472008; + } + if ((DAT_005320c8 == (code *)0x0) && + (DAT_005320c8 = (code *)FUN_0034d2bc("clBuildProgram"), DAT_005320c8 == (code *)0x0)) { + local_8a4 = -1000; + } + else { + local_8a4 = (*DAT_005320c8)(uVar11,iVar4,puVar6,puVar13,0,0); + /* catch() { ... } // from try @ 0035e8e0 with catch @ 0035e9c0 */ + if (local_8a4 == 0) goto LAB_0035eb88; + } + uVar11 = *puVar6; + /* try { // try from 0035e9d0 to 0045e9d3 has its CatchHandler @ 0035e678 */ + local_878 = (void *)0x0; + /* catch() { ... } // from try @ 0035e7d0 with catch @ 0035e9d4 */ + uVar15 = *(undefined8 *)(param_1 + 8); + /* try { // try from 0035e9e4 to 0045e9e7 has its CatchHandler @ 0035e678 */ + /* catch() { ... } // from try @ 0035ea4c with catch @ 0035e9e8 + catch() { ... } // from try @ 0035eb70 with catch @ 0035e9e8 + catch() { ... } // from try @ 0035ec58 with catch @ 0035e9e8 */ + if ((((DAT_00532060 != (code *)0x0) || + (DAT_00532060 = (code *)FUN_0034d2bc(&LAB_0046e500), DAT_00532060 != (code *)0x0)) && + (iVar4 = (*DAT_00532060)(uVar15,uVar11,0x1183,0,0,&local_878), iVar4 == 0)) && + ((void *)0x1 < local_878)) { + uVar14 = (long)local_878 + 0x10; + __s = acStack_858; + local_860 = 0x408; + if (0x408 < uVar14) { + local_868 = __s; + /* try { // try from 0035ea4c to 0045eb2f has its CatchHandler @ 0035e9e8 */ + __s = operator_new__(uVar14); + } + lVar7 = (long)local_878 + 1; + uVar15 = *puVar6; + uVar11 = *(undefined8 *)(param_1 + 8); + local_868 = __s; + local_860 = uVar14; + if (((DAT_00532060 != (code *)0x0) || + (DAT_00532060 = (code *)FUN_0034d2bc(&LAB_0046e500), DAT_00532060 != (code *)0x0)) && + (iVar4 = (*DAT_00532060)(uVar11,uVar15,0x1183,lVar7,__s,&local_878), iVar4 == 0)) { + local_888 = 0; + local_880 = 0; + __n = strlen(__s); + __dest = (void *)cv::String::allocate((String *)&local_888,__n); + memcpy(__dest,__s,__n); + cv::String::deallocate(param_4); + if (local_888 != 0) { + piVar10 = (int *)(local_888 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar2) { + *piVar10 = *piVar10 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)param_4 = local_888; + *(undefined8 *)(param_4 + 8) = local_880; + cv::String::deallocate((String *)&local_888); + puVar13 = *(undefined1 **)(param_1 + 4); + if (puVar13 == (undefined1 *)0x0) { + puVar13 = &DAT_00472008; + } + puVar12 = *(undefined1 **)param_4; + if (puVar12 == (undefined1 *)0x0) { + puVar12 = &DAT_00472008; + } + printf("OpenCL program build log: %s\n%s\n",puVar13,puVar12); + fflush((FILE *)(PTR___sF_00501a80 + 0x98)); + } + if ((local_868 != acStack_858) && (local_868 != (char *)0x0)) { + operator_delete__(local_868); + } + } + /* try { // try from 0035eb68 to 0045eb6b has its CatchHandler @ 0035ec48 */ + if ((local_8a4 != 0) && (lVar7 = *(long *)(param_1 + 8), lVar7 != 0)) { + /* try { // try from 0035eb70 to 0045eb73 has its CatchHandler @ 0035e9e8 */ + if ((DAT_005329a8 == (code *)0x0) && + (DAT_005329a8 = (code *)FUN_0034d2bc("clReleaseProgram"), DAT_005329a8 == (code *)0x0)) { + *(undefined8 *)(param_1 + 8) = 0; + } + else { + (*DAT_005329a8)(lVar7); + *(undefined8 *)(param_1 + 8) = 0; + } + } +LAB_0035eb88: + cv::ocl::Device::~Device(aDStack_890); + if ((local_450 != auStack_440) && (local_450 != (undefined8 *)0x0)) { + operator_delete__(local_450); + } + return; +} + + +================================================================== + +### FUNC 0035ee6c (400 bytes) name=create + +/* cv::ocl::Program::create(cv::ocl::ProgramSource const&, cv::String const&, cv::String&) */ + +undefined8 __thiscall +cv::ocl::Program::create(Program *this,ProgramSource *param_1,String *param_2,String *param_3) + +{ + int iVar1; + char cVar2; + bool bVar3; + long lVar4; + int *piVar5; + + piVar5 = *(int **)this; + if (piVar5 != (int *)0x0) { + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar4 = *(long *)(piVar5 + 8); + if (lVar4 != 0) { + if ((DAT_005329a8 != (code *)0x0) || + (DAT_005329a8 = (code *)FUN_0034d2bc("clReleaseProgram"), DAT_005329a8 != (code *)0x0)) { + /* try { // try from 0035ef1c to 0045ef4b has its CatchHandler @ 0035eec8 */ + (*DAT_005329a8)(lVar4); + } + piVar5[8] = 0; + piVar5[9] = 0; + } + String::deallocate((String *)(piVar5 + 4)); + ProgramSource::~ProgramSource((ProgramSource *)(piVar5 + 2)); + operator_delete(piVar5); + } + } + /* catch() { ... } // from try @ 0035ede0 with catch @ 0035eeb4 */ + piVar5 = operator_new(0x28); + /* try { // try from 0035eec4 to 0045eec7 has its CatchHandler @ 0035ec5c */ + /* catch() { ... } // from try @ 0035ef1c with catch @ 0035eec8 + catch() { ... } // from try @ 0035efa4 with catch @ 0035eec8 + catch() { ... } // from try @ 0035f0ac with catch @ 0035eec8 + catch() { ... } // from try @ 0035f180 with catch @ 0035eec8 + catch() { ... } // from try @ 0035f36c with catch @ 0035eec8 + catch() { ... } // from try @ 0035f380 with catch @ 0035eec8 + catch() { ... } // from try @ 0035f394 with catch @ 0035eec8 */ + FUN_0035e788(piVar5,param_1,param_2,param_3); + lVar4 = *(long *)(piVar5 + 8); + *(int **)this = piVar5; + if (lVar4 == 0) { + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 0035ef9c to 0045ef9f has its CatchHandler @ 0035f370 */ + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + /* try { // try from 0035efa4 to 0045f06b has its CatchHandler @ 0035eec8 */ + lVar4 = *(long *)(piVar5 + 8); + if (lVar4 != 0) { + if ((DAT_005329a8 != (code *)0x0) || + (DAT_005329a8 = (code *)FUN_0034d2bc("clReleaseProgram"), DAT_005329a8 != (code *)0x0)) { + (*DAT_005329a8)(lVar4); + } + piVar5[8] = 0; + piVar5[9] = 0; + } + String::deallocate((String *)(piVar5 + 4)); + ProgramSource::~ProgramSource((ProgramSource *)(piVar5 + 2)); + operator_delete(piVar5); + } + *(undefined8 *)this = 0; + return 0; + } + return 1; +} + + +================================================================== + +### FUNC 0035f058 (8 bytes) name=Program + +/* cv::ocl::Program::Program(cv::ocl::ProgramSource const&, cv::String const&, cv::String&) */ + +void __thiscall +cv::ocl::Program::Program(Program *this,ProgramSource *param_1,String *param_2,String *param_3) + +{ + *(undefined8 *)this = 0; + create(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0035f060 (208 bytes) name=getPrefix + +/* cv::ocl::Program::getPrefix(cv::String const&) */ + +void __thiscall cv::ocl::Program::getPrefix(Program *this,String *param_1) + +{ + Context *this_00; + undefined1 *puVar1; + undefined1 *local_20 [2]; + undefined1 *local_10 [2]; + + this_00 = (Context *)Context::getDefault(true); + Context::device(this_00,0); + Device::name(); + if (local_20[0] == (undefined1 *)0x0) { + local_20[0] = &DAT_00472008; + } + /* try { // try from 0035f0ac to 0045f137 has its CatchHandler @ 0035eec8 */ + Device::driverVersion(); + if (local_10[0] == (undefined1 *)0x0) { + puVar1 = *(undefined1 **)this; + local_10[0] = &DAT_00472008; + } + else { + puVar1 = *(undefined1 **)this; + } + if (puVar1 == (undefined1 *)0x0) { + puVar1 = &DAT_00472008; + } + format("name=%s\ndriver=%s\nbuildflags=%s\n",local_20[0],local_10[0],puVar1); + String::deallocate((String *)local_10); + String::deallocate((String *)local_20); + return; +} + + +================================================================== + +### FUNC 0035f154 (1052 bytes) name=getProg + +/* cv::ocl::Context::getProg(cv::ocl::ProgramSource const&, cv::String const&, cv::String&) */ + +void cv::ocl::Context::getProg(ProgramSource *param_1,String *param_2,String *param_3) + +{ + long lVar1; + bool bVar2; + ulong uVar3; + long lVar4; + long lVar5; + void *pvVar6; + long lVar7; + String *in_x3; + byte *pbVar8; + ulong uVar10; + Program *in_x8; + ulong uVar11; + int iVar12; + ulong uVar13; + long lVar14; + Program aPStack_48 [8]; + byte *local_40; + long local_38; + ulong local_30; + ulong local_28; + Program aPStack_20 [8]; + ulong local_18; + ulong local_10; + Program aPStack_8 [8]; + byte *pbVar9; + + /* try { // try from 0035f178 to 0045f17b has its CatchHandler @ 0035f35c */ + lVar14 = *(long *)param_1; + /* try { // try from 0035f180 to 0045f183 has its CatchHandler @ 0035eec8 */ + if (lVar14 == 0) { + Program::Program(in_x8); + return; + } + Program::getPrefix((Program *)param_3,param_2); + uVar3 = ProgramSource::hash((ProgramSource *)param_2); + if (local_40 == (byte *)0x0) { + local_40 = &DAT_00472008; + } + if (DAT_00532128 == '\0') { + uVar13 = 0; + do { + uVar10 = uVar13 >> 1; + while( true ) { + uVar11 = uVar10 & 1; + if ((uVar10 & 1) != 0) { + uVar11 = 0xc96c5795d7870f42; + } + uVar11 = uVar11 ^ uVar10 >> 1; + uVar10 = uVar11 & 1; + if ((uVar11 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + uVar10 = uVar10 ^ uVar11 >> 1; + uVar11 = uVar10 & 1; + if ((uVar10 & 1) != 0) { + uVar11 = 0xc96c5795d7870f42; + } + uVar11 = uVar11 ^ uVar10 >> 1; + uVar10 = uVar11 & 1; + if ((uVar11 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + uVar10 = uVar10 ^ uVar11 >> 1; + uVar11 = uVar10 & 1; + if ((uVar10 & 1) != 0) { + uVar11 = 0xc96c5795d7870f42; + } + uVar11 = uVar11 ^ uVar10 >> 1; + uVar10 = uVar11 & 1; + if ((uVar11 & 1) != 0) { + uVar10 = 0xc96c5795d7870f42; + } + uVar10 = uVar10 ^ uVar11 >> 1; + uVar11 = uVar10 & 1; + if ((uVar10 & 1) != 0) { + uVar11 = 0xc96c5795d7870f42; + } + iVar12 = (int)uVar13; + (&DAT_00532160)[uVar13] = uVar11 ^ uVar10 >> 1; + if (uVar13 == 0xff) { + DAT_00532128 = '\x01'; + goto LAB_0035f2d8; + } + uVar13 = uVar13 + 1; + if ((iVar12 + 1U & 1) == 0) break; + uVar10 = uVar13 >> 1 ^ 0xc96c5795d7870f42; + } + } while( true ); + } +LAB_0035f2d8: + uVar13 = 0; + if (local_38 != 0) { + uVar13 = 0xffffffffffffffff; + pbVar9 = local_40; + do { + pbVar8 = pbVar9 + 1; + uVar13 = (&DAT_00532160)[(int)(((uint)*pbVar9 ^ (uint)uVar13) & 0xff)] ^ uVar13 >> 8; + pbVar9 = pbVar8; + } while (pbVar8 != local_40 + local_38); + uVar13 = ~uVar13; + } + lVar1 = lVar14 + 0x30; + lVar4 = *(long *)(lVar14 + 0x38); + lVar7 = lVar1; + if (*(long *)(lVar14 + 0x38) != 0) { + do { + while ((lVar5 = lVar4, uVar10 = *(ulong *)(lVar5 + 0x20), uVar3 < uVar10 || uVar3 == uVar10 && + ((uVar3 != uVar10 || (uVar13 <= *(ulong *)(lVar5 + 0x28)))))) { + lVar4 = *(long *)(lVar5 + 0x10); + lVar7 = lVar5; + if (*(long *)(lVar5 + 0x10) == 0) goto LAB_0035f338; + } + lVar4 = *(long *)(lVar5 + 0x18); + } while (*(long *)(lVar5 + 0x18) != 0); +LAB_0035f338: + if (((lVar1 != lVar7) && (*(ulong *)(lVar7 + 0x20) <= uVar3)) && + ((uVar3 != *(ulong *)(lVar7 + 0x20) || (*(ulong *)(lVar7 + 0x28) <= uVar13)))) { + Program::Program(in_x8,(Program *)(lVar7 + 0x30)); + goto LAB_0035f4d4; + } + } + /* catch() { ... } // from try @ 0035f178 with catch @ 0035f35c */ + Program::Program(aPStack_48,(ProgramSource *)param_2,param_3,in_x3); + lVar4 = Program::ptr(aPStack_48); + /* try { // try from 0035f36c to 0045f36f has its CatchHandler @ 0035eec8 */ + if (lVar4 != 0) { + /* catch() { ... } // from try @ 0035ef9c with catch @ 0035f370 */ + local_30 = uVar3; + local_28 = uVar13; + /* try { // try from 0035f380 to 0045f383 has its CatchHandler @ 0035eec8 */ + /* catch() { ... } // from try @ 0035f0a4 with catch @ 0035f384 */ + Program::Program(aPStack_20,aPStack_48); + /* try { // try from 0035f394 to 0045f397 has its CatchHandler @ 0035eec8 */ + /* catch() { ... } // from try @ 0035f3f8 with catch @ 0035f398 + catch() { ... } // from try @ 0035f480 with catch @ 0035f398 + catch() { ... } // from try @ 0035f55c with catch @ 0035f398 + catch() { ... } // from try @ 0035f7a0 with catch @ 0035f398 + catch() { ... } // from try @ 0035f888 with catch @ 0035f398 + catch() { ... } // from try @ 0035f89c with catch @ 0035f398 + catch() { ... } // from try @ 0035f8b0 with catch @ 0035f398 */ + local_18 = local_30; + local_10 = local_28; + Program::Program(aPStack_8,aPStack_20); + lVar4 = *(long *)(lVar14 + 0x38); + lVar7 = lVar1; + if (lVar4 != 0) { + uVar3 = *(ulong *)(lVar4 + 0x20); + bVar2 = uVar3 == local_18; + if (local_18 <= uVar3 && !bVar2) goto LAB_0035f3dc; + do { + if ((bVar2) && (local_10 < *(ulong *)(lVar4 + 0x28))) { + lVar7 = *(long *)(lVar4 + 0x10); + goto LAB_0035f3e4; + } + bVar2 = false; + lVar7 = *(long *)(lVar4 + 0x18); + lVar5 = lVar4; + while( true ) { + lVar4 = lVar7; + if (lVar4 == 0) { + lVar7 = lVar5; + if (bVar2) goto LAB_0035f3ec; + bVar2 = uVar3 == local_18; + if (local_18 <= uVar3) goto LAB_0035f54c; + goto LAB_0035f410; + } + uVar3 = *(ulong *)(lVar4 + 0x20); + bVar2 = uVar3 == local_18; + if (uVar3 <= local_18) break; +LAB_0035f3dc: + lVar7 = *(long *)(lVar4 + 0x10); +LAB_0035f3e4: + bVar2 = true; + lVar5 = lVar4; + } + } while( true ); + } +LAB_0035f3ec: + if (lVar7 == *(long *)(lVar14 + 0x40)) { +LAB_0035f410: + bVar2 = true; + if (((lVar1 != lVar7) && (*(ulong *)(lVar7 + 0x20) <= local_18)) && + (bVar2 = false, local_18 == *(ulong *)(lVar7 + 0x20))) { + bVar2 = local_10 < *(ulong *)(lVar7 + 0x28); + } + pvVar6 = operator_new(0x38); + *(ulong *)((long)pvVar6 + 0x20) = local_18; + *(ulong *)((long)pvVar6 + 0x28) = local_10; + Program::Program((Program *)((long)pvVar6 + 0x30),aPStack_8); + FUN_003fe21c(bVar2,pvVar6,lVar7,lVar1); + /* try { // try from 0035f478 to 0045f47b has its CatchHandler @ 0035f8a0 */ + /* try { // try from 0035f480 to 0045f513 has its CatchHandler @ 0035f398 */ + *(long *)(lVar14 + 0x50) = *(long *)(lVar14 + 0x50) + 1; + } + else { + /* try { // try from 0035f3f8 to 0045f427 has its CatchHandler @ 0035f398 */ + lVar5 = FUN_003fe07c(lVar7); + bVar2 = *(ulong *)(lVar5 + 0x20) == local_18; + if (*(ulong *)(lVar5 + 0x20) < local_18) goto LAB_0035f410; +LAB_0035f54c: + /* try { // try from 0035f554 to 0045f557 has its CatchHandler @ 0035f88c */ + /* try { // try from 0035f55c to 0045f75f has its CatchHandler @ 0035f398 */ + if (((bVar2) && (*(ulong *)(lVar5 + 0x28) < local_10)) && (lVar7 != 0)) goto LAB_0035f410; + } + Program::~Program(aPStack_8); + Program::~Program(aPStack_20); + } + Program::Program(in_x8,aPStack_48); + Program::~Program(aPStack_48); +LAB_0035f4d4: + String::deallocate((String *)&local_40); + return; +} + + +================================================================== + +### FUNC 0035f5d0 (496 bytes) name=FUN_0035f5d0 + +/* WARNING: Type propagation algorithm not settling */ + +String * FUN_0035f5d0(String *param_1,long param_2,String *param_3) + +{ + ulong uVar1; + undefined1 *__src; + int iVar2; + void *__dest; + undefined8 uVar3; + long local_440 [2]; + undefined1 *local_430; + undefined1 *local_428; + size_t local_420; + undefined1 *local_418; + ulong local_410; + undefined1 auStack_408 [1032]; + + if (*(long *)(param_2 + 0x20) == 0) { + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + } + else { + local_440[0] = 0; + local_440[1] = 0; + cv::ocl::Program::getPrefix((Program *)(param_2 + 0x10),param_3); + uVar3 = *(undefined8 *)(param_2 + 0x20); + if (((DAT_00532140 == (code *)0x0) && + (DAT_00532140 = (code *)FUN_0034d2bc("clGetProgramInfo"), DAT_00532140 == (code *)0x0)) || + (iVar2 = (*DAT_00532140)(uVar3,0x1165,8,local_440,local_440 + 1), iVar2 != 0)) { + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + } + else { + local_418 = auStack_408; + uVar1 = local_420 + local_440[0] + 0x10; + local_410 = 0x408; + if (0x408 < uVar1) { + local_418 = operator_new__(uVar1); + } + if (local_428 == (undefined1 *)0x0) { + local_428 = &DAT_00472008; + } + local_430 = local_418; + local_410 = uVar1; + memcpy(local_418,local_428,local_420); + uVar3 = *(undefined8 *)(param_2 + 0x20); + local_430 = local_430 + local_420; + /* try { // try from 0035f7a0 to 0045f7a3 has its CatchHandler @ 0035f398 */ + if (((DAT_00532140 == (code *)0x0) && + (DAT_00532140 = (code *)FUN_0034d2bc("clGetProgramInfo"), DAT_00532140 == (code *)0x0)) || + (iVar2 = (*DAT_00532140)(uVar3,0x1166,8,&local_430,local_440 + 1), __src = local_418, + iVar2 != 0)) { + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + } + else { + local_430[local_440[0]] = 0; + *(undefined8 *)param_1 = 0; + *(undefined8 *)(param_1 + 8) = 0; + uVar1 = local_420 + local_440[0]; + if (uVar1 != 0) { + __dest = (void *)cv::String::allocate(param_1,uVar1); + memcpy(__dest,__src,uVar1); + /* try { // try from 0035f798 to 0045f79b has its CatchHandler @ 0035f878 */ + } + } + if ((local_418 != auStack_408) && (local_418 != (undefined1 *)0x0)) { + operator_delete__(local_418); + } + } + cv::String::deallocate((String *)&local_428); + } + return param_1; +} + + +================================================================== + +### FUNC 0035f7f0 (124 bytes) name=write + +/* cv::ocl::Program::write(cv::String&) const */ + +bool __thiscall cv::ocl::Program::write(Program *this,String *param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + long local_10; + undefined8 local_8; + + bVar2 = false; + if (*(long *)this != 0) { + FUN_0035f5d0((String *)&local_10); + String::deallocate(param_1); + if (local_10 != 0) { + piVar3 = (int *)(local_10 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)param_1 = local_10; + *(undefined8 *)(param_1 + 8) = local_8; + String::deallocate((String *)&local_10); + bVar2 = *(long *)(param_1 + 8) != 0; + } + return bVar2; +} + + +================================================================== + +### FUNC 0035f880 (68 bytes) name=getPrefix + +/* cv::ocl::Program::getPrefix() const */ + +void cv::ocl::Program::getPrefix(void) + +{ + long *in_x0; + String *in_x1; + undefined8 *in_x8; + + /* try { // try from 0035f888 to 0045f88b has its CatchHandler @ 0035f398 */ + /* catch() { ... } // from try @ 0035f554 with catch @ 0035f88c */ + if (*in_x0 != 0) { + getPrefix((Program *)(*in_x0 + 0x10),in_x1); + /* try { // try from 0035f89c to 0045f89f has its CatchHandler @ 0035f398 */ + /* catch() { ... } // from try @ 0035f478 with catch @ 0035f8a0 */ + return; + } + *in_x8 = 0; + /* try { // try from 0035f8b0 to 0045f8b3 has its CatchHandler @ 0035f398 */ + in_x8[1] = 0; + /* catch() { ... } // from try @ 0035f900 with catch @ 0035f8b4 + catch() { ... } // from try @ 0035f988 with catch @ 0035f8b4 + catch() { ... } // from try @ 0035fbb0 with catch @ 0035f8b4 + catch() { ... } // from try @ 0035fcbc with catch @ 0035f8b4 + catch() { ... } // from try @ 0035fcd0 with catch @ 0035f8b4 */ + return; +} + + +================================================================== + +### FUNC 0035f8c4 (332 bytes) name=create + +/* cv::ocl::Kernel::create(char const*, cv::ocl::ProgramSource const&, cv::String const&, + cv::String*) */ + +undefined4 +cv::ocl::Kernel::create(char *param_1,ProgramSource *param_2,String *param_3,String *param_4) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + undefined4 uVar5; + ProgramSource *pPVar6; + long lVar7; + int *piVar8; + int *piVar9; + Program aPStack_18 [8]; + undefined8 local_10; + undefined8 local_8; + + piVar9 = *(int **)param_1; + if (piVar9 != (int *)0x0) { + do { + iVar1 = *piVar9; + /* try { // try from 0035f900 to 0045f92f has its CatchHandler @ 0035f8b4 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar3) { + *piVar9 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar7 = *(long *)(piVar9 + 2); + if ((lVar7 != 0) && + ((DAT_005320f0 != (code *)0x0 || + (DAT_005320f0 = (code *)FUN_0034d2bc("clReleaseKernel"), DAT_005320f0 != (code *)0x0)))) { + (*DAT_005320f0)(lVar7); + } + piVar4 = *(int **)(piVar9 + 0x28); + while (piVar4 != piVar9 + 0x28) { + piVar8 = *(int **)piVar4; + Image2D::~Image2D((Image2D *)(piVar4 + 4)); + operator_delete(piVar4); + piVar4 = piVar8; + } + operator_delete(piVar9); + } + param_1[0] = '\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'; + } + local_10 = 0; + local_8 = 0; + pPVar6 = (ProgramSource *)Context::getDefault(true); + Context::getProg(pPVar6,param_3,param_4); + uVar5 = create((Kernel *)param_1,(char *)param_2,aPStack_18); + Program::~Program(aPStack_18); + String::deallocate((String *)&local_10); + /* try { // try from 0035f980 to 0045f983 has its CatchHandler @ 0035fcc0 */ + /* try { // try from 0035f988 to 0045fb6f has its CatchHandler @ 0035f8b4 */ + return uVar5; +} + + +================================================================== + +### FUNC 0035fa6c (8 bytes) name=Kernel + +/* cv::ocl::Kernel::Kernel(char const*, cv::ocl::ProgramSource const&, cv::String const&, + cv::String*) */ + +void __thiscall +cv::ocl::Kernel::Kernel + (Kernel *this,char *param_1,ProgramSource *param_2,String *param_3,String *param_4) + +{ + *(undefined8 *)this = 0; + create((char *)this,(ProgramSource *)param_1,(String *)param_2,param_3); + return; +} + + +================================================================== + +### FUNC 0035fa74 (720 bytes) name=FUN_0035fa74 + +void FUN_0035fa74(undefined4 *param_1,undefined8 *param_2,String *param_3) + +{ + String *this; + char *__n; + char cVar1; + bool bVar2; + undefined2 uVar3; + int iVar4; + Context *this_00; + Device *this_01; + char *pcVar5; + void *__dest; + String *extraout_x1; + String *extraout_x1_00; + String *pSVar6; + int *piVar7; + undefined8 uVar8; + char *pcVar9; + undefined4 local_50; + int local_4c; + char *local_48; + undefined8 local_40; + long local_38; + char *local_30 [2]; + char *local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + this = (String *)(param_1 + 4); + cv::ocl::ProgramSource::ProgramSource((ProgramSource *)(param_1 + 2)); + *(undefined8 *)(param_1 + 4) = 0; + *(undefined8 *)(param_1 + 6) = 0; + *(undefined8 *)(param_1 + 8) = 0; + *param_1 = 1; + pSVar6 = extraout_x1; + if (this != param_3) { + cv::String::deallocate(this); + uVar8 = 0; + pSVar6 = extraout_x1_00; + if (*(long *)param_3 != 0) { + piVar7 = (int *)(*(long *)param_3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = *piVar7 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + uVar8 = *(undefined8 *)param_3; + pSVar6 = (String *)0x0; + } + *(undefined8 *)(param_1 + 4) = uVar8; + *(undefined8 *)(param_1 + 6) = *(undefined8 *)(param_3 + 8); + } + if (param_2[1] == 0) { + return; + } + cv::ocl::Program::getPrefix((Program *)this,pSVar6); + this_00 = (Context *)cv::ocl::Context::getDefault(true); + this_01 = (Device *)cv::ocl::Device::getDefault(); + pcVar9 = (char *)*param_2; + if ((((pcVar9 == (char *)0x0) || (pcVar5 = strchr(pcVar9,10), pcVar5 == (char *)0x0)) || + (pcVar5 = strchr(pcVar5 + 1,10), pcVar5 == (char *)0x0)) || + (pcVar5 = strchr(pcVar5 + 1,10), pcVar5 == (char *)0x0)) goto LAB_0035fbc4; + local_20 = (char *)0x0; + local_18 = 0; + __n = pcVar5 + (1 - (long)pcVar9); + if (__n == (char *)0x0) { +LAB_0035fba8: + /* try { // try from 0035fba8 to 0045fbab has its CatchHandler @ 0035fcac */ + if (local_30[0] == (char *)0x0) goto LAB_0035fbd0; + /* try { // try from 0035fbb0 to 0045fbb3 has its CatchHandler @ 0035f8b4 */ + pcVar9 = ""; +LAB_0035fbb4: + iVar4 = strcmp(pcVar9,local_30[0]); + if (iVar4 == 0) goto LAB_0035fbd0; + } + else { + /* catch() { ... } // from try @ 0035f980 with catch @ 0035fcc0 */ + __dest = (void *)cv::String::allocate((String *)&local_20,(ulong)__n); + /* try { // try from 0035fcd0 to 0045fcd3 has its CatchHandler @ 0035f8b4 */ + /* catch() { ... } // from try @ 0035fd28 with catch @ 0035fcd4 + catch() { ... } // from try @ 0035fdb0 with catch @ 0035fcd4 + catch() { ... } // from try @ 0035ffdc with catch @ 0035fcd4 + catch() { ... } // from try @ 003600d4 with catch @ 0035fcd4 + catch() { ... } // from try @ 003600e8 with catch @ 0035fcd4 */ + memcpy(__dest,pcVar9,(size_t)__n); + if (local_30[0] != local_20) { + if (local_20 == (char *)0x0) goto LAB_0035fba8; + pcVar9 = local_20; + if (local_30[0] == (char *)0x0) { + local_30[0] = ""; + } + goto LAB_0035fbb4; + } +LAB_0035fbd0: + local_48 = pcVar5 + 1; + local_40 = cv::ocl::Device::ptr(this_01); + local_50 = 0; + local_38 = param_2[1] - (long)__n; + local_4c = 0; + uVar8 = cv::ocl::Context::ptr(this_00); + /* try { // try from 0035fd28 to 0045fd57 has its CatchHandler @ 0035fcd4 */ + if ((DAT_00532020 == (code *)0x0) && + (DAT_00532020 = (code *)FUN_0034d2bc(&DAT_0046e580), DAT_00532020 == (code *)0x0)) { + local_4c = -1000; + uVar8 = 0; + } + else { + uVar8 = (*DAT_00532020)(uVar8,1,&local_40,&local_38,&local_48,&local_50,&local_4c); + } + *(undefined8 *)(param_1 + 8) = uVar8; + if (DAT_00532119 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + } + if ((DAT_005329c8 != '\0') && (local_4c != 0)) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_10,0xb); + cVar1 = s_retval____0_0046d938[10]; + uVar3 = s_retval____0_0046d938._8_2_; + *(undefined8 *)pcVar9 = s_retval____0_0046d938._0_8_; + *(undefined2 *)(pcVar9 + 8) = uVar3; + /* catch() { ... } // from try @ 0035fba8 with catch @ 0035fcac */ + pcVar9[10] = cVar1; + cv::error(-0xd7,(String *)&local_10, + "cv::ocl::Program::Impl::Impl(const cv::String&, const cv::String&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xdea); + cv::String::deallocate((String *)&local_10); + /* try { // try from 0035fcbc to 0045fcbf has its CatchHandler @ 0035f8b4 */ + } + } + cv::String::deallocate((String *)&local_20); +LAB_0035fbc4: + cv::String::deallocate((String *)local_30); + return; +} + + +================================================================== + +### FUNC 0035fd94 (232 bytes) name=read + +/* cv::ocl::Program::read(cv::String const&, cv::String const&) */ + +bool __thiscall cv::ocl::Program::read(Program *this,String *param_1,String *param_2) + +{ + int iVar1; + char cVar2; + bool bVar3; + void *pvVar4; + long lVar5; + int *piVar6; + + /* try { // try from 0035fda8 to 0045fdab has its CatchHandler @ 003600d8 */ + /* try { // try from 0035fdb0 to 0045ff93 has its CatchHandler @ 0035fcd4 */ + piVar6 = *(int **)this; + if (piVar6 != (int *)0x0) { + do { + iVar1 = *piVar6; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar3) { + *piVar6 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar5 = *(long *)(piVar6 + 8); + if (lVar5 != 0) { + if ((DAT_005329a8 != (code *)0x0) || + (DAT_005329a8 = (code *)FUN_0034d2bc("clReleaseProgram"), DAT_005329a8 != (code *)0x0)) { + (*DAT_005329a8)(lVar5); + } + piVar6[8] = 0; + piVar6[9] = 0; + } + String::deallocate((String *)(piVar6 + 4)); + ProgramSource::~ProgramSource((ProgramSource *)(piVar6 + 2)); + operator_delete(piVar6); + } + } + pvVar4 = operator_new(0x28); + FUN_0035fa74(pvVar4,param_1,param_2); + lVar5 = *(long *)((long)pvVar4 + 0x20); + *(void **)this = pvVar4; + return lVar5 != 0; +} + + +================================================================== + +### FUNC 0035feb4 (548 bytes) name=FUN_0035feb4 + +undefined8 FUN_0035feb4(undefined8 param_1,UMatData *param_2,uint param_3,ulong param_4) + +{ + Context *this; + Device *this_00; + undefined8 uVar1; + long lVar2; + undefined8 *puVar3; + uint uVar4; + ulong uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + ulong local_10; + ulong local_8; + + if (param_2 == (UMatData *)0x0) { + return 0; + } + cv::UMatData::lock(param_2); + if (*(long *)(param_2 + 0x38) == 0) { + uVar5 = *(ulong *)(param_2 + 0x20); + if (uVar5 == 0) { + local_10 = uVar5; + local_8 = uVar5; + puVar3 = (undefined8 *)cv::String::allocate((String *)&local_10,0x10); + uVar6 = DAT_0046e5a8; + *puVar3 = DAT_0046e5a0; + puVar3[1] = uVar6; + /* catch() { ... } // from try @ 0035ffcc with catch @ 003600c4 */ + cv::error(-0xd7,(String *)&local_10, + "virtual bool cv::ocl::OpenCLAllocator::allocate(cv::UMatData*, int, cv::UMatUsageFlags) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x10a2); + cv::String::deallocate((String *)&local_10); + /* try { // try from 003600d4 to 004600d7 has its CatchHandler @ 0035fcd4 */ + } + this = (Context *)cv::ocl::Context::getDefault(true); + this_00 = (Device *)cv::ocl::Context::device(this,0); + uVar6 = 0x21; + if ((param_4 & 1) != 0) { + uVar6 = 0x31; + } + uVar7 = 8; + if ((param_4 & 1) != 0) { + uVar7 = 0x18; + } + cv::ocl::Device::hostUnifiedMemory(this_00); + uVar1 = cv::ocl::Context::ptr(this); + local_10 = local_10 & 0xffffffff00000000; + uVar9 = *(undefined8 *)(param_2 + 0x28); + uVar8 = *(undefined8 *)(param_2 + 0x20); + if (DAT_00531ff8 == (code *)0x0) { + DAT_00531ff8 = (code *)FUN_0034d2bc("clCreateBuffer"); + if (DAT_00531ff8 != (code *)0x0) goto LAB_0035ffb8; + local_10 = CONCAT44(local_10._4_4_,0xfffffc18); +LAB_00360044: + if ((param_3 >> 0x1a & 1) == 0) { + uVar7 = *(undefined8 *)(param_2 + 0x28); + uVar8 = *(undefined8 *)(param_2 + 0x20); + if (DAT_00531ff8 == (code *)0x0) { + DAT_00531ff8 = (code *)FUN_0034d2bc("clCreateBuffer"); + if (DAT_00531ff8 == (code *)0x0) goto LAB_00360020; + } + lVar2 = (*DAT_00531ff8)(uVar1,uVar6,uVar7,uVar8,&local_10); + if (lVar2 != 0) { + uVar4 = 0x18; + goto LAB_0035ffe4; + } + } + } + else { +LAB_0035ffb8: + /* try { // try from 0035ffcc to 0045ffcf has its CatchHandler @ 003600c4 */ + lVar2 = (*DAT_00531ff8)(uVar1,uVar7,uVar9,uVar8,&local_10); + /* try { // try from 0035ffdc to 0045ffdf has its CatchHandler @ 0035fcd4 */ + if ((lVar2 == 0) || ((int)local_10 < 0)) goto LAB_00360044; + uVar4 = 8; +LAB_0035ffe4: + if ((int)local_10 == 0) { + *(long *)(param_2 + 0x38) = lVar2; + *(undefined8 *)param_2 = *(undefined8 *)(param_2 + 8); + *(undefined8 *)(param_2 + 8) = param_1; + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | uVar4; + *(undefined4 *)(param_2 + 0x48) = 0; + goto LAB_0035fef0; + } + } +LAB_00360020: + uVar6 = 0; + } + else { +LAB_0035fef0: + uVar6 = 1; + if ((param_3 >> 0x19 & 1) != 0) { + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 2; + } + } + cv::UMatData::unlock(param_2); + return uVar6; +} + + +================================================================== + +### FUNC 003600fc (748 bytes) name=FUN_003600fc + +long FUN_003600fc(long param_1,ulong param_2) + +{ + long *plVar1; + uint uVar2; + undefined8 uVar3; + undefined2 uVar4; + char cVar5; + Context *this; + undefined8 uVar6; + void *pvVar7; + char *pcVar8; + long lVar9; + ulong uVar10; + long *plVar11; + ulong uVar12; + ulong uVar13; + long *plVar14; + long *plVar15; + ulong uVar16; + int local_24; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + cv::Mutex::lock((Mutex *)(param_1 + 0x10)); + if (*(long *)(param_1 + 0x20) != 0) { + plVar1 = (long *)(param_1 + 0x38); + if (*(long **)(param_1 + 0x38) != plVar1) { + /* try { // try from 0036023c to 0046023f has its CatchHandler @ 003605a4 */ + lVar9 = 0; + plVar11 = *(long **)(param_1 + 0x38); + uVar10 = 0xffffffffffffffff; + plVar14 = plVar1; + uVar16 = 0; + /* try { // try from 00360244 to 004602cf has its CatchHandler @ 003600ec */ + do { + while (((plVar15 = plVar11, uVar12 = plVar15[3], param_2 <= uVar12 && + (uVar13 = uVar12 - param_2, uVar13 < param_2 >> 3)) && + ((plVar1 == plVar14 || (uVar13 < uVar10))))) { + lVar9 = plVar15[2]; + if (uVar13 == 0) goto LAB_003602a4; + plVar11 = (long *)*plVar15; + uVar10 = uVar13; + plVar14 = plVar15; + uVar16 = uVar12; + if (plVar1 == (long *)*plVar15) goto LAB_0036029c; + } + plVar11 = (long *)*plVar15; + plVar15 = plVar14; + uVar12 = uVar16; + } while (plVar1 != plVar11); +LAB_0036029c: + if (plVar1 != plVar15) { +LAB_003602a4: + FUN_003dc008(plVar15); + operator_delete(plVar15); + *(ulong *)(param_1 + 0x18) = *(long *)(param_1 + 0x18) - uVar12; + pvVar7 = operator_new(0x20); + *(long *)((long)pvVar7 + 0x10) = lVar9; + *(ulong *)((long)pvVar7 + 0x18) = uVar12; + FUN_003dbfec(pvVar7,param_1 + 0x28); + goto LAB_003601bc; + } + } + } + if (param_2 < 0x400) { + uVar10 = 0xfffffffffffffff0; + lVar9 = 0x10; + } + else if (param_2 < 0x10000) { + uVar10 = 0xffffffffffffffc0; + lVar9 = 0x40; + } + else if (param_2 < 0x100000) { + uVar10 = 0xfffffffffffff000; + lVar9 = 0x1000; + } + else { + uVar10 = 0xffffffffffff0000; + if (0xffffff < param_2) { + uVar10 = 0xfffffffffff00000; + } + lVar9 = 0x10000; + if (0xffffff < param_2) { + lVar9 = 0x100000; + } + } + uVar10 = (param_2 - 1) + lVar9 & uVar10; + this = (Context *)cv::ocl::Context::getDefault(true); + /* try { // try from 00360150 to 00460203 has its CatchHandler @ 003600ec */ + local_24 = 0; + uVar6 = cv::ocl::Context::ptr(this); + uVar2 = *(uint *)(param_1 + 0x48); + if ((DAT_00531ff8 == (code *)0x0) && + (DAT_00531ff8 = (code *)FUN_0034d2bc("clCreateBuffer"), DAT_00531ff8 == (code *)0x0)) { + local_24 = -1000; + lVar9 = 0; +LAB_00360300: + local_10 = 0; + /* try { // try from 00360310 to 00460313 has its CatchHandler @ 003605b8 */ + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x14); + uVar3 = s_retval____CL_SUCCESS_0046e5c8._8_8_; + uVar6 = s_retval____CL_SUCCESS_0046e5c8._0_8_; + /* try { // try from 00360318 to 0046058f has its CatchHandler @ 003600ec */ + *(undefined4 *)(pcVar8 + 0x10) = s_retval____CL_SUCCESS_0046e5c8._16_4_; + *(undefined8 *)pcVar8 = uVar6; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd7,(String *)&local_10, + "void cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::OpenCLBufferPoolImpl::BufferEntry&, size_t)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xf96); + cv::String::deallocate((String *)&local_10); + } + else { + lVar9 = (*DAT_00531ff8)(uVar6,(long)(int)(uVar2 | 1),uVar10,0,&local_24); + if (local_24 != 0) goto LAB_00360300; + } + if (lVar9 == 0) { + local_20 = lVar9; + local_18 = lVar9; + pcVar8 = (char *)cv::String::allocate((String *)&local_20,0x17); + cVar5 = s_entry_clBuffer_____NULL_0046d640[0x16]; + uVar4 = s_entry_clBuffer_____NULL_0046d640._20_2_; + uVar3 = s_entry_clBuffer_____NULL_0046d640._8_8_; + uVar6 = s_entry_clBuffer_____NULL_0046d640._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_entry_clBuffer_____NULL_0046d640._16_4_; + *(undefined2 *)(pcVar8 + 0x14) = uVar4; + pcVar8[0x16] = cVar5; + *(undefined8 *)pcVar8 = uVar6; + *(undefined8 *)(pcVar8 + 8) = uVar3; + cv::error(-0xd7,(String *)&local_20, + "void cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::OpenCLBufferPoolImpl::BufferEntry&, size_t)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xf97); + cv::String::deallocate((String *)&local_20); + } + pvVar7 = operator_new(0x20); + *(long *)((long)pvVar7 + 0x10) = lVar9; + *(ulong *)((long)pvVar7 + 0x18) = uVar10; + FUN_003dbfec(pvVar7,param_1 + 0x28); +LAB_003601bc: + cv::Mutex::unlock((Mutex *)(param_1 + 0x10)); + return lVar9; +} + + +================================================================== + +### FUNC 0036041c (8 bytes) name=FUN_0036041c + +void FUN_0036041c(long param_1) + +{ + FUN_003600fc(param_1 + -8); + return; +} + + +================================================================== + +### FUNC 00360424 (556 bytes) name=FUN_00360424 + +UMatData * +FUN_00360424(MatAllocator *param_1,int param_2,long param_3,uint param_4,long param_5,long param_6, + undefined4 param_7,uint param_8) + +{ + int iVar1; + char cVar2; + uint uVar3; + char *pcVar4; + long lVar5; + Context *pCVar6; + Device *this; + UMatData *pUVar7; + int *piVar8; + undefined4 uVar10; + ulong uVar11; + long lVar12; + long lVar13; + undefined8 local_10; + undefined8 local_8; + int *piVar9; + + cVar2 = cv::ocl::useOpenCL(); + if (cVar2 == '\0') goto LAB_003605e4; + if (param_5 != 0) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)cv::String::allocate((String *)&local_10,9); + cVar2 = s_data____0_0046e5e0[8]; + *(undefined8 *)pcVar4 = s_data____0_0046e5e0._0_8_; + pcVar4[8] = cVar2; + cv::error(-0xd7,(String *)&local_10, + "virtual cv::UMatData* cv::ocl::OpenCLAllocator::allocate(int, const int*, int, void*, size_t*, int, cv::UMatUsageFlags) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x105f); + cv::String::deallocate((String *)&local_10); + } + uVar3 = param_2 - 1; + lVar13 = (long)(int)((param_4 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((param_4 & 7) << 1)) & 3)); + if ((int)uVar3 < 0) { +LAB_00360530: + pCVar6 = (Context *)cv::ocl::Context::getDefault(true); + this = (Device *)cv::ocl::Context::device(pCVar6,0); + if ((param_8 & 1) != 0) goto LAB_00360544; +LAB_003605bc: + uVar3 = cv::ocl::Device::hostUnifiedMemory(this); + /* try { // try from 003605c8 to 004605cb has its CatchHandler @ 003600ec */ + /* catch() { ... } // from try @ 0036063c with catch @ 003605cc + catch() { ... } // from try @ 00360704 with catch @ 003605cc + catch() { ... } // from try @ 00360810 with catch @ 003605cc + catch() { ... } // from try @ 00360ab4 with catch @ 003605cc + catch() { ... } // from try @ 00360ac8 with catch @ 003605cc */ + uVar10 = 1; + lVar5 = FUN_003600fc(param_1 + 8,lVar13); + } + else { + lVar5 = (long)(int)uVar3; + if (param_6 != 0) { + uVar11 = 0; + do { + lVar12 = uVar11 * 2; + iVar1 = *(int *)(param_3 + lVar5 * 4 + uVar11); + uVar11 = uVar11 - 4; + *(long *)(param_6 + lVar5 * 8 + lVar12) = lVar13; + lVar13 = lVar13 * iVar1; + } while (uVar11 != ((ulong)uVar3 << 2 ^ 0xfffffffffffffffc)); + goto LAB_00360530; + } + piVar8 = (int *)(param_3 + lVar5 * 4); + do { + piVar9 = piVar8 + -1; + lVar13 = lVar13 * *piVar8; + piVar8 = piVar9; + } while (piVar9 != (int *)(param_3 + (lVar5 - (ulong)uVar3) * 4 + -4)); + /* try { // try from 0036063c to 004606bb has its CatchHandler @ 003605cc */ + pCVar6 = (Context *)cv::ocl::Context::getDefault(true); + this = (Device *)cv::ocl::Context::device(pCVar6,0); + if ((param_8 & 1) == 0) goto LAB_003605bc; +LAB_00360544: + uVar3 = cv::ocl::Device::hostUnifiedMemory(this); + uVar10 = 2; + lVar5 = FUN_003600fc(param_1 + 0x58,lVar13); + } + if (lVar5 != 0) { + pUVar7 = operator_new(0x50); + cv::UMatData::UMatData(pUVar7,param_1); + *(undefined8 *)(pUVar7 + 0x18) = 0; + *(long *)(pUVar7 + 0x28) = lVar13; + *(long *)(pUVar7 + 0x38) = lVar5; + *(uint *)(pUVar7 + 0x30) = uVar3 & 0xff ^ 1; + *(undefined4 *)(pUVar7 + 0x48) = uVar10; + return pUVar7; + } +LAB_003605e4: + pUVar7 = (UMatData *) + (**(code **)(**(long **)(param_1 + 0xa8) + 0x10)) + (*(long **)(param_1 + 0xa8),param_2,param_3,param_4,param_5,param_6,param_7, + param_8); + /* catch() { ... } // from try @ 0036023c with catch @ 003605a4 */ + /* try { // try from 003605b4 to 004605b7 has its CatchHandler @ 003600ec */ + /* catch() { ... } // from try @ 00360310 with catch @ 003605b8 */ + return pUVar7; +} + + +================================================================== + +### FUNC 00360678 (632 bytes) name=FUN_00360678 + +undefined4 FUN_00360678(undefined8 param_1) + +{ + undefined1 *puVar1; + uint uVar2; + undefined8 uVar3; + char cVar4; + byte bVar5; + int iVar6; + char *pcVar7; + Context *this; + undefined8 uVar8; + undefined1 *puVar9; + undefined1 *__s1; + undefined4 uVar10; + ulong uVar11; + undefined8 local_478 [2]; + uint local_464; + undefined8 local_460; + undefined8 local_458; + undefined1 *local_450; + ulong local_448; + undefined1 auStack_440 [1088]; + + local_478[0] = param_1; + cVar4 = cv::ocl::haveOpenCL(); + if (cVar4 == '\0') { + local_450 = (undefined1 *)0x0; + local_448 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_450,0x19); + cVar4 = s_OpenCL_runtime_not_found__0046e5f0[0x18]; + uVar3 = s_OpenCL_runtime_not_found__0046e5f0._8_8_; + uVar8 = s_OpenCL_runtime_not_found__0046e5f0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_OpenCL_runtime_not_found__0046e5f0._16_8_; + pcVar7[0x18] = cVar4; + /* try { // try from 003606fc to 004606ff has its CatchHandler @ 00360aa4 */ + *(undefined8 *)pcVar7 = uVar8; + *(undefined8 *)(pcVar7 + 8) = uVar3; + cv::error(-0xdc,(String *)&local_450, + "static bool cv::ocl::Image2D::Impl::isFormatSupported(cl_image_format)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15ba); + /* try { // try from 00360704 to 004607cf has its CatchHandler @ 003605cc */ + cv::String::deallocate((String *)&local_450); + } + this = (Context *)cv::ocl::Context::getDefault(true); + uVar8 = cv::ocl::Context::ptr(this); + local_464 = 0; + if ((DAT_00532018 != (code *)0x0) || + (DAT_00532018 = (code *)FUN_0034d2bc("clGetSupportedImageFormats"), DAT_00532018 != (code *)0x0 + )) { + (*DAT_00532018)(uVar8,1,0x10f1,0,0,&local_464); + } + local_450 = auStack_440; + local_448 = 0x88; + uVar11 = (ulong)local_464; + puVar9 = local_450; + uVar2 = local_464; + if (0x88 < uVar11) { + puVar9 = operator_new__(uVar11 << 3); + uVar2 = local_464; + } + local_464 = uVar2; + local_450 = puVar9; + local_448 = uVar11; + if ((DAT_00532018 == (code *)0x0) && + (DAT_00532018 = (code *)FUN_0034d2bc("clGetSupportedImageFormats"), DAT_00532018 == (code *)0x0 + )) { + iVar6 = -1000; + } + else { + iVar6 = (*DAT_00532018)(uVar8,1,0x10f1,uVar2,puVar9,0); + } + bVar5 = FUN_00350224(); + if ((iVar6 == 0) < bVar5) { + local_460 = 0; + local_458 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_460,8); + *(undefined8 *)pcVar7 = s_err____0_0046e630._0_8_; + cv::error(-0xd7,(String *)&local_460, + "static bool cv::ocl::Image2D::Impl::isFormatSupported(cl_image_format)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15c6); + cv::String::deallocate((String *)&local_460); + } + puVar9 = local_450; + if (local_464 == 0) { + uVar10 = 0; + } + else { + puVar1 = local_450 + ((ulong)(local_464 - 1) + 1) * 8; + __s1 = local_450; + do { + iVar6 = memcmp(__s1,local_478,8); + if (iVar6 == 0) { + /* try { // try from 00360808 to 0046080b has its CatchHandler @ 00360ab8 */ + uVar10 = 1; + goto LAB_0036080c; + } + __s1 = __s1 + 8; + } while (__s1 != puVar1); + uVar10 = 0; + } +LAB_0036080c: + /* try { // try from 00360810 to 00460a8f has its CatchHandler @ 003605cc */ + if ((puVar9 != auStack_440) && (puVar9 != (undefined1 *)0x0)) { + operator_delete__(puVar9); + } + return uVar10; +} + + +================================================================== + +### FUNC 00360934 (104 bytes) name=isFormatSupported + +/* cv::ocl::Image2D::isFormatSupported(int, int, bool) */ + +void cv::ocl::Image2D::isFormatSupported(int param_1,int param_2,bool param_3) + +{ + if (!param_3) { + FUN_00360678(CONCAT44(*(undefined4 *)(PTR_channelTypes_00501ce0 + (long)param_1 * 4), + *(undefined4 *)(PTR_channelOrders_00501b60 + (long)param_2 * 4))); + return; + } + FUN_00360678(CONCAT44(*(undefined4 *)(PTR_channelTypesNorm_00501f18 + (long)param_1 * 4), + *(undefined4 *)(PTR_channelOrders_00501b60 + (long)param_2 * 4))); + return; +} + + +================================================================== + +### FUNC 0036099c (588 bytes) name=create + +/* cv::ocl::Queue::create(cv::ocl::Context const&, cv::ocl::Device const&) */ + +bool __thiscall cv::ocl::Queue::create(Queue *this,Context *param_1,Device *param_2) + +{ + int iVar1; + char cVar2; + bool bVar3; + undefined2 uVar4; + undefined4 *puVar5; + long lVar6; + long lVar7; + undefined8 uVar8; + char *pcVar9; + Device *this_00; + int *piVar10; + int local_14; + undefined8 local_10; + undefined8 local_8; + + piVar10 = *(int **)this; + if (piVar10 != (int *)0x0) { + do { + iVar1 = *piVar10; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar3) { + *piVar10 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((iVar1 == 1) && (*PTR_DAT_00501f58 == '\0')) { + lVar6 = *(long *)(piVar10 + 2); + if (lVar6 != 0) { + /* try { // try from 00360b28 to 00460be7 has its CatchHandler @ 00360acc */ + if ((DAT_00532988 != (code *)0x0) || + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 != (code *)0x0)) { + (*DAT_00532988)(lVar6); + } + uVar8 = *(undefined8 *)(piVar10 + 2); + if ((DAT_00532138 != (code *)0x0) || + (DAT_00532138 = (code *)FUN_0034d2bc("clReleaseCommandQueue"), + DAT_00532138 != (code *)0x0)) { + (*DAT_00532138)(uVar8); + } + } + operator_delete(piVar10); + } + } + puVar5 = operator_new(0x10); + *puVar5 = 1; + lVar6 = Context::ptr(param_1); + if (lVar6 == 0) { + param_1 = (Context *)Context::getDefault(true); + lVar6 = Context::ptr(param_1); + } + lVar7 = Device::ptr(param_2); + if (lVar7 == 0) { + this_00 = (Device *)Context::device(param_1,0); + lVar7 = Device::ptr(this_00); + } + local_14 = 0; + if ((DAT_005320f8 == (code *)0x0) && + (DAT_005320f8 = (code *)FUN_0034d2bc("clCreateCommandQueue"), DAT_005320f8 == (code *)0x0)) { + local_14 = -1000; + uVar8 = 0; + } + else { + uVar8 = (*DAT_005320f8)(lVar6,lVar7,0,&local_14); + } + *(undefined8 *)(puVar5 + 2) = uVar8; + if (DAT_00532119 == '\0') { + DAT_005329c8 = FUN_00350010("OPENCV_OPENCL_RAISE_ERROR"); + DAT_00532119 = '\x01'; + } + if ((DAT_005329c8 != '\0') && (local_14 != 0)) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0xb); + cVar2 = s_retval____0_0046d938[10]; + uVar4 = s_retval____0_0046d938._8_2_; + /* catch() { ... } // from try @ 003606fc with catch @ 00360aa4 */ + /* try { // try from 00360ab4 to 00460ab7 has its CatchHandler @ 003605cc */ + /* catch() { ... } // from try @ 00360808 with catch @ 00360ab8 */ + /* try { // try from 00360ac8 to 00460acb has its CatchHandler @ 003605cc */ + /* catch() { ... } // from try @ 00360b28 with catch @ 00360acc + catch() { ... } // from try @ 00360c28 with catch @ 00360acc + catch() { ... } // from try @ 00360ecc with catch @ 00360acc */ + *(undefined8 *)pcVar9 = s_retval____0_0046d938._0_8_; + *(undefined2 *)(pcVar9 + 8) = uVar4; + pcVar9[10] = cVar2; + error(-0xd7,(String *)&local_10, + "cv::ocl::Queue::Impl::Impl(const cv::ocl::Context&, const cv::ocl::Device&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xb9a); + String::deallocate((String *)&local_10); + } + lVar6 = *(long *)(puVar5 + 2); + *(undefined4 **)this = puVar5; + return lVar6 != 0; +} + + +================================================================== + +### FUNC 00360c10 (8 bytes) name=Queue + +/* cv::ocl::Queue::Queue(cv::ocl::Context const&, cv::ocl::Device const&) */ + +void __thiscall cv::ocl::Queue::Queue(Queue *this,Context *param_1,Device *param_2) + +{ + *(undefined8 *)this = 0; + create(this,param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00360c18 (132 bytes) name=getDefault + +/* cv::ocl::Queue::getDefault() */ + +Queue * cv::ocl::Queue::getDefault(void) + +{ + Queue *this; + char cVar1; + TLSDataContainer *this_00; + long lVar2; + Context *pCVar3; + Device aDStack_8 [8]; + + /* try { // try from 00360c20 to 00460c23 has its CatchHandler @ 00360ebc */ + this_00 = (TLSDataContainer *)FUN_003b7ff8(); + /* try { // try from 00360c28 to 00460ea7 has its CatchHandler @ 00360acc */ + lVar2 = TLSDataContainer::getData(this_00); + this = (Queue *)(lVar2 + 0x10); + if ((*(long *)(lVar2 + 0x10) == 0) && (cVar1 = haveOpenCL(), cVar1 != '\0')) { + pCVar3 = (Context *)Context::getDefault(true); + Device::Device(aDStack_8); + create(this,pCVar3,aDStack_8); + Device::~Device(aDStack_8); + return this; + } + return this; +} + + +================================================================== + +### FUNC 00360cb0 (24 bytes) name=finish + +/* cv::ocl::finish() */ + +void cv::ocl::finish(void) + +{ + Queue *this; + + this = (Queue *)Queue::getDefault(); + Queue::finish(this); + return; +} + + +================================================================== + +### FUNC 00360cc8 (1852 bytes) name=FUN_00360cc8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00360cc8(long param_1,UMatData *param_2) + +{ + undefined2 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + char cVar8; + int iVar9; + char *pcVar10; + Queue *this; + void *pvVar11; + undefined8 *puVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + ulong local_38 [2]; + size_t local_28; + void *local_20; + undefined8 local_18; + void *local_10; + void *local_8; + + if (param_2 != (UMatData *)0x0) { + if (*(int *)(param_2 + 0x10) < 0) { + local_28 = 0; + local_20 = (void *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_28,0x11); + uVar13 = s_u_>urefcount_>__0_0046ac38._8_8_; + uVar15 = s_u_>urefcount_>__0_0046ac38._0_8_; + pcVar10[0x10] = s_u_>urefcount_>__0_0046ac38[0x10]; + *(undefined8 *)pcVar10 = uVar15; + *(undefined8 *)(pcVar10 + 8) = uVar13; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x111c); + cv::String::deallocate((String *)&local_28); + } + if (*(int *)(param_2 + 0x14) < 0) { + local_28 = 0; + local_20 = (void *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_28,0x10); + uVar15 = s_u_>refcount_>__0_0046ac50._8_8_; + *(undefined8 *)pcVar10 = s_u_>refcount_>__0_0046ac50._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar15; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x111d); + cv::String::deallocate((String *)&local_28); + } + if ((*(long *)(param_2 + 0x38) == 0) || (*(int *)(param_2 + 0x10) != 0)) { + local_28 = 0; + local_20 = (void *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_28,0x23); + cVar8 = s_u_>handle____0____u_>urefcount___0046e658[0x22]; + uVar2 = s_u_>handle____0____u_>urefcount___0046e658._24_8_; + uVar14 = s_u_>handle____0____u_>urefcount___0046e658._16_8_; + uVar13 = s_u_>handle____0____u_>urefcount___0046e658._8_8_; + uVar15 = s_u_>handle____0____u_>urefcount___0046e658._0_8_; + *(undefined2 *)(pcVar10 + 0x20) = s_u_>handle____0____u_>urefcount___0046e658._32_2_; + pcVar10[0x22] = cVar8; + *(undefined8 *)pcVar10 = uVar15; + *(undefined8 *)(pcVar10 + 8) = uVar13; + *(undefined8 *)(pcVar10 + 0x10) = uVar14; + *(undefined8 *)(pcVar10 + 0x18) = uVar2; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x111f); + cv::String::deallocate((String *)&local_28); + } + if ((*(uint *)(param_2 + 0x30) >> 3 & 1) == 0) { + if (*(int *)(param_2 + 0x14) != 0) { + local_28 = 0; + local_20 = (void *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_28,0x10); + uVar15 = s_u_>refcount____0_0046e790._8_8_; + *(undefined8 *)pcVar10 = s_u_>refcount____0_0046e790._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar15; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1180); + cv::String::deallocate((String *)&local_28); + } + if (((*(void **)(param_2 + 0x18) != (void *)0x0) && ((*(uint *)(param_2 + 0x30) & 1) != 0)) && + ((*(uint *)(param_2 + 0x30) >> 5 & 1) == 0)) { + cv::fastFree(*(void **)(param_2 + 0x18)); + *(undefined8 *)(param_2 + 0x18) = 0; + } + if ((*(uint *)(param_2 + 0x48) & 1) == 0) { + if ((*(uint *)(param_2 + 0x48) >> 1 & 1) == 0) { + uVar15 = *(undefined8 *)(param_2 + 0x38); + /* catch() { ... } // from try @ 00361028 with catch @ 003612b8 */ + if ((DAT_00532980 != (code *)0x0) || + (DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"), DAT_00532980 != (code *)0x0 + )) { + (*DAT_00532980)(uVar15); + } + } + else { + FUN_0034e87c(param_1 + 0x58,*(undefined8 *)(param_2 + 0x38)); + } + } + else { + FUN_0034e87c(param_1 + 8,*(undefined8 *)(param_2 + 0x38)); + } + *(undefined8 *)(param_2 + 0x38) = 0; + cv::UMatData::~UMatData(param_2); + operator_delete(param_2); + } + else { + if (((*(uint *)(param_2 + 0x30) >> 1 & 1) != 0) && (0 < *(int *)(param_2 + 0x14))) { + this = (Queue *)cv::ocl::Queue::getDefault(); + uVar15 = cv::ocl::Queue::ptr(this); + if ((*(uint *)(param_2 + 0x30) & 0x18) == 0x18) { + local_20 = *(void **)(param_2 + 0x20); + local_28 = *(size_t *)(param_2 + 0x28); + local_18 = 0x10; + local_8 = (void *)0x0; + local_10 = local_20; + if (((ulong)local_20 & 0xf) != 0) { + local_8 = operator_new__(local_28 + 0xf); + local_10 = (void *)((long)local_8 + 0xfU & 0xfffffffffffffff0); + } + cVar8 = FUN_00350224(); + pvVar11 = local_10; + uVar13 = *(undefined8 *)(param_2 + 0x38); + uVar14 = *(undefined8 *)(param_2 + 0x28); + if (cVar8 == '\0') { + if ((DAT_005320a0 != (code *)0x0) || + (DAT_005320a0 = (code *)FUN_0034d2bc("clEnqueueReadBuffer"), + DAT_005320a0 != (code *)0x0)) { + (*DAT_005320a0)(uVar15,uVar13,1,0,uVar14,pvVar11,0,0,0); + } + } + else if (((DAT_005320a0 == (code *)0x0) && + (DAT_005320a0 = (code *)FUN_0034d2bc("clEnqueueReadBuffer"), + DAT_005320a0 == (code *)0x0)) || + (iVar9 = (*DAT_005320a0)(uVar15,uVar13,1,0,uVar14,pvVar11,0,0,0), iVar9 != 0)) { + local_38[0] = 0; + local_38[1] = 0; + pvVar11 = (void *)cv::String::allocate((String *)local_38,0x62); + memcpy(pvVar11, + "clEnqueueReadBuffer(q, (cl_mem)u->handle, 1, 0, u->size, alignedPtr.getAlignedPtr(), 0, 0, 0) == 0" + ,0x62); + /* try { // try from 00361028 to 0046102b has its CatchHandler @ 003612b8 */ + cv::error(-0xd7,(String *)local_38, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1154); + cv::String::deallocate((String *)local_38); + /* try { // try from 00361038 to 004612af has its CatchHandler @ 00360ed0 */ + } + if ((local_8 != (void *)0x0) && + (memcpy(local_20,local_10,local_28), local_8 != (void *)0x0)) { + operator_delete__(local_8); + } + } + else { + local_38[0] = local_38[0] & 0xffffffff00000000; + uVar13 = *(undefined8 *)(param_2 + 0x38); + uVar14 = *(undefined8 *)(param_2 + 0x28); + if ((DAT_00532038 == (code *)0x0) && + (DAT_00532038 = (code *)FUN_0034d2bc(&DAT_0046e700), DAT_00532038 == (code *)0x0)) { + local_38[0] = CONCAT44(local_38[0]._4_4_,0xfffffc18); + uVar13 = 0; + } + else { + uVar13 = (*DAT_00532038)(uVar15,uVar13,1,3,0,uVar14,0,0,0,local_38); + } + cVar8 = FUN_00350224(); + if ((cVar8 != '\0') && ((int)local_38[0] != 0)) { + local_28 = 0; + local_20 = (void *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_28,0xb); + cVar8 = s_retval____0_0046d938[10]; + uVar1 = s_retval____0_0046d938._8_2_; + *(undefined8 *)pcVar10 = s_retval____0_0046d938._0_8_; + *(undefined2 *)(pcVar10 + 8) = uVar1; + pcVar10[10] = cVar8; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x115d); + cv::String::deallocate((String *)&local_28); + } + cVar8 = FUN_00350224(); + uVar14 = *(undefined8 *)(param_2 + 0x38); + if (cVar8 == '\0') { + if ((DAT_00532068 != (code *)0x0) || + (DAT_00532068 = (code *)FUN_0034d2bc("clEnqueueUnmapMemObject"), + DAT_00532068 != (code *)0x0)) { + (*DAT_00532068)(uVar15,uVar14,uVar13,0,0,0); + } + } + else { + /* try { // try from 00361328 to 00461353 has its CatchHandler @ 003612cc */ + if (((DAT_00532068 == (code *)0x0) && + (DAT_00532068 = (code *)FUN_0034d2bc("clEnqueueUnmapMemObject"), + DAT_00532068 == (code *)0x0)) || + (iVar9 = (*DAT_00532068)(uVar15,uVar14,uVar13,0,0,0), iVar9 != 0)) { + local_28 = 0; + local_20 = (void *)0x0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_28,0x41); + uVar7 = DAT_0046e768; + uVar6 = DAT_0046e760; + uVar5 = DAT_0046e758; + uVar4 = DAT_0046e750; + uVar3 = _LAB_0046e748; + uVar2 = _LAB_0046e740; + uVar14 = _DAT_0046e738; + uVar13 = DAT_0046e730; + *(undefined1 *)(puVar12 + 8) = DAT_0046e770; + *puVar12 = uVar13; + puVar12[1] = uVar14; + puVar12[2] = uVar2; + puVar12[3] = uVar3; + puVar12[4] = uVar4; + puVar12[5] = uVar5; + puVar12[6] = uVar6; + puVar12[7] = uVar7; + /* try { // try from 003613a4 to 004613a7 has its CatchHandler @ 00361910 */ + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x115e); + /* try { // try from 003613ac to 00461473 has its CatchHandler @ 003612cc */ + cv::String::deallocate((String *)&local_28); + } + } + cVar8 = FUN_00350224(); + if (cVar8 == '\0') { + FUN_0034d4d8(uVar15); + } + else { + iVar9 = FUN_0034d4d8(uVar15); + /* catch() { ... } // from try @ 00360c20 with catch @ 00360ebc */ + if (iVar9 != 0) { + /* catch() { ... } // from try @ 00361328 with catch @ 003612cc + catch() { ... } // from try @ 003613ac with catch @ 003612cc + catch() { ... } // from try @ 003614b4 with catch @ 003612cc + catch() { ... } // from try @ 00361588 with catch @ 003612cc + catch() { ... } // from try @ 0036190c with catch @ 003612cc + catch() { ... } // from try @ 00361920 with catch @ 003612cc + catch() { ... } // from try @ 00361934 with catch @ 003612cc */ + local_28 = 0; + local_20 = (void *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_28,0x10); + uVar15 = s_clFinish_q_____0_0046e778._8_8_; + *(undefined8 *)pcVar10 = s_clFinish_q_____0_0046e778._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar15; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x115f); + cv::String::deallocate((String *)&local_28); + } + } + } + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd; + } + /* try { // try from 00360ecc to 00460ecf has its CatchHandler @ 00360acc */ + /* catch() { ... } // from try @ 00360f34 with catch @ 00360ed0 + catch() { ... } // from try @ 00361038 with catch @ 00360ed0 + catch() { ... } // from try @ 003612c8 with catch @ 00360ed0 */ + uVar15 = *(undefined8 *)(param_2 + 0x38); + if ((DAT_00532980 != (code *)0x0) || + (DAT_00532980 = (code *)FUN_0034d2bc("clReleaseMemObject"), DAT_00532980 != (code *)0x0)) { + (*DAT_00532980)(uVar15); + } + *(undefined8 *)(param_2 + 0x38) = 0; + *(undefined8 *)(param_2 + 8) = *(undefined8 *)param_2; + if (((*(void **)(param_2 + 0x18) != (void *)0x0) && ((*(uint *)(param_2 + 0x30) & 1) != 0)) && + ((*(uint *)(param_2 + 0x30) >> 5 & 1) == 0)) { + cv::fastFree(*(void **)(param_2 + 0x18)); + } + *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_2 + 0x20); + if (*(int *)(param_2 + 0x14) == 0) { + (**(code **)(**(long **)(param_2 + 8) + 0x20))(*(long **)(param_2 + 8),param_2); + /* try { // try from 00360f34 to 00460fef has its CatchHandler @ 00360ed0 */ + return; + } + } + } + return; +} + + +================================================================== + +### FUNC 003614b4 (1968 bytes) name=FUN_003614b4 + +void FUN_003614b4(long *param_1,UMatData *param_2,UMatData *param_3,int param_4,undefined8 *param_5, + undefined8 *param_6,undefined8 *param_7,undefined8 *param_8,undefined8 *param_9, + char param_10) + +{ + uint uVar1; + bool bVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + char cVar7; + int iVar8; + ulong uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + char *pcVar13; + Queue *this; + undefined8 uVar14; + void *pvVar15; + ulong uVar16; + undefined8 uVar17; + ulong uVar18; + long lVar19; + long lVar20; + String *this_00; + long lVar21; + undefined8 uVar22; + long lVar23; + undefined8 uVar24; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003614b4 to 0046153f has its CatchHandler @ 003612cc */ + if (param_2 == (UMatData *)0x0) { + return; + } + if (param_3 == (UMatData *)0x0) { + return; + } + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + if (param_6 == (undefined8 *)0x0) { + lVar21 = 0; + } + else { + lVar21 = param_6[(long)param_4 + -1]; + } + if (param_8 == (undefined8 *)0x0) { + uVar1 = param_4 - 2; + uVar9 = (ulong)uVar1; + lVar20 = param_5[(long)param_4 + -1]; + if (-1 < (int)uVar1) { + if (param_6 == (undefined8 *)0x0) { + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + bVar2 = true; + uVar16 = 0; + do { + if (lVar20 == *(long *)((long)param_7 + uVar16 + uVar18)) { + if (lVar20 != *(long *)((long)param_9 + uVar16 + uVar18)) { + bVar2 = false; + } + } + else { + bVar2 = false; + } + lVar23 = uVar16 + uVar18; + uVar16 = uVar16 - 8; + lVar20 = lVar20 * *(long *)((long)param_5 + lVar23); + } while (uVar16 != (uVar9 << 3 ^ 0xfffffffffffffff8)); + } + else { + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + bVar2 = true; + uVar16 = 0; + do { + lVar23 = *(long *)((long)param_7 + uVar16 + uVar18); + if (lVar20 == lVar23) { + if (lVar20 != *(long *)((long)param_9 + uVar16 + uVar18)) { + bVar2 = false; + } + } + else { + bVar2 = false; + } + lVar19 = uVar16 + uVar18; + lVar3 = uVar16 + uVar18; + uVar16 = uVar16 - 8; + lVar20 = lVar20 * *(long *)((long)param_5 + lVar19); + lVar21 = lVar21 + lVar23 * *(long *)((long)param_6 + lVar3); + } while (uVar16 != (uVar9 << 3 ^ 0xfffffffffffffff8)); + } + lVar23 = 0; + goto LAB_003615f8; + } + bVar2 = true; + lVar23 = 0; + uVar17 = 0; + uVar10 = 0; + uVar11 = 0; + uVar12 = 0; + } + else { + uVar1 = param_4 - 2; + uVar9 = (ulong)uVar1; + lVar23 = param_8[(long)param_4 + -1]; + lVar20 = param_5[(long)param_4 + -1]; + if ((int)uVar1 < 0) { + bVar2 = true; + uVar12 = 0; + uVar11 = 0; + uVar10 = 0; + uVar17 = 0; + } + else { + if (param_6 == (undefined8 *)0x0) { + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + /* try { // try from 003619a0 to 004619cb has its CatchHandler @ 00361938 */ + bVar2 = true; + uVar16 = 0; + do { + if (lVar20 == *(long *)((long)param_7 + uVar16 + uVar18)) { + if (lVar20 != *(long *)((long)param_9 + uVar16 + uVar18)) { + bVar2 = false; + } + } + else { + bVar2 = false; + } + lVar19 = uVar16 + uVar18; + lVar3 = uVar16 + uVar18; + lVar4 = uVar16 + uVar18; + uVar16 = uVar16 - 8; + lVar20 = lVar20 * *(long *)((long)param_5 + lVar19); + lVar23 = lVar23 + *(long *)((long)param_9 + lVar3) * *(long *)((long)param_8 + lVar4); + } while (uVar16 != (uVar9 << 3 ^ 0xfffffffffffffff8)); + } + else { + /* try { // try from 00361580 to 00461583 has its CatchHandler @ 003618fc */ + uVar16 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | uVar9 << 3; + /* try { // try from 00361588 to 004618e7 has its CatchHandler @ 003612cc */ + uVar18 = 0; + bVar2 = true; + do { + lVar19 = *(long *)((long)param_7 + uVar18 + uVar16); + if (lVar20 == lVar19) { + if (lVar20 != *(long *)((long)param_9 + uVar18 + uVar16)) { + bVar2 = false; + } + } + else { + bVar2 = false; + } + lVar4 = uVar18 + uVar16; + lVar5 = uVar18 + uVar16; + lVar3 = uVar18 + uVar16; + lVar6 = uVar18 + uVar16; + uVar18 = uVar18 - 8; + lVar20 = lVar20 * *(long *)((long)param_5 + lVar4); + lVar21 = lVar21 + lVar19 * *(long *)((long)param_6 + lVar5); + lVar23 = lVar23 + *(long *)((long)param_9 + lVar3) * *(long *)((long)param_8 + lVar6); + } while (uVar18 != (uVar9 << 3 ^ 0xfffffffffffffff8)); + } +LAB_003615f8: + if (bVar2) { + uVar12 = 0; + uVar11 = 0; + uVar10 = 0; + uVar17 = 0; + } + else if (param_4 == 2) { + local_40 = *param_5; + local_48 = param_5[1]; + local_38 = 1; + if (param_6 != (undefined8 *)0x0) { + local_30 = param_6[1]; + local_28 = *param_6; + } + if (param_8 != (undefined8 *)0x0) { + local_18 = param_8[1]; + /* try { // try from 00361a1c to 00461a1f has its CatchHandler @ 00361f80 */ + local_10 = *param_8; + /* try { // try from 00361a24 to 00461ab7 has its CatchHandler @ 00361938 */ + } + uVar12 = 0; + uVar10 = 0; + uVar17 = *param_7; + uVar11 = *param_9; + } + else { + if (3 < param_4) { + local_58 = 0; + local_50 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_58,9); + cVar7 = s_dims_<__3_0046e7a8[8]; + /* try { // try from 00361af8 to 00461afb has its CatchHandler @ 00361f94 */ + /* try { // try from 00361b00 to 00461bff has its CatchHandler @ 00361938 */ + *(undefined8 *)pcVar13 = s_dims_<__3_0046e7a8._0_8_; + pcVar13[8] = cVar7; + cv::error(-0xd7,(String *)&local_58, + "bool cv::ocl::OpenCLAllocator::checkContinuous(int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, size_t&, size_t*, size_t&, size_t*, size_t*, size_t&, size_t*, size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x127f); + cv::String::deallocate((String *)&local_58); + } + local_48 = param_5[2]; + local_40 = param_5[1]; + local_38 = *param_5; + if (param_6 != (undefined8 *)0x0) { + local_30 = param_6[2]; + local_28 = param_6[1]; + local_20 = *param_6; + } + if (param_8 != (undefined8 *)0x0) { + local_18 = param_8[2]; + local_10 = param_8[1]; + local_8 = *param_8; + } + uVar17 = param_7[1]; + uVar10 = *param_7; + uVar11 = param_9[1]; + uVar12 = *param_9; + } + } + } + cv::UMatData::lock(param_2); + cv::UMatData::lock(param_3); + if ((*(long *)(param_2 + 0x38) == 0) || + ((*(long *)(param_2 + 0x18) != 0 && + ((*(uint *)(param_2 + 0x30) >> 1 & 1) < (*(uint *)(param_2 + 0x30) >> 2 & 1))))) { + (**(code **)(*param_1 + 0x40)) + (param_1,param_3,*(long *)(param_2 + 0x18) + lVar21,param_4,param_5,param_8,param_9, + param_7); + goto LAB_003616e8; + } + if ((*(long *)(param_3 + 0x38) == 0) || + ((*(long *)(param_3 + 0x18) != 0 && + ((*(uint *)(param_3 + 0x30) >> 1 & 1) < (*(uint *)(param_3 + 0x30) >> 2 & 1))))) { + (**(code **)(*param_1 + 0x38)) + (param_1,param_2,*(long *)(param_3 + 0x18) + lVar23,param_4,param_5,param_6,param_7, + param_9); + *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) & 0xfffffffd | 4; + goto LAB_003616e8; + } + if (*(int *)(param_3 + 0x14) != 0) { + local_88 = 0; + local_80 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_88,0x12); + uVar22 = s_dst_>refcount____0_0046e7b8._8_8_; + uVar14 = s_dst_>refcount____0_0046e7b8._0_8_; + *(undefined2 *)(pcVar13 + 0x10) = s_dst_>refcount____0_0046e7b8._16_2_; + *(undefined8 *)pcVar13 = uVar14; + *(undefined8 *)(pcVar13 + 8) = uVar22; + cv::error(-0xd7,(String *)&local_88, + "virtual void cv::ocl::OpenCLAllocator::copy(cv::UMatData*, cv::UMatData*, int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, bool) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x13a3); + cv::String::deallocate((String *)&local_88); + } + this = (Queue *)cv::ocl::Queue::getDefault(); + uVar14 = cv::ocl::Queue::ptr(this); + if (bVar2) { + uVar17 = *(undefined8 *)(param_2 + 0x38); + uVar10 = *(undefined8 *)(param_3 + 0x38); + if (((DAT_00532130 == (code *)0x0) && + (DAT_00532130 = (code *)FUN_0034d2bc("clEnqueueCopyBuffer"), DAT_00532130 == (code *)0x0)) + || (iVar8 = (*DAT_00532130)(uVar14,uVar17,uVar10,lVar21,lVar23,lVar20,0,0,0), iVar8 != 0)) { + this_00 = (String *)&local_78; + local_78 = 0; + local_70 = 0; + pvVar15 = (void *)cv::String::allocate(this_00,0x7f); + memcpy(pvVar15, + "(retval = clEnqueueCopyBuffer(q, (cl_mem)src->handle, (cl_mem)dst->handle, srcrawofs, dstrawofs, total, 0, 0, 0)) == CL_SUCCESS" + ,0x7f); + cv::error(-0xd7,this_00, + "virtual void cv::ocl::OpenCLAllocator::copy(cv::UMatData*, cv::UMatData*, int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, bool) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x13f3); +LAB_00361964: + cv::String::deallocate(this_00); + } + } + else { + uVar22 = *(undefined8 *)(param_2 + 0x38); + uVar24 = *(undefined8 *)(param_3 + 0x38); + /* catch() { ... } // from try @ 00361580 with catch @ 003618fc */ + /* try { // try from 0036190c to 0046190f has its CatchHandler @ 003612cc */ + /* catch() { ... } // from try @ 003613a4 with catch @ 00361910 */ + if (((DAT_005329c0 == (code *)0x0) && + (DAT_005329c0 = (code *)FUN_0034d2bc("clEnqueueCopyBufferRect"), DAT_005329c0 == (code *)0x0 + )) || (iVar8 = (*DAT_005329c0)(uVar14,uVar22,uVar24,&local_30,&local_18,&local_48,uVar17, + uVar10,uVar11,uVar12,0,0,0), iVar8 != 0)) { + this_00 = (String *)&local_68; + /* try { // try from 00361920 to 00461923 has its CatchHandler @ 003612cc */ + /* catch() { ... } // from try @ 003614ac with catch @ 00361924 */ + local_68 = 0; + local_60 = 0; + pvVar15 = (void *)cv::String::allocate(this_00,0xc6); + /* try { // try from 00361934 to 00461937 has its CatchHandler @ 003612cc */ + /* catch() { ... } // from try @ 003619a0 with catch @ 00361938 + catch() { ... } // from try @ 00361a24 with catch @ 00361938 + catch() { ... } // from try @ 00361b00 with catch @ 00361938 + catch() { ... } // from try @ 00361c40 with catch @ 00361938 + catch() { ... } // from try @ 00361f7c with catch @ 00361938 + catch() { ... } // from try @ 00361f90 with catch @ 00361938 + catch() { ... } // from try @ 00361fa4 with catch @ 00361938 */ + memcpy(pvVar15,&DAT_0046e880,0xc6); + cv::error(-0xd7,this_00, + "virtual void cv::ocl::OpenCLAllocator::copy(cv::UMatData*, cv::UMatData*, int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, bool) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x13fb); + goto LAB_00361964; + } + } + *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) & 0xfffffffb | 2; + if (param_10 != '\0') { + cVar7 = FUN_00350224(); + if (cVar7 == '\0') { + FUN_0034d4d8(uVar14); + } + else { + /* try { // try from 00361c38 to 00461c3b has its CatchHandler @ 00361f6c */ + /* try { // try from 00361c40 to 00461f57 has its CatchHandler @ 00361938 */ + if (((DAT_00532988 == (code *)0x0) && + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 == (code *)0x0)) || + (iVar8 = (*DAT_00532988)(uVar14), iVar8 != 0)) { + local_58 = 0; + local_50 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_58,0x10); + uVar17 = s_clFinish_q_____0_0046e778._8_8_; + *(undefined8 *)pcVar13 = s_clFinish_q_____0_0046e778._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar17; + cv::error(-0xd7,(String *)&local_58, + "virtual void cv::ocl::OpenCLAllocator::copy(cv::UMatData*, cv::UMatData*, int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, bool) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1412); + cv::String::deallocate((String *)&local_58); + } + } + } +LAB_003616e8: + cv::UMatData::unlock(param_3); + cv::UMatData::unlock(param_2); + return; +} + + +================================================================== + +### FUNC 00361ce4 (1612 bytes) name=FUN_00361ce4 + +void FUN_00361ce4(undefined8 param_1,UMatData *param_2,void *param_3,int param_4,long *param_5, + undefined8 *param_6,undefined8 *param_7,long *param_8) + +{ + uint uVar1; + bool bVar2; + char cVar3; + undefined4 uVar4; + undefined2 uVar5; + int iVar6; + ulong uVar7; + long lVar8; + long lVar9; + undefined8 uVar10; + undefined8 uVar11; + Queue *this; + undefined8 uVar12; + long *plVar13; + char *pcVar14; + void *pvVar15; + long lVar16; + ulong uVar17; + ulong uVar18; + long lVar19; + String *this_00; + long lVar20; + undefined8 uVar21; + void *pvVar22; + long lVar23; + long local_78; + long local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + long local_48; + long local_40; + long local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + if (param_2 == (UMatData *)0x0) { + return; + } + if ((*(int *)(param_2 + 0x14) != 0) && ((*(uint *)(param_2 + 0x30) >> 3 & 1) == 0)) { + local_18 = 0; + local_10 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_18,0x21); + uVar21 = s_u_>refcount____0____u_>tempUMat__0046eac8._24_8_; + uVar12 = s_u_>refcount____0____u_>tempUMat__0046eac8._16_8_; + uVar11 = s_u_>refcount____0____u_>tempUMat__0046eac8._8_8_; + uVar10 = s_u_>refcount____0____u_>tempUMat__0046eac8._0_8_; + /* catch() { ... } // from try @ 00361c38 with catch @ 00361f6c */ + /* try { // try from 00361f7c to 00461f7f has its CatchHandler @ 00361938 */ + /* catch() { ... } // from try @ 00361a1c with catch @ 00361f80 */ + /* try { // try from 00361f90 to 00461f93 has its CatchHandler @ 00361938 */ + pcVar14[0x20] = s_u_>refcount____0____u_>tempUMat__0046eac8[0x20]; + /* catch() { ... } // from try @ 00361af8 with catch @ 00361f94 */ + *(undefined8 *)pcVar14 = uVar10; + *(undefined8 *)(pcVar14 + 8) = uVar11; + *(undefined8 *)(pcVar14 + 0x10) = uVar12; + *(undefined8 *)(pcVar14 + 0x18) = uVar21; + /* try { // try from 00361fa4 to 00461fa7 has its CatchHandler @ 00361938 */ + cv::error(-0xd7,(String *)&local_18, + "virtual void cv::ocl::OpenCLAllocator::upload(cv::UMatData*, const void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1303); + /* catch() { ... } // from try @ 00361ffc with catch @ 00361fa8 + catch() { ... } // from try @ 00362080 with catch @ 00361fa8 + catch() { ... } // from try @ 003621c8 with catch @ 00361fa8 + catch() { ... } // from try @ 00362504 with catch @ 00361fa8 + catch() { ... } // from try @ 00362518 with catch @ 00361fa8 */ + cv::String::deallocate((String *)&local_18); + } + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + if (param_6 == (undefined8 *)0x0) { + uVar1 = param_4 - 2; + lVar19 = param_5[(long)param_4 + -1]; + if (-1 < (int)uVar1) { + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + uVar17 = (ulong)uVar1 << 3 ^ 0xfffffffffffffff8; + /* try { // try from 003621c0 to 004621c3 has its CatchHandler @ 003624f4 */ + bVar2 = true; + uVar7 = 0; + /* try { // try from 003621c8 to 004624df has its CatchHandler @ 00361fa8 */ + do { + while (lVar19 == *(long *)((long)param_8 + uVar7 + uVar18)) { + lVar20 = uVar7 + uVar18; + lVar8 = uVar7 + uVar18; + uVar7 = uVar7 - 8; + if (lVar19 != *(long *)((long)param_7 + lVar20)) { + bVar2 = false; + } + lVar19 = lVar19 * *(long *)((long)param_5 + lVar8); + if (uVar7 == uVar17) goto LAB_00362210; + } + lVar20 = uVar7 + uVar18; + uVar7 = uVar7 - 8; + bVar2 = false; + lVar19 = lVar19 * *(long *)((long)param_5 + lVar20); + } while (uVar7 != uVar17); +LAB_00362210: + lVar20 = 0; + goto LAB_00361df4; + } + bVar2 = true; + lVar20 = 0; + lVar8 = 0; + lVar9 = 0; + uVar10 = 0; + uVar11 = 0; + } + else { + uVar1 = param_4 - 2; + lVar20 = param_6[(long)param_4 + -1]; + lVar19 = param_5[(long)param_4 + -1]; + if ((int)uVar1 < 0) { + bVar2 = true; + uVar11 = 0; + uVar10 = 0; + lVar9 = 0; + lVar8 = 0; + } + else { + uVar7 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + uVar18 = (ulong)uVar1 << 3 ^ 0xfffffffffffffff8; + uVar17 = 0; + bVar2 = true; + do { + while (lVar19 == *(long *)((long)param_8 + uVar17 + uVar7)) { + lVar8 = uVar17 + uVar7; + lVar16 = uVar17 + uVar7; + lVar9 = uVar17 + uVar7; + lVar23 = uVar17 + uVar7; + uVar17 = uVar17 - 8; + if (lVar19 != *(long *)((long)param_7 + lVar8)) { + bVar2 = false; + } + lVar19 = lVar19 * *(long *)((long)param_5 + lVar16); + lVar20 = lVar20 + *(long *)((long)param_7 + lVar9) * *(long *)((long)param_6 + lVar23); + if (uVar17 == uVar18) goto LAB_00361df4; + } + lVar9 = uVar17 + uVar7; + bVar2 = false; + lVar8 = uVar17 + uVar7; + lVar16 = uVar17 + uVar7; + uVar17 = uVar17 - 8; + lVar19 = lVar19 * *(long *)((long)param_5 + lVar9); + lVar20 = lVar20 + *(long *)((long)param_7 + lVar8) * *(long *)((long)param_6 + lVar16); + } while (uVar17 != uVar18); +LAB_00361df4: + if (bVar2) { + uVar11 = 0; + uVar10 = 0; + lVar9 = 0; + lVar8 = 0; + } + else if (param_4 == 2) { + local_40 = *param_5; + local_48 = param_5[1]; + local_38 = 1; + if (param_6 != (undefined8 *)0x0) { + local_18 = param_6[1]; + local_10 = *param_6; + } + lVar8 = *param_8; + uVar11 = 0; + uVar10 = *param_7; + lVar9 = 0; + } + else { + if (3 < param_4) { + local_58 = 0; + local_50 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_58,9); + cVar3 = s_dims_<__3_0046e7a8[8]; + *(undefined8 *)pcVar14 = s_dims_<__3_0046e7a8._0_8_; + pcVar14[8] = cVar3; + cv::error(-0xd7,(String *)&local_58, + "bool cv::ocl::OpenCLAllocator::checkContinuous(int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, size_t&, size_t*, size_t&, size_t*, size_t*, size_t&, size_t*, size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x127f); + cv::String::deallocate((String *)&local_58); + } + local_48 = param_5[2]; + local_40 = param_5[1]; + local_38 = *param_5; + if (param_6 != (undefined8 *)0x0) { + local_18 = param_6[2]; + local_10 = param_6[1]; + local_8 = *param_6; + } + lVar8 = param_8[1]; + lVar9 = *param_8; + uVar10 = param_7[1]; + uVar11 = *param_7; + } + } + } + cv::UMatData::lock(param_2); + if ((*(long *)(param_2 + 0x18) != 0) && + (((*(uint *)(param_2 + 0x30) >> 1 & 1) < (*(uint *)(param_2 + 0x30) >> 2 & 1) || + (*(long *)(param_2 + 0x28) == lVar19)))) { + plVar13 = (long *)cv::Mat::getStdAllocator(); + (**(code **)(*plVar13 + 0x40))(plVar13,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd | 4; + cv::UMatData::unlock(param_2); + return; + } + lVar16 = *(long *)(param_2 + 0x38); + if (lVar16 == 0) { + local_78 = lVar16; + local_70 = lVar16; + pcVar14 = (char *)cv::String::allocate((String *)&local_78,0xe); + uVar5 = s_u_>handle____0_0046e948._12_2_; + uVar4 = s_u_>handle____0_0046e948._8_4_; + *(undefined8 *)pcVar14 = s_u_>handle____0_0046e948._0_8_; + *(undefined4 *)(pcVar14 + 8) = uVar4; + *(undefined2 *)(pcVar14 + 0xc) = uVar5; + cv::error(-0xd7,(String *)&local_78, + "virtual void cv::ocl::OpenCLAllocator::upload(cv::UMatData*, const void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x131d); + cv::String::deallocate((String *)&local_78); + } + this = (Queue *)cv::ocl::Queue::getDefault(); + uVar12 = cv::ocl::Queue::ptr(this); + lVar16 = *param_5; + pvVar22 = (void *)0x0; + lVar23 = *param_8; + if (((ulong)param_3 & 0xf) == 0) { + pvVar15 = param_3; + if (bVar2) goto LAB_00361eb8; +LAB_00361fe0: + uVar21 = *(undefined8 *)(param_2 + 0x38); + /* try { // try from 00361ffc to 00462027 has its CatchHandler @ 00361fa8 */ + if (((DAT_00532978 != (code *)0x0) || + (DAT_00532978 = (code *)FUN_0034d2bc("clEnqueueWriteBufferRect"), + DAT_00532978 != (code *)0x0)) && + (iVar6 = (*DAT_00532978)(uVar12,uVar21,1,&local_18,&local_30,&local_48,uVar10,uVar11,lVar8, + lVar9,pvVar15,0,0,0), -1 < iVar6)) goto LAB_00361ef8; + this_00 = (String *)&local_58; + local_58 = 0; + local_50 = 0; + pvVar15 = (void *)cv::String::allocate(this_00,0xc1); + memcpy(pvVar15,&DAT_0046ea00,0xc1); + /* try { // try from 00362078 to 0046207b has its CatchHandler @ 00362508 */ + cv::error(-0xd7,this_00, + "virtual void cv::ocl::OpenCLAllocator::upload(cv::UMatData*, const void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1366); + /* try { // try from 00362080 to 00462187 has its CatchHandler @ 00361fa8 */ + } + else { + pvVar22 = operator_new__(lVar16 * lVar23 + 0xf); + pvVar15 = (void *)((long)pvVar22 + 0xfU & 0xfffffffffffffff0); + memcpy(pvVar15,param_3,lVar16 * lVar23); + if (!bVar2) goto LAB_00361fe0; +LAB_00361eb8: + uVar10 = *(undefined8 *)(param_2 + 0x38); + if (((DAT_005329a0 != (code *)0x0) || + (DAT_005329a0 = (code *)FUN_0034d2bc("clEnqueueWriteBuffer"), DAT_005329a0 != (code *)0x0)) + && (iVar6 = (*DAT_005329a0)(uVar12,uVar10,1,lVar20,lVar19,pvVar15,0,0,0), -1 < iVar6)) + goto LAB_00361ef8; + this_00 = (String *)&local_68; + local_68 = 0; + local_60 = 0; + pvVar15 = (void *)cv::String::allocate(this_00,0x6f); + memcpy(pvVar15, + "clEnqueueWriteBuffer(q, (cl_mem)u->handle, CL_TRUE, dstrawofs, total, alignedPtr.getAlignedPtr(), 0, 0, 0) >= 0" + ,0x6f); + cv::error(-0xd7,this_00, + "virtual void cv::ocl::OpenCLAllocator::upload(cv::UMatData*, const void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1360); + } + cv::String::deallocate(this_00); +LAB_00361ef8: + if (pvVar22 != (void *)0x0) { + operator_delete__(pvVar22); + } + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffb | 2; + cv::UMatData::unlock(param_2); + return; +} + + +================================================================== + +### FUNC 003623b4 (1380 bytes) name=FUN_003623b4 + +void FUN_003623b4(undefined8 param_1,UMatData *param_2,void *param_3,int param_4,long *param_5, + undefined8 *param_6,long *param_7,long *param_8) + +{ + uint uVar1; + bool bVar2; + char cVar3; + undefined4 uVar4; + undefined2 uVar5; + int iVar6; + long *plVar7; + Queue *this; + undefined8 uVar8; + ulong uVar9; + long lVar10; + char *pcVar11; + void *pvVar12; + long lVar13; + ulong uVar14; + long lVar15; + ulong uVar16; + long lVar17; + String *this_00; + long lVar18; + undefined8 uVar19; + long lVar20; + long lVar21; + long lVar22; + long local_a0; + long local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + long local_70; + long local_68; + long local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + size_t local_28; + void *local_20; + undefined8 local_18; + void *local_10; + void *local_8; + + if (param_2 == (UMatData *)0x0) { + return; + } + cv::UMatData::lock(param_2); + if ((*(long *)(param_2 + 0x18) != 0) && ((*(uint *)(param_2 + 0x30) >> 1 & 1) == 0)) { + plVar7 = (long *)cv::Mat::getStdAllocator(); + (**(code **)(*plVar7 + 0x38))(plVar7,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + goto LAB_00362438; + } + lVar13 = *(long *)(param_2 + 0x38); + if (lVar13 == 0) { + local_a0 = lVar13; + local_98 = lVar13; + pcVar11 = (char *)cv::String::allocate((String *)&local_a0,0xe); + uVar5 = s_u_>handle____0_0046e948._12_2_; + uVar4 = s_u_>handle____0_0046e948._8_4_; + *(undefined8 *)pcVar11 = s_u_>handle____0_0046e948._0_8_; + *(undefined4 *)(pcVar11 + 8) = uVar4; + /* try { // try from 00362738 to 0046273b has its CatchHandler @ 00362a74 */ + *(undefined2 *)(pcVar11 + 0xc) = uVar5; + cv::error(-0xd7,(String *)&local_a0, + "virtual void cv::ocl::OpenCLAllocator::download(cv::UMatData*, void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x12a3); + cv::String::deallocate((String *)&local_a0); + /* try { // try from 00362748 to 00462a57 has its CatchHandler @ 0036251c */ + } + this = (Queue *)cv::ocl::Queue::getDefault(); + uVar8 = cv::ocl::Queue::ptr(this); + local_70 = 0; + local_68 = 0; + local_60 = 0; + local_58 = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + if (param_6 == (undefined8 *)0x0) { + uVar1 = param_4 - 2; + lVar17 = param_5[(long)param_4 + -1]; + lVar13 = 0; + if ((int)uVar1 < 0) goto LAB_003628e0; + uVar14 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + bVar2 = true; + uVar9 = 0; + do { + if (lVar17 == *(long *)((long)param_7 + uVar9 + uVar14)) { + if (lVar17 != *(long *)((long)param_8 + uVar9 + uVar14)) { + bVar2 = false; + } + } + else { + bVar2 = false; + } + lVar13 = uVar9 + uVar14; + uVar9 = uVar9 - 8; + lVar17 = lVar17 * *(long *)((long)param_5 + lVar13); + } while (uVar9 != ((ulong)uVar1 << 3 ^ 0xfffffffffffffff8)); + lVar13 = 0; +LAB_00362534: + if (bVar2) { + lVar15 = 0; + lVar10 = *param_5; + lVar18 = *param_8; + lVar22 = 0; + lVar20 = lVar15; + lVar21 = lVar15; + } + else if (param_4 == 2) { + local_70 = param_5[1]; + lVar10 = *param_5; + local_60 = 1; + if (param_6 != (undefined8 *)0x0) { + local_58 = param_6[1]; + local_50 = *param_6; + } + lVar18 = *param_8; + lVar15 = 0; + lVar20 = *param_7; + lVar21 = lVar18; + lVar22 = lVar15; + local_68 = lVar10; + } + else { + if (3 < param_4) { + local_28 = 0; + local_20 = (void *)0x0; + pcVar11 = (char *)cv::String::allocate((String *)&local_28,9); + cVar3 = s_dims_<__3_0046e7a8[8]; + *(undefined8 *)pcVar11 = s_dims_<__3_0046e7a8._0_8_; + pcVar11[8] = cVar3; + cv::error(-0xd7,(String *)&local_28, + "bool cv::ocl::OpenCLAllocator::checkContinuous(int, const size_t*, const size_t*, const size_t*, const size_t*, const size_t*, size_t&, size_t*, size_t&, size_t*, size_t*, size_t&, size_t*, size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x127f); + cv::String::deallocate((String *)&local_28); + } + local_70 = param_5[2]; + lVar10 = *param_5; + if (param_6 != (undefined8 *)0x0) { + local_58 = param_6[2]; + local_50 = param_6[1]; + local_48 = *param_6; + /* try { // try from 00362578 to 004625a3 has its CatchHandler @ 0036251c */ + } + lVar18 = *param_8; + lVar15 = lVar18; + lVar20 = param_7[1]; + lVar21 = param_8[1]; + lVar22 = *param_7; + local_68 = param_5[1]; + local_60 = lVar10; + } + } + else { + uVar1 = param_4 - 2; + lVar13 = param_6[(long)param_4 + -1]; + lVar17 = param_5[(long)param_4 + -1]; + if (-1 < (int)uVar1) { + uVar9 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + uVar16 = (ulong)uVar1 << 3 ^ 0xfffffffffffffff8; + uVar14 = 0; + bVar2 = true; + do { + /* try { // try from 00362504 to 00462507 has its CatchHandler @ 00361fa8 */ + /* catch() { ... } // from try @ 00362078 with catch @ 00362508 */ + while (lVar15 = *(long *)((long)param_7 + uVar14 + uVar9), lVar17 == lVar15) { + lVar20 = uVar14 + uVar9; + lVar21 = uVar14 + uVar9; + lVar22 = uVar14 + uVar9; + /* try { // try from 00362518 to 0046251b has its CatchHandler @ 00361fa8 */ + /* catch() { ... } // from try @ 00362578 with catch @ 0036251c + catch() { ... } // from try @ 003625fc with catch @ 0036251c + catch() { ... } // from try @ 00362748 with catch @ 0036251c + catch() { ... } // from try @ 00362a70 with catch @ 0036251c + catch() { ... } // from try @ 00362a84 with catch @ 0036251c */ + uVar14 = uVar14 - 8; + if (lVar17 != *(long *)((long)param_8 + lVar20)) { + bVar2 = false; + } + lVar17 = lVar17 * *(long *)((long)param_5 + lVar21); + lVar13 = lVar13 + lVar15 * *(long *)((long)param_6 + lVar22); + if (uVar14 == uVar16) goto LAB_00362534; + } + lVar20 = uVar14 + uVar9; + bVar2 = false; + lVar21 = uVar14 + uVar9; + uVar14 = uVar14 - 8; + /* catch() { ... } // from try @ 003621c0 with catch @ 003624f4 */ + lVar17 = lVar17 * *(long *)((long)param_5 + lVar20); + lVar13 = lVar13 + lVar15 * *(long *)((long)param_6 + lVar21); + } while (uVar14 != uVar16); + goto LAB_00362534; + } +LAB_003628e0: + lVar15 = 0; + lVar10 = *param_5; + lVar18 = *param_8; + bVar2 = true; + lVar21 = 0; + lVar22 = 0; + lVar20 = 0; + } + local_28 = lVar18 * lVar10; + local_18 = 0x10; + local_8 = (void *)0x0; + local_20 = param_3; + if (((ulong)param_3 & 0xf) != 0) { + local_10 = param_3; + local_8 = operator_new__(local_28 + 0xf); + param_3 = (void *)((long)local_8 + 0xfU & 0xfffffffffffffff0); + } + local_10 = param_3; + if (bVar2) { + uVar19 = *(undefined8 *)(param_2 + 0x38); + /* try { // try from 003625f4 to 004625f7 has its CatchHandler @ 00362a60 */ + if (((DAT_005320a0 == (code *)0x0) && + (DAT_005320a0 = (code *)FUN_0034d2bc("clEnqueueReadBuffer"), DAT_005320a0 == (code *)0x0)) + || (iVar6 = (*DAT_005320a0)(uVar8,uVar19,1,lVar13,lVar17,param_3,0,0,0), iVar6 < 0)) { + this_00 = (String *)&local_90; + local_90 = 0; + local_88 = 0; + pvVar12 = (void *)cv::String::allocate(this_00,0x6e); + memcpy(pvVar12,&DAT_0046eaf0,0x6e); + cv::error(-0xd7,this_00, + "virtual void cv::ocl::OpenCLAllocator::download(cv::UMatData*, void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x12f0); +LAB_003626bc: + cv::String::deallocate(this_00); + } + } + else { + uVar19 = *(undefined8 *)(param_2 + 0x38); + if (((DAT_00532070 == (code *)0x0) && + (DAT_00532070 = (code *)FUN_0034d2bc("clEnqueueReadBufferRect"), DAT_00532070 == (code *)0x0 + )) || (iVar6 = (*DAT_00532070)(uVar8,uVar19,1,&local_58,&local_40,&local_70,lVar20,lVar22, + lVar21,lVar15,param_3,0,0,0), iVar6 < 0)) { + this_00 = (String *)&local_80; + local_80 = 0; + local_78 = 0; + pvVar12 = (void *)cv::String::allocate(this_00,0xc0); + memcpy(pvVar12,&DAT_0046eb60,0xc0); + cv::error(-0xd7,this_00, + "virtual void cv::ocl::OpenCLAllocator::download(cv::UMatData*, void*, int, const size_t*, const size_t*, const size_t*, const size_t*) const" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x12f6); + goto LAB_003626bc; + } + } + /* try { // try from 003625fc to 004626ff has its CatchHandler @ 0036251c */ + if ((local_8 != (void *)0x0) && (memcpy(local_20,local_10,local_28), local_8 != (void *)0x0)) { + operator_delete__(local_8); + } +LAB_00362438: + cv::UMatData::unlock(param_2); + return; +} + + +================================================================== + +### FUNC 00362988 (1016 bytes) name=FUN_00362988 + +void FUN_00362988(undefined8 param_1,UMatData *param_2) + +{ + undefined4 uVar1; + undefined2 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + char cVar12; + int iVar13; + Queue *this; + undefined8 uVar14; + char *pcVar15; + Device *this_00; + void *pvVar16; + void *pvVar17; + uint uVar18; + long lVar19; + void *__src; + size_t __n; + undefined8 uVar20; + long local_40; + long local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + long local_10; + long local_8; + + if (param_2 != (UMatData *)0x0) { + lVar19 = *(long *)(param_2 + 0x38); + if (lVar19 == 0) { + local_10 = lVar19; + local_8 = lVar19; + pcVar15 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar2 = s_u_>handle____0_0046e948._12_2_; + uVar1 = s_u_>handle____0_0046e948._8_4_; + /* try { // try from 00362ad8 to 00462baf has its CatchHandler @ 00362a88 */ + *(undefined8 *)pcVar15 = s_u_>handle____0_0046e948._0_8_; + *(undefined4 *)(pcVar15 + 8) = uVar1; + *(undefined2 *)(pcVar15 + 0xc) = uVar2; + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x120f); + cv::String::deallocate((String *)&local_10); + } + cv::UMatData::lock(param_2); + if (*(int *)(param_2 + 0x14) < 1) { + this = (Queue *)cv::ocl::Queue::getDefault(); + uVar14 = cv::ocl::Queue::ptr(this); + uVar18 = *(uint *)(param_2 + 0x30); + if (((uVar18 & 1) == 0) && ((uVar18 >> 6 & 1) != 0)) { + lVar19 = *(long *)(param_2 + 0x18); + if (lVar19 == 0) { + local_40 = lVar19; + local_38 = lVar19; + pcVar15 = (char *)cv::String::allocate((String *)&local_40,0xf); + cVar12 = s_u_>data____NULL_0046ec28[0xe]; + uVar2 = s_u_>data____NULL_0046ec28._12_2_; + uVar1 = s_u_>data____NULL_0046ec28._8_4_; + *(undefined8 *)pcVar15 = s_u_>data____NULL_0046ec28._0_8_; + *(undefined4 *)(pcVar15 + 8) = uVar1; + *(undefined2 *)(pcVar15 + 0xc) = uVar2; + pcVar15[0xe] = cVar12; + cv::error(-0xd7,(String *)&local_40, + "virtual void cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x121b); + cv::String::deallocate((String *)&local_40); + lVar19 = *(long *)(param_2 + 0x18); + uVar18 = *(uint *)(param_2 + 0x30); + } + *(uint *)(param_2 + 0x30) = uVar18 & 0xffffffbf; + uVar20 = *(undefined8 *)(param_2 + 0x38); + if (((DAT_00532068 == (code *)0x0) && + (DAT_00532068 = (code *)FUN_0034d2bc("clEnqueueUnmapMemObject"), + DAT_00532068 == (code *)0x0)) || + (iVar13 = (*DAT_00532068)(uVar14,uVar20,lVar19,0,0,0), iVar13 != 0)) { + local_30 = 0; + local_28 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_30,0x58); + uVar11 = s__retval___clEnqueueUnmapMemObjec_0046ec38._72_8_; + uVar10 = s__retval___clEnqueueUnmapMemObjec_0046ec38._64_8_; + uVar9 = s__retval___clEnqueueUnmapMemObjec_0046ec38._56_8_; + uVar8 = s__retval___clEnqueueUnmapMemObjec_0046ec38._48_8_; + uVar7 = s__retval___clEnqueueUnmapMemObjec_0046ec38._40_8_; + uVar6 = s__retval___clEnqueueUnmapMemObjec_0046ec38._32_8_; + uVar5 = s__retval___clEnqueueUnmapMemObjec_0046ec38._24_8_; + uVar4 = s__retval___clEnqueueUnmapMemObjec_0046ec38._16_8_; + uVar3 = s__retval___clEnqueueUnmapMemObjec_0046ec38._8_8_; + uVar20 = s__retval___clEnqueueUnmapMemObjec_0046ec38._0_8_; + *(undefined8 *)(pcVar15 + 0x50) = s__retval___clEnqueueUnmapMemObjec_0046ec38._80_8_; + *(undefined8 *)pcVar15 = uVar20; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar4; + *(undefined8 *)(pcVar15 + 0x18) = uVar5; + *(undefined8 *)(pcVar15 + 0x20) = uVar6; + *(undefined8 *)(pcVar15 + 0x28) = uVar7; + *(undefined8 *)(pcVar15 + 0x30) = uVar8; + *(undefined8 *)(pcVar15 + 0x38) = uVar9; + *(undefined8 *)(pcVar15 + 0x40) = uVar10; + *(undefined8 *)(pcVar15 + 0x48) = uVar11; + cv::error(-0xd7,(String *)&local_30, + "virtual void cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1237); + cv::String::deallocate((String *)&local_30); + } + this_00 = (Device *)cv::ocl::Device::getDefault(); + iVar13 = cv::ocl::Device::vendorID(this_00); + if (iVar13 == 1) { + cVar12 = FUN_00350224(); + /* catch() { ... } // from try @ 00362be8 with catch @ 00362d10 */ + if (cVar12 == '\0') { + FUN_0034d4d8(uVar14); + } + else { + iVar13 = FUN_0034d4d8(uVar14); + if (iVar13 != 0) { + /* try { // try from 00362d20 to 00462d23 has its CatchHandler @ 00362a88 */ + /* catch() { ... } // from try @ 00362ea0 with catch @ 00362d24 + catch() { ... } // from try @ 00362ef4 with catch @ 00362d24 + catch() { ... } // from try @ 00362fdc with catch @ 00362d24 + catch() { ... } // from try @ 00363048 with catch @ 00362d24 + catch() { ... } // from try @ 00363158 with catch @ 00362d24 + catch() { ... } // from try @ 00363288 with catch @ 00362d24 + catch() { ... } // from try @ 00363300 with catch @ 00362d24 + catch() { ... } // from try @ 003633dc with catch @ 00362d24 + catch() { ... } // from try @ 00363458 with catch @ 00362d24 + catch() { ... } // from try @ 003634f4 with catch @ 00362d24 + catch() { ... } // from try @ 0036351c with catch @ 00362d24 + catch() { ... } // from try @ 00363530 with catch @ 00362d24 + catch() { ... } // from try @ 00363544 with catch @ 00362d24 + catch() { ... } // from try @ 00363558 with catch @ 00362d24 + catch() { ... } // from try @ 0036356c with catch @ 00362d24 + catch() { ... } // from try @ 00363580 with catch @ 00362d24 + catch() { ... } // from try @ 00363594 with catch @ 00362d24 + catch() { ... } // from try @ 003635a8 with catch @ 00362d24 + catch() { ... } // from try @ 003635bc with catch @ 00362d24 */ + local_20 = 0; + local_18 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_20,0x10); + uVar14 = s_clFinish_q_____0_0046e778._8_8_; + *(undefined8 *)pcVar15 = s_clFinish_q_____0_0046e778._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar14; + cv::error(-0xd7,(String *)&local_20, + "virtual void cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x123b); + cv::String::deallocate((String *)&local_20); + } + } + } + *(undefined8 *)(param_2 + 0x18) = 0; + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffff9; + cv::UMatData::unlock(param_2); + } + else { + if ((uVar18 & 5) == 5) { + __src = *(void **)(param_2 + 0x18); + __n = *(size_t *)(param_2 + 0x28); + pvVar17 = (void *)0x0; + pvVar16 = __src; + if (((ulong)__src & 0xf) != 0) { + pvVar17 = operator_new__(__n + 0xf); + pvVar16 = (void *)((long)pvVar17 + 0xfU & 0xfffffffffffffff0); + memcpy(pvVar16,__src,__n); + __n = *(size_t *)(param_2 + 0x28); + } + uVar20 = *(undefined8 *)(param_2 + 0x38); + /* try { // try from 00362be8 to 00462beb has its CatchHandler @ 00362d10 */ + if (((DAT_005329a0 == (code *)0x0) && + (DAT_005329a0 = (code *)FUN_0034d2bc("clEnqueueWriteBuffer"), + DAT_005329a0 == (code *)0x0)) || + (iVar13 = (*DAT_005329a0)(uVar14,uVar20,1,0,__n,pvVar16,0,0,0), iVar13 != 0)) { + /* try { // try from 00362bf8 to 00462bfb has its CatchHandler @ 00362a88 */ + local_10 = 0; + local_8 = 0; + pvVar16 = (void *)cv::String::allocate((String *)&local_10,0x7d); + memcpy(pvVar16, + "(retval = clEnqueueWriteBuffer(q, (cl_mem)u->handle, CL_TRUE, 0, u->size, alignedPtr.getAlignedPtr(), 0, 0, 0)) == CL_SUCCESS" + ,0x7d); + cv::error(-0xd7,(String *)&local_10, + "virtual void cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1246); + cv::String::deallocate((String *)&local_10); + } + if (pvVar17 != (void *)0x0) { + /* catch() { ... } // from try @ 003625f4 with catch @ 00362a60 */ + operator_delete__(pvVar17); + } + uVar18 = *(uint *)(param_2 + 0x30); + } + /* try { // try from 00362a70 to 00462a73 has its CatchHandler @ 0036251c */ + *(uint *)(param_2 + 0x30) = uVar18 & 0xfffffff9; + /* catch() { ... } // from try @ 00362738 with catch @ 00362a74 */ + cv::UMatData::unlock(param_2); + } + /* try { // try from 00362a84 to 00462a87 has its CatchHandler @ 0036251c */ + /* catch() { ... } // from try @ 00362ad8 with catch @ 00362a88 + catch() { ... } // from try @ 00362bf8 with catch @ 00362a88 + catch() { ... } // from try @ 00362d20 with catch @ 00362a88 */ + return; + } + cv::UMatData::unlock(param_2); + } + return; +} + + +================================================================== + +### FUNC 00362e00 (744 bytes) name=FUN_00362e00 + +void FUN_00362e00(undefined8 param_1,UMatData *param_2,uint param_3) + +{ + undefined4 uVar1; + undefined2 uVar2; + int iVar3; + Queue *this; + undefined8 uVar4; + void *pvVar5; + char *pcVar6; + uint uVar7; + void *pvVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 local_38; + undefined8 local_30; + void *local_28; + void *local_20; + undefined8 local_18; + void *local_10; + void *local_8; + + if (param_2 == (UMatData *)0x0) { + return; + } + pvVar8 = *(void **)(param_2 + 0x38); + if (pvVar8 == (void *)0x0) { + local_28 = pvVar8; + local_20 = pvVar8; + pcVar6 = (char *)cv::String::allocate((String *)&local_28,0xe); + uVar2 = s_u_>handle____0_0046e948._12_2_; + uVar1 = s_u_>handle____0_0046e948._8_4_; + *(undefined8 *)pcVar6 = s_u_>handle____0_0046e948._0_8_; + *(undefined4 *)(pcVar6 + 8) = uVar1; + *(undefined2 *)(pcVar6 + 0xc) = uVar2; + cv::error(-0xd7,(String *)&local_28, + "virtual void cv::ocl::OpenCLAllocator::map(cv::UMatData*, int) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x11b5); + cv::String::deallocate((String *)&local_28); + } + cv::UMatData::lock(param_2); + if ((param_3 >> 0x19 & 1) != 0) { + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 4; + } + this = (Queue *)cv::ocl::Queue::getDefault(); + uVar4 = cv::ocl::Queue::ptr(this); + uVar7 = *(uint *)(param_2 + 0x30); + pvVar8 = *(void **)(param_2 + 0x18); + if ((uVar7 & 1) == 0) { + if (pvVar8 != (void *)0x0) goto LAB_00362e50; + local_28 = (void *)((ulong)local_28 & 0xffffffff00000000); + uVar10 = *(undefined8 *)(param_2 + 0x38); + uVar9 = *(undefined8 *)(param_2 + 0x28); + if ((DAT_00532038 == (code *)0x0) && + (DAT_00532038 = (code *)FUN_0034d2bc(&DAT_0046e700), DAT_00532038 == (code *)0x0)) { + *(undefined8 *)(param_2 + 0x18) = 0; + } + else { + pvVar5 = (void *)(*DAT_00532038)(uVar4,uVar10,1,3,0,uVar9,0,0,0,&local_28); + *(void **)(param_2 + 0x18) = pvVar5; + /* try { // try from 00363038 to 0046303b has its CatchHandler @ 00363520 */ + if ((pvVar5 != (void *)0x0) && (pvVar8 = pvVar5, (int)local_28 == 0)) { + /* try { // try from 00363048 to 00463117 has its CatchHandler @ 00362d24 */ + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd | 0x40; + goto LAB_00362e50; + } + } + uVar7 = *(uint *)(param_2 + 0x30) | 1; + *(uint *)(param_2 + 0x30) = uVar7; + } + if (pvVar8 == (void *)0x0) { + pvVar8 = (void *)cv::fastMalloc(*(ulong *)(param_2 + 0x28)); + *(void **)(param_2 + 0x18) = pvVar8; + uVar7 = *(uint *)(param_2 + 0x30) | 2; + *(uint *)(param_2 + 0x30) = uVar7; + } + if (((param_3 >> 0x18 & 1) != 0) && ((uVar7 >> 1 & 1) != 0)) { + /* try { // try from 00362ea0 to 00462ea3 has its CatchHandler @ 00362d24 */ + pvVar5 = *(void **)(param_2 + 0x28); + local_18 = 0x10; + local_8 = (void *)0x0; + local_28 = pvVar5; + local_20 = pvVar8; + if (((ulong)pvVar8 & 0xf) != 0) { + local_10 = pvVar8; + local_8 = operator_new__((long)pvVar5 + 0xf); + /* try { // try from 00362fd4 to 00462fd7 has its CatchHandler @ 00363534 */ + pvVar8 = (void *)((long)local_8 + 0xfU & 0xfffffffffffffff0); + pvVar5 = *(void **)(param_2 + 0x28); + /* try { // try from 00362fdc to 00462ff7 has its CatchHandler @ 00362d24 */ + } + uVar9 = *(undefined8 *)(param_2 + 0x38); + local_10 = pvVar8; + /* try { // try from 00362eec to 00462eef has its CatchHandler @ 00363598 */ + /* try { // try from 00362ef4 to 00462f97 has its CatchHandler @ 00362d24 */ + if (((DAT_005320a0 == (code *)0x0) && + (DAT_005320a0 = (code *)FUN_0034d2bc("clEnqueueReadBuffer"), DAT_005320a0 == (code *)0x0)) + || (iVar3 = (*DAT_005320a0)(uVar4,uVar9,1,0,pvVar5,pvVar8,0,0,0), iVar3 != 0)) { + local_38 = 0; + local_30 = 0; + pvVar8 = (void *)cv::String::allocate((String *)&local_38,0x71); + memcpy(pvVar8,&DAT_0046ed18,0x71); + cv::error(-0xd7,(String *)&local_38, + "virtual void cv::ocl::OpenCLAllocator::map(cv::UMatData*, int) const", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1204); + cv::String::deallocate((String *)&local_38); + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd; + } + else { + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd; + } + if ((local_8 != (void *)0x0) && + (memcpy(local_20,local_10,(size_t)local_28), local_8 != (void *)0x0)) { + operator_delete__(local_8); + } + } +LAB_00362e50: + cv::UMatData::unlock(param_2); + return; +} + + +================================================================== + +### FUNC 00363134 (3348 bytes) name=FUN_00363134 + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00363134(long param_1,UMat *param_2,char param_3,char param_4) + +{ + long lVar1; + uint uVar2; + uint uVar3; + undefined2 uVar4; + undefined1 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + char cVar15; + int iVar16; + int iVar17; + undefined8 *puVar18; + Device *pDVar19; + Context *pCVar20; + undefined8 uVar21; + Queue *pQVar22; + undefined8 uVar23; + undefined8 uVar24; + char *pcVar25; + void *__dest; + undefined4 *puVar26; + long lVar27; + long lVar28; + int local_94; + undefined4 local_90; + undefined4 uStack_8c; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + long local_60; + long local_58; + undefined8 local_50; + long local_48; + long local_40; + long local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined4 local_10; + undefined4 local_c; + undefined8 local_8; + + /* try { // try from 00363150 to 00463153 has its CatchHandler @ 003635ac */ + /* try { // try from 00363158 to 00463237 has its CatchHandler @ 00362d24 */ + cVar15 = cv::ocl::haveOpenCL(); + if (cVar15 == '\0') { + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x19); + cVar15 = s_OpenCL_runtime_not_found__0046e5f0[0x18]; + uVar21 = s_OpenCL_runtime_not_found__0046e5f0._8_8_; + uVar23 = s_OpenCL_runtime_not_found__0046e5f0._0_8_; + /* try { // try from 003639cc to 004639cf has its CatchHandler @ 003639dc */ + /* try { // try from 003639d4 to 004639d7 has its CatchHandler @ 00363808 */ + /* catch() { ... } // from try @ 003639cc with catch @ 003639dc */ + /* try { // try from 003639ec to 004639ef has its CatchHandler @ 00363808 */ + /* catch() { ... } // from try @ 00363938 with catch @ 003639f0 */ + /* try { // try from 00363a00 to 00463a03 has its CatchHandler @ 00363808 */ + *(undefined8 *)(pcVar25 + 0x10) = s_OpenCL_runtime_not_found__0046e5f0._16_8_; + /* catch() { ... } // from try @ 00363a50 with catch @ 00363a04 + catch() { ... } // from try @ 00363b38 with catch @ 00363a04 + catch() { ... } // from try @ 00363ba0 with catch @ 00363a04 + catch() { ... } // from try @ 00363bb8 with catch @ 00363a04 + catch() { ... } // from try @ 00363bcc with catch @ 00363a04 */ + pcVar25[0x18] = cVar15; + *(undefined8 *)pcVar25 = uVar23; + *(undefined8 *)(pcVar25 + 8) = uVar21; + cv::error(-0xdc,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15d4); + cv::String::deallocate((String *)&local_48); + } + if (*(long *)(param_2 + 0x20) == 0) { +LAB_003631a0: + local_48 = 0; + local_40 = 0; + puVar18 = (undefined8 *)cv::String::allocate((String *)&local_48,0xc); + uVar7 = _LAB_0046ef88; + *puVar18 = DAT_0046ef80; + *(undefined4 *)(puVar18 + 1) = uVar7; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15d6); + cv::String::deallocate((String *)&local_48); + } + else { + if (*(int *)(param_2 + 4) < 3) { + /* try { // try from 00363458 to 0046349b has its CatchHandler @ 00362d24 */ + lVar28 = (long)*(int *)(param_2 + 0xc) * (long)*(int *)(param_2 + 8); + } + else { + lVar27 = 0; + lVar28 = 1; + do { + lVar1 = lVar27 * 4; + lVar27 = lVar27 + 1; + lVar28 = lVar28 * *(int *)(*(long *)(param_2 + 0x30) + lVar1); + } while ((int)lVar27 < *(int *)(param_2 + 4)); + } + if (lVar28 == 0) goto LAB_003631a0; + } + pDVar19 = (Device *)cv::ocl::Device::getDefault(); + cVar15 = cv::ocl::Device::imageSupport(pDVar19); + if (cVar15 == '\0') { + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x28); + uVar6 = s_ocl__Device__getDefault___imageS_0046ed90._24_8_; + uVar24 = s_ocl__Device__getDefault___imageS_0046ed90._16_8_; + uVar21 = s_ocl__Device__getDefault___imageS_0046ed90._8_8_; + uVar23 = s_ocl__Device__getDefault___imageS_0046ed90._0_8_; + /* try { // try from 00363a50 to 00463b13 has its CatchHandler @ 00363a04 */ + *(undefined8 *)(pcVar25 + 0x20) = s_ocl__Device__getDefault___imageS_0046ed90._32_8_; + *(undefined8 *)pcVar25 = uVar23; + *(undefined8 *)(pcVar25 + 8) = uVar21; + *(undefined8 *)(pcVar25 + 0x10) = uVar24; + *(undefined8 *)(pcVar25 + 0x18) = uVar6; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15d7); + cv::String::deallocate((String *)&local_48); + } + uVar3 = *(uint *)param_2 & 7; + uVar2 = (*(uint *)param_2 >> 3 & 0x1ff) + 1; + if (4 < uVar2) { + local_48 = 0; + local_40 = 0; + puVar26 = (undefined4 *)cv::String::allocate((String *)&local_48,7); + uVar5 = DAT_0046afe6; + uVar4 = DAT_0046afe4; + *puVar26 = DAT_0046afe0; + *(undefined2 *)(puVar26 + 1) = uVar4; + *(undefined1 *)((long)puVar26 + 6) = uVar5; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15da); + /* try { // try from 00363684 to 00463687 has its CatchHandler @ 003637e0 */ + cv::String::deallocate((String *)&local_48); + } + if (param_3 == '\0') { + /* try { // try from 00363450 to 00463453 has its CatchHandler @ 00363548 */ + uStack_8c = *(undefined4 *)(PTR_channelTypes_00501ce0 + (long)(int)uVar3 * 4); + } + else { + uStack_8c = *(undefined4 *)(PTR_channelTypesNorm_00501f18 + (long)(int)uVar3 * 4); + } + local_90 = *(undefined4 *)(PTR_channelOrders_00501b60 + (long)(int)uVar2 * 4); + cVar15 = FUN_00360678(CONCAT44(uStack_8c,local_90)); + if (cVar15 == '\0') { + /* try { // try from 003635bc to 004635bf has its CatchHandler @ 00362d24 */ + /* catch() { ... } // from try @ 00363614 with catch @ 003635c0 + catch() { ... } // from try @ 0036368c with catch @ 003635c0 + catch() { ... } // from try @ 00363780 with catch @ 003635c0 + catch() { ... } // from try @ 003637c4 with catch @ 003635c0 + catch() { ... } // from try @ 003637dc with catch @ 003635c0 + catch() { ... } // from try @ 003637f0 with catch @ 003635c0 + catch() { ... } // from try @ 00363804 with catch @ 003635c0 */ + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x1d); + cVar15 = s_Image_format_is_not_supported_0046edc0[0x1c]; + uVar7 = s_Image_format_is_not_supported_0046edc0._24_4_; + uVar21 = s_Image_format_is_not_supported_0046edc0._8_8_; + uVar23 = s_Image_format_is_not_supported_0046edc0._0_8_; + *(undefined8 *)(pcVar25 + 0x10) = s_Image_format_is_not_supported_0046edc0._16_8_; + *(undefined4 *)(pcVar25 + 0x18) = uVar7; + pcVar25[0x1c] = cVar15; + *(undefined8 *)pcVar25 = uVar23; + *(undefined8 *)(pcVar25 + 8) = uVar21; + /* try { // try from 00363614 to 00463667 has its CatchHandler @ 003635c0 */ + cv::error(-0xdc,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15de); + cv::String::deallocate((String *)&local_48); + } + if (param_4 == '\0') { + pCVar20 = (Context *)cv::ocl::Context::getDefault(true); + uVar21 = cv::ocl::Context::ptr(pCVar20); + pQVar22 = (Queue *)cv::ocl::Queue::getDefault(); + uVar23 = cv::ocl::Queue::ptr(pQVar22); + pDVar19 = (Device *)cv::ocl::Device::getDefault(); + /* try { // try from 00363280 to 00463283 has its CatchHandler @ 0036350c */ + iVar16 = cv::ocl::Device::deviceVersionMinor(pDVar19); + /* try { // try from 00363288 to 004632cb has its CatchHandler @ 00362d24 */ + iVar17 = cv::ocl::Device::deviceVersionMajor(pDVar19); +LAB_00363294: + if (1 < iVar17) { +LAB_0036329c: + local_38 = (long)*(int *)(param_2 + 8); + local_40 = (long)*(int *)(param_2 + 0xc); + local_48 = CONCAT44(local_48._4_4_,0x10f1); + local_30 = 0; + local_28 = 1; + if (param_4 != '\0') goto LAB_00363560; + local_18 = 0; + local_8 = 0; + local_20 = 0; + goto joined_r0x00363590; + } +LAB_00363af4: + if ((1 < iVar16) && (iVar17 == 1)) goto LAB_0036329c; + if (param_4 != '\0') { + local_48 = 0; + local_40 = 0; + puVar26 = (undefined4 *)cv::String::allocate((String *)&local_48,6); + uVar4 = DAT_0046edf4; + /* try { // try from 00363b30 to 00463b33 has its CatchHandler @ 00363bbc */ + /* try { // try from 00363b38 to 00463b7b has its CatchHandler @ 00363a04 */ + *puVar26 = DAT_0046edf0; + *(undefined2 *)(puVar26 + 1) = uVar4; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15ff); + cv::String::deallocate((String *)&local_48); + } + iVar17 = *(int *)(param_2 + 0xc); + iVar16 = *(int *)(param_2 + 8); + /* try { // try from 00363e24 to 00463e27 has its CatchHandler @ 00363bd0 */ + /* catch() { ... } // from try @ 00363d74 with catch @ 00363e28 */ + /* try { // try from 00363e38 to 00463e3b has its CatchHandler @ 00363bd0 */ + /* catch() { ... } // from try @ 00363e00 with catch @ 00363e3c */ + if ((DAT_005320d0 == (code *)0x0) && + (DAT_005320d0 = (code *)FUN_0034d2bc("clCreateImage2D"), DAT_005320d0 == (code *)0x0)) + goto LAB_003635a8; + uVar24 = (*DAT_005320d0)(uVar21,1,&local_90,(long)iVar17,(long)iVar16,0,0,&local_94); + /* try { // try from 00363b98 to 00463b9b has its CatchHandler @ 00363ba8 */ + } + else { + lVar28 = cv::UMat::handle(param_2,0x3000000); + if (lVar28 == 0) { + local_48 = lVar28; + local_40 = lVar28; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x1e); + uVar4 = s_Incorrect_UMat__handle_is_null_0046ef90._28_2_; + uVar7 = s_Incorrect_UMat__handle_is_null_0046ef90._24_4_; + uVar21 = s_Incorrect_UMat__handle_is_null_0046ef90._8_8_; + uVar23 = s_Incorrect_UMat__handle_is_null_0046ef90._0_8_; + *(undefined8 *)(pcVar25 + 0x10) = s_Incorrect_UMat__handle_is_null_0046ef90._16_8_; + *(undefined4 *)(pcVar25 + 0x18) = uVar7; + *(undefined2 *)(pcVar25 + 0x1c) = uVar4; + *(undefined8 *)pcVar25 = uVar23; + *(undefined8 *)(pcVar25 + 8) = uVar21; + cv::error(-0xdc,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15e1); + cv::String::deallocate((String *)&local_48); + } + pCVar20 = (Context *)cv::ocl::Context::getDefault(true); + uVar21 = cv::ocl::Context::ptr(pCVar20); + pQVar22 = (Queue *)cv::ocl::Queue::getDefault(); + uVar23 = cv::ocl::Queue::ptr(pQVar22); + pDVar19 = (Device *)cv::ocl::Device::getDefault(); + iVar16 = cv::ocl::Device::deviceVersionMinor(pDVar19); + iVar17 = cv::ocl::Device::deviceVersionMajor(pDVar19); + cVar15 = cv::ocl::Image2D::canCreateAlias(param_2); + if (cVar15 != '\0') goto LAB_00363294; + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x1d); + cVar15 = s__alias____canCreateAlias_src__0046efb0[0x1c]; + uVar7 = s__alias____canCreateAlias_src__0046efb0._24_4_; + uVar6 = s__alias____canCreateAlias_src__0046efb0._8_8_; + uVar24 = s__alias____canCreateAlias_src__0046efb0._0_8_; + /* try { // try from 003634ec to 004634ef has its CatchHandler @ 0036355c */ + /* try { // try from 003634f4 to 004634f7 has its CatchHandler @ 00362d24 */ + /* catch() { ... } // from try @ 00363280 with catch @ 0036350c */ + *(undefined8 *)(pcVar25 + 0x10) = s__alias____canCreateAlias_src__0046efb0._16_8_; + /* try { // try from 0036351c to 0046351f has its CatchHandler @ 00362d24 */ + *(undefined4 *)(pcVar25 + 0x18) = uVar7; + /* catch() { ... } // from try @ 00363038 with catch @ 00363520 */ + pcVar25[0x1c] = cVar15; + *(undefined8 *)pcVar25 = uVar24; + *(undefined8 *)(pcVar25 + 8) = uVar6; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x15eb); + /* try { // try from 00363530 to 00463533 has its CatchHandler @ 00362d24 */ + cv::String::deallocate((String *)&local_48); + /* catch() { ... } // from try @ 00362fd4 with catch @ 00363534 */ + if (iVar17 < 2) goto LAB_00363af4; + local_38 = (long)*(int *)(param_2 + 8); + /* try { // try from 00363544 to 00463547 has its CatchHandler @ 00362d24 */ + local_40 = (long)*(int *)(param_2 + 0xc); + /* catch() { ... } // from try @ 00363450 with catch @ 00363548 */ + local_48 = CONCAT44(local_48._4_4_,0x10f1); + /* try { // try from 00363558 to 0046355b has its CatchHandler @ 00362d24 */ + /* catch() { ... } // from try @ 003634ec with catch @ 0036355c */ +LAB_00363560: + local_28 = 1; + local_30 = 0; + /* try { // try from 0036356c to 0046356f has its CatchHandler @ 00362d24 */ + /* catch() { ... } // from try @ 003633d4 with catch @ 00363570 */ + local_20 = **(undefined8 **)(param_2 + 0x38); + local_18 = 0; + local_8 = cv::UMat::handle(param_2,0x3000000); + /* try { // try from 00363580 to 00463583 has its CatchHandler @ 00362d24 */ + /* catch() { ... } // from try @ 003632f8 with catch @ 00363584 */ +joined_r0x00363590: + local_c = 0; + local_10 = 0; + if (DAT_005320c0 == (code *)0x0) { + local_c = 0; + /* try { // try from 00363594 to 00463597 has its CatchHandler @ 00362d24 */ + local_10 = 0; + /* catch() { ... } // from try @ 00362eec with catch @ 00363598 */ + DAT_005320c0 = (code *)FUN_0034d2bc("clCreateImage"); + if (DAT_005320c0 == (code *)0x0) { +LAB_003635a8: + /* try { // try from 003635a8 to 004635ab has its CatchHandler @ 00362d24 */ + uVar24 = 0; + /* catch() { ... } // from try @ 00363150 with catch @ 003635ac */ + local_94 = -1000; + goto LAB_00363308; + } + } + /* try { // try from 003632f8 to 004632fb has its CatchHandler @ 00363584 */ + /* try { // try from 00363300 to 00463393 has its CatchHandler @ 00362d24 */ + uVar24 = (*DAT_005320c0)(uVar21,1,&local_90,&local_48,0,&local_94); + } +LAB_00363308: + *(undefined8 *)(param_1 + 8) = uVar24; + cVar15 = FUN_00350224(); + if ((cVar15 != '\0') && (local_94 != 0)) { + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,8); + *(undefined8 *)pcVar25 = s_err____0_0046e630._0_8_; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1603); + cv::String::deallocate((String *)&local_48); + } + local_78 = 0; + local_60 = (long)*(int *)(param_2 + 0xc); + local_70 = 0; + local_58 = (long)*(int *)(param_2 + 8); + local_68 = 0; + local_50 = 1; + if (param_4 == '\0') { + if ((*(uint *)param_2 >> 0xe & 1) == 0) { + /* try { // try from 0036368c to 0046375b has its CatchHandler @ 003635c0 */ + if (*(int *)(param_2 + 4) < 1) { + lVar28 = 0; + if (DAT_00531ff8 == (code *)0x0) goto LAB_00363c6c; +LAB_003636c0: + lVar28 = (*DAT_00531ff8)(uVar21,4,lVar28,0,&local_94); + } + else { + lVar28 = (long)(*(int *)(param_2 + 0xc) * *(int *)(param_2 + 8)) * + *(long *)(*(long *)(param_2 + 0x38) + (long)*(int *)(param_2 + 4) * 8 + -8); + if (DAT_00531ff8 != (code *)0x0) goto LAB_003636c0; +LAB_00363c6c: + DAT_00531ff8 = (code *)FUN_0034d2bc("clCreateBuffer"); + if (DAT_00531ff8 != (code *)0x0) goto LAB_003636c0; + local_94 = -1000; + lVar28 = 0; + } + cVar15 = FUN_00350224(); + if ((cVar15 != '\0') && (local_94 != 0)) { + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,8); + *(undefined8 *)pcVar25 = s_err____0_0046e630._0_8_; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x160c); + cv::String::deallocate((String *)&local_48); + } + local_38 = 1; + if (*(int *)(param_2 + 4) < 1) { + local_48 = 0; + } + else { + local_48 = (long)*(int *)(param_2 + 0xc) * + *(long *)(*(long *)(param_2 + 0x38) + (long)*(int *)(param_2 + 4) * 8 + -8); + } + local_40 = (long)*(int *)(param_2 + 8); + uVar21 = cv::UMat::handle(param_2,0x1000000); + uVar24 = *(undefined8 *)(param_2 + 0x40); + if (*(int *)(param_2 + 4) < 1) { + lVar27 = 0; + if (DAT_005329c0 == (code *)0x0) goto LAB_00363c2c; +LAB_00363780: + /* try { // try from 00363780 to 0046379f has its CatchHandler @ 003635c0 */ + iVar17 = (*DAT_005329c0)(uVar23,uVar21,lVar28,&local_78,&local_78,&local_48,uVar24,0,lVar27, + 0,0,0,0); + if (iVar17 != 0) goto LAB_003637b8; + } + else { + lVar27 = (long)*(int *)(param_2 + 0xc) * + *(long *)(*(long *)(param_2 + 0x38) + (long)*(int *)(param_2 + 4) * 8 + -8); + /* try { // try from 00363778 to 0046377b has its CatchHandler @ 003637cc */ + if (DAT_005329c0 != (code *)0x0) goto LAB_00363780; +LAB_00363c2c: + DAT_005329c0 = (code *)FUN_0034d2bc("clEnqueueCopyBufferRect"); + if (DAT_005329c0 != (code *)0x0) goto LAB_00363780; +LAB_003637b8: + /* try { // try from 003637bc to 004637bf has its CatchHandler @ 003637f4 */ + /* try { // try from 003637c4 to 004637c7 has its CatchHandler @ 003635c0 */ + local_88 = 0; + local_80 = 0; + /* catch() { ... } // from try @ 00363778 with catch @ 003637cc */ + __dest = (void *)cv::String::allocate((String *)&local_88,0xa5); + /* try { // try from 003637dc to 004637df has its CatchHandler @ 003635c0 */ + memcpy(__dest, + "clEnqueueCopyBufferRect(queue, (cl_mem)src.handle(ACCESS_READ), devData, origin, origin, roi, src.step, 0, src.cols * src.elemSize(), 0, 0, NULL, NULL) == CL_SUCCESS" + ,0xa5); + /* catch() { ... } // from try @ 00363684 with catch @ 003637e0 */ + /* try { // try from 003637f0 to 004637f3 has its CatchHandler @ 003635c0 */ + /* catch() { ... } // from try @ 003637bc with catch @ 003637f4 */ + cv::error(-0xd7,(String *)&local_88, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1610); + /* try { // try from 00363804 to 00463807 has its CatchHandler @ 003635c0 */ + cv::String::deallocate((String *)&local_88); + } + /* catch() { ... } // from try @ 00363858 with catch @ 00363808 + catch() { ... } // from try @ 00363940 with catch @ 00363808 + catch() { ... } // from try @ 003639d4 with catch @ 00363808 + catch() { ... } // from try @ 003639ec with catch @ 00363808 + catch() { ... } // from try @ 00363a00 with catch @ 00363808 */ + cVar15 = FUN_00350224(); + if (cVar15 == '\0') { + if ((DAT_00532000 != (code *)0x0) || + (DAT_00532000 = (code *)FUN_0034d2bc("clFlush"), DAT_00532000 != (code *)0x0)) { + (*DAT_00532000)(uVar23); + } + } + else { + /* try { // try from 00363ba0 to 00463ba3 has its CatchHandler @ 00363a04 */ + /* catch() { ... } // from try @ 00363b98 with catch @ 00363ba8 */ + if (((DAT_00532000 == (code *)0x0) && + (DAT_00532000 = (code *)FUN_0034d2bc("clFlush"), DAT_00532000 == (code *)0x0)) || + (iVar17 = (*DAT_00532000)(uVar23), iVar17 != 0)) { + /* try { // try from 00363bb8 to 00463bbb has its CatchHandler @ 00363a04 */ + /* catch() { ... } // from try @ 00363b30 with catch @ 00363bbc */ + local_88 = 0; + local_80 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_88,0x13); + cVar15 = s_clFlush_queue_____0_0046eeb0[0x12]; + uVar24 = s_clFlush_queue_____0_0046eeb0._8_8_; + uVar21 = s_clFlush_queue_____0_0046eeb0._0_8_; + /* try { // try from 00363bcc to 00463bcf has its CatchHandler @ 00363a04 */ + /* catch() { ... } // from try @ 00363c18 with catch @ 00363bd0 + catch() { ... } // from try @ 00363d7c with catch @ 00363bd0 + catch() { ... } // from try @ 00363dc4 with catch @ 00363bd0 + catch() { ... } // from try @ 00363e08 with catch @ 00363bd0 + catch() { ... } // from try @ 00363e24 with catch @ 00363bd0 + catch() { ... } // from try @ 00363e38 with catch @ 00363bd0 + catch() { ... } // from try @ 00363e4c with catch @ 00363bd0 */ + *(undefined2 *)(pcVar25 + 0x10) = s_clFlush_queue_____0_0046eeb0._16_2_; + pcVar25[0x12] = cVar15; + *(undefined8 *)pcVar25 = uVar21; + *(undefined8 *)(pcVar25 + 8) = uVar24; + cv::error(-0xd7,(String *)&local_88, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1611); + cv::String::deallocate((String *)&local_88); + } + } + } + else { + lVar28 = cv::UMat::handle(param_2,0x1000000); + } + if (lVar28 != 0) { + cVar15 = FUN_00350224(); + uVar21 = *(undefined8 *)(param_1 + 8); + goto joined_r0x003638b4; + } + } + else { + lVar28 = cv::UMat::handle(param_2,0x1000000); + if (lVar28 != 0) { + return; + } + } + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0xf); + cVar15 = s_devData____NULL_0046eec8[0xe]; + uVar4 = s_devData____NULL_0046eec8._12_2_; + uVar7 = s_devData____NULL_0046eec8._8_4_; + /* try { // try from 00363858 to 0046391b has its CatchHandler @ 00363808 */ + *(undefined8 *)pcVar25 = s_devData____NULL_0046eec8._0_8_; + *(undefined4 *)(pcVar25 + 8) = uVar7; + *(undefined2 *)(pcVar25 + 0xc) = uVar4; + pcVar25[0xe] = cVar15; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x1617); + cv::String::deallocate((String *)&local_48); + if (param_4 != '\0') { + return; + } + cVar15 = FUN_00350224(); + lVar28 = 0; + uVar21 = *(undefined8 *)(param_1 + 8); +joined_r0x003638b4: + if (cVar15 == '\0') { + /* try { // try from 00363d7c to 00463d9f has its CatchHandler @ 00363bd0 */ + if ((DAT_00532090 != (code *)0x0) || + (DAT_00532090 = (code *)FUN_0034d2bc("clEnqueueCopyBufferToImage"), + DAT_00532090 != (code *)0x0)) { + (*DAT_00532090)(uVar23,lVar28,uVar21,0,&local_78,&local_60,0,0,0); + } + } + else if (((DAT_00532090 == (code *)0x0) && + (DAT_00532090 = (code *)FUN_0034d2bc("clEnqueueCopyBufferToImage"), + DAT_00532090 == (code *)0x0)) || + (iVar17 = (*DAT_00532090)(uVar23,lVar28,uVar21,0,&local_78,&local_60,0,0,0), iVar17 != 0)) + { + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x58); + uVar14 = s_clEnqueueCopyBufferToImage_queue_0046eef8._72_8_; + uVar13 = s_clEnqueueCopyBufferToImage_queue_0046eef8._64_8_; + uVar12 = s_clEnqueueCopyBufferToImage_queue_0046eef8._56_8_; + uVar11 = s_clEnqueueCopyBufferToImage_queue_0046eef8._48_8_; + uVar10 = s_clEnqueueCopyBufferToImage_queue_0046eef8._40_8_; + uVar9 = s_clEnqueueCopyBufferToImage_queue_0046eef8._32_8_; + uVar8 = s_clEnqueueCopyBufferToImage_queue_0046eef8._24_8_; + uVar6 = s_clEnqueueCopyBufferToImage_queue_0046eef8._16_8_; + uVar24 = s_clEnqueueCopyBufferToImage_queue_0046eef8._8_8_; + uVar21 = s_clEnqueueCopyBufferToImage_queue_0046eef8._0_8_; + /* try { // try from 00363938 to 0046393b has its CatchHandler @ 003639f0 */ + *(undefined8 *)(pcVar25 + 0x50) = s_clEnqueueCopyBufferToImage_queue_0046eef8._80_8_; + /* try { // try from 00363940 to 004639af has its CatchHandler @ 00363808 */ + *(undefined8 *)pcVar25 = uVar21; + *(undefined8 *)(pcVar25 + 8) = uVar24; + *(undefined8 *)(pcVar25 + 0x10) = uVar6; + *(undefined8 *)(pcVar25 + 0x18) = uVar8; + *(undefined8 *)(pcVar25 + 0x20) = uVar9; + *(undefined8 *)(pcVar25 + 0x28) = uVar10; + *(undefined8 *)(pcVar25 + 0x30) = uVar11; + *(undefined8 *)(pcVar25 + 0x38) = uVar12; + *(undefined8 *)(pcVar25 + 0x40) = uVar13; + *(undefined8 *)(pcVar25 + 0x48) = uVar14; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x161b); + cv::String::deallocate((String *)&local_48); + } + if ((*(uint *)param_2 >> 0xe & 1) == 0) { + cVar15 = FUN_00350224(); + if (cVar15 == '\0') { + FUN_0034d5ec(uVar23); + } + else { + iVar17 = FUN_0034d5ec(uVar23); + if (iVar17 != 0) { + /* try { // try from 00363dbc to 00463dbf has its CatchHandler @ 00363e14 */ + /* try { // try from 00363dc4 to 00463de3 has its CatchHandler @ 00363bd0 */ + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x13); + cVar15 = s_clFlush_queue_____0_0046eeb0[0x12]; + uVar21 = s_clFlush_queue_____0_0046eeb0._8_8_; + uVar23 = s_clFlush_queue_____0_0046eeb0._0_8_; + /* try { // try from 00363e00 to 00463e03 has its CatchHandler @ 00363e3c */ + *(undefined2 *)(pcVar25 + 0x10) = s_clFlush_queue_____0_0046eeb0._16_2_; + /* try { // try from 00363e08 to 00463e0b has its CatchHandler @ 00363bd0 */ + pcVar25[0x12] = cVar15; + *(undefined8 *)pcVar25 = uVar23; + *(undefined8 *)(pcVar25 + 8) = uVar21; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x161e); + /* catch() { ... } // from try @ 00363dbc with catch @ 00363e14 */ + cv::String::deallocate((String *)&local_48); + } + } + cVar15 = FUN_00350224(); + /* try { // try from 003633d4 to 004633d7 has its CatchHandler @ 00363570 */ + if (cVar15 == '\0') { + FUN_0034d52c(lVar28); + } + else { + /* try { // try from 003633dc to 0046340f has its CatchHandler @ 00362d24 */ + iVar17 = FUN_0034d52c(lVar28); + if (iVar17 != 0) { + local_48 = 0; + local_40 = 0; + pcVar25 = (char *)cv::String::allocate((String *)&local_48,0x20); + uVar24 = s_clReleaseMemObject_devData_____0_0046ef58._24_8_; + uVar21 = s_clReleaseMemObject_devData_____0_0046ef58._16_8_; + uVar23 = s_clReleaseMemObject_devData_____0_0046ef58._8_8_; + *(undefined8 *)pcVar25 = s_clReleaseMemObject_devData_____0_0046ef58._0_8_; + *(undefined8 *)(pcVar25 + 8) = uVar23; + *(undefined8 *)(pcVar25 + 0x10) = uVar21; + *(undefined8 *)(pcVar25 + 0x18) = uVar24; + cv::error(-0xd7,(String *)&local_48, + "void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0x161f); + cv::String::deallocate((String *)&local_48); + } + } + } + return; +} + + +================================================================== + +### FUNC 00363f88 (96 bytes) name=Image2D + +/* cv::ocl::Image2D::Image2D(cv::UMat const&, bool, bool) */ + +void __thiscall cv::ocl::Image2D::Image2D(Image2D *this,UMat *param_1,bool param_2,bool param_3) + +{ + undefined4 *puVar1; + + /* try { // try from 00363fac to 00463faf has its CatchHandler @ 00364b24 */ + puVar1 = operator_new(0x10); + *(undefined8 *)(puVar1 + 2) = 0; + /* try { // try from 00363fb4 to 0046404b has its CatchHandler @ 00363e50 */ + *puVar1 = 1; + FUN_00363134(puVar1,param_1,param_2,param_3); + *(undefined4 **)this = puVar1; + return; +} + + +================================================================== + +### FUNC 00363ffc (896 bytes) name=runTask + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::ocl::Kernel::runTask(bool, cv::ocl::Queue const&) */ + +bool __thiscall cv::ocl::Kernel::runTask(Kernel *this,bool param_1,Queue *param_2) + +{ + bool bVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + char cVar8; + int iVar9; + int iVar10; + int *piVar11; + Queue *this_00; + undefined8 *puVar12; + undefined8 uVar13; + long *plVar14; + long lVar15; + long lVar16; + long *plVar17; + undefined8 local_10; + undefined8 local_8; + + lVar15 = *(long *)this; + if (lVar15 == 0) { + return false; + } + if (*(long *)(lVar15 + 8) == 0) { + return false; + } + if (*(long *)(lVar15 + 0x10) != 0) { + return false; + } + lVar15 = Queue::ptr(param_2); + if (lVar15 == 0) { + this_00 = (Queue *)Queue::getDefault(); + lVar15 = Queue::ptr(this_00); + } + uVar13 = *(undefined8 *)(*(long *)this + 8); + if (param_1) { + if (DAT_005320e0 == (code *)0x0) { + lVar16 = 0; +LAB_003641f8: + DAT_005320e0 = (code *)FUN_0034d2bc("clEnqueueTask"); + if (DAT_005320e0 != (code *)0x0) goto LAB_00364110; + iVar9 = -1000; + } + else { + iVar9 = (*DAT_005320e0)(lVar15,uVar13,0,0,0); + } + } + else { + lVar16 = *(long *)this + 0x10; + if (DAT_005320e0 == (code *)0x0) goto LAB_003641f8; +LAB_00364110: + iVar9 = (*DAT_005320e0)(lVar15,uVar13,0,0,lVar16); + if ((iVar9 == 0) && (!param_1)) { + piVar11 = *(int **)this; + do { + cVar8 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar1) { + *piVar11 = *piVar11 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + cVar8 = FUN_00350224(); + lVar15 = *(long *)this; + if (cVar8 == '\0') { + uVar13 = *(undefined8 *)(lVar15 + 0x10); + if ((DAT_00532088 == (code *)0x0) && + (DAT_00532088 = (code *)FUN_0034d2bc("clSetEventCallback"), DAT_00532088 == (code *)0x0)) + { + iVar9 = 0; + } + else { + iVar9 = 0; + (*DAT_00532088)(uVar13,0,FUN_00355f54,lVar15); + } + } + else { + uVar13 = *(undefined8 *)(lVar15 + 0x10); + if ((DAT_00532088 != (code *)0x0) || + (DAT_00532088 = (code *)FUN_0034d2bc("clSetEventCallback"), DAT_00532088 != (code *)0x0)) + { + /* try { // try from 00364164 to 00464167 has its CatchHandler @ 00364a44 */ + /* try { // try from 0036416c to 004644e7 has its CatchHandler @ 00363e50 */ + iVar10 = (*DAT_00532088)(uVar13,0,FUN_00355f54,lVar15); + iVar9 = 0; + if (iVar10 == 0) goto LAB_00364184; + } + local_10 = 0; + local_8 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_10,0x39); + uVar7 = DAT_0046f040; + uVar6 = DAT_0046f038; + uVar5 = DAT_0046f030; + uVar4 = DAT_0046f028; + uVar3 = DAT_0046f020; + uVar2 = DAT_0046f018; + uVar13 = DAT_0046f010; + *(undefined1 *)(puVar12 + 7) = LAB_0046f048; + puVar12[6] = uVar7; + *puVar12 = uVar13; + puVar12[1] = uVar2; + puVar12[2] = uVar3; + puVar12[3] = uVar4; + puVar12[4] = uVar5; + puVar12[5] = uVar6; + error(-0xd7,(String *)&local_10,"bool cv::ocl::Kernel::runTask(bool, const cv::ocl::Queue&)" + ,"/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd5d); + iVar9 = 0; + String::deallocate((String *)&local_10); + } + goto LAB_00364184; + } + } + cVar8 = FUN_00350224(); + /* try { // try from 0036409c to 0046409f has its CatchHandler @ 00364b08 */ + if (cVar8 == '\0') { + if ((DAT_00532988 != (code *)0x0) || + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 != (code *)0x0)) { + (*DAT_00532988)(lVar15); + } + } + else { + /* try { // try from 003640a4 to 00464123 has its CatchHandler @ 00363e50 */ + if (((DAT_00532988 == (code *)0x0) && + (DAT_00532988 = (code *)FUN_0034d2bc("clFinish"), DAT_00532988 == (code *)0x0)) || + (iVar10 = (*DAT_00532988)(lVar15), iVar10 != 0)) { + local_10 = 0; + local_8 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_10,0x11); + uVar2 = DAT_0046efe8; + uVar13 = _LAB_0046efe0; + *(undefined1 *)(puVar12 + 2) = DAT_0046eff0; + *puVar12 = uVar13; + puVar12[1] = uVar2; + error(-0xd7,(String *)&local_10,"bool cv::ocl::Kernel::runTask(bool, const cv::ocl::Queue&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd57); + String::deallocate((String *)&local_10); + } + } + lVar15 = *(long *)this; + plVar17 = (long *)(lVar15 + 0x18); + do { + if (*plVar17 != 0) { + piVar11 = (int *)(*plVar17 + 0x10); + do { + iVar10 = *piVar11; + cVar8 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar1) { + *piVar11 = iVar10 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar10 == 1) { + plVar14 = *(long **)(*plVar17 + 8); + (**(code **)(*plVar14 + 0x20))(plVar14,*plVar17); + } + *plVar17 = 0; + } + plVar17 = plVar17 + 1; + } while (plVar17 != (long *)(lVar15 + 0x98)); + *(undefined4 *)(lVar15 + 0x98) = 0; + *(undefined1 *)(lVar15 + 0xb0) = 0; +LAB_00364184: + return iVar9 == 0; +} + + +================================================================== + +### FUNC 003643a4 (1580 bytes) name=run + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::ocl::Kernel::run(int, unsigned long*, unsigned long*, bool, cv::ocl::Queue const&) */ + +bool __thiscall +cv::ocl::Kernel::run + (Kernel *this,int param_1,ulong *param_2,ulong *param_3,bool param_4,Queue *param_5) + +{ + ulong uVar1; + ulong uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined1 uVar8; + undefined2 uVar9; + char cVar10; + int iVar11; + int iVar12; + undefined4 *puVar13; + int *piVar14; + Queue *this_00; + undefined8 *puVar15; + undefined8 uVar16; + long lVar17; + long *plVar18; + long lVar19; + long lVar20; + long *plVar21; + ulong uVar22; + ulong *puVar23; + bool bVar24; + ulong *local_210; + ulong *local_208; + undefined1 auStack_200 [256]; + ulong local_100 [32]; + + lVar19 = *(long *)this; + if (lVar19 == 0) { + return false; + } + if (*(long *)(lVar19 + 8) == 0) { + return false; + } + if (*(long *)(lVar19 + 0x10) != 0) { + return false; + } + lVar19 = Queue::ptr(param_5); + if (lVar19 == 0) { + this_00 = (Queue *)Queue::getDefault(); + lVar19 = Queue::ptr(this_00); + } + memset(auStack_200,0,0x100); + memset(local_100,0,0x100); + local_100[0] = 1; + local_100[1] = 1; + local_100[2] = 1; + if (param_2 == (ulong *)0x0) { + local_210 = param_2; + local_208 = param_2; + puVar15 = (undefined8 *)String::allocate((String *)&local_210,0x10); + uVar16 = DAT_0046f058; + *puVar15 = _LAB_0046f050; + puVar15[1] = uVar16; + error(-0xd7,(String *)&local_210, + "bool cv::ocl::Kernel::run(int, size_t*, size_t*, bool, const cv::ocl::Queue&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd2a); + /* try { // try from 00364818 to 0046481b has its CatchHandler @ 00364acc */ + String::deallocate((String *)&local_210); + } + if (0 < param_1) { + if (param_3 == (ulong *)0x0) { + if (param_1 == 1) { + uVar22 = *param_2; + local_100[0] = uVar22 + 0x3f & 0xffffffffffffffc0; + } + else { + /* try { // try from 0036474c to 004647db has its CatchHandler @ 00363e50 */ + if (param_1 == 3) { + /* try { // try from 00364918 to 0046491b has its CatchHandler @ 00364b88 */ + uVar22 = 1; + lVar20 = 0; + /* try { // try from 00364920 to 0046493f has its CatchHandler @ 00363e50 */ + do { + uVar1 = 4; + if ((int)lVar20 < 1) { + uVar1 = 8; + } + uVar22 = uVar22 * param_2[lVar20]; + uVar2 = 0; + if (uVar1 != 0) { + uVar2 = ((uVar1 - 1) + param_2[lVar20]) / uVar1; + } + local_100[lVar20] = uVar2 * uVar1; + lVar20 = lVar20 + 1; + } while (lVar20 != 3); + } + else if (param_1 == 2) { + /* try { // try from 00364988 to 004649c7 has its CatchHandler @ 00363e50 */ + uVar22 = 1; + lVar20 = 0; + while( true ) { + uVar1 = 0x100; + if ((int)lVar20 != 0) { + uVar1 = 8; + } + uVar22 = uVar22 * param_2[lVar20]; + uVar2 = 0; + if (uVar1 != 0) { + uVar2 = ((uVar1 - 1) + param_2[lVar20]) / uVar1; + } + local_100[lVar20] = uVar2 * uVar1; + if (lVar20 == 1) break; + lVar20 = 1; + } + } + else { + uVar22 = 1; + lVar20 = 0; + do { + lVar17 = *(long *)((long)param_2 + lVar20); + *(long *)((long)local_100 + lVar20) = lVar17; + lVar20 = lVar20 + 8; + uVar22 = uVar22 * lVar17; + } while (lVar20 != ((ulong)(param_1 - 1) + 1) * 8); + } + } + } + else { + lVar20 = 0; + uVar22 = 1; + do { + puVar23 = *(ulong **)((long)param_3 + lVar20); + if (puVar23 == (ulong *)0x0) { + local_210 = puVar23; + local_208 = puVar23; + /* try { // try from 0036451c to 0046451f has its CatchHandler @ 00364b38 */ + puVar13 = (undefined4 *)String::allocate((String *)&local_210,7); + uVar8 = DAT_0046f06e; + uVar9 = DAT_0046f06c; + /* try { // try from 00364528 to 0046454b has its CatchHandler @ 00363e50 */ + *puVar13 = DAT_0046f068; + *(undefined2 *)(puVar13 + 1) = uVar9; + *(undefined1 *)((long)puVar13 + 6) = uVar8; + error(-0xd7,(String *)&local_210, + "bool cv::ocl::Kernel::run(int, size_t*, size_t*, bool, const cv::ocl::Queue&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd2f); + String::deallocate((String *)&local_210); + } + uVar22 = uVar22 * *(long *)((long)param_2 + lVar20); + uVar1 = 0; + if (puVar23 != (ulong *)0x0) { + uVar1 = (ulong)(*(long *)((long)param_2 + lVar20) + -1 + (long)puVar23) / (ulong)puVar23; + } + *(ulong *)((long)local_100 + lVar20) = uVar1 * (long)puVar23; + lVar20 = lVar20 + 8; + } while (lVar20 != ((ulong)(param_1 - 1) + 1) * 8); + } + if (uVar22 == 0) { + return true; + } + } + lVar20 = *(long *)this; + if (*(char *)(lVar20 + 0xb0) == '\0') { + uVar16 = *(undefined8 *)(lVar20 + 8); + if (param_4) goto LAB_0036458c; + lVar20 = lVar20 + 0x10; + bVar24 = false; + if (DAT_00532030 == (code *)0x0) goto LAB_003647a8; +LAB_00364648: + iVar11 = (*DAT_00532030)(lVar19,uVar16,param_1,auStack_200,local_100,param_3,0,0,lVar20); + /* try { // try from 00364670 to 00464673 has its CatchHandler @ 00364b74 */ + if ((iVar11 == 0) && (!bVar24)) { + piVar14 = *(int **)this; + do { + cVar10 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar24) { + *piVar14 = *piVar14 + 1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + cVar10 = FUN_00350224(); + /* try { // try from 003646a0 to 004646a3 has its CatchHandler @ 00363e50 */ + if (cVar10 == '\0') { + lVar19 = *(long *)this; + uVar16 = *(undefined8 *)(lVar19 + 0x10); + if ((DAT_00532088 == (code *)0x0) && + (DAT_00532088 = (code *)FUN_0034d2bc("clSetEventCallback"), DAT_00532088 == (code *)0x0)) + { + iVar11 = 0; + /* try { // try from 00364980 to 00464983 has its CatchHandler @ 00364b9c */ + } + else { + iVar11 = 0; + (*DAT_00532088)(uVar16,0,FUN_00355f54,lVar19); + /* try { // try from 00364740 to 00464743 has its CatchHandler @ 00364b4c */ + } + } + else { + lVar19 = *(long *)this; + uVar16 = *(undefined8 *)(lVar19 + 0x10); + /* try { // try from 00364820 to 0046484f has its CatchHandler @ 00363e50 */ + if ((DAT_00532088 != (code *)0x0) || + (DAT_00532088 = (code *)FUN_0034d2bc("clSetEventCallback"), DAT_00532088 != (code *)0x0)) + { + iVar12 = (*DAT_00532088)(uVar16,0,FUN_00355f54,lVar19); + iVar11 = 0; + if (iVar12 == 0) goto LAB_003646d8; + } + local_210 = (ulong *)0x0; + local_208 = (ulong *)0x0; + puVar15 = (undefined8 *)String::allocate((String *)&local_210,0x39); + uVar8 = LAB_0046f048; + uVar7 = DAT_0046f038; + uVar6 = DAT_0046f030; + uVar5 = DAT_0046f028; + uVar4 = DAT_0046f020; + uVar3 = DAT_0046f018; + uVar16 = DAT_0046f010; + puVar15[6] = DAT_0046f040; + *(undefined1 *)(puVar15 + 7) = uVar8; + *puVar15 = uVar16; + puVar15[1] = uVar3; + puVar15[2] = uVar4; + puVar15[3] = uVar5; + /* try { // try from 003648a0 to 004648a3 has its CatchHandler @ 00364a1c */ + puVar15[4] = uVar6; + puVar15[5] = uVar7; + error(-0xd7,(String *)&local_210, + "bool cv::ocl::Kernel::run(int, size_t*, size_t*, bool, const cv::ocl::Queue&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd49); + /* try { // try from 003648a8 to 004648c7 has its CatchHandler @ 00363e50 */ + iVar11 = 0; + String::deallocate((String *)&local_210); + } + goto LAB_003646d8; + } + } + else { + /* try { // try from 00364588 to 0046458b has its CatchHandler @ 00364af4 */ + uVar16 = *(undefined8 *)(lVar20 + 8); +LAB_0036458c: + /* try { // try from 00364590 to 004645c3 has its CatchHandler @ 00363e50 */ + if (DAT_00532030 == (code *)0x0) { + bVar24 = true; + lVar20 = 0; +LAB_003647a8: + DAT_00532030 = (code *)FUN_0034d2bc("clEnqueueNDRangeKernel"); + if (DAT_00532030 != (code *)0x0) goto LAB_00364648; + iVar11 = -1000; + } + else { + iVar11 = (*DAT_00532030)(lVar19,uVar16,param_1,auStack_200,local_100,param_3,0,0,0); + } + } + cVar10 = FUN_00350224(); + if (cVar10 == '\0') { + FUN_0034d4d8(lVar19); + } + else { + iVar12 = FUN_0034d4d8(lVar19); + if (iVar12 != 0) { + local_210 = (ulong *)0x0; + local_208 = (ulong *)0x0; + puVar15 = (undefined8 *)String::allocate((String *)&local_210,0x11); + uVar3 = DAT_0046efe8; + uVar16 = _LAB_0046efe0; + *(undefined1 *)(puVar15 + 2) = DAT_0046eff0; + *puVar15 = uVar16; + puVar15[1] = uVar3; + error(-0xd7,(String *)&local_210, + "bool cv::ocl::Kernel::run(int, size_t*, size_t*, bool, const cv::ocl::Queue&)", + "/builds/master_pack-android/opencv/modules/core/src/ocl.cpp",0xd43); + String::deallocate((String *)&local_210); + } + } + lVar19 = *(long *)this; + plVar21 = (long *)(lVar19 + 0x18); + do { + if (*plVar21 != 0) { + piVar14 = (int *)(*plVar21 + 0x10); + do { + iVar12 = *piVar14; + /* try { // try from 003645fc to 004645ff has its CatchHandler @ 00364a30 */ + cVar10 = '\x01'; + bVar24 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar24) { + *piVar14 = iVar12 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + /* try { // try from 00364604 to 00464637 has its CatchHandler @ 00363e50 */ + if (iVar12 == 1) { + /* try { // try from 003646e4 to 004646e7 has its CatchHandler @ 00364b60 */ + plVar18 = *(long **)(*plVar21 + 8); + (**(code **)(*plVar18 + 0x20))(plVar18,*plVar21); + /* try { // try from 00364700 to 00464703 has its CatchHandler @ 00363e50 */ + } + *plVar21 = 0; + } + plVar21 = plVar21 + 1; + } while (plVar21 != (long *)(lVar19 + 0x98)); + *(undefined4 *)(lVar19 + 0x98) = 0; + *(undefined1 *)(lVar19 + 0xb0) = 0; +LAB_003646d8: + return iVar11 == 0; +} + + +================================================================== + +### FUNC 00364a20 (32 bytes) name=FUN_00364a20 + +void FUN_00364a20(long *param_1) + +{ + /* try { // try from 00364a2c to 00464a2f has its CatchHandler @ 00363e50 */ + /* catch() { ... } // from try @ 003645fc with catch @ 00364a30 */ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00364a40 (144 bytes) name=setGlDevice + +/* cv::cuda::setGlDevice(int) */ + +void cv::cuda::setGlDevice(int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00364a40 to 00464a43 has its CatchHandler @ 00363e50 */ + /* catch() { ... } // from try @ 00364164 with catch @ 00364a44 */ + /* try { // try from 00364a54 to 00464a7b has its CatchHandler @ 00363e50 */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + /* try { // try from 00364ac4 to 00464ac7 has its CatchHandler @ 00364ae0 */ + /* catch() { ... } // from try @ 00364818 with catch @ 00364acc */ + return; +} + + +================================================================== + +### FUNC 00364ae4 (168 bytes) name=Buffer + +/* cv::ogl::Buffer::Buffer() */ + +void __thiscall cv::ogl::Buffer::Buffer(Buffer *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00364af0 to 00464af3 has its CatchHandler @ 00363e50 */ + /* catch() { ... } // from try @ 00364588 with catch @ 00364af4 */ + local_10 = 0; + /* try { // try from 00364b04 to 00464b07 has its CatchHandler @ 00363e50 */ + local_8 = 0; + /* catch() { ... } // from try @ 0036409c with catch @ 00364b08 */ + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + /* try { // try from 00364b18 to 00464b1b has its CatchHandler @ 00363e50 */ + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* catch() { ... } // from try @ 00363fac with catch @ 00364b24 */ + /* try { // try from 00364b34 to 00464b37 has its CatchHandler @ 00363e50 */ + /* catch() { ... } // from try @ 0036451c with catch @ 00364b38 */ + /* try { // try from 00364b48 to 00464b4b has its CatchHandler @ 00363e50 */ + /* catch() { ... } // from try @ 00364740 with catch @ 00364b4c */ + /* try { // try from 00364b5c to 00464b5f has its CatchHandler @ 00363e50 */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + /* catch() { ... } // from try @ 003646e4 with catch @ 00364b60 */ + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + /* try { // try from 00364b70 to 00464b73 has its CatchHandler @ 00363e50 */ + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + /* catch() { ... } // from try @ 00364670 with catch @ 00364b74 */ + String::deallocate((String *)&local_10); + /* try { // try from 00364b84 to 00464b87 has its CatchHandler @ 00363e50 */ + /* catch() { ... } // from try @ 00364918 with catch @ 00364b88 */ + return; +} + + +================================================================== + +### FUNC 00364bd4 (168 bytes) name=Buffer + +/* cv::ogl::Buffer::Buffer(int, int, int, unsigned int, bool) */ + +void __thiscall +cv::ogl::Buffer::Buffer(Buffer *this,int param_1,int param_2,int param_3,uint param_4,bool param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + /* try { // try from 00364c50 to 00464c53 has its CatchHandler @ 00364bcc */ + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00364cc4 (168 bytes) name=Buffer + +/* cv::ogl::Buffer::Buffer(cv::Size_, int, unsigned int, bool) */ + +void __thiscall cv::ogl::Buffer::Buffer(Buffer *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00364d28 to 00464d2b has its CatchHandler @ 00365de4 */ + /* try { // try from 00364d30 to 00464d8b has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00364db4 (168 bytes) name=Buffer + +/* cv::ogl::Buffer::Buffer(cv::_InputArray const&, cv::ogl::Buffer::Target, bool) */ + +void __thiscall cv::ogl::Buffer::Buffer(Buffer *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00364dcc to 00464dcf has its CatchHandler @ 00365d44 */ + local_10 = 0; + /* try { // try from 00364dd4 to 00464fbb has its CatchHandler @ 00364bcc */ + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00364ea4 (144 bytes) name=create + +/* cv::ogl::Buffer::create(int, int, int, cv::ogl::Buffer::Target, bool) */ + +void cv::ogl::Buffer::create(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00364f48 (4 bytes) name=release + +/* cv::ogl::Buffer::release() */ + +void cv::ogl::Buffer::release(void) + +{ + return; +} + + +================================================================== + +### FUNC 00364f4c (144 bytes) name=setAutoRelease + +/* cv::ogl::Buffer::setAutoRelease(bool) */ + +void cv::ogl::Buffer::setAutoRelease(bool param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00364ff0 (144 bytes) name=copyFrom + +/* cv::ogl::Buffer::copyFrom(cv::_InputArray const&, cv::ogl::Buffer::Target, bool) */ + +void cv::ogl::Buffer::copyFrom(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00364ff4 to 00464ff7 has its CatchHandler @ 00365ee0 */ + /* try { // try from 00364ffc to 00465033 has its CatchHandler @ 00364bcc */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365094 (144 bytes) name=copyFrom + +/* cv::ogl::Buffer::copyFrom(cv::_InputArray const&, cv::cuda::Stream&, cv::ogl::Buffer::Target, + bool) */ + +void cv::ogl::Buffer::copyFrom(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365138 (144 bytes) name=copyTo + +/* cv::ogl::Buffer::copyTo(cv::_OutputArray const&) const */ + +void cv::ogl::Buffer::copyTo(_OutputArray *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365170 to 00465173 has its CatchHandler @ 00365e40 */ + /* try { // try from 00365178 to 004651c7 has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003651dc (144 bytes) name=copyTo + +/* cv::ogl::Buffer::copyTo(cv::_OutputArray const&, cv::cuda::Stream&) const */ + +void cv::ogl::Buffer::copyTo(_OutputArray *param_1,Stream *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 0036520c to 0046520f has its CatchHandler @ 00365ef4 */ + /* try { // try from 00365214 to 0046524b has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365280 (160 bytes) name=clone + +/* cv::ogl::Buffer::clone(cv::ogl::Buffer::Target, bool) const */ + +Buffer * cv::ogl::Buffer::clone(Buffer *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00365294 to 00465297 has its CatchHandler @ 00365e54 */ + /* try { // try from 0036529c to 0046533f has its CatchHandler @ 00364bcc */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + Buffer(param_1); + return param_1; +} + + +================================================================== + +### FUNC 00365334 (144 bytes) name=bind + +/* cv::ogl::Buffer::bind(cv::ogl::Buffer::Target) const */ + +void cv::ogl::Buffer::bind(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 0036536c to 0046536f has its CatchHandler @ 00365d58 */ + /* try { // try from 00365374 to 004653bb has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003653d8 (144 bytes) name=unbind + +/* cv::ogl::Buffer::unbind(cv::ogl::Buffer::Target) */ + +void cv::ogl::Buffer::unbind(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 0036540c to 0046540f has its CatchHandler @ 00365e2c */ + /* try { // try from 00365414 to 004654eb has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 0036547c (220 bytes) name=mapHost + +/* cv::ogl::Buffer::mapHost(cv::ogl::Buffer::Access) */ + +undefined4 * cv::ogl::Buffer::mapHost(undefined4 *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + param_1[1] = 0; + param_1[2] = 0; + *(undefined4 **)(param_1 + 0x12) = param_1 + 0x14; + *param_1 = 0x42ff0000; + param_1[3] = 0; + *(undefined8 *)(param_1 + 4) = 0; + *(undefined8 *)(param_1 + 6) = 0; + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 *)(param_1 + 10) = 0; + *(undefined8 *)(param_1 + 0xc) = 0; + /* try { // try from 00365538 to 0046553b has its CatchHandler @ 00365dd0 */ + *(undefined8 *)(param_1 + 0xe) = 0; + *(undefined4 **)(param_1 + 0x10) = param_1 + 2; + /* try { // try from 00365540 to 0046558b has its CatchHandler @ 00364bcc */ + *(undefined8 *)(param_1 + 0x16) = 0; + *(undefined8 *)(param_1 + 0x14) = 0; + return param_1; +} + + +================================================================== + +### FUNC 0036556c (144 bytes) name=unmapHost + +/* cv::ogl::Buffer::unmapHost() */ + +void cv::ogl::Buffer::unmapHost(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + /* try { // try from 003655d4 to 004655d7 has its CatchHandler @ 00365d80 */ + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + /* try { // try from 003655dc to 00465667 has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365610 (192 bytes) name=mapDevice + +/* cv::ogl::Buffer::mapDevice() */ + +void __thiscall cv::ogl::Buffer::mapDevice(Buffer *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char *pcVar6; + undefined8 uVar7; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2e); + uVar5 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar7 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar4; + *(undefined2 *)(pcVar6 + 0x2c) = uVar5; + *(undefined8 *)pcVar6 = uVar7; + *(undefined8 *)(pcVar6 + 8) = uVar1; + *(undefined8 *)(pcVar6 + 0x10) = uVar2; + *(undefined8 *)(pcVar6 + 0x18) = uVar3; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + /* try { // try from 00365690 to 00465693 has its CatchHandler @ 00365e0c */ + String::deallocate((String *)&local_10); + uVar7 = cuda::GpuMat::defaultAllocator(); + /* try { // try from 00365698 to 004656bb has its CatchHandler @ 00364bcc */ + *in_x8 = 0; + *(undefined8 *)(in_x8 + 0xe) = uVar7; + in_x8[1] = 0; + in_x8[2] = 0; + *(undefined8 *)(in_x8 + 4) = 0; + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + return; +} + + +================================================================== + +### FUNC 003656e4 (144 bytes) name=unmapDevice + +/* cv::ogl::Buffer::unmapDevice() */ + +void cv::ogl::Buffer::unmapDevice(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365708 to 0046570b has its CatchHandler @ 00365df8 */ + /* try { // try from 00365710 to 00465747 has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365788 (192 bytes) name=mapDevice + +/* cv::ogl::Buffer::mapDevice(cv::cuda::Stream&) */ + +void cv::ogl::Buffer::mapDevice(Stream *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char *pcVar6; + undefined8 uVar7; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00365788 to 0046578b has its CatchHandler @ 00365d30 */ + /* try { // try from 00365790 to 004657cb has its CatchHandler @ 00364bcc */ + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2e); + uVar5 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar7 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar4; + *(undefined2 *)(pcVar6 + 0x2c) = uVar5; + *(undefined8 *)pcVar6 = uVar7; + *(undefined8 *)(pcVar6 + 8) = uVar1; + *(undefined8 *)(pcVar6 + 0x10) = uVar2; + *(undefined8 *)(pcVar6 + 0x18) = uVar3; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + uVar7 = cuda::GpuMat::defaultAllocator(); + *in_x8 = 0; + *(undefined8 *)(in_x8 + 0xe) = uVar7; + /* try { // try from 0036581c to 0046581f has its CatchHandler @ 00365e68 */ + in_x8[1] = 0; + in_x8[2] = 0; + /* try { // try from 00365824 to 0046586b has its CatchHandler @ 00364bcc */ + *(undefined8 *)(in_x8 + 4) = 0; + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + return; +} + + +================================================================== + +### FUNC 0036585c (144 bytes) name=unmapDevice + +/* cv::ogl::Buffer::unmapDevice(cv::cuda::Stream&) */ + +void cv::ogl::Buffer::unmapDevice(Stream *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365898 to 0046589b has its CatchHandler @ 00365e7c */ + /* try { // try from 003658a0 to 00465913 has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365900 (148 bytes) name=bufId + +/* cv::ogl::Buffer::bufId() const */ + +undefined8 cv::ogl::Buffer::bufId(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 0036594c to 0046594f has its CatchHandler @ 00365d94 */ + /* try { // try from 00365954 to 004659cb has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return 0; +} + + +================================================================== + +### FUNC 003659a8 (168 bytes) name=Texture2D + +/* cv::ogl::Texture2D::Texture2D() */ + +void __thiscall cv::ogl::Texture2D::Texture2D(Texture2D *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365a14 to 00465a17 has its CatchHandler @ 00365ecc */ + /* try { // try from 00365a1c to 00465a47 has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365a98 (168 bytes) name=Texture2D + +/* cv::ogl::Texture2D::Texture2D(int, int, cv::ogl::Texture2D::Format, unsigned int, bool) */ + +void __thiscall cv::ogl::Texture2D::Texture2D(Texture2D *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365b08 to 00465b0b has its CatchHandler @ 00365ea4 */ + /* try { // try from 00365b10 to 00465b37 has its CatchHandler @ 00364bcc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365b88 (168 bytes) name=Texture2D + +/* cv::ogl::Texture2D::Texture2D(cv::Size_, cv::ogl::Texture2D::Format, unsigned int, bool) */ + +void __thiscall cv::ogl::Texture2D::Texture2D(Texture2D *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365c78 (168 bytes) name=Texture2D + +/* cv::ogl::Texture2D::Texture2D(cv::_InputArray const&, bool) */ + +void __thiscall cv::ogl::Texture2D::Texture2D(Texture2D *this,_InputArray *param_1,bool param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + /* try { // try from 00365c9c to 00465c9f has its CatchHandler @ 00365d6c */ + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + /* try { // try from 00365ca4 to 00465cc7 has its CatchHandler @ 00364bcc */ + *(undefined4 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x14) = 0; + *(undefined4 *)(this + 0x18) = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + /* try { // try from 00365d08 to 00465d0b has its CatchHandler @ 00365dbc */ + String::deallocate((String *)&local_10); + /* try { // try from 00365d10 to 00465d13 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365084 with catch @ 00365d1c */ + return; +} + + +================================================================== + +### FUNC 00365d68 (144 bytes) name=create + +/* cv::ogl::Texture2D::create(int, int, cv::ogl::Texture2D::Format, bool) */ + +void cv::ogl::Texture2D::create(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00365d68 to 00465d6b has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365c9c with catch @ 00365d6c */ + /* try { // try from 00365d7c to 00465d7f has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 003655d4 with catch @ 00365d80 */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365d90 to 00465d93 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 0036594c with catch @ 00365d94 */ + /* try { // try from 00365da4 to 00465da7 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00364c90 with catch @ 00365da8 */ + /* try { // try from 00365db8 to 00465dbb has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365d08 with catch @ 00365dbc */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + /* try { // try from 00365dcc to 00465dcf has its CatchHandler @ 00364bcc */ + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + /* catch() { ... } // from try @ 00365538 with catch @ 00365dd0 */ + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + /* try { // try from 00365de0 to 00465de3 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00364d28 with catch @ 00365de4 */ + String::deallocate((String *)&local_10); + /* try { // try from 00365df4 to 00465df7 has its CatchHandler @ 00364bcc */ + return; +} + + +================================================================== + +### FUNC 00365e0c (4 bytes) name=release + +/* cv::ogl::Texture2D::release() */ + +void cv::ogl::Texture2D::release(void) + +{ + /* catch() { ... } // from try @ 00365690 with catch @ 00365e0c */ + return; +} + + +================================================================== + +### FUNC 00365e10 (144 bytes) name=setAutoRelease + +/* cv::ogl::Texture2D::setAutoRelease(bool) */ + +void cv::ogl::Texture2D::setAutoRelease(bool param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00365e1c to 00465e1f has its CatchHandler @ 00364bcc */ + local_10 = 0; + /* catch() { ... } // from try @ 0036540c with catch @ 00365e2c */ + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365e3c to 00465e3f has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365170 with catch @ 00365e40 */ + /* try { // try from 00365e50 to 00465e53 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365294 with catch @ 00365e54 */ + /* try { // try from 00365e64 to 00465e67 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 0036581c with catch @ 00365e68 */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + /* try { // try from 00365e78 to 00465e7b has its CatchHandler @ 00364bcc */ + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + /* catch() { ... } // from try @ 00365898 with catch @ 00365e7c */ + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + /* try { // try from 00365e8c to 00465e8f has its CatchHandler @ 00364bcc */ + String::deallocate((String *)&local_10); + /* catch() { ... } // from try @ 00365b74 with catch @ 00365e90 */ + return; +} + + +================================================================== + +### FUNC 00365eb4 (144 bytes) name=copyFrom + +/* cv::ogl::Texture2D::copyFrom(cv::_InputArray const&, bool) */ + +void cv::ogl::Texture2D::copyFrom(_InputArray *param_1,bool param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00365eb4 to 00465eb7 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365a80 with catch @ 00365eb8 */ + /* try { // try from 00365ec8 to 00465ecb has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365a14 with catch @ 00365ecc */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00365edc to 00465edf has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00364ff4 with catch @ 00365ee0 */ + /* try { // try from 00365ef0 to 00465ef3 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 0036520c with catch @ 00365ef4 */ + /* try { // try from 00365f04 to 00465f07 has its CatchHandler @ 00364bcc */ + /* catch() { ... } // from try @ 00365f5c with catch @ 00365f08 + catch() { ... } // from try @ 00366074 with catch @ 00365f08 + catch() { ... } // from try @ 00366128 with catch @ 00365f08 + catch() { ... } // from try @ 0036619c with catch @ 00365f08 + catch() { ... } // from try @ 003661fc with catch @ 00365f08 + catch() { ... } // from try @ 0036626c with catch @ 00365f08 + catch() { ... } // from try @ 003662d4 with catch @ 00365f08 + catch() { ... } // from try @ 0036634c with catch @ 00365f08 + catch() { ... } // from try @ 00366364 with catch @ 00365f08 + catch() { ... } // from try @ 00366378 with catch @ 00365f08 + catch() { ... } // from try @ 0036638c with catch @ 00365f08 + catch() { ... } // from try @ 003663a0 with catch @ 00365f08 + catch() { ... } // from try @ 003663b4 with catch @ 00365f08 + catch() { ... } // from try @ 003663c8 with catch @ 00365f08 + catch() { ... } // from try @ 003663dc with catch @ 00365f08 */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365f58 (144 bytes) name=copyTo + +/* cv::ogl::Texture2D::copyTo(cv::_OutputArray const&, int, bool) const */ + +void cv::ogl::Texture2D::copyTo(_OutputArray *param_1,int param_2,bool param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00365f5c to 00466013 has its CatchHandler @ 00365f08 */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00365ffc (144 bytes) name=bind + +/* cv::ogl::Texture2D::bind() const */ + +void cv::ogl::Texture2D::bind(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + /* try { // try from 0036606c to 0046606f has its CatchHandler @ 00366368 */ + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + /* try { // try from 00366074 to 004660f3 has its CatchHandler @ 00365f08 */ + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003660a0 (148 bytes) name=texId + +/* cv::ogl::Texture2D::texId() const */ + +undefined8 cv::ogl::Texture2D::texId(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + /* try { // try from 00366120 to 00466123 has its CatchHandler @ 00366354 */ + /* try { // try from 00366128 to 00466177 has its CatchHandler @ 00365f08 */ + return 0; +} + + +================================================================== + +### FUNC 00366148 (576 bytes) name=setVertexArray + +/* cv::ogl::Arrays::setVertexArray(cv::_InputArray const&) */ + +void __thiscall cv::ogl::Arrays::setVertexArray(Arrays *this,_InputArray *param_1) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + int iVar14; + int iVar15; + char *pcVar16; + long *plVar17; + long *local_20; + undefined8 local_18; + int local_10; + int local_c; + undefined4 local_8; + + iVar14 = _InputArray::channels(param_1,-1); + iVar15 = _InputArray::depth(param_1,-1); + if (2 < iVar14 - 2U) { + local_20 = (long *)0x0; + /* try { // try from 00366264 to 00466267 has its CatchHandler @ 003663b8 */ + local_18 = 0; + pcVar16 = (char *)String::allocate((String *)&local_20,0x1d); + cVar2 = s_cn____2____cn____3____cn____4_0046f900[0x1c]; + uVar7 = s_cn____2____cn____3____cn____4_0046f900._24_4_; + uVar6 = s_cn____2____cn____3____cn____4_0046f900._8_8_; + uVar5 = s_cn____2____cn____3____cn____4_0046f900._0_8_; + /* try { // try from 0036626c to 0046628b has its CatchHandler @ 00365f08 */ + *(undefined8 *)(pcVar16 + 0x10) = s_cn____2____cn____3____cn____4_0046f900._16_8_; + *(undefined4 *)(pcVar16 + 0x18) = uVar7; + pcVar16[0x1c] = cVar2; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setVertexArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x4db); + String::deallocate((String *)&local_20); + } + /* try { // try from 00366194 to 00466197 has its CatchHandler @ 003663cc */ + if (3 < iVar15 - 3U) { + /* try { // try from 0036619c to 004661bb has its CatchHandler @ 00365f08 */ + local_20 = (long *)0x0; + local_18 = 0; + pcVar16 = (char *)String::allocate((String *)&local_20,0x48); + uVar13 = s_depth____CV_16S____depth____CV_3_0046f920._56_8_; + uVar12 = s_depth____CV_16S____depth____CV_3_0046f920._48_8_; + uVar11 = s_depth____CV_16S____depth____CV_3_0046f920._40_8_; + uVar10 = s_depth____CV_16S____depth____CV_3_0046f920._32_8_; + uVar9 = s_depth____CV_16S____depth____CV_3_0046f920._24_8_; + uVar8 = s_depth____CV_16S____depth____CV_3_0046f920._16_8_; + uVar6 = s_depth____CV_16S____depth____CV_3_0046f920._8_8_; + uVar5 = s_depth____CV_16S____depth____CV_3_0046f920._0_8_; + *(undefined8 *)(pcVar16 + 0x40) = s_depth____CV_16S____depth____CV_3_0046f920._64_8_; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + /* try { // try from 003661f4 to 004661f7 has its CatchHandler @ 0036637c */ + *(undefined8 *)(pcVar16 + 0x10) = uVar8; + *(undefined8 *)(pcVar16 + 0x18) = uVar9; + *(undefined8 *)(pcVar16 + 0x20) = uVar10; + *(undefined8 *)(pcVar16 + 0x28) = uVar11; + /* try { // try from 003661fc to 00466247 has its CatchHandler @ 00365f08 */ + *(undefined8 *)(pcVar16 + 0x30) = uVar12; + *(undefined8 *)(pcVar16 + 0x38) = uVar13; + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setVertexArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x4dc); + String::deallocate((String *)&local_20); + } + iVar14 = _InputArray::kind(param_1); + if (iVar14 == 0x70000) { + /* try { // try from 003662cc to 004662cf has its CatchHandler @ 003663a4 */ + _InputArray::getOGlBuffer(); + /* try { // try from 003662d4 to 004662f3 has its CatchHandler @ 00365f08 */ + if (local_20 != (long *)0x0) { + plVar1 = local_20 + 1; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + plVar17 = *(long **)(this + 8); + *(undefined8 *)(this + 0x10) = local_18; + *(long **)(this + 8) = local_20; + plVar1 = plVar17 + 1; + if (plVar17 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + /* try { // try from 00366378 to 0046637b has its CatchHandler @ 00365f08 */ + /* catch() { ... } // from try @ 003661f4 with catch @ 0036637c */ + (**(code **)(*plVar17 + 0x10))(); + } + } + *(int *)(this + 0x18) = local_10; + *(int *)(this + 0x1c) = local_c; + *(undefined4 *)(this + 0x20) = local_8; + if (local_20 == (long *)0x0) goto LAB_00366238; + plVar1 = local_20 + 1; + do { + lVar4 = *plVar1; + /* try { // try from 00366344 to 00466347 has its CatchHandler @ 00366390 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 0036634c to 0046634f has its CatchHandler @ 00365f08 */ + } while (cVar2 != '\0'); + /* catch() { ... } // from try @ 00366120 with catch @ 00366354 */ + if ((int)lVar4 == 1) { + (**(code **)(*local_20 + 0x10))(); + /* try { // try from 00366364 to 00466367 has its CatchHandler @ 00365f08 */ + local_10 = *(int *)(this + 0x18); + /* catch() { ... } // from try @ 0036606c with catch @ 00366368 */ + local_c = *(int *)(this + 0x1c); + goto LAB_00366238; + } + } + else { + Buffer::copyFrom(this + 8,param_1,0x8892,0); + } + local_10 = *(int *)(this + 0x18); + local_c = *(int *)(this + 0x1c); +LAB_00366238: + *(int *)this = local_10 * local_c; + return; +} + + +================================================================== + +### FUNC 003663e8 (36 bytes) name=resetVertexArray + +/* cv::ogl::Arrays::resetVertexArray() */ + +void __thiscall cv::ogl::Arrays::resetVertexArray(Arrays *this) + +{ + Buffer::release(); + *(undefined4 *)this = 0; + return; +} + + +================================================================== + +### FUNC 0036640c (368 bytes) name=setColorArray + +/* cv::ogl::Arrays::setColorArray(cv::_InputArray const&) */ + +void __thiscall cv::ogl::Arrays::setColorArray(Arrays *this,_InputArray *param_1) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined8 uVar5; + undefined8 uVar6; + int iVar7; + char *pcVar8; + long *plVar9; + long *local_20; + undefined8 local_18; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + iVar7 = _InputArray::channels(param_1,-1); + if (1 < iVar7 - 3U) { + local_20 = (long *)0x0; + local_18 = 0; + pcVar8 = (char *)String::allocate((String *)&local_20,0x12); + uVar6 = s_cn____3____cn____4_0046f970._8_8_; + uVar5 = s_cn____3____cn____4_0046f970._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_cn____3____cn____4_0046f970._16_2_; + *(undefined8 *)pcVar8 = uVar5; + *(undefined8 *)(pcVar8 + 8) = uVar6; + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setColorArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x4f0); + String::deallocate((String *)&local_20); + } + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x70000) { + _InputArray::getOGlBuffer(); + if (local_20 != (long *)0x0) { + plVar1 = local_20 + 1; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + /* try { // try from 003664f4 to 004664f7 has its CatchHandler @ 003667c0 */ + plVar9 = *(long **)(this + 0x28); + *(undefined8 *)(this + 0x30) = local_18; + /* try { // try from 003664fc to 004665d7 has its CatchHandler @ 003663e0 */ + *(long **)(this + 0x28) = local_20; + plVar1 = plVar9 + 1; + if (plVar9 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar9 + 0x10))(); + } + } + *(undefined4 *)(this + 0x38) = local_10; + *(undefined4 *)(this + 0x3c) = local_c; + *(undefined4 *)(this + 0x40) = local_8; + plVar1 = local_20 + 1; + if (local_20 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*local_20 + 0x10))(); + } + } + } + else { + Buffer::copyFrom(this + 0x28,param_1,0x8892,0); + } + /* try { // try from 003664c4 to 004664c7 has its CatchHandler @ 003663e0 */ + return; +} + + +================================================================== + +### FUNC 003665c8 (8 bytes) name=resetColorArray + +/* cv::ogl::Arrays::resetColorArray() */ + +void cv::ogl::Arrays::resetColorArray(void) + +{ + Buffer::release(); + return; +} + + +================================================================== + +### FUNC 003665d0 (500 bytes) name=setNormalArray + +/* cv::ogl::Arrays::setNormalArray(cv::_InputArray const&) */ + +void __thiscall cv::ogl::Arrays::setNormalArray(Arrays *this,_InputArray *param_1) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined2 uVar5; + undefined1 uVar6; + int iVar7; + int iVar8; + undefined4 *puVar9; + void *__dest; + long *plVar10; + long *local_20; + undefined8 local_18; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + iVar7 = _InputArray::channels(param_1,-1); + iVar8 = _InputArray::depth(param_1,-1); + if (iVar7 != 3) { + /* try { // try from 00366618 to 0046661b has its CatchHandler @ 00366784 */ + local_20 = (long *)0x0; + /* try { // try from 00366620 to 0046664f has its CatchHandler @ 003663e0 */ + local_18 = 0; + puVar9 = (undefined4 *)String::allocate((String *)&local_20,7); + uVar6 = DAT_0045d4e6; + uVar5 = DAT_0045d4e4; + *puVar9 = DAT_0045d4e0; + *(undefined2 *)(puVar9 + 1) = uVar5; + *(undefined1 *)((long)puVar9 + 6) = uVar6; + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setNormalArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x502); + String::deallocate((String *)&local_20); + } + if ((3 < iVar8 - 3U) && (iVar8 != 1)) { + /* try { // try from 00366688 to 0046668b has its CatchHandler @ 00366798 */ + /* try { // try from 00366690 to 004666af has its CatchHandler @ 003663e0 */ + local_20 = (long *)0x0; + local_18 = 0; + __dest = (void *)String::allocate((String *)&local_20,0x5a); + memcpy(__dest, + "depth == CV_8S || depth == CV_16S || depth == CV_32S || depth == CV_32F || depth == CV_64F" + ,0x5a); + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setNormalArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x503); + String::deallocate((String *)&local_20); + } + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x70000) { + _InputArray::getOGlBuffer(); + if (local_20 != (long *)0x0) { + plVar1 = local_20 + 1; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + plVar10 = *(long **)(this + 0x48); + *(undefined8 *)(this + 0x50) = local_18; + *(long **)(this + 0x48) = local_20; + plVar1 = plVar10 + 1; + if (plVar10 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 00366760 to 00466763 has its CatchHandler @ 00366770 */ + if ((int)lVar4 == 1) { + /* try { // try from 003667bc to 004667bf has its CatchHandler @ 003663e0 */ + (**(code **)(*plVar10 + 0x10))(); + /* catch() { ... } // from try @ 003664f4 with catch @ 003667c0 */ + } + } + /* try { // try from 00366768 to 0046676b has its CatchHandler @ 003663e0 */ + *(undefined4 *)(this + 0x58) = local_10; + /* catch() { ... } // from try @ 00366760 with catch @ 00366770 */ + *(undefined4 *)(this + 0x5c) = local_c; + /* try { // try from 00366780 to 00466783 has its CatchHandler @ 003663e0 */ + *(undefined4 *)(this + 0x60) = local_8; + /* catch() { ... } // from try @ 00366618 with catch @ 00366784 */ + plVar1 = local_20 + 1; + if (local_20 != (long *)0x0) { + do { + lVar4 = *plVar1; + /* try { // try from 00366794 to 00466797 has its CatchHandler @ 003663e0 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* catch() { ... } // from try @ 00366688 with catch @ 00366798 */ + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + /* try { // try from 003667a8 to 004667ab has its CatchHandler @ 003663e0 */ + /* catch() { ... } // from try @ 003666f8 with catch @ 003667ac */ + (**(code **)(*local_20 + 0x10))(); + } + } + } + else { + /* try { // try from 003666f8 to 004666fb has its CatchHandler @ 003667ac */ + Buffer::copyFrom(this + 0x48,param_1,0x8892,0); + } + /* try { // try from 00366700 to 0046671f has its CatchHandler @ 003663e0 */ + return; +} + + +================================================================== + +### FUNC 00366824 (8 bytes) name=resetNormalArray + +/* cv::ogl::Arrays::resetNormalArray() */ + +void cv::ogl::Arrays::resetNormalArray(void) + +{ + Buffer::release(); + return; +} + + +================================================================== + +### FUNC 0036682c (528 bytes) name=setTexCoordArray + +/* cv::ogl::Arrays::setTexCoordArray(cv::_InputArray const&) */ + +void __thiscall cv::ogl::Arrays::setTexCoordArray(Arrays *this,_InputArray *param_1) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + int iVar14; + char *pcVar15; + long *plVar16; + long *local_20; + undefined8 local_18; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + /* try { // try from 00366840 to 00466843 has its CatchHandler @ 003669b0 */ + /* try { // try from 00366848 to 00466913 has its CatchHandler @ 003667d4 */ + iVar13 = _InputArray::channels(param_1,-1); + iVar14 = _InputArray::depth(param_1,-1); + if (3 < iVar13 - 1U) { + /* try { // try from 00366930 to 00466933 has its CatchHandler @ 0036699c */ + local_20 = (long *)0x0; + /* try { // try from 00366938 to 0046696f has its CatchHandler @ 003667d4 */ + local_18 = 0; + pcVar15 = (char *)String::allocate((String *)&local_20,0x12); + uVar6 = s_cn_>__1____cn_<__4_0046f9e8._8_8_; + uVar5 = s_cn_>__1____cn_<__4_0046f9e8._0_8_; + *(undefined2 *)(pcVar15 + 0x10) = s_cn_>__1____cn_<__4_0046f9e8._16_2_; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setTexCoordArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x515); + String::deallocate((String *)&local_20); + } + if (3 < iVar14 - 3U) { + local_20 = (long *)0x0; + local_18 = 0; + pcVar15 = (char *)String::allocate((String *)&local_20,0x48); + uVar12 = s_depth____CV_16S____depth____CV_3_0046f920._56_8_; + uVar11 = s_depth____CV_16S____depth____CV_3_0046f920._48_8_; + uVar10 = s_depth____CV_16S____depth____CV_3_0046f920._40_8_; + uVar9 = s_depth____CV_16S____depth____CV_3_0046f920._32_8_; + uVar8 = s_depth____CV_16S____depth____CV_3_0046f920._24_8_; + uVar7 = s_depth____CV_16S____depth____CV_3_0046f920._16_8_; + uVar6 = s_depth____CV_16S____depth____CV_3_0046f920._8_8_; + uVar5 = s_depth____CV_16S____depth____CV_3_0046f920._0_8_; + *(undefined8 *)(pcVar15 + 0x40) = s_depth____CV_16S____depth____CV_3_0046f920._64_8_; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + *(undefined8 *)(pcVar15 + 0x20) = uVar9; + *(undefined8 *)(pcVar15 + 0x28) = uVar10; + *(undefined8 *)(pcVar15 + 0x30) = uVar11; + *(undefined8 *)(pcVar15 + 0x38) = uVar12; + error(-0xd7,(String *)&local_20,"void cv::ogl::Arrays::setTexCoordArray(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x516); + String::deallocate((String *)&local_20); + } + iVar13 = _InputArray::kind(param_1); + if (iVar13 == 0x70000) { + /* try { // try from 0036698c to 0046698f has its CatchHandler @ 003669c4 */ + _InputArray::getOGlBuffer(); + /* try { // try from 00366994 to 00466997 has its CatchHandler @ 003667d4 */ + /* catch() { ... } // from try @ 00366930 with catch @ 0036699c */ + if (local_20 != (long *)0x0) { + plVar1 = local_20 + 1; + do { + /* try { // try from 003669ac to 004669af has its CatchHandler @ 003667d4 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* catch() { ... } // from try @ 00366840 with catch @ 003669b0 */ + } while (cVar2 != '\0'); + } + plVar16 = *(long **)(this + 0x68); + *(undefined8 *)(this + 0x70) = local_18; + *(long **)(this + 0x68) = local_20; + /* try { // try from 003669c0 to 004669c3 has its CatchHandler @ 003667d4 */ + plVar1 = plVar16 + 1; + /* catch() { ... } // from try @ 0036698c with catch @ 003669c4 */ + if (plVar16 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003669d4 to 004669d7 has its CatchHandler @ 003667d4 */ + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar16 + 0x10))(); + } + } + *(undefined4 *)(this + 0x78) = local_10; + *(undefined4 *)(this + 0x7c) = local_c; + *(undefined4 *)(this + 0x80) = local_8; + plVar1 = local_20 + 1; + if (local_20 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*local_20 + 0x10))(); + } + } + } + else { + Buffer::copyFrom(this + 0x68,param_1,0x8892,0); + } + return; +} + + +================================================================== + +### FUNC 00366a9c (8 bytes) name=resetTexCoordArray + +/* cv::ogl::Arrays::resetTexCoordArray() */ + +void cv::ogl::Arrays::resetTexCoordArray(void) + +{ + Buffer::release(); + return; +} + + +================================================================== + +### FUNC 00366aa4 (48 bytes) name=release + +/* cv::ogl::Arrays::release() */ + +void __thiscall cv::ogl::Arrays::release(Arrays *this) + +{ + resetVertexArray(this); + resetColorArray(); + resetNormalArray(); + resetTexCoordArray(); + return; +} + + +================================================================== + +### FUNC 00366ad4 (80 bytes) name=setAutoRelease + +/* cv::ogl::Arrays::setAutoRelease(bool) */ + +void cv::ogl::Arrays::setAutoRelease(bool param_1) + +{ + /* catch() { ... } // from try @ 00366b08 with catch @ 00366ad4 + catch() { ... } // from try @ 00366b70 with catch @ 00366ad4 + catch() { ... } // from try @ 00366b88 with catch @ 00366ad4 */ + Buffer::setAutoRelease((bool)(param_1 + '\b')); + Buffer::setAutoRelease((bool)(param_1 + '(')); + /* try { // try from 00366b08 to 00466b4b has its CatchHandler @ 00366ad4 */ + Buffer::setAutoRelease((bool)(param_1 + 'H')); + Buffer::setAutoRelease((bool)(param_1 + 'h')); + return; +} + + +================================================================== + +### FUNC 00366b24 (144 bytes) name=bind + +/* cv::ogl::Arrays::bind() const */ + +void cv::ogl::Arrays::bind(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00366b68 to 00466b6b has its CatchHandler @ 00366b78 */ + /* try { // try from 00366b70 to 00466b73 has its CatchHandler @ 00366ad4 */ + /* catch() { ... } // from try @ 00366b68 with catch @ 00366b78 */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + /* try { // try from 00366b88 to 00466b8b has its CatchHandler @ 00366ad4 */ + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + /* catch() { ... } // from try @ 00366bb8 with catch @ 00366b8c + catch() { ... } // from try @ 00366c10 with catch @ 00366b8c + catch() { ... } // from try @ 00366c28 with catch @ 00366b8c */ + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00366bc8 (144 bytes) name=render + +/* cv::ogl::render(cv::ogl::Texture2D const&, cv::Rect_, cv::Rect_) */ + +void cv::ogl::render(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00366c08 to 00466c0b has its CatchHandler @ 00366c18 */ + /* try { // try from 00366c10 to 00466c13 has its CatchHandler @ 00366b8c */ + /* catch() { ... } // from try @ 00366c08 with catch @ 00366c18 */ + /* try { // try from 00366c28 to 00466c2b has its CatchHandler @ 00366b8c */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + /* catch() { ... } // from try @ 00366c80 with catch @ 00366c2c + catch() { ... } // from try @ 00366cb8 with catch @ 00366c2c + catch() { ... } // from try @ 00366db0 with catch @ 00366c2c + catch() { ... } // from try @ 00366e38 with catch @ 00366c2c + catch() { ... } // from try @ 00366e4c with catch @ 00366c2c */ + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00366c6c (144 bytes) name=render + +/* cv::ogl::render(cv::ogl::Arrays const&, int, cv::Scalar_) */ + +void cv::ogl::render(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00366c80 to 00466c83 has its CatchHandler @ 00366c2c */ + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + /* try { // try from 00366cb0 to 00466cb3 has its CatchHandler @ 00366e28 */ + /* try { // try from 00366cb8 to 00466d8b has its CatchHandler @ 00366c2c */ + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00366d10 (144 bytes) name=render + +/* cv::ogl::render(cv::ogl::Arrays const&, cv::_InputArray const&, int, cv::Scalar_) */ + +void cv::ogl::render(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2e); + uVar6 = s_The_library_is_compiled_without_O_0046f890._44_2_; + uVar5 = s_The_library_is_compiled_without_O_0046f890._40_4_; + uVar4 = s_The_library_is_compiled_without_O_0046f890._24_8_; + uVar3 = s_The_library_is_compiled_without_O_0046f890._16_8_; + uVar2 = s_The_library_is_compiled_without_O_0046f890._8_8_; + uVar1 = s_The_library_is_compiled_without_O_0046f890._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_O_0046f890._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined2 *)(pcVar7 + 0x2c) = uVar6; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xda,(String *)&local_10,"void {anonymous}::throw_no_ogl()", + "/builds/master_pack-android/opencv/modules/core/src/opengl.cpp",0x3a); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00366db4 (316 bytes) name=FUN_00366db4 + +int FUN_00366db4(void) + +{ + bool bVar1; + char cVar2; + bool bVar3; + FILE *__stream; + char *__s; + char *pcVar4; + int iVar5; + int local_7d8; + int local_7d4; + char acStack_7d0 [2000]; + + __stream = fopen("/sys/devices/system/cpu/possible","r"); + if (__stream != (FILE *)0x0) { + __s = fgets(acStack_7d0,2000,__stream); + fclose(__stream); + if (__s != (char *)0x0) { + iVar5 = 0; + cVar2 = *__s; + while (cVar2 != '\0') { + /* catch() { ... } // from try @ 00366cb0 with catch @ 00366e28 */ + bVar1 = false; + pcVar4 = __s; + if (cVar2 == ',') { +LAB_00366e8c: + *pcVar4 = '\0'; + pcVar4 = pcVar4 + 1; + if (bVar1) goto LAB_00366e98; +LAB_00366e58: + iVar5 = iVar5 + 1; + } + else { + do { + /* catch() { ... } // from try @ 00366da8 with catch @ 00366e3c */ + bVar3 = cVar2 == '-'; + pcVar4 = pcVar4 + 1; + cVar2 = *pcVar4; + if (bVar3) { + bVar1 = true; + } + /* try { // try from 00366e4c to 00466e4f has its CatchHandler @ 00366c2c */ + } while ((cVar2 != ',') && + (cVar2 != '\0' + /* try { // try from 00366e38 to 00466e3b has its CatchHandler @ 00366c2c */)); + /* catch() { ... } // from try @ 00366e80 with catch @ 00366e50 + catch() { ... } // from try @ 00366ee0 with catch @ 00366e50 + catch() { ... } // from try @ 00366ef8 with catch @ 00366e50 */ + if (cVar2 != '\0') goto LAB_00366e8c; + if (!bVar1) goto LAB_00366e58; +LAB_00366e98: + local_7d8 = 0; + local_7d4 = 0; + sscanf(__s,"%d-%d",&local_7d8,&local_7d4); + iVar5 = iVar5 + (local_7d4 - local_7d8) + 1; + } + __s = pcVar4; + cVar2 = *pcVar4; + } + if (iVar5 != 0) { + /* try { // try from 00366ed8 to 00466edb has its CatchHandler @ 00366ee8 */ + /* try { // try from 00366ee0 to 00466ee3 has its CatchHandler @ 00366e50 */ + /* catch() { ... } // from try @ 00366ed8 with catch @ 00366ee8 */ + return iVar5; + } + } + } + /* try { // try from 00366e80 to 00466ebb has its CatchHandler @ 00366e50 */ + return 1; +} + + +================================================================== + +### FUNC 00366ef0 (4 bytes) name=~ParallelLoopBody + +/* cv::ParallelLoopBody::~ParallelLoopBody() */ + +void __thiscall cv::ParallelLoopBody::~ParallelLoopBody(ParallelLoopBody *this) + +{ + return; +} + + +================================================================== + +### FUNC 00366ef4 (32 bytes) name=~ParallelLoopBody + +/* cv::ParallelLoopBody::~ParallelLoopBody() */ + +void __thiscall cv::ParallelLoopBody::~ParallelLoopBody(ParallelLoopBody *this) + +{ + /* try { // try from 00366ef8 to 00466efb has its CatchHandler @ 00366e50 */ + /* catch() { ... } // from try @ 00366f80 with catch @ 00366efc + catch() { ... } // from try @ 00366fcc with catch @ 00366efc + catch() { ... } // from try @ 00366fe4 with catch @ 00366efc */ + ~ParallelLoopBody(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00366f14 (196 bytes) name=parallel_for_ + +/* cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double) */ + +void cv::parallel_for_(Range *param_1,ParallelLoopBody *param_2,double param_3) + +{ + long lVar1; + double __x; + double dVar2; + + if (DAT_005093c0 != 0) { + __x = (double)(*(int *)(param_1 + 4) - *(int *)param_1); + if (0.0 < param_3) { + dVar2 = param_3; + if (param_3 < 1.0) { + dVar2 = 1.0; + /* catch() { ... } // from try @ 00366fc4 with catch @ 00366fd4 */ + } + if ((dVar2 <= __x) && (__x = 1.0, 1.0 <= param_3)) { + __x = param_3; + } + } + lVar1 = lrint(__x); + /* try { // try from 00366f80 to 00466f83 has its CatchHandler @ 00366efc */ + if ((int)lVar1 != 1) { + FUN_0036a0d4(param_3,param_1); + return; + } + } + (**(code **)(*(long *)param_2 + 0x10))(param_2,param_1); + /* try { // try from 00366fc4 to 00466fc7 has its CatchHandler @ 00366fd4 */ + return; +} + + +================================================================== + +### FUNC 00366fd8 (40 bytes) name=getNumThreads + +/* cv::getNumThreads() */ + +void cv::getNumThreads(void) + +{ + /* try { // try from 00366fe4 to 00466fe7 has its CatchHandler @ 00366efc */ + /* catch() { ... } // from try @ 0036703c with catch @ 00366fe8 + catch() { ... } // from try @ 00367064 with catch @ 00366fe8 + catch() { ... } // from try @ 003670d8 with catch @ 00366fe8 + catch() { ... } // from try @ 00367124 with catch @ 00366fe8 + catch() { ... } // from try @ 00367138 with catch @ 00366fe8 */ + if (DAT_005093c0 != 0) { + FUN_00368158(1); + } + return; +} + + +================================================================== + +### FUNC 00367000 (12 bytes) name=setNumThreads + +/* cv::setNumThreads(int) */ + +void cv::setNumThreads(int param_1) + +{ + DAT_005093c0 = param_1; + FUN_00368e7c(); + return; +} + + +================================================================== + +### FUNC 0036700c (8 bytes) name=getThreadNum + +/* cv::getThreadNum() */ + +undefined8 cv::getThreadNum(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 00367014 (108 bytes) name=getNumberOfCPUs + +/* cv::getNumberOfCPUs() */ + +undefined4 cv::getNumberOfCPUs(void) + +{ + int iVar1; + undefined4 uVar2; + + if (((DAT_005329e0 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_005329e0), iVar1 != 0)) { + uVar2 = FUN_00366db4(); + DAT_005329d8 = uVar2; + /* try { // try from 0036705c to 0046705f has its CatchHandler @ 00367114 */ + /* try { // try from 00367064 to 004670b3 has its CatchHandler @ 00366fe8 */ + __cxa_guard_release(&DAT_005329e0); + return uVar2; + } + /* try { // try from 0036703c to 0046703f has its CatchHandler @ 00366fe8 */ + return DAT_005329d8; +} + + +================================================================== + +### FUNC 00367094 (12 bytes) name=currentParallelFramework + +/* cv::currentParallelFramework() */ + +char * cv::currentParallelFramework(void) + +{ + return "pthreads"; +} + + +================================================================== + +### FUNC 003670a0 (4 bytes) name=cvSetNumThreads + +void cv::cvSetNumThreads(int param_1) + +{ + (*(code *)PTR_setNumThreads_005012f0)(param_1); + return; +} + + +================================================================== + +### FUNC 003670a4 (4 bytes) name=cvGetNumThreads + +void cv::cvGetNumThreads(void) + +{ + (*(code *)PTR_getNumThreads_00500d88)(); + return; +} + + +================================================================== + +### FUNC 003670a8 (4 bytes) name=cvGetThreadNum + +void cv::cvGetThreadNum(void) + +{ + (*(code *)PTR_getThreadNum_00500b10)(); + return; +} + + +================================================================== + +### FUNC 003670ac (8 bytes) name=FUN_003670ac + +void FUN_003670ac(undefined8 param_1,void *param_2) + +{ + operator_delete(param_2); + return; +} + + +================================================================== + +### FUNC 003670b4 (32 bytes) name=FUN_003670b4 + +void FUN_003670b4(void) + +{ + undefined1 *puVar1; + + puVar1 = operator_new(1); + *puVar1 = 0; + /* try { // try from 003670d0 to 004670d3 has its CatchHandler @ 00367128 */ + return; +} + + +================================================================== + +### FUNC 003670d4 (16 bytes) name=FUN_003670d4 + +void FUN_003670d4(TLSDataContainer *param_1) + +{ + /* try { // try from 003670d8 to 004670ef has its CatchHandler @ 00366fe8 */ + *(undefined ***)param_1 = &PTR_FUN_004f7630; + cv::TLSDataContainer::~TLSDataContainer(param_1); + return; +} + + +================================================================== + +### FUNC 003670e4 (44 bytes) name=FUN_003670e4 + +void FUN_003670e4(TLSDataContainer *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7630; + cv::TLSDataContainer::~TLSDataContainer(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00367110 (420 bytes) name=FUN_00367110 + +undefined8 FUN_00367110(long param_1) + +{ + pthread_mutex_t *__mutex; + uint *puVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined1 *puVar5; + uint uVar6; + long lVar7; + int local_8; + int local_4; + + /* catch() { ... } // from try @ 0036705c with catch @ 00367114 */ + /* try { // try from 00367124 to 00467127 has its CatchHandler @ 00366fe8 */ + /* catch() { ... } // from try @ 003670d0 with catch @ 00367128 */ + __mutex = (pthread_mutex_t *)(param_1 + 8); + /* try { // try from 00367138 to 0046713b has its CatchHandler @ 00366fe8 */ + /* catch() { ... } // from try @ 00367180 with catch @ 0036713c + catch() { ... } // from try @ 003671a8 with catch @ 0036713c + catch() { ... } // from try @ 003671c0 with catch @ 0036713c */ + puVar5 = (undefined1 *) + cv::TLSDataContainer::getData((TLSDataContainer *)(*(long *)(param_1 + 0x68) + 0xa0)); + *puVar5 = 1; + pthread_mutex_lock(__mutex); + iVar4 = 1; + *(undefined4 *)(param_1 + 0x70) = 1; +joined_r0x00367164: + if (iVar4 != 1) { +LAB_00367268: + pthread_mutex_unlock(__mutex); + return 0; + } + if (*(char *)(param_1 + 0x60) == '\0') goto LAB_00367180; + goto LAB_003671a0; +LAB_00367180: + /* try { // try from 00367180 to 00467183 has its CatchHandler @ 0036713c */ + while (pthread_cond_wait((pthread_cond_t *)(param_1 + 0x30),__mutex), + *(char *)(param_1 + 0x60) == '\0') { + if (*(int *)(param_1 + 0x70) == 2) goto LAB_00367268; + } + iVar4 = *(int *)(param_1 + 0x70); + if (iVar4 == 1) { +LAB_003671a0: + /* try { // try from 003671a0 to 004671a3 has its CatchHandler @ 003671b0 */ + puVar1 = (uint *)(*(long *)(param_1 + 0x68) + 0x7c); + do { + /* try { // try from 003671a8 to 004671ab has its CatchHandler @ 0036713c */ + uVar6 = *puVar1; + /* catch() { ... } // from try @ 003671a0 with catch @ 003671b0 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar6 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + lVar7 = *(long *)(param_1 + 0x68); + /* try { // try from 003671c0 to 004671c3 has its CatchHandler @ 0036713c */ + /* catch() { ... } // from try @ 003671fc with catch @ 003671c4 + catch() { ... } // from try @ 00367234 with catch @ 003671c4 + catch() { ... } // from try @ 0036734c with catch @ 003671c4 */ + if (uVar6 < *(uint *)(lVar7 + 0x9c)) { + do { + iVar4 = (*(int **)(lVar7 + 0x90))[1]; + local_8 = **(int **)(lVar7 + 0x90) + uVar6 * *(int *)(lVar7 + 0x98); + local_4 = *(int *)(lVar7 + 0x98) + local_8; + /* try { // try from 003671fc to 004671ff has its CatchHandler @ 003671c4 */ + if (iVar4 < local_4) { + local_4 = iVar4; + } + (**(code **)(**(long **)(lVar7 + 0x88) + 0x10))(*(long **)(lVar7 + 0x88),&local_8); + puVar1 = (uint *)(*(long *)(param_1 + 0x68) + 0x7c); + do { + uVar6 = *puVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar6 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 0036722c to 0046722f has its CatchHandler @ 0036733c */ + } while (uVar6 < *(uint *)(lVar7 + 0x9c)); + lVar7 = *(long *)(param_1 + 0x68); + } + /* try { // try from 00367234 to 00467313 has its CatchHandler @ 003671c4 */ + *(undefined1 *)(param_1 + 0x60) = 0; + puVar1 = (uint *)(lVar7 + 0x80); + do { + uVar6 = *puVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar6 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (*(long *)(lVar7 + 0x18) - 1U == (ulong)uVar6) { + pthread_mutex_lock((pthread_mutex_t *)(lVar7 + 0x20)); + *(undefined1 *)(lVar7 + 0x78) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar7 + 0x48)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar7 + 0x20)); + iVar4 = *(int *)(param_1 + 0x70); + } + else { + iVar4 = *(int *)(param_1 + 0x70); + } + } + goto joined_r0x00367164; +} + + +================================================================== + +### FUNC 003672b4 (148 bytes) name=FUN_003672b4 + +pthread_t * FUN_003672b4(pthread_t *param_1) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + + if ((int)param_1[0xe] != 1) { + return param_1; + } + __mutex = (pthread_mutex_t *)(param_1 + 1); + *(undefined4 *)(param_1 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(param_1 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(param_1 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*param_1,(void **)0x0); + *(undefined4 *)(param_1 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + /* catch() { ... } // from try @ 0036722c with catch @ 0036733c */ + uVar1 = pthread_cond_destroy((pthread_cond_t *)(param_1 + 6)); + return (pthread_t *)(ulong)uVar1; +} + + +================================================================== + +### FUNC 00367348 (108 bytes) name=FUN_00367348 + +bool FUN_00367348(pthread_t *param_1,pthread_t param_2,pthread_t param_3) + +{ + uint uVar1; + uint uVar2; + + /* try { // try from 0036734c to 0046734f has its CatchHandler @ 003671c4 */ + /* catch() { ... } // from try @ 00367404 with catch @ 00367350 + catch() { ... } // from try @ 00367460 with catch @ 00367350 + catch() { ... } // from try @ 003674d0 with catch @ 00367350 + catch() { ... } // from try @ 00367524 with catch @ 00367350 + catch() { ... } // from try @ 00367584 with catch @ 00367350 + catch() { ... } // from try @ 0036759c with catch @ 00367350 + catch() { ... } // from try @ 003675b0 with catch @ 00367350 + catch() { ... } // from try @ 003675c4 with catch @ 00367350 + catch() { ... } // from try @ 003675d8 with catch @ 00367350 */ + param_1[0xf] = param_2; + param_1[0xd] = param_3; + uVar1 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 1),(pthread_mutexattr_t *)0x0); + uVar2 = pthread_cond_init((pthread_cond_t *)(param_1 + 6),(pthread_condattr_t *)0x0); + uVar2 = uVar2 | uVar1; + if (uVar2 == 0) { + uVar2 = pthread_create(param_1,(pthread_attr_t *)0x0,FUN_00367110,param_1); + } + return uVar2 == 0; +} + + +================================================================== + +### FUNC 003673b4 (128 bytes) name=FUN_003673b4 + +void FUN_003673b4(pthread_t *param_1) + +{ + if ((int)param_1[0xe] != 1) { + *(undefined4 *)(param_1 + 0xe) = 3; + return; + } + *(undefined4 *)(param_1 + 0xe) = 2; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 1)); + *(undefined1 *)(param_1 + 0xc) = 1; + /* try { // try from 00367404 to 00467407 has its CatchHandler @ 00367350 */ + pthread_cond_signal((pthread_cond_t *)(param_1 + 6)); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 1)); + pthread_join(*param_1,(void **)0x0); + *(undefined4 *)(param_1 + 0xe) = 3; + return; +} + + +================================================================== + +### FUNC 00367434 (64 bytes) name=FUN_00367434 + +int FUN_00367434(long param_1) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 8)); + /* try { // try from 00367458 to 0046745b has its CatchHandler @ 0036758c */ + *(undefined1 *)(param_1 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(param_1 + 0x30)); + /* try { // try from 00367460 to 0046747f has its CatchHandler @ 00367350 */ + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 8)); + return iVar1; +} + + +================================================================== + +### FUNC 00367474 (180 bytes) name=FUN_00367474 + +void FUN_00367474(long param_1) + +{ + uint *puVar1; + int iVar2; + char cVar3; + bool bVar4; + uint uVar5; + long lVar6; + int local_8; + int local_4; + + puVar1 = (uint *)(*(long *)(param_1 + 0x68) + 0x7c); + do { + uVar5 = *puVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar4) { + *puVar1 = uVar5 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + lVar6 = *(long *)(param_1 + 0x68); + if (uVar5 < *(uint *)(lVar6 + 0x9c)) { + do { + /* try { // try from 003674c8 to 004674cb has its CatchHandler @ 003675a0 */ + iVar2 = (*(int **)(lVar6 + 0x90))[1]; + /* try { // try from 003674d0 to 004674ef has its CatchHandler @ 00367350 */ + local_8 = **(int **)(lVar6 + 0x90) + uVar5 * *(int *)(lVar6 + 0x98); + local_4 = *(int *)(lVar6 + 0x98) + local_8; + if (iVar2 < local_4) { + local_4 = iVar2; + } + (**(code **)(**(long **)(lVar6 + 0x88) + 0x10))(*(long **)(lVar6 + 0x88),&local_8); + puVar1 = (uint *)(*(long *)(param_1 + 0x68) + 0x7c); + do { + uVar5 = *puVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar4) { + *puVar1 = uVar5 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } while (uVar5 < *(uint *)(lVar6 + 0x9c)); + } + /* try { // try from 0036751c to 0046751f has its CatchHandler @ 003675b4 */ + /* try { // try from 00367524 to 0046754f has its CatchHandler @ 00367350 */ + return; +} + + +================================================================== + +### FUNC 00367528 (416 bytes) name=FUN_00367528 + +int FUN_00367528(long param_1) + +{ + pthread_mutex_t *__mutex; + uint *puVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined1 *puVar5; + uint uVar6; + long lVar7; + int local_8; + int local_4; + + __mutex = (pthread_mutex_t *)(param_1 + 8); + puVar5 = (undefined1 *) + cv::TLSDataContainer::getData((TLSDataContainer *)(*(long *)(param_1 + 0x68) + 0xa0)); + *puVar5 = 1; + pthread_mutex_lock(__mutex); + iVar4 = 1; + *(undefined4 *)(param_1 + 0x70) = 1; +joined_r0x0036757c: + /* try { // try from 0036757c to 0046757f has its CatchHandler @ 003675c8 */ + if (iVar4 != 1) { +LAB_00367680: + iVar4 = pthread_mutex_unlock(__mutex); + return iVar4; + } + /* try { // try from 00367584 to 00467587 has its CatchHandler @ 00367350 */ + if (*(char *)(param_1 + 0x60) == '\0') goto LAB_00367598; + goto LAB_003675b8; +LAB_00367598: + /* try { // try from 0036759c to 0046759f has its CatchHandler @ 00367350 */ + /* catch() { ... } // from try @ 003674c8 with catch @ 003675a0 */ + while (pthread_cond_wait((pthread_cond_t *)(param_1 + 0x30),__mutex), + *(char *)(param_1 + 0x60) == '\0') { + /* catch() { ... } // from try @ 00367458 with catch @ 0036758c */ + if (*(int *)(param_1 + 0x70) == 2) goto LAB_00367680; + } + iVar4 = *(int *)(param_1 + 0x70); + /* try { // try from 003675b0 to 004675b3 has its CatchHandler @ 00367350 */ + /* catch() { ... } // from try @ 0036751c with catch @ 003675b4 */ + if (iVar4 == 1) { +LAB_003675b8: + puVar1 = (uint *)(*(long *)(param_1 + 0x68) + 0x7c); + do { + uVar6 = *puVar1; + /* try { // try from 003675c4 to 004675c7 has its CatchHandler @ 00367350 */ + /* catch() { ... } // from try @ 0036757c with catch @ 003675c8 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar6 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + lVar7 = *(long *)(param_1 + 0x68); + /* try { // try from 003675d8 to 004675db has its CatchHandler @ 00367350 */ + if (uVar6 < *(uint *)(lVar7 + 0x9c)) { + do { + iVar4 = (*(int **)(lVar7 + 0x90))[1]; + local_8 = **(int **)(lVar7 + 0x90) + uVar6 * *(int *)(lVar7 + 0x98); + local_4 = *(int *)(lVar7 + 0x98) + local_8; + if (iVar4 < local_4) { + local_4 = iVar4; + } + (**(code **)(**(long **)(lVar7 + 0x88) + 0x10))(*(long **)(lVar7 + 0x88),&local_8); + puVar1 = (uint *)(*(long *)(param_1 + 0x68) + 0x7c); + do { + uVar6 = *puVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar6 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } while (uVar6 < *(uint *)(lVar7 + 0x9c)); + lVar7 = *(long *)(param_1 + 0x68); + } + *(undefined1 *)(param_1 + 0x60) = 0; + puVar1 = (uint *)(lVar7 + 0x80); + do { + uVar6 = *puVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar6 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (*(long *)(lVar7 + 0x18) - 1U == (ulong)uVar6) { + pthread_mutex_lock((pthread_mutex_t *)(lVar7 + 0x20)); + *(undefined1 *)(lVar7 + 0x78) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar7 + 0x48)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar7 + 0x20)); + iVar4 = *(int *)(param_1 + 0x70); + } + else { + iVar4 = *(int *)(param_1 + 0x70); + } + } + goto joined_r0x0036757c; +} + + +================================================================== + +### FUNC 003676c8 (84 bytes) name=FUN_003676c8 + +int FUN_003676c8(long param_1) + +{ + char cVar1; + int iVar2; + + cVar1 = *(char *)(param_1 + 0x78); + while (cVar1 == '\0') { + pthread_cond_wait((pthread_cond_t *)(param_1 + 0x48),(pthread_mutex_t *)(param_1 + 0x20)); + cVar1 = *(char *)(param_1 + 0x78); + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x20)); + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + return iVar2; +} + + +================================================================== + +### FUNC 0036771c (116 bytes) name=FUN_0036771c + +ulong FUN_0036771c(ulong param_1) + +{ + uint *puVar1; + char cVar2; + bool bVar3; + uint uVar4; + + puVar1 = (uint *)(param_1 + 0x80); + do { + uVar4 = *puVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar1,0x10); + if (bVar3) { + *puVar1 = uVar4 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (*(long *)(param_1 + 0x18) - 1U != (ulong)uVar4) { + return param_1; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x20)); + *(undefined1 *)(param_1 + 0x78) = 1; + pthread_cond_signal((pthread_cond_t *)(param_1 + 0x48)); + uVar4 = pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x20)); + return (ulong)uVar4; +} + + +================================================================== + +### FUNC 00367790 (8 bytes) name=FUN_00367790 + +undefined8 FUN_00367790(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x18); +} + + +================================================================== + +### FUNC 00367798 (96 bytes) name=FUN_00367798 + +int FUN_00367798(void) + +{ + char *__s; + int local_4; + + local_4 = 2; + __s = getenv("OPENCV_FOR_THREADS_NUM"); + if (__s != (char *)0x0) { + sscanf(__s,"%u",&local_4); + if (local_4 == 0) { + local_4 = 1; + } + return local_4; + } + return local_4; +} + + +================================================================== + +### FUNC 003677f8 (236 bytes) name=FUN_003677f8 + +undefined8 * FUN_003677f8(undefined8 *param_1) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + undefined8 *extraout_x0; + pthread_t *ppVar3; + pthread_t *ppVar4; + undefined8 *puVar2; + + ppVar3 = (pthread_t *)*param_1; + ppVar4 = (pthread_t *)param_1[1]; + puVar2 = param_1; + if (ppVar3 != ppVar4) { + do { + while ((int)ppVar3[0xe] != 1) { + ppVar3 = ppVar3 + 0x10; + if (ppVar4 == ppVar3) goto LAB_003678a0; + } + __mutex = (pthread_mutex_t *)(ppVar3 + 1); + *(undefined4 *)(ppVar3 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar3 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar3 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar3,(void **)0x0); + *(undefined4 *)(ppVar3 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + uVar1 = pthread_cond_destroy((pthread_cond_t *)(ppVar3 + 6)); + puVar2 = (undefined8 *)(ulong)uVar1; + ppVar3 = ppVar3 + 0x10; + } while (ppVar4 != ppVar3); +LAB_003678a0: + ppVar4 = (pthread_t *)*param_1; + } + if (ppVar4 == (pthread_t *)0x0) { + return puVar2; + } + operator_delete(ppVar4); + return extraout_x0; +} + + +================================================================== + +### FUNC 00367900 (784 bytes) name=FUN_00367900 + +long * FUN_00367900(void) + +{ + pthread_t *ppVar1; + pthread_mutex_t *__mutex; + long lVar2; + int iVar3; + int iVar4; + long *plVar5; + char *pcVar6; + long *plVar7; + long lVar8; + ulong uVar9; + uint uVar10; + ulong uVar11; + pthread_t *ppVar12; + ulong uVar13; + pthread_t *ppVar14; + uint local_4; + + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar5 = operator_new(0xb8); + *plVar5 = 0; + plVar5[1] = 0; + plVar5[2] = 0; + plVar5[3] = 0; + *(undefined1 *)(plVar5 + 0xf) = 0; + *(undefined4 *)(plVar5 + 0x10) = 0; + plVar5[0x11] = 0; + plVar5[0x12] = 0; + *(undefined4 *)(plVar5 + 0x13) = 0; + *(undefined4 *)((long)plVar5 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar5 + 0x14)); + *(undefined4 *)(plVar5 + 0x16) = 0; + plVar5[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(plVar5 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(plVar5 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar10 = local_4; + if ((pcVar6 != (char *)0x0) && + (sscanf(pcVar6,"%u",&local_4), uVar10 = local_4, local_4 == 0)) { + uVar10 = 1; + } + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar11 = (ulong)uVar10; + if (uVar11 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + if ((pcVar6 != (char *)0x0) && (sscanf(pcVar6,"%u",&local_4), local_4 == 0)) { + local_4 = 1; + } + uVar11 = (ulong)local_4; + } + if ((plVar5[3] != uVar11) && ((int)plVar5[0x16] != 1)) { + if ((int)plVar5[0x16] == 2) { + plVar7 = (long *)FUN_00367900(); + if ((int)plVar7[0x16] == 2) { + uVar9 = plVar7[3]; + for (uVar13 = 0; uVar13 < uVar9; uVar13 = uVar13 + 1) { + lVar8 = *plVar7; + lVar2 = lVar8 + uVar13 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar8 + uVar13 * 0x80),(void **)0x0); + uVar9 = plVar7[3]; + } + *(undefined4 *)(lVar2 + 0x70) = 3; + } + } + ppVar12 = (pthread_t *)*plVar5; + ppVar14 = (pthread_t *)plVar5[1]; + *(undefined4 *)(plVar7 + 0x16) = 0; + for (ppVar1 = ppVar12; ppVar1 != ppVar14; ppVar1 = ppVar1 + 0x10) { + if ((int)ppVar1[0xe] == 1) { + __mutex = (pthread_mutex_t *)(ppVar1 + 1); + *(undefined4 *)(ppVar1 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar1 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar1 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar1,(void **)0x0); + *(undefined4 *)(ppVar1 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + pthread_cond_destroy((pthread_cond_t *)(ppVar1 + 6)); + } + } + plVar5[1] = (long)ppVar12; + } + plVar5[3] = uVar11; + if (uVar11 == 1) { + *(undefined4 *)(plVar5 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar5 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + DAT_005329e8 = plVar5; + } + else { + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + plVar5[3] = 1; + *(undefined4 *)(plVar5 + 0x16) = 1; + DAT_005329e8 = plVar5; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + return DAT_005329e8; +} + + +================================================================== + +### FUNC 00367c44 (540 bytes) name=FUN_00367c44 + +int FUN_00367c44(long *param_1,ulong param_2) + +{ + pthread_t *ppVar1; + pthread_mutex_t *__mutex; + long lVar2; + int iVar3; + char *__s; + long *plVar4; + ulong uVar5; + uint uVar6; + ulong uVar7; + pthread_t *ppVar8; + long lVar9; + long lVar10; + pthread_t *ppVar11; + uint local_4; + + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 != 0) { + return iVar3; + } + if (param_2 == 0) { + local_4 = 2; + __s = getenv("OPENCV_FOR_THREADS_NUM"); + uVar6 = local_4; + if ((__s != (char *)0x0) && (sscanf(__s,"%u",&local_4), uVar6 = local_4, local_4 == 0)) { + uVar6 = 1; + } + param_2 = (ulong)uVar6; + if (param_1[3] == param_2) goto LAB_00367cb0; + } + else if (param_1[3] == param_2) goto LAB_00367cb0; + if ((int)param_1[0x16] != 1) { + if ((int)param_1[0x16] == 2) { + plVar4 = (long *)FUN_00367900(); + if (((int)plVar4[0x16] == 2) && (uVar5 = plVar4[3], uVar5 != 0)) { + uVar7 = 0; + do { + lVar10 = *plVar4; + lVar9 = uVar7 * 0x80; + uVar7 = uVar7 + 1; + lVar2 = lVar10 + lVar9; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar10 + lVar9),(void **)0x0); + uVar5 = plVar4[3]; + } + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar7 < uVar5); + } + ppVar11 = (pthread_t *)*param_1; + ppVar8 = (pthread_t *)param_1[1]; + *(undefined4 *)(plVar4 + 0x16) = 0; + for (ppVar1 = ppVar11; ppVar1 != ppVar8; ppVar1 = ppVar1 + 0x10) { + if ((int)ppVar1[0xe] == 1) { + __mutex = (pthread_mutex_t *)(ppVar1 + 1); + *(undefined4 *)(ppVar1 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar1 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar1 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar1,(void **)0x0); + *(undefined4 *)(ppVar1 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + pthread_cond_destroy((pthread_cond_t *)(ppVar1 + 6)); + } + } + param_1[1] = (long)ppVar11; + } + param_1[3] = param_2; + if (param_2 == 1) { + *(undefined4 *)(param_1 + 0x16) = 3; + } + else { + *(undefined4 *)(param_1 + 0x16) = 0; + } + } +LAB_00367cb0: + iVar3 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + return iVar3; +} + + +================================================================== + +### FUNC 00367e60 (716 bytes) name=FUN_00367e60 + +int FUN_00367e60(long *param_1) + +{ + pthread_t *ppVar1; + pthread_mutex_t *__mutex; + long lVar2; + int iVar3; + int iVar4; + char *pcVar5; + long *plVar6; + ulong uVar7; + uint uVar8; + ulong uVar9; + ulong uVar10; + pthread_t *ppVar11; + pthread_t *ppVar12; + long lVar13; + uint local_4; + + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + *(undefined1 *)(param_1 + 0xf) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + *(undefined4 *)(param_1 + 0x13) = 0; + *(undefined4 *)((long)param_1 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(param_1 + 0x14)); + *(undefined4 *)(param_1 + 0x16) = 0; + param_1[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(param_1 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar8 = local_4; + if ((pcVar5 != (char *)0x0) && (sscanf(pcVar5,"%u",&local_4), uVar8 = local_4, local_4 == 0)) { + uVar8 = 1; + } + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar9 = (ulong)uVar8; + iVar3 = 0; + if (uVar9 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + if (pcVar5 == (char *)0x0) { + uVar9 = (ulong)local_4; + iVar3 = 0; + } + else { + iVar3 = sscanf(pcVar5,"%u",&local_4); + uVar8 = local_4; + if (local_4 == 0) { + uVar8 = 1; + } + uVar9 = (ulong)uVar8; + } + } + if ((param_1[3] != uVar9) && ((int)param_1[0x16] != 1)) { + if ((int)param_1[0x16] == 2) { + plVar6 = (long *)FUN_00367900(iVar3); + if (((int)plVar6[0x16] == 2) && (uVar7 = plVar6[3], uVar7 != 0)) { + uVar10 = 0; + do { + lVar13 = *plVar6; + lVar2 = lVar13 + uVar10 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar13 + uVar10 * 0x80),(void **)0x0); + uVar7 = plVar6[3]; + } + uVar10 = uVar10 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar10 < uVar7); + } + ppVar12 = (pthread_t *)*param_1; + ppVar11 = (pthread_t *)param_1[1]; + *(undefined4 *)(plVar6 + 0x16) = 0; + for (ppVar1 = ppVar12; ppVar1 != ppVar11; ppVar1 = ppVar1 + 0x10) { + if ((int)ppVar1[0xe] == 1) { + __mutex = (pthread_mutex_t *)(ppVar1 + 1); + *(undefined4 *)(ppVar1 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar1 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar1 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar1,(void **)0x0); + *(undefined4 *)(ppVar1 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + pthread_cond_destroy((pthread_cond_t *)(ppVar1 + 6)); + } + } + param_1[1] = (long)ppVar12; + } + param_1[3] = uVar9; + if (uVar9 == 1) { + *(undefined4 *)(param_1 + 0x16) = 3; + } + else { + *(undefined4 *)(param_1 + 0x16) = 0; + } + } + iVar3 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)param_1 + 0x7c) = 0; + } + else { + iVar3 = 1; + *(undefined4 *)((long)param_1 + 0x7c) = 0; + param_1[3] = 1; + *(undefined4 *)(param_1 + 0x16) = 1; + } + return iVar3; +} + + +================================================================== + +### FUNC 00368158 (788 bytes) name=FUN_00368158 + +long FUN_00368158(void) + +{ + pthread_t *ppVar1; + pthread_mutex_t *__mutex; + long lVar2; + int iVar3; + int iVar4; + long *plVar5; + char *pcVar6; + long *plVar7; + long lVar8; + ulong uVar9; + uint uVar10; + ulong uVar11; + pthread_t *ppVar12; + ulong uVar13; + pthread_t *ppVar14; + uint local_4; + + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar5 = operator_new(0xb8); + *plVar5 = 0; + plVar5[1] = 0; + plVar5[2] = 0; + plVar5[3] = 0; + *(undefined1 *)(plVar5 + 0xf) = 0; + *(undefined4 *)(plVar5 + 0x10) = 0; + plVar5[0x11] = 0; + plVar5[0x12] = 0; + *(undefined4 *)(plVar5 + 0x13) = 0; + *(undefined4 *)((long)plVar5 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar5 + 0x14)); + *(undefined4 *)(plVar5 + 0x16) = 0; + plVar5[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(plVar5 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(plVar5 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar10 = local_4; + if ((pcVar6 != (char *)0x0) && + (sscanf(pcVar6,"%u",&local_4), uVar10 = local_4, local_4 == 0)) { + uVar10 = 1; + } + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar11 = (ulong)uVar10; + if (uVar11 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + if ((pcVar6 != (char *)0x0) && (sscanf(pcVar6,"%u",&local_4), local_4 == 0)) { + local_4 = 1; + } + uVar11 = (ulong)local_4; + } + if ((plVar5[3] != uVar11) && ((int)plVar5[0x16] != 1)) { + if ((int)plVar5[0x16] == 2) { + plVar7 = (long *)FUN_00367900(); + if ((int)plVar7[0x16] == 2) { + uVar9 = plVar7[3]; + for (uVar13 = 0; uVar13 < uVar9; uVar13 = uVar13 + 1) { + lVar8 = *plVar7; + lVar2 = lVar8 + uVar13 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar8 + uVar13 * 0x80),(void **)0x0); + uVar9 = plVar7[3]; + } + *(undefined4 *)(lVar2 + 0x70) = 3; + } + } + ppVar12 = (pthread_t *)*plVar5; + ppVar14 = (pthread_t *)plVar5[1]; + *(undefined4 *)(plVar7 + 0x16) = 0; + for (ppVar1 = ppVar12; ppVar1 != ppVar14; ppVar1 = ppVar1 + 0x10) { + if ((int)ppVar1[0xe] == 1) { + __mutex = (pthread_mutex_t *)(ppVar1 + 1); + *(undefined4 *)(ppVar1 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar1 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar1 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar1,(void **)0x0); + *(undefined4 *)(ppVar1 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + pthread_cond_destroy((pthread_cond_t *)(ppVar1 + 6)); + } + } + plVar5[1] = (long)ppVar12; + } + plVar5[3] = uVar11; + if (uVar11 == 1) { + *(undefined4 *)(plVar5 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar5 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + DAT_005329e8 = plVar5; + } + else { + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + plVar5[3] = 1; + *(undefined4 *)(plVar5 + 0x16) = 1; + DAT_005329e8 = plVar5; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + return DAT_005329e8[3]; +} + + +================================================================== + +### FUNC 003684a0 (1148 bytes) name=FUN_003684a0 + +void FUN_003684a0(undefined8 *param_1) + +{ + pthread_mutex_t *ppVar1; + long lVar2; + int iVar3; + int iVar4; + long *plVar5; + char *pcVar6; + long *plVar7; + ulong uVar8; + pthread_t *ppVar9; + ulong uVar10; + pthread_t *ppVar11; + uint uVar12; + long lVar13; + ulong uVar14; + pthread_t *ppVar15; + uint local_4; + + param_1 = (undefined8 *)*param_1; + if (param_1 != (undefined8 *)0x0) { + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar5 = operator_new(0xb8); + *plVar5 = 0; + plVar5[1] = 0; + plVar5[2] = 0; + plVar5[3] = 0; + *(undefined1 *)(plVar5 + 0xf) = 0; + *(undefined4 *)(plVar5 + 0x10) = 0; + plVar5[0x11] = 0; + plVar5[0x12] = 0; + *(undefined4 *)(plVar5 + 0x13) = 0; + *(undefined4 *)((long)plVar5 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar5 + 0x14)); + *(undefined4 *)(plVar5 + 0x16) = 0; + plVar5[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(plVar5 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(plVar5 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar12 = local_4; + if ((pcVar6 != (char *)0x0) && + (sscanf(pcVar6,"%u",&local_4), uVar12 = local_4, local_4 == 0)) { + uVar12 = 1; + } + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar8 = (ulong)uVar12; + if (uVar8 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar12 = local_4; + if ((pcVar6 != (char *)0x0) && + (sscanf(pcVar6,"%u",&local_4), uVar12 = local_4, local_4 == 0)) { + uVar12 = 1; + } + uVar8 = (ulong)uVar12; + } + if ((plVar5[3] != uVar8) && ((int)plVar5[0x16] != 1)) { + if ((int)plVar5[0x16] == 2) { + plVar7 = (long *)FUN_00367900(); + if (((int)plVar7[0x16] == 2) && (uVar10 = plVar7[3], uVar10 != 0)) { + uVar14 = 0; + do { + lVar13 = *plVar7; + lVar2 = lVar13 + uVar14 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar13 + uVar14 * 0x80),(void **)0x0); + uVar10 = plVar7[3]; + } + uVar14 = uVar14 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar14 < uVar10); + } + ppVar11 = (pthread_t *)*plVar5; + ppVar15 = (pthread_t *)plVar5[1]; + *(undefined4 *)(plVar7 + 0x16) = 0; + for (ppVar9 = ppVar11; ppVar9 != ppVar15; ppVar9 = ppVar9 + 0x10) { + if ((int)ppVar9[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar9 + 1); + *(undefined4 *)(ppVar9 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar9 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar9 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar9,(void **)0x0); + *(undefined4 *)(ppVar9 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar9 + 6)); + } + } + plVar5[1] = (long)ppVar11; + } + plVar5[3] = uVar8; + if (uVar8 == 1) { + *(undefined4 *)(plVar5 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar5 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + DAT_005329e8 = plVar5; + } + else { + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + plVar5[3] = 1; + *(undefined4 *)(plVar5 + 0x16) = 1; + DAT_005329e8 = plVar5; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + plVar5 = DAT_005329e8; + if (((int)DAT_005329e8[0x16] == 2) && (uVar8 = DAT_005329e8[3], uVar8 != 0)) { + uVar10 = 0; + do { + lVar13 = *plVar5; + lVar2 = lVar13 + uVar10 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar13 + uVar10 * 0x80),(void **)0x0); + uVar8 = plVar5[3]; + } + uVar10 = uVar10 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar10 < uVar8); + } + *(undefined4 *)(plVar5 + 0x16) = 0; + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 4)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 9)); + pthread_mutex_destroy((pthread_mutex_t *)&DAT_005093c8); + param_1[0x14] = &PTR_FUN_004f7630; + cv::TLSDataContainer::~TLSDataContainer((TLSDataContainer *)(param_1 + 0x14)); + ppVar9 = (pthread_t *)*param_1; + ppVar11 = (pthread_t *)param_1[1]; + if (ppVar9 != ppVar11) { + do { + while ((int)ppVar9[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar9 + 1); + *(undefined4 *)(ppVar9 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar9 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar9 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar9,(void **)0x0); + *(undefined4 *)(ppVar9 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar9 + 6)); + ppVar9 = ppVar9 + 0x10; + if (ppVar11 == ppVar9) goto LAB_003685a4; + } + ppVar9 = ppVar9 + 0x10; + } while (ppVar11 != ppVar9); +LAB_003685a4: + ppVar11 = (pthread_t *)*param_1; + } + if (ppVar11 != (pthread_t *)0x0) { + operator_delete(ppVar11); + } + operator_delete(param_1); + } + return; +} + + +================================================================== + +### FUNC 00368994 (1136 bytes) name=FUN_00368994 + +void FUN_00368994(undefined8 *param_1) + +{ + pthread_mutex_t *ppVar1; + long lVar2; + int iVar3; + int iVar4; + long *plVar5; + char *pcVar6; + long *plVar7; + ulong uVar8; + pthread_t *ppVar9; + ulong uVar10; + pthread_t *ppVar11; + uint uVar12; + long lVar13; + ulong uVar14; + pthread_t *ppVar15; + uint local_4; + + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar5 = operator_new(0xb8); + *plVar5 = 0; + plVar5[1] = 0; + plVar5[2] = 0; + plVar5[3] = 0; + *(undefined1 *)(plVar5 + 0xf) = 0; + *(undefined4 *)(plVar5 + 0x10) = 0; + plVar5[0x11] = 0; + plVar5[0x12] = 0; + *(undefined4 *)(plVar5 + 0x13) = 0; + *(undefined4 *)((long)plVar5 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar5 + 0x14)); + *(undefined4 *)(plVar5 + 0x16) = 0; + plVar5[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(plVar5 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(plVar5 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar12 = local_4; + if ((pcVar6 != (char *)0x0) && + (sscanf(pcVar6,"%u",&local_4), uVar12 = local_4, local_4 == 0)) { + uVar12 = 1; + } + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar8 = (ulong)uVar12; + if (uVar8 == 0) { + local_4 = 2; + pcVar6 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar12 = local_4; + if ((pcVar6 != (char *)0x0) && + (sscanf(pcVar6,"%u",&local_4), uVar12 = local_4, local_4 == 0)) { + uVar12 = 1; + } + uVar8 = (ulong)uVar12; + } + if ((plVar5[3] != uVar8) && ((int)plVar5[0x16] != 1)) { + if ((int)plVar5[0x16] == 2) { + plVar7 = (long *)FUN_00367900(); + if (((int)plVar7[0x16] == 2) && (uVar10 = plVar7[3], uVar10 != 0)) { + uVar14 = 0; + do { + lVar13 = *plVar7; + lVar2 = lVar13 + uVar14 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar13 + uVar14 * 0x80),(void **)0x0); + uVar10 = plVar7[3]; + } + uVar14 = uVar14 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar14 < uVar10); + } + ppVar11 = (pthread_t *)*plVar5; + ppVar15 = (pthread_t *)plVar5[1]; + *(undefined4 *)(plVar7 + 0x16) = 0; + for (ppVar9 = ppVar11; ppVar9 != ppVar15; ppVar9 = ppVar9 + 0x10) { + if ((int)ppVar9[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar9 + 1); + *(undefined4 *)(ppVar9 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar9 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar9 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar9,(void **)0x0); + *(undefined4 *)(ppVar9 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar9 + 6)); + } + } + plVar5[1] = (long)ppVar11; + } + plVar5[3] = uVar8; + if (uVar8 == 1) { + *(undefined4 *)(plVar5 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar5 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + DAT_005329e8 = plVar5; + } + else { + *(undefined4 *)((long)plVar5 + 0x7c) = 0; + plVar5[3] = 1; + *(undefined4 *)(plVar5 + 0x16) = 1; + DAT_005329e8 = plVar5; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + plVar5 = DAT_005329e8; + if (((int)DAT_005329e8[0x16] == 2) && (uVar8 = DAT_005329e8[3], uVar8 != 0)) { + uVar10 = 0; + do { + lVar13 = *plVar5; + lVar2 = lVar13 + uVar10 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar13 + uVar10 * 0x80),(void **)0x0); + uVar8 = plVar5[3]; + } + uVar10 = uVar10 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar10 < uVar8); + } + *(undefined4 *)(plVar5 + 0x16) = 0; + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 4)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 9)); + pthread_mutex_destroy((pthread_mutex_t *)&DAT_005093c8); + param_1[0x14] = &PTR_FUN_004f7630; + cv::TLSDataContainer::~TLSDataContainer((TLSDataContainer *)(param_1 + 0x14)); + ppVar9 = (pthread_t *)*param_1; + ppVar11 = (pthread_t *)param_1[1]; + if (ppVar9 != ppVar11) { + do { + while ((int)ppVar9[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar9 + 1); + *(undefined4 *)(ppVar9 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar9 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar9 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar9,(void **)0x0); + *(undefined4 *)(ppVar9 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar9 + 6)); + ppVar9 = ppVar9 + 0x10; + if (ppVar11 == ppVar9) goto LAB_00368a94; + } + ppVar9 = ppVar9 + 0x10; + } while (ppVar11 != ppVar9); +LAB_00368a94: + ppVar11 = (pthread_t *)*param_1; + } + if (ppVar11 != (pthread_t *)0x0) { + operator_delete(ppVar11); + } + return; +} + + +================================================================== + +### FUNC 00368e7c (2352 bytes) name=FUN_00368e7c + +int FUN_00368e7c(int param_1) + +{ + pthread_mutex_t *ppVar1; + long lVar2; + int iVar3; + int iVar4; + char *pcVar5; + long *plVar6; + ulong uVar7; + long *plVar8; + ulong uVar9; + uint uVar10; + ulong uVar11; + pthread_t *ppVar12; + ulong uVar13; + pthread_t *ppVar14; + long lVar15; + pthread_t *ppVar16; + uint local_4; + + uVar11 = (ulong)param_1; + if (param_1 < 0) { + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar8 = operator_new(0xb8); + *plVar8 = 0; + plVar8[1] = 0; + plVar8[2] = 0; + plVar8[3] = 0; + *(undefined1 *)(plVar8 + 0xf) = 0; + *(undefined4 *)(plVar8 + 0x10) = 0; + plVar8[0x11] = 0; + plVar8[0x12] = 0; + *(undefined4 *)(plVar8 + 0x13) = 0; + *(undefined4 *)((long)plVar8 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar8 + 0x14)); + *(undefined4 *)(plVar8 + 0x16) = 0; + plVar8[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(plVar8 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(plVar8 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + if ((pcVar5 != (char *)0x0) && (sscanf(pcVar5,"%u",&local_4), local_4 == 0)) { + local_4 = 1; + } + uVar10 = local_4; + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar11 = (ulong)uVar10; + if (uVar11 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + if ((pcVar5 != (char *)0x0) && (sscanf(pcVar5,"%u",&local_4), local_4 == 0)) { + local_4 = 1; + } + uVar11 = (ulong)local_4; + } + if ((plVar8[3] != uVar11) && ((int)plVar8[0x16] != 1)) { + if ((int)plVar8[0x16] == 2) { + plVar6 = (long *)FUN_00367900(); + if ((int)plVar6[0x16] == 2) { + uVar13 = plVar6[3]; + for (uVar7 = 0; uVar7 < uVar13; uVar7 = uVar7 + 1) { + lVar15 = *plVar6; + lVar2 = lVar15 + uVar7 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar15 + uVar7 * 0x80),(void **)0x0); + uVar13 = plVar6[3]; + } + *(undefined4 *)(lVar2 + 0x70) = 3; + } + } + ppVar14 = (pthread_t *)plVar8[1]; + ppVar16 = (pthread_t *)*plVar8; + *(undefined4 *)(plVar6 + 0x16) = 0; + ppVar12 = ppVar16; + while (ppVar14 != ppVar12) { + if ((int)ppVar12[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar12 + 1); + *(undefined4 *)(ppVar12 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar12 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar12 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar12,(void **)0x0); + *(undefined4 *)(ppVar12 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar12 + 6)); + ppVar12 = ppVar12 + 0x10; + } + else { + ppVar12 = ppVar12 + 0x10; + } + } + plVar8[1] = (long)ppVar16; + } + plVar8[3] = uVar11; + if (uVar11 == 1) { + *(undefined4 *)(plVar8 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar8 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar8 + 0x7c) = 0; + DAT_005329e8 = plVar8; + } + else { + *(undefined4 *)((long)plVar8 + 0x7c) = 0; + plVar8[3] = 1; + *(undefined4 *)(plVar8 + 0x16) = 1; + DAT_005329e8 = plVar8; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + plVar8 = DAT_005329e8; + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 != 0) { + return iVar3; + } + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar10 = local_4; + if ((pcVar5 != (char *)0x0) && (sscanf(pcVar5,"%u",&local_4), uVar10 = local_4, local_4 == 0)) { + uVar10 = 1; + } + uVar11 = (ulong)uVar10; + if ((plVar8[3] == uVar11) || ((int)plVar8[0x16] == 1)) goto LAB_00368ef8; + if ((int)plVar8[0x16] == 2) { + plVar6 = (long *)FUN_00367900(); + if (((int)plVar6[0x16] == 2) && (uVar7 = plVar6[3], uVar7 != 0)) { + uVar13 = 0; + do { + lVar15 = *plVar6; + lVar2 = lVar15 + uVar13 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar15 + uVar13 * 0x80),(void **)0x0); + uVar7 = plVar6[3]; + } + uVar13 = uVar13 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar13 < uVar7); + } + ppVar16 = (pthread_t *)*plVar8; + ppVar14 = (pthread_t *)plVar8[1]; + *(undefined4 *)(plVar6 + 0x16) = 0; + for (ppVar12 = ppVar16; ppVar12 != ppVar14; ppVar12 = ppVar12 + 0x10) { + if ((int)ppVar12[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar12 + 1); + *(undefined4 *)(ppVar12 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar12 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar12 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar12,(void **)0x0); + *(undefined4 *)(ppVar12 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar12 + 6)); + } + } + goto LAB_00369094; + } + } + else { + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar8 = operator_new(0xb8); + *plVar8 = 0; + plVar8[1] = 0; + plVar8[2] = 0; + plVar8[3] = 0; + *(undefined1 *)(plVar8 + 0xf) = 0; + *(undefined4 *)(plVar8 + 0x10) = 0; + plVar8[0x11] = 0; + plVar8[0x12] = 0; + *(undefined4 *)(plVar8 + 0x13) = 0; + *(undefined4 *)((long)plVar8 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar8 + 0x14)); + *(undefined4 *)(plVar8 + 0x16) = 0; + plVar8[0x14] = (long)&PTR_FUN_004f7630; + iVar3 = pthread_mutex_init((pthread_mutex_t *)(plVar8 + 4),(pthread_mutexattr_t *)0x0); + iVar4 = pthread_cond_init((pthread_cond_t *)(plVar8 + 9),(pthread_condattr_t *)0x0); + if (iVar4 == 0 && iVar3 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar10 = local_4; + if ((pcVar5 != (char *)0x0) && + (sscanf(pcVar5,"%u",&local_4), uVar10 = local_4, local_4 == 0)) { + uVar10 = 1; + } + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 == 0) { + uVar7 = (ulong)uVar10; + if (uVar7 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + if ((pcVar5 != (char *)0x0) && (sscanf(pcVar5,"%u",&local_4), local_4 == 0)) { + local_4 = 1; + } + uVar7 = (ulong)local_4; + } + if ((plVar8[3] != uVar7) && ((int)plVar8[0x16] != 1)) { + if ((int)plVar8[0x16] == 2) { + plVar6 = (long *)FUN_00367900(); + if ((int)plVar6[0x16] == 2) { + uVar9 = plVar6[3]; + for (uVar13 = 0; uVar13 < uVar9; uVar13 = uVar13 + 1) { + lVar15 = *plVar6; + lVar2 = lVar15 + uVar13 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar15 + uVar13 * 0x80),(void **)0x0); + uVar9 = plVar6[3]; + } + *(undefined4 *)(lVar2 + 0x70) = 3; + } + } + ppVar16 = (pthread_t *)*plVar8; + ppVar14 = (pthread_t *)plVar8[1]; + *(undefined4 *)(plVar6 + 0x16) = 0; + for (ppVar12 = ppVar16; ppVar12 != ppVar14; ppVar12 = ppVar12 + 0x10) { + if ((int)ppVar12[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar12 + 1); + *(undefined4 *)(ppVar12 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar12 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar12 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar12,(void **)0x0); + *(undefined4 *)(ppVar12 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar12 + 6)); + } + } + plVar8[1] = (long)ppVar16; + } + plVar8[3] = uVar7; + if (uVar7 == 1) { + *(undefined4 *)(plVar8 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar8 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar8 + 0x7c) = 0; + DAT_005329e8 = plVar8; + } + else { + *(undefined4 *)((long)plVar8 + 0x7c) = 0; + plVar8[3] = 1; + *(undefined4 *)(plVar8 + 0x16) = 1; + DAT_005329e8 = plVar8; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + plVar8 = DAT_005329e8; + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar3 != 0) { + return iVar3; + } + if (param_1 == 0) { + local_4 = 2; + pcVar5 = getenv("OPENCV_FOR_THREADS_NUM"); + if (pcVar5 == (char *)0x0) { + uVar11 = (ulong)local_4; + } + else { + sscanf(pcVar5,"%u",&local_4); + uVar10 = local_4; + if (local_4 == 0) { + uVar10 = 1; + } + uVar11 = (ulong)uVar10; + } + } + if ((plVar8[3] == uVar11) || ((int)plVar8[0x16] == 1)) goto LAB_00368ef8; + if ((int)plVar8[0x16] == 2) { + plVar6 = (long *)FUN_00367900(); + if (((int)plVar6[0x16] == 2) && (uVar7 = plVar6[3], uVar7 != 0)) { + uVar13 = 0; + do { + lVar15 = *plVar6; + lVar2 = lVar15 + uVar13 * 0x80; + if (*(int *)(lVar2 + 0x70) == 1) { + *(undefined4 *)(lVar2 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 8)); + *(undefined1 *)(lVar2 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar2 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 8)); + pthread_join(*(pthread_t *)(lVar15 + uVar13 * 0x80),(void **)0x0); + uVar7 = plVar6[3]; + } + uVar13 = uVar13 + 1; + *(undefined4 *)(lVar2 + 0x70) = 3; + } while (uVar13 < uVar7); + } + ppVar16 = (pthread_t *)*plVar8; + ppVar14 = (pthread_t *)plVar8[1]; + *(undefined4 *)(plVar6 + 0x16) = 0; + for (ppVar12 = ppVar16; ppVar12 != ppVar14; ppVar12 = ppVar12 + 0x10) { + if ((int)ppVar12[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar12 + 1); + *(undefined4 *)(ppVar12 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar12 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar12 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar12,(void **)0x0); + *(undefined4 *)(ppVar12 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar12 + 6)); + } + } +LAB_00369094: + plVar8[1] = (long)ppVar16; + } + } + plVar8[3] = uVar11; + if (uVar11 == 1) { + *(undefined4 *)(plVar8 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar8 + 0x16) = 0; + } +LAB_00368ef8: + iVar3 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + return iVar3; +} + + +================================================================== + +### FUNC 00369814 (1116 bytes) name=FUN_00369814 + +pthread_t * FUN_00369814(pthread_t *param_1,pthread_t *param_2,pthread_t *param_3,void *param_4) + +{ + pthread_mutex_t *__mutex; + long lVar1; + uint uVar2; + pthread_t *ppVar3; + void *pvVar4; + ulong uVar5; + pthread_t *extraout_x0; + pthread_t *ppVar6; + pthread_t pVar7; + pthread_t *ppVar8; + pthread_t *ppVar9; + long lVar10; + pthread_t *ppVar11; + pthread_t *ppVar12; + long lVar13; + ulong uVar14; + pthread_t local_80; + pthread_mutex_t pStack_78; + pthread_cond_t pStack_50; + undefined1 local_20; + int local_10; + + if (param_3 == (pthread_t *)0x0) { + return param_1; + } + ppVar8 = (pthread_t *)param_1[1]; + if (param_3 <= (pthread_t *)((long)(param_1[2] - (long)ppVar8) >> 7)) { + lVar13 = (long)ppVar8 - (long)param_2; + ppVar3 = memcpy(&local_80,param_4,0x80); + if (param_3 < (pthread_t *)(lVar13 >> 7)) { + ppVar6 = ppVar8 + (long)param_3 * -0x10; + ppVar3 = ppVar8; + ppVar9 = ppVar6; + if (ppVar8 != ppVar6) { + do { + pvVar4 = (void *)0x0; + if (ppVar3 != (pthread_t *)0x0) { + pvVar4 = memcpy(ppVar3,ppVar9,0x80); + } + ppVar9 = ppVar9 + 0x10; + ppVar3 = (pthread_t *)((long)pvVar4 + 0x80); + } while (ppVar8 != ppVar9); + ppVar3 = (pthread_t *)param_1[1]; + } + ppVar3 = ppVar3 + (long)param_3 * 0x10; + param_1[1] = (pthread_t)ppVar3; + ppVar9 = (pthread_t *)((long)ppVar8 - ((long)ppVar6 - (long)param_2)); + if (0x7f < (long)ppVar6 - (long)param_2) { + do { + ppVar8 = ppVar8 + -0x10; + ppVar6 = ppVar6 + -0x10; + ppVar3 = memcpy(ppVar8,ppVar6,0x80); + } while (ppVar8 != ppVar9); + } + ppVar8 = param_2 + (long)param_3 * 0x10; + for (; param_2 != ppVar8; param_2 = param_2 + 0x10) { + ppVar3 = memcpy(param_2,&local_80,0x80); + } + } + else { + lVar1 = (long)param_3 - (lVar13 >> 7); + ppVar9 = ppVar8; + lVar10 = lVar1; + if (lVar1 != 0) { + do { + ppVar6 = (pthread_t *)0x0; + if (ppVar9 != (pthread_t *)0x0) { + ppVar3 = memcpy(ppVar9,&local_80,0x80); + ppVar6 = ppVar3; + } + lVar10 = lVar10 + -1; + ppVar9 = ppVar6 + 0x10; + } while (lVar10 != 0); + ppVar9 = (pthread_t *)param_1[1]; + } + ppVar9 = ppVar9 + lVar1 * 0x10; + param_1[1] = (pthread_t)ppVar9; + ppVar6 = param_2; + if (ppVar8 == param_2) { + param_1[1] = (long)ppVar9 + lVar13; + } + else { + do { + pvVar4 = (void *)0x0; + if (ppVar9 != (pthread_t *)0x0) { + pvVar4 = memcpy(ppVar9,ppVar6,0x80); + } + ppVar6 = ppVar6 + 0x10; + ppVar9 = (pthread_t *)((long)pvVar4 + 0x80); + } while (ppVar8 != ppVar6); + param_1[1] = param_1[1] + lVar13; + do { + ppVar9 = param_2 + 0x10; + ppVar3 = memcpy(param_2,&local_80,0x80); + param_2 = ppVar9; + } while (ppVar8 != ppVar9); + } + } + if (local_10 != 1) { + return ppVar3; + } + local_10 = 2; + pthread_mutex_lock(&pStack_78); + local_20 = 1; + pthread_cond_signal(&pStack_50); + pthread_mutex_unlock(&pStack_78); + pthread_join(local_80,(void **)0x0); + local_10 = 3; + pthread_mutex_destroy(&pStack_78); + uVar2 = pthread_cond_destroy(&pStack_50); + return (pthread_t *)(ulong)uVar2; + } + pVar7 = *param_1; + ppVar8 = (pthread_t *)((long)((long)ppVar8 - pVar7) >> 7); + if ((pthread_t *)(0x1ffffffffffffff - (long)ppVar8) < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + ppVar3 = ppVar8; + if (ppVar8 < param_3) { + ppVar3 = param_3; + } + ppVar3 = (pthread_t *)((long)ppVar3 + (long)ppVar8); + if ((ppVar3 < ppVar8) || ((pthread_t *)0x1ffffffffffffff < ppVar3)) { + lVar13 = (long)param_2 - pVar7; + uVar14 = 0xffffffffffffff80; + } + else { + lVar13 = (long)param_2 - pVar7; + if (ppVar3 == (pthread_t *)0x0) { + uVar14 = 0; + ppVar3 = (pthread_t *)0x0; + goto LAB_00369aa0; + } + uVar14 = (long)ppVar3 * 0x80; + } + ppVar8 = operator_new(uVar14); + ppVar3 = ppVar8; +LAB_00369aa0: + ppVar9 = (pthread_t *)((long)ppVar3 + lVar13); + ppVar6 = param_3; + do { + ppVar11 = (pthread_t *)0x0; + if (ppVar9 != (pthread_t *)0x0) { + ppVar8 = memcpy(ppVar9,param_4,0x80); + ppVar11 = ppVar8; + } + ppVar6 = (pthread_t *)((long)ppVar6 + -1); + ppVar9 = ppVar11 + 0x10; + } while (ppVar6 != (pthread_t *)0x0); + ppVar11 = (pthread_t *)*param_1; + ppVar6 = ppVar3; + ppVar9 = ppVar11; + if (param_2 != ppVar11) { + do { + ppVar12 = (pthread_t *)0x0; + if (ppVar6 != (pthread_t *)0x0) { + ppVar8 = memcpy(ppVar6,ppVar9,0x80); + ppVar12 = ppVar8; + } + ppVar9 = ppVar9 + 0x10; + ppVar6 = ppVar12 + 0x10; + } while (param_2 != ppVar9); + ppVar6 = (pthread_t *) + ((long)ppVar3 + ((long)param_2 - (long)(ppVar11 + 0x10) & 0xffffffffffffff80U) + 0x80); + } + ppVar12 = (pthread_t *)param_1[1]; + ppVar6 = ppVar6 + (long)param_3 * 0x10; + ppVar11 = ppVar6; + ppVar9 = param_2; + if (param_2 != ppVar12) { + do { + pvVar4 = (void *)0x0; + if (ppVar11 != (pthread_t *)0x0) { + pvVar4 = memcpy(ppVar11,ppVar9,0x80); + } + ppVar9 = ppVar9 + 0x10; + ppVar11 = (pthread_t *)((long)pvVar4 + 0x80); + } while (ppVar12 != ppVar9); + uVar5 = (long)ppVar12 - (long)(param_2 + 0x10); + ppVar12 = (pthread_t *)param_1[1]; + ppVar8 = (pthread_t *)((uVar5 & 0xffffffffffffff80) + 0x80); + ppVar6 = (pthread_t *)((long)ppVar6 + (long)ppVar8); + } + ppVar9 = (pthread_t *)*param_1; + if (ppVar9 != ppVar12) { + do { + while ((int)ppVar9[0xe] != 1) { + ppVar9 = ppVar9 + 0x10; + if (ppVar12 == ppVar9) goto LAB_00369bf8; + } + __mutex = (pthread_mutex_t *)(ppVar9 + 1); + *(undefined4 *)(ppVar9 + 0xe) = 2; + ppVar11 = ppVar9 + 0x10; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar9 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar9 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar9,(void **)0x0); + *(undefined4 *)(ppVar9 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + uVar2 = pthread_cond_destroy((pthread_cond_t *)(ppVar9 + 6)); + ppVar8 = (pthread_t *)(ulong)uVar2; + ppVar9 = ppVar11; + } while (ppVar12 != ppVar11); +LAB_00369bf8: + ppVar12 = (pthread_t *)*param_1; + } + if (ppVar12 != (pthread_t *)0x0) { + operator_delete(ppVar12); + ppVar8 = extraout_x0; + } + *param_1 = (pthread_t)ppVar3; + param_1[1] = (pthread_t)ppVar6; + param_1[2] = (long)ppVar3 + uVar14; + return ppVar8; +} + + +================================================================== + +### FUNC 00369c70 (544 bytes) name=FUN_00369c70 + +undefined8 FUN_00369c70(long *param_1) + +{ + pthread_mutex_t *__mutex; + pthread_t *ppVar1; + int iVar2; + int iVar3; + ulong uVar4; + ulong uVar5; + long lVar6; + pthread_t *ppVar7; + pthread_t *ppVar8; + pthread_t local_80; + pthread_mutex_t pStack_78; + pthread_cond_t pStack_50; + undefined1 local_20; + undefined8 local_18; + int local_10; + undefined8 local_8; + + local_10 = (int)param_1[0x16]; + if (local_10 != 0) { + return 1; + } + uVar4 = param_1[3]; + if (uVar4 == 1) { + return 1; + } + lVar6 = *param_1; + ppVar8 = (pthread_t *)param_1[1]; + local_20 = 0; + local_18 = 0; + uVar5 = (long)ppVar8 - lVar6 >> 7; + local_8 = 0; + if (uVar5 < uVar4) { + FUN_00369814(param_1,ppVar8,uVar4 - uVar5,&local_80); + } + else { + if (uVar5 <= uVar4) goto LAB_00369cd4; + ppVar1 = (pthread_t *)(lVar6 + uVar4 * 0x80); + for (ppVar7 = ppVar1; ppVar8 != ppVar7; ppVar7 = ppVar7 + 0x10) { + while ((int)ppVar7[0xe] != 1) { + ppVar7 = ppVar7 + 0x10; + if (ppVar8 == ppVar7) goto LAB_00369e04; + } + __mutex = (pthread_mutex_t *)(ppVar7 + 1); + *(undefined4 *)(ppVar7 + 0xe) = 2; + pthread_mutex_lock(__mutex); + *(undefined1 *)(ppVar7 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar7 + 6)); + pthread_mutex_unlock(__mutex); + pthread_join(*ppVar7,(void **)0x0); + *(undefined4 *)(ppVar7 + 0xe) = 3; + pthread_mutex_destroy(__mutex); + pthread_cond_destroy((pthread_cond_t *)(ppVar7 + 6)); + } +LAB_00369e04: + param_1[1] = (long)ppVar1; + } + if (local_10 == 1) { + local_10 = 2; + pthread_mutex_lock(&pStack_78); + local_20 = 1; + pthread_cond_signal(&pStack_50); + pthread_mutex_unlock(&pStack_78); + pthread_join(local_80,(void **)0x0); + local_10 = 3; + pthread_mutex_destroy(&pStack_78); + pthread_cond_destroy(&pStack_50); + } + lVar6 = *param_1; + ppVar8 = (pthread_t *)param_1[1]; +LAB_00369cd4: + uVar4 = 0; + if ((long)ppVar8 - lVar6 >> 7 != 0) { + do { + ppVar8 = (pthread_t *)(lVar6 + uVar4 * 0x80); + ppVar8[0xf] = uVar4; + ppVar8[0xd] = (pthread_t)param_1; + iVar2 = pthread_mutex_init((pthread_mutex_t *)(ppVar8 + 1),(pthread_mutexattr_t *)0x0); + iVar3 = pthread_cond_init((pthread_cond_t *)(ppVar8 + 6),(pthread_condattr_t *)0x0); + if (iVar3 == 0 && iVar2 == 0) { + pthread_create(ppVar8,(pthread_attr_t *)0x0,FUN_00367110,ppVar8); + } + lVar6 = *param_1; + uVar4 = uVar4 + 1; + } while (uVar4 < (ulong)(param_1[1] - lVar6 >> 7)); + } + *(undefined4 *)(param_1 + 0x16) = 2; + return 1; +} + + +================================================================== + +### FUNC 00369ef8 (476 bytes) name=FUN_00369ef8 + +ulong FUN_00369ef8(double param_1,long *param_2,int *param_3,long *param_4) + +{ + pthread_mutex_t *__mutex; + int iVar1; + int iVar2; + char cVar3; + int iVar4; + uint uVar5; + char *pcVar6; + int iVar7; + long lVar8; + ulong uVar9; + double dVar10; + + pcVar6 = (char *)cv::TLSDataContainer::getData((TLSDataContainer *)(param_2 + 0x14)); + if (((((ulong)param_2[3] < 2) || (*pcVar6 != '\0')) || (param_3[1] - *param_3 < 2)) || + (((0.0 < param_1 && (param_1 < 1.5)) || + ((iVar4 = pthread_mutex_trylock((pthread_mutex_t *)&DAT_005093c8), iVar4 != 0 || + (cVar3 = FUN_00369c70(param_2), cVar3 == '\0')))))) { + uVar9 = (**(code **)(*param_4 + 0x10))(param_4,param_3); + return uVar9; + } + dVar10 = (double)(param_3[1] - *param_3) / (double)(ulong)((param_2[1] - *param_2 >> 7) << 2); + if (dVar10 <= param_1) { + dVar10 = param_1; + } + __mutex = (pthread_mutex_t *)(param_2 + 4); + pthread_mutex_lock(__mutex); + param_2[0x12] = (long)param_3; + iVar4 = param_3[1]; + iVar1 = *param_3; + iVar7 = (int)dVar10; + lVar8 = *param_2; + *(undefined4 *)(param_2 + 0x10) = 0; + *(undefined4 *)((long)param_2 + 0x7c) = 0; + iVar2 = 0; + if (iVar7 != 0) { + iVar2 = ((iVar4 - iVar1) + -1) / iVar7; + } + *(int *)(param_2 + 0x13) = iVar7; + *(undefined1 *)(param_2 + 0xf) = 0; + param_2[0x11] = (long)param_4; + *(int *)((long)param_2 + 0x9c) = iVar2 + 1; + if (param_2[1] - lVar8 >> 7 != 0) { + uVar9 = 0; + do { + lVar8 = lVar8 + uVar9 * 0x80; + uVar9 = uVar9 + 1; + pthread_mutex_lock((pthread_mutex_t *)(lVar8 + 8)); + *(undefined1 *)(lVar8 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar8 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar8 + 8)); + lVar8 = *param_2; + } while (uVar9 < (ulong)(param_2[1] - lVar8 >> 7)); + if ((char)param_2[0xf] != '\0') goto LAB_0036a074; + } + do { + pthread_cond_wait((pthread_cond_t *)(param_2 + 9),__mutex); + } while ((char)param_2[0xf] == '\0'); +LAB_0036a074: + pthread_mutex_unlock(__mutex); + uVar5 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + return (ulong)uVar5; +} + + +================================================================== + +### FUNC 0036a0d4 (1228 bytes) name=FUN_0036a0d4 + +ulong FUN_0036a0d4(double param_1,int *param_2,long *param_3) + +{ + pthread_mutex_t *ppVar1; + pthread_t *ppVar2; + int iVar3; + char cVar4; + int iVar5; + uint uVar6; + int iVar7; + char *pcVar8; + long *plVar9; + long *plVar10; + pthread_t *ppVar11; + ulong uVar12; + int iVar13; + long lVar14; + long lVar15; + ulong uVar16; + long lVar17; + double dVar18; + pthread_t *ppVar19; + ulong uVar20; + uint local_4; + + if (DAT_005329e8 == (long *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (DAT_005329e8 == (long *)0x0) { + plVar9 = operator_new(0xb8); + *plVar9 = 0; + plVar9[1] = 0; + plVar9[2] = 0; + plVar9[3] = 0; + *(undefined1 *)(plVar9 + 0xf) = 0; + *(undefined4 *)(plVar9 + 0x10) = 0; + plVar9[0x11] = 0; + plVar9[0x12] = 0; + *(undefined4 *)(plVar9 + 0x13) = 0; + *(undefined4 *)((long)plVar9 + 0x9c) = 0; + cv::TLSDataContainer::TLSDataContainer((TLSDataContainer *)(plVar9 + 0x14)); + *(undefined4 *)(plVar9 + 0x16) = 0; + plVar9[0x14] = (long)&PTR_FUN_004f7630; + iVar5 = pthread_mutex_init((pthread_mutex_t *)(plVar9 + 4),(pthread_mutexattr_t *)0x0); + iVar7 = pthread_cond_init((pthread_cond_t *)(plVar9 + 9),(pthread_condattr_t *)0x0); + if (iVar7 == 0 && iVar5 == 0) { + local_4 = 2; + pcVar8 = getenv("OPENCV_FOR_THREADS_NUM"); + uVar6 = local_4; + if ((pcVar8 != (char *)0x0) && (sscanf(pcVar8,"%u",&local_4), uVar6 = local_4, local_4 == 0) + ) { + uVar6 = 1; + } + iVar5 = pthread_mutex_lock((pthread_mutex_t *)&DAT_005093c8); + if (iVar5 == 0) { + uVar16 = (ulong)uVar6; + if (uVar16 == 0) { + local_4 = 2; + pcVar8 = getenv("OPENCV_FOR_THREADS_NUM"); + if ((pcVar8 != (char *)0x0) && (sscanf(pcVar8,"%u",&local_4), local_4 == 0)) { + local_4 = 1; + } + uVar16 = (ulong)local_4; + } + if ((plVar9[3] != uVar16) && ((int)plVar9[0x16] != 1)) { + if ((int)plVar9[0x16] == 2) { + plVar10 = (long *)FUN_00367900(); + if (((int)plVar10[0x16] == 2) && (uVar12 = plVar10[3], uVar12 != 0)) { + uVar20 = 0; + do { + lVar17 = NEON_shl(uVar20,7); + lVar14 = *plVar10; + lVar15 = lVar14 + lVar17; + if (*(int *)(lVar15 + 0x70) == 1) { + *(undefined4 *)(lVar15 + 0x70) = 2; + pthread_mutex_lock((pthread_mutex_t *)(lVar15 + 8)); + *(undefined1 *)(lVar15 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar15 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar15 + 8)); + pthread_join(*(pthread_t *)(lVar14 + lVar17),(void **)0x0); + uVar12 = plVar10[3]; + } + uVar20 = uVar20 + 1; + *(undefined4 *)(lVar15 + 0x70) = 3; + } while (uVar20 < uVar12); + } + ppVar19 = (pthread_t *)*plVar9; + ppVar11 = (pthread_t *)plVar9[1]; + *(undefined4 *)(plVar10 + 0x16) = 0; + for (ppVar2 = ppVar19; ppVar2 != ppVar11; ppVar2 = ppVar2 + 0x10) { + if ((int)ppVar2[0xe] == 1) { + ppVar1 = (pthread_mutex_t *)(ppVar2 + 1); + *(undefined4 *)(ppVar2 + 0xe) = 2; + pthread_mutex_lock(ppVar1); + *(undefined1 *)(ppVar2 + 0xc) = 1; + pthread_cond_signal((pthread_cond_t *)(ppVar2 + 6)); + pthread_mutex_unlock(ppVar1); + pthread_join(*ppVar2,(void **)0x0); + *(undefined4 *)(ppVar2 + 0xe) = 3; + pthread_mutex_destroy(ppVar1); + pthread_cond_destroy((pthread_cond_t *)(ppVar2 + 6)); + } + } + plVar9[1] = (long)ppVar19; + } + plVar9[3] = uVar16; + if (uVar16 == 1) { + *(undefined4 *)(plVar9 + 0x16) = 3; + } + else { + *(undefined4 *)(plVar9 + 0x16) = 0; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + *(undefined4 *)((long)plVar9 + 0x7c) = 0; + DAT_005329e8 = plVar9; + } + else { + *(undefined4 *)((long)plVar9 + 0x7c) = 0; + plVar9[3] = 1; + *(undefined4 *)(plVar9 + 0x16) = 1; + DAT_005329e8 = plVar9; + } + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + } + plVar9 = DAT_005329e8; + pcVar8 = (char *)cv::TLSDataContainer::getData((TLSDataContainer *)(DAT_005329e8 + 0x14)); + if (((((ulong)plVar9[3] < 2) || (*pcVar8 != '\0')) || (param_2[1] - *param_2 < 2)) || + (((0.0 < param_1 && (param_1 < 1.5)) || + ((iVar5 = pthread_mutex_trylock((pthread_mutex_t *)&DAT_005093c8), iVar5 != 0 || + (cVar4 = FUN_00369c70(plVar9), cVar4 == '\0')))))) { + uVar16 = (**(code **)(*param_3 + 0x10))(param_3,param_2); + return uVar16; + } + dVar18 = (double)(param_2[1] - *param_2) / (double)(ulong)((plVar9[1] - *plVar9 >> 7) << 2); + if (dVar18 <= param_1) { + dVar18 = param_1; + } + ppVar1 = (pthread_mutex_t *)(plVar9 + 4); + pthread_mutex_lock(ppVar1); + plVar9[0x12] = (long)param_2; + iVar5 = param_2[1]; + iVar7 = *param_2; + iVar13 = (int)dVar18; + lVar15 = *plVar9; + *(undefined4 *)(plVar9 + 0x10) = 0; + *(undefined4 *)((long)plVar9 + 0x7c) = 0; + iVar3 = 0; + if (iVar13 != 0) { + iVar3 = ((iVar5 - iVar7) + -1) / iVar13; + } + *(int *)(plVar9 + 0x13) = iVar13; + *(undefined1 *)(plVar9 + 0xf) = 0; + plVar9[0x11] = (long)param_3; + *(int *)((long)plVar9 + 0x9c) = iVar3 + 1; + if (plVar9[1] - lVar15 >> 7 != 0) { + uVar16 = 0; + do { + lVar15 = lVar15 + uVar16 * 0x80; + uVar16 = uVar16 + 1; + pthread_mutex_lock((pthread_mutex_t *)(lVar15 + 8)); + *(undefined1 *)(lVar15 + 0x60) = 1; + pthread_cond_signal((pthread_cond_t *)(lVar15 + 0x30)); + pthread_mutex_unlock((pthread_mutex_t *)(lVar15 + 8)); + lVar15 = *plVar9; + } while (uVar16 < (ulong)(plVar9[1] - lVar15 >> 7)); + if ((char)plVar9[0xf] != '\0') goto LAB_0036a268; + } + do { + pthread_cond_wait((pthread_cond_t *)(plVar9 + 9),ppVar1); + } while ((char)plVar9[0xf] == '\0'); +LAB_0036a268: + pthread_mutex_unlock(ppVar1); + uVar6 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_005093c8); + return (ulong)uVar6; +} + + +================================================================== + +### FUNC 0036a5d8 (204 bytes) name=PCA + +/* cv::PCA::PCA() */ + +void __thiscall cv::PCA::PCA(PCA *this) + +{ + *(undefined8 *)this = DAT_0036a6a8; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(PCA **)(this + 0x40) = this + 8; + *(PCA **)(this + 0x48) = this + 0x50; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined4 *)(this + 0x60) = 0x42ff0000; + *(undefined4 *)(this + 100) = 0; + *(undefined4 *)(this + 0x68) = 0; + *(undefined4 *)(this + 0x6c) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x78) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(PCA **)(this + 0xa0) = this + 0x68; + *(PCA **)(this + 0xa8) = this + 0xb0; + *(undefined8 *)(this + 0xb8) = 0; + *(undefined8 *)(this + 0xb0) = 0; + *(undefined4 *)(this + 0xc0) = 0x42ff0000; + *(undefined4 *)(this + 0xc4) = 0; + *(undefined4 *)(this + 200) = 0; + *(undefined4 *)(this + 0xcc) = 0; + *(undefined8 *)(this + 0xd0) = 0; + *(undefined8 *)(this + 0xd8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(PCA **)(this + 0x100) = this + 200; + *(PCA **)(this + 0x108) = this + 0x110; + *(undefined8 *)(this + 0x118) = 0; + *(undefined8 *)(this + 0x110) = 0; + return; +} + + +================================================================== + +### FUNC 0036a6b0 (5532 bytes) name=operator() + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::PCA::TEMPNAMEPLACEHOLDERVALUE(cv::_InputArray const&, cv::_InputArray const&, int, int) */ + +PCA * __thiscall +cv::PCA::operator()(PCA *this,_InputArray *param_1,_InputArray *param_2,int param_3,int param_4) + +{ + Mat *this_00; + uint uVar1; + int iVar2; + uint uVar3; + char cVar4; + bool bVar5; + undefined8 uVar6; + undefined2 uVar7; + int iVar8; + long lVar9; + char *pcVar10; + _InputArray *p_Var11; + undefined8 uVar12; + long lVar13; + int *piVar14; + Mat *pMVar15; + Mat **ppMVar16; + undefined4 *puVar17; + undefined8 *puVar18; + int iVar19; + undefined8 *puVar20; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + int iVar25; + int iVar26; + undefined4 local_388; + undefined4 local_384; + int local_380; + int local_37c; + undefined4 local_378; + undefined4 local_374; + undefined4 local_370; + int local_36c; + undefined4 local_368; + undefined4 local_364; + undefined4 local_360; + int local_35c; + int local_358; + int local_354; + int local_350; + int local_34c; + int local_348; + int local_344; + PCA *local_340; + undefined4 local_338; + undefined4 local_334; + undefined8 local_330; + Mat *local_328; + undefined4 local_320; + undefined4 local_31c; + undefined8 local_318; + Mat *local_310; + undefined4 local_308; + undefined4 local_304; + undefined8 local_300; + Mat *pMStack_2f8; + undefined8 local_2f0; + undefined8 local_2e8; + undefined8 local_2e0; + undefined8 local_2d8; + undefined8 local_2d0; + long local_2c8; + Mat **local_2c0; + undefined8 *local_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + undefined8 local_2a0; + Mat *pMStack_298; + undefined8 local_290; + undefined8 local_288; + undefined8 local_280; + undefined8 local_278; + undefined8 local_270; + long local_268; + Mat **local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 uStack_248; + undefined8 local_240; + undefined8 uStack_238; + long local_230; + undefined8 uStack_228; + undefined8 local_220; + undefined8 uStack_218; + undefined8 local_210; + long lStack_208; + undefined8 *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 uStack_1e8; + undefined8 local_1e0; + undefined8 uStack_1d8; + long local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + uint local_180; + int local_17c; + int local_178; + int local_174; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + int *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined4 local_120; + int local_11c; + int local_118; + int local_114; + long local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined8 local_c0; + undefined8 uStack_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined4 local_60; + int local_5c; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + iVar8 = _InputArray::kind(param_1); + if (iVar8 == 0x10000) { + pMVar15 = *(Mat **)(param_1 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(uint *)pMVar15; + local_17c = *(int *)(pMVar15 + 4); + local_178 = *(int *)(pMVar15 + 8); + local_174 = *(int *)(pMVar15 + 0xc); + local_170 = *(undefined8 *)(pMVar15 + 0x10); + local_168 = *(undefined8 *)(pMVar15 + 0x18); + local_160 = *(undefined8 *)(pMVar15 + 0x20); + local_158 = *(undefined8 *)(pMVar15 + 0x28); + local_150 = *(undefined8 *)(pMVar15 + 0x30); + local_148 = *(long *)(pMVar15 + 0x38); + local_128 = 0; + local_130 = 0; + if (local_148 != 0) { + piVar14 = (int *)(local_148 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(int *)(pMVar15 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar15 + 0x48); + local_128 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar15); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar8 = _InputArray::kind(param_2); + if (iVar8 == 0x10000) { + pMVar15 = *(Mat **)(param_2 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(undefined4 *)pMVar15; + local_11c = *(int *)(pMVar15 + 4); + local_118 = *(int *)(pMVar15 + 8); + local_114 = *(int *)(pMVar15 + 0xc); + local_110 = *(long *)(pMVar15 + 0x10); + local_108 = *(undefined8 *)(pMVar15 + 0x18); + local_100 = *(undefined8 *)(pMVar15 + 0x20); + local_f8 = *(undefined8 *)(pMVar15 + 0x28); + local_f0 = *(undefined8 *)(pMVar15 + 0x30); + local_e8 = *(long *)(pMVar15 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar14 = (int *)(local_e8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (2 < *(int *)(pMVar15 + 4)) { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar15); + goto LAB_0036a744; + } + local_d0 = **(undefined8 **)(pMVar15 + 0x48); + local_c8 = (*(undefined8 **)(pMVar15 + 0x48))[1]; + } + else { + _InputArray::getMat_((int)param_2); +LAB_0036a744: + } + if ((local_180 >> 3 & 0x1ff) != 0) { + local_330 = 0; + local_328 = (Mat *)0x0; + pcVar10 = (char *)String::allocate((String *)&local_330,0x14); + uVar6 = s_data_channels______1_0046fca0._8_8_; + uVar12 = s_data_channels______1_0046fca0._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s_data_channels______1_0046fca0._16_4_; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar6; + error(-0xd7,(String *)&local_330, + "cv::PCA& cv::PCA::operator()(cv::InputArray, cv::InputArray, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0x48); + String::deallocate((String *)&local_330); + } + if ((param_3 & 1U) == 0) { + iVar26 = 0xe; + iVar25 = 0xf; + iVar19 = 0xd; + iVar21 = 1; + iVar22 = 0xc; + iVar8 = local_178; + iVar23 = local_174; + iVar24 = local_174; + } + else { + iVar26 = 0x16; + iVar25 = 0x17; + iVar19 = 0x15; + iVar22 = 0x14; + iVar8 = local_174; + iVar23 = local_178; + iVar21 = local_178; + iVar24 = 1; + } + iVar2 = iVar8; + if (iVar23 < iVar8) { + iVar2 = iVar23; + } + if ((iVar2 <= param_4) || (param_4 < 1)) { + param_4 = iVar2; + } + if (iVar23 <= iVar8) { + iVar22 = iVar19; + iVar26 = iVar25; + } + uVar1 = local_180 & 7; + if (uVar1 < 5) { + uVar1 = 5; + } + pMVar15 = (Mat *)(this + 0xc0); + if ((((2 < *(int *)(this + 0xc4)) || (iVar21 != *(int *)(this + 200))) || + (iVar24 != *(int *)(this + 0xcc))) || + (((*(uint *)(this + 0xc0) & 0xfff) != uVar1 || (*(long *)(this + 0xd0) == 0)))) { + local_358 = iVar21; + local_354 = iVar24; + Mat::create(pMVar15,2,&local_358,uVar1); + } + local_2b8 = &local_2b0; + local_2c0 = &pMStack_2f8; + uStack_2a8 = 0; + local_2b0 = 0; + pMStack_2f8 = _UNK_0036be88; + local_300 = _DAT_0036be80; + local_2f0 = 0; + local_2e8 = 0; + local_2e0 = 0; + local_2d8 = 0; + local_2d0 = 0; + local_2c8 = 0; + local_350 = iVar2; + local_34c = iVar2; + Mat::create((Mat *)&local_300,2,&local_350,uVar1); + if (local_110 != 0) { + if (local_11c < 3) { + lVar9 = (long)local_114 * (long)local_118; + } + else { + lVar13 = 0; + lVar9 = 1; + do { + piVar14 = local_e0 + lVar13; + lVar13 = lVar13 + 1; + lVar9 = lVar9 * *piVar14; + } while ((int)lVar13 < local_11c); + } + if (lVar9 != 0) { + if ((local_e0[1] != iVar24) || (*local_e0 != iVar21)) { + local_318 = 0; + local_310 = (Mat *)0x0; + pcVar10 = (char *)String::allocate((String *)&local_318,0x17); + cVar4 = s__mean_size______mean_sz_0046fcf8[0x16]; + uVar7 = s__mean_size______mean_sz_0046fcf8._20_2_; + uVar6 = s__mean_size______mean_sz_0046fcf8._8_8_; + uVar12 = s__mean_size______mean_sz_0046fcf8._0_8_; + *(undefined4 *)(pcVar10 + 0x10) = s__mean_size______mean_sz_0046fcf8._16_4_; + *(undefined2 *)(pcVar10 + 0x14) = uVar7; + pcVar10[0x16] = cVar4; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar6; + error(-0xd7,(String *)&local_318, + "cv::PCA& cv::PCA::operator()(cv::InputArray, cv::InputArray, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0x68); + String::deallocate((String *)&local_318); + } + local_50 = 0; + local_60 = 0x2010000; + local_58 = pMVar15; + Mat::convertTo((Mat *)&local_120,(_OutputArray *)&local_60,uVar1,1.0,0.0); + iVar22 = iVar26; + } + } + local_1e0._0_4_ = 0x1010000; + local_c0._0_4_ = 0x2010000; + local_1d0 = 0; + local_b0 = 0; + local_50 = 0; + local_60 = 0x3010000; + uStack_1d8 = (Mat *)&local_180; + uStack_b8 = (Mat *)&local_300; + local_58 = pMVar15; + calcCovarMatrix((_InputArray *)&local_1e0,(_OutputArray *)&local_c0,(_InputOutputArray *)&local_60 + ,iVar22,uVar1); + local_1d0 = 0; + this_00 = (Mat *)(this + 0x60); + local_1e0 = CONCAT44(local_1e0._4_4_,0x1010000); + local_b0 = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x2010000); + local_50 = 0; + local_60 = 0x2010000; + uStack_1d8 = (Mat *)&local_300; + uStack_b8 = this_00; + local_58 = (Mat *)this; + eigen((_InputArray *)&local_1e0,(_OutputArray *)&local_c0,(_OutputArray *)&local_60); + if (iVar8 < iVar23) { + local_1f8 = &local_1f0; + local_230 = 0; + uStack_228 = 0; + local_200 = &uStack_238; + local_220 = 0; + uVar3 = 0; + if (*(int *)(this + 200) != 0) { + uVar3 = local_178 / *(int *)(this + 200); + } + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + iVar8 = 0; + if (*(int *)(this + 0xcc) != 0) { + iVar8 = local_174 / *(int *)(this + 0xcc); + } + uStack_238 = _UNK_0036be88; + local_240 = _DAT_0036be80; + uStack_1e8 = 0; + local_1f0 = 0; + repeat((cv *)pMVar15,(Mat *)(ulong)uVar3,iVar8,(int)local_1f8); + if (((local_180 & 0xfff) == uVar1) && (local_1d0 != *(long *)(this + 0xd0))) { + local_c0 = CONCAT44(local_c0._4_4_,0x1010000); + local_2a0 = CONCAT44(local_2a0._4_4_,0x1010000); + local_290 = 0; + local_b0 = 0; + local_50 = 0; + local_60 = 0x2010000; + pMStack_298 = (Mat *)&local_180; + uStack_b8 = (Mat *)&local_1e0; + local_58 = (Mat *)&local_1e0; + p_Var11 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_2a0,(_InputArray *)&local_c0,(_OutputArray *)&local_60,p_Var11, + -1); + if (lStack_1a8 != 0) { + piVar14 = (int *)(lStack_1a8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (lStack_208 != 0) { + piVar14 = (int *)(lStack_208 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + puVar18 = local_198; + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (local_240._4_4_ < 1) { +LAB_0036bb80: + if (2 < local_1e0._4_4_) goto LAB_0036bbec; + local_240 = local_1e0; + uStack_238 = uStack_1d8; + *local_1f8 = *local_198; + local_1f8[1] = puVar18[1]; + } + else { + iVar8 = 0; + puVar20 = local_200; + do { + *(undefined4 *)puVar20 = 0; + iVar8 = iVar8 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar8 < local_240._4_4_); + if (local_240._4_4_ < 3) goto LAB_0036bb80; +LAB_0036bbec: + local_240 = CONCAT44(local_240._4_4_,(undefined4)local_1e0); + Mat::copySize((Mat *)&local_240,(Mat *)&local_1e0); + } + uStack_228 = uStack_1c8; + local_230 = local_1d0; + uStack_218 = uStack_1b8; + local_220 = local_1c0; + lStack_208 = lStack_1a8; + local_210 = local_1b0; + } + else { + local_50 = 0; + local_60 = 0x2010000; + local_58 = (Mat *)&local_240; + Mat::convertTo((Mat *)&local_180,(_OutputArray *)&local_60,uVar1,1.0,0.0); + local_c0 = CONCAT44(local_c0._4_4_,0x1010000); + local_2a0 = CONCAT44(local_2a0._4_4_,0x1010000); + local_290 = 0; + local_b0 = 0; + local_50 = 0; + local_60 = 0x2010000; + pMStack_298 = (Mat *)&local_240; + uStack_b8 = (Mat *)&local_1e0; + local_58 = (Mat *)&local_240; + p_Var11 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_2a0,(_InputArray *)&local_c0,(_OutputArray *)&local_60,p_Var11, + -1); + } + local_b0 = 0; + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_b8 = _UNK_0036be88; + local_c0 = _DAT_0036be80; + uStack_a8 = 0; + local_a0 = 0; + uStack_68 = 0; + local_70 = 0; + uStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + local_348 = iVar2; + local_344 = iVar23; + Mat::create((Mat *)&local_c0,2,&local_348,uVar1); + local_258 = &local_250; + local_290 = 0; + pMStack_298 = _UNK_0036be88; + local_2a0 = _DAT_0036be80; + iVar8 = 0; + if ((param_3 & 1U) != 0) { + iVar8 = 2; + } + local_288 = 0; + local_260 = &pMStack_298; + local_280 = 0; + local_278 = 0; + local_270 = 0; + local_268 = 0; + uStack_248 = 0; + local_250 = 0; + local_60 = 0x2010000; + local_338 = 0; + local_334 = 0; + local_348 = 0x1010000; + local_320 = 0; + local_31c = 0; + local_330 = CONCAT44(local_330._4_4_,0x1010000); + local_308 = 0; + local_304 = 0; + local_318 = CONCAT44(local_318._4_4_,0x1010000); + local_50 = 0; + local_340 = this; + local_328 = (Mat *)&local_240; + local_310 = (Mat *)&local_2a0; + local_58 = (Mat *)&local_c0; + gemm((_InputArray *)&local_348,(_InputArray *)&local_330,1.0,(_InputArray *)&local_318,0.0, + (_OutputArray *)&local_60,iVar8); + if (local_268 != 0) { + piVar14 = (int *)(local_268 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + local_268 = 0; + local_290 = 0; + local_278 = 0; + local_280 = 0; + local_288 = 0; + if (0 < local_2a0._4_4_) { + iVar8 = 0; + ppMVar16 = local_260; + do { + *(undefined4 *)ppMVar16 = 0; + iVar8 = iVar8 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar8 < local_2a0._4_4_); + } + if (local_258 != &local_250) { + fastFree(local_258); + } + if (this != (PCA *)&local_c0) { + if (lStack_88 != 0) { + piVar14 = (int *)(lStack_88 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar14 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_c0; +LAB_0036b618: + if (2 < local_c0._4_4_) goto LAB_0036b624; + *(int *)(this + 4) = local_c0._4_4_; + puVar18 = *(undefined8 **)(this + 0x48); + *(undefined4 *)(this + 8) = (undefined4)uStack_b8; + *(undefined4 *)(this + 0xc) = uStack_b8._4_4_; + *puVar18 = *local_78; + puVar18[1] = local_78[1]; + } + else { + iVar8 = 0; + puVar17 = *(undefined4 **)(this + 0x40); + do { + *puVar17 = 0; + iVar8 = iVar8 + 1; + puVar17 = puVar17 + 1; + } while (iVar8 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_c0; + if (*(int *)(this + 4) < 3) goto LAB_0036b618; +LAB_0036b624: + Mat::copySize((Mat *)this,(Mat *)&local_c0); + } + *(undefined8 *)(this + 0x18) = uStack_a8; + *(undefined8 *)(this + 0x10) = local_b0; + *(undefined8 *)(this + 0x28) = uStack_98; + *(undefined8 *)(this + 0x20) = local_a0; + *(long *)(this + 0x38) = lStack_88; + *(undefined8 *)(this + 0x30) = local_90; + } + if (0 < param_4) { + iVar8 = 0; + do { + iVar23 = iVar8 + 1; + local_388 = 0x80000000; + local_384 = 0x7fffffff; + local_380 = iVar8; + local_37c = iVar23; + Mat::Mat((Mat *)&local_60,(Mat *)this,(Range *)&local_380,(Range *)&local_388); + local_308 = 0; + local_318 = CONCAT44(local_318._4_4_,0x1010000); + local_304 = 0; + local_290 = 0; + local_2a0 = CONCAT44(local_2a0._4_4_,0x3010000); + local_310 = (Mat *)&local_60; + pMStack_298 = (Mat *)&local_60; + p_Var11 = (_InputArray *)noArray(); + normalize((_InputArray *)&local_318,(_InputOutputArray *)&local_2a0,1.0,0.0,4,-1,p_Var11); + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + puVar17 = local_20; + do { + *puVar17 = 0; + iVar8 = iVar8 + 1; + puVar17 = puVar17 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + iVar8 = iVar23; + } while (iVar23 != param_4); + } + if (lStack_88 != 0) { + piVar14 = (int *)(lStack_88 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar8 = 0; + puVar18 = local_80; + do { + iVar8 = iVar8 + 1; + *(undefined4 *)puVar18 = 0; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar8 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (lStack_1a8 != 0) { + piVar14 = (int *)(lStack_1a8 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar8 = 0; + puVar18 = local_1a0; + do { + *(undefined4 *)puVar18 = 0; + iVar8 = iVar8 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar8 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (lStack_208 != 0) { + piVar14 = (int *)(lStack_208 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar8 = 0; + puVar18 = local_200; + do { + *(undefined4 *)puVar18 = 0; + iVar8 = iVar8 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar8 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + } + } + if (iVar2 <= param_4) goto LAB_0036af20; + local_378 = 0x80000000; + local_374 = 0x7fffffff; + local_370 = 0; + local_36c = param_4; + Mat::Mat((Mat *)&local_c0,this_00,(Range *)&local_370,(Range *)&local_378); + local_1f8 = &local_1f0; + local_230 = 0; + local_200 = &uStack_238; + uStack_228 = 0; + local_220 = 0; + uStack_218 = 0; + local_210 = 0; + lStack_208 = 0; + uStack_238 = _UNK_0036be88; + local_240 = _DAT_0036be80; + local_50 = 0; + uStack_1e8 = 0; + local_1f0 = 0; + local_60 = 0x2010000; + local_58 = (Mat *)&local_240; + Mat::copyTo((Mat *)&local_c0,(_OutputArray *)&local_60); + if (this_00 != (Mat *)&local_240) { + if (lStack_208 != 0) { + piVar14 = (int *)(lStack_208 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(this + 0x98) != 0) { + piVar14 = (int *)(*(long *)(this + 0x98) + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate(this_00); + } + } + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x78) = 0; + if (*(int *)(this + 100) < 1) { + *(undefined4 *)(this + 0x60) = (undefined4)local_240; +LAB_0036ab78: + if (2 < local_240._4_4_) goto LAB_0036ab84; + puVar18 = *(undefined8 **)(this + 0xa8); + *(int *)(this + 100) = local_240._4_4_; + *(undefined4 *)(this + 0x68) = (undefined4)uStack_238; + uVar12 = *local_1f8; + *(undefined4 *)(this + 0x6c) = uStack_238._4_4_; + *puVar18 = uVar12; + puVar18[1] = local_1f8[1]; + } + else { + iVar8 = 0; + puVar17 = *(undefined4 **)(this + 0xa0); + do { + *puVar17 = 0; + iVar8 = iVar8 + 1; + puVar17 = puVar17 + 1; + } while (iVar8 < *(int *)(this + 100)); + *(undefined4 *)this_00 = (undefined4)local_240; + if (*(int *)(this + 100) < 3) goto LAB_0036ab78; +LAB_0036ab84: + Mat::copySize(this_00,(Mat *)&local_240); + } + *(undefined8 *)(this + 0x78) = uStack_228; + *(long *)(this + 0x70) = local_230; + *(undefined8 *)(this + 0x88) = uStack_218; + *(undefined8 *)(this + 0x80) = local_220; + *(long *)(this + 0x98) = lStack_208; + *(undefined8 *)(this + 0x90) = local_210; + } + if (lStack_208 != 0) { + piVar14 = (int *)(lStack_208 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + lStack_208 = 0; + local_230 = 0; + uStack_218 = 0; + local_220 = 0; + uStack_228 = 0; + if (0 < local_240._4_4_) { + iVar8 = 0; + puVar18 = local_200; + do { + *(undefined4 *)puVar18 = 0; + iVar8 = iVar8 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar8 < local_240._4_4_); + } + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + } + if (lStack_88 != 0) { + piVar14 = (int *)(lStack_88 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar8 = 0; + puVar18 = local_80; + do { + iVar8 = iVar8 + 1; + *(undefined4 *)puVar18 = 0; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar8 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + local_368 = 0x80000000; + local_364 = 0x7fffffff; + local_360 = 0; + local_35c = param_4; + Mat::Mat((Mat *)&local_60,(Mat *)this,(Range *)&local_360,(Range *)&local_368); + local_198 = &local_190; + local_1d0 = 0; + uStack_1c8 = 0; + local_1a0 = &uStack_1d8; + uStack_188 = 0; + local_190 = 0; + local_1c0 = 0; + uStack_1d8 = _UNK_0036be88; + local_1e0 = _DAT_0036be80; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_b0 = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x2010000); + uStack_b8 = (Mat *)&local_1e0; + Mat::copyTo((Mat *)&local_60,(_OutputArray *)&local_c0); + if (this == (PCA *)&local_1e0) { + lVar9 = *(long *)(this + 0x38); + } + else { + if (lStack_1a8 != 0) { + piVar14 = (int *)(lStack_1a8 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = *piVar14 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar14 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_1e0; +LAB_0036adec: + if (2 < local_1e0._4_4_) goto LAB_0036adf8; + puVar18 = *(undefined8 **)(this + 0x48); + *(int *)(this + 4) = local_1e0._4_4_; + *(undefined4 *)(this + 8) = (undefined4)uStack_1d8; + uVar12 = *local_198; + *(undefined4 *)(this + 0xc) = uStack_1d8._4_4_; + *puVar18 = uVar12; + puVar18[1] = local_198[1]; + } + else { + iVar8 = 0; + puVar17 = *(undefined4 **)(this + 0x40); + do { + *puVar17 = 0; + iVar8 = iVar8 + 1; + puVar17 = puVar17 + 1; + } while (iVar8 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_1e0; + if (*(int *)(this + 4) < 3) goto LAB_0036adec; +LAB_0036adf8: + Mat::copySize((Mat *)this,(Mat *)&local_1e0); + } + *(undefined8 *)(this + 0x18) = uStack_1c8; + *(long *)(this + 0x10) = local_1d0; + *(undefined8 *)(this + 0x28) = uStack_1b8; + *(undefined8 *)(this + 0x20) = local_1c0; + *(long *)(this + 0x38) = lStack_1a8; + *(undefined8 *)(this + 0x30) = local_1b0; + lVar9 = lStack_1a8; + } + if (lVar9 != 0) { + piVar14 = (int *)(lVar9 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar8 = 0; + puVar18 = local_1a0; + do { + *(undefined4 *)puVar18 = 0; + iVar8 = iVar8 + 1; + puVar18 = (undefined8 *)((long)puVar18 + 4); + } while (iVar8 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } +LAB_0036af20: + if (local_2c8 != 0) { + piVar14 = (int *)(local_2c8 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_300); + } + } + local_2c8 = 0; + local_2f0 = 0; + local_2d8 = 0; + local_2e0 = 0; + local_2e8 = 0; + if (0 < local_300._4_4_) { + iVar8 = 0; + ppMVar16 = local_2c0; + do { + *(undefined4 *)ppMVar16 = 0; + iVar8 = iVar8 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar8 < local_300._4_4_); + } + if (local_2b8 != &local_2b0) { + fastFree(local_2b8); + } + if (local_e8 != 0) { + piVar14 = (int *)(local_e8 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_f8 = 0; + local_100 = 0; + local_110 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar8 = 0; + piVar14 = local_e0; + do { + *piVar14 = 0; + iVar8 = iVar8 + 1; + piVar14 = piVar14 + 1; + } while (iVar8 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar14 = (int *)(local_148 + 0x14); + do { + iVar8 = *piVar14; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar5) { + *piVar14 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_17c) { + iVar8 = 0; + piVar14 = local_140; + do { + *piVar14 = 0; + iVar8 = iVar8 + 1; + piVar14 = piVar14 + 1; + } while (iVar8 < local_17c); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + return this; +} + + +================================================================== + +### FUNC 0036be90 (260 bytes) name=PCA + +/* cv::PCA::PCA(cv::_InputArray const&, cv::_InputArray const&, int, int) */ + +void __thiscall +cv::PCA::PCA(PCA *this,_InputArray *param_1,_InputArray *param_2,int param_3,int param_4) + +{ + *(undefined8 *)this = DAT_0036bfe8; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(PCA **)(this + 0x40) = this + 8; + *(PCA **)(this + 0x48) = this + 0x50; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined4 *)(this + 0x60) = 0x42ff0000; + *(undefined4 *)(this + 100) = 0; + *(undefined4 *)(this + 0x68) = 0; + *(undefined4 *)(this + 0x6c) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x78) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(PCA **)(this + 0xa0) = this + 0x68; + *(PCA **)(this + 0xa8) = this + 0xb0; + *(undefined8 *)(this + 0xb8) = 0; + *(undefined8 *)(this + 0xb0) = 0; + *(undefined4 *)(this + 0xc0) = 0x42ff0000; + *(undefined4 *)(this + 0xc4) = 0; + *(undefined4 *)(this + 200) = 0; + *(undefined4 *)(this + 0xcc) = 0; + *(undefined8 *)(this + 0xd0) = 0; + *(undefined8 *)(this + 0xd8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(PCA **)(this + 0x100) = this + 200; + *(PCA **)(this + 0x108) = this + 0x110; + *(undefined8 *)(this + 0x118) = 0; + *(undefined8 *)(this + 0x110) = 0; + operator()(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0036bff0 (1108 bytes) name=write + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::PCA::write(cv::FileStorage&) const */ + +void __thiscall cv::PCA::write(PCA *this,FileStorage *param_1) + +{ + uint uVar1; + undefined4 uVar2; + undefined1 uVar3; + undefined2 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char cVar7; + char *pcVar8; + undefined4 *puVar9; + FileStorage *pFVar10; + undefined2 *puVar11; + undefined8 *puVar12; + undefined8 local_10; + undefined8 local_8; + + cVar7 = (**(code **)(*(long *)param_1 + 0x18))(param_1); + if (cVar7 == '\0') { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0xd); + cVar7 = s_fs_isOpened___0046fd10[0xc]; + uVar2 = s_fs_isOpened___0046fd10._8_4_; + *(undefined8 *)pcVar8 = s_fs_isOpened___0046fd10._0_8_; + *(undefined4 *)(pcVar8 + 8) = uVar2; + pcVar8[0xc] = cVar7; + error(-0xd7,(String *)&local_10,"void cv::PCA::write(cv::FileStorage&) const", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0x99); + String::deallocate((String *)&local_10); + } + local_10 = 0; + local_8 = 0; + puVar9 = (undefined4 *)String::allocate((String *)&local_10,4); + *puVar9 = DAT_0046fd20; + pFVar10 = (FileStorage *)operator<<(param_1,(String *)&local_10); + String::deallocate((String *)&local_10); + local_10 = 0; + local_8 = 0; + puVar11 = (undefined2 *)String::allocate((String *)&local_10,3); + uVar3 = DAT_0046fd2a; + *puVar11 = DAT_0046fd28; + *(undefined1 *)(puVar11 + 1) = uVar3; + operator<<(pFVar10,(String *)&local_10); + String::deallocate((String *)&local_10); + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,7); + cVar7 = s_vectors_0046fd30[6]; + uVar4 = s_vectors_0046fd30._4_2_; + *(undefined4 *)pcVar8 = s_vectors_0046fd30._0_4_; + *(undefined2 *)(pcVar8 + 4) = uVar4; + pcVar8[6] = cVar7; + pFVar10 = (FileStorage *)operator<<(param_1,(String *)&local_10); + String::deallocate((String *)&local_10); + cVar7 = (**(code **)(*(long *)pFVar10 + 0x18))(pFVar10); + if (cVar7 != '\0') { + if (*(int *)(pFVar10 + 0x40) == 6) { + local_10 = 0; + local_8 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_10,0x1e); + uVar4 = DAT_0046fd54; + uVar2 = DAT_0046fd50; + uVar6 = _LAB_0046fd40; + uVar5 = _LAB_0046fd38; + puVar12[2] = DAT_0046fd48; + *(undefined4 *)(puVar12 + 3) = uVar2; + *(undefined2 *)((long)puVar12 + 0x1c) = uVar4; + *puVar12 = uVar5; + puVar12[1] = uVar6; + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const _Tp&) [with _Tp = cv::Mat]", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/persistence.hpp", + 0x428); + String::deallocate((String *)&local_10); + cv::write(pFVar10,(String *)(pFVar10 + 0x18),(Mat *)this); + uVar1 = *(uint *)(pFVar10 + 0x40); + } + else { + cv::write(pFVar10,(String *)(pFVar10 + 0x18),(Mat *)this); + uVar1 = *(uint *)(pFVar10 + 0x40); + } + if ((uVar1 >> 2 & 1) != 0) { + *(undefined4 *)(pFVar10 + 0x40) = 6; + } + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,6); + uVar4 = s_values_0046fdb0._4_2_; + *(undefined4 *)pcVar8 = s_values_0046fdb0._0_4_; + *(undefined2 *)(pcVar8 + 4) = uVar4; + pFVar10 = (FileStorage *)operator<<(param_1,(String *)&local_10); + String::deallocate((String *)&local_10); + cVar7 = (**(code **)(*(long *)pFVar10 + 0x18))(pFVar10); + if (cVar7 != '\0') { + if (*(int *)(pFVar10 + 0x40) == 6) { + local_10 = 0; + local_8 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_10,0x1e); + uVar4 = DAT_0046fd54; + uVar2 = DAT_0046fd50; + uVar6 = _LAB_0046fd40; + uVar5 = _LAB_0046fd38; + puVar12[2] = DAT_0046fd48; + *(undefined4 *)(puVar12 + 3) = uVar2; + *(undefined2 *)((long)puVar12 + 0x1c) = uVar4; + *puVar12 = uVar5; + puVar12[1] = uVar6; + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const _Tp&) [with _Tp = cv::Mat]", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/persistence.hpp", + 0x428); + String::deallocate((String *)&local_10); + cv::write(pFVar10,(String *)(pFVar10 + 0x18),(Mat *)(this + 0x60)); + uVar1 = *(uint *)(pFVar10 + 0x40); + } + else { + cv::write(pFVar10,(String *)(pFVar10 + 0x18),(Mat *)(this + 0x60)); + uVar1 = *(uint *)(pFVar10 + 0x40); + } + if ((uVar1 >> 2 & 1) != 0) { + *(undefined4 *)(pFVar10 + 0x40) = 6; + } + } + local_10 = 0; + local_8 = 0; + puVar9 = (undefined4 *)String::allocate((String *)&local_10,4); + *puVar9 = DAT_0046fdb8; + pFVar10 = (FileStorage *)operator<<(param_1,(String *)&local_10); + String::deallocate((String *)&local_10); + cVar7 = (**(code **)(*(long *)pFVar10 + 0x18))(pFVar10); + if (cVar7 != '\0') { + if (*(int *)(pFVar10 + 0x40) == 6) { + local_10 = 0; + local_8 = 0; + puVar12 = (undefined8 *)String::allocate((String *)&local_10,0x1e); + uVar4 = DAT_0046fd54; + uVar2 = DAT_0046fd50; + uVar6 = _LAB_0046fd40; + uVar5 = _LAB_0046fd38; + puVar12[2] = DAT_0046fd48; + *(undefined4 *)(puVar12 + 3) = uVar2; + *(undefined2 *)((long)puVar12 + 0x1c) = uVar4; + *puVar12 = uVar5; + puVar12[1] = uVar6; + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const _Tp&) [with _Tp = cv::Mat]", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/persistence.hpp", + 0x428); + String::deallocate((String *)&local_10); + cv::write(pFVar10,(String *)(pFVar10 + 0x18),(Mat *)(this + 0xc0)); + uVar1 = *(uint *)(pFVar10 + 0x40); + } + else { + cv::write(pFVar10,(String *)(pFVar10 + 0x18),(Mat *)(this + 0xc0)); + uVar1 = *(uint *)(pFVar10 + 0x40); + } + if ((uVar1 >> 2 & 1) != 0) { + *(undefined4 *)(pFVar10 + 0x40) = 6; + } + } + return; +} + + +================================================================== + +### FUNC 0036c500 (1028 bytes) name=read + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::PCA::read(cv::FileNode const&) */ + +void __thiscall cv::PCA::read(PCA *this,FileNode *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined2 uVar4; + undefined1 uVar5; + undefined4 uVar6; + int iVar7; + undefined8 *puVar8; + long lVar9; + long *plVar10; + char *local_140; + undefined8 local_138; + undefined8 local_130; + undefined8 local_128; + undefined8 local_120; + long alStack_118 [7]; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + long alStack_b8 [7]; + undefined8 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + undefined8 local_60; + long alStack_58 [7]; + long *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 uStack_8; + + lVar9 = *(long *)(param_1 + 8); + if (lVar9 == 0) { + local_60 = lVar9; + alStack_58[0] = lVar9; + puVar8 = (undefined8 *)String::allocate((String *)&local_60,0xb); + uVar5 = DAT_0046fdca; + uVar4 = DAT_0046fdc8; + *puVar8 = DAT_0046fdc0; + *(undefined2 *)(puVar8 + 1) = uVar4; + *(undefined1 *)((long)puVar8 + 10) = uVar5; + error(-0xd7,(String *)&local_60,"void cv::PCA::read(const cv::FileNode&)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0xa3); + String::deallocate((String *)&local_60); + } + FileNode::operator[]((char *)param_1); + local_140 = (char *)0x0; + local_138 = 0; + cv::read((FileNode *)&local_60,(String *)&local_140,(String *)&local_140); + if ((local_140 != "PCA") && + ((local_140 == (char *)0x0 || (iVar7 = strcmp(local_140,"PCA"), iVar7 != 0)))) { + local_130 = 0; + local_128 = 0; + puVar8 = (undefined8 *)String::allocate((String *)&local_130,0xd); + uVar5 = DAT_0046fddc; + uVar6 = DAT_0046fdd8; + *puVar8 = _LAB_0046fdd0; + *(undefined4 *)(puVar8 + 1) = uVar6; + *(undefined1 *)((long)puVar8 + 0xc) = uVar5; + error(-0xd7,(String *)&local_130,"void cv::PCA::read(const cv::FileNode&)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0xa5); + String::deallocate((String *)&local_130); + } + FileNode::operator[]((char *)param_1); + local_d8 = &local_d0; + local_e0 = alStack_118; + uStack_c8 = 0; + local_d0 = 0; + alStack_118[1] = 0; + alStack_118[2] = 0; + alStack_118[0] = _UNK_0036c9b8; + local_120 = _DAT_0036c9b0; + alStack_118[3] = 0; + alStack_118[4] = 0; + alStack_118[5] = 0; + alStack_118[6] = 0; + cv::read((FileNode *)&local_60,(Mat *)this,(Mat *)&local_120); + if (alStack_118[6] != 0) { + piVar1 = (int *)(alStack_118[6] + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + alStack_118[6] = 0; + alStack_118[1] = 0; + alStack_118[4] = 0; + alStack_118[3] = 0; + alStack_118[2] = 0; + if (0 < local_120._4_4_) { + iVar7 = 0; + plVar10 = local_e0; + do { + *(undefined4 *)plVar10 = 0; + iVar7 = iVar7 + 1; + plVar10 = (long *)((long)plVar10 + 4); + } while (iVar7 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + FileNode::operator[]((char *)param_1); + alStack_b8[1] = 0; + local_78 = &local_70; + local_80 = alStack_b8; + uStack_68 = 0; + local_70 = 0; + alStack_b8[0] = _UNK_0036c9b8; + local_c0 = _DAT_0036c9b0; + alStack_b8[2] = 0; + alStack_b8[3] = 0; + alStack_b8[4] = 0; + alStack_b8[5] = 0; + alStack_b8[6] = 0; + cv::read((FileNode *)&local_60,(Mat *)(this + 0x60),(Mat *)&local_c0); + if (alStack_b8[6] != 0) { + piVar1 = (int *)(alStack_b8[6] + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + alStack_b8[6] = 0; + alStack_b8[1] = 0; + alStack_b8[4] = 0; + alStack_b8[3] = 0; + alStack_b8[2] = 0; + if (0 < local_c0._4_4_) { + iVar7 = 0; + plVar10 = local_80; + do { + *(undefined4 *)plVar10 = 0; + iVar7 = iVar7 + 1; + plVar10 = (long *)((long)plVar10 + 4); + } while (iVar7 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + FileNode::operator[]((char *)param_1); + local_18 = &local_10; + local_20 = alStack_58; + alStack_58[0] = _UNK_0036c9b8; + local_60 = _DAT_0036c9b0; + alStack_58[1] = 0; + alStack_58[2] = 0; + alStack_58[3] = 0; + alStack_58[4] = 0; + alStack_58[5] = 0; + alStack_58[6] = 0; + uStack_8 = 0; + local_10 = 0; + cv::read((FileNode *)&local_c0,(Mat *)(this + 0xc0),(Mat *)&local_60); + if (alStack_58[6] != 0) { + piVar1 = (int *)(alStack_58[6] + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + alStack_58[6] = 0; + alStack_58[1] = 0; + alStack_58[4] = 0; + alStack_58[3] = 0; + alStack_58[2] = 0; + if (0 < local_60._4_4_) { + iVar7 = 0; + plVar10 = local_20; + do { + *(undefined4 *)plVar10 = 0; + iVar7 = iVar7 + 1; + plVar10 = (long *)((long)plVar10 + 4); + } while (iVar7 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + String::deallocate((String *)&local_140); + return; +} + + +================================================================== + +### FUNC 0036c9c0 (6568 bytes) name=operator() + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::PCA::TEMPNAMEPLACEHOLDERVALUE(cv::_InputArray const&, cv::_InputArray const&, int, double) */ + +PCA * __thiscall +cv::PCA::operator()(PCA *this,_InputArray *param_1,_InputArray *param_2,int param_3,double param_4) + +{ + Mat *this_00; + uint uVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined2 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined4 uVar9; + int iVar10; + int iVar11; + char *pcVar12; + long lVar13; + undefined8 uVar14; + _InputArray *p_Var15; + Mat **ppMVar16; + long lVar17; + double *pdVar18; + double *pdVar19; + undefined8 *puVar20; + Mat *pMVar21; + _OutputArray **pp_Var22; + undefined4 *puVar23; + float *pfVar24; + float *pfVar25; + long *plVar26; + int *piVar27; + int iVar28; + int iVar29; + int iVar30; + int iVar31; + int iVar32; + float fVar33; + double dVar34; + float fVar35; + double dVar36; + undefined4 local_450; + undefined4 local_44c; + int local_448; + int local_444; + undefined4 local_440; + undefined4 local_43c; + undefined4 local_438; + int local_434; + undefined4 local_430; + undefined4 local_42c; + undefined4 local_428; + int local_424; + int local_420; + int local_41c; + int local_418; + int local_414; + int local_410; + int local_40c; + int local_408; + int local_404; + int local_400; + int local_3fc; + undefined8 local_3f8; + undefined8 local_3f0; + undefined8 local_3e8; + undefined8 local_3e0; + undefined8 local_3d8; + PCA *local_3d0; + undefined4 local_3c8; + undefined4 local_3c4; + undefined8 local_3c0; + Mat *pMStack_3b8; + undefined8 local_3b0; + undefined8 local_3a8; + undefined8 local_3a0; + undefined8 local_398; + undefined8 local_390; + long local_388; + Mat **local_380; + undefined8 *local_378; + undefined8 local_370; + undefined8 uStack_368; + undefined8 local_360; + Mat *pMStack_358; + undefined8 local_350; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + long local_328; + Mat **local_320; + undefined8 *local_318; + undefined8 local_310; + undefined8 uStack_308; + undefined8 local_300; + undefined8 uStack_2f8; + undefined8 local_2f0; + undefined8 uStack_2e8; + undefined8 local_2e0; + undefined8 uStack_2d8; + undefined8 local_2d0; + long lStack_2c8; + undefined8 *local_2c0; + undefined8 *local_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + undefined8 local_2a0; + undefined8 uStack_298; + undefined8 local_290; + undefined8 uStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + undefined8 *local_260; + undefined8 *local_258; + undefined8 local_250; + undefined8 uStack_248; + uint local_240; + int local_23c; + int local_238; + int local_234; + undefined8 local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + undefined8 local_210; + long local_208; + int *local_200; + undefined8 *local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined4 local_1e0; + int local_1dc; + int local_1d8; + int local_1d4; + long local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + int *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined8 local_180; + Mat *pMStack_178; + long local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + Mat **local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined4 local_120; + int local_11c; + Mat *local_118; + long local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined8 local_c0; + undefined8 uStack_b8; + float *local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined8 *local_80; + long *local_78; + long local_70; + undefined8 uStack_68; + undefined4 local_60; + int local_5c; + _OutputArray *local_58; + double *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + _OutputArray **local_20; + long *local_18; + long local_10; + undefined8 local_8; + + iVar10 = _InputArray::kind(param_1); + if (iVar10 == 0x10000) { + pMVar21 = *(Mat **)(param_1 + 8); + local_200 = &local_238; + local_1f8 = &local_1f0; + local_240 = *(uint *)pMVar21; + local_23c = *(int *)(pMVar21 + 4); + local_238 = *(int *)(pMVar21 + 8); + local_234 = *(int *)(pMVar21 + 0xc); + local_230 = *(undefined8 *)(pMVar21 + 0x10); + local_228 = *(undefined8 *)(pMVar21 + 0x18); + local_220 = *(undefined8 *)(pMVar21 + 0x20); + local_218 = *(undefined8 *)(pMVar21 + 0x28); + local_210 = *(undefined8 *)(pMVar21 + 0x30); + local_208 = *(long *)(pMVar21 + 0x38); + local_1e8 = 0; + local_1f0 = 0; + if (local_208 != 0) { + piVar27 = (int *)(local_208 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = *piVar27 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar21 + 4) < 3) { + local_1f0 = **(undefined8 **)(pMVar21 + 0x48); + local_1e8 = (*(undefined8 **)(pMVar21 + 0x48))[1]; + } + else { + local_23c = 0; + Mat::copySize((Mat *)&local_240,pMVar21); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar10 = _InputArray::kind(param_2); + if (iVar10 == 0x10000) { + pMVar21 = *(Mat **)(param_2 + 8); + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1e0 = *(undefined4 *)pMVar21; + local_1dc = *(int *)(pMVar21 + 4); + local_1d8 = *(int *)(pMVar21 + 8); + local_1d4 = *(int *)(pMVar21 + 0xc); + local_1d0 = *(long *)(pMVar21 + 0x10); + local_1c8 = *(undefined8 *)(pMVar21 + 0x18); + local_1c0 = *(undefined8 *)(pMVar21 + 0x20); + local_1b8 = *(undefined8 *)(pMVar21 + 0x28); + local_1b0 = *(undefined8 *)(pMVar21 + 0x30); + local_1a8 = *(long *)(pMVar21 + 0x38); + local_188 = 0; + local_190 = 0; + if (local_1a8 != 0) { + piVar27 = (int *)(local_1a8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = *piVar27 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (2 < *(int *)(pMVar21 + 4)) { + local_1dc = 0; + Mat::copySize((Mat *)&local_1e0,pMVar21); + goto LAB_0036ca54; + } + local_190 = **(undefined8 **)(pMVar21 + 0x48); + local_188 = (*(undefined8 **)(pMVar21 + 0x48))[1]; + } + else { + _InputArray::getMat_((int)param_2); +LAB_0036ca54: + } + if ((local_240 >> 3 & 0x1ff) != 0) { + local_3f8 = 0; + local_3f0 = 0; + pcVar12 = (char *)String::allocate((String *)&local_3f8,0x14); + uVar5 = s_data_channels______1_0046fca0._8_8_; + uVar14 = s_data_channels______1_0046fca0._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s_data_channels______1_0046fca0._16_4_; + *(undefined8 *)pcVar12 = uVar14; + *(undefined8 *)(pcVar12 + 8) = uVar5; + error(-0xd7,(String *)&local_3f8, + "cv::PCA& cv::PCA::operator()(cv::InputArray, cv::InputArray, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0xd1); + String::deallocate((String *)&local_3f8); + } + if ((param_3 & 1U) == 0) { + iVar32 = 0xd; + iVar28 = 1; + iVar11 = 0xc; + iVar10 = local_238; + iVar29 = local_234; + iVar31 = local_234; + } + else { + iVar32 = 0x15; + iVar11 = 0x14; + iVar10 = local_234; + iVar29 = local_238; + iVar28 = local_238; + iVar31 = 1; + } + if ((param_4 <= 0.0) || (1.0 < param_4)) { + local_3e8 = 0; + local_3e0 = 0; + pcVar12 = (char *)String::allocate((String *)&local_3e8,0x2d); + cVar3 = s_retainedVariance_>_0____retained_0046fde0[0x2c]; + uVar9 = s_retainedVariance_>_0____retained_0046fde0._40_4_; + uVar8 = s_retainedVariance_>_0____retained_0046fde0._24_8_; + uVar7 = s_retainedVariance_>_0____retained_0046fde0._16_8_; + uVar5 = s_retainedVariance_>_0____retained_0046fde0._8_8_; + uVar14 = s_retainedVariance_>_0____retained_0046fde0._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_retainedVariance_>_0____retained_0046fde0._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar9; + pcVar12[0x2c] = cVar3; + *(undefined8 *)pcVar12 = uVar14; + *(undefined8 *)(pcVar12 + 8) = uVar5; + *(undefined8 *)(pcVar12 + 0x10) = uVar7; + *(undefined8 *)(pcVar12 + 0x18) = uVar8; + error(-0xd7,(String *)&local_3e8, + "cv::PCA& cv::PCA::operator()(cv::InputArray, cv::InputArray, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0xe1); + String::deallocate((String *)&local_3e8); + } + iVar30 = iVar10; + if (iVar29 <= iVar10) { + iVar30 = iVar29; + iVar11 = iVar32; + } + pMVar21 = (Mat *)(this + 0xc0); + uVar1 = local_240 & 7; + if (uVar1 < 5) { + uVar1 = 5; + } + if ((((2 < *(int *)(this + 0xc4)) || (iVar28 != *(int *)(this + 200))) || + (iVar31 != *(int *)(this + 0xcc))) || + (((*(uint *)(this + 0xc0) & 0xfff) != uVar1 || (*(long *)(this + 0xd0) == 0)))) { + local_420 = iVar28; + local_41c = iVar31; + Mat::create(pMVar21,2,&local_420,uVar1); + } + local_378 = &local_370; + local_380 = &pMStack_3b8; + uStack_368 = 0; + local_370 = 0; + pMStack_3b8 = _UNK_0036e5a8; + local_3c0 = _DAT_0036e5a0; + local_3b0 = 0; + local_3a8 = 0; + local_3a0 = 0; + local_398 = 0; + local_390 = 0; + local_388 = 0; + local_418 = iVar30; + local_414 = iVar30; + Mat::create((Mat *)&local_3c0,2,&local_418,uVar1); + if (local_1d0 != 0) { + if (local_1dc < 3) { + lVar13 = (long)local_1d4 * (long)local_1d8; + } + else { + lVar17 = 0; + lVar13 = 1; + do { + piVar27 = local_1a0 + lVar17; + lVar17 = lVar17 + 1; + lVar13 = lVar13 * *piVar27; + } while ((int)lVar17 < local_1dc); + } + if (lVar13 != 0) { + if ((local_1a0[1] != iVar31) || (*local_1a0 != iVar28)) { + local_3d8 = 0; + local_3d0 = (PCA *)0x0; + pcVar12 = (char *)String::allocate((String *)&local_3d8,0x17); + cVar3 = s__mean_size______mean_sz_0046fcf8[0x16]; + uVar6 = s__mean_size______mean_sz_0046fcf8._20_2_; + uVar5 = s__mean_size______mean_sz_0046fcf8._8_8_; + uVar14 = s__mean_size______mean_sz_0046fcf8._0_8_; + *(undefined4 *)(pcVar12 + 0x10) = s__mean_size______mean_sz_0046fcf8._16_4_; + *(undefined2 *)(pcVar12 + 0x14) = uVar6; + pcVar12[0x16] = cVar3; + *(undefined8 *)pcVar12 = uVar14; + *(undefined8 *)(pcVar12 + 8) = uVar5; + error(-0xd7,(String *)&local_3d8, + "cv::PCA& cv::PCA::operator()(cv::InputArray, cv::InputArray, int, double)", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0xf1); + String::deallocate((String *)&local_3d8); + } + local_50 = (double *)0x0; + local_60 = 0x2010000; + local_58 = (_OutputArray *)pMVar21; + Mat::convertTo((Mat *)&local_1e0,(_OutputArray *)&local_60,uVar1,1.0,0.0); + } + } + local_120 = 0x1010000; + local_c0._0_4_ = 0x2010000; + local_110 = 0; + local_b0 = (float *)0x0; + local_50 = (double *)0x0; + local_60 = 0x3010000; + local_118 = (Mat *)&local_240; + uStack_b8 = (Mat *)&local_3c0; + local_58 = (_OutputArray *)pMVar21; + calcCovarMatrix((_InputArray *)&local_120,(_OutputArray *)&local_c0,(_InputOutputArray *)&local_60 + ,iVar11,uVar1); + this_00 = (Mat *)(this + 0x60); + local_110 = 0; + local_120 = 0x1010000; + local_b0 = (float *)0x0; + local_c0 = CONCAT44(local_c0._4_4_,0x2010000); + local_50 = (double *)0x0; + local_60 = 0x2010000; + local_118 = (Mat *)&local_3c0; + uStack_b8 = this_00; + local_58 = (_OutputArray *)this; + eigen((_InputArray *)&local_120,(_OutputArray *)&local_c0,(_OutputArray *)&local_60); + if (iVar10 < iVar29) { + local_138 = &local_130; + local_140 = &pMStack_178; + uVar2 = 0; + if (*(int *)(this + 200) != 0) { + uVar2 = local_238 / *(int *)(this + 200); + } + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + iVar10 = 0; + if (*(int *)(this + 0xcc) != 0) { + iVar10 = local_234 / *(int *)(this + 0xcc); + } + pMStack_178 = _UNK_0036e5a8; + local_180 = _DAT_0036e5a0; + uStack_128 = 0; + local_130 = 0; + repeat((cv *)pMVar21,(Mat *)(ulong)uVar2,iVar10,(int)local_138); + if (((local_240 & 0xfff) == uVar1) && (local_110 != *(long *)(this + 0xd0))) { + local_c0 = CONCAT44(local_c0._4_4_,0x1010000); + local_2a0 = CONCAT44(local_2a0._4_4_,0x1010000); + local_290 = 0; + local_b0 = (float *)0x0; + local_50 = (double *)0x0; + local_60 = 0x2010000; + uStack_298 = (Mat *)&local_240; + uStack_b8 = (Mat *)&local_120; + local_58 = (_OutputArray *)&local_120; + p_Var15 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_2a0,(_InputArray *)&local_c0,(_OutputArray *)&local_60,p_Var15, + -1); + if (lStack_e8 != 0) { + piVar27 = (int *)(lStack_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = *piVar27 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_148 != 0) { + piVar27 = (int *)(lStack_148 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + puVar20 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_0036e28c: + if (2 < local_11c) goto LAB_0036e2f8; + local_180 = CONCAT44(local_11c,local_120); + pMStack_178 = local_118; + *local_138 = *local_d8; + local_138[1] = puVar20[1]; + } + else { + iVar10 = 0; + ppMVar16 = local_140; + do { + *(undefined4 *)ppMVar16 = 0; + iVar10 = iVar10 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar10 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_0036e28c; +LAB_0036e2f8: + local_180 = CONCAT44(local_180._4_4_,local_120); + Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_168 = uStack_108; + local_170 = local_110; + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + } + else { + local_50 = (double *)0x0; + local_60 = 0x2010000; + local_58 = (_OutputArray *)&local_180; + Mat::convertTo((Mat *)&local_240,(_OutputArray *)&local_60,uVar1,1.0,0.0); + local_c0 = CONCAT44(local_c0._4_4_,0x1010000); + local_2a0 = CONCAT44(local_2a0._4_4_,0x1010000); + local_290 = 0; + local_b0 = (float *)0x0; + local_50 = (double *)0x0; + local_60 = 0x2010000; + uStack_298 = (Mat *)&local_180; + uStack_b8 = (Mat *)&local_120; + local_58 = (_OutputArray *)&local_180; + p_Var15 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_2a0,(_InputArray *)&local_c0,(_OutputArray *)&local_60,p_Var15, + -1); + } + local_b0 = (float *)0x0; + local_78 = &local_70; + local_80 = &uStack_b8; + uStack_b8 = _UNK_0036e5a8; + local_c0 = _DAT_0036e5a0; + uStack_a8 = 0; + local_a0 = 0; + uStack_68 = 0; + local_70 = 0; + uStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + local_410 = iVar30; + local_40c = iVar29; + Mat::create((Mat *)&local_c0,2,&local_410,uVar1); + local_318 = &local_310; + local_320 = &pMStack_358; + pMStack_358 = _UNK_0036e5a8; + local_360 = _DAT_0036e5a0; + iVar10 = 0; + if ((param_3 & 1U) != 0) { + iVar10 = 2; + } + local_3d8 = CONCAT44(local_3d8._4_4_,0x1010000); + local_300 = CONCAT44(local_300._4_4_,0x1010000); + uStack_308 = 0; + local_310 = 0; + local_2a0 = CONCAT44(local_2a0._4_4_,0x1010000); + local_3c8 = 0; + local_3c4 = 0; + local_2f0 = 0; + local_290 = 0; + local_350 = 0; + local_348 = 0; + local_340 = 0; + local_338 = 0; + local_330 = 0; + local_328 = 0; + local_50 = (double *)0x0; + local_60 = 0x2010000; + local_3d0 = this; + uStack_2f8 = (Mat *)&local_180; + uStack_298 = (Mat *)&local_360; + local_58 = (_OutputArray *)&local_c0; + gemm((_InputArray *)&local_3d8,(_InputArray *)&local_300,1.0,(_InputArray *)&local_2a0,0.0, + (_OutputArray *)&local_60,iVar10); + if (local_328 != 0) { + piVar27 = (int *)(local_328 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_360); + } + } + local_328 = 0; + local_350 = 0; + local_338 = 0; + local_340 = 0; + local_348 = 0; + if (0 < local_360._4_4_) { + iVar10 = 0; + ppMVar16 = local_320; + do { + *(undefined4 *)ppMVar16 = 0; + iVar10 = iVar10 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar10 < local_360._4_4_); + } + if (local_318 != &local_310) { + fastFree(local_318); + } + if (this == (PCA *)&local_c0) { + iVar10 = *(int *)(this + 8); + } + else { + if (lStack_88 != 0) { + piVar27 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = *piVar27 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar27 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_c0; +LAB_0036db90: + if (2 < local_c0._4_4_) goto LAB_0036db9c; + plVar26 = *(long **)(this + 0x48); + *(int *)(this + 4) = local_c0._4_4_; + *(undefined4 *)(this + 0xc) = uStack_b8._4_4_; + *(int *)(this + 8) = (int)uStack_b8; + *plVar26 = *local_78; + plVar26[1] = local_78[1]; + iVar10 = (int)uStack_b8; + } + else { + iVar10 = 0; + puVar23 = *(undefined4 **)(this + 0x40); + do { + *puVar23 = 0; + iVar10 = iVar10 + 1; + puVar23 = puVar23 + 1; + } while (iVar10 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_c0; + if (*(int *)(this + 4) < 3) goto LAB_0036db90; +LAB_0036db9c: + Mat::copySize((Mat *)this,(Mat *)&local_c0); + iVar10 = *(int *)(this + 8); + } + *(undefined8 *)(this + 0x18) = uStack_a8; + *(float **)(this + 0x10) = local_b0; + *(undefined8 *)(this + 0x28) = uStack_98; + *(undefined8 *)(this + 0x20) = local_a0; + *(long *)(this + 0x38) = lStack_88; + *(undefined8 *)(this + 0x30) = local_90; + } + if (0 < iVar10) { + iVar10 = 0; + do { + iVar29 = iVar10 + 1; + local_450 = 0x80000000; + local_44c = 0x7fffffff; + local_448 = iVar10; + local_444 = iVar29; + Mat::Mat((Mat *)&local_60,(Mat *)this,(Range *)&local_448,(Range *)&local_450); + local_300 = CONCAT44(local_300._4_4_,0x1010000); + local_2f0 = 0; + local_290 = 0; + local_2a0 = CONCAT44(local_2a0._4_4_,0x3010000); + uStack_2f8 = (Mat *)&local_60; + uStack_298 = (Mat *)&local_60; + p_Var15 = (_InputArray *)noArray(); + normalize((_InputArray *)&local_300,(_InputOutputArray *)&local_2a0,1.0,0.0,4,-1,p_Var15); + if (local_28 != 0) { + piVar27 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (double *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + pp_Var22 = local_20; + do { + *(undefined4 *)pp_Var22 = 0; + iVar10 = iVar10 + 1; + pp_Var22 = (_OutputArray **)((long)pp_Var22 + 4); + } while (iVar10 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + iVar10 = iVar29; + } while (iVar29 < *(int *)(this + 8)); + } + if (lStack_88 != 0) { + piVar27 = (int *)(lStack_88 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = (float *)0x0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar10 = 0; + puVar20 = local_80; + do { + iVar10 = iVar10 + 1; + *(undefined4 *)puVar20 = 0; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar10 < local_c0._4_4_); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar27 = (int *)(lStack_e8 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + puVar23 = local_e0; + do { + *puVar23 = 0; + iVar10 = iVar10 + 1; + puVar23 = puVar23 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + if (lStack_148 != 0) { + piVar27 = (int *)(lStack_148 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar10 = 0; + ppMVar16 = local_140; + do { + *(undefined4 *)ppMVar16 = 0; + iVar10 = iVar10 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar10 < local_180._4_4_); + } + if (local_138 == &local_130) goto LAB_0036cda8; + fastFree(local_138); + piVar27 = *(int **)(this + 0xa0); + if (uVar1 != 5) goto LAB_0036cdb8; +LAB_0036de74: + local_404 = piVar27[1]; + local_408 = *piVar27; + local_80 = &uStack_b8; + local_78 = &local_70; + local_c0 = 0x42ff0000; + uStack_b8 = (Mat *)0x0; + local_b0 = (float *)0x0; + uStack_a8 = 0; + local_a0 = 0; + uStack_98 = 0; + local_90 = 0; + lStack_88 = 0; + uStack_68 = 0; + local_70 = 0; + Mat::create((Mat *)&local_c0,2,&local_408,uVar1); + if (0 < (int)uStack_b8) { + iVar10 = 0; + lVar13 = *local_78; + pfVar25 = local_b0; + do { + while (*pfVar25 = 0.0, iVar10 < 0) { + iVar10 = iVar10 + 1; + pfVar25 = (float *)((long)pfVar25 + lVar13); + if (iVar10 == (int)uStack_b8) goto LAB_0036df4c; + } + iVar10 = iVar10 + 1; + fVar33 = 0.0; + pfVar24 = *(float **)(this + 0x70); + iVar29 = 0; + lVar17 = **(long **)(this + 0xa8); + do { + fVar35 = *pfVar24; + iVar29 = iVar29 + 1; + pfVar24 = (float *)((long)pfVar24 + lVar17); + fVar33 = fVar33 + fVar35; + *pfVar25 = fVar33; + } while (iVar10 != iVar29); + pfVar25 = (float *)((long)pfVar25 + lVar13); + } while (iVar10 != (int)uStack_b8); + } +LAB_0036df4c: + iVar10 = *(int *)(this + 0x68); + if (iVar10 < 1) { +LAB_0036e340: + iVar29 = 2; + } + else { + fVar33 = *(float *)((long)local_b0 + (long)((int)uStack_b8 + -1) * *local_78); + if (param_4 < (double)(*local_b0 / fVar33)) goto LAB_0036e340; + iVar11 = 0; + pfVar25 = local_b0; + do { + pfVar25 = (float *)((long)pfVar25 + *local_78); + iVar11 = iVar11 + 1; + iVar29 = iVar10; + if (iVar11 == iVar10) break; + iVar29 = iVar11; + } while ((double)(*pfVar25 / fVar33) <= param_4); + if (iVar29 < 2) { + iVar29 = 2; + } + } + if (lStack_88 != 0) { + piVar27 = (int *)(lStack_88 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = (float *)0x0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_c0._4_4_) { + iVar10 = 0; + puVar20 = local_80; + do { + iVar10 = iVar10 + 1; + *(undefined4 *)puVar20 = 0; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar10 < local_c0._4_4_); + } + plVar26 = local_78; + if (local_78 != &local_70) { +LAB_0036cf70: + fastFree(plVar26); + } + } + else { +LAB_0036cda8: + piVar27 = *(int **)(this + 0xa0); + if (uVar1 == 5) goto LAB_0036de74; +LAB_0036cdb8: + local_3fc = piVar27[1]; + local_400 = *piVar27; + local_20 = &local_58; + local_18 = &local_10; + local_60 = 0x42ff0000; + local_5c = 0; + local_58 = (_OutputArray *)0x0; + local_50 = (double *)0x0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_28 = 0; + local_8 = 0; + local_10 = 0; + Mat::create((Mat *)&local_60,2,&local_400,6); + if (0 < (int)local_58) { + iVar10 = 0; + lVar13 = *local_18; + pdVar19 = local_50; + do { + while (*pdVar19 = 0.0, iVar10 < 0) { + iVar10 = iVar10 + 1; + pdVar19 = (double *)((long)pdVar19 + lVar13); + if (iVar10 == (int)local_58) goto LAB_0036ce8c; + } + iVar10 = iVar10 + 1; + dVar34 = 0.0; + pdVar18 = *(double **)(this + 0x70); + iVar29 = 0; + lVar17 = **(long **)(this + 0xa8); + do { + dVar36 = *pdVar18; + iVar29 = iVar29 + 1; + pdVar18 = (double *)((long)pdVar18 + lVar17); + dVar34 = dVar34 + dVar36; + *pdVar19 = dVar34; + } while (iVar29 != iVar10); + pdVar19 = (double *)((long)pdVar19 + lVar13); + } while (iVar10 != (int)local_58); + } +LAB_0036ce8c: + iVar10 = *(int *)(this + 0x68); + if (iVar10 < 1) { +LAB_0036e32c: + iVar29 = 2; + } + else { + dVar34 = *(double *)((long)local_50 + (long)((int)local_58 + -1) * *local_18); + if (param_4 < *local_50 / dVar34) goto LAB_0036e32c; + iVar11 = 0; + pdVar19 = local_50; + do { + pdVar19 = (double *)((long)pdVar19 + *local_18); + iVar11 = iVar11 + 1; + iVar29 = iVar10; + if (iVar11 == iVar10) break; + iVar29 = iVar11; + } while (*pdVar19 / dVar34 <= param_4); + if (iVar29 < 2) { + iVar29 = 2; + } + } + if (local_28 != 0) { + piVar27 = (int *)(local_28 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (double *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar10 = 0; + pp_Var22 = local_20; + do { + *(undefined4 *)pp_Var22 = 0; + iVar10 = iVar10 + 1; + pp_Var22 = (_OutputArray **)((long)pp_Var22 + 4); + } while (iVar10 < local_5c); + } + plVar26 = local_18; + if (local_18 != &local_10) goto LAB_0036cf70; + } + local_440 = 0x80000000; + local_43c = 0x7fffffff; + local_438 = 0; + local_434 = iVar29; + Mat::Mat((Mat *)&local_180,this_00,(Range *)&local_438,(Range *)&local_440); + local_2b8 = &local_2b0; + local_2f0 = 0; + local_2c0 = &uStack_2f8; + uStack_2e8 = 0; + local_2e0 = 0; + uStack_2d8 = 0; + local_2d0 = 0; + lStack_2c8 = 0; + uStack_2f8 = _UNK_0036e5a8; + local_300 = _DAT_0036e5a0; + local_50 = (double *)0x0; + uStack_2a8 = 0; + local_2b0 = 0; + local_60 = 0x2010000; + local_58 = (_OutputArray *)&local_300; + Mat::copyTo((Mat *)&local_180,(_OutputArray *)&local_60); + if (this_00 != (Mat *)&local_300) { + if (lStack_2c8 != 0) { + piVar27 = (int *)(lStack_2c8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = *piVar27 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x98) != 0) { + piVar27 = (int *)(*(long *)(this + 0x98) + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate(this_00); + } + } + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x78) = 0; + if (*(int *)(this + 100) < 1) { + *(undefined4 *)(this + 0x60) = (undefined4)local_300; +LAB_0036d0b4: + if (2 < local_300._4_4_) goto LAB_0036d680; + puVar20 = *(undefined8 **)(this + 0xa8); + *(int *)(this + 100) = local_300._4_4_; + *(undefined4 *)(this + 0x68) = (undefined4)uStack_2f8; + uVar14 = *local_2b8; + *(undefined4 *)(this + 0x6c) = uStack_2f8._4_4_; + *puVar20 = uVar14; + puVar20[1] = local_2b8[1]; + } + else { + iVar10 = 0; + puVar23 = *(undefined4 **)(this + 0xa0); + do { + *puVar23 = 0; + iVar10 = iVar10 + 1; + puVar23 = puVar23 + 1; + } while (iVar10 < *(int *)(this + 100)); + *(undefined4 *)this_00 = (undefined4)local_300; + if (*(int *)(this + 100) < 3) goto LAB_0036d0b4; +LAB_0036d680: + Mat::copySize(this_00,(Mat *)&local_300); + } + *(undefined8 *)(this + 0x78) = uStack_2e8; + *(undefined8 *)(this + 0x70) = local_2f0; + *(undefined8 *)(this + 0x88) = uStack_2d8; + *(undefined8 *)(this + 0x80) = local_2e0; + *(long *)(this + 0x98) = lStack_2c8; + *(undefined8 *)(this + 0x90) = local_2d0; + } + if (lStack_2c8 != 0) { + piVar27 = (int *)(lStack_2c8 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_300); + } + } + lStack_2c8 = 0; + local_2f0 = 0; + uStack_2d8 = 0; + local_2e0 = 0; + uStack_2e8 = 0; + if (0 < local_300._4_4_) { + iVar10 = 0; + puVar20 = local_2c0; + do { + *(undefined4 *)puVar20 = 0; + iVar10 = iVar10 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar10 < local_300._4_4_); + } + if (local_2b8 != &local_2b0) { + fastFree(local_2b8); + } + if (lStack_148 != 0) { + piVar27 = (int *)(lStack_148 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar10 = 0; + ppMVar16 = local_140; + do { + *(undefined4 *)ppMVar16 = 0; + iVar10 = iVar10 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar10 < local_180._4_4_); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + local_430 = 0x80000000; + local_42c = 0x7fffffff; + local_428 = 0; + local_424 = iVar29; + Mat::Mat((Mat *)&local_120,(Mat *)this,(Range *)&local_428,(Range *)&local_430); + local_258 = &local_250; + local_290 = 0; + local_260 = &uStack_298; + uStack_288 = 0; + local_280 = 0; + uStack_278 = 0; + local_270 = 0; + lStack_268 = 0; + uStack_298 = _UNK_0036e5a8; + local_2a0 = _DAT_0036e5a0; + local_50 = (double *)0x0; + uStack_248 = 0; + local_250 = 0; + local_60 = 0x2010000; + local_58 = (_OutputArray *)&local_2a0; + Mat::copyTo((Mat *)&local_120,(_OutputArray *)&local_60); + if (this == (PCA *)&local_2a0) { + lVar13 = *(long *)(this + 0x38); + goto LAB_0036d39c; + } + if (lStack_268 != 0) { + piVar27 = (int *)(lStack_268 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = *piVar27 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x38) != 0) { + piVar27 = (int *)(*(long *)(this + 0x38) + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)this); + } + } + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = (undefined4)local_2a0; +LAB_0036d330: + if (2 < local_2a0._4_4_) goto LAB_0036d670; + puVar20 = *(undefined8 **)(this + 0x48); + *(int *)(this + 4) = local_2a0._4_4_; + *(undefined4 *)(this + 8) = (undefined4)uStack_298; + uVar14 = *local_258; + *(undefined4 *)(this + 0xc) = uStack_298._4_4_; + *puVar20 = uVar14; + puVar20[1] = local_258[1]; + } + else { + iVar10 = 0; + puVar23 = *(undefined4 **)(this + 0x40); + do { + *puVar23 = 0; + iVar10 = iVar10 + 1; + puVar23 = puVar23 + 1; + } while (iVar10 < *(int *)(this + 4)); + *(undefined4 *)this = (undefined4)local_2a0; + if (*(int *)(this + 4) < 3) goto LAB_0036d330; +LAB_0036d670: + Mat::copySize((Mat *)this,(Mat *)&local_2a0); + } + *(undefined8 *)(this + 0x18) = uStack_288; + *(undefined8 *)(this + 0x10) = local_290; + *(undefined8 *)(this + 0x28) = uStack_278; + *(undefined8 *)(this + 0x20) = local_280; + *(long *)(this + 0x38) = lStack_268; + *(undefined8 *)(this + 0x30) = local_270; + lVar13 = lStack_268; +LAB_0036d39c: + if (lVar13 != 0) { + piVar27 = (int *)(lVar13 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = 0; + uStack_278 = 0; + local_280 = 0; + uStack_288 = 0; + if (0 < local_2a0._4_4_) { + iVar10 = 0; + puVar20 = local_260; + do { + *(undefined4 *)puVar20 = 0; + iVar10 = iVar10 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar10 < local_2a0._4_4_); + } + if (local_258 != &local_250) { + fastFree(local_258); + } + if (lStack_e8 != 0) { + piVar27 = (int *)(lStack_e8 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar10 = 0; + do { + *local_e0 = 0; + iVar10 = iVar10 + 1; + local_e0 = local_e0 + 1; + } while (iVar10 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + if (local_388 != 0) { + piVar27 = (int *)(local_388 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_3c0); + } + } + local_388 = 0; + local_3b0 = 0; + local_398 = 0; + local_3a0 = 0; + local_3a8 = 0; + if (0 < local_3c0._4_4_) { + iVar10 = 0; + ppMVar16 = local_380; + do { + *(undefined4 *)ppMVar16 = 0; + iVar10 = iVar10 + 1; + ppMVar16 = (Mat **)((long)ppMVar16 + 4); + } while (iVar10 < local_3c0._4_4_); + } + if (local_378 != &local_370) { + fastFree(local_378); + } + if (local_1a8 != 0) { + piVar27 = (int *)(local_1a8 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1dc) { + iVar10 = 0; + piVar27 = local_1a0; + do { + *piVar27 = 0; + iVar10 = iVar10 + 1; + piVar27 = piVar27 + 1; + } while (iVar10 < local_1dc); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (local_208 != 0) { + piVar27 = (int *)(local_208 + 0x14); + do { + iVar10 = *piVar27; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar27,0x10); + if (bVar4) { + *piVar27 = iVar10 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + local_208 = 0; + local_230 = 0; + local_218 = 0; + local_220 = 0; + local_228 = 0; + if (0 < local_23c) { + iVar10 = 0; + piVar27 = local_200; + do { + *piVar27 = 0; + iVar10 = iVar10 + 1; + piVar27 = piVar27 + 1; + } while (iVar10 < local_23c); + } + if (local_1f8 != &local_1f0) { + fastFree(local_1f8); + } + return this; +} + + +================================================================== + +### FUNC 0036e5b0 (260 bytes) name=PCA + +/* cv::PCA::PCA(cv::_InputArray const&, cv::_InputArray const&, int, double) */ + +void __thiscall +cv::PCA::PCA(PCA *this,_InputArray *param_1,_InputArray *param_2,int param_3,double param_4) + +{ + *(undefined8 *)this = DAT_0036e708; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(PCA **)(this + 0x40) = this + 8; + *(PCA **)(this + 0x48) = this + 0x50; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined4 *)(this + 0x60) = 0x42ff0000; + *(undefined4 *)(this + 100) = 0; + *(undefined4 *)(this + 0x68) = 0; + *(undefined4 *)(this + 0x6c) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined8 *)(this + 0x78) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(PCA **)(this + 0xa0) = this + 0x68; + *(PCA **)(this + 0xa8) = this + 0xb0; + *(undefined8 *)(this + 0xb8) = 0; + *(undefined8 *)(this + 0xb0) = 0; + *(undefined4 *)(this + 0xc0) = 0x42ff0000; + *(undefined4 *)(this + 0xc4) = 0; + *(undefined4 *)(this + 200) = 0; + *(undefined4 *)(this + 0xcc) = 0; + *(undefined8 *)(this + 0xd0) = 0; + *(undefined8 *)(this + 0xd8) = 0; + *(undefined8 *)(this + 0xe0) = 0; + *(undefined8 *)(this + 0xe8) = 0; + *(undefined8 *)(this + 0xf0) = 0; + *(undefined8 *)(this + 0xf8) = 0; + *(PCA **)(this + 0x100) = this + 200; + *(PCA **)(this + 0x108) = this + 0x110; + *(undefined8 *)(this + 0x118) = 0; + *(undefined8 *)(this + 0x110) = 0; + operator()(this,param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0036e710 (2212 bytes) name=project + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::PCA::project(cv::_InputArray const&, cv::_OutputArray const&) const */ + +void __thiscall cv::PCA::project(PCA *this,_InputArray *param_1,_OutputArray *param_2) + +{ + long lVar1; + uint uVar2; + char cVar3; + bool bVar4; + int iVar5; + int iVar6; + void *__dest; + _InputArray *p_Var7; + Mat **ppMVar8; + undefined8 *puVar9; + long lVar10; + Mat *pMVar11; + undefined8 *puVar12; + int iVar13; + int *piVar14; + long lVar15; + int iVar16; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 uStack_1d8; + long local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined4 local_180; + int local_17c; + undefined4 local_178; + undefined4 local_174; + long local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 auStack_130 [2]; + undefined8 local_120; + Mat *pMStack_118; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + Mat **local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined8 local_c0; + Mat *pMStack_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + Mat **local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 uStack_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar5 = _InputArray::kind(param_1); + if (iVar5 == 0x10000) { + pMVar11 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar11; + local_5c = *(int *)(pMVar11 + 4); + local_58 = *(int *)(pMVar11 + 8); + local_54 = *(int *)(pMVar11 + 0xc); + local_50 = *(undefined8 *)(pMVar11 + 0x10); + local_48 = *(undefined8 *)(pMVar11 + 0x18); + local_40 = *(undefined8 *)(pMVar11 + 0x20); + local_38 = *(undefined8 *)(pMVar11 + 0x28); + local_30 = *(undefined8 *)(pMVar11 + 0x30); + local_28 = *(long *)(pMVar11 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = *piVar14 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar11 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar11 + 0x48); + local_8 = (*(undefined8 **)(pMVar11 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar11); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (*(long *)(this + 0xd0) == 0) { +LAB_0036e7e4: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + __dest = (void *)String::allocate((String *)&local_1f8,0x84); + memcpy(__dest, + "!mean.empty() && !eigenvectors.empty() && ((mean.rows == 1 && mean.cols == data.cols) || (mean.cols == 1 && mean.rows == data.rows))" + ,0x84); + error(-0xd7,(String *)&local_1f8,"void cv::PCA::project(cv::InputArray, cv::OutputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0x128); + String::deallocate((String *)&local_1f8); + iVar5 = *(int *)(this + 200); + iVar13 = *(int *)(this + 0xcc); + iVar6 = local_58; + iVar16 = local_54; + } + else { + if (*(int *)(this + 0xc4) < 3) { + lVar15 = (long)*(int *)(this + 0xcc) * (long)*(int *)(this + 200); + } + else { + lVar10 = 0; + lVar15 = 1; + do { + lVar1 = lVar10 * 4; + lVar10 = lVar10 + 1; + lVar15 = lVar15 * *(int *)(*(long *)(this + 0x100) + lVar1); + } while ((int)lVar10 < *(int *)(this + 0xc4)); + } + if ((lVar15 == 0) || (*(long *)(this + 0x10) == 0)) goto LAB_0036e7e4; + if (*(int *)(this + 4) < 3) { + lVar10 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + lVar15 = 0; + lVar10 = 1; + do { + lVar1 = lVar15 * 4; + lVar15 = lVar15 + 1; + lVar10 = lVar10 * *(int *)(*(long *)(this + 0x40) + lVar1); + } while ((int)lVar15 < *(int *)(this + 4)); + } + if (lVar10 == 0) goto LAB_0036e7e4; + iVar5 = *(int *)(this + 200); + if (iVar5 == 1) { + iVar13 = *(int *)(this + 0xcc); + if (iVar13 != local_54) goto LAB_0036e7d0; + iVar5 = 1; + iVar6 = local_58; + iVar16 = iVar13; + } + else { + iVar13 = *(int *)(this + 0xcc); +LAB_0036e7d0: + if ((iVar13 != 1) || (iVar5 != local_58)) goto LAB_0036e7e4; + iVar13 = 1; + iVar6 = iVar5; + iVar16 = local_54; + } + } + uVar2 = 0; + if (iVar5 != 0) { + uVar2 = iVar6 / iVar5; + } + local_198 = &local_190; + local_1a0 = &uStack_1d8; + uStack_188 = 0; + local_190 = 0; + uStack_1d8 = _UNK_0036f098; + local_1e0 = _DAT_0036f090; + local_1d0 = 0; + uStack_1c8 = 0; + local_1c0 = 0; + iVar5 = 0; + if (iVar13 != 0) { + iVar5 = iVar16 / iVar13; + } + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + repeat((cv *)(this + 0xc0),(Mat *)(ulong)uVar2,iVar5,(int)local_198); + pMStack_118 = (Mat *)&local_180; + if (((*(uint *)(this + 0xc0) & 0xfff) == (local_60 & 0xfff)) && + (local_170 != *(long *)(this + 0xd0))) { + local_110 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_120 = CONCAT44(local_120._4_4_,0x1010000); + local_1e8 = 0; + local_1e4 = 0; + local_b0 = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x2010000); + local_1f0 = (Mat *)&local_60; + pMStack_b8 = (Mat *)&local_180; + p_Var7 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_1f8,(_InputArray *)&local_120,(_OutputArray *)&local_c0,p_Var7,-1 + ); + if (lStack_148 != 0) { + piVar14 = (int *)(lStack_148 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = *piVar14 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_1a8 != 0) { + piVar14 = (int *)(lStack_1a8 + 0x14); + do { + iVar5 = *piVar14; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = iVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + puVar9 = local_138; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (local_1e0._4_4_ < 1) { +LAB_0036eec0: + if (2 < local_17c) goto LAB_0036eecc; + uStack_1d8 = (Mat *)CONCAT44(local_174,local_178); + local_1e0 = CONCAT44(local_17c,local_180); + *local_198 = *local_138; + local_198[1] = puVar9[1]; + } + else { + iVar5 = 0; + puVar12 = local_1a0; + do { + *(undefined4 *)puVar12 = 0; + iVar5 = iVar5 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar5 < local_1e0._4_4_); + if (local_1e0._4_4_ < 3) goto LAB_0036eec0; +LAB_0036eecc: + local_1e0 = CONCAT44(local_1e0._4_4_,local_180); + Mat::copySize((Mat *)&local_1e0,(Mat *)&local_180); + } + uStack_1b8 = uStack_158; + local_1c0 = local_160; + lStack_1a8 = lStack_148; + local_1b0 = local_150; + uStack_1c8 = uStack_168; + local_1d0 = local_170; + } + else { + local_b0 = 0; + local_c0._0_4_ = 0x2010000; + pMStack_b8 = (Mat *)&local_1e0; + Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_c0,*(uint *)(this + 0xc0) & 0xfff,1.0,0.0 + ); + local_110 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_120 = CONCAT44(local_120._4_4_,0x1010000); + local_1e8 = 0; + local_1e4 = 0; + local_b0 = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x2010000); + local_1f0 = (Mat *)&local_1e0; + pMStack_b8 = (Mat *)&local_1e0; + p_Var7 = (_InputArray *)noArray(); + subtract((_InputArray *)&local_1f8,(_InputArray *)&local_120,(_OutputArray *)&local_c0,p_Var7,-1 + ); + } + if (*(int *)(this + 200) == 1) { + local_110 = 0; + local_d8 = &local_d0; + local_108 = 0; + local_e0 = &pMStack_118; + pMStack_118 = _UNK_0036f098; + local_120 = _DAT_0036f090; + local_100 = 0; + local_f8 = 0; + local_f0 = 0; + local_e8 = 0; + uStack_c8 = 0; + local_d0 = 0; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_b0 = 0; + local_c0 = CONCAT44(local_c0._4_4_,0x1010000); + local_208 = (Mat *)&local_1e0; + local_1f0 = (Mat *)this; + pMStack_b8 = (Mat *)&local_120; + gemm((_InputArray *)local_210,(_InputArray *)&local_1f8,1.0,(_InputArray *)&local_c0,0.0,param_2 + ,2); + if (local_e8 != 0) { + piVar14 = (int *)(local_e8 + 0x14); + do { + iVar5 = *piVar14; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = iVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar5 = 0; + ppMVar8 = local_e0; + do { + *(undefined4 *)ppMVar8 = 0; + iVar5 = iVar5 + 1; + ppMVar8 = (Mat **)((long)ppMVar8 + 4); + } while (iVar5 < local_120._4_4_); + } + puVar9 = local_d8; + if (local_d8 == &local_d0) goto LAB_0036ea4c; + } + else { + local_78 = &local_70; + local_80 = &pMStack_b8; + pMStack_b8 = _UNK_0036f098; + local_c0 = _DAT_0036f090; + local_b0 = 0; + local_a8 = 0; + local_a0 = 0; + local_98 = 0; + local_90 = 0; + local_88 = 0; + uStack_68 = 0; + local_70 = 0; + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_110 = 0; + local_120 = CONCAT44(local_120._4_4_,0x1010000); + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_208 = (Mat *)this; + local_1f0 = (Mat *)&local_1e0; + pMStack_118 = (Mat *)&local_c0; + gemm((_InputArray *)local_210,(_InputArray *)&local_1f8,1.0,(_InputArray *)&local_120,0.0, + param_2,0); + if (local_88 != 0) { + piVar14 = (int *)(local_88 + 0x14); + do { + iVar5 = *piVar14; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = iVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_c0._4_4_) { + iVar5 = 0; + ppMVar8 = local_80; + do { + *(undefined4 *)ppMVar8 = 0; + iVar5 = iVar5 + 1; + ppMVar8 = (Mat **)((long)ppMVar8 + 4); + } while (iVar5 < local_c0._4_4_); + } + puVar9 = local_78; + if (local_78 == &local_70) goto LAB_0036ea4c; + } + fastFree(puVar9); +LAB_0036ea4c: + if (lStack_148 != 0) { + piVar14 = (int *)(lStack_148 + 0x14); + do { + iVar5 = *piVar14; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = iVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar5 = 0; + do { + *local_140 = 0; + iVar5 = iVar5 + 1; + local_140 = local_140 + 1; + } while (iVar5 < local_17c); + } + if (local_138 != auStack_130) { + fastFree(local_138); + } + if (lStack_1a8 != 0) { + piVar14 = (int *)(lStack_1a8 + 0x14); + do { + iVar5 = *piVar14; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = iVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar5 = 0; + puVar9 = local_1a0; + do { + *(undefined4 *)puVar9 = 0; + iVar5 = iVar5 + 1; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar5 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (local_28 != 0) { + piVar14 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar14; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar4) { + *piVar14 = iVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar5 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar5 = 0; + piVar14 = local_20; + do { + *piVar14 = 0; + iVar5 = iVar5 + 1; + piVar14 = piVar14 + 1; + } while (iVar5 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 0036f0a0 (124 bytes) name=project + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::PCA::project(cv::_InputArray const&) const */ + +void cv::PCA::project(_InputArray *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + _InputArray *in_x1; + undefined8 *in_x8; + undefined4 local_18 [4]; + undefined4 local_8; + undefined4 local_4; + + uVar2 = _UNK_0036f148; + uVar1 = _DAT_0036f140; + in_x8[8] = in_x8 + 1; + in_x8[2] = 0; + in_x8[1] = uVar2; + *in_x8 = uVar1; + in_x8[3] = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[9] = in_x8 + 10; + in_x8[0xb] = 0; + in_x8[10] = 0; + local_8 = 0; + local_4 = 0; + local_18[0] = 0x2010000; + project((PCA *)param_1,in_x1,(_OutputArray *)local_18); + return; +} + + +================================================================== + +### FUNC 0036f150 (2200 bytes) name=backProject + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::PCA::backProject(cv::_InputArray const&, cv::_OutputArray const&) const */ + +void __thiscall cv::PCA::backProject(PCA *this,_InputArray *param_1,_OutputArray *param_2) + +{ + long lVar1; + int *piVar2; + char cVar3; + bool bVar4; + undefined8 *puVar5; + int iVar6; + void *__dest; + long lVar7; + Mat *pMVar8; + Mat **ppMVar9; + uint *puVar10; + long lVar11; + undefined8 local_1f8; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + Mat *pMStack_1d8; + undefined8 local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + Mat **local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + Mat **local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined4 local_120; + int local_11c; + Mat *local_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined4 local_c0; + int local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + undefined4 local_60; + int local_5c; + uint local_58; + int local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + uint *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar6 = _InputArray::kind(param_1); + if (iVar6 == 0x10000) { + pMVar8 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(undefined4 *)pMVar8; + local_5c = *(int *)(pMVar8 + 4); + local_58 = *(uint *)(pMVar8 + 8); + local_54 = *(int *)(pMVar8 + 0xc); + local_50 = *(undefined8 *)(pMVar8 + 0x10); + local_48 = *(undefined8 *)(pMVar8 + 0x18); + local_40 = *(undefined8 *)(pMVar8 + 0x20); + local_38 = *(undefined8 *)(pMVar8 + 0x28); + local_30 = *(undefined8 *)(pMVar8 + 0x30); + local_28 = *(long *)(pMVar8 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar8 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar8 + 0x48); + local_8 = (*(undefined8 **)(pMVar8 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar8); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (*(long *)(this + 0xd0) == 0) { +LAB_0036f218: + local_1f8 = 0; + local_1f0 = (Mat *)0x0; + __dest = (void *)String::allocate((String *)&local_1f8,0x94); + memcpy(__dest,&DAT_0046fe98,0x94); + error(-0xd7,(String *)&local_1f8, + "void cv::PCA::backProject(cv::InputArray, cv::OutputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/pca.cpp",0x147); + String::deallocate((String *)&local_1f8); + } + else { + if (*(int *)(this + 0xc4) < 3) { + lVar11 = (long)*(int *)(this + 0xcc) * (long)*(int *)(this + 200); + } + else { + lVar7 = 0; + lVar11 = 1; + do { + lVar1 = lVar7 * 4; + lVar7 = lVar7 + 1; + lVar11 = lVar11 * *(int *)(*(long *)(this + 0x100) + lVar1); + } while ((int)lVar7 < *(int *)(this + 0xc4)); + } + if ((lVar11 == 0) || (*(long *)(this + 0x10) == 0)) goto LAB_0036f218; + if (*(int *)(this + 4) < 3) { + lVar7 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + lVar11 = 0; + lVar7 = 1; + do { + lVar1 = lVar11 * 4; + lVar11 = lVar11 + 1; + lVar7 = lVar7 * *(int *)(*(long *)(this + 0x40) + lVar1); + } while ((int)lVar11 < *(int *)(this + 4)); + } + if ((lVar7 == 0) || + (((*(int *)(this + 200) != 1 || (*(int *)(this + 8) != local_54)) && + ((*(int *)(this + 0xcc) != 1 || (*(uint *)(this + 8) != local_58)))))) goto LAB_0036f218; + } + local_138 = &local_130; + local_198 = &local_190; + uStack_128 = 0; + local_130 = 0; + uStack_188 = 0; + local_190 = 0; + local_1a0 = &pMStack_1d8; + local_140 = &pMStack_178; + pMStack_1d8 = _UNK_0036fac8; + local_1e0 = _DAT_0036fac0; + pMStack_178 = _UNK_0036fac8; + local_180 = _DAT_0036fac0; + iVar6 = 0x2010000; + local_1d0 = 0; + local_1c8 = 0; + local_1c0 = 0; + local_1b8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + local_b0 = 0; + local_c0 = 0x2010000; + local_b8 = (Mat *)&local_1e0; + Mat::convertTo((Mat *)&local_60,(_OutputArray *)&local_c0,*(uint *)(this + 0xc0) & 0xfff,1.0,0.0); + if (*(int *)(this + 200) == 1) { + repeat((cv *)(this + 0xc0),(Mat *)(ulong)local_58,1,iVar6); + if (lStack_e8 != 0) { + piVar2 = (int *)(lStack_e8 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_148 != 0) { + piVar2 = (int *)(lStack_148 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + puVar5 = local_d8; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_0036f814: + if (2 < local_11c) goto LAB_0036f97c; + pMStack_178 = local_118; + local_180 = CONCAT44(local_11c,local_120); + *local_138 = *local_d8; + local_138[1] = puVar5[1]; + } + else { + iVar6 = 0; + ppMVar9 = local_140; + do { + *(undefined4 *)ppMVar9 = 0; + iVar6 = iVar6 + 1; + ppMVar9 = (Mat **)((long)ppMVar9 + 4); + } while (iVar6 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_0036f814; +LAB_0036f97c: + local_180 = CONCAT44(local_180._4_4_,local_120); + Mat::copySize((Mat *)&local_180,(Mat *)&local_120); + } + uStack_158 = uStack_f8; + local_160 = local_100; + lStack_148 = lStack_e8; + local_150 = local_f0; + uStack_168 = uStack_108; + local_170 = local_110; + if (lStack_e8 != 0) { + piVar2 = (int *)(lStack_e8 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar6 = 0; + do { + *local_e0 = 0; + iVar6 = iVar6 + 1; + local_e0 = local_e0 + 1; + } while (iVar6 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_110 = 0; + local_120 = 0x1010000; + local_b0 = 0; + local_c0 = 0x1010000; + local_1f0 = (Mat *)&local_1e0; + local_118 = (Mat *)this; + local_b8 = (Mat *)&local_180; + gemm((_InputArray *)&local_1f8,(_InputArray *)&local_120,1.0,(_InputArray *)&local_c0,1.0, + param_2,0); + goto LAB_0036f4d4; + } + repeat((cv *)(this + 0xc0),(Mat *)0x1,local_54,iVar6); + if (lStack_88 != 0) { + piVar2 = (int *)(lStack_88 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (lStack_148 != 0) { + piVar2 = (int *)(lStack_148 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + puVar5 = local_78; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (local_180._4_4_ < 1) { +LAB_0036f3bc: + if (2 < local_bc) goto LAB_0036f3c8; + pMStack_178 = local_b8; + local_180 = CONCAT44(local_bc,local_c0); + *local_138 = *local_78; + local_138[1] = puVar5[1]; + } + else { + iVar6 = 0; + ppMVar9 = local_140; + do { + *(undefined4 *)ppMVar9 = 0; + iVar6 = iVar6 + 1; + ppMVar9 = (Mat **)((long)ppMVar9 + 4); + } while (iVar6 < local_180._4_4_); + if (local_180._4_4_ < 3) goto LAB_0036f3bc; +LAB_0036f3c8: + local_180 = CONCAT44(local_180._4_4_,local_c0); + Mat::copySize((Mat *)&local_180,(Mat *)&local_c0); + } + uStack_158 = uStack_98; + local_160 = local_a0; + lStack_148 = lStack_88; + local_150 = local_90; + uStack_168 = uStack_a8; + local_170 = local_b0; + if (lStack_88 != 0) { + piVar2 = (int *)(lStack_88 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + do { + *local_80 = 0; + iVar6 = iVar6 + 1; + local_80 = local_80 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + local_1e8 = 0; + local_1e4 = 0; + local_1f8 = CONCAT44(local_1f8._4_4_,0x1010000); + local_110 = 0; + local_120 = 0x1010000; + local_b0 = 0; + local_c0 = 0x1010000; + local_1f0 = (Mat *)this; + local_118 = (Mat *)&local_1e0; + local_b8 = (Mat *)&local_180; + gemm((_InputArray *)&local_1f8,(_InputArray *)&local_120,1.0,(_InputArray *)&local_c0,1.0,param_2, + 1); +LAB_0036f4d4: + if (lStack_148 != 0) { + piVar2 = (int *)(lStack_148 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_180._4_4_) { + iVar6 = 0; + ppMVar9 = local_140; + do { + *(undefined4 *)ppMVar9 = 0; + iVar6 = iVar6 + 1; + ppMVar9 = (Mat **)((long)ppMVar9 + 4); + } while (iVar6 < local_180._4_4_); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + if (local_1a8 != 0) { + piVar2 = (int *)(local_1a8 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = 0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + if (0 < local_1e0._4_4_) { + iVar6 = 0; + ppMVar9 = local_1a0; + do { + *(undefined4 *)ppMVar9 = 0; + iVar6 = iVar6 + 1; + ppMVar9 = (Mat **)((long)ppMVar9 + 4); + } while (iVar6 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (local_28 != 0) { + piVar2 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar2; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + puVar10 = local_20; + do { + *puVar10 = 0; + iVar6 = iVar6 + 1; + puVar10 = puVar10 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 0036fad0 (124 bytes) name=backProject + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::PCA::backProject(cv::_InputArray const&) const */ + +void cv::PCA::backProject(_InputArray *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + _InputArray *in_x1; + undefined8 *in_x8; + undefined4 local_18 [4]; + undefined4 local_8; + undefined4 local_4; + + uVar2 = _UNK_0036fb78; + uVar1 = _DAT_0036fb70; + in_x8[8] = in_x8 + 1; + in_x8[2] = 0; + in_x8[1] = uVar2; + *in_x8 = uVar1; + in_x8[3] = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = 0; + in_x8[7] = 0; + in_x8[9] = in_x8 + 10; + in_x8[0xb] = 0; + in_x8[10] = 0; + local_8 = 0; + local_4 = 0; + local_18[0] = 0x2010000; + backProject((PCA *)param_1,in_x1,(_OutputArray *)local_18); + return; +} + + +================================================================== + +### FUNC 0036fb80 (500 bytes) name=PCACompute + +/* cv::PCACompute(cv::_InputArray const&, cv::_InputOutputArray const&, cv::_OutputArray const&, + int) */ + +void cv::PCACompute(_InputArray *param_1,_InputOutputArray *param_2,_OutputArray *param_3, + int param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + PCA aPStack_120 [4]; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + PCA::PCA(aPStack_120); + PCA::operator()(aPStack_120,param_1,(_InputArray *)param_2,0,param_4); + Mat::copyTo(aMStack_60,(_OutputArray *)param_2); + Mat::copyTo((Mat *)aPStack_120,param_3); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)aPStack_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + do { + *local_e0 = 0; + iVar4 = iVar4 + 1; + local_e0 = local_e0 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 0036fdd0 (496 bytes) name=PCACompute + +/* cv::PCACompute(cv::_InputArray const&, cv::_InputOutputArray const&, cv::_OutputArray const&, + double) */ + +void cv::PCACompute(_InputArray *param_1,_InputOutputArray *param_2,_OutputArray *param_3, + double param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + PCA aPStack_120 [4]; + int local_11c; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + long local_e8; + undefined4 *local_e0; + undefined1 *local_d8; + undefined1 auStack_d0 [16]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + PCA::PCA(aPStack_120); + PCA::operator()(aPStack_120,param_1,(_InputArray *)param_2,0,param_4); + Mat::copyTo(aMStack_60,(_OutputArray *)param_2); + Mat::copyTo((Mat *)aPStack_120,param_3); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar1 = (int *)(local_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)aPStack_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + do { + *local_e0 = 0; + iVar4 = iVar4 + 1; + local_e0 = local_e0 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 0037001c (1760 bytes) name=PCAProject + +/* cv::PCAProject(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_OutputArray const&) */ + +void cv::PCAProject(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _OutputArray *param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + Mat *pMVar5; + undefined4 *puVar6; + undefined4 local_1e0; + int local_1dc; + undefined4 local_1d8; + undefined4 local_1d4; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined4 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + undefined4 local_178; + undefined4 local_174; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined4 local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined4 local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + PCA::PCA((PCA *)&local_120); + iVar4 = _InputArray::kind(param_2); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_2 + 8); + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1e0 = *(undefined4 *)pMVar5; + local_1dc = *(int *)(pMVar5 + 4); + local_1d8 = *(undefined4 *)(pMVar5 + 8); + local_1d4 = *(undefined4 *)(pMVar5 + 0xc); + local_1d0 = *(undefined8 *)(pMVar5 + 0x10); + uStack_1c8 = *(undefined8 *)(pMVar5 + 0x18); + local_1c0 = *(undefined8 *)(pMVar5 + 0x20); + uStack_1b8 = *(undefined8 *)(pMVar5 + 0x28); + local_1b0 = *(undefined8 *)(pMVar5 + 0x30); + lStack_1a8 = *(long *)(pMVar5 + 0x38); + local_188 = 0; + local_190 = 0; + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_190 = **(undefined8 **)(pMVar5 + 0x48); + local_188 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_1dc = 0; + Mat::copySize((Mat *)&local_1e0,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (local_5c < 1) { +LAB_00370100: + local_60 = local_1e0; + if (2 < local_1dc) goto LAB_0037010c; + local_58 = local_1d8; + local_54 = local_1d4; + *local_18 = *local_198; + local_18[1] = local_198[1]; + local_5c = local_1dc; + } + else { + iVar4 = 0; + puVar6 = local_20; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_5c); + if (local_5c < 3) goto LAB_00370100; +LAB_0037010c: + local_60 = local_1e0; + Mat::copySize((Mat *)&local_60,(Mat *)&local_1e0); + } + uStack_38 = uStack_1b8; + local_40 = local_1c0; + lStack_28 = lStack_1a8; + local_30 = local_1b0; + uStack_48 = uStack_1c8; + local_50 = local_1d0; + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1dc) { + iVar4 = 0; + puVar6 = local_1a0; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_1dc); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + iVar4 = _InputArray::kind(param_3); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_3 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(undefined4 *)pMVar5; + local_17c = *(int *)(pMVar5 + 4); + local_178 = *(undefined4 *)(pMVar5 + 8); + local_174 = *(undefined4 *)(pMVar5 + 0xc); + local_170 = *(undefined8 *)(pMVar5 + 0x10); + uStack_168 = *(undefined8 *)(pMVar5 + 0x18); + local_160 = *(undefined8 *)(pMVar5 + 0x20); + uStack_158 = *(undefined8 *)(pMVar5 + 0x28); + local_150 = *(undefined8 *)(pMVar5 + 0x30); + lStack_148 = *(long *)(pMVar5 + 0x38); + local_128 = 0; + local_130 = 0; + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar5 + 0x48); + local_128 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_11c < 1) { +LAB_0037026c: + local_120 = local_180; + if (local_17c < 3) { + local_114 = local_174; + local_118 = local_178; + *local_d8 = *local_138; + local_d8[1] = local_138[1]; + local_11c = local_17c; + goto LAB_00370284; + } + } + else { + iVar4 = 0; + puVar6 = local_e0; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_11c); + if (local_11c < 3) goto LAB_0037026c; + } + local_120 = local_180; + Mat::copySize((Mat *)&local_120,(Mat *)&local_180); +LAB_00370284: + uStack_f8 = uStack_158; + local_100 = local_160; + lStack_e8 = lStack_148; + local_f0 = local_150; + uStack_108 = uStack_168; + local_110 = local_170; + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar4 = 0; + puVar6 = local_140; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_17c); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + PCA::project((PCA *)&local_120,param_1,param_4); + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + do { + *local_e0 = 0; + iVar4 = iVar4 + 1; + local_e0 = local_e0 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 003707a4 (1760 bytes) name=PCABackProject + +/* cv::PCABackProject(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, + cv::_OutputArray const&) */ + +void cv::PCABackProject(_InputArray *param_1,_InputArray *param_2,_InputArray *param_3, + _OutputArray *param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + Mat *pMVar5; + undefined4 *puVar6; + undefined4 local_1e0; + int local_1dc; + undefined4 local_1d8; + undefined4 local_1d4; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined4 *local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 local_188; + undefined4 local_180; + int local_17c; + undefined4 local_178; + undefined4 local_174; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + undefined4 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + undefined4 local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined4 *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined4 local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + PCA::PCA((PCA *)&local_120); + iVar4 = _InputArray::kind(param_2); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_2 + 8); + local_1a0 = &local_1d8; + local_198 = &local_190; + local_1e0 = *(undefined4 *)pMVar5; + local_1dc = *(int *)(pMVar5 + 4); + local_1d8 = *(undefined4 *)(pMVar5 + 8); + local_1d4 = *(undefined4 *)(pMVar5 + 0xc); + local_1d0 = *(undefined8 *)(pMVar5 + 0x10); + uStack_1c8 = *(undefined8 *)(pMVar5 + 0x18); + local_1c0 = *(undefined8 *)(pMVar5 + 0x20); + uStack_1b8 = *(undefined8 *)(pMVar5 + 0x28); + local_1b0 = *(undefined8 *)(pMVar5 + 0x30); + lStack_1a8 = *(long *)(pMVar5 + 0x38); + local_188 = 0; + local_190 = 0; + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_190 = **(undefined8 **)(pMVar5 + 0x48); + local_188 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_1dc = 0; + Mat::copySize((Mat *)&local_1e0,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (local_5c < 1) { +LAB_00370888: + local_60 = local_1e0; + if (2 < local_1dc) goto LAB_00370894; + local_58 = local_1d8; + local_54 = local_1d4; + *local_18 = *local_198; + local_18[1] = local_198[1]; + local_5c = local_1dc; + } + else { + iVar4 = 0; + puVar6 = local_20; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_5c); + if (local_5c < 3) goto LAB_00370888; +LAB_00370894: + local_60 = local_1e0; + Mat::copySize((Mat *)&local_60,(Mat *)&local_1e0); + } + uStack_38 = uStack_1b8; + local_40 = local_1c0; + lStack_28 = lStack_1a8; + local_30 = local_1b0; + uStack_48 = uStack_1c8; + local_50 = local_1d0; + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < local_1dc) { + iVar4 = 0; + puVar6 = local_1a0; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_1dc); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + iVar4 = _InputArray::kind(param_3); + if (iVar4 == 0x10000) { + pMVar5 = *(Mat **)(param_3 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(undefined4 *)pMVar5; + local_17c = *(int *)(pMVar5 + 4); + local_178 = *(undefined4 *)(pMVar5 + 8); + local_174 = *(undefined4 *)(pMVar5 + 0xc); + local_170 = *(undefined8 *)(pMVar5 + 0x10); + uStack_168 = *(undefined8 *)(pMVar5 + 0x18); + local_160 = *(undefined8 *)(pMVar5 + 0x20); + uStack_158 = *(undefined8 *)(pMVar5 + 0x28); + local_150 = *(undefined8 *)(pMVar5 + 0x30); + lStack_148 = *(long *)(pMVar5 + 0x38); + local_128 = 0; + local_130 = 0; + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar5 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar5 + 0x48); + local_128 = (*(undefined8 **)(pMVar5 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar5); + } + } + else { + _InputArray::getMat_((int)param_3); + } + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_11c < 1) { +LAB_003709f4: + local_120 = local_180; + if (local_17c < 3) { + local_114 = local_174; + local_118 = local_178; + *local_d8 = *local_138; + local_d8[1] = local_138[1]; + local_11c = local_17c; + goto LAB_00370a0c; + } + } + else { + iVar4 = 0; + puVar6 = local_e0; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_11c); + if (local_11c < 3) goto LAB_003709f4; + } + local_120 = local_180; + Mat::copySize((Mat *)&local_120,(Mat *)&local_180); +LAB_00370a0c: + uStack_f8 = uStack_158; + local_100 = local_160; + lStack_e8 = lStack_148; + local_f0 = local_150; + uStack_108 = uStack_168; + local_110 = local_170; + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < local_17c) { + iVar4 = 0; + puVar6 = local_140; + do { + *puVar6 = 0; + iVar4 = iVar4 + 1; + puVar6 = puVar6 + 1; + } while (iVar4 < local_17c); + } + if (local_138 != &local_130) { + fastFree(local_138); + } + PCA::backProject((PCA *)&local_120,param_1,param_4); + if (lStack_28 != 0) { + piVar1 = (int *)(lStack_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + *local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = local_80 + 1; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + fastFree(local_78); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + do { + *local_e0 = 0; + iVar4 = iVar4 + 1; + local_e0 = local_e0 + 1; + } while (iVar4 < local_11c); + } + if (local_d8 != auStack_d0) { + fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 00370f2c (76 bytes) name=FUN_00370f2c + +uint FUN_00370f2c(uint *param_1) + +{ + if (param_1 == (uint *)0x0) { + return 0; + } + if (((*param_1 & 0xffff0000) == 0x42420000) && (-1 < (int)param_1[9])) { + return ~param_1[8] >> 0x1f; + } + return 0; +} + + +================================================================== + +### FUNC 00370f78 (28 bytes) name=FUN_00370f78 + +bool FUN_00370f78(uint *param_1) + +{ + bool bVar1; + + bVar1 = false; + if (param_1 != (uint *)0x0) { + bVar1 = (*param_1 & 0xffff0000) == 0x42430000; + } + return bVar1; +} + + +================================================================== + +### FUNC 00370f94 (28 bytes) name=FUN_00370f94 + +bool FUN_00370f94(uint *param_1) + +{ + bool bVar1; + + bVar1 = false; + if (param_1 != (uint *)0x0) { + bVar1 = (*param_1 & 0xffff0000) == 0x42440000; + } + return bVar1; +} + + +================================================================== + +### FUNC 00370fb0 (88 bytes) name=FUN_00370fb0 + +int FUN_00370fb0(undefined8 *param_1,undefined8 *param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + int *piVar3; + int *piVar4; + + piVar4 = (int *)*param_2; + piVar3 = (int *)*param_1; + if (*param_3 < 1) { +LAB_00371000: + iVar2 = 0; + } + else { + iVar2 = *piVar3 - *piVar4; + if (iVar2 == 0) { + piVar1 = piVar3 + (*param_3 - 1); + do { + piVar4 = piVar4 + 1; + if (piVar3 == piVar1) goto LAB_00371000; + piVar3 = piVar3 + 1; + iVar2 = *piVar3 - *piVar4; + } while (iVar2 == 0); + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00371008 (20 bytes) name=FUN_00371008 + +bool FUN_00371008(int *param_1) + +{ + bool bVar1; + + bVar1 = false; + if (param_1 != (int *)0x0) { + bVar1 = *param_1 == 0x90; + } + return bVar1; +} + + +================================================================== + +### FUNC 0037101c (28 bytes) name=FUN_0037101c + +bool FUN_0037101c(uint *param_1) + +{ + bool bVar1; + + bVar1 = false; + if (param_1 != (uint *)0x0) { + bVar1 = (*param_1 & 0xffff0000) == 0x42990000; + } + return bVar1; +} + + +================================================================== + +### FUNC 00371038 (36 bytes) name=FUN_00371038 + +bool FUN_00371038(uint *param_1) + +{ + bool bVar1; + + bVar1 = false; + if (param_1 != (uint *)0x0) { + bVar1 = (*param_1 & 0xffff3000) == 0x42981000; + } + return bVar1; +} + + +================================================================== + +### FUNC 0037105c (16 bytes) name=isOpened + +/* cv::FileStorage::isOpened() const */ + +undefined1 __thiscall cv::FileStorage::isOpened(FileStorage *this) + +{ + undefined1 uVar1; + + uVar1 = 0; + if (*(long *)(this + 0x10) != 0) { + uVar1 = *(undefined1 *)(*(long *)(this + 0x10) + 0x180); + } + return uVar1; +} + + +================================================================== + +### FUNC 0037106c (4 bytes) name=FUN_0037106c + +void FUN_0037106c(void) + +{ + return; +} + + +================================================================== + +### FUNC 00371070 (4 bytes) name=FUN_00371070 + +void FUN_00371070(void) + +{ + return; +} + + +================================================================== + +### FUNC 00371074 (160 bytes) name=FUN_00371074 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00371074(undefined8 *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined1 uVar3; + undefined8 *puVar4; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 != (undefined8 *)0x0) { + *param_1 = 0; + return; + } + local_10 = param_1; + local_8 = param_1; + puVar4 = (undefined8 *)cv::String::allocate((String *)&local_10,0x13); + uVar3 = DAT_004707e2; + uVar2 = _DAT_004707d8; + uVar1 = DAT_004707d0; + *(undefined2 *)(puVar4 + 2) = DAT_004707e0; + *(undefined1 *)((long)puVar4 + 0x12) = uVar3; + *puVar4 = uVar1; + puVar4[1] = uVar2; + cv::error(-0x1b,(String *)&local_10,"void icvReleaseGraph(void**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x113a); + cv::String::deallocate((String *)&local_10); + uRam0000000000000000 = 0; + return; +} + + +================================================================== + +### FUNC 00371128 (160 bytes) name=FUN_00371128 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00371128(undefined8 *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined1 uVar3; + undefined8 *puVar4; + undefined8 *local_10; + undefined8 *local_8; + + if (param_1 != (undefined8 *)0x0) { + *param_1 = 0; + return; + } + local_10 = param_1; + local_8 = param_1; + puVar4 = (undefined8 *)cv::String::allocate((String *)&local_10,0x13); + uVar3 = DAT_004707e2; + uVar2 = _DAT_004707d8; + uVar1 = DAT_004707d0; + *(undefined2 *)(puVar4 + 2) = DAT_004707e0; + *(undefined1 *)((long)puVar4 + 0x12) = uVar3; + *puVar4 = uVar1; + puVar4[1] = uVar2; + cv::error(-0x1b,(String *)&local_10,"void icvReleaseSeq(void**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xf9c); + cv::String::deallocate((String *)&local_10); + uRam0000000000000000 = 0; + return; +} + + +================================================================== + +### FUNC 003711dc (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 003711e0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 003711e4 (52 bytes) name=FUN_003711e4 + +void FUN_003711e4(long *param_1) + +{ + cv::DefaultDeleter::operator() + ((DefaultDeleter *)(param_1 + 3),(CvFileStorage *)param_1[2]); + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 00371218 (52 bytes) name=FUN_00371218 + +void FUN_00371218(long *param_1) + +{ + cv::DefaultDeleter::operator() + ((DefaultDeleter *)(param_1 + 3),(CvSparseMat *)param_1[2]); + (**(code **)(*param_1 + 8))(param_1); + return; +} + + +================================================================== + +### FUNC 0037124c (4 bytes) name=cvReleaseMat + +void cvReleaseMat(void) + +{ + (*(code *)PTR_cvReleaseMat_00500ee0)(); + return; +} + + +================================================================== + +### FUNC 00371250 (8 bytes) name=FUN_00371250 + +void FUN_00371250(undefined8 param_1) + +{ + cvCloneGraph(param_1,0); + return; +} + + +================================================================== + +### FUNC 00371258 (36 bytes) name=FUN_00371258 + +void FUN_00371258(undefined8 param_1) + +{ + cvSeqSlice(param_1,0x3fffffff00000000,0,1); + return; +} + + +================================================================== + +### FUNC 0037127c (676 bytes) name=FUN_0037127c + +char * FUN_0037127c(long param_1,char *param_2) + +{ + char *pcVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + uint uVar5; + char *pcVar6; + void *pvVar7; + long *__src; + char *pcVar8; + long lVar9; + ulong uVar10; + size_t sVar11; + long *plVar12; + long *plVar13; + long *__dest; + long lVar14; + long local_10; + long local_8; + + plVar12 = *(long **)(param_1 + 0x178); + if (plVar12 == (long *)0x0) { + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + local_10 = *(long *)(param_1 + 0x70); + if (local_10 == 0) { + local_8 = local_10; + pcVar6 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar4 = s_The_storage_is_not_opened_00470830[0x18]; + uVar3 = s_The_storage_is_not_opened_00470830._8_8_; + uVar2 = s_The_storage_is_not_opened_00470830._0_8_; + *(undefined8 *)(pcVar6 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar6[0x18] = cVar4; + *(undefined8 *)pcVar6 = uVar2; + *(undefined8 *)(pcVar6 + 8) = uVar3; + cv::error(-2,(String *)&local_10,"void icvPuts(CvFileStorage*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x100); + pcVar6 = (char *)cv::String::deallocate((String *)&local_10); + } + else { + pcVar6 = (char *)gzputs(local_10); + } + } + else { + uVar5 = fputs(param_2,*(FILE **)(param_1 + 0x68)); + pcVar6 = (char *)(ulong)uVar5; + } + } + else { + pcVar6 = (char *)strlen(param_2); + if (0 < (long)pcVar6) { + pcVar8 = (char *)plVar12[6]; + pcVar1 = param_2 + (long)pcVar6; + do { + if (pcVar8 == (char *)(plVar12[8] + -1)) { + plVar13 = (long *)plVar12[9]; + uVar10 = plVar12[1]; + if (uVar10 - ((long)plVar13 - *plVar12 >> 3) < 2) { + __src = (long *)plVar12[5]; + lVar14 = (long)plVar13 - (long)__src >> 3; + lVar9 = lVar14 + 2; + if ((ulong)(lVar9 * 2) < uVar10) { + __dest = (long *)(*plVar12 + (uVar10 - lVar9 >> 1) * 8); + if (__dest < __src) { + sVar11 = (long)plVar13 + (8 - (long)__src); + if ((long)sVar11 >> 3 != 0) { + memmove(__dest,__src,sVar11); + } + } + else { + sVar11 = (long)plVar13 + (8 - (long)__src); + if ((long)sVar11 >> 3 != 0) { + memmove((void *)((long)__dest + ((lVar14 + 1) * 8 - sVar11)),__src,sVar11); + } + } + } + else { + if (uVar10 == 0) { + uVar10 = 3; + } + else { + uVar10 = uVar10 * 2 + 2; + if (0x1fffffffffffffff < uVar10) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + } + pvVar7 = operator_new(uVar10 << 3); + __dest = (long *)((long)pvVar7 + (uVar10 - lVar9 >> 1) * 8); + sVar11 = (plVar12[9] + 8) - plVar12[5]; + if ((long)sVar11 >> 3 != 0) { + memmove(__dest,(void *)plVar12[5],sVar11); + } + operator_delete((void *)*plVar12); + *plVar12 = (long)pvVar7; + plVar12[1] = uVar10; + } + plVar12[5] = (long)__dest; + lVar9 = *__dest; + plVar13 = __dest + lVar14; + plVar12[3] = lVar9; + plVar12[4] = lVar9 + 0x200; + plVar12[9] = (long)plVar13; + lVar9 = __dest[lVar14]; + plVar12[7] = lVar9; + plVar12[8] = lVar9 + 0x200; + } + pvVar7 = operator_new(0x200); + plVar13[1] = (long)pvVar7; + if ((char *)plVar12[6] != (char *)0x0) { + *(char *)plVar12[6] = *param_2; + } + lVar9 = plVar12[9]; + plVar12[9] = lVar9 + 8; + pcVar8 = *(char **)(lVar9 + 8); + plVar12[7] = (long)pcVar8; + pcVar6 = pcVar8 + 0x200; + plVar12[8] = (long)pcVar6; + plVar12[6] = (long)pcVar8; + } + else { + lVar9 = 0; + if (pcVar8 != (char *)0x0) { + *pcVar8 = *param_2; + lVar9 = plVar12[6]; + } + pcVar8 = (char *)(lVar9 + 1); + plVar12[6] = (long)pcVar8; + } + param_2 = param_2 + 1; + } while (param_2 != pcVar1); + } + } + return pcVar6; +} + + +================================================================== + +### FUNC 00371534 (744 bytes) name=FUN_00371534 + +size_t FUN_00371534(char *param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + undefined8 uVar7; + int iVar8; + size_t sVar9; + char *pcVar10; + long lVar11; + char *pcVar12; + ulong uVar13; + int iVar14; + uint uVar15; + int iVar16; + int iVar17; + ulong uVar18; + char *local_10; + char *local_8; + + if (param_1 == (char *)0x0) { + return 0; + } + sVar9 = strlen(param_1); + iVar8 = (int)sVar9; + if (iVar8 != 0) { + *param_2 = 0; + if (iVar8 < 1) { + sVar9 = 0; + } + else { + uVar18 = 0; + iVar14 = 0; + do { + uVar15 = (int)param_1[iVar14] - 0x30; + iVar17 = (int)uVar18; + if ((uVar15 & 0xff) < 10) { + if ((byte)((param_1 + iVar14)[1] - 0x30U) < 10) { + local_10 = (char *)0x0; + lVar11 = strtol(param_1 + iVar14,&local_10,10); + uVar15 = (uint)lVar11; + iVar14 = ((int)local_10 - (int)param_1) + -1; + } + if ((int)uVar15 < 1) { + local_10 = (char *)0x0; + local_8 = (char *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar6 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar5 = s_Invalid_data_type_specification_00470850._28_2_; + uVar4 = s_Invalid_data_type_specification_00470850._24_4_; + uVar3 = s_Invalid_data_type_specification_00470850._8_8_; + uVar2 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar4; + *(undefined2 *)(pcVar10 + 0x1c) = uVar5; + pcVar10[0x1e] = cVar6; + *(undefined8 *)pcVar10 = uVar2; + *(undefined8 *)(pcVar10 + 8) = uVar3; + cv::error(-5,(String *)&local_10,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0); + cv::String::deallocate((String *)&local_10); + } + param_2[iVar17] = uVar15; + } + else { + pcVar10 = strchr("ucwsifdr",(int)param_1[iVar14]); + if (pcVar10 == (char *)0x0) { + local_10 = pcVar10; + local_8 = pcVar10; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar6 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar5 = s_Invalid_data_type_specification_00470850._28_2_; + uVar4 = s_Invalid_data_type_specification_00470850._24_4_; + uVar3 = s_Invalid_data_type_specification_00470850._8_8_; + uVar2 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar12 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar4; + *(undefined2 *)(pcVar12 + 0x1c) = uVar5; + pcVar12[0x1e] = cVar6; + *(undefined8 *)pcVar12 = uVar2; + *(undefined8 *)(pcVar12 + 8) = uVar3; + cv::error(-5,(String *)&local_10,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8); + cv::String::deallocate((String *)&local_10); + } + uVar13 = -(uVar18 >> 0x1f) & 0xfffffffc00000000 | uVar18 << 2; + puVar1 = (undefined4 *)((long)param_2 + uVar13); + if (*(int *)((long)param_2 + uVar13) == 0) { + *(undefined4 *)((long)param_2 + uVar13) = 1; + } + iVar16 = (int)pcVar10 + -0x472f10; + puVar1[1] = iVar16; + if (iVar17 == 0) { + uVar18 = 2; + *(undefined4 *)((long)param_2 + uVar13 + 8) = 0; + } + else if (iVar16 == puVar1[-1]) { + *(int *)((long)param_2 + (uVar13 - 8)) = + *(int *)((long)param_2 + (uVar13 - 8)) + *(int *)((long)param_2 + uVar13); + *puVar1 = 0; + } + else { + uVar15 = iVar17 + 2; + uVar18 = (ulong)uVar15; + if ((int)uVar15 < 0x100) { + lVar11 = (long)(int)uVar15 * 4; + } + else { + local_10 = (char *)0x0; + local_8 = (char *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x20); + uVar7 = s_Too_long_data_type_specification_00470870._24_8_; + uVar3 = s_Too_long_data_type_specification_00470870._16_8_; + uVar2 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar10 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar2; + *(undefined8 *)(pcVar10 + 0x10) = uVar3; + *(undefined8 *)(pcVar10 + 0x18) = uVar7; + cv::error(-5,(String *)&local_10,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbe2) + ; + cv::String::deallocate((String *)&local_10); + lVar11 = (long)(int)uVar15 << 2; + } + *(undefined4 *)((long)param_2 + lVar11) = 0; + } + } + iVar14 = iVar14 + 1; + } while (iVar14 < iVar8); + sVar9 = (size_t)(uint)((int)uVar18 >> 1); + } + } + return sVar9; +} + + +================================================================== + +### FUNC 00371858 (112 bytes) name=FUN_00371858 + +void FUN_00371858(undefined8 param_1,ulong param_2,undefined8 param_3,undefined8 param_4, + undefined4 param_5) + +{ + char acStack_400 [1024]; + + sprintf(acStack_400,"%s(%d): %s",param_1,param_2 & 0xffffffff,param_4); + cvError(0xffffff2c,param_3,acStack_400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",param_5); + return; +} + + +================================================================== + +### FUNC 003718c8 (288 bytes) name=FUN_003718c8 + +void FUN_003718c8(long param_1,uint param_2,uint *param_3) + +{ + undefined8 uVar1; + long lVar2; + undefined8 *puVar3; + + if ((param_2 & 7) != 6) { + uVar1 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(param_1 + 0x10)); + if ((*param_3 & 7) != 0) { + cvSeqPush(uVar1,param_3); + } + *(undefined8 *)(param_3 + 4) = uVar1; + *param_3 = param_2; + cvSetSeqBlockSize(uVar1,8); + return; + } + if (*param_3 != 0) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "void icvFSCreateCollection(CvFileStorage*, int, CvFileNode*)", + "Sequence element should not have name (use <_>)",0x199); + } + uVar1 = *(undefined8 *)(param_1 + 0x10); + lVar2 = cvCreateSet(0,0x78,0x30,uVar1); + *(undefined4 *)(lVar2 + 0x6c) = 0x10; + puVar3 = (undefined8 *)cvMemStorageAlloc(uVar1,0x80); + *(undefined8 **)(lVar2 + 0x70) = puVar3; + *puVar3 = 0; + puVar3[1] = 0; + puVar3[2] = 0; + puVar3[3] = 0; + puVar3[4] = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + puVar3[0xb] = 0; + puVar3[0xc] = 0; + puVar3[0xd] = 0; + puVar3[0xe] = 0; + puVar3[0xf] = 0; + *(long *)(param_3 + 4) = lVar2; + *param_3 = param_2; + cvSetSeqBlockSize(lVar2,8); + return; +} + + +================================================================== + +### FUNC 003719e8 (124 bytes) name=release + +/* cv::FileStorage::release() */ + +void __thiscall cv::FileStorage::release(FileStorage *this) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + long *plVar5; + + plVar5 = *(long **)(this + 8); + if (plVar5 != (long *)0x0) { + plVar1 = plVar5 + 1; + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar5 + 0x10))(); + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x30) = *(undefined8 *)(this + 0x28); + *(undefined4 *)(this + 0x40) = 0; + return; + } + } + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x30) = *(undefined8 *)(this + 0x28); + *(undefined4 *)(this + 0x40) = 0; + return; +} + + +================================================================== + +### FUNC 00371a64 (1628 bytes) name=FUN_00371a64 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00371a64(long param_1,char *param_2,uint param_3,undefined8 *param_4) + +{ + char cVar1; + byte bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined2 uVar12; + int iVar13; + void *pvVar14; + size_t sVar15; + char *pcVar16; + size_t sVar17; + undefined8 *puVar18; + int iVar19; + undefined1 *puVar20; + long lVar21; + undefined1 *puVar22; + int iVar23; + int iVar24; + size_t __n; + uint local_14; + undefined8 local_10; + undefined8 local_8; + + puVar20 = *(undefined1 **)(param_1 + 0x78); + local_14 = *(uint *)(param_1 + 0x44); + if ((param_2 == (char *)0x0) || (cVar1 = *param_2, cVar1 == '\0')) { + if ((param_3 & 0xfffffffd) == 1) { + param_2 = (char *)0x0; + if (4 < (local_14 & 7)) goto LAB_00371ad8; + *(undefined4 *)(param_1 + 0xc) = 0; + local_14 = 0x25; + goto LAB_00371b9c; + } +LAB_00371c68: + *puVar20 = 0x3c; + iVar13 = 1; + param_2 = "_"; + } + else { + if ((param_3 & 0xfffffffd) == 1) { + if ((local_14 & 7) < 5) { + *(undefined4 *)(param_1 + 0xc) = 0; + local_14 = 0x26; + } + else { +LAB_00371ad8: + if (((local_14 & 7) == 6) != (param_2 != (char *)0x0)) { + local_10 = 0; + local_8 = 0; + pvVar14 = (void *)cv::String::allocate((String *)&local_10,0x55); + memcpy(pvVar14, + "An attempt to add element without a key to a map, or add element with key to sequence" + ,0x55); + cv::error(-5,(String *)&local_10, + "void icvXMLWriteTag(CvFileStorage*, const char*, int, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x8ee); + cv::String::deallocate((String *)&local_10); + } + if ((local_14 >> 5 & 1) == 0) { + puVar20 = *(undefined1 **)(param_1 + 0x78); + lVar21 = *(long *)(param_1 + 0x80); + iVar13 = *(int *)(param_1 + 0x58); + if ((undefined1 *)(lVar21 + iVar13) < puVar20) { + puVar20[1] = (byte)local_14 & 0x20; + *puVar20 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar21 = *(long *)(param_1 + 0x80); + iVar13 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar21; + } + iVar19 = *(int *)(param_1 + 0x40); + if (iVar19 != iVar13) { + if (iVar13 < iVar19) { + memset((void *)(lVar21 + iVar13),0x20,(long)(iVar19 - iVar13)); + lVar21 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar19; + iVar13 = iVar19; + } + puVar20 = (undefined1 *)(lVar21 + iVar13); + *(undefined1 **)(param_1 + 0x78) = puVar20; + } + } +LAB_00371b9c: + if (param_2 == (char *)0x0) goto LAB_00371c68; + cVar1 = *param_2; + } + if ((cVar1 == '_') && (param_2[1] == '\0')) { + local_10 = 0; + local_8 = 0; + puVar18 = (undefined8 *)cv::String::allocate((String *)&local_10,0x21); + uVar6 = DAT_00470950; + uVar5 = DAT_00470948; + uVar4 = _LAB_00470940; + uVar3 = DAT_00470938; + *(undefined1 *)(puVar18 + 4) = DAT_00470958; + *puVar18 = uVar3; + puVar18[1] = uVar4; + puVar18[2] = uVar5; + puVar18[3] = uVar6; + cv::error(-5,(String *)&local_10, + "void icvXMLWriteTag(CvFileStorage*, const char*, int, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x8fd); + cv::String::deallocate((String *)&local_10); + } + sVar15 = strlen(param_2); + iVar13 = (int)sVar15; + *puVar20 = 0x3c; + } + if (param_3 == 2) { + if (param_4 != (undefined8 *)0x0) { + local_10 = 0; + local_8 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_10,0x2d); + cVar1 = s_Closing_tag_should_not_include_a_00470960[0x2c]; + uVar7 = s_Closing_tag_should_not_include_a_00470960._40_4_; + uVar6 = s_Closing_tag_should_not_include_a_00470960._24_8_; + uVar5 = s_Closing_tag_should_not_include_a_00470960._16_8_; + uVar4 = s_Closing_tag_should_not_include_a_00470960._8_8_; + uVar3 = s_Closing_tag_should_not_include_a_00470960._0_8_; + *(undefined8 *)(pcVar16 + 0x20) = s_Closing_tag_should_not_include_a_00470960._32_8_; + *(undefined4 *)(pcVar16 + 0x28) = uVar7; + pcVar16[0x2c] = cVar1; + *(undefined8 *)pcVar16 = uVar3; + *(undefined8 *)(pcVar16 + 8) = uVar4; + *(undefined8 *)(pcVar16 + 0x10) = uVar5; + *(undefined8 *)(pcVar16 + 0x18) = uVar6; + cv::error(-5,(String *)&local_10, + "void icvXMLWriteTag(CvFileStorage*, const char*, int, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x904); + cv::String::deallocate((String *)&local_10); + } + puVar22 = puVar20 + 2; + puVar20[1] = 0x2f; + } + else { + puVar22 = puVar20 + 1; + } + if ((0x19 < (((int)*param_2 & 0xffffffdfU) - 0x41 & 0xff)) && ((int)*param_2 != 0x5f)) { + local_10 = 0; + local_8 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_10,0x23); + cVar1 = s_Key_should_start_with_a_letter_o_004709e0[0x22]; + uVar6 = s_Key_should_start_with_a_letter_o_004709e0._24_8_; + uVar5 = s_Key_should_start_with_a_letter_o_004709e0._16_8_; + uVar4 = s_Key_should_start_with_a_letter_o_004709e0._8_8_; + uVar3 = s_Key_should_start_with_a_letter_o_004709e0._0_8_; + *(undefined2 *)(pcVar16 + 0x20) = s_Key_should_start_with_a_letter_o_004709e0._32_2_; + pcVar16[0x22] = cVar1; + *(undefined8 *)pcVar16 = uVar3; + *(undefined8 *)(pcVar16 + 8) = uVar4; + *(undefined8 *)(pcVar16 + 0x10) = uVar5; + *(undefined8 *)(pcVar16 + 0x18) = uVar6; + cv::error(-5,(String *)&local_10, + "void icvXMLWriteTag(CvFileStorage*, const char*, int, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x909); + cv::String::deallocate((String *)&local_10); + } + if (*(undefined1 **)(param_1 + 0x88) <= puVar22 + iVar13) { + iVar23 = (int)puVar22 - (int)*(long *)(param_1 + 0x80); + iVar24 = (int)((((long)*(undefined1 **)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / 2); + iVar19 = iVar13 + iVar23; + if (iVar13 + iVar23 < iVar24) { + iVar19 = iVar24; + } + pvVar14 = (void *)cv::cvAlloc((long)(iVar19 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar14 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar23) { + memcpy(pvVar14,*(void **)(param_1 + 0x80),(long)iVar23); + } + *(void **)(param_1 + 0x80) = pvVar14; + *(long *)(param_1 + 0x88) = (long)pvVar14 + (long)iVar19; + puVar22 = (undefined1 *)((long)pvVar14 + (long)iVar23); + } + lVar21 = 0; + if (0 < iVar13) { + do { + bVar2 = param_2[lVar21]; + if ((((9 < (byte)(bVar2 - 0x30)) && (0x19 < (byte)((bVar2 & 0xdf) + 0xbf))) && (bVar2 != 0x5f) + ) && (bVar2 != 0x2d)) { + local_10 = 0; + local_8 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_10,0x4a); + uVar12 = s_Key_name_may_only_contain_alphan_00470990._72_2_; + uVar11 = s_Key_name_may_only_contain_alphan_00470990._56_8_; + uVar10 = s_Key_name_may_only_contain_alphan_00470990._48_8_; + uVar9 = s_Key_name_may_only_contain_alphan_00470990._40_8_; + uVar8 = s_Key_name_may_only_contain_alphan_00470990._32_8_; + uVar6 = s_Key_name_may_only_contain_alphan_00470990._24_8_; + uVar5 = s_Key_name_may_only_contain_alphan_00470990._16_8_; + uVar4 = s_Key_name_may_only_contain_alphan_00470990._8_8_; + uVar3 = s_Key_name_may_only_contain_alphan_00470990._0_8_; + *(undefined8 *)(pcVar16 + 0x40) = s_Key_name_may_only_contain_alphan_00470990._64_8_; + *(undefined2 *)(pcVar16 + 0x48) = uVar12; + *(undefined8 *)pcVar16 = uVar3; + *(undefined8 *)(pcVar16 + 8) = uVar4; + *(undefined8 *)(pcVar16 + 0x10) = uVar5; + *(undefined8 *)(pcVar16 + 0x18) = uVar6; + *(undefined8 *)(pcVar16 + 0x20) = uVar8; + *(undefined8 *)(pcVar16 + 0x28) = uVar9; + *(undefined8 *)(pcVar16 + 0x30) = uVar10; + *(undefined8 *)(pcVar16 + 0x38) = uVar11; + cv::error(-5,(String *)&local_10, + "void icvXMLWriteTag(CvFileStorage*, const char*, int, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x910); + cv::String::deallocate((String *)&local_10); + } + puVar22[lVar21] = bVar2; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < iVar13); + } + puVar22 = puVar22 + iVar13; + if (param_4 != (undefined8 *)0x0) { + pcVar16 = (char *)*param_4; + while (pcVar16 != (char *)0x0) { + sVar15 = strlen(pcVar16); + sVar17 = strlen((char *)param_4[1]); + iVar13 = (int)sVar17 + (int)sVar15 + 4; + if (*(undefined1 **)(param_1 + 0x88) <= puVar22 + iVar13) { + iVar19 = (int)puVar22 - (int)*(long *)(param_1 + 0x80); + iVar13 = iVar13 + iVar19; + iVar23 = (int)((((long)*(undefined1 **)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / + 2); + if (iVar13 < iVar23) { + iVar13 = iVar23; + } + pvVar14 = (void *)cv::cvAlloc((long)(iVar13 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar14 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar19) { + memcpy(pvVar14,*(void **)(param_1 + 0x80),(long)iVar19); + } + *(void **)(param_1 + 0x80) = pvVar14; + *(long *)(param_1 + 0x88) = (long)pvVar14 + (long)iVar13; + puVar22 = (undefined1 *)((long)pvVar14 + (long)iVar19); + } + *puVar22 = 0x20; + __n = (size_t)(int)sVar15; + puVar22 = puVar22 + 1; + sVar15 = (size_t)(int)sVar17; + memcpy(puVar22,(void *)*param_4,__n); + puVar22[__n] = 0x3d; + puVar20 = puVar22 + __n + 2; + puVar22[__n + 1] = 0x22; + memcpy(puVar20,(void *)param_4[1],sVar15); + puVar20[sVar15] = 0x22; + param_4 = param_4 + 2; + puVar22 = puVar20 + sVar15 + 1; + if (param_4 == (undefined8 *)0x0) break; + pcVar16 = (char *)*param_4; + } + } + puVar20 = puVar22; + if (param_3 == 3) { + puVar20 = puVar22 + 1; + *puVar22 = 0x2f; + } + *puVar20 = 0x3e; + *(uint *)(param_1 + 0x44) = local_14 & 0xffffffdf; + *(undefined1 **)(param_1 + 0x78) = puVar20 + 1; + return; +} + + +================================================================== + +### FUNC 00372124 (212 bytes) name=FUN_00372124 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00372124(long param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 *puVar3; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 uStack_10; + undefined4 local_8; + undefined4 local_4; + + if (*(int *)(*(long *)(param_1 + 0x38) + 0x28) == 0) { + local_28 = 0; + local_20 = 0; + puVar3 = (undefined8 *)cv::String::allocate((String *)&local_28,0x14); + uVar2 = DAT_00470a10; + uVar1 = _LAB_00470a08; + *(undefined4 *)(puVar3 + 2) = DAT_00470a18; + *puVar3 = uVar1; + puVar3[1] = uVar2; + cv::error(-2,(String *)&local_28,"void icvXMLEndWriteStruct(CvFileStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x968); + cv::String::deallocate((String *)&local_28); + } + FUN_00371a64(param_1,*(undefined8 *)(param_1 + 0x50),2,0,0); + cvSeqPop(*(undefined8 *)(param_1 + 0x38),(String *)&local_28); + *(undefined4 *)(param_1 + 0x40) = local_8; + *(undefined4 *)(param_1 + 0x44) = local_4; + *(undefined8 *)(param_1 + 0x48) = local_18; + *(undefined8 *)(param_1 + 0x50) = uStack_10; + cvRestoreMemStoragePos(*(undefined8 *)(param_1 + 0x20),(String *)&local_28); + return; +} + + +================================================================== + +### FUNC 0037220c (856 bytes) name=FUN_0037220c + +char * FUN_0037220c(long param_1,char *param_2,int param_3) + +{ + char cVar1; + undefined8 uVar2; + undefined8 uVar3; + size_t sVar4; + char *pcVar5; + ulong uVar6; + uint uVar7; + int iVar8; + ulong uVar9; + int iVar10; + long lVar11; + ulong uVar12; + ulong uVar13; + long local_10; + long local_8; + + uVar7 = (uint)*param_2; + while( true ) { + while( true ) { + while (uVar7 == 0x20) { + param_2 = param_2 + 1; + uVar7 = (uint)*param_2; + } + if (uVar7 == 0x23) { + if (0x7fffffff < (long)param_2 - *(long *)(param_1 + 0x80)) { + return param_2; + } + uVar7 = 0; + *param_2 = '\0'; + } + else if (0x1f < (uVar7 & 0xff)) { + if ((long)param_3 <= (long)param_2 - *(long *)(param_1 + 0x80)) { + return param_2; + } + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94),&DAT_00472ad0, + "Incorrect indentation",0x3c5); + return param_2; + } + if (((uVar7 == 0) || (uVar7 == 10)) || (uVar7 == 0xd)) break; + pcVar5 = "Tabs are prohibited in YAML!"; + if (uVar7 != 9) { + pcVar5 = "Invalid character"; + } + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94),&DAT_00472ad0, + pcVar5,0x3df); + uVar7 = (uint)*param_2; + } + lVar11 = *(long *)(param_1 + 0x160); + param_2 = *(char **)(param_1 + 0x80); + uVar9 = *(long *)(param_1 + 0x88) - (long)param_2; + iVar8 = (int)uVar9; + if (lVar11 != 0) break; + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + local_10 = *(long *)(param_1 + 0x70); + if (local_10 == 0) { + local_8 = local_10; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar1 = s_The_storage_is_not_opened_00470830[0x18]; + uVar3 = s_The_storage_is_not_opened_00470830._8_8_; + uVar2 = s_The_storage_is_not_opened_00470830._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar5[0x18] = cVar1; + *(undefined8 *)pcVar5 = uVar2; + *(undefined8 *)(pcVar5 + 8) = uVar3; + cv::error(-2,(String *)&local_10,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11d); + cv::String::deallocate((String *)&local_10); + goto LAB_003724a4; + } + param_2 = (char *)gzgets(local_10,param_2,uVar9 & 0xffffffff); + } + else { + param_2 = fgets(param_2,iVar8,*(FILE **)(param_1 + 0x68)); + } + if (param_2 == (char *)0x0) goto LAB_003724a4; +LAB_00372338: + sVar4 = strlen(param_2); + if ((param_2[(long)(int)sVar4 + -1] != '\r') && (param_2[(long)(int)sVar4 + -1] != '\n')) { + if (*(long *)(param_1 + 0x160) == 0) { + if (*(FILE **)(param_1 + 0x68) != (FILE *)0x0) { + uVar7 = feof(*(FILE **)(param_1 + 0x68)); + goto LAB_003723e0; + } + if (*(long *)(param_1 + 0x70) != 0) { + uVar7 = gzeof(); + goto LAB_003723e0; + } + } + else { + uVar7 = (uint)(*(ulong *)(param_1 + 0x168) <= *(ulong *)(param_1 + 0x170)); +LAB_003723e0: + if (uVar7 != 0) goto LAB_00372358; + } + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94),&DAT_00472ad0, + "Too long string or a last string w/o newline",0x3d9); + } +LAB_00372358: + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + 1; + uVar7 = (uint)*param_2; + } + uVar12 = *(ulong *)(param_1 + 0x170); + uVar13 = *(ulong *)(param_1 + 0x168); + uVar9 = uVar12; + if ((uVar12 < uVar13) && (iVar8 = iVar8 + -1, 0 < iVar8)) { + cVar1 = *(char *)(lVar11 + uVar12); + uVar9 = uVar12 + 1; + if (cVar1 != '\0') { + *param_2 = cVar1; + if (cVar1 == '\n') { + param_2[1] = '\0'; + *(ulong *)(param_1 + 0x170) = uVar9; + } + else { + iVar10 = 1; + do { + uVar6 = uVar9; + if ((uVar9 == uVar13) || (iVar8 <= iVar10)) break; + cVar1 = *(char *)(lVar11 + uVar9); + uVar6 = uVar9 + 1; + if (cVar1 == '\0') break; + param_2[uVar9 - uVar12] = cVar1; + iVar10 = iVar10 + 1; + uVar9 = uVar6; + } while (cVar1 != '\n'); + param_2[iVar10] = '\0'; + *(ulong *)(param_1 + 0x170) = uVar6; + } + goto LAB_00372338; + } + } + *param_2 = '\0'; + *(ulong *)(param_1 + 0x170) = uVar9; +LAB_003724a4: + builtin_strncpy(*(char **)(param_1 + 0x80),"...",4); + *(undefined4 *)(param_1 + 0x98) = 1; + return *(char **)(param_1 + 0x80); +} + + +================================================================== + +### FUNC 00372578 (1024 bytes) name=FUN_00372578 + +byte * FUN_00372578(long param_1,byte *param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + int iVar4; + size_t sVar5; + char *pcVar6; + int iVar7; + ulong uVar8; + byte bVar9; + ulong uVar10; + long lVar11; + ulong uVar12; + byte *pbVar13; + byte *pbVar14; + int iVar15; + ulong uVar16; + long local_10; + long local_8; + + iVar15 = 0; +LAB_003725b8: + do { + param_2 = param_2 + -1; + if (param_3 != 1) { + if (param_3 == 3) { + do { + param_2 = param_2 + 1; + bVar9 = *param_2; + if (bVar9 == 0x3c) { + iVar15 = iVar15 + 1; + } + iVar15 = iVar15 - (uint)(bVar9 == 0x3e); + if (iVar15 == -1) { + return param_2; + } + } while ((0x1f < bVar9) || (bVar9 == 9)); + } + else { + do { + do { + pbVar13 = param_2; + bVar9 = pbVar13[1]; + pbVar14 = pbVar13 + 1; + param_2 = pbVar14; + } while (bVar9 == 9); + } while (bVar9 == 0x20); + if (bVar9 == 0x3c) { + if (pbVar13[2] != 0x21) { + return pbVar14; + } + if (pbVar13[3] != 0x2d) { + return pbVar14; + } + if (pbVar13[4] != 0x2d) { + return pbVar14; + } + if (param_3 != 0) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLSkipSpaces(CvFileStorage*, char*, int)", + "Comments are not allowed here",0x6f6); + } + bVar9 = pbVar13[5]; + param_3 = 1; + goto LAB_00372750; + } + if (0x1f < bVar9) { + return pbVar14; + } + } + break; + } + do { + pbVar14 = param_2; + bVar9 = pbVar14[1]; + param_2 = pbVar14 + 1; + if ((bVar9 < 0x20) && (bVar9 != 9)) goto LAB_00372648; + } while ((bVar9 != 0x2d) || ((pbVar14[2] != 0x2d || (pbVar14[3] != 0x3e)))); + bVar9 = pbVar14[4]; + param_3 = 0; +LAB_00372750: + param_2 = pbVar14 + 4; + } while (0x1f < bVar9); +LAB_00372648: + param_2 = *(byte **)(param_1 + 0x80); + uVar16 = *(long *)(param_1 + 0x88) - (long)param_2; + iVar4 = (int)uVar16; + if ((bVar9 == 10 || bVar9 == 0) || (bVar9 == 0xd)) { + lVar11 = *(long *)(param_1 + 0x160); + if (lVar11 != 0) goto LAB_00372698; +LAB_00372808: + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + local_10 = *(long *)(param_1 + 0x70); + if (local_10 == 0) { + local_8 = local_10; + pcVar6 = (char *)cv::String::allocate((String *)&local_10,0x19); + cVar3 = s_The_storage_is_not_opened_00470830[0x18]; + uVar2 = s_The_storage_is_not_opened_00470830._8_8_; + uVar1 = s_The_storage_is_not_opened_00470830._0_8_; + *(undefined8 *)(pcVar6 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar6[0x18] = cVar3; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + cv::error(-2,(String *)&local_10,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11d); + cv::String::deallocate((String *)&local_10); + goto LAB_003728d4; + } + param_2 = (byte *)gzgets(local_10,param_2,uVar16 & 0xffffffff); + } + else { + param_2 = (byte *)fgets((char *)param_2,iVar4,*(FILE **)(param_1 + 0x68)); + } + if (param_2 == (byte *)0x0) goto LAB_003728d4; + } + else { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLSkipSpaces(CvFileStorage*, char*, int)", + "Invalid character in the stream",0x702); + param_2 = *(byte **)(param_1 + 0x80); + lVar11 = *(long *)(param_1 + 0x160); + if (lVar11 == 0) goto LAB_00372808; +LAB_00372698: + uVar8 = *(ulong *)(param_1 + 0x170); + uVar12 = *(ulong *)(param_1 + 0x168); + uVar16 = uVar8; + if ((uVar12 <= uVar8) || (iVar4 = iVar4 + -1, iVar4 < 1)) { +LAB_003728cc: + *param_2 = 0; + *(ulong *)(param_1 + 0x170) = uVar16; +LAB_003728d4: + pbVar14 = *(byte **)(param_1 + 0x80); + *pbVar14 = 0; + *(undefined4 *)(param_1 + 0x98) = 1; + return pbVar14; + } + bVar9 = *(byte *)(lVar11 + uVar8); + uVar16 = uVar8 + 1; + if (bVar9 == 0) goto LAB_003728cc; + *param_2 = bVar9; + if (bVar9 == 10) { + param_2[1] = 0; + *(ulong *)(param_1 + 0x170) = uVar16; + } + else { + iVar7 = 1; + do { + uVar10 = uVar16; + if ((uVar16 == uVar12) || (iVar4 <= iVar7)) break; + bVar9 = *(byte *)(lVar11 + uVar16); + uVar10 = uVar16 + 1; + if (bVar9 == 0) break; + param_2[uVar16 - uVar8] = bVar9; + iVar7 = iVar7 + 1; + uVar16 = uVar10; + } while (bVar9 != 10); + param_2[iVar7] = 0; + *(ulong *)(param_1 + 0x170) = uVar10; + } + } + sVar5 = strlen((char *)param_2); + if ((param_2[(long)(int)sVar5 + -1] == 0xd) || (param_2[(long)(int)sVar5 + -1] == 10)) + goto LAB_00372730; + if (*(long *)(param_1 + 0x160) == 0) { + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + if (*(long *)(param_1 + 0x70) == 0) goto LAB_003727e0; + iVar4 = gzeof(); + } + else { + iVar4 = feof(*(FILE **)(param_1 + 0x68)); + } + if (iVar4 != 0) goto LAB_00372730; + } + else if (*(ulong *)(param_1 + 0x168) <= *(ulong *)(param_1 + 0x170)) goto LAB_00372730; +LAB_003727e0: + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLSkipSpaces(CvFileStorage*, char*, int)", + "Too long string or a last string w/o newline",0x70f); +LAB_00372730: + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + 1; + goto LAB_003725b8; +} + + +================================================================== + +### FUNC 0037298c (516 bytes) name=FUN_0037298c + +void FUN_0037298c(long param_1,long param_2,uint param_3,long param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + char *pcVar9; + long lVar10; + undefined1 *puVar11; + int iVar12; + int iVar13; + undefined1 auVar14 [16]; + undefined1 auStack_78 [16]; + undefined8 local_68; + undefined8 uStack_60; + undefined4 local_58; + uint local_54; + char *local_50; + long local_48; + + if ((param_3 & 7) < 5) { + local_50 = (char *)0x0; + local_48 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_50,0x42); + uVar8 = s_Some_collection_type__CV_NODE_SE_00470ae0._56_8_; + uVar7 = s_Some_collection_type__CV_NODE_SE_00470ae0._48_8_; + uVar6 = s_Some_collection_type__CV_NODE_SE_00470ae0._40_8_; + uVar5 = s_Some_collection_type__CV_NODE_SE_00470ae0._32_8_; + uVar4 = s_Some_collection_type__CV_NODE_SE_00470ae0._24_8_; + uVar3 = s_Some_collection_type__CV_NODE_SE_00470ae0._16_8_; + uVar2 = s_Some_collection_type__CV_NODE_SE_00470ae0._8_8_; + uVar1 = s_Some_collection_type__CV_NODE_SE_00470ae0._0_8_; + *(undefined2 *)(pcVar9 + 0x40) = s_Some_collection_type__CV_NODE_SE_00470ae0._64_2_; + *(undefined8 *)pcVar9 = uVar1; + *(undefined8 *)(pcVar9 + 8) = uVar2; + *(undefined8 *)(pcVar9 + 0x10) = uVar3; + *(undefined8 *)(pcVar9 + 0x18) = uVar4; + *(undefined8 *)(pcVar9 + 0x20) = uVar5; + *(undefined8 *)(pcVar9 + 0x28) = uVar6; + *(undefined8 *)(pcVar9 + 0x30) = uVar7; + *(undefined8 *)(pcVar9 + 0x38) = uVar8; + cv::error(-5,(String *)&local_50, + "void icvXMLStartWriteStruct(CvFileStorage*, const char*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x940); + cv::String::deallocate((String *)&local_50); + } + iVar13 = 0; + if (param_4 != 0) { + iVar13 = 2; + local_50 = "type_id"; + local_48 = param_4; + } + *(undefined8 *)((String *)&local_50 + (long)iVar13 * 8) = 0; + FUN_00371a64(param_1,param_2,1,(String *)&local_50); + local_68 = *(undefined8 *)*(undefined1 (*) [16])(param_1 + 0x48); + uStack_60 = *(undefined8 *)(param_1 + 0x50); + local_58 = *(undefined4 *)(param_1 + 0x40); + local_54 = *(uint *)(param_1 + 0x44) & 0xffffffdf; + cvSaveMemStoragePos(*(undefined8 *)(param_1 + 0x20),auStack_78); + cvSeqPush(*(undefined8 *)(param_1 + 0x38),auStack_78); + iVar13 = *(int *)(param_1 + 0x40) + 2; + *(int *)(param_1 + 0x40) = iVar13; + if ((param_3 >> 3 & 1) == 0) { + puVar11 = *(undefined1 **)(param_1 + 0x78); + lVar10 = *(long *)(param_1 + 0x80); + iVar12 = *(int *)(param_1 + 0x58); + if ((undefined1 *)(lVar10 + iVar12) < puVar11) { + puVar11[1] = (byte)param_3 & 8; + *puVar11 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + iVar13 = *(int *)(param_1 + 0x40); + lVar10 = *(long *)(param_1 + 0x80); + iVar12 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar10; + } + if (iVar12 != iVar13) { + if (iVar12 < iVar13) { + memset((void *)(lVar10 + iVar12),0x20,(long)(iVar13 - iVar12)); + lVar10 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar13; + } + *(long *)(param_1 + 0x78) = lVar10 + iVar13; + } + *(uint *)(param_1 + 0x44) = param_3 & 0xf | 0x20; + if (param_2 != 0) { + auVar14 = cvMemStorageAllocString(*(undefined8 *)(param_1 + 0x20),param_2,0xffffffff); + *(undefined1 (*) [16])(param_1 + 0x48) = auVar14; + return; + } + *(undefined8 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x48) = 0; + return; +} + + +================================================================== + +### FUNC 00372ba4 (472 bytes) name=FUN_00372ba4 + +void FUN_00372ba4(long param_1) + +{ + undefined2 *puVar1; + uint uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + long lVar8; + char *pcVar9; + undefined1 *puVar10; + undefined1 uVar11; + int iVar12; + undefined2 *puVar13; + int iVar14; + undefined1 *puVar15; + uint local_14; + undefined8 local_10; + undefined8 local_8; + + local_14 = 0; + lVar8 = *(long *)(param_1 + 0x38); + uVar2 = *(uint *)(param_1 + 0x44); + if (*(int *)(lVar8 + 0x28) == 0) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_10,0x2c); + uVar7 = s_EndWriteStruct_w_o_matching_Star_00470b40._40_4_; + uVar6 = s_EndWriteStruct_w_o_matching_Star_00470b40._24_8_; + uVar5 = s_EndWriteStruct_w_o_matching_Star_00470b40._16_8_; + uVar4 = s_EndWriteStruct_w_o_matching_Star_00470b40._8_8_; + uVar3 = s_EndWriteStruct_w_o_matching_Star_00470b40._0_8_; + *(undefined8 *)(pcVar9 + 0x20) = s_EndWriteStruct_w_o_matching_Star_00470b40._32_8_; + *(undefined4 *)(pcVar9 + 0x28) = uVar7; + *(undefined8 *)pcVar9 = uVar3; + *(undefined8 *)(pcVar9 + 8) = uVar4; + *(undefined8 *)(pcVar9 + 0x10) = uVar5; + *(undefined8 *)(pcVar9 + 0x18) = uVar6; + cv::error(-2,(String *)&local_10,"void icvYMLEndWriteStruct(CvFileStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x61b); + cv::String::deallocate((String *)&local_10); + lVar8 = *(long *)(param_1 + 0x38); + } + cvSeqPop(lVar8,&local_14); + if ((uVar2 >> 3 & 1) == 0) { + if ((uVar2 >> 5 & 1) != 0) { + puVar15 = *(undefined1 **)(param_1 + 0x78); + lVar8 = *(long *)(param_1 + 0x80); + iVar12 = *(int *)(param_1 + 0x58); + if ((undefined1 *)(lVar8 + iVar12) < puVar15) { + puVar15[1] = (byte)uVar2 & 8; + *puVar15 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar8 = *(long *)(param_1 + 0x80); + iVar12 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar8; + } + iVar14 = *(int *)(param_1 + 0x40); + if (iVar14 != iVar12) { + if (iVar12 <= iVar14) { + memset((void *)(lVar8 + iVar12),0x20,(long)(iVar14 - iVar12)); + lVar8 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar14; + iVar12 = iVar14; + } + puVar1 = (undefined2 *)(lVar8 + iVar12); + *(undefined2 **)(param_1 + 0x78) = puVar1; + if ((uVar2 & 7) == 6) { + puVar13 = (undefined2 *)&LAB_00470b30; + } + else { + puVar13 = &DAT_00470b38; + } + *puVar1 = *puVar13; + *(undefined2 **)(param_1 + 0x78) = puVar1 + 1; + } + if ((local_14 >> 3 & 1) != 0) goto LAB_00372d18; + iVar12 = *(int *)(param_1 + 0x40); + iVar14 = 3; + } + else { + puVar10 = *(undefined1 **)(param_1 + 0x78); + puVar15 = puVar10; + if (((undefined1 *)(*(long *)(param_1 + 0x80) + (long)*(int *)(param_1 + 0x40)) < puVar10) && + ((uVar2 >> 5 & 1) == 0)) { + puVar15 = puVar10 + 1; + *puVar10 = 0x20; + } + uVar11 = 0x7d; + if ((uVar2 & 7) != 6) { + uVar11 = 0x5d; + } + *puVar15 = uVar11; + *(undefined1 **)(param_1 + 0x78) = puVar15 + 1; + if ((local_14 >> 3 & 1) != 0) goto LAB_00372d18; + iVar12 = *(int *)(param_1 + 0x40); + iVar14 = 4; + } + *(int *)(param_1 + 0x40) = iVar12 - iVar14; +LAB_00372d18: + *(uint *)(param_1 + 0x44) = local_14; + return; +} + + +================================================================== + +### FUNC 00372d90 (848 bytes) name=FUN_00372d90 + +void FUN_00372d90(long param_1,long param_2,int param_3) + +{ + uint uVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + size_t sVar10; + char *pcVar11; + void *__dest; + void *__dest_00; + ulong uVar12; + undefined1 *puVar13; + char *__s; + int iVar14; + int iVar15; + undefined1 *puVar16; + int iVar17; + undefined8 local_90; + undefined8 local_88; + char local_6b [107]; + + uVar12 = (long)param_3 >> 0x3f; + local_6b[2] = 0; + uVar12 = ((long)param_3 ^ uVar12) - uVar12; + __s = local_6b + 2; + do { + pcVar11 = __s; + cVar2 = (char)uVar12; + uVar12 = (uVar12 & 0xffffffff) / 10; + __s = pcVar11 + -1; + *__s = cVar2 + '0' + (char)uVar12 * -10; + } while ((int)uVar12 != 0); + if (param_3 < 0) { + __s = pcVar11 + -2; + pcVar11[-2] = '-'; + } + sVar10 = strlen(__s); + uVar1 = *(uint *)(param_1 + 0x44) & 7; + iVar14 = (int)sVar10; + if (uVar1 == 6) { +LAB_00372f34: + sVar10 = (size_t)iVar14; + FUN_00371a64(param_1,param_2,1,0,0); + __dest = *(void **)(param_1 + 0x78); + uVar12 = (long)__dest + sVar10; + if (*(ulong *)(param_1 + 0x88) <= uVar12) { + iVar15 = (int)__dest - (int)*(long *)(param_1 + 0x80); + iVar9 = (int)((long)((*(ulong *)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / 2); + iVar17 = iVar15 + iVar14; + if (iVar15 + iVar14 < iVar9) { + iVar17 = iVar9; + } + __dest_00 = (void *)cv::cvAlloc((long)(iVar17 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)__dest_00 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar15) { + memcpy(__dest_00,*(void **)(param_1 + 0x80),(long)iVar15); + } + __dest = (void *)((long)__dest_00 + (long)iVar15); + *(void **)(param_1 + 0x80) = __dest_00; + uVar12 = (long)__dest + sVar10; + *(long *)(param_1 + 0x88) = (long)__dest_00 + (long)iVar17; + } + memcpy(__dest,__s,sVar10); + *(ulong *)(param_1 + 0x78) = uVar12; + FUN_00371a64(param_1,param_2,2,0,0); + return; + } + if (uVar1 < 5) { + if (param_2 != 0) goto LAB_00372f34; + puVar16 = *(undefined1 **)(param_1 + 0x78); + puVar13 = *(undefined1 **)(param_1 + 0x80); + iVar17 = iVar14 + ((int)puVar16 - (int)puVar13); + } + else { + puVar16 = *(undefined1 **)(param_1 + 0x78); + puVar13 = *(undefined1 **)(param_1 + 0x80); + iVar17 = iVar14 + ((int)puVar16 - (int)puVar13); + if (param_2 != 0) { + local_90 = 0; + local_88 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_90,0x31); + uVar8 = s_elements_with_keys_can_not_be_wr_00470b70._40_8_; + uVar7 = s_elements_with_keys_can_not_be_wr_00470b70._32_8_; + uVar6 = s_elements_with_keys_can_not_be_wr_00470b70._24_8_; + uVar5 = s_elements_with_keys_can_not_be_wr_00470b70._16_8_; + uVar4 = s_elements_with_keys_can_not_be_wr_00470b70._8_8_; + uVar3 = s_elements_with_keys_can_not_be_wr_00470b70._0_8_; + pcVar11[0x30] = s_elements_with_keys_can_not_be_wr_00470b70[0x30]; + *(undefined8 *)pcVar11 = uVar3; + *(undefined8 *)(pcVar11 + 8) = uVar4; + *(undefined8 *)(pcVar11 + 0x10) = uVar5; + *(undefined8 *)(pcVar11 + 0x18) = uVar6; + *(undefined8 *)(pcVar11 + 0x20) = uVar7; + *(undefined8 *)(pcVar11 + 0x28) = uVar8; + cv::error(-5,(String *)&local_90, + "void icvXMLWriteScalar(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x99b); + cv::String::deallocate((String *)&local_90); + puVar13 = *(undefined1 **)(param_1 + 0x80); + } + } + *(undefined4 *)(param_1 + 0x44) = 5; + if ((iVar17 <= *(int *)(param_1 + 0x90)) || (iVar17 - *(int *)(param_1 + 0x40) < 0xb)) { + if (puVar16 <= puVar13) { + if ((puVar13 + *(int *)(param_1 + 0x40) < puVar16) && (puVar16[-1] != '>')) { +LAB_00372fc8: + *puVar16 = 0x20; + memcpy(puVar16 + 1,__s,(long)iVar14); + *(undefined1 **)(param_1 + 0x78) = puVar16 + 1 + iVar14; + return; + } + goto LAB_00372efc; + } + if (puVar16[-1] != '>') { + if (puVar13 + *(int *)(param_1 + 0x40) < puVar16) goto LAB_00372fc8; + goto LAB_00372efc; + } + } + puVar16 = *(undefined1 **)(param_1 + 0x78); + iVar17 = *(int *)(param_1 + 0x58); + if (puVar13 + iVar17 < puVar16) { + puVar16[1] = 0; + *puVar16 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + puVar13 = *(undefined1 **)(param_1 + 0x80); + iVar17 = *(int *)(param_1 + 0x58); + *(undefined1 **)(param_1 + 0x78) = puVar13; + } + iVar9 = *(int *)(param_1 + 0x40); + if (iVar9 != iVar17) { + if (iVar17 <= iVar9) { + memset(puVar13 + iVar17,0x20,(long)(iVar9 - iVar17)); + puVar13 = *(undefined1 **)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar9; + iVar17 = iVar9; + } + puVar16 = puVar13 + iVar17; + *(undefined1 **)(param_1 + 0x78) = puVar16; +LAB_00372efc: + memcpy(puVar16,__s,(long)iVar14); + *(undefined1 **)(param_1 + 0x78) = puVar16 + iVar14; + return; +} + + +================================================================== + +### FUNC 003730f4 (1060 bytes) name=FUN_003730f4 + +void FUN_003730f4(double param_1,long param_2,long param_3) + +{ + char cVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + uint uVar8; + int iVar9; + long lVar10; + size_t sVar11; + void *__dest; + void *__dest_00; + undefined1 *puVar12; + char *pcVar13; + int iVar14; + int iVar15; + ulong uVar16; + undefined1 *puVar17; + int iVar18; + undefined8 local_90; + undefined8 local_88; + undefined4 local_80; + undefined1 local_7c; + + uVar8 = (uint)((ulong)param_1 >> 0x20); + if ((uVar8 & 0x7ff00000) == 0x7ff00000) { + uVar8 = uVar8 & 0x7fffffff; + if (SUB84(param_1,0) != 0) { + uVar8 = uVar8 + 1; + } + if (uVar8 < 0x7ff00001) { + if ((long)param_1 < 0) { + pcVar13 = "-.Inf"; + } + else { + pcVar13 = ".Inf"; + } + strcpy((char *)&local_80,pcVar13); + } + else { + local_80 = DAT_00470bc8; + local_7c = DAT_00470bcc; + } + } + else { + lVar10 = lrint(param_1); + if (param_1 == (double)(int)lVar10) { + sprintf((char *)&local_80,"%d.",lVar10); + } + else { + pcVar13 = (char *)&local_80; + sprintf(pcVar13,"%.16e",param_1,lVar10); + cVar1 = (char)local_80; + if (((char)local_80 - 0x2bU & 0xfd) == 0) { + pcVar13 = (char *)((long)&local_80 + 1); + cVar1 = local_80._1_1_; + } + while (((int)cVar1 - 0x30U & 0xff) < 10) { + pcVar13 = pcVar13 + 1; + cVar1 = *pcVar13; + } + if (cVar1 == 0x2c) { + *pcVar13 = '.'; + } + } + } + sVar11 = strlen((char *)&local_80); + uVar8 = *(uint *)(param_2 + 0x44) & 7; + iVar14 = (int)sVar11; + if (uVar8 == 6) { +LAB_003731c8: + sVar11 = (size_t)iVar14; + FUN_00371a64(param_2,param_3,1,0,0); + __dest = *(void **)(param_2 + 0x78); + uVar16 = (long)__dest + sVar11; + if (*(ulong *)(param_2 + 0x88) <= uVar16) { + iVar15 = (int)__dest - (int)*(long *)(param_2 + 0x80); + iVar9 = (int)((long)((*(ulong *)(param_2 + 0x88) - *(long *)(param_2 + 0x80)) * 3) / 2); + iVar18 = iVar15 + iVar14; + if (iVar15 + iVar14 < iVar9) { + iVar18 = iVar9; + } + __dest_00 = (void *)cv::cvAlloc((long)(iVar18 + 0x100)); + *(long *)(param_2 + 0x78) = + (long)__dest_00 + (*(long *)(param_2 + 0x78) - (long)*(void **)(param_2 + 0x80)); + if (0 < iVar15) { + memcpy(__dest_00,*(void **)(param_2 + 0x80),(long)iVar15); + } + __dest = (void *)((long)__dest_00 + (long)iVar15); + *(void **)(param_2 + 0x80) = __dest_00; + uVar16 = (long)__dest + sVar11; + *(long *)(param_2 + 0x88) = (long)__dest_00 + (long)iVar18; + } + memcpy(__dest,&local_80,sVar11); + *(ulong *)(param_2 + 0x78) = uVar16; + FUN_00371a64(param_2,param_3,2,0,0); + return; + } + if (uVar8 < 5) { + if (param_3 != 0) goto LAB_003731c8; + puVar17 = *(undefined1 **)(param_2 + 0x78); + puVar12 = *(undefined1 **)(param_2 + 0x80); + iVar18 = iVar14 + ((int)puVar17 - (int)puVar12); + } + else { + puVar17 = *(undefined1 **)(param_2 + 0x78); + puVar12 = *(undefined1 **)(param_2 + 0x80); + iVar18 = iVar14 + ((int)puVar17 - (int)puVar12); + if (param_3 != 0) { + local_90 = 0; + local_88 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_90,0x31); + uVar7 = s_elements_with_keys_can_not_be_wr_00470b70._40_8_; + uVar6 = s_elements_with_keys_can_not_be_wr_00470b70._32_8_; + uVar5 = s_elements_with_keys_can_not_be_wr_00470b70._24_8_; + uVar4 = s_elements_with_keys_can_not_be_wr_00470b70._16_8_; + uVar3 = s_elements_with_keys_can_not_be_wr_00470b70._8_8_; + uVar2 = s_elements_with_keys_can_not_be_wr_00470b70._0_8_; + pcVar13[0x30] = s_elements_with_keys_can_not_be_wr_00470b70[0x30]; + *(undefined8 *)pcVar13 = uVar2; + *(undefined8 *)(pcVar13 + 8) = uVar3; + *(undefined8 *)(pcVar13 + 0x10) = uVar4; + *(undefined8 *)(pcVar13 + 0x18) = uVar5; + *(undefined8 *)(pcVar13 + 0x20) = uVar6; + *(undefined8 *)(pcVar13 + 0x28) = uVar7; + cv::error(-5,(String *)&local_90, + "void icvXMLWriteScalar(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x99b); + cv::String::deallocate((String *)&local_90); + puVar12 = *(undefined1 **)(param_2 + 0x80); + } + } + *(undefined4 *)(param_2 + 0x44) = 5; + if ((iVar18 <= *(int *)(param_2 + 0x90)) || (iVar18 - *(int *)(param_2 + 0x40) < 0xb)) { + if (puVar17 <= puVar12) { + if ((puVar12 + *(int *)(param_2 + 0x40) < puVar17) && (puVar17[-1] != '>')) { +LAB_003733a4: + *puVar17 = 0x20; + memcpy(puVar17 + 1,&local_80,(long)iVar14); + *(undefined1 **)(param_2 + 0x78) = puVar17 + 1 + iVar14; + return; + } + goto LAB_00373348; + } + if (puVar17[-1] != '>') { + if (puVar12 + *(int *)(param_2 + 0x40) < puVar17) goto LAB_003733a4; + goto LAB_00373348; + } + } + puVar17 = *(undefined1 **)(param_2 + 0x78); + iVar18 = *(int *)(param_2 + 0x58); + if (puVar12 + iVar18 < puVar17) { + puVar17[1] = 0; + *puVar17 = 10; + FUN_0037127c(param_2,*(undefined8 *)(param_2 + 0x80)); + iVar18 = *(int *)(param_2 + 0x58); + puVar12 = *(undefined1 **)(param_2 + 0x80); + *(undefined1 **)(param_2 + 0x78) = puVar12; + } + iVar9 = *(int *)(param_2 + 0x40); + if (iVar9 != iVar18) { + if (iVar18 <= iVar9) { + memset(puVar12 + iVar18,0x20,(long)(iVar9 - iVar18)); + puVar12 = *(undefined1 **)(param_2 + 0x80); + } + *(int *)(param_2 + 0x58) = iVar9; + iVar18 = iVar9; + } + puVar17 = puVar12 + iVar18; + *(undefined1 **)(param_2 + 0x78) = puVar17; +LAB_00373348: + memcpy(puVar17,&local_80,(long)iVar14); + *(undefined1 **)(param_2 + 0x78) = puVar17 + iVar14; + return; +} + + +================================================================== + +### FUNC 0037352c (600 bytes) name=FUN_0037352c + +void FUN_0037352c(long param_1) + +{ + undefined2 *puVar1; + bool bVar2; + int iVar3; + long lVar4; + int iVar5; + undefined1 *puVar6; + undefined1 *puVar7; + undefined1 uVar8; + uint uVar9; + uint uVar10; + int iVar11; + uint local_4; + + if (*(int *)(param_1 + 0xc) != 0) { + return; + } + lVar4 = *(long *)(param_1 + 0x38); + if (0 < *(int *)(lVar4 + 0x28)) { + uVar10 = *(uint *)(param_1 + 0x44) & 8; + uVar9 = *(uint *)(param_1 + 0x44); + do { + local_4 = 0; + cvSeqPop(lVar4,&local_4); + if (uVar10 == 0) { + if ((uVar9 >> 5 & 1) != 0) { + puVar6 = *(undefined1 **)(param_1 + 0x78); + lVar4 = *(long *)(param_1 + 0x80); + iVar3 = *(int *)(param_1 + 0x58); + if ((undefined1 *)(lVar4 + iVar3) < puVar6) { + *puVar6 = 10; + puVar6[1] = 0; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar4 = *(long *)(param_1 + 0x80); + iVar3 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar4; + } + iVar5 = *(int *)(param_1 + 0x40); + if (iVar5 != iVar3) { + if (iVar3 <= iVar5) { + memset((void *)(lVar4 + iVar3),0x20,(long)(iVar5 - iVar3)); + lVar4 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar5; + iVar3 = iVar5; + } + puVar1 = (undefined2 *)&LAB_00470b30; + if ((uVar9 & 7) != 6) { + puVar1 = &DAT_00470b38; + } + *(undefined2 *)(lVar4 + iVar3) = *puVar1; + *(undefined2 **)(param_1 + 0x78) = (undefined2 *)(lVar4 + iVar3) + 1; + } + uVar10 = local_4 & 8; + if ((local_4 >> 3 & 1) == 0) { + iVar3 = *(int *)(param_1 + 0x40); + iVar5 = 3; + goto LAB_003735ec; + } + } + else { + puVar7 = *(undefined1 **)(param_1 + 0x78); + puVar6 = puVar7; + if (((undefined1 *)(*(long *)(param_1 + 0x80) + (long)*(int *)(param_1 + 0x40)) < puVar7) && + ((uVar9 >> 5 & 1) == 0)) { + puVar6 = puVar7 + 1; + *puVar7 = 0x20; + } + uVar8 = 0x7d; + if ((uVar9 & 7) != 6) { + uVar8 = 0x5d; + } + *puVar6 = uVar8; + *(undefined1 **)(param_1 + 0x78) = puVar6 + 1; + uVar10 = local_4 & 8; + if ((local_4 >> 3 & 1) == 0) { + iVar3 = *(int *)(param_1 + 0x40); + iVar5 = 4; +LAB_003735ec: + *(int *)(param_1 + 0x40) = iVar3 - iVar5; + } + } + lVar4 = *(long *)(param_1 + 0x38); + *(uint *)(param_1 + 0x44) = local_4; + uVar9 = local_4; + } while (0 < *(int *)(lVar4 + 0x28)); + } + puVar6 = *(undefined1 **)(param_1 + 0x78); + lVar4 = *(long *)(param_1 + 0x80); + iVar3 = *(int *)(param_1 + 0x58); + *(undefined4 *)(param_1 + 0x40) = 0; + if ((undefined1 *)(lVar4 + iVar3) < puVar6) { + puVar6[1] = 0; + *puVar6 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + iVar11 = *(int *)(param_1 + 0x40); + iVar3 = *(int *)(param_1 + 0x58); + lVar4 = *(long *)(param_1 + 0x80); + *(long *)(param_1 + 0x78) = lVar4; + bVar2 = SBORROW4(iVar3,iVar11); + iVar5 = iVar3 - iVar11; + if (iVar3 == iVar11) goto LAB_00373634; + } + else { + bVar2 = false; + iVar11 = 0; + iVar5 = iVar3; + if (iVar3 == 0) goto LAB_00373634; + } + if (iVar5 < 0 == bVar2) { + *(int *)(param_1 + 0x58) = iVar11; + } + else { + memset((void *)(lVar4 + iVar3),0x20,(long)(iVar11 - iVar3)); + *(int *)(param_1 + 0x58) = iVar11; + lVar4 = *(long *)(param_1 + 0x80); + } +LAB_00373634: + *(long *)(param_1 + 0x78) = lVar4 + iVar11; + FUN_0037127c(param_1,&DAT_00470bd0); + FUN_0037127c(param_1,&DAT_00470bd8); + *(undefined8 *)(param_1 + 0x78) = *(undefined8 *)(param_1 + 0x80); + return; +} + + +================================================================== + +### FUNC 00373784 (320 bytes) name=FUN_00373784 + +void FUN_00373784(long param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + bool bVar4; + bool bVar5; + long lVar6; + undefined1 *puVar7; + undefined1 auStack_28 [16]; + undefined8 local_18; + undefined8 uStack_10; + undefined4 local_8; + undefined4 local_4; + + if (*(int *)(param_1 + 0xc) == 0) { + if (0 < *(int *)(*(long *)(param_1 + 0x38) + 0x28)) { + do { + FUN_00371a64(param_1,*(undefined8 *)(param_1 + 0x50),2,0,0); + cvSeqPop(*(undefined8 *)(param_1 + 0x38),auStack_28); + *(undefined4 *)(param_1 + 0x40) = local_8; + *(undefined4 *)(param_1 + 0x44) = local_4; + *(undefined8 *)(param_1 + 0x48) = local_18; + *(undefined8 *)(param_1 + 0x50) = uStack_10; + cvRestoreMemStoragePos(*(undefined8 *)(param_1 + 0x20),auStack_28); + } while (0 < *(int *)(*(long *)(param_1 + 0x38) + 0x28)); + } + puVar7 = *(undefined1 **)(param_1 + 0x78); + lVar6 = *(long *)(param_1 + 0x80); + iVar2 = *(int *)(param_1 + 0x58); + *(undefined4 *)(param_1 + 0x40) = 0; + if ((undefined1 *)(lVar6 + iVar2) < puVar7) { + puVar7[1] = 0; + *puVar7 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + iVar3 = *(int *)(param_1 + 0x40); + iVar2 = *(int *)(param_1 + 0x58); + lVar6 = *(long *)(param_1 + 0x80); + *(long *)(param_1 + 0x78) = lVar6; + bVar4 = SBORROW4(iVar3,iVar2); + iVar1 = iVar3 - iVar2; + bVar5 = iVar3 == iVar2; + } + else { + bVar4 = SBORROW4(0,iVar2); + iVar1 = -iVar2; + bVar5 = iVar2 == 0; + iVar3 = 0; + } + if (!bVar5) { + if (bVar5 || iVar1 < 0 != bVar4) { + *(int *)(param_1 + 0x58) = iVar3; + } + else { + memset((void *)(lVar6 + iVar2),0x20,(long)(iVar3 - iVar2)); + *(int *)(param_1 + 0x58) = iVar3; + lVar6 = *(long *)(param_1 + 0x80); + } + } + *(long *)(param_1 + 0x78) = lVar6 + iVar3; + FUN_0037127c(param_1,"\n\n"); + *(undefined8 *)(param_1 + 0x78) = *(undefined8 *)(param_1 + 0x80); + } + return; +} + + +================================================================== + +### FUNC 003738c4 (1656 bytes) name=FUN_003738c4 + +void FUN_003738c4(long param_1,long param_2,char *param_3,int param_4) + +{ + uint uVar1; + char cVar2; + byte bVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined4 uVar11; + undefined2 uVar12; + int iVar13; + int iVar14; + size_t sVar15; + void *__dest; + byte *__s; + char *pcVar16; + void *__dest_00; + byte *pbVar17; + undefined1 *puVar18; + int iVar19; + byte *pbVar20; + ulong uVar21; + int iVar22; + long lVar23; + undefined1 *puVar24; + undefined8 local_6020; + undefined8 local_6018; + undefined8 local_6010; + char *local_6008; + undefined1 auStack_6000 [24576]; + + if (param_3 == (char *)0x0) { + local_6010 = param_3; + local_6008 = param_3; + pcVar16 = (char *)cv::String::allocate((String *)&local_6010,0x13); + cVar2 = s_Null_string_pointer_00470bf8[0x12]; + uVar6 = s_Null_string_pointer_00470bf8._8_8_; + uVar5 = s_Null_string_pointer_00470bf8._0_8_; + *(undefined2 *)(pcVar16 + 0x10) = s_Null_string_pointer_00470bf8._16_2_; + pcVar16[0x12] = cVar2; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + cv::error(-0x1b,(String *)&local_6010, + "void icvXMLWriteString(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x9c7); + cv::String::deallocate((String *)&local_6010); + } + sVar15 = strlen(param_3); + iVar13 = (int)sVar15; + if (0x1000 < iVar13) { + local_6010 = (char *)0x0; + local_6008 = (char *)0x0; + pcVar16 = (char *)cv::String::allocate((String *)&local_6010,0x1e); + uVar12 = s_The_written_string_is_too_long_00470c10._28_2_; + uVar11 = s_The_written_string_is_too_long_00470c10._24_4_; + uVar6 = s_The_written_string_is_too_long_00470c10._8_8_; + uVar5 = s_The_written_string_is_too_long_00470c10._0_8_; + *(undefined8 *)(pcVar16 + 0x10) = s_The_written_string_is_too_long_00470c10._16_8_; + *(undefined4 *)(pcVar16 + 0x18) = uVar11; + *(undefined2 *)(pcVar16 + 0x1c) = uVar12; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + cv::error(-5,(String *)&local_6010, + "void icvXMLWriteString(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x9cb); + cv::String::deallocate((String *)&local_6010); + } + if ((iVar13 == 0) || (param_4 != 0)) { + bVar4 = true; + local_6010 = (char *)CONCAT71(local_6010._1_7_,0x22); + if (0 < iVar13) goto LAB_00373944; + pbVar20 = (byte *)((long)&local_6010 + 1); +LAB_00373b0c: + pbVar17 = pbVar20 + 1; + param_3 = (char *)&local_6010; + iVar13 = 0; + *pbVar20 = 0x22; +LAB_00373a40: + *pbVar17 = 0; + iVar13 = ((int)pbVar17 - ((int)auStack_6000 + -0x10)) - iVar13; + } + else { + cVar2 = *param_3; + if (cVar2 != '\"') { + bVar4 = false; + if (0 < iVar13) goto LAB_00373944; +LAB_00373f18: + local_6010 = (char *)CONCAT71(local_6010._1_7_,0x22); + pbVar20 = (byte *)((long)&local_6010 + 1); +LAB_00373a04: + if (((byte)(cVar2 - 0x30U) < 10 || (byte)(cVar2 - 0x2dU) < 2) || (cVar2 == '+')) + goto LAB_00373b0c; + param_3 = (char *)((long)&local_6010 + 1); + iVar13 = 1; + pbVar17 = pbVar20; + goto LAB_00373a40; + } + if (param_3[(long)iVar13 + -1] != '\"') { + bVar4 = false; + if (iVar13 < 1) goto LAB_00373f18; +LAB_00373944: + local_6010 = (char *)CONCAT71(local_6010._1_7_,0x22); + lVar23 = 0; + pbVar20 = (byte *)((long)&local_6010 + 1); + do { + while ((bVar3 = param_3[lVar23], bVar3 != 0x20 && (-1 < (char)bVar3))) { + if ((bVar3 < 0x20) || (bVar3 == 0x3c)) { + *pbVar20 = 0x26; + if (bVar3 == 0x3c) { + pbVar17 = pbVar20 + 3; + *(undefined2 *)(pbVar20 + 1) = DAT_00470c30; + } + else { + if (bVar3 != 0x3e) goto LAB_00373b40; +LAB_00373b7c: + pbVar17 = pbVar20 + 3; + *(undefined2 *)(pbVar20 + 1) = DAT_00470c38; + } +LAB_003739bc: + *pbVar17 = 0x3b; + bVar4 = true; + pbVar20 = pbVar17; + } + else { + if ((bVar3 == 0x3e) || ((byte)(bVar3 - 0x26) < 2)) { + *pbVar20 = 0x26; + if (bVar3 == 0x3e) goto LAB_00373b7c; +LAB_00373b40: + __s = pbVar20 + 1; + if (bVar3 == 0x26) { + pbVar17 = pbVar20 + 4; + *(undefined2 *)__s = DAT_00470c40; + pbVar20[3] = DAT_00470c42; + } + else if (bVar3 == 0x27) { + pbVar17 = pbVar20 + 5; + *(undefined4 *)__s = DAT_00470c48; + } + else { + if (bVar3 == 0x22) goto LAB_003739b0; + sprintf((char *)__s,"#x%02x"); + pbVar17 = pbVar20 + 5; + } + goto LAB_003739bc; + } + if (bVar3 == 0x22) { + *pbVar20 = 0x26; +LAB_003739b0: + pbVar17 = pbVar20 + 5; + *(undefined4 *)(pbVar20 + 1) = DAT_00470c50; + goto LAB_003739bc; + } + *pbVar20 = bVar3; + } + pbVar20 = pbVar20 + 1; + lVar23 = lVar23 + 1; + if (iVar13 <= (int)lVar23) goto LAB_003739fc; + } + lVar23 = lVar23 + 1; + *pbVar20 = bVar3; + bVar4 = true; + pbVar20 = pbVar20 + 1; + } while ((int)lVar23 < iVar13); +LAB_003739fc: + if (bVar4) goto LAB_00373b0c; + cVar2 = *param_3; + goto LAB_00373a04; + } + } + uVar1 = *(uint *)(param_1 + 0x44) & 7; + if (uVar1 == 6) { +LAB_00373a6c: + sVar15 = (size_t)iVar13; + FUN_00371a64(param_1,param_2,1,0,0); + __dest = *(void **)(param_1 + 0x78); + uVar21 = (long)__dest + sVar15; + if (*(ulong *)(param_1 + 0x88) <= uVar21) { + iVar22 = (int)__dest - (int)*(long *)(param_1 + 0x80); + iVar14 = (int)((long)((*(ulong *)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / 2); + iVar19 = iVar13 + iVar22; + if (iVar13 + iVar22 < iVar14) { + iVar19 = iVar14; + } + __dest_00 = (void *)cv::cvAlloc((long)(iVar19 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)__dest_00 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar22) { + memcpy(__dest_00,*(void **)(param_1 + 0x80),(long)iVar22); + } + __dest = (void *)((long)__dest_00 + (long)iVar22); + *(void **)(param_1 + 0x80) = __dest_00; + uVar21 = (long)__dest + sVar15; + *(long *)(param_1 + 0x88) = (long)__dest_00 + (long)iVar19; + } + memcpy(__dest,param_3,sVar15); + *(ulong *)(param_1 + 0x78) = uVar21; + FUN_00371a64(param_1,param_2,2,0,0); + return; + } + if (uVar1 < 5) { + if (param_2 != 0) goto LAB_00373a6c; + puVar24 = *(undefined1 **)(param_1 + 0x78); + puVar18 = *(undefined1 **)(param_1 + 0x80); + iVar19 = iVar13 + ((int)puVar24 - (int)puVar18); + } + else { + puVar24 = *(undefined1 **)(param_1 + 0x78); + puVar18 = *(undefined1 **)(param_1 + 0x80); + iVar19 = iVar13 + ((int)puVar24 - (int)puVar18); + if (param_2 != 0) { + local_6020 = 0; + local_6018 = 0; + pcVar16 = (char *)cv::String::allocate((String *)&local_6020,0x31); + uVar10 = s_elements_with_keys_can_not_be_wr_00470b70._40_8_; + uVar9 = s_elements_with_keys_can_not_be_wr_00470b70._32_8_; + uVar8 = s_elements_with_keys_can_not_be_wr_00470b70._24_8_; + uVar7 = s_elements_with_keys_can_not_be_wr_00470b70._16_8_; + uVar6 = s_elements_with_keys_can_not_be_wr_00470b70._8_8_; + uVar5 = s_elements_with_keys_can_not_be_wr_00470b70._0_8_; + pcVar16[0x30] = s_elements_with_keys_can_not_be_wr_00470b70[0x30]; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + *(undefined8 *)(pcVar16 + 0x10) = uVar7; + *(undefined8 *)(pcVar16 + 0x18) = uVar8; + *(undefined8 *)(pcVar16 + 0x20) = uVar9; + *(undefined8 *)(pcVar16 + 0x28) = uVar10; + cv::error(-5,(String *)&local_6020, + "void icvXMLWriteScalar(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x99b); + cv::String::deallocate((String *)&local_6020); + puVar18 = *(undefined1 **)(param_1 + 0x80); + } + } + *(undefined4 *)(param_1 + 0x44) = 5; + if ((iVar19 <= *(int *)(param_1 + 0x90)) || (iVar19 - *(int *)(param_1 + 0x40) < 0xb)) { + if (puVar24 <= puVar18) { + if ((puVar18 + *(int *)(param_1 + 0x40) < puVar24) && (puVar24[-1] != '>')) { +LAB_00373d70: + *puVar24 = 0x20; + memcpy(puVar24 + 1,param_3,(long)iVar13); + *(undefined1 **)(param_1 + 0x78) = puVar24 + 1 + iVar13; + return; + } + goto LAB_00373d2c; + } + if (puVar24[-1] != '>') { + if (puVar18 + *(int *)(param_1 + 0x40) < puVar24) goto LAB_00373d70; + goto LAB_00373d2c; + } + } + puVar24 = *(undefined1 **)(param_1 + 0x78); + iVar19 = *(int *)(param_1 + 0x58); + if (puVar18 + iVar19 < puVar24) { + puVar24[1] = 0; + *puVar24 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + iVar19 = *(int *)(param_1 + 0x58); + puVar18 = *(undefined1 **)(param_1 + 0x80); + *(undefined1 **)(param_1 + 0x78) = puVar18; + } + iVar14 = *(int *)(param_1 + 0x40); + if (iVar14 != iVar19) { + if (iVar19 <= iVar14) { + memset(puVar18 + iVar19,0x20,(long)(iVar14 - iVar19)); + puVar18 = *(undefined1 **)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar14; + iVar19 = iVar14; + } + puVar24 = puVar18 + iVar19; + *(undefined1 **)(param_1 + 0x78) = puVar24; +LAB_00373d2c: + memcpy(puVar24,param_3,(long)iVar13); + *(undefined1 **)(param_1 + 0x78) = puVar24 + iVar13; + return; +} + + +================================================================== + +### FUNC 00373f78 (1500 bytes) name=FUN_00373f78 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00373f78(long param_1,char *param_2,int param_3) + +{ + undefined4 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + bool bVar8; + bool bVar9; + int iVar10; + char *pcVar11; + undefined8 *puVar12; + size_t sVar13; + long lVar14; + void *pvVar15; + char *pcVar16; + long lVar17; + int iVar18; + char *pcVar19; + int iVar20; + char *pcVar21; + size_t __n; + char *local_10; + char *local_8; + + if (param_2 == (char *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0xc); + uVar1 = s_Null_comment_00470c60._8_4_; + *(undefined8 *)pcVar11 = s_Null_comment_00470c60._0_8_; + *(undefined4 *)(pcVar11 + 8) = uVar1; + cv::error(-0x1b,(String *)&local_10,"void icvXMLWriteComment(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xa1a); + cv::String::deallocate((String *)&local_10); + } + pcVar11 = strstr(param_2,"--"); + if (pcVar11 != (char *)0x0) { + local_10 = (char *)0x0; + local_8 = (char *)0x0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_10,0x31); + uVar7 = _LAB_00470ca0; + uVar6 = _DAT_00470c98; + uVar5 = DAT_00470c90; + uVar4 = DAT_00470c88; + uVar3 = DAT_00470c80; + uVar2 = DAT_00470c78; + *(undefined1 *)(puVar12 + 6) = LAB_00470ca8; + *puVar12 = uVar2; + puVar12[1] = uVar3; + puVar12[2] = uVar4; + puVar12[3] = uVar5; + puVar12[4] = uVar6; + puVar12[5] = uVar7; + cv::error(-5,(String *)&local_10,"void icvXMLWriteComment(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xa1d); + cv::String::deallocate((String *)&local_10); + } + sVar13 = strlen(param_2); + pcVar11 = strchr(param_2,10); + bVar8 = pcVar11 != (char *)0x0; + pcVar19 = *(char **)(param_1 + 0x78); + if (((bVar8) || (param_3 == 0)) || + (pcVar16 = *(char **)(param_1 + 0x88), (long)pcVar16 - (long)pcVar19 < (long)((int)sVar13 + 5)) + ) { + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + if ((char *)(lVar17 + iVar10) < pcVar19) { + pcVar19[1] = '\0'; + *pcVar19 = '\n'; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar17; + } + iVar18 = *(int *)(param_1 + 0x40); + if (iVar18 != iVar10) { + if (iVar10 <= iVar18) { + memset((void *)(lVar17 + iVar10),0x20,(long)(iVar18 - iVar10)); + lVar17 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar18; + iVar10 = iVar18; + } + pcVar21 = (char *)(lVar17 + iVar10); + *(char **)(param_1 + 0x78) = pcVar21; + if (!bVar8) goto LAB_003740a0; + lVar14 = 4; + *(undefined4 *)(lVar17 + iVar10) = _LAB_00470cc0; + pcVar21[4] = LAB_00470cc4; + pcVar19 = pcVar21 + 4; + *(char **)(param_1 + 0x78) = pcVar19; + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + if (pcVar19 <= (char *)(lVar17 + iVar10)) goto LAB_003740f0; + } + else { + pcVar21 = pcVar19; + if ((char *)(*(long *)(param_1 + 0x80) + (long)*(int *)(param_1 + 0x40)) < pcVar19) { + pcVar21 = pcVar19 + 1; + *pcVar19 = ' '; +LAB_003740a0: + pcVar16 = *(char **)(param_1 + 0x88); + } + iVar10 = (int)sVar13 + 9; + if (pcVar16 <= pcVar21 + iVar10) { + iVar18 = (int)pcVar21 - (int)*(long *)(param_1 + 0x80); + iVar10 = iVar10 + iVar18; + iVar20 = (int)((((long)pcVar16 - *(long *)(param_1 + 0x80)) * 3) / 2); + if (iVar10 < iVar20) { + iVar10 = iVar20; + } + pvVar15 = (void *)cv::cvAlloc((long)(iVar10 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar15 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar18) { + memcpy(pvVar15,*(void **)(param_1 + 0x80),(long)iVar18); + } + *(void **)(param_1 + 0x80) = pvVar15; + *(long *)(param_1 + 0x88) = (long)pvVar15 + (long)iVar10; + pcVar21 = (char *)((long)pvVar15 + (long)iVar18); + } + sprintf(pcVar21,"",param_2); + sVar13 = strlen(pcVar21); + lVar14 = (long)(int)sVar13; + pcVar19 = pcVar21 + lVar14; + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + *(char **)(param_1 + 0x78) = pcVar19; + if (pcVar19 <= (char *)(lVar17 + iVar10)) goto LAB_003740f0; + } + pcVar21[lVar14] = '\n'; + pcVar19[1] = '\0'; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar17; +LAB_003740f0: + iVar18 = *(int *)(param_1 + 0x40); + if (iVar10 != iVar18) { + if (iVar10 < iVar18) { + memset((void *)(lVar17 + iVar10),0x20,(long)(iVar18 - iVar10)); + lVar17 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar18; + } + pcVar19 = (char *)(lVar17 + iVar18); + *(char **)(param_1 + 0x78) = pcVar19; + if (bVar8) { + do { + if (pcVar11 == (char *)0x0) { + sVar13 = strlen(param_2); + __n = (size_t)(int)sVar13; + pcVar16 = pcVar19 + __n; + if (*(char **)(param_1 + 0x88) <= pcVar16) { + iVar18 = (int)pcVar19 - (int)lVar17; + iVar10 = iVar18 + (int)sVar13; + iVar20 = (int)((((long)*(char **)(param_1 + 0x88) - lVar17) * 3) / 2); + if (iVar10 < iVar20) { + iVar10 = iVar20; + } + pvVar15 = (void *)cv::cvAlloc((long)(iVar10 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar15 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar18) { + memcpy(pvVar15,*(void **)(param_1 + 0x80),(long)iVar18); + } + pcVar19 = (char *)((long)pvVar15 + (long)iVar18); + *(void **)(param_1 + 0x80) = pvVar15; + pcVar16 = pcVar19 + __n; + *(long *)(param_1 + 0x88) = (long)pvVar15 + (long)iVar10; + } + pcVar21 = (char *)0x0; + memcpy(pcVar19,param_2,__n); + } + else { + lVar14 = (long)pcVar11 - (long)param_2; + iVar10 = (int)lVar14 + 1; + if (*(char **)(param_1 + 0x88) <= pcVar19 + iVar10) { + iVar18 = (int)pcVar19 - (int)lVar17; + iVar10 = iVar10 + iVar18; + iVar20 = (int)((((long)*(char **)(param_1 + 0x88) - lVar17) * 3) / 2); + if (iVar10 < iVar20) { + iVar10 = iVar20; + } + pvVar15 = (void *)cv::cvAlloc((long)(iVar10 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar15 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar18) { + memcpy(pvVar15,*(void **)(param_1 + 0x80),(long)iVar18); + } + *(void **)(param_1 + 0x80) = pvVar15; + *(long *)(param_1 + 0x88) = (long)pvVar15 + (long)iVar10; + pcVar19 = (char *)((long)pvVar15 + (long)iVar18); + } + pcVar21 = pcVar11 + 1; + pcVar16 = pcVar19 + lVar14; + memcpy(pcVar19,param_2,lVar14 + 1); + pcVar11 = strchr(pcVar21,10); + } + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + *(char **)(param_1 + 0x78) = pcVar16; + if ((char *)(lVar17 + iVar10) < pcVar16) { + *pcVar16 = '\n'; + pcVar16[1] = '\0'; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar17; + } + iVar18 = *(int *)(param_1 + 0x40); + if (iVar18 != iVar10) { + if (iVar10 <= iVar18) { + memset((void *)(lVar17 + iVar10),0x20,(long)(iVar18 - iVar10)); + lVar17 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar18; + iVar10 = iVar18; + } + pcVar19 = (char *)(lVar17 + iVar10); + *(char **)(param_1 + 0x78) = pcVar19; + param_2 = pcVar21; + } while (pcVar21 != (char *)0x0); + *(undefined4 *)pcVar19 = s_<_____s___>_00470cb0._8_4_; + lVar17 = *(long *)(param_1 + 0x80); + iVar10 = *(int *)(param_1 + 0x58); + *(char **)(param_1 + 0x78) = pcVar19 + 3; + if ((char *)(lVar17 + iVar10) < pcVar19 + 3) { + pcVar19[4] = '\0'; + pcVar19[3] = '\n'; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + iVar20 = *(int *)(param_1 + 0x40); + iVar10 = *(int *)(param_1 + 0x58); + lVar17 = *(long *)(param_1 + 0x80); + *(long *)(param_1 + 0x78) = lVar17; + bVar8 = SBORROW4(iVar20,iVar10); + iVar18 = iVar20 - iVar10; + bVar9 = iVar20 == iVar10; + } + else { + iVar20 = *(int *)(param_1 + 0x40); + bVar8 = SBORROW4(iVar20,iVar10); + iVar18 = iVar20 - iVar10; + bVar9 = iVar20 == iVar10; + } + if (!bVar9) { + if (!bVar9 && iVar18 < 0 == bVar8) { + memset((void *)(lVar17 + iVar10),0x20,(long)(iVar20 - iVar10)); + lVar17 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar20; + iVar10 = iVar20; + } + *(long *)(param_1 + 0x78) = lVar17 + iVar10; + } + return; +} + + +================================================================== + +### FUNC 0037457c (888 bytes) name=FUN_0037457c + +void FUN_0037457c(long param_1,char *param_2,int param_3) + +{ + undefined4 uVar1; + size_t sVar2; + char *pcVar3; + undefined1 *puVar4; + void *pvVar5; + undefined1 *puVar6; + int iVar7; + long lVar8; + int iVar9; + int iVar10; + char *__s; + size_t __n; + char *local_10; + char *local_8; + + if (param_2 == (char *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar3 = (char *)cv::String::allocate((String *)&local_10,0xc); + uVar1 = s_Null_comment_00470c60._8_4_; + *(undefined8 *)pcVar3 = s_Null_comment_00470c60._0_8_; + *(undefined4 *)(pcVar3 + 8) = uVar1; + cv::error(-0x1b,(String *)&local_10,"void icvYMLWriteComment(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x69e); + cv::String::deallocate((String *)&local_10); + } + sVar2 = strlen(param_2); + pcVar3 = strchr(param_2,10); + puVar6 = *(undefined1 **)(param_1 + 0x78); + if (((pcVar3 == (char *)0x0) && (param_3 != 0)) && + ((long)(int)sVar2 <= *(long *)(param_1 + 0x88) - (long)puVar6)) { + puVar4 = *(undefined1 **)(param_1 + 0x80); + if (puVar4 != puVar6) { + puVar4 = puVar6 + 1; + *puVar6 = 0x20; + pcVar3 = (char *)0x0; + goto LAB_00374648; + } + } + else { + puVar4 = *(undefined1 **)(param_1 + 0x80); + } + iVar7 = *(int *)(param_1 + 0x58); + if (puVar4 + iVar7 < puVar6) { + puVar6[1] = 0; + *puVar6 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + puVar4 = *(undefined1 **)(param_1 + 0x80); + iVar7 = *(int *)(param_1 + 0x58); + *(undefined1 **)(param_1 + 0x78) = puVar4; + } + iVar9 = *(int *)(param_1 + 0x40); + if (iVar9 != iVar7) { + if (iVar7 <= iVar9) { + memset(puVar4 + iVar7,0x20,(long)(iVar9 - iVar7)); + puVar4 = *(undefined1 **)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar9; + iVar7 = iVar9; + } + puVar4 = puVar4 + iVar7; + *(undefined1 **)(param_1 + 0x78) = puVar4; +LAB_00374648: + do { + puVar6 = puVar4 + 2; + *puVar4 = 0x23; + puVar4[1] = 0x20; + if (pcVar3 == (char *)0x0) { + sVar2 = strlen(param_2); + __n = (size_t)(int)sVar2; + puVar4 = puVar6 + __n; + if (*(undefined1 **)(param_1 + 0x88) <= puVar4) { + iVar10 = (int)puVar6 - (int)*(long *)(param_1 + 0x80); + iVar7 = iVar10 + (int)sVar2; + iVar9 = (int)((((long)*(undefined1 **)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / 2 + ); + if (iVar7 < iVar9) { + iVar7 = iVar9; + } + pvVar5 = (void *)cv::cvAlloc((long)(iVar7 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar5 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar10) { + memcpy(pvVar5,*(void **)(param_1 + 0x80),(long)iVar10); + } + puVar6 = (undefined1 *)((long)pvVar5 + (long)iVar10); + *(void **)(param_1 + 0x80) = pvVar5; + puVar4 = puVar6 + __n; + *(long *)(param_1 + 0x88) = (long)pvVar5 + (long)iVar7; + } + __s = (char *)0x0; + memcpy(puVar6,param_2,__n); + *(undefined1 **)(param_1 + 0x78) = puVar4; + } + else { + lVar8 = (long)pcVar3 - (long)param_2; + iVar7 = (int)lVar8 + 1; + if (*(undefined1 **)(param_1 + 0x88) <= puVar6 + iVar7) { + iVar9 = (int)puVar6 - (int)*(long *)(param_1 + 0x80); + iVar7 = iVar7 + iVar9; + iVar10 = (int)((((long)*(undefined1 **)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / + 2); + if (iVar7 < iVar10) { + iVar7 = iVar10; + } + pvVar5 = (void *)cv::cvAlloc((long)(iVar7 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar5 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar9) { + memcpy(pvVar5,*(void **)(param_1 + 0x80),(long)iVar9); + } + *(void **)(param_1 + 0x80) = pvVar5; + *(long *)(param_1 + 0x88) = (long)pvVar5 + (long)iVar7; + puVar6 = (undefined1 *)((long)pvVar5 + (long)iVar9); + } + __s = pcVar3 + 1; + puVar4 = puVar6 + lVar8; + memcpy(puVar6,param_2,lVar8 + 1); + *(undefined1 **)(param_1 + 0x78) = puVar4; + pcVar3 = strchr(__s,10); + } + lVar8 = *(long *)(param_1 + 0x80); + iVar7 = *(int *)(param_1 + 0x58); + if ((undefined1 *)(lVar8 + iVar7) < puVar4) { + *puVar4 = 10; + puVar4[1] = 0; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar8 = *(long *)(param_1 + 0x80); + iVar7 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar8; + } + iVar9 = *(int *)(param_1 + 0x40); + if (iVar9 != iVar7) { + if (iVar7 <= iVar9) { + memset((void *)(lVar8 + iVar7),0x20,(long)(iVar9 - iVar7)); + lVar8 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar9; + iVar7 = iVar9; + } + puVar4 = (undefined1 *)(lVar8 + iVar7); + *(undefined1 **)(param_1 + 0x78) = puVar4; + param_2 = __s; + } while (__s != (char *)0x0); + return; +} + + +================================================================== + +### FUNC 00374908 (1604 bytes) name=FUN_00374908 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00374908(long param_1,undefined8 param_2,uint *param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + int iVar7; + uint uVar8; + int iVar9; + undefined8 uVar10; + undefined1 uVar11; + undefined8 *puVar12; + undefined8 uVar13; + long lVar14; + uint *puVar15; + int iVar16; + int iVar17; + int iVar18; + undefined1 auStack_c0 [24]; + uint *local_a8; + uint *local_98; + undefined1 auStack_80 [24]; + uint *local_68; + uint *local_58; + undefined8 local_40; + undefined8 local_38; + int *local_28; + int *local_18; + + switch(*param_3 & 7) { + case 0: +switchD_003749f4_caseD_0: + (**(code **)(param_1 + 0x128))(param_1,param_2,5,0); + goto LAB_00374b78; + case 1: + (**(code **)(param_1 + 0x138))(param_1,param_2,param_3[4]); + break; + case 2: + (**(code **)(param_1 + 0x140))(*(undefined8 *)(param_3 + 4),param_1); + break; + case 3: + (**(code **)(param_1 + 0x148))(param_1,param_2,*(undefined8 *)(param_3 + 6),0); + break; + default: + local_40 = 0; + local_38 = 0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_40,0x19); + uVar11 = DAT_00470ce0; + uVar10 = DAT_00470cd0; + uVar13 = DAT_00470cc8; + puVar12[2] = _LAB_00470cd8; + *(undefined1 *)(puVar12 + 3) = uVar11; + *puVar12 = uVar13; + puVar12[1] = uVar10; + cv::error(-0xce,(String *)&local_40, + "void icvWriteFileNode(CvFileStorage*, const char*, const CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd6b); + cv::String::deallocate((String *)&local_40); + break; + case 5: + case 6: + iVar1 = 0; + if ((**(uint **)(param_3 + 4) & 0x100) != 0) { + iVar1 = 8; + } + uVar13 = 0; + if (*(long *)(param_3 + 2) != 0) { + uVar13 = *(undefined8 *)(*(long *)(param_3 + 2) + 0x18); + } + iVar17 = 0; + (**(code **)(param_1 + 0x128))(param_1,param_2,iVar1 + (*param_3 & 7),uVar13); + lVar14 = *(long *)(param_3 + 4); + uVar4 = *param_3; + iVar1 = *(int *)(lVar14 + 0x28); + iVar5 = *(int *)(lVar14 + 0x2c); + cvStartReadSeq(lVar14,auStack_c0,0); + if (0 < iVar1) { + do { + puVar15 = local_a8; + uVar6 = *local_a8; + if ((uVar4 & 7) == 6) { + if ((int)uVar6 < 0) goto LAB_00374af8; + param_2 = *(undefined8 *)(*(long *)(local_a8 + 8) + 0x10); + if ((uVar6 & 7) < 7) goto LAB_00374b4c; +switchD_00374b60_caseD_4: + local_40 = 0; + local_38 = 0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_40,0x19); + uVar13 = _LAB_00470cd8; + *(undefined1 *)(puVar12 + 3) = DAT_00470ce0; + puVar12[2] = uVar13; + uVar13 = DAT_00470cd0; + *puVar12 = DAT_00470cc8; + puVar12[1] = uVar13; + cv::error(-0xce,(String *)&local_40, + "void icvWriteFileNode(CvFileStorage*, const char*, const CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd6b); + cv::String::deallocate((String *)&local_40); + goto LAB_00374af8; + } + param_2 = 0; + if (6 < (uVar6 & 7)) goto switchD_00374b60_caseD_4; +LAB_00374b4c: + switch(uVar6 & 7) { + case 0: + (**(code **)(param_1 + 0x128))(param_1,param_2,5,0); + goto LAB_00374d64; + case 1: +switchD_00374b60_caseD_1: + (**(code **)(param_1 + 0x138))(param_1,param_2,puVar15[4]); + local_a8 = (uint *)((long)local_a8 + (long)iVar5); + if (local_98 <= local_a8) goto LAB_00374d40; + goto LAB_00374b10; + case 2: + (**(code **)(param_1 + 0x140))(*(undefined8 *)(local_a8 + 4),param_1); + break; + case 3: + (**(code **)(param_1 + 0x148))(param_1,param_2,*(undefined8 *)(local_a8 + 6),0); + break; + case 4: + goto switchD_00374b60_caseD_4; + default: + iVar2 = 0; + if ((**(uint **)(local_a8 + 4) & 0x100) != 0) { + iVar2 = 8; + } + uVar13 = 0; + if (*(long *)(local_a8 + 2) != 0) { + uVar13 = *(undefined8 *)(*(long *)(local_a8 + 2) + 0x18); + } + iVar16 = 0; + (**(code **)(param_1 + 0x128))(param_1,param_2,(uVar6 & 7) + iVar2,uVar13); + uVar6 = *puVar15; + lVar14 = *(long *)(puVar15 + 4); + iVar2 = *(int *)(lVar14 + 0x28); + iVar7 = *(int *)(lVar14 + 0x2c); + cvStartReadSeq(lVar14,auStack_80,0); + if (0 < iVar2) { + do { + puVar15 = local_68; + uVar8 = *local_68; + if ((uVar6 & 7) == 6) { + if ((int)uVar8 < 0) goto LAB_00374ca8; + param_2 = *(undefined8 *)(*(long *)(local_68 + 8) + 0x10); + if ((uVar8 & 7) < 7) goto LAB_00374cfc; +switchD_00374d10_caseD_4: + local_40 = 0; + local_38 = 0; + puVar12 = (undefined8 *)cv::String::allocate((String *)&local_40,0x19); + uVar13 = _LAB_00470cd8; + *(undefined1 *)(puVar12 + 3) = DAT_00470ce0; + puVar12[2] = uVar13; + uVar13 = DAT_00470cd0; + *puVar12 = DAT_00470cc8; + puVar12[1] = uVar13; + cv::error(-0xce,(String *)&local_40, + "void icvWriteFileNode(CvFileStorage*, const char*, const CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0xd6b); + cv::String::deallocate((String *)&local_40); + goto LAB_00374ca8; + } + param_2 = 0; + if (6 < (uVar8 & 7)) goto switchD_00374d10_caseD_4; +LAB_00374cfc: + switch(uVar8 & 7) { + case 0: + (**(code **)(param_1 + 0x128))(param_1,param_2,5,0); + goto LAB_00374f38; + case 1: + (**(code **)(param_1 + 0x138))(param_1,param_2,local_68[4]); + break; + case 2: + (**(code **)(param_1 + 0x140))(*(undefined8 *)(local_68 + 4),param_1); + break; + case 3: + (**(code **)(param_1 + 0x148))(param_1,param_2,*(undefined8 *)(local_68 + 6),0); + local_68 = (uint *)((long)local_68 + (long)iVar7); + if (local_58 <= local_68) goto LAB_00374ee4; + goto LAB_00374cc0; + case 4: + goto switchD_00374d10_caseD_4; + default: + iVar3 = 0; + if ((**(uint **)(local_68 + 4) & 0x100) != 0) { + iVar3 = 8; + } + uVar13 = 0; + if (*(long *)(local_68 + 2) != 0) { + uVar13 = *(undefined8 *)(*(long *)(local_68 + 2) + 0x18); + } + (**(code **)(param_1 + 0x128))(param_1,param_2,(uVar8 & 7) + iVar3,uVar13); + lVar14 = *(long *)(puVar15 + 4); + uVar8 = *puVar15; + iVar3 = *(int *)(lVar14 + 0x28); + iVar9 = *(int *)(lVar14 + 0x2c); + cvStartReadSeq(lVar14,&local_40,0); + if (0 < iVar3) { + iVar18 = 0; + if ((uVar8 & 7) == 6) { + do { + if (-1 < *local_28) { + FUN_00374908(param_1,*(undefined8 *)(*(long *)(local_28 + 8) + 0x10)); + } + local_28 = (int *)((long)local_28 + (long)iVar9); + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + iVar18 = iVar18 + 1; + } while (iVar18 != iVar3); + } + else { + do { + FUN_00374908(param_1,0,local_28); + local_28 = (int *)((long)local_28 + (long)iVar9); + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + iVar18 = iVar18 + 1; + } while (iVar18 != iVar3); + } + } +LAB_00374f38: + (**(code **)(param_1 + 0x130))(param_1); + break; + case 7: + goto switchD_00374b60_caseD_1; + } +LAB_00374ca8: + local_68 = (uint *)((long)local_68 + (long)iVar7); + if (local_58 <= local_68) { +LAB_00374ee4: + cvChangeSeqBlock(auStack_80,1); + } +LAB_00374cc0: + iVar16 = iVar16 + 1; + } while (iVar16 != iVar2); + } +LAB_00374d64: + (**(code **)(param_1 + 0x130))(param_1); + break; + case 7: + goto switchD_003749f4_caseD_0; + } +LAB_00374af8: + local_a8 = (uint *)((long)local_a8 + (long)iVar5); + if (local_98 <= local_a8) { +LAB_00374d40: + cvChangeSeqBlock(auStack_c0,1); + } +LAB_00374b10: + iVar17 = iVar17 + 1; + } while (iVar17 != iVar1); + } +LAB_00374b78: + (**(code **)(param_1 + 0x130))(param_1); + } + return; +} + + +================================================================== + +### FUNC 00374f88 (1776 bytes) name=FUN_00374f88 + +void FUN_00374f88(long param_1,char *param_2,char *param_3) + +{ + bool bVar1; + byte bVar2; + undefined8 uVar3; + undefined8 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + void *pvVar14; + size_t sVar15; + long lVar16; + char *pcVar17; + undefined1 *puVar18; + undefined1 *puVar19; + undefined1 *puVar20; + int iVar21; + int iVar22; + int iVar23; + uint uVar24; + uint uVar25; + int iVar26; + undefined8 local_10; + undefined8 local_8; + + uVar24 = *(uint *)(param_1 + 0x44); + if ((param_2 == (char *)0x0) || (*param_2 == '\0')) { + if (4 < (uVar24 & 7)) { + param_2 = (char *)0x0; + iVar13 = 0; + if ((uVar24 & 7) == 6) goto LAB_00374fe0; + uVar25 = uVar24 & 8; + if (param_3 != (char *)0x0) goto LAB_0037505c; + goto LAB_00375328; + } + *(undefined4 *)(param_1 + 0xc) = 0; + if (param_3 != (char *)0x0) { + param_2 = (char *)0x0; + uVar24 = 0x25; + uVar25 = 0; + iVar13 = 0; + goto LAB_0037505c; + } + uVar25 = 5; + uVar24 = 0x25; + iVar26 = 0; + iVar13 = 0; + param_2 = (char *)0x0; +LAB_00375338: + puVar19 = *(undefined1 **)(param_1 + 0x78); + lVar16 = *(long *)(param_1 + 0x80); + iVar21 = *(int *)(param_1 + 0x58); + if ((undefined1 *)(lVar16 + iVar21) < puVar19) { + puVar19[1] = 0; + *puVar19 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + lVar16 = *(long *)(param_1 + 0x80); + iVar21 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar16; + } + iVar22 = *(int *)(param_1 + 0x40); + if (iVar22 != iVar21) { + if (iVar21 <= iVar22) { + memset((void *)(lVar16 + iVar21),0x20,(long)(iVar22 - iVar21)); + lVar16 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar22; + iVar21 = iVar22; + } + puVar19 = (undefined1 *)(lVar16 + iVar21); + *(undefined1 **)(param_1 + 0x78) = puVar19; + if (uVar25 == 6) { + uVar25 = 0; + goto LAB_003750c0; + } + *(undefined1 *)(lVar16 + iVar21) = 0x2d; + if (param_3 == (char *)0x0) { + puVar19 = puVar19 + 1; + uVar25 = 0; + if (param_2 == (char *)0x0) goto LAB_003752a8; + goto LAB_003750c4; + } + puVar19[1] = 0x20; + uVar25 = 0; + puVar19 = puVar19 + 2; + if (param_2 != (char *)0x0) goto LAB_003750c4; +LAB_0037527c: + puVar18 = *(undefined1 **)(param_1 + 0x88); + sVar15 = (size_t)iVar26; + puVar20 = puVar19 + sVar15; + if (puVar18 <= puVar20) { +LAB_003753c4: + iVar21 = (int)puVar19 - (int)*(long *)(param_1 + 0x80); + iVar22 = (int)((((long)puVar18 - *(long *)(param_1 + 0x80)) * 3) / 2); + iVar13 = iVar26 + iVar21; + if (iVar26 + iVar21 < iVar22) { + iVar13 = iVar22; + } + pvVar14 = (void *)cv::cvAlloc((long)(iVar13 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar14 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar21) { + memcpy(pvVar14,*(void **)(param_1 + 0x80),(long)iVar21); + } + puVar19 = (undefined1 *)((long)pvVar14 + (long)iVar21); + *(void **)(param_1 + 0x80) = pvVar14; + puVar20 = puVar19 + sVar15; + *(long *)(param_1 + 0x88) = (long)pvVar14 + (long)iVar13; + } + } + else { + if ((uVar24 & 7) < 5) { + *(undefined4 *)(param_1 + 0xc) = 0; + uVar24 = 0x26; + sVar15 = strlen(param_2); + iVar13 = (int)sVar15; + if (iVar13 != 0) goto LAB_00375044; +LAB_00375454: + local_10 = 0; + local_8 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar5 = s_The_key_is_an_empty_00470ce8[0x12]; + uVar4 = s_The_key_is_an_empty_00470ce8._8_8_; + uVar3 = s_The_key_is_an_empty_00470ce8._0_8_; + *(undefined2 *)(pcVar17 + 0x10) = s_The_key_is_an_empty_00470ce8._16_2_; + pcVar17[0x12] = cVar5; + *(undefined8 *)pcVar17 = uVar3; + *(undefined8 *)(pcVar17 + 8) = uVar4; + cv::error(-5,(String *)&local_10,"void icvYMLWrite(CvFileStorage*, const char*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x5a2); +LAB_00375510: + cv::String::deallocate((String *)&local_10); + } + else { + iVar13 = 1; + if ((uVar24 & 7) == 6) { +LAB_00375034: + sVar15 = strlen(param_2); + iVar13 = (int)sVar15; + if (iVar13 == 0) goto LAB_00375454; +LAB_00375044: + if (0x1000 < iVar13) { + local_10 = 0; + local_8 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar5 = s_The_key_is_too_long_00470d00[0x12]; + uVar4 = s_The_key_is_too_long_00470d00._8_8_; + uVar3 = s_The_key_is_too_long_00470d00._0_8_; + *(undefined2 *)(pcVar17 + 0x10) = s_The_key_is_too_long_00470d00._16_2_; + pcVar17[0x12] = cVar5; + *(undefined8 *)pcVar17 = uVar3; + *(undefined8 *)(pcVar17 + 8) = uVar4; + cv::error(-5,(String *)&local_10, + "void icvYMLWrite(CvFileStorage*, const char*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x5a5); + goto LAB_00375510; + } + } + else { +LAB_00374fe0: + local_10 = 0; + local_8 = 0; + pvVar14 = (void *)cv::String::allocate((String *)&local_10,0x55); + memcpy(pvVar14, + "An attempt to add element without a key to a map, or add element with key to sequence" + ,0x55); + cv::error(-5,(String *)&local_10, + "void icvYMLWrite(CvFileStorage*, const char*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x596); + cv::String::deallocate((String *)&local_10); + bVar1 = iVar13 != 0; + iVar13 = 0; + if (bVar1) goto LAB_00375034; + } + } + uVar25 = uVar24 & 8; + if (param_3 == (char *)0x0) { +LAB_00375328: + iVar26 = (int)param_3; + } + else { +LAB_0037505c: + sVar15 = strlen(param_3); + iVar26 = (int)sVar15; + } + if (uVar25 == 0) { + uVar25 = uVar24 & 7; + goto LAB_00375338; + } + puVar19 = *(undefined1 **)(param_1 + 0x78); + puVar20 = puVar19; + if ((uVar24 >> 5 & 1) == 0) { + puVar20 = puVar19 + 1; + *puVar19 = 0x2c; + } + lVar16 = *(long *)(param_1 + 0x80); + iVar21 = iVar13 + ((int)puVar20 - (int)lVar16) + iVar26; + if ((*(int *)(param_1 + 0x90) < iVar21) && + (iVar22 = *(int *)(param_1 + 0x40), 10 < iVar21 - iVar22)) { + iVar21 = *(int *)(param_1 + 0x58); + *(undefined1 **)(param_1 + 0x78) = puVar20; + if ((undefined1 *)(lVar16 + iVar21) < puVar20) { + puVar20[1] = 0; + *puVar20 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x80)); + iVar22 = *(int *)(param_1 + 0x40); + lVar16 = *(long *)(param_1 + 0x80); + iVar21 = *(int *)(param_1 + 0x58); + *(long *)(param_1 + 0x78) = lVar16; + } + if (iVar22 != iVar21) { + if (iVar21 <= iVar22) { + memset((void *)(lVar16 + iVar21),0x20,(long)(iVar22 - iVar21)); + lVar16 = *(long *)(param_1 + 0x80); + } + *(int *)(param_1 + 0x58) = iVar22; + } + puVar19 = (undefined1 *)(lVar16 + iVar22); + *(undefined1 **)(param_1 + 0x78) = puVar19; + } + else { + puVar19 = puVar20 + 1; + *puVar20 = 0x20; + } +LAB_003750c0: + if (param_2 != (char *)0x0) { +LAB_003750c4: + if ((0x19 < (((int)*param_2 & 0xffffffdfU) - 0x41 & 0xff)) && ((int)*param_2 != 0x5f)) { + local_10 = 0; + local_8 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_10,0x21); + uVar7 = s_Key_must_start_with_a_letter_or___00470d70._24_8_; + uVar6 = s_Key_must_start_with_a_letter_or___00470d70._16_8_; + uVar4 = s_Key_must_start_with_a_letter_or___00470d70._8_8_; + uVar3 = s_Key_must_start_with_a_letter_or___00470d70._0_8_; + pcVar17[0x20] = s_Key_must_start_with_a_letter_or___00470d70[0x20]; + *(undefined8 *)pcVar17 = uVar3; + *(undefined8 *)(pcVar17 + 8) = uVar4; + *(undefined8 *)(pcVar17 + 0x10) = uVar6; + *(undefined8 *)(pcVar17 + 0x18) = uVar7; + cv::error(-5,(String *)&local_10, + "void icvYMLWrite(CvFileStorage*, const char*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x5c8); + cv::String::deallocate((String *)&local_10); + } + puVar20 = puVar19; + if (*(undefined1 **)(param_1 + 0x88) <= puVar19 + iVar13) { + iVar22 = (int)puVar19 - (int)*(long *)(param_1 + 0x80); + iVar23 = (int)((((long)*(undefined1 **)(param_1 + 0x88) - *(long *)(param_1 + 0x80)) * 3) / + 2); + iVar21 = iVar13 + iVar22; + if (iVar13 + iVar22 < iVar23) { + iVar21 = iVar23; + } + pvVar14 = (void *)cv::cvAlloc((long)(iVar21 + 0x100)); + *(long *)(param_1 + 0x78) = + (long)pvVar14 + (*(long *)(param_1 + 0x78) - (long)*(void **)(param_1 + 0x80)); + if (0 < iVar22) { + memcpy(pvVar14,*(void **)(param_1 + 0x80),(long)iVar22); + } + *(void **)(param_1 + 0x80) = pvVar14; + *(long *)(param_1 + 0x88) = (long)pvVar14 + (long)iVar21; + puVar20 = (undefined1 *)((long)pvVar14 + (long)iVar22); + } + lVar16 = 0; + if (0 < iVar13) { + do { + bVar2 = param_2[lVar16]; + puVar20[lVar16] = bVar2; + if ((((9 < (byte)(bVar2 - 0x30)) && (0x19 < (byte)((bVar2 & 0xdf) + 0xbf))) && + (bVar2 != 0x2d && bVar2 != 0x5f)) && (bVar2 != 0x20)) { + local_10 = 0; + local_8 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_10,0x50); + uVar12 = s_Key_names_may_only_contain_alpha_00470d18._72_8_; + uVar11 = s_Key_names_may_only_contain_alpha_00470d18._64_8_; + uVar10 = s_Key_names_may_only_contain_alpha_00470d18._56_8_; + uVar9 = s_Key_names_may_only_contain_alpha_00470d18._48_8_; + uVar8 = s_Key_names_may_only_contain_alpha_00470d18._40_8_; + uVar7 = s_Key_names_may_only_contain_alpha_00470d18._32_8_; + uVar6 = s_Key_names_may_only_contain_alpha_00470d18._24_8_; + uVar4 = s_Key_names_may_only_contain_alpha_00470d18._16_8_; + uVar3 = s_Key_names_may_only_contain_alpha_00470d18._8_8_; + *(undefined8 *)pcVar17 = s_Key_names_may_only_contain_alpha_00470d18._0_8_; + *(undefined8 *)(pcVar17 + 8) = uVar3; + *(undefined8 *)(pcVar17 + 0x10) = uVar4; + *(undefined8 *)(pcVar17 + 0x18) = uVar6; + *(undefined8 *)(pcVar17 + 0x20) = uVar7; + *(undefined8 *)(pcVar17 + 0x28) = uVar8; + *(undefined8 *)(pcVar17 + 0x30) = uVar9; + *(undefined8 *)(pcVar17 + 0x38) = uVar10; + *(undefined8 *)(pcVar17 + 0x40) = uVar11; + *(undefined8 *)(pcVar17 + 0x48) = uVar12; + cv::error(-5,(String *)&local_10, + "void icvYMLWrite(CvFileStorage*, const char*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x5d2); + cv::String::deallocate((String *)&local_10); + } + lVar16 = lVar16 + 1; + } while ((int)lVar16 < iVar13); + } + puVar20[iVar13] = 0x3a; + puVar19 = puVar20 + (long)iVar13 + 1; + if (uVar25 == 0) { + if (param_3 == (char *)0x0) goto LAB_003752a8; + puVar19 = puVar20 + (long)iVar13 + 2; + puVar20[(long)iVar13 + 1] = 0x20; + goto LAB_0037527c; + } + } + if (param_3 == (char *)0x0) goto LAB_003752a8; + puVar18 = *(undefined1 **)(param_1 + 0x88); + sVar15 = (size_t)iVar26; + puVar20 = puVar19 + sVar15; + if (puVar18 <= puVar20) goto LAB_003753c4; + } + memcpy(puVar19,param_3,sVar15); + puVar19 = puVar20; +LAB_003752a8: + *(undefined1 **)(param_1 + 0x78) = puVar19; + *(uint *)(param_1 + 0x44) = uVar24 & 0xffffffdf; + return; +} + + +================================================================== + +### FUNC 003756dc (968 bytes) name=FUN_003756dc + +void FUN_003756dc(undefined8 param_1,undefined8 param_2,char *param_3,int param_4) + +{ + char cVar1; + byte bVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + int iVar8; + size_t sVar9; + char *pcVar10; + uint uVar11; + long lVar12; + byte *pbVar13; + byte *pbVar14; + undefined8 local_4010; + char *local_4008; + + if (param_3 == (char *)0x0) { + local_4010 = param_3; + local_4008 = param_3; + pcVar10 = (char *)cv::String::allocate((String *)&local_4010,0x13); + cVar1 = s_Null_string_pointer_00470bf8[0x12]; + uVar5 = s_Null_string_pointer_00470bf8._8_8_; + uVar4 = s_Null_string_pointer_00470bf8._0_8_; + *(undefined2 *)(pcVar10 + 0x10) = s_Null_string_pointer_00470bf8._16_2_; + pcVar10[0x12] = cVar1; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + cv::error(-0x1b,(String *)&local_4010, + "void icvYMLWriteString(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x660); + cv::String::deallocate((String *)&local_4010); + } + sVar9 = strlen(param_3); + iVar8 = (int)sVar9; + if (0x1000 < iVar8) { + local_4010 = (char *)0x0; + local_4008 = (char *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_4010,0x1e); + uVar7 = s_The_written_string_is_too_long_00470c10._28_2_; + uVar6 = s_The_written_string_is_too_long_00470c10._24_4_; + uVar5 = s_The_written_string_is_too_long_00470c10._8_8_; + uVar4 = s_The_written_string_is_too_long_00470c10._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_The_written_string_is_too_long_00470c10._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar6; + *(undefined2 *)(pcVar10 + 0x1c) = uVar7; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + cv::error(-5,(String *)&local_4010, + "void icvYMLWriteString(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x664); + cv::String::deallocate((String *)&local_4010); + } + if ((iVar8 == 0) || (param_4 != 0)) { + bVar3 = true; + local_4010 = (char *)CONCAT71(local_4010._1_7_,0x22); + if (iVar8 < 1) { + pbVar13 = (byte *)((long)&local_4010 + 1); + } + else { +LAB_00375764: + local_4010 = (char *)CONCAT71(local_4010._1_7_,0x22); + lVar12 = 0; + pbVar13 = (byte *)((long)&local_4010 + 1); + do { + bVar2 = param_3[lVar12]; + if (bVar3) { +LAB_003758fc: + if (((byte)(bVar2 + 0x9f) < 0x1a) || ((byte)(bVar2 - 0x30) < 10)) goto LAB_00375804; +LAB_003757f4: + if ((byte)(bVar2 + 0xbf) < 0x1a) goto LAB_00375804; + uVar11 = (uint)(char)bVar2; + if ((bVar2 < 0x20) || (uVar11 == 0x5c)) { + *pbVar13 = 0x5c; + if (0x1f < bVar2) goto LAB_003758f0; + if (bVar2 == 10) { + pbVar13[1] = 0x6e; + pbVar13 = pbVar13 + 2; + } + else if (uVar11 == 0xd) { + pbVar13[1] = 0x72; + pbVar13 = pbVar13 + 2; + } + else if (uVar11 == 9) { + pbVar13[1] = 0x74; + pbVar13 = pbVar13 + 2; + } + else { + pbVar14 = pbVar13 + 1; + pbVar13 = pbVar13 + 4; + sprintf((char *)pbVar14,"x%02x",(ulong)uVar11); + } + } + else { + if ((uVar11 != 0x27) && (bVar2 != 0x22)) goto LAB_00375804; + *pbVar13 = 0x5c; +LAB_003758f0: + pbVar13[1] = bVar2; + pbVar13 = pbVar13 + 2; + } + } + else { + if (9 < (byte)(bVar2 - 0x30)) { + if ((byte)((bVar2 & 0xdf) + 0xbf) < 0x1a) goto LAB_003758fc; + if ((bVar2 != 0x5f) && + (((bVar2 != 0x20 && (bVar2 != 0x2d)) && (1 < (byte)(bVar2 - 0x28))))) { + bVar3 = (bVar2 & 0xfb) != 0x2b && bVar2 != 0x3b; + } + goto LAB_003757f4; + } +LAB_00375804: + *pbVar13 = bVar2; + pbVar13 = pbVar13 + 1; + } + lVar12 = lVar12 + 1; + } while ((int)lVar12 < iVar8); + if (!bVar3) { + uVar11 = (uint)*param_3; + goto LAB_00375820; + } + } +LAB_00375a20: + param_3 = (char *)&local_4010; + pbVar14 = pbVar13 + 1; + *pbVar13 = 0x22; + } + else { + cVar1 = *param_3; + uVar11 = (uint)cVar1; + if (((uint)(byte)param_3[(long)iVar8 + -1] == (int)cVar1) && + (((int)cVar1 == 0x27 || (uVar11 == 0x22)))) goto LAB_0037585c; + bVar3 = false; + local_4010 = (char *)CONCAT71(local_4010._1_7_,0x22); + if (0 < iVar8) goto LAB_00375764; + pbVar13 = (byte *)((long)&local_4010 + 1); +LAB_00375820: + if ((((uVar11 & 0xff) - 0x30 & 0xff) < 10 || ((uVar11 & 0xff) - 0x2d & 0xff) < 2) || + (uVar11 == 0x2b)) goto LAB_00375a20; + param_3 = (char *)((long)&local_4010 + 1); + pbVar14 = pbVar13; + } + *pbVar14 = 0; +LAB_0037585c: + FUN_00374f88(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00375acc (340 bytes) name=FUN_00375acc + +void FUN_00375acc(double param_1,undefined8 param_2,undefined8 param_3) + +{ + char cVar1; + long lVar2; + uint uVar3; + char *pcVar4; + undefined4 local_80; + undefined1 local_7c; + + uVar3 = (uint)((ulong)param_1 >> 0x20); + if ((uVar3 & 0x7ff00000) == 0x7ff00000) { + uVar3 = uVar3 & 0x7fffffff; + if (SUB84(param_1,0) != 0) { + uVar3 = uVar3 + 1; + } + if (uVar3 < 0x7ff00001) { + if ((long)param_1 < 0) { + pcVar4 = "-.Inf"; + } + else { + pcVar4 = ".Inf"; + } + strcpy((char *)&local_80,pcVar4); + } + else { + local_80 = DAT_00470bc8; + local_7c = DAT_00470bcc; + } + } + else { + lVar2 = lrint(param_1); + if (param_1 == (double)(int)lVar2) { + sprintf((char *)&local_80,"%d.",lVar2); + } + else { + pcVar4 = (char *)&local_80; + sprintf(pcVar4,"%.16e",param_1,lVar2); + cVar1 = (char)local_80; + if (((char)local_80 - 0x2bU & 0xfd) == 0) { + pcVar4 = (char *)((long)&local_80 + 1); + cVar1 = local_80._1_1_; + } + while (((int)cVar1 - 0x30U & 0xff) < 10) { + pcVar4 = pcVar4 + 1; + cVar1 = *pcVar4; + } + if (cVar1 == 0x2c) { + *pcVar4 = '.'; + } + } + } + FUN_00374f88(param_2,param_3,&local_80); + return; +} + + +================================================================== + +### FUNC 00375c20 (108 bytes) name=FUN_00375c20 + +void FUN_00375c20(undefined8 param_1,undefined8 param_2,int param_3) + +{ + char cVar1; + char *pcVar2; + char *pcVar3; + ulong uVar4; + char local_6b [107]; + + uVar4 = (long)param_3 >> 0x3f; + uVar4 = ((long)param_3 ^ uVar4) - uVar4; + local_6b[2] = 0; + pcVar3 = local_6b + 2; + do { + pcVar2 = pcVar3; + cVar1 = (char)uVar4; + uVar4 = (uVar4 & 0xffffffff) / 10; + pcVar3 = pcVar2 + -1; + *pcVar3 = cVar1 + '0' + (char)uVar4 * -10; + } while ((int)uVar4 != 0); + if (param_3 < 0) { + pcVar3 = pcVar2 + -2; + pcVar2[-2] = '-'; + } + FUN_00374f88(param_1,param_2,pcVar3); + return; +} + + +================================================================== + +### FUNC 00375c8c (484 bytes) name=FUN_00375c8c + +void FUN_00375c8c(long param_1,undefined8 param_2,uint param_3,long param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + char *pcVar10; + undefined1 uVar11; + int iVar12; + uint local_1404; + undefined8 local_1400; + undefined8 local_13f8; + + if ((param_3 & 7) < 5) { + local_1400 = 0; + local_13f8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_1400,0x44); + uVar6 = s_Some_collection_type___CV_NODE_S_00470da0._40_8_; + uVar5 = s_Some_collection_type___CV_NODE_S_00470da0._32_8_; + uVar4 = s_Some_collection_type___CV_NODE_S_00470da0._24_8_; + uVar3 = s_Some_collection_type___CV_NODE_S_00470da0._16_8_; + uVar2 = s_Some_collection_type___CV_NODE_S_00470da0._8_8_; + uVar1 = s_Some_collection_type___CV_NODE_S_00470da0._0_8_; + *(undefined4 *)(pcVar10 + 0x40) = s_Some_collection_type___CV_NODE_S_00470da0._64_4_; + uVar8 = s_Some_collection_type___CV_NODE_S_00470da0._56_8_; + uVar7 = s_Some_collection_type___CV_NODE_S_00470da0._48_8_; + *(undefined8 *)pcVar10 = uVar1; + *(undefined8 *)(pcVar10 + 8) = uVar2; + *(undefined8 *)(pcVar10 + 0x10) = uVar3; + *(undefined8 *)(pcVar10 + 0x18) = uVar4; + *(undefined8 *)(pcVar10 + 0x20) = uVar5; + *(undefined8 *)(pcVar10 + 0x28) = uVar6; + *(undefined8 *)(pcVar10 + 0x30) = uVar7; + *(undefined8 *)(pcVar10 + 0x38) = uVar8; + cv::error(-5,(String *)&local_1400, + "void icvYMLStartWriteStruct(CvFileStorage*, const char*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x5f2); + cv::String::deallocate((String *)&local_1400); + } + if ((param_3 >> 3 & 1) == 0) { + if (param_4 == 0) { + pcVar10 = (char *)0x0; + } + else { + pcVar10 = (char *)&local_1400; + sprintf(pcVar10,"!!%s",param_4); + } + FUN_00374f88(param_1,param_2,pcVar10); + local_1404 = *(uint *)(param_1 + 0x44); + cvSeqPush(*(undefined8 *)(param_1 + 0x38),&local_1404); + *(uint *)(param_1 + 0x44) = param_3 & 0xf | 0x20; + if ((local_1404 >> 3 & 1) != 0) { + return; + } + iVar12 = *(int *)(param_1 + 0x40); + iVar9 = 3; + goto LAB_00375d44; + } + if ((param_3 & 7) == 6) { + uVar11 = 0x7b; + if (param_4 != 0) goto LAB_00375cf8; +LAB_00375e64: + local_1400._0_2_ = CONCAT11((char)param_4,uVar11); + } + else { + uVar11 = 0x5b; + if (param_4 == 0) goto LAB_00375e64; +LAB_00375cf8: + sprintf((char *)&local_1400,"!!%s %c",param_4); + } + FUN_00374f88(param_1,param_2,&local_1400); + local_1404 = *(uint *)(param_1 + 0x44); + cvSeqPush(*(undefined8 *)(param_1 + 0x38),&local_1404); + *(uint *)(param_1 + 0x44) = param_3 & 0xf | 0x28; + if ((local_1404 >> 3 & 1) != 0) { + return; + } + iVar12 = *(int *)(param_1 + 0x40); + iVar9 = 4; +LAB_00375d44: + *(int *)(param_1 + 0x40) = iVar12 + iVar9; + return; +} + + +================================================================== + +### FUNC 00375e84 (864 bytes) name=FUN_00375e84 + +int FUN_00375e84(char *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + int iVar8; + size_t sVar9; + char *pcVar10; + long lVar11; + char *pcVar12; + ulong uVar13; + int iVar14; + uint uVar15; + int iVar16; + int iVar17; + ulong uVar18; + char *local_210; + undefined8 local_208; + uint local_200 [128]; + + if (param_1 != (char *)0x0) { + sVar9 = strlen(param_1); + iVar8 = (int)sVar9; + if (iVar8 != 0) { + local_200[0] = 0; + if (0 < iVar8) { + uVar18 = 0; + iVar14 = 0; + do { + uVar15 = (int)param_1[iVar14] - 0x30; + iVar17 = (int)uVar18; + if ((uVar15 & 0xff) < 10) { + if ((byte)((param_1 + iVar14)[1] - 0x30U) < 10) { + local_210 = (char *)0x0; + lVar11 = strtol(param_1 + iVar14,&local_210,10); + uVar15 = (uint)lVar11; + iVar14 = ((int)local_210 - (int)param_1) + -1; + } + if ((int)uVar15 < 1) { + local_210 = (char *)0x0; + local_208 = (char *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_210,0x1f); + cVar5 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar4 = s_Invalid_data_type_specification_00470850._28_2_; + uVar3 = s_Invalid_data_type_specification_00470850._24_4_; + uVar2 = s_Invalid_data_type_specification_00470850._8_8_; + uVar1 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar3; + *(undefined2 *)(pcVar10 + 0x1c) = uVar4; + pcVar10[0x1e] = cVar5; + *(undefined8 *)pcVar10 = uVar1; + *(undefined8 *)(pcVar10 + 8) = uVar2; + cv::error(-5,(String *)&local_210,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0) + ; + cv::String::deallocate((String *)&local_210); + } + local_200[iVar17] = uVar15; + } + else { + pcVar10 = strchr("ucwsifdr",(int)param_1[iVar14]); + if (pcVar10 == (char *)0x0) { + local_210 = pcVar10; + local_208 = pcVar10; + pcVar12 = (char *)cv::String::allocate((String *)&local_210,0x1f); + cVar5 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar4 = s_Invalid_data_type_specification_00470850._28_2_; + uVar3 = s_Invalid_data_type_specification_00470850._24_4_; + uVar2 = s_Invalid_data_type_specification_00470850._8_8_; + uVar1 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar12 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar3; + *(undefined2 *)(pcVar12 + 0x1c) = uVar4; + pcVar12[0x1e] = cVar5; + *(undefined8 *)pcVar12 = uVar1; + *(undefined8 *)(pcVar12 + 8) = uVar2; + cv::error(-5,(String *)&local_210,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8) + ; + cv::String::deallocate((String *)&local_210); + } + uVar13 = -(uVar18 >> 0x1f) & 0xfffffffc00000000 | uVar18 << 2; + if (*(int *)((long)local_200 + uVar13) == 0) { + *(undefined4 *)((long)local_200 + uVar13) = 1; + } + iVar16 = (int)pcVar10 + -0x472f10; + *(int *)((long)local_200 + uVar13 + 4) = iVar16; + if (iVar17 == 0) { + uVar18 = 2; + *(undefined4 *)((long)local_200 + uVar13 + 8) = 0; + } + else if (iVar16 == *(int *)((long)&local_208 + uVar13 + 4)) { + *(int *)((long)&local_208 + uVar13) = + *(int *)((long)&local_208 + uVar13) + *(int *)((long)local_200 + uVar13); + *(int *)((long)local_200 + uVar13) = 0; + } + else { + uVar15 = iVar17 + 2; + uVar18 = (ulong)uVar15; + if ((int)uVar15 < 0x100) { + lVar11 = (long)(int)uVar15 * 4; + } + else { + local_210 = (char *)0x0; + local_208 = (char *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_210,0x20); + uVar6 = s_Too_long_data_type_specification_00470870._24_8_; + uVar2 = s_Too_long_data_type_specification_00470870._16_8_; + uVar1 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar10 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar10 + 8) = uVar1; + *(undefined8 *)(pcVar10 + 0x10) = uVar2; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + cv::error(-5,(String *)&local_210,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0xbe2); + cv::String::deallocate((String *)&local_210); + lVar11 = (long)(int)uVar15 << 2; + } + *(undefined4 *)((long)local_200 + lVar11) = 0; + } + } + iVar14 = iVar14 + 1; + } while (iVar14 < iVar8); + if (((int)uVar18 >> 1 == 1) && ((int)local_200[0] < 5)) goto LAB_00375fb8; + } + } + } + local_210 = (char *)0x0; + local_208 = (char *)0x0; + pcVar10 = (char *)cv::String::allocate((String *)&local_210,0x21); + uVar7 = s_Too_complex_format_for_the_matri_00470df8._24_8_; + uVar6 = s_Too_complex_format_for_the_matri_00470df8._16_8_; + uVar2 = s_Too_complex_format_for_the_matri_00470df8._8_8_; + uVar1 = s_Too_complex_format_for_the_matri_00470df8._0_8_; + pcVar10[0x20] = s_Too_complex_format_for_the_matri_00470df8[0x20]; + *(undefined8 *)pcVar10 = uVar1; + *(undefined8 *)(pcVar10 + 8) = uVar2; + *(undefined8 *)(pcVar10 + 0x10) = uVar6; + *(undefined8 *)(pcVar10 + 0x18) = uVar7; + cv::error(-2,(String *)&local_210,"int icvDecodeSimpleFormat(const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc0d); + cv::String::deallocate((String *)&local_210); +LAB_00375fb8: + return (local_200[1] & 7) + (local_200[0] - 1) * 8; +} + + +================================================================== + +### FUNC 00376234 (716 bytes) name=getDefaultObjectName + +/* cv::FileStorage::getDefaultObjectName(cv::String const&) */ + +void __thiscall cv::FileStorage::getDefaultObjectName(FileStorage *this,String *param_1) + +{ + ulong uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + size_t __n; + void *__dest; + byte bVar5; + uint uVar6; + char *pcVar7; + String *in_x8; + byte *pbVar8; + byte *__s1; + byte *pbVar9; + byte *pbVar10; + undefined8 local_428; + undefined8 local_420; + char *local_418; + ulong local_410; + char acStack_408 [1032]; + + pbVar9 = *(byte **)this; + if (pbVar9 == (byte *)0x0) { + pbVar9 = &DAT_00472008; + } + pcVar4 = acStack_408; + uVar1 = *(long *)(this + 8) + 1; + __s1 = pbVar9 + *(long *)(this + 8); + local_410 = 0x408; + pbVar8 = __s1 + -1; + if (0x408 < uVar1) { + local_418 = pcVar4; + pcVar4 = operator_new__(uVar1); + } + pbVar10 = pbVar8; + local_418 = pcVar4; + local_410 = uVar1; + if (pbVar9 <= pbVar8) { + bVar5 = __s1[-1]; + uVar6 = (uint)bVar5; + if ((bVar5 != 0x5c && bVar5 != 0x2f) && (bVar5 != 0x3a)) { + while( true ) { + pbVar10 = __s1; + if ((uVar6 == 0x2e) && + ((pbVar10 = pbVar8, *__s1 != 0 && + (iVar3 = strncmp((char *)__s1,".gz",3), pbVar10 = __s1, iVar3 == 0)))) { + pbVar10 = pbVar8; + } + __s1 = pbVar10; + pbVar10 = pbVar9 + -1; + if (pbVar8 + -1 == pbVar9 + -1) break; + pbVar8 = pbVar8 + -1; + bVar5 = *pbVar8; + uVar6 = (uint)(char)bVar5; + pbVar10 = pbVar8; + if ((bVar5 == 0x5c || bVar5 == 0x2f) || (bVar5 == 0x3a)) break; + } + } + } + pbVar9 = pbVar10 + 1; + if (pbVar9 == __s1) { + local_428 = 0; + local_420 = 0; + pcVar4 = (char *)String::allocate((String *)&local_428,0x10); + uVar2 = s_Invalid_filename_00470e28._8_8_; + *(undefined8 *)pcVar4 = s_Invalid_filename_00470e28._0_8_; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-5,(String *)&local_428, + "static cv::String cv::FileStorage::getDefaultObjectName(const cv::String&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x86); + String::deallocate((String *)&local_428); + pcVar4 = local_418; + if (((((int)(char)pbVar10[1] & 0xffffffdfU) - 0x41 & 0xff) < 0x1a) || + (pcVar7 = local_418, (int)(char)pbVar10[1] == 0x5f)) goto LAB_003763d4; +LAB_00376364: + pcVar4 = pcVar7 + 1; + *pcVar7 = 0x5f; + } + else if ((0x19 < (((int)(char)pbVar10[1] & 0xffffffdfU) - 0x41 & 0xff)) && + (pcVar7 = pcVar4, (int)(char)pbVar10[1] != 0x5f)) goto LAB_00376364; + pcVar7 = pcVar4; + if (pbVar9 < __s1) { + do { + pbVar8 = pbVar9 + 1; + bVar5 = *pbVar9; + if ((((9 < (byte)(bVar5 - 0x30)) && (0x19 < (byte)((bVar5 & 0xdf) + 0xbf))) && (bVar5 != 0x5f) + ) && (bVar5 != 0x2d)) { + bVar5 = 0x5f; + } + *pcVar7 = bVar5; + pcVar7 = pcVar7 + 1; + pbVar9 = pbVar8; + } while (pbVar8 != __s1); + pcVar4 = pcVar4 + (long)(pbVar8 + ~(ulong)pbVar10); + } +LAB_003763d4: + pcVar7 = local_418; + *pcVar4 = 0; + iVar3 = strcmp(local_418,"_"); + if (iVar3 == 0) { + *(char (*) [8])pcVar7 = s_unnamed_00470e40; + } + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + __n = strlen(pcVar7); + __dest = (void *)String::allocate(in_x8,__n); + memcpy(__dest,pcVar7,__n); + if ((local_418 != acStack_408) && (local_418 != (char *)0x0)) { + operator_delete__(local_418); + } + return; +} + + +================================================================== + +### FUNC 00376530 (128 bytes) name=cvAttrValue + +undefined8 cvAttrValue(undefined8 *param_1,char *param_2) + +{ + int iVar1; + char *__s2; + long lVar2; + undefined8 *puVar3; + + while( true ) { + if (param_1 == (undefined8 *)0x0) { + return 0; + } + puVar3 = (undefined8 *)*param_1; + if (puVar3 == (undefined8 *)0x0) break; + lVar2 = 0; + __s2 = (char *)*puVar3; + while (__s2 != (char *)0x0) { + iVar1 = strcmp(param_2,__s2); + if (iVar1 == 0) { + return puVar3[lVar2 + 1]; + } + lVar2 = lVar2 + 2; + __s2 = (char *)puVar3[lVar2]; + } + param_1 = (undefined8 *)param_1[1]; + } + return 0; +} + + +================================================================== + +### FUNC 003765b0 (448 bytes) name=cvGetHashedKey + +uint * cvGetHashedKey(long param_1,char *param_2,uint param_3,int param_4) + +{ + byte *pbVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + char *pcVar5; + uint uVar6; + uint uVar7; + long lVar8; + uint *puVar9; + ulong uVar10; + undefined1 (*pauVar11) [16]; + long lVar12; + undefined1 auVar13 [16]; + uint *local_8; + + if (param_1 == 0) { + return (uint *)0x0; + } + lVar12 = *(long *)(param_1 + 0x28); + if ((int)param_3 < 0) { + uVar7 = (uint)*param_2; + if (*param_2 == '\0') { + uVar6 = 0; + param_3 = 0; + goto LAB_0037660c; + } + param_3 = 0; + uVar6 = 0; + pcVar5 = param_2; + do { + pcVar5 = pcVar5 + 1; + uVar6 = uVar6 * 0x21 + (uVar7 & 0xff); + uVar7 = (uint)*pcVar5; + param_3 = param_3 + 1; + } while (uVar7 != 0); + } + else { + lVar8 = 0; + uVar6 = 0; + if (param_3 == 0) { + uVar6 = 0; + goto LAB_0037660c; + } + do { + pbVar1 = (byte *)(param_2 + lVar8); + lVar8 = lVar8 + 1; + uVar6 = (uint)*pbVar1 + uVar6 * 0x21; + } while ((int)lVar8 < (int)param_3); + } + uVar6 = uVar6 & 0x7fffffff; +LAB_0037660c: + uVar7 = *(uint *)(lVar12 + 0x6c); + if ((uVar7 - 1 & uVar7) == 0) { + uVar7 = uVar6 & uVar7 - 1; + } + else { + uVar2 = 0; + if (uVar7 != 0) { + uVar2 = uVar6 / uVar7; + } + uVar7 = uVar6 - uVar2 * uVar7; + } + uVar10 = -(ulong)(uVar7 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar7 << 3; + puVar9 = *(uint **)(*(long *)(lVar12 + 0x70) + uVar10); + if (puVar9 != (uint *)0x0) { + do { + if (((*puVar9 == uVar6) && (puVar9[2] == param_3)) && + (iVar3 = memcmp(*(void **)(puVar9 + 4),param_2,(long)(int)param_3), iVar3 == 0)) { + return puVar9; + } + puVar9 = *(uint **)(puVar9 + 6); + } while (puVar9 != (uint *)0x0); + } + if (param_4 == 0) { + return (uint *)0x0; + } + local_8 = *(uint **)(lVar12 + 0x60); + if (local_8 == (uint *)0x0) { + cvSetAdd(lVar12,0,&local_8); + } + else { + uVar7 = *local_8; + iVar3 = *(int *)(lVar12 + 0x68); + *(undefined8 *)(lVar12 + 0x60) = *(undefined8 *)(local_8 + 2); + *local_8 = uVar7 & 0x3ffffff; + *(int *)(lVar12 + 0x68) = iVar3 + 1; + } + puVar9 = local_8; + uVar4 = *(undefined8 *)(lVar12 + 0x48); + pauVar11 = (undefined1 (*) [16])(local_8 + 2); + *local_8 = uVar6; + auVar13 = cvMemStorageAllocString(uVar4,param_2,param_3); + lVar12 = *(long *)(lVar12 + 0x70); + *pauVar11 = auVar13; + *(undefined8 *)(puVar9 + 6) = *(undefined8 *)(lVar12 + uVar10); + *(uint **)(lVar12 + uVar10) = puVar9; + return puVar9; +} + + +================================================================== + +### FUNC 00376770 (896 bytes) name=cvGetFileNode + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint * cvGetFileNode(int *param_1,uint *param_2,uint *param_3,int param_4) + +{ + uint uVar1; + int iVar2; + uint uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + char cVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + int iVar13; + char *pcVar14; + undefined8 *puVar15; + uint *puVar16; + ulong uVar17; + int iVar18; + long lVar19; + uint *puVar20; + uint *local_10; + uint *local_8; + + if (param_1 == (int *)0x0) { + return (uint *)0x0; + } + if (*param_1 != 0x4c4d4159) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar8 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar7 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar6 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar5 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar14 + 0x18) = uVar6; + *(undefined2 *)(pcVar14 + 0x1c) = uVar7; + pcVar14[0x1e] = cVar8; + *(undefined8 *)pcVar14 = uVar4; + *(undefined8 *)(pcVar14 + 8) = uVar5; + cv::error(-5,(String *)&local_10, + "CvFileNode* cvGetFileNode(CvFileStorage*, CvFileNode*, const CvStringHashNode*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x27a); + cv::String::deallocate((String *)&local_10); + } + if (param_3 == (uint *)0x0) { + local_10 = param_3; + local_8 = param_3; + pcVar14 = (char *)cv::String::allocate((String *)&local_10,0x10); + uVar4 = s_Null_key_element_00470e68._8_8_; + *(undefined8 *)pcVar14 = s_Null_key_element_00470e68._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar4; + cv::error(-0x1b,(String *)&local_10, + "CvFileNode* cvGetFileNode(CvFileStorage*, CvFileNode*, const CvStringHashNode*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x27d); + cv::String::deallocate((String *)&local_10); + } + if (param_2 == (uint *)0x0) { + iVar13 = 1; + } + else { + if (*(long *)(param_1 + 0xc) == 0) { + s_Invalid_pointer_to_file_storage_00470e48[0] = + (char)s_Invalid_pointer_to_file_storage_00470e48._0_8_; + s_Invalid_pointer_to_file_storage_00470e48[1] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[2] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[3] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[4] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[5] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[6] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[7] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[8] = + (char)s_Invalid_pointer_to_file_storage_00470e48._8_8_; + s_Invalid_pointer_to_file_storage_00470e48[9] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[10] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0xb] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0xc] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0xd] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0xe] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0xf] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x10] = + (char)s_Invalid_pointer_to_file_storage_00470e48._16_8_; + s_Invalid_pointer_to_file_storage_00470e48[0x11] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x12] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x13] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x14] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0x15] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0x16] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0x17] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x18] = + (char)s_Invalid_pointer_to_file_storage_00470e48._24_4_; + s_Invalid_pointer_to_file_storage_00470e48[0x19] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x1a] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x1b] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x1c] = + (char)s_Invalid_pointer_to_file_storage_00470e48._28_2_; + s_Invalid_pointer_to_file_storage_00470e48[0x1d] = + SUB21(s_Invalid_pointer_to_file_storage_00470e48._28_2_,1); + s_Null_key_element_00470e68[0] = (char)s_Null_key_element_00470e68._0_8_; + s_Null_key_element_00470e68[1] = SUB81(s_Null_key_element_00470e68._0_8_,1); + s_Null_key_element_00470e68[2] = SUB81(s_Null_key_element_00470e68._0_8_,2); + s_Null_key_element_00470e68[3] = SUB81(s_Null_key_element_00470e68._0_8_,3); + s_Null_key_element_00470e68[4] = SUB81(s_Null_key_element_00470e68._0_8_,4); + s_Null_key_element_00470e68[5] = SUB81(s_Null_key_element_00470e68._0_8_,5); + s_Null_key_element_00470e68[6] = SUB81(s_Null_key_element_00470e68._0_8_,6); + s_Null_key_element_00470e68[7] = SUB81(s_Null_key_element_00470e68._0_8_,7); + s_Null_key_element_00470e68[8] = (char)s_Null_key_element_00470e68._8_8_; + s_Null_key_element_00470e68[9] = SUB81(s_Null_key_element_00470e68._8_8_,1); + s_Null_key_element_00470e68[10] = SUB81(s_Null_key_element_00470e68._8_8_,2); + s_Null_key_element_00470e68[0xb] = SUB81(s_Null_key_element_00470e68._8_8_,3); + s_Null_key_element_00470e68[0xc] = SUB81(s_Null_key_element_00470e68._8_8_,4); + s_Null_key_element_00470e68[0xd] = SUB81(s_Null_key_element_00470e68._8_8_,5); + s_Null_key_element_00470e68[0xe] = SUB81(s_Null_key_element_00470e68._8_8_,6); + s_Null_key_element_00470e68[0xf] = SUB81(s_Null_key_element_00470e68._8_8_,7); + return (uint *)0x0; + } + iVar13 = *(int *)(*(long *)(param_1 + 0xc) + 0x28); + if (iVar13 < 1) { + s_Invalid_pointer_to_file_storage_00470e48[0] = + (char)s_Invalid_pointer_to_file_storage_00470e48._0_8_; + s_Invalid_pointer_to_file_storage_00470e48[1] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[2] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[3] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[4] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[5] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[6] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[7] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[8] = + (char)s_Invalid_pointer_to_file_storage_00470e48._8_8_; + s_Invalid_pointer_to_file_storage_00470e48[9] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[10] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0xb] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0xc] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0xd] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0xe] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0xf] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x10] = + (char)s_Invalid_pointer_to_file_storage_00470e48._16_8_; + s_Invalid_pointer_to_file_storage_00470e48[0x11] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x12] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x13] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x14] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0x15] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0x16] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0x17] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x18] = + (char)s_Invalid_pointer_to_file_storage_00470e48._24_4_; + s_Invalid_pointer_to_file_storage_00470e48[0x19] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x1a] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x1b] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x1c] = + (char)s_Invalid_pointer_to_file_storage_00470e48._28_2_; + s_Invalid_pointer_to_file_storage_00470e48[0x1d] = + SUB21(s_Invalid_pointer_to_file_storage_00470e48._28_2_,1); + s_Null_key_element_00470e68[0] = (char)s_Null_key_element_00470e68._0_8_; + s_Null_key_element_00470e68[1] = SUB81(s_Null_key_element_00470e68._0_8_,1); + s_Null_key_element_00470e68[2] = SUB81(s_Null_key_element_00470e68._0_8_,2); + s_Null_key_element_00470e68[3] = SUB81(s_Null_key_element_00470e68._0_8_,3); + s_Null_key_element_00470e68[4] = SUB81(s_Null_key_element_00470e68._0_8_,4); + s_Null_key_element_00470e68[5] = SUB81(s_Null_key_element_00470e68._0_8_,5); + s_Null_key_element_00470e68[6] = SUB81(s_Null_key_element_00470e68._0_8_,6); + s_Null_key_element_00470e68[7] = SUB81(s_Null_key_element_00470e68._0_8_,7); + s_Null_key_element_00470e68[8] = (char)s_Null_key_element_00470e68._8_8_; + s_Null_key_element_00470e68[9] = SUB81(s_Null_key_element_00470e68._8_8_,1); + s_Null_key_element_00470e68[10] = SUB81(s_Null_key_element_00470e68._8_8_,2); + s_Null_key_element_00470e68[0xb] = SUB81(s_Null_key_element_00470e68._8_8_,3); + s_Null_key_element_00470e68[0xc] = SUB81(s_Null_key_element_00470e68._8_8_,4); + s_Null_key_element_00470e68[0xd] = SUB81(s_Null_key_element_00470e68._8_8_,5); + s_Null_key_element_00470e68[0xe] = SUB81(s_Null_key_element_00470e68._8_8_,6); + s_Null_key_element_00470e68[0xf] = SUB81(s_Null_key_element_00470e68._8_8_,7); + return (uint *)0x0; + } + } + puVar20 = (uint *)0x0; + iVar18 = 0; + do { + if (param_2 == (uint *)0x0) { + puVar16 = (uint *)cvGetSeqElem(*(undefined8 *)(param_1 + 0xc),iVar18); + uVar1 = *puVar16; + } + else { + uVar1 = *param_2; + puVar16 = param_2; + } + uVar1 = uVar1 & 7; + if (uVar1 != 6) { + if (uVar1 == 5) { + uVar1 = *(uint *)(*(long *)(puVar16 + 4) + 0x28); + } + if (uVar1 == 0) { + s_Invalid_pointer_to_file_storage_00470e48[0] = + (char)s_Invalid_pointer_to_file_storage_00470e48._0_8_; + s_Invalid_pointer_to_file_storage_00470e48[1] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[2] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[3] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[4] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[5] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[6] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[7] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[8] = + (char)s_Invalid_pointer_to_file_storage_00470e48._8_8_; + s_Invalid_pointer_to_file_storage_00470e48[9] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[10] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0xb] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0xc] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0xd] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0xe] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0xf] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x10] = + (char)s_Invalid_pointer_to_file_storage_00470e48._16_8_; + s_Invalid_pointer_to_file_storage_00470e48[0x11] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x12] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x13] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x14] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0x15] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0x16] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0x17] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x18] = + (char)s_Invalid_pointer_to_file_storage_00470e48._24_4_; + s_Invalid_pointer_to_file_storage_00470e48[0x19] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x1a] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x1b] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x1c] = + (char)s_Invalid_pointer_to_file_storage_00470e48._28_2_; + s_Invalid_pointer_to_file_storage_00470e48[0x1d] = + SUB21(s_Invalid_pointer_to_file_storage_00470e48._28_2_,1); + s_Null_key_element_00470e68[0] = (char)s_Null_key_element_00470e68._0_8_; + s_Null_key_element_00470e68[1] = SUB81(s_Null_key_element_00470e68._0_8_,1); + s_Null_key_element_00470e68[2] = SUB81(s_Null_key_element_00470e68._0_8_,2); + s_Null_key_element_00470e68[3] = SUB81(s_Null_key_element_00470e68._0_8_,3); + s_Null_key_element_00470e68[4] = SUB81(s_Null_key_element_00470e68._0_8_,4); + s_Null_key_element_00470e68[5] = SUB81(s_Null_key_element_00470e68._0_8_,5); + s_Null_key_element_00470e68[6] = SUB81(s_Null_key_element_00470e68._0_8_,6); + s_Null_key_element_00470e68[7] = SUB81(s_Null_key_element_00470e68._0_8_,7); + s_Null_key_element_00470e68[8] = (char)s_Null_key_element_00470e68._8_8_; + s_Null_key_element_00470e68[9] = SUB81(s_Null_key_element_00470e68._8_8_,1); + s_Null_key_element_00470e68[10] = SUB81(s_Null_key_element_00470e68._8_8_,2); + s_Null_key_element_00470e68[0xb] = SUB81(s_Null_key_element_00470e68._8_8_,3); + s_Null_key_element_00470e68[0xc] = SUB81(s_Null_key_element_00470e68._8_8_,4); + s_Null_key_element_00470e68[0xd] = SUB81(s_Null_key_element_00470e68._8_8_,5); + s_Null_key_element_00470e68[0xe] = SUB81(s_Null_key_element_00470e68._8_8_,6); + s_Null_key_element_00470e68[0xf] = SUB81(s_Null_key_element_00470e68._8_8_,7); + return (uint *)0x0; + } + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + puVar15 = (undefined8 *)cv::String::allocate((String *)&local_10,0x31); + uVar12 = DAT_00470ea8; + uVar11 = DAT_00470ea0; + uVar10 = DAT_00470e98; + uVar9 = DAT_00470e90; + uVar5 = DAT_00470e88; + uVar4 = _DAT_00470e80; + *(undefined1 *)(puVar15 + 6) = DAT_00470eb0; + *puVar15 = uVar4; + puVar15[1] = uVar5; + puVar15[2] = uVar9; + puVar15[3] = uVar10; + puVar15[4] = uVar11; + puVar15[5] = uVar12; + cv::error(-2,(String *)&local_10, + "CvFileNode* cvGetFileNode(CvFileStorage*, CvFileNode*, const CvStringHashNode*, int)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x294); + cv::String::deallocate((String *)&local_10); + return (uint *)0x0; + } + lVar19 = *(long *)(puVar16 + 4); + uVar1 = *(uint *)(lVar19 + 0x6c); + if ((uVar1 - 1 & uVar1) == 0) { + uVar1 = uVar1 - 1 & *param_3; + } + else { + uVar3 = 0; + if (uVar1 != 0) { + uVar3 = *param_3 / uVar1; + } + uVar1 = *param_3 - uVar3 * uVar1; + } + uVar17 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + puVar16 = *(uint **)(*(long *)(lVar19 + 0x70) + uVar17); + if (puVar16 == (uint *)0x0) { +LAB_003768fc: + if ((iVar18 == iVar13 + -1) && (param_4 != 0)) { + local_10 = *(uint **)(lVar19 + 0x60); + if (local_10 == (uint *)0x0) { + cvSetAdd(lVar19,0,&local_10); + } + else { + uVar1 = *local_10; + iVar2 = *(int *)(lVar19 + 0x68); + *(undefined8 *)(lVar19 + 0x60) = *(undefined8 *)(local_10 + 2); + *local_10 = uVar1 & 0x3ffffff; + *(int *)(lVar19 + 0x68) = iVar2 + 1; + } + lVar19 = *(long *)(lVar19 + 0x70); + *(uint **)(local_10 + 8) = param_3; + *(undefined8 *)(local_10 + 10) = *(undefined8 *)(lVar19 + uVar17); + *(uint **)(lVar19 + uVar17) = local_10; + puVar20 = local_10; + } + } + else { + if (param_4 != 0) { + do { + while (*(uint **)(puVar16 + 8) != param_3) { + puVar16 = *(uint **)(puVar16 + 10); + if (puVar16 == (uint *)0x0) goto LAB_003768fc; + } + FUN_00371858(*(undefined8 *)(param_1 + 0x18),param_1[0x25], + "CvFileNode* cvGetFileNode(CvFileStorage*, CvFileNode*, const CvStringHashNode*, int)" + ,&LAB_00470eb8,0x2a8); + puVar16 = *(uint **)(puVar16 + 10); + } while (puVar16 != (uint *)0x0); + goto LAB_003768fc; + } + do { + if (*(uint **)(puVar16 + 8) == param_3) { + s_Invalid_pointer_to_file_storage_00470e48[0] = + (char)s_Invalid_pointer_to_file_storage_00470e48._0_8_; + s_Invalid_pointer_to_file_storage_00470e48[1] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[2] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[3] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[4] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[5] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[6] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[7] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[8] = + (char)s_Invalid_pointer_to_file_storage_00470e48._8_8_; + s_Invalid_pointer_to_file_storage_00470e48[9] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[10] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0xb] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0xc] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0xd] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0xe] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0xf] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x10] = + (char)s_Invalid_pointer_to_file_storage_00470e48._16_8_; + s_Invalid_pointer_to_file_storage_00470e48[0x11] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x12] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x13] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x14] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0x15] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0x16] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0x17] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x18] = + (char)s_Invalid_pointer_to_file_storage_00470e48._24_4_; + s_Invalid_pointer_to_file_storage_00470e48[0x19] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x1a] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x1b] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x1c] = + (char)s_Invalid_pointer_to_file_storage_00470e48._28_2_; + s_Invalid_pointer_to_file_storage_00470e48[0x1d] = + SUB21(s_Invalid_pointer_to_file_storage_00470e48._28_2_,1); + s_Null_key_element_00470e68[0] = (char)s_Null_key_element_00470e68._0_8_; + s_Null_key_element_00470e68[1] = SUB81(s_Null_key_element_00470e68._0_8_,1); + s_Null_key_element_00470e68[2] = SUB81(s_Null_key_element_00470e68._0_8_,2); + s_Null_key_element_00470e68[3] = SUB81(s_Null_key_element_00470e68._0_8_,3); + s_Null_key_element_00470e68[4] = SUB81(s_Null_key_element_00470e68._0_8_,4); + s_Null_key_element_00470e68[5] = SUB81(s_Null_key_element_00470e68._0_8_,5); + s_Null_key_element_00470e68[6] = SUB81(s_Null_key_element_00470e68._0_8_,6); + s_Null_key_element_00470e68[7] = SUB81(s_Null_key_element_00470e68._0_8_,7); + s_Null_key_element_00470e68[8] = (char)s_Null_key_element_00470e68._8_8_; + s_Null_key_element_00470e68[9] = SUB81(s_Null_key_element_00470e68._8_8_,1); + s_Null_key_element_00470e68[10] = SUB81(s_Null_key_element_00470e68._8_8_,2); + s_Null_key_element_00470e68[0xb] = SUB81(s_Null_key_element_00470e68._8_8_,3); + s_Null_key_element_00470e68[0xc] = SUB81(s_Null_key_element_00470e68._8_8_,4); + s_Null_key_element_00470e68[0xd] = SUB81(s_Null_key_element_00470e68._8_8_,5); + s_Null_key_element_00470e68[0xe] = SUB81(s_Null_key_element_00470e68._8_8_,6); + s_Null_key_element_00470e68[0xf] = SUB81(s_Null_key_element_00470e68._8_8_,7); + return puVar16; + } + puVar16 = *(uint **)(puVar16 + 10); + } while (puVar16 != (uint *)0x0); + } + iVar18 = iVar18 + 1; + if (iVar13 <= iVar18) { + return puVar20; + } + } while( true ); +} + + +================================================================== + +### FUNC 00376b2c (768 bytes) name=cvGetFileNodeByName + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +long cvGetFileNodeByName(int *param_1,uint *param_2,char *param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + size_t sVar11; + int iVar12; + char *pcVar13; + undefined8 *puVar14; + uint uVar15; + uint *puVar16; + long lVar17; + uint uVar18; + size_t __n; + uint uVar19; + int iVar20; + int iVar21; + char *local_10; + char *local_8; + + if (param_1 != (int *)0x0) { + if (*param_1 != 0x4c4d4159) { + local_10 = (char *)0x0; + local_8 = (char *)0x0; + pcVar13 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar6 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar5 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar13 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar13 + 0x18) = uVar4; + *(undefined2 *)(pcVar13 + 0x1c) = uVar5; + pcVar13[0x1e] = cVar6; + *(undefined8 *)pcVar13 = uVar2; + *(undefined8 *)(pcVar13 + 8) = uVar3; + cv::error(-5,(String *)&local_10, + "CvFileNode* cvGetFileNodeByName(const CvFileStorage*, const CvFileNode*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x2c5); + cv::String::deallocate((String *)&local_10); + } + if (param_3 == (char *)0x0) { + local_10 = param_3; + local_8 = param_3; + pcVar13 = (char *)cv::String::allocate((String *)&local_10,0x11); + uVar3 = s_Null_element_name_00470ec8._8_8_; + uVar2 = s_Null_element_name_00470ec8._0_8_; + pcVar13[0x10] = s_Null_element_name_00470ec8[0x10]; + *(undefined8 *)pcVar13 = uVar2; + *(undefined8 *)(pcVar13 + 8) = uVar3; + cv::error(-0x1b,(String *)&local_10, + "CvFileNode* cvGetFileNodeByName(const CvFileStorage*, const CvFileNode*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x2c8); + cv::String::deallocate((String *)&local_10); + } + uVar15 = (uint)*param_3; + if (*param_3 == '\0') { + __n = 0; + uVar19 = 0; + uVar18 = 0; + } + else { + uVar18 = 0; + sVar11 = 1; + do { + __n = sVar11; + uVar18 = uVar18 * 0x21 + (uVar15 & 0xff); + uVar15 = (uint)param_3[__n]; + uVar19 = (uint)__n; + sVar11 = __n + 1; + } while (uVar15 != 0); + uVar18 = uVar18 & 0x7fffffff; + } + iVar21 = 1; + if ((param_2 != (uint *)0x0) || + ((*(long *)(param_1 + 0xc) != 0 && + (iVar21 = *(int *)(*(long *)(param_1 + 0xc) + 0x28), 0 < iVar21)))) { + iVar20 = 0; + do { + if (param_2 == (uint *)0x0) { + puVar16 = (uint *)cvGetSeqElem(*(undefined8 *)(param_1 + 0xc),iVar20); + uVar15 = *puVar16; + } + else { + uVar15 = *param_2; + puVar16 = param_2; + } + uVar15 = uVar15 & 7; + if (uVar15 != 6) { + if (uVar15 == 5) { + uVar15 = *(uint *)(*(long *)(puVar16 + 4) + 0x28); + } + if (uVar15 == 0) { + s_Invalid_pointer_to_file_storage_00470e48[0] = + (char)s_Invalid_pointer_to_file_storage_00470e48._0_8_; + s_Invalid_pointer_to_file_storage_00470e48[1] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[2] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[3] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[4] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[5] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[6] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[7] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._0_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[8] = + (char)s_Invalid_pointer_to_file_storage_00470e48._8_8_; + s_Invalid_pointer_to_file_storage_00470e48[9] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[10] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0xb] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0xc] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0xd] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0xe] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0xf] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._8_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x10] = + (char)s_Invalid_pointer_to_file_storage_00470e48._16_8_; + s_Invalid_pointer_to_file_storage_00470e48[0x11] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x12] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x13] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x14] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,4); + s_Invalid_pointer_to_file_storage_00470e48[0x15] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,5); + s_Invalid_pointer_to_file_storage_00470e48[0x16] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,6); + s_Invalid_pointer_to_file_storage_00470e48[0x17] = + SUB81(s_Invalid_pointer_to_file_storage_00470e48._16_8_,7); + s_Invalid_pointer_to_file_storage_00470e48[0x18] = + (char)s_Invalid_pointer_to_file_storage_00470e48._24_4_; + s_Invalid_pointer_to_file_storage_00470e48[0x19] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,1); + s_Invalid_pointer_to_file_storage_00470e48[0x1a] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,2); + s_Invalid_pointer_to_file_storage_00470e48[0x1b] = + SUB41(s_Invalid_pointer_to_file_storage_00470e48._24_4_,3); + s_Invalid_pointer_to_file_storage_00470e48[0x1c] = + (char)s_Invalid_pointer_to_file_storage_00470e48._28_2_; + s_Invalid_pointer_to_file_storage_00470e48[0x1d] = + SUB21(s_Invalid_pointer_to_file_storage_00470e48._28_2_,1); + s_Null_element_name_00470ec8[0] = (char)s_Null_element_name_00470ec8._0_8_; + s_Null_element_name_00470ec8[1] = SUB81(s_Null_element_name_00470ec8._0_8_,1); + s_Null_element_name_00470ec8[2] = SUB81(s_Null_element_name_00470ec8._0_8_,2); + s_Null_element_name_00470ec8[3] = SUB81(s_Null_element_name_00470ec8._0_8_,3); + s_Null_element_name_00470ec8[4] = SUB81(s_Null_element_name_00470ec8._0_8_,4); + s_Null_element_name_00470ec8[5] = SUB81(s_Null_element_name_00470ec8._0_8_,5); + s_Null_element_name_00470ec8[6] = SUB81(s_Null_element_name_00470ec8._0_8_,6); + s_Null_element_name_00470ec8[7] = SUB81(s_Null_element_name_00470ec8._0_8_,7); + s_Null_element_name_00470ec8[8] = (char)s_Null_element_name_00470ec8._8_8_; + s_Null_element_name_00470ec8[9] = SUB81(s_Null_element_name_00470ec8._8_8_,1); + s_Null_element_name_00470ec8[10] = SUB81(s_Null_element_name_00470ec8._8_8_,2); + s_Null_element_name_00470ec8[0xb] = SUB81(s_Null_element_name_00470ec8._8_8_,3); + s_Null_element_name_00470ec8[0xc] = SUB81(s_Null_element_name_00470ec8._8_8_,4); + s_Null_element_name_00470ec8[0xd] = SUB81(s_Null_element_name_00470ec8._8_8_,5); + s_Null_element_name_00470ec8[0xe] = SUB81(s_Null_element_name_00470ec8._8_8_,6); + s_Null_element_name_00470ec8[0xf] = SUB81(s_Null_element_name_00470ec8._8_8_,7); + return 0; + } + local_10 = (char *)0x0; + local_8 = (char *)0x0; + puVar14 = (undefined8 *)cv::String::allocate((String *)&local_10,0x31); + uVar10 = DAT_00470ea8; + uVar9 = DAT_00470ea0; + uVar8 = DAT_00470e98; + uVar7 = DAT_00470e90; + uVar3 = DAT_00470e88; + uVar2 = _DAT_00470e80; + *(undefined1 *)(puVar14 + 6) = DAT_00470eb0; + *puVar14 = uVar2; + puVar14[1] = uVar3; + puVar14[2] = uVar7; + puVar14[3] = uVar8; + puVar14[4] = uVar9; + puVar14[5] = uVar10; + cv::error(-2,(String *)&local_10, + "CvFileNode* cvGetFileNodeByName(const CvFileStorage*, const CvFileNode*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x2e3); + cv::String::deallocate((String *)&local_10); + return 0; + } + uVar15 = *(uint *)(*(long *)(puVar16 + 4) + 0x6c); + if ((uVar15 - 1 & uVar15) == 0) { + uVar15 = uVar18 & uVar15 - 1; + } + else { + uVar1 = 0; + if (uVar15 != 0) { + uVar1 = uVar18 / uVar15; + } + uVar15 = uVar18 - uVar1 * uVar15; + } + for (lVar17 = *(long *)(*(long *)(*(long *)(puVar16 + 4) + 0x70) + (long)(int)uVar15 * 8); + lVar17 != 0; lVar17 = *(long *)(lVar17 + 0x28)) { + puVar16 = *(uint **)(lVar17 + 0x20); + if (((*puVar16 == uVar18) && (puVar16[2] == uVar19)) && + (iVar12 = memcmp(*(void **)(puVar16 + 4),param_3,__n), iVar12 == 0)) { + return lVar17; + } + } + iVar20 = iVar20 + 1; + } while (iVar20 < iVar21); + } + } + return 0; +} + + +================================================================== + +### FUNC 00376e68 (248 bytes) name=cvGetRootFileNode + +undefined8 cvGetRootFileNode(int *param_1,uint param_2) + +{ + undefined8 uVar1; + undefined4 uVar2; + undefined2 uVar3; + char cVar4; + char *pcVar5; + long lVar6; + undefined8 uVar7; + int iVar8; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar8 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00376f10; + iVar8 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar4 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar7 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar5 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar5 + 0x18) = uVar2; + *(undefined2 *)(pcVar5 + 0x1c) = uVar3; + pcVar5[0x1e] = cVar4; + *(undefined8 *)pcVar5 = uVar7; + *(undefined8 *)(pcVar5 + 8) = uVar1; + cv::error(iVar8,(String *)&local_10,"CvFileNode* cvGetRootFileNode(const CvFileStorage*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x304); + cv::String::deallocate((String *)&local_10); +LAB_00376f10: + lVar6 = *(long *)(param_1 + 0xc); + uVar7 = 0; + if (lVar6 != 0) { + if (*(uint *)(lVar6 + 0x28) <= param_2) { + return 0; + } + uVar7 = cvGetSeqElem(lVar6,param_2); + } + return uVar7; +} + + +================================================================== + +### FUNC 00376f74 (352 bytes) name=cvStartWriteStruct + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvStartWriteStruct(int *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00377028; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10, + "void cvStartWriteStruct(CvFileStorage*, const char*, int, const char*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb75); + cv::String::deallocate((String *)&local_10); +LAB_00377028: + if (param_1[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10, + "void cvStartWriteStruct(CvFileStorage*, const char*, int, const char*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb75); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_1 + 0x4a))(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 003770fc (312 bytes) name=cvEndWriteStruct + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvEndWriteStruct(int *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_0037719c; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10,"void cvEndWriteStruct(CvFileStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb7d); + cv::String::deallocate((String *)&local_10); +LAB_0037719c: + if (param_1[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10,"void cvEndWriteStruct(CvFileStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb7d); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_1 + 0x4c))(param_1); + return; +} + + +================================================================== + +### FUNC 0037725c (176 bytes) name=~FileStorage + +/* cv::FileStorage::~FileStorage() */ + +void __thiscall cv::FileStorage::~FileStorage(FileStorage *this) + +{ + long *plVar1; + char cVar2; + bool bVar3; + void *pvVar4; + long *plVar5; + long lVar6; + + pvVar4 = *(void **)(this + 0x28); + *(undefined **)this = PTR_vtable_00501a10 + 0x10; + if (*(void **)(this + 0x30) != pvVar4) { + do { + cvEndWriteStruct(*(undefined8 *)(this + 0x10)); + lVar6 = *(long *)(this + 0x30); + pvVar4 = *(void **)(this + 0x28); + *(void **)(this + 0x30) = (void *)(lVar6 + -1); + } while ((void *)(lVar6 + -1) != pvVar4); + } + if (pvVar4 != (void *)0x0) { + operator_delete(pvVar4); + } + String::deallocate((String *)(this + 0x18)); + plVar5 = *(long **)(this + 8); + if (plVar5 != (long *)0x0) { + plVar1 = plVar5 + 1; + do { + lVar6 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*plVar5 + 0x10))(); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00377360 (32 bytes) name=~FileStorage + +/* cv::FileStorage::~FileStorage() */ + +void __thiscall cv::FileStorage::~FileStorage(FileStorage *this) + +{ + ~FileStorage(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00377380 (700 bytes) name=releaseAndGetString + +/* cv::FileStorage::releaseAndGetString() */ + +void cv::FileStorage::releaseAndGetString(void) + +{ + long *plVar1; + int iVar2; + char cVar3; + bool bVar4; + int iVar5; + long *in_x0; + long lVar6; + undefined1 *puVar7; + undefined1 *puVar8; + long *plVar9; + undefined1 *puVar10; + int *piVar11; + String *in_x8; + long lVar12; + undefined1 *puVar13; + undefined1 *puVar14; + undefined1 *puVar15; + long local_10; + undefined8 local_8; + + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + lVar12 = in_x0[2]; + if ((lVar12 == 0) || (*(long *)(lVar12 + 0x178) == 0)) goto LAB_00377508; + String::deallocate(in_x8); + if (*(char *)(lVar12 + 0x180) == '\0') { + lVar6 = *(long *)(lVar12 + 0x178); + } + else { + if (*(int *)(lVar12 + 8) == 0) { +LAB_0037743c: + if (*(FILE **)(lVar12 + 0x68) == (FILE *)0x0) { + if (*(long *)(lVar12 + 0x70) != 0) { + gzclose(); + } + } + else { + fclose(*(FILE **)(lVar12 + 0x68)); + } + lVar6 = *(long *)(lVar12 + 0x178); + } + else { + if (((*(long *)(lVar12 + 0x68) != 0) || (*(long *)(lVar12 + 0x70) != 0)) || + (*(long *)(lVar12 + 0x178) != 0)) { + lVar6 = *(long *)(lVar12 + 0x38); + if (lVar6 != 0) { + while (0 < *(int *)(lVar6 + 0x28)) { + cvEndWriteStruct(lVar12); + lVar6 = *(long *)(lVar12 + 0x38); + } + } + puVar10 = *(undefined1 **)(lVar12 + 0x78); + lVar6 = *(long *)(lVar12 + 0x80); + iVar5 = *(int *)(lVar12 + 0x58); + if ((undefined1 *)(lVar6 + iVar5) < puVar10) { + puVar10[1] = 0; + *puVar10 = 10; + FUN_0037127c(lVar12,*(undefined8 *)(lVar12 + 0x80)); + lVar6 = *(long *)(lVar12 + 0x80); + iVar5 = *(int *)(lVar12 + 0x58); + *(long *)(lVar12 + 0x78) = lVar6; + } + iVar2 = *(int *)(lVar12 + 0x40); + if (iVar2 != iVar5) { + if (iVar5 <= iVar2) { + memset((void *)(lVar6 + iVar5),0x20,(long)(iVar2 - iVar5)); + lVar6 = *(long *)(lVar12 + 0x80); + } + *(int *)(lVar12 + 0x58) = iVar2; + iVar5 = iVar2; + } + *(long *)(lVar12 + 0x78) = lVar6 + iVar5; + if (*(int *)(lVar12 + 4) == 8) { + FUN_0037127c(lVar12,&LAB_00470f08); + } + goto LAB_0037743c; + } + lVar6 = 0; + } + *(undefined8 *)(lVar12 + 0x68) = 0; + *(undefined8 *)(lVar12 + 0x70) = 0; + *(undefined8 *)(lVar12 + 0x160) = 0; + *(undefined8 *)(lVar12 + 0x170) = 0; + *(undefined1 *)(lVar12 + 0x180) = 0; + } + if (lVar6 != 0) { + lVar12 = *(long *)(lVar6 + 0x28); + puVar15 = *(undefined1 **)(lVar6 + 0x30); + puVar13 = *(undefined1 **)(lVar6 + 0x10); + puVar10 = *(undefined1 **)(lVar6 + 0x20); + local_10 = 0; + local_8 = 0; + puVar7 = (undefined1 *) + String::allocate((String *)&local_10, + (ulong)(puVar10 + + (long)(puVar15 + + ((((*(long *)(lVar6 + 0x48) - lVar12 >> 3) + -1) * 0x200 + - *(long *)(lVar6 + 0x38)) - (long)puVar13)))); + while (puVar15 != puVar13) { + puVar14 = puVar13 + 1; + puVar8 = puVar7 + 1; + *puVar7 = *puVar13; + puVar7 = puVar8; + puVar13 = puVar14; + if (puVar14 == puVar10) { + puVar13 = *(undefined1 **)(lVar12 + 8); + lVar12 = lVar12 + 8; + puVar10 = puVar13 + 0x200; + } + } + String::deallocate(in_x8); + if (local_10 != 0) { + piVar11 = (int *)(local_10 + -4); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar4) { + *piVar11 = *piVar11 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + *(long *)in_x8 = local_10; + *(undefined8 *)(in_x8 + 8) = local_8; + String::deallocate((String *)&local_10); + } +LAB_00377508: + if (*(code **)(*in_x0 + 0x20) != release) { + (**(code **)(*in_x0 + 0x20))(); + return; + } + plVar9 = (long *)in_x0[1]; + plVar1 = plVar9 + 1; + if (plVar9 != (long *)0x0) { + do { + lVar12 = *plVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar4) { + *(int *)plVar1 = (int)lVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar12 == 1) { + (**(code **)(*plVar9 + 0x10))(); + } + } + in_x0[6] = in_x0[5]; + in_x0[1] = 0; + in_x0[2] = 0; + *(undefined4 *)(in_x0 + 8) = 0; + return; +} + + +================================================================== + +### FUNC 00377660 (580 bytes) name=cvReleaseFileStorage + +void cvReleaseFileStorage(undefined8 *param_1) + +{ + int iVar1; + char cVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + void *pvVar7; + char *pcVar8; + undefined1 *puVar9; + int iVar10; + void *__s; + undefined8 *puVar11; + long lVar13; + long *plVar14; + undefined8 *local_10; + undefined8 *local_8; + undefined8 *puVar12; + + if (param_1 == (undefined8 *)0x0) { + local_10 = param_1; + local_8 = param_1; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x23); + cVar2 = s_NULL_double_pointer_to_file_stor_00470f20[0x22]; + uVar6 = s_NULL_double_pointer_to_file_stor_00470f20._24_8_; + uVar5 = s_NULL_double_pointer_to_file_stor_00470f20._16_8_; + uVar4 = s_NULL_double_pointer_to_file_stor_00470f20._8_8_; + uVar3 = s_NULL_double_pointer_to_file_stor_00470f20._0_8_; + *(undefined2 *)(pcVar8 + 0x20) = s_NULL_double_pointer_to_file_stor_00470f20._32_2_; + pcVar8[0x22] = cVar2; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + cv::error(-0x1b,(String *)&local_10,"void cvReleaseFileStorage(CvFileStorage**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x226); + cv::String::deallocate((String *)&local_10); + } + __s = (void *)*param_1; + if (__s == (void *)0x0) { + return; + } + cVar2 = *(char *)((long)__s + 0x180); + *param_1 = 0; + if (cVar2 == '\0') goto LAB_0037768c; + if (*(int *)((long)__s + 8) == 0) { +LAB_00377794: + if (*(FILE **)((long)__s + 0x68) == (FILE *)0x0) { + if (*(long *)((long)__s + 0x70) != 0) { + gzclose(); + } + } + else { + fclose(*(FILE **)((long)__s + 0x68)); + } + } + else if (((*(long *)((long)__s + 0x68) != 0) || (*(long *)((long)__s + 0x70) != 0)) || + (*(long *)((long)__s + 0x178) != 0)) { + if (*(long *)((long)__s + 0x38) != 0) { + iVar10 = *(int *)(*(long *)((long)__s + 0x38) + 0x28); + while (0 < iVar10) { + cvEndWriteStruct(__s); + iVar10 = *(int *)(*(long *)((long)__s + 0x38) + 0x28); + } + } + puVar9 = *(undefined1 **)((long)__s + 0x78); + lVar13 = *(long *)((long)__s + 0x80); + iVar10 = *(int *)((long)__s + 0x58); + if ((undefined1 *)(lVar13 + iVar10) < puVar9) { + puVar9[1] = 0; + *puVar9 = 10; + FUN_0037127c(__s,*(undefined8 *)((long)__s + 0x80)); + lVar13 = *(long *)((long)__s + 0x80); + iVar10 = *(int *)((long)__s + 0x58); + *(long *)((long)__s + 0x78) = lVar13; + } + iVar1 = *(int *)((long)__s + 0x40); + if (iVar10 != iVar1) { + if (iVar10 < iVar1) { + memset((void *)(lVar13 + iVar10),0x20,(long)(iVar1 - iVar10)); + lVar13 = *(long *)((long)__s + 0x80); + } + *(int *)((long)__s + 0x58) = iVar1; + } + *(long *)((long)__s + 0x78) = lVar13 + iVar1; + if (*(int *)((long)__s + 4) == 8) { + FUN_0037127c(__s,&LAB_00470f08); + } + goto LAB_00377794; + } + *(undefined8 *)((long)__s + 0x68) = 0; + *(undefined8 *)((long)__s + 0x70) = 0; + *(undefined8 *)((long)__s + 0x160) = 0; + *(undefined8 *)((long)__s + 0x170) = 0; + *(undefined1 *)((long)__s + 0x180) = 0; +LAB_0037768c: + cvReleaseMemStorage((long)__s + 0x20); + cv::cvFree_(*(void **)((long)__s + 0x80)); + *(undefined8 *)((long)__s + 0x80) = 0; + cvReleaseMemStorage((long)__s + 0x10); + plVar14 = *(long **)((long)__s + 0x178); + if (plVar14 != (long *)0x0) { + pvVar7 = (void *)*plVar14; + lVar13 = plVar14[9]; + if (pvVar7 != (void *)0x0) { + puVar11 = (undefined8 *)plVar14[5]; + if ((undefined8 *)plVar14[5] < (undefined8 *)(lVar13 + 8U)) { + do { + puVar12 = puVar11 + 1; + operator_delete((void *)*puVar11); + puVar11 = puVar12; + } while (puVar12 < (undefined8 *)(lVar13 + 8U)); + pvVar7 = (void *)*plVar14; + } + operator_delete(pvVar7); + } + operator_delete(plVar14); + } + memset(__s,0,0x188); + cv::cvFree_(__s); + return; +} + + +================================================================== + +### FUNC 003778b8 (336 bytes) name=cvWriteInt + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWriteInt(int *param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00377964; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10,"void cvWriteInt(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb85); + cv::String::deallocate((String *)&local_10); +LAB_00377964: + if (param_1[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10,"void cvWriteInt(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb85); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_1 + 0x4e))(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00377a30 (344 bytes) name=cvWriteReal + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWriteReal(undefined8 param_1,int *param_2,undefined8 param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_2 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_2 == 0x4c4d4159) goto LAB_00377ae0; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10,"void cvWriteReal(CvFileStorage*, const char*, double)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb8d); + cv::String::deallocate((String *)&local_10); +LAB_00377ae0: + if (param_2[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10,"void cvWriteReal(CvFileStorage*, const char*, double)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb8d); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_2 + 0x50))(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00377bb0 (352 bytes) name=cvWriteString + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWriteString(int *param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00377c64; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10, + "void cvWriteString(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb95); + cv::String::deallocate((String *)&local_10); +LAB_00377c64: + if (param_1[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10, + "void cvWriteString(CvFileStorage*, const char*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb95); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_1 + 0x52))(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00377d38 (336 bytes) name=cvWriteComment + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWriteComment(int *param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00377de4; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10,"void cvWriteComment(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb9d); + cv::String::deallocate((String *)&local_10); +LAB_00377de4: + if (param_1[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10,"void cvWriteComment(CvFileStorage*, const char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xb9d); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_1 + 0x54))(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00377eb0 (312 bytes) name=cvStartNextStream + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvStartNextStream(int *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + undefined8 *puVar9; + int iVar10; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00377f50; + iVar10 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar10,(String *)&local_10,"void cvStartNextStream(CvFileStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xba5); + cv::String::deallocate((String *)&local_10); +LAB_00377f50: + if (param_1[2] == 0) { + local_10 = 0; + local_8 = 0; + puVar9 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + *(undefined4 *)(puVar9 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar9 + 0x24) = uVar4; + *puVar9 = uVar1; + puVar9[1] = uVar2; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + cv::error(-2,(String *)&local_10,"void cvStartNextStream(CvFileStorage*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xba5); + cv::String::deallocate((String *)&local_10); + } + (**(code **)(param_1 + 0x56))(param_1); + return; +} + + +================================================================== + +### FUNC 00378010 (3264 bytes) name=cvWriteRawData + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWriteRawData(int *param_1,char *param_2,int param_3,char *param_4) + +{ + char cVar1; + byte bVar2; + ushort uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + int iVar11; + int iVar12; + char *pcVar13; + size_t sVar14; + long lVar15; + char *pcVar16; + undefined1 *puVar17; + void *pvVar18; + undefined8 *puVar19; + void *__dest; + uint uVar20; + int iVar21; + undefined1 *puVar22; + undefined1 *puVar23; + int iVar24; + ulong uVar25; + int iVar26; + double *pdVar27; + int iVar28; + ulong uVar29; + double __x; + uint uVar30; + float __x_00; + int *piVar31; + char *local_510; + char *local_508; + undefined4 local_500; + undefined1 local_4fc; + char local_4eb [227]; + int aiStack_408 [2]; + undefined8 local_400; + undefined8 local_3f8 [127]; + + local_500 = CONCAT31(local_500._1_3_,DAT_004700e0); + memset((void *)((long)&local_500 + 1),0,0xff); + if (param_1 == (int *)0x0) { + iVar10 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00378104; + iVar10 = -5; + } + local_400 = 0; + local_3f8[0] = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_400,0x1f); + cVar1 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar7 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar6 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar5 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar13 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar13 + 0x18) = uVar6; + *(undefined2 *)(pcVar13 + 0x1c) = uVar7; + pcVar13[0x1e] = cVar1; + *(undefined8 *)pcVar13 = uVar4; + *(undefined8 *)(pcVar13 + 8) = uVar5; + cv::error(iVar10,(String *)&local_400, + "void cvWriteRawData(CvFileStorage*, const void*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc1d); + cv::String::deallocate((String *)&local_400); +LAB_00378104: + if (param_1[2] == 0) { + local_400 = 0; + local_3f8[0] = 0; + puVar19 = (undefined8 *)cv::String::allocate((String *)&local_400,0x26); + uVar7 = DAT_00470f04; + uVar9 = DAT_00470ef8; + uVar8 = DAT_00470ef0; + uVar5 = _LAB_00470ee8; + uVar4 = _DAT_00470ee0; + *(undefined4 *)(puVar19 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar19 + 0x24) = uVar7; + *puVar19 = uVar4; + puVar19[1] = uVar5; + puVar19[2] = uVar8; + puVar19[3] = uVar9; + cv::error(-2,(String *)&local_400, + "void cvWriteRawData(CvFileStorage*, const void*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc1d); + cv::String::deallocate((String *)&local_400); + } + if (param_3 < 0) { + local_400 = 0; + local_3f8[0] = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_400,0x1b); + cVar1 = s_Negative_number_of_elements_00470f48[0x1a]; + uVar7 = s_Negative_number_of_elements_00470f48._24_2_; + uVar5 = s_Negative_number_of_elements_00470f48._8_8_; + uVar4 = s_Negative_number_of_elements_00470f48._0_8_; + *(undefined8 *)(pcVar13 + 0x10) = s_Negative_number_of_elements_00470f48._16_8_; + *(undefined2 *)(pcVar13 + 0x18) = uVar7; + pcVar13[0x1a] = cVar1; + *(undefined8 *)pcVar13 = uVar4; + *(undefined8 *)(pcVar13 + 8) = uVar5; + cv::error(-0xd3,(String *)&local_400, + "void cvWriteRawData(CvFileStorage*, const void*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc20); + cv::String::deallocate((String *)&local_400); + } + iVar10 = 0; + if (param_4 != (char *)0x0) { + sVar14 = strlen(param_4); + iVar10 = (int)sVar14; + if (iVar10 == 0) { + iVar10 = 0; + } + else { + local_400 = local_400 & 0xffffffff00000000; + if (iVar10 < 1) { + iVar10 = 0; + } + else { + uVar29 = 0; + iVar26 = 0; + do { + uVar30 = (int)param_4[iVar26] - 0x30; + iVar28 = (int)uVar29; + if ((uVar30 & 0xff) < 10) { + if ((byte)((param_4 + iVar26)[1] - 0x30U) < 10) { + local_510 = (char *)0x0; + lVar15 = strtol(param_4 + iVar26,&local_510,10); + uVar30 = (uint)lVar15; + iVar26 = ((int)local_510 - (int)param_4) + -1; + } + if ((int)uVar30 < 1) { + local_510 = (char *)0x0; + local_508 = (char *)0x0; + pcVar13 = (char *)cv::String::allocate((String *)&local_510,0x1f); + cVar1 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar7 = s_Invalid_data_type_specification_00470850._28_2_; + uVar6 = s_Invalid_data_type_specification_00470850._24_4_; + uVar5 = s_Invalid_data_type_specification_00470850._8_8_; + uVar4 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar13 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar13 + 0x18) = uVar6; + *(undefined2 *)(pcVar13 + 0x1c) = uVar7; + pcVar13[0x1e] = cVar1; + *(undefined8 *)pcVar13 = uVar4; + *(undefined8 *)(pcVar13 + 8) = uVar5; + cv::error(-5,(String *)&local_510,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0) + ; + cv::String::deallocate((String *)&local_510); + } + *(uint *)((long)local_3f8 + (long)iVar28 * 4 + -8) = uVar30; + } + else { + pcVar13 = strchr("ucwsifdr",(int)param_4[iVar26]); + if (pcVar13 == (char *)0x0) { + local_510 = pcVar13; + local_508 = pcVar13; + pcVar16 = (char *)cv::String::allocate((String *)&local_510,0x1f); + cVar1 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar7 = s_Invalid_data_type_specification_00470850._28_2_; + uVar6 = s_Invalid_data_type_specification_00470850._24_4_; + uVar5 = s_Invalid_data_type_specification_00470850._8_8_; + uVar4 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar16 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar16 + 0x18) = uVar6; + *(undefined2 *)(pcVar16 + 0x1c) = uVar7; + pcVar16[0x1e] = cVar1; + *(undefined8 *)pcVar16 = uVar4; + *(undefined8 *)(pcVar16 + 8) = uVar5; + cv::error(-5,(String *)&local_510,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8) + ; + cv::String::deallocate((String *)&local_510); + } + uVar25 = -(uVar29 >> 0x1f) & 0xfffffffc00000000 | uVar29 << 2; + piVar31 = (int *)((long)local_3f8 + (uVar25 - 8)); + if (*(int *)((long)local_3f8 + (uVar25 - 8)) == 0) { + *(undefined4 *)((long)local_3f8 + (uVar25 - 8)) = 1; + } + iVar11 = (int)pcVar13 + -0x472f10; + *(int *)((long)local_3f8 + (uVar25 - 4)) = iVar11; + if (iVar28 == 0) { + uVar29 = 2; + *(undefined4 *)((long)local_3f8 + uVar25) = 0; + } + else if (iVar11 == *(int *)((long)aiStack_408 + uVar25 + 4)) { + *(int *)((long)aiStack_408 + uVar25) = *(int *)((long)aiStack_408 + uVar25) + *piVar31 + ; + *piVar31 = 0; + } + else { + uVar30 = iVar28 + 2; + uVar29 = (ulong)uVar30; + if ((int)uVar30 < 0x100) { + lVar15 = (long)(int)uVar30 * 4; + } + else { + local_510 = (char *)0x0; + local_508 = (char *)0x0; + pcVar13 = (char *)cv::String::allocate((String *)&local_510,0x20); + uVar8 = s_Too_long_data_type_specification_00470870._24_8_; + uVar5 = s_Too_long_data_type_specification_00470870._16_8_; + uVar4 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar13 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar8; + cv::error(-5,(String *)&local_510,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0xbe2); + cv::String::deallocate((String *)&local_510); + lVar15 = (long)(int)uVar30 << 2; + } + *(undefined4 *)((long)local_3f8 + lVar15 + -8) = 0; + } + } + iVar26 = iVar26 + 1; + } while (iVar26 < iVar10); + iVar10 = (int)uVar29 >> 1; + } + } + } + if (param_3 != 0) { + if (param_2 == (char *)0x0) { + local_510 = param_2; + local_508 = param_2; + pcVar13 = (char *)cv::String::allocate((String *)&local_510,0x11); + uVar5 = s_Null_data_pointer_00470f68._8_8_; + uVar4 = s_Null_data_pointer_00470f68._0_8_; + pcVar13[0x10] = s_Null_data_pointer_00470f68[0x10]; + *(undefined8 *)pcVar13 = uVar4; + *(undefined8 *)(pcVar13 + 8) = uVar5; + cv::error(-0x1b,(String *)&local_510, + "void cvWriteRawData(CvFileStorage*, const void*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc28); + cv::String::deallocate((String *)&local_510); + } + if (iVar10 == 1) { + local_400 = CONCAT44(local_400._4_4_,(int)local_400 * param_3); + param_3 = 1; + } + iVar26 = 0; + do { + piVar31 = (int *)&local_400; + if (0 < iVar10) { + do { + uVar30 = piVar31[1]; + iVar28 = *piVar31; + iVar11 = (uVar30 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar30 & 7) << 1)) & 3); + pdVar27 = (double *)(param_2 + (int)((iVar26 + iVar11) - 1U & -iVar11)); + if (0 < iVar28) { + iVar26 = 0; + do { + pcVar13 = (char *)&local_500; + switch(uVar30) { + case 0: + uVar20 = (uint)*(byte *)pdVar27; + pcVar13 = local_4eb + 2; + do { + cVar1 = (char)uVar20; + uVar20 = uVar20 / 10; + pcVar13 = pcVar13 + -1; + *pcVar13 = cVar1 + '0' + ((char)uVar20 + (char)(uVar20 << 2)) * -2; + } while (uVar20 != 0); + goto LAB_00378444; + case 1: + bVar2 = *(byte *)pdVar27; + uVar29 = (long)(char)bVar2 >> 0x3f; + uVar29 = ((long)(char)bVar2 ^ uVar29) - uVar29; + pcVar13 = local_4eb + 2; + do { + pcVar16 = pcVar13; + cVar1 = (char)uVar29; + uVar29 = (uVar29 & 0xffffffff) / 10; + pcVar13 = pcVar16 + -1; + *pcVar13 = cVar1 + '0' + (char)uVar29 * -10; + } while ((int)uVar29 != 0); + if ((char)bVar2 < '\0') { + pcVar13 = pcVar16 + -2; + pcVar16[-2] = '-'; + } +LAB_00378444: + local_4eb[2] = 0; + pdVar27 = (double *)((long)pdVar27 + 1); + break; + case 2: + uVar20 = (uint)*(ushort *)pdVar27; + pcVar13 = local_4eb + 2; + local_4eb[2] = 0; + do { + cVar1 = (char)uVar20; + uVar20 = uVar20 / 10; + pcVar13 = pcVar13 + -1; + *pcVar13 = cVar1 + '0' + ((char)uVar20 + (char)(uVar20 << 2)) * -2; + } while (uVar20 != 0); + pdVar27 = (double *)((long)pdVar27 + 2); + break; + case 3: + uVar3 = *(ushort *)pdVar27; + uVar29 = (long)(short)uVar3 >> 0x3f; + uVar29 = ((long)(short)uVar3 ^ uVar29) - uVar29; + local_4eb[2] = 0; + pcVar13 = local_4eb + 2; + do { + pcVar16 = pcVar13; + cVar1 = (char)uVar29; + uVar29 = (uVar29 & 0xffffffff) / 10; + pcVar13 = pcVar16 + -1; + *pcVar13 = cVar1 + '0' + (char)uVar29 * -10; + } while ((int)uVar29 != 0); + if ((short)uVar3 < 0) { + pcVar13 = pcVar16 + -2; + pcVar16[-2] = '-'; + pdVar27 = (double *)((long)pdVar27 + 2); + } + else { + pdVar27 = (double *)((long)pdVar27 + 2); + } + break; + case 4: + iVar11 = *(int *)pdVar27; + uVar29 = (long)iVar11 >> 0x3f; + local_4eb[2] = 0; + uVar29 = ((long)iVar11 ^ uVar29) - uVar29; + pcVar13 = local_4eb + 2; + do { + pcVar16 = pcVar13; + cVar1 = (char)uVar29; + uVar29 = (uVar29 & 0xffffffff) / 10; + pcVar13 = pcVar16 + -1; + *pcVar13 = cVar1 + '0' + (char)uVar29 * -10; + } while ((int)uVar29 != 0); + if (iVar11 < 0) { + pcVar13 = pcVar16 + -2; + pcVar16[-2] = '-'; + pdVar27 = (double *)((long)pdVar27 + 4); + } + else { + pdVar27 = (double *)((long)pdVar27 + 4); + } + break; + case 5: + __x_00 = *(float *)pdVar27; + if (((uint)__x_00 & 0x7f800000) == 0x7f800000) { + if (ABS(__x_00) == INFINITY) { + pcVar16 = "-.Inf"; + if (-1 < (int)__x_00) { + pcVar16 = ".Inf"; + } + strcpy((char *)&local_500,pcVar16); + } + else { + local_500 = DAT_00470bc8; + local_4fc = DAT_00470bcc; + } + } + else { + lVar15 = lrintf(__x_00); + if (__x_00 == (float)(int)lVar15) { + sprintf((char *)&local_500,"%d.",lVar15); + } + else { + sprintf((char *)&local_500,"%.8e",(double)__x_00,lVar15); + pcVar16 = (char *)&local_500; + cVar1 = (char)local_500; + if (((char)local_500 - 0x2bU & 0xfd) != 0) goto LAB_003786a4; + do { + pcVar16 = pcVar16 + 1; + cVar1 = *pcVar16; +LAB_003786a4: + } while (((int)cVar1 - 0x30U & 0xff) < 10); + if (cVar1 == 0x2c) { + *pcVar16 = '.'; + } + } + } + iVar11 = param_1[1]; + pdVar27 = (double *)((long)pdVar27 + 4); + goto joined_r0x003786cc; + case 6: + __x = *pdVar27; + uVar20 = (uint)((ulong)__x >> 0x20); + if ((uVar20 & 0x7ff00000) == 0x7ff00000) { + uVar20 = uVar20 & 0x7fffffff; + if (SUB84(__x,0) != 0) { + uVar20 = uVar20 + 1; + } + if (uVar20 < 0x7ff00001) { + pcVar16 = "-.Inf"; + if (-1 < (long)__x) { + pcVar16 = ".Inf"; + } + strcpy((char *)&local_500,pcVar16); + } + else { + local_500 = DAT_00470bc8; + local_4fc = DAT_00470bcc; + } + } + else { + lVar15 = lrint(__x); + if (__x == (double)(int)lVar15) { + sprintf((char *)&local_500,"%d.",lVar15); + } + else { + sprintf((char *)&local_500,"%.16e",__x,lVar15); + pcVar16 = (char *)&local_500; + cVar1 = (char)local_500; + if (((char)local_500 - 0x2bU & 0xfd) != 0) goto LAB_0037861c; + do { + pcVar16 = pcVar16 + 1; + cVar1 = *pcVar16; +LAB_0037861c: + } while (((int)cVar1 - 0x30U & 0xff) < 10); + if (cVar1 == 0x2c) { + *pcVar16 = '.'; + } + } + } + pdVar27 = pdVar27 + 1; + break; + case 7: + iVar11 = SUB84(*pdVar27,0); + uVar29 = (long)iVar11 >> 0x3f; + local_4eb[2] = 0; + uVar29 = ((long)iVar11 ^ uVar29) - uVar29; + pcVar13 = local_4eb + 2; + do { + pcVar16 = pcVar13; + cVar1 = (char)uVar29; + uVar29 = (uVar29 & 0xffffffff) / 10; + pcVar13 = pcVar16 + -1; + *pcVar13 = cVar1 + '0' + (char)uVar29 * -10; + } while ((int)uVar29 != 0); + if (iVar11 < 0) { + pcVar16[-2] = '-'; + pdVar27 = pdVar27 + 1; + pcVar13 = pcVar16 + -2; + } + else { + pdVar27 = pdVar27 + 1; + } + break; + default: + goto switchD_00378264_default; + } + iVar11 = param_1[1]; +joined_r0x003786cc: + if (iVar11 == 8) { + sVar14 = strlen(pcVar13); + iVar11 = (int)sVar14; + if ((param_1[0x11] & 7U) == 6) { + sVar14 = (size_t)iVar11; + FUN_00371a64(param_1,0,1,0,0); + pvVar18 = *(void **)(param_1 + 0x1e); + uVar29 = (long)pvVar18 + sVar14; + if (*(ulong *)(param_1 + 0x22) <= uVar29) { + iVar21 = (int)pvVar18 - (int)*(long *)(param_1 + 0x20); + iVar12 = (int)((long)((*(ulong *)(param_1 + 0x22) - *(long *)(param_1 + 0x20)) * + 3) / 2); + iVar24 = iVar21 + iVar11; + if (iVar21 + iVar11 < iVar12) { + iVar24 = iVar12; + } + __dest = (void *)cv::cvAlloc((long)(iVar24 + 0x100)); + *(long *)(param_1 + 0x1e) = + (long)__dest + + (*(long *)(param_1 + 0x1e) - (long)*(void **)(param_1 + 0x20)); + if (0 < iVar21) { + memcpy(__dest,*(void **)(param_1 + 0x20),(long)iVar21); + } + pvVar18 = (void *)((long)__dest + (long)iVar21); + *(void **)(param_1 + 0x20) = __dest; + uVar29 = (long)pvVar18 + sVar14; + *(long *)(param_1 + 0x22) = (long)__dest + (long)iVar24; + } + memcpy(pvVar18,pcVar13,sVar14); + *(ulong *)(param_1 + 0x1e) = uVar29; + FUN_00371a64(param_1,0,2,0,0); + } + else { + puVar22 = *(undefined1 **)(param_1 + 0x1e); + puVar17 = *(undefined1 **)(param_1 + 0x20); + param_1[0x11] = 5; + iVar24 = iVar11 + ((int)puVar22 - (int)puVar17); + if ((param_1[0x24] < iVar24) && (10 < iVar24 - param_1[0x10])) { +LAB_00378720: + iVar24 = param_1[0x16]; + if (puVar17 + iVar24 < puVar22) { + puVar22[1] = 0; + *puVar22 = 10; + FUN_0037127c(param_1,*(undefined8 *)(param_1 + 0x20)); + puVar17 = *(undefined1 **)(param_1 + 0x20); + iVar24 = param_1[0x16]; + *(undefined1 **)(param_1 + 0x1e) = puVar17; + } + iVar12 = param_1[0x10]; + if (iVar12 != iVar24) { + if (iVar24 <= iVar12) { + memset(puVar17 + iVar24,0x20,(long)(iVar12 - iVar24)); + puVar17 = *(undefined1 **)(param_1 + 0x20); + } + param_1[0x16] = iVar12; + iVar24 = iVar12; + } + *(undefined1 **)(param_1 + 0x1e) = puVar17 + iVar24; + puVar23 = puVar17 + iVar24; + } + else { + puVar23 = puVar22; + if (puVar17 < puVar22) { + if (puVar22[-1] == '>') goto LAB_00378720; + if (puVar17 + param_1[0x10] < puVar22) { + *puVar22 = 0x20; + puVar23 = puVar22 + 1; + } + } + else if ((puVar17 + param_1[0x10] < puVar22) && (puVar22[-1] != '>')) { + puVar23 = puVar22 + 1; + *puVar22 = 0x20; + } + } + pvVar18 = memcpy(puVar23,pcVar13,(long)iVar11); + *(long *)(param_1 + 0x1e) = (long)pvVar18 + (long)iVar11; + } + } + else { + FUN_00374f88(param_1,0,pcVar13); + } + iVar26 = iVar26 + 1; + } while (iVar26 != iVar28); + } + piVar31 = piVar31 + 2; + iVar26 = (int)pdVar27 - (int)param_2; + } while (piVar31 != (int *)((long)&local_400 + ((ulong)(iVar10 - 1) + 1) * 2 * 4)); + } + param_3 = param_3 + -1; + } while (param_3 != 0); + } +switchD_00378264_default: + return; +} + + +================================================================== + +### FUNC 00378d5c (412 bytes) name=FUN_00378d5c + +void FUN_00378d5c(undefined8 param_1,undefined8 param_2,long param_3) + +{ + undefined4 uVar1; + int iVar2; + ulong uVar3; + char *pcVar4; + long local_2e8; + char cStack_2e0; + char cStack_2df; + char local_2de; + undefined1 auStack_2d0 [128]; + undefined1 auStack_250 [288]; + undefined1 auStack_130 [8]; + undefined4 local_128; + undefined4 local_124; + undefined8 local_120; + + local_128 = 0; + local_124 = 0; + local_2e8 = param_3; + cvStartWriteStruct(param_1,param_2,6,"opencv-nd-matrix",0,0); + uVar1 = cvGetDims(local_2e8,auStack_2d0); + cvStartWriteStruct(param_1,"sizes",0xd,0,0,0); + cvWriteRawData(param_1,auStack_2d0,uVar1,&DAT_00470fa8); + cvEndWriteStruct(param_1); + uVar3 = cvGetElemType(local_2e8); + sprintf(&cStack_2e0,"%d%c",(ulong)(((uint)(uVar3 >> 3) & 0x1ff) + 1),(long)"ucwsifdr"[uVar3 & 7]); + pcVar4 = &cStack_2e0; + if ((local_2de == '\0') && (cStack_2e0 == '1')) { + pcVar4 = &cStack_2df; + } + cvWriteString(param_1,&DAT_00470fb8,pcVar4,0); + cvStartWriteStruct(param_1,"data",0xd,0,0,0); + if ((0 < *(int *)(local_2e8 + 0x20)) && (*(long *)(local_2e8 + 0x18) != 0)) { + cvInitNArrayIterator(1,&local_2e8,0,auStack_250,auStack_130,0); + do { + cvWriteRawData(param_1,local_120,local_128,&cStack_2e0); + iVar2 = cvNextNArraySlice(auStack_130); + } while (iVar2 != 0); + } + cvEndWriteStruct(param_1); + cvEndWriteStruct(param_1); + return; +} + + +================================================================== + +### FUNC 00378ef8 (364 bytes) name=FUN_00378ef8 + +void FUN_00378ef8(undefined8 param_1,undefined8 param_2,uint *param_3) + +{ + long lVar1; + ulong uVar2; + long lVar3; + char *pcVar4; + long lVar5; + int iVar6; + ulong uVar7; + char local_10; + char cStack_f; + char local_e; + + cvStartWriteStruct(param_1,param_2,6,"opencv-matrix",0,0); + cvWriteInt(param_1,"rows",param_3[8]); + cvWriteInt(param_1,"cols",param_3[9]); + sprintf(&local_10,"%d%c",(ulong)((*param_3 >> 3 & 0x1ff) + 1), + (long)"ucwsifdr"[(ulong)*param_3 & 7]); + pcVar4 = &local_10; + if ((local_e == '\0') && (local_10 == '1')) { + pcVar4 = &cStack_f; + } + cvWriteString(param_1,&DAT_00470fb8,pcVar4,0); + cvStartWriteStruct(param_1,"data",0xd,0,0,0); + uVar2 = cvGetSize(param_3); + iVar6 = (int)(uVar2 >> 0x20); + uVar7 = uVar2 & 0xffffffff; + if (((0 < iVar6) && (0 < (int)uVar2)) && (lVar3 = *(long *)(param_3 + 6), lVar3 != 0)) { + if ((*param_3 >> 0xe & 1) != 0) { + uVar7 = (ulong)(uint)(iVar6 * (int)uVar2); + iVar6 = 1; + } + lVar5 = 0; + while( true ) { + lVar1 = lVar5 * (int)param_3[1]; + lVar5 = lVar5 + 1; + cvWriteRawData(param_1,lVar3 + lVar1,uVar7,&local_10); + if (iVar6 <= (int)lVar5) break; + lVar3 = *(long *)(param_3 + 6); + } + } + cvEndWriteStruct(param_1); + cvEndWriteStruct(param_1); + return; +} + + +================================================================== + +### FUNC 00379064 (828 bytes) name=FUN_00379064 + +void FUN_00379064(undefined8 param_1,undefined8 param_2,long param_3) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + int iVar9; + int iVar10; + String *this; + int iVar11; + undefined8 local_10; + undefined8 local_8; + + this = (String *)&local_10; + if (*(int *)(param_3 + 0x1c) == 1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate(this,0x30); + uVar7 = s_Images_with_planar_data_layout_a_00471008._40_8_; + uVar6 = s_Images_with_planar_data_layout_a_00471008._32_8_; + uVar5 = s_Images_with_planar_data_layout_a_00471008._24_8_; + uVar4 = s_Images_with_planar_data_layout_a_00471008._16_8_; + uVar3 = s_Images_with_planar_data_layout_a_00471008._8_8_; + *(undefined8 *)pcVar8 = s_Images_with_planar_data_layout_a_00471008._0_8_; + *(undefined8 *)(pcVar8 + 8) = uVar3; + *(undefined8 *)(pcVar8 + 0x10) = uVar4; + *(undefined8 *)(pcVar8 + 0x18) = uVar5; + *(undefined8 *)(pcVar8 + 0x20) = uVar6; + *(undefined8 *)(pcVar8 + 0x28) = uVar7; + cv::error(-0xd2,this,"void icvWriteImage(CvFileStorage*, const char*, const void*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xf22); + cv::String::deallocate(this); + } + cvStartWriteStruct(param_1,param_2,6,"opencv-image",0,0); + cvWriteInt(param_1,"width",*(undefined4 *)(param_3 + 0x28)); + cvWriteInt(param_1,"height",*(undefined4 *)(param_3 + 0x2c)); + if (*(int *)(param_3 + 0x20) == 0) { + cvWriteString(param_1,"origin","top-left",0); + if (*(int *)(param_3 + 0x1c) != 1) goto LAB_0037910c; +LAB_00379320: + pcVar8 = "planar"; + } + else { + cvWriteString(param_1,"origin","bottom-left",0); + if (*(int *)(param_3 + 0x1c) == 1) goto LAB_00379320; +LAB_0037910c: + pcVar8 = "interleaved"; + } + cvWriteString(param_1,"layout",pcVar8,0); + if (*(long *)(param_3 + 0x30) != 0) { + cvStartWriteStruct(param_1,&DAT_00471070,0xe,0,0,0); + cvWriteInt(param_1,"x",*(undefined4 *)(*(long *)(param_3 + 0x30) + 4)); + cvWriteInt(param_1,&DAT_00452188,*(undefined4 *)(*(long *)(param_3 + 0x30) + 8)); + cvWriteInt(param_1,"width",*(undefined4 *)(*(long *)(param_3 + 0x30) + 0xc)); + cvWriteInt(param_1,"height",*(undefined4 *)(*(long *)(param_3 + 0x30) + 0x10)); + cvWriteInt(param_1,&DAT_00471078,**(undefined4 **)(param_3 + 0x30)); + cvEndWriteStruct(param_1); + } + iVar9 = 0x14; + if (-1 < (int)*(uint *)(param_3 + 0x10)) { + iVar9 = 0; + } + uVar1 = 0x43160520 >> (iVar9 + ((*(uint *)(param_3 + 0x10) & 0xf0) >> 2) & 0x1f); + sprintf((char *)this,"%d%c",(ulong)*(uint *)(param_3 + 8),(long)"ucwsifdr"[(ulong)uVar1 & 0xf]); + if ((local_10._2_1_ == '\0') && (local_10._0_1_ == (String)0x31)) { + this = (String *)((long)&local_10 + 1); + } + cvWriteString(param_1,&DAT_00470fb8,this,0); + iVar9 = *(int *)(param_3 + 0x28); + iVar11 = *(int *)(param_3 + 0x2c); + if (iVar9 * *(int *)(param_3 + 8) * + ((uVar1 >> 3 & 1) + 1 << (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3)) == + *(int *)(param_3 + 0x60)) { + iVar9 = iVar9 * iVar11; + cvStartWriteStruct(param_1,"data",0xd,0,0,0); + iVar11 = 1; + } + else { + cvStartWriteStruct(param_1,"data",0xd,0,0,0); + if (iVar11 < 1) goto LAB_003792d0; + } + iVar10 = 0; + do { + iVar2 = iVar10 * *(int *)(param_3 + 0x60); + iVar10 = iVar10 + 1; + cvWriteRawData(param_1,*(long *)(param_3 + 0x58) + (long)iVar2,iVar9,this); + } while (iVar10 < iVar11); +LAB_003792d0: + cvEndWriteStruct(param_1); + cvEndWriteStruct(param_1); + return; +} + + +================================================================== + +### FUNC 003793b4 (844 bytes) name=FUN_003793b4 + +void FUN_003793b4(long param_1,undefined8 param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + long lVar3; + long lVar4; + long lVar5; + long *plVar6; + undefined8 *puVar7; + char *pcVar8; + ulong uVar9; + ulong uVar10; + int *piVar11; + int iVar12; + int *piVar13; + int *piVar14; + int iVar15; + int local_74; + undefined8 local_70; + char local_68; + char cStack_67; + char local_66; + long local_58; + long local_50; + uint local_48; + long local_40 [3]; + undefined8 *local_28; + undefined8 *local_18; + + local_70 = 0; + local_70 = cvCreateMemStorage(0); + cvStartWriteStruct(param_1,param_2,6,"opencv-sparse-matrix",0,0); + local_74 = cvGetDims(param_3,0); + cvStartWriteStruct(param_1,"sizes",0xd,0,0,0); + cvWriteRawData(param_1,param_3 + 0xd,local_74,&DAT_00470fa8); + cvEndWriteStruct(param_1); + sprintf(&local_68,"%d%c",(ulong)((*param_3 >> 3 & 0x1ff) + 1), + (long)"ucwsifdr"[(ulong)*param_3 & 7]); + pcVar8 = &local_68; + if ((local_66 == '\0') && (local_68 == '1')) { + pcVar8 = &cStack_67; + } + cvWriteString(param_1,&DAT_00470fb8,pcVar8,0); + cvStartWriteStruct(param_1,"data",0xd,0,0,0); + lVar4 = cvCreateSeq(7,0x60,8,local_70); + lVar5 = cvInitSparseMatIterator(param_3,&local_58); + lVar3 = local_50; + if (lVar5 != 0) { + while( true ) { + do { + local_50 = lVar3; + local_40[0] = lVar5 + (int)param_3[0xc]; + cvSeqPush(lVar4,local_40); + lVar5 = *(long *)(local_50 + 8); + lVar3 = lVar5; + } while (lVar5 != 0); + uVar1 = local_48 + 1; + uVar10 = (ulong)uVar1; + local_48 = uVar1; + if ((int)*(uint *)(local_58 + 0x28) <= (int)uVar1) break; + uVar9 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | uVar10 << 3; + plVar6 = (long *)(*(long *)(local_58 + 0x20) + uVar9); + lVar5 = *(long *)(*(long *)(local_58 + 0x20) + uVar9); + while (lVar3 = lVar5, lVar5 == 0) { + uVar2 = (int)uVar10 + 1; + uVar10 = (ulong)uVar2; + local_48 = uVar1; + if (uVar2 == *(uint *)(local_58 + 0x28)) goto LAB_0037957c; + plVar6 = plVar6 + 1; + local_48 = uVar2; + lVar5 = *plVar6; + } + } + } +LAB_0037957c: + cvSeqSort(lVar4,FUN_00370fb0,&local_74); + iVar15 = 0; + cvStartReadSeq(lVar4,local_40,0); + piVar13 = (int *)0x0; + if (0 < *(int *)(lVar4 + 0x28)) { + do { + puVar7 = local_28 + 1; + piVar14 = (int *)*local_28; + local_28 = puVar7; + if (puVar7 < local_18) { + if (0 < iVar15) goto LAB_003795d4; +LAB_003796cc: + iVar12 = 0; + } + else { + cvChangeSeqBlock(local_40,1); + if (iVar15 < 1) goto LAB_003796cc; +LAB_003795d4: + if (*piVar14 == *piVar13) { + iVar12 = 0; + piVar11 = piVar14; + do { + piVar11 = piVar11 + 1; + piVar13 = piVar13 + 1; + iVar12 = iVar12 + 1; + } while (*piVar11 == *piVar13); + } + else { + iVar12 = 0; + } + if (iVar12 < local_74 + -1) { + (**(code **)(param_1 + 0x138))(param_1,0,(iVar12 - local_74) + 1); + } + } + piVar13 = piVar14 + iVar12; + if (iVar12 < local_74) { + do { + iVar12 = iVar12 + 1; + (**(code **)(param_1 + 0x138))(param_1,0,*piVar13); + piVar13 = piVar13 + 1; + } while (iVar12 < local_74); + } + iVar15 = iVar15 + 1; + cvWriteRawData(param_1,(long)piVar14 + ((long)(int)param_3[0xb] - (long)(int)param_3[0xc]),1, + &local_68); + piVar13 = piVar14; + } while (iVar15 < *(int *)(lVar4 + 0x28)); + } + cvEndWriteStruct(param_1); + cvEndWriteStruct(param_1); + cvReleaseMemStorage(&local_70); + return; +} + + +================================================================== + +### FUNC 00379700 (4100 bytes) name=FUN_00379700 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00379700(undefined8 param_1,undefined8 param_2,uint *param_3,undefined8 param_4, + undefined8 param_5) + +{ + String *pSVar1; + undefined4 uVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined2 uVar6; + char cVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + int iVar14; + int iVar15; + uint uVar16; + int iVar17; + int iVar18; + void *pvVar19; + void *pvVar20; + char *pcVar21; + String *pSVar22; + size_t sVar23; + undefined4 *puVar24; + ulong uVar25; + long lVar26; + char *pcVar27; + undefined8 *puVar28; + uint uVar29; + undefined4 *puVar30; + uint uVar31; + String *pSVar32; + int iVar33; + ulong uVar34; + undefined4 *__dest; + uint *puVar35; + int local_400; + char *local_3f8; + char *local_3f0; + char *local_3e8; + undefined8 local_3e0; + undefined8 uStack_3d8; + char *local_3d0; + char *local_3c8; + undefined1 auStack_3c0 [24]; + int *local_3a8; + int *local_398; + char cStack_380; + char cStack_37f; + char local_37e; + char cStack_300; + char cStack_2ff; + char local_2fe; + char acStack_280 [120]; + String aSStack_208 [4]; + int local_204; + undefined8 local_200; + undefined8 local_1f8; + uint local_1ec; + + uVar16 = param_3[0x1a]; + iVar14 = 0; + uVar2 = *(undefined4 *)(*(long *)(param_3 + 0x1c) + 0x68); + local_3e0 = param_4; + uStack_3d8 = param_5; + pvVar19 = (void *)cv::cvAlloc(-(ulong)(uVar16 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar16 << 2); + iVar15 = 0; + cvStartReadSeq(param_3,auStack_3c0,0); + if (0 < (int)param_3[10]) { + do { + while( true ) { + if (-1 < *local_3a8) { + *(int *)((long)pvVar19 + (long)iVar14 * 4) = *local_3a8; + *local_3a8 = iVar14; + iVar14 = iVar14 + 1; + } + local_3a8 = (int *)((long)local_3a8 + (long)(int)param_3[0xb]); + if (local_3a8 < local_398) break; + iVar15 = iVar15 + 1; + cvChangeSeqBlock(auStack_3c0,1); + if ((int)param_3[10] <= iVar15) goto LAB_003797e4; + } + iVar15 = iVar15 + 1; + } while (iVar15 < (int)param_3[10]); + } +LAB_003797e4: + cvStartWriteStruct(param_1,param_2,6,"opencv-graph",0,0); + if ((*param_3 >> 0xe & 1) == 0) { + pcVar21 = ""; + } + else { + pcVar21 = "oriented"; + } + cvWriteString(param_1,"flags",pcVar21,1); + cvWriteInt(param_1,"vertex_count",(ulong)uVar16); + local_3f0 = (char *)cvAttrValue(&local_3e0,"vertex_dt"); + if (local_3f0 == (char *)0x0) { + uVar16 = *param_3; + if ((uVar16 & 0xfff) != 0) { + uVar29 = param_3[0xb]; +LAB_0037a1b4: + uVar31 = uVar16 & 7; + uVar16 = (uVar16 >> 3 & 0x1ff) + 1; + if (uVar16 << (ulong)((uint)(0xfa50L >> (uVar31 << 1)) & 3) != uVar29) { + local_200 = 0; + local_1f8 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_200,0x44); + uVar11 = s_Size_of_sequence_element__elem_s_00471140._40_8_; + uVar10 = s_Size_of_sequence_element__elem_s_00471140._32_8_; + uVar9 = s_Size_of_sequence_element__elem_s_00471140._24_8_; + uVar8 = s_Size_of_sequence_element__elem_s_00471140._16_8_; + uVar5 = s_Size_of_sequence_element__elem_s_00471140._8_8_; + uVar4 = s_Size_of_sequence_element__elem_s_00471140._0_8_; + *(undefined4 *)(pcVar21 + 0x40) = s_Size_of_sequence_element__elem_s_00471140._64_4_; + uVar13 = s_Size_of_sequence_element__elem_s_00471140._56_8_; + uVar12 = s_Size_of_sequence_element__elem_s_00471140._48_8_; + *(undefined8 *)pcVar21 = uVar4; + *(undefined8 *)(pcVar21 + 8) = uVar5; + *(undefined8 *)(pcVar21 + 0x10) = uVar8; + *(undefined8 *)(pcVar21 + 0x18) = uVar9; + *(undefined8 *)(pcVar21 + 0x20) = uVar10; + *(undefined8 *)(pcVar21 + 0x28) = uVar11; + *(undefined8 *)(pcVar21 + 0x30) = uVar12; + *(undefined8 *)(pcVar21 + 0x38) = uVar13; + cv::error(-0xd1,(String *)&local_200, + "char* icvGetFormat(const CvSeq*, const char*, CvAttrList*, int, char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xffc); + cv::String::deallocate((String *)&local_200); + uVar31 = *param_3 & 7; + uVar16 = (*param_3 >> 3 & 0x1ff) + 1; + } + sprintf(&cStack_300,"%d%c",(ulong)uVar16,(long)"ucwsifdr"[(int)uVar31]); + local_3f0 = &cStack_300; + if ((local_2fe == '\0') && (cStack_300 == '1')) { + local_3f0 = &cStack_2ff; + } + goto LAB_00379924; + } + uVar29 = param_3[0xb]; + if (uVar29 == 1) { + uVar29 = 1; + goto LAB_0037a1b4; + } + if (0x10 < (int)uVar29) { + if ((uVar29 - 0x10 & 3) == 0) { + sprintf(&cStack_300,"%ui",(ulong)(uVar29 - 0x10 >> 2)); + local_3f0 = &cStack_300; + } + else { + sprintf(&cStack_300,"%uu"); + local_3f0 = &cStack_300; + } + goto LAB_00379924; + } + } + else { + iVar14 = FUN_00371534(local_3f0,(String *)&local_200); + if (iVar14 * 2 < 1) { + uVar16 = 0x10; + } + else { + uVar16 = 0x10; + pSVar22 = (String *)((long)&local_200 + 4); + do { + pSVar32 = pSVar22 + 8; + iVar15 = (*(uint *)pSVar22 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar22 & 7) << 1)) & 3); + uVar16 = ((iVar15 + uVar16) - 1 & -iVar15) + iVar15 * *(int *)(pSVar22 + -4); + pSVar22 = pSVar32; + } while (pSVar32 != (String *)&local_200 + (ulong)(iVar14 * 2 - 1U >> 1) * 8 + 0xc); + } + if (param_3[0xb] != uVar16) { + local_200 = 0; + local_1f8 = 0; + pvVar20 = (void *)cv::String::allocate((String *)&local_200,0x47); + memcpy(pvVar20,&DAT_004710f8,0x47); + cv::error(-0xd1,(String *)&local_200, + "char* icvGetFormat(const CvSeq*, const char*, CvAttrList*, int, char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xff6); + cv::String::deallocate((String *)&local_200); + } +LAB_00379924: + cvWriteString(param_1,"vertex_dt",local_3f0,0); + } + cvWriteInt(param_1,"edge_count",uVar2); + puVar35 = *(uint **)(param_3 + 0x1c); + pcVar21 = (char *)cvAttrValue(&local_3e0,&LAB_004711a8); + if (pcVar21 == (char *)0x0) { + uVar16 = *puVar35; + if ((uVar16 & 0xfff) == 0) { + uVar29 = puVar35[0xb]; + if (uVar29 != 1) { + if ((int)uVar29 < 0x29) { + pcVar21 = ""; + } + else if ((uVar29 - 0x28 & 3) == 0) { + pcVar21 = &cStack_380; + sprintf(pcVar21,"%ui",(ulong)(uVar29 - 0x28 >> 2)); + } + else { + pcVar21 = &cStack_380; + sprintf(pcVar21,"%uu"); + } + goto LAB_00379a38; + } + uVar29 = 1; + } + else { + uVar29 = puVar35[0xb]; + } + uVar31 = uVar16 & 7; + uVar16 = (uVar16 >> 3 & 0x1ff) + 1; + if (uVar16 << (ulong)((uint)(0xfa50L >> (uVar31 << 1)) & 3) != uVar29) { + local_200 = 0; + local_1f8 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_200,0x44); + uVar11 = s_Size_of_sequence_element__elem_s_00471140._40_8_; + uVar10 = s_Size_of_sequence_element__elem_s_00471140._32_8_; + uVar9 = s_Size_of_sequence_element__elem_s_00471140._24_8_; + uVar8 = s_Size_of_sequence_element__elem_s_00471140._16_8_; + uVar5 = s_Size_of_sequence_element__elem_s_00471140._8_8_; + uVar4 = s_Size_of_sequence_element__elem_s_00471140._0_8_; + *(undefined4 *)(pcVar21 + 0x40) = s_Size_of_sequence_element__elem_s_00471140._64_4_; + uVar13 = s_Size_of_sequence_element__elem_s_00471140._56_8_; + uVar12 = s_Size_of_sequence_element__elem_s_00471140._48_8_; + *(undefined8 *)pcVar21 = uVar4; + *(undefined8 *)(pcVar21 + 8) = uVar5; + *(undefined8 *)(pcVar21 + 0x10) = uVar8; + *(undefined8 *)(pcVar21 + 0x18) = uVar9; + *(undefined8 *)(pcVar21 + 0x20) = uVar10; + *(undefined8 *)(pcVar21 + 0x28) = uVar11; + *(undefined8 *)(pcVar21 + 0x30) = uVar12; + *(undefined8 *)(pcVar21 + 0x38) = uVar13; + cv::error(-0xd1,(String *)&local_200, + "char* icvGetFormat(const CvSeq*, const char*, CvAttrList*, int, char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xffc); + cv::String::deallocate((String *)&local_200); + uVar31 = *puVar35 & 7; + uVar16 = (*puVar35 >> 3 & 0x1ff) + 1; + } + sprintf(&cStack_380,"%d%c",(ulong)uVar16,(long)"ucwsifdr"[(int)uVar31]); + pcVar21 = &cStack_380; + if ((local_37e == '\0') && (cStack_380 == '1')) { + pcVar21 = &cStack_37f; + } + } + else { + iVar14 = FUN_00371534(pcVar21,(String *)&local_200); + if (iVar14 * 2 < 1) { + uVar16 = 0x28; + } + else { + uVar16 = 0x28; + pSVar22 = (String *)((long)&local_200 + 4); + do { + pSVar32 = pSVar22 + 8; + iVar15 = (*(uint *)pSVar22 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar22 & 7) << 1)) & 3); + uVar16 = ((iVar15 + uVar16) - 1 & -iVar15) + iVar15 * *(uint *)(pSVar22 + -4); + pSVar22 = pSVar32; + } while (pSVar32 != (String *)&local_200 + (ulong)(iVar14 * 2 - 1U >> 1) * 8 + 0xc); + } + if (puVar35[0xb] != uVar16) { + local_200 = 0; + local_1f8 = 0; + pvVar20 = (void *)cv::String::allocate((String *)&local_200,0x47); + memcpy(pvVar20,&DAT_004710f8,0x47); + cv::error(-0xd1,(String *)&local_200, + "char* icvGetFormat(const CvSeq*, const char*, CvAttrList*, int, char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xff6); + cv::String::deallocate((String *)&local_200); + } + } +LAB_00379a38: + sprintf(acStack_280,"2if%s",pcVar21); + cvWriteString(param_1,&LAB_004711a8,acStack_280,0); + pSVar22 = (String *)cvAttrValue(&local_3e0,"header_dt"); + if (pSVar22 == (String *)0x0) { + uVar16 = param_3[1]; + if ((int)uVar16 < 0x79) goto LAB_00379bd8; + uVar29 = *param_3; + if ((uVar29 & 0xffff0000) == 0x42990000) { + if ((((uVar29 & 0xfff) - 0xc < 2) && (uVar16 == 0x80)) && (param_3[0xb] == 8)) { + cvStartWriteStruct(param_1,&DAT_00471200,0xe,0,0,0); + cvWriteInt(param_1,"x",param_3[0x18]); + cvWriteInt(param_1,&DAT_00452188,param_3[0x19]); + cvWriteInt(param_1,"width",param_3[0x1a]); + cvWriteInt(param_1,"height",param_3[0x1b]); + cvEndWriteStruct(param_1); + cvWriteInt(param_1,"color",param_3[0x1c]); + goto LAB_00379bd8; + } + if ((((uVar29 & 0x3000) == 0x1000) && (param_3[0xb] == 1)) && ((uVar29 & 0xfff) == 0)) { + cvStartWriteStruct(param_1,"origin",0xe,0,0,0); + cvWriteInt(param_1,"x",param_3[0x18]); + cvWriteInt(param_1,&DAT_00452188,param_3[0x19]); + cvEndWriteStruct(param_1); + goto LAB_00379bd8; + } + } + pSVar22 = (String *)&local_200; + if ((uVar16 - 0x78 & 3) == 0) { + sprintf((char *)&local_200,"%ui",(ulong)(uVar16 - 0x78 >> 2)); + } + else { + sprintf((char *)&local_200,"%uu"); + } + } + else { + sVar23 = strlen((char *)pSVar22); + iVar14 = (int)sVar23; + if ((iVar14 == 0) || (local_200 = local_200 & 0xffffffff00000000, iVar14 < 1)) { +LAB_0037a464: + iVar14 = 0x78; + } + else { + uVar34 = 0; + iVar15 = 0; + do { + uVar16 = (int)(char)pSVar22[iVar15] - 0x30; + iVar18 = (int)uVar34; + if ((uVar16 & 0xff) < 10) { + if ((byte)((char)(pSVar22 + iVar15)[1] - 0x30U) < 10) { + local_3d0 = (char *)0x0; + lVar26 = strtol((char *)(pSVar22 + iVar15),&local_3d0,10); + uVar16 = (uint)lVar26; + iVar15 = ((int)local_3d0 - (int)pSVar22) + -1; + } + if ((int)uVar16 < 1) { + local_3d0 = (char *)0x0; + local_3c8 = (char *)0x0; + pcVar21 = (char *)cv::String::allocate((String *)&local_3d0,0x1f); + cVar7 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar6 = s_Invalid_data_type_specification_00470850._28_2_; + uVar2 = s_Invalid_data_type_specification_00470850._24_4_; + uVar5 = s_Invalid_data_type_specification_00470850._8_8_; + uVar4 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar21 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar21 + 0x18) = uVar2; + *(undefined2 *)(pcVar21 + 0x1c) = uVar6; + pcVar21[0x1e] = cVar7; + *(undefined8 *)pcVar21 = uVar4; + *(undefined8 *)(pcVar21 + 8) = uVar5; + cv::error(-5,(String *)&local_3d0,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0); + cv::String::deallocate((String *)&local_3d0); + } + *(uint *)((String *)&local_200 + (long)iVar18 * 4) = uVar16; + } + else { + pcVar21 = strchr("ucwsifdr",(int)(char)pSVar22[iVar15]); + if (pcVar21 == (char *)0x0) { + local_3d0 = pcVar21; + local_3c8 = pcVar21; + pcVar27 = (char *)cv::String::allocate((String *)&local_3d0,0x1f); + cVar7 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar6 = s_Invalid_data_type_specification_00470850._28_2_; + uVar2 = s_Invalid_data_type_specification_00470850._24_4_; + uVar5 = s_Invalid_data_type_specification_00470850._8_8_; + uVar4 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar2; + *(undefined2 *)(pcVar27 + 0x1c) = uVar6; + pcVar27[0x1e] = cVar7; + *(undefined8 *)pcVar27 = uVar4; + *(undefined8 *)(pcVar27 + 8) = uVar5; + cv::error(-5,(String *)&local_3d0,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8); + cv::String::deallocate((String *)&local_3d0); + } + uVar25 = -(uVar34 >> 0x1f) & 0xfffffffc00000000 | uVar34 << 2; + pSVar32 = (String *)&local_200 + uVar25; + if (*(int *)((String *)&local_200 + uVar25) == 0) { + *(undefined4 *)((String *)&local_200 + uVar25) = 1; + } + iVar17 = (int)pcVar21 + -0x472f10; + *(int *)((long)&local_200 + uVar25 + 4) = iVar17; + if (iVar18 == 0) { + uVar34 = 2; + *(undefined4 *)((String *)&local_200 + uVar25 + 8) = 0; + } + else if (iVar17 == *(int *)((long)&local_204 + uVar25)) { + *(int *)((String *)&local_200 + (uVar25 - 8)) = + *(int *)((String *)&local_200 + (uVar25 - 8)) + *(int *)pSVar32; + *(int *)pSVar32 = 0; + } + else { + uVar16 = iVar18 + 2; + uVar34 = (ulong)uVar16; + if (0xff < (int)uVar16) { + local_3d0 = (char *)0x0; + local_3c8 = (char *)0x0; + pcVar21 = (char *)cv::String::allocate((String *)&local_3d0,0x20); + uVar8 = s_Too_long_data_type_specification_00470870._24_8_; + uVar5 = s_Too_long_data_type_specification_00470870._16_8_; + uVar4 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar21 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar21 + 8) = uVar4; + *(undefined8 *)(pcVar21 + 0x10) = uVar5; + *(undefined8 *)(pcVar21 + 0x18) = uVar8; + cv::error(-5,(String *)&local_3d0,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbe2) + ; + cv::String::deallocate((String *)&local_3d0); + } + *(undefined4 *)((String *)&local_200 + (long)(int)uVar16 * 4) = 0; + } + } + iVar15 = iVar15 + 1; + } while (iVar15 < iVar14); + if ((int)uVar34 < 1) goto LAB_0037a464; + iVar14 = 0x78; + pSVar32 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar32 + 8; + iVar15 = (*(uint *)pSVar32 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar32 & 7) << 1)) & 3); + iVar14 = ((iVar15 + iVar14) - 1U & -iVar15) + iVar15 * *(uint *)(pSVar32 + -4); + pSVar32 = pSVar1; + } while (pSVar1 != (String *)&local_200 + (ulong)((int)uVar34 - 1U >> 1) * 8 + 0xc); + } + if ((int)param_3[1] < iVar14) { + local_200 = 0; + local_1f8 = 0; + puVar28 = (undefined8 *)cv::String::allocate((String *)&local_200,0x4a); + uVar6 = DAT_004711f8; + uVar13 = DAT_004711e8; + uVar12 = DAT_004711e0; + uVar11 = _LAB_004711d8; + uVar10 = DAT_004711d0; + uVar9 = _LAB_004711c8; + uVar8 = DAT_004711c0; + uVar5 = DAT_004711b8; + uVar4 = DAT_004711b0; + puVar28[8] = DAT_004711f0; + *(undefined2 *)(puVar28 + 9) = uVar6; + *puVar28 = uVar4; + puVar28[1] = uVar5; + puVar28[2] = uVar8; + puVar28[3] = uVar9; + puVar28[4] = uVar10; + puVar28[5] = uVar11; + puVar28[6] = uVar12; + puVar28[7] = uVar13; + cv::error(-0xd1,(String *)&local_200, + "void icvWriteHeaderData(CvFileStorage*, const CvSeq*, CvAttrList*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xfb6); + cv::String::deallocate((String *)&local_200); + } + } + cvWriteString(param_1,"header_dt",pSVar22,0); + cvStartWriteStruct(param_1,"header_user_data",0xd,0,0,0); + cvWriteRawData(param_1,param_3 + 0x18,1,pSVar22); + cvEndWriteStruct(param_1); +LAB_00379bd8: + iVar14 = 0; + local_400 = 1; + iVar18 = *(int *)(*(long *)(param_3 + 0x1c) + 0x2c) * 3; + iVar15 = param_3[0xb] * 3; + if ((int)(param_3[0xb] * 3) < iVar18) { + iVar15 = iVar18; + } + uVar34 = (ulong)iVar15; + if (iVar15 < 0x10000) { + uVar34 = 0x10000; + } + puVar24 = (undefined4 *)cv::cvAlloc(uVar34); + local_3f8 = "vertices"; + local_3e8 = "edges"; + do { + if (iVar14 == 0) { + puVar35 = param_3; + pcVar21 = local_3f0; + if (local_3f0 != (char *)0x0) goto LAB_00379c4c; + } + else { + puVar35 = *(uint **)(param_3 + 0x1c); + pcVar21 = acStack_280; +LAB_00379c4c: + uVar16 = puVar35[0xb]; + iVar15 = FUN_00371534(pcVar21,(String *)&local_200); + if (iVar15 * 2 < 1) { + iVar18 = 0; + } + else { + iVar18 = 0; + pSVar22 = (String *)((long)&local_200 + 4); + do { + pSVar32 = pSVar22 + 8; + iVar17 = (*(uint *)pSVar22 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar22 & 7) << 1)) & 3); + iVar18 = ((iVar17 + iVar18) - 1U & -iVar17) + iVar17 * *(uint *)(pSVar22 + -4); + pSVar22 = pSVar32; + } while (pSVar32 != (String *)&local_200 + (ulong)(iVar15 * 2 - 1U >> 1) * 8 + 0xc); + } + iVar15 = (local_200._4_4_ >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((local_200._4_4_ & 7) << 1)) & 3); + uVar29 = (iVar18 + iVar15) - 1U & -iVar15; + iVar15 = 0; + if (uVar29 != 0) { + iVar15 = (int)uVar34 / (int)uVar29; + } + pcVar27 = local_3f8; + iVar18 = 4; + if (((iVar14 == 1) && + (iVar17 = FUN_00371534(pcVar21,(String *)&local_200), pcVar27 = local_3e8, iVar18 = 4, + 2 < iVar17)) && + (iVar18 = 4, + 7 < (int)((local_1ec >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((local_1ec & 7) << 1)) & 3)))) { + iVar18 = 8; + } + cvStartWriteStruct(param_1,pcVar27,0xd,0,0,0); + cvStartReadSeq(puVar35,auStack_3c0,0); + if (0 < (int)puVar35[10]) { + iVar33 = 0; + iVar17 = 0; + __dest = puVar24; + do { + while( true ) { + if (-1 < *local_3a8) { + if (iVar14 == 0) { + memcpy(__dest,local_3a8 + 4,(long)(int)uVar29); + } + else { + __dest = (undefined4 *)((long)__dest + 3U & 0xfffffffffffffffc); + puVar30 = *(undefined4 **)(local_3a8 + 8); + iVar3 = local_3a8[1]; + *__dest = **(undefined4 **)(local_3a8 + 6); + __dest[1] = *puVar30; + __dest[2] = iVar3; + if (0x28 < (int)uVar16) { + memcpy((void *)((long)__dest + (long)iVar18 + 0xb & ~(long)(iVar18 + -1)), + local_3a8 + 10,(long)(int)uVar16 - 0x28); + } + } + iVar3 = iVar33 + 1; + if (iVar3 < iVar15) { + __dest = (undefined4 *)((long)__dest + (long)(int)uVar29); + iVar33 = iVar3; + } + else { + iVar33 = 0; + cvWriteRawData(param_1,puVar24,iVar3,pcVar21); + __dest = puVar24; + } + } + local_3a8 = (int *)((long)local_3a8 + (long)(int)puVar35[0xb]); + if (local_3a8 < local_398) break; + iVar17 = iVar17 + 1; + cvChangeSeqBlock(auStack_3c0,1); + if ((int)puVar35[10] <= iVar17) goto LAB_00379e3c; + } + iVar17 = iVar17 + 1; + } while (iVar17 < (int)puVar35[10]); +LAB_00379e3c: + if (iVar33 != 0) { + cvWriteRawData(param_1,puVar24,iVar33,pcVar21); + } + } + cvEndWriteStruct(param_1); + if (local_400 == 2) break; + } + iVar14 = iVar14 + 1; + local_400 = local_400 + 1; + } while( true ); + iVar14 = 0; + iVar15 = 0; + cvEndWriteStruct(param_1); + cvStartReadSeq(param_3,auStack_3c0,0); + uVar16 = param_3[10]; + if (0 < (int)uVar16) { + do { + while( true ) { + if (-1 < *local_3a8) { + lVar26 = (long)iVar14; + iVar14 = iVar14 + 1; + *local_3a8 = *(int *)((long)pvVar19 + lVar26 * 4); + } + local_3a8 = (int *)((long)local_3a8 + (long)(int)param_3[0xb]); + if (local_3a8 < local_398) break; + iVar15 = iVar15 + 1; + cvChangeSeqBlock(auStack_3c0,1); + uVar16 = param_3[10]; + if ((int)uVar16 <= iVar15) goto LAB_00379ef0; + } + iVar15 = iVar15 + 1; + } while (iVar15 < (int)uVar16); + } +LAB_00379ef0: + cv::cvFree_(puVar24); + cv::cvFree_(pvVar19); + return; +} + + +================================================================== + +### FUNC 0037a7a4 (1920 bytes) name=FUN_0037a7a4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0037a7a4(undefined8 param_1,undefined8 param_2,uint *param_3,undefined8 param_4, + undefined8 param_5,int param_6) + +{ + String *pSVar1; + uint uVar2; + int iVar3; + char acVar4 [8]; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined2 uVar13; + int iVar14; + char *pcVar15; + void *__dest; + size_t sVar16; + char *pcVar17; + undefined8 *puVar18; + int iVar19; + uint uVar20; + String *pSVar21; + uint uVar22; + long lVar23; + undefined8 local_310; + undefined8 uStack_308; + char local_300 [8]; + char acStack_2f8 [120]; + char cStack_280; + char cStack_27f; + char local_27e; + undefined8 local_200; + undefined8 local_1f8; + + local_310 = param_4; + uStack_308 = param_5; + cvStartWriteStruct(param_1,param_2,6,"opencv-sequence",0,0); + if (-1 < param_6) { + cvWriteInt(param_1,"level",param_6); + } + pcVar15 = (char *)cvAttrValue(&local_310,&DAT_00470fb8); + if (pcVar15 == (char *)0x0) { + uVar2 = *param_3; + uVar20 = uVar2 & 0xfff; + if ((uVar2 & 0xfff) == 0) { + uVar22 = param_3[0xb]; + if (uVar22 != 1) { + acVar4 = local_300; + if (0 < (int)uVar22) { + if ((uVar22 & 3) != 0) { + sprintf(&cStack_280,"%uu"); + pcVar15 = &cStack_280; + goto LAB_0037ac2c; + } + pcVar15 = &cStack_280; + sprintf(pcVar15,"%ui",(ulong)(uVar22 >> 2)); + uVar2 = *param_3; + uVar20 = uVar2 & 0xfff; + acVar4 = local_300; + } + goto joined_r0x0037ac3c; + } + uVar20 = 1; + } + else { + uVar20 = param_3[0xb]; + } + uVar22 = uVar2 & 7; + uVar2 = (uVar2 >> 3 & 0x1ff) + 1; + if (uVar2 << (ulong)((uint)(0xfa50L >> (uVar22 << 1)) & 3) != uVar20) { + local_200 = 0; + local_1f8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_200,0x44); + uVar10 = s_Size_of_sequence_element__elem_s_00471140._40_8_; + uVar9 = s_Size_of_sequence_element__elem_s_00471140._32_8_; + uVar8 = s_Size_of_sequence_element__elem_s_00471140._24_8_; + uVar7 = s_Size_of_sequence_element__elem_s_00471140._16_8_; + uVar6 = s_Size_of_sequence_element__elem_s_00471140._8_8_; + uVar5 = s_Size_of_sequence_element__elem_s_00471140._0_8_; + *(undefined4 *)(pcVar15 + 0x40) = s_Size_of_sequence_element__elem_s_00471140._64_4_; + uVar12 = s_Size_of_sequence_element__elem_s_00471140._56_8_; + uVar11 = s_Size_of_sequence_element__elem_s_00471140._48_8_; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + *(undefined8 *)(pcVar15 + 0x20) = uVar9; + *(undefined8 *)(pcVar15 + 0x28) = uVar10; + *(undefined8 *)(pcVar15 + 0x30) = uVar11; + *(undefined8 *)(pcVar15 + 0x38) = uVar12; + cv::error(-0xd1,(String *)&local_200, + "char* icvGetFormat(const CvSeq*, const char*, CvAttrList*, int, char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xffc); + cv::String::deallocate((String *)&local_200); + uVar22 = *param_3 & 7; + uVar2 = (*param_3 >> 3 & 0x1ff) + 1; + } + sprintf(&cStack_280,"%d%c",(ulong)uVar2,(long)"ucwsifdr"[(int)uVar22]); + pcVar15 = &cStack_280; + if ((local_27e == '\0') && (cStack_280 == '1')) { + pcVar15 = &cStack_27f; + } +LAB_0037ac2c: + uVar2 = *param_3; + uVar20 = uVar2 & 0xfff; + acVar4 = local_300; + } + else { + iVar14 = FUN_00371534(pcVar15,(String *)&local_200); + if (iVar14 * 2 < 1) { + iVar19 = 0; + } + else { + iVar19 = 0; + pSVar21 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar21 + 8; + iVar3 = (*(uint *)pSVar21 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar21 & 7) << 1)) & 3); + iVar19 = ((iVar3 + iVar19) - 1U & -iVar3) + iVar3 * *(int *)(pSVar21 + -4); + pSVar21 = pSVar1; + } while (pSVar1 != (String *)&local_200 + (ulong)(iVar14 * 2 - 1U >> 1) * 8 + 0xc); + } + iVar14 = (local_200._4_4_ >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((local_200._4_4_ & 7) << 1)) & 3); + if (param_3[0xb] == ((iVar19 + iVar14) - 1U & -iVar14)) goto LAB_0037ac2c; + local_200 = 0; + local_1f8 = 0; + __dest = (void *)cv::String::allocate((String *)&local_200,0x47); + memcpy(__dest,&DAT_004710f8,0x47); + cv::error(-0xd1,(String *)&local_200, + "char* icvGetFormat(const CvSeq*, const char*, CvAttrList*, int, char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xff6); + cv::String::deallocate((String *)&local_200); + uVar2 = *param_3; + uVar20 = uVar2 & 0xfff; + acVar4 = local_300; + } +joined_r0x0037ac3c: + local_300 = s_closed_00471258; + if ((uVar2 >> 0xe & 1) == 0) { + local_300 = (char [8])((ulong)acVar4 & 0xffffffffffffff00); + } + if ((uVar2 >> 0xf & 1) != 0) { + sVar16 = strlen(local_300); + *(undefined4 *)(local_300 + sVar16) = s_hole_00471260._0_4_; + *(undefined2 *)(acStack_2f8 + (sVar16 - 4)) = s_hole_00471260._4_2_; + } + if ((uVar2 & 0x3000) == 0x1000) { + sVar16 = strlen(local_300); + *(undefined4 *)(local_300 + sVar16) = s_curve_00471268._0_4_; + *(undefined2 *)(acStack_2f8 + (sVar16 - 4)) = s_curve_00471268._4_2_; + acStack_2f8[sVar16 - 2] = s_curve_00471268[6]; + } + pcVar17 = local_300; + if ((uVar20 == 0) && (param_3[0xb] != 1)) { + sVar16 = strlen(pcVar17); + *(undefined8 *)(pcVar17 + sVar16) = s_untyped_00471270._0_8_; + acStack_2f8[sVar16] = s_untyped_00471270[8]; + } + if (local_300[0] != '\0') { + pcVar17 = local_300 + 1; + } + cvWriteString(param_1,"flags",pcVar17,1); + cvWriteInt(param_1,"count",param_3[10]); + cvWriteString(param_1,&DAT_00470fb8,pcVar15,0); + pcVar17 = (char *)cvAttrValue(&local_310,"header_dt"); + if (pcVar17 == (char *)0x0) { + uVar20 = param_3[1]; + if ((int)uVar20 < 0x61) goto LAB_0037aaac; + uVar2 = *param_3; + if ((uVar2 & 0xffff0000) == 0x42990000) { + if ((((uVar2 & 0xfff) - 0xc < 2) && (uVar20 == 0x80)) && (param_3[0xb] == 8)) { + cvStartWriteStruct(param_1,&DAT_00471200,0xe,0,0,0); + cvWriteInt(param_1,"x",param_3[0x18]); + cvWriteInt(param_1,&DAT_00452188,param_3[0x19]); + cvWriteInt(param_1,"width",param_3[0x1a]); + cvWriteInt(param_1,"height",param_3[0x1b]); + cvEndWriteStruct(param_1); + cvWriteInt(param_1,"color",param_3[0x1c]); + goto LAB_0037aaac; + } + if ((((uVar2 & 0x3000) == 0x1000) && (param_3[0xb] == 1)) && ((uVar2 & 0xfff) == 0)) { + cvStartWriteStruct(param_1,"origin",0xe,0,0,0); + cvWriteInt(param_1,"x",param_3[0x18]); + cvWriteInt(param_1,&DAT_00452188,param_3[0x19]); + cvEndWriteStruct(param_1); + goto LAB_0037aaac; + } + } + if ((uVar20 - 0x60 & 3) == 0) { + pcVar17 = (char *)&local_200; + sprintf(pcVar17,"%ui",(ulong)(uVar20 - 0x60 >> 2)); + } + else { + pcVar17 = (char *)&local_200; + sprintf(pcVar17,"%uu"); + } + } + else { + iVar14 = FUN_00371534(pcVar17,(String *)&local_200); + if (iVar14 * 2 < 1) { + iVar19 = 0x60; + } + else { + iVar19 = 0x60; + pSVar21 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar21 + 8; + iVar3 = (*(uint *)pSVar21 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar21 & 7) << 1)) & 3); + iVar19 = ((iVar3 + iVar19) - 1U & -iVar3) + iVar3 * *(int *)(pSVar21 + -4); + pSVar21 = pSVar1; + } while (pSVar1 != (String *)&local_200 + (ulong)(iVar14 * 2 - 1U >> 1) * 8 + 0xc); + } + if ((int)param_3[1] < iVar19) { + local_200 = 0; + local_1f8 = 0; + puVar18 = (undefined8 *)cv::String::allocate((String *)&local_200,0x4a); + uVar13 = DAT_004711f8; + uVar12 = DAT_004711e8; + uVar11 = DAT_004711e0; + uVar10 = _LAB_004711d8; + uVar9 = DAT_004711d0; + uVar8 = _LAB_004711c8; + uVar7 = DAT_004711c0; + uVar6 = DAT_004711b8; + uVar5 = DAT_004711b0; + puVar18[8] = DAT_004711f0; + *(undefined2 *)(puVar18 + 9) = uVar13; + *puVar18 = uVar5; + puVar18[1] = uVar6; + puVar18[2] = uVar7; + puVar18[3] = uVar8; + puVar18[4] = uVar9; + puVar18[5] = uVar10; + puVar18[6] = uVar11; + puVar18[7] = uVar12; + cv::error(-0xd1,(String *)&local_200, + "void icvWriteHeaderData(CvFileStorage*, const CvSeq*, CvAttrList*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xfb6); + cv::String::deallocate((String *)&local_200); + } + } + cvWriteString(param_1,"header_dt",pcVar17,0); + cvStartWriteStruct(param_1,"header_user_data",0xd,0,0,0); + cvWriteRawData(param_1,param_3 + 0x18,1,pcVar17); + cvEndWriteStruct(param_1); +LAB_0037aaac: + cvStartWriteStruct(param_1,"data",0xd,0,0,0); + for (lVar23 = *(long *)(param_3 + 0x16); + (lVar23 != 0 && + (cvWriteRawData(param_1,*(undefined8 *)(lVar23 + 0x18),*(undefined4 *)(lVar23 + 0x14),pcVar15) + , **(long **)(param_3 + 0x16) != lVar23)); lVar23 = *(long *)(lVar23 + 8)) { + } + cvEndWriteStruct(param_1); + cvEndWriteStruct(param_1); + return; +} + + +================================================================== + +### FUNC 0037af60 (344 bytes) name=FUN_0037af60 + +void FUN_0037af60(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5) + +{ + int iVar1; + char *__s1; + undefined8 local_20; + undefined8 uStack_18; + long local_10; + undefined4 local_8; + + local_20 = param_4; + uStack_18 = param_5; + __s1 = (char *)cvAttrValue(&local_20,"recursive"); + if ((((__s1 != (char *)0x0) && (iVar1 = strcmp(__s1,"0"), iVar1 != 0)) && + (iVar1 = strcmp(__s1,"false"), iVar1 != 0)) && + ((iVar1 = strcmp(__s1,"False"), iVar1 != 0 && (iVar1 = strcmp(__s1,"FALSE"), iVar1 != 0)))) { + cvStartWriteStruct(param_1,param_2,6,"opencv-sequence-tree",0,0); + cvStartWriteStruct(param_1,"sequences",5,0,0,0); + cvInitTreeNodeIterator(&local_10,param_3,0x7fffffff); + while (local_10 != 0) { + FUN_0037a7a4(param_1,0,local_10,local_20,uStack_18,local_8); + cvNextTreeNode(&local_10); + } + cvEndWriteStruct(param_1); + cvEndWriteStruct(param_1); + return; + } + FUN_0037a7a4(param_1,param_2,param_3,local_20,uStack_18,0xffffffff); + return; +} + + +================================================================== + +### FUNC 0037b0b8 (568 bytes) name=cvStartReadRawData + +void cvStartReadRawData(int *param_1,uint *param_2,undefined8 *param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + char *pcVar11; + int iVar12; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar12 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_0037b160; + iVar12 = -5; + } + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar6 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar5 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar11 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar11 + 0x18) = uVar4; + *(undefined2 *)(pcVar11 + 0x1c) = uVar5; + pcVar11[0x1e] = cVar6; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + cv::error(iVar12,(String *)&local_10, + "void cvStartReadRawData(const CvFileStorage*, const CvFileNode*, CvSeqReader*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc78); + cv::String::deallocate((String *)&local_10); +LAB_0037b160: + if ((param_2 == (uint *)0x0) || (param_3 == (undefined8 *)0x0)) { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x2a); + uVar5 = s_Null_pointer_to_source_file_node_004712b8._40_2_; + uVar8 = s_Null_pointer_to_source_file_node_004712b8._24_8_; + uVar7 = s_Null_pointer_to_source_file_node_004712b8._16_8_; + uVar3 = s_Null_pointer_to_source_file_node_004712b8._8_8_; + uVar2 = s_Null_pointer_to_source_file_node_004712b8._0_8_; + *(undefined8 *)(pcVar11 + 0x20) = s_Null_pointer_to_source_file_node_004712b8._32_8_; + *(undefined2 *)(pcVar11 + 0x28) = uVar5; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + cv::error(-0x1b,(String *)&local_10, + "void cvStartReadRawData(const CvFileStorage*, const CvFileNode*, CvSeqReader*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc7b); + cv::String::deallocate((String *)&local_10); + uVar1 = *param_2; + } + else { + uVar1 = *param_2; + } + uVar1 = uVar1 & 7; + if (1 < uVar1 - 1) { + if (uVar1 == 5) { + cvStartReadSeq(*(undefined8 *)(param_2 + 4),param_3,0); + } + else { + if (uVar1 == 0) { + *param_3 = 0; + param_3[1] = 0; + param_3[2] = 0; + param_3[3] = 0; + param_3[4] = 0; + param_3[5] = 0; + param_3[6] = 0; + param_3[7] = 0; + return; + } + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)cv::String::allocate((String *)&local_10,0x38); + uVar10 = s_The_file_node_should_be_a_numeri_004712e8._40_8_; + uVar9 = s_The_file_node_should_be_a_numeri_004712e8._32_8_; + uVar8 = s_The_file_node_should_be_a_numeri_004712e8._24_8_; + uVar7 = s_The_file_node_should_be_a_numeri_004712e8._16_8_; + uVar3 = s_The_file_node_should_be_a_numeri_004712e8._8_8_; + uVar2 = s_The_file_node_should_be_a_numeri_004712e8._0_8_; + *(undefined8 *)(pcVar11 + 0x30) = s_The_file_node_should_be_a_numeri_004712e8._48_8_; + *(undefined8 *)pcVar11 = uVar2; + *(undefined8 *)(pcVar11 + 8) = uVar3; + *(undefined8 *)(pcVar11 + 0x10) = uVar7; + *(undefined8 *)(pcVar11 + 0x18) = uVar8; + *(undefined8 *)(pcVar11 + 0x20) = uVar9; + *(undefined8 *)(pcVar11 + 0x28) = uVar10; + cv::error(-5,(String *)&local_10, + "void cvStartReadRawData(const CvFileStorage*, const CvFileNode*, CvSeqReader*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc8f); + cv::String::deallocate((String *)&local_10); + } + return; + } + param_3[3] = param_2; + param_3[4] = param_2; + param_3[5] = param_2 + 0x10; + param_3[1] = 0; + return; +} + + +================================================================== + +### FUNC 0037b32c (2360 bytes) name=cvReadRawDataSlice + +void cvReadRawDataSlice(int *param_1,long param_2,int param_3,long param_4,char *param_5) + +{ + uint uVar1; + float fVar2; + uint uVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + int iVar12; + int iVar13; + uint uVar14; + char *pcVar15; + size_t sVar16; + uint *puVar17; + long lVar18; + char *pcVar19; + undefined2 uVar20; + char cVar21; + ulong uVar22; + int iVar23; + int iVar24; + uint uVar25; + ulong uVar26; + double *pdVar27; + double *pdVar28; + double __x; + String *pSVar29; + uint uVar30; + char *local_410; + undefined8 local_408; + undefined8 local_400; + undefined8 local_3f8; + + if (param_1 == (int *)0x0) { + iVar12 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_0037b400; + iVar12 = -5; + } + local_400 = 0; + local_3f8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_400,0x1f); + cVar21 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar20 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar7 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar6 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar5 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar15 + 0x18) = uVar7; + *(undefined2 *)(pcVar15 + 0x1c) = uVar20; + pcVar15[0x1e] = cVar21; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + cv::error(iVar12,(String *)&local_400, + "void cvReadRawDataSlice(const CvFileStorage*, CvSeqReader*, int, void*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc9b); + cv::String::deallocate((String *)&local_400); +LAB_0037b400: + if ((param_4 == 0) || (param_2 == 0)) { + local_400 = 0; + local_3f8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_400,0x2b); + cVar21 = s_Null_pointer_to_reader_or_destin_00471328[0x2a]; + uVar20 = s_Null_pointer_to_reader_or_destin_00471328._40_2_; + uVar9 = s_Null_pointer_to_reader_or_destin_00471328._24_8_; + uVar8 = s_Null_pointer_to_reader_or_destin_00471328._16_8_; + uVar6 = s_Null_pointer_to_reader_or_destin_00471328._8_8_; + uVar5 = s_Null_pointer_to_reader_or_destin_00471328._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_Null_pointer_to_reader_or_destin_00471328._32_8_; + *(undefined2 *)(pcVar15 + 0x28) = uVar20; + pcVar15[0x2a] = cVar21; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar8; + *(undefined8 *)(pcVar15 + 0x18) = uVar9; + cv::error(-0x1b,(String *)&local_400, + "void cvReadRawDataSlice(const CvFileStorage*, CvSeqReader*, int, void*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc9e); + cv::String::deallocate((String *)&local_400); + } + if ((param_3 != 1) && (*(long *)(param_2 + 8) == 0)) { + local_400 = 0; + local_3f8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_400,0x33); + cVar21 = s_The_readed_sequence_is_a_scalar__00471358[0x32]; + uVar11 = s_The_readed_sequence_is_a_scalar__00471358._40_8_; + uVar10 = s_The_readed_sequence_is_a_scalar__00471358._32_8_; + uVar9 = s_The_readed_sequence_is_a_scalar__00471358._24_8_; + uVar8 = s_The_readed_sequence_is_a_scalar__00471358._16_8_; + uVar6 = s_The_readed_sequence_is_a_scalar__00471358._8_8_; + uVar5 = s_The_readed_sequence_is_a_scalar__00471358._0_8_; + *(undefined2 *)(pcVar15 + 0x30) = s_The_readed_sequence_is_a_scalar__00471358._48_2_; + pcVar15[0x32] = cVar21; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar8; + *(undefined8 *)(pcVar15 + 0x18) = uVar9; + *(undefined8 *)(pcVar15 + 0x20) = uVar10; + *(undefined8 *)(pcVar15 + 0x28) = uVar11; + cv::error(-0xc9,(String *)&local_400, + "void cvReadRawDataSlice(const CvFileStorage*, CvSeqReader*, int, void*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xca1); + cv::String::deallocate((String *)&local_400); + } + if (param_5 == (char *)0x0) { + iVar12 = 0; + } + else { + sVar16 = strlen(param_5); + iVar12 = (int)sVar16; + if (iVar12 == 0) { + iVar12 = 0; + } + else { + local_400 = local_400 & 0xffffffff00000000; + if (iVar12 < 1) { + iVar12 = 0; + } + else { + uVar26 = 0; + iVar23 = 0; + do { + uVar30 = (int)param_5[iVar23] - 0x30; + iVar24 = (int)uVar26; + if ((uVar30 & 0xff) < 10) { + if ((byte)((param_5 + iVar23)[1] - 0x30U) < 10) { + local_410 = (char *)0x0; + lVar18 = strtol(param_5 + iVar23,&local_410,10); + uVar30 = (uint)lVar18; + iVar23 = ((int)local_410 - (int)param_5) + -1; + } + if ((int)uVar30 < 1) { + local_410 = (char *)0x0; + local_408 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_410,0x1f); + cVar21 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar20 = s_Invalid_data_type_specification_00470850._28_2_; + uVar7 = s_Invalid_data_type_specification_00470850._24_4_; + uVar6 = s_Invalid_data_type_specification_00470850._8_8_; + uVar5 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar15 + 0x18) = uVar7; + *(undefined2 *)(pcVar15 + 0x1c) = uVar20; + pcVar15[0x1e] = cVar21; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + cv::error(-5,(String *)&local_410,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0) + ; + cv::String::deallocate((String *)&local_410); + } + *(uint *)((String *)&local_400 + (long)iVar24 * 4) = uVar30; + } + else { + pcVar15 = strchr("ucwsifdr",(int)param_5[iVar23]); + if (pcVar15 == (char *)0x0) { + local_410 = pcVar15; + local_408 = pcVar15; + pcVar19 = (char *)cv::String::allocate((String *)&local_410,0x1f); + cVar21 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar20 = s_Invalid_data_type_specification_00470850._28_2_; + uVar7 = s_Invalid_data_type_specification_00470850._24_4_; + uVar6 = s_Invalid_data_type_specification_00470850._8_8_; + uVar5 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar19 + 0x18) = uVar7; + *(undefined2 *)(pcVar19 + 0x1c) = uVar20; + pcVar19[0x1e] = cVar21; + *(undefined8 *)pcVar19 = uVar5; + *(undefined8 *)(pcVar19 + 8) = uVar6; + cv::error(-5,(String *)&local_410,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8) + ; + cv::String::deallocate((String *)&local_410); + } + uVar22 = -(uVar26 >> 0x1f) & 0xfffffffc00000000 | uVar26 << 2; + pSVar29 = (String *)&local_400 + uVar22; + if (*(int *)((String *)&local_400 + uVar22) == 0) { + *(undefined4 *)((String *)&local_400 + uVar22) = 1; + } + iVar13 = (int)pcVar15 + -0x472f10; + *(int *)((long)&local_400 + uVar22 + 4) = iVar13; + if (iVar24 == 0) { + uVar26 = 2; + *(undefined4 *)((String *)&local_400 + uVar22 + 8) = 0; + } + else if (iVar13 == *(int *)((long)&local_408 + uVar22 + 4)) { + *(int *)((String *)&local_400 + (uVar22 - 8)) = + *(int *)((String *)&local_400 + (uVar22 - 8)) + *(int *)pSVar29; + *(int *)pSVar29 = 0; + } + else { + uVar30 = iVar24 + 2; + uVar26 = (ulong)uVar30; + if (0xff < (int)uVar30) { + local_410 = (char *)0x0; + local_408 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_410,0x20); + uVar8 = s_Too_long_data_type_specification_00470870._24_8_; + uVar6 = s_Too_long_data_type_specification_00470870._16_8_; + uVar5 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar15 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar5; + *(undefined8 *)(pcVar15 + 0x10) = uVar6; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + cv::error(-5,(String *)&local_410,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0xbe2); + cv::String::deallocate((String *)&local_410); + } + *(undefined4 *)((String *)&local_400 + (long)(int)uVar30 * 4) = 0; + } + } + iVar23 = iVar23 + 1; + } while (iVar23 < iVar12); + iVar12 = (int)uVar26 >> 1; + } + } + } + iVar23 = 0; + do { + do { + } while (iVar12 < 1); + pSVar29 = (String *)((long)&local_400 + 4); + uVar30 = 0; + do { + uVar1 = *(uint *)pSVar29; + uVar3 = *(uint *)(pSVar29 + -4); + iVar24 = (uVar1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3); + pdVar28 = (double *)(param_4 + (int)((iVar23 + iVar24) - 1U & -iVar24)); + if (0 < (int)uVar3) { + uVar4 = param_3 - 1; + uVar25 = 0; + pdVar27 = pdVar28; + do { + puVar17 = *(uint **)(param_2 + 0x18); + if ((*puVar17 & 7) == 1) { + fVar2 = (float)puVar17[4]; + uVar20 = SUB42(fVar2,0); + cVar21 = SUB41(fVar2,0); + switch(uVar1) { + case 0: + if (0xff < (uint)fVar2) { + cVar21 = -(0 < (int)fVar2); + } +LAB_0037ba8c: + pdVar28 = (double *)((long)pdVar27 + 1); + *(char *)pdVar27 = cVar21; + puVar17 = *(uint **)(param_2 + 0x18); + break; + case 1: + if ((0xff < (int)fVar2 + 0x80U) && (cVar21 = '\x7f', (int)fVar2 < 1)) { + cVar21 = -0x80; + } + pdVar28 = (double *)((long)pdVar27 + 1); + *(char *)pdVar27 = cVar21; + puVar17 = *(uint **)(param_2 + 0x18); + break; + case 2: + if ((uint)fVar2 < 0x10000) { + pdVar28 = (double *)((long)pdVar27 + 2); + *(undefined2 *)pdVar27 = uVar20; + } + else { + pdVar28 = (double *)((long)pdVar27 + 2); + *(ushort *)pdVar27 = -(ushort)(0 < (int)fVar2); + } + break; + case 3: + if ((0xffff < (int)fVar2 + 0x8000U) && (uVar20 = 0x7fff, (int)fVar2 < 1)) { + uVar20 = 0x8000; + } + pdVar28 = (double *)((long)pdVar27 + 2); + *(undefined2 *)pdVar27 = uVar20; + break; + case 4: + pdVar28 = (double *)((long)pdVar27 + 4); + *(float *)pdVar27 = fVar2; + break; + case 5: + pdVar28 = (double *)((long)pdVar27 + 4); + *(float *)pdVar27 = (float)(int)fVar2; + break; + case 6: + pdVar28 = pdVar27 + 1; + *pdVar27 = (double)(int)fVar2; + break; + case 7: + pdVar28 = pdVar27 + 1; + *pdVar27 = (double)(long)(int)fVar2; + break; + default: + goto switchD_0037b968_default; + } + } + else if ((*puVar17 & 7) == 2) { + __x = *(double *)(puVar17 + 4); + switch(uVar1) { + case 0: + lVar18 = lrint(__x); + uVar14 = (uint)lVar18; + if (0xff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + pdVar28 = (double *)((long)pdVar27 + 1); + *(char *)pdVar27 = (char)uVar14; + puVar17 = *(uint **)(param_2 + 0x18); + break; + case 1: + lVar18 = lrint(__x); + cVar21 = (char)lVar18; + if ((0xff < (int)lVar18 + 0x80U) && (cVar21 = '\x7f', (int)lVar18 < 1)) { + cVar21 = -0x80; + } + goto LAB_0037ba8c; + case 2: + lVar18 = lrint(__x); + uVar14 = (uint)lVar18; + if (0xffff < uVar14) { + uVar14 = -(uint)(0 < (int)uVar14); + } + puVar17 = *(uint **)(param_2 + 0x18); + pdVar28 = (double *)((long)pdVar27 + 2); + *(short *)pdVar27 = (short)uVar14; + break; + case 3: + lVar18 = lrint(__x); + uVar20 = (undefined2)lVar18; + if ((0xffff < (int)lVar18 + 0x8000U) && (uVar20 = 0x7fff, (int)lVar18 < 1)) { + uVar20 = 0x8000; + } + pdVar28 = (double *)((long)pdVar27 + 2); + *(undefined2 *)pdVar27 = uVar20; + puVar17 = *(uint **)(param_2 + 0x18); + break; + case 4: + lVar18 = lrint(__x); + puVar17 = *(uint **)(param_2 + 0x18); + pdVar28 = (double *)((long)pdVar27 + 4); + *(float *)pdVar27 = (float)lVar18; + break; + case 5: + pdVar28 = (double *)((long)pdVar27 + 4); + *(float *)pdVar27 = (float)__x; + break; + case 6: + pdVar28 = pdVar27 + 1; + *pdVar27 = __x; + break; + case 7: + lVar18 = lrint(__x); + puVar17 = *(uint **)(param_2 + 0x18); + pdVar28 = pdVar27 + 1; + *pdVar27 = (double)(long)(int)lVar18; + break; + default: + goto switchD_0037b968_default; + } + } + else { + local_410 = (char *)0x0; + local_408 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_410,0x2e); + uVar7 = s_The_sequence_element_is_not_a_nu_00471390._40_4_; + *(undefined8 *)(pcVar15 + 0x20) = s_The_sequence_element_is_not_a_nu_00471390._32_8_; + *(undefined4 *)(pcVar15 + 0x28) = uVar7; + *(undefined2 *)(pcVar15 + 0x2c) = s_The_sequence_element_is_not_a_nu_00471390._44_2_; + uVar8 = s_The_sequence_element_is_not_a_nu_00471390._24_8_; + uVar6 = s_The_sequence_element_is_not_a_nu_00471390._16_8_; + uVar5 = s_The_sequence_element_is_not_a_nu_00471390._8_8_; + *(undefined8 *)pcVar15 = s_The_sequence_element_is_not_a_nu_00471390._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar5; + *(undefined8 *)(pcVar15 + 0x10) = uVar6; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + cv::error(-2,(String *)&local_410, + "void cvReadRawDataSlice(const CvFileStorage*, CvSeqReader*, int, void*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd13); + cv::String::deallocate((String *)&local_410); + puVar17 = *(uint **)(param_2 + 0x18); + pdVar28 = pdVar27; + } + *(uint **)(param_2 + 0x18) = puVar17 + 8; + if (*(uint **)(param_2 + 0x28) <= puVar17 + 8) { + cvChangeSeqBlock(param_2,1); + } + if (uVar25 == uVar4) { + if ((uVar3 - 1 != uVar25) || (iVar12 - 1U != uVar30)) { + local_410 = (char *)0x0; + local_408 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_410,0x3c); + uVar7 = s_The_sequence_slice_does_not_fit_a_004713c0._56_4_; + uVar11 = s_The_sequence_slice_does_not_fit_a_004713c0._40_8_; + uVar10 = s_The_sequence_slice_does_not_fit_a_004713c0._32_8_; + uVar9 = s_The_sequence_slice_does_not_fit_a_004713c0._24_8_; + uVar8 = s_The_sequence_slice_does_not_fit_a_004713c0._16_8_; + uVar6 = s_The_sequence_slice_does_not_fit_a_004713c0._8_8_; + uVar5 = s_The_sequence_slice_does_not_fit_a_004713c0._0_8_; + *(undefined8 *)(pcVar15 + 0x30) = s_The_sequence_slice_does_not_fit_a_004713c0._48_8_; + *(undefined4 *)(pcVar15 + 0x38) = uVar7; + *(undefined8 *)pcVar15 = uVar5; + *(undefined8 *)(pcVar15 + 8) = uVar6; + *(undefined8 *)(pcVar15 + 0x10) = uVar8; + *(undefined8 *)(pcVar15 + 0x18) = uVar9; + *(undefined8 *)(pcVar15 + 0x20) = uVar10; + *(undefined8 *)(pcVar15 + 0x28) = uVar11; + cv::error(-0xc9,(String *)&local_410, + "void cvReadRawDataSlice(const CvFileStorage*, CvSeqReader*, int, void*, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd21 + ); + cv::String::deallocate((String *)&local_410); + } + if (*(long *)(param_2 + 8) == 0) { + *(long *)(param_2 + 0x18) = *(long *)(param_2 + 0x18) + -0x20; + } +switchD_0037b968_default: + return; + } + param_3 = param_3 + -1; + uVar25 = uVar25 + 1; + pdVar27 = pdVar28; + } while (uVar25 != uVar3); + } + iVar23 = (int)pdVar28 - (int)param_4; + pSVar29 = pSVar29 + 8; + uVar30 = uVar30 + 1; + } while (pSVar29 != (String *)&local_400 + (ulong)(iVar12 - 1U) * 8 + 0xc); + } while( true ); +} + + +================================================================== + +### FUNC 0037bd04 (2636 bytes) name=FUN_0037bd04 + +long FUN_0037bd04(undefined8 param_1,undefined8 param_2) + +{ + int *piVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined2 uVar5; + char cVar6; + undefined8 uVar7; + undefined8 uVar8; + bool bVar9; + int iVar10; + int iVar11; + uint uVar12; + uint *puVar13; + size_t sVar14; + char *pcVar15; + void *__dest; + long lVar16; + long lVar17; + uint *puVar18; + char *pcVar19; + long lVar20; + uint uVar21; + ulong uVar22; + int iVar23; + int iVar24; + ulong uVar25; + char *__s; + uint uVar26; + int iVar27; + ulong uVar28; + uint uVar29; + uint local_230; + undefined8 local_220; + undefined8 uStack_218; + char *local_210; + undefined8 local_208; + undefined8 local_200; + uint *local_1f8 [63]; + + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,"width"); + if (puVar13 == (uint *)0x0) { + local_230 = 0; +LAB_0037bd78: + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,"height"); + if (puVar13 != (uint *)0x0) goto LAB_0037bd90; +LAB_0037c5fc: + uVar28 = 0; +LAB_0037bdac: + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + if (puVar13 != (uint *)0x0) goto LAB_0037bdc4; +LAB_0037c5d4: + __s = (char *)0x0; + } + else { + if ((*puVar13 & 7) != 1) { + local_230 = 0x7fffffff; + if ((*puVar13 & 7) == 2) { + lVar16 = lrint(*(double *)(puVar13 + 4)); + local_230 = (uint)lVar16; + } + goto LAB_0037bd78; + } + local_230 = puVar13[4]; + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,"height"); + if (puVar13 == (uint *)0x0) goto LAB_0037c5fc; +LAB_0037bd90: + if ((*puVar13 & 7) != 1) { + uVar28 = 0x7fffffff; + if ((*puVar13 & 7) == 2) { + uVar28 = lrint(*(double *)(puVar13 + 4)); + uVar28 = uVar28 & 0xffffffff; + } + goto LAB_0037bdac; + } + uVar28 = (ulong)puVar13[4]; + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + if (puVar13 == (uint *)0x0) goto LAB_0037c5d4; +LAB_0037bdc4: + if ((*puVar13 & 7) == 3) { + __s = *(char **)(puVar13 + 6); + } + else { + __s = (char *)0x0; + } + } + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,"origin"); + iVar27 = (int)uVar28; + if (((((puVar13 == (uint *)0x0) || ((*puVar13 & 7) != 3)) || (iVar27 == 0)) || + ((local_230 == 0 || (__s == (char *)0x0)))) || (*(long *)(puVar13 + 6) == 0)) { + local_200 = (uint *)0x0; + local_1f8[0] = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_200,0x2d); + cVar6 = s_Some_of_essential_image_attribut_00471400[0x2c]; + uVar4 = s_Some_of_essential_image_attribut_00471400._40_4_; + uVar8 = s_Some_of_essential_image_attribut_00471400._24_8_; + uVar7 = s_Some_of_essential_image_attribut_00471400._16_8_; + uVar3 = s_Some_of_essential_image_attribut_00471400._8_8_; + uVar2 = s_Some_of_essential_image_attribut_00471400._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_Some_of_essential_image_attribut_00471400._32_8_; + *(undefined4 *)(pcVar15 + 0x28) = uVar4; + pcVar15[0x2c] = cVar6; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + cv::error(-2,(String *)&local_200,"void* icvReadImage(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xf5d); + cv::String::deallocate((String *)&local_200); + if (__s != (char *)0x0) { + sVar14 = strlen(__s); + iVar10 = (int)sVar14; + bVar9 = iVar10 == 0; + if (!bVar9) goto LAB_0037be2c; + } + } + else { + sVar14 = strlen(__s); + iVar10 = (int)sVar14; + bVar9 = false; + if (iVar10 != 0) { +LAB_0037be2c: + local_200 = (uint *)((ulong)local_200 & 0xffffffff00000000); + if (!bVar9 && -1 < iVar10) { + uVar25 = 0; + iVar23 = 0; + do { + uVar29 = (int)__s[iVar23] - 0x30; + iVar24 = (int)uVar25; + if ((uVar29 & 0xff) < 10) { + if ((byte)((__s + iVar23)[1] - 0x30U) < 10) { + local_210 = (char *)0x0; + lVar16 = strtol(__s + iVar23,&local_210,10); + uVar29 = (uint)lVar16; + iVar23 = ((int)local_210 - (int)__s) + -1; + } + if ((int)uVar29 < 1) { + local_210 = (char *)0x0; + local_208 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_210,0x1f); + cVar6 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar5 = s_Invalid_data_type_specification_00470850._28_2_; + uVar4 = s_Invalid_data_type_specification_00470850._24_4_; + uVar3 = s_Invalid_data_type_specification_00470850._8_8_; + uVar2 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar15 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar15 + 0x18) = uVar4; + *(undefined2 *)(pcVar15 + 0x1c) = uVar5; + pcVar15[0x1e] = cVar6; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + cv::error(-5,(String *)&local_210,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0) + ; + cv::String::deallocate((String *)&local_210); + } + *(uint *)((long)local_1f8 + (long)iVar24 * 4 + -8) = uVar29; + } + else { + pcVar15 = strchr("ucwsifdr",(int)__s[iVar23]); + if (pcVar15 == (char *)0x0) { + local_210 = pcVar15; + local_208 = pcVar15; + pcVar19 = (char *)cv::String::allocate((String *)&local_210,0x1f); + cVar6 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar5 = s_Invalid_data_type_specification_00470850._28_2_; + uVar4 = s_Invalid_data_type_specification_00470850._24_4_; + uVar3 = s_Invalid_data_type_specification_00470850._8_8_; + uVar2 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar19 + 0x18) = uVar4; + *(undefined2 *)(pcVar19 + 0x1c) = uVar5; + pcVar19[0x1e] = cVar6; + *(undefined8 *)pcVar19 = uVar2; + *(undefined8 *)(pcVar19 + 8) = uVar3; + cv::error(-5,(String *)&local_210,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8) + ; + cv::String::deallocate((String *)&local_210); + } + uVar22 = -(uVar25 >> 0x1f) & 0xfffffffc00000000 | uVar25 << 2; + piVar1 = (int *)((long)local_1f8 + (uVar22 - 8)); + if (*(int *)((long)local_1f8 + (uVar22 - 8)) == 0) { + *(undefined4 *)((long)local_1f8 + (uVar22 - 8)) = 1; + } + iVar11 = (int)pcVar15 + -0x472f10; + *(int *)((long)local_1f8 + (uVar22 - 4)) = iVar11; + if (iVar24 == 0) { + uVar25 = 2; + *(undefined4 *)((long)local_1f8 + uVar22) = 0; + } + else if (iVar11 == *(int *)((long)&local_208 + uVar22 + 4)) { + *(int *)((long)&local_208 + uVar22) = *(int *)((long)&local_208 + uVar22) + *piVar1; + *piVar1 = 0; + } + else { + uVar29 = iVar24 + 2; + uVar25 = (ulong)uVar29; + if ((int)uVar29 < 0x100) { + lVar16 = (long)(int)uVar29 * 4; + } + else { + local_210 = (char *)0x0; + local_208 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_210,0x20); + uVar7 = s_Too_long_data_type_specification_00470870._24_8_; + uVar3 = s_Too_long_data_type_specification_00470870._16_8_; + uVar2 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar15 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar15 + 8) = uVar2; + *(undefined8 *)(pcVar15 + 0x10) = uVar3; + *(undefined8 *)(pcVar15 + 0x18) = uVar7; + cv::error(-5,(String *)&local_210,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0xbe2); + cv::String::deallocate((String *)&local_210); + lVar16 = (long)(int)uVar29 << 2; + } + *(undefined4 *)((long)local_1f8 + lVar16 + -8) = 0; + } + } + iVar23 = iVar23 + 1; + } while (iVar23 < iVar10); + if (((int)uVar25 >> 1 == 1) && ((int)local_200 < 5)) goto LAB_0037bf38; + } + } + } + local_210 = (char *)0x0; + local_208 = (char *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_210,0x21); + uVar8 = s_Too_complex_format_for_the_matri_00470df8._24_8_; + uVar7 = s_Too_complex_format_for_the_matri_00470df8._16_8_; + uVar3 = s_Too_complex_format_for_the_matri_00470df8._8_8_; + uVar2 = s_Too_complex_format_for_the_matri_00470df8._0_8_; + pcVar15[0x20] = s_Too_complex_format_for_the_matri_00470df8[0x20]; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + cv::error(-2,(String *)&local_210,"int icvDecodeSimpleFormat(const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc0d); + cv::String::deallocate((String *)&local_210); +LAB_0037bf38: + uVar29 = (local_200._4_4_ & 7) + ((int)local_200 + -1) * 8; + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,"layout"); + if (puVar13 != (uint *)0x0) { + if ((*puVar13 & 7) == 3) { + pcVar15 = *(char **)(puVar13 + 6); + } + else { + pcVar15 = (char *)0x0; + } + iVar10 = strcmp(pcVar15,"interleaved"); + if (iVar10 != 0) { + local_200 = (uint *)0x0; + local_1f8[0] = (uint *)0x0; + pcVar15 = (char *)cv::String::allocate((String *)&local_200,0x23); + cVar6 = s_Only_interleaved_images_can_be_r_00471430[0x22]; + uVar8 = s_Only_interleaved_images_can_be_r_00471430._24_8_; + uVar7 = s_Only_interleaved_images_can_be_r_00471430._16_8_; + uVar3 = s_Only_interleaved_images_can_be_r_00471430._8_8_; + uVar2 = s_Only_interleaved_images_can_be_r_00471430._0_8_; + *(undefined2 *)(pcVar15 + 0x20) = s_Only_interleaved_images_can_be_r_00471430._32_2_; + pcVar15[0x22] = cVar6; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + cv::error(-2,(String *)&local_200,"void* icvReadImage(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xf62); + cv::String::deallocate((String *)&local_200); + } + } + puVar13 = (uint *)cvGetFileNodeByName(param_1,param_2,"data"); + if (puVar13 == (uint *)0x0) { + local_200 = puVar13; + local_1f8[0] = puVar13; + pcVar15 = (char *)cv::String::allocate((String *)&local_200,0x2b); + cVar6 = s_The_image_data_is_not_found_in_f_00471458[0x2a]; + uVar5 = s_The_image_data_is_not_found_in_f_00471458._40_2_; + uVar8 = s_The_image_data_is_not_found_in_f_00471458._24_8_; + uVar7 = s_The_image_data_is_not_found_in_f_00471458._16_8_; + uVar3 = s_The_image_data_is_not_found_in_f_00471458._8_8_; + uVar2 = s_The_image_data_is_not_found_in_f_00471458._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_The_image_data_is_not_found_in_f_00471458._32_8_; + *(undefined2 *)(pcVar15 + 0x28) = uVar5; + pcVar15[0x2a] = cVar6; + *(undefined8 *)pcVar15 = uVar2; + *(undefined8 *)(pcVar15 + 8) = uVar3; + *(undefined8 *)(pcVar15 + 0x10) = uVar7; + *(undefined8 *)(pcVar15 + 0x18) = uVar8; + cv::error(-2,(String *)&local_200,"void* icvReadImage(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xf66); + cv::String::deallocate((String *)&local_200); + } + if ((*puVar13 & 7) < 5) { + uVar12 = (uint)((*puVar13 & 7) != 0); + } + else { + uVar12 = *(uint *)(*(long *)(puVar13 + 4) + 0x28); + } + iVar10 = (uVar29 >> 3 & 0x1ff) + 1; + uVar26 = local_230 * iVar27 * iVar10; + if (uVar26 != uVar12) { + local_200 = (uint *)0x0; + local_1f8[0] = (uint *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_200,0x3f); + memcpy(__dest,"The matrix size does not match to the number of stored elements",0x3f); + cv::error(-0xd1,(String *)&local_200,"void* icvReadImage(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xf6a); + cv::String::deallocate((String *)&local_200); + } + uVar29 = uVar29 & 7; + if ((uVar29 - 3 < 2) || (uVar12 = 0, uVar29 == 1)) { + uVar12 = 0x80000000; + } + lVar16 = cvCreateImage((ulong)local_230 | uVar28 << 0x20, + uVar12 | ((uint)(0x88442211L >> (uVar29 << 2)) & 0xf) << 3,iVar10); + lVar17 = cvGetFileNodeByName(param_1,param_2,&DAT_00471070); + if (lVar17 != 0) { + puVar18 = (uint *)cvGetFileNodeByName(param_1,lVar17,"x"); + if (puVar18 == (uint *)0x0) { + uVar12 = 0; + } + else if ((*puVar18 & 7) == 1) { + uVar12 = puVar18[4]; + } + else { + uVar12 = 0x7fffffff; + if ((*puVar18 & 7) == 2) { + lVar20 = lrint(*(double *)(puVar18 + 4)); + uVar12 = (uint)lVar20; + } + } + puVar18 = (uint *)cvGetFileNodeByName(param_1,lVar17,&DAT_00452188); + if (puVar18 == (uint *)0x0) { + uVar21 = 0; + } + else if ((*puVar18 & 7) == 1) { + uVar21 = puVar18[4]; + } + else { + uVar21 = 0x7fffffff; + if ((*puVar18 & 7) == 2) { + lVar20 = lrint(*(double *)(puVar18 + 4)); + uVar21 = (uint)lVar20; + } + } + local_220 = CONCAT44(uVar21,uVar12); + puVar18 = (uint *)cvGetFileNodeByName(param_1,lVar17,"width"); + if (puVar18 == (uint *)0x0) { + uVar12 = 0; + } + else if ((*puVar18 & 7) == 1) { + uVar12 = puVar18[4]; + } + else { + uVar12 = 0x7fffffff; + if ((*puVar18 & 7) == 2) { + lVar20 = lrint(*(double *)(puVar18 + 4)); + uVar12 = (uint)lVar20; + } + } + puVar18 = (uint *)cvGetFileNodeByName(param_1,lVar17,"height"); + if (puVar18 == (uint *)0x0) { + uVar21 = 0; + } + else if ((*puVar18 & 7) == 1) { + uVar21 = puVar18[4]; + } + else { + uVar21 = 0x7fffffff; + if ((*puVar18 & 7) == 2) { + lVar20 = lrint(*(double *)(puVar18 + 4)); + uVar21 = (uint)lVar20; + } + } + uStack_218 = CONCAT44(uVar21,uVar12); + puVar18 = (uint *)cvGetFileNodeByName(param_1,lVar17,&DAT_00471078); + if (puVar18 == (uint *)0x0) { + uVar28 = 0; + } + else if ((*puVar18 & 7) == 1) { + uVar28 = (ulong)puVar18[4]; + } + else { + uVar28 = 0x7fffffff; + if ((*puVar18 & 7) == 2) { + uVar28 = lrint(*(double *)(puVar18 + 4)); + uVar28 = uVar28 & 0xffffffff; + } + } + cvSetImageROI(lVar16,local_220,uStack_218); + cvSetImageCOI(lVar16,uVar28); + } + if ((iVar10 << (ulong)((uint)(0xfa50L >> (uVar29 << 1)) & 3)) * local_230 == + *(int *)(lVar16 + 0x60)) { + iVar27 = 1; + cvStartReadRawData(param_1,puVar13,(String *)&local_200); + } + else { + uVar26 = iVar10 * local_230; + cvStartReadRawData(param_1,puVar13,(String *)&local_200); + if (iVar27 < 1) { + return lVar16; + } + } + iVar10 = 0; + do { + iVar23 = iVar10 * *(int *)(lVar16 + 0x60); + iVar10 = iVar10 + 1; + cvReadRawDataSlice(param_1,(String *)&local_200,uVar26,*(long *)(lVar16 + 0x58) + (long)iVar23, + __s); + } while (iVar10 < iVar27); + return lVar16; +} + + +================================================================== + +### FUNC 0037c7f0 (244 bytes) name=cvReadRawData + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvReadRawData(undefined8 param_1,uint *param_2,long param_3,undefined8 param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + undefined8 *puVar8; + undefined4 uVar9; + undefined8 local_40; + undefined8 local_38; + + if ((param_2 == (uint *)0x0) || (param_3 == 0)) { + local_40 = 0; + local_38 = 0; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_40,0x36); + uVar7 = DAT_004714fc; + uVar6 = DAT_004714f0; + uVar5 = DAT_004714e8; + uVar4 = DAT_004714e0; + uVar3 = DAT_004714d8; + uVar2 = DAT_004714d0; + uVar1 = _LAB_004714c8; + *(undefined4 *)(puVar8 + 6) = DAT_004714f8; + *(undefined2 *)((long)puVar8 + 0x34) = uVar7; + *puVar8 = uVar1; + puVar8[1] = uVar2; + puVar8[2] = uVar3; + puVar8[3] = uVar4; + puVar8[4] = uVar5; + puVar8[5] = uVar6; + cv::error(-0x1b,(String *)&local_40, + "void cvReadRawData(const CvFileStorage*, const CvFileNode*, void*, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd2f); + cv::String::deallocate((String *)&local_40); + } + cvStartReadRawData(param_1,param_2,(String *)&local_40); + uVar9 = 1; + if ((*param_2 & 7) == 5) { + uVar9 = *(undefined4 *)(*(long *)(param_2 + 4) + 0x28); + } + cvReadRawDataSlice(param_1,(String *)&local_40,uVar9,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0037c8f8 (2080 bytes) name=FUN_0037c8f8 + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +long FUN_0037c8f8(undefined8 param_1,undefined8 param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char cVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined1 uVar10; + bool bVar11; + int iVar12; + uint uVar13; + uint *puVar14; + uint *puVar15; + undefined8 *puVar16; + size_t sVar17; + char *pcVar18; + long lVar19; + char *pcVar20; + void *__dest; + uint uVar21; + int iVar22; + ulong uVar23; + ulong uVar24; + char *__s; + uint uVar25; + int iVar26; + int iVar27; + int iVar28; + int iVar29; + char *local_290; + char *local_288; + undefined8 local_280 [15]; + int aiStack_208 [2]; + undefined8 local_200; + uint *local_1f8 [63]; + + puVar14 = (uint *)cvGetFileNodeByName(param_1,param_2,"sizes"); + puVar15 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + if (puVar15 == (uint *)0x0) { + uVar23 = 1; + __s = (char *)0x0; +LAB_0037d020: + local_200 = (uint *)0x0; + local_1f8[0] = (uint *)0x0; + pcVar18 = (char *)cv::String::allocate((String *)&local_200,0x2e); + uVar6 = s_Some_of_essential_matrix_attribu_00471500._44_2_; + uVar5 = s_Some_of_essential_matrix_attribu_00471500._40_4_; + uVar9 = s_Some_of_essential_matrix_attribu_00471500._24_8_; + uVar8 = s_Some_of_essential_matrix_attribu_00471500._16_8_; + uVar4 = s_Some_of_essential_matrix_attribu_00471500._8_8_; + uVar3 = s_Some_of_essential_matrix_attribu_00471500._0_8_; + *(undefined8 *)(pcVar18 + 0x20) = s_Some_of_essential_matrix_attribu_00471500._32_8_; + *(undefined4 *)(pcVar18 + 0x28) = uVar5; + *(undefined2 *)(pcVar18 + 0x2c) = uVar6; + *(undefined8 *)pcVar18 = uVar3; + *(undefined8 *)(pcVar18 + 8) = uVar4; + *(undefined8 *)(pcVar18 + 0x10) = uVar8; + *(undefined8 *)(pcVar18 + 0x18) = uVar9; + cv::error(-2,(String *)&local_200,"void* icvReadMatND(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xe38); + cv::String::deallocate((String *)&local_200); + } + else { + if ((*puVar15 & 7) != 3) { + __s = (char *)0x0; + uVar23 = 1; + goto LAB_0037d020; + } + __s = *(char **)(puVar15 + 6); + uVar25 = (uint)(__s == (char *)0x0 || puVar14 == (uint *)0x0); + uVar23 = (ulong)uVar25; + if (uVar25 != 0) { + uVar23 = (ulong)(__s == (char *)0x0); + goto LAB_0037d020; + } + } + if ((*puVar14 & 7) == 5) { + iVar12 = *(int *)(*(long *)(puVar14 + 4) + 0x28); + if (0x1f < iVar12 - 1U) goto LAB_0037c9a4; + } + else if ((*puVar14 & 7) == 1) { + iVar12 = 1; + } + else { + iVar12 = -1; +LAB_0037c9a4: + local_200 = (uint *)0x0; + local_1f8[0] = (uint *)0x0; + puVar16 = (undefined8 *)cv::String::allocate((String *)&local_200,0x2d); + uVar10 = DAT_0047155c; + uVar5 = DAT_00471558; + uVar9 = DAT_00471548; + uVar8 = DAT_00471540; + uVar4 = _LAB_00471538; + uVar3 = _LAB_00471530; + puVar16[4] = DAT_00471550; + *(undefined4 *)(puVar16 + 5) = uVar5; + *(undefined1 *)((long)puVar16 + 0x2c) = uVar10; + *puVar16 = uVar3; + puVar16[1] = uVar4; + puVar16[2] = uVar8; + puVar16[3] = uVar9; + cv::error(-0xd4,(String *)&local_200,"void* icvReadMatND(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xe3e); + cv::String::deallocate((String *)&local_200); + } + cvReadRawData(param_1,puVar14,local_280,&DAT_00470fa8); + if (__s == (char *)0x0) { +LAB_0037cae0: + local_290 = (char *)0x0; + local_288 = (char *)0x0; + pcVar18 = (char *)cv::String::allocate((String *)&local_290,0x21); + uVar9 = s_Too_complex_format_for_the_matri_00470df8._24_8_; + uVar8 = s_Too_complex_format_for_the_matri_00470df8._16_8_; + uVar4 = s_Too_complex_format_for_the_matri_00470df8._8_8_; + uVar3 = s_Too_complex_format_for_the_matri_00470df8._0_8_; + pcVar18[0x20] = s_Too_complex_format_for_the_matri_00470df8[0x20]; + *(undefined8 *)pcVar18 = uVar3; + *(undefined8 *)(pcVar18 + 8) = uVar4; + *(undefined8 *)(pcVar18 + 0x10) = uVar8; + *(undefined8 *)(pcVar18 + 0x18) = uVar9; + cv::error(-2,(String *)&local_290,"int icvDecodeSimpleFormat(const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc0d); + cv::String::deallocate((String *)&local_290); + } + else { + sVar17 = strlen(__s); + iVar1 = (int)sVar17; + if (((iVar1 == 0) || ((int)uVar23 != 0)) || + (local_200 = (uint *)((ulong)local_200 & 0xffffffff00000000), uVar24 = uVar23, iVar1 < 1)) + goto LAB_0037cae0; + do { + iVar22 = (int)uVar23; + uVar25 = (int)__s[iVar22] - 0x30; + iVar26 = (int)uVar24; + if ((uVar25 & 0xff) < 10) { + if ((byte)((__s + iVar22)[1] - 0x30U) < 10) { + local_290 = (char *)0x0; + lVar19 = strtol(__s + iVar22,&local_290,10); + uVar25 = (uint)lVar19; + iVar22 = ((int)local_290 - (int)__s) + -1; + } + if ((int)uVar25 < 1) { + local_290 = (char *)0x0; + local_288 = (char *)0x0; + pcVar18 = (char *)cv::String::allocate((String *)&local_290,0x1f); + cVar7 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar6 = s_Invalid_data_type_specification_00470850._28_2_; + uVar5 = s_Invalid_data_type_specification_00470850._24_4_; + uVar4 = s_Invalid_data_type_specification_00470850._8_8_; + uVar3 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar18 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar18 + 0x18) = uVar5; + *(undefined2 *)(pcVar18 + 0x1c) = uVar6; + pcVar18[0x1e] = cVar7; + *(undefined8 *)pcVar18 = uVar3; + *(undefined8 *)(pcVar18 + 8) = uVar4; + cv::error(-5,(String *)&local_290,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd0); + cv::String::deallocate((String *)&local_290); + } + *(uint *)((long)local_1f8 + (long)iVar26 * 4 + -8) = uVar25; + } + else { + pcVar18 = strchr("ucwsifdr",(int)__s[iVar22]); + if (pcVar18 == (char *)0x0) { + local_290 = pcVar18; + local_288 = pcVar18; + pcVar20 = (char *)cv::String::allocate((String *)&local_290,0x1f); + cVar7 = s_Invalid_data_type_specification_00470850[0x1e]; + uVar6 = s_Invalid_data_type_specification_00470850._28_2_; + uVar5 = s_Invalid_data_type_specification_00470850._24_4_; + uVar4 = s_Invalid_data_type_specification_00470850._8_8_; + uVar3 = s_Invalid_data_type_specification_00470850._0_8_; + *(undefined8 *)(pcVar20 + 0x10) = s_Invalid_data_type_specification_00470850._16_8_; + *(undefined4 *)(pcVar20 + 0x18) = uVar5; + *(undefined2 *)(pcVar20 + 0x1c) = uVar6; + pcVar20[0x1e] = cVar7; + *(undefined8 *)pcVar20 = uVar3; + *(undefined8 *)(pcVar20 + 8) = uVar4; + cv::error(-5,(String *)&local_290,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbd8); + cv::String::deallocate((String *)&local_290); + } + uVar23 = -(uVar24 >> 0x1f) & 0xfffffffc00000000 | uVar24 << 2; + piVar2 = (int *)((long)local_1f8 + (uVar23 - 8)); + if (*(int *)((long)local_1f8 + (uVar23 - 8)) == 0) { + *(undefined4 *)((long)local_1f8 + (uVar23 - 8)) = 1; + } + iVar27 = (int)pcVar18 + -0x472f10; + *(int *)((long)local_1f8 + (uVar23 - 4)) = iVar27; + if (iVar26 == 0) { + uVar24 = 2; + *(undefined4 *)((long)local_1f8 + uVar23) = 0; + } + else if (iVar27 == *(int *)((long)aiStack_208 + uVar23 + 4)) { + *(int *)((long)aiStack_208 + uVar23) = *(int *)((long)aiStack_208 + uVar23) + *piVar2; + *piVar2 = 0; + } + else { + uVar25 = iVar26 + 2; + uVar24 = (ulong)uVar25; + if ((int)uVar25 < 0x100) { + lVar19 = (long)(int)uVar25 * 4; + } + else { + local_290 = (char *)0x0; + local_288 = (char *)0x0; + pcVar18 = (char *)cv::String::allocate((String *)&local_290,0x20); + uVar8 = s_Too_long_data_type_specification_00470870._24_8_; + uVar4 = s_Too_long_data_type_specification_00470870._16_8_; + uVar3 = s_Too_long_data_type_specification_00470870._8_8_; + *(undefined8 *)pcVar18 = s_Too_long_data_type_specification_00470870._0_8_; + *(undefined8 *)(pcVar18 + 8) = uVar3; + *(undefined8 *)(pcVar18 + 0x10) = uVar4; + *(undefined8 *)(pcVar18 + 0x18) = uVar8; + cv::error(-5,(String *)&local_290,"int icvDecodeFormat(const char*, int*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xbe2); + cv::String::deallocate((String *)&local_290); + lVar19 = (long)(int)uVar25 << 2; + } + *(undefined4 *)((long)local_1f8 + lVar19 + -8) = 0; + } + } + uVar23 = (ulong)(iVar22 + 1U); + } while ((int)(iVar22 + 1U) < iVar1); + if (((int)uVar24 >> 1 != 1) || (4 < (int)local_200)) goto LAB_0037cae0; + } + uVar25 = (local_200._4_4_ & 7) + ((int)local_200 + -1) * 8; + puVar14 = (uint *)cvGetFileNodeByName(param_1,param_2,"data"); + if (puVar14 == (uint *)0x0) { + local_200 = puVar14; + local_1f8[0] = puVar14; + pcVar18 = (char *)cv::String::allocate((String *)&local_200,0x2c); + uVar5 = s_The_matrix_data_is_not_found_in_f_00471560._40_4_; + uVar9 = s_The_matrix_data_is_not_found_in_f_00471560._24_8_; + uVar8 = s_The_matrix_data_is_not_found_in_f_00471560._16_8_; + uVar4 = s_The_matrix_data_is_not_found_in_f_00471560._8_8_; + uVar3 = s_The_matrix_data_is_not_found_in_f_00471560._0_8_; + *(undefined8 *)(pcVar18 + 0x20) = s_The_matrix_data_is_not_found_in_f_00471560._32_8_; + *(undefined4 *)(pcVar18 + 0x28) = uVar5; + *(undefined8 *)pcVar18 = uVar3; + *(undefined8 *)(pcVar18 + 8) = uVar4; + *(undefined8 *)(pcVar18 + 0x10) = uVar8; + *(undefined8 *)(pcVar18 + 0x18) = uVar9; + cv::error(-2,(String *)&local_200,"void* icvReadMatND(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xe45); + cv::String::deallocate((String *)&local_200); + } + uVar21 = (uVar25 >> 3 & 0x1ff) + 1; + if (0 < iVar12) { + iVar1 = (iVar12 - 4U >> 2) + 1; + iVar22 = iVar1 * 4; + if (iVar12 - 1U < 7) { + iVar22 = 0; + } + else { + if (iVar1 != 1) { + iVar26 = (int)local_280[0] * (int)local_280[2]; + iVar27 = (int)((ulong)local_280[0] >> 0x20) * (int)((ulong)local_280[2] >> 0x20); + local_280[0] = CONCAT44(iVar27,iVar26); + iVar28 = (int)local_280[1] * (int)local_280[3]; + iVar29 = (int)((ulong)local_280[1] >> 0x20) * (int)((ulong)local_280[3] >> 0x20); + local_280[1] = CONCAT44(iVar29,iVar28); + if (iVar1 != 2) { + iVar26 = iVar26 * (int)local_280[4]; + iVar27 = iVar27 * (int)((ulong)local_280[4] >> 0x20); + local_280[0] = CONCAT44(iVar27,iVar26); + iVar28 = iVar28 * (int)local_280[5]; + iVar29 = iVar29 * (int)((ulong)local_280[5] >> 0x20); + local_280[1] = CONCAT44(iVar29,iVar28); + if (iVar1 != 3) { + iVar26 = iVar26 * (int)local_280[6]; + iVar27 = iVar27 * (int)((ulong)local_280[6] >> 0x20); + local_280[0] = CONCAT44(iVar27,iVar26); + iVar28 = iVar28 * (int)local_280[7]; + iVar29 = iVar29 * (int)((ulong)local_280[7] >> 0x20); + local_280[1] = CONCAT44(iVar29,iVar28); + if (iVar1 != 4) { + iVar26 = iVar26 * (int)local_280[8]; + iVar27 = iVar27 * (int)((ulong)local_280[8] >> 0x20); + local_280[0] = CONCAT44(iVar27,iVar26); + iVar28 = iVar28 * (int)local_280[9]; + iVar29 = iVar29 * (int)((ulong)local_280[9] >> 0x20); + local_280[1] = CONCAT44(iVar29,iVar28); + if (iVar1 != 5) { + iVar26 = iVar26 * (int)local_280[10]; + iVar27 = iVar27 * (int)((ulong)local_280[10] >> 0x20); + local_280[0] = CONCAT44(iVar27,iVar26); + iVar28 = iVar28 * (int)local_280[0xb]; + iVar29 = iVar29 * (int)((ulong)local_280[0xb] >> 0x20); + local_280[1] = CONCAT44(iVar29,iVar28); + if (iVar1 != 6) { + iVar26 = iVar26 * (int)local_280[0xc]; + iVar27 = iVar27 * (int)((ulong)local_280[0xc] >> 0x20); + local_280[0] = CONCAT44(iVar27,iVar26); + iVar28 = iVar28 * (int)local_280[0xd]; + iVar29 = iVar29 * (int)((ulong)local_280[0xd] >> 0x20); + local_280[1] = CONCAT44(iVar29,iVar28); + if (iVar1 != 7) { + local_280[0] = CONCAT44(iVar27 * (int)((ulong)local_280[0xe] >> 0x20), + iVar26 * (int)local_280[0xe]); + local_280[1] = CONCAT44(iVar29 * aiStack_208[1],iVar28 * aiStack_208[0]); + } + } + } + } + } + } + } + uVar21 = uVar21 * (int)((ulong)local_280[1] >> 0x20) * + (int)local_280[1] * (int)((ulong)local_280[0] >> 0x20) * (int)local_280[0]; + if (iVar12 == iVar22) goto LAB_0037cce8; + } + uVar21 = uVar21 * *(int *)((long)local_280 + (long)iVar22 * 4); + if (iVar22 + 1 < iVar12) { + uVar21 = uVar21 * *(int *)((long)local_280 + (long)(iVar22 + 1) * 4); + if (iVar22 + 2 < iVar12) { + uVar21 = uVar21 * *(int *)((long)local_280 + (long)(iVar22 + 2) * 4); + if (iVar22 + 3 < iVar12) { + uVar21 = uVar21 * *(int *)((long)local_280 + (long)(iVar22 + 3) * 4); + if (iVar22 + 4 < iVar12) { + uVar21 = uVar21 * *(int *)((long)local_280 + (long)(iVar22 + 4) * 4); + if (iVar22 + 5 < iVar12) { + uVar21 = uVar21 * *(int *)((long)local_280 + (long)(iVar22 + 5) * 4); + if (iVar22 + 6 < iVar12) { + uVar21 = uVar21 * *(int *)((long)local_280 + (long)(iVar22 + 6) * 4); + } + } + } + } + } + } + } +LAB_0037cce8: + if ((*puVar14 & 7) < 5) { + bVar11 = (*puVar14 & 7) != 0; + uVar13 = (uint)bVar11; + } + else { + uVar13 = *(uint *)(*(long *)(puVar14 + 4) + 0x28); + bVar11 = 0 < (int)uVar13; + } + if (uVar21 == uVar13) { + if (bVar11) goto LAB_0037cfc0; + } + else if (bVar11) { + local_200 = (uint *)0x0; + local_1f8[0] = (uint *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_200,0x3f); + memcpy(__dest,"The matrix size does not match to the number of stored elements",0x3f); + cv::error(-0xd1,(String *)&local_200,"void* icvReadMatND(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xe50); + cv::String::deallocate((String *)&local_200); +LAB_0037cfc0: + lVar19 = cvCreateMatND(iVar12,local_280,uVar25); + cvReadRawData(param_1,puVar14,*(undefined8 *)(lVar19 + 0x18),__s); + return lVar19; + } + lVar19 = cvCreateMatNDHeader(iVar12,local_280,uVar25); + return lVar19; +} + + +================================================================== + +### FUNC 0037d1b8 (896 bytes) name=FUN_0037d1b8 + +long FUN_0037d1b8(undefined8 param_1,undefined8 param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + uint uVar7; + uint uVar8; + uint *puVar9; + ulong uVar10; + void *__dest; + long lVar11; + char *pcVar12; + int iVar13; + ulong uVar14; + long lVar15; + uint *local_10; + uint *local_8; + + puVar9 = (uint *)cvGetFileNodeByName(param_1,param_2,"rows"); + if (puVar9 == (uint *)0x0) { + uVar14 = 0xffffffff; + } + else if ((*puVar9 & 7) == 1) { + uVar14 = (ulong)puVar9[4]; + } + else { + uVar14 = 0x7fffffff; + if ((*puVar9 & 7) == 2) { + uVar14 = lrint(*(double *)(puVar9 + 4)); + uVar14 = uVar14 & 0xffffffff; + } + } + puVar9 = (uint *)cvGetFileNodeByName(param_1,param_2,"cols"); + iVar13 = (int)uVar14; + if (puVar9 == (uint *)0x0) { + uVar8 = 0xffffffff; + puVar9 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + lVar15 = 0; + if (puVar9 != (uint *)0x0) { + uVar8 = 0xffffffff; + if ((*puVar9 & 7) != 3) goto LAB_0037d488; + lVar15 = *(long *)(puVar9 + 6); + uVar8 = 0xffffffff; + } + } + else { + if ((*puVar9 & 7) == 1) { + uVar8 = puVar9[4]; + } + else { + uVar8 = 0x7fffffff; + if ((*puVar9 & 7) == 2) { + lVar15 = lrint(*(double *)(puVar9 + 4)); + uVar8 = (uint)lVar15; + } + } + puVar9 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + if ((puVar9 == (uint *)0x0) || ((*puVar9 & 7) != 3)) { +LAB_0037d488: + lVar15 = 0; + } + else { + lVar15 = *(long *)(puVar9 + 6); + if ((lVar15 != 0 && -1 < iVar13) && (-1 < (int)uVar8)) goto LAB_0037d274; + } + } + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x2e); + uVar6 = s_Some_of_essential_matrix_attribu_00471500._44_2_; + uVar5 = s_Some_of_essential_matrix_attribu_00471500._40_4_; + uVar4 = s_Some_of_essential_matrix_attribu_00471500._24_8_; + uVar3 = s_Some_of_essential_matrix_attribu_00471500._16_8_; + uVar2 = s_Some_of_essential_matrix_attribu_00471500._8_8_; + uVar1 = s_Some_of_essential_matrix_attribu_00471500._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_Some_of_essential_matrix_attribu_00471500._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar5; + *(undefined2 *)(pcVar12 + 0x2c) = uVar6; + *(undefined8 *)pcVar12 = uVar1; + *(undefined8 *)(pcVar12 + 8) = uVar2; + *(undefined8 *)(pcVar12 + 0x10) = uVar3; + *(undefined8 *)(pcVar12 + 0x18) = uVar4; + cv::error(-2,(String *)&local_10,"void* icvReadMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xde3); + cv::String::deallocate((String *)&local_10); +LAB_0037d274: + uVar10 = FUN_00375e84(lVar15); + uVar10 = uVar10 & 0xffffffff; + puVar9 = (uint *)cvGetFileNodeByName(param_1,param_2,"data"); + if (puVar9 == (uint *)0x0) { + local_10 = puVar9; + local_8 = puVar9; + pcVar12 = (char *)cv::String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_matrix_data_is_not_found_in_f_00471560._40_4_; + uVar4 = s_The_matrix_data_is_not_found_in_f_00471560._24_8_; + uVar3 = s_The_matrix_data_is_not_found_in_f_00471560._16_8_; + uVar2 = s_The_matrix_data_is_not_found_in_f_00471560._8_8_; + uVar1 = s_The_matrix_data_is_not_found_in_f_00471560._0_8_; + *(undefined8 *)(pcVar12 + 0x20) = s_The_matrix_data_is_not_found_in_f_00471560._32_8_; + *(undefined4 *)(pcVar12 + 0x28) = uVar5; + *(undefined8 *)pcVar12 = uVar1; + *(undefined8 *)(pcVar12 + 8) = uVar2; + *(undefined8 *)(pcVar12 + 0x10) = uVar3; + *(undefined8 *)(pcVar12 + 0x18) = uVar4; + cv::error(-2,(String *)&local_10,"void* icvReadMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xde9); + cv::String::deallocate((String *)&local_10); + } + if ((*puVar9 & 7) < 5) { + uVar7 = (uint)((*puVar9 & 7) != 0); + } + else { + uVar7 = *(uint *)(*(long *)(puVar9 + 4) + 0x28); + } + if (0 < (int)uVar7) { + if (iVar13 * uVar8 + ((uint)(uVar10 >> 3) & 0x1ff) * iVar13 * uVar8 != uVar7) { + local_10 = (uint *)0x0; + local_8 = (uint *)0x0; + __dest = (void *)cv::String::allocate((String *)&local_10,0x3f); + memcpy(__dest,"The matrix size does not match to the number of stored elements",0x3f); + cv::error(-0xd1,(String *)&local_10,"void* icvReadMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xdee); + cv::String::deallocate((String *)&local_10); + } + lVar11 = cvCreateMat(uVar14,uVar8,uVar10); + cvReadRawData(param_1,puVar9,*(undefined8 *)(lVar11 + 0x18),lVar15); + return lVar11; + } + if (uVar8 != 0 || iVar13 != 0) { + lVar15 = cvCreateMatHeader(uVar14,uVar8,uVar10); + return lVar15; + } + lVar15 = cvCreateMatHeader(0,1,uVar10); + return lVar15; +} + + +================================================================== + +### FUNC 0037d574 (1552 bytes) name=FUN_0037d574 + +undefined8 FUN_0037d574(undefined8 param_1,undefined8 param_2) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + undefined8 uVar7; + char cVar8; + int iVar9; + int iVar10; + uint *puVar11; + uint *puVar12; + long lVar13; + char *pcVar14; + undefined8 uVar15; + undefined8 uVar16; + int iVar17; + int iVar18; + uint uVar19; + long lVar20; + undefined8 local_2050; + undefined8 local_2048; + undefined8 local_2040; + undefined8 local_2038; + uint *local_2028; + uint *local_2018; + undefined1 auStack_2000 [4096]; + uint local_1000 [1024]; + + puVar11 = (uint *)cvGetFileNodeByName(param_1,param_2,"sizes"); + puVar12 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + if (puVar12 == (uint *)0x0) { + lVar13 = 0; +LAB_0037dacc: + local_1000[0] = 0; + local_1000[1] = 0; + local_1000[2] = 0; + local_1000[3] = 0; + pcVar14 = (char *)cv::String::allocate((String *)local_1000,0x2e); + uVar6 = s_Some_of_essential_matrix_attribu_00471500._44_2_; + uVar5 = s_Some_of_essential_matrix_attribu_00471500._40_4_; + uVar4 = s_Some_of_essential_matrix_attribu_00471500._24_8_; + uVar3 = s_Some_of_essential_matrix_attribu_00471500._16_8_; + uVar16 = s_Some_of_essential_matrix_attribu_00471500._8_8_; + uVar15 = s_Some_of_essential_matrix_attribu_00471500._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s_Some_of_essential_matrix_attribu_00471500._32_8_; + *(undefined4 *)(pcVar14 + 0x28) = uVar5; + *(undefined2 *)(pcVar14 + 0x2c) = uVar6; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar16; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + cv::error(-2,(String *)local_1000,"void* icvReadSparseMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xed1); + cv::String::deallocate((String *)local_1000); + uVar19 = *puVar11 & 7; + if (uVar19 != 5) goto LAB_0037d618; +LAB_0037db58: + iVar9 = *(int *)(*(long *)(puVar11 + 4) + 0x28); + if (iVar9 - 1U < 0x400) goto LAB_0037d688; + } + else { + if ((*puVar12 & 7) != 3) { + lVar13 = 0; + goto LAB_0037dacc; + } + lVar13 = *(long *)(puVar12 + 6); + if ((puVar11 == (uint *)0x0) || (lVar13 == 0)) goto LAB_0037dacc; + uVar19 = *puVar11 & 7; + if (uVar19 == 5) goto LAB_0037db58; +LAB_0037d618: + if (uVar19 == 1) { + iVar9 = 1; + goto LAB_0037d688; + } + iVar9 = -1; + } + local_1000[0] = 0; + local_1000[1] = 0; + local_1000[2] = 0; + local_1000[3] = 0; + pcVar14 = (char *)cv::String::allocate((String *)local_1000,0x30); + uVar7 = s_Could_not_determine_sparse_matri_00471590._40_8_; + uVar4 = s_Could_not_determine_sparse_matri_00471590._32_8_; + uVar3 = s_Could_not_determine_sparse_matri_00471590._24_8_; + uVar16 = s_Could_not_determine_sparse_matri_00471590._16_8_; + uVar15 = s_Could_not_determine_sparse_matri_00471590._8_8_; + *(undefined8 *)pcVar14 = s_Could_not_determine_sparse_matri_00471590._0_8_; + *(undefined8 *)(pcVar14 + 8) = uVar15; + *(undefined8 *)(pcVar14 + 0x10) = uVar16; + *(undefined8 *)(pcVar14 + 0x18) = uVar3; + *(undefined8 *)(pcVar14 + 0x20) = uVar4; + *(undefined8 *)(pcVar14 + 0x28) = uVar7; + cv::error(-0xd4,(String *)local_1000,"void* icvReadSparseMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xed7); + cv::String::deallocate((String *)local_1000); +LAB_0037d688: + cvReadRawData(param_1,puVar11,auStack_2000,&DAT_00470fa8); + iVar10 = FUN_00371534(lVar13,(String *)local_1000); + if ((iVar10 != 1) || (4 < (int)local_1000[0])) { + local_2040 = 0; + local_2038 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_2040,0x21); + uVar4 = s_Too_complex_format_for_the_matri_00470df8._24_8_; + uVar3 = s_Too_complex_format_for_the_matri_00470df8._16_8_; + uVar16 = s_Too_complex_format_for_the_matri_00470df8._8_8_; + uVar15 = s_Too_complex_format_for_the_matri_00470df8._0_8_; + pcVar14[0x20] = s_Too_complex_format_for_the_matri_00470df8[0x20]; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar16; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + cv::error(-2,(String *)&local_2040,"int icvDecodeSimpleFormat(const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xc0d); + cv::String::deallocate((String *)&local_2040); + } + uVar19 = (local_1000[1] & 7) + (local_1000[0] + -1) * 8; + puVar11 = (uint *)cvGetFileNodeByName(param_1,param_2,"data"); + if ((puVar11 == (uint *)0x0) || ((*puVar11 & 7) != 5)) { + local_1000[0] = 0; + local_1000[1] = 0; + local_1000[2] = 0; + local_1000[3] = 0; + pcVar14 = (char *)cv::String::allocate((String *)local_1000,0x2c); + uVar5 = s_The_matrix_data_is_not_found_in_f_00471560._40_4_; + uVar4 = s_The_matrix_data_is_not_found_in_f_00471560._24_8_; + uVar3 = s_The_matrix_data_is_not_found_in_f_00471560._16_8_; + uVar16 = s_The_matrix_data_is_not_found_in_f_00471560._8_8_; + uVar15 = s_The_matrix_data_is_not_found_in_f_00471560._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s_The_matrix_data_is_not_found_in_f_00471560._32_8_; + *(undefined4 *)(pcVar14 + 0x28) = uVar5; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar16; + *(undefined8 *)(pcVar14 + 0x10) = uVar3; + *(undefined8 *)(pcVar14 + 0x18) = uVar4; + cv::error(-2,(String *)local_1000,"void* icvReadSparseMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xede); + cv::String::deallocate((String *)local_1000); + } + iVar17 = 0; + uVar15 = cvCreateSparseMat(iVar9,auStack_2000,uVar19); + lVar20 = *(long *)(puVar11 + 4); + iVar10 = (uVar19 >> 3 & 0x1ff) + 1; + cvStartReadRawData(param_1,puVar11,&local_2040); + if (0 < *(int *)(lVar20 + 0x28)) { + do { + puVar11 = local_2028; + if ((*local_2028 & 7) == 1) { + uVar19 = local_2028[4]; + if (0 < iVar17) goto LAB_0037d8b4; +LAB_0037d94c: + local_1000[0] = uVar19; + iVar18 = 1; + if (1 < iVar9) goto LAB_0037d9a4; +LAB_0037d960: + local_2028 = (uint *)((long)local_2028 + (long)*(int *)(lVar20 + 0x2c)); + if (local_2018 <= local_2028) { +LAB_0037d980: + cvChangeSeqBlock(&local_2040,1); + } + } + else { + local_2050 = 0; + local_2048 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_2050,0x1f); + uVar5 = s_Sparse_matrix_data_is_corrupted_004715c8._24_4_; + *(undefined8 *)(pcVar14 + 0x10) = s_Sparse_matrix_data_is_corrupted_004715c8._16_8_; + cVar8 = s_Sparse_matrix_data_is_corrupted_004715c8[0x1e]; + uVar6 = s_Sparse_matrix_data_is_corrupted_004715c8._28_2_; + uVar3 = s_Sparse_matrix_data_is_corrupted_004715c8._8_8_; + uVar16 = s_Sparse_matrix_data_is_corrupted_004715c8._0_8_; + *(undefined4 *)(pcVar14 + 0x18) = uVar5; + *(undefined2 *)(pcVar14 + 0x1c) = uVar6; + pcVar14[0x1e] = cVar8; + *(undefined8 *)pcVar14 = uVar16; + *(undefined8 *)(pcVar14 + 8) = uVar3; + cv::error(-0xd4,(String *)&local_2050,"void* icvReadSparseMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xeed); + cv::String::deallocate((String *)&local_2050); + uVar19 = puVar11[4]; + if (iVar17 < 1) goto LAB_0037d94c; +LAB_0037d8b4: + if ((int)uVar19 < 0) { + iVar18 = iVar9 + uVar19 + -1; + if (iVar9 <= iVar18) goto LAB_0037d960; +LAB_0037d9a4: + iVar2 = (iVar17 + iVar9) - iVar18; + iVar18 = iVar18 - iVar17; + do { + iVar1 = iVar18 + iVar17; + local_2028 = (uint *)((long)local_2028 + (long)*(int *)(lVar20 + 0x2c)); + if (local_2018 <= local_2028) { + cvChangeSeqBlock(&local_2040,1); + } + puVar11 = local_2028; + iVar17 = iVar17 + 1; + if (((*local_2028 & 7) != 1) || (uVar19 = local_2028[4], (int)uVar19 < 0)) { + local_2050 = 0; + local_2048 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_2050,0x1f); + uVar5 = s_Sparse_matrix_data_is_corrupted_004715c8._24_4_; + uVar3 = s_Sparse_matrix_data_is_corrupted_004715c8._8_8_; + uVar16 = s_Sparse_matrix_data_is_corrupted_004715c8._0_8_; + *(undefined8 *)(pcVar14 + 0x10) = s_Sparse_matrix_data_is_corrupted_004715c8._16_8_; + cVar8 = s_Sparse_matrix_data_is_corrupted_004715c8[0x1e]; + uVar6 = s_Sparse_matrix_data_is_corrupted_004715c8._28_2_; + *(undefined4 *)(pcVar14 + 0x18) = uVar5; + *(undefined2 *)(pcVar14 + 0x1c) = uVar6; + pcVar14[0x1e] = cVar8; + *(undefined8 *)pcVar14 = uVar16; + *(undefined8 *)(pcVar14 + 8) = uVar3; + cv::error(-0xd4,(String *)&local_2050, + "void* icvReadSparseMat(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xefd) + ; + cv::String::deallocate((String *)&local_2050); + uVar19 = puVar11[4]; + } + *(uint *)((String *)local_1000 + (long)iVar1 * 4) = uVar19; + } while (iVar17 != iVar2); + } + else { + *(uint *)((String *)local_1000 + (long)(iVar9 + -1) * 4) = uVar19; + iVar2 = iVar17; + } + iVar17 = iVar2; + local_2028 = (uint *)((long)local_2028 + (long)*(int *)(lVar20 + 0x2c)); + if (local_2018 <= local_2028) goto LAB_0037d980; + } + uVar16 = cvPtrND(uVar15,(String *)local_1000,0,1,0); + iVar17 = iVar17 + 1 + iVar10; + cvReadRawDataSlice(param_1,&local_2040,iVar10,uVar16,lVar13); + } while (iVar17 < *(int *)(lVar20 + 0x28)); + } + return uVar15; +} + + +================================================================== + +### FUNC 0037dbfc (5136 bytes) name=FUN_0037dbfc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +long FUN_0037dbfc(long param_1,undefined8 param_2) + +{ + String *pSVar1; + uint uVar2; + uint uVar3; + char cVar4; + uint uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined1 uVar13; + bool bVar14; + int iVar15; + int iVar16; + uint uVar17; + int iVar18; + uint *puVar19; + long lVar20; + long lVar21; + long lVar22; + long *__s; + void *pvVar23; + char *pcVar24; + undefined8 *puVar25; + String *pSVar26; + char *pcVar27; + uint *puVar28; + uint uVar29; + ulong uVar30; + int iVar31; + undefined4 uVar32; + int iVar33; + undefined8 uVar34; + int iVar36; + undefined8 uVar37; + uint uVar39; + String *local_4f0; + long local_4d8; + int local_4c8; + uint local_4c4; + long local_4c0; + ulong local_4b8; + long local_4b0; + uint local_4a8; + uint local_49c; + char *local_490; + long local_488; + long local_480; + undefined8 local_478; + int local_400 [4]; + int iStack_3f0; + uint local_3ec; + undefined4 uStack_3e8; + int local_3e0; + undefined4 uStack_3d8; + int iStack_3d0; + undefined4 uStack_3c8; + int local_3c0; + undefined4 uStack_3b8; + int iStack_3b0; + undefined4 uStack_3a8; + int local_3a0; + undefined4 uStack_398; + int iStack_390; + undefined4 uStack_388; + int local_380; + undefined4 uStack_378; + int iStack_370; + undefined4 uStack_368; + int local_360; + undefined4 uStack_358; + int iStack_350; + undefined4 uStack_348; + int local_340; + undefined4 uStack_338; + int iStack_330; + undefined4 uStack_328; + int local_320; + undefined4 uStack_318; + int iStack_310; + undefined4 uStack_308; + int local_300; + undefined4 uStack_2f8; + int iStack_2f0; + undefined4 uStack_2e8; + int local_2e0; + undefined4 uStack_2d8; + int iStack_2d0; + undefined4 uStack_2c8; + int local_2c0; + undefined4 uStack_2b8; + int iStack_2b0; + undefined4 uStack_2a8; + int local_2a0; + undefined4 uStack_298; + int iStack_290; + undefined4 uStack_288; + int local_280; + undefined4 uStack_278; + int iStack_270; + undefined4 uStack_268; + int local_260; + undefined4 uStack_258; + int iStack_250; + undefined4 uStack_248; + int local_240; + undefined4 uStack_238; + int iStack_230; + undefined4 uStack_228; + undefined8 local_200; + undefined8 local_1f8; + int iVar35; + int iVar38; + + local_490 = (char *)0x0; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"flags"); + if (puVar19 == (uint *)0x0) { + pcVar27 = (char *)0x0; +LAB_0037dc68: + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"vertex_dt"); + if (puVar19 != (uint *)0x0) goto LAB_0037dc80; +LAB_0037eee4: + local_4d8 = 0; +LAB_0037dc94: + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,&LAB_004711a8); + if (puVar19 != (uint *)0x0) goto LAB_0037dcac; +LAB_0037eec0: + local_4b0 = 0; +LAB_0037dcc4: + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"vertex_count"); + if (puVar19 != (uint *)0x0) goto LAB_0037dcdc; +LAB_0037ee78: + uVar30 = 0xffffffff; + bVar14 = true; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"edge_count"); + if (puVar19 != (uint *)0x0) goto LAB_0037dd24; + local_49c = 0xffffffff; +LAB_0037e9ec: + local_200 = 0; + local_1f8 = 0; + pcVar24 = (char *)cv::String::allocate((String *)&local_200,0x2d); + cVar4 = s_Some_of_essential_graph_attribut_004715e8[0x2c]; + uVar32 = s_Some_of_essential_graph_attribut_004715e8._40_4_; + uVar7 = s_Some_of_essential_graph_attribut_004715e8._24_8_; + uVar6 = s_Some_of_essential_graph_attribut_004715e8._16_8_; + uVar37 = s_Some_of_essential_graph_attribut_004715e8._8_8_; + uVar34 = s_Some_of_essential_graph_attribut_004715e8._0_8_; + *(undefined8 *)(pcVar24 + 0x20) = s_Some_of_essential_graph_attribut_004715e8._32_8_; + *(undefined4 *)(pcVar24 + 0x28) = uVar32; + pcVar24[0x2c] = cVar4; + *(undefined8 *)pcVar24 = uVar34; + *(undefined8 *)(pcVar24 + 8) = uVar37; + *(undefined8 *)(pcVar24 + 0x10) = uVar6; + *(undefined8 *)(pcVar24 + 0x18) = uVar7; + cv::error(-2,(String *)&local_200,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11ed); + cv::String::deallocate((String *)&local_200); + iVar15 = isxdigit((int)*pcVar27); + if (iVar15 != 0) goto LAB_0037dd70; +LAB_0037ea74: + pcVar27 = strstr(pcVar27,"oriented"); + if (pcVar27 != (char *)0x0) goto LAB_0037ea88; +LAB_0037de14: + uVar32 = 0x42981000; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"header_dt"); + if (puVar19 == (uint *)0x0) goto LAB_0037de3c; +LAB_0037eab0: + if ((*puVar19 & 7) != 3) goto LAB_0037de3c; + lVar20 = *(long *)(puVar19 + 6); + lVar21 = cvGetFileNodeByName(param_1,param_2,"header_user_data"); + if ((lVar20 != 0) != (lVar21 != 0)) goto LAB_0037eaf4; +LAB_0037eb70: + local_4f0 = (String *)&local_200; + if (lVar20 == 0) goto LAB_0037de64; + iVar15 = FUN_00371534(lVar20,local_4f0); + if (iVar15 * 2 < 1) goto LAB_0037de64; + iVar31 = 0x78; + puVar19 = (uint *)((long)&local_200 + 4); + do { + puVar28 = puVar19 + 2; + iVar16 = (*puVar19 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((*puVar19 & 7) << 1)) & 3); + iVar31 = ((iVar16 + iVar31) - 1U & -iVar16) + iVar16 * puVar19[-1]; + puVar19 = puVar28; + } while (puVar28 != (uint *)((long)local_4f0 + (ulong)(iVar15 * 2 - 1U >> 1) * 8 + 0xc)); + if (local_4d8 == 0) goto LAB_0037ebf4; +LAB_0037de68: + local_4f0 = (String *)&local_200; + iVar15 = FUN_00371534(local_4d8,local_4f0); + if (iVar15 * 2 < 1) { + iVar16 = 0; + } + else { + iVar16 = 0; + puVar19 = (uint *)((long)&local_200 + 4); + do { + puVar28 = puVar19 + 2; + iVar18 = (*puVar19 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*puVar19 & 7) << 1)) & 3); + iVar16 = ((iVar18 + iVar16) - 1U & -iVar18) + iVar18 * puVar19[-1]; + puVar19 = puVar28; + } while (puVar28 != (uint *)((long)local_4f0 + (ulong)(iVar15 * 2 - 1U >> 1) * 8 + 0xc)); + } + iVar15 = (local_200._4_4_ >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((local_200._4_4_ & 7) << 1)) & 3); + uVar17 = (iVar16 + iVar15) - 1U & -iVar15; + iVar16 = FUN_00371534(local_4d8,local_4f0); + if (iVar16 * 2 < 1) { + iVar15 = 0x10; + } + else { + iVar15 = 0x10; + puVar19 = (uint *)((long)&local_200 + 4); + do { + puVar28 = puVar19 + 2; + iVar18 = (*puVar19 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*puVar19 & 7) << 1)) & 3); + iVar15 = ((iVar18 + iVar15) - 1U & -iVar18) + iVar18 * puVar19[-1]; + puVar19 = puVar28; + } while (puVar28 != (uint *)((long)local_4f0 + (ulong)(iVar16 * 2 - 1U >> 1) * 8 + 0xc)); + } + iVar16 = FUN_00371534(local_4b0,local_400); + iVar16 = iVar16 * 2; + if (iVar16 < 1) { + local_4c4 = 0; + } + else { + uVar5 = iVar16 - 1U >> 1; + iVar18 = (uVar5 - 4 >> 2) + 1; + if (iVar16 - 1U < 8) { + iVar35 = 0; + local_4c4 = 0; + } + else { + uVar37 = CONCAT17((char)((uint)uStack_3e8 >> 0x18), + CONCAT16((char)((uint)uStack_3e8 >> 0x10), + CONCAT15((char)((uint)uStack_3e8 >> 8), + CONCAT14((char)uStack_3e8,iStack_3f0)))); + uVar34 = CONCAT17((char)((uint)local_400[2] >> 0x18), + CONCAT16((char)((uint)local_400[2] >> 0x10), + CONCAT15((char)((uint)local_400[2] >> 8), + CONCAT14((char)local_400[2],local_400[0])))); + if (iVar18 != 1) { + iVar35 = (int)((ulong)uVar34 >> 0x20) + + (int)(CONCAT17((char)((uint)uStack_3d8 >> 0x18), + CONCAT16((char)((uint)uStack_3d8 >> 0x10), + CONCAT15((char)((uint)uStack_3d8 >> 8), + CONCAT14((char)uStack_3d8,local_3e0)))) >> 0x20) + ; + uVar34 = CONCAT44(iVar35,local_400[0] + local_3e0); + iVar38 = (int)((ulong)uVar37 >> 0x20) + + (int)(CONCAT17((char)((uint)uStack_3c8 >> 0x18), + CONCAT16((char)((uint)uStack_3c8 >> 0x10), + CONCAT15((char)((uint)uStack_3c8 >> 8), + CONCAT14((char)uStack_3c8,iStack_3d0)))) >> 0x20 + ); + uVar37 = CONCAT44(iVar38,iStack_3f0 + iStack_3d0); + if (iVar18 != 2) { + iVar33 = local_400[0] + local_3e0 + local_3c0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_3b8 >> 0x18), + CONCAT16((char)((uint)uStack_3b8 >> 0x10), + CONCAT15((char)((uint)uStack_3b8 >> 8), + CONCAT14((char)uStack_3b8,local_3c0)) + )) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iStack_3f0 + iStack_3d0 + iStack_3b0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_3a8 >> 0x18), + CONCAT16((char)((uint)uStack_3a8 >> 0x10), + CONCAT15((char)((uint)uStack_3a8 >> 8), + CONCAT14((char)uStack_3a8,iStack_3b0) + ))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 3) { + iVar33 = iVar33 + local_3a0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_398 >> 0x18), + CONCAT16((char)((uint)uStack_398 >> 0x10), + CONCAT15((char)((uint)uStack_398 >> 8), + CONCAT14((char)uStack_398,local_3a0 + )))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_390; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_388 >> 0x18), + CONCAT16((char)((uint)uStack_388 >> 0x10), + CONCAT15((char)((uint)uStack_388 >> 8), + CONCAT14((char)uStack_388, + iStack_390)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 4) { + iVar33 = iVar33 + local_380; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_378 >> 0x18), + CONCAT16((char)((uint)uStack_378 >> 0x10), + CONCAT15((char)((uint)uStack_378 >> 8), + CONCAT14((char)uStack_378, + local_380)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_370; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_368 >> 0x18), + CONCAT16((char)((uint)uStack_368 >> 0x10), + CONCAT15((char)((uint)uStack_368 >> 8), + CONCAT14((char)uStack_368, + iStack_370)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 5) { + iVar33 = iVar33 + local_360; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_358 >> 0x18), + CONCAT16((char)((uint)uStack_358 >> 0x10), + CONCAT15((char)((uint)uStack_358 >> 8), + CONCAT14((char)uStack_358, + local_360)))) >> 0x20) + ; + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_350; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_348 >> 0x18), + CONCAT16((char)((uint)uStack_348 >> 0x10), + CONCAT15((char)((uint)uStack_348 >> 8), + CONCAT14((char)uStack_348, + iStack_350)))) >> 0x20 + ); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 6) { + iVar33 = iVar33 + local_340; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_338 >> 0x18), + CONCAT16((char)((uint)uStack_338 >> 0x10), + CONCAT15((char)((uint)uStack_338 >> 8) + ,CONCAT14((char)uStack_338, + local_340)))) >> + 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_330; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_328 >> 0x18), + CONCAT16((char)((uint)uStack_328 >> 0x10), + CONCAT15((char)((uint)uStack_328 >> 8) + ,CONCAT14((char)uStack_328, + iStack_330)))) >> + 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 7) { + iVar33 = iVar33 + local_320; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_318 >> 0x18), + CONCAT16((char)((uint)uStack_318 >> 0x10), + CONCAT15((char)((uint)uStack_318 >> + 8),CONCAT14((char) + uStack_318,local_320)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_310; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_308 >> 0x18), + CONCAT16((char)((uint)uStack_308 >> 0x10), + CONCAT15((char)((uint)uStack_308 >> + 8),CONCAT14((char) + uStack_308,iStack_310)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 8) { + iVar33 = iVar33 + local_300; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_2f8 >> 0x18), + CONCAT16((char)((uint)uStack_2f8 >> 0x10), + CONCAT15((char)((uint)uStack_2f8 + >> 8), + CONCAT14((char)uStack_2f8 + ,local_300)))) + >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_2f0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_2e8 >> 0x18), + CONCAT16((char)((uint)uStack_2e8 >> 0x10), + CONCAT15((char)((uint)uStack_2e8 + >> 8), + CONCAT14((char)uStack_2e8 + ,iStack_2f0)))) + >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 9) { + iVar33 = iVar33 + local_2e0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_2d8 >> 0x18), + CONCAT16((char)((uint)uStack_2d8 >> 0x10) + ,CONCAT15((char)((uint) + uStack_2d8 >> 8), + CONCAT14((char)uStack_2d8,local_2e0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_2d0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_2c8 >> 0x18), + CONCAT16((char)((uint)uStack_2c8 >> 0x10) + ,CONCAT15((char)((uint) + uStack_2c8 >> 8), + CONCAT14((char)uStack_2c8,iStack_2d0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 10) { + iVar33 = iVar33 + local_2c0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_2b8 >> 0x18), + CONCAT16((char)((uint)uStack_2b8 >> + 0x10), + CONCAT15((char)((uint) + uStack_2b8 >> 8), + CONCAT14((char)uStack_2b8,local_2c0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_2b0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_2a8 >> 0x18), + CONCAT16((char)((uint)uStack_2a8 >> + 0x10), + CONCAT15((char)((uint) + uStack_2a8 >> 8), + CONCAT14((char)uStack_2a8,iStack_2b0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xb) { + iVar33 = iVar33 + local_2a0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_298 >> 0x18), + CONCAT16((char)((uint)uStack_298 >> + 0x10), + CONCAT15((char)((uint) + uStack_298 >> 8), + CONCAT14((char)uStack_298,local_2a0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_290; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_288 >> 0x18), + CONCAT16((char)((uint)uStack_288 >> + 0x10), + CONCAT15((char)((uint) + uStack_288 >> 8), + CONCAT14((char)uStack_288,iStack_290)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xc) { + iVar33 = iVar33 + local_280; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_278 >> 0x18), + CONCAT16((char)((uint)uStack_278 >> + 0x10), + CONCAT15((char)((uint) + uStack_278 >> 8), + CONCAT14((char)uStack_278,local_280)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_270; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_268 >> 0x18), + CONCAT16((char)((uint)uStack_268 >> + 0x10), + CONCAT15((char)((uint) + uStack_268 >> 8), + CONCAT14((char)uStack_268,iStack_270)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xd) { + iVar33 = iVar33 + local_260; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_258 >> 0x18), + CONCAT16((char)((uint)uStack_258 + >> 0x10), + CONCAT15((char)((uint) + uStack_258 >> 8), + CONCAT14((char)uStack_258,local_260)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_250; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_248 >> 0x18), + CONCAT16((char)((uint)uStack_248 + >> 0x10), + CONCAT15((char)((uint) + uStack_248 >> 8), + CONCAT14((char)uStack_248,iStack_250)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xe) { + uVar34 = CONCAT44(iVar35 + (int)(CONCAT17((char)((uint) + uStack_238 >> 0x18), + CONCAT16((char)((uint)uStack_238 >> 0x10), + CONCAT15((char)((uint)uStack_238 >> 8), + CONCAT14((char)uStack_238, + local_240)))) >> 0x20), + iVar33 + local_240); + uVar37 = CONCAT44(iVar38 + (int)(CONCAT17((char)((uint) + uStack_228 >> 0x18), + CONCAT16((char)((uint)uStack_228 >> 0x10), + CONCAT15((char)((uint)uStack_228 >> 8), + CONCAT14((char)uStack_228, + iStack_230)))) >> 0x20) + ,iVar36 + iStack_230); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + local_4c4 = (int)uVar34 + (int)((ulong)uVar34 >> 0x20) + + (int)uVar37 + (int)((ulong)uVar37 >> 0x20); + iVar35 = iVar18 * 8; + if (iVar18 * 4 == uVar5 + 1) goto LAB_0037e234; + } + local_4c4 = local_4c4 + local_400[iVar35]; + if (iVar35 + 2 < iVar16) { + local_4c4 = local_4c4 + local_400[iVar35 + 2]; + if (iVar35 + 4 < iVar16) { + local_4c4 = local_4c4 + local_400[iVar35 + 4]; + if (iVar35 + 6 < iVar16) { + local_4c4 = local_4c4 + local_400[iVar35 + 6]; + if (iVar35 + 8 < iVar16) { + local_4c4 = local_4c4 + local_400[iVar35 + 8]; + if (iVar35 + 10 < iVar16) { + local_4c4 = local_4c4 + local_400[iVar35 + 10]; + if (iVar35 + 0xc < iVar16) { + local_4c4 = local_4c4 + local_400[iVar35 + 0xc]; + } + } + } + } + } + } + } + } + else { + if ((*puVar19 & 7) == 3) { + pcVar27 = *(char **)(puVar19 + 6); + goto LAB_0037dc68; + } + pcVar27 = (char *)0x0; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"vertex_dt"); + if (puVar19 == (uint *)0x0) goto LAB_0037eee4; +LAB_0037dc80: + if ((*puVar19 & 7) == 3) { + local_4d8 = *(long *)(puVar19 + 6); + goto LAB_0037dc94; + } + local_4d8 = 0; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,&LAB_004711a8); + if (puVar19 == (uint *)0x0) goto LAB_0037eec0; +LAB_0037dcac: + if ((*puVar19 & 7) == 3) { + local_4b0 = *(long *)(puVar19 + 6); + goto LAB_0037dcc4; + } + local_4b0 = 0; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"vertex_count"); + if (puVar19 == (uint *)0x0) goto LAB_0037ee78; +LAB_0037dcdc: + if ((*puVar19 & 7) == 1) { + uVar17 = puVar19[4]; + bVar14 = uVar17 == 0xffffffff; + } + else if ((*puVar19 & 7) == 2) { + lVar20 = lrint(*(double *)(puVar19 + 4)); + uVar17 = (uint)lVar20; + bVar14 = uVar17 == 0xffffffff; + } + else { + bVar14 = false; + uVar17 = 0x7fffffff; + } + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"edge_count"); + if (puVar19 == (uint *)0x0) { + uVar30 = (ulong)uVar17; + local_49c = 0xffffffff; + goto LAB_0037e9ec; + } + uVar30 = (ulong)uVar17; + bVar14 = (bool)(bVar14 | pcVar27 == (char *)0x0); +LAB_0037dd24: + if ((*puVar19 & 7) == 1) { + local_49c = puVar19[4]; + } + else { + local_49c = 0x7fffffff; + if ((*puVar19 & 7) == 2) { + lVar20 = lrint(*(double *)(puVar19 + 4)); + local_49c = (uint)lVar20; + } + } + if (((bVar14) || (local_49c == 0xffffffff)) || (local_4b0 == 0)) goto LAB_0037e9ec; + iVar15 = isxdigit((int)*pcVar27); + if (iVar15 == 0) goto LAB_0037ea74; +LAB_0037dd70: + local_4f0 = (String *)&local_200; + lVar20 = strtol(pcVar27,&local_490,0x10); + if ((local_490 == pcVar27) || (((uint)lVar20 & 0xffff0000) != 0x42980000)) { + local_200 = 0; + local_1f8 = 0; + pcVar27 = (char *)cv::String::allocate(local_4f0,0x1e); + uVar8 = s_The_sequence_flags_are_invalid_00471618._28_2_; + uVar32 = s_The_sequence_flags_are_invalid_00471618._24_4_; + uVar37 = s_The_sequence_flags_are_invalid_00471618._8_8_; + uVar34 = s_The_sequence_flags_are_invalid_00471618._0_8_; + *(undefined8 *)(pcVar27 + 0x10) = s_The_sequence_flags_are_invalid_00471618._16_8_; + *(undefined4 *)(pcVar27 + 0x18) = uVar32; + *(undefined2 *)(pcVar27 + 0x1c) = uVar8; + *(undefined8 *)pcVar27 = uVar34; + *(undefined8 *)(pcVar27 + 8) = uVar37; + cv::error(-2,local_4f0,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11fa); + cv::String::deallocate(local_4f0); + } + if (((uint)lVar20 >> 0xc & 1) == 0) goto LAB_0037de14; +LAB_0037ea88: + uVar32 = 0x42985000; + puVar19 = (uint *)cvGetFileNodeByName(param_1,param_2,"header_dt"); + if (puVar19 != (uint *)0x0) goto LAB_0037eab0; +LAB_0037de3c: + lVar20 = 0; + lVar21 = cvGetFileNodeByName(param_1,param_2,"header_user_data"); + if (lVar21 != 0) { +LAB_0037eaf4: + local_4f0 = (String *)&local_200; + local_200 = 0; + local_1f8 = 0; + pcVar27 = (char *)cv::String::allocate(local_4f0,0x4a); + uVar8 = s_One_of__header_dt__and__header_u_00471638._72_2_; + uVar12 = s_One_of__header_dt__and__header_u_00471638._56_8_; + uVar11 = s_One_of__header_dt__and__header_u_00471638._48_8_; + uVar10 = s_One_of__header_dt__and__header_u_00471638._40_8_; + uVar9 = s_One_of__header_dt__and__header_u_00471638._32_8_; + uVar7 = s_One_of__header_dt__and__header_u_00471638._24_8_; + uVar6 = s_One_of__header_dt__and__header_u_00471638._16_8_; + uVar37 = s_One_of__header_dt__and__header_u_00471638._8_8_; + uVar34 = s_One_of__header_dt__and__header_u_00471638._0_8_; + *(undefined8 *)(pcVar27 + 0x40) = s_One_of__header_dt__and__header_u_00471638._64_8_; + *(undefined2 *)(pcVar27 + 0x48) = uVar8; + *(undefined8 *)pcVar27 = uVar34; + *(undefined8 *)(pcVar27 + 8) = uVar37; + *(undefined8 *)(pcVar27 + 0x10) = uVar6; + *(undefined8 *)(pcVar27 + 0x18) = uVar7; + *(undefined8 *)(pcVar27 + 0x20) = uVar9; + *(undefined8 *)(pcVar27 + 0x28) = uVar10; + *(undefined8 *)(pcVar27 + 0x30) = uVar11; + *(undefined8 *)(pcVar27 + 0x38) = uVar12; + cv::error(-2,local_4f0,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1209); + cv::String::deallocate(local_4f0); + goto LAB_0037eb70; + } + lVar20 = 0; +LAB_0037de64: + iVar31 = 0x78; + if (local_4d8 != 0) goto LAB_0037de68; +LAB_0037ebf4: + uVar17 = (uint)local_4d8; + iVar15 = 0x10; + local_4c4 = uVar17; + } +LAB_0037e234: + local_4f0 = (String *)&local_200; + iVar16 = FUN_00371534(local_4b0,local_400); + if (((iVar16 < 2) || (local_400[0] != 2)) || + ((local_400[1] != 4 || ((local_400[2] < 1 || (local_400[3] != 5)))))) { + local_200 = 0; + local_1f8 = 0; + pcVar27 = (char *)cv::String::allocate(local_4f0,0x34); + uVar10 = s_Graph_edges_should_start_with_2_i_00471688._40_8_; + uVar9 = s_Graph_edges_should_start_with_2_i_00471688._32_8_; + uVar7 = s_Graph_edges_should_start_with_2_i_00471688._24_8_; + uVar6 = s_Graph_edges_should_start_with_2_i_00471688._16_8_; + uVar37 = s_Graph_edges_should_start_with_2_i_00471688._8_8_; + uVar34 = s_Graph_edges_should_start_with_2_i_00471688._0_8_; + *(undefined4 *)(pcVar27 + 0x30) = s_Graph_edges_should_start_with_2_i_00471688._48_4_; + *(undefined8 *)pcVar27 = uVar34; + *(undefined8 *)(pcVar27 + 8) = uVar37; + *(undefined8 *)(pcVar27 + 0x10) = uVar6; + *(undefined8 *)(pcVar27 + 0x18) = uVar7; + *(undefined8 *)(pcVar27 + 0x20) = uVar9; + *(undefined8 *)(pcVar27 + 0x28) = uVar10; + cv::error(-5,local_4f0,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1223); + cv::String::deallocate(local_4f0); + } + if (iVar16 < 3) { + local_4b8 = 0xfffffffffffffffc; + local_4c0 = 3; + } + else { + iVar18 = (local_3ec >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((local_3ec & 7) << 1)) & 3); + local_4b8 = 0xfffffffffffffffc; + if (7 < iVar18) { + local_4b8 = 0xfffffffffffffff8; + } + local_4c0 = 3; + if (7 < iVar18) { + local_4c0 = 7; + } + } + iVar16 = iVar16 * 2; + if (iVar16 < 1) { + local_4a8 = 0; + } + else { + uVar5 = iVar16 - 1U >> 1; + iVar18 = (uVar5 - 4 >> 2) + 1; + if (iVar16 - 1U < 8) { + iVar35 = 0; + local_4a8 = 0; + } + else { + uVar37 = CONCAT17((char)((uint)uStack_3e8 >> 0x18), + CONCAT16((char)((uint)uStack_3e8 >> 0x10), + CONCAT15((char)((uint)uStack_3e8 >> 8), + CONCAT14((char)uStack_3e8,iStack_3f0)))); + uVar34 = CONCAT17((char)((uint)local_400[2] >> 0x18), + CONCAT16((char)((uint)local_400[2] >> 0x10), + CONCAT15((char)((uint)local_400[2] >> 8), + CONCAT14((char)local_400[2],local_400[0])))); + if (iVar18 != 1) { + iVar35 = (int)((ulong)uVar34 >> 0x20) + + (int)(CONCAT17((char)((uint)uStack_3d8 >> 0x18), + CONCAT16((char)((uint)uStack_3d8 >> 0x10), + CONCAT15((char)((uint)uStack_3d8 >> 8), + CONCAT14((char)uStack_3d8,local_3e0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,local_400[0] + local_3e0); + iVar38 = (int)((ulong)uVar37 >> 0x20) + + (int)(CONCAT17((char)((uint)uStack_3c8 >> 0x18), + CONCAT16((char)((uint)uStack_3c8 >> 0x10), + CONCAT15((char)((uint)uStack_3c8 >> 8), + CONCAT14((char)uStack_3c8,iStack_3d0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iStack_3f0 + iStack_3d0); + if (iVar18 != 2) { + iVar33 = local_400[0] + local_3e0 + local_3c0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_3b8 >> 0x18), + CONCAT16((char)((uint)uStack_3b8 >> 0x10), + CONCAT15((char)((uint)uStack_3b8 >> 8), + CONCAT14((char)uStack_3b8,local_3c0)))) + >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iStack_3f0 + iStack_3d0 + iStack_3b0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_3a8 >> 0x18), + CONCAT16((char)((uint)uStack_3a8 >> 0x10), + CONCAT15((char)((uint)uStack_3a8 >> 8), + CONCAT14((char)uStack_3a8,iStack_3b0))) + ) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 3) { + iVar33 = iVar33 + local_3a0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_398 >> 0x18), + CONCAT16((char)((uint)uStack_398 >> 0x10), + CONCAT15((char)((uint)uStack_398 >> 8), + CONCAT14((char)uStack_398,local_3a0)) + )) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_390; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_388 >> 0x18), + CONCAT16((char)((uint)uStack_388 >> 0x10), + CONCAT15((char)((uint)uStack_388 >> 8), + CONCAT14((char)uStack_388,iStack_390) + ))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 4) { + iVar33 = iVar33 + local_380; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_378 >> 0x18), + CONCAT16((char)((uint)uStack_378 >> 0x10), + CONCAT15((char)((uint)uStack_378 >> 8), + CONCAT14((char)uStack_378,local_380 + )))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_370; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_368 >> 0x18), + CONCAT16((char)((uint)uStack_368 >> 0x10), + CONCAT15((char)((uint)uStack_368 >> 8), + CONCAT14((char)uStack_368, + iStack_370)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 5) { + iVar33 = iVar33 + local_360; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_358 >> 0x18), + CONCAT16((char)((uint)uStack_358 >> 0x10), + CONCAT15((char)((uint)uStack_358 >> 8), + CONCAT14((char)uStack_358, + local_360)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_350; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_348 >> 0x18), + CONCAT16((char)((uint)uStack_348 >> 0x10), + CONCAT15((char)((uint)uStack_348 >> 8), + CONCAT14((char)uStack_348, + iStack_350)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 6) { + iVar33 = iVar33 + local_340; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_338 >> 0x18), + CONCAT16((char)((uint)uStack_338 >> 0x10), + CONCAT15((char)((uint)uStack_338 >> 8), + CONCAT14((char)uStack_338, + local_340)))) >> 0x20) + ; + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_330; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_328 >> 0x18), + CONCAT16((char)((uint)uStack_328 >> 0x10), + CONCAT15((char)((uint)uStack_328 >> 8), + CONCAT14((char)uStack_328, + iStack_330)))) >> 0x20 + ); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 7) { + iVar33 = iVar33 + local_320; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_318 >> 0x18), + CONCAT16((char)((uint)uStack_318 >> 0x10), + CONCAT15((char)((uint)uStack_318 >> 8) + ,CONCAT14((char)uStack_318, + local_320)))) >> + 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_310; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_308 >> 0x18), + CONCAT16((char)((uint)uStack_308 >> 0x10), + CONCAT15((char)((uint)uStack_308 >> 8) + ,CONCAT14((char)uStack_308, + iStack_310)))) >> + 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 8) { + iVar33 = iVar33 + local_300; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_2f8 >> 0x18), + CONCAT16((char)((uint)uStack_2f8 >> 0x10), + CONCAT15((char)((uint)uStack_2f8 >> + 8),CONCAT14((char) + uStack_2f8,local_300)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_2f0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_2e8 >> 0x18), + CONCAT16((char)((uint)uStack_2e8 >> 0x10), + CONCAT15((char)((uint)uStack_2e8 >> + 8),CONCAT14((char) + uStack_2e8,iStack_2f0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 9) { + iVar33 = iVar33 + local_2e0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_2d8 >> 0x18), + CONCAT16((char)((uint)uStack_2d8 >> 0x10), + CONCAT15((char)((uint)uStack_2d8 + >> 8), + CONCAT14((char)uStack_2d8 + ,local_2e0)))) + >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_2d0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_2c8 >> 0x18), + CONCAT16((char)((uint)uStack_2c8 >> 0x10), + CONCAT15((char)((uint)uStack_2c8 + >> 8), + CONCAT14((char)uStack_2c8 + ,iStack_2d0)))) + >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 10) { + iVar33 = iVar33 + local_2c0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_2b8 >> 0x18), + CONCAT16((char)((uint)uStack_2b8 >> 0x10) + ,CONCAT15((char)((uint) + uStack_2b8 >> 8), + CONCAT14((char)uStack_2b8,local_2c0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_2b0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_2a8 >> 0x18), + CONCAT16((char)((uint)uStack_2a8 >> 0x10) + ,CONCAT15((char)((uint) + uStack_2a8 >> 8), + CONCAT14((char)uStack_2a8,iStack_2b0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xb) { + iVar33 = iVar33 + local_2a0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_298 >> 0x18), + CONCAT16((char)((uint)uStack_298 >> + 0x10), + CONCAT15((char)((uint) + uStack_298 >> 8), + CONCAT14((char)uStack_298,local_2a0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_290; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_288 >> 0x18), + CONCAT16((char)((uint)uStack_288 >> + 0x10), + CONCAT15((char)((uint) + uStack_288 >> 8), + CONCAT14((char)uStack_288,iStack_290)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xc) { + iVar33 = iVar33 + local_280; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_278 >> 0x18), + CONCAT16((char)((uint)uStack_278 >> + 0x10), + CONCAT15((char)((uint) + uStack_278 >> 8), + CONCAT14((char)uStack_278,local_280)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_270; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_268 >> 0x18), + CONCAT16((char)((uint)uStack_268 >> + 0x10), + CONCAT15((char)((uint) + uStack_268 >> 8), + CONCAT14((char)uStack_268,iStack_270)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xd) { + iVar33 = iVar33 + local_260; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_258 >> 0x18), + CONCAT16((char)((uint)uStack_258 >> + 0x10), + CONCAT15((char)((uint) + uStack_258 >> 8), + CONCAT14((char)uStack_258,local_260)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_250; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_248 >> 0x18), + CONCAT16((char)((uint)uStack_248 >> + 0x10), + CONCAT15((char)((uint) + uStack_248 >> 8), + CONCAT14((char)uStack_248,iStack_250)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar18 != 0xe) { + uVar34 = CONCAT44(iVar35 + (int)(CONCAT17((char)((uint)uStack_238 + >> 0x18), + CONCAT16((char)((uint) + uStack_238 >> 0x10), + CONCAT15((char)((uint)uStack_238 >> 8), + CONCAT14((char)uStack_238,local_240)))) + >> 0x20),iVar33 + local_240); + uVar37 = CONCAT44(iVar38 + (int)(CONCAT17((char)((uint)uStack_228 + >> 0x18), + CONCAT16((char)((uint) + uStack_228 >> 0x10), + CONCAT15((char)((uint)uStack_228 >> 8), + CONCAT14((char)uStack_228,iStack_230)))) + >> 0x20),iVar36 + iStack_230); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + local_4a8 = (int)uVar34 + (int)((ulong)uVar34 >> 0x20) + + (int)uVar37 + (int)((ulong)uVar37 >> 0x20); + iVar35 = iVar18 * 8; + if (iVar18 * 4 == uVar5 + 1) goto LAB_0037e5ec; + } + local_4a8 = local_4a8 + local_400[iVar35]; + if (iVar35 + 2 < iVar16) { + local_4a8 = local_4a8 + local_400[iVar35 + 2]; + if (iVar35 + 4 < iVar16) { + local_4a8 = local_4a8 + local_400[iVar35 + 4]; + if (iVar35 + 6 < iVar16) { + local_4a8 = local_4a8 + local_400[iVar35 + 6]; + if (iVar35 + 8 < iVar16) { + local_4a8 = local_4a8 + local_400[iVar35 + 8]; + if (iVar35 + 10 < iVar16) { + local_4a8 = local_4a8 + local_400[iVar35 + 10]; + if (iVar35 + 0xc < iVar16) { + local_4a8 = local_4a8 + local_400[iVar35 + 0xc]; + } + } + } + } + } + } + } +LAB_0037e5ec: + cVar4 = *(char *)(local_4b0 + 2); + if ((cVar4 == 'f') || ((cVar4 == '1' && (*(char *)(local_4b0 + 3) == 'f')))) { + __s = (long *)(local_4b0 + (ulong)((byte)(cVar4 - 0x30U) < 10) + 3); + } + else { + __s = &local_480; + lVar22 = strtol((char *)(local_4b0 + 2),&local_490,10); + sprintf((char *)__s,"%df%s",(ulong)((int)lVar22 - 1),local_490); + } + iVar16 = FUN_00371534(__s,local_4f0); + if (iVar16 * 2 < 1) { + iVar18 = 0x28; + } + else { + iVar18 = 0x28; + pSVar26 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar26 + 8; + iVar35 = (*(uint *)pSVar26 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar26 & 7) << 1)) & 3); + iVar18 = ((iVar35 + iVar18) - 1U & -iVar35) + iVar35 * *(uint *)(pSVar26 + -4); + pSVar26 = pSVar1; + } while (pSVar1 != local_4f0 + (ulong)(iVar16 * 2 - 1U >> 1) * 8 + 0xc); + } + iVar16 = FUN_00371534(local_4b0,local_4f0); + if (iVar16 * 2 < 1) { + iVar35 = 0; + } + else { + iVar35 = 0; + pSVar26 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar26 + 8; + iVar38 = (*(uint *)pSVar26 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar26 & 7) << 1)) & 3); + iVar35 = ((iVar38 + iVar35) - 1U & -iVar38) + iVar38 * *(uint *)(pSVar26 + -4); + pSVar26 = pSVar1; + } while (pSVar1 != local_4f0 + (ulong)(iVar16 * 2 - 1U >> 1) * 8 + 0xc); + } + iVar16 = (local_200._4_4_ >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((local_200._4_4_ & 7) << 1)) & 3); + uVar5 = (iVar35 + iVar16) - 1U & -iVar16; + lVar22 = cvCreateGraph(uVar32,iVar31,iVar15,iVar18,*(undefined8 *)(param_1 + 0x18)); + if (lVar21 != 0) { + cvReadRawData(param_1,lVar21,lVar22 + 0x78,lVar20); + } + iVar31 = uVar17 * 3; + if (iVar31 < 0x10000) { + iVar31 = 0x10000; + } + if (iVar31 < (int)(uVar5 * 3)) { + iVar31 = uVar5 * 3; + } + puVar19 = (uint *)cv::cvAlloc((long)iVar31); + uVar39 = (uint)uVar30; + pvVar23 = (void *)cv::cvAlloc(-(uVar30 >> 0x1f) & 0xfffffff800000000 | uVar30 << 3); + lVar20 = cvGetFileNodeByName(param_1,param_2,&DAT_004710a8); + lVar21 = cvGetFileNodeByName(param_1,param_2,"edges"); + if (lVar21 == 0) { + local_200 = 0; + local_1f8 = 0; + pcVar27 = (char *)cv::String::allocate(local_4f0,0xd); + cVar4 = s_No_edges_data_004716c8[0xc]; + uVar32 = s_No_edges_data_004716c8._8_4_; + *(undefined8 *)pcVar27 = s_No_edges_data_004716c8._0_8_; + *(undefined4 *)(pcVar27 + 8) = uVar32; + pcVar27[0xc] = cVar4; + cv::error(-5,local_4f0,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1247); + cv::String::deallocate(local_4f0); + } + if ((lVar20 == 0) && (local_4d8 != 0)) { + local_200 = 0; + local_1f8 = 0; + pcVar27 = (char *)cv::String::allocate(local_4f0,0x10); + uVar34 = s_No_vertices_data_004716d8._8_8_; + *(undefined8 *)pcVar27 = s_No_vertices_data_004716d8._0_8_; + *(undefined8 *)(pcVar27 + 8) = uVar34; + cv::error(-5,local_4f0,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1249); + cv::String::deallocate(local_4f0); + } + uVar29 = uVar17; + if ((int)uVar17 < 1) { + uVar29 = 1; + } + bVar14 = false; + local_4c8 = 0; + if (uVar29 != 0) { + local_4c8 = iVar31 / (int)uVar29; + } + uVar29 = uVar39; + if (local_4d8 == 0) goto LAB_0037e8a4; + do { + cvStartReadRawData(param_1,lVar20,local_4f0); + uVar29 = (uint)uVar30; +LAB_0037e8a4: + if (0 < (int)uVar29) { + lVar20 = 0; + iVar16 = 0; + puVar28 = puVar19; + do { + if ((iVar16 == 0) && (local_4d8 != 0)) { + iVar35 = uVar29 - (int)lVar20; + iVar16 = local_4c8; + if (iVar35 < local_4c8) { + iVar16 = iVar35; + } + iVar16 = local_4c4 * iVar16; + cvReadRawDataSlice(param_1,local_4f0,iVar16,puVar19,local_4d8); + puVar28 = puVar19; + } + if (bVar14) { + uVar2 = puVar28[1]; + uVar3 = *puVar28; + local_488 = 0; + if ((uVar2 < uVar39) && (uVar3 < uVar39)) { + iVar35 = cvGraphAddEdgeByPtr(lVar22,*(undefined8 *) + ((long)pvVar23 + (long)(int)uVar3 * 8), + *(undefined8 *)((long)pvVar23 + (long)(int)uVar2 * 8),0, + &local_488); + if (iVar35 != 0) goto LAB_0037e968; +LAB_0037ec9c: + local_480 = 0; + local_478 = 0; + puVar25 = (undefined8 *)cv::String::allocate((String *)&local_480,0x1b); + uVar8 = DAT_00471738; + puVar25[2] = DAT_00471730; + uVar13 = DAT_0047173a; + uVar37 = DAT_00471728; + uVar34 = _LAB_00471720; + *(undefined2 *)(puVar25 + 3) = uVar8; + *(undefined1 *)((long)puVar25 + 0x1a) = uVar13; + *puVar25 = uVar34; + puVar25[1] = uVar37; + cv::error(-5,(String *)&local_480,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x127c); + cv::String::deallocate((String *)&local_480); + *(uint *)(local_488 + 4) = puVar28[2]; + } + else { + local_480 = 0; + local_478 = 0; + puVar25 = (undefined8 *)cv::String::allocate((String *)&local_480,0x2e); + uVar8 = _LAB_0047171c; + uVar32 = _LAB_00471718; + uVar7 = DAT_00471708; + uVar6 = DAT_00471700; + uVar37 = DAT_004716f8; + uVar34 = DAT_004716f0; + puVar25[4] = DAT_00471710; + *(undefined4 *)(puVar25 + 5) = uVar32; + *(undefined2 *)((long)puVar25 + 0x2c) = uVar8; + *puVar25 = uVar34; + puVar25[1] = uVar37; + puVar25[2] = uVar6; + puVar25[3] = uVar7; + cv::error(-0xd3,(String *)&local_480,"void* icvReadGraph(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1276); + cv::String::deallocate((String *)&local_480); + iVar35 = cvGraphAddEdgeByPtr(lVar22,*(undefined8 *) + ((long)pvVar23 + (long)(int)uVar3 * 8), + *(undefined8 *)((long)pvVar23 + (long)(int)uVar2 * 8),0, + &local_488); + if (iVar35 == 0) goto LAB_0037ec9c; +LAB_0037e968: + *(uint *)(local_488 + 4) = puVar28[2]; + } + if (0x28 < iVar15) { + memcpy((void *)(local_488 + 0x28),(void *)((long)puVar28 + local_4c0 + 0xc & local_4b8), + (long)iVar15 - 0x28); + } + } + else { + cvGraphAddVtx(lVar22,0,&local_480); + *(long *)((long)pvVar23 + lVar20 * 8) = local_480; + if (local_4d8 != 0) { + memcpy((void *)(local_480 + 0x10),puVar28,(long)(int)uVar17); + } + } + lVar20 = lVar20 + 1; + iVar16 = iVar16 + -1; + puVar28 = (uint *)((long)puVar28 + (long)(int)uVar17); + } while ((int)lVar20 < (int)uVar29); + } + if (bVar14) { + cv::cvFree_(puVar19); + cv::cvFree_(pvVar23); + return lVar22; + } + uVar30 = (ulong)local_49c; + bVar14 = true; + uVar29 = uVar5; + if ((int)uVar5 < 1) { + uVar29 = 1; + } + local_4c4 = local_4a8; + local_4d8 = local_4b0; + local_4c8 = 0; + lVar20 = lVar21; + uVar17 = uVar5; + iVar15 = iVar18; + if (uVar29 != 0) { + local_4c8 = iVar31 / (int)uVar29; + } + } while( true ); +} + + +================================================================== + +### FUNC 0037f0ac (3568 bytes) name=FUN_0037f0ac + +long FUN_0037f0ac(long param_1,undefined8 param_2) + +{ + String *pSVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined2 uVar5; + char cVar6; + undefined4 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + bool bVar12; + bool bVar13; + bool bVar14; + bool bVar15; + int iVar16; + uint uVar17; + uint uVar18; + uint uVar19; + uint *puVar20; + char *pcVar21; + long lVar22; + long lVar23; + long lVar24; + ulong uVar25; + String *pSVar26; + long lVar27; + uint uVar28; + char *pcVar29; + long lVar30; + long lVar31; + uint uVar32; + int iVar33; + int iVar35; + int iVar36; + undefined8 uVar37; + char *local_248; + uint *local_240; + uint *local_238; + undefined8 local_200; + undefined8 local_1f8; + int iStack_1f0; + undefined4 uStack_1e8; + int local_1e0; + undefined4 uStack_1d8; + int iStack_1d0; + undefined4 uStack_1c8; + int local_1c0; + undefined4 uStack_1b8; + int iStack_1b0; + undefined4 uStack_1a8; + int local_1a0; + undefined4 uStack_198; + int iStack_190; + undefined4 uStack_188; + int local_180; + undefined4 uStack_178; + int iStack_170; + undefined4 uStack_168; + int local_160; + undefined4 uStack_158; + int iStack_150; + undefined4 uStack_148; + int local_140; + undefined4 uStack_138; + int iStack_130; + undefined4 uStack_128; + int local_120; + undefined4 uStack_118; + int iStack_110; + undefined4 uStack_108; + int local_100; + undefined4 uStack_f8; + int iStack_f0; + undefined4 uStack_e8; + int local_e0; + undefined4 uStack_d8; + int iStack_d0; + undefined4 uStack_c8; + int local_c0; + undefined4 uStack_b8; + int iStack_b0; + undefined4 uStack_a8; + int local_a0; + undefined4 uStack_98; + int iStack_90; + undefined4 uStack_88; + int local_80; + undefined4 uStack_78; + int iStack_70; + undefined4 uStack_68; + int local_60; + undefined4 uStack_58; + int iStack_50; + undefined4 uStack_48; + int local_40; + undefined4 uStack_38; + int iStack_30; + undefined4 uStack_28; + undefined8 uVar34; + int iVar38; + + local_248 = (char *)0x0; + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"flags"); + if (puVar20 == (uint *)0x0) { + pcVar29 = (char *)0x0; +LAB_0037f108: + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"count"); + if (puVar20 != (uint *)0x0) goto LAB_0037f120; +LAB_0037fbf8: + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + lVar27 = 0; + if (puVar20 == (uint *)0x0) { +LAB_0037fc2c: + uVar18 = 0xffffffff; + goto LAB_0037f918; + } + uVar18 = 0xffffffff; + if ((*puVar20 & 7) == 3) { + lVar27 = *(long *)(puVar20 + 6); + goto LAB_0037fc2c; + } +LAB_0037f914: + lVar27 = 0; +LAB_0037f918: + local_200 = 0; + local_1f8 = 0; + pcVar21 = (char *)cv::String::allocate((String *)&local_200,0x30); + uVar8 = s_Some_of_essential_sequence_attri_00471740._40_8_; + uVar4 = s_Some_of_essential_sequence_attri_00471740._32_8_; + uVar3 = s_Some_of_essential_sequence_attri_00471740._24_8_; + uVar37 = s_Some_of_essential_sequence_attri_00471740._16_8_; + uVar34 = s_Some_of_essential_sequence_attri_00471740._8_8_; + *(undefined8 *)pcVar21 = s_Some_of_essential_sequence_attri_00471740._0_8_; + *(undefined8 *)(pcVar21 + 8) = uVar34; + *(undefined8 *)(pcVar21 + 0x10) = uVar37; + *(undefined8 *)(pcVar21 + 0x18) = uVar3; + *(undefined8 *)(pcVar21 + 0x20) = uVar4; + *(undefined8 *)(pcVar21 + 0x28) = uVar8; + cv::error(-2,(String *)&local_200,"void* icvReadSeq(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x107c); + cv::String::deallocate((String *)&local_200); + if (9 < (byte)(*pcVar29 - 0x30U)) goto LAB_0037f1a4; +LAB_0037f994: + uVar25 = strtol(pcVar29,&local_248,0x10); + uVar17 = (uint)uVar25; + if ((local_248 == pcVar29) || ((uVar17 & 0xffff0000) != 0x42990000)) { + local_200 = 0; + local_1f8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_200,0x1e); + uVar5 = s_The_sequence_flags_are_invalid_00471618._28_2_; + uVar7 = s_The_sequence_flags_are_invalid_00471618._24_4_; + uVar37 = s_The_sequence_flags_are_invalid_00471618._8_8_; + uVar34 = s_The_sequence_flags_are_invalid_00471618._0_8_; + *(undefined8 *)(pcVar29 + 0x10) = s_The_sequence_flags_are_invalid_00471618._16_8_; + *(undefined4 *)(pcVar29 + 0x18) = uVar7; + *(undefined2 *)(pcVar29 + 0x1c) = uVar5; + *(undefined8 *)pcVar29 = uVar34; + *(undefined8 *)(pcVar29 + 8) = uVar37; + cv::error(-2,(String *)&local_200,"void* icvReadSeq(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x108d); + cv::String::deallocate((String *)&local_200); + } + if ((uVar17 & 0xe00) == 0x200) { + uVar28 = 0x42995000; + uVar19 = 0x42991000; + } + else { + uVar19 = 0x42990000; + uVar28 = 0x42994000; + } + if ((uVar25 & 0x1000) != 0) { + uVar19 = uVar28; + } + uVar17 = uVar19 | uVar17 & 0x8000 | uVar17 & 0x1ff; + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"header_dt"); + if (puVar20 != (uint *)0x0) goto LAB_0037f238; +LAB_0037fa74: + lVar30 = 0; + bVar12 = false; + } + else { + if ((*puVar20 & 7) == 3) { + pcVar29 = *(char **)(puVar20 + 6); + goto LAB_0037f108; + } + pcVar29 = (char *)0x0; + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"count"); + if (puVar20 == (uint *)0x0) goto LAB_0037fbf8; +LAB_0037f120: + if ((*puVar20 & 7) == 1) { + uVar18 = puVar20[4]; + } + else { + uVar18 = 0x7fffffff; + if ((*puVar20 & 7) == 2) { + lVar27 = lrint(*(double *)(puVar20 + 4)); + uVar18 = (uint)lVar27; + } + } + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,&DAT_00470fb8); + if ((puVar20 == (uint *)0x0) || ((*puVar20 & 7) != 3)) goto LAB_0037f914; + lVar27 = *(long *)(puVar20 + 6); + if ((pcVar29 == (char *)0x0 || lVar27 == 0) || (uVar18 == 0xffffffff)) goto LAB_0037f918; + if ((byte)(*pcVar29 - 0x30U) < 10) goto LAB_0037f994; +LAB_0037f1a4: + pcVar21 = strstr(pcVar29,"curve"); + if (pcVar21 == (char *)0x0) { + uVar28 = 0x42998000; + uVar17 = 0x4299c000; + uVar19 = 0x42994000; + uVar32 = 0x42990000; + } + else { + uVar28 = 0x42999000; + uVar17 = 0x4299d000; + uVar19 = 0x42995000; + uVar32 = 0x42991000; + } + pcVar21 = strstr(pcVar29,"closed"); + if (pcVar21 == (char *)0x0) { + uVar19 = uVar32; + uVar17 = uVar28; + } + pcVar21 = strstr(pcVar29,"hole"); + if (pcVar21 == (char *)0x0) { + uVar17 = uVar19; + } + pcVar29 = strstr(pcVar29,"untyped"); + if (pcVar29 == (char *)0x0) { + uVar19 = FUN_00375e84(lVar27); + uVar17 = uVar17 | uVar19; + } + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"header_dt"); + if (puVar20 == (uint *)0x0) goto LAB_0037fa74; +LAB_0037f238: + if ((*puVar20 & 7) == 3) { + lVar30 = *(long *)(puVar20 + 6); + bVar12 = lVar30 != 0; + } + else { + bVar12 = false; + lVar30 = 0; + } + } + lVar22 = cvGetFileNodeByName(param_1,param_2,"header_user_data"); + bVar13 = lVar22 != 0; + if (bVar13 != bVar12) { + local_200 = 0; + local_1f8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_200,0x4a); + uVar5 = s_One_of__header_dt__and__header_u_00471638._72_2_; + uVar11 = s_One_of__header_dt__and__header_u_00471638._56_8_; + uVar10 = s_One_of__header_dt__and__header_u_00471638._48_8_; + uVar9 = s_One_of__header_dt__and__header_u_00471638._40_8_; + uVar8 = s_One_of__header_dt__and__header_u_00471638._32_8_; + uVar4 = s_One_of__header_dt__and__header_u_00471638._24_8_; + uVar3 = s_One_of__header_dt__and__header_u_00471638._16_8_; + uVar37 = s_One_of__header_dt__and__header_u_00471638._8_8_; + uVar34 = s_One_of__header_dt__and__header_u_00471638._0_8_; + *(undefined8 *)(pcVar29 + 0x40) = s_One_of__header_dt__and__header_u_00471638._64_8_; + *(undefined2 *)(pcVar29 + 0x48) = uVar5; + *(undefined8 *)pcVar29 = uVar34; + *(undefined8 *)(pcVar29 + 8) = uVar37; + *(undefined8 *)(pcVar29 + 0x10) = uVar3; + *(undefined8 *)(pcVar29 + 0x18) = uVar4; + *(undefined8 *)(pcVar29 + 0x20) = uVar8; + *(undefined8 *)(pcVar29 + 0x28) = uVar9; + *(undefined8 *)(pcVar29 + 0x30) = uVar10; + *(undefined8 *)(pcVar29 + 0x38) = uVar11; + cv::error(-2,(String *)&local_200,"void* icvReadSeq(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x10af); + cv::String::deallocate((String *)&local_200); + } + lVar23 = cvGetFileNodeByName(param_1,param_2,&DAT_00471200); + lVar24 = cvGetFileNodeByName(param_1,param_2,"origin"); + bVar14 = lVar23 != 0; + bVar15 = lVar24 != 0; + if (1 < (byte)(bVar13 + bVar14 + bVar15)) { + local_200 = 0; + local_1f8 = 0; + pcVar29 = (char *)cv::String::allocate((String *)&local_200,0x42); + uVar9 = s_Only_one_of__header_user_data_____00471798._40_8_; + uVar8 = s_Only_one_of__header_user_data_____00471798._32_8_; + uVar4 = s_Only_one_of__header_user_data_____00471798._24_8_; + uVar3 = s_Only_one_of__header_user_data_____00471798._16_8_; + uVar37 = s_Only_one_of__header_user_data_____00471798._8_8_; + uVar34 = s_Only_one_of__header_user_data_____00471798._0_8_; + *(undefined2 *)(pcVar29 + 0x40) = s_Only_one_of__header_user_data_____00471798._64_2_; + uVar11 = s_Only_one_of__header_user_data_____00471798._56_8_; + uVar10 = s_Only_one_of__header_user_data_____00471798._48_8_; + *(undefined8 *)pcVar29 = uVar34; + *(undefined8 *)(pcVar29 + 8) = uVar37; + *(undefined8 *)(pcVar29 + 0x10) = uVar3; + *(undefined8 *)(pcVar29 + 0x18) = uVar4; + *(undefined8 *)(pcVar29 + 0x20) = uVar8; + *(undefined8 *)(pcVar29 + 0x28) = uVar9; + *(undefined8 *)(pcVar29 + 0x30) = uVar10; + *(undefined8 *)(pcVar29 + 0x38) = uVar11; + cv::error(-2,(String *)&local_200,"void* icvReadSeq(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x10b5); + cv::String::deallocate((String *)&local_200); + } + if (bVar12 == false) { + lVar31 = 0x80; + if ((!bVar14) && (lVar31 = 0x60, bVar15)) { + lVar31 = 0x68; + } + } + else { + iVar16 = FUN_00371534(lVar30,(String *)&local_200); + if (iVar16 * 2 < 1) { + lVar31 = 0x60; + } + else { + iVar33 = 0x60; + pSVar26 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar26 + 8; + iVar2 = (*(uint *)pSVar26 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar26 & 7) << 1)) & 3); + iVar33 = ((iVar2 + iVar33) - 1U & -iVar2) + iVar2 * *(uint *)(pSVar26 + -4); + pSVar26 = pSVar1; + } while (pSVar1 != (String *)&local_200 + (ulong)(iVar16 * 2 - 1U >> 1) * 8 + 0xc); + lVar31 = (long)iVar33; + } + } + iVar16 = FUN_00371534(lVar27,(String *)&local_200); + if (iVar16 * 2 < 1) { + iVar33 = 0; + } + else { + iVar33 = 0; + pSVar26 = (String *)((long)&local_200 + 4); + do { + pSVar1 = pSVar26 + 8; + iVar2 = (*(uint *)pSVar26 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)pSVar26 & 7) << 1)) & 3); + iVar33 = ((iVar2 + iVar33) - 1U & -iVar2) + iVar2 * *(uint *)(pSVar26 + -4); + pSVar26 = pSVar1; + } while (pSVar1 != (String *)&local_200 + (ulong)(iVar16 * 2 - 1U >> 1) * 8 + 0xc); + } + iVar16 = (local_200._4_4_ >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> (ulong)((local_200._4_4_ & 7) << 1)) & 3); + lVar31 = cvCreateSeq(uVar17,lVar31,(long)(int)((iVar33 + iVar16) - 1U & -iVar16), + *(undefined8 *)(param_1 + 0x18)); + if (bVar13) { + cvReadRawData(param_1,lVar22,lVar31 + 0x60,lVar30); + } + else if (bVar14) { + puVar20 = (uint *)cvGetFileNodeByName(param_1,lVar23,"x"); + if (puVar20 == (uint *)0x0) { + uVar17 = 0; + } + else if ((*puVar20 & 7) == 1) { + uVar17 = puVar20[4]; + } + else { + uVar17 = 0x7fffffff; + if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + uVar17 = (uint)lVar30; + } + } + *(uint *)(lVar31 + 0x60) = uVar17; + puVar20 = (uint *)cvGetFileNodeByName(param_1,lVar23,&DAT_00452188); + if (puVar20 == (uint *)0x0) { + uVar17 = 0; + } + else if ((*puVar20 & 7) == 1) { + uVar17 = puVar20[4]; + } + else { + uVar17 = 0x7fffffff; + if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + uVar17 = (uint)lVar30; + } + } + *(uint *)(lVar31 + 100) = uVar17; + puVar20 = (uint *)cvGetFileNodeByName(param_1,lVar23,"width"); + if (puVar20 == (uint *)0x0) { + uVar17 = 0; + } + else if ((*puVar20 & 7) == 1) { + uVar17 = puVar20[4]; + } + else { + uVar17 = 0x7fffffff; + if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + uVar17 = (uint)lVar30; + } + } + *(uint *)(lVar31 + 0x68) = uVar17; + puVar20 = (uint *)cvGetFileNodeByName(param_1,lVar23,"height"); + if (puVar20 == (uint *)0x0) { + uVar17 = 0; + } + else if ((*puVar20 & 7) == 1) { + uVar17 = puVar20[4]; + } + else { + uVar17 = 0x7fffffff; + if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + uVar17 = (uint)lVar30; + } + } + *(uint *)(lVar31 + 0x6c) = uVar17; + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"color"); + if (puVar20 == (uint *)0x0) { + *(undefined4 *)(lVar31 + 0x70) = 0; + } + else if ((*puVar20 & 7) == 1) { + *(uint *)(lVar31 + 0x70) = puVar20[4]; + } + else if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + *(int *)(lVar31 + 0x70) = (int)lVar30; + } + else { + *(undefined4 *)(lVar31 + 0x70) = 0x7fffffff; + } + } + else if (bVar15) { + puVar20 = (uint *)cvGetFileNodeByName(param_1,lVar24,"x"); + if (puVar20 == (uint *)0x0) { + uVar17 = 0; + } + else if ((*puVar20 & 7) == 1) { + uVar17 = puVar20[4]; + } + else { + uVar17 = 0x7fffffff; + if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + uVar17 = (uint)lVar30; + } + } + *(uint *)(lVar31 + 0x60) = uVar17; + puVar20 = (uint *)cvGetFileNodeByName(param_1,lVar24,&DAT_00452188); + if (puVar20 == (uint *)0x0) { + *(undefined4 *)(lVar31 + 100) = 0; + } + else if ((*puVar20 & 7) == 1) { + *(uint *)(lVar31 + 100) = puVar20[4]; + } + else if ((*puVar20 & 7) == 2) { + lVar30 = lrint(*(double *)(puVar20 + 4)); + *(int *)(lVar31 + 100) = (int)lVar30; + } + else { + *(undefined4 *)(lVar31 + 100) = 0x7fffffff; + } + } + cvSeqPushMulti(lVar31,0,uVar18,0); + iVar16 = FUN_00371534(lVar27,(String *)&local_200); + iVar16 = iVar16 * 2; + if (iVar16 < 1) { + iVar33 = 0; + } + else { + uVar17 = iVar16 - 1U >> 1; + iVar2 = (uVar17 - 4 >> 2) + 1; + if (iVar16 - 1U < 8) { + iVar33 = 0; + iVar35 = 0; + } + else { + uVar37 = CONCAT17((char)((uint)uStack_1e8 >> 0x18), + CONCAT16((char)((uint)uStack_1e8 >> 0x10), + CONCAT15((char)((uint)uStack_1e8 >> 8), + CONCAT14((char)uStack_1e8,iStack_1f0)))); + uVar34 = CONCAT17((char)((ulong)local_1f8 >> 0x18), + CONCAT16((char)((ulong)local_1f8 >> 0x10), + CONCAT15((char)((ulong)local_1f8 >> 8), + CONCAT14((char)local_1f8,(int)local_200)))); + if (iVar2 != 1) { + iVar33 = (int)local_200 + local_1e0; + iVar35 = (int)((ulong)uVar34 >> 0x20) + + (int)(CONCAT17((char)((uint)uStack_1d8 >> 0x18), + CONCAT16((char)((uint)uStack_1d8 >> 0x10), + CONCAT15((char)((uint)uStack_1d8 >> 8), + CONCAT14((char)uStack_1d8,local_1e0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar38 = (int)((ulong)uVar37 >> 0x20) + + (int)(CONCAT17((char)((uint)uStack_1c8 >> 0x18), + CONCAT16((char)((uint)uStack_1c8 >> 0x10), + CONCAT15((char)((uint)uStack_1c8 >> 8), + CONCAT14((char)uStack_1c8,iStack_1d0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iStack_1f0 + iStack_1d0); + if (iVar2 != 2) { + iVar33 = iVar33 + local_1c0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_1b8 >> 0x18), + CONCAT16((char)((uint)uStack_1b8 >> 0x10), + CONCAT15((char)((uint)uStack_1b8 >> 8), + CONCAT14((char)uStack_1b8,local_1c0)))) + >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iStack_1f0 + iStack_1d0 + iStack_1b0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_1a8 >> 0x18), + CONCAT16((char)((uint)uStack_1a8 >> 0x10), + CONCAT15((char)((uint)uStack_1a8 >> 8), + CONCAT14((char)uStack_1a8,iStack_1b0))) + ) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 3) { + iVar33 = iVar33 + local_1a0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_198 >> 0x18), + CONCAT16((char)((uint)uStack_198 >> 0x10), + CONCAT15((char)((uint)uStack_198 >> 8), + CONCAT14((char)uStack_198,local_1a0)) + )) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_190; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_188 >> 0x18), + CONCAT16((char)((uint)uStack_188 >> 0x10), + CONCAT15((char)((uint)uStack_188 >> 8), + CONCAT14((char)uStack_188,iStack_190) + ))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 4) { + iVar33 = iVar33 + local_180; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_178 >> 0x18), + CONCAT16((char)((uint)uStack_178 >> 0x10), + CONCAT15((char)((uint)uStack_178 >> 8), + CONCAT14((char)uStack_178,local_180 + )))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_170; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_168 >> 0x18), + CONCAT16((char)((uint)uStack_168 >> 0x10), + CONCAT15((char)((uint)uStack_168 >> 8), + CONCAT14((char)uStack_168, + iStack_170)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 5) { + iVar33 = iVar33 + local_160; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_158 >> 0x18), + CONCAT16((char)((uint)uStack_158 >> 0x10), + CONCAT15((char)((uint)uStack_158 >> 8), + CONCAT14((char)uStack_158, + local_160)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_150; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_148 >> 0x18), + CONCAT16((char)((uint)uStack_148 >> 0x10), + CONCAT15((char)((uint)uStack_148 >> 8), + CONCAT14((char)uStack_148, + iStack_150)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 6) { + iVar33 = iVar33 + local_140; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_138 >> 0x18), + CONCAT16((char)((uint)uStack_138 >> 0x10), + CONCAT15((char)((uint)uStack_138 >> 8), + CONCAT14((char)uStack_138, + local_140)))) >> 0x20) + ; + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_130; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_128 >> 0x18), + CONCAT16((char)((uint)uStack_128 >> 0x10), + CONCAT15((char)((uint)uStack_128 >> 8), + CONCAT14((char)uStack_128, + iStack_130)))) >> 0x20 + ); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 7) { + iVar33 = iVar33 + local_120; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_118 >> 0x18), + CONCAT16((char)((uint)uStack_118 >> 0x10), + CONCAT15((char)((uint)uStack_118 >> 8) + ,CONCAT14((char)uStack_118, + local_120)))) >> + 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_110; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_108 >> 0x18), + CONCAT16((char)((uint)uStack_108 >> 0x10), + CONCAT15((char)((uint)uStack_108 >> 8) + ,CONCAT14((char)uStack_108, + iStack_110)))) >> + 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 8) { + iVar33 = iVar33 + local_100; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_f8 >> 0x18), + CONCAT16((char)((uint)uStack_f8 >> 0x10), + CONCAT15((char)((uint)uStack_f8 >> 8 + ),CONCAT14((char) + uStack_f8,local_100)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_f0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_e8 >> 0x18), + CONCAT16((char)((uint)uStack_e8 >> 0x10), + CONCAT15((char)((uint)uStack_e8 >> 8 + ),CONCAT14((char) + uStack_e8,iStack_f0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 9) { + iVar33 = iVar33 + local_e0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_d8 >> 0x18), + CONCAT16((char)((uint)uStack_d8 >> 0x10), + CONCAT15((char)((uint)uStack_d8 >> + 8),CONCAT14((char) + uStack_d8,local_e0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_d0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_c8 >> 0x18), + CONCAT16((char)((uint)uStack_c8 >> 0x10), + CONCAT15((char)((uint)uStack_c8 >> + 8),CONCAT14((char) + uStack_c8,iStack_d0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 10) { + iVar33 = iVar33 + local_c0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_b8 >> 0x18), + CONCAT16((char)((uint)uStack_b8 >> 0x10), + CONCAT15((char)((uint)uStack_b8 + >> 8), + CONCAT14((char) + uStack_b8,local_c0)))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_b0; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_a8 >> 0x18), + CONCAT16((char)((uint)uStack_a8 >> 0x10), + CONCAT15((char)((uint)uStack_a8 + >> 8), + CONCAT14((char) + uStack_a8,iStack_b0)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 0xb) { + iVar33 = iVar33 + local_a0; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_98 >> 0x18), + CONCAT16((char)((uint)uStack_98 >> 0x10 + ),CONCAT15((char)((uint) + uStack_98 >> 8),CONCAT14((char)uStack_98,local_a0) + ))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_90; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_88 >> 0x18), + CONCAT16((char)((uint)uStack_88 >> 0x10 + ),CONCAT15((char)((uint) + uStack_88 >> 8), + CONCAT14((char)uStack_88,iStack_90)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 0xc) { + iVar33 = iVar33 + local_80; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_78 >> 0x18), + CONCAT16((char)((uint)uStack_78 >> + 0x10), + CONCAT15((char)((uint) + uStack_78 >> 8),CONCAT14((char)uStack_78,local_80) + ))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_70; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_68 >> 0x18), + CONCAT16((char)((uint)uStack_68 >> + 0x10), + CONCAT15((char)((uint) + uStack_68 >> 8), + CONCAT14((char)uStack_68,iStack_70)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 0xd) { + iVar33 = iVar33 + local_60; + iVar35 = iVar35 + (int)(CONCAT17((char)((uint)uStack_58 >> 0x18), + CONCAT16((char)((uint)uStack_58 >> + 0x10), + CONCAT15((char)((uint) + uStack_58 >> 8),CONCAT14((char)uStack_58,local_60) + ))) >> 0x20); + uVar34 = CONCAT44(iVar35,iVar33); + iVar36 = iVar36 + iStack_50; + iVar38 = iVar38 + (int)(CONCAT17((char)((uint)uStack_48 >> 0x18), + CONCAT16((char)((uint)uStack_48 >> + 0x10), + CONCAT15((char)((uint) + uStack_48 >> 8), + CONCAT14((char)uStack_48,iStack_50)))) >> 0x20); + uVar37 = CONCAT44(iVar38,iVar36); + if (iVar2 != 0xe) { + uVar34 = CONCAT44(iVar35 + (int)(CONCAT17((char)((uint)uStack_38 + >> 0x18), + CONCAT16((char)((uint) + uStack_38 >> 0x10), + CONCAT15((char)((uint)uStack_38 >> 8), + CONCAT14((char)uStack_38,local_40)))) >> + 0x20),iVar33 + local_40); + uVar37 = CONCAT44(iVar38 + (int)(CONCAT17((char)((uint)uStack_28 + >> 0x18), + CONCAT16((char)((uint) + uStack_28 >> 0x10), + CONCAT15((char)((uint)uStack_28 >> 8), + CONCAT14((char)uStack_28,iStack_30)))) >> + 0x20),iVar36 + iStack_30); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar33 = (int)uVar34 + (int)((ulong)uVar34 >> 0x20) + + (int)uVar37 + (int)((ulong)uVar37 >> 0x20); + iVar35 = iVar2 * 8; + if (uVar17 + 1 == iVar2 * 4) goto LAB_0037f7cc; + } + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)iVar35 * 4); + if (iVar35 + 2 < iVar16) { + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)(iVar35 + 2) * 4); + if (iVar35 + 4 < iVar16) { + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)(iVar35 + 4) * 4); + if (iVar35 + 6 < iVar16) { + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)(iVar35 + 6) * 4); + if (iVar35 + 8 < iVar16) { + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)(iVar35 + 8) * 4); + if (iVar35 + 10 < iVar16) { + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)(iVar35 + 10) * 4); + if (iVar35 + 0xc < iVar16) { + iVar33 = iVar33 + *(int *)((String *)&local_200 + (long)(iVar35 + 0xc) * 4); + } + } + } + } + } + } + } +LAB_0037f7cc: + puVar20 = (uint *)cvGetFileNodeByName(param_1,param_2,"data"); + if (puVar20 == (uint *)0x0) { + local_240 = puVar20; + local_238 = puVar20; + pcVar29 = (char *)cv::String::allocate((String *)&local_240,0x2b); + cVar6 = s_The_image_data_is_not_found_in_f_00471458[0x2a]; + uVar5 = s_The_image_data_is_not_found_in_f_00471458._40_2_; + uVar4 = s_The_image_data_is_not_found_in_f_00471458._24_8_; + uVar3 = s_The_image_data_is_not_found_in_f_00471458._16_8_; + uVar37 = s_The_image_data_is_not_found_in_f_00471458._8_8_; + uVar34 = s_The_image_data_is_not_found_in_f_00471458._0_8_; + *(undefined8 *)(pcVar29 + 0x20) = s_The_image_data_is_not_found_in_f_00471458._32_8_; + *(undefined2 *)(pcVar29 + 0x28) = uVar5; + pcVar29[0x2a] = cVar6; + *(undefined8 *)pcVar29 = uVar34; + *(undefined8 *)(pcVar29 + 8) = uVar37; + *(undefined8 *)(pcVar29 + 0x10) = uVar3; + *(undefined8 *)(pcVar29 + 0x18) = uVar4; + cv::error(-2,(String *)&local_240,"void* icvReadSeq(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x10df); + cv::String::deallocate((String *)&local_240); + } + if ((*puVar20 & 7) < 5) { + uVar17 = (uint)((*puVar20 & 7) != 0); + } + else { + uVar17 = *(uint *)(*(long *)(puVar20 + 4) + 0x28); + } + if (iVar33 * uVar18 != uVar17) { + local_240 = (uint *)0x0; + local_238 = (uint *)0x0; + pcVar29 = (char *)cv::String::allocate((String *)&local_240,0x37); + cVar6 = s_The_number_of_stored_elements_do_004717e0[0x36]; + uVar5 = s_The_number_of_stored_elements_do_004717e0._52_2_; + uVar9 = s_The_number_of_stored_elements_do_004717e0._40_8_; + uVar8 = s_The_number_of_stored_elements_do_004717e0._32_8_; + uVar4 = s_The_number_of_stored_elements_do_004717e0._24_8_; + uVar3 = s_The_number_of_stored_elements_do_004717e0._16_8_; + uVar37 = s_The_number_of_stored_elements_do_004717e0._8_8_; + uVar34 = s_The_number_of_stored_elements_do_004717e0._0_8_; + *(undefined4 *)(pcVar29 + 0x30) = s_The_number_of_stored_elements_do_004717e0._48_4_; + *(undefined2 *)(pcVar29 + 0x34) = uVar5; + pcVar29[0x36] = cVar6; + *(undefined8 *)pcVar29 = uVar34; + *(undefined8 *)(pcVar29 + 8) = uVar37; + *(undefined8 *)(pcVar29 + 0x10) = uVar3; + *(undefined8 *)(pcVar29 + 0x18) = uVar4; + *(undefined8 *)(pcVar29 + 0x20) = uVar8; + *(undefined8 *)(pcVar29 + 0x28) = uVar9; + cv::error(-2,(String *)&local_240,"void* icvReadSeq(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x10e2); + cv::String::deallocate((String *)&local_240); + } + cvStartReadRawData(param_1,puVar20,(String *)&local_240); + for (lVar30 = *(long *)(lVar31 + 0x58); + (lVar30 != 0 && + (cvReadRawDataSlice(param_1,(String *)&local_240,iVar33 * *(int *)(lVar30 + 0x14), + *(undefined8 *)(lVar30 + 0x18),lVar27), + **(long **)(lVar31 + 0x58) != lVar30)); lVar30 = *(long *)(lVar30 + 8)) { + } + return lVar31; +} + + +================================================================== + +### FUNC 0037ff20 (592 bytes) name=cvWriteFileNode + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWriteFileNode(int *param_1,undefined8 param_2,uint *param_3,int param_4) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined2 uVar6; + char cVar7; + undefined8 uVar8; + undefined8 uVar9; + char *pcVar10; + undefined8 *puVar11; + long lVar12; + int iVar13; + int iVar14; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + int *local_28; + int *local_18; + + local_48 = 0; + if (param_1 == (int *)0x0) { + iVar14 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_0037ffd8; + iVar14 = -5; + } + local_40 = 0; + local_38 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_40,0x1f); + cVar7 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar6 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar5 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar5; + *(undefined2 *)(pcVar10 + 0x1c) = uVar6; + pcVar10[0x1e] = cVar7; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + cv::error(iVar14,(String *)&local_40, + "void cvWriteFileNode(CvFileStorage*, const char*, const CvFileNode*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd75); + cv::String::deallocate((String *)&local_40); +LAB_0037ffd8: + if (param_1[2] == 0) { + local_40 = 0; + local_38 = 0; + puVar11 = (undefined8 *)cv::String::allocate((String *)&local_40,0x26); + uVar6 = DAT_00470f04; + uVar9 = DAT_00470ef8; + uVar8 = DAT_00470ef0; + uVar4 = _LAB_00470ee8; + uVar3 = _DAT_00470ee0; + *(undefined4 *)(puVar11 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar11 + 0x24) = uVar6; + *puVar11 = uVar3; + puVar11[1] = uVar4; + puVar11[2] = uVar8; + puVar11[3] = uVar9; + cv::error(-2,(String *)&local_40, + "void cvWriteFileNode(CvFileStorage*, const char*, const CvFileNode*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xd75); + cv::String::deallocate((String *)&local_40); + } + if (param_3 != (uint *)0x0) { + uVar1 = *param_3; + if ((param_4 == 0) || ((uVar1 & 7) < 5)) { + FUN_00374908(param_1,param_2,param_3); + } + else { + lVar12 = *(long *)(param_3 + 4); + iVar14 = *(int *)(lVar12 + 0x28); + iVar2 = *(int *)(lVar12 + 0x2c); + cvStartReadSeq(lVar12,&local_40,0); + if (0 < iVar14) { + iVar13 = 0; + if ((uVar1 & 7) == 6) { + do { + if (-1 < *local_28) { + FUN_00374908(param_1,*(undefined8 *)(*(long *)(local_28 + 8) + 0x10)); + } + local_28 = (int *)((long)local_28 + (long)iVar2); + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + iVar13 = iVar13 + 1; + } while (iVar13 != iVar14); + } + else { + do { + FUN_00374908(param_1,0,local_28); + local_28 = (int *)((long)local_28 + (long)iVar2); + if (local_18 <= local_28) { + cvChangeSeqBlock(&local_40,1); + } + iVar13 = iVar13 + 1; + } while (iVar13 != iVar14); + } + } + } + cvReleaseFileStorage(&local_48); + } + return; +} + + +================================================================== + +### FUNC 00380198 (32 bytes) name=cvGetFileNodeName + +undefined8 cvGetFileNodeName(uint *param_1) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (param_1 != (uint *)0x0) { + if ((*param_1 >> 6 & 1) == 0) { + return 0; + } + uVar1 = *(undefined8 *)(*(long *)(param_1 + 8) + 0x10); + } + return uVar1; +} + + +================================================================== + +### FUNC 003801b8 (844 bytes) name=cvRegisterType + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvRegisterType(undefined8 *param_1) + +{ + byte bVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined2 uVar11; + char cVar12; + undefined *puVar13; + int iVar14; + char *pcVar15; + size_t sVar16; + undefined8 *puVar17; + undefined8 uVar18; + long lVar19; + undefined8 local_10; + undefined8 local_8; + + if ((param_1 == (undefined8 *)0x0) || (*(int *)((long)param_1 + 4) != 0x48)) { + local_10 = 0; + local_8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_10,0x11); + uVar2 = s_Invalid_type_info_00471818._8_8_; + uVar18 = s_Invalid_type_info_00471818._0_8_; + pcVar15[0x10] = s_Invalid_type_info_00471818[0x10]; + *(undefined8 *)pcVar15 = uVar18; + *(undefined8 *)(pcVar15 + 8) = uVar2; + cv::error(-0xc9,(String *)&local_10,"void cvRegisterType(const CvTypeInfo*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x12d5); + cv::String::deallocate((String *)&local_10); + } + if ((((param_1[4] == 0) || (param_1[5] == 0)) || (param_1[6] == 0)) || (param_1[7] == 0)) { + local_10 = 0; + local_8 = 0; + puVar17 = (undefined8 *)cv::String::allocate((String *)&local_10,0x51); + uVar10 = DAT_00471878; + uVar9 = DAT_00471870; + uVar8 = DAT_00471868; + uVar7 = DAT_00471860; + uVar6 = DAT_00471858; + uVar5 = _LAB_00471850; + uVar4 = _LAB_00471848; + uVar3 = _LAB_00471840; + uVar2 = DAT_00471838; + uVar18 = _LAB_00471830; + *(undefined1 *)(puVar17 + 10) = DAT_00471880; + *puVar17 = uVar18; + puVar17[1] = uVar2; + puVar17[2] = uVar3; + puVar17[3] = uVar4; + puVar17[4] = uVar5; + puVar17[5] = uVar6; + puVar17[6] = uVar7; + puVar17[7] = uVar8; + puVar17[8] = uVar9; + puVar17[9] = uVar10; + cv::error(-0x1b,(String *)&local_10,"void cvRegisterType(const CvTypeInfo*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x12db); + cv::String::deallocate((String *)&local_10); + } + pcVar15 = (char *)param_1[3]; + if ((0x19 < (((int)*pcVar15 & 0xffffffdfU) - 0x41 & 0xff)) && ((int)*pcVar15 != 0x5f)) { + local_10 = 0; + local_8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_10,0x29); + cVar12 = s_Type_name_should_start_with_a_le_004718c0[0x28]; + uVar4 = s_Type_name_should_start_with_a_le_004718c0._24_8_; + uVar3 = s_Type_name_should_start_with_a_le_004718c0._16_8_; + uVar2 = s_Type_name_should_start_with_a_le_004718c0._8_8_; + uVar18 = s_Type_name_should_start_with_a_le_004718c0._0_8_; + *(undefined8 *)(pcVar15 + 0x20) = s_Type_name_should_start_with_a_le_004718c0._32_8_; + pcVar15[0x28] = cVar12; + *(undefined8 *)pcVar15 = uVar18; + *(undefined8 *)(pcVar15 + 8) = uVar2; + *(undefined8 *)(pcVar15 + 0x10) = uVar3; + *(undefined8 *)(pcVar15 + 0x18) = uVar4; + cv::error(-5,(String *)&local_10,"void cvRegisterType(const CvTypeInfo*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x12df); + cv::String::deallocate((String *)&local_10); + pcVar15 = (char *)param_1[3]; + } + sVar16 = strlen(pcVar15); + iVar14 = (int)sVar16; + if (0 < iVar14) { + lVar19 = 0; + while( true ) { + bVar1 = pcVar15[lVar19]; + if (((9 < (byte)(bVar1 - 0x30)) && (0x19 < (byte)((bVar1 & 0xdf) + 0xbf))) && + ((bVar1 != 0x2d && (bVar1 != 0x5f)))) { + local_10 = 0; + local_8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_10,0x36); + uVar11 = s_Type_name_should_contain_only_le_00471888._52_2_; + uVar6 = s_Type_name_should_contain_only_le_00471888._40_8_; + uVar5 = s_Type_name_should_contain_only_le_00471888._32_8_; + uVar4 = s_Type_name_should_contain_only_le_00471888._24_8_; + uVar3 = s_Type_name_should_contain_only_le_00471888._16_8_; + uVar2 = s_Type_name_should_contain_only_le_00471888._8_8_; + uVar18 = s_Type_name_should_contain_only_le_00471888._0_8_; + *(undefined4 *)(pcVar15 + 0x30) = s_Type_name_should_contain_only_le_00471888._48_4_; + *(undefined2 *)(pcVar15 + 0x34) = uVar11; + *(undefined8 *)pcVar15 = uVar18; + *(undefined8 *)(pcVar15 + 8) = uVar2; + *(undefined8 *)(pcVar15 + 0x10) = uVar3; + *(undefined8 *)(pcVar15 + 0x18) = uVar4; + *(undefined8 *)(pcVar15 + 0x20) = uVar5; + *(undefined8 *)(pcVar15 + 0x28) = uVar6; + cv::error(-5,(String *)&local_10,"void cvRegisterType(const CvTypeInfo*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x12e8); + cv::String::deallocate((String *)&local_10); + } + lVar19 = lVar19 + 1; + if (iVar14 <= (int)lVar19) break; + pcVar15 = (char *)param_1[3]; + } + } + puVar17 = (undefined8 *)cv::cvAlloc((long)iVar14 + 0x49); + uVar18 = param_1[1]; + *puVar17 = *param_1; + puVar17[1] = uVar18; + uVar18 = param_1[3]; + puVar17[2] = param_1[2]; + puVar17[3] = uVar18; + uVar18 = param_1[5]; + puVar17[4] = param_1[4]; + puVar17[5] = uVar18; + uVar18 = param_1[7]; + puVar17[6] = param_1[6]; + puVar17[7] = uVar18; + uVar18 = param_1[8]; + puVar17[3] = puVar17 + 9; + puVar17[8] = uVar18; + memcpy(puVar17 + 9,(void *)param_1[3],(long)(iVar14 + 1)); + *(undefined4 *)puVar17 = 0; + puVar13 = PTR_first_00501d40; + puVar17[1] = 0; + lVar19 = *(long *)puVar13; + puVar17[2] = lVar19; + if (lVar19 == 0) { + *(undefined8 **)PTR_last_00501bd8 = puVar17; + } + else { + *(undefined8 **)(lVar19 + 8) = puVar17; + } + *(undefined8 **)PTR_first_00501d40 = puVar17; + return; +} + + +================================================================== + +### FUNC 00380554 (92 bytes) name=CvType + +/* CvType::CvType(char const*, int (*)(void const*), void (*)(void**), void* (*)(CvFileStorage*, + CvFileNode*), void (*)(CvFileStorage*, char const*, void const*, CvAttrList), void* (*)(void + const*)) */ + +void __thiscall +CvType::CvType(CvType *this,char *param_1,_func_int_void_ptr *param_2, + _func_void_void_ptr_ptr *param_3, + _func_void_ptr_CvFileStorage_ptr_CvFileNode_ptr *param_4, + _func_void_CvFileStorage_ptr_char_ptr_void_ptr_CvAttrList *param_5, + _func_void_ptr_void_ptr *param_6) + +{ + undefined4 local_48; + undefined4 local_44; + undefined8 local_40; + undefined8 local_38; + char *local_30; + _func_int_void_ptr *local_28; + _func_void_void_ptr_ptr *local_20; + _func_void_ptr_CvFileStorage_ptr_CvFileNode_ptr *local_18; + _func_void_CvFileStorage_ptr_char_ptr_void_ptr_CvAttrList *local_10; + _func_void_ptr_void_ptr *local_8; + + local_44 = 0x48; + local_48 = 0; + local_38 = 0; + local_40 = 0; + local_30 = param_1; + local_28 = param_2; + local_20 = param_3; + local_18 = param_4; + local_10 = param_5; + local_8 = param_6; + cvRegisterType(&local_48); + *(undefined8 *)this = *(undefined8 *)PTR_first_00501d40; + return; +} + + +================================================================== + +### FUNC 003805b0 (16 bytes) name=cvFirstType + +undefined8 cvFirstType(void) + +{ + return *(undefined8 *)PTR_first_00501d40; +} + + +================================================================== + +### FUNC 003805c0 (92 bytes) name=cvFindType + +long cvFindType(char *param_1) + +{ + int iVar1; + long lVar2; + + if (param_1 == (char *)0x0) { + lVar2 = 0; + } + else { + lVar2 = *(long *)PTR_first_00501d40; + while ((lVar2 != 0 && (iVar1 = strcmp(*(char **)(lVar2 + 0x18),param_1), iVar1 != 0))) { + lVar2 = *(long *)(lVar2 + 0x10); + } + } + return lVar2; +} + + +================================================================== + +### FUNC 00380620 (7340 bytes) name=FUN_00380620 + +byte * FUN_00380620(long param_1,byte *param_2,uint *param_3,ulong param_4,int param_5) + +{ + byte bVar1; + undefined8 uVar2; + char cVar3; + bool bVar4; + uint uVar5; + undefined8 uVar6; + size_t sVar7; + uint *puVar8; + undefined8 *puVar9; + char *pcVar10; + undefined4 uVar11; + int iVar12; + long lVar13; + int iVar14; + ulong uVar15; + ulong uVar16; + uint uVar17; + ulong uVar18; + ulong uVar19; + byte *pbVar20; + byte bVar21; + byte bVar22; + int iVar23; + int iVar24; + byte *pbVar25; + uint uVar26; + byte *pbVar27; + double dVar28; + double dVar29; + undefined1 auVar30 [16]; + byte *local_1808; + char acStack_1800 [1024]; + long local_1400; + long local_13f8; + + bVar21 = *param_2; + uVar5 = (uint)(char)bVar21; + bVar1 = param_2[1]; + uVar26 = (uint)(char)bVar1; + param_3[0] = 0; + param_3[1] = 0; + param_3[2] = 0; + param_3[3] = 0; + local_1808 = (byte *)0x0; + param_3[4] = 0; + param_3[5] = 0; + param_3[6] = 0; + param_3[7] = 0; + param_4 = param_4 >> 3; + bVar22 = 0; + if (bVar21 == 0x21) { + if ((bVar1 == 0x5e) || (bVar21 = 0, bVar1 == 0x21)) { + param_2 = param_2 + 1; + bVar21 = 0x10; + } + pbVar27 = param_2 + 1; + do { + pbVar20 = param_2; + local_1808 = pbVar20 + 1; + bVar1 = pbVar20[1]; + uVar26 = (uint)(char)bVar1; + param_2 = local_1808; + } while (0x20 < bVar1); + lVar13 = (long)local_1808 - (long)pbVar27; + iVar24 = (int)lVar13; + if (iVar24 == 0) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Empty type name"); + cvError(0xffffff2c,"char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + &local_1400,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x421); + uVar26 = (uint)(char)*local_1808; + *local_1808 = (byte)lVar13; +LAB_00381a30: + if (bVar21 != 0) { +LAB_00381e20: + lVar13 = cvFindType(pbVar27); + *(long *)(param_3 + 2) = lVar13; + if (lVar13 == 0) { + *param_3 = *param_3 & 0xffffffef; + } + bVar22 = 0; + *local_1808 = (byte)uVar26; + param_2 = (byte *)FUN_0037220c(param_1,local_1808,param_5); + uVar5 = (uint)(char)*param_2; + goto LAB_0038068c; + } +LAB_00381a34: + bVar22 = 0; + *local_1808 = (byte)uVar26; + param_2 = (byte *)FUN_0037220c(param_1,local_1808,param_5); + uVar5 = (uint)(char)*param_2; +LAB_003809b0: + if (bVar21 == 1) goto LAB_00380894; + if (bVar21 != 2) goto LAB_0038068c; + goto LAB_003809c0; + } + pbVar20[1] = 0; + bVar22 = bVar21; + if (iVar24 != 3) { + if (iVar24 != 5) goto LAB_00381a30; + if (bVar21 != 0) goto LAB_00381e20; + iVar24 = memcmp(pbVar27,"float",5); + if (iVar24 == 0) { + bVar21 = 2; + goto LAB_0038097c; + } + goto LAB_00381a34; + } + if (bVar21 != 0) goto LAB_00381e20; + iVar24 = memcmp(pbVar27,&DAT_00471900,3); + if (iVar24 == 0) { + bVar22 = 1; + bVar21 = 3; + } + else { + iVar24 = memcmp(pbVar27,&DAT_0046f0a0,3); + if (iVar24 == 0) { + bVar21 = 1; + } + else { + iVar24 = memcmp(pbVar27,&DAT_00471908,3); + if (iVar24 == 0) { + bVar21 = 5; + } + else { + iVar24 = memcmp(pbVar27,&DAT_00471910,3); + if (iVar24 != 0) goto LAB_00381a34; + bVar21 = 6; + } + } + } +LAB_0038097c: + *local_1808 = bVar1; + param_2 = (byte *)FUN_0037220c(param_1,local_1808,param_5); + uVar5 = (uint)(char)*param_2; + bVar1 = bVar22 & *param_2 != 0x27; + if (bVar1 == 0) goto LAB_003809b0; + if (uVar5 == 0x22) { + bVar4 = false; + if (bVar21 != 2) goto LAB_00380b04; + goto LAB_003809c0; + } + pbVar27 = param_2; + bVar22 = bVar1; + if ((param_4 & 1) == 0) goto LAB_00381a80; + } + else { +LAB_0038068c: + bVar21 = (char)uVar5 - 0x2bU & 0xfd; + if (((uVar5 - 0x30 & 0xff) < 10) || + ((bVar21 == 0 && (((uVar26 - 0x30 & 0xff) < 10 || (uVar26 == 0x2e)))))) { +LAB_00380840: + local_1808 = param_2 + (bVar21 == 0); + bVar21 = param_2[bVar21 == 0]; + while ((byte)(bVar21 - 0x30) < 10) { + local_1808 = local_1808 + 1; + bVar21 = *local_1808; + } + if ((bVar21 != 0x65) && (bVar21 != 0x2e)) { +LAB_00380894: + lVar13 = strtol((char *)param_2,(char **)&local_1808,0); + param_3[4] = (uint)lVar13; + *param_3 = 1; + goto LAB_003808b8; + } +LAB_003809c0: + dVar28 = strtod((char *)param_2,(char **)&local_1808); + pbVar27 = local_1808; + dVar29 = dVar28; + local_1808 = pbVar27; + if (*local_1808 == 0x2e) { + *local_1808 = 0x2c; + dVar29 = strtod((char *)param_2,(char **)&local_1808); + *pbVar27 = 0x2e; + if (local_1808 <= pbVar27) { + dVar29 = dVar28; + local_1808 = pbVar27; + } + } + if ((param_2 == local_1808) || ((byte)((*local_1808 & 0xdf) + 0xbf) < 0x1a)) { + bVar21 = *param_2; + if ((bVar21 - 0x2b & 0xfd) == 0) { + bVar4 = bVar21 != 0x2d; + bVar21 = param_2[1]; + uVar5 = 0xfff00000; + if (bVar4) { + uVar5 = 0x7ff00000; + } + uVar19 = (ulong)uVar5; + pbVar27 = param_2 + 1; + } + else { + uVar19 = 0x7ff00000; + pbVar27 = param_2; + } + if (bVar21 != 0x2e) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Bad format of floating-point constant"); + cvError(0xffffff2c,"void icvProcessSpecialDouble(CvFileStorage*, char*, double*, char**)", + &local_1400,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x38b); + } + iVar24 = toupper((int)(char)pbVar27[1]); + if (iVar24 == 0x49) { + iVar24 = toupper((int)(char)pbVar27[2]); + if ((iVar24 != 0x4e) || (iVar24 = toupper((int)(char)pbVar27[3]), iVar24 != 0x46)) + goto LAB_00380a94; + dVar29 = (double)(uVar19 << 0x20); + } + else if (((iVar24 != 0x4e) || (iVar24 = toupper((int)(char)pbVar27[2]), iVar24 != 0x41)) || + (iVar24 = toupper((int)(char)pbVar27[3]), dVar29 = DAT_00382308, iVar24 != 0x4e)) { +LAB_00380a94: + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Bad format of floating-point constant"); + cvError(0xffffff2c,"void icvProcessSpecialDouble(CvFileStorage*, char*, double*, char**)", + &local_1400,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x394); + dVar29 = 0.0; + } + local_1808 = pbVar27 + 4; + } + *param_3 = 2; + *(double *)(param_3 + 4) = dVar29; +LAB_003808b8: + if ((local_1808 == (byte *)0x0) || (param_2 == local_1808)) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Invalid numeric value (inconsistent explicit type specification?)"); + cvError(0xffffff2c,"char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + &local_1400,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x468); + } + return local_1808; + } + if (uVar5 == 0x2e) { + if ((((uVar26 & 0xff) - 0x30 & 0xff) < 10) || (((uVar26 & 0xdf) - 0x41 & 0xff) < 0x1a)) + goto LAB_00380840; + } + else { + bVar4 = uVar5 == 0x27; + if ((uVar5 == 0x22) || (bVar4)) { +LAB_00380b04: + *param_3 = 3; + iVar24 = 0; + if (bVar4) { + do { + bVar21 = param_2[1]; + pbVar27 = param_2 + 1; + if ((((byte)(bVar21 - 0x30) < 10) || ((byte)((bVar21 & 0xdf) + 0xbf) < 0x1a)) || + ((0x1f < bVar21 && (bVar21 != 0x27)))) { + *(byte *)((long)&local_1400 + (long)iVar24) = bVar21; + iVar24 = iVar24 + 1; + } + else if (bVar21 == 0x27) { + pbVar27 = param_2 + 2; + if (param_2[2] != 0x27) goto LAB_00380c8c; + *(undefined1 *)((long)&local_1400 + (long)iVar24) = 0x27; + iVar24 = iVar24 + 1; + } + else { + sprintf(acStack_1800,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Invalid character"); + cvError(0xffffff2c, + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + acStack_1800, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x47d); + } + param_2 = pbVar27; + } while (iVar24 < 0x1000); + } + else { + do { + while( true ) { + bVar21 = param_2[1]; + pbVar27 = param_2 + 1; + if ((((byte)(bVar21 - 0x30) < 10) || ((byte)((bVar21 & 0xdf) + 0xbf) < 0x1a)) || + ((bVar21 != 0x22 && bVar21 != 0x5c && (0x1f < bVar21)))) { + *(byte *)((long)&local_1400 + (long)iVar24) = bVar21; + iVar24 = iVar24 + 1; + goto LAB_00380b40; + } + if (bVar21 == 0x22) { + pbVar27 = param_2 + 2; + goto LAB_00380c8c; + } + if (bVar21 != 0x5c) break; + bVar21 = param_2[2]; + pbVar27 = param_2 + 2; + if (((bVar21 == 0x27) || (bVar21 == 0x5c)) || (bVar21 == 0x22)) { + *(byte *)((long)&local_1400 + (long)iVar24) = bVar21; + iVar24 = iVar24 + 1; + } + else if (bVar21 == 0x6e) { + *(undefined1 *)((long)&local_1400 + (long)iVar24) = 10; + iVar24 = iVar24 + 1; + } + else if (bVar21 == 0x72) { + *(undefined1 *)((long)&local_1400 + (long)iVar24) = 0xd; + iVar24 = iVar24 + 1; + } + else if (bVar21 == 0x74) { + *(undefined1 *)((long)&local_1400 + (long)iVar24) = 9; + iVar24 = iVar24 + 1; + } + else { + if ((char)bVar21 == 0x78) { + bVar21 = param_2[5]; + pbVar20 = param_2 + 3; + param_2[5] = 0; + iVar23 = 8; + } + else { + if (7 < ((int)(char)bVar21 - 0x30U & 0xff)) goto LAB_00380b40; + bVar21 = param_2[5]; + param_2[5] = 0; + iVar23 = 0x10; + pbVar20 = pbVar27; + } + lVar13 = strtol((char *)pbVar20,(char **)&local_1808,iVar23); + param_2[5] = bVar21; + if (pbVar20 == local_1808) { + *(undefined1 *)((long)&local_1400 + (long)iVar24) = 0x78; + iVar24 = iVar24 + 1; + } + else { + *(char *)((long)&local_1400 + (long)iVar24) = (char)lVar13; + iVar24 = iVar24 + 1; + pbVar27 = local_1808; + } + } +LAB_00380b40: + param_2 = pbVar27; + if (0xfff < iVar24) goto LAB_00380c48; + } + sprintf(acStack_1800,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Invalid character"); + cvError(0xffffff2c, + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + acStack_1800, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x4a8); + param_2 = pbVar27; + } while (iVar24 < 0x1000); + } +LAB_00380c48: + sprintf(acStack_1800,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Too long string literal"); + cvError(0xffffff2c,"char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + acStack_1800,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x4ac); +LAB_00380c8c: + auVar30 = cvMemStorageAllocString(*(undefined8 *)(param_1 + 0x10),&local_1400,iVar24); + *(undefined1 (*) [16])(param_3 + 4) = auVar30; + return pbVar27; + } + if ((uVar5 & 0xffffffdf) == 0x5b) { + param_5 = ((uint)param_4 & 1 ^ 1) + param_5; + if (uVar5 == 0x7b) { + uVar5 = 6; + if (*(long *)(param_3 + 2) != 0) { + uVar5 = 0x16; + } + if (*param_3 != 0) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Sequence element should not have name (use <_>)"); + cvError(0xffffff2c,"void icvFSCreateCollection(CvFileStorage*, int, CvFileNode*)", + &local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x199); + } + uVar6 = *(undefined8 *)(param_1 + 0x10); + uVar11 = 0xe; + uVar26 = 0x7d; + iVar24 = 6; + lVar13 = cvCreateSet(0,0x78,0x30,uVar6); + *(undefined4 *)(lVar13 + 0x6c) = 0x10; + puVar9 = (undefined8 *)cvMemStorageAlloc(uVar6,0x80); + *(undefined8 **)(lVar13 + 0x70) = puVar9; + *puVar9 = 0; + puVar9[1] = 0; + puVar9[2] = 0; + puVar9[3] = 0; + puVar9[4] = 0; + puVar9[5] = 0; + puVar9[6] = 0; + puVar9[7] = 0; + puVar9[8] = 0; + puVar9[9] = 0; + puVar9[10] = 0; + puVar9[0xb] = 0; + puVar9[0xc] = 0; + puVar9[0xd] = 0; + puVar9[0xe] = 0; + puVar9[0xf] = 0; + *(long *)(param_3 + 4) = lVar13; + *param_3 = uVar5; + cvSetSeqBlockSize(lVar13,8); + } + else { + uVar26 = 5; + if (*(long *)(param_3 + 2) != 0) { + uVar26 = 0x15; + } + uVar6 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(param_1 + 0x10)); + if ((*param_3 & 7) != 0) { + cvSeqPush(uVar6,param_3); + } + *(undefined8 *)(param_3 + 4) = uVar6; + uVar11 = 0xd; + *param_3 = uVar26; + iVar24 = 5; + cvSetSeqBlockSize(uVar6,8); + uVar26 = 0x5d; + if (uVar5 != 0x5b) { + uVar26 = 0x7d; + } + } + param_2 = param_2 + 1; + uVar5 = 1; + do { + while( true ) { + uVar17 = (uint)(char)*param_2; + while( true ) { + while (uVar17 == 0x20) { + param_2 = param_2 + 1; + uVar17 = (uint)(char)*param_2; + } + if (uVar17 == 0x23) { + if (0x7fffffff < (long)param_2 - *(long *)(param_1 + 0x80)) { + if (*(int *)(*(long *)(param_3 + 4) + 0x28) != 0) goto LAB_003811fc; + goto joined_r0x0038173c; + } + uVar17 = 0; + *param_2 = 0; + } + else if (0x1f < (uVar17 & 0xff)) { + if ((long)param_2 - *(long *)(param_1 + 0x80) < (long)param_5) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Incorrect indentation"); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x3c5); + uVar17 = (uint)(char)*param_2; + } + goto LAB_003811dc; + } + if (((uVar17 == 0) || (uVar17 == 10)) || (uVar17 == 0xd)) break; + if (uVar17 == 9) { + pcVar10 = "Tabs are prohibited in YAML!"; + } + else { + pcVar10 = "Invalid character"; + } + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),pcVar10); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3df); + uVar17 = (uint)(char)*param_2; + } + lVar13 = *(long *)(param_1 + 0x160); + param_2 = *(byte **)(param_1 + 0x80); + uVar19 = *(long *)(param_1 + 0x88) - (long)param_2; + iVar23 = (int)uVar19; + if (lVar13 != 0) break; + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + lVar13 = *(long *)(param_1 + 0x70); + if (lVar13 == 0) { + local_1400 = lVar13; + local_13f8 = lVar13; + pcVar10 = (char *)cv::String::allocate((String *)&local_1400,0x19); + cVar3 = s_The_storage_is_not_opened_00470830[0x18]; + uVar2 = s_The_storage_is_not_opened_00470830._8_8_; + uVar6 = s_The_storage_is_not_opened_00470830._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar10[0x18] = cVar3; + *(undefined8 *)pcVar10 = uVar6; + *(undefined8 *)(pcVar10 + 8) = uVar2; + cv::error(-2,(String *)&local_1400,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x11d); + cv::String::deallocate((String *)&local_1400); + goto LAB_003816c8; + } + param_2 = (byte *)gzgets(lVar13,param_2,uVar19 & 0xffffffff); + } + else { + param_2 = (byte *)fgets((char *)param_2,iVar23,*(FILE **)(param_1 + 0x68)); + } + if (param_2 == (byte *)0x0) goto LAB_003816c8; +LAB_00381024: + sVar7 = strlen((char *)param_2); + if ((param_2[(long)(int)sVar7 + -1] != 0xd) && (param_2[(long)(int)sVar7 + -1] != 10)) { + if (*(long *)(param_1 + 0x160) == 0) { + if (*(FILE **)(param_1 + 0x68) != (FILE *)0x0) { + uVar17 = feof(*(FILE **)(param_1 + 0x68)); + goto LAB_00381340; + } + if (*(long *)(param_1 + 0x70) != 0) { + uVar17 = gzeof(); + goto LAB_00381340; + } + } + else { + uVar17 = (uint)(*(ulong *)(param_1 + 0x168) <= *(ulong *)(param_1 + 0x170)); +LAB_00381340: + if (uVar17 != 0) goto LAB_00381044; + } + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Too long string or a last string w/o newline"); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3d9); + } +LAB_00381044: + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + 1; + } + uVar15 = *(ulong *)(param_1 + 0x170); + uVar16 = *(ulong *)(param_1 + 0x168); + uVar19 = uVar15; + if ((uVar15 < uVar16) && (iVar23 = iVar23 + -1, 0 < iVar23)) { + bVar21 = *(byte *)(lVar13 + uVar15); + uVar19 = uVar15 + 1; + if (bVar21 == 0) goto LAB_003816c0; + *param_2 = bVar21; + if (bVar21 == 10) { + param_2[1] = 0; + *(ulong *)(param_1 + 0x170) = uVar19; + } + else { + iVar12 = 1; + do { + uVar18 = uVar19; + if ((uVar19 == uVar16) || (iVar23 <= iVar12)) break; + bVar21 = *(byte *)(lVar13 + uVar19); + uVar18 = uVar19 + 1; + if (bVar21 == 0) break; + param_2[uVar19 - uVar15] = bVar21; + iVar12 = iVar12 + 1; + uVar19 = uVar18; + } while (bVar21 != 10); + param_2[iVar12] = 0; + *(ulong *)(param_1 + 0x170) = uVar18; + } + goto LAB_00381024; + } +LAB_003816c0: + *param_2 = 0; + *(ulong *)(param_1 + 0x170) = uVar19; +LAB_003816c8: + param_2 = *(byte **)(param_1 + 0x80); + param_2[3] = 0; + *param_2 = 0x2e; + param_2[2] = 0x2e; + param_2[1] = 0x2e; + *(undefined4 *)(param_1 + 0x98) = 1; + uVar17 = (uint)(char)*param_2; +LAB_003811dc: + if ((uVar17 & 0xffffffdf) == 0x5d) { + if (uVar26 != uVar17) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"The wrong closing bracket"); + cvError(0xffffff2c, + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + &local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x4c3); + } + param_2 = param_2 + 1; +LAB_00381b24: + **(uint **)(param_3 + 4) = **(uint **)(param_3 + 4) | uVar5 << 8; + return param_2; + } + if (*(int *)(*(long *)(param_3 + 4) + 0x28) != 0) { + if (uVar17 != 0x2c) { +LAB_003811fc: + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Missing , between the elements"); + cvError(0xffffff2c, + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + &local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x4cb); + } + param_2 = (byte *)FUN_0037220c(param_1,param_2 + 1,param_5); + uVar17 = (uint)(char)*param_2; + } +joined_r0x0038173c: + if (iVar24 == 6) { + pbVar27 = param_2 + -1; + if (uVar17 == 0x2d) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Key may not start with \'-\'"); + cvError(0xffffff2c,&DAT_00472e70,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3ef); + } + do { + pbVar20 = pbVar27; + pbVar27 = pbVar20 + 1; + bVar21 = *pbVar27; + if (bVar21 < 0x20) break; + } while (bVar21 != 0x3a); + if (bVar21 != 0x3a) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Missing \':\'"); + cvError(0xffffff2c,&DAT_00472e70,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3f5); + } + do { + pbVar25 = pbVar27; + pbVar27 = pbVar25 + -1; + } while (pbVar25[-1] == 0x20); + if (param_2 == pbVar25) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"An empty key"); + cvError(0xffffff2c,&DAT_00472e70,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3fd); + } + uVar6 = cvGetHashedKey(param_1,param_2,(int)pbVar25 - (int)param_2,1); + puVar8 = (uint *)cvGetFileNode(param_1,param_3,uVar6,1); + uVar6 = FUN_0037220c(param_1,pbVar20 + 2,param_5); + param_2 = (byte *)FUN_00380620(param_1,uVar6,puVar8,uVar11,param_5); + uVar17 = *puVar8 | 0x40; + *puVar8 = uVar17; + } + else { + if (uVar17 == 0x5d) goto LAB_00381b24; + puVar8 = (uint *)cvSeqPush(*(undefined8 *)(param_3 + 4),0); + param_2 = (byte *)FUN_00380620(param_1,param_2,puVar8,uVar11,param_5); + uVar17 = *puVar8; + } + uVar5 = uVar5 & (uVar17 & 7) < 5; + } while( true ); + } + } + pbVar27 = param_2; + if (uVar5 == 0x2d) { + if ((param_4 & 1) == 0) { + iVar24 = 0x15; + iVar23 = 5; + goto LAB_00380cdc; + } + } + else if ((param_4 & 1) == 0) { + if (uVar5 == 0x3f) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + "Complex keys are not supported",0x4eb); + } + else if ((uVar5 == 0x3e) || (uVar5 == 0x7c)) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + "Multi-line text literals are not supported",0x4ed); + } +LAB_00381a80: + do { + local_1808 = pbVar27; + if (*local_1808 < 0x20) goto LAB_00381e5c; + pbVar27 = local_1808 + 1; + } while (bVar22 != 0 || *local_1808 != 0x3a); + bVar4 = false; + if (param_2 != local_1808) { + iVar24 = 0x16; + iVar23 = 6; + goto LAB_00380cdc; + } + goto LAB_00381f6c; + } + } + do { + local_1808 = pbVar27; + bVar21 = *local_1808; + if (bVar21 < 0x20) goto LAB_00381e5c; + } while (((bVar21 != 0x7d) && (bVar21 != 0x2c)) && (pbVar27 = local_1808 + 1, bVar21 != 0x5d)); + if (param_2 != local_1808) goto LAB_00381e6c; + bVar4 = bVar21 != 0x3a; + goto LAB_00381f6c; +LAB_00381e5c: + if (param_2 != local_1808) goto LAB_00381e6c; + bVar4 = true; +LAB_00381f6c: + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + "Invalid character",0x4f9); + if ((param_4 & 1) == 0) { + iVar24 = 0x16; + iVar23 = 6; + if (!bVar4) { +LAB_00380cdc: + uVar5 = 1; + if (*(long *)(param_3 + 2) == 0) { + iVar24 = iVar23; + } + FUN_003718c8(param_1,iVar24,param_3); + iVar24 = (int)param_2 - (int)*(undefined8 *)(param_1 + 0x80); + do { + if (iVar23 == 6) { + pbVar27 = param_2 + -1; + if (*param_2 == 0x2d) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Key may not start with \'-\'"); + cvError(0xffffff2c,&DAT_00472e70,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3ef); + } + do { + pbVar20 = pbVar27; + pbVar27 = pbVar20 + 1; + bVar21 = *pbVar27; + if (bVar21 < 0x20) break; + } while (bVar21 != 0x3a); + if (bVar21 != 0x3a) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Missing \':\'"); + cvError(0xffffff2c,&DAT_00472e70,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3f5); + } + pbVar20 = pbVar20 + 2; + do { + pbVar25 = pbVar27; + pbVar27 = pbVar25 + -1; + } while (pbVar25[-1] == 0x20); + if (param_2 == pbVar25) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"An empty key"); + cvError(0xffffff2c,&DAT_00472e70,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3fd); + } + uVar6 = cvGetHashedKey(param_1,param_2,(int)pbVar25 - (int)param_2,1); + puVar8 = (uint *)cvGetFileNode(param_1,param_3,uVar6,1); + } + else { + pbVar20 = param_2 + 1; + if (*param_2 != 0x2d) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),&DAT_00471a58); + cvError(0xffffff2c, + "char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + &local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x51e); + } + puVar8 = (uint *)cvSeqPush(*(undefined8 *)(param_3 + 4),0); + } + uVar26 = (uint)(char)*pbVar20; + while( true ) { + while( true ) { + while (uVar26 == 0x20) { + pbVar20 = pbVar20 + 1; + uVar26 = (uint)(char)*pbVar20; + } + if (uVar26 == 0x23) { + if (0x7fffffff < (long)pbVar20 - *(long *)(param_1 + 0x80)) goto LAB_003810d0; + uVar26 = 0; + *pbVar20 = 0; + } + else if (0x1f < (uVar26 & 0xff)) { + if ((long)pbVar20 - *(long *)(param_1 + 0x80) < (long)(iVar24 + 1)) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Incorrect indentation"); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3c5) + ; + } + goto LAB_003810d0; + } + if (((uVar26 == 0) || (uVar26 == 10)) || (uVar26 == 0xd)) break; + if (uVar26 == 9) { + pcVar10 = "Tabs are prohibited in YAML!"; + } + else { + pcVar10 = "Invalid character"; + } + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),pcVar10); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3df); + uVar26 = (uint)(char)*pbVar20; + } + lVar13 = *(long *)(param_1 + 0x160); + pbVar20 = *(byte **)(param_1 + 0x80); + iVar12 = (int)*(undefined8 *)(param_1 + 0x88) - (int)pbVar20; + if (lVar13 != 0) break; + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + lVar13 = *(long *)(param_1 + 0x70); + if (lVar13 == 0) { + local_1400 = lVar13; + local_13f8 = lVar13; + pcVar10 = (char *)cv::String::allocate((String *)&local_1400,0x19); + cVar3 = s_The_storage_is_not_opened_00470830[0x18]; + uVar2 = s_The_storage_is_not_opened_00470830._8_8_; + uVar6 = s_The_storage_is_not_opened_00470830._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar10[0x18] = cVar3; + *(undefined8 *)pcVar10 = uVar6; + *(undefined8 *)(pcVar10 + 8) = uVar2; + cv::error(-2,(String *)&local_1400,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11d) + ; + cv::String::deallocate((String *)&local_1400); + goto LAB_003816fc; + } + pbVar20 = (byte *)gzgets(lVar13,pbVar20); + } + else { + pbVar20 = (byte *)fgets((char *)pbVar20,iVar12,*(FILE **)(param_1 + 0x68)); + } + if (pbVar20 == (byte *)0x0) goto LAB_003816fc; +LAB_00380f64: + sVar7 = strlen((char *)pbVar20); + if ((pbVar20[(long)(int)sVar7 + -1] != 0xd) && (pbVar20[(long)(int)sVar7 + -1] != 10)) { + if (*(long *)(param_1 + 0x160) == 0) { + if (*(FILE **)(param_1 + 0x68) != (FILE *)0x0) { + uVar26 = feof(*(FILE **)(param_1 + 0x68)); + goto LAB_003812e4; + } + if (*(long *)(param_1 + 0x70) != 0) { + uVar26 = gzeof(); + goto LAB_003812e4; + } + } + else { + uVar26 = (uint)(*(ulong *)(param_1 + 0x168) <= *(ulong *)(param_1 + 0x170)); +LAB_003812e4: + if (uVar26 != 0) goto LAB_00380f84; + } + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Too long string or a last string w/o newline") + ; + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3d9); + } +LAB_00380f84: + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + 1; + uVar26 = (uint)(char)*pbVar20; + } + uVar15 = *(ulong *)(param_1 + 0x170); + uVar16 = *(ulong *)(param_1 + 0x168); + uVar19 = uVar15; + if ((uVar15 < uVar16) && (iVar12 = iVar12 + -1, 0 < iVar12)) { + bVar21 = *(byte *)(lVar13 + uVar15); + uVar19 = uVar15 + 1; + if (bVar21 != 0) { + *pbVar20 = bVar21; + if (bVar21 == 10) { + pbVar20[1] = 0; + *(ulong *)(param_1 + 0x170) = uVar19; + } + else { + iVar14 = 1; + do { + uVar18 = uVar19; + if ((uVar19 == uVar16) || (iVar12 <= iVar14)) break; + bVar21 = *(byte *)(lVar13 + uVar19); + uVar18 = uVar19 + 1; + if (bVar21 == 0) break; + pbVar20[uVar19 - uVar15] = bVar21; + iVar14 = iVar14 + 1; + uVar19 = uVar18; + } while (bVar21 != 10); + pbVar20[iVar14] = 0; + *(ulong *)(param_1 + 0x170) = uVar18; + } + goto LAB_00380f64; + } + } + *pbVar20 = 0; + *(ulong *)(param_1 + 0x170) = uVar19; +LAB_003816fc: + pbVar20 = *(byte **)(param_1 + 0x80); + pbVar20[3] = 0; + pbVar20[2] = 0x2e; + pbVar20[1] = 0x2e; + *pbVar20 = 0x2e; + *(undefined4 *)(param_1 + 0x98) = 1; +LAB_003810d0: + param_2 = (byte *)FUN_00380620(param_1,pbVar20,puVar8,iVar23,iVar24 + 1); + uVar26 = *puVar8; + if (iVar23 == 6) { + uVar26 = uVar26 | 0x40; + *puVar8 = uVar26; + } + uVar17 = (uint)(char)*param_2; + uVar5 = uVar5 & (uVar26 & 7) < 5; + while( true ) { + while( true ) { + while (uVar17 == 0x20) { + param_2 = param_2 + 1; + uVar17 = (uint)(char)*param_2; + } + if (uVar17 == 0x23) { + lVar13 = (long)param_2 - *(long *)(param_1 + 0x80); + if (0x7fffffff < lVar13) goto LAB_00381498; + uVar17 = 0; + *param_2 = 0; + } + else if (0x1f < (uVar17 & 0xff)) { + lVar13 = (long)param_2 - *(long *)(param_1 + 0x80); + if (lVar13 < 0) { + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Incorrect indentation"); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3c5) + ; + lVar13 = (long)param_2 - *(long *)(param_1 + 0x80); + } + goto LAB_00381488; + } + if (((uVar17 == 0) || (uVar17 == 10)) || (uVar17 == 0xd)) break; + if (uVar17 == 9) { + pcVar10 = "Tabs are prohibited in YAML!"; + } + else { + pcVar10 = "Invalid character"; + } + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),pcVar10); + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3df); + uVar17 = (uint)(char)*param_2; + } + lVar13 = *(long *)(param_1 + 0x160); + param_2 = *(byte **)(param_1 + 0x80); + iVar12 = (int)*(undefined8 *)(param_1 + 0x88) - (int)param_2; + if (lVar13 != 0) break; + if (*(FILE **)(param_1 + 0x68) == (FILE *)0x0) { + lVar13 = *(long *)(param_1 + 0x70); + if (lVar13 == 0) { + local_1400 = lVar13; + local_13f8 = lVar13; + pcVar10 = (char *)cv::String::allocate((String *)&local_1400,0x19); + cVar3 = s_The_storage_is_not_opened_00470830[0x18]; + uVar2 = s_The_storage_is_not_opened_00470830._8_8_; + uVar6 = s_The_storage_is_not_opened_00470830._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar10[0x18] = cVar3; + *(undefined8 *)pcVar10 = uVar6; + *(undefined8 *)(pcVar10 + 8) = uVar2; + cv::error(-2,(String *)&local_1400,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11d) + ; + cv::String::deallocate((String *)&local_1400); + goto LAB_00381690; + } + param_2 = (byte *)gzgets(lVar13,param_2); + } + else { + param_2 = (byte *)fgets((char *)param_2,iVar12,*(FILE **)(param_1 + 0x68)); + } + if (param_2 == (byte *)0x0) goto LAB_00381690; +LAB_00381420: + sVar7 = strlen((char *)param_2); + if ((param_2[(long)(int)sVar7 + -1] != 0xd) && (param_2[(long)(int)sVar7 + -1] != 10)) { + if (*(long *)(param_1 + 0x160) == 0) { + if (*(FILE **)(param_1 + 0x68) != (FILE *)0x0) { + uVar26 = feof(*(FILE **)(param_1 + 0x68)); + goto LAB_00381530; + } + if (*(long *)(param_1 + 0x70) != 0) { + uVar26 = gzeof(); + goto LAB_00381530; + } + } + else { + uVar26 = (uint)(*(ulong *)(param_1 + 0x168) <= *(ulong *)(param_1 + 0x170)); +LAB_00381530: + if (uVar26 != 0) goto LAB_00381440; + } + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Too long string or a last string w/o newline") + ; + cvError(0xffffff2c,&DAT_00472ad0,&local_1400, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3d9); + } +LAB_00381440: + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + 1; + uVar17 = (uint)(char)*param_2; + } + uVar15 = *(ulong *)(param_1 + 0x170); + uVar16 = *(ulong *)(param_1 + 0x168); + uVar19 = uVar15; + if ((uVar15 < uVar16) && (iVar12 = iVar12 + -1, 0 < iVar12)) { + bVar21 = *(byte *)(lVar13 + uVar15); + uVar19 = uVar15 + 1; + if (bVar21 != 0) { + *param_2 = bVar21; + if (bVar21 == 10) { + param_2[1] = 0; + *(ulong *)(param_1 + 0x170) = uVar19; + } + else { + iVar14 = 1; + do { + uVar18 = uVar19; + if ((uVar19 == uVar16) || (iVar12 <= iVar14)) break; + bVar21 = *(byte *)(lVar13 + uVar19); + uVar18 = uVar19 + 1; + if (bVar21 == 0) break; + param_2[uVar19 - uVar15] = bVar21; + iVar14 = iVar14 + 1; + uVar19 = uVar18; + } while (bVar21 != 10); + param_2[iVar14] = 0; + *(ulong *)(param_1 + 0x170) = uVar18; + } + goto LAB_00381420; + } + } + *param_2 = 0; + *(ulong *)(param_1 + 0x170) = uVar19; +LAB_00381690: + param_2 = *(byte **)(param_1 + 0x80); + param_2[3] = 0; + param_2[2] = 0x2e; + param_2[1] = 0x2e; + *param_2 = 0x2e; + *(undefined4 *)(param_1 + 0x98) = 1; + lVar13 = (long)param_2 - *(long *)(param_1 + 0x80); +LAB_00381488: + if (iVar24 != lVar13) { +LAB_00381498: + if (lVar13 < iVar24) break; + sprintf((char *)&local_1400,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Incorrect indentation"); + cvError(0xffffff2c,"char* icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int)", + &local_1400,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x52f); + } + iVar12 = memcmp(param_2,&DAT_00471a90,3); + } while (iVar12 != 0); + **(uint **)(param_3 + 4) = **(uint **)(param_3 + 4) | uVar5 << 8; + return param_2; + } + } +LAB_00381e6c: + *param_3 = 3; + pbVar27 = local_1808; + do { + pbVar20 = pbVar27; + pbVar27 = pbVar20 + -1; + } while (pbVar20[-1] == 0x20 && param_2 < pbVar20 + -1); + auVar30 = cvMemStorageAllocString + (*(undefined8 *)(param_1 + 0x10),param_2,(int)pbVar20 - (int)param_2); + *(undefined1 (*) [16])(param_3 + 4) = auVar30; + return local_1808; +} + + +================================================================== + +### FUNC 00382310 (168 bytes) name=cvUnregisterType + +void cvUnregisterType(void) + +{ + undefined *puVar1; + void *pvVar2; + long lVar3; + long lVar4; + long lVar5; + + pvVar2 = (void *)cvFindType(); + if (pvVar2 == (void *)0x0) { + return; + } + lVar3 = *(long *)((long)pvVar2 + 8); + if (lVar3 == 0) { + lVar4 = *(long *)((long)pvVar2 + 0x10); + *(long *)PTR_first_00501d40 = lVar4; + lVar5 = lVar4; + } + else { + *(undefined8 *)(lVar3 + 0x10) = *(undefined8 *)((long)pvVar2 + 0x10); + lVar4 = *(long *)((long)pvVar2 + 0x10); + lVar5 = *(long *)PTR_first_00501d40; + } + if (lVar4 == 0) { + *(long *)PTR_last_00501bd8 = lVar3; + } + else { + *(long *)(lVar4 + 8) = lVar3; + } + puVar1 = PTR_first_00501d40; + if ((lVar5 != 0) && (*(long *)PTR_last_00501bd8 != 0)) { + cv::cvFree_(pvVar2); + return; + } + *(undefined8 *)PTR_last_00501bd8 = 0; + *(undefined8 *)puVar1 = 0; + cv::cvFree_(pvVar2); + return; +} + + +================================================================== + +### FUNC 003823b8 (12 bytes) name=~CvType + +/* CvType::~CvType() */ + +void __thiscall CvType::~CvType(CvType *this) + +{ + cvUnregisterType(*(undefined8 *)(*(long *)this + 0x18)); + return; +} + + +================================================================== + +### FUNC 003823c4 (2844 bytes) name=FUN_003823c4 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +byte * FUN_003823c4(long param_1,byte *param_2,uint *param_3) + +{ + bool bVar1; + byte *pbVar2; + bool bVar3; + int iVar4; + int iVar5; + undefined4 uVar6; + uint *puVar7; + char *pcVar8; + long lVar9; + undefined8 *puVar10; + long lVar11; + undefined8 uVar12; + uint uVar13; + int iVar14; + undefined8 uVar15; + byte bVar16; + byte bVar17; + int iVar18; + byte *__src; + undefined1 auVar19 [16]; + int local_1424; + byte *local_1420; + byte *local_1418; + long local_1410 [128]; + byte local_1010 [4112]; + + bVar1 = true; + param_3[0] = 0; + param_3[1] = 0; + param_3[2] = 0; + param_3[3] = 0; + param_3[4] = 0; + param_3[5] = 0; + param_3[6] = 0; + param_3[7] = 0; + do { + bVar17 = *param_2; + if (((int)(char)bVar17 - 9U & 0xff) < 5 || ((int)(char)bVar17 & 0xffffffdfU) == 0) { +LAB_003825d0: + param_2 = (byte *)FUN_00372578(param_1,param_2,0); + bVar17 = *param_2; + bVar16 = param_2[1]; +joined_r0x003825f4: + bVar3 = bVar17 == 0; + if ((!bVar3) && (bVar17 != 0x3c)) { + puVar7 = param_3; + if (*param_3 != 0) { + if ((*param_3 & 7) < 5) { + /* catch() { ... } // from try @ 00382e30 with catch @ 00382e48 */ + uVar12 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(param_1 + 0x10)); + /* try { // try from 00382e58 to 00482e5b has its CatchHandler @ 00382a08 */ + /* catch() { ... } // from try @ 00382efc with catch @ 00382e5c + catch() { ... } // from try @ 00382f58 with catch @ 00382e5c + catch() { ... } // from try @ 0038352c with catch @ 00382e5c + catch() { ... } // from try @ 00383558 with catch @ 00382e5c */ + if ((*param_3 & 7) != 0) { + cvSeqPush(uVar12,param_3); + } + *(undefined8 *)(param_3 + 4) = uVar12; + *param_3 = 5; + cvSetSeqBlockSize(uVar12,8); + } + puVar7 = (uint *)cvSeqPush(*(undefined8 *)(param_3 + 4),0); + puVar7[2] = 0; + puVar7[3] = 0; + } + bVar3 = bVar17 == 0x22; + if (!bVar3) { + param_2 = param_2 + -1; + } + *puVar7 = 3; + iVar4 = 0; + break; + } +LAB_003825f8: + local_1420 = (byte *)0x0; + local_1418 = (byte *)0x0; + local_1410[0] = 0; + local_1424 = 0; + if ((bVar16 == 0x2f) || (bVar3)) goto LAB_00382a08; + } + else { + if (bVar17 != 0x3c) { + bVar16 = param_2[1]; + goto joined_r0x003825f4; + } + bVar16 = param_2[1]; + bVar3 = false; + if (bVar16 != 0x21) goto LAB_003825f8; + if (param_2[2] == 0x2d) goto LAB_003825d0; + } + local_1424 = 0; + local_1410[0] = 0; + local_1418 = (byte *)0x0; + local_1420 = (byte *)0x0; + uVar12 = FUN_00382ee0(param_1,param_2,&local_1420,local_1410,&local_1424); + if (local_1424 == 5) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Directive tags are not allowed here"); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x745); + /* try { // try from 00382e30 to 00482e33 has its CatchHandler @ 00382e48 */ + } + if (local_1424 == 3) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),&DAT_00471af8); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x747); + } + if ((local_1410[0] == 0) || + (pcVar8 = (char *)cvAttrValue(local_1410[0],"type_id"), pcVar8 == (char *)0x0)) { + uVar6 = 0; + lVar11 = 0; +LAB_003826b8: + if (*(int *)(local_1420 + 8) != 1) goto LAB_003826cc; +LAB_00382b64: + bVar3 = true; + if (**(char **)(local_1420 + 0x10) != '_') goto LAB_003826cc; + if ((*param_3 & 7) < 5) { + lVar9 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(param_1 + 0x10)); + if ((*param_3 & 7) != 0) { + cvSeqPush(lVar9,param_3); + } + *(long *)(param_3 + 4) = lVar9; + uVar13 = 5; + bVar3 = true; + goto LAB_00382790; + } + if ((*param_3 & 7) != 5) { + pcVar8 = "Map element should have a name"; + goto LAB_00382b10; + } +LAB_003827a0: + puVar7 = (uint *)cvSeqPush(*(undefined8 *)(param_3 + 4),0); + uVar12 = FUN_003833f0(param_1,uVar12,puVar7,uVar6); + uVar13 = *puVar7; + } + else { + iVar4 = strcmp(pcVar8,"str"); + if (iVar4 != 0) { + iVar4 = strcmp(pcVar8,"map"); + if (iVar4 == 0) { + uVar6 = 6; + lVar11 = 0; + } + else { + iVar4 = strcmp(pcVar8,"seq"); + if (iVar4 == 0) { + uVar6 = 5; + lVar11 = 0; + } + else { + lVar11 = cvFindType(pcVar8); + uVar6 = 0; + if (lVar11 != 0) { + uVar6 = 0x10; + } + } + } + goto LAB_003826b8; + } + uVar6 = 3; + lVar11 = 0; + if (*(int *)(local_1420 + 8) == 1) goto LAB_00382b64; +LAB_003826cc: + uVar13 = *param_3 & 7; + if (uVar13 < 5) { + if (*param_3 != 0) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Sequence element should not have name (use <_>)"); + cvError(0xffffff2c,"void icvFSCreateCollection(CvFileStorage*, int, CvFileNode*)", + local_1010,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x199); + } + uVar15 = *(undefined8 *)(param_1 + 0x10); + bVar3 = false; + lVar9 = cvCreateSet(0,0x78,0x30,uVar15); + *(undefined4 *)(lVar9 + 0x6c) = 0x10; + puVar10 = (undefined8 *)cvMemStorageAlloc(uVar15,0x80); + *(undefined8 **)(lVar9 + 0x70) = puVar10; + uVar13 = 6; + *puVar10 = 0; + puVar10[1] = 0; + puVar10[2] = 0; + puVar10[3] = 0; + puVar10[4] = 0; + puVar10[5] = 0; + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + puVar10[9] = 0; + puVar10[10] = 0; + puVar10[0xb] = 0; + puVar10[0xc] = 0; + puVar10[0xd] = 0; + /* catch() { ... } // from try @ 003827e4 with catch @ 00382788 + catch() { ... } // from try @ 00382984 with catch @ 00382788 + catch() { ... } // from try @ 003829fc with catch @ 00382788 */ + puVar10[0xe] = 0; + puVar10[0xf] = 0; + *(long *)(param_3 + 4) = lVar9; +LAB_00382790: + *param_3 = uVar13; + cvSetSeqBlockSize(lVar9,8); +LAB_0038279c: + if (bVar3) goto LAB_003827a0; + } + else if (uVar13 == 5) { + bVar3 = false; + pcVar8 = "Sequence element should not have name (use <_>)"; +LAB_00382b10: + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),pcVar8); + /* try { // try from 00382b38 to 00482d0f has its CatchHandler @ 00382db4 */ + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x763); + goto LAB_0038279c; + } + puVar7 = (uint *)cvGetFileNode(param_1,param_3,local_1420,1); + uVar12 = FUN_003833f0(param_1,uVar12,puVar7,uVar6); + /* try { // try from 00382aec to 00482aef has its CatchHandler @ 00382a08 */ + uVar13 = *puVar7 | 0x40; + *puVar7 = uVar13; + } + /* try { // try from 003827e4 to 004827e7 has its CatchHandler @ 00382788 */ + *(long *)(puVar7 + 2) = lVar11; + bVar1 = (bool)(bVar1 & (uVar13 & 7) < 5); + param_2 = (byte *)FUN_00382ee0(param_1,uVar12,&local_1418,local_1410,&local_1424); + /* try { // try from 00382810 to 00482813 has its CatchHandler @ 00382a00 */ + if ((local_1424 != 2) || (local_1418 != local_1420)) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Mismatched closing tag"); + /* try { // try from 00382854 to 00482893 has its CatchHandler @ 003829bc */ + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x771); + } + } while( true ); +LAB_003824ec: + bVar17 = param_2[1]; + __src = param_2 + 1; + pbVar2 = __src; + iVar18 = iVar4; + if (((byte)(bVar17 - 0x30) < 10) || ((byte)((bVar17 & 0xdf) + 0xbf) < 0x1a)) goto LAB_0038255c; + if (bVar17 == 0x22) { + if (bVar3) { + __src = param_2 + 2; + } + else { + __src = param_2 + 2; + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Literal \" is not allowed within a string. Use ""); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7b3); + } +LAB_003829f4: + /* try { // try from 003829fc to 004829ff has its CatchHandler @ 00382788 */ + /* catch() { ... } // from try @ 00382810 with catch @ 00382a00 + catch() { ... } // from try @ 00382910 with catch @ 00382a00 + catch() { ... } // from try @ 003829b4 with catch @ 00382a00 */ + auVar19 = cvMemStorageAllocString(*(undefined8 *)(param_1 + 0x10),local_1010,iVar4); + *(undefined1 (*) [16])(puVar7 + 4) = auVar19; + param_2 = __src; +LAB_00382a08: + /* catch() { ... } // from try @ 00382aec with catch @ 00382a08 + catch() { ... } // from try @ 00382dac with catch @ 00382a08 + catch() { ... } // from try @ 00382e38 with catch @ 00382a08 + catch() { ... } // from try @ 00382e58 with catch @ 00382a08 */ + if ((*param_3 & 7) != 3) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),&DAT_00471c10); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x805); + if ((bVar1) && (4 < (*param_3 & 7))) { + **(uint **)(param_3 + 4) = **(uint **)(param_3 + 4) | 0x100; + } + } + return param_2; + } + if ((bVar17 < 0x20) || (bVar17 == 0x3c)) { + if (bVar3) { + /* try { // try from 003829b4 to 004829b7 has its CatchHandler @ 00382a00 */ + /* catch() { ... } // from try @ 00382854 with catch @ 003829bc */ + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Closing \" is expected"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7ba); + } + goto LAB_003829f4; + } + if ((!bVar3) && (bVar17 == 0x20)) goto LAB_003829f4; + if ((bVar17 == 0x3e) || (bVar17 == 0x27)) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Literal \' or > are not allowed. Use ' or >"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7bf); + } + else if (bVar17 == 0x26) { + if (param_2[2] == 0x23) { + if (param_2[3] == 0x78) { + /* try { // try from 00382e38 to 00482e3b has its CatchHandler @ 00382a08 */ + param_2 = param_2 + 4; + iVar4 = 0x10; + } + else { + param_2 = param_2 + 3; + iVar4 = 10; + } + lVar11 = strtol((char *)param_2,(char **)&local_1418,iVar4); + if (((0xff < (uint)lVar11) || (local_1418 == (byte *)0x0)) || (*local_1418 != 0x3b)) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Invalid numeric value in the string"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",1999); + } + bVar17 = (byte)lVar11; + pbVar2 = local_1418; + } + else { + param_2 = param_2 + 2; + local_1418 = param_2; + do { + do { + local_1418 = local_1418 + 1; + bVar16 = *local_1418; + } while ((byte)(bVar16 + 0x9f) < 0x1a); + } while (((byte)(bVar16 - 0x30) < 10) || ((byte)(bVar16 + 0xbf) < 0x1a)); + /* try { // try from 00382910 to 00482913 has its CatchHandler @ 00382a00 */ + if (bVar16 != 0x3b) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Invalid character in the symbol entity name"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7d8); + } + pbVar2 = local_1418; + iVar14 = (int)local_1418 - (int)param_2; + if (iVar14 == 2) { + iVar5 = memcmp(param_2,&DAT_00470c30,2); + if (iVar5 == 0) { + bVar17 = 0x3c; + } + else { + iVar5 = memcmp(param_2,&DAT_00470c38,2); + if (iVar5 != 0) goto LAB_00382984; + bVar17 = 0x3e; + } + } + else if (iVar14 == 3) { + iVar5 = memcmp(param_2,&DAT_00470c40,3); + if (iVar5 != 0) goto LAB_00382984; + } + else if (iVar14 == 4) { + iVar5 = memcmp(param_2,&DAT_00470c48,4); + if (iVar5 == 0) { + bVar17 = 0x27; + } + else { + iVar5 = memcmp(param_2,&DAT_00470c50,4); + if (iVar5 != 0) goto LAB_00382984; + /* try { // try from 00382dac to 00482df7 has its CatchHandler @ 00382a08 */ + bVar17 = 0x22; + /* catch() { ... } // from try @ 00382b38 with catch @ 00382db4 */ + } + } + else { +LAB_00382984: + /* try { // try from 00382984 to 004829ab has its CatchHandler @ 00382788 */ + memcpy(local_1010 + iVar4,__src,(long)(iVar14 + 2)); + iVar18 = iVar4 + iVar14 + 2; + bVar17 = bVar16; + } + } + } +LAB_0038255c: + param_2 = pbVar2; + iVar4 = iVar18 + 1; + local_1010[iVar18] = bVar17; + if (0xfff < iVar4) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Too long string literal"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7ef); + } + goto LAB_003824ec; +} + + +================================================================== + +### FUNC 00382ee0 (1296 bytes) name=FUN_00382ee0 + +char * FUN_00382ee0(long param_1,char *param_2,long *param_3,undefined8 *param_4,int *param_5) + +{ + char cVar1; + byte bVar2; + int iVar3; + long lVar4; + long *plVar5; + char *pcVar6; + long *plVar7; + long lVar8; + uint uVar9; + int iVar10; + long *plVar11; + int iVar12; + long lVar13; + char *pcVar14; + long lVar15; + long *plVar16; + undefined1 auStack_20 [24]; + undefined8 local_8; + + /* try { // try from 00382efc to 00482eff has its CatchHandler @ 00382e5c */ + cVar1 = *param_2; + if (cVar1 == '\0') { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Preliminary end of the stream",0x81d); + cVar1 = *param_2; + } + if (cVar1 != '<') { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Tag should start with \'<\'",0x820); + } + bVar2 = param_2[1]; + uVar9 = (uint)(char)bVar2; + /* try { // try from 00382f50 to 00482f53 has its CatchHandler @ 00383548 */ + pcVar6 = param_2 + 1; + iVar12 = 1; + /* try { // try from 00382f58 to 00482fc3 has its CatchHandler @ 00382e5c */ + if (((9 < (byte)(bVar2 - 0x30)) && (0x19 < (byte)((bVar2 & 0xdf) + 0xbf))) && (bVar2 != 0x5f)) { + if (uVar9 == 0x2f) { + pcVar6 = param_2 + 2; + uVar9 = (uint)param_2[2]; + iVar12 = 2; + } + else if (uVar9 == 0x3f) { + pcVar6 = param_2 + 2; + uVar9 = (uint)param_2[2]; + iVar12 = 4; + } + else if (uVar9 == 0x21) { + uVar9 = (uint)param_2[2]; + pcVar6 = param_2 + 2; + iVar12 = 5; + } + else { + iVar12 = 0; + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Unknown tag type",0x836); + uVar9 = (uint)param_2[1]; + } + } + plVar11 = (long *)0x0; + plVar16 = (long *)0x0; + iVar10 = 0; + lVar13 = 0; + do { + if ((0x19 < ((uVar9 & 0xffffffdf) - 0x41 & 0xff)) && (uVar9 != 0x5f)) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Name should start with a letter or underscore",0x83d); + } + pcVar14 = pcVar6 + -1; + do { + do { + pcVar14 = pcVar14 + 1; + cVar1 = *pcVar14; + } while ((byte)(cVar1 + 0x9fU) < 0x1a); + } while ((((byte)(cVar1 - 0x30U) < 10) || ((byte)(cVar1 + 0xbfU) < 0x1a)) || + ((cVar1 == '_' || (cVar1 == '-')))); + lVar4 = cvGetHashedKey(param_1,pcVar6,(int)pcVar14 - (int)pcVar6,1); + if (lVar13 == 0) { + if (plVar11 != (long *)0x0) { + iVar3 = iVar10 << 1; + iVar10 = iVar10 + 1; + lVar15 = ((long)iVar3 + 1) * 8; + goto LAB_00383088; + } + } + else { + if (iVar12 == 2) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Closing tag should not contain any attributes",0x84b); + } + if ((3 < iVar10) || (plVar11 == (long *)0x0)) { + plVar7 = (long *)cvMemStorageAlloc(*(undefined8 *)(param_1 + 0x10),0x58); + *plVar7 = 0; + plVar7[1] = 0; + plVar5 = plVar7 + 2; + plVar7[2] = 0; + plVar7[3] = 0; + plVar7[4] = 0; + plVar7[5] = 0; + plVar7[6] = 0; + plVar7[7] = 0; + plVar7[8] = 0; + plVar7[9] = 0; + plVar7[10] = 0; + *plVar7 = (long)plVar5; + if (plVar11 == (long *)0x0) { + iVar10 = 1; + lVar15 = 8; + lVar8 = 0; + plVar16 = plVar7; + } + else { + plVar11[1] = (long)plVar7; + iVar10 = 1; + lVar15 = 8; + lVar8 = 0; + } + } + else { + iVar3 = iVar10 << 1; + plVar5 = (long *)*plVar11; + iVar10 = iVar10 + 1; + lVar8 = (long)iVar3 << 3; + lVar15 = ((long)iVar3 + 1) * 8; + plVar7 = plVar11; + } + *(undefined8 *)((long)plVar5 + lVar8) = *(undefined8 *)(lVar4 + 0x10); + plVar11 = plVar7; + lVar4 = lVar13; +LAB_00383088: + if ((*pcVar14 != '=') && (pcVar14 = (char *)FUN_00372578(param_1,pcVar14,2), *pcVar14 != '=')) + { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Attribute name should be followed by \'=\'",0x865); + } + pcVar6 = pcVar14 + 1; + if ((pcVar14[1] != '\'') && (pcVar14[1] != '\"')) { + /* try { // try from 0038324c to 00483407 has its CatchHandler @ 00383530 */ + pcVar6 = (char *)FUN_00372578(param_1,pcVar6,2); + if ((*pcVar6 != '\'') && (*pcVar6 != '\"')) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Attribute value should be put into single or double quotes",0x86d); + } + } + pcVar14 = (char *)FUN_003823c4(param_1,pcVar6,auStack_20); + *(undefined8 *)(*plVar11 + lVar15) = local_8; + } + cVar1 = *pcVar14; + /* try { // try from 00383118 to 0048311b has its CatchHandler @ 00383530 */ + if (cVar1 == '>') { +LAB_00383130: + if (iVar12 == 4) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Invalid closing tag for ') { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"Invalid closing tag for ')) && (iVar12 == 1)) { + pcVar14 = pcVar14 + 2; + /* try { // try from 00383244 to 00483247 has its CatchHandler @ 00383504 */ + iVar12 = 3; +LAB_0038313c: + *param_3 = lVar4; + *param_5 = iVar12; + /* try { // try from 00383150 to 00483153 has its CatchHandler @ 00383538 */ + *param_4 = plVar16; + /* try { // try from 00383158 to 004831f3 has its CatchHandler @ 00383530 */ + return pcVar14; + } + lVar13 = lVar4; + pcVar6 = pcVar14; + if (4 < ((int)cVar1 - 9U & 0xff) && ((int)cVar1 & 0xffffffdfU) != 0) { + FUN_00371858(*(undefined8 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x94), + "char* icvXMLParseTag(CvFileStorage*, char*, CvStringHashNode**, CvAttrList**, int*)" + ,"There should be space between attributes",0x895); + uVar9 = (uint)*pcVar14; + } + } while( true ); +} + + +================================================================== + +### FUNC 003833f0 (3976 bytes) name=FUN_003833f0 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +byte * FUN_003833f0(long param_1,byte *param_2,uint *param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + byte bVar3; + bool bVar4; + byte *pbVar5; + bool bVar6; + bool bVar7; + uint uVar8; + int iVar9; + int iVar10; + undefined4 uVar11; + uint *puVar12; + char *pcVar13; + long lVar14; + undefined8 *puVar15; + long lVar16; + undefined8 uVar17; + int iVar18; + undefined8 uVar19; + byte bVar20; + ulong uVar21; + int iVar22; + uint uVar23; + byte *pbVar24; + double dVar25; + double dVar26; + undefined1 auVar27 [16]; + int local_1424; + byte *local_1420; + byte *local_1418; + long local_1410 [128]; + byte local_1010 [4112]; + + uVar2 = param_4 & 7; + bVar6 = (param_4 & 7) != 0; + uVar1 = param_4 & 0x10; + bVar4 = true; + param_3[0] = 0; + param_3[1] = 0; + param_3[2] = 0; + param_3[3] = 0; + param_3[4] = 0; + param_3[5] = 0; + param_3[6] = 0; + param_3[7] = 0; + bVar7 = true; +LAB_00383494: + do { + bVar20 = *param_2; + iVar9 = (int)(char)bVar20; + if (((int)(char)bVar20 - 9U & 0xff) < 5 || ((int)(char)bVar20 & 0xffffffdfU) == 0) { +LAB_00383648: + param_2 = (byte *)FUN_00372578(param_1,param_2,0); + /* try { // try from 00383658 to 0048365b has its CatchHandler @ 00383f28 */ + /* try { // try from 00383660 to 004836b7 has its CatchHandler @ 00383560 */ + uVar23 = (uint)(char)param_2[1]; + uVar8 = (uint)(char)param_2[1]; + iVar9 = (int)(char)*param_2; + bVar7 = iVar9 == 0; + if ((bVar7) || (iVar9 == 0x3c)) { +LAB_00383678: + local_1420 = (byte *)0x0; + local_1418 = (byte *)0x0; + local_1410[0] = 0; + local_1424 = 0; + if ((uVar23 == 0x2f) || (bVar7)) break; +LAB_003836a4: + local_1424 = 0; + local_1410[0] = 0; + local_1418 = (byte *)0x0; + local_1420 = (byte *)0x0; + uVar17 = FUN_00382ee0(param_1,param_2,&local_1420,local_1410,&local_1424); + if (local_1424 == 5) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Directive tags are not allowed here"); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x745); + } + if (local_1424 == 3) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),&DAT_00471af8); + /* try { // try from 00384114 to 00484117 has its CatchHandler @ 0038450c */ + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x747); + } + /* try { // try from 003836f0 to 004836f3 has its CatchHandler @ 00383f58 */ + if ((local_1410[0] == 0) || + (pcVar13 = (char *)cvAttrValue(local_1410[0],"type_id"), pcVar13 == (char *)0x0)) { + uVar11 = 0; + lVar16 = 0; +LAB_00383738: + if (*(int *)(local_1420 + 8) != 1) goto LAB_0038374c; +LAB_00383c88: + bVar7 = true; + /* try { // try from 00383c94 to 00483c97 has its CatchHandler @ 00383fc0 */ + if (**(char **)(local_1420 + 0x10) != '_') goto LAB_0038374c; + if ((*param_3 & 7) < 5) { + /* catch() { ... } // from try @ 003837d4 with catch @ 00383fc0 + catch() { ... } // from try @ 00383c94 with catch @ 00383fc0 + catch() { ... } // from try @ 00383cf8 with catch @ 00383fc0 */ + lVar14 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(param_1 + 0x10)); + if ((*param_3 & 7) != 0) { + cvSeqPush(lVar14,param_3); + } + *(long *)(param_3 + 4) = lVar14; + uVar8 = 5; + bVar7 = true; + goto LAB_00383814; + } + /* try { // try from 00383ca8 to 00483cb7 has its CatchHandler @ 00383560 */ + if ((*param_3 & 7) != 5) { + pcVar13 = "Map element should have a name"; + goto LAB_00383c2c; + } +LAB_00383824: + puVar12 = (uint *)cvSeqPush(*(undefined8 *)(param_3 + 4),0); + /* try { // try from 00383834 to 00483a2f has its CatchHandler @ 00383fbc */ + uVar17 = FUN_003833f0(param_1,uVar17,puVar12,uVar11); + uVar8 = *puVar12; + } + else { + /* try { // try from 003836fc to 00483747 has its CatchHandler @ 00383560 */ + iVar9 = strcmp(pcVar13,"str"); + if (iVar9 != 0) { + iVar9 = strcmp(pcVar13,"map"); + if (iVar9 == 0) { + uVar11 = 6; + /* try { // try from 0038402c to 0048404b has its CatchHandler @ 00383ffc */ + lVar16 = 0; + } + else { + iVar9 = strcmp(pcVar13,"seq"); + if (iVar9 == 0) { + uVar11 = 5; + lVar16 = 0; + } + else { + lVar16 = cvFindType(pcVar13); + uVar11 = 0; + if (lVar16 != 0) { + uVar11 = 0x10; + } + } + } + goto LAB_00383738; + } + uVar11 = 3; + lVar16 = 0; + if (*(int *)(local_1420 + 8) == 1) goto LAB_00383c88; +LAB_0038374c: + uVar8 = *param_3 & 7; + if (uVar8 < 5) { + if (*param_3 != 0) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Sequence element should not have name (use <_>)"); + cvError(0xffffff2c,"void icvFSCreateCollection(CvFileStorage*, int, CvFileNode*)", + local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x199); + } + uVar19 = *(undefined8 *)(param_1 + 0x10); + bVar7 = false; + lVar14 = cvCreateSet(0,0x78,0x30,uVar19); + /* try { // try from 003837d4 to 004837d7 has its CatchHandler @ 00383fc0 */ + *(undefined4 *)(lVar14 + 0x6c) = 0x10; + puVar15 = (undefined8 *)cvMemStorageAlloc(uVar19,0x80); + *(undefined8 **)(lVar14 + 0x70) = puVar15; + *puVar15 = 0; + puVar15[1] = 0; + puVar15[2] = 0; + puVar15[3] = 0; + puVar15[4] = 0; + puVar15[5] = 0; + puVar15[6] = 0; + puVar15[7] = 0; + puVar15[8] = 0; + puVar15[9] = 0; + puVar15[10] = 0; + puVar15[0xb] = 0; + puVar15[0xc] = 0; + puVar15[0xd] = 0; + puVar15[0xe] = 0; + puVar15[0xf] = 0; + *(long *)(param_3 + 4) = lVar14; + uVar8 = 6; +LAB_00383814: + *param_3 = uVar8; + cvSetSeqBlockSize(lVar14,8); +LAB_00383820: + if (bVar7) goto LAB_00383824; + } + else if (uVar8 == 5) { + bVar7 = false; + pcVar13 = "Sequence element should not have name (use <_>)"; +LAB_00383c2c: + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),pcVar13); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x763); + goto LAB_00383820; + } + puVar12 = (uint *)cvGetFileNode(param_1,param_3,local_1420,1); + uVar17 = FUN_003833f0(param_1,uVar17,puVar12,uVar11); + uVar8 = *puVar12 | 0x40; + *puVar12 = uVar8; + } + *(long *)(puVar12 + 2) = lVar16; + bVar4 = (bool)(bVar4 & (uVar8 & 7) < 5); + param_2 = (byte *)FUN_00382ee0(param_1,uVar17,&local_1418,local_1410,&local_1424); + if ((local_1424 != 2) || (local_1418 != local_1420)) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Mismatched closing tag"); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x771); + } + bVar7 = true; + goto LAB_00383494; + } + } + else { + uVar8 = (uint)(char)param_2[1]; + if (bVar20 == 0x3c) { + bVar7 = false; + uVar23 = uVar8; + if (uVar8 != 0x21) goto LAB_00383678; + if (param_2[2] == 0x2d) goto LAB_00383648; + goto LAB_003836a4; + } + if (!bVar7) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"There should be space between literals"); + /* try { // try from 00383cf8 to 00483cfb has its CatchHandler @ 00383fc0 */ + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x777); + } + } + puVar12 = param_3; + if (*param_3 != 0) { + if ((*param_3 & 7) < 5) { + uVar17 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(param_1 + 0x10)); + if ((*param_3 & 7) != 0) { + cvSeqPush(uVar17,param_3); + } + *(undefined8 *)(param_3 + 4) = uVar17; + *param_3 = 5; + cvSetSeqBlockSize(uVar17,8); + } + puVar12 = (uint *)cvSeqPush(*(undefined8 *)(param_3 + 4),0); + puVar12[2] = 0; + puVar12[3] = 0; + } + if (uVar2 == 3) { +LAB_00383540: + /* catch() { ... } // from try @ 00382f50 with catch @ 00383548 */ + *puVar12 = 3; + if (iVar9 == 0x22) { + bVar7 = true; + } + else { +LAB_00383550: + param_2 = param_2 + -1; + bVar7 = false; + } + /* try { // try from 00383558 to 0048355b has its CatchHandler @ 00382e5c */ + iVar9 = 0; + while( true ) { + bVar20 = param_2[1]; + pbVar24 = param_2 + 1; + pbVar5 = pbVar24; + iVar22 = iVar9; + if (((byte)(bVar20 - 0x30) < 10) || ((byte)((bVar20 & 0xdf) + 0xbf) < 0x1a)) + goto LAB_003835d8; + if (bVar20 == 0x22) { + if (!bVar7) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Literal \" is not allowed within a string. Use ""); + /* try { // try from 00383e10 to 00483e13 has its CatchHandler @ 00383f6c */ + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7b3); + } + param_2 = param_2 + 2; + auVar27 = cvMemStorageAllocString(*(undefined8 *)(param_1 + 0x10),local_1010,iVar9); + *(undefined1 (*) [16])(puVar12 + 4) = auVar27; + goto joined_r0x00383ac8; + } + if ((bVar20 < 0x20) || (bVar20 == 0x3c)) break; + if ((!bVar7) && (bVar20 == 0x20)) goto LAB_00383b1c; + if ((bVar20 == 0x3e) || (bVar20 == 0x27)) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Literal \' or > are not allowed. Use ' or >"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7bf); + } + else if (bVar20 == 0x26) { + if (param_2[2] == 0x23) { + if (param_2[3] == 0x78) { + param_2 = param_2 + 4; + iVar9 = 0x10; + /* try { // try from 00384188 to 0048418b has its CatchHandler @ 00384514 */ + } + else { + param_2 = param_2 + 3; + iVar9 = 10; + } + lVar16 = strtol((char *)param_2,(char **)&local_1418,iVar9); + if (((0xff < (uint)lVar16) || (local_1418 == (byte *)0x0)) || (*local_1418 != 0x3b)) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Invalid numeric value in the string"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",1999); + } + bVar20 = (byte)lVar16; + pbVar5 = local_1418; + } + else { + param_2 = param_2 + 2; + local_1418 = param_2; + do { + do { + local_1418 = local_1418 + 1; + bVar3 = *local_1418; + } while ((byte)(bVar3 + 0x9f) < 0x1a); + } while (((byte)(bVar3 - 0x30) < 10) || ((byte)(bVar3 + 0xbf) < 0x1a)); + if (bVar3 != 0x3b) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Invalid character in the symbol entity name" + ); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7d8); + } + pbVar5 = local_1418; + iVar18 = (int)local_1418 - (int)param_2; + if (iVar18 == 2) { + /* catch() { ... } // from try @ 0038402c with catch @ 00383ffc + catch() { ... } // from try @ 003841fc with catch @ 00383ffc + catch() { ... } // from try @ 0038445c with catch @ 00383ffc + catch() { ... } // from try @ 00384508 with catch @ 00383ffc */ + iVar10 = memcmp(param_2,&DAT_00470c30,2); + if (iVar10 == 0) { + bVar20 = 0x3c; + } + else { + iVar10 = memcmp(param_2,&DAT_00470c38,2); + if (iVar10 != 0) goto LAB_00383a18; + bVar20 = 0x3e; + } + } + else if (iVar18 == 3) { + iVar10 = memcmp(param_2,&DAT_00470c40,3); + /* try { // try from 00384080 to 004840a7 has its CatchHandler @ 00384514 */ + if (iVar10 != 0) goto LAB_00383a18; + } + else if (iVar18 == 4) { + iVar10 = memcmp(param_2,&DAT_00470c48,4); + if (iVar10 == 0) { + bVar20 = 0x27; + } + else { + iVar10 = memcmp(param_2,&DAT_00470c50,4); + if (iVar10 != 0) goto LAB_00383a18; + bVar20 = 0x22; + } + } + else { +LAB_00383a18: + memcpy(local_1010 + iVar9,pbVar24,(long)(iVar18 + 2)); + iVar22 = iVar9 + iVar18 + 2; + bVar20 = bVar3; + } + } + } +LAB_003835d8: + param_2 = pbVar5; + iVar9 = iVar22 + 1; + local_1010[iVar22] = bVar20; + if (0xfff < iVar9) { + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Too long string literal"); + /* try { // try from 00383618 to 0048361b has its CatchHandler @ 00383560 */ + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7ef); + } + } + if (bVar7) { + /* try { // try from 00383ad8 to 00483adb has its CatchHandler @ 00383560 */ + sprintf((char *)local_1410,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Closing \" is expected"); + cvError(0xffffff2c,&DAT_00470520,local_1410, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x7ba); + } +LAB_00383b1c: + auVar27 = cvMemStorageAllocString(*(undefined8 *)(param_1 + 0x10),local_1010,iVar9); + *(undefined1 (*) [16])(puVar12 + 4) = auVar27; + param_2 = pbVar24; + } + else { + /* catch() { ... } // from try @ 00383244 with catch @ 00383504 */ + bVar20 = (char)iVar9 - 0x2bU & 0xfd; + /* try { // try from 0038352c to 0048352f has its CatchHandler @ 00382e5c */ + /* catch() { ... } // from try @ 00383118 with catch @ 00383530 + catch() { ... } // from try @ 00383158 with catch @ 00383530 + catch() { ... } // from try @ 0038324c with catch @ 00383530 */ + if ((9 < (iVar9 - 0x30U & 0xff)) && + ((bVar20 != 0 || ((9 < (uVar8 - 0x30 & 0xff) && (uVar8 != 0x2e)))))) { + /* catch() { ... } // from try @ 00383150 with catch @ 00383538 */ + if (iVar9 != 0x2e) goto LAB_00383540; + /* try { // try from 003841fc to 00484247 has its CatchHandler @ 00383ffc */ + if ((((uVar8 & 0xff) - 0x30 & 0xff) < 10) || (((uVar8 & 0xdf) - 0x41 & 0xff) < 0x1a)) + goto LAB_00383a40; + *puVar12 = 3; + goto LAB_00383550; + } +LAB_00383a40: + local_1418 = param_2 + (bVar20 == 0); + bVar20 = param_2[bVar20 == 0]; + while ((byte)(bVar20 - 0x30) < 10) { + local_1418 = local_1418 + 1; + bVar20 = *local_1418; + } + if ((bVar20 == 0x65) || (bVar20 == 0x2e)) { + dVar25 = strtod((char *)param_2,(char **)&local_1418); + pbVar24 = local_1418; + if (*local_1418 == 0x2e) { + *local_1418 = 0x2c; + dVar26 = strtod((char *)param_2,(char **)&local_1418); + *pbVar24 = 0x2e; + if (pbVar24 < local_1418) { + dVar25 = dVar26; + pbVar24 = local_1418; + } + } + local_1418 = pbVar24; + if ((local_1418 == param_2) || ((byte)((*local_1418 & 0xdf) + 0xbf) < 0x1a)) { + bVar20 = *param_2; + if ((bVar20 - 0x2b & 0xfd) == 0) { + bVar7 = bVar20 != 0x2d; + bVar20 = param_2[1]; + uVar8 = 0xfff00000; + if (bVar7) { + uVar8 = 0x7ff00000; + } + uVar21 = (ulong)uVar8; + pbVar24 = param_2 + 1; + } + else { + uVar21 = 0x7ff00000; + pbVar24 = param_2; + } + if (bVar20 != 0x2e) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Bad format of floating-point constant"); + /* try { // try from 00383ec8 to 00483ecb has its CatchHandler @ 00383560 */ + cvError(0xffffff2c, + "void icvProcessSpecialDouble(CvFileStorage*, char*, double*, char**)", + local_1010,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp" + ,0x38b); + } + iVar9 = toupper((int)(char)pbVar24[1]); + if (iVar9 == 0x49) { + iVar9 = toupper((int)(char)pbVar24[2]); + if ((iVar9 != 0x4e) || (iVar9 = toupper((int)(char)pbVar24[3]), iVar9 != 0x46)) + goto LAB_00383f08; + dVar25 = (double)(uVar21 << 0x20); + } + else { + /* try { // try from 00383f04 to 00483f07 has its CatchHandler @ 00383f3c */ + if (((iVar9 != 0x4e) || (iVar9 = toupper((int)(char)pbVar24[2]), iVar9 != 0x41)) || + (iVar9 = toupper((int)(char)pbVar24[3]), dVar25 = DAT_00384378, iVar9 != 0x4e)) { +LAB_00383f08: + /* try { // try from 00383f0c to 00483f0f has its CatchHandler @ 00383560 */ + /* catch() { ... } // from try @ 00383658 with catch @ 00383f28 */ + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),"Bad format of floating-point constant"); + /* try { // try from 00383f38 to 00483f3b has its CatchHandler @ 00383560 */ + /* catch() { ... } // from try @ 00383f04 with catch @ 00383f3c */ + /* try { // try from 00383f4c to 00483f4f has its CatchHandler @ 00383560 */ + cvError(0xffffff2c, + "void icvProcessSpecialDouble(CvFileStorage*, char*, double*, char**)", + local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x394); + dVar25 = 0.0; + } + } + local_1418 = pbVar24 + 4; + /* catch() { ... } // from try @ 003836f0 with catch @ 00383f58 */ + } + *puVar12 = 2; + /* try { // try from 00383f68 to 00483f6b has its CatchHandler @ 00383560 */ + *(double *)(puVar12 + 4) = dVar25; + } + else { + lVar16 = strtol((char *)param_2,(char **)&local_1418,0); + puVar12[4] = (uint)lVar16; + *puVar12 = 1; + } + bVar7 = param_2 == local_1418; + param_2 = local_1418; + /* catch() { ... } // from try @ 00383e10 with catch @ 00383f6c */ + if (bVar7) { + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94), + "Invalid numeric value (inconsistent explicit type specification?)"); + /* try { // try from 00383fac to 00483fb7 has its CatchHandler @ 00383560 */ + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x79c); + param_2 = local_1418; + /* catch() { ... } // from try @ 00383834 with catch @ 00383fbc */ + } + } +joined_r0x00383ac8: + bVar7 = bVar6 && uVar2 < 5; + } while (!bVar6 || uVar2 >= 5); + uVar23 = *param_3; + uVar8 = uVar23 & 7; + if (uVar8 == 0) { +LAB_00384234: + if (uVar2 < 5) { + if (!bVar6) goto LAB_00383b60; + } + else { + uVar11 = 6; + /* try { // try from 00384250 to 00484253 has its CatchHandler @ 00384514 */ + if (uVar2 != 6) { + uVar11 = 5; + } + FUN_003718c8(param_1,uVar11,param_3); + uVar23 = *param_3; + uVar8 = uVar23 & 7; + } + if (uVar2 == uVar8) goto LAB_00383b60; + } + else { + if (uVar2 == uVar8) goto LAB_00383b60; + if (uVar8 < 5) goto LAB_00384234; + if (!bVar6) goto LAB_00383b60; + } + sprintf((char *)local_1010,"%s(%d): %s",*(undefined8 *)(param_1 + 0x60), + (ulong)*(uint *)(param_1 + 0x94),&DAT_00471c10); + cvError(0xffffff2c,&DAT_00470520,local_1010, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x805); + uVar23 = *param_3; + uVar8 = uVar23 & 7; +LAB_00383b60: + if ((4 < uVar8) && (bVar4)) { + **(uint **)(param_3 + 4) = **(uint **)(param_3 + 4) | 0x100; + } + if ((param_4 & 0x10) != 0) { + uVar1 = 0x10; + } + *param_3 = uVar1 | uVar23; + return param_2; +} + + +================================================================== + +### FUNC 00384380 (6956 bytes) name=cvOpenFileStorage + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * cvOpenFileStorage(char *param_1,long param_2,uint param_3,char *param_4) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + bool bVar9; + undefined1 uVar10; + int iVar11; + undefined4 uVar12; + size_t sVar13; + char *pcVar14; + undefined8 uVar15; + undefined8 *puVar16; + void *pvVar17; + void *pvVar18; + uint *puVar19; + undefined8 uVar20; + long lVar21; + char *pcVar22; + FILE *pFVar23; + long lVar24; + ulong uVar25; + char cVar26; + int iVar27; + ulong uVar28; + int iVar29; + ulong uVar30; + uint uVar31; + ulong uVar32; + undefined4 *puVar33; + undefined4 *puVar34; + char *pcVar35; + bool bVar36; + uint uVar37; + long lVar38; + int local_30a4; + undefined4 *local_30a0; + long local_3098; + long local_3090; + undefined8 local_3088; + char local_3080 [16]; + long local_3070; + long local_3068; + long local_3060; + long local_3058; + char acStack_3050 [1024]; + char acStack_2c50 [1024]; + char acStack_2850 [1024]; + char acStack_2450 [1024]; + char acStack_2050 [1024]; + char acStack_1c50 [1024]; + char acStack_1850 [1024]; + char acStack_1450 [1024]; + char acStack_1050 [1024]; + char acStack_c50 [1024]; + long local_850; + long local_848; + undefined8 local_450; + char *local_448; + undefined2 local_440; + + bVar9 = (param_3 & 3) == 2; + local_30a0 = (undefined4 *)0x0; + uVar31 = param_3 >> 2 & 1; + uVar37 = (uint)((param_3 & 3) != 0); + /* try { // try from 003843dc to 0048442f has its CatchHandler @ 0038450c */ + if ((param_1 == (char *)0x0) || (*param_1 == '\0')) { + if (uVar37 == 0) { + if (uVar31 == 0) { + pcVar14 = "NULL or empty buffer"; + } + else { + pcVar14 = "NULL or empty filename"; + } + /* try { // try from 00384738 to 0048473b has its CatchHandler @ 00384c5c */ + local_450 = (char *)0x0; + local_448 = (char *)0x0; + sVar13 = strlen(pcVar14); + pvVar17 = (void *)cv::String::allocate((String *)&local_450,sVar13); + memcpy(pvVar17,pcVar14,sVar13); + cv::error(-0x1b,(String *)&local_450, + "CvFileStorage* cvOpenFileStorage(const char*, CvMemStorage*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xa68); + sVar13 = 0; + uVar31 = 1; + cv::String::deallocate((String *)&local_450); + } + else { + sVar13 = 0; + uVar31 = 1; + } +LAB_003843f0: + if (bVar9) { + local_450 = (char *)0x0; + local_448 = (char *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_450,0x44); + uVar5 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._40_8_; + uVar4 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._32_8_; + uVar3 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._24_8_; + uVar2 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._16_8_; + uVar20 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._8_8_; + uVar15 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._0_8_; + /* try { // try from 00384448 to 0048444b has its CatchHandler @ 00384514 */ + *(undefined4 *)(pcVar14 + 0x40) = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._64_4_; + uVar7 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._56_8_; + uVar6 = s_CV_STORAGE_APPEND_and_CV_STORAGE_00471e38._48_8_; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + *(undefined8 *)(pcVar14 + 0x10) = uVar2; + *(undefined8 *)(pcVar14 + 0x18) = uVar3; + /* try { // try from 0038445c to 0048445f has its CatchHandler @ 00383ffc */ + *(undefined8 *)(pcVar14 + 0x20) = uVar4; + *(undefined8 *)(pcVar14 + 0x28) = uVar5; + *(undefined8 *)(pcVar14 + 0x30) = uVar6; + *(undefined8 *)(pcVar14 + 0x38) = uVar7; + cv::error(-0xce,(String *)&local_450, + "CvFileStorage* cvOpenFileStorage(const char*, CvMemStorage*, int, const char*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xa6f); + cv::String::deallocate((String *)&local_450); + } + } + else { + sVar13 = strlen(param_1); + if (uVar31 != 0) goto LAB_003843f0; + } + /* try { // try from 00384474 to 00484477 has its CatchHandler @ 0038450c */ + local_30a0 = (undefined4 *)cv::cvAlloc(0x188); + memset(local_30a0,0,0x188); + puVar34 = local_30a0; + uVar15 = cvCreateMemStorage(0x40000); + puVar33 = local_30a0; + *(undefined8 *)(puVar34 + 4) = uVar15; + if (param_2 == 0) { + param_2 = *(long *)(local_30a0 + 4); + } + *(long *)(local_30a0 + 6) = param_2; + local_30a0[2] = uVar37; + /* try { // try from 003844b0 to 004844b3 has its CatchHandler @ 003844c0 */ + *local_30a0 = 0x4c4d4159; + if (uVar31 == 0) { + uVar15 = cvMemStorageAlloc(*(undefined8 *)(local_30a0 + 4),sVar13 + 1); + *(undefined8 *)(puVar33 + 0x18) = uVar15; + strcpy(*(char **)(local_30a0 + 0x18),param_1); + puVar34 = local_30a0; + /* try { // try from 003848a0 to 004848c7 has its CatchHandler @ 00384c54 */ + pcVar22 = *(char **)(local_30a0 + 0x18); + pcVar14 = strrchr(pcVar22,0x2e); + if (((pcVar14 == (char *)0x0) || (pcVar14[1] != 'g')) || (pcVar14[2] != 'z')) { +LAB_003848d0: + if (puVar34[2] == 0) { + pcVar14 = "rt"; + } + else if (bVar9) { + pcVar14 = "a+t"; + } + else { + pcVar14 = "wt"; + } + pFVar23 = fopen(pcVar22,pcVar14); + *(FILE **)(puVar34 + 0x1a) = pFVar23; + if (*(long *)(local_30a0 + 0x1a) != 0) { + bVar36 = false; + goto LAB_00384a80; + } + } + else { + cVar26 = pcVar14[3]; + /* try { // try from 00385a5c to 00485a5f has its CatchHandler @ 00385a00 */ + if (cVar26 == 0) { + if (bVar9) { +LAB_00385b40: + cvReleaseFileStorage(&local_30a0); + local_450 = (char *)0x0; + local_448 = (char *)0x0; + pcVar22 = (char *)cv::String::allocate((String *)&local_450,0x34); + uVar5 = s_Appending_data_to_compressed_fil_00471e80._40_8_; + uVar4 = s_Appending_data_to_compressed_fil_00471e80._32_8_; + uVar3 = s_Appending_data_to_compressed_fil_00471e80._24_8_; + uVar2 = s_Appending_data_to_compressed_fil_00471e80._16_8_; + uVar20 = s_Appending_data_to_compressed_fil_00471e80._8_8_; + uVar15 = s_Appending_data_to_compressed_fil_00471e80._0_8_; + *(undefined4 *)(pcVar22 + 0x30) = s_Appending_data_to_compressed_fil_00471e80._48_4_; + *(undefined8 *)pcVar22 = uVar15; + *(undefined8 *)(pcVar22 + 8) = uVar20; + *(undefined8 *)(pcVar22 + 0x10) = uVar2; + *(undefined8 *)(pcVar22 + 0x18) = uVar3; + *(undefined8 *)(pcVar22 + 0x20) = uVar4; + *(undefined8 *)(pcVar22 + 0x28) = uVar5; + cv::error(-0xd5,(String *)&local_450, + "CvFileStorage* cvOpenFileStorage(const char*, CvMemStorage*, int, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xa88); + cv::String::deallocate((String *)&local_450); + cVar26 = pcVar14[3]; + if (cVar26 != '\0') goto LAB_00385a88; + pcVar22 = *(char **)(local_30a0 + 0x18); + puVar34 = local_30a0; + } + local_450._2_6_ = (uint6)((ulong)local_450 >> 0x10) & 0xffffffff0000; + local_450 = (char *)CONCAT62(local_450._2_6_,0x6200); + cVar26 = '3'; + /* try { // try from 00385be0 to 00485be3 has its CatchHandler @ 0038602c */ + if (puVar34[2] == 0) { + local_450 = (char *)CONCAT71(local_450._1_7_,0x72); + } + else { + local_450 = (char *)CONCAT71(local_450._1_7_,0x77); + } + } + else { + if ((9 < ((int)cVar26 - 0x30U & 0xff)) || (pcVar14[4] != '\0')) goto LAB_003848d0; + if (bVar9) goto LAB_00385b40; +LAB_00385a88: + pcVar14[3] = '\0'; + sVar13 = sVar13 - 1; + pcVar22 = *(char **)(local_30a0 + 0x18); + local_450._2_6_ = (uint6)((ulong)local_450 >> 0x10) & 0xffffffff0000; + /* try { // try from 00385aa8 to 00485aab has its CatchHandler @ 0038607c */ + local_450 = (char *)CONCAT62(local_450._2_6_,0x6200); + uVar10 = 0x77; + /* try { // try from 00385ab8 to 00485b0b has its CatchHandler @ 00385a00 */ + if (local_30a0[2] == 0) { + uVar10 = 0x72; + } + local_450 = (char *)CONCAT71(local_450._1_7_,uVar10); + puVar34 = local_30a0; + } + local_450._0_3_ = CONCAT12(cVar26,(undefined2)local_450); + uVar15 = gzopen(pcVar22,&local_450); + *(undefined8 *)(puVar34 + 0x1c) = uVar15; + if (*(long *)(local_30a0 + 0x1c) != 0) { + bVar36 = true; +LAB_00384a80: + *(undefined8 *)(local_30a0 + 0xc) = 0; + local_30a0[0x10] = 0; + local_30a0[0x11] = 0; + local_30a0[0x24] = 0x47; + if (local_30a0[2] != 0) { + /* catch() { ... } // from try @ 00384cd8 with catch @ 00384c98 + catch() { ... } // from try @ 00384d5c with catch @ 00384c98 + catch() { ... } // from try @ 00384ff8 with catch @ 00384c98 + catch() { ... } // from try @ 0038526c with catch @ 00384c98 + catch() { ... } // from try @ 00385580 with catch @ 00384c98 + catch() { ... } // from try @ 00385848 with catch @ 00384c98 + catch() { ... } // from try @ 0038598c with catch @ 00384c98 + catch() { ... } // from try @ 003859e8 with catch @ 00384c98 */ + if ((param_3 & 0x38) != 0) goto LAB_00384cbc; + lVar38 = -7; + if (!bVar36) { + lVar38 = -4; + } + goto LAB_003845a0; + } + pcVar22 = *(char **)(local_30a0 + 0x58); + pcVar14 = local_450; + goto joined_r0x00384aa0; + } + } + } + else { + /* try { // try from 003844b8 to 004844bb has its CatchHandler @ 0038450c */ + *(undefined8 *)(local_30a0 + 0xc) = 0; + /* catch() { ... } // from try @ 003844b0 with catch @ 003844c0 */ + local_30a0[0x10] = 0; + local_30a0[0x11] = 0; + local_30a0[0x24] = 0x47; + if (uVar37 == 0) { + *(char **)(local_30a0 + 0x58) = param_1; + *(size_t *)(local_30a0 + 0x5a) = sVar13; + /* try { // try from 003847ac to 004847af has its CatchHandler @ 00384c54 */ + bVar36 = false; + pcVar22 = param_1; + pcVar14 = local_450; +joined_r0x00384aa0: + local_450 = pcVar22; + if (local_450 == (char *)0x0) { + if (*(FILE **)(local_30a0 + 0x1a) == (FILE *)0x0) { + if (*(long *)(local_30a0 + 0x1c) == 0) { + local_448 = local_450; + pcVar14 = (char *)cv::String::allocate((String *)&local_450,0x19); + cVar26 = s_The_storage_is_not_opened_00470830[0x18]; + uVar20 = s_The_storage_is_not_opened_00470830._8_8_; + uVar15 = s_The_storage_is_not_opened_00470830._0_8_; + /* try { // try from 003856f0 to 00485737 has its CatchHandler @ 00385990 */ + *(undefined8 *)(pcVar14 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar14[0x18] = cVar26; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + cv::error(-2,(String *)&local_450,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11d); + cv::String::deallocate((String *)&local_450); + } + else { + local_450 = pcVar14; + gzgets(*(long *)(local_30a0 + 0x1c),local_3080,0xe); + } + } + else { + local_450 = pcVar14; + fgets(local_3080,0xe,*(FILE **)(local_30a0 + 0x1a)); + } + } + else { + uVar25 = *(ulong *)(local_30a0 + 0x5c); + uVar30 = *(ulong *)(local_30a0 + 0x5a); + uVar32 = uVar25; + if (uVar25 < uVar30) { + cVar26 = local_450[uVar25]; + uVar32 = uVar25 + 1; + if (cVar26 != '\0') { + local_3080[0] = cVar26; + if (cVar26 == '\n') { + lVar38 = 1; + } + else { + /* try { // try from 003847d8 to 00484863 has its CatchHandler @ 00384520 */ + iVar11 = 1; + uVar28 = uVar32; + do { + uVar32 = uVar28; + if (uVar28 == uVar30) { + pcVar22 = local_3080 + iVar11; + goto LAB_00385768; + } + if (iVar11 == 0xd) { + lVar38 = 0xd; + goto LAB_00385778; + } + cVar26 = local_450[uVar28]; + uVar32 = uVar28 + 1; + if (cVar26 == '\0') { + /* try { // try from 003858b4 to 004858b7 has its CatchHandler @ 003859d0 */ + pcVar22 = local_3080 + iVar11; + goto LAB_00385768; + } + local_3080[uVar28 - uVar25] = cVar26; + iVar11 = iVar11 + 1; + uVar28 = uVar32; + } while (cVar26 != '\n'); + /* try { // try from 003858c0 to 004858c3 has its CatchHandler @ 003858e0 */ + lVar38 = (long)iVar11; + } +LAB_00385778: + local_3080[lVar38] = '\0'; + *(ulong *)(local_30a0 + 0x5c) = uVar32; + local_450 = pcVar14; + goto LAB_00384ab8; + } + } + pcVar22 = local_3080; +LAB_00385768: + *pcVar22 = '\0'; + *(ulong *)(local_30a0 + 0x5c) = uVar32; + local_450 = pcVar14; + } +LAB_00384ab8: + puVar34 = local_30a0; + iVar11 = strncmp(local_3080,"%YAML:",6); + uVar12 = 0x10; + if (iVar11 != 0) { + uVar12 = 8; + } + puVar34[1] = uVar12; + if (bVar36) { + uVar25 = 0x100000; + uVar32 = 0x100100; + } + else { + if (uVar31 == 0) { + fseek(*(FILE **)(puVar34 + 0x1a),0,2); + /* try { // try from 003856a0 to 004856a3 has its CatchHandler @ 003858e0 */ + uVar25 = ftell(*(FILE **)(local_30a0 + 0x1a)); + puVar34 = local_30a0; + } + else { + uVar25 = *(ulong *)(puVar34 + 0x5a); + } + if (0x100000 < uVar25) { + uVar25 = 0x100000; + } + if (uVar25 < 0x2400) { + uVar25 = 0x2400; + } + uVar32 = uVar25 + 0x100; + } + if (*(FILE **)(puVar34 + 0x1a) == (FILE *)0x0) { + /* try { // try from 00385668 to 0048566b has its CatchHandler @ 003859d0 */ + puVar33 = puVar34; + if (*(long *)(puVar34 + 0x1c) != 0) { + gzrewind(); + puVar33 = local_30a0; + } + } + else { + rewind(*(FILE **)(puVar34 + 0x1a)); + puVar33 = local_30a0; + } + uVar15 = *(undefined8 *)(puVar33 + 4); + *(undefined8 *)(puVar34 + 0x5c) = 0; + lVar38 = cvCreateSet(0,0x78,0x20,uVar15); + *(undefined4 *)(lVar38 + 0x6c) = 0x100; + pvVar17 = (void *)cvMemStorageAlloc(uVar15,0x800); + *(void **)(lVar38 + 0x70) = pvVar17; + memset(pvVar17,0,0x800); + puVar34 = local_30a0; + *(long *)(puVar33 + 10) = lVar38; + /* try { // try from 00384b78 to 00484ba7 has its CatchHandler @ 00384c54 */ + uVar15 = cvCreateSeq(0,0x60,0x20,*(undefined8 *)(local_30a0 + 4)); + puVar33 = local_30a0; + *(undefined8 *)(puVar34 + 0xc) = uVar15; + uVar15 = cv::cvAlloc(uVar32); + puVar34 = local_30a0; + *(undefined8 *)(puVar33 + 0x1e) = uVar15; + *(undefined8 *)(puVar33 + 0x20) = uVar15; + *(ulong *)(local_30a0 + 0x22) = *(long *)(local_30a0 + 0x20) + uVar25; + **(undefined1 **)(local_30a0 + 0x1e) = 10; + *(undefined1 *)(*(long *)(local_30a0 + 0x1e) + 1) = 0; + if (local_30a0[1] == 8) { + /* try { // try from 003854ac to 004854af has its CatchHandler @ 003859b4 */ + local_3098 = 0; + local_3090 = 0; + local_3088 = 0; + local_30a4 = 0; + pvVar17 = (void *)FUN_00372578(local_30a0,*(undefined8 *)(local_30a0 + 0x20),2); + iVar11 = memcmp(pvVar17,"\'",0x8ac); + } + pcVar14 = (char *)FUN_00382ee0(puVar34,pvVar17,&local_3098,&local_3088,&local_30a4); + while ((*pcVar14 != '\0' && + (pcVar14 = (char *)FUN_00372578(puVar34,pcVar14,0), *pcVar14 != '\0'))) { + uVar15 = FUN_00382ee0(puVar34,pcVar14,&local_3098,&local_3088,&local_30a4); + /* try { // try from 00385560 to 00485573 has its CatchHandler @ 003859ec */ + if ((local_30a4 != 1) || + (iVar11 = strcmp(*(char **)(local_3098 + 0x10),"opencv_storage"), iVar11 != 0)) { + /* try { // try from 00385580 to 00485583 has its CatchHandler @ 00384c98 */ + /* try { // try from 00385590 to 00485593 has its CatchHandler @ 003859b4 */ + sprintf(acStack_3050,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25]," tag is missing"); + /* try { // try from 003855a0 to 004855a3 has its CatchHandler @ 003859f4 */ + cvError(0xffffff2c,"void icvXMLParse(CvFileStorage*)",acStack_3050, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x8c9); + } + /* try { // try from 003855bc to 004855bf has its CatchHandler @ 003859ec */ + uVar20 = cvSeqPush(*(undefined8 *)(puVar34 + 0xc),0); + uVar15 = FUN_003833f0(puVar34,uVar15,uVar20,0); + uVar15 = FUN_00382ee0(puVar34,uVar15,&local_3090,&local_3088,&local_30a4); + /* try { // try from 003855f8 to 004855fb has its CatchHandler @ 003859bc */ + /* try { // try from 00385600 to 00485603 has its CatchHandler @ 003859ec */ + if ((local_30a4 != 2) || (local_3098 != local_3090)) { + sprintf(acStack_2c50,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],&LAB_00472080); + cvError(0xffffff2c,"void icvXMLParse(CvFileStorage*)",acStack_2c50, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x8cf); + } + pcVar14 = (char *)FUN_00372578(puVar34,uVar15,0); + } + } + else { + /* try { // try from 00384be0 to 00484be3 has its CatchHandler @ 00384c80 */ + pcVar14 = *(char **)(local_30a0 + 0x20); + /* try { // try from 00384be8 to 00484beb has its CatchHandler @ 00384c54 */ + bVar9 = true; + /* try { // try from 00384bf8 to 00484bfb has its CatchHandler @ 00384520 */ + uVar31 = (uint)*pcVar14; +LAB_00384c10: + /* catch() { ... } // from try @ 003848f0 with catch @ 00384c10 */ + while (uVar31 == 0x20) { + pcVar14 = pcVar14 + 1; + uVar31 = (uint)*pcVar14; + } + if (uVar31 == 0x23) { + if ((long)pcVar14 - *(long *)(puVar34 + 0x20) < 0x80000000) { + uVar31 = 0; + *pcVar14 = '\0'; + /* try { // try from 00384db8 to 00484e07 has its CatchHandler @ 003859f4 */ + goto LAB_00384c2c; + } + uVar37 = 0x23; +LAB_00385188: + if ((((uVar37 & 0xffffffdf) - 0x41 & 0xff) < 0x1a) || (uVar31 == 0x5f)) { +LAB_00384df4: + pcVar22 = pcVar14; + if (!bVar9) { + sprintf(acStack_1850,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],&DAT_004720f0); + /* try { // try from 00385438 to 0048543b has its CatchHandler @ 003859f4 */ + cvError(0xffffff2c,&DAT_00472b80,acStack_1850, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x560); + uVar31 = (uint)*pcVar14; + } + } + else { + pcVar22 = pcVar14; + if (puVar34[0x26] == 0) { + sprintf(acStack_1450,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],"Invalid or unsupported syntax"); + cvError(0xffffff2c,&DAT_00472b80,acStack_1450, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x566); + uVar31 = (uint)*pcVar14; + goto LAB_00384c10; + } + } + } + else { + if ((uVar31 & 0xff) < 0x20) { +LAB_00384c2c: + if (((uVar31 == 0) || (uVar31 == 10)) || (uVar31 == 0xd)) { + /* try { // try from 00384cd8 to 00484d27 has its CatchHandler @ 00384c98 */ + lVar38 = *(long *)(puVar34 + 0x58); + pcVar14 = *(char **)(puVar34 + 0x20); + iVar11 = (int)(*(long *)(puVar34 + 0x22) - (long)pcVar14); + if (lVar38 == 0) { + if (*(FILE **)(puVar34 + 0x1a) == (FILE *)0x0) { + lVar38 = *(long *)(puVar34 + 0x1c); + if (lVar38 == 0) { + local_3070 = lVar38; + local_3068 = lVar38; + pcVar14 = (char *)cv::String::allocate((String *)&local_3070,0x19); + cVar26 = s_The_storage_is_not_opened_00470830[0x18]; + uVar20 = s_The_storage_is_not_opened_00470830._8_8_; + uVar15 = s_The_storage_is_not_opened_00470830._0_8_; + /* try { // try from 003857b4 to 004857b7 has its CatchHandler @ 003858e0 */ + *(undefined8 *)(pcVar14 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar14[0x18] = cVar26; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + cv::error(-2,(String *)&local_3070,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x11d); + cv::String::deallocate((String *)&local_3070); + goto LAB_00385158; + } + pcVar14 = (char *)gzgets(lVar38,pcVar14, + *(long *)(puVar34 + 0x22) - (long)pcVar14 & 0xffffffff); + } + else { + /* try { // try from 00384f10 to 00484f13 has its CatchHandler @ 003859f4 */ + pcVar14 = fgets(pcVar14,iVar11,*(FILE **)(puVar34 + 0x1a)); + } + if (pcVar14 == (char *)0x0) { +LAB_00385158: + pcVar14 = *(char **)(puVar34 + 0x20); + builtin_strncpy(pcVar14,"...",4); + puVar34[0x26] = 1; + uVar31 = (uint)*pcVar14; + goto LAB_00384dd0; + } + } + else { + uVar25 = *(ulong *)(puVar34 + 0x5c); + uVar30 = *(ulong *)(puVar34 + 0x5a); + uVar32 = uVar25; + if ((uVar30 <= uVar25) || (iVar11 = iVar11 + -1, iVar11 < 1)) { +LAB_00385150: + *pcVar14 = '\0'; + *(ulong *)(puVar34 + 0x5c) = uVar32; + goto LAB_00385158; + } + cVar26 = *(char *)(lVar38 + uVar25); + uVar32 = uVar25 + 1; + if (cVar26 == '\0') goto LAB_00385150; + *pcVar14 = cVar26; + if (cVar26 == '\n') { + pcVar14[1] = '\0'; + *(ulong *)(puVar34 + 0x5c) = uVar32; + } + else { + iVar29 = 1; + do { + /* try { // try from 00384d54 to 00484d57 has its CatchHandler @ 003859d8 */ + uVar28 = uVar32; + if ((uVar32 == uVar30) || (iVar11 <= iVar29)) break; + cVar26 = *(char *)(lVar38 + uVar32); + uVar28 = uVar32 + 1; + if (cVar26 == '\0') break; + pcVar14[uVar32 - uVar25] = cVar26; + iVar29 = iVar29 + 1; + uVar32 = uVar28; + } while (cVar26 != '\n'); + /* try { // try from 00384d5c to 00484d83 has its CatchHandler @ 00384c98 */ + pcVar14[iVar29] = '\0'; + *(ulong *)(puVar34 + 0x5c) = uVar28; + } + } + sVar13 = strlen(pcVar14); + if ((pcVar14[(long)(int)sVar13 + -1] != '\r') && + (pcVar14[(long)(int)sVar13 + -1] != '\n')) { + if (*(long *)(puVar34 + 0x58) == 0) { + if (*(FILE **)(puVar34 + 0x1a) != (FILE *)0x0) { + uVar31 = feof(*(FILE **)(puVar34 + 0x1a)); + goto LAB_00384eb8; + } + if (*(long *)(puVar34 + 0x1c) != 0) { + uVar31 = gzeof(); + goto LAB_00384eb8; + } + } + else { + uVar31 = (uint)(*(ulong *)(puVar34 + 0x5a) <= *(ulong *)(puVar34 + 0x5c)); +LAB_00384eb8: + if (uVar31 != 0) goto LAB_00384d84; + } + sprintf(acStack_2450,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],"Too long string or a last string w/o newline"); + cvError(0xffffff2c,&DAT_00472ad0,acStack_2450, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3d9) + ; + } +LAB_00384d84: + /* try { // try from 00384d88 to 00484da7 has its CatchHandler @ 003859b4 */ + puVar34[0x25] = puVar34[0x25] + 1; + uVar31 = (uint)*pcVar14; + } + else { + if (uVar31 == 9) { + pcVar22 = "Tabs are prohibited in YAML!"; + } + else { + pcVar22 = "Invalid character"; + } + /* try { // try from 00384c50 to 00484c53 has its CatchHandler @ 00384520 */ + /* catch() { ... } // from try @ 003846d0 with catch @ 00384c54 + catch() { ... } // from try @ 003847ac with catch @ 00384c54 + catch() { ... } // from try @ 003848a0 with catch @ 00384c54 + catch() { ... } // from try @ 003849d4 with catch @ 00384c54 + catch() { ... } // from try @ 00384b78 with catch @ 00384c54 + catch() { ... } // from try @ 00384be8 with catch @ 00384c54 */ + /* catch() { ... } // from try @ 00384738 with catch @ 00384c5c */ + sprintf(acStack_2050,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],pcVar22); + /* catch() { ... } // from try @ 00384be0 with catch @ 00384c80 */ + cvError(0xffffff2c,&DAT_00472ad0,acStack_2050, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3df); + uVar31 = (uint)*pcVar14; + } + goto LAB_00384c10; + } + if ((long)pcVar14 - *(long *)(puVar34 + 0x20) < 0) { + sprintf(acStack_2850,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],"Incorrect indentation"); + cvError(0xffffff2c,&DAT_00472ad0,acStack_2850, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3c5); + uVar31 = (uint)*pcVar14; + } +LAB_00384dd0: + if (uVar31 == 0x25) { + iVar11 = memcmp(pcVar14,"%YAML:",6); + if ((iVar11 == 0) && (iVar11 = memcmp(pcVar14,"%YAML:1.",8), iVar11 != 0)) { + sprintf(acStack_1c50,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],"Unsupported YAML version (it must be 1.x)"); + cvError(0xffffff2c,&DAT_00472b80,acStack_1c50, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x550); + } + *pcVar14 = '\0'; + uVar31 = 0; + goto LAB_00384c10; + } + if (uVar31 != 0x2d) { + uVar37 = uVar31 & 0xff; + if (9 < ((uVar31 & 0xff) - 0x30 & 0xff)) goto LAB_00385188; + goto LAB_00384df4; + } + iVar11 = memcmp(pcVar14,&DAT_004720e8,3); + if (iVar11 == 0) { + uVar31 = (uint)pcVar14[3]; + pcVar22 = pcVar14 + 3; + goto LAB_00384e10; + } + pcVar22 = pcVar14; + if (!bVar9) goto LAB_00384c10; + } +LAB_00384e10: + /* try { // try from 00384e10 to 00484e93 has its CatchHandler @ 003859ec */ + while (uVar31 == 0x20) { + uVar31 = (uint)pcVar22[1]; + pcVar22 = pcVar22 + 1; + } + if (uVar31 == 0x23) { + if (0x7fffffff < (long)pcVar22 - *(long *)(puVar34 + 0x20)) goto LAB_00385018; + uVar31 = 0; + /* try { // try from 00384ff8 to 00485037 has its CatchHandler @ 00384c98 */ + *pcVar22 = '\0'; + } + else if (0x1f < (uVar31 & 0xff)) { + if ((long)pcVar22 - *(long *)(puVar34 + 0x20) < 0) { + sprintf(acStack_1050,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],"Incorrect indentation"); + /* try { // try from 00385398 to 0048539b has its CatchHandler @ 003859d0 */ + cvError(0xffffff2c,&DAT_00472ad0,acStack_1050, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3c5); + } +LAB_00385018: + iVar11 = memcmp(pcVar22,&DAT_00471a90,3); + if (iVar11 != 0) goto LAB_003852f0; + goto LAB_00385030; + } + if (((uVar31 != 0) && (uVar31 != 10)) && (uVar31 != 0xd)) { + if (uVar31 == 9) { + /* try { // try from 0038504c to 0048504f has its CatchHandler @ 003859f4 */ + pcVar14 = "Tabs are prohibited in YAML!"; + } + else { + pcVar14 = "Invalid character"; + } + sprintf((char *)&local_850,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],pcVar14); + cvError(0xffffff2c,&DAT_00472ad0,&local_850, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3df); + uVar31 = (uint)*pcVar22; + goto LAB_00384e10; + } + lVar38 = *(long *)(puVar34 + 0x58); + pcVar22 = *(char **)(puVar34 + 0x20); + iVar11 = (int)*(undefined8 *)(puVar34 + 0x22) - (int)pcVar22; + if (lVar38 == 0) { + if (*(FILE **)(puVar34 + 0x1a) == (FILE *)0x0) { + lVar38 = *(long *)(puVar34 + 0x1c); + if (lVar38 == 0) { + local_3060 = lVar38; + local_3058 = lVar38; + /* try { // try from 00385830 to 00485833 has its CatchHandler @ 003859d0 */ + pcVar14 = (char *)cv::String::allocate((String *)&local_3060,0x19); + cVar26 = s_The_storage_is_not_opened_00470830[0x18]; + uVar20 = s_The_storage_is_not_opened_00470830._8_8_; + uVar15 = s_The_storage_is_not_opened_00470830._0_8_; + /* try { // try from 0038583c to 0048583f has its CatchHandler @ 003859f4 */ + /* try { // try from 00385848 to 0048584b has its CatchHandler @ 00384c98 */ + /* try { // try from 00385854 to 00485857 has its CatchHandler @ 003859b4 */ + /* try { // try from 00385860 to 00485863 has its CatchHandler @ 003859d0 */ + *(undefined8 *)(pcVar14 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar14[0x18] = cVar26; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + cv::error(-2,(String *)&local_3060,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x11d) + ; + cv::String::deallocate((String *)&local_3060); + goto LAB_00385280; + } + pcVar22 = (char *)gzgets(lVar38,pcVar22); + } + else { + pcVar22 = fgets(pcVar22,iVar11,*(FILE **)(puVar34 + 0x1a)); + } + if (pcVar22 == (char *)0x0) goto LAB_00385280; +LAB_00384fac: + sVar13 = strlen(pcVar22); + if ((pcVar22[(long)(int)sVar13 + -1] != '\r') && (pcVar22[(long)(int)sVar13 + -1] != '\n') + ) { + if (*(long *)(puVar34 + 0x58) == 0) { + if (*(FILE **)(puVar34 + 0x1a) != (FILE *)0x0) { + /* try { // try from 0038526c to 00485283 has its CatchHandler @ 00384c98 */ + uVar31 = feof(*(FILE **)(puVar34 + 0x1a)); + goto LAB_0038506c; + } + if (*(long *)(puVar34 + 0x1c) != 0) { + uVar31 = gzeof(); + goto LAB_0038506c; + } + } + else { + uVar31 = (uint)(*(ulong *)(puVar34 + 0x5a) <= *(ulong *)(puVar34 + 0x5c)); +LAB_0038506c: + if (uVar31 != 0) goto LAB_00384fcc; + } + sprintf(acStack_c50,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],"Too long string or a last string w/o newline"); + cvError(0xffffff2c,&DAT_00472ad0,acStack_c50, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x3d9); + } +LAB_00384fcc: + puVar34[0x25] = puVar34[0x25] + 1; + uVar31 = (uint)*pcVar22; + goto LAB_00384e10; + } + uVar25 = *(ulong *)(puVar34 + 0x5c); + uVar30 = *(ulong *)(puVar34 + 0x5a); + uVar32 = uVar25; + if ((uVar25 < uVar30) && (iVar11 = iVar11 + -1, 0 < iVar11)) { + cVar26 = *(char *)(lVar38 + uVar25); + uVar32 = uVar25 + 1; + if (cVar26 != '\0') { + *pcVar22 = cVar26; + if (cVar26 == '\n') { + pcVar22[1] = '\0'; + *(ulong *)(puVar34 + 0x5c) = uVar32; + } + else { + iVar29 = 1; + do { + uVar28 = uVar32; + if ((uVar32 == uVar30) || (iVar11 <= iVar29)) break; + cVar26 = *(char *)(lVar38 + uVar32); + uVar28 = uVar32 + 1; + /* try { // try from 00384f84 to 00484f87 has its CatchHandler @ 003859b4 */ + if (cVar26 == '\0') break; + pcVar22[uVar32 - uVar25] = cVar26; + iVar29 = iVar29 + 1; + uVar32 = uVar28; + } while (cVar26 != '\n'); + pcVar22[iVar29] = '\0'; + *(ulong *)(puVar34 + 0x5c) = uVar28; + } + goto LAB_00384fac; + } + } + *pcVar22 = '\0'; + *(ulong *)(puVar34 + 0x5c) = uVar32; +LAB_00385280: + pcVar22 = *(char **)(puVar34 + 0x20); + builtin_strncpy(pcVar22,"...",4); + /* try { // try from 003852ac to 004852f7 has its CatchHandler @ 003859fc */ + puVar34[0x26] = 1; + iVar11 = memcmp(pcVar22,&DAT_00471a90,3); + if (iVar11 != 0) { +LAB_003852f0: + puVar19 = (uint *)cvSeqPush(*(undefined8 *)(puVar34 + 0xc),0); + uVar15 = FUN_00380620(puVar34,pcVar22,puVar19,0,0); + if ((*puVar19 & 7) < 5) { + sprintf((char *)&local_450,"%s(%d): %s",*(undefined8 *)(puVar34 + 0x18), + (ulong)(uint)puVar34[0x25],&DAT_00472150); + cvError(0xffffff2c,&DAT_00472b80,&local_450, + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x571); + } + pcVar22 = (char *)FUN_0037220c(puVar34,uVar15,0); + if (pcVar22 == (char *)0x0) goto LAB_003852b8; +LAB_00385030: + if (puVar34[0x26] != 0) goto LAB_003852b8; + pcVar14 = pcVar22 + 3; + /* try { // try from 00385040 to 00485043 has its CatchHandler @ 003859b4 */ + uVar31 = (uint)pcVar22[3]; + bVar9 = false; + goto LAB_00384c10; + } + } +LAB_003852b8: + cv::cvFree_(*(void **)(local_30a0 + 0x20)); + *(undefined8 *)(local_30a0 + 0x20) = 0; + *(undefined8 *)(local_30a0 + 0x22) = 0; + *(undefined8 *)(local_30a0 + 0x1e) = 0; + } + else { + puVar16 = operator_new(0x50); + *puVar16 = 0; + puVar16[2] = 0; + puVar16[3] = 0; + puVar16[4] = 0; + puVar16[5] = 0; + /* try { // try from 00384508 to 0048450b has its CatchHandler @ 00383ffc */ + puVar16[6] = 0; + /* catch() { ... } // from try @ 00384114 with catch @ 0038450c + catch() { ... } // from try @ 003843dc with catch @ 0038450c + catch() { ... } // from try @ 00384474 with catch @ 0038450c + catch() { ... } // from try @ 003844b8 with catch @ 0038450c */ + puVar16[7] = 0; + puVar16[8] = 0; + /* catch() { ... } // from try @ 00384080 with catch @ 00384514 + catch() { ... } // from try @ 00384188 with catch @ 00384514 + catch() { ... } // from try @ 00384250 with catch @ 00384514 + catch() { ... } // from try @ 00384448 with catch @ 00384514 */ + puVar16[9] = 0; + puVar16[1] = 8; + pvVar17 = operator_new(0x40); + /* catch() { ... } // from try @ 00384598 with catch @ 00384520 + catch() { ... } // from try @ 003847d8 with catch @ 00384520 + catch() { ... } // from try @ 003849f4 with catch @ 00384520 + catch() { ... } // from try @ 00384bf8 with catch @ 00384520 + catch() { ... } // from try @ 00384c50 with catch @ 00384520 */ + *puVar16 = pvVar17; + lVar38 = (puVar16[1] - 1 >> 1) * 8; + pvVar18 = operator_new(0x200); + *(void **)((long)pvVar17 + lVar38) = pvVar18; + puVar16[5] = (void *)((long)pvVar17 + lVar38); + lVar24 = *(long *)((long)pvVar17 + lVar38); + puVar16[3] = lVar24; + puVar16[4] = lVar24 + 0x200; + puVar16[9] = (void *)((long)pvVar17 + lVar38); + lVar38 = *(long *)((long)pvVar17 + lVar38); + puVar16[7] = lVar38; + puVar16[8] = lVar38 + 0x200; + puVar16[6] = lVar38; + puVar16[2] = lVar24; + *(undefined8 **)(local_30a0 + 0x5e) = puVar16; + /* try { // try from 00384598 to 0048459b has its CatchHandler @ 00384520 */ + if (((param_3 & 0x38) == 0) && (lVar38 = -4, param_1 != (char *)0x0)) { +LAB_003845a0: + puVar34 = local_30a0; + pcVar14 = param_1 + lVar38 + sVar13; + uVar31 = 0x10; + if (param_1 <= pcVar14) { + uVar37 = 8; + iVar11 = memcmp(pcVar14,&DAT_00471eb8,4); + uVar31 = uVar37; + if ((iVar11 != 0) && (iVar11 = memcmp(pcVar14,&DAT_00471ec0,4), iVar11 != 0)) { + /* try { // try from 00385b10 to 00485b2f has its CatchHandler @ 0038602c */ + iVar11 = memcmp(pcVar14,&DAT_00471ec8,4); + uVar31 = 0x10; + if (iVar11 == 0) { + uVar31 = uVar37; + } + } + } + } + else { + puVar34 = local_30a0; + uVar31 = 8; + if ((param_3 & 0x38) != 0) { +LAB_00384cbc: + puVar34 = local_30a0; + uVar31 = param_3 & 0x38; + } + } + puVar34[1] = uVar31; + if (uVar31 == 8) { + lVar38 = 0x6400; + uVar32 = 0x6800; + if (bVar9) goto LAB_00384840; + uVar15 = 0x28; + } + else { + lVar38 = 0x4400; + uVar32 = 0x4800; + if (bVar9) { +LAB_00384840: + fseek(*(FILE **)(puVar34 + 0x1a),0,2); + uVar15 = 4; + puVar34 = local_30a0; + if (local_30a0[1] == 8) { + uVar15 = 0x28; + } + } + else { + uVar15 = 4; + } + } + uVar15 = cvCreateSeq(0,0x60,uVar15,*(undefined8 *)(puVar34 + 4)); + puVar33 = local_30a0; + *(undefined8 *)(puVar34 + 0xe) = uVar15; + local_30a0[3] = 1; + local_30a0[0x10] = 0; + local_30a0[0x11] = 0x20; + uVar15 = cv::cvAlloc(uVar32); + puVar34 = local_30a0; + *(undefined8 *)(puVar33 + 0x20) = uVar15; + *(undefined8 *)(puVar33 + 0x1e) = uVar15; + *(long *)(local_30a0 + 0x22) = *(long *)(local_30a0 + 0x20) + lVar38; + if (local_30a0[1] == 8) { + if (*(FILE **)(local_30a0 + 0x1a) == (FILE *)0x0) { + uVar15 = cvCreateChildMemStorage(*(undefined8 *)(local_30a0 + 4)); + *(undefined8 *)(puVar34 + 8) = uVar15; +LAB_00384974: + if (param_4 == (char *)0x0) { + FUN_0037127c(local_30a0,"\n"); + } + else { + iVar11 = strcmp(param_4,"UTF-16"); + if (((iVar11 == 0) || (iVar11 = strcmp(param_4,"utf-16"), iVar11 == 0)) || + (iVar11 = strcmp(param_4,"Utf-16"), iVar11 == 0)) { + cvReleaseFileStorage(&local_30a0); + /* catch() { ... } // from try @ 00384d88 with catch @ 003859b4 + catch() { ... } // from try @ 00384f84 with catch @ 003859b4 + catch() { ... } // from try @ 00385040 with catch @ 003859b4 + catch() { ... } // from try @ 003854ac with catch @ 003859b4 + catch() { ... } // from try @ 00385590 with catch @ 003859b4 + catch() { ... } // from try @ 00385854 with catch @ 003859b4 */ + local_450 = (char *)0x0; + /* catch() { ... } // from try @ 003855f8 with catch @ 003859bc */ + local_448 = (char *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_450,0x39); + cVar26 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8[0x38]; + uVar5 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._40_8_; + uVar4 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._32_8_; + uVar3 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._24_8_; + uVar2 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._16_8_; + uVar20 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._8_8_; + uVar15 = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._0_8_; + /* catch() { ... } // from try @ 00385398 with catch @ 003859d0 + catch() { ... } // from try @ 00385668 with catch @ 003859d0 + catch() { ... } // from try @ 00385830 with catch @ 003859d0 + catch() { ... } // from try @ 00385860 with catch @ 003859d0 + catch() { ... } // from try @ 003858b4 with catch @ 003859d0 */ + /* catch() { ... } // from try @ 00384d54 with catch @ 003859d8 */ + /* try { // try from 003859e8 to 004859eb has its CatchHandler @ 00384c98 */ + /* catch() { ... } // from try @ 00384e10 with catch @ 003859ec + catch() { ... } // from try @ 00385560 with catch @ 003859ec + catch() { ... } // from try @ 003855bc with catch @ 003859ec + catch() { ... } // from try @ 00385600 with catch @ 003859ec + catch() { ... } // from try @ 00385894 with catch @ 003859ec + catch() { ... } // from try @ 003858cc with catch @ 003859ec */ + /* catch() { ... } // from try @ 00384db8 with catch @ 003859f4 + catch() { ... } // from try @ 00384f10 with catch @ 003859f4 + catch() { ... } // from try @ 0038504c with catch @ 003859f4 + catch() { ... } // from try @ 00385438 with catch @ 003859f4 + catch() { ... } // from try @ 003855a0 with catch @ 003859f4 + catch() { ... } // from try @ 0038583c with catch @ 003859f4 */ + /* catch() { ... } // from try @ 003852ac with catch @ 003859fc */ + /* catch() { ... } // from try @ 00385a5c with catch @ 00385a00 + catch() { ... } // from try @ 00385ab8 with catch @ 00385a00 + catch() { ... } // from try @ 00385c0c with catch @ 00385a00 + catch() { ... } // from try @ 00385f84 with catch @ 00385a00 + catch() { ... } // from try @ 00386004 with catch @ 00385a00 + catch() { ... } // from try @ 00386020 with catch @ 00385a00 + catch() { ... } // from try @ 00386050 with catch @ 00385a00 + catch() { ... } // from try @ 0038608c with catch @ 00385a00 */ + *(undefined8 *)(pcVar14 + 0x30) = s_UTF_16_XML_encoding_is_not_suppo_00471ee8._48_8_; + pcVar14[0x38] = cVar26; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + *(undefined8 *)(pcVar14 + 0x10) = uVar2; + *(undefined8 *)(pcVar14 + 0x18) = uVar3; + *(undefined8 *)(pcVar14 + 0x20) = uVar4; + *(undefined8 *)(pcVar14 + 0x28) = uVar5; + cv::error(-5,(String *)&local_450, + "CvFileStorage* cvOpenFileStorage(const char*, CvMemStorage*, int, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xad5 + ); + cv::String::deallocate((String *)&local_450); + } + sVar13 = strlen(param_4); + if (999 < sVar13) { + /* try { // try from 003849d4 to 004849e3 has its CatchHandler @ 00384c54 */ + local_450 = (char *)0x0; + local_448 = (char *)0x0; + pcVar14 = (char *)cv::String::allocate((String *)&local_450,0x17); + cVar26 = s_strlen_encoding__<_1000_00471f28[0x16]; + uVar8 = s_strlen_encoding__<_1000_00471f28._20_2_; + uVar20 = s_strlen_encoding__<_1000_00471f28._8_8_; + uVar15 = s_strlen_encoding__<_1000_00471f28._0_8_; + /* try { // try from 003849f4 to 004849f7 has its CatchHandler @ 00384520 */ + *(undefined4 *)(pcVar14 + 0x10) = s_strlen_encoding__<_1000_00471f28._16_4_; + *(undefined2 *)(pcVar14 + 0x14) = uVar8; + pcVar14[0x16] = cVar26; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + cv::error(-0xd7,(String *)&local_450, + "CvFileStorage* cvOpenFileStorage(const char*, CvMemStorage*, int, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xad8 + ); + cv::String::deallocate((String *)&local_450); + } + sprintf((char *)&local_450,"\n",param_4); + FUN_0037127c(local_30a0,(String *)&local_450); + } + FUN_0037127c(local_30a0,"\n"); + } + else { + lVar38 = ftell(*(FILE **)(local_30a0 + 0x1a)); + puVar34 = local_30a0; + uVar15 = cvCreateChildMemStorage(*(undefined8 *)(local_30a0 + 4)); + *(undefined8 *)(puVar34 + 8) = uVar15; + if (bVar9 <= (lVar38 == 0)) goto LAB_00384974; + iVar11 = (int)lVar38; + if (0x400 < iVar11) { + iVar11 = 0x400; + } + iVar29 = -1; + local_450 = _LAB_00472190; + local_448 = _LAB_00472198; + local_440 = _LAB_004721a0; + iVar1 = iVar11 + -1; + fseek(*(FILE **)(local_30a0 + 0x1a),(long)-iVar11,2); + pcVar14 = (char *)cv::cvAlloc((long)(iVar11 + 2)); + lVar21 = ftell(*(FILE **)(local_30a0 + 0x1a)); + lVar38 = *(long *)(local_30a0 + 0x58); + lVar24 = local_850; + while (local_850 = lVar24, lVar38 == 0) { + if (*(FILE **)(local_30a0 + 0x1a) == (FILE *)0x0) { + local_850 = *(long *)(local_30a0 + 0x1c); + if (local_850 == 0) { + local_848 = local_850; + pcVar22 = (char *)cv::String::allocate((String *)&local_850,0x19); + cVar26 = s_The_storage_is_not_opened_00470830[0x18]; + uVar20 = s_The_storage_is_not_opened_00470830._8_8_; + uVar15 = s_The_storage_is_not_opened_00470830._0_8_; + /* try { // try from 00385f84 to 00485f87 has its CatchHandler @ 00385a00 */ + *(undefined8 *)(pcVar22 + 0x10) = s_The_storage_is_not_opened_00470830._16_8_; + pcVar22[0x18] = cVar26; + *(undefined8 *)pcVar22 = uVar15; + *(undefined8 *)(pcVar22 + 8) = uVar20; + cv::error(-2,(String *)&local_850,"char* icvGets(CvFileStorage*, char*, int)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp", + 0x11d); + cv::String::deallocate((String *)&local_850); + goto LAB_00385d98; + } + pcVar22 = (char *)gzgets(local_850,pcVar14,iVar11); + local_850 = lVar24; + } + else { + pcVar22 = fgets(pcVar14,iVar11,*(FILE **)(local_30a0 + 0x1a)); + } + pcVar35 = pcVar22; + if (pcVar22 == (char *)0x0) goto LAB_00385d98; +LAB_00385d54: + while (pcVar22 = strstr(pcVar22,(char *)&local_450), pcVar22 != (char *)0x0) { + iVar29 = (int)lVar21 + ((int)pcVar22 - (int)pcVar35); + pcVar22 = pcVar22 + 0x11; + } + lVar21 = ftell(*(FILE **)(local_30a0 + 0x1a)); + lVar24 = local_850; + lVar38 = *(long *)(local_30a0 + 0x58); + } + uVar25 = *(ulong *)(local_30a0 + 0x5c); + uVar30 = *(ulong *)(local_30a0 + 0x5a); + uVar32 = uVar25; + if ((uVar25 < uVar30) && (0 < iVar1)) { + cVar26 = *(char *)(lVar38 + uVar25); + uVar32 = uVar25 + 1; + if (cVar26 != '\0') { + *pcVar14 = cVar26; + pcVar22 = pcVar14; + pcVar35 = pcVar14; + if (cVar26 == '\n') { + lVar38 = 1; + } + else { + iVar27 = 1; + uVar28 = uVar32; + do { + uVar32 = uVar28; + if (uVar28 == uVar30) { +LAB_00385d30: + pcVar14[iVar27] = '\0'; + *(ulong *)(local_30a0 + 0x5c) = uVar32; + if (iVar27 != 0) goto LAB_00385d54; + goto LAB_00385d98; + } + if (iVar27 == iVar1) { + pcVar14[iVar1] = '\0'; + *(ulong *)(local_30a0 + 0x5c) = uVar28; + goto LAB_00385d54; + } + cVar26 = *(char *)(lVar38 + uVar28); + uVar32 = uVar28 + 1; + if (cVar26 == '\0') goto LAB_00385d30; + pcVar14[uVar28 - uVar25] = cVar26; + iVar27 = iVar27 + 1; + uVar28 = uVar32; + } while (cVar26 != '\n'); + lVar38 = (long)iVar27; + } + pcVar14[lVar38] = '\0'; + *(ulong *)(local_30a0 + 0x5c) = uVar32; + goto LAB_00385d54; + } + } + *pcVar14 = '\0'; + *(ulong *)(local_30a0 + 0x5c) = uVar32; +LAB_00385d98: + cv::cvFree_(pcVar14); + if (iVar29 < 0) { + cvReleaseFileStorage(&local_30a0); + local_850 = 0; + local_848 = 0; + pcVar14 = (char *)cv::String::allocate((String *)&local_850,0x35); + cVar26 = s_Could_not_find_<_opencv_storage>_00471f98[0x34]; + uVar5 = s_Could_not_find_<_opencv_storage>_00471f98._40_8_; + uVar4 = s_Could_not_find_<_opencv_storage>_00471f98._32_8_; + uVar3 = s_Could_not_find_<_opencv_storage>_00471f98._24_8_; + uVar2 = s_Could_not_find_<_opencv_storage>_00471f98._16_8_; + uVar20 = s_Could_not_find_<_opencv_storage>_00471f98._8_8_; + uVar15 = s_Could_not_find_<_opencv_storage>_00471f98._0_8_; + *(undefined4 *)(pcVar14 + 0x30) = s_Could_not_find_<_opencv_storage>_00471f98._48_4_; + pcVar14[0x34] = cVar26; + *(undefined8 *)pcVar14 = uVar15; + *(undefined8 *)(pcVar14 + 8) = uVar20; + *(undefined8 *)(pcVar14 + 0x10) = uVar2; + *(undefined8 *)(pcVar14 + 0x18) = uVar3; + *(undefined8 *)(pcVar14 + 0x20) = uVar4; + *(undefined8 *)(pcVar14 + 0x28) = uVar5; + cv::error(-2,(String *)&local_850, + "CvFileStorage* cvOpenFileStorage(const char*, CvMemStorage*, int, const char*)" + ,"/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0xafe); + cv::String::deallocate((String *)&local_850); + /* try { // try from 00385f3c to 00485f3f has its CatchHandler @ 0038602c */ + } + puVar34 = local_30a0; + if (*(FILE **)(local_30a0 + 0x1a) == (FILE *)0x0) { + if (*(long *)(local_30a0 + 0x1c) != 0) { + gzclose(); + } + } + else { + fclose(*(FILE **)(local_30a0 + 0x1a)); + } + puVar33 = local_30a0; + pcVar14 = *(char **)(local_30a0 + 0x18); + *(undefined8 *)(puVar34 + 0x1a) = 0; + *(undefined8 *)(puVar34 + 0x1c) = 0; + *(undefined8 *)(puVar34 + 0x58) = 0; + /* try { // try from 00385dd4 to 00485dd7 has its CatchHandler @ 00386054 */ + *(undefined8 *)(puVar34 + 0x5c) = 0; + *(undefined1 *)(puVar34 + 0x60) = 0; + pFVar23 = fopen(pcVar14,"r+t"); + *(FILE **)(puVar33 + 0x1a) = pFVar23; + fseek(*(FILE **)(local_30a0 + 0x1a),(long)iVar29,0); + FUN_0037127c(local_30a0," "); + fseek(*(FILE **)(local_30a0 + 0x1a),0,2); + FUN_0037127c(local_30a0,"\n"); + } + *(code **)(local_30a0 + 0x4a) = FUN_0037298c; + *(code **)(local_30a0 + 0x4c) = FUN_00372124; + *(code **)(local_30a0 + 0x4e) = FUN_00372d90; + *(code **)(local_30a0 + 0x50) = FUN_003730f4; + *(code **)(local_30a0 + 0x52) = FUN_003738c4; + *(code **)(local_30a0 + 0x54) = FUN_00373f78; + *(code **)(local_30a0 + 0x56) = FUN_00373784; + } + else { + if (bVar9) { + FUN_0037127c(local_30a0,&DAT_00472000); + } + else { + FUN_0037127c(local_30a0,"%YAML:1.0\n"); + } + *(code **)(local_30a0 + 0x4a) = FUN_00375c8c; + *(code **)(local_30a0 + 0x4c) = FUN_00372ba4; + *(code **)(local_30a0 + 0x4e) = FUN_00375c20; + *(code **)(local_30a0 + 0x50) = FUN_00375acc; + *(code **)(local_30a0 + 0x52) = FUN_003756dc; + *(code **)(local_30a0 + 0x54) = FUN_0037457c; + *(code **)(local_30a0 + 0x56) = FUN_0037352c; + } + } + /* try { // try from 003846d0 to 004846f3 has its CatchHandler @ 00384c54 */ + *(undefined1 *)(local_30a0 + 0x60) = 1; + } + iVar11 = cvGetErrStatus(); + puVar34 = local_30a0; + if (iVar11 < 0) { +LAB_00384924: + cvReleaseFileStorage(&local_30a0); + } + else { + if (*(FILE **)(local_30a0 + 0x1a) == (FILE *)0x0) { + if (*(long *)(local_30a0 + 0x1c) == 0) { + if ((*(long *)(local_30a0 + 0x5e) == 0) && (*(long *)(local_30a0 + 0x58) == 0)) + goto LAB_00384924; + /* try { // try from 00385b34 to 00485b6f has its CatchHandler @ 00386054 */ + if (local_30a0[2] != 0) { + return local_30a0; + } + } + else { + if (local_30a0[2] != 0) { + return local_30a0; + } + gzclose(); + } + } + else { + if (local_30a0[2] != 0) { + return local_30a0; + } + /* try { // try from 003848f0 to 00484943 has its CatchHandler @ 00384c10 */ + fclose(*(FILE **)(local_30a0 + 0x1a)); + } + *(undefined8 *)(puVar34 + 0x1a) = 0; + *(undefined8 *)(puVar34 + 0x1c) = 0; + *(undefined8 *)(puVar34 + 0x58) = 0; + *(undefined8 *)(puVar34 + 0x5c) = 0; + *(undefined1 *)(puVar34 + 0x60) = 0; + *(undefined1 *)(local_30a0 + 0x60) = 1; + } + return local_30a0; +} + + +================================================================== + +### FUNC 00385fe0 (444 bytes) name=open + +/* cv::FileStorage::open(cv::String const&, int, cv::String const&) */ + +undefined8 __thiscall +cv::FileStorage::open(FileStorage *this,String *param_1,int param_2,String *param_3) + +{ + long *plVar1; + bool bVar2; + char cVar3; + long *plVar4; + undefined1 *puVar5; + long lVar6; + undefined8 *puVar7; + undefined1 *puVar8; + + /* try { // try from 00385ff0 to 00485ff3 has its CatchHandler @ 0038602c */ + /* try { // try from 00386004 to 00486007 has its CatchHandler @ 00385a00 */ + if (*(code **)(*(long *)this + 0x20) == release) { + plVar4 = *(long **)(this + 8); + /* try { // try from 00386010 to 00486013 has its CatchHandler @ 00386054 */ + if (plVar4 != (long *)0x0) { + plVar1 = plVar4 + 1; + do { + lVar6 = *plVar1; + /* try { // try from 00386020 to 00486023 has its CatchHandler @ 00385a00 */ + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar2) { + *(int *)plVar1 = (int)lVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* catch() { ... } // from try @ 00385b10 with catch @ 0038602c + catch() { ... } // from try @ 00385be0 with catch @ 0038602c + catch() { ... } // from try @ 00385f3c with catch @ 0038602c + catch() { ... } // from try @ 00385ff0 with catch @ 0038602c */ + if ((int)lVar6 == 1) { + (**(code **)(*plVar4 + 0x10))(); + } + } + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x30) = *(undefined8 *)(this + 0x28); + *(undefined4 *)(this + 0x40) = 0; + puVar5 = *(undefined1 **)param_1; + } + else { + (**(code **)(*(long *)this + 0x20))(); + puVar5 = *(undefined1 **)param_1; + } + if (puVar5 == (undefined1 *)0x0) { + /* try { // try from 00386154 to 00486157 has its CatchHandler @ 003863ec */ + puVar5 = &DAT_00472008; + } + /* try { // try from 00386050 to 00486053 has its CatchHandler @ 00385a00 */ + puVar8 = (undefined1 *)0x0; + /* catch() { ... } // from try @ 00385b34 with catch @ 00386054 + catch() { ... } // from try @ 00385dd4 with catch @ 00386054 + catch() { ... } // from try @ 00386010 with catch @ 00386054 */ + if ((*(long *)(param_3 + 8) != 0) && + (puVar8 = *(undefined1 **)param_3, puVar8 == (undefined1 *)0x0)) { + puVar8 = &DAT_00472008; + } + lVar6 = cvOpenFileStorage(puVar5,0,param_2,puVar8); + if (lVar6 == 0) { + puVar7 = (undefined8 *)0x0; + } + else { + puVar7 = operator_new(0x20); + /* catch() { ... } // from try @ 00385aa8 with catch @ 0038607c */ + *(undefined4 *)(puVar7 + 1) = 1; + puVar7[2] = lVar6; + /* try { // try from 0038608c to 0048608f has its CatchHandler @ 00385a00 */ + /* catch() { ... } // from try @ 00385d3c with catch @ 00386090 */ + *puVar7 = &PTR_FUN_004f7690; + } + plVar4 = *(long **)(this + 8); + *(long *)(this + 0x10) = lVar6; + *(undefined8 **)(this + 8) = puVar7; + if (plVar4 != (long *)0x0) { + plVar1 = plVar4 + 1; + do { + lVar6 = *plVar1; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar2) { + *(int *)plVar1 = (int)lVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((int)lVar6 == 1) { + (**(code **)(*plVar4 + 0x10))(); + } + } + /* catch() { ... } // from try @ 00386108 with catch @ 003860d0 + catch() { ... } // from try @ 003862d4 with catch @ 003860d0 + catch() { ... } // from try @ 003863b4 with catch @ 003860d0 */ + if (*(code **)(*(long *)this + 0x18) == isOpened) { + if (*(long *)(this + 0x10) == 0) goto LAB_003860e8; + cVar3 = *(char *)(*(long *)(this + 0x10) + 0x180); + } + else { + /* try { // try from 00386108 to 0048610b has its CatchHandler @ 003860d0 */ + cVar3 = (**(code **)(*(long *)this + 0x18))(this); + } + if (cVar3 != '\0') { + *(undefined4 *)(this + 0x40) = 6; + /* try { // try from 00386124 to 00486127 has its CatchHandler @ 00386390 */ + return 1; + } +LAB_003860e8: + *(undefined4 *)(this + 0x40) = 0; + return 0; +} + + +================================================================== + +### FUNC 0038619c (108 bytes) name=cvTypeOf + +long cvTypeOf(long param_1) + +{ + int iVar1; + long lVar2; + + /* try { // try from 003861a8 to 004861ab has its CatchHandler @ 003863b8 */ + if (param_1 != 0) { + /* try { // try from 003861b0 to 004861ef has its CatchHandler @ 003863ec */ + for (lVar2 = *(long *)PTR_first_00501d40; lVar2 != 0; lVar2 = *(long *)(lVar2 + 0x10)) { + iVar1 = (**(code **)(lVar2 + 0x20))(param_1); + if (iVar1 != 0) { + return lVar2; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 00386208 (384 bytes) name=cvRelease + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvRelease(code *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined1 uVar3; + char cVar4; + undefined8 uVar5; + code *pcVar6; + char *pcVar7; + undefined8 *puVar8; + code *pcVar9; + code *local_10; + code *local_8; + + if (param_1 == (code *)0x0) { + local_10 = param_1; + local_8 = param_1; + puVar8 = (undefined8 *)cv::String::allocate((String *)&local_10,0x13); + uVar3 = DAT_004707e2; + uVar2 = _DAT_004707d8; + uVar1 = DAT_004707d0; + /* try { // try from 003862d4 to 004862f3 has its CatchHandler @ 003860d0 */ + /* try { // try from 003862fc to 004862ff has its CatchHandler @ 00386390 */ + *(undefined2 *)(puVar8 + 2) = DAT_004707e0; + *(undefined1 *)((long)puVar8 + 0x12) = uVar3; + *puVar8 = uVar1; + puVar8[1] = uVar2; + cv::error(-0x1b,(String *)&local_10,"void cvRelease(void**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1342); + cv::String::deallocate((String *)&local_10); + } + if (*(long *)param_1 != 0) { + pcVar6 = (code *)cvTypeOf(); + if (pcVar6 == (code *)0x0) { + local_10 = pcVar6; + local_8 = pcVar6; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar4 = s_Unknown_object_type_004721a8[0x12]; + uVar2 = s_Unknown_object_type_004721a8._8_8_; + uVar1 = s_Unknown_object_type_004721a8._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_Unknown_object_type_004721a8._16_2_; + pcVar7[0x12] = cVar4; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + cv::error(-2,(String *)&local_10,"void cvRelease(void**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1348); + cv::String::deallocate((String *)&local_10); + } + pcVar9 = *(code **)(pcVar6 + 0x28); + if (pcVar9 == (code *)0x0) { + local_10 = pcVar9; + local_8 = pcVar9; + /* try { // try from 00386260 to 00486263 has its CatchHandler @ 00386390 */ + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0x20); + uVar5 = s_release_function_pointer_is_NULL_004721c0._24_8_; + uVar2 = s_release_function_pointer_is_NULL_004721c0._16_8_; + uVar1 = s_release_function_pointer_is_NULL_004721c0._8_8_; + *(undefined8 *)pcVar7 = s_release_function_pointer_is_NULL_004721c0._0_8_; + *(undefined8 *)(pcVar7 + 8) = uVar1; + *(undefined8 *)(pcVar7 + 0x10) = uVar2; + *(undefined8 *)(pcVar7 + 0x18) = uVar5; + cv::error(-2,(String *)&local_10,"void cvRelease(void**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x134a); + cv::String::deallocate((String *)&local_10); + pcVar9 = *(code **)(pcVar6 + 0x28); + } + (*pcVar9)(param_1); + *(long *)param_1 = 0; + } + return; +} + + +================================================================== + +### FUNC 003863c4 (412 bytes) name=cvClone + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvClone(long param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + undefined2 uVar4; + undefined4 uVar5; + long lVar6; + undefined8 *puVar7; + char *pcVar8; + code *pcVar9; + code *local_10; + code *local_8; + + if (param_1 == 0) { + local_10 = (code *)param_1; + local_8 = (code *)param_1; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x16); + uVar4 = s_NULL_structure_pointer_004721e8._20_2_; + uVar2 = s_NULL_structure_pointer_004721e8._8_8_; + uVar1 = s_NULL_structure_pointer_004721e8._0_8_; + /* try { // try from 003864c4 to 004864c7 has its CatchHandler @ 003866d0 */ + /* try { // try from 003864cc to 004864ff has its CatchHandler @ 00386704 */ + *(undefined4 *)(pcVar8 + 0x10) = s_NULL_structure_pointer_004721e8._16_4_; + *(undefined2 *)(pcVar8 + 0x14) = uVar4; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10,"void* cvClone(const void*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1358); + cv::String::deallocate((String *)&local_10); + } + lVar6 = cvTypeOf(param_1); + if (lVar6 == 0) { + local_10 = (code *)lVar6; + local_8 = (code *)lVar6; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar3 = s_Unknown_object_type_004721a8[0x12]; + uVar2 = s_Unknown_object_type_004721a8._8_8_; + uVar1 = s_Unknown_object_type_004721a8._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_Unknown_object_type_004721a8._16_2_; + pcVar8[0x12] = cVar3; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(-2,(String *)&local_10,"void* cvClone(const void*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x135c); + cv::String::deallocate((String *)&local_10); + } + pcVar9 = *(code **)(lVar6 + 0x40); + /* catch() { ... } // from try @ 00386154 with catch @ 003863ec + catch() { ... } // from try @ 003861b0 with catch @ 003863ec */ + if (pcVar9 != (code *)0x0) { + /* catch() { ... } // from try @ 0038642c with catch @ 003863f4 + catch() { ... } // from try @ 003865e4 with catch @ 003863f4 + catch() { ... } // from try @ 003866cc with catch @ 003863f4 */ + (*pcVar9)(param_1); + return; + } + local_10 = pcVar9; + local_8 = pcVar9; + puVar7 = (undefined8 *)cv::String::allocate((String *)&local_10,0x1e); + uVar4 = DAT_0047221c; + uVar5 = DAT_00472218; + uVar2 = _LAB_00472208; + uVar1 = DAT_00472200; + /* try { // try from 0038642c to 0048642f has its CatchHandler @ 003863f4 */ + /* try { // try from 00386448 to 0048644b has its CatchHandler @ 003866a8 */ + puVar7[2] = DAT_00472210; + *(undefined4 *)(puVar7 + 3) = uVar5; + *(undefined2 *)((long)puVar7 + 0x1c) = uVar4; + *puVar7 = uVar1; + puVar7[1] = uVar2; + cv::error(-2,(String *)&local_10,"void* cvClone(const void*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x135e); + cv::String::deallocate((String *)&local_10); + /* try { // try from 00386478 to 0048647b has its CatchHandler @ 00386704 */ + (**(code **)(lVar6 + 0x40))(param_1); + return; +} + + +================================================================== + +### FUNC 0038659c (380 bytes) name=cvRead + +undefined8 cvRead(int *param_1,uint *param_2,undefined8 *param_3) + +{ + undefined8 uVar1; + undefined4 uVar2; + undefined2 uVar3; + char cVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + char *pcVar10; + long lVar11; + undefined8 uVar12; + int iVar13; + undefined8 local_10; + undefined8 local_8; + + if (param_1 == (int *)0x0) { + iVar13 = -0x1b; + /* catch() { ... } // from try @ 00386740 with catch @ 0038670c + catch() { ... } // from try @ 003869cc with catch @ 0038670c + catch() { ... } // from try @ 00386aa4 with catch @ 0038670c */ + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00386648; + iVar13 = -5; + } + local_10 = 0; + /* try { // try from 003865e4 to 00486603 has its CatchHandler @ 003863f4 */ + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar4 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar12 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + /* try { // try from 0038660c to 0048660f has its CatchHandler @ 003866a8 */ + *(undefined8 *)(pcVar10 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar2; + *(undefined2 *)(pcVar10 + 0x1c) = uVar3; + pcVar10[0x1e] = cVar4; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar1; + cv::error(iVar13,(String *)&local_10,"void* cvRead(CvFileStorage*, CvFileNode*, CvAttrList*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x136a); + cv::String::deallocate((String *)&local_10); +LAB_00386648: + if (param_2 == (uint *)0x0) { + uVar12 = 0; + } + else { + if (((*param_2 >> 4 & 1) == 0) || (lVar11 = *(long *)(param_2 + 2), lVar11 == 0)) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0x39); + uVar9 = s_The_node_does_not_represent_a_us_00472220._48_8_; + uVar8 = s_The_node_does_not_represent_a_us_00472220._40_8_; + uVar7 = s_The_node_does_not_represent_a_us_00472220._32_8_; + uVar6 = s_The_node_does_not_represent_a_us_00472220._24_8_; + uVar5 = s_The_node_does_not_represent_a_us_00472220._16_8_; + uVar1 = s_The_node_does_not_represent_a_us_00472220._8_8_; + uVar12 = s_The_node_does_not_represent_a_us_00472220._0_8_; + /* catch() { ... } // from try @ 00386448 with catch @ 003866a8 + catch() { ... } // from try @ 00386570 with catch @ 003866a8 + catch() { ... } // from try @ 0038660c with catch @ 003866a8 */ + /* try { // try from 003866cc to 004866cf has its CatchHandler @ 003863f4 */ + /* catch() { ... } // from try @ 003864c4 with catch @ 003866d0 */ + pcVar10[0x38] = s_The_node_does_not_represent_a_us_00472220[0x38]; + *(undefined8 *)(pcVar10 + 0x30) = uVar9; + *(undefined8 *)pcVar10 = uVar12; + *(undefined8 *)(pcVar10 + 8) = uVar1; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + *(undefined8 *)(pcVar10 + 0x20) = uVar7; + *(undefined8 *)(pcVar10 + 0x28) = uVar8; + cv::error(-2,(String *)&local_10,"void* cvRead(CvFileStorage*, CvFileNode*, CvAttrList*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1370); + cv::String::deallocate((String *)&local_10); + lVar11 = *(long *)(param_2 + 2); + /* catch() { ... } // from try @ 00386478 with catch @ 00386704 + catch() { ... } // from try @ 003864cc with catch @ 00386704 */ + } + uVar12 = (**(code **)(lVar11 + 0x30))(param_1,param_2); + if (param_3 != (undefined8 *)0x0) { + *param_3 = 0; + param_3[1] = 0; + } + } + return uVar12; +} + + +================================================================== + +### FUNC 00386740 (728 bytes) name=FUN_00386740 + +long FUN_00386740(undefined8 param_1,undefined8 param_2) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + ulong uVar9; + uint uVar10; + uint *puVar11; + void *__dest; + long lVar12; + char *pcVar13; + long lVar14; + uint uVar15; + long lVar16; + long lVar17; + int iVar18; + long lVar19; + long lVar20; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + ulong local_28; + ulong local_18; + + /* try { // try from 00386740 to 00486743 has its CatchHandler @ 0038670c */ + /* try { // try from 0038675c to 0048675f has its CatchHandler @ 00386ab8 */ + puVar11 = (uint *)cvGetFileNodeByName(param_1,param_2,"sequences"); + /* try { // try from 0038677c to 0048677f has its CatchHandler @ 00386ab0 */ + if ((puVar11 == (uint *)0x0) || ((*puVar11 & 7) != 5)) { + local_40 = 0; + local_38 = 0; + __dest = (void *)cv::String::allocate((String *)&local_40,0x5a); + memcpy(__dest, + "opencv-sequence-tree instance should contain a field \"sequences\" that should be a sequence" + ,0x5a); + /* try { // try from 003867bc to 004867bf has its CatchHandler @ 00386aa8 */ + cv::error(-0xd4,(String *)&local_40,"void* icvReadSeqTree(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1101); + cv::String::deallocate((String *)&local_40); + } + lVar20 = *(long *)(puVar11 + 4); + iVar1 = *(int *)(lVar20 + 0x28); + cvStartReadSeq(lVar20,(String *)&local_40,0); + if (iVar1 < 1) { + /* try { // try from 00386958 to 0048695b has its CatchHandler @ 00386ab8 */ + return 0; + } + /* try { // try from 00386818 to 0048681b has its CatchHandler @ 00386a34 */ + iVar18 = 0; + lVar19 = 0; + /* try { // try from 00386820 to 00486873 has its CatchHandler @ 00386aa8 */ + lVar17 = 0; + lVar16 = 0; + uVar15 = 0; + do { + uVar9 = local_28; + lVar12 = cvRead(param_1,local_28,0); + puVar11 = (uint *)cvGetFileNodeByName(param_1,uVar9,"level"); + if (puVar11 == (uint *)0x0) { + uVar10 = 0xffffffff; +LAB_00386990: + local_50 = 0; + local_48 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_50,0x38); + uVar8 = s_All_the_sequence_tree_nodes_shou_004722c0._40_8_; + uVar7 = s_All_the_sequence_tree_nodes_shou_004722c0._32_8_; + uVar6 = s_All_the_sequence_tree_nodes_shou_004722c0._24_8_; + uVar5 = s_All_the_sequence_tree_nodes_shou_004722c0._16_8_; + uVar4 = s_All_the_sequence_tree_nodes_shou_004722c0._8_8_; + uVar3 = s_All_the_sequence_tree_nodes_shou_004722c0._0_8_; + /* try { // try from 003869cc to 00486a17 has its CatchHandler @ 0038670c */ + *(undefined8 *)(pcVar13 + 0x30) = s_All_the_sequence_tree_nodes_shou_004722c0._48_8_; + *(undefined8 *)pcVar13 = uVar3; + *(undefined8 *)(pcVar13 + 8) = uVar4; + *(undefined8 *)(pcVar13 + 0x10) = uVar5; + *(undefined8 *)(pcVar13 + 0x18) = uVar6; + *(undefined8 *)(pcVar13 + 0x20) = uVar7; + *(undefined8 *)(pcVar13 + 0x28) = uVar8; + cv::error(-0xd4,(String *)&local_50,"void* icvReadSeqTree(CvFileStorage*, CvFileNode*)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x110f); + cv::String::deallocate((String *)&local_50); + } + else if ((*puVar11 & 7) == 1) { + uVar10 = puVar11[4]; +joined_r0x0038698c: + if ((int)uVar10 < 0) goto LAB_00386990; + } + else { + uVar10 = 0x7fffffff; + if ((*puVar11 & 7) == 2) { + lVar14 = lrint(*(double *)(puVar11 + 4)); + uVar10 = (uint)lVar14; + goto joined_r0x0038698c; + } + } + if (lVar17 == 0) { + lVar17 = lVar12; + } + /* try { // try from 003868e4 to 004868e7 has its CatchHandler @ 00386ab0 */ + if ((int)uVar15 < (int)uVar10) { + if (lVar16 != 0) { + *(long *)(lVar16 + 0x20) = lVar12; + } + *(undefined8 *)(lVar12 + 8) = 0; + lVar19 = lVar16; +LAB_00386854: + *(long *)(lVar12 + 0x18) = lVar19; + iVar2 = *(int *)(lVar20 + 0x2c); + } + else { + if ((int)uVar10 < (int)uVar15) { + do { + uVar15 = uVar15 - 1; + lVar16 = *(long *)(lVar16 + 0x18); + } while (uVar15 != uVar10); + lVar19 = *(long *)(lVar16 + 0x18); + *(long *)(lVar12 + 8) = lVar16; + *(long *)(lVar16 + 0x10) = lVar12; + } + else { + *(long *)(lVar12 + 8) = lVar16; + if (lVar16 == 0) goto LAB_00386854; + *(long *)(lVar16 + 0x10) = lVar12; + } + *(long *)(lVar12 + 0x18) = lVar19; + iVar2 = *(int *)(lVar20 + 0x2c); + } + local_28 = local_28 + (long)iVar2; + if (local_18 <= local_28) { + cvChangeSeqBlock((String *)&local_40,1); + } + if (iVar18 + 1 == iVar1) { + s_All_the_sequence_tree_nodes_shou_004722c0[0] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._0_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[1] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[2] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[3] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[4] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[5] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[6] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[7] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._0_8_,7); + s_All_the_sequence_tree_nodes_shou_004722c0[8] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._8_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[9] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[10] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[0xb] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[0xc] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[0xd] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[0xe] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[0xf] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._8_8_,7); + s_All_the_sequence_tree_nodes_shou_004722c0[0x10] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._16_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[0x11] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[0x12] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[0x13] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[0x14] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[0x15] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[0x16] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[0x17] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._16_8_,7); + s_All_the_sequence_tree_nodes_shou_004722c0[0x18] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._24_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[0x19] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[0x1a] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[0x1b] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[0x1c] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[0x1d] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[0x1e] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[0x1f] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._24_8_,7); + s_All_the_sequence_tree_nodes_shou_004722c0[0x20] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._32_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[0x21] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[0x22] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[0x23] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[0x24] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[0x25] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[0x26] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[0x27] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._32_8_,7); + s_All_the_sequence_tree_nodes_shou_004722c0[0x28] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._40_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[0x29] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[0x2a] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[0x2b] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[0x2c] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[0x2d] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[0x2e] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[0x2f] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._40_8_,7); + s_All_the_sequence_tree_nodes_shou_004722c0[0x30] = + (char)s_All_the_sequence_tree_nodes_shou_004722c0._48_8_; + s_All_the_sequence_tree_nodes_shou_004722c0[0x31] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,1); + s_All_the_sequence_tree_nodes_shou_004722c0[0x32] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,2); + s_All_the_sequence_tree_nodes_shou_004722c0[0x33] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,3); + s_All_the_sequence_tree_nodes_shou_004722c0[0x34] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,4); + s_All_the_sequence_tree_nodes_shou_004722c0[0x35] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,5); + s_All_the_sequence_tree_nodes_shou_004722c0[0x36] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,6); + s_All_the_sequence_tree_nodes_shou_004722c0[0x37] = + SUB81(s_All_the_sequence_tree_nodes_shou_004722c0._48_8_,7); + return lVar17; + } + iVar18 = iVar18 + 1; + lVar16 = lVar12; + uVar15 = uVar10; + } while( true ); +} + + +================================================================== + +### FUNC 00386a40 (720 bytes) name=cvWrite + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvWrite(int *param_1,undefined8 param_2,code *param_3,undefined8 param_4,undefined8 param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined4 uVar3; + undefined2 uVar4; + char cVar5; + undefined8 uVar6; + undefined8 uVar7; + char *pcVar8; + code *pcVar9; + undefined8 *puVar10; + code *pcVar11; + int iVar12; + code *local_10; + code *local_8; + + if (param_1 == (int *)0x0) { + iVar12 = -0x1b; + } + else { + if (*param_1 == 0x4c4d4159) goto LAB_00386af8; + iVar12 = -5; + } + local_10 = (code *)0x0; + local_8 = (code *)0x0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x1f); + cVar5 = s_Invalid_pointer_to_file_storage_00470e48[0x1e]; + uVar4 = s_Invalid_pointer_to_file_storage_00470e48._28_2_; + uVar3 = s_Invalid_pointer_to_file_storage_00470e48._24_4_; + uVar2 = s_Invalid_pointer_to_file_storage_00470e48._8_8_; + uVar1 = s_Invalid_pointer_to_file_storage_00470e48._0_8_; + /* try { // try from 00386aa4 to 00486aa7 has its CatchHandler @ 0038670c */ + /* catch() { ... } // from try @ 003867bc with catch @ 00386aa8 + catch() { ... } // from try @ 00386820 with catch @ 00386aa8 */ + /* catch() { ... } // from try @ 0038677c with catch @ 00386ab0 + catch() { ... } // from try @ 003868e4 with catch @ 00386ab0 + catch() { ... } // from try @ 00386a2c with catch @ 00386ab0 */ + /* catch() { ... } // from try @ 0038675c with catch @ 00386ab8 + catch() { ... } // from try @ 00386958 with catch @ 00386ab8 + catch() { ... } // from try @ 00386a20 with catch @ 00386ab8 */ + /* catch() { ... } // from try @ 00386b0c with catch @ 00386ac0 + catch() { ... } // from try @ 00386f50 with catch @ 00386ac0 + catch() { ... } // from try @ 00386fb0 with catch @ 00386ac0 + catch() { ... } // from try @ 00387070 with catch @ 00386ac0 */ + *(undefined8 *)(pcVar8 + 0x10) = s_Invalid_pointer_to_file_storage_00470e48._16_8_; + *(undefined4 *)(pcVar8 + 0x18) = uVar3; + *(undefined2 *)(pcVar8 + 0x1c) = uVar4; + pcVar8[0x1e] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + cv::error(iVar12,(String *)&local_10, + "void cvWrite(CvFileStorage*, const char*, const void*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1381); + cv::String::deallocate((String *)&local_10); +LAB_00386af8: + if (param_1[2] == 0) { + local_10 = (code *)0x0; + local_8 = (code *)0x0; + puVar10 = (undefined8 *)cv::String::allocate((String *)&local_10,0x26); + uVar4 = DAT_00470f04; + uVar7 = DAT_00470ef8; + uVar6 = DAT_00470ef0; + uVar2 = _LAB_00470ee8; + uVar1 = _DAT_00470ee0; + /* try { // try from 00386b8c to 00486d37 has its CatchHandler @ 00387090 */ + *(undefined4 *)(puVar10 + 4) = DAT_00470f00; + *(undefined2 *)((long)puVar10 + 0x24) = uVar4; + *puVar10 = uVar1; + puVar10[1] = uVar2; + puVar10[2] = uVar6; + puVar10[3] = uVar7; + cv::error(-2,(String *)&local_10, + "void cvWrite(CvFileStorage*, const char*, const void*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1381); + cv::String::deallocate((String *)&local_10); + } + if (param_3 == (code *)0x0) { + local_10 = param_3; + local_8 = param_3; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x22); + uVar7 = s_Null_pointer_to_the_written_obje_00472300._24_8_; + uVar6 = s_Null_pointer_to_the_written_obje_00472300._16_8_; + uVar2 = s_Null_pointer_to_the_written_obje_00472300._8_8_; + uVar1 = s_Null_pointer_to_the_written_obje_00472300._0_8_; + *(undefined2 *)(pcVar8 + 0x20) = s_Null_pointer_to_the_written_obje_00472300._32_2_; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar6; + *(undefined8 *)(pcVar8 + 0x18) = uVar7; + cv::error(-0x1b,(String *)&local_10, + "void cvWrite(CvFileStorage*, const char*, const void*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1384); + cv::String::deallocate((String *)&local_10); + } + pcVar9 = (code *)cvTypeOf(param_3); + /* try { // try from 00386b0c to 00486b0f has its CatchHandler @ 00386ac0 */ + if (pcVar9 == (code *)0x0) { + local_10 = pcVar9; + local_8 = pcVar9; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar4 = s_Unknown_object_00472328._12_2_; + uVar3 = s_Unknown_object_00472328._8_4_; + *(undefined8 *)pcVar8 = s_Unknown_object_00472328._0_8_; + *(undefined4 *)(pcVar8 + 8) = uVar3; + *(undefined2 *)(pcVar8 + 0xc) = uVar4; + cv::error(-5,(String *)&local_10, + "void cvWrite(CvFileStorage*, const char*, const void*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",5000); + cv::String::deallocate((String *)&local_10); + } + pcVar11 = *(code **)(pcVar9 + 0x38); + if (pcVar11 == (code *)0x0) { + local_10 = pcVar11; + local_8 = pcVar11; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0x27); + cVar5 = s_The_object_does_not_have_write_f_00472338[0x26]; + uVar4 = s_The_object_does_not_have_write_f_00472338._36_2_; + uVar7 = s_The_object_does_not_have_write_f_00472338._24_8_; + uVar6 = s_The_object_does_not_have_write_f_00472338._16_8_; + uVar2 = s_The_object_does_not_have_write_f_00472338._8_8_; + uVar1 = s_The_object_does_not_have_write_f_00472338._0_8_; + *(undefined4 *)(pcVar8 + 0x20) = s_The_object_does_not_have_write_f_00472338._32_4_; + *(undefined2 *)(pcVar8 + 0x24) = uVar4; + pcVar8[0x26] = cVar5; + *(undefined8 *)pcVar8 = uVar1; + *(undefined8 *)(pcVar8 + 8) = uVar2; + *(undefined8 *)(pcVar8 + 0x10) = uVar6; + *(undefined8 *)(pcVar8 + 0x18) = uVar7; + cv::error(-5,(String *)&local_10, + "void cvWrite(CvFileStorage*, const char*, const void*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x138b); + cv::String::deallocate((String *)&local_10); + pcVar11 = *(code **)(pcVar9 + 0x38); + } + /* try { // try from 00386b28 to 00486b2b has its CatchHandler @ 00387098 */ + (*pcVar11)(param_1,param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### FUNC 00386d74 (512 bytes) name=cvSave + +void cvSave(char *param_1,char *param_2,char *param_3,long param_4,undefined8 param_5, + undefined8 param_6) + +{ + undefined8 uVar1; + undefined8 uVar2; + char cVar3; + size_t sVar4; + void *pvVar5; + char *pcVar6; + undefined1 *puVar7; + undefined8 extraout_x1; + undefined8 extraout_x1_00; + undefined1 auVar8 [16]; + char *local_28; + undefined1 *local_20; + undefined8 local_18; + char *local_10; + char *local_8; + + /* try { // try from 00386d88 to 00486d8b has its CatchHandler @ 00387074 */ + local_28 = (char *)0x0; + /* try { // try from 00386d90 to 00486df7 has its CatchHandler @ 00387090 */ + if (param_2 == (char *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar6 = (char *)cv::String::allocate((String *)&local_10,0x13); + cVar3 = s_NULL_object_pointer_00472360[0x12]; + uVar2 = s_NULL_object_pointer_00472360._8_8_; + uVar1 = s_NULL_object_pointer_00472360._0_8_; + /* try { // try from 00386f50 to 00486f53 has its CatchHandler @ 00386ac0 */ + *(undefined2 *)(pcVar6 + 0x10) = s_NULL_object_pointer_00472360._16_2_; + pcVar6[0x12] = cVar3; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + cv::error(-0x1b,(String *)&local_10, + "void cvSave(const char*, const void*, const char*, const char*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1399); + cv::String::deallocate((String *)&local_10); + } + auVar8 = cvOpenFileStorage(param_1,0,1,0); + local_28 = auVar8._0_8_; + if (local_28 == (char *)0x0) { + local_10 = local_28; + local_8 = local_28; + /* try { // try from 00386e68 to 00486e6b has its CatchHandler @ 00387088 */ + pvVar5 = (void *)cv::String::allocate((String *)&local_10,0x3f); + memcpy(pvVar5,"Could not open the file storage. Check the path and permissions",0x3f); + cv::error(-2,(String *)&local_10, + "void cvSave(const char*, const void*, const char*, const char*, CvAttrList)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x139d); + cv::String::deallocate((String *)&local_10); + auVar8._8_8_ = extraout_x1; + auVar8._0_8_ = local_28; + } + local_28 = auVar8._0_8_; + if (param_3 == (char *)0x0) { + local_10 = param_3; + local_8 = param_3; + if (param_1 != (char *)0x0) { + sVar4 = strlen(param_1); + pvVar5 = (void *)cv::String::allocate((String *)&local_10,sVar4); + /* try { // try from 00386edc to 00486edf has its CatchHandler @ 00387098 */ + memcpy(pvVar5,param_1,sVar4); + auVar8._8_8_ = extraout_x1_00; + auVar8._0_8_ = local_28; + } + local_28 = auVar8._0_8_; + cv::FileStorage::getDefaultObjectName((FileStorage *)&local_10,auVar8._8_8_); + cv::String::deallocate((String *)&local_10); + } + else { + local_20 = (undefined1 *)0x0; + local_18 = 0; + sVar4 = strlen(param_3); + pvVar5 = (void *)cv::String::allocate((String *)&local_20,sVar4); + memcpy(pvVar5,param_3,sVar4); + } + if (param_4 != 0) { + cvWriteComment(local_28,param_4,0); + } + puVar7 = local_20; + if (local_20 == (undefined1 *)0x0) { + puVar7 = &DAT_00472008; + } + cvWrite(local_28,puVar7,param_2,param_5,param_6); + cvReleaseFileStorage(&local_28); + cv::String::deallocate((String *)&local_20); + return; +} + + +================================================================== + +### FUNC 00386fd8 (56 bytes) name=FileStorage + +/* cv::FileStorage::FileStorage() */ + +void __thiscall cv::FileStorage::FileStorage(FileStorage *this) + +{ + /* try { // try from 00386fe0 to 00486fe3 has its CatchHandler @ 00387090 */ + *(undefined **)this = PTR_vtable_00501a10 + 0x10; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + /* catch() { ... } // from try @ 00386fa4 with catch @ 00386ff4 + catch() { ... } // from try @ 00386fd4 with catch @ 00386ff4 */ + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined4 *)(this + 0x40) = 0; + return; +} + + +================================================================== + +### FUNC 00387010 (92 bytes) name=FileStorage + +/* cv::FileStorage::FileStorage(cv::String const&, int, cv::String const&) */ + +void __thiscall +cv::FileStorage::FileStorage(FileStorage *this,String *param_1,int param_2,String *param_3) + +{ + *(undefined **)this = PTR_vtable_00501a10 + 0x10; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined4 *)(this + 0x40) = 0; + open(this,param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 003870bc (260 bytes) name=FileStorage + +/* cv::FileStorage::FileStorage(CvFileStorage*, bool) */ + +void __thiscall cv::FileStorage::FileStorage(FileStorage *this,CvFileStorage *param_1,bool param_2) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + undefined8 *puVar5; + long *plVar6; + + *(undefined **)this = PTR_vtable_00501a10 + 0x10; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + if (param_2) { + if (param_1 == (CvFileStorage *)0x0) { + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x40) = 0; + /* try { // try from 003871a0 to 004871a3 has its CatchHandler @ 003870b0 */ + /* catch() { ... } // from try @ 003871c4 with catch @ 003871a4 + catch() { ... } // from try @ 0038738c with catch @ 003871a4 + catch() { ... } // from try @ 00387538 with catch @ 003871a4 + catch() { ... } // from try @ 00387644 with catch @ 003871a4 */ + return; + } + puVar5 = operator_new(0x20); + puVar5[2] = param_1; + *puVar5 = &PTR_FUN_004f7690; + *(undefined4 *)(puVar5 + 1) = 1; + plVar6 = *(long **)(this + 8); + *(CvFileStorage **)(this + 0x10) = param_1; + *(undefined8 **)(this + 8) = puVar5; + plVar1 = plVar6 + 1; + /* try { // try from 00387140 to 00487173 has its CatchHandler @ 00387188 */ + if (plVar6 != (long *)0x0) { + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar6 + 0x10))(plVar6); + } + } + } + else { + *(CvFileStorage **)(this + 0x10) = param_1; + if (param_1 == (CvFileStorage *)0x0) { + *(undefined4 *)(this + 0x40) = 0; + /* catch() { ... } // from try @ 00387140 with catch @ 00387188 */ + return; + } + } + *(undefined4 *)(this + 0x40) = 6; + return; +} + + +================================================================== + +### FUNC 00387210 (708 bytes) name=cvLoad + +uint * cvLoad(undefined8 param_1,long param_2,long param_3,undefined8 *param_4) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char cVar6; + int iVar7; + CvFileStorage *pCVar8; + int *piVar9; + char *pcVar10; + void *pvVar11; + size_t sVar12; + long lVar13; + uint *puVar14; + int iVar15; + int iVar16; + uint *local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + int *local_70; + int *local_60; + FileStorage aFStack_48 [16]; + long local_38; + + /* try { // try from 00387220 to 00487293 has its CatchHandler @ 00387648 */ + local_a0 = (uint *)0x0; + pCVar8 = (CvFileStorage *)cvOpenFileStorage(param_1,param_2,0); + cv::FileStorage::FileStorage(aFStack_48,pCVar8,true); + cVar6 = cv::FileStorage::isOpened(aFStack_48); + if (cVar6 == '\0') { +LAB_003874cc: + puVar14 = (uint *)0x0; + goto LAB_00387350; + } + if (param_3 == 0) { + /* try { // try from 0038738c to 004873df has its CatchHandler @ 003871a4 */ + iVar7 = 0; + lVar13 = *(long *)(local_38 + 0x30); + if (0 < *(int *)(lVar13 + 0x28)) { + do { + puVar14 = (uint *)cvGetSeqElem(lVar13,iVar7); + if ((*puVar14 & 7) != 6) goto LAB_003874cc; + lVar13 = *(long *)(puVar14 + 4); + cvStartReadSeq(lVar13,&local_88,0); + iVar15 = *(int *)(lVar13 + 0x28); + if (0 < iVar15) { + piVar9 = local_70; + if (*local_70 < 0) { + iVar16 = 0; + do { + local_70 = (int *)((long)local_70 + (long)*(int *)(lVar13 + 0x2c)); + if (local_70 < local_60) { + if (iVar15 <= iVar16 + 1) goto LAB_00387440; + } + else { + cvChangeSeqBlock(&local_88,1); + iVar15 = *(int *)(lVar13 + 0x28); + if (iVar15 <= iVar16 + 1) goto LAB_00387440; + } + /* try { // try from 00387400 to 00487403 has its CatchHandler @ 00387648 */ + iVar16 = iVar16 + 1; + piVar9 = local_70; + if (-1 < *local_70) break; + } while( true ); + } + goto LAB_00387284; + } +LAB_00387440: + iVar7 = iVar7 + 1; + lVar13 = *(long *)(local_38 + 0x30); + } while (iVar7 < *(int *)(lVar13 + 0x28)); + } +LAB_00387458: + local_98 = 0; + local_90 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_98,0x2c); + uVar5 = s_Could_not_find_the_an_object_in_f_004723b8._40_4_; + uVar4 = s_Could_not_find_the_an_object_in_f_004723b8._24_8_; + uVar3 = s_Could_not_find_the_an_object_in_f_004723b8._16_8_; + uVar2 = s_Could_not_find_the_an_object_in_f_004723b8._8_8_; + uVar1 = s_Could_not_find_the_an_object_in_f_004723b8._0_8_; + /* try { // try from 0038747c to 0048747f has its CatchHandler @ 00387650 */ + *(undefined8 *)(pcVar10 + 0x20) = s_Could_not_find_the_an_object_in_f_004723b8._32_8_; + *(undefined4 *)(pcVar10 + 0x28) = uVar5; + *(undefined8 *)pcVar10 = uVar1; + *(undefined8 *)(pcVar10 + 8) = uVar2; + *(undefined8 *)(pcVar10 + 0x10) = uVar3; + *(undefined8 *)(pcVar10 + 0x18) = uVar4; + cv::error(-0xcc,(String *)&local_98, + "void* cvLoad(const char*, CvMemStorage*, const char*, const char**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x13d9); + cv::String::deallocate((String *)&local_98); + piVar9 = (int *)0x0; + } + else { + piVar9 = (int *)cvGetFileNodeByName(local_38,0,param_3); + if (piVar9 == (int *)0x0) goto LAB_00387458; + } +LAB_00387284: + pcVar10 = (char *)cvGetFileNodeName(piVar9); + local_a0 = (uint *)cvRead(local_38,piVar9,0); + /* try { // try from 003872b4 to 004872c3 has its CatchHandler @ 00387668 */ + if (((local_a0 != (uint *)0x0) && (param_2 == 0)) && ((*local_a0 & 0xfffe0000) == 0x42980000)) { + local_88 = 0; + local_80 = 0; + pvVar11 = (void *)cv::String::allocate((String *)&local_88,0x4e); + memcpy(pvVar11,"NULL memory storage is passed - the loaded dynamic structure can not be stored", + 0x4e); + cv::error(-0x1b,(String *)&local_88, + "void* cvLoad(const char*, CvMemStorage*, const char*, const char**)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x13e1); + cv::String::deallocate((String *)&local_88); + } + iVar7 = cvGetErrStatus(); + if (iVar7 < 0) { + cvRelease(&local_a0); + puVar14 = local_a0; + if (param_4 == (undefined8 *)0x0) goto LAB_00387350; + } + else { + puVar14 = local_a0; + if (param_4 == (undefined8 *)0x0) goto LAB_00387350; + if (pcVar10 != (char *)0x0) { + sVar12 = strlen(pcVar10); + pvVar11 = (void *)cv::cvAlloc(sVar12); + *param_4 = pvVar11; + sVar12 = strlen(pcVar10); + /* try { // try from 00387344 to 00487347 has its CatchHandler @ 00387650 */ + memcpy(pvVar11,pcVar10,sVar12); + puVar14 = local_a0; + goto LAB_00387350; + } + } + *param_4 = 0; + puVar14 = local_a0; +LAB_00387350: + cv::FileStorage::~FileStorage(aFStack_48); + return puVar14; +} + + +================================================================== + +### FUNC 00387510 (148 bytes) name=root + +/* cv::FileStorage::root(int) const */ + +long * cv::FileStorage::root(int param_1) + +{ + char cVar1; + long *plVar2; + long lVar3; + long *in_x8; + long lVar4; + + plVar2 = (long *)(ulong)(uint)param_1; + if (*(code **)(*plVar2 + 0x18) == isOpened) { + lVar4 = plVar2[2]; + /* try { // try from 00387538 to 0048756b has its CatchHandler @ 003871a4 */ + if ((lVar4 != 0) && (*(char *)(lVar4 + 0x180) != '\0')) { +LAB_0038757c: + lVar3 = cvGetRootFileNode(lVar4); + in_x8[1] = lVar3; + *in_x8 = lVar4; + return in_x8; + } + } + else { + cVar1 = (**(code **)(*plVar2 + 0x18))(); + /* try { // try from 00387574 to 004875b3 has its CatchHandler @ 00387648 */ + if (cVar1 != '\0') { + lVar4 = plVar2[2]; + goto LAB_0038757c; + } + } + *in_x8 = 0; + in_x8[1] = 0; + return in_x8; +} + + +================================================================== + +### FUNC 003875a4 (460 bytes) name=writeRaw + +/* cv::FileStorage::writeRaw(cv::String const&, unsigned char const*, unsigned long) */ + +void __thiscall +cv::FileStorage::writeRaw(FileStorage *this,String *param_1,uchar *param_2,ulong param_3) + +{ + bool bVar1; + byte bVar2; + uint uVar3; + undefined8 uVar4; + undefined8 uVar5; + char cVar6; + byte *pbVar7; + char *pcVar8; + byte *pbVar9; + ulong uVar10; + ulong uVar11; + undefined8 local_10; + undefined8 local_8; + + if (*(code **)(*(long *)this + 0x18) == isOpened) { + if (*(long *)(this + 0x10) == 0) { + return; + } + cVar6 = *(char *)(*(long *)(this + 0x10) + 0x180); + } + else { + cVar6 = (**(code **)(*(long *)this + 0x18))(); + /* try { // try from 00387604 to 00487607 has its CatchHandler @ 00387614 */ + } + /* try { // try from 0038760c to 0048760f has its CatchHandler @ 00387648 */ + if (cVar6 == '\0') { + s_len___elemSize____0_00472438[0x10] = (char)s_len___elemSize____0_00472438._16_2_; + s_len___elemSize____0_00472438[0x11] = SUB21(s_len___elemSize____0_00472438._16_2_,1); + s_len___elemSize____0_00472438[8] = (char)s_len___elemSize____0_00472438._8_8_; + s_len___elemSize____0_00472438[9] = SUB81(s_len___elemSize____0_00472438._8_8_,1); + s_len___elemSize____0_00472438[10] = SUB81(s_len___elemSize____0_00472438._8_8_,2); + s_len___elemSize____0_00472438[0xb] = SUB81(s_len___elemSize____0_00472438._8_8_,3); + s_len___elemSize____0_00472438[0xc] = SUB81(s_len___elemSize____0_00472438._8_8_,4); + s_len___elemSize____0_00472438[0xd] = SUB81(s_len___elemSize____0_00472438._8_8_,5); + s_len___elemSize____0_00472438[0xe] = SUB81(s_len___elemSize____0_00472438._8_8_,6); + s_len___elemSize____0_00472438[0xf] = SUB81(s_len___elemSize____0_00472438._8_8_,7); + s_len___elemSize____0_00472438[0] = (char)s_len___elemSize____0_00472438._0_8_; + s_len___elemSize____0_00472438[1] = SUB81(s_len___elemSize____0_00472438._0_8_,1); + s_len___elemSize____0_00472438[2] = SUB81(s_len___elemSize____0_00472438._0_8_,2); + s_len___elemSize____0_00472438[3] = SUB81(s_len___elemSize____0_00472438._0_8_,3); + s_len___elemSize____0_00472438[4] = SUB81(s_len___elemSize____0_00472438._0_8_,4); + s_len___elemSize____0_00472438[5] = SUB81(s_len___elemSize____0_00472438._0_8_,5); + s_len___elemSize____0_00472438[6] = SUB81(s_len___elemSize____0_00472438._0_8_,6); + s_len___elemSize____0_00472438[7] = SUB81(s_len___elemSize____0_00472438._0_8_,7); + return; + } + pbVar7 = *(byte **)param_1; + /* catch() { ... } // from try @ 00387604 with catch @ 00387614 */ + pbVar9 = pbVar7; + if (pbVar7 == (byte *)0x0) { + pbVar9 = &DAT_00472008; + } + bVar2 = *pbVar9; + uVar3 = (int)(char)bVar2 - 0x30; + if ((uVar3 & 0xff) < 10) { + bVar2 = pbVar9[1]; + uVar10 = (ulong)(int)uVar3; + uVar11 = uVar10; + if ((bVar2 != 99) && (bVar2 != 0x75)) goto LAB_00387644; + } + else { + if (((char)bVar2 == 99) || (bVar2 == 0x75)) goto LAB_003876ac; + uVar10 = 1; +LAB_00387644: + /* try { // try from 00387644 to 00487647 has its CatchHandler @ 003871a4 */ + /* catch() { ... } // from try @ 00387220 with catch @ 00387648 + catch() { ... } // from try @ 00387400 with catch @ 00387648 + catch() { ... } // from try @ 00387574 with catch @ 00387648 + catch() { ... } // from try @ 0038760c with catch @ 00387648 */ + uVar11 = uVar10 << 1; + /* catch() { ... } // from try @ 00387344 with catch @ 00387650 + catch() { ... } // from try @ 0038747c with catch @ 00387650 */ + if ((bVar2 & 0xfb) != 0x73) { + if ((bVar2 == 0x69) || (bVar2 == 0x66)) { + uVar11 = uVar10 << 2; + } + else { + /* catch() { ... } // from try @ 003872b4 with catch @ 00387668 */ + if ((bVar2 == 100) || (uVar11 = 0, bVar2 == 0x72)) { + /* catch() { ... } // from try @ 00387794 with catch @ 00387678 */ + uVar11 = uVar10 << 3; + } + } + } + } + /* try { // try from 0038769c to 004876c7 has its CatchHandler @ 00387784 */ + uVar10 = 0; + if (uVar11 != 0) { + uVar10 = param_3 / uVar11; + } + bVar1 = param_3 != uVar10 * uVar11; + param_3 = uVar10; + if (bVar1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x13); + cVar6 = s_len___elemSize____0_00472438[0x12]; + uVar5 = s_len___elemSize____0_00472438._8_8_; + uVar4 = s_len___elemSize____0_00472438._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_len___elemSize____0_00472438._16_2_; + pcVar8[0x12] = cVar6; + *(undefined8 *)pcVar8 = uVar4; + *(undefined8 *)(pcVar8 + 8) = uVar5; + error(-0xd7,(String *)&local_10, + "void cv::FileStorage::writeRaw(const cv::String&, const uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x148e); + String::deallocate((String *)&local_10); + pbVar7 = *(byte **)param_1; + } +LAB_003876ac: + if (pbVar7 == (byte *)0x0) { + pbVar7 = &DAT_00472008; + } + cvWriteRawData(*(undefined8 *)(this + 0x10),param_2,param_3 & 0xffffffff,pbVar7); + return; +} + + +================================================================== + +### FUNC 00387784 (156 bytes) name=writeObj + +/* cv::FileStorage::writeObj(cv::String const&, void const*) */ + +void __thiscall cv::FileStorage::writeObj(FileStorage *this,String *param_1,void *param_2) + +{ + char cVar1; + long lVar2; + undefined1 *puVar3; + + /* catch() { ... } // from try @ 0038769c with catch @ 00387784 */ + /* try { // try from 00387794 to 004877b3 has its CatchHandler @ 00387678 */ + /* catch() { ... } // from try @ 00387748 with catch @ 00387798 */ + if (*(code **)(*(long *)this + 0x18) == isOpened) { + lVar2 = *(long *)(this + 0x10); + if ((lVar2 != 0) && (*(char *)(lVar2 + 0x180) != '\0')) { +LAB_003877e4: + puVar3 = (undefined1 *)0x0; + if ((*(long *)(param_1 + 8) != 0) && + (puVar3 = *(undefined1 **)param_1, puVar3 == (undefined1 *)0x0)) { + puVar3 = &DAT_00472008; + } + cvWrite(lVar2,puVar3,param_2,0,0); + return; + } + } + else { + cVar1 = (**(code **)(*(long *)this + 0x18))(); + if (cVar1 != '\0') { + lVar2 = *(long *)(this + 0x10); + goto LAB_003877e4; + } + } + /* catch() { ... } // from try @ 00387840 with catch @ 003877c0 + catch() { ... } // from try @ 00387d9c with catch @ 003877c0 + catch() { ... } // from try @ 00388154 with catch @ 003877c0 */ + return; +} + + +================================================================== + +### FUNC 00387820 (76 bytes) name=operator[] + +/* cv::FileStorage::operator[](cv::String const&) const */ + +undefined8 * cv::FileStorage::operator[](String *param_1) + +{ + undefined8 uVar1; + undefined8 *in_x1; + undefined1 *puVar2; + undefined8 *in_x8; + undefined8 uVar3; + + puVar2 = (undefined1 *)*in_x1; + uVar3 = *(undefined8 *)(param_1 + 0x10); + if (puVar2 == (undefined1 *)0x0) { + puVar2 = &DAT_00472008; + } + /* try { // try from 00387840 to 00487843 has its CatchHandler @ 003877c0 */ + uVar1 = cvGetFileNodeByName(uVar3,0,puVar2); + in_x8[1] = uVar1; + *in_x8 = uVar3; + return in_x8; +} + + +================================================================== + +### FUNC 0038786c (60 bytes) name=operator[] + +/* cv::FileStorage::operator[](char const*) const */ + +undefined8 * cv::FileStorage::operator[](char *param_1) + +{ + undefined8 uVar1; + undefined8 *in_x8; + undefined8 uVar2; + + uVar2 = *(undefined8 *)(param_1 + 0x10); + uVar1 = cvGetFileNodeByName(uVar2,0); + in_x8[1] = uVar1; + *in_x8 = uVar2; + return in_x8; +} + + +================================================================== + +### FUNC 003878a8 (76 bytes) name=operator[] + +/* cv::FileNode::operator[](cv::String const&) const */ + +undefined8 * cv::FileNode::operator[](String *param_1) + +{ + undefined8 uVar1; + undefined8 *in_x1; + undefined1 *puVar2; + undefined8 *in_x8; + undefined8 uVar3; + + puVar2 = (undefined1 *)*in_x1; + uVar3 = *(undefined8 *)param_1; + if (puVar2 == (undefined1 *)0x0) { + puVar2 = &DAT_00472008; + } + uVar1 = cvGetFileNodeByName(uVar3,*(undefined8 *)(param_1 + 8),puVar2); + in_x8[1] = uVar1; + *in_x8 = uVar3; + return in_x8; +} + + +================================================================== + +### FUNC 003878f4 (60 bytes) name=operator[] + +/* cv::FileNode::operator[](char const*) const */ + +undefined8 * cv::FileNode::operator[](char *param_1) + +{ + undefined8 uVar1; + undefined8 *in_x8; + undefined8 uVar2; + + uVar2 = *(undefined8 *)param_1; + uVar1 = cvGetFileNodeByName(uVar2,*(undefined8 *)(param_1 + 8)); + in_x8[1] = uVar1; + *in_x8 = uVar2; + return in_x8; +} + + +================================================================== + +### FUNC 00387930 (128 bytes) name=name + +/* cv::FileNode::name() const */ + +void cv::FileNode::name(void) + +{ + long in_x0; + char *__s; + size_t __n; + void *__dest; + String *in_x8; + + /* try { // try from 00387934 to 00487937 has its CatchHandler @ 00388230 */ + if ((*(long *)(in_x0 + 8) != 0) && (__s = (char *)cvGetFileNodeName(), __s != (char *)0x0)) { + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + __n = strlen(__s); + __dest = (void *)String::allocate(in_x8,__n); + memcpy(__dest,__s,__n); + return; + } + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + return; +} + + +================================================================== + +### FUNC 003879b0 (36 bytes) name=readObj + +/* cv::FileNode::readObj() const */ + +undefined8 __thiscall cv::FileNode::readObj(FileNode *this) + +{ + undefined8 uVar1; + + if ((*(long *)this != 0) && (*(long *)(this + 8) != 0)) { + /* try { // try from 003879c8 to 00487b87 has its CatchHandler @ 003881fc */ + uVar1 = cvRead(*(long *)this,*(long *)(this + 8),0); + return uVar1; + } + return 0; +} + + +================================================================== + +### FUNC 003879d4 (20 bytes) name=FileNodeIterator + +/* cv::FileNodeIterator::FileNodeIterator() */ + +void __thiscall cv::FileNodeIterator::FileNodeIterator(FileNodeIterator *this) + +{ + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x50) = 0; + return; +} + + +================================================================== + +### FUNC 003879e8 (60 bytes) name=FileNodeIterator + +/* cv::FileNodeIterator::FileNodeIterator(cv::FileNodeIterator const&) */ + +void __thiscall +cv::FileNodeIterator::FileNodeIterator(FileNodeIterator *this,FileNodeIterator *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + + uVar1 = *(undefined8 *)(param_1 + 0x50); + uVar2 = *(undefined8 *)param_1; + *(undefined8 *)(this + 8) = *(undefined8 *)(param_1 + 8); + *(undefined8 *)this = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0x18) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(this + 0x20) = *(undefined8 *)(param_1 + 0x20); + *(undefined8 *)(this + 0x28) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x38); + *(undefined8 *)(this + 0x30) = *(undefined8 *)(param_1 + 0x30); + *(undefined8 *)(this + 0x38) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x48); + *(undefined8 *)(this + 0x40) = *(undefined8 *)(param_1 + 0x40); + *(undefined8 *)(this + 0x48) = uVar2; + *(undefined8 *)(this + 0x50) = uVar1; + return; +} + + +================================================================== + +### FUNC 00387a24 (100 bytes) name=operator++ + +/* cv::FileNodeIterator::TEMPNAMEPLACEHOLDERVALUE() */ + +FileNodeIterator * __thiscall cv::FileNodeIterator::operator++(FileNodeIterator *this) + +{ + ulong uVar1; + long lVar2; + + lVar2 = *(long *)(this + 0x50); + if (lVar2 != 0) { + if (*(long *)(this + 0x18) != 0) { + uVar1 = *(long *)(this + 0x28) + (long)*(int *)(*(long *)(this + 0x18) + 0x2c); + *(ulong *)(this + 0x28) = uVar1; + if (*(ulong *)(this + 0x38) <= uVar1) { + cvChangeSeqBlock(this + 0x10,1); + lVar2 = *(long *)(this + 0x50); + } + } + *(long *)(this + 0x50) = lVar2 + -1; + } + return this; +} + + +================================================================== + +### FUNC 00387a88 (56 bytes) name=operator++ + +/* cv::FileNodeIterator::TEMPNAMEPLACEHOLDERVALUE(int) */ + +FileNodeIterator * __thiscall cv::FileNodeIterator::operator++(FileNodeIterator *this,int param_1) + +{ + FileNodeIterator *in_x8; + + FileNodeIterator(in_x8,this); + operator++(this); + return in_x8; +} + + +================================================================== + +### FUNC 00387ac0 (548 bytes) name=readRaw + +/* cv::FileNodeIterator::readRaw(cv::String const&, unsigned char*, unsigned long) */ + +FileNodeIterator * __thiscall +cv::FileNodeIterator::readRaw(FileNodeIterator *this,String *param_1,uchar *param_2,ulong param_3) + +{ + byte bVar1; + uint uVar2; + undefined4 uVar3; + char cVar4; + long lVar5; + char *pcVar6; + long lVar7; + byte *pbVar8; + ulong uVar9; + byte *pbVar10; + long lVar11; + undefined8 local_10; + undefined8 local_8; + + lVar5 = *(long *)this; + if (lVar5 == 0) { + return this; + } + if (*(long *)(this + 8) == 0) { + return this; + } + uVar9 = *(ulong *)(this + 0x50); + if (uVar9 == 0) { + return this; + } + pbVar8 = *(byte **)param_1; + pbVar10 = pbVar8; + if (pbVar8 == (byte *)0x0) { + pbVar10 = &DAT_00472008; + } + bVar1 = *pbVar10; + uVar2 = (int)(char)bVar1 - 0x30; + if ((uVar2 & 0xff) < 10) { + bVar1 = pbVar10[1]; + lVar11 = (long)(int)uVar2; + if ((bVar1 == 99) || (bVar1 == 0x75)) { + lVar7 = 1; + } + else if ((bVar1 & 0xfb) == 0x73) { + lVar7 = 2; + } + else if ((bVar1 == 0x69) || (bVar1 == 0x66)) { + lVar7 = 4; + } + else { + if ((bVar1 != 100) && (bVar1 != 0x72)) goto LAB_00387b74; + lVar7 = 8; + } + if (lVar11 * lVar7 != 0) goto LAB_00387c40; + } + else { + if ((((((int)(char)bVar1 & 0xffffffefU) == 99) || ((bVar1 & 0xfd) == 0x75)) || (bVar1 == 0x69)) + || (bVar1 == 0x66)) { + lVar11 = 1; + goto LAB_00387c40; + } + lVar11 = 1; + if ((bVar1 == 100) || (bVar1 == 0x72)) goto LAB_00387c40; + } +LAB_00387b74: + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0xd); + cVar4 = s_elem_size_>_0_00472450[0xc]; + uVar3 = s_elem_size_>_0_00472450._8_4_; + /* try { // try from 00387bbc to 00487bbf has its CatchHandler @ 00388220 */ + *(undefined8 *)pcVar6 = s_elem_size_>_0_00472450._0_8_; + /* try { // try from 00387bc4 to 00487bff has its CatchHandler @ 003881fc */ + *(undefined4 *)(pcVar6 + 8) = uVar3; + pcVar6[0xc] = cVar4; + error(-0xd7,(String *)&local_10, + "cv::FileNodeIterator& cv::FileNodeIterator::readRaw(const cv::String&, uchar*, size_t)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x153b); + String::deallocate((String *)&local_10); + uVar9 = *(ulong *)(this + 0x50); + lVar5 = *(long *)this; + pbVar8 = *(byte **)param_1; +LAB_00387c40: + /* try { // try from 00387c44 to 00487c47 has its CatchHandler @ 00388210 */ + if (param_3 < uVar9) { + uVar9 = param_3; + } + /* try { // try from 00387c4c to 00487cc7 has its CatchHandler @ 003881fc */ + if (*(long *)(this + 0x18) == 0) { + if (pbVar8 == (byte *)0x0) { + pbVar8 = &DAT_00472008; + } + cvReadRawData(lVar5,*(undefined8 *)(this + 8),param_2,pbVar8); + *(undefined8 *)(this + 0x50) = 0; + return this; + } + if (pbVar8 == (byte *)0x0) { + pbVar8 = &DAT_00472008; + } + cvReadRawDataSlice(lVar5,this + 0x10,uVar9 & 0xffffffff,param_2,pbVar8); + *(ulong *)(this + 0x50) = *(long *)(this + 0x50) - uVar9 * lVar11; + return this; +} + + +================================================================== + +### FUNC 00387cf8 (44 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, int) */ + +void cv::write(FileStorage *param_1,String *param_2,int param_3) + +{ + long lVar1; + + lVar1 = 0; + if ((*(long *)(param_2 + 8) != 0) && (lVar1 = *(long *)param_2, lVar1 == 0)) { + cvWriteInt(*(undefined8 *)(param_1 + 0x10),&DAT_00472008,param_3); + return; + } + cvWriteInt(*(undefined8 *)(param_1 + 0x10),lVar1,param_3); + return; +} + + +================================================================== + +### FUNC 00387d24 (48 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, float) */ + +void cv::write(FileStorage *param_1,String *param_2,float param_3) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)0x0; + if ((*(long *)(param_2 + 8) != 0) && + (puVar1 = *(undefined1 **)param_2, puVar1 == (undefined1 *)0x0)) { + puVar1 = &DAT_00472008; + } + cvWriteReal((double)param_3,*(undefined8 *)(param_1 + 0x10),puVar1); + return; +} + + +================================================================== + +### FUNC 00387d54 (44 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, double) */ + +void cv::write(FileStorage *param_1,String *param_2,double param_3) + +{ + long lVar1; + + /* try { // try from 00387d54 to 00487d57 has its CatchHandler @ 003881e4 */ + lVar1 = 0; + if ((*(long *)(param_2 + 8) != 0) && (lVar1 = *(long *)param_2, lVar1 == 0)) { + cvWriteReal(*(undefined8 *)(param_1 + 0x10),&DAT_00472008); + return; + } + cvWriteReal(*(undefined8 *)(param_1 + 0x10),lVar1); + return; +} + + +================================================================== + +### FUNC 00387d80 (72 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, cv::String const&) */ + +void cv::write(FileStorage *param_1,String *param_2,String *param_3) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)0x0; + if ((*(long *)(param_2 + 8) != 0) && + (puVar1 = *(undefined1 **)param_2, puVar1 == (undefined1 *)0x0)) { + puVar1 = &DAT_00472008; + } + /* try { // try from 00387d9c to 00487def has its CatchHandler @ 003877c0 */ + if (*(long *)param_3 != 0) { + cvWriteString(*(undefined8 *)(param_1 + 0x10),puVar1,*(long *)param_3,0); + return; + } + cvWriteString(*(undefined8 *)(param_1 + 0x10),puVar1,&DAT_00472008,0); + return; +} + + +================================================================== + +### FUNC 00387dc8 (16 bytes) name=writeScalar + +/* cv::writeScalar(cv::FileStorage&, int) */ + +void cv::writeScalar(FileStorage *param_1,int param_2) + +{ + cvWriteInt(*(undefined8 *)(param_1 + 0x10),0,param_2); + return; +} + + +================================================================== + +### FUNC 00387dd8 (16 bytes) name=writeScalar + +/* cv::writeScalar(cv::FileStorage&, float) */ + +void cv::writeScalar(FileStorage *param_1,float param_2) + +{ + cvWriteReal((double)param_2,*(undefined8 *)(param_1 + 0x10),0); + return; +} + + +================================================================== + +### FUNC 00387de8 (12 bytes) name=writeScalar + +/* cv::writeScalar(cv::FileStorage&, double) */ + +void cv::writeScalar(FileStorage *param_1,double param_2) + +{ + cvWriteReal(*(undefined8 *)(param_1 + 0x10),0); + return; +} + + +================================================================== + +### FUNC 00387df4 (44 bytes) name=writeScalar + +/* cv::writeScalar(cv::FileStorage&, cv::String const&) */ + +void cv::writeScalar(FileStorage *param_1,String *param_2) + +{ + if (*(long *)param_2 != 0) { + cvWriteString(*(undefined8 *)(param_1 + 0x10),0,*(long *)param_2,0); + return; + } + cvWriteString(*(undefined8 *)(param_1 + 0x10),0,&DAT_00472008,0); + return; +} + + +================================================================== + +### FUNC 00387e20 (220 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, cv::Mat const&) */ + +void cv::write(FileStorage *param_1,String *param_2,Mat *param_3) + +{ + undefined8 uVar1; + undefined1 *puVar2; + uint local_120; + undefined4 local_11c; + undefined8 local_118; + undefined4 local_110; + undefined8 local_108; + undefined4 local_100; + undefined4 local_fc; + + /* try { // try from 00387e28 to 00487e2b has its CatchHandler @ 003881e4 */ + /* try { // try from 00387e38 to 00487e3b has its CatchHandler @ 00388260 */ + if (*(int *)(param_3 + 4) < 3) { + /* try { // try from 00387e44 to 00487e63 has its CatchHandler @ 003881fc */ + local_100 = *(undefined4 *)(param_3 + 8); + local_fc = 1; + if (*(int *)(param_3 + 4) != 1) { + local_fc = *(undefined4 *)(param_3 + 0xc); + } + local_108 = *(undefined8 *)(param_3 + 0x10); + local_118 = 0; + local_110 = 0; + local_120 = *(uint *)param_3 & 0x4fff | 0x42420000; + puVar2 = (undefined1 *)0x0; + local_11c = (undefined4)**(undefined8 **)(param_3 + 0x48); + /* try { // try from 00387e98 to 00487e9b has its CatchHandler @ 00388250 */ + uVar1 = *(undefined8 *)(param_1 + 0x10); + if (*(long *)(param_2 + 8) == 0) goto LAB_00387ea8; + /* try { // try from 00387ea0 to 00487ebf has its CatchHandler @ 003881fc */ + puVar2 = *(undefined1 **)param_2; + } + else { + CvMatND::CvMatND((CvMatND *)&local_120,param_3); + puVar2 = (undefined1 *)0x0; + uVar1 = *(undefined8 *)(param_1 + 0x10); + if (*(long *)(param_2 + 8) == 0) goto LAB_00387ea8; + puVar2 = *(undefined1 **)param_2; + } + if (puVar2 == (undefined1 *)0x0) { + puVar2 = &DAT_00472008; + } +LAB_00387ea8: + cvWrite(uVar1,puVar2,&local_120,0,0); + return; +} + + +================================================================== + +### FUNC 00387efc (220 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, cv::SparseMat const&) */ + +void cv::write(FileStorage *param_1,String *param_2,SparseMat *param_3) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + long *plVar5; + undefined1 *puVar6; + + /* try { // try from 00387f04 to 00487f07 has its CatchHandler @ 00388240 */ + /* try { // try from 00387f0c to 00487f0f has its CatchHandler @ 003881fc */ + lVar4 = cvCreateSparseMat(param_3); + /* try { // try from 00387f18 to 00487f1b has its CatchHandler @ 00388260 */ + if (lVar4 == 0) { + plVar5 = (long *)0x0; + } + else { + plVar5 = operator_new(0x20); + *plVar5 = (long)&PTR_FUN_004f7660; + *(undefined4 *)(plVar5 + 1) = 1; + plVar5[2] = lVar4; + } + /* try { // try from 00387f50 to 00487f53 has its CatchHandler @ 00388128 */ + puVar6 = (undefined1 *)0x0; + if ((*(long *)(param_2 + 8) != 0) && + (puVar6 = *(undefined1 **)param_2, puVar6 == (undefined1 *)0x0)) { + puVar6 = &DAT_00472008; + } + /* try { // try from 00387f6c to 00487f6f has its CatchHandler @ 00388158 */ + cvWrite(*(undefined8 *)(param_1 + 0x10),puVar6,lVar4,0,0); + if (plVar5 != (long *)0x0) { + plVar1 = plVar5 + 1; + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar5 + 0x10))(plVar5); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0038800c (192 bytes) name=~WriteStructContext + +/* cv::internal::WriteStructContext::~WriteStructContext() */ + +void __thiscall cv::internal::WriteStructContext::~WriteStructContext(WriteStructContext *this) + +{ + char cVar1; + bool bVar2; + undefined4 uVar3; + int *piVar4; + long lVar5; + long local_10; + undefined8 local_8; + + cvEndWriteStruct(*(undefined8 *)(*(long *)this + 0x10)); + *(long *)(*(long *)this + 0x30) = *(long *)(*(long *)this + 0x30) + -1; + lVar5 = *(long *)this; + if (*(long *)(lVar5 + 0x28) == *(long *)(lVar5 + 0x30)) { + uVar3 = 6; + } + else { + uVar3 = 6; + if (*(char *)(*(long *)(lVar5 + 0x30) + -1) != '{') { + uVar3 = 1; + } + } + *(undefined4 *)(lVar5 + 0x40) = uVar3; + local_10 = 0; + /* try { // try from 00388070 to 00488073 has its CatchHandler @ 00388230 */ + local_8 = 0; + if ((String *)(lVar5 + 0x18) != (String *)&local_10) { + String::deallocate((String *)(lVar5 + 0x18)); + /* try { // try from 00388084 to 00488087 has its CatchHandler @ 0038817c */ + if (local_10 != 0) { + piVar4 = (int *)(local_10 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)(lVar5 + 0x18) = local_10; + *(undefined8 *)(lVar5 + 0x20) = local_8; + } + String::deallocate((String *)&local_10); + /* try { // try from 003880c0 to 004880c3 has its CatchHandler @ 003881fc */ + return; +} + + +================================================================== + +### FUNC 003880e0 (640 bytes) name=read + +/* cv::read(cv::FileNode const&, cv::Mat&, cv::Mat const&) */ + +void cv::read(FileNode *param_1,Mat *param_2,Mat *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + int iVar6; + char *pcVar7; + AutoBuffer *in_x5; + cv *local_80; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + undefined8 local_60; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + if (*(long *)(param_1 + 8) == 0) { + /* try { // try from 00388334 to 00488337 has its CatchHandler @ 003882b0 */ + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x2010000); + local_58 = param_2; + Mat::copyTo(param_3,(_OutputArray *)&local_60); + return; + } + local_80 = (cv *)cvRead(*(undefined8 *)param_1,*(long *)(param_1 + 8),0); + if (local_80 != (cv *)0x0) { + /* try { // try from 00388118 to 0048811b has its CatchHandler @ 003881d4 */ + local_70 = param_2; + /* try { // try from 00388120 to 00488123 has its CatchHandler @ 003881cc */ + if ((*(uint *)local_80 & 0xffff0000) == 0x42420000) { + if ((-1 < *(int *)(local_80 + 0x24)) && (-1 < *(int *)(local_80 + 0x20))) { + /* catch() { ... } // from try @ 0038818c with catch @ 003881b4 */ + /* catch() { ... } // from try @ 003880dc with catch @ 003881cc + catch() { ... } // from try @ 00388120 with catch @ 003881cc */ + cvarrToMat(local_80,(void *)0x0,true,false,0,in_x5); + local_68 = 0; + /* catch() { ... } // from try @ 00388118 with catch @ 003881d4 */ + local_64 = 0; + /* catch() { ... } // from try @ 00387d54 with catch @ 003881e4 + catch() { ... } // from try @ 00387e28 with catch @ 003881e4 */ + local_78[0] = 0x2010000; + Mat::copyTo((Mat *)&local_60,(_OutputArray *)local_78); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + /* catch() { ... } // from try @ 003879c8 with catch @ 003881fc + catch() { ... } // from try @ 00387bc4 with catch @ 003881fc + catch() { ... } // from try @ 00387c4c with catch @ 003881fc + catch() { ... } // from try @ 00387e44 with catch @ 003881fc + catch() { ... } // from try @ 00387ea0 with catch @ 003881fc + catch() { ... } // from try @ 00387f0c with catch @ 003881fc + catch() { ... } // from try @ 003880c0 with catch @ 003881fc */ + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* catch() { ... } // from try @ 00387c44 with catch @ 00388210 */ + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + /* catch() { ... } // from try @ 00387bbc with catch @ 00388220 */ + /* catch() { ... } // from try @ 00387934 with catch @ 00388230 + catch() { ... } // from try @ 00388070 with catch @ 00388230 */ + if (0 < local_60._4_4_) { + iVar6 = 0; + do { + *local_20 = 0; + /* catch() { ... } // from try @ 00387f04 with catch @ 00388240 */ + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_60._4_4_); + } + goto LAB_00388250; + } + } + else { + /* catch() { ... } // from try @ 00387f50 with catch @ 00388128 */ + if ((*(uint *)local_80 & 0xffff0000) == 0x42430000) { + cvarrToMat(local_80,(void *)0x0,true,false,0,in_x5); + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + /* catch() { ... } // from try @ 00388334 with catch @ 003882b0 + catch() { ... } // from try @ 003887bc with catch @ 003882b0 + catch() { ... } // from try @ 00388b50 with catch @ 003882b0 */ + Mat::copyTo((Mat *)&local_60,(_OutputArray *)local_78); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + if (0 < local_60._4_4_) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_60._4_4_); + } +LAB_00388250: + /* catch() { ... } // from try @ 00387e98 with catch @ 00388250 */ + local_28 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + local_50 = 0; + if (local_18 != auStack_10) { + /* catch() { ... } // from try @ 00387e38 with catch @ 00388260 + catch() { ... } // from try @ 00387f18 with catch @ 00388260 */ + fastFree(local_18); + } + cvReleaseMat(&local_80); + return; + } + } + } + cvRelease(&local_80); + local_60 = 0; + local_58 = (Mat *)0x0; + pcVar7 = (char *)String::allocate((String *)&local_60,0x12); + uVar5 = s_Unknown_array_type_0046afa8._8_8_; + uVar4 = s_Unknown_array_type_0046afa8._0_8_; + /* try { // try from 00388154 to 00488157 has its CatchHandler @ 003877c0 */ + /* catch() { ... } // from try @ 00387f6c with catch @ 00388158 */ + *(undefined2 *)(pcVar7 + 0x10) = s_Unknown_array_type_0046afa8._16_2_; + /* catch() { ... } // from try @ 00388084 with catch @ 0038817c */ + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + error(-5,(String *)&local_60,"void cv::read(const cv::FileNode&, cv::Mat&, const cv::Mat&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x15ae); + /* try { // try from 0038818c to 004881b3 has its CatchHandler @ 003881b4 */ + String::deallocate((String *)&local_60); + return; +} + + +================================================================== + +### FUNC 003883bc (332 bytes) name=read + +/* cv::read(cv::FileNode const&, cv::SparseMat&, cv::SparseMat const&) */ + +void cv::read(FileNode *param_1,SparseMat *param_2,SparseMat *param_3) + +{ + long *plVar1; + uint uVar2; + char cVar3; + bool bVar4; + long lVar5; + undefined8 uVar6; + undefined8 uVar7; + CvSparseMat *this; + long *plVar8; + char *pcVar9; + undefined8 local_10; + undefined8 local_8; + + if (*(long *)(param_1 + 8) == 0) { + SparseMat::copyTo(param_3,param_2); + return; + } + this = (CvSparseMat *)cvRead(*(undefined8 *)param_1,*(long *)(param_1 + 8),0); + if (this == (CvSparseMat *)0x0) { + plVar8 = (long *)0x0; + } + else { + plVar8 = operator_new(0x20); + uVar2 = *(uint *)this; + *(undefined4 *)(plVar8 + 1) = 1; + plVar8[2] = (long)this; + *plVar8 = (long)&PTR_FUN_004f7660; + /* try { // try from 00388428 to 0048842b has its CatchHandler @ 00388c14 */ + if ((uVar2 & 0xffff0000) == 0x42440000) goto LAB_00388490; + } + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)String::allocate((String *)&local_10,0x13); + cVar3 = s_CV_IS_SPARSE_MAT_m__00472460[0x12]; + uVar7 = s_CV_IS_SPARSE_MAT_m__00472460._8_8_; + uVar6 = s_CV_IS_SPARSE_MAT_m__00472460._0_8_; + *(undefined2 *)(pcVar9 + 0x10) = s_CV_IS_SPARSE_MAT_m__00472460._16_2_; + pcVar9[0x12] = cVar3; + *(undefined8 *)pcVar9 = uVar6; + *(undefined8 *)(pcVar9 + 8) = uVar7; + error(-0xd7,(String *)&local_10, + "void cv::read(const cv::FileNode&, cv::SparseMat&, const cv::SparseMat&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x15ba); + String::deallocate((String *)&local_10); +LAB_00388490: + CvSparseMat::copyToSparseMat(this,param_2); + if (plVar8 != (long *)0x0) { + plVar1 = plVar8 + 1; + do { + lVar5 = *plVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar4) { + *(int *)plVar1 = (int)lVar5 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 003884b8 to 00488663 has its CatchHandler @ 00388bf0 */ + if ((int)lVar5 == 1) { + (**(code **)(*plVar8 + 0x10))(plVar8); + } + } + return; +} + + +================================================================== + +### FUNC 0038854c (20 bytes) name=type + +/* cv::FileNode::type() const */ + +uint __thiscall cv::FileNode::type(FileNode *this) + +{ + uint uVar1; + + uVar1 = 0; + if (*(uint **)(this + 8) != (uint *)0x0) { + uVar1 = **(uint **)(this + 8) & 7; + } + return uVar1; +} + + +================================================================== + +### FUNC 00388560 (128 bytes) name=operator[] + +/* cv::FileNode::operator[](int) const */ + +void cv::FileNode::operator[](int param_1) + +{ + int iVar1; + FileNode *this; + undefined8 uVar2; + int in_w1; + undefined8 *in_x8; + undefined8 uVar3; + + this = (FileNode *)(ulong)(uint)param_1; + iVar1 = type(this); + if (iVar1 == 5) { + uVar3 = *(undefined8 *)this; + uVar2 = cvGetSeqElem(*(undefined8 *)(*(long *)(this + 8) + 0x10)); + *in_x8 = uVar3; + in_x8[1] = uVar2; + } + else { + if (in_w1 == 0) { + uVar2 = *(undefined8 *)this; + in_x8[1] = *(undefined8 *)(this + 8); + *in_x8 = uVar2; + return; + } + *in_x8 = 0; + in_x8[1] = 0; + } + return; +} + + +================================================================== + +### FUNC 003885e0 (20 bytes) name=isNamed + +/* cv::FileNode::isNamed() const */ + +uint __thiscall cv::FileNode::isNamed(FileNode *this) + +{ + uint uVar1; + + uVar1 = 0; + if (*(uint **)(this + 8) != (uint *)0x0) { + uVar1 = **(uint **)(this + 8) >> 6 & 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 003885f4 (108 bytes) name=size + +/* cv::FileNode::size() const */ + +ulong __thiscall cv::FileNode::size(FileNode *this) + +{ + int iVar1; + + iVar1 = type(this); + if (iVar1 == 6) { + return (long)*(int *)(*(long *)(*(long *)(this + 8) + 0x10) + 0x68); + } + if (iVar1 != 5) { + iVar1 = type(this); + return (ulong)(iVar1 != 0); + } + return (long)*(int *)(*(long *)(*(long *)(this + 8) + 0x10) + 0x28); +} + + +================================================================== + +### FUNC 00388660 (132 bytes) name=operator-- + +/* cv::FileNodeIterator::TEMPNAMEPLACEHOLDERVALUE() */ + +FileNodeIterator * __thiscall cv::FileNodeIterator::operator--(FileNodeIterator *this) + +{ + ulong uVar1; + ulong uVar2; + undefined8 local_10; + undefined8 uStack_8; + + uStack_8 = *(undefined8 *)(this + 8); + local_10 = *(undefined8 *)this; + uVar2 = *(ulong *)(this + 0x50); + uVar1 = FileNode::size((FileNode *)&local_10); + /* try { // try from 00388688 to 0048868b has its CatchHandler @ 00388c04 */ + if (uVar2 < uVar1) { + /* try { // try from 00388690 to 004886e7 has its CatchHandler @ 00388bf0 */ + if (*(long *)(this + 0x18) != 0) { + uVar1 = *(long *)(this + 0x28) - (long)*(int *)(*(long *)(this + 0x18) + 0x2c); + *(ulong *)(this + 0x28) = uVar1; + if (uVar1 < *(ulong *)(this + 0x30)) { + cvChangeSeqBlock(this + 0x10,0xffffffff); + } + } + *(long *)(this + 0x50) = *(long *)(this + 0x50) + 1; + } + return this; +} + + +================================================================== + +### FUNC 003886e4 (56 bytes) name=operator-- + +/* cv::FileNodeIterator::TEMPNAMEPLACEHOLDERVALUE(int) */ + +FileNodeIterator * __thiscall cv::FileNodeIterator::operator--(FileNodeIterator *this,int param_1) + +{ + FileNodeIterator *in_x8; + + FileNodeIterator(in_x8,this); + operator--(this); + return in_x8; +} + + +================================================================== + +### FUNC 0038871c (132 bytes) name=operator+= + +/* cv::FileNodeIterator::TEMPNAMEPLACEHOLDERVALUE(int) */ + +FileNodeIterator * __thiscall cv::FileNodeIterator::operator+=(FileNodeIterator *this,int param_1) + +{ + ulong uVar1; + long lVar2; + undefined8 local_10; + undefined8 uStack_8; + + if (param_1 != 0) { + if (param_1 < 1) { + uStack_8 = *(undefined8 *)(this + 8); + local_10 = *(undefined8 *)this; + /* try { // try from 00388774 to 00488777 has its CatchHandler @ 00388b1c */ + uVar1 = FileNode::size((FileNode *)&local_10); + lVar2 = *(long *)(this + 0x50); + if ((ulong)(lVar2 - param_1) < uVar1) { + uVar1 = lVar2 - param_1; + } + param_1 = (int)lVar2 - (int)uVar1; + } + else { + lVar2 = *(long *)(this + 0x50); + if ((int)lVar2 < param_1) { + param_1 = (int)lVar2; + } + } + *(long *)(this + 0x50) = lVar2 - param_1; + if (*(long *)(this + 0x18) != 0) { + cvSetSeqReaderPos(this + 0x10,param_1,1); + } + } + return this; +} + + +================================================================== + +### FUNC 003887a0 (8 bytes) name=operator-= + +/* cv::FileNodeIterator::TEMPNAMEPLACEHOLDERVALUE(int) */ + +void __thiscall cv::FileNodeIterator::operator-=(FileNodeIterator *this,int param_1) + +{ + operator+=(this,-param_1); + return; +} + + +================================================================== + +### FUNC 003887a8 (192 bytes) name=FileNodeIterator + +/* cv::FileNodeIterator::FileNodeIterator(CvFileStorage const*, CvFileNode const*, unsigned long) */ + +void __thiscall +cv::FileNodeIterator::FileNodeIterator + (FileNodeIterator *this,CvFileStorage *param_1,CvFileNode *param_2,ulong param_3) + +{ + uint uVar1; + undefined8 uVar2; + CvFileStorage *local_10; + CvFileNode *local_8; + + /* try { // try from 003887bc to 0048880f has its CatchHandler @ 003882b0 */ + if ((param_1 != (CvFileStorage *)0x0) && (param_2 != (CvFileNode *)0x0)) { + uVar1 = *(uint *)param_2; + if ((uVar1 & 7) != 0) { + *(CvFileStorage **)this = param_1; + *(CvFileNode **)(this + 8) = param_2; + if (((uVar1 >> 4 & 1) == 0) && ((uVar1 & 7) - 5 < 2)) { + /* try { // try from 00388848 to 0048884b has its CatchHandler @ 00388b1c */ + cvStartReadSeq(*(undefined8 *)(param_2 + 0x10),this + 0x10,uVar1 & 0x10); + local_10 = param_1; + local_8 = param_2; + /* try { // try from 00388858 to 0048885b has its CatchHandler @ 00388c24 */ + uVar2 = FileNode::size((FileNode *)&local_10); + *(undefined8 *)(this + 0x50) = uVar2; + } + else { + *(CvFileNode **)(this + 0x28) = param_2; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x50) = 1; + } + operator+=(this,(int)param_3); + return; + } + } + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x50) = 0; + return; +} + + +================================================================== + +### FUNC 00388868 (120 bytes) name=read + +/* cv::read(cv::FileNode const&, int&, int) */ + +void cv::read(FileNode *param_1,int *param_2,int param_3) + +{ + int iVar1; + long lVar2; + uint *puVar3; + + puVar3 = *(uint **)(param_1 + 8); + if (puVar3 == (uint *)0x0) { + *param_2 = param_3; + return; + } + if ((*puVar3 & 7) != 1) { + iVar1 = 0x7fffffff; + if ((*puVar3 & 7) == 2) { + lVar2 = lrint(*(double *)(puVar3 + 4)); + iVar1 = (int)lVar2; + } + *param_2 = iVar1; + return; + } + *param_2 = puVar3[4]; + return; +} + + +================================================================== + +### FUNC 003888e0 (76 bytes) name=read + +/* cv::read(cv::FileNode const&, float&, float) */ + +void cv::read(FileNode *param_1,float *param_2,float param_3) + +{ + uint *puVar1; + + /* try { // try from 003888e0 to 004888e3 has its CatchHandler @ 00388bf0 */ + puVar1 = *(uint **)(param_1 + 8); + if (puVar1 != (uint *)0x0) { + /* try { // try from 003888ec to 004888ef has its CatchHandler @ 00388c24 */ + if ((*puVar1 & 7) == 1) { + *param_2 = (float)(int)puVar1[4]; + return; + } + param_3 = DAT_0038892c; + if ((*puVar1 & 7) == 2) { + *param_2 = (float)*(double *)(puVar1 + 4); + return; + } + } + *param_2 = param_3; + return; +} + + +================================================================== + +### FUNC 00388930 (796 bytes) name=read + +/* cv::read(cv::FileNode const&, std::vector >&) */ + +void cv::read(FileNode *param_1,vector *param_2) + +{ + undefined8 uVar1; + float fVar2; + ulong uVar3; + FileNodeIterator *pFVar4; + undefined8 *puVar5; + CvFileStorage *pCVar6; + undefined8 *puVar7; + CvFileNode *pCVar8; + undefined8 *puVar9; + long lVar10; + undefined8 *puVar11; + undefined8 *puVar12; + ulong uVar13; + undefined8 *puVar14; + ulong uVar15; + undefined8 *puVar16; + int local_d0; + int iStack_cc; + int local_c8; + float local_c4; + undefined8 local_c0; + undefined8 local_b8; + long local_b0; + long local_a8; + long local_88; + long local_60; + long local_58; + long local_50; + long local_30; + long local_8; + + /* try { // try from 00388944 to 00488947 has its CatchHandler @ 00388b54 */ + /* try { // try from 00388960 to 00488963 has its CatchHandler @ 00388b64 */ + if (*(long *)(param_2 + 8) - *(long *)param_2 >> 4 != 0) { + *(long *)(param_2 + 8) = *(long *)param_2; + } + FileNodeIterator::FileNodeIterator + ((FileNodeIterator *)&local_b0,*(CvFileStorage **)param_1,*(CvFileNode **)(param_1 + 8), + 0); + pCVar6 = *(CvFileStorage **)param_1; + pCVar8 = *(CvFileNode **)(param_1 + 8); + uVar3 = FileNode::size(param_1); + FileNodeIterator::FileNodeIterator((FileNodeIterator *)&local_58,pCVar6,pCVar8,uVar3); + fVar2 = DAT_00388c4c; + do { + if (local_b0 == local_58) goto LAB_00388ac8; + while( true ) { + local_d0 = -1; + iStack_cc = -1; + local_c8 = -1; + local_c4 = fVar2; + read((FileNode *)&local_c0,&local_d0,0); + pFVar4 = (FileNodeIterator *)FileNodeIterator::operator++((FileNodeIterator *)&local_b0); + local_c0 = *(undefined8 *)pFVar4; + local_b8 = *(undefined8 *)(pFVar4 + 0x28); + read((FileNode *)&local_c0,&iStack_cc,0); + pFVar4 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar4); + local_b8 = *(undefined8 *)(pFVar4 + 0x28); + local_c0 = *(undefined8 *)pFVar4; + read((FileNode *)&local_c0,&local_c8,0); + /* try { // try from 00388a64 to 00488a67 has its CatchHandler @ 00388c14 */ + pFVar4 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar4); + /* try { // try from 00388a78 to 00488a7b has its CatchHandler @ 00388b88 */ + local_c0 = *(undefined8 *)pFVar4; + local_b8 = *(undefined8 *)(pFVar4 + 0x28); + read((FileNode *)&local_c0,&local_c4,0.0); + FileNodeIterator::operator++(pFVar4); + puVar16 = *(undefined8 **)(param_2 + 0x10); + puVar9 = *(undefined8 **)(param_2 + 8); + if (puVar16 == puVar9) break; + if (puVar9 != (undefined8 *)0x0) { + *puVar9 = CONCAT44(iStack_cc,local_d0); + puVar9[1] = CONCAT44(local_c4,local_c8); + } + /* try { // try from 00388ab4 to 00488ab7 has its CatchHandler @ 00388bf0 */ + *(undefined8 **)(param_2 + 8) = puVar9 + 2; + if (local_b0 == local_58) { +LAB_00388ac8: + /* try { // try from 00388ad0 to 00488ad3 has its CatchHandler @ 00388bd8 */ + if (((local_a8 == local_50) && (local_88 == local_30)) && (local_60 == local_8)) { + /* try { // try from 00388b0c to 00488b0f has its CatchHandler @ 00388be0 */ + /* try { // try from 00388b14 to 00488b17 has its CatchHandler @ 00388bd8 */ + return; + } + } + } + puVar9 = *(undefined8 **)param_2; + /* catch() { ... } // from try @ 00388774 with catch @ 00388b1c + catch() { ... } // from try @ 00388848 with catch @ 00388b1c */ + lVar10 = (long)puVar16 - (long)puVar9; + uVar3 = lVar10 >> 4; + if (uVar3 == 0) { + uVar13 = 0x10; +LAB_00388c20: + /* catch() { ... } // from try @ 00388858 with catch @ 00388c24 + catch() { ... } // from try @ 003888ec with catch @ 00388c24 */ + puVar5 = operator_new(uVar13); + puVar14 = puVar5 + 2; + puVar12 = *(undefined8 **)(param_2 + 8); + puVar9 = *(undefined8 **)param_2; + } + else { + uVar15 = uVar3 * 2; + uVar13 = 0xfffffffffffffff0; + if (((uVar15 < uVar3) || (0xfffffffffffffff < uVar15)) || (uVar13 = uVar3 << 5, uVar15 != 0)) + goto LAB_00388c20; + /* try { // try from 00388b50 to 00488b53 has its CatchHandler @ 003882b0 */ + /* catch() { ... } // from try @ 00388944 with catch @ 00388b54 */ + puVar14 = (undefined8 *)0x10; + puVar5 = (undefined8 *)0x0; + puVar12 = puVar16; + } + puVar11 = (undefined8 *)((long)puVar5 + lVar10); + if (puVar11 != (undefined8 *)0x0) { + /* catch() { ... } // from try @ 00388960 with catch @ 00388b64 */ + *puVar11 = CONCAT44(iStack_cc,local_d0); + puVar11[1] = CONCAT44(local_c4,local_c8); + } + puVar7 = puVar5; + puVar11 = puVar9; + if (puVar16 != puVar9) { + do { + if (puVar7 != (undefined8 *)0x0) { + uVar1 = puVar11[1]; + *puVar7 = *puVar11; + puVar7[1] = uVar1; + } + puVar11 = puVar11 + 2; + /* catch() { ... } // from try @ 00388a78 with catch @ 00388b88 */ + puVar7 = puVar7 + 2; + } while (puVar16 != puVar11); + /* try { // try from 00388b98 to 00488bbf has its CatchHandler @ 00388bc0 */ + puVar14 = (undefined8 *) + ((long)puVar5 + ((long)puVar16 - (long)(puVar9 + 2) & 0xfffffffffffffff0U) + 0x20); + } + puVar7 = puVar14; + puVar11 = puVar16; + if (puVar16 != puVar12) { + do { + if (puVar7 != (undefined8 *)0x0) { + uVar1 = puVar11[1]; + /* catch() { ... } // from try @ 00388b98 with catch @ 00388bc0 */ + *puVar7 = *puVar11; + puVar7[1] = uVar1; + } + puVar11 = puVar11 + 2; + puVar7 = puVar7 + 2; + } while (puVar12 != puVar11); + /* catch() { ... } // from try @ 00388ad0 with catch @ 00388bd8 + catch() { ... } // from try @ 00388b14 with catch @ 00388bd8 */ + /* catch() { ... } // from try @ 00388b0c with catch @ 00388be0 */ + puVar14 = (undefined8 *) + ((long)puVar14 + ((long)puVar12 - (long)(puVar16 + 2) & 0xfffffffffffffff0U) + 0x10) + ; + } + if (puVar9 != (undefined8 *)0x0) { + /* catch() { ... } // from try @ 003884b8 with catch @ 00388bf0 + catch() { ... } // from try @ 00388690 with catch @ 00388bf0 + catch() { ... } // from try @ 003888e0 with catch @ 00388bf0 + catch() { ... } // from try @ 00388ab4 with catch @ 00388bf0 */ + operator_delete(puVar9); + /* catch() { ... } // from try @ 00388688 with catch @ 00388c04 */ + } + *(undefined8 **)param_2 = puVar5; + *(undefined8 **)(param_2 + 8) = puVar14; + /* catch() { ... } // from try @ 00388428 with catch @ 00388c14 + catch() { ... } // from try @ 00388a64 with catch @ 00388c14 */ + *(ulong *)(param_2 + 0x10) = (long)puVar5 + uVar13; + } while( true ); +} + + +================================================================== + +### FUNC 00388c50 (72 bytes) name=read + +/* cv::read(cv::FileNode const&, double&, double) */ + +void cv::read(FileNode *param_1,double *param_2,double param_3) + +{ + uint *puVar1; + + puVar1 = *(uint **)(param_1 + 8); + if (puVar1 != (uint *)0x0) { + if ((*puVar1 & 7) == 1) { + *param_2 = (double)(int)puVar1[4]; + return; + } + param_3 = DAT_00388c98; + if ((*puVar1 & 7) == 2) { + *param_2 = *(double *)(puVar1 + 4); + return; + } + } + *param_2 = param_3; + return; +} + + +================================================================== + +### FUNC 00388ca0 (240 bytes) name=read + +/* cv::read(cv::FileNode const&, cv::String&, cv::String const&) */ + +void cv::read(FileNode *param_1,String *param_2,String *param_3) + +{ + char cVar1; + bool bVar2; + size_t __n; + void *__dest; + int *piVar3; + uint *puVar4; + char *__s; + long local_10; + undefined8 local_8; + + puVar4 = *(uint **)(param_1 + 8); + if (puVar4 == (uint *)0x0) { + local_10 = *(long *)param_3; + local_8 = *(undefined8 *)(param_3 + 8); + if (local_10 != 0) { + piVar3 = (int *)(local_10 + -4); + do { + /* try { // try from 00388d7c to 00488dcf has its CatchHandler @ 00388c70 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + else if ((*puVar4 & 7) == 3) { + __s = *(char **)(puVar4 + 6); + /* try { // try from 00388d24 to 00488d27 has its CatchHandler @ 00388df8 */ + local_10 = 0; + local_8 = 0; + if (__s != (char *)0x0) { + __n = strlen(__s); + __dest = (void *)String::allocate((String *)&local_10,__n); + memcpy(__dest,__s,__n); + } + } + else { + local_10 = 0; + local_8 = 0; + } + String::deallocate(param_2); + if (local_10 != 0) { + piVar3 = (int *)(local_10 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)param_2 = local_10; + *(undefined8 *)(param_2 + 8) = local_8; + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 00388da4 (348 bytes) name=_M_insert_aux + +/* std::vector >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, char const&) */ + +void __thiscall +std::vector>::_M_insert_aux + (vector> *this,undefined1 *param_2,undefined1 *param_3) + +{ + undefined1 uVar1; + size_t sVar2; + void *__dest; + void *__dest_00; + undefined1 *puVar3; + long lVar4; + ulong uVar5; + ulong uVar6; + + puVar3 = *(undefined1 **)(this + 8); + if (puVar3 != *(undefined1 **)(this + 0x10)) { + lVar4 = 0; + if (puVar3 != (undefined1 *)0x0) { + *puVar3 = puVar3[-1]; + lVar4 = *(long *)(this + 8); + } + uVar5 = (lVar4 + -1) - (long)param_2; + *(long *)(this + 8) = lVar4 + 1; + uVar1 = *param_3; + /* try { // try from 00388df0 to 00488df3 has its CatchHandler @ 00388df8 */ + if (uVar5 != 0) { + memmove((void *)(lVar4 + 1 + ~uVar5),param_2,uVar5); + } + *param_2 = uVar1; + /* catch() { ... } // from try @ 00388d24 with catch @ 00388df8 + catch() { ... } // from try @ 00388df0 with catch @ 00388df8 */ + return; + } + uVar5 = (long)puVar3 - *(long *)this; + /* try { // try from 00388e30 to 00488e33 has its CatchHandler @ 00388c70 */ + if (uVar5 == 0xffffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_insert_aux"); + } + /* catch() { ... } // from try @ 00388eb0 with catch @ 00388e34 + catch() { ... } // from try @ 0038900c with catch @ 00388e34 + catch() { ... } // from try @ 003895b4 with catch @ 00388e34 + catch() { ... } // from try @ 00389920 with catch @ 00388e34 + catch() { ... } // from try @ 00389960 with catch @ 00388e34 + catch() { ... } // from try @ 00389994 with catch @ 00388e34 */ + if (uVar5 == 0) { + uVar6 = 1; + } + else { + uVar6 = uVar5 * 2; + if (uVar6 < uVar5) { + uVar6 = 0xffffffffffffffff; + } + } + lVar4 = (long)param_2 - *(long *)this; + __dest = operator_new(uVar6); + if ((long)__dest + lVar4 != 0) { + *(undefined1 *)((long)__dest + lVar4) = *param_3; + } + sVar2 = (long)param_2 - (long)*(void **)this; + if (sVar2 != 0) { + memmove(__dest,*(void **)this,sVar2); + } + __dest_00 = (void *)((long)__dest + sVar2 + 1); + sVar2 = *(long *)(this + 8) - (long)param_2; + if (sVar2 != 0) { + __dest_00 = memmove(__dest_00,param_2,sVar2); + } + if (*(void **)this != (void *)0x0) { + operator_delete(*(void **)this); + } + *(void **)this = __dest; + *(size_t *)(this + 8) = (long)__dest_00 + sVar2; + *(ulong *)(this + 0x10) = (long)__dest + uVar6; + /* try { // try from 00388eb0 to 00488fc3 has its CatchHandler @ 00388e34 */ + return; +} + + +================================================================== + +### FUNC 00388f00 (1216 bytes) name=operator<< + +/* cv::TEMPNAMEPLACEHOLDERVALUE(cv::FileStorage&, cv::String const&) */ + +FileStorage * cv::operator<<(FileStorage *param_1,String *param_2) + +{ + uint uVar1; + bool bVar2; + char cVar3; + long lVar4; + size_t __n; + void *__dest; + undefined4 uVar5; + int *piVar6; + char *pcVar7; + undefined8 uVar8; + undefined1 *puVar9; + undefined8 uVar10; + char *pcVar11; + char cVar12; + long local_10; + undefined8 local_8; + + pcVar11 = *(char **)param_2; + if (pcVar11 == (char *)0x0) { + pcVar11 = ""; + } + if (*(code **)(*(long *)param_1 + 0x18) == FileStorage::isOpened) { + if (*(long *)(param_1 + 0x10) == 0) { + return param_1; + } + cVar3 = *(char *)(*(long *)(param_1 + 0x10) + 0x180); + } + else { + cVar3 = (**(code **)(*(long *)param_1 + 0x18))(param_1); + } + if (cVar3 == '\0') { + s_Invalid_fs_state_00472500[8] = (char)s_Invalid_fs_state_00472500._8_8_; + s_Invalid_fs_state_00472500[9] = SUB81(s_Invalid_fs_state_00472500._8_8_,1); + s_Invalid_fs_state_00472500[10] = SUB81(s_Invalid_fs_state_00472500._8_8_,2); + s_Invalid_fs_state_00472500[0xb] = SUB81(s_Invalid_fs_state_00472500._8_8_,3); + s_Invalid_fs_state_00472500[0xc] = SUB81(s_Invalid_fs_state_00472500._8_8_,4); + s_Invalid_fs_state_00472500[0xd] = SUB81(s_Invalid_fs_state_00472500._8_8_,5); + s_Invalid_fs_state_00472500[0xe] = SUB81(s_Invalid_fs_state_00472500._8_8_,6); + s_Invalid_fs_state_00472500[0xf] = SUB81(s_Invalid_fs_state_00472500._8_8_,7); + s_Invalid_fs_state_00472500[0] = (char)s_Invalid_fs_state_00472500._0_8_; + s_Invalid_fs_state_00472500[1] = SUB81(s_Invalid_fs_state_00472500._0_8_,1); + s_Invalid_fs_state_00472500[2] = SUB81(s_Invalid_fs_state_00472500._0_8_,2); + s_Invalid_fs_state_00472500[3] = SUB81(s_Invalid_fs_state_00472500._0_8_,3); + s_Invalid_fs_state_00472500[4] = SUB81(s_Invalid_fs_state_00472500._0_8_,4); + s_Invalid_fs_state_00472500[5] = SUB81(s_Invalid_fs_state_00472500._0_8_,5); + s_Invalid_fs_state_00472500[6] = SUB81(s_Invalid_fs_state_00472500._0_8_,6); + s_Invalid_fs_state_00472500[7] = SUB81(s_Invalid_fs_state_00472500._0_8_,7); + return param_1; + } + cVar3 = *pcVar11; + uVar1 = (int)cVar3 & 0xffffffdf; + cVar12 = (char)uVar1; + if (cVar12 == ']') { + lVar4 = *(long *)(param_1 + 0x30); + if (*(long *)(param_1 + 0x28) == lVar4) { + format("Extra closing \'%c\'",(String *)&local_10,(ulong)(uint)(int)cVar3); + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const cv::String&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1458); + String::deallocate((String *)&local_10); + lVar4 = *(long *)(param_1 + 0x30); + cVar3 = *pcVar11; + } + cVar12 = '['; + if ((int)cVar3 != 0x5d) { + cVar12 = '{'; + } + if (cVar12 != *(char *)(lVar4 + -1)) { + format("The closing \'%c\' does not match the opening \'%c\'",(String *)&local_10, + (ulong)(uint)(int)cVar3); + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const cv::String&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x145b); + String::deallocate((String *)&local_10); + lVar4 = *(long *)(param_1 + 0x30); + } + /* try { // try from 00388ffc to 00488fff has its CatchHandler @ 00389910 */ + *(long *)(param_1 + 0x30) = lVar4 + -1; + if (*(long *)(param_1 + 0x28) == lVar4 + -1) { + uVar5 = 6; + } + else { + /* try { // try from 0038900c to 00489043 has its CatchHandler @ 00388e34 */ + uVar5 = 6; + if (*(char *)(lVar4 + -2) != '{') { + uVar5 = 1; + } + } + *(undefined4 *)(param_1 + 0x40) = uVar5; + cvEndWriteStruct(*(undefined8 *)(param_1 + 0x10)); + local_10 = 0; + local_8 = 0; + if ((String *)(param_1 + 0x18) != (String *)&local_10) { + String::deallocate((String *)(param_1 + 0x18)); + if (local_10 != 0) { + piVar6 = (int *)(local_10 + -4); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + *(long *)(param_1 + 0x18) = local_10; + *(undefined8 *)(param_1 + 0x20) = local_8; + } + } + else { + if (*(uint *)(param_1 + 0x40) == 6) { + if (0x19 < (uVar1 - 0x41 & 0xff)) { + format("Incorrect element name %s",(String *)&local_10,pcVar11); + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const cv::String&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1465); + String::deallocate((String *)&local_10); + } + if (param_2 != (String *)(param_1 + 0x18)) { + String::deallocate((String *)(param_1 + 0x18)); + uVar8 = 0; + if (*(long *)param_2 != 0) { + piVar6 = (int *)(*(long *)param_2 + -4); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + uVar8 = *(undefined8 *)param_2; + } + *(undefined8 *)(param_1 + 0x18) = uVar8; + *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_2 + 8); + } + *(undefined4 *)(param_1 + 0x40) = 5; + return param_1; + } + if ((*(uint *)(param_1 + 0x40) & 3) == 1) { + if (cVar12 != '[') { + if (((int)cVar3 == 0x5c) && (((pcVar11[1] & 0xdfU) + 0xa5 & 0xfd) == 0)) { + local_10 = 0; + pcVar11 = pcVar11 + 1; + local_8 = 0; + if (pcVar11 != (char *)0x0) { + __n = strlen(pcVar11); + __dest = (void *)String::allocate((String *)&local_10,__n); + memcpy(__dest,pcVar11,__n); + } + } + else { + local_10 = *(long *)param_2; + local_8 = *(undefined8 *)(param_2 + 8); + if (local_10 != 0) { + piVar6 = (int *)(local_10 + -4); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + } + write(param_1,(String *)(param_1 + 0x18),(String *)&local_10); + String::deallocate((String *)&local_10); + if (*(int *)(param_1 + 0x40) != 5) { + return param_1; + } + *(undefined4 *)(param_1 + 0x40) = 6; + return param_1; + } + pcVar7 = *(char **)(param_1 + 0x30); + if (pcVar7 == *(char **)(param_1 + 0x38)) { + std::vector>::_M_insert_aux + ((vector> *)(param_1 + 0x28),pcVar7,pcVar11); + } + else { + lVar4 = 0; + if (pcVar7 != (char *)0x0) { + *pcVar7 = cVar3; + lVar4 = *(long *)(param_1 + 0x30); + } + /* try { // try from 0038911c to 004894af has its CatchHandler @ 0038999c */ + *(long *)(param_1 + 0x30) = lVar4 + 1; + } + if (*pcVar11 == '{') { + uVar5 = 6; + uVar8 = 0xe; + uVar10 = 6; + } + else { + uVar8 = 0xd; + uVar10 = 5; + uVar5 = 1; + } + *(undefined4 *)(param_1 + 0x40) = uVar5; + cVar3 = pcVar11[1]; + if (cVar3 == ':') { + cVar3 = pcVar11[2]; + pcVar11 = pcVar11 + 2; + } + else { + pcVar11 = pcVar11 + 1; + uVar8 = uVar10; + } + puVar9 = (undefined1 *)0x0; + if ((*(long *)(param_1 + 0x20) != 0) && + (puVar9 = *(undefined1 **)(param_1 + 0x18), puVar9 == (undefined1 *)0x0)) { + puVar9 = &DAT_00472008; + } + if (cVar3 == '\0') { + pcVar11 = (char *)0x0; + } + cvStartWriteStruct(*(undefined8 *)(param_1 + 0x10),puVar9,uVar8,pcVar11,0,0); + local_10 = 0; + local_8 = 0; + if ((String *)(param_1 + 0x18) != (String *)&local_10) { + String::deallocate((String *)(param_1 + 0x18)); + if (local_10 != 0) { + piVar6 = (int *)(local_10 + -4); + do { + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + *(long *)(param_1 + 0x18) = local_10; + *(undefined8 *)(param_1 + 0x20) = local_8; + } + } + else { + local_10 = 0; + local_8 = 0; + pcVar11 = (char *)String::allocate((String *)&local_10,0x10); + uVar8 = s_Invalid_fs_state_00472500._8_8_; + *(undefined8 *)pcVar11 = s_Invalid_fs_state_00472500._0_8_; + *(undefined8 *)(pcVar11 + 8) = uVar8; + error(-2,(String *)&local_10, + "cv::FileStorage& cv::operator<<(cv::FileStorage&, const cv::String&)", + "/builds/master_pack-android/opencv/modules/core/src/persistence.cpp",0x1483); + } + } + String::deallocate((String *)&local_10); + return param_1; +} + + +================================================================== + +### FUNC 0038944c (584 bytes) name=WriteStructContext + +/* cv::internal::WriteStructContext::WriteStructContext(cv::FileStorage&, cv::String const&, int, + cv::String const&) */ + +void __thiscall +cv::internal::WriteStructContext::WriteStructContext + (WriteStructContext *this,FileStorage *param_1,String *param_2,int param_3,String *param_4 + ) + +{ + char cVar1; + bool bVar2; + size_t sVar3; + void *__dest; + void *__dest_00; + undefined1 *puVar4; + int *piVar5; + long lVar6; + long lVar7; + undefined1 *puVar8; + ulong uVar9; + ulong uVar10; + long local_10; + undefined8 local_8; + + lVar7 = *(long *)(param_2 + 8); + puVar4 = (undefined1 *)0x0; + *(FileStorage **)this = param_1; + if ((lVar7 != 0) && (puVar4 = *(undefined1 **)param_2, puVar4 == (undefined1 *)0x0)) { + puVar4 = &DAT_00472008; + } + puVar8 = (undefined1 *)0x0; + if ((*(long *)(param_4 + 8) != 0) && + (puVar8 = *(undefined1 **)param_4, puVar8 == (undefined1 *)0x0)) { + /* try { // try from 003895b4 to 00489607 has its CatchHandler @ 00388e34 */ + puVar8 = &DAT_00472008; + } + cvStartWriteStruct(*(undefined8 *)(param_1 + 0x10),puVar4,param_3,puVar8,0,0); + lVar7 = *(long *)this; + local_10 = 0; + local_8 = 0; + if ((String *)(lVar7 + 0x18) != (String *)&local_10) { + String::deallocate((String *)(lVar7 + 0x18)); + if (local_10 != 0) { + piVar5 = (int *)(local_10 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(long *)(lVar7 + 0x18) = local_10; + *(undefined8 *)(lVar7 + 0x20) = local_8; + } + String::deallocate((String *)&local_10); + if ((param_3 & 7U) == 5) { + lVar7 = *(long *)this; + puVar4 = *(undefined1 **)(lVar7 + 0x30); + puVar8 = *(undefined1 **)(lVar7 + 0x38); + *(undefined4 *)(lVar7 + 0x40) = 1; + if (puVar8 != puVar4) { + lVar6 = 0; + if (puVar4 != (undefined1 *)0x0) { + *puVar4 = 0x5b; + lVar6 = *(long *)(lVar7 + 0x30); + } + *(long *)(lVar7 + 0x30) = lVar6 + 1; + return; + } + uVar9 = (long)puVar8 - *(long *)(lVar7 + 0x28); + if (uVar9 == 0xffffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_insert_aux"); + } + uVar10 = 1; + if ((uVar9 != 0) && (uVar10 = uVar9 * 2, uVar10 < uVar9)) { + uVar10 = 0xffffffffffffffff; + } + __dest = operator_new(uVar10); + if ((long)__dest + uVar9 != 0) { + *(undefined1 *)((long)__dest + uVar9) = 0x5b; + } + sVar3 = (long)puVar8 - (long)*(void **)(lVar7 + 0x28); + if (sVar3 != 0) { + memmove(__dest,*(void **)(lVar7 + 0x28),sVar3); + } + /* try { // try from 0038962c to 0048962f has its CatchHandler @ 003899a4 */ + __dest_00 = (void *)((long)__dest + sVar3 + 1); + sVar3 = *(long *)(lVar7 + 0x30) - (long)puVar8; + if (sVar3 != 0) { + __dest_00 = memmove(__dest_00,puVar8,sVar3); + } + /* try { // try from 0038963c to 0048963f has its CatchHandler @ 00389964 */ + if (*(void **)(lVar7 + 0x28) != (void *)0x0) { + operator_delete(*(void **)(lVar7 + 0x28)); + } + *(void **)(lVar7 + 0x28) = __dest; + *(size_t *)(lVar7 + 0x30) = (long)__dest_00 + sVar3; + *(ulong *)(lVar7 + 0x38) = (long)__dest + uVar10; + } + else { + lVar7 = *(long *)this; + *(undefined4 *)(lVar7 + 0x40) = 6; + local_10 = CONCAT71(local_10._1_7_,0x7b); + puVar4 = *(undefined1 **)(lVar7 + 0x30); + if (puVar4 == *(undefined1 **)(lVar7 + 0x38)) { + std::vector>::_M_insert_aux + ((vector> *)(lVar7 + 0x28),puVar4,(String *)&local_10); + } + else { + lVar6 = 0; + if (puVar4 != (undefined1 *)0x0) { + *puVar4 = 0x7b; + lVar6 = *(long *)(lVar7 + 0x30); + } + *(long *)(lVar7 + 0x30) = lVar6 + 1; + } + } + /* try { // try from 0038954c to 0048954f has its CatchHandler @ 00389998 */ + return; +} + + +================================================================== + +### FUNC 003896a8 (284 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, std::vector > const&) */ + +void cv::write(FileStorage *param_1,String *param_2,vector *param_3) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + WriteStructContext aWStack_18 [8]; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + internal::WriteStructContext::WriteStructContext + (aWStack_18,param_1,param_2,0xd,(String *)&local_10); + String::deallocate((String *)&local_10); + lVar3 = *(long *)param_3; + iVar2 = (int)(*(long *)(param_3 + 8) - lVar3 >> 2) * -0x49249249; + if (0 < iVar2) { + lVar4 = 0; + while( true ) { + lVar1 = lVar3 + lVar4; + writeScalar(param_1,*(float *)(lVar3 + lVar4)); + writeScalar(param_1,*(float *)(lVar1 + 4)); + writeScalar(param_1,*(float *)(lVar1 + 8)); + writeScalar(param_1,*(float *)(lVar1 + 0xc)); + writeScalar(param_1,*(float *)(lVar1 + 0x10)); + writeScalar(param_1,*(int *)(lVar1 + 0x14)); + /* try { // try from 00389790 to 0048979f has its CatchHandler @ 0038999c */ + writeScalar(param_1,*(int *)(lVar1 + 0x18)); + lVar4 = lVar4 + 0x1c; + if (lVar4 + ((ulong)(iVar2 - 1) + 1) * -0x1c == 0) break; + lVar3 = *(long *)param_3; + } + } + /* try { // try from 003897a8 to 004897ab has its CatchHandler @ 003899a4 */ + internal::WriteStructContext::~WriteStructContext(aWStack_18); + return; +} + + +================================================================== + +### FUNC 00389800 (224 bytes) name=write + +/* cv::write(cv::FileStorage&, cv::String const&, std::vector + > const&) */ + +void cv::write(FileStorage *param_1,String *param_2,vector *param_3) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + WriteStructContext aWStack_18 [8]; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 00389814 to 00489827 has its CatchHandler @ 0038999c */ + /* try { // try from 00389830 to 00489833 has its CatchHandler @ 00389924 */ + local_10 = 0; + local_8 = 0; + internal::WriteStructContext::WriteStructContext + (aWStack_18,param_1,param_2,0xd,(String *)&local_10); + /* try { // try from 00389848 to 0048984b has its CatchHandler @ 003898d0 */ + String::deallocate((String *)&local_10); + lVar3 = *(long *)param_3; + iVar2 = (int)(*(long *)(param_3 + 8) - lVar3 >> 4); + if (0 < iVar2) { + lVar4 = 0; + while( true ) { + lVar1 = lVar3 + lVar4; + writeScalar(param_1,*(int *)(lVar3 + lVar4)); + writeScalar(param_1,*(int *)(lVar1 + 4)); + writeScalar(param_1,*(int *)(lVar1 + 8)); + writeScalar(param_1,*(float *)(lVar1 + 0xc)); + lVar4 = lVar4 + 0x10; + if (lVar4 == ((ulong)(iVar2 - 1) + 1) * 0x10) break; + lVar3 = *(long *)param_3; + } + } + internal::WriteStructContext::~WriteStructContext(aWStack_18); + /* catch() { ... } // from try @ 00389848 with catch @ 003898d0 */ + return; +} + + +================================================================== + +### FUNC 0038991c (1300 bytes) name=_M_fill_insert + +/* std::vector + >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, cv::KeyPoint const&) */ + +void __thiscall +std::vector>::_M_fill_insert + (vector> *this,undefined4 *param_2,ulong param_3 + ,undefined4 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + long lVar10; + undefined4 *puVar11; + undefined4 *puVar12; + long lVar13; + undefined4 *puVar14; + ulong uVar15; + undefined4 *puVar16; + undefined4 *puVar17; + undefined4 *puVar18; + long lVar19; + ulong uVar20; + + /* try { // try from 00389920 to 00489923 has its CatchHandler @ 00388e34 */ + /* catch() { ... } // from try @ 00389830 with catch @ 00389924 */ + if (param_3 == 0) { + /* try { // try from 00389ab8 to 00489c27 has its CatchHandler @ 0038a0ec */ + return; + } + puVar18 = *(undefined4 **)(this + 8); + if (param_3 <= (ulong)((*(long *)(this + 0x10) - (long)puVar18 >> 2) * 0x6db6db6db6db6db7)) { + /* try { // try from 00389960 to 00489963 has its CatchHandler @ 00388e34 */ + /* catch() { ... } // from try @ 0038963c with catch @ 00389964 + catch() { ... } // from try @ 003897dc with catch @ 00389964 */ + lVar19 = (long)puVar18 - (long)param_2; + uVar1 = param_4[5]; + uVar2 = param_4[6]; + uVar3 = *param_4; + uVar4 = param_4[1]; + uVar5 = param_4[2]; + /* try { // try from 00389994 to 00489997 has its CatchHandler @ 00388e34 */ + uVar6 = param_4[3]; + /* catch() { ... } // from try @ 0038954c with catch @ 00389998 */ + uVar7 = param_4[4]; + /* catch() { ... } // from try @ 0038911c with catch @ 0038999c + catch() { ... } // from try @ 00389790 with catch @ 0038999c + catch() { ... } // from try @ 00389814 with catch @ 0038999c */ + if (param_3 < (ulong)((lVar19 >> 2) * 0x6db6db6db6db6db7)) { + /* catch() { ... } // from try @ 0038962c with catch @ 003899a4 + catch() { ... } // from try @ 003897a8 with catch @ 003899a4 */ + puVar14 = puVar18 + param_3 * -7; + puVar12 = puVar18; + for (puVar11 = puVar14; puVar18 != puVar11; puVar11 = puVar11 + 7) { + if (puVar12 != (undefined4 *)0x0) { + uVar8 = puVar11[5]; + /* catch() { ... } // from try @ 00389fd0 with catch @ 003899c8 + catch() { ... } // from try @ 0038a0fc with catch @ 003899c8 */ + *puVar12 = *puVar11; + puVar12[1] = puVar11[1]; + puVar12[2] = puVar11[2]; + puVar12[3] = puVar11[3]; + uVar9 = puVar11[4]; + puVar12[5] = uVar8; + puVar12[6] = puVar11[6]; + puVar12[4] = uVar9; + } + puVar12 = puVar12 + 7; + } + *(undefined4 **)(this + 8) = puVar18 + param_3 * 7; + puVar11 = puVar18; + puVar12 = puVar14; + if (0 < ((long)puVar14 - (long)param_2 >> 2) * 0x6db6db6db6db6db7) { + do { + puVar16 = puVar11 + -7; + *puVar16 = puVar12[-7]; + uVar8 = puVar12[-2]; + puVar11[-6] = puVar12[-6]; + puVar11[-5] = puVar12[-5]; + puVar11[-4] = puVar12[-4]; + uVar9 = puVar12[-3]; + puVar11[-2] = uVar8; + puVar11[-1] = puVar12[-1]; + puVar11[-3] = uVar9; + puVar11 = puVar16; + puVar12 = puVar12 + -7; + } while (puVar16 != (undefined4 *)((long)puVar18 - ((long)puVar14 - (long)param_2))); + } + puVar18 = param_2 + param_3 * 7; + for (; param_2 != puVar18; param_2 = param_2 + 7) { + *param_2 = uVar3; + param_2[5] = uVar1; + param_2[1] = uVar4; + param_2[6] = uVar2; + param_2[2] = uVar5; + param_2[3] = uVar6; + param_2[4] = uVar7; + } + return; + } + lVar13 = param_3 + (lVar19 >> 2) * -0x6db6db6db6db6db7; + puVar11 = puVar18; + for (lVar10 = lVar13; lVar10 != 0; lVar10 = lVar10 + -1) { + if (puVar11 != (undefined4 *)0x0) { + puVar11[5] = uVar1; + puVar11[6] = uVar2; + *puVar11 = uVar3; + puVar11[1] = uVar4; + puVar11[2] = uVar5; + puVar11[3] = uVar6; + puVar11[4] = uVar7; + } + puVar11 = puVar11 + 7; + } + puVar14 = puVar18 + lVar13 * 7; + *(undefined4 **)(this + 8) = puVar14; + puVar12 = puVar14; + puVar11 = param_2; + if (puVar18 == param_2) { + *(long *)(this + 8) = (long)puVar14 + lVar19; + return; + } + do { + if (puVar12 != (undefined4 *)0x0) { + uVar8 = puVar11[5]; + *puVar12 = *puVar11; + puVar12[1] = puVar11[1]; + puVar12[2] = puVar11[2]; + puVar12[3] = puVar11[3]; + uVar9 = puVar11[4]; + puVar12[5] = uVar8; + puVar12[6] = puVar11[6]; + puVar12[4] = uVar9; + } + puVar11 = puVar11 + 7; + puVar12 = puVar12 + 7; + } while (puVar18 != puVar11); + *(long *)(this + 8) = (long)puVar14 + lVar19; + do { + *param_2 = uVar3; + param_2[5] = uVar1; + param_2[1] = uVar4; + param_2[6] = uVar2; + param_2[2] = uVar5; + puVar11 = param_2 + 7; + param_2[3] = uVar6; + param_2[4] = uVar7; + param_2 = puVar11; + } while (puVar18 != puVar11); + return; + } + puVar11 = *(undefined4 **)this; + lVar19 = (long)puVar18 - (long)puVar11 >> 2; + uVar15 = lVar19 * 0x6db6db6db6db6db7; + if (lVar19 * -0x6db6db6db6db6db7 + 0x924924924924924U < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar20 = uVar15; + if (uVar15 < param_3) { + uVar20 = param_3; + } + uVar20 = uVar20 + uVar15; + if ((uVar15 < uVar20 || uVar15 - uVar20 == 0) && (uVar20 < 0x924924924924925)) { + lVar19 = (long)param_2 - (long)puVar11; + if (uVar20 == 0) { + uVar20 = 0; + puVar12 = (undefined4 *)0x0; + goto LAB_00389c58; + } + uVar20 = uVar20 * 0x1c; + } + else { + lVar19 = (long)param_2 - (long)puVar11; + uVar20 = 0xfffffffffffffff0; + } + /* try { // try from 00389c48 to 00489c4b has its CatchHandler @ 0038a100 */ + puVar12 = operator_new(uVar20); + puVar18 = *(undefined4 **)(this + 8); + /* try { // try from 00389c54 to 00489c57 has its CatchHandler @ 0038a0ec */ + puVar11 = *(undefined4 **)this; +LAB_00389c58: + puVar14 = (undefined4 *)((long)puVar12 + lVar19); + uVar15 = param_3; + do { + /* try { // try from 00389c60 to 00489c63 has its CatchHandler @ 0038a100 */ + if (puVar14 != (undefined4 *)0x0) { + uVar1 = param_4[5]; + *puVar14 = *param_4; + puVar14[1] = param_4[1]; + puVar14[2] = param_4[2]; + puVar14[3] = param_4[3]; + uVar2 = param_4[4]; + puVar14[5] = uVar1; + puVar14[6] = param_4[6]; + puVar14[4] = uVar2; + } + uVar15 = uVar15 - 1; + puVar14 = puVar14 + 7; + } while (uVar15 != 0); + puVar16 = puVar12; + puVar14 = puVar11; + if (param_2 != puVar11) { + do { + if (puVar16 != (undefined4 *)0x0) { + uVar1 = puVar14[5]; + *puVar16 = *puVar14; + puVar16[1] = puVar14[1]; + /* try { // try from 00389cd0 to 00489e3f has its CatchHandler @ 0038a0ec */ + puVar16[2] = puVar14[2]; + puVar16[3] = puVar14[3]; + uVar2 = puVar14[4]; + puVar16[5] = uVar1; + puVar16[6] = puVar14[6]; + puVar16[4] = uVar2; + } + puVar14 = puVar14 + 7; + puVar16 = puVar16 + 7; + } while (param_2 != puVar14); + puVar16 = puVar12 + ((((ulong)((long)param_2 - (long)(puVar11 + 7)) >> 2) * 0x2db6db6db6db6db7 & + 0x3fffffffffffffff) + 1) * 7; + } + puVar16 = puVar16 + param_3 * 7; + puVar14 = param_2; + puVar17 = puVar16; + if (param_2 != puVar18) { + do { + if (puVar17 != (undefined4 *)0x0) { + uVar1 = puVar14[5]; + *puVar17 = *puVar14; + puVar17[1] = puVar14[1]; + puVar17[2] = puVar14[2]; + puVar17[3] = puVar14[3]; + uVar2 = puVar14[4]; + puVar17[5] = uVar1; + puVar17[6] = puVar14[6]; + puVar17[4] = uVar2; + } + puVar14 = puVar14 + 7; + puVar17 = puVar17 + 7; + } while (puVar14 != puVar18); + puVar16 = puVar16 + ((((ulong)((long)puVar14 - (long)(param_2 + 7)) >> 2) * 0x2db6db6db6db6db7 & + 0x3fffffffffffffff) + 1) * 7; + } + if (puVar11 != (undefined4 *)0x0) { + operator_delete(puVar11); + } + *(undefined4 **)this = puVar12; + *(undefined4 **)(this + 8) = puVar16; + *(ulong *)(this + 0x10) = (long)puVar12 + uVar20; + return; +} + + +================================================================== + +### FUNC 00389e30 (152 bytes) name=__uninit_copy + +/* cv::KeyPoint* std::__uninitialized_copy::__uninit_copy(cv::KeyPoint*, cv::KeyPoint*, cv::KeyPoint*) */ + +KeyPoint * +std::__uninitialized_copy::__uninit_copy + (KeyPoint *param_1,KeyPoint *param_2,KeyPoint *param_3) + +{ + undefined4 uVar1; + undefined4 uVar2; + KeyPoint *pKVar3; + KeyPoint *pKVar4; + + pKVar3 = param_1; + pKVar4 = param_3; + if (param_1 != param_2) { + do { + if (pKVar4 != (KeyPoint *)0x0) { + uVar1 = *(undefined4 *)(pKVar3 + 0x14); + *(undefined4 *)pKVar4 = *(undefined4 *)pKVar3; + *(undefined4 *)(pKVar4 + 4) = *(undefined4 *)(pKVar3 + 4); + *(undefined4 *)(pKVar4 + 8) = *(undefined4 *)(pKVar3 + 8); + /* try { // try from 00389e60 to 00489e63 has its CatchHandler @ 0038a124 */ + *(undefined4 *)(pKVar4 + 0xc) = *(undefined4 *)(pKVar3 + 0xc); + uVar2 = *(undefined4 *)(pKVar3 + 0x10); + /* try { // try from 00389e6c to 00489e6f has its CatchHandler @ 0038a0ec */ + *(undefined4 *)(pKVar4 + 0x14) = uVar1; + *(undefined4 *)(pKVar4 + 0x18) = *(undefined4 *)(pKVar3 + 0x18); + /* try { // try from 00389e78 to 00489e7b has its CatchHandler @ 0038a124 */ + *(undefined4 *)(pKVar4 + 0x10) = uVar2; + } + pKVar3 = pKVar3 + 0x1c; + pKVar4 = pKVar4 + 0x1c; + } while (param_2 != pKVar3); + param_3 = param_3 + ((((ulong)((long)param_2 - (long)(param_1 + 0x1c)) >> 2) * + 0x2db6db6db6db6db7 & 0x3fffffffffffffff) + 1) * 0x1c; + } + return param_3; +} + + +================================================================== + +### FUNC 00389ec8 (968 bytes) name=read + +/* cv::read(cv::FileNode const&, std::vector >&) */ + +void cv::read(FileNode *param_1,vector *param_2) + +{ + KeyPoint *pKVar1; + ulong uVar2; + FileNodeIterator *pFVar3; + CvFileStorage *pCVar4; + CvFileNode *pCVar5; + long lVar6; + ulong uVar7; + KeyPoint *pKVar8; + KeyPoint *pKVar9; + KeyPoint *pKVar10; + long lVar11; + ulong uVar12; + undefined8 local_e0; + undefined8 local_d8; + float local_d0; + float local_cc; + float local_c8; + float local_c4; + float local_c0; + int local_bc; + int local_b8 [2]; + long local_b0; + long local_a8; + long local_88; + long local_60; + long local_58; + long local_50; + long local_30; + long local_8; + + /* try { // try from 00389ecc to 00489ecf has its CatchHandler @ 0038a0ec */ + if ((*(long *)(param_2 + 8) - *(long *)param_2 >> 2) * 0x6db6db6db6db6db7 != 0) { + *(long *)(param_2 + 8) = *(long *)param_2; + } + FileNodeIterator::FileNodeIterator + ((FileNodeIterator *)&local_b0,*(CvFileStorage **)param_1,*(CvFileNode **)(param_1 + 8), + 0); + pCVar4 = *(CvFileStorage **)param_1; + pCVar5 = *(CvFileNode **)(param_1 + 8); + uVar2 = FileNode::size(param_1); + /* try { // try from 00389f70 to 00489f73 has its CatchHandler @ 0038a148 */ + FileNodeIterator::FileNodeIterator((FileNodeIterator *)&local_58,pCVar4,pCVar5,uVar2); + do { + if (local_58 == local_b0) goto LAB_0038a138; + while( true ) { + local_d0 = 0.0; + local_cc = 0.0; + local_bc = 0; + local_c8 = 0.0; + local_b8[0] = -1; + local_c4 = -1.0; + local_c0 = 0.0; + read((FileNode *)&local_e0,&local_d0,0.0); + pFVar3 = (FileNodeIterator *)FileNodeIterator::operator++((FileNodeIterator *)&local_b0); + /* try { // try from 00389fd0 to 0048a023 has its CatchHandler @ 003899c8 */ + local_e0 = *(undefined8 *)pFVar3; + local_d8 = *(undefined8 *)(pFVar3 + 0x28); + read((FileNode *)&local_e0,&local_cc,0.0); + pFVar3 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar3); + local_e0 = *(undefined8 *)pFVar3; + local_d8 = *(undefined8 *)(pFVar3 + 0x28); + read((FileNode *)&local_e0,&local_c8,0.0); + pFVar3 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar3); + local_e0 = *(undefined8 *)pFVar3; + local_d8 = *(undefined8 *)(pFVar3 + 0x28); + read((FileNode *)&local_e0,&local_c4,0.0); + pFVar3 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar3); + /* try { // try from 0038a058 to 0048a05b has its CatchHandler @ 0038a148 */ + local_e0 = *(undefined8 *)pFVar3; + local_d8 = *(undefined8 *)(pFVar3 + 0x28); + /* try { // try from 0038a070 to 0048a073 has its CatchHandler @ 0038a184 */ + read((FileNode *)&local_e0,&local_c0,0.0); + pFVar3 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar3); + local_e0 = *(undefined8 *)pFVar3; + local_d8 = *(undefined8 *)(pFVar3 + 0x28); + read((FileNode *)&local_e0,&local_bc,0); + pFVar3 = (FileNodeIterator *)FileNodeIterator::operator++(pFVar3); + local_e0 = *(undefined8 *)pFVar3; + local_d8 = *(undefined8 *)(pFVar3 + 0x28); + read((FileNode *)&local_e0,local_b8,0); + FileNodeIterator::operator++(pFVar3); + pKVar10 = *(KeyPoint **)(param_2 + 8); + if (pKVar10 == *(KeyPoint **)(param_2 + 0x10)) break; + if (pKVar10 != (KeyPoint *)0x0) { + /* catch() { ... } // from try @ 00389ab8 with catch @ 0038a0ec + catch() { ... } // from try @ 00389c54 with catch @ 0038a0ec + catch() { ... } // from try @ 00389cd0 with catch @ 0038a0ec + catch() { ... } // from try @ 00389e6c with catch @ 0038a0ec + catch() { ... } // from try @ 00389ecc with catch @ 0038a0ec */ + *(int *)(pKVar10 + 0x14) = local_bc; + /* try { // try from 0038a0fc to 0048a0ff has its CatchHandler @ 003899c8 */ + /* catch() { ... } // from try @ 00389c48 with catch @ 0038a100 + catch() { ... } // from try @ 00389c60 with catch @ 0038a100 */ + *(int *)(pKVar10 + 0x18) = local_b8[0]; + *(float *)pKVar10 = local_d0; + *(float *)(pKVar10 + 8) = local_c8; + *(float *)(pKVar10 + 0xc) = local_c4; + *(float *)(pKVar10 + 0x10) = local_c0; + *(float *)(pKVar10 + 4) = local_cc; + } + /* catch() { ... } // from try @ 00389e60 with catch @ 0038a124 + catch() { ... } // from try @ 00389e78 with catch @ 0038a124 */ + *(KeyPoint **)(param_2 + 8) = pKVar10 + 0x1c; + if (local_58 == local_b0) { +LAB_0038a138: + /* catch() { ... } // from try @ 00389f70 with catch @ 0038a148 + catch() { ... } // from try @ 0038a058 with catch @ 0038a148 */ + if (((local_a8 == local_50) && (local_88 == local_30)) && (local_60 == local_8)) { + /* catch() { ... } // from try @ 0038a070 with catch @ 0038a184 */ + return; + } + } + } + pKVar8 = *(KeyPoint **)param_2; + lVar11 = (long)pKVar10 - (long)pKVar8; + lVar6 = lVar11 >> 2; + uVar2 = lVar6 * 0x6db6db6db6db6db7; + if (uVar2 == 0) { + uVar12 = 0x1c; +LAB_0038a27c: + pKVar9 = operator_new(uVar12); + pKVar8 = *(KeyPoint **)param_2; + } + else { + uVar7 = lVar6 * -0x2492492492492492; + uVar12 = 0xfffffffffffffff0; + /* catch() { ... } // from try @ 0038a208 with catch @ 0038a1c0 + catch() { ... } // from try @ 0038a84c with catch @ 0038a1c0 + catch() { ... } // from try @ 0038ab0c with catch @ 0038a1c0 + catch() { ... } // from try @ 0038ab60 with catch @ 0038a1c0 + catch() { ... } // from try @ 0038ac8c with catch @ 0038a1c0 + catch() { ... } // from try @ 0038ad0c with catch @ 0038a1c0 */ + if ((uVar7 <= uVar2 && uVar2 != 0) || (0x924924924924924 < uVar7)) goto LAB_0038a27c; + uVar12 = lVar6 * 8; + pKVar9 = (KeyPoint *)0x0; + if (uVar7 != 0) goto LAB_0038a27c; + } + pKVar1 = pKVar9 + lVar11; + if (pKVar1 != (KeyPoint *)0x0) { + /* try { // try from 0038a208 to 0048a2b7 has its CatchHandler @ 0038a1c0 */ + *(float *)(pKVar9 + lVar11) = local_d0; + *(int *)(pKVar1 + 0x14) = local_bc; + *(int *)(pKVar1 + 0x18) = local_b8[0]; + *(float *)(pKVar1 + 8) = local_c8; + *(float *)(pKVar1 + 0xc) = local_c4; + *(float *)(pKVar1 + 4) = local_cc; + *(float *)(pKVar1 + 0x10) = local_c0; + } + pKVar8 = std::__uninitialized_copy::__uninit_copy + (pKVar8,pKVar10,pKVar9); + pKVar10 = std::__uninitialized_copy::__uninit_copy + (pKVar10,*(KeyPoint **)(param_2 + 8),pKVar8 + 0x1c); + if (*(void **)param_2 != (void *)0x0) { + operator_delete(*(void **)param_2); + } + *(KeyPoint **)param_2 = pKVar9; + *(KeyPoint **)(param_2 + 8) = pKVar10; + *(KeyPoint **)(param_2 + 0x10) = pKVar9 + uVar12; + } while( true ); +} + + +================================================================== + +### FUNC 0038a290 (1740 bytes) name=FUN_0038a290 + +int FUN_0038a290(int *param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + char *pcVar1; + int *piVar2; + int *piVar3; + int *piVar4; + uint uVar5; + int iVar6; + int iVar7; + uint uVar8; + uint uVar9; + int iVar10; + int iVar11; + uint uVar12; + double *pdVar13; + int *piVar14; + uint uVar15; + long lVar16; + double *pdVar17; + int iVar18; + double *pdVar19; + long lVar20; + uint uVar21; + ulong uVar22; + int iVar23; + long lVar24; + int iVar25; + double *pdVar26; + uint uVar27; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + double dVar31; + undefined1 auVar32 [16]; + double dVar33; + double dVar34; + double dVar35; + + uVar15 = (uint)param_5; + if (param_2 == 0) { + iVar10 = (int)uVar15 % 4; + iVar25 = 0; + if (iVar10 == 1) { + dVar31 = *param_3; + piVar14 = param_1; + if (0 < param_4 + -3) { + /* try { // try from 0038a7e8 to 0048a7eb has its CatchHandler @ 0038acbc */ + uVar22 = -(ulong)((uVar15 & 0x3fffffff) >> 0x1d) & 0xfffffffc00000000 | + (ulong)(uVar15 << 2) << 2; + iVar25 = 0; + do { + iVar23 = *piVar14; + iVar25 = iVar25 + 4; + piVar2 = (int *)((long)piVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2 + )); + piVar3 = (int *)((long)piVar14 + + (-(ulong)((uVar15 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar15 * 2) << 2)); + piVar4 = (int *)((long)piVar14 + + (-(ulong)(uVar15 * 3 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar15 * 3) << 2)); + piVar14 = (int *)((long)piVar14 + uVar22); + dVar31 = dVar31 + (double)(iVar23 + *piVar2 + *piVar3 + *piVar4); + } while (iVar25 < param_4 + -3); + uVar5 = param_4 - 4U >> 2; + iVar25 = (uVar5 + 1) * 4; + piVar14 = (int *)((long)param_1 + uVar22 + uVar5 * uVar22); + } + /* try { // try from 0038a84c to 0048a89f has its CatchHandler @ 0038a1c0 */ + iVar23 = iVar25; + if (iVar25 < param_4) { + do { + iVar23 = *piVar14; + iVar25 = iVar25 + 1; + piVar14 = (int *)((long)piVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar31 = dVar31 + (double)iVar23; + iVar23 = param_4; + } while (iVar25 != param_4); + } + *param_3 = dVar31; + } + else if (iVar10 == 2) { + dVar33 = *param_3; + dVar31 = param_3[1]; + iVar23 = iVar25; + if (0 < param_4) { + iVar25 = 0; + piVar14 = param_1; + do { + iVar23 = *piVar14; + iVar25 = iVar25 + 1; + piVar2 = piVar14 + 1; + piVar14 = (int *)((long)piVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar33 = dVar33 + (double)iVar23; + dVar31 = dVar31 + (double)*piVar2; + iVar23 = param_4; + } while (iVar25 != param_4); + } + *param_3 = dVar33; + param_3[1] = dVar31; + } + else { + iVar23 = 0; + if (iVar10 == 3) { + dVar34 = *param_3; + /* try { // try from 0038a8e4 to 0048a8e7 has its CatchHandler @ 0038ac5c */ + dVar33 = param_3[1]; + dVar31 = param_3[2]; + if (0 < param_4) { + iVar25 = 0; + /* try { // try from 0038a8f4 to 0048a8f7 has its CatchHandler @ 0038ac90 */ + piVar14 = param_1; + do { + iVar23 = *piVar14; + iVar25 = iVar25 + 1; + piVar2 = piVar14 + 1; + piVar3 = piVar14 + 2; + piVar14 = (int *)((long)piVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar34 = dVar34 + (double)iVar23; + dVar33 = dVar33 + (double)*piVar2; + dVar31 = dVar31 + (double)*piVar3; + iVar23 = param_4; + } while (iVar25 != param_4); + } + *param_3 = dVar34; + param_3[1] = dVar33; + param_3[2] = dVar31; + } + } + if (iVar10 < (int)uVar15) { + lVar20 = (long)iVar10; + lVar24 = lVar20; + pdVar26 = param_3 + lVar20; + lVar16 = lVar20 + 4; + while( true ) { + dVar35 = *pdVar26; + piVar14 = param_1 + lVar24 + (int)(uVar15 * iVar23); + dVar34 = pdVar26[1]; + dVar33 = pdVar26[2]; + dVar31 = pdVar26[3]; + iVar25 = iVar23; + if (iVar23 < param_4) { + do { + iVar25 = *piVar14; + iVar23 = iVar23 + 1; + piVar2 = piVar14 + 1; + piVar3 = piVar14 + 2; + piVar4 = piVar14 + 3; + piVar14 = (int *)((long)piVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar35 = dVar35 + (double)iVar25; + dVar34 = dVar34 + (double)*piVar2; + dVar33 = dVar33 + (double)*piVar3; + dVar31 = dVar31 + (double)*piVar4; + iVar25 = param_4; + } while (iVar23 != param_4); + } + iVar23 = iVar25; + pdVar26[1] = dVar34; + *pdVar26 = dVar35; + pdVar26[3] = dVar31; + pdVar26[2] = dVar33; + if (pdVar26 + 4 == param_3 + lVar20 + 4 + (ulong)((uVar15 - 1) - iVar10 >> 2) * 4) break; + lVar24 = lVar16; + pdVar26 = pdVar26 + 4; + lVar16 = lVar16 + 4; + } + } + return param_4; + } + if (uVar15 == 1) { + dVar31 = *param_3; + if (param_4 < 1) { + iVar25 = 0; + } + else { + lVar24 = 0; + iVar25 = 0; + do { + if (*(char *)(param_2 + lVar24) != '\0') { + iVar25 = iVar25 + 1; + dVar31 = dVar31 + (double)param_1[lVar24]; + } + lVar24 = lVar24 + 1; + } while ((int)lVar24 < param_4); + } + *param_3 = dVar31; + return iVar25; + } + if (uVar15 == 3) { + dVar34 = *param_3; + dVar33 = param_3[1]; + dVar31 = param_3[2]; + if (param_4 < 1) { + iVar25 = 0; + } + else { + lVar24 = 0; + iVar25 = 0; + do { + pcVar1 = (char *)(param_2 + lVar24); + lVar24 = lVar24 + 1; + if (*pcVar1 != '\0') { + iVar25 = iVar25 + 1; + dVar34 = dVar34 + (double)*param_1; + dVar33 = dVar33 + (double)param_1[1]; + dVar31 = dVar31 + (double)param_1[2]; + } + param_1 = param_1 + 3; + } while ((int)lVar24 < param_4); + } + *param_3 = dVar34; + param_3[1] = dVar33; + param_3[2] = dVar31; + return iVar25; + } + if (param_4 < 1) { + iVar25 = 0; + } + else { + uVar5 = (uVar15 - 4 >> 2) + 1; + lVar24 = 0; + iVar10 = uVar5 * 4; + if ((int)(uVar15 - 3) < 1) { + iVar10 = 0; + } + iVar25 = 0; + iVar23 = iVar10 + 1; + uVar12 = uVar15 - iVar10; + iVar6 = iVar10 + 2; + lVar16 = (long)iVar10; + iVar7 = iVar10 + 3; + pdVar26 = param_3 + lVar16; + uVar9 = (uint)((ulong)pdVar26 >> 3) & 1; + if (uVar12 < uVar9) { + uVar9 = uVar12; + } + do { + if (*(char *)(param_2 + lVar24) != '\0') { + if (0 < (int)(uVar15 - 3)) { + pdVar17 = param_3 + 2; + uVar21 = 0; + pdVar19 = param_3; + piVar14 = param_1; + do { + /* try { // try from 0038a3a4 to 0048a74b has its CatchHandler @ 0038acb4 */ + uVar21 = uVar21 + 1; + dVar31 = *pdVar17; + dVar33 = pdVar17[1]; + auVar32._0_8_ = (long)*piVar14; + auVar32._8_8_ = (long)piVar14[1]; + auVar28._0_8_ = (long)piVar14[2]; + auVar28._8_8_ = (long)piVar14[3]; + auVar32 = NEON_scvtf(auVar32,8); + auVar28 = NEON_scvtf(auVar28,8); + pdVar19[1] = pdVar19[1] + auVar32._8_8_; + *pdVar19 = *pdVar19 + auVar32._0_8_; + pdVar19 = pdVar19 + 4; + pdVar17[1] = dVar33 + auVar28._8_8_; + *pdVar17 = dVar31 + auVar28._0_8_; + pdVar17 = pdVar17 + 4; + piVar14 = piVar14 + 4; + } while (uVar21 < uVar5); + } + if (iVar10 < (int)uVar15) { + uVar21 = uVar9; + if (uVar12 < 5) { + uVar21 = uVar12; + } + iVar18 = iVar10; + if (uVar21 != 0) { + *pdVar26 = *pdVar26 + (double)param_1[lVar16]; + iVar18 = iVar23; + if (((uVar21 != 1) && + (param_3[iVar23] = param_3[iVar23] + (double)param_1[iVar23], iVar18 = iVar6, + uVar21 != 2)) && + (param_3[iVar6] = param_3[iVar6] + (double)param_1[iVar6], iVar18 = iVar7, + uVar21 == 4)) { + param_3[iVar7] = param_3[iVar7] + (double)param_1[iVar7]; + iVar18 = iVar10 + 4; + } + if (uVar21 == uVar12) goto LAB_0038a56c; + } + uVar8 = ((uVar12 - uVar21) - 4 >> 2) + 1; + iVar11 = uVar8 * 4; + if (2 < (uVar12 - 1) - uVar21) { + uVar27 = 0; + pdVar17 = param_3 + (ulong)uVar21 + lVar16; + piVar14 = param_1 + (ulong)uVar21 + lVar16; + pdVar19 = pdVar17; + do { + pdVar13 = pdVar17 + 1; + dVar31 = *pdVar17; + dVar34 = pdVar17[3]; + dVar33 = pdVar17[2]; + uVar27 = uVar27 + 1; + pdVar17 = pdVar17 + 4; + auVar30._0_8_ = (long)*piVar14; + auVar30._8_8_ = (long)piVar14[1]; + auVar29._0_8_ = (long)piVar14[2]; + auVar29._8_8_ = (long)piVar14[3]; + auVar32 = NEON_scvtf(auVar30,8); + auVar28 = NEON_scvtf(auVar29,8); + pdVar19[1] = *pdVar13 + auVar32._8_8_; + *pdVar19 = dVar31 + auVar32._0_8_; + pdVar19[3] = auVar28._8_8_ + dVar34; + pdVar19[2] = auVar28._0_8_ + dVar33; + piVar14 = piVar14 + 4; + pdVar19 = pdVar19 + 4; + } while (uVar27 < uVar8); + iVar18 = iVar18 + iVar11; + if (iVar11 == uVar12 - uVar21) goto LAB_0038a56c; + } + iVar11 = iVar18 + 1; + param_3[iVar18] = param_3[iVar18] + (double)param_1[iVar18]; + if (iVar11 < (int)uVar15) { + iVar18 = iVar18 + 2; + param_3[iVar11] = param_3[iVar11] + (double)param_1[iVar11]; + if (iVar18 < (int)uVar15) { + param_3[iVar18] = param_3[iVar18] + (double)param_1[iVar18]; + } + } + } +LAB_0038a56c: + iVar25 = iVar25 + 1; + } + lVar24 = lVar24 + 1; + param_1 = (int *)((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2)); + } while ((int)lVar24 < param_4); + } + return iVar25; +} + + +================================================================== + +### FUNC 0038a95c (1724 bytes) name=FUN_0038a95c + +int FUN_0038a95c(float *param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + char *pcVar1; + uint uVar2; + int iVar3; + int iVar4; + uint uVar5; + uint uVar6; + int iVar7; + int iVar8; + uint uVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + double *pdVar13; + float *pfVar14; + uint uVar15; + int iVar16; + long lVar17; + double *pdVar18; + int iVar19; + double *pdVar20; + ulong uVar21; + uint uVar22; + double *pdVar23; + long lVar24; + long lVar25; + long lVar26; + int iVar27; + uint uVar28; + undefined8 uVar29; + undefined8 uVar30; + float fVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + + uVar15 = (uint)param_5; + if (param_2 == 0) { + /* catch() { ... } // from try @ 0038ad34 with catch @ 0038ad70 */ + iVar7 = (int)uVar15 % 4; + iVar27 = 0; + if (iVar7 == 1) { + dVar32 = *param_3; + pfVar14 = param_1; + if (0 < param_4 + -3) { + uVar21 = -(ulong)((uVar15 & 0x3fffffff) >> 0x1d) & 0xfffffffc00000000 | + (ulong)(uVar15 << 2) << 2; + iVar27 = 0; + do { + fVar31 = *pfVar14; + iVar27 = iVar27 + 4; + pfVar10 = (float *)((long)pfVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + pfVar11 = (float *)((long)pfVar14 + + (-(ulong)((uVar15 & 0x7fffffff) >> 0x1e) & 0xfffffffc00000000 | + (ulong)(uVar15 * 2) << 2)); + pfVar12 = (float *)((long)pfVar14 + + (-(ulong)(uVar15 * 3 >> 0x1f) & 0xfffffffc00000000 | + (ulong)(uVar15 * 3) << 2)); + pfVar14 = (float *)((long)pfVar14 + uVar21); + /* try { // try from 0038aed8 to 0048aedb has its CatchHandler @ 0038b478 */ + dVar32 = dVar32 + (double)(fVar31 + *pfVar10 + *pfVar11 + *pfVar12); + } while (iVar27 < param_4 + -3); + uVar2 = param_4 - 4U >> 2; + iVar27 = (uVar2 + 1) * 4; + pfVar14 = (float *)((long)param_1 + uVar21 + uVar2 * uVar21); + } + /* try { // try from 0038af04 to 0048af87 has its CatchHandler @ 0038ad8c */ + iVar16 = iVar27; + if (iVar27 < param_4) { + do { + fVar31 = *pfVar14; + iVar27 = iVar27 + 1; + pfVar14 = (float *)((long)pfVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar32 = dVar32 + (double)fVar31; + iVar16 = param_4; + } while (iVar27 != param_4); + } + *param_3 = dVar32; + } + else if (iVar7 == 2) { + dVar33 = *param_3; + dVar32 = param_3[1]; + iVar16 = iVar27; + if (0 < param_4) { + iVar27 = 0; + pfVar14 = param_1; + do { + fVar31 = *pfVar14; + iVar27 = iVar27 + 1; + pfVar10 = pfVar14 + 1; + pfVar14 = (float *)((long)pfVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar33 = dVar33 + (double)fVar31; + dVar32 = dVar32 + (double)*pfVar10; + iVar16 = param_4; + } while (iVar27 != param_4); + } + *param_3 = dVar33; + param_3[1] = dVar32; + } + else { + /* try { // try from 0038ad88 to 0048ad8b has its CatchHandler @ 0038ad10 */ + iVar16 = 0; + /* catch() { ... } // from try @ 0038adb0 with catch @ 0038ad8c + catch() { ... } // from try @ 0038af04 with catch @ 0038ad8c + catch() { ... } // from try @ 0038afcc with catch @ 0038ad8c + catch() { ... } // from try @ 0038b288 with catch @ 0038ad8c + catch() { ... } // from try @ 0038b448 with catch @ 0038ad8c + catch() { ... } // from try @ 0038b460 with catch @ 0038ad8c + catch() { ... } // from try @ 0038b474 with catch @ 0038ad8c + catch() { ... } // from try @ 0038b49c with catch @ 0038ad8c */ + if (iVar7 == 3) { + dVar34 = *param_3; + dVar33 = param_3[1]; + dVar32 = param_3[2]; + if (0 < param_4) { + iVar27 = 0; + pfVar14 = param_1; + do { + fVar31 = *pfVar14; + iVar27 = iVar27 + 1; + pfVar10 = pfVar14 + 1; + /* try { // try from 0038afc0 to 0048afc3 has its CatchHandler @ 0038b464 */ + pfVar11 = pfVar14 + 2; + pfVar14 = (float *)((long)pfVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + /* try { // try from 0038afcc to 0048b01b has its CatchHandler @ 0038ad8c */ + dVar34 = dVar34 + (double)fVar31; + dVar33 = dVar33 + (double)*pfVar10; + dVar32 = dVar32 + (double)*pfVar11; + iVar16 = param_4; + } while (iVar27 != param_4); + } + *param_3 = dVar34; + param_3[1] = dVar33; + param_3[2] = dVar32; + } + } + if (iVar7 < (int)uVar15) { + lVar26 = (long)iVar7; + /* try { // try from 0038adb0 to 0048ae07 has its CatchHandler @ 0038ad8c */ + pdVar23 = param_3 + lVar26; + lVar25 = lVar26 + 4; + lVar17 = lVar26; + while( true ) { + lVar24 = lVar25; + dVar35 = *pdVar23; + pfVar14 = param_1 + lVar17 + (int)(uVar15 * iVar16); + dVar34 = pdVar23[1]; + dVar33 = pdVar23[2]; + dVar32 = pdVar23[3]; + iVar27 = iVar16; + if (iVar16 < param_4) { + do { + fVar31 = *pfVar14; + iVar16 = iVar16 + 1; + pfVar10 = pfVar14 + 1; + pfVar11 = pfVar14 + 2; + pfVar12 = pfVar14 + 3; + pfVar14 = (float *)((long)pfVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2)); + dVar35 = dVar35 + (double)fVar31; + dVar34 = dVar34 + (double)*pfVar10; + dVar33 = dVar33 + (double)*pfVar11; + dVar32 = dVar32 + (double)*pfVar12; + iVar27 = param_4; + /* try { // try from 0038ae24 to 0048ae4b has its CatchHandler @ 0038b478 */ + } while (iVar16 != param_4); + } + iVar16 = iVar27; + pdVar23[1] = dVar34; + *pdVar23 = dVar35; + pdVar23[3] = dVar32; + pdVar23[2] = dVar33; + if (pdVar23 + 4 == param_3 + lVar26 + 4 + (ulong)((uVar15 - 1) - iVar7 >> 2) * 4) break; + pdVar23 = pdVar23 + 4; + lVar25 = lVar24 + 4; + lVar17 = lVar24; + /* try { // try from 0038ae64 to 0048ae67 has its CatchHandler @ 0038b4a0 */ + } + } + return param_4; + } + if (uVar15 == 1) { + dVar32 = *param_3; + if (param_4 < 1) { + iVar27 = 0; + } + else { + lVar25 = 0; + /* try { // try from 0038ac8c to 0048ac8f has its CatchHandler @ 0038a1c0 */ + iVar27 = 0; + do { + /* catch() { ... } // from try @ 0038a8f4 with catch @ 0038ac90 + catch() { ... } // from try @ 0038aa94 with catch @ 0038ac90 */ + if (*(char *)(param_2 + lVar25) != '\0') { + iVar27 = iVar27 + 1; + dVar32 = dVar32 + (double)param_1[lVar25]; + } + lVar25 = lVar25 + 1; + } while ((int)lVar25 < param_4); + } + /* catch() { ... } // from try @ 0038a3a4 with catch @ 0038acb4 + catch() { ... } // from try @ 0038aa48 with catch @ 0038acb4 + catch() { ... } // from try @ 0038aacc with catch @ 0038acb4 */ + *param_3 = dVar32; + /* catch() { ... } // from try @ 0038a7e8 with catch @ 0038acbc + catch() { ... } // from try @ 0038aae8 with catch @ 0038acbc */ + return iVar27; + } + if (uVar15 == 3) { + dVar34 = *param_3; + dVar33 = param_3[1]; + dVar32 = param_3[2]; + if (param_4 < 1) { + iVar27 = 0; + } + else { + lVar25 = 0; + iVar27 = 0; + do { + pcVar1 = (char *)(param_2 + lVar25); + lVar25 = lVar25 + 1; + /* catch() { ... } // from try @ 0038ab58 with catch @ 0038acfc */ + if (*pcVar1 != '\0') { + iVar27 = iVar27 + 1; + /* try { // try from 0038ad0c to 0048ad0f has its CatchHandler @ 0038a1c0 */ + /* catch() { ... } // from try @ 0038ad88 with catch @ 0038ad10 */ + dVar34 = dVar34 + (double)*param_1; + dVar33 = dVar33 + (double)param_1[1]; + dVar32 = dVar32 + (double)param_1[2]; + } + param_1 = param_1 + 3; + } while ((int)lVar25 < param_4); + } + /* try { // try from 0038ad34 to 0048ad37 has its CatchHandler @ 0038ad70 */ + *param_3 = dVar34; + param_3[1] = dVar33; + param_3[2] = dVar32; + return iVar27; + } + if (param_4 < 1) { + iVar27 = 0; + } + else { + uVar2 = (uVar15 - 4 >> 2) + 1; + lVar25 = 0; + iVar7 = uVar2 * 4; + if ((int)(uVar15 - 3) < 1) { + iVar7 = 0; + } + iVar27 = 0; + iVar16 = iVar7 + 1; + uVar9 = uVar15 - iVar7; + iVar3 = iVar7 + 2; + lVar17 = (long)iVar7; + iVar4 = iVar7 + 3; + pdVar23 = param_3 + lVar17; + uVar6 = (uint)((ulong)pdVar23 >> 3) & 1; + if (uVar9 < uVar6) { + uVar6 = uVar9; + } + do { + /* try { // try from 0038aa48 to 0048aa57 has its CatchHandler @ 0038acb4 */ + if (*(char *)(param_2 + lVar25) != '\0') { + if (0 < (int)(uVar15 - 3)) { + /* try { // try from 0038aa60 to 0048aa63 has its CatchHandler @ 0038ac5c */ + pdVar18 = param_3 + 2; + uVar22 = 0; + pdVar20 = param_3; + pfVar14 = param_1; + do { + uVar30 = *(undefined8 *)(pfVar14 + 2); + uVar29 = *(undefined8 *)pfVar14; + uVar22 = uVar22 + 1; + dVar33 = pdVar18[1]; + dVar32 = *pdVar18; + pdVar20[1] = pdVar20[1] + (double)(float)((ulong)uVar29 >> 0x20); + *pdVar20 = *pdVar20 + (double)(float)uVar29; + /* try { // try from 0038aa94 to 0048aa97 has its CatchHandler @ 0038ac90 */ + pdVar20 = pdVar20 + 4; + pdVar18[1] = dVar33 + (double)(float)((ulong)uVar30 >> 0x20); + *pdVar18 = dVar32 + (double)(float)uVar30; + pdVar18 = pdVar18 + 4; + pfVar14 = pfVar14 + 4; + } while (uVar22 < uVar2); + } + if (iVar7 < (int)uVar15) { + uVar22 = uVar6; + if (uVar9 < 5) { + uVar22 = uVar9; + } + iVar19 = iVar7; + if (uVar22 != 0) { + /* try { // try from 0038aacc to 0048aadf has its CatchHandler @ 0038acb4 */ + *pdVar23 = *pdVar23 + (double)param_1[lVar17]; + iVar19 = iVar16; + /* try { // try from 0038aae8 to 0048aaeb has its CatchHandler @ 0038acbc */ + /* try { // try from 0038ab0c to 0048ab0f has its CatchHandler @ 0038a1c0 */ + if (((uVar22 != 1) && + (param_3[iVar16] = param_3[iVar16] + (double)param_1[iVar16], iVar19 = iVar3, + uVar22 != 2)) && + (param_3[iVar3] = param_3[iVar3] + (double)param_1[iVar3], iVar19 = iVar4, + uVar22 == 4)) { + param_3[iVar4] = param_3[iVar4] + (double)param_1[iVar4]; + iVar19 = iVar7 + 4; + } + if (uVar22 == uVar9) goto LAB_0038ac28; + } + uVar5 = ((uVar9 - uVar22) - 4 >> 2) + 1; + iVar8 = uVar5 * 4; + if (2 < (uVar9 - 1) - uVar22) { + /* try { // try from 0038ab58 to 0048ab5b has its CatchHandler @ 0038acfc */ + uVar28 = 0; + /* try { // try from 0038ab60 to 0048ab7f has its CatchHandler @ 0038a1c0 */ + pdVar18 = param_3 + (ulong)uVar22 + lVar17; + pfVar14 = param_1 + (ulong)uVar22 + lVar17; + pdVar20 = pdVar18; + do { + uVar30 = *(undefined8 *)(pfVar14 + 2); + uVar29 = *(undefined8 *)pfVar14; + pdVar13 = pdVar18 + 1; + dVar32 = *pdVar18; + dVar34 = pdVar18[3]; + dVar33 = pdVar18[2]; + uVar28 = uVar28 + 1; + pdVar18 = pdVar18 + 4; + /* try { // try from 0038aba4 to 0048aba7 has its CatchHandler @ 0038ac1c */ + pdVar20[1] = *pdVar13 + (double)(float)((ulong)uVar29 >> 0x20); + *pdVar20 = dVar32 + (double)(float)uVar29; + pdVar20[3] = (double)(float)((ulong)uVar30 >> 0x20) + dVar34; + pdVar20[2] = (double)(float)uVar30 + dVar33; + pfVar14 = pfVar14 + 4; + pdVar20 = pdVar20 + 4; + } while (uVar28 < uVar5); + iVar19 = iVar19 + iVar8; + if (iVar8 == uVar9 - uVar22) goto LAB_0038ac28; + } + iVar8 = iVar19 + 1; + param_3[iVar19] = param_3[iVar19] + (double)param_1[iVar19]; + if (iVar8 < (int)uVar15) { + iVar19 = iVar19 + 2; + param_3[iVar8] = param_3[iVar8] + (double)param_1[iVar8]; + if (iVar19 < (int)uVar15) { + /* catch() { ... } // from try @ 0038aba4 with catch @ 0038ac1c */ + param_3[iVar19] = param_3[iVar19] + (double)param_1[iVar19]; + } + } + } +LAB_0038ac28: + iVar27 = iVar27 + 1; + } + lVar25 = lVar25 + 1; + param_1 = (float *)((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2) + ); + } while ((int)lVar25 < param_4); + } + return iVar27; +} + + +================================================================== + +### FUNC 0038b018 (1608 bytes) name=FUN_0038b018 + +int FUN_0038b018(double *param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + int iVar8; + double *pdVar9; + double *pdVar10; + uint uVar11; + ulong uVar12; + long lVar13; + double *pdVar14; + uint uVar15; + double *pdVar16; + double *pdVar17; + uint uVar18; + long lVar19; + long lVar20; + int iVar21; + long lVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + int iVar28; + + uVar11 = (uint)param_5; + if (param_2 == 0) { + iVar8 = (int)uVar11 % 4; + iVar21 = 0; + if (iVar8 == 1) { + /* catch() { ... } // from try @ 0038b4c8 with catch @ 0038b4f4 */ + dVar24 = *param_3; + pdVar14 = param_1; + if (0 < param_4 + -3) { + /* catch() { ... } // from try @ 0038b4d0 with catch @ 0038b508 */ + uVar12 = -(ulong)((uVar11 & 0x3fffffff) >> 0x1d) & 0xfffffff800000000 | + (ulong)(uVar11 << 2) << 3; + iVar21 = 0; + do { + pdVar10 = (double *) + ((long)pdVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + iVar21 = iVar21 + 4; + dVar23 = *pdVar14; + /* catch() { ... } // from try @ 0038b228 with catch @ 0038b528 */ + pdVar16 = (double *) + ((long)pdVar14 + + (-(ulong)((uVar11 & 0x7fffffff) >> 0x1e) & 0xfffffff800000000 | + (ulong)(uVar11 * 2) << 3)); + pdVar17 = (double *) + ((long)pdVar14 + + (-(ulong)(uVar11 * 3 >> 0x1f) & 0xfffffff800000000 | (ulong)(uVar11 * 3) << 3)); + pdVar14 = (double *)((long)pdVar14 + uVar12); + /* catch() { ... } // from try @ 0038b210 with catch @ 0038b53c */ + dVar24 = dVar24 + dVar23 + *pdVar10 + *pdVar16 + *pdVar17; + } while (iVar21 < param_4 + -3); + /* catch() { ... } // from try @ 0038b13c with catch @ 0038b54c */ + uVar2 = param_4 - 4U >> 2; + /* catch() { ... } // from try @ 0038b064 with catch @ 0038b554 */ + /* catch() { ... } // from try @ 0038b580 with catch @ 0038b55c + catch() { ... } // from try @ 0038b634 with catch @ 0038b55c + catch() { ... } // from try @ 0038b76c with catch @ 0038b55c + catch() { ... } // from try @ 0038b83c with catch @ 0038b55c + catch() { ... } // from try @ 0038bad8 with catch @ 0038b55c + catch() { ... } // from try @ 0038bc98 with catch @ 0038b55c + catch() { ... } // from try @ 0038bcb0 with catch @ 0038b55c + catch() { ... } // from try @ 0038bcd8 with catch @ 0038b55c + catch() { ... } // from try @ 0038bcec with catch @ 0038b55c + catch() { ... } // from try @ 0038bd24 with catch @ 0038b55c */ + iVar21 = (uVar2 + 1) * 4; + pdVar14 = (double *)((long)param_1 + uVar12 + uVar2 * uVar12); + } + iVar28 = iVar21; + if (iVar21 < param_4) { + do { + iVar21 = iVar21 + 1; + dVar23 = *pdVar14; + pdVar14 = (double *) + ((long)pdVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + /* try { // try from 0038b580 to 0048b5db has its CatchHandler @ 0038b55c */ + dVar24 = dVar24 + dVar23; + iVar28 = param_4; + } while (iVar21 != param_4); + } + *param_3 = dVar24; + } + else if (iVar8 == 2) { + dVar23 = *param_3; + dVar24 = param_3[1]; + iVar28 = iVar21; + if (0 < param_4) { + iVar21 = 0; + pdVar14 = param_1; + do { + iVar21 = iVar21 + 1; + dVar25 = *pdVar14; + pdVar10 = pdVar14 + 1; + pdVar14 = (double *) + ((long)pdVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + dVar23 = dVar23 + dVar25; + dVar24 = dVar24 + *pdVar10; + iVar28 = param_4; + } while (iVar21 != param_4); + } + *param_3 = dVar23; + param_3[1] = dVar24; + } + else { + iVar28 = 0; + if (iVar8 == 3) { + dVar25 = *param_3; + dVar23 = param_3[1]; + dVar24 = param_3[2]; + if (0 < param_4) { + iVar21 = 0; + pdVar14 = param_1; + do { + iVar21 = iVar21 + 1; + dVar26 = *pdVar14; + pdVar10 = pdVar14 + 1; + pdVar16 = pdVar14 + 2; + pdVar14 = (double *) + ((long)pdVar14 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + dVar25 = dVar25 + dVar26; + dVar23 = dVar23 + *pdVar10; + dVar24 = dVar24 + *pdVar16; + iVar28 = param_4; + /* try { // try from 0038b62c to 0048b62f has its CatchHandler @ 0038bcdc */ + } while (iVar21 != param_4); + } + /* try { // try from 0038b634 to 0048b68f has its CatchHandler @ 0038b55c */ + *param_3 = dVar25; + param_3[1] = dVar23; + param_3[2] = dVar24; + } + } + /* try { // try from 0038b408 to 0048b40b has its CatchHandler @ 0038b478 */ + if (iVar8 < (int)uVar11) { + lVar13 = (long)iVar8; + /* try { // try from 0038b418 to 0048b41b has its CatchHandler @ 0038b4cc */ + /* try { // try from 0038b428 to 0048b42b has its CatchHandler @ 0038b4c4 */ + pdVar14 = param_3 + lVar13; + lVar20 = lVar13 + 4; + lVar22 = lVar13; + while( true ) { + /* try { // try from 0038b438 to 0048b43b has its CatchHandler @ 0038b478 */ + lVar19 = lVar20; + dVar26 = *pdVar14; + /* try { // try from 0038b448 to 0048b44b has its CatchHandler @ 0038ad8c */ + pdVar10 = param_1 + lVar22 + (int)(uVar11 * iVar28); + dVar25 = pdVar14[1]; + /* catch() { ... } // from try @ 0038b038 with catch @ 0038b450 + catch() { ... } // from try @ 0038b280 with catch @ 0038b450 */ + dVar23 = pdVar14[2]; + dVar24 = pdVar14[3]; + iVar21 = iVar28; + if (iVar28 < param_4) { + do { + iVar28 = iVar28 + 1; + /* try { // try from 0038b460 to 0048b463 has its CatchHandler @ 0038ad8c */ + dVar27 = *pdVar10; + /* catch() { ... } // from try @ 0038afc0 with catch @ 0038b464 */ + pdVar16 = pdVar10 + 1; + pdVar17 = pdVar10 + 2; + pdVar9 = pdVar10 + 3; + /* try { // try from 0038b474 to 0048b477 has its CatchHandler @ 0038ad8c */ + pdVar10 = (double *) + ((long)pdVar10 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + /* catch() { ... } // from try @ 0038ae24 with catch @ 0038b478 + catch() { ... } // from try @ 0038aed8 with catch @ 0038b478 + catch() { ... } // from try @ 0038b408 with catch @ 0038b478 + catch() { ... } // from try @ 0038b438 with catch @ 0038b478 */ + dVar26 = dVar26 + dVar27; + dVar25 = dVar25 + *pdVar16; + dVar23 = dVar23 + *pdVar17; + dVar24 = dVar24 + *pdVar9; + iVar21 = param_4; + } while (iVar28 != param_4); + } + iVar28 = iVar21; + /* try { // try from 0038b49c to 0048b49f has its CatchHandler @ 0038ad8c */ + /* catch() { ... } // from try @ 0038ae64 with catch @ 0038b4a0 */ + pdVar14[1] = dVar25; + *pdVar14 = dVar26; + pdVar14[3] = dVar24; + pdVar14[2] = dVar23; + if (pdVar14 + 4 == param_3 + lVar13 + 4 + (ulong)((uVar11 - 1) - iVar8 >> 2) * 4) break; + /* catch() { ... } // from try @ 0038b428 with catch @ 0038b4c4 */ + pdVar14 = pdVar14 + 4; + lVar20 = lVar19 + 4; + lVar22 = lVar19; + /* try { // try from 0038b4c8 to 0048b4cb has its CatchHandler @ 0038b4f4 */ + } + } + /* catch() { ... } // from try @ 0038b418 with catch @ 0038b4cc */ + /* try { // try from 0038b4d0 to 0048b4d3 has its CatchHandler @ 0038b508 */ + /* catch() { ... } // from try @ 0038b25c with catch @ 0038b4d4 */ + return param_4; + } + /* try { // try from 0038b038 to 0048b04f has its CatchHandler @ 0038b450 */ + if (uVar11 == 1) { + dVar24 = *param_3; + if (param_4 < 1) { + iVar21 = 0; + } + else { + lVar20 = 0; + iVar21 = 0; + do { + if (*(char *)(param_2 + lVar20) != '\0') { + iVar21 = iVar21 + 1; + dVar24 = dVar24 + param_1[lVar20]; + } + lVar20 = lVar20 + 1; + } while ((int)lVar20 < param_4); + } + *param_3 = dVar24; + return iVar21; + } + if (uVar11 == 3) { + dVar25 = *param_3; + dVar23 = param_3[1]; + dVar24 = param_3[2]; + if (param_4 < 1) { + iVar21 = 0; + } + else { + lVar20 = 0; + iVar21 = 0; + do { + pcVar1 = (char *)(param_2 + lVar20); + lVar20 = lVar20 + 1; + if (*pcVar1 != '\0') { + iVar21 = iVar21 + 1; + dVar25 = dVar25 + *param_1; + dVar23 = dVar23 + param_1[1]; + dVar24 = dVar24 + param_1[2]; + } + param_1 = param_1 + 3; + } while ((int)lVar20 < param_4); + } + *param_3 = dVar25; + param_3[1] = dVar23; + param_3[2] = dVar24; + return iVar21; + } + if (param_4 < 1) { + iVar21 = 0; + } + else { + uVar6 = uVar11 - 4 >> 2; + uVar2 = uVar6 + 1; + /* try { // try from 0038b064 to 0048b067 has its CatchHandler @ 0038b554 */ + uVar5 = uVar2 * 4; + if ((int)(uVar11 - 3) < 1) { + uVar5 = 0; + } + lVar20 = 0; + uVar7 = uVar11 - uVar5; + lVar22 = (long)(int)uVar5; + pdVar14 = param_3 + lVar22; + uVar4 = (uint)((ulong)pdVar14 >> 3) & 1; + iVar21 = 0; + if (uVar7 < uVar4) { + uVar4 = uVar7; + } + iVar8 = uVar7 - uVar4; + uVar3 = (iVar8 - 2U >> 1) + 1; + iVar28 = uVar3 * 2; + do { + if (*(char *)(param_2 + lVar20) != '\0') { + if (0 < (int)(uVar11 - 3)) { + /* try { // try from 0038b13c to 0048b13f has its CatchHandler @ 0038b54c */ + if ((param_3 < param_1 + 8 && param_1 < param_3 + 8) || (uVar2 < 4)) { + /* try { // try from 0038b280 to 0048b283 has its CatchHandler @ 0038b450 */ + pdVar10 = param_3; + pdVar16 = param_1 + 1; + do { + /* try { // try from 0038b288 to 0048b28b has its CatchHandler @ 0038ad8c */ + pdVar17 = pdVar16 + 4; + dVar24 = pdVar16[-1]; + pdVar10[1] = pdVar10[1] + *pdVar16; + *pdVar10 = *pdVar10 + dVar24; + dVar24 = pdVar16[1]; + pdVar10[3] = pdVar10[3] + pdVar16[2]; + pdVar10[2] = pdVar10[2] + dVar24; + pdVar10 = pdVar10 + 4; + pdVar16 = pdVar17; + } while (pdVar17 != param_1 + (ulong)uVar6 * 4 + 5); + } + else { + pdVar10 = param_3 + 2; + uVar18 = 0; + pdVar16 = param_1; + pdVar17 = param_3; + do { + pdVar9 = pdVar16 + 1; + dVar27 = *pdVar16; + uVar18 = uVar18 + 1; + dVar23 = pdVar10[1]; + dVar24 = *pdVar10; + dVar26 = pdVar16[3]; + dVar25 = pdVar16[2]; + pdVar16 = pdVar16 + 4; + pdVar17[1] = pdVar17[1] + *pdVar9; + *pdVar17 = *pdVar17 + dVar27; + pdVar17 = pdVar17 + 4; + pdVar10[1] = dVar23 + dVar26; + *pdVar10 = dVar24 + dVar25; + pdVar10 = pdVar10 + 4; + } while (uVar18 < uVar2); + } + } + if ((int)uVar5 < (int)uVar11) { + if ((param_1 + lVar22 < param_3 + lVar22 + 2 && pdVar14 < param_1 + lVar22 + 2) || + (uVar7 < 8)) { + lVar13 = 0; + do { + *(double *)((long)pdVar14 + lVar13) = + *(double *)((long)pdVar14 + lVar13) + + *(double *)((long)(param_1 + lVar22) + lVar13); + lVar13 = lVar13 + 8; + } while (lVar13 != ((ulong)((uVar11 - 1) - uVar5) + 1) * 8); + } + else { + uVar18 = uVar5; + if (uVar4 != 0) { + param_3[lVar22] = param_3[lVar22] + param_1[lVar22]; + uVar18 = uVar5 + 1; + } + if (iVar8 != 1) { + uVar15 = 0; + pdVar10 = param_3 + (ulong)uVar4 + lVar22; + pdVar16 = param_3 + (ulong)uVar4 + lVar22; + pdVar17 = param_1 + (ulong)uVar4 + lVar22; + do { + dVar23 = *pdVar17; + uVar15 = uVar15 + 1; + dVar24 = *pdVar16; + /* try { // try from 0038b210 to 0048b213 has its CatchHandler @ 0038b53c */ + pdVar10[1] = pdVar16[1] + pdVar17[1]; + *pdVar10 = dVar24 + dVar23; + pdVar10 = pdVar10 + 2; + pdVar16 = pdVar16 + 2; + pdVar17 = pdVar17 + 2; + } while (uVar15 < uVar3); + uVar18 = uVar18 + iVar28; + if (iVar28 == iVar8) goto LAB_0038b23c; + } + /* try { // try from 0038b228 to 0048b22b has its CatchHandler @ 0038b528 */ + uVar12 = -(ulong)(uVar18 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar18 << 3; + *(double *)((long)param_3 + uVar12) = + *(double *)((long)param_3 + uVar12) + *(double *)((long)param_1 + uVar12); + } + } +LAB_0038b23c: + iVar21 = iVar21 + 1; + } + lVar20 = lVar20 + 1; + param_1 = (double *) + ((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3)); + } while ((int)lVar20 < param_4); + } + /* try { // try from 0038b25c to 0048b25f has its CatchHandler @ 0038b4d4 */ + return iVar21; +} + + +================================================================== + +### FUNC 0038b660 (1000 bytes) name=FUN_0038b660 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint FUN_0038b660(double *param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + uint uVar6; + double *pdVar7; + ulong uVar8; + uint uVar9; + byte bVar10; + byte bVar11; + byte bVar12; + byte bVar13; + byte bVar14; + byte bVar15; + byte bVar16; + byte bVar17; + int iVar18; + uint uVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + long lVar24; + long lVar25; + long lVar26; + long lVar27; + long lVar28; + long lVar29; + long lVar30; + long lVar31; + long lVar32; + long lVar33; + long lVar34; + long lVar35; + long lVar36; + long lVar37; + long lVar38; + long lVar39; + + iVar5 = param_2 + -3; + bVar10 = (byte)_DAT_0038ba50; + bVar11 = (byte)((ulong)_DAT_0038ba50 >> 8); + bVar12 = (byte)((ulong)_DAT_0038ba50 >> 0x10); + bVar13 = (byte)((ulong)_DAT_0038ba50 >> 0x18); + bVar14 = (byte)_UNK_0038ba58; + bVar15 = (byte)((ulong)_UNK_0038ba58 >> 8); + bVar16 = (byte)((ulong)_UNK_0038ba58 >> 0x10); + bVar17 = (byte)((ulong)_UNK_0038ba58 >> 0x18); + if (iVar5 < 1) { + uVar19 = 0; + uVar1 = uVar19; + goto LAB_0038b880; + } + uVar19 = param_2 - 4U >> 2; + iVar20 = uVar19 + 1; + uVar1 = (uVar19 - 3 >> 2) + 1; + if (param_2 - 4U < 0xc) { + uVar19 = 0; + uVar2 = uVar19; +LAB_0038b78c: + uVar8 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + uVar1 = uVar2 + 4; + uVar19 = uVar19 + (uint)(*(double *)((long)param_1 + uVar8) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 8) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 0x10) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 0x18) != 0.0); + if ((int)uVar1 < iVar5) { + uVar8 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + uVar2 = uVar2 + 8; + uVar19 = uVar19 + (uint)(*(double *)((long)param_1 + uVar8) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 8) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 0x10) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 0x18) != 0.0); + /* try { // try from 0038b830 to 0048b833 has its CatchHandler @ 0038bd14 */ + if ((int)uVar2 < iVar5) { + uVar8 = -(ulong)(uVar2 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar2 << 3; + /* try { // try from 0038b83c to 0048b88f has its CatchHandler @ 0038b55c */ + uVar19 = uVar19 + (uint)(*(double *)((long)param_1 + uVar8) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 8) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 0x10) != 0.0) + + (uint)(*(double *)((long)param_1 + uVar8 + 0x18) != 0.0); + } + } + } + else { + /* try { // try from 0038b694 to 0048b6b3 has its CatchHandler @ 0038bcb4 */ + iVar18 = 0; + iVar21 = 0; + iVar22 = 0; + iVar23 = 0; + uVar19 = 0; + pdVar7 = param_1; + do { + uVar19 = uVar19 + 1; + /* try { // try from 0038b6cc to 0048b6cf has its CatchHandler @ 0038bcf0 */ + lVar28 = -(ulong)(pdVar7[1] == 0.0); + lVar30 = -(ulong)(pdVar7[5] == 0.0); + lVar32 = -(ulong)(*pdVar7 == 0.0); + lVar33 = -(ulong)(pdVar7[4] == 0.0); + lVar26 = -(ulong)(pdVar7[2] == 0.0); + lVar27 = -(ulong)(pdVar7[6] == 0.0); + lVar38 = -(ulong)(pdVar7[8] == 0.0); + lVar39 = -(ulong)(pdVar7[0xc] == 0.0); + lVar36 = -(ulong)(pdVar7[9] == 0.0); + lVar37 = -(ulong)(pdVar7[0xd] == 0.0); + lVar24 = -(ulong)(pdVar7[3] == 0.0); + lVar25 = -(ulong)(pdVar7[7] == 0.0); + /* try { // try from 0038b740 to 0048b743 has its CatchHandler @ 0038bcb4 */ + lVar34 = -(ulong)(pdVar7[10] == 0.0); + lVar35 = -(ulong)(pdVar7[0xe] == 0.0); + lVar29 = -(ulong)(pdVar7[0xb] == 0.0); + lVar31 = -(ulong)(pdVar7[0xf] == 0.0); + /* try { // try from 0038b76c to 0048b7ef has its CatchHandler @ 0038b55c */ + iVar18 = iVar18 + CONCAT13(bVar13 & ~(byte)((ulong)lVar32 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar32 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar32 >> 8), + bVar10 & ~(byte)lVar32))) + + CONCAT13(bVar13 & ~(byte)((ulong)lVar28 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar28 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar28 >> 8), + bVar10 & ~(byte)lVar28))) + + CONCAT13(bVar13 & ~(byte)((ulong)lVar26 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar26 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar26 >> 8), + bVar10 & ~(byte)lVar26))) + + CONCAT13(bVar13 & ~(byte)((ulong)lVar24 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar24 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar24 >> 8), + bVar10 & ~(byte)lVar24))); + iVar21 = iVar21 + CONCAT13(bVar17 & ~(byte)((ulong)lVar33 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar33 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar33 >> 8), + bVar14 & ~(byte)lVar33))) + + CONCAT13(bVar17 & ~(byte)((ulong)lVar30 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar30 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar30 >> 8), + bVar14 & ~(byte)lVar30))) + + CONCAT13(bVar17 & ~(byte)((ulong)lVar27 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar27 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar27 >> 8), + bVar14 & ~(byte)lVar27))) + + CONCAT13(bVar17 & ~(byte)((ulong)lVar25 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar25 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar25 >> 8), + bVar14 & ~(byte)lVar25))); + iVar22 = iVar22 + CONCAT13(bVar13 & ~(byte)((ulong)lVar38 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar38 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar38 >> 8), + bVar10 & ~(byte)lVar38))) + + CONCAT13(bVar13 & ~(byte)((ulong)lVar36 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar36 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar36 >> 8), + bVar10 & ~(byte)lVar36))) + + CONCAT13(bVar13 & ~(byte)((ulong)lVar34 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar34 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar34 >> 8), + bVar10 & ~(byte)lVar34))) + + CONCAT13(bVar13 & ~(byte)((ulong)lVar29 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar29 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar29 >> 8), + bVar10 & ~(byte)lVar29))); + iVar23 = iVar23 + CONCAT13(bVar17 & ~(byte)((ulong)lVar39 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar39 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar39 >> 8), + bVar14 & ~(byte)lVar39))) + + CONCAT13(bVar17 & ~(byte)((ulong)lVar37 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar37 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar37 >> 8), + bVar14 & ~(byte)lVar37))) + + CONCAT13(bVar17 & ~(byte)((ulong)lVar35 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar35 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar35 >> 8), + bVar14 & ~(byte)lVar35))) + + CONCAT13(bVar17 & ~(byte)((ulong)lVar31 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar31 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar31 >> 8), + bVar14 & ~(byte)lVar31))); + pdVar7 = pdVar7 + 0x10; + } while (uVar19 < uVar1); + uVar19 = iVar18 + iVar21 + iVar22 + iVar23; + uVar2 = uVar1 * 0x10; + if (iVar20 != uVar1 * 4) goto LAB_0038b78c; + } + uVar1 = iVar20 * 4; +LAB_0038b880: + if ((int)uVar1 < param_2) { + uVar6 = param_2 - uVar1; + pdVar7 = param_1 + (int)uVar1; + /* try { // try from 0038b89c to 0048b89f has its CatchHandler @ 0038bca0 */ + uVar2 = (uint)((ulong)pdVar7 >> 3) & 1; + if (uVar6 < uVar2) { + uVar2 = uVar6; + } + if (uVar6 < 6) { + uVar2 = uVar6; + } + uVar3 = uVar1; + if (uVar2 != 0) { + /* try { // try from 0038b8b4 to 0048b8b7 has its CatchHandler @ 0038bdb8 */ + uVar3 = uVar1 + 1; + uVar19 = uVar19 + (param_1[(int)uVar1] != 0.0); + if (uVar2 != 1) { + uVar3 = uVar1 + 2; + uVar19 = uVar19 + (pdVar7[1] != 0.0); + if (uVar2 != 2) { + uVar3 = uVar1 + 3; + uVar19 = uVar19 + (pdVar7[2] != 0.0); + if (uVar2 != 3) { + uVar3 = uVar1 + 4; + uVar19 = uVar19 + (pdVar7[3] != 0.0); + if (uVar2 == 5) { + uVar3 = uVar1 + 5; + uVar19 = uVar19 + (pdVar7[4] != 0.0); + } + } + } + } + if (uVar2 == uVar6) { + return uVar19; + } + } + uVar4 = ((uVar6 - uVar2) - 4 >> 2) + 1; + iVar5 = uVar4 * 4; + if (2 < (uVar6 - 1) - uVar2) { + iVar20 = 0; + iVar18 = 0; + iVar21 = 0; + iVar22 = 0; + uVar9 = 0; + pdVar7 = param_1 + (ulong)uVar2 + (long)(int)uVar1; + do { + uVar9 = uVar9 + 1; + /* try { // try from 0038b98c to 0048b98f has its CatchHandler @ 0038bdb0 */ + lVar26 = -(ulong)(*pdVar7 == 0.0); + lVar27 = -(ulong)(pdVar7[1] == 0.0); + lVar24 = -(ulong)(pdVar7[2] == 0.0); + lVar25 = -(ulong)(pdVar7[3] == 0.0); + iVar20 = iVar20 + CONCAT13(bVar13 & ~(byte)((ulong)lVar26 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar26 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar26 >> 8), + bVar10 & ~(byte)lVar26))); + iVar18 = iVar18 + CONCAT13(bVar17 & ~(byte)((ulong)lVar27 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar27 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar27 >> 8), + bVar14 & ~(byte)lVar27))); + iVar21 = iVar21 + CONCAT13(bVar13 & ~(byte)((ulong)lVar24 >> 0x18), + CONCAT12(bVar12 & ~(byte)((ulong)lVar24 >> 0x10), + CONCAT11(bVar11 & ~(byte)((ulong)lVar24 >> 8), + bVar10 & ~(byte)lVar24))); + iVar22 = iVar22 + CONCAT13(bVar17 & ~(byte)((ulong)lVar25 >> 0x18), + CONCAT12(bVar16 & ~(byte)((ulong)lVar25 >> 0x10), + CONCAT11(bVar15 & ~(byte)((ulong)lVar25 >> 8), + bVar14 & ~(byte)lVar25))); + pdVar7 = pdVar7 + 4; + } while (uVar9 < uVar4); + uVar3 = uVar3 + iVar5; + uVar19 = uVar19 + iVar20 + iVar18 + iVar21 + iVar22; + if (iVar5 == uVar6 - uVar2) { + return uVar19; + } + } + uVar8 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; + uVar19 = uVar19 + (*(double *)((long)param_1 + uVar8) != 0.0); + if (((int)(uVar3 + 1) < param_2) && + (uVar19 = uVar19 + (*(double *)((long)param_1 + uVar8 + 8) != 0.0), + (int)(uVar3 + 2) < param_2)) { + uVar19 = uVar19 + (*(double *)((long)param_1 + uVar8 + 0x10) != 0.0); + } + } + return uVar19; +} + + +================================================================== + +### FUNC 0038ba60 (8008 bytes) name=FUN_0038ba60 + +uint FUN_0038ba60(byte *param_1,long param_2,byte *param_3,byte *param_4,uint param_5,uint param_6) + +{ + char *pcVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte bVar18; + byte bVar19; + uint3 uVar20; + uint3 uVar21; + long lVar22; + long lVar23; + long lVar24; + long lVar25; + byte *pbVar26; + uint uVar27; + int iVar28; + byte *pbVar29; + long lVar30; + int iVar31; + long lVar32; + uint uVar33; + long lVar34; + int iVar35; + long lVar36; + long lVar37; + byte *pbVar38; + long lVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + uint uVar43; + long lVar44; + long lVar45; + long lVar46; + long lVar47; + long lVar48; + long lVar49; + byte bVar50; + byte bVar51; + int iVar52; + int iVar53; + int iVar54; + int iVar55; + undefined8 uVar56; + uint uVar57; + int iVar58; + int iVar59; + int iVar60; + int iVar61; + uint uVar62; + int iVar63; + undefined8 uVar64; + uint uVar65; + int iVar66; + uint uVar67; + int iVar68; + uint uVar69; + int iVar70; + uint uVar71; + int iVar72; + uint uVar73; + int iVar74; + undefined8 uVar75; + long lVar76; + uint uVar77; + uint uVar78; + uint uVar79; + uint uVar80; + uint uVar81; + uint uVar82; + undefined8 uVar83; + undefined8 uVar84; + uint uVar85; + undefined8 uVar86; + undefined8 uVar87; + undefined8 uVar88; + undefined8 uVar89; + uint uVar90; + undefined8 uVar91; + uint uVar92; + uint uVar93; + undefined8 uVar94; + undefined8 uVar95; + long lVar96; + undefined8 uVar97; + undefined8 uVar98; + undefined8 uVar99; + int iVar100; + uint uVar101; + int iVar102; + int iVar103; + int iVar104; + int iVar105; + undefined8 uVar106; + int iVar107; + int iVar108; + undefined8 uVar109; + int iVar110; + int iVar111; + int iVar112; + int iVar113; + int iVar114; + int iVar115; + int iVar116; + int iVar117; + int iVar118; + int iVar119; + int iVar120; + int iVar121; + int iVar122; + int iVar123; + int iVar124; + int iVar125; + int iVar126; + uint uVar127; + + /* try { // try from 0038ba60 to 0048ba63 has its CatchHandler @ 0038bda0 */ + /* try { // try from 0038ba78 to 0048ba7b has its CatchHandler @ 0038bd8c */ + if (param_2 != 0) { + if (param_6 == 1) { + iVar31 = *(int *)param_3; + iVar28 = *(int *)param_4; + if ((int)param_5 < 1) { + uVar33 = 0; + } + else { + lVar32 = 0; + uVar33 = 0; + do { + if (*(char *)(param_2 + lVar32) != '\0') { + bVar50 = param_1[lVar32]; + uVar33 = uVar33 + 1; + iVar31 = iVar31 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + } + lVar32 = lVar32 + 1; + } while ((int)lVar32 < (int)param_5); + } + *(int *)param_3 = iVar31; + *(int *)param_4 = iVar28; + return uVar33; + } + if (param_6 == 3) { + iVar31 = *(int *)param_3; + iVar28 = *(int *)(param_3 + 4); + iVar35 = *(int *)(param_3 + 8); + iVar53 = *(int *)param_4; + iVar59 = *(int *)(param_4 + 4); + iVar54 = *(int *)(param_4 + 8); + if ((int)param_5 < 1) { + uVar33 = 0; + } + else { + lVar32 = 0; + uVar33 = 0; + do { + pcVar1 = (char *)(param_2 + lVar32); + lVar32 = lVar32 + 1; + if (*pcVar1 != '\0') { + bVar50 = *param_1; + uVar33 = uVar33 + 1; + bVar51 = param_1[1]; + bVar18 = param_1[2]; + iVar31 = iVar31 + (uint)bVar50; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + iVar59 = iVar59 + (uint)bVar51 * (uint)bVar51; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar28 = iVar28 + (uint)bVar51; + iVar35 = iVar35 + (uint)bVar18; + } + param_1 = param_1 + 3; + } while ((int)lVar32 < (int)param_5); + } + *(int *)param_3 = iVar31; + *(int *)(param_3 + 4) = iVar28; + *(int *)(param_3 + 8) = iVar35; + *(int *)param_4 = iVar53; + *(int *)(param_4 + 4) = iVar59; + *(int *)(param_4 + 8) = iVar54; + return uVar33; + } + if ((int)param_5 < 1) { + return 0; + } + /* try { // try from 0038baac to 0048baaf has its CatchHandler @ 0038bd38 */ + uVar33 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + lVar37 = (ulong)param_6 * 4; + lVar32 = 0; + if (param_6 < uVar33) { + uVar33 = param_6; + } + /* try { // try from 0038bad0 to 0048bad3 has its CatchHandler @ 0038bca0 */ + pbVar26 = param_1 + param_6; + /* try { // try from 0038bad8 to 0048badb has its CatchHandler @ 0038b55c */ + uVar101 = 0; + lVar39 = (ulong)uVar33 * 4; + uVar85 = ((param_6 - uVar33) - 0x10 >> 4) + 1; + iVar31 = uVar85 * 0x10; + do { + if (*(char *)(param_2 + lVar32) != '\0') { + if (0 < (int)param_6) { + if (((param_6 < 0x13 || param_4 < param_3 + 0x40 && param_3 < param_4 + 0x40) || + param_3 < pbVar26 && param_1 < param_3 + lVar37) || + (param_4 < pbVar26 && param_1 < param_4 + lVar37)) { + lVar36 = 0; + do { + bVar50 = param_1[lVar36]; + iVar28 = *(int *)(param_4 + lVar36 * 4); + *(uint *)(param_3 + lVar36 * 4) = *(int *)(param_3 + lVar36 * 4) + (uint)bVar50; + *(uint *)(param_4 + lVar36 * 4) = iVar28 + (uint)bVar50 * (uint)bVar50; + lVar36 = lVar36 + 1; + } while ((int)lVar36 < (int)param_6); + } + else { + uVar27 = uVar33; + if (uVar33 != 0) { + bVar50 = *param_1; + iVar28 = *(int *)param_4; + *(uint *)param_3 = *(int *)param_3 + (uint)bVar50; + *(uint *)param_4 = iVar28 + (uint)bVar50 * (uint)bVar50; + if (uVar33 != 1) { + bVar50 = param_1[1]; + iVar28 = *(int *)(param_4 + 4); + *(uint *)(param_3 + 4) = *(int *)(param_3 + 4) + (uint)bVar50; + *(uint *)(param_4 + 4) = iVar28 + (uint)bVar50 * (uint)bVar50; + if (uVar33 == 3) { + bVar50 = param_1[2]; + iVar28 = *(int *)(param_4 + 8); + *(uint *)(param_3 + 8) = *(int *)(param_3 + 8) + (uint)bVar50; + *(uint *)(param_4 + 8) = iVar28 + (uint)bVar50 * (uint)bVar50; + } + else { + uVar27 = 2; + } + } + } + if (0xe < (param_6 - 1) - uVar33) { + uVar43 = 0; + pbVar29 = param_3 + lVar39; + pbVar42 = param_4 + lVar39; + pbVar40 = param_1 + uVar33; + pbVar38 = param_3 + lVar39; + pbVar41 = param_4 + lVar39; + do { + uVar64 = *(undefined8 *)(pbVar40 + 8); + uVar56 = *(undefined8 *)pbVar40; + uVar75 = *(undefined8 *)pbVar29; + uVar94 = *(undefined8 *)(pbVar41 + 8); + uVar91 = *(undefined8 *)pbVar41; + uVar109 = *(undefined8 *)(pbVar29 + 0x18); + uVar106 = *(undefined8 *)(pbVar29 + 0x10); + uVar99 = *(undefined8 *)(pbVar29 + 0x28); + uVar98 = *(undefined8 *)(pbVar29 + 0x20); + uVar20 = CONCAT12((char)((ulong)uVar56 >> 8),(short)uVar56) & 0xff00ff; + bVar50 = (byte)((ulong)uVar56 >> 0x28); + uVar97 = *(undefined8 *)(pbVar29 + 0x38); + uVar95 = *(undefined8 *)(pbVar29 + 0x30); + uVar21 = CONCAT12((char)((ulong)uVar64 >> 8),(short)uVar64) & 0xff00ff; + bVar51 = (byte)((ulong)uVar64 >> 0x28); + uVar89 = *(undefined8 *)(pbVar41 + 0x18); + uVar88 = *(undefined8 *)(pbVar41 + 0x10); + uVar87 = *(undefined8 *)(pbVar41 + 0x28); + uVar86 = *(undefined8 *)(pbVar41 + 0x20); + /* try { // try from 0038bc58 to 0048bc5b has its CatchHandler @ 0038bcb4 */ + uVar81 = uVar20 & 0xffff; + uVar90 = (uint)(byte)((ulong)uVar56 >> 0x10); + uVar84 = *(undefined8 *)(pbVar41 + 0x38); + uVar83 = *(undefined8 *)(pbVar41 + 0x30); + uVar67 = CONCAT12(bVar50,(ushort)(byte)((ulong)uVar56 >> 0x20)) & 0xffff; + uVar71 = (uint)(byte)((ulong)uVar56 >> 0x30); + /* try { // try from 0038bc68 to 0048bc6b has its CatchHandler @ 0038bd30 */ + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)(byte)((ulong)uVar64 >> 0x10); + uVar127 = CONCAT12(bVar51,(ushort)(byte)((ulong)uVar64 >> 0x20)) & 0xffff; + uVar62 = (uint)(byte)((ulong)uVar64 >> 0x30); + uVar43 = uVar43 + 1; + /* try { // try from 0038bc78 to 0048bc7b has its CatchHandler @ 0038bd28 */ + uVar82 = (uint)(byte)(uVar20 >> 0x10); + uVar92 = (uint)(byte)((ulong)uVar56 >> 0x18); + uVar69 = (uint)bVar50; + uVar73 = (uint)(byte)((ulong)uVar56 >> 0x38); + /* try { // try from 0038bc88 to 0048bc8b has its CatchHandler @ 0038bcb4 */ + uVar78 = (uint)(byte)(uVar21 >> 0x10); + uVar80 = (uint)(byte)((ulong)uVar64 >> 0x18); + uVar57 = (uint)bVar51; + uVar65 = (uint)(byte)((ulong)uVar64 >> 0x38); + /* try { // try from 0038bc98 to 0048bc9b has its CatchHandler @ 0038b55c */ + *(ulong *)(pbVar38 + 8) = + CONCAT44((int)((ulong)*(undefined8 *)(pbVar29 + 8) >> 0x20) + uVar92, + (int)*(undefined8 *)(pbVar29 + 8) + uVar90); + *(ulong *)pbVar38 = + CONCAT44((int)((ulong)uVar75 >> 0x20) + uVar82,(int)uVar75 + uVar81); + pbVar29 = pbVar29 + 0x40; + /* catch() { ... } // from try @ 0038b89c with catch @ 0038bca0 + catch() { ... } // from try @ 0038bad0 with catch @ 0038bca0 */ + pbVar41 = pbVar41 + 0x40; + /* try { // try from 0038bcb0 to 0048bcb3 has its CatchHandler @ 0038b55c */ + /* catch() { ... } // from try @ 0038b694 with catch @ 0038bcb4 + catch() { ... } // from try @ 0038b740 with catch @ 0038bcb4 + catch() { ... } // from try @ 0038bc58 with catch @ 0038bcb4 + catch() { ... } // from try @ 0038bc88 with catch @ 0038bcb4 */ + *(ulong *)(pbVar38 + 0x18) = + CONCAT44(uVar73 + (int)((ulong)uVar109 >> 0x20),uVar71 + (int)uVar109); + *(ulong *)(pbVar38 + 0x10) = + CONCAT44(uVar69 + (int)((ulong)uVar106 >> 0x20),uVar67 + (int)uVar106); + *(ulong *)(pbVar38 + 0x28) = + CONCAT44(uVar80 + (int)((ulong)uVar99 >> 0x20),uVar79 + (int)uVar99); + *(ulong *)(pbVar38 + 0x20) = + CONCAT44(uVar78 + (int)((ulong)uVar98 >> 0x20),uVar77 + (int)uVar98); + *(ulong *)(pbVar38 + 0x38) = + CONCAT44(uVar65 + (int)((ulong)uVar97 >> 0x20),uVar62 + (int)uVar97); + *(ulong *)(pbVar38 + 0x30) = + CONCAT44(uVar57 + (int)((ulong)uVar95 >> 0x20),uVar127 + (int)uVar95); + *(ulong *)(pbVar42 + 8) = + CONCAT44((int)((ulong)uVar94 >> 0x20) + uVar92 * uVar92, + (int)uVar94 + uVar90 * uVar90); + *(ulong *)pbVar42 = + CONCAT44((int)((ulong)uVar91 >> 0x20) + uVar82 * uVar82, + (int)uVar91 + uVar81 * uVar81); + *(ulong *)(pbVar42 + 0x18) = + CONCAT44((int)((ulong)uVar89 >> 0x20) + uVar73 * uVar73, + (int)uVar89 + uVar71 * uVar71); + *(ulong *)(pbVar42 + 0x10) = + CONCAT44((int)((ulong)uVar88 >> 0x20) + uVar69 * uVar69, + (int)uVar88 + uVar67 * uVar67); + /* try { // try from 0038bcd8 to 0048bcdb has its CatchHandler @ 0038b55c */ + /* catch() { ... } // from try @ 0038b62c with catch @ 0038bcdc */ + *(ulong *)(pbVar42 + 0x28) = + CONCAT44((int)((ulong)uVar87 >> 0x20) + uVar80 * uVar80, + (int)uVar87 + uVar79 * uVar79); + *(ulong *)(pbVar42 + 0x20) = + CONCAT44((int)((ulong)uVar86 >> 0x20) + uVar78 * uVar78, + (int)uVar86 + uVar77 * uVar77); + *(ulong *)(pbVar42 + 0x38) = + CONCAT44((int)((ulong)uVar84 >> 0x20) + uVar65 * uVar65, + (int)uVar84 + uVar62 * uVar62); + *(ulong *)(pbVar42 + 0x30) = + CONCAT44((int)((ulong)uVar83 >> 0x20) + uVar57 * uVar57, + (int)uVar83 + uVar127 * uVar127); + pbVar42 = pbVar42 + 0x40; + pbVar40 = pbVar40 + 0x10; + pbVar38 = pbVar38 + 0x40; + } while (uVar43 < uVar85); + /* try { // try from 0038bcec to 0048bcef has its CatchHandler @ 0038b55c */ + /* catch() { ... } // from try @ 0038b6cc with catch @ 0038bcf0 */ + uVar27 = uVar27 + iVar31; + if (param_6 - uVar33 == iVar31) goto LAB_0038bfc0; + } + iVar28 = uVar27 + 1; + lVar36 = (long)(int)uVar27 * 4; + bVar50 = param_1[(int)uVar27]; + iVar35 = *(int *)(param_4 + lVar36); + /* catch() { ... } // from try @ 0038b830 with catch @ 0038bd14 */ + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + /* try { // try from 0038bd24 to 0048bd27 has its CatchHandler @ 0038b55c */ + *(uint *)(param_4 + lVar36) = iVar35 + (uint)bVar50 * (uint)bVar50; + /* catch() { ... } // from try @ 0038bc78 with catch @ 0038bd28 */ + if (iVar28 < (int)param_6) { + /* try { // try from 0038bd2c to 0048bd2f has its CatchHandler @ 0038bd58 */ + /* catch() { ... } // from try @ 0038bc68 with catch @ 0038bd30 */ + iVar35 = uVar27 + 2; + /* try { // try from 0038bd34 to 0048bd37 has its CatchHandler @ 0038bd6c */ + lVar36 = (long)iVar28 * 4; + /* catch() { ... } // from try @ 0038baac with catch @ 0038bd38 */ + bVar50 = param_1[iVar28]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar28 + (uint)bVar50 * (uint)bVar50; + /* catch() { ... } // from try @ 0038bd2c with catch @ 0038bd58 */ + if (iVar35 < (int)param_6) { + iVar28 = uVar27 + 3; + lVar36 = (long)iVar35 * 4; + /* catch() { ... } // from try @ 0038bd34 with catch @ 0038bd6c */ + bVar50 = param_1[iVar35]; + iVar35 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar35 + (uint)bVar50 * (uint)bVar50; + if (iVar28 < (int)param_6) { + /* catch() { ... } // from try @ 0038ba78 with catch @ 0038bd8c */ + iVar35 = uVar27 + 4; + lVar36 = (long)iVar28 * 4; + bVar50 = param_1[iVar28]; + /* catch() { ... } // from try @ 0038ba60 with catch @ 0038bda0 */ + iVar28 = *(int *)(param_4 + lVar36); + /* catch() { ... } // from try @ 0038b98c with catch @ 0038bdb0 */ + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar28 + (uint)bVar50 * (uint)bVar50; + /* catch() { ... } // from try @ 0038b8b4 with catch @ 0038bdb8 */ + if (iVar35 < (int)param_6) { + iVar28 = uVar27 + 5; + lVar36 = (long)iVar35 * 4; + bVar50 = param_1[iVar35]; + iVar35 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar35 + (uint)bVar50 * (uint)bVar50; + if (iVar28 < (int)param_6) { + iVar35 = uVar27 + 6; + lVar36 = (long)iVar28 * 4; + bVar50 = param_1[iVar28]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar28 + (uint)bVar50 * (uint)bVar50; + if (iVar35 < (int)param_6) { + iVar28 = uVar27 + 7; + lVar36 = (long)iVar35 * 4; + bVar50 = param_1[iVar35]; + iVar35 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar35 + (uint)bVar50 * (uint)bVar50; + if (iVar28 < (int)param_6) { + iVar35 = uVar27 + 8; + lVar36 = (long)iVar28 * 4; + bVar50 = param_1[iVar28]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar28 + (uint)bVar50 * (uint)bVar50; + if (iVar35 < (int)param_6) { + iVar28 = uVar27 + 9; + lVar36 = (long)iVar35 * 4; + bVar50 = param_1[iVar35]; + iVar35 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar35 + (uint)bVar50 * (uint)bVar50; + if (iVar28 < (int)param_6) { + iVar35 = uVar27 + 10; + lVar36 = (long)iVar28 * 4; + bVar50 = param_1[iVar28]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = + *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar28 + (uint)bVar50 * (uint)bVar50; + if (iVar35 < (int)param_6) { + iVar28 = uVar27 + 0xb; + lVar36 = (long)iVar35 * 4; + bVar50 = param_1[iVar35]; + iVar35 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = + *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar35 + (uint)bVar50 * (uint)bVar50; + if (iVar28 < (int)param_6) { + iVar35 = uVar27 + 0xc; + lVar36 = (long)iVar28 * 4; + bVar50 = param_1[iVar28]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = + *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = iVar28 + (uint)bVar50 * (uint)bVar50 + ; + if (iVar35 < (int)param_6) { + iVar28 = uVar27 + 0xd; + lVar36 = (long)iVar35 * 4; + bVar50 = param_1[iVar35]; + iVar35 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = + *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = + iVar35 + (uint)bVar50 * (uint)bVar50; + if (iVar28 < (int)param_6) { + iVar35 = uVar27 + 0xe; + lVar36 = (long)iVar28 * 4; + bVar50 = param_1[iVar28]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = + *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = + iVar28 + (uint)bVar50 * (uint)bVar50; + if (iVar35 < (int)param_6) { + lVar36 = (long)iVar35 * 4; + bVar50 = param_1[iVar35]; + iVar28 = *(int *)(param_4 + lVar36); + *(uint *)(param_3 + lVar36) = + *(int *)(param_3 + lVar36) + (uint)bVar50; + *(uint *)(param_4 + lVar36) = + iVar28 + (uint)bVar50 * (uint)bVar50; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038bfc0: + uVar101 = uVar101 + 1; + } + lVar32 = lVar32 + 1; + param_1 = param_1 + (int)param_6; + pbVar26 = pbVar26 + (int)param_6; + if ((int)param_5 <= (int)lVar32) { + return uVar101; + } + } while( true ); + } + iVar31 = (int)param_6 % 4; + uVar33 = 0; + if (iVar31 != 1) { + if (iVar31 != 2) { + uVar33 = 0; + if (iVar31 != 3) goto LAB_0038c14c; + iVar60 = *(int *)param_3; + iVar59 = *(int *)(param_3 + 4); + iVar35 = *(int *)(param_3 + 8); + iVar54 = *(int *)param_4; + iVar53 = *(int *)(param_4 + 4); + iVar28 = *(int *)(param_4 + 8); + if (0 < (int)param_5) { + uVar33 = (param_5 - 0x10 >> 4) + 1; + lVar32 = (long)(int)param_6; + uVar85 = uVar33 * 0x10; + if (param_5 - 1 < 0xf) { + uVar85 = 0; + pbVar26 = param_1; + } + else { + lVar45 = lVar32 * 2; + uVar101 = 0; + iVar108 = 0; + iVar110 = 0; + iVar113 = 0; + iVar114 = 0; + lVar44 = lVar32 * 8; + lVar76 = NEON_shl(lVar32,4); + lVar48 = lVar32 * 4; + lVar39 = lVar32 * 3; + lVar36 = lVar32 * 5; + lVar47 = lVar32 * 0xc; + lVar46 = lVar32 * 10; + pbVar26 = param_1 + 1; + lVar30 = lVar76 + lVar32 * -2; + pbVar29 = param_1 + 2; + lVar49 = lVar76 - lVar32; + lVar37 = lVar32 * 7; + lVar34 = lVar32 * 6; + lVar22 = lVar32 * 9; + lVar23 = lVar32 * 0xd; + lVar25 = lVar32 * 0xb; + pbVar41 = param_1; + iVar55 = iVar108; + iVar61 = iVar110; + iVar52 = iVar108; + iVar58 = iVar110; + iVar100 = iVar108; + iVar102 = iVar110; + iVar105 = iVar108; + iVar107 = iVar110; + iVar111 = iVar108; + iVar112 = iVar110; + iVar115 = iVar113; + iVar116 = iVar114; + iVar119 = iVar113; + iVar120 = iVar114; + iVar123 = iVar113; + iVar124 = iVar114; + iVar63 = iVar113; + iVar66 = iVar114; + iVar103 = iVar113; + iVar104 = iVar114; + do { + uVar101 = uVar101 + 1; + bVar50 = *pbVar41; + pbVar42 = pbVar41 + lVar32; + pbVar40 = pbVar41 + lVar45; + pbVar38 = pbVar41 + lVar39; + pbVar2 = pbVar41 + lVar48; + pbVar3 = pbVar41 + lVar36; + pbVar4 = pbVar41 + lVar34; + pbVar5 = pbVar41 + lVar37; + pbVar6 = pbVar41 + lVar44; + pbVar7 = pbVar41 + lVar22; + pbVar8 = pbVar41 + lVar46; + pbVar9 = pbVar41 + lVar25; + pbVar10 = pbVar41 + lVar47; + pbVar11 = pbVar41 + lVar23; + pbVar12 = pbVar41 + lVar30; + pbVar13 = pbVar41 + lVar49; + pbVar41 = pbVar41 + lVar76; + bVar51 = *pbVar26; + pbVar14 = pbVar26 + lVar32; + uVar20 = CONCAT12(*pbVar42,CONCAT11(*pbVar42,bVar50)) & 0xff00ff; + uVar27 = (uint)*pbVar38; + uVar21 = CONCAT12(*pbVar7,CONCAT11(*pbVar7,*pbVar6)) & 0xff00ff; + uVar43 = (uint)*pbVar9; + pbVar42 = pbVar26 + lVar45; + uVar80 = uVar20 & 0xffff; + uVar82 = (uint)*pbVar40; + pbVar40 = pbVar26 + lVar39; + uVar67 = CONCAT12(*pbVar3,(ushort)*pbVar2) & 0xffff; + uVar71 = (uint)*pbVar4; + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)*pbVar8; + uVar127 = CONCAT12(*pbVar11,(ushort)*pbVar10) & 0xffff; + uVar62 = (uint)*pbVar12; + pbVar38 = pbVar26 + lVar48; + uVar81 = (uint)(byte)(uVar20 >> 0x10); + pbVar2 = pbVar26 + lVar36; + uVar69 = (uint)*pbVar3; + uVar73 = (uint)*pbVar5; + pbVar3 = pbVar26 + lVar34; + uVar78 = (uint)(byte)(uVar21 >> 0x10); + pbVar4 = pbVar26 + lVar37; + iVar108 = uVar127 + uVar77 + uVar67 + uVar80 + iVar108; + uVar57 = (uint)*pbVar11; + iVar110 = uVar57 + uVar78 + uVar69 + uVar81 + iVar110; + iVar113 = uVar62 + uVar79 + uVar71 + uVar82 + iVar113; + uVar65 = (uint)*pbVar13; + iVar114 = uVar65 + uVar43 + uVar73 + uVar27 + iVar114; + iVar52 = iVar52 + uVar80 * uVar80 + uVar67 * uVar67 + uVar77 * uVar77 + + uVar127 * uVar127; + iVar58 = iVar58 + uVar81 * uVar81 + uVar69 * uVar69 + uVar78 * uVar78 + uVar57 * uVar57; + iVar119 = iVar119 + uVar82 * uVar82 + uVar71 * uVar71 + uVar79 * uVar79 + + uVar62 * uVar62; + iVar120 = iVar120 + uVar27 * uVar27 + uVar73 * uVar73 + uVar43 * uVar43 + + uVar65 * uVar65; + pbVar5 = pbVar26 + lVar44; + pbVar6 = pbVar26 + lVar22; + pbVar7 = pbVar26 + lVar46; + pbVar8 = pbVar26 + lVar25; + pbVar9 = pbVar26 + lVar47; + pbVar10 = pbVar26 + lVar23; + pbVar11 = pbVar26 + lVar30; + pbVar12 = pbVar26 + lVar49; + pbVar26 = pbVar26 + lVar76; + bVar50 = *pbVar29; + pbVar13 = pbVar29 + lVar32; + uVar20 = CONCAT12(*pbVar14,CONCAT11(*pbVar14,bVar51)) & 0xff00ff; + uVar27 = (uint)*pbVar40; + uVar21 = CONCAT12(*pbVar6,CONCAT11(*pbVar6,*pbVar5)) & 0xff00ff; + uVar43 = (uint)*pbVar8; + pbVar40 = pbVar29 + lVar45; + uVar80 = uVar20 & 0xffff; + uVar82 = (uint)*pbVar42; + pbVar42 = pbVar29 + lVar39; + uVar67 = CONCAT12(*pbVar2,(ushort)*pbVar38) & 0xffff; + uVar71 = (uint)*pbVar3; + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)*pbVar7; + uVar127 = CONCAT12(*pbVar10,(ushort)*pbVar9) & 0xffff; + uVar62 = (uint)*pbVar11; + pbVar38 = pbVar29 + lVar48; + uVar81 = (uint)(byte)(uVar20 >> 0x10); + pbVar3 = pbVar29 + lVar36; + uVar69 = (uint)*pbVar2; + uVar73 = (uint)*pbVar4; + pbVar2 = pbVar29 + lVar34; + /* try { // try from 0038d548 to 0048d58f has its CatchHandler @ 0038d650 */ + uVar78 = (uint)(byte)(uVar21 >> 0x10); + pbVar4 = pbVar29 + lVar37; + iVar100 = uVar127 + uVar77 + uVar67 + uVar80 + iVar100; + uVar57 = (uint)*pbVar10; + iVar102 = uVar57 + uVar78 + uVar69 + uVar81 + iVar102; + iVar123 = uVar62 + uVar79 + uVar71 + uVar82 + iVar123; + uVar65 = (uint)*pbVar12; + iVar124 = uVar65 + uVar43 + uVar73 + uVar27 + iVar124; + iVar105 = iVar105 + uVar80 * uVar80 + uVar67 * uVar67 + uVar77 * uVar77 + + uVar127 * uVar127; + iVar107 = iVar107 + uVar81 * uVar81 + uVar69 * uVar69 + uVar78 * uVar78 + + uVar57 * uVar57; + iVar63 = iVar63 + uVar82 * uVar82 + uVar71 * uVar71 + uVar79 * uVar79 + uVar62 * uVar62; + iVar66 = iVar66 + uVar27 * uVar27 + uVar73 * uVar73 + uVar43 * uVar43 + uVar65 * uVar65; + pbVar5 = pbVar29 + lVar44; + pbVar6 = pbVar29 + lVar22; + pbVar7 = pbVar29 + lVar46; + pbVar8 = pbVar29 + lVar25; + pbVar9 = pbVar29 + lVar47; + pbVar10 = pbVar29 + lVar23; + /* try { // try from 0038d594 to 0048d60f has its CatchHandler @ 0038cd40 */ + pbVar11 = pbVar29 + lVar30; + pbVar12 = pbVar29 + lVar49; + pbVar29 = pbVar29 + lVar76; + uVar20 = CONCAT12(*pbVar13,CONCAT11(*pbVar13,bVar50)) & 0xff00ff; + uVar27 = (uint)*pbVar42; + uVar21 = CONCAT12(*pbVar6,CONCAT11(*pbVar6,*pbVar5)) & 0xff00ff; + uVar43 = (uint)*pbVar8; + uVar80 = uVar20 & 0xffff; + uVar82 = (uint)*pbVar40; + uVar67 = CONCAT12(*pbVar3,(ushort)*pbVar38) & 0xffff; + uVar71 = (uint)*pbVar2; + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)*pbVar7; + uVar127 = CONCAT12(*pbVar10,(ushort)*pbVar9) & 0xffff; + uVar62 = (uint)*pbVar11; + uVar81 = (uint)(byte)(uVar20 >> 0x10); + uVar69 = (uint)*pbVar3; + uVar73 = (uint)*pbVar4; + uVar78 = (uint)(byte)(uVar21 >> 0x10); + iVar111 = uVar127 + uVar77 + uVar67 + uVar80 + iVar111; + uVar57 = (uint)*pbVar10; + iVar112 = uVar57 + uVar78 + uVar69 + uVar81 + iVar112; + iVar103 = uVar62 + uVar79 + uVar71 + uVar82 + iVar103; + uVar65 = (uint)*pbVar12; + iVar104 = uVar65 + uVar43 + uVar73 + uVar27 + iVar104; + iVar55 = iVar55 + uVar80 * uVar80 + uVar67 * uVar67 + uVar77 * uVar77 + + uVar127 * uVar127; + iVar61 = iVar61 + uVar81 * uVar81 + uVar69 * uVar69 + uVar78 * uVar78 + uVar57 * uVar57; + iVar115 = iVar115 + uVar82 * uVar82 + uVar71 * uVar71 + uVar79 * uVar79 + + uVar62 * uVar62; + iVar116 = iVar116 + uVar27 * uVar27 + uVar73 * uVar73 + uVar43 * uVar43 + + uVar65 * uVar65; + } while (uVar101 < uVar33); + iVar28 = iVar28 + iVar55 + iVar61 + iVar115 + iVar116; + iVar35 = iVar35 + iVar111 + iVar112 + iVar103 + iVar104; + iVar53 = iVar53 + iVar105 + iVar107 + iVar63 + iVar66; + iVar59 = iVar59 + iVar100 + iVar102 + iVar123 + iVar124; + iVar54 = iVar54 + iVar52 + iVar58 + iVar119 + iVar120; + iVar60 = iVar60 + iVar108 + iVar110 + iVar113 + iVar114; + pbVar26 = param_1 + (ulong)uVar85 * lVar32; + uVar33 = param_5; + /* catch() { ... } // from try @ 0038d548 with catch @ 0038d650 */ + if (param_5 == uVar85) goto LAB_0038d954; + } + bVar50 = *pbVar26; + bVar51 = pbVar26[1]; + /* try { // try from 0038d660 to 0048d663 has its CatchHandler @ 0038cd40 */ + /* catch() { ... } // from try @ 0038ce08 with catch @ 0038d664 */ + bVar18 = pbVar26[2]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + /* try { // try from 0038d674 to 0048d677 has its CatchHandler @ 0038cd40 */ + iVar59 = iVar59 + (uint)bVar51; + /* catch() { ... } // from try @ 0038d0ec with catch @ 0038d678 */ + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + uVar33 = param_5; + if ((int)(uVar85 + 1) < (int)param_5) { + bVar18 = pbVar26[lVar32]; + bVar50 = pbVar26[lVar32 + 1]; + bVar51 = pbVar26[lVar32 + 2]; + /* try { // try from 0038d69c to 0048d69f has its CatchHandler @ 0038cd40 */ + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 2) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 2]; + bVar50 = pbVar26[lVar32 * 2 + 1]; + bVar51 = pbVar26[lVar32 * 2 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 3) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 3]; + bVar50 = pbVar26[lVar32 * 3 + 1]; + bVar51 = pbVar26[lVar32 * 3 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 4) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 4]; + bVar50 = pbVar26[lVar32 * 4 + 1]; + bVar51 = pbVar26[lVar32 * 4 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 5) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 5]; + bVar50 = pbVar26[lVar32 * 5 + 1]; + bVar51 = pbVar26[lVar32 * 5 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 6) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 6]; + bVar50 = pbVar26[lVar32 * 6 + 1]; + bVar51 = pbVar26[lVar32 * 6 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 7) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 7]; + bVar50 = pbVar26[lVar32 * 7 + 1]; + bVar51 = pbVar26[lVar32 * 7 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 8) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 8]; + bVar50 = pbVar26[lVar32 * 8 + 1]; + bVar51 = pbVar26[lVar32 * 8 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 9) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 9]; + bVar50 = pbVar26[lVar32 * 9 + 1]; + bVar51 = pbVar26[lVar32 * 9 + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + /* catch() { ... } // from try @ 0038d874 with catch @ 0038d844 + catch() { ... } // from try @ 0038dc30 with catch @ 0038d844 + catch() { ... } // from try @ 0038dcdc with catch @ 0038d844 + catch() { ... } // from try @ 0038e020 with catch @ 0038d844 + catch() { ... } // from try @ 0038e08c with catch @ 0038d844 + catch() { ... } // from try @ 0038e0e8 with catch @ 0038d844 */ + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 10) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 10]; + bVar50 = pbVar26[lVar32 * 10 + 1]; + bVar51 = pbVar26[lVar32 * 10 + 2]; + iVar60 = iVar60 + (uint)bVar18; + /* try { // try from 0038d874 to 0048d897 has its CatchHandler @ 0038d844 */ + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xb) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 0xb]; + bVar50 = pbVar26[lVar32 * 0xb + 1]; + bVar51 = pbVar26[lVar32 * 0xb + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xc) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 0xc]; + /* try { // try from 0038d8cc to 0048d8cf has its CatchHandler @ 0038e0c4 */ + bVar50 = pbVar26[lVar32 * 0xc + 1]; + bVar51 = pbVar26[lVar32 * 0xc + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xd) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 0xd]; + bVar50 = pbVar26[lVar32 * 0xd + 1]; + bVar51 = pbVar26[lVar32 * 0xd + 2]; + iVar60 = iVar60 + (uint)bVar18; + /* try { // try from 0038d910 to 0048d913 has its CatchHandler @ 0038e110 */ + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar35 = iVar35 + (uint)bVar51; + /* try { // try from 0038d918 to 0048da37 has its CatchHandler @ 0038e0c4 */ + iVar59 = iVar59 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xe) < (int)param_5) { + bVar18 = pbVar26[lVar32 * 0xe]; + bVar50 = pbVar26[lVar32 * 0xe + 1]; + bVar51 = pbVar26[lVar32 * 0xe + 2]; + iVar60 = iVar60 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar18 * (uint)bVar18; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + iVar59 = iVar59 + (uint)bVar50; + iVar35 = iVar35 + (uint)bVar51; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038d954: + *(int *)param_3 = iVar60; + *(int *)(param_3 + 4) = iVar59; + *(int *)(param_3 + 8) = iVar35; + *(int *)param_4 = iVar54; + *(int *)(param_4 + 4) = iVar53; + *(int *)(param_4 + 8) = iVar28; + goto LAB_0038c14c; + } + iVar59 = *(int *)param_3; + iVar35 = *(int *)(param_3 + 4); + iVar53 = *(int *)param_4; + iVar28 = *(int *)(param_4 + 4); + if (0 < (int)param_5) { + uVar33 = (param_5 - 0x10 >> 4) + 1; + lVar32 = (long)(int)param_6; + uVar85 = uVar33 * 0x10; + if (param_5 - 1 < 0xf) { + uVar85 = 0; + pbVar26 = param_1; + } + else { + iVar115 = 0; + iVar116 = 0; + iVar119 = 0; + iVar120 = 0; + /* try { // try from 0038ce08 to 0048ce0b has its CatchHandler @ 0038d664 */ + /* try { // try from 0038ce10 to 0048d09b has its CatchHandler @ 0038cd40 */ + pbVar26 = param_1 + 1; + uVar101 = 0; + pbVar29 = param_1; + iVar54 = iVar115; + iVar60 = iVar116; + iVar55 = iVar115; + iVar61 = iVar116; + iVar52 = iVar115; + iVar58 = iVar116; + iVar100 = iVar119; + iVar102 = iVar120; + iVar105 = iVar119; + iVar107 = iVar120; + iVar111 = iVar119; + iVar112 = iVar120; + do { + bVar50 = *pbVar29; + uVar101 = uVar101 + 1; + pbVar41 = pbVar29 + lVar32; + pbVar42 = pbVar29 + lVar32 * 2; + pbVar40 = pbVar29 + lVar32 * 3; + pbVar38 = pbVar29 + lVar32 * 4; + pbVar2 = pbVar29 + lVar32 * 5; + pbVar3 = pbVar29 + lVar32 * 6; + pbVar4 = pbVar29 + lVar32 * 7; + pbVar5 = pbVar29 + lVar32 * 8; + pbVar6 = pbVar29 + lVar32 * 9; + pbVar7 = pbVar29 + lVar32 * 10; + pbVar8 = pbVar29 + lVar32 * 0xb; + pbVar9 = pbVar29 + lVar32 * 0xc; + pbVar10 = pbVar29 + lVar32 * 0xd; + pbVar11 = pbVar29 + lVar32 * 0xe; + pbVar12 = pbVar29 + lVar32 * 0xf; + pbVar29 = pbVar29 + lVar32 * 0x10; + bVar51 = *pbVar26; + pbVar13 = pbVar26 + lVar32; + uVar20 = CONCAT12(*pbVar41,CONCAT11(*pbVar41,bVar50)) & 0xff00ff; + uVar27 = (uint)*pbVar40; + uVar21 = CONCAT12(*pbVar6,CONCAT11(*pbVar6,*pbVar5)) & 0xff00ff; + uVar43 = (uint)*pbVar8; + pbVar41 = pbVar26 + lVar32 * 2; + uVar80 = uVar20 & 0xffff; + uVar82 = (uint)*pbVar42; + pbVar42 = pbVar26 + lVar32 * 3; + uVar67 = CONCAT12(*pbVar2,(ushort)*pbVar38) & 0xffff; + uVar71 = (uint)*pbVar3; + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)*pbVar7; + uVar127 = CONCAT12(*pbVar10,(ushort)*pbVar9) & 0xffff; + uVar62 = (uint)*pbVar11; + pbVar40 = pbVar26 + lVar32 * 4; + uVar81 = (uint)(byte)(uVar20 >> 0x10); + pbVar38 = pbVar26 + lVar32 * 5; + uVar69 = (uint)*pbVar2; + uVar73 = (uint)*pbVar4; + pbVar2 = pbVar26 + lVar32 * 6; + uVar78 = (uint)(byte)(uVar21 >> 0x10); + pbVar3 = pbVar26 + lVar32 * 7; + pbVar4 = pbVar26 + lVar32 * 8; + iVar115 = uVar127 + uVar77 + uVar67 + uVar80 + iVar115; + uVar57 = (uint)*pbVar10; + iVar116 = uVar57 + uVar78 + uVar69 + uVar81 + iVar116; + iVar119 = uVar62 + uVar79 + uVar71 + uVar82 + iVar119; + uVar65 = (uint)*pbVar12; + iVar120 = uVar65 + uVar43 + uVar73 + uVar27 + iVar120; + iVar52 = iVar52 + uVar80 * uVar80 + uVar67 * uVar67 + uVar77 * uVar77 + uVar127 * uVar127; + iVar58 = iVar58 + uVar81 * uVar81 + uVar69 * uVar69 + uVar78 * uVar78 + uVar57 * uVar57; + iVar111 = iVar111 + uVar82 * uVar82 + uVar71 * uVar71 + uVar79 * uVar79 + uVar62 * uVar62; + iVar112 = iVar112 + uVar27 * uVar27 + uVar73 * uVar73 + uVar43 * uVar43 + uVar65 * uVar65; + pbVar5 = pbVar26 + lVar32 * 9; + pbVar6 = pbVar26 + lVar32 * 10; + pbVar7 = pbVar26 + lVar32 * 0xb; + pbVar8 = pbVar26 + lVar32 * 0xc; + pbVar9 = pbVar26 + lVar32 * 0xd; + pbVar10 = pbVar26 + lVar32 * 0xe; + pbVar11 = pbVar26 + lVar32 * 0xf; + pbVar26 = pbVar26 + lVar32 * 0x10; + uVar20 = CONCAT12(*pbVar13,CONCAT11(*pbVar13,bVar51)) & 0xff00ff; + uVar27 = (uint)*pbVar42; + uVar21 = CONCAT12(*pbVar5,CONCAT11(*pbVar5,*pbVar4)) & 0xff00ff; + uVar43 = (uint)*pbVar7; + uVar80 = uVar20 & 0xffff; + uVar82 = (uint)*pbVar41; + uVar67 = CONCAT12(*pbVar38,(ushort)*pbVar40) & 0xffff; + uVar71 = (uint)*pbVar2; + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)*pbVar6; + uVar127 = CONCAT12(*pbVar9,(ushort)*pbVar8) & 0xffff; + uVar62 = (uint)*pbVar10; + uVar81 = (uint)(byte)(uVar20 >> 0x10); + uVar69 = (uint)*pbVar38; + uVar73 = (uint)*pbVar3; + uVar78 = (uint)(byte)(uVar21 >> 0x10); + iVar55 = uVar127 + uVar77 + uVar67 + uVar80 + iVar55; + uVar57 = (uint)*pbVar9; + iVar61 = uVar57 + uVar78 + uVar69 + uVar81 + iVar61; + iVar105 = uVar62 + uVar79 + uVar71 + uVar82 + iVar105; + uVar65 = (uint)*pbVar11; + iVar107 = uVar65 + uVar43 + uVar73 + uVar27 + iVar107; + iVar54 = iVar54 + uVar80 * uVar80 + uVar67 * uVar67 + uVar77 * uVar77 + uVar127 * uVar127; + iVar60 = iVar60 + uVar81 * uVar81 + uVar69 * uVar69 + uVar78 * uVar78 + uVar57 * uVar57; + iVar100 = iVar100 + uVar82 * uVar82 + uVar71 * uVar71 + uVar79 * uVar79 + uVar62 * uVar62; + iVar102 = iVar102 + uVar27 * uVar27 + uVar73 * uVar73 + uVar43 * uVar43 + uVar65 * uVar65; + } while (uVar101 < uVar33); + iVar28 = iVar28 + iVar54 + iVar60 + iVar100 + iVar102; + iVar35 = iVar35 + iVar55 + iVar61 + iVar105 + iVar107; + iVar53 = iVar53 + iVar52 + iVar58 + iVar111 + iVar112; + iVar59 = iVar59 + iVar115 + iVar116 + iVar119 + iVar120; + pbVar26 = param_1 + (ulong)uVar85 * lVar32; + uVar33 = param_5; + if (param_5 == uVar85) goto LAB_0038d284; + } + bVar50 = *pbVar26; + bVar51 = pbVar26[1]; + iVar59 = iVar59 + (uint)bVar50; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar51; + iVar28 = iVar28 + (uint)bVar51 * (uint)bVar51; + uVar33 = param_5; + if ((int)(uVar85 + 1) < (int)param_5) { + bVar51 = pbVar26[lVar32]; + bVar50 = pbVar26[lVar32 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 2) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 2]; + bVar50 = pbVar26[lVar32 * 2 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 3) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 3]; + bVar50 = pbVar26[lVar32 * 3 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 4) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 4]; + bVar50 = pbVar26[lVar32 * 4 + 1]; + iVar59 = iVar59 + (uint)bVar51; + /* try { // try from 0038d0ec to 0048d137 has its CatchHandler @ 0038d678 */ + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 5) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 5]; + bVar50 = pbVar26[lVar32 * 5 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 6) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 6]; + bVar50 = pbVar26[lVar32 * 6 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 7) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 7]; + bVar50 = pbVar26[lVar32 * 7 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + /* try { // try from 0038d16c to 0048d37f has its CatchHandler @ 0038cd40 */ + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 8) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 8]; + bVar50 = pbVar26[lVar32 * 8 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 9) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 9]; + bVar50 = pbVar26[lVar32 * 9 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 10) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 10]; + bVar50 = pbVar26[lVar32 * 10 + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xb) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 0xb]; + bVar50 = pbVar26[lVar32 * 0xb + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xc) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 0xc]; + bVar50 = pbVar26[lVar32 * 0xc + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xd) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 0xd]; + bVar50 = pbVar26[lVar32 * 0xd + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xe) < (int)param_5) { + bVar51 = pbVar26[lVar32 * 0xe]; + bVar50 = pbVar26[lVar32 * 0xe + 1]; + iVar59 = iVar59 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar50; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038d284: + *(int *)param_3 = iVar59; + *(int *)(param_3 + 4) = iVar35; + *(int *)param_4 = iVar53; + *(int *)(param_4 + 4) = iVar28; + goto LAB_0038c14c; + } + iVar35 = *(int *)param_3; + iVar28 = *(int *)param_4; + if (0 < (int)param_5) { + uVar33 = (param_5 - 0x10 >> 4) + 1; + lVar32 = (long)(int)param_6; + uVar85 = uVar33 * 0x10; + if (param_5 - 1 < 0xf) { + uVar85 = 0; + pbVar26 = param_1; + } + else { + iVar55 = 0; + iVar61 = 0; + iVar52 = 0; + iVar58 = 0; + pbVar26 = param_1 + lVar32 * 10; + uVar101 = 0; + pbVar29 = param_1; + iVar53 = iVar55; + iVar59 = iVar61; + iVar54 = iVar52; + iVar60 = iVar58; + do { + bVar50 = *pbVar29; + uVar101 = uVar101 + 1; + pbVar41 = pbVar29 + lVar32; + pbVar42 = pbVar29 + lVar32 * 2; + pbVar40 = pbVar29 + lVar32 * 3; + pbVar38 = pbVar29 + lVar32 * 4; + pbVar2 = pbVar29 + lVar32 * 5; + pbVar3 = pbVar29 + lVar32 * 6; + pbVar4 = pbVar26 + lVar32 * -3; + pbVar5 = pbVar29 + lVar32 * 8; + pbVar6 = pbVar29 + lVar32 * 9; + pbVar29 = pbVar29 + lVar32 * 0x10; + bVar51 = *pbVar26; + pbVar7 = pbVar26 + lVar32; + pbVar8 = pbVar26 + lVar32 * 2; + pbVar9 = pbVar26 + lVar32 * 3; + pbVar10 = pbVar26 + lVar32 * 4; + pbVar11 = pbVar26 + lVar32 * 5; + pbVar26 = pbVar26 + lVar32 * 0x10; + uVar20 = CONCAT12(*pbVar41,CONCAT11(*pbVar41,bVar50)) & 0xff00ff; + uVar27 = (uint)*pbVar40; + uVar21 = CONCAT12(*pbVar6,CONCAT11(*pbVar6,*pbVar5)) & 0xff00ff; + uVar43 = (uint)*pbVar7; + uVar80 = uVar20 & 0xffff; + uVar82 = (uint)*pbVar42; + uVar67 = CONCAT12(*pbVar2,(ushort)*pbVar38) & 0xffff; + uVar71 = (uint)*pbVar3; + uVar77 = uVar21 & 0xffff; + uVar79 = (uint)bVar51; + uVar127 = CONCAT12(*pbVar9,(ushort)*pbVar8) & 0xffff; + uVar62 = (uint)*pbVar10; + uVar81 = (uint)(byte)(uVar20 >> 0x10); + uVar69 = (uint)*pbVar2; + uVar73 = (uint)*pbVar4; + uVar78 = (uint)(byte)(uVar21 >> 0x10); + iVar55 = uVar127 + uVar77 + uVar67 + uVar80 + iVar55; + uVar57 = (uint)*pbVar9; + iVar61 = uVar57 + uVar78 + uVar69 + uVar81 + iVar61; + iVar52 = uVar62 + uVar79 + uVar71 + uVar82 + iVar52; + uVar65 = (uint)*pbVar11; + iVar58 = uVar65 + uVar43 + uVar73 + uVar27 + iVar58; + iVar53 = iVar53 + uVar80 * uVar80 + uVar67 * uVar67 + uVar77 * uVar77 + uVar127 * uVar127; + iVar59 = iVar59 + uVar81 * uVar81 + uVar69 * uVar69 + uVar78 * uVar78 + uVar57 * uVar57; + iVar54 = iVar54 + uVar82 * uVar82 + uVar71 * uVar71 + uVar79 * uVar79 + uVar62 * uVar62; + iVar60 = iVar60 + uVar27 * uVar27 + uVar73 * uVar73 + uVar43 * uVar43 + uVar65 * uVar65; + } while (uVar101 < uVar33); + iVar28 = iVar28 + iVar53 + iVar59 + iVar54 + iVar60; + iVar35 = iVar35 + iVar55 + iVar61 + iVar52 + iVar58; + pbVar26 = param_1 + (ulong)uVar85 * lVar32; + uVar33 = param_5; + if (param_5 == uVar85) goto LAB_0038cda8; + } + bVar50 = *pbVar26; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + uVar33 = param_5; + if ((int)(uVar85 + 1) < (int)param_5) { + bVar50 = pbVar26[lVar32]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 2) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 2]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 3) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 3]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 4) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 4]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 5) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 5]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 6) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 6]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 7) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 7]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 8) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 8]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 9) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 9]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 10) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 10]; + iVar35 = iVar35 + (uint)bVar50; + /* catch() { ... } // from try @ 0038cd68 with catch @ 0038cd40 + catch() { ... } // from try @ 0038ce10 with catch @ 0038cd40 + catch() { ... } // from try @ 0038d16c with catch @ 0038cd40 + catch() { ... } // from try @ 0038d594 with catch @ 0038cd40 + catch() { ... } // from try @ 0038d660 with catch @ 0038cd40 + catch() { ... } // from try @ 0038d674 with catch @ 0038cd40 + catch() { ... } // from try @ 0038d69c with catch @ 0038cd40 */ + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xb) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 0xb]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xc) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 0xc]; + /* try { // try from 0038cd68 to 0048cdbf has its CatchHandler @ 0038cd40 */ + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xd) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 0xd]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + if ((int)(uVar85 + 0xe) < (int)param_5) { + bVar50 = pbVar26[lVar32 * 0xe]; + iVar35 = iVar35 + (uint)bVar50; + iVar28 = iVar28 + (uint)bVar50 * (uint)bVar50; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038cda8: + *(int *)param_3 = iVar35; + *(int *)param_4 = iVar28; +LAB_0038c14c: + if (iVar31 < (int)param_6) { + lVar34 = (long)(int)param_6; + lVar44 = lVar34 * 2; + lVar37 = lVar34 * 3; + lVar48 = lVar34 * 4; + lVar47 = lVar34 * 0xc; + lVar30 = (long)iVar31; + lVar76 = NEON_shl(lVar34,4); + lVar39 = lVar34 * 5; + lVar36 = lVar34 * 0xd; + lVar46 = lVar34 * 10; + lVar22 = lVar34 * 0xb; + lVar45 = lVar34 * 8; + param_1 = param_1 + lVar30; + lVar32 = lVar34 * 7; + lVar23 = lVar34 * 9; + lVar25 = lVar76 + lVar34 * -2; + lVar96 = NEON_shl(lVar37,1); + lVar49 = lVar76 - lVar34; + pbVar26 = param_4 + lVar30 * 4; + pbVar29 = param_3 + lVar30 * 4; + do { + iVar61 = *(int *)pbVar29; + iVar60 = *(int *)(pbVar29 + 4); + iVar54 = *(int *)(pbVar29 + 8); + iVar35 = *(int *)(pbVar29 + 0xc); + iVar55 = *(int *)pbVar26; + iVar59 = *(int *)(pbVar26 + 4); + iVar53 = *(int *)(pbVar26 + 8); + iVar28 = *(int *)(pbVar26 + 0xc); + uVar85 = uVar33; + if ((int)uVar33 < (int)param_5) { + uVar43 = param_5 - uVar33; + uVar101 = (uVar43 - 0x10 >> 4) + 1; + uVar27 = uVar101 * 0x10; + pbVar41 = param_1; + uVar85 = param_5; + if (0xe < (param_5 - 1) - uVar33) { + iVar68 = 0; + iVar70 = 0; + iVar72 = 0; + iVar74 = 0; + uVar127 = 0; + pbVar41 = param_1 + 1; + pbVar42 = param_1 + 2; + pbVar40 = param_1 + 3; + pbVar38 = param_1; + iVar52 = iVar68; + iVar58 = iVar70; + iVar100 = iVar68; + iVar102 = iVar70; + iVar105 = iVar68; + iVar107 = iVar70; + iVar111 = iVar68; + iVar112 = iVar70; + iVar115 = iVar68; + iVar116 = iVar70; + iVar119 = iVar68; + iVar120 = iVar70; + iVar123 = iVar68; + iVar124 = iVar70; + iVar63 = iVar72; + iVar66 = iVar74; + iVar103 = iVar72; + iVar104 = iVar74; + iVar108 = iVar72; + iVar110 = iVar74; + iVar113 = iVar72; + iVar114 = iVar74; + iVar117 = iVar72; + iVar118 = iVar74; + iVar121 = iVar72; + iVar122 = iVar74; + iVar125 = iVar72; + iVar126 = iVar74; + do { + uVar127 = uVar127 + 1; + bVar50 = *pbVar38; + pbVar2 = pbVar38 + lVar34; + pbVar3 = pbVar38 + lVar44; + pbVar4 = pbVar38 + lVar37; + pbVar5 = pbVar38 + lVar48; + pbVar6 = pbVar38 + lVar39; + pbVar7 = pbVar38 + lVar96; + pbVar8 = pbVar38 + lVar32; + pbVar9 = pbVar38 + lVar45; + pbVar10 = pbVar38 + lVar23; + pbVar11 = pbVar38 + lVar46; + pbVar12 = pbVar38 + lVar22; + pbVar13 = pbVar38 + lVar47; + pbVar14 = pbVar38 + lVar36; + pbVar15 = pbVar38 + lVar25; + pbVar16 = pbVar38 + lVar49; + pbVar38 = pbVar38 + lVar76; + bVar51 = *pbVar41; + pbVar17 = pbVar41 + lVar34; + uVar20 = CONCAT12(*pbVar2,CONCAT11(*pbVar2,bVar50)) & 0xff00ff; + uVar57 = (uint)*pbVar4; + uVar21 = CONCAT12(*pbVar10,CONCAT11(*pbVar10,*pbVar9)) & 0xff00ff; + uVar62 = (uint)*pbVar12; + pbVar2 = pbVar41 + lVar44; + uVar90 = uVar20 & 0xffff; + uVar93 = (uint)*pbVar3; + pbVar3 = pbVar41 + lVar37; + uVar73 = CONCAT12(*pbVar6,(ushort)*pbVar5) & 0xffff; + uVar78 = (uint)*pbVar7; + uVar80 = uVar21 & 0xffff; + uVar82 = (uint)*pbVar11; + uVar65 = CONCAT12(*pbVar14,(ushort)*pbVar13) & 0xffff; + uVar69 = (uint)*pbVar15; + pbVar4 = pbVar41 + lVar48; + uVar92 = (uint)(byte)(uVar20 >> 0x10); + pbVar5 = pbVar41 + lVar39; + uVar77 = (uint)*pbVar6; + uVar79 = (uint)*pbVar8; + uVar81 = (uint)(byte)(uVar21 >> 0x10); + pbVar6 = pbVar41 + lVar96; + iVar68 = uVar65 + uVar80 + uVar73 + uVar90 + iVar68; + uVar67 = (uint)*pbVar14; + iVar70 = uVar67 + uVar81 + uVar77 + uVar92 + iVar70; + iVar72 = uVar69 + uVar82 + uVar78 + uVar93 + iVar72; + uVar71 = (uint)*pbVar16; + iVar74 = uVar71 + uVar62 + uVar79 + uVar57 + iVar74; + iVar100 = iVar100 + uVar90 * uVar90 + uVar73 * uVar73 + uVar80 * uVar80 + + uVar65 * uVar65; + iVar102 = iVar102 + uVar92 * uVar92 + uVar77 * uVar77 + uVar81 * uVar81 + + uVar67 * uVar67; + iVar103 = iVar103 + uVar93 * uVar93 + uVar78 * uVar78 + uVar82 * uVar82 + + uVar69 * uVar69; + iVar104 = iVar104 + uVar57 * uVar57 + uVar79 * uVar79 + uVar62 * uVar62 + + uVar71 * uVar71; + pbVar7 = pbVar41 + lVar32; + pbVar8 = pbVar41 + lVar45; + pbVar9 = pbVar41 + lVar23; + pbVar10 = pbVar41 + lVar46; + pbVar11 = pbVar41 + lVar22; + pbVar12 = pbVar41 + lVar47; + pbVar13 = pbVar41 + lVar36; + pbVar14 = pbVar41 + lVar25; + pbVar15 = pbVar41 + lVar49; + pbVar41 = pbVar41 + lVar76; + bVar50 = *pbVar42; + pbVar16 = pbVar42 + lVar34; + uVar20 = CONCAT12(*pbVar17,CONCAT11(*pbVar17,bVar51)) & 0xff00ff; + uVar57 = (uint)*pbVar3; + uVar21 = CONCAT12(*pbVar9,CONCAT11(*pbVar9,*pbVar8)) & 0xff00ff; + uVar62 = (uint)*pbVar11; + pbVar3 = pbVar42 + lVar44; + uVar90 = uVar20 & 0xffff; + uVar93 = (uint)*pbVar2; + pbVar2 = pbVar42 + lVar37; + uVar73 = CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff; + uVar78 = (uint)*pbVar6; + uVar80 = uVar21 & 0xffff; + uVar82 = (uint)*pbVar10; + uVar65 = CONCAT12(*pbVar13,(ushort)*pbVar12) & 0xffff; + uVar69 = (uint)*pbVar14; + pbVar4 = pbVar42 + lVar48; + uVar92 = (uint)(byte)(uVar20 >> 0x10); + pbVar6 = pbVar42 + lVar39; + uVar77 = (uint)*pbVar5; + uVar79 = (uint)*pbVar7; + uVar81 = (uint)(byte)(uVar21 >> 0x10); + pbVar5 = pbVar42 + lVar96; + iVar105 = uVar65 + uVar80 + uVar73 + uVar90 + iVar105; + uVar67 = (uint)*pbVar13; + iVar107 = uVar67 + uVar81 + uVar77 + uVar92 + iVar107; + iVar108 = uVar69 + uVar82 + uVar78 + uVar93 + iVar108; + uVar71 = (uint)*pbVar15; + iVar110 = uVar71 + uVar62 + uVar79 + uVar57 + iVar110; + iVar111 = iVar111 + uVar90 * uVar90 + uVar73 * uVar73 + uVar80 * uVar80 + + uVar65 * uVar65; + iVar112 = iVar112 + uVar92 * uVar92 + uVar77 * uVar77 + uVar81 * uVar81 + + uVar67 * uVar67; + iVar113 = iVar113 + uVar93 * uVar93 + uVar78 * uVar78 + uVar82 * uVar82 + + uVar69 * uVar69; + iVar114 = iVar114 + uVar57 * uVar57 + uVar79 * uVar79 + uVar62 * uVar62 + + uVar71 * uVar71; + pbVar7 = pbVar42 + lVar32; + pbVar8 = pbVar42 + lVar45; + pbVar9 = pbVar42 + lVar23; + pbVar10 = pbVar42 + lVar46; + pbVar11 = pbVar42 + lVar22; + pbVar12 = pbVar42 + lVar47; + pbVar13 = pbVar42 + lVar36; + pbVar14 = pbVar42 + lVar25; + pbVar15 = pbVar42 + lVar49; + pbVar42 = pbVar42 + lVar76; + bVar51 = *pbVar40; + pbVar17 = pbVar40 + lVar34; + uVar20 = CONCAT12(*pbVar16,CONCAT11(*pbVar16,bVar50)) & 0xff00ff; + uVar57 = (uint)*pbVar2; + uVar21 = CONCAT12(*pbVar9,CONCAT11(*pbVar9,*pbVar8)) & 0xff00ff; + uVar62 = (uint)*pbVar11; + pbVar2 = pbVar40 + lVar44; + uVar90 = uVar20 & 0xffff; + uVar93 = (uint)*pbVar3; + pbVar3 = pbVar40 + lVar37; + uVar73 = CONCAT12(*pbVar6,(ushort)*pbVar4) & 0xffff; + uVar78 = (uint)*pbVar5; + uVar80 = uVar21 & 0xffff; + uVar82 = (uint)*pbVar10; + uVar65 = CONCAT12(*pbVar13,(ushort)*pbVar12) & 0xffff; + uVar69 = (uint)*pbVar14; + pbVar4 = pbVar40 + lVar48; + uVar92 = (uint)(byte)(uVar20 >> 0x10); + pbVar5 = pbVar40 + lVar39; + uVar77 = (uint)*pbVar6; + uVar79 = (uint)*pbVar7; + uVar81 = (uint)(byte)(uVar21 >> 0x10); + pbVar6 = pbVar40 + lVar96; + iVar115 = uVar65 + uVar80 + uVar73 + uVar90 + iVar115; + uVar67 = (uint)*pbVar13; + iVar116 = uVar67 + uVar81 + uVar77 + uVar92 + iVar116; + iVar117 = uVar69 + uVar82 + uVar78 + uVar93 + iVar117; + uVar71 = (uint)*pbVar15; + iVar118 = uVar71 + uVar62 + uVar79 + uVar57 + iVar118; + iVar119 = iVar119 + uVar90 * uVar90 + uVar73 * uVar73 + uVar80 * uVar80 + + uVar65 * uVar65; + iVar120 = iVar120 + uVar92 * uVar92 + uVar77 * uVar77 + uVar81 * uVar81 + + uVar67 * uVar67; + iVar121 = iVar121 + uVar93 * uVar93 + uVar78 * uVar78 + uVar82 * uVar82 + + uVar69 * uVar69; + iVar122 = iVar122 + uVar57 * uVar57 + uVar79 * uVar79 + uVar62 * uVar62 + + uVar71 * uVar71; + pbVar7 = pbVar40 + lVar32; + pbVar8 = pbVar40 + lVar45; + pbVar9 = pbVar40 + lVar23; + pbVar10 = pbVar40 + lVar46; + pbVar11 = pbVar40 + lVar22; + pbVar12 = pbVar40 + lVar47; + pbVar13 = pbVar40 + lVar36; + pbVar14 = pbVar40 + lVar25; + pbVar15 = pbVar40 + lVar49; + pbVar40 = pbVar40 + lVar76; + uVar20 = CONCAT12(*pbVar17,CONCAT11(*pbVar17,bVar51)) & 0xff00ff; + uVar57 = (uint)*pbVar3; + uVar21 = CONCAT12(*pbVar9,CONCAT11(*pbVar9,*pbVar8)) & 0xff00ff; + uVar62 = (uint)*pbVar11; + uVar90 = uVar20 & 0xffff; + uVar93 = (uint)*pbVar2; + uVar73 = CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff; + uVar78 = (uint)*pbVar6; + uVar80 = uVar21 & 0xffff; + uVar82 = (uint)*pbVar10; + uVar65 = CONCAT12(*pbVar13,(ushort)*pbVar12) & 0xffff; + uVar69 = (uint)*pbVar14; + uVar92 = (uint)(byte)(uVar20 >> 0x10); + uVar77 = (uint)*pbVar5; + uVar79 = (uint)*pbVar7; + uVar81 = (uint)(byte)(uVar21 >> 0x10); + iVar123 = uVar65 + uVar80 + uVar73 + uVar90 + iVar123; + uVar67 = (uint)*pbVar13; + iVar124 = uVar67 + uVar81 + uVar77 + uVar92 + iVar124; + iVar125 = uVar69 + uVar82 + uVar78 + uVar93 + iVar125; + uVar71 = (uint)*pbVar15; + iVar126 = uVar71 + uVar62 + uVar79 + uVar57 + iVar126; + iVar52 = iVar52 + uVar90 * uVar90 + uVar73 * uVar73 + uVar80 * uVar80 + uVar65 * uVar65; + iVar58 = iVar58 + uVar92 * uVar92 + uVar77 * uVar77 + uVar81 * uVar81 + uVar67 * uVar67; + iVar63 = iVar63 + uVar93 * uVar93 + uVar78 * uVar78 + uVar82 * uVar82 + uVar69 * uVar69; + iVar66 = iVar66 + uVar57 * uVar57 + uVar79 * uVar79 + uVar62 * uVar62 + uVar71 * uVar71; + } while (uVar127 < uVar101); + uVar33 = uVar33 + uVar27; + pbVar41 = param_1 + (ulong)uVar27 * lVar34; + iVar28 = iVar28 + iVar52 + iVar58 + iVar63 + iVar66; + iVar35 = iVar35 + iVar123 + iVar124 + iVar125 + iVar126; + iVar53 = iVar53 + iVar119 + iVar120 + iVar121 + iVar122; + iVar59 = iVar59 + iVar111 + iVar112 + iVar113 + iVar114; + iVar54 = iVar54 + iVar115 + iVar116 + iVar117 + iVar118; + iVar60 = iVar60 + iVar105 + iVar107 + iVar108 + iVar110; + iVar55 = iVar55 + iVar100 + iVar102 + iVar103 + iVar104; + iVar61 = iVar61 + iVar68 + iVar70 + iVar72 + iVar74; + if (uVar27 == uVar43) goto LAB_0038ca70; + } + bVar50 = pbVar41[2]; + bVar51 = *pbVar41; + bVar18 = pbVar41[1]; + iVar54 = iVar54 + (uint)bVar50; + bVar19 = pbVar41[3]; + iVar61 = iVar61 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar50 * (uint)bVar50; + iVar60 = iVar60 + (uint)bVar18; + iVar35 = iVar35 + (uint)bVar19; + iVar55 = iVar55 + (uint)bVar51 * (uint)bVar51; + iVar59 = iVar59 + (uint)bVar18 * (uint)bVar18; + iVar28 = iVar28 + (uint)bVar19 * (uint)bVar19; + if ((int)(uVar33 + 1) < (int)param_5) { + bVar19 = pbVar41[lVar34]; + bVar50 = pbVar41[lVar34 + 1]; + bVar51 = pbVar41[lVar34 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar34 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 2; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 2) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 2]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 3; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 3) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 3]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 4; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 4) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 4]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 5; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 5) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 5]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 6; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 6) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 6]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 7; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 7) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 7]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 8; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 8) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 8]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 9; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 9) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 9]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 10; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 10) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 10]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 0xb; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 0xb) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 0xb]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar54 = iVar54 + (uint)bVar51; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar35 = iVar35 + (uint)bVar18; + lVar24 = lVar34 * 0xc; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + if ((int)(uVar33 + 0xc) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 0xc]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar35 = iVar35 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar51; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + lVar24 = lVar34 * 0xd; + if ((int)(uVar33 + 0xd) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 0xd]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar35 = iVar35 + (uint)bVar18; + iVar54 = iVar54 + (uint)bVar51; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + lVar24 = lVar34 * 0xe; + if ((int)(uVar33 + 0xe) < (int)param_5) { + bVar19 = pbVar41[lVar34 * 0xe]; + bVar50 = pbVar41[lVar24 + 1]; + bVar51 = pbVar41[lVar24 + 2]; + iVar61 = iVar61 + (uint)bVar19; + bVar18 = pbVar41[lVar24 + 3]; + iVar60 = iVar60 + (uint)bVar50; + iVar55 = iVar55 + (uint)bVar19 * (uint)bVar19; + iVar59 = iVar59 + (uint)bVar50 * (uint)bVar50; + iVar53 = iVar53 + (uint)bVar51 * (uint)bVar51; + iVar28 = iVar28 + (uint)bVar18 * (uint)bVar18; + iVar54 = iVar54 + (uint)bVar51; + iVar35 = iVar35 + (uint)bVar18; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038ca70: + uVar33 = uVar85; + *(int *)pbVar29 = iVar61; + pbVar41 = pbVar29 + 0x10; + param_1 = param_1 + 4; + *(int *)(pbVar29 + 0xc) = iVar35; + *(int *)(pbVar29 + 4) = iVar60; + *(int *)(pbVar29 + 8) = iVar54; + *(int *)pbVar26 = iVar55; + *(int *)(pbVar26 + 4) = iVar59; + *(int *)(pbVar26 + 8) = iVar53; + *(int *)(pbVar26 + 0xc) = iVar28; + pbVar26 = pbVar26 + 0x10; + pbVar29 = pbVar41; + } while (pbVar41 != param_3 + (lVar30 + 4 + (ulong)((param_6 - 1) - iVar31 >> 2) * 4) * 4); + } + return param_5; +} + + +================================================================== + +### FUNC 0038d9a8 (8008 bytes) name=FUN_0038d9a8 + +uint FUN_0038d9a8(int *param_1,long param_2,int *param_3,int *param_4,uint param_5,uint param_6) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + char *pcVar4; + char *pcVar5; + char *pcVar6; + char *pcVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + char *pcVar17; + char cVar18; + char cVar19; + char cVar20; + char cVar21; + long lVar22; + long lVar23; + long lVar24; + long lVar25; + long lVar26; + char *pcVar27; + long lVar28; + int *piVar29; + uint uVar30; + ulong uVar31; + int *piVar32; + long lVar33; + int iVar34; + long lVar35; + long lVar36; + ulong uVar37; + uint uVar38; + long lVar39; + char *pcVar40; + char *pcVar41; + char *pcVar42; + int *piVar43; + char *pcVar44; + uint uVar45; + long lVar46; + long lVar47; + long lVar48; + undefined8 *puVar49; + long lVar50; + int *piVar51; + long lVar52; + int *piVar53; + long lVar54; + int iVar55; + undefined8 uVar56; + int iVar57; + int iVar58; + int iVar59; + undefined8 uVar60; + int iVar61; + int iVar62; + int iVar63; + int iVar64; + int iVar65; + int iVar66; + int iVar67; + int iVar68; + int iVar69; + int iVar70; + int iVar71; + int iVar72; + int iVar73; + int iVar74; + undefined8 uVar75; + long lVar76; + undefined8 uVar77; + undefined8 uVar78; + uint uVar79; + undefined8 uVar80; + undefined8 uVar81; + int iVar82; + int iVar83; + int iVar84; + int iVar85; + int iVar86; + undefined8 uVar87; + int iVar88; + int iVar89; + undefined8 uVar90; + int iVar91; + int iVar92; + undefined8 uVar93; + int iVar94; + int iVar95; + undefined8 uVar96; + int iVar97; + undefined8 uVar98; + long lVar99; + undefined8 uVar100; + undefined8 uVar101; + undefined8 uVar102; + uint uVar103; + int iVar104; + int iVar105; + undefined8 uVar106; + int iVar107; + undefined8 uVar108; + int iVar109; + int iVar110; + int iVar111; + int iVar112; + int iVar113; + int iVar114; + int iVar115; + int iVar116; + int iVar117; + int iVar118; + int iVar119; + int iVar120; + int iVar121; + int iVar122; + int iVar123; + int iVar124; + int iVar125; + int iVar126; + int iVar127; + int iVar128; + int iVar129; + int iVar130; + int iVar131; + uint uVar132; + + if (param_2 != 0) { + if (param_6 == 1) { + iVar34 = *param_3; + iVar55 = *param_4; + if ((int)param_5 < 1) { + uVar38 = 0; + } + else { + lVar35 = 0; + uVar38 = 0; + do { + /* try { // try from 0038dfa4 to 0048dff7 has its CatchHandler @ 0038e0c4 */ + if (*(char *)(param_2 + lVar35) != '\0') { + cVar18 = *(char *)((long)param_1 + lVar35); + uVar38 = uVar38 + 1; + iVar34 = iVar34 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + } + lVar35 = lVar35 + 1; + } while ((int)lVar35 < (int)param_5); + } + *param_3 = iVar34; + *param_4 = iVar55; + return uVar38; + } + if (param_6 == 3) { + iVar34 = *param_3; + iVar55 = param_3[1]; + iVar57 = param_3[2]; + iVar58 = *param_4; + iVar61 = param_4[1]; + iVar63 = param_4[2]; + if ((int)param_5 < 1) { + uVar38 = 0; + } + else { + lVar35 = 0; + uVar38 = 0; + do { + pcVar27 = (char *)(param_2 + lVar35); + lVar35 = lVar35 + 1; + if (*pcVar27 != '\0') { + cVar18 = (char)*param_1; + uVar38 = uVar38 + 1; + cVar19 = *(char *)((long)param_1 + 1); + cVar20 = *(char *)((long)param_1 + 2); + iVar34 = iVar34 + cVar18; + /* try { // try from 0038e020 to 0048e023 has its CatchHandler @ 0038d844 */ + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + iVar61 = iVar61 + (int)cVar19 * (int)cVar19; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar55 = iVar55 + cVar19; + iVar57 = iVar57 + cVar20; + } + param_1 = (int *)((long)param_1 + 3); + } while ((int)lVar35 < (int)param_5); + } + *param_3 = iVar34; + param_3[1] = iVar55; + param_3[2] = iVar57; + *param_4 = iVar58; + param_4[1] = iVar61; + param_4[2] = iVar63; + return uVar38; + } + if ((int)param_5 < 1) { + return 0; + } + uVar37 = (ulong)param_6; + uVar38 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + lVar35 = 0; + if (param_6 < uVar38) { + uVar38 = param_6; + } + piVar29 = (int *)((long)param_1 + uVar37); + uVar31 = (ulong)uVar38; + uVar103 = 0; + uVar79 = ((param_6 - uVar38) - 0x10 >> 4) + 1; + iVar34 = uVar79 * 0x10; + /* try { // try from 0038da5c to 0048daab has its CatchHandler @ 0038e0ec */ + do { + if (*(char *)(param_2 + lVar35) != '\0') { + if (0 < (int)param_6) { + if (((param_6 < 0x13 || param_4 < param_3 + 0x10 && param_3 < param_4 + 0x10) || + param_3 < piVar29 && param_1 < param_3 + uVar37) || + (param_4 < piVar29 && param_1 < param_4 + uVar37)) { + lVar36 = 0; + do { + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + lVar36 = lVar36 + 1; + } while ((int)lVar36 < (int)param_6); + } + else { + uVar30 = uVar38; + if (uVar38 != 0) { + cVar18 = (char)*param_1; + iVar55 = *param_4; + *param_3 = *param_3 + (int)cVar18; + *param_4 = iVar55 + (int)cVar18 * (int)cVar18; + if (uVar38 != 1) { + /* try { // try from 0038daec to 0048daef has its CatchHandler @ 0038e124 */ + cVar18 = *(char *)((long)param_1 + 1); + /* try { // try from 0038daf4 to 0048db4b has its CatchHandler @ 0038e0ec */ + iVar55 = param_4[1]; + param_3[1] = param_3[1] + (int)cVar18; + param_4[1] = iVar55 + (int)cVar18 * (int)cVar18; + if (uVar38 == 3) { + cVar18 = *(char *)((long)param_1 + 2); + iVar55 = param_4[2]; + param_3[2] = param_3[2] + (int)cVar18; + param_4[2] = iVar55 + (int)cVar18 * (int)cVar18; + } + else { + uVar30 = 2; + } + } + } + if (0xe < (param_6 - 1) - uVar38) { + uVar45 = 0; + piVar32 = param_3 + uVar31; + piVar43 = param_4 + uVar31; + puVar49 = (undefined8 *)((long)param_1 + uVar31); + piVar51 = param_3 + uVar31; + piVar53 = param_4 + uVar31; + do { + uVar60 = puVar49[1]; + uVar56 = *puVar49; + uVar75 = *(undefined8 *)piVar32; + uVar96 = *(undefined8 *)(piVar53 + 2); + uVar93 = *(undefined8 *)piVar53; + uVar108 = *(undefined8 *)(piVar32 + 6); + uVar106 = *(undefined8 *)(piVar32 + 4); + uVar102 = *(undefined8 *)(piVar32 + 10); + uVar101 = *(undefined8 *)(piVar32 + 8); + uVar100 = *(undefined8 *)(piVar32 + 0xe); + uVar98 = *(undefined8 *)(piVar32 + 0xc); + uVar90 = *(undefined8 *)(piVar53 + 6); + uVar87 = *(undefined8 *)(piVar53 + 4); + uVar81 = *(undefined8 *)(piVar53 + 10); + uVar80 = *(undefined8 *)(piVar53 + 8); + iVar116 = (int)(short)(char)uVar56; + iVar118 = (int)(short)(char)((ulong)uVar56 >> 8); + iVar120 = (int)(short)(char)((ulong)uVar56 >> 0x10); + iVar122 = (int)(short)(char)((ulong)uVar56 >> 0x18); + uVar78 = *(undefined8 *)(piVar53 + 0xe); + uVar77 = *(undefined8 *)(piVar53 + 0xc); + iVar63 = (int)(short)(char)((ulong)uVar56 >> 0x20); + iVar65 = (int)(short)(char)((ulong)uVar56 >> 0x28); + iVar67 = (int)(short)(char)((ulong)uVar56 >> 0x30); + iVar69 = (int)(short)(char)((ulong)uVar56 >> 0x38); + iVar110 = (int)(short)(char)uVar60; + iVar111 = (int)(short)(char)((ulong)uVar60 >> 8); + iVar112 = (int)(short)(char)((ulong)uVar60 >> 0x10); + iVar114 = (int)(short)(char)((ulong)uVar60 >> 0x18); + iVar55 = (int)(short)(char)((ulong)uVar60 >> 0x20); + iVar57 = (int)(short)(char)((ulong)uVar60 >> 0x28); + iVar58 = (int)(short)(char)((ulong)uVar60 >> 0x30); + iVar61 = (int)(short)(char)((ulong)uVar60 >> 0x38); + /* try { // try from 0038dbbc to 0048dbbf has its CatchHandler @ 0038e0c4 */ + uVar45 = uVar45 + 1; + *(ulong *)(piVar51 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar32 + 2) >> 0x20) + iVar122, + (int)*(undefined8 *)(piVar32 + 2) + iVar120); + *(ulong *)piVar51 = + CONCAT44((int)((ulong)uVar75 >> 0x20) + iVar118,(int)uVar75 + iVar116); + piVar32 = piVar32 + 0x10; + piVar53 = piVar53 + 0x10; + *(ulong *)(piVar51 + 6) = + CONCAT44(iVar69 + (int)((ulong)uVar108 >> 0x20),iVar67 + (int)uVar108); + *(ulong *)(piVar51 + 4) = + CONCAT44(iVar65 + (int)((ulong)uVar106 >> 0x20),iVar63 + (int)uVar106); + *(ulong *)(piVar51 + 10) = + CONCAT44(iVar114 + (int)((ulong)uVar102 >> 0x20),iVar112 + (int)uVar102); + *(ulong *)(piVar51 + 8) = + CONCAT44(iVar111 + (int)((ulong)uVar101 >> 0x20),iVar110 + (int)uVar101); + *(ulong *)(piVar51 + 0xe) = + CONCAT44(iVar61 + (int)((ulong)uVar100 >> 0x20),iVar58 + (int)uVar100); + *(ulong *)(piVar51 + 0xc) = + CONCAT44(iVar57 + (int)((ulong)uVar98 >> 0x20),iVar55 + (int)uVar98); + *(ulong *)(piVar43 + 2) = + CONCAT44((int)((ulong)uVar96 >> 0x20) + iVar122 * iVar122, + (int)uVar96 + iVar120 * iVar120); + *(ulong *)piVar43 = + CONCAT44((int)((ulong)uVar93 >> 0x20) + iVar118 * iVar118, + (int)uVar93 + iVar116 * iVar116); + *(ulong *)(piVar43 + 6) = + CONCAT44((int)((ulong)uVar90 >> 0x20) + iVar69 * iVar69, + (int)uVar90 + iVar67 * iVar67); + *(ulong *)(piVar43 + 4) = + CONCAT44((int)((ulong)uVar87 >> 0x20) + iVar65 * iVar65, + (int)uVar87 + iVar63 * iVar63); + *(ulong *)(piVar43 + 10) = + CONCAT44((int)((ulong)uVar81 >> 0x20) + iVar114 * iVar114, + (int)uVar81 + iVar112 * iVar112); + *(ulong *)(piVar43 + 8) = + CONCAT44((int)((ulong)uVar80 >> 0x20) + iVar111 * iVar111, + (int)uVar80 + iVar110 * iVar110); + *(ulong *)(piVar43 + 0xe) = + CONCAT44((int)((ulong)uVar78 >> 0x20) + iVar61 * iVar61, + (int)uVar78 + iVar58 * iVar58); + *(ulong *)(piVar43 + 0xc) = + CONCAT44((int)((ulong)uVar77 >> 0x20) + iVar57 * iVar57, + (int)uVar77 + iVar55 * iVar55); + piVar43 = piVar43 + 0x10; + puVar49 = puVar49 + 2; + piVar51 = piVar51 + 0x10; + /* try { // try from 0038dc30 to 0048dc33 has its CatchHandler @ 0038d844 */ + } while (uVar45 < uVar79); + uVar30 = uVar30 + iVar34; + if (param_6 - uVar38 == iVar34) goto LAB_0038df08; + } + lVar36 = (long)(int)uVar30; + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 1) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 1); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 2) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 2); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + /* try { // try from 0038dcd0 to 0048dcd3 has its CatchHandler @ 0038e0c4 */ + if ((int)(uVar30 + 3) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 3); + /* try { // try from 0038dcdc to 0048dcdf has its CatchHandler @ 0038d844 */ + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 4) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 4); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 5) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 5); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 6) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 6); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 7) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 7); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 8) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 8); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 9) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 9); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 10) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 10); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 0xb) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 0xb); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 0xc) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 0xc); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 0xd) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 0xd); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar30 + 0xe) < (int)param_6) { + lVar36 = (long)(int)(uVar30 + 0xe); + cVar18 = *(char *)((long)param_1 + lVar36); + iVar55 = param_4[lVar36]; + param_3[lVar36] = param_3[lVar36] + (int)cVar18; + param_4[lVar36] = iVar55 + (int)cVar18 * (int)cVar18; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038df08: + uVar103 = uVar103 + 1; + } + lVar35 = lVar35 + 1; + param_1 = (int *)((long)param_1 + (long)(int)param_6); + piVar29 = (int *)((long)piVar29 + (long)(int)param_6); + if ((int)param_5 <= (int)lVar35) { + return uVar103; + } + } while( true ); + } + /* try { // try from 0038e068 to 0048e06b has its CatchHandler @ 0038e0c4 */ + iVar34 = (int)param_6 % 4; + uVar38 = 0; + if (iVar34 != 1) { + if (iVar34 != 2) { + uVar38 = 0; + /* try { // try from 0038e08c to 0048e08f has its CatchHandler @ 0038d844 */ + if (iVar34 != 3) goto LAB_0038e094; + iVar65 = *param_3; + iVar61 = param_3[1]; + iVar57 = param_3[2]; + iVar63 = *param_4; + iVar58 = param_4[1]; + iVar55 = param_4[2]; + if (0 < (int)param_5) { + uVar38 = (param_5 - 0x10 >> 4) + 1; + lVar35 = (long)(int)param_6; + uVar79 = uVar38 * 0x10; + if (param_5 - 1 < 0xf) { + uVar79 = 0; + piVar29 = param_1; + } + else { + lVar46 = lVar35 * 2; + uVar103 = 0; + iVar107 = 0; + iVar109 = 0; + iVar113 = 0; + iVar115 = 0; + lVar50 = NEON_shl(lVar35,4); + lVar22 = lVar35 * 3; + lVar23 = lVar35 * 5; + lVar47 = lVar35 * 10; + pcVar27 = (char *)((long)param_1 + 1); + lVar33 = lVar50 + lVar35 * -2; + pcVar42 = (char *)((long)param_1 + 2); + lVar48 = lVar50 - lVar35; + lVar36 = lVar35 * 7; + lVar39 = lVar35 * 6; + lVar24 = lVar35 * 9; + lVar25 = lVar35 * 0xd; + lVar28 = lVar35 * 0xb; + piVar29 = param_1; + iVar67 = iVar107; + iVar69 = iVar109; + iVar110 = iVar107; + iVar111 = iVar109; + iVar112 = iVar107; + iVar114 = iVar109; + iVar116 = iVar107; + iVar118 = iVar109; + iVar120 = iVar107; + iVar122 = iVar109; + iVar117 = iVar113; + iVar119 = iVar115; + iVar124 = iVar113; + iVar125 = iVar115; + iVar128 = iVar113; + iVar129 = iVar115; + iVar59 = iVar113; + iVar62 = iVar115; + iVar104 = iVar113; + iVar105 = iVar115; + do { + uVar103 = uVar103 + 1; + iVar121 = *piVar29; + pcVar44 = (char *)((long)piVar29 + lVar35); + pcVar41 = (char *)((long)piVar29 + lVar46); + pcVar40 = (char *)((long)piVar29 + lVar22); + piVar32 = piVar29 + lVar35; + pcVar1 = (char *)((long)piVar29 + lVar23); + pcVar2 = (char *)((long)piVar29 + lVar39); + pcVar3 = (char *)((long)piVar29 + lVar36); + piVar53 = piVar29 + lVar35 * 2; + pcVar4 = (char *)((long)piVar29 + lVar24); + pcVar5 = (char *)((long)piVar29 + lVar47); + pcVar6 = (char *)((long)piVar29 + lVar28); + piVar43 = piVar29 + lVar35 * 3; + pcVar7 = (char *)((long)piVar29 + lVar25); + pcVar8 = (char *)((long)piVar29 + lVar33); + pcVar9 = (char *)((long)piVar29 + lVar48); + piVar29 = (int *)((long)piVar29 + lVar50); + cVar18 = *pcVar27; + pcVar10 = pcVar27 + lVar35; + pcVar11 = pcVar27 + lVar46; + iVar73 = (int)(short)(char)iVar121; + iVar74 = (int)(short)*pcVar44; + iVar82 = (int)(short)*pcVar41; + iVar83 = (int)(short)*pcVar40; + pcVar44 = pcVar27 + lVar22; + iVar130 = (int)(short)(char)*piVar32; + iVar131 = (int)(short)*pcVar1; + iVar64 = (int)(short)*pcVar2; + iVar66 = (int)(short)*pcVar3; + iVar68 = (int)(short)(char)*piVar53; + iVar70 = (int)(short)*pcVar4; + iVar71 = (int)(short)*pcVar5; + iVar72 = (int)(short)*pcVar6; + iVar121 = (int)(short)(char)*piVar43; + iVar123 = (int)(short)*pcVar7; + iVar126 = (int)(short)*pcVar8; + iVar127 = (int)(short)*pcVar9; + pcVar41 = pcVar27 + lVar35 * 4; + pcVar40 = pcVar27 + lVar23; + pcVar1 = pcVar27 + lVar39; + pcVar2 = pcVar27 + lVar36; + iVar107 = iVar121 + iVar68 + iVar130 + iVar73 + iVar107; + iVar109 = iVar123 + iVar70 + iVar131 + iVar74 + iVar109; + iVar113 = iVar126 + iVar71 + iVar64 + iVar82 + iVar113; + iVar115 = iVar127 + iVar72 + iVar66 + iVar83 + iVar115; + iVar110 = iVar110 + iVar73 * iVar73 + iVar130 * iVar130 + iVar68 * iVar68 + + iVar121 * iVar121; + iVar111 = iVar111 + iVar74 * iVar74 + iVar131 * iVar131 + iVar70 * iVar70 + + iVar123 * iVar123; + iVar124 = iVar124 + iVar82 * iVar82 + iVar64 * iVar64 + iVar71 * iVar71 + + iVar126 * iVar126; + iVar125 = iVar125 + iVar83 * iVar83 + iVar66 * iVar66 + iVar72 * iVar72 + + iVar127 * iVar127; + pcVar3 = pcVar27 + lVar35 * 8; + pcVar4 = pcVar27 + lVar24; + pcVar5 = pcVar27 + lVar47; + pcVar6 = pcVar27 + lVar28; + pcVar7 = pcVar27 + lVar35 * 0xc; + pcVar8 = pcVar27 + lVar25; + pcVar9 = pcVar27 + lVar33; + pcVar12 = pcVar27 + lVar48; + pcVar27 = pcVar27 + lVar50; + cVar19 = *pcVar42; + pcVar13 = pcVar42 + lVar35; + pcVar14 = pcVar42 + lVar46; + iVar73 = (int)(short)cVar18; + iVar74 = (int)(short)*pcVar10; + iVar82 = (int)(short)*pcVar11; + iVar83 = (int)(short)*pcVar44; + pcVar44 = pcVar42 + lVar22; + iVar130 = (int)(short)*pcVar41; + iVar131 = (int)(short)*pcVar40; + iVar64 = (int)(short)*pcVar1; + iVar66 = (int)(short)*pcVar2; + iVar68 = (int)(short)*pcVar3; + iVar70 = (int)(short)*pcVar4; + iVar71 = (int)(short)*pcVar5; + iVar72 = (int)(short)*pcVar6; + iVar121 = (int)(short)*pcVar7; + iVar123 = (int)(short)*pcVar8; + iVar126 = (int)(short)*pcVar9; + iVar127 = (int)(short)*pcVar12; + pcVar41 = pcVar42 + lVar35 * 4; + pcVar40 = pcVar42 + lVar23; + pcVar1 = pcVar42 + lVar39; + pcVar2 = pcVar42 + lVar36; + iVar112 = iVar121 + iVar68 + iVar130 + iVar73 + iVar112; + iVar114 = iVar123 + iVar70 + iVar131 + iVar74 + iVar114; + iVar128 = iVar126 + iVar71 + iVar64 + iVar82 + iVar128; + iVar129 = iVar127 + iVar72 + iVar66 + iVar83 + iVar129; + iVar116 = iVar116 + iVar73 * iVar73 + iVar130 * iVar130 + iVar68 * iVar68 + + iVar121 * iVar121; + iVar118 = iVar118 + iVar74 * iVar74 + iVar131 * iVar131 + iVar70 * iVar70 + + iVar123 * iVar123; + iVar59 = iVar59 + iVar82 * iVar82 + iVar64 * iVar64 + iVar71 * iVar71 + + iVar126 * iVar126; + iVar62 = iVar62 + iVar83 * iVar83 + iVar66 * iVar66 + iVar72 * iVar72 + + iVar127 * iVar127; + pcVar3 = pcVar42 + lVar35 * 8; + pcVar4 = pcVar42 + lVar24; + pcVar5 = pcVar42 + lVar47; + pcVar6 = pcVar42 + lVar28; + pcVar7 = pcVar42 + lVar35 * 0xc; + pcVar8 = pcVar42 + lVar25; + pcVar9 = pcVar42 + lVar33; + pcVar10 = pcVar42 + lVar48; + pcVar42 = pcVar42 + lVar50; + iVar73 = (int)(short)cVar19; + iVar74 = (int)(short)*pcVar13; + iVar82 = (int)(short)*pcVar14; + iVar83 = (int)(short)*pcVar44; + iVar130 = (int)(short)*pcVar41; + iVar131 = (int)(short)*pcVar40; + iVar64 = (int)(short)*pcVar1; + iVar66 = (int)(short)*pcVar2; + iVar68 = (int)(short)*pcVar3; + iVar70 = (int)(short)*pcVar4; + iVar71 = (int)(short)*pcVar5; + iVar72 = (int)(short)*pcVar6; + iVar121 = (int)(short)*pcVar7; + iVar123 = (int)(short)*pcVar8; + iVar126 = (int)(short)*pcVar9; + iVar127 = (int)(short)*pcVar10; + iVar120 = iVar121 + iVar68 + iVar130 + iVar73 + iVar120; + iVar122 = iVar123 + iVar70 + iVar131 + iVar74 + iVar122; + iVar104 = iVar126 + iVar71 + iVar64 + iVar82 + iVar104; + iVar105 = iVar127 + iVar72 + iVar66 + iVar83 + iVar105; + iVar67 = iVar67 + iVar73 * iVar73 + iVar130 * iVar130 + iVar68 * iVar68 + + iVar121 * iVar121; + iVar69 = iVar69 + iVar74 * iVar74 + iVar131 * iVar131 + iVar70 * iVar70 + + iVar123 * iVar123; + iVar117 = iVar117 + iVar82 * iVar82 + iVar64 * iVar64 + iVar71 * iVar71 + + iVar126 * iVar126; + iVar119 = iVar119 + iVar83 * iVar83 + iVar66 * iVar66 + iVar72 * iVar72 + + iVar127 * iVar127; + } while (uVar103 < uVar38); + iVar55 = iVar55 + iVar67 + iVar69 + iVar117 + iVar119; + iVar57 = iVar57 + iVar120 + iVar122 + iVar104 + iVar105; + iVar58 = iVar58 + iVar116 + iVar118 + iVar59 + iVar62; + iVar61 = iVar61 + iVar112 + iVar114 + iVar128 + iVar129; + iVar63 = iVar63 + iVar110 + iVar111 + iVar124 + iVar125; + iVar65 = iVar65 + iVar107 + iVar109 + iVar113 + iVar115; + piVar29 = (int *)((long)param_1 + (ulong)uVar79 * lVar35); + uVar38 = param_5; + if (param_5 == uVar79) goto LAB_0038f89c; + } + cVar18 = (char)*piVar29; + cVar19 = *(char *)((long)piVar29 + 1); + cVar20 = *(char *)((long)piVar29 + 2); + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + iVar61 = iVar61 + cVar19; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + uVar38 = param_5; + if ((int)(uVar79 + 1) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35); + cVar18 = *(char *)((long)piVar29 + lVar35 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 2) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 2); + cVar18 = *(char *)((long)piVar29 + lVar35 * 2 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 2 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 3) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 3); + cVar18 = *(char *)((long)piVar29 + lVar35 * 3 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 3 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 4) < (int)param_5) { + cVar20 = (char)piVar29[lVar35]; + cVar18 = *(char *)((long)piVar29 + lVar35 * 4 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 4 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 5) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 5); + cVar18 = *(char *)((long)piVar29 + lVar35 * 5 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 5 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 6) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 6); + cVar18 = *(char *)((long)piVar29 + lVar35 * 6 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 6 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 7) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 7); + cVar18 = *(char *)((long)piVar29 + lVar35 * 7 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 7 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 8) < (int)param_5) { + cVar20 = (char)piVar29[lVar35 * 2]; + cVar18 = *(char *)((long)piVar29 + lVar35 * 8 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 8 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 9) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 9); + cVar18 = *(char *)((long)piVar29 + lVar35 * 9 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 9 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 10) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 10); + cVar18 = *(char *)((long)piVar29 + lVar35 * 10 + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 10 + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xb) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 0xb); + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xb + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xb + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xc) < (int)param_5) { + cVar20 = (char)piVar29[lVar35 * 3]; + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xc + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xc + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xd) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 0xd); + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xd + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xd + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar57 = iVar57 + cVar19; + iVar61 = iVar61 + cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xe) < (int)param_5) { + cVar20 = *(char *)((long)piVar29 + lVar35 * 0xe); + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xe + 1); + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xe + 2); + iVar65 = iVar65 + cVar20; + iVar63 = iVar63 + (int)cVar20 * (int)cVar20; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + iVar61 = iVar61 + cVar18; + iVar57 = iVar57 + cVar19; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038f89c: + *param_3 = iVar65; + param_3[1] = iVar61; + param_3[2] = iVar57; + *param_4 = iVar63; + param_4[1] = iVar58; + param_4[2] = iVar55; + goto LAB_0038e094; + } + iVar61 = *param_3; + iVar57 = param_3[1]; + iVar58 = *param_4; + iVar55 = param_4[1]; + if (0 < (int)param_5) { + /* try { // try from 0038ed20 to 0048ed23 has its CatchHandler @ 0038eac0 */ + uVar38 = (param_5 - 0x10 >> 4) + 1; + lVar35 = (long)(int)param_6; + uVar79 = uVar38 * 0x10; + if (param_5 - 1 < 0xf) { + uVar79 = 0; + piVar29 = param_1; + } + else { + iVar117 = 0; + iVar119 = 0; + iVar124 = 0; + iVar125 = 0; + pcVar27 = (char *)((long)param_1 + 1); + uVar103 = 0; + piVar29 = param_1; + iVar63 = iVar117; + iVar65 = iVar119; + iVar67 = iVar117; + iVar69 = iVar119; + iVar110 = iVar117; + iVar111 = iVar119; + iVar112 = iVar124; + iVar114 = iVar125; + iVar116 = iVar124; + iVar118 = iVar125; + iVar120 = iVar124; + iVar122 = iVar125; + do { + iVar128 = *piVar29; + uVar103 = uVar103 + 1; + pcVar42 = (char *)((long)piVar29 + lVar35); + pcVar44 = (char *)((long)piVar29 + lVar35 * 2); + pcVar41 = (char *)((long)piVar29 + lVar35 * 3); + piVar32 = piVar29 + lVar35; + pcVar40 = (char *)((long)piVar29 + lVar35 * 5); + pcVar1 = (char *)((long)piVar29 + lVar35 * 6); + pcVar2 = (char *)((long)piVar29 + lVar35 * 7); + piVar53 = piVar29 + lVar35 * 2; + pcVar3 = (char *)((long)piVar29 + lVar35 * 9); + pcVar4 = (char *)((long)piVar29 + lVar35 * 10); + pcVar5 = (char *)((long)piVar29 + lVar35 * 0xb); + piVar43 = piVar29 + lVar35 * 3; + pcVar6 = (char *)((long)piVar29 + lVar35 * 0xd); + pcVar7 = (char *)((long)piVar29 + lVar35 * 0xe); + pcVar8 = (char *)((long)piVar29 + lVar35 * 0xf); + piVar29 = piVar29 + lVar35 * 4; + cVar18 = *pcVar27; + pcVar9 = pcVar27 + lVar35; + pcVar10 = pcVar27 + lVar35 * 2; + iVar126 = (int)(short)(char)iVar128; + iVar127 = (int)(short)*pcVar42; + iVar130 = (int)(short)*pcVar44; + iVar131 = (int)(short)*pcVar41; + pcVar42 = pcVar27 + lVar35 * 3; + iVar104 = (int)(short)(char)*piVar32; + iVar105 = (int)(short)*pcVar40; + iVar107 = (int)(short)*pcVar1; + iVar109 = (int)(short)*pcVar2; + iVar113 = (int)(short)(char)*piVar53; + iVar115 = (int)(short)*pcVar3; + iVar121 = (int)(short)*pcVar4; + iVar123 = (int)(short)*pcVar5; + iVar128 = (int)(short)(char)*piVar43; + iVar129 = (int)(short)*pcVar6; + iVar59 = (int)(short)*pcVar7; + iVar62 = (int)(short)*pcVar8; + pcVar44 = pcVar27 + lVar35 * 4; + pcVar41 = pcVar27 + lVar35 * 5; + pcVar40 = pcVar27 + lVar35 * 6; + pcVar1 = pcVar27 + lVar35 * 7; + pcVar2 = pcVar27 + lVar35 * 8; + iVar117 = iVar128 + iVar113 + iVar104 + iVar126 + iVar117; + iVar119 = iVar129 + iVar115 + iVar105 + iVar127 + iVar119; + iVar124 = iVar59 + iVar121 + iVar107 + iVar130 + iVar124; + iVar125 = iVar62 + iVar123 + iVar109 + iVar131 + iVar125; + iVar110 = iVar110 + iVar126 * iVar126 + iVar104 * iVar104 + iVar113 * iVar113 + + iVar128 * iVar128; + iVar111 = iVar111 + iVar127 * iVar127 + iVar105 * iVar105 + iVar115 * iVar115 + + iVar129 * iVar129; + iVar120 = iVar120 + iVar130 * iVar130 + iVar107 * iVar107 + iVar121 * iVar121 + + iVar59 * iVar59; + iVar122 = iVar122 + iVar131 * iVar131 + iVar109 * iVar109 + iVar123 * iVar123 + + iVar62 * iVar62; + pcVar3 = pcVar27 + lVar35 * 9; + pcVar4 = pcVar27 + lVar35 * 10; + pcVar5 = pcVar27 + lVar35 * 0xb; + pcVar6 = pcVar27 + lVar35 * 0xc; + pcVar7 = pcVar27 + lVar35 * 0xd; + pcVar8 = pcVar27 + lVar35 * 0xe; + pcVar11 = pcVar27 + lVar35 * 0xf; + pcVar27 = pcVar27 + lVar35 * 0x10; + iVar126 = (int)(short)cVar18; + iVar127 = (int)(short)*pcVar9; + iVar130 = (int)(short)*pcVar10; + iVar131 = (int)(short)*pcVar42; + iVar104 = (int)(short)*pcVar44; + iVar105 = (int)(short)*pcVar41; + iVar107 = (int)(short)*pcVar40; + iVar109 = (int)(short)*pcVar1; + iVar113 = (int)(short)*pcVar2; + iVar115 = (int)(short)*pcVar3; + iVar121 = (int)(short)*pcVar4; + iVar123 = (int)(short)*pcVar5; + iVar128 = (int)(short)*pcVar6; + iVar129 = (int)(short)*pcVar7; + iVar59 = (int)(short)*pcVar8; + iVar62 = (int)(short)*pcVar11; + iVar67 = iVar128 + iVar113 + iVar104 + iVar126 + iVar67; + iVar69 = iVar129 + iVar115 + iVar105 + iVar127 + iVar69; + iVar116 = iVar59 + iVar121 + iVar107 + iVar130 + iVar116; + iVar118 = iVar62 + iVar123 + iVar109 + iVar131 + iVar118; + iVar63 = iVar63 + iVar126 * iVar126 + iVar104 * iVar104 + iVar113 * iVar113 + + iVar128 * iVar128; + iVar65 = iVar65 + iVar127 * iVar127 + iVar105 * iVar105 + iVar115 * iVar115 + + iVar129 * iVar129; + iVar112 = iVar112 + iVar130 * iVar130 + iVar107 * iVar107 + iVar121 * iVar121 + + iVar59 * iVar59; + iVar114 = iVar114 + iVar131 * iVar131 + iVar109 * iVar109 + iVar123 * iVar123 + + iVar62 * iVar62; + } while (uVar103 < uVar38); + iVar55 = iVar55 + iVar63 + iVar65 + iVar112 + iVar114; + iVar57 = iVar57 + iVar67 + iVar69 + iVar116 + iVar118; + iVar58 = iVar58 + iVar110 + iVar111 + iVar120 + iVar122; + iVar61 = iVar61 + iVar117 + iVar119 + iVar124 + iVar125; + piVar29 = (int *)((long)param_1 + (ulong)uVar79 * lVar35); + uVar38 = param_5; + if (param_5 == uVar79) goto LAB_0038f1cc; + } + cVar18 = (char)*piVar29; + cVar19 = *(char *)((long)piVar29 + 1); + iVar61 = iVar61 + cVar18; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar19; + iVar55 = iVar55 + (int)cVar19 * (int)cVar19; + uVar38 = param_5; + if ((int)(uVar79 + 1) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35); + cVar18 = *(char *)((long)piVar29 + lVar35 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 2) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 2); + cVar18 = *(char *)((long)piVar29 + lVar35 * 2 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 3) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 3); + cVar18 = *(char *)((long)piVar29 + lVar35 * 3 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 4) < (int)param_5) { + cVar19 = (char)piVar29[lVar35]; + cVar18 = *(char *)((long)piVar29 + lVar35 * 4 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 5) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 5); + /* try { // try from 0038f04c to 0048f04f has its CatchHandler @ 0038ff14 */ + cVar18 = *(char *)((long)piVar29 + lVar35 * 5 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 6) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 6); + /* try { // try from 0038f078 to 0048f0cb has its CatchHandler @ 0038eac0 */ + cVar18 = *(char *)((long)piVar29 + lVar35 * 6 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 7) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 7); + cVar18 = *(char *)((long)piVar29 + lVar35 * 7 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 8) < (int)param_5) { + cVar19 = (char)piVar29[lVar35 * 2]; + cVar18 = *(char *)((long)piVar29 + lVar35 * 8 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 9) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 9); + cVar18 = *(char *)((long)piVar29 + lVar35 * 9 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 10) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 10); + cVar18 = *(char *)((long)piVar29 + lVar35 * 10 + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xb) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xb); + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xb + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xc) < (int)param_5) { + cVar19 = (char)piVar29[lVar35 * 3]; + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xc + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xd) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xd); + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xd + 1); + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar57 = iVar57 + cVar18; + /* try { // try from 0038f1a8 to 0048f1ab has its CatchHandler @ 0038ff14 */ + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xe) < (int)param_5) { + cVar19 = *(char *)((long)piVar29 + lVar35 * 0xe); + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xe + 1); + /* try { // try from 0038f1b8 to 0048f1bb has its CatchHandler @ 0038eac0 */ + iVar61 = iVar61 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar18; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038f1cc: + *param_3 = iVar61; + param_3[1] = iVar57; + *param_4 = iVar58; + param_4[1] = iVar55; + goto LAB_0038e094; + } + iVar57 = *param_3; + iVar55 = *param_4; + if (0 < (int)param_5) { + uVar38 = (param_5 - 0x10 >> 4) + 1; + /* try { // try from 0038ea1c to 0048ea1f has its CatchHandler @ 0038e134 */ + lVar35 = (long)(int)param_6; + uVar79 = uVar38 * 0x10; + /* catch() { ... } // from try @ 0038e820 with catch @ 0038ea24 */ + if (param_5 - 1 < 0xf) { + uVar79 = 0; + piVar29 = param_1; + } + else { + iVar67 = 0; + iVar69 = 0; + iVar110 = 0; + iVar111 = 0; + pcVar27 = (char *)((long)param_1 + lVar35 * 10); + uVar103 = 0; + piVar29 = param_1; + iVar58 = iVar67; + iVar61 = iVar69; + iVar63 = iVar110; + iVar65 = iVar111; + do { + iVar112 = *piVar29; + uVar103 = uVar103 + 1; + /* try { // try from 0038ea74 to 0048ea77 has its CatchHandler @ 0038e134 */ + pcVar42 = (char *)((long)piVar29 + lVar35); + /* catch() { ... } // from try @ 0038e284 with catch @ 0038ea78 */ + pcVar44 = (char *)((long)piVar29 + lVar35 * 2); + pcVar41 = (char *)((long)piVar29 + lVar35 * 3); + piVar32 = piVar29 + lVar35; + /* catch() { ... } // from try @ 0038e208 with catch @ 0038ea88 + catch() { ... } // from try @ 0038e28c with catch @ 0038ea88 + catch() { ... } // from try @ 0038e7c4 with catch @ 0038ea88 + catch() { ... } // from try @ 0038e828 with catch @ 0038ea88 */ + /* catch() { ... } // from try @ 0038e460 with catch @ 0038ea90 */ + pcVar40 = (char *)((long)piVar29 + lVar35 * 5); + pcVar1 = (char *)((long)piVar29 + lVar35 * 6); + pcVar2 = pcVar27 + lVar35 * -3; + piVar53 = piVar29 + lVar35 * 2; + /* catch() { ... } // from try @ 0038e1d8 with catch @ 0038eab0 + catch() { ... } // from try @ 0038e608 with catch @ 0038eab0 + catch() { ... } // from try @ 0038e9ec with catch @ 0038eab0 */ + pcVar3 = (char *)((long)piVar29 + lVar35 * 9); + piVar29 = piVar29 + lVar35 * 4; + /* catch() { ... } // from try @ 0038eb00 with catch @ 0038eac0 + catch() { ... } // from try @ 0038eb58 with catch @ 0038eac0 + catch() { ... } // from try @ 0038ed20 with catch @ 0038eac0 + catch() { ... } // from try @ 0038f078 with catch @ 0038eac0 + catch() { ... } // from try @ 0038f1b8 with catch @ 0038eac0 + catch() { ... } // from try @ 0038ff10 with catch @ 0038eac0 + catch() { ... } // from try @ 0038ff2c with catch @ 0038eac0 */ + cVar18 = *pcVar27; + pcVar4 = pcVar27 + lVar35; + pcVar5 = pcVar27 + lVar35 * 2; + pcVar6 = pcVar27 + lVar35 * 3; + pcVar7 = pcVar27 + lVar35 * 4; + pcVar8 = pcVar27 + lVar35 * 5; + pcVar27 = pcVar27 + lVar35 * 0x10; + /* try { // try from 0038eb00 to 0048eb23 has its CatchHandler @ 0038eac0 */ + iVar59 = (int)(short)(char)iVar112; + iVar62 = (int)(short)*pcVar42; + iVar104 = (int)(short)*pcVar44; + iVar105 = (int)(short)*pcVar41; + iVar120 = (int)(short)(char)*piVar32; + iVar122 = (int)(short)*pcVar40; + iVar117 = (int)(short)*pcVar1; + iVar119 = (int)(short)*pcVar2; + iVar124 = (int)(short)(char)*piVar53; + iVar125 = (int)(short)*pcVar3; + iVar128 = (int)(short)cVar18; + iVar129 = (int)(short)*pcVar4; + iVar112 = (int)(short)*pcVar5; + iVar114 = (int)(short)*pcVar6; + iVar116 = (int)(short)*pcVar7; + iVar118 = (int)(short)*pcVar8; + iVar67 = iVar112 + iVar124 + iVar120 + iVar59 + iVar67; + iVar69 = iVar114 + iVar125 + iVar122 + iVar62 + iVar69; + iVar110 = iVar116 + iVar128 + iVar117 + iVar104 + iVar110; + iVar111 = iVar118 + iVar129 + iVar119 + iVar105 + iVar111; + iVar58 = iVar58 + iVar59 * iVar59 + iVar120 * iVar120 + iVar124 * iVar124 + + iVar112 * iVar112; + iVar61 = iVar61 + iVar62 * iVar62 + iVar122 * iVar122 + iVar125 * iVar125 + + iVar114 * iVar114; + iVar63 = iVar63 + iVar104 * iVar104 + iVar117 * iVar117 + iVar128 * iVar128 + + iVar116 * iVar116; + iVar65 = iVar65 + iVar105 * iVar105 + iVar119 * iVar119 + iVar129 * iVar129 + + iVar118 * iVar118; + } while (uVar103 < uVar38); + /* try { // try from 0038eb50 to 0048eb53 has its CatchHandler @ 0038ff1c */ + iVar55 = iVar55 + iVar58 + iVar61 + iVar63 + iVar65; + iVar57 = iVar57 + iVar67 + iVar69 + iVar110 + iVar111; + piVar29 = (int *)((long)param_1 + (ulong)uVar79 * lVar35); + uVar38 = param_5; + /* try { // try from 0038eb58 to 0048ebfb has its CatchHandler @ 0038eac0 */ + if (param_5 == uVar79) goto LAB_0038ecf0; + } + cVar18 = (char)*piVar29; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + uVar38 = param_5; + if ((int)(uVar79 + 1) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 2) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 2); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 3) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 3); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 4) < (int)param_5) { + cVar18 = (char)piVar29[lVar35]; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 5) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 5); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 6) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 6); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 7) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 7); + /* try { // try from 0038ec24 to 0048ec4b has its CatchHandler @ 0038ff14 */ + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 8) < (int)param_5) { + cVar18 = (char)piVar29[lVar35 * 2]; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 9) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 9); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 10) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 10); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xb) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xb); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xc) < (int)param_5) { + cVar18 = (char)piVar29[lVar35 * 3]; + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xd) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xd); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + if ((int)(uVar79 + 0xe) < (int)param_5) { + cVar18 = *(char *)((long)piVar29 + lVar35 * 0xe); + iVar57 = iVar57 + cVar18; + iVar55 = iVar55 + (int)cVar18 * (int)cVar18; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038ecf0: + /* try { // try from 0038ecf0 to 0048ecf3 has its CatchHandler @ 0038fed0 */ + *param_3 = iVar57; + *param_4 = iVar55; +LAB_0038e094: + /* try { // try from 0038e09c to 0048e0bf has its CatchHandler @ 0038e0c4 */ + if (iVar34 < (int)param_6) { + lVar39 = (long)(int)param_6; + lVar46 = lVar39 * 2; + lVar36 = lVar39 * 3; + lVar52 = lVar39 * 4; + lVar50 = lVar39 * 0xc; + lVar33 = (long)iVar34; + /* catch() { ... } // from try @ 0038d8cc with catch @ 0038e0c4 + catch() { ... } // from try @ 0038d918 with catch @ 0038e0c4 + catch() { ... } // from try @ 0038dbbc with catch @ 0038e0c4 + catch() { ... } // from try @ 0038dcd0 with catch @ 0038e0c4 + catch() { ... } // from try @ 0038dfa4 with catch @ 0038e0c4 + catch() { ... } // from try @ 0038e068 with catch @ 0038e0c4 + catch() { ... } // from try @ 0038e09c with catch @ 0038e0c4 */ + lVar76 = NEON_shl(lVar39,4); + lVar22 = lVar39 * 5; + lVar23 = lVar39 * 0xd; + /* try { // try from 0038e0e8 to 0048e0eb has its CatchHandler @ 0038d844 */ + lVar48 = lVar39 * 10; + /* catch() { ... } // from try @ 0038da5c with catch @ 0038e0ec + catch() { ... } // from try @ 0038daf4 with catch @ 0038e0ec + catch() { ... } // from try @ 0038df20 with catch @ 0038e0ec */ + lVar24 = lVar39 * 0xb; + lVar47 = lVar39 * 8; + pcVar27 = (char *)((long)param_1 + lVar33); + /* catch() { ... } // from try @ 0038d910 with catch @ 0038e110 */ + lVar35 = lVar39 * 7; + /* catch() { ... } // from try @ 0038daec with catch @ 0038e124 */ + lVar25 = lVar39 * 9; + lVar28 = lVar76 + lVar39 * -2; + /* catch() { ... } // from try @ 0038e1b0 with catch @ 0038e134 + catch() { ... } // from try @ 0038e638 with catch @ 0038e134 + catch() { ... } // from try @ 0038ea1c with catch @ 0038e134 + catch() { ... } // from try @ 0038ea74 with catch @ 0038e134 */ + lVar99 = NEON_shl(lVar36,1); + lVar54 = lVar76 - lVar39; + piVar29 = param_4 + lVar33; + piVar32 = param_3 + lVar33; + do { + iVar69 = *piVar32; + iVar65 = piVar32[1]; + iVar63 = piVar32[2]; + iVar57 = piVar32[3]; + iVar67 = *piVar29; + iVar61 = piVar29[1]; + iVar58 = piVar29[2]; + iVar55 = piVar29[3]; + uVar79 = uVar38; + if ((int)uVar38 < (int)param_5) { + uVar45 = param_5 - uVar38; + uVar103 = (uVar45 - 0x10 >> 4) + 1; + uVar30 = uVar103 * 0x10; + pcVar42 = pcVar27; + uVar79 = param_5; + if (0xe < (param_5 - 1) - uVar38) { + iVar64 = 0; + iVar66 = 0; + iVar68 = 0; + iVar70 = 0; + uVar132 = 0; + pcVar42 = pcVar27 + 1; + /* try { // try from 0038e1b0 to 0048e1d3 has its CatchHandler @ 0038e134 */ + pcVar44 = pcVar27 + 2; + pcVar41 = pcVar27 + 3; + /* try { // try from 0038e1d8 to 0048e1fb has its CatchHandler @ 0038eab0 */ + pcVar40 = pcVar27; + iVar110 = iVar64; + iVar111 = iVar66; + iVar112 = iVar64; + iVar114 = iVar66; + iVar116 = iVar64; + iVar118 = iVar66; + iVar120 = iVar64; + iVar122 = iVar66; + iVar117 = iVar64; + iVar119 = iVar66; + iVar124 = iVar64; + iVar125 = iVar66; + iVar128 = iVar64; + iVar129 = iVar66; + iVar59 = iVar68; + iVar62 = iVar70; + iVar104 = iVar68; + iVar105 = iVar70; + iVar107 = iVar68; + iVar109 = iVar70; + iVar113 = iVar68; + iVar115 = iVar70; + iVar121 = iVar68; + iVar123 = iVar70; + iVar126 = iVar68; + iVar127 = iVar70; + iVar130 = iVar68; + iVar131 = iVar70; + do { + uVar132 = uVar132 + 1; + cVar18 = *pcVar40; + /* try { // try from 0038e208 to 0048e233 has its CatchHandler @ 0038ea88 */ + pcVar1 = pcVar40 + lVar39; + pcVar2 = pcVar40 + lVar46; + pcVar3 = pcVar40 + lVar36; + pcVar4 = pcVar40 + lVar52; + pcVar5 = pcVar40 + lVar22; + pcVar6 = pcVar40 + lVar99; + pcVar7 = pcVar40 + lVar35; + pcVar8 = pcVar40 + lVar47; + pcVar9 = pcVar40 + lVar25; + pcVar10 = pcVar40 + lVar48; + pcVar11 = pcVar40 + lVar24; + pcVar12 = pcVar40 + lVar50; + /* try { // try from 0038e284 to 0048e287 has its CatchHandler @ 0038ea78 */ + pcVar13 = pcVar40 + lVar23; + /* try { // try from 0038e28c to 0048e42f has its CatchHandler @ 0038ea88 */ + pcVar14 = pcVar40 + lVar28; + pcVar15 = pcVar40 + lVar54; + pcVar40 = pcVar40 + lVar76; + cVar19 = *pcVar42; + pcVar16 = pcVar42 + lVar39; + pcVar17 = pcVar42 + lVar46; + iVar92 = (int)(short)cVar18; + iVar94 = (int)(short)*pcVar1; + iVar95 = (int)(short)*pcVar2; + iVar97 = (int)(short)*pcVar3; + pcVar1 = pcVar42 + lVar36; + iVar82 = (int)(short)*pcVar4; + iVar83 = (int)(short)*pcVar5; + iVar84 = (int)(short)*pcVar6; + iVar85 = (int)(short)*pcVar7; + iVar86 = (int)(short)*pcVar8; + iVar88 = (int)(short)*pcVar9; + iVar89 = (int)(short)*pcVar10; + iVar91 = (int)(short)*pcVar11; + iVar71 = (int)(short)*pcVar12; + iVar72 = (int)(short)*pcVar13; + iVar73 = (int)(short)*pcVar14; + iVar74 = (int)(short)*pcVar15; + pcVar2 = pcVar42 + lVar52; + pcVar3 = pcVar42 + lVar22; + pcVar4 = pcVar42 + lVar99; + iVar64 = iVar71 + iVar86 + iVar82 + iVar92 + iVar64; + iVar66 = iVar72 + iVar88 + iVar83 + iVar94 + iVar66; + iVar68 = iVar73 + iVar89 + iVar84 + iVar95 + iVar68; + iVar70 = iVar74 + iVar91 + iVar85 + iVar97 + iVar70; + iVar112 = iVar112 + iVar92 * iVar92 + iVar82 * iVar82 + iVar86 * iVar86 + + iVar71 * iVar71; + iVar114 = iVar114 + iVar94 * iVar94 + iVar83 * iVar83 + iVar88 * iVar88 + + iVar72 * iVar72; + iVar104 = iVar104 + iVar95 * iVar95 + iVar84 * iVar84 + iVar89 * iVar89 + + iVar73 * iVar73; + iVar105 = iVar105 + iVar97 * iVar97 + iVar85 * iVar85 + iVar91 * iVar91 + + iVar74 * iVar74; + pcVar5 = pcVar42 + lVar35; + pcVar6 = pcVar42 + lVar47; + pcVar7 = pcVar42 + lVar25; + pcVar8 = pcVar42 + lVar48; + pcVar9 = pcVar42 + lVar24; + pcVar10 = pcVar42 + lVar50; + pcVar11 = pcVar42 + lVar23; + pcVar12 = pcVar42 + lVar28; + pcVar13 = pcVar42 + lVar54; + pcVar42 = pcVar42 + lVar76; + cVar18 = *pcVar44; + pcVar14 = pcVar44 + lVar39; + pcVar15 = pcVar44 + lVar46; + iVar92 = (int)(short)cVar19; + iVar94 = (int)(short)*pcVar16; + iVar95 = (int)(short)*pcVar17; + iVar97 = (int)(short)*pcVar1; + pcVar1 = pcVar44 + lVar36; + iVar82 = (int)(short)*pcVar2; + iVar83 = (int)(short)*pcVar3; + iVar84 = (int)(short)*pcVar4; + iVar85 = (int)(short)*pcVar5; + iVar86 = (int)(short)*pcVar6; + iVar88 = (int)(short)*pcVar7; + iVar89 = (int)(short)*pcVar8; + iVar91 = (int)(short)*pcVar9; + iVar71 = (int)(short)*pcVar10; + iVar72 = (int)(short)*pcVar11; + iVar73 = (int)(short)*pcVar12; + iVar74 = (int)(short)*pcVar13; + pcVar2 = pcVar44 + lVar52; + pcVar3 = pcVar44 + lVar22; + pcVar4 = pcVar44 + lVar99; + iVar116 = iVar71 + iVar86 + iVar82 + iVar92 + iVar116; + iVar118 = iVar72 + iVar88 + iVar83 + iVar94 + iVar118; + iVar107 = iVar73 + iVar89 + iVar84 + iVar95 + iVar107; + iVar109 = iVar74 + iVar91 + iVar85 + iVar97 + iVar109; + iVar120 = iVar120 + iVar92 * iVar92 + iVar82 * iVar82 + iVar86 * iVar86 + + iVar71 * iVar71; + iVar122 = iVar122 + iVar94 * iVar94 + iVar83 * iVar83 + iVar88 * iVar88 + + iVar72 * iVar72; + iVar113 = iVar113 + iVar95 * iVar95 + iVar84 * iVar84 + iVar89 * iVar89 + + iVar73 * iVar73; + iVar115 = iVar115 + iVar97 * iVar97 + iVar85 * iVar85 + iVar91 * iVar91 + + iVar74 * iVar74; + pcVar5 = pcVar44 + lVar35; + pcVar6 = pcVar44 + lVar47; + pcVar7 = pcVar44 + lVar25; + pcVar8 = pcVar44 + lVar48; + pcVar9 = pcVar44 + lVar24; + pcVar10 = pcVar44 + lVar50; + pcVar11 = pcVar44 + lVar23; + pcVar12 = pcVar44 + lVar28; + pcVar13 = pcVar44 + lVar54; + /* try { // try from 0038e460 to 0048e55b has its CatchHandler @ 0038ea90 */ + pcVar44 = pcVar44 + lVar76; + cVar19 = *pcVar41; + pcVar16 = pcVar41 + lVar39; + pcVar17 = pcVar41 + lVar46; + iVar92 = (int)(short)cVar18; + iVar94 = (int)(short)*pcVar14; + iVar95 = (int)(short)*pcVar15; + iVar97 = (int)(short)*pcVar1; + pcVar1 = pcVar41 + lVar36; + iVar82 = (int)(short)*pcVar2; + iVar83 = (int)(short)*pcVar3; + iVar84 = (int)(short)*pcVar4; + iVar85 = (int)(short)*pcVar5; + iVar86 = (int)(short)*pcVar6; + iVar88 = (int)(short)*pcVar7; + iVar89 = (int)(short)*pcVar8; + iVar91 = (int)(short)*pcVar9; + iVar71 = (int)(short)*pcVar10; + iVar72 = (int)(short)*pcVar11; + iVar73 = (int)(short)*pcVar12; + iVar74 = (int)(short)*pcVar13; + pcVar2 = pcVar41 + lVar52; + pcVar3 = pcVar41 + lVar22; + pcVar4 = pcVar41 + lVar99; + iVar117 = iVar71 + iVar86 + iVar82 + iVar92 + iVar117; + iVar119 = iVar72 + iVar88 + iVar83 + iVar94 + iVar119; + iVar121 = iVar73 + iVar89 + iVar84 + iVar95 + iVar121; + iVar123 = iVar74 + iVar91 + iVar85 + iVar97 + iVar123; + iVar124 = iVar124 + iVar92 * iVar92 + iVar82 * iVar82 + iVar86 * iVar86 + + iVar71 * iVar71; + iVar125 = iVar125 + iVar94 * iVar94 + iVar83 * iVar83 + iVar88 * iVar88 + + iVar72 * iVar72; + iVar126 = iVar126 + iVar95 * iVar95 + iVar84 * iVar84 + iVar89 * iVar89 + + iVar73 * iVar73; + iVar127 = iVar127 + iVar97 * iVar97 + iVar85 * iVar85 + iVar91 * iVar91 + + iVar74 * iVar74; + pcVar5 = pcVar41 + lVar35; + pcVar6 = pcVar41 + lVar47; + pcVar7 = pcVar41 + lVar25; + pcVar8 = pcVar41 + lVar48; + pcVar9 = pcVar41 + lVar24; + pcVar10 = pcVar41 + lVar50; + pcVar11 = pcVar41 + lVar23; + pcVar12 = pcVar41 + lVar28; + pcVar13 = pcVar41 + lVar54; + pcVar41 = pcVar41 + lVar76; + iVar92 = (int)(short)cVar19; + iVar94 = (int)(short)*pcVar16; + iVar95 = (int)(short)*pcVar17; + iVar97 = (int)(short)*pcVar1; + iVar82 = (int)(short)*pcVar2; + iVar83 = (int)(short)*pcVar3; + iVar84 = (int)(short)*pcVar4; + iVar85 = (int)(short)*pcVar5; + iVar86 = (int)(short)*pcVar6; + iVar88 = (int)(short)*pcVar7; + iVar89 = (int)(short)*pcVar8; + iVar91 = (int)(short)*pcVar9; + iVar71 = (int)(short)*pcVar10; + iVar72 = (int)(short)*pcVar11; + iVar73 = (int)(short)*pcVar12; + iVar74 = (int)(short)*pcVar13; + iVar128 = iVar71 + iVar86 + iVar82 + iVar92 + iVar128; + iVar129 = iVar72 + iVar88 + iVar83 + iVar94 + iVar129; + iVar130 = iVar73 + iVar89 + iVar84 + iVar95 + iVar130; + iVar131 = iVar74 + iVar91 + iVar85 + iVar97 + iVar131; + iVar110 = iVar110 + iVar92 * iVar92 + iVar82 * iVar82 + iVar86 * iVar86 + + iVar71 * iVar71; + iVar111 = iVar111 + iVar94 * iVar94 + iVar83 * iVar83 + iVar88 * iVar88 + + iVar72 * iVar72; + iVar59 = iVar59 + iVar95 * iVar95 + iVar84 * iVar84 + iVar89 * iVar89 + iVar73 * iVar73; + iVar62 = iVar62 + iVar97 * iVar97 + iVar85 * iVar85 + iVar91 * iVar91 + iVar74 * iVar74; + } while (uVar132 < uVar103); + uVar38 = uVar38 + uVar30; + pcVar42 = pcVar27 + (ulong)uVar30 * lVar39; + iVar55 = iVar55 + iVar110 + iVar111 + iVar59 + iVar62; + iVar57 = iVar57 + iVar128 + iVar129 + iVar130 + iVar131; + iVar58 = iVar58 + iVar124 + iVar125 + iVar126 + iVar127; + iVar61 = iVar61 + iVar120 + iVar122 + iVar113 + iVar115; + iVar63 = iVar63 + iVar117 + iVar119 + iVar121 + iVar123; + iVar65 = iVar65 + iVar116 + iVar118 + iVar107 + iVar109; + iVar67 = iVar67 + iVar112 + iVar114 + iVar104 + iVar105; + iVar69 = iVar69 + iVar64 + iVar66 + iVar68 + iVar70; + if (uVar30 == uVar45) goto LAB_0038e9b8; + } + /* try { // try from 0038e608 to 0048e60b has its CatchHandler @ 0038eab0 */ + cVar18 = pcVar42[2]; + cVar19 = *pcVar42; + cVar20 = pcVar42[1]; + iVar63 = iVar63 + cVar18; + cVar21 = pcVar42[3]; + iVar69 = iVar69 + cVar19; + iVar58 = iVar58 + (int)cVar18 * (int)cVar18; + iVar65 = iVar65 + cVar20; + iVar57 = iVar57 + cVar21; + iVar67 = iVar67 + (int)cVar19 * (int)cVar19; + iVar61 = iVar61 + (int)cVar20 * (int)cVar20; + /* try { // try from 0038e638 to 0048e697 has its CatchHandler @ 0038e134 */ + iVar55 = iVar55 + (int)cVar21 * (int)cVar21; + if ((int)(uVar38 + 1) < (int)param_5) { + cVar21 = pcVar42[lVar39]; + cVar18 = pcVar42[lVar39 + 1]; + cVar19 = pcVar42[lVar39 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar39 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 2; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 2) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 2]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 3; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 3) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 3]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 4; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 4) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 4]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 5; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 5) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 5]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 6; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 6) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 6]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 7; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 7) < (int)param_5) { + /* try { // try from 0038e7c4 to 0048e7c7 has its CatchHandler @ 0038ea88 */ + cVar21 = pcVar42[lVar39 * 7]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 8; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 8) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 8]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + /* try { // try from 0038e820 to 0048e823 has its CatchHandler @ 0038ea24 */ + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + /* try { // try from 0038e828 to 0048e82b has its CatchHandler @ 0038ea88 */ + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 9; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 9) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 9]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 10; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 10) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 10]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 0xb; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 0xb) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 0xb]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar63 = iVar63 + cVar19; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar57 = iVar57 + cVar20; + lVar26 = lVar39 * 0xc; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + if ((int)(uVar38 + 0xc) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 0xc]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar57 = iVar57 + cVar20; + iVar63 = iVar63 + cVar19; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + lVar26 = lVar39 * 0xd; + if ((int)(uVar38 + 0xd) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 0xd]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar57 = iVar57 + cVar20; + iVar63 = iVar63 + cVar19; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + lVar26 = lVar39 * 0xe; + if ((int)(uVar38 + 0xe) < (int)param_5) { + cVar21 = pcVar42[lVar39 * 0xe]; + cVar18 = pcVar42[lVar26 + 1]; + cVar19 = pcVar42[lVar26 + 2]; + iVar69 = iVar69 + cVar21; + cVar20 = pcVar42[lVar26 + 3]; + iVar65 = iVar65 + cVar18; + iVar67 = iVar67 + (int)cVar21 * (int)cVar21; + iVar61 = iVar61 + (int)cVar18 * (int)cVar18; + iVar58 = iVar58 + (int)cVar19 * (int)cVar19; + iVar55 = iVar55 + (int)cVar20 * (int)cVar20; + iVar63 = iVar63 + cVar19; + iVar57 = iVar57 + cVar20; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0038e9b8: + uVar38 = uVar79; + *piVar32 = iVar69; + piVar53 = piVar32 + 4; + pcVar27 = pcVar27 + 4; + piVar32[3] = iVar57; + piVar32[1] = iVar65; + piVar32[2] = iVar63; + *piVar29 = iVar67; + piVar29[1] = iVar61; + piVar29[2] = iVar58; + piVar29[3] = iVar55; + piVar29 = piVar29 + 4; + piVar32 = piVar53; + /* try { // try from 0038e9ec to 0048ea07 has its CatchHandler @ 0038eab0 */ + } while (piVar53 != param_3 + lVar33 + 4 + (ulong)((param_6 - 1) - iVar34 >> 2) * 4); + } + return param_5; +} + + +================================================================== + +### FUNC 0038f8f0 (2144 bytes) name=FUN_0038f8f0 + +int FUN_0038f8f0(ushort *param_1,long param_2,double *param_3,double *param_4,int param_5, + ulong param_6) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + ushort uVar4; + ushort uVar5; + ushort uVar6; + ushort uVar7; + undefined1 auVar8 [14]; + undefined1 auVar9 [14]; + ushort uVar10; + ushort uVar11; + int *piVar12; + int iVar13; + ushort *puVar14; + double *pdVar15; + uint uVar16; + uint uVar17; + double *pdVar18; + long lVar19; + int iVar20; + long lVar21; + int iVar22; + int iVar23; + int iVar24; + int iVar25; + int iVar26; + ulong uVar27; + int *piVar28; + int *piVar29; + uint uVar30; + int *piVar31; + uint uVar32; + undefined1 auVar34 [16]; + uint uVar35; + undefined1 auVar37 [16]; + double dVar38; + double dVar39; + double dVar40; + double dVar41; + double dVar42; + undefined1 auVar43 [16]; + undefined1 auVar44 [16]; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + double dVar47; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + double dVar50; + double dVar51; + undefined8 uVar52; + undefined8 uVar53; + long lVar54; + ulong uVar33; + ulong uVar36; + + uVar16 = (uint)param_6; + if (param_2 == 0) { + iVar23 = (int)uVar16 % 4; + iVar22 = 0; + if (iVar23 == 1) { + iVar20 = *(int *)param_3; + dVar38 = *param_4; + if (0 < param_5) { + iVar24 = 0; + puVar14 = param_1; + do { + uVar4 = *puVar14; + iVar24 = iVar24 + 1; + puVar14 = (ushort *) + ((long)puVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1)); + iVar20 = iVar20 + (uint)uVar4; + /* try { // try from 0039000c to 004901a3 has its CatchHandler @ 003904a0 */ + dVar38 = dVar38 + (double)uVar4 * (double)(uint)uVar4; + iVar22 = param_5; + } while (iVar24 != param_5); + } + *(int *)param_3 = iVar20; + *param_4 = dVar38; + } + else if (iVar23 == 2) { + iVar20 = *(int *)param_3; + iVar24 = *(int *)((long)param_3 + 4); + dVar40 = *param_4; + dVar38 = param_4[1]; + if (0 < param_5) { + iVar26 = 0; + puVar14 = param_1; + do { + uVar4 = *puVar14; + iVar26 = iVar26 + 1; + uVar5 = puVar14[1]; + iVar20 = iVar20 + (uint)uVar4; + puVar14 = (ushort *) + ((long)puVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1)); + iVar24 = iVar24 + (uint)uVar5; + dVar40 = dVar40 + (double)uVar4 * (double)(uint)uVar4; + dVar38 = dVar38 + (double)uVar5 * (double)(uint)uVar5; + iVar22 = param_5; + } while (iVar26 != param_5); + } + *(int *)param_3 = iVar20; + *(int *)((long)param_3 + 4) = iVar24; + *param_4 = dVar40; + param_4[1] = dVar38; + } + else { + iVar22 = 0; + if (iVar23 == 3) { + iVar20 = *(int *)param_3; + iVar24 = *(int *)((long)param_3 + 4); + iVar26 = *(int *)(param_3 + 1); + dVar42 = *param_4; + dVar40 = param_4[1]; + dVar38 = param_4[2]; + if (0 < param_5) { + iVar25 = 0; + puVar14 = param_1; + do { + uVar4 = *puVar14; + iVar25 = iVar25 + 1; + uVar5 = puVar14[1]; + uVar6 = puVar14[2]; + iVar20 = iVar20 + (uint)uVar4; + iVar24 = iVar24 + (uint)uVar5; + iVar26 = iVar26 + (uint)uVar6; + puVar14 = (ushort *) + ((long)puVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1)); + dVar42 = dVar42 + (double)uVar4 * (double)(uint)uVar4; + dVar40 = dVar40 + (double)uVar5 * (double)(uint)uVar5; + dVar38 = dVar38 + (double)uVar6 * (double)(uint)uVar6; + iVar22 = param_5; + } while (iVar25 != param_5); + } + *(int *)param_3 = iVar20; + *(int *)((long)param_3 + 4) = iVar24; + *(int *)(param_3 + 1) = iVar26; + *param_4 = dVar42; + param_4[1] = dVar40; + param_4[2] = dVar38; + } + } + if (iVar23 < (int)uVar16) { + lVar19 = (long)iVar23; + param_1 = param_1 + lVar19; + /* catch() { ... } // from try @ 0038ecf0 with catch @ 0038fed0 + catch() { ... } // from try @ 0038fbc0 with catch @ 0038fed0 */ + pdVar15 = param_4 + lVar19; + piVar28 = (int *)((long)param_3 + lVar19 * 4); + do { + iVar20 = *piVar28; + iVar24 = piVar28[1]; + iVar26 = piVar28[2]; + iVar25 = piVar28[3]; + dVar47 = *pdVar15; + dVar42 = pdVar15[1]; + dVar40 = pdVar15[2]; + dVar38 = pdVar15[3]; + puVar14 = param_1; + iVar13 = iVar22; + if (iVar22 < param_5) { + do { + uVar4 = *puVar14; + /* try { // try from 0038ff10 to 0048ff13 has its CatchHandler @ 0038eac0 */ + iVar22 = iVar22 + 1; + /* catch() { ... } // from try @ 0038ec24 with catch @ 0038ff14 + catch() { ... } // from try @ 0038f04c with catch @ 0038ff14 + catch() { ... } // from try @ 0038f1a8 with catch @ 0038ff14 + catch() { ... } // from try @ 0038f1c8 with catch @ 0038ff14 */ + uVar5 = puVar14[1]; + /* catch() { ... } // from try @ 0038eb50 with catch @ 0038ff1c */ + uVar6 = puVar14[2]; + iVar20 = iVar20 + (uint)uVar4; + uVar7 = puVar14[3]; + iVar24 = iVar24 + (uint)uVar5; + /* try { // try from 0038ff2c to 0048ff2f has its CatchHandler @ 0038eac0 */ + iVar26 = iVar26 + (uint)uVar6; + iVar25 = iVar25 + (uint)uVar7; + puVar14 = (ushort *) + ((long)puVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1)); + /* catch() { ... } // from try @ 0038ff78 with catch @ 0038ff50 + catch() { ... } // from try @ 003901cc with catch @ 0038ff50 + catch() { ... } // from try @ 00390284 with catch @ 0038ff50 + catch() { ... } // from try @ 00390458 with catch @ 0038ff50 + catch() { ... } // from try @ 00390484 with catch @ 0038ff50 + catch() { ... } // from try @ 0039049c with catch @ 0038ff50 + catch() { ... } // from try @ 003904c4 with catch @ 0038ff50 + catch() { ... } // from try @ 003904d8 with catch @ 0038ff50 */ + dVar47 = dVar47 + (double)uVar4 * (double)(uint)uVar4; + dVar42 = dVar42 + (double)uVar5 * (double)(uint)uVar5; + dVar40 = dVar40 + (double)uVar6 * (double)(uint)uVar6; + dVar38 = dVar38 + (double)uVar7 * (double)(uint)uVar7; + iVar13 = param_5; + } while (iVar22 != param_5); + } + iVar22 = iVar13; + /* try { // try from 0038ff78 to 00490007 has its CatchHandler @ 0038ff50 */ + piVar29 = piVar28 + 4; + param_1 = param_1 + 4; + *(ulong *)piVar28 = CONCAT44(iVar24,iVar20); + *(ulong *)(piVar28 + 2) = CONCAT44(iVar25,iVar26); + *pdVar15 = dVar47; + pdVar15[1] = dVar42; + pdVar15[2] = dVar40; + pdVar15[3] = dVar38; + pdVar15 = pdVar15 + 4; + piVar28 = piVar29; + } while (piVar29 != + (int *)((long)param_3 + (lVar19 + 4 + (ulong)((uVar16 - 1) - iVar23 >> 2) * 4) * 4)); + } + return param_5; + } + if (uVar16 == 1) { + iVar22 = *(int *)param_3; + dVar38 = *param_4; + if (param_5 < 1) { + iVar23 = 0; + } + else { + lVar19 = 0; + iVar23 = 0; + do { + if (*(char *)(param_2 + lVar19) != '\0') { + uVar4 = param_1[lVar19]; + iVar23 = iVar23 + 1; + iVar22 = iVar22 + (uint)uVar4; + dVar38 = dVar38 + (double)uVar4 * (double)(uint)uVar4; + } + lVar19 = lVar19 + 1; + } while ((int)lVar19 < param_5); + } + *(int *)param_3 = iVar22; + *param_4 = dVar38; + return iVar23; + } + if (uVar16 == 3) { + iVar22 = *(int *)param_3; + iVar23 = *(int *)((long)param_3 + 4); + iVar20 = *(int *)(param_3 + 1); + dVar42 = *param_4; + dVar40 = param_4[1]; + dVar38 = param_4[2]; + if (param_5 < 1) { + iVar24 = 0; + } + else { + lVar19 = 0; + iVar24 = 0; + do { + pcVar1 = (char *)(param_2 + lVar19); + lVar19 = lVar19 + 1; + if (*pcVar1 != '\0') { + uVar4 = *param_1; + iVar24 = iVar24 + 1; + uVar5 = param_1[1]; + uVar6 = param_1[2]; + iVar22 = iVar22 + (uint)uVar4; + iVar23 = iVar23 + (uint)uVar5; + iVar20 = iVar20 + (uint)uVar6; + dVar42 = dVar42 + (double)uVar4 * (double)(uint)uVar4; + dVar40 = dVar40 + (double)uVar5 * (double)(uint)uVar5; + dVar38 = dVar38 + (double)uVar6 * (double)(uint)uVar6; + } + param_1 = param_1 + 3; + } while ((int)lVar19 < param_5); + } + *(int *)param_3 = iVar22; + *(int *)((long)param_3 + 4) = iVar23; + *(int *)(param_3 + 1) = iVar20; + *param_4 = dVar42; + param_4[1] = dVar40; + param_4[2] = dVar38; + return iVar24; + } + if (param_5 < 1) { + iVar22 = 0; + } + else { + uVar2 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + uVar3 = uVar16; + if (uVar2 < uVar16) { + uVar3 = uVar2; + } + lVar19 = 0; + uVar27 = (ulong)uVar3; + uVar2 = ((uVar16 - uVar3) - 8 >> 3) + 1; + piVar28 = (int *)((long)param_3 + uVar27 * 4); + iVar22 = 0; + iVar23 = uVar2 * 8; + lVar54 = NEON_shl(uVar27,1); + do { + if (*(char *)(param_2 + lVar19) != '\0') { + if (0 < (int)uVar16) { + if (uVar16 < 10 || + param_3 < param_4 + (param_6 & 0xffffffff) && + param_4 < (double *)((long)param_3 + (param_6 & 0xffffffff) * 4)) { + lVar21 = 0; + do { + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar16); + } + else { + uVar17 = uVar3; + if (uVar3 != 0) { + uVar4 = *param_1; + dVar38 = *param_4; + *(uint *)param_3 = *(int *)param_3 + (uint)uVar4; + *param_4 = dVar38 + (double)uVar4 * (double)uVar4; + if (uVar3 != 1) { + uVar4 = param_1[1]; + dVar38 = param_4[1]; + *(uint *)((long)param_3 + 4) = *(int *)((long)param_3 + 4) + (uint)uVar4; + param_4[1] = dVar38 + (double)uVar4 * (double)uVar4; + if (uVar3 == 3) { + uVar4 = param_1[2]; + dVar38 = param_4[2]; + *(uint *)(param_3 + 1) = *(int *)(param_3 + 1) + (uint)uVar4; + param_4[2] = dVar38 + (double)uVar4 * (double)uVar4; + } + else { + uVar17 = 2; + } + } + } + if (6 < (uVar16 - 1) - uVar3) { + uVar30 = 0; + pdVar18 = param_4 + uVar27; + pdVar15 = param_4 + uVar27; + piVar29 = piVar28; + piVar31 = piVar28; + puVar14 = (ushort *)((long)param_1 + lVar54); + do { + uVar4 = puVar14[1]; + uVar5 = puVar14[2]; + uVar6 = puVar14[3]; + uVar7 = puVar14[5]; + uVar10 = puVar14[6]; + uVar11 = puVar14[7]; + iVar20 = *piVar29; + iVar24 = piVar29[1]; + piVar12 = piVar29 + 2; + iVar26 = piVar29[3]; + dVar51 = pdVar15[1]; + dVar50 = *pdVar15; + uVar53 = *(undefined8 *)(piVar29 + 6); + uVar52 = *(undefined8 *)(piVar29 + 4); + dVar47 = pdVar15[5]; + dVar42 = pdVar15[4]; + uVar35 = (uint)*puVar14; + uVar36 = CONCAT26(0,CONCAT24(uVar4,uVar35)); + auVar8._8_2_ = uVar5; + auVar8._0_8_ = uVar36; + auVar8._10_2_ = 0; + auVar8._12_2_ = uVar6; + uVar32 = (uint)puVar14[4]; + uVar33 = CONCAT26(0,CONCAT24(uVar7,uVar32)); + auVar9._8_2_ = uVar10; + auVar9._0_8_ = uVar33; + auVar9._10_2_ = 0; + auVar9._12_2_ = uVar11; + dVar40 = pdVar15[7]; + dVar38 = pdVar15[6]; + dVar41 = pdVar15[3]; + dVar39 = pdVar15[2]; + uVar30 = uVar30 + 1; + auVar45._0_8_ = uVar36 & 0xffffffff; + auVar45._8_2_ = uVar4; + auVar45._10_6_ = 0; + auVar43._0_8_ = (long)(int)uVar35; + auVar43._8_8_ = (long)(int)(uint)uVar4; + pdVar15 = pdVar15 + 8; + auVar49._0_8_ = (ulong)auVar8._8_6_ & 0xffffffff; + auVar49._8_6_ = auVar8._8_6_ >> 0x20; + auVar49._14_2_ = 0; + piVar29 = piVar29 + 8; + auVar37._0_8_ = (long)(int)(uint)uVar5; + auVar37._8_8_ = (long)(int)(uint)uVar6; + piVar31[2] = *piVar12 + (uint)uVar5; + piVar31[3] = iVar26 + (uint)uVar6; + *piVar31 = iVar20 + uVar35; + piVar31[1] = iVar24 + (uint)uVar4; + auVar45 = NEON_scvtf(auVar45,8); + auVar43 = NEON_scvtf(auVar43,8); + auVar49 = NEON_scvtf(auVar49,8); + auVar37 = NEON_scvtf(auVar37,8); + auVar48._0_8_ = uVar33 & 0xffffffff; + auVar48._8_2_ = uVar7; + auVar48._10_6_ = 0; + auVar46._0_8_ = (long)(int)uVar32; + auVar46._8_8_ = (long)(int)(uint)uVar7; + auVar44._0_8_ = (ulong)auVar9._8_6_ & 0xffffffff; + auVar44._8_6_ = auVar9._8_6_ >> 0x20; + auVar44._14_2_ = 0; + auVar48 = NEON_scvtf(auVar48,8); + auVar34._0_8_ = (long)(int)(uint)uVar10; + auVar34._8_8_ = (long)(int)(uint)uVar11; + auVar46 = NEON_scvtf(auVar46,8); + *(ulong *)(piVar31 + 6) = + CONCAT44((uint)uVar11 + (int)((ulong)uVar53 >> 0x20),(uint)uVar10 + (int)uVar53 + ); + *(ulong *)(piVar31 + 4) = + CONCAT44((uint)uVar7 + (int)((ulong)uVar52 >> 0x20),uVar32 + (int)uVar52); + pdVar18[1] = dVar51 + auVar45._8_8_ * auVar43._8_8_; + *pdVar18 = dVar50 + auVar45._0_8_ * auVar43._0_8_; + auVar43 = NEON_scvtf(auVar44,8); + auVar34 = NEON_scvtf(auVar34,8); + pdVar18[3] = dVar41 + auVar49._8_8_ * auVar37._8_8_; + pdVar18[2] = dVar39 + auVar49._0_8_ * auVar37._0_8_; + pdVar18[5] = dVar47 + auVar48._8_8_ * auVar46._8_8_; + pdVar18[4] = dVar42 + auVar48._0_8_ * auVar46._0_8_; + pdVar18[7] = dVar40 + auVar43._8_8_ * auVar34._8_8_; + pdVar18[6] = dVar38 + auVar43._0_8_ * auVar34._0_8_; + pdVar18 = pdVar18 + 8; + piVar31 = piVar31 + 8; + puVar14 = puVar14 + 8; + } while (uVar30 < uVar2); + uVar17 = uVar17 + iVar23; + if (iVar23 == uVar16 - uVar3) goto LAB_0038fcd4; + } + lVar21 = (long)(int)uVar17; + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + if ((int)(uVar17 + 1) < (int)uVar16) { + lVar21 = (long)(int)(uVar17 + 1); + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + if ((int)(uVar17 + 2) < (int)uVar16) { + lVar21 = (long)(int)(uVar17 + 2); + /* try { // try from 0038fbc0 to 0048fbc3 has its CatchHandler @ 0038fed0 */ + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + if ((int)(uVar17 + 3) < (int)uVar16) { + lVar21 = (long)(int)(uVar17 + 3); + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + if ((int)(uVar17 + 4) < (int)uVar16) { + lVar21 = (long)(int)(uVar17 + 4); + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + if ((int)(uVar17 + 5) < (int)uVar16) { + lVar21 = (long)(int)(uVar17 + 5); + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + if ((int)(uVar17 + 6) < (int)uVar16) { + lVar21 = (long)(int)(uVar17 + 6); + uVar4 = param_1[lVar21]; + dVar38 = param_4[lVar21]; + *(uint *)((long)param_3 + lVar21 * 4) = + *(int *)((long)param_3 + lVar21 * 4) + (uint)uVar4; + param_4[lVar21] = dVar38 + (double)uVar4 * (double)uVar4; + } + } + } + } + } + } + } + } +LAB_0038fcd4: + iVar22 = iVar22 + 1; + } + lVar19 = lVar19 + 1; + param_1 = (ushort *) + ((long)param_1 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1)); + } while ((int)lVar19 < param_5); + } + return iVar22; +} + + +================================================================== + +### FUNC 00390150 (2008 bytes) name=FUN_00390150 + +int FUN_00390150(short *param_1,long param_2,double *param_3,double *param_4,int param_5, + ulong param_6) + +{ + short *psVar1; + char *pcVar2; + uint uVar3; + uint uVar4; + short sVar5; + short sVar6; + short sVar7; + short sVar8; + short sVar9; + short sVar10; + int *piVar11; + int *piVar12; + int iVar13; + short *psVar14; + double *pdVar15; + uint uVar16; + uint uVar17; + double *pdVar18; + long lVar19; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + long lVar25; + int iVar26; + int *piVar27; + ulong uVar28; + int *piVar29; + uint uVar30; + int *piVar31; + double dVar32; + double dVar33; + undefined1 auVar34 [16]; + double dVar35; + double dVar36; + undefined1 auVar37 [16]; + double dVar38; + double dVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + double dVar42; + double dVar43; + undefined8 uVar44; + undefined8 uVar45; + long lVar46; + + uVar16 = (uint)param_6; + if (param_2 == 0) { + iVar21 = (int)uVar16 % 4; + iVar20 = 0; + if (iVar21 == 1) { + iVar23 = *(int *)param_3; + dVar32 = *param_4; + if (0 < param_5) { + iVar22 = 0; + psVar14 = param_1; + do { + sVar5 = *psVar14; + iVar22 = iVar22 + 1; + psVar14 = (short *)((long)psVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_6 & 0xffffffff) << 1)); + iVar23 = iVar23 + sVar5; + dVar35 = (double)(int)sVar5; + dVar32 = dVar32 + dVar35 * dVar35; + iVar20 = param_5; + } while (iVar22 != param_5); + } + *(int *)param_3 = iVar23; + *param_4 = dVar32; + } + else if (iVar21 == 2) { + iVar23 = *(int *)param_3; + iVar22 = *(int *)((long)param_3 + 4); + dVar35 = *param_4; + dVar32 = param_4[1]; + if (0 < param_5) { + iVar26 = 0; + psVar14 = param_1; + do { + sVar5 = *psVar14; + iVar26 = iVar26 + 1; + psVar1 = psVar14 + 1; + iVar23 = iVar23 + sVar5; + psVar14 = (short *)((long)psVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_6 & 0xffffffff) << 1)); + dVar33 = (double)(int)sVar5; + iVar22 = iVar22 + *psVar1; + dVar43 = (double)(int)*psVar1; + dVar35 = dVar35 + dVar33 * dVar33; + /* try { // try from 00390860 to 00490863 has its CatchHandler @ 003907c0 */ + dVar32 = dVar32 + dVar43 * dVar43; + iVar20 = param_5; + } while (iVar26 != param_5); + } + *(int *)param_3 = iVar23; + *(int *)((long)param_3 + 4) = iVar22; + *param_4 = dVar35; + param_4[1] = dVar32; + } + else { + iVar20 = 0; + if (iVar21 == 3) { + iVar23 = *(int *)param_3; + iVar22 = *(int *)((long)param_3 + 4); + iVar26 = *(int *)(param_3 + 1); + dVar43 = *param_4; + dVar35 = param_4[1]; + dVar32 = param_4[2]; + if (0 < param_5) { + iVar24 = 0; + psVar14 = param_1; + do { + /* try { // try from 003908b4 to 004908b7 has its CatchHandler @ 00390988 */ + iVar24 = iVar24 + 1; + /* try { // try from 003908bc to 0049092b has its CatchHandler @ 003907c0 */ + iVar23 = iVar23 + *psVar14; + dVar38 = (double)(int)*psVar14; + iVar22 = iVar22 + psVar14[1]; + dVar36 = (double)(int)psVar14[1]; + iVar26 = iVar26 + psVar14[2]; + dVar33 = (double)(int)psVar14[2]; + psVar14 = (short *)((long)psVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_6 & 0xffffffff) << 1)); + dVar43 = dVar43 + dVar38 * dVar38; + dVar35 = dVar35 + dVar36 * dVar36; + dVar32 = dVar32 + dVar33 * dVar33; + iVar20 = param_5; + } while (iVar24 != param_5); + } + *(int *)param_3 = iVar23; + *(int *)((long)param_3 + 4) = iVar22; + *(int *)(param_3 + 1) = iVar26; + *param_4 = dVar43; + param_4[1] = dVar35; + param_4[2] = dVar32; + } + } + if (iVar21 < (int)uVar16) { + lVar19 = (long)iVar21; + param_1 = param_1 + lVar19; + /* try { // try from 003906d8 to 0049072b has its CatchHandler @ 003904e0 */ + pdVar15 = param_4 + lVar19; + piVar27 = (int *)((long)param_3 + lVar19 * 4); + do { + iVar23 = *piVar27; + iVar22 = piVar27[1]; + iVar26 = piVar27[2]; + iVar24 = piVar27[3]; + dVar33 = *pdVar15; + dVar43 = pdVar15[1]; + dVar35 = pdVar15[2]; + dVar32 = pdVar15[3]; + psVar14 = param_1; + iVar13 = iVar20; + if (iVar20 < param_5) { + do { + iVar20 = iVar20 + 1; + iVar23 = iVar23 + *psVar14; + psVar1 = psVar14 + 3; + iVar22 = iVar22 + psVar14[1]; + dVar42 = (double)(int)*psVar14; + iVar26 = iVar26 + psVar14[2]; + dVar39 = (double)(int)psVar14[1]; + iVar24 = iVar24 + *psVar1; + dVar38 = (double)(int)psVar14[2]; + psVar14 = (short *)((long)psVar14 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_6 & 0xffffffff) << 1)); + dVar36 = (double)(int)*psVar1; + dVar33 = dVar33 + dVar42 * dVar42; + /* try { // try from 0039074c to 0049074f has its CatchHandler @ 00390780 */ + dVar43 = dVar43 + dVar39 * dVar39; + dVar35 = dVar35 + dVar38 * dVar38; + dVar32 = dVar32 + dVar36 * dVar36; + iVar13 = param_5; + } while (iVar20 != param_5); + } + iVar20 = iVar13; + /* try { // try from 00390768 to 0049076b has its CatchHandler @ 003904e0 */ + piVar29 = piVar27 + 4; + /* catch() { ... } // from try @ 0039061c with catch @ 00390780 + catch() { ... } // from try @ 0039074c with catch @ 00390780 */ + param_1 = param_1 + 4; + *(ulong *)piVar27 = CONCAT44(iVar22,iVar23); + *(ulong *)(piVar27 + 2) = CONCAT44(iVar24,iVar26); + *pdVar15 = dVar33; + pdVar15[1] = dVar43; + pdVar15[2] = dVar35; + pdVar15[3] = dVar32; + pdVar15 = pdVar15 + 4; + piVar27 = piVar29; + /* try { // try from 003907a4 to 004907a7 has its CatchHandler @ 003904e0 */ + } while (piVar29 != + (int *)((long)param_3 + (lVar19 + 4 + (ulong)((uVar16 - 1) - iVar21 >> 2) * 4) * 4)); + } + /* catch() { ... } // from try @ 00390860 with catch @ 003907c0 + catch() { ... } // from try @ 003908bc with catch @ 003907c0 + catch() { ... } // from try @ 00390974 with catch @ 003907c0 + catch() { ... } // from try @ 00390998 with catch @ 003907c0 + catch() { ... } // from try @ 003909ac with catch @ 003907c0 */ + return param_5; + } + if (uVar16 == 1) { + iVar20 = *(int *)param_3; + dVar32 = *param_4; + if (param_5 < 1) { + iVar21 = 0; + } + else { + lVar19 = 0; + iVar21 = 0; + do { + if (*(char *)(param_2 + lVar19) != '\0') { + iVar21 = iVar21 + 1; + iVar20 = iVar20 + param_1[lVar19]; + dVar35 = (double)(int)param_1[lVar19]; + dVar32 = dVar32 + dVar35 * dVar35; + } + lVar19 = lVar19 + 1; + } while ((int)lVar19 < param_5); + } + *(int *)param_3 = iVar20; + *param_4 = dVar32; + return iVar21; + } + if (uVar16 == 3) { + iVar20 = *(int *)param_3; + iVar21 = *(int *)((long)param_3 + 4); + iVar23 = *(int *)(param_3 + 1); + dVar43 = *param_4; + dVar35 = param_4[1]; + dVar32 = param_4[2]; + if (param_5 < 1) { + iVar22 = 0; + } + else { + lVar19 = 0; + iVar22 = 0; + do { + pcVar2 = (char *)(param_2 + lVar19); + lVar19 = lVar19 + 1; + if (*pcVar2 != '\0') { + iVar22 = iVar22 + 1; + iVar20 = iVar20 + *param_1; + dVar38 = (double)(int)*param_1; + iVar21 = iVar21 + param_1[1]; + /* try { // try from 0039061c to 0049061f has its CatchHandler @ 00390780 */ + dVar36 = (double)(int)param_1[1]; + iVar23 = iVar23 + param_1[2]; + dVar33 = (double)(int)param_1[2]; + dVar43 = dVar43 + dVar38 * dVar38; + dVar35 = dVar35 + dVar36 * dVar36; + dVar32 = dVar32 + dVar33 * dVar33; + } + param_1 = param_1 + 3; + } while ((int)lVar19 < param_5); + } + *(int *)param_3 = iVar20; + *(int *)((long)param_3 + 4) = iVar21; + *(int *)(param_3 + 1) = iVar23; + *param_4 = dVar43; + param_4[1] = dVar35; + param_4[2] = dVar32; + return iVar22; + } + if (param_5 < 1) { + iVar20 = 0; + } + else { + uVar4 = -((uint)((ulong)param_3 >> 2) & 3) & 3; + if (uVar16 < uVar4) { + uVar4 = uVar16; + } + lVar19 = 0; + /* try { // try from 003901cc to 0049024f has its CatchHandler @ 0038ff50 */ + uVar28 = (ulong)uVar4; + uVar3 = ((uVar16 - uVar4) - 8 >> 3) + 1; + piVar27 = (int *)((long)param_3 + uVar28 * 4); + iVar20 = 0; + iVar21 = uVar3 * 8; + lVar46 = NEON_shl(uVar28,1); + do { + if (*(char *)(param_2 + lVar19) != '\0') { + if (0 < (int)uVar16) { + if (uVar16 < 10 || + param_3 < param_4 + (param_6 & 0xffffffff) && + param_4 < (double *)((long)param_3 + (param_6 & 0xffffffff) * 4)) { + lVar25 = 0; + do { + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + lVar25 = lVar25 + 1; + } while ((int)lVar25 < (int)uVar16); + } + else { + uVar17 = uVar4; + if (uVar4 != 0) { + dVar35 = *param_4; + dVar32 = (double)(int)*param_1; + *(int *)param_3 = *(int *)param_3 + (int)*param_1; + *param_4 = dVar35 + dVar32 * dVar32; + if (uVar4 != 1) { + dVar35 = param_4[1]; + dVar32 = (double)(int)param_1[1]; + *(int *)((long)param_3 + 4) = *(int *)((long)param_3 + 4) + (int)param_1[1]; + param_4[1] = dVar35 + dVar32 * dVar32; + if (uVar4 == 3) { + dVar35 = param_4[2]; + dVar32 = (double)(int)param_1[2]; + /* try { // try from 0039027c to 0049027f has its CatchHandler @ 003904c8 */ + *(int *)(param_3 + 1) = *(int *)(param_3 + 1) + (int)param_1[2]; + /* try { // try from 00390284 to 00490423 has its CatchHandler @ 0038ff50 */ + param_4[2] = dVar35 + dVar32 * dVar32; + } + else { + uVar17 = 2; + } + } + } + if (6 < (uVar16 - 1) - uVar4) { + uVar30 = 0; + pdVar18 = param_4 + uVar28; + pdVar15 = param_4 + uVar28; + piVar29 = piVar27; + piVar31 = piVar27; + psVar14 = (short *)((long)param_1 + lVar46); + do { + sVar5 = *psVar14; + sVar6 = psVar14[1]; + sVar7 = psVar14[4]; + sVar8 = psVar14[5]; + sVar9 = psVar14[6]; + sVar10 = psVar14[7]; + iVar23 = *piVar29; + iVar22 = piVar29[1]; + piVar11 = piVar29 + 2; + piVar12 = piVar29 + 3; + dVar42 = pdVar15[1]; + dVar39 = *pdVar15; + uVar45 = *(undefined8 *)(piVar29 + 6); + uVar44 = *(undefined8 *)(piVar29 + 4); + dVar33 = pdVar15[5]; + dVar43 = pdVar15[4]; + dVar35 = pdVar15[7]; + dVar32 = pdVar15[6]; + dVar38 = pdVar15[3]; + dVar36 = pdVar15[2]; + uVar30 = uVar30 + 1; + auVar40._0_8_ = (long)(int)sVar5; + auVar40._8_8_ = (long)(int)sVar6; + pdVar15 = pdVar15 + 8; + auVar37._0_8_ = (long)(int)psVar14[2]; + auVar37._8_8_ = (long)(int)psVar14[3]; + piVar29 = piVar29 + 8; + *(ulong *)(piVar31 + 2) = + CONCAT44(*piVar12 + (int)psVar14[3],*piVar11 + (int)psVar14[2]); + *(ulong *)piVar31 = CONCAT44(iVar22 + sVar6,iVar23 + sVar5); + auVar40 = NEON_scvtf(auVar40,8); + auVar41._0_8_ = (long)(int)sVar7; + auVar41._8_8_ = (long)(int)sVar8; + auVar34._0_8_ = (long)(int)sVar9; + auVar34._8_8_ = (long)(int)sVar10; + auVar37 = NEON_scvtf(auVar37,8); + *(ulong *)(piVar31 + 6) = + CONCAT44((int)sVar10 + (int)((ulong)uVar45 >> 0x20),(int)sVar9 + (int)uVar45); + *(ulong *)(piVar31 + 4) = + CONCAT44((int)sVar8 + (int)((ulong)uVar44 >> 0x20),(int)sVar7 + (int)uVar44); + pdVar18[1] = dVar42 + auVar40._8_8_ * auVar40._8_8_; + *pdVar18 = dVar39 + auVar40._0_8_ * auVar40._0_8_; + auVar40 = NEON_scvtf(auVar41,8); + auVar34 = NEON_scvtf(auVar34,8); + pdVar18[3] = dVar38 + auVar37._8_8_ * auVar37._8_8_; + pdVar18[2] = dVar36 + auVar37._0_8_ * auVar37._0_8_; + pdVar18[5] = dVar33 + auVar40._8_8_ * auVar40._8_8_; + pdVar18[4] = dVar43 + auVar40._0_8_ * auVar40._0_8_; + pdVar18[7] = dVar35 + auVar34._8_8_ * auVar34._8_8_; + pdVar18[6] = dVar32 + auVar34._0_8_ * auVar34._0_8_; + pdVar18 = pdVar18 + 8; + piVar31 = piVar31 + 8; + psVar14 = psVar14 + 8; + } while (uVar30 < uVar3); + uVar17 = uVar17 + iVar21; + if (iVar21 == uVar16 - uVar4) goto LAB_003904e8; + } + lVar25 = (long)(int)uVar17; + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + if ((int)(uVar17 + 1) < (int)uVar16) { + lVar25 = (long)(int)(uVar17 + 1); + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + if ((int)(uVar17 + 2) < (int)uVar16) { + lVar25 = (long)(int)(uVar17 + 2); + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + if ((int)(uVar17 + 3) < (int)uVar16) { + lVar25 = (long)(int)(uVar17 + 3); + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + if ((int)(uVar17 + 4) < (int)uVar16) { + lVar25 = (long)(int)(uVar17 + 4); + /* try { // try from 00390450 to 00490453 has its CatchHandler @ 0039048c */ + /* try { // try from 00390458 to 0049045b has its CatchHandler @ 0038ff50 */ + /* try { // try from 00390464 to 00490477 has its CatchHandler @ 003904a0 */ + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + if ((int)(uVar17 + 5) < (int)uVar16) { + /* try { // try from 00390484 to 00490487 has its CatchHandler @ 0038ff50 */ + lVar25 = (long)(int)(uVar17 + 5); + /* catch() { ... } // from try @ 00390450 with catch @ 0039048c */ + /* try { // try from 0039049c to 0049049f has its CatchHandler @ 0038ff50 */ + dVar35 = param_4[lVar25]; + /* catch() { ... } // from try @ 0039000c with catch @ 003904a0 + catch() { ... } // from try @ 00390464 with catch @ 003904a0 */ + dVar32 = (double)(int)param_1[lVar25]; + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + param_4[lVar25] = dVar35 + dVar32 * dVar32; + if ((int)(uVar17 + 6) < (int)uVar16) { + lVar25 = (long)(int)(uVar17 + 6); + /* try { // try from 003904c4 to 004904c7 has its CatchHandler @ 0038ff50 */ + /* catch() { ... } // from try @ 0039027c with catch @ 003904c8 */ + dVar35 = param_4[lVar25]; + dVar32 = (double)(int)param_1[lVar25]; + /* try { // try from 003904d8 to 004904db has its CatchHandler @ 0038ff50 */ + *(int *)((long)param_3 + lVar25 * 4) = + *(int *)((long)param_3 + lVar25 * 4) + (int)param_1[lVar25]; + /* catch() { ... } // from try @ 003906d8 with catch @ 003904e0 + catch() { ... } // from try @ 00390768 with catch @ 003904e0 + catch() { ... } // from try @ 003907a4 with catch @ 003904e0 */ + param_4[lVar25] = dVar35 + dVar32 * dVar32; + } + } + } + } + } + } + } + } +LAB_003904e8: + iVar20 = iVar20 + 1; + } + lVar19 = lVar19 + 1; + param_1 = (short *)((long)param_1 + + (-(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1) + ); + } while ((int)lVar19 < param_5); + } + return iVar20; +} + + +================================================================== + +### FUNC 00390928 (1580 bytes) name=FUN_00390928 + +int FUN_00390928(int *param_1,long param_2,double *param_3,double *param_4,int param_5,ulong param_6 + ) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + char *pcVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + double *pdVar9; + int iVar10; + int *piVar11; + double *pdVar12; + uint uVar13; + uint uVar14; + long lVar15; + double *pdVar16; + long lVar17; + int iVar18; + uint uVar19; + double *pdVar20; + double *pdVar21; + double dVar22; + double dVar23; + undefined1 auVar24 [16]; + double dVar25; + double dVar26; + double dVar27; + undefined1 auVar28 [16]; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + + uVar13 = (uint)param_6; + if (param_2 == 0) { + iVar8 = (int)uVar13 % 4; + iVar18 = 0; + if (iVar8 == 1) { + dVar25 = *param_3; + dVar22 = *param_4; + if (0 < param_5) { + iVar10 = 0; + piVar11 = param_1; + do { + iVar18 = *piVar11; + iVar10 = iVar10 + 1; + piVar11 = (int *)((long)piVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar32 = (double)iVar18; + dVar25 = dVar25 + dVar32; + dVar22 = dVar22 + dVar32 * dVar32; + iVar18 = param_5; + } while (iVar10 != param_5); + } + *param_3 = dVar25; + *param_4 = dVar22; + } + else if (iVar8 == 2) { + dVar33 = *param_3; + dVar32 = param_3[1]; + dVar25 = *param_4; + dVar22 = param_4[1]; + if (0 < param_5) { + iVar10 = 0; + piVar11 = param_1; + do { + iVar18 = *piVar11; + iVar10 = iVar10 + 1; + piVar1 = piVar11 + 1; + piVar11 = (int *)((long)piVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar35 = (double)iVar18; + dVar34 = (double)*piVar1; + dVar33 = dVar33 + dVar35; + dVar25 = dVar25 + dVar35 * dVar35; + dVar32 = dVar32 + dVar34; + dVar22 = dVar22 + dVar34 * dVar34; + iVar18 = param_5; + } while (iVar10 != param_5); + } + *param_3 = dVar33; + param_3[1] = dVar32; + *param_4 = dVar25; + param_4[1] = dVar22; + } + else { + iVar18 = 0; + if (iVar8 == 3) { + dVar35 = *param_3; + dVar34 = param_3[1]; + dVar33 = param_3[2]; + dVar32 = *param_4; + dVar25 = param_4[1]; + dVar22 = param_4[2]; + if (0 < param_5) { + iVar10 = 0; + piVar11 = param_1; + do { + iVar18 = *piVar11; + iVar10 = iVar10 + 1; + piVar1 = piVar11 + 1; + piVar2 = piVar11 + 2; + piVar11 = (int *)((long)piVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar29 = (double)iVar18; + dVar26 = (double)*piVar1; + dVar23 = (double)*piVar2; + dVar35 = dVar35 + dVar29; + dVar32 = dVar32 + dVar29 * dVar29; + dVar34 = dVar34 + dVar26; + dVar25 = dVar25 + dVar26 * dVar26; + dVar33 = dVar33 + dVar23; + dVar22 = dVar22 + dVar23 * dVar23; + iVar18 = param_5; + } while (iVar10 != param_5); + } + *param_3 = dVar35; + param_3[1] = dVar34; + param_3[2] = dVar33; + *param_4 = dVar32; + param_4[1] = dVar25; + param_4[2] = dVar22; + } + } + if (iVar8 < (int)uVar13) { + lVar17 = (long)iVar8; + param_1 = param_1 + lVar17; + pdVar12 = param_4 + lVar17; + pdVar16 = param_3 + lVar17; + do { + dVar26 = *pdVar16; + dVar23 = pdVar16[1]; + /* try { // try from 00390d30 to 00490d33 has its CatchHandler @ 003909b0 */ + dVar35 = pdVar16[2]; + dVar34 = pdVar16[3]; + dVar33 = *pdVar12; + dVar32 = pdVar12[1]; + dVar25 = pdVar12[2]; + dVar22 = pdVar12[3]; + piVar11 = param_1; + iVar10 = iVar18; + if (iVar18 < param_5) { + do { + iVar10 = *piVar11; + iVar18 = iVar18 + 1; + piVar1 = piVar11 + 1; + piVar2 = piVar11 + 2; + piVar3 = piVar11 + 3; + piVar11 = (int *)((long)piVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar31 = (double)iVar10; + dVar30 = (double)*piVar1; + dVar27 = (double)*piVar2; + dVar29 = (double)*piVar3; + dVar26 = dVar26 + dVar31; + /* try { // try from 00390d7c to 00490d7f has its CatchHandler @ 00391ef0 */ + dVar33 = dVar33 + dVar31 * dVar31; + dVar23 = dVar23 + dVar30; + /* try { // try from 00390d84 to 00490d8f has its CatchHandler @ 003909b0 */ + dVar32 = dVar32 + dVar30 * dVar30; + dVar35 = dVar35 + dVar27; + dVar25 = dVar25 + dVar27 * dVar27; + dVar34 = dVar34 + dVar29; + dVar22 = dVar22 + dVar29 * dVar29; + iVar10 = param_5; + } while (iVar18 != param_5); + } + iVar18 = iVar10; + *pdVar16 = dVar26; + pdVar20 = pdVar16 + 4; + pdVar16[1] = dVar23; + param_1 = param_1 + 4; + pdVar16[2] = dVar35; + pdVar16[3] = dVar34; + *pdVar12 = dVar33; + pdVar12[1] = dVar32; + pdVar12[2] = dVar25; + pdVar12[3] = dVar22; + pdVar12 = pdVar12 + 4; + pdVar16 = pdVar20; + } while (pdVar20 != param_3 + lVar17 + 4 + (ulong)((uVar13 - 1) - iVar8 >> 2) * 4); + } + return param_5; + } + if (uVar13 == 1) { + dVar25 = *param_3; + dVar22 = *param_4; + if (param_5 < 1) { + iVar18 = 0; + } + else { + lVar17 = 0; + iVar18 = 0; + do { + if (*(char *)(param_2 + lVar17) != '\0') { + iVar18 = iVar18 + 1; + dVar32 = (double)param_1[lVar17]; + dVar22 = dVar22 + dVar32 * dVar32; + dVar25 = dVar25 + dVar32; + } + lVar17 = lVar17 + 1; + } while ((int)lVar17 < param_5); + } + *param_3 = dVar25; + *param_4 = dVar22; + return iVar18; + } + if (uVar13 == 3) { + /* try { // try from 00390c10 to 00490c13 has its CatchHandler @ 003909b0 */ + dVar35 = *param_3; + dVar34 = param_3[1]; + dVar33 = param_3[2]; + dVar32 = *param_4; + dVar25 = param_4[1]; + dVar22 = param_4[2]; + if (param_5 < 1) { + iVar18 = 0; + } + else { + lVar17 = 0; + iVar18 = 0; + do { + pcVar4 = (char *)(param_2 + lVar17); + lVar17 = lVar17 + 1; + if (*pcVar4 != '\0') { + iVar18 = iVar18 + 1; + dVar29 = (double)*param_1; + dVar26 = (double)param_1[1]; + dVar23 = (double)param_1[2]; + dVar32 = dVar32 + dVar29 * dVar29; + dVar25 = dVar25 + dVar26 * dVar26; + dVar22 = dVar22 + dVar23 * dVar23; + dVar35 = dVar35 + dVar29; + dVar34 = dVar34 + dVar26; + /* try { // try from 00390c74 to 00490cef has its CatchHandler @ 00391ee8 */ + dVar33 = dVar33 + dVar23; + } + param_1 = param_1 + 3; + } while ((int)lVar17 < param_5); + } + *param_3 = dVar35; + param_3[1] = dVar34; + param_3[2] = dVar33; + *param_4 = dVar32; + param_4[1] = dVar25; + param_4[2] = dVar22; + return iVar18; + } + if (param_5 < 1) { + iVar18 = 0; + } + else { + uVar5 = (uint)((ulong)param_3 >> 3) & 1; + /* try { // try from 0039096c to 0049096f has its CatchHandler @ 0039099c */ + /* try { // try from 00390974 to 00490977 has its CatchHandler @ 003907c0 */ + uVar7 = uVar13; + if (uVar5 < uVar13) { + uVar7 = uVar5; + } + /* catch() { ... } // from try @ 003908b4 with catch @ 00390988 */ + /* catch() { ... } // from try @ 0039096c with catch @ 0039099c */ + lVar17 = 0; + uVar5 = ((uVar13 - uVar7) - 4 >> 2) + 1; + /* try { // try from 00390998 to 0049099b has its CatchHandler @ 003907c0 */ + /* try { // try from 003909ac to 004909af has its CatchHandler @ 003907c0 */ + /* catch() { ... } // from try @ 00390a18 with catch @ 003909b0 + catch() { ... } // from try @ 00390c10 with catch @ 003909b0 + catch() { ... } // from try @ 00390d30 with catch @ 003909b0 + catch() { ... } // from try @ 00390d84 with catch @ 003909b0 + catch() { ... } // from try @ 00391588 with catch @ 003909b0 + catch() { ... } // from try @ 00391dc8 with catch @ 003909b0 + catch() { ... } // from try @ 00391edc with catch @ 003909b0 + catch() { ... } // from try @ 00391f00 with catch @ 003909b0 */ + iVar18 = 0; + iVar8 = uVar5 * 4; + do { + if (*(char *)(param_2 + lVar17) != '\0') { + if (0 < (int)uVar13) { + if (uVar13 < 7 || param_4 < param_3 + 4 && param_3 < param_4 + 4) { + lVar15 = 0; + do { + dVar25 = param_4[lVar15]; + dVar22 = (double)param_1[lVar15]; + /* try { // try from 00390b8c to 00490b8f has its CatchHandler @ 00391ee8 */ + param_3[lVar15] = param_3[lVar15] + dVar22; + param_4[lVar15] = dVar25 + dVar22 * dVar22; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar13); + } + else { + if (uVar7 != 0) { + dVar25 = *param_4; + dVar22 = (double)*param_1; + *param_3 = *param_3 + dVar22; + *param_4 = dVar25 + dVar22 * dVar22; + } + uVar14 = (uint)(uVar7 != 0); + if (2 < (uVar13 - 1) - uVar7) { + /* try { // try from 00390a18 to 00490a3b has its CatchHandler @ 003909b0 */ + uVar19 = 0; + pdVar16 = param_3 + uVar7; + pdVar20 = param_4 + uVar7; + pdVar21 = param_3 + uVar7; + pdVar12 = param_4 + uVar7; + piVar11 = param_1 + uVar7; + do { + pdVar9 = pdVar16 + 1; + dVar30 = *pdVar16; + dVar26 = pdVar12[1]; + dVar23 = *pdVar12; + dVar27 = pdVar16[3]; + dVar29 = pdVar16[2]; + uVar19 = uVar19 + 1; + auVar28._0_8_ = (long)*piVar11; + auVar28._8_8_ = (long)piVar11[1]; + auVar24._0_8_ = (long)piVar11[2]; + auVar24._8_8_ = (long)piVar11[3]; + dVar35 = pdVar12[3]; + dVar34 = pdVar12[2]; + pdVar12 = pdVar12 + 4; + pdVar16 = pdVar16 + 4; + auVar28 = NEON_scvtf(auVar28,8); + dVar32 = auVar28._0_8_; + dVar33 = auVar28._8_8_; + auVar24 = NEON_scvtf(auVar24,8); + dVar22 = auVar24._0_8_; + dVar25 = auVar24._8_8_; + pdVar21[1] = *pdVar9 + dVar33; + *pdVar21 = dVar30 + dVar32; + pdVar21[3] = dVar25 + dVar27; + pdVar21[2] = dVar22 + dVar29; + /* try { // try from 00390a8c to 00490ab7 has its CatchHandler @ 00391ee8 */ + pdVar20[1] = dVar26 + dVar33 * dVar33; + *pdVar20 = dVar23 + dVar32 * dVar32; + pdVar20[3] = dVar35 + dVar25 * dVar25; + pdVar20[2] = dVar34 + dVar22 * dVar22; + pdVar20 = pdVar20 + 4; + pdVar21 = pdVar21 + 4; + piVar11 = piVar11 + 4; + } while (uVar19 < uVar5); + uVar14 = uVar14 + iVar8; + if (iVar8 == uVar13 - uVar7) goto LAB_00390b34; + } + iVar10 = uVar14 + 1; + dVar25 = param_4[(int)uVar14]; + dVar22 = (double)param_1[(int)uVar14]; + param_3[(int)uVar14] = param_3[(int)uVar14] + dVar22; + param_4[(int)uVar14] = dVar25 + dVar22 * dVar22; + if (iVar10 < (int)uVar13) { + iVar6 = uVar14 + 2; + dVar25 = param_4[iVar10]; + dVar22 = (double)param_1[iVar10]; + param_3[iVar10] = param_3[iVar10] + dVar22; + param_4[iVar10] = dVar25 + dVar22 * dVar22; + /* try { // try from 00390b08 to 00490b0b has its CatchHandler @ 00391f04 */ + if (iVar6 < (int)uVar13) { + dVar25 = param_4[iVar6]; + dVar22 = (double)param_1[iVar6]; + param_3[iVar6] = param_3[iVar6] + dVar22; + param_4[iVar6] = dVar25 + dVar22 * dVar22; + } + } + } + } +LAB_00390b34: + iVar18 = iVar18 + 1; + } + lVar17 = lVar17 + 1; + param_1 = (int *)((long)param_1 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2)); + } while ((int)lVar17 < param_5); + } + return iVar18; +} + + +================================================================== + +### FUNC 00390f54 (1572 bytes) name=FUN_00390f54 + +int FUN_00390f54(float *param_1,long param_2,double *param_3,double *param_4,int param_5, + ulong param_6) + +{ + float *pfVar1; + float *pfVar2; + float *pfVar3; + char *pcVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + double *pdVar9; + int iVar10; + float *pfVar11; + double *pdVar12; + uint uVar13; + uint uVar14; + long lVar15; + long lVar16; + double *pdVar17; + int iVar18; + uint uVar19; + double *pdVar20; + double *pdVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + float fVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + + uVar13 = (uint)param_6; + if (param_2 == 0) { + iVar8 = (int)uVar13 % 4; + iVar18 = 0; + if (iVar8 == 1) { + dVar24 = *param_3; + dVar22 = *param_4; + if (0 < param_5) { + iVar10 = 0; + pfVar11 = param_1; + do { + fVar27 = *pfVar11; + iVar10 = iVar10 + 1; + pfVar11 = (float *)((long)pfVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar30 = (double)fVar27; + dVar24 = dVar24 + dVar30; + dVar22 = dVar22 + dVar30 * dVar30; + iVar18 = param_5; + } while (iVar10 != param_5); + } + *param_3 = dVar24; + *param_4 = dVar22; + } + else if (iVar8 == 2) { + dVar32 = *param_3; + dVar30 = param_3[1]; + dVar24 = *param_4; + dVar22 = param_4[1]; + if (0 < param_5) { + iVar10 = 0; + pfVar11 = param_1; + do { + iVar10 = iVar10 + 1; + pfVar1 = pfVar11 + 1; + dVar34 = (double)*pfVar11; + pfVar11 = (float *)((long)pfVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar33 = (double)*pfVar1; + dVar32 = dVar32 + dVar34; + dVar24 = dVar24 + dVar34 * dVar34; + dVar30 = dVar30 + dVar33; + dVar22 = dVar22 + dVar33 * dVar33; + iVar18 = param_5; + } while (iVar10 != param_5); + } + *param_3 = dVar32; + param_3[1] = dVar30; + *param_4 = dVar24; + param_4[1] = dVar22; + } + else { + iVar18 = 0; + if (iVar8 == 3) { + dVar34 = *param_3; + dVar33 = param_3[1]; + dVar32 = param_3[2]; + dVar30 = *param_4; + dVar24 = param_4[1]; + dVar22 = param_4[2]; + if (0 < param_5) { + iVar10 = 0; + pfVar11 = param_1; + do { + fVar27 = *pfVar11; + iVar10 = iVar10 + 1; + pfVar1 = pfVar11 + 1; + pfVar2 = pfVar11 + 2; + pfVar11 = (float *)((long)pfVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar26 = (double)fVar27; + dVar25 = (double)*pfVar1; + dVar23 = (double)*pfVar2; + dVar34 = dVar34 + dVar26; + dVar30 = dVar30 + dVar26 * dVar26; + dVar33 = dVar33 + dVar25; + dVar24 = dVar24 + dVar25 * dVar25; + dVar32 = dVar32 + dVar23; + dVar22 = dVar22 + dVar23 * dVar23; + iVar18 = param_5; + } while (iVar10 != param_5); + } + *param_3 = dVar34; + param_3[1] = dVar33; + param_3[2] = dVar32; + *param_4 = dVar30; + param_4[1] = dVar24; + /* try { // try from 00391558 to 0049155b has its CatchHandler @ 00391ee8 */ + param_4[2] = dVar22; + } + } + if (iVar8 < (int)uVar13) { + lVar16 = (long)iVar8; + param_1 = param_1 + lVar16; + pdVar12 = param_4 + lVar16; + pdVar17 = param_3 + lVar16; + do { + dVar25 = *pdVar17; + dVar23 = pdVar17[1]; + dVar34 = pdVar17[2]; + dVar33 = pdVar17[3]; + dVar32 = *pdVar12; + dVar30 = pdVar12[1]; + dVar24 = pdVar12[2]; + dVar22 = pdVar12[3]; + pfVar11 = param_1; + iVar10 = iVar18; + if (iVar18 < param_5) { + do { + fVar27 = *pfVar11; + iVar18 = iVar18 + 1; + pfVar1 = pfVar11 + 1; + pfVar2 = pfVar11 + 2; + pfVar3 = pfVar11 + 3; + pfVar11 = (float *)((long)pfVar11 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_6 & 0xffffffff) << 2)); + dVar28 = (double)fVar27; + dVar31 = (double)*pfVar1; + dVar29 = (double)*pfVar2; + dVar26 = (double)*pfVar3; + dVar25 = dVar25 + dVar28; + dVar32 = dVar32 + dVar28 * dVar28; + dVar23 = dVar23 + dVar31; + dVar30 = dVar30 + dVar31 * dVar31; + dVar34 = dVar34 + dVar29; + dVar24 = dVar24 + dVar29 * dVar29; + dVar33 = dVar33 + dVar26; + dVar22 = dVar22 + dVar26 * dVar26; + iVar10 = param_5; + } while (iVar18 != param_5); + } + iVar18 = iVar10; + *pdVar17 = dVar25; + pdVar20 = pdVar17 + 4; + pdVar17[1] = dVar23; + param_1 = param_1 + 4; + pdVar17[2] = dVar34; + pdVar17[3] = dVar33; + *pdVar12 = dVar32; + pdVar12[1] = dVar30; + pdVar12[2] = dVar24; + pdVar12[3] = dVar22; + pdVar12 = pdVar12 + 4; + pdVar17 = pdVar20; + } while (pdVar20 != param_3 + lVar16 + 4 + (ulong)((uVar13 - 1) - iVar8 >> 2) * 4); + } + return param_5; + } + if (uVar13 == 1) { + dVar24 = *param_3; + dVar22 = *param_4; + if (param_5 < 1) { + iVar18 = 0; + } + else { + lVar16 = 0; + iVar18 = 0; + do { + if (*(char *)(param_2 + lVar16) != '\0') { + iVar18 = iVar18 + 1; + dVar30 = (double)param_1[lVar16]; + dVar22 = dVar22 + dVar30 * dVar30; + dVar24 = dVar24 + dVar30; + } + lVar16 = lVar16 + 1; + } while ((int)lVar16 < param_5); + } + *param_3 = dVar24; + *param_4 = dVar22; + return iVar18; + } + if (uVar13 == 3) { + dVar34 = *param_3; + dVar33 = param_3[1]; + dVar32 = param_3[2]; + dVar30 = *param_4; + dVar24 = param_4[1]; + dVar22 = param_4[2]; + if (param_5 < 1) { + iVar18 = 0; + } + else { + lVar16 = 0; + iVar18 = 0; + do { + pcVar4 = (char *)(param_2 + lVar16); + lVar16 = lVar16 + 1; + if (*pcVar4 != '\0') { + iVar18 = iVar18 + 1; + dVar26 = (double)*param_1; + dVar25 = (double)param_1[1]; + dVar23 = (double)param_1[2]; + dVar30 = dVar30 + dVar26 * dVar26; + dVar24 = dVar24 + dVar25 * dVar25; + dVar22 = dVar22 + dVar23 * dVar23; + dVar34 = dVar34 + dVar26; + dVar33 = dVar33 + dVar25; + dVar32 = dVar32 + dVar23; + } + param_1 = param_1 + 3; + } while ((int)lVar16 < param_5); + } + *param_3 = dVar34; + param_3[1] = dVar33; + param_3[2] = dVar32; + *param_4 = dVar30; + param_4[1] = dVar24; + param_4[2] = dVar22; + return iVar18; + } + if (param_5 < 1) { + iVar18 = 0; + } + else { + uVar5 = (uint)((ulong)param_3 >> 3) & 1; + uVar7 = uVar13; + if (uVar5 < uVar13) { + uVar7 = uVar5; + } + lVar16 = 0; + uVar5 = ((uVar13 - uVar7) - 4 >> 2) + 1; + iVar18 = 0; + iVar8 = uVar5 * 4; + do { + if (*(char *)(param_2 + lVar16) != '\0') { + if (0 < (int)uVar13) { + if (uVar13 < 7 || param_4 < param_3 + 4 && param_3 < param_4 + 4) { + lVar15 = 0; + do { + dVar24 = param_4[lVar15]; + dVar22 = (double)param_1[lVar15]; + param_3[lVar15] = param_3[lVar15] + dVar22; + param_4[lVar15] = dVar24 + dVar22 * dVar22; + lVar15 = lVar15 + 1; + } while ((int)lVar15 < (int)uVar13); + } + else { + if (uVar7 != 0) { + dVar24 = *param_4; + dVar22 = (double)*param_1; + *param_3 = *param_3 + dVar22; + *param_4 = dVar24 + dVar22 * dVar22; + } + uVar14 = (uint)(uVar7 != 0); + if (2 < (uVar13 - 1) - uVar7) { + uVar19 = 0; + pdVar17 = param_3 + uVar7; + pdVar20 = param_4 + uVar7; + pdVar21 = param_3 + uVar7; + pdVar12 = param_4 + uVar7; + pfVar11 = param_1 + uVar7; + do { + pdVar9 = pdVar17 + 1; + dVar26 = *pdVar17; + dVar34 = pdVar12[1]; + dVar33 = *pdVar12; + dVar25 = pdVar17[3]; + dVar23 = pdVar17[2]; + uVar19 = uVar19 + 1; + dVar29 = (double)(float)*(undefined8 *)pfVar11; + dVar31 = (double)(float)((ulong)*(undefined8 *)pfVar11 >> 0x20); + dVar22 = (double)(float)*(undefined8 *)(pfVar11 + 2); + dVar24 = (double)(float)((ulong)*(undefined8 *)(pfVar11 + 2) >> 0x20); + dVar32 = pdVar12[3]; + dVar30 = pdVar12[2]; + pdVar12 = pdVar12 + 4; + pdVar17 = pdVar17 + 4; + pdVar21[1] = *pdVar9 + dVar31; + *pdVar21 = dVar26 + dVar29; + pdVar21[3] = dVar24 + dVar25; + pdVar21[2] = dVar22 + dVar23; + pdVar20[1] = dVar34 + dVar31 * dVar31; + *pdVar20 = dVar33 + dVar29 * dVar29; + pdVar20[3] = dVar32 + dVar24 * dVar24; + pdVar20[2] = dVar30 + dVar22 * dVar22; + pdVar20 = pdVar20 + 4; + pdVar21 = pdVar21 + 4; + pfVar11 = pfVar11 + 4; + } while (uVar19 < uVar5); + uVar14 = uVar14 + iVar8; + if (iVar8 == uVar13 - uVar7) goto LAB_00391158; + } + iVar10 = uVar14 + 1; + /* try { // try from 003910d8 to 0049149b has its CatchHandler @ 00391f0c */ + dVar24 = param_4[(int)uVar14]; + dVar22 = (double)param_1[(int)uVar14]; + param_3[(int)uVar14] = param_3[(int)uVar14] + dVar22; + param_4[(int)uVar14] = dVar24 + dVar22 * dVar22; + if (iVar10 < (int)uVar13) { + iVar6 = uVar14 + 2; + dVar24 = param_4[iVar10]; + dVar22 = (double)param_1[iVar10]; + param_3[iVar10] = param_3[iVar10] + dVar22; + param_4[iVar10] = dVar24 + dVar22 * dVar22; + if (iVar6 < (int)uVar13) { + dVar24 = param_4[iVar6]; + dVar22 = (double)param_1[iVar6]; + param_3[iVar6] = param_3[iVar6] + dVar22; + param_4[iVar6] = dVar24 + dVar22 * dVar22; + } + } + } + } +LAB_00391158: + iVar18 = iVar18 + 1; + } + lVar16 = lVar16 + 1; + param_1 = (float *)((long)param_1 + + (-(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2) + ); + } while ((int)lVar16 < param_5); + } + return iVar18; +} + + +================================================================== + +### FUNC 00391578 (1336 bytes) name=FUN_00391578 + +int FUN_00391578(double *param_1,long param_2,double *param_3,double *param_4,int param_5, + ulong param_6) + +{ + char *pcVar1; + uint uVar2; + long lVar3; + uint uVar4; + int iVar5; + int iVar6; + double *pdVar7; + double *pdVar8; + uint uVar9; + ulong uVar10; + long lVar11; + double *pdVar12; + long lVar13; + uint uVar14; + int iVar15; + ulong uVar16; + double dVar17; + double dVar18; + double dVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + + /* try { // try from 00391588 to 0049158b has its CatchHandler @ 003909b0 */ + uVar9 = (uint)param_6; + if (param_2 == 0) { + iVar5 = (int)uVar9 % 4; + iVar15 = 0; + if (iVar5 == 1) { + dVar21 = *param_3; + dVar17 = *param_4; + if (0 < param_5) { + iVar6 = 0; + pdVar8 = param_1; + do { + iVar6 = iVar6 + 1; + dVar25 = *pdVar8; + pdVar8 = (double *) + ((long)pdVar8 + + (-(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3)); + dVar21 = dVar21 + dVar25; + dVar17 = dVar17 + dVar25 * dVar25; + iVar15 = param_5; + } while (iVar6 != param_5); + } + *param_3 = dVar21; + *param_4 = dVar17; + } + else if (iVar5 == 2) { + dVar26 = *param_3; + dVar25 = param_3[1]; + dVar21 = *param_4; + dVar17 = param_4[1]; + if (0 < param_5) { + iVar6 = 0; + pdVar8 = param_1; + do { + iVar6 = iVar6 + 1; + dVar28 = *pdVar8; + dVar27 = pdVar8[1]; + pdVar8 = (double *) + ((long)pdVar8 + + (-(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3)); + dVar26 = dVar26 + dVar28; + dVar21 = dVar21 + dVar28 * dVar28; + dVar25 = dVar25 + dVar27; + dVar17 = dVar17 + dVar27 * dVar27; + iVar15 = param_5; + } while (iVar6 != param_5); + } + *param_3 = dVar26; + param_3[1] = dVar25; + *param_4 = dVar21; + param_4[1] = dVar17; + } + else { + iVar15 = 0; + if (iVar5 == 3) { + dVar28 = *param_3; + dVar27 = param_3[1]; + dVar26 = param_3[2]; + dVar25 = *param_4; + dVar21 = param_4[1]; + dVar17 = param_4[2]; + if (0 < param_5) { + iVar6 = 0; + pdVar8 = param_1; + do { + iVar6 = iVar6 + 1; + dVar22 = *pdVar8; + dVar19 = pdVar8[1]; + dVar18 = pdVar8[2]; + pdVar8 = (double *) + ((long)pdVar8 + + (-(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3)); + dVar28 = dVar28 + dVar22; + dVar25 = dVar25 + dVar22 * dVar22; + dVar27 = dVar27 + dVar19; + dVar21 = dVar21 + dVar19 * dVar19; + dVar26 = dVar26 + dVar18; + dVar17 = dVar17 + dVar18 * dVar18; + iVar15 = param_5; + } while (iVar6 != param_5); + } + *param_3 = dVar28; + param_3[1] = dVar27; + param_3[2] = dVar26; + *param_4 = dVar25; + param_4[1] = dVar21; + param_4[2] = dVar17; + } + } + if (iVar5 < (int)uVar9) { + lVar11 = (long)iVar5; + param_1 = param_1 + lVar11; + pdVar8 = param_4 + lVar11; + pdVar12 = param_3 + lVar11; + do { + dVar19 = *pdVar12; + dVar18 = pdVar12[1]; + dVar28 = pdVar12[2]; + dVar27 = pdVar12[3]; + dVar26 = *pdVar8; + dVar25 = pdVar8[1]; + dVar21 = pdVar8[2]; + dVar17 = pdVar8[3]; + pdVar7 = param_1; + iVar6 = iVar15; + if (iVar15 < param_5) { + do { + iVar15 = iVar15 + 1; + dVar24 = *pdVar7; + dVar23 = pdVar7[1]; + dVar20 = pdVar7[2]; + dVar22 = pdVar7[3]; + pdVar7 = (double *) + ((long)pdVar7 + + (-(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3)); + dVar19 = dVar19 + dVar24; + dVar26 = dVar26 + dVar24 * dVar24; + dVar18 = dVar18 + dVar23; + dVar25 = dVar25 + dVar23 * dVar23; + dVar28 = dVar28 + dVar20; + dVar21 = dVar21 + dVar20 * dVar20; + dVar27 = dVar27 + dVar22; + dVar17 = dVar17 + dVar22 * dVar22; + iVar6 = param_5; + } while (iVar15 != param_5); + } + iVar15 = iVar6; + *pdVar12 = dVar19; + pdVar7 = pdVar12 + 4; + pdVar12[1] = dVar18; + param_1 = param_1 + 4; + pdVar12[2] = dVar28; + pdVar12[3] = dVar27; + *pdVar8 = dVar26; + pdVar8[1] = dVar25; + pdVar8[2] = dVar21; + pdVar8[3] = dVar17; + pdVar8 = pdVar8 + 4; + pdVar12 = pdVar7; + } while (pdVar7 != param_3 + lVar11 + 4 + (ulong)((uVar9 - 1) - iVar5 >> 2) * 4); + } + return param_5; + } + if (uVar9 == 1) { + dVar21 = *param_3; + dVar17 = *param_4; + if (param_5 < 1) { + iVar15 = 0; + } + else { + lVar11 = 0; + iVar15 = 0; + do { + /* try { // try from 00391768 to 0049176b has its CatchHandler @ 00391f04 */ + if (*(char *)(param_2 + lVar11) != '\0') { + dVar25 = param_1[lVar11]; + iVar15 = iVar15 + 1; + dVar17 = dVar17 + dVar25 * dVar25; + dVar21 = dVar21 + dVar25; + } + lVar11 = lVar11 + 1; + } while ((int)lVar11 < param_5); + } + *param_3 = dVar21; + *param_4 = dVar17; + return iVar15; + } + if (uVar9 == 3) { + dVar28 = *param_3; + dVar27 = param_3[1]; + /* try { // try from 003917b8 to 004917bb has its CatchHandler @ 00391ee0 */ + dVar26 = param_3[2]; + dVar25 = *param_4; + dVar21 = param_4[1]; + dVar17 = param_4[2]; + if (param_5 < 1) { + iVar15 = 0; + } + else { + lVar11 = 0; + iVar15 = 0; + do { + pcVar1 = (char *)(param_2 + lVar11); + lVar11 = lVar11 + 1; + if (*pcVar1 != '\0') { + dVar22 = *param_1; + iVar15 = iVar15 + 1; + dVar19 = param_1[1]; + dVar18 = param_1[2]; + dVar25 = dVar25 + dVar22 * dVar22; + dVar21 = dVar21 + dVar19 * dVar19; + dVar17 = dVar17 + dVar18 * dVar18; + dVar28 = dVar28 + dVar22; + dVar27 = dVar27 + dVar19; + dVar26 = dVar26 + dVar18; + } + /* try { // try from 0039180c to 0049180f has its CatchHandler @ 00391e74 */ + param_1 = param_1 + 3; + } while ((int)lVar11 < param_5); + } + /* try { // try from 00391814 to 004918fb has its CatchHandler @ 00391ee0 */ + *param_3 = dVar28; + param_3[1] = dVar27; + param_3[2] = dVar26; + *param_4 = dVar25; + param_4[1] = dVar21; + param_4[2] = dVar17; + return iVar15; + } + if (param_5 < 1) { + iVar15 = 0; + } + else { + uVar4 = (uint)((ulong)param_3 >> 3) & 1; + lVar11 = 0; + uVar16 = -(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3; + if (uVar9 < uVar4) { + uVar4 = uVar9; + } + pdVar8 = param_1 + 2; + iVar6 = uVar9 - uVar4; + uVar2 = (iVar6 - 2U >> 1) + 1; + iVar15 = 0; + iVar5 = uVar2 * 2; + do { + if (*(char *)(param_2 + lVar11) != '\0') { + if (0 < (int)uVar9) { + if (((uVar9 < 6 || param_4 < param_3 + 2 && param_3 < param_4 + 2) || + param_3 < pdVar8 && param_1 < param_3 + 2) || + (param_4 < pdVar8 && param_1 < param_4 + 2)) { + lVar13 = 0; + do { + /* try { // try from 00391724 to 00491727 has its CatchHandler @ 00391ee8 */ + dVar21 = param_1[lVar13]; + dVar17 = param_4[lVar13]; + param_3[lVar13] = param_3[lVar13] + dVar21; + param_4[lVar13] = dVar17 + dVar21 * dVar21; + lVar13 = lVar13 + 1; + } while ((int)lVar13 < (int)uVar9); + } + else { + if (uVar4 != 0) { + dVar21 = *param_1; + dVar17 = *param_4; + *param_3 = *param_3 + dVar21; + *param_4 = dVar17 + dVar21 * dVar21; + } + uVar14 = (uint)(uVar4 != 0); + if (iVar6 != 1) { + lVar13 = 0; + uVar14 = 0; + do { + lVar3 = lVar13 + (ulong)uVar4 * 8; + uVar14 = uVar14 + 1; + pdVar12 = (double *)((long)param_3 + lVar3); + pdVar7 = (double *)((long)param_4 + lVar3); + dVar26 = ((double *)((long)param_1 + lVar3))[1]; + dVar25 = *(double *)((long)param_1 + lVar3); + lVar13 = lVar13 + 0x10; + dVar21 = pdVar7[1]; + dVar17 = *pdVar7; + pdVar12[1] = pdVar12[1] + dVar26; + *pdVar12 = *pdVar12 + dVar25; + pdVar7[1] = dVar21 + dVar26 * dVar26; + *pdVar7 = dVar17 + dVar25 * dVar25; + } while (uVar14 < uVar2); + uVar14 = iVar5 + (uint)(uVar4 != 0); + if (iVar5 == iVar6) goto LAB_003916e8; + } + uVar10 = -(ulong)(uVar14 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar14 << 3; + dVar21 = *(double *)((long)param_1 + uVar10); + dVar17 = *(double *)((long)param_4 + uVar10); + *(double *)((long)param_3 + uVar10) = *(double *)((long)param_3 + uVar10) + dVar21; + *(double *)((long)param_4 + uVar10) = dVar17 + dVar21 * dVar21; + } + } +LAB_003916e8: + iVar15 = iVar15 + 1; + } + lVar11 = lVar11 + 1; + param_1 = (double *)((long)param_1 + uVar16); + pdVar8 = (double *)((long)pdVar8 + uVar16); + } while ((int)lVar11 < param_5); + } + return iVar15; +} + + +================================================================== + +### FUNC 00391ab0 (232 bytes) name=FUN_00391ab0 + +void FUN_00391ab0(long param_1,long param_2,uint *param_3,uint *param_4,long *param_5,long *param_6, + int param_7,long param_8) + +{ + long lVar1; + uint uVar2; + long lVar3; + byte bVar4; + uint uVar5; + uint uVar6; + uint uVar7; + long lVar8; + uint uVar9; + long lVar10; + long lVar11; + + uVar7 = *param_3; + uVar9 = *param_4; + lVar11 = *param_5; + lVar10 = *param_6; + if (param_2 == 0) { + if (0 < param_7) { + lVar1 = param_8 + 1; + param_1 = param_1 - param_8; + do { + bVar4 = *(byte *)(param_1 + param_8); + uVar5 = (uint)bVar4; + uVar6 = uVar5; + if ((int)uVar7 < (int)(uint)bVar4) { + uVar6 = uVar7; + } + lVar8 = param_8; + if ((int)uVar7 <= (int)uVar5) { + lVar8 = lVar11; + } + uVar2 = (uint)bVar4; + if ((int)uVar5 < (int)uVar9) { + uVar2 = uVar9; + } + lVar3 = param_8; + if ((int)(uint)bVar4 <= (int)uVar9) { + lVar3 = lVar10; + } + param_8 = param_8 + 1; + lVar10 = lVar3; + lVar11 = lVar8; + uVar7 = uVar6; + uVar9 = uVar2; + } while (param_8 != lVar1 + (ulong)(param_7 - 1)); + *param_5 = lVar8; + *param_6 = lVar3; + *param_3 = uVar6; + *param_4 = uVar2; + return; + } + } + else if (0 < param_7) { + lVar1 = param_8 + 1; + lVar8 = -param_8; + do { + bVar4 = *(byte *)(param_1 + lVar8 + param_8); + if (*(char *)(param_2 + lVar8 + param_8) != '\0') { + uVar6 = (uint)bVar4; + if ((int)(uint)bVar4 < (int)uVar7) { + lVar11 = param_8; + uVar7 = uVar6; + } + if ((int)uVar9 < (int)uVar6) { + lVar10 = param_8; + uVar9 = uVar6; + } + } + param_8 = param_8 + 1; + } while (param_8 != lVar1 + (ulong)(param_7 - 1)); + } + *param_5 = lVar11; + *param_6 = lVar10; + *param_3 = uVar7; + *param_4 = uVar9; + return; +} + + +================================================================== + +### FUNC 00391b98 (232 bytes) name=FUN_00391b98 + +void FUN_00391b98(long param_1,long param_2,int *param_3,int *param_4,long *param_5,long *param_6, + int param_7,long param_8) + +{ + long lVar1; + int iVar2; + long lVar3; + char cVar4; + int iVar5; + int iVar6; + int iVar7; + long lVar8; + int iVar9; + long lVar10; + long lVar11; + + iVar7 = *param_3; + iVar9 = *param_4; + lVar11 = *param_5; + lVar10 = *param_6; + if (param_2 == 0) { + if (0 < param_7) { + lVar1 = param_8 + 1; + param_1 = param_1 - param_8; + do { + cVar4 = *(char *)(param_1 + param_8); + iVar5 = (int)cVar4; + iVar6 = iVar5; + if (iVar7 < cVar4) { + iVar6 = iVar7; + } + lVar8 = param_8; + if (iVar7 <= iVar5) { + lVar8 = lVar11; + } + iVar2 = (int)cVar4; + if (iVar5 < iVar9) { + iVar2 = iVar9; + } + lVar3 = param_8; + if (cVar4 <= iVar9) { + lVar3 = lVar10; + } + param_8 = param_8 + 1; + lVar10 = lVar3; + lVar11 = lVar8; + iVar7 = iVar6; + iVar9 = iVar2; + } while (param_8 != lVar1 + (ulong)(param_7 - 1)); + *param_5 = lVar8; + *param_6 = lVar3; + *param_3 = iVar6; + *param_4 = iVar2; + return; + } + } + else if (0 < param_7) { + lVar1 = param_8 + 1; + lVar8 = -param_8; + do { + cVar4 = *(char *)(param_1 + lVar8 + param_8); + if (*(char *)(param_2 + lVar8 + param_8) != '\0') { + iVar6 = (int)cVar4; + if (cVar4 < iVar7) { + lVar11 = param_8; + iVar7 = iVar6; + } + if (iVar9 < iVar6) { + lVar10 = param_8; + iVar9 = iVar6; + } + } + param_8 = param_8 + 1; + } while (param_8 != lVar1 + (ulong)(param_7 - 1)); + } + *param_5 = lVar11; + *param_6 = lVar10; + *param_3 = iVar7; + *param_4 = iVar9; + return; +} + + +================================================================== + +### FUNC 00391c80 (216 bytes) name=FUN_00391c80 + +void FUN_00391c80(long param_1,long param_2,uint *param_3,uint *param_4,long *param_5,long *param_6, + int param_7,long param_8) + +{ + uint uVar1; + long lVar2; + long lVar3; + ushort uVar4; + long lVar5; + uint uVar6; + long lVar7; + uint uVar8; + uint uVar9; + uint uVar10; + long lVar11; + long lVar12; + + uVar9 = *param_3; + uVar10 = *param_4; + lVar12 = *param_5; + lVar11 = *param_6; + if (param_2 == 0) { + if (0 < param_7) { + lVar7 = param_8 + 1; + lVar5 = param_8 * -2; + do { + uVar4 = *(ushort *)(param_1 + lVar5 + param_8 * 2); + uVar6 = (uint)uVar4; + uVar8 = uVar6; + if ((int)uVar9 < (int)(uint)uVar4) { + uVar8 = uVar9; + } + lVar2 = param_8; + if ((int)uVar9 <= (int)uVar6) { + lVar2 = lVar12; + } + uVar1 = (uint)uVar4; + if ((int)uVar6 < (int)uVar10) { + uVar1 = uVar10; + } + lVar3 = param_8; + if ((int)(uint)uVar4 <= (int)uVar10) { + lVar3 = lVar11; + } + param_8 = param_8 + 1; + lVar11 = lVar3; + lVar12 = lVar2; + uVar9 = uVar8; + uVar10 = uVar1; + } while (param_8 != lVar7 + (ulong)(param_7 - 1)); + *param_5 = lVar2; + *param_6 = lVar3; + *param_3 = uVar8; + *param_4 = uVar1; + return; + } + } + else { + lVar7 = 0; + if (0 < param_7) { + do { + uVar4 = *(ushort *)(param_1 + lVar7 * 2); + if (*(char *)(param_2 + lVar7) != '\0') { + uVar8 = (uint)uVar4; + if ((int)(uint)uVar4 < (int)uVar9) { + lVar12 = param_8; + uVar9 = uVar8; + } + if ((int)uVar10 < (int)uVar8) { + lVar11 = param_8; + uVar10 = uVar8; + } + } + lVar7 = lVar7 + 1; + param_8 = param_8 + 1; + } while ((int)lVar7 < param_7); + } + } + *param_5 = lVar12; + *param_6 = lVar11; + *param_3 = uVar9; + *param_4 = uVar10; + return; +} + + +================================================================== + +### FUNC 00391d58 (216 bytes) name=FUN_00391d58 + +void FUN_00391d58(long param_1,long param_2,int *param_3,int *param_4,long *param_5,long *param_6, + int param_7,long param_8) + +{ + int iVar1; + long lVar2; + long lVar3; + short sVar4; + long lVar5; + int iVar6; + long lVar7; + int iVar8; + int iVar9; + int iVar10; + long lVar11; + long lVar12; + + iVar9 = *param_3; + iVar10 = *param_4; + lVar12 = *param_5; + lVar11 = *param_6; + if (param_2 == 0) { + /* try { // try from 00391dc8 to 00491e43 has its CatchHandler @ 003909b0 */ + if (0 < param_7) { + lVar7 = param_8 + 1; + lVar5 = param_8 * -2; + do { + sVar4 = *(short *)(param_1 + lVar5 + param_8 * 2); + iVar6 = (int)sVar4; + iVar8 = iVar6; + if (iVar9 < sVar4) { + iVar8 = iVar9; + } + lVar2 = param_8; + if (iVar9 <= iVar6) { + lVar2 = lVar12; + } + iVar1 = (int)sVar4; + if (iVar6 < iVar10) { + iVar1 = iVar10; + } + lVar3 = param_8; + if (sVar4 <= iVar10) { + lVar3 = lVar11; + } + param_8 = param_8 + 1; + lVar11 = lVar3; + lVar12 = lVar2; + iVar9 = iVar8; + iVar10 = iVar1; + } while (param_8 != lVar7 + (ulong)(param_7 - 1)); + *param_5 = lVar2; + *param_6 = lVar3; + *param_3 = iVar8; + *param_4 = iVar1; + return; + } + } + else { + lVar7 = 0; + if (0 < param_7) { + do { + sVar4 = *(short *)(param_1 + lVar7 * 2); + if (*(char *)(param_2 + lVar7) != '\0') { + iVar8 = (int)sVar4; + if (sVar4 < iVar9) { + lVar12 = param_8; + iVar9 = iVar8; + } + if (iVar10 < iVar8) { + lVar11 = param_8; + iVar10 = iVar8; + } + } + lVar7 = lVar7 + 1; + param_8 = param_8 + 1; + } while ((int)lVar7 < param_7); + } + } + /* try { // try from 00391db4 to 00491db7 has its CatchHandler @ 00391ee8 */ + *param_5 = lVar12; + *param_6 = lVar11; + *param_3 = iVar9; + *param_4 = iVar10; + return; +} + + +================================================================== + +### FUNC 00391e30 (216 bytes) name=FUN_00391e30 + +void FUN_00391e30(long param_1,long param_2,int *param_3,int *param_4,long *param_5,long *param_6, + int param_7,long param_8) + +{ + int iVar1; + long lVar2; + long lVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + int iVar8; + int iVar9; + long lVar10; + long lVar11; + + iVar8 = *param_3; + iVar9 = *param_4; + lVar11 = *param_5; + lVar10 = *param_6; + if (param_2 == 0) { + if (0 < param_7) { + lVar7 = param_8 + 1; + lVar6 = param_8 * -4; + do { + iVar5 = *(int *)(param_1 + lVar6 + param_8 * 4); + iVar4 = iVar5; + if (iVar8 < iVar5) { + iVar4 = iVar8; + } + lVar2 = param_8; + if (iVar8 <= iVar5) { + lVar2 = lVar11; + } + iVar1 = iVar5; + if (iVar5 < iVar9) { + iVar1 = iVar9; + } + /* try { // try from 00391edc to 00491edf has its CatchHandler @ 003909b0 */ + lVar3 = param_8; + if (iVar5 <= iVar9) { + lVar3 = lVar10; + } + /* catch() { ... } // from try @ 003917b8 with catch @ 00391ee0 + catch() { ... } // from try @ 00391814 with catch @ 00391ee0 */ + param_8 = param_8 + 1; + lVar10 = lVar3; + lVar11 = lVar2; + iVar8 = iVar4; + iVar9 = iVar1; + /* catch() { ... } // from try @ 00390a8c with catch @ 00391ee8 + catch() { ... } // from try @ 00390b8c with catch @ 00391ee8 + catch() { ... } // from try @ 00390c74 with catch @ 00391ee8 + catch() { ... } // from try @ 00391558 with catch @ 00391ee8 + catch() { ... } // from try @ 00391724 with catch @ 00391ee8 + catch() { ... } // from try @ 00391db4 with catch @ 00391ee8 + catch() { ... } // from try @ 00391e4c with catch @ 00391ee8 */ + /* catch() { ... } // from try @ 00390d7c with catch @ 00391ef0 */ + } while (param_8 != lVar7 + (ulong)(param_7 - 1)); + *param_5 = lVar2; + *param_6 = lVar3; + *param_3 = iVar4; + /* try { // try from 00391f00 to 00491f03 has its CatchHandler @ 003909b0 */ + *param_4 = iVar1; + /* catch() { ... } // from try @ 00390b08 with catch @ 00391f04 + catch() { ... } // from try @ 00390f50 with catch @ 00391f04 + catch() { ... } // from try @ 00391768 with catch @ 00391f04 */ + return; + } + } + else { + lVar7 = 0; + /* try { // try from 00391e4c to 00491e4f has its CatchHandler @ 00391ee8 */ + if (0 < param_7) { + do { + iVar4 = *(int *)(param_1 + lVar7 * 4); + if (*(char *)(param_2 + lVar7) != '\0') { + if (iVar4 < iVar8) { + lVar11 = param_8; + iVar8 = iVar4; + } + if (iVar9 < iVar4) { + /* catch() { ... } // from try @ 0039180c with catch @ 00391e74 */ + lVar10 = param_8; + iVar9 = iVar4; + } + } + lVar7 = lVar7 + 1; + param_8 = param_8 + 1; + } while ((int)lVar7 < param_7); + } + } + *param_5 = lVar11; + *param_6 = lVar10; + *param_3 = iVar8; + *param_4 = iVar9; + return; +} + + +================================================================== + +### FUNC 00391f08 (236 bytes) name=FUN_00391f08 + +void FUN_00391f08(long param_1,long param_2,float *param_3,float *param_4,long *param_5, + long *param_6,int param_7,long param_8) + +{ + long lVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + + fVar10 = *param_3; + /* catch() { ... } // from try @ 003910d8 with catch @ 00391f0c */ + lVar6 = *param_5; + fVar9 = *param_4; + lVar5 = *param_6; + if (param_2 == 0) { + if (0 < param_7) { + lVar4 = param_8 + 1; + lVar3 = param_8 * -4; + do { + fVar8 = *(float *)(param_1 + lVar3 + param_8 * 4); + lVar1 = param_8; + fVar7 = fVar8; + if (fVar10 <= fVar8) { + lVar1 = lVar6; + fVar7 = fVar10; + } + fVar10 = fVar7; + lVar2 = param_8; + if (fVar8 <= fVar9) { + lVar2 = lVar5; + fVar8 = fVar9; + } + fVar9 = fVar8; + param_8 = param_8 + 1; + lVar5 = lVar2; + lVar6 = lVar1; + } while (param_8 != lVar4 + (ulong)(param_7 - 1)); + *param_5 = lVar1; + *param_6 = lVar2; + *param_3 = fVar10; + *param_4 = fVar9; + return; + } + } + else { + lVar4 = 0; + if (0 < param_7) { + do { + fVar7 = *(float *)(param_1 + lVar4 * 4); + if (*(char *)(param_2 + lVar4) != '\0') { + if (fVar7 < fVar10) { + /* catch() { ... } // from try @ 00391fac with catch @ 00391f40 + catch() { ... } // from try @ 00392260 with catch @ 00391f40 + catch() { ... } // from try @ 003924d8 with catch @ 00391f40 + catch() { ... } // from try @ 00392540 with catch @ 00391f40 + catch() { ... } // from try @ 00392584 with catch @ 00391f40 + catch() { ... } // from try @ 0039272c with catch @ 00391f40 + catch() { ... } // from try @ 00392798 with catch @ 00391f40 + catch() { ... } // from try @ 003927e8 with catch @ 00391f40 */ + lVar6 = param_8; + fVar10 = fVar7; + } + if (fVar9 < fVar7) { + lVar5 = param_8; + fVar9 = fVar7; + } + } + lVar4 = lVar4 + 1; + param_8 = param_8 + 1; + } while ((int)lVar4 < param_7); + } + } + *param_5 = lVar6; + *param_6 = lVar5; + *param_3 = fVar10; + *param_4 = fVar9; + return; +} + + +================================================================== + +### FUNC 00391ff4 (236 bytes) name=FUN_00391ff4 + +void FUN_00391ff4(long param_1,long param_2,double *param_3,double *param_4,long *param_5, + long *param_6,int param_7,long param_8) + +{ + long lVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + long lVar6; + double dVar7; + double dVar8; + double dVar9; + double dVar10; + + dVar10 = *param_3; + /* try { // try from 00391ff8 to 00491ffb has its CatchHandler @ 003927f4 */ + lVar6 = *param_5; + dVar9 = *param_4; + lVar5 = *param_6; + if (param_2 == 0) { + if (0 < param_7) { + lVar4 = param_8 + 1; + lVar3 = param_8 * -8; + do { + dVar8 = *(double *)(param_1 + lVar3 + param_8 * 8); + lVar1 = param_8; + dVar7 = dVar8; + if (dVar10 <= dVar8) { + lVar1 = lVar6; + dVar7 = dVar10; + } + dVar10 = dVar7; + lVar2 = param_8; + if (dVar8 <= dVar9) { + lVar2 = lVar5; + dVar8 = dVar9; + } + dVar9 = dVar8; + param_8 = param_8 + 1; + lVar5 = lVar2; + lVar6 = lVar1; + } while (param_8 != lVar4 + (ulong)(param_7 - 1)); + *param_5 = lVar1; + *param_6 = lVar2; + *param_3 = dVar10; + *param_4 = dVar9; + return; + } + } + else { + lVar4 = 0; + if (0 < param_7) { + do { + dVar7 = *(double *)(param_1 + lVar4 * 8); + if (*(char *)(param_2 + lVar4) != '\0') { + if (dVar7 < dVar10) { + lVar6 = param_8; + dVar10 = dVar7; + } + if (dVar9 < dVar7) { + lVar5 = param_8; + dVar9 = dVar7; + } + } + lVar4 = lVar4 + 1; + /* try { // try from 00392044 to 00492047 has its CatchHandler @ 003927fc */ + param_8 = param_8 + 1; + /* try { // try from 0039204c to 004920a7 has its CatchHandler @ 003927f4 */ + } while ((int)lVar4 < param_7); + } + } + *param_5 = lVar6; + *param_6 = lVar5; + *param_3 = dVar10; + *param_4 = dVar9; + return; +} + + +================================================================== + +### FUNC 003920e0 (1868 bytes) name=FUN_003920e0 + +undefined8 FUN_003920e0(byte *param_1,long param_2,uint *param_3,int param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + ulong uVar10; + uint uVar11; + byte *pbVar12; + uint uVar13; + uint uVar14; + ulong uVar15; + long lVar16; + undefined1 uVar17; + undefined1 uVar18; + undefined1 uVar19; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + uint uVar25; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + + /* try { // try from 003920e0 to 004920e3 has its CatchHandler @ 0039280c */ + uVar25 = *param_3; + if (param_2 != 0) { + /* try { // try from 003920e8 to 00492127 has its CatchHandler @ 003927f4 */ + if (0 < param_4) { + uVar11 = -(int)param_1; + lVar16 = 0; + do { + if ((*(char *)(param_2 + lVar16) != '\0') && (0 < (int)param_5)) { + uVar14 = uVar11 & 0xf; + if (param_5 < (uVar11 & 0xf)) { + uVar14 = param_5; + } + if (param_5 < 0x12) { + uVar14 = param_5; + } + uVar13 = uVar14; + if (uVar14 != 0) { + if ((int)uVar25 < (int)(uint)*param_1) { + uVar25 = (uint)*param_1; + } + if (uVar14 != 1) { + if ((int)uVar25 < (int)(uint)param_1[1]) { + uVar25 = (uint)param_1[1]; + } + /* try { // try from 0039214c to 0049214f has its CatchHandler @ 00392820 */ + if (uVar14 != 2) { + if ((int)uVar25 < (int)(uint)param_1[2]) { + uVar25 = (uint)param_1[2]; + } + if (uVar14 != 3) { + if ((int)uVar25 < (int)(uint)param_1[3]) { + uVar25 = (uint)param_1[3]; + } + if (uVar14 != 4) { + if ((int)uVar25 < (int)(uint)param_1[4]) { + uVar25 = (uint)param_1[4]; + } + if (uVar14 != 5) { + if ((int)uVar25 < (int)(uint)param_1[5]) { + uVar25 = (uint)param_1[5]; + } + if (uVar14 != 6) { + if ((int)uVar25 < (int)(uint)param_1[6]) { + uVar25 = (uint)param_1[6]; + } + if (uVar14 == 7) { + uVar13 = 7; + } + else { + /* try { // try from 003921c0 to 004921c3 has its CatchHandler @ 003927f4 */ + if ((int)uVar25 < (int)(uint)param_1[7]) { + uVar25 = (uint)param_1[7]; + } + if (uVar14 != 8) { + if ((int)uVar25 < (int)(uint)param_1[8]) { + uVar25 = (uint)param_1[8]; + } + if (uVar14 != 9) { + if ((int)uVar25 < (int)(uint)param_1[9]) { + uVar25 = (uint)param_1[9]; + } + if (uVar14 != 10) { + if ((int)uVar25 < (int)(uint)param_1[10]) { + uVar25 = (uint)param_1[10]; + } + if (uVar14 != 0xb) { + if ((int)uVar25 < (int)(uint)param_1[0xb]) { + uVar25 = (uint)param_1[0xb]; + } + if (uVar14 != 0xc) { + if ((int)uVar25 < (int)(uint)param_1[0xc]) { + uVar25 = (uint)param_1[0xc]; + } + if (uVar14 != 0xd) { + /* try { // try from 00392234 to 00492237 has its CatchHandler @ 003927ec */ + if ((int)uVar25 < (int)(uint)param_1[0xd]) { + uVar25 = (uint)param_1[0xd]; + } + if (uVar14 != 0xe) { + if ((int)uVar25 < (int)(uint)param_1[0xe]) { + uVar25 = (uint)param_1[0xe]; + } + if (uVar14 != 0xf) { + /* try { // try from 00392260 to 004922b3 has its CatchHandler @ 00391f40 */ + if ((int)uVar25 < (int)(uint)param_1[0xf]) { + uVar25 = (uint)param_1[0xf]; + } + if (uVar14 == 0x11) { + if ((int)uVar25 < (int)(uint)param_1[0x10]) { + uVar25 = (uint)param_1[0x10]; + } + } + else { + uVar13 = 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (param_5 == uVar14) goto LAB_0039245c; + } + uVar1 = ((param_5 - uVar14) - 0x10 >> 4) + 1; + iVar9 = uVar1 * 0x10; + if (0xe < (param_5 - 1) - uVar14) { + auVar26._4_4_ = uVar25; + auVar26._0_4_ = uVar25; + auVar26._8_4_ = uVar25; + auVar26._12_4_ = uVar25; + uVar25 = 0; + pbVar12 = param_1 + uVar14; + do { + uVar8 = *(undefined8 *)(pbVar12 + 8); + uVar7 = *(undefined8 *)pbVar12; + uVar25 = uVar25 + 1; + uVar17 = (undefined1)((ulong)uVar7 >> 8); + uVar18 = (undefined1)((ulong)uVar8 >> 8); + uVar19 = (undefined1)((ulong)uVar8 >> 0x28); + auVar23._1_3_ = 0; + auVar23[0] = (byte)((ulong)uVar7 >> 0x20); + auVar22._6_2_ = 0; + auVar22._0_6_ = + (uint6)CONCAT14(uVar17,(uint)CONCAT12(uVar17,(ushort)(byte)uVar7)) & + 0xffff0000ffff; + auVar22[8] = (char)((ulong)uVar7 >> 0x10); + auVar22._9_3_ = 0; + auVar22[0xc] = (char)((ulong)uVar7 >> 0x18); + auVar22._13_3_ = 0; + auVar20._6_2_ = 0; + auVar20._0_6_ = + (uint6)CONCAT14(uVar18,(uint)CONCAT12(uVar18,(ushort)(byte)uVar8)) & + 0xffff0000ffff; + auVar20[8] = (char)((ulong)uVar8 >> 0x10); + auVar20._9_3_ = 0; + auVar20[0xc] = (char)((ulong)uVar8 >> 0x18); + auVar20._13_3_ = 0; + auVar23[4] = (char)((ulong)uVar7 >> 0x28); + auVar23._5_3_ = 0; + auVar23[8] = (char)((ulong)uVar7 >> 0x30); + auVar23._9_3_ = 0; + auVar23[0xc] = (char)((ulong)uVar7 >> 0x38); + auVar23._13_3_ = 0; + /* try { // try from 003922d8 to 004923ab has its CatchHandler @ 003927f4 */ + auVar23 = NEON_smax(auVar23,auVar22,4); + auVar23 = NEON_smax(auVar23,auVar20,4); + auVar5._6_2_ = 0; + auVar5._0_6_ = (uint6)CONCAT14(uVar19,(uint)CONCAT12(uVar19,(ushort)(byte)((ulong) + uVar8 >> 0x20))) & 0xffff0000ffff; + auVar5[8] = (char)((ulong)uVar8 >> 0x30); + auVar5._9_3_ = 0; + auVar5[0xc] = (char)((ulong)uVar8 >> 0x38); + auVar5._13_3_ = 0; + auVar23 = NEON_smax(auVar23,auVar5,4); + auVar26 = NEON_smax(auVar26,auVar23,4); + pbVar12 = pbVar12 + 0x10; + } while (uVar25 < uVar1); + uVar25 = NEON_smaxv(auVar26,4); + uVar13 = uVar13 + iVar9; + if (param_5 - uVar14 == iVar9) goto LAB_0039245c; + } + if ((int)uVar25 < (int)(uint)param_1[(int)uVar13]) { + uVar25 = (uint)param_1[(int)uVar13]; + } + if ((int)(uVar13 + 1) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 1)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 1)]; + } + if ((int)(uVar13 + 2) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 2)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 2)]; + } + if ((int)(uVar13 + 3) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 3)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 3)]; + } + if ((int)(uVar13 + 4) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 4)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 4)]; + } + if ((int)(uVar13 + 5) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 5)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 5)]; + } + if ((int)(uVar13 + 6) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 6)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 6)]; + } + if ((int)(uVar13 + 7) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 7)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 7)]; + } + if ((int)(uVar13 + 8) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 8)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 8)]; + } + if ((int)(uVar13 + 9) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 9)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 9)]; + } + if ((int)(uVar13 + 10) < (int)param_5) { + /* try { // try from 003923fc to 004923ff has its CatchHandler @ 0039279c */ + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 10)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 10)]; + } + /* try { // try from 00392404 to 0049243b has its CatchHandler @ 003927f4 */ + if ((int)(uVar13 + 0xb) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 0xb)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 0xb)]; + } + if ((int)(uVar13 + 0xc) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 0xc)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 0xc)]; + } + if ((int)(uVar13 + 0xd) < (int)param_5) { + if ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 0xd)]) { + uVar25 = (uint)param_1[(int)(uVar13 + 0xd)]; + } + if (((int)(uVar13 + 0xe) < (int)param_5) && + ((int)uVar25 < (int)(uint)param_1[(int)(uVar13 + 0xe)])) { + uVar25 = (uint)param_1[(int)(uVar13 + 0xe)]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039245c: + lVar16 = lVar16 + 1; + param_1 = param_1 + (int)param_5; + uVar11 = uVar11 - param_5; + } while ((int)lVar16 < param_4); + } + *param_3 = uVar25; + return 0; + } + param_5 = param_4 * param_5; + uVar11 = 0; + if ((int)param_5 < 1) goto LAB_003927ec; + /* try { // try from 003924ac to 004924af has its CatchHandler @ 003927ec */ + uVar14 = -(int)param_1 & 0xf; + if (param_5 < uVar14) { + uVar14 = param_5; + } + uVar15 = (ulong)uVar14; + if ((int)param_5 < 0x12) { + uVar15 = (ulong)param_5; +LAB_003924c4: + uVar14 = (uint)uVar15; + uVar11 = (uint)*param_1; + uVar10 = uVar15; + if (uVar14 != 1) { + /* try { // try from 003924d8 to 004924db has its CatchHandler @ 00391f40 */ + if (*param_1 < param_1[1]) { + uVar11 = (uint)param_1[1]; + } + if (uVar14 != 2) { + if (uVar11 < param_1[2]) { + uVar11 = (uint)param_1[2]; + } + if (uVar14 != 3) { + if (uVar11 < param_1[3]) { + uVar11 = (uint)param_1[3]; + } + if (uVar14 != 4) { + if (uVar11 < param_1[4]) { + uVar11 = (uint)param_1[4]; + } + if (uVar14 != 5) { + /* try { // try from 00392520 to 00492523 has its CatchHandler @ 003927f4 */ + if (uVar11 < param_1[5]) { + uVar11 = (uint)param_1[5]; + } + if (uVar14 != 6) { + if (uVar11 < param_1[6]) { + uVar11 = (uint)param_1[6]; + } + /* try { // try from 00392540 to 00492543 has its CatchHandler @ 00391f40 */ + if (uVar14 != 7) { + if (uVar11 < param_1[7]) { + uVar11 = (uint)param_1[7]; + } + if (uVar14 != 8) { + if (uVar11 < param_1[8]) { + uVar11 = (uint)param_1[8]; + } + if (uVar14 != 9) { + if (uVar11 < param_1[9]) { + uVar11 = (uint)param_1[9]; + } + /* try { // try from 0039257c to 0049257f has its CatchHandler @ 00392788 */ + if (uVar14 == 10) { + uVar10 = 10; + } + else { + /* try { // try from 00392584 to 004925ef has its CatchHandler @ 00391f40 */ + if (uVar11 < param_1[10]) { + uVar11 = (uint)param_1[10]; + } + if (uVar14 != 0xb) { + if (uVar11 < param_1[0xb]) { + uVar11 = (uint)param_1[0xb]; + } + if (uVar14 != 0xc) { + if (uVar11 < param_1[0xc]) { + uVar11 = (uint)param_1[0xc]; + } + if (uVar14 != 0xd) { + if (uVar11 < param_1[0xd]) { + uVar11 = (uint)param_1[0xd]; + } + if (uVar14 != 0xe) { + if (uVar11 < param_1[0xe]) { + uVar11 = (uint)param_1[0xe]; + } + if (uVar14 != 0xf) { + if (uVar11 < param_1[0xf]) { + uVar11 = (uint)param_1[0xf]; + } + if (uVar14 == 0x11) { + if (uVar11 < param_1[0x10]) { + uVar11 = (uint)param_1[0x10]; + } + } + else { + uVar10 = 0x10; + /* catch() { ... } // from try @ 0039214c with catch @ 00392820 */ + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar9 = (int)uVar10; + if (uVar14 == param_5) goto LAB_003927ec; + } + else { + /* catch() { ... } // from try @ 003920e0 with catch @ 0039280c */ + iVar9 = 0; + if (uVar14 != 0) goto LAB_003924c4; + } + iVar3 = param_5 - (int)uVar15; + uVar14 = (iVar3 - 0x10U >> 4) + 1; + iVar2 = uVar14 * 0x10; + if (0xe < (param_5 - 1) - (int)uVar15) { + auVar27._4_4_ = uVar11; + auVar27._0_4_ = uVar11; + auVar27._8_4_ = uVar11; + auVar27._12_4_ = uVar11; + uVar11 = 0; + pbVar12 = param_1 + uVar15; + do { + uVar8 = *(undefined8 *)(pbVar12 + 8); + uVar7 = *(undefined8 *)pbVar12; + uVar11 = uVar11 + 1; + uVar17 = (undefined1)((ulong)uVar7 >> 8); + uVar18 = (undefined1)((ulong)uVar8 >> 8); + uVar19 = (undefined1)((ulong)uVar8 >> 0x28); + auVar4._1_3_ = 0; + auVar4[0] = (byte)((ulong)uVar7 >> 0x20); + auVar24._6_2_ = 0; + auVar24._0_6_ = + (uint6)CONCAT14(uVar17,(uint)CONCAT12(uVar17,(ushort)(byte)uVar7)) & 0xffff0000ffff; + auVar24[8] = (char)((ulong)uVar7 >> 0x10); + auVar24._9_3_ = 0; + auVar24[0xc] = (char)((ulong)uVar7 >> 0x18); + auVar24._13_3_ = 0; + auVar21._6_2_ = 0; + auVar21._0_6_ = + (uint6)CONCAT14(uVar18,(uint)CONCAT12(uVar18,(ushort)(byte)uVar8)) & 0xffff0000ffff; + auVar21[8] = (char)((ulong)uVar8 >> 0x10); + auVar21._9_3_ = 0; + auVar21[0xc] = (char)((ulong)uVar8 >> 0x18); + auVar21._13_3_ = 0; + auVar4[4] = (char)((ulong)uVar7 >> 0x28); + auVar4._5_3_ = 0; + auVar4[8] = (char)((ulong)uVar7 >> 0x30); + auVar4._9_3_ = 0; + auVar4[0xc] = (char)((ulong)uVar7 >> 0x38); + auVar4._13_3_ = 0; + auVar26 = NEON_smax(auVar4,auVar24,4); + auVar26 = NEON_smax(auVar26,auVar21,4); + auVar6._6_2_ = 0; + auVar6._0_6_ = (uint6)CONCAT14(uVar19,(uint)CONCAT12(uVar19,(ushort)(byte)((ulong)uVar8 >> + 0x20))) & + 0xffff0000ffff; + auVar6[8] = (char)((ulong)uVar8 >> 0x30); + auVar6._9_3_ = 0; + auVar6[0xc] = (char)((ulong)uVar8 >> 0x38); + auVar6._13_3_ = 0; + auVar26 = NEON_smax(auVar26,auVar6,4); + auVar27 = NEON_smax(auVar27,auVar26,4); + pbVar12 = pbVar12 + 0x10; + } while (uVar11 < uVar14); + uVar11 = NEON_smaxv(auVar27,4); + iVar9 = iVar9 + iVar2; + if (iVar2 == iVar3) goto LAB_003927ec; + } + iVar2 = iVar9 + 1; + if ((int)uVar11 < (int)(uint)param_1[iVar9]) { + uVar11 = (uint)param_1[iVar9]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar3 = iVar9 + 2; + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + if (param_5 - iVar3 != 0 && iVar3 <= (int)param_5) { + iVar2 = iVar9 + 3; + if ((int)uVar11 < (int)(uint)param_1[iVar3]) { + uVar11 = (uint)param_1[iVar3]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar3 = iVar9 + 4; + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + /* try { // try from 003926e8 to 004926f7 has its CatchHandler @ 003927ec */ + if (param_5 - iVar3 != 0 && iVar3 <= (int)param_5) { + iVar2 = iVar9 + 5; + if ((int)uVar11 < (int)(uint)param_1[iVar3]) { + uVar11 = (uint)param_1[iVar3]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar3 = iVar9 + 6; + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + /* try { // try from 00392718 to 0049271b has its CatchHandler @ 003927f4 */ + if (param_5 - iVar3 != 0 && iVar3 <= (int)param_5) { + iVar2 = iVar9 + 7; + /* try { // try from 0039272c to 00492753 has its CatchHandler @ 00391f40 */ + if ((int)uVar11 < (int)(uint)param_1[iVar3]) { + uVar11 = (uint)param_1[iVar3]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + if (iVar9 + 8 < (int)param_5) { + iVar2 = iVar9 + 9; + if ((int)uVar11 < (int)(uint)param_1[iVar9 + 8]) { + uVar11 = (uint)param_1[iVar9 + 8]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar3 = iVar9 + 10; + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + if (param_5 - iVar3 != 0 && iVar3 <= (int)param_5) { + iVar2 = iVar9 + 0xb; + /* catch() { ... } // from try @ 0039257c with catch @ 00392788 */ + if ((int)uVar11 < (int)(uint)param_1[iVar3]) { + uVar11 = (uint)param_1[iVar3]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + /* try { // try from 00392798 to 0049279b has its CatchHandler @ 00391f40 */ + /* catch() { ... } // from try @ 003923fc with catch @ 0039279c */ + iVar3 = iVar9 + 0xc; + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + if (param_5 - iVar3 != 0 && iVar3 <= (int)param_5) { + iVar2 = iVar9 + 0xd; + if ((int)uVar11 < (int)(uint)param_1[iVar3]) { + uVar11 = (uint)param_1[iVar3]; + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar9 = iVar9 + 0xe; + if ((int)uVar11 < (int)(uint)param_1[iVar2]) { + uVar11 = (uint)param_1[iVar2]; + } + /* try { // try from 003927e8 to 004927eb has its CatchHandler @ 00391f40 */ + if ((param_5 - iVar9 != 0 && iVar9 <= (int)param_5) && + ((int)uVar11 < (int)(uint)param_1[iVar9])) { + uVar11 = (uint)param_1[iVar9]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003927ec: + /* catch() { ... } // from try @ 00391fc8 with catch @ 003927ec + catch() { ... } // from try @ 00392234 with catch @ 003927ec + catch() { ... } // from try @ 003924ac with catch @ 003927ec + catch() { ... } // from try @ 003926e8 with catch @ 003927ec */ + /* catch() { ... } // from try @ 00391ff8 with catch @ 003927f4 + catch() { ... } // from try @ 0039204c with catch @ 003927f4 + catch() { ... } // from try @ 003920e8 with catch @ 003927f4 + catch() { ... } // from try @ 003921c0 with catch @ 003927f4 + catch() { ... } // from try @ 003922d8 with catch @ 003927f4 + catch() { ... } // from try @ 00392404 with catch @ 003927f4 + catch() { ... } // from try @ 00392520 with catch @ 003927f4 + catch() { ... } // from try @ 00392718 with catch @ 003927f4 */ + if ((int)uVar25 < (int)uVar11) { + uVar25 = uVar11; + } + *param_3 = uVar25; + /* catch() { ... } // from try @ 00392044 with catch @ 003927fc */ + return 0; +} + + +================================================================== + +### FUNC 0039282c (1120 bytes) name=FUN_0039282c + +undefined8 FUN_0039282c(ushort *param_1,long param_2,uint *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + ushort uVar2; + undefined1 auVar3 [16]; + int iVar4; + uint uVar5; + uint uVar6; + uint uVar7; + ushort *puVar8; + ulong uVar9; + long lVar10; + ulong uVar11; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + uint uVar15; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + + uVar15 = *param_3; + uVar6 = (uint)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar10 = 0; + /* catch() { ... } // from try @ 00392890 with catch @ 00392844 + catch() { ... } // from try @ 00392a24 with catch @ 00392844 + catch() { ... } // from try @ 00392ab4 with catch @ 00392844 */ + do { + if ((*(char *)(param_2 + lVar10) != '\0') && (0 < (int)uVar6)) { + uVar5 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar6 < uVar5) { + uVar5 = uVar6; + } + if (uVar6 < 10) { + uVar5 = uVar6; + } + if (uVar5 == 0) { + uVar11 = 0; + } + else { + if ((int)uVar15 < (int)(uint)*param_1) { + uVar15 = (uint)*param_1; + } + if (uVar5 == 1) { +LAB_00392a50: + uVar11 = (ulong)uVar5; + } + else { + /* try { // try from 00392890 to 00492893 has its CatchHandler @ 00392844 */ + if ((int)uVar15 < (int)(uint)param_1[1]) { + uVar15 = (uint)param_1[1]; + } + if (uVar5 == 2) goto LAB_00392a50; + if ((int)uVar15 < (int)(uint)param_1[2]) { + uVar15 = (uint)param_1[2]; + } + if (uVar5 == 3) goto LAB_00392a50; + if ((int)uVar15 < (int)(uint)param_1[3]) { + uVar15 = (uint)param_1[3]; + } + if (uVar5 == 4) goto LAB_00392a50; + if ((int)uVar15 < (int)(uint)param_1[4]) { + uVar15 = (uint)param_1[4]; + } + if (uVar5 == 5) goto LAB_00392a50; + if ((int)uVar15 < (int)(uint)param_1[5]) { + uVar15 = (uint)param_1[5]; + } + if (uVar5 == 6) goto LAB_00392a50; + if ((int)uVar15 < (int)(uint)param_1[6]) { + uVar15 = (uint)param_1[6]; + } + if (uVar5 == 7) { + uVar11 = 7; + } + else { + if ((int)uVar15 < (int)(uint)param_1[7]) { + uVar15 = (uint)param_1[7]; + } + if (uVar5 == 9) { + /* try { // try from 00392918 to 0049291b has its CatchHandler @ 00392a90 */ + uVar11 = 9; + if ((int)uVar15 < (int)(uint)param_1[8]) { + uVar15 = (uint)param_1[8]; + } + } + else { + uVar11 = 8; + } + } + } + if (uVar6 == uVar5) goto LAB_00392a34; + } + /* try { // try from 0039293c to 0049293f has its CatchHandler @ 00392ab8 */ + uVar7 = ((uVar6 - uVar5) - 8 >> 3) + 1; + iVar4 = uVar7 * 8; + if (6 < (uVar6 - 1) - uVar5) { + auVar16._4_4_ = uVar15; + auVar16._0_4_ = uVar15; + auVar16._8_4_ = uVar15; + auVar16._12_4_ = uVar15; + uVar15 = 0; + puVar8 = param_1 + uVar5; + do { + uVar15 = uVar15 + 1; + auVar13._2_2_ = 0; + auVar13._0_2_ = puVar8[4]; + auVar12._2_2_ = 0; + auVar12._0_2_ = *puVar8; + auVar12._4_2_ = puVar8[1]; + auVar12._6_2_ = 0; + auVar12._8_2_ = puVar8[2]; + auVar12._10_2_ = 0; + auVar12._12_2_ = puVar8[3]; + auVar12._14_2_ = 0; + auVar13._4_2_ = puVar8[5]; + auVar13._6_2_ = 0; + auVar13._8_2_ = puVar8[6]; + auVar13._10_2_ = 0; + auVar13._12_2_ = puVar8[7]; + auVar13._14_2_ = 0; + auVar13 = NEON_smax(auVar13,auVar12,4); + auVar16 = NEON_smax(auVar16,auVar13,4); + puVar8 = puVar8 + 8; + } while (uVar15 < uVar7); + uVar15 = NEON_smaxv(auVar16,4); + uVar11 = (ulong)(uint)((int)uVar11 + iVar4); + if (uVar6 - uVar5 == iVar4) goto LAB_00392a34; + } + uVar9 = -(uVar11 >> 0x1f) & 0xfffffffe00000000 | uVar11 << 1; + iVar4 = (int)uVar11; + if ((int)uVar15 < (int)(uint)*(ushort *)((long)param_1 + uVar9)) { + uVar15 = (uint)*(ushort *)((long)param_1 + uVar9); + } + if (iVar4 + 1 < (int)uVar6) { + /* try { // try from 003929b0 to 004929b3 has its CatchHandler @ 00392a90 */ + uVar2 = *(ushort *)((long)param_1 + uVar9 + 2); + if ((int)uVar15 < (int)(uint)uVar2) { + uVar15 = (uint)uVar2; + } + if (iVar4 + 2 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 4); + if ((int)uVar15 < (int)(uint)uVar2) { + uVar15 = (uint)uVar2; + } + if (iVar4 + 3 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 6); + if ((int)uVar15 < (int)(uint)uVar2) { + uVar15 = (uint)uVar2; + } + if (iVar4 + 4 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 8); + if ((int)uVar15 < (int)(uint)uVar2) { + uVar15 = (uint)uVar2; + } + if (iVar4 + 5 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 10); + if ((int)uVar15 < (int)(uint)uVar2) { + uVar15 = (uint)uVar2; + } + /* try { // try from 00392a24 to 00492a43 has its CatchHandler @ 00392844 */ + if ((iVar4 + 6 < (int)uVar6) && + (uVar2 = *(ushort *)((long)param_1 + uVar9 + 0xc), + (int)uVar15 < (int)(uint)uVar2)) { + uVar15 = (uint)uVar2; + } + } + } + } + } + } + } +LAB_00392a34: + lVar10 = lVar10 + 1; + param_1 = (ushort *) + ((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1)); + } while ((int)lVar10 < param_4); + } + *param_3 = uVar15; + /* try { // try from 00392a4c to 00492a8b has its CatchHandler @ 00392a90 */ + return 0; + } + uVar6 = param_4 * uVar6; + uVar5 = 0; + if ((int)uVar6 < 1) goto LAB_00392c54; + uVar7 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar6 < uVar7) { + uVar7 = uVar6; + } + /* catch() { ... } // from try @ 00392918 with catch @ 00392a90 + catch() { ... } // from try @ 003929b0 with catch @ 00392a90 + catch() { ... } // from try @ 00392a4c with catch @ 00392a90 */ + uVar1 = uVar6; + if (((int)uVar6 < 10) || (uVar11 = 0, uVar1 = uVar7, uVar7 != 0)) { + uVar7 = uVar1; + uVar5 = (uint)*param_1; + if (uVar7 == 1) { +LAB_00392c68: + uVar11 = (ulong)uVar7; + } + else { + if (*param_1 < param_1[1]) { + uVar5 = (uint)param_1[1]; + } + /* try { // try from 00392ab4 to 00492ab7 has its CatchHandler @ 00392844 */ + /* catch() { ... } // from try @ 0039293c with catch @ 00392ab8 */ + if (uVar7 == 2) goto LAB_00392c68; + if (uVar5 < param_1[2]) { + uVar5 = (uint)param_1[2]; + } + if (uVar7 == 3) goto LAB_00392c68; + if (uVar5 < param_1[3]) { + uVar5 = (uint)param_1[3]; + } + /* catch() { ... } // from try @ 00392b24 with catch @ 00392ae0 + catch() { ... } // from try @ 00392bb8 with catch @ 00392ae0 + catch() { ... } // from try @ 00392c20 with catch @ 00392ae0 */ + if (uVar7 == 4) goto LAB_00392c68; + if (uVar5 < param_1[4]) { + uVar5 = (uint)param_1[4]; + } + if (uVar7 == 5) goto LAB_00392c68; + if (uVar5 < param_1[5]) { + uVar5 = (uint)param_1[5]; + } + if (uVar7 == 6) goto LAB_00392c68; + if (uVar5 < param_1[6]) { + uVar5 = (uint)param_1[6]; + } + if (uVar7 == 7) goto LAB_00392c68; + /* try { // try from 00392b24 to 00492b27 has its CatchHandler @ 00392ae0 */ + if (uVar5 < param_1[7]) { + uVar5 = (uint)param_1[7]; + } + if (uVar7 == 9) { + uVar11 = 9; + if (uVar5 < param_1[8]) { + uVar5 = (uint)param_1[8]; + } + } + else { + uVar11 = 8; + } + } + /* try { // try from 00392b44 to 00492b47 has its CatchHandler @ 00392bfc */ + if (uVar6 == uVar7) goto LAB_00392c54; + } + uVar1 = ((uVar6 - uVar7) - 8 >> 3) + 1; + iVar4 = uVar1 * 8; + if (6 < (uVar6 - 1) - uVar7) { + auVar14._4_4_ = uVar5; + auVar14._0_4_ = uVar5; + auVar14._8_4_ = uVar5; + auVar14._12_4_ = uVar5; + uVar5 = 0; + puVar8 = param_1 + uVar7; + do { + uVar5 = uVar5 + 1; + auVar3._2_2_ = 0; + auVar3._0_2_ = puVar8[4]; + auVar17._2_2_ = 0; + auVar17._0_2_ = *puVar8; + auVar17._4_2_ = puVar8[1]; + auVar17._6_2_ = 0; + auVar17._8_2_ = puVar8[2]; + auVar17._10_2_ = 0; + auVar17._12_2_ = puVar8[3]; + auVar17._14_2_ = 0; + auVar3._4_2_ = puVar8[5]; + auVar3._6_2_ = 0; + auVar3._8_2_ = puVar8[6]; + auVar3._10_2_ = 0; + auVar3._12_2_ = puVar8[7]; + auVar3._14_2_ = 0; + auVar16 = NEON_smax(auVar3,auVar17,4); + auVar14 = NEON_smax(auVar14,auVar16,4); + puVar8 = puVar8 + 8; + } while (uVar5 < uVar1); + uVar5 = NEON_smaxv(auVar14,4); + uVar11 = (ulong)(uint)((int)uVar11 + iVar4); + if (uVar6 - uVar7 == iVar4) goto LAB_00392c54; + } + uVar9 = -(uVar11 >> 0x1f) & 0xfffffffe00000000 | uVar11 << 1; + iVar4 = (int)uVar11; + /* try { // try from 00392bb8 to 00492bdf has its CatchHandler @ 00392ae0 */ + if ((int)uVar5 < (int)(uint)*(ushort *)((long)param_1 + uVar9)) { + uVar5 = (uint)*(ushort *)((long)param_1 + uVar9); + } + if (iVar4 + 1 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 2); + if ((int)uVar5 < (int)(uint)uVar2) { + uVar5 = (uint)uVar2; + } + if (iVar4 + 2 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 4); + if ((int)uVar5 < (int)(uint)uVar2) { + uVar5 = (uint)uVar2; + } + /* catch() { ... } // from try @ 00392b44 with catch @ 00392bfc */ + if (iVar4 + 3 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 6); + if ((int)uVar5 < (int)(uint)uVar2) { + uVar5 = (uint)uVar2; + } + if (iVar4 + 4 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 8); + /* try { // try from 00392c20 to 00492c23 has its CatchHandler @ 00392ae0 */ + /* catch() { ... } // from try @ 00392c58 with catch @ 00392c24 + catch() { ... } // from try @ 00392fac with catch @ 00392c24 + catch() { ... } // from try @ 003931d8 with catch @ 00392c24 */ + if ((int)uVar5 < (int)(uint)uVar2) { + uVar5 = (uint)uVar2; + } + if (iVar4 + 5 < (int)uVar6) { + uVar2 = *(ushort *)((long)param_1 + uVar9 + 10); + if ((int)uVar5 < (int)(uint)uVar2) { + uVar5 = (uint)uVar2; + } + if ((iVar4 + 6 < (int)uVar6) && + (uVar2 = *(ushort *)((long)param_1 + uVar9 + 0xc), (int)uVar5 < (int)(uint)uVar2)) { + uVar5 = (uint)uVar2; + } + } + } + } + } + } +LAB_00392c54: + /* try { // try from 00392c58 to 00492c5b has its CatchHandler @ 00392c24 */ + if ((int)uVar15 < (int)uVar5) { + uVar15 = uVar5; + } + *param_3 = uVar15; + return 0; +} + + +================================================================== + +### FUNC 00392c8c (872 bytes) name=FUN_00392c8c + +undefined8 FUN_00392c8c(uint *param_1,long param_2,int *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint *puVar6; + ulong uVar7; + long lVar8; + int iVar9; + ulong uVar10; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + int iVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + + iVar13 = *param_3; + uVar3 = (uint)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar8 = 0; + do { + /* try { // try from 00392e08 to 00492e3b has its CatchHandler @ 003931dc */ + if ((*(char *)(param_2 + lVar8) != '\0') && (0 < (int)uVar3)) { + uVar5 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + if (uVar3 < uVar5) { + uVar5 = uVar3; + } + if (uVar3 < 6) { + uVar5 = uVar3; + } + if (uVar5 == 0) { + uVar10 = 0; + } + else { + uVar1 = (int)*param_1 >> 0x1f; + iVar9 = (*param_1 ^ uVar1) - uVar1; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + /* try { // try from 00392cc0 to 00492cc3 has its CatchHandler @ 003931dc */ + if (uVar5 == 1) { +LAB_00392e38: + uVar10 = (ulong)uVar5; + } + else { + uVar1 = (int)param_1[1] >> 0x1f; + iVar9 = (param_1[1] ^ uVar1) - uVar1; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + if (uVar5 == 2) goto LAB_00392e38; + uVar1 = (int)param_1[2] >> 0x1f; + iVar9 = (param_1[2] ^ uVar1) - uVar1; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + if (uVar5 == 3) goto LAB_00392e38; + uVar1 = (int)param_1[3] >> 0x1f; + iVar9 = (param_1[3] ^ uVar1) - uVar1; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + if (uVar5 == 5) { + uVar1 = (int)param_1[4] >> 0x1f; + iVar9 = (param_1[4] ^ uVar1) - uVar1; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + uVar10 = 5; + } + else { + uVar10 = 4; + } + } + if (uVar3 == uVar5) goto LAB_00392df0; + } + uVar1 = ((uVar3 - uVar5) - 4 >> 2) + 1; + iVar9 = uVar1 * 4; + if (2 < (uVar3 - 1) - uVar5) { + auVar14._4_4_ = iVar13; + auVar14._0_4_ = iVar13; + auVar14._8_4_ = iVar13; + auVar14._12_4_ = iVar13; + uVar4 = 0; + /* try { // try from 00392d64 to 00492d67 has its CatchHandler @ 003931ec */ + puVar6 = param_1 + uVar5; + do { + uVar4 = uVar4 + 1; + auVar11._0_4_ = MP_INT_ABS(*puVar6); + auVar11._4_4_ = MP_INT_ABS(puVar6[1]); + auVar11._8_4_ = MP_INT_ABS(puVar6[2]); + auVar11._12_4_ = MP_INT_ABS(puVar6[3]); + auVar14 = NEON_smax(auVar14,auVar11,4); + puVar6 = puVar6 + 4; + } while (uVar4 < uVar1); + iVar13 = NEON_smaxv(auVar14,4); + uVar10 = (ulong)(uint)((int)uVar10 + iVar9); + if (uVar3 - uVar5 == iVar9) goto LAB_00392df0; + } + uVar7 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + uVar5 = (int)*(uint *)((long)param_1 + uVar7) >> 0x1f; + iVar9 = (*(uint *)((long)param_1 + uVar7) ^ uVar5) - uVar5; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + if ((int)uVar10 + 1 < (int)uVar3) { + uVar5 = *(uint *)((long)param_1 + uVar7 + 4); + uVar1 = (int)uVar5 >> 0x1f; + iVar9 = (uVar5 ^ uVar1) - uVar1; + if (iVar13 < iVar9) { + iVar13 = iVar9; + } + if (((int)uVar10 + 2 < (int)uVar3) && + (uVar5 = *(uint *)((long)param_1 + uVar7 + 8), uVar1 = (int)uVar5 >> 0x1f, + iVar9 = (uVar5 ^ uVar1) - uVar1, iVar13 < iVar9)) { + iVar13 = iVar9; + } + } + } +LAB_00392df0: + lVar8 = lVar8 + 1; + param_1 = (uint *)((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2 + )); + } while ((int)lVar8 < param_4); + } + goto LAB_00392fbc; + } + uVar3 = param_4 * uVar3; + iVar9 = 0; + if (0 < (int)uVar3) { + uVar5 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + if (uVar3 < uVar5) { + uVar5 = uVar3; + } + uVar1 = uVar3; + if (((int)uVar3 < 6) || (uVar10 = 0, uVar1 = uVar5, uVar5 != 0)) { + uVar5 = uVar1; + uVar1 = (int)*param_1 >> 0x1f; + iVar9 = (*param_1 ^ uVar1) - uVar1; + if (iVar9 < 0) { + iVar9 = 0; + } + /* try { // try from 00392e84 to 00492e87 has its CatchHandler @ 0039318c */ + if (uVar5 == 1) { +LAB_00392fd0: + uVar10 = (ulong)uVar5; + } + else { + uVar1 = (int)param_1[1] >> 0x1f; + /* try { // try from 00392e8c to 00492ec7 has its CatchHandler @ 003931dc */ + iVar2 = (param_1[1] ^ uVar1) - uVar1; + if (iVar9 < iVar2) { + iVar9 = iVar2; + } + if (uVar5 == 2) goto LAB_00392fd0; + uVar1 = (int)param_1[2] >> 0x1f; + iVar2 = (param_1[2] ^ uVar1) - uVar1; + if (iVar9 < iVar2) { + iVar9 = iVar2; + } + if (uVar5 == 3) goto LAB_00392fd0; + uVar1 = (int)param_1[3] >> 0x1f; + iVar2 = (param_1[3] ^ uVar1) - uVar1; + if (iVar9 < iVar2) { + iVar9 = iVar2; + } + if (uVar5 == 5) { + uVar10 = 5; + uVar1 = (int)param_1[4] >> 0x1f; + iVar2 = (param_1[4] ^ uVar1) - uVar1; + if (iVar9 < iVar2) { + iVar9 = iVar2; + } + } + else { + uVar10 = 4; + } + } + if (uVar3 == uVar5) goto LAB_00392fb4; + } + uVar1 = ((uVar3 - uVar5) - 4 >> 2) + 1; + iVar2 = uVar1 * 4; + if (2 < (uVar3 - 1) - uVar5) { + auVar12._4_4_ = iVar9; + auVar12._0_4_ = iVar9; + auVar12._8_4_ = iVar9; + auVar12._12_4_ = iVar9; + uVar4 = 0; + puVar6 = param_1 + uVar5; + do { + uVar4 = uVar4 + 1; + /* try { // try from 00392f38 to 00492f3b has its CatchHandler @ 003931e4 */ + auVar15._0_4_ = MP_INT_ABS(*puVar6); + auVar15._4_4_ = MP_INT_ABS(puVar6[1]); + auVar15._8_4_ = MP_INT_ABS(puVar6[2]); + auVar15._12_4_ = MP_INT_ABS(puVar6[3]); + auVar12 = NEON_smax(auVar12,auVar15,4); + puVar6 = puVar6 + 4; + } while (uVar4 < uVar1); + iVar9 = NEON_smaxv(auVar12,4); + uVar10 = (ulong)(uint)((int)uVar10 + iVar2); + if (uVar3 - uVar5 == iVar2) goto LAB_00392fb4; + } + uVar7 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + uVar5 = (int)*(uint *)((long)param_1 + uVar7) >> 0x1f; + iVar2 = (*(uint *)((long)param_1 + uVar7) ^ uVar5) - uVar5; + if (iVar9 < iVar2) { + iVar9 = iVar2; + } + if ((int)uVar10 + 1 < (int)uVar3) { + uVar5 = *(uint *)((long)param_1 + uVar7 + 4); + uVar1 = (int)uVar5 >> 0x1f; + iVar2 = (uVar5 ^ uVar1) - uVar1; + if (iVar9 < iVar2) { + iVar9 = iVar2; + } + /* try { // try from 00392fac to 00492ffb has its CatchHandler @ 00392c24 */ + if (((int)uVar10 + 2 < (int)uVar3) && + (uVar3 = *(uint *)((long)param_1 + uVar7 + 8), uVar5 = (int)uVar3 >> 0x1f, + iVar2 = (uVar3 ^ uVar5) - uVar5, iVar9 < iVar2)) { + iVar9 = iVar2; + } + } + } +LAB_00392fb4: + if (iVar13 < iVar9) { + iVar13 = iVar9; + } +LAB_00392fbc: + *param_3 = iVar13; + return 0; +} + + +================================================================== + +### FUNC 00392ff4 (176 bytes) name=FUN_00392ff4 + +undefined8 FUN_00392ff4(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + double dVar5; + double dVar6; + double dVar7; + + dVar5 = *param_3; + iVar2 = (int)param_5; + if (param_2 == 0) { + dVar6 = 0.0; + lVar4 = 0; + dVar7 = dVar6; + if (0 < param_4 * iVar2) { + do { + lVar3 = lVar4 * 8; + lVar4 = lVar4 + 1; + dVar6 = ABS(*(double *)(param_1 + lVar3)); + if (dVar6 <= dVar7) { + dVar6 = dVar7; + } + dVar7 = dVar6; + } while ((int)lVar4 < param_4 * iVar2); + } + if (dVar5 < dVar6) { + dVar5 = dVar6; + } + } + else if (0 < param_4) { + /* try { // try from 00393004 to 00493007 has its CatchHandler @ 003931e4 */ + lVar4 = 0; + do { + /* try { // try from 00393010 to 00493013 has its CatchHandler @ 003931ec */ + if ((*(char *)(param_2 + lVar4) != '\0') && (0 < iVar2)) { + /* try { // try from 0039301c to 0049317b has its CatchHandler @ 003931dc */ + lVar3 = 0; + dVar6 = dVar5; + do { + lVar1 = lVar3 * 8; + lVar3 = lVar3 + 1; + dVar5 = ABS(*(double *)(param_1 + lVar1)); + if (dVar5 <= dVar6) { + dVar5 = dVar6; + } + dVar6 = dVar5; + } while ((int)lVar3 < iVar2); + } + lVar4 = lVar4 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | (param_5 & 0xffffffff) << 3 + ); + } while ((int)lVar4 < param_4); + } + *param_3 = dVar5; + return 0; +} + + +================================================================== + +### FUNC 003930a4 (3264 bytes) name=FUN_003930a4 + +undefined8 +FUN_003930a4(byte *param_1,byte *param_2,long param_3,int *param_4,int param_5,uint param_6) + +{ + uint uVar1; + undefined1 auVar2 [16]; + undefined4 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined8 uVar7; + undefined4 uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined4 uVar11; + undefined8 uVar12; + undefined4 uVar13; + undefined4 uVar14; + undefined8 uVar15; + undefined4 uVar16; + ulong uVar17; + int iVar18; + int iVar19; + uint uVar20; + int iVar21; + uint uVar22; + byte *pbVar23; + int iVar24; + uint uVar25; + ulong uVar26; + long lVar27; + uint uVar28; + byte *pbVar29; + byte bVar30; + byte bVar31; + byte bVar32; + byte bVar33; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + undefined1 auVar38 [16]; + int iVar39; + undefined1 auVar40 [16]; + undefined1 auVar41 [16]; + + iVar39 = *param_4; + if (param_3 != 0) { + if (0 < param_5) { + uVar28 = -(int)param_1; + lVar27 = 0; + do { + if ((*(char *)(param_3 + lVar27) != '\0') && (0 < (int)param_6)) { + uVar22 = uVar28 & 0xf; + if (param_6 < (uVar28 & 0xf)) { + uVar22 = param_6; + } + if (param_6 < 0x11) { + uVar22 = param_6; + } + uVar25 = uVar22; + if (uVar22 != 0) { + uVar1 = (int)((uint)*param_1 - (uint)*param_2) >> 0x1f; + iVar24 = ((uint)*param_1 - (uint)*param_2 ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 1) { + uVar1 = (int)((uint)param_1[1] - (uint)param_2[1]) >> 0x1f; + iVar24 = ((uint)param_1[1] - (uint)param_2[1] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 2) { + uVar1 = (int)((uint)param_1[2] - (uint)param_2[2]) >> 0x1f; + iVar24 = ((uint)param_1[2] - (uint)param_2[2] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 3) { + uVar1 = (int)((uint)param_1[3] - (uint)param_2[3]) >> 0x1f; + iVar24 = ((uint)param_1[3] - (uint)param_2[3] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + /* catch() { ... } // from try @ 00392e84 with catch @ 0039318c */ + if (uVar22 != 4) { + uVar1 = (int)((uint)param_1[4] - (uint)param_2[4]) >> 0x1f; + iVar24 = ((uint)param_1[4] - (uint)param_2[4] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 5) { + uVar1 = (int)((uint)param_1[5] - (uint)param_2[5]) >> 0x1f; + iVar24 = ((uint)param_1[5] - (uint)param_2[5] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + /* try { // try from 003931d8 to 004931db has its CatchHandler @ 00392c24 */ + /* catch() { ... } // from try @ 00392cc0 with catch @ 003931dc + catch() { ... } // from try @ 00392e08 with catch @ 003931dc + catch() { ... } // from try @ 00392e8c with catch @ 003931dc + catch() { ... } // from try @ 0039301c with catch @ 003931dc */ + if (uVar22 != 6) { + /* catch() { ... } // from try @ 00392f38 with catch @ 003931e4 + catch() { ... } // from try @ 00393004 with catch @ 003931e4 */ + uVar1 = (int)((uint)param_1[6] - (uint)param_2[6]) >> 0x1f; + /* catch() { ... } // from try @ 00392d64 with catch @ 003931ec + catch() { ... } // from try @ 00393010 with catch @ 003931ec */ + iVar24 = ((uint)param_1[6] - (uint)param_2[6] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 == 7) { + uVar25 = 7; + } + else { + uVar1 = (int)((uint)param_1[7] - (uint)param_2[7]) >> 0x1f; + /* catch() { ... } // from try @ 00393240 with catch @ 00393214 + catch() { ... } // from try @ 0039341c with catch @ 00393214 + catch() { ... } // from try @ 003934bc with catch @ 00393214 */ + iVar24 = ((uint)param_1[7] - (uint)param_2[7] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 8) { + uVar1 = (int)((uint)param_1[8] - (uint)param_2[8]) >> 0x1f; + /* try { // try from 00393240 to 00493243 has its CatchHandler @ 00393214 */ + iVar24 = ((uint)param_1[8] - (uint)param_2[8] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 9) { + /* try { // try from 0039325c to 0049325f has its CatchHandler @ 003934c0 */ + uVar1 = (int)((uint)param_1[9] - (uint)param_2[9]) >> 0x1f; + iVar24 = ((uint)param_1[9] - (uint)param_2[9] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 10) { + uVar1 = (int)((uint)param_1[10] - (uint)param_2[10]) >> 0x1f; + /* try { // try from 0039328c to 0049328f has its CatchHandler @ 00393478 */ + iVar24 = ((uint)param_1[10] - (uint)param_2[10] ^ uVar1) - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 0xb) { + uVar1 = (int)((uint)param_1[0xb] - (uint)param_2[0xb]) >> 0x1f; + iVar24 = ((uint)param_1[0xb] - (uint)param_2[0xb] ^ uVar1) - uVar1 + ; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 0xc) { + /* try { // try from 003932e8 to 00493337 has its CatchHandler @ 00393478 */ + uVar1 = (int)((uint)param_1[0xc] - (uint)param_2[0xc]) >> 0x1f; + /* try { // try from 003932e0 to 004932e3 has its CatchHandler @ 003934c8 */ + iVar24 = ((uint)param_1[0xc] - (uint)param_2[0xc] ^ uVar1) - + uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 0xd) { + uVar1 = (int)((uint)param_1[0xd] - (uint)param_2[0xd]) >> 0x1f + ; + iVar24 = ((uint)param_1[0xd] - (uint)param_2[0xd] ^ uVar1) - + uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 != 0xe) { + uVar1 = (int)((uint)param_1[0xe] - (uint)param_2[0xe]) >> + 0x1f; + iVar24 = ((uint)param_1[0xe] - (uint)param_2[0xe] ^ uVar1) - + uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (uVar22 == 0x10) { + uVar1 = (int)((uint)param_1[0xf] - (uint)param_2[0xf]) >> + 0x1f; + iVar24 = ((uint)param_1[0xf] - (uint)param_2[0xf] ^ uVar1) + - uVar1; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + } + else { + uVar25 = 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (param_6 == uVar22) goto LAB_003936d4; + } + uVar1 = ((param_6 - uVar22) - 0x10 >> 4) + 1; + iVar24 = uVar1 * 0x10; + if (0xe < (param_6 - 1) - uVar22) { + auVar40._4_4_ = iVar39; + auVar40._0_4_ = iVar39; + auVar40._8_4_ = iVar39; + auVar40._12_4_ = iVar39; + uVar20 = 0; + pbVar23 = param_2 + uVar22; + pbVar29 = param_1 + uVar22; + do { + /* try { // try from 003933a8 to 004933ab has its CatchHandler @ 003934c0 */ + uVar7 = *(undefined8 *)(pbVar29 + 8); + uVar4 = *(undefined8 *)pbVar29; + uVar20 = uVar20 + 1; + uVar15 = *(undefined8 *)(pbVar23 + 8); + uVar12 = *(undefined8 *)pbVar23; + bVar30 = (byte)((ulong)uVar4 >> 8); + bVar31 = (byte)((ulong)uVar12 >> 8); + bVar32 = (byte)((ulong)uVar7 >> 0x28); + bVar33 = (byte)((ulong)uVar15 >> 0x28); + uVar3 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x20) - + (uint)(byte)((ulong)uVar12 >> 0x20)); + uVar5 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x28) - + (uint)(byte)((ulong)uVar12 >> 0x28)); + uVar6 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x30) - + (uint)(byte)((ulong)uVar12 >> 0x30)); + uVar8 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x38) - + (uint)(byte)((ulong)uVar12 >> 0x38)); + auVar36._0_4_ = + MP_INT_ABS((CONCAT12(bVar30,(ushort)(byte)uVar4) & 0xffff) - + (CONCAT12(bVar31,(ushort)(byte)uVar12) & 0xffff)); + auVar36._4_4_ = MP_INT_ABS((uint)bVar30 - (uint)bVar31); + auVar36._8_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x10) - + (uint)(byte)((ulong)uVar12 >> 0x10)); + auVar36._12_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x18) - + (uint)(byte)((ulong)uVar12 >> 0x18)); + auVar34._0_4_ = MP_INT_ABS((uint)(byte)uVar7 - (uint)(byte)uVar15); + auVar34._4_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 8) - (uint)(byte)((ulong)uVar15 >> 8)); + auVar34._8_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x10) - + (uint)(byte)((ulong)uVar15 >> 0x10)); + auVar34._12_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x18) - + (uint)(byte)((ulong)uVar15 >> 0x18)); + uVar11 = MP_INT_ABS((CONCAT12(bVar32,(ushort)(byte)((ulong)uVar7 >> 0x20)) & 0xffff) - + (CONCAT12(bVar33,(ushort)(byte)((ulong)uVar15 >> 0x20)) & 0xffff)) + ; + uVar13 = MP_INT_ABS((uint)bVar32 - (uint)bVar33); + uVar14 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x30) - + (uint)(byte)((ulong)uVar15 >> 0x30)); + uVar16 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x38) - + (uint)(byte)((ulong)uVar15 >> 0x38)); + auVar37._4_2_ = (short)uVar5; + auVar37._0_4_ = uVar3; + auVar37._6_2_ = (short)((uint)uVar5 >> 0x10); + auVar37._8_2_ = (short)uVar6; + auVar37._10_2_ = (short)((uint)uVar6 >> 0x10); + auVar37._12_2_ = (short)uVar8; + auVar37._14_2_ = (short)((uint)uVar8 >> 0x10); + auVar37 = NEON_smax(auVar37,auVar36,4); + auVar37 = NEON_smax(auVar37,auVar34,4); + auVar9._4_2_ = (short)uVar13; + auVar9._0_4_ = uVar11; + auVar9._6_2_ = (short)((uint)uVar13 >> 0x10); + auVar9._8_2_ = (short)uVar14; + auVar9._10_2_ = (short)((uint)uVar14 >> 0x10); + auVar9._12_2_ = (short)uVar16; + auVar9._14_2_ = (short)((uint)uVar16 >> 0x10); + auVar37 = NEON_smax(auVar37,auVar9,4); + auVar40 = NEON_smax(auVar40,auVar37,4); + pbVar23 = pbVar23 + 0x10; + pbVar29 = pbVar29 + 0x10; + } while (uVar20 < uVar1); + iVar39 = NEON_smaxv(auVar40,4); + uVar25 = uVar25 + iVar24; + if (param_6 - uVar22 == iVar24) goto LAB_003936d4; + } + iVar24 = uVar25 + 1; + /* try { // try from 0039341c to 00493437 has its CatchHandler @ 00393214 */ + uVar22 = (int)((uint)param_1[(int)uVar25] - (uint)param_2[(int)uVar25]) >> 0x1f; + iVar21 = ((uint)param_1[(int)uVar25] - (uint)param_2[(int)uVar25] ^ uVar22) - uVar22; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 2; + /* try { // try from 00393440 to 00493443 has its CatchHandler @ 003934c0 */ + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> 0x1f; + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 3; + /* catch() { ... } // from try @ 0039328c with catch @ 00393478 + catch() { ... } // from try @ 003932e8 with catch @ 00393478 */ + uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> 0x1f; + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 4; + /* catch() { ... } // from try @ 0039325c with catch @ 003934c0 + catch() { ... } // from try @ 003933a8 with catch @ 003934c0 + catch() { ... } // from try @ 00393440 with catch @ 003934c0 */ + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> 0x1f; + /* try { // try from 003934bc to 004934bf has its CatchHandler @ 00393214 */ + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + /* catch() { ... } // from try @ 003932e0 with catch @ 003934c8 */ + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 5; + /* catch() { ... } // from try @ 003934f0 with catch @ 003934dc + catch() { ... } // from try @ 0039357c with catch @ 003934dc + catch() { ... } // from try @ 00393594 with catch @ 003934dc */ + /* try { // try from 003934f0 to 00493557 has its CatchHandler @ 003934dc */ + uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> 0x1f; + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 6; + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> 0x1f; + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 7; + uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> 0x1f; + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 8; + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> 0x1f; + /* try { // try from 00393574 to 00493577 has its CatchHandler @ 00393584 */ + /* try { // try from 0039357c to 0049357f has its CatchHandler @ 003934dc */ + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22) - uVar22; + /* catch() { ... } // from try @ 00393574 with catch @ 00393584 */ + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (iVar21 < (int)param_6) { + /* try { // try from 00393594 to 00493597 has its CatchHandler @ 003934dc */ + iVar24 = uVar25 + 9; + /* catch() { ... } // from try @ 003935b0 with catch @ 00393598 + catch() { ... } // from try @ 00393604 with catch @ 00393598 + catch() { ... } // from try @ 00393634 with catch @ 00393598 */ + /* try { // try from 003935b0 to 004935df has its CatchHandler @ 00393598 */ + uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> 0x1f; + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar22) - uVar22 + ; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 10; + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> 0x1f; + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22) - + uVar22; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 0xb; + /* try { // try from 003935fc to 004935ff has its CatchHandler @ 00393624 */ + uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> 0x1f; + /* try { // try from 00393604 to 0049360f has its CatchHandler @ 00393598 */ + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar22) - + uVar22; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + /* catch() { ... } // from try @ 003935fc with catch @ 00393624 */ + iVar21 = uVar25 + 0xc; + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> + 0x1f; + /* try { // try from 00393634 to 00493637 has its CatchHandler @ 00393598 */ + /* catch() { ... } // from try @ 003936a8 with catch @ 00393638 + catch() { ... } // from try @ 0039373c with catch @ 00393638 + catch() { ... } // from try @ 00393754 with catch @ 00393638 */ + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22) - + uVar22; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 0xd; + uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> + 0x1f; + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar22) + - uVar22; + if (iVar39 < iVar21) { + iVar39 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 0xe; + uVar22 = (int)((uint)param_1[iVar24] - (uint)param_2[iVar24]) >> + 0x1f; + iVar24 = ((uint)param_1[iVar24] - (uint)param_2[iVar24] ^ uVar22 + ) - uVar22; + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + /* try { // try from 003936a8 to 00493717 has its CatchHandler @ 00393638 */ + if ((iVar21 < (int)param_6) && + (uVar22 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21] + ) >> 0x1f, + iVar24 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ + uVar22) - uVar22, iVar39 < iVar24)) { + iVar39 = iVar24; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003936d4: + lVar27 = lVar27 + 1; + param_1 = param_1 + (int)param_6; + param_2 = param_2 + (int)param_6; + uVar28 = uVar28 - param_6; + } while ((int)lVar27 < param_5); + } + *param_4 = iVar39; + return 0; + } + param_6 = param_5 * param_6; + iVar24 = 0; + if ((int)param_6 < 1) goto LAB_00393d24; + uVar28 = -(int)param_1 & 0xf; + if (param_6 < uVar28) { + uVar28 = param_6; + } + uVar26 = (ulong)uVar28; + /* try { // try from 00393734 to 00493737 has its CatchHandler @ 00393744 */ + if ((int)param_6 < 0x11) { + /* try { // try from 0039373c to 0049373f has its CatchHandler @ 00393638 */ + uVar26 = (ulong)param_6; +LAB_00393740: + /* catch() { ... } // from try @ 00393734 with catch @ 00393744 */ + uVar28 = (int)((uint)*param_1 - (uint)*param_2) >> 0x1f; + /* try { // try from 00393754 to 00493757 has its CatchHandler @ 00393638 */ + iVar24 = ((uint)*param_1 - (uint)*param_2 ^ uVar28) - uVar28; + /* catch() { ... } // from try @ 003937c0 with catch @ 00393758 + catch() { ... } // from try @ 00393844 with catch @ 00393758 + catch() { ... } // from try @ 0039388c with catch @ 00393758 */ + if (iVar24 < 0) { + iVar24 = 0; + } + iVar19 = (int)uVar26; + uVar17 = uVar26; + if (iVar19 != 1) { + uVar28 = (int)((uint)param_1[1] - (uint)param_2[1]) >> 0x1f; + iVar21 = ((uint)param_1[1] - (uint)param_2[1] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 2) { + uVar28 = (int)((uint)param_1[2] - (uint)param_2[2]) >> 0x1f; + iVar21 = ((uint)param_1[2] - (uint)param_2[2] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 3) { + /* try { // try from 003937c0 to 0049381f has its CatchHandler @ 00393758 */ + uVar28 = (int)((uint)param_1[3] - (uint)param_2[3]) >> 0x1f; + iVar21 = ((uint)param_1[3] - (uint)param_2[3] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 4) { + uVar28 = (int)((uint)param_1[4] - (uint)param_2[4]) >> 0x1f; + iVar21 = ((uint)param_1[4] - (uint)param_2[4] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 5) { + uVar28 = (int)((uint)param_1[5] - (uint)param_2[5]) >> 0x1f; + iVar21 = ((uint)param_1[5] - (uint)param_2[5] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 6) { + uVar28 = (int)((uint)param_1[6] - (uint)param_2[6]) >> 0x1f; + /* try { // try from 0039383c to 0049383f has its CatchHandler @ 0039387c */ + /* try { // try from 00393844 to 00493847 has its CatchHandler @ 00393758 */ + iVar21 = ((uint)param_1[6] - (uint)param_2[6] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 7) { + uVar28 = (int)((uint)param_1[7] - (uint)param_2[7]) >> 0x1f; + iVar21 = ((uint)param_1[7] - (uint)param_2[7] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + /* catch() { ... } // from try @ 0039383c with catch @ 0039387c */ + if (iVar19 != 8) { + uVar28 = (int)((uint)param_1[8] - (uint)param_2[8]) >> 0x1f; + /* try { // try from 0039388c to 0049388f has its CatchHandler @ 00393758 */ + /* catch() { ... } // from try @ 003938e0 with catch @ 00393890 + catch() { ... } // from try @ 00393908 with catch @ 00393890 + catch() { ... } // from try @ 0039393c with catch @ 00393890 */ + iVar21 = ((uint)param_1[8] - (uint)param_2[8] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 9) { + uVar28 = (int)((uint)param_1[9] - (uint)param_2[9]) >> 0x1f; + iVar21 = ((uint)param_1[9] - (uint)param_2[9] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 == 10) { + uVar17 = 10; + } + else { + uVar28 = (int)((uint)param_1[10] - (uint)param_2[10]) >> 0x1f; + /* try { // try from 003938e0 to 004938e3 has its CatchHandler @ 00393890 */ + iVar21 = ((uint)param_1[10] - (uint)param_2[10] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xb) { + /* try { // try from 00393900 to 00493903 has its CatchHandler @ 0039392c */ + uVar28 = (int)((uint)param_1[0xb] - (uint)param_2[0xb]) >> 0x1f; + /* try { // try from 00393908 to 0049390b has its CatchHandler @ 00393890 */ + iVar21 = ((uint)param_1[0xb] - (uint)param_2[0xb] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xc) { + uVar28 = (int)((uint)param_1[0xc] - (uint)param_2[0xc]) >> 0x1f; + /* catch() { ... } // from try @ 00393900 with catch @ 0039392c */ + iVar21 = ((uint)param_1[0xc] - (uint)param_2[0xc] ^ uVar28) - uVar28; + /* try { // try from 0039393c to 0049393f has its CatchHandler @ 00393890 */ + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + /* catch() { ... } // from try @ 003939a0 with catch @ 00393940 + catch() { ... } // from try @ 003939c8 with catch @ 00393940 + catch() { ... } // from try @ 00393a18 with catch @ 00393940 + catch() { ... } // from try @ 00393a68 with catch @ 00393940 + catch() { ... } // from try @ 00393a7c with catch @ 00393940 */ + if (iVar19 != 0xd) { + uVar28 = (int)((uint)param_1[0xd] - (uint)param_2[0xd]) >> 0x1f; + iVar21 = ((uint)param_1[0xd] - (uint)param_2[0xd] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xe) { + uVar28 = (int)((uint)param_1[0xe] - (uint)param_2[0xe]) >> 0x1f; + iVar21 = ((uint)param_1[0xe] - (uint)param_2[0xe] ^ uVar28) - uVar28 + ; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 == 0x10) { + /* try { // try from 003939a0 to 004939a3 has its CatchHandler @ 00393940 */ + uVar28 = (int)((uint)param_1[0xf] - (uint)param_2[0xf]) >> 0x1f; + iVar21 = ((uint)param_1[0xf] - (uint)param_2[0xf] ^ uVar28) - + uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + } + else { + uVar17 = 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar21 = (int)uVar17; + /* try { // try from 003939c0 to 004939c3 has its CatchHandler @ 00393a6c */ + if (param_6 - iVar19 == 0) goto LAB_00393d24; + } + else { + iVar21 = 0; + if (uVar28 != 0) goto LAB_00393740; + } + iVar18 = param_6 - (int)uVar26; + /* try { // try from 003939c8 to 004939f3 has its CatchHandler @ 00393940 */ + uVar28 = (iVar18 - 0x10U >> 4) + 1; + iVar19 = uVar28 * 0x10; + if (0xe < (param_6 - 1) - (int)uVar26) { + auVar41._4_4_ = iVar24; + auVar41._0_4_ = iVar24; + auVar41._8_4_ = iVar24; + auVar41._12_4_ = iVar24; + uVar22 = 0; + pbVar23 = param_2 + uVar26; + pbVar29 = param_1 + uVar26; + do { + uVar7 = *(undefined8 *)(pbVar29 + 8); + uVar4 = *(undefined8 *)pbVar29; + uVar22 = uVar22 + 1; + uVar15 = *(undefined8 *)(pbVar23 + 8); + uVar12 = *(undefined8 *)pbVar23; + bVar30 = (byte)((ulong)uVar4 >> 8); + bVar31 = (byte)((ulong)uVar12 >> 8); + /* try { // try from 00393a10 to 00493a13 has its CatchHandler @ 00393a58 */ + bVar32 = (byte)((ulong)uVar7 >> 0x28); + bVar33 = (byte)((ulong)uVar15 >> 0x28); + /* try { // try from 00393a18 to 00493a1b has its CatchHandler @ 00393940 */ + uVar3 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x20) - (uint)(byte)((ulong)uVar12 >> 0x20)); + uVar5 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x28) - (uint)(byte)((ulong)uVar12 >> 0x28)); + uVar6 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x30) - (uint)(byte)((ulong)uVar12 >> 0x30)); + uVar8 = MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x38) - (uint)(byte)((ulong)uVar12 >> 0x38)); + auVar38._0_4_ = + MP_INT_ABS((CONCAT12(bVar30,(ushort)(byte)uVar4) & 0xffff) - + (CONCAT12(bVar31,(ushort)(byte)uVar12) & 0xffff)); + auVar38._4_4_ = MP_INT_ABS((uint)bVar30 - (uint)bVar31); + auVar38._8_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x10) - (uint)(byte)((ulong)uVar12 >> 0x10)); + auVar38._12_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar4 >> 0x18) - (uint)(byte)((ulong)uVar12 >> 0x18)); + auVar35._0_4_ = MP_INT_ABS((uint)(byte)uVar7 - (uint)(byte)uVar15); + auVar35._4_4_ = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 8) - (uint)(byte)((ulong)uVar15 >> 8)) + ; + auVar35._8_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x10) - (uint)(byte)((ulong)uVar15 >> 0x10)); + auVar35._12_4_ = + MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x18) - (uint)(byte)((ulong)uVar15 >> 0x18)); + uVar11 = MP_INT_ABS((CONCAT12(bVar32,(ushort)(byte)((ulong)uVar7 >> 0x20)) & 0xffff) - + (CONCAT12(bVar33,(ushort)(byte)((ulong)uVar15 >> 0x20)) & 0xffff)); + uVar13 = MP_INT_ABS((uint)bVar32 - (uint)bVar33); + uVar14 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x30) - (uint)(byte)((ulong)uVar15 >> 0x30)); + uVar16 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x38) - (uint)(byte)((ulong)uVar15 >> 0x38)); + auVar2._4_2_ = (short)uVar5; + auVar2._0_4_ = uVar3; + auVar2._6_2_ = (short)((uint)uVar5 >> 0x10); + auVar2._8_2_ = (short)uVar6; + auVar2._10_2_ = (short)((uint)uVar6 >> 0x10); + auVar2._12_2_ = (short)uVar8; + auVar2._14_2_ = (short)((uint)uVar8 >> 0x10); + auVar40 = NEON_smax(auVar2,auVar38,4); + auVar40 = NEON_smax(auVar40,auVar35,4); + auVar10._4_2_ = (short)uVar13; + auVar10._0_4_ = uVar11; + auVar10._6_2_ = (short)((uint)uVar13 >> 0x10); + auVar10._8_2_ = (short)uVar14; + auVar10._10_2_ = (short)((uint)uVar14 >> 0x10); + auVar10._12_2_ = (short)uVar16; + auVar10._14_2_ = (short)((uint)uVar16 >> 0x10); + auVar40 = NEON_smax(auVar40,auVar10,4); + auVar41 = NEON_smax(auVar41,auVar40,4); + pbVar23 = pbVar23 + 0x10; + pbVar29 = pbVar29 + 0x10; + } while (uVar22 < uVar28); + iVar24 = NEON_smaxv(auVar41,4); + iVar21 = iVar21 + iVar19; + /* catch() { ... } // from try @ 00393a10 with catch @ 00393a58 */ + if (iVar19 == iVar18) goto LAB_00393d24; + } + iVar19 = iVar21 + 1; + /* try { // try from 00393a68 to 00493a6b has its CatchHandler @ 00393940 */ + /* catch() { ... } // from try @ 003939c0 with catch @ 00393a6c */ + /* catch() { ... } // from try @ 00393ae8 with catch @ 00393a80 + catch() { ... } // from try @ 00393bfc with catch @ 00393a80 + catch() { ... } // from try @ 00393c70 with catch @ 00393a80 */ + uVar28 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> 0x1f; + /* try { // try from 00393a7c to 00493a7f has its CatchHandler @ 00393940 */ + iVar18 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 2; + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 3; + uVar28 = (int)((uint)param_1[iVar18] - (uint)param_2[iVar18]) >> 0x1f; + iVar18 = ((uint)param_1[iVar18] - (uint)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + /* try { // try from 00393ae8 to 00493bd7 has its CatchHandler @ 00393a80 */ + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 4; + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 5; + uVar28 = (int)((uint)param_1[iVar18] - (uint)param_2[iVar18]) >> 0x1f; + iVar18 = ((uint)param_1[iVar18] - (uint)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 6; + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 7; + uVar28 = (int)((uint)param_1[iVar18] - (uint)param_2[iVar18]) >> 0x1f; + iVar18 = ((uint)param_1[iVar18] - (uint)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 8; + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (iVar18 < (int)param_6) { + iVar19 = iVar21 + 9; + uVar28 = (int)((uint)param_1[iVar18] - (uint)param_2[iVar18]) >> 0x1f; + /* try { // try from 00393bf4 to 00493bf7 has its CatchHandler @ 00393c60 */ + /* try { // try from 00393bfc to 00493c47 has its CatchHandler @ 00393a80 */ + iVar18 = ((uint)param_1[iVar18] - (uint)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 10; + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 0xb; + /* catch() { ... } // from try @ 00393bf4 with catch @ 00393c60 */ + uVar28 = (int)((uint)param_1[iVar18] - (uint)param_2[iVar18]) >> 0x1f; + iVar18 = ((uint)param_1[iVar18] - (uint)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + /* catch() { ... } // from try @ 00393ce4 with catch @ 00393c74 + catch() { ... } // from try @ 00393d38 with catch @ 00393c74 + catch() { ... } // from try @ 00393e0c with catch @ 00393c74 + catch() { ... } // from try @ 00393eec with catch @ 00393c74 + catch() { ... } // from try @ 00394218 with catch @ 00393c74 + catch() { ... } // from try @ 0039422c with catch @ 00393c74 + catch() { ... } // from try @ 00394240 with catch @ 00393c74 */ + iVar18 = iVar21 + 0xc; + /* try { // try from 00393c70 to 00493c73 has its CatchHandler @ 00393a80 */ + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 0xd; + uVar28 = (int)((uint)param_1[iVar18] - (uint)param_2[iVar18]) >> 0x1f; + iVar18 = ((uint)param_1[iVar18] - (uint)param_2[iVar18] ^ uVar28) - uVar28 + ; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar21 = iVar21 + 0xe; + uVar28 = (int)((uint)param_1[iVar19] - (uint)param_2[iVar19]) >> 0x1f; + /* try { // try from 00393ce4 to 00493ce7 has its CatchHandler @ 00393c74 */ + iVar19 = ((uint)param_1[iVar19] - (uint)param_2[iVar19] ^ uVar28) - + uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if ((param_6 - iVar21 != 0 && iVar21 <= (int)param_6) && + (uVar28 = (int)((uint)param_1[iVar21] - (uint)param_2[iVar21]) >> + 0x1f, + iVar21 = ((uint)param_1[iVar21] - (uint)param_2[iVar21] ^ uVar28) - + uVar28, iVar24 < iVar21)) { + iVar24 = iVar21; + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00393d24: + if (iVar39 < iVar24) { + iVar39 = iVar24; + } + /* try { // try from 00393d30 to 00493d33 has its CatchHandler @ 0039421c */ + *param_4 = iVar39; + return 0; +} + + +================================================================== + +### FUNC 00393d64 (2728 bytes) name=FUN_00393d64 + +undefined8 FUN_00393d64(byte *param_1,long param_2,int *param_3,int param_4,uint param_5) + +{ + ulong uVar1; + uint3 uVar2; + byte *pbVar3; + uint uVar63; + int iVar64; + uint uVar65; + uint uVar66; + uint uVar67; + long lVar68; + uint uVar69; + byte bVar70; + int iVar71; + int iVar72; + byte bVar75; + int iVar73; + int iVar74; + int iVar76; + int iVar77; + undefined8 uVar78; + byte bVar80; + undefined8 uVar79; + byte bVar81; + byte bVar82; + int iVar83; + int iVar84; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + byte *pbVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + + iVar64 = *param_3; + if (param_2 != 0) { + if (0 < param_4) { + uVar63 = -(int)param_1; + lVar68 = 0; + do { + if ((*(char *)(param_2 + lVar68) != '\0') && (0 < (int)param_5)) { + uVar65 = uVar63 & 0xf; + if (param_5 < (uVar63 & 0xf)) { + uVar65 = param_5; + } + if (param_5 < 0x12) { + uVar65 = param_5; + } + uVar66 = uVar65; + if (uVar65 != 0) { + iVar64 = iVar64 + (uint)*param_1; + /* try { // try from 00393e04 to 00493e07 has its CatchHandler @ 00394208 */ + /* try { // try from 00393e0c to 00493eab has its CatchHandler @ 00393c74 */ + if ((((uVar65 != 1) && (iVar64 = iVar64 + (uint)param_1[1], uVar65 != 2)) && + (iVar64 = iVar64 + (uint)param_1[2], uVar65 != 3)) && + (((iVar64 = iVar64 + (uint)param_1[3], uVar65 != 4 && + (iVar64 = iVar64 + (uint)param_1[4], uVar65 != 5)) && + (iVar64 = iVar64 + (uint)param_1[5], uVar65 != 6)))) { + iVar64 = iVar64 + (uint)param_1[6]; + if (uVar65 == 7) { + uVar66 = 7; + } + else { + iVar64 = iVar64 + (uint)param_1[7]; + if (((uVar65 != 8) && (iVar64 = iVar64 + (uint)param_1[8], uVar65 != 9)) && + ((iVar64 = iVar64 + (uint)param_1[9], uVar65 != 10 && + ((((iVar64 = iVar64 + (uint)param_1[10], uVar65 != 0xb && + (iVar64 = iVar64 + (uint)param_1[0xb], uVar65 != 0xc)) && + (iVar64 = iVar64 + (uint)param_1[0xc], uVar65 != 0xd)) && + ((iVar64 = iVar64 + (uint)param_1[0xd], uVar65 != 0xe && + (iVar64 = iVar64 + (uint)param_1[0xe], uVar65 != 0xf)))))))) { + iVar64 = iVar64 + (uint)param_1[0xf]; + if (uVar65 == 0x11) { + iVar64 = iVar64 + (uint)param_1[0x10]; + } + else { + uVar66 = 0x10; + } + } + } + } + if (param_5 == uVar65) goto LAB_00394068; + } + uVar67 = ((param_5 - uVar65) - 0x10 >> 4) + 1; + /* try { // try from 00393ee4 to 00493ee7 has its CatchHandler @ 00394230 */ + iVar83 = uVar67 * 0x10; + if (0xe < (param_5 - 1) - uVar65) { + /* try { // try from 00393eec to 004941fb has its CatchHandler @ 00393c74 */ + iVar71 = 0; + iVar72 = 0; + iVar73 = 0; + iVar76 = 0; + uVar69 = 0; + pbVar62 = param_1 + uVar65; + do { + uVar79 = *(undefined8 *)(pbVar62 + 8); + uVar78 = *(undefined8 *)pbVar62; + uVar69 = uVar69 + 1; + bVar70 = (byte)((ulong)uVar78 >> 8); + bVar80 = (byte)((ulong)uVar78 >> 0x28); + bVar75 = (byte)((ulong)uVar79 >> 8); + bVar81 = (byte)((ulong)uVar79 >> 0x28); + iVar71 = (CONCAT12(bVar81,(ushort)(byte)((ulong)uVar79 >> 0x20)) & 0xffff) + + ((CONCAT12(bVar75,(short)uVar79) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar80,(ushort)(byte)((ulong)uVar78 >> 0x20)) & 0xffff) + + (CONCAT12(bVar70,(ushort)(byte)uVar78) & 0xffff) + iVar71; + iVar72 = (uint)bVar81 + (uint)bVar75 + (uint)bVar80 + (uint)bVar70 + iVar72; + iVar73 = (uint)(byte)((ulong)uVar79 >> 0x30) + + (uint)(byte)((ulong)uVar79 >> 0x10) + + (uint)(byte)((ulong)uVar78 >> 0x30) + + (uint)(byte)((ulong)uVar78 >> 0x10) + iVar73; + iVar76 = (uint)(byte)((ulong)uVar79 >> 0x38) + + (uint)(byte)((ulong)uVar79 >> 0x18) + + (uint)(byte)((ulong)uVar78 >> 0x38) + + (uint)(byte)((ulong)uVar78 >> 0x18) + iVar76; + pbVar62 = pbVar62 + 0x10; + } while (uVar69 < uVar67); + uVar66 = uVar66 + iVar83; + iVar64 = iVar64 + iVar71 + iVar72 + iVar73 + iVar76; + if (param_5 - uVar65 == iVar83) goto LAB_00394068; + } + iVar64 = iVar64 + (uint)param_1[(int)uVar66]; + if ((int)(uVar66 + 1) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 1)]; + if ((int)(uVar66 + 2) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 2)]; + if ((int)(uVar66 + 3) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 3)]; + if ((int)(uVar66 + 4) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 4)]; + if ((int)(uVar66 + 5) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 5)]; + if ((int)(uVar66 + 6) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 6)]; + if ((int)(uVar66 + 7) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 7)]; + if ((int)(uVar66 + 8) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 8)]; + if ((int)(uVar66 + 9) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 9)]; + if ((int)(uVar66 + 10) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 10)]; + if ((int)(uVar66 + 0xb) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 0xb)]; + if ((int)(uVar66 + 0xc) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 0xc)]; + if ((int)(uVar66 + 0xd) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 0xd)]; + if ((int)(uVar66 + 0xe) < (int)param_5) { + iVar64 = iVar64 + (uint)param_1[(int)(uVar66 + 0xe)]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00394068: + lVar68 = lVar68 + 1; + param_1 = param_1 + (int)param_5; + uVar63 = uVar63 - param_5; + } while ((int)lVar68 < param_4); + } + *param_3 = iVar64; + return 0; + } + param_4 = param_4 * param_5; + iVar71 = param_4 + -3; + iVar83 = 0; + iVar72 = iVar83; + if (0 < iVar71) { + uVar63 = param_4 - 4U >> 2; + iVar72 = uVar63 + 1; + uVar63 = (uVar63 - 0xf >> 4) + 1; + if (param_4 - 4U < 0x3c) { + iVar73 = 0; +LAB_003941b0: + iVar76 = iVar73 + 4; + iVar83 = iVar83 + (uint)param_1[iVar73] + (uint)param_1[(long)iVar73 + 1] + + (uint)param_1[(long)iVar73 + 2] + (uint)param_1[(long)iVar73 + 3]; + if (iVar76 < iVar71) { + iVar84 = iVar73 + 8; + /* catch() { ... } // from try @ 00393e04 with catch @ 00394208 */ + iVar83 = iVar83 + (uint)param_1[iVar76] + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + (uint)param_1[(long)iVar76 + 3]; + if (iVar84 < iVar71) { + /* catch() { ... } // from try @ 00393d30 with catch @ 0039421c */ + iVar76 = iVar73 + 0xc; + /* try { // try from 00394218 to 0049421b has its CatchHandler @ 00393c74 */ + /* try { // try from 0039422c to 0049422f has its CatchHandler @ 00393c74 */ + /* catch() { ... } // from try @ 00393ee4 with catch @ 00394230 */ + /* try { // try from 00394240 to 00494243 has its CatchHandler @ 00393c74 */ + iVar83 = iVar83 + (uint)param_1[iVar84] + (uint)param_1[(long)iVar84 + 1] + + (uint)param_1[(long)iVar84 + 2] + (uint)param_1[(long)iVar84 + 3]; + if (iVar76 < iVar71) { + iVar84 = iVar73 + 0x10; + iVar83 = iVar83 + (uint)param_1[iVar76] + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + (uint)param_1[(long)iVar76 + 3]; + if (iVar84 < iVar71) { + iVar76 = iVar73 + 0x14; + /* catch() { ... } // from try @ 00394338 with catch @ 003942ac + catch() { ... } // from try @ 00394394 with catch @ 003942ac + catch() { ... } // from try @ 003943e8 with catch @ 003942ac + catch() { ... } // from try @ 00394430 with catch @ 003942ac + catch() { ... } // from try @ 0039445c with catch @ 003942ac + catch() { ... } // from try @ 00394470 with catch @ 003942ac + catch() { ... } // from try @ 00394484 with catch @ 003942ac */ + iVar83 = iVar83 + (uint)param_1[iVar84] + (uint)param_1[(long)iVar84 + 1] + + (uint)param_1[(long)iVar84 + 2] + (uint)param_1[(long)iVar84 + 3]; + if (iVar76 < iVar71) { + iVar84 = iVar73 + 0x18; + iVar83 = iVar83 + (uint)param_1[iVar76] + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + (uint)param_1[(long)iVar76 + 3]; + if (iVar84 < iVar71) { + iVar76 = iVar73 + 0x1c; + iVar83 = iVar83 + (uint)param_1[iVar84] + (uint)param_1[(long)iVar84 + 1] + + (uint)param_1[(long)iVar84 + 2] + + (uint)param_1[(long)iVar84 + 3]; + if (iVar76 < iVar71) { + iVar84 = iVar73 + 0x20; + /* try { // try from 00394338 to 0049433b has its CatchHandler @ 003942ac */ + iVar83 = iVar83 + (uint)param_1[iVar76] + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + + (uint)param_1[(long)iVar76 + 3]; + if (iVar84 < iVar71) { + iVar76 = iVar73 + 0x24; + iVar83 = iVar83 + (uint)param_1[iVar84] + (uint)param_1[(long)iVar84 + 1] + + (uint)param_1[(long)iVar84 + 2] + + (uint)param_1[(long)iVar84 + 3]; + if (iVar76 < iVar71) { + iVar84 = iVar73 + 0x28; + /* try { // try from 0039438c to 0049438f has its CatchHandler @ 00394460 */ + /* try { // try from 00394394 to 004943c3 has its CatchHandler @ 003942ac */ + iVar83 = iVar83 + (uint)param_1[iVar76] + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + + (uint)param_1[(long)iVar76 + 3]; + if (iVar84 < iVar71) { + iVar76 = iVar73 + 0x2c; + /* try { // try from 003943e0 to 004943e3 has its CatchHandler @ 00394474 */ + iVar83 = iVar83 + (uint)param_1[iVar84] + (uint)param_1[(long)iVar84 + 1] + + (uint)param_1[(long)iVar84 + 2] + + (uint)param_1[(long)iVar84 + 3]; + /* try { // try from 003943e8 to 0049440b has its CatchHandler @ 003942ac */ + if (iVar76 < iVar71) { + iVar84 = iVar73 + 0x30; + iVar83 = iVar83 + (uint)param_1[iVar76] + + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + + (uint)param_1[(long)iVar76 + 3]; + if (iVar84 < iVar71) { + iVar76 = iVar73 + 0x34; + /* try { // try from 00394428 to 0049442b has its CatchHandler @ 0039444c */ + /* try { // try from 00394430 to 00494433 has its CatchHandler @ 003942ac */ + /* catch() { ... } // from try @ 00394428 with catch @ 0039444c */ + iVar83 = iVar83 + (uint)param_1[iVar84] + + (uint)param_1[(long)iVar84 + 1] + + (uint)param_1[(long)iVar84 + 2] + + (uint)param_1[(long)iVar84 + 3]; + if (iVar76 < iVar71) { + iVar73 = iVar73 + 0x38; + /* try { // try from 0039445c to 0049445f has its CatchHandler @ 003942ac */ + /* catch() { ... } // from try @ 0039438c with catch @ 00394460 */ + /* try { // try from 00394470 to 00494473 has its CatchHandler @ 003942ac */ + /* catch() { ... } // from try @ 003943e0 with catch @ 00394474 */ + iVar83 = iVar83 + (uint)param_1[iVar76] + + (uint)param_1[(long)iVar76 + 1] + + (uint)param_1[(long)iVar76 + 2] + + (uint)param_1[(long)iVar76 + 3]; + /* try { // try from 00394484 to 00494487 has its CatchHandler @ 003942ac */ + if (iVar73 < iVar71) { + /* catch() { ... } // from try @ 003944c4 with catch @ 00394488 + catch() { ... } // from try @ 00394570 with catch @ 00394488 + catch() { ... } // from try @ 003945e4 with catch @ 00394488 + catch() { ... } // from try @ 00394630 with catch @ 00394488 + catch() { ... } // from try @ 00394648 with catch @ 00394488 + catch() { ... } // from try @ 0039465c with catch @ 00394488 + catch() { ... } // from try @ 00394670 with catch @ 00394488 */ + iVar83 = iVar83 + (uint)param_1[iVar73] + + (uint)param_1[(long)iVar73 + 1] + + (uint)param_1[(long)iVar73 + 2] + + (uint)param_1[(long)iVar73 + 3]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + else { + iVar83 = 0; + iVar73 = 0; + iVar76 = 0; + iVar84 = 0; + uVar65 = 0; + pbVar62 = param_1; + do { + bVar70 = *pbVar62; + pbVar3 = pbVar62 + 1; + pbVar4 = pbVar62 + 2; + pbVar5 = pbVar62 + 3; + pbVar6 = pbVar62 + 4; + pbVar7 = pbVar62 + 5; + pbVar8 = pbVar62 + 6; + pbVar9 = pbVar62 + 7; + pbVar10 = pbVar62 + 8; + pbVar11 = pbVar62 + 9; + pbVar12 = pbVar62 + 10; + pbVar13 = pbVar62 + 0xb; + pbVar14 = pbVar62 + 0xc; + pbVar15 = pbVar62 + 0xd; + pbVar16 = pbVar62 + 0xe; + pbVar17 = pbVar62 + 0xf; + pbVar18 = pbVar62 + 0x10; + pbVar19 = pbVar62 + 0x11; + pbVar20 = pbVar62 + 0x12; + pbVar21 = pbVar62 + 0x13; + pbVar22 = pbVar62 + 0x14; + pbVar23 = pbVar62 + 0x15; + pbVar24 = pbVar62 + 0x16; + pbVar25 = pbVar62 + 0x17; + pbVar26 = pbVar62 + 0x18; + pbVar27 = pbVar62 + 0x19; + pbVar28 = pbVar62 + 0x1a; + pbVar29 = pbVar62 + 0x1b; + pbVar30 = pbVar62 + 0x1c; + pbVar31 = pbVar62 + 0x1d; + pbVar32 = pbVar62 + 0x1e; + pbVar33 = pbVar62 + 0x1f; + pbVar34 = pbVar62 + 0x20; + pbVar35 = pbVar62 + 0x21; + pbVar36 = pbVar62 + 0x22; + pbVar37 = pbVar62 + 0x23; + bVar75 = pbVar62[0x24]; + bVar80 = pbVar62[0x25]; + bVar81 = pbVar62[0x26]; + bVar82 = pbVar62[0x27]; + pbVar38 = pbVar62 + 0x28; + pbVar39 = pbVar62 + 0x29; + pbVar40 = pbVar62 + 0x2a; + pbVar41 = pbVar62 + 0x2b; + pbVar42 = pbVar62 + 0x2c; + pbVar43 = pbVar62 + 0x2d; + pbVar44 = pbVar62 + 0x2e; + pbVar45 = pbVar62 + 0x2f; + pbVar46 = pbVar62 + 0x30; + pbVar47 = pbVar62 + 0x31; + pbVar48 = pbVar62 + 0x32; + pbVar49 = pbVar62 + 0x33; + pbVar50 = pbVar62 + 0x34; + pbVar51 = pbVar62 + 0x35; + pbVar52 = pbVar62 + 0x36; + pbVar53 = pbVar62 + 0x37; + pbVar54 = pbVar62 + 0x38; + pbVar55 = pbVar62 + 0x39; + pbVar56 = pbVar62 + 0x3a; + pbVar57 = pbVar62 + 0x3b; + pbVar58 = pbVar62 + 0x3c; + pbVar59 = pbVar62 + 0x3d; + pbVar60 = pbVar62 + 0x3e; + pbVar61 = pbVar62 + 0x3f; + pbVar62 = pbVar62 + 0x40; + uVar65 = uVar65 + 1; + uVar2 = CONCAT12(*pbVar11,CONCAT11(*pbVar7,*pbVar3)); + iVar83 = (CONCAT12(*pbVar51,(ushort)*pbVar47) & 0xffff) + + (CONCAT12(*pbVar50,(ushort)*pbVar46) & 0xffff) + + (CONCAT12(*pbVar52,(ushort)*pbVar48) & 0xffff) + + (CONCAT12(*pbVar53,(ushort)*pbVar49) & 0xffff) + + ((CONCAT12(bVar80,CONCAT11(bVar80,*pbVar35)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar75,CONCAT11(bVar75,*pbVar34)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar81,CONCAT11(bVar81,*pbVar36)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar82,CONCAT11(bVar82,*pbVar37)) & 0xff00ff) & 0xffff) + + (CONCAT12(*pbVar23,(ushort)*pbVar19) & 0xffff) + + (CONCAT12(*pbVar22,(ushort)*pbVar18) & 0xffff) + + (CONCAT12(*pbVar24,(ushort)*pbVar20) & 0xffff) + + (CONCAT12(*pbVar25,(ushort)*pbVar21) & 0xffff) + + (uVar2 & 0xff) + (CONCAT12(*pbVar6,(ushort)bVar70) & 0xffff) + + (CONCAT12(*pbVar8,(ushort)*pbVar4) & 0xffff) + + (CONCAT12(*pbVar9,(ushort)*pbVar5) & 0xffff) + iVar83; + iVar73 = (uint)*pbVar51 + (uint)*pbVar50 + (uint)*pbVar52 + (uint)*pbVar53 + + (uint)bVar80 + (uint)bVar75 + (uint)bVar81 + (uint)bVar82 + + (uint)*pbVar23 + (uint)*pbVar22 + (uint)*pbVar24 + (uint)*pbVar25 + + ((uVar2 & 0xff00) >> 8) + (uint)*pbVar6 + (uint)*pbVar8 + (uint)*pbVar9 + iVar73; + iVar76 = (uint)*pbVar55 + (uint)*pbVar54 + (uint)*pbVar56 + (uint)*pbVar57 + + (uint)*pbVar39 + (uint)*pbVar38 + (uint)*pbVar40 + (uint)*pbVar41 + + (uint)*pbVar27 + (uint)*pbVar26 + (uint)*pbVar28 + (uint)*pbVar29 + + (uint)*pbVar11 + (CONCAT12(*pbVar14,(ushort)*pbVar10) & 0xffff) + (uint)*pbVar12 + + (uint)*pbVar13 + iVar76; + iVar84 = (uint)*pbVar59 + (uint)*pbVar58 + (uint)*pbVar60 + (uint)*pbVar61 + + (uint)*pbVar43 + (uint)*pbVar42 + (uint)*pbVar44 + (uint)*pbVar45 + + (uint)*pbVar31 + (uint)*pbVar30 + (uint)*pbVar32 + (uint)*pbVar33 + + (uint)*pbVar15 + (uint)*pbVar14 + (uint)*pbVar16 + (uint)*pbVar17 + iVar84; + } while (uVar65 < uVar63); + iVar83 = iVar83 + iVar73 + iVar76 + iVar84; + iVar73 = uVar63 * 0x40; + if (iVar72 != uVar63 * 0x10) goto LAB_003941b0; + } + iVar72 = iVar72 * 4; + } + if (iVar72 < param_4) { + uVar65 = param_4 - iVar72; + /* try { // try from 003944c4 to 0049453b has its CatchHandler @ 00394488 */ + uVar63 = -(int)(param_1 + iVar72) & 0xf; + uVar1 = (ulong)uVar63; + if (uVar65 < uVar63) { + uVar1 = (ulong)uVar65; + } + if (uVar65 < 0x12) { + uVar1 = (ulong)uVar65; + } + uVar63 = (uint)uVar1; + iVar71 = iVar72; + if (uVar63 != 0) { + iVar71 = iVar72 + 1; + iVar83 = iVar83 + (uint)param_1[iVar72]; + if (uVar63 != 1) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 2; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 2) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 3; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 3) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 4; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 4) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 5; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 5) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 6; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 6) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 7; + /* try { // try from 00394568 to 0049456b has its CatchHandler @ 00394660 */ + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 7) { + /* try { // try from 00394570 to 004945bf has its CatchHandler @ 00394488 */ + lVar68 = (long)iVar71; + iVar71 = iVar72 + 8; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 8) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 9; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 9) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 10; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 10) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 0xb; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 0xb) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 0xc; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 0xc) { + lVar68 = (long)iVar71; + /* try { // try from 003945dc to 004945df has its CatchHandler @ 0039464c */ + iVar71 = iVar72 + 0xd; + iVar83 = iVar83 + (uint)param_1[lVar68]; + /* try { // try from 003945e4 to 0049460b has its CatchHandler @ 00394488 */ + if (uVar63 != 0xd) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 0xe; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 0xe) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 0xf; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 != 0xf) { + lVar68 = (long)iVar71; + iVar71 = iVar72 + 0x10; + iVar83 = iVar83 + (uint)param_1[lVar68]; + if (uVar63 == 0x11) { + lVar68 = (long)iVar71; + /* try { // try from 00394628 to 0049462b has its CatchHandler @ 00394638 */ + iVar71 = iVar72 + 0x11; + iVar83 = iVar83 + (uint)param_1[lVar68]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + /* try { // try from 00394630 to 00494633 has its CatchHandler @ 00394488 */ + if (uVar63 == uVar65) goto LAB_003947dc; + } + /* catch() { ... } // from try @ 00394628 with catch @ 00394638 */ + /* try { // try from 00394648 to 0049464b has its CatchHandler @ 00394488 */ + /* catch() { ... } // from try @ 003945dc with catch @ 0039464c */ + uVar66 = ((uVar65 - uVar63) - 0x10 >> 4) + 1; + iVar73 = uVar66 * 0x10; + if (0xe < (uVar65 - 1) - uVar63) { + /* try { // try from 0039465c to 0049465f has its CatchHandler @ 00394488 */ + iVar76 = 0; + iVar84 = 0; + iVar74 = 0; + iVar77 = 0; + /* catch() { ... } // from try @ 00394568 with catch @ 00394660 */ + uVar67 = 0; + pbVar62 = param_1 + uVar1 + (long)iVar72; + do { + uVar79 = *(undefined8 *)(pbVar62 + 8); + uVar78 = *(undefined8 *)pbVar62; + /* try { // try from 00394670 to 00494673 has its CatchHandler @ 00394488 */ + uVar67 = uVar67 + 1; + /* catch() { ... } // from try @ 003947c4 with catch @ 00394674 + catch() { ... } // from try @ 00394850 with catch @ 00394674 + catch() { ... } // from try @ 003949a0 with catch @ 00394674 + catch() { ... } // from try @ 00394a88 with catch @ 00394674 + catch() { ... } // from try @ 00394a9c with catch @ 00394674 */ + bVar70 = (byte)((ulong)uVar78 >> 8); + bVar80 = (byte)((ulong)uVar78 >> 0x28); + bVar75 = (byte)((ulong)uVar79 >> 8); + bVar81 = (byte)((ulong)uVar79 >> 0x28); + iVar76 = (CONCAT12(bVar81,(ushort)(byte)((ulong)uVar79 >> 0x20)) & 0xffff) + + ((CONCAT12(bVar75,(short)uVar79) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar80,(ushort)(byte)((ulong)uVar78 >> 0x20)) & 0xffff) + + (CONCAT12(bVar70,(ushort)(byte)uVar78) & 0xffff) + iVar76; + iVar84 = (uint)bVar81 + (uint)bVar75 + (uint)bVar80 + (uint)bVar70 + iVar84; + iVar74 = (uint)(byte)((ulong)uVar79 >> 0x30) + + (uint)(byte)((ulong)uVar79 >> 0x10) + + (uint)(byte)((ulong)uVar78 >> 0x30) + (uint)(byte)((ulong)uVar78 >> 0x10) + iVar74; + iVar77 = (uint)(byte)((ulong)uVar79 >> 0x38) + + (uint)(byte)((ulong)uVar79 >> 0x18) + + (uint)(byte)((ulong)uVar78 >> 0x38) + (uint)(byte)((ulong)uVar78 >> 0x18) + iVar77; + pbVar62 = pbVar62 + 0x10; + } while (uVar67 < uVar66); + iVar71 = iVar71 + iVar73; + iVar83 = iVar83 + iVar76 + iVar84 + iVar74 + iVar77; + if (iVar73 == uVar65 - uVar63) goto LAB_003947dc; + } + iVar83 = iVar83 + (uint)param_1[iVar71]; + if (iVar71 + 1 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 1]; + if (iVar71 + 2 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 2]; + if (iVar71 + 3 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 3]; + if (iVar71 + 4 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 4]; + if (iVar71 + 5 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 5]; + if (iVar71 + 6 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 6]; + if (iVar71 + 7 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 7]; + if (iVar71 + 8 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 8]; + if (iVar71 + 9 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 9]; + if (iVar71 + 10 < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 10]; + if (iVar71 + 0xb < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 0xb]; + if (iVar71 + 0xc < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 0xc]; + if (iVar71 + 0xd < param_4) { + /* try { // try from 003947c4 to 0049482b has its CatchHandler @ 00394674 */ + iVar83 = iVar83 + (uint)param_1[iVar71 + 0xd]; + if (iVar71 + 0xe < param_4) { + iVar83 = iVar83 + (uint)param_1[iVar71 + 0xe]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003947dc: + *param_3 = iVar64 + iVar83; + return 0; +} + + +================================================================== + +### FUNC 0039480c (3724 bytes) name=FUN_0039480c + +undefined8 +FUN_0039480c(byte *param_1,byte *param_2,long param_3,int *param_4,int param_5,uint param_6) + +{ + ulong uVar1; + uint3 uVar2; + uint3 uVar3; + byte *pbVar4; + byte *pbVar63; + uint uVar122; + uint uVar123; + int iVar124; + int iVar125; + uint uVar126; + uint uVar127; + long lVar128; + uint uVar129; + byte bVar130; + byte bVar131; + byte bVar134; + int iVar132; + byte bVar135; + int iVar136; + undefined8 uVar133; + byte bVar139; + int iVar137; + byte bVar140; + int iVar141; + undefined8 uVar138; + byte bVar143; + int iVar142; + int iVar144; + int iVar145; + int iVar146; + byte bVar151; + int iVar147; + byte bVar152; + int iVar148; + int iVar149; + int iVar150; + int iVar153; + int iVar154; + int iVar155; + int iVar156; + int iVar157; + int iVar158; + int iVar159; + int iVar160; + byte bVar163; + int iVar161; + byte bVar164; + int iVar162; + int iVar165; + int iVar166; + int iVar167; + int iVar168; + int iVar169; + int iVar170; + byte bVar173; + int iVar171; + int iVar172; + int iVar174; + int iVar175; + int iVar176; + int iVar177; + int iVar178; + int iVar179; + int iVar180; + int iVar181; + int iVar182; + int iVar183; + int iVar184; + int iVar185; + int iVar186; + int iVar187; + int iVar188; + undefined8 uVar189; + int iVar190; + int iVar191; + undefined8 uVar192; + int iVar193; + int iVar194; + int iVar195; + int iVar196; + int iVar197; + int iVar198; + int iVar199; + int iVar200; + int iVar201; + int iVar202; + int iVar203; + int iVar204; + int iVar205; + int iVar206; + int iVar207; + int iVar208; + int iVar209; + int iVar210; + int iVar211; + int iVar212; + int iVar213; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + byte *pbVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + byte *pbVar64; + byte *pbVar65; + byte *pbVar66; + byte *pbVar67; + byte *pbVar68; + byte *pbVar69; + byte *pbVar70; + byte *pbVar71; + byte *pbVar72; + byte *pbVar73; + byte *pbVar74; + byte *pbVar75; + byte *pbVar76; + byte *pbVar77; + byte *pbVar78; + byte *pbVar79; + byte *pbVar80; + byte *pbVar81; + byte *pbVar82; + byte *pbVar83; + byte *pbVar84; + byte *pbVar85; + byte *pbVar86; + byte *pbVar87; + byte *pbVar88; + byte *pbVar89; + byte *pbVar90; + byte *pbVar91; + byte *pbVar92; + byte *pbVar93; + byte *pbVar94; + byte *pbVar95; + byte *pbVar96; + byte *pbVar97; + byte *pbVar98; + byte *pbVar99; + byte *pbVar100; + byte *pbVar101; + byte *pbVar102; + byte *pbVar103; + byte *pbVar104; + byte *pbVar105; + byte *pbVar106; + byte *pbVar107; + byte *pbVar108; + byte *pbVar109; + byte *pbVar110; + byte *pbVar111; + byte *pbVar112; + byte *pbVar113; + byte *pbVar114; + byte *pbVar115; + byte *pbVar116; + byte *pbVar117; + byte *pbVar118; + byte *pbVar119; + byte *pbVar120; + byte *pbVar121; + + iVar124 = *param_4; + if (param_3 != 0) { + if (0 < param_5) { + uVar123 = -(int)param_1; + lVar128 = 0; + do { + if ((*(char *)(param_3 + lVar128) != '\0') && (0 < (int)param_6)) { + /* try { // try from 00394848 to 0049484b has its CatchHandler @ 00394a78 */ + uVar122 = uVar123 & 0xf; + if (param_6 < (uVar123 & 0xf)) { + uVar122 = param_6; + } + /* try { // try from 00394850 to 0049494f has its CatchHandler @ 00394674 */ + if (param_6 < 0x11) { + uVar122 = param_6; + } + uVar126 = uVar122; + if (uVar122 != 0) { + uVar127 = (int)((uint)*param_1 - (uint)*param_2) >> 0x1f; + iVar124 = iVar124 + (((uint)*param_1 - (uint)*param_2 ^ uVar127) - uVar127); + if ((((uVar122 != 1) && + (uVar127 = (int)((uint)param_1[1] - (uint)param_2[1]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[1] - (uint)param_2[1] ^ uVar127) - uVar127), + uVar122 != 2)) && + (uVar127 = (int)((uint)param_1[2] - (uint)param_2[2]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[2] - (uint)param_2[2] ^ uVar127) - uVar127), + uVar122 != 3)) && + (((uVar127 = (int)((uint)param_1[3] - (uint)param_2[3]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[3] - (uint)param_2[3] ^ uVar127) - uVar127), + uVar122 != 4 && + (uVar127 = (int)((uint)param_1[4] - (uint)param_2[4]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[4] - (uint)param_2[4] ^ uVar127) - uVar127), + uVar122 != 5)) && + (uVar127 = (int)((uint)param_1[5] - (uint)param_2[5]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[5] - (uint)param_2[5] ^ uVar127) - uVar127), + uVar122 != 6)))) { + uVar127 = (int)((uint)param_1[6] - (uint)param_2[6]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[6] - (uint)param_2[6] ^ uVar127) - uVar127); + if (uVar122 == 7) { + uVar126 = 7; + } + else { + uVar127 = (int)((uint)param_1[7] - (uint)param_2[7]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[7] - (uint)param_2[7] ^ uVar127) - uVar127); + /* try { // try from 00394998 to 0049499b has its CatchHandler @ 00394a8c */ + /* try { // try from 003949a0 to 00494a5f has its CatchHandler @ 00394674 */ + if (((uVar122 != 8) && + (uVar127 = (int)((uint)param_1[8] - (uint)param_2[8]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[8] - (uint)param_2[8] ^ uVar127) - uVar127), + uVar122 != 9)) && + (((uVar127 = (int)((uint)param_1[9] - (uint)param_2[9]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[9] - (uint)param_2[9] ^ uVar127) - uVar127) + , uVar122 != 10 && + (((uVar127 = (int)((uint)param_1[10] - (uint)param_2[10]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[10] - (uint)param_2[10] ^ uVar127) - + uVar127), uVar122 != 0xb && + (uVar127 = (int)((uint)param_1[0xb] - (uint)param_2[0xb]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[0xb] - (uint)param_2[0xb] ^ uVar127) - + uVar127), uVar122 != 0xc)) && + (uVar127 = (int)((uint)param_1[0xc] - (uint)param_2[0xc]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[0xc] - (uint)param_2[0xc] ^ uVar127) - + uVar127), uVar122 != 0xd)))) && + (uVar127 = (int)((uint)param_1[0xd] - (uint)param_2[0xd]) >> 0x1f, + iVar124 = iVar124 + (((uint)param_1[0xd] - (uint)param_2[0xd] ^ uVar127) - + uVar127), uVar122 != 0xe)))) { + uVar127 = (int)((uint)param_1[0xe] - (uint)param_2[0xe]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[0xe] - (uint)param_2[0xe] ^ uVar127) - uVar127 + ); + if (uVar122 == 0x10) { + /* catch() { ... } // from try @ 00394848 with catch @ 00394a78 */ + uVar127 = (int)((uint)param_1[0xf] - (uint)param_2[0xf]) >> 0x1f; + /* try { // try from 00394a88 to 00494a8b has its CatchHandler @ 00394674 */ + /* catch() { ... } // from try @ 00394998 with catch @ 00394a8c */ + iVar124 = iVar124 + (((uint)param_1[0xf] - (uint)param_2[0xf] ^ uVar127) - + uVar127); + } + else { + uVar126 = 0xf; + } + } + } + } + /* try { // try from 00394a9c to 00494a9f has its CatchHandler @ 00394674 */ + if (param_6 == uVar122) goto LAB_00394dc8; + } + uVar127 = ((param_6 - uVar122) - 0x10 >> 4) + 1; + iVar125 = uVar127 * 0x10; + if (0xe < (param_6 - 1) - uVar122) { + iVar132 = 0; + iVar136 = 0; + iVar137 = 0; + iVar141 = 0; + uVar129 = 0; + pbVar121 = param_2 + uVar122; + pbVar62 = param_1 + uVar122; + do { + uVar138 = *(undefined8 *)(pbVar62 + 8); + uVar133 = *(undefined8 *)pbVar62; + uVar129 = uVar129 + 1; + uVar192 = *(undefined8 *)(pbVar121 + 8); + uVar189 = *(undefined8 *)pbVar121; + bVar130 = (byte)((ulong)uVar133 >> 8); + bVar140 = (byte)((ulong)uVar133 >> 0x28); + bVar131 = (byte)((ulong)uVar189 >> 8); + bVar139 = (byte)((ulong)uVar189 >> 0x18); + bVar143 = (byte)((ulong)uVar189 >> 0x28); + bVar134 = (byte)((ulong)uVar138 >> 8); + bVar151 = (byte)((ulong)uVar138 >> 0x28); + bVar135 = (byte)((ulong)uVar192 >> 8); + bVar152 = (byte)((ulong)uVar192 >> 0x28); + iVar176 = MP_INT_ABS(((CONCAT12(bVar130,(short)uVar133) & 0xff00ff) & 0xffff) - + (CONCAT12(bVar131,(ushort)(byte)uVar189) & 0xffff)); + iVar179 = MP_INT_ABS((uint)bVar130 - (uint)bVar131); + iVar182 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x10) - + (CONCAT12(bVar139,(ushort)(byte)((ulong)uVar189 >> 0x10)) & + 0xffff)); + iVar185 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x18) - (uint)bVar139); + iVar157 = MP_INT_ABS((CONCAT12(bVar140,(ushort)(byte)((ulong)uVar133 >> 0x20)) & + 0xffff) - (CONCAT12(bVar143,(ushort)(byte)((ulong)uVar189 >> 0x20 + )) & 0xffff)); + iVar159 = MP_INT_ABS((uint)bVar140 - (uint)bVar143); + iVar161 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x30) - + (uint)(byte)((ulong)uVar189 >> 0x30)); + iVar165 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x38) - + (uint)(byte)((ulong)uVar189 >> 0x38)); + iVar167 = MP_INT_ABS(((CONCAT12(bVar134,(short)uVar138) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar135,(short)uVar192) & 0xff00ff) & 0xffff)); + iVar169 = MP_INT_ABS((uint)bVar134 - (uint)bVar135); + iVar171 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x10) - + (uint)(byte)((ulong)uVar192 >> 0x10)); + iVar174 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x18) - + (uint)(byte)((ulong)uVar192 >> 0x18)); + iVar142 = MP_INT_ABS((CONCAT12(bVar151,(ushort)(byte)((ulong)uVar138 >> 0x20)) & + 0xffff) - (CONCAT12(bVar152,(ushort)(byte)((ulong)uVar192 >> 0x20 + )) & 0xffff)); + iVar144 = MP_INT_ABS((uint)bVar151 - (uint)bVar152); + iVar147 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x30) - + (uint)(byte)((ulong)uVar192 >> 0x30)); + iVar153 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x38) - + (uint)(byte)((ulong)uVar192 >> 0x38)); + iVar132 = iVar142 + iVar167 + iVar157 + iVar176 + iVar132; + iVar136 = iVar144 + iVar169 + iVar159 + iVar179 + iVar136; + iVar137 = iVar147 + iVar171 + iVar161 + iVar182 + iVar137; + iVar141 = iVar153 + iVar174 + iVar165 + iVar185 + iVar141; + pbVar121 = pbVar121 + 0x10; + pbVar62 = pbVar62 + 0x10; + } while (uVar129 < uVar127); + uVar126 = uVar126 + iVar125; + iVar124 = iVar124 + iVar132 + iVar136 + iVar137 + iVar141; + if (param_6 - uVar122 == iVar125) goto LAB_00394dc8; + } + iVar125 = uVar126 + 1; + /* catch() { ... } // from try @ 00394c3c with catch @ 00394b54 + catch() { ... } // from try @ 00394c64 with catch @ 00394b54 + catch() { ... } // from try @ 00394c7c with catch @ 00394b54 */ + uVar122 = (int)((uint)param_1[(int)uVar126] - (uint)param_2[(int)uVar126]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[(int)uVar126] - (uint)param_2[(int)uVar126] ^ uVar122) + - uVar122); + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 2; + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar125] - (uint)param_2[iVar125] ^ uVar122) - + uVar122); + if (iVar132 < (int)param_6) { + iVar125 = uVar126 + 3; + uVar122 = (int)((uint)param_1[iVar132] - (uint)param_2[iVar132]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar132] - (uint)param_2[iVar132] ^ uVar122) - + uVar122); + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 4; + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar125] - (uint)param_2[iVar125] ^ uVar122) - + uVar122); + if (iVar132 < (int)param_6) { + iVar125 = uVar126 + 5; + uVar122 = (int)((uint)param_1[iVar132] - (uint)param_2[iVar132]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar132] - (uint)param_2[iVar132] ^ uVar122) - + uVar122); + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 6; + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> 0x1f; + /* try { // try from 00394c3c to 00494c3f has its CatchHandler @ 00394b54 */ + iVar124 = iVar124 + (((uint)param_1[iVar125] - (uint)param_2[iVar125] ^ uVar122) + - uVar122); + if (iVar132 < (int)param_6) { + iVar125 = uVar126 + 7; + /* try { // try from 00394c5c to 00494c5f has its CatchHandler @ 00394c6c */ + uVar122 = (int)((uint)param_1[iVar132] - (uint)param_2[iVar132]) >> 0x1f; + /* try { // try from 00394c64 to 00494c67 has its CatchHandler @ 00394b54 */ + /* catch() { ... } // from try @ 00394c5c with catch @ 00394c6c */ + iVar124 = iVar124 + (((uint)param_1[iVar132] - (uint)param_2[iVar132] ^ + uVar122) - uVar122); + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 8; + /* try { // try from 00394c7c to 00494c7f has its CatchHandler @ 00394b54 */ + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar125] - (uint)param_2[iVar125] ^ + uVar122) - uVar122); + if (iVar132 < (int)param_6) { + iVar125 = uVar126 + 9; + uVar122 = (int)((uint)param_1[iVar132] - (uint)param_2[iVar132]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar132] - (uint)param_2[iVar132] ^ + uVar122) - uVar122); + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 10; + /* catch() { ... } // from try @ 00394d50 with catch @ 00394ccc + catch() { ... } // from try @ 00394d78 with catch @ 00394ccc + catch() { ... } // from try @ 00394e18 with catch @ 00394ccc + catch() { ... } // from try @ 00394eb0 with catch @ 00394ccc + catch() { ... } // from try @ 00394ec8 with catch @ 00394ccc + catch() { ... } // from try @ 00394edc with catch @ 00394ccc + catch() { ... } // from try @ 00394ef0 with catch @ 00394ccc */ + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> 0x1f + ; + iVar124 = iVar124 + (((uint)param_1[iVar125] - (uint)param_2[iVar125] ^ + uVar122) - uVar122); + if (iVar132 < (int)param_6) { + iVar125 = uVar126 + 0xb; + uVar122 = (int)((uint)param_1[iVar132] - (uint)param_2[iVar132]) >> + 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar132] - (uint)param_2[iVar132] + ^ uVar122) - uVar122); + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 0xc; + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> + 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar125] - + (uint)param_2[iVar125] ^ uVar122) - uVar122); + if (iVar132 < (int)param_6) { + iVar125 = uVar126 + 0xd; + /* try { // try from 00394d50 to 00494d53 has its CatchHandler @ 00394ccc */ + uVar122 = (int)((uint)param_1[iVar132] - (uint)param_2[iVar132]) + >> 0x1f; + /* try { // try from 00394d70 to 00494d73 has its CatchHandler @ 00394eb8 */ + iVar124 = iVar124 + (((uint)param_1[iVar132] - + (uint)param_2[iVar132] ^ uVar122) - uVar122) + ; + /* try { // try from 00394d78 to 00494de3 has its CatchHandler @ 00394ccc */ + if (iVar125 < (int)param_6) { + iVar132 = uVar126 + 0xe; + uVar122 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) + >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar125] - + (uint)param_2[iVar125] ^ uVar122) - + uVar122); + if (iVar132 < (int)param_6) { + uVar122 = (int)((uint)param_1[iVar132] - + (uint)param_2[iVar132]) >> 0x1f; + iVar124 = iVar124 + (((uint)param_1[iVar132] - + (uint)param_2[iVar132] ^ uVar122) - + uVar122); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00394dc8: + lVar128 = lVar128 + 1; + param_1 = param_1 + (int)param_6; + param_2 = param_2 + (int)param_6; + uVar123 = uVar123 - param_6; + } while ((int)lVar128 < param_5); + } + *param_4 = iVar124; + return 0; + } + /* try { // try from 00394e10 to 00494e13 has its CatchHandler @ 00394ee0 */ + param_5 = param_5 * param_6; + /* try { // try from 00394e18 to 00494e8b has its CatchHandler @ 00394ccc */ + iVar132 = 0; + iVar125 = iVar132; + if (0 < param_5 + -3) { + uVar123 = param_5 - 4U >> 2; + iVar125 = uVar123 + 1; + uVar123 = (uVar123 - 0xf >> 4) + 1; + if (param_5 - 4U < 0x3c) { + iVar136 = 0; +LAB_00394fbc: + pbVar121 = param_2 + iVar136; + pbVar62 = param_1 + iVar136; + do { + iVar136 = iVar136 + 4; + /* try { // try from 00394ff0 to 0049502b has its CatchHandler @ 00394fb0 */ + uVar122 = (int)((uint)*pbVar62 - (uint)*pbVar121) >> 0x1f; + uVar123 = (int)((uint)pbVar62[1] - (uint)pbVar121[1]) >> 0x1f; + uVar126 = (int)((uint)pbVar62[2] - (uint)pbVar121[2]) >> 0x1f; + uVar127 = (int)((uint)pbVar62[3] - (uint)pbVar121[3]) >> 0x1f; + iVar132 = iVar132 + (((uint)*pbVar62 - (uint)*pbVar121 ^ uVar122) - uVar122) + + (((uint)pbVar62[1] - (uint)pbVar121[1] ^ uVar123) - uVar123) + + (((uint)pbVar62[2] - (uint)pbVar121[2] ^ uVar126) - uVar126) + + (((uint)pbVar62[3] - (uint)pbVar121[3] ^ uVar127) - uVar127); + /* try { // try from 00395048 to 0049504b has its CatchHandler @ 00395058 */ + pbVar121 = pbVar121 + 4; + pbVar62 = pbVar62 + 4; + } while (iVar136 < param_5 + -3); + } + else { + iVar132 = 0; + iVar136 = 0; + iVar137 = 0; + iVar141 = 0; + uVar122 = 0; + pbVar121 = param_2; + pbVar62 = param_1; + do { + bVar130 = *pbVar62; + pbVar4 = pbVar62 + 1; + pbVar5 = pbVar62 + 2; + pbVar6 = pbVar62 + 3; + bVar134 = pbVar62[4]; + pbVar7 = pbVar62 + 5; + pbVar8 = pbVar62 + 6; + pbVar9 = pbVar62 + 7; + pbVar10 = pbVar62 + 8; + pbVar11 = pbVar62 + 9; + pbVar12 = pbVar62 + 10; + pbVar13 = pbVar62 + 0xb; + pbVar14 = pbVar62 + 0xc; + pbVar15 = pbVar62 + 0xd; + pbVar16 = pbVar62 + 0xe; + pbVar17 = pbVar62 + 0xf; + pbVar18 = pbVar62 + 0x10; + pbVar19 = pbVar62 + 0x11; + pbVar20 = pbVar62 + 0x12; + pbVar21 = pbVar62 + 0x13; + pbVar22 = pbVar62 + 0x14; + pbVar23 = pbVar62 + 0x15; + pbVar24 = pbVar62 + 0x16; + pbVar25 = pbVar62 + 0x17; + pbVar26 = pbVar62 + 0x18; + pbVar27 = pbVar62 + 0x19; + pbVar28 = pbVar62 + 0x1a; + pbVar29 = pbVar62 + 0x1b; + pbVar30 = pbVar62 + 0x1c; + pbVar31 = pbVar62 + 0x1d; + pbVar32 = pbVar62 + 0x1e; + pbVar33 = pbVar62 + 0x1f; + pbVar34 = pbVar62 + 0x20; + pbVar35 = pbVar62 + 0x21; + pbVar36 = pbVar62 + 0x22; + pbVar37 = pbVar62 + 0x23; + bVar139 = pbVar62[0x24]; + bVar151 = pbVar62[0x25]; + bVar163 = pbVar62[0x26]; + bVar173 = pbVar62[0x27]; + pbVar38 = pbVar62 + 0x28; + pbVar39 = pbVar62 + 0x29; + pbVar40 = pbVar62 + 0x2a; + pbVar41 = pbVar62 + 0x2b; + pbVar42 = pbVar62 + 0x2c; + pbVar43 = pbVar62 + 0x2d; + pbVar44 = pbVar62 + 0x2e; + pbVar45 = pbVar62 + 0x2f; + pbVar46 = pbVar62 + 0x30; + pbVar47 = pbVar62 + 0x31; + pbVar48 = pbVar62 + 0x32; + pbVar49 = pbVar62 + 0x33; + pbVar50 = pbVar62 + 0x34; + pbVar51 = pbVar62 + 0x35; + pbVar52 = pbVar62 + 0x36; + pbVar53 = pbVar62 + 0x37; + pbVar54 = pbVar62 + 0x38; + pbVar55 = pbVar62 + 0x39; + pbVar56 = pbVar62 + 0x3a; + pbVar57 = pbVar62 + 0x3b; + pbVar58 = pbVar62 + 0x3c; + pbVar59 = pbVar62 + 0x3d; + pbVar60 = pbVar62 + 0x3e; + pbVar61 = pbVar62 + 0x3f; + pbVar62 = pbVar62 + 0x40; + uVar122 = uVar122 + 1; + bVar131 = *pbVar121; + pbVar63 = pbVar121 + 1; + pbVar64 = pbVar121 + 2; + pbVar65 = pbVar121 + 3; + bVar135 = pbVar121[4]; + bVar143 = pbVar121[5]; + pbVar66 = pbVar121 + 6; + pbVar67 = pbVar121 + 7; + pbVar68 = pbVar121 + 8; + pbVar69 = pbVar121 + 9; + pbVar70 = pbVar121 + 10; + pbVar71 = pbVar121 + 0xb; + pbVar72 = pbVar121 + 0xc; + pbVar73 = pbVar121 + 0xd; + pbVar74 = pbVar121 + 0xe; + pbVar75 = pbVar121 + 0xf; + pbVar76 = pbVar121 + 0x10; + pbVar77 = pbVar121 + 0x11; + pbVar78 = pbVar121 + 0x12; + pbVar79 = pbVar121 + 0x13; + pbVar80 = pbVar121 + 0x14; + pbVar81 = pbVar121 + 0x15; + pbVar82 = pbVar121 + 0x16; + pbVar83 = pbVar121 + 0x17; + pbVar84 = pbVar121 + 0x18; + pbVar85 = pbVar121 + 0x19; + pbVar86 = pbVar121 + 0x1a; + pbVar87 = pbVar121 + 0x1b; + pbVar88 = pbVar121 + 0x1c; + pbVar89 = pbVar121 + 0x1d; + pbVar90 = pbVar121 + 0x1e; + pbVar91 = pbVar121 + 0x1f; + pbVar92 = pbVar121 + 0x20; + pbVar93 = pbVar121 + 0x21; + pbVar94 = pbVar121 + 0x22; + pbVar95 = pbVar121 + 0x23; + bVar140 = pbVar121[0x24]; + bVar152 = pbVar121[0x25]; + bVar164 = pbVar121[0x26]; + pbVar96 = pbVar121 + 0x27; + pbVar97 = pbVar121 + 0x28; + pbVar98 = pbVar121 + 0x29; + pbVar99 = pbVar121 + 0x2a; + pbVar100 = pbVar121 + 0x2b; + pbVar101 = pbVar121 + 0x2c; + pbVar102 = pbVar121 + 0x2d; + pbVar103 = pbVar121 + 0x2e; + pbVar104 = pbVar121 + 0x2f; + pbVar105 = pbVar121 + 0x30; + pbVar106 = pbVar121 + 0x31; + pbVar107 = pbVar121 + 0x32; + pbVar108 = pbVar121 + 0x33; + pbVar109 = pbVar121 + 0x34; + pbVar110 = pbVar121 + 0x35; + pbVar111 = pbVar121 + 0x36; + pbVar112 = pbVar121 + 0x37; + pbVar113 = pbVar121 + 0x38; + pbVar114 = pbVar121 + 0x39; + pbVar115 = pbVar121 + 0x3a; + pbVar116 = pbVar121 + 0x3b; + pbVar117 = pbVar121 + 0x3c; + pbVar118 = pbVar121 + 0x3d; + pbVar119 = pbVar121 + 0x3e; + pbVar120 = pbVar121 + 0x3f; + pbVar121 = pbVar121 + 0x40; + uVar3 = CONCAT12(*pbVar11,CONCAT11(*pbVar7,*pbVar4)); + /* try { // try from 00394ea8 to 00494eab has its CatchHandler @ 00394ecc */ + /* try { // try from 00394eb0 to 00494eb3 has its CatchHandler @ 00394ccc */ + /* catch() { ... } // from try @ 00394d70 with catch @ 00394eb8 */ + uVar2 = CONCAT12(*pbVar100,CONCAT11(*pbVar96,*pbVar95)); + /* try { // try from 00394ec8 to 00494ecb has its CatchHandler @ 00394ccc */ + /* catch() { ... } // from try @ 00394ea8 with catch @ 00394ecc */ + /* try { // try from 00394edc to 00494edf has its CatchHandler @ 00394ccc */ + /* catch() { ... } // from try @ 00394e10 with catch @ 00394ee0 */ + iVar177 = MP_INT_ABS(((CONCAT12(bVar134,CONCAT11(bVar134,bVar130)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar135,CONCAT11(bVar135,bVar131)) & 0xff00ff) & 0xffff)); + iVar180 = MP_INT_ABS((uint)bVar134 - (uint)bVar135); + iVar183 = MP_INT_ABS((uint)*pbVar10 - (uint)*pbVar68); + iVar186 = MP_INT_ABS((uint)*pbVar14 - (uint)*pbVar72); + iVar204 = MP_INT_ABS((uVar3 & 0xff) - + ((CONCAT12(bVar143,CONCAT11(bVar143,*pbVar63)) & 0xff00ff) & 0xffff)); + iVar206 = MP_INT_ABS(((uVar3 & 0xff00) >> 8) - (uint)bVar143); + iVar208 = MP_INT_ABS((uint)*pbVar11 - (uint)*pbVar69); + iVar210 = MP_INT_ABS((uint)*pbVar15 - (uint)*pbVar73); + /* try { // try from 00394ef0 to 00494ef3 has its CatchHandler @ 00394ccc */ + /* catch() { ... } // from try @ 00394f6c with catch @ 00394ef4 + catch() { ... } // from try @ 00394f94 with catch @ 00394ef4 + catch() { ... } // from try @ 00394fac with catch @ 00394ef4 */ + iVar176 = MP_INT_ABS((CONCAT12(*pbVar22,(ushort)*pbVar18) & 0xffff) - + (CONCAT12(*pbVar80,(ushort)*pbVar76) & 0xffff)); + iVar185 = MP_INT_ABS((uint)*pbVar22 - (uint)*pbVar80); + iVar148 = MP_INT_ABS((uint)*pbVar26 - (uint)*pbVar84); + iVar154 = MP_INT_ABS((uint)*pbVar30 - (uint)*pbVar88); + iVar188 = MP_INT_ABS((CONCAT12(*pbVar23,(ushort)*pbVar19) & 0xffff) - + (CONCAT12(*pbVar81,(ushort)*pbVar77) & 0xffff)); + iVar190 = MP_INT_ABS((uint)*pbVar23 - (uint)*pbVar81); + iVar191 = MP_INT_ABS((uint)*pbVar27 - (uint)*pbVar85); + iVar193 = MP_INT_ABS((uint)*pbVar31 - (uint)*pbVar89); + iVar200 = MP_INT_ABS((CONCAT12(*pbVar8,(ushort)*pbVar5) & 0xffff) - + (CONCAT12(*pbVar66,(ushort)*pbVar64) & 0xffff)); + iVar201 = MP_INT_ABS((uint)*pbVar8 - (uint)*pbVar66); + iVar202 = MP_INT_ABS((CONCAT12(*pbVar16,(ushort)*pbVar12) & 0xffff) - + (CONCAT12(*pbVar74,(ushort)*pbVar70) & 0xffff)); + iVar203 = MP_INT_ABS((uint)*pbVar16 - (uint)*pbVar74); + iVar178 = MP_INT_ABS((CONCAT12(*pbVar24,(ushort)*pbVar20) & 0xffff) - + (CONCAT12(*pbVar82,(ushort)*pbVar78) & 0xffff)); + iVar181 = MP_INT_ABS((uint)*pbVar24 - (uint)*pbVar82); + iVar184 = MP_INT_ABS((uint)*pbVar28 - (uint)*pbVar86); + iVar187 = MP_INT_ABS((uint)*pbVar32 - (uint)*pbVar90); + iVar194 = MP_INT_ABS(((CONCAT12(bVar139,CONCAT11(bVar139,*pbVar34)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar140,CONCAT11(bVar140,*pbVar92)) & 0xff00ff) & 0xffff)); + iVar195 = MP_INT_ABS((uint)bVar139 - (uint)bVar140); + iVar142 = MP_INT_ABS((uint)*pbVar38 - (uint)*pbVar97); + iVar144 = MP_INT_ABS((uint)*pbVar42 - (uint)*pbVar101); + iVar196 = MP_INT_ABS((CONCAT12(*pbVar9,(ushort)*pbVar6) & 0xffff) - + (CONCAT12(*pbVar67,(ushort)*pbVar65) & 0xffff)); + iVar197 = MP_INT_ABS((uint)*pbVar9 - (uint)*pbVar67); + iVar198 = MP_INT_ABS((CONCAT12(*pbVar17,(ushort)*pbVar13) & 0xffff) - + (CONCAT12(*pbVar75,(ushort)*pbVar71) & 0xffff)); + iVar199 = MP_INT_ABS((uint)*pbVar17 - (uint)*pbVar75); + iVar205 = MP_INT_ABS(((CONCAT12(bVar151,CONCAT11(bVar151,*pbVar35)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar152,CONCAT11(bVar152,*pbVar93)) & 0xff00ff) & 0xffff)); + iVar207 = MP_INT_ABS((uint)bVar151 - (uint)bVar152); + iVar209 = MP_INT_ABS((uint)*pbVar39 - (uint)*pbVar98); + iVar211 = MP_INT_ABS((uint)*pbVar43 - (uint)*pbVar102); + iVar168 = MP_INT_ABS((CONCAT12(*pbVar50,(ushort)*pbVar46) & 0xffff) - + (CONCAT12(*pbVar109,(ushort)*pbVar105) & 0xffff)); + iVar170 = MP_INT_ABS((uint)*pbVar50 - (uint)*pbVar109); + iVar172 = MP_INT_ABS((uint)*pbVar54 - (uint)*pbVar113); + iVar175 = MP_INT_ABS((uint)*pbVar58 - (uint)*pbVar117); + iVar179 = MP_INT_ABS(((CONCAT12(bVar163,CONCAT11(bVar163,*pbVar36)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar164,CONCAT11(bVar164,*pbVar94)) & 0xff00ff) & 0xffff)); + iVar145 = MP_INT_ABS((uint)bVar163 - (uint)bVar164); + iVar149 = MP_INT_ABS((uint)*pbVar40 - (uint)*pbVar99); + iVar155 = MP_INT_ABS((uint)*pbVar44 - (uint)*pbVar103); + iVar212 = MP_INT_ABS((CONCAT12(*pbVar25,(ushort)*pbVar21) & 0xffff) - + (CONCAT12(*pbVar83,(ushort)*pbVar79) & 0xffff)); + iVar213 = MP_INT_ABS((uint)*pbVar25 - (uint)*pbVar83); + iVar147 = MP_INT_ABS((uint)*pbVar29 - (uint)*pbVar87); + iVar153 = MP_INT_ABS((uint)*pbVar33 - (uint)*pbVar91); + iVar158 = MP_INT_ABS((CONCAT12(*pbVar51,(ushort)*pbVar47) & 0xffff) - + (CONCAT12(*pbVar110,(ushort)*pbVar106) & 0xffff)); + iVar160 = MP_INT_ABS((uint)*pbVar51 - (uint)*pbVar110); + iVar162 = MP_INT_ABS((uint)*pbVar55 - (uint)*pbVar114); + iVar166 = MP_INT_ABS((uint)*pbVar59 - (uint)*pbVar118); + /* try { // try from 00394f6c to 00494f6f has its CatchHandler @ 00394ef4 */ + iVar157 = MP_INT_ABS(((CONCAT12(bVar173,CONCAT11(bVar173,*pbVar37)) & 0xff00ff) & 0xffff) - + (uVar2 & 0xff)); + iVar161 = MP_INT_ABS((uint)bVar173 - ((uVar2 & 0xff00) >> 8)); + iVar167 = MP_INT_ABS((uint)*pbVar41 - (uint)*pbVar100); + iVar171 = MP_INT_ABS((uint)*pbVar45 - (uint)*pbVar104); + iVar182 = MP_INT_ABS((CONCAT12(*pbVar52,(ushort)*pbVar48) & 0xffff) - + (CONCAT12(*pbVar111,(ushort)*pbVar107) & 0xffff)); + iVar146 = MP_INT_ABS((uint)*pbVar52 - (uint)*pbVar111); + iVar150 = MP_INT_ABS((uint)*pbVar56 - (uint)*pbVar115); + iVar156 = MP_INT_ABS((uint)*pbVar60 - (uint)*pbVar119); + /* try { // try from 00394f8c to 00494f8f has its CatchHandler @ 00394f9c */ + /* try { // try from 00394f94 to 00494f97 has its CatchHandler @ 00394ef4 */ + iVar159 = MP_INT_ABS((CONCAT12(*pbVar53,(ushort)*pbVar49) & 0xffff) - + (CONCAT12(*pbVar112,(ushort)*pbVar108) & 0xffff)); + iVar165 = MP_INT_ABS((uint)*pbVar53 - (uint)*pbVar112); + iVar169 = MP_INT_ABS((uint)*pbVar57 - (uint)*pbVar116); + iVar174 = MP_INT_ABS((uint)*pbVar61 - (uint)*pbVar120); + /* catch() { ... } // from try @ 00394f8c with catch @ 00394f9c */ + iVar132 = iVar168 + iVar158 + iVar182 + iVar159 + + iVar194 + iVar205 + iVar179 + iVar157 + + iVar176 + iVar188 + iVar178 + iVar212 + + iVar177 + iVar204 + iVar200 + iVar196 + iVar132; + iVar136 = iVar170 + iVar160 + iVar146 + iVar165 + + iVar195 + iVar207 + iVar145 + iVar161 + + iVar185 + iVar190 + iVar181 + iVar213 + + iVar180 + iVar206 + iVar201 + iVar197 + iVar136; + iVar137 = iVar172 + iVar162 + iVar150 + iVar169 + + iVar142 + iVar209 + iVar149 + iVar167 + + iVar148 + iVar191 + iVar184 + iVar147 + + iVar183 + iVar208 + iVar202 + iVar198 + iVar137; + iVar141 = iVar175 + iVar166 + iVar156 + iVar174 + + iVar144 + iVar211 + iVar155 + iVar171 + + iVar154 + iVar193 + iVar187 + iVar153 + + iVar186 + iVar210 + iVar203 + iVar199 + iVar141; + } while (uVar122 < uVar123); + iVar132 = iVar132 + iVar136 + iVar137 + iVar141; + /* try { // try from 00394fac to 00494faf has its CatchHandler @ 00394ef4 */ + /* catch() { ... } // from try @ 00394ff0 with catch @ 00394fb0 + catch() { ... } // from try @ 00395050 with catch @ 00394fb0 + catch() { ... } // from try @ 00395068 with catch @ 00394fb0 */ + iVar136 = uVar123 * 0x40; + if (uVar123 * 0x10 != iVar125) goto LAB_00394fbc; + } + iVar125 = iVar125 * 4; + } + /* try { // try from 00395050 to 00495053 has its CatchHandler @ 00394fb0 */ + if (iVar125 < param_5) { + /* catch() { ... } // from try @ 00395048 with catch @ 00395058 */ + lVar128 = (long)iVar125; + uVar122 = param_5 - iVar125; + /* try { // try from 00395068 to 0049506b has its CatchHandler @ 00394fb0 */ + uVar123 = -(int)(param_1 + lVar128) & 0xf; + /* catch() { ... } // from try @ 003950f0 with catch @ 0039506c + catch() { ... } // from try @ 00395118 with catch @ 0039506c + catch() { ... } // from try @ 00395130 with catch @ 0039506c */ + uVar1 = (ulong)uVar123; + if (uVar122 < uVar123) { + uVar1 = (ulong)uVar122; + } + if (uVar122 < 0x11) { + uVar1 = (ulong)uVar122; + } + uVar123 = (uint)uVar1; + if (uVar123 != 0) { + iVar136 = iVar125 + 1; + uVar126 = (uint)param_1[lVar128] - (uint)param_2[lVar128]; + uVar127 = (int)uVar126 >> 0x1f; + iVar132 = iVar132 + ((uVar126 ^ uVar127) - uVar127); + if (uVar123 != 1) { + iVar137 = iVar125 + 2; + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar126) - uVar126); + iVar136 = iVar137; + if (uVar123 != 2) { + iVar136 = iVar125 + 3; + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + /* try { // try from 003950f0 to 004950f3 has its CatchHandler @ 0039506c */ + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar126) - uVar126 + ); + if (uVar123 != 3) { + iVar137 = iVar125 + 4; + /* try { // try from 00395110 to 00495113 has its CatchHandler @ 00395120 */ + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + /* try { // try from 00395118 to 0049511b has its CatchHandler @ 0039506c */ + /* catch() { ... } // from try @ 00395110 with catch @ 00395120 */ + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar126) - + uVar126); + iVar136 = iVar137; + if (uVar123 != 4) { + /* try { // try from 00395130 to 00495133 has its CatchHandler @ 0039506c */ + /* catch() { ... } // from try @ 0039514c with catch @ 00395134 + catch() { ... } // from try @ 003951ec with catch @ 00395134 + catch() { ... } // from try @ 00395204 with catch @ 00395134 */ + iVar136 = iVar125 + 5; + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + /* try { // try from 0039514c to 004951c7 has its CatchHandler @ 00395134 */ + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar126) - + uVar126); + if (uVar123 != 5) { + iVar137 = iVar125 + 6; + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar126) - + uVar126); + iVar136 = iVar137; + if (uVar123 != 6) { + iVar136 = iVar125 + 7; + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar126) - + uVar126); + if (uVar123 != 7) { + iVar137 = iVar125 + 8; + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar126) + - uVar126); + iVar136 = iVar137; + if (uVar123 != 8) { + /* try { // try from 003951e4 to 004951e7 has its CatchHandler @ 003951f4 */ + iVar136 = iVar125 + 9; + /* try { // try from 003951ec to 004951ef has its CatchHandler @ 00395134 */ + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + /* catch() { ... } // from try @ 003951e4 with catch @ 003951f4 */ + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ + uVar126) - uVar126); + /* try { // try from 00395204 to 00495207 has its CatchHandler @ 00395134 */ + if (uVar123 != 9) { + iVar137 = iVar125 + 10; + /* catch() { ... } // from try @ 00395230 with catch @ 00395208 + catch() { ... } // from try @ 00395300 with catch @ 00395208 + catch() { ... } // from try @ 00395348 with catch @ 00395208 + catch() { ... } // from try @ 003955a4 with catch @ 00395208 + catch() { ... } // from try @ 0039568c with catch @ 00395208 + catch() { ... } // from try @ 003956a0 with catch @ 00395208 + catch() { ... } // from try @ 003956b4 with catch @ 00395208 */ + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ + uVar126) - uVar126); + iVar136 = iVar137; + /* try { // try from 00395230 to 004952df has its CatchHandler @ 00395208 */ + if (uVar123 != 10) { + iVar136 = iVar125 + 0xb; + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ + uVar126) - uVar126); + if (uVar123 != 0xb) { + iVar137 = iVar125 + 0xc; + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f + ; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ + uVar126) - uVar126); + iVar136 = iVar137; + if (uVar123 != 0xc) { + iVar136 = iVar125 + 0xd; + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> + 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] + ^ uVar126) - uVar126); + if (uVar123 != 0xd) { + iVar137 = iVar125 + 0xe; + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> + 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - + (uint)param_2[iVar136] ^ uVar126) - uVar126); + iVar136 = iVar137; + if (uVar123 != 0xe) { + iVar136 = iVar125 + 0xf; + /* try { // try from 003952f8 to 004952fb has its CatchHandler @ 0039567c */ + uVar126 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) + >> 0x1f; + /* try { // try from 00395300 to 00495327 has its CatchHandler @ 00395208 */ + iVar132 = iVar132 + (((uint)param_1[iVar137] - + (uint)param_2[iVar137] ^ uVar126) - uVar126) + ; + if (uVar123 == 0x10) { + uVar126 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) + >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - + (uint)param_2[iVar136] ^ uVar126) - + uVar126); + iVar136 = iVar125 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar125 = iVar136; + if (uVar123 == uVar122) goto LAB_00395668; + } + /* try { // try from 00395340 to 00495343 has its CatchHandler @ 00395690 */ + /* try { // try from 00395348 to 00495553 has its CatchHandler @ 00395208 */ + uVar126 = ((uVar122 - uVar123) - 0x10 >> 4) + 1; + iVar136 = uVar126 * 0x10; + if (0xe < (uVar122 - 1) - uVar123) { + iVar137 = 0; + iVar141 = 0; + iVar142 = 0; + iVar144 = 0; + uVar127 = 0; + pbVar121 = param_1 + uVar1 + lVar128; + pbVar62 = param_2 + uVar1 + lVar128; + do { + uVar138 = *(undefined8 *)(pbVar121 + 8); + uVar133 = *(undefined8 *)pbVar121; + uVar127 = uVar127 + 1; + uVar192 = *(undefined8 *)(pbVar62 + 8); + uVar189 = *(undefined8 *)pbVar62; + bVar130 = (byte)((ulong)uVar133 >> 8); + bVar139 = (byte)((ulong)uVar133 >> 0x28); + bVar131 = (byte)((ulong)uVar189 >> 8); + bVar140 = (byte)((ulong)uVar189 >> 0x28); + bVar134 = (byte)((ulong)uVar138 >> 8); + bVar143 = (byte)((ulong)uVar138 >> 0x28); + bVar135 = (byte)((ulong)uVar192 >> 8); + bVar151 = (byte)((ulong)uVar192 >> 0x28); + iVar182 = MP_INT_ABS(((CONCAT12(bVar130,(short)uVar133) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar131,(short)uVar189) & 0xff00ff) & 0xffff)); + iVar185 = MP_INT_ABS((uint)bVar130 - (uint)bVar131); + iVar145 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x10) - + (uint)(byte)((ulong)uVar189 >> 0x10)); + iVar146 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x18) - + (uint)(byte)((ulong)uVar189 >> 0x18)); + iVar161 = MP_INT_ABS((CONCAT12(bVar139,(ushort)(byte)((ulong)uVar133 >> 0x20)) & 0xffff) - + (CONCAT12(bVar140,(ushort)(byte)((ulong)uVar189 >> 0x20)) & 0xffff)); + iVar165 = MP_INT_ABS((uint)bVar139 - (uint)bVar140); + iVar167 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x30) - + (uint)(byte)((ulong)uVar189 >> 0x30)); + iVar169 = MP_INT_ABS((uint)(byte)((ulong)uVar133 >> 0x38) - + (uint)(byte)((ulong)uVar189 >> 0x38)); + iVar171 = MP_INT_ABS(((CONCAT12(bVar134,(short)uVar138) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar135,(short)uVar192) & 0xff00ff) & 0xffff)); + iVar174 = MP_INT_ABS((uint)bVar134 - (uint)bVar135); + iVar176 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x10) - + (uint)(byte)((ulong)uVar192 >> 0x10)); + iVar179 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x18) - + (uint)(byte)((ulong)uVar192 >> 0x18)); + iVar147 = MP_INT_ABS((CONCAT12(bVar143,(ushort)(byte)((ulong)uVar138 >> 0x20)) & 0xffff) - + (CONCAT12(bVar151,(ushort)(byte)((ulong)uVar192 >> 0x20)) & 0xffff)); + iVar153 = MP_INT_ABS((uint)bVar143 - (uint)bVar151); + iVar157 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x30) - + (uint)(byte)((ulong)uVar192 >> 0x30)); + iVar159 = MP_INT_ABS((uint)(byte)((ulong)uVar138 >> 0x38) - + (uint)(byte)((ulong)uVar192 >> 0x38)); + iVar137 = iVar147 + iVar171 + iVar161 + iVar182 + iVar137; + iVar141 = iVar153 + iVar174 + iVar165 + iVar185 + iVar141; + iVar142 = iVar157 + iVar176 + iVar167 + iVar145 + iVar142; + iVar144 = iVar159 + iVar179 + iVar169 + iVar146 + iVar144; + pbVar121 = pbVar121 + 0x10; + pbVar62 = pbVar62 + 0x10; + } while (uVar127 < uVar126); + iVar125 = iVar125 + iVar136; + iVar132 = iVar132 + iVar137 + iVar141 + iVar142 + iVar144; + if (iVar136 == uVar122 - uVar123) goto LAB_00395668; + } + iVar136 = iVar125 + 1; + uVar123 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar125] - (uint)param_2[iVar125] ^ uVar123) - uVar123); + if (iVar136 < param_5) { + iVar137 = iVar125 + 2; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar123) - uVar123); + if (iVar137 < param_5) { + iVar136 = iVar125 + 3; + uVar123 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar123) - uVar123); + if (iVar136 < param_5) { + iVar137 = iVar125 + 4; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar123) - uVar123 + ); + if (iVar137 < param_5) { + iVar136 = iVar125 + 5; + uVar123 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar123) - + uVar123); + if (iVar136 < param_5) { + iVar137 = iVar125 + 6; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar123) - + uVar123); + if (iVar137 < param_5) { + iVar136 = iVar125 + 7; + uVar123 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar123) - + uVar123); + if (iVar136 < param_5) { + iVar137 = iVar125 + 8; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ uVar123) - + uVar123); + if (iVar137 < param_5) { + iVar136 = iVar125 + 9; + uVar123 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ uVar123) + - uVar123); + if (iVar136 < param_5) { + iVar137 = iVar125 + 10; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ + uVar123) - uVar123); + if (iVar137 < param_5) { + /* try { // try from 0039559c to 0049559f has its CatchHandler @ 003956a4 */ + iVar136 = iVar125 + 0xb; + /* try { // try from 003955a4 to 00495653 has its CatchHandler @ 00395208 */ + uVar123 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ + uVar123) - uVar123); + if (iVar136 < param_5) { + iVar137 = iVar125 + 0xc; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] ^ + uVar123) - uVar123); + if (iVar137 < param_5) { + iVar136 = iVar125 + 0xd; + uVar123 = (int)((uint)param_1[iVar137] - (uint)param_2[iVar137]) >> 0x1f + ; + iVar132 = iVar132 + (((uint)param_1[iVar137] - (uint)param_2[iVar137] ^ + uVar123) - uVar123); + if (iVar136 < param_5) { + iVar125 = iVar125 + 0xe; + uVar123 = (int)((uint)param_1[iVar136] - (uint)param_2[iVar136]) >> + 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar136] - (uint)param_2[iVar136] + ^ uVar123) - uVar123); + if (iVar125 < param_5) { + uVar123 = (int)((uint)param_1[iVar125] - (uint)param_2[iVar125]) >> + 0x1f; + iVar132 = iVar132 + (((uint)param_1[iVar125] - + (uint)param_2[iVar125] ^ uVar123) - uVar123); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00395668: + *param_4 = iVar124 + iVar132; + return 0; +} + + +================================================================== + +### FUNC 00395698 (2060 bytes) name=FUN_00395698 + +undefined8 FUN_00395698(byte *param_1,long param_2,int *param_3,int param_4,uint param_5) + +{ + ulong uVar1; + uint3 uVar2; + uint3 uVar3; + uint3 uVar4; + byte *pbVar5; + uint uVar56; + uint uVar57; + int iVar58; + long lVar59; + uint uVar60; + ushort uVar61; + ushort uVar62; + ushort uVar63; + byte bVar64; + byte bVar66; + int iVar65; + byte bVar69; + int iVar67; + int iVar68; + byte bVar72; + int iVar70; + int iVar71; + byte bVar75; + int iVar73; + int iVar74; + uint uVar76; + uint uVar77; + uint uVar78; + byte bVar80; + undefined8 uVar79; + byte bVar82; + undefined8 uVar81; + byte bVar83; + byte bVar84; + byte bVar85; + byte bVar87; + uint uVar86; + byte bVar88; + byte bVar90; + uint uVar89; + byte bVar92; + uint uVar91; + uint uVar93; + uint uVar94; + uint uVar95; + uint uVar96; + int iVar97; + uint uVar98; + uint uVar99; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + + iVar58 = *param_3; + /* try { // try from 003956a0 to 004956a3 has its CatchHandler @ 00395208 */ + if (param_2 != 0) { + /* catch() { ... } // from try @ 0039559c with catch @ 003956a4 */ + if (0 < param_4) { + uVar57 = -(int)param_1; + /* try { // try from 003956b4 to 004956b7 has its CatchHandler @ 00395208 */ + /* catch() { ... } // from try @ 0039578c with catch @ 003956b8 + catch() { ... } // from try @ 003957b4 with catch @ 003956b8 + catch() { ... } // from try @ 00395808 with catch @ 003956b8 */ + lVar59 = 0; + do { + if ((*(char *)(param_2 + lVar59) != '\0') && (0 < (int)param_5)) { + uVar56 = uVar57 & 0xf; + if (param_5 < (uVar57 & 0xf)) { + uVar56 = param_5; + } + if (param_5 < 0x12) { + uVar56 = param_5; + } + uVar60 = uVar56; + if (uVar56 != 0) { + iVar58 = iVar58 + (uint)*param_1 * (uint)*param_1; + if ((((uVar56 != 1) && + (iVar58 = iVar58 + (uint)param_1[1] * (uint)param_1[1], uVar56 != 2)) && + (iVar58 = iVar58 + (uint)param_1[2] * (uint)param_1[2], uVar56 != 3)) && + (((iVar58 = iVar58 + (uint)param_1[3] * (uint)param_1[3], uVar56 != 4 && + (iVar58 = iVar58 + (uint)param_1[4] * (uint)param_1[4], uVar56 != 5)) && + (iVar58 = iVar58 + (uint)param_1[5] * (uint)param_1[5], uVar56 != 6)))) { + iVar58 = iVar58 + (uint)param_1[6] * (uint)param_1[6]; + if (uVar56 == 7) { + uVar60 = 7; + } + else { + iVar58 = iVar58 + (uint)param_1[7] * (uint)param_1[7]; + /* try { // try from 0039578c to 0049578f has its CatchHandler @ 003956b8 */ + /* try { // try from 003957ac to 004957af has its CatchHandler @ 003957f8 */ + /* try { // try from 003957b4 to 004957b7 has its CatchHandler @ 003956b8 */ + if (((uVar56 != 8) && + (iVar58 = iVar58 + (uint)param_1[8] * (uint)param_1[8], uVar56 != 9)) && + ((iVar58 = iVar58 + (uint)param_1[9] * (uint)param_1[9], uVar56 != 10 && + ((((iVar58 = iVar58 + (uint)param_1[10] * (uint)param_1[10], uVar56 != 0xb && + (iVar58 = iVar58 + (uint)param_1[0xb] * (uint)param_1[0xb], uVar56 != 0xc)) + && (iVar58 = iVar58 + (uint)param_1[0xc] * (uint)param_1[0xc], uVar56 != 0xd)) + && ((iVar58 = iVar58 + (uint)param_1[0xd] * (uint)param_1[0xd], uVar56 != 0xe + && (iVar58 = iVar58 + (uint)param_1[0xe] * (uint)param_1[0xe], + uVar56 != 0xf)))))))) { + iVar58 = iVar58 + (uint)param_1[0xf] * (uint)param_1[0xf]; + if (uVar56 == 0x11) { + iVar58 = iVar58 + (uint)param_1[0x10] * (uint)param_1[0x10]; + } + else { + uVar60 = 0x10; + } + } + } + } + /* catch() { ... } // from try @ 003957ac with catch @ 003957f8 */ + if (param_5 == uVar56) goto LAB_0039599c; + } + /* try { // try from 00395808 to 0049580b has its CatchHandler @ 003956b8 */ + /* catch() { ... } // from try @ 003958a4 with catch @ 0039580c + catch() { ... } // from try @ 003958cc with catch @ 0039580c + catch() { ... } // from try @ 003958e4 with catch @ 0039580c */ + uVar77 = ((param_5 - uVar56) - 0x10 >> 4) + 1; + iVar97 = uVar77 * 0x10; + if (0xe < (param_5 - 1) - uVar56) { + iVar65 = 0; + iVar67 = 0; + iVar70 = 0; + iVar73 = 0; + uVar94 = 0; + pbVar55 = param_1 + uVar56; + do { + uVar81 = *(undefined8 *)(pbVar55 + 8); + uVar79 = *(undefined8 *)pbVar55; + uVar94 = uVar94 + 1; + bVar64 = (byte)((ulong)uVar79 >> 8); + bVar69 = (byte)((ulong)uVar79 >> 0x28); + bVar66 = (byte)((ulong)uVar81 >> 8); + bVar72 = (byte)((ulong)uVar81 >> 0x28); + uVar93 = CONCAT12(bVar64,(ushort)(byte)uVar79) & 0xffff; + uVar96 = (uint)(byte)((ulong)uVar79 >> 0x10); + uVar78 = (uint)CONCAT12(bVar69,(ushort)(byte)((ulong)uVar79 >> 0x20)); + uVar61 = (ushort)(byte)((ulong)uVar79 >> 0x30); + uVar62 = (ushort)(byte)((ulong)uVar79 >> 0x38); + uVar86 = (CONCAT12(bVar66,(short)uVar81) & 0xff00ff) & 0xffff; + uVar89 = (uint)(byte)((ulong)uVar81 >> 0x10); + uVar91 = (uint)(byte)((ulong)uVar81 >> 0x18); + uVar76 = CONCAT12(bVar72,(ushort)(byte)((ulong)uVar81 >> 0x20)) & 0xffff; + uVar98 = (uint)(byte)((ulong)uVar81 >> 0x30); + uVar95 = (uint)(byte)((ulong)uVar79 >> 0x18); + uVar99 = (uint)(byte)((ulong)uVar81 >> 0x38); + iVar65 = iVar65 + uVar93 * uVar93 + (uVar78 & 0xffff) * (uVar78 & 0xffff) + + uVar86 * uVar86 + uVar76 * uVar76; + iVar67 = iVar67 + (uint)bVar64 * (uint)bVar64 + + (uint)(ushort)bVar69 * (uint)(ushort)bVar69 + (uint)bVar66 * (uint)bVar66 + + (uint)bVar72 * (uint)bVar72; + iVar70 = iVar70 + uVar96 * uVar96 + (uint)uVar61 * (uint)uVar61 + uVar89 * uVar89 + + uVar98 * uVar98; + iVar73 = iVar73 + uVar95 * uVar95 + (uint)uVar62 * (uint)uVar62 + uVar91 * uVar91 + + uVar99 * uVar99; + pbVar55 = pbVar55 + 0x10; + } while (uVar94 < uVar77); + uVar60 = uVar60 + iVar97; + iVar58 = iVar58 + iVar65 + iVar67 + iVar70 + iVar73; + if (param_5 - uVar56 == iVar97) goto LAB_0039599c; + } + iVar58 = iVar58 + (uint)param_1[(int)uVar60] * (uint)param_1[(int)uVar60]; + if ((int)(uVar60 + 1) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 1)] * (uint)param_1[(int)(uVar60 + 1)]; + if ((int)(uVar60 + 2) < (int)param_5) { + /* try { // try from 003958a4 to 004958a7 has its CatchHandler @ 0039580c */ + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 2)] * (uint)param_1[(int)(uVar60 + 2)]; + if ((int)(uVar60 + 3) < (int)param_5) { + /* try { // try from 003958c4 to 004958c7 has its CatchHandler @ 003958d4 */ + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 3)] * + (uint)param_1[(int)(uVar60 + 3)]; + if ((int)(uVar60 + 4) < (int)param_5) { + /* try { // try from 003958cc to 004958cf has its CatchHandler @ 0039580c */ + /* catch() { ... } // from try @ 003958c4 with catch @ 003958d4 */ + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 4)] * + (uint)param_1[(int)(uVar60 + 4)]; + if ((int)(uVar60 + 5) < (int)param_5) { + /* try { // try from 003958e4 to 004958e7 has its CatchHandler @ 0039580c */ + /* catch() { ... } // from try @ 00395980 with catch @ 003958e8 + catch() { ... } // from try @ 003959a8 with catch @ 003958e8 + catch() { ... } // from try @ 003959c4 with catch @ 003958e8 */ + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 5)] * + (uint)param_1[(int)(uVar60 + 5)]; + if ((int)(uVar60 + 6) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 6)] * + (uint)param_1[(int)(uVar60 + 6)]; + if ((int)(uVar60 + 7) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 7)] * + (uint)param_1[(int)(uVar60 + 7)]; + if ((int)(uVar60 + 8) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 8)] * + (uint)param_1[(int)(uVar60 + 8)]; + if ((int)(uVar60 + 9) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 9)] * + (uint)param_1[(int)(uVar60 + 9)]; + if ((int)(uVar60 + 10) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 10)] * + (uint)param_1[(int)(uVar60 + 10)]; + if ((int)(uVar60 + 0xb) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 0xb)] * + (uint)param_1[(int)(uVar60 + 0xb)]; + if ((int)(uVar60 + 0xc) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 0xc)] * + (uint)param_1[(int)(uVar60 + 0xc)]; + if ((int)(uVar60 + 0xd) < (int)param_5) { + /* try { // try from 00395980 to 00495983 has its CatchHandler @ 003958e8 */ + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 0xd)] * + (uint)param_1[(int)(uVar60 + 0xd)]; + if ((int)(uVar60 + 0xe) < (int)param_5) { + iVar58 = iVar58 + (uint)param_1[(int)(uVar60 + 0xe)] * + (uint)param_1[(int)(uVar60 + 0xe)]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039599c: + lVar59 = lVar59 + 1; + /* try { // try from 003959a0 to 004959a3 has its CatchHandler @ 003959b4 */ + param_1 = param_1 + (int)param_5; + /* try { // try from 003959a8 to 004959ab has its CatchHandler @ 003958e8 */ + uVar57 = uVar57 - param_5; + } while ((int)lVar59 < param_4); + } + /* catch() { ... } // from try @ 003959a0 with catch @ 003959b4 */ + *param_3 = iVar58; + return 0; + } + param_4 = param_4 * param_5; + iVar97 = 0; + iVar65 = iVar97; + if (0 < param_4 + -3) { + uVar57 = param_4 - 4U >> 2; + iVar65 = uVar57 + 1; + uVar57 = (uVar57 - 0xf >> 4) + 1; + if (param_4 - 4U < 0x3c) { + iVar67 = 0; +LAB_00395b10: + pbVar55 = param_1 + iVar67; + do { + iVar67 = iVar67 + 4; + iVar97 = iVar97 + (uint)pbVar55[1] * (uint)pbVar55[1] + (uint)*pbVar55 * (uint)*pbVar55 + + (uint)pbVar55[2] * (uint)pbVar55[2] + (uint)pbVar55[3] * (uint)pbVar55[3]; + pbVar55 = pbVar55 + 4; + } while (iVar67 < param_4 + -3); + } + else { + iVar97 = 0; + iVar67 = 0; + iVar70 = 0; + iVar73 = 0; + uVar56 = 0; + pbVar55 = param_1; + do { + bVar64 = *pbVar55; + pbVar5 = pbVar55 + 1; + pbVar6 = pbVar55 + 2; + pbVar7 = pbVar55 + 3; + bVar66 = pbVar55[4]; + pbVar8 = pbVar55 + 5; + bVar83 = pbVar55[6]; + bVar87 = pbVar55[7]; + pbVar9 = pbVar55 + 8; + pbVar10 = pbVar55 + 9; + pbVar11 = pbVar55 + 10; + pbVar12 = pbVar55 + 0xb; + pbVar13 = pbVar55 + 0xc; + pbVar14 = pbVar55 + 0xd; + pbVar15 = pbVar55 + 0xe; + pbVar16 = pbVar55 + 0xf; + pbVar17 = pbVar55 + 0x10; + pbVar18 = pbVar55 + 0x11; + pbVar19 = pbVar55 + 0x12; + pbVar20 = pbVar55 + 0x13; + bVar69 = pbVar55[0x14]; + bVar80 = pbVar55[0x15]; + bVar84 = pbVar55[0x16]; + bVar88 = pbVar55[0x17]; + pbVar21 = pbVar55 + 0x18; + pbVar22 = pbVar55 + 0x19; + pbVar23 = pbVar55 + 0x1a; + pbVar24 = pbVar55 + 0x1b; + pbVar25 = pbVar55 + 0x1c; + pbVar26 = pbVar55 + 0x1d; + pbVar27 = pbVar55 + 0x1e; + pbVar28 = pbVar55 + 0x1f; + pbVar29 = pbVar55 + 0x20; + pbVar30 = pbVar55 + 0x21; + pbVar31 = pbVar55 + 0x22; + pbVar32 = pbVar55 + 0x23; + bVar72 = pbVar55[0x24]; + pbVar33 = pbVar55 + 0x25; + pbVar34 = pbVar55 + 0x26; + bVar90 = pbVar55[0x27]; + pbVar35 = pbVar55 + 0x28; + pbVar36 = pbVar55 + 0x29; + pbVar37 = pbVar55 + 0x2a; + pbVar38 = pbVar55 + 0x2b; + pbVar39 = pbVar55 + 0x2c; + pbVar40 = pbVar55 + 0x2d; + pbVar41 = pbVar55 + 0x2e; + pbVar42 = pbVar55 + 0x2f; + pbVar43 = pbVar55 + 0x30; + pbVar44 = pbVar55 + 0x31; + pbVar45 = pbVar55 + 0x32; + pbVar46 = pbVar55 + 0x33; + bVar75 = pbVar55[0x34]; + bVar82 = pbVar55[0x35]; + bVar85 = pbVar55[0x36]; + bVar92 = pbVar55[0x37]; + pbVar47 = pbVar55 + 0x38; + pbVar48 = pbVar55 + 0x39; + pbVar49 = pbVar55 + 0x3a; + pbVar50 = pbVar55 + 0x3b; + pbVar51 = pbVar55 + 0x3c; + pbVar52 = pbVar55 + 0x3d; + pbVar53 = pbVar55 + 0x3e; + pbVar54 = pbVar55 + 0x3f; + pbVar55 = pbVar55 + 0x40; + uVar56 = uVar56 + 1; + /* try { // try from 00395a2c to 00495a2f has its CatchHandler @ 003959c8 */ + uVar2 = CONCAT12(*pbVar8,CONCAT11(*pbVar8,*pbVar5)) & 0xff00ff; + /* try { // try from 00395a4c to 00495a4f has its CatchHandler @ 00395c70 */ + uVar3 = CONCAT12(*pbVar33,CONCAT11(*pbVar33,*pbVar30)) & 0xff00ff; + /* try { // try from 00395a54 to 00495b7f has its CatchHandler @ 003959c8 */ + uVar61 = (ushort)(byte)(uVar2 >> 0x10); + uVar99 = CONCAT12(bVar66,(ushort)bVar64) & 0xffff; + uVar77 = CONCAT12(bVar80,(ushort)*pbVar18) & 0xffff; + uVar62 = (ushort)(byte)(uVar3 >> 0x10); + uVar91 = CONCAT12(bVar83,(ushort)*pbVar6) & 0xffff; + uVar4 = CONCAT12(*pbVar34,CONCAT11(*pbVar34,*pbVar31)) & 0xff00ff; + uVar86 = (CONCAT12(bVar72,CONCAT11(bVar72,*pbVar29)) & 0xff00ff) & 0xffff; + uVar89 = CONCAT12(bVar87,(ushort)*pbVar7) & 0xffff; + uVar60 = CONCAT12(bVar82,(ushort)*pbVar44) & 0xffff; + uVar63 = (ushort)(byte)(uVar4 >> 0x10); + uVar76 = CONCAT12(bVar75,(ushort)*pbVar43) & 0xffff; + uVar78 = CONCAT12(bVar85,(ushort)*pbVar45) & 0xffff; + uVar98 = (CONCAT12(bVar90,CONCAT11(bVar90,*pbVar32)) & 0xff00ff) & 0xffff; + uVar94 = CONCAT12(bVar92,(ushort)*pbVar46) & 0xffff; + iVar97 = uVar60 * uVar60 + uVar76 * uVar76 + uVar78 * uVar78 + uVar94 * uVar94 + + (uVar3 & 0xffff) * (uVar3 & 0xffff) + uVar86 * uVar86 + + (uVar4 & 0xffff) * (uVar4 & 0xffff) + uVar98 * uVar98 + + uVar77 * uVar77 + + (CONCAT12(bVar69,(ushort)*pbVar17) & 0xffff) * + (CONCAT12(bVar69,(ushort)*pbVar17) & 0xffff) + + (CONCAT12(bVar84,(ushort)*pbVar19) & 0xffff) * + (CONCAT12(bVar84,(ushort)*pbVar19) & 0xffff) + + (CONCAT12(bVar88,(ushort)*pbVar20) & 0xffff) * + (CONCAT12(bVar88,(ushort)*pbVar20) & 0xffff) + + (uVar2 & 0xffff) * (uVar2 & 0xffff) + uVar99 * uVar99 + uVar91 * uVar91 + + uVar89 * uVar89 + iVar97; + iVar67 = (uint)bVar82 * (uint)bVar82 + (uint)bVar75 * (uint)bVar75 + + (uint)bVar85 * (uint)bVar85 + (uint)bVar92 * (uint)bVar92 + + (uint)uVar62 * (uint)uVar62 + (uint)bVar72 * (uint)bVar72 + + (uint)uVar63 * (uint)uVar63 + (uint)bVar90 * (uint)bVar90 + + (uint)bVar80 * (uint)bVar80 + (uint)(ushort)bVar69 * (uint)(ushort)bVar69 + + (uint)(ushort)bVar84 * (uint)(ushort)bVar84 + + (uint)(ushort)bVar88 * (uint)(ushort)bVar88 + + (uint)uVar61 * (uint)uVar61 + (uint)bVar66 * (uint)bVar66 + + (uint)bVar83 * (uint)bVar83 + (uint)bVar87 * (uint)bVar87 + iVar67; + iVar70 = (uint)*pbVar48 * (uint)*pbVar48 + (uint)*pbVar47 * (uint)*pbVar47 + + (uint)*pbVar49 * (uint)*pbVar49 + (uint)*pbVar50 * (uint)*pbVar50 + + (uint)(ushort)*pbVar36 * (uint)(ushort)*pbVar36 + (uint)*pbVar35 * (uint)*pbVar35 + + (uint)(ushort)*pbVar37 * (uint)(ushort)*pbVar37 + (uint)*pbVar38 * (uint)*pbVar38 + + (uint)*pbVar22 * (uint)*pbVar22 + (uint)(ushort)*pbVar21 * (uint)(ushort)*pbVar21 + + (uint)(ushort)*pbVar23 * (uint)(ushort)*pbVar23 + + (uint)(ushort)*pbVar24 * (uint)(ushort)*pbVar24 + + (uint)(ushort)*pbVar10 * (uint)(ushort)*pbVar10 + (uint)*pbVar9 * (uint)*pbVar9 + + (uint)*pbVar11 * (uint)*pbVar11 + (uint)*pbVar12 * (uint)*pbVar12 + iVar70; + iVar73 = (uint)*pbVar52 * (uint)*pbVar52 + (uint)*pbVar51 * (uint)*pbVar51 + + (uint)*pbVar53 * (uint)*pbVar53 + (uint)*pbVar54 * (uint)*pbVar54 + + (uint)*pbVar40 * (uint)*pbVar40 + (uint)*pbVar39 * (uint)*pbVar39 + + (uint)(ushort)*pbVar41 * (uint)(ushort)*pbVar41 + (uint)*pbVar42 * (uint)*pbVar42 + + (uint)*pbVar26 * (uint)*pbVar26 + (uint)(ushort)*pbVar25 * (uint)(ushort)*pbVar25 + + (uint)(ushort)*pbVar27 * (uint)(ushort)*pbVar27 + + (uint)(ushort)*pbVar28 * (uint)(ushort)*pbVar28 + + (uint)*pbVar14 * (uint)*pbVar14 + (uint)*pbVar13 * (uint)*pbVar13 + + (uint)*pbVar15 * (uint)*pbVar15 + (uint)*pbVar16 * (uint)*pbVar16 + iVar73; + } while (uVar56 < uVar57); + iVar97 = iVar97 + iVar67 + iVar70 + iVar73; + iVar67 = uVar57 * 0x40; + if (iVar65 != uVar57 * 0x10) goto LAB_00395b10; + } + iVar65 = iVar65 * 4; + } + if (iVar65 < param_4) { + uVar56 = param_4 - iVar65; + uVar57 = -(int)(param_1 + iVar65) & 0xf; + uVar1 = (ulong)uVar57; + if (uVar56 < uVar57) { + uVar1 = (ulong)uVar56; + } + if (uVar56 < 0x12) { + uVar1 = (ulong)uVar56; + } + uVar57 = (uint)uVar1; + iVar67 = iVar65; + if (uVar57 != 0) { + iVar67 = iVar65 + 1; + uVar60 = (uint)param_1[iVar65]; + iVar97 = iVar97 + uVar60 * uVar60; + if (uVar57 != 1) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 2; + /* try { // try from 00395b9c to 00495b9f has its CatchHandler @ 00395c84 */ + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 2) { + /* try { // try from 00395ba4 to 00495c3b has its CatchHandler @ 003959c8 */ + lVar59 = (long)iVar67; + iVar67 = iVar65 + 3; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 3) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 4; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 4) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 5; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 5) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 6; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 6) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 7; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 7) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 8; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 8) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 9; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 9) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 10; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 10) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 0xb; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 0xb) { + /* try { // try from 00395c58 to 00495c5b has its CatchHandler @ 00395c98 */ + lVar59 = (long)iVar67; + iVar67 = iVar65 + 0xc; + /* try { // try from 00395c64 to 00495c67 has its CatchHandler @ 003959c8 */ + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 0xc) { + lVar59 = (long)iVar67; + /* catch() { ... } // from try @ 00395a4c with catch @ 00395c70 */ + iVar67 = iVar65 + 0xd; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 0xd) { + /* try { // try from 00395c80 to 00495c83 has its CatchHandler @ 003959c8 */ + lVar59 = (long)iVar67; + /* catch() { ... } // from try @ 00395b9c with catch @ 00395c84 */ + iVar67 = iVar65 + 0xe; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 0xe) { + /* try { // try from 00395c94 to 00495c97 has its CatchHandler @ 003959c8 */ + lVar59 = (long)iVar67; + /* catch() { ... } // from try @ 00395c58 with catch @ 00395c98 */ + iVar67 = iVar65 + 0xf; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 != 0xf) { + /* try { // try from 00395ca8 to 00495cab has its CatchHandler @ 003959c8 */ + lVar59 = (long)iVar67; + /* catch() { ... } // from try @ 00395ce0 with catch @ 00395cac + catch() { ... } // from try @ 00395dc0 with catch @ 00395cac + catch() { ... } // from try @ 00395e08 with catch @ 00395cac */ + iVar67 = iVar65 + 0x10; + iVar97 = iVar97 + (uint)param_1[lVar59] * (uint)param_1[lVar59]; + if (uVar57 == 0x11) { + lVar59 = (long)iVar67; + iVar67 = iVar65 + 0x11; + iVar97 = iVar97 + (uint)param_1[lVar59] * + (uint)param_1[lVar59]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar57 == uVar56) goto LAB_00395e74; + } + /* try { // try from 00395ce0 to 00495d9b has its CatchHandler @ 00395cac */ + uVar60 = ((uVar56 - uVar57) - 0x10 >> 4) + 1; + iVar70 = uVar60 * 0x10; + if (0xe < (uVar56 - 1) - uVar57) { + iVar73 = 0; + iVar68 = 0; + iVar71 = 0; + iVar74 = 0; + uVar77 = 0; + pbVar55 = param_1 + uVar1 + (long)iVar65; + do { + uVar81 = *(undefined8 *)(pbVar55 + 8); + uVar79 = *(undefined8 *)pbVar55; + uVar77 = uVar77 + 1; + bVar64 = (byte)((ulong)uVar79 >> 8); + bVar69 = (byte)((ulong)uVar79 >> 0x28); + bVar66 = (byte)((ulong)uVar81 >> 8); + bVar72 = (byte)((ulong)uVar81 >> 0x28); + uVar91 = CONCAT12(bVar64,(ushort)(byte)uVar79) & 0xffff; + uVar93 = (uint)(byte)((ulong)uVar79 >> 0x10); + uVar94 = (uint)CONCAT12(bVar69,(ushort)(byte)((ulong)uVar79 >> 0x20)); + uVar61 = (ushort)(byte)((ulong)uVar79 >> 0x30); + uVar62 = (ushort)(byte)((ulong)uVar79 >> 0x38); + uVar99 = (CONCAT12(bVar66,(short)uVar81) & 0xff00ff) & 0xffff; + uVar86 = (uint)(byte)((ulong)uVar81 >> 0x10); + uVar89 = (uint)(byte)((ulong)uVar81 >> 0x18); + uVar78 = CONCAT12(bVar72,(ushort)(byte)((ulong)uVar81 >> 0x20)) & 0xffff; + uVar76 = (uint)(byte)((ulong)uVar81 >> 0x30); + uVar96 = (uint)(byte)((ulong)uVar79 >> 0x18); + uVar98 = (uint)(byte)((ulong)uVar81 >> 0x38); + iVar73 = iVar73 + uVar91 * uVar91 + (uVar94 & 0xffff) * (uVar94 & 0xffff) + uVar99 * uVar99 + + uVar78 * uVar78; + iVar68 = iVar68 + (uint)bVar64 * (uint)bVar64 + (uint)(ushort)bVar69 * (uint)(ushort)bVar69 + + (uint)bVar66 * (uint)bVar66 + (uint)bVar72 * (uint)bVar72; + iVar71 = iVar71 + uVar93 * uVar93 + (uint)uVar61 * (uint)uVar61 + uVar86 * uVar86 + + uVar76 * uVar76; + iVar74 = iVar74 + uVar96 * uVar96 + (uint)uVar62 * (uint)uVar62 + uVar89 * uVar89 + + uVar98 * uVar98; + pbVar55 = pbVar55 + 0x10; + } while (uVar77 < uVar60); + iVar67 = iVar67 + iVar70; + iVar97 = iVar97 + iVar73 + iVar68 + iVar71 + iVar74; + if (iVar70 == uVar56 - uVar57) goto LAB_00395e74; + } + iVar97 = iVar97 + (uint)param_1[iVar67] * (uint)param_1[iVar67]; + if (iVar67 + 1 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 1] * (uint)param_1[iVar67 + 1]; + if (iVar67 + 2 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 2] * (uint)param_1[iVar67 + 2]; + if (iVar67 + 3 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 3] * (uint)param_1[iVar67 + 3]; + if (iVar67 + 4 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 4] * (uint)param_1[iVar67 + 4]; + if (iVar67 + 5 < param_4) { + /* try { // try from 00395db8 to 00495dbb has its CatchHandler @ 00395df8 */ + /* try { // try from 00395dc0 to 00495dd3 has its CatchHandler @ 00395cac */ + iVar97 = iVar97 + (uint)param_1[iVar67 + 5] * (uint)param_1[iVar67 + 5]; + if (iVar67 + 6 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 6] * (uint)param_1[iVar67 + 6]; + if (iVar67 + 7 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 7] * (uint)param_1[iVar67 + 7]; + if (iVar67 + 8 < param_4) { + /* catch() { ... } // from try @ 00395db8 with catch @ 00395df8 */ + iVar97 = iVar97 + (uint)param_1[iVar67 + 8] * (uint)param_1[iVar67 + 8]; + if (iVar67 + 9 < param_4) { + /* try { // try from 00395e08 to 00495e0b has its CatchHandler @ 00395cac */ + /* catch() { ... } // from try @ 00395f2c with catch @ 00395e0c + catch() { ... } // from try @ 00395f54 with catch @ 00395e0c + catch() { ... } // from try @ 0039620c with catch @ 00395e0c + catch() { ... } // from try @ 00396250 with catch @ 00395e0c + catch() { ... } // from try @ 00396284 with catch @ 00395e0c */ + iVar97 = iVar97 + (uint)param_1[iVar67 + 9] * (uint)param_1[iVar67 + 9]; + if (iVar67 + 10 < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 10] * (uint)param_1[iVar67 + 10]; + if (iVar67 + 0xb < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 0xb] * + (uint)param_1[iVar67 + 0xb]; + if (iVar67 + 0xc < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 0xc] * + (uint)param_1[iVar67 + 0xc]; + if (iVar67 + 0xd < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 0xd] * + (uint)param_1[iVar67 + 0xd]; + if (iVar67 + 0xe < param_4) { + iVar97 = iVar97 + (uint)param_1[iVar67 + 0xe] * + (uint)param_1[iVar67 + 0xe]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00395e74: + *param_3 = iVar58 + iVar97; + return 0; +} + + +================================================================== + +### FUNC 00395ea4 (2868 bytes) name=FUN_00395ea4 + +undefined8 +FUN_00395ea4(byte *param_1,byte *param_2,long param_3,int *param_4,int param_5,uint param_6) + +{ + ulong uVar1; + uint3 uVar2; + uint3 uVar3; + byte *pbVar4; + byte *pbVar65; + uint uVar125; + uint uVar126; + int iVar127; + uint uVar128; + int iVar129; + uint uVar130; + long lVar131; + uint uVar132; + byte bVar133; + byte bVar134; + int iVar135; + int iVar136; + byte bVar138; + int iVar137; + int iVar139; + int iVar140; + undefined8 uVar141; + int iVar142; + int iVar143; + byte bVar145; + byte bVar146; + undefined8 uVar144; + int iVar147; + byte bVar148; + byte bVar149; + int iVar150; + int iVar151; + byte bVar153; + byte bVar154; + int iVar152; + int iVar155; + int iVar156; + undefined8 uVar157; + int iVar158; + int iVar159; + undefined8 uVar160; + int iVar161; + int iVar162; + int iVar163; + int iVar164; + int iVar165; + int iVar166; + int iVar167; + int iVar168; + int iVar169; + int iVar170; + int iVar171; + int iVar172; + int iVar173; + int iVar174; + int iVar175; + int iVar176; + int iVar177; + int iVar178; + int iVar179; + int iVar180; + int iVar181; + int iVar182; + int iVar183; + int iVar184; + int iVar185; + int iVar186; + int iVar187; + int iVar188; + int iVar189; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + byte *pbVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + byte *pbVar63; + byte *pbVar64; + byte *pbVar66; + byte *pbVar67; + byte *pbVar68; + byte *pbVar69; + byte *pbVar70; + byte *pbVar71; + byte *pbVar72; + byte *pbVar73; + byte *pbVar74; + byte *pbVar75; + byte *pbVar76; + byte *pbVar77; + byte *pbVar78; + byte *pbVar79; + byte *pbVar80; + byte *pbVar81; + byte *pbVar82; + byte *pbVar83; + byte *pbVar84; + byte *pbVar85; + byte *pbVar86; + byte *pbVar87; + byte *pbVar88; + byte *pbVar89; + byte *pbVar90; + byte *pbVar91; + byte *pbVar92; + byte *pbVar93; + byte *pbVar94; + byte *pbVar95; + byte *pbVar96; + byte *pbVar97; + byte *pbVar98; + byte *pbVar99; + byte *pbVar100; + byte *pbVar101; + byte *pbVar102; + byte *pbVar103; + byte *pbVar104; + byte *pbVar105; + byte *pbVar106; + byte *pbVar107; + byte *pbVar108; + byte *pbVar109; + byte *pbVar110; + byte *pbVar111; + byte *pbVar112; + byte *pbVar113; + byte *pbVar114; + byte *pbVar115; + byte *pbVar116; + byte *pbVar117; + byte *pbVar118; + byte *pbVar119; + byte *pbVar120; + byte *pbVar121; + byte *pbVar122; + byte *pbVar123; + byte *pbVar124; + + iVar127 = *param_4; + if (param_3 != 0) { + if (0 < param_5) { + uVar126 = -(int)param_1; + lVar131 = 0; + do { + if ((*(char *)(param_3 + lVar131) != '\0') && (0 < (int)param_6)) { + uVar125 = uVar126 & 0xf; + if (param_6 < (uVar126 & 0xf)) { + uVar125 = param_6; + } + if (param_6 < 0x11) { + uVar125 = param_6; + } + uVar128 = uVar125; + if (uVar125 != 0) { + iVar127 = iVar127 + ((uint)*param_1 - (uint)*param_2) * + ((uint)*param_1 - (uint)*param_2); + /* try { // try from 00395f2c to 00495f2f has its CatchHandler @ 00395e0c */ + /* try { // try from 00395f4c to 00495f4f has its CatchHandler @ 00396274 */ + /* try { // try from 00395f54 to 004961bb has its CatchHandler @ 00395e0c */ + if ((((uVar125 != 1) && + (iVar127 = iVar127 + ((uint)param_1[1] - (uint)param_2[1]) * + ((uint)param_1[1] - (uint)param_2[1]), uVar125 != 2)) && + (iVar127 = iVar127 + ((uint)param_1[2] - (uint)param_2[2]) * + ((uint)param_1[2] - (uint)param_2[2]), uVar125 != 3)) && + (((iVar127 = iVar127 + ((uint)param_1[3] - (uint)param_2[3]) * + ((uint)param_1[3] - (uint)param_2[3]), uVar125 != 4 && + (iVar127 = iVar127 + ((uint)param_1[4] - (uint)param_2[4]) * + ((uint)param_1[4] - (uint)param_2[4]), uVar125 != 5)) && + (iVar127 = iVar127 + ((uint)param_1[5] - (uint)param_2[5]) * + ((uint)param_1[5] - (uint)param_2[5]), uVar125 != 6)))) { + iVar127 = iVar127 + ((uint)param_1[6] - (uint)param_2[6]) * + ((uint)param_1[6] - (uint)param_2[6]); + if (uVar125 == 7) { + uVar128 = 7; + } + else { + iVar127 = iVar127 + ((uint)param_1[7] - (uint)param_2[7]) * + ((uint)param_1[7] - (uint)param_2[7]); + if (((uVar125 != 8) && + (iVar127 = iVar127 + ((uint)param_1[8] - (uint)param_2[8]) * + ((uint)param_1[8] - (uint)param_2[8]), uVar125 != 9)) && + (((iVar127 = iVar127 + ((uint)param_1[9] - (uint)param_2[9]) * + ((uint)param_1[9] - (uint)param_2[9]), uVar125 != 10 && + (((iVar127 = iVar127 + ((uint)param_1[10] - (uint)param_2[10]) * + ((uint)param_1[10] - (uint)param_2[10]), uVar125 != 0xb + && (iVar127 = iVar127 + ((uint)param_1[0xb] - (uint)param_2[0xb]) * + ((uint)param_1[0xb] - (uint)param_2[0xb]), + uVar125 != 0xc)) && + (iVar127 = iVar127 + ((uint)param_1[0xc] - (uint)param_2[0xc]) * + ((uint)param_1[0xc] - (uint)param_2[0xc]), uVar125 != 0xd + )))) && (iVar127 = iVar127 + ((uint)param_1[0xd] - (uint)param_2[0xd]) * + ((uint)param_1[0xd] - (uint)param_2[0xd]), + uVar125 != 0xe)))) { + iVar127 = iVar127 + ((uint)param_1[0xe] - (uint)param_2[0xe]) * + ((uint)param_1[0xe] - (uint)param_2[0xe]); + if (uVar125 == 0x10) { + iVar127 = iVar127 + ((uint)param_1[0xf] - (uint)param_2[0xf]) * + ((uint)param_1[0xf] - (uint)param_2[0xf]); + } + else { + uVar128 = 0xf; + } + } + } + } + if (param_6 == uVar125) goto LAB_003962dc; + } + uVar130 = ((param_6 - uVar125) - 0x10 >> 4) + 1; + iVar129 = uVar130 * 0x10; + if (0xe < (param_6 - 1) - uVar125) { + iVar135 = 0; + iVar136 = 0; + iVar137 = 0; + iVar139 = 0; + uVar132 = 0; + pbVar124 = param_2 + uVar125; + pbVar64 = param_1 + uVar125; + do { + uVar144 = *(undefined8 *)(pbVar64 + 8); + uVar141 = *(undefined8 *)pbVar64; + uVar132 = uVar132 + 1; + uVar160 = *(undefined8 *)(pbVar124 + 8); + uVar157 = *(undefined8 *)pbVar124; + bVar133 = (byte)((ulong)uVar141 >> 8); + bVar145 = (byte)((ulong)uVar141 >> 0x28); + bVar134 = (byte)((ulong)uVar157 >> 8); + bVar146 = (byte)((ulong)uVar157 >> 0x28); + bVar148 = (byte)((ulong)uVar144 >> 0x28); + bVar138 = (byte)((ulong)uVar160 >> 8); + bVar149 = (byte)((ulong)uVar160 >> 0x28); + iVar162 = ((CONCAT12(bVar133,(short)uVar141) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar134,(short)uVar157) & 0xff00ff) & 0xffff); + iVar163 = (uint)bVar133 - (uint)bVar134; + iVar164 = (uint)(byte)((ulong)uVar141 >> 0x10) - (uint)(byte)((ulong)uVar157 >> 0x10); + iVar165 = (uint)(byte)((ulong)uVar141 >> 0x18) - (uint)(byte)((ulong)uVar157 >> 0x18); + iVar150 = (CONCAT12(bVar145,(ushort)(byte)((ulong)uVar141 >> 0x20)) & 0xffff) - + (CONCAT12(bVar146,(ushort)(byte)((ulong)uVar157 >> 0x20)) & 0xffff); + iVar151 = (uint)bVar145 - (uint)bVar146; + iVar152 = (uint)(byte)((ulong)uVar141 >> 0x30) - (uint)(byte)((ulong)uVar157 >> 0x30); + iVar155 = (uint)(byte)((ulong)uVar141 >> 0x38) - (uint)(byte)((ulong)uVar157 >> 0x38); + iVar156 = (uint)(byte)uVar144 - + ((CONCAT12(bVar138,(short)uVar160) & 0xff00ff) & 0xffff); + iVar158 = (uint)(byte)((ulong)uVar144 >> 8) - (uint)bVar138; + iVar159 = (uint)(byte)((ulong)uVar144 >> 0x10) - (uint)(byte)((ulong)uVar160 >> 0x10); + iVar161 = (uint)(byte)((ulong)uVar144 >> 0x18) - (uint)(byte)((ulong)uVar160 >> 0x18); + iVar140 = (CONCAT12(bVar148,(ushort)(byte)((ulong)uVar144 >> 0x20)) & 0xffff) - + (CONCAT12(bVar149,(ushort)(byte)((ulong)uVar160 >> 0x20)) & 0xffff); + iVar142 = (uint)bVar148 - (uint)bVar149; + iVar143 = (uint)(byte)((ulong)uVar144 >> 0x30) - (uint)(byte)((ulong)uVar160 >> 0x30); + iVar147 = (uint)(byte)((ulong)uVar144 >> 0x38) - (uint)(byte)((ulong)uVar160 >> 0x38); + iVar135 = iVar135 + iVar162 * iVar162 + iVar150 * iVar150 + iVar156 * iVar156 + + iVar140 * iVar140; + iVar136 = iVar136 + iVar163 * iVar163 + iVar151 * iVar151 + iVar158 * iVar158 + + iVar142 * iVar142; + iVar137 = iVar137 + iVar164 * iVar164 + iVar152 * iVar152 + iVar159 * iVar159 + + iVar143 * iVar143; + iVar139 = iVar139 + iVar165 * iVar165 + iVar155 * iVar155 + iVar161 * iVar161 + + iVar147 * iVar147; + pbVar124 = pbVar124 + 0x10; + pbVar64 = pbVar64 + 0x10; + } while (uVar132 < uVar130); + uVar128 = uVar128 + iVar129; + iVar127 = iVar127 + iVar135 + iVar136 + iVar137 + iVar139; + if (param_6 - uVar125 == iVar129) goto LAB_003962dc; + } + iVar129 = uVar128 + 1; + iVar127 = iVar127 + ((uint)param_1[(int)uVar128] - (uint)param_2[(int)uVar128]) * + ((uint)param_1[(int)uVar128] - (uint)param_2[(int)uVar128]); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 2; + iVar127 = iVar127 + ((uint)param_1[iVar129] - (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - (uint)param_2[iVar129]); + if (iVar135 < (int)param_6) { + iVar129 = uVar128 + 3; + iVar127 = iVar127 + ((uint)param_1[iVar135] - (uint)param_2[iVar135]) * + ((uint)param_1[iVar135] - (uint)param_2[iVar135]); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 4; + iVar127 = iVar127 + ((uint)param_1[iVar129] - (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - (uint)param_2[iVar129]); + if (iVar135 < (int)param_6) { + iVar129 = uVar128 + 5; + iVar127 = iVar127 + ((uint)param_1[iVar135] - (uint)param_2[iVar135]) * + ((uint)param_1[iVar135] - (uint)param_2[iVar135]); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 6; + iVar127 = iVar127 + ((uint)param_1[iVar129] - (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - (uint)param_2[iVar129]); + if (iVar135 < (int)param_6) { + iVar129 = uVar128 + 7; + iVar127 = iVar127 + ((uint)param_1[iVar135] - (uint)param_2[iVar135]) * + ((uint)param_1[iVar135] - (uint)param_2[iVar135]); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 8; + iVar127 = iVar127 + ((uint)param_1[iVar129] - (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - (uint)param_2[iVar129]); + /* try { // try from 00396204 to 00496207 has its CatchHandler @ 00396240 */ + if (iVar135 < (int)param_6) { + /* try { // try from 0039620c to 00496237 has its CatchHandler @ 00395e0c */ + iVar129 = uVar128 + 9; + iVar127 = iVar127 + ((uint)param_1[iVar135] - (uint)param_2[iVar135]) * + ((uint)param_1[iVar135] - (uint)param_2[iVar135]); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 10; + /* catch() { ... } // from try @ 00396204 with catch @ 00396240 */ + iVar127 = iVar127 + ((uint)param_1[iVar129] - (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - (uint)param_2[iVar129]); + if (iVar135 < (int)param_6) { + iVar129 = uVar128 + 0xb; + /* try { // try from 00396250 to 0049626b has its CatchHandler @ 00395e0c */ + iVar127 = iVar127 + ((uint)param_1[iVar135] - (uint)param_2[iVar135]) + * ((uint)param_1[iVar135] - (uint)param_2[iVar135] + ); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 0xc; + /* catch() { ... } // from try @ 00395f4c with catch @ 00396274 */ + iVar127 = iVar127 + ((uint)param_1[iVar129] - (uint)param_2[iVar129] + ) * ((uint)param_1[iVar129] - + (uint)param_2[iVar129]); + /* try { // try from 00396284 to 00496287 has its CatchHandler @ 00395e0c */ + if (iVar135 < (int)param_6) { + iVar129 = uVar128 + 0xd; + /* catch() { ... } // from try @ 00396388 with catch @ 00396298 + catch() { ... } // from try @ 003963b0 with catch @ 00396298 + catch() { ... } // from try @ 003963f4 with catch @ 00396298 + catch() { ... } // from try @ 00396444 with catch @ 00396298 + catch() { ... } // from try @ 00396458 with catch @ 00396298 */ + iVar127 = iVar127 + ((uint)param_1[iVar135] - + (uint)param_2[iVar135]) * + ((uint)param_1[iVar135] - + (uint)param_2[iVar135]); + if (iVar129 < (int)param_6) { + iVar135 = uVar128 + 0xe; + iVar127 = iVar127 + ((uint)param_1[iVar129] - + (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - + (uint)param_2[iVar129]); + if (iVar135 < (int)param_6) { + iVar127 = iVar127 + ((uint)param_1[iVar135] - + (uint)param_2[iVar135]) * + ((uint)param_1[iVar135] - + (uint)param_2[iVar135]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003962dc: + lVar131 = lVar131 + 1; + param_1 = param_1 + (int)param_6; + param_2 = param_2 + (int)param_6; + uVar126 = uVar126 - param_6; + } while ((int)lVar131 < param_5); + } + *param_4 = iVar127; + return 0; + } + param_5 = param_5 * param_6; + iVar135 = 0; + iVar129 = iVar135; + if (0 < param_5 + -3) { + uVar126 = param_5 - 4U >> 2; + iVar129 = uVar126 + 1; + uVar126 = (uVar126 - 0xf >> 4) + 1; + if (param_5 - 4U < 0x3c) { + iVar136 = 0; +LAB_003964ac: + pbVar124 = param_2 + iVar136; + pbVar64 = param_1 + iVar136; + do { + iVar136 = iVar136 + 4; + iVar135 = iVar135 + ((uint)pbVar64[1] - (uint)pbVar124[1]) * + ((uint)pbVar64[1] - (uint)pbVar124[1]) + + ((uint)*pbVar64 - (uint)*pbVar124) * ((uint)*pbVar64 - (uint)*pbVar124) + + ((uint)pbVar64[2] - (uint)pbVar124[2]) * + ((uint)pbVar64[2] - (uint)pbVar124[2]) + + ((uint)pbVar64[3] - (uint)pbVar124[3]) * + ((uint)pbVar64[3] - (uint)pbVar124[3]); + pbVar124 = pbVar124 + 4; + pbVar64 = pbVar64 + 4; + } while (iVar136 < param_5 + -3); + } + else { + iVar135 = 0; + iVar136 = 0; + iVar137 = 0; + iVar139 = 0; + uVar125 = 0; + pbVar124 = param_2; + pbVar64 = param_1; + do { + bVar133 = *pbVar64; + pbVar4 = pbVar64 + 1; + pbVar5 = pbVar64 + 2; + pbVar6 = pbVar64 + 3; + pbVar7 = pbVar64 + 4; + pbVar8 = pbVar64 + 5; + pbVar9 = pbVar64 + 6; + pbVar10 = pbVar64 + 7; + pbVar11 = pbVar64 + 8; + pbVar12 = pbVar64 + 9; + pbVar13 = pbVar64 + 10; + pbVar14 = pbVar64 + 0xb; + pbVar15 = pbVar64 + 0xc; + pbVar16 = pbVar64 + 0xd; + pbVar17 = pbVar64 + 0xe; + pbVar18 = pbVar64 + 0xf; + pbVar19 = pbVar64 + 0x10; + pbVar20 = pbVar64 + 0x11; + pbVar21 = pbVar64 + 0x12; + pbVar22 = pbVar64 + 0x13; + pbVar23 = pbVar64 + 0x14; + pbVar24 = pbVar64 + 0x15; + pbVar25 = pbVar64 + 0x16; + pbVar26 = pbVar64 + 0x17; + pbVar27 = pbVar64 + 0x18; + pbVar28 = pbVar64 + 0x19; + pbVar29 = pbVar64 + 0x1a; + pbVar30 = pbVar64 + 0x1b; + pbVar31 = pbVar64 + 0x1c; + pbVar32 = pbVar64 + 0x1d; + pbVar33 = pbVar64 + 0x1e; + pbVar34 = pbVar64 + 0x1f; + pbVar35 = pbVar64 + 0x20; + pbVar36 = pbVar64 + 0x21; + pbVar37 = pbVar64 + 0x22; + pbVar38 = pbVar64 + 0x23; + pbVar39 = pbVar64 + 0x24; + bVar145 = pbVar64[0x25]; + bVar148 = pbVar64[0x26]; + bVar153 = pbVar64[0x27]; + pbVar40 = pbVar64 + 0x28; + pbVar41 = pbVar64 + 0x29; + pbVar42 = pbVar64 + 0x2a; + pbVar43 = pbVar64 + 0x2b; + pbVar44 = pbVar64 + 0x2c; + pbVar45 = pbVar64 + 0x2d; + pbVar46 = pbVar64 + 0x2e; + pbVar47 = pbVar64 + 0x2f; + pbVar48 = pbVar64 + 0x30; + pbVar49 = pbVar64 + 0x31; + pbVar50 = pbVar64 + 0x32; + pbVar51 = pbVar64 + 0x33; + pbVar52 = pbVar64 + 0x34; + pbVar53 = pbVar64 + 0x35; + pbVar54 = pbVar64 + 0x36; + pbVar55 = pbVar64 + 0x37; + pbVar56 = pbVar64 + 0x38; + pbVar57 = pbVar64 + 0x39; + pbVar58 = pbVar64 + 0x3a; + pbVar59 = pbVar64 + 0x3b; + pbVar60 = pbVar64 + 0x3c; + pbVar61 = pbVar64 + 0x3d; + pbVar62 = pbVar64 + 0x3e; + pbVar63 = pbVar64 + 0x3f; + pbVar64 = pbVar64 + 0x40; + uVar125 = uVar125 + 1; + bVar134 = *pbVar124; + pbVar65 = pbVar124 + 1; + pbVar66 = pbVar124 + 2; + pbVar67 = pbVar124 + 3; + pbVar68 = pbVar124 + 4; + pbVar69 = pbVar124 + 5; + pbVar70 = pbVar124 + 6; + pbVar71 = pbVar124 + 7; + pbVar72 = pbVar124 + 8; + pbVar73 = pbVar124 + 9; + pbVar74 = pbVar124 + 10; + pbVar75 = pbVar124 + 0xb; + pbVar76 = pbVar124 + 0xc; + pbVar77 = pbVar124 + 0xd; + pbVar78 = pbVar124 + 0xe; + pbVar79 = pbVar124 + 0xf; + pbVar80 = pbVar124 + 0x10; + pbVar81 = pbVar124 + 0x11; + pbVar82 = pbVar124 + 0x12; + pbVar83 = pbVar124 + 0x13; + pbVar84 = pbVar124 + 0x14; + pbVar85 = pbVar124 + 0x15; + pbVar86 = pbVar124 + 0x16; + pbVar87 = pbVar124 + 0x17; + pbVar88 = pbVar124 + 0x18; + pbVar89 = pbVar124 + 0x19; + pbVar90 = pbVar124 + 0x1a; + pbVar91 = pbVar124 + 0x1b; + pbVar92 = pbVar124 + 0x1c; + pbVar93 = pbVar124 + 0x1d; + pbVar94 = pbVar124 + 0x1e; + pbVar95 = pbVar124 + 0x1f; + pbVar96 = pbVar124 + 0x20; + pbVar97 = pbVar124 + 0x21; + pbVar98 = pbVar124 + 0x22; + pbVar99 = pbVar124 + 0x23; + bVar138 = pbVar124[0x24]; + bVar146 = pbVar124[0x25]; + bVar149 = pbVar124[0x26]; + bVar154 = pbVar124[0x27]; + pbVar100 = pbVar124 + 0x28; + pbVar101 = pbVar124 + 0x29; + pbVar102 = pbVar124 + 0x2a; + pbVar103 = pbVar124 + 0x2b; + pbVar104 = pbVar124 + 0x2c; + pbVar105 = pbVar124 + 0x2d; + pbVar106 = pbVar124 + 0x2e; + pbVar107 = pbVar124 + 0x2f; + pbVar108 = pbVar124 + 0x30; + pbVar109 = pbVar124 + 0x31; + pbVar110 = pbVar124 + 0x32; + pbVar111 = pbVar124 + 0x33; + pbVar112 = pbVar124 + 0x34; + pbVar113 = pbVar124 + 0x35; + pbVar114 = pbVar124 + 0x36; + pbVar115 = pbVar124 + 0x37; + pbVar116 = pbVar124 + 0x38; + pbVar117 = pbVar124 + 0x39; + pbVar118 = pbVar124 + 0x3a; + pbVar119 = pbVar124 + 0x3b; + pbVar120 = pbVar124 + 0x3c; + pbVar121 = pbVar124 + 0x3d; + pbVar122 = pbVar124 + 0x3e; + pbVar123 = pbVar124 + 0x3f; + pbVar124 = pbVar124 + 0x40; + uVar2 = CONCAT12(*pbVar12,CONCAT11(*pbVar8,*pbVar4)); + /* try { // try from 00396388 to 0049638b has its CatchHandler @ 00396298 */ + /* try { // try from 003963a8 to 004963ab has its CatchHandler @ 00396448 */ + /* try { // try from 003963b0 to 004963cf has its CatchHandler @ 00396298 */ + iVar158 = (uVar2 & 0xff) - (CONCAT12(*pbVar69,(ushort)*pbVar65) & 0xffff); + iVar161 = ((uVar2 & 0xff00) >> 8) - (uint)*pbVar69; + iVar162 = (uint)*pbVar12 - (CONCAT12(*pbVar77,(ushort)*pbVar73) & 0xffff); + iVar163 = (uint)*pbVar16 - (uint)*pbVar77; + uVar3 = CONCAT12(*pbVar14,CONCAT11(*pbVar10,*pbVar6)); + iVar178 = (CONCAT12(*pbVar7,(ushort)bVar133) & 0xffff) - + (CONCAT12(*pbVar68,(ushort)bVar134) & 0xffff); + iVar180 = (uint)*pbVar7 - (uint)*pbVar68; + iVar182 = (CONCAT12(*pbVar15,(ushort)*pbVar11) & 0xffff) - + (CONCAT12(*pbVar76,(ushort)*pbVar72) & 0xffff); + iVar184 = (uint)*pbVar15 - (uint)*pbVar76; + uVar2 = CONCAT12(*pbVar75,CONCAT11(*pbVar71,*pbVar67)); + iVar140 = (CONCAT12(*pbVar24,(ushort)*pbVar20) & 0xffff) - + (CONCAT12(*pbVar85,(ushort)*pbVar81) & 0xffff); + iVar142 = (uint)*pbVar24 - (uint)*pbVar85; + /* try { // try from 003963ec to 004963ef has its CatchHandler @ 00396434 */ + iVar176 = (CONCAT12(*pbVar23,(ushort)*pbVar19) & 0xffff) - + (CONCAT12(*pbVar84,(ushort)*pbVar80) & 0xffff); + iVar177 = (uint)*pbVar23 - (uint)*pbVar84; + iVar188 = (CONCAT12(*pbVar9,(ushort)*pbVar5) & 0xffff) - + (CONCAT12(*pbVar70,(ushort)*pbVar66) & 0xffff); + iVar189 = (uint)*pbVar9 - (uint)*pbVar70; + iVar151 = (CONCAT12(*pbVar17,(ushort)*pbVar13) & 0xffff) - + (CONCAT12(*pbVar78,(ushort)*pbVar74) & 0xffff); + iVar152 = (uint)*pbVar17 - (uint)*pbVar78; + /* try { // try from 003963f4 to 004963f7 has its CatchHandler @ 00396298 */ + iVar140 = iVar140 * iVar140; + iVar142 = iVar142 * iVar142; + iVar143 = ((uint)*pbVar28 - (uint)*pbVar89) * ((uint)*pbVar28 - (uint)*pbVar89); + iVar147 = ((uint)*pbVar32 - (uint)*pbVar93) * ((uint)*pbVar32 - (uint)*pbVar93); + iVar159 = ((CONCAT12(bVar145,CONCAT11(bVar145,*pbVar36)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar146,CONCAT11(bVar146,*pbVar97)) & 0xff00ff) & 0xffff); + iVar155 = (CONCAT12(*pbVar53,(ushort)*pbVar49) & 0xffff) - + (CONCAT12(*pbVar113,(ushort)*pbVar109) & 0xffff); + iVar156 = (uint)*pbVar53 - (uint)*pbVar113; + iVar179 = (CONCAT12(*pbVar39,(ushort)*pbVar35) & 0xffff) - + ((CONCAT12(bVar138,CONCAT11(bVar138,*pbVar96)) & 0xff00ff) & 0xffff); + iVar181 = (uint)*pbVar39 - (uint)bVar138; + iVar183 = (CONCAT12(*pbVar44,(ushort)*pbVar40) & 0xffff) - (uint)*pbVar100; + iVar185 = (uint)*pbVar44 - (uint)*pbVar104; + iVar173 = (CONCAT12(*pbVar25,(ushort)*pbVar21) & 0xffff) - + (CONCAT12(*pbVar86,(ushort)*pbVar82) & 0xffff); + iVar174 = (uint)*pbVar25 - (uint)*pbVar86; + /* catch() { ... } // from try @ 003963ec with catch @ 00396434 */ + iVar186 = (uVar3 & 0xff) - (uVar2 & 0xff); + iVar187 = ((uVar3 & 0xff00) >> 8) - ((uVar2 & 0xff00) >> 8); + iVar150 = (uint)*pbVar14 - (uint)*pbVar75; + iVar175 = ((CONCAT12(bVar148,CONCAT11(bVar148,*pbVar37)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar149,CONCAT11(bVar149,*pbVar98)) & 0xff00ff) & 0xffff); + /* try { // try from 00396444 to 00496447 has its CatchHandler @ 00396298 */ + /* catch() { ... } // from try @ 003963a8 with catch @ 00396448 */ + iVar169 = (CONCAT12(*pbVar52,(ushort)*pbVar48) & 0xffff) - + (CONCAT12(*pbVar112,(ushort)*pbVar108) & 0xffff); + iVar170 = (uint)*pbVar52 - (uint)*pbVar112; + iVar171 = (CONCAT12(*pbVar26,(ushort)*pbVar22) & 0xffff) - + (CONCAT12(*pbVar87,(ushort)*pbVar83) & 0xffff); + iVar172 = (uint)*pbVar26 - (uint)*pbVar87; + /* try { // try from 00396458 to 0049645b has its CatchHandler @ 00396298 */ + /* catch() { ... } // from try @ 00396604 with catch @ 0039645c + catch() { ... } // from try @ 003966a4 with catch @ 0039645c + catch() { ... } // from try @ 003967cc with catch @ 0039645c + catch() { ... } // from try @ 00396878 with catch @ 0039645c + catch() { ... } // from try @ 003968ac with catch @ 0039645c */ + iVar166 = (CONCAT12(*pbVar54,(ushort)*pbVar50) & 0xffff) - + (CONCAT12(*pbVar114,(ushort)*pbVar110) & 0xffff); + iVar167 = (uint)*pbVar54 - (uint)*pbVar114; + iVar168 = ((CONCAT12(bVar153,CONCAT11(bVar153,*pbVar38)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar154,CONCAT11(bVar154,*pbVar99)) & 0xff00ff) & 0xffff); + iVar164 = (CONCAT12(*pbVar55,(ushort)*pbVar51) & 0xffff) - + (CONCAT12(*pbVar115,(ushort)*pbVar111) & 0xffff); + iVar165 = (uint)*pbVar55 - (uint)*pbVar115; + iVar135 = iVar155 * iVar155 + iVar169 * iVar169 + iVar166 * iVar166 + iVar164 * iVar164 + + iVar159 * iVar159 + iVar179 * iVar179 + iVar175 * iVar175 + iVar168 * iVar168 + + iVar140 + iVar176 * iVar176 + iVar173 * iVar173 + iVar171 * iVar171 + + iVar158 * iVar158 + iVar178 * iVar178 + iVar188 * iVar188 + iVar186 * iVar186 + + iVar135; + iVar136 = iVar156 * iVar156 + iVar170 * iVar170 + iVar167 * iVar167 + iVar165 * iVar165 + + ((uint)bVar145 - (uint)bVar146) * ((uint)bVar145 - (uint)bVar146) + + iVar181 * iVar181 + + ((uint)bVar148 - (uint)bVar149) * ((uint)bVar148 - (uint)bVar149) + + ((uint)bVar153 - (uint)bVar154) * ((uint)bVar153 - (uint)bVar154) + + (int)(CONCAT17((char)((uint)iVar142 >> 0x18), + CONCAT16((char)((uint)iVar142 >> 0x10), + CONCAT15((char)((uint)iVar142 >> 8), + CONCAT14((char)iVar142,iVar140)))) >> 0x20) + + iVar177 * iVar177 + iVar174 * iVar174 + iVar172 * iVar172 + + iVar161 * iVar161 + iVar180 * iVar180 + iVar189 * iVar189 + iVar187 * iVar187 + + iVar136; + iVar137 = ((uint)*pbVar57 - (uint)*pbVar117) * ((uint)*pbVar57 - (uint)*pbVar117) + + ((uint)*pbVar56 - (uint)*pbVar116) * ((uint)*pbVar56 - (uint)*pbVar116) + + ((uint)*pbVar58 - (uint)*pbVar118) * ((uint)*pbVar58 - (uint)*pbVar118) + + ((uint)*pbVar59 - (uint)*pbVar119) * ((uint)*pbVar59 - (uint)*pbVar119) + + ((uint)*pbVar41 - (uint)*pbVar101) * ((uint)*pbVar41 - (uint)*pbVar101) + + iVar183 * iVar183 + + ((uint)*pbVar42 - (uint)*pbVar102) * ((uint)*pbVar42 - (uint)*pbVar102) + + ((uint)*pbVar43 - (uint)*pbVar103) * ((uint)*pbVar43 - (uint)*pbVar103) + + iVar143 + ((uint)*pbVar27 - (uint)*pbVar88) * ((uint)*pbVar27 - (uint)*pbVar88) + + ((uint)*pbVar29 - (uint)*pbVar90) * ((uint)*pbVar29 - (uint)*pbVar90) + + ((uint)*pbVar30 - (uint)*pbVar91) * ((uint)*pbVar30 - (uint)*pbVar91) + + iVar162 * iVar162 + iVar182 * iVar182 + iVar151 * iVar151 + iVar150 * iVar150 + + iVar137; + iVar139 = ((uint)*pbVar61 - (uint)*pbVar121) * ((uint)*pbVar61 - (uint)*pbVar121) + + ((uint)*pbVar60 - (uint)*pbVar120) * ((uint)*pbVar60 - (uint)*pbVar120) + + ((uint)*pbVar62 - (uint)*pbVar122) * ((uint)*pbVar62 - (uint)*pbVar122) + + ((uint)*pbVar63 - (uint)*pbVar123) * ((uint)*pbVar63 - (uint)*pbVar123) + + ((uint)*pbVar45 - (uint)*pbVar105) * ((uint)*pbVar45 - (uint)*pbVar105) + + iVar185 * iVar185 + + ((uint)*pbVar46 - (uint)*pbVar106) * ((uint)*pbVar46 - (uint)*pbVar106) + + ((uint)*pbVar47 - (uint)*pbVar107) * ((uint)*pbVar47 - (uint)*pbVar107) + + (int)(CONCAT17((char)((uint)iVar147 >> 0x18), + CONCAT16((char)((uint)iVar147 >> 0x10), + CONCAT15((char)((uint)iVar147 >> 8), + CONCAT14((char)iVar147,iVar143)))) >> 0x20) + + ((uint)*pbVar31 - (uint)*pbVar92) * ((uint)*pbVar31 - (uint)*pbVar92) + + ((uint)*pbVar33 - (uint)*pbVar94) * ((uint)*pbVar33 - (uint)*pbVar94) + + ((uint)*pbVar34 - (uint)*pbVar95) * ((uint)*pbVar34 - (uint)*pbVar95) + + iVar163 * iVar163 + iVar184 * iVar184 + iVar152 * iVar152 + + ((uint)*pbVar18 - (uint)*pbVar79) * ((uint)*pbVar18 - (uint)*pbVar79) + iVar139; + } while (uVar125 < uVar126); + iVar135 = iVar135 + iVar136 + iVar137 + iVar139; + iVar136 = uVar126 * 0x40; + if (uVar126 * 0x10 != iVar129) goto LAB_003964ac; + } + iVar129 = iVar129 * 4; + } + if (iVar129 < param_5) { + lVar131 = (long)iVar129; + uVar125 = param_5 - iVar129; + uVar126 = -(int)(param_1 + lVar131) & 0xf; + uVar1 = (ulong)uVar126; + if (uVar125 < uVar126) { + uVar1 = (ulong)uVar125; + } + if (uVar125 < 0x11) { + uVar1 = (ulong)uVar125; + } + uVar126 = (uint)uVar1; + if (uVar126 != 0) { + iVar136 = iVar129 + 1; + iVar137 = (uint)param_1[lVar131] - (uint)param_2[lVar131]; + iVar135 = iVar135 + iVar137 * iVar137; + if (uVar126 != 1) { + iVar137 = iVar129 + 2; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 2) { + iVar136 = iVar129 + 3; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (uVar126 != 3) { + iVar137 = iVar129 + 4; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 4) { + iVar136 = iVar129 + 5; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (uVar126 != 5) { + iVar137 = iVar129 + 6; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 6) { + /* try { // try from 00396604 to 0049667f has its CatchHandler @ 0039645c */ + iVar136 = iVar129 + 7; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (uVar126 != 7) { + iVar137 = iVar129 + 8; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 8) { + iVar136 = iVar129 + 9; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (uVar126 != 9) { + iVar137 = iVar129 + 10; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 10) { + iVar136 = iVar129 + 0xb; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + /* try { // try from 0039669c to 0049669f has its CatchHandler @ 00396868 */ + if (uVar126 != 0xb) { + /* try { // try from 003966a4 to 0049677b has its CatchHandler @ 0039645c */ + iVar137 = iVar129 + 0xc; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 0xc) { + iVar136 = iVar129 + 0xd; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) + * ((uint)param_1[iVar137] - (uint)param_2[iVar137] + ); + if (uVar126 != 0xd) { + iVar137 = iVar129 + 0xe; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136] + ) * ((uint)param_1[iVar136] - + (uint)param_2[iVar136]); + iVar136 = iVar137; + if (uVar126 != 0xe) { + iVar136 = iVar129 + 0xf; + iVar135 = iVar135 + ((uint)param_1[iVar137] - + (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - + (uint)param_2[iVar137]); + if (uVar126 == 0x10) { + iVar135 = iVar135 + ((uint)param_1[iVar136] - + (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - + (uint)param_2[iVar136]); + iVar136 = iVar129 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar129 = iVar136; + if (uVar126 == uVar125) goto LAB_003969a8; + } + uVar128 = ((uVar125 - uVar126) - 0x10 >> 4) + 1; + iVar136 = uVar128 * 0x10; + if (0xe < (uVar125 - 1) - uVar126) { + iVar137 = 0; + iVar139 = 0; + iVar140 = 0; + iVar142 = 0; + uVar130 = 0; + pbVar124 = param_1 + uVar1 + lVar131; + pbVar64 = param_2 + uVar1 + lVar131; + do { + uVar144 = *(undefined8 *)(pbVar124 + 8); + uVar141 = *(undefined8 *)pbVar124; + uVar130 = uVar130 + 1; + uVar160 = *(undefined8 *)(pbVar64 + 8); + uVar157 = *(undefined8 *)pbVar64; + bVar133 = (byte)((ulong)uVar141 >> 8); + bVar145 = (byte)((ulong)uVar141 >> 0x28); + bVar134 = (byte)((ulong)uVar157 >> 8); + bVar146 = (byte)((ulong)uVar157 >> 0x28); + bVar148 = (byte)((ulong)uVar144 >> 0x28); + bVar138 = (byte)((ulong)uVar160 >> 8); + bVar149 = (byte)((ulong)uVar160 >> 0x28); + iVar164 = ((CONCAT12(bVar133,(short)uVar141) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar134,(short)uVar157) & 0xff00ff) & 0xffff); + iVar165 = (uint)bVar133 - (uint)bVar134; + iVar166 = (uint)(byte)((ulong)uVar141 >> 0x10) - (uint)(byte)((ulong)uVar157 >> 0x10); + iVar167 = (uint)(byte)((ulong)uVar141 >> 0x18) - (uint)(byte)((ulong)uVar157 >> 0x18); + iVar152 = (CONCAT12(bVar145,(ushort)(byte)((ulong)uVar141 >> 0x20)) & 0xffff) - + (CONCAT12(bVar146,(ushort)(byte)((ulong)uVar157 >> 0x20)) & 0xffff); + iVar155 = (uint)bVar145 - (uint)bVar146; + iVar156 = (uint)(byte)((ulong)uVar141 >> 0x30) - (uint)(byte)((ulong)uVar157 >> 0x30); + iVar158 = (uint)(byte)((ulong)uVar141 >> 0x38) - (uint)(byte)((ulong)uVar157 >> 0x38); + iVar159 = (uint)(byte)uVar144 - ((CONCAT12(bVar138,(short)uVar160) & 0xff00ff) & 0xffff); + iVar161 = (uint)(byte)((ulong)uVar144 >> 8) - (uint)bVar138; + iVar162 = (uint)(byte)((ulong)uVar144 >> 0x10) - (uint)(byte)((ulong)uVar160 >> 0x10); + iVar163 = (uint)(byte)((ulong)uVar144 >> 0x18) - (uint)(byte)((ulong)uVar160 >> 0x18); + iVar143 = (CONCAT12(bVar148,(ushort)(byte)((ulong)uVar144 >> 0x20)) & 0xffff) - + (CONCAT12(bVar149,(ushort)(byte)((ulong)uVar160 >> 0x20)) & 0xffff); + iVar147 = (uint)bVar148 - (uint)bVar149; + iVar150 = (uint)(byte)((ulong)uVar144 >> 0x30) - (uint)(byte)((ulong)uVar160 >> 0x30); + iVar151 = (uint)(byte)((ulong)uVar144 >> 0x38) - (uint)(byte)((ulong)uVar160 >> 0x38); + iVar137 = iVar137 + iVar164 * iVar164 + iVar152 * iVar152 + iVar159 * iVar159 + + iVar143 * iVar143; + iVar139 = iVar139 + iVar165 * iVar165 + iVar155 * iVar155 + iVar161 * iVar161 + + iVar147 * iVar147; + iVar140 = iVar140 + iVar166 * iVar166 + iVar156 * iVar156 + iVar162 * iVar162 + + iVar150 * iVar150; + iVar142 = iVar142 + iVar167 * iVar167 + iVar158 * iVar158 + iVar163 * iVar163 + + iVar151 * iVar151; + pbVar124 = pbVar124 + 0x10; + pbVar64 = pbVar64 + 0x10; + } while (uVar130 < uVar128); + /* try { // try from 003967c4 to 004967c7 has its CatchHandler @ 0039689c */ + iVar129 = iVar129 + iVar136; + /* try { // try from 003967cc to 00496853 has its CatchHandler @ 0039645c */ + iVar135 = iVar135 + iVar137 + iVar139 + iVar140 + iVar142; + if (iVar136 == uVar125 - uVar126) goto LAB_003969a8; + } + iVar136 = iVar129 + 1; + iVar135 = iVar135 + ((uint)param_1[iVar129] - (uint)param_2[iVar129]) * + ((uint)param_1[iVar129] - (uint)param_2[iVar129]); + if (iVar136 < param_5) { + iVar137 = iVar129 + 2; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + if (iVar137 < param_5) { + iVar136 = iVar129 + 3; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (iVar136 < param_5) { + iVar137 = iVar129 + 4; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + if (iVar137 < param_5) { + iVar136 = iVar129 + 5; + /* catch() { ... } // from try @ 0039669c with catch @ 00396868 */ + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (iVar136 < param_5) { + /* try { // try from 00396878 to 00496893 has its CatchHandler @ 0039645c */ + iVar137 = iVar129 + 6; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + if (iVar137 < param_5) { + iVar136 = iVar129 + 7; + /* catch() { ... } // from try @ 003967c4 with catch @ 0039689c */ + /* try { // try from 003968ac to 004968af has its CatchHandler @ 0039645c */ + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (iVar136 < param_5) { + iVar137 = iVar129 + 8; + /* catch() { ... } // from try @ 003969ec with catch @ 003968c0 + catch() { ... } // from try @ 00396a14 with catch @ 003968c0 + catch() { ... } // from try @ 00396a58 with catch @ 003968c0 + catch() { ... } // from try @ 00396aac with catch @ 003968c0 + catch() { ... } // from try @ 00396ac0 with catch @ 003968c0 */ + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + if (iVar137 < param_5) { + iVar136 = iVar129 + 9; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (iVar136 < param_5) { + iVar137 = iVar129 + 10; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + if (iVar137 < param_5) { + iVar136 = iVar129 + 0xb; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (iVar136 < param_5) { + iVar137 = iVar129 + 0xc; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) * + ((uint)param_1[iVar136] - (uint)param_2[iVar136]); + if (iVar137 < param_5) { + iVar136 = iVar129 + 0xd; + iVar135 = iVar135 + ((uint)param_1[iVar137] - (uint)param_2[iVar137]) * + ((uint)param_1[iVar137] - (uint)param_2[iVar137]); + if (iVar136 < param_5) { + iVar129 = iVar129 + 0xe; + iVar135 = iVar135 + ((uint)param_1[iVar136] - (uint)param_2[iVar136]) + * ((uint)param_1[iVar136] - (uint)param_2[iVar136] + ); + if (iVar129 < param_5) { + iVar135 = iVar135 + ((uint)param_1[iVar129] - (uint)param_2[iVar129] + ) * ((uint)param_1[iVar129] - + (uint)param_2[iVar129]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003969a8: + *param_4 = iVar127 + iVar135; + return 0; +} + + +================================================================== + +### FUNC 003969d8 (2964 bytes) name=FUN_003969d8 + +undefined8 FUN_003969d8(char *param_1,long param_2,int *param_3,int param_4,uint param_5) + +{ + uint uVar1; + int iVar2; + undefined1 auVar3 [16]; + int iVar4; + ulong uVar5; + uint uVar6; + int iVar7; + uint uVar8; + char *pcVar9; + uint uVar10; + int iVar11; + ulong uVar12; + long lVar13; + uint uVar14; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + int iVar38; + undefined1 auVar39 [16]; + undefined1 auVar40 [16]; + + iVar38 = *param_3; + if (param_2 != 0) { + if (0 < param_4) { + /* try { // try from 003969ec to 004969ef has its CatchHandler @ 003968c0 */ + uVar14 = -(int)param_1; + lVar13 = 0; + do { + if ((*(char *)(param_2 + lVar13) != '\0') && (0 < (int)param_5)) { + /* try { // try from 00396a0c to 00496a0f has its CatchHandler @ 00396ab0 */ + /* try { // try from 00396a14 to 00496a33 has its CatchHandler @ 003968c0 */ + uVar8 = uVar14 & 0xf; + if (param_5 < (uVar14 & 0xf)) { + uVar8 = param_5; + } + if (param_5 < 0x12) { + uVar8 = param_5; + } + uVar10 = uVar8; + if (uVar8 != 0) { + if (iVar38 < (int)ABS((double)(int)*param_1)) { + iVar38 = (int)ABS((double)(int)*param_1); + } + if (uVar8 != 1) { + /* try { // try from 00396a50 to 00496a53 has its CatchHandler @ 00396a9c */ + /* try { // try from 00396a58 to 00496a5b has its CatchHandler @ 003968c0 */ + if (iVar38 < (int)ABS((double)(int)param_1[1])) { + iVar38 = (int)ABS((double)(int)param_1[1]); + } + if (uVar8 != 2) { + if (iVar38 < (int)ABS((double)(int)param_1[2])) { + iVar38 = (int)ABS((double)(int)param_1[2]); + } + if (uVar8 != 3) { + if (iVar38 < (int)ABS((double)(int)param_1[3])) { + iVar38 = (int)ABS((double)(int)param_1[3]); + } + /* catch() { ... } // from try @ 00396a50 with catch @ 00396a9c */ + if (uVar8 != 4) { + /* try { // try from 00396aac to 00496aaf has its CatchHandler @ 003968c0 */ + /* catch() { ... } // from try @ 00396a0c with catch @ 00396ab0 */ + if (iVar38 < (int)ABS((double)(int)param_1[4])) { + iVar38 = (int)ABS((double)(int)param_1[4]); + } + /* try { // try from 00396ac0 to 00496ac3 has its CatchHandler @ 003968c0 */ + if (uVar8 != 5) { + /* catch() { ... } // from try @ 00396d44 with catch @ 00396ac4 + catch() { ... } // from try @ 00396d6c with catch @ 00396ac4 + catch() { ... } // from try @ 00396e70 with catch @ 00396ac4 + catch() { ... } // from try @ 00397088 with catch @ 00396ac4 + catch() { ... } // from try @ 003970b0 with catch @ 00396ac4 + catch() { ... } // from try @ 00397174 with catch @ 00396ac4 + catch() { ... } // from try @ 00397188 with catch @ 00396ac4 */ + if (iVar38 < (int)ABS((double)(int)param_1[5])) { + iVar38 = (int)ABS((double)(int)param_1[5]); + } + if (uVar8 != 6) { + if (iVar38 < (int)ABS((double)(int)param_1[6])) { + iVar38 = (int)ABS((double)(int)param_1[6]); + } + if (uVar8 == 7) { + uVar10 = 7; + } + else { + if (iVar38 < (int)ABS((double)(int)param_1[7])) { + iVar38 = (int)ABS((double)(int)param_1[7]); + } + if (uVar8 != 8) { + if (iVar38 < (int)ABS((double)(int)param_1[8])) { + iVar38 = (int)ABS((double)(int)param_1[8]); + } + if (uVar8 != 9) { + if (iVar38 < (int)ABS((double)(int)param_1[9])) { + iVar38 = (int)ABS((double)(int)param_1[9]); + } + if (uVar8 != 10) { + if (iVar38 < (int)ABS((double)(int)param_1[10])) { + iVar38 = (int)ABS((double)(int)param_1[10]); + } + if (uVar8 != 0xb) { + if (iVar38 < (int)ABS((double)(int)param_1[0xb])) { + iVar38 = (int)ABS((double)(int)param_1[0xb]); + } + if (uVar8 != 0xc) { + if (iVar38 < (int)ABS((double)(int)param_1[0xc])) { + iVar38 = (int)ABS((double)(int)param_1[0xc]); + } + if (uVar8 != 0xd) { + if (iVar38 < (int)ABS((double)(int)param_1[0xd])) { + iVar38 = (int)ABS((double)(int)param_1[0xd]); + } + if (uVar8 != 0xe) { + if (iVar38 < (int)ABS((double)(int)param_1[0xe])) { + iVar38 = (int)ABS((double)(int)param_1[0xe]); + } + if (uVar8 != 0xf) { + if (iVar38 < (int)ABS((double)(int)param_1[0xf])) { + iVar38 = (int)ABS((double)(int)param_1[0xf]); + } + if (uVar8 == 0x11) { + if (iVar38 < (int)ABS((double)(int)param_1[0x10])) { + iVar38 = (int)ABS((double)(int)param_1[0x10]); + } + } + else { + uVar10 = 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (param_5 == uVar8) goto LAB_00396f74; + } + uVar1 = ((param_5 - uVar8) - 0x10 >> 4) + 1; + iVar7 = uVar1 * 0x10; + if (0xe < (param_5 - 1) - uVar8) { + auVar39._4_4_ = iVar38; + auVar39._0_4_ = iVar38; + auVar39._8_4_ = iVar38; + auVar39._12_4_ = iVar38; + uVar6 = 0; + pcVar9 = param_1 + uVar8; + do { + uVar6 = uVar6 + 1; + auVar30._0_8_ = (long)(int)(short)*pcVar9; + auVar30._8_8_ = (long)(int)(short)pcVar9[1]; + auVar33._0_8_ = (long)(int)(short)pcVar9[4]; + auVar33._8_8_ = (long)(int)(short)pcVar9[5]; + auVar19._0_8_ = (long)(int)(short)pcVar9[6]; + auVar19._8_8_ = (long)(int)(short)pcVar9[7]; + auVar26._0_8_ = (long)(int)(short)pcVar9[2]; + auVar26._8_8_ = (long)(int)(short)pcVar9[3]; + auVar25._0_8_ = (long)(int)(short)pcVar9[8]; + auVar25._8_8_ = (long)(int)(short)pcVar9[9]; + auVar31 = NEON_scvtf(auVar30,8); + auVar34 = NEON_scvtf(auVar33,8); + auVar16 = NEON_scvtf(auVar19,8); + auVar21._0_8_ = (long)(int)(short)pcVar9[10]; + auVar21._8_8_ = (long)(int)(short)pcVar9[0xb]; + auVar20 = NEON_scvtf(auVar26,8); + auVar35._4_4_ = (int)(long)ABS(auVar31._8_8_); + auVar35._0_4_ = (int)(long)ABS(auVar31._0_8_); + auVar35._8_4_ = (int)(long)ABS(auVar20._0_8_); + auVar35._12_4_ = (int)(long)ABS(auVar20._8_8_); + auVar26 = NEON_scvtf(auVar25,8); + auVar31._0_8_ = (long)(int)(short)pcVar9[0xc]; + auVar31._8_8_ = (long)(int)(short)pcVar9[0xd]; + auVar20._4_4_ = (int)(long)ABS(auVar34._8_8_); + auVar20._0_4_ = (int)(long)ABS(auVar34._0_8_); + auVar20._8_4_ = (int)(long)ABS(auVar16._0_8_); + auVar20._12_4_ = (int)(long)ABS(auVar16._8_8_); + auVar19 = NEON_smax(auVar20,auVar35,4); + auVar20 = NEON_scvtf(auVar21,8); + auVar16._0_8_ = (long)(int)(short)pcVar9[0xe]; + auVar16._8_8_ = (long)(int)(short)pcVar9[0xf]; + auVar27._4_4_ = (int)(long)ABS(auVar26._8_8_); + auVar27._0_4_ = (int)(long)ABS(auVar26._0_8_); + auVar27._8_4_ = (int)(long)ABS(auVar20._0_8_); + auVar27._12_4_ = (int)(long)ABS(auVar20._8_8_); + auVar21 = NEON_scvtf(auVar31,8); + auVar19 = NEON_smax(auVar19,auVar27,4); + auVar20 = NEON_scvtf(auVar16,8); + auVar34._4_4_ = (int)(long)ABS(auVar21._8_8_); + auVar34._0_4_ = (int)(long)ABS(auVar21._0_8_); + auVar34._8_4_ = (int)(long)ABS(auVar20._0_8_); + auVar34._12_4_ = (int)(long)ABS(auVar20._8_8_); + /* try { // try from 00396d44 to 00496d47 has its CatchHandler @ 00396ac4 */ + auVar20 = NEON_smax(auVar19,auVar34,4); + auVar39 = NEON_smax(auVar39,auVar20,4); + pcVar9 = pcVar9 + 0x10; + } while (uVar6 < uVar1); + iVar38 = NEON_smaxv(auVar39,4); + uVar10 = uVar10 + iVar7; + if (param_5 - uVar8 == iVar7) goto LAB_00396f74; + } + /* try { // try from 00396d64 to 00496d67 has its CatchHandler @ 00397178 */ + /* try { // try from 00396d6c to 00496e4b has its CatchHandler @ 00396ac4 */ + if (iVar38 < (int)ABS((double)(int)param_1[(int)uVar10])) { + iVar38 = (int)ABS((double)(int)param_1[(int)uVar10]); + } + if ((int)(uVar10 + 1) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 1)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 1)]); + } + if ((int)(uVar10 + 2) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 2)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 2)]); + } + if ((int)(uVar10 + 3) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 3)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 3)]); + } + if ((int)(uVar10 + 4) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 4)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 4)]); + } + if ((int)(uVar10 + 5) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 5)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 5)]); + } + if ((int)(uVar10 + 6) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 6)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 6)]); + } + if ((int)(uVar10 + 7) < (int)param_5) { + /* try { // try from 00396e68 to 00496e6b has its CatchHandler @ 00397164 */ + /* try { // try from 00396e70 to 00497037 has its CatchHandler @ 00396ac4 */ + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 7)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 7)]); + } + if ((int)(uVar10 + 8) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 8)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 8)]); + } + if ((int)(uVar10 + 9) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 9)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 9)]); + } + if ((int)(uVar10 + 10) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 10)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 10)]); + } + if ((int)(uVar10 + 0xb) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 0xb)])) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 0xb)]); + } + if ((int)(uVar10 + 0xc) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 0xc)])) + { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 0xc)]); + } + if ((int)(uVar10 + 0xd) < (int)param_5) { + if (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 0xd)]) + ) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 0xd)]); + } + if (((int)(uVar10 + 0xe) < (int)param_5) && + (iVar38 < (int)ABS((double)(int)param_1[(int)(uVar10 + 0xe)]) + )) { + iVar38 = (int)ABS((double)(int)param_1[(int)(uVar10 + 0xe)]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00396f74: + lVar13 = lVar13 + 1; + param_1 = param_1 + (int)param_5; + uVar14 = uVar14 - param_5; + } while ((int)lVar13 < param_4); + } + *param_3 = iVar38; + return 0; + } + param_5 = param_4 * param_5; + iVar7 = 0; + if ((int)param_5 < 1) goto LAB_0039752c; + uVar14 = -(int)param_1 & 0xf; + if (param_5 < uVar14) { + uVar14 = param_5; + } + uVar12 = (ulong)uVar14; + if ((int)param_5 < 0x12) { + uVar12 = (ulong)param_5; +LAB_00396fdc: + iVar7 = (int)ABS((double)(int)*param_1); + if (iVar7 < 0) { + iVar7 = 0; + } + iVar11 = (int)uVar12; + uVar5 = uVar12; + if (iVar11 != 1) { + if (iVar7 < (int)ABS((double)(int)param_1[1])) { + iVar7 = (int)ABS((double)(int)param_1[1]); + } + if (iVar11 != 2) { + if (iVar7 < (int)ABS((double)(int)param_1[2])) { + iVar7 = (int)ABS((double)(int)param_1[2]); + } + if (iVar11 != 3) { + if (iVar7 < (int)ABS((double)(int)param_1[3])) { + iVar7 = (int)ABS((double)(int)param_1[3]); + } + if (iVar11 != 4) { + if (iVar7 < (int)ABS((double)(int)param_1[4])) { + iVar7 = (int)ABS((double)(int)param_1[4]); + } + if (iVar11 != 5) { + /* try { // try from 00397080 to 00497083 has its CatchHandler @ 003970a0 */ + /* try { // try from 00397088 to 0049708b has its CatchHandler @ 00396ac4 */ + if (iVar7 < (int)ABS((double)(int)param_1[5])) { + iVar7 = (int)ABS((double)(int)param_1[5]); + } + if (iVar11 != 6) { + /* catch() { ... } // from try @ 00397080 with catch @ 003970a0 */ + /* try { // try from 003970b0 to 0049715b has its CatchHandler @ 00396ac4 */ + if (iVar7 < (int)ABS((double)(int)param_1[6])) { + iVar7 = (int)ABS((double)(int)param_1[6]); + } + if (iVar11 != 7) { + if (iVar7 < (int)ABS((double)(int)param_1[7])) { + iVar7 = (int)ABS((double)(int)param_1[7]); + } + if (iVar11 != 8) { + if (iVar7 < (int)ABS((double)(int)param_1[8])) { + iVar7 = (int)ABS((double)(int)param_1[8]); + } + if (iVar11 != 9) { + if (iVar7 < (int)ABS((double)(int)param_1[9])) { + iVar7 = (int)ABS((double)(int)param_1[9]); + } + if (iVar11 == 10) { + uVar5 = 10; + } + else { + if (iVar7 < (int)ABS((double)(int)param_1[10])) { + iVar7 = (int)ABS((double)(int)param_1[10]); + } + if (iVar11 != 0xb) { + if (iVar7 < (int)ABS((double)(int)param_1[0xb])) { + iVar7 = (int)ABS((double)(int)param_1[0xb]); + } + if (iVar11 != 0xc) { + /* catch() { ... } // from try @ 00396e68 with catch @ 00397164 */ + if (iVar7 < (int)ABS((double)(int)param_1[0xc])) { + iVar7 = (int)ABS((double)(int)param_1[0xc]); + } + /* try { // try from 00397174 to 00497177 has its CatchHandler @ 00396ac4 */ + /* catch() { ... } // from try @ 00396d64 with catch @ 00397178 */ + if (iVar11 != 0xd) { + /* try { // try from 00397188 to 0049718b has its CatchHandler @ 00396ac4 */ + if (iVar7 < (int)ABS((double)(int)param_1[0xd])) { + iVar7 = (int)ABS((double)(int)param_1[0xd]); + } + if (iVar11 != 0xe) { + /* catch() { ... } // from try @ 00397458 with catch @ 003971a4 + catch() { ... } // from try @ 003974a4 with catch @ 003971a4 + catch() { ... } // from try @ 00397558 with catch @ 003971a4 + catch() { ... } // from try @ 003975b4 with catch @ 003971a4 + catch() { ... } // from try @ 003975c8 with catch @ 003971a4 */ + if (iVar7 < (int)ABS((double)(int)param_1[0xe])) { + iVar7 = (int)ABS((double)(int)param_1[0xe]); + } + if (iVar11 != 0xf) { + if (iVar7 < (int)ABS((double)(int)param_1[0xf])) { + iVar7 = (int)ABS((double)(int)param_1[0xf]); + } + if (iVar11 == 0x11) { + if (iVar7 < (int)ABS((double)(int)param_1[0x10])) { + iVar7 = (int)ABS((double)(int)param_1[0x10]); + } + } + else { + uVar5 = 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar4 = (int)uVar5; + if (param_5 - iVar11 == 0) goto LAB_0039752c; + } + else { + iVar4 = 0; + if (uVar14 != 0) goto LAB_00396fdc; + } + iVar2 = param_5 - (int)uVar12; + uVar14 = (iVar2 - 0x10U >> 4) + 1; + iVar11 = uVar14 * 0x10; + if (0xe < (param_5 - 1) - (int)uVar12) { + auVar40._4_4_ = iVar7; + auVar40._0_4_ = iVar7; + auVar40._8_4_ = iVar7; + auVar40._12_4_ = iVar7; + uVar8 = 0; + pcVar9 = param_1 + uVar12; + do { + uVar8 = uVar8 + 1; + auVar32._0_8_ = (long)(int)(short)*pcVar9; + auVar32._8_8_ = (long)(int)(short)pcVar9[1]; + auVar36._0_8_ = (long)(int)(short)pcVar9[4]; + auVar36._8_8_ = (long)(int)(short)pcVar9[5]; + auVar17._0_8_ = (long)(int)(short)pcVar9[6]; + auVar17._8_8_ = (long)(int)(short)pcVar9[7]; + auVar22._0_8_ = (long)(int)(short)pcVar9[2]; + auVar22._8_8_ = (long)(int)(short)pcVar9[3]; + auVar28._0_8_ = (long)(int)(short)pcVar9[8]; + auVar28._8_8_ = (long)(int)(short)pcVar9[9]; + auVar16 = NEON_scvtf(auVar32,8); + auVar19 = NEON_scvtf(auVar36,8); + auVar39 = NEON_scvtf(auVar17,8); + auVar18._0_8_ = (long)(int)(short)pcVar9[10]; + auVar18._8_8_ = (long)(int)(short)pcVar9[0xb]; + auVar20 = NEON_scvtf(auVar22,8); + auVar37._4_4_ = (int)(long)ABS(auVar16._8_8_); + auVar37._0_4_ = (int)(long)ABS(auVar16._0_8_); + auVar37._8_4_ = (int)(long)ABS(auVar20._0_8_); + auVar37._12_4_ = (int)(long)ABS(auVar20._8_8_); + auVar16 = NEON_scvtf(auVar28,8); + auVar23._0_8_ = (long)(int)(short)pcVar9[0xc]; + auVar23._8_8_ = (long)(int)(short)pcVar9[0xd]; + auVar3._4_4_ = (int)(long)ABS(auVar19._8_8_); + auVar3._0_4_ = (int)(long)ABS(auVar19._0_8_); + auVar3._8_4_ = (int)(long)ABS(auVar39._0_8_); + auVar3._12_4_ = (int)(long)ABS(auVar39._8_8_); + auVar20 = NEON_smax(auVar3,auVar37,4); + auVar39 = NEON_scvtf(auVar18,8); + auVar15._0_8_ = (long)(int)(short)pcVar9[0xe]; + auVar15._8_8_ = (long)(int)(short)pcVar9[0xf]; + auVar29._4_4_ = (int)(long)ABS(auVar16._8_8_); + auVar29._0_4_ = (int)(long)ABS(auVar16._0_8_); + auVar29._8_4_ = (int)(long)ABS(auVar39._0_8_); + auVar29._12_4_ = (int)(long)ABS(auVar39._8_8_); + auVar16 = NEON_scvtf(auVar23,8); + auVar20 = NEON_smax(auVar20,auVar29,4); + auVar39 = NEON_scvtf(auVar15,8); + auVar24._4_4_ = (int)(long)ABS(auVar16._8_8_); + auVar24._0_4_ = (int)(long)ABS(auVar16._0_8_); + auVar24._8_4_ = (int)(long)ABS(auVar39._0_8_); + auVar24._12_4_ = (int)(long)ABS(auVar39._8_8_); + auVar39 = NEON_smax(auVar20,auVar24,4); + auVar40 = NEON_smax(auVar40,auVar39,4); + pcVar9 = pcVar9 + 0x10; + } while (uVar8 < uVar14); + iVar7 = NEON_smaxv(auVar40,4); + iVar4 = iVar4 + iVar11; + if (iVar11 == iVar2) goto LAB_0039752c; + } + iVar11 = iVar4 + 1; + if (iVar7 < (int)ABS((double)(int)param_1[iVar4])) { + iVar7 = (int)ABS((double)(int)param_1[iVar4]); + } + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + iVar2 = iVar4 + 2; + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar11 = iVar4 + 3; + if (iVar7 < (int)ABS((double)(int)param_1[iVar2])) { + iVar7 = (int)ABS((double)(int)param_1[iVar2]); + } + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + iVar2 = iVar4 + 4; + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar11 = iVar4 + 5; + if (iVar7 < (int)ABS((double)(int)param_1[iVar2])) { + iVar7 = (int)ABS((double)(int)param_1[iVar2]); + } + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + iVar2 = iVar4 + 6; + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar11 = iVar4 + 7; + if (iVar7 < (int)ABS((double)(int)param_1[iVar2])) { + iVar7 = (int)ABS((double)(int)param_1[iVar2]); + } + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if (iVar4 + 8 < (int)param_5) { + iVar11 = iVar4 + 9; + if (iVar7 < (int)ABS((double)(int)param_1[iVar4 + 8])) { + iVar7 = (int)ABS((double)(int)param_1[iVar4 + 8]); + } + /* try { // try from 00397458 to 0049745b has its CatchHandler @ 003971a4 */ + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + iVar2 = iVar4 + 10; + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar11 = iVar4 + 0xb; + /* try { // try from 0039749c to 0049749f has its CatchHandler @ 003975b8 */ + if (iVar7 < (int)ABS((double)(int)param_1[iVar2])) { + iVar7 = (int)ABS((double)(int)param_1[iVar2]); + } + /* try { // try from 003974a4 to 00497533 has its CatchHandler @ 003971a4 */ + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + iVar2 = iVar4 + 0xc; + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if (param_5 - iVar2 != 0 && iVar2 <= (int)param_5) { + iVar11 = iVar4 + 0xd; + if (iVar7 < (int)ABS((double)(int)param_1[iVar2])) { + iVar7 = (int)ABS((double)(int)param_1[iVar2]); + } + if (param_5 - iVar11 != 0 && iVar11 <= (int)param_5) { + iVar4 = iVar4 + 0xe; + if (iVar7 < (int)ABS((double)(int)param_1[iVar11])) { + iVar7 = (int)ABS((double)(int)param_1[iVar11]); + } + if ((param_5 - iVar4 != 0 && iVar4 <= (int)param_5) && + (iVar7 < (int)ABS((double)(int)param_1[iVar4]))) { + iVar7 = (int)ABS((double)(int)param_1[iVar4]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039752c: + if (iVar38 < iVar7) { + iVar38 = iVar7; + } + *param_3 = iVar38; + return 0; +} + + +================================================================== + +### FUNC 0039756c (3264 bytes) name=FUN_0039756c + +undefined8 +FUN_0039756c(char *param_1,char *param_2,long param_3,int *param_4,int param_5,uint param_6) + +{ + uint uVar1; + undefined1 auVar2 [16]; + undefined4 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined8 uVar7; + undefined4 uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined4 uVar11; + undefined8 uVar12; + undefined4 uVar13; + undefined4 uVar14; + undefined8 uVar15; + undefined4 uVar16; + ulong uVar17; + int iVar18; + int iVar19; + uint uVar20; + int iVar21; + uint uVar22; + char *pcVar23; + int iVar24; + uint uVar25; + ulong uVar26; + long lVar27; + uint uVar28; + char *pcVar29; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + int iVar35; + undefined1 auVar36 [16]; + undefined1 auVar37 [16]; + + iVar35 = *param_4; + if (param_3 != 0) { + if (0 < param_5) { + uVar28 = -(int)param_1; + lVar27 = 0; + do { + if ((*(char *)(param_3 + lVar27) != '\0') && (0 < (int)param_6)) { + /* catch() { ... } // from try @ 00397550 with catch @ 003975a4 */ + uVar22 = uVar28 & 0xf; + if (param_6 < (uVar28 & 0xf)) { + uVar22 = param_6; + } + if (param_6 < 0x11) { + uVar22 = param_6; + } + /* try { // try from 003975b4 to 004975b7 has its CatchHandler @ 003971a4 */ + uVar25 = uVar22; + if (uVar22 != 0) { + /* catch() { ... } // from try @ 0039749c with catch @ 003975b8 */ + uVar1 = (int)*param_1 - (int)*param_2 >> 0x1f; + /* try { // try from 003975c8 to 004975cb has its CatchHandler @ 003971a4 */ + /* catch() { ... } // from try @ 003979c0 with catch @ 003975cc + catch() { ... } // from try @ 00397b10 with catch @ 003975cc + catch() { ... } // from try @ 00397b80 with catch @ 003975cc + catch() { ... } // from try @ 00397d3c with catch @ 003975cc + catch() { ... } // from try @ 00397d9c with catch @ 003975cc + catch() { ... } // from try @ 00397e9c with catch @ 003975cc + catch() { ... } // from try @ 00398128 with catch @ 003975cc + catch() { ... } // from try @ 0039813c with catch @ 003975cc + catch() { ... } // from try @ 00398150 with catch @ 003975cc */ + iVar24 = ((int)*param_1 - (int)*param_2 ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 1) { + uVar1 = (int)param_1[1] - (int)param_2[1] >> 0x1f; + iVar24 = ((int)param_1[1] - (int)param_2[1] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 2) { + uVar1 = (int)param_1[2] - (int)param_2[2] >> 0x1f; + iVar24 = ((int)param_1[2] - (int)param_2[2] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 3) { + uVar1 = (int)param_1[3] - (int)param_2[3] >> 0x1f; + iVar24 = ((int)param_1[3] - (int)param_2[3] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 4) { + uVar1 = (int)param_1[4] - (int)param_2[4] >> 0x1f; + iVar24 = ((int)param_1[4] - (int)param_2[4] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 5) { + uVar1 = (int)param_1[5] - (int)param_2[5] >> 0x1f; + iVar24 = ((int)param_1[5] - (int)param_2[5] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 6) { + uVar1 = (int)param_1[6] - (int)param_2[6] >> 0x1f; + iVar24 = ((int)param_1[6] - (int)param_2[6] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 == 7) { + uVar25 = 7; + } + else { + uVar1 = (int)param_1[7] - (int)param_2[7] >> 0x1f; + iVar24 = ((int)param_1[7] - (int)param_2[7] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 8) { + uVar1 = (int)param_1[8] - (int)param_2[8] >> 0x1f; + iVar24 = ((int)param_1[8] - (int)param_2[8] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 9) { + uVar1 = (int)param_1[9] - (int)param_2[9] >> 0x1f; + iVar24 = ((int)param_1[9] - (int)param_2[9] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 10) { + uVar1 = (int)param_1[10] - (int)param_2[10] >> 0x1f; + iVar24 = ((int)param_1[10] - (int)param_2[10] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 0xb) { + uVar1 = (int)param_1[0xb] - (int)param_2[0xb] >> 0x1f; + iVar24 = ((int)param_1[0xb] - (int)param_2[0xb] ^ uVar1) - uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 0xc) { + uVar1 = (int)param_1[0xc] - (int)param_2[0xc] >> 0x1f; + iVar24 = ((int)param_1[0xc] - (int)param_2[0xc] ^ uVar1) - uVar1 + ; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 0xd) { + uVar1 = (int)param_1[0xd] - (int)param_2[0xd] >> 0x1f; + iVar24 = ((int)param_1[0xd] - (int)param_2[0xd] ^ uVar1) - + uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 != 0xe) { + uVar1 = (int)param_1[0xe] - (int)param_2[0xe] >> 0x1f; + iVar24 = ((int)param_1[0xe] - (int)param_2[0xe] ^ uVar1) - + uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (uVar22 == 0x10) { + uVar1 = (int)param_1[0xf] - (int)param_2[0xf] >> 0x1f; + iVar24 = ((int)param_1[0xf] - (int)param_2[0xf] ^ uVar1) - + uVar1; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + } + else { + uVar25 = 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (param_6 == uVar22) goto LAB_00397b9c; + } + uVar1 = ((param_6 - uVar22) - 0x10 >> 4) + 1; + iVar24 = uVar1 * 0x10; + if (0xe < (param_6 - 1) - uVar22) { + auVar36._4_4_ = iVar35; + auVar36._0_4_ = iVar35; + auVar36._8_4_ = iVar35; + auVar36._12_4_ = iVar35; + uVar20 = 0; + pcVar23 = param_2 + uVar22; + pcVar29 = param_1 + uVar22; + do { + uVar7 = *(undefined8 *)(pcVar29 + 8); + uVar4 = *(undefined8 *)pcVar29; + uVar20 = uVar20 + 1; + uVar15 = *(undefined8 *)(pcVar23 + 8); + uVar12 = *(undefined8 *)pcVar23; + uVar3 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x20) - + (int)(short)(char)((ulong)uVar12 >> 0x20)); + uVar5 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x28) - + (int)(short)(char)((ulong)uVar12 >> 0x28)); + uVar6 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x30) - + (int)(short)(char)((ulong)uVar12 >> 0x30)); + uVar8 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x38) - + (int)(short)(char)((ulong)uVar12 >> 0x38)); + auVar32._0_4_ = MP_INT_ABS((int)(short)(char)uVar4 - (int)(short)(char)uVar12); + auVar32._4_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 8) - + (int)(short)(char)((ulong)uVar12 >> 8)); + auVar32._8_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x10) - + (int)(short)(char)((ulong)uVar12 >> 0x10)); + auVar32._12_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x18) - + (int)(short)(char)((ulong)uVar12 >> 0x18)); + auVar30._0_4_ = MP_INT_ABS((int)(short)(char)uVar7 - (int)(short)(char)uVar15); + auVar30._4_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 8) - + (int)(short)(char)((ulong)uVar15 >> 8)); + auVar30._8_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x10) - + (int)(short)(char)((ulong)uVar15 >> 0x10)); + auVar30._12_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x18) - + (int)(short)(char)((ulong)uVar15 >> 0x18)); + uVar11 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x20) - + (int)(short)(char)((ulong)uVar15 >> 0x20)); + uVar13 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x28) - + (int)(short)(char)((ulong)uVar15 >> 0x28)); + uVar14 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x30) - + (int)(short)(char)((ulong)uVar15 >> 0x30)); + uVar16 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x38) - + (int)(short)(char)((ulong)uVar15 >> 0x38)); + auVar33._4_2_ = (short)uVar5; + auVar33._0_4_ = uVar3; + auVar33._6_2_ = (short)((uint)uVar5 >> 0x10); + auVar33._8_2_ = (short)uVar6; + auVar33._10_2_ = (short)((uint)uVar6 >> 0x10); + auVar33._12_2_ = (short)uVar8; + auVar33._14_2_ = (short)((uint)uVar8 >> 0x10); + auVar33 = NEON_smax(auVar33,auVar32,4); + auVar33 = NEON_smax(auVar33,auVar30,4); + auVar9._4_2_ = (short)uVar13; + auVar9._0_4_ = uVar11; + auVar9._6_2_ = (short)((uint)uVar13 >> 0x10); + auVar9._8_2_ = (short)uVar14; + auVar9._10_2_ = (short)((uint)uVar14 >> 0x10); + auVar9._12_2_ = (short)uVar16; + auVar9._14_2_ = (short)((uint)uVar16 >> 0x10); + auVar33 = NEON_smax(auVar33,auVar9,4); + auVar36 = NEON_smax(auVar36,auVar33,4); + pcVar23 = pcVar23 + 0x10; + pcVar29 = pcVar29 + 0x10; + } while (uVar20 < uVar1); + iVar35 = NEON_smaxv(auVar36,4); + uVar25 = uVar25 + iVar24; + if (param_6 - uVar22 == iVar24) goto LAB_00397b9c; + } + iVar24 = uVar25 + 1; + uVar22 = (int)param_1[(int)uVar25] - (int)param_2[(int)uVar25] >> 0x1f; + iVar21 = ((int)param_1[(int)uVar25] - (int)param_2[(int)uVar25] ^ uVar22) - uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 2; + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 3; + uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 4; + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 5; + uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + /* try { // try from 003979c0 to 00497ac7 has its CatchHandler @ 003975cc */ + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 6; + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 7; + uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 8; + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) - uVar22; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 9; + uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar22) - uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 10; + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) - uVar22 + ; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 0xb; + uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar22) - + uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 0xc; + /* try { // try from 00397b08 to 00497b0b has its CatchHandler @ 00398140 */ + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) - + uVar22; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + /* try { // try from 00397b10 to 00497b2f has its CatchHandler @ 003975cc */ + if (iVar21 < (int)param_6) { + iVar24 = uVar25 + 0xd; + uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar22) - + uVar22; + if (iVar35 < iVar21) { + iVar35 = iVar21; + } + if (iVar24 < (int)param_6) { + iVar21 = uVar25 + 0xe; + uVar22 = (int)param_1[iVar24] - (int)param_2[iVar24] >> 0x1f; + iVar24 = ((int)param_1[iVar24] - (int)param_2[iVar24] ^ uVar22) + - uVar22; + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + /* try { // try from 00397b78 to 00497b7b has its CatchHandler @ 00398118 */ + /* try { // try from 00397b80 to 00497cfb has its CatchHandler @ 003975cc */ + if ((iVar21 < (int)param_6) && + (uVar22 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f + , iVar24 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ + uVar22) - uVar22, iVar35 < iVar24)) { + iVar35 = iVar24; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00397b9c: + lVar27 = lVar27 + 1; + param_1 = param_1 + (int)param_6; + param_2 = param_2 + (int)param_6; + uVar28 = uVar28 - param_6; + } while ((int)lVar27 < param_5); + } + *param_4 = iVar35; + return 0; + } + param_6 = param_5 * param_6; + iVar24 = 0; + if ((int)param_6 < 1) goto LAB_003981ec; + uVar28 = -(int)param_1 & 0xf; + if (param_6 < uVar28) { + uVar28 = param_6; + } + uVar26 = (ulong)uVar28; + if ((int)param_6 < 0x11) { + uVar26 = (ulong)param_6; +LAB_00397c08: + uVar28 = (int)*param_1 - (int)*param_2 >> 0x1f; + iVar24 = ((int)*param_1 - (int)*param_2 ^ uVar28) - uVar28; + if (iVar24 < 0) { + iVar24 = 0; + } + iVar19 = (int)uVar26; + uVar17 = uVar26; + if (iVar19 != 1) { + uVar28 = (int)param_1[1] - (int)param_2[1] >> 0x1f; + iVar21 = ((int)param_1[1] - (int)param_2[1] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 2) { + uVar28 = (int)param_1[2] - (int)param_2[2] >> 0x1f; + iVar21 = ((int)param_1[2] - (int)param_2[2] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 3) { + uVar28 = (int)param_1[3] - (int)param_2[3] >> 0x1f; + iVar21 = ((int)param_1[3] - (int)param_2[3] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 4) { + uVar28 = (int)param_1[4] - (int)param_2[4] >> 0x1f; + iVar21 = ((int)param_1[4] - (int)param_2[4] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 5) { + uVar28 = (int)param_1[5] - (int)param_2[5] >> 0x1f; + iVar21 = ((int)param_1[5] - (int)param_2[5] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 6) { + uVar28 = (int)param_1[6] - (int)param_2[6] >> 0x1f; + iVar21 = ((int)param_1[6] - (int)param_2[6] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 7) { + uVar28 = (int)param_1[7] - (int)param_2[7] >> 0x1f; + /* try { // try from 00397d34 to 00497d37 has its CatchHandler @ 0039812c */ + iVar21 = ((int)param_1[7] - (int)param_2[7] ^ uVar28) - uVar28; + /* try { // try from 00397d3c to 00497d5b has its CatchHandler @ 003975cc */ + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 8) { + uVar28 = (int)param_1[8] - (int)param_2[8] >> 0x1f; + iVar21 = ((int)param_1[8] - (int)param_2[8] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 9) { + uVar28 = (int)param_1[9] - (int)param_2[9] >> 0x1f; + iVar21 = ((int)param_1[9] - (int)param_2[9] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + /* try { // try from 00397d94 to 00497d97 has its CatchHandler @ 00397e8c */ + if (iVar19 == 10) { + uVar17 = 10; + } + else { + /* try { // try from 00397d9c to 00497e73 has its CatchHandler @ 003975cc */ + uVar28 = (int)param_1[10] - (int)param_2[10] >> 0x1f; + iVar21 = ((int)param_1[10] - (int)param_2[10] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xb) { + uVar28 = (int)param_1[0xb] - (int)param_2[0xb] >> 0x1f; + iVar21 = ((int)param_1[0xb] - (int)param_2[0xb] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xc) { + uVar28 = (int)param_1[0xc] - (int)param_2[0xc] >> 0x1f; + iVar21 = ((int)param_1[0xc] - (int)param_2[0xc] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xd) { + uVar28 = (int)param_1[0xd] - (int)param_2[0xd] >> 0x1f; + iVar21 = ((int)param_1[0xd] - (int)param_2[0xd] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 != 0xe) { + uVar28 = (int)param_1[0xe] - (int)param_2[0xe] >> 0x1f; + iVar21 = ((int)param_1[0xe] - (int)param_2[0xe] ^ uVar28) - uVar28; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + if (iVar19 == 0x10) { + uVar28 = (int)param_1[0xf] - (int)param_2[0xf] >> 0x1f; + iVar21 = ((int)param_1[0xf] - (int)param_2[0xf] ^ uVar28) - uVar28 + ; + if (iVar24 < iVar21) { + iVar24 = iVar21; + } + } + else { + uVar17 = 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar21 = (int)uVar17; + if (param_6 - iVar19 == 0) goto LAB_003981ec; + } + else { + iVar21 = 0; + if (uVar28 != 0) goto LAB_00397c08; + } + /* catch() { ... } // from try @ 00397d94 with catch @ 00397e8c */ + iVar18 = param_6 - (int)uVar26; + /* try { // try from 00397e9c to 0049810f has its CatchHandler @ 003975cc */ + uVar28 = (iVar18 - 0x10U >> 4) + 1; + iVar19 = uVar28 * 0x10; + if (0xe < (param_6 - 1) - (int)uVar26) { + auVar37._4_4_ = iVar24; + auVar37._0_4_ = iVar24; + auVar37._8_4_ = iVar24; + auVar37._12_4_ = iVar24; + uVar22 = 0; + pcVar23 = param_2 + uVar26; + pcVar29 = param_1 + uVar26; + do { + uVar7 = *(undefined8 *)(pcVar29 + 8); + uVar4 = *(undefined8 *)pcVar29; + uVar22 = uVar22 + 1; + uVar15 = *(undefined8 *)(pcVar23 + 8); + uVar12 = *(undefined8 *)pcVar23; + uVar3 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x20) - + (int)(short)(char)((ulong)uVar12 >> 0x20)); + uVar5 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x28) - + (int)(short)(char)((ulong)uVar12 >> 0x28)); + uVar6 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x30) - + (int)(short)(char)((ulong)uVar12 >> 0x30)); + uVar8 = MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x38) - + (int)(short)(char)((ulong)uVar12 >> 0x38)); + auVar34._0_4_ = MP_INT_ABS((int)(short)(char)uVar4 - (int)(short)(char)uVar12); + auVar34._4_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 8) - (int)(short)(char)((ulong)uVar12 >> 8) + ); + auVar34._8_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x10) - + (int)(short)(char)((ulong)uVar12 >> 0x10)); + auVar34._12_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar4 >> 0x18) - + (int)(short)(char)((ulong)uVar12 >> 0x18)); + auVar31._0_4_ = MP_INT_ABS((int)(short)(char)uVar7 - (int)(short)(char)uVar15); + auVar31._4_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 8) - (int)(short)(char)((ulong)uVar15 >> 8) + ); + auVar31._8_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x10) - + (int)(short)(char)((ulong)uVar15 >> 0x10)); + auVar31._12_4_ = + MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x18) - + (int)(short)(char)((ulong)uVar15 >> 0x18)); + uVar11 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x20) - + (int)(short)(char)((ulong)uVar15 >> 0x20)); + uVar13 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x28) - + (int)(short)(char)((ulong)uVar15 >> 0x28)); + uVar14 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x30) - + (int)(short)(char)((ulong)uVar15 >> 0x30)); + uVar16 = MP_INT_ABS((int)(short)(char)((ulong)uVar7 >> 0x38) - + (int)(short)(char)((ulong)uVar15 >> 0x38)); + auVar2._4_2_ = (short)uVar5; + auVar2._0_4_ = uVar3; + auVar2._6_2_ = (short)((uint)uVar5 >> 0x10); + auVar2._8_2_ = (short)uVar6; + auVar2._10_2_ = (short)((uint)uVar6 >> 0x10); + auVar2._12_2_ = (short)uVar8; + auVar2._14_2_ = (short)((uint)uVar8 >> 0x10); + auVar36 = NEON_smax(auVar2,auVar34,4); + auVar36 = NEON_smax(auVar36,auVar31,4); + auVar10._4_2_ = (short)uVar13; + auVar10._0_4_ = uVar11; + auVar10._6_2_ = (short)((uint)uVar13 >> 0x10); + auVar10._8_2_ = (short)uVar14; + auVar10._10_2_ = (short)((uint)uVar14 >> 0x10); + auVar10._12_2_ = (short)uVar16; + auVar10._14_2_ = (short)((uint)uVar16 >> 0x10); + auVar36 = NEON_smax(auVar36,auVar10,4); + auVar37 = NEON_smax(auVar37,auVar36,4); + pcVar23 = pcVar23 + 0x10; + pcVar29 = pcVar29 + 0x10; + } while (uVar22 < uVar28); + iVar24 = NEON_smaxv(auVar37,4); + iVar21 = iVar21 + iVar19; + if (iVar19 == iVar18) goto LAB_003981ec; + } + iVar19 = iVar21 + 1; + uVar28 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f; + iVar18 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 2; + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 3; + uVar28 = (int)param_1[iVar18] - (int)param_2[iVar18] >> 0x1f; + iVar18 = ((int)param_1[iVar18] - (int)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 4; + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 5; + uVar28 = (int)param_1[iVar18] - (int)param_2[iVar18] >> 0x1f; + iVar18 = ((int)param_1[iVar18] - (int)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 6; + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 7; + uVar28 = (int)param_1[iVar18] - (int)param_2[iVar18] >> 0x1f; + iVar18 = ((int)param_1[iVar18] - (int)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 8; + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (iVar18 < (int)param_6) { + iVar19 = iVar21 + 9; + uVar28 = (int)param_1[iVar18] - (int)param_2[iVar18] >> 0x1f; + iVar18 = ((int)param_1[iVar18] - (int)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar18 = iVar21 + 10; + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 0xb; + /* catch() { ... } // from try @ 00397b78 with catch @ 00398118 */ + /* try { // try from 00398128 to 0049812b has its CatchHandler @ 003975cc */ + uVar28 = (int)param_1[iVar18] - (int)param_2[iVar18] >> 0x1f; + iVar18 = ((int)param_1[iVar18] - (int)param_2[iVar18] ^ uVar28) - uVar28; + /* catch() { ... } // from try @ 00397d34 with catch @ 0039812c */ + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + /* try { // try from 0039813c to 0049813f has its CatchHandler @ 003975cc */ + iVar18 = iVar21 + 0xc; + /* catch() { ... } // from try @ 00397b08 with catch @ 00398140 */ + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + /* try { // try from 00398150 to 0049830b has its CatchHandler @ 003975cc */ + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if (param_6 - iVar18 != 0 && iVar18 <= (int)param_6) { + iVar19 = iVar21 + 0xd; + uVar28 = (int)param_1[iVar18] - (int)param_2[iVar18] >> 0x1f; + iVar18 = ((int)param_1[iVar18] - (int)param_2[iVar18] ^ uVar28) - uVar28; + if (iVar24 < iVar18) { + iVar24 = iVar18; + } + if (param_6 - iVar19 != 0 && iVar19 <= (int)param_6) { + iVar21 = iVar21 + 0xe; + uVar28 = (int)param_1[iVar19] - (int)param_2[iVar19] >> 0x1f; + iVar19 = ((int)param_1[iVar19] - (int)param_2[iVar19] ^ uVar28) - uVar28 + ; + if (iVar24 < iVar19) { + iVar24 = iVar19; + } + if ((param_6 - iVar21 != 0 && iVar21 <= (int)param_6) && + (uVar28 = (int)param_1[iVar21] - (int)param_2[iVar21] >> 0x1f, + iVar21 = ((int)param_1[iVar21] - (int)param_2[iVar21] ^ uVar28) - + uVar28, iVar24 < iVar21)) { + iVar24 = iVar21; + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003981ec: + if (iVar35 < iVar24) { + iVar35 = iVar24; + } + *param_4 = iVar35; + return 0; +} + + +================================================================== + +### FUNC 0039822c (3816 bytes) name=FUN_0039822c + +undefined8 FUN_0039822c(char *param_1,long param_2,int *param_3,int param_4,uint param_5) + +{ + ulong uVar1; + char *pcVar2; + uint uVar64; + uint uVar65; + int iVar66; + uint uVar67; + uint uVar68; + long lVar69; + uint uVar70; + int iVar71; + undefined1 auVar72 [16]; + undefined1 auVar73 [16]; + undefined1 auVar74 [16]; + int iVar75; + int iVar77; + int iVar78; + int iVar79; + undefined1 auVar76 [16]; + undefined1 auVar80 [16]; + undefined1 auVar81 [16]; + undefined1 auVar82 [16]; + undefined1 auVar83 [16]; + int iVar87; + int iVar88; + undefined1 auVar84 [16]; + undefined1 auVar85 [16]; + undefined1 auVar86 [16]; + int iVar89; + undefined1 auVar90 [16]; + undefined1 auVar91 [16]; + undefined1 auVar92 [16]; + undefined1 auVar93 [16]; + undefined1 auVar94 [16]; + undefined1 auVar95 [16]; + undefined1 auVar96 [16]; + undefined1 auVar97 [16]; + undefined1 auVar98 [16]; + undefined1 auVar99 [16]; + undefined1 auVar100 [16]; + undefined1 auVar101 [16]; + undefined1 auVar102 [16]; + undefined1 auVar103 [16]; + undefined1 auVar104 [16]; + undefined1 auVar105 [16]; + undefined1 auVar106 [16]; + undefined1 auVar107 [16]; + char cVar108; + char cVar109; + char cVar110; + undefined1 auVar111 [16]; + undefined1 auVar112 [16]; + undefined1 auVar113 [16]; + undefined1 auVar114 [16]; + undefined1 auVar115 [16]; + undefined1 auVar116 [16]; + undefined1 auVar117 [16]; + undefined1 auVar118 [16]; + undefined1 auVar119 [16]; + undefined1 auVar120 [16]; + undefined1 auVar121 [16]; + undefined1 auVar122 [16]; + undefined1 auVar123 [16]; + undefined1 auVar124 [16]; + undefined1 auVar125 [16]; + undefined1 auVar126 [16]; + undefined1 auVar127 [16]; + undefined1 auVar128 [16]; + undefined1 auVar129 [16]; + char *pcVar3; + char *pcVar4; + char *pcVar5; + char *pcVar6; + char *pcVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + char *pcVar17; + char *pcVar18; + char *pcVar19; + char *pcVar20; + char *pcVar21; + char *pcVar22; + char *pcVar23; + char *pcVar24; + char *pcVar25; + char *pcVar26; + char *pcVar27; + char *pcVar28; + char *pcVar29; + char *pcVar30; + char *pcVar31; + char *pcVar32; + char *pcVar33; + char *pcVar34; + char *pcVar35; + char *pcVar36; + char *pcVar37; + char *pcVar38; + char *pcVar39; + char *pcVar40; + char *pcVar41; + char *pcVar42; + char *pcVar43; + char *pcVar44; + char *pcVar45; + char *pcVar46; + char *pcVar47; + char *pcVar48; + char *pcVar49; + char *pcVar50; + char *pcVar51; + char *pcVar52; + char *pcVar53; + char *pcVar54; + char *pcVar55; + char *pcVar56; + char *pcVar57; + char *pcVar58; + char *pcVar59; + char *pcVar60; + char *pcVar61; + char *pcVar62; + char *pcVar63; + + iVar66 = *param_3; + if (param_2 != 0) { + if (0 < param_4) { + uVar65 = -(int)param_1; + lVar69 = 0; + do { + if ((*(char *)(param_2 + lVar69) != '\0') && (0 < (int)param_5)) { + uVar64 = uVar65 & 0xf; + if (param_5 < (uVar65 & 0xf)) { + uVar64 = param_5; + } + if (param_5 < 0x12) { + uVar64 = param_5; + } + uVar67 = uVar64; + if (uVar64 != 0) { + iVar66 = iVar66 + (int)ABS((double)(int)*param_1); + if ((((uVar64 != 1) && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[1]), uVar64 != 2)) && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[2]), uVar64 != 3)) && + (((iVar66 = iVar66 + (int)ABS((double)(int)param_1[3]), uVar64 != 4 && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[4]), uVar64 != 5)) && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[5]), uVar64 != 6)))) { + /* catch() { ... } // from try @ 00398570 with catch @ 00398324 + catch() { ... } // from try @ 003985bc with catch @ 00398324 + catch() { ... } // from try @ 0039862c with catch @ 00398324 + catch() { ... } // from try @ 003986b0 with catch @ 00398324 + catch() { ... } // from try @ 003986c4 with catch @ 00398324 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[6]); + if (uVar64 == 7) { + uVar67 = 7; + } + else { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[7]); + if (((uVar64 != 8) && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[8]), uVar64 != 9)) && + ((iVar66 = iVar66 + (int)ABS((double)(int)param_1[9]), uVar64 != 10 && + ((((iVar66 = iVar66 + (int)ABS((double)(int)param_1[10]), uVar64 != 0xb && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[0xb]), uVar64 != 0xc)) && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[0xc]), uVar64 != 0xd)) && + ((iVar66 = iVar66 + (int)ABS((double)(int)param_1[0xd]), uVar64 != 0xe && + (iVar66 = iVar66 + (int)ABS((double)(int)param_1[0xe]), uVar64 != 0xf)))))))) + { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[0xf]); + if (uVar64 == 0x11) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[0x10]); + } + else { + uVar67 = 0x10; + } + } + } + } + if (param_5 == uVar64) goto LAB_00398750; + } + uVar68 = ((param_5 - uVar64) - 0x10 >> 4) + 1; + iVar71 = uVar68 * 0x10; + if (0xe < (param_5 - 1) - uVar64) { + iVar75 = 0; + iVar77 = 0; + iVar78 = 0; + iVar79 = 0; + uVar70 = 0; + pcVar63 = param_1 + uVar64; + do { + uVar70 = uVar70 + 1; + auVar84._0_8_ = (long)(int)(short)*pcVar63; + auVar84._8_8_ = (long)(int)(short)pcVar63[1]; + auVar80._0_8_ = (long)(int)(short)pcVar63[2]; + auVar80._8_8_ = (long)(int)(short)pcVar63[3]; + auVar85._0_8_ = (long)(int)(short)pcVar63[4]; + auVar85._8_8_ = (long)(int)(short)pcVar63[5]; + auVar73._0_8_ = (long)(int)(short)pcVar63[6]; + auVar73._8_8_ = (long)(int)(short)pcVar63[7]; + auVar95 = NEON_scvtf(auVar84,8); + auVar84 = NEON_scvtf(auVar80,8); + auVar85 = NEON_scvtf(auVar85,8); + auVar90._0_8_ = (long)(int)(short)pcVar63[8]; + auVar90._8_8_ = (long)(int)(short)pcVar63[9]; + auVar73 = NEON_scvtf(auVar73,8); + auVar74._0_8_ = (long)(int)(short)pcVar63[10]; + auVar74._8_8_ = (long)(int)(short)pcVar63[0xb]; + auVar90 = NEON_scvtf(auVar90,8); + auVar86._0_8_ = (long)(int)(short)pcVar63[0xc]; + auVar86._8_8_ = (long)(int)(short)pcVar63[0xd]; + auVar74 = NEON_scvtf(auVar74,8); + auVar72._0_8_ = (long)(int)(short)pcVar63[0xe]; + auVar72._8_8_ = (long)(int)(short)pcVar63[0xf]; + auVar80 = NEON_scvtf(auVar86,8); + auVar72 = NEON_scvtf(auVar72,8); + iVar75 = (int)(long)ABS(auVar80._0_8_) + + (int)(long)ABS(auVar90._0_8_) + + (int)(long)ABS(auVar85._0_8_) + (int)(long)ABS(auVar95._0_8_) + iVar75; + iVar77 = (int)(long)ABS(auVar80._8_8_) + + (int)(long)ABS(auVar90._8_8_) + + (int)(long)ABS(auVar85._8_8_) + (int)(long)ABS(auVar95._8_8_) + iVar77; + iVar78 = (int)(long)ABS(auVar72._0_8_) + + (int)(long)ABS(auVar74._0_8_) + + (int)(long)ABS(auVar73._0_8_) + (int)(long)ABS(auVar84._0_8_) + iVar78; + iVar79 = (int)(long)ABS(auVar72._8_8_) + + (int)(long)ABS(auVar74._8_8_) + + (int)(long)ABS(auVar73._8_8_) + (int)(long)ABS(auVar84._8_8_) + iVar79; + pcVar63 = pcVar63 + 0x10; + } while (uVar70 < uVar68); + uVar67 = uVar67 + iVar71; + /* try { // try from 00398570 to 00498573 has its CatchHandler @ 00398324 */ + iVar66 = iVar66 + iVar75 + iVar77 + iVar78 + iVar79; + if (param_5 - uVar64 == iVar71) goto LAB_00398750; + } + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)uVar67]); + if ((int)(uVar67 + 1) < (int)param_5) { + /* try { // try from 003985b4 to 004985b7 has its CatchHandler @ 003986a0 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 1)]); + if ((int)(uVar67 + 2) < (int)param_5) { + /* try { // try from 003985bc to 004985db has its CatchHandler @ 00398324 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 2)]); + if ((int)(uVar67 + 3) < (int)param_5) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 3)]); + if ((int)(uVar67 + 4) < (int)param_5) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 4)]); + if ((int)(uVar67 + 5) < (int)param_5) { + /* try { // try from 00398624 to 00498627 has its CatchHandler @ 003986b4 */ + /* try { // try from 0039862c to 0049862f has its CatchHandler @ 00398324 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 5)]); + if ((int)(uVar67 + 6) < (int)param_5) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 6)]); + if ((int)(uVar67 + 7) < (int)param_5) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 7)]); + if ((int)(uVar67 + 8) < (int)param_5) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 8)]); + if ((int)(uVar67 + 9) < (int)param_5) { + /* catch() { ... } // from try @ 003985b4 with catch @ 003986a0 */ + /* try { // try from 003986b0 to 004986b3 has its CatchHandler @ 00398324 */ + /* catch() { ... } // from try @ 00398624 with catch @ 003986b4 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 9)]); + if ((int)(uVar67 + 10) < (int)param_5) { + /* try { // try from 003986c4 to 004986c7 has its CatchHandler @ 00398324 */ + /* catch() { ... } // from try @ 003986ec with catch @ 003986c8 + catch() { ... } // from try @ 0039873c with catch @ 003986c8 + catch() { ... } // from try @ 00398754 with catch @ 003986c8 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 10)]); + if ((int)(uVar67 + 0xb) < (int)param_5) { + /* try { // try from 003986ec to 00498717 has its CatchHandler @ 003986c8 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 0xb)] + ); + if ((int)(uVar67 + 0xc) < (int)param_5) { + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + 0xc + )]); + if ((int)(uVar67 + 0xd) < (int)param_5) { + /* try { // try from 00398734 to 00498737 has its CatchHandler @ 00398744 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + + 0xd)]); + if ((int)(uVar67 + 0xe) < (int)param_5) { + /* try { // try from 0039873c to 0049873f has its CatchHandler @ 003986c8 */ + /* catch() { ... } // from try @ 00398734 with catch @ 00398744 */ + iVar66 = iVar66 + (int)ABS((double)(int)param_1[(int)(uVar67 + + 0xe)]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00398750: + lVar69 = lVar69 + 1; + /* try { // try from 00398754 to 00498757 has its CatchHandler @ 003986c8 */ + param_1 = param_1 + (int)param_5; + /* catch() { ... } // from try @ 003987b0 with catch @ 00398758 + catch() { ... } // from try @ 00398804 with catch @ 00398758 + catch() { ... } // from try @ 003989f4 with catch @ 00398758 + catch() { ... } // from try @ 00398a5c with catch @ 00398758 + catch() { ... } // from try @ 00398ab8 with catch @ 00398758 + catch() { ... } // from try @ 00398acc with catch @ 00398758 + catch() { ... } // from try @ 00398ae0 with catch @ 00398758 */ + uVar65 = uVar65 - param_5; + } while ((int)lVar69 < param_4); + } + *param_3 = iVar66; + return 0; + } + param_4 = param_4 * param_5; + iVar71 = 0; + iVar75 = iVar71; + if (0 < param_4 + -3) { + uVar65 = param_4 - 4U >> 2; + /* try { // try from 003987b0 to 004987b3 has its CatchHandler @ 00398758 */ + iVar75 = uVar65 + 1; + uVar65 = (uVar65 - 0xf >> 4) + 1; + if (param_4 - 4U < 0x3c) { + iVar77 = 0; +LAB_00398b34: + /* try { // try from 00398b34 to 00498b37 has its CatchHandler @ 00398ae4 */ + pcVar63 = param_1 + iVar77; + do { + iVar77 = iVar77 + 4; + /* try { // try from 00398b80 to 00498b83 has its CatchHandler @ 00398eb4 */ + /* try { // try from 00398b88 to 00498e47 has its CatchHandler @ 00398ae4 */ + iVar71 = iVar71 + (int)ABS((double)(int)*pcVar63) + (int)ABS((double)(byte)pcVar63[1]) + + (int)ABS((double)(byte)pcVar63[2]) + (int)ABS((double)(byte)pcVar63[3]); + pcVar63 = pcVar63 + 4; + } while (iVar77 < param_4 + -3); + } + else { + iVar71 = 0; + iVar77 = 0; + iVar78 = 0; + iVar79 = 0; + uVar64 = 0; + pcVar63 = param_1; + do { + cVar108 = *pcVar63; + pcVar2 = pcVar63 + 1; + pcVar3 = pcVar63 + 2; + pcVar4 = pcVar63 + 3; + pcVar5 = pcVar63 + 4; + pcVar6 = pcVar63 + 5; + pcVar7 = pcVar63 + 6; + pcVar8 = pcVar63 + 7; + pcVar9 = pcVar63 + 8; + pcVar10 = pcVar63 + 9; + pcVar11 = pcVar63 + 10; + pcVar12 = pcVar63 + 0xb; + pcVar13 = pcVar63 + 0xc; + pcVar14 = pcVar63 + 0xd; + pcVar15 = pcVar63 + 0xe; + pcVar16 = pcVar63 + 0xf; + pcVar17 = pcVar63 + 0x10; + pcVar18 = pcVar63 + 0x11; + pcVar19 = pcVar63 + 0x12; + pcVar20 = pcVar63 + 0x13; + pcVar21 = pcVar63 + 0x14; + pcVar22 = pcVar63 + 0x15; + pcVar23 = pcVar63 + 0x16; + pcVar24 = pcVar63 + 0x17; + pcVar25 = pcVar63 + 0x18; + pcVar26 = pcVar63 + 0x19; + pcVar27 = pcVar63 + 0x1a; + pcVar28 = pcVar63 + 0x1b; + pcVar29 = pcVar63 + 0x1c; + pcVar30 = pcVar63 + 0x1d; + pcVar31 = pcVar63 + 0x1e; + pcVar32 = pcVar63 + 0x1f; + pcVar33 = pcVar63 + 0x20; + pcVar34 = pcVar63 + 0x21; + pcVar35 = pcVar63 + 0x22; + pcVar36 = pcVar63 + 0x23; + cVar109 = pcVar63[0x24]; + pcVar37 = pcVar63 + 0x25; + pcVar38 = pcVar63 + 0x26; + pcVar39 = pcVar63 + 0x27; + pcVar40 = pcVar63 + 0x28; + pcVar41 = pcVar63 + 0x29; + pcVar42 = pcVar63 + 0x2a; + pcVar43 = pcVar63 + 0x2b; + cVar110 = pcVar63[0x2c]; + pcVar44 = pcVar63 + 0x2d; + pcVar45 = pcVar63 + 0x2e; + pcVar46 = pcVar63 + 0x2f; + pcVar47 = pcVar63 + 0x30; + pcVar48 = pcVar63 + 0x31; + pcVar49 = pcVar63 + 0x32; + pcVar50 = pcVar63 + 0x33; + pcVar51 = pcVar63 + 0x34; + pcVar52 = pcVar63 + 0x35; + pcVar53 = pcVar63 + 0x36; + pcVar54 = pcVar63 + 0x37; + pcVar55 = pcVar63 + 0x38; + pcVar56 = pcVar63 + 0x39; + pcVar57 = pcVar63 + 0x3a; + pcVar58 = pcVar63 + 0x3b; + pcVar59 = pcVar63 + 0x3c; + pcVar60 = pcVar63 + 0x3d; + pcVar61 = pcVar63 + 0x3e; + pcVar62 = pcVar63 + 0x3f; + pcVar63 = pcVar63 + 0x40; + uVar64 = uVar64 + 1; + /* try { // try from 003987fc to 004987ff has its CatchHandler @ 00398abc */ + /* try { // try from 00398804 to 004989b3 has its CatchHandler @ 00398758 */ + auVar111._0_8_ = (long)(int)(short)*pcVar2; + auVar111._8_8_ = (long)(int)(short)*pcVar6; + auVar97._0_8_ = (long)(int)(short)*pcVar9; + auVar97._8_8_ = (long)(int)(short)*pcVar13; + auVar117._0_8_ = (long)(int)(short)cVar108; + auVar117._8_8_ = (long)(int)(short)*pcVar5; + auVar112._0_8_ = (long)(int)(short)*pcVar10; + auVar112._8_8_ = (long)(int)(short)*pcVar14; + auVar118 = NEON_scvtf(auVar111,8); + auVar111 = NEON_scvtf(auVar97,8); + auVar122._0_8_ = (long)(int)(short)*pcVar3; + auVar122._8_8_ = (long)(int)(short)*pcVar7; + auVar121 = NEON_scvtf(auVar117,8); + auVar117 = NEON_scvtf(auVar112,8); + auVar107._0_8_ = (long)(int)(short)*pcVar11; + auVar107._8_8_ = (long)(int)(short)*pcVar15; + auVar114._0_8_ = (long)(int)(short)*pcVar18; + auVar114._8_8_ = (long)(int)(short)*pcVar22; + auVar91._0_8_ = (long)(int)(short)*pcVar26; + auVar91._8_8_ = (long)(int)(short)*pcVar30; + auVar125 = NEON_scvtf(auVar122,8); + auVar112 = NEON_scvtf(auVar107,8); + auVar119._0_8_ = (long)(int)(short)*pcVar17; + auVar119._8_8_ = (long)(int)(short)*pcVar21; + auVar96._0_8_ = (long)(int)(short)*pcVar25; + auVar96._8_8_ = (long)(int)(short)*pcVar29; + auVar90 = NEON_scvtf(auVar91,8); + auVar113._0_8_ = (long)(int)(short)*pcVar12; + auVar113._8_8_ = (long)(int)(short)*pcVar16; + auVar122 = NEON_scvtf(auVar119,8); + auVar129._0_8_ = (long)(int)(short)*pcVar19; + auVar129._8_8_ = (long)(int)(short)*pcVar23; + auVar128._0_8_ = (long)(int)(short)*pcVar4; + auVar128._8_8_ = (long)(int)(short)*pcVar8; + auVar100._0_8_ = (long)(int)(short)*pcVar27; + auVar100._8_8_ = (long)(int)(short)*pcVar31; + auVar119 = NEON_scvtf(auVar114,8); + iVar87 = CONCAT13((short)*pcVar40 >> 0xf,(int3)(short)*pcVar40); + auVar98._0_8_ = (long)iVar87; + auVar98._8_8_ = + (long)(int)(CONCAT17((short)cVar110 >> 0xf, + CONCAT16((short)cVar110 >> 0xf, + CONCAT15(cVar110 >> 7,CONCAT14(cVar110,iVar87)))) >> 0x20 + ); + auVar96 = NEON_scvtf(auVar96,8); + auVar127._0_8_ = (long)(int)(short)*pcVar34; + auVar127._8_8_ = (long)(int)(short)*pcVar37; + iVar87 = CONCAT13((short)*pcVar33 >> 0xf,(int3)(short)*pcVar33); + auVar123._0_8_ = (long)iVar87; + auVar123._8_8_ = + (long)(int)(CONCAT17((short)cVar109 >> 0xf, + CONCAT16((short)cVar109 >> 0xf, + CONCAT15(cVar109 >> 7,CONCAT14(cVar109,iVar87)))) >> 0x20 + ); + auVar97 = NEON_scvtf(auVar113,8); + auVar113 = NEON_scvtf(auVar129,8); + auVar129 = NEON_scvtf(auVar128,8); + auVar92._0_8_ = (long)(int)(short)*pcVar41; + auVar92._8_8_ = (long)(int)(short)*pcVar44; + auVar100 = NEON_scvtf(auVar100,8); + auVar91 = NEON_scvtf(auVar98,8); + auVar126._0_8_ = (long)(int)(short)*pcVar20; + auVar126._8_8_ = (long)(int)(short)*pcVar24; + auVar123 = NEON_scvtf(auVar123,8); + auVar114 = NEON_scvtf(auVar127,8); + auVar106._0_8_ = (long)(int)(short)*pcVar28; + auVar106._8_8_ = (long)(int)(short)*pcVar32; + auVar115._0_8_ = (long)(int)(short)*pcVar35; + auVar115._8_8_ = (long)(int)(short)*pcVar38; + auVar102._0_8_ = (long)(int)(short)*pcVar42; + auVar102._8_8_ = (long)(int)(short)*pcVar45; + auVar84 = NEON_scvtf(auVar92,8); + auVar124._0_8_ = (long)(int)(short)*pcVar47; + auVar124._8_8_ = (long)(int)(short)*pcVar51; + auVar101._0_8_ = (long)(int)(short)*pcVar55; + auVar101._8_8_ = (long)(int)(short)*pcVar59; + auVar127 = NEON_scvtf(auVar126,8); + /* try { // try from 003989ec to 004989ef has its CatchHandler @ 00398aa8 */ + auVar120._0_8_ = (long)(int)(short)*pcVar48; + auVar120._8_8_ = (long)(int)(short)*pcVar52; + /* try { // try from 003989f4 to 00498a1b has its CatchHandler @ 00398758 */ + auVar98 = NEON_scvtf(auVar102,8); + auVar105._0_8_ = (long)(int)(short)*pcVar56; + auVar105._8_8_ = (long)(int)(short)*pcVar60; + auVar74 = NEON_scvtf(auVar115,8); + auVar102 = NEON_scvtf(auVar124,8); + auVar92 = NEON_scvtf(auVar101,8); + auVar116._0_8_ = (long)(int)(short)*pcVar36; + auVar116._8_8_ = (long)(int)(short)*pcVar39; + auVar101 = NEON_scvtf(auVar106,8); + auVar76._0_8_ = (long)(int)(short)*pcVar57; + auVar76._8_8_ = (long)(int)(short)*pcVar61; + auVar85 = NEON_scvtf(auVar105,8); + /* try { // try from 00398a54 to 00498a57 has its CatchHandler @ 00398ad0 */ + /* try { // try from 00398a5c to 00498a83 has its CatchHandler @ 00398758 */ + auVar81._0_8_ = (long)(int)(short)*pcVar43; + auVar81._8_8_ = (long)(int)(short)*pcVar46; + auVar103._0_8_ = (long)(int)(short)*pcVar49; + auVar103._8_8_ = (long)(int)(short)*pcVar53; + auVar106 = NEON_scvtf(auVar120,8); + auVar107 = NEON_scvtf(auVar116,8); + auVar105 = NEON_scvtf(auVar103,8); + /* catch() { ... } // from try @ 003989ec with catch @ 00398aa8 */ + auVar104._0_8_ = (long)(int)(short)*pcVar50; + auVar104._8_8_ = (long)(int)(short)*pcVar54; + auVar80 = NEON_scvtf(auVar81,8); + /* try { // try from 00398ab8 to 00498abb has its CatchHandler @ 00398758 */ + /* catch() { ... } // from try @ 003987fc with catch @ 00398abc */ + auVar73 = NEON_scvtf(auVar76,8); + /* try { // try from 00398acc to 00498acf has its CatchHandler @ 00398758 */ + /* catch() { ... } // from try @ 00398a54 with catch @ 00398ad0 */ + auVar95._0_8_ = (long)(int)(short)*pcVar58; + auVar95._8_8_ = (long)(int)(short)*pcVar62; + /* try { // try from 00398ae0 to 00498ae3 has its CatchHandler @ 00398758 */ + /* catch() { ... } // from try @ 00398b34 with catch @ 00398ae4 + catch() { ... } // from try @ 00398b88 with catch @ 00398ae4 + catch() { ... } // from try @ 00398e90 with catch @ 00398ae4 + catch() { ... } // from try @ 00398eb0 with catch @ 00398ae4 + catch() { ... } // from try @ 00398ec4 with catch @ 00398ae4 */ + auVar86 = NEON_scvtf(auVar104,8); + auVar72 = NEON_scvtf(auVar95,8); + iVar71 = (int)(long)ABS(auVar102._0_8_) + (int)(long)ABS(auVar106._0_8_) + + (int)(long)ABS(auVar105._0_8_) + (int)(long)ABS(auVar86._0_8_) + + (int)(long)ABS(auVar123._0_8_) + (int)(long)ABS(auVar114._0_8_) + + (int)(long)ABS(auVar74._0_8_) + (int)(long)ABS(auVar107._0_8_) + + (int)(long)ABS(auVar122._0_8_) + (int)(long)ABS(auVar119._0_8_) + + (int)(long)ABS(auVar113._0_8_) + (int)(long)ABS(auVar127._0_8_) + + (int)(long)ABS(auVar121._0_8_) + (int)(long)ABS(auVar118._0_8_) + + (int)(long)ABS(auVar125._0_8_) + (int)(long)ABS(auVar129._0_8_) + iVar71; + iVar77 = (int)(long)ABS(auVar102._8_8_) + (int)(long)ABS(auVar106._8_8_) + + (int)(long)ABS(auVar105._8_8_) + (int)(long)ABS(auVar86._8_8_) + + (int)(long)ABS(auVar123._8_8_) + (int)(long)ABS(auVar114._8_8_) + + (int)(long)ABS(auVar74._8_8_) + (int)(long)ABS(auVar107._8_8_) + + (int)(long)ABS(auVar122._8_8_) + (int)(long)ABS(auVar119._8_8_) + + (int)(long)ABS(auVar113._8_8_) + (int)(long)ABS(auVar127._8_8_) + + (int)(long)ABS(auVar121._8_8_) + (int)(long)ABS(auVar118._8_8_) + + (int)(long)ABS(auVar125._8_8_) + (int)(long)ABS(auVar129._8_8_) + iVar77; + iVar78 = (int)(long)ABS(auVar92._0_8_) + (int)(long)ABS(auVar85._0_8_) + + (int)(long)ABS(auVar73._0_8_) + (int)(long)ABS(auVar72._0_8_) + + (int)(long)ABS(auVar91._0_8_) + (int)(long)ABS(auVar84._0_8_) + + (int)(long)ABS(auVar98._0_8_) + (int)(long)ABS(auVar80._0_8_) + + (int)(long)ABS(auVar96._0_8_) + (int)(long)ABS(auVar90._0_8_) + + (int)(long)ABS(auVar100._0_8_) + (int)(long)ABS(auVar101._0_8_) + + (int)(long)ABS(auVar111._0_8_) + (int)(long)ABS(auVar117._0_8_) + + (int)(long)ABS(auVar112._0_8_) + (int)(long)ABS(auVar97._0_8_) + iVar78; + iVar79 = (int)(long)ABS(auVar92._8_8_) + (int)(long)ABS(auVar85._8_8_) + + (int)(long)ABS(auVar73._8_8_) + (int)(long)ABS(auVar72._8_8_) + + (int)(long)ABS(auVar91._8_8_) + (int)(long)ABS(auVar84._8_8_) + + (int)(long)ABS(auVar98._8_8_) + (int)(long)ABS(auVar80._8_8_) + + (int)(long)ABS(auVar96._8_8_) + (int)(long)ABS(auVar90._8_8_) + + (int)(long)ABS(auVar100._8_8_) + (int)(long)ABS(auVar101._8_8_) + + (int)(long)ABS(auVar111._8_8_) + (int)(long)ABS(auVar117._8_8_) + + (int)(long)ABS(auVar112._8_8_) + (int)(long)ABS(auVar97._8_8_) + iVar79; + } while (uVar64 < uVar65); + iVar71 = iVar71 + iVar77 + iVar78 + iVar79; + iVar77 = uVar65 * 0x40; + if (iVar75 != uVar65 * 0x10) goto LAB_00398b34; + } + iVar75 = iVar75 * 4; + } + if (iVar75 < param_4) { + uVar64 = param_4 - iVar75; + uVar65 = -(int)(param_1 + iVar75) & 0xf; + uVar1 = (ulong)uVar65; + if (uVar64 < uVar65) { + uVar1 = (ulong)uVar64; + } + if (uVar64 < 0x12) { + uVar1 = (ulong)uVar64; + } + uVar65 = (uint)uVar1; + iVar77 = iVar75; + if (uVar65 != 0) { + iVar77 = iVar75 + 1; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar75]); + if (uVar65 != 1) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 2; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 2) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 3; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 3) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 4; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 4) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 5; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 5) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 6; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 6) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 7; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 7) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 8; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 8) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 9; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 9) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 10; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 10) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0xb; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 0xb) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0xc; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 0xc) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0xd; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 0xd) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0xe; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 0xe) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0xf; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 != 0xf) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0x10; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + if (uVar65 == 0x11) { + lVar69 = (long)iVar77; + iVar77 = iVar75 + 0x11; + iVar71 = iVar71 + (int)ABS((double)(int)param_1[lVar69]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar65 == uVar64) goto LAB_003990e4; + } + uVar67 = ((uVar64 - uVar65) - 0x10 >> 4) + 1; + iVar78 = uVar67 * 0x10; + if (0xe < (uVar64 - 1) - uVar65) { + iVar79 = 0; + iVar87 = 0; + iVar88 = 0; + iVar89 = 0; + uVar68 = 0; + pcVar63 = param_1 + uVar1 + (long)iVar75; + do { + uVar68 = uVar68 + 1; + auVar99._0_8_ = (long)(int)(short)*pcVar63; + auVar99._8_8_ = (long)(int)(short)pcVar63[1]; + auVar82._0_8_ = (long)(int)(short)pcVar63[2]; + auVar82._8_8_ = (long)(int)(short)pcVar63[3]; + auVar93._0_8_ = (long)(int)(short)pcVar63[4]; + auVar93._8_8_ = (long)(int)(short)pcVar63[5]; + auVar121._0_8_ = (long)(int)(short)pcVar63[6]; + auVar121._8_8_ = (long)(int)(short)pcVar63[7]; + auVar90 = NEON_scvtf(auVar99,8); + auVar84 = NEON_scvtf(auVar82,8); + auVar85 = NEON_scvtf(auVar93,8); + auVar94._0_8_ = (long)(int)(short)pcVar63[8]; + auVar94._8_8_ = (long)(int)(short)pcVar63[9]; + auVar73 = NEON_scvtf(auVar121,8); + /* try { // try from 00398e88 to 00498e8b has its CatchHandler @ 00398ea0 */ + auVar125._0_8_ = (long)(int)(short)pcVar63[10]; + auVar125._8_8_ = (long)(int)(short)pcVar63[0xb]; + /* try { // try from 00398e90 to 00498e93 has its CatchHandler @ 00398ae4 */ + /* catch() { ... } // from try @ 00398e88 with catch @ 00398ea0 */ + auVar86 = NEON_scvtf(auVar94,8); + auVar83._0_8_ = (long)(int)(short)pcVar63[0xc]; + auVar83._8_8_ = (long)(int)(short)pcVar63[0xd]; + auVar74 = NEON_scvtf(auVar125,8); + /* try { // try from 00398eb0 to 00498eb3 has its CatchHandler @ 00398ae4 */ + auVar118._0_8_ = (long)(int)(short)pcVar63[0xe]; + auVar118._8_8_ = (long)(int)(short)pcVar63[0xf]; + /* catch() { ... } // from try @ 00398b80 with catch @ 00398eb4 */ + /* try { // try from 00398ec4 to 00498ec7 has its CatchHandler @ 00398ae4 */ + /* catch() { ... } // from try @ 00398f1c with catch @ 00398ec8 + catch() { ... } // from try @ 00398f70 with catch @ 00398ec8 + catch() { ... } // from try @ 00399000 with catch @ 00398ec8 + catch() { ... } // from try @ 00399088 with catch @ 00398ec8 + catch() { ... } // from try @ 00399158 with catch @ 00398ec8 + catch() { ... } // from try @ 00399490 with catch @ 00398ec8 + catch() { ... } // from try @ 003994dc with catch @ 00398ec8 + catch() { ... } // from try @ 003994f0 with catch @ 00398ec8 + catch() { ... } // from try @ 00399504 with catch @ 00398ec8 + catch() { ... } // from try @ 00399518 with catch @ 00398ec8 + catch() { ... } // from try @ 0039952c with catch @ 00398ec8 */ + auVar80 = NEON_scvtf(auVar83,8); + auVar72 = NEON_scvtf(auVar118,8); + iVar79 = (int)(long)ABS(auVar80._0_8_) + + (int)(long)ABS(auVar86._0_8_) + + (int)(long)ABS(auVar85._0_8_) + (int)(long)ABS(auVar90._0_8_) + iVar79; + iVar87 = (int)(long)ABS(auVar80._8_8_) + + (int)(long)ABS(auVar86._8_8_) + + (int)(long)ABS(auVar85._8_8_) + (int)(long)ABS(auVar90._8_8_) + iVar87; + iVar88 = (int)(long)ABS(auVar72._0_8_) + + (int)(long)ABS(auVar74._0_8_) + + (int)(long)ABS(auVar73._0_8_) + (int)(long)ABS(auVar84._0_8_) + iVar88; + iVar89 = (int)(long)ABS(auVar72._8_8_) + + (int)(long)ABS(auVar74._8_8_) + + (int)(long)ABS(auVar73._8_8_) + (int)(long)ABS(auVar84._8_8_) + iVar89; + pcVar63 = pcVar63 + 0x10; + } while (uVar68 < uVar67); + iVar77 = iVar77 + iVar78; + iVar71 = iVar71 + iVar79 + iVar87 + iVar88 + iVar89; + if (iVar78 == uVar64 - uVar65) goto LAB_003990e4; + } + /* try { // try from 00398f1c to 00498f1f has its CatchHandler @ 00398ec8 */ + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77]); + if (iVar77 + 1 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 1]); + if (iVar77 + 2 < param_4) { + /* try { // try from 00398f68 to 00498f6b has its CatchHandler @ 003994f4 */ + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 2]); + if (iVar77 + 3 < param_4) { + /* try { // try from 00398f70 to 00498faf has its CatchHandler @ 00398ec8 */ + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 3]); + if (iVar77 + 4 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 4]); + if (iVar77 + 5 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 5]); + if (iVar77 + 6 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 6]); + if (iVar77 + 7 < param_4) { + /* try { // try from 00398ff8 to 00498ffb has its CatchHandler @ 003994e0 */ + /* try { // try from 00399000 to 00499037 has its CatchHandler @ 00398ec8 */ + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 7]); + if (iVar77 + 8 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 8]); + if (iVar77 + 9 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 9]); + if (iVar77 + 10 < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 10]); + if (iVar77 + 0xb < param_4) { + /* try { // try from 00399080 to 00499083 has its CatchHandler @ 0039951c */ + /* try { // try from 00399088 to 004990ff has its CatchHandler @ 00398ec8 */ + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 0xb]); + if (iVar77 + 0xc < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 0xc]); + if (iVar77 + 0xd < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 0xd]); + if (iVar77 + 0xe < param_4) { + iVar71 = iVar71 + (int)ABS((double)(int)param_1[iVar77 + 0xe]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003990e4: + *param_3 = iVar66 + iVar71; + return 0; +} + + +================================================================== + +### FUNC 00399114 (3724 bytes) name=FUN_00399114 + +undefined8 +FUN_00399114(char *param_1,char *param_2,long param_3,int *param_4,int param_5,uint param_6) + +{ + ulong uVar1; + char *pcVar2; + char *pcVar66; + uint uVar130; + uint uVar131; + int iVar132; + int iVar133; + uint uVar134; + uint uVar135; + long lVar136; + uint uVar137; + char cVar138; + char cVar139; + int iVar140; + int iVar142; + undefined8 uVar141; + int iVar143; + int iVar145; + undefined8 uVar144; + int iVar146; + int iVar147; + int iVar148; + int iVar149; + int iVar150; + int iVar151; + int iVar152; + int iVar153; + int iVar154; + int iVar155; + int iVar156; + int iVar157; + int iVar158; + int iVar159; + int iVar160; + int iVar161; + int iVar162; + int iVar163; + int iVar164; + int iVar165; + int iVar166; + int iVar167; + int iVar168; + int iVar169; + int iVar170; + int iVar171; + int iVar172; + int iVar173; + int iVar174; + int iVar175; + int iVar176; + int iVar177; + int iVar178; + int iVar179; + int iVar180; + int iVar181; + int iVar182; + int iVar183; + int iVar184; + int iVar185; + int iVar186; + undefined8 uVar187; + int iVar188; + int iVar189; + undefined8 uVar190; + int iVar191; + int iVar192; + int iVar193; + int iVar194; + int iVar195; + int iVar196; + int iVar197; + int iVar198; + int iVar199; + int iVar200; + int iVar201; + int iVar202; + int iVar203; + int iVar204; + int iVar205; + int iVar206; + int iVar207; + int iVar208; + int iVar209; + int iVar210; + int iVar211; + char *pcVar3; + char *pcVar4; + char *pcVar5; + char *pcVar6; + char *pcVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + char *pcVar17; + char *pcVar18; + char *pcVar19; + char *pcVar20; + char *pcVar21; + char *pcVar22; + char *pcVar23; + char *pcVar24; + char *pcVar25; + char *pcVar26; + char *pcVar27; + char *pcVar28; + char *pcVar29; + char *pcVar30; + char *pcVar31; + char *pcVar32; + char *pcVar33; + char *pcVar34; + char *pcVar35; + char *pcVar36; + char *pcVar37; + char *pcVar38; + char *pcVar39; + char *pcVar40; + char *pcVar41; + char *pcVar42; + char *pcVar43; + char *pcVar44; + char *pcVar45; + char *pcVar46; + char *pcVar47; + char *pcVar48; + char *pcVar49; + char *pcVar50; + char *pcVar51; + char *pcVar52; + char *pcVar53; + char *pcVar54; + char *pcVar55; + char *pcVar56; + char *pcVar57; + char *pcVar58; + char *pcVar59; + char *pcVar60; + char *pcVar61; + char *pcVar62; + char *pcVar63; + char *pcVar64; + char *pcVar65; + char *pcVar67; + char *pcVar68; + char *pcVar69; + char *pcVar70; + char *pcVar71; + char *pcVar72; + char *pcVar73; + char *pcVar74; + char *pcVar75; + char *pcVar76; + char *pcVar77; + char *pcVar78; + char *pcVar79; + char *pcVar80; + char *pcVar81; + char *pcVar82; + char *pcVar83; + char *pcVar84; + char *pcVar85; + char *pcVar86; + char *pcVar87; + char *pcVar88; + char *pcVar89; + char *pcVar90; + char *pcVar91; + char *pcVar92; + char *pcVar93; + char *pcVar94; + char *pcVar95; + char *pcVar96; + char *pcVar97; + char *pcVar98; + char *pcVar99; + char *pcVar100; + char *pcVar101; + char *pcVar102; + char *pcVar103; + char *pcVar104; + char *pcVar105; + char *pcVar106; + char *pcVar107; + char *pcVar108; + char *pcVar109; + char *pcVar110; + char *pcVar111; + char *pcVar112; + char *pcVar113; + char *pcVar114; + char *pcVar115; + char *pcVar116; + char *pcVar117; + char *pcVar118; + char *pcVar119; + char *pcVar120; + char *pcVar121; + char *pcVar122; + char *pcVar123; + char *pcVar124; + char *pcVar125; + char *pcVar126; + char *pcVar127; + char *pcVar128; + char *pcVar129; + + iVar132 = *param_4; + if (param_3 != 0) { + if (0 < param_5) { + uVar131 = -(int)param_1; + lVar136 = 0; + do { + if ((*(char *)(param_3 + lVar136) != '\0') && (0 < (int)param_6)) { + /* try { // try from 00399150 to 00499153 has its CatchHandler @ 00399508 */ + uVar130 = uVar131 & 0xf; + if (param_6 < (uVar131 & 0xf)) { + uVar130 = param_6; + } + /* try { // try from 00399158 to 0049946b has its CatchHandler @ 00398ec8 */ + if (param_6 < 0x11) { + uVar130 = param_6; + } + uVar134 = uVar130; + if (uVar130 != 0) { + uVar135 = (int)*param_1 - (int)*param_2 >> 0x1f; + iVar132 = iVar132 + (((int)*param_1 - (int)*param_2 ^ uVar135) - uVar135); + if ((((uVar130 != 1) && + (uVar135 = (int)param_1[1] - (int)param_2[1] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[1] - (int)param_2[1] ^ uVar135) - uVar135), + uVar130 != 2)) && + (uVar135 = (int)param_1[2] - (int)param_2[2] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[2] - (int)param_2[2] ^ uVar135) - uVar135), + uVar130 != 3)) && + (((uVar135 = (int)param_1[3] - (int)param_2[3] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[3] - (int)param_2[3] ^ uVar135) - uVar135), + uVar130 != 4 && + (uVar135 = (int)param_1[4] - (int)param_2[4] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[4] - (int)param_2[4] ^ uVar135) - uVar135), + uVar130 != 5)) && + (uVar135 = (int)param_1[5] - (int)param_2[5] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[5] - (int)param_2[5] ^ uVar135) - uVar135), + uVar130 != 6)))) { + uVar135 = (int)param_1[6] - (int)param_2[6] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[6] - (int)param_2[6] ^ uVar135) - uVar135); + if (uVar130 == 7) { + uVar134 = 7; + } + else { + uVar135 = (int)param_1[7] - (int)param_2[7] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[7] - (int)param_2[7] ^ uVar135) - uVar135); + if (((uVar130 != 8) && + (uVar135 = (int)param_1[8] - (int)param_2[8] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[8] - (int)param_2[8] ^ uVar135) - uVar135), + uVar130 != 9)) && + (((uVar135 = (int)param_1[9] - (int)param_2[9] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[9] - (int)param_2[9] ^ uVar135) - uVar135), + uVar130 != 10 && + (((uVar135 = (int)param_1[10] - (int)param_2[10] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[10] - (int)param_2[10] ^ uVar135) - + uVar135), uVar130 != 0xb && + (uVar135 = (int)param_1[0xb] - (int)param_2[0xb] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[0xb] - (int)param_2[0xb] ^ uVar135) - + uVar135), uVar130 != 0xc)) && + (uVar135 = (int)param_1[0xc] - (int)param_2[0xc] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[0xc] - (int)param_2[0xc] ^ uVar135) - + uVar135), uVar130 != 0xd)))) && + (uVar135 = (int)param_1[0xd] - (int)param_2[0xd] >> 0x1f, + iVar132 = iVar132 + (((int)param_1[0xd] - (int)param_2[0xd] ^ uVar135) - uVar135 + ), uVar130 != 0xe)))) { + uVar135 = (int)param_1[0xe] - (int)param_2[0xe] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[0xe] - (int)param_2[0xe] ^ uVar135) - uVar135); + if (uVar130 == 0x10) { + uVar135 = (int)param_1[0xf] - (int)param_2[0xf] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[0xf] - (int)param_2[0xf] ^ uVar135) - uVar135 + ); + } + else { + uVar134 = 0xf; + } + } + } + } + if (param_6 == uVar130) goto LAB_003996d0; + } + uVar135 = ((param_6 - uVar130) - 0x10 >> 4) + 1; + iVar133 = uVar135 * 0x10; + if (0xe < (param_6 - 1) - uVar130) { + iVar140 = 0; + iVar142 = 0; + iVar143 = 0; + iVar145 = 0; + uVar137 = 0; + pcVar129 = param_2 + uVar130; + pcVar65 = param_1 + uVar130; + do { + uVar144 = *(undefined8 *)(pcVar65 + 8); + uVar141 = *(undefined8 *)pcVar65; + uVar137 = uVar137 + 1; + uVar190 = *(undefined8 *)(pcVar129 + 8); + uVar187 = *(undefined8 *)pcVar129; + iVar174 = MP_INT_ABS((int)(short)(char)uVar141 - (int)(short)(char)uVar187); + iVar177 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 8) - + (int)(short)(char)((ulong)uVar187 >> 8)); + iVar180 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x10) - + (int)(short)(char)((ulong)uVar187 >> 0x10)); + iVar183 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x18) - + (int)(short)(char)((ulong)uVar187 >> 0x18)); + iVar158 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x20) - + (int)(short)(char)((ulong)uVar187 >> 0x20)); + iVar160 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x28) - + (int)(short)(char)((ulong)uVar187 >> 0x28)); + iVar162 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x30) - + (int)(short)(char)((ulong)uVar187 >> 0x30)); + iVar164 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x38) - + (int)(short)(char)((ulong)uVar187 >> 0x38)); + iVar166 = MP_INT_ABS((int)(short)(char)uVar144 - (int)(short)(char)uVar190); + iVar168 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 8) - + (int)(short)(char)((ulong)uVar190 >> 8)); + iVar170 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x10) - + (int)(short)(char)((ulong)uVar190 >> 0x10)); + iVar172 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x18) - + (int)(short)(char)((ulong)uVar190 >> 0x18)); + iVar146 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x20) - + (int)(short)(char)((ulong)uVar190 >> 0x20)); + iVar147 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x28) - + (int)(short)(char)((ulong)uVar190 >> 0x28)); + iVar150 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x30) - + (int)(short)(char)((ulong)uVar190 >> 0x30)); + iVar154 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x38) - + (int)(short)(char)((ulong)uVar190 >> 0x38)); + iVar140 = iVar146 + iVar166 + iVar158 + iVar174 + iVar140; + iVar142 = iVar147 + iVar168 + iVar160 + iVar177 + iVar142; + iVar143 = iVar150 + iVar170 + iVar162 + iVar180 + iVar143; + iVar145 = iVar154 + iVar172 + iVar164 + iVar183 + iVar145; + pcVar129 = pcVar129 + 0x10; + pcVar65 = pcVar65 + 0x10; + } while (uVar137 < uVar135); + uVar134 = uVar134 + iVar133; + iVar132 = iVar132 + iVar140 + iVar142 + iVar143 + iVar145; + if (param_6 - uVar130 == iVar133) goto LAB_003996d0; + } + iVar133 = uVar134 + 1; + uVar130 = (int)param_1[(int)uVar134] - (int)param_2[(int)uVar134] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[(int)uVar134] - (int)param_2[(int)uVar134] ^ uVar130) - + uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 2; + /* try { // try from 00399488 to 0049948b has its CatchHandler @ 003994cc */ + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + /* try { // try from 00399490 to 00499493 has its CatchHandler @ 00398ec8 */ + iVar132 = iVar132 + (((int)param_1[iVar133] - (int)param_2[iVar133] ^ uVar130) - uVar130 + ); + if (iVar140 < (int)param_6) { + iVar133 = uVar134 + 3; + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar140] - (int)param_2[iVar140] ^ uVar130) - + uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 4; + /* catch() { ... } // from try @ 00399488 with catch @ 003994cc */ + /* try { // try from 003994dc to 004994df has its CatchHandler @ 00398ec8 */ + /* catch() { ... } // from try @ 00398ff8 with catch @ 003994e0 */ + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + /* try { // try from 003994f0 to 004994f3 has its CatchHandler @ 00398ec8 */ + iVar132 = iVar132 + (((int)param_1[iVar133] - (int)param_2[iVar133] ^ uVar130) - + uVar130); + /* catch() { ... } // from try @ 00398f68 with catch @ 003994f4 */ + if (iVar140 < (int)param_6) { + iVar133 = uVar134 + 5; + /* try { // try from 00399504 to 00499507 has its CatchHandler @ 00398ec8 */ + /* catch() { ... } // from try @ 00399150 with catch @ 00399508 */ + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> 0x1f; + /* try { // try from 00399518 to 0049951b has its CatchHandler @ 00398ec8 */ + /* catch() { ... } // from try @ 00399080 with catch @ 0039951c */ + iVar132 = iVar132 + (((int)param_1[iVar140] - (int)param_2[iVar140] ^ uVar130) - + uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 6; + /* try { // try from 0039952c to 0049952f has its CatchHandler @ 00398ec8 */ + /* catch() { ... } // from try @ 003995a4 with catch @ 00399530 + catch() { ... } // from try @ 003995e8 with catch @ 00399530 + catch() { ... } // from try @ 0039a844 with catch @ 00399530 + catch() { ... } // from try @ 0039a864 with catch @ 00399530 + catch() { ... } // from try @ 0039a878 with catch @ 00399530 */ + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar133] - (int)param_2[iVar133] ^ uVar130) - + uVar130); + if (iVar140 < (int)param_6) { + iVar133 = uVar134 + 7; + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar140] - (int)param_2[iVar140] ^ uVar130) + - uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 8; + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar133] - (int)param_2[iVar133] ^ + uVar130) - uVar130); + /* try { // try from 003995a4 to 004995a7 has its CatchHandler @ 00399530 */ + if (iVar140 < (int)param_6) { + iVar133 = uVar134 + 9; + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar140] - (int)param_2[iVar140] ^ + uVar130) - uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 10; + /* try { // try from 003995e0 to 004995e3 has its CatchHandler @ 0039a854 */ + /* try { // try from 003995e8 to 0049a7fb has its CatchHandler @ 00399530 */ + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar133] - (int)param_2[iVar133] ^ + uVar130) - uVar130); + if (iVar140 < (int)param_6) { + iVar133 = uVar134 + 0xb; + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar140] - (int)param_2[iVar140] ^ + uVar130) - uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 0xc; + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar133] - (int)param_2[iVar133] + ^ uVar130) - uVar130); + if (iVar140 < (int)param_6) { + iVar133 = uVar134 + 0xd; + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar140] - + (int)param_2[iVar140] ^ uVar130) - uVar130); + if (iVar133 < (int)param_6) { + iVar140 = uVar134 + 0xe; + uVar130 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar133] - + (int)param_2[iVar133] ^ uVar130) - uVar130 + ); + if (iVar140 < (int)param_6) { + uVar130 = (int)param_1[iVar140] - (int)param_2[iVar140] >> + 0x1f; + iVar132 = iVar132 + (((int)param_1[iVar140] - + (int)param_2[iVar140] ^ uVar130) - + uVar130); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003996d0: + lVar136 = lVar136 + 1; + param_1 = param_1 + (int)param_6; + param_2 = param_2 + (int)param_6; + uVar131 = uVar131 - param_6; + } while ((int)lVar136 < param_5); + } + *param_4 = iVar132; + return 0; + } + param_5 = param_5 * param_6; + iVar140 = 0; + iVar133 = iVar140; + if (0 < param_5 + -3) { + uVar131 = param_5 - 4U >> 2; + iVar133 = uVar131 + 1; + uVar131 = (uVar131 - 0xf >> 4) + 1; + if (param_5 - 4U < 0x3c) { + iVar142 = 0; +LAB_003998c4: + pcVar129 = param_2 + iVar142; + pcVar65 = param_1 + iVar142; + do { + iVar142 = iVar142 + 4; + uVar130 = (int)*pcVar65 - (int)*pcVar129 >> 0x1f; + uVar131 = (int)((uint)(byte)pcVar65[1] - (uint)(byte)pcVar129[1]) >> 0x1f; + uVar134 = (int)((uint)(byte)pcVar65[2] - (uint)(byte)pcVar129[2]) >> 0x1f; + uVar135 = (int)((uint)(byte)pcVar65[3] - (uint)(byte)pcVar129[3]) >> 0x1f; + iVar140 = iVar140 + (((int)*pcVar65 - (int)*pcVar129 ^ uVar130) - uVar130) + + (((uint)(byte)pcVar65[1] - (uint)(byte)pcVar129[1] ^ uVar131) - uVar131) + + (((uint)(byte)pcVar65[2] - (uint)(byte)pcVar129[2] ^ uVar134) - + uVar134) + + (((uint)(byte)pcVar65[3] - (uint)(byte)pcVar129[3] ^ uVar135) - uVar135) + ; + pcVar129 = pcVar129 + 4; + pcVar65 = pcVar65 + 4; + } while (iVar142 < param_5 + -3); + } + else { + iVar140 = 0; + iVar142 = 0; + iVar143 = 0; + iVar145 = 0; + uVar130 = 0; + pcVar129 = param_2; + pcVar65 = param_1; + do { + cVar138 = *pcVar65; + pcVar2 = pcVar65 + 1; + pcVar3 = pcVar65 + 2; + pcVar4 = pcVar65 + 3; + pcVar5 = pcVar65 + 4; + pcVar6 = pcVar65 + 5; + pcVar7 = pcVar65 + 6; + pcVar8 = pcVar65 + 7; + pcVar9 = pcVar65 + 8; + pcVar10 = pcVar65 + 9; + pcVar11 = pcVar65 + 10; + pcVar12 = pcVar65 + 0xb; + pcVar13 = pcVar65 + 0xc; + pcVar14 = pcVar65 + 0xd; + pcVar15 = pcVar65 + 0xe; + pcVar16 = pcVar65 + 0xf; + pcVar17 = pcVar65 + 0x10; + pcVar18 = pcVar65 + 0x11; + pcVar19 = pcVar65 + 0x12; + pcVar20 = pcVar65 + 0x13; + pcVar21 = pcVar65 + 0x14; + pcVar22 = pcVar65 + 0x15; + pcVar23 = pcVar65 + 0x16; + pcVar24 = pcVar65 + 0x17; + pcVar25 = pcVar65 + 0x18; + pcVar26 = pcVar65 + 0x19; + pcVar27 = pcVar65 + 0x1a; + pcVar28 = pcVar65 + 0x1b; + pcVar29 = pcVar65 + 0x1c; + pcVar30 = pcVar65 + 0x1d; + pcVar31 = pcVar65 + 0x1e; + pcVar32 = pcVar65 + 0x1f; + pcVar33 = pcVar65 + 0x20; + pcVar34 = pcVar65 + 0x21; + pcVar35 = pcVar65 + 0x22; + pcVar36 = pcVar65 + 0x23; + pcVar37 = pcVar65 + 0x24; + pcVar38 = pcVar65 + 0x25; + pcVar39 = pcVar65 + 0x26; + pcVar40 = pcVar65 + 0x27; + pcVar41 = pcVar65 + 0x28; + pcVar42 = pcVar65 + 0x29; + pcVar43 = pcVar65 + 0x2a; + pcVar44 = pcVar65 + 0x2b; + pcVar45 = pcVar65 + 0x2c; + pcVar46 = pcVar65 + 0x2d; + pcVar47 = pcVar65 + 0x2e; + pcVar48 = pcVar65 + 0x2f; + pcVar49 = pcVar65 + 0x30; + pcVar50 = pcVar65 + 0x31; + pcVar51 = pcVar65 + 0x32; + pcVar52 = pcVar65 + 0x33; + pcVar53 = pcVar65 + 0x34; + pcVar54 = pcVar65 + 0x35; + pcVar55 = pcVar65 + 0x36; + pcVar56 = pcVar65 + 0x37; + pcVar57 = pcVar65 + 0x38; + pcVar58 = pcVar65 + 0x39; + pcVar59 = pcVar65 + 0x3a; + pcVar60 = pcVar65 + 0x3b; + pcVar61 = pcVar65 + 0x3c; + pcVar62 = pcVar65 + 0x3d; + pcVar63 = pcVar65 + 0x3e; + pcVar64 = pcVar65 + 0x3f; + pcVar65 = pcVar65 + 0x40; + uVar130 = uVar130 + 1; + cVar139 = *pcVar129; + pcVar66 = pcVar129 + 1; + pcVar67 = pcVar129 + 2; + pcVar68 = pcVar129 + 3; + pcVar69 = pcVar129 + 4; + pcVar70 = pcVar129 + 5; + pcVar71 = pcVar129 + 6; + pcVar72 = pcVar129 + 7; + pcVar73 = pcVar129 + 8; + pcVar74 = pcVar129 + 9; + pcVar75 = pcVar129 + 10; + pcVar76 = pcVar129 + 0xb; + pcVar77 = pcVar129 + 0xc; + pcVar78 = pcVar129 + 0xd; + pcVar79 = pcVar129 + 0xe; + pcVar80 = pcVar129 + 0xf; + pcVar81 = pcVar129 + 0x10; + pcVar82 = pcVar129 + 0x11; + pcVar83 = pcVar129 + 0x12; + pcVar84 = pcVar129 + 0x13; + pcVar85 = pcVar129 + 0x14; + pcVar86 = pcVar129 + 0x15; + pcVar87 = pcVar129 + 0x16; + pcVar88 = pcVar129 + 0x17; + pcVar89 = pcVar129 + 0x18; + pcVar90 = pcVar129 + 0x19; + pcVar91 = pcVar129 + 0x1a; + pcVar92 = pcVar129 + 0x1b; + pcVar93 = pcVar129 + 0x1c; + pcVar94 = pcVar129 + 0x1d; + pcVar95 = pcVar129 + 0x1e; + pcVar96 = pcVar129 + 0x1f; + pcVar97 = pcVar129 + 0x20; + pcVar98 = pcVar129 + 0x21; + pcVar99 = pcVar129 + 0x22; + pcVar100 = pcVar129 + 0x23; + pcVar101 = pcVar129 + 0x24; + pcVar102 = pcVar129 + 0x25; + pcVar103 = pcVar129 + 0x26; + pcVar104 = pcVar129 + 0x27; + pcVar105 = pcVar129 + 0x28; + pcVar106 = pcVar129 + 0x29; + pcVar107 = pcVar129 + 0x2a; + pcVar108 = pcVar129 + 0x2b; + pcVar109 = pcVar129 + 0x2c; + pcVar110 = pcVar129 + 0x2d; + pcVar111 = pcVar129 + 0x2e; + pcVar112 = pcVar129 + 0x2f; + pcVar113 = pcVar129 + 0x30; + pcVar114 = pcVar129 + 0x31; + pcVar115 = pcVar129 + 0x32; + pcVar116 = pcVar129 + 0x33; + pcVar117 = pcVar129 + 0x34; + pcVar118 = pcVar129 + 0x35; + pcVar119 = pcVar129 + 0x36; + pcVar120 = pcVar129 + 0x37; + pcVar121 = pcVar129 + 0x38; + pcVar122 = pcVar129 + 0x39; + pcVar123 = pcVar129 + 0x3a; + pcVar124 = pcVar129 + 0x3b; + pcVar125 = pcVar129 + 0x3c; + pcVar126 = pcVar129 + 0x3d; + pcVar127 = pcVar129 + 0x3e; + pcVar128 = pcVar129 + 0x3f; + pcVar129 = pcVar129 + 0x40; + iVar175 = MP_INT_ABS((int)(short)cVar138 - (int)(short)cVar139); + iVar178 = MP_INT_ABS((int)(short)*pcVar5 - (int)(short)*pcVar69); + iVar181 = MP_INT_ABS((int)(short)*pcVar9 - (int)(short)*pcVar73); + iVar184 = MP_INT_ABS((int)(short)*pcVar13 - (int)(short)*pcVar77); + iVar202 = MP_INT_ABS((int)(short)*pcVar2 - (int)(short)*pcVar66); + iVar204 = MP_INT_ABS((int)(short)*pcVar6 - (int)(short)*pcVar70); + iVar206 = MP_INT_ABS((int)(short)*pcVar10 - (int)(short)*pcVar74); + iVar208 = MP_INT_ABS((int)(short)*pcVar14 - (int)(short)*pcVar78); + iVar174 = MP_INT_ABS((int)(short)*pcVar17 - (int)(short)*pcVar81); + iVar183 = MP_INT_ABS((int)(short)*pcVar21 - (int)(short)*pcVar85); + iVar151 = MP_INT_ABS((int)(short)*pcVar25 - (int)(short)*pcVar89); + iVar155 = MP_INT_ABS((int)(short)*pcVar29 - (int)(short)*pcVar93); + iVar186 = MP_INT_ABS((int)(short)*pcVar18 - (int)(short)*pcVar82); + iVar188 = MP_INT_ABS((int)(short)*pcVar22 - (int)(short)*pcVar86); + iVar189 = MP_INT_ABS((int)(short)*pcVar26 - (int)(short)*pcVar90); + iVar191 = MP_INT_ABS((int)(short)*pcVar30 - (int)(short)*pcVar94); + iVar198 = MP_INT_ABS((int)(short)*pcVar3 - (int)(short)*pcVar67); + iVar199 = MP_INT_ABS((int)(short)*pcVar7 - (int)(short)*pcVar71); + iVar200 = MP_INT_ABS((int)(short)*pcVar11 - (int)(short)*pcVar75); + iVar201 = MP_INT_ABS((int)(short)*pcVar15 - (int)(short)*pcVar79); + iVar176 = MP_INT_ABS((int)(short)*pcVar19 - (int)(short)*pcVar83); + iVar179 = MP_INT_ABS((int)(short)*pcVar23 - (int)(short)*pcVar87); + iVar182 = MP_INT_ABS((int)(short)*pcVar27 - (int)(short)*pcVar91); + iVar185 = MP_INT_ABS((int)(short)*pcVar31 - (int)(short)*pcVar95); + iVar192 = MP_INT_ABS((int)(short)*pcVar33 - (int)(short)*pcVar97); + iVar193 = MP_INT_ABS((int)(short)*pcVar37 - (int)(short)*pcVar101); + iVar146 = MP_INT_ABS((int)(short)*pcVar41 - (int)(short)*pcVar105); + iVar147 = MP_INT_ABS((int)(short)*pcVar45 - (int)(short)*pcVar109); + iVar194 = MP_INT_ABS((int)(short)*pcVar4 - (int)(short)*pcVar68); + iVar195 = MP_INT_ABS((int)(short)*pcVar8 - (int)(short)*pcVar72); + iVar196 = MP_INT_ABS((int)(short)*pcVar12 - (int)(short)*pcVar76); + iVar197 = MP_INT_ABS((int)(short)*pcVar16 - (int)(short)*pcVar80); + iVar203 = MP_INT_ABS((int)(short)*pcVar34 - (int)(short)*pcVar98); + iVar205 = MP_INT_ABS((int)(short)*pcVar38 - (int)(short)*pcVar102); + iVar207 = MP_INT_ABS((int)(short)*pcVar42 - (int)(short)*pcVar106); + iVar209 = MP_INT_ABS((int)(short)*pcVar46 - (int)(short)*pcVar110); + iVar167 = MP_INT_ABS((int)(short)*pcVar49 - (int)(short)*pcVar113); + iVar169 = MP_INT_ABS((int)(short)*pcVar53 - (int)(short)*pcVar117); + iVar171 = MP_INT_ABS((int)(short)*pcVar57 - (int)(short)*pcVar121); + iVar173 = MP_INT_ABS((int)(short)*pcVar61 - (int)(short)*pcVar125); + iVar177 = MP_INT_ABS((int)(short)*pcVar35 - (int)(short)*pcVar99); + iVar148 = MP_INT_ABS((int)(short)*pcVar39 - (int)(short)*pcVar103); + iVar152 = MP_INT_ABS((int)(short)*pcVar43 - (int)(short)*pcVar107); + iVar156 = MP_INT_ABS((int)(short)*pcVar47 - (int)(short)*pcVar111); + iVar210 = MP_INT_ABS((int)(short)*pcVar20 - (int)(short)*pcVar84); + iVar211 = MP_INT_ABS((int)(short)*pcVar24 - (int)(short)*pcVar88); + iVar150 = MP_INT_ABS((int)(short)*pcVar28 - (int)(short)*pcVar92); + iVar154 = MP_INT_ABS((int)(short)*pcVar32 - (int)(short)*pcVar96); + iVar159 = MP_INT_ABS((int)(short)*pcVar50 - (int)(short)*pcVar114); + iVar161 = MP_INT_ABS((int)(short)*pcVar54 - (int)(short)*pcVar118); + iVar163 = MP_INT_ABS((int)(short)*pcVar58 - (int)(short)*pcVar122); + iVar165 = MP_INT_ABS((int)(short)*pcVar62 - (int)(short)*pcVar126); + iVar158 = MP_INT_ABS((int)(short)*pcVar36 - (int)(short)*pcVar100); + iVar162 = MP_INT_ABS((int)(short)*pcVar40 - (int)(short)*pcVar104); + iVar166 = MP_INT_ABS((int)(short)*pcVar44 - (int)(short)*pcVar108); + iVar170 = MP_INT_ABS((int)(short)*pcVar48 - (int)(short)*pcVar112); + iVar180 = MP_INT_ABS((int)(short)*pcVar51 - (int)(short)*pcVar115); + iVar149 = MP_INT_ABS((int)(short)*pcVar55 - (int)(short)*pcVar119); + iVar153 = MP_INT_ABS((int)(short)*pcVar59 - (int)(short)*pcVar123); + iVar157 = MP_INT_ABS((int)(short)*pcVar63 - (int)(short)*pcVar127); + iVar160 = MP_INT_ABS((int)(short)*pcVar52 - (int)(short)*pcVar116); + iVar164 = MP_INT_ABS((int)(short)*pcVar56 - (int)(short)*pcVar120); + iVar168 = MP_INT_ABS((int)(short)*pcVar60 - (int)(short)*pcVar124); + iVar172 = MP_INT_ABS((int)(short)*pcVar64 - (int)(short)*pcVar128); + iVar140 = iVar167 + iVar159 + iVar180 + iVar160 + + iVar192 + iVar203 + iVar177 + iVar158 + + iVar174 + iVar186 + iVar176 + iVar210 + + iVar175 + iVar202 + iVar198 + iVar194 + iVar140; + iVar142 = iVar169 + iVar161 + iVar149 + iVar164 + + iVar193 + iVar205 + iVar148 + iVar162 + + iVar183 + iVar188 + iVar179 + iVar211 + + iVar178 + iVar204 + iVar199 + iVar195 + iVar142; + iVar143 = iVar171 + iVar163 + iVar153 + iVar168 + + iVar146 + iVar207 + iVar152 + iVar166 + + iVar151 + iVar189 + iVar182 + iVar150 + + iVar181 + iVar206 + iVar200 + iVar196 + iVar143; + iVar145 = iVar173 + iVar165 + iVar157 + iVar172 + + iVar147 + iVar209 + iVar156 + iVar170 + + iVar155 + iVar191 + iVar185 + iVar154 + + iVar184 + iVar208 + iVar201 + iVar197 + iVar145; + } while (uVar130 < uVar131); + iVar140 = iVar140 + iVar142 + iVar143 + iVar145; + iVar142 = uVar131 * 0x40; + if (uVar131 * 0x10 != iVar133) goto LAB_003998c4; + } + iVar133 = iVar133 * 4; + } + if (iVar133 < param_5) { + lVar136 = (long)iVar133; + uVar130 = param_5 - iVar133; + uVar131 = -(int)(param_1 + lVar136) & 0xf; + uVar1 = (ulong)uVar131; + if (uVar130 < uVar131) { + uVar1 = (ulong)uVar130; + } + if (uVar130 < 0x11) { + uVar1 = (ulong)uVar130; + } + uVar131 = (uint)uVar1; + if (uVar131 != 0) { + iVar142 = iVar133 + 1; + uVar134 = (int)param_1[lVar136] - (int)param_2[lVar136]; + uVar135 = (int)uVar134 >> 0x1f; + iVar140 = iVar140 + ((uVar134 ^ uVar135) - uVar135); + if (uVar131 != 1) { + iVar143 = iVar133 + 2; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar134) - uVar134); + iVar142 = iVar143; + if (uVar131 != 2) { + iVar142 = iVar133 + 3; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar134) - uVar134); + if (uVar131 != 3) { + iVar143 = iVar133 + 4; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar134) - uVar134 + ); + iVar142 = iVar143; + if (uVar131 != 4) { + iVar142 = iVar133 + 5; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar134) - + uVar134); + if (uVar131 != 5) { + iVar143 = iVar133 + 6; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar134) - + uVar134); + iVar142 = iVar143; + if (uVar131 != 6) { + iVar142 = iVar133 + 7; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar134) - + uVar134); + if (uVar131 != 7) { + iVar143 = iVar133 + 8; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar134) - + uVar134); + iVar142 = iVar143; + if (uVar131 != 8) { + iVar142 = iVar133 + 9; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar134) + - uVar134); + if (uVar131 != 9) { + iVar143 = iVar133 + 10; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ + uVar134) - uVar134); + iVar142 = iVar143; + if (uVar131 != 10) { + iVar142 = iVar133 + 0xb; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ + uVar134) - uVar134); + if (uVar131 != 0xb) { + iVar143 = iVar133 + 0xc; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ + uVar134) - uVar134); + iVar142 = iVar143; + if (uVar131 != 0xc) { + iVar142 = iVar133 + 0xd; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ + uVar134) - uVar134); + if (uVar131 != 0xd) { + iVar143 = iVar133 + 0xe; + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] + ^ uVar134) - uVar134); + iVar142 = iVar143; + if (uVar131 != 0xe) { + iVar142 = iVar133 + 0xf; + uVar134 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - + (int)param_2[iVar143] ^ uVar134) - uVar134); + if (uVar131 == 0x10) { + uVar134 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - + (int)param_2[iVar142] ^ uVar134) - uVar134 + ); + iVar142 = iVar133 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar133 = iVar142; + if (uVar131 == uVar130) goto LAB_00399f70; + } + uVar134 = ((uVar130 - uVar131) - 0x10 >> 4) + 1; + iVar142 = uVar134 * 0x10; + if (0xe < (uVar130 - 1) - uVar131) { + iVar143 = 0; + iVar145 = 0; + iVar146 = 0; + iVar147 = 0; + uVar135 = 0; + pcVar129 = param_1 + uVar1 + lVar136; + pcVar65 = param_2 + uVar1 + lVar136; + do { + uVar144 = *(undefined8 *)(pcVar129 + 8); + uVar141 = *(undefined8 *)pcVar129; + uVar135 = uVar135 + 1; + uVar190 = *(undefined8 *)(pcVar65 + 8); + uVar187 = *(undefined8 *)pcVar65; + iVar180 = MP_INT_ABS((int)(short)(char)uVar141 - (int)(short)(char)uVar187); + iVar183 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 8) - + (int)(short)(char)((ulong)uVar187 >> 8)); + iVar148 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x10) - + (int)(short)(char)((ulong)uVar187 >> 0x10)); + iVar149 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x18) - + (int)(short)(char)((ulong)uVar187 >> 0x18)); + iVar162 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x20) - + (int)(short)(char)((ulong)uVar187 >> 0x20)); + iVar164 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x28) - + (int)(short)(char)((ulong)uVar187 >> 0x28)); + iVar166 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x30) - + (int)(short)(char)((ulong)uVar187 >> 0x30)); + iVar168 = MP_INT_ABS((int)(short)(char)((ulong)uVar141 >> 0x38) - + (int)(short)(char)((ulong)uVar187 >> 0x38)); + iVar170 = MP_INT_ABS((int)(short)(char)uVar144 - (int)(short)(char)uVar190); + iVar172 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 8) - + (int)(short)(char)((ulong)uVar190 >> 8)); + iVar174 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x10) - + (int)(short)(char)((ulong)uVar190 >> 0x10)); + iVar177 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x18) - + (int)(short)(char)((ulong)uVar190 >> 0x18)); + iVar150 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x20) - + (int)(short)(char)((ulong)uVar190 >> 0x20)); + iVar154 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x28) - + (int)(short)(char)((ulong)uVar190 >> 0x28)); + iVar158 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x30) - + (int)(short)(char)((ulong)uVar190 >> 0x30)); + iVar160 = MP_INT_ABS((int)(short)(char)((ulong)uVar144 >> 0x38) - + (int)(short)(char)((ulong)uVar190 >> 0x38)); + iVar143 = iVar150 + iVar170 + iVar162 + iVar180 + iVar143; + iVar145 = iVar154 + iVar172 + iVar164 + iVar183 + iVar145; + iVar146 = iVar158 + iVar174 + iVar166 + iVar148 + iVar146; + iVar147 = iVar160 + iVar177 + iVar168 + iVar149 + iVar147; + pcVar129 = pcVar129 + 0x10; + pcVar65 = pcVar65 + 0x10; + } while (uVar135 < uVar134); + iVar133 = iVar133 + iVar142; + iVar140 = iVar140 + iVar143 + iVar145 + iVar146 + iVar147; + if (iVar142 == uVar130 - uVar131) goto LAB_00399f70; + } + iVar142 = iVar133 + 1; + uVar131 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar133] - (int)param_2[iVar133] ^ uVar131) - uVar131); + if (iVar142 < param_5) { + iVar143 = iVar133 + 2; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar131) - uVar131); + if (iVar143 < param_5) { + iVar142 = iVar133 + 3; + uVar131 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar131) - uVar131); + if (iVar142 < param_5) { + iVar143 = iVar133 + 4; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar131) - uVar131); + if (iVar143 < param_5) { + iVar142 = iVar133 + 5; + uVar131 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar131) - uVar131 + ); + if (iVar142 < param_5) { + iVar143 = iVar133 + 6; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar131) - + uVar131); + if (iVar143 < param_5) { + iVar142 = iVar133 + 7; + uVar131 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar131) - + uVar131); + if (iVar142 < param_5) { + iVar143 = iVar133 + 8; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar131) - + uVar131); + if (iVar143 < param_5) { + iVar142 = iVar133 + 9; + uVar131 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ uVar131) - + uVar131); + if (iVar142 < param_5) { + iVar143 = iVar133 + 10; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ uVar131) + - uVar131); + if (iVar143 < param_5) { + iVar142 = iVar133 + 0xb; + uVar131 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ + uVar131) - uVar131); + if (iVar142 < param_5) { + iVar143 = iVar133 + 0xc; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ + uVar131) - uVar131); + if (iVar143 < param_5) { + iVar142 = iVar133 + 0xd; + uVar131 = (int)param_1[iVar143] - (int)param_2[iVar143] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar143] - (int)param_2[iVar143] ^ + uVar131) - uVar131); + if (iVar142 < param_5) { + iVar133 = iVar133 + 0xe; + uVar131 = (int)param_1[iVar142] - (int)param_2[iVar142] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar142] - (int)param_2[iVar142] ^ + uVar131) - uVar131); + if (iVar133 < param_5) { + uVar131 = (int)param_1[iVar133] - (int)param_2[iVar133] >> 0x1f; + iVar140 = iVar140 + (((int)param_1[iVar133] - (int)param_2[iVar133] + ^ uVar131) - uVar131); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_00399f70: + *param_4 = iVar132 + iVar140; + return 0; +} + + +================================================================== + +### FUNC 00399fa0 (2060 bytes) name=FUN_00399fa0 + +undefined8 FUN_00399fa0(char *param_1,long param_2,int *param_3,int param_4,uint param_5) + +{ + ulong uVar1; + undefined4 uVar2; + undefined6 uVar3; + char *pcVar4; + uint uVar68; + uint uVar69; + int iVar70; + uint uVar71; + byte *pbVar72; + uint uVar73; + long lVar74; + uint uVar75; + char cVar76; + char cVar77; + char cVar78; + char cVar79; + char cVar80; + char cVar81; + short sVar82; + int iVar83; + short sVar84; + short sVar85; + int iVar86; + short sVar87; + int iVar88; + int iVar89; + short sVar90; + int iVar91; + short sVar93; + short sVar94; + undefined8 uVar92; + int iVar95; + short sVar96; + int iVar97; + undefined8 uVar98; + int iVar99; + int iVar100; + int iVar101; + int iVar102; + int iVar103; + int iVar104; + int iVar105; + int iVar106; + int iVar107; + int iVar108; + char *pcVar5; + char *pcVar6; + char *pcVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + char *pcVar17; + char *pcVar18; + char *pcVar19; + char *pcVar20; + char *pcVar21; + char *pcVar22; + char *pcVar23; + char *pcVar24; + char *pcVar25; + char *pcVar26; + char *pcVar27; + char *pcVar28; + char *pcVar29; + char *pcVar30; + char *pcVar31; + char *pcVar32; + char *pcVar33; + char *pcVar34; + char *pcVar35; + char *pcVar36; + char *pcVar37; + char *pcVar38; + char *pcVar39; + char *pcVar40; + char *pcVar41; + char *pcVar42; + char *pcVar43; + char *pcVar44; + char *pcVar45; + char *pcVar46; + char *pcVar47; + char *pcVar48; + char *pcVar49; + char *pcVar50; + char *pcVar51; + char *pcVar52; + char *pcVar53; + char *pcVar54; + char *pcVar55; + char *pcVar56; + char *pcVar57; + char *pcVar58; + char *pcVar59; + char *pcVar60; + char *pcVar61; + char *pcVar62; + char *pcVar63; + char *pcVar64; + char *pcVar65; + char *pcVar66; + char *pcVar67; + + iVar70 = *param_3; + if (param_2 != 0) { + if (0 < param_4) { + uVar69 = -(int)param_1; + lVar74 = 0; + do { + if ((*(char *)(param_2 + lVar74) != '\0') && (0 < (int)param_5)) { + uVar68 = uVar69 & 0xf; + if (param_5 < (uVar69 & 0xf)) { + uVar68 = param_5; + } + if (param_5 < 0x12) { + uVar68 = param_5; + } + uVar71 = uVar68; + if (uVar68 != 0) { + iVar70 = iVar70 + (int)*param_1 * (int)*param_1; + if ((((uVar68 != 1) && + (iVar70 = iVar70 + (int)param_1[1] * (int)param_1[1], uVar68 != 2)) && + (iVar70 = iVar70 + (int)param_1[2] * (int)param_1[2], uVar68 != 3)) && + (((iVar70 = iVar70 + (int)param_1[3] * (int)param_1[3], uVar68 != 4 && + (iVar70 = iVar70 + (int)param_1[4] * (int)param_1[4], uVar68 != 5)) && + (iVar70 = iVar70 + (int)param_1[5] * (int)param_1[5], uVar68 != 6)))) { + iVar70 = iVar70 + (int)param_1[6] * (int)param_1[6]; + if (uVar68 == 7) { + uVar71 = 7; + } + else { + iVar70 = iVar70 + (int)param_1[7] * (int)param_1[7]; + if (((uVar68 != 8) && + (iVar70 = iVar70 + (int)param_1[8] * (int)param_1[8], uVar68 != 9)) && + ((iVar70 = iVar70 + (int)param_1[9] * (int)param_1[9], uVar68 != 10 && + ((((iVar70 = iVar70 + (int)param_1[10] * (int)param_1[10], uVar68 != 0xb && + (iVar70 = iVar70 + (int)param_1[0xb] * (int)param_1[0xb], uVar68 != 0xc)) && + (iVar70 = iVar70 + (int)param_1[0xc] * (int)param_1[0xc], uVar68 != 0xd)) && + ((iVar70 = iVar70 + (int)param_1[0xd] * (int)param_1[0xd], uVar68 != 0xe && + (iVar70 = iVar70 + (int)param_1[0xe] * (int)param_1[0xe], uVar68 != 0xf))))))) + ) { + iVar70 = iVar70 + (int)param_1[0xf] * (int)param_1[0xf]; + if (uVar68 == 0x11) { + iVar70 = iVar70 + (int)param_1[0x10] * (int)param_1[0x10]; + } + else { + uVar71 = 0x10; + } + } + } + } + if (param_5 == uVar68) goto LAB_0039a2a4; + } + uVar73 = ((param_5 - uVar68) - 0x10 >> 4) + 1; + iVar108 = uVar73 * 0x10; + if (0xe < (param_5 - 1) - uVar68) { + iVar83 = 0; + iVar86 = 0; + iVar88 = 0; + iVar89 = 0; + uVar75 = 0; + pcVar67 = param_1 + uVar68; + do { + uVar98 = *(undefined8 *)(pcVar67 + 8); + uVar92 = *(undefined8 *)pcVar67; + uVar75 = uVar75 + 1; + cVar81 = (char)((ulong)uVar92 >> 8); + cVar76 = (char)((ulong)uVar92 >> 0x10); + cVar77 = (char)((ulong)uVar92 >> 0x18); + cVar78 = (char)((ulong)uVar92 >> 0x28); + cVar79 = (char)((ulong)uVar92 >> 0x30); + cVar80 = (char)((ulong)uVar92 >> 0x38); + sVar82 = (short)(char)uVar92; + uVar2 = CONCAT13(cVar81 >> 7,CONCAT12(cVar81,sVar82)); + uVar3 = CONCAT15(cVar76 >> 7,CONCAT14(cVar76,uVar2)); + iVar103 = (int)(short)((uint)uVar2 >> 0x10); + iVar104 = (int)(short)((uint6)uVar3 >> 0x20); + iVar106 = (int)(short)(CONCAT17(cVar77 >> 7,CONCAT16(cVar77,uVar3)) >> 0x30); + sVar84 = (short)(char)((ulong)uVar92 >> 0x20); + uVar2 = CONCAT13(cVar78 >> 7,CONCAT12(cVar78,sVar84)); + uVar3 = CONCAT15(cVar79 >> 7,CONCAT14(cVar79,uVar2)); + sVar85 = (short)((uint)uVar2 >> 0x10); + sVar87 = (short)((uint6)uVar3 >> 0x20); + sVar90 = (short)(CONCAT17(cVar80 >> 7,CONCAT16(cVar80,uVar3)) >> 0x30); + iVar100 = (int)(short)(char)((ulong)uVar98 >> 8); + iVar101 = (int)(short)(char)((ulong)uVar98 >> 0x10); + iVar102 = (int)(short)(char)((ulong)uVar98 >> 0x18); + iVar91 = (int)(short)(char)((ulong)uVar98 >> 0x20); + iVar95 = (int)(short)(char)((ulong)uVar98 >> 0x28); + iVar97 = (int)(short)(char)((ulong)uVar98 >> 0x30); + iVar99 = (int)(short)(char)((ulong)uVar98 >> 0x38); + iVar83 = iVar83 + (int)sVar82 * (int)sVar82 + + CONCAT13(sVar84 >> 0xf,(int3)sVar84) * CONCAT13(sVar84 >> 0xf,(int3)sVar84) + + (int)(short)(char)uVar98 * (int)(short)(char)uVar98 + iVar91 * iVar91; + iVar86 = iVar86 + iVar103 * iVar103 + + CONCAT13(sVar85 >> 0xf,(int3)sVar85) * CONCAT13(sVar85 >> 0xf,(int3)sVar85) + + iVar100 * iVar100 + iVar95 * iVar95; + iVar88 = iVar88 + iVar104 * iVar104 + + CONCAT13(sVar87 >> 0xf,(int3)sVar87) * CONCAT13(sVar87 >> 0xf,(int3)sVar87) + + iVar101 * iVar101 + iVar97 * iVar97; + iVar89 = iVar89 + iVar106 * iVar106 + + CONCAT13(sVar90 >> 0xf,(int3)sVar90) * CONCAT13(sVar90 >> 0xf,(int3)sVar90) + + iVar102 * iVar102 + iVar99 * iVar99; + pcVar67 = pcVar67 + 0x10; + } while (uVar75 < uVar73); + uVar71 = uVar71 + iVar108; + iVar70 = iVar70 + iVar83 + iVar86 + iVar88 + iVar89; + if (param_5 - uVar68 == iVar108) goto LAB_0039a2a4; + } + iVar70 = iVar70 + (int)param_1[(int)uVar71] * (int)param_1[(int)uVar71]; + if ((int)(uVar71 + 1) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 1)] * (int)param_1[(int)(uVar71 + 1)]; + if ((int)(uVar71 + 2) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 2)] * (int)param_1[(int)(uVar71 + 2)]; + if ((int)(uVar71 + 3) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 3)] * (int)param_1[(int)(uVar71 + 3)]; + if ((int)(uVar71 + 4) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 4)] * + (int)param_1[(int)(uVar71 + 4)]; + if ((int)(uVar71 + 5) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 5)] * + (int)param_1[(int)(uVar71 + 5)]; + if ((int)(uVar71 + 6) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 6)] * + (int)param_1[(int)(uVar71 + 6)]; + if ((int)(uVar71 + 7) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 7)] * + (int)param_1[(int)(uVar71 + 7)]; + if ((int)(uVar71 + 8) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 8)] * + (int)param_1[(int)(uVar71 + 8)]; + if ((int)(uVar71 + 9) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 9)] * + (int)param_1[(int)(uVar71 + 9)]; + if ((int)(uVar71 + 10) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 10)] * + (int)param_1[(int)(uVar71 + 10)]; + if ((int)(uVar71 + 0xb) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 0xb)] * + (int)param_1[(int)(uVar71 + 0xb)]; + if ((int)(uVar71 + 0xc) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 0xc)] * + (int)param_1[(int)(uVar71 + 0xc)]; + if ((int)(uVar71 + 0xd) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 0xd)] * + (int)param_1[(int)(uVar71 + 0xd)]; + if ((int)(uVar71 + 0xe) < (int)param_5) { + iVar70 = iVar70 + (int)param_1[(int)(uVar71 + 0xe)] * + (int)param_1[(int)(uVar71 + 0xe)]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039a2a4: + lVar74 = lVar74 + 1; + param_1 = param_1 + (int)param_5; + uVar69 = uVar69 - param_5; + } while ((int)lVar74 < param_4); + } + *param_3 = iVar70; + return 0; + } + param_4 = param_4 * param_5; + iVar108 = 0; + iVar83 = iVar108; + if (0 < param_4 + -3) { + uVar69 = param_4 - 4U >> 2; + iVar83 = uVar69 + 1; + uVar69 = (uVar69 - 0xf >> 4) + 1; + if (param_4 - 4U < 0x3c) { + iVar86 = 0; +LAB_0039a418: + pbVar72 = (byte *)(param_1 + iVar86); + do { + iVar86 = iVar86 + 4; + iVar108 = iVar108 + (int)(char)pbVar72[1] * (int)(char)pbVar72[1] + + (uint)*pbVar72 * (uint)*pbVar72 + (uint)pbVar72[2] * (uint)pbVar72[2] + + (uint)pbVar72[3] * (uint)pbVar72[3]; + pbVar72 = pbVar72 + 4; + } while (iVar86 < param_4 + -3); + } + else { + iVar108 = 0; + iVar86 = 0; + iVar88 = 0; + iVar89 = 0; + uVar68 = 0; + pcVar67 = param_1; + do { + cVar81 = *pcVar67; + pcVar4 = pcVar67 + 1; + pcVar5 = pcVar67 + 2; + pcVar6 = pcVar67 + 3; + pcVar7 = pcVar67 + 4; + pcVar8 = pcVar67 + 5; + pcVar9 = pcVar67 + 6; + pcVar10 = pcVar67 + 7; + pcVar11 = pcVar67 + 8; + pcVar12 = pcVar67 + 9; + pcVar13 = pcVar67 + 10; + pcVar14 = pcVar67 + 0xb; + pcVar15 = pcVar67 + 0xc; + pcVar16 = pcVar67 + 0xd; + pcVar17 = pcVar67 + 0xe; + pcVar18 = pcVar67 + 0xf; + pcVar19 = pcVar67 + 0x10; + pcVar20 = pcVar67 + 0x11; + pcVar21 = pcVar67 + 0x12; + pcVar22 = pcVar67 + 0x13; + pcVar23 = pcVar67 + 0x14; + pcVar24 = pcVar67 + 0x15; + pcVar25 = pcVar67 + 0x16; + pcVar26 = pcVar67 + 0x17; + pcVar27 = pcVar67 + 0x18; + pcVar28 = pcVar67 + 0x19; + pcVar29 = pcVar67 + 0x1a; + pcVar30 = pcVar67 + 0x1b; + pcVar31 = pcVar67 + 0x1c; + pcVar32 = pcVar67 + 0x1d; + pcVar33 = pcVar67 + 0x1e; + pcVar34 = pcVar67 + 0x1f; + pcVar35 = pcVar67 + 0x20; + pcVar36 = pcVar67 + 0x21; + pcVar37 = pcVar67 + 0x22; + pcVar38 = pcVar67 + 0x23; + pcVar39 = pcVar67 + 0x24; + pcVar40 = pcVar67 + 0x25; + pcVar41 = pcVar67 + 0x26; + pcVar42 = pcVar67 + 0x27; + pcVar43 = pcVar67 + 0x28; + pcVar44 = pcVar67 + 0x29; + pcVar45 = pcVar67 + 0x2a; + pcVar46 = pcVar67 + 0x2b; + pcVar47 = pcVar67 + 0x2c; + pcVar48 = pcVar67 + 0x2d; + pcVar49 = pcVar67 + 0x2e; + pcVar50 = pcVar67 + 0x2f; + pcVar51 = pcVar67 + 0x30; + pcVar52 = pcVar67 + 0x31; + pcVar53 = pcVar67 + 0x32; + pcVar54 = pcVar67 + 0x33; + pcVar55 = pcVar67 + 0x34; + pcVar56 = pcVar67 + 0x35; + pcVar57 = pcVar67 + 0x36; + pcVar58 = pcVar67 + 0x37; + pcVar59 = pcVar67 + 0x38; + pcVar60 = pcVar67 + 0x39; + pcVar61 = pcVar67 + 0x3a; + pcVar62 = pcVar67 + 0x3b; + pcVar63 = pcVar67 + 0x3c; + pcVar64 = pcVar67 + 0x3d; + pcVar65 = pcVar67 + 0x3e; + pcVar66 = pcVar67 + 0x3f; + pcVar67 = pcVar67 + 0x40; + uVar68 = uVar68 + 1; + sVar90 = (short)*pcVar4; + sVar93 = (short)*pcVar8; + sVar94 = (short)*pcVar12; + sVar96 = (short)*pcVar16; + sVar82 = (short)*pcVar36; + sVar84 = (short)*pcVar40; + sVar85 = (short)*pcVar44; + sVar87 = (short)*pcVar48; + iVar108 = (int)(short)*pcVar52 * (int)(short)*pcVar52 + + (int)(short)*pcVar51 * (int)(short)*pcVar51 + + (int)(short)*pcVar53 * (int)(short)*pcVar53 + + (int)(short)*pcVar54 * (int)(short)*pcVar54 + + CONCAT13(sVar82 >> 0xf,(int3)sVar82) * CONCAT13(sVar82 >> 0xf,(int3)sVar82) + + (int)(short)*pcVar35 * (int)(short)*pcVar35 + + (int)(short)*pcVar37 * (int)(short)*pcVar37 + + (int)(short)*pcVar38 * (int)(short)*pcVar38 + + (int)(short)*pcVar20 * (int)(short)*pcVar20 + + (int)(short)*pcVar19 * (int)(short)*pcVar19 + + (int)(short)*pcVar21 * (int)(short)*pcVar21 + + (int)(short)*pcVar22 * (int)(short)*pcVar22 + + CONCAT13(sVar90 >> 0xf,(int3)sVar90) * CONCAT13(sVar90 >> 0xf,(int3)sVar90) + + (int)(short)cVar81 * (int)(short)cVar81 + + (int)(short)*pcVar5 * (int)(short)*pcVar5 + + (int)(short)*pcVar6 * (int)(short)*pcVar6 + iVar108; + iVar86 = (int)(short)*pcVar56 * (int)(short)*pcVar56 + + (int)(short)*pcVar55 * (int)(short)*pcVar55 + + (int)(short)*pcVar57 * (int)(short)*pcVar57 + + (int)(short)*pcVar58 * (int)(short)*pcVar58 + + CONCAT13(sVar84 >> 0xf,(int3)sVar84) * CONCAT13(sVar84 >> 0xf,(int3)sVar84) + + (int)(short)*pcVar39 * (int)(short)*pcVar39 + + (int)(short)*pcVar41 * (int)(short)*pcVar41 + + (int)(short)*pcVar42 * (int)(short)*pcVar42 + + (int)(short)*pcVar24 * (int)(short)*pcVar24 + + (int)(short)*pcVar23 * (int)(short)*pcVar23 + + (int)(short)*pcVar25 * (int)(short)*pcVar25 + + (int)(short)*pcVar26 * (int)(short)*pcVar26 + + CONCAT13(sVar93 >> 0xf,(int3)sVar93) * CONCAT13(sVar93 >> 0xf,(int3)sVar93) + + (int)(short)*pcVar7 * (int)(short)*pcVar7 + + (int)(short)*pcVar9 * (int)(short)*pcVar9 + + (int)(short)*pcVar10 * (int)(short)*pcVar10 + iVar86; + iVar88 = (int)(short)*pcVar60 * (int)(short)*pcVar60 + + (int)(short)*pcVar59 * (int)(short)*pcVar59 + + (int)(short)*pcVar61 * (int)(short)*pcVar61 + + (int)(short)*pcVar62 * (int)(short)*pcVar62 + + CONCAT13(sVar85 >> 0xf,(int3)sVar85) * CONCAT13(sVar85 >> 0xf,(int3)sVar85) + + (int)(short)*pcVar43 * (int)(short)*pcVar43 + + (int)(short)*pcVar45 * (int)(short)*pcVar45 + + (int)(short)*pcVar46 * (int)(short)*pcVar46 + + (int)(short)*pcVar28 * (int)(short)*pcVar28 + + (int)(short)*pcVar27 * (int)(short)*pcVar27 + + (int)(short)*pcVar29 * (int)(short)*pcVar29 + + (int)(short)*pcVar30 * (int)(short)*pcVar30 + + CONCAT13(sVar94 >> 0xf,(int3)sVar94) * CONCAT13(sVar94 >> 0xf,(int3)sVar94) + + (int)(short)*pcVar11 * (int)(short)*pcVar11 + + (int)(short)*pcVar13 * (int)(short)*pcVar13 + + (int)(short)*pcVar14 * (int)(short)*pcVar14 + iVar88; + iVar89 = (int)(short)*pcVar64 * (int)(short)*pcVar64 + + (int)(short)*pcVar63 * (int)(short)*pcVar63 + + (int)(short)*pcVar65 * (int)(short)*pcVar65 + + (int)(short)*pcVar66 * (int)(short)*pcVar66 + + CONCAT13(sVar87 >> 0xf,(int3)sVar87) * CONCAT13(sVar87 >> 0xf,(int3)sVar87) + + (int)(short)*pcVar47 * (int)(short)*pcVar47 + + (int)(short)*pcVar49 * (int)(short)*pcVar49 + + (int)(short)*pcVar50 * (int)(short)*pcVar50 + + (int)(short)*pcVar32 * (int)(short)*pcVar32 + + (int)(short)*pcVar31 * (int)(short)*pcVar31 + + (int)(short)*pcVar33 * (int)(short)*pcVar33 + + (int)(short)*pcVar34 * (int)(short)*pcVar34 + + CONCAT13(sVar96 >> 0xf,(int3)sVar96) * CONCAT13(sVar96 >> 0xf,(int3)sVar96) + + (int)(short)*pcVar15 * (int)(short)*pcVar15 + + (int)(short)*pcVar17 * (int)(short)*pcVar17 + + (int)(short)*pcVar18 * (int)(short)*pcVar18 + iVar89; + } while (uVar68 < uVar69); + iVar108 = iVar108 + iVar86 + iVar88 + iVar89; + iVar86 = uVar69 * 0x40; + if (iVar83 != uVar69 * 0x10) goto LAB_0039a418; + } + iVar83 = iVar83 * 4; + } + if (iVar83 < param_4) { + uVar68 = param_4 - iVar83; + uVar69 = -(int)(param_1 + iVar83) & 0xf; + uVar1 = (ulong)uVar69; + if (uVar68 < uVar69) { + uVar1 = (ulong)uVar68; + } + if (uVar68 < 0x12) { + uVar1 = (ulong)uVar68; + } + uVar69 = (uint)uVar1; + iVar86 = iVar83; + if (uVar69 != 0) { + iVar86 = iVar83 + 1; + iVar88 = (int)param_1[iVar83]; + iVar108 = iVar108 + iVar88 * iVar88; + if (uVar69 != 1) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 2; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 2) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 3; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 3) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 4; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 4) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 5; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 5) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 6; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 6) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 7; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 7) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 8; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 8) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 9; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 9) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 10; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 10) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0xb; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 0xb) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0xc; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 0xc) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0xd; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 0xd) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0xe; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 0xe) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0xf; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 != 0xf) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0x10; + iVar108 = iVar108 + (int)param_1[lVar74] * (int)param_1[lVar74]; + if (uVar69 == 0x11) { + lVar74 = (long)iVar86; + iVar86 = iVar83 + 0x11; + iVar108 = iVar108 + (int)param_1[lVar74] * + (int)param_1[lVar74]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar69 == uVar68) goto LAB_0039a77c; + } + uVar71 = ((uVar68 - uVar69) - 0x10 >> 4) + 1; + iVar88 = uVar71 * 0x10; + if (0xe < (uVar68 - 1) - uVar69) { + iVar89 = 0; + iVar91 = 0; + iVar95 = 0; + iVar97 = 0; + uVar73 = 0; + pcVar67 = param_1 + uVar1 + (long)iVar83; + do { + uVar98 = *(undefined8 *)(pcVar67 + 8); + uVar92 = *(undefined8 *)pcVar67; + uVar73 = uVar73 + 1; + cVar81 = (char)((ulong)uVar92 >> 8); + cVar76 = (char)((ulong)uVar92 >> 0x10); + cVar77 = (char)((ulong)uVar92 >> 0x18); + cVar78 = (char)((ulong)uVar92 >> 0x28); + cVar79 = (char)((ulong)uVar92 >> 0x30); + cVar80 = (char)((ulong)uVar92 >> 0x38); + sVar82 = (short)(char)uVar92; + uVar2 = CONCAT13(cVar81 >> 7,CONCAT12(cVar81,sVar82)); + uVar3 = CONCAT15(cVar76 >> 7,CONCAT14(cVar76,uVar2)); + iVar106 = (int)(short)((uint)uVar2 >> 0x10); + iVar105 = (int)(short)((uint6)uVar3 >> 0x20); + iVar107 = (int)(short)(CONCAT17(cVar77 >> 7,CONCAT16(cVar77,uVar3)) >> 0x30); + sVar84 = (short)(char)((ulong)uVar92 >> 0x20); + uVar2 = CONCAT13(cVar78 >> 7,CONCAT12(cVar78,sVar84)); + uVar3 = CONCAT15(cVar79 >> 7,CONCAT14(cVar79,uVar2)); + sVar85 = (short)((uint)uVar2 >> 0x10); + sVar87 = (short)((uint6)uVar3 >> 0x20); + sVar90 = (short)(CONCAT17(cVar80 >> 7,CONCAT16(cVar80,uVar3)) >> 0x30); + iVar102 = (int)(short)(char)((ulong)uVar98 >> 8); + iVar103 = (int)(short)(char)((ulong)uVar98 >> 0x10); + iVar104 = (int)(short)(char)((ulong)uVar98 >> 0x18); + iVar83 = (int)(short)(char)((ulong)uVar98 >> 0x20); + iVar99 = (int)(short)(char)((ulong)uVar98 >> 0x28); + iVar100 = (int)(short)(char)((ulong)uVar98 >> 0x30); + iVar101 = (int)(short)(char)((ulong)uVar98 >> 0x38); + iVar89 = iVar89 + (int)sVar82 * (int)sVar82 + + CONCAT13(sVar84 >> 0xf,(int3)sVar84) * CONCAT13(sVar84 >> 0xf,(int3)sVar84) + + (int)(short)(char)uVar98 * (int)(short)(char)uVar98 + iVar83 * iVar83; + iVar91 = iVar91 + iVar106 * iVar106 + + CONCAT13(sVar85 >> 0xf,(int3)sVar85) * CONCAT13(sVar85 >> 0xf,(int3)sVar85) + + iVar102 * iVar102 + iVar99 * iVar99; + iVar95 = iVar95 + iVar105 * iVar105 + + CONCAT13(sVar87 >> 0xf,(int3)sVar87) * CONCAT13(sVar87 >> 0xf,(int3)sVar87) + + iVar103 * iVar103 + iVar100 * iVar100; + iVar97 = iVar97 + iVar107 * iVar107 + + CONCAT13(sVar90 >> 0xf,(int3)sVar90) * CONCAT13(sVar90 >> 0xf,(int3)sVar90) + + iVar104 * iVar104 + iVar101 * iVar101; + pcVar67 = pcVar67 + 0x10; + } while (uVar73 < uVar71); + iVar86 = iVar86 + iVar88; + iVar108 = iVar108 + iVar89 + iVar91 + iVar95 + iVar97; + if (iVar88 == uVar68 - uVar69) goto LAB_0039a77c; + } + iVar108 = iVar108 + (int)param_1[iVar86] * (int)param_1[iVar86]; + if (iVar86 + 1 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 1] * (int)param_1[iVar86 + 1]; + if (iVar86 + 2 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 2] * (int)param_1[iVar86 + 2]; + if (iVar86 + 3 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 3] * (int)param_1[iVar86 + 3]; + if (iVar86 + 4 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 4] * (int)param_1[iVar86 + 4]; + if (iVar86 + 5 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 5] * (int)param_1[iVar86 + 5]; + if (iVar86 + 6 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 6] * (int)param_1[iVar86 + 6]; + if (iVar86 + 7 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 7] * (int)param_1[iVar86 + 7]; + if (iVar86 + 8 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 8] * (int)param_1[iVar86 + 8]; + if (iVar86 + 9 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 9] * (int)param_1[iVar86 + 9]; + if (iVar86 + 10 < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 10] * (int)param_1[iVar86 + 10]; + if (iVar86 + 0xb < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 0xb] * + (int)param_1[iVar86 + 0xb]; + if (iVar86 + 0xc < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 0xc] * + (int)param_1[iVar86 + 0xc]; + if (iVar86 + 0xd < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 0xd] * + (int)param_1[iVar86 + 0xd]; + if (iVar86 + 0xe < param_4) { + iVar108 = iVar108 + (int)param_1[iVar86 + 0xe] * + (int)param_1[iVar86 + 0xe]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039a77c: + *param_3 = iVar70 + iVar108; + return 0; +} + + +================================================================== + +### FUNC 0039a7ac (2868 bytes) name=FUN_0039a7ac + +undefined8 +FUN_0039a7ac(char *param_1,char *param_2,long param_3,int *param_4,int param_5,uint param_6) + +{ + ulong uVar1; + short sVar2; + undefined4 uVar3; + undefined6 uVar4; + char *pcVar5; + char *pcVar69; + uint uVar133; + uint uVar134; + int iVar135; + uint uVar136; + int iVar137; + uint uVar138; + long lVar139; + byte *pbVar140; + byte *pbVar141; + uint uVar142; + char cVar143; + char cVar144; + char cVar145; + int iVar146; + int iVar147; + int iVar148; + int iVar149; + int iVar150; + undefined8 uVar151; + int iVar152; + int iVar153; + undefined8 uVar154; + int iVar155; + int iVar156; + int iVar157; + int iVar158; + int iVar159; + int iVar160; + undefined8 uVar161; + int iVar162; + int iVar163; + undefined8 uVar164; + int iVar165; + int iVar166; + int iVar167; + int iVar168; + int iVar169; + int iVar170; + int iVar171; + char *pcVar6; + char *pcVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + char *pcVar17; + char *pcVar18; + char *pcVar19; + char *pcVar20; + char *pcVar21; + char *pcVar22; + char *pcVar23; + char *pcVar24; + char *pcVar25; + char *pcVar26; + char *pcVar27; + char *pcVar28; + char *pcVar29; + char *pcVar30; + char *pcVar31; + char *pcVar32; + char *pcVar33; + char *pcVar34; + char *pcVar35; + char *pcVar36; + char *pcVar37; + char *pcVar38; + char *pcVar39; + char *pcVar40; + char *pcVar41; + char *pcVar42; + char *pcVar43; + char *pcVar44; + char *pcVar45; + char *pcVar46; + char *pcVar47; + char *pcVar48; + char *pcVar49; + char *pcVar50; + char *pcVar51; + char *pcVar52; + char *pcVar53; + char *pcVar54; + char *pcVar55; + char *pcVar56; + char *pcVar57; + char *pcVar58; + char *pcVar59; + char *pcVar60; + char *pcVar61; + char *pcVar62; + char *pcVar63; + char *pcVar64; + char *pcVar65; + char *pcVar66; + char *pcVar67; + char *pcVar68; + char *pcVar70; + char *pcVar71; + char *pcVar72; + char *pcVar73; + char *pcVar74; + char *pcVar75; + char *pcVar76; + char *pcVar77; + char *pcVar78; + char *pcVar79; + char *pcVar80; + char *pcVar81; + char *pcVar82; + char *pcVar83; + char *pcVar84; + char *pcVar85; + char *pcVar86; + char *pcVar87; + char *pcVar88; + char *pcVar89; + char *pcVar90; + char *pcVar91; + char *pcVar92; + char *pcVar93; + char *pcVar94; + char *pcVar95; + char *pcVar96; + char *pcVar97; + char *pcVar98; + char *pcVar99; + char *pcVar100; + char *pcVar101; + char *pcVar102; + char *pcVar103; + char *pcVar104; + char *pcVar105; + char *pcVar106; + char *pcVar107; + char *pcVar108; + char *pcVar109; + char *pcVar110; + char *pcVar111; + char *pcVar112; + char *pcVar113; + char *pcVar114; + char *pcVar115; + char *pcVar116; + char *pcVar117; + char *pcVar118; + char *pcVar119; + char *pcVar120; + char *pcVar121; + char *pcVar122; + char *pcVar123; + char *pcVar124; + char *pcVar125; + char *pcVar126; + char *pcVar127; + char *pcVar128; + char *pcVar129; + char *pcVar130; + char *pcVar131; + char *pcVar132; + + iVar135 = *param_4; + if (param_3 != 0) { + if (0 < param_5) { + uVar134 = -(int)param_1; + lVar139 = 0; + do { + if ((*(char *)(param_3 + lVar139) != '\0') && (0 < (int)param_6)) { + uVar133 = uVar134 & 0xf; + if (param_6 < (uVar134 & 0xf)) { + uVar133 = param_6; + } + if (param_6 < 0x11) { + uVar133 = param_6; + } + uVar136 = uVar133; + if (uVar133 != 0) { + iVar135 = iVar135 + ((int)*param_1 - (int)*param_2) * ((int)*param_1 - (int)*param_2); + /* try { // try from 0039a83c to 0049a83f has its CatchHandler @ 0039a868 */ + /* try { // try from 0039a844 to 0049a847 has its CatchHandler @ 00399530 */ + /* catch() { ... } // from try @ 003995e0 with catch @ 0039a854 */ + /* try { // try from 0039a864 to 0049a867 has its CatchHandler @ 00399530 */ + /* catch() { ... } // from try @ 0039a83c with catch @ 0039a868 */ + /* try { // try from 0039a878 to 0049a87b has its CatchHandler @ 00399530 */ + /* catch() { ... } // from try @ 0039a8e8 with catch @ 0039a87c + catch() { ... } // from try @ 0039a92c with catch @ 0039a87c + catch() { ... } // from try @ 0039ab80 with catch @ 0039a87c + catch() { ... } // from try @ 0039abe8 with catch @ 0039a87c + catch() { ... } // from try @ 0039acdc with catch @ 0039a87c + catch() { ... } // from try @ 0039acf0 with catch @ 0039a87c + catch() { ... } // from try @ 0039ad10 with catch @ 0039a87c */ + if ((((uVar133 != 1) && + (iVar135 = iVar135 + ((int)param_1[1] - (int)param_2[1]) * + ((int)param_1[1] - (int)param_2[1]), uVar133 != 2)) && + (iVar135 = iVar135 + ((int)param_1[2] - (int)param_2[2]) * + ((int)param_1[2] - (int)param_2[2]), uVar133 != 3)) && + (((iVar135 = iVar135 + ((int)param_1[3] - (int)param_2[3]) * + ((int)param_1[3] - (int)param_2[3]), uVar133 != 4 && + (iVar135 = iVar135 + ((int)param_1[4] - (int)param_2[4]) * + ((int)param_1[4] - (int)param_2[4]), uVar133 != 5)) && + (iVar135 = iVar135 + ((int)param_1[5] - (int)param_2[5]) * + ((int)param_1[5] - (int)param_2[5]), uVar133 != 6)))) { + iVar135 = iVar135 + ((int)param_1[6] - (int)param_2[6]) * + ((int)param_1[6] - (int)param_2[6]); + if (uVar133 == 7) { + uVar136 = 7; + } + else { + iVar135 = iVar135 + ((int)param_1[7] - (int)param_2[7]) * + ((int)param_1[7] - (int)param_2[7]); + /* try { // try from 0039a8e8 to 0049a8eb has its CatchHandler @ 0039a87c */ + /* try { // try from 0039a924 to 0049a927 has its CatchHandler @ 0039ad00 */ + /* try { // try from 0039a92c to 0049ab3f has its CatchHandler @ 0039a87c */ + if (((uVar133 != 8) && + (iVar135 = iVar135 + ((int)param_1[8] - (int)param_2[8]) * + ((int)param_1[8] - (int)param_2[8]), uVar133 != 9)) && + (((iVar135 = iVar135 + ((int)param_1[9] - (int)param_2[9]) * + ((int)param_1[9] - (int)param_2[9]), uVar133 != 10 && + (((iVar135 = iVar135 + ((int)param_1[10] - (int)param_2[10]) * + ((int)param_1[10] - (int)param_2[10]), uVar133 != 0xb && + (iVar135 = iVar135 + ((int)param_1[0xb] - (int)param_2[0xb]) * + ((int)param_1[0xb] - (int)param_2[0xb]), uVar133 != 0xc) + ) && (iVar135 = iVar135 + ((int)param_1[0xc] - (int)param_2[0xc]) * + ((int)param_1[0xc] - (int)param_2[0xc]), + uVar133 != 0xd)))) && + (iVar135 = iVar135 + ((int)param_1[0xd] - (int)param_2[0xd]) * + ((int)param_1[0xd] - (int)param_2[0xd]), uVar133 != 0xe)))) + { + iVar135 = iVar135 + ((int)param_1[0xe] - (int)param_2[0xe]) * + ((int)param_1[0xe] - (int)param_2[0xe]); + if (uVar133 == 0x10) { + iVar135 = iVar135 + ((int)param_1[0xf] - (int)param_2[0xf]) * + ((int)param_1[0xf] - (int)param_2[0xf]); + } + else { + uVar136 = 0xf; + } + } + } + } + if (param_6 == uVar133) goto LAB_0039abe4; + } + uVar138 = ((param_6 - uVar133) - 0x10 >> 4) + 1; + iVar137 = uVar138 * 0x10; + if (0xe < (param_6 - 1) - uVar133) { + iVar146 = 0; + iVar147 = 0; + iVar148 = 0; + iVar149 = 0; + uVar142 = 0; + pcVar132 = param_2 + uVar133; + pcVar68 = param_1 + uVar133; + do { + uVar154 = *(undefined8 *)(pcVar68 + 8); + uVar151 = *(undefined8 *)pcVar68; + uVar142 = uVar142 + 1; + uVar164 = *(undefined8 *)(pcVar132 + 8); + uVar161 = *(undefined8 *)pcVar132; + cVar144 = (char)((ulong)uVar154 >> 0x28); + cVar145 = (char)((ulong)uVar154 >> 0x30); + cVar143 = (char)((ulong)uVar154 >> 0x38); + iVar166 = (int)(short)(char)uVar151 - (int)(short)(char)uVar161; + iVar167 = (int)(short)(char)((ulong)uVar151 >> 8) - + (int)(short)(char)((ulong)uVar161 >> 8); + iVar168 = (int)(short)(char)((ulong)uVar151 >> 0x10) - + (int)(short)(char)((ulong)uVar161 >> 0x10); + iVar170 = (int)(short)(char)((ulong)uVar151 >> 0x18) - + (int)(short)(char)((ulong)uVar161 >> 0x18); + iVar156 = (int)(short)(char)((ulong)uVar151 >> 0x20) - + (int)(short)(char)((ulong)uVar161 >> 0x20); + iVar157 = (int)(short)(char)((ulong)uVar151 >> 0x28) - + (int)(short)(char)((ulong)uVar161 >> 0x28); + iVar158 = (int)(short)(char)((ulong)uVar151 >> 0x30) - + (int)(short)(char)((ulong)uVar161 >> 0x30); + iVar159 = (int)(short)(char)((ulong)uVar151 >> 0x38) - + (int)(short)(char)((ulong)uVar161 >> 0x38); + iVar160 = (int)(short)(char)uVar154 - (int)(short)(char)uVar164; + iVar162 = (int)(short)(char)((ulong)uVar154 >> 8) - + (int)(short)(char)((ulong)uVar164 >> 8); + iVar163 = (int)(short)(char)((ulong)uVar154 >> 0x10) - + (int)(short)(char)((ulong)uVar164 >> 0x10); + iVar165 = (int)(short)(char)((ulong)uVar154 >> 0x18) - + (int)(short)(char)((ulong)uVar164 >> 0x18); + sVar2 = (short)(char)((ulong)uVar154 >> 0x20); + uVar3 = CONCAT13(cVar144 >> 7,CONCAT12(cVar144,sVar2)); + uVar4 = CONCAT15(cVar145 >> 7,CONCAT14(cVar145,uVar3)); + iVar150 = (int)sVar2 - (int)(short)(char)((ulong)uVar164 >> 0x20); + iVar152 = (int)(short)((uint)uVar3 >> 0x10) - + (int)(short)(char)((ulong)uVar164 >> 0x28); + iVar153 = (int)(short)((uint6)uVar4 >> 0x20) - + (int)(short)(char)((ulong)uVar164 >> 0x30); + iVar155 = (int)(short)(CONCAT17(cVar143 >> 7,CONCAT16(cVar143,uVar4)) >> 0x30) - + (int)(short)(char)((ulong)uVar164 >> 0x38); + iVar146 = iVar146 + iVar166 * iVar166 + iVar156 * iVar156 + iVar160 * iVar160 + + iVar150 * iVar150; + iVar147 = iVar147 + iVar167 * iVar167 + iVar157 * iVar157 + iVar162 * iVar162 + + iVar152 * iVar152; + iVar148 = iVar148 + iVar168 * iVar168 + iVar158 * iVar158 + iVar163 * iVar163 + + iVar153 * iVar153; + iVar149 = iVar149 + iVar170 * iVar170 + iVar159 * iVar159 + iVar165 * iVar165 + + iVar155 * iVar155; + pcVar132 = pcVar132 + 0x10; + pcVar68 = pcVar68 + 0x10; + } while (uVar142 < uVar138); + uVar136 = uVar136 + iVar137; + iVar135 = iVar135 + iVar146 + iVar147 + iVar148 + iVar149; + if (param_6 - uVar133 == iVar137) goto LAB_0039abe4; + } + iVar137 = uVar136 + 1; + iVar135 = iVar135 + ((int)param_1[(int)uVar136] - (int)param_2[(int)uVar136]) * + ((int)param_1[(int)uVar136] - (int)param_2[(int)uVar136]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 2; + iVar135 = iVar135 + ((int)param_1[iVar137] - (int)param_2[iVar137]) * + ((int)param_1[iVar137] - (int)param_2[iVar137]); + if (iVar146 < (int)param_6) { + iVar137 = uVar136 + 3; + iVar135 = iVar135 + ((int)param_1[iVar146] - (int)param_2[iVar146]) * + ((int)param_1[iVar146] - (int)param_2[iVar146]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 4; + iVar135 = iVar135 + ((int)param_1[iVar137] - (int)param_2[iVar137]) * + ((int)param_1[iVar137] - (int)param_2[iVar137]); + if (iVar146 < (int)param_6) { + iVar137 = uVar136 + 5; + iVar135 = iVar135 + ((int)param_1[iVar146] - (int)param_2[iVar146]) * + ((int)param_1[iVar146] - (int)param_2[iVar146]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 6; + iVar135 = iVar135 + ((int)param_1[iVar137] - (int)param_2[iVar137]) * + ((int)param_1[iVar137] - (int)param_2[iVar137]); + if (iVar146 < (int)param_6) { + iVar137 = uVar136 + 7; + iVar135 = iVar135 + ((int)param_1[iVar146] - (int)param_2[iVar146]) * + ((int)param_1[iVar146] - (int)param_2[iVar146]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 8; + iVar135 = iVar135 + ((int)param_1[iVar137] - (int)param_2[iVar137]) * + ((int)param_1[iVar137] - (int)param_2[iVar137]); + if (iVar146 < (int)param_6) { + iVar137 = uVar136 + 9; + iVar135 = iVar135 + ((int)param_1[iVar146] - (int)param_2[iVar146]) * + ((int)param_1[iVar146] - (int)param_2[iVar146]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 10; + iVar135 = iVar135 + ((int)param_1[iVar137] - (int)param_2[iVar137]) * + ((int)param_1[iVar137] - (int)param_2[iVar137]); + if (iVar146 < (int)param_6) { + iVar137 = uVar136 + 0xb; + iVar135 = iVar135 + ((int)param_1[iVar146] - (int)param_2[iVar146]) * + ((int)param_1[iVar146] - (int)param_2[iVar146]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 0xc; + /* try { // try from 0039ab78 to 0049ab7b has its CatchHandler @ 0039ace0 */ + /* try { // try from 0039ab80 to 0049ab9f has its CatchHandler @ 0039a87c */ + iVar135 = iVar135 + ((int)param_1[iVar137] - (int)param_2[iVar137]) + * ((int)param_1[iVar137] - (int)param_2[iVar137] + ); + if (iVar146 < (int)param_6) { + iVar137 = uVar136 + 0xd; + iVar135 = iVar135 + ((int)param_1[iVar146] - (int)param_2[iVar146] + ) * ((int)param_1[iVar146] - + (int)param_2[iVar146]); + if (iVar137 < (int)param_6) { + iVar146 = uVar136 + 0xe; + iVar135 = iVar135 + ((int)param_1[iVar137] - + (int)param_2[iVar137]) * + ((int)param_1[iVar137] - + (int)param_2[iVar137]); + if (iVar146 < (int)param_6) { + /* try { // try from 0039abe0 to 0049abe3 has its CatchHandler @ 0039accc */ + iVar135 = iVar135 + ((int)param_1[iVar146] - + (int)param_2[iVar146]) * + ((int)param_1[iVar146] - + (int)param_2[iVar146]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039abe4: + lVar139 = lVar139 + 1; + /* try { // try from 0039abe8 to 0049acb3 has its CatchHandler @ 0039a87c */ + param_1 = param_1 + (int)param_6; + param_2 = param_2 + (int)param_6; + uVar134 = uVar134 - param_6; + } while ((int)lVar139 < param_5); + } + *param_4 = iVar135; + return 0; + } + param_5 = param_5 * param_6; + iVar146 = 0; + iVar137 = iVar146; + if (0 < param_5 + -3) { + uVar134 = param_5 - 4U >> 2; + iVar137 = uVar134 + 1; + uVar134 = (uVar134 - 0xf >> 4) + 1; + if (param_5 - 4U < 0x3c) { + iVar147 = 0; +LAB_0039adb4: + pbVar140 = (byte *)(param_2 + iVar147); + pbVar141 = (byte *)(param_1 + iVar147); + do { + iVar147 = iVar147 + 4; + iVar146 = iVar146 + ((int)(char)pbVar141[1] - (int)(char)pbVar140[1]) * + ((int)(char)pbVar141[1] - (int)(char)pbVar140[1]) + + ((uint)*pbVar141 - (uint)*pbVar140) * + ((uint)*pbVar141 - (uint)*pbVar140) + + ((uint)pbVar141[2] - (uint)pbVar140[2]) * + ((uint)pbVar141[2] - (uint)pbVar140[2]) + + ((uint)pbVar141[3] - (uint)pbVar140[3]) * + ((uint)pbVar141[3] - (uint)pbVar140[3]); + pbVar140 = pbVar140 + 4; + pbVar141 = pbVar141 + 4; + } while (iVar147 < param_5 + -3); + } + else { + iVar146 = 0; + iVar147 = 0; + iVar148 = 0; + iVar149 = 0; + uVar133 = 0; + pcVar132 = param_2; + pcVar68 = param_1; + do { + cVar144 = *pcVar68; + pcVar5 = pcVar68 + 1; + pcVar6 = pcVar68 + 2; + pcVar7 = pcVar68 + 3; + pcVar8 = pcVar68 + 4; + pcVar9 = pcVar68 + 5; + pcVar10 = pcVar68 + 6; + pcVar11 = pcVar68 + 7; + pcVar12 = pcVar68 + 8; + pcVar13 = pcVar68 + 9; + pcVar14 = pcVar68 + 10; + pcVar15 = pcVar68 + 0xb; + pcVar16 = pcVar68 + 0xc; + pcVar17 = pcVar68 + 0xd; + pcVar18 = pcVar68 + 0xe; + pcVar19 = pcVar68 + 0xf; + pcVar20 = pcVar68 + 0x10; + pcVar21 = pcVar68 + 0x11; + pcVar22 = pcVar68 + 0x12; + pcVar23 = pcVar68 + 0x13; + pcVar24 = pcVar68 + 0x14; + pcVar25 = pcVar68 + 0x15; + pcVar26 = pcVar68 + 0x16; + pcVar27 = pcVar68 + 0x17; + pcVar28 = pcVar68 + 0x18; + pcVar29 = pcVar68 + 0x19; + pcVar30 = pcVar68 + 0x1a; + pcVar31 = pcVar68 + 0x1b; + pcVar32 = pcVar68 + 0x1c; + pcVar33 = pcVar68 + 0x1d; + pcVar34 = pcVar68 + 0x1e; + pcVar35 = pcVar68 + 0x1f; + pcVar36 = pcVar68 + 0x20; + pcVar37 = pcVar68 + 0x21; + pcVar38 = pcVar68 + 0x22; + pcVar39 = pcVar68 + 0x23; + pcVar40 = pcVar68 + 0x24; + pcVar41 = pcVar68 + 0x25; + pcVar42 = pcVar68 + 0x26; + pcVar43 = pcVar68 + 0x27; + pcVar44 = pcVar68 + 0x28; + pcVar45 = pcVar68 + 0x29; + pcVar46 = pcVar68 + 0x2a; + pcVar47 = pcVar68 + 0x2b; + pcVar48 = pcVar68 + 0x2c; + pcVar49 = pcVar68 + 0x2d; + pcVar50 = pcVar68 + 0x2e; + pcVar51 = pcVar68 + 0x2f; + pcVar52 = pcVar68 + 0x30; + pcVar53 = pcVar68 + 0x31; + pcVar54 = pcVar68 + 0x32; + pcVar55 = pcVar68 + 0x33; + pcVar56 = pcVar68 + 0x34; + pcVar57 = pcVar68 + 0x35; + pcVar58 = pcVar68 + 0x36; + pcVar59 = pcVar68 + 0x37; + pcVar60 = pcVar68 + 0x38; + pcVar61 = pcVar68 + 0x39; + pcVar62 = pcVar68 + 0x3a; + pcVar63 = pcVar68 + 0x3b; + pcVar64 = pcVar68 + 0x3c; + pcVar65 = pcVar68 + 0x3d; + pcVar66 = pcVar68 + 0x3e; + pcVar67 = pcVar68 + 0x3f; + pcVar68 = pcVar68 + 0x40; + uVar133 = uVar133 + 1; + cVar145 = *pcVar132; + pcVar69 = pcVar132 + 1; + pcVar70 = pcVar132 + 2; + pcVar71 = pcVar132 + 3; + pcVar72 = pcVar132 + 4; + pcVar73 = pcVar132 + 5; + pcVar74 = pcVar132 + 6; + pcVar75 = pcVar132 + 7; + pcVar76 = pcVar132 + 8; + pcVar77 = pcVar132 + 9; + pcVar78 = pcVar132 + 10; + pcVar79 = pcVar132 + 0xb; + pcVar80 = pcVar132 + 0xc; + pcVar81 = pcVar132 + 0xd; + pcVar82 = pcVar132 + 0xe; + pcVar83 = pcVar132 + 0xf; + pcVar84 = pcVar132 + 0x10; + pcVar85 = pcVar132 + 0x11; + pcVar86 = pcVar132 + 0x12; + pcVar87 = pcVar132 + 0x13; + pcVar88 = pcVar132 + 0x14; + pcVar89 = pcVar132 + 0x15; + pcVar90 = pcVar132 + 0x16; + pcVar91 = pcVar132 + 0x17; + pcVar92 = pcVar132 + 0x18; + pcVar93 = pcVar132 + 0x19; + pcVar94 = pcVar132 + 0x1a; + pcVar95 = pcVar132 + 0x1b; + pcVar96 = pcVar132 + 0x1c; + pcVar97 = pcVar132 + 0x1d; + pcVar98 = pcVar132 + 0x1e; + pcVar99 = pcVar132 + 0x1f; + pcVar100 = pcVar132 + 0x20; + pcVar101 = pcVar132 + 0x21; + pcVar102 = pcVar132 + 0x22; + pcVar103 = pcVar132 + 0x23; + pcVar104 = pcVar132 + 0x24; + pcVar105 = pcVar132 + 0x25; + pcVar106 = pcVar132 + 0x26; + pcVar107 = pcVar132 + 0x27; + pcVar108 = pcVar132 + 0x28; + pcVar109 = pcVar132 + 0x29; + pcVar110 = pcVar132 + 0x2a; + pcVar111 = pcVar132 + 0x2b; + pcVar112 = pcVar132 + 0x2c; + pcVar113 = pcVar132 + 0x2d; + pcVar114 = pcVar132 + 0x2e; + pcVar115 = pcVar132 + 0x2f; + pcVar116 = pcVar132 + 0x30; + pcVar117 = pcVar132 + 0x31; + pcVar118 = pcVar132 + 0x32; + pcVar119 = pcVar132 + 0x33; + pcVar120 = pcVar132 + 0x34; + pcVar121 = pcVar132 + 0x35; + pcVar122 = pcVar132 + 0x36; + pcVar123 = pcVar132 + 0x37; + pcVar124 = pcVar132 + 0x38; + pcVar125 = pcVar132 + 0x39; + pcVar126 = pcVar132 + 0x3a; + pcVar127 = pcVar132 + 0x3b; + pcVar128 = pcVar132 + 0x3c; + pcVar129 = pcVar132 + 0x3d; + pcVar130 = pcVar132 + 0x3e; + pcVar131 = pcVar132 + 0x3f; + pcVar132 = pcVar132 + 0x40; + /* catch() { ... } // from try @ 0039abe0 with catch @ 0039accc */ + /* try { // try from 0039acdc to 0049acdf has its CatchHandler @ 0039a87c */ + /* catch() { ... } // from try @ 0039ab78 with catch @ 0039ace0 */ + uVar3 = CONCAT13(*pcVar25 >> 7,CONCAT12(*pcVar25,(short)*pcVar21)); + uVar4 = CONCAT15(*pcVar29 >> 7,CONCAT14(*pcVar29,uVar3)); + iVar150 = (int)(short)*pcVar21 - (int)(short)*pcVar85; + iVar152 = (int)(short)((uint)uVar3 >> 0x10) - (int)(short)*pcVar89; + iVar153 = (int)(short)((uint6)uVar4 >> 0x20) - (int)(short)*pcVar93; + iVar155 = (int)(short)(CONCAT17(*pcVar33 >> 7,CONCAT16(*pcVar33,uVar4)) >> 0x30) - + (int)(short)*pcVar97; + /* try { // try from 0039acf0 to 0049acf3 has its CatchHandler @ 0039a87c */ + iVar150 = iVar150 * iVar150; + iVar152 = iVar152 * iVar152; + iVar153 = iVar153 * iVar153; + iVar155 = iVar155 * iVar155; + /* catch() { ... } // from try @ 0039a924 with catch @ 0039ad00 */ + /* try { // try from 0039ad10 to 0049ad13 has its CatchHandler @ 0039a87c */ + iVar146 = ((int)(short)*pcVar53 - (int)(short)*pcVar117) * + ((int)(short)*pcVar53 - (int)(short)*pcVar117) + + ((int)(short)*pcVar52 - (int)(short)*pcVar116) * + ((int)(short)*pcVar52 - (int)(short)*pcVar116) + + ((int)(short)*pcVar54 - (int)(short)*pcVar118) * + ((int)(short)*pcVar54 - (int)(short)*pcVar118) + + ((int)(short)*pcVar55 - (int)(short)*pcVar119) * + ((int)(short)*pcVar55 - (int)(short)*pcVar119) + + ((int)(short)*pcVar37 - (int)(short)*pcVar101) * + ((int)(short)*pcVar37 - (int)(short)*pcVar101) + + ((int)(short)*pcVar36 - (int)(short)*pcVar100) * + ((int)(short)*pcVar36 - (int)(short)*pcVar100) + + ((int)(short)*pcVar38 - (int)(short)*pcVar102) * + ((int)(short)*pcVar38 - (int)(short)*pcVar102) + + ((int)(short)*pcVar39 - (int)(short)*pcVar103) * + ((int)(short)*pcVar39 - (int)(short)*pcVar103) + + iVar150 + ((int)(short)*pcVar20 - (int)(short)*pcVar84) * + ((int)(short)*pcVar20 - (int)(short)*pcVar84) + + ((int)(short)*pcVar22 - (int)(short)*pcVar86) * + ((int)(short)*pcVar22 - (int)(short)*pcVar86) + + ((int)(short)*pcVar23 - (int)(short)*pcVar87) * + ((int)(short)*pcVar23 - (int)(short)*pcVar87) + + ((int)(short)*pcVar5 - (int)(short)*pcVar69) * + ((int)(short)*pcVar5 - (int)(short)*pcVar69) + + ((int)(short)cVar144 - (int)(short)cVar145) * + ((int)(short)cVar144 - (int)(short)cVar145) + + ((int)(short)*pcVar6 - (int)(short)*pcVar70) * + ((int)(short)*pcVar6 - (int)(short)*pcVar70) + + ((int)(short)*pcVar7 - (int)(short)*pcVar71) * + ((int)(short)*pcVar7 - (int)(short)*pcVar71) + iVar146; + iVar147 = ((int)(short)*pcVar57 - (int)(short)*pcVar121) * + ((int)(short)*pcVar57 - (int)(short)*pcVar121) + + ((int)(short)*pcVar56 - (int)(short)*pcVar120) * + ((int)(short)*pcVar56 - (int)(short)*pcVar120) + + ((int)(short)*pcVar58 - (int)(short)*pcVar122) * + ((int)(short)*pcVar58 - (int)(short)*pcVar122) + + ((int)(short)*pcVar59 - (int)(short)*pcVar123) * + ((int)(short)*pcVar59 - (int)(short)*pcVar123) + + ((int)(short)*pcVar41 - (int)(short)*pcVar105) * + ((int)(short)*pcVar41 - (int)(short)*pcVar105) + + ((int)(short)*pcVar40 - (int)(short)*pcVar104) * + ((int)(short)*pcVar40 - (int)(short)*pcVar104) + + ((int)(short)*pcVar42 - (int)(short)*pcVar106) * + ((int)(short)*pcVar42 - (int)(short)*pcVar106) + + ((int)(short)*pcVar43 - (int)(short)*pcVar107) * + ((int)(short)*pcVar43 - (int)(short)*pcVar107) + + (int)(CONCAT17((char)((uint)iVar152 >> 0x18), + CONCAT16((char)((uint)iVar152 >> 0x10), + CONCAT15((char)((uint)iVar152 >> 8), + CONCAT14((char)iVar152,iVar150)))) >> 0x20) + + ((int)(short)*pcVar24 - (int)(short)*pcVar88) * + ((int)(short)*pcVar24 - (int)(short)*pcVar88) + + ((int)(short)*pcVar26 - (int)(short)*pcVar90) * + ((int)(short)*pcVar26 - (int)(short)*pcVar90) + + ((int)(short)*pcVar27 - (int)(short)*pcVar91) * + ((int)(short)*pcVar27 - (int)(short)*pcVar91) + + ((int)(short)*pcVar9 - (int)(short)*pcVar73) * + ((int)(short)*pcVar9 - (int)(short)*pcVar73) + + ((int)(short)*pcVar8 - (int)(short)*pcVar72) * + ((int)(short)*pcVar8 - (int)(short)*pcVar72) + + ((int)(short)*pcVar10 - (int)(short)*pcVar74) * + ((int)(short)*pcVar10 - (int)(short)*pcVar74) + + ((int)(short)*pcVar11 - (int)(short)*pcVar75) * + ((int)(short)*pcVar11 - (int)(short)*pcVar75) + iVar147; + iVar148 = ((int)(short)*pcVar61 - (int)(short)*pcVar125) * + ((int)(short)*pcVar61 - (int)(short)*pcVar125) + + ((int)(short)*pcVar60 - (int)(short)*pcVar124) * + ((int)(short)*pcVar60 - (int)(short)*pcVar124) + + ((int)(short)*pcVar62 - (int)(short)*pcVar126) * + ((int)(short)*pcVar62 - (int)(short)*pcVar126) + + ((int)(short)*pcVar63 - (int)(short)*pcVar127) * + ((int)(short)*pcVar63 - (int)(short)*pcVar127) + + ((int)(short)*pcVar45 - (int)(short)*pcVar109) * + ((int)(short)*pcVar45 - (int)(short)*pcVar109) + + ((int)(short)*pcVar44 - (int)(short)*pcVar108) * + ((int)(short)*pcVar44 - (int)(short)*pcVar108) + + ((int)(short)*pcVar46 - (int)(short)*pcVar110) * + ((int)(short)*pcVar46 - (int)(short)*pcVar110) + + ((int)(short)*pcVar47 - (int)(short)*pcVar111) * + ((int)(short)*pcVar47 - (int)(short)*pcVar111) + + iVar153 + ((int)(short)*pcVar28 - (int)(short)*pcVar92) * + ((int)(short)*pcVar28 - (int)(short)*pcVar92) + + ((int)(short)*pcVar30 - (int)(short)*pcVar94) * + ((int)(short)*pcVar30 - (int)(short)*pcVar94) + + ((int)(short)*pcVar31 - (int)(short)*pcVar95) * + ((int)(short)*pcVar31 - (int)(short)*pcVar95) + + ((int)(short)*pcVar13 - (int)(short)*pcVar77) * + ((int)(short)*pcVar13 - (int)(short)*pcVar77) + + ((int)(short)*pcVar12 - (int)(short)*pcVar76) * + ((int)(short)*pcVar12 - (int)(short)*pcVar76) + + ((int)(short)*pcVar14 - (int)(short)*pcVar78) * + ((int)(short)*pcVar14 - (int)(short)*pcVar78) + + ((int)(short)*pcVar15 - (int)(short)*pcVar79) * + ((int)(short)*pcVar15 - (int)(short)*pcVar79) + iVar148; + iVar149 = ((int)(short)*pcVar65 - (int)(short)*pcVar129) * + ((int)(short)*pcVar65 - (int)(short)*pcVar129) + + ((int)(short)*pcVar64 - (int)(short)*pcVar128) * + ((int)(short)*pcVar64 - (int)(short)*pcVar128) + + ((int)(short)*pcVar66 - (int)(short)*pcVar130) * + ((int)(short)*pcVar66 - (int)(short)*pcVar130) + + ((int)(short)*pcVar67 - (int)(short)*pcVar131) * + ((int)(short)*pcVar67 - (int)(short)*pcVar131) + + ((int)(short)*pcVar49 - (int)(short)*pcVar113) * + ((int)(short)*pcVar49 - (int)(short)*pcVar113) + + ((int)(short)*pcVar48 - (int)(short)*pcVar112) * + ((int)(short)*pcVar48 - (int)(short)*pcVar112) + + ((int)(short)*pcVar50 - (int)(short)*pcVar114) * + ((int)(short)*pcVar50 - (int)(short)*pcVar114) + + ((int)(short)*pcVar51 - (int)(short)*pcVar115) * + ((int)(short)*pcVar51 - (int)(short)*pcVar115) + + (int)(CONCAT17((char)((uint)iVar155 >> 0x18), + CONCAT16((char)((uint)iVar155 >> 0x10), + CONCAT15((char)((uint)iVar155 >> 8), + CONCAT14((char)iVar155,iVar153)))) >> 0x20) + + ((int)(short)*pcVar32 - (int)(short)*pcVar96) * + ((int)(short)*pcVar32 - (int)(short)*pcVar96) + + ((int)(short)*pcVar34 - (int)(short)*pcVar98) * + ((int)(short)*pcVar34 - (int)(short)*pcVar98) + + ((int)(short)*pcVar35 - (int)(short)*pcVar99) * + ((int)(short)*pcVar35 - (int)(short)*pcVar99) + + ((int)(short)*pcVar17 - (int)(short)*pcVar81) * + ((int)(short)*pcVar17 - (int)(short)*pcVar81) + + ((int)(short)*pcVar16 - (int)(short)*pcVar80) * + ((int)(short)*pcVar16 - (int)(short)*pcVar80) + + ((int)(short)*pcVar18 - (int)(short)*pcVar82) * + ((int)(short)*pcVar18 - (int)(short)*pcVar82) + + ((int)(short)*pcVar19 - (int)(short)*pcVar83) * + ((int)(short)*pcVar19 - (int)(short)*pcVar83) + iVar149; + } while (uVar133 < uVar134); + iVar146 = iVar146 + iVar147 + iVar148 + iVar149; + iVar147 = uVar134 * 0x40; + if (uVar134 * 0x10 != iVar137) goto LAB_0039adb4; + } + /* catch() { ... } // from try @ 0039ae94 with catch @ 0039ae18 + catch() { ... } // from try @ 0039b244 with catch @ 0039ae18 + catch() { ... } // from try @ 0039b294 with catch @ 0039ae18 + catch() { ... } // from try @ 0039b3c4 with catch @ 0039ae18 + catch() { ... } // from try @ 0039b3dc with catch @ 0039ae18 + catch() { ... } // from try @ 0039b3f0 with catch @ 0039ae18 + catch() { ... } // from try @ 0039b404 with catch @ 0039ae18 */ + iVar137 = iVar137 * 4; + } + if (iVar137 < param_5) { + lVar139 = (long)iVar137; + uVar133 = param_5 - iVar137; + uVar134 = -(int)(param_1 + lVar139) & 0xf; + uVar1 = (ulong)uVar134; + if (uVar133 < uVar134) { + uVar1 = (ulong)uVar133; + } + if (uVar133 < 0x11) { + uVar1 = (ulong)uVar133; + } + uVar134 = (uint)uVar1; + if (uVar134 != 0) { + iVar147 = iVar137 + 1; + iVar148 = (int)param_1[lVar139] - (int)param_2[lVar139]; + iVar146 = iVar146 + iVar148 * iVar148; + if (uVar134 != 1) { + iVar148 = iVar137 + 2; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + iVar147 = iVar148; + if (uVar134 != 2) { + iVar147 = iVar137 + 3; + /* try { // try from 0039ae94 to 0049b21f has its CatchHandler @ 0039ae18 */ + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (uVar134 != 3) { + iVar148 = iVar137 + 4; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + iVar147 = iVar148; + if (uVar134 != 4) { + iVar147 = iVar137 + 5; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (uVar134 != 5) { + iVar148 = iVar137 + 6; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + iVar147 = iVar148; + if (uVar134 != 6) { + iVar147 = iVar137 + 7; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (uVar134 != 7) { + iVar148 = iVar137 + 8; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + iVar147 = iVar148; + if (uVar134 != 8) { + iVar147 = iVar137 + 9; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (uVar134 != 9) { + iVar148 = iVar137 + 10; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + iVar147 = iVar148; + if (uVar134 != 10) { + iVar147 = iVar137 + 0xb; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (uVar134 != 0xb) { + iVar148 = iVar137 + 0xc; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + iVar147 = iVar148; + if (uVar134 != 0xc) { + iVar147 = iVar137 + 0xd; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (uVar134 != 0xd) { + iVar148 = iVar137 + 0xe; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) + * ((int)param_1[iVar147] - (int)param_2[iVar147] + ); + iVar147 = iVar148; + if (uVar134 != 0xe) { + iVar147 = iVar137 + 0xf; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148] + ) * ((int)param_1[iVar148] - + (int)param_2[iVar148]); + if (uVar134 == 0x10) { + iVar146 = iVar146 + ((int)param_1[iVar147] - + (int)param_2[iVar147]) * + ((int)param_1[iVar147] - + (int)param_2[iVar147]); + iVar147 = iVar137 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar137 = iVar147; + if (uVar134 == uVar133) goto LAB_0039b2b0; + } + uVar136 = ((uVar133 - uVar134) - 0x10 >> 4) + 1; + iVar147 = uVar136 * 0x10; + if (0xe < (uVar133 - 1) - uVar134) { + iVar148 = 0; + iVar149 = 0; + iVar150 = 0; + iVar152 = 0; + uVar138 = 0; + pcVar132 = param_1 + uVar1 + lVar139; + pcVar68 = param_2 + uVar1 + lVar139; + do { + uVar154 = *(undefined8 *)(pcVar132 + 8); + uVar151 = *(undefined8 *)pcVar132; + uVar138 = uVar138 + 1; + uVar164 = *(undefined8 *)(pcVar68 + 8); + uVar161 = *(undefined8 *)pcVar68; + cVar144 = (char)((ulong)uVar154 >> 0x28); + cVar145 = (char)((ulong)uVar154 >> 0x30); + cVar143 = (char)((ulong)uVar154 >> 0x38); + iVar168 = (int)(short)(char)uVar151 - (int)(short)(char)uVar161; + iVar170 = (int)(short)(char)((ulong)uVar151 >> 8) - (int)(short)(char)((ulong)uVar161 >> 8); + iVar169 = (int)(short)(char)((ulong)uVar151 >> 0x10) - + (int)(short)(char)((ulong)uVar161 >> 0x10); + iVar171 = (int)(short)(char)((ulong)uVar151 >> 0x18) - + (int)(short)(char)((ulong)uVar161 >> 0x18); + iVar158 = (int)(short)(char)((ulong)uVar151 >> 0x20) - + (int)(short)(char)((ulong)uVar161 >> 0x20); + iVar159 = (int)(short)(char)((ulong)uVar151 >> 0x28) - + (int)(short)(char)((ulong)uVar161 >> 0x28); + iVar160 = (int)(short)(char)((ulong)uVar151 >> 0x30) - + (int)(short)(char)((ulong)uVar161 >> 0x30); + iVar162 = (int)(short)(char)((ulong)uVar151 >> 0x38) - + (int)(short)(char)((ulong)uVar161 >> 0x38); + iVar163 = (int)(short)(char)uVar154 - (int)(short)(char)uVar164; + iVar165 = (int)(short)(char)((ulong)uVar154 >> 8) - (int)(short)(char)((ulong)uVar164 >> 8); + iVar166 = (int)(short)(char)((ulong)uVar154 >> 0x10) - + (int)(short)(char)((ulong)uVar164 >> 0x10); + iVar167 = (int)(short)(char)((ulong)uVar154 >> 0x18) - + (int)(short)(char)((ulong)uVar164 >> 0x18); + sVar2 = (short)(char)((ulong)uVar154 >> 0x20); + uVar3 = CONCAT13(cVar144 >> 7,CONCAT12(cVar144,sVar2)); + uVar4 = CONCAT15(cVar145 >> 7,CONCAT14(cVar145,uVar3)); + iVar153 = (int)sVar2 - (int)(short)(char)((ulong)uVar164 >> 0x20); + iVar155 = (int)(short)((uint)uVar3 >> 0x10) - (int)(short)(char)((ulong)uVar164 >> 0x28); + iVar156 = (int)(short)((uint6)uVar4 >> 0x20) - (int)(short)(char)((ulong)uVar164 >> 0x30); + iVar157 = (int)(short)(CONCAT17(cVar143 >> 7,CONCAT16(cVar143,uVar4)) >> 0x30) - + (int)(short)(char)((ulong)uVar164 >> 0x38); + iVar148 = iVar148 + iVar168 * iVar168 + iVar158 * iVar158 + iVar163 * iVar163 + + iVar153 * iVar153; + iVar149 = iVar149 + iVar170 * iVar170 + iVar159 * iVar159 + iVar165 * iVar165 + + iVar155 * iVar155; + iVar150 = iVar150 + iVar169 * iVar169 + iVar160 * iVar160 + iVar166 * iVar166 + + iVar156 * iVar156; + iVar152 = iVar152 + iVar171 * iVar171 + iVar162 * iVar162 + iVar167 * iVar167 + + iVar157 * iVar157; + pcVar132 = pcVar132 + 0x10; + pcVar68 = pcVar68 + 0x10; + } while (uVar138 < uVar136); + iVar137 = iVar137 + iVar147; + iVar146 = iVar146 + iVar148 + iVar149 + iVar150 + iVar152; + if (iVar147 == uVar133 - uVar134) goto LAB_0039b2b0; + } + iVar147 = iVar137 + 1; + iVar146 = iVar146 + ((int)param_1[iVar137] - (int)param_2[iVar137]) * + ((int)param_1[iVar137] - (int)param_2[iVar137]); + if (iVar147 < param_5) { + iVar148 = iVar137 + 2; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar148 < param_5) { + iVar147 = iVar137 + 3; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (iVar147 < param_5) { + iVar148 = iVar137 + 4; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar148 < param_5) { + iVar147 = iVar137 + 5; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (iVar147 < param_5) { + iVar148 = iVar137 + 6; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar148 < param_5) { + iVar147 = iVar137 + 7; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (iVar147 < param_5) { + iVar148 = iVar137 + 8; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar148 < param_5) { + iVar147 = iVar137 + 9; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (iVar147 < param_5) { + iVar148 = iVar137 + 10; + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar148 < param_5) { + iVar147 = iVar137 + 0xb; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (iVar147 < param_5) { + iVar148 = iVar137 + 0xc; + /* try { // try from 0039b23c to 0049b23f has its CatchHandler @ 0039b3e0 */ + /* try { // try from 0039b244 to 0049b26f has its CatchHandler @ 0039ae18 */ + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar148 < param_5) { + iVar147 = iVar137 + 0xd; + iVar146 = iVar146 + ((int)param_1[iVar148] - (int)param_2[iVar148]) * + ((int)param_1[iVar148] - (int)param_2[iVar148]); + if (iVar147 < param_5) { + iVar137 = iVar137 + 0xe; + /* try { // try from 0039b28c to 0049b28f has its CatchHandler @ 0039b3f4 */ + /* try { // try from 0039b294 to 0049b39f has its CatchHandler @ 0039ae18 */ + iVar146 = iVar146 + ((int)param_1[iVar147] - (int)param_2[iVar147]) * + ((int)param_1[iVar147] - (int)param_2[iVar147]); + if (iVar137 < param_5) { + iVar146 = iVar146 + ((int)param_1[iVar137] - (int)param_2[iVar137]) + * ((int)param_1[iVar137] - (int)param_2[iVar137] + ); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_0039b2b0: + *param_4 = iVar135 + iVar146; + return 0; +} + + +================================================================== + +### FUNC 0039b2e0 (1764 bytes) name=FUN_0039b2e0 + +undefined8 +FUN_0039b2e0(ushort *param_1,ushort *param_2,long param_3,int *param_4,int param_5,ulong param_6) + +{ + undefined1 auVar1 [16]; + uint uVar2; + uint uVar3; + uint uVar4; + ushort *puVar5; + ulong uVar6; + uint uVar7; + int iVar8; + long lVar9; + ushort *puVar10; + int iVar11; + ulong uVar12; + int iVar13; + ulong uVar14; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined4 uVar18; + undefined4 uVar19; + undefined4 uVar20; + undefined4 uVar21; + int iVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined8 uVar25; + undefined8 uVar26; + + iVar22 = *param_4; + uVar3 = (uint)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar14 = -(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < (int)uVar3)) { + uVar7 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar3 < uVar7) { + uVar7 = uVar3; + } + if (uVar3 < 9) { + uVar7 = uVar3; + } + if (uVar7 == 0) { + uVar12 = 0; + } + else { + uVar2 = (int)((uint)*param_1 - (uint)*param_2) >> 0x1f; + iVar11 = ((uint)*param_1 - (uint)*param_2 ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 1) { +LAB_0039b648: + uVar12 = (ulong)uVar7; + } + else { + uVar2 = (int)((uint)param_1[1] - (uint)param_2[1]) >> 0x1f; + iVar11 = ((uint)param_1[1] - (uint)param_2[1] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 2) goto LAB_0039b648; + uVar2 = (int)((uint)param_1[2] - (uint)param_2[2]) >> 0x1f; + iVar11 = ((uint)param_1[2] - (uint)param_2[2] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 3) goto LAB_0039b648; + /* try { // try from 0039b3bc to 0049b3bf has its CatchHandler @ 0039b3cc */ + uVar2 = (int)((uint)param_1[3] - (uint)param_2[3]) >> 0x1f; + iVar11 = ((uint)param_1[3] - (uint)param_2[3] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + /* try { // try from 0039b3c4 to 0049b3c7 has its CatchHandler @ 0039ae18 */ + if (uVar7 == 4) goto LAB_0039b648; + /* catch() { ... } // from try @ 0039b3bc with catch @ 0039b3cc */ + uVar2 = (int)((uint)param_1[4] - (uint)param_2[4]) >> 0x1f; + /* try { // try from 0039b3dc to 0049b3df has its CatchHandler @ 0039ae18 */ + /* catch() { ... } // from try @ 0039b23c with catch @ 0039b3e0 */ + iVar11 = ((uint)param_1[4] - (uint)param_2[4] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + /* try { // try from 0039b3f0 to 0049b3f3 has its CatchHandler @ 0039ae18 */ + if (uVar7 == 5) goto LAB_0039b648; + /* catch() { ... } // from try @ 0039b28c with catch @ 0039b3f4 */ + uVar2 = (int)((uint)param_1[5] - (uint)param_2[5]) >> 0x1f; + /* try { // try from 0039b404 to 0049b407 has its CatchHandler @ 0039ae18 */ + /* catch() { ... } // from try @ 0039b458 with catch @ 0039b408 + catch() { ... } // from try @ 0039b480 with catch @ 0039b408 + catch() { ... } // from try @ 0039b4f0 with catch @ 0039b408 + catch() { ... } // from try @ 0039b508 with catch @ 0039b408 + catch() { ... } // from try @ 0039b51c with catch @ 0039b408 */ + iVar11 = ((uint)param_1[5] - (uint)param_2[5] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 6) goto LAB_0039b648; + uVar2 = (int)((uint)param_1[6] - (uint)param_2[6]) >> 0x1f; + iVar11 = ((uint)param_1[6] - (uint)param_2[6] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 8) { + uVar12 = 8; + uVar2 = (int)((uint)param_1[7] - (uint)param_2[7]) >> 0x1f; + /* try { // try from 0039b458 to 0049b45b has its CatchHandler @ 0039b408 */ + iVar11 = ((uint)param_1[7] - (uint)param_2[7] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + } + else { + uVar12 = 7; + } + } + if (uVar3 == uVar7) goto LAB_0039b628; + } + /* try { // try from 0039b478 to 0049b47b has its CatchHandler @ 0039b50c */ + /* try { // try from 0039b480 to 0049b4cb has its CatchHandler @ 0039b408 */ + uVar2 = ((uVar3 - uVar7) - 8 >> 3) + 1; + iVar11 = uVar2 * 8; + if (6 < (uVar3 - 1) - uVar7) { + auVar23._4_4_ = iVar22; + auVar23._0_4_ = iVar22; + auVar23._8_4_ = iVar22; + auVar23._12_4_ = iVar22; + uVar4 = 0; + puVar5 = param_2 + uVar7; + puVar10 = param_1 + uVar7; + do { + uVar4 = uVar4 + 1; + uVar26 = *(undefined8 *)(puVar5 + 4); + uVar25 = *(undefined8 *)puVar5; + uVar18 = MP_INT_ABS((uint)puVar10[4] - (uint)(ushort)uVar26); + uVar19 = MP_INT_ABS((uint)puVar10[5] - (uint)(ushort)((ulong)uVar26 >> 0x10)); + uVar20 = MP_INT_ABS((uint)puVar10[6] - (uint)(ushort)((ulong)uVar26 >> 0x20)); + uVar21 = MP_INT_ABS((uint)puVar10[7] - (uint)(ushort)((ulong)uVar26 >> 0x30)); + auVar15._0_4_ = MP_INT_ABS((uint)*puVar10 - (uint)(ushort)uVar25); + auVar15._4_4_ = MP_INT_ABS((uint)puVar10[1] - (uint)(ushort)((ulong)uVar25 >> 0x10)); + auVar15._8_4_ = MP_INT_ABS((uint)puVar10[2] - (uint)(ushort)((ulong)uVar25 >> 0x20)); + auVar15._12_4_ = MP_INT_ABS((uint)puVar10[3] - (uint)(ushort)((ulong)uVar25 >> 0x30)); + auVar16._4_4_ = uVar19; + auVar16._0_4_ = uVar18; + auVar16._8_4_ = uVar20; + auVar16._12_4_ = uVar21; + auVar16 = NEON_smax(auVar16,auVar15,4); + auVar23 = NEON_smax(auVar23,auVar16,4); + puVar5 = puVar5 + 8; + puVar10 = puVar10 + 8; + } while (uVar4 < uVar2); + iVar22 = NEON_smaxv(auVar23,4); + uVar12 = (ulong)(uint)((int)uVar12 + iVar11); + if (uVar3 - uVar7 == iVar11) goto LAB_0039b628; + } + uVar6 = -(uVar12 >> 0x1f) & 0xfffffffe00000000 | uVar12 << 1; + iVar11 = (int)uVar12; + /* try { // try from 0039b4e8 to 0049b4eb has its CatchHandler @ 0039b4f8 */ + /* try { // try from 0039b4f0 to 0049b4f3 has its CatchHandler @ 0039b408 */ + uVar7 = (uint)*(ushort *)((long)param_1 + uVar6) - + (uint)*(ushort *)((long)param_2 + uVar6); + uVar2 = (int)uVar7 >> 0x1f; + /* catch() { ... } // from try @ 0039b4e8 with catch @ 0039b4f8 */ + iVar13 = (uVar7 ^ uVar2) - uVar2; + /* try { // try from 0039b508 to 0049b50b has its CatchHandler @ 0039b408 */ + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + /* catch() { ... } // from try @ 0039b478 with catch @ 0039b50c */ + if (iVar11 + 1 < (int)uVar3) { + /* try { // try from 0039b51c to 0049b51f has its CatchHandler @ 0039b408 */ + /* catch() { ... } // from try @ 0039b5b4 with catch @ 0039b520 + catch() { ... } // from try @ 0039b5dc with catch @ 0039b520 + catch() { ... } // from try @ 0039b684 with catch @ 0039b520 */ + uVar7 = (uint)*(ushort *)((long)param_1 + uVar6 + 2) - + (uint)*(ushort *)((long)param_2 + uVar6 + 2); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 2 < (int)uVar3) { + uVar7 = (uint)*(ushort *)((long)param_1 + uVar6 + 4) - + (uint)*(ushort *)((long)param_2 + uVar6 + 4); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 3 < (int)uVar3) { + uVar7 = (uint)*(ushort *)((long)param_1 + uVar6 + 6) - + (uint)*(ushort *)((long)param_2 + uVar6 + 6); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 4 < (int)uVar3) { + /* try { // try from 0039b5b4 to 0049b5b7 has its CatchHandler @ 0039b520 */ + uVar7 = (uint)*(ushort *)((long)param_1 + uVar6 + 8) - + (uint)*(ushort *)((long)param_2 + uVar6 + 8); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 5 < (int)uVar3) { + /* try { // try from 0039b5d4 to 0049b5d7 has its CatchHandler @ 0039b674 */ + /* try { // try from 0039b5dc to 0049b5f3 has its CatchHandler @ 0039b520 */ + uVar7 = (uint)*(ushort *)((long)param_1 + uVar6 + 10) - + (uint)*(ushort *)((long)param_2 + uVar6 + 10); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if ((iVar11 + 6 < (int)uVar3) && + (uVar7 = (uint)*(ushort *)((long)param_1 + uVar6 + 0xc) - + (uint)*(ushort *)((long)param_2 + uVar6 + 0xc), + uVar2 = (int)uVar7 >> 0x1f, iVar11 = (uVar7 ^ uVar2) - uVar2, iVar22 < iVar11 + )) { + iVar22 = iVar11; + } + } + } + } + } + } + } +LAB_0039b628: + lVar9 = lVar9 + 1; + param_1 = (ushort *)((long)param_1 + uVar14); + param_2 = (ushort *)((long)param_2 + uVar14); + } while ((int)lVar9 < param_5); + } + *param_4 = iVar22; + return 0; + } + uVar3 = param_5 * uVar3; + iVar11 = 0; + if ((int)uVar3 < 1) goto LAB_0039b98c; + /* catch() { ... } // from try @ 0039b5d4 with catch @ 0039b674 */ + uVar7 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar3 < uVar7) { + uVar7 = uVar3; + } + uVar14 = (ulong)uVar7; + /* try { // try from 0039b684 to 0049b687 has its CatchHandler @ 0039b520 */ + if ((int)uVar3 < 9) { + /* catch() { ... } // from try @ 0039b698 with catch @ 0039b688 + catch() { ... } // from try @ 0039b71c with catch @ 0039b688 + catch() { ... } // from try @ 0039b734 with catch @ 0039b688 */ + uVar14 = (ulong)uVar3; +LAB_0039b68c: + uVar7 = (int)((uint)*param_1 - (uint)*param_2) >> 0x1f; + /* try { // try from 0039b698 to 0049b6f7 has its CatchHandler @ 0039b688 */ + iVar11 = ((uint)*param_1 - (uint)*param_2 ^ uVar7) - uVar7; + if (iVar11 < 0) { + iVar11 = 0; + } + uVar7 = (uint)uVar14; + uVar12 = uVar14; + if (uVar7 != 1) { + uVar2 = (int)((uint)param_1[1] - (uint)param_2[1]) >> 0x1f; + iVar13 = ((uint)param_1[1] - (uint)param_2[1] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 2) { + uVar2 = (int)((uint)param_1[2] - (uint)param_2[2]) >> 0x1f; + iVar13 = ((uint)param_1[2] - (uint)param_2[2] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 3) { + /* try { // try from 0039b71c to 0049b71f has its CatchHandler @ 0039b688 */ + uVar2 = (int)((uint)param_1[3] - (uint)param_2[3]) >> 0x1f; + /* try { // try from 0039b714 to 0049b717 has its CatchHandler @ 0039b724 */ + iVar13 = ((uint)param_1[3] - (uint)param_2[3] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + /* catch() { ... } // from try @ 0039b714 with catch @ 0039b724 */ + if (uVar7 != 4) { + /* try { // try from 0039b734 to 0049b737 has its CatchHandler @ 0039b688 */ + uVar2 = (int)((uint)param_1[4] - (uint)param_2[4]) >> 0x1f; + iVar13 = ((uint)param_1[4] - (uint)param_2[4] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 5) { + /* catch() { ... } // from try @ 0039b7b4 with catch @ 0039b75c + catch() { ... } // from try @ 0039b82c with catch @ 0039b75c + catch() { ... } // from try @ 0039b844 with catch @ 0039b75c */ + uVar2 = (int)((uint)param_1[5] - (uint)param_2[5]) >> 0x1f; + iVar13 = ((uint)param_1[5] - (uint)param_2[5] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 6) { + uVar2 = (int)((uint)param_1[6] - (uint)param_2[6]) >> 0x1f; + iVar13 = ((uint)param_1[6] - (uint)param_2[6] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 == 8) { + uVar2 = (int)((uint)param_1[7] - (uint)param_2[7]) >> 0x1f; + /* try { // try from 0039b7b4 to 0049b807 has its CatchHandler @ 0039b75c */ + iVar13 = ((uint)param_1[7] - (uint)param_2[7] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + } + else { + uVar12 = 7; + } + } + } + } + } + } + } + if (uVar3 == uVar7) goto LAB_0039b98c; + } + else { + /* try { // try from 0039b9ac to 0049b9af has its CatchHandler @ 0039b9e4 */ + uVar12 = 0; + if (uVar7 != 0) goto LAB_0039b68c; + } + iVar8 = uVar3 - (int)uVar14; + uVar7 = (iVar8 - 8U >> 3) + 1; + iVar13 = uVar7 * 8; + if (6 < (uVar3 - 1) - (int)uVar14) { + auVar24._4_4_ = iVar11; + auVar24._0_4_ = iVar11; + auVar24._8_4_ = iVar11; + auVar24._12_4_ = iVar11; + uVar2 = 0; + puVar5 = param_1 + uVar14; + puVar10 = param_2 + uVar14; + do { + uVar2 = uVar2 + 1; + uVar26 = *(undefined8 *)(puVar10 + 4); + uVar25 = *(undefined8 *)puVar10; + uVar18 = MP_INT_ABS((uint)puVar5[4] - (uint)(ushort)uVar26); + uVar19 = MP_INT_ABS((uint)puVar5[5] - (uint)(ushort)((ulong)uVar26 >> 0x10)); + uVar20 = MP_INT_ABS((uint)puVar5[6] - (uint)(ushort)((ulong)uVar26 >> 0x20)); + uVar21 = MP_INT_ABS((uint)puVar5[7] - (uint)(ushort)((ulong)uVar26 >> 0x30)); + /* try { // try from 0039b824 to 0049b827 has its CatchHandler @ 0039b834 */ + auVar17._0_4_ = MP_INT_ABS((uint)*puVar5 - (uint)(ushort)uVar25); + auVar17._4_4_ = MP_INT_ABS((uint)puVar5[1] - (uint)(ushort)((ulong)uVar25 >> 0x10)); + auVar17._8_4_ = MP_INT_ABS((uint)puVar5[2] - (uint)(ushort)((ulong)uVar25 >> 0x20)); + auVar17._12_4_ = MP_INT_ABS((uint)puVar5[3] - (uint)(ushort)((ulong)uVar25 >> 0x30)); + auVar1._4_4_ = uVar19; + auVar1._0_4_ = uVar18; + auVar1._8_4_ = uVar20; + auVar1._12_4_ = uVar21; + auVar23 = NEON_smax(auVar1,auVar17,4); + /* try { // try from 0039b82c to 0049b82f has its CatchHandler @ 0039b75c */ + auVar24 = NEON_smax(auVar24,auVar23,4); + puVar5 = puVar5 + 8; + puVar10 = puVar10 + 8; + } while (uVar2 < uVar7); + /* catch() { ... } // from try @ 0039b824 with catch @ 0039b834 */ + iVar11 = NEON_smaxv(auVar24,4); + uVar12 = (ulong)(uint)((int)uVar12 + iVar13); + /* try { // try from 0039b844 to 0049b847 has its CatchHandler @ 0039b75c */ + if (iVar13 == iVar8) goto LAB_0039b98c; + } + /* catch() { ... } // from try @ 0039b860 with catch @ 0039b848 + catch() { ... } // from try @ 0039b8b8 with catch @ 0039b848 + catch() { ... } // from try @ 0039b8ec with catch @ 0039b848 */ + uVar14 = -(uVar12 >> 0x1f) & 0xfffffffe00000000 | uVar12 << 1; + iVar13 = (int)uVar12; + uVar7 = (uint)*(ushort *)((long)param_1 + uVar14) - (uint)*(ushort *)((long)param_2 + uVar14); + uVar2 = (int)uVar7 >> 0x1f; + /* try { // try from 0039b860 to 0049b893 has its CatchHandler @ 0039b848 */ + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 1 < (int)uVar3) { + uVar7 = (uint)*(ushort *)((long)param_1 + uVar14 + 2) - + (uint)*(ushort *)((long)param_2 + uVar14 + 2); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 2 < (int)uVar3) { + /* try { // try from 0039b8b0 to 0049b8b3 has its CatchHandler @ 0039b8dc */ + /* try { // try from 0039b8b8 to 0049b8cb has its CatchHandler @ 0039b848 */ + uVar7 = (uint)*(ushort *)((long)param_1 + uVar14 + 4) - + (uint)*(ushort *)((long)param_2 + uVar14 + 4); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 3 < (int)uVar3) { + /* catch() { ... } // from try @ 0039b8b0 with catch @ 0039b8dc */ + uVar7 = (uint)*(ushort *)((long)param_1 + uVar14 + 6) - + (uint)*(ushort *)((long)param_2 + uVar14 + 6); + uVar2 = (int)uVar7 >> 0x1f; + /* try { // try from 0039b8ec to 0049b8ef has its CatchHandler @ 0039b848 */ + /* catch() { ... } // from try @ 0039b98c with catch @ 0039b8f0 + catch() { ... } // from try @ 0039b9b4 with catch @ 0039b8f0 + catch() { ... } // from try @ 0039b9f4 with catch @ 0039b8f0 */ + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 4 < (int)uVar3) { + uVar7 = (uint)*(ushort *)((long)param_1 + uVar14 + 8) - + (uint)*(ushort *)((long)param_2 + uVar14 + 8); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 5 < (int)uVar3) { + uVar7 = (uint)*(ushort *)((long)param_1 + uVar14 + 10) - + (uint)*(ushort *)((long)param_2 + uVar14 + 10); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if ((iVar13 + 6 < (int)uVar3) && + (uVar3 = (uint)*(ushort *)((long)param_1 + uVar14 + 0xc) - + (uint)*(ushort *)((long)param_2 + uVar14 + 0xc), uVar7 = (int)uVar3 >> 0x1f, + iVar13 = (uVar3 ^ uVar7) - uVar7, iVar11 < iVar13)) { + iVar11 = iVar13; + } + } + } + } + } + } +LAB_0039b98c: + /* try { // try from 0039b98c to 0049b98f has its CatchHandler @ 0039b8f0 */ + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + *param_4 = iVar22; + return 0; +} + + +================================================================== + +### FUNC 0039b9c4 name=FUN_0039b9c4 DECOMPILE FAILED + +### FUNC 0039bff4 name=FUN_0039bff4 DECOMPILE FAILED + +### FUNC 0039cb98 (292 bytes) name=FUN_0039cb98 + +undefined8 FUN_0039cb98(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + ushort uVar1; + uint uVar2; + ushort *puVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + ushort *puVar4; + + dVar8 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + /* try { // try from 0039cbac to 0049cbaf has its CatchHandler @ 0039cbbc */ + lVar7 = 0; + do { + /* try { // try from 0039cbb4 to 0049cbb7 has its CatchHandler @ 0039cb0c */ + /* catch() { ... } // from try @ 0039cbac with catch @ 0039cbbc */ + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + uVar1 = *(ushort *)(param_1 + lVar6 * 2); + lVar6 = lVar6 + 1; + /* try { // try from 0039cbcc to 0049cbcf has its CatchHandler @ 0039cb0c */ + /* catch() { ... } // from try @ 0039cd70 with catch @ 0039cbd0 + catch() { ... } // from try @ 0039ceec with catch @ 0039cbd0 + catch() { ... } // from try @ 0039cf6c with catch @ 0039cbd0 + catch() { ... } // from try @ 0039cfa0 with catch @ 0039cbd0 + catch() { ... } // from try @ 0039cfb4 with catch @ 0039cbd0 */ + dVar8 = dVar8 + (double)uVar1 * (double)uVar1; + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_5 & 0xffffffff) << 1); + } while ((int)lVar7 < param_4); + } + *param_3 = dVar8; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + dVar9 = 0.0; + iVar5 = 0; + } + else { + dVar9 = 0.0; + uVar2 = param_4 - 4U >> 2; + puVar3 = (ushort *)(param_1 + 2); + do { + puVar4 = puVar3 + 4; + dVar9 = dVar9 + (double)*puVar3 * (double)*puVar3 + (double)puVar3[-1] * (double)puVar3[-1] + + (double)puVar3[1] * (double)puVar3[1] + (double)puVar3[2] * (double)puVar3[2]; + puVar3 = puVar4; + } while (puVar4 != (ushort *)(param_1 + (ulong)uVar2 * 8 + 10)); + iVar5 = (uVar2 + 1) * 4; + } + if (iVar5 < param_4) { + puVar3 = (ushort *)(param_1 + (long)iVar5 * 2); + do { + puVar4 = puVar3 + 1; + dVar9 = dVar9 + (double)*puVar3 * (double)*puVar3; + puVar3 = puVar4; + } while (puVar4 != (ushort *) + (param_1 + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 2)); + } + *param_3 = dVar8 + dVar9; + return 0; +} + + +================================================================== + +### FUNC 0039ccbc (356 bytes) name=FUN_0039ccbc + +undefined8 +FUN_0039ccbc(ushort *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + long lVar1; + ushort *puVar2; + uint uVar3; + ulong uVar4; + int iVar5; + long lVar6; + ushort *puVar7; + long lVar8; + ushort *puVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + + dVar13 = *param_4; + iVar5 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1; + lVar8 = 0; + do { + if ((*(char *)(param_3 + lVar8) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + puVar7 = param_1 + lVar6; + lVar1 = lVar6 * 2; + lVar6 = lVar6 + 1; + dVar11 = (double)(int)((uint)*puVar7 - (uint)*(ushort *)(param_2 + lVar1)); + dVar13 = dVar13 + dVar11 * dVar11; + } while ((int)lVar6 < iVar5); + } + lVar8 = lVar8 + 1; + param_1 = (ushort *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar8 < param_5); + } + *param_4 = dVar13; + return 0; + } + param_5 = param_5 * iVar5; + if (param_5 < 4) { + dVar11 = 0.0; + uVar10 = 0; + } + else { + dVar11 = 0.0; + uVar3 = param_5 - 4U >> 2; + puVar7 = (ushort *)(param_2 + 2); + puVar9 = param_1; + do { + puVar2 = puVar7 + 4; + /* try { // try from 0039cd70 to 0049ceab has its CatchHandler @ 0039cbd0 */ + dVar11 = dVar11 + (double)(int)((uint)puVar9[1] - (uint)*puVar7) * + (double)(int)((uint)puVar9[1] - (uint)*puVar7) + + (double)(int)((uint)*puVar9 - (uint)puVar7[-1]) * + (double)(int)((uint)*puVar9 - (uint)puVar7[-1]) + + (double)(int)((uint)puVar9[2] - (uint)puVar7[1]) * + (double)(int)((uint)puVar9[2] - (uint)puVar7[1]) + + (double)(int)((uint)puVar9[3] - (uint)puVar7[2]) * + (double)(int)((uint)puVar9[3] - (uint)puVar7[2]); + puVar7 = puVar2; + puVar9 = puVar9 + 4; + } while (puVar2 != (ushort *)(param_2 + (ulong)uVar3 * 8 + 10)); + uVar10 = (ulong)((uVar3 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar4 = -(uVar10 >> 0x1f) & 0xfffffffe00000000 | uVar10 << 1; + lVar8 = 0; + do { + lVar6 = lVar8 + uVar4; + puVar7 = (ushort *)(param_2 + uVar4 + lVar8); + lVar8 = lVar8 + 2; + dVar12 = (double)(int)((uint)*(ushort *)((long)param_1 + lVar6) - (uint)*puVar7); + dVar11 = dVar11 + dVar12 * dVar12; + } while (lVar8 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 2); + } + *param_4 = dVar13 + dVar11; + return 0; +} + + +================================================================== + +### FUNC 0039ce20 (1672 bytes) name=FUN_0039ce20 + +undefined8 FUN_0039ce20(short *param_1,long param_2,int *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + undefined1 auVar2 [16]; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + short *psVar7; + ulong uVar8; + uint uVar9; + long lVar10; + ulong uVar11; + int iVar12; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + int iVar24; + undefined1 auVar25 [16]; + undefined1 auVar26 [16]; + + iVar24 = *param_3; + uVar4 = (uint)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar10 = 0; + do { + if ((*(char *)(param_2 + lVar10) != '\0') && (0 < (int)uVar4)) { + uVar9 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar4 < uVar9) { + uVar9 = uVar4; + } + if (uVar4 < 10) { + uVar9 = uVar4; + } + if (uVar9 == 0) { + uVar11 = 0; + } + else { + if (iVar24 < (int)ABS((double)(int)*param_1)) { + iVar24 = (int)ABS((double)(int)*param_1); + } + if (uVar9 == 1) { +LAB_0039d154: + uVar11 = (ulong)uVar9; + } + else { + if (iVar24 < (int)ABS((double)(int)param_1[1])) { + iVar24 = (int)ABS((double)(int)param_1[1]); + } + if (uVar9 == 2) goto LAB_0039d154; + if (iVar24 < (int)ABS((double)(int)param_1[2])) { + iVar24 = (int)ABS((double)(int)param_1[2]); + } + if (uVar9 == 3) goto LAB_0039d154; + if (iVar24 < (int)ABS((double)(int)param_1[3])) { + iVar24 = (int)ABS((double)(int)param_1[3]); + } + /* try { // try from 0039cee4 to 0049cee7 has its CatchHandler @ 0039cfa4 */ + if (uVar9 == 4) goto LAB_0039d154; + /* try { // try from 0039ceec to 0049cf4f has its CatchHandler @ 0039cbd0 */ + if (iVar24 < (int)ABS((double)(int)param_1[4])) { + iVar24 = (int)ABS((double)(int)param_1[4]); + } + if (uVar9 == 5) goto LAB_0039d154; + if (iVar24 < (int)ABS((double)(int)param_1[5])) { + iVar24 = (int)ABS((double)(int)param_1[5]); + } + if (uVar9 == 6) goto LAB_0039d154; + if (iVar24 < (int)ABS((double)(int)param_1[6])) { + iVar24 = (int)ABS((double)(int)param_1[6]); + } + if (uVar9 == 7) { + uVar11 = 7; + } + else { + if (iVar24 < (int)ABS((double)(int)param_1[7])) { + iVar24 = (int)ABS((double)(int)param_1[7]); + } + /* try { // try from 0039cf64 to 0049cf67 has its CatchHandler @ 0039cf90 */ + if (uVar9 == 9) { + /* try { // try from 0039cf6c to 0049cf6f has its CatchHandler @ 0039cbd0 */ + uVar11 = 9; + if (iVar24 < (int)ABS((double)(int)param_1[8])) { + iVar24 = (int)ABS((double)(int)param_1[8]); + } + } + else { + uVar11 = 8; + } + } + } + if (uVar4 == uVar9) goto LAB_0039d138; + } + /* catch() { ... } // from try @ 0039cf64 with catch @ 0039cf90 */ + /* try { // try from 0039cfa0 to 0049cfa3 has its CatchHandler @ 0039cbd0 */ + /* catch() { ... } // from try @ 0039cee4 with catch @ 0039cfa4 */ + uVar1 = ((uVar4 - uVar9) - 8 >> 3) + 1; + iVar6 = uVar1 * 8; + if (6 < (uVar4 - 1) - uVar9) { + auVar25._4_4_ = iVar24; + auVar25._0_4_ = iVar24; + auVar25._8_4_ = iVar24; + auVar25._12_4_ = iVar24; + /* try { // try from 0039cfb4 to 0049cfb7 has its CatchHandler @ 0039cbd0 */ + uVar5 = 0; + /* catch() { ... } // from try @ 0039d014 with catch @ 0039cfb8 + catch() { ... } // from try @ 0039d060 with catch @ 0039cfb8 + catch() { ... } // from try @ 0039d384 with catch @ 0039cfb8 + catch() { ... } // from try @ 0039d39c with catch @ 0039cfb8 + catch() { ... } // from try @ 0039d3b0 with catch @ 0039cfb8 */ + psVar7 = param_1 + uVar9; + do { + uVar5 = uVar5 + 1; + auVar19._0_8_ = (long)(int)*psVar7; + auVar19._8_8_ = (long)(int)psVar7[1]; + auVar21._0_8_ = (long)(int)psVar7[4]; + auVar21._8_8_ = (long)(int)psVar7[5]; + auVar23._0_8_ = (long)(int)psVar7[2]; + auVar23._8_8_ = (long)(int)psVar7[3]; + auVar13._0_8_ = (long)(int)psVar7[6]; + auVar13._8_8_ = (long)(int)psVar7[7]; + auVar19 = NEON_scvtf(auVar19,8); + auVar21 = NEON_scvtf(auVar21,8); + auVar15 = NEON_scvtf(auVar23,8); + auVar13 = NEON_scvtf(auVar13,8); + /* try { // try from 0039d014 to 0049d017 has its CatchHandler @ 0039cfb8 */ + auVar16._4_4_ = (int)(long)ABS(auVar19._8_8_); + auVar16._0_4_ = (int)(long)ABS(auVar19._0_8_); + auVar16._8_4_ = (int)(long)ABS(auVar15._0_8_); + auVar16._12_4_ = (int)(long)ABS(auVar15._8_8_); + auVar15._4_4_ = (int)(long)ABS(auVar21._8_8_); + auVar15._0_4_ = (int)(long)ABS(auVar21._0_8_); + auVar15._8_4_ = (int)(long)ABS(auVar13._0_8_); + auVar15._12_4_ = (int)(long)ABS(auVar13._8_8_); + auVar15 = NEON_smax(auVar15,auVar16,4); + auVar25 = NEON_smax(auVar25,auVar15,4); + psVar7 = psVar7 + 8; + } while (uVar5 < uVar1); + iVar24 = NEON_smaxv(auVar25,4); + uVar11 = (ulong)(uint)((int)uVar11 + iVar6); + if (uVar4 - uVar9 == iVar6) goto LAB_0039d138; + } + uVar8 = -(uVar11 >> 0x1f) & 0xfffffffe00000000 | uVar11 << 1; + iVar6 = (int)uVar11; + /* try { // try from 0039d058 to 0049d05b has its CatchHandler @ 0039d3a0 */ + if (iVar24 < (int)ABS((double)(int)*(short *)((long)param_1 + uVar8))) { + iVar24 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8)); + } + /* try { // try from 0039d060 to 0049d343 has its CatchHandler @ 0039cfb8 */ + if (iVar6 + 1 < (int)uVar4) { + iVar12 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 2)); + if (iVar24 < iVar12) { + iVar24 = iVar12; + } + if (iVar6 + 2 < (int)uVar4) { + iVar12 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 4)); + if (iVar24 < iVar12) { + iVar24 = iVar12; + } + if (iVar6 + 3 < (int)uVar4) { + iVar12 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 6)); + if (iVar24 < iVar12) { + iVar24 = iVar12; + } + if (iVar6 + 4 < (int)uVar4) { + iVar12 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 8)); + if (iVar24 < iVar12) { + iVar24 = iVar12; + } + if (iVar6 + 5 < (int)uVar4) { + iVar12 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 10)); + if (iVar24 < iVar12) { + iVar24 = iVar12; + } + if ((iVar6 + 6 < (int)uVar4) && + (iVar6 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 0xc)), + iVar24 < iVar6)) { + iVar24 = iVar6; + } + } + } + } + } + } + } +LAB_0039d138: + lVar10 = lVar10 + 1; + param_1 = (short *)((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_5 & 0xffffffff) << 1)); + } while ((int)lVar10 < param_4); + } + *param_3 = iVar24; + return 0; + } + uVar4 = param_4 * uVar4; + iVar6 = 0; + if ((int)uVar4 < 1) goto LAB_0039d470; + uVar9 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar4 < uVar9) { + uVar9 = uVar4; + } + uVar1 = uVar4; + if (((int)uVar4 < 10) || (uVar11 = 0, uVar1 = uVar9, uVar9 != 0)) { + uVar9 = uVar1; + iVar6 = (int)ABS((double)(int)*param_1); + if (iVar6 < 0) { + iVar6 = 0; + } + if (uVar9 == 1) { +LAB_0039d484: + uVar11 = (ulong)uVar9; + } + else { + if (iVar6 < (int)ABS((double)(int)param_1[1])) { + iVar6 = (int)ABS((double)(int)param_1[1]); + } + if (uVar9 == 2) goto LAB_0039d484; + if (iVar6 < (int)ABS((double)(int)param_1[2])) { + iVar6 = (int)ABS((double)(int)param_1[2]); + } + if (uVar9 == 3) goto LAB_0039d484; + if (iVar6 < (int)ABS((double)(int)param_1[3])) { + iVar6 = (int)ABS((double)(int)param_1[3]); + } + if (uVar9 == 4) goto LAB_0039d484; + if (iVar6 < (int)ABS((double)(int)param_1[4])) { + iVar6 = (int)ABS((double)(int)param_1[4]); + } + if (uVar9 == 5) goto LAB_0039d484; + if (iVar6 < (int)ABS((double)(int)param_1[5])) { + iVar6 = (int)ABS((double)(int)param_1[5]); + } + if (uVar9 == 6) goto LAB_0039d484; + if (iVar6 < (int)ABS((double)(int)param_1[6])) { + iVar6 = (int)ABS((double)(int)param_1[6]); + } + if (uVar9 == 7) goto LAB_0039d484; + if (iVar6 < (int)ABS((double)(int)param_1[7])) { + iVar6 = (int)ABS((double)(int)param_1[7]); + } + if (uVar9 == 9) { + uVar11 = 9; + if (iVar6 < (int)ABS((double)(int)param_1[8])) { + iVar6 = (int)ABS((double)(int)param_1[8]); + } + } + else { + uVar11 = 8; + } + } + if (uVar4 == uVar9) goto LAB_0039d470; + } + uVar1 = ((uVar4 - uVar9) - 8 >> 3) + 1; + iVar12 = uVar1 * 8; + if (6 < (uVar4 - 1) - uVar9) { + auVar26._4_4_ = iVar6; + auVar26._0_4_ = iVar6; + auVar26._8_4_ = iVar6; + auVar26._12_4_ = iVar6; + uVar5 = 0; + psVar7 = param_1 + uVar9; + do { + uVar5 = uVar5 + 1; + auVar20._0_8_ = (long)(int)*psVar7; + auVar20._8_8_ = (long)(int)psVar7[1]; + auVar22._0_8_ = (long)(int)psVar7[4]; + auVar22._8_8_ = (long)(int)psVar7[5]; + auVar17._0_8_ = (long)(int)psVar7[2]; + auVar17._8_8_ = (long)(int)psVar7[3]; + auVar14._0_8_ = (long)(int)psVar7[6]; + auVar14._8_8_ = (long)(int)psVar7[7]; + auVar13 = NEON_scvtf(auVar20,8); + auVar23 = NEON_scvtf(auVar22,8); + auVar15 = NEON_scvtf(auVar17,8); + auVar25 = NEON_scvtf(auVar14,8); + auVar18._4_4_ = (int)(long)ABS(auVar13._8_8_); + auVar18._0_4_ = (int)(long)ABS(auVar13._0_8_); + auVar18._8_4_ = (int)(long)ABS(auVar15._0_8_); + auVar18._12_4_ = (int)(long)ABS(auVar15._8_8_); + auVar2._4_4_ = (int)(long)ABS(auVar23._8_8_); + auVar2._0_4_ = (int)(long)ABS(auVar23._0_8_); + auVar2._8_4_ = (int)(long)ABS(auVar25._0_8_); + auVar2._12_4_ = (int)(long)ABS(auVar25._8_8_); + auVar25 = NEON_smax(auVar2,auVar18,4); + auVar26 = NEON_smax(auVar26,auVar25,4); + psVar7 = psVar7 + 8; + } while (uVar5 < uVar1); + iVar6 = NEON_smaxv(auVar26,4); + uVar11 = (ulong)(uint)((int)uVar11 + iVar12); + if (iVar12 == uVar4 - uVar9) goto LAB_0039d470; + } + uVar8 = -(uVar11 >> 0x1f) & 0xfffffffe00000000 | uVar11 << 1; + iVar12 = (int)uVar11; + /* try { // try from 0039d37c to 0049d37f has its CatchHandler @ 0039d38c */ + /* try { // try from 0039d384 to 0049d387 has its CatchHandler @ 0039cfb8 */ + /* catch() { ... } // from try @ 0039d37c with catch @ 0039d38c */ + if (iVar6 < (int)ABS((double)(int)*(short *)((long)param_1 + uVar8))) { + iVar6 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8)); + } + /* try { // try from 0039d39c to 0049d39f has its CatchHandler @ 0039cfb8 */ + if (iVar12 + 1 < (int)uVar4) { + /* catch() { ... } // from try @ 0039d058 with catch @ 0039d3a0 */ + /* try { // try from 0039d3b0 to 0049d3b3 has its CatchHandler @ 0039cfb8 */ + /* catch() { ... } // from try @ 0039d420 with catch @ 0039d3b4 + catch() { ... } // from try @ 0039d448 with catch @ 0039d3b4 + catch() { ... } // from try @ 0039d460 with catch @ 0039d3b4 */ + iVar3 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 2)); + if (iVar6 < iVar3) { + iVar6 = iVar3; + } + if (iVar12 + 2 < (int)uVar4) { + iVar3 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 4)); + if (iVar6 < iVar3) { + iVar6 = iVar3; + } + if (iVar12 + 3 < (int)uVar4) { + iVar3 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 6)); + if (iVar6 < iVar3) { + iVar6 = iVar3; + } + if (iVar12 + 4 < (int)uVar4) { + /* try { // try from 0039d420 to 0049d423 has its CatchHandler @ 0039d3b4 */ + iVar3 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 8)); + if (iVar6 < iVar3) { + iVar6 = iVar3; + } + if (iVar12 + 5 < (int)uVar4) { + /* try { // try from 0039d440 to 0049d443 has its CatchHandler @ 0039d450 */ + iVar3 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 10)); + /* try { // try from 0039d448 to 0049d44b has its CatchHandler @ 0039d3b4 */ + if (iVar6 < iVar3) { + iVar6 = iVar3; + } + /* catch() { ... } // from try @ 0039d440 with catch @ 0039d450 */ + /* try { // try from 0039d460 to 0049d463 has its CatchHandler @ 0039d3b4 */ + /* catch() { ... } // from try @ 0039d4e0 with catch @ 0039d464 + catch() { ... } // from try @ 0039d508 with catch @ 0039d464 + catch() { ... } // from try @ 0039d580 with catch @ 0039d464 + catch() { ... } // from try @ 0039d5a8 with catch @ 0039d464 + catch() { ... } // from try @ 0039d5bc with catch @ 0039d464 */ + if ((iVar12 + 6 < (int)uVar4) && + (iVar12 = (int)ABS((double)(int)*(short *)((long)param_1 + uVar8 + 0xc)), + iVar6 < iVar12)) { + iVar6 = iVar12; + } + } + } + } + } + } +LAB_0039d470: + if (iVar24 < iVar6) { + iVar24 = iVar6; + } + *param_3 = iVar24; + return 0; +} + + +================================================================== + +### FUNC 0039d4a8 (1764 bytes) name=FUN_0039d4a8 + +undefined8 +FUN_0039d4a8(short *param_1,short *param_2,long param_3,int *param_4,int param_5,ulong param_6) + +{ + undefined1 auVar1 [16]; + uint uVar2; + uint uVar3; + uint uVar4; + short *psVar5; + ulong uVar6; + uint uVar7; + int iVar8; + long lVar9; + short *psVar10; + int iVar11; + ulong uVar12; + int iVar13; + ulong uVar14; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + undefined1 auVar17 [16]; + undefined4 uVar18; + undefined4 uVar19; + undefined4 uVar20; + undefined4 uVar21; + int iVar22; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined8 uVar25; + undefined8 uVar26; + + iVar22 = *param_4; + uVar3 = (uint)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar14 = -(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < (int)uVar3)) { + uVar7 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + /* try { // try from 0039d4e0 to 0049d4e3 has its CatchHandler @ 0039d464 */ + if (uVar3 < uVar7) { + uVar7 = uVar3; + } + if (uVar3 < 9) { + uVar7 = uVar3; + } + if (uVar7 == 0) { + uVar12 = 0; + } + else { + uVar2 = (int)*param_1 - (int)*param_2 >> 0x1f; + /* try { // try from 0039d500 to 0049d503 has its CatchHandler @ 0039d5ac */ + /* try { // try from 0039d508 to 0049d527 has its CatchHandler @ 0039d464 */ + iVar11 = ((int)*param_1 - (int)*param_2 ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 1) { +LAB_0039d810: + uVar12 = (ulong)uVar7; + } + else { + uVar2 = (int)param_1[1] - (int)param_2[1] >> 0x1f; + iVar11 = ((int)param_1[1] - (int)param_2[1] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 2) goto LAB_0039d810; + uVar2 = (int)param_1[2] - (int)param_2[2] >> 0x1f; + iVar11 = ((int)param_1[2] - (int)param_2[2] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 3) goto LAB_0039d810; + uVar2 = (int)param_1[3] - (int)param_2[3] >> 0x1f; + /* try { // try from 0039d578 to 0049d57b has its CatchHandler @ 0039d598 */ + /* try { // try from 0039d580 to 0049d583 has its CatchHandler @ 0039d464 */ + iVar11 = ((int)param_1[3] - (int)param_2[3] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 4) goto LAB_0039d810; + /* catch() { ... } // from try @ 0039d578 with catch @ 0039d598 */ + /* catch() { ... } // from try @ 0039d500 with catch @ 0039d5ac */ + uVar2 = (int)param_1[4] - (int)param_2[4] >> 0x1f; + /* try { // try from 0039d5a8 to 0049d5ab has its CatchHandler @ 0039d464 */ + iVar11 = ((int)param_1[4] - (int)param_2[4] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 5) goto LAB_0039d810; + /* try { // try from 0039d5bc to 0049d5bf has its CatchHandler @ 0039d464 */ + /* catch() { ... } // from try @ 0039d61c with catch @ 0039d5c0 + catch() { ... } // from try @ 0039d644 with catch @ 0039d5c0 + catch() { ... } // from try @ 0039d688 with catch @ 0039d5c0 + catch() { ... } // from try @ 0039d6bc with catch @ 0039d5c0 + catch() { ... } // from try @ 0039d6d0 with catch @ 0039d5c0 */ + uVar2 = (int)param_1[5] - (int)param_2[5] >> 0x1f; + iVar11 = ((int)param_1[5] - (int)param_2[5] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 6) goto LAB_0039d810; + uVar2 = (int)param_1[6] - (int)param_2[6] >> 0x1f; + iVar11 = ((int)param_1[6] - (int)param_2[6] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + if (uVar7 == 8) { + uVar12 = 8; + uVar2 = (int)param_1[7] - (int)param_2[7] >> 0x1f; + /* try { // try from 0039d61c to 0049d61f has its CatchHandler @ 0039d5c0 */ + iVar11 = ((int)param_1[7] - (int)param_2[7] ^ uVar2) - uVar2; + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + } + else { + uVar12 = 7; + } + } + if (uVar3 == uVar7) goto LAB_0039d7f0; + } + /* try { // try from 0039d63c to 0049d63f has its CatchHandler @ 0039d6c0 */ + /* try { // try from 0039d644 to 0049d663 has its CatchHandler @ 0039d5c0 */ + uVar2 = ((uVar3 - uVar7) - 8 >> 3) + 1; + iVar11 = uVar2 * 8; + if (6 < (uVar3 - 1) - uVar7) { + auVar23._4_4_ = iVar22; + auVar23._0_4_ = iVar22; + auVar23._8_4_ = iVar22; + auVar23._12_4_ = iVar22; + uVar4 = 0; + psVar5 = param_2 + uVar7; + psVar10 = param_1 + uVar7; + do { + uVar4 = uVar4 + 1; + uVar26 = *(undefined8 *)(psVar5 + 4); + uVar25 = *(undefined8 *)psVar5; + /* try { // try from 0039d680 to 0049d683 has its CatchHandler @ 0039d6ac */ + uVar18 = MP_INT_ABS((int)psVar10[4] - (int)(short)uVar26); + uVar19 = MP_INT_ABS((int)psVar10[5] - (int)(short)((ulong)uVar26 >> 0x10)); + uVar20 = MP_INT_ABS((int)psVar10[6] - (int)(short)((ulong)uVar26 >> 0x20)); + uVar21 = MP_INT_ABS((int)psVar10[7] - (int)(short)((ulong)uVar26 >> 0x30)); + /* try { // try from 0039d688 to 0049d68b has its CatchHandler @ 0039d5c0 */ + auVar15._0_4_ = MP_INT_ABS((int)*psVar10 - (int)(short)uVar25); + auVar15._4_4_ = MP_INT_ABS((int)psVar10[1] - (int)(short)((ulong)uVar25 >> 0x10)); + auVar15._8_4_ = MP_INT_ABS((int)psVar10[2] - (int)(short)((ulong)uVar25 >> 0x20)); + auVar15._12_4_ = MP_INT_ABS((int)psVar10[3] - (int)(short)((ulong)uVar25 >> 0x30)); + auVar16._4_4_ = uVar19; + auVar16._0_4_ = uVar18; + auVar16._8_4_ = uVar20; + auVar16._12_4_ = uVar21; + auVar16 = NEON_smax(auVar16,auVar15,4); + auVar23 = NEON_smax(auVar23,auVar16,4); + psVar5 = psVar5 + 8; + psVar10 = psVar10 + 8; + } while (uVar4 < uVar2); + iVar22 = NEON_smaxv(auVar23,4); + uVar12 = (ulong)(uint)((int)uVar12 + iVar11); + if (uVar3 - uVar7 == iVar11) goto LAB_0039d7f0; + } + /* catch() { ... } // from try @ 0039d680 with catch @ 0039d6ac */ + uVar6 = -(uVar12 >> 0x1f) & 0xfffffffe00000000 | uVar12 << 1; + iVar11 = (int)uVar12; + /* try { // try from 0039d6bc to 0049d6bf has its CatchHandler @ 0039d5c0 */ + uVar7 = (int)*(short *)((long)param_1 + uVar6) - (int)*(short *)((long)param_2 + uVar6); + uVar2 = (int)uVar7 >> 0x1f; + /* catch() { ... } // from try @ 0039d63c with catch @ 0039d6c0 */ + iVar13 = (uVar7 ^ uVar2) - uVar2; + /* try { // try from 0039d6d0 to 0049d6d3 has its CatchHandler @ 0039d5c0 */ + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + /* catch() { ... } // from try @ 0039d7a0 with catch @ 0039d6d4 + catch() { ... } // from try @ 0039d7ec with catch @ 0039d6d4 + catch() { ... } // from try @ 0039d804 with catch @ 0039d6d4 */ + if (iVar11 + 1 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar6 + 2) - + (int)*(short *)((long)param_2 + uVar6 + 2); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 2 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar6 + 4) - + (int)*(short *)((long)param_2 + uVar6 + 4); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 3 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar6 + 6) - + (int)*(short *)((long)param_2 + uVar6 + 6); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 4 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar6 + 8) - + (int)*(short *)((long)param_2 + uVar6 + 8); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + if (iVar11 + 5 < (int)uVar3) { + /* try { // try from 0039d7a0 to 0049d7a3 has its CatchHandler @ 0039d6d4 */ + uVar7 = (int)*(short *)((long)param_1 + uVar6 + 10) - + (int)*(short *)((long)param_2 + uVar6 + 10); + uVar2 = (int)uVar7 >> 0x1f; + iVar13 = (uVar7 ^ uVar2) - uVar2; + if (iVar22 < iVar13) { + iVar22 = iVar13; + } + /* try { // try from 0039d7e4 to 0049d7e7 has its CatchHandler @ 0039d7f4 */ + /* try { // try from 0039d7ec to 0049d7ef has its CatchHandler @ 0039d6d4 */ + if ((iVar11 + 6 < (int)uVar3) && + (uVar7 = (int)*(short *)((long)param_1 + uVar6 + 0xc) - + (int)*(short *)((long)param_2 + uVar6 + 0xc), + uVar2 = (int)uVar7 >> 0x1f, iVar11 = (uVar7 ^ uVar2) - uVar2, iVar22 < iVar11 + )) { + iVar22 = iVar11; + } + } + } + } + } + } + } +LAB_0039d7f0: + lVar9 = lVar9 + 1; + /* catch() { ... } // from try @ 0039d7e4 with catch @ 0039d7f4 */ + param_1 = (short *)((long)param_1 + uVar14); + param_2 = (short *)((long)param_2 + uVar14); + } while ((int)lVar9 < param_5); + } + /* try { // try from 0039d804 to 0049d807 has its CatchHandler @ 0039d6d4 */ + *param_4 = iVar22; + /* catch() { ... } // from try @ 0039d838 with catch @ 0039d808 + catch() { ... } // from try @ 0039d8ec with catch @ 0039d808 + catch() { ... } // from try @ 0039d904 with catch @ 0039d808 */ + return 0; + } + uVar3 = param_5 * uVar3; + iVar11 = 0; + if ((int)uVar3 < 1) goto LAB_0039db54; + /* try { // try from 0039d838 to 0049d8ab has its CatchHandler @ 0039d808 */ + uVar7 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar3 < uVar7) { + uVar7 = uVar3; + } + uVar14 = (ulong)uVar7; + if ((int)uVar3 < 9) { + uVar14 = (ulong)uVar3; +LAB_0039d854: + uVar7 = (int)*param_1 - (int)*param_2 >> 0x1f; + iVar11 = ((int)*param_1 - (int)*param_2 ^ uVar7) - uVar7; + if (iVar11 < 0) { + iVar11 = 0; + } + uVar7 = (uint)uVar14; + uVar12 = uVar14; + if (uVar7 != 1) { + uVar2 = (int)param_1[1] - (int)param_2[1] >> 0x1f; + iVar13 = ((int)param_1[1] - (int)param_2[1] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 2) { + uVar2 = (int)param_1[2] - (int)param_2[2] >> 0x1f; + iVar13 = ((int)param_1[2] - (int)param_2[2] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 3) { + /* try { // try from 0039d8e4 to 0049d8e7 has its CatchHandler @ 0039d8f4 */ + uVar2 = (int)param_1[3] - (int)param_2[3] >> 0x1f; + iVar13 = ((int)param_1[3] - (int)param_2[3] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + /* try { // try from 0039d8ec to 0049d8ef has its CatchHandler @ 0039d808 */ + if (uVar7 != 4) { + /* catch() { ... } // from try @ 0039d8e4 with catch @ 0039d8f4 */ + uVar2 = (int)param_1[4] - (int)param_2[4] >> 0x1f; + /* try { // try from 0039d904 to 0049d907 has its CatchHandler @ 0039d808 */ + /* catch() { ... } // from try @ 0039d9d0 with catch @ 0039d908 + catch() { ... } // from try @ 0039d9f8 with catch @ 0039d908 + catch() { ... } // from try @ 0039da10 with catch @ 0039d908 */ + iVar13 = ((int)param_1[4] - (int)param_2[4] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 5) { + uVar2 = (int)param_1[5] - (int)param_2[5] >> 0x1f; + iVar13 = ((int)param_1[5] - (int)param_2[5] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 != 6) { + uVar2 = (int)param_1[6] - (int)param_2[6] >> 0x1f; + iVar13 = ((int)param_1[6] - (int)param_2[6] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + if (uVar7 == 8) { + uVar2 = (int)param_1[7] - (int)param_2[7] >> 0x1f; + iVar13 = ((int)param_1[7] - (int)param_2[7] ^ uVar2) - uVar2; + if (iVar11 < iVar13) { + iVar11 = iVar13; + } + } + else { + uVar12 = 7; + } + } + } + } + } + } + } + if (uVar3 == uVar7) goto LAB_0039db54; + } + else { + uVar12 = 0; + if (uVar7 != 0) goto LAB_0039d854; + } + iVar8 = uVar3 - (int)uVar14; + uVar7 = (iVar8 - 8U >> 3) + 1; + iVar13 = uVar7 * 8; + if (6 < (uVar3 - 1) - (int)uVar14) { + auVar24._4_4_ = iVar11; + auVar24._0_4_ = iVar11; + auVar24._8_4_ = iVar11; + auVar24._12_4_ = iVar11; + uVar2 = 0; + psVar5 = param_1 + uVar14; + psVar10 = param_2 + uVar14; + do { + /* try { // try from 0039d9d0 to 0049d9d3 has its CatchHandler @ 0039d908 */ + uVar2 = uVar2 + 1; + uVar26 = *(undefined8 *)(psVar10 + 4); + uVar25 = *(undefined8 *)psVar10; + uVar18 = MP_INT_ABS((int)psVar5[4] - (int)(short)uVar26); + uVar19 = MP_INT_ABS((int)psVar5[5] - (int)(short)((ulong)uVar26 >> 0x10)); + uVar20 = MP_INT_ABS((int)psVar5[6] - (int)(short)((ulong)uVar26 >> 0x20)); + uVar21 = MP_INT_ABS((int)psVar5[7] - (int)(short)((ulong)uVar26 >> 0x30)); + auVar17._0_4_ = MP_INT_ABS((int)*psVar5 - (int)(short)uVar25); + auVar17._4_4_ = MP_INT_ABS((int)psVar5[1] - (int)(short)((ulong)uVar25 >> 0x10)); + auVar17._8_4_ = MP_INT_ABS((int)psVar5[2] - (int)(short)((ulong)uVar25 >> 0x20)); + auVar17._12_4_ = MP_INT_ABS((int)psVar5[3] - (int)(short)((ulong)uVar25 >> 0x30)); + auVar1._4_4_ = uVar19; + auVar1._0_4_ = uVar18; + auVar1._8_4_ = uVar20; + auVar1._12_4_ = uVar21; + /* try { // try from 0039d9f0 to 0049d9f3 has its CatchHandler @ 0039da00 */ + auVar23 = NEON_smax(auVar1,auVar17,4); + auVar24 = NEON_smax(auVar24,auVar23,4); + /* try { // try from 0039d9f8 to 0049d9fb has its CatchHandler @ 0039d908 */ + psVar5 = psVar5 + 8; + psVar10 = psVar10 + 8; + } while (uVar2 < uVar7); + iVar11 = NEON_smaxv(auVar24,4); + /* catch() { ... } // from try @ 0039d9f0 with catch @ 0039da00 */ + uVar12 = (ulong)(uint)((int)uVar12 + iVar13); + if (iVar13 == iVar8) goto LAB_0039db54; + } + /* try { // try from 0039da10 to 0049da13 has its CatchHandler @ 0039d908 */ + uVar14 = -(uVar12 >> 0x1f) & 0xfffffffe00000000 | uVar12 << 1; + iVar13 = (int)uVar12; + uVar7 = (int)*(short *)((long)param_1 + uVar14) - (int)*(short *)((long)param_2 + uVar14); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 1 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar14 + 2) - + (int)*(short *)((long)param_2 + uVar14 + 2); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 2 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar14 + 4) - + (int)*(short *)((long)param_2 + uVar14 + 4); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 3 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar14 + 6) - + (int)*(short *)((long)param_2 + uVar14 + 6); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 4 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar14 + 8) - + (int)*(short *)((long)param_2 + uVar14 + 8); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if (iVar13 + 5 < (int)uVar3) { + uVar7 = (int)*(short *)((long)param_1 + uVar14 + 10) - + (int)*(short *)((long)param_2 + uVar14 + 10); + uVar2 = (int)uVar7 >> 0x1f; + iVar8 = (uVar7 ^ uVar2) - uVar2; + if (iVar11 < iVar8) { + iVar11 = iVar8; + } + if ((iVar13 + 6 < (int)uVar3) && + (uVar3 = (int)*(short *)((long)param_1 + uVar14 + 0xc) - + (int)*(short *)((long)param_2 + uVar14 + 0xc), uVar7 = (int)uVar3 >> 0x1f, + iVar13 = (uVar3 ^ uVar7) - uVar7, iVar11 < iVar13)) { + iVar11 = iVar13; + } + } + } + } + } + } +LAB_0039db54: + if (iVar22 < iVar11) { + iVar22 = iVar11; + } + *param_4 = iVar22; + return 0; +} + + +================================================================== + +### FUNC 0039db8c (2800 bytes) name=FUN_0039db8c + +undefined8 FUN_0039db8c(short *param_1,long param_2,int *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + short *psVar4; + uint uVar35; + short *psVar36; + ulong uVar37; + int iVar38; + long lVar39; + int iVar40; + uint uVar41; + ulong uVar42; + uint uVar43; + uint uVar44; + undefined1 auVar45 [16]; + undefined1 auVar46 [16]; + undefined1 auVar47 [16]; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + int iVar52; + int iVar53; + int iVar54; + int iVar55; + undefined1 auVar56 [16]; + undefined1 auVar57 [16]; + undefined1 auVar58 [16]; + undefined1 auVar59 [16]; + undefined1 auVar60 [16]; + undefined1 auVar61 [16]; + undefined1 auVar62 [16]; + undefined1 auVar63 [16]; + undefined1 auVar64 [16]; + undefined1 auVar65 [16]; + undefined1 auVar66 [16]; + undefined1 auVar67 [16]; + undefined1 auVar68 [16]; + int iVar69; + undefined1 auVar70 [16]; + undefined1 auVar71 [16]; + undefined1 auVar72 [16]; + undefined1 auVar73 [16]; + short sVar74; + short *psVar5; + short *psVar6; + short *psVar7; + short *psVar8; + short *psVar9; + short *psVar10; + short *psVar11; + short *psVar12; + short *psVar13; + short *psVar14; + short *psVar15; + short *psVar16; + short *psVar17; + short *psVar18; + short *psVar19; + short *psVar20; + short *psVar21; + short *psVar22; + short *psVar23; + short *psVar24; + short *psVar25; + short *psVar26; + short *psVar27; + short *psVar28; + short *psVar29; + short *psVar30; + short *psVar31; + short *psVar32; + short *psVar33; + short *psVar34; + + iVar38 = *param_3; + uVar44 = (uint)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar39 = 0; + do { + if ((*(char *)(param_2 + lVar39) != '\0') && (0 < (int)uVar44)) { + uVar3 = -((uint)((ulong)param_1 >> 1) & 7) & 7; + if (uVar44 < uVar3) { + uVar3 = uVar44; + } + if (uVar44 < 10) { + uVar3 = uVar44; + } + if (uVar3 == 0) { + uVar42 = 0; + } + else { + iVar38 = iVar38 + (int)ABS((double)(int)*param_1); + if ((((uVar3 == 1) || (iVar38 = iVar38 + (int)ABS((double)(int)param_1[1]), uVar3 == 2)) + || (iVar38 = iVar38 + (int)ABS((double)(int)param_1[2]), uVar3 == 3)) || + (((iVar38 = iVar38 + (int)ABS((double)(int)param_1[3]), uVar3 == 4 || + (iVar38 = iVar38 + (int)ABS((double)(int)param_1[4]), uVar3 == 5)) || + (iVar38 = iVar38 + (int)ABS((double)(int)param_1[5]), uVar3 == 6)))) { + uVar42 = (ulong)uVar3; + } + else { + iVar38 = iVar38 + (int)ABS((double)(int)param_1[6]); + if (uVar3 == 7) { + uVar42 = 7; + } + else { + iVar38 = iVar38 + (int)ABS((double)(int)param_1[7]); + if (uVar3 == 9) { + uVar42 = 9; + iVar38 = iVar38 + (int)ABS((double)(int)param_1[8]); + } + else { + uVar42 = 8; + } + } + } + if (uVar44 == uVar3) goto LAB_0039de6c; + } + uVar1 = ((uVar44 - uVar3) - 8 >> 3) + 1; + iVar40 = uVar1 * 8; + if (6 < (uVar44 - 1) - uVar3) { + iVar52 = 0; + iVar53 = 0; + iVar54 = 0; + iVar55 = 0; + uVar43 = 0; + psVar36 = param_1 + uVar3; + do { + uVar43 = uVar43 + 1; + auVar59._0_8_ = (long)(int)*psVar36; + auVar59._8_8_ = (long)(int)psVar36[1]; + auVar48._0_8_ = (long)(int)psVar36[2]; + auVar48._8_8_ = (long)(int)psVar36[3]; + auVar49._0_8_ = (long)(int)psVar36[4]; + auVar49._8_8_ = (long)(int)psVar36[5]; + auVar45._0_8_ = (long)(int)psVar36[6]; + auVar45._8_8_ = (long)(int)psVar36[7]; + auVar59 = NEON_scvtf(auVar59,8); + auVar48 = NEON_scvtf(auVar48,8); + auVar45 = NEON_scvtf(auVar45,8); + auVar49 = NEON_scvtf(auVar49,8); + iVar52 = (int)(long)ABS(auVar49._0_8_) + (int)(long)ABS(auVar59._0_8_) + iVar52; + iVar53 = (int)(long)ABS(auVar49._8_8_) + (int)(long)ABS(auVar59._8_8_) + iVar53; + iVar54 = (int)(long)ABS(auVar45._0_8_) + (int)(long)ABS(auVar48._0_8_) + iVar54; + iVar55 = (int)(long)ABS(auVar45._8_8_) + (int)(long)ABS(auVar48._8_8_) + iVar55; + psVar36 = psVar36 + 8; + } while (uVar43 < uVar1); + uVar42 = (ulong)(uint)((int)uVar42 + iVar40); + iVar38 = iVar38 + iVar52 + iVar53 + iVar54 + iVar55; + if (uVar44 - uVar3 == iVar40) goto LAB_0039de6c; + } + uVar37 = -(uVar42 >> 0x1f) & 0xfffffffe00000000 | uVar42 << 1; + iVar40 = (int)uVar42; + iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37)); + if (iVar40 + 1 < (int)uVar44) { + iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 2)); + if (((iVar40 + 2 < (int)uVar44) && + (iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 4)), + iVar40 + 3 < (int)uVar44)) && + ((iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 6)), + iVar40 + 4 < (int)uVar44 && + ((iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 8)), + iVar40 + 5 < (int)uVar44 && + (iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 10)), + iVar40 + 6 < (int)uVar44)))))) { + iVar38 = iVar38 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 0xc)); + } + } + } +LAB_0039de6c: + lVar39 = lVar39 + 1; + param_1 = (short *)((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_5 & 0xffffffff) << 1)); + } while ((int)lVar39 < param_4); + } + *param_3 = iVar38; + return 0; + } + param_4 = param_4 * uVar44; + iVar40 = param_4 + -3; + uVar44 = 0; + uVar3 = uVar44; + if (0 < iVar40) { + uVar3 = param_4 - 4U >> 2; + iVar52 = uVar3 + 1; + uVar3 = (uVar3 - 7 >> 3) + 1; + if (param_4 - 4U < 0x1c) { + uVar42 = 0; +LAB_0039e0ac: + uVar37 = -(uVar42 >> 0x1f) & 0xfffffffe00000000 | uVar42 << 1; + iVar53 = (int)uVar42; + uVar3 = iVar53 + 4; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar37 + 6)); + if ((int)uVar3 < iVar40) { + uVar42 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar3 = iVar53 + 8; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)); + if ((int)uVar3 < iVar40) { + uVar42 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar3 = iVar53 + 0xc; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)); + if ((int)uVar3 < iVar40) { + uVar42 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar3 = iVar53 + 0x10; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)); + if ((int)uVar3 < iVar40) { + uVar42 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar3 = iVar53 + 0x14; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)); + if ((int)uVar3 < iVar40) { + /* catch() { ... } // from try @ 0039e3c4 with catch @ 0039e2a0 + catch() { ... } // from try @ 0039f180 with catch @ 0039e2a0 + catch() { ... } // from try @ 0039f2a8 with catch @ 0039e2a0 */ + uVar42 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar3 = iVar53 + 0x18; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)); + if ((int)uVar3 < iVar40) { + uVar42 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar3 << 1; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)) + + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)); + } + } + } + } + } + } + } + else { + iVar53 = 0; + iVar54 = 0; + iVar55 = 0; + iVar69 = 0; + uVar44 = 0; + psVar36 = param_1; + do { + sVar74 = *psVar36; + psVar4 = psVar36 + 1; + psVar5 = psVar36 + 2; + psVar6 = psVar36 + 3; + psVar7 = psVar36 + 4; + psVar8 = psVar36 + 5; + psVar9 = psVar36 + 6; + psVar10 = psVar36 + 7; + psVar11 = psVar36 + 8; + psVar12 = psVar36 + 9; + psVar13 = psVar36 + 10; + psVar14 = psVar36 + 0xb; + psVar15 = psVar36 + 0xc; + psVar16 = psVar36 + 0xd; + psVar17 = psVar36 + 0xe; + psVar18 = psVar36 + 0xf; + psVar19 = psVar36 + 0x10; + psVar20 = psVar36 + 0x11; + psVar21 = psVar36 + 0x12; + psVar22 = psVar36 + 0x13; + psVar23 = psVar36 + 0x14; + psVar24 = psVar36 + 0x15; + psVar25 = psVar36 + 0x16; + psVar26 = psVar36 + 0x17; + psVar27 = psVar36 + 0x18; + psVar28 = psVar36 + 0x19; + psVar29 = psVar36 + 0x1a; + psVar30 = psVar36 + 0x1b; + psVar31 = psVar36 + 0x1c; + psVar32 = psVar36 + 0x1d; + psVar33 = psVar36 + 0x1e; + psVar34 = psVar36 + 0x1f; + psVar36 = psVar36 + 0x20; + uVar44 = uVar44 + 1; + auVar72._0_8_ = (long)(int)sVar74; + auVar72._8_8_ = (long)(int)*psVar7; + auVar66._0_8_ = (long)(int)*psVar11; + auVar66._8_8_ = (long)(int)*psVar15; + auVar70._0_8_ = (long)(int)*psVar4; + auVar70._8_8_ = (long)(int)*psVar8; + auVar63._0_8_ = (long)(int)*psVar12; + auVar63._8_8_ = (long)(int)*psVar16; + auVar72 = NEON_scvtf(auVar72,8); + auVar66 = NEON_scvtf(auVar66,8); + auVar70 = NEON_scvtf(auVar70,8); + auVar73._0_8_ = (long)(int)*psVar5; + auVar73._8_8_ = (long)(int)*psVar9; + auVar67._0_8_ = (long)(int)*psVar19; + auVar67._8_8_ = (long)(int)*psVar23; + auVar61._0_8_ = (long)(int)*psVar13; + auVar61._8_8_ = (long)(int)*psVar17; + auVar63 = NEON_scvtf(auVar63,8); + auVar56._0_8_ = (long)(int)*psVar27; + auVar56._8_8_ = (long)(int)*psVar31; + auVar71._0_8_ = (long)(int)*psVar20; + auVar71._8_8_ = (long)(int)*psVar24; + auVar64._0_8_ = (long)(int)*psVar28; + auVar64._8_8_ = (long)(int)*psVar32; + auVar73 = NEON_scvtf(auVar73,8); + auVar65._0_8_ = (long)(int)*psVar14; + auVar65._8_8_ = (long)(int)*psVar18; + auVar61 = NEON_scvtf(auVar61,8); + auVar67 = NEON_scvtf(auVar67,8); + auVar56 = NEON_scvtf(auVar56,8); + auVar71 = NEON_scvtf(auVar71,8); + auVar49 = NEON_scvtf(auVar64,8); + auVar68._0_8_ = (long)(int)*psVar21; + auVar68._8_8_ = (long)(int)*psVar25; + auVar50._0_8_ = (long)(int)*psVar29; + auVar50._8_8_ = (long)(int)*psVar33; + auVar59 = NEON_scvtf(auVar65,8); + auVar57._8_4_ = (int)*psVar10; + auVar57._0_8_ = (long)(int)*psVar6; + auVar57._12_4_ = (int)*psVar10 >> 0x1f; + auVar64 = NEON_scvtf(auVar57,8); + auVar65 = NEON_scvtf(auVar68,8); + auVar48 = NEON_scvtf(auVar50,8); + auVar62._0_8_ = (long)(int)*psVar22; + auVar62._8_8_ = (long)(int)*psVar26; + auVar46._0_8_ = (long)(int)*psVar30; + auVar46._8_8_ = (long)(int)*psVar34; + auVar57 = NEON_scvtf(auVar62,8); + auVar45 = NEON_scvtf(auVar46,8); + iVar53 = (int)(long)ABS(auVar67._0_8_) + (int)(long)ABS(auVar71._0_8_) + + (int)(long)ABS(auVar65._0_8_) + (int)(long)ABS(auVar57._0_8_) + + (int)(long)ABS(auVar72._0_8_) + (int)(long)ABS(auVar70._0_8_) + + (int)(long)ABS(auVar73._0_8_) + (int)(long)ABS(auVar64._0_8_) + iVar53; + iVar54 = (int)(long)ABS(auVar67._8_8_) + (int)(long)ABS(auVar71._8_8_) + + (int)(long)ABS(auVar65._8_8_) + (int)(long)ABS(auVar57._8_8_) + + (int)(long)ABS(auVar72._8_8_) + (int)(long)ABS(auVar70._8_8_) + + (int)(long)ABS(auVar73._8_8_) + (int)(long)ABS(auVar64._8_8_) + iVar54; + iVar55 = (int)(long)ABS(auVar56._0_8_) + (int)(long)ABS(auVar49._0_8_) + + (int)(long)ABS(auVar48._0_8_) + (int)(long)ABS(auVar45._0_8_) + + (int)(long)ABS(auVar66._0_8_) + (int)(long)ABS(auVar63._0_8_) + + (int)(long)ABS(auVar61._0_8_) + (int)(long)ABS(auVar59._0_8_) + iVar55; + iVar69 = (int)(long)ABS(auVar56._8_8_) + (int)(long)ABS(auVar49._8_8_) + + (int)(long)ABS(auVar48._8_8_) + (int)(long)ABS(auVar45._8_8_) + + (int)(long)ABS(auVar66._8_8_) + (int)(long)ABS(auVar63._8_8_) + + (int)(long)ABS(auVar61._8_8_) + (int)(long)ABS(auVar59._8_8_) + iVar69; + } while (uVar44 < uVar3); + uVar44 = iVar53 + iVar54 + iVar55 + iVar69; + uVar42 = (ulong)(uVar3 * 0x20); + if (uVar3 * 8 != iVar52) goto LAB_0039e0ac; + } + uVar3 = iVar52 * 4; + } + if ((int)uVar3 < param_4) { + uVar43 = param_4 - uVar3; + psVar36 = param_1 + (int)uVar3; + uVar1 = -((uint)((ulong)psVar36 >> 1) & 7) & 7; + uVar42 = (ulong)uVar1; + if (uVar43 < uVar1) { + uVar42 = (ulong)uVar43; + } + if (uVar43 < 10) { + uVar42 = (ulong)uVar43; + } + uVar35 = (uint)uVar42; + uVar1 = uVar3; + if (uVar35 != 0) { + uVar1 = uVar3 + 1; + uVar44 = uVar44 + (int)ABS((double)(int)*psVar36); + if (uVar35 != 1) { + uVar1 = uVar3 + 2; + /* try { // try from 0039e3c4 to 0049f12f has its CatchHandler @ 0039e2a0 */ + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[1]); + if (uVar35 != 2) { + uVar1 = uVar3 + 3; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[2]); + if (uVar35 != 3) { + uVar1 = uVar3 + 4; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[3]); + if (uVar35 != 4) { + uVar1 = uVar3 + 5; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[4]); + if (uVar35 != 5) { + uVar1 = uVar3 + 6; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[5]); + if (uVar35 != 6) { + uVar1 = uVar3 + 7; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[6]); + if (uVar35 != 7) { + uVar1 = uVar3 + 8; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[7]); + if (uVar35 == 9) { + uVar1 = uVar3 + 9; + uVar44 = uVar44 + (int)ABS((double)(int)psVar36[8]); + } + } + } + } + } + } + } + } + if (uVar35 == uVar43) goto LAB_0039e64c; + } + uVar2 = ((uVar43 - uVar35) - 8 >> 3) + 1; + iVar40 = uVar2 * 8; + if (6 < (uVar43 - 1) - uVar35) { + iVar52 = 0; + iVar53 = 0; + iVar54 = 0; + iVar55 = 0; + uVar41 = 0; + psVar36 = param_1 + uVar42 + (long)(int)uVar3; + do { + uVar41 = uVar41 + 1; + auVar60._0_8_ = (long)(int)*psVar36; + auVar60._8_8_ = (long)(int)psVar36[1]; + auVar51._0_8_ = (long)(int)psVar36[2]; + auVar51._8_8_ = (long)(int)psVar36[3]; + auVar58._0_8_ = (long)(int)psVar36[4]; + auVar58._8_8_ = (long)(int)psVar36[5]; + auVar47._0_8_ = (long)(int)psVar36[6]; + auVar47._8_8_ = (long)(int)psVar36[7]; + auVar59 = NEON_scvtf(auVar60,8); + auVar48 = NEON_scvtf(auVar51,8); + auVar45 = NEON_scvtf(auVar47,8); + auVar49 = NEON_scvtf(auVar58,8); + iVar52 = (int)(long)ABS(auVar49._0_8_) + (int)(long)ABS(auVar59._0_8_) + iVar52; + iVar53 = (int)(long)ABS(auVar49._8_8_) + (int)(long)ABS(auVar59._8_8_) + iVar53; + iVar54 = (int)(long)ABS(auVar45._0_8_) + (int)(long)ABS(auVar48._0_8_) + iVar54; + iVar55 = (int)(long)ABS(auVar45._8_8_) + (int)(long)ABS(auVar48._8_8_) + iVar55; + psVar36 = psVar36 + 8; + } while (uVar41 < uVar2); + uVar1 = uVar1 + iVar40; + uVar44 = uVar44 + iVar52 + iVar53 + iVar54 + iVar55; + if (iVar40 == uVar43 - uVar35) goto LAB_0039e64c; + } + uVar42 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffe00000000 | (ulong)uVar1 << 1; + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42)); + if ((int)(uVar1 + 1) < param_4) { + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 2)); + if (((((int)(uVar1 + 2) < param_4) && + (uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 4)), + (int)(uVar1 + 3) < param_4)) && + (uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 6)), + (int)(uVar1 + 4) < param_4)) && + ((uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 8)), + (int)(uVar1 + 5) < param_4 && + (uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 10)), + (int)(uVar1 + 6) < param_4)))) { + uVar44 = uVar44 + (int)ABS((double)(int)*(short *)((long)param_1 + uVar42 + 0xc)); + } + } + } +LAB_0039e64c: + *param_3 = iVar38 + uVar44; + return 0; +} + + +================================================================== + +### FUNC 0039e67c name=FUN_0039e67c DECOMPILE FAILED + +### FUNC 0039f220 (288 bytes) name=FUN_0039f220 + +undefined8 FUN_0039f220(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + long lVar1; + uint uVar2; + short *psVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + short *psVar4; + + dVar9 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar7 = 0; + do { + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + lVar1 = lVar6 * 2; + lVar6 = lVar6 + 1; + dVar8 = (double)(int)*(short *)(param_1 + lVar1); + dVar9 = dVar9 + dVar8 * dVar8; + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | + (param_5 & 0xffffffff) << 1); + } while ((int)lVar7 < param_4); + } + *param_3 = dVar9; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + dVar8 = 0.0; + iVar5 = 0; + } + else { + dVar8 = 0.0; + uVar2 = param_4 - 4U >> 2; + /* catch() { ... } // from try @ 0039f178 with catch @ 0039f298 */ + psVar3 = (short *)(param_1 + 2); + do { + /* try { // try from 0039f2a8 to 0049f2ab has its CatchHandler @ 0039e2a0 */ + psVar4 = psVar3 + 4; + dVar8 = dVar8 + (double)(int)*psVar3 * (double)(int)*psVar3 + + (double)(int)psVar3[-1] * (double)(int)psVar3[-1] + + (double)(int)psVar3[1] * (double)(int)psVar3[1] + + (double)(int)psVar3[2] * (double)(int)psVar3[2]; + psVar3 = psVar4; + } while (psVar4 != (short *)(param_1 + (ulong)uVar2 * 8 + 10)); + iVar5 = (uVar2 + 1) * 4; + } + if (iVar5 < param_4) { + psVar3 = (short *)(param_1 + (long)iVar5 * 2); + do { + psVar4 = psVar3 + 1; + dVar8 = dVar8 + (double)(int)*psVar3 * (double)(int)*psVar3; + psVar3 = psVar4; + } while (psVar4 != (short *)(param_1 + + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 2)); + } + *param_3 = dVar9 + dVar8; + return 0; +} + + +================================================================== + +### FUNC 0039f340 (356 bytes) name=FUN_0039f340 + +undefined8 +FUN_0039f340(short *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + long lVar1; + short *psVar2; + uint uVar3; + ulong uVar4; + int iVar5; + long lVar6; + short *psVar7; + long lVar8; + short *psVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + + dVar13 = *param_4; + iVar5 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffffe00000000 | (param_6 & 0xffffffff) << 1; + lVar8 = 0; + do { + if ((*(char *)(param_3 + lVar8) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + psVar7 = param_1 + lVar6; + lVar1 = lVar6 * 2; + lVar6 = lVar6 + 1; + dVar11 = (double)((int)*psVar7 - (int)*(short *)(param_2 + lVar1)); + dVar13 = dVar13 + dVar11 * dVar11; + } while ((int)lVar6 < iVar5); + } + lVar8 = lVar8 + 1; + param_1 = (short *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar8 < param_5); + } + *param_4 = dVar13; + return 0; + } + param_5 = param_5 * iVar5; + if (param_5 < 4) { + dVar11 = 0.0; + uVar10 = 0; + } + else { + dVar11 = 0.0; + uVar3 = param_5 - 4U >> 2; + psVar7 = (short *)(param_2 + 2); + psVar9 = param_1; + do { + psVar2 = psVar7 + 4; + dVar11 = dVar11 + (double)((int)psVar9[1] - (int)*psVar7) * + (double)((int)psVar9[1] - (int)*psVar7) + + (double)((int)*psVar9 - (int)psVar7[-1]) * + (double)((int)*psVar9 - (int)psVar7[-1]) + + (double)((int)psVar9[2] - (int)psVar7[1]) * + (double)((int)psVar9[2] - (int)psVar7[1]) + + (double)((int)psVar9[3] - (int)psVar7[2]) * + (double)((int)psVar9[3] - (int)psVar7[2]); + psVar7 = psVar2; + psVar9 = psVar9 + 4; + } while (psVar2 != (short *)(param_2 + (ulong)uVar3 * 8 + 10)); + uVar10 = (ulong)((uVar3 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar4 = -(uVar10 >> 0x1f) & 0xfffffffe00000000 | uVar10 << 1; + lVar8 = 0; + do { + lVar6 = lVar8 + uVar4; + psVar7 = (short *)(param_2 + uVar4 + lVar8); + lVar8 = lVar8 + 2; + dVar12 = (double)((int)*(short *)((long)param_1 + lVar6) - (int)*psVar7); + dVar11 = dVar11 + dVar12 * dVar12; + } while (lVar8 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 2); + } + *param_4 = dVar13 + dVar11; + return 0; +} + + +================================================================== + +### FUNC 0039f4a4 (1100 bytes) name=FUN_0039f4a4 + +undefined8 +FUN_0039f4a4(int *param_1,int *param_2,long param_3,int *param_4,int param_5,ulong param_6) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + int *piVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + ulong uVar11; + int *piVar12; + long lVar13; + ulong uVar14; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + int iVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + int iVar20; + int iVar21; + int iVar22; + int iVar23; + int iVar24; + int iVar25; + + iVar17 = *param_4; + uVar4 = (uint)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar14 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar13 = 0; + do { + if ((*(char *)(param_3 + lVar13) != '\0') && (0 < (int)uVar4)) { + uVar9 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + if (uVar4 < uVar9) { + uVar9 = uVar4; + } + if (uVar4 < 6) { + uVar9 = uVar4; + } + if (uVar9 == 0) { + uVar11 = 0; + } + else { + uVar6 = *param_1 - *param_2 >> 0x1f; + iVar5 = (*param_1 - *param_2 ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + if (uVar9 == 1) { +LAB_0039f6c4: + uVar11 = (ulong)uVar9; + } + else { + uVar6 = param_1[1] - param_2[1] >> 0x1f; + iVar5 = (param_1[1] - param_2[1] ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + if (uVar9 == 2) goto LAB_0039f6c4; + uVar6 = param_1[2] - param_2[2] >> 0x1f; + iVar5 = (param_1[2] - param_2[2] ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + if (uVar9 == 3) goto LAB_0039f6c4; + uVar6 = param_1[3] - param_2[3] >> 0x1f; + iVar5 = (param_1[3] - param_2[3] ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + if (uVar9 == 5) { + uVar6 = param_1[4] - param_2[4] >> 0x1f; + iVar5 = (param_1[4] - param_2[4] ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + uVar11 = 5; + } + else { + uVar11 = 4; + } + } + if (uVar4 == uVar9) goto LAB_0039f678; + } + uVar6 = ((uVar4 - uVar9) - 4 >> 2) + 1; + iVar5 = uVar6 * 4; + if (2 < (uVar4 - 1) - uVar9) { + auVar18._4_4_ = iVar17; + auVar18._0_4_ = iVar17; + auVar18._8_4_ = iVar17; + auVar18._12_4_ = iVar17; + uVar8 = 0; + piVar7 = param_2 + uVar9; + piVar12 = param_1 + uVar9; + do { + uVar8 = uVar8 + 1; + iVar17 = *piVar12; + iVar3 = piVar12[1]; + iVar1 = piVar12[2]; + iVar2 = piVar12[3]; + iVar20 = (int)*(undefined8 *)piVar7; + iVar22 = (int)((ulong)*(undefined8 *)piVar7 >> 0x20); + iVar21 = (int)*(undefined8 *)(piVar7 + 2); + iVar23 = (int)((ulong)*(undefined8 *)(piVar7 + 2) >> 0x20); + auVar15._0_4_ = (iVar17 - iVar20) + (iVar20 - iVar17) * 2 * (uint)(iVar17 < iVar20); + auVar15._4_4_ = (iVar3 - iVar22) + (iVar22 - iVar3) * 2 * (uint)(iVar3 < iVar22); + auVar15._8_4_ = + (iVar1 - iVar21) + + (int)(CONCAT44(iVar23 - iVar2,iVar21 - iVar1) >> 0x1e) * 2 * + (uint)(iVar1 < iVar21); + auVar15._12_4_ = (iVar2 - iVar23) + (iVar23 - iVar2) * 2 * (uint)(iVar2 < iVar23); + auVar18 = NEON_smax(auVar18,auVar15,4); + piVar7 = piVar7 + 4; + piVar12 = piVar12 + 4; + } while (uVar8 < uVar6); + iVar17 = NEON_smaxv(auVar18,4); + uVar11 = (ulong)(uint)((int)uVar11 + iVar5); + if (uVar4 - uVar9 == iVar5) goto LAB_0039f678; + } + uVar10 = -(uVar11 >> 0x1f) & 0xfffffffc00000000 | uVar11 << 2; + uVar9 = *(int *)((long)param_1 + uVar10) - *(int *)((long)param_2 + uVar10); + uVar6 = (int)uVar9 >> 0x1f; + iVar5 = (uVar9 ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + if ((int)uVar11 + 1 < (int)uVar4) { + uVar9 = *(int *)((long)param_1 + uVar10 + 4) - *(int *)((long)param_2 + uVar10 + 4); + uVar6 = (int)uVar9 >> 0x1f; + iVar5 = (uVar9 ^ uVar6) - uVar6; + if (iVar17 < iVar5) { + iVar17 = iVar5; + } + if (((int)uVar11 + 2 < (int)uVar4) && + (uVar9 = *(int *)((long)param_1 + uVar10 + 8) - *(int *)((long)param_2 + uVar10 + 8), + uVar6 = (int)uVar9 >> 0x1f, iVar5 = (uVar9 ^ uVar6) - uVar6, iVar17 < iVar5)) { + iVar17 = iVar5; + } + } + } +LAB_0039f678: + lVar13 = lVar13 + 1; + param_1 = (int *)((long)param_1 + uVar14); + param_2 = (int *)((long)param_2 + uVar14); + } while ((int)lVar13 < param_5); + } + goto LAB_0039f8b8; + } + uVar4 = param_5 * uVar4; + iVar5 = 0; + if (0 < (int)uVar4) { + uVar9 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + if (uVar4 < uVar9) { + uVar9 = uVar4; + } + uVar14 = (ulong)uVar9; + if ((int)uVar4 < 6) { + uVar14 = (ulong)uVar4; +LAB_0039f6f8: + uVar9 = *param_1 - *param_2 >> 0x1f; + iVar5 = (*param_1 - *param_2 ^ uVar9) - uVar9; + if (iVar5 < 0) { + iVar5 = 0; + } + uVar9 = (uint)uVar14; + uVar11 = uVar14; + if (uVar9 != 1) { + uVar6 = param_1[1] - param_2[1] >> 0x1f; + iVar3 = (param_1[1] - param_2[1] ^ uVar6) - uVar6; + if (iVar5 < iVar3) { + iVar5 = iVar3; + } + if (uVar9 != 2) { + uVar6 = param_1[2] - param_2[2] >> 0x1f; + iVar3 = (param_1[2] - param_2[2] ^ uVar6) - uVar6; + if (iVar5 < iVar3) { + iVar5 = iVar3; + } + if (uVar9 != 3) { + uVar6 = param_1[3] - param_2[3] >> 0x1f; + iVar3 = (param_1[3] - param_2[3] ^ uVar6) - uVar6; + if (iVar5 < iVar3) { + iVar5 = iVar3; + } + if (uVar9 == 5) { + uVar6 = param_1[4] - param_2[4] >> 0x1f; + iVar3 = (param_1[4] - param_2[4] ^ uVar6) - uVar6; + if (iVar5 < iVar3) { + iVar5 = iVar3; + } + } + else { + uVar11 = 4; + } + } + } + } + if (uVar4 == uVar9) goto LAB_0039f8b0; + } + else { + uVar11 = 0; + if (uVar9 != 0) goto LAB_0039f6f8; + } + iVar1 = uVar4 - (int)uVar14; + uVar9 = (iVar1 - 4U >> 2) + 1; + iVar3 = uVar9 * 4; + if (2 < (uVar4 - 1) - (int)uVar14) { + auVar16._4_4_ = iVar5; + auVar16._0_4_ = iVar5; + auVar16._8_4_ = iVar5; + auVar16._12_4_ = iVar5; + uVar6 = 0; + piVar7 = param_2 + uVar14; + piVar12 = param_1 + uVar14; + do { + uVar6 = uVar6 + 1; + iVar5 = *piVar12; + iVar2 = piVar12[1]; + iVar20 = piVar12[2]; + iVar22 = piVar12[3]; + iVar21 = (int)*(undefined8 *)piVar7; + iVar23 = (int)((ulong)*(undefined8 *)piVar7 >> 0x20); + iVar24 = (int)*(undefined8 *)(piVar7 + 2); + iVar25 = (int)((ulong)*(undefined8 *)(piVar7 + 2) >> 0x20); + auVar19._0_4_ = (iVar5 - iVar21) + (iVar21 - iVar5) * 2 * (uint)(iVar5 < iVar21); + auVar19._4_4_ = (iVar2 - iVar23) + (iVar23 - iVar2) * 2 * (uint)(iVar2 < iVar23); + auVar19._8_4_ = + (iVar20 - iVar24) + + (int)(CONCAT44(iVar25 - iVar22,iVar24 - iVar20) >> 0x1e) * 2 * (uint)(iVar20 < iVar24); + auVar19._12_4_ = (iVar22 - iVar25) + (iVar25 - iVar22) * 2 * (uint)(iVar22 < iVar25); + auVar16 = NEON_smax(auVar16,auVar19,4); + piVar7 = piVar7 + 4; + piVar12 = piVar12 + 4; + } while (uVar6 < uVar9); + iVar5 = NEON_smaxv(auVar16,4); + uVar11 = (ulong)(uint)((int)uVar11 + iVar3); + if (iVar3 == iVar1) goto LAB_0039f8b0; + } + uVar14 = -(uVar11 >> 0x1f) & 0xfffffffc00000000 | uVar11 << 2; + uVar9 = *(int *)((long)param_1 + uVar14) - *(int *)((long)param_2 + uVar14); + uVar6 = (int)uVar9 >> 0x1f; + iVar3 = (uVar9 ^ uVar6) - uVar6; + if (iVar5 < iVar3) { + iVar5 = iVar3; + } + if ((int)uVar11 + 1 < (int)uVar4) { + uVar9 = *(int *)((long)param_1 + uVar14 + 4) - *(int *)((long)param_2 + uVar14 + 4); + uVar6 = (int)uVar9 >> 0x1f; + iVar3 = (uVar9 ^ uVar6) - uVar6; + if (iVar5 < iVar3) { + iVar5 = iVar3; + } + if (((int)uVar11 + 2 < (int)uVar4) && + (uVar4 = *(int *)((long)param_1 + uVar14 + 8) - *(int *)((long)param_2 + uVar14 + 8), + uVar9 = (int)uVar4 >> 0x1f, iVar3 = (uVar4 ^ uVar9) - uVar9, iVar5 < iVar3)) { + iVar5 = iVar3; + } + } + } +LAB_0039f8b0: + if (iVar17 < iVar5) { + iVar17 = iVar5; + } +LAB_0039f8b8: + *param_4 = iVar17; + return 0; +} + + +================================================================== + +### FUNC 0039f8f0 (332 bytes) name=FUN_0039f8f0 + +undefined8 FUN_0039f8f0(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint *puVar6; + int iVar8; + long lVar9; + long lVar10; + double dVar11; + double dVar12; + uint *puVar7; + + dVar11 = *param_3; + iVar8 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar10 = 0; + do { + if ((*(char *)(param_2 + lVar10) != '\0') && (0 < iVar8)) { + lVar9 = 0; + do { + uVar1 = *(uint *)(param_1 + lVar9 * 4); + lVar9 = lVar9 + 1; + uVar2 = (int)uVar1 >> 0x1f; + dVar11 = dVar11 + (double)(int)((uVar1 ^ uVar2) - uVar2); + } while ((int)lVar9 < iVar8); + } + lVar10 = lVar10 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2); + } while ((int)lVar10 < param_4); + } + *param_3 = dVar11; + return 0; + } + param_4 = param_4 * iVar8; + if (param_4 < 4) { + dVar12 = 0.0; + iVar8 = 0; + } + else { + dVar12 = 0.0; + uVar1 = param_4 - 4U >> 2; + puVar6 = (uint *)(param_1 + 4); + do { + puVar7 = puVar6 + 4; + uVar2 = (int)puVar6[-1] >> 0x1f; + uVar3 = (int)*puVar6 >> 0x1f; + uVar4 = (int)puVar6[1] >> 0x1f; + uVar5 = (int)puVar6[2] >> 0x1f; + dVar12 = dVar12 + (double)(int)((puVar6[-1] ^ uVar2) - uVar2) + + (double)(int)((*puVar6 ^ uVar3) - uVar3) + + (double)(int)((puVar6[1] ^ uVar4) - uVar4) + + (double)(int)((puVar6[2] ^ uVar5) - uVar5); + puVar6 = puVar7; + } while (puVar7 != (uint *)(param_1 + (ulong)uVar1 * 0x10 + 0x14)); + iVar8 = (uVar1 + 1) * 4; + } + if (iVar8 < param_4) { + puVar6 = (uint *)(param_1 + (long)iVar8 * 4); + do { + puVar7 = puVar6 + 1; + uVar1 = (int)*puVar6 >> 0x1f; + dVar12 = dVar12 + (double)(int)((*puVar6 ^ uVar1) - uVar1); + puVar6 = puVar7; + } while (puVar7 != (uint *)(param_1 + + ((long)iVar8 + 1 + (ulong)(uint)((param_4 + -1) - iVar8)) * 4)); + } + *param_3 = dVar11 + dVar12; + return 0; +} + + +================================================================== + +### FUNC 0039fa3c (384 bytes) name=FUN_0039fa3c + +undefined8 +FUN_0039fa3c(int *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + long lVar1; + int *piVar2; + uint uVar3; + uint uVar4; + ulong uVar5; + int iVar6; + long lVar7; + int *piVar8; + long lVar9; + int *piVar10; + ulong uVar11; + double dVar12; + double dVar13; + + dVar12 = *param_4; + iVar6 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar11 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < iVar6)) { + lVar7 = 0; + do { + lVar1 = lVar7 * 4; + piVar8 = param_1 + lVar7; + lVar7 = lVar7 + 1; + uVar3 = *piVar8 - *(int *)(param_2 + lVar1); + uVar4 = (int)uVar3 >> 0x1f; + dVar12 = dVar12 + (double)(int)((uVar3 ^ uVar4) - uVar4); + } while ((int)lVar7 < iVar6); + } + lVar9 = lVar9 + 1; + param_1 = (int *)((long)param_1 + uVar11); + param_2 = param_2 + uVar11; + } while ((int)lVar9 < param_5); + } + *param_4 = dVar12; + return 0; + } + param_5 = param_5 * iVar6; + if (param_5 < 4) { + dVar13 = 0.0; + uVar11 = 0; + } + else { + dVar13 = 0.0; + uVar3 = param_5 - 4U >> 2; + piVar8 = (int *)(param_2 + 4); + piVar10 = param_1; + do { + piVar2 = piVar8 + 4; + dVar13 = dVar13 + ABS((double)(*piVar10 - piVar8[-1])) + ABS((double)(piVar10[1] - *piVar8)) + + ABS((double)(piVar10[2] - piVar8[1])) + + ABS((double)(piVar10[3] - piVar8[2])); + piVar8 = piVar2; + piVar10 = piVar10 + 4; + } while (piVar2 != (int *)(param_2 + (ulong)uVar3 * 0x10 + 0x14)); + uVar11 = (ulong)((uVar3 + 1) * 4); + } + if ((int)uVar11 < param_5) { + uVar5 = -(uVar11 >> 0x1f) & 0xfffffffc00000000 | uVar11 << 2; + lVar9 = 0; + do { + lVar7 = lVar9 + uVar5; + piVar8 = (int *)(param_2 + uVar5 + lVar9); + lVar9 = lVar9 + 4; + dVar13 = dVar13 + ABS((double)(*(int *)((long)param_1 + lVar7) - *piVar8)); + } while (lVar9 != ((ulong)(uint)((param_5 + -1) - (int)uVar11) + 1) * 4); + } + *param_4 = dVar12 + dVar13; + return 0; +} + + +================================================================== + +### FUNC 0039fbbc (288 bytes) name=FUN_0039fbbc + +undefined8 FUN_0039fbbc(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + long lVar1; + uint uVar2; + int *piVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + int *piVar4; + + dVar9 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar7 = 0; + do { + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + lVar1 = lVar6 * 4; + lVar6 = lVar6 + 1; + dVar8 = (double)*(int *)(param_1 + lVar1); + dVar9 = dVar9 + dVar8 * dVar8; + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2); + } while ((int)lVar7 < param_4); + } + *param_3 = dVar9; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + dVar8 = 0.0; + iVar5 = 0; + } + else { + dVar8 = 0.0; + uVar2 = param_4 - 4U >> 2; + piVar3 = (int *)(param_1 + 4); + do { + piVar4 = piVar3 + 4; + dVar8 = dVar8 + (double)*piVar3 * (double)*piVar3 + (double)piVar3[-1] * (double)piVar3[-1] + + (double)piVar3[1] * (double)piVar3[1] + (double)piVar3[2] * (double)piVar3[2]; + piVar3 = piVar4; + } while (piVar4 != (int *)(param_1 + (ulong)uVar2 * 0x10 + 0x14)); + iVar5 = (uVar2 + 1) * 4; + } + if (iVar5 < param_4) { + piVar3 = (int *)(param_1 + (long)iVar5 * 4); + do { + piVar4 = piVar3 + 1; + dVar8 = dVar8 + (double)*piVar3 * (double)*piVar3; + piVar3 = piVar4; + } while (piVar4 != (int *)(param_1 + + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 4)); + } + *param_3 = dVar9 + dVar8; + return 0; +} + + +================================================================== + +### FUNC 0039fcdc (356 bytes) name=FUN_0039fcdc + +undefined8 +FUN_0039fcdc(int *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + long lVar1; + int *piVar2; + uint uVar3; + ulong uVar4; + int iVar5; + long lVar6; + int *piVar7; + long lVar8; + int *piVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + + dVar13 = *param_4; + iVar5 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar8 = 0; + do { + if ((*(char *)(param_3 + lVar8) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + piVar7 = param_1 + lVar6; + lVar1 = lVar6 * 4; + lVar6 = lVar6 + 1; + dVar11 = (double)(*piVar7 - *(int *)(param_2 + lVar1)); + dVar13 = dVar13 + dVar11 * dVar11; + } while ((int)lVar6 < iVar5); + } + lVar8 = lVar8 + 1; + param_1 = (int *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar8 < param_5); + } + *param_4 = dVar13; + return 0; + } + param_5 = param_5 * iVar5; + if (param_5 < 4) { + dVar11 = 0.0; + uVar10 = 0; + } + else { + dVar11 = 0.0; + uVar3 = param_5 - 4U >> 2; + piVar7 = (int *)(param_2 + 4); + piVar9 = param_1; + do { + piVar2 = piVar7 + 4; + dVar11 = dVar11 + (double)(piVar9[1] - *piVar7) * (double)(piVar9[1] - *piVar7) + + (double)(*piVar9 - piVar7[-1]) * (double)(*piVar9 - piVar7[-1]) + + (double)(piVar9[2] - piVar7[1]) * (double)(piVar9[2] - piVar7[1]) + + (double)(piVar9[3] - piVar7[2]) * (double)(piVar9[3] - piVar7[2]); + piVar7 = piVar2; + piVar9 = piVar9 + 4; + } while (piVar2 != (int *)(param_2 + (ulong)uVar3 * 0x10 + 0x14)); + uVar10 = (ulong)((uVar3 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar4 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + lVar8 = 0; + do { + lVar6 = lVar8 + uVar4; + piVar7 = (int *)(param_2 + uVar4 + lVar8); + lVar8 = lVar8 + 4; + dVar12 = (double)(*(int *)((long)param_1 + lVar6) - *piVar7); + dVar11 = dVar11 + dVar12 * dVar12; + } while (lVar8 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 4); + } + *param_4 = dVar13 + dVar11; + return 0; +} + + +================================================================== + +### FUNC 0039fe40 (188 bytes) name=FUN_0039fe40 + +undefined8 +FUN_0039fe40(long param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + long lVar1; + long lVar2; + int iVar3; + long lVar4; + long lVar5; + ulong uVar6; + double dVar7; + double dVar8; + double dVar9; + + dVar7 = *param_4; + iVar3 = (int)param_6; + if (param_3 == 0) { + dVar8 = 0.0; + lVar5 = 0; + dVar9 = dVar8; + if (0 < param_5 * iVar3) { + do { + lVar4 = lVar5 * 8; + lVar1 = lVar5 * 8; + lVar5 = lVar5 + 1; + dVar8 = ABS(*(double *)(param_1 + lVar4) - *(double *)(param_2 + lVar1)); + if (dVar8 <= dVar9) { + dVar8 = dVar9; + } + dVar9 = dVar8; + } while ((int)lVar5 < param_5 * iVar3); + } + if (dVar7 < dVar8) { + dVar7 = dVar8; + } + } + else if (0 < param_5) { + uVar6 = -(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3; + lVar5 = 0; + do { + if ((*(char *)(param_3 + lVar5) != '\0') && (0 < iVar3)) { + lVar4 = 0; + dVar8 = dVar7; + do { + lVar1 = lVar4 * 8; + lVar2 = lVar4 * 8; + lVar4 = lVar4 + 1; + dVar7 = ABS(*(double *)(param_1 + lVar1) - *(double *)(param_2 + lVar2)); + if (dVar7 <= dVar8) { + dVar7 = dVar8; + } + dVar8 = dVar7; + } while ((int)lVar4 < iVar3); + } + lVar5 = lVar5 + 1; + param_1 = param_1 + uVar6; + param_2 = param_2 + uVar6; + } while ((int)lVar5 < param_5); + } + *param_4 = dVar7; + return 0; +} + + +================================================================== + +### FUNC 0039fefc (288 bytes) name=FUN_0039fefc + +undefined8 FUN_0039fefc(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + long lVar2; + double *pdVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + double *pdVar4; + + dVar8 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar7 = 0; + do { + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + lVar2 = lVar6 * 8; + lVar6 = lVar6 + 1; + dVar8 = dVar8 + ABS(*(double *)(param_1 + lVar2)); + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | + (param_5 & 0xffffffff) << 3); + } while ((int)lVar7 < param_4); + } + *param_3 = dVar8; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + dVar9 = 0.0; + iVar5 = 0; + } + else { + uVar1 = param_4 - 4U >> 2; + dVar9 = 0.0; + pdVar3 = (double *)(param_1 + 8); + do { + pdVar4 = pdVar3 + 4; + dVar9 = dVar9 + ABS(pdVar3[-1]) + ABS(*pdVar3) + ABS(pdVar3[1]) + ABS(pdVar3[2]); + pdVar3 = pdVar4; + } while (pdVar4 != (double *)(param_1 + (ulong)uVar1 * 0x20 + 0x28)); + iVar5 = (uVar1 + 1) * 4; + } + if (iVar5 < param_4) { + pdVar3 = (double *)(param_1 + (long)iVar5 * 8); + do { + pdVar4 = pdVar3 + 1; + dVar9 = dVar9 + ABS(*pdVar3); + pdVar3 = pdVar4; + } while (pdVar4 != (double *) + (param_1 + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 8)); + } + *param_3 = dVar8 + dVar9; + return 0; +} + + +================================================================== + +### FUNC 003a001c (332 bytes) name=FUN_003a001c + +undefined8 +FUN_003a001c(double *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + double *pdVar1; + uint uVar2; + long lVar3; + double *pdVar4; + ulong uVar5; + int iVar6; + long lVar7; + double *pdVar8; + long lVar9; + ulong uVar10; + double dVar11; + double dVar12; + + dVar11 = *param_4; + iVar6 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < iVar6)) { + lVar7 = 0; + do { + pdVar4 = param_1 + lVar7; + lVar3 = lVar7 * 8; + lVar7 = lVar7 + 1; + dVar11 = dVar11 + ABS(*pdVar4 - *(double *)(param_2 + lVar3)); + } while ((int)lVar7 < iVar6); + } + lVar9 = lVar9 + 1; + param_1 = (double *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar9 < param_5); + } + *param_4 = dVar11; + return 0; + } + param_5 = param_5 * iVar6; + if (param_5 < 4) { + dVar12 = 0.0; + uVar10 = 0; + } + else { + uVar2 = param_5 - 4U >> 2; + dVar12 = 0.0; + pdVar4 = (double *)(param_2 + 8); + pdVar8 = param_1; + do { + pdVar1 = pdVar4 + 4; + dVar12 = dVar12 + ABS(*pdVar8 - pdVar4[-1]) + ABS(pdVar8[1] - *pdVar4) + + ABS(pdVar8[2] - pdVar4[1]) + ABS(pdVar8[3] - pdVar4[2]); + pdVar4 = pdVar1; + pdVar8 = pdVar8 + 4; + } while (pdVar1 != (double *)(param_2 + (ulong)uVar2 * 0x20 + 0x28)); + uVar10 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar5 = -(uVar10 >> 0x1f) & 0xfffffff800000000 | uVar10 << 3; + lVar9 = 0; + do { + lVar7 = lVar9 + uVar5; + pdVar4 = (double *)(param_2 + uVar5 + lVar9); + lVar9 = lVar9 + 8; + dVar12 = dVar12 + ABS(*(double *)((long)param_1 + lVar7) - *pdVar4); + } while (lVar9 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 8); + } + *param_4 = dVar11 + dVar12; + return 0; +} + + +================================================================== + +### FUNC 003a0168 (268 bytes) name=FUN_003a0168 + +undefined8 FUN_003a0168(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + double *pdVar2; + int iVar4; + long lVar5; + long lVar6; + double dVar7; + double dVar8; + double *pdVar3; + + dVar8 = *param_3; + iVar4 = (int)param_5; + if (param_2 != 0) { + /* catch() { ... } // from try @ 003a0298 with catch @ 003a0170 + catch() { ... } // from try @ 003a106c with catch @ 003a0170 + catch() { ... } // from try @ 003a1194 with catch @ 003a0170 */ + if (0 < param_4) { + lVar6 = 0; + do { + if ((*(char *)(param_2 + lVar6) != '\0') && (0 < iVar4)) { + lVar5 = 0; + do { + dVar7 = *(double *)(param_1 + lVar5 * 8); + lVar5 = lVar5 + 1; + dVar8 = dVar8 + dVar7 * dVar7; + } while ((int)lVar5 < iVar4); + } + lVar6 = lVar6 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffff800000000 | + (param_5 & 0xffffffff) << 3); + } while ((int)lVar6 < param_4); + } + *param_3 = dVar8; + return 0; + } + param_4 = param_4 * iVar4; + if (param_4 < 4) { + dVar7 = 0.0; + iVar4 = 0; + } + else { + uVar1 = param_4 - 4U >> 2; + dVar7 = 0.0; + pdVar2 = (double *)(param_1 + 8); + do { + pdVar3 = pdVar2 + 4; + dVar7 = dVar7 + *pdVar2 * *pdVar2 + pdVar2[-1] * pdVar2[-1] + pdVar2[1] * pdVar2[1] + + pdVar2[2] * pdVar2[2]; + pdVar2 = pdVar3; + } while (pdVar3 != (double *)(param_1 + (ulong)uVar1 * 0x20 + 0x28)); + iVar4 = (uVar1 + 1) * 4; + } + if (iVar4 < param_4) { + pdVar2 = (double *)(param_1 + (long)iVar4 * 8); + do { + pdVar3 = pdVar2 + 1; + dVar7 = dVar7 + *pdVar2 * *pdVar2; + pdVar2 = pdVar3; + } while (pdVar3 != (double *) + (param_1 + ((long)iVar4 + 1 + (ulong)(uint)((param_4 + -1) - iVar4)) * 8)); + } + *param_3 = dVar8 + dVar7; + return 0; +} + + +================================================================== + +### FUNC 003a0274 (336 bytes) name=FUN_003a0274 + +undefined8 +FUN_003a0274(double *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + double *pdVar1; + uint uVar2; + long lVar3; + double *pdVar4; + ulong uVar5; + int iVar6; + long lVar7; + double *pdVar8; + long lVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + + dVar13 = *param_4; + iVar6 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffff800000000 | (param_6 & 0xffffffff) << 3; + lVar9 = 0; + do { + /* try { // try from 003a0298 to 004a101b has its CatchHandler @ 003a0170 */ + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < iVar6)) { + lVar7 = 0; + do { + pdVar4 = param_1 + lVar7; + lVar3 = lVar7 * 8; + lVar7 = lVar7 + 1; + dVar11 = *pdVar4 - *(double *)(param_2 + lVar3); + dVar13 = dVar13 + dVar11 * dVar11; + } while ((int)lVar7 < iVar6); + } + lVar9 = lVar9 + 1; + param_1 = (double *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar9 < param_5); + } + *param_4 = dVar13; + return 0; + } + param_5 = param_5 * iVar6; + if (param_5 < 4) { + dVar11 = 0.0; + uVar10 = 0; + } + else { + uVar2 = param_5 - 4U >> 2; + dVar11 = 0.0; + pdVar4 = (double *)(param_2 + 8); + pdVar8 = param_1; + do { + pdVar1 = pdVar4 + 4; + dVar11 = dVar11 + (pdVar8[1] - *pdVar4) * (pdVar8[1] - *pdVar4) + + (*pdVar8 - pdVar4[-1]) * (*pdVar8 - pdVar4[-1]) + + (pdVar8[2] - pdVar4[1]) * (pdVar8[2] - pdVar4[1]) + + (pdVar8[3] - pdVar4[2]) * (pdVar8[3] - pdVar4[2]); + pdVar4 = pdVar1; + pdVar8 = pdVar8 + 4; + } while (pdVar1 != (double *)(param_2 + (ulong)uVar2 * 0x20 + 0x28)); + uVar10 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar5 = -(uVar10 >> 0x1f) & 0xfffffff800000000 | uVar10 << 3; + lVar9 = 0; + do { + lVar7 = lVar9 + uVar5; + pdVar4 = (double *)(param_2 + uVar5 + lVar9); + lVar9 = lVar9 + 8; + dVar12 = *(double *)((long)param_1 + lVar7) - *pdVar4; + dVar11 = dVar11 + dVar12 * dVar12; + } while (lVar9 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 8); + } + *param_4 = dVar13 + dVar11; + return 0; +} + + +================================================================== + +### FUNC 003a03c4 (1120 bytes) name=FUN_003a03c4 + +int FUN_003a03c4(float *param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + float *pfVar8; + int iVar15; + float *pfVar16; + uint uVar17; + int iVar18; + uint uVar19; + ulong uVar20; + uint3 uVar21; + int iVar22; + undefined8 uVar23; + uint3 uVar24; + undefined8 uVar25; + int iVar26; + uint uVar27; + int iVar28; + int iVar29; + int iVar30; + undefined1 uVar31; + undefined1 uVar32; + undefined1 uVar33; + undefined1 uVar34; + undefined1 uVar35; + undefined1 uVar36; + undefined1 uVar37; + undefined1 uVar38; + undefined1 uVar39; + undefined1 uVar40; + undefined1 uVar41; + undefined1 uVar42; + undefined1 uVar43; + undefined1 uVar44; + undefined1 uVar45; + undefined1 uVar46; + float fVar47; + float fVar48; + float fVar49; + float fVar50; + float fVar51; + float fVar52; + float fVar53; + float fVar54; + float fVar55; + int iStack_c; + int iStack_4; + float *pfVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + float *pfVar13; + float *pfVar14; + + uVar27 = param_2 & 0xfffffff8; + uVar31 = 0; + uVar32 = 0; + uVar33 = 0; + uVar34 = 0; + uVar35 = 0; + uVar36 = 0; + uVar37 = 0; + uVar38 = 0; + uVar39 = 0; + uVar40 = 0; + uVar41 = 0; + uVar42 = 0; + uVar43 = 0; + uVar44 = 0; + uVar45 = 0; + uVar46 = 0; + iVar15 = 0; + if (0 < (int)uVar27) { + do { + iVar4 = uVar27 - iVar15; + if (0x200000 < iVar4) { + iVar4 = 0x200000; + } + if (0 < iVar4) { + iVar18 = 0; + do { + iVar5 = iVar4 - iVar18; + if (0x8000 < iVar5) { + iVar5 = 0x8000; + } + if (iVar5 < 8) { + uVar23 = 0; + uVar25 = 0; + } + else { + uVar23 = 0; + uVar25 = 0; + pfVar16 = param_1 + 4; + do { + pfVar8 = pfVar16 + 8; + uVar21 = CONCAT12(-((float)((ulong)*(undefined8 *)(pfVar16 + -4) >> 0x20) == 0.0), + (ushort)(-((float)*(undefined8 *)(pfVar16 + -4) == 0.0) & 1)) & + 0x1ffff; + uVar24 = CONCAT12(-((float)((ulong)*(undefined8 *)pfVar16 >> 0x20) == 0.0), + (ushort)(-((float)*(undefined8 *)pfVar16 == 0.0) & 1)) & 0x1ffff; + uVar23 = CONCAT26((short)((ulong)uVar23 >> 0x30) + + (ushort)(-((float)((ulong)*(undefined8 *)(pfVar16 + -2) >> 0x20) == + 0.0) & 1), + CONCAT24((short)((ulong)uVar23 >> 0x20) + + (ushort)(-((float)*(undefined8 *)(pfVar16 + -2) == 0.0) & 1 + ), + CONCAT22((short)((ulong)uVar23 >> 0x10) + + (ushort)(byte)(uVar21 >> 0x10), + (short)uVar23 + (short)uVar21))); + uVar25 = CONCAT26((short)((ulong)uVar25 >> 0x30) + + (ushort)(-((float)((ulong)*(undefined8 *)(pfVar16 + 2) >> 0x20) == + 0.0) & 1), + CONCAT24((short)((ulong)uVar25 >> 0x20) + + (ushort)(-((float)*(undefined8 *)(pfVar16 + 2) == 0.0) & 1) + ,CONCAT22((short)((ulong)uVar25 >> 0x10) + + (ushort)(byte)(uVar24 >> 0x10), + (short)uVar25 + (short)uVar24))); + pfVar16 = pfVar8; + } while (pfVar8 != param_1 + (ulong)(iVar5 - 8U >> 3) * 8 + 0xc); + } + iVar18 = iVar18 + iVar5; + param_1 = param_1 + iVar5; + iVar5 = CONCAT13(uVar34,CONCAT12(uVar33,CONCAT11(uVar32,uVar31))) + + (uint)(ushort)uVar23 + (uint)(ushort)uVar25; + uVar31 = (undefined1)iVar5; + uVar32 = (undefined1)((uint)iVar5 >> 8); + uVar33 = (undefined1)((uint)iVar5 >> 0x10); + uVar34 = (undefined1)((uint)iVar5 >> 0x18); + iVar5 = CONCAT13(uVar38,CONCAT12(uVar37,CONCAT11(uVar36,uVar35))) + + (uint)(ushort)((ulong)uVar23 >> 0x10) + (uint)(ushort)((ulong)uVar25 >> 0x10); + uVar35 = (undefined1)iVar5; + uVar36 = (undefined1)((uint)iVar5 >> 8); + uVar37 = (undefined1)((uint)iVar5 >> 0x10); + uVar38 = (undefined1)((uint)iVar5 >> 0x18); + iVar5 = CONCAT13(uVar42,CONCAT12(uVar41,CONCAT11(uVar40,uVar39))) + + (uint)(ushort)((ulong)uVar23 >> 0x20) + (uint)(ushort)((ulong)uVar25 >> 0x20); + uVar39 = (undefined1)iVar5; + uVar40 = (undefined1)((uint)iVar5 >> 8); + uVar41 = (undefined1)((uint)iVar5 >> 0x10); + uVar42 = (undefined1)((uint)iVar5 >> 0x18); + iVar5 = CONCAT13(uVar46,CONCAT12(uVar45,CONCAT11(uVar44,uVar43))) + + (uint)(ushort)((ulong)uVar23 >> 0x30) + (uint)(ushort)((ulong)uVar25 >> 0x30); + uVar43 = (undefined1)iVar5; + uVar44 = (undefined1)((uint)iVar5 >> 8); + uVar45 = (undefined1)((uint)iVar5 >> 0x10); + uVar46 = (undefined1)((uint)iVar5 >> 0x18); + } while (iVar18 < iVar4); + } + iVar15 = iVar15 + iVar4; + } while (iVar15 < (int)uVar27); + } + iVar18 = param_2 - iVar15; + iVar4 = iVar18 + -3; + iVar7 = CONCAT13(uVar42,CONCAT12(uVar41,CONCAT11(uVar40,uVar39))); + iVar5 = CONCAT13(uVar34,CONCAT12(uVar33,CONCAT11(uVar32,uVar31))); + iStack_c = (int)(CONCAT17(uVar38,CONCAT16(uVar37,CONCAT15(uVar36,CONCAT14(uVar35,iVar5)))) >> 0x20 + ); + iStack_4 = (int)(CONCAT17(uVar46,CONCAT16(uVar45,CONCAT15(uVar44,CONCAT14(uVar43,iVar7)))) >> 0x20 + ); + if (iVar4 < 1) { + uVar27 = 0; + uVar1 = uVar27; + } + else { + uVar27 = iVar18 - 4U >> 2; + iVar22 = uVar27 + 1; + uVar1 = (uVar27 - 3 >> 2) + 1; + if (iVar18 - 4U < 0xc) { + uVar27 = 0; + uVar2 = uVar27; +LAB_003a057c: + uVar20 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar1 = uVar2 + 4; + uVar27 = uVar27 + (uint)(*(float *)((long)param_1 + uVar20) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 4) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 8) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 0xc) != 0.0); + if ((int)uVar1 < iVar4) { + uVar20 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar2 = uVar2 + 8; + uVar27 = uVar27 + (uint)(*(float *)((long)param_1 + uVar20) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 4) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 8) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 0xc) != 0.0); + if ((int)uVar2 < iVar4) { + uVar20 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar27 = uVar27 + (uint)(*(float *)((long)param_1 + uVar20) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 4) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 8) != 0.0) + + (uint)(*(float *)((long)param_1 + uVar20 + 0xc) != 0.0); + } + } + } + else { + iVar26 = 0; + iVar28 = 0; + iVar29 = 0; + iVar30 = 0; + uVar27 = 0; + pfVar16 = param_1; + do { + fVar47 = *pfVar16; + pfVar8 = pfVar16 + 1; + pfVar9 = pfVar16 + 2; + pfVar10 = pfVar16 + 3; + fVar48 = pfVar16[4]; + fVar50 = pfVar16[5]; + fVar52 = pfVar16[6]; + fVar54 = pfVar16[7]; + pfVar11 = pfVar16 + 8; + pfVar12 = pfVar16 + 9; + pfVar13 = pfVar16 + 10; + pfVar14 = pfVar16 + 0xb; + fVar49 = pfVar16[0xc]; + fVar51 = pfVar16[0xd]; + fVar53 = pfVar16[0xe]; + fVar55 = pfVar16[0xf]; + pfVar16 = pfVar16 + 0x10; + uVar27 = uVar27 + 1; + iVar26 = iVar26 + (uint)(~-(fVar47 == 0.0) & 1) + (uint)(~-(*pfVar8 == 0.0) & 1) + + (uint)(~-(*pfVar9 == 0.0) & 1) + (uint)(~-(*pfVar10 == 0.0) & 1); + iVar28 = iVar28 + (uint)(~-((float)(CONCAT17((char)((uint)fVar48 >> 0x18), + CONCAT16((char)((uint)fVar48 >> 0x10), + CONCAT15((char)((uint)fVar48 >> 8), + CONCAT14(SUB41(fVar48,0), + fVar47)))) >> 0x20) + == 0.0) & 1) + + (uint)(~-((float)(CONCAT17((char)((uint)fVar50 >> 0x18), + CONCAT16((char)((uint)fVar50 >> 0x10), + CONCAT15((char)((uint)fVar50 >> 8), + CONCAT14(SUB41(fVar50,0), + *pfVar8)))) >> 0x20) + == 0.0) & 1) + + (uint)(~-((float)(CONCAT17((char)((uint)fVar52 >> 0x18), + CONCAT16((char)((uint)fVar52 >> 0x10), + CONCAT15((char)((uint)fVar52 >> 8), + CONCAT14(SUB41(fVar52,0), + *pfVar9)))) >> 0x20) + == 0.0) & 1) + + (uint)(~-((float)(CONCAT17((char)((uint)fVar54 >> 0x18), + CONCAT16((char)((uint)fVar54 >> 0x10), + CONCAT15((char)((uint)fVar54 >> 8), + CONCAT14(SUB41(fVar54,0), + *pfVar10)))) >> 0x20 + ) == 0.0) & 1); + iVar29 = iVar29 + (uint)(~-(*pfVar11 == 0.0) & 1) + (uint)(~-(*pfVar12 == 0.0) & 1) + + (uint)(~-(*pfVar13 == 0.0) & 1) + (uint)(~-(*pfVar14 == 0.0) & 1); + iVar30 = iVar30 + (uint)(~-((float)(CONCAT17((char)((uint)fVar49 >> 0x18), + CONCAT16((char)((uint)fVar49 >> 0x10), + CONCAT15((char)((uint)fVar49 >> 8), + CONCAT14(SUB41(fVar49,0), + *pfVar11)))) >> 0x20 + ) == 0.0) & 1) + + (uint)(~-((float)(CONCAT17((char)((uint)fVar51 >> 0x18), + CONCAT16((char)((uint)fVar51 >> 0x10), + CONCAT15((char)((uint)fVar51 >> 8), + CONCAT14(SUB41(fVar51,0), + *pfVar12)))) >> 0x20 + ) == 0.0) & 1) + + (uint)(~-((float)(CONCAT17((char)((uint)fVar53 >> 0x18), + CONCAT16((char)((uint)fVar53 >> 0x10), + CONCAT15((char)((uint)fVar53 >> 8), + CONCAT14(SUB41(fVar53,0), + *pfVar13)))) >> 0x20 + ) == 0.0) & 1) + + (uint)(~-((float)(CONCAT17((char)((uint)fVar55 >> 0x18), + CONCAT16((char)((uint)fVar55 >> 0x10), + CONCAT15((char)((uint)fVar55 >> 8), + CONCAT14(SUB41(fVar55,0), + *pfVar14)))) >> 0x20 + ) == 0.0) & 1); + } while (uVar27 < uVar1); + uVar27 = iVar26 + iVar28 + iVar29 + iVar30; + uVar2 = uVar1 * 0x10; + if (uVar1 * 4 != iVar22) goto LAB_003a057c; + } + uVar1 = iVar22 * 4; + } + if ((int)uVar1 < iVar18) { + uVar6 = iVar18 - uVar1; + pfVar16 = param_1 + (int)uVar1; + uVar2 = -((uint)((ulong)pfVar16 >> 2) & 3) & 3; + uVar20 = (ulong)uVar2; + if (uVar6 < uVar2) { + uVar20 = (ulong)uVar6; + } + if (uVar6 < 6) { + uVar20 = (ulong)uVar6; + } + uVar17 = (uint)uVar20; + uVar2 = uVar1; + if (uVar17 != 0) { + uVar2 = uVar1 + 1; + uVar27 = uVar27 + (*pfVar16 != 0.0); + if (uVar17 != 1) { + uVar2 = uVar1 + 2; + uVar27 = uVar27 + (pfVar16[1] != 0.0); + if (uVar17 != 2) { + uVar2 = uVar1 + 3; + uVar27 = uVar27 + (pfVar16[2] != 0.0); + if (uVar17 != 3) { + uVar2 = uVar1 + 4; + uVar27 = uVar27 + (pfVar16[3] != 0.0); + if (uVar17 == 5) { + uVar2 = uVar1 + 5; + uVar27 = uVar27 + (pfVar16[4] != 0.0); + } + } + } + } + if (uVar17 == uVar6) goto LAB_003a07ec; + } + uVar3 = ((uVar6 - uVar17) - 4 >> 2) + 1; + iVar4 = uVar3 * 4; + if (2 < (uVar6 - 1) - uVar17) { + iVar22 = 0; + iVar26 = 0; + iVar28 = 0; + iVar29 = 0; + uVar19 = 0; + pfVar16 = param_1 + uVar20 + (long)(int)uVar1; + do { + uVar19 = uVar19 + 1; + iVar22 = iVar22 + (uint)(~-((float)*(undefined8 *)pfVar16 == 0.0) & 1); + iVar26 = iVar26 + (uint)(~-((float)((ulong)*(undefined8 *)pfVar16 >> 0x20) == 0.0) & 1); + iVar28 = iVar28 + (uint)(~-((float)*(undefined8 *)(pfVar16 + 2) == 0.0) & 1); + iVar29 = iVar29 + (uint)(~-((float)((ulong)*(undefined8 *)(pfVar16 + 2) >> 0x20) == 0.0) & 1 + ); + pfVar16 = pfVar16 + 4; + } while (uVar19 < uVar3); + uVar2 = uVar2 + iVar4; + uVar27 = uVar27 + iVar22 + iVar26 + iVar28 + iVar29; + if (iVar4 == uVar6 - uVar17) goto LAB_003a07ec; + } + uVar20 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar27 = uVar27 + (*(float *)((long)param_1 + uVar20) != 0.0); + if (((int)(uVar2 + 1) < iVar18) && + (uVar27 = uVar27 + (*(float *)((long)param_1 + uVar20 + 4) != 0.0), (int)(uVar2 + 2) < iVar18 + )) { + uVar27 = uVar27 + (*(float *)((long)param_1 + uVar20 + 8) != 0.0); + } + } +LAB_003a07ec: + return (iVar15 - (iStack_c + iVar5 + iVar7 + iStack_4)) + uVar27; +} + + +================================================================== + +### FUNC 003a0824 name=FUN_003a0824 DECOMPILE FAILED + +### FUNC 003a0e24 (1600 bytes) name=FUN_003a0e24 + +int FUN_003a0e24(undefined8 *param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + undefined8 *puVar5; + uint uVar6; + int iVar7; + long lVar8; + int iVar9; + byte bVar10; + char cVar11; + char cVar20; + uint7 uVar12; + char cVar15; + char cVar16; + char cVar17; + char cVar18; + char cVar19; + undefined8 uVar13; + ulong uVar14; + char cVar21; + byte bVar22; + char cVar23; + char cVar28; + char cVar33; + uint7 uVar24; + byte bVar27; + char cVar29; + char cVar30; + char cVar31; + char cVar32; + undefined8 uVar25; + byte bVar34; + ulong uVar26; + char cVar35; + int iVar36; + int iVar37; + int iVar38; + int iVar39; + ulong uVar40; + ulong uVar41; + undefined1 uVar42; + undefined1 uVar43; + undefined1 uVar44; + undefined1 uVar45; + undefined1 uVar46; + undefined1 uVar47; + undefined1 uVar48; + undefined1 uVar49; + undefined1 uVar50; + undefined1 uVar51; + undefined1 uVar52; + undefined1 uVar53; + undefined1 uVar54; + undefined1 uVar55; + undefined1 uVar56; + undefined1 uVar57; + int local_10; + int iStack_c; + int iStack_8; + int iStack_4; + + uVar4 = param_2 & 0xfffffff0; + if ((int)uVar4 < 1) { + uVar13 = 0; + uVar25 = 0; + iVar9 = 0; + } + else { + uVar42 = 0; + uVar43 = 0; + uVar44 = 0; + uVar45 = 0; + uVar46 = 0; + uVar47 = 0; + uVar48 = 0; + uVar49 = 0; + uVar50 = 0; + uVar51 = 0; + uVar52 = 0; + uVar53 = 0; + uVar54 = 0; + uVar55 = 0; + uVar56 = 0; + uVar57 = 0; + iVar9 = 0; + puVar5 = param_1; + do { + iVar3 = uVar4 - iVar9; + if (0x3c00 < iVar3) { + iVar3 = 0x3c00; + } + if (0 < iVar3) { + iVar7 = 0; + do { + iVar36 = iVar3 - iVar7; + if (0xf0 < iVar36) { + iVar36 = 0xf0; + } + iVar37 = iVar36 + -0xf; + if (iVar37 < 1) { + uVar14 = 0; + uVar26 = 0; + } + else { + uVar25 = puVar5[1]; + uVar13 = *puVar5; + bVar10 = -((char)uVar13 == '\0'); + bVar22 = -((char)uVar25 == '\0'); + bVar27 = -((char)((ulong)uVar25 >> 8) == '\0'); + bVar34 = -((char)((ulong)uVar25 >> 0x38) == '\0'); + uVar14 = CONCAT17(-((char)((ulong)uVar13 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar13 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar13 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == + '\0'),CONCAT12(-((char)((ulong) + uVar13 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 8) == '\0'), + bVar10))))))) & 0x101010101010101; + uVar26 = CONCAT17(bVar34,CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == + '\0'),CONCAT13(-((char)((ulong) + uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(bVar27,bVar22))))))) & + 0x101010101010101; + if (0x10 < iVar37) { + uVar25 = puVar5[3]; + uVar13 = puVar5[2]; + uVar40 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 0x30) == + '\0'),-((char)((ulong)uVar13 >> + 0x28) == '\0'))) << + 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 8) == '\0'), + -((char)uVar13 == '\0'))))) & + 0xffffffff01010101; + uVar40 = CONCAT17((char)(uVar40 >> 0x38), + CONCAT16((char)(uVar40 >> 0x30), + CONCAT15((char)(uVar40 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) == '\0'), + (int)uVar40)))) & 0x1010101ffffffff; + uVar41 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) + == '\0'), + CONCAT12(-((char)((ulong)uVar25 + >> 0x10) == + '\0'),CONCAT11(-((char + )((ulong)uVar25 >> 8) == '\0'), + -((char)uVar25 == '\0')))))))) & 0x101010101010101 + ; + cVar11 = (bVar10 & 1) + (char)uVar40; + cVar15 = (char)(uVar14 >> 8) + (char)(uVar40 >> 8); + cVar16 = (char)(uVar14 >> 0x10) + (char)(uVar40 >> 0x10); + cVar17 = (char)(uVar14 >> 0x18) + (char)(uVar40 >> 0x18); + cVar18 = (char)(uVar14 >> 0x20) + (char)(uVar40 >> 0x20); + cVar19 = (char)(uVar14 >> 0x28) + (char)(uVar40 >> 0x28); + cVar20 = (char)(uVar14 >> 0x30) + (char)(uVar40 >> 0x30); + cVar21 = (char)(uVar14 >> 0x38) + (char)(uVar40 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18,CONCAT13( + cVar17,CONCAT12(cVar16,CONCAT11(cVar15,cVar11))))) + )); + cVar23 = (bVar22 & 1) + (char)uVar41; + cVar28 = (bVar27 & 1) + (char)(uVar41 >> 8); + cVar29 = (char)(uVar26 >> 0x10) + (char)(uVar41 >> 0x10); + cVar30 = (char)(uVar26 >> 0x18) + (char)(uVar41 >> 0x18); + cVar31 = (char)(uVar26 >> 0x20) + (char)(uVar41 >> 0x20); + cVar32 = (char)(uVar26 >> 0x28) + (char)(uVar41 >> 0x28); + cVar33 = (char)(uVar26 >> 0x30) + (char)(uVar41 >> 0x30); + cVar35 = (bVar34 & 1) + (char)(uVar41 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31,CONCAT13( + cVar30,CONCAT12(cVar29,CONCAT11(cVar28,cVar23))))) + )); + if (0x20 < iVar37) { + uVar25 = puVar5[5]; + uVar13 = puVar5[4]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 0x30) == + '\0'),-((char)((ulong)uVar13 >> + 0x28) == '\0'))) << + 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 8) == '\0'), + -((char)uVar13 == '\0'))))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) == '\0' + ),(int)uVar14)))) & 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == '\0' + ),CONCAT13(-((char)((ulong)uVar25 >> + 0x18) == '\0'), + CONCAT12(-((char)((ulong) + uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == '\0'), + -((char)uVar25 == '\0')))))))) & + 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18,CONCAT13( + cVar17,CONCAT12(cVar16,CONCAT11(cVar15,cVar11))))) + )); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31,CONCAT13( + cVar30,CONCAT12(cVar29,CONCAT11(cVar28,cVar23))))) + )); + if (0x30 < iVar37) { + uVar25 = puVar5[7]; + uVar13 = puVar5[6]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 0x30) + == '\0'), + -((char)((ulong)uVar13 >> 0x28) + == '\0'))) << 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 8) == '\0') + ,-((char)uVar13 == '\0'))))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) == + '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == + '\0'),CONCAT13(-((char)((ulong) + uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == + '\0'),-((char)uVar25 == '\0'))) + ))))) & 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18,CONCAT13( + cVar17,CONCAT12(cVar16,CONCAT11(cVar15,cVar11))))) + )); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31,CONCAT13( + cVar30,CONCAT12(cVar29,CONCAT11(cVar28,cVar23))))) + )); + if (0x40 < iVar37) { + uVar25 = puVar5[9]; + uVar13 = puVar5[8]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) == '\0' + ),CONCAT11(-((char)((ulong)uVar13 >> + 0x30) == '\0'), + -((char)((ulong)uVar13 >> + 0x28) == '\0'))) << + 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 8) == + '\0'),-((char)uVar13 == '\0'))))) + & 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) == + '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == + '\0'),CONCAT13(-((char)((ulong) + uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == + '\0'),-((char)uVar25 == '\0'))) + ))))) & 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18, + CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11(cVar15, + cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31, + CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11(cVar28, + cVar23))))))); + if (0x50 < iVar37) { + uVar25 = puVar5[0xb]; + uVar13 = puVar5[10]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) == + '\0'),CONCAT11(-((char)((ulong) + uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0'))) << 0x28 + ) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 8) == + '\0'),-((char)uVar13 == '\0')))) + ) & 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) + == '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) + == '\0'), + CONCAT13(-((char)((ulong)uVar25 + >> 0x18) == '\0' + ),CONCAT12(-((char)(( + ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == '\0'), + -((char)uVar25 == '\0')))))))) & + 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18, + CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11(cVar15, + cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31, + CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11(cVar28, + cVar23))))))); + if (0x60 < iVar37) { + uVar25 = puVar5[0xd]; + uVar13 = puVar5[0xc]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) == + '\0'),CONCAT11(-((char)((ulong) + uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0'))) << 0x28 + ) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == '\0') + ,CONCAT11(-((char)((ulong)uVar13 >> 8) + == '\0'), + -((char)uVar13 == '\0'))))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> 0x20) + == '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == '\0') + ,CONCAT14(-((char)((ulong)uVar25 >> 0x20 + ) == '\0'), + CONCAT13(-((char)((ulong) + uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == + '\0'),-((char)uVar25 == '\0'))) + ))))) & 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18, + CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11(cVar15, + cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31, + CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11(cVar28, + cVar23))))))); + if (0x70 < iVar37) { + uVar25 = puVar5[0xf]; + uVar13 = puVar5[0xe]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 0x30) == '\0' + ),-((char)((ulong) + uVar13 >> 0x28) == '\0'))) << 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == + '\0'),CONCAT11(-((char)((ulong)uVar13 + >> 8) == '\0') + ,-((char)uVar13 == + '\0'))))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> + 0x20) == '\0'), + (int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == + '\0'),CONCAT14(-((char)((ulong)uVar25 + >> 0x20) == + '\0'),CONCAT13(-(( + char)((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == + '\0'),-((char)uVar25 == '\0'))) + ))))) & 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18, + CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11(cVar15, + cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31, + CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11(cVar28, + cVar23))))))); + if (0x80 < iVar37) { + uVar25 = puVar5[0x11]; + uVar13 = puVar5[0x10]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> 0x38) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 0x30) == + '\0'),-((char)((ulong + )uVar13 >> 0x28) == '\0'))) << 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == + '\0'),CONCAT11(-((char)((ulong) + uVar13 >> 8) == '\0'),-((char)uVar13 == '\0'))))) + & 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> + 0x20) == '\0'), + (int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == + '\0'),CONCAT14(-((char)((ulong) + uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar25 + >> 8) == '\0'), + -((char)uVar25 == '\0') + ))))))) & + 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14(cVar18 + ,CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11(cVar15, + cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14(cVar31 + ,CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11(cVar28, + cVar23))))))); + if (0x90 < iVar37) { + uVar25 = puVar5[0x13]; + uVar13 = puVar5[0x12]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> + 0x38) == '\0'), + CONCAT11(-((char)((ulong) + uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0'))) << 0x28 + ) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) == + '\0'),CONCAT11(-((char)((ulong) + uVar13 >> 8) == '\0'),-((char)uVar13 == '\0'))))) + & 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 >> + 0x20) == '\0'), + (int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) == + '\0'),CONCAT14(-((char)((ulong) + uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar25 + >> 8) == '\0'), + -((char)uVar25 == '\0') + ))))))) & + 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14( + cVar18,CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11( + cVar15,cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14( + cVar31,CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11( + cVar28,cVar23))))))); + if (0xa0 < iVar37) { + uVar25 = puVar5[0x15]; + uVar13 = puVar5[0x14]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> + 0x38) == '\0'), + CONCAT11(-((char)((ulong) + uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0'))) << 0x28 + ) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 8) == '\0'), + -((char)uVar13 == '\0') + )))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong)uVar13 + >> 0x20) == + '\0'),(int)uVar14)))) + & 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(-((char)((ulong)uVar25 >> 0x28) + == '\0'), + CONCAT14(-((char)((ulong)uVar25 + >> 0x20) == + '\0'),CONCAT13(-((char + )((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) == '\0'), + CONCAT11(-((char)((ulong)uVar25 >> 8) == + '\0'),-((char)uVar25 == '\0'))) + ))))) & 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14( + cVar18,CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11( + cVar15,cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14( + cVar31,CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11( + cVar28,cVar23))))))); + if (0xb0 < iVar37) { + uVar25 = puVar5[0x17]; + uVar13 = puVar5[0x16]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 >> + 0x38) == '\0'), + CONCAT11(-((char)((ulong) + uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0'))) << 0x28 + ) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 8) == '\0'), + -((char)uVar13 == '\0') + )))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong) + uVar13 >> 0x20) == '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == '\0' + ),CONCAT15(-((char)((ulong)uVar25 >> + 0x28) == '\0'), + CONCAT14(-((char)((ulong) + uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar25 + >> 8) == '\0'), + -((char)uVar25 == '\0') + ))))))) & + 0x101010101010101; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19,CONCAT14( + cVar18,CONCAT13(cVar17,CONCAT12(cVar16,CONCAT11( + cVar15,cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32,CONCAT14( + cVar31,CONCAT13(cVar30,CONCAT12(cVar29,CONCAT11( + cVar28,cVar23))))))); + if (0xc0 < iVar37) { + uVar25 = puVar5[0x19]; + uVar13 = puVar5[0x18]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong)uVar13 + >> 0x38) == + '\0'),CONCAT11(-((char + )((ulong)uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0'))) << 0x28 + ) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 8) == '\0'), + -((char)uVar13 == '\0') + )))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong) + uVar13 >> 0x20) == '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == + '\0'),CONCAT15(-((char)((ulong) + uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) + == '\0'), + CONCAT12(-((char)((ulong)uVar25 + >> 0x10) == + '\0'),CONCAT11(-((char + )((ulong)uVar25 >> 8) == '\0'), + -((char)uVar25 == '\0')))))))) & 0x101010101010101 + ; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19, + CONCAT14(cVar18,CONCAT13(cVar17,CONCAT12(cVar16, + CONCAT11(cVar15,cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32, + CONCAT14(cVar31,CONCAT13(cVar30,CONCAT12(cVar29, + CONCAT11(cVar28,cVar23))))))); + if (0xd0 < iVar37) { + uVar25 = puVar5[0x1b]; + uVar13 = puVar5[0x1a]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong) + uVar13 >> 0x38) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0')) + ) << 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 8) == '\0'), + -((char)uVar13 == '\0') + )))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong) + uVar13 >> 0x20) == '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) == + '\0'),CONCAT15(-((char)((ulong) + uVar25 >> 0x28) == '\0'), + CONCAT14(-((char)((ulong)uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) + == '\0'), + CONCAT12(-((char)((ulong)uVar25 + >> 0x10) == + '\0'),CONCAT11(-((char + )((ulong)uVar25 >> 8) == '\0'), + -((char)uVar25 == '\0')))))))) & 0x101010101010101 + ; + cVar11 = cVar11 + (char)uVar14; + cVar15 = cVar15 + (char)(uVar14 >> 8); + cVar16 = cVar16 + (char)(uVar14 >> 0x10); + cVar17 = cVar17 + (char)(uVar14 >> 0x18); + cVar18 = cVar18 + (char)(uVar14 >> 0x20); + cVar19 = cVar19 + (char)(uVar14 >> 0x28); + cVar20 = cVar20 + (char)(uVar14 >> 0x30); + cVar21 = cVar21 + (char)(uVar14 >> 0x38); + uVar14 = CONCAT17(cVar21,CONCAT16(cVar20,CONCAT15(cVar19, + CONCAT14(cVar18,CONCAT13(cVar17,CONCAT12(cVar16, + CONCAT11(cVar15,cVar11))))))); + cVar23 = cVar23 + (char)uVar26; + cVar28 = cVar28 + (char)(uVar26 >> 8); + cVar29 = cVar29 + (char)(uVar26 >> 0x10); + cVar30 = cVar30 + (char)(uVar26 >> 0x18); + cVar31 = cVar31 + (char)(uVar26 >> 0x20); + cVar32 = cVar32 + (char)(uVar26 >> 0x28); + cVar33 = cVar33 + (char)(uVar26 >> 0x30); + cVar35 = cVar35 + (char)(uVar26 >> 0x38); + uVar26 = CONCAT17(cVar35,CONCAT16(cVar33,CONCAT15(cVar32, + CONCAT14(cVar31,CONCAT13(cVar30,CONCAT12(cVar29, + CONCAT11(cVar28,cVar23))))))); + if (iVar37 == 0xe1) { + uVar25 = puVar5[0x1d]; + uVar13 = puVar5[0x1c]; + uVar14 = CONCAT44((int)(((ulong)CONCAT12(-((char)((ulong) + uVar13 >> 0x38) == '\0'), + CONCAT11(-((char)((ulong)uVar13 >> 0x30) == '\0'), + -((char)((ulong)uVar13 >> 0x28) == '\0')) + ) << 0x28) >> 0x20), + CONCAT13(-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar13 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar13 + >> 8) == '\0'), + -((char)uVar13 == '\0') + )))) & + 0xffffffff01010101; + uVar14 = CONCAT17((char)(uVar14 >> 0x38), + CONCAT16((char)(uVar14 >> 0x30), + CONCAT15((char)(uVar14 >> 0x28), + CONCAT14(-((char)((ulong + )uVar13 >> 0x20) == '\0'),(int)uVar14)))) & + 0x1010101ffffffff; + uVar26 = CONCAT17(-((char)((ulong)uVar25 >> 0x38) == '\0'), + CONCAT16(-((char)((ulong)uVar25 >> 0x30) + == '\0'), + CONCAT15(-((char)((ulong)uVar25 + >> 0x28) == '\0' + ),CONCAT14(-((char)(( + ulong)uVar25 >> 0x20) == '\0'), + CONCAT13(-((char)((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(-((char)((ulong)uVar25 >> 0x10) + == '\0'), + CONCAT11(-((char)((ulong)uVar25 + >> 8) == '\0'), + -((char)uVar25 == '\0') + ))))))) & + 0x101010101010101; + uVar14 = CONCAT17(cVar21 + (char)(uVar14 >> 0x38), + CONCAT16(cVar20 + (char)(uVar14 >> 0x30), + CONCAT15(cVar19 + (char)(uVar14 + >> 0x28),CONCAT14(cVar18 + (char)(uVar14 >> 0x20), + CONCAT13(cVar17 + (char)(uVar14 + >> 0x18),CONCAT12(cVar16 + (char)(uVar14 >> 0x10), + CONCAT11(cVar15 + (char)(uVar14 + >> 8),cVar11 + (char)uVar14))))))); + uVar26 = CONCAT17(cVar35 + (char)(uVar26 >> 0x38), + CONCAT16(cVar33 + (char)(uVar26 >> 0x30), + CONCAT15(cVar32 + (char)(uVar26 + >> 0x28),CONCAT14(cVar31 + (char)(uVar26 >> 0x20), + CONCAT13(cVar30 + (char)(uVar26 + >> 0x18),CONCAT12(cVar29 + (char)(uVar26 >> 0x10), + CONCAT11(cVar28 + (char)(uVar26 + >> 8),cVar23 + (char)uVar26))))))); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + bVar10 = (byte)(uVar14 >> 8); + bVar27 = (byte)(uVar14 >> 0x28); + iVar7 = iVar7 + iVar36; + bVar22 = (byte)(uVar26 >> 8); + bVar34 = (byte)(uVar26 >> 0x28); + puVar5 = (undefined8 *)((long)puVar5 + (long)iVar36); + iVar36 = CONCAT13(uVar45,CONCAT12(uVar44,CONCAT11(uVar43,uVar42))) + + ((CONCAT12(bVar10,(short)uVar14) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar27,(ushort)(byte)(uVar14 >> 0x20)) & 0xffff) + + ((CONCAT12(bVar22,(short)uVar26) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar34,(ushort)(byte)(uVar26 >> 0x20)) & 0xffff); + uVar42 = (undefined1)iVar36; + uVar43 = (undefined1)((uint)iVar36 >> 8); + uVar44 = (undefined1)((uint)iVar36 >> 0x10); + uVar45 = (undefined1)((uint)iVar36 >> 0x18); + iVar36 = CONCAT13(uVar49,CONCAT12(uVar48,CONCAT11(uVar47,uVar46))) + + (uint)bVar10 + (uint)bVar27 + (uint)bVar22 + (uint)bVar34; + uVar46 = (undefined1)iVar36; + uVar47 = (undefined1)((uint)iVar36 >> 8); + uVar48 = (undefined1)((uint)iVar36 >> 0x10); + uVar49 = (undefined1)((uint)iVar36 >> 0x18); + iVar36 = CONCAT13(uVar53,CONCAT12(uVar52,CONCAT11(uVar51,uVar50))) + + (uint)(byte)(uVar14 >> 0x10) + (uint)(byte)(uVar14 >> 0x30) + + (uint)(byte)(uVar26 >> 0x10) + (uint)(byte)(uVar26 >> 0x30); + uVar50 = (undefined1)iVar36; + uVar51 = (undefined1)((uint)iVar36 >> 8); + uVar52 = (undefined1)((uint)iVar36 >> 0x10); + uVar53 = (undefined1)((uint)iVar36 >> 0x18); + iVar36 = CONCAT13(uVar57,CONCAT12(uVar56,CONCAT11(uVar55,uVar54))) + + (uint)(byte)(uVar14 >> 0x18) + (uint)(byte)(uVar14 >> 0x38) + + (uint)(byte)(uVar26 >> 0x18) + (uint)(byte)(uVar26 >> 0x38); + uVar54 = (undefined1)iVar36; + uVar55 = (undefined1)((uint)iVar36 >> 8); + uVar56 = (undefined1)((uint)iVar36 >> 0x10); + uVar57 = (undefined1)((uint)iVar36 >> 0x18); + } while (iVar7 < iVar3); + } + iVar9 = iVar9 + iVar3; + } while (iVar9 < (int)uVar4); + uVar25 = CONCAT17(uVar57,CONCAT16(uVar56,CONCAT15(uVar55,CONCAT14(uVar54,CONCAT13(uVar53, + CONCAT12(uVar52,CONCAT11(uVar51,uVar50))))))); + uVar13 = CONCAT17(uVar49,CONCAT16(uVar48,CONCAT15(uVar47,CONCAT14(uVar46,CONCAT13(uVar45, + CONCAT12(uVar44,CONCAT11(uVar43,uVar42))))))); + } + /* try { // try from 003a1064 to 004a1067 has its CatchHandler @ 003a1184 */ + /* try { // try from 003a106c to 004a106f has its CatchHandler @ 003a0170 */ + local_10 = (int)uVar13; + iStack_c = (int)((ulong)uVar13 >> 0x20); + iStack_8 = (int)uVar25; + iStack_4 = (int)((ulong)uVar25 >> 0x20); + iVar3 = iVar9 - (iStack_c + local_10 + iStack_8 + iStack_4); + if (iVar9 < (int)param_2) { + lVar8 = (long)iVar9; + uVar2 = param_2 - iVar9; + uVar4 = -((int)param_1 + iVar9) & 0xf; + uVar14 = (ulong)uVar4; + if (uVar2 < uVar4) { + uVar14 = (ulong)uVar2; + } + if (uVar2 < 0x12) { + uVar14 = (ulong)uVar2; + } + uVar4 = (uint)uVar14; + if (uVar4 != 0) { + if (*(char *)((long)param_1 + lVar8) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 1; + if (uVar4 != 1) { + if (*(char *)((long)param_1 + (long)(iVar9 + 1)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 2; + if (uVar4 != 2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 2)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 3; + if (uVar4 != 3) { + if (*(char *)((long)param_1 + (long)(iVar9 + 3)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 4; + if (uVar4 != 4) { + if (*(char *)((long)param_1 + (long)(iVar9 + 4)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 5; + if (uVar4 != 5) { + if (*(char *)((long)param_1 + (long)(iVar9 + 5)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 6; + if (uVar4 != 6) { + if (*(char *)((long)param_1 + (long)(iVar9 + 6)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 7; + if (uVar4 != 7) { + if (*(char *)((long)param_1 + (long)(iVar9 + 7)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 8; + if (uVar4 != 8) { + /* catch() { ... } // from try @ 003a1064 with catch @ 003a1184 */ + if (*(char *)((long)param_1 + (long)(iVar9 + 8)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 9; + if (uVar4 != 9) { + /* try { // try from 003a1194 to 004a1197 has its CatchHandler @ 003a0170 */ + if (*(char *)((long)param_1 + (long)(iVar9 + 9)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 10; + if (uVar4 != 10) { + if (*(char *)((long)param_1 + (long)(iVar9 + 10)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 0xb; + if (uVar4 != 0xb) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xb)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 0xc; + if (uVar4 != 0xc) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xc)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 0xd; + if (uVar4 != 0xd) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xd)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 0xe; + if (uVar4 != 0xe) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xe)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 0xf; + if (uVar4 != 0xf) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xf)) != '\0') { + iVar3 = iVar3 + 1; + } + iVar7 = iVar9 + 0x10; + if ((uVar4 == 0x11) && + (iVar7 = iVar9 + 0x11, + *(char *)((long)param_1 + (long)(iVar9 + 0x10)) != '\0')) { + iVar3 = iVar3 + 1; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar9 = iVar7; + if (uVar4 == uVar2) { + return iVar3; + } + } + uVar1 = ((uVar2 - uVar4) - 0x10 >> 4) + 1; + iVar7 = uVar1 * 0x10; + if (0xe < (uVar2 - 1) - uVar4) { + iVar36 = 0; + iVar37 = 0; + iVar38 = 0; + iVar39 = 0; + uVar6 = 0; + puVar5 = (undefined8 *)((long)param_1 + lVar8 + uVar14); + do { + uVar25 = puVar5[1]; + uVar13 = *puVar5; + uVar6 = uVar6 + 1; + uVar12 = CONCAT16(~-((char)((ulong)uVar13 >> 0x30) == '\0'), + CONCAT15(~-((char)((ulong)uVar13 >> 0x28) == '\0'), + CONCAT14(~-((char)((ulong)uVar13 >> 0x20) == '\0'), + CONCAT13(~-((char)((ulong)uVar13 >> 0x18) == '\0'), + CONCAT12(~-((char)((ulong)uVar13 >> 0x10) == + '\0'),CONCAT11(~-((char)((ulong) + uVar13 >> 8) == '\0'),~-((char)uVar13 == '\0'))))) + )) & 0x1010101010101; + uVar24 = CONCAT16(~-((char)((ulong)uVar25 >> 0x30) == '\0'), + CONCAT15(~-((char)((ulong)uVar25 >> 0x28) == '\0'), + CONCAT14(~-((char)((ulong)uVar25 >> 0x20) == '\0'), + CONCAT13(~-((char)((ulong)uVar25 >> 0x18) == '\0'), + CONCAT12(~-((char)((ulong)uVar25 >> 0x10) == + '\0'),CONCAT11(~-((char)((ulong) + uVar25 >> 8) == '\0'),~-((char)uVar25 == '\0'))))) + )) & 0x1010101010101; + bVar10 = (byte)(uVar12 >> 8); + bVar27 = (byte)(uVar12 >> 0x28); + bVar22 = (byte)(uVar24 >> 8); + bVar34 = (byte)(uVar24 >> 0x28); + iVar36 = (CONCAT12(bVar34,(ushort)(byte)(uVar24 >> 0x20)) & 0xffff) + + (CONCAT12(bVar22,(ushort)(byte)uVar24) & 0xffff) + + (CONCAT12(bVar27,(ushort)(byte)(uVar12 >> 0x20)) & 0xffff) + + (CONCAT12(bVar10,(ushort)(byte)uVar12) & 0xffff) + iVar36; + iVar37 = (uint)bVar34 + (uint)bVar22 + (uint)bVar27 + (uint)bVar10 + iVar37; + iVar38 = (uint)(byte)(uVar24 >> 0x30) + + (uint)(byte)(uVar24 >> 0x10) + + (uint)(byte)(uVar12 >> 0x30) + (uint)(byte)(uVar12 >> 0x10) + iVar38; + iVar39 = (uint)(~-((char)((ulong)uVar25 >> 0x38) == '\0') & 1) + + (uint)(byte)(uVar24 >> 0x18) + + (uint)(~-((char)((ulong)uVar13 >> 0x38) == '\0') & 1) + + (uint)(byte)(uVar12 >> 0x18) + iVar39; + puVar5 = puVar5 + 2; + } while (uVar6 < uVar1); + iVar9 = iVar9 + iVar7; + iVar3 = iVar3 + iVar36 + iVar37 + iVar38 + iVar39; + if (uVar2 - uVar4 == iVar7) { + return iVar3; + } + } + if (*(char *)((long)param_1 + (long)iVar9) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 1 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 1)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 2 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 2)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 3 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 3)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 4 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 4)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 5 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 5)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 6 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 6)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 7 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 7)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 8 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 8)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 9 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 9)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 10 < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 10)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 0xb < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xb)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 0xc < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xc)) != '\0') { + iVar3 = iVar3 + 1; + } + if (iVar9 + 0xd < (int)param_2) { + if (*(char *)((long)param_1 + (long)(iVar9 + 0xd)) != '\0') { + iVar3 = iVar3 + 1; + } + if ((iVar9 + 0xe < (int)param_2) && + (*(char *)((long)param_1 + (long)(iVar9 + 0xe)) != '\0')) { + iVar3 = iVar3 + 1; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return iVar3; +} + + +================================================================== + +### FUNC 003a1464 (1052 bytes) name=FUN_003a1464 + +int FUN_003a1464(int *param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + int *piVar6; + int iVar13; + int *piVar14; + uint uVar15; + uint uVar16; + uint uVar17; + ulong uVar18; + int iVar19; + uint uVar20; + uint3 uVar21; + int iVar22; + undefined8 uVar23; + uint3 uVar24; + undefined8 uVar25; + int iVar26; + uint uVar27; + int iVar28; + int iVar29; + int iVar30; + undefined1 uVar31; + undefined1 uVar32; + undefined1 uVar33; + undefined1 uVar34; + undefined1 uVar35; + undefined1 uVar36; + undefined1 uVar37; + undefined1 uVar38; + undefined1 uVar39; + undefined1 uVar40; + undefined1 uVar41; + undefined1 uVar42; + undefined1 uVar43; + undefined1 uVar44; + undefined1 uVar45; + undefined1 uVar46; + int iVar47; + int iVar48; + int iVar49; + int iVar50; + int iVar51; + int iVar52; + int iVar53; + int iVar54; + int iVar55; + int iStack_c; + int iStack_4; + int *piVar7; + int *piVar8; + int *piVar9; + int *piVar10; + int *piVar11; + int *piVar12; + + uVar27 = param_2 & 0xfffffff8; + uVar31 = 0; + uVar32 = 0; + uVar33 = 0; + uVar34 = 0; + uVar35 = 0; + uVar36 = 0; + uVar37 = 0; + uVar38 = 0; + uVar39 = 0; + uVar40 = 0; + uVar41 = 0; + uVar42 = 0; + uVar43 = 0; + uVar44 = 0; + uVar45 = 0; + uVar46 = 0; + iVar13 = 0; + if (0 < (int)uVar27) { + do { + iVar3 = uVar27 - iVar13; + if (0x200000 < iVar3) { + iVar3 = 0x200000; + } + if (0 < iVar3) { + iVar19 = 0; + do { + iVar4 = iVar3 - iVar19; + if (0x8000 < iVar4) { + iVar4 = 0x8000; + } + if (iVar4 < 8) { + uVar23 = 0; + uVar25 = 0; + } + else { + uVar23 = 0; + uVar25 = 0; + piVar14 = param_1 + 4; + do { + piVar6 = piVar14 + 8; + uVar21 = CONCAT12(-((int)((ulong)*(undefined8 *)(piVar14 + -4) >> 0x20) == 0), + (ushort)(-((int)*(undefined8 *)(piVar14 + -4) == 0) & 1)) & 0x1ffff; + uVar24 = CONCAT12(-((int)((ulong)*(undefined8 *)piVar14 >> 0x20) == 0), + (ushort)(-((int)*(undefined8 *)piVar14 == 0) & 1)) & 0x1ffff; + uVar23 = CONCAT26((short)((ulong)uVar23 >> 0x30) + + (ushort)(-((int)((ulong)*(undefined8 *)(piVar14 + -2) >> 0x20) == 0) + & 1), + CONCAT24((short)((ulong)uVar23 >> 0x20) + + (ushort)(-((int)*(undefined8 *)(piVar14 + -2) == 0) & 1), + CONCAT22((short)((ulong)uVar23 >> 0x10) + + (ushort)(byte)(uVar21 >> 0x10), + (short)uVar23 + (short)uVar21))); + uVar25 = CONCAT26((short)((ulong)uVar25 >> 0x30) + + (ushort)(-((int)((ulong)*(undefined8 *)(piVar14 + 2) >> 0x20) == 0) + & 1), + CONCAT24((short)((ulong)uVar25 >> 0x20) + + (ushort)(-((int)*(undefined8 *)(piVar14 + 2) == 0) & 1), + CONCAT22((short)((ulong)uVar25 >> 0x10) + + (ushort)(byte)(uVar24 >> 0x10), + (short)uVar25 + (short)uVar24))); + piVar14 = piVar6; + } while (piVar6 != param_1 + (ulong)(iVar4 - 8U >> 3) * 8 + 0xc); + } + iVar19 = iVar19 + iVar4; + param_1 = param_1 + iVar4; + iVar4 = CONCAT13(uVar34,CONCAT12(uVar33,CONCAT11(uVar32,uVar31))) + + (uint)(ushort)uVar23 + (uint)(ushort)uVar25; + uVar31 = (undefined1)iVar4; + uVar32 = (undefined1)((uint)iVar4 >> 8); + uVar33 = (undefined1)((uint)iVar4 >> 0x10); + uVar34 = (undefined1)((uint)iVar4 >> 0x18); + iVar4 = CONCAT13(uVar38,CONCAT12(uVar37,CONCAT11(uVar36,uVar35))) + + (uint)(ushort)((ulong)uVar23 >> 0x10) + (uint)(ushort)((ulong)uVar25 >> 0x10); + uVar35 = (undefined1)iVar4; + uVar36 = (undefined1)((uint)iVar4 >> 8); + uVar37 = (undefined1)((uint)iVar4 >> 0x10); + uVar38 = (undefined1)((uint)iVar4 >> 0x18); + iVar4 = CONCAT13(uVar42,CONCAT12(uVar41,CONCAT11(uVar40,uVar39))) + + (uint)(ushort)((ulong)uVar23 >> 0x20) + (uint)(ushort)((ulong)uVar25 >> 0x20); + uVar39 = (undefined1)iVar4; + uVar40 = (undefined1)((uint)iVar4 >> 8); + uVar41 = (undefined1)((uint)iVar4 >> 0x10); + uVar42 = (undefined1)((uint)iVar4 >> 0x18); + iVar4 = CONCAT13(uVar46,CONCAT12(uVar45,CONCAT11(uVar44,uVar43))) + + (uint)(ushort)((ulong)uVar23 >> 0x30) + (uint)(ushort)((ulong)uVar25 >> 0x30); + uVar43 = (undefined1)iVar4; + uVar44 = (undefined1)((uint)iVar4 >> 8); + uVar45 = (undefined1)((uint)iVar4 >> 0x10); + uVar46 = (undefined1)((uint)iVar4 >> 0x18); + } while (iVar19 < iVar3); + } + iVar13 = iVar13 + iVar3; + } while (iVar13 < (int)uVar27); + } + iVar19 = param_2 - iVar13; + iVar3 = iVar19 + -3; + iVar5 = CONCAT13(uVar42,CONCAT12(uVar41,CONCAT11(uVar40,uVar39))); + iVar4 = CONCAT13(uVar34,CONCAT12(uVar33,CONCAT11(uVar32,uVar31))); + iStack_c = (int)(CONCAT17(uVar38,CONCAT16(uVar37,CONCAT15(uVar36,CONCAT14(uVar35,iVar4)))) >> 0x20 + ); + iStack_4 = (int)(CONCAT17(uVar46,CONCAT16(uVar45,CONCAT15(uVar44,CONCAT14(uVar43,iVar5)))) >> 0x20 + ); + if (iVar3 < 1) { + uVar27 = 0; + uVar15 = uVar27; + } + else { + uVar27 = iVar19 - 4U >> 2; + iVar22 = uVar27 + 1; + uVar15 = (uVar27 - 3 >> 2) + 1; + if (iVar19 - 4U < 0xc) { + uVar27 = 0; + uVar1 = uVar27; +LAB_003a161c: + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar15 = uVar1 + 4; + uVar17 = (uint)(*(int *)((long)param_1 + uVar18) != 0); + if (*(int *)((long)param_1 + uVar18 + 4) != 0) { + uVar17 = uVar17 + 1; + } + if (*(int *)((long)param_1 + uVar18 + 8) != 0) { + uVar17 = uVar17 + 1; + } + if (*(int *)((long)param_1 + uVar18 + 0xc) != 0) { + uVar17 = uVar17 + 1; + } + uVar27 = uVar27 + uVar17; + if ((int)uVar15 < iVar3) { + uVar18 = -(ulong)(uVar15 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar15 << 2; + uVar1 = uVar1 + 8; + uVar15 = (uint)(*(int *)((long)param_1 + uVar18) != 0); + if (*(int *)((long)param_1 + uVar18 + 4) != 0) { + uVar15 = uVar15 + 1; + } + if (*(int *)((long)param_1 + uVar18 + 8) != 0) { + uVar15 = uVar15 + 1; + } + if (*(int *)((long)param_1 + uVar18 + 0xc) != 0) { + uVar15 = uVar15 + 1; + } + uVar27 = uVar27 + uVar15; + if ((int)uVar1 < iVar3) { + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + uVar15 = (uint)(*(int *)((long)param_1 + uVar18) != 0); + if (*(int *)((long)param_1 + uVar18 + 4) != 0) { + uVar15 = uVar15 + 1; + } + if (*(int *)((long)param_1 + uVar18 + 8) != 0) { + uVar15 = uVar15 + 1; + } + if (*(int *)((long)param_1 + uVar18 + 0xc) != 0) { + uVar15 = uVar15 + 1; + } + uVar27 = uVar27 + uVar15; + } + } + } + else { + iVar26 = 0; + iVar28 = 0; + iVar29 = 0; + iVar30 = 0; + uVar27 = 0; + piVar14 = param_1; + do { + iVar47 = *piVar14; + piVar6 = piVar14 + 1; + piVar7 = piVar14 + 2; + piVar8 = piVar14 + 3; + iVar48 = piVar14[4]; + iVar50 = piVar14[5]; + iVar52 = piVar14[6]; + iVar54 = piVar14[7]; + piVar9 = piVar14 + 8; + piVar10 = piVar14 + 9; + piVar11 = piVar14 + 10; + piVar12 = piVar14 + 0xb; + iVar49 = piVar14[0xc]; + iVar51 = piVar14[0xd]; + iVar53 = piVar14[0xe]; + iVar55 = piVar14[0xf]; + piVar14 = piVar14 + 0x10; + uVar27 = uVar27 + 1; + iVar26 = iVar26 + (uint)(~-(iVar47 == 0) & 1) + (uint)(~-(*piVar6 == 0) & 1) + + (uint)(~-(*piVar7 == 0) & 1) + (uint)(~-(*piVar8 == 0) & 1); + iVar28 = iVar28 + (uint)(~-((int)(CONCAT17((char)((uint)iVar48 >> 0x18), + CONCAT16((char)((uint)iVar48 >> 0x10), + CONCAT15((char)((uint)iVar48 >> 8), + CONCAT14((char)iVar48,iVar47))) + ) >> 0x20) == 0) & 1) + + (uint)(~-((int)(CONCAT17((char)((uint)iVar50 >> 0x18), + CONCAT16((char)((uint)iVar50 >> 0x10), + CONCAT15((char)((uint)iVar50 >> 8), + CONCAT14((char)iVar50,*piVar6)) + )) >> 0x20) == 0) & 1) + + (uint)(~-((int)(CONCAT17((char)((uint)iVar52 >> 0x18), + CONCAT16((char)((uint)iVar52 >> 0x10), + CONCAT15((char)((uint)iVar52 >> 8), + CONCAT14((char)iVar52,*piVar7)) + )) >> 0x20) == 0) & 1) + + (uint)(~-((int)(CONCAT17((char)((uint)iVar54 >> 0x18), + CONCAT16((char)((uint)iVar54 >> 0x10), + CONCAT15((char)((uint)iVar54 >> 8), + CONCAT14((char)iVar54,*piVar8)) + )) >> 0x20) == 0) & 1); + iVar29 = iVar29 + (uint)(~-(*piVar9 == 0) & 1) + (uint)(~-(*piVar10 == 0) & 1) + + (uint)(~-(*piVar11 == 0) & 1) + (uint)(~-(*piVar12 == 0) & 1); + iVar30 = iVar30 + (uint)(~-((int)(CONCAT17((char)((uint)iVar49 >> 0x18), + CONCAT16((char)((uint)iVar49 >> 0x10), + CONCAT15((char)((uint)iVar49 >> 8), + CONCAT14((char)iVar49,*piVar9)) + )) >> 0x20) == 0) & 1) + + (uint)(~-((int)(CONCAT17((char)((uint)iVar51 >> 0x18), + CONCAT16((char)((uint)iVar51 >> 0x10), + CONCAT15((char)((uint)iVar51 >> 8), + CONCAT14((char)iVar51,*piVar10) + ))) >> 0x20) == 0) & 1) + + (uint)(~-((int)(CONCAT17((char)((uint)iVar53 >> 0x18), + CONCAT16((char)((uint)iVar53 >> 0x10), + CONCAT15((char)((uint)iVar53 >> 8), + CONCAT14((char)iVar53,*piVar11) + ))) >> 0x20) == 0) & 1) + + (uint)(~-((int)(CONCAT17((char)((uint)iVar55 >> 0x18), + CONCAT16((char)((uint)iVar55 >> 0x10), + CONCAT15((char)((uint)iVar55 >> 8), + CONCAT14((char)iVar55,*piVar12) + ))) >> 0x20) == 0) & 1); + } while (uVar27 < uVar15); + uVar27 = iVar26 + iVar28 + iVar29 + iVar30; + uVar1 = uVar15 * 0x10; + if (uVar15 * 4 != iVar22) goto LAB_003a161c; + } + uVar15 = iVar22 * 4; + } + if ((int)uVar15 < iVar19) { + uVar17 = iVar19 - uVar15; + piVar14 = param_1 + (int)uVar15; + uVar1 = -((uint)((ulong)piVar14 >> 2) & 3) & 3; + uVar18 = (ulong)uVar1; + if (uVar17 < uVar1) { + uVar18 = (ulong)uVar17; + } + if (uVar17 < 6) { + uVar18 = (ulong)uVar17; + } + uVar16 = (uint)uVar18; + uVar1 = uVar15; + if (uVar16 != 0) { + uVar1 = uVar15 + 1; + if (*piVar14 != 0) { + uVar27 = uVar27 + 1; + } + if (uVar16 != 1) { + uVar1 = uVar15 + 2; + if (piVar14[1] != 0) { + uVar27 = uVar27 + 1; + } + if (uVar16 != 2) { + uVar1 = uVar15 + 3; + if (piVar14[2] != 0) { + uVar27 = uVar27 + 1; + } + if (uVar16 != 3) { + uVar1 = uVar15 + 4; + if (piVar14[3] != 0) { + uVar27 = uVar27 + 1; + } + if ((uVar16 == 5) && (uVar1 = uVar15 + 5, piVar14[4] != 0)) { + uVar27 = uVar27 + 1; + } + } + } + } + if (uVar16 == uVar17) goto LAB_003a1848; + } + uVar2 = ((uVar17 - uVar16) - 4 >> 2) + 1; + iVar3 = uVar2 * 4; + if (2 < (uVar17 - 1) - uVar16) { + iVar22 = 0; + iVar26 = 0; + iVar28 = 0; + iVar29 = 0; + uVar20 = 0; + piVar14 = param_1 + uVar18 + (long)(int)uVar15; + do { + uVar20 = uVar20 + 1; + iVar22 = iVar22 + (uint)(~-((int)*(undefined8 *)piVar14 == 0) & 1); + iVar26 = iVar26 + (uint)(~-((int)((ulong)*(undefined8 *)piVar14 >> 0x20) == 0) & 1); + iVar28 = iVar28 + (uint)(~-((int)*(undefined8 *)(piVar14 + 2) == 0) & 1); + iVar29 = iVar29 + (uint)(~-((int)((ulong)*(undefined8 *)(piVar14 + 2) >> 0x20) == 0) & 1); + piVar14 = piVar14 + 4; + } while (uVar20 < uVar2); + uVar1 = uVar1 + iVar3; + uVar27 = uVar27 + iVar22 + iVar26 + iVar28 + iVar29; + if (iVar3 == uVar17 - uVar16) goto LAB_003a1848; + } + uVar18 = -(ulong)(uVar1 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar1 << 2; + if (*(int *)((long)param_1 + uVar18) != 0) { + uVar27 = uVar27 + 1; + } + if ((int)(uVar1 + 1) < iVar19) { + if (*(int *)((long)param_1 + uVar18 + 4) != 0) { + uVar27 = uVar27 + 1; + } + if (((int)(uVar1 + 2) < iVar19) && (*(int *)((long)param_1 + uVar18 + 8) != 0)) { + uVar27 = uVar27 + 1; + } + } + } +LAB_003a1848: + return (iVar13 - (iStack_c + iVar4 + iVar5 + iStack_4)) + uVar27; +} + + +================================================================== + +### FUNC 003a1880 (16 bytes) name=FUN_003a1880 + +void FUN_003a1880(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f76c0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 003a1890 (44 bytes) name=FUN_003a1890 + +void FUN_003a1890(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f76c0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003a18bc (252 bytes) name=FUN_003a18bc + +void FUN_003a18bc(undefined8 param_1,long param_2,long param_3,int param_4,undefined4 param_5, + undefined4 *param_6,long param_7) + +{ + long lVar1; + undefined4 uVar2; + long lVar3; + undefined4 *puVar4; + undefined4 *puVar5; + + if (param_7 == 0) { + if (0 < param_4) { + puVar4 = param_6; + do { + uVar2 = FUN_003cd884(param_1,param_2,param_5); + puVar5 = puVar4 + 1; + *puVar4 = uVar2; + param_2 = param_2 + param_3; + puVar4 = puVar5; + } while (puVar5 != param_6 + (ulong)(param_4 - 1) + 1); + return; + } + } + else if (0 < param_4) { + lVar1 = (ulong)(param_4 - 1) + 1; + lVar3 = 0; + do { + while (*(char *)(param_7 + lVar3) != '\0') { + uVar2 = FUN_003cd884(param_1,param_2,param_5); + param_6[lVar3] = uVar2; + lVar3 = lVar3 + 1; + param_2 = param_2 + param_3; + if (lVar3 == lVar1) { + return; + } + } + param_6[lVar3] = 0x7fffffff; + lVar3 = lVar3 + 1; + param_2 = param_2 + param_3; + } while (lVar3 != lVar1); + } + return; +} + + +================================================================== + +### FUNC 003a19b8 (260 bytes) name=FUN_003a19b8 + +void FUN_003a19b8(undefined8 param_1,long param_2,long param_3,int param_4,undefined4 param_5, + undefined4 *param_6,long param_7) + +{ + long lVar1; + undefined4 uVar2; + long lVar3; + undefined4 *puVar4; + undefined4 *puVar5; + + if (param_7 == 0) { + if (0 < param_4) { + puVar4 = param_6; + do { + uVar2 = FUN_003cdc00(param_1,param_2,param_5,2); + puVar5 = puVar4 + 1; + *puVar4 = uVar2; + param_2 = param_2 + param_3; + puVar4 = puVar5; + } while (puVar5 != param_6 + (ulong)(param_4 - 1) + 1); + return; + } + } + else if (0 < param_4) { + lVar1 = (ulong)(param_4 - 1) + 1; + lVar3 = 0; + do { + while (*(char *)(param_7 + lVar3) != '\0') { + uVar2 = FUN_003cdc00(param_1,param_2,param_5,2); + param_6[lVar3] = uVar2; + lVar3 = lVar3 + 1; + param_2 = param_2 + param_3; + if (lVar3 == lVar1) { + return; + } + } + param_6[lVar3] = 0x7fffffff; + lVar3 = lVar3 + 1; + param_2 = param_2 + param_3; + } while (lVar3 != lVar1); + } + return; +} + + +================================================================== + +### FUNC 003a1abc (10472 bytes) name=FUN_003a1abc + +int FUN_003a1abc(byte *param_1,long param_2,byte *param_3,int param_4,int param_5) + +{ + char *pcVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + byte *pbVar6; + byte *pbVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + uint uVar53; + uint uVar54; + uint uVar55; + byte bVar56; + byte bVar57; + byte bVar58; + byte bVar59; + byte bVar60; + byte bVar61; + uint uVar62; + uint3 uVar63; + uint3 uVar64; + uint uVar65; + byte *pbVar66; + byte *pbVar67; + byte *pbVar68; + int iVar69; + long lVar70; + long lVar71; + long lVar72; + byte *pbVar73; + long lVar74; + long lVar75; + int iVar76; + int iVar77; + byte *pbVar78; + long lVar79; + long lVar80; + long lVar81; + long lVar82; + long lVar83; + long lVar84; + long lVar85; + long lVar86; + long lVar87; + byte *pbVar88; + long lVar89; + long lVar90; + long lVar91; + long lVar92; + byte bVar93; + byte bVar94; + byte bVar95; + byte bVar96; + int iVar97; + int iVar98; + int iVar99; + undefined8 uVar100; + undefined8 uVar101; + uint uVar102; + undefined8 uVar103; + undefined8 uVar104; + undefined8 uVar105; + undefined8 uVar106; + int iVar107; + int iVar108; + int iVar109; + int iVar110; + undefined8 uVar111; + undefined8 uVar112; + int iVar113; + uint uVar114; + int iVar115; + int iVar116; + int iVar117; + int iVar118; + uint uVar119; + int iVar120; + int iVar121; + int iVar122; + int iVar123; + long lVar124; + int iVar125; + int iVar126; + undefined8 uVar127; + int iVar128; + long lVar129; + int iVar130; + int local_10 [4]; + + if (param_2 != 0) { + if (param_5 == 1) { + iVar76 = *(int *)param_3; + if (param_4 < 1) { + iVar77 = 0; + } + else { + lVar75 = 0; + iVar77 = 0; + do { + if (*(char *)(param_2 + lVar75) != '\0') { + iVar77 = iVar77 + 1; + iVar76 = iVar76 + (uint)param_1[lVar75]; + } + lVar75 = lVar75 + 1; + } while ((int)lVar75 < param_4); + } + *(int *)param_3 = iVar76; + return iVar77; + } + if (param_5 == 3) { + iVar76 = *(int *)param_3; + iVar77 = *(int *)(param_3 + 4); + iVar69 = *(int *)(param_3 + 8); + if (param_4 < 1) { + iVar98 = 0; + } + else { + lVar75 = 0; + iVar98 = 0; + do { + pcVar1 = (char *)(param_2 + lVar75); + lVar75 = lVar75 + 1; + if (*pcVar1 != '\0') { + iVar98 = iVar98 + 1; + iVar76 = iVar76 + (uint)*param_1; + iVar77 = iVar77 + (uint)param_1[1]; + iVar69 = iVar69 + (uint)param_1[2]; + } + param_1 = param_1 + 3; + } while ((int)lVar75 < param_4); + } + *(int *)param_3 = iVar76; + *(int *)(param_3 + 4) = iVar77; + *(int *)(param_3 + 8) = iVar69; + return iVar98; + } + if (param_4 < 1) { + return 0; + } + uVar119 = param_5 - 4; + iVar98 = param_5 + -3; + lVar75 = 0; + uVar102 = uVar119 >> 2; + uVar53 = uVar102 + 1; + uVar114 = (uVar102 - 3 >> 2) + 1; + iVar77 = uVar114 * 0x10; + iVar76 = 0; + iVar69 = uVar53 * 4; + if (uVar119 < 0xc) { + iVar77 = 0; + } + if (iVar98 < 1) { + iVar69 = 0; + } + lVar90 = (long)iVar69; + lVar129 = NEON_shl((ulong)uVar53,2); + uVar62 = param_5 - iVar69; + lVar70 = (long)iVar77; + lVar85 = lVar70 * 4; + lVar71 = (long)(iVar77 + 4); + lVar83 = lVar71 * 4; + lVar72 = (long)(iVar77 + 8); + iVar97 = iVar69 + 1; + lVar81 = lVar72 * 4; + iVar99 = iVar69 + 2; + pbVar78 = param_3 + lVar90 * 4; + uVar54 = -((uint)((ulong)pbVar78 >> 2) & 3) & 3; + uVar55 = uVar62; + if (uVar54 < uVar62) { + uVar55 = uVar54; + } + uVar54 = ((uVar62 - uVar55) - 0x10 >> 4) + 1; + iVar130 = uVar54 * 0x10; + do { + if (*(char *)(param_2 + lVar75) != '\0') { + if (0 < iVar98) { + if ((param_3 < param_1 + lVar129 && param_1 < param_3 + (ulong)uVar53 * 0x10) || + (uVar53 < 4)) { + pbVar88 = param_1 + 1; + pbVar73 = param_3; + do { + pbVar67 = pbVar88 + 4; + bVar93 = pbVar88[-1]; + *(uint *)(pbVar73 + 4) = (uint)*pbVar88 + *(int *)(pbVar73 + 4); + *(uint *)pbVar73 = *(int *)pbVar73 + (uint)bVar93; + bVar93 = pbVar88[1]; + *(uint *)(pbVar73 + 0xc) = (uint)pbVar88[2] + *(int *)(pbVar73 + 0xc); + *(uint *)(pbVar73 + 8) = *(int *)(pbVar73 + 8) + (uint)bVar93; + pbVar88 = pbVar67; + pbVar73 = pbVar73 + 0x10; + } while (pbVar67 != param_1 + (ulong)uVar102 * 4 + 5); + } + else { + if (0xb < uVar119) { + pbVar88 = param_3 + 0x10; + pbVar73 = param_3 + 0x20; + pbVar67 = param_3 + 0x30; + uVar65 = 0; + pbVar66 = param_1; + pbVar68 = param_3; + do { + uVar100 = *(undefined8 *)(pbVar66 + 8); + uVar101 = *(undefined8 *)pbVar66; + uVar65 = uVar65 + 1; + uVar112 = *(undefined8 *)(pbVar88 + 8); + uVar111 = *(undefined8 *)pbVar88; + uVar106 = *(undefined8 *)(pbVar73 + 8); + uVar105 = *(undefined8 *)pbVar73; + uVar104 = *(undefined8 *)(pbVar67 + 8); + uVar103 = *(undefined8 *)pbVar67; + uVar63 = CONCAT12((char)((ulong)uVar101 >> 8),(short)uVar101) & 0xff00ff; + bVar93 = (byte)((ulong)uVar101 >> 0x28); + uVar64 = CONCAT12((char)((ulong)uVar100 >> 8),(short)uVar100) & 0xff00ff; + bVar94 = (byte)((ulong)uVar100 >> 0x28); + *(ulong *)(pbVar68 + 8) = + CONCAT44((int)((ulong)*(undefined8 *)(pbVar68 + 8) >> 0x20) + + (uint)(byte)((ulong)uVar101 >> 0x18), + (int)*(undefined8 *)(pbVar68 + 8) + + (uint)(byte)((ulong)uVar101 >> 0x10)); + *(ulong *)pbVar68 = + CONCAT44((int)((ulong)*(undefined8 *)pbVar68 >> 0x20) + + (uint)(byte)(uVar63 >> 0x10), + (int)*(undefined8 *)pbVar68 + (uVar63 & 0xffff)); + pbVar68 = pbVar68 + 0x40; + *(ulong *)(pbVar88 + 8) = + CONCAT44((int)((ulong)uVar112 >> 0x20) + (uint)(byte)((ulong)uVar101 >> 0x38), + (int)uVar112 + (uint)(byte)((ulong)uVar101 >> 0x30)); + *(ulong *)pbVar88 = + CONCAT44((int)((ulong)uVar111 >> 0x20) + (uint)bVar93, + (int)uVar111 + + (CONCAT12(bVar93,(ushort)(byte)((ulong)uVar101 >> 0x20)) & 0xffff)); + pbVar88 = pbVar88 + 0x40; + *(ulong *)(pbVar73 + 8) = + CONCAT44((int)((ulong)uVar106 >> 0x20) + (uint)(byte)((ulong)uVar100 >> 0x18), + (int)uVar106 + (uint)(byte)((ulong)uVar100 >> 0x10)); + *(ulong *)pbVar73 = + CONCAT44((int)((ulong)uVar105 >> 0x20) + (uint)(byte)(uVar64 >> 0x10), + (int)uVar105 + (uVar64 & 0xffff)); + pbVar73 = pbVar73 + 0x40; + *(ulong *)(pbVar67 + 8) = + CONCAT44((int)((ulong)uVar104 >> 0x20) + (uint)(byte)((ulong)uVar100 >> 0x38), + (int)uVar104 + (uint)(byte)((ulong)uVar100 >> 0x30)); + *(ulong *)pbVar67 = + CONCAT44((int)((ulong)uVar103 >> 0x20) + (uint)bVar94, + (int)uVar103 + + (CONCAT12(bVar94,(ushort)(byte)((ulong)uVar100 >> 0x20)) & 0xffff)); + pbVar67 = pbVar67 + 0x40; + pbVar66 = pbVar66 + 0x10; + } while (uVar65 < uVar114); + if (uVar53 == uVar114 * 4) goto LAB_003a1fd0; + } + bVar93 = param_1[lVar70 + 1]; + *(uint *)(param_3 + lVar85) = *(int *)(param_3 + lVar85) + (uint)param_1[lVar70]; + *(uint *)(param_3 + lVar85 + 4) = (uint)bVar93 + *(int *)(param_3 + lVar85 + 4); + bVar93 = param_1[lVar70 + 3]; + *(uint *)(param_3 + lVar85 + 8) = + *(int *)(param_3 + lVar85 + 8) + (uint)param_1[lVar70 + 2]; + *(uint *)(param_3 + lVar85 + 0xc) = (uint)bVar93 + *(int *)(param_3 + lVar85 + 0xc); + if (iVar77 + 4 < iVar98) { + bVar93 = param_1[lVar71 + 1]; + *(uint *)(param_3 + lVar83) = *(int *)(param_3 + lVar83) + (uint)param_1[lVar71]; + *(uint *)(param_3 + lVar83 + 4) = (uint)bVar93 + *(int *)(param_3 + lVar83 + 4); + /* catch() { ... } // from try @ 003a4be8 with catch @ 003a1f40 */ + bVar93 = param_1[lVar71 + 3]; + *(uint *)(param_3 + lVar83 + 8) = + *(int *)(param_3 + lVar83 + 8) + (uint)param_1[lVar71 + 2]; + *(uint *)(param_3 + lVar83 + 0xc) = (uint)bVar93 + *(int *)(param_3 + lVar83 + 0xc); + if (iVar77 + 8 < iVar98) { + bVar93 = param_1[lVar72 + 1]; + *(uint *)(param_3 + lVar81) = *(int *)(param_3 + lVar81) + (uint)param_1[lVar72]; + *(uint *)(param_3 + lVar81 + 4) = (uint)bVar93 + *(int *)(param_3 + lVar81 + 4); + /* try { // try from 003a1fa0 to 004a1fc3 has its CatchHandler @ 003a4bc8 */ + bVar93 = param_1[lVar72 + 3]; + *(uint *)(param_3 + lVar81 + 8) = + *(int *)(param_3 + lVar81 + 8) + (uint)param_1[lVar72 + 2]; + *(uint *)(param_3 + lVar81 + 0xc) = (uint)bVar93 + *(int *)(param_3 + lVar81 + 0xc); + } + } + } + } +LAB_003a1fd0: + if (iVar69 < param_5) { + pbVar88 = param_1 + lVar90; + if ((pbVar78 < param_1 + lVar90 + (ulong)uVar62 && + pbVar88 < param_3 + (lVar90 + (ulong)uVar62) * 4) || (uVar62 < 0x13)) { + lVar74 = 0; + do { + *(uint *)(pbVar78 + lVar74 * 4) = + *(int *)(pbVar78 + lVar74 * 4) + (uint)pbVar88[lVar74]; + lVar74 = lVar74 + 1; + } while (lVar74 != (ulong)(uint)((param_5 + -1) - iVar69) + 1); + iVar76 = iVar76 + 1; + goto LAB_003a2340; + } + iVar107 = iVar69; + if (((uVar55 != 0) && + (*(uint *)pbVar78 = *(int *)pbVar78 + (uint)*pbVar88, iVar107 = iVar97, uVar55 != 1)) + && (*(uint *)(param_3 + (long)iVar97 * 4) = + *(int *)(param_3 + (long)iVar97 * 4) + (uint)param_1[iVar97], iVar107 = iVar99 + , uVar55 == 3)) { + *(uint *)(param_3 + (long)iVar99 * 4) = + *(int *)(param_3 + (long)iVar99 * 4) + (uint)param_1[iVar99]; + iVar107 = iVar69 + 3; + } + if (0xe < (uVar62 - 1) - uVar55) { + uVar65 = 0; + pbVar88 = param_3 + (lVar90 + (ulong)uVar55) * 4; + pbVar73 = param_3 + lVar90 * 4 + (ulong)uVar55 * 4; + pbVar67 = param_1 + lVar90 + (ulong)uVar55; + do { + uVar103 = *(undefined8 *)pbVar88; + uVar65 = uVar65 + 1; + uVar111 = *(undefined8 *)(pbVar88 + 0x28); + uVar106 = *(undefined8 *)(pbVar88 + 0x20); + uVar100 = *(undefined8 *)(pbVar67 + 8); + uVar101 = *(undefined8 *)pbVar67; + uVar63 = CONCAT12((char)((ulong)uVar101 >> 8),(short)uVar101) & 0xff00ff; + bVar93 = (byte)((ulong)uVar101 >> 0x28); + uVar64 = CONCAT12((char)((ulong)uVar100 >> 8),(short)uVar100) & 0xff00ff; + bVar94 = (byte)((ulong)uVar100 >> 0x28); + uVar127 = *(undefined8 *)(pbVar88 + 0x18); + uVar112 = *(undefined8 *)(pbVar88 + 0x10); + uVar105 = *(undefined8 *)(pbVar88 + 0x38); + uVar104 = *(undefined8 *)(pbVar88 + 0x30); + /* try { // try from 003a20e8 to 004a20eb has its CatchHandler @ 003a4c4c */ + *(ulong *)(pbVar73 + 8) = + CONCAT44((int)((ulong)*(undefined8 *)(pbVar88 + 8) >> 0x20) + + (uint)(byte)((ulong)uVar101 >> 0x18), + (int)*(undefined8 *)(pbVar88 + 8) + (uint)(byte)((ulong)uVar101 >> 0x10) + ); + *(ulong *)pbVar73 = + CONCAT44((int)((ulong)uVar103 >> 0x20) + (uint)(byte)(uVar63 >> 0x10), + (int)uVar103 + (uVar63 & 0xffff)); + *(ulong *)(pbVar73 + 0x18) = + CONCAT44((uint)(byte)((ulong)uVar101 >> 0x38) + (int)((ulong)uVar127 >> 0x20), + (uint)(byte)((ulong)uVar101 >> 0x30) + (int)uVar127); + *(ulong *)(pbVar73 + 0x10) = + CONCAT44((uint)bVar93 + (int)((ulong)uVar112 >> 0x20), + (CONCAT12(bVar93,(ushort)(byte)((ulong)uVar101 >> 0x20)) & 0xffff) + + (int)uVar112); + *(ulong *)(pbVar73 + 0x28) = + CONCAT44((uint)(byte)((ulong)uVar100 >> 0x18) + (int)((ulong)uVar111 >> 0x20), + (uint)(byte)((ulong)uVar100 >> 0x10) + (int)uVar111); + *(ulong *)(pbVar73 + 0x20) = + CONCAT44((uint)(byte)(uVar64 >> 0x10) + (int)((ulong)uVar106 >> 0x20), + (uVar64 & 0xffff) + (int)uVar106); + *(ulong *)(pbVar73 + 0x38) = + CONCAT44((uint)(byte)((ulong)uVar100 >> 0x38) + (int)((ulong)uVar105 >> 0x20), + (uint)(byte)((ulong)uVar100 >> 0x30) + (int)uVar105); + *(ulong *)(pbVar73 + 0x30) = + CONCAT44((uint)bVar94 + (int)((ulong)uVar104 >> 0x20), + (CONCAT12(bVar94,(ushort)(byte)((ulong)uVar100 >> 0x20)) & 0xffff) + + (int)uVar104); + pbVar88 = pbVar88 + 0x40; + pbVar73 = pbVar73 + 0x40; + pbVar67 = pbVar67 + 0x10; + } while (uVar65 < uVar54); + iVar107 = iVar107 + iVar130; + if (uVar62 - uVar55 == iVar130) goto LAB_003a233c; + } + iVar108 = iVar107 + 1; + lVar74 = (long)iVar107 * 4; + /* try { // try from 003a2144 to 004a2147 has its CatchHandler @ 003a4c00 */ + *(uint *)(param_3 + lVar74) = *(int *)(param_3 + lVar74) + (uint)param_1[iVar107]; + /* try { // try from 003a214c to 004a21c7 has its CatchHandler @ 003a4c4c */ + if (iVar108 < param_5) { + iVar118 = iVar107 + 2; + lVar74 = (long)iVar108 * 4; + *(uint *)(param_3 + lVar74) = *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar118 < param_5) { + iVar108 = iVar107 + 3; + lVar74 = (long)iVar118 * 4; + *(uint *)(param_3 + lVar74) = *(int *)(param_3 + lVar74) + (uint)param_1[iVar118]; + if (iVar108 < param_5) { + iVar118 = iVar107 + 4; + lVar74 = (long)iVar108 * 4; + *(uint *)(param_3 + lVar74) = *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar118 < param_5) { + iVar108 = iVar107 + 5; + lVar74 = (long)iVar118 * 4; + *(uint *)(param_3 + lVar74) = *(int *)(param_3 + lVar74) + (uint)param_1[iVar118]; + if (iVar108 < param_5) { + iVar118 = iVar107 + 6; + lVar74 = (long)iVar108 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar118 < param_5) { + /* try { // try from 003a2208 to 004a220b has its CatchHandler @ 003a4c88 */ + iVar108 = iVar107 + 7; + lVar74 = (long)iVar118 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar118]; + if (iVar108 < param_5) { + iVar118 = iVar107 + 8; + lVar74 = (long)iVar108 * 4; + /* try { // try from 003a2238 to 004a223b has its CatchHandler @ 003a4c5c */ + /* try { // try from 003a2240 to 004a2243 has its CatchHandler @ 003a4c88 */ + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar118 < param_5) { + iVar108 = iVar107 + 9; + lVar74 = (long)iVar118 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar118]; + if (iVar108 < param_5) { + iVar118 = iVar107 + 10; + lVar74 = (long)iVar108 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar118 < param_5) { + iVar108 = iVar107 + 0xb; + lVar74 = (long)iVar118 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar118]; + if (iVar108 < param_5) { + iVar118 = iVar107 + 0xc; + lVar74 = (long)iVar108 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar118 < param_5) { + iVar108 = iVar107 + 0xd; + lVar74 = (long)iVar118 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar118]; + if (iVar108 < param_5) { + iVar107 = iVar107 + 0xe; + lVar74 = (long)iVar108 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar108]; + if (iVar107 < param_5) { + lVar74 = (long)iVar107 * 4; + *(uint *)(param_3 + lVar74) = + *(int *)(param_3 + lVar74) + (uint)param_1[iVar107]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a233c: + /* try { // try from 003a233c to 004a233f has its CatchHandler @ 003a4c54 */ + iVar76 = iVar76 + 1; + } +LAB_003a2340: + lVar75 = lVar75 + 1; + param_1 = param_1 + param_5; + if (param_4 <= (int)lVar75) { + return iVar76; + } + } while( true ); + } + if (param_5 - 1U < 2) { +LAB_003a4184: + if (param_4 < 0x10) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + iVar77 = 0; + } + else { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + uVar53 = param_4 - 0x10U >> 4; + pbVar78 = param_1; + do { + pbVar88 = pbVar78 + 0x10; + uVar100 = *(undefined8 *)(pbVar78 + 8); + uVar101 = *(undefined8 *)pbVar78; + bVar93 = (byte)((ulong)uVar101 >> 8); + bVar95 = (byte)((ulong)uVar101 >> 0x28); + bVar94 = (byte)((ulong)uVar100 >> 8); + bVar96 = (byte)((ulong)uVar100 >> 0x28); + local_10[0] = local_10[0] + ((CONCAT12(bVar93,(short)uVar101) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar95,(ushort)(byte)((ulong)uVar101 >> 0x20)) & 0xffff) + + ((CONCAT12(bVar94,(short)uVar100) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar96,(ushort)(byte)((ulong)uVar100 >> 0x20)) & 0xffff); + local_10[1] = local_10[1] + (uint)bVar93 + (uint)bVar95 + (uint)bVar94 + (uint)bVar96; + local_10[2] = local_10[2] + (uint)(byte)((ulong)uVar101 >> 0x10) + + (uint)(byte)((ulong)uVar101 >> 0x30) + (uint)(byte)((ulong)uVar100 >> 0x10) + + (uint)(byte)((ulong)uVar100 >> 0x30); + local_10[3] = local_10[3] + (uint)(byte)((ulong)uVar101 >> 0x18) + + (uint)(byte)((ulong)uVar101 >> 0x38) + (uint)(byte)((ulong)uVar100 >> 0x18) + + (uint)(byte)((ulong)uVar100 >> 0x38); + pbVar78 = pbVar88; + } while (pbVar88 != param_1 + ((ulong)uVar53 + 1) * 0x10); + iVar77 = (uVar53 + 1) * 0x10; + } + if (iVar77 < param_4 + -7) { + uVar53 = (uint)((param_4 + -8) - iVar77) >> 3; + pbVar78 = param_1 + iVar77; + do { + pbVar88 = pbVar78 + 8; + uVar101 = *(undefined8 *)pbVar78; + bVar93 = (byte)((ulong)uVar101 >> 8); + bVar94 = (byte)((ulong)uVar101 >> 0x28); + local_10[0] = local_10[0] + ((CONCAT12(bVar93,(short)uVar101) & 0xff00ff) & 0xffff) + + (CONCAT12(bVar94,(ushort)(byte)((ulong)uVar101 >> 0x20)) & 0xffff); + local_10[1] = local_10[1] + (uint)bVar93 + (uint)bVar94; + local_10[2] = local_10[2] + (uint)(byte)((ulong)uVar101 >> 0x10) + + (uint)(byte)((ulong)uVar101 >> 0x30); + local_10[3] = local_10[3] + (uint)(byte)((ulong)uVar101 >> 0x18) + + (uint)(byte)((ulong)uVar101 >> 0x38); + pbVar78 = pbVar88; + } while (pbVar88 != param_1 + (long)iVar77 + 8 + (ulong)uVar53 * 8); + iVar77 = iVar77 + 8 + uVar53 * 8; + } + if (param_5 < 1) { + do { + /* WARNING: Do nothing block with infinite loop */ + } while( true ); + } + if (param_5 == 1) { + iVar69 = *(int *)param_3; + iVar76 = 0; + do { + lVar75 = (long)iVar76; + iVar76 = iVar76 + 1; + iVar69 = iVar69 + local_10[lVar75]; + } while (iVar76 != 4); + *(int *)param_3 = iVar69; + } + else if (param_5 == 2) { + iVar98 = *(int *)(param_3 + 4); + iVar76 = 0; + iVar69 = *(int *)param_3; + do { + lVar75 = (long)iVar76; + iVar97 = iVar76 + 1; + iVar76 = iVar76 + 2; + iVar69 = iVar69 + local_10[lVar75]; + iVar98 = iVar98 + local_10[iVar97]; + } while (iVar76 != 4); + *(int *)param_3 = iVar69; + *(int *)(param_3 + 4) = iVar98; + } + else if (param_5 == 3) { + iVar98 = *(int *)(param_3 + 8); + iVar97 = 0; + iVar69 = *(int *)(param_3 + 4); + iVar76 = *(int *)param_3; + while( true ) { + iVar76 = iVar76 + local_10[iVar97]; + iVar69 = iVar69 + local_10[iVar97 + 1]; + iVar98 = iVar98 + local_10[iVar97 + 2]; + if (iVar97 != 0) break; + iVar97 = 3; + } + *(int *)param_3 = iVar76; + *(int *)(param_3 + 4) = iVar69; + *(int *)(param_3 + 8) = iVar98; + } + else { + *(int *)(param_3 + 4) = local_10[1] + *(int *)(param_3 + 4); + *(int *)(param_3 + 8) = local_10[2] + *(int *)(param_3 + 8); + *(int *)param_3 = *(int *)param_3 + local_10[0]; + *(int *)(param_3 + 0xc) = local_10[3] + *(int *)(param_3 + 0xc); + } + iVar76 = 0; + if (param_5 != 0) { + iVar76 = iVar77 / param_5; + } + lVar75 = (long)(param_5 * iVar76); + } + else { + iVar76 = 0; + lVar75 = 0; + if (param_5 == 4) goto LAB_003a4184; + } + pbVar78 = param_1 + lVar75; + iVar77 = param_5 % 4; + if (iVar77 != 1) { + iVar98 = iVar76; + if (iVar77 != 2) { + if (iVar77 != 3) goto LAB_003a253c; + iVar97 = *(int *)param_3; + iVar69 = *(int *)(param_3 + 4); + iVar99 = *(int *)(param_3 + 8); + if (iVar76 < param_4) { + uVar114 = param_4 - iVar76; + lVar70 = (long)param_5; + uVar53 = (uVar114 - 0x10 >> 4) + 1; + uVar102 = uVar53 * 0x10; + if (0xe < (uint)((param_4 + -1) - iVar76)) { + pbVar88 = param_1 + lVar75 + 2; + iVar109 = 0; + iVar110 = 0; + iVar121 = 0; + iVar122 = 0; + lVar84 = lVar70 * 2; + lVar89 = lVar70 * 4; + lVar72 = lVar70 * 3; + lVar81 = lVar70 * 5; + uVar119 = 0; + lVar80 = lVar70 * 0x10; + lVar82 = lVar70 * 8; + lVar87 = lVar70 * 0xc; + lVar86 = lVar70 * 10; + pbVar73 = param_1 + lVar75 + 1; + lVar83 = lVar70 * 0xe; + lVar74 = lVar70 * 6; + lVar75 = lVar70 * 7; + lVar85 = lVar70 * 9; + lVar90 = lVar70 * 0xd; + lVar129 = lVar70 * 0xb; + lVar71 = lVar70 * 0xf; + pbVar67 = pbVar78; + iVar98 = iVar109; + iVar130 = iVar110; + iVar107 = iVar109; + iVar108 = iVar110; + iVar118 = iVar121; + iVar120 = iVar122; + iVar123 = iVar121; + iVar125 = iVar122; + do { + uVar119 = uVar119 + 1; + bVar93 = *pbVar67; + pbVar68 = pbVar67 + lVar70; + pbVar66 = pbVar67 + lVar84; + pbVar2 = pbVar67 + lVar72; + pbVar3 = pbVar67 + lVar89; + pbVar4 = pbVar67 + lVar81; + pbVar5 = pbVar67 + lVar74; + pbVar6 = pbVar67 + lVar75; + pbVar7 = pbVar67 + lVar82; + pbVar8 = pbVar67 + lVar85; + pbVar9 = pbVar67 + lVar86; + pbVar10 = pbVar67 + lVar129; + pbVar11 = pbVar67 + lVar87; + pbVar12 = pbVar67 + lVar90; + pbVar13 = pbVar67 + lVar83; + pbVar14 = pbVar67 + lVar71; + pbVar67 = pbVar67 + lVar80; + bVar94 = *pbVar73; + pbVar15 = pbVar73 + lVar70; + uVar63 = CONCAT12(*pbVar68,CONCAT11(*pbVar68,bVar93)) & 0xff00ff; + uVar64 = CONCAT12(*pbVar8,CONCAT11(*pbVar8,*pbVar7)) & 0xff00ff; + pbVar68 = pbVar73 + lVar84; + pbVar7 = pbVar73 + lVar72; + pbVar8 = pbVar73 + lVar89; + pbVar16 = pbVar73 + lVar81; + pbVar17 = pbVar73 + lVar74; + pbVar18 = pbVar73 + lVar75; + pbVar19 = pbVar73 + lVar82; + iVar109 = (CONCAT12(*pbVar12,(ushort)*pbVar11) & 0xffff) + + (uVar64 & 0xffff) + + (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) + (uVar63 & 0xffff) + iVar109; + iVar110 = (uint)*pbVar12 + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar4 + (uint)(byte)(uVar63 >> 0x10) + iVar110; + iVar121 = (uint)*pbVar13 + (uint)*pbVar9 + (uint)*pbVar5 + (uint)*pbVar66 + iVar121; + iVar122 = (uint)*pbVar14 + (uint)*pbVar10 + (uint)*pbVar6 + (uint)*pbVar2 + iVar122; + pbVar66 = pbVar73 + lVar85; + pbVar2 = pbVar73 + lVar86; + pbVar3 = pbVar73 + lVar129; + pbVar4 = pbVar73 + lVar87; + pbVar5 = pbVar73 + lVar90; + pbVar6 = pbVar73 + lVar83; + pbVar9 = pbVar73 + lVar71; + pbVar73 = pbVar73 + lVar80; + bVar93 = *pbVar88; + pbVar10 = pbVar88 + lVar70; + uVar63 = CONCAT12(*pbVar15,CONCAT11(*pbVar15,bVar94)) & 0xff00ff; + uVar64 = CONCAT12(*pbVar66,CONCAT11(*pbVar66,*pbVar19)) & 0xff00ff; + pbVar66 = pbVar88 + lVar84; + pbVar11 = pbVar88 + lVar72; + pbVar12 = pbVar88 + lVar89; + pbVar13 = pbVar88 + lVar81; + pbVar14 = pbVar88 + lVar74; + pbVar15 = pbVar88 + lVar75; + pbVar19 = pbVar88 + lVar82; + iVar107 = (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff) + + (uVar64 & 0xffff) + + (CONCAT12(*pbVar16,(ushort)*pbVar8) & 0xffff) + (uVar63 & 0xffff) + iVar107; + iVar108 = (uint)*pbVar5 + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar16 + (uint)(byte)(uVar63 >> 0x10) + iVar108; + iVar123 = (uint)*pbVar6 + (uint)*pbVar2 + (uint)*pbVar17 + (uint)*pbVar68 + iVar123; + iVar125 = (uint)*pbVar9 + (uint)*pbVar3 + (uint)*pbVar18 + (uint)*pbVar7 + iVar125; + pbVar68 = pbVar88 + lVar85; + pbVar2 = pbVar88 + lVar86; + pbVar3 = pbVar88 + lVar129; + pbVar4 = pbVar88 + lVar87; + pbVar5 = pbVar88 + lVar90; + pbVar6 = pbVar88 + lVar83; + pbVar7 = pbVar88 + lVar71; + pbVar88 = pbVar88 + lVar80; + uVar63 = CONCAT12(*pbVar10,CONCAT11(*pbVar10,bVar93)) & 0xff00ff; + uVar64 = CONCAT12(*pbVar68,CONCAT11(*pbVar68,*pbVar19)) & 0xff00ff; + iVar98 = (CONCAT12(*pbVar5,(ushort)*pbVar4) & 0xffff) + + (uVar64 & 0xffff) + + (CONCAT12(*pbVar13,(ushort)*pbVar12) & 0xffff) + (uVar63 & 0xffff) + iVar98; + iVar130 = (uint)*pbVar5 + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar13 + (uint)(byte)(uVar63 >> 0x10) + iVar130; + iVar118 = (uint)*pbVar6 + (uint)*pbVar2 + (uint)*pbVar14 + (uint)*pbVar66 + iVar118; + iVar120 = (uint)*pbVar7 + (uint)*pbVar3 + (uint)*pbVar15 + (uint)*pbVar11 + iVar120; + } while (uVar119 < uVar53); + iVar76 = iVar76 + uVar102; + pbVar78 = pbVar78 + (ulong)uVar102 * lVar70; + iVar69 = iVar69 + iVar107 + iVar108 + iVar123 + iVar125; + iVar97 = iVar97 + iVar109 + iVar110 + iVar121 + iVar122; + iVar99 = iVar99 + iVar98 + iVar130 + iVar118 + iVar120; + iVar98 = param_4; + /* try { // try from 003a3f24 to 004a3f27 has its CatchHandler @ 003a4c4c */ + if (uVar114 == uVar102) goto LAB_003a4174; + } + iVar97 = iVar97 + (uint)*pbVar78; + iVar69 = iVar69 + (uint)pbVar78[1]; + iVar99 = iVar99 + (uint)pbVar78[2]; + iVar98 = param_4; + if (iVar76 + 1 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 + 2]; + if (iVar76 + 2 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 2]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 2 + 1]; + /* try { // try from 003a3f98 to 004a3f9b has its CatchHandler @ 003a4c54 */ + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 2 + 2]; + if (iVar76 + 3 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 3]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 3 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 3 + 2]; + if (iVar76 + 4 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 4]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 4 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 4 + 2]; + if (iVar76 + 5 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 5]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 5 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 5 + 2]; + if (iVar76 + 6 < param_4) { + /* try { // try from 003a401c to 004a4717 has its CatchHandler @ 003a4bc8 */ + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 6]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 6 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 6 + 2]; + if (iVar76 + 7 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 7]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 7 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 7 + 2]; + if (iVar76 + 8 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 8]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 8 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 8 + 2]; + if (iVar76 + 9 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 9]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 9 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 9 + 2]; + if (iVar76 + 10 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 10]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 10 + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 10 + 2]; + if (iVar76 + 0xb < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xb]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xb + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 0xb + 2]; + if (iVar76 + 0xc < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xc]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xc + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 0xc + 2]; + if (iVar76 + 0xd < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xd]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xd + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 0xd + 2]; + if (iVar76 + 0xe < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xe]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xe + 1]; + iVar99 = iVar99 + (uint)pbVar78[lVar70 * 0xe + 2]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a4174: + *(int *)param_3 = iVar97; + *(int *)(param_3 + 4) = iVar69; + *(int *)(param_3 + 8) = iVar99; + goto LAB_003a253c; + } + iVar97 = *(int *)param_3; + iVar69 = *(int *)(param_3 + 4); + if (iVar76 < param_4) { + uVar102 = param_4 - iVar76; + lVar70 = (long)param_5; + uVar53 = (uVar102 - 0x10 >> 4) + 1; + uVar114 = uVar53 * 0x10; + if (0xe < (uint)((param_4 + -1) - iVar76)) { + iVar108 = 0; + iVar118 = 0; + iVar120 = 0; + iVar123 = 0; + pbVar88 = param_1 + lVar75 + 1; + uVar119 = 0; + pbVar73 = pbVar78; + iVar98 = iVar108; + iVar99 = iVar118; + iVar130 = iVar120; + iVar107 = iVar123; + do { + bVar93 = *pbVar73; + uVar119 = uVar119 + 1; + pbVar67 = pbVar73 + lVar70; + pbVar68 = pbVar73 + lVar70 * 2; + pbVar66 = pbVar73 + lVar70 * 3; + pbVar2 = pbVar73 + lVar70 * 4; + pbVar3 = pbVar73 + lVar70 * 5; + pbVar4 = pbVar73 + lVar70 * 6; + pbVar5 = pbVar73 + lVar70 * 7; + pbVar6 = pbVar73 + lVar70 * 8; + pbVar7 = pbVar73 + lVar70 * 9; + pbVar8 = pbVar73 + lVar70 * 10; + pbVar9 = pbVar73 + lVar70 * 0xb; + pbVar10 = pbVar73 + lVar70 * 0xc; + pbVar11 = pbVar73 + lVar70 * 0xd; + pbVar12 = pbVar73 + lVar70 * 0xe; + pbVar13 = pbVar73 + lVar70 * 0xf; + pbVar73 = pbVar73 + lVar70 * 0x10; + bVar94 = *pbVar88; + pbVar14 = pbVar88 + lVar70; + uVar63 = CONCAT12(*pbVar67,CONCAT11(*pbVar67,bVar93)) & 0xff00ff; + uVar64 = CONCAT12(*pbVar7,CONCAT11(*pbVar7,*pbVar6)) & 0xff00ff; + pbVar67 = pbVar88 + lVar70 * 2; + pbVar6 = pbVar88 + lVar70 * 3; + pbVar7 = pbVar88 + lVar70 * 4; + pbVar15 = pbVar88 + lVar70 * 5; + pbVar16 = pbVar88 + lVar70 * 6; + pbVar17 = pbVar88 + lVar70 * 7; + pbVar18 = pbVar88 + lVar70 * 8; + iVar108 = (CONCAT12(*pbVar11,(ushort)*pbVar10) & 0xffff) + + (uVar64 & 0xffff) + + (CONCAT12(*pbVar3,(ushort)*pbVar2) & 0xffff) + (uVar63 & 0xffff) + iVar108; + iVar118 = (uint)*pbVar11 + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar3 + (uint)(byte)(uVar63 >> 0x10) + iVar118; + iVar120 = (uint)*pbVar12 + (uint)*pbVar8 + (uint)*pbVar4 + (uint)*pbVar68 + iVar120; + iVar123 = (uint)*pbVar13 + (uint)*pbVar9 + (uint)*pbVar5 + (uint)*pbVar66 + iVar123; + pbVar68 = pbVar88 + lVar70 * 9; + pbVar66 = pbVar88 + lVar70 * 10; + pbVar2 = pbVar88 + lVar70 * 0xb; + pbVar3 = pbVar88 + lVar70 * 0xc; + pbVar4 = pbVar88 + lVar70 * 0xd; + pbVar5 = pbVar88 + lVar70 * 0xe; + pbVar8 = pbVar88 + lVar70 * 0xf; + pbVar88 = pbVar88 + lVar70 * 0x10; + uVar63 = CONCAT12(*pbVar14,CONCAT11(*pbVar14,bVar94)) & 0xff00ff; + uVar64 = CONCAT12(*pbVar68,CONCAT11(*pbVar68,*pbVar18)) & 0xff00ff; + iVar98 = (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) + + (uVar64 & 0xffff) + + (CONCAT12(*pbVar15,(ushort)*pbVar7) & 0xffff) + (uVar63 & 0xffff) + iVar98; + iVar99 = (uint)*pbVar4 + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar15 + (uint)(byte)(uVar63 >> 0x10) + iVar99; + iVar130 = (uint)*pbVar5 + (uint)*pbVar66 + (uint)*pbVar16 + (uint)*pbVar67 + iVar130; + iVar107 = (uint)*pbVar8 + (uint)*pbVar2 + (uint)*pbVar17 + (uint)*pbVar6 + iVar107; + } while (uVar119 < uVar53); + pbVar78 = pbVar78 + (ulong)uVar114 * lVar70; + iVar76 = iVar76 + uVar114; + iVar69 = iVar69 + iVar98 + iVar99 + iVar130 + iVar107; + iVar97 = iVar97 + iVar108 + iVar118 + iVar120 + iVar123; + iVar98 = param_4; + if (uVar102 == uVar114) goto LAB_003a3bc8; + } + iVar97 = iVar97 + (uint)*pbVar78; + iVar69 = iVar69 + (uint)pbVar78[1]; + iVar98 = param_4; + if (iVar76 + 1 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 + 1]; + if (iVar76 + 2 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 2]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 2 + 1]; + if (iVar76 + 3 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 3]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 3 + 1]; + if (iVar76 + 4 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 4]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 4 + 1]; + if (iVar76 + 5 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 5]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 5 + 1]; + if (iVar76 + 6 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 6]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 6 + 1]; + if (iVar76 + 7 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 7]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 7 + 1]; + if (iVar76 + 8 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 8]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 8 + 1]; + if (iVar76 + 9 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 9]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 9 + 1]; + if (iVar76 + 10 < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 10]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 10 + 1]; + if (iVar76 + 0xb < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xb]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xb + 1]; + if (iVar76 + 0xc < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xc]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xc + 1]; + if (iVar76 + 0xd < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xd]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xd + 1]; + if (iVar76 + 0xe < param_4) { + iVar97 = iVar97 + (uint)pbVar78[lVar70 * 0xe]; + iVar69 = iVar69 + (uint)pbVar78[lVar70 * 0xe + 1]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a3bc8: + *(int *)param_3 = iVar97; + *(int *)(param_3 + 4) = iVar69; + goto LAB_003a253c; + } + iVar98 = param_4 + -3; + iVar69 = *(int *)param_3; + if (iVar76 < iVar98) { + uVar114 = (param_4 + -4) - iVar76; + lVar70 = (long)param_5; + lVar71 = (long)(param_5 << 2); + uVar102 = uVar114 >> 2; + uVar53 = (uVar102 - 0xf >> 4) + 1; + pbVar88 = pbVar78; + iVar97 = iVar76; + if (uVar114 < 0x3c) { +LAB_003a3164: + iVar69 = iVar69 + (uint)*pbVar88 + (uint)pbVar88[lVar70] + (uint)pbVar88[lVar70 * 2] + + (uint)pbVar88[lVar70 * 3]; + if ((((iVar97 + 4 < iVar98) && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 4] + (uint)pbVar88[lVar70 * 5] + + (uint)pbVar88[lVar70 * 6] + (uint)pbVar88[lVar70 * 7], + iVar97 + 8 < iVar98)) && + ((iVar69 = iVar69 + (uint)pbVar88[lVar70 * 8] + (uint)pbVar88[lVar70 * 9] + + (uint)pbVar88[lVar70 * 10] + (uint)pbVar88[lVar70 * 0xb], + iVar97 + 0xc < iVar98 && + ((iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0xc] + (uint)pbVar88[lVar70 * 0xd] + + (uint)pbVar88[lVar70 * 0xe] + (uint)pbVar88[lVar70 * 0xf], + iVar97 + 0x10 < iVar98 && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x10] + (uint)pbVar88[lVar70 * 0x11] + + (uint)pbVar88[lVar70 * 0x12] + (uint)pbVar88[lVar70 * 0x13], + iVar97 + 0x14 < iVar98)))))) && + ((iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x14] + (uint)pbVar88[lVar70 * 0x15] + + (uint)pbVar88[lVar70 * 0x16] + (uint)pbVar88[lVar70 * 0x17], + iVar97 + 0x18 < iVar98 && + ((((((iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x18] + (uint)pbVar88[lVar70 * 0x19] + + (uint)pbVar88[lVar70 * 0x1a] + (uint)pbVar88[lVar70 * 0x1b], + iVar97 + 0x1c < iVar98 && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x1c] + (uint)pbVar88[lVar70 * 0x1d] + + (uint)pbVar88[lVar70 * 0x1e] + (uint)pbVar88[lVar70 * 0x1f], + iVar97 + 0x20 < iVar98)) && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x20] + (uint)pbVar88[lVar70 * 0x21] + + (uint)pbVar88[lVar70 * 0x22] + (uint)pbVar88[lVar70 * 0x23], + iVar97 + 0x24 < iVar98)) && + ((iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x24] + (uint)pbVar88[lVar70 * 0x25] + + (uint)pbVar88[lVar70 * 0x26] + (uint)pbVar88[lVar70 * 0x27], + iVar97 + 0x28 < iVar98 && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x28] + (uint)pbVar88[lVar70 * 0x29] + + (uint)pbVar88[lVar70 * 0x2a] + (uint)pbVar88[lVar70 * 0x2b], + iVar97 + 0x2c < iVar98)))) && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x2c] + (uint)pbVar88[lVar70 * 0x2d] + + (uint)pbVar88[lVar70 * 0x2e] + (uint)pbVar88[lVar70 * 0x2f], + iVar97 + 0x30 < iVar98)) && + ((iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x30] + (uint)pbVar88[lVar70 * 0x31] + + (uint)pbVar88[lVar70 * 0x32] + (uint)pbVar88[lVar70 * 0x33], + iVar97 + 0x34 < iVar98 && + (iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x34] + (uint)pbVar88[lVar70 * 0x35] + + (uint)pbVar88[lVar70 * 0x36] + (uint)pbVar88[lVar70 * 0x37], + iVar97 + 0x38 < iVar98)))))))) { + iVar69 = iVar69 + (uint)pbVar88[lVar70 * 0x38] + (uint)pbVar88[lVar70 * 0x39] + + (uint)pbVar88[lVar70 * 0x3a] + (uint)pbVar88[lVar70 * 0x3b]; + } + } + else { + lVar80 = lVar71 * 2; + lVar72 = lVar70 + lVar75 + lVar70; + pbVar88 = param_1 + lVar75 + lVar70; + lVar89 = lVar71 * 4; + lVar81 = lVar71 * 3; + lVar91 = NEON_shl(lVar71,4); + lVar83 = lVar71 * 5; + pbVar73 = param_1 + lVar72; + pbVar67 = param_1 + lVar70 + lVar72; + iVar97 = 0; + iVar99 = 0; + iVar130 = 0; + iVar107 = 0; + lVar82 = lVar71 * 8; + lVar87 = lVar71 * 0xc; + lVar86 = lVar71 * 10; + lVar74 = lVar71 * 6; + uVar114 = 0; + lVar75 = lVar71 * 7; + lVar72 = lVar71 * 9; + lVar129 = lVar91 + lVar71 * -2; + lVar85 = lVar71 * 0xd; + lVar84 = lVar91 - lVar71; + lVar90 = lVar71 * 0xb; + pbVar68 = pbVar78; + do { + uVar114 = uVar114 + 1; + bVar93 = *pbVar68; + bVar56 = pbVar68[lVar71]; + pbVar66 = pbVar68 + lVar80; + pbVar2 = pbVar68 + lVar81; + pbVar3 = pbVar68 + lVar89; + pbVar4 = pbVar68 + lVar83; + pbVar5 = pbVar68 + lVar74; + pbVar6 = pbVar68 + lVar75; + pbVar7 = pbVar68 + lVar82; + bVar57 = pbVar68[lVar72]; + pbVar8 = pbVar68 + lVar86; + pbVar9 = pbVar68 + lVar90; + pbVar10 = pbVar68 + lVar87; + pbVar11 = pbVar68 + lVar85; + pbVar12 = pbVar68 + lVar129; + pbVar13 = pbVar68 + lVar84; + pbVar68 = pbVar68 + lVar91; + bVar94 = *pbVar88; + bVar58 = pbVar88[lVar71]; + pbVar14 = pbVar88 + lVar80; + pbVar15 = pbVar88 + lVar81; + pbVar16 = pbVar88 + lVar89; + pbVar17 = pbVar88 + lVar83; + pbVar18 = pbVar88 + lVar74; + pbVar19 = pbVar88 + lVar75; + pbVar20 = pbVar88 + lVar82; + bVar59 = pbVar88[lVar72]; + pbVar21 = pbVar88 + lVar86; + pbVar22 = pbVar88 + lVar90; + pbVar23 = pbVar88 + lVar87; + pbVar24 = pbVar88 + lVar85; + pbVar25 = pbVar88 + lVar129; + pbVar26 = pbVar88 + lVar84; + pbVar88 = pbVar88 + lVar91; + bVar95 = *pbVar73; + bVar60 = pbVar73[lVar71]; + pbVar27 = pbVar73 + lVar80; + pbVar28 = pbVar73 + lVar81; + pbVar29 = pbVar73 + lVar89; + pbVar30 = pbVar73 + lVar83; + pbVar31 = pbVar73 + lVar74; + pbVar32 = pbVar73 + lVar75; + pbVar33 = pbVar73 + lVar82; + pbVar34 = pbVar73 + lVar72; + pbVar35 = pbVar73 + lVar86; + pbVar36 = pbVar73 + lVar90; + pbVar37 = pbVar73 + lVar87; + pbVar38 = pbVar73 + lVar85; + pbVar39 = pbVar73 + lVar129; + pbVar40 = pbVar73 + lVar84; + pbVar73 = pbVar73 + lVar91; + bVar96 = *pbVar67; + bVar61 = pbVar67[lVar71]; + uVar63 = CONCAT12(*pbVar34,CONCAT11(*pbVar34,*pbVar33)) & 0xff00ff; + pbVar33 = pbVar67 + lVar80; + pbVar34 = pbVar67 + lVar81; + pbVar41 = pbVar67 + lVar89; + pbVar42 = pbVar67 + lVar83; + pbVar43 = pbVar67 + lVar74; + pbVar44 = pbVar67 + lVar75; + pbVar45 = pbVar67 + lVar82; + pbVar46 = pbVar67 + lVar72; + pbVar47 = pbVar67 + lVar86; + pbVar48 = pbVar67 + lVar90; + pbVar49 = pbVar67 + lVar87; + pbVar50 = pbVar67 + lVar85; + pbVar51 = pbVar67 + lVar129; + pbVar52 = pbVar67 + lVar84; + pbVar67 = pbVar67 + lVar91; + uVar64 = CONCAT12(*pbVar46,CONCAT11(*pbVar46,*pbVar45)) & 0xff00ff; + iVar97 = (CONCAT12(*pbVar24,(ushort)*pbVar23) & 0xffff) + + (CONCAT12(*pbVar11,(ushort)*pbVar10) & 0xffff) + + (CONCAT12(*pbVar38,(ushort)*pbVar37) & 0xffff) + + (CONCAT12(*pbVar50,(ushort)*pbVar49) & 0xffff) + + ((CONCAT12(bVar59,CONCAT11(bVar59,*pbVar20)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar57,CONCAT11(bVar57,*pbVar7)) & 0xff00ff) & 0xffff) + + (uVar63 & 0xffff) + (uVar64 & 0xffff) + + (CONCAT12(*pbVar17,(ushort)*pbVar16) & 0xffff) + + (CONCAT12(*pbVar4,(ushort)*pbVar3) & 0xffff) + + (CONCAT12(*pbVar30,(ushort)*pbVar29) & 0xffff) + + (CONCAT12(*pbVar42,(ushort)*pbVar41) & 0xffff) + + ((CONCAT12(bVar58,CONCAT11(bVar58,bVar94)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar56,CONCAT11(bVar56,bVar93)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar60,CONCAT11(bVar60,bVar95)) & 0xff00ff) & 0xffff) + + ((CONCAT12(bVar61,CONCAT11(bVar61,bVar96)) & 0xff00ff) & 0xffff) + iVar97; + iVar99 = (uint)*pbVar24 + (uint)*pbVar11 + (uint)*pbVar38 + (uint)*pbVar50 + + (uint)bVar59 + (uint)bVar57 + (uint)(byte)(uVar63 >> 0x10) + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar17 + (uint)*pbVar4 + (uint)*pbVar30 + (uint)*pbVar42 + + (uint)bVar58 + (uint)bVar56 + (uint)bVar60 + (uint)bVar61 + iVar99; + iVar130 = (uint)*pbVar25 + (uint)*pbVar12 + (uint)*pbVar39 + (uint)*pbVar51 + + (uint)*pbVar21 + (uint)*pbVar8 + (uint)*pbVar35 + (uint)*pbVar47 + + (uint)*pbVar18 + (uint)*pbVar5 + (uint)*pbVar31 + (uint)*pbVar43 + + (uint)*pbVar14 + (uint)*pbVar66 + (uint)*pbVar27 + (uint)*pbVar33 + iVar130; + iVar107 = (uint)*pbVar26 + (uint)*pbVar13 + (uint)*pbVar40 + (uint)*pbVar52 + + (uint)*pbVar22 + (uint)*pbVar9 + (uint)*pbVar36 + (uint)*pbVar48 + + (uint)*pbVar19 + (uint)*pbVar6 + (uint)*pbVar32 + (uint)*pbVar44 + + (uint)*pbVar15 + (uint)*pbVar2 + (uint)*pbVar28 + (uint)*pbVar34 + iVar107; + } while (uVar114 < uVar53); + iVar69 = iVar69 + iVar97 + iVar99 + iVar130 + iVar107; + pbVar88 = pbVar78 + (ulong)(uVar53 * 0x10) * lVar71; + iVar97 = iVar76 + uVar53 * 0x40; + if (uVar102 + 1 != uVar53 * 0x10) goto LAB_003a3164; + } + iVar76 = iVar76 + 4 + uVar102 * 4; + pbVar78 = pbVar78 + lVar71 + (ulong)uVar102 * lVar71; + } + iVar98 = iVar76; + if (iVar76 < param_4) { + uVar102 = param_4 - iVar76; + uVar53 = (uVar102 - 0x10 >> 4) + 1; + lVar75 = (long)param_5; + uVar114 = uVar53 * 0x10; + if (0xe < (uint)((param_4 + -1) - iVar76)) { + iVar98 = 0; + iVar97 = 0; + iVar99 = 0; + iVar130 = 0; + uVar119 = 0; + pbVar88 = pbVar78 + lVar75 * 10; + pbVar73 = pbVar78; + do { + bVar93 = *pbVar73; + uVar119 = uVar119 + 1; + pbVar67 = pbVar73 + lVar75; + pbVar68 = pbVar73 + lVar75 * 2; + pbVar66 = pbVar73 + lVar75 * 3; + pbVar2 = pbVar73 + lVar75 * 4; + pbVar3 = pbVar73 + lVar75 * 5; + pbVar4 = pbVar73 + lVar75 * 6; + pbVar5 = pbVar88 + lVar75 * -3; + pbVar6 = pbVar73 + lVar75 * 8; + pbVar7 = pbVar73 + lVar75 * 9; + pbVar73 = pbVar73 + lVar75 * 0x10; + bVar94 = *pbVar88; + pbVar8 = pbVar88 + lVar75; + pbVar9 = pbVar88 + lVar75 * 2; + pbVar10 = pbVar88 + lVar75 * 3; + pbVar11 = pbVar88 + lVar75 * 4; + pbVar12 = pbVar88 + lVar75 * 5; + pbVar88 = pbVar88 + lVar75 * 0x10; + uVar63 = CONCAT12(*pbVar67,CONCAT11(*pbVar67,bVar93)) & 0xff00ff; + uVar64 = CONCAT12(*pbVar7,CONCAT11(*pbVar7,*pbVar6)) & 0xff00ff; + iVar98 = (CONCAT12(*pbVar10,(ushort)*pbVar9) & 0xffff) + + (uVar64 & 0xffff) + + (CONCAT12(*pbVar3,(ushort)*pbVar2) & 0xffff) + (uVar63 & 0xffff) + iVar98; + iVar97 = (uint)*pbVar10 + + (uint)(byte)(uVar64 >> 0x10) + + (uint)*pbVar3 + (uint)(byte)(uVar63 >> 0x10) + iVar97; + iVar99 = (uint)*pbVar11 + (uint)bVar94 + (uint)*pbVar4 + (uint)*pbVar68 + iVar99; + iVar130 = (uint)*pbVar12 + (uint)*pbVar8 + (uint)*pbVar5 + (uint)*pbVar66 + iVar130; + } while (uVar119 < uVar53); + iVar76 = iVar76 + uVar114; + pbVar78 = pbVar78 + (ulong)uVar114 * lVar75; + iVar69 = iVar69 + iVar98 + iVar97 + iVar99 + iVar130; + iVar98 = param_4; + if (uVar102 == uVar114) goto LAB_003a3794; + } + iVar69 = iVar69 + (uint)*pbVar78; + iVar98 = param_4; + if (((((iVar76 + 1 < param_4) && (iVar69 = iVar69 + (uint)pbVar78[lVar75], iVar76 + 2 < param_4) + ) && (iVar69 = iVar69 + (uint)pbVar78[lVar75 * 2], iVar76 + 3 < param_4)) && + (((iVar69 = iVar69 + (uint)pbVar78[lVar75 * 3], iVar76 + 4 < param_4 && + (iVar69 = iVar69 + (uint)pbVar78[lVar75 * 4], iVar76 + 5 < param_4)) && + ((iVar69 = iVar69 + (uint)pbVar78[lVar75 * 5], iVar76 + 6 < param_4 && + ((iVar69 = iVar69 + (uint)pbVar78[lVar75 * 6], iVar76 + 7 < param_4 && + (iVar69 = iVar69 + (uint)pbVar78[lVar75 * 7], iVar76 + 8 < param_4)))))))) && + ((iVar69 = iVar69 + (uint)pbVar78[lVar75 * 8], iVar76 + 9 < param_4 && + (((iVar69 = iVar69 + (uint)pbVar78[lVar75 * 9], iVar76 + 10 < param_4 && + (iVar69 = iVar69 + (uint)pbVar78[lVar75 * 10], iVar76 + 0xb < param_4)) && + (iVar69 = iVar69 + (uint)pbVar78[lVar75 * 0xb], iVar76 + 0xc < param_4)))))) { + iVar69 = iVar69 + (uint)pbVar78[lVar75 * 0xc]; + if ((iVar76 + 0xd < param_4) && + (iVar69 = iVar69 + (uint)pbVar78[lVar75 * 0xd], iVar76 + 0xe < param_4)) { + iVar69 = iVar69 + (uint)pbVar78[lVar75 * 0xe]; + } + } + } +LAB_003a3794: + *(int *)param_3 = iVar69; +LAB_003a253c: + if (param_5 <= iVar77) { + return param_4; + } + lVar74 = (long)param_5; + lVar82 = lVar74 * 2; + lVar80 = lVar74 * 8; + lVar70 = lVar74 * 3; + lVar87 = lVar74 * 4; + lVar71 = lVar74 * 5; + lVar86 = lVar74 * 0xc; + lVar124 = NEON_shl(lVar74,4); + lVar129 = (long)iVar77; + lVar84 = lVar74 * 10; + lVar75 = lVar74 * 7; + lVar91 = lVar74 * 6; + lVar72 = lVar74 * 9; + lVar92 = lVar124 + lVar74 * -2; + lVar89 = lVar124 - lVar74; + lVar81 = lVar74 * 0xd; + lVar83 = lVar74 * 0xb; + pbVar78 = param_3 + lVar129 * 4; + lVar85 = lVar129; + lVar90 = lVar129 + 4; + do { + iVar97 = *(int *)pbVar78; + iVar76 = *(int *)(pbVar78 + 4); + iVar99 = *(int *)(pbVar78 + 8); + iVar69 = *(int *)(pbVar78 + 0xc); + lVar79 = (long)(param_5 * iVar98); + pbVar88 = param_1 + lVar79 + lVar85; + iVar130 = iVar98; + if (iVar98 < param_4) { + uVar114 = param_4 - iVar98; + uVar53 = (uVar114 - 0x10 >> 4) + 1; + uVar102 = uVar53 * 0x10; + iVar130 = param_4; + if (0xe < (uint)((param_4 + -1) - iVar98)) { + iVar113 = 0; + iVar115 = 0; + iVar116 = 0; + iVar117 = 0; + uVar119 = 0; + pbVar73 = param_1 + lVar79 + lVar85 + 2; + pbVar67 = param_1 + lVar79 + lVar85 + 1; + pbVar68 = param_1 + lVar79 + lVar85 + 3; + pbVar66 = pbVar88; + iVar107 = iVar113; + iVar108 = iVar115; + iVar118 = iVar113; + iVar120 = iVar115; + iVar123 = iVar113; + iVar125 = iVar115; + iVar109 = iVar116; + iVar110 = iVar117; + iVar121 = iVar116; + iVar122 = iVar117; + iVar126 = iVar116; + iVar128 = iVar117; + do { + uVar119 = uVar119 + 1; + bVar93 = *pbVar66; + pbVar2 = pbVar66 + lVar74; + pbVar3 = pbVar66 + lVar82; + pbVar4 = pbVar66 + lVar70; + pbVar5 = pbVar66 + lVar87; + pbVar6 = pbVar66 + lVar71; + pbVar7 = pbVar66 + lVar91; + pbVar8 = pbVar66 + lVar75; + pbVar9 = pbVar66 + lVar80; + bVar95 = pbVar66[lVar72]; + pbVar10 = pbVar66 + lVar84; + pbVar11 = pbVar66 + lVar83; + pbVar12 = pbVar66 + lVar86; + pbVar13 = pbVar66 + lVar81; + pbVar14 = pbVar66 + lVar92; + pbVar15 = pbVar66 + lVar89; + pbVar66 = pbVar66 + lVar124; + bVar94 = *pbVar67; + pbVar16 = pbVar67 + lVar74; + pbVar17 = pbVar67 + lVar82; + pbVar18 = pbVar67 + lVar70; + pbVar19 = pbVar67 + lVar87; + pbVar20 = pbVar67 + lVar71; + pbVar21 = pbVar67 + lVar91; + pbVar22 = pbVar67 + lVar75; + iVar113 = (CONCAT12(*pbVar13,(ushort)*pbVar12) & 0xffff) + + ((CONCAT12(bVar95,CONCAT11(bVar95,*pbVar9)) & 0xff00ff) & 0xffff) + + (CONCAT12(*pbVar6,(ushort)*pbVar5) & 0xffff) + + (CONCAT12(*pbVar2,(ushort)bVar93) & 0xffff) + iVar113; + iVar115 = (uint)*pbVar13 + (uint)bVar95 + (uint)*pbVar6 + (uint)*pbVar2 + iVar115; + iVar116 = (uint)*pbVar14 + (uint)*pbVar10 + (uint)*pbVar7 + (uint)*pbVar3 + iVar116; + iVar117 = (uint)*pbVar15 + (uint)*pbVar11 + (uint)*pbVar8 + (uint)*pbVar4 + iVar117; + /* try { // try from 003a27a8 to 004a35db has its CatchHandler @ 003a4c88 */ + pbVar2 = pbVar67 + lVar80; + bVar95 = pbVar67[lVar72]; + pbVar3 = pbVar67 + lVar84; + pbVar4 = pbVar67 + lVar83; + pbVar5 = pbVar67 + lVar86; + pbVar6 = pbVar67 + lVar81; + pbVar7 = pbVar67 + lVar92; + pbVar8 = pbVar67 + lVar89; + pbVar67 = pbVar67 + lVar124; + bVar93 = *pbVar73; + pbVar9 = pbVar73 + lVar74; + pbVar10 = pbVar73 + lVar82; + pbVar11 = pbVar73 + lVar70; + pbVar12 = pbVar73 + lVar87; + pbVar13 = pbVar73 + lVar71; + pbVar14 = pbVar73 + lVar91; + pbVar15 = pbVar73 + lVar75; + iVar118 = (CONCAT12(*pbVar6,(ushort)*pbVar5) & 0xffff) + + ((CONCAT12(bVar95,CONCAT11(bVar95,*pbVar2)) & 0xff00ff) & 0xffff) + + (CONCAT12(*pbVar20,(ushort)*pbVar19) & 0xffff) + + (CONCAT12(*pbVar16,(ushort)bVar94) & 0xffff) + iVar118; + iVar120 = (uint)*pbVar6 + (uint)bVar95 + (uint)*pbVar20 + (uint)*pbVar16 + iVar120; + iVar121 = (uint)*pbVar7 + (uint)*pbVar3 + (uint)*pbVar21 + (uint)*pbVar17 + iVar121; + iVar122 = (uint)*pbVar8 + (uint)*pbVar4 + (uint)*pbVar22 + (uint)*pbVar18 + iVar122; + pbVar2 = pbVar73 + lVar80; + bVar95 = pbVar73[lVar72]; + pbVar3 = pbVar73 + lVar84; + pbVar4 = pbVar73 + lVar83; + pbVar5 = pbVar73 + lVar86; + pbVar6 = pbVar73 + lVar81; + pbVar7 = pbVar73 + lVar92; + pbVar8 = pbVar73 + lVar89; + pbVar73 = pbVar73 + lVar124; + bVar94 = *pbVar68; + pbVar16 = pbVar68 + lVar74; + pbVar17 = pbVar68 + lVar82; + pbVar18 = pbVar68 + lVar70; + pbVar19 = pbVar68 + lVar87; + pbVar20 = pbVar68 + lVar71; + pbVar21 = pbVar68 + lVar91; + pbVar22 = pbVar68 + lVar75; + iVar123 = (CONCAT12(*pbVar6,(ushort)*pbVar5) & 0xffff) + + ((CONCAT12(bVar95,CONCAT11(bVar95,*pbVar2)) & 0xff00ff) & 0xffff) + + (CONCAT12(*pbVar13,(ushort)*pbVar12) & 0xffff) + + (CONCAT12(*pbVar9,(ushort)bVar93) & 0xffff) + iVar123; + iVar125 = (uint)*pbVar6 + (uint)bVar95 + (uint)*pbVar13 + (uint)*pbVar9 + iVar125; + iVar126 = (uint)*pbVar7 + (uint)*pbVar3 + (uint)*pbVar14 + (uint)*pbVar10 + iVar126; + iVar128 = (uint)*pbVar8 + (uint)*pbVar4 + (uint)*pbVar15 + (uint)*pbVar11 + iVar128; + pbVar2 = pbVar68 + lVar80; + bVar93 = pbVar68[lVar72]; + pbVar3 = pbVar68 + lVar84; + pbVar4 = pbVar68 + lVar83; + pbVar5 = pbVar68 + lVar86; + pbVar6 = pbVar68 + lVar81; + pbVar7 = pbVar68 + lVar92; + pbVar8 = pbVar68 + lVar89; + pbVar68 = pbVar68 + lVar124; + iVar107 = (CONCAT12(*pbVar6,(ushort)*pbVar5) & 0xffff) + + ((CONCAT12(bVar93,CONCAT11(bVar93,*pbVar2)) & 0xff00ff) & 0xffff) + + (CONCAT12(*pbVar20,(ushort)*pbVar19) & 0xffff) + + (CONCAT12(*pbVar16,(ushort)bVar94) & 0xffff) + iVar107; + iVar108 = (uint)*pbVar6 + (uint)bVar93 + (uint)*pbVar20 + (uint)*pbVar16 + iVar108; + iVar109 = (uint)*pbVar7 + (uint)*pbVar3 + (uint)*pbVar21 + (uint)*pbVar17 + iVar109; + iVar110 = (uint)*pbVar8 + (uint)*pbVar4 + (uint)*pbVar22 + (uint)*pbVar18 + iVar110; + } while (uVar119 < uVar53); + iVar98 = iVar98 + uVar102; + pbVar88 = pbVar88 + (ulong)uVar102 * lVar74; + iVar76 = iVar76 + iVar118 + iVar120 + iVar121 + iVar122; + iVar69 = iVar69 + iVar107 + iVar108 + iVar109 + iVar110; + iVar97 = iVar97 + iVar113 + iVar115 + iVar116 + iVar117; + iVar99 = iVar99 + iVar123 + iVar125 + iVar126 + iVar128; + if (uVar114 == uVar102) goto LAB_003a2d1c; + } + iVar76 = iVar76 + (uint)pbVar88[1]; + iVar99 = iVar99 + (uint)pbVar88[2]; + iVar69 = iVar69 + (uint)pbVar88[3]; + iVar97 = iVar97 + (uint)*pbVar88; + if (iVar98 + 1 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar74 + 2]; + lVar85 = lVar74 * 2; + iVar69 = iVar69 + (uint)pbVar88[lVar74 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74]; + iVar76 = iVar76 + (uint)pbVar88[lVar74 + 1]; + if (iVar98 + 2 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + lVar79 = lVar74 * 3; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 2]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + if (iVar98 + 3 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar79 + 2]; + lVar85 = lVar74 * 4; + iVar69 = iVar69 + (uint)pbVar88[lVar79 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 3]; + iVar76 = iVar76 + (uint)pbVar88[lVar79 + 1]; + if (iVar98 + 4 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + lVar79 = lVar74 * 5; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 4]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + if (iVar98 + 5 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar79 + 2]; + lVar85 = lVar74 * 6; + iVar69 = iVar69 + (uint)pbVar88[lVar79 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 5]; + iVar76 = iVar76 + (uint)pbVar88[lVar79 + 1]; + if (iVar98 + 6 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + lVar79 = lVar74 * 7; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 6]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + if (iVar98 + 7 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar79 + 2]; + lVar85 = lVar74 * 8; + iVar69 = iVar69 + (uint)pbVar88[lVar79 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 7]; + iVar76 = iVar76 + (uint)pbVar88[lVar79 + 1]; + if (iVar98 + 8 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + lVar79 = lVar74 * 9; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 8]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + if (iVar98 + 9 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar79 + 2]; + lVar85 = lVar74 * 10; + iVar69 = iVar69 + (uint)pbVar88[lVar79 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 9]; + iVar76 = iVar76 + (uint)pbVar88[lVar79 + 1]; + if (iVar98 + 10 < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + lVar79 = lVar74 * 0xb; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 10]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + if (iVar98 + 0xb < param_4) { + iVar99 = iVar99 + (uint)pbVar88[lVar79 + 2]; + lVar85 = lVar74 * 0xc; + iVar69 = iVar69 + (uint)pbVar88[lVar79 + 3]; + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 0xb]; + iVar76 = iVar76 + (uint)pbVar88[lVar79 + 1]; + if (iVar98 + 0xc < param_4) { + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 0xc]; + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + lVar79 = lVar74 * 0xd; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + if (iVar98 + 0xd < param_4) { + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 0xd]; + iVar76 = iVar76 + (uint)pbVar88[lVar79 + 1]; + iVar99 = iVar99 + (uint)pbVar88[lVar79 + 2]; + lVar85 = lVar74 * 0xe; + iVar69 = iVar69 + (uint)pbVar88[lVar79 + 3]; + if (iVar98 + 0xe < param_4) { + iVar97 = iVar97 + (uint)pbVar88[lVar74 * 0xe]; + iVar76 = iVar76 + (uint)pbVar88[lVar85 + 1]; + iVar99 = iVar99 + (uint)pbVar88[lVar85 + 2]; + iVar69 = iVar69 + (uint)pbVar88[lVar85 + 3]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a2d1c: + iVar98 = iVar130; + *(ulong *)(pbVar78 + 8) = CONCAT44(iVar69,iVar99); + *(ulong *)pbVar78 = CONCAT44(iVar76,iVar97); + if (lVar90 == lVar129 + 4 + (ulong)((param_5 - 1U) - iVar77 >> 2) * 4) { + return param_4; + } + pbVar78 = pbVar78 + 0x10; + lVar85 = lVar90; + lVar90 = lVar90 + 4; + } while( true ); +} + + +================================================================== + +### FUNC 003a43a4 (10536 bytes) name=FUN_003a43a4 + +int FUN_003a43a4(int *param_1,long param_2,int *param_3,int param_4,int param_5) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + char *pcVar4; + char *pcVar5; + char *pcVar6; + char *pcVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + char *pcVar14; + char *pcVar15; + char *pcVar16; + char *pcVar17; + char *pcVar18; + char *pcVar19; + char *pcVar20; + char *pcVar21; + char *pcVar22; + char *pcVar23; + char *pcVar24; + char *pcVar25; + char *pcVar26; + char *pcVar27; + char *pcVar28; + char *pcVar29; + char *pcVar30; + char *pcVar31; + char *pcVar32; + char *pcVar33; + char *pcVar34; + char *pcVar35; + char *pcVar36; + char *pcVar37; + char *pcVar38; + char *pcVar39; + char *pcVar40; + char *pcVar41; + char *pcVar42; + char *pcVar43; + char *pcVar44; + char *pcVar45; + char *pcVar46; + char *pcVar47; + char *pcVar48; + char *pcVar49; + char *pcVar50; + char *pcVar51; + char *pcVar52; + char *pcVar53; + char *pcVar54; + char *pcVar55; + char *pcVar56; + char *pcVar57; + char *pcVar58; + char *pcVar59; + char *pcVar60; + uint uVar61; + uint uVar62; + uint uVar63; + char cVar64; + char cVar65; + char cVar66; + byte bVar67; + char cVar68; + uint uVar69; + uint uVar70; + char *pcVar71; + int *piVar72; + undefined8 *puVar73; + char *pcVar75; + int *piVar76; + long lVar77; + long lVar78; + char *pcVar79; + int iVar80; + long lVar81; + long lVar82; + long lVar83; + int *piVar84; + long lVar85; + int iVar86; + int iVar87; + long lVar88; + long lVar89; + char *pcVar90; + long lVar91; + long lVar92; + int *piVar93; + long lVar94; + long lVar95; + long lVar96; + long lVar97; + char *pcVar98; + long lVar99; + int *piVar100; + long lVar101; + int *piVar102; + long lVar103; + long lVar104; + int iVar105; + int iVar106; + int iVar107; + undefined8 uVar108; + undefined8 uVar109; + uint uVar110; + undefined8 uVar111; + undefined8 uVar112; + undefined8 uVar113; + undefined8 uVar114; + int iVar115; + int iVar116; + int iVar117; + int iVar118; + undefined8 uVar119; + undefined8 uVar120; + int iVar121; + uint uVar122; + int iVar123; + int iVar124; + int iVar125; + int iVar126; + uint uVar127; + int iVar128; + int iVar129; + int iVar130; + int iVar131; + long lVar132; + int iVar133; + int iVar134; + undefined8 uVar135; + int iVar136; + long lVar137; + int iVar138; + int local_10 [4]; + undefined8 *puVar74; + + if (param_2 != 0) { + if (param_5 == 1) { + iVar86 = *param_3; + if (param_4 < 1) { + iVar87 = 0; + } + else { + lVar85 = 0; + iVar87 = 0; + do { + /* try { // try from 003a4d34 to 004a4d53 has its CatchHandler @ 003a6150 */ + if (*(char *)(param_2 + lVar85) != '\0') { + iVar87 = iVar87 + 1; + iVar86 = iVar86 + *(char *)((long)param_1 + lVar85); + } + lVar85 = lVar85 + 1; + } while ((int)lVar85 < param_4); + } + *param_3 = iVar86; + return iVar87; + } + if (param_5 == 3) { + iVar86 = *param_3; + iVar87 = param_3[1]; + iVar80 = param_3[2]; + if (param_4 < 1) { + iVar106 = 0; + } + else { + lVar85 = 0; + iVar106 = 0; + do { + pcVar98 = (char *)(param_2 + lVar85); + lVar85 = lVar85 + 1; + if (*pcVar98 != '\0') { + iVar106 = iVar106 + 1; + /* try { // try from 003a4d98 to 004a4d9b has its CatchHandler @ 003a61b4 */ + iVar86 = iVar86 + (char)*param_1; + iVar87 = iVar87 + *(char *)((long)param_1 + 1); + iVar80 = iVar80 + *(char *)((long)param_1 + 2); + } + param_1 = (int *)((long)param_1 + 3); + } while ((int)lVar85 < param_4); + } + *param_3 = iVar86; + param_3[1] = iVar87; + param_3[2] = iVar80; + return iVar106; + } + if (param_4 < 1) { + return 0; + } + uVar127 = param_5 - 4; + iVar106 = param_5 + -3; + lVar85 = 0; + uVar110 = uVar127 >> 2; + uVar61 = uVar110 + 1; + uVar122 = (uVar110 - 3 >> 2) + 1; + iVar87 = uVar122 * 0x10; + iVar86 = 0; + iVar80 = uVar61 * 4; + if (uVar127 < 0xc) { + iVar87 = 0; + } + if (iVar106 < 1) { + iVar80 = 0; + } + lVar101 = (long)iVar80; + lVar137 = NEON_shl((ulong)uVar61,2); + uVar69 = param_5 - iVar80; + lVar81 = (long)iVar87; + lVar82 = (long)(iVar87 + 4); + lVar83 = (long)(iVar87 + 8); + iVar105 = iVar80 + 1; + iVar107 = iVar80 + 2; + piVar72 = param_3 + lVar101; + uVar62 = -((uint)((ulong)piVar72 >> 2) & 3) & 3; + uVar63 = uVar69; + if (uVar62 < uVar69) { + uVar63 = uVar62; + } + uVar62 = ((uVar69 - uVar63) - 0x10 >> 4) + 1; + iVar138 = uVar62 * 0x10; + do { + if (*(char *)(param_2 + lVar85) != '\0') { + if (0 < iVar106) { + if ((param_3 < (int *)((long)param_1 + lVar137) && param_1 < param_3 + (ulong)uVar61 * 4) + || (uVar61 < 4)) { + /* catch() { ... } // from try @ 003a2208 with catch @ 003a4c88 + catch() { ... } // from try @ 003a2240 with catch @ 003a4c88 + catch() { ... } // from try @ 003a27a8 with catch @ 003a4c88 */ + pcVar98 = (char *)((long)param_1 + 1); + piVar93 = param_3; + do { + pcVar71 = pcVar98 + 4; + bVar67 = pcVar98[-1]; + piVar93[1] = (int)*pcVar98 + piVar93[1]; + *piVar93 = *piVar93 + (uint)bVar67; + bVar67 = pcVar98[1]; + piVar93[3] = (uint)(byte)pcVar98[2] + piVar93[3]; + piVar93[2] = piVar93[2] + (uint)bVar67; + pcVar98 = pcVar71; + piVar93 = piVar93 + 4; + /* catch() { ... } // from try @ 003a4d10 with catch @ 003a4cd8 + catch() { ... } // from try @ 003a5390 with catch @ 003a4cd8 + catch() { ... } // from try @ 003a6138 with catch @ 003a4cd8 + catch() { ... } // from try @ 003a6174 with catch @ 003a4cd8 */ + } while (pcVar71 != (char *)((long)param_1 + (ulong)uVar110 * 4 + 5)); + } + else { + if (0xb < uVar127) { + piVar93 = param_3 + 4; + piVar84 = param_3 + 8; + piVar76 = param_3 + 0xc; + uVar70 = 0; + piVar100 = param_1; + piVar102 = param_3; + do { + uVar108 = *(undefined8 *)(piVar100 + 2); + uVar109 = *(undefined8 *)piVar100; + uVar70 = uVar70 + 1; + uVar120 = *(undefined8 *)(piVar93 + 2); + uVar119 = *(undefined8 *)piVar93; + uVar114 = *(undefined8 *)(piVar84 + 2); + uVar113 = *(undefined8 *)piVar84; + /* try { // try from 003a4724 to 004a4727 has its CatchHandler @ 003a4c4c */ + uVar112 = *(undefined8 *)(piVar76 + 2); + uVar111 = *(undefined8 *)piVar76; + /* try { // try from 003a4744 to 004a4747 has its CatchHandler @ 003a4c54 */ + /* try { // try from 003a4750 to 004a4753 has its CatchHandler @ 003a4c4c */ + *(ulong *)(piVar102 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar102 + 2) >> 0x20) + + (int)(short)(char)((ulong)uVar109 >> 0x18), + (int)*(undefined8 *)(piVar102 + 2) + + (int)(short)(char)((ulong)uVar109 >> 0x10)); + *(ulong *)piVar102 = + CONCAT44((int)((ulong)*(undefined8 *)piVar102 >> 0x20) + + (int)(short)(char)((ulong)uVar109 >> 8), + (int)*(undefined8 *)piVar102 + (int)(short)(char)uVar109); + piVar102 = piVar102 + 0x10; + *(ulong *)(piVar93 + 2) = + CONCAT44((int)((ulong)uVar120 >> 0x20) + + (int)(short)(char)((ulong)uVar109 >> 0x38), + (int)uVar120 + (int)(short)(char)((ulong)uVar109 >> 0x30)); + *(ulong *)piVar93 = + CONCAT44((int)((ulong)uVar119 >> 0x20) + + (int)(short)(char)((ulong)uVar109 >> 0x28), + (int)uVar119 + (int)(short)(char)((ulong)uVar109 >> 0x20)); + piVar93 = piVar93 + 0x10; + *(ulong *)(piVar84 + 2) = + CONCAT44((int)((ulong)uVar114 >> 0x20) + + (int)(short)(char)((ulong)uVar108 >> 0x18), + (int)uVar114 + (int)(short)(char)((ulong)uVar108 >> 0x10)); + *(ulong *)piVar84 = + CONCAT44((int)((ulong)uVar113 >> 0x20) + + (int)(short)(char)((ulong)uVar108 >> 8), + (int)uVar113 + (int)(short)(char)uVar108); + piVar84 = piVar84 + 0x10; + *(ulong *)(piVar76 + 2) = + CONCAT44((int)((ulong)uVar112 >> 0x20) + + (int)(short)(char)((ulong)uVar108 >> 0x38), + (int)uVar112 + (int)(short)(char)((ulong)uVar108 >> 0x30)); + *(ulong *)piVar76 = + CONCAT44((int)((ulong)uVar111 >> 0x20) + + (int)(short)(char)((ulong)uVar108 >> 0x28), + (int)uVar111 + (int)(short)(char)((ulong)uVar108 >> 0x20)); + piVar76 = piVar76 + 0x10; + piVar100 = piVar100 + 4; + } while (uVar70 < uVar122); + if (uVar61 == uVar122 * 4) goto LAB_003a48b8; + } + cVar68 = *(char *)((long)param_1 + lVar81 + 1); + param_3[lVar81] = param_3[lVar81] + (int)*(char *)((long)param_1 + lVar81); + param_3[lVar81 + 1] = (int)cVar68 + param_3[lVar81 + 1]; + cVar68 = *(char *)((long)param_1 + lVar81 + 3); + param_3[lVar81 + 2] = param_3[lVar81 + 2] + (int)*(char *)((long)param_1 + lVar81 + 2); + param_3[lVar81 + 3] = (int)cVar68 + param_3[lVar81 + 3]; + if (iVar87 + 4 < iVar106) { + cVar68 = *(char *)((long)param_1 + lVar82 + 1); + param_3[lVar82] = param_3[lVar82] + (int)*(char *)((long)param_1 + lVar82); + param_3[lVar82 + 1] = (int)cVar68 + param_3[lVar82 + 1]; + cVar68 = *(char *)((long)param_1 + lVar82 + 3); + param_3[lVar82 + 2] = param_3[lVar82 + 2] + (int)*(char *)((long)param_1 + lVar82 + 2) + ; + param_3[lVar82 + 3] = (int)cVar68 + param_3[lVar82 + 3]; + if (iVar87 + 8 < iVar106) { + cVar68 = *(char *)((long)param_1 + lVar83 + 1); + param_3[lVar83] = param_3[lVar83] + (int)*(char *)((long)param_1 + lVar83); + param_3[lVar83 + 1] = (int)cVar68 + param_3[lVar83 + 1]; + /* try { // try from 003a488c to 004a488f has its CatchHandler @ 003a4bc8 */ + cVar68 = *(char *)((long)param_1 + lVar83 + 3); + param_3[lVar83 + 2] = + param_3[lVar83 + 2] + (int)*(char *)((long)param_1 + lVar83 + 2); + param_3[lVar83 + 3] = (int)cVar68 + param_3[lVar83 + 3]; + } + } + } + } +LAB_003a48b8: + if (iVar80 < param_5) { + piVar93 = (int *)((long)param_1 + lVar101); + if ((piVar72 < (int *)((long)param_1 + lVar101 + (ulong)uVar69) && + piVar93 < param_3 + lVar101 + (ulong)uVar69) || (uVar69 < 0x13)) { + lVar77 = 0; + do { + piVar72[lVar77] = piVar72[lVar77] + (int)*(char *)((long)piVar93 + lVar77); + lVar77 = lVar77 + 1; + } while (lVar77 != (ulong)(uint)((param_5 + -1) - iVar80) + 1); + iVar86 = iVar86 + 1; + goto LAB_003a4c28; + } + iVar115 = iVar80; + if (((uVar63 != 0) && + (*piVar72 = *piVar72 + (int)(char)*piVar93, iVar115 = iVar105, uVar63 != 1)) && + (param_3[iVar105] = param_3[iVar105] + (int)*(char *)((long)param_1 + (long)iVar105), + iVar115 = iVar107, uVar63 == 3)) { + param_3[iVar107] = param_3[iVar107] + (int)*(char *)((long)param_1 + (long)iVar107); + iVar115 = iVar80 + 3; + } + if (0xe < (uVar69 - 1) - uVar63) { + uVar70 = 0; + piVar93 = param_3 + lVar101 + (ulong)uVar63; + piVar84 = param_3 + (ulong)uVar63 + lVar101; + puVar73 = (undefined8 *)((long)param_1 + lVar101 + (ulong)uVar63); + do { + uVar111 = *(undefined8 *)piVar93; + uVar70 = uVar70 + 1; + uVar119 = *(undefined8 *)(piVar93 + 10); + uVar114 = *(undefined8 *)(piVar93 + 8); + uVar108 = puVar73[1]; + uVar109 = *puVar73; + uVar135 = *(undefined8 *)(piVar93 + 6); + uVar120 = *(undefined8 *)(piVar93 + 4); + uVar113 = *(undefined8 *)(piVar93 + 0xe); + uVar112 = *(undefined8 *)(piVar93 + 0xc); + *(ulong *)(piVar84 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar93 + 2) >> 0x20) + + (int)(short)(char)((ulong)uVar109 >> 0x18), + (int)*(undefined8 *)(piVar93 + 2) + + (int)(short)(char)((ulong)uVar109 >> 0x10)); + *(ulong *)piVar84 = + CONCAT44((int)((ulong)uVar111 >> 0x20) + (int)(short)(char)((ulong)uVar109 >> 8), + (int)uVar111 + (int)(short)(char)uVar109); + *(ulong *)(piVar84 + 6) = + CONCAT44((int)(short)(char)((ulong)uVar109 >> 0x38) + + (int)((ulong)uVar135 >> 0x20), + (int)(short)(char)((ulong)uVar109 >> 0x30) + (int)uVar135); + *(ulong *)(piVar84 + 4) = + CONCAT44((int)(short)(char)((ulong)uVar109 >> 0x28) + + (int)((ulong)uVar120 >> 0x20), + (int)(short)(char)((ulong)uVar109 >> 0x20) + (int)uVar120); + *(ulong *)(piVar84 + 10) = + CONCAT44((int)(short)(char)((ulong)uVar108 >> 0x18) + + (int)((ulong)uVar119 >> 0x20), + (int)(short)(char)((ulong)uVar108 >> 0x10) + (int)uVar119); + *(ulong *)(piVar84 + 8) = + CONCAT44((int)(short)(char)((ulong)uVar108 >> 8) + (int)((ulong)uVar114 >> 0x20), + (int)(short)(char)uVar108 + (int)uVar114); + *(ulong *)(piVar84 + 0xe) = + CONCAT44((int)(short)(char)((ulong)uVar108 >> 0x38) + + (int)((ulong)uVar113 >> 0x20), + (int)(short)(char)((ulong)uVar108 >> 0x30) + (int)uVar113); + *(ulong *)(piVar84 + 0xc) = + CONCAT44((int)(short)(char)((ulong)uVar108 >> 0x28) + + (int)((ulong)uVar112 >> 0x20), + (int)(short)(char)((ulong)uVar108 >> 0x20) + (int)uVar112); + piVar93 = piVar93 + 0x10; + piVar84 = piVar84 + 0x10; + puVar73 = puVar73 + 2; + } while (uVar70 < uVar62); + iVar115 = iVar115 + iVar138; + if (uVar69 - uVar63 == iVar138) goto LAB_003a4c24; + } + lVar77 = (long)iVar115; + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 1 < param_5) { + lVar77 = (long)(iVar115 + 1); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 2 < param_5) { + lVar77 = (long)(iVar115 + 2); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 3 < param_5) { + lVar77 = (long)(iVar115 + 3); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 4 < param_5) { + lVar77 = (long)(iVar115 + 4); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 5 < param_5) { + lVar77 = (long)(iVar115 + 5); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 6 < param_5) { + lVar77 = (long)(iVar115 + 6); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 7 < param_5) { + lVar77 = (long)(iVar115 + 7); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 8 < param_5) { + lVar77 = (long)(iVar115 + 8); + param_3[lVar77] = param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77) + ; + if (iVar115 + 9 < param_5) { + lVar77 = (long)(iVar115 + 9); + param_3[lVar77] = + param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 10 < param_5) { + lVar77 = (long)(iVar115 + 10); + param_3[lVar77] = + param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 0xb < param_5) { + lVar77 = (long)(iVar115 + 0xb); + param_3[lVar77] = + param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 0xc < param_5) { + lVar77 = (long)(iVar115 + 0xc); + /* catch() { ... } // from try @ 003a1fa0 with catch @ 003a4bc8 + catch() { ... } // from try @ 003a401c with catch @ 003a4bc8 + catch() { ... } // from try @ 003a488c with catch @ 003a4bc8 */ + param_3[lVar77] = + param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 0xd < param_5) { + /* try { // try from 003a4be8 to 004a4beb has its CatchHandler @ 003a1f40 */ + lVar77 = (long)(iVar115 + 0xd); + /* catch() { ... } // from try @ 003a2144 with catch @ 003a4c00 */ + param_3[lVar77] = + param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + if (iVar115 + 0xe < param_5) { + lVar77 = (long)(iVar115 + 0xe); + param_3[lVar77] = + param_3[lVar77] + (int)*(char *)((long)param_1 + lVar77); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a4c24: + iVar86 = iVar86 + 1; + } +LAB_003a4c28: + lVar85 = lVar85 + 1; + param_1 = (int *)((long)param_1 + (long)param_5); + if (param_4 <= (int)lVar85) { + return iVar86; + } + } while( true ); + } + if (param_5 - 1U < 2) { +LAB_003a6ab8: + if (param_4 < 0x10) { + /* try { // try from 003a6cc0 to 004a6cc3 has its CatchHandler @ 003a7210 */ + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + iVar87 = 0; + } + else { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + uVar61 = param_4 - 0x10U >> 4; + piVar72 = param_1; + do { + piVar93 = piVar72 + 4; + uVar108 = *(undefined8 *)(piVar72 + 2); + uVar109 = *(undefined8 *)piVar72; + local_10[0] = local_10[0] + (short)(char)uVar109 + + (int)(short)(char)((ulong)uVar109 >> 0x20) + (int)(short)(char)uVar108 + + (int)(short)(char)((ulong)uVar108 >> 0x20); + local_10[1] = local_10[1] + (short)(char)((ulong)uVar109 >> 8) + + (int)(short)(char)((ulong)uVar109 >> 0x28) + + (int)(short)(char)((ulong)uVar108 >> 8) + + (int)(short)(char)((ulong)uVar108 >> 0x28); + local_10[2] = local_10[2] + (short)(char)((ulong)uVar109 >> 0x10) + + (int)(short)(char)((ulong)uVar109 >> 0x30) + + (int)(short)(char)((ulong)uVar108 >> 0x10) + + (int)(short)(char)((ulong)uVar108 >> 0x30); + local_10[3] = local_10[3] + (short)(char)((ulong)uVar109 >> 0x18) + + (int)(short)(char)((ulong)uVar109 >> 0x38) + + (int)(short)(char)((ulong)uVar108 >> 0x18) + + (int)(short)(char)((ulong)uVar108 >> 0x38); + piVar72 = piVar93; + } while (piVar93 != param_1 + ((ulong)uVar61 + 1) * 4); + iVar87 = (uVar61 + 1) * 0x10; + } + if (iVar87 < param_4 + -7) { + uVar61 = (uint)((param_4 + -8) - iVar87) >> 3; + puVar73 = (undefined8 *)((long)param_1 + (long)iVar87); + do { + puVar74 = puVar73 + 1; + uVar109 = *puVar73; + local_10[0] = local_10[0] + (short)(char)uVar109 + + (int)(short)(char)((ulong)uVar109 >> 0x20); + local_10[1] = local_10[1] + (short)(char)((ulong)uVar109 >> 8) + + (int)(short)(char)((ulong)uVar109 >> 0x28); + local_10[2] = local_10[2] + (short)(char)((ulong)uVar109 >> 0x10) + + (int)(short)(char)((ulong)uVar109 >> 0x30); + local_10[3] = local_10[3] + (short)(char)((ulong)uVar109 >> 0x18) + + (int)(short)(char)((ulong)uVar109 >> 0x38); + puVar73 = puVar74; + } while (puVar74 != (undefined8 *)((long)param_1 + (long)iVar87 + 8 + (ulong)uVar61 * 8)); + iVar87 = iVar87 + 8 + uVar61 * 8; + } + if (param_5 < 1) { + do { + /* WARNING: Do nothing block with infinite loop */ + } while( true ); + } + if (param_5 == 1) { + iVar80 = *param_3; + iVar86 = 0; + do { + lVar85 = (long)iVar86; + iVar86 = iVar86 + 1; + iVar80 = iVar80 + local_10[lVar85]; + } while (iVar86 != 4); + *param_3 = iVar80; + } + else if (param_5 == 2) { + iVar106 = param_3[1]; + iVar86 = 0; + iVar80 = *param_3; + do { + lVar85 = (long)iVar86; + iVar105 = iVar86 + 1; + iVar86 = iVar86 + 2; + iVar80 = iVar80 + local_10[lVar85]; + iVar106 = iVar106 + local_10[iVar105]; + } while (iVar86 != 4); + *param_3 = iVar80; + /* try { // try from 003a6cb8 to 004a6cbb has its CatchHandler @ 003a7194 */ + param_3[1] = iVar106; + } + else if (param_5 == 3) { + iVar106 = param_3[2]; + iVar105 = 0; + iVar80 = param_3[1]; + iVar86 = *param_3; + while( true ) { + iVar86 = iVar86 + local_10[iVar105]; + iVar80 = iVar80 + local_10[iVar105 + 1]; + iVar106 = iVar106 + local_10[iVar105 + 2]; + if (iVar105 != 0) break; + iVar105 = 3; + } + *param_3 = iVar86; + param_3[1] = iVar80; + param_3[2] = iVar106; + } + else { + param_3[1] = local_10[1] + param_3[1]; + param_3[2] = local_10[2] + param_3[2]; + *param_3 = *param_3 + local_10[0]; + param_3[3] = local_10[3] + param_3[3]; + } + iVar86 = 0; + if (param_5 != 0) { + iVar86 = iVar87 / param_5; + } + lVar85 = (long)(param_5 * iVar86); + } + else { + /* try { // try from 003a4de8 to 004a4deb has its CatchHandler @ 003a61a4 */ + iVar86 = 0; + lVar85 = 0; + /* try { // try from 003a4df0 to 004a4e1f has its CatchHandler @ 003a61b4 */ + if (param_5 == 4) goto LAB_003a6ab8; + } + pcVar98 = (char *)((long)param_1 + lVar85); + iVar87 = param_5 % 4; + if (iVar87 != 1) { + iVar106 = iVar86; + if (iVar87 != 2) { + if (iVar87 != 3) goto LAB_003a4e24; + iVar105 = *param_3; + iVar80 = param_3[1]; + iVar107 = param_3[2]; + if (iVar86 < param_4) { + uVar122 = param_4 - iVar86; + lVar81 = (long)param_5; + uVar61 = (uVar122 - 0x10 >> 4) + 1; + uVar110 = uVar61 * 0x10; + if (0xe < (uint)((param_4 + -1) - iVar86)) { + pcVar71 = (char *)((long)param_1 + lVar85 + 2); + iVar117 = 0; + iVar118 = 0; + iVar129 = 0; + iVar130 = 0; + lVar95 = lVar81 * 2; + lVar99 = lVar81 * 4; + lVar83 = lVar81 * 3; + lVar101 = lVar81 * 5; + uVar127 = 0; + lVar92 = lVar81 * 0x10; + lVar94 = lVar81 * 8; + lVar97 = lVar81 * 0xc; + lVar96 = lVar81 * 10; + pcVar90 = (char *)((long)param_1 + lVar85 + 1); + lVar137 = lVar81 * 0xe; + lVar88 = lVar81 * 6; + lVar85 = lVar81 * 7; + lVar77 = lVar81 * 9; + lVar89 = lVar81 * 0xd; + lVar78 = lVar81 * 0xb; + lVar82 = lVar81 * 0xf; + pcVar79 = pcVar98; + iVar106 = iVar117; + iVar138 = iVar118; + iVar115 = iVar117; + iVar116 = iVar118; + iVar126 = iVar129; + iVar128 = iVar130; + iVar131 = iVar129; + iVar133 = iVar130; + do { + uVar127 = uVar127 + 1; + cVar68 = *pcVar79; + pcVar75 = pcVar79 + lVar81; + pcVar1 = pcVar79 + lVar95; + pcVar2 = pcVar79 + lVar83; + pcVar3 = pcVar79 + lVar99; + pcVar4 = pcVar79 + lVar101; + pcVar5 = pcVar79 + lVar88; + pcVar6 = pcVar79 + lVar85; + pcVar7 = pcVar79 + lVar94; + pcVar8 = pcVar79 + lVar77; + pcVar9 = pcVar79 + lVar96; + pcVar10 = pcVar79 + lVar78; + pcVar11 = pcVar79 + lVar97; + pcVar12 = pcVar79 + lVar89; + pcVar13 = pcVar79 + lVar137; + pcVar14 = pcVar79 + lVar82; + pcVar79 = pcVar79 + lVar92; + cVar64 = *pcVar90; + pcVar15 = pcVar90 + lVar81; + pcVar16 = pcVar90 + lVar95; + pcVar17 = pcVar90 + lVar83; + pcVar18 = pcVar90 + lVar99; + pcVar19 = pcVar90 + lVar101; + pcVar20 = pcVar90 + lVar88; + pcVar21 = pcVar90 + lVar85; + pcVar22 = pcVar90 + lVar94; + iVar117 = (int)(short)*pcVar11 + + (int)(short)*pcVar7 + (int)(short)*pcVar3 + (short)cVar68 + iVar117; + iVar118 = (int)(short)*pcVar12 + + (int)(short)*pcVar8 + (int)(short)*pcVar4 + (short)*pcVar75 + iVar118; + iVar129 = (int)(short)*pcVar13 + + (int)(short)*pcVar9 + (int)(short)*pcVar5 + (short)*pcVar1 + iVar129; + iVar130 = (int)(short)*pcVar14 + + (int)(short)*pcVar10 + (int)(short)*pcVar6 + (short)*pcVar2 + iVar130; + pcVar75 = pcVar90 + lVar77; + pcVar1 = pcVar90 + lVar96; + pcVar2 = pcVar90 + lVar78; + pcVar3 = pcVar90 + lVar97; + pcVar4 = pcVar90 + lVar89; + pcVar5 = pcVar90 + lVar137; + pcVar6 = pcVar90 + lVar82; + pcVar90 = pcVar90 + lVar92; + /* try { // try from 003a672c to 004a6c7b has its CatchHandler @ 003a7210 */ + cVar68 = *pcVar71; + pcVar7 = pcVar71 + lVar81; + pcVar8 = pcVar71 + lVar95; + pcVar9 = pcVar71 + lVar83; + pcVar10 = pcVar71 + lVar99; + pcVar11 = pcVar71 + lVar101; + pcVar12 = pcVar71 + lVar88; + pcVar13 = pcVar71 + lVar85; + pcVar14 = pcVar71 + lVar94; + iVar115 = (int)(short)*pcVar3 + + (int)(short)*pcVar22 + (int)(short)*pcVar18 + (short)cVar64 + iVar115; + iVar116 = (int)(short)*pcVar4 + + (int)(short)*pcVar75 + (int)(short)*pcVar19 + (short)*pcVar15 + iVar116; + iVar131 = (int)(short)*pcVar5 + + (int)(short)*pcVar1 + (int)(short)*pcVar20 + (short)*pcVar16 + iVar131; + iVar133 = (int)(short)*pcVar6 + + (int)(short)*pcVar2 + (int)(short)*pcVar21 + (short)*pcVar17 + iVar133; + pcVar75 = pcVar71 + lVar77; + pcVar1 = pcVar71 + lVar96; + pcVar2 = pcVar71 + lVar78; + pcVar3 = pcVar71 + lVar97; + pcVar4 = pcVar71 + lVar89; + pcVar5 = pcVar71 + lVar137; + pcVar6 = pcVar71 + lVar82; + pcVar71 = pcVar71 + lVar92; + iVar106 = (int)(short)*pcVar3 + + (int)(short)*pcVar14 + (int)(short)*pcVar10 + (short)cVar68 + iVar106; + iVar138 = (int)(short)*pcVar4 + + (int)(short)*pcVar75 + (int)(short)*pcVar11 + (short)*pcVar7 + iVar138; + iVar126 = (int)(short)*pcVar5 + + (int)(short)*pcVar1 + (int)(short)*pcVar12 + (short)*pcVar8 + iVar126; + iVar128 = (int)(short)*pcVar6 + + (int)(short)*pcVar2 + (int)(short)*pcVar13 + (short)*pcVar9 + iVar128; + } while (uVar127 < uVar61); + iVar86 = iVar86 + uVar110; + pcVar98 = pcVar98 + (ulong)uVar110 * lVar81; + iVar80 = iVar80 + iVar115 + iVar116 + iVar131 + iVar133; + iVar105 = iVar105 + iVar117 + iVar118 + iVar129 + iVar130; + iVar107 = iVar107 + iVar106 + iVar138 + iVar126 + iVar128; + iVar106 = param_4; + if (uVar122 == uVar110) goto LAB_003a6aa8; + } + iVar105 = iVar105 + *pcVar98; + iVar80 = iVar80 + pcVar98[1]; + iVar107 = iVar107 + pcVar98[2]; + iVar106 = param_4; + if (iVar86 + 1 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81]; + iVar80 = iVar80 + pcVar98[lVar81 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 + 2]; + if (iVar86 + 2 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 2]; + iVar80 = iVar80 + pcVar98[lVar81 * 2 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 2 + 2]; + if (iVar86 + 3 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 3]; + iVar80 = iVar80 + pcVar98[lVar81 * 3 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 3 + 2]; + if (iVar86 + 4 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 4]; + iVar80 = iVar80 + pcVar98[lVar81 * 4 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 4 + 2]; + if (iVar86 + 5 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 5]; + iVar80 = iVar80 + pcVar98[lVar81 * 5 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 5 + 2]; + if (iVar86 + 6 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 6]; + iVar80 = iVar80 + pcVar98[lVar81 * 6 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 6 + 2]; + if (iVar86 + 7 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 7]; + iVar80 = iVar80 + pcVar98[lVar81 * 7 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 7 + 2]; + if (iVar86 + 8 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 8]; + iVar80 = iVar80 + pcVar98[lVar81 * 8 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 8 + 2]; + if (iVar86 + 9 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 9]; + iVar80 = iVar80 + pcVar98[lVar81 * 9 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 9 + 2]; + if (iVar86 + 10 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 10]; + iVar80 = iVar80 + pcVar98[lVar81 * 10 + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 10 + 2]; + if (iVar86 + 0xb < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xb]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xb + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 0xb + 2]; + if (iVar86 + 0xc < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xc]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xc + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 0xc + 2]; + if (iVar86 + 0xd < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xd]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xd + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 0xd + 2]; + if (iVar86 + 0xe < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xe]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xe + 1]; + iVar107 = iVar107 + pcVar98[lVar81 * 0xe + 2]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a6aa8: + *param_3 = iVar105; + param_3[1] = iVar80; + param_3[2] = iVar107; + goto LAB_003a4e24; + } + iVar105 = *param_3; + iVar80 = param_3[1]; + if (iVar86 < param_4) { + uVar110 = param_4 - iVar86; + lVar81 = (long)param_5; + uVar61 = (uVar110 - 0x10 >> 4) + 1; + uVar122 = uVar61 * 0x10; + if (0xe < (uint)((param_4 + -1) - iVar86)) { + iVar116 = 0; + iVar126 = 0; + iVar128 = 0; + iVar131 = 0; + /* try { // try from 003a6124 to 004a6127 has its CatchHandler @ 003a61b4 */ + /* try { // try from 003a6138 to 004a613b has its CatchHandler @ 003a4cd8 */ + /* try { // try from 003a6148 to 004a614b has its CatchHandler @ 003a6150 */ + /* catch() { ... } // from try @ 003a4d34 with catch @ 003a6150 + catch() { ... } // from try @ 003a5364 with catch @ 003a6150 + catch() { ... } // from try @ 003a5898 with catch @ 003a6150 + catch() { ... } // from try @ 003a6148 with catch @ 003a6150 */ + pcVar71 = (char *)((long)param_1 + lVar85 + 1); + uVar127 = 0; + /* try { // try from 003a6174 to 004a6177 has its CatchHandler @ 003a4cd8 */ + /* catch() { ... } // from try @ 003a4e7c with catch @ 003a6178 */ + pcVar90 = pcVar98; + iVar106 = iVar116; + iVar107 = iVar126; + iVar138 = iVar128; + iVar115 = iVar131; + do { + cVar68 = *pcVar90; + uVar127 = uVar127 + 1; + pcVar79 = pcVar90 + lVar81; + pcVar75 = pcVar90 + lVar81 * 2; + pcVar1 = pcVar90 + lVar81 * 3; + /* catch() { ... } // from try @ 003a4de8 with catch @ 003a61a4 */ + pcVar2 = pcVar90 + lVar81 * 4; + pcVar3 = pcVar90 + lVar81 * 5; + /* catch() { ... } // from try @ 003a4d98 with catch @ 003a61b4 + catch() { ... } // from try @ 003a4df0 with catch @ 003a61b4 + catch() { ... } // from try @ 003a4e84 with catch @ 003a61b4 + catch() { ... } // from try @ 003a588c with catch @ 003a61b4 + catch() { ... } // from try @ 003a6124 with catch @ 003a61b4 */ + pcVar4 = pcVar90 + lVar81 * 6; + /* catch() { ... } // from try @ 003a6200 with catch @ 003a61c0 + catch() { ... } // from try @ 003a6e6c with catch @ 003a61c0 + catch() { ... } // from try @ 003a70d4 with catch @ 003a61c0 + catch() { ... } // from try @ 003a7178 with catch @ 003a61c0 */ + pcVar5 = pcVar90 + lVar81 * 7; + pcVar6 = pcVar90 + lVar81 * 8; + pcVar7 = pcVar90 + lVar81 * 9; + pcVar8 = pcVar90 + lVar81 * 10; + pcVar9 = pcVar90 + lVar81 * 0xb; + pcVar10 = pcVar90 + lVar81 * 0xc; + pcVar11 = pcVar90 + lVar81 * 0xd; + pcVar12 = pcVar90 + lVar81 * 0xe; + /* try { // try from 003a6200 to 004a622b has its CatchHandler @ 003a61c0 */ + pcVar13 = pcVar90 + lVar81 * 0xf; + pcVar90 = pcVar90 + lVar81 * 0x10; + cVar64 = *pcVar71; + pcVar14 = pcVar71 + lVar81; + pcVar15 = pcVar71 + lVar81 * 2; + pcVar16 = pcVar71 + lVar81 * 3; + pcVar17 = pcVar71 + lVar81 * 4; + pcVar18 = pcVar71 + lVar81 * 5; + pcVar19 = pcVar71 + lVar81 * 6; + pcVar20 = pcVar71 + lVar81 * 7; + pcVar21 = pcVar71 + lVar81 * 8; + iVar116 = (int)(short)*pcVar10 + + (int)(short)*pcVar6 + (int)(short)*pcVar2 + (short)cVar68 + iVar116; + iVar126 = (int)(short)*pcVar11 + + (int)(short)*pcVar7 + (int)(short)*pcVar3 + (short)*pcVar79 + iVar126; + iVar128 = (int)(short)*pcVar12 + + (int)(short)*pcVar8 + (int)(short)*pcVar4 + (short)*pcVar75 + iVar128; + iVar131 = (int)(short)*pcVar13 + + (int)(short)*pcVar9 + (int)(short)*pcVar5 + (short)*pcVar1 + iVar131; + pcVar79 = pcVar71 + lVar81 * 9; + pcVar75 = pcVar71 + lVar81 * 10; + pcVar1 = pcVar71 + lVar81 * 0xb; + pcVar2 = pcVar71 + lVar81 * 0xc; + pcVar3 = pcVar71 + lVar81 * 0xd; + pcVar4 = pcVar71 + lVar81 * 0xe; + pcVar5 = pcVar71 + lVar81 * 0xf; + pcVar71 = pcVar71 + lVar81 * 0x10; + iVar106 = (int)(short)*pcVar2 + + (int)(short)*pcVar21 + (int)(short)*pcVar17 + (short)cVar64 + iVar106; + iVar107 = (int)(short)*pcVar3 + + (int)(short)*pcVar79 + (int)(short)*pcVar18 + (short)*pcVar14 + iVar107; + iVar138 = (int)(short)*pcVar4 + + (int)(short)*pcVar75 + (int)(short)*pcVar19 + (short)*pcVar15 + iVar138; + iVar115 = (int)(short)*pcVar5 + + (int)(short)*pcVar1 + (int)(short)*pcVar20 + (short)*pcVar16 + iVar115; + } while (uVar127 < uVar61); + pcVar98 = pcVar98 + (ulong)uVar122 * lVar81; + iVar86 = iVar86 + uVar122; + iVar80 = iVar80 + iVar106 + iVar107 + iVar138 + iVar115; + iVar105 = iVar105 + iVar116 + iVar126 + iVar128 + iVar131; + iVar106 = param_4; + if (uVar110 == uVar122) goto LAB_003a64fc; + } + /* try { // try from 003a6338 to 004a633b has its CatchHandler @ 003a71c8 */ + iVar105 = iVar105 + *pcVar98; + iVar80 = iVar80 + pcVar98[1]; + iVar106 = param_4; + if (iVar86 + 1 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81]; + iVar80 = iVar80 + pcVar98[lVar81 + 1]; + if (iVar86 + 2 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 2]; + /* try { // try from 003a637c to 004a637f has its CatchHandler @ 003a7114 */ + iVar80 = iVar80 + pcVar98[lVar81 * 2 + 1]; + /* try { // try from 003a6384 to 004a63cf has its CatchHandler @ 003a71c8 */ + if (iVar86 + 3 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 3]; + iVar80 = iVar80 + pcVar98[lVar81 * 3 + 1]; + if (iVar86 + 4 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 4]; + iVar80 = iVar80 + pcVar98[lVar81 * 4 + 1]; + if (iVar86 + 5 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 5]; + iVar80 = iVar80 + pcVar98[lVar81 * 5 + 1]; + if (iVar86 + 6 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 6]; + iVar80 = iVar80 + pcVar98[lVar81 * 6 + 1]; + if (iVar86 + 7 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 7]; + iVar80 = iVar80 + pcVar98[lVar81 * 7 + 1]; + if (iVar86 + 8 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 8]; + iVar80 = iVar80 + pcVar98[lVar81 * 8 + 1]; + if (iVar86 + 9 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 9]; + iVar80 = iVar80 + pcVar98[lVar81 * 9 + 1]; + if (iVar86 + 10 < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 10]; + iVar80 = iVar80 + pcVar98[lVar81 * 10 + 1]; + if (iVar86 + 0xb < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xb]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xb + 1]; + if (iVar86 + 0xc < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xc]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xc + 1]; + if (iVar86 + 0xd < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xd]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xd + 1]; + if (iVar86 + 0xe < param_4) { + iVar105 = iVar105 + pcVar98[lVar81 * 0xe]; + iVar80 = iVar80 + pcVar98[lVar81 * 0xe + 1]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a64fc: + *param_3 = iVar105; + param_3[1] = iVar80; + goto LAB_003a4e24; + } + iVar106 = param_4 + -3; + iVar80 = *param_3; + if (iVar86 < iVar106) { + uVar122 = (param_4 + -4) - iVar86; + lVar81 = (long)param_5; + lVar82 = (long)(param_5 << 2); + uVar110 = uVar122 >> 2; + uVar61 = (uVar110 - 0xf >> 4) + 1; + pcVar71 = pcVar98; + iVar105 = iVar86; + if (uVar122 < 0x3c) { +LAB_003a5a98: + iVar80 = iVar80 + (int)*pcVar71 + (int)pcVar71[lVar81] + (int)pcVar71[lVar81 * 2] + + (int)pcVar71[lVar81 * 3]; + if ((((iVar105 + 4 < iVar106) && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 4] + (int)pcVar71[lVar81 * 5] + + (int)pcVar71[lVar81 * 6] + (int)pcVar71[lVar81 * 7], + iVar105 + 8 < iVar106)) && + ((iVar80 = iVar80 + (int)pcVar71[lVar81 * 8] + (int)pcVar71[lVar81 * 9] + + (int)pcVar71[lVar81 * 10] + (int)pcVar71[lVar81 * 0xb], + iVar105 + 0xc < iVar106 && + ((iVar80 = iVar80 + (int)pcVar71[lVar81 * 0xc] + (int)pcVar71[lVar81 * 0xd] + + (int)pcVar71[lVar81 * 0xe] + (int)pcVar71[lVar81 * 0xf], + iVar105 + 0x10 < iVar106 && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x10] + (int)pcVar71[lVar81 * 0x11] + + (int)pcVar71[lVar81 * 0x12] + (int)pcVar71[lVar81 * 0x13], + iVar105 + 0x14 < iVar106)))))) && + ((iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x14] + (int)pcVar71[lVar81 * 0x15] + + (int)pcVar71[lVar81 * 0x16] + (int)pcVar71[lVar81 * 0x17], + iVar105 + 0x18 < iVar106 && + ((((((iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x18] + (int)pcVar71[lVar81 * 0x19] + + (int)pcVar71[lVar81 * 0x1a] + (int)pcVar71[lVar81 * 0x1b], + iVar105 + 0x1c < iVar106 && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x1c] + (int)pcVar71[lVar81 * 0x1d] + + (int)pcVar71[lVar81 * 0x1e] + (int)pcVar71[lVar81 * 0x1f], + iVar105 + 0x20 < iVar106)) && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x20] + (int)pcVar71[lVar81 * 0x21] + + (int)pcVar71[lVar81 * 0x22] + (int)pcVar71[lVar81 * 0x23], + iVar105 + 0x24 < iVar106)) && + ((iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x24] + (int)pcVar71[lVar81 * 0x25] + + (int)pcVar71[lVar81 * 0x26] + (int)pcVar71[lVar81 * 0x27], + iVar105 + 0x28 < iVar106 && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x28] + (int)pcVar71[lVar81 * 0x29] + + (int)pcVar71[lVar81 * 0x2a] + (int)pcVar71[lVar81 * 0x2b], + iVar105 + 0x2c < iVar106)))) && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x2c] + (int)pcVar71[lVar81 * 0x2d] + + (int)pcVar71[lVar81 * 0x2e] + (int)pcVar71[lVar81 * 0x2f], + iVar105 + 0x30 < iVar106)) && + ((iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x30] + (int)pcVar71[lVar81 * 0x31] + + (int)pcVar71[lVar81 * 0x32] + (int)pcVar71[lVar81 * 0x33], + iVar105 + 0x34 < iVar106 && + (iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x34] + (int)pcVar71[lVar81 * 0x35] + + (int)pcVar71[lVar81 * 0x36] + (int)pcVar71[lVar81 * 0x37], + iVar105 + 0x38 < iVar106)))))))) { + iVar80 = iVar80 + (int)pcVar71[lVar81 * 0x38] + (int)pcVar71[lVar81 * 0x39] + + (int)pcVar71[lVar81 * 0x3a] + (int)pcVar71[lVar81 * 0x3b]; + } + } + else { + lVar92 = lVar82 * 2; + lVar83 = lVar81 + lVar85 + lVar81; + pcVar71 = (char *)((long)param_1 + lVar85 + lVar81); + lVar99 = lVar82 * 4; + lVar101 = lVar82 * 3; + lVar103 = NEON_shl(lVar82,4); + lVar137 = lVar82 * 5; + pcVar90 = (char *)((long)param_1 + lVar83); + pcVar79 = (char *)((long)param_1 + lVar81 + lVar83); + iVar105 = 0; + iVar107 = 0; + iVar138 = 0; + iVar115 = 0; + lVar94 = lVar82 * 8; + lVar97 = lVar82 * 0xc; + lVar96 = lVar82 * 10; + lVar88 = lVar82 * 6; + uVar122 = 0; + lVar85 = lVar82 * 7; + lVar83 = lVar82 * 9; + lVar78 = lVar103 + lVar82 * -2; + lVar77 = lVar82 * 0xd; + lVar95 = lVar103 - lVar82; + lVar89 = lVar82 * 0xb; + pcVar75 = pcVar98; + do { + uVar122 = uVar122 + 1; + cVar68 = *pcVar75; + pcVar1 = pcVar75 + lVar82; + pcVar2 = pcVar75 + lVar92; + pcVar3 = pcVar75 + lVar101; + pcVar4 = pcVar75 + lVar99; + pcVar5 = pcVar75 + lVar137; + pcVar6 = pcVar75 + lVar88; + pcVar7 = pcVar75 + lVar85; + pcVar8 = pcVar75 + lVar94; + pcVar9 = pcVar75 + lVar83; + pcVar10 = pcVar75 + lVar96; + pcVar11 = pcVar75 + lVar89; + pcVar12 = pcVar75 + lVar97; + pcVar13 = pcVar75 + lVar77; + pcVar14 = pcVar75 + lVar78; + pcVar15 = pcVar75 + lVar95; + pcVar75 = pcVar75 + lVar103; + cVar64 = *pcVar71; + pcVar16 = pcVar71 + lVar82; + pcVar17 = pcVar71 + lVar92; + pcVar18 = pcVar71 + lVar101; + pcVar19 = pcVar71 + lVar99; + pcVar20 = pcVar71 + lVar137; + pcVar21 = pcVar71 + lVar88; + pcVar22 = pcVar71 + lVar85; + pcVar23 = pcVar71 + lVar94; + pcVar24 = pcVar71 + lVar83; + pcVar25 = pcVar71 + lVar96; + /* try { // try from 003a588c to 004a588f has its CatchHandler @ 003a61b4 */ + pcVar26 = pcVar71 + lVar89; + pcVar27 = pcVar71 + lVar97; + /* try { // try from 003a5898 to 004a589b has its CatchHandler @ 003a6150 */ + pcVar28 = pcVar71 + lVar77; + pcVar29 = pcVar71 + lVar78; + pcVar30 = pcVar71 + lVar95; + pcVar71 = pcVar71 + lVar103; + cVar65 = *pcVar90; + pcVar31 = pcVar90 + lVar82; + pcVar32 = pcVar90 + lVar92; + pcVar33 = pcVar90 + lVar101; + pcVar34 = pcVar90 + lVar99; + pcVar35 = pcVar90 + lVar137; + pcVar36 = pcVar90 + lVar88; + pcVar37 = pcVar90 + lVar85; + pcVar38 = pcVar90 + lVar94; + pcVar39 = pcVar90 + lVar83; + pcVar40 = pcVar90 + lVar96; + pcVar41 = pcVar90 + lVar89; + pcVar42 = pcVar90 + lVar97; + pcVar43 = pcVar90 + lVar77; + pcVar44 = pcVar90 + lVar78; + pcVar45 = pcVar90 + lVar95; + pcVar90 = pcVar90 + lVar103; + cVar66 = *pcVar79; + pcVar46 = pcVar79 + lVar82; + pcVar47 = pcVar79 + lVar92; + pcVar48 = pcVar79 + lVar101; + pcVar49 = pcVar79 + lVar99; + pcVar50 = pcVar79 + lVar137; + pcVar51 = pcVar79 + lVar88; + pcVar52 = pcVar79 + lVar85; + pcVar53 = pcVar79 + lVar94; + pcVar54 = pcVar79 + lVar83; + pcVar55 = pcVar79 + lVar96; + pcVar56 = pcVar79 + lVar89; + pcVar57 = pcVar79 + lVar97; + pcVar58 = pcVar79 + lVar77; + pcVar59 = pcVar79 + lVar78; + pcVar60 = pcVar79 + lVar95; + pcVar79 = pcVar79 + lVar103; + iVar105 = (int)(short)*pcVar27 + (int)(short)*pcVar12 + (int)(short)*pcVar42 + + (int)(short)*pcVar57 + + (int)(short)*pcVar23 + (int)(short)*pcVar8 + (int)(short)*pcVar38 + + (int)(short)*pcVar53 + + (int)(short)*pcVar19 + (int)(short)*pcVar4 + (int)(short)*pcVar34 + + (int)(short)*pcVar49 + + (int)(short)cVar64 + (int)(short)cVar68 + (int)(short)cVar65 + (int)(short)cVar66 + + iVar105; + iVar107 = (int)(short)*pcVar28 + (int)(short)*pcVar13 + (int)(short)*pcVar43 + + (int)(short)*pcVar58 + + (int)(short)*pcVar24 + (int)(short)*pcVar9 + (int)(short)*pcVar39 + + (int)(short)*pcVar54 + + (int)(short)*pcVar20 + (int)(short)*pcVar5 + (int)(short)*pcVar35 + + (int)(short)*pcVar50 + + (int)(short)*pcVar16 + (int)(short)*pcVar1 + (int)(short)*pcVar31 + + (int)(short)*pcVar46 + iVar107; + iVar138 = (int)(short)*pcVar29 + (int)(short)*pcVar14 + (int)(short)*pcVar44 + + (int)(short)*pcVar59 + + (int)(short)*pcVar25 + (int)(short)*pcVar10 + (int)(short)*pcVar40 + + (int)(short)*pcVar55 + + (int)(short)*pcVar21 + (int)(short)*pcVar6 + (int)(short)*pcVar36 + + (int)(short)*pcVar51 + + (int)(short)*pcVar17 + (int)(short)*pcVar2 + (int)(short)*pcVar32 + + (int)(short)*pcVar47 + iVar138; + iVar115 = (int)(short)*pcVar30 + (int)(short)*pcVar15 + (int)(short)*pcVar45 + + (int)(short)*pcVar60 + + (int)(short)*pcVar26 + (int)(short)*pcVar11 + (int)(short)*pcVar41 + + (int)(short)*pcVar56 + + (int)(short)*pcVar22 + (int)(short)*pcVar7 + (int)(short)*pcVar37 + + (int)(short)*pcVar52 + + (int)(short)*pcVar18 + (int)(short)*pcVar3 + (int)(short)*pcVar33 + + (int)(short)*pcVar48 + iVar115; + } while (uVar122 < uVar61); + iVar80 = iVar80 + iVar105 + iVar107 + iVar138 + iVar115; + pcVar71 = pcVar98 + (ulong)(uVar61 * 0x10) * lVar82; + iVar105 = iVar86 + uVar61 * 0x40; + if (uVar110 + 1 != uVar61 * 0x10) goto LAB_003a5a98; + } + iVar86 = iVar86 + 4 + uVar110 * 4; + pcVar98 = pcVar98 + lVar82 + (ulong)uVar110 * lVar82; + } + iVar106 = iVar86; + if (iVar86 < param_4) { + uVar110 = param_4 - iVar86; + uVar61 = (uVar110 - 0x10 >> 4) + 1; + lVar85 = (long)param_5; + uVar122 = uVar61 * 0x10; + if (0xe < (uint)((param_4 + -1) - iVar86)) { + iVar106 = 0; + iVar105 = 0; + iVar107 = 0; + iVar138 = 0; + uVar127 = 0; + pcVar71 = pcVar98 + lVar85 * 10; + pcVar90 = pcVar98; + do { + cVar68 = *pcVar90; + uVar127 = uVar127 + 1; + pcVar79 = pcVar90 + lVar85; + pcVar75 = pcVar90 + lVar85 * 2; + pcVar1 = pcVar90 + lVar85 * 3; + pcVar2 = pcVar90 + lVar85 * 4; + pcVar3 = pcVar90 + lVar85 * 5; + pcVar4 = pcVar90 + lVar85 * 6; + pcVar5 = pcVar71 + lVar85 * -3; + pcVar6 = pcVar90 + lVar85 * 8; + pcVar7 = pcVar90 + lVar85 * 9; + pcVar90 = pcVar90 + lVar85 * 0x10; + cVar64 = *pcVar71; + pcVar8 = pcVar71 + lVar85; + pcVar9 = pcVar71 + lVar85 * 2; + pcVar10 = pcVar71 + lVar85 * 3; + pcVar11 = pcVar71 + lVar85 * 4; + pcVar12 = pcVar71 + lVar85 * 5; + pcVar71 = pcVar71 + lVar85 * 0x10; + iVar106 = (int)(short)*pcVar9 + + (int)(short)*pcVar6 + (int)(short)*pcVar2 + (short)cVar68 + iVar106; + iVar105 = (int)(short)*pcVar10 + + (int)(short)*pcVar7 + (int)(short)*pcVar3 + (short)*pcVar79 + iVar105; + iVar107 = (int)(short)*pcVar11 + + (int)(short)cVar64 + (int)(short)*pcVar4 + (short)*pcVar75 + iVar107; + iVar138 = (int)(short)*pcVar12 + + (int)(short)*pcVar8 + (int)(short)*pcVar5 + (short)*pcVar1 + iVar138; + } while (uVar127 < uVar61); + iVar86 = iVar86 + uVar122; + pcVar98 = pcVar98 + (ulong)uVar122 * lVar85; + iVar80 = iVar80 + iVar106 + iVar105 + iVar107 + iVar138; + iVar106 = param_4; + if (uVar110 == uVar122) goto LAB_003a60c8; + } + iVar80 = iVar80 + *pcVar98; + iVar106 = param_4; + if (((((iVar86 + 1 < param_4) && (iVar80 = iVar80 + pcVar98[lVar85], iVar86 + 2 < param_4)) && + (iVar80 = iVar80 + pcVar98[lVar85 * 2], iVar86 + 3 < param_4)) && + (((iVar80 = iVar80 + pcVar98[lVar85 * 3], iVar86 + 4 < param_4 && + (iVar80 = iVar80 + pcVar98[lVar85 * 4], iVar86 + 5 < param_4)) && + ((iVar80 = iVar80 + pcVar98[lVar85 * 5], iVar86 + 6 < param_4 && + ((iVar80 = iVar80 + pcVar98[lVar85 * 6], iVar86 + 7 < param_4 && + (iVar80 = iVar80 + pcVar98[lVar85 * 7], iVar86 + 8 < param_4)))))))) && + ((iVar80 = iVar80 + pcVar98[lVar85 * 8], iVar86 + 9 < param_4 && + (((iVar80 = iVar80 + pcVar98[lVar85 * 9], iVar86 + 10 < param_4 && + (iVar80 = iVar80 + pcVar98[lVar85 * 10], iVar86 + 0xb < param_4)) && + (iVar80 = iVar80 + pcVar98[lVar85 * 0xb], iVar86 + 0xc < param_4)))))) { + iVar80 = iVar80 + pcVar98[lVar85 * 0xc]; + if ((iVar86 + 0xd < param_4) && + (iVar80 = iVar80 + pcVar98[lVar85 * 0xd], iVar86 + 0xe < param_4)) { + iVar80 = iVar80 + pcVar98[lVar85 * 0xe]; + } + } + } +LAB_003a60c8: + *param_3 = iVar80; +LAB_003a4e24: + if (param_5 <= iVar87) { + /* catch() { ... } // from try @ 003a20e8 with catch @ 003a4c4c + catch() { ... } // from try @ 003a214c with catch @ 003a4c4c + catch() { ... } // from try @ 003a3f24 with catch @ 003a4c4c + catch() { ... } // from try @ 003a4724 with catch @ 003a4c4c + catch() { ... } // from try @ 003a4750 with catch @ 003a4c4c */ + /* catch() { ... } // from try @ 003a233c with catch @ 003a4c54 + catch() { ... } // from try @ 003a3f98 with catch @ 003a4c54 + catch() { ... } // from try @ 003a4744 with catch @ 003a4c54 */ + /* catch() { ... } // from try @ 003a2238 with catch @ 003a4c5c */ + return param_4; + } + lVar88 = (long)param_5; + lVar94 = lVar88 * 2; + lVar92 = lVar88 * 8; + lVar81 = lVar88 * 3; + lVar97 = lVar88 * 4; + lVar82 = lVar88 * 5; + lVar96 = lVar88 * 0xc; + lVar132 = NEON_shl(lVar88,4); + lVar78 = (long)iVar87; + lVar95 = lVar88 * 10; + /* try { // try from 003a4e7c to 004a4e7f has its CatchHandler @ 003a6178 */ + /* try { // try from 003a4e84 to 004a52f3 has its CatchHandler @ 003a61b4 */ + lVar85 = lVar88 * 7; + lVar103 = lVar88 * 6; + lVar83 = lVar88 * 9; + lVar104 = lVar132 + lVar88 * -2; + lVar99 = lVar132 - lVar88; + lVar101 = lVar88 * 0xd; + lVar137 = lVar88 * 0xb; + piVar72 = param_3 + lVar78; + lVar77 = lVar78; + lVar89 = lVar78 + 4; + do { + iVar107 = *piVar72; + iVar86 = piVar72[1]; + iVar105 = piVar72[2]; + iVar80 = piVar72[3]; + lVar91 = (long)(param_5 * iVar106); + pcVar98 = (char *)((long)param_1 + lVar91 + lVar77); + iVar138 = iVar106; + if (iVar106 < param_4) { + uVar122 = param_4 - iVar106; + uVar61 = (uVar122 - 0x10 >> 4) + 1; + uVar110 = uVar61 * 0x10; + iVar138 = param_4; + if (0xe < (uint)((param_4 + -1) - iVar106)) { + iVar121 = 0; + iVar123 = 0; + iVar124 = 0; + iVar125 = 0; + uVar127 = 0; + pcVar71 = (char *)((long)param_1 + lVar91 + lVar77 + 2); + pcVar90 = (char *)((long)param_1 + lVar91 + lVar77 + 1); + pcVar79 = (char *)((long)param_1 + lVar91 + lVar77 + 3); + pcVar75 = pcVar98; + iVar115 = iVar121; + iVar116 = iVar123; + iVar126 = iVar121; + iVar128 = iVar123; + iVar131 = iVar121; + iVar133 = iVar123; + iVar117 = iVar124; + iVar118 = iVar125; + iVar129 = iVar124; + iVar130 = iVar125; + iVar134 = iVar124; + iVar136 = iVar125; + do { + uVar127 = uVar127 + 1; + cVar68 = *pcVar75; + pcVar1 = pcVar75 + lVar88; + pcVar2 = pcVar75 + lVar94; + pcVar3 = pcVar75 + lVar81; + pcVar4 = pcVar75 + lVar97; + pcVar5 = pcVar75 + lVar82; + pcVar6 = pcVar75 + lVar103; + pcVar7 = pcVar75 + lVar85; + pcVar8 = pcVar75 + lVar92; + pcVar9 = pcVar75 + lVar83; + pcVar10 = pcVar75 + lVar95; + pcVar11 = pcVar75 + lVar137; + pcVar12 = pcVar75 + lVar96; + pcVar13 = pcVar75 + lVar101; + pcVar14 = pcVar75 + lVar104; + pcVar15 = pcVar75 + lVar99; + pcVar75 = pcVar75 + lVar132; + cVar64 = *pcVar90; + pcVar16 = pcVar90 + lVar88; + pcVar17 = pcVar90 + lVar94; + pcVar18 = pcVar90 + lVar81; + pcVar19 = pcVar90 + lVar97; + pcVar20 = pcVar90 + lVar82; + pcVar21 = pcVar90 + lVar103; + pcVar22 = pcVar90 + lVar85; + iVar121 = (int)(short)*pcVar12 + + (int)(short)*pcVar8 + (int)(short)*pcVar4 + (short)cVar68 + iVar121; + iVar123 = (int)(short)*pcVar13 + + (int)(short)*pcVar9 + (int)(short)*pcVar5 + (short)*pcVar1 + iVar123; + iVar124 = (int)(short)*pcVar14 + + (int)(short)*pcVar10 + (int)(short)*pcVar6 + (short)*pcVar2 + iVar124; + iVar125 = (int)(short)*pcVar15 + + (int)(short)*pcVar11 + (int)(short)*pcVar7 + (short)*pcVar3 + iVar125; + pcVar1 = pcVar90 + lVar92; + pcVar2 = pcVar90 + lVar83; + pcVar3 = pcVar90 + lVar95; + pcVar4 = pcVar90 + lVar137; + pcVar5 = pcVar90 + lVar96; + pcVar6 = pcVar90 + lVar101; + pcVar7 = pcVar90 + lVar104; + pcVar8 = pcVar90 + lVar99; + pcVar90 = pcVar90 + lVar132; + cVar68 = *pcVar71; + pcVar9 = pcVar71 + lVar88; + pcVar10 = pcVar71 + lVar94; + pcVar11 = pcVar71 + lVar81; + pcVar12 = pcVar71 + lVar97; + pcVar13 = pcVar71 + lVar82; + pcVar14 = pcVar71 + lVar103; + pcVar15 = pcVar71 + lVar85; + iVar126 = (int)(short)*pcVar5 + + (int)(short)*pcVar1 + (int)(short)*pcVar19 + (short)cVar64 + iVar126; + iVar128 = (int)(short)*pcVar6 + + (int)(short)*pcVar2 + (int)(short)*pcVar20 + (short)*pcVar16 + iVar128; + iVar129 = (int)(short)*pcVar7 + + (int)(short)*pcVar3 + (int)(short)*pcVar21 + (short)*pcVar17 + iVar129; + iVar130 = (int)(short)*pcVar8 + + (int)(short)*pcVar4 + (int)(short)*pcVar22 + (short)*pcVar18 + iVar130; + pcVar1 = pcVar71 + lVar92; + pcVar2 = pcVar71 + lVar83; + pcVar3 = pcVar71 + lVar95; + pcVar4 = pcVar71 + lVar137; + pcVar5 = pcVar71 + lVar96; + pcVar6 = pcVar71 + lVar101; + pcVar7 = pcVar71 + lVar104; + pcVar8 = pcVar71 + lVar99; + pcVar71 = pcVar71 + lVar132; + cVar64 = *pcVar79; + pcVar16 = pcVar79 + lVar88; + pcVar17 = pcVar79 + lVar94; + pcVar18 = pcVar79 + lVar81; + pcVar19 = pcVar79 + lVar97; + pcVar20 = pcVar79 + lVar82; + pcVar21 = pcVar79 + lVar103; + pcVar22 = pcVar79 + lVar85; + iVar131 = (int)(short)*pcVar5 + + (int)(short)*pcVar1 + (int)(short)*pcVar12 + (short)cVar68 + iVar131; + iVar133 = (int)(short)*pcVar6 + + (int)(short)*pcVar2 + (int)(short)*pcVar13 + (short)*pcVar9 + iVar133; + iVar134 = (int)(short)*pcVar7 + + (int)(short)*pcVar3 + (int)(short)*pcVar14 + (short)*pcVar10 + iVar134; + iVar136 = (int)(short)*pcVar8 + + (int)(short)*pcVar4 + (int)(short)*pcVar15 + (short)*pcVar11 + iVar136; + pcVar1 = pcVar79 + lVar92; + pcVar2 = pcVar79 + lVar83; + pcVar3 = pcVar79 + lVar95; + pcVar4 = pcVar79 + lVar137; + pcVar5 = pcVar79 + lVar96; + pcVar6 = pcVar79 + lVar101; + pcVar7 = pcVar79 + lVar104; + pcVar8 = pcVar79 + lVar99; + pcVar79 = pcVar79 + lVar132; + iVar115 = (int)(short)*pcVar5 + + (int)(short)*pcVar1 + (int)(short)*pcVar19 + (short)cVar64 + iVar115; + iVar116 = (int)(short)*pcVar6 + + (int)(short)*pcVar2 + (int)(short)*pcVar20 + (short)*pcVar16 + iVar116; + iVar117 = (int)(short)*pcVar7 + + (int)(short)*pcVar3 + (int)(short)*pcVar21 + (short)*pcVar17 + iVar117; + iVar118 = (int)(short)*pcVar8 + + (int)(short)*pcVar4 + (int)(short)*pcVar22 + (short)*pcVar18 + iVar118; + } while (uVar127 < uVar61); + iVar106 = iVar106 + uVar110; + pcVar98 = pcVar98 + (ulong)uVar110 * lVar88; + iVar86 = iVar86 + iVar126 + iVar128 + iVar129 + iVar130; + iVar80 = iVar80 + iVar115 + iVar116 + iVar117 + iVar118; + iVar105 = iVar105 + iVar131 + iVar133 + iVar134 + iVar136; + iVar107 = iVar107 + iVar121 + iVar123 + iVar124 + iVar125; + if (uVar110 == uVar122) goto LAB_003a5650; + } + iVar86 = iVar86 + pcVar98[1]; + iVar107 = iVar107 + *pcVar98; + iVar105 = iVar105 + pcVar98[2]; + iVar80 = iVar80 + pcVar98[3]; + if (iVar106 + 1 < param_4) { + iVar105 = iVar105 + pcVar98[lVar88 + 2]; + iVar80 = iVar80 + pcVar98[lVar88 + 3]; + lVar77 = lVar88 * 2; + iVar107 = iVar107 + pcVar98[lVar88]; + iVar86 = iVar86 + pcVar98[lVar88 + 1]; + if (iVar106 + 2 < param_4) { + /* try { // try from 003a5364 to 004a5367 has its CatchHandler @ 003a6150 */ + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + lVar91 = lVar88 * 3; + iVar107 = iVar107 + pcVar98[lVar88 * 2]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + if (iVar106 + 3 < param_4) { + /* try { // try from 003a5390 to 004a53e3 has its CatchHandler @ 003a4cd8 */ + iVar105 = iVar105 + pcVar98[lVar91 + 2]; + iVar80 = iVar80 + pcVar98[lVar91 + 3]; + lVar77 = lVar88 * 4; + iVar107 = iVar107 + pcVar98[lVar88 * 3]; + iVar86 = iVar86 + pcVar98[lVar91 + 1]; + if (iVar106 + 4 < param_4) { + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + lVar91 = lVar88 * 5; + iVar107 = iVar107 + pcVar98[lVar88 * 4]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + if (iVar106 + 5 < param_4) { + iVar105 = iVar105 + pcVar98[lVar91 + 2]; + iVar80 = iVar80 + pcVar98[lVar91 + 3]; + lVar77 = lVar88 * 6; + iVar107 = iVar107 + pcVar98[lVar88 * 5]; + iVar86 = iVar86 + pcVar98[lVar91 + 1]; + if (iVar106 + 6 < param_4) { + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + lVar91 = lVar88 * 7; + iVar107 = iVar107 + pcVar98[lVar88 * 6]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + if (iVar106 + 7 < param_4) { + iVar105 = iVar105 + pcVar98[lVar91 + 2]; + iVar80 = iVar80 + pcVar98[lVar91 + 3]; + lVar77 = lVar88 * 8; + iVar107 = iVar107 + pcVar98[lVar88 * 7]; + iVar86 = iVar86 + pcVar98[lVar91 + 1]; + if (iVar106 + 8 < param_4) { + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + lVar91 = lVar88 * 9; + iVar107 = iVar107 + pcVar98[lVar88 * 8]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + if (iVar106 + 9 < param_4) { + iVar105 = iVar105 + pcVar98[lVar91 + 2]; + iVar80 = iVar80 + pcVar98[lVar91 + 3]; + lVar77 = lVar88 * 10; + iVar107 = iVar107 + pcVar98[lVar88 * 9]; + iVar86 = iVar86 + pcVar98[lVar91 + 1]; + if (iVar106 + 10 < param_4) { + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + lVar91 = lVar88 * 0xb; + iVar107 = iVar107 + pcVar98[lVar88 * 10]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + if (iVar106 + 0xb < param_4) { + iVar105 = iVar105 + pcVar98[lVar91 + 2]; + iVar80 = iVar80 + pcVar98[lVar91 + 3]; + lVar77 = lVar88 * 0xc; + iVar107 = iVar107 + pcVar98[lVar88 * 0xb]; + iVar86 = iVar86 + pcVar98[lVar91 + 1]; + if (iVar106 + 0xc < param_4) { + iVar107 = iVar107 + pcVar98[lVar88 * 0xc]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + lVar91 = lVar88 * 0xd; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + if (iVar106 + 0xd < param_4) { + iVar107 = iVar107 + pcVar98[lVar88 * 0xd]; + iVar86 = iVar86 + pcVar98[lVar91 + 1]; + iVar105 = iVar105 + pcVar98[lVar91 + 2]; + lVar77 = lVar88 * 0xe; + iVar80 = iVar80 + pcVar98[lVar91 + 3]; + if (iVar106 + 0xe < param_4) { + iVar107 = iVar107 + pcVar98[lVar88 * 0xe]; + iVar86 = iVar86 + pcVar98[lVar77 + 1]; + iVar105 = iVar105 + pcVar98[lVar77 + 2]; + iVar80 = iVar80 + pcVar98[lVar77 + 3]; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003a5650: + iVar106 = iVar138; + *(ulong *)(piVar72 + 2) = CONCAT44(iVar80,iVar105); + *(ulong *)piVar72 = CONCAT44(iVar86,iVar107); + if (lVar89 == lVar78 + 4 + (ulong)((param_5 - 1U) - iVar87 >> 2) * 4) { + return param_4; + } + piVar72 = piVar72 + 4; + lVar77 = lVar89; + lVar89 = lVar89 + 4; + } while( true ); +} + + +================================================================== + +### FUNC 003a6ccc (6028 bytes) name=FUN_003a6ccc + +int FUN_003a6ccc(ushort *param_1,long param_2,int *param_3,int param_4,ulong param_5) + +{ + char *pcVar1; + ushort *puVar2; + ushort *puVar3; + ushort *puVar4; + ushort *puVar5; + ushort *puVar6; + ushort *puVar7; + ushort *puVar8; + ushort *puVar9; + ushort *puVar10; + ushort *puVar11; + ushort *puVar12; + ushort *puVar13; + ushort *puVar14; + ushort *puVar15; + ushort *puVar16; + ushort *puVar17; + ushort *puVar18; + ushort *puVar19; + ushort *puVar20; + ushort *puVar21; + ushort *puVar22; + ushort *puVar23; + ushort *puVar24; + ushort *puVar25; + ushort *puVar26; + ushort *puVar27; + ushort *puVar28; + ushort *puVar29; + uint uVar30; + uint uVar31; + ushort uVar32; + uint uVar33; + int *piVar34; + ushort *puVar35; + ushort *puVar36; + ulong uVar37; + int *piVar38; + int iVar39; + long lVar40; + int *piVar41; + ushort *puVar42; + long lVar43; + int iVar44; + int iVar45; + int iVar46; + ulong uVar47; + uint uVar48; + long lVar49; + ushort *puVar50; + uint uVar51; + ushort *puVar52; + int *piVar53; + uint uVar54; + uint uVar55; + int iVar56; + int iVar57; + int iVar58; + int iVar59; + int iVar60; + int iVar61; + undefined8 uVar62; + int iVar63; + int iVar64; + int iVar65; + undefined8 uVar66; + int iVar68; + undefined8 uVar67; + int iVar69; + undefined8 uVar70; + int iVar71; + int iVar72; + int iVar73; + int iVar74; + int iVar75; + int iVar76; + ushort uVar77; + ushort uVar78; + long lVar79; + undefined8 uVar80; + int iVar81; + int iVar82; + int iVar83; + ushort uVar84; + long lVar85; + long lVar86; + long lVar87; + long lVar88; + long lVar89; + long lVar90; + long lVar91; + int local_10 [4]; + + iVar39 = (int)param_5; + if (param_2 != 0) { + if (iVar39 == 1) { + iVar39 = *param_3; + if (param_4 < 1) { + iVar45 = 0; + } + else { + lVar43 = 0; + iVar45 = 0; + do { + if (*(char *)(param_2 + lVar43) != '\0') { + iVar45 = iVar45 + 1; + iVar39 = iVar39 + (uint)param_1[lVar43]; + } + lVar43 = lVar43 + 1; + } while ((int)lVar43 < param_4); + } + *param_3 = iVar39; + return iVar45; + } + if (iVar39 == 3) { + iVar39 = *param_3; + iVar45 = param_3[1]; + iVar44 = param_3[2]; + if (param_4 < 1) { + iVar46 = 0; + } + else { + lVar43 = 0; + iVar46 = 0; + do { + pcVar1 = (char *)(param_2 + lVar43); + lVar43 = lVar43 + 1; + /* catch() { ... } // from try @ 003a7310 with catch @ 003a72d4 + catch() { ... } // from try @ 003a7670 with catch @ 003a72d4 + catch() { ... } // from try @ 003a7780 with catch @ 003a72d4 */ + if (*pcVar1 != '\0') { + iVar46 = iVar46 + 1; + iVar39 = iVar39 + (uint)*param_1; + iVar45 = iVar45 + (uint)param_1[1]; + iVar44 = iVar44 + (uint)param_1[2]; + } + param_1 = param_1 + 3; + } while ((int)lVar43 < param_4); + } + *param_3 = iVar39; + param_3[1] = iVar45; + param_3[2] = iVar44; + return iVar46; + /* try { // try from 003a7310 to 004a7313 has its CatchHandler @ 003a72d4 */ + } + if (param_4 < 1) { + return 0; + } + uVar33 = iVar39 - 4; + lVar43 = 0; + iVar44 = 0; + iVar45 = (uVar33 >> 2) + 1; + iVar57 = iVar45 * 4; + uVar30 = ((uVar33 >> 2) - 1 >> 1) + 1; + iVar46 = uVar30 * 8; + if (uVar33 < 4) { + iVar46 = 0; + } + lVar49 = (long)iVar46; + if (iVar39 + -3 < 1) { + iVar57 = 0; + } + iVar46 = iVar57 + 1; + iVar73 = iVar57 + 2; + lVar40 = (long)iVar57; + /* try { // try from 003a6db0 to 004a6db3 has its CatchHandler @ 003a71c8 */ + lVar90 = NEON_shl(lVar40,1); + iVar59 = iVar57 + 3; + iVar60 = iVar57 + 4; + lVar89 = NEON_shl((long)iVar46,1); + piVar38 = param_3 + lVar40; + lVar88 = NEON_shl((long)iVar73,1); + iVar56 = iVar57 + 5; + uVar55 = -((uint)((ulong)piVar38 >> 2) & 3) & 3; + lVar87 = NEON_shl((long)iVar59,1); + iVar58 = iVar57 + 6; + iVar72 = iVar57 + 7; + /* try { // try from 003a6e3c to 004a6e3f has its CatchHandler @ 003a71d0 */ + lVar86 = NEON_shl((long)iVar60,1); + uVar54 = iVar39 - iVar57; + /* try { // try from 003a6e6c to 004a6ecb has its CatchHandler @ 003a61c0 */ + if (uVar54 < uVar55) { + uVar55 = uVar54; + } + lVar85 = NEON_shl((long)iVar56,1); + lVar79 = NEON_shl((long)iVar58,1); + lVar91 = NEON_shl((long)iVar72,1); + do { + if (*(char *)(param_2 + lVar43) != '\0') { + if (0 < iVar39 + -3) { + if (3 < uVar33) { + piVar41 = param_3 + 4; + uVar48 = 0; + puVar50 = param_1; + piVar53 = param_3; + do { + uVar62 = *(undefined8 *)(puVar50 + 4); + uVar67 = *(undefined8 *)puVar50; + uVar48 = uVar48 + 1; + uVar70 = *(undefined8 *)(piVar41 + 2); + uVar66 = *(undefined8 *)piVar41; + *(ulong *)(piVar53 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar53 + 2) >> 0x20) + + (uint)(ushort)((ulong)uVar67 >> 0x30), + (int)*(undefined8 *)(piVar53 + 2) + + (uint)(ushort)((ulong)uVar67 >> 0x20)); + *(ulong *)piVar53 = + CONCAT44((int)((ulong)*(undefined8 *)piVar53 >> 0x20) + + (uint)(ushort)((ulong)uVar67 >> 0x10), + (int)*(undefined8 *)piVar53 + ((uint)uVar67 & 0xffff)); + piVar53 = piVar53 + 8; + *(ulong *)(piVar41 + 2) = + CONCAT44((int)((ulong)uVar70 >> 0x20) + (uint)(ushort)((ulong)uVar62 >> 0x30), + (int)uVar70 + (uint)(ushort)((ulong)uVar62 >> 0x20)); + *(ulong *)piVar41 = + CONCAT44((int)((ulong)uVar66 >> 0x20) + (uint)(ushort)((ulong)uVar62 >> 0x10), + (int)uVar66 + ((uint)uVar62 & 0xffff)); + piVar41 = piVar41 + 8; + puVar50 = puVar50 + 8; + } while (uVar48 < uVar30); + if (iVar45 == uVar30 * 2) goto LAB_003a6f94; + } + uVar32 = param_1[lVar49 + 1]; + param_3[lVar49] = param_3[lVar49] + (uint)param_1[lVar49]; + param_3[lVar49 + 1] = (uint)uVar32 + param_3[lVar49 + 1]; + uVar32 = param_1[lVar49 + 3]; + param_3[lVar49 + 2] = param_3[lVar49 + 2] + (uint)param_1[lVar49 + 2]; + param_3[lVar49 + 3] = (uint)uVar32 + param_3[lVar49 + 3]; + } +LAB_003a6f94: + if (iVar57 < iVar39) { + uVar48 = uVar55; + if (uVar54 < 9) { + uVar48 = uVar54; + } + iVar74 = iVar57; + if (uVar48 != 0) { + *piVar38 = *piVar38 + (uint)*(ushort *)((long)param_1 + lVar90); + iVar74 = iVar46; + /* try { // try from 003a6fcc to 004a6fcf has its CatchHandler @ 003a71d0 */ + if (((((uVar48 != 1) && + (param_3[iVar46] = param_3[iVar46] + (uint)*(ushort *)((long)param_1 + lVar89), + iVar74 = iVar73, uVar48 != 2)) && + (param_3[iVar73] = param_3[iVar73] + (uint)*(ushort *)((long)param_1 + lVar88), + iVar74 = iVar59, uVar48 != 3)) && + ((param_3[iVar59] = param_3[iVar59] + (uint)*(ushort *)((long)param_1 + lVar87), + iVar74 = iVar60, uVar48 != 4 && + (param_3[iVar60] = param_3[iVar60] + (uint)*(ushort *)((long)param_1 + lVar86), + iVar74 = iVar56, uVar48 != 5)))) && + ((param_3[iVar56] = param_3[iVar56] + (uint)*(ushort *)((long)param_1 + lVar85), + iVar74 = iVar58, uVar48 != 6 && + (param_3[iVar58] = param_3[iVar58] + (uint)*(ushort *)((long)param_1 + lVar79), + iVar74 = iVar72, uVar48 == 8)))) { + param_3[iVar72] = param_3[iVar72] + (uint)*(ushort *)((long)param_1 + lVar91); + iVar74 = iVar57 + 8; + } + if (uVar54 == uVar48) goto LAB_003a7224; + } + uVar31 = ((uVar54 - uVar48) - 8 >> 3) + 1; + iVar64 = uVar31 * 8; + if (6 < (uVar54 - 1) - uVar48) { + /* try { // try from 003a70c0 to 004a70c3 has its CatchHandler @ 003a71c8 */ + uVar51 = 0; + piVar41 = param_3 + lVar40 + (ulong)uVar48; + /* try { // try from 003a70d4 to 004a70d7 has its CatchHandler @ 003a61c0 */ + puVar50 = param_1 + lVar40 + (ulong)uVar48; + piVar53 = piVar41; + do { + uVar62 = *(undefined8 *)(puVar50 + 4); + uVar67 = *(undefined8 *)puVar50; + piVar34 = piVar41 + 2; + uVar66 = *(undefined8 *)piVar41; + uVar80 = *(undefined8 *)(piVar41 + 6); + uVar70 = *(undefined8 *)(piVar41 + 4); + uVar51 = uVar51 + 1; + piVar41 = piVar41 + 8; + /* try { // try from 003a7100 to 004a7103 has its CatchHandler @ 003a71d0 */ + /* try { // try from 003a710c to 004a710f has its CatchHandler @ 003a71c8 */ + /* catch() { ... } // from try @ 003a637c with catch @ 003a7114 */ + *(ulong *)(piVar53 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)piVar34 >> 0x20) + + (uint)(ushort)((ulong)uVar67 >> 0x30), + (int)*(undefined8 *)piVar34 + (uint)(ushort)((ulong)uVar67 >> 0x20)); + *(ulong *)piVar53 = + CONCAT44((int)((ulong)uVar66 >> 0x20) + (uint)(ushort)((ulong)uVar67 >> 0x10), + (int)uVar66 + ((uint)uVar67 & 0xffff)); + *(ulong *)(piVar53 + 6) = + CONCAT44((uint)(ushort)((ulong)uVar62 >> 0x30) + (int)((ulong)uVar80 >> 0x20), + (uint)(ushort)((ulong)uVar62 >> 0x20) + (int)uVar80); + *(ulong *)(piVar53 + 4) = + CONCAT44((uint)(ushort)((ulong)uVar62 >> 0x10) + (int)((ulong)uVar70 >> 0x20), + ((uint)uVar62 & 0xffff) + (int)uVar70); + puVar50 = puVar50 + 8; + piVar53 = piVar53 + 8; + } while (uVar51 < uVar31); + iVar74 = iVar74 + iVar64; + if (uVar54 - uVar48 == iVar64) goto LAB_003a7224; + } + iVar64 = iVar74 + 1; + param_3[iVar74] = param_3[iVar74] + (uint)param_1[iVar74]; + if (iVar64 < iVar39) { + iVar81 = iVar74 + 2; + param_3[iVar64] = param_3[iVar64] + (uint)param_1[iVar64]; + /* try { // try from 003a7178 to 004a717b has its CatchHandler @ 003a61c0 */ + if (iVar81 < iVar39) { + iVar64 = iVar74 + 3; + /* catch() { ... } // from try @ 003a6cb8 with catch @ 003a7194 */ + param_3[iVar81] = param_3[iVar81] + (uint)param_1[iVar81]; + if (iVar64 < iVar39) { + iVar81 = iVar74 + 4; + param_3[iVar64] = param_3[iVar64] + (uint)param_1[iVar64]; + if (iVar81 < iVar39) { + /* catch() { ... } // from try @ 003a6338 with catch @ 003a71c8 + catch() { ... } // from try @ 003a6384 with catch @ 003a71c8 + catch() { ... } // from try @ 003a6db0 with catch @ 003a71c8 + catch() { ... } // from try @ 003a70c0 with catch @ 003a71c8 + catch() { ... } // from try @ 003a710c with catch @ 003a71c8 */ + iVar64 = iVar74 + 5; + /* catch() { ... } // from try @ 003a6e3c with catch @ 003a71d0 + catch() { ... } // from try @ 003a6fcc with catch @ 003a71d0 + catch() { ... } // from try @ 003a7100 with catch @ 003a71d0 */ + param_3[iVar81] = param_3[iVar81] + (uint)param_1[iVar81]; + if (iVar64 < iVar39) { + iVar74 = iVar74 + 6; + param_3[iVar64] = param_3[iVar64] + (uint)param_1[iVar64]; + if (iVar74 < iVar39) { + /* catch() { ... } // from try @ 003a672c with catch @ 003a7210 + catch() { ... } // from try @ 003a6cc0 with catch @ 003a7210 */ + param_3[iVar74] = param_3[iVar74] + (uint)param_1[iVar74]; + } + } + } + } + } + } + } +LAB_003a7224: + iVar44 = iVar44 + 1; + } + lVar43 = lVar43 + 1; + param_1 = (ushort *) + ((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1)); + if (param_4 <= (int)lVar43) { + return iVar44; + } + } while( true ); + } + if (iVar39 - 1U < 2) { +LAB_003a825c: + if (param_4 < 8) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + iVar44 = 0; + } + else { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + uVar30 = param_4 - 8U >> 3; + puVar50 = param_1; + do { + puVar35 = puVar50 + 8; + uVar62 = *(undefined8 *)(puVar50 + 4); + uVar67 = *(undefined8 *)puVar50; + local_10[0] = local_10[0] + ((uint)uVar67 & 0xffff) + ((uint)uVar62 & 0xffff); + local_10[1] = local_10[1] + (uint)(ushort)((ulong)uVar67 >> 0x10) + + (uint)(ushort)((ulong)uVar62 >> 0x10); + local_10[2] = local_10[2] + (uint)(ushort)((ulong)uVar67 >> 0x20) + + (uint)(ushort)((ulong)uVar62 >> 0x20); + local_10[3] = local_10[3] + (uint)(ushort)((ulong)uVar67 >> 0x30) + + (uint)(ushort)((ulong)uVar62 >> 0x30); + puVar50 = puVar35; + } while (puVar35 != param_1 + ((ulong)uVar30 + 1) * 8); + iVar44 = (uVar30 + 1) * 8; + } + if (iVar44 < param_4 + -3) { + uVar30 = (uint)((param_4 + -4) - iVar44) >> 2; + puVar50 = param_1 + iVar44; + do { + puVar35 = puVar50 + 4; + uVar67 = *(undefined8 *)puVar50; + local_10[0] = local_10[0] + ((uint)uVar67 & 0xffff); + local_10[1] = local_10[1] + (uint)(ushort)((ulong)uVar67 >> 0x10); + local_10[2] = local_10[2] + (uint)(ushort)((ulong)uVar67 >> 0x20); + local_10[3] = local_10[3] + (uint)(ushort)((ulong)uVar67 >> 0x30); + puVar50 = puVar35; + } while (puVar35 != param_1 + (long)iVar44 + 4 + (ulong)uVar30 * 4); + iVar44 = iVar44 + 4 + uVar30 * 4; + } + if (iVar39 < 1) { + do { + /* WARNING: Do nothing block with infinite loop */ + } while( true ); + } + if (iVar39 == 1) { + iVar46 = *param_3; + iVar45 = 0; + do { + lVar43 = (long)iVar45; + iVar45 = iVar45 + 1; + iVar46 = iVar46 + local_10[lVar43]; + } while (iVar45 != 4); + *param_3 = iVar46; + } + else if (iVar39 == 2) { + iVar57 = param_3[1]; + iVar45 = 0; + iVar46 = *param_3; + do { + lVar43 = (long)iVar45; + iVar73 = iVar45 + 1; + iVar45 = iVar45 + 2; + iVar46 = iVar46 + local_10[lVar43]; + iVar57 = iVar57 + local_10[iVar73]; + } while (iVar45 != 4); + *param_3 = iVar46; + param_3[1] = iVar57; + } + else if (iVar39 == 3) { + iVar57 = param_3[2]; + iVar73 = 0; + iVar46 = param_3[1]; + iVar45 = *param_3; + while( true ) { + iVar45 = iVar45 + local_10[iVar73]; + iVar46 = iVar46 + local_10[iVar73 + 1]; + iVar57 = iVar57 + local_10[iVar73 + 2]; + if (iVar73 != 0) break; + iVar73 = 3; + } + *param_3 = iVar45; + param_3[1] = iVar46; + param_3[2] = iVar57; + } + else { + param_3[1] = local_10[1] + param_3[1]; + param_3[2] = local_10[2] + param_3[2]; + *param_3 = *param_3 + local_10[0]; + param_3[3] = local_10[3] + param_3[3]; + } + iVar45 = 0; + if (iVar39 != 0) { + iVar45 = iVar44 / iVar39; + } + uVar37 = -(ulong)((uint)(iVar39 * iVar45) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar39 * iVar45) << 1; + } + else { + iVar45 = 0; + uVar37 = 0; + if (iVar39 == 4) goto LAB_003a825c; + } + puVar50 = (ushort *)((long)param_1 + uVar37); + iVar44 = iVar39 % 4; + if (iVar44 != 1) { + iVar57 = iVar45; + if (iVar44 != 2) { + if (iVar44 != 3) goto LAB_003a73ac; + iVar59 = *param_3; + iVar73 = param_3[1]; + iVar46 = param_3[2]; + if (iVar45 < param_4) { + uVar55 = param_4 - iVar45; + lVar43 = (long)iVar39; + uVar30 = (uVar55 - 8 >> 3) + 1; + uVar33 = uVar30 * 8; + if (6 < (uint)((param_4 + -1) - iVar45)) { + iVar61 = 0; + iVar63 = 0; + iVar75 = 0; + iVar76 = 0; + puVar35 = (ushort *)((long)param_1 + uVar37 + 2); + puVar36 = (ushort *)((long)param_1 + uVar37 + 4); + uVar54 = 0; + puVar42 = puVar50; + iVar57 = iVar61; + iVar60 = iVar63; + iVar56 = iVar61; + iVar58 = iVar63; + iVar72 = iVar75; + iVar74 = iVar76; + iVar64 = iVar75; + iVar81 = iVar76; + do { + uVar32 = *puVar42; + uVar54 = uVar54 + 1; + puVar52 = puVar42 + lVar43; + uVar77 = *puVar35; + puVar2 = puVar42 + lVar43 * 2; + puVar3 = puVar42 + lVar43 * 3; + puVar4 = puVar42 + lVar43 * 4; + puVar5 = puVar42 + lVar43 * 5; + puVar6 = puVar42 + lVar43 * 6; + puVar7 = puVar42 + lVar43 * 7; + puVar42 = puVar42 + lVar43 * 8; + puVar8 = puVar35 + lVar43; + puVar9 = puVar35 + lVar43 * 2; + puVar10 = puVar35 + lVar43 * 3; + puVar11 = puVar35 + lVar43 * 4; + puVar12 = puVar35 + lVar43 * 5; + iVar61 = (uint)*puVar4 + (uint)uVar32 + iVar61; + iVar63 = (uint)*puVar5 + (uint)*puVar52 + iVar63; + iVar75 = (uint)*puVar6 + (uint)*puVar2 + iVar75; + iVar76 = (uint)*puVar7 + (uint)*puVar3 + iVar76; + puVar52 = puVar35 + lVar43 * 6; + puVar2 = puVar35 + lVar43 * 7; + puVar35 = puVar35 + lVar43 * 8; + uVar32 = *puVar36; + puVar3 = puVar36 + lVar43; + puVar4 = puVar36 + lVar43 * 2; + puVar5 = puVar36 + lVar43 * 3; + puVar6 = puVar36 + lVar43 * 4; + iVar56 = (uint)*puVar11 + (uint)uVar77 + iVar56; + iVar58 = (uint)*puVar12 + (uint)*puVar8 + iVar58; + iVar64 = (uint)*puVar52 + (uint)*puVar9 + iVar64; + iVar81 = (uint)*puVar2 + (uint)*puVar10 + iVar81; + puVar52 = puVar36 + lVar43 * 5; + puVar2 = puVar36 + lVar43 * 6; + puVar7 = puVar36 + lVar43 * 7; + puVar36 = puVar36 + lVar43 * 8; + iVar57 = (uint)*puVar6 + (uint)uVar32 + iVar57; + iVar60 = (uint)*puVar52 + (uint)*puVar3 + iVar60; + iVar72 = (uint)*puVar2 + (uint)*puVar4 + iVar72; + iVar74 = (uint)*puVar7 + (uint)*puVar5 + iVar74; + } while (uVar54 < uVar30); + puVar50 = (ushort *)((long)puVar50 + (ulong)uVar33 * lVar43 * 2); + iVar45 = iVar45 + uVar33; + iVar46 = iVar46 + iVar57 + iVar60 + iVar72 + iVar74; + iVar73 = iVar73 + iVar56 + iVar58 + iVar64 + iVar81; + iVar59 = iVar59 + iVar61 + iVar63 + iVar75 + iVar76; + iVar57 = param_4; + if (uVar55 == uVar33) goto LAB_003a824c; + } + iVar59 = iVar59 + (uint)*puVar50; + iVar73 = iVar73 + (uint)puVar50[1]; + iVar46 = iVar46 + (uint)puVar50[2]; + iVar57 = param_4; + if (iVar45 + 1 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar43]; + iVar73 = iVar73 + (uint)puVar50[lVar43 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar43 + 2]; + if (iVar45 + 2 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar43 * 2]; + iVar73 = iVar73 + (uint)puVar50[lVar43 * 2 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 2 + 2]; + if (iVar45 + 3 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar43 * 3]; + iVar73 = iVar73 + (uint)puVar50[lVar43 * 3 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 3 + 2]; + if (iVar45 + 4 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar43 * 4]; + iVar73 = iVar73 + (uint)puVar50[lVar43 * 4 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 4 + 2]; + if (iVar45 + 5 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar43 * 5]; + iVar73 = iVar73 + (uint)puVar50[lVar43 * 5 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 5 + 2]; + if (iVar45 + 6 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar43 * 6]; + iVar73 = iVar73 + (uint)puVar50[lVar43 * 6 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 6 + 2]; + } + } + } + } + } + } + } +LAB_003a824c: + *param_3 = iVar59; + param_3[1] = iVar73; + param_3[2] = iVar46; + goto LAB_003a73ac; + } + iVar73 = *param_3; + iVar46 = param_3[1]; + if (iVar45 < param_4) { + uVar55 = param_4 - iVar45; + lVar43 = (long)iVar39; + uVar30 = (uVar55 - 8 >> 3) + 1; + uVar33 = uVar30 * 8; + if (6 < (uint)((param_4 + -1) - iVar45)) { + iVar58 = 0; + iVar72 = 0; + iVar74 = 0; + iVar64 = 0; + /* try { // try from 003a7d68 to 004a7d6b has its CatchHandler @ 003a7e98 */ + puVar35 = (ushort *)((long)param_1 + uVar37 + 2); + uVar54 = 0; + puVar36 = puVar50; + iVar57 = iVar58; + iVar59 = iVar72; + iVar60 = iVar74; + iVar56 = iVar64; + do { + uVar32 = *puVar36; + uVar54 = uVar54 + 1; + puVar42 = puVar36 + lVar43; + uVar77 = *puVar35; + puVar52 = puVar36 + lVar43 * 2; + puVar2 = puVar36 + lVar43 * 3; + puVar3 = puVar36 + lVar43 * 4; + puVar4 = puVar36 + lVar43 * 5; + puVar5 = puVar36 + lVar43 * 6; + puVar6 = puVar36 + lVar43 * 7; + /* try { // try from 003a7ddc to 004a7dfb has its CatchHandler @ 003a7bec */ + puVar36 = puVar36 + lVar43 * 8; + puVar7 = puVar35 + lVar43; + puVar8 = puVar35 + lVar43 * 2; + /* try { // try from 003a7e04 to 004a7e07 has its CatchHandler @ 003a7e98 */ + puVar9 = puVar35 + lVar43 * 3; + puVar10 = puVar35 + lVar43 * 4; + puVar11 = puVar35 + lVar43 * 5; + iVar58 = (uint)*puVar3 + (uint)uVar32 + iVar58; + iVar72 = (uint)*puVar4 + (uint)*puVar42 + iVar72; + iVar74 = (uint)*puVar5 + (uint)*puVar52 + iVar74; + iVar64 = (uint)*puVar6 + (uint)*puVar2 + iVar64; + puVar42 = puVar35 + lVar43 * 6; + puVar52 = puVar35 + lVar43 * 7; + puVar35 = puVar35 + lVar43 * 8; + iVar57 = (uint)*puVar10 + (uint)uVar77 + iVar57; + iVar59 = (uint)*puVar11 + (uint)*puVar7 + iVar59; + iVar60 = (uint)*puVar42 + (uint)*puVar8 + iVar60; + iVar56 = (uint)*puVar52 + (uint)*puVar9 + iVar56; + } while (uVar54 < uVar30); + puVar50 = (ushort *)((long)puVar50 + (ulong)uVar33 * lVar43 * 2); + iVar45 = iVar45 + uVar33; + iVar46 = iVar46 + iVar57 + iVar59 + iVar60 + iVar56; + iVar73 = iVar73 + iVar58 + iVar72 + iVar74 + iVar64; + iVar57 = param_4; + if (uVar55 == uVar33) goto LAB_003a7f58; + } + iVar73 = iVar73 + (uint)*puVar50; + /* catch() { ... } // from try @ 003a7c3c with catch @ 003a7e98 + catch() { ... } // from try @ 003a7d68 with catch @ 003a7e98 + catch() { ... } // from try @ 003a7e04 with catch @ 003a7e98 */ + iVar46 = iVar46 + (uint)puVar50[1]; + iVar57 = param_4; + if (iVar45 + 1 < param_4) { + iVar73 = iVar73 + (uint)puVar50[lVar43]; + /* try { // try from 003a7ebc to 004a7ebf has its CatchHandler @ 003a7bec */ + iVar46 = iVar46 + (uint)puVar50[lVar43 + 1]; + /* catch() { ... } // from try @ 003a7cb0 with catch @ 003a7ec0 */ + if (iVar45 + 2 < param_4) { + iVar73 = iVar73 + (uint)puVar50[lVar43 * 2]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 2 + 1]; + if (iVar45 + 3 < param_4) { + /* catch() { ... } // from try @ 003a7c6c with catch @ 003a7ef0 + catch() { ... } // from try @ 003a7cb8 with catch @ 003a7ef0 */ + iVar73 = iVar73 + (uint)puVar50[lVar43 * 3]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 3 + 1]; + if (iVar45 + 4 < param_4) { + iVar73 = iVar73 + (uint)puVar50[lVar43 * 4]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 4 + 1]; + if (iVar45 + 5 < param_4) { + iVar73 = iVar73 + (uint)puVar50[lVar43 * 5]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 5 + 1]; + if (iVar45 + 6 < param_4) { + iVar73 = iVar73 + (uint)puVar50[lVar43 * 6]; + iVar46 = iVar46 + (uint)puVar50[lVar43 * 6 + 1]; + } + } + } + } + } + } + } +LAB_003a7f58: + *param_3 = iVar73; + param_3[1] = iVar46; + goto LAB_003a73ac; + } + /* catch() { ... } // from try @ 003a7430 with catch @ 003a77d8 */ + iVar57 = param_4 + -3; + iVar46 = *param_3; + if (iVar45 < iVar57) { + /* catch() { ... } // from try @ 003a73f4 with catch @ 003a77e8 + catch() { ... } // from try @ 003a7438 with catch @ 003a77e8 + catch() { ... } // from try @ 003a7514 with catch @ 003a77e8 */ + /* catch() { ... } // from try @ 003a7828 with catch @ 003a77f0 + catch() { ... } // from try @ 003a7a9c with catch @ 003a77f0 + catch() { ... } // from try @ 003a7bd0 with catch @ 003a77f0 */ + uVar55 = (param_4 + -4) - iVar45; + uVar33 = uVar55 >> 2; + lVar40 = (long)(iVar39 << 2); + uVar30 = (uVar33 - 7 >> 3) + 1; + uVar47 = -(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1; + lVar43 = (long)(iVar39 << 1); + lVar49 = lVar40 * 2; + /* try { // try from 003a7828 to 004a782b has its CatchHandler @ 003a77f0 */ + puVar35 = puVar50; + iVar73 = iVar45; + if (uVar55 < 0x1c) { +LAB_003a7a08: + /* try { // try from 003a7a28 to 004a7a2b has its CatchHandler @ 003a7be4 */ + iVar46 = iVar46 + (uint)*puVar35 + (uint)*(ushort *)((long)puVar35 + uVar47) + + (uint)puVar35[uVar47] + (uint)*(ushort *)((long)puVar35 + uVar47 * 3); + /* try { // try from 003a7a9c to 004a7abb has its CatchHandler @ 003a77f0 */ + /* try { // try from 003a7ac4 to 004a7ac7 has its CatchHandler @ 003a7be4 */ + /* try { // try from 003a7ad0 to 004a7ad3 has its CatchHandler @ 003a7bdc */ + /* catch() { ... } // from try @ 003a78e0 with catch @ 003a7b64 */ + if (((iVar73 + 4 < iVar57) && + (iVar46 = iVar46 + (uint)puVar35[uVar47 * 2] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 5) + + (uint)puVar35[uVar47 * 3] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 7), iVar73 + 8 < iVar57)) && + ((iVar46 = iVar46 + (uint)puVar35[uVar47 * 4] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 9) + + (uint)puVar35[uVar47 * 5] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0xb), iVar73 + 0xc < iVar57 + && (((iVar46 = iVar46 + (uint)puVar35[uVar47 * 6] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0xd) + + (uint)puVar35[uVar47 * 7] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0xf), + iVar73 + 0x10 < iVar57 && + (iVar46 = iVar46 + (uint)puVar35[uVar47 * 8] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0x11) + + (uint)puVar35[uVar47 * 9] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0x13), + iVar73 + 0x14 < iVar57)) && + (iVar46 = iVar46 + (uint)puVar35[uVar47 * 10] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0x15) + + (uint)puVar35[uVar47 * 0xb] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0x17), + iVar73 + 0x18 < iVar57)))))) { + iVar46 = iVar46 + (uint)puVar35[uVar47 * 0xc] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0x19) + + (uint)puVar35[uVar47 * 0xd] + + (uint)*(ushort *)((long)puVar35 + uVar47 * 0x1b); + } + } + else { + lVar86 = lVar43 + uVar37 + lVar43; + iVar73 = 0; + iVar59 = 0; + iVar60 = 0; + iVar56 = 0; + /* try { // try from 003a7844 to 004a7847 has its CatchHandler @ 003a7be4 */ + puVar35 = (ushort *)((long)param_1 + uVar37 + lVar43); + puVar36 = (ushort *)((long)param_1 + lVar86); + /* try { // try from 003a7864 to 004a7867 has its CatchHandler @ 003a7bdc */ + puVar42 = (ushort *)((long)param_1 + lVar43 + lVar86); + uVar55 = 0; + puVar52 = puVar50; + do { + uVar32 = *puVar52; + uVar55 = uVar55 + 1; + puVar2 = puVar52 + lVar40; + /* try { // try from 003a7894 to 004a7897 has its CatchHandler @ 003a7bd4 */ + uVar84 = *puVar35; + puVar3 = puVar52 + lVar40 * 2; + puVar4 = puVar52 + lVar40 * 3; + puVar5 = puVar52 + lVar40 * 4; + puVar6 = puVar52 + lVar40 * 5; + puVar7 = puVar52 + lVar40 * 6; + puVar8 = puVar52 + lVar40 * 7; + puVar52 = puVar52 + lVar40 * 8; + puVar9 = puVar35 + lVar40; + puVar10 = puVar35 + lVar40 * 2; + /* try { // try from 003a78e0 to 004a78e3 has its CatchHandler @ 003a7b64 */ + puVar11 = puVar35 + lVar40 * 3; + /* try { // try from 003a78e8 to 004a7943 has its CatchHandler @ 003a7bd4 */ + puVar12 = puVar35 + lVar40 * 4; + puVar13 = puVar35 + lVar40 * 5; + puVar14 = puVar35 + lVar40 * 6; + puVar15 = puVar35 + lVar40 * 7; + puVar35 = puVar35 + lVar40 * 8; + uVar77 = *puVar36; + puVar16 = puVar36 + lVar40; + uVar78 = *puVar42; + puVar17 = puVar36 + lVar40 * 2; + puVar18 = puVar36 + lVar40 * 3; + puVar19 = puVar36 + lVar40 * 4; + puVar20 = puVar36 + lVar40 * 5; + puVar21 = puVar36 + lVar40 * 6; + puVar22 = puVar36 + lVar40 * 7; + puVar36 = puVar36 + lVar40 * 8; + puVar23 = puVar42 + lVar40; + puVar24 = puVar42 + lVar40 * 2; + puVar25 = puVar42 + lVar40 * 3; + puVar26 = puVar42 + lVar40 * 4; + puVar27 = puVar42 + lVar40 * 5; + puVar28 = puVar42 + lVar40 * 6; + puVar29 = puVar42 + lVar40 * 7; + /* try { // try from 003a79b4 to 004a79b7 has its CatchHandler @ 003a7bdc */ + puVar42 = puVar42 + lVar40 * 8; + iVar73 = (uint)*puVar12 + (uint)*puVar5 + (uint)*puVar19 + (uint)*puVar26 + + (uint)uVar84 + (uint)uVar32 + (uint)uVar77 + (uint)uVar78 + iVar73; + iVar59 = (uint)*puVar13 + (uint)*puVar6 + (uint)*puVar20 + (uint)*puVar27 + + (uint)*puVar9 + (uint)*puVar2 + (uint)*puVar16 + (uint)*puVar23 + iVar59; + iVar60 = (uint)*puVar14 + (uint)*puVar7 + (uint)*puVar21 + (uint)*puVar28 + + (uint)*puVar10 + (uint)*puVar3 + (uint)*puVar17 + (uint)*puVar24 + iVar60; + iVar56 = (uint)*puVar15 + (uint)*puVar8 + (uint)*puVar22 + (uint)*puVar29 + + (uint)*puVar11 + (uint)*puVar4 + (uint)*puVar18 + (uint)*puVar25 + iVar56; + } while (uVar55 < uVar30); + iVar46 = iVar46 + iVar73 + iVar59 + iVar60 + iVar56; + puVar35 = (ushort *)((long)puVar50 + (ulong)(uVar30 * 8) * lVar49); + iVar73 = iVar45 + uVar30 * 0x20; + if (uVar33 + 1 != uVar30 * 8) goto LAB_003a7a08; + } + iVar45 = iVar45 + 4 + uVar33 * 4; + puVar50 = (ushort *)((long)puVar50 + lVar49 + (ulong)uVar33 * lVar49); + } + iVar57 = iVar45; + if (iVar45 < param_4) { + uVar55 = param_4 - iVar45; + lVar43 = (long)iVar39; + uVar30 = (uVar55 - 8 >> 3) + 1; + /* try { // try from 003a7bd0 to 004a7bd3 has its CatchHandler @ 003a77f0 */ + /* catch() { ... } // from try @ 003a7894 with catch @ 003a7bd4 + catch() { ... } // from try @ 003a78e8 with catch @ 003a7bd4 */ + uVar33 = uVar30 * 8; + if (6 < (uint)((param_4 + -1) - iVar45)) { + /* catch() { ... } // from try @ 003a7864 with catch @ 003a7bdc + catch() { ... } // from try @ 003a79b4 with catch @ 003a7bdc + catch() { ... } // from try @ 003a7ad0 with catch @ 003a7bdc */ + iVar57 = 0; + iVar73 = 0; + iVar59 = 0; + iVar60 = 0; + /* catch() { ... } // from try @ 003a7844 with catch @ 003a7be4 + catch() { ... } // from try @ 003a7a28 with catch @ 003a7be4 + catch() { ... } // from try @ 003a7ac4 with catch @ 003a7be4 */ + /* catch() { ... } // from try @ 003a7c20 with catch @ 003a7bec + catch() { ... } // from try @ 003a7ddc with catch @ 003a7bec + catch() { ... } // from try @ 003a7ebc with catch @ 003a7bec */ + puVar35 = puVar50 + lVar43; + uVar54 = 0; + do { + uVar32 = *puVar35; + uVar54 = uVar54 + 1; + puVar36 = puVar35 + -lVar43; + puVar42 = puVar35 + lVar43; + puVar52 = puVar35 + lVar43 * 2; + /* try { // try from 003a7c20 to 004a7c23 has its CatchHandler @ 003a7bec */ + puVar2 = puVar35 + lVar43 * 3; + puVar3 = puVar35 + lVar43 * 4; + puVar4 = puVar35 + lVar43 * 5; + /* try { // try from 003a7c3c to 004a7c3f has its CatchHandler @ 003a7e98 */ + puVar5 = puVar35 + lVar43 * 6; + puVar35 = puVar35 + lVar43 * 8; + iVar57 = (uint)*puVar2 + (uint)*puVar36 + iVar57; + iVar73 = (uint)*puVar3 + (uint)uVar32 + iVar73; + iVar59 = (uint)*puVar4 + (uint)*puVar42 + iVar59; + iVar60 = (uint)*puVar5 + (uint)*puVar52 + iVar60; + } while (uVar54 < uVar30); + /* try { // try from 003a7c6c to 004a7c6f has its CatchHandler @ 003a7ef0 */ + iVar45 = iVar45 + uVar33; + puVar50 = (ushort *)((long)puVar50 + (ulong)uVar33 * lVar43 * 2); + iVar46 = iVar46 + iVar57 + iVar73 + iVar59 + iVar60; + iVar57 = param_4; + if (uVar33 == uVar55) goto LAB_003a7d20; + } + iVar46 = iVar46 + (uint)*puVar50; + iVar57 = param_4; + /* try { // try from 003a7cb0 to 004a7cb3 has its CatchHandler @ 003a7ec0 */ + /* try { // try from 003a7cb8 to 004a7cf7 has its CatchHandler @ 003a7ef0 */ + if (((iVar45 + 1 < param_4) && (iVar46 = iVar46 + (uint)puVar50[lVar43], iVar45 + 2 < param_4)) + && ((iVar46 = iVar46 + (uint)puVar50[lVar43 * 2], iVar45 + 3 < param_4 && + (iVar46 = iVar46 + (uint)puVar50[lVar43 * 3], iVar45 + 4 < param_4)))) { + iVar46 = iVar46 + (uint)puVar50[lVar43 * 4]; + if ((iVar45 + 5 < param_4) && + (iVar46 = iVar46 + (uint)puVar50[lVar43 * 5], iVar45 + 6 < param_4)) { + iVar46 = iVar46 + (uint)puVar50[lVar43 * 6]; + } + } + } +LAB_003a7d20: + *param_3 = iVar46; +LAB_003a73ac: + if (iVar39 <= iVar44) { + return param_4; + } + lVar86 = (long)iVar39; + lVar40 = (long)iVar44; + /* try { // try from 003a73f4 to 004a73f7 has its CatchHandler @ 003a77e8 */ + piVar38 = param_3 + lVar40; + lVar43 = lVar40; + lVar49 = lVar40 + 4; + do { + iVar59 = *piVar38; + iVar73 = piVar38[1]; + iVar46 = piVar38[2]; + iVar45 = piVar38[3]; + lVar87 = (long)(iVar39 * iVar57); + puVar50 = param_1 + lVar87 + lVar43; + iVar60 = iVar57; + if (iVar57 < param_4) { + /* try { // try from 003a7430 to 004a7433 has its CatchHandler @ 003a77d8 */ + uVar55 = param_4 - iVar57; + /* try { // try from 003a7438 to 004a74cb has its CatchHandler @ 003a77e8 */ + uVar30 = (uVar55 - 8 >> 3) + 1; + uVar33 = uVar30 * 8; + iVar60 = param_4; + if (6 < (uint)((param_4 + -1) - iVar57)) { + iVar65 = 0; + iVar68 = 0; + iVar69 = 0; + iVar71 = 0; + puVar35 = param_1 + lVar87 + lVar43 + 3; + puVar36 = param_1 + lVar87 + lVar43 + 2; + puVar42 = param_1 + lVar87 + lVar43 + 1; + uVar54 = 0; + puVar52 = puVar50; + iVar56 = iVar65; + iVar58 = iVar68; + iVar72 = iVar65; + iVar74 = iVar68; + iVar64 = iVar65; + iVar81 = iVar68; + iVar61 = iVar69; + iVar63 = iVar71; + iVar75 = iVar69; + iVar76 = iVar71; + iVar82 = iVar69; + iVar83 = iVar71; + do { + uVar32 = *puVar52; + uVar54 = uVar54 + 1; + puVar2 = puVar52 + lVar86; + uVar77 = *puVar42; + puVar3 = puVar52 + lVar86 * 2; + puVar4 = puVar52 + lVar86 * 3; + puVar5 = puVar52 + lVar86 * 4; + puVar6 = puVar52 + lVar86 * 5; + puVar7 = puVar52 + lVar86 * 6; + puVar8 = puVar52 + lVar86 * 7; + puVar52 = puVar52 + lVar86 * 8; + puVar9 = puVar42 + lVar86; + puVar10 = puVar42 + lVar86 * 2; + /* try { // try from 003a750c to 004a750f has its CatchHandler @ 003a77a8 */ + /* try { // try from 003a7514 to 004a7517 has its CatchHandler @ 003a77e8 */ + puVar11 = puVar42 + lVar86 * 3; + puVar12 = puVar42 + lVar86 * 4; + puVar13 = puVar42 + lVar86 * 5; + iVar65 = (uint)*puVar5 + (uint)uVar32 + iVar65; + iVar68 = (uint)*puVar6 + (uint)*puVar2 + iVar68; + iVar69 = (uint)*puVar7 + (uint)*puVar3 + iVar69; + iVar71 = (uint)*puVar8 + (uint)*puVar4 + iVar71; + puVar2 = puVar42 + lVar86 * 6; + puVar3 = puVar42 + lVar86 * 7; + puVar42 = puVar42 + lVar86 * 8; + uVar32 = *puVar36; + puVar4 = puVar36 + lVar86; + uVar84 = *puVar35; + puVar5 = puVar36 + lVar86 * 2; + puVar6 = puVar36 + lVar86 * 3; + iVar64 = (uint)*puVar12 + (uint)uVar77 + iVar64; + iVar81 = (uint)*puVar13 + (uint)*puVar9 + iVar81; + iVar82 = (uint)*puVar2 + (uint)*puVar10 + iVar82; + iVar83 = (uint)*puVar3 + (uint)*puVar11 + iVar83; + puVar2 = puVar36 + lVar86 * 4; + puVar3 = puVar36 + lVar86 * 5; + /* try { // try from 003a7588 to 004a758b has its CatchHandler @ 003a7784 */ + puVar7 = puVar36 + lVar86 * 6; + puVar8 = puVar36 + lVar86 * 7; + puVar36 = puVar36 + lVar86 * 8; + puVar9 = puVar35 + lVar86; + puVar10 = puVar35 + lVar86 * 2; + puVar11 = puVar35 + lVar86 * 3; + puVar12 = puVar35 + lVar86 * 4; + puVar13 = puVar35 + lVar86 * 5; + iVar72 = (uint)*puVar2 + (uint)uVar32 + iVar72; + iVar74 = (uint)*puVar3 + (uint)*puVar4 + iVar74; + iVar75 = (uint)*puVar7 + (uint)*puVar5 + iVar75; + iVar76 = (uint)*puVar8 + (uint)*puVar6 + iVar76; + puVar2 = puVar35 + lVar86 * 6; + puVar3 = puVar35 + lVar86 * 7; + puVar35 = puVar35 + lVar86 * 8; + /* try { // try from 003a75fc to 004a75ff has its CatchHandler @ 003a775c */ + iVar56 = (uint)*puVar12 + (uint)uVar84 + iVar56; + iVar58 = (uint)*puVar13 + (uint)*puVar9 + iVar58; + iVar61 = (uint)*puVar2 + (uint)*puVar10 + iVar61; + iVar63 = (uint)*puVar3 + (uint)*puVar11 + iVar63; + } while (uVar54 < uVar30); + puVar50 = (ushort *)((long)puVar50 + (ulong)uVar33 * lVar86 * 2); + iVar57 = iVar57 + uVar33; + iVar45 = iVar45 + iVar56 + iVar58 + iVar61 + iVar63; + iVar46 = iVar46 + iVar72 + iVar74 + iVar75 + iVar76; + iVar73 = iVar73 + iVar64 + iVar81 + iVar82 + iVar83; + iVar59 = iVar59 + iVar65 + iVar68 + iVar69 + iVar71; + if (uVar33 == uVar55) goto LAB_003a779c; + } + iVar59 = iVar59 + (uint)*puVar50; + /* try { // try from 003a7670 to 004a7693 has its CatchHandler @ 003a72d4 */ + iVar73 = iVar73 + (uint)puVar50[1]; + iVar46 = iVar46 + (uint)puVar50[2]; + iVar45 = iVar45 + (uint)puVar50[3]; + if (iVar57 + 1 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar86]; + /* try { // try from 003a769c to 004a769f has its CatchHandler @ 003a775c */ + iVar73 = iVar73 + (uint)puVar50[lVar86 + 1]; + /* try { // try from 003a76a8 to 004a76bf has its CatchHandler @ 003a7784 */ + iVar46 = iVar46 + (uint)puVar50[lVar86 + 2]; + iVar45 = iVar45 + (uint)puVar50[lVar86 + 3]; + if (iVar57 + 2 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar86 * 2]; + iVar73 = iVar73 + (uint)puVar50[lVar86 * 2 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar86 * 2 + 2]; + iVar45 = iVar45 + (uint)puVar50[lVar86 * 2 + 3]; + if (iVar57 + 3 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar86 * 3]; + iVar73 = iVar73 + (uint)puVar50[lVar86 * 3 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar86 * 3 + 2]; + iVar45 = iVar45 + (uint)puVar50[lVar86 * 3 + 3]; + if (iVar57 + 4 < param_4) { + iVar59 = iVar59 + (uint)puVar50[lVar86 * 4]; + iVar73 = iVar73 + (uint)puVar50[lVar86 * 4 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar86 * 4 + 2]; + iVar45 = iVar45 + (uint)puVar50[lVar86 * 4 + 3]; + if (iVar57 + 5 < param_4) { + /* catch() { ... } // from try @ 003a732c with catch @ 003a775c + catch() { ... } // from try @ 003a75fc with catch @ 003a775c + catch() { ... } // from try @ 003a769c with catch @ 003a775c */ + iVar59 = iVar59 + (uint)puVar50[lVar86 * 5]; + iVar73 = iVar73 + (uint)puVar50[lVar86 * 5 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar86 * 5 + 2]; + iVar45 = iVar45 + (uint)puVar50[lVar86 * 5 + 3]; + if (iVar57 + 6 < param_4) { + /* try { // try from 003a7780 to 004a7783 has its CatchHandler @ 003a72d4 */ + /* catch() { ... } // from try @ 003a7588 with catch @ 003a7784 + catch() { ... } // from try @ 003a76a8 with catch @ 003a7784 */ + iVar59 = iVar59 + (uint)puVar50[lVar86 * 6]; + iVar73 = iVar73 + (uint)puVar50[lVar86 * 6 + 1]; + iVar46 = iVar46 + (uint)puVar50[lVar86 * 6 + 2]; + iVar45 = iVar45 + (uint)puVar50[lVar86 * 6 + 3]; + } + } + } + } + } + } + } +LAB_003a779c: + iVar57 = iVar60; + /* catch() { ... } // from try @ 003a750c with catch @ 003a77a8 */ + *(ulong *)(piVar38 + 2) = CONCAT44(iVar45,iVar46); + *(ulong *)piVar38 = CONCAT44(iVar73,iVar59); + if (lVar49 == lVar40 + 4 + (ulong)((iVar39 - 1U) - iVar44 >> 2) * 4) { + return param_4; + } + piVar38 = piVar38 + 4; + lVar43 = lVar49; + lVar49 = lVar49 + 4; + } while( true ); +} + + +================================================================== + +### FUNC 003a8458 (6016 bytes) name=FUN_003a8458 + +int FUN_003a8458(short *param_1,long param_2,int *param_3,int param_4,ulong param_5) + +{ + char *pcVar1; + short *psVar2; + short *psVar3; + short *psVar4; + short *psVar5; + short *psVar6; + short *psVar7; + short *psVar8; + short *psVar9; + short *psVar10; + short *psVar11; + short *psVar12; + short *psVar13; + short *psVar14; + short *psVar15; + short *psVar16; + short *psVar17; + short *psVar18; + short *psVar19; + short *psVar20; + short *psVar21; + short *psVar22; + short *psVar23; + short *psVar24; + short *psVar25; + short *psVar26; + short *psVar27; + short *psVar28; + short *psVar29; + uint uVar30; + uint uVar31; + short sVar32; + uint uVar33; + int *piVar34; + short *psVar35; + short *psVar36; + ulong uVar37; + int *piVar38; + int iVar39; + long lVar40; + int *piVar41; + short *psVar42; + long lVar43; + int iVar44; + int iVar45; + int iVar46; + ulong uVar47; + uint uVar48; + long lVar49; + short *psVar50; + uint uVar51; + short *psVar52; + int *piVar53; + uint uVar54; + uint uVar55; + int iVar56; + int iVar57; + int iVar58; + int iVar59; + int iVar60; + int iVar61; + undefined8 uVar62; + int iVar63; + int iVar64; + int iVar65; + undefined8 uVar66; + int iVar68; + undefined8 uVar67; + int iVar69; + undefined8 uVar70; + int iVar71; + int iVar72; + int iVar73; + int iVar74; + int iVar75; + int iVar76; + short sVar77; + short sVar78; + long lVar79; + undefined8 uVar80; + int iVar81; + int iVar82; + int iVar83; + short sVar84; + long lVar85; + long lVar86; + long lVar87; + long lVar88; + long lVar89; + long lVar90; + long lVar91; + int local_10 [4]; + + iVar39 = (int)param_5; + if (param_2 != 0) { + if (iVar39 == 1) { + iVar39 = *param_3; + if (param_4 < 1) { + iVar45 = 0; + } + else { + lVar43 = 0; + iVar45 = 0; + do { + if (*(char *)(param_2 + lVar43) != '\0') { + iVar45 = iVar45 + 1; + iVar39 = iVar39 + param_1[lVar43]; + } + lVar43 = lVar43 + 1; + } while ((int)lVar43 < param_4); + } + *param_3 = iVar39; + return iVar45; + } + if (iVar39 == 3) { + iVar39 = *param_3; + iVar45 = param_3[1]; + iVar44 = param_3[2]; + if (param_4 < 1) { + iVar46 = 0; + } + else { + lVar43 = 0; + iVar46 = 0; + do { + pcVar1 = (char *)(param_2 + lVar43); + lVar43 = lVar43 + 1; + if (*pcVar1 != '\0') { + iVar46 = iVar46 + 1; + iVar39 = iVar39 + *param_1; + iVar45 = iVar45 + param_1[1]; + iVar44 = iVar44 + param_1[2]; + } + param_1 = param_1 + 3; + } while ((int)lVar43 < param_4); + } + *param_3 = iVar39; + param_3[1] = iVar45; + param_3[2] = iVar44; + return iVar46; + } + if (param_4 < 1) { + return 0; + } + uVar33 = iVar39 - 4; + lVar43 = 0; + iVar44 = 0; + iVar45 = (uVar33 >> 2) + 1; + iVar57 = iVar45 * 4; + uVar30 = ((uVar33 >> 2) - 1 >> 1) + 1; + iVar46 = uVar30 * 8; + if (uVar33 < 4) { + iVar46 = 0; + } + lVar49 = (long)iVar46; + if (iVar39 + -3 < 1) { + iVar57 = 0; + } + iVar46 = iVar57 + 1; + iVar73 = iVar57 + 2; + lVar40 = (long)iVar57; + lVar90 = NEON_shl(lVar40,1); + iVar59 = iVar57 + 3; + iVar60 = iVar57 + 4; + lVar89 = NEON_shl((long)iVar46,1); + piVar38 = param_3 + lVar40; + lVar88 = NEON_shl((long)iVar73,1); + iVar56 = iVar57 + 5; + uVar55 = -((uint)((ulong)piVar38 >> 2) & 3) & 3; + lVar87 = NEON_shl((long)iVar59,1); + iVar58 = iVar57 + 6; + iVar72 = iVar57 + 7; + lVar86 = NEON_shl((long)iVar60,1); + uVar54 = iVar39 - iVar57; + if (uVar54 < uVar55) { + uVar55 = uVar54; + } + lVar85 = NEON_shl((long)iVar56,1); + lVar79 = NEON_shl((long)iVar58,1); + lVar91 = NEON_shl((long)iVar72,1); + do { + if (*(char *)(param_2 + lVar43) != '\0') { + if (0 < iVar39 + -3) { + if (3 < uVar33) { + piVar41 = param_3 + 4; + uVar48 = 0; + psVar50 = param_1; + piVar53 = param_3; + do { + uVar62 = *(undefined8 *)(psVar50 + 4); + uVar67 = *(undefined8 *)psVar50; + uVar48 = uVar48 + 1; + uVar70 = *(undefined8 *)(piVar41 + 2); + uVar66 = *(undefined8 *)piVar41; + *(ulong *)(piVar53 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)(piVar53 + 2) >> 0x20) + + (int)(short)((ulong)uVar67 >> 0x30), + (int)*(undefined8 *)(piVar53 + 2) + (int)(short)((ulong)uVar67 >> 0x20)) + ; + *(ulong *)piVar53 = + CONCAT44((int)((ulong)*(undefined8 *)piVar53 >> 0x20) + + (int)(short)((ulong)uVar67 >> 0x10), + (int)*(undefined8 *)piVar53 + (int)(short)uVar67); + piVar53 = piVar53 + 8; + *(ulong *)(piVar41 + 2) = + CONCAT44((int)((ulong)uVar70 >> 0x20) + (int)(short)((ulong)uVar62 >> 0x30), + (int)uVar70 + (int)(short)((ulong)uVar62 >> 0x20)); + *(ulong *)piVar41 = + CONCAT44((int)((ulong)uVar66 >> 0x20) + (int)(short)((ulong)uVar62 >> 0x10), + (int)uVar66 + (int)(short)uVar62); + piVar41 = piVar41 + 8; + psVar50 = psVar50 + 8; + } while (uVar48 < uVar30); + if (iVar45 == uVar30 * 2) goto LAB_003a8720; + } + sVar32 = param_1[lVar49 + 1]; + param_3[lVar49] = param_3[lVar49] + (int)param_1[lVar49]; + param_3[lVar49 + 1] = (int)sVar32 + param_3[lVar49 + 1]; + sVar32 = param_1[lVar49 + 3]; + param_3[lVar49 + 2] = param_3[lVar49 + 2] + (int)param_1[lVar49 + 2]; + param_3[lVar49 + 3] = (int)sVar32 + param_3[lVar49 + 3]; + } +LAB_003a8720: + if (iVar57 < iVar39) { + uVar48 = uVar55; + if (uVar54 < 9) { + uVar48 = uVar54; + } + iVar74 = iVar57; + if (uVar48 != 0) { + *piVar38 = *piVar38 + (int)*(short *)((long)param_1 + lVar90); + iVar74 = iVar46; + if (((((uVar48 != 1) && + (param_3[iVar46] = param_3[iVar46] + (int)*(short *)((long)param_1 + lVar89), + iVar74 = iVar73, uVar48 != 2)) && + (param_3[iVar73] = param_3[iVar73] + (int)*(short *)((long)param_1 + lVar88), + iVar74 = iVar59, uVar48 != 3)) && + ((param_3[iVar59] = param_3[iVar59] + (int)*(short *)((long)param_1 + lVar87), + iVar74 = iVar60, uVar48 != 4 && + (param_3[iVar60] = param_3[iVar60] + (int)*(short *)((long)param_1 + lVar86), + iVar74 = iVar56, uVar48 != 5)))) && + ((param_3[iVar56] = param_3[iVar56] + (int)*(short *)((long)param_1 + lVar85), + iVar74 = iVar58, uVar48 != 6 && + (param_3[iVar58] = param_3[iVar58] + (int)*(short *)((long)param_1 + lVar79), + iVar74 = iVar72, uVar48 == 8)))) { + param_3[iVar72] = param_3[iVar72] + (int)*(short *)((long)param_1 + lVar91); + iVar74 = iVar57 + 8; + } + if (uVar54 == uVar48) goto LAB_003a89b0; + } + uVar31 = ((uVar54 - uVar48) - 8 >> 3) + 1; + iVar64 = uVar31 * 8; + if (6 < (uVar54 - 1) - uVar48) { + uVar51 = 0; + piVar41 = param_3 + lVar40 + (ulong)uVar48; + psVar50 = param_1 + lVar40 + (ulong)uVar48; + piVar53 = piVar41; + do { + uVar62 = *(undefined8 *)(psVar50 + 4); + uVar67 = *(undefined8 *)psVar50; + piVar34 = piVar41 + 2; + uVar66 = *(undefined8 *)piVar41; + uVar80 = *(undefined8 *)(piVar41 + 6); + uVar70 = *(undefined8 *)(piVar41 + 4); + uVar51 = uVar51 + 1; + piVar41 = piVar41 + 8; + *(ulong *)(piVar53 + 2) = + CONCAT44((int)((ulong)*(undefined8 *)piVar34 >> 0x20) + + (int)(short)((ulong)uVar67 >> 0x30), + (int)*(undefined8 *)piVar34 + (int)(short)((ulong)uVar67 >> 0x20)); + *(ulong *)piVar53 = + CONCAT44((int)((ulong)uVar66 >> 0x20) + (int)(short)((ulong)uVar67 >> 0x10), + (int)uVar66 + (int)(short)uVar67); + *(ulong *)(piVar53 + 6) = + CONCAT44((int)(short)((ulong)uVar62 >> 0x30) + (int)((ulong)uVar80 >> 0x20), + (int)(short)((ulong)uVar62 >> 0x20) + (int)uVar80); + *(ulong *)(piVar53 + 4) = + CONCAT44((int)(short)((ulong)uVar62 >> 0x10) + (int)((ulong)uVar70 >> 0x20), + (int)(short)uVar62 + (int)uVar70); + psVar50 = psVar50 + 8; + piVar53 = piVar53 + 8; + } while (uVar51 < uVar31); + iVar74 = iVar74 + iVar64; + if (uVar54 - uVar48 == iVar64) goto LAB_003a89b0; + } + iVar64 = iVar74 + 1; + param_3[iVar74] = param_3[iVar74] + (int)param_1[iVar74]; + if (iVar64 < iVar39) { + iVar81 = iVar74 + 2; + param_3[iVar64] = param_3[iVar64] + (int)param_1[iVar64]; + if (iVar81 < iVar39) { + iVar64 = iVar74 + 3; + param_3[iVar81] = param_3[iVar81] + (int)param_1[iVar81]; + if (iVar64 < iVar39) { + iVar81 = iVar74 + 4; + param_3[iVar64] = param_3[iVar64] + (int)param_1[iVar64]; + if (iVar81 < iVar39) { + iVar64 = iVar74 + 5; + param_3[iVar81] = param_3[iVar81] + (int)param_1[iVar81]; + if (iVar64 < iVar39) { + iVar74 = iVar74 + 6; + param_3[iVar64] = param_3[iVar64] + (int)param_1[iVar64]; + if (iVar74 < iVar39) { + param_3[iVar74] = param_3[iVar74] + (int)param_1[iVar74]; + } + } + } + } + } + } + } +LAB_003a89b0: + iVar44 = iVar44 + 1; + } + lVar43 = lVar43 + 1; + param_1 = (short *)((long)param_1 + + (-(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1) + ); + if (param_4 <= (int)lVar43) { + return iVar44; + } + } while( true ); + } + if (iVar39 - 1U < 2) { +LAB_003a99e8: + if (param_4 < 8) { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + iVar44 = 0; + } + else { + local_10[0] = 0; + local_10[1] = 0; + local_10[2] = 0; + local_10[3] = 0; + uVar30 = param_4 - 8U >> 3; + psVar50 = param_1; + do { + psVar35 = psVar50 + 8; + uVar62 = *(undefined8 *)(psVar50 + 4); + uVar67 = *(undefined8 *)psVar50; + local_10[0] = local_10[0] + (short)uVar67 + (int)(short)uVar62; + local_10[1] = local_10[1] + (short)((ulong)uVar67 >> 0x10) + + (int)(short)((ulong)uVar62 >> 0x10); + local_10[2] = local_10[2] + (short)((ulong)uVar67 >> 0x20) + + (int)(short)((ulong)uVar62 >> 0x20); + local_10[3] = local_10[3] + (short)((ulong)uVar67 >> 0x30) + + (int)(short)((ulong)uVar62 >> 0x30); + psVar50 = psVar35; + } while (psVar35 != param_1 + ((ulong)uVar30 + 1) * 8); + iVar44 = (uVar30 + 1) * 8; + } + if (iVar44 < param_4 + -3) { + uVar30 = (uint)((param_4 + -4) - iVar44) >> 2; + psVar50 = param_1 + iVar44; + do { + psVar35 = psVar50 + 4; + uVar67 = *(undefined8 *)psVar50; + local_10[0] = local_10[0] + (short)uVar67; + local_10[1] = local_10[1] + (short)((ulong)uVar67 >> 0x10); + local_10[2] = local_10[2] + (short)((ulong)uVar67 >> 0x20); + local_10[3] = local_10[3] + (short)((ulong)uVar67 >> 0x30); + psVar50 = psVar35; + } while (psVar35 != param_1 + (long)iVar44 + 4 + (ulong)uVar30 * 4); + iVar44 = iVar44 + 4 + uVar30 * 4; + } + /* try { // try from 003a9a74 to 004a9a77 has its CatchHandler @ 003a9fd4 */ + if (iVar39 < 1) { + do { + /* WARNING: Do nothing block with infinite loop */ + /* try { // try from 003a9af4 to 004a9af7 has its CatchHandler @ 003aa014 */ + } while( true ); + } + if (iVar39 == 1) { + iVar46 = *param_3; + iVar45 = 0; + do { + lVar43 = (long)iVar45; + iVar45 = iVar45 + 1; + iVar46 = iVar46 + local_10[lVar43]; + } while (iVar45 != 4); + *param_3 = iVar46; + } + else if (iVar39 == 2) { + iVar57 = param_3[1]; + iVar45 = 0; + iVar46 = *param_3; + do { + lVar43 = (long)iVar45; + iVar73 = iVar45 + 1; + iVar45 = iVar45 + 2; + iVar46 = iVar46 + local_10[lVar43]; + iVar57 = iVar57 + local_10[iVar73]; + } while (iVar45 != 4); + *param_3 = iVar46; + param_3[1] = iVar57; + } + else if (iVar39 == 3) { + iVar57 = param_3[2]; + iVar73 = 0; + iVar46 = param_3[1]; + iVar45 = *param_3; + while( true ) { + iVar45 = iVar45 + local_10[iVar73]; + iVar46 = iVar46 + local_10[iVar73 + 1]; + iVar57 = iVar57 + local_10[iVar73 + 2]; + if (iVar73 != 0) break; + iVar73 = 3; + } + *param_3 = iVar45; + param_3[1] = iVar46; + param_3[2] = iVar57; + } + else { + /* try { // try from 003a9ab0 to 004a9ab3 has its CatchHandler @ 003aa014 */ + param_3[1] = local_10[1] + param_3[1]; + param_3[2] = local_10[2] + param_3[2]; + *param_3 = *param_3 + local_10[0]; + param_3[3] = local_10[3] + param_3[3]; + } + iVar45 = 0; + if (iVar39 != 0) { + iVar45 = iVar44 / iVar39; + } + uVar37 = -(ulong)((uint)(iVar39 * iVar45) >> 0x1f) & 0xfffffffe00000000 | + (ulong)(uint)(iVar39 * iVar45) << 1; + } + else { + iVar45 = 0; + uVar37 = 0; + if (iVar39 == 4) goto LAB_003a99e8; + } + psVar50 = (short *)((long)param_1 + uVar37); + iVar44 = iVar39 % 4; + if (iVar44 != 1) { + iVar57 = iVar45; + if (iVar44 != 2) { + if (iVar44 != 3) goto LAB_003a8b38; + iVar59 = *param_3; + iVar73 = param_3[1]; + iVar46 = param_3[2]; + if (iVar45 < param_4) { + uVar55 = param_4 - iVar45; + /* try { // try from 003a9714 to 004a971f has its CatchHandler @ 003a9598 */ + lVar43 = (long)iVar39; + uVar30 = (uVar55 - 8 >> 3) + 1; + /* try { // try from 003a9728 to 004a972b has its CatchHandler @ 003a974c */ + uVar33 = uVar30 * 8; + if (6 < (uint)((param_4 + -1) - iVar45)) { + iVar61 = 0; + iVar63 = 0; + iVar75 = 0; + iVar76 = 0; + /* try { // try from 003a9734 to 004a9737 has its CatchHandler @ 003a9774 */ + /* catch() { ... } // from try @ 003a9694 with catch @ 003a974c + catch() { ... } // from try @ 003a9728 with catch @ 003a974c */ + psVar35 = (short *)((long)param_1 + uVar37 + 2); + psVar36 = (short *)((long)param_1 + uVar37 + 4); + uVar54 = 0; + /* try { // try from 003a9770 to 004a9773 has its CatchHandler @ 003a9598 */ + /* catch() { ... } // from try @ 003a961c with catch @ 003a9774 + catch() { ... } // from try @ 003a9734 with catch @ 003a9774 */ + psVar42 = psVar50; + iVar57 = iVar61; + iVar60 = iVar63; + iVar56 = iVar61; + iVar58 = iVar63; + iVar72 = iVar75; + iVar74 = iVar76; + iVar64 = iVar75; + iVar81 = iVar76; + do { + sVar32 = *psVar42; + uVar54 = uVar54 + 1; + psVar52 = psVar42 + lVar43; + sVar77 = *psVar35; + psVar2 = psVar42 + lVar43 * 2; + psVar3 = psVar42 + lVar43 * 3; + psVar4 = psVar42 + lVar43 * 4; + psVar5 = psVar42 + lVar43 * 5; + /* catch() { ... } // from try @ 003a97cc with catch @ 003a97ac + catch() { ... } // from try @ 003a9c18 with catch @ 003a97ac + catch() { ... } // from try @ 003a9fd0 with catch @ 003a97ac */ + psVar6 = psVar42 + lVar43 * 6; + psVar7 = psVar42 + lVar43 * 7; + psVar42 = psVar42 + lVar43 * 8; + psVar8 = psVar35 + lVar43; + /* try { // try from 003a97cc to 004a97eb has its CatchHandler @ 003a97ac */ + psVar9 = psVar35 + lVar43 * 2; + psVar10 = psVar35 + lVar43 * 3; + psVar11 = psVar35 + lVar43 * 4; + psVar12 = psVar35 + lVar43 * 5; + iVar61 = (int)*psVar4 + sVar32 + iVar61; + iVar63 = (int)*psVar5 + *psVar52 + iVar63; + iVar75 = (int)*psVar6 + *psVar2 + iVar75; + iVar76 = (int)*psVar7 + *psVar3 + iVar76; + psVar52 = psVar35 + lVar43 * 6; + psVar2 = psVar35 + lVar43 * 7; + psVar35 = psVar35 + lVar43 * 8; + sVar32 = *psVar36; + psVar3 = psVar36 + lVar43; + psVar4 = psVar36 + lVar43 * 2; + psVar5 = psVar36 + lVar43 * 3; + psVar6 = psVar36 + lVar43 * 4; + iVar56 = (int)*psVar11 + sVar77 + iVar56; + iVar58 = (int)*psVar12 + *psVar8 + iVar58; + iVar64 = (int)*psVar52 + *psVar9 + iVar64; + iVar81 = (int)*psVar2 + *psVar10 + iVar81; + psVar52 = psVar36 + lVar43 * 5; + psVar2 = psVar36 + lVar43 * 6; + /* try { // try from 003a9864 to 004a9867 has its CatchHandler @ 003aa014 */ + psVar7 = psVar36 + lVar43 * 7; + psVar36 = psVar36 + lVar43 * 8; + iVar57 = (int)*psVar6 + sVar32 + iVar57; + iVar60 = (int)*psVar52 + *psVar3 + iVar60; + iVar72 = (int)*psVar2 + *psVar4 + iVar72; + iVar74 = (int)*psVar7 + *psVar5 + iVar74; + } while (uVar54 < uVar30); + psVar50 = (short *)((long)psVar50 + (ulong)uVar33 * lVar43 * 2); + iVar45 = iVar45 + uVar33; + /* try { // try from 003a98b8 to 004a98bb has its CatchHandler @ 003aa004 */ + iVar46 = iVar46 + iVar57 + iVar60 + iVar72 + iVar74; + /* try { // try from 003a98c0 to 004a990f has its CatchHandler @ 003aa014 */ + iVar73 = iVar73 + iVar56 + iVar58 + iVar64 + iVar81; + iVar59 = iVar59 + iVar61 + iVar63 + iVar75 + iVar76; + iVar57 = param_4; + if (uVar55 == uVar33) goto LAB_003a99d8; + } + iVar59 = iVar59 + *psVar50; + iVar73 = iVar73 + psVar50[1]; + iVar46 = iVar46 + psVar50[2]; + iVar57 = param_4; + if (iVar45 + 1 < param_4) { + iVar59 = iVar59 + psVar50[lVar43]; + iVar73 = iVar73 + psVar50[lVar43 + 1]; + iVar46 = iVar46 + psVar50[lVar43 + 2]; + if (iVar45 + 2 < param_4) { + iVar59 = iVar59 + psVar50[lVar43 * 2]; + iVar73 = iVar73 + psVar50[lVar43 * 2 + 1]; + iVar46 = iVar46 + psVar50[lVar43 * 2 + 2]; + if (iVar45 + 3 < param_4) { + iVar59 = iVar59 + psVar50[lVar43 * 3]; + iVar73 = iVar73 + psVar50[lVar43 * 3 + 1]; + iVar46 = iVar46 + psVar50[lVar43 * 3 + 2]; + if (iVar45 + 4 < param_4) { + iVar59 = iVar59 + psVar50[lVar43 * 4]; + iVar73 = iVar73 + psVar50[lVar43 * 4 + 1]; + iVar46 = iVar46 + psVar50[lVar43 * 4 + 2]; + if (iVar45 + 5 < param_4) { + /* try { // try from 003a999c to 004a99bb has its CatchHandler @ 003a9fe0 */ + iVar59 = iVar59 + psVar50[lVar43 * 5]; + iVar73 = iVar73 + psVar50[lVar43 * 5 + 1]; + iVar46 = iVar46 + psVar50[lVar43 * 5 + 2]; + if (iVar45 + 6 < param_4) { + iVar59 = iVar59 + psVar50[lVar43 * 6]; + iVar73 = iVar73 + psVar50[lVar43 * 6 + 1]; + iVar46 = iVar46 + psVar50[lVar43 * 6 + 2]; + } + } + } + } + } + } + } +LAB_003a99d8: + *param_3 = iVar59; + param_3[1] = iVar73; + param_3[2] = iVar46; + goto LAB_003a8b38; + } + iVar73 = *param_3; + iVar46 = param_3[1]; + if (iVar45 < param_4) { + uVar55 = param_4 - iVar45; + lVar43 = (long)iVar39; + uVar30 = (uVar55 - 8 >> 3) + 1; + uVar33 = uVar30 * 8; + if (6 < (uint)((param_4 + -1) - iVar45)) { + iVar58 = 0; + iVar72 = 0; + iVar74 = 0; + iVar64 = 0; + psVar35 = (short *)((long)param_1 + uVar37 + 2); + uVar54 = 0; + psVar36 = psVar50; + iVar57 = iVar58; + iVar59 = iVar72; + iVar60 = iVar74; + iVar56 = iVar64; + do { + sVar32 = *psVar36; + uVar54 = uVar54 + 1; + psVar42 = psVar36 + lVar43; + sVar77 = *psVar35; + psVar52 = psVar36 + lVar43 * 2; + psVar2 = psVar36 + lVar43 * 3; + psVar3 = psVar36 + lVar43 * 4; + psVar4 = psVar36 + lVar43 * 5; + psVar5 = psVar36 + lVar43 * 6; + psVar6 = psVar36 + lVar43 * 7; + psVar36 = psVar36 + lVar43 * 8; + psVar7 = psVar35 + lVar43; + psVar8 = psVar35 + lVar43 * 2; + psVar9 = psVar35 + lVar43 * 3; + /* catch() { ... } // from try @ 003a9714 with catch @ 003a9598 + catch() { ... } // from try @ 003a9770 with catch @ 003a9598 */ + psVar10 = psVar35 + lVar43 * 4; + psVar11 = psVar35 + lVar43 * 5; + iVar58 = (int)*psVar3 + sVar32 + iVar58; + iVar72 = (int)*psVar4 + *psVar42 + iVar72; + iVar74 = (int)*psVar5 + *psVar52 + iVar74; + iVar64 = (int)*psVar6 + *psVar2 + iVar64; + psVar42 = psVar35 + lVar43 * 6; + psVar52 = psVar35 + lVar43 * 7; + psVar35 = psVar35 + lVar43 * 8; + iVar57 = (int)*psVar10 + sVar77 + iVar57; + iVar59 = (int)*psVar11 + *psVar7 + iVar59; + iVar60 = (int)*psVar42 + *psVar8 + iVar60; + iVar56 = (int)*psVar52 + *psVar9 + iVar56; + } while (uVar54 < uVar30); + psVar50 = (short *)((long)psVar50 + (ulong)uVar33 * lVar43 * 2); + iVar45 = iVar45 + uVar33; + iVar46 = iVar46 + iVar57 + iVar59 + iVar60 + iVar56; + iVar73 = iVar73 + iVar58 + iVar72 + iVar74 + iVar64; + iVar57 = param_4; + if (uVar55 == uVar33) goto LAB_003a96e4; + } + /* try { // try from 003a961c to 004a961f has its CatchHandler @ 003a9774 */ + iVar73 = iVar73 + *psVar50; + iVar46 = iVar46 + psVar50[1]; + iVar57 = param_4; + if (iVar45 + 1 < param_4) { + iVar73 = iVar73 + psVar50[lVar43]; + iVar46 = iVar46 + psVar50[lVar43 + 1]; + if (iVar45 + 2 < param_4) { + iVar73 = iVar73 + psVar50[lVar43 * 2]; + iVar46 = iVar46 + psVar50[lVar43 * 2 + 1]; + if (iVar45 + 3 < param_4) { + iVar73 = iVar73 + psVar50[lVar43 * 3]; + iVar46 = iVar46 + psVar50[lVar43 * 3 + 1]; + if (iVar45 + 4 < param_4) { + /* try { // try from 003a9694 to 004a9697 has its CatchHandler @ 003a974c */ + iVar73 = iVar73 + psVar50[lVar43 * 4]; + iVar46 = iVar46 + psVar50[lVar43 * 4 + 1]; + if (iVar45 + 5 < param_4) { + iVar73 = iVar73 + psVar50[lVar43 * 5]; + iVar46 = iVar46 + psVar50[lVar43 * 5 + 1]; + if (iVar45 + 6 < param_4) { + iVar73 = iVar73 + psVar50[lVar43 * 6]; + iVar46 = iVar46 + psVar50[lVar43 * 6 + 1]; + } + } + } + } + } + } + } +LAB_003a96e4: + *param_3 = iVar73; + param_3[1] = iVar46; + goto LAB_003a8b38; + } + iVar57 = param_4 + -3; + iVar46 = *param_3; + if (iVar45 < iVar57) { + uVar55 = (param_4 + -4) - iVar45; + uVar33 = uVar55 >> 2; + lVar40 = (long)(iVar39 << 2); + uVar30 = (uVar33 - 7 >> 3) + 1; + uVar47 = -(param_5 >> 0x1f & 1) & 0xfffffffe00000000 | (param_5 & 0xffffffff) << 1; + lVar43 = (long)(iVar39 << 1); + lVar49 = lVar40 * 2; + psVar35 = psVar50; + iVar73 = iVar45; + if (uVar55 < 0x1c) { +LAB_003a9194: + iVar46 = iVar46 + (int)*psVar35 + (int)*(short *)((long)psVar35 + uVar47) + + (int)psVar35[uVar47] + (int)*(short *)((long)psVar35 + uVar47 * 3); + if (((iVar73 + 4 < iVar57) && + (iVar46 = iVar46 + (int)psVar35[uVar47 * 2] + (int)*(short *)((long)psVar35 + uVar47 * 5) + + (int)psVar35[uVar47 * 3] + + (int)*(short *)((long)psVar35 + uVar47 * 7), iVar73 + 8 < iVar57)) && + ((iVar46 = iVar46 + (int)psVar35[uVar47 * 4] + (int)*(short *)((long)psVar35 + uVar47 * 9) + + (int)psVar35[uVar47 * 5] + + (int)*(short *)((long)psVar35 + uVar47 * 0xb), iVar73 + 0xc < iVar57 && + (((iVar46 = iVar46 + (int)psVar35[uVar47 * 6] + + (int)*(short *)((long)psVar35 + uVar47 * 0xd) + + (int)psVar35[uVar47 * 7] + + (int)*(short *)((long)psVar35 + uVar47 * 0xf), iVar73 + 0x10 < iVar57 + && (iVar46 = iVar46 + (int)psVar35[uVar47 * 8] + + (int)*(short *)((long)psVar35 + uVar47 * 0x11) + + (int)psVar35[uVar47 * 9] + + (int)*(short *)((long)psVar35 + uVar47 * 0x13), + iVar73 + 0x14 < iVar57)) && + (iVar46 = iVar46 + (int)psVar35[uVar47 * 10] + + (int)*(short *)((long)psVar35 + uVar47 * 0x15) + + (int)psVar35[uVar47 * 0xb] + + (int)*(short *)((long)psVar35 + uVar47 * 0x17), iVar73 + 0x18 < iVar57 + )))))) { + iVar46 = iVar46 + (int)psVar35[uVar47 * 0xc] + + (int)*(short *)((long)psVar35 + uVar47 * 0x19) + + (int)psVar35[uVar47 * 0xd] + + (int)*(short *)((long)psVar35 + uVar47 * 0x1b); + } + } + else { + lVar86 = lVar43 + uVar37 + lVar43; + iVar73 = 0; + iVar59 = 0; + iVar60 = 0; + iVar56 = 0; + psVar35 = (short *)((long)param_1 + uVar37 + lVar43); + psVar36 = (short *)((long)param_1 + lVar86); + psVar42 = (short *)((long)param_1 + lVar43 + lVar86); + uVar55 = 0; + psVar52 = psVar50; + do { + sVar32 = *psVar52; + uVar55 = uVar55 + 1; + psVar2 = psVar52 + lVar40; + sVar84 = *psVar35; + psVar3 = psVar52 + lVar40 * 2; + psVar4 = psVar52 + lVar40 * 3; + psVar5 = psVar52 + lVar40 * 4; + psVar6 = psVar52 + lVar40 * 5; + psVar7 = psVar52 + lVar40 * 6; + psVar8 = psVar52 + lVar40 * 7; + psVar52 = psVar52 + lVar40 * 8; + psVar9 = psVar35 + lVar40; + psVar10 = psVar35 + lVar40 * 2; + psVar11 = psVar35 + lVar40 * 3; + psVar12 = psVar35 + lVar40 * 4; + psVar13 = psVar35 + lVar40 * 5; + psVar14 = psVar35 + lVar40 * 6; + psVar15 = psVar35 + lVar40 * 7; + psVar35 = psVar35 + lVar40 * 8; + sVar77 = *psVar36; + psVar16 = psVar36 + lVar40; + sVar78 = *psVar42; + psVar17 = psVar36 + lVar40 * 2; + psVar18 = psVar36 + lVar40 * 3; + psVar19 = psVar36 + lVar40 * 4; + psVar20 = psVar36 + lVar40 * 5; + psVar21 = psVar36 + lVar40 * 6; + psVar22 = psVar36 + lVar40 * 7; + psVar36 = psVar36 + lVar40 * 8; + psVar23 = psVar42 + lVar40; + psVar24 = psVar42 + lVar40 * 2; + psVar25 = psVar42 + lVar40 * 3; + psVar26 = psVar42 + lVar40 * 4; + psVar27 = psVar42 + lVar40 * 5; + psVar28 = psVar42 + lVar40 * 6; + psVar29 = psVar42 + lVar40 * 7; + psVar42 = psVar42 + lVar40 * 8; + iVar73 = (int)*psVar12 + (int)*psVar5 + (int)*psVar19 + (int)*psVar26 + + (int)sVar84 + (int)sVar32 + (int)sVar77 + (int)sVar78 + iVar73; + iVar59 = (int)*psVar13 + (int)*psVar6 + (int)*psVar20 + (int)*psVar27 + + (int)*psVar9 + (int)*psVar2 + (int)*psVar16 + (int)*psVar23 + iVar59; + iVar60 = (int)*psVar14 + (int)*psVar7 + (int)*psVar21 + (int)*psVar28 + + (int)*psVar10 + (int)*psVar3 + (int)*psVar17 + (int)*psVar24 + iVar60; + iVar56 = (int)*psVar15 + (int)*psVar8 + (int)*psVar22 + (int)*psVar29 + + (int)*psVar11 + (int)*psVar4 + (int)*psVar18 + (int)*psVar25 + iVar56; + } while (uVar55 < uVar30); + iVar46 = iVar46 + iVar73 + iVar59 + iVar60 + iVar56; + psVar35 = (short *)((long)psVar50 + (ulong)(uVar30 * 8) * lVar49); + iVar73 = iVar45 + uVar30 * 0x20; + if (uVar33 + 1 != uVar30 * 8) goto LAB_003a9194; + } + iVar45 = iVar45 + 4 + uVar33 * 4; + psVar50 = (short *)((long)psVar50 + lVar49 + (ulong)uVar33 * lVar49); + } + iVar57 = iVar45; + if (iVar45 < param_4) { + uVar55 = param_4 - iVar45; + lVar43 = (long)iVar39; + uVar30 = (uVar55 - 8 >> 3) + 1; + uVar33 = uVar30 * 8; + if (6 < (uint)((param_4 + -1) - iVar45)) { + iVar57 = 0; + iVar73 = 0; + iVar59 = 0; + iVar60 = 0; + psVar35 = psVar50 + lVar43; + uVar54 = 0; + do { + sVar32 = *psVar35; + uVar54 = uVar54 + 1; + psVar36 = psVar35 + -lVar43; + psVar42 = psVar35 + lVar43; + psVar52 = psVar35 + lVar43 * 2; + psVar2 = psVar35 + lVar43 * 3; + psVar3 = psVar35 + lVar43 * 4; + psVar4 = psVar35 + lVar43 * 5; + psVar5 = psVar35 + lVar43 * 6; + psVar35 = psVar35 + lVar43 * 8; + iVar57 = (int)*psVar2 + *psVar36 + iVar57; + iVar73 = (int)*psVar3 + sVar32 + iVar73; + iVar59 = (int)*psVar4 + *psVar42 + iVar59; + iVar60 = (int)*psVar5 + *psVar52 + iVar60; + } while (uVar54 < uVar30); + iVar45 = iVar45 + uVar33; + psVar50 = (short *)((long)psVar50 + (ulong)uVar33 * lVar43 * 2); + iVar46 = iVar46 + iVar57 + iVar73 + iVar59 + iVar60; + iVar57 = param_4; + if (uVar33 == uVar55) goto LAB_003a94ac; + } + iVar46 = iVar46 + *psVar50; + iVar57 = param_4; + if (((iVar45 + 1 < param_4) && (iVar46 = iVar46 + psVar50[lVar43], iVar45 + 2 < param_4)) && + ((iVar46 = iVar46 + psVar50[lVar43 * 2], iVar45 + 3 < param_4 && + (iVar46 = iVar46 + psVar50[lVar43 * 3], iVar45 + 4 < param_4)))) { + iVar46 = iVar46 + psVar50[lVar43 * 4]; + if ((iVar45 + 5 < param_4) && (iVar46 = iVar46 + psVar50[lVar43 * 5], iVar45 + 6 < param_4)) { + iVar46 = iVar46 + psVar50[lVar43 * 6]; + } + } + } +LAB_003a94ac: + *param_3 = iVar46; +LAB_003a8b38: + if (iVar39 <= iVar44) { + return param_4; + } + lVar86 = (long)iVar39; + lVar40 = (long)iVar44; + piVar38 = param_3 + lVar40; + lVar43 = lVar40; + lVar49 = lVar40 + 4; + do { + iVar59 = *piVar38; + iVar73 = piVar38[1]; + iVar46 = piVar38[2]; + iVar45 = piVar38[3]; + lVar87 = (long)(iVar39 * iVar57); + psVar50 = param_1 + lVar87 + lVar43; + iVar60 = iVar57; + if (iVar57 < param_4) { + uVar55 = param_4 - iVar57; + uVar30 = (uVar55 - 8 >> 3) + 1; + uVar33 = uVar30 * 8; + iVar60 = param_4; + if (6 < (uint)((param_4 + -1) - iVar57)) { + iVar65 = 0; + iVar68 = 0; + iVar69 = 0; + iVar71 = 0; + psVar35 = param_1 + lVar87 + lVar43 + 3; + psVar36 = param_1 + lVar87 + lVar43 + 2; + psVar42 = param_1 + lVar87 + lVar43 + 1; + uVar54 = 0; + psVar52 = psVar50; + iVar56 = iVar65; + iVar58 = iVar68; + iVar72 = iVar65; + iVar74 = iVar68; + iVar64 = iVar65; + iVar81 = iVar68; + iVar61 = iVar69; + iVar63 = iVar71; + iVar75 = iVar69; + iVar76 = iVar71; + iVar82 = iVar69; + iVar83 = iVar71; + do { + sVar32 = *psVar52; + uVar54 = uVar54 + 1; + psVar2 = psVar52 + lVar86; + sVar77 = *psVar42; + psVar3 = psVar52 + lVar86 * 2; + psVar4 = psVar52 + lVar86 * 3; + psVar5 = psVar52 + lVar86 * 4; + psVar6 = psVar52 + lVar86 * 5; + psVar7 = psVar52 + lVar86 * 6; + psVar8 = psVar52 + lVar86 * 7; + psVar52 = psVar52 + lVar86 * 8; + psVar9 = psVar42 + lVar86; + psVar10 = psVar42 + lVar86 * 2; + psVar11 = psVar42 + lVar86 * 3; + psVar12 = psVar42 + lVar86 * 4; + psVar13 = psVar42 + lVar86 * 5; + iVar65 = (int)*psVar5 + sVar32 + iVar65; + iVar68 = (int)*psVar6 + *psVar2 + iVar68; + iVar69 = (int)*psVar7 + *psVar3 + iVar69; + iVar71 = (int)*psVar8 + *psVar4 + iVar71; + psVar2 = psVar42 + lVar86 * 6; + psVar3 = psVar42 + lVar86 * 7; + psVar42 = psVar42 + lVar86 * 8; + sVar32 = *psVar36; + psVar4 = psVar36 + lVar86; + sVar84 = *psVar35; + psVar5 = psVar36 + lVar86 * 2; + psVar6 = psVar36 + lVar86 * 3; + iVar64 = (int)*psVar12 + sVar77 + iVar64; + iVar81 = (int)*psVar13 + *psVar9 + iVar81; + iVar82 = (int)*psVar2 + *psVar10 + iVar82; + iVar83 = (int)*psVar3 + *psVar11 + iVar83; + psVar2 = psVar36 + lVar86 * 4; + psVar3 = psVar36 + lVar86 * 5; + psVar7 = psVar36 + lVar86 * 6; + psVar8 = psVar36 + lVar86 * 7; + psVar36 = psVar36 + lVar86 * 8; + psVar9 = psVar35 + lVar86; + psVar10 = psVar35 + lVar86 * 2; + psVar11 = psVar35 + lVar86 * 3; + psVar12 = psVar35 + lVar86 * 4; + psVar13 = psVar35 + lVar86 * 5; + iVar72 = (int)*psVar2 + sVar32 + iVar72; + iVar74 = (int)*psVar3 + *psVar4 + iVar74; + iVar75 = (int)*psVar7 + *psVar5 + iVar75; + iVar76 = (int)*psVar8 + *psVar6 + iVar76; + psVar2 = psVar35 + lVar86 * 6; + psVar3 = psVar35 + lVar86 * 7; + psVar35 = psVar35 + lVar86 * 8; + iVar56 = (int)*psVar12 + sVar84 + iVar56; + iVar58 = (int)*psVar13 + *psVar9 + iVar58; + iVar61 = (int)*psVar2 + *psVar10 + iVar61; + iVar63 = (int)*psVar3 + *psVar11 + iVar63; + } while (uVar54 < uVar30); + psVar50 = (short *)((long)psVar50 + (ulong)uVar33 * lVar86 * 2); + iVar57 = iVar57 + uVar33; + iVar45 = iVar45 + iVar56 + iVar58 + iVar61 + iVar63; + iVar46 = iVar46 + iVar72 + iVar74 + iVar75 + iVar76; + iVar73 = iVar73 + iVar64 + iVar81 + iVar82 + iVar83; + iVar59 = iVar59 + iVar65 + iVar68 + iVar69 + iVar71; + if (uVar33 == uVar55) goto LAB_003a8f28; + } + iVar59 = iVar59 + *psVar50; + iVar73 = iVar73 + psVar50[1]; + iVar46 = iVar46 + psVar50[2]; + iVar45 = iVar45 + psVar50[3]; + if (iVar57 + 1 < param_4) { + iVar59 = iVar59 + psVar50[lVar86]; + iVar73 = iVar73 + psVar50[lVar86 + 1]; + iVar46 = iVar46 + psVar50[lVar86 + 2]; + iVar45 = iVar45 + psVar50[lVar86 + 3]; + if (iVar57 + 2 < param_4) { + iVar59 = iVar59 + psVar50[lVar86 * 2]; + iVar73 = iVar73 + psVar50[lVar86 * 2 + 1]; + iVar46 = iVar46 + psVar50[lVar86 * 2 + 2]; + iVar45 = iVar45 + psVar50[lVar86 * 2 + 3]; + if (iVar57 + 3 < param_4) { + iVar59 = iVar59 + psVar50[lVar86 * 3]; + iVar73 = iVar73 + psVar50[lVar86 * 3 + 1]; + iVar46 = iVar46 + psVar50[lVar86 * 3 + 2]; + iVar45 = iVar45 + psVar50[lVar86 * 3 + 3]; + if (iVar57 + 4 < param_4) { + iVar59 = iVar59 + psVar50[lVar86 * 4]; + iVar73 = iVar73 + psVar50[lVar86 * 4 + 1]; + iVar46 = iVar46 + psVar50[lVar86 * 4 + 2]; + iVar45 = iVar45 + psVar50[lVar86 * 4 + 3]; + if (iVar57 + 5 < param_4) { + iVar59 = iVar59 + psVar50[lVar86 * 5]; + iVar73 = iVar73 + psVar50[lVar86 * 5 + 1]; + iVar46 = iVar46 + psVar50[lVar86 * 5 + 2]; + iVar45 = iVar45 + psVar50[lVar86 * 5 + 3]; + if (iVar57 + 6 < param_4) { + iVar59 = iVar59 + psVar50[lVar86 * 6]; + iVar73 = iVar73 + psVar50[lVar86 * 6 + 1]; + iVar46 = iVar46 + psVar50[lVar86 * 6 + 2]; + iVar45 = iVar45 + psVar50[lVar86 * 6 + 3]; + } + } + } + } + } + } + } +LAB_003a8f28: + iVar57 = iVar60; + *(ulong *)(piVar38 + 2) = CONCAT44(iVar45,iVar46); + *(ulong *)piVar38 = CONCAT44(iVar73,iVar59); + if (lVar49 == lVar40 + 4 + (ulong)((iVar39 - 1U) - iVar44 >> 2) * 4) { + return param_4; + } + piVar38 = piVar38 + 4; + lVar43 = lVar49; + lVar49 = lVar49 + 4; + } while( true ); +} + + +================================================================== + +### FUNC 003a9bd8 (356 bytes) name=FUN_003a9bd8 + +undefined8 +FUN_003a9bd8(float *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + float *pfVar1; + uint uVar2; + long lVar3; + float *pfVar4; + ulong uVar5; + int iVar6; + long lVar7; + float *pfVar8; + long lVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + + dVar13 = *param_4; + iVar6 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < iVar6)) { + lVar7 = 0; + do { + pfVar4 = param_1 + lVar7; + lVar3 = lVar7 * 4; + lVar7 = lVar7 + 1; + /* try { // try from 003a9c18 to 004a9d23 has its CatchHandler @ 003a97ac */ + dVar11 = (double)(*pfVar4 - *(float *)(param_2 + lVar3)); + dVar13 = dVar13 + dVar11 * dVar11; + } while ((int)lVar7 < iVar6); + } + lVar9 = lVar9 + 1; + param_1 = (float *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar9 < param_5); + } + *param_4 = dVar13; + return 0; + } + param_5 = param_5 * iVar6; + if (param_5 < 4) { + dVar11 = 0.0; + uVar10 = 0; + } + else { + dVar11 = 0.0; + uVar2 = param_5 - 4U >> 2; + pfVar4 = (float *)(param_2 + 4); + pfVar8 = param_1; + do { + pfVar1 = pfVar4 + 4; + dVar11 = dVar11 + (double)(pfVar8[1] - *pfVar4) * (double)(pfVar8[1] - *pfVar4) + + (double)(*pfVar8 - pfVar4[-1]) * (double)(*pfVar8 - pfVar4[-1]) + + (double)(pfVar8[2] - pfVar4[1]) * (double)(pfVar8[2] - pfVar4[1]) + + (double)(pfVar8[3] - pfVar4[2]) * (double)(pfVar8[3] - pfVar4[2]); + pfVar4 = pfVar1; + pfVar8 = pfVar8 + 4; + } while (pfVar1 != (float *)(param_2 + (ulong)uVar2 * 0x10 + 0x14)); + uVar10 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar5 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + lVar9 = 0; + do { + lVar7 = lVar9 + uVar5; + pfVar4 = (float *)(param_2 + uVar5 + lVar9); + lVar9 = lVar9 + 4; + dVar12 = (double)(*(float *)((long)param_1 + lVar7) - *pfVar4); + dVar11 = dVar11 + dVar12 * dVar12; + } while (lVar9 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 4); + } + *param_4 = dVar13 + dVar11; + return 0; +} + + +================================================================== + +### FUNC 003a9d3c (372 bytes) name=FUN_003a9d3c + +undefined8 +FUN_003a9d3c(float *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + float *pfVar1; + uint uVar2; + long lVar3; + float *pfVar4; + ulong uVar5; + int iVar6; + long lVar7; + float *pfVar8; + long lVar9; + ulong uVar10; + double dVar11; + double dVar12; + + dVar11 = *param_4; + iVar6 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < iVar6)) { + lVar7 = 0; + do { + pfVar4 = param_1 + lVar7; + lVar3 = lVar7 * 4; + lVar7 = lVar7 + 1; + dVar11 = dVar11 + (double)ABS(*pfVar4 - *(float *)(param_2 + lVar3)); + } while ((int)lVar7 < iVar6); + } + lVar9 = lVar9 + 1; + param_1 = (float *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar9 < param_5); + } + *param_4 = dVar11; + return 0; + } + param_5 = param_5 * iVar6; + if (param_5 < 4) { + dVar12 = 0.0; + uVar10 = 0; + } + else { + dVar12 = 0.0; + uVar2 = param_5 - 4U >> 2; + pfVar4 = (float *)(param_2 + 4); + pfVar8 = param_1; + do { + pfVar1 = pfVar4 + 4; + /* try { // try from 003a9de4 to 004a9de7 has its CatchHandler @ 003aa014 */ + dVar12 = dVar12 + ABS((double)(*pfVar8 - pfVar4[-1])) + ABS((double)(pfVar8[1] - *pfVar4)) + + ABS((double)(pfVar8[2] - pfVar4[1])) + ABS((double)(pfVar8[3] - pfVar4[2])); + pfVar4 = pfVar1; + pfVar8 = pfVar8 + 4; + } while (pfVar1 != (float *)(param_2 + (ulong)uVar2 * 0x10 + 0x14)); + uVar10 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar5 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + lVar9 = 0; + do { + lVar7 = lVar9 + uVar5; + /* try { // try from 003a9e74 to 004a9e93 has its CatchHandler @ 003a9f78 */ + pfVar4 = (float *)(param_2 + uVar5 + lVar9); + lVar9 = lVar9 + 4; + dVar12 = dVar12 + ABS((double)(*(float *)((long)param_1 + lVar7) - *pfVar4)); + } while (lVar9 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 4); + } + *param_4 = dVar11 + dVar12; + return 0; +} + + +================================================================== + +### FUNC 003a9eb0 (308 bytes) name=FUN_003a9eb0 + +undefined8 FUN_003a9eb0(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + long lVar2; + float *pfVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + float *pfVar4; + + dVar8 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar7 = 0; + do { + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + lVar2 = lVar6 * 4; + lVar6 = lVar6 + 1; + dVar8 = dVar8 + (double)ABS(*(float *)(param_1 + lVar2)); + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2); + } while ((int)lVar7 < param_4); + } + *param_3 = dVar8; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + /* catch() { ... } // from try @ 003a9f50 with catch @ 003a9fdc + catch() { ... } // from try @ 003a9f70 with catch @ 003a9fdc */ + dVar9 = 0.0; + iVar5 = 0; + /* catch() { ... } // from try @ 003a999c with catch @ 003a9fe0 */ + } + else { + dVar9 = 0.0; + uVar1 = param_4 - 4U >> 2; + pfVar3 = (float *)(param_1 + 4); + do { + pfVar4 = pfVar3 + 4; + /* try { // try from 003a9f50 to 004a9f53 has its CatchHandler @ 003a9fdc */ + /* try { // try from 003a9f5c to 004a9f5f has its CatchHandler @ 003a9fd4 */ + /* try { // try from 003a9f70 to 004a9f73 has its CatchHandler @ 003a9fdc */ + /* catch() { ... } // from try @ 003a9e74 with catch @ 003a9f78 */ + dVar9 = dVar9 + (double)ABS(pfVar3[-1]) + (double)ABS(*pfVar3) + (double)ABS(pfVar3[1]) + + (double)ABS(pfVar3[2]); + pfVar3 = pfVar4; + } while (pfVar4 != (float *)(param_1 + (ulong)uVar1 * 0x10 + 0x14)); + iVar5 = (uVar1 + 1) * 4; + } + if (iVar5 < param_4) { + pfVar3 = (float *)(param_1 + (long)iVar5 * 4); + do { + pfVar4 = pfVar3 + 1; + dVar9 = dVar9 + (double)ABS(*pfVar3); + pfVar3 = pfVar4; + } while (pfVar4 != (float *)(param_1 + + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 4)); + } + /* try { // try from 003a9fd0 to 004a9fd3 has its CatchHandler @ 003a97ac */ + /* catch() { ... } // from try @ 003a9a74 with catch @ 003a9fd4 + catch() { ... } // from try @ 003a9f5c with catch @ 003a9fd4 */ + *param_3 = dVar8 + dVar9; + return 0; +} + + +================================================================== + +### FUNC 003a9fe4 (288 bytes) name=FUN_003a9fe4 + +undefined8 FUN_003a9fe4(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + long lVar2; + float *pfVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + float *pfVar4; + + dVar9 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar7 = 0; + do { + /* catch() { ... } // from try @ 003a98b8 with catch @ 003aa004 */ + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + lVar2 = lVar6 * 4; + /* catch() { ... } // from try @ 003a9864 with catch @ 003aa014 + catch() { ... } // from try @ 003a98c0 with catch @ 003aa014 + catch() { ... } // from try @ 003a9ab0 with catch @ 003aa014 + catch() { ... } // from try @ 003a9af4 with catch @ 003aa014 + catch() { ... } // from try @ 003a9de4 with catch @ 003aa014 */ + lVar6 = lVar6 + 1; + /* catch() { ... } // from try @ 003a9aec with catch @ 003aa01c */ + dVar8 = (double)*(float *)(param_1 + lVar2); + dVar9 = dVar9 + dVar8 * dVar8; + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2); + /* catch() { ... } // from try @ 003aa070 with catch @ 003aa030 + catch() { ... } // from try @ 003aa608 with catch @ 003aa030 + catch() { ... } // from try @ 003aabf8 with catch @ 003aa030 + catch() { ... } // from try @ 003aacd8 with catch @ 003aa030 */ + } while ((int)lVar7 < param_4); + } + *param_3 = dVar9; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + dVar8 = 0.0; + iVar5 = 0; + } + else { + dVar8 = 0.0; + uVar1 = param_4 - 4U >> 2; + pfVar3 = (float *)(param_1 + 4); + do { + /* try { // try from 003aa070 to 004aa08f has its CatchHandler @ 003aa030 */ + pfVar4 = pfVar3 + 4; + /* try { // try from 003aa094 to 004aa0b3 has its CatchHandler @ 003aacec */ + dVar8 = dVar8 + (double)*pfVar3 * (double)*pfVar3 + (double)pfVar3[-1] * (double)pfVar3[-1] + + (double)pfVar3[1] * (double)pfVar3[1] + (double)pfVar3[2] * (double)pfVar3[2]; + pfVar3 = pfVar4; + } while (pfVar4 != (float *)(param_1 + (ulong)uVar1 * 0x10 + 0x14)); + iVar5 = (uVar1 + 1) * 4; + } + /* try { // try from 003aa0b8 to 004aa0d7 has its CatchHandler @ 003aad54 */ + if (iVar5 < param_4) { + pfVar3 = (float *)(param_1 + (long)iVar5 * 4); + do { + pfVar4 = pfVar3 + 1; + /* try { // try from 003aa0dc to 004aa0fb has its CatchHandler @ 003aad4c */ + dVar8 = dVar8 + (double)*pfVar3 * (double)*pfVar3; + pfVar3 = pfVar4; + } while (pfVar4 != (float *)(param_1 + + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 4)); + } + *param_3 = dVar9 + dVar8; + return 0; +} + + +================================================================== + +### FUNC 003aa104 (188 bytes) name=FUN_003aa104 + +undefined8 +FUN_003aa104(long param_1,long param_2,long param_3,float *param_4,int param_5,ulong param_6) + +{ + long lVar1; + long lVar2; + int iVar3; + long lVar4; + long lVar5; + ulong uVar6; + float fVar7; + float fVar8; + float fVar9; + + fVar7 = *param_4; + iVar3 = (int)param_6; + if (param_3 == 0) { + fVar8 = 0.0; + lVar5 = 0; + fVar9 = fVar8; + if (0 < param_5 * iVar3) { + do { + lVar4 = lVar5 * 4; + lVar1 = lVar5 * 4; + lVar5 = lVar5 + 1; + /* try { // try from 003aa194 to 004aa197 has its CatchHandler @ 003aad44 */ + fVar8 = ABS(*(float *)(param_1 + lVar4) - *(float *)(param_2 + lVar1)); + if (fVar8 <= fVar9) { + fVar8 = fVar9; + } + fVar9 = fVar8; + } while ((int)lVar5 < param_5 * iVar3); + } + if (fVar7 < fVar8) { + fVar7 = fVar8; + } + } + else if (0 < param_5) { + uVar6 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar5 = 0; + do { + if ((*(char *)(param_3 + lVar5) != '\0') && (0 < iVar3)) { + lVar4 = 0; + fVar8 = fVar7; + do { + lVar1 = lVar4 * 4; + lVar2 = lVar4 * 4; + lVar4 = lVar4 + 1; + fVar7 = ABS(*(float *)(param_1 + lVar1) - *(float *)(param_2 + lVar2)); + if (fVar7 <= fVar8) { + fVar7 = fVar8; + } + fVar8 = fVar7; + } while ((int)lVar4 < iVar3); + } + lVar5 = lVar5 + 1; + param_1 = param_1 + uVar6; + param_2 = param_2 + uVar6; + } while ((int)lVar5 < param_5); + } + *param_4 = fVar7; + return 0; +} + + +================================================================== + +### FUNC 003aa1c0 (624 bytes) name=FUN_003aa1c0 + +void FUN_003aa1c0(byte *param_1,long param_2,long param_3,int param_4,int param_5,long param_6, + long param_7) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + byte *pbVar6; + long lVar7; + byte *pbVar8; + byte *pbVar9; + long lVar10; + float fVar11; + float fVar12; + + fVar12 = DAT_003aa430; + /* try { // try from 003aa1cc to 004aa1cf has its CatchHandler @ 003aad3c */ + if (param_7 == 0) { + if (0 < param_4) { + /* try { // try from 003aa314 to 004aa317 has its CatchHandler @ 003aad2c */ + uVar3 = param_5 - 4U >> 2; + /* try { // try from 003aa31c to 004aa363 has its CatchHandler @ 003aad3c */ + iVar2 = (uVar3 + 1) * 4; + pbVar6 = (byte *)(param_2 + 1); + if (param_5 + -3 < 1) { + iVar2 = 0; + } + lVar10 = 0; + do { + fVar12 = 0.0; + if (0 < param_5 + -3) { + pbVar8 = pbVar6; + pbVar9 = param_1; + do { + pbVar1 = pbVar8 + 4; + /* try { // try from 003aa388 to 004aa38b has its CatchHandler @ 003aad24 */ + /* try { // try from 003aa3a8 to 004aa3ab has its CatchHandler @ 003aacf4 */ + /* try { // try from 003aa3b0 to 004aa3b3 has its CatchHandler @ 003aad24 */ + fVar12 = fVar12 + ABS((float)(int)((uint)*pbVar9 - (uint)pbVar8[-1])) + + ABS((float)(int)((uint)pbVar9[1] - (uint)*pbVar8)) + + ABS((float)(int)((uint)pbVar9[2] - (uint)pbVar8[1])) + + ABS((float)(int)((uint)pbVar9[3] - (uint)pbVar8[2])); + pbVar8 = pbVar1; + pbVar9 = pbVar9 + 4; + } while (pbVar1 != pbVar6 + (ulong)uVar3 * 4 + 4); + } + if (iVar2 < param_5) { + lVar7 = 0; + do { + lVar4 = lVar7 + iVar2; + lVar5 = lVar7 + (long)iVar2 + -1; + lVar7 = lVar7 + 1; + fVar12 = fVar12 + ABS((float)(int)((uint)param_1[lVar4] - (uint)pbVar6[lVar5])); + } while (lVar7 != (ulong)(uint)((param_5 + -1) - iVar2) + 1); + } + *(float *)(param_6 + lVar10 * 4) = fVar12; + lVar10 = lVar10 + 1; + pbVar6 = pbVar6 + param_3; + } while ((int)lVar10 < param_4); + /* try { // try from 003aa424 to 004aa427 has its CatchHandler @ 003aad3c */ + return; + } + } + else if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + pbVar6 = (byte *)(param_2 + 1); + if (param_5 + -3 < 1) { + iVar2 = 0; + } + lVar10 = 0; + do { + fVar11 = fVar12; + if (*(char *)(param_7 + lVar10) != '\0') { + /* try { // try from 003aa228 to 004aa22b has its CatchHandler @ 003aacdc */ + fVar11 = 0.0; + /* try { // try from 003aa230 to 004aa25b has its CatchHandler @ 003aad3c */ + if (0 < param_5 + -3) { + pbVar8 = pbVar6; + pbVar9 = param_1; + do { + pbVar1 = pbVar8 + 4; + /* try { // try from 003aa288 to 004aa28b has its CatchHandler @ 003aac40 */ + /* try { // try from 003aa290 to 004aa2c3 has its CatchHandler @ 003aad3c */ + fVar11 = fVar11 + ABS((float)(int)((uint)*pbVar9 - (uint)pbVar8[-1])) + + ABS((float)(int)((uint)pbVar9[1] - (uint)*pbVar8)) + + ABS((float)(int)((uint)pbVar9[2] - (uint)pbVar8[1])) + + ABS((float)(int)((uint)pbVar9[3] - (uint)pbVar8[2])); + pbVar8 = pbVar1; + pbVar9 = pbVar9 + 4; + } while (pbVar1 != pbVar6 + (ulong)uVar3 * 4 + 4); + } + if (iVar2 < param_5) { + lVar7 = 0; + do { + lVar4 = lVar7 + iVar2; + lVar5 = lVar7 + (long)iVar2 + -1; + lVar7 = lVar7 + 1; + fVar11 = fVar11 + ABS((float)(int)((uint)param_1[lVar4] - (uint)pbVar6[lVar5])); + } while (lVar7 != (ulong)(uint)((param_5 + -1) - iVar2) + 1); + } + } + *(float *)(param_6 + lVar10 * 4) = fVar11; + lVar10 = lVar10 + 1; + pbVar6 = pbVar6 + param_3; + } while ((int)lVar10 < param_4); + } + return; +} + + +================================================================== + +### FUNC 003aa434 (528 bytes) name=FUN_003aa434 + +void FUN_003aa434(float *param_1,long param_2,ulong param_3,int param_4,int param_5,long param_6, + long param_7) + +{ + float *pfVar1; + uint uVar2; + uint uVar3; + long lVar4; + long lVar5; + float *pfVar6; + float *pfVar7; + long lVar8; + float *pfVar9; + long lVar10; + ulong uVar11; + float fVar12; + float fVar13; + + fVar13 = DAT_003aa644; + if (param_7 == 0) { + if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + uVar2 = (uVar3 + 1) * 4; + pfVar6 = (float *)(param_2 + 4); + if (param_5 + -3 < 1) { + uVar2 = 0; + } + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + lVar10 = 0; + do { + /* try { // try from 003aa594 to 004aa597 has its CatchHandler @ 003aacec */ + fVar13 = 0.0; + if (0 < param_5 + -3) { + pfVar7 = pfVar6; + pfVar9 = param_1; + do { + pfVar1 = pfVar7 + 4; + fVar13 = fVar13 + ABS(*pfVar9 - pfVar7[-1]) + ABS(pfVar9[1] - *pfVar7) + + ABS(pfVar9[2] - pfVar7[1]) + ABS(pfVar9[3] - pfVar7[2]); + pfVar7 = pfVar1; + pfVar9 = pfVar9 + 4; + } while (pfVar1 != pfVar6 + (ulong)uVar3 * 4 + 4); + } + if ((int)uVar2 < param_5) { + /* try { // try from 003aa608 to 004aa69b has its CatchHandler @ 003aa030 */ + lVar8 = 0; + do { + lVar4 = lVar8 + uVar11; + lVar5 = lVar8 + (uVar11 - 4); + lVar8 = lVar8 + 4; + fVar13 = fVar13 + ABS(*(float *)((long)param_1 + lVar4) - + *(float *)((long)pfVar6 + lVar5)); + } while (lVar8 != ((ulong)((param_5 + -1) - uVar2) + 1) * 4); + } + *(float *)(param_6 + lVar10 * 4) = fVar13; + lVar10 = lVar10 + 1; + pfVar6 = pfVar6 + (param_3 >> 2); + } while ((int)lVar10 < param_4); + return; + } + } + else if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + uVar2 = (uVar3 + 1) * 4; + if (param_5 + -3 < 1) { + uVar2 = 0; + } + pfVar6 = (float *)(param_2 + 4); + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + lVar10 = 0; + do { + fVar12 = fVar13; + if (*(char *)(param_7 + lVar10) != '\0') { + fVar12 = 0.0; + if (0 < param_5 + -3) { + /* try { // try from 003aa4ac to 004aa4af has its CatchHandler @ 003aad4c */ + pfVar7 = pfVar6; + pfVar9 = param_1; + do { + pfVar1 = pfVar7 + 4; + fVar12 = fVar12 + ABS(*pfVar9 - pfVar7[-1]) + ABS(pfVar9[1] - *pfVar7) + + ABS(pfVar9[2] - pfVar7[1]) + ABS(pfVar9[3] - pfVar7[2]); + pfVar7 = pfVar1; + pfVar9 = pfVar9 + 4; + } while (pfVar1 != pfVar6 + (ulong)uVar3 * 4 + 4); + } + if ((int)uVar2 < param_5) { + lVar8 = 0; + do { + lVar4 = lVar8 + uVar11; + lVar5 = lVar8 + (uVar11 - 4); + /* try { // try from 003aa520 to 004aa523 has its CatchHandler @ 003aad54 */ + lVar8 = lVar8 + 4; + fVar12 = fVar12 + ABS(*(float *)((long)param_1 + lVar4) - + *(float *)((long)pfVar6 + lVar5)); + } while (lVar8 != ((ulong)((param_5 + -1) - uVar2) + 1) * 4); + } + } + *(float *)(param_6 + lVar10 * 4) = fVar12; + lVar10 = lVar10 + 1; + pfVar6 = pfVar6 + (param_3 >> 2); + } while ((int)lVar10 < param_4); + } + return; +} + + +================================================================== + +### FUNC 003aa648 (616 bytes) name=FUN_003aa648 + +void FUN_003aa648(long param_1,int *param_2) + +{ + long lVar1; + int iVar2; + ulong uVar3; + int *piVar4; + long lVar5; + int iVar6; + long lVar7; + int iVar8; + int *piVar9; + long lVar10; + long lVar11; + int iVar12; + long lVar13; + long lVar14; + ulong uVar15; + long lVar16; + int iVar17; + int aiStack_420 [264]; + + lVar13 = *(long *)(param_1 + 0x10); + piVar4 = aiStack_420; + uVar15 = (ulong)*(int *)(lVar13 + 8); + if (uVar15 < 0x109) { + iVar17 = *param_2; + if (iVar17 < param_2[1]) goto LAB_003aa6c0; + } + else { + uVar3 = uVar15 << 2; + if (0x1fc0000000000000 < uVar15) { + uVar3 = 0xffffffffffffffff; + } + piVar4 = operator_new__(uVar3); + iVar17 = *param_2; + /* try { // try from 003aa6a4 to 004aa6a7 has its CatchHandler @ 003aacec */ + /* try { // try from 003aa6b0 to 004aa6b3 has its CatchHandler @ 003aad54 */ + if (iVar17 < param_2[1]) { + lVar13 = *(long *)(param_1 + 0x10); + /* try { // try from 003aa6bc to 004aa6bf has its CatchHandler @ 003aad4c */ +LAB_003aa6c0: + lVar16 = (long)iVar17; + do { + /* try { // try from 003aa6c8 to 004aa6cb has its CatchHandler @ 003aad3c */ + piVar9 = piVar4; + if (*(int *)(param_1 + 0x30) < 1) { + piVar9 = (int *)(*(long *)(*(long *)(param_1 + 0x18) + 0x10) + + lVar16 * **(long **)(*(long *)(param_1 + 0x18) + 0x48)); + } + lVar10 = *(long *)(*(long *)(param_1 + 0x28) + 0x10); + if (lVar10 != 0) { + lVar10 = lVar10 + lVar16 * **(long **)(*(long *)(param_1 + 0x28) + 0x48); + } + (**(code **)(param_1 + 0x38)) + (*(long *)(*(long *)(param_1 + 8) + 0x10) + + lVar16 * **(long **)(*(long *)(param_1 + 8) + 0x48), + *(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x50), + *(undefined4 *)(lVar13 + 8),*(undefined4 *)(lVar13 + 0xc),piVar9,lVar10); + iVar8 = *(int *)(param_1 + 0x30); + if (0 < iVar8) { + lVar10 = *(long *)(param_1 + 0x10); + iVar6 = *(int *)(lVar10 + 8); + lVar14 = *(long *)(*(long *)(param_1 + 0x20) + 0x10) + + lVar16 * **(long **)(*(long *)(param_1 + 0x20) + 0x48); + lVar13 = *(long *)(*(long *)(param_1 + 0x18) + 0x10) + + lVar16 * **(long **)(*(long *)(param_1 + 0x18) + 0x48); + if (0 < iVar6) { + iVar12 = 0; + piVar9 = piVar4; + do { + iVar2 = *piVar9; + if (iVar2 < *(int *)(lVar13 + (long)iVar8 * 4 + -4)) { + iVar8 = iVar8 + -2; + if (iVar8 < 0) { + lVar11 = (long)iVar8; + } + else { + lVar11 = (long)iVar8; + lVar5 = lVar11 * 4; + if (iVar2 < *(int *)(lVar13 + lVar5)) { + lVar1 = lVar14 + lVar5; + lVar7 = 0; + do { + iVar8 = iVar8 + -1; + *(undefined4 *)(lVar1 + lVar7 + 4) = *(undefined4 *)(lVar1 + lVar7); + *(undefined4 *)(lVar13 + lVar5 + lVar7 + 4) = + *(undefined4 *)(lVar13 + lVar5 + lVar7); + if (iVar8 == -1) { + lVar11 = -1; + break; + } + lVar11 = lVar11 + -1; + lVar7 = lVar7 + -4; + } while (iVar2 < *(int *)(lVar13 + lVar11 * 4)); + } + } + lVar11 = (lVar11 + 1) * 4; + *(int *)(lVar14 + lVar11) = *(int *)(param_1 + 0x34) + iVar12; + *(int *)(lVar13 + lVar11) = iVar2; + iVar6 = *(int *)(lVar10 + 8); + } + iVar12 = iVar12 + 1; + piVar9 = piVar9 + 1; + if (iVar6 <= iVar12) break; + iVar8 = *(int *)(param_1 + 0x30); + } while( true ); + } + } + iVar17 = iVar17 + 1; + lVar16 = lVar16 + 1; + if (param_2[1] <= iVar17) break; + lVar13 = *(long *)(param_1 + 0x10); + } while( true ); + } + if ((piVar4 != aiStack_420) && (piVar4 != (int *)0x0)) { + operator_delete__(piVar4); + } + } + return; +} + + +================================================================== + +### FUNC 003aa8d0 (592 bytes) name=FUN_003aa8d0 + +void FUN_003aa8d0(byte *param_1,long param_2,long param_3,int param_4,int param_5,long param_6, + long param_7) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + byte *pbVar6; + long lVar7; + byte *pbVar8; + byte *pbVar9; + long lVar10; + float fVar11; + float fVar12; + + fVar12 = DAT_003aab20; + if (param_7 == 0) { + if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + pbVar6 = (byte *)(param_2 + 1); + if (param_5 + -3 < 1) { + iVar2 = 0; + } + lVar10 = 0; + do { + fVar12 = 0.0; + if (0 < param_5 + -3) { + pbVar8 = pbVar6; + pbVar9 = param_1; + do { + pbVar1 = pbVar8 + 4; + fVar12 = fVar12 + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) * + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) + + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) * + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) + + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) * + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) + + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]) * + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]); + pbVar8 = pbVar1; + pbVar9 = pbVar9 + 4; + } while (pbVar1 != pbVar6 + (ulong)uVar3 * 4 + 4); + } + if (iVar2 < param_5) { + lVar7 = 0; + do { + lVar4 = lVar7 + iVar2; + lVar5 = lVar7 + (long)iVar2 + -1; + lVar7 = lVar7 + 1; + fVar12 = fVar12 + (float)(int)((uint)param_1[lVar4] - (uint)pbVar6[lVar5]) * + (float)(int)((uint)param_1[lVar4] - (uint)pbVar6[lVar5]); + } while (lVar7 != (ulong)(uint)((param_5 + -1) - iVar2) + 1); + } + *(float *)(param_6 + lVar10 * 4) = fVar12; + lVar10 = lVar10 + 1; + pbVar6 = pbVar6 + param_3; + } while ((int)lVar10 < param_4); + return; + } + } + else if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + iVar2 = (uVar3 + 1) * 4; + pbVar6 = (byte *)(param_2 + 1); + if (param_5 + -3 < 1) { + iVar2 = 0; + } + lVar10 = 0; + do { + fVar11 = fVar12; + if (*(char *)(param_7 + lVar10) != '\0') { + fVar11 = 0.0; + if (0 < param_5 + -3) { + pbVar8 = pbVar6; + pbVar9 = param_1; + do { + pbVar1 = pbVar8 + 4; + fVar11 = fVar11 + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) * + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) + + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) * + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) + + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) * + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) + + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]) * + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]); + pbVar8 = pbVar1; + pbVar9 = pbVar9 + 4; + } while (pbVar1 != pbVar6 + (ulong)uVar3 * 4 + 4); + } + if (iVar2 < param_5) { + lVar7 = 0; + do { + lVar4 = lVar7 + iVar2; + lVar5 = lVar7 + (long)iVar2 + -1; + lVar7 = lVar7 + 1; + fVar11 = fVar11 + (float)(int)((uint)param_1[lVar4] - (uint)pbVar6[lVar5]) * + (float)(int)((uint)param_1[lVar4] - (uint)pbVar6[lVar5]); + } while (lVar7 != (ulong)(uint)((param_5 + -1) - iVar2) + 1); + } + } + *(float *)(param_6 + lVar10 * 4) = fVar11; + lVar10 = lVar10 + 1; + pbVar6 = pbVar6 + param_3; + } while ((int)lVar10 < param_4); + } + return; +} + + +================================================================== + +### FUNC 003aab24 (536 bytes) name=FUN_003aab24 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_003aab24(float *param_1,long param_2,ulong param_3,int param_4,int param_5,long param_6, + long param_7) + +{ + float *pfVar1; + uint uVar2; + uint uVar3; + long lVar4; + long lVar5; + float *pfVar6; + float *pfVar7; + long lVar8; + float *pfVar9; + long lVar10; + ulong uVar11; + float fVar12; + float fVar13; + float fVar14; + + fVar14 = _LAB_003aad3c; + if (param_7 == 0) { + /* catch() { ... } // from try @ 003aa288 with catch @ 003aac40 */ + if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + uVar2 = (uVar3 + 1) * 4; + pfVar6 = (float *)(param_2 + 4); + if (param_5 + -3 < 1) { + uVar2 = 0; + } + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + lVar10 = 0; + do { + fVar14 = 0.0; + if (0 < param_5 + -3) { + pfVar7 = pfVar6; + pfVar9 = param_1; + do { + pfVar1 = pfVar7 + 4; + /* try { // try from 003aacd8 to 004aacdb has its CatchHandler @ 003aa030 */ + /* catch() { ... } // from try @ 003aa228 with catch @ 003aacdc */ + /* catch() { ... } // from try @ 003aa094 with catch @ 003aacec + catch() { ... } // from try @ 003aa594 with catch @ 003aacec + catch() { ... } // from try @ 003aa6a4 with catch @ 003aacec + catch() { ... } // from try @ 003aac08 with catch @ 003aacec */ + fVar14 = fVar14 + (pfVar9[1] - *pfVar7) * (pfVar9[1] - *pfVar7) + + (*pfVar9 - pfVar7[-1]) * (*pfVar9 - pfVar7[-1]) + + (pfVar9[2] - pfVar7[1]) * (pfVar9[2] - pfVar7[1]) + + (pfVar9[3] - pfVar7[2]) * (pfVar9[3] - pfVar7[2]); + pfVar7 = pfVar1; + pfVar9 = pfVar9 + 4; + /* catch() { ... } // from try @ 003aa3a8 with catch @ 003aacf4 */ + } while (pfVar1 != pfVar6 + (ulong)uVar3 * 4 + 4); + } + if ((int)uVar2 < param_5) { + lVar8 = 0; + do { + lVar4 = lVar8 + uVar11; + lVar5 = lVar8 + (uVar11 - 4); + lVar8 = lVar8 + 4; + fVar13 = *(float *)((long)param_1 + lVar4) - *(float *)((long)pfVar6 + lVar5); + fVar14 = fVar14 + fVar13 * fVar13; + } while (lVar8 != ((ulong)((param_5 + -1) - uVar2) + 1) * 4); + } + /* catch() { ... } // from try @ 003aa388 with catch @ 003aad24 + catch() { ... } // from try @ 003aa3b0 with catch @ 003aad24 */ + *(float *)(param_6 + lVar10 * 4) = fVar14; + lVar10 = lVar10 + 1; + /* catch() { ... } // from try @ 003aa314 with catch @ 003aad2c */ + pfVar6 = pfVar6 + (param_3 >> 2); + } while ((int)lVar10 < param_4); + return; + } + } + else if (0 < param_4) { + uVar3 = param_5 - 4U >> 2; + uVar2 = (uVar3 + 1) * 4; + if (param_5 + -3 < 1) { + uVar2 = 0; + } + pfVar6 = (float *)(param_2 + 4); + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + lVar10 = 0; + do { + fVar13 = fVar14; + if (*(char *)(param_7 + lVar10) != '\0') { + fVar13 = 0.0; + if (0 < param_5 + -3) { + pfVar7 = pfVar6; + pfVar9 = param_1; + do { + pfVar1 = pfVar7 + 4; + fVar13 = fVar13 + (pfVar9[1] - *pfVar7) * (pfVar9[1] - *pfVar7) + + (*pfVar9 - pfVar7[-1]) * (*pfVar9 - pfVar7[-1]) + + (pfVar9[2] - pfVar7[1]) * (pfVar9[2] - pfVar7[1]) + + (pfVar9[3] - pfVar7[2]) * (pfVar9[3] - pfVar7[2]); + pfVar7 = pfVar1; + pfVar9 = pfVar9 + 4; + /* try { // try from 003aabf8 to 004aabfb has its CatchHandler @ 003aa030 */ + } while (pfVar1 != pfVar6 + (ulong)uVar3 * 4 + 4); + } + if ((int)uVar2 < param_5) { + /* try { // try from 003aac08 to 004aac0b has its CatchHandler @ 003aacec */ + lVar8 = 0; + do { + lVar4 = lVar8 + uVar11; + lVar5 = lVar8 + (uVar11 - 4); + lVar8 = lVar8 + 4; + /* try { // try from 003aac18 to 004aac1b has its CatchHandler @ 003aad54 */ + fVar12 = *(float *)((long)param_1 + lVar4) - *(float *)((long)pfVar6 + lVar5); + fVar13 = fVar13 + fVar12 * fVar12; + } while (lVar8 != ((ulong)((param_5 + -1) - uVar2) + 1) * 4); + } + } + /* try { // try from 003aac28 to 004aac2b has its CatchHandler @ 003aad4c */ + *(float *)(param_6 + lVar10 * 4) = fVar13; + lVar10 = lVar10 + 1; + pfVar6 = pfVar6 + (param_3 >> 2); + /* try { // try from 003aac38 to 004aac3b has its CatchHandler @ 003aad3c */ + } while ((int)lVar10 < param_4); + } + return; +} + + +================================================================== + +### FUNC 003aad40 (3620 bytes) name=FUN_003aad40 + +void FUN_003aad40(byte *param_1,byte *param_2,long param_3,int param_4,int param_5,int *param_6, + long param_7) + +{ + int iVar1; + uint uVar2; + int *piVar3; + ulong uVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint3 uVar8; + byte *pbVar9; + byte *pbVar68; + int *piVar127; + int iVar128; + uint uVar129; + long lVar130; + uint uVar131; + long lVar132; + byte bVar133; + byte bVar134; + int iVar135; + int iVar136; + int iVar137; + int iVar138; + int iVar139; + byte bVar142; + byte bVar143; + int iVar140; + int iVar141; + int iVar144; + int iVar145; + byte bVar147; + byte bVar148; + undefined8 uVar146; + byte bVar150; + byte bVar151; + undefined8 uVar149; + int iVar152; + int iVar153; + byte bVar154; + byte bVar155; + byte bVar156; + byte bVar157; + byte bVar158; + int iVar159; + int iVar161; + undefined8 uVar160; + undefined8 uVar162; + int iVar163; + int iVar164; + int iVar165; + int iVar166; + int iVar167; + int iVar168; + int iVar169; + int iVar170; + int iVar171; + int iVar172; + int iVar173; + int iVar174; + int iVar175; + int iVar176; + int iVar177; + int iVar178; + int iVar179; + int iVar180; + int iVar181; + int iVar182; + int iVar183; + int iVar184; + int iVar185; + int iVar186; + int iVar187; + int iVar188; + byte *pbVar10; + byte *pbVar11; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + byte *pbVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + byte *pbVar63; + byte *pbVar64; + byte *pbVar65; + byte *pbVar66; + byte *pbVar67; + byte *pbVar69; + byte *pbVar70; + byte *pbVar71; + byte *pbVar72; + byte *pbVar73; + byte *pbVar74; + byte *pbVar75; + byte *pbVar76; + byte *pbVar77; + byte *pbVar78; + byte *pbVar79; + byte *pbVar80; + byte *pbVar81; + byte *pbVar82; + byte *pbVar83; + byte *pbVar84; + byte *pbVar85; + byte *pbVar86; + byte *pbVar87; + byte *pbVar88; + byte *pbVar89; + byte *pbVar90; + byte *pbVar91; + byte *pbVar92; + byte *pbVar93; + byte *pbVar94; + byte *pbVar95; + byte *pbVar96; + byte *pbVar97; + byte *pbVar98; + byte *pbVar99; + byte *pbVar100; + byte *pbVar101; + byte *pbVar102; + byte *pbVar103; + byte *pbVar104; + byte *pbVar105; + byte *pbVar106; + byte *pbVar107; + byte *pbVar108; + byte *pbVar109; + byte *pbVar110; + byte *pbVar111; + byte *pbVar112; + byte *pbVar113; + byte *pbVar114; + byte *pbVar115; + byte *pbVar116; + byte *pbVar117; + byte *pbVar118; + byte *pbVar119; + byte *pbVar120; + byte *pbVar121; + byte *pbVar122; + byte *pbVar123; + byte *pbVar124; + byte *pbVar125; + byte *pbVar126; + + /* catch() { ... } // from try @ 003aa194 with catch @ 003aad44 */ + /* catch() { ... } // from try @ 003aa0dc with catch @ 003aad4c + catch() { ... } // from try @ 003aa4ac with catch @ 003aad4c + catch() { ... } // from try @ 003aa6bc with catch @ 003aad4c + catch() { ... } // from try @ 003aac28 with catch @ 003aad4c */ + /* catch() { ... } // from try @ 003aa0b8 with catch @ 003aad54 + catch() { ... } // from try @ 003aa520 with catch @ 003aad54 + catch() { ... } // from try @ 003aa6b0 with catch @ 003aad54 + catch() { ... } // from try @ 003aac18 with catch @ 003aad54 */ + if (param_7 == 0) { + if (0 < param_4) { + uVar129 = param_5 - 4U >> 2; + iVar180 = param_5 + -3; + uVar6 = (uVar129 - 0xf >> 4) + 1; + iVar1 = uVar129 + 1; + piVar3 = param_6 + (ulong)(param_4 - 1) + 1; + iVar5 = iVar1 * 4; + lVar132 = 0; + pbVar126 = param_2; + if (iVar180 < 1) goto LAB_003abb3c; +LAB_003ab4b4: + piVar127 = param_6; + iVar128 = iVar5; + if (param_5 - 4U < 0x3c) { + iVar182 = 0; + iVar181 = 0; + } + else { + iVar183 = 0; + iVar139 = 0; + iVar181 = 0; + iVar182 = 0; + uVar129 = 0; + pbVar67 = pbVar126; + pbVar11 = param_1; + do { + bVar133 = *pbVar11; + pbVar27 = pbVar11 + 1; + pbVar26 = pbVar11 + 2; + pbVar24 = pbVar11 + 3; + bVar142 = pbVar11[4]; + bVar148 = pbVar11[5]; + pbVar23 = pbVar11 + 6; + pbVar22 = pbVar11 + 7; + pbVar21 = pbVar11 + 8; + pbVar17 = pbVar11 + 9; + pbVar16 = pbVar11 + 10; + pbVar14 = pbVar11 + 0xb; + pbVar12 = pbVar11 + 0xc; + pbVar10 = pbVar11 + 0xd; + pbVar9 = pbVar11 + 0xe; + pbVar25 = pbVar11 + 0xf; + pbVar66 = pbVar11 + 0x10; + pbVar65 = pbVar11 + 0x11; + pbVar64 = pbVar11 + 0x12; + pbVar63 = pbVar11 + 0x13; + pbVar62 = pbVar11 + 0x14; + pbVar61 = pbVar11 + 0x15; + pbVar60 = pbVar11 + 0x16; + pbVar59 = pbVar11 + 0x17; + pbVar58 = pbVar11 + 0x18; + pbVar57 = pbVar11 + 0x19; + pbVar50 = pbVar11 + 0x1a; + pbVar56 = pbVar11 + 0x1b; + pbVar55 = pbVar11 + 0x1c; + pbVar54 = pbVar11 + 0x1d; + pbVar53 = pbVar11 + 0x1e; + pbVar52 = pbVar11 + 0x1f; + pbVar51 = pbVar11 + 0x20; + pbVar49 = pbVar11 + 0x21; + pbVar48 = pbVar11 + 0x22; + pbVar47 = pbVar11 + 0x23; + bVar143 = pbVar11[0x24]; + bVar151 = pbVar11[0x25]; + bVar155 = pbVar11[0x26]; + bVar157 = pbVar11[0x27]; + pbVar46 = pbVar11 + 0x28; + pbVar45 = pbVar11 + 0x29; + pbVar44 = pbVar11 + 0x2a; + pbVar43 = pbVar11 + 0x2b; + pbVar42 = pbVar11 + 0x2c; + pbVar41 = pbVar11 + 0x2d; + pbVar40 = pbVar11 + 0x2e; + pbVar39 = pbVar11 + 0x2f; + pbVar37 = pbVar11 + 0x30; + pbVar36 = pbVar11 + 0x31; + pbVar35 = pbVar11 + 0x32; + pbVar34 = pbVar11 + 0x33; + pbVar33 = pbVar11 + 0x34; + pbVar32 = pbVar11 + 0x35; + pbVar31 = pbVar11 + 0x36; + pbVar30 = pbVar11 + 0x37; + pbVar29 = pbVar11 + 0x38; + pbVar28 = pbVar11 + 0x39; + pbVar20 = pbVar11 + 0x3a; + pbVar19 = pbVar11 + 0x3b; + pbVar15 = pbVar11 + 0x3c; + pbVar13 = pbVar11 + 0x3d; + pbVar38 = pbVar11 + 0x3e; + pbVar18 = pbVar11 + 0x3f; + pbVar11 = pbVar11 + 0x40; + uVar129 = uVar129 + 1; + bVar134 = *pbVar67; + pbVar125 = pbVar67 + 1; + pbVar111 = pbVar67 + 2; + pbVar118 = pbVar67 + 3; + pbVar116 = pbVar67 + 4; + bVar150 = pbVar67[5]; + pbVar115 = pbVar67 + 6; + pbVar114 = pbVar67 + 7; + pbVar113 = pbVar67 + 8; + pbVar112 = pbVar67 + 9; + pbVar68 = pbVar67 + 10; + pbVar110 = pbVar67 + 0xb; + pbVar117 = pbVar67 + 0xc; + pbVar108 = pbVar67 + 0xd; + pbVar107 = pbVar67 + 0xe; + pbVar106 = pbVar67 + 0xf; + pbVar105 = pbVar67 + 0x10; + pbVar104 = pbVar67 + 0x11; + pbVar103 = pbVar67 + 0x12; + pbVar102 = pbVar67 + 0x13; + pbVar101 = pbVar67 + 0x14; + pbVar100 = pbVar67 + 0x15; + pbVar99 = pbVar67 + 0x16; + pbVar98 = pbVar67 + 0x17; + pbVar97 = pbVar67 + 0x18; + pbVar96 = pbVar67 + 0x19; + pbVar119 = pbVar67 + 0x1a; + pbVar89 = pbVar67 + 0x1b; + pbVar95 = pbVar67 + 0x1c; + pbVar94 = pbVar67 + 0x1d; + pbVar109 = pbVar67 + 0x1e; + pbVar93 = pbVar67 + 0x1f; + pbVar92 = pbVar67 + 0x20; + pbVar91 = pbVar67 + 0x21; + pbVar90 = pbVar67 + 0x22; + pbVar88 = pbVar67 + 0x23; + bVar147 = pbVar67[0x24]; + bVar154 = pbVar67[0x25]; + bVar156 = pbVar67[0x26]; + bVar158 = pbVar67[0x27]; + pbVar87 = pbVar67 + 0x28; + pbVar86 = pbVar67 + 0x29; + pbVar85 = pbVar67 + 0x2a; + pbVar84 = pbVar67 + 0x2b; + pbVar83 = pbVar67 + 0x2c; + pbVar82 = pbVar67 + 0x2d; + pbVar81 = pbVar67 + 0x2e; + pbVar80 = pbVar67 + 0x2f; + pbVar79 = pbVar67 + 0x30; + pbVar78 = pbVar67 + 0x31; + pbVar77 = pbVar67 + 0x32; + pbVar76 = pbVar67 + 0x33; + pbVar75 = pbVar67 + 0x34; + pbVar74 = pbVar67 + 0x35; + pbVar73 = pbVar67 + 0x36; + pbVar72 = pbVar67 + 0x37; + pbVar71 = pbVar67 + 0x38; + pbVar70 = pbVar67 + 0x39; + pbVar69 = pbVar67 + 0x3a; + pbVar120 = pbVar67 + 0x3b; + pbVar121 = pbVar67 + 0x3c; + pbVar122 = pbVar67 + 0x3d; + pbVar123 = pbVar67 + 0x3e; + pbVar124 = pbVar67 + 0x3f; + pbVar67 = pbVar67 + 0x40; + /* try { // try from 003ab500 to 004ab503 has its CatchHandler @ 003abcf4 */ + /* try { // try from 003ab508 to 004ab50b has its CatchHandler @ 003abd94 */ + iVar141 = ((CONCAT12(bVar148,CONCAT11(bVar148,*pbVar27)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar150,CONCAT11(bVar150,*pbVar125)) & 0xff00ff) & 0xffff); + iVar163 = (CONCAT12(*pbVar61,(ushort)*pbVar65) & 0xffff) - + (CONCAT12(*pbVar100,(ushort)*pbVar104) & 0xffff); + iVar164 = (uint)*pbVar61 - (uint)*pbVar100; + iVar179 = ((CONCAT12(bVar142,CONCAT11(bVar142,bVar133)) & 0xff00ff) & 0xffff) - + (CONCAT12(*pbVar116,(ushort)bVar134) & 0xffff); + iVar184 = (uint)bVar142 - (uint)*pbVar116; + iVar187 = (uint)*pbVar21 - (CONCAT12(*pbVar117,(ushort)*pbVar113) & 0xffff); + iVar188 = (uint)*pbVar12 - (uint)*pbVar117; + iVar177 = (CONCAT12(*pbVar62,(ushort)*pbVar66) & 0xffff) - + (CONCAT12(*pbVar101,(ushort)*pbVar105) & 0xffff); + iVar178 = (uint)*pbVar62 - (uint)*pbVar101; + iVar145 = ((CONCAT12(bVar151,CONCAT11(bVar151,*pbVar49)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar154,CONCAT11(bVar154,*pbVar91)) & 0xff00ff) & 0xffff); + /* try { // try from 003ab57c to 004ab57f has its CatchHandler @ 003abda4 */ + iVar185 = (CONCAT12(*pbVar23,(ushort)*pbVar26) & 0xffff) - + (CONCAT12(*pbVar115,(ushort)*pbVar111) & 0xffff); + iVar186 = (uint)*pbVar23 - (uint)*pbVar115; + iVar140 = (CONCAT12(*pbVar9,(ushort)*pbVar16) & 0xffff) - + (CONCAT12(*pbVar107,(ushort)*pbVar68) & 0xffff); + iVar144 = (uint)*pbVar9 - (uint)*pbVar107; + iVar152 = (CONCAT12(*pbVar32,(ushort)*pbVar36) & 0xffff) - + (CONCAT12(*pbVar74,(ushort)*pbVar78) & 0xffff); + iVar153 = (uint)*pbVar32 - (uint)*pbVar74; + iVar135 = ((CONCAT12(bVar143,CONCAT11(bVar143,*pbVar51)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar147,CONCAT11(bVar147,*pbVar92)) & 0xff00ff) & 0xffff); + iVar159 = (CONCAT12(*pbVar60,(ushort)*pbVar64) & 0xffff) - + (CONCAT12(*pbVar99,(ushort)*pbVar103) & 0xffff); + iVar161 = (uint)*pbVar60 - (uint)*pbVar99; + iVar175 = (CONCAT12(*pbVar22,(ushort)*pbVar24) & 0xffff) - + (CONCAT12(*pbVar114,(ushort)*pbVar118) & 0xffff); + iVar176 = (uint)*pbVar22 - (uint)*pbVar114; + iVar137 = (CONCAT12(*pbVar25,(ushort)*pbVar14) & 0xffff) - + (CONCAT12(*pbVar106,(ushort)*pbVar110) & 0xffff); + iVar138 = (uint)*pbVar25 - (uint)*pbVar106; + iVar171 = ((CONCAT12(bVar155,CONCAT11(bVar155,*pbVar48)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar156,CONCAT11(bVar156,*pbVar90)) & 0xff00ff) & 0xffff); + iVar170 = (CONCAT12(*pbVar33,(ushort)*pbVar37) & 0xffff) - + (CONCAT12(*pbVar75,(ushort)*pbVar79) & 0xffff); + iVar172 = (uint)*pbVar33 - (uint)*pbVar75; + iVar173 = (CONCAT12(*pbVar59,(ushort)*pbVar63) & 0xffff) - + (CONCAT12(*pbVar98,(ushort)*pbVar102) & 0xffff); + iVar174 = (uint)*pbVar59 - (uint)*pbVar98; + iVar145 = iVar145 * iVar145 + iVar135 * iVar135 + iVar171 * iVar171; + iVar171 = ((uint)bVar151 - (uint)bVar154) * ((uint)bVar151 - (uint)bVar154) + + ((uint)bVar143 - (uint)bVar147) * ((uint)bVar143 - (uint)bVar147) + + ((uint)bVar155 - (uint)bVar156) * ((uint)bVar155 - (uint)bVar156); + iVar135 = ((uint)*pbVar45 - (uint)*pbVar86) * ((uint)*pbVar45 - (uint)*pbVar86) + + ((uint)*pbVar46 - (uint)*pbVar87) * ((uint)*pbVar46 - (uint)*pbVar87) + + ((uint)*pbVar44 - (uint)*pbVar85) * ((uint)*pbVar44 - (uint)*pbVar85); + iVar136 = ((uint)*pbVar41 - (uint)*pbVar82) * ((uint)*pbVar41 - (uint)*pbVar82) + + ((uint)*pbVar42 - (uint)*pbVar83) * ((uint)*pbVar42 - (uint)*pbVar83) + + ((uint)*pbVar40 - (uint)*pbVar81) * ((uint)*pbVar40 - (uint)*pbVar81); + iVar167 = (CONCAT12(*pbVar31,(ushort)*pbVar35) & 0xffff) - + (CONCAT12(*pbVar73,(ushort)*pbVar77) & 0xffff); + iVar168 = (uint)*pbVar31 - (uint)*pbVar73; + iVar169 = ((CONCAT12(bVar157,CONCAT11(bVar157,*pbVar47)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar158,CONCAT11(bVar158,*pbVar88)) & 0xff00ff) & 0xffff); + iVar165 = (CONCAT12(*pbVar30,(ushort)*pbVar34) & 0xffff) - + (CONCAT12(*pbVar72,(ushort)*pbVar76) & 0xffff); + iVar166 = (uint)*pbVar30 - (uint)*pbVar72; + /* try { // try from 003ab5f0 to 004ab5f3 has its CatchHandler @ 003abdac */ + iVar183 = iVar152 * iVar152 + iVar170 * iVar170 + iVar167 * iVar167 + iVar165 * iVar165 + + iVar145 + iVar169 * iVar169 + + iVar163 * iVar163 + iVar177 * iVar177 + iVar159 * iVar159 + iVar173 * iVar173 + + iVar141 * iVar141 + iVar179 * iVar179 + iVar185 * iVar185 + iVar175 * iVar175 + + iVar183; + iVar139 = iVar153 * iVar153 + iVar172 * iVar172 + iVar168 * iVar168 + iVar166 * iVar166 + + (int)(CONCAT17((char)((uint)iVar171 >> 0x18), + CONCAT16((char)((uint)iVar171 >> 0x10), + CONCAT15((char)((uint)iVar171 >> 8), + CONCAT14((char)iVar171,iVar145)))) >> 0x20) + + ((uint)bVar157 - (uint)bVar158) * ((uint)bVar157 - (uint)bVar158) + + iVar164 * iVar164 + iVar178 * iVar178 + iVar161 * iVar161 + iVar174 * iVar174 + + ((uint)bVar148 - (uint)bVar150) * ((uint)bVar148 - (uint)bVar150) + + iVar184 * iVar184 + iVar186 * iVar186 + iVar176 * iVar176 + iVar139; + iVar181 = ((uint)*pbVar28 - (uint)*pbVar70) * ((uint)*pbVar28 - (uint)*pbVar70) + + ((uint)*pbVar29 - (uint)*pbVar71) * ((uint)*pbVar29 - (uint)*pbVar71) + + ((uint)*pbVar20 - (uint)*pbVar69) * ((uint)*pbVar20 - (uint)*pbVar69) + + ((uint)*pbVar19 - (uint)*pbVar120) * ((uint)*pbVar19 - (uint)*pbVar120) + + iVar135 + ((uint)*pbVar43 - (uint)*pbVar84) * ((uint)*pbVar43 - (uint)*pbVar84) + + ((uint)*pbVar57 - (uint)*pbVar96) * ((uint)*pbVar57 - (uint)*pbVar96) + + ((uint)*pbVar58 - (uint)*pbVar97) * ((uint)*pbVar58 - (uint)*pbVar97) + + ((uint)*pbVar50 - (uint)*pbVar119) * ((uint)*pbVar50 - (uint)*pbVar119) + + ((uint)*pbVar56 - (uint)*pbVar89) * ((uint)*pbVar56 - (uint)*pbVar89) + + ((uint)*pbVar17 - (uint)*pbVar112) * ((uint)*pbVar17 - (uint)*pbVar112) + + iVar187 * iVar187 + iVar140 * iVar140 + iVar137 * iVar137 + iVar181; + iVar182 = ((uint)*pbVar13 - (uint)*pbVar122) * ((uint)*pbVar13 - (uint)*pbVar122) + + ((uint)*pbVar15 - (uint)*pbVar121) * ((uint)*pbVar15 - (uint)*pbVar121) + + ((uint)*pbVar38 - (uint)*pbVar123) * ((uint)*pbVar38 - (uint)*pbVar123) + + ((uint)*pbVar18 - (uint)*pbVar124) * ((uint)*pbVar18 - (uint)*pbVar124) + + (int)(CONCAT17((char)((uint)iVar136 >> 0x18), + CONCAT16((char)((uint)iVar136 >> 0x10), + CONCAT15((char)((uint)iVar136 >> 8), + CONCAT14((char)iVar136,iVar135)))) >> 0x20) + + ((uint)*pbVar39 - (uint)*pbVar80) * ((uint)*pbVar39 - (uint)*pbVar80) + + ((uint)*pbVar54 - (uint)*pbVar94) * ((uint)*pbVar54 - (uint)*pbVar94) + + ((uint)*pbVar55 - (uint)*pbVar95) * ((uint)*pbVar55 - (uint)*pbVar95) + + ((uint)*pbVar53 - (uint)*pbVar109) * ((uint)*pbVar53 - (uint)*pbVar109) + + ((uint)*pbVar52 - (uint)*pbVar93) * ((uint)*pbVar52 - (uint)*pbVar93) + + ((uint)*pbVar10 - (uint)*pbVar108) * ((uint)*pbVar10 - (uint)*pbVar108) + + iVar188 * iVar188 + iVar144 * iVar144 + iVar138 * iVar138 + iVar182; + } while (uVar129 < uVar6); + iVar182 = iVar183 + iVar139 + iVar181 + iVar182; + iVar181 = uVar6 * 0x40; + if (uVar6 * 0x10 == iVar1) goto LAB_003ab684; + } + pbVar67 = pbVar126 + iVar181; + pbVar11 = param_1 + iVar181; + do { + iVar181 = iVar181 + 4; + /* try { // try from 003ab664 to 004ab667 has its CatchHandler @ 003abe24 */ + iVar182 = iVar182 + ((uint)pbVar11[1] - (uint)pbVar67[1]) * + ((uint)pbVar11[1] - (uint)pbVar67[1]) + + ((uint)*pbVar11 - (uint)*pbVar67) * ((uint)*pbVar11 - (uint)*pbVar67) + + ((uint)pbVar11[2] - (uint)pbVar67[2]) * + ((uint)pbVar11[2] - (uint)pbVar67[2]) + + ((uint)pbVar11[3] - (uint)pbVar67[3]) * + ((uint)pbVar11[3] - (uint)pbVar67[3]); + pbVar67 = pbVar67 + 4; + pbVar11 = pbVar11 + 4; + } while (iVar181 < iVar180); +LAB_003ab684: + do { + if (iVar128 < param_5) { + lVar130 = (long)iVar128; + uVar7 = param_5 - iVar128; + uVar129 = -((int)param_1 + iVar128) & 0xf; + uVar4 = (ulong)uVar129; + if (uVar7 < uVar129) { + uVar4 = (ulong)uVar7; + } + if (uVar7 < 0x11) { + uVar4 = (ulong)uVar7; + } + uVar129 = (uint)uVar4; + if (uVar129 != 0) { + iVar181 = iVar128 + 1; + iVar182 = iVar182 + ((uint)param_1[lVar130] - (uint)pbVar126[lVar130]) * + ((uint)param_1[lVar130] - (uint)pbVar126[lVar130]); + if (uVar129 != 1) { + /* try { // try from 003ab6d8 to 004ab6db has its CatchHandler @ 003abd9c */ + iVar183 = iVar128 + 2; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 2) { + iVar181 = iVar128 + 3; + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + if (uVar129 != 3) { + iVar183 = iVar128 + 4; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 4) { + iVar181 = iVar128 + 5; + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + /* try { // try from 003ab74c to 004ab74f has its CatchHandler @ 003abccc */ + if (uVar129 != 5) { + iVar183 = iVar128 + 6; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 6) { + iVar181 = iVar128 + 7; + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + if (uVar129 != 7) { + iVar183 = iVar128 + 8; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 8) { + iVar181 = iVar128 + 9; + /* try { // try from 003ab7c0 to 004ab7c3 has its CatchHandler @ 003ab120 */ + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + if (uVar129 != 9) { + iVar183 = iVar128 + 10; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) + * ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 10) { + iVar181 = iVar128 + 0xb; + iVar182 = iVar182 + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]); + if (uVar129 != 0xb) { + iVar183 = iVar128 + 0xc; + iVar182 = iVar182 + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 0xc) { + iVar181 = iVar128 + 0xd; + iVar182 = iVar182 + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]); + if (uVar129 != 0xd) { + iVar183 = iVar128 + 0xe; + iVar182 = iVar182 + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]); + iVar181 = iVar183; + if (uVar129 != 0xe) { + iVar181 = iVar128 + 0xf; + /* try { // try from 003ab888 to 004ab92f has its CatchHandler @ 003abe00 */ + iVar182 = iVar182 + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]); + if (uVar129 == 0x10) { + iVar182 = iVar182 + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]); + iVar181 = iVar128 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar128 = iVar181; + if (uVar129 == uVar7) goto LAB_003abb20; + } + uVar2 = ((uVar7 - uVar129) - 0x10 >> 4) + 1; + iVar181 = uVar2 * 0x10; + if (0xe < (uVar7 - 1) - uVar129) { + iVar183 = 0; + iVar139 = 0; + iVar141 = 0; + iVar145 = 0; + uVar131 = 0; + pbVar67 = param_1 + uVar4 + lVar130; + pbVar11 = param_2 + lVar130 + lVar132 + uVar4; + do { + uVar149 = *(undefined8 *)(pbVar67 + 8); + uVar146 = *(undefined8 *)pbVar67; + uVar131 = uVar131 + 1; + uVar162 = *(undefined8 *)(pbVar11 + 8); + uVar160 = *(undefined8 *)pbVar11; + bVar143 = (byte)((ulong)uVar146 >> 0x28); + bVar133 = (byte)((ulong)uVar160 >> 8); + bVar147 = (byte)((ulong)uVar160 >> 0x28); + bVar134 = (byte)((ulong)uVar149 >> 8); + bVar148 = (byte)((ulong)uVar149 >> 0x28); + bVar142 = (byte)((ulong)uVar162 >> 8); + bVar150 = (byte)((ulong)uVar162 >> 0x28); + iVar164 = (uint)(byte)uVar146 - + ((CONCAT12(bVar133,(short)uVar160) & 0xff00ff) & 0xffff); + iVar165 = (uint)(byte)((ulong)uVar146 >> 8) - (uint)bVar133; + iVar166 = (uint)(byte)((ulong)uVar146 >> 0x10) - (uint)(byte)((ulong)uVar160 >> 0x10); + iVar167 = (uint)(byte)((ulong)uVar146 >> 0x18) - (uint)(byte)((ulong)uVar160 >> 0x18); + iVar171 = (CONCAT12(bVar143,(ushort)(byte)((ulong)uVar146 >> 0x20)) & 0xffff) - + (CONCAT12(bVar147,(ushort)(byte)((ulong)uVar160 >> 0x20)) & 0xffff); + iVar135 = (uint)bVar143 - (uint)bVar147; + iVar136 = (uint)(byte)((ulong)uVar146 >> 0x30) - (uint)(byte)((ulong)uVar160 >> 0x30); + iVar137 = (uint)(byte)((ulong)uVar146 >> 0x38) - (uint)(byte)((ulong)uVar160 >> 0x38); + iVar153 = ((CONCAT12(bVar134,(short)uVar149) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar142,(short)uVar162) & 0xff00ff) & 0xffff); + iVar159 = (uint)bVar134 - (uint)bVar142; + iVar161 = (uint)(byte)((ulong)uVar149 >> 0x10) - (uint)(byte)((ulong)uVar162 >> 0x10); + iVar163 = (uint)(byte)((ulong)uVar149 >> 0x18) - (uint)(byte)((ulong)uVar162 >> 0x18); + iVar138 = (CONCAT12(bVar148,(ushort)(byte)((ulong)uVar149 >> 0x20)) & 0xffff) - + (CONCAT12(bVar150,(ushort)(byte)((ulong)uVar162 >> 0x20)) & 0xffff); + iVar140 = (uint)bVar148 - (uint)bVar150; + iVar144 = (uint)(byte)((ulong)uVar149 >> 0x30) - (uint)(byte)((ulong)uVar162 >> 0x30); + iVar152 = (uint)(byte)((ulong)uVar149 >> 0x38) - (uint)(byte)((ulong)uVar162 >> 0x38); + iVar183 = iVar183 + iVar164 * iVar164 + iVar171 * iVar171 + iVar153 * iVar153 + + iVar138 * iVar138; + iVar139 = iVar139 + iVar165 * iVar165 + iVar135 * iVar135 + iVar159 * iVar159 + + iVar140 * iVar140; + iVar141 = iVar141 + iVar166 * iVar166 + iVar136 * iVar136 + iVar161 * iVar161 + + iVar144 * iVar144; + iVar145 = iVar145 + iVar167 * iVar167 + iVar137 * iVar137 + iVar163 * iVar163 + + iVar152 * iVar152; + pbVar67 = pbVar67 + 0x10; + pbVar11 = pbVar11 + 0x10; + } while (uVar131 < uVar2); + iVar128 = iVar128 + iVar181; + iVar182 = iVar182 + iVar183 + iVar139 + iVar141 + iVar145; + if (iVar181 == uVar7 - uVar129) goto LAB_003abb20; + } + iVar181 = iVar128 + 1; + iVar182 = iVar182 + ((uint)param_1[iVar128] - (uint)pbVar126[iVar128]) * + ((uint)param_1[iVar128] - (uint)pbVar126[iVar128]); + if (iVar181 < param_5) { + iVar183 = iVar128 + 2; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + if (iVar183 < param_5) { + iVar181 = iVar128 + 3; + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + if (iVar181 < param_5) { + iVar183 = iVar128 + 4; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + if (iVar183 < param_5) { + /* try { // try from 003ab9d0 to 004ab9d3 has its CatchHandler @ 003abd94 */ + iVar181 = iVar128 + 5; + /* try { // try from 003ab9dc to 004ab9df has its CatchHandler @ 003ab120 */ + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + /* try { // try from 003ab9e8 to 004ab9eb has its CatchHandler @ 003abe24 */ + if (iVar181 < param_5) { + iVar183 = iVar128 + 6; + /* try { // try from 003ab9f4 to 004ab9f7 has its CatchHandler @ 003abdac */ + /* try { // try from 003aba00 to 004aba03 has its CatchHandler @ 003abda4 */ + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + if (iVar183 < param_5) { + iVar181 = iVar128 + 7; + /* try { // try from 003aba0c to 004aba0f has its CatchHandler @ 003abccc */ + /* try { // try from 003aba18 to 004aba1b has its CatchHandler @ 003abd9c */ + /* try { // try from 003aba24 to 004aba27 has its CatchHandler @ 003abd94 */ + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + if (iVar181 < param_5) { + /* try { // try from 003aba30 to 004aba33 has its CatchHandler @ 003abdb4 */ + iVar183 = iVar128 + 8; + /* try { // try from 003aba44 to 004aba47 has its CatchHandler @ 003abda4 */ + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + if (iVar183 < param_5) { + iVar181 = iVar128 + 9; + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]); + if (iVar181 < param_5) { + iVar183 = iVar128 + 10; + iVar182 = iVar182 + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - (uint)pbVar126[iVar181]); + if (iVar183 < param_5) { + iVar181 = iVar128 + 0xb; + iVar182 = iVar182 + ((uint)param_1[iVar183] - (uint)pbVar126[iVar183]) + * ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]); + if (iVar181 < param_5) { + iVar183 = iVar128 + 0xc; + /* try { // try from 003abac0 to 004abb67 has its CatchHandler @ 003abddc */ + iVar182 = iVar182 + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]); + if (iVar183 < param_5) { + iVar181 = iVar128 + 0xd; + iVar182 = iVar182 + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]) * + ((uint)param_1[iVar183] - + (uint)pbVar126[iVar183]); + if (iVar181 < param_5) { + iVar128 = iVar128 + 0xe; + iVar182 = iVar182 + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]) * + ((uint)param_1[iVar181] - + (uint)pbVar126[iVar181]); + if (iVar128 < param_5) { + iVar182 = iVar182 + ((uint)param_1[iVar128] - + (uint)pbVar126[iVar128]) * + ((uint)param_1[iVar128] - + (uint)pbVar126[iVar128]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003abb20: + param_6 = piVar127 + 1; + *piVar127 = iVar182; + pbVar126 = pbVar126 + param_3; + if (param_6 == piVar3) { + return; + } + lVar132 = (long)pbVar126 - (long)param_2; + if (0 < iVar180) goto LAB_003ab4b4; +LAB_003abb3c: + iVar182 = 0; + piVar127 = param_6; + iVar128 = 0; + } while( true ); + } + } + else if (0 < param_4) { + uVar6 = param_5 - 4U >> 2; + iVar1 = uVar6 + 1; + uVar6 = (uVar6 - 0xf >> 4) + 1; + lVar132 = 0; + iVar5 = iVar1 * 4; + do { + iVar180 = 0x7fffffff; + if (*(char *)(param_7 + lVar132) != '\0') { + if (param_5 + -3 < 1) { + iVar180 = 0; + iVar128 = 0; + } + else { + iVar128 = iVar5; + if (param_5 - 4U < 0x3c) { + iVar180 = 0; + iVar181 = 0; + } + else { + iVar180 = 0; + iVar181 = 0; + iVar182 = 0; + iVar183 = 0; + uVar129 = 0; + pbVar126 = param_2; + pbVar67 = param_1; + do { + bVar133 = *pbVar67; + pbVar9 = pbVar67 + 1; + pbVar10 = pbVar67 + 2; + pbVar11 = pbVar67 + 3; + pbVar12 = pbVar67 + 4; + bVar147 = pbVar67[5]; + pbVar13 = pbVar67 + 6; + pbVar14 = pbVar67 + 7; + pbVar15 = pbVar67 + 8; + pbVar16 = pbVar67 + 9; + pbVar17 = pbVar67 + 10; + pbVar18 = pbVar67 + 0xb; + pbVar19 = pbVar67 + 0xc; + pbVar20 = pbVar67 + 0xd; + pbVar21 = pbVar67 + 0xe; + pbVar22 = pbVar67 + 0xf; + pbVar23 = pbVar67 + 0x10; + pbVar24 = pbVar67 + 0x11; + pbVar25 = pbVar67 + 0x12; + pbVar26 = pbVar67 + 0x13; + pbVar27 = pbVar67 + 0x14; + pbVar28 = pbVar67 + 0x15; + pbVar29 = pbVar67 + 0x16; + pbVar30 = pbVar67 + 0x17; + pbVar31 = pbVar67 + 0x18; + pbVar32 = pbVar67 + 0x19; + pbVar33 = pbVar67 + 0x1a; + pbVar34 = pbVar67 + 0x1b; + pbVar35 = pbVar67 + 0x1c; + pbVar36 = pbVar67 + 0x1d; + pbVar37 = pbVar67 + 0x1e; + pbVar38 = pbVar67 + 0x1f; + pbVar39 = pbVar67 + 0x20; + pbVar40 = pbVar67 + 0x21; + pbVar41 = pbVar67 + 0x22; + pbVar42 = pbVar67 + 0x23; + bVar142 = pbVar67[0x24]; + bVar150 = pbVar67[0x25]; + bVar154 = pbVar67[0x26]; + bVar156 = pbVar67[0x27]; + pbVar43 = pbVar67 + 0x28; + pbVar44 = pbVar67 + 0x29; + pbVar45 = pbVar67 + 0x2a; + pbVar46 = pbVar67 + 0x2b; + pbVar47 = pbVar67 + 0x2c; + pbVar48 = pbVar67 + 0x2d; + pbVar49 = pbVar67 + 0x2e; + pbVar50 = pbVar67 + 0x2f; + pbVar51 = pbVar67 + 0x30; + pbVar52 = pbVar67 + 0x31; + pbVar53 = pbVar67 + 0x32; + pbVar54 = pbVar67 + 0x33; + pbVar55 = pbVar67 + 0x34; + pbVar56 = pbVar67 + 0x35; + pbVar57 = pbVar67 + 0x36; + pbVar58 = pbVar67 + 0x37; + pbVar59 = pbVar67 + 0x38; + pbVar60 = pbVar67 + 0x39; + pbVar61 = pbVar67 + 0x3a; + pbVar62 = pbVar67 + 0x3b; + pbVar63 = pbVar67 + 0x3c; + pbVar64 = pbVar67 + 0x3d; + pbVar65 = pbVar67 + 0x3e; + pbVar66 = pbVar67 + 0x3f; + pbVar67 = pbVar67 + 0x40; + /* catch() { ... } // from try @ 003aae18 with catch @ 003aadcc + catch() { ... } // from try @ 003aaeac with catch @ 003aadcc + catch() { ... } // from try @ 003aaf70 with catch @ 003aadcc + catch() { ... } // from try @ 003ab0e8 with catch @ 003aadcc + catch() { ... } // from try @ 003ab110 with catch @ 003aadcc */ + uVar129 = uVar129 + 1; + bVar134 = *pbVar126; + pbVar68 = pbVar126 + 1; + pbVar69 = pbVar126 + 2; + pbVar70 = pbVar126 + 3; + pbVar71 = pbVar126 + 4; + bVar148 = pbVar126[5]; + pbVar72 = pbVar126 + 6; + pbVar73 = pbVar126 + 7; + pbVar74 = pbVar126 + 8; + pbVar75 = pbVar126 + 9; + pbVar76 = pbVar126 + 10; + pbVar77 = pbVar126 + 0xb; + pbVar78 = pbVar126 + 0xc; + pbVar79 = pbVar126 + 0xd; + pbVar80 = pbVar126 + 0xe; + pbVar81 = pbVar126 + 0xf; + pbVar82 = pbVar126 + 0x10; + pbVar83 = pbVar126 + 0x11; + pbVar84 = pbVar126 + 0x12; + pbVar85 = pbVar126 + 0x13; + pbVar86 = pbVar126 + 0x14; + pbVar87 = pbVar126 + 0x15; + pbVar88 = pbVar126 + 0x16; + pbVar89 = pbVar126 + 0x17; + pbVar90 = pbVar126 + 0x18; + pbVar91 = pbVar126 + 0x19; + pbVar92 = pbVar126 + 0x1a; + pbVar93 = pbVar126 + 0x1b; + pbVar94 = pbVar126 + 0x1c; + pbVar95 = pbVar126 + 0x1d; + pbVar96 = pbVar126 + 0x1e; + pbVar97 = pbVar126 + 0x1f; + pbVar98 = pbVar126 + 0x20; + pbVar99 = pbVar126 + 0x21; + pbVar100 = pbVar126 + 0x22; + pbVar101 = pbVar126 + 0x23; + bVar143 = pbVar126[0x24]; + bVar151 = pbVar126[0x25]; + bVar155 = pbVar126[0x26]; + bVar157 = pbVar126[0x27]; + pbVar102 = pbVar126 + 0x28; + pbVar103 = pbVar126 + 0x29; + pbVar104 = pbVar126 + 0x2a; + pbVar105 = pbVar126 + 0x2b; + pbVar106 = pbVar126 + 0x2c; + pbVar107 = pbVar126 + 0x2d; + pbVar108 = pbVar126 + 0x2e; + pbVar109 = pbVar126 + 0x2f; + pbVar110 = pbVar126 + 0x30; + pbVar111 = pbVar126 + 0x31; + pbVar112 = pbVar126 + 0x32; + pbVar113 = pbVar126 + 0x33; + pbVar114 = pbVar126 + 0x34; + pbVar115 = pbVar126 + 0x35; + pbVar116 = pbVar126 + 0x36; + pbVar117 = pbVar126 + 0x37; + pbVar118 = pbVar126 + 0x38; + pbVar119 = pbVar126 + 0x39; + pbVar120 = pbVar126 + 0x3a; + pbVar121 = pbVar126 + 0x3b; + pbVar122 = pbVar126 + 0x3c; + pbVar123 = pbVar126 + 0x3d; + pbVar124 = pbVar126 + 0x3e; + pbVar125 = pbVar126 + 0x3f; + pbVar126 = pbVar126 + 0x40; + /* try { // try from 003aae18 to 004aae1b has its CatchHandler @ 003aadcc */ + uVar8 = CONCAT12(*pbVar76,CONCAT11(*pbVar72,*pbVar69)); + iVar139 = ((CONCAT12(bVar147,CONCAT11(bVar147,*pbVar9)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar148,CONCAT11(bVar148,*pbVar68)) & 0xff00ff) & 0xffff); + /* try { // try from 003aae34 to 004aae37 has its CatchHandler @ 003ab0ec */ + iVar152 = (CONCAT12(*pbVar28,(ushort)*pbVar24) & 0xffff) - + (CONCAT12(*pbVar87,(ushort)*pbVar83) & 0xffff); + iVar153 = (uint)*pbVar28 - (uint)*pbVar87; + iVar135 = (CONCAT12(*pbVar12,(ushort)bVar133) & 0xffff) - + (CONCAT12(*pbVar71,(ushort)bVar134) & 0xffff); + iVar137 = (uint)*pbVar12 - (uint)*pbVar71; + iVar140 = (CONCAT12(*pbVar19,(ushort)*pbVar15) & 0xffff) - + (CONCAT12(*pbVar78,(ushort)*pbVar74) & 0xffff); + iVar144 = (uint)*pbVar19 - (uint)*pbVar78; + iVar141 = ((CONCAT12(bVar150,CONCAT11(bVar150,*pbVar40)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar151,CONCAT11(bVar151,*pbVar99)) & 0xff00ff) & 0xffff); + iVar136 = (CONCAT12(*pbVar56,(ushort)*pbVar52) & 0xffff) - + (CONCAT12(*pbVar115,(ushort)*pbVar111) & 0xffff); + iVar138 = (uint)*pbVar56 - (uint)*pbVar115; + iVar174 = (CONCAT12(*pbVar27,(ushort)*pbVar23) & 0xffff) - + (CONCAT12(*pbVar86,(ushort)*pbVar82) & 0xffff); + iVar175 = (uint)*pbVar27 - (uint)*pbVar86; + iVar187 = (CONCAT12(*pbVar13,(ushort)*pbVar10) & 0xffff) - (uVar8 & 0xff); + iVar188 = (uint)*pbVar13 - ((uVar8 & 0xff00) >> 8); + iVar145 = (CONCAT12(*pbVar21,(ushort)*pbVar17) & 0xffff) - (uint)*pbVar76; + iVar171 = (uint)*pbVar21 - (uint)*pbVar80; + iVar184 = ((CONCAT12(bVar142,CONCAT11(bVar142,*pbVar39)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar143,CONCAT11(bVar143,*pbVar98)) & 0xff00ff) & 0xffff); + iVar176 = (CONCAT12(*pbVar14,(ushort)*pbVar11) & 0xffff) - + (CONCAT12(*pbVar73,(ushort)*pbVar70) & 0xffff); + iVar177 = (uint)*pbVar14 - (uint)*pbVar73; + iVar178 = (CONCAT12(*pbVar22,(ushort)*pbVar18) & 0xffff) - + (CONCAT12(*pbVar81,(ushort)*pbVar77) & 0xffff); + iVar179 = (uint)*pbVar22 - (uint)*pbVar81; + iVar170 = (CONCAT12(*pbVar29,(ushort)*pbVar25) & 0xffff) - + (CONCAT12(*pbVar88,(ushort)*pbVar84) & 0xffff); + iVar172 = (uint)*pbVar29 - (uint)*pbVar88; + iVar173 = ((CONCAT12(bVar154,CONCAT11(bVar154,*pbVar41)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar155,CONCAT11(bVar155,*pbVar100)) & 0xff00ff) & 0xffff); + /* try { // try from 003aaeac to 004aaf2f has its CatchHandler @ 003aadcc */ + iVar166 = (CONCAT12(*pbVar55,(ushort)*pbVar51) & 0xffff) - + (CONCAT12(*pbVar114,(ushort)*pbVar110) & 0xffff); + iVar167 = (uint)*pbVar55 - (uint)*pbVar114; + iVar168 = (CONCAT12(*pbVar30,(ushort)*pbVar26) & 0xffff) - + (CONCAT12(*pbVar89,(ushort)*pbVar85) & 0xffff); + iVar169 = (uint)*pbVar30 - (uint)*pbVar89; + iVar163 = (CONCAT12(*pbVar57,(ushort)*pbVar53) & 0xffff) - + (CONCAT12(*pbVar116,(ushort)*pbVar112) & 0xffff); + iVar164 = (uint)*pbVar57 - (uint)*pbVar116; + iVar165 = ((CONCAT12(bVar156,CONCAT11(bVar156,*pbVar42)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar157,CONCAT11(bVar157,*pbVar101)) & 0xff00ff) & 0xffff); + iVar159 = (CONCAT12(*pbVar58,(ushort)*pbVar54) & 0xffff) - + (CONCAT12(*pbVar117,(ushort)*pbVar113) & 0xffff); + iVar161 = (uint)*pbVar58 - (uint)*pbVar117; + iVar180 = iVar136 * iVar136 + iVar166 * iVar166 + iVar163 * iVar163 + + iVar159 * iVar159 + + iVar141 * iVar141 + iVar184 * iVar184 + iVar173 * iVar173 + + iVar165 * iVar165 + + iVar152 * iVar152 + iVar174 * iVar174 + iVar170 * iVar170 + + iVar168 * iVar168 + + iVar139 * iVar139 + iVar135 * iVar135 + iVar187 * iVar187 + + iVar176 * iVar176 + iVar180; + iVar181 = iVar138 * iVar138 + iVar167 * iVar167 + iVar164 * iVar164 + + iVar161 * iVar161 + + ((uint)bVar150 - (uint)bVar151) * ((uint)bVar150 - (uint)bVar151) + + ((uint)bVar142 - (uint)bVar143) * ((uint)bVar142 - (uint)bVar143) + + ((uint)bVar154 - (uint)bVar155) * ((uint)bVar154 - (uint)bVar155) + + ((uint)bVar156 - (uint)bVar157) * ((uint)bVar156 - (uint)bVar157) + + iVar153 * iVar153 + iVar175 * iVar175 + iVar172 * iVar172 + + iVar169 * iVar169 + + ((uint)bVar147 - (uint)bVar148) * ((uint)bVar147 - (uint)bVar148) + + iVar137 * iVar137 + iVar188 * iVar188 + iVar177 * iVar177 + iVar181; + iVar182 = ((uint)*pbVar60 - (uint)*pbVar119) * ((uint)*pbVar60 - (uint)*pbVar119) + + ((uint)*pbVar59 - (uint)*pbVar118) * ((uint)*pbVar59 - (uint)*pbVar118) + + ((uint)*pbVar61 - (uint)*pbVar120) * ((uint)*pbVar61 - (uint)*pbVar120) + + ((uint)*pbVar62 - (uint)*pbVar121) * ((uint)*pbVar62 - (uint)*pbVar121) + + ((uint)*pbVar44 - (uint)*pbVar103) * ((uint)*pbVar44 - (uint)*pbVar103) + + ((uint)*pbVar43 - (uint)*pbVar102) * ((uint)*pbVar43 - (uint)*pbVar102) + + ((uint)*pbVar45 - (uint)*pbVar104) * ((uint)*pbVar45 - (uint)*pbVar104) + + ((uint)*pbVar46 - (uint)*pbVar105) * ((uint)*pbVar46 - (uint)*pbVar105) + + ((uint)*pbVar32 - (uint)*pbVar91) * ((uint)*pbVar32 - (uint)*pbVar91) + + ((uint)*pbVar31 - (uint)*pbVar90) * ((uint)*pbVar31 - (uint)*pbVar90) + + ((uint)*pbVar33 - (uint)*pbVar92) * ((uint)*pbVar33 - (uint)*pbVar92) + + ((uint)*pbVar34 - (uint)*pbVar93) * ((uint)*pbVar34 - (uint)*pbVar93) + + ((uint)*pbVar16 - (uint)*pbVar75) * ((uint)*pbVar16 - (uint)*pbVar75) + + iVar140 * iVar140 + iVar145 * iVar145 + iVar178 * iVar178 + iVar182; + iVar183 = ((uint)*pbVar64 - (uint)*pbVar123) * ((uint)*pbVar64 - (uint)*pbVar123) + + ((uint)*pbVar63 - (uint)*pbVar122) * ((uint)*pbVar63 - (uint)*pbVar122) + + ((uint)*pbVar65 - (uint)*pbVar124) * ((uint)*pbVar65 - (uint)*pbVar124) + + ((uint)*pbVar66 - (uint)*pbVar125) * ((uint)*pbVar66 - (uint)*pbVar125) + + ((uint)*pbVar48 - (uint)*pbVar107) * ((uint)*pbVar48 - (uint)*pbVar107) + + ((uint)*pbVar47 - (uint)*pbVar106) * ((uint)*pbVar47 - (uint)*pbVar106) + + ((uint)*pbVar49 - (uint)*pbVar108) * ((uint)*pbVar49 - (uint)*pbVar108) + + ((uint)*pbVar50 - (uint)*pbVar109) * ((uint)*pbVar50 - (uint)*pbVar109) + + ((uint)*pbVar36 - (uint)*pbVar95) * ((uint)*pbVar36 - (uint)*pbVar95) + + ((uint)*pbVar35 - (uint)*pbVar94) * ((uint)*pbVar35 - (uint)*pbVar94) + + ((uint)*pbVar37 - (uint)*pbVar96) * ((uint)*pbVar37 - (uint)*pbVar96) + + ((uint)*pbVar38 - (uint)*pbVar97) * ((uint)*pbVar38 - (uint)*pbVar97) + + ((uint)*pbVar20 - (uint)*pbVar79) * ((uint)*pbVar20 - (uint)*pbVar79) + + iVar144 * iVar144 + iVar171 * iVar171 + iVar179 * iVar179 + iVar183; + } while (uVar129 < uVar6); + iVar180 = iVar180 + iVar181 + iVar182 + iVar183; + iVar181 = uVar6 * 0x40; + if (iVar1 == uVar6 * 0x10) goto LAB_003aaf7c; + } + pbVar126 = param_2 + iVar181; + pbVar67 = param_1 + iVar181; + do { + iVar181 = iVar181 + 4; + /* try { // try from 003aaf68 to 004aaf6b has its CatchHandler @ 003ab0d8 */ + /* try { // try from 003aaf70 to 004aaf73 has its CatchHandler @ 003aadcc */ + iVar180 = iVar180 + ((uint)pbVar67[1] - (uint)pbVar126[1]) * + ((uint)pbVar67[1] - (uint)pbVar126[1]) + + ((uint)*pbVar67 - (uint)*pbVar126) * + ((uint)*pbVar67 - (uint)*pbVar126) + + ((uint)pbVar67[2] - (uint)pbVar126[2]) * + ((uint)pbVar67[2] - (uint)pbVar126[2]) + + ((uint)pbVar67[3] - (uint)pbVar126[3]) * + ((uint)pbVar67[3] - (uint)pbVar126[3]); + pbVar126 = pbVar126 + 4; + pbVar67 = pbVar67 + 4; + } while (iVar181 < param_5 + -3); + } +LAB_003aaf7c: + if (iVar128 < param_5) { + uVar7 = param_5 - iVar128; + uVar129 = -((int)param_1 + iVar128) & 0xf; + uVar4 = (ulong)uVar129; + if (uVar7 < uVar129) { + uVar4 = (ulong)uVar7; + } + if (uVar7 < 0x11) { + uVar4 = (ulong)uVar7; + } + uVar129 = (uint)uVar4; + iVar181 = iVar128; + if (uVar129 != 0) { + iVar181 = iVar128 + 1; + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - (uint)param_2[iVar128]); + if (uVar129 != 1) { + iVar182 = iVar128 + 2; + iVar180 = iVar180 + ((uint)param_1[iVar181] - (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - (uint)param_2[iVar181]); + iVar181 = iVar182; + if (uVar129 != 2) { + iVar181 = iVar128 + 3; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (uVar129 != 3) { + iVar182 = iVar128 + 4; + iVar180 = iVar180 + ((uint)param_1[iVar181] - (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - (uint)param_2[iVar181]); + iVar181 = iVar182; + if (uVar129 != 4) { + iVar181 = iVar128 + 5; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (uVar129 != 5) { + iVar182 = iVar128 + 6; + iVar180 = iVar180 + ((uint)param_1[iVar181] - (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - (uint)param_2[iVar181]); + iVar181 = iVar182; + if (uVar129 != 6) { + iVar181 = iVar128 + 7; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (uVar129 != 7) { + iVar182 = iVar128 + 8; + iVar180 = iVar180 + ((uint)param_1[iVar181] - (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - (uint)param_2[iVar181]); + iVar181 = iVar182; + if (uVar129 != 8) { + iVar181 = iVar128 + 9; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (uVar129 != 9) { + iVar182 = iVar128 + 10; + /* catch() { ... } // from try @ 003aaf68 with catch @ 003ab0d8 */ + iVar180 = iVar180 + ((uint)param_1[iVar181] - (uint)param_2[iVar181]) + * ((uint)param_1[iVar181] - (uint)param_2[iVar181] + ); + iVar181 = iVar182; + if (uVar129 != 10) { + /* catch() { ... } // from try @ 003aae34 with catch @ 003ab0ec */ + iVar181 = iVar128 + 0xb; + /* try { // try from 003ab0e8 to 004ab0eb has its CatchHandler @ 003aadcc */ + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182] + ) * ((uint)param_1[iVar182] - + (uint)param_2[iVar182]); + if (uVar129 != 0xb) { + /* try { // try from 003ab110 to 004ab113 has its CatchHandler @ 003aadcc */ + iVar182 = iVar128 + 0xc; + /* catch() { ... } // from try @ 003ab16c with catch @ 003ab120 + catch() { ... } // from try @ 003ab7c0 with catch @ 003ab120 + catch() { ... } // from try @ 003ab9dc with catch @ 003ab120 + catch() { ... } // from try @ 003abcf0 with catch @ 003ab120 */ + iVar180 = iVar180 + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]); + iVar181 = iVar182; + if (uVar129 != 0xc) { + iVar181 = iVar128 + 0xd; + iVar180 = iVar180 + ((uint)param_1[iVar182] - + (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - + (uint)param_2[iVar182]); + if (uVar129 != 0xd) { + iVar182 = iVar128 + 0xe; + iVar180 = iVar180 + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]); + iVar181 = iVar182; + if (uVar129 != 0xe) { + /* try { // try from 003ab16c to 004ab16f has its CatchHandler @ 003ab120 */ + iVar181 = iVar128 + 0xf; + iVar180 = iVar180 + ((uint)param_1[iVar182] - + (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - + (uint)param_2[iVar182]); + if (uVar129 == 0x10) { + /* try { // try from 003ab18c to 004ab18f has its CatchHandler @ 003abccc */ + iVar180 = iVar180 + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]); + iVar181 = iVar128 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar7 == uVar129) goto LAB_003ab418; + } + /* try { // try from 003ab1ac to 004ab1af has its CatchHandler @ 003abd9c */ + uVar2 = ((uVar7 - uVar129) - 0x10 >> 4) + 1; + iVar182 = uVar2 * 0x10; + if (0xe < (uVar7 - 1) - uVar129) { + iVar183 = 0; + iVar139 = 0; + iVar141 = 0; + iVar145 = 0; + uVar131 = 0; + pbVar126 = param_2 + uVar4 + (long)iVar128; + pbVar67 = param_1 + (long)iVar128 + uVar4; + do { + uVar149 = *(undefined8 *)(pbVar67 + 8); + uVar146 = *(undefined8 *)pbVar67; + uVar131 = uVar131 + 1; + uVar162 = *(undefined8 *)(pbVar126 + 8); + uVar160 = *(undefined8 *)pbVar126; + bVar143 = (byte)((ulong)uVar146 >> 0x28); + bVar133 = (byte)((ulong)uVar160 >> 8); + bVar147 = (byte)((ulong)uVar160 >> 0x28); + bVar134 = (byte)((ulong)uVar149 >> 8); + bVar148 = (byte)((ulong)uVar149 >> 0x28); + bVar142 = (byte)((ulong)uVar162 >> 8); + bVar150 = (byte)((ulong)uVar162 >> 0x28); + iVar163 = (uint)(byte)uVar146 - + ((CONCAT12(bVar133,(short)uVar160) & 0xff00ff) & 0xffff); + iVar164 = (uint)(byte)((ulong)uVar146 >> 8) - (uint)bVar133; + iVar165 = (uint)(byte)((ulong)uVar146 >> 0x10) - (uint)(byte)((ulong)uVar160 >> 0x10); + iVar166 = (uint)(byte)((ulong)uVar146 >> 0x18) - (uint)(byte)((ulong)uVar160 >> 0x18); + /* try { // try from 003ab20c to 004ab20f has its CatchHandler @ 003abdac */ + iVar128 = (CONCAT12(bVar143,(ushort)(byte)((ulong)uVar146 >> 0x20)) & 0xffff) - + (CONCAT12(bVar147,(ushort)(byte)((ulong)uVar160 >> 0x20)) & 0xffff); + iVar171 = (uint)bVar143 - (uint)bVar147; + iVar135 = (uint)(byte)((ulong)uVar146 >> 0x30) - (uint)(byte)((ulong)uVar160 >> 0x30); + iVar136 = (uint)(byte)((ulong)uVar146 >> 0x38) - (uint)(byte)((ulong)uVar160 >> 0x38); + iVar152 = ((CONCAT12(bVar134,(short)uVar149) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar142,(short)uVar162) & 0xff00ff) & 0xffff); + iVar153 = (uint)bVar134 - (uint)bVar142; + iVar159 = (uint)(byte)((ulong)uVar149 >> 0x10) - (uint)(byte)((ulong)uVar162 >> 0x10); + iVar161 = (uint)(byte)((ulong)uVar149 >> 0x18) - (uint)(byte)((ulong)uVar162 >> 0x18); + iVar137 = (CONCAT12(bVar148,(ushort)(byte)((ulong)uVar149 >> 0x20)) & 0xffff) - + (CONCAT12(bVar150,(ushort)(byte)((ulong)uVar162 >> 0x20)) & 0xffff); + iVar138 = (uint)bVar148 - (uint)bVar150; + iVar140 = (uint)(byte)((ulong)uVar149 >> 0x30) - (uint)(byte)((ulong)uVar162 >> 0x30); + iVar144 = (uint)(byte)((ulong)uVar149 >> 0x38) - (uint)(byte)((ulong)uVar162 >> 0x38); + iVar183 = iVar183 + iVar163 * iVar163 + iVar128 * iVar128 + iVar152 * iVar152 + + iVar137 * iVar137; + iVar139 = iVar139 + iVar164 * iVar164 + iVar171 * iVar171 + iVar153 * iVar153 + + iVar138 * iVar138; + iVar141 = iVar141 + iVar165 * iVar165 + iVar135 * iVar135 + iVar159 * iVar159 + + iVar140 * iVar140; + iVar145 = iVar145 + iVar166 * iVar166 + iVar136 * iVar136 + iVar161 * iVar161 + + iVar144 * iVar144; + pbVar126 = pbVar126 + 0x10; + pbVar67 = pbVar67 + 0x10; + } while (uVar131 < uVar2); + iVar181 = iVar181 + iVar182; + iVar180 = iVar180 + iVar183 + iVar139 + iVar141 + iVar145; + if (uVar7 - uVar129 == iVar182) goto LAB_003ab418; + } + iVar128 = iVar181 + 1; + iVar180 = iVar180 + ((uint)param_1[iVar181] - (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - (uint)param_2[iVar181]); + if (iVar128 < param_5) { + iVar182 = iVar181 + 2; + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - (uint)param_2[iVar128]); + if (iVar182 < param_5) { + iVar128 = iVar181 + 3; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (iVar128 < param_5) { + iVar182 = iVar181 + 4; + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - (uint)param_2[iVar128]); + if (iVar182 < param_5) { + iVar128 = iVar181 + 5; + /* try { // try from 003ab2d0 to 004ab2d3 has its CatchHandler @ 003abd94 */ + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (iVar128 < param_5) { + iVar182 = iVar181 + 6; + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - (uint)param_2[iVar128]); + if (iVar182 < param_5) { + iVar128 = iVar181 + 7; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (iVar128 < param_5) { + iVar182 = iVar181 + 8; + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - (uint)param_2[iVar128]); + if (iVar182 < param_5) { + iVar128 = iVar181 + 9; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - (uint)param_2[iVar182]); + if (iVar128 < param_5) { + iVar182 = iVar181 + 10; + /* try { // try from 003ab374 to 004ab377 has its CatchHandler @ 003abdb4 */ + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - (uint)param_2[iVar128]); + if (iVar182 < param_5) { + iVar128 = iVar181 + 0xb; + iVar180 = iVar180 + ((uint)param_1[iVar182] - (uint)param_2[iVar182]) + * ((uint)param_1[iVar182] - (uint)param_2[iVar182] + ); + if (iVar128 < param_5) { + iVar182 = iVar181 + 0xc; + iVar180 = iVar180 + ((uint)param_1[iVar128] - (uint)param_2[iVar128] + ) * ((uint)param_1[iVar128] - + (uint)param_2[iVar128]); + if (iVar182 < param_5) { + iVar128 = iVar181 + 0xd; + iVar180 = iVar180 + ((uint)param_1[iVar182] - + (uint)param_2[iVar182]) * + ((uint)param_1[iVar182] - + (uint)param_2[iVar182]); + if (iVar128 < param_5) { + iVar181 = iVar181 + 0xe; + iVar180 = iVar180 + ((uint)param_1[iVar128] - + (uint)param_2[iVar128]) * + ((uint)param_1[iVar128] - + (uint)param_2[iVar128]); + if (iVar181 < param_5) { + iVar180 = iVar180 + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]) * + ((uint)param_1[iVar181] - + (uint)param_2[iVar181]); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003ab418: + /* try { // try from 003ab418 to 004ab4bf has its CatchHandler @ 003abd94 */ + param_6[lVar132] = iVar180; + lVar132 = lVar132 + 1; + param_2 = param_2 + param_3; + } while (lVar132 != (ulong)(param_4 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003abb64 (4576 bytes) name=FUN_003abb64 + +void FUN_003abb64(undefined1 *param_1,undefined1 *param_2,long param_3,int param_4,int param_5, + int *param_6,long param_7) + +{ + int iVar1; + uint uVar2; + int *piVar3; + ulong uVar4; + int iVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint3 uVar9; + uint3 uVar10; + byte *pbVar11; + byte *pbVar68; + int iVar127; + int *piVar128; + uint uVar129; + undefined8 *puVar130; + undefined8 *puVar131; + long lVar132; + uint uVar133; + long lVar134; + undefined1 uVar135; + undefined1 uVar136; + byte bVar138; + byte bVar139; + int iVar137; + int iVar140; + int iVar141; + byte bVar144; + byte bVar145; + int iVar142; + int iVar143; + int iVar146; + int iVar147; + int iVar148; + undefined8 uVar149; + int iVar150; + int iVar151; + byte bVar153; + byte bVar154; + undefined8 uVar152; + int iVar155; + byte bVar157; + int iVar156; + int iVar158; + byte bVar160; + byte bVar161; + int iVar159; + int iVar162; + byte bVar164; + int iVar163; + int iVar165; + byte bVar166; + byte bVar167; + byte bVar168; + int iVar169; + int iVar170; + int iVar171; + int iVar172; + int iVar173; + int iVar174; + int iVar176; + int iVar177; + undefined8 uVar175; + int iVar178; + int iVar179; + int iVar181; + int iVar182; + undefined8 uVar180; + int iVar183; + int iVar184; + int iVar185; + int iVar186; + int iVar187; + int iVar188; + int iVar189; + int iVar190; + int iVar191; + int iVar192; + int iVar193; + int iVar194; + int iVar195; + int iVar196; + int iVar197; + int iVar198; + int iVar199; + int iVar200; + int iVar201; + int iVar202; + int iVar203; + int iVar204; + int iVar205; + int iVar206; + int iVar207; + int iVar208; + int iVar209; + int iVar210; + int iVar211; + int iVar212; + int iVar213; + int iVar214; + int iVar215; + int iVar216; + int iVar217; + int iVar218; + int iVar219; + int iVar220; + int iVar221; + undefined1 *puVar12; + undefined1 *puVar13; + byte *pbVar14; + byte *pbVar15; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + undefined1 *puVar39; + undefined1 *puVar40; + undefined1 *puVar41; + undefined1 *puVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + byte *pbVar46; + byte *pbVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + byte *pbVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + byte *pbVar63; + byte *pbVar64; + byte *pbVar65; + byte *pbVar66; + undefined1 *puVar67; + undefined1 *puVar69; + undefined1 *puVar70; + byte *pbVar71; + undefined1 *puVar72; + undefined1 *puVar73; + byte *pbVar74; + byte *pbVar75; + byte *pbVar76; + byte *pbVar77; + byte *pbVar78; + byte *pbVar79; + byte *pbVar80; + byte *pbVar81; + byte *pbVar82; + byte *pbVar83; + byte *pbVar84; + byte *pbVar85; + byte *pbVar86; + byte *pbVar87; + byte *pbVar88; + byte *pbVar89; + byte *pbVar90; + byte *pbVar91; + byte *pbVar92; + byte *pbVar93; + byte *pbVar94; + byte *pbVar95; + byte *pbVar96; + byte *pbVar97; + undefined1 *puVar98; + undefined1 *puVar99; + undefined1 *puVar100; + undefined1 *puVar101; + byte *pbVar102; + byte *pbVar103; + byte *pbVar104; + byte *pbVar105; + byte *pbVar106; + byte *pbVar107; + byte *pbVar108; + byte *pbVar109; + byte *pbVar110; + byte *pbVar111; + byte *pbVar112; + byte *pbVar113; + byte *pbVar114; + byte *pbVar115; + byte *pbVar116; + byte *pbVar117; + byte *pbVar118; + byte *pbVar119; + byte *pbVar120; + byte *pbVar121; + byte *pbVar122; + byte *pbVar123; + byte *pbVar124; + byte *pbVar125; + undefined1 *puVar126; + + if (param_7 == 0) { + if (0 < param_4) { + uVar129 = param_5 - 4U >> 2; + iVar218 = param_5 + -3; + uVar6 = (uVar129 - 0xf >> 4) + 1; + iVar1 = uVar129 + 1; + piVar3 = param_6 + (ulong)(param_4 - 1) + 1; + iVar5 = iVar1 * 4; + lVar134 = 0; + puVar126 = param_2; + if (iVar218 < 1) goto LAB_003acd1c; +LAB_003ac4bc: + piVar128 = param_6; + iVar127 = iVar5; + if (param_5 - 4U < 0x3c) { + iVar220 = 0; + iVar219 = 0; + } + else { + iVar221 = 0; + iVar141 = 0; + iVar219 = 0; + iVar220 = 0; + uVar129 = 0; + puVar67 = puVar126; + puVar12 = param_1; + do { + uVar135 = *puVar12; + pbVar16 = puVar12 + 1; + pbVar14 = puVar12 + 2; + puVar13 = puVar12 + 3; + bVar138 = puVar12[4]; + pbVar71 = puVar12 + 5; + pbVar120 = puVar12 + 6; + bVar166 = puVar12[7]; + pbVar66 = puVar12 + 8; + pbVar65 = puVar12 + 9; + pbVar64 = puVar12 + 10; + pbVar63 = puVar12 + 0xb; + pbVar62 = puVar12 + 0xc; + pbVar61 = puVar12 + 0xd; + pbVar60 = puVar12 + 0xe; + pbVar59 = puVar12 + 0xf; + pbVar58 = puVar12 + 0x10; + pbVar57 = puVar12 + 0x11; + pbVar56 = puVar12 + 0x12; + pbVar55 = puVar12 + 0x13; + pbVar54 = puVar12 + 0x14; + pbVar53 = puVar12 + 0x15; + pbVar52 = puVar12 + 0x16; + pbVar51 = puVar12 + 0x17; + pbVar50 = puVar12 + 0x18; + pbVar49 = puVar12 + 0x19; + pbVar48 = puVar12 + 0x1a; + pbVar46 = puVar12 + 0x1b; + pbVar47 = puVar12 + 0x1c; + pbVar45 = puVar12 + 0x1d; + pbVar44 = puVar12 + 0x1e; + pbVar43 = puVar12 + 0x1f; + puVar39 = puVar12 + 0x20; + puVar40 = puVar12 + 0x21; + puVar41 = puVar12 + 0x22; + puVar42 = puVar12 + 0x23; + bVar144 = puVar12[0x24]; + bVar154 = puVar12[0x25]; + bVar161 = puVar12[0x26]; + bVar167 = puVar12[0x27]; + pbVar24 = puVar12 + 0x28; + pbVar36 = puVar12 + 0x29; + pbVar35 = puVar12 + 0x2a; + pbVar33 = puVar12 + 0x2b; + pbVar32 = puVar12 + 0x2c; + pbVar31 = puVar12 + 0x2d; + pbVar30 = puVar12 + 0x2e; + pbVar29 = puVar12 + 0x2f; + pbVar28 = puVar12 + 0x30; + pbVar27 = puVar12 + 0x31; + pbVar26 = puVar12 + 0x32; + pbVar25 = puVar12 + 0x33; + pbVar34 = puVar12 + 0x34; + pbVar23 = puVar12 + 0x35; + pbVar22 = puVar12 + 0x36; + pbVar21 = puVar12 + 0x37; + pbVar20 = puVar12 + 0x38; + pbVar19 = puVar12 + 0x39; + pbVar18 = puVar12 + 0x3a; + pbVar17 = puVar12 + 0x3b; + pbVar15 = puVar12 + 0x3c; + pbVar11 = puVar12 + 0x3d; + pbVar37 = puVar12 + 0x3e; + pbVar38 = puVar12 + 0x3f; + puVar12 = puVar12 + 0x40; + uVar129 = uVar129 + 1; + uVar136 = *puVar67; + puVar69 = puVar67 + 1; + puVar70 = puVar67 + 2; + puVar72 = puVar67 + 3; + bVar139 = puVar67[4]; + bVar153 = puVar67[5]; + bVar160 = puVar67[6]; + puVar73 = puVar67 + 7; + pbVar121 = puVar67 + 8; + pbVar114 = puVar67 + 9; + pbVar119 = puVar67 + 10; + pbVar125 = puVar67 + 0xb; + pbVar117 = puVar67 + 0xc; + pbVar116 = puVar67 + 0xd; + pbVar115 = puVar67 + 0xe; + pbVar68 = puVar67 + 0xf; + pbVar113 = puVar67 + 0x10; + pbVar118 = puVar67 + 0x11; + pbVar111 = puVar67 + 0x12; + pbVar110 = puVar67 + 0x13; + pbVar109 = puVar67 + 0x14; + pbVar108 = puVar67 + 0x15; + pbVar107 = puVar67 + 0x16; + pbVar106 = puVar67 + 0x17; + pbVar105 = puVar67 + 0x18; + pbVar104 = puVar67 + 0x19; + pbVar103 = puVar67 + 0x1a; + pbVar102 = puVar67 + 0x1b; + pbVar97 = puVar67 + 0x1c; + pbVar95 = puVar67 + 0x1d; + pbVar122 = puVar67 + 0x1e; + pbVar124 = puVar67 + 0x1f; + puVar98 = puVar67 + 0x20; + puVar100 = puVar67 + 0x21; + puVar101 = puVar67 + 0x22; + puVar99 = puVar67 + 0x23; + bVar145 = puVar67[0x24]; + bVar157 = puVar67[0x25]; + bVar164 = puVar67[0x26]; + bVar168 = puVar67[0x27]; + pbVar96 = puVar67 + 0x28; + pbVar94 = puVar67 + 0x29; + pbVar93 = puVar67 + 0x2a; + pbVar92 = puVar67 + 0x2b; + pbVar91 = puVar67 + 0x2c; + pbVar90 = puVar67 + 0x2d; + pbVar89 = puVar67 + 0x2e; + pbVar88 = puVar67 + 0x2f; + pbVar87 = puVar67 + 0x30; + pbVar86 = puVar67 + 0x31; + pbVar85 = puVar67 + 0x32; + pbVar84 = puVar67 + 0x33; + pbVar83 = puVar67 + 0x34; + pbVar82 = puVar67 + 0x35; + pbVar81 = puVar67 + 0x36; + pbVar80 = puVar67 + 0x37; + pbVar79 = puVar67 + 0x38; + pbVar78 = puVar67 + 0x39; + pbVar77 = puVar67 + 0x3a; + pbVar76 = puVar67 + 0x3b; + pbVar75 = puVar67 + 0x3c; + pbVar74 = puVar67 + 0x3d; + pbVar123 = puVar67 + 0x3e; + pbVar112 = puVar67 + 0x3f; + puVar67 = puVar67 + 0x40; + uVar9 = CONCAT12(*pbVar125,CONCAT11(*puVar73,*puVar72)); + iVar188 = MP_INT_ABS(((CONCAT12(bVar138,CONCAT11(bVar138,uVar135)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar139,CONCAT11(bVar139,uVar136)) & 0xff00ff) & 0xffff)); + iVar190 = MP_INT_ABS((uint)bVar138 - (uint)bVar139); + iVar192 = MP_INT_ABS((uint)*pbVar66 - (uint)*pbVar121); + iVar194 = MP_INT_ABS((uint)*pbVar62 - (uint)*pbVar117); + iVar202 = MP_INT_ABS((CONCAT12(*pbVar71,(ushort)*pbVar16) & 0xffff) - + ((CONCAT12(bVar153,CONCAT11(bVar153,*puVar69)) & 0xff00ff) & 0xffff)) + ; + iVar204 = MP_INT_ABS((uint)*pbVar71 - (uint)bVar153); + iVar158 = MP_INT_ABS((CONCAT12(*pbVar61,(ushort)*pbVar65) & 0xffff) - (uint)*pbVar114); + iVar162 = MP_INT_ABS((uint)*pbVar61 - (uint)*pbVar116); + iVar146 = MP_INT_ABS((CONCAT12(*pbVar54,(ushort)*pbVar58) & 0xffff) - + (CONCAT12(*pbVar109,(ushort)*pbVar113) & 0xffff)); + iVar170 = MP_INT_ABS((uint)*pbVar54 - (uint)*pbVar109); + iVar172 = MP_INT_ABS((uint)*pbVar50 - (uint)*pbVar105); + iVar174 = MP_INT_ABS((uint)*pbVar47 - (uint)*pbVar97); + iVar206 = MP_INT_ABS((CONCAT12(*pbVar120,(ushort)*pbVar14) & 0xffff) - + ((CONCAT12(bVar160,CONCAT11(bVar160,*puVar70)) & 0xff00ff) & 0xffff)) + ; + iVar207 = MP_INT_ABS((uint)*pbVar120 - (uint)bVar160); + iVar208 = MP_INT_ABS((CONCAT12(*pbVar60,(ushort)*pbVar64) & 0xffff) - (uint)*pbVar119); + iVar209 = MP_INT_ABS((uint)*pbVar60 - (uint)*pbVar115); + iVar214 = MP_INT_ABS((CONCAT12(*pbVar53,(ushort)*pbVar57) & 0xffff) - + (CONCAT12(*pbVar108,(ushort)*pbVar118) & 0xffff)); + iVar215 = MP_INT_ABS((uint)*pbVar53 - (uint)*pbVar108); + iVar216 = MP_INT_ABS((uint)*pbVar49 - (uint)*pbVar104); + iVar217 = MP_INT_ABS((uint)*pbVar45 - (uint)*pbVar95); + iVar200 = MP_INT_ABS(((CONCAT12(bVar144,CONCAT11(bVar144,*puVar39)) & 0xff00ff) & 0xffff) + - ((CONCAT12(bVar145,CONCAT11(bVar145,*puVar98)) & 0xff00ff) & 0xffff + )); + iVar201 = MP_INT_ABS((uint)bVar144 - (uint)bVar145); + iVar155 = MP_INT_ABS((uint)*pbVar24 - (uint)*pbVar96); + iVar156 = MP_INT_ABS((uint)*pbVar32 - (uint)*pbVar91); + iVar196 = MP_INT_ABS(((CONCAT12(bVar154,CONCAT11(bVar154,*puVar40)) & 0xff00ff) & 0xffff) + - ((CONCAT12(bVar157,CONCAT11(bVar157,*puVar100)) & 0xff00ff) & + 0xffff)); + iVar198 = MP_INT_ABS((uint)bVar154 - (uint)bVar157); + iVar8 = MP_INT_ABS((uint)*pbVar36 - (uint)*pbVar94); + iVar150 = MP_INT_ABS((uint)*pbVar31 - (uint)*pbVar90); + iVar203 = MP_INT_ABS(((CONCAT12(bVar166,CONCAT11(bVar166,*puVar13)) & 0xff00ff) & 0xffff) + - (uVar9 & 0xff)); + iVar205 = MP_INT_ABS((uint)bVar166 - ((uVar9 & 0xff00) >> 8)); + iVar159 = MP_INT_ABS((uint)*pbVar63 - (uint)*pbVar125); + iVar163 = MP_INT_ABS((uint)*pbVar59 - (uint)*pbVar68); + iVar210 = MP_INT_ABS((CONCAT12(*pbVar52,(ushort)*pbVar56) & 0xffff) - + (CONCAT12(*pbVar107,(ushort)*pbVar111) & 0xffff)); + iVar211 = MP_INT_ABS((uint)*pbVar52 - (uint)*pbVar107); + iVar212 = MP_INT_ABS((uint)*pbVar48 - (uint)*pbVar103); + iVar213 = MP_INT_ABS((uint)*pbVar44 - (uint)*pbVar122); + iVar165 = MP_INT_ABS((CONCAT12(*pbVar51,(ushort)*pbVar55) & 0xffff) - + (CONCAT12(*pbVar106,(ushort)*pbVar110) & 0xffff)); + iVar137 = MP_INT_ABS((uint)*pbVar51 - (uint)*pbVar106); + iVar140 = MP_INT_ABS((uint)*pbVar46 - (uint)*pbVar102); + iVar142 = MP_INT_ABS((uint)*pbVar43 - (uint)*pbVar124); + iVar184 = MP_INT_ABS((CONCAT12(*pbVar34,(ushort)*pbVar28) & 0xffff) - + (CONCAT12(*pbVar83,(ushort)*pbVar87) & 0xffff)); + iVar185 = MP_INT_ABS((uint)*pbVar34 - (uint)*pbVar83); + iVar186 = MP_INT_ABS((uint)*pbVar20 - (uint)*pbVar79); + iVar187 = MP_INT_ABS((uint)*pbVar15 - (uint)*pbVar75); + iVar189 = MP_INT_ABS(((CONCAT12(bVar161,CONCAT11(bVar161,*puVar41)) & 0xff00ff) & 0xffff) + - ((CONCAT12(bVar164,CONCAT11(bVar164,*puVar101)) & 0xff00ff) & + 0xffff)); + iVar191 = MP_INT_ABS((uint)bVar161 - (uint)bVar164); + iVar193 = MP_INT_ABS((uint)*pbVar35 - (uint)*pbVar93); + iVar195 = MP_INT_ABS((uint)*pbVar30 - (uint)*pbVar89); + iVar182 = MP_INT_ABS((CONCAT12(*pbVar23,(ushort)*pbVar27) & 0xffff) - + (CONCAT12(*pbVar82,(ushort)*pbVar86) & 0xffff)); + iVar183 = MP_INT_ABS((uint)*pbVar23 - (uint)*pbVar82); + iVar143 = MP_INT_ABS((uint)*pbVar19 - (uint)*pbVar78); + iVar147 = MP_INT_ABS((uint)*pbVar11 - (uint)*pbVar74); + iVar197 = MP_INT_ABS(((CONCAT12(bVar167,CONCAT11(bVar167,*puVar42)) & 0xff00ff) & 0xffff) + - ((CONCAT12(bVar168,CONCAT11(bVar168,*puVar99)) & 0xff00ff) & 0xffff + )); + iVar199 = MP_INT_ABS((uint)bVar167 - (uint)bVar168); + iVar148 = MP_INT_ABS((uint)*pbVar33 - (uint)*pbVar92); + iVar151 = MP_INT_ABS((uint)*pbVar29 - (uint)*pbVar88); + iVar177 = MP_INT_ABS((CONCAT12(*pbVar22,(ushort)*pbVar26) & 0xffff) - + (CONCAT12(*pbVar81,(ushort)*pbVar85) & 0xffff)); + iVar178 = MP_INT_ABS((uint)*pbVar22 - (uint)*pbVar81); + iVar179 = MP_INT_ABS((uint)*pbVar18 - (uint)*pbVar77); + iVar181 = MP_INT_ABS((uint)*pbVar37 - (uint)*pbVar123); + iVar169 = MP_INT_ABS((CONCAT12(*pbVar21,(ushort)*pbVar25) & 0xffff) - + (CONCAT12(*pbVar80,(ushort)*pbVar84) & 0xffff)); + iVar171 = MP_INT_ABS((uint)*pbVar21 - (uint)*pbVar80); + iVar173 = MP_INT_ABS((uint)*pbVar17 - (uint)*pbVar76); + iVar176 = MP_INT_ABS((uint)*pbVar38 - (uint)*pbVar112); + iVar221 = iVar184 + iVar182 + iVar177 + iVar169 + + iVar200 + iVar196 + iVar189 + iVar197 + + iVar146 + iVar214 + iVar210 + iVar165 + + iVar188 + iVar202 + iVar206 + iVar203 + iVar221; + iVar141 = iVar185 + iVar183 + iVar178 + iVar171 + + iVar201 + iVar198 + iVar191 + iVar199 + + iVar170 + iVar215 + iVar211 + iVar137 + + iVar190 + iVar204 + iVar207 + iVar205 + iVar141; + iVar219 = iVar186 + iVar143 + iVar179 + iVar173 + + iVar155 + iVar8 + iVar193 + iVar148 + + iVar172 + iVar216 + iVar212 + iVar140 + + iVar192 + iVar158 + iVar208 + iVar159 + iVar219; + iVar220 = iVar187 + iVar147 + iVar181 + iVar176 + + iVar156 + iVar150 + iVar195 + iVar151 + + iVar174 + iVar217 + iVar213 + iVar142 + + iVar194 + iVar162 + iVar209 + iVar163 + iVar220; + } while (uVar129 < uVar6); + iVar220 = iVar221 + iVar141 + iVar219 + iVar220; + iVar219 = uVar6 * 0x40; + if (uVar6 * 0x10 == iVar1) goto LAB_003ac6e0; + } + pbVar34 = puVar126 + iVar219; + pbVar11 = param_1 + iVar219; + do { + iVar219 = iVar219 + 4; + uVar7 = (int)((uint)*pbVar11 - (uint)*pbVar34) >> 0x1f; + uVar129 = (int)((uint)pbVar11[1] - (uint)pbVar34[1]) >> 0x1f; + uVar2 = (int)((uint)pbVar11[2] - (uint)pbVar34[2]) >> 0x1f; + uVar133 = (int)((uint)pbVar11[3] - (uint)pbVar34[3]) >> 0x1f; + iVar220 = iVar220 + (((uint)*pbVar11 - (uint)*pbVar34 ^ uVar7) - uVar7) + + (((uint)pbVar11[1] - (uint)pbVar34[1] ^ uVar129) - uVar129) + + (((uint)pbVar11[2] - (uint)pbVar34[2] ^ uVar2) - uVar2) + + (((uint)pbVar11[3] - (uint)pbVar34[3] ^ uVar133) - uVar133); + pbVar34 = pbVar34 + 4; + pbVar11 = pbVar11 + 4; + } while (iVar219 < iVar218); +LAB_003ac6e0: + do { + if (iVar127 < param_5) { + lVar132 = (long)iVar127; + uVar7 = param_5 - iVar127; + uVar129 = -((int)param_1 + iVar127) & 0xf; + uVar4 = (ulong)uVar129; + if (uVar7 < uVar129) { + uVar4 = (ulong)uVar7; + } + if (uVar7 < 0x11) { + uVar4 = (ulong)uVar7; + } + uVar129 = (uint)uVar4; + if (uVar129 != 0) { + iVar219 = iVar127 + 1; + uVar2 = (int)((uint)(byte)param_1[lVar132] - (uint)(byte)puVar126[lVar132]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[lVar132] - (uint)(byte)puVar126[lVar132] ^ + uVar2) - uVar2); + if (uVar129 != 1) { + iVar221 = iVar127 + 2; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219] ^ + uVar2) - uVar2); + iVar219 = iVar221; + if (uVar129 != 2) { + iVar219 = iVar127 + 3; + uVar2 = (int)((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221] ^ + uVar2) - uVar2); + if (uVar129 != 3) { + iVar221 = iVar127 + 4; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219]) >> + 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219] + ^ uVar2) - uVar2); + iVar219 = iVar221; + if (uVar129 != 4) { + iVar219 = iVar127 + 5; + uVar2 = (int)((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221]) >> + 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar2) - uVar2); + if (uVar129 != 5) { + iVar221 = iVar127 + 6; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219]) >> + 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar2) - uVar2); + iVar219 = iVar221; + if (uVar129 != 6) { + iVar219 = iVar127 + 7; + uVar2 = (int)((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221]) + >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar2) - uVar2); + if (uVar129 != 7) { + iVar221 = iVar127 + 8; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219] + ) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar2) - uVar2); + iVar219 = iVar221; + if (uVar129 != 8) { + iVar219 = iVar127 + 9; + uVar2 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar2) - uVar2); + if (uVar129 != 9) { + iVar221 = iVar127 + 10; + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar2) - uVar2); + iVar219 = iVar221; + if (uVar129 != 10) { + iVar219 = iVar127 + 0xb; + uVar2 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar2) - uVar2 + ); + if (uVar129 != 0xb) { + iVar221 = iVar127 + 0xc; + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar2) - + uVar2); + iVar219 = iVar221; + if (uVar129 != 0xc) { + iVar219 = iVar127 + 0xd; + uVar2 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar2) - + uVar2); + if (uVar129 != 0xd) { + iVar221 = iVar127 + 0xe; + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar2) - + uVar2); + iVar219 = iVar221; + if (uVar129 != 0xe) { + iVar219 = iVar127 + 0xf; + uVar2 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar2) + - uVar2); + if (uVar129 == 0x10) { + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ + uVar2) - uVar2); + iVar219 = iVar127 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar127 = iVar219; + if (uVar129 == uVar7) goto LAB_003acd00; + } + uVar2 = ((uVar7 - uVar129) - 0x10 >> 4) + 1; + iVar219 = uVar2 * 0x10; + if (0xe < (uVar7 - 1) - uVar129) { + iVar221 = 0; + iVar141 = 0; + iVar143 = 0; + iVar147 = 0; + uVar133 = 0; + puVar130 = (undefined8 *)(param_1 + uVar4 + lVar132); + puVar131 = (undefined8 *)(param_2 + lVar132 + lVar134 + uVar4); + do { + uVar152 = puVar130[1]; + uVar149 = *puVar130; + uVar133 = uVar133 + 1; + uVar180 = puVar131[1]; + uVar175 = *puVar131; + bVar138 = (byte)((ulong)uVar149 >> 8); + bVar154 = (byte)((ulong)uVar149 >> 0x28); + bVar139 = (byte)((ulong)uVar175 >> 8); + bVar153 = (byte)((ulong)uVar175 >> 0x18); + bVar157 = (byte)((ulong)uVar175 >> 0x28); + bVar144 = (byte)((ulong)uVar152 >> 8); + bVar160 = (byte)((ulong)uVar152 >> 0x28); + bVar145 = (byte)((ulong)uVar180 >> 8); + bVar161 = (byte)((ulong)uVar180 >> 0x28); + iVar140 = MP_INT_ABS(((CONCAT12(bVar138,(short)uVar149) & 0xff00ff) & 0xffff) - + (CONCAT12(bVar139,(ushort)(byte)uVar175) & 0xffff)); + iVar142 = MP_INT_ABS((uint)bVar138 - (uint)bVar139); + iVar146 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x10) - + (CONCAT12(bVar153,(ushort)(byte)((ulong)uVar175 >> 0x10)) & + 0xffff)); + iVar169 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x18) - (uint)bVar153); + iVar158 = MP_INT_ABS((CONCAT12(bVar154,(ushort)(byte)((ulong)uVar149 >> 0x20)) & + 0xffff) - (CONCAT12(bVar157,(ushort)(byte)((ulong)uVar175 >> 0x20 + )) & 0xffff)); + iVar159 = MP_INT_ABS((uint)bVar154 - (uint)bVar157); + iVar162 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x30) - + (uint)(byte)((ulong)uVar175 >> 0x30)); + iVar163 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x38) - + (uint)(byte)((ulong)uVar175 >> 0x38)); + iVar165 = MP_INT_ABS(((CONCAT12(bVar144,(short)uVar152) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar145,(short)uVar180) & 0xff00ff) & 0xffff)); + iVar137 = MP_INT_ABS((uint)bVar144 - (uint)bVar145); + iVar8 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x10) - + (uint)(byte)((ulong)uVar180 >> 0x10)); + iVar148 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x18) - + (uint)(byte)((ulong)uVar180 >> 0x18)); + iVar150 = MP_INT_ABS((CONCAT12(bVar160,(ushort)(byte)((ulong)uVar152 >> 0x20)) & + 0xffff) - (CONCAT12(bVar161,(ushort)(byte)((ulong)uVar180 >> 0x20 + )) & 0xffff)); + iVar151 = MP_INT_ABS((uint)bVar160 - (uint)bVar161); + iVar155 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x30) - + (uint)(byte)((ulong)uVar180 >> 0x30)); + iVar156 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x38) - + (uint)(byte)((ulong)uVar180 >> 0x38)); + iVar221 = iVar150 + iVar165 + iVar158 + iVar140 + iVar221; + iVar141 = iVar151 + iVar137 + iVar159 + iVar142 + iVar141; + iVar143 = iVar155 + iVar8 + iVar162 + iVar146 + iVar143; + iVar147 = iVar156 + iVar148 + iVar163 + iVar169 + iVar147; + puVar130 = puVar130 + 2; + puVar131 = puVar131 + 2; + } while (uVar133 < uVar2); + iVar127 = iVar127 + iVar219; + iVar220 = iVar220 + iVar221 + iVar141 + iVar143 + iVar147; + if (iVar219 == uVar7 - uVar129) goto LAB_003acd00; + } + iVar219 = iVar127 + 1; + uVar129 = (int)((uint)(byte)param_1[iVar127] - (uint)(byte)puVar126[iVar127]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar127] - (uint)(byte)puVar126[iVar127] ^ + uVar129) - uVar129); + if (iVar219 < param_5) { + iVar221 = iVar127 + 2; + uVar129 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219] ^ + uVar129) - uVar129); + if (iVar221 < param_5) { + iVar219 = iVar127 + 3; + uVar129 = (int)((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221] ^ + uVar129) - uVar129); + if (iVar219 < param_5) { + iVar221 = iVar127 + 4; + uVar129 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219]) >> + 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219] ^ + uVar129) - uVar129); + if (iVar221 < param_5) { + iVar219 = iVar127 + 5; + uVar129 = (int)((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221]) >> + 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221] + ^ uVar129) - uVar129); + if (iVar219 < param_5) { + iVar221 = iVar127 + 6; + uVar129 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219]) >> + 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar129) - uVar129); + if (iVar221 < param_5) { + iVar219 = iVar127 + 7; + uVar129 = (int)((uint)(byte)param_1[iVar221] - (uint)(byte)puVar126[iVar221]) + >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar129) - uVar129); + if (iVar219 < param_5) { + iVar221 = iVar127 + 8; + uVar129 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)puVar126[iVar219] + ) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar129) - uVar129); + if (iVar221 < param_5) { + iVar219 = iVar127 + 9; + uVar129 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar129) - uVar129); + if (iVar219 < param_5) { + iVar221 = iVar127 + 10; + uVar129 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar129) - uVar129 + ); + if (iVar221 < param_5) { + iVar219 = iVar127 + 0xb; + uVar129 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar129) - + uVar129); + if (iVar219 < param_5) { + iVar221 = iVar127 + 0xc; + uVar129 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar129) - + uVar129); + if (iVar221 < param_5) { + iVar219 = iVar127 + 0xd; + uVar129 = (int)((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar221] - + (uint)(byte)puVar126[iVar221] ^ uVar129) - + uVar129); + if (iVar219 < param_5) { + iVar127 = iVar127 + 0xe; + uVar129 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)puVar126[iVar219] ^ uVar129) - + uVar129); + if (iVar127 < param_5) { + uVar129 = (int)((uint)(byte)param_1[iVar127] - + (uint)(byte)puVar126[iVar127]) >> 0x1f; + iVar220 = iVar220 + (((uint)(byte)param_1[iVar127] - + (uint)(byte)puVar126[iVar127] ^ uVar129) + - uVar129); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003acd00: + param_6 = piVar128 + 1; + *piVar128 = iVar220; + puVar126 = puVar126 + param_3; + if (param_6 == piVar3) { + return; + } + lVar134 = (long)puVar126 - (long)param_2; + if (0 < iVar218) goto LAB_003ac4bc; +LAB_003acd1c: + iVar220 = 0; + piVar128 = param_6; + iVar127 = 0; + } while( true ); + } + } + else if (0 < param_4) { + uVar6 = param_5 - 4U >> 2; + iVar1 = uVar6 + 1; + uVar6 = (uVar6 - 0xf >> 4) + 1; + lVar134 = 0; + iVar5 = iVar1 * 4; + do { + iVar218 = 0x7fffffff; + if (*(char *)(param_7 + lVar134) != '\0') { + if (param_5 + -3 < 1) { + iVar218 = 0; + iVar127 = 0; + } + else { + iVar127 = iVar5; + if (param_5 - 4U < 0x3c) { + iVar218 = 0; + iVar219 = 0; + } + else { + iVar218 = 0; + iVar219 = 0; + iVar220 = 0; + iVar221 = 0; + uVar129 = 0; + puVar126 = param_2; + puVar67 = param_1; + do { + uVar135 = *puVar67; + pbVar11 = puVar67 + 1; + puVar12 = puVar67 + 2; + puVar13 = puVar67 + 3; + bVar138 = puVar67[4]; + pbVar14 = puVar67 + 5; + bVar157 = puVar67[6]; + bVar164 = puVar67[7]; + pbVar15 = puVar67 + 8; + pbVar16 = puVar67 + 9; + pbVar17 = puVar67 + 10; + pbVar18 = puVar67 + 0xb; + pbVar19 = puVar67 + 0xc; + pbVar20 = puVar67 + 0xd; + pbVar21 = puVar67 + 0xe; + pbVar22 = puVar67 + 0xf; + pbVar23 = puVar67 + 0x10; + pbVar24 = puVar67 + 0x11; + pbVar25 = puVar67 + 0x12; + pbVar26 = puVar67 + 0x13; + pbVar27 = puVar67 + 0x14; + pbVar28 = puVar67 + 0x15; + pbVar29 = puVar67 + 0x16; + pbVar30 = puVar67 + 0x17; + pbVar31 = puVar67 + 0x18; + pbVar32 = puVar67 + 0x19; + pbVar33 = puVar67 + 0x1a; + pbVar34 = puVar67 + 0x1b; + pbVar35 = puVar67 + 0x1c; + pbVar36 = puVar67 + 0x1d; + pbVar37 = puVar67 + 0x1e; + pbVar38 = puVar67 + 0x1f; + puVar39 = puVar67 + 0x20; + puVar40 = puVar67 + 0x21; + puVar41 = puVar67 + 0x22; + puVar42 = puVar67 + 0x23; + bVar144 = puVar67[0x24]; + bVar153 = puVar67[0x25]; + bVar160 = puVar67[0x26]; + bVar166 = puVar67[0x27]; + pbVar43 = puVar67 + 0x28; + pbVar44 = puVar67 + 0x29; + pbVar45 = puVar67 + 0x2a; + pbVar46 = puVar67 + 0x2b; + pbVar47 = puVar67 + 0x2c; + pbVar48 = puVar67 + 0x2d; + pbVar49 = puVar67 + 0x2e; + pbVar50 = puVar67 + 0x2f; + pbVar51 = puVar67 + 0x30; + pbVar52 = puVar67 + 0x31; + pbVar53 = puVar67 + 0x32; + pbVar54 = puVar67 + 0x33; + pbVar55 = puVar67 + 0x34; + pbVar56 = puVar67 + 0x35; + pbVar57 = puVar67 + 0x36; + pbVar58 = puVar67 + 0x37; + pbVar59 = puVar67 + 0x38; + pbVar60 = puVar67 + 0x39; + pbVar61 = puVar67 + 0x3a; + pbVar62 = puVar67 + 0x3b; + pbVar63 = puVar67 + 0x3c; + pbVar64 = puVar67 + 0x3d; + pbVar65 = puVar67 + 0x3e; + pbVar66 = puVar67 + 0x3f; + puVar67 = puVar67 + 0x40; + uVar129 = uVar129 + 1; + /* try { // try from 003abc08 to 004abc0b has its CatchHandler @ 003abd94 */ + uVar136 = *puVar126; + pbVar68 = puVar126 + 1; + puVar69 = puVar126 + 2; + puVar70 = puVar126 + 3; + bVar139 = puVar126[4]; + pbVar71 = puVar126 + 5; + puVar72 = puVar126 + 6; + puVar73 = puVar126 + 7; + pbVar74 = puVar126 + 8; + pbVar75 = puVar126 + 9; + pbVar76 = puVar126 + 10; + pbVar77 = puVar126 + 0xb; + pbVar78 = puVar126 + 0xc; + pbVar79 = puVar126 + 0xd; + pbVar80 = puVar126 + 0xe; + pbVar81 = puVar126 + 0xf; + pbVar82 = puVar126 + 0x10; + pbVar83 = puVar126 + 0x11; + pbVar84 = puVar126 + 0x12; + pbVar85 = puVar126 + 0x13; + pbVar86 = puVar126 + 0x14; + pbVar87 = puVar126 + 0x15; + pbVar88 = puVar126 + 0x16; + pbVar89 = puVar126 + 0x17; + pbVar90 = puVar126 + 0x18; + pbVar91 = puVar126 + 0x19; + pbVar92 = puVar126 + 0x1a; + pbVar93 = puVar126 + 0x1b; + pbVar94 = puVar126 + 0x1c; + pbVar95 = puVar126 + 0x1d; + pbVar96 = puVar126 + 0x1e; + pbVar97 = puVar126 + 0x1f; + puVar98 = puVar126 + 0x20; + puVar99 = puVar126 + 0x21; + puVar100 = puVar126 + 0x22; + puVar101 = puVar126 + 0x23; + bVar145 = puVar126[0x24]; + bVar154 = puVar126[0x25]; + bVar161 = puVar126[0x26]; + bVar167 = puVar126[0x27]; + pbVar102 = puVar126 + 0x28; + pbVar103 = puVar126 + 0x29; + pbVar104 = puVar126 + 0x2a; + pbVar105 = puVar126 + 0x2b; + pbVar106 = puVar126 + 0x2c; + pbVar107 = puVar126 + 0x2d; + pbVar108 = puVar126 + 0x2e; + pbVar109 = puVar126 + 0x2f; + pbVar110 = puVar126 + 0x30; + pbVar111 = puVar126 + 0x31; + pbVar112 = puVar126 + 0x32; + pbVar113 = puVar126 + 0x33; + pbVar114 = puVar126 + 0x34; + pbVar115 = puVar126 + 0x35; + pbVar116 = puVar126 + 0x36; + pbVar117 = puVar126 + 0x37; + pbVar118 = puVar126 + 0x38; + pbVar119 = puVar126 + 0x39; + pbVar120 = puVar126 + 0x3a; + pbVar121 = puVar126 + 0x3b; + pbVar122 = puVar126 + 0x3c; + pbVar123 = puVar126 + 0x3d; + pbVar124 = puVar126 + 0x3e; + pbVar125 = puVar126 + 0x3f; + puVar126 = puVar126 + 0x40; + uVar9 = CONCAT12(*pbVar76,CONCAT11(*puVar72,*puVar69)); + uVar10 = CONCAT12(*pbVar77,CONCAT11(*puVar73,*puVar70)); + /* try { // try from 003abc7c to 004abc7f has its CatchHandler @ 003abddc */ + /* try { // try from 003abc88 to 004abc8b has its CatchHandler @ 003abe00 */ + iVar183 = MP_INT_ABS(((CONCAT12(bVar138,CONCAT11(bVar138,uVar135)) & 0xff00ff) & + 0xffff) - ((CONCAT12(bVar139,CONCAT11(bVar139,uVar136)) & + 0xff00ff) & 0xffff)); + iVar186 = MP_INT_ABS((uint)bVar138 - (uint)bVar139); + iVar141 = MP_INT_ABS((uint)*pbVar15 - (uint)*pbVar74); + iVar8 = MP_INT_ABS((uint)*pbVar19 - (uint)*pbVar78); + /* try { // try from 003abc94 to 004abca3 has its CatchHandler @ 003abd94 */ + iVar199 = MP_INT_ABS((CONCAT12(*pbVar14,(ushort)*pbVar11) & 0xffff) - + (CONCAT12(*pbVar71,(ushort)*pbVar68) & 0xffff)); + iVar200 = MP_INT_ABS((uint)*pbVar14 - (uint)*pbVar71); + iVar201 = MP_INT_ABS((CONCAT12(*pbVar20,(ushort)*pbVar16) & 0xffff) - + (CONCAT12(*pbVar79,(ushort)*pbVar75) & 0xffff)); + iVar202 = MP_INT_ABS((uint)*pbVar20 - (uint)*pbVar79); + iVar195 = MP_INT_ABS(((CONCAT12(bVar157,CONCAT11(bVar157,*puVar12)) & 0xff00ff) & + 0xffff) - (uVar9 & 0xff)); + iVar196 = MP_INT_ABS((uint)bVar157 - ((uVar9 & 0xff00) >> 8)); + iVar197 = MP_INT_ABS((uint)*pbVar17 - (uint)*pbVar76); + iVar198 = MP_INT_ABS((uint)*pbVar21 - (uint)*pbVar80); + iVar173 = MP_INT_ABS((CONCAT12(*pbVar27,(ushort)*pbVar23) & 0xffff) - + (CONCAT12(*pbVar86,(ushort)*pbVar82) & 0xffff)); + iVar176 = MP_INT_ABS((uint)*pbVar27 - (uint)*pbVar86); + iVar178 = MP_INT_ABS((uint)*pbVar31 - (uint)*pbVar90); + iVar181 = MP_INT_ABS((uint)*pbVar35 - (uint)*pbVar94); + iVar215 = MP_INT_ABS((CONCAT12(*pbVar28,(ushort)*pbVar24) & 0xffff) - + (CONCAT12(*pbVar87,(ushort)*pbVar83) & 0xffff)); + iVar216 = MP_INT_ABS((uint)*pbVar28 - (uint)*pbVar87); + iVar163 = MP_INT_ABS((uint)*pbVar32 - (uint)*pbVar91); + iVar165 = MP_INT_ABS((uint)*pbVar36 - (uint)*pbVar95); + iVar189 = MP_INT_ABS(((CONCAT12(bVar144,CONCAT11(bVar144,*puVar39)) & 0xff00ff) & + 0xffff) - ((CONCAT12(bVar145,CONCAT11(bVar145,*puVar98)) & + 0xff00ff) & 0xffff)); + iVar190 = MP_INT_ABS((uint)bVar144 - (uint)bVar145); + iVar151 = MP_INT_ABS((uint)*pbVar43 - (uint)*pbVar102); + iVar155 = MP_INT_ABS((uint)*pbVar47 - (uint)*pbVar106); + /* catch() { ... } // from try @ 003ab18c with catch @ 003abccc + catch() { ... } // from try @ 003ab74c with catch @ 003abccc + catch() { ... } // from try @ 003aba0c with catch @ 003abccc */ + iVar184 = MP_INT_ABS(((CONCAT12(bVar153,CONCAT11(bVar153,*puVar40)) & 0xff00ff) & + 0xffff) - ((CONCAT12(bVar154,CONCAT11(bVar154,*puVar99)) & + 0xff00ff) & 0xffff)); + iVar187 = MP_INT_ABS((uint)bVar153 - (uint)bVar154); + iVar143 = MP_INT_ABS((uint)*pbVar44 - (uint)*pbVar103); + iVar148 = MP_INT_ABS((uint)*pbVar48 - (uint)*pbVar107); + iVar191 = MP_INT_ABS(((CONCAT12(bVar164,CONCAT11(bVar164,*puVar13)) & 0xff00ff) & + 0xffff) - (uVar10 & 0xff)); + iVar193 = MP_INT_ABS((uint)bVar164 - ((uVar10 & 0xff00) >> 8)); + iVar156 = MP_INT_ABS((uint)*pbVar18 - (uint)*pbVar77); + iVar159 = MP_INT_ABS((uint)*pbVar22 - (uint)*pbVar81); + iVar211 = MP_INT_ABS((CONCAT12(*pbVar29,(ushort)*pbVar25) & 0xffff) - + (CONCAT12(*pbVar88,(ushort)*pbVar84) & 0xffff)); + iVar212 = MP_INT_ABS((uint)*pbVar29 - (uint)*pbVar88); + iVar213 = MP_INT_ABS((uint)*pbVar33 - (uint)*pbVar92); + iVar214 = MP_INT_ABS((uint)*pbVar37 - (uint)*pbVar96); + /* try { // try from 003abcf0 to 004abcf3 has its CatchHandler @ 003ab120 */ + /* catch() { ... } // from try @ 003ab500 with catch @ 003abcf4 */ + iVar169 = MP_INT_ABS((CONCAT12(*pbVar55,(ushort)*pbVar51) & 0xffff) - + (CONCAT12(*pbVar114,(ushort)*pbVar110) & 0xffff)); + iVar170 = MP_INT_ABS((uint)*pbVar55 - (uint)*pbVar114); + iVar171 = MP_INT_ABS((uint)*pbVar59 - (uint)*pbVar118); + iVar172 = MP_INT_ABS((uint)*pbVar63 - (uint)*pbVar122); + iVar207 = MP_INT_ABS((CONCAT12(*pbVar30,(ushort)*pbVar26) & 0xffff) - + (CONCAT12(*pbVar89,(ushort)*pbVar85) & 0xffff)); + iVar208 = MP_INT_ABS((uint)*pbVar30 - (uint)*pbVar89); + iVar209 = MP_INT_ABS((uint)*pbVar34 - (uint)*pbVar93); + iVar210 = MP_INT_ABS((uint)*pbVar38 - (uint)*pbVar97); + iVar174 = MP_INT_ABS(((CONCAT12(bVar160,CONCAT11(bVar160,*puVar41)) & 0xff00ff) & + 0xffff) - ((CONCAT12(bVar161,CONCAT11(bVar161,*puVar100)) & + 0xff00ff) & 0xffff)); + iVar177 = MP_INT_ABS((uint)bVar160 - (uint)bVar161); + iVar179 = MP_INT_ABS((uint)*pbVar45 - (uint)*pbVar104); + iVar182 = MP_INT_ABS((uint)*pbVar49 - (uint)*pbVar108); + iVar203 = MP_INT_ABS((CONCAT12(*pbVar56,(ushort)*pbVar52) & 0xffff) - + (CONCAT12(*pbVar115,(ushort)*pbVar111) & 0xffff)); + iVar204 = MP_INT_ABS((uint)*pbVar56 - (uint)*pbVar115); + iVar205 = MP_INT_ABS((uint)*pbVar60 - (uint)*pbVar119); + iVar206 = MP_INT_ABS((uint)*pbVar64 - (uint)*pbVar123); + iVar192 = MP_INT_ABS(((CONCAT12(bVar166,CONCAT11(bVar166,*puVar42)) & 0xff00ff) & + 0xffff) - ((CONCAT12(bVar167,CONCAT11(bVar167,*puVar101)) & + 0xff00ff) & 0xffff)); + iVar194 = MP_INT_ABS((uint)bVar166 - (uint)bVar167); + iVar158 = MP_INT_ABS((uint)*pbVar46 - (uint)*pbVar105); + iVar162 = MP_INT_ABS((uint)*pbVar50 - (uint)*pbVar109); + iVar185 = MP_INT_ABS((CONCAT12(*pbVar57,(ushort)*pbVar53) & 0xffff) - + (CONCAT12(*pbVar116,(ushort)*pbVar112) & 0xffff)); + iVar188 = MP_INT_ABS((uint)*pbVar57 - (uint)*pbVar116); + iVar147 = MP_INT_ABS((uint)*pbVar61 - (uint)*pbVar120); + iVar150 = MP_INT_ABS((uint)*pbVar65 - (uint)*pbVar124); + iVar137 = MP_INT_ABS((CONCAT12(*pbVar58,(ushort)*pbVar54) & 0xffff) - + (CONCAT12(*pbVar117,(ushort)*pbVar113) & 0xffff)); + iVar140 = MP_INT_ABS((uint)*pbVar58 - (uint)*pbVar117); + iVar142 = MP_INT_ABS((uint)*pbVar62 - (uint)*pbVar121); + iVar146 = MP_INT_ABS((uint)*pbVar66 - (uint)*pbVar125); + iVar218 = iVar169 + iVar203 + iVar185 + iVar137 + + iVar189 + iVar184 + iVar174 + iVar192 + + iVar173 + iVar215 + iVar211 + iVar207 + + iVar183 + iVar199 + iVar195 + iVar191 + iVar218; + iVar219 = iVar170 + iVar204 + iVar188 + iVar140 + + iVar190 + iVar187 + iVar177 + iVar194 + + iVar176 + iVar216 + iVar212 + iVar208 + + iVar186 + iVar200 + iVar196 + iVar193 + iVar219; + iVar220 = iVar171 + iVar205 + iVar147 + iVar142 + + iVar151 + iVar143 + iVar179 + iVar158 + + iVar178 + iVar163 + iVar213 + iVar209 + + iVar141 + iVar201 + iVar197 + iVar156 + iVar220; + iVar221 = iVar172 + iVar206 + iVar150 + iVar146 + + iVar155 + iVar148 + iVar182 + iVar162 + + iVar181 + iVar165 + iVar214 + iVar210 + + iVar8 + iVar202 + iVar198 + iVar159 + iVar221; + } while (uVar129 < uVar6); + iVar218 = iVar218 + iVar219 + iVar220 + iVar221; + iVar219 = uVar6 * 0x40; + if (iVar1 == uVar6 * 0x10) goto LAB_003abdfc; + } + pbVar34 = param_2 + iVar219; + pbVar11 = param_1 + iVar219; + do { + iVar219 = iVar219 + 4; + /* catch() { ... } // from try @ 003ab2d0 with catch @ 003abd94 + catch() { ... } // from try @ 003ab418 with catch @ 003abd94 + catch() { ... } // from try @ 003ab508 with catch @ 003abd94 + catch() { ... } // from try @ 003ab9d0 with catch @ 003abd94 + catch() { ... } // from try @ 003aba24 with catch @ 003abd94 + catch() { ... } // from try @ 003abc08 with catch @ 003abd94 + catch() { ... } // from try @ 003abc94 with catch @ 003abd94 */ + /* catch() { ... } // from try @ 003ab1ac with catch @ 003abd9c + catch() { ... } // from try @ 003ab6d8 with catch @ 003abd9c + catch() { ... } // from try @ 003aba18 with catch @ 003abd9c */ + /* catch() { ... } // from try @ 003ab57c with catch @ 003abda4 + catch() { ... } // from try @ 003aba00 with catch @ 003abda4 + catch() { ... } // from try @ 003aba44 with catch @ 003abda4 */ + /* catch() { ... } // from try @ 003ab20c with catch @ 003abdac + catch() { ... } // from try @ 003ab5f0 with catch @ 003abdac + catch() { ... } // from try @ 003ab9f4 with catch @ 003abdac */ + uVar7 = (int)((uint)*pbVar11 - (uint)*pbVar34) >> 0x1f; + /* catch() { ... } // from try @ 003ab374 with catch @ 003abdb4 + catch() { ... } // from try @ 003aba30 with catch @ 003abdb4 */ + uVar129 = (int)((uint)pbVar11[1] - (uint)pbVar34[1]) >> 0x1f; + uVar2 = (int)((uint)pbVar11[2] - (uint)pbVar34[2]) >> 0x1f; + /* catch() { ... } // from try @ 003abac0 with catch @ 003abddc + catch() { ... } // from try @ 003abc7c with catch @ 003abddc */ + uVar133 = (int)((uint)pbVar11[3] - (uint)pbVar34[3]) >> 0x1f; + iVar218 = iVar218 + (((uint)*pbVar11 - (uint)*pbVar34 ^ uVar7) - uVar7) + + (((uint)pbVar11[1] - (uint)pbVar34[1] ^ uVar129) - uVar129) + + (((uint)pbVar11[2] - (uint)pbVar34[2] ^ uVar2) - uVar2) + + (((uint)pbVar11[3] - (uint)pbVar34[3] ^ uVar133) - uVar133); + pbVar34 = pbVar34 + 4; + pbVar11 = pbVar11 + 4; + } while (iVar219 < param_5 + -3); + } +LAB_003abdfc: + /* catch() { ... } // from try @ 003ab888 with catch @ 003abe00 + catch() { ... } // from try @ 003abc88 with catch @ 003abe00 */ + if (iVar127 < param_5) { + uVar7 = param_5 - iVar127; + uVar129 = -((int)param_1 + iVar127) & 0xf; + uVar4 = (ulong)uVar129; + if (uVar7 < uVar129) { + uVar4 = (ulong)uVar7; + } + /* catch() { ... } // from try @ 003ab664 with catch @ 003abe24 + catch() { ... } // from try @ 003ab9e8 with catch @ 003abe24 */ + if (uVar7 < 0x11) { + uVar4 = (ulong)uVar7; + } + uVar129 = (uint)uVar4; + iVar219 = iVar127; + if (uVar129 != 0) { + iVar219 = iVar127 + 1; + uVar2 = (int)((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127] ^ + uVar2) - uVar2); + if (uVar129 != 1) { + iVar220 = iVar127 + 2; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219] ^ + uVar2) - uVar2); + iVar219 = iVar220; + if (uVar129 != 2) { + iVar219 = iVar127 + 3; + uVar2 = (int)((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220] ^ + uVar2) - uVar2); + if (uVar129 != 3) { + iVar220 = iVar127 + 4; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219]) >> 0x1f + ; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219] + ^ uVar2) - uVar2); + iVar219 = iVar220; + if (uVar129 != 4) { + iVar219 = iVar127 + 5; + uVar2 = (int)((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220]) >> + 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar2) - uVar2); + if (uVar129 != 5) { + iVar220 = iVar127 + 6; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219]) >> + 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar2) - uVar2); + iVar219 = iVar220; + if (uVar129 != 6) { + iVar219 = iVar127 + 7; + uVar2 = (int)((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220]) + >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar2) - uVar2); + if (uVar129 != 7) { + iVar220 = iVar127 + 8; + uVar2 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219]) + >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar2) - uVar2); + iVar219 = iVar220; + if (uVar129 != 8) { + iVar219 = iVar127 + 9; + uVar2 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar2) - uVar2); + if (uVar129 != 9) { + iVar220 = iVar127 + 10; + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar2) - uVar2); + iVar219 = iVar220; + if (uVar129 != 10) { + iVar219 = iVar127 + 0xb; + uVar2 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar2) - uVar2) + ; + if (uVar129 != 0xb) { + iVar220 = iVar127 + 0xc; + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar2) - + uVar2); + iVar219 = iVar220; + if (uVar129 != 0xc) { + iVar219 = iVar127 + 0xd; + uVar2 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar2) - + uVar2); + if (uVar129 != 0xd) { + iVar220 = iVar127 + 0xe; + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar2) - + uVar2); + iVar219 = iVar220; + if (uVar129 != 0xe) { + iVar219 = iVar127 + 0xf; + uVar2 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar2) + - uVar2); + if (uVar129 == 0x10) { + uVar2 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar2 + ) - uVar2); + iVar219 = iVar127 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (uVar7 == uVar129) goto LAB_003ac41c; + } + uVar2 = ((uVar7 - uVar129) - 0x10 >> 4) + 1; + iVar220 = uVar2 * 0x10; + if (0xe < (uVar7 - 1) - uVar129) { + iVar221 = 0; + iVar141 = 0; + iVar143 = 0; + iVar147 = 0; + uVar133 = 0; + puVar130 = (undefined8 *)(param_2 + uVar4 + (long)iVar127); + puVar131 = (undefined8 *)(param_1 + (long)iVar127 + uVar4); + do { + uVar152 = puVar131[1]; + uVar149 = *puVar131; + uVar133 = uVar133 + 1; + uVar180 = puVar130[1]; + uVar175 = *puVar130; + bVar138 = (byte)((ulong)uVar149 >> 8); + bVar154 = (byte)((ulong)uVar149 >> 0x28); + bVar139 = (byte)((ulong)uVar175 >> 8); + bVar153 = (byte)((ulong)uVar175 >> 0x18); + bVar157 = (byte)((ulong)uVar175 >> 0x28); + bVar144 = (byte)((ulong)uVar152 >> 8); + bVar160 = (byte)((ulong)uVar152 >> 0x28); + bVar145 = (byte)((ulong)uVar180 >> 8); + bVar161 = (byte)((ulong)uVar180 >> 0x28); + iVar137 = MP_INT_ABS(((CONCAT12(bVar138,(short)uVar149) & 0xff00ff) & 0xffff) - + (CONCAT12(bVar139,(ushort)(byte)uVar175) & 0xffff)); + iVar140 = MP_INT_ABS((uint)bVar138 - (uint)bVar139); + iVar142 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x10) - + (CONCAT12(bVar153,(ushort)(byte)((ulong)uVar175 >> 0x10)) & + 0xffff)); + iVar146 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x18) - (uint)bVar153); + iVar156 = MP_INT_ABS((CONCAT12(bVar154,(ushort)(byte)((ulong)uVar149 >> 0x20)) & + 0xffff) - (CONCAT12(bVar157,(ushort)(byte)((ulong)uVar175 >> 0x20 + )) & 0xffff)); + iVar158 = MP_INT_ABS((uint)bVar154 - (uint)bVar157); + iVar159 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x30) - + (uint)(byte)((ulong)uVar175 >> 0x30)); + iVar162 = MP_INT_ABS((uint)(byte)((ulong)uVar149 >> 0x38) - + (uint)(byte)((ulong)uVar175 >> 0x38)); + iVar163 = MP_INT_ABS(((CONCAT12(bVar144,(short)uVar152) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar145,(short)uVar180) & 0xff00ff) & 0xffff)); + iVar165 = MP_INT_ABS((uint)bVar144 - (uint)bVar145); + iVar127 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x10) - + (uint)(byte)((ulong)uVar180 >> 0x10)); + iVar8 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x18) - + (uint)(byte)((ulong)uVar180 >> 0x18)); + iVar148 = MP_INT_ABS((CONCAT12(bVar160,(ushort)(byte)((ulong)uVar152 >> 0x20)) & + 0xffff) - (CONCAT12(bVar161,(ushort)(byte)((ulong)uVar180 >> 0x20 + )) & 0xffff)); + iVar150 = MP_INT_ABS((uint)bVar160 - (uint)bVar161); + iVar151 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x30) - + (uint)(byte)((ulong)uVar180 >> 0x30)); + iVar155 = MP_INT_ABS((uint)(byte)((ulong)uVar152 >> 0x38) - + (uint)(byte)((ulong)uVar180 >> 0x38)); + iVar221 = iVar148 + iVar163 + iVar156 + iVar137 + iVar221; + iVar141 = iVar150 + iVar165 + iVar158 + iVar140 + iVar141; + iVar143 = iVar151 + iVar127 + iVar159 + iVar142 + iVar143; + iVar147 = iVar155 + iVar8 + iVar162 + iVar146 + iVar147; + puVar130 = puVar130 + 2; + puVar131 = puVar131 + 2; + } while (uVar133 < uVar2); + iVar219 = iVar219 + iVar220; + iVar218 = iVar218 + iVar221 + iVar141 + iVar143 + iVar147; + if (uVar7 - uVar129 == iVar220) goto LAB_003ac41c; + } + iVar127 = iVar219 + 1; + uVar129 = (int)((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - (uint)(byte)param_2[iVar219] ^ + uVar129) - uVar129); + if (iVar127 < param_5) { + iVar220 = iVar219 + 2; + uVar129 = (int)((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127] ^ + uVar129) - uVar129); + if (iVar220 < param_5) { + iVar127 = iVar219 + 3; + uVar129 = (int)((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220] ^ + uVar129) - uVar129); + if (iVar127 < param_5) { + iVar220 = iVar219 + 4; + uVar129 = (int)((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127]) >> 0x1f + ; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127] ^ + uVar129) - uVar129); + if (iVar220 < param_5) { + iVar127 = iVar219 + 5; + uVar129 = (int)((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220]) >> + 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220] + ^ uVar129) - uVar129); + if (iVar127 < param_5) { + iVar220 = iVar219 + 6; + uVar129 = (int)((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127]) >> + 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127] ^ uVar129) - uVar129); + if (iVar220 < param_5) { + iVar127 = iVar219 + 7; + uVar129 = (int)((uint)(byte)param_1[iVar220] - (uint)(byte)param_2[iVar220]) + >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar129) - uVar129); + if (iVar127 < param_5) { + iVar220 = iVar219 + 8; + uVar129 = (int)((uint)(byte)param_1[iVar127] - (uint)(byte)param_2[iVar127]) + >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127] ^ uVar129) - uVar129); + if (iVar220 < param_5) { + iVar127 = iVar219 + 9; + uVar129 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar129) - uVar129); + if (iVar127 < param_5) { + iVar220 = iVar219 + 10; + uVar129 = (int)((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127] ^ uVar129) - uVar129) + ; + if (iVar220 < param_5) { + iVar127 = iVar219 + 0xb; + uVar129 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar129) - + uVar129); + if (iVar127 < param_5) { + iVar220 = iVar219 + 0xc; + uVar129 = (int)((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127] ^ uVar129) - + uVar129); + if (iVar220 < param_5) { + iVar127 = iVar219 + 0xd; + uVar129 = (int)((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar220] - + (uint)(byte)param_2[iVar220] ^ uVar129) - + uVar129); + if (iVar127 < param_5) { + iVar219 = iVar219 + 0xe; + uVar129 = (int)((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar127] - + (uint)(byte)param_2[iVar127] ^ uVar129) - + uVar129); + if (iVar219 < param_5) { + uVar129 = (int)((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219]) >> 0x1f; + iVar218 = iVar218 + (((uint)(byte)param_1[iVar219] - + (uint)(byte)param_2[iVar219] ^ uVar129) + - uVar129); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003ac41c: + param_6[lVar134] = iVar218; + lVar134 = lVar134 + 1; + param_2 = param_2 + param_3; + } while (lVar134 != (ulong)(param_4 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003acd44 (736 bytes) name=FUN_003acd44 + +void FUN_003acd44(byte *param_1,long param_2,long param_3,int param_4,int param_5,float *param_6, + char *param_7) + +{ + byte *pbVar1; + char *pcVar2; + int iVar3; + uint uVar4; + long lVar5; + long lVar6; + long lVar7; + byte *pbVar8; + byte *pbVar9; + byte *pbVar10; + float *pfVar11; + float *pfVar12; + float fVar13; + float fVar14; + float __x; + + fVar14 = DAT_003ad024; + if (param_7 == (char *)0x0) { + if (0 < param_4) { + uVar4 = param_5 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_5 + -3 < 1) { + iVar3 = 0; + } + pbVar10 = (byte *)(param_2 + 1); + pfVar11 = param_6; + do { + fVar14 = 0.0; + if (0 < param_5 + -3) { + pbVar8 = pbVar10; + pbVar9 = param_1; + do { + pbVar1 = pbVar8 + 4; + fVar14 = fVar14 + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) * + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) + + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) * + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) + + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) * + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) + + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]) * + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]); + pbVar8 = pbVar1; + pbVar9 = pbVar9 + 4; + } while (pbVar1 != pbVar10 + (ulong)uVar4 * 4 + 4); + } + if (iVar3 < param_5) { + lVar7 = 0; + do { + lVar5 = lVar7 + iVar3; + lVar6 = lVar7 + (long)iVar3 + -1; + lVar7 = lVar7 + 1; + fVar14 = fVar14 + (float)(int)((uint)param_1[lVar5] - (uint)pbVar10[lVar6]) * + (float)(int)((uint)param_1[lVar5] - (uint)pbVar10[lVar6]); + } while (lVar7 != (ulong)(uint)((param_5 + -1) - iVar3) + 1); + } + fVar13 = SQRT(fVar14); + if (NAN(fVar13)) { + fVar13 = sqrtf(fVar14); + } + pfVar12 = pfVar11 + 1; + *pfVar11 = fVar13; + pbVar10 = pbVar10 + param_3; + pfVar11 = pfVar12; + } while (pfVar12 != param_6 + (ulong)(param_4 - 1) + 1); + } + } + else if (0 < param_4) { + uVar4 = param_5 - 4U >> 2; + iVar3 = (uVar4 + 1) * 4; + if (param_5 + -3 < 1) { + iVar3 = 0; + } + pbVar10 = (byte *)(param_2 + 1); + pcVar2 = param_7 + (ulong)(param_4 - 1) + 1; + do { + fVar13 = fVar14; + if (*param_7 != '\0') { + __x = 0.0; + if (0 < param_5 + -3) { + pbVar8 = pbVar10; + pbVar9 = param_1; + do { + pbVar1 = pbVar8 + 4; + __x = __x + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) * + (float)(int)((uint)pbVar9[1] - (uint)*pbVar8) + + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) * + (float)(int)((uint)*pbVar9 - (uint)pbVar8[-1]) + + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) * + (float)(int)((uint)pbVar9[2] - (uint)pbVar8[1]) + + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]) * + (float)(int)((uint)pbVar9[3] - (uint)pbVar8[2]); + pbVar8 = pbVar1; + pbVar9 = pbVar9 + 4; + } while (pbVar1 != pbVar10 + (ulong)uVar4 * 4 + 4); + } + if (iVar3 < param_5) { + lVar7 = 0; + do { + lVar5 = lVar7 + iVar3; + lVar6 = lVar7 + (long)iVar3 + -1; + lVar7 = lVar7 + 1; + __x = __x + (float)(int)((uint)param_1[lVar5] - (uint)pbVar10[lVar6]) * + (float)(int)((uint)param_1[lVar5] - (uint)pbVar10[lVar6]); + } while (lVar7 != (ulong)(uint)((param_5 + -1) - iVar3) + 1); + } + fVar13 = SQRT(__x); + if (NAN(fVar13)) { + fVar13 = sqrtf(__x); + } + } + param_7 = param_7 + 1; + pbVar10 = pbVar10 + param_3; + *param_6 = fVar13; + param_6 = param_6 + 1; + } while (param_7 != pcVar2); + } + return; +} + + +================================================================== + +### FUNC 003ad028 (176 bytes) name=FUN_003ad028 + +undefined8 FUN_003ad028(long param_1,long param_2,float *param_3,int param_4,ulong param_5) + +{ + long lVar1; + int iVar2; + long lVar3; + long lVar4; + float fVar5; + float fVar6; + float fVar7; + + fVar5 = *param_3; + iVar2 = (int)param_5; + if (param_2 == 0) { + fVar6 = 0.0; + lVar4 = 0; + fVar7 = fVar6; + if (0 < param_4 * iVar2) { + do { + lVar3 = lVar4 * 4; + lVar4 = lVar4 + 1; + fVar6 = ABS(*(float *)(param_1 + lVar3)); + if (fVar6 <= fVar7) { + fVar6 = fVar7; + } + fVar7 = fVar6; + } while ((int)lVar4 < param_4 * iVar2); + } + if (fVar5 < fVar6) { + fVar5 = fVar6; + } + } + else if (0 < param_4) { + lVar4 = 0; + do { + if ((*(char *)(param_2 + lVar4) != '\0') && (0 < iVar2)) { + lVar3 = 0; + fVar6 = fVar5; + do { + lVar1 = lVar3 * 4; + lVar3 = lVar3 + 1; + fVar5 = ABS(*(float *)(param_1 + lVar1)); + if (fVar5 <= fVar6) { + fVar5 = fVar6; + } + fVar6 = fVar5; + } while ((int)lVar3 < iVar2); + } + lVar4 = lVar4 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | (param_5 & 0xffffffff) << 2 + ); + } while ((int)lVar4 < param_4); + } + *param_3 = fVar5; + return 0; +} + + +================================================================== + +### FUNC 003ad0d8 (712 bytes) name=FUN_003ad0d8 + +void FUN_003ad0d8(float *param_1,long param_2,ulong param_3,int param_4,int param_5,float *param_6, + char *param_7) + +{ + float *pfVar1; + char *pcVar2; + uint uVar3; + uint uVar4; + long lVar5; + long lVar6; + float *pfVar7; + long lVar8; + float *pfVar9; + float *pfVar10; + float *pfVar11; + ulong uVar12; + float fVar13; + float fVar14; + float __x; + + fVar13 = DAT_003ad3a0; + if (param_7 == (char *)0x0) { + if (0 < param_4) { + uVar4 = param_5 - 4U >> 2; + uVar3 = (uVar4 + 1) * 4; + if (param_5 + -3 < 1) { + uVar3 = 0; + } + uVar12 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + pfVar11 = (float *)(param_2 + 4); + pfVar7 = param_6; + do { + fVar13 = 0.0; + if (0 < param_5 + -3) { + pfVar9 = pfVar11; + pfVar10 = param_1; + do { + pfVar1 = pfVar9 + 4; + fVar13 = fVar13 + (pfVar10[1] - *pfVar9) * (pfVar10[1] - *pfVar9) + + (*pfVar10 - pfVar9[-1]) * (*pfVar10 - pfVar9[-1]) + + (pfVar10[2] - pfVar9[1]) * (pfVar10[2] - pfVar9[1]) + + (pfVar10[3] - pfVar9[2]) * (pfVar10[3] - pfVar9[2]); + pfVar9 = pfVar1; + pfVar10 = pfVar10 + 4; + } while (pfVar1 != pfVar11 + (ulong)uVar4 * 4 + 4); + } + if ((int)uVar3 < param_5) { + lVar8 = 0; + do { + lVar5 = lVar8 + uVar12; + lVar6 = lVar8 + (uVar12 - 4); + lVar8 = lVar8 + 4; + fVar14 = *(float *)((long)param_1 + lVar5) - *(float *)((long)pfVar11 + lVar6); + fVar13 = fVar13 + fVar14 * fVar14; + } while (lVar8 != ((ulong)((param_5 + -1) - uVar3) + 1) * 4); + } + fVar14 = SQRT(fVar13); + if (NAN(fVar14)) { + fVar14 = sqrtf(fVar13); + } + pfVar9 = pfVar7 + 1; + *pfVar7 = fVar14; + pfVar11 = pfVar11 + (param_3 >> 2); + pfVar7 = pfVar9; + } while (pfVar9 != param_6 + (ulong)(param_4 - 1) + 1); + } + } + else if (0 < param_4) { + uVar4 = param_5 - 4U >> 2; + uVar3 = (uVar4 + 1) * 4; + if (param_5 + -3 < 1) { + uVar3 = 0; + } + uVar12 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + pfVar11 = (float *)(param_2 + 4); + pcVar2 = param_7 + (ulong)(param_4 - 1) + 1; + do { + fVar14 = fVar13; + if (*param_7 != '\0') { + __x = 0.0; + if (0 < param_5 + -3) { + pfVar7 = pfVar11; + pfVar9 = param_1; + do { + pfVar10 = pfVar7 + 4; + __x = __x + (pfVar9[1] - *pfVar7) * (pfVar9[1] - *pfVar7) + + (*pfVar9 - pfVar7[-1]) * (*pfVar9 - pfVar7[-1]) + + (pfVar9[2] - pfVar7[1]) * (pfVar9[2] - pfVar7[1]) + + (pfVar9[3] - pfVar7[2]) * (pfVar9[3] - pfVar7[2]); + pfVar7 = pfVar10; + pfVar9 = pfVar9 + 4; + } while (pfVar10 != pfVar11 + (ulong)uVar4 * 4 + 4); + } + if ((int)uVar3 < param_5) { + lVar8 = 0; + do { + lVar5 = lVar8 + uVar12; + lVar6 = lVar8 + (uVar12 - 4); + lVar8 = lVar8 + 4; + fVar14 = *(float *)((long)param_1 + lVar5) - *(float *)((long)pfVar11 + lVar6); + __x = __x + fVar14 * fVar14; + } while (lVar8 != ((ulong)((param_5 + -1) - uVar3) + 1) * 4); + } + fVar14 = SQRT(__x); + if (NAN(fVar14)) { + fVar14 = sqrtf(__x); + } + } + param_7 = param_7 + 1; + pfVar11 = pfVar11 + (param_3 >> 2); + *param_6 = fVar14; + param_6 = param_6 + 1; + } while (param_7 != pcVar2); + } + return; +} + + +================================================================== + +### FUNC 003ad3a4 (1256 bytes) name=sum + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::sum(cv::_InputArray const&) */ + +void __thiscall cv::sum(cv *this,_InputArray *param_1) + +{ + uint uVar1; + int *piVar2; + uint uVar3; + int iVar4; + char cVar5; + bool bVar6; + uint uVar7; + undefined8 uVar8; + undefined8 uVar9; + int iVar10; + code *pcVar11; + long lVar12; + char *pcVar13; + undefined4 *puVar14; + Mat *pMVar15; + undefined8 *in_x8; + undefined8 *puVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + long lVar21; + ulong local_508; + Mat *local_500; + uchar *local_4e8; + Mat *local_4e0; + undefined8 uStack_4d8; + NAryMatIterator aNStack_4d0 [32]; + ulong local_4b0; + int local_4a8; + uint local_490; + int local_48c; + undefined4 local_488; + undefined4 local_484; + undefined8 local_480; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + long local_458; + undefined4 *local_450; + undefined8 *local_448; + undefined8 local_440; + undefined8 local_438; + undefined8 *local_430; + long local_428; + undefined8 auStack_420 [132]; + + iVar10 = _InputArray::kind((_InputArray *)this); + if (iVar10 == 0x10000) { + pMVar15 = *(Mat **)(this + 8); + local_450 = &local_488; + local_448 = &local_440; + local_490 = *(uint *)pMVar15; + local_48c = *(int *)(pMVar15 + 4); + local_488 = *(undefined4 *)(pMVar15 + 8); + local_484 = *(undefined4 *)(pMVar15 + 0xc); + local_480 = *(undefined8 *)(pMVar15 + 0x10); + local_478 = *(undefined8 *)(pMVar15 + 0x18); + local_470 = *(undefined8 *)(pMVar15 + 0x20); + local_468 = *(undefined8 *)(pMVar15 + 0x28); + local_460 = *(undefined8 *)(pMVar15 + 0x30); + local_458 = *(long *)(pMVar15 + 0x38); + local_438 = 0; + local_440 = 0; + if (local_458 != 0) { + piVar2 = (int *)(local_458 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = *piVar2 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + if (2 < *(int *)(pMVar15 + 4)) { + local_48c = 0; + Mat::copySize((Mat *)&local_490,pMVar15); + } + } + else { + _InputArray::getMat_((int)this); + } + local_500 = (Mat *)&local_490; + uVar7 = local_490 >> 3 & 0x1ff; + uVar3 = local_490 & 7; + uVar1 = uVar7 + 1; + pcVar11 = (code *)(&PTR_FUN_004f7720)[(int)uVar3]; + if ((4 < uVar1) || (pcVar11 == (code *)0x0)) { + local_430 = (undefined8 *)0x0; + local_428 = 0; + pcVar13 = (char *)String::allocate((String *)&local_430,0x14); + uVar9 = s_cn_<__4_&&_func____0_00473460._8_8_; + uVar8 = s_cn_<__4_&&_func____0_00473460._0_8_; + *(undefined4 *)(pcVar13 + 0x10) = s_cn_<__4_&&_func____0_00473460._16_4_; + *(undefined8 *)pcVar13 = uVar8; + *(undefined8 *)(pcVar13 + 8) = uVar9; + error(-0xd7,(String *)&local_430,"cv::Scalar cv::sum(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x4b3); + String::deallocate((String *)&local_430); + } + uStack_4d8 = 0; + local_4e0 = local_500; + NAryMatIterator::NAryMatIterator(aNStack_4d0,&local_4e0,&local_4e8,-1); + in_x8[1] = 0; + *in_x8 = 0; + local_430 = auStack_420; + in_x8[3] = 0; + in_x8[2] = 0; + local_428 = 0x108; + if (uVar3 < 4) { + iVar10 = 0x800000; + if (1 < uVar3) { + iVar10 = 0x8000; + } + iVar17 = iVar10; + if (local_4a8 < iVar10) { + iVar17 = local_4a8; + } + if (0x108 < uVar1) { + local_430 = operator_new__((long)(int)uVar1 << 2); + } + puVar16 = local_430; + local_428 = (long)(int)uVar1; + memset(local_430,0,((long)(int)uVar7 + 1) * 4); + if (local_48c < 1) { + lVar21 = 0; + } + else { + lVar21 = local_448[(long)local_48c + -1]; + } + } + else { + lVar21 = 0; + iVar10 = 0; + puVar16 = in_x8; + iVar17 = local_4a8; + } + local_508 = 0; + iVar20 = 0; + if (local_4b0 != 0) { + do { + if (0 < local_4a8) { + iVar19 = 0; + iVar18 = 0; + do { + iVar4 = iVar19 + local_4a8; + if (iVar17 < iVar19 + local_4a8) { + iVar4 = iVar17; + } + (*pcVar11)(local_4e8,0,puVar16,iVar4,uVar1); + iVar20 = iVar20 + iVar4; + if ((uVar3 < 4) && + ((iVar10 <= iVar20 + iVar17 || + ((local_4b0 <= local_508 + 1 && (local_4a8 <= iVar18 + iVar4)))))) { + lVar12 = 0; + do { + in_x8[lVar12] = (double)in_x8[lVar12] + (double)*(int *)((long)puVar16 + lVar12 * 4); + *(undefined4 *)((long)puVar16 + lVar12 * 4) = 0; + lVar12 = lVar12 + 1; + } while ((int)lVar12 < (int)uVar1); + iVar20 = 0; + } + iVar18 = iVar18 + iVar17; + iVar19 = iVar19 - iVar17; + local_4e8 = local_4e8 + iVar4 * lVar21; + } while (iVar18 < local_4a8); + } + local_508 = local_508 + 1; + NAryMatIterator::operator++(aNStack_4d0); + } while (local_508 < local_4b0); + } + if ((local_430 != auStack_420) && (local_430 != (undefined8 *)0x0)) { + operator_delete__(local_430); + } + if (local_458 != 0) { + piVar2 = (int *)(local_458 + 0x14); + do { + iVar10 = *piVar2; + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar6) { + *piVar2 = iVar10 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar10 == 1) { + Mat::deallocate(local_500); + } + } + local_458 = 0; + local_480 = 0; + local_468 = 0; + local_470 = 0; + local_478 = 0; + if (0 < local_48c) { + iVar10 = 0; + puVar14 = local_450; + do { + iVar10 = iVar10 + 1; + *puVar14 = 0; + puVar14 = puVar14 + 1; + } while (iVar10 < local_48c); + } + if (local_448 != &local_440) { + fastFree(local_448); + } + return; +} + + +================================================================== + +### FUNC 003ad8e8 (744 bytes) name=countNonZero + +/* cv::countNonZero(cv::_InputArray const&) */ + +int cv::countNonZero(_InputArray *param_1) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined2 uVar5; + undefined1 uVar6; + int iVar7; + int iVar8; + ulong uVar9; + undefined4 *puVar10; + char *pcVar11; + Mat *pMVar12; + undefined8 *puVar13; + code *pcVar14; + uchar *local_c8; + code *local_c0; + code *local_b8; + String *local_b0; + undefined8 uStack_a8; + NAryMatIterator aNStack_a0 [32]; + ulong local_80; + undefined4 local_78; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar9 = _InputArray::type(param_1,-1); + if ((uVar9 >> 3 & 0x1ff) != 0) { + local_60 = 0; + local_58 = 0; + puVar10 = (undefined4 *)String::allocate((String *)&local_60,7); + uVar6 = DAT_004734be; + uVar5 = DAT_004734bc; + *puVar10 = DAT_004734b8; + *(undefined2 *)(puVar10 + 1) = uVar5; + *(undefined1 *)((long)puVar10 + 6) = uVar6; + error(-0xd7,(String *)&local_60,"int cv::countNonZero(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x511); + String::deallocate((String *)&local_60); + } + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) { + pMVar12 = *(Mat **)(param_1 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar2 = *(uint *)pMVar12; + local_50 = *(undefined8 *)(pMVar12 + 0x10); + local_60 = *(ulong *)pMVar12; + local_58 = *(undefined8 *)(pMVar12 + 8); + local_48 = *(undefined8 *)(pMVar12 + 0x18); + local_40 = *(undefined8 *)(pMVar12 + 0x20); + local_38 = *(undefined8 *)(pMVar12 + 0x28); + local_30 = *(undefined8 *)(pMVar12 + 0x30); + local_28 = *(long *)(pMVar12 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(int *)(pMVar12 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar12 + 0x48); + local_8 = (*(undefined8 **)(pMVar12 + 0x48))[1]; + /* catch() { ... } // from try @ 003adb8c with catch @ 003adb50 + catch() { ... } // from try @ 003ae0d0 with catch @ 003adb50 + catch() { ... } // from try @ 003ae514 with catch @ 003adb50 + catch() { ... } // from try @ 003ae624 with catch @ 003adb50 */ + pcVar14 = (code *)(&PTR_FUN_004f76e0)[(int)((uint)local_60 & 7)]; + goto joined_r0x003adb5c; + } + local_60 = (ulong)uVar2; + Mat::copySize((Mat *)&local_60,pMVar12); + } + else { + _InputArray::getMat_((int)param_1); + } + pcVar14 = (code *)(&PTR_FUN_004f76e0)[(int)((uint)local_60 & 7)]; +joined_r0x003adb5c: + if (pcVar14 == (code *)0x0) { + local_c0 = pcVar14; + local_b8 = pcVar14; + pcVar11 = (char *)String::allocate((String *)&local_c0,9); + cVar3 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + /* try { // try from 003adb8c to 004adbab has its CatchHandler @ 003adb50 */ + *(undefined8 *)pcVar11 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar11[8] = cVar3; + error(-0xd7,(String *)&local_c0,"int cv::countNonZero(cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x53d); + String::deallocate((String *)&local_c0); + } + uStack_a8 = 0; + local_b0 = (String *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_a0,(Mat **)&local_b0,&local_c8,-1); + iVar7 = 0; + for (uVar9 = 0; uVar9 < local_80; uVar9 = uVar9 + 1) { + iVar8 = (*pcVar14)(local_c8,local_78); + iVar7 = iVar7 + iVar8; + NAryMatIterator::operator++(aNStack_a0); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar8 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar8 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar8 = 0; + puVar13 = local_20; + do { + *(undefined4 *)puVar13 = 0; + iVar8 = iVar8 + 1; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } while (iVar8 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + return iVar7; +} + + +================================================================== + +### FUNC 003adc20 (2352 bytes) name=mean + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::mean(cv::_InputArray const&, cv::_InputArray const&) */ + +double * __thiscall cv::mean(cv *this,_InputArray *param_1,_InputArray *param_2) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + int *piVar4; + uint uVar5; + uint uVar6; + uint uVar7; + char cVar8; + bool bVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + int iVar14; + uint uVar15; + int iVar16; + code *pcVar17; + long lVar18; + char *pcVar19; + double *pdVar20; + long lVar21; + long lVar22; + long lVar23; + double *pdVar24; + int *piVar25; + undefined4 *puVar26; + Mat *pMVar27; + uint uVar28; + long lVar29; + double *pdVar30; + double *in_x8; + uint uVar31; + int iVar32; + int iVar33; + ulong uVar34; + double *pdVar35; + uint uVar36; + double dVar37; + undefined1 auVar38 [16]; + undefined1 auVar39 [16]; + double dVar40; + ulong local_5b8; + Mat *local_5b0; + Mat *local_5a8; + undefined8 local_588; + undefined8 local_580; + uchar *local_578; + long local_570; + Mat *local_568; + Mat *local_560; + undefined8 local_558; + double local_550 [4]; + NAryMatIterator aNStack_530 [32]; + ulong local_510; + uint local_508; + uint local_4f0; + int local_4ec; + undefined4 local_4e8; + undefined4 local_4e4; + undefined8 local_4e0; + undefined8 local_4d8; + undefined8 local_4d0; + undefined8 local_4c8; + undefined8 local_4c0; + long local_4b8; + undefined4 *local_4b0; + undefined8 *local_4a8; + undefined8 local_4a0; + undefined8 local_498; + uint local_490; + int local_48c; + int local_488; + int local_484; + long local_480; + undefined8 local_478; + undefined8 local_470; + undefined8 local_468; + undefined8 local_460; + long local_458; + int *local_450; + undefined8 *local_448; + undefined8 local_440; + undefined8 local_438; + double *local_430; + long local_428; + double adStack_420 [132]; + + /* try { // try from 003adc20 to 004adc4b has its CatchHandler @ 003ae690 */ + iVar14 = _InputArray::kind((_InputArray *)this); + if (iVar14 == 0x10000) { + pMVar27 = *(Mat **)(this + 8); + local_4b0 = &local_4e8; + local_4a8 = &local_4a0; + local_4f0 = *(uint *)pMVar27; + /* try { // try from 003ae400 to 004ae403 has its CatchHandler @ 003ae698 */ + local_4ec = *(int *)(pMVar27 + 4); + local_4e8 = *(undefined4 *)(pMVar27 + 8); + /* try { // try from 003ae408 to 004ae40b has its CatchHandler @ 003ae6a0 */ + local_4e4 = *(undefined4 *)(pMVar27 + 0xc); + local_4e0 = *(undefined8 *)(pMVar27 + 0x10); + local_4d8 = *(undefined8 *)(pMVar27 + 0x18); + local_4d0 = *(undefined8 *)(pMVar27 + 0x20); + local_4c8 = *(undefined8 *)(pMVar27 + 0x28); + local_4c0 = *(undefined8 *)(pMVar27 + 0x30); + local_4b8 = *(long *)(pMVar27 + 0x38); + /* try { // try from 003ae42c to 004ae42f has its CatchHandler @ 003ae704 */ + local_498 = 0; + local_4a0 = 0; + if (local_4b8 != 0) { + piVar25 = (int *)(local_4b8 + 0x14); + do { + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar9) { + *piVar25 = *piVar25 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (2 < *(int *)(pMVar27 + 4)) { + local_4ec = 0; + Mat::copySize((Mat *)&local_4f0,pMVar27); + } + } + else { + _InputArray::getMat_((int)this); + } + local_5a8 = (Mat *)&local_4f0; + /* try { // try from 003adc84 to 004adc87 has its CatchHandler @ 003ae5f4 */ + iVar14 = _InputArray::kind(param_1); + /* try { // try from 003adc8c to 004adc8f has its CatchHandler @ 003ae690 */ + if (iVar14 == 0x10000) { + pMVar27 = *(Mat **)(param_1 + 8); + local_450 = &local_488; + local_448 = &local_440; + local_490 = *(uint *)pMVar27; + local_48c = *(int *)(pMVar27 + 4); + local_488 = *(int *)(pMVar27 + 8); + local_484 = *(int *)(pMVar27 + 0xc); + local_480 = *(long *)(pMVar27 + 0x10); + local_478 = *(undefined8 *)(pMVar27 + 0x18); + local_470 = *(undefined8 *)(pMVar27 + 0x20); + /* try { // try from 003ae35c to 004ae35f has its CatchHandler @ 003ae628 */ + local_468 = *(undefined8 *)(pMVar27 + 0x28); + local_460 = *(undefined8 *)(pMVar27 + 0x30); + local_458 = *(long *)(pMVar27 + 0x38); + local_438 = 0; + local_440 = 0; + if (local_458 != 0) { + piVar25 = (int *)(local_458 + 0x14); + do { + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar9) { + *piVar25 = *piVar25 + 1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + } + if (2 < *(int *)(pMVar27 + 4)) { + /* try { // try from 003ae514 to 004ae517 has its CatchHandler @ 003adb50 */ + local_48c = 0; + Mat::copySize((Mat *)&local_490,pMVar27); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_5b0 = (Mat *)&local_490; + if (local_480 != 0) { + if (local_48c < 3) { + lVar22 = (long)local_484 * (long)local_488; + } + else { + lVar22 = 1; + lVar18 = 0; + do { + piVar25 = local_450 + lVar18; + lVar18 = lVar18 + 1; + lVar22 = lVar22 * *piVar25; + } while ((int)lVar18 < local_48c); + } + /* try { // try from 003adcd4 to 004add57 has its CatchHandler @ 003ae698 */ + if ((lVar22 != 0) && ((local_490 & 0xfff) != 0)) { + local_588 = 0; + local_580 = 0; + pcVar19 = (char *)String::allocate((String *)&local_588,0x24); + uVar13 = s_mask_empty______mask_type______C_004734c0._24_8_; + uVar12 = s_mask_empty______mask_type______C_004734c0._16_8_; + uVar11 = s_mask_empty______mask_type______C_004734c0._8_8_; + uVar10 = s_mask_empty______mask_type______C_004734c0._0_8_; + *(undefined4 *)(pcVar19 + 0x20) = s_mask_empty______mask_type______C_004734c0._32_4_; + *(undefined8 *)pcVar19 = uVar10; + *(undefined8 *)(pcVar19 + 8) = uVar11; + *(undefined8 *)(pcVar19 + 0x10) = uVar12; + *(undefined8 *)(pcVar19 + 0x18) = uVar13; + error(-0xd7,(String *)&local_588,"cv::Scalar cv::mean(cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x54d); + String::deallocate((String *)&local_588); + /* try { // try from 003ae504 to 004ae507 has its CatchHandler @ 003ae628 */ + } + } + uVar7 = local_4f0 >> 3 & 0x1ff; + uVar5 = local_4f0 & 7; + uVar1 = uVar7 + 1; + pcVar17 = (code *)(&PTR_FUN_004f7720)[(int)uVar5]; + if ((4 < uVar1) || (pcVar17 == (code *)0x0)) { + local_430 = (double *)0x0; + local_428 = 0; + pcVar19 = (char *)String::allocate((String *)&local_430,0x14); + uVar11 = s_cn_<__4_&&_func____0_00473460._8_8_; + uVar10 = s_cn_<__4_&&_func____0_00473460._0_8_; + *(undefined4 *)(pcVar19 + 0x10) = s_cn_<__4_&&_func____0_00473460._16_4_; + *(undefined8 *)pcVar19 = uVar10; + *(undefined8 *)(pcVar19 + 8) = uVar11; + error(-0xd7,(String *)&local_430,"cv::Scalar cv::mean(cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x5ab); + String::deallocate((String *)&local_430); + } + local_568 = local_5a8; + local_558 = 0; + local_560 = local_5b0; + NAryMatIterator::NAryMatIterator(aNStack_530,&local_568,&local_578,-1); + local_550[1] = 0.0; + local_550[0] = 0.0; + local_430 = adStack_420; + local_550[3] = 0.0; + local_550[2] = 0.0; + local_428 = 0x108; + if (uVar5 < 4) { + uVar15 = 0x800000; + if (1 < uVar5) { + uVar15 = 0x8000; + } + uVar31 = uVar15; + if ((int)local_508 < (int)uVar15) { + uVar31 = local_508; + } + if (0x108 < uVar1) { + local_430 = operator_new__((long)(int)uVar1 << 2); + } + pdVar35 = local_430; + local_428 = (long)(int)uVar1; + memset(local_430,0,((long)(int)uVar7 + 1) * 4); + if (local_4ec < 1) { + lVar18 = 0; + } + else { + lVar18 = local_4a8[(long)local_4ec + -1]; + } + } + else { + uVar15 = (uint)(uVar5 < 4); + lVar18 = 0; + pdVar35 = local_550; + uVar31 = local_508; + } + uVar2 = (uVar7 - 3 >> 2) + 1; + local_5b8 = 0; + uVar36 = uVar2 * 4; + uVar34 = 0; + /* try { // try from 003adef8 to 004adf37 has its CatchHandler @ 003ae6a0 */ + iVar14 = 0; + uVar6 = uVar36; + if (uVar7 < 3) { + uVar6 = 0; + } + lVar22 = (long)(int)uVar6; + lVar23 = (long)(int)(uVar6 + 1); + lVar29 = (long)(int)(uVar6 + 2); + piVar25 = (int *)((long)pdVar35 + lVar22 * 4); + piVar3 = (int *)((long)pdVar35 + lVar23 * 4); + piVar4 = (int *)((long)pdVar35 + lVar29 * 4); + if (local_510 != 0) { + do { + if (0 < (int)local_508) { + iVar33 = 0; + iVar32 = 0; + do { + uVar7 = uVar31; + if ((int)(iVar33 + local_508) < (int)uVar31) { + uVar7 = iVar33 + local_508; + } + iVar16 = (*pcVar17)(local_578,local_570,pdVar35,uVar7,uVar1); + uVar34 = uVar34 + (long)iVar16; + /* try { // try from 003adfa8 to 004adfab has its CatchHandler @ 003ae6e8 */ + iVar14 = iVar14 + iVar16; + if ((uVar5 < 4) && + (((int)uVar15 <= (int)(iVar14 + uVar31) || + ((local_510 <= local_5b8 + 1 && ((int)local_508 <= (int)(iVar32 + uVar7))))))) { + if (uVar1 < 5 || + local_550 < (double *)((long)pdVar35 + (ulong)uVar1 * 4) && + pdVar35 < local_550 + uVar1) { + lVar21 = 0; + do { + local_550[lVar21] = local_550[lVar21] + (double)*(int *)((long)pdVar35 + lVar21 * 4) + ; + *(int *)((long)pdVar35 + lVar21 * 4) = 0; + lVar21 = lVar21 + 1; + } while ((int)lVar21 < (int)uVar1); + } + else { + pdVar20 = local_550 + 2; + uVar28 = 0; + pdVar24 = local_550; + pdVar30 = pdVar35; + do { + uVar28 = uVar28 + 1; + dVar40 = pdVar20[1]; + dVar37 = *pdVar20; + auVar39._0_8_ = (long)*(int *)pdVar30; + auVar39._8_8_ = (long)*(int *)((long)pdVar30 + 4); + /* try { // try from 003ae01c to 004ae01f has its CatchHandler @ 003ae704 */ + auVar38._0_8_ = (long)*(int *)(pdVar30 + 1); + auVar38._8_8_ = (long)*(int *)((long)pdVar30 + 0xc); + auVar39 = NEON_scvtf(auVar39,8); + auVar38 = NEON_scvtf(auVar38,8); + pdVar24[1] = pdVar24[1] + auVar39._8_8_; + *pdVar24 = *pdVar24 + auVar39._0_8_; + pdVar24 = pdVar24 + 4; + pdVar20[1] = auVar38._8_8_ + dVar40; + *pdVar20 = auVar38._0_8_ + dVar37; + pdVar20 = pdVar20 + 4; + pdVar30[1] = 0.0; + *pdVar30 = 0.0; + pdVar30 = pdVar30 + 2; + } while (uVar28 < uVar2); + if (uVar1 != uVar36) { + local_550[lVar22] = local_550[lVar22] + (double)*piVar25; + *piVar25 = 0; + if ((int)(uVar6 + 1) < (int)uVar1) { + /* try { // try from 003ae0a4 to 004ae0a7 has its CatchHandler @ 003ae690 */ + local_550[lVar23] = local_550[lVar23] + (double)*piVar3; + *piVar3 = 0; + if ((int)(uVar6 + 2) < (int)uVar1) { + local_550[lVar29] = local_550[lVar29] + (double)*piVar4; + *piVar4 = 0; + } + } + } + } + /* try { // try from 003ae0d0 to 004ae123 has its CatchHandler @ 003adb50 */ + iVar14 = 0; + } + local_578 = local_578 + (int)uVar7 * lVar18; + if (local_570 != 0) { + local_570 = local_570 + (int)uVar7; + } + iVar32 = iVar32 + uVar31; + iVar33 = iVar33 - uVar31; + } while (iVar32 < (int)local_508); + } + local_5b8 = local_5b8 + 1; + NAryMatIterator::operator++(aNStack_530); + } while (local_5b8 < local_510); + } + dVar37 = 0.0; + if (uVar34 != 0) { + dVar37 = 1.0 / (double)uVar34; + } + in_x8[1] = dVar37 * local_550[1]; + *in_x8 = dVar37 * local_550[0]; + in_x8[3] = dVar37 * local_550[3]; + in_x8[2] = dVar37 * local_550[2]; + if ((local_430 != adStack_420) && (local_430 != (double *)0x0)) { + operator_delete__(local_430); + } + if (local_458 != 0) { + piVar25 = (int *)(local_458 + 0x14); + do { + iVar14 = *piVar25; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar9) { + *piVar25 = iVar14 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar14 == 1) { + Mat::deallocate(local_5b0); + } + } + local_458 = 0; + local_480 = 0; + local_468 = 0; + local_470 = 0; + local_478 = 0; + if (0 < local_48c) { + iVar14 = 0; + piVar25 = local_450; + do { + iVar14 = iVar14 + 1; + *piVar25 = 0; + piVar25 = piVar25 + 1; + } while (iVar14 < local_48c); + } + if (local_448 != &local_440) { + fastFree(local_448); + } + if (local_4b8 != 0) { + piVar25 = (int *)(local_4b8 + 0x14); + do { + iVar14 = *piVar25; + cVar8 = '\x01'; + bVar9 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar9) { + *piVar25 = iVar14 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar14 == 1) { + Mat::deallocate(local_5a8); + } + } + local_4b8 = 0; + local_4e0 = 0; + local_4c8 = 0; + /* try { // try from 003ae258 to 004ae25b has its CatchHandler @ 003ae704 */ + local_4d0 = 0; + local_4d8 = 0; + if (0 < local_4ec) { + /* try { // try from 003ae264 to 004ae267 has its CatchHandler @ 003ae6e8 */ + iVar14 = 0; + puVar26 = local_4b0; + do { + /* try { // try from 003ae270 to 004ae273 has its CatchHandler @ 003ae690 */ + iVar14 = iVar14 + 1; + *puVar26 = 0; + puVar26 = puVar26 + 1; + } while (iVar14 < local_4ec); + } + /* try { // try from 003ae294 to 004ae2bb has its CatchHandler @ 003ae698 */ + if (local_4a8 != &local_4a0) { + fastFree(local_4a8); + } + return in_x8; +} + + +================================================================== + +### FUNC 003ae5e4 (4516 bytes) name=meanStdDev + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::meanStdDev(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, + cv::_InputArray const&) */ + +void cv::meanStdDev(_InputArray *param_1,_OutputArray *param_2,_OutputArray *param_3, + _InputArray *param_4) + +{ + uint uVar1; + uint uVar2; + double *pdVar3; + uint uVar4; + uint uVar5; + int iVar6; + bool bVar7; + bool bVar8; + double *pdVar9; + uint uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined2 uVar15; + char cVar16; + int iVar17; + int iVar18; + int iVar19; + uint uVar20; + long lVar21; + code *pcVar22; + double *pdVar23; + double *pdVar24; + ulong uVar25; + void *__dest; + int *piVar26; + long lVar27; + char *pcVar28; + double *pdVar29; + undefined4 *puVar30; + undefined8 *puVar31; + Mat *pMVar32; + uint uVar33; + uint uVar34; + double *pdVar35; + ulong uVar36; + double *pdVar37; + int *piVar38; + int *piVar39; + uint uVar40; + int iVar41; + long lVar42; + int *piVar43; + int iVar44; + int iVar45; + ulong uVar46; + int iVar47; + int iVar48; + double dVar49; + undefined1 auVar50 [16]; + undefined1 auVar51 [16]; + double dVar52; + undefined1 auVar53 [16]; + undefined1 auVar54 [16]; + double dVar55; + int local_6a4; + ulong local_678; + Mat *local_638; + Mat *local_630; + uchar *local_600; + long local_5f8; + undefined8 local_5f0; + undefined8 local_5e8; + Mat *local_5e0; + Mat *local_5d8; + undefined8 local_5d0; + undefined8 local_5c8; + Mat *local_5c0; + undefined4 local_5b8; + undefined4 local_5b4; + NAryMatIterator aNStack_5b0 [32]; + ulong local_590; + int local_588; + uint local_570; + int local_56c; + undefined4 local_568; + undefined4 local_564; + undefined8 local_560; + undefined8 local_558; + undefined8 local_550; + undefined8 local_548; + undefined8 local_540; + long local_538; + undefined4 *local_530; + undefined8 *local_528; + undefined8 local_520; + undefined8 local_518; + uint local_510; + int local_50c; + int local_508; + int local_504; + long local_500; + undefined8 local_4f8; + undefined8 local_4f0; + undefined8 local_4e8; + undefined8 local_4e0; + long local_4d8; + int *local_4d0; + undefined8 *local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + double *local_4a0; + undefined8 local_498; + undefined8 local_490; + undefined8 local_488; + undefined8 local_480; + long local_478; + undefined8 *local_470; + undefined8 *local_468; + undefined8 local_460; + undefined8 local_458; + double *local_450; + long local_448; + double adStack_440 [136]; + + /* catch() { ... } // from try @ 003adc84 with catch @ 003ae5f4 */ + /* try { // try from 003ae624 to 004ae627 has its CatchHandler @ 003adb50 */ + iVar17 = _InputArray::kind(param_1); + /* catch() { ... } // from try @ 003ae35c with catch @ 003ae628 + catch() { ... } // from try @ 003ae504 with catch @ 003ae628 */ + if (iVar17 == 0x10000) { + pMVar32 = *(Mat **)(param_1 + 8); + local_530 = &local_568; + local_528 = &local_520; + local_570 = *(uint *)pMVar32; + local_56c = *(int *)(pMVar32 + 4); + local_568 = *(undefined4 *)(pMVar32 + 8); + local_564 = *(undefined4 *)(pMVar32 + 0xc); + local_560 = *(undefined8 *)(pMVar32 + 0x10); + local_558 = *(undefined8 *)(pMVar32 + 0x18); + local_550 = *(undefined8 *)(pMVar32 + 0x20); + local_548 = *(undefined8 *)(pMVar32 + 0x28); + local_540 = *(undefined8 *)(pMVar32 + 0x30); + local_538 = *(long *)(pMVar32 + 0x38); + local_518 = 0; + local_520 = 0; + if (local_538 != 0) { + piVar26 = (int *)(local_538 + 0x14); + do { + cVar16 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar7) { + *piVar26 = *piVar26 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar32 + 4)) { + local_56c = 0; + Mat::copySize((Mat *)&local_570,pMVar32); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_630 = (Mat *)&local_570; + iVar17 = _InputArray::kind(param_4); + if (iVar17 == 0x10000) { + pMVar32 = *(Mat **)(param_4 + 8); + local_4d0 = &local_508; + local_4c8 = &local_4c0; + local_510 = *(uint *)pMVar32; + local_50c = *(int *)(pMVar32 + 4); + local_508 = *(int *)(pMVar32 + 8); + local_504 = *(int *)(pMVar32 + 0xc); + local_500 = *(long *)(pMVar32 + 0x10); + local_4f8 = *(undefined8 *)(pMVar32 + 0x18); + local_4f0 = *(undefined8 *)(pMVar32 + 0x20); + local_4e8 = *(undefined8 *)(pMVar32 + 0x28); + local_4e0 = *(undefined8 *)(pMVar32 + 0x30); + local_4d8 = *(long *)(pMVar32 + 0x38); + local_4b8 = 0; + local_4c0 = 0; + if (local_4d8 != 0) { + piVar26 = (int *)(local_4d8 + 0x14); + do { + cVar16 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar7) { + *piVar26 = *piVar26 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (2 < *(int *)(pMVar32 + 4)) { + local_50c = 0; + Mat::copySize((Mat *)&local_510,pMVar32); + } + } + else { + /* catch() { ... } // from try @ 003ae484 with catch @ 003ae66c */ + _InputArray::getMat_((int)param_4); + } + local_638 = (Mat *)&local_510; + if (local_500 != 0) { + if (local_50c < 3) { + /* catch() { ... } // from try @ 003adbdc with catch @ 003ae690 + catch() { ... } // from try @ 003adc20 with catch @ 003ae690 + catch() { ... } // from try @ 003adc8c with catch @ 003ae690 + catch() { ... } // from try @ 003ae0a4 with catch @ 003ae690 + catch() { ... } // from try @ 003ae270 with catch @ 003ae690 */ + lVar21 = (long)local_504 * (long)local_508; + } + else { + lVar42 = 0; + lVar21 = 1; + do { + piVar26 = local_4d0 + lVar42; + lVar42 = lVar42 + 1; + lVar21 = lVar21 * *piVar26; + } while ((int)lVar42 < local_50c); + } + /* catch() { ... } // from try @ 003adcd4 with catch @ 003ae698 + catch() { ... } // from try @ 003ae294 with catch @ 003ae698 + catch() { ... } // from try @ 003ae400 with catch @ 003ae698 + catch() { ... } // from try @ 003ae5d0 with catch @ 003ae698 */ + /* catch() { ... } // from try @ 003adef8 with catch @ 003ae6a0 + catch() { ... } // from try @ 003ae408 with catch @ 003ae6a0 */ + if ((lVar21 != 0) && ((local_510 & 0xfff) != 0)) { + local_5c8 = 0; + local_5c0 = (Mat *)0x0; + pcVar28 = (char *)String::allocate((String *)&local_5c8,0x26); + uVar15 = s_mask_empty______mask_type______C_004734e8._36_2_; + uVar14 = s_mask_empty______mask_type______C_004734e8._24_8_; + uVar13 = s_mask_empty______mask_type______C_004734e8._16_8_; + uVar12 = s_mask_empty______mask_type______C_004734e8._8_8_; + uVar11 = s_mask_empty______mask_type______C_004734e8._0_8_; + *(undefined4 *)(pcVar28 + 0x20) = s_mask_empty______mask_type______C_004734e8._32_4_; + *(undefined2 *)(pcVar28 + 0x24) = uVar15; + *(undefined8 *)pcVar28 = uVar11; + *(undefined8 *)(pcVar28 + 8) = uVar12; + *(undefined8 *)(pcVar28 + 0x10) = uVar13; + *(undefined8 *)(pcVar28 + 0x18) = uVar14; + error(-0xd7,(String *)&local_5c8, + "void cv::meanStdDev(cv::InputArray, cv::OutputArray, cv::OutputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x65b); + String::deallocate((String *)&local_5c8); + } + } + uVar4 = local_570 & 7; + uVar10 = local_570 >> 3 & 0x1ff; + uVar1 = uVar10 + 1; + uVar46 = (ulong)uVar1; + pcVar22 = (code *)(&PTR_FUN_004f7860)[(int)uVar4]; + if (pcVar22 == (code *)0x0) { + local_4b0 = pcVar22; + local_4a8 = pcVar22; + pcVar28 = (char *)String::allocate((String *)&local_4b0,9); + cVar16 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar28 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar28[8] = cVar16; + error(-0xd7,(String *)&local_4b0, + "void cv::meanStdDev(cv::InputArray, cv::OutputArray, cv::OutputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x6d2); + String::deallocate((String *)&local_4b0); + } + /* catch() { ... } // from try @ 003adfa8 with catch @ 003ae6e8 + catch() { ... } // from try @ 003ae264 with catch @ 003ae6e8 */ + /* catch() { ... } // from try @ 003adc18 with catch @ 003ae6f0 */ + local_5e0 = local_630; + /* catch() { ... } // from try @ 003ae01c with catch @ 003ae704 + catch() { ... } // from try @ 003ae258 with catch @ 003ae704 + catch() { ... } // from try @ 003ae42c with catch @ 003ae704 + catch() { ... } // from try @ 003ae48c with catch @ 003ae704 */ + local_5d0 = 0; + local_5d8 = local_638; + NAryMatIterator::NAryMatIterator(aNStack_5b0,&local_5e0,&local_600,-1); + /* catch() { ... } // from try @ 003ae760 with catch @ 003ae720 + catch() { ... } // from try @ 003aef30 with catch @ 003ae720 + catch() { ... } // from try @ 003aef8c with catch @ 003ae720 + catch() { ... } // from try @ 003af10c with catch @ 003ae720 */ + pdVar23 = adStack_440; + local_450 = pdVar23; + lVar42 = (long)(int)(uVar1 * 4); + local_448 = 0x88; + if (uVar1 == 0x22 || uVar1 * 4 < 0x88) { + local_448 = lVar42; + } + else { + pdVar23 = operator_new__(lVar42 << 3); + /* try { // try from 003ae760 to 004ae763 has its CatchHandler @ 003ae720 */ + } + pdVar3 = pdVar23 + uVar46; + /* try { // try from 003ae77c to 004ae77f has its CatchHandler @ 003af1c0 */ + lVar21 = (long)(int)uVar10 + 1; + if ((pdVar3 < pdVar23 + 2) || (uVar1 < 0x10)) { + lVar27 = 0; + do { + pdVar3[lVar27] = 0.0; + pdVar23[lVar27] = 0.0; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar1); + } + else { + uVar34 = (uint)((ulong)pdVar3 >> 3) & 1; + uVar5 = uVar1; + if (uVar34 < uVar1) { + uVar5 = uVar34; + } + if (uVar5 != 0) { + *pdVar3 = 0.0; + *pdVar23 = 0.0; + } + uVar34 = ((uVar1 - uVar5) - 2 >> 1) + 1; + uVar40 = 0; + iVar17 = uVar34 * 2; + pdVar24 = pdVar23 + uVar5; + pdVar37 = pdVar23 + lVar21 + (ulong)uVar5; + do { + pdVar37[1] = 0.0; + *pdVar37 = 0.0; + uVar40 = uVar40 + 1; + pdVar24[1] = 0.0; + *pdVar24 = 0.0; + pdVar24 = pdVar24 + 2; + pdVar37 = pdVar37 + 2; + } while (uVar40 < uVar34); + uVar34 = (uint)(uVar5 != 0) + iVar17; + if (uVar1 - uVar5 != iVar17) { + uVar25 = -(ulong)(uVar34 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar34 << 3; + *(undefined8 *)((long)pdVar3 + uVar25) = 0; + *(undefined8 *)((long)pdVar23 + uVar25) = 0; + } + } + iVar17 = local_588; + pdVar24 = pdVar3; + if (uVar4 < 4) { + /* try { // try from 003ae834 to 004ae837 has its CatchHandler @ 003af110 */ + lVar27 = (long)(int)uVar10 + 2; + if (0x8000 < local_588) { + iVar17 = 0x8000; + } + pdVar37 = pdVar3 + uVar46; + if (uVar4 < 2) { + pdVar24 = (double *)((long)pdVar37 + lVar42); + } + if ((pdVar23 + lVar27 * 2 + -2 < pdVar24 + 2 && pdVar24 < pdVar23 + lVar27 * 2) || (uVar1 < 0xd) + ) { + lVar27 = 0; + do { + *(int *)((long)pdVar24 + lVar27 * 4) = 0; + *(int *)((long)pdVar37 + lVar27 * 4) = 0; + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar1); + } + else { + uVar5 = -((uint)((ulong)pdVar24 >> 2) & 3) & 3; + uVar25 = (ulong)uVar5; + if (uVar1 < uVar5) { + uVar25 = uVar46; + } + iVar18 = (int)uVar25; + uVar36 = uVar25; + if (iVar18 != 0) { + *(int *)pdVar24 = 0; + *(int *)(pdVar3 + uVar46) = 0; + if (iVar18 != 1) { + *(int *)((long)pdVar24 + 4) = 0; + *(int *)((long)pdVar37 + 4) = 0; + if (iVar18 == 3) { + *(int *)(pdVar24 + 1) = 0; + *(int *)(pdVar37 + 1) = 0; + } + else { + uVar36 = 2; + } + } + } + uVar5 = ((uVar1 - iVar18) - 4 >> 2) + 1; + uVar34 = 0; + iVar41 = uVar5 * 4; + piVar26 = (int *)((long)pdVar24 + uVar25 * 4); + piVar43 = (int *)((long)pdVar23 + (lVar42 + uVar25) * 4); + do { + piVar26[2] = 0; + piVar26[3] = 0; + piVar26[0] = 0; + piVar26[1] = 0; + uVar34 = uVar34 + 1; + piVar43[2] = 0; + piVar43[3] = 0; + piVar43[0] = 0; + piVar43[1] = 0; + piVar26 = piVar26 + 4; + piVar43 = piVar43 + 4; + } while (uVar34 < uVar5); + uVar5 = (int)uVar36 + iVar41; + if (uVar1 - iVar18 != iVar41) { + uVar25 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + *(undefined4 *)((long)pdVar24 + uVar25) = 0; + *(undefined4 *)((long)pdVar37 + uVar25) = 0; + if ((int)(uVar5 + 1) < (int)uVar1) { + *(undefined4 *)((long)pdVar24 + uVar25 + 4) = 0; + *(undefined4 *)((long)pdVar37 + uVar25 + 4) = 0; + if ((int)(uVar5 + 2) < (int)uVar1) { + *(undefined4 *)((long)pdVar24 + uVar25 + 8) = 0; + *(undefined4 *)((long)pdVar37 + uVar25 + 8) = 0; + } + } + } + } + if (local_56c < 1) { + local_6a4 = 0x8000; + lVar27 = 0; + } + else { + local_6a4 = 0x8000; + lVar27 = local_528[(long)local_56c + -1]; + } + } + else { + lVar27 = 0; + local_6a4 = 0; + pdVar37 = pdVar23; + } + uVar5 = (uint)((ulong)pdVar23 >> 3) & 1; + /* try { // try from 003ae91c to 004ae97f has its CatchHandler @ 003af1b8 */ + if (uVar1 < uVar5) { + uVar5 = uVar1; + } + uVar34 = (uint)((ulong)(pdVar23 + lVar21) >> 3) & 1; + if (uVar1 < uVar34) { + uVar34 = uVar1; + } + uVar40 = ((uVar1 - uVar5) - 4 >> 2) + 1; + iVar47 = uVar40 * 4; + /* try { // try from 003ae9b8 to 004ae9bb has its CatchHandler @ 003af16c */ + /* try { // try from 003ae9c0 to 004ae9c3 has its CatchHandler @ 003af1b8 */ + uVar2 = ((uVar1 - uVar34) - 4 >> 2) + 1; + piVar26 = (int *)((long)pdVar24 + (ulong)uVar34 * 4); + local_678 = 0; + piVar43 = (int *)((long)pdVar37 + (ulong)uVar5 * 4); + iVar48 = uVar2 * 4; + iVar18 = 0; + iVar41 = 0; + local_450 = pdVar23; + local_448 = lVar42; + if (local_590 != 0) { + do { + /* try { // try from 003aea34 to 004aea37 has its CatchHandler @ 003af224 */ + if (0 < local_588) { + iVar45 = 0; + iVar44 = 0; + do { + iVar6 = iVar17; + if (iVar45 + local_588 < iVar17) { + iVar6 = iVar45 + local_588; + } + iVar19 = (*pcVar22)(local_600,local_5f8,pdVar37,pdVar24,iVar6,uVar46); + iVar18 = iVar18 + iVar19; + iVar41 = iVar41 + iVar19; + /* try { // try from 003aeaa8 to 004aeb07 has its CatchHandler @ 003af110 */ + if ((uVar4 < 4) && + ((local_6a4 <= iVar18 + iVar17 || + ((local_590 <= local_678 + 1 && (local_588 <= iVar44 + iVar6)))))) { + if (uVar1 < 8 || + pdVar23 < (double *)((long)pdVar37 + uVar46 * 4) && pdVar37 < pdVar23 + uVar46) { + lVar42 = 0; + do { + pdVar23[lVar42] = pdVar23[lVar42] + (double)*(int *)((long)pdVar37 + lVar42 * 4); + *(int *)((long)pdVar37 + lVar42 * 4) = 0; + lVar42 = lVar42 + 1; + /* try { // try from 003af02c to 004af02f has its CatchHandler @ 003af224 */ + } while ((int)lVar42 < (int)uVar1); + } + else { + if (uVar5 != 0) { + *pdVar23 = *pdVar23 + (double)*(int *)pdVar37; + *(int *)pdVar37 = 0; + } + uVar20 = (uint)(uVar5 != 0); + if (2 < uVar10 - uVar5) { + uVar33 = 0; + pdVar29 = pdVar23 + uVar5; + pdVar35 = pdVar23 + uVar5; + piVar38 = piVar43; + piVar39 = piVar43; + do { + pdVar9 = pdVar29 + 1; + dVar55 = *pdVar29; + dVar49 = pdVar29[3]; + dVar52 = pdVar29[2]; + uVar33 = uVar33 + 1; + pdVar29 = pdVar29 + 4; + auVar53._0_8_ = (long)*piVar38; + auVar53._8_8_ = (long)piVar38[1]; + auVar50._0_8_ = (long)piVar38[2]; + auVar50._8_8_ = (long)piVar38[3]; + auVar53 = NEON_scvtf(auVar53,8); + auVar50 = NEON_scvtf(auVar50,8); + pdVar35[1] = *pdVar9 + auVar53._8_8_; + *pdVar35 = dVar55 + auVar53._0_8_; + pdVar35[3] = auVar50._8_8_ + dVar49; + pdVar35[2] = auVar50._0_8_ + dVar52; + piVar39[2] = 0; + piVar39[3] = 0; + piVar39[0] = 0; + piVar39[1] = 0; + pdVar35 = pdVar35 + 4; + piVar38 = piVar38 + 4; + piVar39 = piVar39 + 4; + /* try { // try from 003aeb68 to 004aeb6b has its CatchHandler @ 003af140 */ + } while (uVar33 < uVar40); + uVar20 = uVar20 + iVar47; + if (uVar1 - uVar5 == iVar47) goto LAB_003aec04; + } + lVar42 = (long)(int)uVar20; + /* try { // try from 003aeb9c to 004aeb9f has its CatchHandler @ 003af118 */ + pdVar23[lVar42] = pdVar23[lVar42] + (double)*(int *)((long)pdVar37 + lVar42 * 4); + *(int *)((long)pdVar37 + lVar42 * 4) = 0; + if ((int)(uVar20 + 1) < (int)uVar1) { + lVar42 = (long)(int)(uVar20 + 1); + pdVar23[lVar42] = pdVar23[lVar42] + (double)*(int *)((long)pdVar37 + lVar42 * 4); + *(int *)((long)pdVar37 + lVar42 * 4) = 0; + if ((int)(uVar20 + 2) < (int)uVar1) { + lVar42 = (long)(int)(uVar20 + 2); + pdVar23[lVar42] = pdVar23[lVar42] + (double)*(int *)((long)pdVar37 + lVar42 * 4); + *(int *)((long)pdVar37 + lVar42 * 4) = 0; + } + } + } +LAB_003aec04: + if (uVar4 < 2) { + /* try { // try from 003aec10 to 004aec13 has its CatchHandler @ 003af0a4 */ + if (uVar1 < 8 || + pdVar23 + lVar21 < (double *)((long)pdVar24 + uVar46 * 4) && + pdVar24 < pdVar23 + uVar46 + lVar21) { + lVar42 = 0; + do { + pdVar3[lVar42] = pdVar3[lVar42] + (double)*(int *)((long)pdVar24 + lVar42 * 4); + *(int *)((long)pdVar24 + lVar42 * 4) = 0; + lVar42 = lVar42 + 1; + } while ((int)lVar42 < (int)uVar1); + } + else { + if (uVar34 != 0) { + *pdVar3 = *pdVar3 + (double)*(int *)pdVar24; + *(int *)pdVar24 = 0; + } + uVar20 = (uint)(uVar34 != 0); + if (2 < uVar10 - uVar34) { + uVar33 = 0; + pdVar29 = pdVar23 + (ulong)uVar34 + lVar21; + pdVar35 = pdVar23 + (ulong)uVar34 + lVar21; + piVar38 = piVar26; + piVar39 = piVar26; + do { + pdVar9 = pdVar29 + 1; + dVar55 = *pdVar29; + dVar49 = pdVar29[3]; + dVar52 = pdVar29[2]; + uVar33 = uVar33 + 1; + pdVar29 = pdVar29 + 4; + auVar54._0_8_ = (long)*piVar39; + auVar54._8_8_ = (long)piVar39[1]; + /* try { // try from 003aec84 to 004aec87 has its CatchHandler @ 003af1d8 */ + auVar51._0_8_ = (long)piVar39[2]; + auVar51._8_8_ = (long)piVar39[3]; + auVar53 = NEON_scvtf(auVar54,8); + auVar50 = NEON_scvtf(auVar51,8); + pdVar35[1] = *pdVar9 + auVar53._8_8_; + *pdVar35 = dVar55 + auVar53._0_8_; + pdVar35[3] = auVar50._8_8_ + dVar49; + pdVar35[2] = auVar50._0_8_ + dVar52; + piVar38[2] = 0; + piVar38[3] = 0; + piVar38[0] = 0; + piVar38[1] = 0; + pdVar35 = pdVar35 + 4; + piVar38 = piVar38 + 4; + piVar39 = piVar39 + 4; + } while (uVar33 < uVar2); + uVar20 = uVar20 + iVar48; + if (iVar48 == uVar1 - uVar34) goto LAB_003aed50; + } + lVar42 = (long)(int)uVar20; + pdVar3[lVar42] = pdVar3[lVar42] + (double)*(int *)((long)pdVar24 + lVar42 * 4); + *(int *)((long)pdVar24 + lVar42 * 4) = 0; + if ((int)(uVar20 + 1) < (int)uVar1) { + /* try { // try from 003aecf8 to 004aecfb has its CatchHandler @ 003af21c */ + lVar42 = (long)(int)(uVar20 + 1); + pdVar3[lVar42] = pdVar3[lVar42] + (double)*(int *)((long)pdVar24 + lVar42 * 4); + *(int *)((long)pdVar24 + lVar42 * 4) = 0; + if ((int)(uVar20 + 2) < (int)uVar1) { + lVar42 = (long)(int)(uVar20 + 2); + pdVar3[lVar42] = pdVar3[lVar42] + (double)*(int *)((long)pdVar24 + lVar42 * 4); + *(int *)((long)pdVar24 + lVar42 * 4) = 0; + } + } + } + } +LAB_003aed50: + iVar18 = 0; + } + local_600 = local_600 + iVar6 * lVar27; + /* try { // try from 003aed6c to 004aed93 has its CatchHandler @ 003af110 */ + if (local_5f8 != 0) { + local_5f8 = local_5f8 + iVar6; + } + iVar44 = iVar44 + iVar17; + iVar45 = iVar45 - iVar17; + } while (iVar44 < local_588); + } + local_678 = local_678 + 1; + NAryMatIterator::operator++(aNStack_5b0); + } while (local_678 < local_590); + } + dVar55 = 0.0; + if (iVar41 != 0) { + /* try { // try from 003aedcc to 004aedcf has its CatchHandler @ 003af1c8 */ + dVar55 = 1.0 / (double)iVar41; + } + /* try { // try from 003aedd4 to 004aedd7 has its CatchHandler @ 003af110 */ + lVar42 = 0; + do { + while( true ) { + dVar52 = dVar55 * pdVar23[lVar42]; + pdVar23[lVar42] = dVar52; + dVar52 = dVar55 * pdVar3[lVar42] - dVar52 * dVar52; + if (0.0 <= dVar52) break; + dVar49 = 0.0; +LAB_003aede8: + pdVar3[lVar42] = dVar49; + lVar42 = lVar42 + 1; + if ((int)uVar1 <= (int)lVar42) goto LAB_003aee4c; + } + dVar49 = SQRT(dVar52); + if (!NAN(dVar49)) goto LAB_003aede8; + dVar52 = ::sqrt(dVar52); + pdVar3[lVar42] = dVar52; + lVar42 = lVar42 + 1; + /* try { // try from 003aee48 to 004aee4b has its CatchHandler @ 003af164 */ + } while ((int)lVar42 < (int)uVar1); +LAB_003aee4c: + bVar7 = false; + do { + local_5c0 = *(Mat **)(param_2 + 8); + local_5b8 = *(undefined4 *)(param_2 + 0x10); + local_5b4 = *(undefined4 *)(param_2 + 0x14); + local_5c8 = CONCAT44(local_5c8._4_4_,*(undefined4 *)param_2); + cVar16 = _OutputArray::needed((_OutputArray *)&local_5c8); + if (cVar16 != '\0') { + cVar16 = _OutputArray::fixedSize((_OutputArray *)&local_5c8); + if (cVar16 == '\0') { + _OutputArray::create((_OutputArray *)&local_5c8,uVar1,1,6,-1,true,0); + } + /* try { // try from 003af084 to 004af087 has its CatchHandler @ 003af21c */ + iVar17 = _InputArray::kind((_InputArray *)&local_5c8); + if (iVar17 == 0x10000) { + uVar4 = *(uint *)local_5c0; + local_4b0 = *(code **)local_5c0; + local_4a0 = *(double **)(local_5c0 + 0x10); + local_4a8 = *(code **)(local_5c0 + 8); + local_498 = *(undefined8 *)(local_5c0 + 0x18); + local_490 = *(undefined8 *)(local_5c0 + 0x20); + local_488 = *(undefined8 *)(local_5c0 + 0x28); + local_480 = *(undefined8 *)(local_5c0 + 0x30); + local_478 = *(long *)(local_5c0 + 0x38); + local_470 = &local_4a8; + local_468 = &local_460; + local_458 = 0; + local_460 = 0; + if (local_478 != 0) { + piVar26 = (int *)(local_478 + 0x14); + do { + cVar16 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar8) { + *piVar26 = *piVar26 + 1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + } + if (*(int *)(local_5c0 + 4) < 3) { + local_460 = **(undefined8 **)(local_5c0 + 0x48); + local_458 = (*(undefined8 **)(local_5c0 + 0x48))[1]; + } + else { + local_4b0 = (code *)(ulong)uVar4; + Mat::copySize((Mat *)&local_4b0,local_5c0); + } + } + else { + /* try { // try from 003af090 to 004af093 has its CatchHandler @ 003af1d8 */ + /* try { // try from 003af09c to 004af09f has its CatchHandler @ 003af0a4 */ + _InputArray::getMat_((int)(_OutputArray *)&local_5c8); + } + /* catch() { ... } // from try @ 003aec10 with catch @ 003af0a4 + catch() { ... } // from try @ 003af09c with catch @ 003af0a4 */ + if (local_4b0._4_4_ < 3) { + iVar17 = local_4a8._4_4_ * (int)local_4a8; + if (((uint)local_4b0 & 0xfff) == 6) goto LAB_003af464; +LAB_003af0e0: + local_5f0 = 0; + local_5e8 = 0; + __dest = (void *)String::allocate((String *)&local_5f0,0x5b); + memcpy(__dest,&DAT_00473510,0x5b); + /* try { // try from 003af10c to 004af10f has its CatchHandler @ 003ae720 */ + /* catch() { ... } // from try @ 003ae834 with catch @ 003af110 + catch() { ... } // from try @ 003aeaa8 with catch @ 003af110 + catch() { ... } // from try @ 003aed6c with catch @ 003af110 + catch() { ... } // from try @ 003aedd4 with catch @ 003af110 + catch() { ... } // from try @ 003aef80 with catch @ 003af110 + catch() { ... } // from try @ 003aefb0 with catch @ 003af110 + catch() { ... } // from try @ 003af008 with catch @ 003af110 + catch() { ... } // from try @ 003af06c with catch @ 003af110 */ + /* catch() { ... } // from try @ 003aeb9c with catch @ 003af118 */ + error(-0xd7,(String *)&local_5f0, + "void cv::meanStdDev(cv::InputArray, cv::OutputArray, cv::OutputArray, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x720); + String::deallocate((String *)&local_5f0); + } + else { + lVar42 = 0; + iVar17 = 1; + do { + lVar27 = lVar42 * 4; + lVar42 = lVar42 + 1; + iVar17 = iVar17 * *(int *)((long)local_470 + lVar27); + } while ((int)lVar42 < local_4b0._4_4_); + if (((uint)local_4b0 & 0xfff) != 6) goto LAB_003af0e0; +LAB_003af464: + if ((((uint)local_4b0 >> 0xe & 1) == 0) || + (((local_4a8._4_4_ != 1 && ((int)local_4a8 != 1)) || (iVar17 < (int)uVar1)))) + goto LAB_003af0e0; + } + /* catch() { ... } // from try @ 003aeb68 with catch @ 003af140 */ + if ((local_4a0 < pdVar23 + 2 && pdVar23 < local_4a0 + 2) || (uVar1 < 0xe)) { + lVar42 = 0; + do { + local_4a0[lVar42] = pdVar23[lVar42]; + lVar42 = lVar42 + 1; + } while ((int)lVar42 < (int)uVar1); + } + else { + uVar4 = (uint)((ulong)pdVar23 >> 3) & 1; + if (uVar1 < uVar4) { + uVar4 = uVar1; + } + if (uVar4 != 0) { + /* catch() { ... } // from try @ 003aee48 with catch @ 003af164 + catch() { ... } // from try @ 003aefa4 with catch @ 003af164 + catch() { ... } // from try @ 003aefd0 with catch @ 003af164 */ + /* catch() { ... } // from try @ 003ae9b8 with catch @ 003af16c */ + *local_4a0 = *pdVar23; + } + uVar5 = ((uVar1 - uVar4) - 2 >> 1) + 1; + uVar34 = 0; + iVar18 = uVar5 * 2; + pdVar24 = pdVar23 + uVar4; + pdVar37 = local_4a0 + uVar4; + do { + dVar55 = *pdVar24; + uVar34 = uVar34 + 1; + pdVar37[1] = pdVar24[1]; + *pdVar37 = dVar55; + pdVar24 = pdVar24 + 2; + pdVar37 = pdVar37 + 2; + } while (uVar34 < uVar5); + uVar5 = iVar18 + (uint)(uVar4 != 0); + if (iVar18 != uVar1 - uVar4) { + uVar46 = -(ulong)(uVar5 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar5 << 3; + /* catch() { ... } // from try @ 003ae91c with catch @ 003af1b8 + catch() { ... } // from try @ 003ae9c0 with catch @ 003af1b8 */ + *(undefined8 *)((long)local_4a0 + uVar46) = *(undefined8 *)((long)pdVar23 + uVar46); + } + } + /* catch() { ... } // from try @ 003ae77c with catch @ 003af1c0 + catch() { ... } // from try @ 003aeebc with catch @ 003af1c0 + catch() { ... } // from try @ 003aef98 with catch @ 003af1c0 */ + if ((int)uVar1 < iVar17) { + /* catch() { ... } // from try @ 003aedcc with catch @ 003af1c8 */ + /* catch() { ... } // from try @ 003aec84 with catch @ 003af1d8 + catch() { ... } // from try @ 003af090 with catch @ 003af1d8 */ + memset(local_4a0 + lVar21,0,((ulong)((iVar17 - uVar10) - 2) + 1) * 8); + } + if (local_478 != 0) { + piVar26 = (int *)(local_478 + 0x14); + do { + iVar17 = *piVar26; + cVar16 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar8) { + *piVar26 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_4b0); + } + } + local_478 = 0; + local_4a0 = (double *)0x0; + /* catch() { ... } // from try @ 003aecf8 with catch @ 003af21c + catch() { ... } // from try @ 003af084 with catch @ 003af21c */ + local_488 = 0; + /* catch() { ... } // from try @ 003aea34 with catch @ 003af224 + catch() { ... } // from try @ 003aefbc with catch @ 003af224 + catch() { ... } // from try @ 003af02c with catch @ 003af224 */ + local_490 = 0; + local_498 = 0; + if (0 < local_4b0._4_4_) { + iVar17 = 0; + puVar31 = local_470; + do { + *(undefined4 *)puVar31 = 0; + iVar17 = iVar17 + 1; + puVar31 = (undefined8 *)((long)puVar31 + 4); + } while (iVar17 < local_4b0._4_4_); + } + if (local_468 != &local_460) { + fastFree(local_468); + } + } + if (bVar7) { + if ((local_450 != adStack_440) && (local_450 != (double *)0x0)) { + /* try { // try from 003aeebc to 004aeebf has its CatchHandler @ 003af1c0 */ + operator_delete__(local_450); + } + if (local_4d8 != 0) { + piVar26 = (int *)(local_4d8 + 0x14); + do { + iVar17 = *piVar26; + cVar16 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar7) { + *piVar26 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar17 == 1) { + Mat::deallocate(local_638); + } + } + local_4d8 = 0; + local_500 = 0; + local_4e8 = 0; + local_4f0 = 0; + local_4f8 = 0; + if (0 < local_50c) { + iVar17 = 0; + piVar26 = local_4d0; + do { + iVar17 = iVar17 + 1; + *piVar26 = 0; + piVar26 = piVar26 + 1; + } while (iVar17 < local_50c); + } + /* try { // try from 003aef30 to 004aef33 has its CatchHandler @ 003ae720 */ + if (local_4c8 != &local_4c0) { + fastFree(local_4c8); + } + if (local_538 != 0) { + piVar26 = (int *)(local_538 + 0x14); + do { + iVar17 = *piVar26; + cVar16 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar26,0x10); + if (bVar7) { + *piVar26 = iVar17 + -1; + cVar16 = ExclusiveMonitorsStatus(); + } + } while (cVar16 != '\0'); + if (iVar17 == 1) { + Mat::deallocate(local_630); + } + } + local_538 = 0; + /* try { // try from 003aef80 to 004aef83 has its CatchHandler @ 003af110 */ + local_560 = 0; + local_548 = 0; + /* try { // try from 003aef8c to 004aef8f has its CatchHandler @ 003ae720 */ + local_550 = 0; + local_558 = 0; + if (0 < local_56c) { + /* try { // try from 003aef98 to 004aef9b has its CatchHandler @ 003af1c0 */ + iVar17 = 0; + puVar30 = local_530; + do { + /* try { // try from 003aefa4 to 004aefa7 has its CatchHandler @ 003af164 */ + iVar17 = iVar17 + 1; + *puVar30 = 0; + /* try { // try from 003aefb0 to 004aefb3 has its CatchHandler @ 003af110 */ + puVar30 = puVar30 + 1; + } while (iVar17 < local_56c); + } + /* try { // try from 003aefbc to 004aefbf has its CatchHandler @ 003af224 */ + if (local_528 != &local_520) { + fastFree(local_528); + } + /* try { // try from 003aefd0 to 004aefd3 has its CatchHandler @ 003af164 */ + return; + } + bVar7 = true; + param_2 = param_3; + pdVar23 = pdVar3; + } while( true ); +} + + +================================================================== + +### FUNC 003af858 (1996 bytes) name=minMaxIdx + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::minMaxIdx(cv::_InputArray const&, double*, double*, int*, int*, cv::_InputArray const&) */ + +void cv::minMaxIdx(_InputArray *param_1,double *param_2,double *param_3,int *param_4,int *param_5, + _InputArray *param_6) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + bool bVar4; + ulong uVar5; + char cVar6; + int iVar7; + ulong uVar8; + void *__dest; + ulong uVar9; + char *pcVar10; + ulong uVar11; + undefined8 *puVar12; + undefined4 *puVar13; + Mat *pMVar14; + long lVar15; + code *pcVar16; + double *pdVar17; + double *pdVar18; + int local_168; + int local_164; + float local_160; + float local_15c; + long local_158; + long local_150; + double local_148; + double local_140; + code *local_138; + code *local_130; + uchar *local_128; + undefined8 local_120; + Mat *local_118; + Mat *local_110; + undefined8 local_108; + NAryMatIterator aNStack_100 [32]; + ulong local_e0; + int local_d8; + undefined4 local_c0; + uint local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + uVar8 = _InputArray::type(param_1,-1); + uVar2 = (uint)uVar8 & 7; + if ((uVar8 >> 3 & 0x1ff) == 0) { + cVar6 = _InputArray::empty(param_6); + if ((cVar6 == '\0') && (iVar7 = _InputArray::type(param_6,-1), iVar7 != 0)) goto LAB_003af8cc; +LAB_003af920: + iVar7 = _InputArray::kind(param_1); + if (iVar7 != 0x10000) goto LAB_003af930; +LAB_003afd50: + pMVar14 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar14; + local_bc = *(uint *)(pMVar14 + 4); + local_b8 = *(undefined4 *)(pMVar14 + 8); + local_b4 = *(undefined4 *)(pMVar14 + 0xc); + local_b0 = *(undefined8 *)(pMVar14 + 0x10); + local_a8 = *(undefined8 *)(pMVar14 + 0x18); + local_a0 = *(undefined8 *)(pMVar14 + 0x20); + local_98 = *(undefined8 *)(pMVar14 + 0x28); + local_90 = *(undefined8 *)(pMVar14 + 0x30); + local_88 = *(long *)(pMVar14 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + cVar6 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar14 + 0x48); + local_68 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar14); + } + } + else { + cVar6 = _InputArray::empty(param_6); + if ((cVar6 == '\0') || ((param_4 != (int *)0x0 || (param_5 != (int *)0x0)))) { +LAB_003af8cc: + local_60 = 0; + local_58 = 0; + __dest = (void *)String::allocate((String *)&local_60,0x68); + memcpy(__dest, + "(cn == 1 && (_mask.empty() || _mask.type() == CV_8U)) || (cn > 1 && _mask.empty() && !minIdx && !maxIdx)" + ,0x68); + error(-0xd7,(String *)&local_60, + "void cv::minMaxIdx(cv::InputArray, double*, double*, int*, int*, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x890); + String::deallocate((String *)&local_60); + goto LAB_003af920; + } + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) goto LAB_003afd50; +LAB_003af930: + _InputArray::getMat_((int)param_1); + } + iVar7 = _InputArray::kind(param_6); + if (iVar7 == 0x10000) { + pMVar14 = *(Mat **)(param_6 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar3 = *(uint *)pMVar14; + local_50 = *(undefined8 *)(pMVar14 + 0x10); + local_60 = *(ulong *)pMVar14; + local_58 = *(undefined8 *)(pMVar14 + 8); + local_48 = *(undefined8 *)(pMVar14 + 0x18); + local_40 = *(undefined8 *)(pMVar14 + 0x20); + local_38 = *(undefined8 *)(pMVar14 + 0x28); + local_30 = *(undefined8 *)(pMVar14 + 0x30); + local_28 = *(long *)(pMVar14 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar6 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (2 < *(int *)(pMVar14 + 4)) { + local_60 = (ulong)uVar3; + Mat::copySize((Mat *)&local_60,pMVar14); + goto LAB_003af970; + } + local_10 = **(undefined8 **)(pMVar14 + 0x48); + local_8 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + pcVar16 = (code *)(&PTR_FUN_004f7820)[(int)uVar2]; + } + else { + _InputArray::getMat_((int)param_6); +LAB_003af970: + pcVar16 = (code *)(&PTR_FUN_004f7820)[(int)uVar2]; + } + if (pcVar16 == (code *)0x0) { + local_138 = pcVar16; + local_130 = pcVar16; + pcVar10 = (char *)String::allocate((String *)&local_138,9); + cVar6 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar10 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar10[8] = cVar6; + error(-0xd7,(String *)&local_138, + "void cv::minMaxIdx(cv::InputArray, double*, double*, int*, int*, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x8f7); + String::deallocate((String *)&local_138); + } + local_108 = 0; + local_118 = (Mat *)&local_c0; + local_110 = (Mat *)&local_60; + NAryMatIterator::NAryMatIterator(aNStack_100,&local_118,&local_128,-1); + local_168 = 0x7fffffff; + local_164 = -0x80000000; + local_158 = 0; + local_150 = 0; + local_d8 = (((uint)(uVar8 >> 3) & 0x1ff) + 1) * local_d8; + local_160 = DAT_003b009c; + local_15c = DAT_003b00a0; + local_148 = DAT_003b00a8; + local_140 = DAT_003b00b0; + pdVar17 = (double *)&local_160; + pdVar18 = (double *)&local_15c; + if ((uVar2 != 5) && (pdVar17 = &local_148, pdVar18 = &local_140, uVar2 != 6)) { + pdVar17 = (double *)&local_168; + pdVar18 = (double *)&local_164; + } + if (local_e0 != 0) { + uVar8 = 0; + lVar15 = 1; + do { + (*pcVar16)(local_128,local_120,pdVar17,pdVar18,&local_158,&local_150,local_d8,lVar15); + uVar8 = uVar8 + 1; + NAryMatIterator::operator++(aNStack_100); + lVar15 = lVar15 + local_d8; + } while (uVar8 < local_e0); + if (local_158 != 0) { + lVar15 = local_158; + if (uVar2 == 5) { + local_148 = (double)local_160; + local_140 = (double)local_15c; + } + else if (uVar2 < 5) { + local_148 = (double)local_168; + local_140 = (double)local_164; + } + goto LAB_003afb18; + } + } + lVar15 = 0; + local_140 = 0.0; + local_148 = 0.0; +LAB_003afb18: + if (param_2 != (double *)0x0) { + *param_2 = local_148; + } + if (param_3 != (double *)0x0) { + *param_3 = local_140; + } + if (param_4 != (int *)0x0) { + if (lVar15 == 0) { + if (0 < (int)local_bc) { + lVar15 = (ulong)(local_bc - 1) + 1; + memset((void *)((long)param_4 + + (-(ulong)(local_bc >> 0x1f) & 0xfffffffc00000000 | (ulong)local_bc << 2) + + lVar15 * -4),0xff,lVar15 * 4); + } + } + else { + uVar2 = local_bc - 1; + if (-1 < (int)uVar2) { + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar9 = 0; + uVar8 = lVar15 - 1; + do { + iVar7 = *(int *)((long)local_80 + uVar9 + uVar11); + uVar5 = 0; + if ((long)iVar7 != 0) { + uVar5 = uVar8 / (ulong)(long)iVar7; + } + *(int *)((long)param_4 + uVar9 + uVar11) = (int)uVar8 - (int)uVar5 * iVar7; + uVar9 = uVar9 - 4; + uVar8 = uVar5; + } while (uVar9 != ((ulong)uVar2 << 2 ^ 0xfffffffffffffffc)); + } + } + } + if (param_5 != (int *)0x0) { + if (local_150 == 0) { + if (0 < (int)local_bc) { + lVar15 = (ulong)(local_bc - 1) + 1; + memset((void *)((long)param_5 + + (-(ulong)(local_bc >> 0x1f) & 0xfffffffc00000000 | (ulong)local_bc << 2) + + lVar15 * -4),0xff,lVar15 * 4); + } + } + else { + uVar2 = local_bc - 1; + if (-1 < (int)uVar2) { + uVar11 = -(ulong)(uVar2 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar2 << 2; + uVar9 = 0; + uVar8 = local_150 - 1; + do { + iVar7 = *(int *)((long)local_80 + uVar9 + uVar11); + uVar5 = 0; + if ((long)iVar7 != 0) { + uVar5 = uVar8 / (ulong)(long)iVar7; + } + *(int *)((long)param_5 + uVar9 + uVar11) = (int)uVar8 - (int)uVar5 * iVar7; + uVar9 = uVar9 - 4; + uVar8 = uVar5; + } while (uVar9 != ((ulong)uVar2 << 2 ^ 0xfffffffffffffffc)); + } + } + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar6 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar7 = 0; + puVar12 = local_20; + do { + *(undefined4 *)puVar12 = 0; + iVar7 = iVar7 + 1; + puVar12 = (undefined8 *)((long)puVar12 + 4); + } while (iVar7 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar6 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar7 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < (int)local_bc) { + iVar7 = 0; + puVar13 = local_80; + do { + *puVar13 = 0; + iVar7 = iVar7 + 1; + puVar13 = puVar13 + 1; + } while (iVar7 < (int)local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 003b00b8 (232 bytes) name=minMaxLoc + +/* cv::minMaxLoc(cv::_InputArray const&, double*, double*, cv::Point_*, cv::Point_*, + cv::_InputArray const&) */ + +void cv::minMaxLoc(_InputArray *param_1,double *param_2,double *param_3,Point_ *param_4, + Point_ *param_5,_InputArray *param_6) + +{ + undefined4 uVar1; + undefined8 uVar2; + int iVar3; + char *pcVar4; + undefined8 local_10; + undefined8 local_8; + + iVar3 = _InputArray::dims(param_1,-1); + if (2 < iVar3) { + local_10 = 0; + local_8 = 0; + pcVar4 = (char *)String::allocate((String *)&local_10,0x10); + uVar2 = s__depth____CV_8U____depth____CV_3_0045f8c8._72_8_; + *(undefined8 *)pcVar4 = s__depth____CV_8U____depth____CV_3_0045f8c8._64_8_; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_10, + "void cv::minMaxLoc(cv::InputArray, double*, double*, cv::Point*, cv::Point*, cv::InputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0x922); + String::deallocate((String *)&local_10); + } + minMaxIdx(param_1,param_2,param_3,(int *)param_4,(int *)param_5,param_6); + if (param_4 != (Point_ *)0x0) { + uVar1 = *(undefined4 *)param_4; + *(undefined4 *)param_4 = *(undefined4 *)(param_4 + 4); + *(undefined4 *)(param_4 + 4) = uVar1; + } + if (param_5 != (Point_ *)0x0) { + uVar1 = *(undefined4 *)param_5; + *(undefined4 *)param_5 = *(undefined4 *)(param_5 + 4); + *(undefined4 *)(param_5 + 4) = uVar1; + } + return; +} + + +================================================================== + +### FUNC 003b01b4 (16 bytes) name=operator() + +/* cv::Hamming::TEMPNAMEPLACEHOLDERVALUE(unsigned char const*, unsigned char const*, int) const */ + +void __thiscall cv::Hamming::operator()(Hamming *this,uchar *param_1,uchar *param_2,int param_3) + +{ + FUN_003cd884(param_1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 003b01d0 (5992 bytes) name=batchDistance + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::batchDistance(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int, + cv::_OutputArray const&, int, int, cv::_InputArray const&, int, bool) */ + +void cv::batchDistance(_InputArray *param_1,_InputArray *param_2,_OutputArray *param_3,int param_4, + _OutputArray *param_5,int param_6,int param_7,_InputArray *param_8,int param_9 + ,bool param_10) + +{ + uint uVar1; + int iVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + long *plVar14; + bool bVar15; + bool bVar16; + char cVar17; + int iVar18; + char *pcVar19; + long lVar20; + long lVar21; + int *piVar22; + uint *puVar23; + float *pfVar24; + Mat *pMVar25; + int iVar26; + undefined **ppuVar27; + undefined **ppuVar28; + ulong uVar29; + uint uVar30; + float fVar31; + undefined1 auVar32 [16]; + undefined8 local_318; + Mat *local_310; + undefined4 local_308; + undefined4 local_304; + undefined8 local_300; + Mat *local_2f8; + undefined4 local_2f0; + undefined4 local_2ec; + undefined8 local_2e8; + Mat *local_2e0; + undefined4 local_2d8; + undefined4 local_2d4; + undefined8 local_2d0; + Mat *local_2c8; + undefined4 local_2c0; + undefined4 local_2bc; + undefined4 local_2b8 [2]; + Mat *local_2b0; + undefined4 local_2a8; + undefined4 local_2a4; + undefined8 local_2a0; + undefined8 uStack_298; + undefined **local_290; + Mat *pMStack_288; + undefined8 local_280; + undefined8 uStack_278; + undefined8 local_270; + long lStack_268; + int *local_260; + long *local_258; + long local_250 [2]; + undefined8 local_240; + undefined8 uStack_238; + Mat *local_230; + Mat *local_228; + Mat *local_220; + Mat *local_218; + undefined8 local_210; + code *local_208; + int *local_200; + long *local_1f8; + long local_1f0 [2]; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined **local_1d0; + Mat *pMStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + int *local_1a0; + long *local_198; + long local_190; + long lStack_188; + uint local_180; + int local_17c; + uint local_178; + int local_174; + undefined8 local_170; + undefined8 local_168; + undefined8 local_160; + undefined8 local_158; + undefined8 local_150; + long local_148; + uint *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 local_128; + uint local_120; + int local_11c; + int local_118; + int local_114; + undefined8 local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + undefined4 local_c0; + int local_bc; + int local_b8; + int local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + uint local_60; + int local_5c; + int local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + int *local_20; + long *local_18; + long local_10; + long local_8; + + uVar29 = (ulong)(uint)param_4; + iVar18 = _InputArray::kind(param_1); + if (iVar18 == 0x10000) { + pMVar25 = *(Mat **)(param_1 + 8); + local_140 = &local_178; + local_138 = &local_130; + local_180 = *(uint *)pMVar25; + local_17c = *(int *)(pMVar25 + 4); + local_178 = *(uint *)(pMVar25 + 8); + local_174 = *(int *)(pMVar25 + 0xc); + local_170 = *(undefined8 *)(pMVar25 + 0x10); + local_168 = *(undefined8 *)(pMVar25 + 0x18); + local_160 = *(undefined8 *)(pMVar25 + 0x20); + local_158 = *(undefined8 *)(pMVar25 + 0x28); + local_150 = *(undefined8 *)(pMVar25 + 0x30); + local_148 = *(long *)(pMVar25 + 0x38); + local_128 = 0; + local_130 = 0; + if (local_148 != 0) { + piVar22 = (int *)(local_148 + 0x14); + do { + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = *piVar22 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar25 + 4) < 3) { + local_130 = **(undefined8 **)(pMVar25 + 0x48); + local_128 = (*(undefined8 **)(pMVar25 + 0x48))[1]; + } + else { + local_17c = 0; + Mat::copySize((Mat *)&local_180,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_1); + } + iVar18 = _InputArray::kind(param_2); + if (iVar18 == 0x10000) { + pMVar25 = *(Mat **)(param_2 + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar25; + local_11c = *(int *)(pMVar25 + 4); + local_118 = *(int *)(pMVar25 + 8); + local_114 = *(int *)(pMVar25 + 0xc); + local_110 = *(undefined8 *)(pMVar25 + 0x10); + local_108 = *(undefined8 *)(pMVar25 + 0x18); + local_100 = *(undefined8 *)(pMVar25 + 0x20); + local_f8 = *(undefined8 *)(pMVar25 + 0x28); + local_f0 = *(undefined8 *)(pMVar25 + 0x30); + local_e8 = *(long *)(pMVar25 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar22 = (int *)(local_e8 + 0x14); + do { + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = *piVar22 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar25 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar25 + 0x48); + local_c8 = (*(undefined8 **)(pMVar25 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_2); + } + iVar18 = _InputArray::kind(param_8); + if (iVar18 == 0x10000) { + pMVar25 = *(Mat **)(param_8 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(undefined4 *)pMVar25; + local_bc = *(int *)(pMVar25 + 4); + local_b8 = *(int *)(pMVar25 + 8); + local_b4 = *(int *)(pMVar25 + 0xc); + local_b0 = *(long *)(pMVar25 + 0x10); + local_a8 = *(undefined8 *)(pMVar25 + 0x18); + local_a0 = *(undefined8 *)(pMVar25 + 0x20); + local_98 = *(undefined8 *)(pMVar25 + 0x28); + local_90 = *(undefined8 *)(pMVar25 + 0x30); + local_88 = *(long *)(pMVar25 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar22 = (int *)(local_88 + 0x14); + do { + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = *piVar22 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (2 < *(int *)(pMVar25 + 4)) { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar25); + goto LAB_003b0284; + } + local_70 = **(undefined8 **)(pMVar25 + 0x48); + uVar30 = local_180 & 0xfff; + local_68 = (*(undefined8 **)(pMVar25 + 0x48))[1]; + if (uVar30 == (local_120 & 0xfff)) goto LAB_003b1278; +LAB_003b029c: + local_318 = 0; + local_310 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_318,0x52); + uVar13 = s_type____src2_type______src1_cols_004735e0._72_8_; + uVar12 = s_type____src2_type______src1_cols_004735e0._64_8_; + uVar11 = s_type____src2_type______src1_cols_004735e0._56_8_; + uVar10 = s_type____src2_type______src1_cols_004735e0._48_8_; + uVar9 = s_type____src2_type______src1_cols_004735e0._40_8_; + uVar8 = s_type____src2_type______src1_cols_004735e0._32_8_; + uVar7 = s_type____src2_type______src1_cols_004735e0._24_8_; + uVar6 = s_type____src2_type______src1_cols_004735e0._16_8_; + uVar5 = s_type____src2_type______src1_cols_004735e0._8_8_; + uVar4 = s_type____src2_type______src1_cols_004735e0._0_8_; + *(undefined2 *)(pcVar19 + 0x50) = s_type____src2_type______src1_cols_004735e0._80_2_; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + *(undefined8 *)(pcVar19 + 0x10) = uVar6; + *(undefined8 *)(pcVar19 + 0x18) = uVar7; + *(undefined8 *)(pcVar19 + 0x20) = uVar8; + *(undefined8 *)(pcVar19 + 0x28) = uVar9; + *(undefined8 *)(pcVar19 + 0x30) = uVar10; + *(undefined8 *)(pcVar19 + 0x38) = uVar11; + *(undefined8 *)(pcVar19 + 0x40) = uVar12; + *(undefined8 *)(pcVar19 + 0x48) = uVar13; + error(-0xd7,(String *)&local_318, + "void cv::batchDistance(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::OutputArray, int, int, cv::InputArray, int, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xe47); + String::deallocate((String *)&local_318); + } + else { + _InputArray::getMat_((int)param_8); +LAB_003b0284: + uVar30 = local_180 & 0xfff; + if (uVar30 != (local_120 & 0xfff)) goto LAB_003b029c; +LAB_003b1278: + if ((local_174 != local_114) || ((uVar30 != 0 && (uVar30 != 5)))) goto LAB_003b029c; + } + cVar17 = _OutputArray::needed(param_5); + if (0 < param_7 != (bool)cVar17) { + local_300 = 0; + local_2f8 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_300,0x19); + cVar17 = s__nidx_needed_______K_>_0__00473638[0x18]; + uVar5 = s__nidx_needed_______K_>_0__00473638._8_8_; + uVar4 = s__nidx_needed_______K_>_0__00473638._0_8_; + *(undefined8 *)(pcVar19 + 0x10) = s__nidx_needed_______K_>_0__00473638._16_8_; + pcVar19[0x18] = cVar17; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + error(-0xd7,(String *)&local_300, + "void cv::batchDistance(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::OutputArray, int, int, cv::InputArray, int, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xe48); + String::deallocate((String *)&local_300); + } + if (param_4 == -1) { + if (param_6 - 6U < 2) { + if (uVar30 != 0) { + uVar29 = 4; + bVar15 = true; + goto LAB_003b03d0; + } + uVar29 = 4; + bVar15 = true; + bVar16 = false; + } + else { + uVar29 = 5; + bVar15 = false; + bVar16 = true; + } + } + else { + bVar15 = param_4 == 4; + bVar16 = param_4 == 5; + if ((!bVar15 || uVar30 != 0) && (!bVar16)) { +LAB_003b03d0: + local_2e8 = 0; + local_2e0 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_2e8,0x35); + cVar17 = s__type____CV_8U____dtype____CV_32_00473658[0x34]; + uVar9 = s__type____CV_8U____dtype____CV_32_00473658._40_8_; + uVar8 = s__type____CV_8U____dtype____CV_32_00473658._32_8_; + uVar7 = s__type____CV_8U____dtype____CV_32_00473658._24_8_; + uVar6 = s__type____CV_8U____dtype____CV_32_00473658._16_8_; + uVar5 = s__type____CV_8U____dtype____CV_32_00473658._8_8_; + uVar4 = s__type____CV_8U____dtype____CV_32_00473658._0_8_; + *(undefined4 *)(pcVar19 + 0x30) = s__type____CV_8U____dtype____CV_32_00473658._48_4_; + pcVar19[0x34] = cVar17; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + *(undefined8 *)(pcVar19 + 0x10) = uVar6; + *(undefined8 *)(pcVar19 + 0x18) = uVar7; + *(undefined8 *)(pcVar19 + 0x20) = uVar8; + *(undefined8 *)(pcVar19 + 0x28) = uVar9; + error(-0xd7,(String *)&local_2e8, + "void cv::batchDistance(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::OutputArray, int, int, cv::InputArray, int, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xe4e); + String::deallocate((String *)&local_2e8); + bVar16 = false; + } + } + if (local_118 < param_7) { + param_7 = local_118; + } + iVar18 = local_118; + if (0 < param_7) { + iVar18 = param_7; + } + iVar26 = (int)uVar29; + _OutputArray::create(param_3,local_178,iVar18,iVar26,-1,false,0); + iVar18 = _InputArray::kind((_InputArray *)param_3); + if (iVar18 == 0x10000) { + pMVar25 = *(Mat **)(param_3 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar25; + local_5c = *(int *)(pMVar25 + 4); + local_58 = *(int *)(pMVar25 + 8); + local_54 = *(int *)(pMVar25 + 0xc); + local_50 = *(long *)(pMVar25 + 0x10); + local_48 = *(undefined8 *)(pMVar25 + 0x18); + local_40 = *(undefined8 *)(pMVar25 + 0x20); + local_38 = *(undefined8 *)(pMVar25 + 0x28); + local_30 = *(undefined8 *)(pMVar25 + 0x30); + local_28 = *(long *)(pMVar25 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar22 = (int *)(local_28 + 0x14); + do { + cVar17 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = *piVar22 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar25 + 4) < 3) { + local_10 = **(long **)(pMVar25 + 0x48); + local_8 = (*(long **)(pMVar25 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_260 = (int *)&uStack_298; + local_258 = local_250; + local_250[1] = 0; + local_250[0] = 0; + local_290 = (undefined **)0x0; + pMStack_288 = (Mat *)0x0; + uStack_298 = _UNK_003b1af8; + local_2a0 = _DAT_003b1af0; + local_280 = 0; + uStack_278 = 0; + local_270 = 0; + lStack_268 = 0; + cVar17 = _OutputArray::needed(param_5); + if (cVar17 != '\0') { + local_1e0 = (undefined **)CONCAT44(*local_20,local_20[1]); + _OutputArray::create(param_5,(Mat *)&local_1e0,4,0xffffffff,0,0); + iVar18 = _InputArray::kind((_InputArray *)param_5); + if (iVar18 == 0x10000) { + pMVar25 = *(Mat **)(param_5 + 8); + local_1a0 = (int *)&uStack_1d8; + /* catch() { ... } // from try @ 003b17b4 with catch @ 003b1770 + catch() { ... } // from try @ 003b1f64 with catch @ 003b1770 + catch() { ... } // from try @ 003b31dc with catch @ 003b1770 + catch() { ... } // from try @ 003b3a58 with catch @ 003b1770 */ + local_198 = &local_190; + uVar1 = *(uint *)pMVar25; + local_1d0 = *(undefined ***)(pMVar25 + 0x10); + local_1e0 = *(undefined ***)pMVar25; + uStack_1d8 = *(Mat **)(pMVar25 + 8); + pMStack_1c8 = *(Mat **)(pMVar25 + 0x18); + local_1c0 = *(undefined8 *)(pMVar25 + 0x20); + uStack_1b8 = *(undefined8 *)(pMVar25 + 0x28); + /* try { // try from 003b17b4 to 004b17d3 has its CatchHandler @ 003b1770 */ + local_1b0 = *(undefined8 *)(pMVar25 + 0x30); + lStack_1a8 = *(long *)(pMVar25 + 0x38); + lStack_188 = 0; + local_190 = 0; + if (lStack_1a8 != 0) { + /* try { // try from 003b17d8 to 004b17f7 has its CatchHandler @ 003b3ca0 */ + piVar22 = (int *)(lStack_1a8 + 0x14); + do { + cVar17 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = *piVar22 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar25 + 4) < 3) { + local_190 = **(long **)(pMVar25 + 0x48); + lStack_188 = (*(long **)(pMVar25 + 0x48))[1]; + } + else { + local_1e0 = (undefined **)(ulong)uVar1; + Mat::copySize((Mat *)&local_1e0,pMVar25); + } + } + else { + _InputArray::getMat_((int)param_5); + } + if (lStack_1a8 != 0) { + piVar22 = (int *)(lStack_1a8 + 0x14); + do { + cVar17 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = *piVar22 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (lStack_268 != 0) { + piVar22 = (int *)(lStack_268 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + plVar14 = local_198; + lStack_268 = 0; + local_290 = (undefined **)0x0; + uStack_278 = 0; + local_280 = 0; + pMStack_288 = (Mat *)0x0; + if (local_2a0._4_4_ < 1) { +LAB_003b1378: + if (2 < local_1e0._4_4_) goto LAB_003b1384; + uStack_298 = uStack_1d8; + local_2a0 = local_1e0; + *local_258 = *local_198; + local_258[1] = plVar14[1]; + } + else { + iVar18 = 0; + piVar22 = local_260; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_2a0._4_4_); + if (local_2a0._4_4_ < 3) goto LAB_003b1378; +LAB_003b1384: + local_2a0 = (undefined **)CONCAT44(local_2a0._4_4_,(uint)local_1e0); + Mat::copySize((Mat *)&local_2a0,(Mat *)&local_1e0); + } + uStack_278 = uStack_1b8; + local_280 = local_1c0; + lStack_268 = lStack_1a8; + local_270 = local_1b0; + pMStack_288 = pMStack_1c8; + local_290 = local_1d0; + if (lStack_1a8 != 0) { + piVar22 = (int *)(lStack_1a8 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar3) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_1e0); + /* try { // try from 003b182c to 004b182f has its CatchHandler @ 003b3c7c */ + } + } + lStack_1a8 = 0; + local_1d0 = (undefined **)0x0; + uStack_1b8 = 0; + local_1c0 = 0; + pMStack_1c8 = (Mat *)0x0; + if (0 < local_1e0._4_4_) { + iVar18 = 0; + piVar22 = local_1a0; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + } + if ((0 < param_7) && (param_9 == 0)) { + local_1e0 = (undefined **)DAT_003b1ae0; + if (iVar26 != 4) { + local_1e0 = (undefined **)DAT_003b1ae8; + } + uStack_1d8 = (Mat *)local_1e0; + local_1d0 = local_1e0; + pMStack_1c8 = (Mat *)local_1e0; + Mat::operator=((Mat *)&local_60,(Scalar_ *)&local_1e0); + auVar32 = NEON_fmov(0xbff0000000000000,8); + uStack_1d8 = auVar32._8_8_; + local_1e0 = auVar32._0_8_; + local_1d0 = local_1e0; + pMStack_1c8 = uStack_1d8; + Mat::operator=((Mat *)&local_2a0,(Scalar_ *)&local_1e0); + } + if (!param_10) { + if (uVar30 == 0) { + if ((!bVar15) || (param_6 != 2)) { + if ((!bVar16) || (param_6 != 2)) { + if ((!bVar15) || (param_6 != 5)) { + if (bVar16) { + if (param_6 != 5) { + if (param_6 != 4) goto LAB_003b1904; + local_208 = FUN_003acd44; + /* try { // try from 003b1900 to 004b1903 has its CatchHandler @ 003b3c14 */ + } + else { + local_208 = FUN_003aa8d0; + } + } + else { +LAB_003b1904: + /* try { // try from 003b1908 to 004b190b has its CatchHandler @ 003b3c7c */ + if (bVar15) { + if (param_6 == 6) { + local_208 = FUN_003a18bc; + } + else { + if (param_6 != 7) goto LAB_003b0c00; + local_208 = FUN_003a19b8; + } + } + else { +LAB_003b0c00: + format("The combination of type=%d, dtype=%d and normType=%d is not supported", + (String *)local_2b8,(ulong)uVar30,uVar29,(ulong)(uint)param_6); + error(-0xd2,(String *)local_2b8, + "void cv::batchDistance(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::OutputArray, int, int, cv::InputArray, int, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xea8); + String::deallocate((String *)local_2b8); + local_208 = (code *)0x0; + } + } + } + else { + local_208 = FUN_003aad40; + } + } + else { + local_208 = FUN_003aa1c0; + } + } + else { + local_208 = FUN_003abb64; + } + } + else { + if ((!bVar16) || (uVar30 != 5)) goto LAB_003b0c00; + if (param_6 == 2) { + local_208 = FUN_003aa434; + } + else if (param_6 == 5) { + local_208 = FUN_003aab24; + } + else { + if (param_6 != 4) goto LAB_003b0c00; + local_208 = FUN_003ad0d8; + } + } + local_1e0 = (undefined **)((ulong)local_178 << 0x20); + local_240 = &PTR_FUN_004f76c0; + local_210 = CONCAT44(param_9,param_7); + uStack_238 = (Mat *)&local_180; + local_230 = (Mat *)&local_120; + local_228 = (Mat *)&local_60; + local_220 = (Mat *)&local_2a0; + local_218 = (Mat *)&local_c0; + parallel_for_((Range *)&local_1e0,(ParallelLoopBody *)&local_240,-1.0); + local_240 = &PTR_FUN_004f76c0; + ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_240); + if (lStack_268 != 0) { + piVar22 = (int *)(lStack_268 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = (undefined **)0x0; + uStack_278 = 0; + local_280 = 0; + pMStack_288 = (Mat *)0x0; + if (0 < local_2a0._4_4_) { + iVar18 = 0; + piVar22 = local_260; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_2a0._4_4_); + } + if (local_258 != local_250) { + fastFree(local_258); + } + if (local_28 != 0) { + piVar22 = (int *)(local_28 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar18 = 0; + piVar22 = local_20; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar22 = (int *)(local_88 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar18 = 0; + piVar22 = local_80; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar22 = (int *)(local_e8 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar18 = 0; + piVar22 = local_e0; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar22 = (int *)(local_148 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + if (0 < local_17c) { + iVar18 = 0; + puVar23 = local_140; + do { + *puVar23 = 0; + iVar18 = iVar18 + 1; + puVar23 = puVar23 + 1; + } while (iVar18 < local_17c); + } + goto LAB_003b0b90; + } + if ((param_7 != 1) || (param_9 != 0)) { +LAB_003b059c: + local_2d0 = 0; + local_2c8 = (Mat *)0x0; + pcVar19 = (char *)String::allocate((String *)&local_2d0,0x25); + cVar17 = s_K____1____update____0____mask_em_00473690[0x24]; + uVar7 = s_K____1____update____0____mask_em_00473690._24_8_; + uVar6 = s_K____1____update____0____mask_em_00473690._16_8_; + uVar5 = s_K____1____update____0____mask_em_00473690._8_8_; + uVar4 = s_K____1____update____0____mask_em_00473690._0_8_; + *(undefined4 *)(pcVar19 + 0x20) = s_K____1____update____0____mask_em_00473690._32_4_; + pcVar19[0x24] = cVar17; + *(undefined8 *)pcVar19 = uVar4; + *(undefined8 *)(pcVar19 + 8) = uVar5; + *(undefined8 *)(pcVar19 + 0x10) = uVar6; + *(undefined8 *)(pcVar19 + 0x18) = uVar7; + error(-0xd7,(String *)&local_2d0, + "void cv::batchDistance(cv::InputArray, cv::InputArray, cv::OutputArray, int, cv::OutputArray, int, int, cv::InputArray, int, bool)" + ,"/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xe62); + String::deallocate((String *)&local_2d0); + } + else if (local_b0 != 0) { + if (local_bc < 3) { + /* try { // try from 003b1880 to 004b1883 has its CatchHandler @ 003b3c8c */ + lVar21 = (long)local_b4 * (long)local_b8; + } + else { + lVar20 = 0; + lVar21 = 1; + do { + piVar22 = local_80 + lVar20; + lVar20 = lVar20 + 1; + lVar21 = lVar21 * *piVar22; + } while ((int)lVar20 < local_bc); + } + /* try { // try from 003b1888 to 004b18d3 has its CatchHandler @ 003b3c7c */ + if (lVar21 != 0) goto LAB_003b059c; + } + local_198 = &local_190; + local_1f8 = local_1f0; + local_200 = (int *)&uStack_238; + local_1a0 = (int *)&uStack_1d8; + local_230 = (Mat *)0x0; + uStack_238 = _UNK_003b1af8; + local_240 = _DAT_003b1af0; + local_228 = (Mat *)0x0; + uStack_1d8 = _UNK_003b1af8; + local_1e0 = _DAT_003b1af0; + local_220 = (Mat *)0x0; + local_218 = (Mat *)0x0; + local_210 = 0; + local_208 = (code *)0x0; + local_1d0 = (undefined **)0x0; + local_1f0[1] = 0; + local_1f0[0] = 0; + pMStack_1c8 = (Mat *)0x0; + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + lStack_188 = 0; + local_190 = 0; + local_308 = 0; + local_304 = 0; + local_318 = CONCAT44(local_318._4_4_,0x1010000); + local_2f0 = 0; + local_2ec = 0; + local_300 = CONCAT44(local_300._4_4_,0x1010000); + local_2d8 = 0; + local_2d4 = 0; + local_2e8 = CONCAT44(local_2e8._4_4_,0x2010000); + local_2c0 = 0; + local_2bc = 0; + local_2d0 = CONCAT44(local_2d0._4_4_,0x2010000); + local_2a8 = 0; + local_2a4 = 0; + local_2b8[0] = 0x1010000; + local_310 = (Mat *)&local_120; + local_2f8 = (Mat *)&local_180; + local_2e0 = (Mat *)&local_240; + local_2c8 = (Mat *)&local_1e0; + local_2b0 = (Mat *)&local_c0; + batchDistance((_InputArray *)&local_318,(_InputArray *)&local_300,(_OutputArray *)&local_2e8, + iVar26,(_OutputArray *)&local_2d0,param_6,param_7,(_InputArray *)local_2b8,0,false); + if (iVar26 == 4) { + if (0 < (int)uStack_238) { + lVar21 = 0; + pMVar25 = local_230; + ppuVar28 = local_1d0; + do { + iVar18 = (int)lVar21; + if ((((uint)local_1e0 >> 0xe & 1) == 0) && (*local_1a0 != 1)) { + if (local_1a0[1] == 1) { + lVar20 = lVar21 * *local_198; + } + else { + iVar26 = 0; + if (uStack_1d8._4_4_ != 0) { + iVar26 = iVar18 / uStack_1d8._4_4_; + } + lVar20 = (long)iVar26 * *local_198 + (long)(iVar18 - uStack_1d8._4_4_ * iVar26) * 4; + } + iVar26 = *(int *)((long)local_1d0 + lVar20); + if (((uint)local_240 >> 0xe & 1) != 0) goto LAB_003b1720; +LAB_003b1610: + if (*local_200 == 1) goto LAB_003b1720; + if (local_200[1] == 1) { + lVar20 = lVar21 * *local_1f8; + } + else { + iVar2 = 0; + if (uStack_238._4_4_ != 0) { + iVar2 = iVar18 / uStack_238._4_4_; + } + lVar20 = (long)iVar2 * *local_1f8 + (long)(iVar18 - uStack_238._4_4_ * iVar2) * 4; + } + fVar31 = *(float *)((long)local_230 + lVar20); + if ((local_60 >> 0xe & 1) == 0) goto LAB_003b1654; +LAB_003b1730: + pfVar24 = (float *)(local_50 + (long)iVar26 * 4); + } + else { + iVar26 = *(int *)ppuVar28; + if (((uint)local_240 >> 0xe & 1) == 0) goto LAB_003b1610; +LAB_003b1720: + fVar31 = *(float *)pMVar25; + if ((local_60 >> 0xe & 1) != 0) goto LAB_003b1730; +LAB_003b1654: + if (*local_20 == 1) goto LAB_003b1730; + if (local_20[1] == 1) { + pfVar24 = (float *)(local_50 + (long)iVar26 * *local_18); + } + else { + iVar2 = 0; + if (local_54 != 0) { + iVar2 = iVar26 / local_54; + } + pfVar24 = (float *)(local_50 + + (long)iVar2 * *local_18 + (long)(iVar26 - local_54 * iVar2) * 4); + } + } + if ((int)fVar31 < (int)*pfVar24) { + *pfVar24 = fVar31; + if ((((uint)local_2a0 >> 0xe & 1) == 0) && (*local_260 != 1)) { + if (local_260[1] == 1) { + ppuVar27 = (undefined **)((long)local_290 + (long)iVar26 * *local_258); + } + else { + iVar2 = 0; + if (uStack_298._4_4_ != 0) { + iVar2 = iVar26 / uStack_298._4_4_; + } + ppuVar27 = (undefined **) + ((long)local_290 + + (long)iVar2 * *local_258 + (long)(iVar26 - uStack_298._4_4_ * iVar2) * 4); + } + } + else { + ppuVar27 = (undefined **)((long)local_290 + (long)iVar26 * 4); + } + *(int *)ppuVar27 = param_9 + iVar18; + } + pMVar25 = (Mat *)((long)pMVar25 + 4); + lVar21 = lVar21 + 1; + ppuVar28 = (undefined **)((long)ppuVar28 + 4); + } while (iVar18 + 1 < (int)uStack_238); + } + } + else if (0 < (int)uStack_238) { + lVar21 = 0; + pMVar25 = local_230; + ppuVar28 = local_1d0; + do { + iVar18 = (int)lVar21; + if ((((uint)local_1e0 >> 0xe & 1) == 0) && (*local_1a0 != 1)) { + if (local_1a0[1] == 1) { + lVar20 = lVar21 * *local_198; + } + else { + iVar26 = 0; + if (uStack_1d8._4_4_ != 0) { + iVar26 = iVar18 / uStack_1d8._4_4_; + } + lVar20 = (long)iVar26 * *local_198 + (long)(iVar18 - uStack_1d8._4_4_ * iVar26) * 4; + } + iVar26 = *(int *)((long)local_1d0 + lVar20); + if (((uint)local_240 >> 0xe & 1) != 0) goto LAB_003b08b8; +LAB_003b07a8: + if (*local_200 == 1) goto LAB_003b08b8; + if (local_200[1] == 1) { + lVar20 = lVar21 * *local_1f8; + } + else { + iVar2 = 0; + if (uStack_238._4_4_ != 0) { + iVar2 = iVar18 / uStack_238._4_4_; + } + lVar20 = (long)iVar2 * *local_1f8 + (long)(iVar18 - uStack_238._4_4_ * iVar2) * 4; + } + fVar31 = *(float *)((long)local_230 + lVar20); + if ((local_60 >> 0xe & 1) == 0) goto LAB_003b07ec; +LAB_003b08c8: + pfVar24 = (float *)(local_50 + (long)iVar26 * 4); + } + else { + iVar26 = *(int *)ppuVar28; + if (((uint)local_240 >> 0xe & 1) == 0) goto LAB_003b07a8; +LAB_003b08b8: + fVar31 = *(float *)pMVar25; + if ((local_60 >> 0xe & 1) != 0) goto LAB_003b08c8; +LAB_003b07ec: + if (*local_20 == 1) goto LAB_003b08c8; + if (local_20[1] == 1) { + pfVar24 = (float *)(local_50 + (long)iVar26 * *local_18); + } + else { + iVar2 = 0; + if (local_54 != 0) { + iVar2 = iVar26 / local_54; + } + pfVar24 = (float *)(local_50 + + (long)iVar2 * *local_18 + (long)(iVar26 - local_54 * iVar2) * 4); + } + } + if (fVar31 < *pfVar24) { + *pfVar24 = fVar31; + if ((((uint)local_2a0 >> 0xe & 1) == 0) && (*local_260 != 1)) { + if (local_260[1] == 1) { + ppuVar27 = (undefined **)((long)local_290 + (long)iVar26 * *local_258); + } + else { + iVar2 = 0; + if (uStack_298._4_4_ != 0) { + iVar2 = iVar26 / uStack_298._4_4_; + } + ppuVar27 = (undefined **) + ((long)local_290 + + (long)iVar2 * *local_258 + (long)(iVar26 - uStack_298._4_4_ * iVar2) * 4); + } + } + else { + ppuVar27 = (undefined **)((long)local_290 + (long)iVar26 * 4); + } + *(int *)ppuVar27 = param_9 + iVar18; + } + pMVar25 = (Mat *)((long)pMVar25 + 4); + lVar21 = lVar21 + 1; + ppuVar28 = (undefined **)((long)ppuVar28 + 4); + } while (iVar18 + 1 < (int)uStack_238); + } + if (lStack_1a8 != 0) { + piVar22 = (int *)(lStack_1a8 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + local_1d0 = (undefined **)0x0; + uStack_1b8 = 0; + local_1c0 = 0; + pMStack_1c8 = (Mat *)0x0; + if (0 < local_1e0._4_4_) { + iVar18 = 0; + piVar22 = local_1a0; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (local_208 != (code *)0x0) { + piVar22 = (int *)((long)local_208 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + local_208 = (code *)0x0; + local_230 = (Mat *)0x0; + local_218 = (Mat *)0x0; + local_220 = (Mat *)0x0; + local_228 = (Mat *)0x0; + if (0 < local_240._4_4_) { + iVar18 = 0; + piVar22 = local_200; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_240._4_4_); + } + if (local_1f8 != local_1f0) { + fastFree(local_1f8); + } + if (lStack_268 != 0) { + piVar22 = (int *)(lStack_268 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + lStack_268 = 0; + local_290 = (undefined **)0x0; + uStack_278 = 0; + local_280 = 0; + pMStack_288 = (Mat *)0x0; + if (0 < local_2a0._4_4_) { + iVar18 = 0; + piVar22 = local_260; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_2a0._4_4_); + } + if (local_258 != local_250) { + fastFree(local_258); + } + if (local_28 != 0) { + piVar22 = (int *)(local_28 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar18 = 0; + piVar22 = local_20; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar22 = (int *)(local_88 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar18 = 0; + piVar22 = local_80; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar22 = (int *)(local_e8 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_110 = 0; + local_f8 = 0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar18 = 0; + piVar22 = local_e0; + do { + *piVar22 = 0; + iVar18 = iVar18 + 1; + piVar22 = piVar22 + 1; + } while (iVar18 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + if (local_148 != 0) { + piVar22 = (int *)(local_148 + 0x14); + do { + iVar18 = *piVar22; + cVar17 = '\x01'; + bVar15 = (bool)ExclusiveMonitorPass(piVar22,0x10); + if (bVar15) { + *piVar22 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + if (0 < local_17c) { + iVar18 = 0; + puVar23 = local_140; + do { + *puVar23 = 0; + iVar18 = iVar18 + 1; + puVar23 = puVar23 + 1; + } while (iVar18 < local_17c); + } +LAB_003b0b90: + local_148 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + local_170 = 0; + if (local_138 != &local_130) { + fastFree(local_138); + } + return; +} + + +================================================================== + +### FUNC 003b1b00 (1328 bytes) name=findNonZero + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::findNonZero(cv::_InputArray const&, cv::_OutputArray const&) */ + +void cv::findNonZero(_InputArray *param_1,_OutputArray *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined1 uVar6; + int iVar7; + int iVar8; + undefined8 *puVar9; + char *pcVar10; + uint *puVar11; + long lVar12; + int *piVar13; + Mat *pMVar14; + undefined4 *puVar15; + undefined4 *puVar16; + Mat **ppMVar17; + long lVar18; + long lVar19; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + long *local_78; + long local_70; + long local_68; + uint local_60; + int local_5c; + Mat *local_58; + undefined4 *local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + Mat **local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar7 = _InputArray::kind(param_1); + if (iVar7 == 0x10000) { + pMVar14 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar14; + local_bc = *(int *)(pMVar14 + 4); + local_b8 = *(int *)(pMVar14 + 8); + local_b4 = *(int *)(pMVar14 + 0xc); + local_b0 = *(long *)(pMVar14 + 0x10); + local_a8 = *(undefined8 *)(pMVar14 + 0x18); + local_a0 = *(undefined8 *)(pMVar14 + 0x20); + local_98 = *(undefined8 *)(pMVar14 + 0x28); + local_90 = *(undefined8 *)(pMVar14 + 0x30); + /* try { // try from 003b1f38 to 004b1f3b has its CatchHandler @ 003b3ca0 */ + local_88 = *(long *)(pMVar14 + 0x38); + /* try { // try from 003b1f64 to 004b1fb7 has its CatchHandler @ 003b1770 */ + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar13 = (int *)(local_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar3) { + *piVar13 = *piVar13 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_70 = **(long **)(pMVar14 + 0x48); + local_68 = (*(long **)(pMVar14 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if ((local_c0 & 0xfff) != 0) { + local_e0 = 0; + local_d8 = 0; + puVar9 = (undefined8 *)String::allocate((String *)&local_e0,0x15); + uVar6 = DAT_0045fcd4; + uVar5 = _LAB_0045fcc8; + uVar4 = DAT_0045fcc0; + *(undefined4 *)(puVar9 + 2) = DAT_0045fcd0; + *(undefined1 *)((long)puVar9 + 0x14) = uVar6; + *puVar9 = uVar4; + puVar9[1] = uVar5; + error(-0xd7,(String *)&local_e0,"void cv::findNonZero(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xeb2); + String::deallocate((String *)&local_e0); + } + local_50 = (undefined4 *)0x0; + local_60 = 0x1010000; + local_58 = (Mat *)&local_c0; + iVar7 = countNonZero((_InputArray *)&local_60); + if (iVar7 == 0) { + _OutputArray::release(param_2); + piVar13 = local_80; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + piVar13 = local_80; + } + } + local_80 = piVar13; + if (0 < local_bc) { + iVar7 = 0; + do { + *piVar13 = 0; + iVar7 = iVar7 + 1; + piVar13 = piVar13 + 1; + } while (iVar7 < local_bc); + } + } + else { + iVar8 = _InputArray::kind((_InputArray *)param_2); + if ((iVar8 == 0x10000) && + (puVar11 = (uint *)_OutputArray::getMatRef(param_2,-1), (*puVar11 >> 0xe & 1) == 0)) { + _OutputArray::release(param_2); + } + _OutputArray::create(param_2,iVar7,1,0xc,-1,false,0); + iVar7 = _InputArray::kind((_InputArray *)param_2); + if (iVar7 == 0x10000) { + pMVar14 = *(Mat **)(param_2 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar14; + local_50 = *(undefined4 **)(pMVar14 + 0x10); + local_5c = *(int *)(pMVar14 + 4); + local_58 = *(Mat **)(pMVar14 + 8); + local_48 = *(undefined8 *)(pMVar14 + 0x18); + local_40 = *(undefined8 *)(pMVar14 + 0x20); + local_38 = *(undefined8 *)(pMVar14 + 0x28); + /* try { // try from 003b1e3c to 004b1e3f has its CatchHandler @ 003b3c84 */ + local_30 = *(undefined8 *)(pMVar14 + 0x30); + local_28 = *(long *)(pMVar14 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar13 = (int *)(local_28 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar3) { + *piVar13 = *piVar13 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar14 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar14 + 0x48); + local_8 = (*(undefined8 **)(pMVar14 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar14); + } + } + else { + _InputArray::getMat_((int)param_2); + } + if ((local_60 >> 0xe & 1) == 0) { + /* try { // try from 003b1eb0 to 004b1eb3 has its CatchHandler @ 003b3c74 */ + local_d0 = 0; + local_c8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_d0,0x12); + uVar5 = s_idx_isContinuous___00473700._8_8_; + uVar4 = s_idx_isContinuous___00473700._0_8_; + *(undefined2 *)(pcVar10 + 0x10) = s_idx_isContinuous___00473700._16_2_; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + error(-0xd7,(String *)&local_d0,"void cv::findNonZero(cv::InputArray, cv::OutputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xebd); + String::deallocate((String *)&local_d0); + } + if (0 < local_b8) { + iVar7 = 0; + lVar19 = *local_78; + puVar16 = local_50; + lVar18 = local_b0; + do { + if (0 < local_b4) { + lVar12 = 0; + puVar15 = puVar16; + do { + /* try { // try from 003b1ce4 to 004b1d57 has its CatchHandler @ 003b3c24 */ + puVar16 = puVar15; + if (*(char *)(lVar18 + lVar12) != '\0') { + *puVar15 = (int)lVar12; + puVar16 = puVar15 + 2; + puVar15[1] = iVar7; + } + lVar12 = lVar12 + 1; + puVar15 = puVar16; + } while ((int)lVar12 < local_b4); + } + iVar7 = iVar7 + 1; + lVar18 = lVar18 + lVar19; + } while (iVar7 != local_b8); + } + if (local_28 != 0) { + piVar13 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar13; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar3) { + *piVar13 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = (undefined4 *)0x0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + ppMVar17 = local_20; + do { + *(undefined4 *)ppMVar17 = 0; + iVar7 = iVar7 + 1; + ppMVar17 = (Mat **)((long)ppMVar17 + 4); + } while (iVar7 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar13 = (int *)(local_88 + 0x14); + do { + iVar7 = *piVar13; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar3) { + *piVar13 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar7 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + /* try { // try from 003b1dc8 to 004b1dcb has its CatchHandler @ 003b3ca8 */ + if (0 < local_bc) { + iVar7 = 0; + piVar13 = local_80; + do { + *piVar13 = 0; + iVar7 = iVar7 + 1; + piVar13 = piVar13 + 1; + } while (iVar7 < local_bc); + } + } + local_88 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + local_b0 = 0; + if (local_78 != &local_70) { + fastFree(local_78); + } + return; +} + + +================================================================== + +### FUNC 003b20a4 (464 bytes) name=cvSum + +undefined1 [16] cvSum(cv *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + int iVar6; + char *pcVar7; + AutoBuffer *in_x5; + undefined1 auVar8 [16]; + undefined4 local_98 [2]; + Mat *local_90; + undefined4 local_88; + undefined4 local_84; + ulong local_80 [4]; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,in_x5); + local_88 = 0; + local_84 = 0; + local_98[0] = 0x1010000; + local_90 = (Mat *)&local_60; + cv::sum((cv *)local_98,(_InputArray *)0x1010000); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_60._4_4_) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if ((((param_1 != (cv *)0x0) && (*(int *)param_1 == 0x90)) && (*(long *)(param_1 + 0x58) != 0)) && + (iVar6 = cvGetImageCOI(param_1), iVar6 != 0)) { + if (3 < iVar6 - 1U) { + local_60 = 0; + local_58 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_60,0x13); + cVar2 = s_0_<_coi_&&_coi_<__4_00473718[0x12]; + uVar5 = s_0_<_coi_&&_coi_<__4_00473718._8_8_; + uVar4 = s_0_<_coi_&&_coi_<__4_00473718._0_8_; + *(undefined2 *)(pcVar7 + 0x10) = s_0_<_coi_&&_coi_<__4_00473718._16_2_; + pcVar7[0x12] = cVar2; + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_60,"CvScalar cvSum(const CvArr*)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xed9); + cv::String::deallocate((String *)&local_60); + } + local_80[0] = local_80[(int)(iVar6 - 1U)]; + } + auVar8._8_8_ = 0; + auVar8._0_8_ = local_80[0]; + /* try { // try from 003b21a0 to 004b21a3 has its CatchHandler @ 003b3c74 */ + return auVar8; +} + + +================================================================== + +### FUNC 003b22ac (276 bytes) name=cvCountNonZero + +undefined4 cvCountNonZero(cv *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined4 uVar4; + int iVar5; + AutoBuffer *in_x5; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + /* try { // try from 003b22c8 to 004b22cb has its CatchHandler @ 003b3cd8 */ + /* try { // try from 003b22d0 to 004b22d3 has its CatchHandler @ 003b3ca8 */ + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,in_x5); + if ((local_60 >> 3 & 0x1ff) != 0) { + local_68 = 0; + local_64 = 0; + local_78[0] = 0x2010000; + local_70 = (Mat *)&local_60; + cv::extractImageCOI(param_1,(_OutputArray *)local_78,-1); + } + local_68 = 0; + local_64 = 0; + local_78[0] = 0x1010000; + local_70 = (Mat *)&local_60; + uVar4 = cv::countNonZero((_InputArray *)local_78); + /* try { // try from 003b232c to 004b234b has its CatchHandler @ 003b3c24 */ + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar5 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar5 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar5 = 0; + do { + *local_20 = 0; + iVar5 = iVar5 + 1; + local_20 = local_20 + 1; + } while (iVar5 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return uVar4; +} + + +================================================================== + +### FUNC 003b23e8 (744 bytes) name=cvAvg + +undefined1 [16] cvAvg(cv *param_1,cv *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + int iVar6; + _InputArray *p_Var7; + char *pcVar8; + _InputArray *p_Var9; + AutoBuffer *in_x5; + undefined1 auVar10 [16]; + undefined8 local_120; + undefined8 local_118; + undefined4 local_110 [2]; + Mat *local_108; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8 [2]; + Mat *local_f0; + undefined4 local_e8; + undefined4 local_e4; + ulong local_e0 [4]; + Mat aMStack_c0 [4]; + int local_bc; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + long local_88; + undefined4 *local_80; + undefined1 *local_78; + undefined1 auStack_70 [16]; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + p_Var9 = (_InputArray *)0x1; + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,in_x5); + if (param_2 == (cv *)0x0) { + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x1010000; + local_f0 = aMStack_c0; + p_Var7 = (_InputArray *)cv::noArray(); + cv::mean((cv *)local_f8,p_Var7,p_Var9); + } + else { + local_110[0] = 0x1010000; + local_100 = 0; + local_fc = 0; + local_108 = aMStack_c0; + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,(AutoBuffer *)0x1010000); + local_e8 = 0; + local_e4 = 0; + local_f8[0] = 0x1010000; + local_f0 = (Mat *)&local_60; + cv::mean((cv *)local_110,(_InputArray *)local_f8,(_InputArray *)0x1010000); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 003b249c to 004b249f has its CatchHandler @ 003b3cb0 */ + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_60._4_4_) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_60._4_4_); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + } + if ((((param_1 != (cv *)0x0) && (*(int *)param_1 == 0x90)) && (*(long *)(param_1 + 0x58) != 0)) && + (iVar6 = cvGetImageCOI(param_1), iVar6 != 0)) { + if (3 < iVar6 - 1U) { + local_120 = 0; + /* try { // try from 003b2678 to 004b267b has its CatchHandler @ 003b3c24 */ + local_118 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_120,0x13); + cVar2 = s_0_<_coi_&&_coi_<__4_00473718[0x12]; + uVar5 = s_0_<_coi_&&_coi_<__4_00473718._8_8_; + uVar4 = s_0_<_coi_&&_coi_<__4_00473718._0_8_; + *(undefined2 *)(pcVar8 + 0x10) = s_0_<_coi_&&_coi_<__4_00473718._16_2_; + pcVar8[0x12] = cVar2; + *(undefined8 *)pcVar8 = uVar4; + *(undefined8 *)(pcVar8 + 8) = uVar5; + cv::error(-0xd7,(String *)&local_120,"CvScalar cvAvg(const void*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xef3); + cv::String::deallocate((String *)&local_120); + } + local_e0[0] = local_e0[(int)(iVar6 - 1U)]; + local_e0[1] = 0; + local_e0[2] = 0; + local_e0[3] = 0; + } + local_60 = local_e0[0]; + local_58 = local_e0[1]; + local_50 = local_e0[2]; + uStack_48 = local_e0[3]; + if (local_88 != 0) { + piVar1 = (int *)(local_88 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate(aMStack_c0); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + do { + *local_80 = 0; + iVar6 = iVar6 + 1; + local_80 = local_80 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + auVar10._8_8_ = 0; + auVar10._0_8_ = local_60; + return auVar10; +} + + +================================================================== + +### FUNC 003b2750 (1268 bytes) name=cvAvgSdv + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvAvgSdv(cv *param_1,undefined8 *param_2,undefined8 *param_3,cv *param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + uint uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 *puVar7; + int iVar8; + char *pcVar9; + AutoBuffer *pAVar10; + undefined4 local_1a8 [2]; + Mat *local_1a0; + undefined4 local_198; + undefined4 local_194; + undefined4 local_190 [2]; + undefined8 *local_188; + undefined4 local_180; + undefined4 local_17c; + undefined8 local_178; + undefined8 *local_170; + undefined4 local_168; + undefined4 local_164; + undefined8 local_160 [2]; + undefined8 local_150; + undefined8 uStack_148; + undefined8 local_140 [4]; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + AutoBuffer *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined4 local_c0; + uint local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + AutoBuffer *pAVar11; + + local_140[1] = 0; + local_140[0] = 0; + local_100 = 0; + pAVar10 = (AutoBuffer *)&local_150; + local_160[1] = 0; + local_160[0] = 0; + local_d8 = &local_d0; + local_e0 = (AutoBuffer *)&uStack_118; + local_110 = 0; + local_140[3] = 0; + local_140[2] = 0; + uStack_c8 = 0; + local_d0 = 0; + uStack_108 = 0; + uStack_148 = 0; + local_150 = 0; + uStack_f8 = 0; + local_f0 = 0; + lStack_e8 = 0; + uStack_118 = _UNK_003b2cd8; + local_120 = _DAT_003b2cd0; + if (param_4 == (cv *)0x0) goto LAB_003b2948; + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,pAVar10); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + puVar7 = local_78; + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + /* try { // try from 003b2858 to 004b285b has its CatchHandler @ 003b3a5c */ + uStack_108 = 0; + if (local_120._4_4_ < 1) { +LAB_003b288c: + if (2 < (int)local_bc) goto LAB_003b2898; + uStack_118 = local_b8; + local_120 = CONCAT44(local_bc,local_c0); + *local_d8 = *local_78; + local_d8[1] = puVar7[1]; + } + else { + iVar8 = 0; + pAVar11 = local_e0; + do { + pAVar10 = pAVar11 + 4; + *(undefined4 *)pAVar11 = 0; + iVar8 = iVar8 + 1; + pAVar11 = pAVar10; + } while (iVar8 < local_120._4_4_); + if (local_120._4_4_ < 3) goto LAB_003b288c; +LAB_003b2898: + local_120 = CONCAT44(local_120._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_120,(Mat *)&local_c0); + } + uStack_f8 = uStack_98; + local_100 = local_a0; + lStack_e8 = lStack_88; + local_f0 = local_90; + uStack_108 = uStack_a8; + local_110 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < (int)local_bc) { + iVar8 = 0; + do { + *local_80 = 0; + iVar8 = iVar8 + 1; + pAVar10 = (AutoBuffer *)(ulong)local_bc; + local_80 = local_80 + 1; + } while (iVar8 < (int)local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } +LAB_003b2948: + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,pAVar10); + local_198 = 0; + local_194 = 0; + local_1a8[0] = 0x1010000; + local_190[0] = 0xc2020006; + local_180 = 1; + local_17c = 4; + local_178 = CONCAT44(local_178._4_4_,0xc2020006); + local_168 = 1; + local_164 = 4; + local_b0 = 0; + local_c0 = 0x1010000; + local_1a0 = aMStack_60; + local_188 = local_160; + local_170 = local_140; + local_b8 = (Mat *)&local_120; + cv::meanStdDev((_InputArray *)local_1a8,(_OutputArray *)local_190,(_OutputArray *)&local_178, + (_InputArray *)&local_c0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + /* try { // try from 003b2a38 to 004b2a3b has its CatchHandler @ 003b3974 */ + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if ((((param_1 != (cv *)0x0) && (*(int *)param_1 == 0x90)) && (*(long *)(param_1 + 0x58) != 0)) && + (iVar8 = cvGetImageCOI(param_1), iVar8 != 0)) { + uVar4 = iVar8 - 1; + if (3 < uVar4) { + /* try { // try from 003b2be4 to 004b2be7 has its CatchHandler @ 003b3a84 */ + local_178 = 0; + local_170 = (undefined8 *)0x0; + pcVar9 = (char *)cv::String::allocate((String *)&local_178,0x13); + cVar2 = s_0_<_coi_&&_coi_<__4_00473718[0x12]; + uVar6 = s_0_<_coi_&&_coi_<__4_00473718._8_8_; + uVar5 = s_0_<_coi_&&_coi_<__4_00473718._0_8_; + *(undefined2 *)(pcVar9 + 0x10) = s_0_<_coi_&&_coi_<__4_00473718._16_2_; + pcVar9[0x12] = cVar2; + *(undefined8 *)pcVar9 = uVar5; + *(undefined8 *)(pcVar9 + 8) = uVar6; + cv::error(-0xd7,(String *)&local_178, + "void cvAvgSdv(const CvArr*, CvScalar*, CvScalar*, const void*)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xf0b); + cv::String::deallocate((String *)&local_178); + } + local_160[0] = local_160[(int)uVar4]; + local_140[0] = local_140[(int)uVar4]; + local_160[1] = 0; + local_150 = 0; + uStack_148 = 0; + local_140[1] = 0; + local_140[2] = 0; + local_140[3] = 0; + } + if (param_2 != (undefined8 *)0x0) { + *param_2 = local_160[0]; + param_2[1] = local_160[1]; + param_2[2] = local_150; + param_2[3] = uStack_148; + } + if (param_3 != (undefined8 *)0x0) { + *param_3 = local_140[0]; + param_3[1] = local_140[1]; + param_3[2] = local_140[2]; + param_3[3] = local_140[3]; + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar8 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar8 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + /* try { // try from 003b2aac to 004b2aaf has its CatchHandler @ 003b3c0c */ + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar8 = 0; + pAVar10 = local_e0; + do { + *(undefined4 *)pAVar10 = 0; + iVar8 = iVar8 + 1; + pAVar10 = pAVar10 + 4; + } while (iVar8 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + /* try { // try from 003b2b20 to 004b2b23 has its CatchHandler @ 003b3c24 */ + return; +} + + +================================================================== + +### FUNC 003b2ce0 (988 bytes) name=cvMinMaxLoc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void cvMinMaxLoc(cv *param_1,double *param_2,double *param_3,Point_ *param_4,Point_ *param_5, + cv *param_6) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 *puVar4; + AutoBuffer *pAVar5; + int iVar6; + undefined8 *puVar7; + undefined4 local_138 [2]; + Mat *local_130; + undefined4 local_128; + undefined4 local_124; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + undefined4 local_c0; + int local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + uint local_60; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + pAVar5 = (AutoBuffer *)&DAT_003b3140; + local_d8 = &local_d0; + uStack_118 = _UNK_003b3148; + local_120 = _DAT_003b3140; + /* try { // try from 003b2d18 to 004b2e0b has its CatchHandler @ 003b3c7c */ + local_e0 = &uStack_118; + uStack_c8 = 0; + local_d0 = 0; + local_110 = 0; + uStack_108 = 0; + local_100 = 0; + uStack_f8 = 0; + local_f0 = 0; + lStack_e8 = 0; + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,(AutoBuffer *)&DAT_003b3140); + if (param_6 == (cv *)0x0) goto LAB_003b2ef8; + cv::cvarrToMat(param_6,(void *)0x0,true,false,0,pAVar5); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + /* try { // try from 003b30a0 to 004b30df has its CatchHandler @ 003b3c24 */ + } + } + puVar4 = local_78; + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (local_120._4_4_ < 1) { +LAB_003b2e1c: + if (2 < local_bc) goto LAB_003b3070; + uStack_118 = local_b8; + local_120 = CONCAT44(local_bc,local_c0); + *local_d8 = *local_78; + /* try { // try from 003b2e4c to 004b2e4f has its CatchHandler @ 003b3c2c */ + local_d8[1] = puVar4[1]; + } + else { + iVar6 = 0; + puVar7 = local_e0; + do { + *(undefined4 *)puVar7 = 0; + iVar6 = iVar6 + 1; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } while (iVar6 < local_120._4_4_); + if (local_120._4_4_ < 3) goto LAB_003b2e1c; +LAB_003b3070: + local_120 = CONCAT44(local_120._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_120,(Mat *)&local_c0); + } + /* try { // try from 003b2e54 to 004b2e67 has its CatchHandler @ 003b3c24 */ + /* try { // try from 003b2e70 to 004b2e7f has its CatchHandler @ 003b3c2c */ + uStack_f8 = uStack_98; + local_100 = local_a0; + lStack_e8 = lStack_88; + local_f0 = local_90; + uStack_108 = uStack_a8; + local_110 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar6 = 0; + do { + *local_80 = 0; + iVar6 = iVar6 + 1; + local_80 = local_80 + 1; + } while (iVar6 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } +LAB_003b2ef8: + if ((local_60 >> 3 & 0x1ff) != 0) { + local_b0 = 0; + local_c0 = 0x2010000; + local_b8 = (Mat *)&local_60; + cv::extractImageCOI(param_1,(_OutputArray *)&local_c0,-1); + } + local_128 = 0; + local_124 = 0; + local_138[0] = 0x1010000; + local_b0 = 0; + local_c0 = 0x1010000; + local_130 = (Mat *)&local_60; + local_b8 = (Mat *)&local_120; + cv::minMaxLoc((_InputArray *)local_138,param_2,param_3,param_4,param_5,(_InputArray *)&local_c0); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar6 = 0; + do { + *local_20 = 0; + iVar6 = iVar6 + 1; + local_20 = local_20 + 1; + } while (iVar6 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_120._4_4_) { + iVar6 = 0; + puVar4 = local_e0; + do { + *(undefined4 *)puVar4 = 0; + iVar6 = iVar6 + 1; + puVar4 = (undefined8 *)((long)puVar4 + 4); + } while (iVar6 < local_120._4_4_); + } + if (local_d8 != &local_d0) { + cv::fastFree(local_d8); + } + return; +} + + +================================================================== + +### FUNC 003b3150 (288 bytes) name=FUN_003b3150 + +undefined8 FUN_003b3150(long param_1,long param_2,double *param_3,int param_4,ulong param_5) + +{ + uint uVar1; + long lVar2; + float *pfVar3; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + double dVar9; + float *pfVar4; + + dVar9 = *param_3; + iVar5 = (int)param_5; + if (param_2 != 0) { + if (0 < param_4) { + lVar7 = 0; + do { + /* try { // try from 003b3168 to 004b316b has its CatchHandler @ 003b3c50 */ + /* try { // try from 003b3170 to 004b3173 has its CatchHandler @ 003b3ca8 */ + if ((*(char *)(param_2 + lVar7) != '\0') && (0 < iVar5)) { + lVar6 = 0; + do { + lVar2 = lVar6 * 4; + lVar6 = lVar6 + 1; + dVar8 = (double)*(float *)(param_1 + lVar2); + dVar9 = dVar9 + dVar8 * dVar8; + } while ((int)lVar6 < iVar5); + } + lVar7 = lVar7 + 1; + param_1 = param_1 + (-(param_5 >> 0x1f & 1) & 0xfffffffc00000000 | + (param_5 & 0xffffffff) << 2); + } while ((int)lVar7 < param_4); + } + *param_3 = dVar9; + return 0; + } + param_4 = param_4 * iVar5; + if (param_4 < 4) { + dVar8 = 0.0; + iVar5 = 0; + } + else { + dVar8 = 0.0; + uVar1 = param_4 - 4U >> 2; + pfVar3 = (float *)(param_1 + 4); + do { + /* try { // try from 003b31dc to 004b31df has its CatchHandler @ 003b1770 */ + pfVar4 = pfVar3 + 4; + /* try { // try from 003b31ec to 004b31ef has its CatchHandler @ 003b3ca0 */ + /* try { // try from 003b31fc to 004b31ff has its CatchHandler @ 003b3c84 */ + dVar8 = dVar8 + (double)*pfVar3 * (double)*pfVar3 + (double)pfVar3[-1] * (double)pfVar3[-1] + + (double)pfVar3[1] * (double)pfVar3[1] + (double)pfVar3[2] * (double)pfVar3[2]; + pfVar3 = pfVar4; + } while (pfVar4 != (float *)(param_1 + (ulong)uVar1 * 0x10 + 0x14)); + iVar5 = (uVar1 + 1) * 4; + } + /* try { // try from 003b3220 to 004b322b has its CatchHandler @ 003b3c24 */ + if (iVar5 < param_4) { + /* try { // try from 003b3238 to 004b323b has its CatchHandler @ 003b3bd4 */ + pfVar3 = (float *)(param_1 + (long)iVar5 * 4); + do { + pfVar4 = pfVar3 + 1; + /* try { // try from 003b3248 to 004b324b has its CatchHandler @ 003b3a5c */ + dVar8 = dVar8 + (double)*pfVar3 * (double)*pfVar3; + pfVar3 = pfVar4; + } while (pfVar4 != (float *)(param_1 + + ((long)iVar5 + 1 + (ulong)(uint)((param_4 + -1) - iVar5)) * 4)); + } + *param_3 = dVar9 + dVar8; + return 0; +} + + +================================================================== + +### FUNC 003b3270 (3576 bytes) name=norm + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::norm(cv::_InputArray const&, int, cv::_InputArray const&) */ + +undefined1 [16] cv::norm(_InputArray *param_1,int param_2,_InputArray *param_3) + +{ + bool bVar1; + bool bVar2; + long lVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + char cVar9; + uint uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + int iVar15; + double dVar16; + int iVar17; + int iVar18; + void *__dest; + long lVar19; + _InputArray *p_Var20; + char *pcVar21; + long lVar22; + undefined8 *puVar23; + int *piVar24; + ulong uVar25; + float *pfVar26; + ulong uVar28; + ulong uVar29; + uint uVar30; + undefined4 uVar31; + int iVar32; + Mat *pMVar33; + float fVar34; + double dVar35; + undefined1 auVar36 [16]; + float fVar37; + double *pdVar38; + uint uVar39; + Mat *local_1b0; + Mat *local_1a8; + int local_184; + double local_180; + undefined8 local_178; + undefined8 local_170; + Mat *local_168; + Mat *local_160; + undefined4 local_158; + undefined4 local_154; + uchar *local_150; + Mat *local_148; + undefined4 local_140; + undefined4 local_13c; + Mat *local_138; + Mat *local_130; + undefined8 local_128; + undefined8 local_120; + undefined8 uStack_118; + undefined8 local_110; + undefined8 local_108; + ulong local_100; + ulong local_f8; + undefined8 local_f0; + long local_e8; + undefined8 *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 uStack_c8; + uint local_c0; + int local_bc; + int local_b8; + int local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + int *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + float *pfVar27; + + uVar5 = param_2 & 7; + /* try { // try from 003b3290 to 004b3293 has its CatchHandler @ 003b3c24 */ + /* try { // try from 003b329c to 004b329f has its CatchHandler @ 003b3974 */ + bVar1 = uVar5 - 4 < 2; + /* try { // try from 003b32a8 to 004b32ab has its CatchHandler @ 003b3c0c */ + /* try { // try from 003b32b4 to 004b32b7 has its CatchHandler @ 003b3c24 */ + if (((!bVar1) && (1 < uVar5 - 1)) && + ((1 < uVar5 - 6 || (iVar17 = _InputArray::type(param_1,-1), iVar17 != 0)))) { + local_60 = 0; + local_58 = 0; + __dest = (void *)String::allocate((String *)&local_60,0xb1); + memcpy(__dest, + "normType == NORM_INF || normType == NORM_L1 || normType == NORM_L2 || normType == NORM_L2SQR || ((normType == NORM_HAMMING || normType == NORM_HAMMING2) && _src.type() == CV_8U)" + ,0xb1); + error(-0xd7,(String *)&local_60,"double cv::norm(cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xa3d); + String::deallocate((String *)&local_60); + } + iVar17 = _InputArray::kind(param_1); + if (iVar17 == 0x10000) { + pMVar33 = *(Mat **)(param_1 + 8); + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar33; + local_bc = *(int *)(pMVar33 + 4); + local_b8 = *(int *)(pMVar33 + 8); + local_b4 = *(int *)(pMVar33 + 0xc); + local_b0 = *(long *)(pMVar33 + 0x10); + local_a8 = *(undefined8 *)(pMVar33 + 0x18); + local_a0 = *(undefined8 *)(pMVar33 + 0x20); + local_98 = *(undefined8 *)(pMVar33 + 0x28); + local_90 = *(undefined8 *)(pMVar33 + 0x30); + local_88 = *(long *)(pMVar33 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar24 = (int *)(local_88 + 0x14); + do { + cVar9 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar2) { + *piVar24 = *piVar24 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (*(int *)(pMVar33 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar33 + 0x48); + local_68 = (*(undefined8 **)(pMVar33 + 0x48))[1]; + } + else { + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_1a8 = (Mat *)&local_c0; + iVar17 = _InputArray::kind(param_3); + if (iVar17 == 0x10000) { + pMVar33 = *(Mat **)(param_3 + 8); + local_20 = &local_58; + local_18 = &local_10; + uVar4 = *(uint *)pMVar33; + local_50 = *(long *)(pMVar33 + 0x10); + /* catch() { ... } // from try @ 003b2be4 with catch @ 003b3a84 */ + local_60 = *(ulong *)pMVar33; + local_58 = *(undefined8 *)(pMVar33 + 8); + local_48 = *(undefined8 *)(pMVar33 + 0x18); + local_40 = *(undefined8 *)(pMVar33 + 0x20); + local_38 = *(undefined8 *)(pMVar33 + 0x28); + local_30 = *(undefined8 *)(pMVar33 + 0x30); + local_28 = *(long *)(pMVar33 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar24 = (int *)(local_28 + 0x14); + do { + cVar9 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar2) { + *piVar24 = *piVar24 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (*(int *)(pMVar33 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar33 + 0x48); + local_8 = (*(undefined8 **)(pMVar33 + 0x48))[1]; + } + else { + local_60 = (ulong)uVar4; + Mat::copySize((Mat *)&local_60,pMVar33); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_1b0 = (Mat *)&local_60; + uVar6 = local_c0 & 7; + uVar4 = (local_c0 >> 3 & 0x1ff) + 1; + uVar29 = local_60; + if ((local_c0 >> 0xe & 1) == 0) goto joined_r0x003b35f0; + if (local_50 == 0) { +joined_r0x003b33d4: + if (local_bc < 3) { + uVar25 = (long)local_b4 * (long)local_b8 * (long)(int)uVar4; + uVar28 = (ulong)(int)uVar25; + if (uVar28 == uVar25) goto LAB_003b3d80; + } + else { + lVar22 = 0; + lVar19 = 1; + do { + piVar24 = local_80 + lVar22; + lVar22 = lVar22 + 1; + lVar19 = lVar19 * *piVar24; + } while ((int)lVar22 < local_bc); + uVar25 = lVar19 * (int)uVar4; + uVar28 = (ulong)(int)uVar25; + if (uVar28 == uVar25) { +LAB_003b3d80: + if (uVar6 == 5) { + if (uVar5 == 4) { + /* catch() { ... } // from try @ 003b3dc4 with catch @ 003b409c + catch() { ... } // from try @ 003b3e20 with catch @ 003b409c */ + local_120 = 0.0; + FUN_003b3150(local_b0,0,&local_120,uVar28,1); + dVar35 = SQRT(local_120); + dVar16 = local_180; + if (NAN(dVar35)) { + dVar35 = ::sqrt(local_120); + dVar16 = local_180; + } + goto LAB_003b3840; + } + if (uVar5 == 5) { + local_120 = 0.0; + FUN_003b3150(local_b0,0,&local_120,uVar28,1); + dVar35 = local_120; + dVar16 = local_180; + goto LAB_003b3840; + } + iVar17 = (int)uVar28; + dVar16 = local_180; + if (uVar5 == 2) { + /* try { // try from 003b3fa0 to 004b3fa3 has its CatchHandler @ 003b4120 */ + if (iVar17 < 4) { + dVar35 = 0.0; + iVar18 = 0; + } + else { + dVar35 = 0.0; + uVar5 = iVar17 - 4U >> 2; + pfVar26 = (float *)(local_b0 + 4); + do { + pfVar27 = pfVar26 + 4; + /* try { // try from 003b3fcc to 004b401f has its CatchHandler @ 003b3d20 */ + dVar35 = dVar35 + (double)ABS(pfVar26[-1]) + (double)ABS(*pfVar26) + + (double)ABS(pfVar26[1]) + (double)ABS(pfVar26[2]); + pfVar26 = pfVar27; + } while (pfVar27 != (float *)(local_b0 + (ulong)uVar5 * 0x10 + 0x14)); + iVar18 = (uVar5 + 1) * 4; + } + if (iVar18 < (int)uVar25) { + pfVar26 = (float *)(local_b0 + (long)iVar18 * 4); + do { + pfVar27 = pfVar26 + 1; + /* try { // try from 003b403c to 004b403f has its CatchHandler @ 003b4104 */ + /* try { // try from 003b4048 to 004b404b has its CatchHandler @ 003b4120 */ + dVar35 = dVar35 + (double)ABS(*pfVar26); + pfVar26 = pfVar27; + } while (pfVar27 != + (float *)(local_b0 + + ((long)iVar18 + 1 + (ulong)(uint)((iVar17 + -1) - iVar18)) * 4)); + } + dVar35 = dVar35 + 0.0; + goto LAB_003b3840; + } + if (uVar5 == 1) { + if (0 < iVar17) { + fVar34 = 0.0; + lVar22 = 0; + do { + fVar37 = ABS(*(float *)(local_b0 + lVar22 * 4)); + if (fVar37 <= fVar34) { + fVar37 = fVar34; + } + fVar34 = fVar37; + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar25); + if (0.0 < fVar34) { + dVar35 = (double)fVar34; + goto LAB_003b3840; + } + } + dVar35 = 0.0; + goto LAB_003b3840; + } + } + else if (uVar6 == 0) { + /* try { // try from 003b3d94 to 004b3d97 has its CatchHandler @ 003b4104 */ + if (uVar5 == 6) { + iVar17 = FUN_003cd760(local_b0,uVar28 & 0xffffffff); + } + else { + if (uVar5 != 7) goto joined_r0x003b35f0; + iVar17 = FUN_003cd9f4(local_b0,uVar28 & 0xffffffff,2); + } + dVar35 = (double)iVar17; + dVar16 = local_180; + goto LAB_003b3840; + } + } + } +joined_r0x003b35f0: + if (local_50 != 0) { + /* try { // try from 003b3420 to 004b3423 has its CatchHandler @ 003b3c24 */ + if (local_60._4_4_ < 3) goto LAB_003b3978; +LAB_003b3424: + lVar19 = 0; + /* try { // try from 003b342c to 004b34bb has its CatchHandler @ 003b3a5c */ + lVar22 = 1; + do { + lVar3 = lVar19 * 4; + lVar19 = lVar19 + 1; + lVar22 = lVar22 * *(int *)((long)local_20 + lVar3); + } while ((int)lVar19 < local_60._4_4_); + goto LAB_003b3444; + } +joined_r0x003b3600: + /* try { // try from 003b35f8 to 004b35fb has its CatchHandler @ 003b3bf8 */ + /* try { // try from 003b3600 to 004b3603 has its CatchHandler @ 003b3c24 */ + if (uVar5 - 6 < 2) { + /* catch() { ... } // from try @ 003b3168 with catch @ 003b3c50 */ + local_60 = uVar29; + if (local_50 != 0) { + local_60._4_4_ = (int)(uVar29 >> 0x20); + bVar1 = 2 < local_60._4_4_; + iVar17 = local_60._4_4_; + if (bVar1) goto LAB_003b346c; +LAB_003b3dc4: + /* try { // try from 003b3dc4 to 004b3dc7 has its CatchHandler @ 003b409c */ + lVar22 = (long)local_58._4_4_ * (long)(int)local_58; +LAB_003b348c: + if (lVar22 != 0) { + local_110 = 0; + local_108 = 0; + local_d8 = &local_d0; + local_e0 = &uStack_118; + local_158 = 0; + uStack_118 = _LAB_003b4128; + local_120 = _DAT_003b4120; + local_168 = (Mat *)CONCAT44(local_168._4_4_,0x1010000); + local_150 = (uchar *)CONCAT44(local_150._4_4_,0x1010000); + /* try { // try from 003b34d8 to 004b34db has its CatchHandler @ 003b3c24 */ + local_100 = 0; + local_f8 = 0; + local_f0 = 0; + local_e8 = 0; + uStack_c8 = 0; + local_d0 = 0; + local_148 = local_1b0; + local_154 = 0; + local_160 = local_1a8; + local_140 = 0; + local_13c = 0; + local_128 = 0; + local_138._0_4_ = 0x2010000; + local_130 = (Mat *)&local_120; + p_Var20 = (_InputArray *)noArray(); + /* try { // try from 003b352c to 004b352f has its CatchHandler @ 003b3c60 */ + /* try { // try from 003b3534 to 004b35a3 has its CatchHandler @ 003b3c24 */ + bitwise_and((_InputArray *)&local_168,(_InputArray *)&local_150,(_OutputArray *)&local_138 + ,p_Var20); + local_128 = 0; + local_138 = (Mat *)CONCAT44(local_138._4_4_,0x1010000); + local_130 = (Mat *)&local_120; + p_Var20 = (_InputArray *)noArray(); + dVar35 = (double)norm((_InputArray *)&local_138,uVar5,p_Var20); + if (local_e8 != 0) { + piVar24 = (int *)(local_e8 + 0x14); + do { + iVar17 = *piVar24; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar1) { + *piVar24 = iVar17 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar17 == 1) { + Mat::deallocate((Mat *)&local_120); + } + } + local_e8 = 0; + local_f8 = 0; + local_100 = 0; + local_110 = 0; + local_108 = 0; + if (0 < local_120._4_4_) { + iVar17 = 0; + puVar23 = local_e0; + do { + *(undefined4 *)puVar23 = 0; + iVar17 = iVar17 + 1; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar17 < local_120._4_4_); + } + dVar16 = local_180; + if (local_d8 != &local_d0) { + fastFree(local_d8); + dVar16 = local_180; + } + goto LAB_003b3840; + } + } + /* catch() { ... } // from try @ 003b3d58 with catch @ 003b3d20 + catch() { ... } // from try @ 003b3fcc with catch @ 003b3d20 + catch() { ... } // from try @ 003b4100 with catch @ 003b3d20 */ + local_130 = (Mat *)0x0; + local_138 = local_1a8; + uVar31 = 2; + if (uVar5 == 6) { + uVar31 = 1; + } + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_120,&local_138,&local_150,-1); + uVar25 = local_f8; + iVar17 = 0; + /* try { // try from 003b3d74 to 004b3d77 has its CatchHandler @ 003b4120 */ + for (uVar29 = 0; uVar29 < local_100; uVar29 = uVar29 + 1) { + iVar18 = FUN_003cd9f4(local_150,uVar25 & 0xffffffff,uVar31); + /* try { // try from 003b3d58 to 004b3d5b has its CatchHandler @ 003b3d20 */ + iVar17 = iVar17 + iVar18; + NAryMatIterator::operator++((NAryMatIterator *)&local_120); + } + dVar35 = (double)iVar17; + dVar16 = local_180; + goto LAB_003b3840; + } + } + else { + if (2 < local_60._4_4_) { + lVar19 = 1; + lVar22 = 0; + do { + lVar3 = lVar22 * 4; + /* catch() { ... } // from try @ 003b1eb0 with catch @ 003b3c74 + catch() { ... } // from try @ 003b21a0 with catch @ 003b3c74 + catch() { ... } // from try @ 003b2cbc with catch @ 003b3c74 */ + lVar22 = lVar22 + 1; + /* catch() { ... } // from try @ 003b182c with catch @ 003b3c7c + catch() { ... } // from try @ 003b1888 with catch @ 003b3c7c + catch() { ... } // from try @ 003b1908 with catch @ 003b3c7c + catch() { ... } // from try @ 003b2d18 with catch @ 003b3c7c + catch() { ... } // from try @ 003b37a8 with catch @ 003b3c7c */ + lVar19 = lVar19 * *(int *)((long)local_20 + lVar3); + } while ((int)lVar22 < local_60._4_4_); + /* catch() { ... } // from try @ 003b1a94 with catch @ 003b3c84 + catch() { ... } // from try @ 003b1e3c with catch @ 003b3c84 + catch() { ... } // from try @ 003b2cb0 with catch @ 003b3c84 + catch() { ... } // from try @ 003b31fc with catch @ 003b3c84 */ + if (lVar19 == 0) goto joined_r0x003b33d4; + goto LAB_003b3424; + } + if ((long)local_58._4_4_ * (long)(int)local_58 == 0) goto joined_r0x003b33d4; +LAB_003b3978: + lVar22 = (long)local_58._4_4_ * (long)(int)local_58; +LAB_003b3444: + if (lVar22 == 0) goto joined_r0x003b3600; + if ((local_60 & 0xfff) != 0) { + local_178 = 0; + local_170 = 0; + pcVar21 = (char *)String::allocate((String *)&local_178,0x24); + uVar14 = s_mask_empty______mask_type______C_004734c0._24_8_; + uVar13 = s_mask_empty______mask_type______C_004734c0._16_8_; + uVar12 = s_mask_empty______mask_type______C_004734c0._8_8_; + uVar11 = s_mask_empty______mask_type______C_004734c0._0_8_; + /* catch() { ... } // from try @ 003b35f8 with catch @ 003b3bf8 */ + /* catch() { ... } // from try @ 003b2aac with catch @ 003b3c0c + catch() { ... } // from try @ 003b32a8 with catch @ 003b3c0c */ + /* catch() { ... } // from try @ 003b1900 with catch @ 003b3c14 */ + *(undefined4 *)(pcVar21 + 0x20) = s_mask_empty______mask_type______C_004734c0._32_4_; + /* catch() { ... } // from try @ 003b1ce4 with catch @ 003b3c24 + catch() { ... } // from try @ 003b232c with catch @ 003b3c24 + catch() { ... } // from try @ 003b2678 with catch @ 003b3c24 + catch() { ... } // from try @ 003b2b20 with catch @ 003b3c24 + catch() { ... } // from try @ 003b2c58 with catch @ 003b3c24 + catch() { ... } // from try @ 003b2e54 with catch @ 003b3c24 + catch() { ... } // from try @ 003b30a0 with catch @ 003b3c24 + catch() { ... } // from try @ 003b3220 with catch @ 003b3c24 + catch() { ... } // from try @ 003b3290 with catch @ 003b3c24 + catch() { ... } // from try @ 003b32b4 with catch @ 003b3c24 + catch() { ... } // from try @ 003b3420 with catch @ 003b3c24 + catch() { ... } // from try @ 003b34d8 with catch @ 003b3c24 + catch() { ... } // from try @ 003b3534 with catch @ 003b3c24 + catch() { ... } // from try @ 003b3600 with catch @ 003b3c24 */ + *(undefined8 *)pcVar21 = uVar11; + *(undefined8 *)(pcVar21 + 8) = uVar12; + /* catch() { ... } // from try @ 003b2510 with catch @ 003b3c2c + catch() { ... } // from try @ 003b2e4c with catch @ 003b3c2c + catch() { ... } // from try @ 003b2e70 with catch @ 003b3c2c */ + *(undefined8 *)(pcVar21 + 0x10) = uVar13; + *(undefined8 *)(pcVar21 + 0x18) = uVar14; + error(-0xd7,(String *)&local_178,"double cv::norm(cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xb22); + String::deallocate((String *)&local_178); + uVar29 = local_60; + goto joined_r0x003b3600; + } + if (uVar5 - 6 < 2) { + bVar1 = local_60._4_4_ < 3; + iVar17 = local_60._4_4_; + if (bVar1) goto LAB_003b3dc4; +LAB_003b346c: + lVar19 = 0; + lVar22 = 1; + do { + lVar3 = lVar19 * 4; + lVar19 = lVar19 + 1; + lVar22 = lVar22 * *(int *)((long)local_20 + lVar3); + } while ((int)lVar19 < iVar17); + goto LAB_003b348c; + } + } + local_60 = uVar29; + pMVar33 = (Mat *)(&PTR_FUN_004f78a0)[(ulong)(uint)((int)uVar5 >> 1) * 8 + (long)(int)uVar6]; + if (pMVar33 == (Mat *)0x0) { + local_168 = pMVar33; + local_160 = pMVar33; + /* try { // try from 003b3e18 to 004b3e1b has its CatchHandler @ 003b410c */ + pcVar21 = (char *)String::allocate((String *)&local_168,9); + cVar9 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + /* try { // try from 003b3e20 to 004b3eb7 has its CatchHandler @ 003b409c */ + *(undefined8 *)pcVar21 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar21[8] = cVar9; + error(-0xd7,(String *)&local_168,"double cv::norm(cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xb3d); + String::deallocate((String *)&local_168); + } + pdVar38 = &local_180; + local_138 = local_1a8; + /* try { // try from 003b3650 to 004b3653 has its CatchHandler @ 003b3a5c */ + local_128 = 0; + local_130 = local_1b0; + local_180 = 0.0; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_120,&local_138,&local_150,-1); + uVar10 = (uint)local_f8; + if ((uVar5 != 2) || (3 < uVar6)) { + bVar2 = true; + if (bVar1 && uVar6 < 2) goto LAB_003b36a0; + lVar22 = 0; + uVar39 = 0; + bVar1 = false; + uVar30 = uVar10; + } + else { + bVar2 = uVar6 < 2; +LAB_003b36a0: + pdVar38 = (double *)&local_184; + if ((!bVar2) || (uVar5 != 2)) { + uVar39 = 0; + if (uVar4 != 0) { + uVar39 = 0x8000 / uVar4; + } + uVar30 = uVar39; + if ((int)uVar10 < (int)uVar39) { + uVar30 = uVar10; + } + } + else { + uVar39 = 0; + if (uVar4 != 0) { + uVar39 = 0x800000 / uVar4; + } + uVar30 = uVar39; + if ((int)uVar10 < (int)uVar39) { + uVar30 = uVar10; + } + } + if (local_bc < 1) { + bVar1 = true; + lVar22 = 0; + } + else { + bVar1 = true; + lVar22 = local_78[(long)local_bc + -1]; + } + } + local_184 = 0; + iVar17 = 0; + uVar29 = 0; + if (local_100 != 0) { + do { + if ((int)uVar10 < 1) { +LAB_003b37fc: + NAryMatIterator::operator++((NAryMatIterator *)&local_120); + } + else { + if (bVar1) { + iVar32 = 0; + iVar18 = 0; + do { + uVar7 = uVar30; + if ((int)(iVar32 + uVar10) < (int)uVar30) { + uVar7 = iVar32 + uVar10; + } + (*(code *)pMVar33)(local_150,local_148,pdVar38,uVar7,uVar4); + iVar15 = local_184; + iVar17 = iVar17 + uVar7; + if (((int)uVar39 <= (int)(iVar17 + uVar30)) || + ((local_100 <= uVar29 + 1 && ((int)uVar10 <= (int)(iVar18 + uVar7))))) { + iVar17 = 0; + /* try { // try from 003b37a8 to 004b38ef has its CatchHandler @ 003b3c7c */ + local_184 = 0; + local_180 = local_180 + (double)iVar15; + } + local_150 = local_150 + (int)uVar7 * lVar22; + if (local_148 != (Mat *)0x0) { + local_148 = local_148 + (int)uVar7; + } + iVar18 = iVar18 + uVar30; + iVar32 = iVar32 + -uVar30; + } while (iVar18 < (int)uVar10); + goto LAB_003b37fc; + } + iVar18 = 0; + uVar7 = uVar30; + do { + uVar8 = uVar30; + if ((int)(iVar18 + uVar10) < (int)uVar30) { + uVar8 = iVar18 + uVar10; + } + (*(code *)pMVar33)(local_150,local_148,pdVar38,uVar8,uVar4); + iVar17 = iVar17 + uVar8; + local_150 = local_150 + (int)uVar8 * lVar22; + if (local_148 != (Mat *)0x0) { + local_148 = local_148 + (int)uVar8; + } + iVar18 = iVar18 + -uVar30; + bVar2 = (int)uVar7 < (int)uVar10; + uVar7 = uVar7 + uVar30; + } while (bVar2); + /* try { // try from 003b3a58 to 004b3a5b has its CatchHandler @ 003b1770 */ + /* catch() { ... } // from try @ 003b2858 with catch @ 003b3a5c + catch() { ... } // from try @ 003b3248 with catch @ 003b3a5c + catch() { ... } // from try @ 003b33d0 with catch @ 003b3a5c + catch() { ... } // from try @ 003b342c with catch @ 003b3a5c + catch() { ... } // from try @ 003b3650 with catch @ 003b3a5c */ + NAryMatIterator::operator++((NAryMatIterator *)&local_120); + } + uVar29 = uVar29 + 1; + } while (uVar29 < local_100); + } + dVar35 = local_180; + dVar16 = local_180; + if (uVar5 == 1) { + /* catch() { ... } // from try @ 003b17d8 with catch @ 003b3ca0 + catch() { ... } // from try @ 003b1f38 with catch @ 003b3ca0 + catch() { ... } // from try @ 003b2c98 with catch @ 003b3ca0 + catch() { ... } // from try @ 003b31ec with catch @ 003b3ca0 */ + if (uVar6 != 6) { + /* catch() { ... } // from try @ 003b1dc8 with catch @ 003b3ca8 + catch() { ... } // from try @ 003b2274 with catch @ 003b3ca8 + catch() { ... } // from try @ 003b22d0 with catch @ 003b3ca8 + catch() { ... } // from try @ 003b2ca4 with catch @ 003b3ca8 + catch() { ... } // from try @ 003b2cc8 with catch @ 003b3ca8 + catch() { ... } // from try @ 003b3110 with catch @ 003b3ca8 + catch() { ... } // from try @ 003b3170 with catch @ 003b3ca8 */ + if (uVar6 == 5) { + dVar35 = (double)local_180._0_4_; + dVar16 = (double)local_180._0_4_; + } + else { + /* catch() { ... } // from try @ 003b249c with catch @ 003b3cb0 */ + dVar35 = (double)(int)local_180._0_4_; + dVar16 = (double)(int)local_180._0_4_; + } + } + } + else if ((uVar5 == 4) && (dVar35 = SQRT(local_180), dVar16 = dVar35, NAN(dVar35))) { + dVar35 = ::sqrt(local_180); + dVar16 = dVar35; + } +LAB_003b3840: + local_180 = dVar16; + if (local_28 != 0) { + piVar24 = (int *)(local_28 + 0x14); + do { + iVar17 = *piVar24; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar1) { + *piVar24 = iVar17 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar17 == 1) { + Mat::deallocate(local_1b0); + /* catch() { ... } // from try @ 003b3238 with catch @ 003b3bd4 + catch() { ... } // from try @ 003b3414 with catch @ 003b3bd4 */ + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar17 = 0; + puVar23 = local_20; + do { + iVar17 = iVar17 + 1; + *(undefined4 *)puVar23 = 0; + puVar23 = (undefined8 *)((long)puVar23 + 4); + } while (iVar17 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar24 = (int *)(local_88 + 0x14); + do { + iVar17 = *piVar24; + cVar9 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar24,0x10); + if (bVar1) { + *piVar24 = iVar17 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar17 == 1) { + Mat::deallocate(local_1a8); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar17 = 0; + piVar24 = local_80; + do { + iVar17 = iVar17 + 1; + *piVar24 = 0; + piVar24 = piVar24 + 1; + } while (iVar17 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + auVar36._8_8_ = 0; + auVar36._0_8_ = dVar35; + /* catch() { ... } // from try @ 003b2a38 with catch @ 003b3974 + catch() { ... } // from try @ 003b329c with catch @ 003b3974 */ + return auVar36; +} + + +================================================================== + +### FUNC 003b4130 (356 bytes) name=FUN_003b4130 + +undefined8 +FUN_003b4130(float *param_1,long param_2,long param_3,double *param_4,int param_5,ulong param_6) + +{ + float *pfVar1; + uint uVar2; + long lVar3; + float *pfVar4; + ulong uVar5; + int iVar6; + long lVar7; + float *pfVar8; + long lVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + + dVar13 = *param_4; + iVar6 = (int)param_6; + if (param_3 != 0) { + if (0 < param_5) { + uVar10 = -(param_6 >> 0x1f & 1) & 0xfffffffc00000000 | (param_6 & 0xffffffff) << 2; + lVar9 = 0; + do { + if ((*(char *)(param_3 + lVar9) != '\0') && (0 < iVar6)) { + lVar7 = 0; + do { + pfVar4 = param_1 + lVar7; + lVar3 = lVar7 * 4; + lVar7 = lVar7 + 1; + /* try { // try from 003b416c to 004b418b has its CatchHandler @ 003b4128 */ + dVar11 = (double)(*pfVar4 - *(float *)(param_2 + lVar3)); + dVar13 = dVar13 + dVar11 * dVar11; + } while ((int)lVar7 < iVar6); + } + lVar9 = lVar9 + 1; + param_1 = (float *)((long)param_1 + uVar10); + param_2 = param_2 + uVar10; + } while ((int)lVar9 < param_5); + } + *param_4 = dVar13; + return 0; + } + param_5 = param_5 * iVar6; + /* try { // try from 003b41a4 to 004b41df has its CatchHandler @ 003b51fc */ + if (param_5 < 4) { + dVar11 = 0.0; + uVar10 = 0; + } + else { + dVar11 = 0.0; + uVar2 = param_5 - 4U >> 2; + pfVar4 = (float *)(param_2 + 4); + pfVar8 = param_1; + do { + pfVar1 = pfVar4 + 4; + /* try { // try from 003b4218 to 004b421b has its CatchHandler @ 003b51ec */ + /* try { // try from 003b4220 to 004b4307 has its CatchHandler @ 003b51fc */ + dVar11 = dVar11 + (double)(pfVar8[1] - *pfVar4) * (double)(pfVar8[1] - *pfVar4) + + (double)(*pfVar8 - pfVar4[-1]) * (double)(*pfVar8 - pfVar4[-1]) + + (double)(pfVar8[2] - pfVar4[1]) * (double)(pfVar8[2] - pfVar4[1]) + + (double)(pfVar8[3] - pfVar4[2]) * (double)(pfVar8[3] - pfVar4[2]); + pfVar4 = pfVar1; + pfVar8 = pfVar8 + 4; + } while (pfVar1 != (float *)(param_2 + (ulong)uVar2 * 0x10 + 0x14)); + uVar10 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar10 < param_5) { + uVar5 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + lVar9 = 0; + do { + lVar7 = lVar9 + uVar5; + pfVar4 = (float *)(param_2 + uVar5 + lVar9); + lVar9 = lVar9 + 4; + dVar12 = (double)(*(float *)((long)param_1 + lVar7) - *pfVar4); + dVar11 = dVar11 + dVar12 * dVar12; + } while (lVar9 != ((ulong)(uint)((param_5 + -1) - (int)uVar10) + 1) * 4); + } + *param_4 = dVar13 + dVar11; + return 0; +} + + +================================================================== + +### FUNC 003b42a0 (4312 bytes) name=norm + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::norm(cv::_InputArray const&, cv::_InputArray const&, int, cv::_InputArray const&) */ + +undefined1 [16] +cv::norm(_InputArray *param_1,_InputArray *param_2,int param_3,_InputArray *param_4) + +{ + bool bVar1; + bool bVar2; + long lVar3; + float *pfVar4; + uint uVar5; + uint uVar6; + int iVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + uint uVar14; + ulong uVar15; + uint uVar16; + char cVar17; + int iVar18; + int iVar19; + undefined8 *puVar20; + void *__dest; + long lVar21; + char *pcVar22; + _InputArray *p_Var23; + undefined4 *puVar24; + int *piVar25; + long lVar26; + float *pfVar27; + float *pfVar28; + int iVar29; + int iVar30; + undefined4 uVar31; + int iVar32; + int iVar33; + Mat *pMVar34; + double *pdVar35; + double dVar36; + undefined1 auVar37 [16]; + float fVar38; + float fVar39; + double dVar40; + ulong uVar41; + Mat *local_228; + Mat *local_220; + Mat *local_218; + uint local_1fc; + double local_1f8; + undefined8 local_1f0; + undefined8 local_1e8; + undefined8 local_1e0; + undefined8 local_1d8; + Mat *local_1d0; + Mat *local_1c8; + undefined4 local_1c0; + undefined4 local_1bc; + uchar *local_1b8; + Mat *local_1b0; + long local_1a8; + Mat *local_1a0; + Mat *local_198; + Mat *local_190; + undefined8 uStack_188; + undefined8 local_180; + undefined8 uStack_178; + undefined8 local_170; + undefined8 local_168; + ulong local_160; + ulong local_158; + undefined8 local_150; + long local_148; + undefined8 *local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + int local_118; + int local_114; + float *local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + int *local_e0; + undefined8 *local_d8; + undefined8 local_d0; + undefined8 local_c8; + uint local_c0; + int local_bc; + undefined4 local_b8; + undefined4 local_b4; + long local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + long local_88; + undefined4 *local_80; + undefined8 *local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + undefined8 *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + cVar17 = _InputArray::sameSize(param_1,param_2); + if (cVar17 == '\0') { +LAB_003b42ec: + local_60 = 0; + local_58 = 0; + puVar20 = (undefined8 *)String::allocate((String *)&local_60,0x35); + uVar13 = DAT_004738c8; + uVar12 = _DAT_004738c0; + uVar11 = DAT_004738b8; + uVar10 = DAT_004738b0; + uVar9 = DAT_004738a8; + uVar8 = DAT_004738a0; + *(undefined4 *)(puVar20 + 6) = DAT_004738d0; + *(undefined1 *)((long)puVar20 + 0x34) = DAT_004738d4; + *puVar20 = uVar8; + puVar20[1] = uVar9; + puVar20[2] = uVar10; + puVar20[3] = uVar11; + puVar20[4] = uVar12; + puVar20[5] = uVar13; + error(-0xd7,(String *)&local_60, + "double cv::norm(cv::InputArray, cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xbb5); + String::deallocate((String *)&local_60); + } + else { + iVar18 = _InputArray::type(param_1,-1); + iVar19 = _InputArray::type(param_2,-1); + if (iVar18 != iVar19) goto LAB_003b42ec; + } + if (((uint)param_3 >> 3 & 1) != 0) { + dVar40 = (double)norm(param_1,param_2,param_3 & 0xfffffff7,param_4); + dVar36 = (double)norm(param_2,param_3,param_4); + dVar40 = dVar40 / (dVar36 + DAT_003b5460); + goto LAB_003b47d8; + } + iVar18 = _InputArray::kind(param_1); + if (iVar18 == 0x10000) { + pMVar34 = *(Mat **)(param_1 + 8); + /* try { // try from 003b46f4 to 004b46f7 has its CatchHandler @ 003b51cc */ + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar34; + local_11c = *(int *)(pMVar34 + 4); + local_118 = *(int *)(pMVar34 + 8); + local_114 = *(int *)(pMVar34 + 0xc); + local_110 = *(float **)(pMVar34 + 0x10); + local_108 = *(undefined8 *)(pMVar34 + 0x18); + local_100 = *(undefined8 *)(pMVar34 + 0x20); + local_f8 = *(undefined8 *)(pMVar34 + 0x28); + local_f0 = *(undefined8 *)(pMVar34 + 0x30); + local_e8 = *(long *)(pMVar34 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar25 = (int *)(local_e8 + 0x14); + do { + /* try { // try from 003b4768 to 004b476b has its CatchHandler @ 003b51d4 */ + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = *piVar25 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_d0 = **(undefined8 **)(pMVar34 + 0x48); + local_c8 = (*(undefined8 **)(pMVar34 + 0x48))[1]; + } + else { + /* try { // try from 003b4fbc to 004b4fbf has its CatchHandler @ 003b50c4 */ + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_228 = (Mat *)&local_120; + iVar18 = _InputArray::kind(param_2); + if (iVar18 == 0x10000) { + pMVar34 = *(Mat **)(param_2 + 8); + /* try { // try from 003b4938 to 004b4ac7 has its CatchHandler @ 003b5204 */ + local_80 = &local_b8; + local_78 = &local_70; + local_c0 = *(uint *)pMVar34; + local_bc = *(int *)(pMVar34 + 4); + local_b8 = *(undefined4 *)(pMVar34 + 8); + local_b4 = *(undefined4 *)(pMVar34 + 0xc); + local_b0 = *(long *)(pMVar34 + 0x10); + local_a8 = *(undefined8 *)(pMVar34 + 0x18); + local_a0 = *(undefined8 *)(pMVar34 + 0x20); + local_98 = *(undefined8 *)(pMVar34 + 0x28); + local_90 = *(undefined8 *)(pMVar34 + 0x30); + local_88 = *(long *)(pMVar34 + 0x38); + local_68 = 0; + local_70 = 0; + if (local_88 != 0) { + piVar25 = (int *)(local_88 + 0x14); + do { + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = *piVar25 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_70 = **(undefined8 **)(pMVar34 + 0x48); + local_68 = (*(undefined8 **)(pMVar34 + 0x48))[1]; + } + else { + /* try { // try from 003b4f94 to 004b4f97 has its CatchHandler @ 003b4128 */ + local_bc = 0; + Mat::copySize((Mat *)&local_c0,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_2); + } + local_218 = (Mat *)&local_c0; + iVar18 = _InputArray::kind(param_4); + if (iVar18 == 0x10000) { + pMVar34 = *(Mat **)(param_4 + 8); + local_20 = &local_58; + local_18 = &local_10; + /* try { // try from 003b4894 to 004b48e7 has its CatchHandler @ 003b4128 */ + uVar5 = *(uint *)pMVar34; + local_50 = *(long *)(pMVar34 + 0x10); + local_60 = *(ulong *)pMVar34; + local_58 = *(undefined8 *)(pMVar34 + 8); + local_48 = *(undefined8 *)(pMVar34 + 0x18); + local_40 = *(undefined8 *)(pMVar34 + 0x20); + local_38 = *(undefined8 *)(pMVar34 + 0x28); + local_30 = *(undefined8 *)(pMVar34 + 0x30); + local_28 = *(long *)(pMVar34 + 0x38); + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar25 = (int *)(local_28 + 0x14); + do { + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = *piVar25 + 1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + } + if (*(int *)(pMVar34 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar34 + 0x48); + local_8 = (*(undefined8 **)(pMVar34 + 0x48))[1]; + } + else { + /* try { // try from 003b4fa4 to 004b4fb3 has its CatchHandler @ 003b5204 */ + local_60 = (ulong)uVar5; + Mat::copySize((Mat *)&local_60,pMVar34); + } + } + else { + _InputArray::getMat_((int)param_4); + } + uVar16 = local_120; + local_220 = (Mat *)&local_60; + uVar5 = param_3 & 7; + bVar1 = uVar5 - 4 < 2; + if (((!bVar1) && (1 < uVar5 - 1)) && ((1 < uVar5 - 6 || ((local_120 & 0xfff) != 0)))) { + local_1f0 = 0; + local_1e8 = 0; + __dest = (void *)String::allocate((String *)&local_1f0,0xb1); + memcpy(__dest, + "normType == NORM_INF || normType == NORM_L1 || normType == NORM_L2 || normType == NORM_L2SQR || ((normType == NORM_HAMMING || normType == NORM_HAMMING2) && src1.type() == CV_8U)" + ,0xb1); + error(-0xd7,(String *)&local_1f0, + "double cv::norm(cv::InputArray, cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xc33); + String::deallocate((String *)&local_1f0); + } + if (((local_120 >> 0xe & 1) == 0) || ((local_c0 >> 0xe & 1) == 0)) { +LAB_003b453c: + if (local_50 == 0) { +LAB_003b45cc: + if (uVar5 - 6 < 2) { + if (local_50 != 0) { + if (2 < local_60._4_4_) goto LAB_003b5038; +LAB_003b4dcc: + lVar26 = (long)local_58._4_4_ * (long)(int)local_58; +LAB_003b4dd8: + /* try { // try from 003b4dd8 to 004b4ddb has its CatchHandler @ 003b51e4 */ + if (lVar26 != 0) { + local_170 = 0; + local_168 = 0; + local_138 = &local_130; + local_140 = &uStack_178; + local_160 = 0; + uStack_178 = _UNK_003b5478; + local_180 = _DAT_003b5470; + local_158 = 0; + local_150 = 0; + local_148 = 0; + /* try { // try from 003b4e2c to 004b4e2f has its CatchHandler @ 003b51bc */ + uStack_128 = 0; + local_130 = 0; + /* try { // try from 003b4e34 to 004b4e37 has its CatchHandler @ 003b51e4 */ + local_1d0._0_4_ = 0x1010000; + local_1b8._0_4_ = 0x1010000; + local_1b0 = local_218; + local_1c0 = 0; + local_1bc = 0; + local_1c8 = local_228; + local_1a8 = 0; + local_190 = (Mat *)0x0; + local_1a0._0_4_ = 0x2010000; + local_198 = (Mat *)&local_180; + p_Var23 = (_InputArray *)noArray(); + bitwise_xor((_InputArray *)&local_1d0,(_InputArray *)&local_1b8, + (_OutputArray *)&local_1a0,p_Var23); + local_1d0 = (Mat *)CONCAT44(local_1d0._4_4_,0x1010000); + local_1b8 = (uchar *)CONCAT44(local_1b8._4_4_,0x1010000); + local_1b0 = local_220; + local_1c0 = 0; + local_1bc = 0; + /* try { // try from 003b4eb0 to 004b4eb3 has its CatchHandler @ 003b50c4 */ + local_1a8 = 0; + local_190 = (Mat *)0x0; + local_1a0._0_4_ = 0x2010000; + local_1c8 = (Mat *)&local_180; + local_198 = (Mat *)&local_180; + p_Var23 = (_InputArray *)noArray(); + /* try { // try from 003b4ed0 to 004b4ed3 has its CatchHandler @ 003b51d4 */ + bitwise_and((_InputArray *)&local_1d0,(_InputArray *)&local_1b8, + (_OutputArray *)&local_1a0,p_Var23); + local_190 = (Mat *)0x0; + local_1a0 = (Mat *)CONCAT44(local_1a0._4_4_,0x1010000); + local_198 = (Mat *)&local_180; + p_Var23 = (_InputArray *)noArray(); + dVar40 = (double)norm((_InputArray *)&local_1a0,uVar5,p_Var23); + if (local_148 != 0) { + piVar25 = (int *)(local_148 + 0x14); + do { + iVar18 = *piVar25; + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003b4f24 to 004b4f27 has its CatchHandler @ 003b51a8 */ + } while (cVar17 != '\0'); + /* try { // try from 003b4f2c to 004b4f2f has its CatchHandler @ 003b51d4 */ + if (iVar18 == 1) { + Mat::deallocate((Mat *)&local_180); + /* try { // try from 003b52bc to 004b52bf has its CatchHandler @ 003b6888 */ + } + } + local_148 = 0; + local_170 = 0; + local_158 = 0; + local_160 = 0; + local_168 = 0; + if (0 < local_180._4_4_) { + iVar18 = 0; + puVar20 = local_140; + do { + *(undefined4 *)puVar20 = 0; + iVar18 = iVar18 + 1; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar18 < local_180._4_4_); + } + dVar36 = local_1f8; + if (local_138 != &local_130) { + fastFree(local_138); + dVar36 = local_1f8; + } + goto LAB_003b4b80; + } + } + local_1a0 = local_228; + local_190 = (Mat *)0x0; + uVar31 = 2; + if (uVar5 == 6) { + uVar31 = 1; + } + local_198 = local_218; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_180,&local_1a0,&local_1b8,-1); + uVar15 = local_158; + iVar18 = 0; + for (uVar41 = 0; uVar41 < local_160; uVar41 = uVar41 + 1) { + /* catch() { ... } // from try @ 003b4eb0 with catch @ 003b50c4 + catch() { ... } // from try @ 003b4fbc with catch @ 003b50c4 */ + iVar19 = FUN_003cdc00(local_1b8,local_1b0,uVar15 & 0xffffffff,uVar31); + iVar18 = iVar18 + iVar19; + NAryMatIterator::operator++((NAryMatIterator *)&local_180); + } + dVar40 = (double)iVar18; + dVar36 = local_1f8; + goto LAB_003b4b80; + } + } + else { + if (local_60._4_4_ < 3) goto LAB_003b454c; +LAB_003b4834: + lVar26 = 0; + lVar21 = 1; + do { + lVar3 = lVar26 * 4; + lVar26 = lVar26 + 1; + lVar21 = lVar21 * *(int *)((long)local_20 + lVar3); + /* try { // try from 003b4850 to 004b4853 has its CatchHandler @ 003b51e4 */ + } while ((int)lVar26 < local_60._4_4_); +LAB_003b4558: + if (lVar21 == 0) goto LAB_003b45cc; + if ((local_60 & 0xfff) != 0) { + local_1e0 = 0; + local_1d8 = 0; + pcVar22 = (char *)String::allocate((String *)&local_1e0,0x24); + uVar11 = s_mask_empty______mask_type______C_004734c0._24_8_; + uVar10 = s_mask_empty______mask_type______C_004734c0._16_8_; + uVar9 = s_mask_empty______mask_type______C_004734c0._8_8_; + uVar8 = s_mask_empty______mask_type______C_004734c0._0_8_; + *(undefined4 *)(pcVar22 + 0x20) = s_mask_empty______mask_type______C_004734c0._32_4_; + /* try { // try from 003b45b4 to 004b467b has its CatchHandler @ 003b5204 */ + *(undefined8 *)pcVar22 = uVar8; + *(undefined8 *)(pcVar22 + 8) = uVar9; + *(undefined8 *)(pcVar22 + 0x10) = uVar10; + *(undefined8 *)(pcVar22 + 0x18) = uVar11; + error(-0xd7,(String *)&local_1e0, + "double cv::norm(cv::InputArray, cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xd05); + String::deallocate((String *)&local_1e0); + goto LAB_003b45cc; + } + if (uVar5 - 6 < 2) { + if (local_60._4_4_ < 3) goto LAB_003b4dcc; +LAB_003b5038: + lVar21 = 0; + lVar26 = 1; + do { + lVar3 = lVar21 * 4; + /* try { // try from 003b5048 to 004b504b has its CatchHandler @ 003b5198 */ + lVar21 = lVar21 + 1; + /* try { // try from 003b5050 to 004b5053 has its CatchHandler @ 003b5204 */ + lVar26 = lVar26 * *(int *)((long)local_20 + lVar3); + } while ((int)lVar21 < local_60._4_4_); + goto LAB_003b4dd8; + } + } + uVar6 = uVar16 & 7; + pMVar34 = (Mat *)(&PTR_FUN_004f7760)[(ulong)(uint)((int)uVar5 >> 1) * 8 + (long)(int)uVar6]; + if (pMVar34 == (Mat *)0x0) { + local_1d0 = pMVar34; + local_1c8 = pMVar34; + pcVar22 = (char *)String::allocate((String *)&local_1d0,9); + cVar17 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar22 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar22[8] = cVar17; + error(-0xd7,(String *)&local_1d0, + "double cv::norm(cv::InputArray, cv::InputArray, int, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xd21); + String::deallocate((String *)&local_1d0); + } + pdVar35 = &local_1f8; + local_1a0 = local_228; + local_198 = local_218; + uStack_188 = 0; + local_190 = local_220; + local_1f8 = 0.0; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_180,&local_1a0,&local_1b8,-1); + iVar18 = (int)local_158; + if ((uVar5 != 2) || (3 < uVar6)) { + bVar2 = true; + if (bVar1 && uVar6 < 2) goto LAB_003b4688; + lVar26 = 0; + iVar19 = 0; + bVar1 = false; + iVar29 = iVar18; + } + else { + bVar2 = uVar6 < 2; +LAB_003b4688: + pdVar35 = (double *)&local_1fc; + if ((!bVar2) || (iVar19 = 0x800000, uVar5 != 2)) { + iVar19 = 0x8000; + iVar29 = 0x8000; + if (iVar18 < 0x8000) { + iVar29 = iVar18; + } + } + else { + iVar29 = 0x800000; + if (iVar18 < 0x800000) { + iVar29 = iVar18; + } + } + if (local_11c < 1) { + bVar1 = true; + /* try { // try from 003b4ff4 to 004b4ff7 has its CatchHandler @ 003b5204 */ + lVar26 = 0; + } + else { + bVar1 = true; + lVar26 = local_d8[(long)local_11c + -1]; + } + } + local_1fc = 0; + iVar30 = 0; + uVar41 = 0; + if (local_160 != 0) { + do { + if (iVar18 < 1) { +LAB_003b4b3c: + NAryMatIterator::operator++((NAryMatIterator *)&local_180); + } + else { + if (bVar1) { + iVar33 = 0; + iVar32 = 0; + do { + iVar7 = iVar29; + if (iVar33 + iVar18 < iVar29) { + iVar7 = iVar33 + iVar18; + } + (*(code *)pMVar34)(); + uVar14 = local_1fc; + iVar30 = iVar30 + iVar7; + if ((iVar19 <= iVar30 + iVar29) || + ((local_160 <= uVar41 + 1 && (iVar18 <= iVar32 + iVar7)))) { + /* try { // try from 003b4ad0 to 004b4ad3 has its CatchHandler @ 003b51cc */ + iVar30 = 0; + /* try { // try from 003b4adc to 004b4adf has its CatchHandler @ 003b51e4 */ + local_1fc = 0; + local_1f8 = local_1f8 + (double)uVar14; + } + lVar21 = iVar7 * lVar26; + local_1b8 = local_1b8 + lVar21; + local_1b0 = local_1b0 + lVar21; + if (local_1a8 != 0) { + local_1a8 = local_1a8 + iVar7; + } + iVar32 = iVar32 + iVar29; + iVar33 = iVar33 + -iVar29; + } while (iVar32 < iVar18); + goto LAB_003b4b3c; + } + iVar32 = 0; + /* try { // try from 003b4d08 to 004b4d0b has its CatchHandler @ 003b51fc */ + iVar33 = iVar29; + do { + /* try { // try from 003b4d1c to 004b4d1f has its CatchHandler @ 003b51d4 */ + iVar7 = iVar29; + if (iVar32 + iVar18 < iVar29) { + iVar7 = iVar32 + iVar18; + } + (*(code *)pMVar34)(local_1b8,local_1b0,local_1a8,pdVar35,iVar7,(uVar16 >> 3 & 0x1ff) + 1 + ); + /* try { // try from 003b4d28 to 004b4d2b has its CatchHandler @ 003b51dc */ + /* try { // try from 003b4d34 to 004b4d3f has its CatchHandler @ 003b51fc */ + iVar30 = iVar30 + iVar7; + lVar21 = iVar7 * lVar26; + local_1b8 = local_1b8 + lVar21; + local_1b0 = local_1b0 + lVar21; + if (local_1a8 != 0) { + local_1a8 = local_1a8 + iVar7; + } + iVar32 = iVar32 + -iVar29; + /* try { // try from 003b4d70 to 004b4dbb has its CatchHandler @ 003b5204 */ + bVar2 = iVar33 < iVar18; + iVar33 = iVar33 + iVar29; + } while (bVar2); + NAryMatIterator::operator++((NAryMatIterator *)&local_180); + } + uVar41 = uVar41 + 1; + } while (uVar41 < local_160); + } + dVar40 = local_1f8; + dVar36 = local_1f8; + if (uVar5 == 1) { + if (uVar6 != 6) { + if (uVar6 == 5) { + dVar40 = (double)local_1f8._0_4_; + dVar36 = (double)local_1f8._0_4_; + } + else { + dVar40 = (double)((ulong)local_1f8 & 0xffffffff); + dVar36 = (double)((ulong)local_1f8 & 0xffffffff); + } + } + } + else { + /* try { // try from 003b5194 to 004b5197 has its CatchHandler @ 003b4128 */ + /* catch() { ... } // from try @ 003b5048 with catch @ 003b5198 */ + if ((uVar5 == 4) && (dVar40 = SQRT(local_1f8), dVar36 = dVar40, NAN(dVar40))) { + dVar40 = ::sqrt(local_1f8); + dVar36 = dVar40; + } + } + } + else { + if (local_50 != 0) { + if (2 < local_60._4_4_) { + lVar21 = 1; + lVar26 = 0; + do { + lVar3 = lVar26 * 4; + lVar26 = lVar26 + 1; + lVar21 = lVar21 * *(int *)((long)local_20 + lVar3); + } while ((int)lVar26 < local_60._4_4_); + if (lVar21 == 0) goto LAB_003b44bc; + goto LAB_003b4834; + } + if ((long)local_58._4_4_ * (long)(int)local_58 == 0) goto LAB_003b44bc; +LAB_003b454c: + lVar21 = (long)local_58._4_4_ * (long)(int)local_58; + goto LAB_003b4558; + } +LAB_003b44bc: + if (local_11c < 3) { + lVar21 = (long)local_114 * (long)local_118; + } + else { + lVar26 = 0; + lVar21 = 1; + do { + piVar25 = local_e0 + lVar26; + lVar26 = lVar26 + 1; + lVar21 = lVar21 * *piVar25; + } while ((int)lVar26 < local_11c); + } + lVar21 = lVar21 + ((ulong)(local_120 >> 3) & 0x1ff) * lVar21; + iVar18 = (int)lVar21; + lVar26 = (long)iVar18; + if ((lVar26 != lVar21) || ((local_120 & 7) != 5)) goto LAB_003b453c; + if (uVar5 == 4) { + /* catch() { ... } // from try @ 003b4e2c with catch @ 003b51bc */ + local_180 = 0.0; + FUN_003b4130(local_110,local_b0,0,&local_180,lVar26,1); + /* catch() { ... } // from try @ 003b46f4 with catch @ 003b51cc + catch() { ... } // from try @ 003b4ad0 with catch @ 003b51cc */ + dVar40 = SQRT(local_180); + /* catch() { ... } // from try @ 003b4768 with catch @ 003b51d4 + catch() { ... } // from try @ 003b4d1c with catch @ 003b51d4 + catch() { ... } // from try @ 003b4ed0 with catch @ 003b51d4 + catch() { ... } // from try @ 003b4f2c with catch @ 003b51d4 */ + dVar36 = local_1f8; + if (NAN(dVar40)) { + /* catch() { ... } // from try @ 003b47dc with catch @ 003b51dc + catch() { ... } // from try @ 003b4d28 with catch @ 003b51dc */ + dVar40 = ::sqrt(local_180); + dVar36 = local_1f8; + /* catch() { ... } // from try @ 003b4850 with catch @ 003b51e4 + catch() { ... } // from try @ 003b4adc with catch @ 003b51e4 + catch() { ... } // from try @ 003b4dd8 with catch @ 003b51e4 + catch() { ... } // from try @ 003b4e34 with catch @ 003b51e4 */ + } + } + else if (uVar5 == 5) { + local_180 = 0.0; + FUN_003b4130(local_110,local_b0,0,&local_180,lVar26,1); + dVar40 = local_180; + dVar36 = local_1f8; + } + else { + dVar36 = local_1f8; + if (uVar5 == 2) { + if (iVar18 < 4) { + dVar40 = 0.0; + uVar5 = 0; + } + else { + dVar40 = 0.0; + uVar5 = iVar18 - 4U >> 2; + pfVar27 = (float *)(local_b0 + 4); + pfVar28 = local_110; + do { + pfVar4 = pfVar27 + 4; + /* try { // try from 003b5394 to 004b5397 has its CatchHandler @ 003b67cc */ + /* try { // try from 003b539c to 004b53d7 has its CatchHandler @ 003b6888 */ + dVar40 = dVar40 + ABS((double)(*pfVar28 - pfVar27[-1])) + + ABS((double)(pfVar28[1] - *pfVar27)) + + ABS((double)(pfVar28[2] - pfVar27[1])) + + ABS((double)(pfVar28[3] - pfVar27[2])); + pfVar27 = pfVar4; + pfVar28 = pfVar28 + 4; + } while (pfVar4 != (float *)(local_b0 + (ulong)uVar5 * 0x10 + 0x14)); + uVar5 = (uVar5 + 1) * 4; + } + if ((int)uVar5 < iVar18) { + uVar41 = -(ulong)(uVar5 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar5 << 2; + lVar26 = 0; + do { + lVar21 = lVar26 + uVar41; + pfVar27 = (float *)(local_b0 + uVar41 + lVar26); + lVar26 = lVar26 + 4; + /* try { // try from 003b5418 to 004b541b has its CatchHandler @ 003b6890 */ + dVar40 = dVar40 + ABS((double)(*(float *)((long)local_110 + lVar21) - *pfVar27)); + /* try { // try from 003b5420 to 004b5527 has its CatchHandler @ 003b6888 */ + } while (lVar26 != ((ulong)((iVar18 + -1) - uVar5) + 1) * 4); + } + dVar40 = dVar40 + 0.0; + } + else { + if (uVar5 != 1) goto LAB_003b453c; + if (0 < iVar18) { + fVar38 = 0.0; + lVar26 = 0; + do { + /* try { // try from 003b52f8 to 004b52fb has its CatchHandler @ 003b67bc */ + /* try { // try from 003b5300 to 004b535b has its CatchHandler @ 003b6888 */ + fVar39 = ABS(local_110[lVar26] - *(float *)(local_b0 + lVar26 * 4)); + if (fVar39 <= fVar38) { + fVar39 = fVar38; + } + fVar38 = fVar39; + lVar26 = lVar26 + 1; + } while ((int)lVar26 < iVar18); + if (0.0 < fVar38) { + dVar40 = (double)fVar38; + goto LAB_003b4b80; + } + } + dVar40 = 0.0; + } + } + } +LAB_003b4b80: + local_1f8 = dVar36; + if (local_28 != 0) { + piVar25 = (int *)(local_28 + 0x14); + do { + iVar18 = *piVar25; + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate(local_220); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar18 = 0; + puVar20 = local_20; + do { + iVar18 = iVar18 + 1; + *(undefined4 *)puVar20 = 0; + puVar20 = (undefined8 *)((long)puVar20 + 4); + } while (iVar18 < local_60._4_4_); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_88 != 0) { + piVar25 = (int *)(local_88 + 0x14); + do { + iVar18 = *piVar25; + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate(local_218); + } + } + local_88 = 0; + local_b0 = 0; + local_98 = 0; + local_a0 = 0; + local_a8 = 0; + if (0 < local_bc) { + iVar18 = 0; + puVar24 = local_80; + do { + iVar18 = iVar18 + 1; + *puVar24 = 0; + puVar24 = puVar24 + 1; + } while (iVar18 < local_bc); + } + if (local_78 != &local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar25 = (int *)(local_e8 + 0x14); + do { + iVar18 = *piVar25; + cVar17 = '\x01'; + bVar1 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar1) { + *piVar25 = iVar18 + -1; + cVar17 = ExclusiveMonitorsStatus(); + } + } while (cVar17 != '\0'); + if (iVar18 == 1) { + Mat::deallocate(local_228); + } + } + local_e8 = 0; + local_f8 = 0; + local_110 = (float *)0x0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar18 = 0; + piVar25 = local_e0; + do { + iVar18 = iVar18 + 1; + *piVar25 = 0; + piVar25 = piVar25 + 1; + } while (iVar18 < local_11c); + } + if (local_d8 != &local_d0) { + /* try { // try from 003b4cfc to 004b4cff has its CatchHandler @ 003b5204 */ + fastFree(local_d8); + } +LAB_003b47d8: + auVar37._8_8_ = 0; + auVar37._0_8_ = dVar40; + /* try { // try from 003b47dc to 004b47df has its CatchHandler @ 003b51dc */ + return auVar37; +} + + +================================================================== + +### FUNC 003b5480 (276 bytes) name=PSNR + +/* cv::PSNR(cv::_InputArray const&, cv::_InputArray const&) */ + +undefined1 [16] cv::PSNR(_InputArray *param_1,_InputArray *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined2 uVar3; + int iVar4; + char *pcVar5; + _InputArray *p_Var6; + long lVar7; + double dVar8; + undefined1 auVar9 [16]; + double dVar10; + undefined8 local_10; + undefined8 local_8; + + iVar4 = _InputArray::depth(param_1,-1); + if (iVar4 != 0) { + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x16); + uVar3 = s__src1_depth______CV_8U_004738d8._20_2_; + uVar2 = s__src1_depth______CV_8U_004738d8._8_8_; + uVar1 = s__src1_depth______CV_8U_004738d8._0_8_; + *(undefined4 *)(pcVar5 + 0x10) = s__src1_depth______CV_8U_004738d8._16_4_; + *(undefined2 *)(pcVar5 + 0x14) = uVar3; + *(undefined8 *)pcVar5 = uVar1; + *(undefined8 *)(pcVar5 + 8) = uVar2; + error(-0xd7,(String *)&local_10,"double cv::PSNR(cv::InputArray, cv::InputArray)", + "/builds/master_pack-android/opencv/modules/core/src/stat.cpp",0xecb); + String::deallocate((String *)&local_10); + } + p_Var6 = (_InputArray *)noArray(); + dVar8 = (double)norm(param_1,param_2,5,p_Var6); + lVar7 = _InputArray::total(param_1,-1); + iVar4 = _InputArray::channels(param_1,-1); + dVar8 = dVar8 / (double)(ulong)(iVar4 * lVar7); + dVar10 = SQRT(dVar8); + if (NAN(dVar10)) { + dVar10 = ::sqrt(dVar8); + } + dVar8 = log10(DAT_003b55b0 / (dVar10 + DAT_003b55a8)); + auVar9._0_8_ = dVar8 * 20.0; + auVar9._8_8_ = 0; + return auVar9; +} + + +================================================================== + +### FUNC 003b55c0 (1984 bytes) name=cvNorm + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined1 [16] cvNorm(cv *param_1,cv *param_2,int param_3,cv *param_4) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + _InputArray *p_Var5; + Mat **ppMVar6; + undefined8 *puVar7; + AutoBuffer *pAVar8; + undefined8 *puVar9; + cv *this; + undefined4 uVar10; + ulong uVar11; + undefined1 auVar12 [16]; + undefined4 local_270 [2]; + Mat *local_268; + undefined4 local_260; + undefined4 local_25c; + undefined4 local_258 [2]; + Mat *local_250; + undefined4 local_248; + undefined4 local_244; + undefined4 local_240 [2]; + Mat *local_238; + undefined4 local_230; + undefined4 local_22c; + undefined4 local_228 [2]; + Mat *local_220; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210 [2]; + Mat *local_208; + undefined4 local_200; + undefined4 local_1fc; + undefined4 local_1f8 [2]; + Mat *local_1f0; + undefined4 local_1e8; + undefined4 local_1e4; + undefined8 local_1e0; + undefined8 uStack_1d8; + undefined8 local_1d0; + undefined8 uStack_1c8; + undefined8 local_1c0; + undefined8 uStack_1b8; + undefined8 local_1b0; + long lStack_1a8; + undefined8 *local_1a0; + AutoBuffer *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined8 local_180; + Mat *pMStack_178; + undefined8 local_170; + undefined8 uStack_168; + undefined8 local_160; + undefined8 uStack_158; + undefined8 local_150; + long lStack_148; + Mat **local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + undefined4 local_120; + int local_11c; + undefined4 local_118; + undefined4 local_114; + undefined8 local_110; + undefined8 uStack_108; + undefined8 local_100; + undefined8 uStack_f8; + undefined8 local_f0; + long lStack_e8; + AutoBuffer *local_e0; + undefined8 *local_d8; + undefined8 auStack_d0 [2]; + undefined4 local_c0; + int local_bc; + Mat *local_b8; + undefined8 local_b0; + undefined8 uStack_a8; + undefined8 local_a0; + undefined8 uStack_98; + undefined8 local_90; + long lStack_88; + AutoBuffer *local_80; + undefined8 *local_78; + undefined8 auStack_70 [2]; + uint local_60; + int local_5c; + Mat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + pAVar8 = (AutoBuffer *)&local_190; + local_138 = &local_130; + uStack_188 = 0; + local_190 = 0; + local_1a0 = &uStack_1d8; + uStack_128 = 0; + local_130 = 0; + local_140 = &pMStack_178; + uStack_1d8 = _UNK_003b5e68; + local_1e0 = _DAT_003b5e60; + local_1d0 = 0; + pMStack_178 = _UNK_003b5e68; + local_180 = _DAT_003b5e60; + uStack_1c8 = 0; + /* try { // try from 003b5618 to 004b561b has its CatchHandler @ 003b6970 */ + local_1c0 = 0; + uStack_1b8 = 0; + local_1b0 = 0; + lStack_1a8 = 0; + local_170 = 0; + uStack_168 = 0; + local_160 = 0; + uStack_158 = 0; + local_150 = 0; + lStack_148 = 0; + this = param_2; + if (param_1 == (cv *)0x0) { + this = (cv *)0x0; + param_1 = param_2; + } + local_198 = pAVar8; + cv::cvarrToMat(param_1,(void *)0x0,true,true,0,pAVar8); + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + /* try { // try from 003b56ac to 004b5747 has its CatchHandler @ 003b6948 */ + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + puVar7 = local_d8; + lStack_1a8 = 0; + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if ((int)local_1e0._4_4_ < 1) { +LAB_003b5710: + if (2 < local_11c) goto LAB_003b571c; + /* try { // try from 003b5b90 to 004b5b93 has its CatchHandler @ 003b6880 */ + uStack_1d8 = (Mat *)CONCAT44(local_114,local_118); + local_1e0 = CONCAT44(local_11c,local_120); + *(undefined8 *)local_198 = *local_d8; + *(undefined8 *)(local_198 + 8) = puVar7[1]; + } + else { + iVar4 = 0; + puVar9 = local_1a0; + do { + *(undefined4 *)puVar9 = 0; + iVar4 = iVar4 + 1; + pAVar8 = (AutoBuffer *)(ulong)local_1e0._4_4_; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } while (iVar4 < (int)local_1e0._4_4_); + if ((int)local_1e0._4_4_ < 3) goto LAB_003b5710; +LAB_003b571c: + local_1e0 = CONCAT44(local_1e0._4_4_,local_120); + cv::Mat::copySize((Mat *)&local_1e0,(Mat *)&local_120); + } + uStack_1b8 = uStack_f8; + local_1c0 = local_100; + lStack_1a8 = lStack_e8; + local_1b0 = local_f0; + uStack_1c8 = uStack_108; + local_1d0 = local_110; + if (lStack_e8 != 0) { + piVar1 = (int *)(lStack_e8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_120); + } + } + lStack_e8 = 0; + local_110 = 0; + uStack_f8 = 0; + local_100 = 0; + uStack_108 = 0; + if (0 < local_11c) { + iVar4 = 0; + do { + pAVar8 = local_e0 + 4; + *(undefined4 *)local_e0 = 0; + iVar4 = iVar4 + 1; + local_e0 = pAVar8; + } while (iVar4 < local_11c); + } + /* try { // try from 003b57bc to 004b57bf has its CatchHandler @ 003b675c */ + if (local_d8 != auStack_d0) { + cv::fastFree(local_d8); + } + if (param_4 != (cv *)0x0) { + cv::cvarrToMat(param_4,(void *)0x0,true,false,0,pAVar8); + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + puVar7 = local_78; + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if ((int)local_180._4_4_ < 1) { +LAB_003b587c: + if (2 < local_bc) goto LAB_003b5bb8; + pMStack_178 = local_b8; + local_180 = CONCAT44(local_bc,local_c0); + *local_138 = *local_78; + local_138[1] = puVar7[1]; + } + else { + iVar4 = 0; + ppMVar6 = local_140; + do { + *(undefined4 *)ppMVar6 = 0; + iVar4 = iVar4 + 1; + pAVar8 = (AutoBuffer *)(ulong)local_180._4_4_; + ppMVar6 = (Mat **)((long)ppMVar6 + 4); + } while (iVar4 < (int)local_180._4_4_); + if ((int)local_180._4_4_ < 3) goto LAB_003b587c; +LAB_003b5bb8: + local_180 = CONCAT44(local_180._4_4_,local_c0); + cv::Mat::copySize((Mat *)&local_180,(Mat *)&local_c0); + } + /* try { // try from 003b58d4 to 004b58d7 has its CatchHandler @ 003b6888 */ + uStack_158 = uStack_98; + local_160 = local_a0; + lStack_148 = lStack_88; + local_150 = local_90; + uStack_168 = uStack_a8; + local_170 = local_b0; + if (lStack_88 != 0) { + piVar1 = (int *)(lStack_88 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_c0); + } + } + lStack_88 = 0; + local_b0 = 0; + uStack_98 = 0; + local_a0 = 0; + uStack_a8 = 0; + if (0 < local_bc) { + iVar4 = 0; + do { + pAVar8 = local_80 + 4; + *(undefined4 *)local_80 = 0; + iVar4 = iVar4 + 1; + local_80 = pAVar8; + } while (iVar4 < local_bc); + } + if (local_78 != auStack_70) { + cv::fastFree(local_78); + } + } + if ((((param_1 != (cv *)0x0) && (((uint)local_1e0 >> 3 & 0x1ff) != 0)) && + (*(int *)param_1 == 0x90)) && + ((*(long *)(param_1 + 0x58) != 0 && (iVar4 = cvGetImageCOI(param_1), 0 < iVar4)))) { + local_50 = 0; + local_60 = 0x2010000; + local_58 = (Mat *)&local_1e0; + cv::extractImageCOI(param_1,(_OutputArray *)&local_60,-1); + } + uVar10 = SUB84(param_4,0); + if (this == (cv *)0x0) { + if (param_4 == (cv *)0x0) { + /* try { // try from 003b5d58 to 004b5dab has its CatchHandler @ 003b5240 */ + local_270[0] = 0x1010000; + local_268 = (Mat *)&local_1e0; + local_260 = uVar10; + local_25c = uVar10; + p_Var5 = (_InputArray *)cv::noArray(); + uVar11 = cv::norm((_InputArray *)local_270,param_3,p_Var5); + } + else { + /* try { // try from 003b5c2c to 004b5c2f has its CatchHandler @ 003b6940 */ + local_248 = 0; + local_244 = 0; + local_258[0] = 0x1010000; + local_50 = 0; + local_60 = 0x1010000; + local_250 = (Mat *)&local_1e0; + local_58 = (Mat *)&local_180; + uVar11 = cv::norm((_InputArray *)local_258,param_3,(_InputArray *)&local_60); + } + goto LAB_003b5a7c; + } + cv::cvarrToMat(this,(void *)0x0,true,true,0,pAVar8); + /* try { // try from 003b5ca0 to 004b5ca3 has its CatchHandler @ 003b6938 */ + if ((((local_60 >> 3 & 0x1ff) == 0) || (*(int *)this != 0x90)) || + ((*(long *)(this + 0x58) == 0 || (iVar4 = cvGetImageCOI(this), iVar4 < 1)))) { + if (param_4 == (cv *)0x0) goto LAB_003b5ce0; +LAB_003b59b4: + local_200 = 0; + local_1fc = 0; + local_210[0] = 0x1010000; + local_1e8 = 0; + local_1e4 = 0; + local_1f8[0] = 0x1010000; + local_b0 = 0; + local_c0 = 0x1010000; + local_208 = (Mat *)&local_1e0; + local_1f0 = (Mat *)&local_60; + local_b8 = (Mat *)&local_180; + uVar11 = cv::norm((_InputArray *)local_210,(_InputArray *)local_1f8,param_3, + (_InputArray *)&local_c0); + } + else { + local_b0 = 0; + local_c0 = 0x2010000; + local_b8 = (Mat *)&local_60; + cv::extractImageCOI(this,(_OutputArray *)&local_c0,-1); + if (param_4 != (cv *)0x0) goto LAB_003b59b4; +LAB_003b5ce0: + local_240[0] = 0x1010000; + local_228[0] = 0x1010000; + local_238 = (Mat *)&local_1e0; + local_230 = uVar10; + local_22c = uVar10; + local_220 = (Mat *)&local_60; + local_218 = uVar10; + local_214 = uVar10; + p_Var5 = (_InputArray *)cv::noArray(); + /* try { // try from 003b5d14 to 004b5d17 has its CatchHandler @ 003b67dc */ + uVar11 = cv::norm((_InputArray *)local_240,(_InputArray *)local_228,param_3,p_Var5); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } +LAB_003b5a7c: + /* try { // try from 003b5a80 to 004b5a83 has its CatchHandler @ 003b6880 */ + if (lStack_148 != 0) { + piVar1 = (int *)(lStack_148 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_180); + } + } + lStack_148 = 0; + local_170 = 0; + uStack_158 = 0; + local_160 = 0; + uStack_168 = 0; + if (0 < (int)local_180._4_4_) { + iVar4 = 0; + ppMVar6 = local_140; + do { + *(undefined4 *)ppMVar6 = 0; + iVar4 = iVar4 + 1; + ppMVar6 = (Mat **)((long)ppMVar6 + 4); + } while (iVar4 < (int)local_180._4_4_); + } + if (local_138 != &local_130) { + cv::fastFree(local_138); + } + if (lStack_1a8 != 0) { + piVar1 = (int *)(lStack_1a8 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate((Mat *)&local_1e0); + } + } + lStack_1a8 = 0; + /* try { // try from 003b5b1c to 004b5b1f has its CatchHandler @ 003b6800 */ + local_1d0 = 0; + uStack_1b8 = 0; + local_1c0 = 0; + uStack_1c8 = 0; + if (0 < (int)local_1e0._4_4_) { + iVar4 = 0; + puVar7 = local_1a0; + do { + *(undefined4 *)puVar7 = 0; + iVar4 = iVar4 + 1; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } while (iVar4 < (int)local_1e0._4_4_); + } + if (local_198 != (AutoBuffer *)&local_190) { + cv::fastFree(local_198); + } + auVar12._8_8_ = 0; + auVar12._0_8_ = uVar11; + return auVar12; +} + + +================================================================== + +### FUNC 003b5e70 (72 bytes) name=allocate + +/* cv::String::allocate(unsigned long) */ + +undefined8 __thiscall cv::String::allocate(String *this,ulong param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)fastMalloc((param_1 + 4 & 0xfffffffffffffffc) + 4); + *puVar1 = 1; + *(ulong *)(this + 8) = param_1; + *(undefined4 **)this = puVar1 + 1; + *(undefined1 *)((long)(puVar1 + 1) + param_1) = 0; + return *(undefined8 *)this; +} + + +================================================================== + +### FUNC 003b5eb8 (52 bytes) name=deallocate + +/* cv::String::deallocate() */ + +void __thiscall cv::String::deallocate(String *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + + lVar5 = *(long *)this; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)this = 0; + if (lVar5 != 0) { + piVar4 = (int *)(lVar5 + -4); + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 == 1) { + fastFree(piVar4); + return; + } + } + return; +} + + +================================================================== + +### FUNC 003b5eec (24 bytes) name=what + +/* cv::Exception::what() const */ + +undefined1 * __thiscall cv::Exception::what(Exception *this) + +{ + if (*(undefined1 **)(this + 8) != (undefined1 *)0x0) { + return *(undefined1 **)(this + 8); + } + return &DAT_00472008; +} + + +================================================================== + +### FUNC 003b5f04 (80 bytes) name=~Exception + +/* cv::Exception::~Exception() */ + +void __thiscall cv::Exception::~Exception(Exception *this) + +{ + /* try { // try from 003b5f08 to 004b5f0b has its CatchHandler @ 003b6888 */ + *(undefined **)this = PTR_vtable_00501a20 + 0x10; + String::deallocate((String *)(this + 0x40)); + String::deallocate((String *)(this + 0x30)); + String::deallocate((String *)(this + 0x20)); + String::deallocate((String *)(this + 8)); + std::exception::~exception((exception *)this); + return; +} + + +================================================================== + +### FUNC 003b5fbc (32 bytes) name=~Exception + +/* cv::Exception::~Exception() */ + +void __thiscall cv::Exception::~Exception(Exception *this) + +{ + ~Exception(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003b5fdc (76 bytes) name=FUN_003b5fdc + +undefined8 * FUN_003b5fdc(void) + +{ + undefined8 *puVar1; + + puVar1 = operator_new(0x20); + *puVar1 = 0xffffffff; + *(undefined4 *)(puVar1 + 1) = 0; + cv::ocl::Queue::Queue((Queue *)(puVar1 + 2)); + *(undefined4 *)(puVar1 + 3) = 0xffffffff; + *(undefined4 *)((long)puVar1 + 0x1c) = 0xffffffff; + return puVar1; +} + + +================================================================== + +### FUNC 003b603c (52 bytes) name=FUN_003b603c + +void FUN_003b603c(undefined8 param_1,void *param_2) + +{ + if (param_2 != (void *)0x0) { + cv::ocl::Queue::~Queue((Queue *)((long)param_2 + 0x10)); + operator_delete(param_2); + return; + } + return; +} + + +================================================================== + +### FUNC 003b6070 (64 bytes) name=Exception + +/* cv::Exception::Exception() */ + +void __thiscall cv::Exception::Exception(Exception *this) + +{ + *(undefined **)this = PTR_vtable_00501a20 + 0x10; + /* try { // try from 003b6084 to 004b60bb has its CatchHandler @ 003b6920 */ + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x40) = 0; + *(undefined8 *)(this + 0x48) = 0; + *(undefined4 *)(this + 0x18) = 0; + *(undefined4 *)(this + 0x50) = 0; + return; +} + + +================================================================== + +### FUNC 003b60b0 (20 bytes) name=checkHardwareSupport + +/* cv::checkHardwareSupport(int) */ + +undefined1 cv::checkHardwareSupport(int param_1) + +{ + return PTR_DAT_005093f8[(long)param_1 + 4]; +} + + +================================================================== + +### FUNC 003b60c4 (12 bytes) name=useOptimized + +/* cv::useOptimized() */ + +undefined1 cv::useOptimized(void) + +{ + return DAT_005093f0; +} + + +================================================================== + +### FUNC 003b60d0 (52 bytes) name=getTickCount + +/* cv::getTickCount() */ + +long cv::getTickCount(void) + +{ + timespec local_10; + + clock_gettime(1,&local_10); + return local_10.tv_nsec + local_10.tv_sec * 1000000000; +} + + +================================================================== + +### FUNC 003b6108 (8 bytes) name=getTickFrequency + +/* cv::getTickFrequency() */ + +undefined1 [16] cv::getTickFrequency(void) + +{ + undefined1 auVar1 [16]; + + auVar1._8_8_ = 0; + auVar1._0_8_ = DAT_003b6110; + return auVar1; +} + + +================================================================== + +### FUNC 003b6118 (4 bytes) name=getCPUTickCount + +/* cv::getCPUTickCount() */ + +void cv::getCPUTickCount(void) + +{ + (*(code *)PTR_getTickCount_004fff48)(); + return; +} + + +================================================================== + +### FUNC 003b611c (156 bytes) name=getBuildInformation + +/* cv::getBuildInformation() */ + +undefined8 * cv::getBuildInformation(void) + +{ + int iVar1; + void *__dest; + ulong uVar2; + + uVar2 = DAT_00532a48 & 1; + /* try { // try from 003b6158 to 004b615b has its CatchHandler @ 003b68a0 */ + if (((DAT_00532a48 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00532a48), iVar1 != 0)) { + DAT_00532cb0 = uVar2; + DAT_00532cb8 = uVar2; + __dest = (void *)String::allocate((String *)&DAT_00532cb0,0x1a5d); + memcpy(__dest,&DAT_00473b60,0x1a5d); + __cxa_guard_release(&DAT_00532a48); + __cxa_atexit(PTR__String_005018a0,&DAT_00532cb0,&DAT_00502000); + return &DAT_00532cb0; + } + return &DAT_00532cb0; +} + + +================================================================== + +### FUNC 003b61cc (556 bytes) name=format + +/* cv::format(char const*, ...) */ + +String * cv::format(char *param_1,...) + +{ + int iVar1; + int iVar2; + char *pcVar3; + void *__dest; + undefined8 in_x1; + ulong uVar4; + undefined8 in_x2; + undefined8 in_x3; + undefined8 in_x4; + undefined8 in_x5; + undefined8 in_x6; + undefined8 in_x7; + String *in_x8; + int iVar5; + ulong uVar6; + undefined8 in_d0; + undefined8 in_d1; + undefined8 in_d2; + undefined8 in_d3; + undefined8 in_d4; + undefined8 in_d5; + undefined8 in_d6; + undefined8 in_d7; + undefined1 *local_510; + undefined1 *puStack_508; + undefined1 *local_500; + undefined8 uStack_4f8; + char *local_4d0; + ulong local_4c8; + char local_4c0 [1024]; + undefined8 local_c0; + undefined8 local_b0; + undefined8 local_a0; + undefined8 local_90; + undefined8 local_80; + undefined8 local_70; + undefined8 local_60; + undefined8 local_50; + undefined1 auStack_40 [8]; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003b61cc to 004b61cf has its CatchHandler @ 003b6920 */ + local_4c8 = 0x400; + /* try { // try from 003b6260 to 004b6263 has its CatchHandler @ 003b6930 */ + pcVar3 = local_4c0; + uVar6 = local_4c8; + local_c0 = in_d0; + local_b0 = in_d1; + local_a0 = in_d2; + local_90 = in_d3; + local_80 = in_d4; + local_70 = in_d5; + local_60 = in_d6; + local_50 = in_d7; + local_38 = in_x1; + local_30 = in_x2; + local_28 = in_x3; + local_20 = in_x4; + local_18 = in_x5; + local_10 = in_x6; + local_8 = in_x7; + while( true ) { + local_4c8 = uVar6; + local_4d0 = pcVar3; + uStack_4f8 = 0xffffff80ffffffc8; + iVar5 = (int)local_4c8; + local_510 = (undefined1 *)register0x00000008; + puStack_508 = (undefined1 *)register0x00000008; + local_500 = auStack_40; + iVar2 = vsnprintf(local_4d0,(long)iVar5,param_1,&local_510); + if ((iVar2 < iVar5) && (-1 < iVar2)) break; + /* try { // try from 003b62d4 to 004b62d7 has its CatchHandler @ 003b6928 */ + iVar1 = iVar2 + 1; + if (iVar2 + 1 < iVar5 * 2) { + iVar1 = iVar5 * 2; + } + uVar6 = (ulong)iVar1; + pcVar3 = local_4d0; + if (local_4c8 < uVar6) { + pcVar3 = local_4c0; + if (0x400 < uVar6) { + pcVar3 = operator_new__(uVar6); + } + if (local_4d0 == pcVar3) goto LAB_003b633c; + if (local_4c8 == 0) goto LAB_003b633c; + uVar4 = 0; + do { + pcVar3[uVar4] = local_4d0[uVar4]; + uVar4 = uVar4 + 1; + } while (uVar4 != local_4c8); + pcVar3[local_4c8] = '\0'; + while (local_4c8 = local_4c8 + 1, uVar6 != local_4c8) { +LAB_003b633c: + pcVar3[local_4c8] = '\0'; + /* try { // try from 003b6348 to 004b634b has its CatchHandler @ 003b67fc */ + } + if ((local_4d0 != local_4c0) && (local_4d0 != (char *)0x0)) { + operator_delete__(local_4d0); + } + } + } + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + if (iVar2 != 0) { + __dest = (void *)String::allocate(in_x8,(long)iVar2); + memcpy(__dest,local_4d0,(long)iVar2); + } + if ((local_4d0 != local_4c0) && (local_4d0 != (char *)0x0)) { + operator_delete__(local_4d0); + } + return in_x8; +} + + +================================================================== + +### FUNC 003b6418 (312 bytes) name=formatMessage + +/* cv::Exception::formatMessage() */ + +void __thiscall cv::Exception::formatMessage(Exception *this) + +{ + String *this_00; + char cVar1; + bool bVar2; + int *piVar3; + undefined1 *puVar4; + undefined1 *puVar5; + undefined1 *puVar6; + long local_10; + undefined8 local_8; + + this_00 = (String *)(this + 8); + puVar4 = *(undefined1 **)(this + 0x40); + if (*(long *)(this + 0x38) == 0) { + if (puVar4 == (undefined1 *)0x0) { + puVar4 = &DAT_00472008; + } + puVar5 = *(undefined1 **)(this + 0x20); + if (puVar5 == (undefined1 *)0x0) { + puVar5 = &DAT_00472008; + } + format("%s:%d: error: (%d) %s\n",(String *)&local_10,puVar4,(ulong)*(uint *)(this + 0x50), + (ulong)*(uint *)(this + 0x18),puVar5); + if (this_00 == (String *)&local_10) goto LAB_003b64a4; + String::deallocate(this_00); + if (local_10 != 0) { + piVar3 = (int *)(local_10 + -4); + do { + /* try { // try from 003b6508 to 004b652b has its CatchHandler @ 003b6948 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + else { + if (puVar4 == (undefined1 *)0x0) { + puVar4 = &DAT_00472008; + } + puVar5 = *(undefined1 **)(this + 0x20); + if (puVar5 == (undefined1 *)0x0) { + /* try { // try from 003b6538 to 004b653b has its CatchHandler @ 003b67fc */ + puVar5 = &DAT_00472008; + } + puVar6 = *(undefined1 **)(this + 0x30); + /* try { // try from 003b6450 to 004b6453 has its CatchHandler @ 003b6880 */ + if (puVar6 == (undefined1 *)0x0) { + /* try { // try from 003b6544 to 004b6547 has its CatchHandler @ 003b6928 */ + puVar6 = &DAT_00472008; + } + /* try { // try from 003b645c to 004b645f has its CatchHandler @ 003b6938 */ + format("%s:%d: error: (%d) %s in function %s\n",(String *)&local_10,puVar4, + (ulong)*(uint *)(this + 0x50),(ulong)*(uint *)(this + 0x18),puVar5,puVar6); + /* try { // try from 003b6468 to 004b646b has its CatchHandler @ 003b6940 */ + if (this_00 == (String *)&local_10) goto LAB_003b64a4; + /* try { // try from 003b6474 to 004b6477 has its CatchHandler @ 003b67dc */ + String::deallocate(this_00); + if (local_10 != 0) { + piVar3 = (int *)(local_10 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + *(long *)(this + 8) = local_10; + /* try { // try from 003b649c to 004b649f has its CatchHandler @ 003b6948 */ + *(undefined8 *)(this + 0x10) = local_8; +LAB_003b64a4: + String::deallocate((String *)&local_10); + /* try { // try from 003b64b0 to 004b64b3 has its CatchHandler @ 003b675c */ + return; +} + + +================================================================== + +### FUNC 003b6578 (224 bytes) name=Exception + +/* cv::Exception::Exception(int, cv::String const&, cv::String const&, cv::String const&, int) */ + +void __thiscall +cv::Exception::Exception + (Exception *this,int param_1,String *param_2,String *param_3,String *param_4,int param_5) + +{ + char cVar1; + bool bVar2; + long lVar3; + int *piVar4; + + *(undefined **)this = PTR_vtable_00501a20 + 0x10; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + lVar3 = *(long *)param_2; + *(long *)(this + 0x20) = lVar3; + *(int *)(this + 0x18) = param_1; + *(undefined8 *)(this + 0x28) = *(undefined8 *)(param_2 + 8); + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lVar3 = *(long *)param_3; + *(long *)(this + 0x30) = lVar3; + *(undefined8 *)(this + 0x38) = *(undefined8 *)(param_3 + 8); + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lVar3 = *(long *)param_4; + *(long *)(this + 0x40) = lVar3; + *(undefined8 *)(this + 0x48) = *(undefined8 *)(param_4 + 8); + if (lVar3 != 0) { + piVar4 = (int *)(lVar3 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(int *)(this + 0x50) = param_5; + formatMessage(this); + return; +} + + +================================================================== + +### FUNC 003b668c (948 bytes) name=tempfile + +/* cv::tempfile(char const*) */ + +void __thiscall cv::tempfile(cv *this,char *param_1) + +{ + char cVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + int __fd; + char *pcVar5; + size_t sVar6; + void *pvVar7; + int *piVar8; + String *in_x8; + char *local_68; + size_t local_60; + char *local_58; + size_t local_50; + char *local_48; + size_t local_40; + void *local_38; + size_t local_30; + char local_28 [8]; + char acStack_20 [8]; + char local_18 [8]; + char acStack_10 [8]; + char local_8 [4]; + char local_4; + + local_68 = (char *)0x0; + local_60 = 0; + pcVar5 = getenv("OPENCV_TEMP_PATH"); + local_8[0] = s__data_local_tmp___opencv_temp_XX_00475620[0x20]; + local_8[1] = s__data_local_tmp___opencv_temp_XX_00475620[0x21]; + local_8[2] = s__data_local_tmp___opencv_temp_XX_00475620[0x22]; + local_8[3] = s__data_local_tmp___opencv_temp_XX_00475620[0x23]; + local_4 = s__data_local_tmp___opencv_temp_XX_00475620[0x24]; + local_28[0] = s__data_local_tmp___opencv_temp_XX_00475620[0]; + local_28[1] = s__data_local_tmp___opencv_temp_XX_00475620[1]; + local_28[2] = s__data_local_tmp___opencv_temp_XX_00475620[2]; + local_28[3] = s__data_local_tmp___opencv_temp_XX_00475620[3]; + local_28[4] = s__data_local_tmp___opencv_temp_XX_00475620[4]; + local_28[5] = s__data_local_tmp___opencv_temp_XX_00475620[5]; + local_28[6] = s__data_local_tmp___opencv_temp_XX_00475620[6]; + local_28[7] = s__data_local_tmp___opencv_temp_XX_00475620[7]; + acStack_20[0] = s__data_local_tmp___opencv_temp_XX_00475620[8]; + acStack_20[1] = s__data_local_tmp___opencv_temp_XX_00475620[9]; + acStack_20[2] = s__data_local_tmp___opencv_temp_XX_00475620[10]; + acStack_20[3] = s__data_local_tmp___opencv_temp_XX_00475620[0xb]; + acStack_20[4] = s__data_local_tmp___opencv_temp_XX_00475620[0xc]; + acStack_20[5] = s__data_local_tmp___opencv_temp_XX_00475620[0xd]; + acStack_20[6] = s__data_local_tmp___opencv_temp_XX_00475620[0xe]; + acStack_20[7] = s__data_local_tmp___opencv_temp_XX_00475620[0xf]; + local_18[0] = s__data_local_tmp___opencv_temp_XX_00475620[0x10]; + local_18[1] = s__data_local_tmp___opencv_temp_XX_00475620[0x11]; + local_18[2] = s__data_local_tmp___opencv_temp_XX_00475620[0x12]; + local_18[3] = s__data_local_tmp___opencv_temp_XX_00475620[0x13]; + local_18[4] = s__data_local_tmp___opencv_temp_XX_00475620[0x14]; + local_18[5] = s__data_local_tmp___opencv_temp_XX_00475620[0x15]; + local_18[6] = s__data_local_tmp___opencv_temp_XX_00475620[0x16]; + local_18[7] = s__data_local_tmp___opencv_temp_XX_00475620[0x17]; + acStack_10[0] = s__data_local_tmp___opencv_temp_XX_00475620[0x18]; + acStack_10[1] = s__data_local_tmp___opencv_temp_XX_00475620[0x19]; + acStack_10[2] = s__data_local_tmp___opencv_temp_XX_00475620[0x1a]; + acStack_10[3] = s__data_local_tmp___opencv_temp_XX_00475620[0x1b]; + acStack_10[4] = s__data_local_tmp___opencv_temp_XX_00475620[0x1c]; + acStack_10[5] = s__data_local_tmp___opencv_temp_XX_00475620[0x1d]; + acStack_10[6] = s__data_local_tmp___opencv_temp_XX_00475620[0x1e]; + acStack_10[7] = s__data_local_tmp___opencv_temp_XX_00475620[0x1f]; + if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) { + String::deallocate((String *)&local_68); + sVar6 = strlen(local_28); + pvVar7 = (void *)String::allocate((String *)&local_68,sVar6); + memcpy(pvVar7,local_28,sVar6); + } + else { + String::deallocate((String *)&local_68); + sVar6 = strlen(pcVar5); + pvVar7 = (void *)String::allocate((String *)&local_68,sVar6); + memcpy(pvVar7,pcVar5,sVar6); + /* catch() { ... } // from try @ 003b5a80 with catch @ 003b6880 + catch() { ... } // from try @ 003b5b90 with catch @ 003b6880 + catch() { ... } // from try @ 003b6450 with catch @ 003b6880 */ + if ((local_68[local_60 - 1] != '\\') && (local_68[local_60 - 1] != '/')) { + /* catch() { ... } // from try @ 003b52bc with catch @ 003b6888 + catch() { ... } // from try @ 003b5300 with catch @ 003b6888 + catch() { ... } // from try @ 003b539c with catch @ 003b6888 + catch() { ... } // from try @ 003b5420 with catch @ 003b6888 + catch() { ... } // from try @ 003b58d4 with catch @ 003b6888 + catch() { ... } // from try @ 003b5df0 with catch @ 003b6888 + catch() { ... } // from try @ 003b5e30 with catch @ 003b6888 + catch() { ... } // from try @ 003b5f08 with catch @ 003b6888 */ + /* catch() { ... } // from try @ 003b5418 with catch @ 003b6890 */ + local_58 = (char *)0x0; + local_50 = 0; + String::allocate((String *)&local_58,local_60 + 1); + /* catch() { ... } // from try @ 003b6158 with catch @ 003b68a0 */ + memcpy(local_58,local_68,local_60); + local_58[local_60] = DAT_00475618; + String::deallocate((String *)&local_68); + if (local_58 != (char *)0x0) { + piVar8 = (int *)(local_58 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + local_68 = local_58; + local_60 = local_50; + String::deallocate((String *)&local_58); + } + local_48 = (char *)0x0; + local_40 = 0; + String::allocate((String *)&local_48,local_60 + 0x14); + /* catch() { ... } // from try @ 003b6084 with catch @ 003b6920 + catch() { ... } // from try @ 003b61cc with catch @ 003b6920 + catch() { ... } // from try @ 003b655c with catch @ 003b6920 */ + memcpy(local_48,local_68,local_60); + uVar4 = s__data_local_tmp___opencv_temp_XX_00475620._24_8_; + uVar3 = s__data_local_tmp___opencv_temp_XX_00475620._16_8_; + /* catch() { ... } // from try @ 003b62d4 with catch @ 003b6928 + catch() { ... } // from try @ 003b6544 with catch @ 003b6928 */ + /* catch() { ... } // from try @ 003b6260 with catch @ 003b6930 + catch() { ... } // from try @ 003b6550 with catch @ 003b6930 */ + /* catch() { ... } // from try @ 003b5ca0 with catch @ 003b6938 + catch() { ... } // from try @ 003b645c with catch @ 003b6938 */ + pcVar5 = local_48 + local_60; + /* catch() { ... } // from try @ 003b5c2c with catch @ 003b6940 + catch() { ... } // from try @ 003b6468 with catch @ 003b6940 */ + /* catch() { ... } // from try @ 003b56ac with catch @ 003b6948 + catch() { ... } // from try @ 003b649c with catch @ 003b6948 + catch() { ... } // from try @ 003b6508 with catch @ 003b6948 */ + *(undefined4 *)(pcVar5 + 0x10) = s__data_local_tmp___opencv_temp_XX_00475620._32_4_; + *(undefined8 *)pcVar5 = uVar3; + *(undefined8 *)(pcVar5 + 8) = uVar4; + String::deallocate((String *)&local_68); + if (local_48 != (char *)0x0) { + piVar8 = (int *)(local_48 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + local_68 = local_48; + local_60 = local_40; + String::deallocate((String *)&local_48); + } + pcVar5 = local_68; + if (local_68 == (char *)0x0) { + pcVar5 = ""; + } + __fd = mkstemp(pcVar5); + if (__fd == -1) { + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + String::deallocate((String *)&local_68); + return; + } + close(__fd); + pcVar5 = local_68; + if (local_68 == (char *)0x0) { + pcVar5 = ""; + } + remove(pcVar5); + if (this == (cv *)0x0) { + *(char **)in_x8 = local_68; + *(size_t *)(in_x8 + 8) = local_60; + if (local_68 != (char *)0x0) { + piVar8 = (int *)(local_68 + -4); + do { + /* try { // try from 003b6a34 to 004b6a37 has its CatchHandler @ 003b6c34 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar8,0x10); + if (bVar2) { + *piVar8 = *piVar8 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + else { + if (*this == (cv)0x2e) { + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + sVar6 = strlen((char *)this); + /* catch() { ... } // from try @ 003b69e8 with catch @ 003b69b0 + catch() { ... } // from try @ 003b6bcc with catch @ 003b69b0 + catch() { ... } // from try @ 003b6c78 with catch @ 003b69b0 */ + String::allocate(in_x8,sVar6 + local_60); + memcpy(*(void **)in_x8,local_68,local_60); + memcpy((void *)(*(long *)in_x8 + local_60),this,sVar6); + /* try { // try from 003b69e8 to 004b69eb has its CatchHandler @ 003b69b0 */ + String::deallocate((String *)&local_68); + /* try { // try from 003b6a04 to 004b6a07 has its CatchHandler @ 003b6c7c */ + return; + } + /* catch() { ... } // from try @ 003b57bc with catch @ 003b675c + catch() { ... } // from try @ 003b64b0 with catch @ 003b675c */ + local_38 = (void *)0x0; + local_30 = 0; + String::allocate((String *)&local_38,local_60 + 1); + memcpy(local_38,local_68,local_60); + *(char *)((long)local_38 + local_60) = s_Invalid_closing_tag_for_<_xml____00471d40[0x20]; + *(undefined8 *)in_x8 = 0; + *(undefined8 *)(in_x8 + 8) = 0; + sVar6 = strlen((char *)this); + /* try { // try from 003b67b8 to 004b67bb has its CatchHandler @ 003b5240 */ + /* catch() { ... } // from try @ 003b52f8 with catch @ 003b67bc */ + String::allocate(in_x8,sVar6 + local_30); + /* catch() { ... } // from try @ 003b5394 with catch @ 003b67cc */ + memcpy(*(void **)in_x8,local_38,local_30); + /* catch() { ... } // from try @ 003b5d14 with catch @ 003b67dc + catch() { ... } // from try @ 003b6474 with catch @ 003b67dc */ + memcpy((void *)(*(long *)in_x8 + local_30),this,sVar6); + String::deallocate((String *)&local_38); + } + String::deallocate((String *)&local_68); + /* catch() { ... } // from try @ 003b6348 with catch @ 003b67fc + catch() { ... } // from try @ 003b6538 with catch @ 003b67fc */ + /* catch() { ... } // from try @ 003b5b1c with catch @ 003b6800 */ + return; +} + + +================================================================== + +### FUNC 003b6ad4 (20 bytes) name=setBreakOnError + +/* cv::setBreakOnError(bool) */ + +undefined1 cv::setBreakOnError(bool param_1) + +{ + undefined1 uVar1; + + uVar1 = DAT_00532a44; + DAT_00532a44 = param_1; + return uVar1; +} + + +================================================================== + +### FUNC 003b6ae8 (40 bytes) name=redirectError + +/* cv::redirectError(int (*)(int, char const*, char const*, char const*, int, void*), void*, void**) + */ + +undefined8 +cv::redirectError(_func_int_int_char_ptr_char_ptr_char_ptr_int_void_ptr *param_1,void *param_2, + void **param_3) + +{ + undefined8 uVar1; + + if (param_3 != (void **)0x0) { + *param_3 = DAT_00532a68; + } + DAT_00532a68 = param_2; + uVar1 = DAT_00532a78; + DAT_00532a78 = param_1; + return uVar1; +} + + +================================================================== + +### FUNC 003b6b10 (20 bytes) name=cvCheckHardwareSupport + +undefined1 cvCheckHardwareSupport(int param_1) + +{ + return PTR_DAT_005093f8[(long)param_1 + 4]; +} + + +================================================================== + +### FUNC 003b6b24 (4 bytes) name=cvGetTickCount + +void cv::cvGetTickCount(void) + +{ + (*(code *)PTR_getTickCount_004fff48)(); + return; +} + + +================================================================== + +### FUNC 003b6b28 (32 bytes) name=cvGetTickFrequency + +undefined1 [16] cvGetTickFrequency(void) + +{ + double dVar1; + undefined1 auVar2 [16]; + + dVar1 = (double)cv::getTickFrequency(); + auVar2._0_8_ = dVar1 * DAT_003b6b48; + auVar2._8_8_ = 0; + return auVar2; +} + + +================================================================== + +### FUNC 003b6b50 (4 bytes) name=cvRedirectError + +void cv::cvRedirectError(_func_int_int_char_ptr_char_ptr_char_ptr_int_void_ptr *param_1, + void *param_2,void **param_3) + +{ + (*(code *)PTR_redirectError_00500cd0)(); + return; +} + + +================================================================== + +### FUNC 003b6b54 (8 bytes) name=cvNulDevReport + +undefined8 cvNulDevReport(void) + +{ + /* try { // try from 003b6b58 to 004b6b5b has its CatchHandler @ 003b6c7c */ + return 0; +} + + +================================================================== + +### FUNC 003b6b5c (8 bytes) name=cvStdErrReport + +undefined8 cvStdErrReport(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003b6b64 (8 bytes) name=cvGuiBoxReport + +undefined8 cvGuiBoxReport(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003b6b6c (8 bytes) name=cvGetErrInfo + +undefined8 cvGetErrInfo(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003b6b74 (496 bytes) name=cvErrorStr + +char * cvErrorStr(uint param_1) + +{ + char *pcVar1; + char *pcVar2; + + /* try { // try from 003b6bcc to 004b6bf3 has its CatchHandler @ 003b69b0 */ + switch(param_1) { + case 0: + pcVar1 = "No Error"; + break; + case 0xffffff25: + pcVar1 = "OpenGL API call"; + break; + case 0xffffff26: + pcVar1 = "No OpenGL support"; + break; + case 0xffffff27: + /* catch() { ... } // from try @ 003b6a88 with catch @ 003b6c84 */ + pcVar1 = "Gpu API call"; + break; + case 0xffffff28: + /* try { // try from 003b6c78 to 004b6c7b has its CatchHandler @ 003b69b0 */ + pcVar1 = "No CUDA support"; + /* catch() { ... } // from try @ 003b6a04 with catch @ 003b6c7c + catch() { ... } // from try @ 003b6b58 with catch @ 003b6c7c + catch() { ... } // from try @ 003b6bfc with catch @ 003b6c7c */ + break; + case 0xffffff29: + pcVar1 = "Assertion failed"; + break; + case 0xffffff2a: + pcVar1 = "Memory block has been corrupted"; + break; + case 0xffffff2b: + pcVar1 = "The function/feature is not implemented"; + break; + case 0xffffff2c: + pcVar1 = "Parsing error"; + break; + case 0xffffff2d: + pcVar1 = "One of arguments\' values is out of range"; + break; + case 0xffffff2e: + pcVar1 = "Unsupported format or combination of formats"; + /* catch() { ... } // from try @ 003b6a34 with catch @ 003b6c34 + catch() { ... } // from try @ 003b6a90 with catch @ 003b6c34 */ + break; + case 0xffffff2f: + pcVar1 = "Sizes of input arguments do not match"; + break; + case 0xffffff30: + pcVar1 = "Bad type of mask argument"; + break; + case 0xffffff31: + pcVar1 = "Bad parameter of type CvPoint"; + break; + case 0xffffff32: + /* try { // try from 003b6bfc to 004b6bff has its CatchHandler @ 003b6c7c */ + pcVar1 = "Bad flag (parameter or structure field)"; + break; + case 0xffffff33: + pcVar1 = "Formats of input arguments do not match"; + break; + case 0xffffff34: + pcVar1 = "Requested object was not found"; + break; + case 0xffffff35: + pcVar1 = "Inplace operation is not supported"; + break; + case 0xffffff36: + pcVar1 = "Division by zero occured"; + break; + case 0xffffff37: + pcVar1 = "Incorrect size of input array"; + break; + default: + if ((int)param_1 < 0) { + pcVar2 = "error"; + } + else { + pcVar2 = "status"; + } + pcVar1 = &DAT_00532bb0; + sprintf(&DAT_00532bb0,"Unknown %s code %d",pcVar2,(ulong)param_1); + break; + case 0xffffffe5: + pcVar1 = "Null pointer"; + break; + case 0xffffffe8: + pcVar1 = "Input COI is not supported"; + break; + case 0xffffffef: + pcVar1 = "Input image depth is not supported by function"; + break; + case 0xfffffff1: + pcVar1 = "Bad number of channels"; + break; + case 0xfffffff3: + pcVar1 = "Image step is wrong"; + break; + case 0xfffffff8: + pcVar1 = "Autotrace call"; + break; + case 0xfffffff9: + pcVar1 = "Iterations do not converge"; + break; + case 0xfffffffb: + pcVar1 = "Bad argument"; + break; + case 0xfffffffc: + pcVar1 = "Insufficient memory"; + break; + case 0xfffffffd: + pcVar1 = "Internal error"; + break; + case 0xfffffffe: + pcVar1 = "Unspecified error"; + break; + case 0xffffffff: + /* catch() { ... } // from try @ 003b6da4 with catch @ 003b6d50 + catch() { ... } // from try @ 003b7c00 with catch @ 003b6d50 + catch() { ... } // from try @ 003b7e24 with catch @ 003b6d50 + catch() { ... } // from try @ 003b814c with catch @ 003b6d50 */ + pcVar1 = "Backtrace"; + } + return pcVar1; +} + + +================================================================== + +### FUNC 003b6d64 (560 bytes) name=error + +/* cv::error(cv::Exception const&) */ + +void cv::error(Exception *param_1) + +{ + FILE *__stream; + char cVar1; + bool bVar2; + code *pcVar3; + long *plVar4; + undefined8 uVar5; + undefined1 *puVar6; + undefined1 *puVar7; + long lVar8; + int *piVar9; + undefined1 *puVar10; + long lVar11; + char acStack_10000 [65536]; + + if (DAT_00532a78 == (code *)0x0) { + uVar5 = cvErrorStr(*(undefined4 *)(param_1 + 0x18)); + puVar6 = *(undefined1 **)(param_1 + 0x20); + if (puVar6 == (undefined1 *)0x0) { + puVar6 = &DAT_00472008; + } + if (*(long *)(param_1 + 0x38) == 0) { + puVar7 = &LAB_004759f0; + } + else { + puVar7 = *(undefined1 **)(param_1 + 0x30); + if (puVar7 == (undefined1 *)0x0) { + puVar7 = &DAT_00472008; + } + } + puVar10 = *(undefined1 **)(param_1 + 0x40); + if (puVar10 == (undefined1 *)0x0) { + puVar10 = &DAT_00472008; + } + sprintf(acStack_10000,"OpenCV Error: %s (%s) in %s, file %s, line %d",uVar5,puVar6,puVar7, + puVar10,(ulong)*(uint *)(param_1 + 0x50)); + __stream = (FILE *)(PTR___sF_00501a80 + 0x130); + fprintf(__stream,"%s\n",acStack_10000); + fflush(__stream); + __android_log_print(6,"cv::error()","%s",acStack_10000); + goto LAB_003b6db0; + } + puVar6 = *(undefined1 **)(param_1 + 0x30); + if (puVar6 == (undefined1 *)0x0) { + /* try { // try from 003b6eb0 to 004b6eb3 has its CatchHandler @ 003b8214 */ + puVar7 = *(undefined1 **)(param_1 + 0x20); + /* try { // try from 003b6eb8 to 004b6ebb has its CatchHandler @ 003b8248 */ + puVar6 = &DAT_00472008; + if (puVar7 != (undefined1 *)0x0) goto LAB_003b6d98; +LAB_003b6ec0: + puVar10 = *(undefined1 **)(param_1 + 0x40); + puVar7 = &DAT_00472008; + } + else { + puVar7 = *(undefined1 **)(param_1 + 0x20); + if (puVar7 == (undefined1 *)0x0) goto LAB_003b6ec0; +LAB_003b6d98: + puVar10 = *(undefined1 **)(param_1 + 0x40); + } + if (puVar10 == (undefined1 *)0x0) { + puVar10 = &DAT_00472008; + } + /* try { // try from 003b6da4 to 004b6da7 has its CatchHandler @ 003b6d50 */ + (*DAT_00532a78)(*(undefined4 *)(param_1 + 0x18),puVar6,puVar7,puVar10, + *(undefined4 *)(param_1 + 0x50),DAT_00532a68); +LAB_003b6db0: + if (DAT_00532a44 == '\0') { + plVar4 = (long *)__cxa_allocate_exception(0x58); + lVar8 = *(long *)(param_1 + 8); + lVar11 = *(long *)(param_1 + 0x10); + *plVar4 = (long)(PTR_vtable_00501a20 + 0x10); + plVar4[1] = lVar8; + plVar4[2] = lVar11; + if (lVar8 != 0) { + piVar9 = (int *)(lVar8 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lVar8 = *(long *)(param_1 + 0x20); + lVar11 = *(long *)(param_1 + 0x28); + *(undefined4 *)(plVar4 + 3) = *(undefined4 *)(param_1 + 0x18); + plVar4[4] = lVar8; + plVar4[5] = lVar11; + if (lVar8 != 0) { + piVar9 = (int *)(lVar8 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lVar8 = *(long *)(param_1 + 0x30); + lVar11 = *(long *)(param_1 + 0x38); + plVar4[6] = lVar8; + plVar4[7] = lVar11; + if (lVar8 != 0) { + piVar9 = (int *)(lVar8 + -4); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + lVar8 = *(long *)(param_1 + 0x40); + lVar11 = *(long *)(param_1 + 0x48); + plVar4[8] = lVar8; + plVar4[9] = lVar11; + if (lVar8 != 0) { + piVar9 = (int *)(lVar8 + -4); + do { + /* try { // try from 003b6e80 to 004b6e83 has its CatchHandler @ 003b8248 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar9,0x10); + if (bVar2) { + *piVar9 = *piVar9 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + *(undefined4 *)(plVar4 + 10) = *(undefined4 *)(param_1 + 0x50); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar4,PTR_typeinfo_005019d8,PTR__Exception_005019d0); + } + /* try { // try from 003b6dc0 to 004b6dc3 has its CatchHandler @ 003b8268 */ + uRam0000000000000000 = 0; + /* WARNING: Does not return */ + pcVar3 = (code *)SoftwareBreakpoint(1000,0x3b6dc8); + (*pcVar3)(); +} + + +================================================================== + +### FUNC 003b6f94 (236 bytes) name=error + +/* cv::error(int, cv::String const&, char const*, char const*, int) */ + +void cv::error(int param_1,String *param_2,char *param_3,char *param_4,int param_5) + +{ + size_t sVar1; + void *pvVar2; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + Exception aEStack_58 [88]; + + local_78 = 0; + local_70 = 0; + if (param_3 != (char *)0x0) { + /* try { // try from 003b6fd0 to 004b7163 has its CatchHandler @ 003b8250 */ + sVar1 = strlen(param_3); + pvVar2 = (void *)String::allocate((String *)&local_78,sVar1); + memcpy(pvVar2,param_3,sVar1); + } + local_68 = 0; + local_60 = 0; + if (param_4 != (char *)0x0) { + sVar1 = strlen(param_4); + pvVar2 = (void *)String::allocate((String *)&local_68,sVar1); + memcpy(pvVar2,param_4,sVar1); + } + Exception::Exception(aEStack_58,param_1,param_2,(String *)&local_78,(String *)&local_68,param_5); + error(aEStack_58); + Exception::~Exception(aEStack_58); + String::deallocate((String *)&local_68); + String::deallocate((String *)&local_78); + return; +} + + +================================================================== + +### FUNC 003b70b8 (160 bytes) name=FUN_003b70b8 + +void FUN_003b70b8(void) + +{ + undefined4 uVar1; + int iVar2; + char *pcVar3; + undefined8 local_10; + undefined8 local_8; + + iVar2 = pthread_key_create(&DAT_00532a40,FUN_003b74b4); + if (iVar2 == 0) { + return; + } + local_10 = 0; + local_8 = 0; + pcVar3 = (char *)cv::String::allocate((String *)&local_10,0xc); + uVar1 = s_errcode____0_00475a50._8_4_; + *(undefined8 *)pcVar3 = s_errcode____0_00475a50._0_8_; + *(undefined4 *)(pcVar3 + 8) = uVar1; + cv::error(-0xd7,(String *)&local_10,"void cv::makeKey()", + "/builds/master_pack-android/opencv/modules/core/src/system.cpp",0x415); + cv::String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003b716c (8 bytes) name=cvGetErrMode + +undefined8 cvGetErrMode(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003b7174 (8 bytes) name=cvSetErrMode + +undefined8 cvSetErrMode(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003b717c (8 bytes) name=cvGetErrStatus + +undefined8 cvGetErrStatus(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003b7184 (4 bytes) name=cvSetErrStatus + +void cvSetErrStatus(void) + +{ + return; +} + + +================================================================== + +### FUNC 003b7188 (296 bytes) name=cvError + +void cvError(int param_1,char *param_2,char *param_3,char *param_4,int param_5) + +{ + size_t sVar1; + void *pvVar2; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + Exception aEStack_58 [88]; + + /* try { // try from 003b7190 to 004b7193 has its CatchHandler @ 003b80bc */ + /* try { // try from 003b7198 to 004b7447 has its CatchHandler @ 003b8250 */ + local_88 = 0; + local_80 = 0; + if (param_3 != (char *)0x0) { + sVar1 = strlen(param_3); + pvVar2 = (void *)cv::String::allocate((String *)&local_88,sVar1); + memcpy(pvVar2,param_3,sVar1); + } + local_78 = 0; + local_70 = 0; + if (param_2 != (char *)0x0) { + sVar1 = strlen(param_2); + pvVar2 = (void *)cv::String::allocate((String *)&local_78,sVar1); + memcpy(pvVar2,param_2,sVar1); + } + local_68 = 0; + local_60 = 0; + if (param_4 != (char *)0x0) { + sVar1 = strlen(param_4); + pvVar2 = (void *)cv::String::allocate((String *)&local_68,sVar1); + memcpy(pvVar2,param_4,sVar1); + } + cv::Exception::Exception + (aEStack_58,param_1,(String *)&local_88,(String *)&local_78,(String *)&local_68,param_5) + ; + cv::error(aEStack_58); + cv::Exception::~Exception(aEStack_58); + cv::String::deallocate((String *)&local_68); + cv::String::deallocate((String *)&local_78); + cv::String::deallocate((String *)&local_88); + return; +} + + +================================================================== + +### FUNC 003b72f8 (32 bytes) name=cvErrorFromIppStatus + +long cvErrorFromIppStatus(int param_1) + +{ + long lVar1; + + lVar1 = 0xfffffffe; + if (param_1 + 0x71U < 0x71) { + lVar1 = (long)*(short *)(&DAT_00475b10 + (ulong)(param_1 + 0x71U) * 2); + } + return lVar1; +} + + +================================================================== + +### FUNC 003b7318 (100 bytes) name=Mutex + +/* cv::Mutex::Mutex() */ + +void __thiscall cv::Mutex::Mutex(Mutex *this) + +{ + pthread_mutex_t *__mutex; + pthread_mutexattr_t apStack_8 [2]; + + __mutex = operator_new(0x2c); + pthread_mutexattr_init(apStack_8); + pthread_mutexattr_settype(apStack_8,1); + pthread_mutex_init(__mutex,apStack_8); + pthread_mutexattr_destroy(apStack_8); + __mutex[1].__data.__lock = 1; + *(pthread_mutex_t **)this = __mutex; + return; +} + + +================================================================== + +### FUNC 003b7390 (84 bytes) name=~Mutex + +/* cv::Mutex::~Mutex() */ + +void __thiscall cv::Mutex::~Mutex(Mutex *this) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + pthread_mutex_t *__mutex; + + piVar1 = (int *)(*(long *)this + 0x28); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((iVar2 == 1) && (__mutex = *(pthread_mutex_t **)this, __mutex != (pthread_mutex_t *)0x0)) { + pthread_mutex_destroy(__mutex); + operator_delete(__mutex); + return; + } + return; +} + + +================================================================== + +### FUNC 003b73e4 (32 bytes) name=Mutex + +/* cv::Mutex::Mutex(cv::Mutex const&) */ + +void __thiscall cv::Mutex::Mutex(Mutex *this,Mutex *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + long lVar4; + + lVar4 = *(long *)param_1; + *(long *)this = lVar4; + piVar1 = (int *)(lVar4 + 0x28); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + return; +} + + +================================================================== + +### FUNC 003b7404 (160 bytes) name=operator= + +/* cv::Mutex::TEMPNAMEPLACEHOLDERVALUE(cv::Mutex const&) */ + +Mutex * __thiscall cv::Mutex::operator=(Mutex *this,Mutex *param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + pthread_mutex_t *__mutex; + + piVar1 = (int *)(*(long *)param_1 + 0x28); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + piVar1 = (int *)(*(long *)this + 0x28); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if ((iVar2 == 1) && (__mutex = *(pthread_mutex_t **)this, __mutex != (pthread_mutex_t *)0x0)) { + /* try { // try from 003b7474 to 004b7477 has its CatchHandler @ 003b8150 */ + pthread_mutex_destroy(__mutex); + /* try { // try from 003b747c to 004b767f has its CatchHandler @ 003b8250 */ + operator_delete(__mutex); + *(undefined8 *)this = *(undefined8 *)param_1; + return this; + } + *(undefined8 *)this = *(undefined8 *)param_1; + return this; +} + + +================================================================== + +### FUNC 003b74a4 (8 bytes) name=lock + +/* cv::Mutex::lock() */ + +int __thiscall cv::Mutex::lock(Mutex *this) + +{ + int iVar1; + + iVar1 = pthread_mutex_lock(*(pthread_mutex_t **)this); + return iVar1; +} + + +================================================================== + +### FUNC 003b74ac (8 bytes) name=unlock + +/* cv::Mutex::unlock() */ + +int __thiscall cv::Mutex::unlock(Mutex *this) + +{ + int iVar1; + + iVar1 = pthread_mutex_unlock(*(pthread_mutex_t **)this); + return iVar1; +} + + +================================================================== + +### FUNC 003b74b4 (396 bytes) name=FUN_003b74b4 + +void FUN_003b74b4(long *param_1) + +{ + undefined8 *puVar1; + int iVar2; + long *plVar3; + Mutex *this; + void *pvVar4; + long lVar5; + long lVar6; + void *pvVar7; + int iVar8; + + if (param_1 == (long *)0x0) { + return; + } + pvVar4 = (void *)*param_1; + lVar5 = param_1[1] - (long)pvVar4; + if (0 < (int)(lVar5 >> 3)) { + lVar6 = 0; + iVar8 = 0; + do { + pvVar7 = *(void **)((long)pvVar4 + lVar6); + puVar1 = (undefined8 *)((long)pvVar4 + lVar6); + if (pvVar7 != (void *)0x0) { + this = DAT_00532a38; + if ((DAT_00532b90 & 1) == 0) { + iVar2 = __cxa_guard_acquire(&DAT_00532b90); + if (iVar2 == 0) { + pvVar7 = (void *)*puVar1; + this = DAT_00532a38; + } + else { + this = operator_new(0x20); + cv::Mutex::Mutex(this); + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + DAT_00532a38 = this; + __cxa_guard_release(&DAT_00532b90); + pvVar7 = (void *)*puVar1; + } + } + cv::Mutex::lock(this); + plVar3 = *(long **)(*(long *)(this + 8) + lVar6); + if (plVar3 != (long *)0x0) { + if (*(code **)(*plVar3 + 0x18) == FUN_003b603c) { + if (pvVar7 != (void *)0x0) { + cv::ocl::Queue::~Queue((Queue *)((long)pvVar7 + 0x10)); + operator_delete(pvVar7); + } + } + else { + (**(code **)(*plVar3 + 0x18))(plVar3,pvVar7); + } + } + cv::Mutex::unlock(this); + *puVar1 = 0; + pvVar4 = (void *)*param_1; + lVar5 = param_1[1] - (long)pvVar4; + } + iVar8 = iVar8 + 1; + lVar6 = lVar6 + 8; + } while (iVar8 < (int)(lVar5 >> 3)); + } + param_1[1] = (long)pvVar4; + if (pvVar4 != (void *)0x0) { + operator_delete(pvVar4); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003b7698 (36 bytes) name=trylock + +/* cv::Mutex::trylock() */ + +bool __thiscall cv::Mutex::trylock(Mutex *this) + +{ + int iVar1; + + iVar1 = pthread_mutex_trylock(*(pthread_mutex_t **)this); + /* try { // try from 003b76b8 to 004b76bb has its CatchHandler @ 003b81c4 */ + return iVar1 == 0; +} + + +================================================================== + +### FUNC 003b76bc (460 bytes) name=TLSDataContainer + +/* cv::TLSDataContainer::TLSDataContainer() */ + +void __thiscall cv::TLSDataContainer::TLSDataContainer(TLSDataContainer *this) + +{ + undefined *puVar1; + int iVar2; + Mutex *this_00; + ulong uVar3; + void *__dest; + ulong uVar4; + size_t sVar5; + undefined8 *__src; + long lVar6; + void *__dest_00; + ulong uVar7; + + uVar4 = DAT_00532b90; + /* try { // try from 003b76c0 to 004b776f has its CatchHandler @ 003b8250 */ + puVar1 = PTR_vtable_00501c08 + 0x10; + *(undefined4 *)(this + 8) = 0xffffffff; + *(undefined **)this = puVar1; + this_00 = DAT_00532a38; + if (((uVar4 & 1) == 0) && + (iVar2 = __cxa_guard_acquire(&DAT_00532b90), this_00 = DAT_00532a38, iVar2 != 0)) { + this_00 = operator_new(0x20); + Mutex::Mutex(this_00); + *(undefined8 *)(this_00 + 8) = 0; + *(undefined8 *)(this_00 + 0x10) = 0; + *(undefined8 *)(this_00 + 0x18) = 0; + DAT_00532a38 = this_00; + /* try { // try from 003b77b0 to 004b77b3 has its CatchHandler @ 003b81b4 */ + __cxa_guard_release(&DAT_00532b90); + } + Mutex::lock(this_00); + __src = *(undefined8 **)(this_00 + 0x10); + if (__src != *(undefined8 **)(this_00 + 0x18)) { + lVar6 = 0; + if (__src != (undefined8 *)0x0) { + *__src = this; + lVar6 = *(long *)(this_00 + 0x10); + } + lVar6 = lVar6 + 8; + *(long *)(this_00 + 0x10) = lVar6; + __dest_00 = *(void **)(this_00 + 8); + goto LAB_003b7744; + } + /* try { // try from 003b77b8 to 004b783f has its CatchHandler @ 003b8250 */ + lVar6 = (long)__src - *(long *)(this_00 + 8); + uVar4 = lVar6 >> 3; + if (uVar4 == 0) { + uVar7 = 8; +LAB_003b77cc: + __dest_00 = operator_new(uVar7); + } + else { + uVar3 = uVar4 * 2; + uVar7 = 0xfffffffffffffff8; + if ((uVar3 < uVar4) || (0x1fffffffffffffff < uVar3)) goto LAB_003b77cc; + uVar7 = uVar4 << 4; + __dest_00 = (void *)0x0; + if (uVar3 != 0) goto LAB_003b77cc; + } + if ((long)__dest_00 + lVar6 != 0) { + *(TLSDataContainer **)((long)__dest_00 + lVar6) = this; + } + sVar5 = (long)__src - (long)*(void **)(this_00 + 8); + if ((long)sVar5 >> 3 != 0) { + memmove(__dest_00,*(void **)(this_00 + 8),sVar5); + } + __dest = (void *)((long)__dest_00 + sVar5 + 8); + sVar5 = *(long *)(this_00 + 0x10) - (long)__src; + if ((long)sVar5 >> 3 != 0) { + /* try { // try from 003b7860 to 004b7863 has its CatchHandler @ 003b8224 */ + __dest = memmove(__dest,__src,sVar5); + } + lVar6 = (long)__dest + sVar5; + if (*(void **)(this_00 + 8) != (void *)0x0) { + operator_delete(*(void **)(this_00 + 8)); + } + *(void **)(this_00 + 8) = __dest_00; + *(long *)(this_00 + 0x10) = lVar6; + *(ulong *)(this_00 + 0x18) = (long)__dest_00 + uVar7; +LAB_003b7744: + Mutex::unlock(this_00); + *(int *)(this + 8) = (int)(lVar6 - (long)__dest_00 >> 3) + -1; + return; +} + + +================================================================== + +### FUNC 003b78c4 (332 bytes) name=~TLSDataContainer + +/* cv::TLSDataContainer::~TLSDataContainer() */ + +void __thiscall cv::TLSDataContainer::~TLSDataContainer(TLSDataContainer *this) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + int iVar5; + char *pcVar6; + Mutex *this_00; + ulong uVar7; + undefined8 local_10; + undefined8 local_8; + + uVar7 = DAT_00532b90; + /* try { // try from 003b78d4 to 004b78d7 has its CatchHandler @ 003b8250 */ + *(undefined **)this = PTR_vtable_00501c08 + 0x10; + this_00 = DAT_00532a38; + if (((uVar7 & 1) == 0) && + (iVar5 = __cxa_guard_acquire(&DAT_00532b90), this_00 = DAT_00532a38, iVar5 != 0)) { + this_00 = operator_new(0x20); + /* try { // try from 003b79bc to 004b79bf has its CatchHandler @ 003b8260 */ + Mutex::Mutex(this_00); + *(undefined8 *)(this_00 + 8) = 0; + *(undefined8 *)(this_00 + 0x10) = 0; + *(undefined8 *)(this_00 + 0x18) = 0; + DAT_00532a38 = this_00; + __cxa_guard_release(&DAT_00532b90); + } + uVar1 = *(uint *)(this + 8); + Mutex::lock(this_00); + uVar7 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + if (this == *(TLSDataContainer **)(*(long *)(this_00 + 8) + uVar7)) { + *(undefined8 *)(*(long *)(this_00 + 8) + uVar7) = 0; + Mutex::unlock(this_00); + return; + } + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x20); + uVar4 = s_tlsContainers__id_____pContainer_00475aa0._24_8_; + uVar3 = s_tlsContainers__id_____pContainer_00475aa0._16_8_; + uVar2 = s_tlsContainers__id_____pContainer_00475aa0._8_8_; + /* try { // try from 003b7948 to 004b794b has its CatchHandler @ 003b81d4 */ + *(undefined8 *)pcVar6 = s_tlsContainers__id_____pContainer_00475aa0._0_8_; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd7,(String *)&local_10, + "void cv::TLSContainerStorage::releaseKey(int, cv::TLSDataContainer*)", + "/builds/master_pack-android/opencv/modules/core/src/system.cpp",0x43d); + String::deallocate((String *)&local_10); + *(undefined8 *)(*(long *)(this_00 + 8) + uVar7) = 0; + Mutex::unlock(this_00); + return; +} + + +================================================================== + +### FUNC 003b7a58 (16 bytes) name=FUN_003b7a58 + +void FUN_003b7a58(TLSDataContainer *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7970; + cv::TLSDataContainer::~TLSDataContainer(param_1); + return; +} + + +================================================================== + +### FUNC 003b7a68 (44 bytes) name=FUN_003b7a68 + +void FUN_003b7a68(TLSDataContainer *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7970; + cv::TLSDataContainer::~TLSDataContainer(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003b7a94 (32 bytes) name=~TLSDataContainer + +/* cv::TLSDataContainer::~TLSDataContainer() */ + +void __thiscall cv::TLSDataContainer::~TLSDataContainer(TLSDataContainer *this) + +{ + ~TLSDataContainer(this); + /* try { // try from 003b7aa4 to 004b7aa7 has its CatchHandler @ 003b8258 */ + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003b7ab4 (800 bytes) name=getData + +/* cv::TLSDataContainer::getData() const */ + +undefined8 * __thiscall cv::TLSDataContainer::getData(TLSDataContainer *this) + +{ + void *__dest; + int iVar1; + undefined1 uVar2; + pthread_key_t __key; + long *__pointer; + undefined8 *puVar3; + ulong uVar4; + void *__dest_00; + long lVar5; + ulong uVar6; + void *pvVar7; + size_t sVar8; + ulong uVar9; + undefined8 local_10; + undefined8 local_8; + + if (*(int *)(this + 8) < 0) { + local_10 = 0; + local_8 = 0; + puVar3 = (undefined8 *)String::allocate((String *)&local_10,9); + uVar2 = DAT_00475ad0; + /* try { // try from 003b7c00 to 004b7c03 has its CatchHandler @ 003b6d50 */ + *puVar3 = DAT_00475ac8; + *(undefined1 *)(puVar3 + 1) = uVar2; + error(-0xd7,(String *)&local_10,"void* cv::TLSDataContainer::getData() const", + "/builds/master_pack-android/opencv/modules/core/src/system.cpp",0x469); + String::deallocate((String *)&local_10); + } + pthread_once((pthread_once_t *)&DAT_00532b98,FUN_003b70b8); + __pointer = pthread_getspecific(DAT_00532a40); + if (__pointer == (long *)0x0) { + __pointer = operator_new(0x18); + *__pointer = 0; + __pointer[1] = 0; + __pointer[2] = 0; + pvVar7 = operator_new(0x80); + if ((void *)*__pointer != (void *)0x0) { + operator_delete((void *)*__pointer); + } + __key = DAT_00532a40; + *__pointer = (long)pvVar7; + __pointer[1] = (long)pvVar7; + __pointer[2] = (long)pvVar7 + 0x80; + pthread_setspecific(__key,__pointer); + } + /* try { // try from 003b7b18 to 004b7b1b has its CatchHandler @ 003b8160 */ + if ((*(int *)(this + 8) < (int)(__pointer[1] - *__pointer >> 3)) && + (puVar3 = *(undefined8 **)(*__pointer + (long)*(int *)(this + 8) * 8), + puVar3 != (undefined8 *)0x0)) { + return puVar3; + } + if (*(code **)(*(long *)this + 0x10) == FUN_003b5fdc) { + puVar3 = operator_new(0x20); + *puVar3 = 0xffffffff; + *(undefined4 *)(puVar3 + 1) = 0; + ocl::Queue::Queue((Queue *)(puVar3 + 2)); + *(undefined4 *)(puVar3 + 3) = 0xffffffff; + *(undefined4 *)((long)puVar3 + 0x1c) = 0xffffffff; + } + else { + puVar3 = (undefined8 *)(**(code **)(*(long *)this + 0x10))(this); + } + lVar5 = *__pointer; + pvVar7 = (void *)__pointer[1]; + iVar1 = *(int *)(this + 8); + uVar6 = (long)pvVar7 - lVar5 >> 3; + if (iVar1 < (int)uVar6) { +LAB_003b7b80: + *(undefined8 **)(lVar5 + (long)iVar1 * 8) = puVar3; + /* try { // try from 003b7b8c to 004b7b8f has its CatchHandler @ 003b8268 */ + return puVar3; + } + uVar4 = (ulong)(iVar1 + 1); + if (uVar4 <= uVar6) { + if (uVar4 < uVar6) { + __pointer[1] = lVar5 + uVar4 * 8; + *(undefined8 **)(lVar5 + (long)iVar1 * 8) = puVar3; + return puVar3; + } + goto LAB_003b7b80; + } + uVar4 = uVar4 - uVar6; + if (uVar4 == 0) goto LAB_003b7b80; + if (uVar4 <= (ulong)(__pointer[2] - (long)pvVar7 >> 3)) { + memset(pvVar7,0,uVar4 * 8); + __pointer[1] = __pointer[1] + uVar4 * 8; + *(undefined8 **)(*__pointer + (long)iVar1 * 8) = puVar3; + return puVar3; + } + if (0x1fffffffffffffff - uVar6 < uVar4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("vector::_M_fill_insert"); + } + uVar9 = uVar4; + if (uVar4 < uVar6) { + uVar9 = uVar6; + } + uVar9 = uVar9 + uVar6; + if ((uVar9 < uVar6) || (0x1fffffffffffffff < uVar9)) { + uVar9 = 0x1fffffffffffffff; + } + else if (uVar9 == 0) { + __dest_00 = (void *)0x0; + uVar9 = 0; + goto LAB_003b7d28; + } + uVar9 = uVar9 << 3; + __dest_00 = operator_new(uVar9); +LAB_003b7d28: + memset((void *)((long)__dest_00 + ((long)pvVar7 - lVar5)),0,uVar4 * 8); + sVar8 = (long)pvVar7 - *__pointer; + if ((long)sVar8 >> 3 != 0) { + /* try { // try from 003b7dc0 to 004b7de7 has its CatchHandler @ 003b8250 */ + memmove(__dest_00,(void *)*__pointer,sVar8); + } + __dest = (void *)((long)__dest_00 + uVar4 * 8 + sVar8); + sVar8 = __pointer[1] - (long)pvVar7; + if ((long)sVar8 >> 3 != 0) { + memmove(__dest,pvVar7,sVar8); + } + if ((void *)*__pointer != (void *)0x0) { + operator_delete((void *)*__pointer); + } + *__pointer = (long)__dest_00; + __pointer[1] = (long)__dest + sVar8; + __pointer[2] = (long)__dest_00 + uVar9; + *(undefined8 **)((long)__dest_00 + (long)iVar1 * 8) = puVar3; + return puVar3; +} + + +================================================================== + +### FUNC 003b7e20 (384 bytes) name=FUN_003b7e20 + +void FUN_003b7e20(long *param_1) + +{ + undefined8 *puVar1; + int iVar2; + long *plVar3; + Mutex *this; + void *pvVar4; + long lVar5; + long lVar6; + void *pvVar7; + int iVar8; + + /* try { // try from 003b7e24 to 004b7e27 has its CatchHandler @ 003b6d50 */ + /* try { // try from 003b7e30 to 004b7e33 has its CatchHandler @ 003b8268 */ + /* try { // try from 003b7e3c to 004b7e3f has its CatchHandler @ 003b8160 */ + pvVar4 = (void *)*param_1; + /* try { // try from 003b7e48 to 004b7e4b has its CatchHandler @ 003b8258 */ + lVar5 = param_1[1] - (long)pvVar4; + /* try { // try from 003b7e54 to 004b7e57 has its CatchHandler @ 003b8248 */ + if (0 < (int)(lVar5 >> 3)) { + lVar6 = 0; + /* try { // try from 003b7e60 to 004b7e63 has its CatchHandler @ 003b8260 */ + iVar8 = 0; + /* try { // try from 003b7e6c to 004b7e6f has its CatchHandler @ 003b8190 */ + do { + pvVar7 = *(void **)((long)pvVar4 + lVar6); + puVar1 = (undefined8 *)((long)pvVar4 + lVar6); + if (pvVar7 != (void *)0x0) { + this = DAT_00532a38; + if ((DAT_00532b90 & 1) == 0) { + iVar2 = __cxa_guard_acquire(&DAT_00532b90); + if (iVar2 == 0) { + pvVar7 = (void *)*puVar1; + this = DAT_00532a38; + } + else { + this = operator_new(0x20); + cv::Mutex::Mutex(this); + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + DAT_00532a38 = this; + __cxa_guard_release(&DAT_00532b90); + pvVar7 = (void *)*puVar1; + } + } + cv::Mutex::lock(this); + /* try { // try from 003b7e88 to 004b807b has its CatchHandler @ 003b8250 */ + plVar3 = *(long **)(*(long *)(this + 8) + lVar6); + if (plVar3 != (long *)0x0) { + if (*(code **)(*plVar3 + 0x18) == FUN_003b603c) { + if (pvVar7 != (void *)0x0) { + cv::ocl::Queue::~Queue((Queue *)((long)pvVar7 + 0x10)); + operator_delete(pvVar7); + } + } + else { + (**(code **)(*plVar3 + 0x18))(plVar3,pvVar7); + } + } + cv::Mutex::unlock(this); + *puVar1 = 0; + pvVar4 = (void *)*param_1; + lVar5 = param_1[1] - (long)pvVar4; + } + iVar8 = iVar8 + 1; + lVar6 = lVar6 + 8; + } while (iVar8 < (int)(lVar5 >> 3)); + } + param_1[1] = (long)pvVar4; + if (pvVar4 == (void *)0x0) { + return; + } + operator_delete(pvVar4); + return; +} + + +================================================================== + +### FUNC 003b7ff8 (124 bytes) name=FUN_003b7ff8 + +TLSDataContainer * FUN_003b7ff8(void) + +{ + int iVar1; + TLSDataContainer *this; + + if (((DAT_00532ba0 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00532ba0), iVar1 != 0)) { + this = operator_new(0x10); + cv::TLSDataContainer::TLSDataContainer(this); + *(undefined ***)this = &PTR_FUN_004f7970; + DAT_00532a50 = this; + __cxa_guard_release(&DAT_00532ba0); + return this; + } + return DAT_00532a50; +} + + +================================================================== + +### FUNC 003b809c (36 bytes) name=setIppStatus + +/* cv::ipp::setIppStatus(int, char const*, char const*, int) */ + +void cv::ipp::setIppStatus(int param_1,char *param_2,char *param_3,int param_4) + +{ + DAT_00532b9c = param_1; + DAT_00532a70 = param_2; + DAT_00532a58 = param_3; + DAT_00532cc0 = param_4; + /* catch() { ... } // from try @ 003b7190 with catch @ 003b80bc */ + return; +} + + +================================================================== + +### FUNC 003b80c0 (12 bytes) name=getIppStatus + +/* cv::ipp::getIppStatus() */ + +undefined4 cv::ipp::getIppStatus(void) + +{ + return DAT_00532b9c; +} + + +================================================================== + +### FUNC 003b80cc (144 bytes) name=getIppErrorLocation + +/* cv::ipp::getIppErrorLocation() */ + +void __thiscall cv::ipp::getIppErrorLocation(ipp *this) + +{ + undefined1 *puVar1; + + puVar1 = DAT_00532a58; + if (DAT_00532a58 == (undefined1 *)0x0) { + puVar1 = &DAT_00472008; + } + if (DAT_00532a70 == 0) { + format("%s:%d %s",puVar1,(ulong)DAT_00532cc0,&DAT_00472008); + /* try { // try from 003b814c to 004b814f has its CatchHandler @ 003b6d50 */ + /* catch() { ... } // from try @ 003b7474 with catch @ 003b8150 */ + return; + } + format("%s:%d %s",puVar1,(ulong)DAT_00532cc0); + return; +} + + +================================================================== + +### FUNC 003b815c (8 bytes) name=useIPP + +/* cv::ipp::useIPP() */ + +undefined8 cv::ipp::useIPP(void) + +{ + /* catch() { ... } // from try @ 003b7b18 with catch @ 003b8160 + catch() { ... } // from try @ 003b7e3c with catch @ 003b8160 */ + return 0; +} + + +================================================================== + +### FUNC 003b8164 (140 bytes) name=setUseIPP + +/* cv::ipp::setUseIPP(bool) */ + +void cv::ipp::setUseIPP(bool param_1) + +{ + int iVar1; + long lVar2; + TLSDataContainer *this; + + /* catch() { ... } // from try @ 003b7df4 with catch @ 003b8168 + catch() { ... } // from try @ 003b7e78 with catch @ 003b8168 */ + if (((DAT_00532ba0 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00532ba0), iVar1 != 0)) { + this = operator_new(0x10); + /* catch() { ... } // from try @ 003b77b0 with catch @ 003b81b4 */ + TLSDataContainer::TLSDataContainer(this); + /* catch() { ... } // from try @ 003b76b8 with catch @ 003b81c4 */ + *(undefined ***)this = &PTR_FUN_004f7970; + DAT_00532a50 = this; + __cxa_guard_release(&DAT_00532ba0); + /* catch() { ... } // from try @ 003b7948 with catch @ 003b81d4 + catch() { ... } // from try @ 003b7e18 with catch @ 003b81d4 */ + lVar2 = TLSDataContainer::getData(this); + *(undefined4 *)(lVar2 + 0x1c) = 0; + return; + } + lVar2 = TLSDataContainer::getData(DAT_00532a50); + *(undefined4 *)(lVar2 + 0x1c) = 0; + /* catch() { ... } // from try @ 003b7e04 with catch @ 003b8190 + catch() { ... } // from try @ 003b7e6c with catch @ 003b8190 */ + return; +} + + +================================================================== + +### FUNC 003b8218 (88 bytes) name=setUseOptimized + +/* cv::setUseOptimized(bool) */ + +void cv::setUseOptimized(bool param_1) + +{ + /* catch() { ... } // from try @ 003b7860 with catch @ 003b8224 */ + if (param_1) { + /* catch() { ... } // from try @ 003b6dc0 with catch @ 003b8268 + catch() { ... } // from try @ 003b7b8c with catch @ 003b8268 + catch() { ... } // from try @ 003b7e30 with catch @ 003b8268 */ + PTR_DAT_005093f8 = (undefined *)&DAT_00532cc8; + } + else { + PTR_DAT_005093f8 = (undefined *)&DAT_00532a88; + } + DAT_00532a81 = *(undefined1 *)((long)PTR_DAT_005093f8 + 7); + DAT_005093f0 = param_1; + /* catch() { ... } // from try @ 003b6e80 with catch @ 003b8248 + catch() { ... } // from try @ 003b6eb8 with catch @ 003b8248 + catch() { ... } // from try @ 003b7a30 with catch @ 003b8248 + catch() { ... } // from try @ 003b7e54 with catch @ 003b8248 */ + /* catch() { ... } // from try @ 003b6fd0 with catch @ 003b8250 + catch() { ... } // from try @ 003b7198 with catch @ 003b8250 + catch() { ... } // from try @ 003b747c with catch @ 003b8250 + catch() { ... } // from try @ 003b76c0 with catch @ 003b8250 + catch() { ... } // from try @ 003b77b8 with catch @ 003b8250 + catch() { ... } // from try @ 003b78d4 with catch @ 003b8250 + catch() { ... } // from try @ 003b7dc0 with catch @ 003b8250 + catch() { ... } // from try @ 003b7e88 with catch @ 003b8250 */ + ipp::setUseIPP(param_1); + /* catch() { ... } // from try @ 003b7aa4 with catch @ 003b8258 + catch() { ... } // from try @ 003b7e48 with catch @ 003b8258 */ + /* catch() { ... } // from try @ 003b79bc with catch @ 003b8260 + catch() { ... } // from try @ 003b7e60 with catch @ 003b8260 */ + ocl::setUseOpenCL(param_1); + return; +} + + +================================================================== + +### FUNC 003b8270 (48 bytes) name=cvUseOptimized + +undefined1 cvUseOptimized(int param_1) + +{ + undefined1 uVar1; + + uVar1 = DAT_005093f0; + cv::setUseOptimized(param_1 != 0); + return uVar1; +} + + +================================================================== + +### FUNC 003b82a0 (64 bytes) name=FUN_003b82a0 + +void FUN_003b82a0(void) + +{ + Mutex *this; + Mutex *pMVar1; + + this = (Mutex *)&DAT_00532ec0; + do { + pMVar1 = this + -8; + cv::Mutex::~Mutex(this); + this = pMVar1; + } while (pMVar1 != (Mutex *)0x532dc8); + return; +} + + +================================================================== + +### FUNC 003b82e0 (48 bytes) name=UMatData + +/* cv::UMatData::UMatData(cv::MatAllocator const*) */ + +void __thiscall cv::UMatData::UMatData(UMatData *this,MatAllocator *param_1) + +{ + *(undefined4 *)(this + 0x14) = 0; + *(MatAllocator **)(this + 8) = param_1; + *(MatAllocator **)this = param_1; + *(undefined4 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined4 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x40) = 0; + *(undefined4 *)(this + 0x48) = 0; + return; +} + + +================================================================== + +### FUNC 003b8310 (4 bytes) name=~UMatData + +/* cv::UMatData::~UMatData() */ + +void __thiscall cv::UMatData::~UMatData(UMatData *this) + +{ + return; +} + + +================================================================== + +### FUNC 003b8314 (60 bytes) name=lock + +/* cv::UMatData::lock() */ + +void __thiscall cv::UMatData::lock(UMatData *this) + +{ + Mutex::lock((Mutex *)(&DAT_00532dd0 + ((ulong)this % 0x1f) * 8)); + return; +} + + +================================================================== + +### FUNC 003b8350 (60 bytes) name=unlock + +/* cv::UMatData::unlock() */ + +void __thiscall cv::UMatData::unlock(UMatData *this) + +{ + Mutex::unlock((Mutex *)(&DAT_00532dd0 + ((ulong)this % 0x1f) * 8)); + return; +} + + +================================================================== + +### FUNC 003b838c (4 bytes) name=getStdAllocator + +/* cv::UMat::getStdAllocator() */ + +void cv::UMat::getStdAllocator(void) + +{ + (*(code *)PTR_getStdAllocator_005001b8)(); + return; +} + + +================================================================== + +### FUNC 003b8390 (244 bytes) name=swap + +/* cv::swap(cv::UMat&, cv::UMat&) */ + +void cv::swap(UMat *param_1,UMat *param_2) + +{ + undefined4 uVar1; + undefined8 uVar2; + UMat *pUVar3; + UMat *pUVar4; + + uVar1 = *(undefined4 *)param_1; + *(undefined4 *)param_1 = *(undefined4 *)param_2; + *(undefined4 *)param_2 = uVar1; + uVar1 = *(undefined4 *)(param_1 + 4); + *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4); + *(undefined4 *)(param_2 + 4) = uVar1; + uVar1 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8); + *(undefined4 *)(param_2 + 8) = uVar1; + uVar1 = *(undefined4 *)(param_1 + 0xc); + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + *(undefined4 *)(param_2 + 0xc) = uVar1; + uVar2 = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_2 + 0x10); + *(undefined8 *)(param_2 + 0x10) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x20); + *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_2 + 0x20); + *(undefined8 *)(param_2 + 0x20) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_2 + 0x28); + *(undefined8 *)(param_2 + 0x28) = uVar2; + uVar2 = *(undefined8 *)(param_1 + 0x30); + *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(param_2 + 0x30); + *(undefined8 *)(param_2 + 0x30) = uVar2; + pUVar3 = *(UMat **)(param_1 + 0x38); + *(undefined8 *)(param_1 + 0x38) = *(undefined8 *)(param_2 + 0x38); + *(UMat **)(param_2 + 0x38) = pUVar3; + uVar2 = *(undefined8 *)(param_1 + 0x40); + *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(param_2 + 0x40); + *(undefined8 *)(param_2 + 0x40) = uVar2; + pUVar4 = *(UMat **)(param_1 + 0x38); + uVar2 = *(undefined8 *)(param_1 + 0x48); + *(undefined8 *)(param_1 + 0x48) = *(undefined8 *)(param_2 + 0x48); + *(undefined8 *)(param_2 + 0x48) = uVar2; + if (pUVar4 == param_2 + 0x40) { + *(UMat **)(param_1 + 0x38) = param_1 + 0x40; + *(UMat **)(param_1 + 0x30) = param_1 + 8; + pUVar3 = *(UMat **)(param_2 + 0x38); + } + if (pUVar3 != param_1 + 0x40) { + return; + } + *(UMat **)(param_2 + 0x38) = param_2 + 0x40; + *(UMat **)(param_2 + 0x30) = param_2 + 8; + return; +} + + +================================================================== + +### FUNC 003b8484 (332 bytes) name=copySize + +/* cv::UMat::copySize(cv::UMat const&) */ + +void __thiscall cv::UMat::copySize(UMat *this,UMat *param_1) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + long lVar7; + char *pcVar8; + int iVar9; + long lVar10; + long lVar11; + long lVar12; + long lVar13; + ulong uVar14; + undefined8 local_10; + undefined8 local_8; + + uVar1 = *(uint *)(param_1 + 4); + if (0x20 < uVar1) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)String::allocate((String *)&local_10,0x21); + uVar6 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar5 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar4 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar3 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar8[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar8 = uVar3; + *(undefined8 *)(pcVar8 + 8) = uVar4; + *(undefined8 *)(pcVar8 + 0x10) = uVar5; + *(undefined8 *)(pcVar8 + 0x18) = uVar6; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::UMat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x81); + String::deallocate((String *)&local_10); + } + if (uVar1 != *(uint *)(this + 4)) { + if (*(UMat **)(this + 0x38) != this + 0x40) { + fastFree(*(UMat **)(this + 0x38)); + *(UMat **)(this + 0x38) = this + 0x40; + *(UMat **)(this + 0x30) = this + 8; + } + if (2 < (int)uVar1) { + uVar14 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar1 << 3; + lVar10 = fastMalloc(uVar14 + (long)(int)(uVar1 + 1) * 4); + *(long *)(this + 0x38) = lVar10; + lVar10 = lVar10 + uVar14 + 4; + *(long *)(this + 0x30) = lVar10; + *(uint *)(lVar10 + -4) = uVar1; + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + } + } + *(uint *)(this + 4) = uVar1; + if (0 < (int)uVar1) { + lVar13 = *(long *)(this + 0x38); + lVar10 = 0; + lVar12 = *(long *)(param_1 + 0x38); + lVar11 = *(long *)(this + 0x30); + lVar7 = *(long *)(param_1 + 0x30); + do { + iVar9 = (int)lVar10; + *(undefined4 *)(lVar11 + lVar10 * 4) = *(undefined4 *)(lVar7 + lVar10 * 4); + iVar2 = *(int *)(this + 4); + *(undefined8 *)(lVar13 + lVar10 * 8) = *(undefined8 *)(lVar12 + lVar10 * 8); + lVar10 = lVar10 + 1; + } while (iVar9 + 1 < iVar2); + } + return; +} + + +================================================================== + +### FUNC 003b85e4 (56 bytes) name=deallocate + +/* cv::UMat::deallocate() */ + +void __thiscall cv::UMat::deallocate(UMat *this) + +{ + long *plVar1; + + plVar1 = *(long **)(*(long *)(this + 0x20) + 8); + (**(code **)(*plVar1 + 0x20))(plVar1,*(long *)(this + 0x20)); + *(undefined8 *)(this + 0x20) = 0; + return; +} + + +================================================================== + +### FUNC 003b861c (140 bytes) name=~UMat + +/* cv::UMat::~UMat() */ + +void __thiscall cv::UMat::~UMat(UMat *this) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + + if (*(long *)(this + 0x20) != 0) { + piVar1 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + deallocate(this); + } + } + if (0 < *(int *)(this + 4)) { + iVar4 = 0; + puVar5 = *(undefined4 **)(this + 0x30); + do { + *puVar5 = 0; + iVar4 = iVar4 + 1; + puVar5 = puVar5 + 1; + } while (iVar4 < *(int *)(this + 4)); + } + *(undefined8 *)(this + 0x20) = 0; + if (*(UMat **)(this + 0x38) != this + 0x40) { + fastFree(*(UMat **)(this + 0x38)); + return; + } + return; +} + + +================================================================== + +### FUNC 003b86b0 (1320 bytes) name=getUMat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::Mat::getUMat(int, cv::UMatUsageFlags) const */ + +uint * cv::Mat::getUMat(uint *param_1,uint *param_2,undefined4 param_3,undefined4 param_4) + +{ + ulong *puVar1; + uint *puVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined2 uVar9; + long lVar10; + long *plVar11; + long lVar12; + long lVar13; + undefined4 *puVar14; + int *piVar15; + char *pcVar16; + long *plVar17; + uint uVar18; + uint uVar19; + int iVar20; + long lVar21; + uint uVar22; + uint uVar23; + long lVar24; + ulong uVar25; + long lVar26; + int iVar27; + long lVar28; + long lVar29; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + uVar5 = _DAT_003b8c10; + puVar2 = param_1 + 0x10; + *(undefined8 *)(param_1 + 2) = _UNK_003b8c18; + *(undefined8 *)param_1 = uVar5; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + *(uint **)(param_1 + 0xc) = param_1 + 2; + *(uint **)(param_1 + 0xe) = puVar2; + param_1[0x12] = 0; + param_1[0x13] = 0; + puVar2[0] = 0; + puVar2[1] = 0; + if (*(long *)(param_2 + 4) == 0) { + return param_1; + } + lVar10 = *(long *)(param_2 + 0xe); + if (lVar10 == 0) { + plVar11 = *(long **)(param_2 + 0xc); + plVar17 = (long *)getStdAllocator(); + if (plVar11 == (long *)0x0) { + plVar11 = plVar17; + } + lVar10 = (**(code **)(*plVar11 + 0x10)) + (plVar11,param_2[1],*(undefined8 *)(param_2 + 0x10),*param_2 & 0xfff, + *(undefined8 *)(param_2 + 4),*(undefined8 *)(param_2 + 0x12),param_3,param_4 + ); + *(undefined4 *)(lVar10 + 0x14) = 1; + } + plVar11 = (long *)UMat::getStdAllocator(); + (**(code **)(*plVar11 + 0x18))(plVar11,lVar10,param_3,param_4); + uVar23 = param_2[1]; + *param_1 = *param_2; + lVar28 = *(long *)(param_2 + 0x10); + lVar29 = *(long *)(param_2 + 0x12); + if (0x20 < uVar23) { + local_10 = 0; + local_8 = 0; + pcVar16 = (char *)String::allocate((String *)&local_10,0x21); + uVar8 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar7 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar6 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar5 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar16[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar16 = uVar5; + *(undefined8 *)(pcVar16 + 8) = uVar6; + *(undefined8 *)(pcVar16 + 0x10) = uVar7; + *(undefined8 *)(pcVar16 + 0x18) = uVar8; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::UMat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x81); + String::deallocate((String *)&local_10); + } + if (uVar23 != param_1[1]) { + if (puVar2 != *(uint **)(param_1 + 0xe)) { + fastFree(*(uint **)(param_1 + 0xe)); + *(uint **)(param_1 + 0xe) = puVar2; + *(uint **)(param_1 + 0xc) = param_1 + 2; + } + if (2 < (int)uVar23) { + uVar25 = -(ulong)(uVar23 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar23 << 3; + lVar12 = fastMalloc(uVar25 + (long)(int)(uVar23 + 1) * 4); + *(long *)(param_1 + 0xe) = lVar12; + lVar12 = lVar12 + uVar25 + 4; + *(long *)(param_1 + 0xc) = lVar12; + *(uint *)(lVar12 + -4) = uVar23; + param_1[3] = 0xffffffff; + param_1[2] = 0xffffffff; + } + } + param_1[1] = uVar23; + if (lVar28 == 0) { + uVar22 = *param_1; +LAB_003b8914: + iVar27 = uVar23 - 1; + if (((int)uVar23 < 1) || (piVar15 = *(int **)(param_1 + 0xc), 1 < *piVar15)) { + uVar18 = 0; + } + else { +LAB_003b8930: + uVar19 = 0; + do { + piVar15 = piVar15 + 1; + uVar19 = uVar19 + 1; + uVar18 = uVar23; + if (uVar19 == uVar23) break; + uVar18 = uVar19; + } while (*piVar15 < 2); + } + if (iVar27 <= (int)uVar18) { +LAB_003b89c4: + *param_1 = uVar22 | 0x4000; + goto LAB_003b89cc; + } + lVar28 = *(long *)(param_1 + 0xe); + piVar15 = *(int **)(param_1 + 0xc); + } + else { + uVar22 = *param_1; + uVar18 = uVar23 - 1; + lVar12 = (long)(int)((uVar22 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar22 & 7) << 1)) & 3)); + if (-1 < (int)uVar18) { + if (lVar29 == 0) { + lVar29 = (long)(int)uVar18 << 2; + do { + iVar27 = *(int *)(lVar28 + lVar29); + if (iVar27 < 0) { + local_20 = 0; + local_18 = 0; + puVar14 = (undefined4 *)String::allocate((String *)&local_20,6); + uVar9 = DAT_0046acbc; + *puVar14 = DAT_0046acb8; + *(undefined2 *)(puVar14 + 1) = uVar9; + error(-0xd7,(String *)&local_20, + "void cv::setSize(cv::UMat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x9c); + String::deallocate((String *)&local_20); + } + *(int *)(*(long *)(param_1 + 0xc) + lVar29) = iVar27; + lVar29 = lVar29 + -4; + } while (lVar29 != ((long)(int)uVar18 - (ulong)uVar18) * 4 + -4); + } + else { + lVar24 = (long)(int)uVar18 << 2; + lVar26 = (long)(int)uVar18 << 3; + uVar22 = uVar18; + do { + iVar27 = *(int *)(lVar28 + lVar24); + if (iVar27 < 0) { + local_20 = 0; + local_18 = 0; + puVar14 = (undefined4 *)String::allocate((String *)&local_20,6); + uVar9 = DAT_0046acbc; + *puVar14 = DAT_0046acb8; + *(undefined2 *)(puVar14 + 1) = uVar9; + error(-0xd7,(String *)&local_20, + "void cv::setSize(cv::UMat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x9c); + String::deallocate((String *)&local_20); + } + lVar21 = *(long *)(param_1 + 0xe); + *(int *)(*(long *)(param_1 + 0xc) + lVar24) = iVar27; + lVar13 = lVar12; + if ((int)uVar22 < (int)uVar18) { + lVar13 = *(long *)(lVar29 + lVar26); + } + uVar22 = uVar22 - 1; + *(long *)(lVar21 + lVar26) = lVar13; + lVar24 = lVar24 + -4; + lVar26 = lVar26 + -8; + } while (uVar22 != 0xffffffff); + } + uVar22 = *param_1; + } + if (uVar23 != 1) { + uVar23 = param_1[1]; + goto LAB_003b8914; + } + piVar15 = *(int **)(param_1 + 0xc); + uVar23 = 2; + param_1[3] = 1; + param_1[1] = 2; + lVar28 = *(long *)(param_1 + 0xe); + iVar20 = *piVar15; + *(long *)(lVar28 + 8) = lVar12; + iVar27 = 1; + if (iVar20 < 2) goto LAB_003b8930; + uVar23 = 2; + uVar18 = 0; + } + iVar20 = uVar23 - 2; + lVar29 = (long)iVar20 * 8; + if (*(ulong *)(lVar28 + lVar29) <= + (ulong)((long)piVar15[iVar27] * *(long *)(lVar28 + (long)iVar27 * 8))) { + piVar15 = piVar15 + iVar20; + plVar11 = (long *)(lVar28 + lVar29); + do { + if (iVar20 <= (int)uVar18) goto LAB_003b89c4; + iVar27 = *piVar15; + lVar28 = *plVar11; + iVar20 = iVar20 + -1; + puVar1 = (ulong *)(plVar11 + -1); + piVar15 = piVar15 + -1; + plVar11 = plVar11 + -1; + } while (*puVar1 <= (ulong)(iVar27 * lVar28)); + } + *param_1 = uVar22 & 0xffffbfff; +LAB_003b89cc: + if ((int)uVar23 < 3) { + lVar28 = *(long *)(param_2 + 4) - *(long *)(param_2 + 6); + } + else { + lVar28 = *(long *)(param_2 + 4); + lVar29 = *(long *)(param_2 + 6); + param_1[3] = 0xffffffff; + param_1[2] = 0xffffffff; + lVar28 = lVar28 - lVar29; + } + *(long *)(param_1 + 10) = lVar28; + *(long *)(param_1 + 8) = lVar10; + piVar15 = (int *)(lVar10 + 0x10); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar15,0x10); + if (bVar4) { + *piVar15 = *piVar15 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + return param_1; +} + + +================================================================== + +### FUNC 003b8c20 (1740 bytes) name=create + +/* cv::UMat::create(int, int const*, int, cv::UMatUsageFlags) */ + +void __thiscall +cv::UMat::create(UMat *this,uint param_1,int *param_2,uint param_3,undefined4 param_5) + +{ + ulong *puVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined2 uVar8; + int iVar9; + uint uVar10; + long lVar11; + undefined4 *puVar12; + long *plVar13; + char *pcVar14; + uint uVar15; + long lVar16; + int *piVar17; + int *piVar18; + int iVar19; + int *piVar20; + long lVar21; + long lVar22; + long *plVar23; + ulong uVar24; + long lVar25; + long lVar26; + long local_20; + long local_18; + undefined8 local_10; + undefined8 local_8; + + *(undefined4 *)(this + 0x18) = param_5; + if ((0x20 < param_1) || (param_2 == (int *)0x0)) { + local_10 = 0; + local_8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_10,0x23); + cVar2 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90[0x22]; + uVar7 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._24_8_; + uVar6 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._16_8_; + uVar5 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._8_8_; + uVar4 = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._0_8_; + *(undefined2 *)(pcVar14 + 0x20) = s_0_<__d_&&_d_<__CV_MAX_DIM_&&__si_0046ac90._32_2_; + pcVar14[0x22] = cVar2; + *(undefined8 *)pcVar14 = uVar4; + *(undefined8 *)(pcVar14 + 8) = uVar5; + *(undefined8 *)(pcVar14 + 0x10) = uVar6; + *(undefined8 *)(pcVar14 + 0x18) = uVar7; + error(-0xd7,(String *)&local_10, + "void cv::UMat::create(int, const int*, int, cv::UMatUsageFlags)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0xef); + String::deallocate((String *)&local_10); + } + param_3 = param_3 & 0xfff; + if (*(long *)(this + 0x20) != 0) { + if (((*(uint *)(this + 4) == param_1) || ((param_1 == 1 && ((int)*(uint *)(this + 4) < 3)))) && + ((*(uint *)this & 0xfff) == param_3)) { + if (param_1 == 2) { + iVar9 = *param_2; + if ((*(int *)(this + 8) == iVar9) && (*(int *)(this + 0xc) == param_2[1])) { + return; + } + } + else { + if ((int)param_1 < 1) { + if (param_1 == 0) { + piVar18 = *(int **)(this + 0x30); +LAB_003b8ec0: + if (piVar18[1] == 1) { + return; + } + } + goto LAB_003b8ca8; + } + iVar9 = *param_2; + } + piVar18 = *(int **)(this + 0x30); + if (*piVar18 == iVar9) { + uVar15 = 0; + piVar17 = param_2; + piVar20 = piVar18; + do { + piVar20 = piVar20 + 1; + piVar17 = piVar17 + 1; + uVar15 = uVar15 + 1; + if ((int)param_1 <= (int)uVar15) { + if (param_1 == uVar15) { + if (param_1 != 1) { + return; + } + goto LAB_003b8ec0; + } + break; + } + } while (*piVar20 == *piVar17); + } + } +LAB_003b8ca8: + piVar18 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar9 = *piVar18; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar3) { + *piVar18 = iVar9 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar9 == 1) { + deallocate(this); + } + } + uVar15 = *(uint *)(this + 4); + if (0 < (int)uVar15) { + iVar9 = 0; + puVar12 = *(undefined4 **)(this + 0x30); + do { + *puVar12 = 0; + iVar9 = iVar9 + 1; + uVar15 = *(uint *)(this + 4); + puVar12 = puVar12 + 1; + } while (iVar9 < (int)uVar15); + } + *(undefined8 *)(this + 0x20) = 0; + if (param_1 == 0) { + return; + } + *(uint *)this = param_3 | 0x42ff0000; + if (0x20 < param_1) { + local_10 = 0; + local_8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_10,0x21); + uVar7 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._24_8_; + uVar6 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._16_8_; + uVar5 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._8_8_; + uVar4 = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68._0_8_; + pcVar14[0x20] = s_0_<___dims_&&__dims_<__CV_MAX_DI_0046ac68[0x20]; + *(undefined8 *)pcVar14 = uVar4; + *(undefined8 *)(pcVar14 + 8) = uVar5; + *(undefined8 *)(pcVar14 + 0x10) = uVar6; + *(undefined8 *)(pcVar14 + 0x18) = uVar7; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::UMat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x81); + String::deallocate((String *)&local_10); + uVar15 = *(uint *)(this + 4); + } + if (param_1 == uVar15) { +LAB_003b8d60: + *(uint *)(this + 4) = param_1; + if (param_2 == (int *)0x0) { +LAB_003b8f4c: + *(undefined8 *)(this + 0x28) = 0; + if (2 < (int)param_1) goto LAB_003b8f58; + } + else { +LAB_003b8d68: + uVar15 = param_1 - 1; + lVar11 = (long)(int)((*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3)); + if (-1 < (int)uVar15) { + lVar21 = (long)(int)uVar15; + lVar25 = lVar21 << 2; + lVar22 = lVar21 << 3; + lVar26 = lVar11; + do { + iVar9 = *(int *)((long)param_2 + lVar25); + if (iVar9 < 0) { + local_10 = 0; + local_8 = 0; + puVar12 = (undefined4 *)String::allocate((String *)&local_10,6); + uVar8 = DAT_0046acbc; + *puVar12 = DAT_0046acb8; + *(undefined2 *)(puVar12 + 1) = uVar8; + error(-0xd7,(String *)&local_10, + "void cv::setSize(cv::UMat&, int, const int*, const size_t*, bool)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x9c); + String::deallocate((String *)&local_10); + } + lVar16 = *(long *)(this + 0x38); + *(int *)(*(long *)(this + 0x30) + lVar25) = iVar9; + lVar25 = lVar25 + -4; + *(long *)(lVar16 + lVar22) = lVar26; + lVar22 = lVar22 + -8; + lVar26 = iVar9 * lVar26; + } while (lVar22 != (lVar21 - (ulong)uVar15) * 8 + -8); + } + if (param_1 != 1) { + param_1 = *(uint *)(this + 4); + goto LAB_003b8f4c; + } + *(undefined4 *)(this + 0xc) = 1; + param_1 = 2; + *(undefined4 *)(this + 4) = 2; + *(long *)(*(long *)(this + 0x38) + 8) = lVar11; + *(undefined8 *)(this + 0x28) = 0; + } + lVar11 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + if (*(UMat **)(this + 0x38) != this + 0x40) { + fastFree(*(UMat **)(this + 0x38)); + *(UMat **)(this + 0x38) = this + 0x40; + *(UMat **)(this + 0x30) = this + 8; + } + if ((int)param_1 < 3) goto LAB_003b8d60; + uVar24 = -(ulong)(param_1 >> 0x1f) & 0xfffffff800000000 | (ulong)param_1 << 3; + lVar11 = fastMalloc(uVar24 + (long)(int)(param_1 + 1) * 4); + *(long *)(this + 0x38) = lVar11; + lVar11 = lVar11 + uVar24 + 4; + *(long *)(this + 0x30) = lVar11; + *(uint *)(lVar11 + -4) = param_1; + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + *(uint *)(this + 4) = param_1; + if (param_2 != (int *)0x0) goto LAB_003b8d68; + *(undefined8 *)(this + 0x28) = 0; +LAB_003b8f58: + lVar26 = 0; + lVar11 = 1; + do { + lVar21 = lVar26 * 4; + lVar26 = lVar26 + 1; + lVar11 = lVar11 * *(int *)(*(long *)(this + 0x30) + lVar21); + } while ((int)lVar26 < (int)param_1); + } + if (lVar11 == 0) { + uVar15 = *(uint *)this; + iVar9 = param_1 - 1; + } + else { + plVar23 = *(long **)(this + 0x10); + plVar13 = (long *)getStdAllocator(); + if (plVar23 == (long *)0x0) { + plVar23 = plVar13; + } + lVar11 = (**(code **)(*plVar23 + 0x10)) + (plVar23,*(undefined4 *)(this + 4),*(undefined8 *)(this + 0x30),param_3,0, + *(undefined8 *)(this + 0x38),0,*(undefined4 *)(this + 0x18)); + *(long *)(this + 0x20) = lVar11; + if (lVar11 == 0) { + local_20 = lVar11; + local_18 = lVar11; + puVar12 = (undefined4 *)String::allocate((String *)&local_20,6); + uVar8 = DAT_0046acc4; + *puVar12 = DAT_0046acc0; + *(undefined2 *)(puVar12 + 1) = uVar8; + error(-0xd7,(String *)&local_20, + "void cv::UMat::create(int, const int*, int, cv::UMatUsageFlags)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x10c); + String::deallocate((String *)&local_20); + } + uVar15 = *(uint *)this; + param_1 = *(uint *)(this + 4); + iVar9 = param_1 - 1; + if (*(long *)(*(long *)(this + 0x38) + (long)iVar9 * 8) != + (long)(int)((uVar15 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar15 & 7) << 1)) & 3) + )) { + local_10 = 0; + local_8 = 0; + pcVar14 = (char *)String::allocate((String *)&local_10,0x2b); + cVar2 = s_step_dims_1______size_t_CV_ELEM__0046acc8[0x2a]; + uVar8 = s_step_dims_1______size_t_CV_ELEM__0046acc8._40_2_; + uVar7 = s_step_dims_1______size_t_CV_ELEM__0046acc8._24_8_; + uVar6 = s_step_dims_1______size_t_CV_ELEM__0046acc8._16_8_; + uVar5 = s_step_dims_1______size_t_CV_ELEM__0046acc8._8_8_; + uVar4 = s_step_dims_1______size_t_CV_ELEM__0046acc8._0_8_; + *(undefined8 *)(pcVar14 + 0x20) = s_step_dims_1______size_t_CV_ELEM__0046acc8._32_8_; + *(undefined2 *)(pcVar14 + 0x28) = uVar8; + pcVar14[0x2a] = cVar2; + *(undefined8 *)pcVar14 = uVar4; + *(undefined8 *)(pcVar14 + 8) = uVar5; + *(undefined8 *)(pcVar14 + 0x10) = uVar6; + *(undefined8 *)(pcVar14 + 0x18) = uVar7; + error(-0xd7,(String *)&local_10, + "void cv::UMat::create(int, const int*, int, cv::UMatUsageFlags)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x114); + String::deallocate((String *)&local_10); + param_1 = *(uint *)(this + 4); + uVar15 = *(uint *)this; + iVar9 = param_1 - 1; + } + } + if (((int)param_1 < 1) || (piVar18 = *(int **)(this + 0x30), 1 < *piVar18)) { + uVar10 = 0; + } + else { + uVar10 = 0; + do { + piVar18 = piVar18 + 1; + uVar10 = uVar10 + 1; + if (uVar10 == param_1) break; + } while (*piVar18 < 2); + } + if ((int)uVar10 < iVar9) { + lVar26 = *(long *)(this + 0x38); + iVar19 = param_1 - 2; + lVar11 = (long)iVar19 * 8; + if (*(ulong *)(lVar26 + lVar11) <= + (ulong)((long)*(int *)(*(long *)(this + 0x30) + (long)iVar9 * 4) * + *(long *)(lVar26 + (long)iVar9 * 8))) { + plVar23 = (long *)(lVar26 + lVar11); + piVar18 = (int *)(*(long *)(this + 0x30) + (long)iVar19 * 4); + do { + if (iVar19 <= (int)uVar10) goto LAB_003b902c; + iVar9 = *piVar18; + lVar11 = *plVar23; + iVar19 = iVar19 + -1; + puVar1 = (ulong *)(plVar23 + -1); + plVar23 = plVar23 + -1; + piVar18 = piVar18 + -1; + } while (*puVar1 <= (ulong)(iVar9 * lVar11)); + } + *(uint *)this = uVar15 & 0xffffbfff; + } + else { +LAB_003b902c: + *(uint *)this = uVar15 | 0x4000; + } + if (2 < (int)param_1) { + *(undefined4 *)(this + 0xc) = 0xffffffff; + *(undefined4 *)(this + 8) = 0xffffffff; + } + if (*(long *)(this + 0x20) != 0) { + piVar18 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar3) { + *piVar18 = *piVar18 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 003b941c (768 bytes) name=UMat + +/* cv::UMat::UMat(cv::UMat const&, cv::Rect_ const&) */ + +void __thiscall cv::UMat::UMat(UMat *this,UMat *param_1,Rect_ *param_2) + +{ + int *piVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined2 uVar8; + uint uVar9; + uint uVar10; + undefined8 uVar11; + void *__dest; + undefined8 *puVar12; + char *pcVar13; + int iVar14; + undefined4 *puVar15; + long lVar16; + undefined8 *puVar17; + int iVar18; + long *plVar19; + long lVar20; + undefined8 local_10; + undefined8 local_8; + + uVar11 = *(undefined8 *)(param_1 + 0x20); + uVar10 = *(uint *)param_1; + iVar18 = *(int *)(param_2 + 0xc); + iVar14 = *(int *)(param_2 + 8); + uVar2 = *(undefined4 *)(param_1 + 0x18); + *(undefined8 *)(this + 0x10) = *(undefined8 *)(param_1 + 0x10); + *(undefined8 *)(this + 0x20) = uVar11; + lVar16 = *(long *)(param_1 + 0x28); + plVar19 = *(long **)(param_1 + 0x38); + iVar4 = *(int *)(param_2 + 4); + *(undefined4 *)(this + 4) = 2; + lVar20 = *plVar19; + iVar3 = *(int *)(param_1 + 4); + *(uint *)this = uVar10; + lVar16 = lVar16 + iVar4 * lVar20; + *(int *)(this + 8) = iVar18; + *(int *)(this + 0xc) = iVar14; + *(undefined4 *)(this + 0x18) = uVar2; + *(long *)(this + 0x28) = lVar16; + *(UMat **)(this + 0x30) = this + 8; + *(UMat **)(this + 0x38) = this + 0x40; + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x40) = 0; + if (2 < iVar3) { + local_10 = 0; + local_8 = 0; + pcVar13 = (char *)String::allocate((String *)&local_10,0xb); + cVar6 = s_m_dims_<__2_0046acf8[10]; + uVar8 = s_m_dims_<__2_0046acf8._8_2_; + *(undefined8 *)pcVar13 = s_m_dims_<__2_0046acf8._0_8_; + *(undefined2 *)(pcVar13 + 8) = uVar8; + pcVar13[10] = cVar6; + error(-0xd7,(String *)&local_10,"cv::UMat::UMat(const cv::UMat&, const Rect&)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x164); + String::deallocate((String *)&local_10); + uVar10 = *(uint *)this; + iVar14 = *(int *)(param_2 + 8); + iVar18 = *(int *)(param_2 + 0xc); + lVar16 = *(long *)(this + 0x28); + } + iVar3 = *(int *)(param_1 + 0xc); + iVar4 = *(int *)param_2; + uVar9 = 0xffffbfff; + if (iVar3 <= iVar14) { + uVar9 = 0xffffffff; + } + uVar9 = uVar9 & uVar10; + uVar10 = 0x4000; + if (iVar18 != 1) { + uVar10 = 0; + } + *(uint *)this = uVar10 | uVar9; + iVar5 = ((uVar9 & 0xff8) >> 3) + 1 << (ulong)((uint)(0xfa50L >> ((uVar9 & 7) << 1)) & 3); + *(long *)(this + 0x28) = lVar16 + (long)iVar5 * (long)iVar4; + if (((((iVar14 < 0) || (iVar4 < 0)) || (iVar3 < iVar4 + iVar14)) || + ((iVar18 < 0 || (*(int *)(param_2 + 4) < 0)))) || + (*(int *)(param_1 + 8) < *(int *)(param_2 + 4) + iVar18)) { + local_10 = 0; + local_8 = 0; + __dest = (void *)String::allocate((String *)&local_10,0x7c); + memcpy(__dest, + "0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows" + ,0x7c); + error(-0xd7,(String *)&local_10,"cv::UMat::UMat(const cv::UMat&, const Rect&)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x16b); + String::deallocate((String *)&local_10); + } + if (*(long *)(this + 0x20) != 0) { + piVar1 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if ((*(int *)(param_2 + 8) < *(int *)(param_1 + 0xc)) || + (*(int *)(param_2 + 0xc) < *(int *)(param_1 + 8))) { + puVar17 = *(undefined8 **)(param_1 + 0x38); + *(uint *)this = *(uint *)this | 0x8000; + puVar12 = *(undefined8 **)(this + 0x38); + iVar18 = *(int *)(this + 8); + *puVar12 = *puVar17; + puVar12[1] = (long)iVar5; + uVar11 = s_m_dims_<__2_0046acf8._0_8_; + uVar8 = s_m_dims_<__2_0046acf8._8_2_; + } + else { + puVar12 = *(undefined8 **)(this + 0x38); + iVar18 = *(int *)(this + 8); + *puVar12 = **(undefined8 **)(param_1 + 0x38); + puVar12[1] = (long)iVar5; + uVar11 = s_m_dims_<__2_0046acf8._0_8_; + uVar8 = s_m_dims_<__2_0046acf8._8_2_; + } + if (0 < iVar18) { + s_m_dims_<__2_0046acf8[0] = (char)uVar11; + s_m_dims_<__2_0046acf8[1] = SUB81(uVar11,1); + s_m_dims_<__2_0046acf8[2] = SUB81(uVar11,2); + s_m_dims_<__2_0046acf8[3] = SUB81(uVar11,3); + s_m_dims_<__2_0046acf8[4] = SUB81(uVar11,4); + s_m_dims_<__2_0046acf8[5] = SUB81(uVar11,5); + s_m_dims_<__2_0046acf8[6] = SUB81(uVar11,6); + s_m_dims_<__2_0046acf8[7] = SUB81(uVar11,7); + s_m_dims_<__2_0046acf8[8] = (char)uVar8; + s_m_dims_<__2_0046acf8[9] = SUB21(uVar8,1); + if (0 < *(int *)(this + 0xc)) { + return; + } + } + s_m_dims_<__2_0046acf8._0_8_ = uVar11; + s_m_dims_<__2_0046acf8._8_2_ = uVar8; + if (*(long *)(this + 0x20) != 0) { + piVar1 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar18 = *piVar1; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = iVar18 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + if (iVar18 == 1) { + deallocate(this); + } + } + if (0 < *(int *)(this + 4)) { + iVar18 = 0; + puVar15 = *(undefined4 **)(this + 0x30); + do { + *puVar15 = 0; + iVar18 = iVar18 + 1; + puVar15 = puVar15 + 1; + } while (iVar18 < *(int *)(this + 4)); + } + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0xc) = 0; + *(undefined4 *)(this + 8) = 0; + return; +} + + +================================================================== + +### FUNC 003b9748 (1148 bytes) name=UMat + +/* cv::UMat::UMat(cv::UMat const&, cv::Range const*) */ + +void __thiscall cv::UMat::UMat(UMat *this,UMat *param_1,Range *param_2) + +{ + ulong *puVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined2 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + int iVar16; + char *pcVar17; + int *piVar18; + long *plVar19; + undefined8 uVar20; + undefined8 *puVar21; + undefined4 *puVar22; + undefined8 *puVar23; + long lVar24; + long lVar25; + long lVar26; + Range *pRVar27; + long lVar28; + Range *local_10; + Range *local_8; + + *(undefined8 *)this = DAT_003b9bf0; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(UMat **)(this + 0x30) = this + 8; + *(UMat **)(this + 0x38) = this + 0x40; + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x40) = 0; + iVar2 = *(int *)(param_1 + 4); + if (param_2 == (Range *)0x0) { + local_10 = param_2; + local_8 = param_2; + pcVar17 = (char *)String::allocate((String *)&local_10,6); + uVar8 = s_ranges_0046ad88._4_2_; + /* try { // try from 003b9b70 to 004b9b7f has its CatchHandler @ 003b9e1c */ + *(undefined4 *)pcVar17 = s_ranges_0046ad88._0_4_; + *(undefined2 *)(pcVar17 + 4) = uVar8; + error(-0xd7,(String *)&local_10,"cv::UMat::UMat(const cv::UMat&, const cv::Range*)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x180); + String::deallocate((String *)&local_10); + } + if (iVar2 < 1) { + if (this == param_1) goto LAB_003b99f4; +LAB_003b98ac: + if (*(long *)(param_1 + 0x20) != 0) { + piVar18 = (int *)(*(long *)(param_1 + 0x20) + 0x10); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar7) { + *piVar18 = *piVar18 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + if (*(long *)(this + 0x20) != 0) { + piVar18 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar16 = *piVar18; + /* try { // try from 003b98d8 to 004b98db has its CatchHandler @ 003b9e8c */ + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar18,0x10); + if (bVar7) { + *piVar18 = iVar16 + -1; + cVar6 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003b98e0 to 004b9907 has its CatchHandler @ 003b9810 */ + } while (cVar6 != '\0'); + if (iVar16 == 1) { + deallocate(this); + } + } + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = *(undefined4 *)param_1; + *(undefined8 *)(this + 0x20) = 0; +LAB_003b9928: + iVar16 = *(int *)(param_1 + 4); + if (2 < iVar16) goto LAB_003b9934; + puVar23 = *(undefined8 **)(param_1 + 0x38); + puVar21 = *(undefined8 **)(this + 0x38); + uVar4 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(this + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(this + 4) = iVar16; + *(undefined4 *)(this + 8) = uVar4; + *puVar21 = *puVar23; + puVar21[1] = puVar23[1]; + } + else { + iVar16 = 0; + puVar22 = *(undefined4 **)(this + 0x30); + do { + *puVar22 = 0; + iVar16 = iVar16 + 1; + /* try { // try from 003b990c to 004b9927 has its CatchHandler @ 003b9e84 */ + puVar22 = puVar22 + 1; + } while (iVar16 < *(int *)(this + 4)); + uVar4 = *(undefined4 *)param_1; + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)this = uVar4; + if (*(int *)(this + 4) < 3) goto LAB_003b9928; +LAB_003b9934: + copySize(this,param_1); + } + /* try { // try from 003b9948 to 004b996b has its CatchHandler @ 003b9e7c */ + *(undefined8 *)(this + 0x10) = *(undefined8 *)(param_1 + 0x10); + if (*(int *)(this + 0x18) == 0) { + *(undefined4 *)(this + 0x18) = *(undefined4 *)(param_1 + 0x18); + } + uVar20 = *(undefined8 *)(param_1 + 0x20); + *(undefined8 *)(this + 0x28) = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(this + 0x20) = uVar20; + if (iVar2 < 1) goto LAB_003b99f4; + } + else { + lVar28 = 0; + pRVar27 = param_2; + do { + iVar16 = *(int *)pRVar27; + iVar3 = *(int *)(pRVar27 + 4); + /* catch() { ... } // from try @ 003b983c with catch @ 003b9810 + catch() { ... } // from try @ 003b98a8 with catch @ 003b9810 + catch() { ... } // from try @ 003b98e0 with catch @ 003b9810 + catch() { ... } // from try @ 003b9af0 with catch @ 003b9810 + catch() { ... } // from try @ 003b9df0 with catch @ 003b9810 + catch() { ... } // from try @ 003b9e18 with catch @ 003b9810 */ + if (((iVar16 != -0x80000000) || (iVar3 != 0x7fffffff)) && + ((iVar16 < 0 || + ((iVar3 <= iVar16 || (*(int *)(*(long *)(param_1 + 0x30) + lVar28) < iVar3)))))) { + local_10 = (Range *)0x0; + local_8 = (Range *)0x0; + /* try { // try from 003b983c to 004b985f has its CatchHandler @ 003b9810 */ + pcVar17 = (char *)String::allocate((String *)&local_10,0x4c); + uVar4 = s_r____Range__all_______0_<__r_sta_0046ad90._72_4_; + uVar15 = s_r____Range__all_______0_<__r_sta_0046ad90._56_8_; + uVar14 = s_r____Range__all_______0_<__r_sta_0046ad90._48_8_; + uVar13 = s_r____Range__all_______0_<__r_sta_0046ad90._40_8_; + uVar12 = s_r____Range__all_______0_<__r_sta_0046ad90._32_8_; + uVar11 = s_r____Range__all_______0_<__r_sta_0046ad90._24_8_; + uVar10 = s_r____Range__all_______0_<__r_sta_0046ad90._16_8_; + uVar9 = s_r____Range__all_______0_<__r_sta_0046ad90._8_8_; + uVar20 = s_r____Range__all_______0_<__r_sta_0046ad90._0_8_; + *(undefined8 *)(pcVar17 + 0x40) = s_r____Range__all_______0_<__r_sta_0046ad90._64_8_; + *(undefined4 *)(pcVar17 + 0x48) = uVar4; + /* try { // try from 003b9870 to 004b9873 has its CatchHandler @ 003b9ea0 */ + *(undefined8 *)pcVar17 = uVar20; + *(undefined8 *)(pcVar17 + 8) = uVar9; + *(undefined8 *)(pcVar17 + 0x10) = uVar10; + *(undefined8 *)(pcVar17 + 0x18) = uVar11; + *(undefined8 *)(pcVar17 + 0x20) = uVar12; + *(undefined8 *)(pcVar17 + 0x28) = uVar13; + /* try { // try from 003b9884 to 004b9887 has its CatchHandler @ 003b9e9c */ + *(undefined8 *)(pcVar17 + 0x30) = uVar14; + *(undefined8 *)(pcVar17 + 0x38) = uVar15; + error(-0xd7,(String *)&local_10,"cv::UMat::UMat(const cv::UMat&, const cv::Range*)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x184); + String::deallocate((String *)&local_10); + } + lVar28 = lVar28 + 4; + pRVar27 = pRVar27 + 8; + } while (lVar28 != ((ulong)(iVar2 - 1) + 1) * 4); + /* try { // try from 003b98a8 to 004b98ab has its CatchHandler @ 003b9810 */ + if (this != param_1) goto LAB_003b98ac; + } + lVar28 = 0; + iVar16 = 0; + do { + iVar3 = *(int *)param_2; + iVar5 = *(int *)(param_2 + 4); + /* try { // try from 003b9998 to 004b99d3 has its CatchHandler @ 003b9e1c */ + if (((iVar3 != -0x80000000) || (iVar5 != 0x7fffffff)) && + ((iVar5 != *(int *)(*(long *)(this + 0x30) + lVar28) || (iVar3 != 0)))) { + lVar26 = *(long *)(this + 0x38); + lVar24 = *(long *)(this + 0x28); + *(int *)(*(long *)(this + 0x30) + lVar28) = iVar5 - iVar3; + *(long *)(this + 0x28) = lVar24 + (long)iVar3 * *(long *)(lVar26 + lVar28 * 2); + *(uint *)this = *(uint *)this | 0x8000; + } + iVar16 = iVar16 + 1; + param_2 = param_2 + 8; + lVar28 = lVar28 + 4; + } while (iVar16 < iVar2); +LAB_003b99f4: + iVar2 = *(int *)(this + 4); + if ((iVar2 < 1) || (piVar18 = *(int **)(this + 0x30), 1 < *piVar18)) { + iVar16 = 0; + } + else { + iVar16 = 0; + do { + piVar18 = piVar18 + 1; + iVar16 = iVar16 + 1; + if (iVar16 == iVar2) break; + } while (*piVar18 < 2); + } + iVar3 = iVar2 + -1; + if (iVar16 < iVar3) { + lVar24 = *(long *)(this + 0x38); + lVar26 = (long)iVar3 * 8; + /* try { // try from 003b9a50 to 004b9a53 has its CatchHandler @ 003b9e7c */ + lVar28 = (long)iVar3 * 4; + lVar25 = lVar26 + -8; + if (*(ulong *)(lVar24 + lVar25) <= + (ulong)((long)*(int *)(*(long *)(this + 0x30) + lVar28) * *(long *)(lVar24 + lVar26))) { + plVar19 = (long *)(lVar24 + lVar25); + piVar18 = (int *)(*(long *)(this + 0x30) + lVar28 + -4); + do { + if (plVar19 == + (long *)(lVar24 + ((long)(iVar2 + -2) - (ulong)(uint)((iVar2 + -2) - iVar16)) * 8)) + goto LAB_003b9ab8; + iVar3 = *piVar18; + lVar28 = *plVar19; + puVar1 = (ulong *)(plVar19 + -1); + plVar19 = plVar19 + -1; + piVar18 = piVar18 + -1; + } while (*puVar1 <= (ulong)(iVar3 * lVar28)); + } + /* try { // try from 003b9af0 to 004b9b43 has its CatchHandler @ 003b9810 */ + *(uint *)this = *(uint *)this & 0xffffbfff; + } + else { +LAB_003b9ab8: + *(uint *)this = *(uint *)this | 0x4000; + } + /* try { // try from 003b9ac4 to 004b9ac7 has its CatchHandler @ 003b9e84 */ + return; +} + + +================================================================== + +### FUNC 003b9c00 (1828 bytes) name=UMat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::UMat(cv::UMat const&, cv::Range const&, cv::Range const&) */ + +void __thiscall cv::UMat::UMat(UMat *this,UMat *param_1,Range *param_2,Range *param_3) + +{ + int *piVar1; + undefined4 uVar2; + char cVar3; + bool bVar4; + undefined2 uVar5; + int iVar6; + ulong uVar7; + undefined8 uVar8; + char *pcVar9; + void *pvVar10; + uint uVar11; + uint uVar12; + undefined8 *puVar13; + undefined4 *puVar14; + undefined8 *puVar15; + ulong uVar16; + Range *pRVar17; + int iVar18; + long lVar19; + undefined4 local_4a0; + int local_49c; + undefined4 local_498; + undefined4 local_494; + undefined8 local_490; + undefined4 local_488; + long local_480; + undefined8 local_478; + undefined8 *local_468; + Range *local_450; + long local_448; + undefined8 local_440 [136]; + + *(undefined8 *)this = DAT_003ba390; + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + iVar18 = *(int *)(param_1 + 4); + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(UMat **)(this + 0x30) = this + 8; + *(UMat **)(this + 0x38) = this + 0x40; + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x40) = 0; + if (iVar18 < 2) { + local_450 = (Range *)0x0; + local_448 = 0; + pcVar9 = (char *)String::allocate((String *)&local_450,0xb); + cVar3 = s_m_dims_>__2_0046ade0[10]; + uVar5 = s_m_dims_>__2_0046ade0._8_2_; + *(undefined8 *)pcVar9 = s_m_dims_>__2_0046ade0._0_8_; + *(undefined2 *)(pcVar9 + 8) = uVar5; + pcVar9[10] = cVar3; + error(-0xd7,(String *)&local_450, + "cv::UMat::UMat(const cv::UMat&, const cv::Range&, const cv::Range&)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x137); + String::deallocate((String *)&local_450); + iVar18 = *(int *)(param_1 + 4); + } + if (iVar18 < 3) { + if (this != param_1) { + /* try { // try from 003b9ef8 to 004b9f3b has its CatchHandler @ 003b9ea8 */ + if (*(long *)(param_1 + 0x20) != 0) { + piVar1 = (int *)(*(long *)(param_1 + 0x20) + 0x10); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x20) != 0) { + piVar1 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar18 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + deallocate(this); + } + } + if (*(int *)(this + 4) < 1) { + *(undefined4 *)this = *(undefined4 *)param_1; + *(undefined8 *)(this + 0x20) = 0; +LAB_003b9f7c: + iVar18 = *(int *)(param_1 + 4); + if (2 < iVar18) goto LAB_003ba0d4; + puVar15 = *(undefined8 **)(param_1 + 0x38); + puVar13 = *(undefined8 **)(this + 0x38); + uVar2 = *(undefined4 *)(param_1 + 8); + *(undefined4 *)(this + 0xc) = *(undefined4 *)(param_1 + 0xc); + *(int *)(this + 4) = iVar18; + /* try { // try from 003b9fa0 to 004b9fc3 has its CatchHandler @ 003bad30 */ + *(undefined4 *)(this + 8) = uVar2; + *puVar13 = *puVar15; + puVar13[1] = puVar15[1]; + } + else { + iVar18 = 0; + puVar14 = *(undefined4 **)(this + 0x30); + do { + *puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = puVar14 + 1; + } while (iVar18 < *(int *)(this + 4)); + /* try { // try from 003b9f68 to 004b9f6b has its CatchHandler @ 003bb3e8 */ + uVar2 = *(undefined4 *)param_1; + /* try { // try from 003b9f70 to 004b9f9b has its CatchHandler @ 003b9ea8 */ + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)this = uVar2; + if (*(int *)(this + 4) < 3) goto LAB_003b9f7c; +LAB_003ba0d4: + copySize(this,param_1); + } + *(undefined8 *)(this + 0x10) = *(undefined8 *)(param_1 + 0x10); + if (*(int *)(this + 0x18) == 0) { + *(undefined4 *)(this + 0x18) = *(undefined4 *)(param_1 + 0x18); + } + uVar8 = *(undefined8 *)(param_1 + 0x20); + *(undefined8 *)(this + 0x28) = *(undefined8 *)(param_1 + 0x28); + *(undefined8 *)(this + 0x20) = uVar8; + } + iVar18 = *(int *)param_2; + if (iVar18 == -0x80000000) { + if (*(int *)(param_2 + 4) != 0x7fffffff) goto LAB_003ba100; + } + else { + if (iVar18 == 0) { + iVar6 = *(int *)(param_2 + 4); + if (*(int *)(this + 8) == iVar6) goto LAB_003ba004; + } + else { + if (iVar18 < 0) goto LAB_003ba100; + iVar6 = *(int *)(param_2 + 4); + } + /* try { // try from 003ba0f8 to 004ba11b has its CatchHandler @ 003baf54 */ + if ((iVar6 < iVar18) || (*(int *)(param_1 + 8) < iVar6)) { +LAB_003ba100: + local_450 = (Range *)0x0; + local_448 = 0; + pvVar10 = (void *)String::allocate((String *)&local_450,0x53); + memcpy(pvVar10, + "0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows" + ,0x53); + error(-0xd7,(String *)&local_450, + "cv::UMat::UMat(const cv::UMat&, const cv::Range&, const cv::Range&)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x146); + String::deallocate((String *)&local_450); + iVar18 = *(int *)param_2; + iVar6 = *(int *)(param_2 + 4); + } + /* try { // try from 003ba160 to 004ba163 has its CatchHandler @ 003bb26c */ + *(int *)(this + 8) = iVar6 - iVar18; + *(long *)(this + 0x28) = *(long *)(this + 0x28) + (long)iVar18 * *(long *)(this + 0x40); + *(uint *)this = *(uint *)this | 0x8000; + } +LAB_003ba004: + iVar18 = *(int *)param_3; + if (iVar18 == -0x80000000) { + if (*(int *)(param_3 + 4) != 0x7fffffff) goto LAB_003ba27c; + } + else { + if (iVar18 == 0) { + iVar6 = *(int *)(param_3 + 4); + if (*(int *)(this + 0xc) == iVar6) goto LAB_003ba02c; + } + else { + if (iVar18 < 0) goto LAB_003ba27c; + iVar6 = *(int *)(param_3 + 4); + } + if ((iVar6 < iVar18) || (*(int *)(param_1 + 0xc) < iVar6)) { +LAB_003ba27c: + local_450 = (Range *)0x0; + local_448 = 0; + pvVar10 = (void *)String::allocate((String *)&local_450,0x53); + memcpy(pvVar10, + "0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols" + ,0x53); + error(-0xd7,(String *)&local_450, + "cv::UMat::UMat(const cv::UMat&, const cv::Range&, const cv::Range&)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x14e); + String::deallocate((String *)&local_450); + iVar18 = *(int *)param_3; + iVar6 = *(int *)(param_3 + 4); + } + *(int *)(this + 0xc) = iVar6 - iVar18; + if (*(int *)(this + 4) < 1) { + lVar19 = 0; + } + else { + lVar19 = (long)iVar18 * + *(long *)(*(long *)(this + 0x38) + (long)*(int *)(this + 4) * 8 + -8); + } + uVar12 = 0xffffbfff; + if (*(int *)(param_1 + 0xc) <= iVar6 - iVar18) { + uVar12 = 0xffffffff; + } + *(long *)(this + 0x28) = *(long *)(this + 0x28) + lVar19; + *(uint *)this = uVar12 & *(uint *)this | 0x8000; + } +LAB_003ba02c: + /* try { // try from 003ba02c to 004ba02f has its CatchHandler @ 003bb344 */ + if (*(int *)(this + 8) == 1) { + *(uint *)this = *(uint *)this | 0x4000; + } + else if (*(int *)(this + 8) < 1) goto LAB_003ba04c; + if (0 < *(int *)(this + 0xc)) { + return; + } +LAB_003ba04c: + if (*(long *)(this + 0x20) != 0) { + piVar1 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar18 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar18 == 1) { + deallocate(this); + } + } + /* try { // try from 003ba078 to 004ba07b has its CatchHandler @ 003bb334 */ + /* try { // try from 003ba080 to 004ba0f3 has its CatchHandler @ 003bb344 */ + if (0 < *(int *)(this + 4)) { + iVar18 = 0; + puVar14 = *(undefined4 **)(this + 0x30); + do { + *puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = puVar14 + 1; + } while (iVar18 < *(int *)(this + 4)); + } + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0xc) = 0; + *(undefined4 *)(this + 8) = 0; + return; + } + lVar19 = (long)iVar18; + puVar13 = local_440; + do { + puVar15 = puVar13 + 2; + puVar13[1] = 0; + *puVar13 = 0; + puVar13 = puVar15; + } while (puVar15 != (undefined8 *)&stack0x00000000); + local_450 = (Range *)local_440; + local_448 = 0x88; + if (iVar18 < 0x89) { + local_440[0] = *(undefined8 *)param_2; + local_440[1] = *(undefined8 *)param_3; + if (iVar18 == 3) goto LAB_003b9d3c; +LAB_003b9d74: + uVar11 = (iVar18 - 4U >> 1) + 1; + iVar6 = uVar11 * 2; + uVar12 = 0; + pRVar17 = local_450; + do { + *(undefined8 *)(pRVar17 + 0x18) = _UNK_003ba3a8; + *(undefined8 *)(pRVar17 + 0x10) = _DAT_003ba3a0; + uVar12 = uVar12 + 1; + pRVar17 = pRVar17 + 0x10; + } while (uVar12 < uVar11); + uVar7 = (ulong)(iVar6 + 2); + /* try { // try from 003b9d9c to 004b9d9f has its CatchHandler @ 003b9e84 */ + if (iVar6 == iVar18 + -2) goto LAB_003b9db8; +LAB_003b9da0: + uVar7 = -(uVar7 >> 0x1f) & 0xfffffff800000000 | uVar7 << 3; + /* try { // try from 003b9da8 to 004b9dab has its CatchHandler @ 003b9e7c */ + *(undefined4 *)(local_450 + uVar7) = 0x80000000; + *(undefined4 *)(local_450 + uVar7 + 4) = 0x7fffffff; + } + else { + local_450 = operator_new__(lVar19 << 3); + uVar16 = 0; + uVar7 = (lVar19 - 2U >> 1) + 1; + pRVar17 = local_450; + do { + *(undefined8 *)(pRVar17 + 8) = 0; + *(undefined8 *)pRVar17 = 0; + uVar16 = uVar16 + 1; + pRVar17 = pRVar17 + 0x10; + } while (uVar16 < uVar7); + if (lVar19 != uVar7 * 2) { + *(undefined4 *)(local_450 + uVar7 * 0x10) = 0; + *(undefined4 *)(local_450 + uVar7 * 0x10 + 4) = 0; + } + iVar18 = *(int *)(param_1 + 4); + *(undefined8 *)local_450 = *(undefined8 *)param_2; + *(undefined8 *)(local_450 + 8) = *(undefined8 *)param_3; + if (2 < iVar18) { + if (iVar18 != 3) goto LAB_003b9d74; +LAB_003b9d3c: + uVar7 = 2; + goto LAB_003b9da0; + } + } +LAB_003b9db8: + local_448 = lVar19; + /* try { // try from 003b9dc8 to 004b9dcb has its CatchHandler @ 003b9e18 */ + UMat((UMat *)&local_4a0,param_1,local_450); + if (local_480 != 0) { + piVar1 = (int *)(local_480 + 0x10); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (*(long *)(this + 0x20) != 0) { + /* try { // try from 003b9df0 to 004b9df3 has its CatchHandler @ 003b9810 */ + piVar1 = (int *)(*(long *)(this + 0x20) + 0x10); + do { + iVar18 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar18 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003b9e00 to 004b9e03 has its CatchHandler @ 003b9e84 */ + } while (cVar3 != '\0'); + if (iVar18 == 1) { + deallocate(this); + } + } + /* try { // try from 003b9e10 to 004b9e13 has its CatchHandler @ 003b9e7c */ + if (*(int *)(this + 4) < 1) { + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)this = local_4a0; +LAB_003b9e48: + if (local_49c < 3) { + puVar13 = *(undefined8 **)(this + 0x38); + *(int *)(this + 4) = local_49c; + *(undefined4 *)(this + 8) = local_498; + uVar8 = *local_468; + *(undefined4 *)(this + 0xc) = local_494; + *puVar13 = uVar8; + /* catch() { ... } // from try @ 003b9948 with catch @ 003b9e7c + catch() { ... } // from try @ 003b9a50 with catch @ 003b9e7c + catch() { ... } // from try @ 003b9da8 with catch @ 003b9e7c + catch() { ... } // from try @ 003b9e10 with catch @ 003b9e7c */ + puVar13[1] = local_468[1]; + goto LAB_003b9e80; + } + } + else { + /* catch() { ... } // from try @ 003b9dc8 with catch @ 003b9e18 + try { // try from 003b9e18 to 004b9e1b has its CatchHandler @ 003b9810 */ + /* catch() { ... } // from try @ 003b9998 with catch @ 003b9e1c + catch() { ... } // from try @ 003b9b70 with catch @ 003b9e1c */ + iVar18 = 0; + puVar14 = *(undefined4 **)(this + 0x30); + do { + *puVar14 = 0; + iVar18 = iVar18 + 1; + puVar14 = puVar14 + 1; + } while (iVar18 < *(int *)(this + 4)); + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)this = local_4a0; + if (*(int *)(this + 4) < 3) goto LAB_003b9e48; + } + copySize(this,(UMat *)&local_4a0); +LAB_003b9e80: + /* catch() { ... } // from try @ 003b990c with catch @ 003b9e84 + catch() { ... } // from try @ 003b9ac4 with catch @ 003b9e84 + catch() { ... } // from try @ 003b9d9c with catch @ 003b9e84 + catch() { ... } // from try @ 003b9e00 with catch @ 003b9e84 */ + *(undefined8 *)(this + 0x10) = local_490; + /* catch() { ... } // from try @ 003b98d8 with catch @ 003b9e8c */ + if (*(int *)(this + 0x18) == 0) { + *(undefined4 *)(this + 0x18) = local_488; + } + /* catch() { ... } // from try @ 003b9884 with catch @ 003b9e9c */ + /* catch() { ... } // from try @ 003b9870 with catch @ 003b9ea0 */ + *(long *)(this + 0x20) = local_480; + /* catch() { ... } // from try @ 003b9ef8 with catch @ 003b9ea8 + catch() { ... } // from try @ 003b9f70 with catch @ 003b9ea8 + catch() { ... } // from try @ 003bac84 with catch @ 003b9ea8 + catch() { ... } // from try @ 003badc4 with catch @ 003b9ea8 + catch() { ... } // from try @ 003bb3f8 with catch @ 003b9ea8 + catch() { ... } // from try @ 003bb418 with catch @ 003b9ea8 */ + *(undefined8 *)(this + 0x28) = local_478; + ~UMat((UMat *)&local_4a0); + if ((local_450 != (Range *)local_440) && (local_450 != (Range *)0x0)) { + operator_delete__(local_450); + } + return; +} + + +================================================================== + +### FUNC 003ba3b0 (580 bytes) name=diag + +/* cv::UMat::diag(int) const */ + +void cv::UMat::diag(int param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + int iVar5; + char cVar6; + bool bVar7; + undefined1 uVar8; + uint uVar9; + UMat *pUVar10; + undefined8 *puVar11; + long lVar12; + long lVar13; + int in_w1; + long *plVar14; + int iVar15; + long *plVar16; + int *piVar17; + undefined8 uVar18; + UMat *in_x8; + undefined8 local_10; + undefined8 local_8; + + pUVar10 = (UMat *)(ulong)(uint)param_1; + iVar15 = *(int *)(pUVar10 + 4); + if (2 < iVar15) { + local_10 = 0; + local_8 = 0; + puVar11 = (undefined8 *)String::allocate((String *)&local_10,9); + uVar8 = LAB_0046aea8; + *puVar11 = DAT_0046aea0; + *(undefined1 *)(puVar11 + 1) = uVar8; + error(-0xd7,(String *)&local_10,"cv::UMat cv::UMat::diag(int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x196); + String::deallocate((String *)&local_10); + iVar15 = *(int *)(pUVar10 + 4); + } + uVar1 = *(undefined4 *)pUVar10; + uVar2 = *(undefined4 *)(pUVar10 + 8); + uVar3 = *(undefined4 *)(pUVar10 + 0xc); + uVar18 = *(undefined8 *)(pUVar10 + 0x10); + uVar4 = *(undefined4 *)(pUVar10 + 0x18); + lVar12 = *(long *)(pUVar10 + 0x20); + *(undefined8 *)(in_x8 + 0x28) = *(undefined8 *)(pUVar10 + 0x28); + *(undefined4 *)in_x8 = uVar1; + *(int *)(in_x8 + 4) = iVar15; + *(undefined4 *)(in_x8 + 8) = uVar2; + *(undefined4 *)(in_x8 + 0xc) = uVar3; + *(undefined8 *)(in_x8 + 0x10) = uVar18; + *(undefined4 *)(in_x8 + 0x18) = uVar4; + *(long *)(in_x8 + 0x20) = lVar12; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + if (lVar12 != 0) { + piVar17 = (int *)(lVar12 + 0x10); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar17,0x10); + if (bVar7) { + *piVar17 = *piVar17 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + iVar15 = *(int *)(pUVar10 + 4); + if (iVar15 < 3) { + plVar14 = *(long **)(pUVar10 + 0x38); + plVar16 = *(long **)(in_x8 + 0x38); + *plVar16 = *plVar14; + plVar16[1] = plVar14[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + copySize(in_x8,pUVar10); + iVar15 = *(int *)(pUVar10 + 4); + plVar16 = *(long **)(in_x8 + 0x38); + } + if (iVar15 < 1) { + lVar12 = 0; + } + else { + lVar12 = *(long *)(*(long *)(pUVar10 + 0x38) + (long)iVar15 * 8 + -8); + } + if (in_w1 < 0) { + iVar5 = *(int *)(pUVar10 + 8); + iVar15 = *(int *)(pUVar10 + 0xc); + *(long *)(in_x8 + 0x28) = *(long *)(in_x8 + 0x28) - (long)in_w1 * **(long **)(pUVar10 + 0x38); + if (in_w1 + iVar5 < iVar15) { + iVar15 = in_w1 + iVar5; + } + } + else { + iVar15 = *(int *)(pUVar10 + 8); + if (*(int *)(pUVar10 + 0xc) - in_w1 < *(int *)(pUVar10 + 8)) { + iVar15 = *(int *)(pUVar10 + 0xc) - in_w1; + } + *(long *)(in_x8 + 0x28) = *(long *)(in_x8 + 0x28) + lVar12 * in_w1; + } + piVar17 = *(int **)(in_x8 + 0x30); + *(int *)(in_x8 + 8) = iVar15; + lVar13 = *plVar16; + if (iVar15 < 2) { + lVar12 = 0; + } + *piVar17 = iVar15; + *(undefined4 *)(in_x8 + 0xc) = 1; + piVar17[1] = 1; + *plVar16 = lVar12 + lVar13; + if (*(int *)(in_x8 + 8) < 2) { + uVar9 = *(uint *)in_x8 | 0x4000; + } + else { + uVar9 = *(uint *)in_x8 & 0xffffbfff; + } + piVar17 = *(int **)(pUVar10 + 0x30); + *(uint *)in_x8 = uVar9; + if ((piVar17[1] != 1) || (*piVar17 != 1)) { + *(uint *)in_x8 = uVar9 | 0x8000; + } + return; +} + + +================================================================== + +### FUNC 003ba608 (356 bytes) name=locateROI + +/* cv::UMat::locateROI(cv::Size_&, cv::Point_&) const */ + +void __thiscall cv::UMat::locateROI(UMat *this,Size_ *param_1,Point_ *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + long lVar6; + char *pcVar7; + ulong *puVar8; + ulong uVar9; + ulong uVar10; + int iVar11; + ulong uVar12; + int iVar13; + long lVar14; + undefined8 local_10; + undefined8 local_8; + + iVar13 = *(int *)(this + 4); + if (iVar13 < 3) { + puVar8 = *(ulong **)(this + 0x38); + uVar10 = *puVar8; + if (uVar10 != 0) goto joined_r0x003ba748; + } + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x18); + uVar5 = s_dims_<__2_&&_step[0]_>_0_0046afc0._8_8_; + uVar4 = s_dims_<__2_&&_step[0]_>_0_0046afc0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_dims_<__2_&&_step[0]_>_0_0046afc0._16_8_; + *(undefined8 *)pcVar7 = uVar4; + *(undefined8 *)(pcVar7 + 8) = uVar5; + error(-0xd7,(String *)&local_10,"void cv::UMat::locateROI(cv::Size&, cv::Point&) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x1b8); + String::deallocate((String *)&local_10); + iVar13 = *(int *)(this + 4); + puVar8 = *(ulong **)(this + 0x38); + uVar10 = *puVar8; +joined_r0x003ba748: + if (iVar13 < 1) { + uVar12 = 0; + uVar9 = *(ulong *)(this + 0x28); + lVar6 = *(long *)(*(long *)(this + 0x20) + 0x28); + } + else { + uVar9 = *(ulong *)(this + 0x28); + uVar12 = puVar8[(long)iVar13 + -1]; + lVar6 = *(long *)(*(long *)(this + 0x20) + 0x28); + } + if (uVar9 == 0) { + iVar11 = 0; + iVar13 = iVar11; + } + else { + iVar13 = 0; + if (uVar10 != 0) { + iVar13 = (int)(uVar9 / uVar10); + } + iVar11 = 0; + if (uVar12 != 0) { + iVar11 = (int)((uVar9 - (long)iVar13 * uVar10) / uVar12); + } + } + iVar3 = *(int *)(this + 8); + iVar1 = iVar11 + *(int *)(this + 0xc); + lVar14 = *(long *)(this + 0x40); + *(int *)param_2 = iVar11; + *(int *)(param_2 + 4) = iVar13; + iVar11 = 0; + if (uVar10 != 0) { + iVar11 = (int)((lVar6 - (long)iVar1 * uVar12) / uVar10); + } + iVar2 = iVar11 + 1; + if (iVar11 + 1 < iVar13 + iVar3) { + iVar2 = iVar13 + iVar3; + } + *(int *)(param_1 + 4) = iVar2; + iVar13 = 0; + if (uVar12 != 0) { + iVar13 = (int)((ulong)(lVar6 - (iVar2 + -1) * lVar14) / uVar12); + } + if (iVar1 <= iVar13) { + iVar1 = iVar13; + } + *(int *)param_1 = iVar1; + return; +} + + +================================================================== + +### FUNC 003ba780 (508 bytes) name=adjustROI + +/* cv::UMat::adjustROI(int, int, int, int) */ + +UMat * __thiscall cv::UMat::adjustROI(UMat *this,int param_1,int param_2,int param_3,int param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + char *pcVar7; + long *plVar8; + int *piVar9; + long lVar10; + int local_18; + int local_14; + int local_10 [2]; + undefined8 local_8; + + iVar3 = *(int *)(this + 4); + if ((2 < iVar3) || (**(long **)(this + 0x38) == 0)) { + local_10[0] = 0; + local_10[1] = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)local_10,0x18); + uVar6 = s_dims_<__2_&&_step[0]_>_0_0046afc0._8_8_; + uVar5 = s_dims_<__2_&&_step[0]_>_0_0046afc0._0_8_; + *(undefined8 *)(pcVar7 + 0x10) = s_dims_<__2_&&_step[0]_>_0_0046afc0._16_8_; + *(undefined8 *)pcVar7 = uVar5; + *(undefined8 *)(pcVar7 + 8) = uVar6; + error(-0xd7,(String *)local_10,"cv::UMat& cv::UMat::adjustROI(int, int, int, int)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x1ce); + String::deallocate((String *)local_10); + iVar3 = *(int *)(this + 4); + } + if (iVar3 < 1) { + lVar10 = 0; + } + else { + lVar10 = *(long *)(*(long *)(this + 0x38) + (long)iVar3 * 8 + -8); + } + local_10[0] = 0; + local_10[1] = 0; + local_14 = 0; + local_18 = 0; + locateROI(this,(Size_ *)&local_18,(Point_ *)local_10); + iVar3 = local_10[1] - param_1; + if (iVar3 < 0) { + iVar3 = 0; + } + iVar1 = local_10[1] + *(int *)(this + 8) + param_2; + if (local_14 < iVar1) { + iVar1 = local_14; + } + iVar4 = local_10[0] - param_3; + if (iVar4 < 0) { + iVar4 = 0; + } + iVar2 = local_10[0] + *(int *)(this + 0xc) + param_4; + piVar9 = *(int **)(this + 0x30); + if (local_18 < iVar2) { + iVar2 = local_18; + } + *(long *)(this + 0x28) = + *(long *)(this + 0x28) + (long)(iVar3 - local_10[1]) * *(long *)(this + 0x40) + + lVar10 * (iVar4 - local_10[0]); + *(int *)(this + 8) = iVar1 - iVar3; + *(int *)(this + 0xc) = iVar2 - iVar4; + *piVar9 = iVar1 - iVar3; + plVar8 = *(long **)(this + 0x38); + piVar9[1] = *(int *)(this + 0xc); + if ((lVar10 * *(int *)(this + 0xc) - *plVar8 != 0) && (*(int *)(this + 8) != 1)) { + *(uint *)this = *(uint *)this & 0xffffbfff; + return this; + } + *(uint *)this = *(uint *)this | 0x4000; + return this; +} + + +================================================================== + +### FUNC 003ba990 (1152 bytes) name=reshape + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::reshape(int, int) const */ + +void cv::UMat::reshape(int param_1,int param_2) + +{ + uint uVar1; + int *piVar2; + undefined4 uVar3; + uint uVar4; + int iVar5; + int iVar6; + char cVar7; + bool bVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined2 uVar14; + undefined1 uVar15; + UMat *pUVar16; + long lVar17; + undefined8 *puVar18; + void *__dest; + char *pcVar19; + undefined8 uVar20; + undefined8 *puVar21; + uint in_w2; + long lVar22; + long lVar23; + undefined8 uVar24; + UMat *in_x8; + int iVar25; + undefined8 uVar26; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + pUVar16 = (UMat *)(ulong)(uint)param_1; + uVar24 = *(undefined8 *)(pUVar16 + 0x10); + uVar3 = *(undefined4 *)(pUVar16 + 0x18); + lVar17 = *(long *)(pUVar16 + 0x20); + iVar25 = (*(uint *)pUVar16 >> 3 & 0x1ff) + 1; + uVar26 = *(undefined8 *)(pUVar16 + 8); + uVar20 = *(undefined8 *)(pUVar16 + 0x28); + *(undefined8 *)in_x8 = *(undefined8 *)pUVar16; + *(undefined8 *)(in_x8 + 8) = uVar26; + *(undefined8 *)(in_x8 + 0x10) = uVar24; + *(undefined4 *)(in_x8 + 0x18) = uVar3; + *(long *)(in_x8 + 0x20) = lVar17; + *(undefined8 *)(in_x8 + 0x28) = uVar20; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + if (lVar17 != 0) { + piVar2 = (int *)(lVar17 + 0x10); + do { + cVar7 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar8) { + *piVar2 = *piVar2 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + if (*(int *)(pUVar16 + 4) < 3) { + puVar21 = *(undefined8 **)(pUVar16 + 0x38); + puVar18 = *(undefined8 **)(in_x8 + 0x38); + *puVar18 = *puVar21; + puVar18[1] = puVar21[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + copySize(in_x8,pUVar16); + if (2 < *(int *)(pUVar16 + 4)) { + if ((in_w2 == 0) && (param_2 != 0)) { + lVar17 = (long)(*(int *)(pUVar16 + 4) + -1); + lVar22 = lVar17 * 4; + /* try { // try from 003bac54 to 004bac57 has its CatchHandler @ 003bad30 */ + iVar5 = iVar25 * *(int *)(*(long *)(pUVar16 + 0x30) + lVar22); + iVar6 = 0; + if (param_2 != 0) { + iVar6 = iVar5 / param_2; + } + if (iVar5 - iVar6 * param_2 == 0) { + uVar4 = *(uint *)in_x8; + lVar23 = *(long *)(in_x8 + 0x30); + uVar1 = (param_2 + -1) * 8; + *(uint *)in_x8 = uVar4 & 0xfffff007 | uVar1; + iVar5 = 0; + if (param_2 != 0) { + iVar5 = (iVar25 * *(int *)(lVar23 + lVar22)) / param_2; + } + *(long *)(*(long *)(in_x8 + 0x38) + lVar17 * 8) = + (long)(int)(((uVar1 & 0xff8) >> 3) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar4 & 7) << 1)) & 3)); + *(int *)(lVar23 + lVar22) = iVar5; + return; + } + } + local_50 = 0; + local_48 = 0; + puVar18 = (undefined8 *)String::allocate((String *)&local_50,9); + uVar15 = LAB_0046aea8; + /* try { // try from 003bac84 to 004bace3 has its CatchHandler @ 003b9ea8 */ + *puVar18 = DAT_0046aea0; + *(undefined1 *)(puVar18 + 1) = uVar15; + error(-0xd7,(String *)&local_50,"cv::UMat cv::UMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x1ec); + String::deallocate((String *)&local_50); + } + } + if (param_2 == 0) { + param_2 = iVar25; + } + iVar25 = iVar25 * *(int *)(pUVar16 + 0xc); + if (iVar25 < param_2) { +joined_r0x003bab68: + if (in_w2 == 0) { + in_w2 = 0; + if (param_2 != 0) { + in_w2 = (iVar25 * *(int *)(pUVar16 + 8)) / param_2; + } + goto LAB_003baa70; + } + } + else { + iVar5 = 0; + if (param_2 != 0) { + iVar5 = iVar25 / param_2; + } + if (iVar25 - iVar5 * param_2 != 0) goto joined_r0x003bab68; +LAB_003baa70: + if (in_w2 == 0) goto LAB_003baa74; + } + if (*(uint *)(pUVar16 + 8) != in_w2) { + uVar1 = iVar25 * *(uint *)(pUVar16 + 8); + if ((*(uint *)pUVar16 >> 0xe & 1) == 0) { + local_40 = 0; + local_38 = 0; + puVar18 = (undefined8 *)String::allocate((String *)&local_40,0x48); + uVar11 = DAT_00462218; + uVar10 = DAT_00462210; + uVar9 = DAT_00462208; + uVar26 = DAT_00462200; + uVar24 = DAT_004621f8; + uVar20 = DAT_004621f0; + /* try { // try from 003badc4 to 004bae93 has its CatchHandler @ 003b9ea8 */ + puVar18[8] = s_changed_00462230._0_8_; + uVar13 = _DAT_00462228; + uVar12 = DAT_00462220; + *puVar18 = uVar20; + puVar18[1] = uVar24; + puVar18[2] = uVar26; + puVar18[3] = uVar9; + puVar18[4] = uVar10; + puVar18[5] = uVar11; + puVar18[6] = uVar12; + puVar18[7] = uVar13; + error(-0xd,(String *)&local_40,"cv::UMat cv::UMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x1fb); + String::deallocate((String *)&local_40); + } + if (uVar1 < in_w2) { + /* catch() { ... } // from try @ 003b9fa0 with catch @ 003bad30 + catch() { ... } // from try @ 003bac54 with catch @ 003bad30 + catch() { ... } // from try @ 003bb220 with catch @ 003bad30 + catch() { ... } // from try @ 003bb40c with catch @ 003bad30 */ + local_30 = 0; + local_28 = 0; + pcVar19 = (char *)String::allocate((String *)&local_30,0x16); + uVar14 = s_Bad_new_number_of_rows_00462240._20_2_; + uVar24 = s_Bad_new_number_of_rows_00462240._8_8_; + uVar20 = s_Bad_new_number_of_rows_00462240._0_8_; + *(undefined4 *)(pcVar19 + 0x10) = s_Bad_new_number_of_rows_00462240._16_4_; + *(undefined2 *)(pcVar19 + 0x14) = uVar14; + *(undefined8 *)pcVar19 = uVar20; + *(undefined8 *)(pcVar19 + 8) = uVar24; + error(-0xd3,(String *)&local_30,"cv::UMat cv::UMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x1fe); + String::deallocate((String *)&local_30); + } + iVar25 = 0; + if (in_w2 != 0) { + iVar25 = (int)uVar1 / (int)in_w2; + } + if (iVar25 * in_w2 != uVar1) { + local_20 = 0; + local_18 = 0; + __dest = (void *)String::allocate((String *)&local_20,0x4e); + memcpy(__dest,&DAT_00461f80,0x4e); + /* try { // try from 003babd0 to 004babd3 has its CatchHandler @ 003bb344 */ + error(-5,(String *)&local_20,"cv::UMat cv::UMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x204); + String::deallocate((String *)&local_20); + } + *(uint *)(in_x8 + 8) = in_w2; + **(long **)(in_x8 + 0x38) = (long)iVar25 * (0x88442211UL >> ((*(uint *)pUVar16 & 7) << 2) & 0xf) + ; + } +LAB_003baa74: + iVar5 = 0; + if (param_2 != 0) { + iVar5 = iVar25 / param_2; + } + if (iVar5 * param_2 != iVar25) { + local_10 = 0; + local_8 = 0; + puVar18 = (undefined8 *)String::allocate((String *)&local_10,0x3e); + uVar14 = DAT_00462294; + uVar3 = DAT_00462290; + uVar11 = DAT_00462280; + uVar10 = DAT_00462278; + uVar9 = DAT_00462270; + uVar26 = _LAB_00462268; + uVar24 = DAT_00462260; + uVar20 = DAT_00462258; + puVar18[6] = DAT_00462288; + *(undefined4 *)(puVar18 + 7) = uVar3; + *(undefined2 *)((long)puVar18 + 0x3c) = uVar14; + *puVar18 = uVar20; + puVar18[1] = uVar24; + puVar18[2] = uVar26; + puVar18[3] = uVar9; + puVar18[4] = uVar10; + puVar18[5] = uVar11; + error(-0xf,(String *)&local_10,"cv::UMat cv::UMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x20e); + String::deallocate((String *)&local_10); + } + uVar4 = *(uint *)in_x8; + *(int *)(in_x8 + 0xc) = iVar5; + uVar1 = (param_2 + -1) * 8; + *(uint *)in_x8 = uVar4 & 0xfffff007 | uVar1; + *(long *)(*(long *)(in_x8 + 0x38) + 8) = + (long)(int)(((uVar1 & 0xff8) >> 3) + 1 << (ulong)((uint)(0xfa50L >> ((uVar4 & 7) << 1)) & 3)) + ; + /* try { // try from 003bab4c to 004bab4f has its CatchHandler @ 003baf54 */ + return; +} + + +================================================================== + +### FUNC 003bae74 (284 bytes) name=checkVector + +/* cv::UMat::checkVector(int, int, bool) const */ + +ulong __thiscall cv::UMat::checkVector(UMat *this,int param_1,int param_2,bool param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + ulong uVar4; + int iVar5; + long lVar6; + int *piVar7; + + uVar1 = *(uint *)this; + if (((param_2 != (uVar1 & 7)) && (0 < param_2)) || (((uVar1 & 0x4000) == 0 && (param_3)))) { + return 0xffffffff; + } + if (*(int *)(this + 4) == 2) { + iVar2 = *(int *)(this + 8); + iVar3 = *(int *)(this + 0xc); + if (((iVar2 == 1) || (iVar3 == 1)) && (iVar5 = (uVar1 >> 3 & 0x1ff) + 1, param_1 == iVar5)) { + lVar6 = (long)iVar3 * (long)iVar2; + } + else { + /* catch() { ... } // from try @ 003ba0f8 with catch @ 003baf54 + catch() { ... } // from try @ 003bab4c with catch @ 003baf54 + catch() { ... } // from try @ 003bb080 with catch @ 003baf54 + catch() { ... } // from try @ 003bb32c with catch @ 003baf54 */ + uVar4 = 0xffffffff; + if ((param_1 != iVar3) || ((uVar1 >> 3 & 0x1ff) != 0)) goto LAB_003baf0c; + iVar5 = 1; + lVar6 = (long)param_1 * (long)iVar2; + } + } + else { + uVar4 = 0xffffffff; + if ((*(int *)(this + 4) != 3) || ((uVar1 >> 3 & 0x1ff) != 0)) goto LAB_003baf0c; + piVar7 = *(int **)(this + 0x30); + if ((piVar7[2] != param_1) || ((*piVar7 != 1 && (piVar7[1] != 1)))) goto LAB_003baf0c; + if (((uVar1 & 0x4000) == 0) && + (*(long *)(*(long *)(this + 0x38) + 8) != + (long)piVar7[2] * *(long *)(*(long *)(this + 0x38) + 0x10))) { + return 0xffffffff; + } + iVar5 = 1; + lVar6 = (long)*piVar7 * (long)piVar7[1] * (long)piVar7[2]; + } + uVar4 = 0; + if ((long)param_1 != 0) { + uVar4 = (ulong)(iVar5 * lVar6) / (ulong)(long)param_1; + } +LAB_003baf0c: + return uVar4 & 0xffffffff; +} + + +================================================================== + +### FUNC 003baf90 (208 bytes) name=reshape + +/* cv::UMat::reshape(int, int, int const*) const */ + +void cv::UMat::reshape(int param_1,int param_2,int *param_3) + +{ + long in_x3; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + if (*(int *)((ulong)(uint)param_1 + 4) == (int)param_3) { + if (in_x3 == 0) { + reshape(param_1,param_2); + return; + } + if (*(int *)((ulong)(uint)param_1 + 4) == 2) { + reshape(param_1,param_2); + return; + } + } + local_10 = 0; + local_8 = 0; + String::allocate((String *)&local_10,0); + error(-0xd5,(String *)&local_10,"cv::UMat cv::UMat::reshape(int, int, const int*) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x238); + String::deallocate((String *)&local_10); + in_x8[1] = 0; + in_x8[2] = 0; + *in_x8 = 0x42ff0000; + in_x8[3] = 0; + *(undefined8 *)(in_x8 + 4) = 0; + in_x8[6] = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined4 **)(in_x8 + 0xc) = in_x8 + 2; + *(undefined4 **)(in_x8 + 0xe) = in_x8 + 0x10; + *(undefined8 *)(in_x8 + 0x12) = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + return; +} + + +================================================================== + +### FUNC 003bb080 (688 bytes) name=getMat + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::getMat(int) const */ + +void cv::UMat::getMat(int param_1) + +{ + int *piVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined4 uVar7; + uint *puVar8; + undefined8 *puVar9; + char *pcVar10; + uint in_w1; + long lVar11; + int iVar12; + Mat *in_x8; + undefined8 local_60; + undefined8 local_58; + long local_50; + long local_48; + long local_40; + long local_38; + undefined8 local_30; + long local_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + /* try { // try from 003bb080 to 004bb083 has its CatchHandler @ 003baf54 */ + puVar8 = (uint *)(ulong)(uint)param_1; + lVar11 = *(long *)(puVar8 + 8); + if (lVar11 == 0) { + *(undefined8 *)(in_x8 + 0x10) = 0; + uVar6 = _UNK_003bb378; + uVar5 = _DAT_003bb370; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 8) = uVar6; + *(undefined8 *)in_x8 = uVar5; + *(undefined8 *)(in_x8 + 0x30) = 0; + *(undefined8 *)(in_x8 + 0x38) = 0; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + return; + } + (**(code **)(**(long **)(lVar11 + 8) + 0x28))(*(long **)(lVar11 + 8),lVar11,in_w1 | 0x1000000); + lVar11 = *(long *)(*(long *)(puVar8 + 8) + 0x18); + if (lVar11 == 0) { + local_60 = lVar11; + local_58 = lVar11; + pcVar10 = (char *)String::allocate((String *)&local_60,0xc); + uVar7 = s_u_>data____0_00476b40._8_4_; + /* catch() { ... } // from try @ 003ba3a4 with catch @ 003bb308 + catch() { ... } // from try @ 003bb24c with catch @ 003bb308 */ + *(undefined8 *)pcVar10 = s_u_>data____0_00476b40._0_8_; + *(undefined4 *)(pcVar10 + 8) = uVar7; + error(-0xd7,(String *)&local_60,"cv::Mat cv::UMat::getMat(int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x243); + String::deallocate((String *)&local_60); + lVar11 = *(long *)(*(long *)(puVar8 + 8) + 0x18); + /* try { // try from 003bb32c to 004bb32f has its CatchHandler @ 003baf54 */ + } + Mat::Mat((Mat *)&local_60,puVar8[1],*(int **)(puVar8 + 0xc),*puVar8 & 0xfff, + (void *)(lVar11 + *(long *)(puVar8 + 10)),*(ulong **)(puVar8 + 0xe)); + local_28 = *(long *)(puVar8 + 8); + piVar1 = (int *)(local_28 + 0x14); + local_48 = *(long *)(local_28 + 0x18); + uVar2 = *puVar8; + local_50 = local_48 + *(long *)(puVar8 + 10); + local_40 = local_48 + *(long *)(local_28 + 0x28); + local_60 = CONCAT44(local_60._4_4_,uVar2); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + *(uint *)in_x8 = uVar2; + *(undefined4 *)(in_x8 + 8) = (undefined4)local_58; + *(undefined4 *)(in_x8 + 0xc) = local_58._4_4_; + *(long *)(in_x8 + 0x10) = local_50; + *(long *)(in_x8 + 0x18) = local_48; + *(long *)(in_x8 + 0x20) = local_40; + *(long *)(in_x8 + 0x28) = local_40; + *(int *)(in_x8 + 4) = local_60._4_4_; + *(undefined8 *)(in_x8 + 0x30) = local_30; + *(long *)(in_x8 + 0x38) = local_28; + *(Mat **)(in_x8 + 0x40) = in_x8 + 8; + *(Mat **)(in_x8 + 0x48) = in_x8 + 0x50; + *(undefined8 *)(in_x8 + 0x58) = 0; + *(undefined8 *)(in_x8 + 0x50) = 0; + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + local_38 = local_40; + if (local_60._4_4_ < 3) { + puVar9 = *(undefined8 **)(in_x8 + 0x48); + *puVar9 = *local_18; + puVar9[1] = local_18[1]; + } + else { + *(undefined4 *)(in_x8 + 4) = 0; + /* catch() { ... } // from try @ 003ba160 with catch @ 003bb26c */ + Mat::copySize(in_x8,(Mat *)&local_60); + } + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar12 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + if (iVar12 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + /* try { // try from 003bb20c to 004bb20f has its CatchHandler @ 003bb344 */ + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + /* try { // try from 003bb220 to 004bb223 has its CatchHandler @ 003bad30 */ + if (0 < local_60._4_4_) { + iVar12 = 0; + do { + *local_20 = 0; + iVar12 = iVar12 + 1; + local_20 = local_20 + 1; + } while (iVar12 < local_60._4_4_); + } + /* try { // try from 003bb24c to 004bb24f has its CatchHandler @ 003bb308 */ + if (local_18 != auStack_10) { + fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 003bb380 (208 bytes) name=handle + +/* cv::UMat::handle(int) const */ + +undefined8 __thiscall cv::UMat::handle(UMat *this,int param_1) + +{ + char *pcVar1; + undefined8 uVar2; + long lVar3; + undefined8 local_10; + undefined8 local_8; + + lVar3 = *(long *)(this + 0x20); + if (lVar3 == 0) { + uVar2 = 0; + } + else { + if ((*(uint *)(lVar3 + 0x30) >> 2 & 1) != 0) { + if (*(int *)(lVar3 + 0x14) != 0) { + local_10 = 0; + local_8 = 0; + pcVar1 = (char *)String::allocate((String *)&local_10,0x10); + uVar2 = s_u_>refcount____0_0046e790._8_8_; + *(undefined8 *)pcVar1 = s_u_>refcount____0_0046e790._0_8_; + *(undefined8 *)(pcVar1 + 8) = uVar2; + /* catch() { ... } // from try @ 003b9f68 with catch @ 003bb3e8 */ + error(-0xd7,(String *)&local_10,"void* cv::UMat::handle(int) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x256); + /* try { // try from 003bb3f8 to 004bb3fb has its CatchHandler @ 003b9ea8 */ + String::deallocate((String *)&local_10); + lVar3 = *(long *)(this + 0x20); + } + /* try { // try from 003bb400 to 004bb403 has its CatchHandler @ 003bb344 */ + /* try { // try from 003bb40c to 004bb40f has its CatchHandler @ 003bad30 */ + (**(code **)(**(long **)(lVar3 + 8) + 0x30))(*(long **)(lVar3 + 8)); + lVar3 = *(long *)(this + 0x20); + } + /* try { // try from 003bb418 to 004bb42f has its CatchHandler @ 003b9ea8 */ + if (((uint)param_1 >> 0x19 & 1) != 0) { + *(uint *)(lVar3 + 0x30) = *(uint *)(lVar3 + 0x30) | 2; + } + uVar2 = *(undefined8 *)(lVar3 + 0x38); + } + return uVar2; +} + + +================================================================== + +### FUNC 003bb464 (56 bytes) name=ndoffset + +/* cv::UMat::ndoffset(unsigned long*) const */ + +void __thiscall cv::UMat::ndoffset(UMat *this,ulong *param_1) + +{ + int iVar1; + ulong uVar2; + long lVar3; + ulong uVar4; + ulong uVar5; + long lVar6; + + iVar1 = *(int *)(this + 4); + /* catch() { ... } // from try @ 003bb488 with catch @ 003bb468 + catch() { ... } // from try @ 003bb51c with catch @ 003bb468 + catch() { ... } // from try @ 003bb690 with catch @ 003bb468 + catch() { ... } // from try @ 003bb8b0 with catch @ 003bb468 + catch() { ... } // from try @ 003bb8f8 with catch @ 003bb468 + catch() { ... } // from try @ 003bb914 with catch @ 003bb468 */ + uVar4 = *(ulong *)(this + 0x28); + if (0 < iVar1) { + lVar6 = *(long *)(this + 0x38); + lVar3 = 0; + do { + uVar5 = *(ulong *)(lVar6 + lVar3 * 8); + uVar2 = 0; + if (uVar5 != 0) { + uVar2 = uVar4 / uVar5; + } + param_1[lVar3] = uVar2; + /* try { // try from 003bb488 to 004bb4d3 has its CatchHandler @ 003bb468 */ + lVar3 = lVar3 + 1; + uVar4 = uVar4 - uVar2 * uVar5; + } while ((int)lVar3 < iVar1); + } + return; +} + + +================================================================== + +### FUNC 003bb4a0 (412 bytes) name=convertTo + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::convertTo(cv::_OutputArray const&, int, double, double) const */ + +void __thiscall +cv::UMat::convertTo(UMat *this,_OutputArray *param_1,int param_2,double param_3,double param_4) + +{ + int *piVar1; + uint uVar2; + bool bVar3; + bool bVar4; + char cVar5; + uint uVar6; + int iVar7; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + bVar3 = _LAB_003bb668 <= ABS(param_3 - 1.0); + bVar4 = _LAB_003bb668 <= ABS(param_4); + uVar2 = *(uint *)this; + if (param_2 < 0) { + cVar5 = _OutputArray::fixedType(param_1); + if (cVar5 == '\0') { + uVar6 = uVar2 & 0xfff; + } + else { + uVar6 = _InputArray::type((_InputArray *)param_1,-1); + } + } + else { + uVar6 = (param_2 & 7U) + (uVar2 >> 3 & 0x1ff) * 8; + } + if (((uVar2 & 7) != (uVar6 & 7)) || (bVar3 || bVar4)) { + getMat((int)this); + Mat::convertTo(aMStack_60,param_1,uVar6,param_3,param_4); + /* try { // try from 003bb560 to 004bb587 has its CatchHandler @ 003bb8fc */ + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar7 = *piVar1; + cVar5 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar7 + -1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + if (iVar7 == 1) { + Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar7 = 0; + do { + *local_20 = 0; + iVar7 = iVar7 + 1; + /* try { // try from 003bb5b0 to 004bb5e7 has its CatchHandler @ 003bb8b8 */ + local_20 = local_20 + 1; + } while (iVar7 < local_5c); + } + if (local_18 != auStack_10) { + fastFree(local_18); + return; + } + } + else { + copyTo(this,param_1); + } + /* try { // try from 003bb514 to 004bb517 has its CatchHandler @ 003bb904 */ + /* try { // try from 003bb51c to 004bb543 has its CatchHandler @ 003bb468 */ + return; +} + + +================================================================== + +### FUNC 003bb670 (1580 bytes) name=copyTo + +/* cv::UMat::copyTo(cv::_OutputArray const&) const */ + +void __thiscall cv::UMat::copyTo(UMat *this,_OutputArray *param_1) + +{ + ulong uVar1; + ulong uVar2; + int iVar3; + uint uVar4; + bool bVar5; + undefined8 uVar6; + undefined4 uVar7; + undefined2 uVar8; + char cVar9; + int iVar10; + ulong uVar11; + char *pcVar12; + long lVar13; + long lVar14; + undefined8 *puVar15; + int *piVar16; + Mat *pMVar17; + long lVar18; + undefined8 uVar19; + long *plVar20; + code *pcVar21; + UMat aUStack_350 [32]; + long local_330; + long local_328; + undefined8 local_318; + long local_300 [4]; + long local_2e0; + long lStack_2d8; + long local_2d0; + long lStack_2c8; + long local_2c0; + long lStack_2b8; + long local_2b0; + long lStack_2a8; + long local_2a0; + long lStack_298; + long local_290; + long lStack_288; + long local_280; + long lStack_278; + long local_270; + long lStack_268; + long local_260; + long lStack_258; + long local_250; + long lStack_248; + long local_240; + long lStack_238; + long local_230; + long lStack_228; + long local_220; + long lStack_218; + long local_210; + long lStack_208; + ulong auStack_200 [32]; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + long local_c8; + undefined8 *local_c0; + undefined8 *local_b8; + undefined8 local_b0; + undefined8 local_a8; + + /* try { // try from 003bb690 to 004bb6e3 has its CatchHandler @ 003bb468 */ + uVar11 = _InputArray::type((_InputArray *)param_1,-1); + cVar9 = _OutputArray::fixedType(param_1); + if (cVar9 != '\0') { + if ((uint)uVar11 != (*(uint *)this & 0xfff)) { + if (((uint)((uVar11 & 0xffffffff) >> 3) & 0x1ff) + 1 != (*(uint *)this >> 3 & 0x1ff) + 1) { + local_100 = 0; + local_f8 = 0; + pcVar12 = (char *)String::allocate((String *)&local_100,0x1e); + uVar8 = s_channels______CV_MAT_CN_dtype__00463e20._28_2_; + uVar7 = s_channels______CV_MAT_CN_dtype__00463e20._24_4_; + uVar6 = s_channels______CV_MAT_CN_dtype__00463e20._8_8_; + uVar19 = s_channels______CV_MAT_CN_dtype__00463e20._0_8_; + /* try { // try from 003bb708 to 004bb717 has its CatchHandler @ 003bb8b8 */ + *(undefined8 *)(pcVar12 + 0x10) = s_channels______CV_MAT_CN_dtype__00463e20._16_8_; + *(undefined4 *)(pcVar12 + 0x18) = uVar7; + *(undefined2 *)(pcVar12 + 0x1c) = uVar8; + *(undefined8 *)pcVar12 = uVar19; + *(undefined8 *)(pcVar12 + 8) = uVar6; + error(-0xd7,(String *)&local_100,"void cv::UMat::copyTo(cv::OutputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x271); + String::deallocate((String *)&local_100); + } + convertTo(this,param_1,(uint)uVar11,1.0,0.0); + return; + } + } + if (*(long *)(this + 0x20) == 0) { +LAB_003bbac0: + _OutputArray::release(param_1); + return; + } + iVar10 = *(int *)(this + 4); + if (iVar10 < 3) { + lVar18 = (long)*(int *)(this + 0xc) * (long)*(int *)(this + 8); + } + else { + lVar14 = 0; + lVar18 = 1; + do { + lVar13 = lVar14 * 4; + lVar14 = lVar14 + 1; + lVar18 = lVar18 * *(int *)(*(long *)(this + 0x30) + lVar13); + } while ((int)lVar14 < iVar10); + } + if (lVar18 == 0) goto LAB_003bbac0; + if (iVar10 < 1) { + lVar18 = 0; + if (iVar10 != 0) goto LAB_003bb7d4; + } + else { + lVar18 = *(long *)(*(long *)(this + 0x38) + (long)iVar10 * 8 + -8); +LAB_003bb7d4: + uVar11 = (ulong)iVar10; + lVar14 = (uVar11 - 4 >> 2) + 1; + puVar15 = *(undefined8 **)(this + 0x30); + lVar13 = lVar14 * 4; + if (uVar11 - 1 < 3) { + lVar13 = 0; + } + else { + local_300[1] = (long)(int)((ulong)*puVar15 >> 0x20); + local_300[0] = (long)(int)*puVar15; + local_300[3] = (long)(int)((ulong)puVar15[1] >> 0x20); + local_300[2] = (long)(int)puVar15[1]; + if (lVar14 != 1) { + lStack_2d8 = (long)(int)((ulong)puVar15[2] >> 0x20); + local_2e0 = (long)(int)puVar15[2]; + lStack_2c8 = (long)(int)((ulong)puVar15[3] >> 0x20); + local_2d0 = (long)(int)puVar15[3]; + if (lVar14 != 2) { + lStack_2b8 = (long)(int)((ulong)puVar15[4] >> 0x20); + local_2c0 = (long)(int)puVar15[4]; + lStack_2a8 = (long)(int)((ulong)puVar15[5] >> 0x20); + local_2b0 = (long)(int)puVar15[5]; + if (lVar14 != 3) { + lStack_298 = (long)(int)((ulong)puVar15[6] >> 0x20); + local_2a0 = (long)(int)puVar15[6]; + lStack_288 = (long)(int)((ulong)puVar15[7] >> 0x20); + local_290 = (long)(int)puVar15[7]; + /* try { // try from 003bb88c to 004bb89f has its CatchHandler @ 003bb8fc */ + if (lVar14 != 4) { + lStack_278 = (long)(int)((ulong)puVar15[8] >> 0x20); + local_280 = (long)(int)puVar15[8]; + /* try { // try from 003bb8b0 to 004bb8b3 has its CatchHandler @ 003bb468 */ + lStack_268 = (long)(int)((ulong)puVar15[9] >> 0x20); + local_270 = (long)(int)puVar15[9]; + if (lVar14 != 5) { + /* catch() { ... } // from try @ 003bb5b0 with catch @ 003bb8b8 + catch() { ... } // from try @ 003bb708 with catch @ 003bb8b8 */ + lStack_258 = (long)(int)((ulong)puVar15[10] >> 0x20); + local_260 = (long)(int)puVar15[10]; + lStack_248 = (long)(int)((ulong)puVar15[0xb] >> 0x20); + local_250 = (long)(int)puVar15[0xb]; + if (lVar14 != 6) { + /* try { // try from 003bb8f8 to 004bb8fb has its CatchHandler @ 003bb468 */ + /* catch() { ... } // from try @ 003bb560 with catch @ 003bb8fc + catch() { ... } // from try @ 003bb664 with catch @ 003bb8fc + catch() { ... } // from try @ 003bb88c with catch @ 003bb8fc */ + lStack_238 = (long)(int)((ulong)puVar15[0xc] >> 0x20); + local_240 = (long)(int)puVar15[0xc]; + lStack_228 = (long)(int)((ulong)puVar15[0xd] >> 0x20); + local_230 = (long)(int)puVar15[0xd]; + /* catch() { ... } // from try @ 003bb514 with catch @ 003bb904 */ + if (lVar14 != 7) { + /* try { // try from 003bb914 to 004bb917 has its CatchHandler @ 003bb468 */ + /* catch() { ... } // from try @ 003bb938 with catch @ 003bb918 + catch() { ... } // from try @ 003bb9cc with catch @ 003bb918 + catch() { ... } // from try @ 003bbb40 with catch @ 003bb918 + catch() { ... } // from try @ 003bbd60 with catch @ 003bb918 + catch() { ... } // from try @ 003bbda8 with catch @ 003bb918 + catch() { ... } // from try @ 003bbdc4 with catch @ 003bb918 */ + lStack_218 = (long)(int)((ulong)puVar15[0xe] >> 0x20); + local_220 = (long)(int)puVar15[0xe]; + lStack_208 = (long)(int)((ulong)puVar15[0xf] >> 0x20); + local_210 = (long)(int)puVar15[0xf]; + } + } + } + } + } + } + } + if (lVar13 - uVar11 == 0) goto LAB_003bb960; + } + uVar1 = lVar13 + 1; + /* try { // try from 003bb938 to 004bb983 has its CatchHandler @ 003bb918 */ + local_300[lVar13] = (long)*(int *)((long)puVar15 + lVar13 * 4); + if (uVar1 < uVar11) { + uVar2 = lVar13 + 2; + local_300[uVar1] = (long)*(int *)((long)puVar15 + uVar1 * 4); + if (uVar2 < uVar11) { + local_300[uVar2] = (long)*(int *)((long)puVar15 + uVar2 * 4); + } + } + } +LAB_003bb960: + local_300[iVar10 + -1] = lVar18 * local_300[iVar10 + -1]; + ndoffset(this,auStack_200); + iVar3 = *(int *)(this + 4); + uVar4 = *(uint *)this; + iVar10 = iVar3 + -1; + piVar16 = *(int **)(this + 0x30); + auStack_200[iVar10] = lVar18 * auStack_200[iVar10]; + _OutputArray::create(param_1,iVar3,piVar16,uVar4 & 0xfff,-1,false,0); + iVar10 = _InputArray::kind((_InputArray *)param_1); + if (iVar10 == 0xa0000) { + /* try { // try from 003bbbb8 to 004bbbc7 has its CatchHandler @ 003bbd68 */ + _InputArray::getUMat((int)param_1); + if ((*(long *)(this + 0x20) != local_330) || (local_328 != *(long *)(this + 0x28))) { + if (*(long *)(*(long *)(this + 0x20) + 8) != *(long *)(local_330 + 8)) { + ~UMat(aUStack_350); + goto LAB_003bb9c4; + } + ndoffset(aUStack_350,&local_100); + lVar14 = *(long *)(this + 0x20); + iVar10 = *(int *)(this + 4); + plVar20 = *(long **)(lVar14 + 8); + iVar3 = iVar10 + -1; + uVar19 = *(undefined8 *)(this + 0x38); + pcVar21 = *(code **)(*plVar20 + 0x48); + (&local_100)[iVar3] = lVar18 * (&local_100)[iVar3]; + (*pcVar21)(plVar20,lVar14,local_330,iVar10,local_300,auStack_200,uVar19,&local_100,local_318,0 + ); + } + ~UMat(aUStack_350); + } + else { +LAB_003bb9c4: + /* try { // try from 003bb9c4 to 004bb9c7 has its CatchHandler @ 003bbdb4 */ + iVar10 = _InputArray::kind((_InputArray *)param_1); + /* try { // try from 003bb9cc to 004bb9f3 has its CatchHandler @ 003bb918 */ + if (iVar10 == 0x10000) { + pMVar17 = *(Mat **)(param_1 + 8); + local_c0 = &local_f8; + local_b8 = &local_b0; + uVar4 = *(uint *)pMVar17; + local_f0 = *(undefined8 *)(pMVar17 + 0x10); + local_100 = *(ulong *)pMVar17; + /* try { // try from 003bbb14 to 004bbb17 has its CatchHandler @ 003bbdac */ + local_f8 = *(undefined8 *)(pMVar17 + 8); + local_e8 = *(undefined8 *)(pMVar17 + 0x18); + local_e0 = *(undefined8 *)(pMVar17 + 0x20); + local_d8 = *(undefined8 *)(pMVar17 + 0x28); + /* try { // try from 003bbb40 to 004bbb93 has its CatchHandler @ 003bb918 */ + local_d0 = *(undefined8 *)(pMVar17 + 0x30); + local_c8 = *(long *)(pMVar17 + 0x38); + local_a8 = 0; + local_b0 = 0; + if (local_c8 != 0) { + piVar16 = (int *)(local_c8 + 0x14); + do { + cVar9 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar5) { + *piVar16 = *piVar16 + 1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (*(int *)(pMVar17 + 4) < 3) { + local_b0 = **(undefined8 **)(pMVar17 + 0x48); + local_a8 = (*(undefined8 **)(pMVar17 + 0x48))[1]; + } + else { + local_100 = (ulong)uVar4; + Mat::copySize((Mat *)&local_100,pMVar17); + } + } + else { + _InputArray::getMat_((int)param_1); + } + plVar20 = *(long **)(*(long *)(this + 0x20) + 8); + /* try { // try from 003bba10 to 004bba37 has its CatchHandler @ 003bbdac */ + (**(code **)(*plVar20 + 0x38)) + (plVar20,*(long *)(this + 0x20),local_f0,*(undefined4 *)(this + 4),local_300, + auStack_200,*(undefined8 *)(this + 0x38),local_b8); + if (local_c8 != 0) { + piVar16 = (int *)(local_c8 + 0x14); + do { + iVar10 = *piVar16; + cVar9 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar16,0x10); + if (bVar5) { + *piVar16 = iVar10 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + if (iVar10 == 1) { + Mat::deallocate((Mat *)&local_100); + } + } + local_c8 = 0; + local_f0 = 0; + local_d8 = 0; + local_e0 = 0; + local_e8 = 0; + if (0 < local_100._4_4_) { + /* try { // try from 003bba60 to 004bba97 has its CatchHandler @ 003bbd68 */ + iVar10 = 0; + puVar15 = local_c0; + do { + *(undefined4 *)puVar15 = 0; + iVar10 = iVar10 + 1; + puVar15 = (undefined8 *)((long)puVar15 + 4); + } while (iVar10 < local_100._4_4_); + } + if (local_b8 != &local_b0) { + fastFree(local_b8); + return; + } + } + return; +} + + +================================================================== + +### FUNC 003bbcec (256 bytes) name=copyTo + +/* cv::UMat::copyTo(cv::_OutputArray const&, cv::_InputArray const&) const */ + +void __thiscall cv::UMat::copyTo(UMat *this,_OutputArray *param_1,_InputArray *param_2) + +{ + int *piVar1; + bool bVar2; + char cVar3; + int iVar4; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cVar3 = _InputArray::empty(param_2); + if (cVar3 == '\0') { + getMat((int)this); + /* try { // try from 003bbd3c to 004bbd4f has its CatchHandler @ 003bbdac */ + Mat::copyTo(aMStack_60,param_1,param_2); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar3 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar4 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + /* try { // try from 003bbd60 to 004bbd63 has its CatchHandler @ 003bb918 */ + if (iVar4 == 1) { + Mat::deallocate(aMStack_60); + } + } + /* catch() { ... } // from try @ 003bba60 with catch @ 003bbd68 + catch() { ... } // from try @ 003bbbb8 with catch @ 003bbd68 */ + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + /* try { // try from 003bbda8 to 004bbdab has its CatchHandler @ 003bb918 */ + /* catch() { ... } // from try @ 003bba10 with catch @ 003bbdac + catch() { ... } // from try @ 003bbb14 with catch @ 003bbdac + catch() { ... } // from try @ 003bbd3c with catch @ 003bbdac */ + if (local_18 != auStack_10) { + fastFree(local_18); + } + /* catch() { ... } // from try @ 003bb9c4 with catch @ 003bbdb4 */ + return; + } + /* try { // try from 003bbdc4 to 004bbdc7 has its CatchHandler @ 003bb918 */ + /* catch() { ... } // from try @ 003bbe08 with catch @ 003bbdc8 + catch() { ... } // from try @ 003bbecc with catch @ 003bbdc8 + catch() { ... } // from try @ 003bc08c with catch @ 003bbdc8 + catch() { ... } // from try @ 003bc860 with catch @ 003bbdc8 + catch() { ... } // from try @ 003bc9cc with catch @ 003bbdc8 + catch() { ... } // from try @ 003bcaa8 with catch @ 003bbdc8 */ + copyTo(this,param_1); + return; +} + + +================================================================== + +### FUNC 003bbe14 (232 bytes) name=setTo + +/* cv::UMat::setTo(cv::_InputArray const&, cv::_InputArray const&) */ + +UMat * __thiscall cv::UMat::setTo(UMat *this,_InputArray *param_1,_InputArray *param_2) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + _InputArray::empty(param_2); + getMat((int)this); + Mat::setTo(aMStack_60,param_1,param_2); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + /* try { // try from 003bbec4 to 004bbec7 has its CatchHandler @ 003bca98 */ + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + /* try { // try from 003bbecc to 004bbef7 has its CatchHandler @ 003bbdc8 */ + if (local_18 != auStack_10) { + fastFree(local_18); + } + return this; +} + + +================================================================== + +### FUNC 003bbf24 (80 bytes) name=operator= + +/* cv::UMat::TEMPNAMEPLACEHOLDERVALUE(cv::Scalar_ const&) */ + +UMat * __thiscall cv::UMat::operator=(UMat *this,Scalar_ *param_1) + +{ + _InputArray *p_Var1; + undefined4 local_18 [2]; + Scalar_ *local_10; + undefined4 local_8; + undefined4 local_4; + + local_18[0] = 0xc1020006; + local_8 = 1; + local_4 = 4; + local_10 = param_1; + p_Var1 = (_InputArray *)noArray(); + setTo(this,(_InputArray *)local_18,p_Var1); + return this; +} + + +================================================================== + +### FUNC 003bbf74 (444 bytes) name=diag + +/* cv::UMat::diag(cv::UMat const&) */ + +void __thiscall cv::UMat::diag(UMat *this,UMat *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined2 uVar3; + char *pcVar4; + int iVar5; + int iVar6; + UMat *in_x8; + undefined4 local_80 [2]; + UMat *local_78; + undefined4 local_70; + undefined4 local_6c; + int local_68; + int local_64; + String *local_60; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + + /* try { // try from 003bbf78 to 004bbfcb has its CatchHandler @ 003bca78 */ + iVar5 = *(int *)(this + 0xc); + iVar6 = *(int *)(this + 8); + if ((iVar5 != 1) && (iVar6 != 1)) { + local_50 = 0; + local_48 = 0; + pcVar4 = (char *)String::allocate((String *)&local_50,0x1a); + uVar3 = s_d_cols____1____d_rows____1_0046bff0._24_2_; + uVar2 = s_d_cols____1____d_rows____1_0046bff0._8_8_; + uVar1 = s_d_cols____1____d_rows____1_0046bff0._0_8_; + *(undefined8 *)(pcVar4 + 0x10) = s_d_cols____1____d_rows____1_0046bff0._16_8_; + *(undefined2 *)(pcVar4 + 0x18) = uVar3; + *(undefined8 *)pcVar4 = uVar1; + *(undefined8 *)(pcVar4 + 8) = uVar2; + error(-0xd7,(String *)&local_50,"static cv::UMat cv::UMat::diag(const cv::UMat&)", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x218); + String::deallocate((String *)&local_50); + iVar6 = *(int *)(this + 8); + iVar5 = *(int *)(this + 0xc); + } + local_68 = iVar5 + iVar6 + -1; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(undefined4 *)(in_x8 + 4) = 0; + *(undefined4 *)in_x8 = 0x42ff0000; + *(undefined4 *)(in_x8 + 8) = 0; + *(undefined4 *)(in_x8 + 0xc) = 0; + *(undefined4 *)(in_x8 + 0x18) = 0; + /* try { // try from 003bc05c to 004bc05f has its CatchHandler @ 003bca90 */ + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_64 = local_68; + /* try { // try from 003bc08c to 004bc0eb has its CatchHandler @ 003bbdc8 */ + create(); + operator=(in_x8,(Scalar_ *)&local_50); + diag((int)in_x8); + local_60 = (String *)&local_50; + if (*(int *)(this + 0xc) == 1) { + local_58 = 0; + local_54 = 0; + local_68 = 0x20a0000; + /* try { // try from 003bc124 to 004bc127 has its CatchHandler @ 003bca90 */ + copyTo(this,(_OutputArray *)&local_68); + } + else { + local_80[0] = 0x10a0000; + local_70 = 0; + local_6c = 0; + local_58 = 0; + local_54 = 0; + local_68 = 0x20a0000; + local_78 = this; + transpose((_InputArray *)local_80,(_OutputArray *)&local_68); + } + ~UMat((UMat *)&local_50); + return; +} + + +================================================================== + +### FUNC 003bc170 (140 bytes) name=t + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::t() const */ + +void cv::UMat::t(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 *in_x8; + undefined4 local_30 [4]; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [4]; + undefined4 local_8; + undefined4 local_4; + + uVar2 = _UNK_003bc218; + /* try { // try from 003bc170 to 004bc17f has its CatchHandler @ 003bca78 */ + uVar1 = _DAT_003bc210; + in_x8[7] = in_x8 + 8; + in_x8[2] = 0; + in_x8[1] = uVar2; + *in_x8 = uVar1; + *(undefined4 *)(in_x8 + 3) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = in_x8 + 1; + in_x8[9] = 0; + in_x8[8] = 0; + local_30[0] = 0x10a0000; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_18[0] = 0x20a0000; + transpose((_InputArray *)local_30,(_OutputArray *)local_18); + return; +} + + +================================================================== + +### FUNC 003bc220 (144 bytes) name=inv + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::inv(int) const */ + +void cv::UMat::inv(int param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + int in_w1; + undefined8 *in_x8; + undefined4 local_30 [2]; + ulong local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [4]; + undefined4 local_8; + undefined4 local_4; + + uVar2 = _UNK_003bc2d8; + uVar1 = _DAT_003bc2d0; + local_28 = (ulong)(uint)param_1; + in_x8[7] = in_x8 + 8; + in_x8[2] = 0; + in_x8[1] = uVar2; + *in_x8 = uVar1; + *(undefined4 *)(in_x8 + 3) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = in_x8 + 1; + in_x8[9] = 0; + in_x8[8] = 0; + local_30[0] = 0x10a0000; + local_20 = 0; + local_1c = 0; + local_8 = 0; + local_4 = 0; + local_18[0] = 0x20a0000; + invert((_InputArray *)local_30,(_OutputArray *)local_18,in_w1); + return; +} + + +================================================================== + +### FUNC 003bc2e0 (144 bytes) name=mul + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::mul(cv::_InputArray const&, double) const */ + +void cv::UMat::mul(_InputArray *param_1,double param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + _InputArray *in_x1; + undefined8 *in_x8; + undefined4 local_30 [2]; + _InputArray *local_28; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [4]; + undefined4 local_8; + undefined4 local_4; + + uVar2 = _UNK_003bc398; + uVar1 = _DAT_003bc390; + in_x8[7] = in_x8 + 8; + in_x8[2] = 0; + in_x8[1] = uVar2; + *in_x8 = uVar1; + *(undefined4 *)(in_x8 + 3) = 0; + in_x8[4] = 0; + in_x8[5] = 0; + in_x8[6] = in_x8 + 1; + in_x8[9] = 0; + in_x8[8] = 0; + local_30[0] = 0x10a0000; + local_20 = 0; + local_1c = 0; + local_8 = 0; + /* try { // try from 003bc34c to 004bc6b7 has its CatchHandler @ 003bc96c */ + local_4 = 0; + local_18[0] = 0x20a0000; + local_28 = param_1; + multiply((_InputArray *)local_30,in_x1,(_OutputArray *)local_18,param_2,-1); + return; +} + + +================================================================== + +### FUNC 003bc3a0 (396 bytes) name=dot + +/* cv::UMat::dot(cv::_InputArray const&) const */ + +undefined1 [16] __thiscall cv::UMat::dot(UMat *this,_InputArray *param_1) + +{ + int *piVar1; + bool bVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined2 uVar7; + char cVar8; + uint uVar9; + char *pcVar10; + int iVar11; + undefined1 auVar12 [16]; + undefined8 local_60; + UMat *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + local_50 = 0; + local_60 = CONCAT44(local_60._4_4_,0x10a0000); + local_58 = this; + cVar8 = _InputArray::sameSize(param_1,(_InputArray *)&local_60); + if ((cVar8 == '\0') || (uVar9 = _InputArray::type(param_1,-1), uVar9 != (*(uint *)this & 0xfff))) + { + local_60 = 0; + local_58 = (UMat *)0x0; + pcVar10 = (char *)String::allocate((String *)&local_60,0x27); + cVar8 = s_m_sameSize__this_____m_type______00476b50[0x26]; + uVar7 = s_m_sameSize__this_____m_type______00476b50._36_2_; + uVar6 = s_m_sameSize__this_____m_type______00476b50._24_8_; + uVar5 = s_m_sameSize__this_____m_type______00476b50._16_8_; + uVar4 = s_m_sameSize__this_____m_type______00476b50._8_8_; + uVar3 = s_m_sameSize__this_____m_type______00476b50._0_8_; + *(undefined4 *)(pcVar10 + 0x20) = s_m_sameSize__this_____m_type______00476b50._32_4_; + *(undefined2 *)(pcVar10 + 0x24) = uVar7; + pcVar10[0x26] = cVar8; + *(undefined8 *)pcVar10 = uVar3; + *(undefined8 *)(pcVar10 + 8) = uVar4; + *(undefined8 *)(pcVar10 + 0x10) = uVar5; + *(undefined8 *)(pcVar10 + 0x18) = uVar6; + error(-0xd7,(String *)&local_60,"double cv::UMat::dot(cv::InputArray) const", + "/builds/master_pack-android/opencv/modules/core/src/umatrix.cpp",0x38d); + String::deallocate((String *)&local_60); + } + getMat((int)this); + auVar12 = Mat::dot((Mat *)&local_60,param_1); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar11 = *piVar1; + cVar8 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar2) { + *piVar1 = iVar11 + -1; + cVar8 = ExclusiveMonitorsStatus(); + } + } while (cVar8 != '\0'); + if (iVar11 == 1) { + Mat::deallocate((Mat *)&local_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_60._4_4_) { + iVar11 = 0; + do { + *local_20 = 0; + iVar11 = iVar11 + 1; + local_20 = local_20 + 1; + } while (iVar11 < local_60._4_4_); + } + if (local_18 != auStack_10) { + fastFree(local_18); + } + return auVar12; +} + + +================================================================== + +### FUNC 003bc570 (152 bytes) name=zeros + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::zeros(int, int, int) */ + +void __thiscall cv::UMat::zeros(UMat *this,int param_1,int param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + UMat *in_x8; + undefined8 uStack_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uVar2 = _UNK_003bc618; + uVar1 = _DAT_003bc610; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 8) = uVar2; + *(undefined8 *)in_x8 = uVar1; + *(undefined8 *)(in_x8 + 0x10) = 0; + uStack_18 = 0; + uStack_20 = 0; + *(undefined4 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + uStack_8 = 0; + local_10 = 0; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + create(); + operator=(in_x8,(Scalar_ *)&uStack_20); + return; +} + + +================================================================== + +### FUNC 003bc620 (160 bytes) name=zeros + +/* cv::UMat::zeros(cv::Size_, int) */ + +UMat * __thiscall cv::UMat::zeros(UMat *param_1,UMat *this,uint param_3) + +{ + undefined4 local_28; + undefined4 local_24; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + local_24 = *(undefined4 *)this; + local_28 = *(undefined4 *)(this + 4); + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)param_1 = 0x42ff0000; + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(UMat **)(param_1 + 0x30) = param_1 + 8; + *(UMat **)(param_1 + 0x38) = param_1 + 0x40; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x48) = 0; + *(undefined8 *)(param_1 + 0x40) = 0; + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + create(param_1,2,&local_28,param_3 & 0xfff); + operator=(param_1,(Scalar_ *)&local_20); + return param_1; +} + + +================================================================== + +### FUNC 003bc6c0 (148 bytes) name=zeros + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::zeros(int, int const*, int) */ + +void __thiscall cv::UMat::zeros(UMat *this,int param_1,int *param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + UMat *in_x8; + undefined8 uStack_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uVar2 = _UNK_003bc768; + uVar1 = _DAT_003bc760; + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(undefined8 *)(in_x8 + 8) = uVar2; + *(undefined8 *)in_x8 = uVar1; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + uStack_18 = 0; + uStack_20 = 0; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined4 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + uStack_8 = 0; + local_10 = 0; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + create(); + operator=(in_x8,(Scalar_ *)&uStack_20); + return; +} + + +================================================================== + +### FUNC 003bc770 (164 bytes) name=ones + +/* cv::UMat::ones(cv::Size_, int) */ + +UMat * __thiscall cv::UMat::ones(UMat *param_1,UMat *this,uint param_3) + +{ + undefined4 local_28; + undefined4 local_24; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + local_24 = *(undefined4 *)this; + local_28 = *(undefined4 *)(this + 4); + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(UMat **)(param_1 + 0x30) = param_1 + 8; + *(UMat **)(param_1 + 0x38) = param_1 + 0x40; + *(undefined4 *)param_1 = 0x42ff0000; + local_18 = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + local_10 = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + local_8 = 0; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x48) = 0; + *(undefined8 *)(param_1 + 0x40) = 0; + local_20 = 0x3ff0000000000000; + create(param_1,2,&local_28,param_3 & 0xfff); + operator=(param_1,(Scalar_ *)&local_20); + return param_1; +} + + +================================================================== + +### FUNC 003bc814 (48 bytes) name=ones + +/* cv::UMat::ones(int, int, int) */ + +void __thiscall cv::UMat::ones(UMat *this,int param_1,int param_2,int param_3) + +{ + int local_8; + undefined4 local_4; + + local_4 = SUB84(this,0); + local_8 = param_1; + ones((UMat *)&local_8,param_2,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 003bc850 (156 bytes) name=ones + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::UMat::ones(int, int const*, int) */ + +void __thiscall cv::UMat::ones(UMat *this,int param_1,int *param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + UMat *in_x8; + undefined8 uStack_20; + undefined8 uStack_18; + undefined8 local_10; + undefined8 uStack_8; + + uVar2 = _UNK_003bc908; + uVar1 = _DAT_003bc900; + uStack_18 = _UNK_003bc8f8; + uStack_20 = _DAT_003bc8f0; + /* try { // try from 003bc860 to 004bc967 has its CatchHandler @ 003bbdc8 */ + *(UMat **)(in_x8 + 0x30) = in_x8 + 8; + *(UMat **)(in_x8 + 0x38) = in_x8 + 0x40; + *(undefined8 *)(in_x8 + 0x10) = 0; + *(undefined4 *)(in_x8 + 0x18) = 0; + *(undefined8 *)(in_x8 + 8) = uVar2; + *(undefined8 *)in_x8 = uVar1; + *(undefined8 *)(in_x8 + 0x20) = 0; + *(undefined8 *)(in_x8 + 0x28) = 0; + *(undefined8 *)(in_x8 + 0x48) = 0; + *(undefined8 *)(in_x8 + 0x40) = 0; + uStack_8 = 0; + local_10 = 0; + create(); + operator=(in_x8,(Scalar_ *)&uStack_20); + return; +} + + +================================================================== + +### FUNC 003bc910 (200 bytes) name=eye + +/* cv::UMat::eye(cv::Size_, int) */ + +UMat * __thiscall cv::UMat::eye(UMat *param_1,UMat *this,uint param_3) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 local_38 [2]; + UMat *local_30; + undefined4 local_28; + undefined4 local_24; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + uVar1 = *(undefined4 *)this; + uVar2 = *(undefined4 *)(this + 4); + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)param_1 = 0x42ff0000; + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + /* catch() { ... } // from try @ 003bc34c with catch @ 003bc96c + catch() { ... } // from try @ 003bc9e4 with catch @ 003bc96c */ + *(undefined8 *)(param_1 + 0x28) = 0; + *(UMat **)(param_1 + 0x30) = param_1 + 8; + *(UMat **)(param_1 + 0x38) = param_1 + 0x40; + *(undefined8 *)(param_1 + 0x48) = 0; + *(undefined8 *)(param_1 + 0x40) = 0; + local_20 = CONCAT44(uVar1,uVar2); + create(param_1,2,(Scalar_ *)&local_20,param_3 & 0xfff); + local_28 = 0; + local_24 = 0; + local_18 = 0; + local_38[0] = 0x30a0000; + local_10 = 0; + local_8 = 0; + local_20 = 0x3ff0000000000000; + local_30 = param_1; + setIdentity((_InputOutputArray *)local_38,(Scalar_ *)&local_20); + /* try { // try from 003bc9cc to 004bc9cf has its CatchHandler @ 003bbdc8 */ + return param_1; +} + + +================================================================== + +### FUNC 003bc9ec (48 bytes) name=eye + +/* cv::UMat::eye(int, int, int) */ + +void __thiscall cv::UMat::eye(UMat *this,int param_1,int param_2,int param_3) + +{ + int local_8; + undefined4 local_4; + + local_4 = SUB84(this,0); + local_8 = param_1; + /* try { // try from 003bca08 to 004bca0b has its CatchHandler @ 003bca90 */ + eye((UMat *)&local_8,param_2,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 003bca1c (712 bytes) name=FUN_003bca1c + +void FUN_003bca1c(int param_1,int param_2,uint param_3,Mat *param_4) + +{ + long lVar1; + int *piVar2; + uint uVar3; + char cVar4; + bool bVar5; + int iVar6; + undefined8 *puVar7; + int iVar8; + ulong uVar9; + long lVar10; + undefined4 *puVar11; + long lVar12; + int local_60; + int local_5c; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined8 local_30; + long lStack_28; + undefined4 *local_20; + undefined8 *local_18; + undefined8 auStack_10 [2]; + + param_1 = param_1 * param_2; + /* try { // try from 003bca2c to 004bca2f has its CatchHandler @ 003bca78 */ + iVar8 = *(int *)(param_4 + 4); + if (*(long *)(param_4 + 0x10) == 0) { +LAB_003bca68: + /* try { // try from 003bca68 to 004bca6b has its CatchHandler @ 003bca80 */ + /* try { // try from 003bca70 to 004bca73 has its CatchHandler @ 003bca78 */ + if (iVar8 < 3) { + iVar6 = *(int *)(param_4 + 8); +LAB_003bcc7c: + if (((iVar6 == 1) && (param_1 == *(int *)(param_4 + 0xc))) && + ((uVar9 = (ulong)*(uint *)param_4, (param_3 & 0xfff) == (*(uint *)param_4 & 0xfff) && + (*(long *)(param_4 + 0x10) != 0)))) goto LAB_003bca98; + } +LAB_003bca74: + /* catch() { ... } // from try @ 003bbf78 with catch @ 003bca78 + catch() { ... } // from try @ 003bc170 with catch @ 003bca78 + catch() { ... } // from try @ 003bca2c with catch @ 003bca78 + catch() { ... } // from try @ 003bca70 with catch @ 003bca78 */ + /* catch() { ... } // from try @ 003bca68 with catch @ 003bca80 */ + local_60 = 1; + local_5c = param_1; + /* catch() { ... } // from try @ 003bbf18 with catch @ 003bca90 + catch() { ... } // from try @ 003bc05c with catch @ 003bca90 + catch() { ... } // from try @ 003bc124 with catch @ 003bca90 + catch() { ... } // from try @ 003bca08 with catch @ 003bca90 */ + cv::Mat::create(param_4,2,&local_60,param_3 & 0xfff); + uVar9 = (ulong)*(uint *)param_4; + } + else { + if (2 < iVar8) { + lVar10 = 0; + lVar12 = 1; + do { + lVar1 = lVar10 * 4; + lVar10 = lVar10 + 1; + lVar12 = lVar12 * *(int *)(*(long *)(param_4 + 0x40) + lVar1); + } while ((int)lVar10 < iVar8); + if (lVar12 != 0) goto LAB_003bca58; + goto LAB_003bca74; + } + iVar6 = *(int *)(param_4 + 8); + if ((long)*(int *)(param_4 + 0xc) * (long)iVar6 == 0) goto LAB_003bcc7c; +LAB_003bca58: + uVar3 = *(uint *)param_4; + uVar9 = (ulong)uVar3; + if (((param_3 != (uVar3 & 0xfff)) || ((uVar3 >> 0xe & 1) == 0)) || + ((*(int **)(param_4 + 0x40))[1] * **(int **)(param_4 + 0x40) < param_1)) goto LAB_003bca68; + } +LAB_003bca98: + /* catch() { ... } // from try @ 003bbec4 with catch @ 003bca98 */ + /* try { // try from 003bcaa8 to 004bcaab has its CatchHandler @ 003bbdc8 */ + cv::Mat::reshape((int)param_4,((uint)(uVar9 >> 3) & 0x1ff) + 1); + if (lStack_28 != 0) { + piVar2 = (int *)(lStack_28 + 0x14); + do { + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = *piVar2 + 1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (*(long *)(param_4 + 0x38) != 0) { + piVar2 = (int *)(*(long *)(param_4 + 0x38) + 0x14); + do { + iVar8 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate(param_4); + } + } + *(undefined8 *)(param_4 + 0x38) = 0; + *(undefined8 *)(param_4 + 0x10) = 0; + *(undefined8 *)(param_4 + 0x28) = 0; + *(undefined8 *)(param_4 + 0x20) = 0; + *(undefined8 *)(param_4 + 0x18) = 0; + if (*(int *)(param_4 + 4) < 1) { + /* try { // try from 003bccd4 to 004bcd27 has its CatchHandler @ 003bcb10 */ + *(int *)param_4 = local_60; +LAB_003bcb3c: + /* try { // try from 003bcb40 to 004bcb5f has its CatchHandler @ 003bcb10 */ + if (local_5c < 3) { + *(int *)(param_4 + 4) = local_5c; + puVar7 = *(undefined8 **)(param_4 + 0x48); + *(undefined4 *)(param_4 + 8) = local_58; + *(undefined4 *)(param_4 + 0xc) = local_54; + *puVar7 = *local_18; + puVar7[1] = local_18[1]; + goto LAB_003bcb74; + } + } + else { + /* catch() { ... } // from try @ 003bcb40 with catch @ 003bcb10 + catch() { ... } // from try @ 003bccd4 with catch @ 003bcb10 + catch() { ... } // from try @ 003bd214 with catch @ 003bcb10 + catch() { ... } // from try @ 003bd2e4 with catch @ 003bcb10 */ + iVar8 = 0; + puVar11 = *(undefined4 **)(param_4 + 0x40); + do { + *puVar11 = 0; + iVar8 = iVar8 + 1; + puVar11 = puVar11 + 1; + } while (iVar8 < *(int *)(param_4 + 4)); + *(int *)param_4 = local_60; + if (*(int *)(param_4 + 4) < 3) goto LAB_003bcb3c; + } + cv::Mat::copySize(param_4,(Mat *)&local_60); +LAB_003bcb74: + *(undefined8 *)(param_4 + 0x18) = uStack_48; + *(undefined8 *)(param_4 + 0x10) = local_50; + *(undefined8 *)(param_4 + 0x28) = uStack_38; + *(undefined8 *)(param_4 + 0x20) = local_40; + *(long *)(param_4 + 0x38) = lStack_28; + *(undefined8 *)(param_4 + 0x30) = local_30; + if (lStack_28 != 0) { + piVar2 = (int *)(lStack_28 + 0x14); + do { + iVar8 = *piVar2; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar5) { + *piVar2 = iVar8 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + if (iVar8 == 1) { + cv::Mat::deallocate((Mat *)&local_60); + } + } + /* try { // try from 003bcbd4 to 004bcc27 has its CatchHandler @ 003bd31c */ + lStack_28 = 0; + local_50 = 0; + uStack_38 = 0; + local_40 = 0; + uStack_48 = 0; + if (0 < local_5c) { + iVar8 = 0; + do { + *local_20 = 0; + iVar8 = iVar8 + 1; + local_20 = local_20 + 1; + } while (iVar8 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 003bcd6c (640 bytes) name=GpuMat + +/* cv::cuda::GpuMat::GpuMat(cv::cuda::GpuMat const&, cv::Range, cv::Range) */ + +void __thiscall +cv::cuda::GpuMat::GpuMat(GpuMat *this,undefined4 *param_1,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + uint uVar2; + char cVar3; + bool bVar4; + long lVar5; + void *pvVar6; + int *piVar7; + long lVar8; + int iVar9; + undefined8 uVar10; + undefined8 uVar11; + uint uVar12; + undefined8 uVar13; + int iVar14; + int iVar15; + int iVar16; + undefined8 local_10; + undefined8 local_8; + + uVar1 = *param_1; + iVar9 = (int)param_3; + lVar8 = *(long *)(param_1 + 4); + uVar13 = *(undefined8 *)(param_1 + 8); + lVar5 = *(long *)(param_1 + 6); + uVar11 = *(undefined8 *)(param_1 + 10); + uVar10 = *(undefined8 *)(param_1 + 0xc); + *(undefined8 *)(this + 0x38) = *(undefined8 *)(param_1 + 0xe); + *(undefined4 *)this = uVar1; + *(long *)(this + 0x10) = lVar8; + *(undefined8 *)(this + 0x20) = uVar13; + *(long *)(this + 0x18) = lVar5; + *(undefined8 *)(this + 0x28) = uVar11; + *(undefined8 *)(this + 0x30) = uVar10; + iVar14 = (int)((ulong)param_3 >> 0x20); + iVar15 = (int)param_4; + iVar16 = (int)((ulong)param_4 >> 0x20); + if ((iVar9 == -0x80000000) && (iVar14 == 0x7fffffff)) { + iVar14 = param_1[1]; + *(int *)(this + 4) = iVar14; + if (iVar15 != -0x80000000) goto LAB_003bce7c; +LAB_003bcf68: + if (iVar16 != 0x7fffffff) goto LAB_003bce7c; + *(undefined4 *)(this + 8) = param_1[2]; + if (iVar14 == 1) goto LAB_003bcf3c; +LAB_003bcf84: + piVar7 = *(int **)(this + 0x20); + if (piVar7 != (int *)0x0) { +LAB_003bcf8c: + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar4) { + *piVar7 = *piVar7 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + iVar14 = *(int *)(this + 4); + } + if (iVar14 < 1) goto LAB_003bcfcc; + } + else { + if ((iVar9 < 0) || ((iVar14 < iVar9 || ((int)param_1[1] < iVar14)))) { + local_10 = 0; + local_8 = 0; + pvVar6 = (void *)String::allocate((String *)&local_10,0x53); + memcpy(pvVar6, + "0 <= rowRange_.start && rowRange_.start <= rowRange_.end && rowRange_.end <= m.rows", + 0x53); + /* try { // try from 003bce38 to 004bce3b has its CatchHandler @ 003bd2c0 */ + error(-0xd7,(String *)&local_10, + "cv::cuda::GpuMat::GpuMat(const cv::cuda::GpuMat&, cv::Range, cv::Range)", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0x72); + String::deallocate((String *)&local_10); + /* try { // try from 003bce50 to 004bce53 has its CatchHandler @ 003bd2f8 */ + lVar5 = *(long *)(this + 0x18); + lVar8 = *(long *)(this + 0x10); + } + iVar14 = iVar14 - iVar9; + *(int *)(this + 4) = iVar14; + lVar5 = lVar5 + lVar8 * iVar9; + *(long *)(this + 0x18) = lVar5; + if (iVar15 == -0x80000000) goto LAB_003bcf68; +LAB_003bce7c: + if (((iVar15 < 0) || (iVar16 < iVar15)) || ((int)param_1[2] < iVar16)) { + local_10 = 0; + local_8 = 0; + pvVar6 = (void *)String::allocate((String *)&local_10,0x53); + memcpy(pvVar6,&LAB_00476e40,0x53); + /* try { // try from 003bcec4 to 004bd0bf has its CatchHandler @ 003bd2c0 */ + error(-0xd7,(String *)&local_10, + "cv::cuda::GpuMat::GpuMat(const cv::cuda::GpuMat&, cv::Range, cv::Range)", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0x7e); + String::deallocate((String *)&local_10); + lVar5 = *(long *)(this + 0x18); + iVar14 = *(int *)(this + 4); + } + uVar2 = *(uint *)this; + *(int *)(this + 8) = iVar16 - iVar15; + uVar12 = 0xffffbfff; + if ((int)param_1[2] <= iVar16 - iVar15) { + uVar12 = 0xffffffff; + } + *(long *)(this + 0x18) = + lVar5 + (long)(int)((uVar2 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar2 & 7) << 1)) & 3)) * (long)iVar15; + *(uint *)this = uVar12 & uVar2; + if (iVar14 != 1) goto LAB_003bcf84; +LAB_003bcf3c: + piVar7 = *(int **)(this + 0x20); + *(uint *)this = *(uint *)this | 0x4000; + if (piVar7 != (int *)0x0) goto LAB_003bcf8c; + } + if (0 < *(int *)(this + 8)) { + return; + } +LAB_003bcfcc: + *(undefined4 *)(this + 8) = 0; + *(undefined4 *)(this + 4) = 0; + return; +} + + +================================================================== + +### FUNC 003bd014 (384 bytes) name=GpuMat + +/* cv::cuda::GpuMat::GpuMat(cv::cuda::GpuMat const&, cv::Rect_) */ + +void __thiscall cv::cuda::GpuMat::GpuMat(GpuMat *this,uint *param_1,int *param_3) + +{ + int iVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + char cVar7; + bool bVar8; + void *__dest; + uint uVar9; + int *piVar10; + undefined8 uVar11; + long lVar12; + long lVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 local_10; + undefined8 local_8; + + iVar1 = param_3[2]; + uVar2 = *param_1; + iVar3 = param_3[3]; + *(int *)(this + 8) = iVar1; + uVar4 = param_3[1]; + uVar5 = param_1[2]; + iVar6 = *param_3; + lVar12 = *(long *)(param_1 + 4); + uVar9 = 0xffffbfff; + if ((int)uVar5 <= iVar1) { + uVar9 = 0xffffffff; + } + uVar9 = uVar9 & uVar2; + lVar13 = *(long *)(param_1 + 6); + piVar10 = *(int **)(param_1 + 8); + uVar15 = *(undefined8 *)(param_1 + 10); + uVar14 = *(undefined8 *)(param_1 + 0xc); + uVar11 = *(undefined8 *)(param_1 + 0xe); + *(int *)(this + 4) = iVar3; + *(long *)(this + 0x10) = lVar12; + *(int **)(this + 0x20) = piVar10; + *(undefined8 *)(this + 0x28) = uVar15; + *(undefined8 *)(this + 0x30) = uVar14; + *(undefined8 *)(this + 0x38) = uVar11; + *(uint *)this = uVar9; + *(long *)(this + 0x18) = + lVar13 + (int)uVar4 * lVar12 + + (long)(int)((uVar9 >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((uVar9 & 7) << 1)) & 3)) * (long)iVar6; + if ((((iVar1 < 0) || (iVar6 < 0)) || (iVar3 < 0)) || + ((((uint)(iVar1 + iVar6 <= (int)uVar5) & ~uVar4 >> 0x1f) == 0 || + ((int)param_1[1] < (int)(iVar3 + uVar4))))) { + local_10 = 0; + local_8 = 0; + __dest = (void *)String::allocate((String *)&local_10,0x7c); + memcpy(__dest, + "0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows" + ,0x7c); + error(-0xd7,(String *)&local_10,"cv::cuda::GpuMat::GpuMat(const cv::cuda::GpuMat&, cv::Rect)", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0x98); + String::deallocate((String *)&local_10); + piVar10 = *(int **)(this + 0x20); + } + if (piVar10 != (int *)0x0) { + do { + cVar7 = '\x01'; + bVar8 = (bool)ExclusiveMonitorPass(piVar10,0x10); + if (bVar8) { + *piVar10 = *piVar10 + 1; + cVar7 = ExclusiveMonitorsStatus(); + } + } while (cVar7 != '\0'); + } + if ((0 < *(int *)(this + 4)) && (0 < *(int *)(this + 8))) { + return; + } + *(undefined4 *)(this + 8) = 0; + *(undefined4 *)(this + 4) = 0; + return; +} + + +================================================================== + +### FUNC 003bd1a8 (188 bytes) name=locateROI + +/* cv::cuda::GpuMat::locateROI(cv::Size_&, cv::Point_&) const */ + +void __thiscall cv::cuda::GpuMat::locateROI(GpuMat *this,Size_ *param_1,Point_ *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + ulong uVar4; + int iVar5; + long lVar6; + ulong uVar7; + int iVar8; + ulong uVar9; + + iVar3 = (*(uint *)this >> 3 & 0x1ff) + 1 << + (ulong)((uint)(0xfa50L >> ((*(uint *)this & 7) << 1)) & 3); + uVar4 = *(long *)(this + 0x18) - *(long *)(this + 0x28); + lVar6 = *(long *)(this + 0x30) - *(long *)(this + 0x28); + uVar9 = (ulong)iVar3; + if (uVar4 == 0) { + uVar7 = *(ulong *)(this + 0x10); + iVar5 = 0; + iVar8 = iVar5; + } + else { + uVar7 = *(ulong *)(this + 0x10); + iVar8 = 0; + if (uVar7 != 0) { + iVar8 = (int)(uVar4 / uVar7); + } + /* try { // try from 003bd254 to 004bd257 has its CatchHandler @ 003bd2e8 */ + iVar5 = 0; + /* try { // try from 003bd25c to 004bd26b has its CatchHandler @ 003bd2c0 */ + if (uVar9 != 0) { + iVar5 = (int)((uVar4 - (long)iVar8 * uVar7) / uVar9); + } + } + iVar2 = *(int *)(this + 4); + iVar1 = iVar5 + *(int *)(this + 8); + *(int *)param_2 = iVar5; + *(int *)(param_2 + 4) = iVar8; + iVar5 = 0; + if (uVar7 != 0) { + iVar5 = (int)((ulong)(lVar6 - (long)iVar1 * (long)iVar3) / uVar7); + } + /* try { // try from 003bd214 to 004bd217 has its CatchHandler @ 003bcb10 */ + iVar3 = iVar5 + 1; + if (iVar5 + 1 < iVar8 + iVar2) { + iVar3 = iVar8 + iVar2; + } + *(int *)(param_1 + 4) = iVar3; + iVar8 = 0; + if (uVar9 != 0) { + iVar8 = (int)((lVar6 - (long)(iVar3 + -1) * uVar7) / uVar9); + } + /* try { // try from 003bd234 to 004bd237 has its CatchHandler @ 003bd2c0 */ + if (iVar1 <= iVar8) { + iVar1 = iVar8; + } + *(int *)param_1 = iVar1; + return; +} + + +================================================================== + +### FUNC 003bd264 (308 bytes) name=adjustROI + +/* cv::cuda::GpuMat::adjustROI(int, int, int, int) */ + +GpuMat * __thiscall +cv::cuda::GpuMat::adjustROI(GpuMat *this,int param_1,int param_2,int param_3,int param_4) + +{ + int iVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + int iVar6; + int local_10; + int local_c; + int local_8; + int local_4; + + local_10 = 0; + local_c = 0; + local_8 = 0; + local_4 = 0; + locateROI(this,(Size_ *)&local_10,(Point_ *)&local_8); + uVar3 = *(uint *)this; + /* catch() { ... } // from try @ 003bcca8 with catch @ 003bd2c0 + catch() { ... } // from try @ 003bce38 with catch @ 003bd2c0 + catch() { ... } // from try @ 003bcec4 with catch @ 003bd2c0 + catch() { ... } // from try @ 003bd234 with catch @ 003bd2c0 + catch() { ... } // from try @ 003bd25c with catch @ 003bd2c0 */ + iVar5 = local_4 - param_1; + iVar1 = local_4 + *(int *)(this + 4) + param_2; + if (iVar5 < 0) { + iVar5 = 0; + } + /* try { // try from 003bd2e4 to 004bd2e7 has its CatchHandler @ 003bcb10 */ + /* catch() { ... } // from try @ 003bd254 with catch @ 003bd2e8 */ + if (local_c < iVar1) { + iVar1 = local_c; + } + iVar6 = local_8 - param_3; + /* catch() { ... } // from try @ 003bce50 with catch @ 003bd2f8 */ + iVar2 = local_8 + *(int *)(this + 8) + param_4; + if (iVar6 < 0) { + iVar6 = 0; + } + iVar4 = (uVar3 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar3 & 7) << 1)) & 3); + if (local_10 < iVar2) { + iVar2 = local_10; + } + /* catch() { ... } // from try @ 003bcbd4 with catch @ 003bd31c */ + *(int *)(this + 4) = iVar1 - iVar5; + *(long *)(this + 0x18) = + *(long *)(this + 0x18) + + (long)(iVar5 - local_4) * *(long *)(this + 0x10) + (long)iVar4 * (long)(iVar6 - local_8); + *(int *)(this + 8) = iVar2 - iVar6; + if ((*(long *)(this + 0x10) != (long)iVar4 * (long)(iVar2 - iVar6)) && (iVar1 - iVar5 != 1)) { + *(uint *)this = uVar3 & 0xffffbfff; + /* catch() { ... } // from try @ 003bd388 with catch @ 003bd360 + catch() { ... } // from try @ 003bd3ec with catch @ 003bd360 + catch() { ... } // from try @ 003bd524 with catch @ 003bd360 + catch() { ... } // from try @ 003bd678 with catch @ 003bd360 + catch() { ... } // from try @ 003bd68c with catch @ 003bd360 */ + return this; + } + *(uint *)this = uVar3 | 0x4000; + /* try { // try from 003bd388 to 004bd3ab has its CatchHandler @ 003bd360 */ + return this; +} + + +================================================================== + +### FUNC 003bd398 (136 bytes) name=syncOutput + +/* cv::cuda::syncOutput(cv::cuda::GpuMat const&, cv::_OutputArray const&, cv::cuda::Stream&) */ + +void cv::cuda::syncOutput(GpuMat *param_1,_OutputArray *param_2,Stream *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bd3e4 to 004bd3e7 has its CatchHandler @ 003bd67c */ + /* try { // try from 003bd3ec to 004bd40f has its CatchHandler @ 003bd360 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bd434 (8 bytes) name=defaultAllocator + +/* cv::cuda::GpuMat::defaultAllocator() */ + +undefined8 cv::cuda::GpuMat::defaultAllocator(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003bd43c (220 bytes) name=GpuMat + +/* cv::cuda::GpuMat::GpuMat(int, int, int, void*, unsigned long) */ + +void __thiscall +cv::cuda::GpuMat::GpuMat + (GpuMat *this,int param_1,int param_2,int param_3,void *param_4,ulong param_5) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + uint uVar4; + long lVar5; + long lVar6; + + *(int *)(this + 4) = param_1; + *(uint *)this = (param_3 & 0xfffU) + 0x42ff0000; + *(int *)(this + 8) = param_2; + *(ulong *)(this + 0x10) = param_5; + *(void **)(this + 0x18) = param_4; + *(void **)(this + 0x28) = param_4; + *(void **)(this + 0x30) = param_4; + *(undefined8 *)(this + 0x20) = 0; + uVar3 = defaultAllocator(); + *(undefined8 *)(this + 0x38) = uVar3; + uVar1 = *(uint *)this; + lVar6 = *(long *)(this + 0x10); + lVar5 = (long)(int)((uVar1 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar1 & 7) << 1)) & 3) + ) * (long)*(int *)(this + 8); + if (lVar6 == 0) { + *(long *)(this + 0x10) = lVar5; + *(uint *)this = uVar1 | 0x4000; + iVar2 = *(int *)(this + 4); + lVar6 = lVar5; + } + else { + iVar2 = *(int *)(this + 4); + if (iVar2 == 1) { + *(long *)(this + 0x10) = lVar5; + uVar4 = 0x4000; + lVar6 = lVar5; + } + else { + uVar4 = 0x4000; + if (lVar5 - lVar6 != 0) { + uVar4 = 0; + } + } + *(uint *)this = uVar4 | uVar1; + } + *(long *)(this + 0x30) = *(long *)(this + 0x30) + lVar5 + (iVar2 + -1) * lVar6; + return; +} + + +================================================================== + +### FUNC 003bd518 (228 bytes) name=GpuMat + +/* cv::cuda::GpuMat::GpuMat(cv::Size_, int, void*, unsigned long) */ + +void __thiscall +cv::cuda::GpuMat::GpuMat + (GpuMat *this,undefined4 *param_2,uint param_3,undefined8 param_4,undefined8 param_5) + +{ + undefined4 uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + uint uVar5; + long lVar6; + long lVar7; + + /* try { // try from 003bd524 to 004bd64f has its CatchHandler @ 003bd360 */ + uVar1 = param_2[1]; + *(undefined4 *)(this + 8) = *param_2; + *(uint *)this = (param_3 & 0xfff) + 0x42ff0000; + *(undefined4 *)(this + 4) = uVar1; + *(undefined8 *)(this + 0x10) = param_5; + *(undefined8 *)(this + 0x18) = param_4; + *(undefined8 *)(this + 0x28) = param_4; + *(undefined8 *)(this + 0x30) = param_4; + *(undefined8 *)(this + 0x20) = 0; + uVar4 = defaultAllocator(); + *(undefined8 *)(this + 0x38) = uVar4; + uVar2 = *(uint *)this; + lVar7 = *(long *)(this + 0x10); + lVar6 = (long)(int)((uVar2 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar2 & 7) << 1)) & 3) + ) * (long)*(int *)(this + 8); + if (lVar7 == 0) { + *(long *)(this + 0x10) = lVar6; + *(uint *)this = uVar2 | 0x4000; + iVar3 = *(int *)(this + 4); + lVar7 = lVar6; + } + else { + iVar3 = *(int *)(this + 4); + if (iVar3 == 1) { + *(long *)(this + 0x10) = lVar6; + uVar5 = 0x4000; + lVar7 = lVar6; + } + else { + uVar5 = 0x4000; + if (lVar6 - lVar7 != 0) { + uVar5 = 0; + } + } + *(uint *)this = uVar5 | uVar2; + } + *(long *)(this + 0x30) = *(long *)(this + 0x30) + lVar6 + (iVar3 + -1) * lVar7; + return; +} + + +================================================================== + +### FUNC 003bd5fc (136 bytes) name=setDefaultAllocator + +/* cv::cuda::GpuMat::setDefaultAllocator(cv::cuda::GpuMat::Allocator*) */ + +void cv::cuda::GpuMat::setDefaultAllocator(Allocator *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + /* catch() { ... } // from try @ 003bd42c with catch @ 003bd654 */ + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + /* try { // try from 003bd678 to 004bd67b has its CatchHandler @ 003bd360 */ + /* catch() { ... } // from try @ 003bd3e4 with catch @ 003bd67c */ + return; +} + + +================================================================== + +### FUNC 003bd698 (136 bytes) name=create + +/* cv::cuda::GpuMat::create(int, int, int) */ + +void cv::cuda::GpuMat::create(int param_1,int param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + /* catch() { ... } // from try @ 003bdfdc with catch @ 003bd6b0 + catch() { ... } // from try @ 003be220 with catch @ 003bd6b0 */ + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bd734 (964 bytes) name=ensureSizeIsEnough + +/* cv::cuda::ensureSizeIsEnough(int, int, int, cv::_OutputArray const&) */ + +void cv::cuda::ensureSizeIsEnough(int param_1,int param_2,int param_3,_OutputArray *param_4) + +{ + long lVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + int iVar9; + Mat *this; + uint *puVar10; + long lVar11; + int iVar12; + ulong uVar13; + long lVar14; + long lVar15; + ulong uVar16; + int local_8; + int local_4; + + iVar9 = _InputArray::kind((_InputArray *)param_4); + if (iVar9 == 0x80000) { + puVar10 = (uint *)_OutputArray::getHostMemRef(param_4); + lVar15 = *(long *)(puVar10 + 6); + if (((lVar15 != 0) && (uVar4 = *puVar10, param_3 == (uVar4 & 0xfff))) && + (lVar15 == *(long *)(puVar10 + 10))) { + uVar5 = puVar10[2]; + iVar9 = (uVar4 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar4 & 7) << 1)) & 3); + uVar16 = *(ulong *)(puVar10 + 4); + iVar12 = 0; + if (uVar16 != 0) { + iVar12 = (int)((ulong)((*(long *)(puVar10 + 0xc) - lVar15) - (long)iVar9 * (long)(int)uVar5) + / uVar16); + } + uVar4 = iVar12 + 1U; + if ((int)(iVar12 + 1U) < (int)puVar10[1]) { + uVar4 = puVar10[1]; + } + uVar7 = 0; + if ((long)iVar9 != 0) { + uVar7 = (uint)(((*(long *)(puVar10 + 0xc) - lVar15) - (long)(int)(uVar4 - 1) * uVar16) / + (ulong)(long)iVar9); + } + if ((int)uVar5 <= (int)uVar7) { + uVar5 = uVar7; + } + if ((param_2 <= (int)uVar5) && (param_1 <= (int)uVar4)) { +LAB_003bd96c: + puVar10[2] = param_2; + puVar10[1] = param_1; + return; + } + } + HostMem::create((int)puVar10,param_1,param_2); + return; + } + if (iVar9 == 0x90000) { + puVar10 = (uint *)_OutputArray::getGpuMatRef(param_4); + lVar15 = *(long *)(puVar10 + 6); + if (((lVar15 != 0) && (uVar4 = *puVar10, param_3 == (uVar4 & 0xfff))) && + (lVar15 == *(long *)(puVar10 + 10))) { + uVar5 = puVar10[2]; + iVar9 = (uVar4 >> 3 & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> ((uVar4 & 7) << 1)) & 3); + uVar16 = *(ulong *)(puVar10 + 4); + /* try { // try from 003bd9c0 to 004bd9c3 has its CatchHandler @ 003be22c */ + /* try { // try from 003bd9c8 to 004bdb97 has its CatchHandler @ 003be2b4 */ + iVar12 = 0; + if (uVar16 != 0) { + iVar12 = (int)((ulong)((*(long *)(puVar10 + 0xc) - lVar15) - (long)iVar9 * (long)(int)uVar5) + / uVar16); + } + uVar4 = iVar12 + 1U; + if ((int)(iVar12 + 1U) < (int)puVar10[1]) { + uVar4 = puVar10[1]; + } + uVar7 = 0; + if ((long)iVar9 != 0) { + uVar7 = (uint)(((*(long *)(puVar10 + 0xc) - lVar15) - (long)(int)(uVar4 - 1) * uVar16) / + (ulong)(long)iVar9); + } + if ((int)uVar5 <= (int)uVar7) { + uVar5 = uVar7; + } + if ((param_2 <= (int)uVar5) && (param_1 <= (int)uVar4)) goto LAB_003bd96c; + } + GpuMat::create((int)puVar10,param_1,param_2); + return; + } + /* try { // try from 003bd76c to 004bd76f has its CatchHandler @ 003be224 */ + if (iVar9 != 0x10000) { + _OutputArray::create(param_4,param_1,param_2,param_3,-1,false,0); + return; + } + this = (Mat *)_OutputArray::getMatRef(param_4,-1); + lVar15 = *(long *)(this + 0x10); + local_8 = param_1; + local_4 = param_2; + if (lVar15 == 0) { + iVar9 = *(int *)(this + 4); +LAB_003bd7fc: + if (2 < iVar9) goto LAB_003bd8d4; + iVar12 = *(int *)(this + 8); + } + else { + iVar9 = *(int *)(this + 4); + if (2 < iVar9) { + lVar14 = 0; + /* try { // try from 003bd7cc to 004bd977 has its CatchHandler @ 003be2b4 */ + lVar11 = 1; + do { + lVar1 = lVar14 * 4; + lVar14 = lVar14 + 1; + lVar11 = lVar11 * *(int *)(*(long *)(this + 0x40) + lVar1); + } while ((int)lVar14 < iVar9); + if (lVar11 == 0) goto LAB_003bd8d4; +LAB_003bd7e8: + if ((param_3 == (*(uint *)this & 0xfff)) && (lVar15 == *(long *)(this + 0x18))) { + if (iVar9 < 1) { + uVar16 = 0; + } + else { + uVar16 = *(ulong *)(*(long *)(this + 0x48) + (long)iVar9 * 8 + -8); + } + iVar12 = *(int *)(this + 0xc); + uVar13 = *(ulong *)(this + 0x50); + iVar6 = *(int *)(this + 8); + iVar8 = 0; + if (uVar13 != 0) { + iVar8 = (int)(((*(long *)(this + 0x20) - lVar15) - uVar16 * (long)iVar12) / uVar13); + } + iVar2 = iVar8 + 1; + if (iVar8 + 1 < iVar6) { + iVar2 = iVar6; + } + iVar8 = 0; + if (uVar16 != 0) { + iVar8 = (int)(((*(long *)(this + 0x20) - lVar15) - (long)(iVar2 + -1) * uVar13) / uVar16); + } + iVar3 = iVar12; + if (iVar12 <= iVar8) { + iVar3 = iVar8; + } + if ((param_2 <= iVar3) && (param_1 <= iVar2)) { + *(int *)(this + 0xc) = param_2; + *(int *)(this + 8) = param_1; + return; + } + if ((param_1 == iVar6 && iVar9 < 3) && (param_2 == iVar12)) { + return; + } + Mat::create(this,2,&local_8,param_3); + return; + } + goto LAB_003bd7fc; + } + iVar12 = *(int *)(this + 8); + if ((long)*(int *)(this + 0xc) * (long)iVar12 != 0) goto LAB_003bd7e8; + } + if ((((param_1 == iVar12) && (param_2 == *(int *)(this + 0xc))) && + ((param_3 & 0xfffU) == (*(uint *)this & 0xfff))) && (lVar15 != 0)) { + return; + } +LAB_003bd8d4: + Mat::create(this,2,&local_8,param_3 & 0xfff); + return; +} + + +================================================================== + +### FUNC 003bdaf8 (4 bytes) name=release + +/* cv::cuda::GpuMat::release() */ + +void cv::cuda::GpuMat::release(void) + +{ + return; +} + + +================================================================== + +### FUNC 003bdafc (784 bytes) name=reshape + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::cuda::GpuMat::reshape(int, int) const */ + +void cv::cuda::GpuMat::reshape(int param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined2 uVar11; + undefined4 uVar12; + uint *puVar13; + int *piVar14; + undefined8 *puVar15; + void *__dest; + char *pcVar16; + uint in_w2; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + uint *in_x8; + int iVar21; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + puVar13 = (uint *)(ulong)(uint)param_1; + uVar1 = *puVar13; + uVar2 = puVar13[1]; + uVar3 = puVar13[2]; + uVar20 = *(undefined8 *)(puVar13 + 4); + uVar19 = *(undefined8 *)(puVar13 + 6); + uVar18 = *(undefined8 *)(puVar13 + 10); + piVar14 = *(int **)(puVar13 + 8); + uVar17 = *(undefined8 *)(puVar13 + 0xc); + *(undefined8 *)(in_x8 + 0xe) = *(undefined8 *)(puVar13 + 0xe); + *in_x8 = uVar1; + in_x8[1] = uVar2; + in_x8[2] = uVar3; + *(undefined8 *)(in_x8 + 4) = uVar20; + *(undefined8 *)(in_x8 + 6) = uVar19; + *(int **)(in_x8 + 8) = piVar14; + *(undefined8 *)(in_x8 + 10) = uVar18; + *(undefined8 *)(in_x8 + 0xc) = uVar17; + if (piVar14 != (int *)0x0) { + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar6) { + *piVar14 = *piVar14 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + iVar21 = (*puVar13 >> 3 & 0x1ff) + 1; + if (param_2 == 0) { + param_2 = iVar21; + } + iVar21 = iVar21 * puVar13[2]; + if (iVar21 < param_2) { +LAB_003bdc70: + if (in_w2 == 0) { + in_w2 = 0; + if (param_2 != 0) { + in_w2 = (int)(iVar21 * puVar13[1]) / param_2; + } + goto joined_r0x003bdc80; + } + } + else { + iVar4 = 0; + if (param_2 != 0) { + iVar4 = iVar21 / param_2; + } + if (iVar21 - iVar4 * param_2 != 0) goto LAB_003bdc70; +joined_r0x003bdc80: + if (in_w2 == 0) goto LAB_003bdbb0; + } + if (puVar13[1] != in_w2) { + uVar1 = iVar21 * puVar13[1]; + if ((*puVar13 >> 0xe & 1) == 0) { + local_40 = 0; + local_38 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_40,0x48); + uVar8 = DAT_00462218; + uVar7 = DAT_00462210; + uVar20 = DAT_00462208; + uVar19 = DAT_00462200; + uVar18 = DAT_004621f8; + uVar17 = DAT_004621f0; + /* try { // try from 003bdde0 to 004bdde3 has its CatchHandler @ 003be24c */ + puVar15[8] = s_changed_00462230._0_8_; + uVar10 = _DAT_00462228; + uVar9 = DAT_00462220; + /* try { // try from 003bdde8 to 004bde57 has its CatchHandler @ 003be2b4 */ + *puVar15 = uVar17; + puVar15[1] = uVar18; + puVar15[2] = uVar19; + puVar15[3] = uVar20; + puVar15[4] = uVar7; + puVar15[5] = uVar8; + puVar15[6] = uVar9; + puVar15[7] = uVar10; + error(-0xd,(String *)&local_40,"cv::cuda::GpuMat cv::cuda::GpuMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0xb3); + String::deallocate((String *)&local_40); + } + if (uVar1 < in_w2) { + local_30 = 0; + local_28 = 0; + pcVar16 = (char *)String::allocate((String *)&local_30,0x16); + uVar11 = s_Bad_new_number_of_rows_00462240._20_2_; + uVar18 = s_Bad_new_number_of_rows_00462240._8_8_; + uVar17 = s_Bad_new_number_of_rows_00462240._0_8_; + /* try { // try from 003bdd54 to 004bdd97 has its CatchHandler @ 003be2b4 */ + *(undefined4 *)(pcVar16 + 0x10) = s_Bad_new_number_of_rows_00462240._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar11; + *(undefined8 *)pcVar16 = uVar17; + *(undefined8 *)(pcVar16 + 8) = uVar18; + error(-0xd3,(String *)&local_30,"cv::cuda::GpuMat cv::cuda::GpuMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0xb6); + String::deallocate((String *)&local_30); + } + iVar21 = 0; + if (in_w2 != 0) { + iVar21 = (int)uVar1 / (int)in_w2; + } + if (iVar21 * in_w2 != uVar1) { + /* try { // try from 003bdcb0 to 004bdcb3 has its CatchHandler @ 003be188 */ + local_20 = 0; + local_18 = 0; + __dest = (void *)String::allocate((String *)&local_20,0x4e); + memcpy(__dest,&DAT_00461f80,0x4e); + error(-5,(String *)&local_20,"cv::cuda::GpuMat cv::cuda::GpuMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0xbb); + String::deallocate((String *)&local_20); + } + in_x8[1] = in_w2; + *(ulong *)(in_x8 + 4) = (long)iVar21 * (0x88442211UL >> ((*puVar13 & 7) << 2) & 0xf); + } +LAB_003bdbb0: + uVar1 = 0; + if (param_2 != 0) { + uVar1 = iVar21 / param_2; + } + if (uVar1 * param_2 != iVar21) { + local_10 = 0; + local_8 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_10,0x3e); + uVar11 = DAT_00462294; + uVar12 = DAT_00462290; + uVar8 = DAT_00462280; + uVar7 = DAT_00462278; + uVar20 = DAT_00462270; + uVar19 = _LAB_00462268; + uVar18 = DAT_00462260; + uVar17 = DAT_00462258; + /* try { // try from 003bdbe0 to 004bdbe3 has its CatchHandler @ 003be23c */ + /* try { // try from 003bdbe8 to 004bdc0f has its CatchHandler @ 003be2b4 */ + puVar15[6] = DAT_00462288; + *(undefined4 *)(puVar15 + 7) = uVar12; + *(undefined2 *)((long)puVar15 + 0x3c) = uVar11; + *puVar15 = uVar17; + puVar15[1] = uVar18; + puVar15[2] = uVar19; + puVar15[3] = uVar20; + puVar15[4] = uVar7; + puVar15[5] = uVar8; + error(-0xf,(String *)&local_10,"cv::cuda::GpuMat cv::cuda::GpuMat::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_gpu_mat.cpp",0xc4); + String::deallocate((String *)&local_10); + } + in_x8[2] = uVar1; + *in_x8 = *in_x8 & 0xfffff007 | (param_2 + -1) * 8; + return; +} + + +================================================================== + +### FUNC 003bde60 (184 bytes) name=getInputMat + +/* cv::cuda::getInputMat(cv::_InputArray const&, cv::cuda::Stream&) */ + +void cv::cuda::getInputMat(_InputArray *param_1,Stream *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined8 uVar5; + char *pcVar6; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + uVar5 = GpuMat::defaultAllocator(); + local_10 = 0; + *(undefined8 *)(in_x8 + 0xe) = uVar5; + *in_x8 = 0; + in_x8[1] = 0; + in_x8[2] = 0; + *(undefined8 *)(in_x8 + 4) = 0; + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar4 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar5 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bdec8 to 004bdecb has its CatchHandler @ 003be25c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar4; + *(undefined8 *)pcVar6 = uVar5; + *(undefined8 *)(pcVar6 + 8) = uVar1; + *(undefined8 *)(pcVar6 + 0x10) = uVar2; + *(undefined8 *)(pcVar6 + 0x18) = uVar3; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bdf40 (184 bytes) name=getOutputMat + +/* cv::cuda::getOutputMat(cv::_OutputArray const&, int, int, int, cv::cuda::Stream&) */ + +void cv::cuda::getOutputMat + (_OutputArray *param_1,int param_2,int param_3,int param_4,Stream *param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + undefined8 uVar5; + char *pcVar6; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + uVar5 = GpuMat::defaultAllocator(); + local_10 = 0; + *(undefined8 *)(in_x8 + 0xe) = uVar5; + *in_x8 = 0; + in_x8[1] = 0; + in_x8[2] = 0; + *(undefined8 *)(in_x8 + 4) = 0; + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar4 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar5 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bdfb0 to 004bdfb3 has its CatchHandler @ 003be264 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar4; + *(undefined8 *)pcVar6 = uVar5; + *(undefined8 *)(pcVar6 + 8) = uVar1; + *(undefined8 *)(pcVar6 + 0x10) = uVar2; + *(undefined8 *)(pcVar6 + 0x18) = uVar3; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + /* try { // try from 003bdfdc to 004be02f has its CatchHandler @ 003bd6b0 */ + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be020 (940 bytes) name=createContinuous + +/* cv::cuda::createContinuous(int, int, int, cv::_OutputArray const&) */ + +void cv::cuda::createContinuous(int param_1,int param_2,int param_3,_OutputArray *param_4) + +{ + uint uVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined8 uVar5; + uint *puVar6; + uint local_40; + uint local_3c; + uint local_38; + undefined8 local_30; + undefined8 local_28; + int *local_20; + undefined8 local_18; + undefined8 local_10; + uint local_8; + undefined4 uStack_4; + + iVar4 = _InputArray::kind((_InputArray *)param_4); + if (iVar4 == 0x80000) { + /* catch() { ... } // from try @ 003bd9c0 with catch @ 003be22c */ + puVar6 = (uint *)_OutputArray::getHostMemRef(param_4); + /* catch() { ... } // from try @ 003bdbe0 with catch @ 003be23c */ + /* catch() { ... } // from try @ 003bdde0 with catch @ 003be24c */ + /* try { // try from 003be394 to 004be3cb has its CatchHandler @ 003be5c8 */ + if ((((*(long *)(puVar6 + 6) == 0) || (uVar1 = *puVar6, param_3 != (uVar1 & 0xfff))) || + ((uVar1 >> 0xe & 1) == 0)) || ((int)(puVar6[1] * puVar6[2]) < param_1 * param_2)) { + /* catch() { ... } // from try @ 003bdec8 with catch @ 003be25c + catch() { ... } // from try @ 003be12c with catch @ 003be25c */ + HostMem::create((int)puVar6,1,param_1 * param_2); + /* catch() { ... } // from try @ 003bdfb0 with catch @ 003be264 + catch() { ... } // from try @ 003be144 with catch @ 003be264 */ + uVar1 = *puVar6; + } + /* catch() { ... } // from try @ 003be0a8 with catch @ 003be26c + catch() { ... } // from try @ 003be0dc with catch @ 003be26c */ + HostMem::reshape((int)puVar6,(uVar1 >> 3 & 0x1ff) + 1); + /* catch() { ... } // from try @ 003be0b8 with catch @ 003be290 + catch() { ... } // from try @ 003be0e8 with catch @ 003be290 */ + /* catch() { ... } // from try @ 003bd7cc with catch @ 003be2b4 + catch() { ... } // from try @ 003bd9c8 with catch @ 003be2b4 + catch() { ... } // from try @ 003bdbe8 with catch @ 003be2b4 + catch() { ... } // from try @ 003bdd54 with catch @ 003be2b4 + catch() { ... } // from try @ 003bdde8 with catch @ 003be2b4 + catch() { ... } // from try @ 003be0c4 with catch @ 003be2b4 + catch() { ... } // from try @ 003be150 with catch @ 003be2b4 */ + if (local_20 != (int *)0x0) { + do { + /* catch() { ... } // from try @ 003be2fc with catch @ 003be2d0 + catch() { ... } // from try @ 003be4b0 with catch @ 003be2d0 + catch() { ... } // from try @ 003be590 with catch @ 003be2d0 */ + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(local_20,0x10); + if (bVar3) { + *local_20 = *local_20 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + *puVar6 = local_40; + /* try { // try from 003be2fc to 004be2ff has its CatchHandler @ 003be2d0 */ + puVar6[1] = local_3c; + /* try { // try from 003be318 to 004be31b has its CatchHandler @ 003be56c */ + puVar6[2] = local_38; + *(undefined8 *)(puVar6 + 4) = local_30; + *(undefined8 *)(puVar6 + 6) = local_28; + *(undefined8 *)(puVar6 + 10) = local_18; + /* try { // try from 003be348 to 004be34b has its CatchHandler @ 003be5c8 */ + *(undefined8 *)(puVar6 + 0xc) = local_10; + *(int **)(puVar6 + 8) = local_20; + puVar6[0xe] = local_8; + HostMem::release(); + HostMem::release(); + /* try { // try from 003be38c to 004be38f has its CatchHandler @ 003be594 */ + return; + } + if (iVar4 == 0x90000) { + /* try { // try from 003be0c4 to 004be0c7 has its CatchHandler @ 003be2b4 */ + puVar6 = (uint *)_OutputArray::getGpuMatRef(param_4); + /* try { // try from 003be0d0 to 004be0d3 has its CatchHandler @ 003be188 */ + /* try { // try from 003be0dc to 004be0df has its CatchHandler @ 003be26c */ + /* try { // try from 003be0e8 to 004be0eb has its CatchHandler @ 003be290 */ + if (((*(long *)(puVar6 + 6) == 0) || (uVar1 = *puVar6, param_3 != (uVar1 & 0xfff))) || + (((uVar1 >> 0xe & 1) == 0 || ((int)(puVar6[1] * puVar6[2]) < param_1 * param_2)))) { + GpuMat::create((int)puVar6,1,param_1 * param_2); + uVar1 = *puVar6; + } + GpuMat::reshape((int)puVar6,(uVar1 >> 3 & 0x1ff) + 1); + /* try { // try from 003be12c to 004be12f has its CatchHandler @ 003be25c */ + /* try { // try from 003be138 to 004be13b has its CatchHandler @ 003be224 */ + /* try { // try from 003be144 to 004be147 has its CatchHandler @ 003be264 */ + /* try { // try from 003be150 to 004be15f has its CatchHandler @ 003be2b4 */ + if (local_20 != (int *)0x0) { + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(local_20,0x10); + if (bVar3) { + *local_20 = *local_20 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + /* catch() { ... } // from try @ 003bdcb0 with catch @ 003be188 + catch() { ... } // from try @ 003be0d0 with catch @ 003be188 */ + *puVar6 = local_40; + puVar6[1] = local_3c; + puVar6[2] = local_38; + *(undefined8 *)(puVar6 + 4) = local_30; + *(undefined8 *)(puVar6 + 6) = local_28; + *(undefined8 *)(puVar6 + 10) = local_18; + *(undefined8 *)(puVar6 + 0xc) = local_10; + *(int **)(puVar6 + 8) = local_20; + *(ulong *)(puVar6 + 0xe) = CONCAT44(uStack_4,local_8); + GpuMat::release(); + GpuMat::release(); + /* try { // try from 003be220 to 004be223 has its CatchHandler @ 003bd6b0 */ + /* catch() { ... } // from try @ 003bd76c with catch @ 003be224 + catch() { ... } // from try @ 003bdf3c with catch @ 003be224 + catch() { ... } // from try @ 003be138 with catch @ 003be224 */ + return; + } + if (iVar4 == 0x10000) { + uVar5 = _OutputArray::getMatRef(param_4,-1); + /* try { // try from 003be0a8 to 004be0ab has its CatchHandler @ 003be26c */ + FUN_003bca1c(param_1,param_2,param_3,uVar5); + /* try { // try from 003be0b8 to 004be0bb has its CatchHandler @ 003be290 */ + return; + } + _OutputArray::create(param_4,param_1,param_2,param_3,-1,false,0); + return; +} + + +================================================================== + +### FUNC 003be3f4 (136 bytes) name=upload + +/* cv::cuda::GpuMat::upload(cv::_InputArray const&) */ + +void cv::cuda::GpuMat::upload(_InputArray *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be43c to 004be43f has its CatchHandler @ 003be56c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be490 (136 bytes) name=upload + +/* cv::cuda::GpuMat::upload(cv::_InputArray const&, cv::cuda::Stream&) */ + +void cv::cuda::GpuMat::upload(_InputArray *param_1,Stream *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + /* try { // try from 003be4b0 to 004be4cb has its CatchHandler @ 003be2d0 */ + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be4d4 to 004be4d7 has its CatchHandler @ 003be56c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be52c (136 bytes) name=download + +/* cv::cuda::GpuMat::download(cv::_OutputArray const&) const */ + +void cv::cuda::GpuMat::download(_OutputArray *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* catch() { ... } // from try @ 003be318 with catch @ 003be56c + catch() { ... } // from try @ 003be43c with catch @ 003be56c + catch() { ... } // from try @ 003be4d4 with catch @ 003be56c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + /* try { // try from 003be590 to 004be593 has its CatchHandler @ 003be2d0 */ + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + /* catch() { ... } // from try @ 003be38c with catch @ 003be594 */ + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be5c8 (136 bytes) name=download + +/* cv::cuda::GpuMat::download(cv::_OutputArray const&, cv::cuda::Stream&) const */ + +void cv::cuda::GpuMat::download(_OutputArray *param_1,Stream *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + /* catch() { ... } // from try @ 003be348 with catch @ 003be5c8 + catch() { ... } // from try @ 003be394 with catch @ 003be5c8 */ + /* catch() { ... } // from try @ 003be5fc with catch @ 003be5d0 + catch() { ... } // from try @ 003be7b0 with catch @ 003be5d0 + catch() { ... } // from try @ 003be890 with catch @ 003be5d0 */ + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be5fc to 004be5ff has its CatchHandler @ 003be5d0 */ + /* try { // try from 003be618 to 004be61b has its CatchHandler @ 003be86c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + /* try { // try from 003be648 to 004be64b has its CatchHandler @ 003be8c8 */ + return; +} + + +================================================================== + +### FUNC 003be664 (136 bytes) name=copyTo + +/* cv::cuda::GpuMat::copyTo(cv::_OutputArray const&) const */ + +void cv::cuda::GpuMat::copyTo(_OutputArray *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be68c to 004be68f has its CatchHandler @ 003be894 */ + /* try { // try from 003be694 to 004be6cb has its CatchHandler @ 003be8c8 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be700 (136 bytes) name=copyTo + +/* cv::cuda::GpuMat::copyTo(cv::_OutputArray const&, cv::cuda::Stream&) const */ + +void cv::cuda::GpuMat::copyTo(_OutputArray *param_1,Stream *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be73c to 004be73f has its CatchHandler @ 003be86c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be79c (136 bytes) name=copyTo + +/* cv::cuda::GpuMat::copyTo(cv::_OutputArray const&, cv::_InputArray const&, cv::cuda::Stream&) + const */ + +void cv::cuda::GpuMat::copyTo(_OutputArray *param_1,_InputArray *param_2,Stream *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003be7b0 to 004be7cb has its CatchHandler @ 003be5d0 */ + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be7d4 to 004be7d7 has its CatchHandler @ 003be86c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003be838 (144 bytes) name=setTo + +/* cv::cuda::GpuMat::setTo(cv::Scalar_, cv::cuda::Stream&) */ + +undefined8 cv::cuda::GpuMat::setTo(undefined8 param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* catch() { ... } // from try @ 003be618 with catch @ 003be86c + catch() { ... } // from try @ 003be73c with catch @ 003be86c + catch() { ... } // from try @ 003be7d4 with catch @ 003be86c */ + /* try { // try from 003be890 to 004be893 has its CatchHandler @ 003be5d0 */ + /* catch() { ... } // from try @ 003be68c with catch @ 003be894 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return param_1; +} + + +================================================================== + +### FUNC 003be8dc (144 bytes) name=setTo + +/* cv::cuda::GpuMat::setTo(cv::Scalar_, cv::_InputArray const&, cv::cuda::Stream&) */ + +undefined8 cv::cuda::GpuMat::setTo(undefined8 param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003be904 to 004be907 has its CatchHandler @ 003be8d0 */ + /* try { // try from 003be920 to 004be923 has its CatchHandler @ 003beb7c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + /* try { // try from 003be950 to 004be953 has its CatchHandler @ 003bebd8 */ + String::deallocate((String *)&local_10); + return param_1; +} + + +================================================================== + +### FUNC 003be980 (136 bytes) name=convertTo + +/* cv::cuda::GpuMat::convertTo(cv::_OutputArray const&, int, cv::cuda::Stream&) const */ + +void cv::cuda::GpuMat::convertTo(_OutputArray *param_1,int param_2,Stream *param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003be994 to 004be997 has its CatchHandler @ 003beba4 */ + local_10 = 0; + /* try { // try from 003be99c to 004be9d7 has its CatchHandler @ 003bebd8 */ + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bea1c (136 bytes) name=convertTo + +/* cv::cuda::GpuMat::convertTo(cv::_OutputArray const&, int, double, double, cv::cuda::Stream&) + const */ + +void cv::cuda::GpuMat::convertTo + (_OutputArray *param_1,int param_2,double param_3,double param_4,Stream *param_5) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bea48 to 004bea4b has its CatchHandler @ 003beb7c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003beab8 (140 bytes) name=getAllocator + +/* cv::cuda::HostMem::getAllocator(cv::cuda::HostMem::AllocType) */ + +undefined8 cv::cuda::HostMem::getAllocator(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003beabc to 004beadb has its CatchHandler @ 003be8d0 */ + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003beae4 to 004beae7 has its CatchHandler @ 003beb7c */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return 0; +} + + +================================================================== + +### FUNC 003beb58 (136 bytes) name=create + +/* cv::cuda::HostMem::create(int, int, int) */ + +void cv::cuda::HostMem::create(int param_1,int param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* catch() { ... } // from try @ 003be920 with catch @ 003beb7c + catch() { ... } // from try @ 003bea48 with catch @ 003beb7c + catch() { ... } // from try @ 003beae4 with catch @ 003beb7c */ + /* try { // try from 003beba0 to 004beba3 has its CatchHandler @ 003be8d0 */ + /* catch() { ... } // from try @ 003be994 with catch @ 003beba4 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + /* catch() { ... } // from try @ 003be950 with catch @ 003bebd8 + catch() { ... } // from try @ 003be99c with catch @ 003bebd8 */ + return; +} + + +================================================================== + +### FUNC 003bebf4 (4 bytes) name=release + +/* cv::cuda::HostMem::release() */ + +void cv::cuda::HostMem::release(void) + +{ + return; +} + + +================================================================== + +### FUNC 003bebf8 (784 bytes) name=reshape + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* cv::cuda::HostMem::reshape(int, int) const */ + +void cv::cuda::HostMem::reshape(int param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + char cVar5; + bool bVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined2 uVar11; + undefined4 uVar12; + uint *puVar13; + int *piVar14; + undefined8 *puVar15; + void *__dest; + char *pcVar16; + uint in_w2; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + uint *in_x8; + int iVar21; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + puVar13 = (uint *)(ulong)(uint)param_1; + uVar1 = *puVar13; + /* try { // try from 003bec1c to 004bec1f has its CatchHandler @ 003bebe0 */ + uVar2 = puVar13[1]; + uVar3 = puVar13[2]; + uVar20 = *(undefined8 *)(puVar13 + 4); + uVar19 = *(undefined8 *)(puVar13 + 6); + uVar18 = *(undefined8 *)(puVar13 + 10); + piVar14 = *(int **)(puVar13 + 8); + uVar17 = *(undefined8 *)(puVar13 + 0xc); + in_x8[0xe] = puVar13[0xe]; + *in_x8 = uVar1; + /* try { // try from 003bec48 to 004bec4b has its CatchHandler @ 003bece4 */ + in_x8[1] = uVar2; + in_x8[2] = uVar3; + *(undefined8 *)(in_x8 + 4) = uVar20; + *(undefined8 *)(in_x8 + 6) = uVar19; + *(int **)(in_x8 + 8) = piVar14; + *(undefined8 *)(in_x8 + 10) = uVar18; + *(undefined8 *)(in_x8 + 0xc) = uVar17; + if (piVar14 != (int *)0x0) { + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar14,0x10); + if (bVar6) { + *piVar14 = *piVar14 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + iVar21 = (*puVar13 >> 3 & 0x1ff) + 1; + if (param_2 == 0) { + param_2 = iVar21; + } + iVar21 = iVar21 * puVar13[2]; + if (iVar21 < param_2) { +LAB_003bed6c: + if (in_w2 == 0) { + in_w2 = 0; + if (param_2 != 0) { + in_w2 = (int)(iVar21 * puVar13[1]) / param_2; + } + goto joined_r0x003bed7c; + } + } + else { + iVar4 = 0; + if (param_2 != 0) { + iVar4 = iVar21 / param_2; + } + if (iVar21 - iVar4 * param_2 != 0) goto LAB_003bed6c; +joined_r0x003bed7c: + if (in_w2 == 0) goto LAB_003becac; + } + if (puVar13[1] != in_w2) { + /* try { // try from 003bed8c to 004bed8f has its CatchHandler @ 003bf870 */ + uVar1 = iVar21 * puVar13[1]; + if ((*puVar13 >> 0xe & 1) == 0) { + local_40 = 0; + local_38 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_40,0x48); + uVar8 = DAT_00462218; + uVar7 = DAT_00462210; + uVar20 = DAT_00462208; + uVar19 = DAT_00462200; + uVar18 = DAT_004621f8; + uVar17 = DAT_004621f0; + puVar15[8] = s_changed_00462230._0_8_; + uVar10 = _DAT_00462228; + uVar9 = DAT_00462220; + *puVar15 = uVar17; + puVar15[1] = uVar18; + puVar15[2] = uVar19; + puVar15[3] = uVar20; + puVar15[4] = uVar7; + puVar15[5] = uVar8; + puVar15[6] = uVar9; + puVar15[7] = uVar10; + error(-0xd,(String *)&local_40,"cv::cuda::HostMem cv::cuda::HostMem::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_host_mem.cpp",0x105); + String::deallocate((String *)&local_40); + } + if (uVar1 < in_w2) { + local_30 = 0; + local_28 = 0; + pcVar16 = (char *)String::allocate((String *)&local_30,0x16); + uVar11 = s_Bad_new_number_of_rows_00462240._20_2_; + uVar18 = s_Bad_new_number_of_rows_00462240._8_8_; + uVar17 = s_Bad_new_number_of_rows_00462240._0_8_; + /* try { // try from 003bee6c to 004bee6f has its CatchHandler @ 003bf8a8 */ + /* try { // try from 003bee74 to 004bf26b has its CatchHandler @ 003bf870 */ + *(undefined4 *)(pcVar16 + 0x10) = s_Bad_new_number_of_rows_00462240._16_4_; + *(undefined2 *)(pcVar16 + 0x14) = uVar11; + *(undefined8 *)pcVar16 = uVar17; + *(undefined8 *)(pcVar16 + 8) = uVar18; + error(-0xd3,(String *)&local_30,"cv::cuda::HostMem cv::cuda::HostMem::reshape(int, int) const" + ,"/builds/master_pack-android/opencv/modules/core/src/cuda_host_mem.cpp",0x108); + String::deallocate((String *)&local_30); + } + iVar21 = 0; + if (in_w2 != 0) { + iVar21 = (int)uVar1 / (int)in_w2; + } + if (iVar21 * in_w2 != uVar1) { + local_20 = 0; + local_18 = 0; + __dest = (void *)String::allocate((String *)&local_20,0x4e); + /* try { // try from 003bedd0 to 004bedd3 has its CatchHandler @ 003bf83c */ + memcpy(__dest,&DAT_00461f80,0x4e); + /* try { // try from 003bedd8 to 004bee3f has its CatchHandler @ 003bf870 */ + error(-5,(String *)&local_20,"cv::cuda::HostMem cv::cuda::HostMem::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_host_mem.cpp",0x10d); + String::deallocate((String *)&local_20); + } + in_x8[1] = in_w2; + *(ulong *)(in_x8 + 4) = (long)iVar21 * (0x88442211UL >> ((*puVar13 & 7) << 2) & 0xf); + } +LAB_003becac: + uVar1 = 0; + if (param_2 != 0) { + uVar1 = iVar21 / param_2; + } + if (uVar1 * param_2 != iVar21) { + /* try { // try from 003becc0 to 004becdf has its CatchHandler @ 003bebe0 */ + local_10 = 0; + local_8 = 0; + puVar15 = (undefined8 *)String::allocate((String *)&local_10,0x3e); + uVar11 = DAT_00462294; + uVar12 = DAT_00462290; + uVar8 = DAT_00462280; + uVar7 = DAT_00462278; + uVar20 = DAT_00462270; + uVar19 = _LAB_00462268; + uVar18 = DAT_00462260; + uVar17 = DAT_00462258; + /* catch() { ... } // from try @ 003bec48 with catch @ 003bece4 */ + /* try { // try from 003bed08 to 004bed0b has its CatchHandler @ 003bebe0 */ + puVar15[6] = DAT_00462288; + *(undefined4 *)(puVar15 + 7) = uVar12; + *(undefined2 *)((long)puVar15 + 0x3c) = uVar11; + /* catch() { ... } // from try @ 003bed44 with catch @ 003bed20 + catch() { ... } // from try @ 003bf294 with catch @ 003bed20 + catch() { ... } // from try @ 003bf6f4 with catch @ 003bed20 + catch() { ... } // from try @ 003bf86c with catch @ 003bed20 */ + *puVar15 = uVar17; + puVar15[1] = uVar18; + puVar15[2] = uVar19; + puVar15[3] = uVar20; + puVar15[4] = uVar7; + puVar15[5] = uVar8; + error(-0xf,(String *)&local_10,"cv::cuda::HostMem cv::cuda::HostMem::reshape(int, int) const", + "/builds/master_pack-android/opencv/modules/core/src/cuda_host_mem.cpp",0x116); + String::deallocate((String *)&local_10); + } + in_x8[2] = uVar1; + /* try { // try from 003bed44 to 004bed63 has its CatchHandler @ 003bed20 */ + *in_x8 = *in_x8 & 0xfffff007 | (param_2 + -1) * 8; + return; +} + + +================================================================== + +### FUNC 003bef5c (184 bytes) name=createGpuMatHeader + +/* cv::cuda::HostMem::createGpuMatHeader() const */ + +void __thiscall cv::cuda::HostMem::createGpuMatHeader(HostMem *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined4 uVar4; + char *pcVar5; + undefined8 uVar6; + undefined4 *in_x8; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar5 = (char *)String::allocate((String *)&local_10,0x2c); + uVar4 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar6 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar5 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar5 + 0x28) = uVar4; + *(undefined8 *)pcVar5 = uVar6; + *(undefined8 *)(pcVar5 + 8) = uVar1; + *(undefined8 *)(pcVar5 + 0x10) = uVar2; + *(undefined8 *)(pcVar5 + 0x18) = uVar3; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + uVar6 = GpuMat::defaultAllocator(); + *in_x8 = 0; + *(undefined8 *)(in_x8 + 0xe) = uVar6; + in_x8[1] = 0; + in_x8[2] = 0; + *(undefined8 *)(in_x8 + 4) = 0; + *(undefined8 *)(in_x8 + 6) = 0; + *(undefined8 *)(in_x8 + 8) = 0; + *(undefined8 *)(in_x8 + 10) = 0; + *(undefined8 *)(in_x8 + 0xc) = 0; + return; +} + + +================================================================== + +### FUNC 003bf028 (136 bytes) name=registerPageLocked + +/* cv::cuda::registerPageLocked(cv::Mat&) */ + +void cv::cuda::registerPageLocked(Mat *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf0c4 (4 bytes) name=unregisterPageLocked + +/* cv::cuda::unregisterPageLocked(cv::Mat&) */ + +void cv::cuda::unregisterPageLocked(Mat *param_1) + +{ + return; +} + + +================================================================== + +### FUNC 003bf0c8 (80 bytes) name=~Stream + +/* cv::cuda::Stream::~Stream() */ + +void __thiscall cv::cuda::Stream::~Stream(Stream *this) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long lVar4; + long *plVar5; + + plVar5 = *(long **)this; + if (plVar5 != (long *)0x0) { + plVar1 = plVar5 + 1; + do { + lVar4 = *plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)lVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((int)lVar4 == 1) { + (**(code **)(*plVar5 + 0x10))(); + return; + } + } + return; +} + + +================================================================== + +### FUNC 003bf118 (148 bytes) name=Stream + +/* cv::cuda::Stream::Stream() */ + +void __thiscall cv::cuda::Stream::Stream(Stream *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf1fc (140 bytes) name=queryIfComplete + +/* cv::cuda::Stream::queryIfComplete() const */ + +undefined8 cv::cuda::Stream::queryIfComplete(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return 0; +} + + +================================================================== + +### FUNC 003bf29c (136 bytes) name=waitForCompletion + +/* cv::cuda::Stream::waitForCompletion() */ + +void cv::cuda::Stream::waitForCompletion(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf338 (136 bytes) name=waitEvent + +/* cv::cuda::Stream::waitEvent(cv::cuda::Event const&) */ + +void cv::cuda::Stream::waitEvent(Event *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf3d4 (136 bytes) name=enqueueHostCallback + +/* cv::cuda::Stream::enqueueHostCallback(void (*)(int, void*), void*) */ + +void cv::cuda::Stream::enqueueHostCallback(_func_void_int_void_ptr *param_1,void *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf470 (228 bytes) name=Null + +/* cv::cuda::Stream::Null() */ + +undefined * cv::cuda::Stream::Null(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + int iVar6; + char *pcVar7; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar7 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar7 + 0x28) = uVar5; + *(undefined8 *)pcVar7 = uVar1; + *(undefined8 *)(pcVar7 + 8) = uVar2; + *(undefined8 *)(pcVar7 + 0x10) = uVar3; + *(undefined8 *)(pcVar7 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + if (((DAT_00532ec8 & 1) == 0) && (iVar6 = __cxa_guard_acquire(&DAT_00532ec8), iVar6 != 0)) { + Stream((Stream *)&DAT_00532ed0); + __cxa_guard_release(&DAT_00532ec8); + __cxa_atexit(PTR__Stream_005018b0,&DAT_00532ed0,&DAT_00502000); + return &DAT_00532ed0; + } + return &DAT_00532ed0; +} + + +================================================================== + +### FUNC 003bf57c (12 bytes) name=operator.cast.to.function.pointer + +/* cv::cuda::Stream::operator void (cv::cuda::Stream::*)() const() const */ + +_func_void * __thiscall cv::cuda::Stream::operator_cast_to_function_pointer(Stream *this) + +{ + return (_func_void *)0x0; +} + + +================================================================== + +### FUNC 003bf588 (136 bytes) name=setBufferPoolUsage + +/* cv::cuda::setBufferPoolUsage(bool) */ + +void cv::cuda::setBufferPoolUsage(bool param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + /* try { // try from 003bf5e0 to 004bf6e3 has its CatchHandler @ 003bf870 */ + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf624 (136 bytes) name=setBufferPoolConfig + +/* cv::cuda::setBufferPoolConfig(int, unsigned long, int) */ + +void cv::cuda::setBufferPoolConfig(int param_1,ulong param_2,int param_3) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf6c0 (148 bytes) name=Event + +/* cv::cuda::Event::Event(cv::cuda::Event::CreateFlags) */ + +void __thiscall cv::cuda::Event::Event(Event *this) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + *(undefined8 *)this = 0; + *(undefined8 *)(this + 8) = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bf6f4 to 004bf6f7 has its CatchHandler @ 003bed20 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf7a4 (136 bytes) name=record + +/* cv::cuda::Event::record(cv::cuda::Stream&) */ + +void cv::cuda::Event::record(Stream *param_1) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf840 (140 bytes) name=queryIfComplete + +/* cv::cuda::Event::queryIfComplete() const */ + +undefined8 cv::cuda::Event::queryIfComplete(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bf86c to 004bf86f has its CatchHandler @ 003bed20 */ + /* catch() { ... } // from try @ 003bed8c with catch @ 003bf870 + catch() { ... } // from try @ 003bedd8 with catch @ 003bf870 + catch() { ... } // from try @ 003bee74 with catch @ 003bf870 + catch() { ... } // from try @ 003bf5e0 with catch @ 003bf870 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + /* catch() { ... } // from try @ 003bee6c with catch @ 003bf8a8 */ + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return 0; +} + + +================================================================== + +### FUNC 003bf8e0 (136 bytes) name=waitForCompletion + +/* cv::cuda::Event::waitForCompletion() */ + +void cv::cuda::Event::waitForCompletion(void) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + /* catch() { ... } // from try @ 003bf920 with catch @ 003bf8f0 + catch() { ... } // from try @ 003c014c with catch @ 003bf8f0 + catch() { ... } // from try @ 003c0364 with catch @ 003bf8f0 + catch() { ... } // from try @ 003c0434 with catch @ 003bf8f0 */ + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bf920 to 004bf93f has its CatchHandler @ 003bf8f0 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + /* try { // try from 003bf948 to 004bf97b has its CatchHandler @ 003c0458 */ + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return; +} + + +================================================================== + +### FUNC 003bf97c (140 bytes) name=elapsedTime + +/* cv::cuda::Event::elapsedTime(cv::cuda::Event const&, cv::cuda::Event const&) */ + +undefined1 [16] cv::cuda::Event::elapsedTime(Event *param_1,Event *param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + char *pcVar6; + undefined8 local_10; + undefined8 local_8; + + local_10 = 0; + local_8 = 0; + pcVar6 = (char *)String::allocate((String *)&local_10,0x2c); + uVar5 = s_The_library_is_compiled_without_C_00476e98._40_4_; + uVar4 = s_The_library_is_compiled_without_C_00476e98._24_8_; + uVar3 = s_The_library_is_compiled_without_C_00476e98._16_8_; + uVar2 = s_The_library_is_compiled_without_C_00476e98._8_8_; + uVar1 = s_The_library_is_compiled_without_C_00476e98._0_8_; + /* try { // try from 003bf9cc to 004bf9cf has its CatchHandler @ 003c0438 */ + *(undefined8 *)(pcVar6 + 0x20) = s_The_library_is_compiled_without_C_00476e98._32_8_; + /* try { // try from 003bf9d4 to 004bfa07 has its CatchHandler @ 003c0458 */ + *(undefined4 *)(pcVar6 + 0x28) = uVar5; + *(undefined8 *)pcVar6 = uVar1; + *(undefined8 *)(pcVar6 + 8) = uVar2; + *(undefined8 *)(pcVar6 + 0x10) = uVar3; + *(undefined8 *)(pcVar6 + 0x18) = uVar4; + error(-0xd8,(String *)&local_10,"void throw_no_cuda()", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/private.cuda.hpp",0x61 + ); + String::deallocate((String *)&local_10); + return ZEXT816(0); +} + + +================================================================== + +### FUNC 003bfa1c (176 bytes) name=FUN_003bfa1c + +void FUN_003bfa1c(long param_1,int *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + long lVar4; + long lVar5; + long lVar6; + long lVar7; + long lVar8; + long lVar9; + long lVar10; + long lVar11; + long lVar12; + long lVar13; + long lVar14; + float fVar15; + float fVar16; + + iVar1 = *param_2; + iVar2 = param_2[1]; + if (iVar1 < iVar2) { + lVar14 = *(long *)(param_1 + 0x10); + lVar11 = *(long *)(param_1 + 0x28) * 4; + lVar13 = *(long *)(param_1 + 0x30); + lVar8 = (long)iVar1 * 4; + lVar12 = *(long *)(param_1 + 0x18); + /* try { // try from 003bfa50 to 004bfa53 has its CatchHandler @ 003c0448 */ + lVar10 = *(long *)(param_1 + 8); + /* try { // try from 003bfa58 to 004bfaaf has its CatchHandler @ 003c0458 */ + iVar3 = *(int *)(param_1 + 0x20); + lVar7 = lVar14 + iVar1 * lVar11; + lVar9 = 0; + do { + fVar16 = 0.0; + if (0 < iVar3) { + lVar6 = 0; + do { + lVar4 = lVar6 * 4; + lVar5 = lVar6 * 4; + lVar6 = lVar6 + 1; + fVar15 = *(float *)(lVar7 + lVar4) - *(float *)(lVar14 + lVar13 * 4 + lVar5); + fVar16 = fVar16 + fVar15 * fVar15; + } while ((int)lVar6 < iVar3); + } + fVar15 = *(float *)(lVar12 + lVar8 + lVar9); + if (fVar16 <= fVar15) { + fVar15 = fVar16; + } + *(float *)(lVar10 + lVar8 + lVar9) = fVar15; + lVar9 = lVar9 + 4; + lVar7 = lVar7 + lVar11; + } while (lVar9 != ((ulong)(uint)((iVar2 + -1) - iVar1) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003bfad0 (272 bytes) name=FUN_003bfad0 + +void FUN_003bfad0(long param_1,int *param_2) + +{ + long lVar1; + long lVar2; + long lVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + double dVar8; + long lVar9; + long lVar10; + long lVar11; + int iVar12; + int iVar13; + long lVar14; + long lVar15; + long lVar16; + float fVar17; + float fVar18; + double dVar19; + double dVar20; + + dVar8 = DAT_003bfbe0; + iVar12 = *param_2; + lVar15 = *(long *)(param_1 + 0x20); + iVar4 = *(int *)(lVar15 + 8); + iVar5 = *(int *)(lVar15 + 0xc); + if (iVar12 < param_2[1]) { + lVar10 = (long)iVar12; + /* try { // try from 003bfb04 to 004bfb07 has its CatchHandler @ 003c0460 */ + lVar1 = (ulong)(uint)((param_2[1] + -1) - iVar12) + 1; + lVar2 = *(long *)(param_1 + 8) + lVar10 * 8; + lVar14 = 0; + lVar16 = **(long **)(*(long *)(param_1 + 0x18) + 0x48); + lVar3 = *(long *)(param_1 + 0x10) + lVar10 * 4; + lVar10 = *(long *)(*(long *)(param_1 + 0x18) + 0x10) + lVar16 * lVar10; + do { + while (0 < iVar4) { + iVar12 = 0; + lVar11 = *(long *)(lVar15 + 0x10); + iVar13 = 0; + dVar20 = dVar8; + do { + if (iVar5 < 1) { + dVar19 = 0.0; + } + else { + fVar18 = 0.0; + lVar9 = 0; + do { + lVar6 = lVar9 * 4; + lVar7 = lVar9 * 4; + lVar9 = lVar9 + 1; + fVar17 = *(float *)(lVar10 + lVar6) - *(float *)(lVar11 + lVar7); + fVar18 = fVar18 + fVar17 * fVar17; + } while ((int)lVar9 < iVar5); + dVar19 = (double)fVar18; + } + if (dVar19 < dVar20) { + dVar20 = dVar19; + iVar13 = iVar12; + } + iVar12 = iVar12 + 1; + lVar11 = lVar11 + **(long **)(lVar15 + 0x48); + } while (iVar12 != iVar4); + *(double *)(lVar2 + lVar14 * 8) = dVar20; + lVar10 = lVar10 + lVar16; + *(int *)(lVar3 + lVar14 * 4) = iVar13; + lVar14 = lVar14 + 1; + if (lVar14 == lVar1) { + return; + } + } + lVar10 = lVar10 + lVar16; + *(double *)(lVar2 + lVar14 * 8) = dVar8; + *(undefined4 *)(lVar3 + lVar14 * 4) = 0; + lVar14 = lVar14 + 1; + } while (lVar14 != lVar1); + } + return; +} + + +================================================================== + +### FUNC 003bfbe8 (16 bytes) name=FUN_003bfbe8 + +void FUN_003bfbe8(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f79a0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 003bfbf8 (44 bytes) name=FUN_003bfbf8 + +void FUN_003bfbf8(ParallelLoopBody *param_1) + +{ + /* try { // try from 003bfc08 to 004bfc0b has its CatchHandler @ 003c03c4 */ + *(undefined ***)param_1 = &PTR_FUN_004f79a0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003bfc24 (16 bytes) name=FUN_003bfc24 + +void FUN_003bfc24(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f79d0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + return; +} + + +================================================================== + +### FUNC 003bfc34 (44 bytes) name=FUN_003bfc34 + +void FUN_003bfc34(ParallelLoopBody *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f79d0; + cv::ParallelLoopBody::~ParallelLoopBody(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003bfc60 (10024 bytes) name=kmeans + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::kmeans(cv::_InputArray const&, int, cv::_InputOutputArray const&, cv::TermCriteria, int, int, + cv::_OutputArray const&) */ + +undefined1 [16] __thiscall +cv::kmeans(cv *this,uint param_2,_OutputArray *param_3_00,ulong param_3,double param_5,int param_6, + uint param_7,_OutputArray *param_8) + +{ + ulong uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + long lVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + double dVar8; + undefined8 uVar9; + float fVar10; + undefined1 auVar11 [16]; + float fVar12; + undefined8 uVar13; + float fVar14; + float fVar15; + undefined1 auVar16 [12]; + double dVar17; + undefined4 uVar18; + undefined2 uVar19; + undefined8 uVar20; + undefined8 uVar21; + long lVar22; + bool bVar23; + char cVar24; + int iVar25; + uint uVar26; + uint uVar27; + int iVar28; + void *__dest; + ulong uVar29; + ulong *puVar30; + float *pfVar31; + ulong uVar32; + char *pcVar33; + long lVar34; + float *pfVar35; + undefined8 *puVar36; + undefined4 *puVar37; + float *pfVar38; + ulong uVar39; + ulong uVar40; + ulong uVar41; + undefined8 *puVar42; + float *pfVar43; + Mat **ppMVar44; + uint *puVar45; + ulong uVar46; + Mat *pMVar47; + long lVar48; + float *pfVar49; + long lVar50; + uint uVar51; + int *piVar52; + long lVar53; + float *pfVar54; + uint uVar55; + int iVar56; + long lVar57; + long lVar58; + int *piVar59; + ulong uVar60; + uint uVar61; + uint uVar62; + float *pfVar63; + Mat *pMVar64; + ulong uVar65; + uint uVar66; + uint uVar67; + ulong uVar68; + undefined8 *puVar69; + uint uVar70; + int iVar71; + ulong uVar72; + long lVar73; + undefined1 uVar74; + undefined1 uVar75; + undefined1 uVar77; + undefined1 uVar78; + undefined1 uVar79; + undefined1 uVar80; + undefined1 uVar81; + undefined1 uVar82; + undefined1 uVar83; + undefined1 uVar84; + undefined1 uVar85; + undefined1 uVar86; + undefined1 uVar87; + undefined1 uVar88; + undefined1 uVar89; + undefined1 uVar90; + undefined1 auVar76 [16]; + undefined1 uVar91; + undefined1 uVar92; + undefined1 uVar93; + undefined1 uVar94; + undefined1 uVar95; + undefined1 uVar96; + undefined1 uVar97; + undefined1 uVar98; + undefined1 uVar99; + undefined1 uVar100; + float fVar101; + float fVar102; + int iVar103; + undefined1 auVar104 [16]; + undefined1 auVar105 [16]; + undefined1 auVar106 [16]; + undefined1 auVar107 [16]; + undefined1 auVar108 [16]; + double dVar109; + double dVar110; + double dVar111; + double dVar112; + double dVar113; + double dVar114; + undefined1 local_570; + undefined1 uStack_56f; + undefined1 uStack_56e; + undefined1 uStack_56d; + undefined1 uStack_56c; + undefined1 uStack_56b; + undefined1 uStack_56a; + undefined1 uStack_569; + float local_550; + float fStack_54c; + float fStack_548; + float fStack_544; + float local_540; + float fStack_53c; + float fStack_538; + float fStack_534; + int local_524; + int *local_518; + uint local_508; + int local_504; + Mat *local_4f8; + int local_4e4; + Mat *local_4e0; + float *local_4c8; + float *local_4b0; + int *local_4a8; + int *local_498; + int local_490; + int local_48c; + uint local_3d0; + int iStack_3cc; + uint local_3b8 [3]; + uint local_3ac; + uint local_3a8; + uint local_3a4; + uint local_3a0; + uint local_39c; + int local_398; + uint local_394; + int local_390; + uint local_38c; + undefined8 local_388; + undefined8 local_380; + undefined8 local_378; + undefined8 local_370; + undefined8 local_368; + undefined8 local_360; + undefined8 local_358; + undefined8 local_350; + undefined8 local_348; + undefined8 local_340; + long local_338 [2]; + undefined **local_328; + long local_320; + long local_318; + Mat *local_310; + Mat *local_308; + undefined8 local_300; + undefined8 uStack_2f8; + long local_2f0; + undefined8 local_2e8; + undefined8 local_2e0; + undefined8 local_2d8; + undefined8 local_2d0; + long local_2c8; + undefined8 *local_2c0; + undefined8 *local_2b8; + undefined8 local_2b0; + undefined8 uStack_2a8; + undefined8 local_2a0; + Mat *pMStack_298; + float *local_290; + undefined8 local_288; + undefined8 local_280; + undefined8 local_278; + undefined8 local_270; + long local_268; + Mat **local_260; + long *local_258; + long local_250 [2]; + undefined8 local_240; + Mat *pMStack_238; + long local_230; + undefined8 local_228; + undefined8 local_220; + undefined8 local_218; + undefined8 local_210; + long local_208; + Mat **local_200; + long *local_1f8; + long local_1f0 [2]; + undefined8 local_1e0; + Mat *pMStack_1d8; + float *local_1d0; + undefined8 local_1c8; + undefined8 local_1c0; + undefined8 local_1b8; + undefined8 local_1b0; + long local_1a8; + Mat **local_1a0; + undefined8 *local_198; + undefined8 local_190; + undefined8 uStack_188; + undefined8 local_180; + Mat *pMStack_178; + float *local_170; + float *pfStack_168; + undefined8 local_160; + ulong local_158; + long local_150; + long local_148; + Mat **local_140; + undefined8 *local_138; + undefined8 local_130; + undefined8 uStack_128; + uint local_120; + int local_11c; + uint local_118; + uint local_114; + float *local_110; + undefined8 local_108; + undefined8 local_100; + undefined8 local_f8; + undefined8 local_f0; + long local_e8; + uint *local_e0; + ulong *local_d8; + ulong local_d0; + ulong local_c8; + uint local_c0; + int local_bc; + uint local_b8; + uint local_b4; + float *local_b0; + float *local_a8; + long local_a0; + float *local_98; + undefined8 local_90; + long local_88; + uint *local_80; + ulong *local_78; + ulong local_70 [2]; + uint local_60; + int local_5c; + uint local_58; + int local_54; + long local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + long local_28; + uint *local_20; + undefined8 *local_18; + undefined8 local_10; + undefined8 local_8; + + iVar25 = _InputArray::kind((_InputArray *)this); + if (iVar25 == 0x10000) { + pMVar47 = *(Mat **)(this + 8); + local_e0 = &local_118; + local_d8 = &local_d0; + local_120 = *(uint *)pMVar47; + local_11c = *(int *)(pMVar47 + 4); + local_118 = *(uint *)(pMVar47 + 8); + /* try { // try from 003c284c to 004c29f7 has its CatchHandler @ 003c3148 */ + local_114 = *(uint *)(pMVar47 + 0xc); + local_110 = *(float **)(pMVar47 + 0x10); + local_108 = *(undefined8 *)(pMVar47 + 0x18); + local_100 = *(undefined8 *)(pMVar47 + 0x20); + local_f8 = *(undefined8 *)(pMVar47 + 0x28); + local_f0 = *(undefined8 *)(pMVar47 + 0x30); + local_e8 = *(long *)(pMVar47 + 0x38); + local_c8 = 0; + local_d0 = 0; + if (local_e8 != 0) { + piVar59 = (int *)(local_e8 + 0x14); + do { + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = *piVar59 + 1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + } + if (*(int *)(pMVar47 + 4) < 3) { + local_d0 = **(ulong **)(pMVar47 + 0x48); + local_c8 = (*(ulong **)(pMVar47 + 0x48))[1]; + } + else { + local_11c = 0; + Mat::copySize((Mat *)&local_120,pMVar47); + } + } + else { + _InputArray::getMat_((int)this); + } + local_4f8 = (Mat *)&local_120; + local_508 = local_118; + uVar61 = local_120 >> 3 & 0x1ff; + if ((local_118 == 1) && (uVar61 != 0)) { + uVar67 = 1; + local_508 = local_114; + uVar66 = uVar67; + } + else { + uVar67 = local_114; + uVar66 = 0; + } + uVar2 = local_120 & 7; + if (param_6 < 1) { + param_6 = 1; + } + uVar67 = uVar67 + uVar61 * uVar67; + if (((2 < local_11c) || (uVar2 != 5)) || ((int)param_2 < 1)) { + local_388 = 0; + local_380 = 0; + pcVar33 = (char *)String::allocate((String *)&local_388,0x2a); + uVar19 = s_data0_dims_<__2_&&_type____CV_32_004770a0._40_2_; + uVar21 = s_data0_dims_<__2_&&_type____CV_32_004770a0._24_8_; + uVar20 = s_data0_dims_<__2_&&_type____CV_32_004770a0._16_8_; + uVar13 = s_data0_dims_<__2_&&_type____CV_32_004770a0._8_8_; + uVar9 = s_data0_dims_<__2_&&_type____CV_32_004770a0._0_8_; + /* try { // try from 003c2798 to 004c279b has its CatchHandler @ 003c2750 */ + /* try { // try from 003c27b4 to 004c27b7 has its CatchHandler @ 003c3050 */ + *(undefined8 *)(pcVar33 + 0x20) = s_data0_dims_<__2_&&_type____CV_32_004770a0._32_8_; + *(undefined2 *)(pcVar33 + 0x28) = uVar19; + *(undefined8 *)pcVar33 = uVar9; + *(undefined8 *)(pcVar33 + 8) = uVar13; + *(undefined8 *)(pcVar33 + 0x10) = uVar20; + *(undefined8 *)(pcVar33 + 0x18) = uVar21; + error(-0xd7,(String *)&local_388, + "double cv::kmeans(cv::InputArray, int, cv::InputOutputArray, cv::TermCriteria, int, int, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/kmeans.cpp",0xe6); + String::deallocate((String *)&local_388); + } + if ((int)local_508 < (int)param_2) { + local_378 = 0; + local_370 = 0; + puVar37 = (undefined4 *)String::allocate((String *)&local_378,6); + uVar19 = DAT_00477114; + /* try { // try from 003c2738 to 004c273b has its CatchHandler @ 003c24c0 */ + /* try { // try from 003c2744 to 004c2747 has its CatchHandler @ 003c25bc */ + /* catch() { ... } // from try @ 003c2798 with catch @ 003c2750 + catch() { ... } // from try @ 003c2eb0 with catch @ 003c2750 + catch() { ... } // from try @ 003c3074 with catch @ 003c2750 */ + *puVar37 = DAT_00477110; + *(undefined2 *)(puVar37 + 1) = uVar19; + error(-0xd7,(String *)&local_378, + "double cv::kmeans(cv::InputArray, int, cv::InputOutputArray, cv::TermCriteria, int, int, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/kmeans.cpp",0xe7); + String::deallocate((String *)&local_378); + } + uVar65 = (ulong)(int)uVar67; + local_b0 = local_110; + uVar29 = local_d0; + if (uVar66 != 0) { + uVar29 = uVar65 << 2; + } + uVar68 = uVar65 * 4; + local_c0 = 0x42ff0005; + local_bc = 2; + local_80 = &local_b8; + local_78 = local_70; + local_b8 = local_508; + local_a0 = 0; + local_98 = (float *)0x0; + local_90 = 0; + local_88 = 0; + local_70[1] = 0; + local_70[0] = 0; + local_b4 = uVar67; + local_a8 = local_b0; + if (uVar29 == 0) { + /* catch() { ... } // from try @ 003c1970 with catch @ 003c26f4 + catch() { ... } // from try @ 003c2198 with catch @ 003c26f4 + catch() { ... } // from try @ 003c2260 with catch @ 003c26f4 + catch() { ... } // from try @ 003c2708 with catch @ 003c26f4 */ + local_c0 = 0x42ff4005; + local_a0 = 0; + } + else { + if (local_508 == 1) { + local_c0 = 0x42ff4005; + } + else { + if ((uVar29 & 3) != 0) { + local_338[0] = 0; + local_338[1] = 0; + pcVar33 = (char *)String::allocate((String *)local_338,0x1f); + cVar24 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar19 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar18 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar13 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar9 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar33 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar33 + 0x18) = uVar18; + *(undefined2 *)(pcVar33 + 0x1c) = uVar19; + pcVar33[0x1e] = cVar24; + *(undefined8 *)pcVar33 = uVar9; + *(undefined8 *)(pcVar33 + 8) = uVar13; + error(-0xd,(String *)local_338,"cv::Mat::Mat(int, int, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp", + 0x19d); + String::deallocate((String *)local_338); + } + if (uVar29 != uVar68) { + local_a0 = uVar68 - uVar29; + uVar68 = uVar29; + goto LAB_003bfdf8; + } + local_c0 = local_c0 | 0x4000; + } + local_a0 = 0; + } +LAB_003bfdf8: + *local_78 = uVar68; + local_98 = (float *)((long)local_a8 + (long)(int)local_b8 * uVar68); + local_78[1] = 4; + local_a0 = (long)local_98 + local_a0; + _OutputArray::create(param_3_00,local_508,1,4,-1,true,0); + local_2b8 = &local_2b0; + local_2c0 = &uStack_2f8; + uStack_2a8 = 0; + local_2b0 = 0; + uStack_2f8 = _UNK_003c2918; + local_300 = _DAT_003c2910; + local_2f0 = 0; + local_2e8 = 0; + local_2e0 = 0; + local_2d8 = 0; + local_2d0 = 0; + local_2c8 = 0; + iVar25 = _InputArray::kind((_InputArray *)param_3_00); + if (iVar25 == 0x10000) { + pMVar47 = *(Mat **)(param_3_00 + 8); + local_20 = &local_58; + local_18 = &local_10; + local_60 = *(uint *)pMVar47; + local_5c = *(int *)(pMVar47 + 4); + local_58 = *(uint *)(pMVar47 + 8); + local_54 = *(int *)(pMVar47 + 0xc); + local_50 = *(long *)(pMVar47 + 0x10); + local_48 = *(undefined8 *)(pMVar47 + 0x18); + local_40 = *(undefined8 *)(pMVar47 + 0x20); + /* catch() { ... } // from try @ 003c1a44 with catch @ 003c2598 */ + local_38 = *(undefined8 *)(pMVar47 + 0x28); + local_30 = *(undefined8 *)(pMVar47 + 0x30); + local_28 = *(long *)(pMVar47 + 0x38); + /* try { // try from 003c25b4 to 004c25b7 has its CatchHandler @ 003c25bc */ + /* catch() { ... } // from try @ 003c19e8 with catch @ 003c25bc + catch() { ... } // from try @ 003c1a4c with catch @ 003c25bc + catch() { ... } // from try @ 003c2114 with catch @ 003c25bc + catch() { ... } // from try @ 003c25b4 with catch @ 003c25bc + catch() { ... } // from try @ 003c2744 with catch @ 003c25bc */ + local_8 = 0; + local_10 = 0; + if (local_28 != 0) { + piVar59 = (int *)(local_28 + 0x14); + do { + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = *piVar59 + 1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + } + if (*(int *)(pMVar47 + 4) < 3) { + local_10 = **(undefined8 **)(pMVar47 + 0x48); + local_8 = (*(undefined8 **)(pMVar47 + 0x48))[1]; + } + else { + local_5c = 0; + Mat::copySize((Mat *)&local_60,pMVar47); + } + } + else { + _InputArray::getMat_((int)param_3_00); + } + local_4e0 = (Mat *)&local_60; + if ((param_7 & 1) != 0) { + if (((local_54 != 1) && (local_58 != 1)) || + ((local_508 != local_54 * local_58 || + (((local_60 & 0xfff) != 4 || ((local_60 >> 0xe & 1) == 0)))))) { + local_368 = 0; + local_360 = 0; + __dest = (void *)String::allocate((String *)&local_368,0x98); + memcpy(__dest,&DAT_00477118,0x98); + error(-0xd7,(String *)&local_368, + "double cv::kmeans(cv::InputArray, int, cv::InputOutputArray, cv::TermCriteria, int, int, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/kmeans.cpp",0xf3); + String::deallocate((String *)&local_368); + } + local_170 = (float *)0x0; + local_180 = (undefined **)CONCAT44(local_180._4_4_,0x2010000); + pMStack_178 = (Mat *)&local_300; + Mat::copyTo(local_4e0,(_OutputArray *)&local_180); + goto LAB_003bff50; + } + if ((local_54 == 1) || (local_58 == 1)) { + /* try { // try from 003c24d4 to 004c24d7 has its CatchHandler @ 003c24c0 */ + if ((local_508 == local_54 * local_58) && + (((local_60 & 0xfff) == 4 && ((local_60 >> 0xe & 1) != 0)))) { + uVar61 = 4; + } + else if ((2 < local_5c) || + ((((local_54 != 1 || (local_508 != local_58)) || ((local_60 & 0xfff) != 4)) || + (uVar61 = 4, local_50 == 0)))) goto LAB_003c2440; + } + else { +LAB_003c2440: + local_3b8[0] = local_508; + local_3b8[1] = 1; + Mat::create(local_4e0,2,(int *)local_3b8,4); + uVar61 = local_60 & 0xfff; + } + if (((2 < local_300._4_4_) || (*local_20 != (uint)uStack_2f8)) || + ((local_20[1] != uStack_2f8._4_4_ || + ((((uint)local_300 & 0xfff) != uVar61 || (local_2f0 == 0)))))) { + local_3b8[2] = *local_20; + local_3ac = local_20[1]; + Mat::create((Mat *)&local_300,2,(int *)(local_3b8 + 2),uVar61); + /* catch() { ... } // from try @ 003c1ac4 with catch @ 003c24c0 + catch() { ... } // from try @ 003c2090 with catch @ 003c24c0 + catch() { ... } // from try @ 003c24d4 with catch @ 003c24c0 + catch() { ... } // from try @ 003c2738 with catch @ 003c24c0 */ + } +LAB_003bff50: + lVar22 = local_2f0; + local_258 = local_250; + local_260 = &pMStack_298; + pMStack_298 = _UNK_003c2918; + local_2a0 = _DAT_003c2910; + local_290 = (float *)0x0; + local_288 = 0; + local_280 = 0; + local_278 = 0; + local_250[1] = 0; + local_250[0] = 0; + local_270 = 0; + local_268 = 0; + local_3a8 = param_2; + local_3a4 = uVar67; + /* try { // try from 003bffb0 to 004bffb3 has its CatchHandler @ 003c0470 */ + Mat::create((Mat *)&local_2a0,2,(int *)&local_3a8,uVar2); + pMStack_238 = _UNK_003c2918; + local_240 = _DAT_003c2910; + local_1f8 = local_1f0; + local_200 = &pMStack_238; + local_230 = 0; + local_228 = 0; + local_220 = 0; + local_1f0[1] = 0; + local_1f0[0] = 0; + local_218 = 0; + local_210 = 0; + local_208 = 0; + local_3a0 = param_2; + local_39c = uVar67; + Mat::create((Mat *)&local_240,2,(int *)&local_3a0,uVar2); + pMStack_1d8 = _UNK_003c2918; + local_1e0 = _DAT_003c2910; + local_198 = &local_190; + /* try { // try from 003c0024 to 004c0027 has its CatchHandler @ 003c03c4 */ + local_1a0 = &pMStack_1d8; + local_1d0 = (float *)0x0; + local_1c8 = 0; + local_1c0 = 0; + uStack_188 = 0; + local_190 = 0; + local_1b8 = 0; + local_1b0 = 0; + local_1a8 = 0; + local_398 = 1; + local_394 = uVar67; + Mat::create((Mat *)&local_1e0,2,&local_398,uVar2); + uVar29 = (ulong)(int)param_2; + local_518 = (int *)0x0; + if (uVar29 != 0) { + if (0x3fffffffffffffff < uVar29) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + /* catch() { ... } // from try @ 003c0510 with catch @ 003c04e0 + catch() { ... } // from try @ 003c07d4 with catch @ 003c04e0 + catch() { ... } // from try @ 003c0894 with catch @ 003c04e0 */ + local_518 = operator_new(uVar29 << 2); + memset(local_518,0,uVar29 << 2); + } + if (uVar65 == 0) { + pfVar49 = (float *)0x0; + local_4c8 = (float *)0x0; + } + else { + if (0x1fffffffffffffff < uVar65) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + local_4c8 = operator_new(uVar65 * 8); + pfVar49 = local_4c8 + uVar65 * 2; + pfVar31 = local_4c8; + uVar68 = uVar65; + do { + if (pfVar31 != (float *)0x0) { + *pfVar31 = 0.0; + pfVar31[1] = 0.0; + } + uVar68 = uVar68 - 1; + pfVar31 = pfVar31 + 2; + } while (uVar68 != 0); + } + /* try { // try from 003c0098 to 004c009b has its CatchHandler @ 003c0468 */ + puVar30 = (ulong *)theRNG(); + local_3d0 = (uint)param_3; + if ((local_3d0 >> 1 & 1) == 0) { + uVar74 = (undefined1)DAT_003c28f8; + uVar77 = (undefined1)((ulong)DAT_003c28f8 >> 8); + uVar79 = (undefined1)((ulong)DAT_003c28f8 >> 0x10); + uVar81 = (undefined1)((ulong)DAT_003c28f8 >> 0x18); + uVar83 = (undefined1)((ulong)DAT_003c28f8 >> 0x20); + uVar85 = (undefined1)((ulong)DAT_003c28f8 >> 0x28); + uVar87 = (undefined1)((ulong)DAT_003c28f8 >> 0x30); + uVar89 = (undefined1)((ulong)DAT_003c28f8 >> 0x38); + } + else if (param_5 < 0.0) { + uVar74 = 0; + uVar77 = 0; + uVar79 = 0; + uVar81 = 0; + uVar83 = 0; + uVar85 = 0; + uVar87 = 0; + uVar89 = 0; + } + else { + param_5 = param_5 * param_5; + uVar74 = SUB81(param_5,0); + uVar77 = (undefined1)((ulong)param_5 >> 8); + uVar79 = (undefined1)((ulong)param_5 >> 0x10); + uVar81 = (undefined1)((ulong)param_5 >> 0x18); + uVar83 = (undefined1)((ulong)param_5 >> 0x20); + uVar85 = (undefined1)((ulong)param_5 >> 0x28); + uVar87 = (undefined1)((ulong)param_5 >> 0x30); + uVar89 = (undefined1)((ulong)param_5 >> 0x38); + } + iStack_3cc = (int)(param_3 >> 0x20); + if ((param_3 & 1) != 0) { + local_180 = (undefined **)CONCAT44(local_180._4_4_,2); + } + local_48c = param_6; + if (param_2 == 1) { + local_48c = 1; + } + if (0 < (int)uVar67) { + /* try { // try from 003c0120 to 004c0123 has its CatchHandler @ 003c0458 */ + if ((local_b0 < local_4c8 + uVar65 * 2 && local_4c8 < local_b0 + uVar65) || (uVar67 < 7)) { + lVar53 = 0; + pfVar31 = local_4c8; + do { + fVar102 = local_b0[lVar53]; + lVar53 = lVar53 + 1; + *pfVar31 = fVar102; + /* try { // try from 003c07d4 to 004c07f7 has its CatchHandler @ 003c04e0 */ + pfVar31[1] = fVar102; + pfVar31 = pfVar31 + 2; + } while ((int)lVar53 < (int)uVar67); + } + else { + /* try { // try from 003c014c to 004c019f has its CatchHandler @ 003bf8f0 */ + uVar66 = 0; + uVar61 = (uVar67 - 4 >> 2) + 1; + uVar2 = uVar61 * 4; + pfVar31 = local_b0; + pfVar35 = local_4c8; + do { + uVar66 = uVar66 + 1; + fVar102 = (float)*(undefined8 *)pfVar31; + fVar101 = (float)((ulong)*(undefined8 *)pfVar31 >> 0x20); + fVar10 = (float)*(undefined8 *)(pfVar31 + 2); + fVar12 = (float)((ulong)*(undefined8 *)(pfVar31 + 2) >> 0x20); + *pfVar35 = fVar102; + pfVar35[1] = fVar102; + pfVar35[2] = fVar101; + pfVar35[3] = fVar101; + pfVar35[4] = fVar10; + pfVar35[5] = fVar10; + pfVar35[6] = fVar12; + pfVar35[7] = fVar12; + pfVar35 = pfVar35 + 8; + pfVar31 = pfVar31 + 4; + } while (uVar66 < uVar61); + if (uVar2 != uVar67) { + lVar53 = (long)(int)uVar2; + fVar102 = local_b0[lVar53]; + local_4c8[lVar53 * 2] = fVar102; + local_4c8[lVar53 * 2 + 1] = fVar102; + if ((int)(uVar2 + 1) < (int)uVar67) { + lVar53 = (long)(int)(uVar2 + 1); + fVar102 = local_b0[lVar53]; + local_4c8[lVar53 * 2] = fVar102; + local_4c8[lVar53 * 2 + 1] = fVar102; + if ((int)(uVar2 + 2) < (int)uVar67) { + lVar53 = (long)(int)(uVar2 + 2); + fVar102 = local_b0[lVar53]; + local_4c8[lVar53 * 2] = fVar102; + local_4c8[lVar53 * 2 + 1] = fVar102; + } + } + } + } + } + if (1 < (int)local_508) { + uVar61 = 1; + uVar66 = (uVar67 - 4 >> 2) + 1; + uVar65 = *local_78; + uVar3 = uVar66 * 4; + uVar2 = uVar3; + if (uVar67 - 1 < 3) { + uVar2 = 0; + } + iVar25 = uVar2 + 1; + iVar28 = uVar2 + 2; + pfVar31 = local_4c8 + (long)(int)uVar2 * 2; + pfVar35 = local_4c8 + (long)iVar25 * 2; + pfVar43 = local_4c8 + (long)iVar28 * 2; + pfVar38 = local_b0; + do { + pfVar38 = (float *)((long)pfVar38 + uVar65); + if (0 < (int)uVar67) { + if ((local_4c8 < pfVar38 + uVar67 && pfVar38 < local_4c8 + (ulong)uVar67 * 2) || + (uVar67 < 4)) { + lVar53 = 0; + pfVar54 = local_4c8; + do { + fVar102 = pfVar38[lVar53]; + uVar75 = SUB41(fVar102,0); + uVar78 = (undefined1)((uint)fVar102 >> 8); + uVar80 = (undefined1)((uint)fVar102 >> 0x10); + /* try { // try from 003c0800 to 004c0803 has its CatchHandler @ 003c0898 */ + fVar101 = fVar102; + if (*pfVar54 <= fVar102) { + /* try { // try from 003c080c to 004c0823 has its CatchHandler @ 003c08a0 */ + fVar101 = *pfVar54; + } + fVar10 = pfVar54[1]; + *pfVar54 = fVar101; + uVar82 = (char)((uint)fVar102 >> 0x18); + if (fVar102 <= fVar10) { + uVar75 = SUB41(fVar10,0); + uVar78 = (undefined1)((uint)fVar10 >> 8); + uVar80 = (undefined1)((uint)fVar10 >> 0x10); + uVar82 = (char)((uint)fVar10 >> 0x18); + } + lVar53 = lVar53 + 1; + /* catch() { ... } // from try @ 003c05fc with catch @ 003c0830 + catch() { ... } // from try @ 003c0678 with catch @ 003c0830 */ + pfVar54[1] = (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + pfVar54 = pfVar54 + 2; + } while ((int)lVar53 < (int)uVar67); + } + else { + if (2 < uVar67 - 1) { + uVar55 = 0; + pfVar54 = local_4c8; + pfVar63 = pfVar38; + do { + fVar12 = pfVar54[1]; + fVar102 = pfVar54[2]; + fVar101 = pfVar54[3]; + uVar90 = SUB41(fVar101,0); + uVar91 = (undefined1)((uint)fVar101 >> 8); + uVar92 = (undefined1)((uint)fVar101 >> 0x10); + uVar93 = (undefined1)((uint)fVar101 >> 0x18); + fVar101 = pfVar54[4]; + fVar14 = pfVar54[5]; + uVar94 = (undefined1)((uint)fVar14 >> 8); + uVar95 = (undefined1)((uint)fVar14 >> 0x10); + uVar96 = (undefined1)((uint)fVar14 >> 0x18); + fVar10 = pfVar54[6]; + fVar15 = pfVar54[7]; + uVar97 = SUB41(fVar15,0); + uVar98 = (undefined1)((uint)fVar15 >> 8); + uVar99 = (undefined1)((uint)fVar15 >> 0x10); + uVar100 = (undefined1)((uint)fVar15 >> 0x18); + uVar55 = uVar55 + 1; + uVar9 = *(undefined8 *)(pfVar63 + 2); + uVar75 = (undefined1)((ulong)uVar9 >> 8); + uVar78 = (undefined1)((ulong)uVar9 >> 0x10); + uVar80 = (undefined1)((ulong)uVar9 >> 0x18); + uVar82 = (undefined1)((ulong)uVar9 >> 0x20); + uVar84 = (undefined1)((ulong)uVar9 >> 0x28); + uVar86 = (undefined1)((ulong)uVar9 >> 0x30); + uVar88 = (undefined1)((ulong)uVar9 >> 0x38); + uVar13 = CONCAT17((char)((uint)fVar102 >> 0x18), + CONCAT16((char)((uint)fVar102 >> 0x10), + CONCAT15((char)((uint)fVar102 >> 8), + CONCAT14(SUB41(fVar102,0),*pfVar54)))); + auVar16[8] = SUB41(fVar101,0); + auVar16._0_8_ = uVar13; + auVar16[9] = (char)((uint)fVar101 >> 8); + auVar16[10] = (char)((uint)fVar101 >> 0x10); + auVar16[0xb] = (char)((uint)fVar101 >> 0x18); + auVar108[0xc] = SUB41(fVar10,0); + auVar108._0_12_ = auVar16; + auVar108[0xd] = (char)((uint)fVar10 >> 8); + auVar108[0xe] = (char)((uint)fVar10 >> 0x10); + auVar108[0xf] = (char)((uint)fVar10 >> 0x18); + auVar105[4] = uVar90; + auVar105._0_4_ = fVar12; + auVar105[5] = uVar91; + auVar105[6] = uVar92; + auVar105[7] = uVar93; + auVar105[8] = SUB41(fVar14,0); + auVar11[4] = uVar90; + auVar11._0_4_ = fVar12; + auVar11[5] = uVar91; + auVar11[6] = uVar92; + auVar11[7] = uVar93; + auVar11[8] = SUB41(fVar14,0); + fVar102 = (float)*(undefined8 *)pfVar63; + fVar101 = (float)((ulong)*(undefined8 *)pfVar63 >> 0x20); + fVar10 = (float)((ulong)uVar9 >> 0x20); + auVar107._12_4_ = -(uint)(fVar10 < auVar108._12_4_); + auVar107._8_4_ = -(uint)((float)uVar9 < auVar16._8_4_); + auVar104._4_4_ = + -(uint)((float)(CONCAT17(uVar93,CONCAT16(uVar92,CONCAT15(uVar91,CONCAT14(uVar90, + fVar12)))) >> 0x20) < fVar101); + auVar104._0_4_ = -(uint)(fVar12 < fVar102); + auVar104._12_4_ = + -(uint)((float)(CONCAT17(uVar100,CONCAT16(uVar99,CONCAT15(uVar98,CONCAT14(uVar97, + fVar14)))) >> 0x20) < fVar10); + auVar104._8_4_ = -(uint)(fVar14 < (float)uVar9); + auVar107._4_4_ = -(uint)(fVar101 < (float)((ulong)uVar13 >> 0x20)); + auVar107._0_4_ = -(uint)(fVar102 < *pfVar54); + auVar6[9] = uVar75; + auVar6._0_9_ = *(unkbyte9 *)pfVar63; + auVar6[10] = uVar78; + auVar6[0xb] = uVar80; + auVar6[0xc] = uVar82; + auVar6[0xd] = uVar84; + auVar6[0xe] = uVar86; + auVar6[0xf] = uVar88; + auVar108 = auVar108 ^ (auVar108 ^ auVar6) & auVar107; + auVar7[9] = uVar75; + auVar7._0_9_ = *(unkbyte9 *)pfVar63; + auVar7[10] = uVar78; + auVar7[0xb] = uVar80; + auVar7[0xc] = uVar82; + auVar7[0xd] = uVar84; + auVar7[0xe] = uVar86; + auVar7[0xf] = uVar88; + auVar11[9] = uVar94; + auVar11[10] = uVar95; + auVar11[0xb] = uVar96; + auVar11[0xc] = uVar97; + auVar11[0xd] = uVar98; + auVar11[0xe] = uVar99; + auVar11[0xf] = uVar100; + auVar105[9] = uVar94; + auVar105[10] = uVar95; + auVar105[0xb] = uVar96; + auVar105[0xc] = uVar97; + auVar105[0xd] = uVar98; + auVar105[0xe] = uVar99; + auVar105[0xf] = uVar100; + auVar105 = auVar105 ^ (auVar11 ^ auVar7) & auVar104; + local_550 = auVar108._0_4_; + fStack_54c = auVar108._4_4_; + fStack_548 = auVar108._8_4_; + fStack_544 = auVar108._12_4_; + local_540 = auVar105._0_4_; + fStack_53c = auVar105._4_4_; + fStack_538 = auVar105._8_4_; + fStack_534 = auVar105._12_4_; + *pfVar54 = local_550; + pfVar54[1] = local_540; + pfVar54[2] = fStack_54c; + pfVar54[3] = fStack_53c; + pfVar54[4] = fStack_548; + pfVar54[5] = fStack_538; + pfVar54[6] = fStack_544; + pfVar54[7] = fStack_534; + pfVar54 = pfVar54 + 8; + pfVar63 = pfVar63 + 4; + } while (uVar55 < uVar66); + if (uVar3 == uVar67) goto LAB_003c03a8; + } + fVar102 = pfVar38[(int)uVar2]; + uVar75 = SUB41(fVar102,0); + uVar78 = (undefined1)((uint)fVar102 >> 8); + uVar80 = (undefined1)((uint)fVar102 >> 0x10); + fVar101 = fVar102; + if (*pfVar31 <= fVar102) { + fVar101 = *pfVar31; + } + fVar10 = pfVar31[1]; + *pfVar31 = fVar101; + uVar82 = (char)((uint)fVar102 >> 0x18); + if (fVar102 <= fVar10) { + uVar75 = SUB41(fVar10,0); + uVar78 = (undefined1)((uint)fVar10 >> 8); + uVar80 = (undefined1)((uint)fVar10 >> 0x10); + uVar82 = (char)((uint)fVar10 >> 0x18); + } + pfVar31[1] = (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + if (iVar25 < (int)uVar67) { + /* try { // try from 003c033c to 004c033f has its CatchHandler @ 003c0458 */ + fVar102 = pfVar38[iVar25]; + uVar75 = SUB41(fVar102,0); + uVar78 = (undefined1)((uint)fVar102 >> 8); + uVar80 = (undefined1)((uint)fVar102 >> 0x10); + fVar101 = fVar102; + /* try { // try from 003c0348 to 004c034b has its CatchHandler @ 003c03c4 */ + if (*pfVar35 <= fVar102) { + fVar101 = *pfVar35; + } + /* try { // try from 003c0354 to 004c0357 has its CatchHandler @ 003c0468 */ + fVar10 = pfVar35[1]; + *pfVar35 = fVar101; + uVar82 = (char)((uint)fVar102 >> 0x18); + if (fVar102 <= fVar10) { + /* try { // try from 003c0364 to 004c0367 has its CatchHandler @ 003bf8f0 */ + uVar75 = SUB41(fVar10,0); + uVar78 = (undefined1)((uint)fVar10 >> 8); + uVar80 = (undefined1)((uint)fVar10 >> 0x10); + uVar82 = (char)((uint)fVar10 >> 0x18); + } + pfVar35[1] = (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + if (iVar28 < (int)uVar67) { + fVar102 = pfVar38[iVar28]; + uVar75 = SUB41(fVar102,0); + uVar78 = (undefined1)((uint)fVar102 >> 8); + uVar80 = (undefined1)((uint)fVar102 >> 0x10); + fVar101 = fVar102; + if (*pfVar43 <= fVar102) { + fVar101 = *pfVar43; + } + fVar10 = pfVar43[1]; + *pfVar43 = fVar101; + uVar82 = (char)((uint)fVar102 >> 0x18); + if (fVar102 <= fVar10) { + uVar75 = SUB41(fVar10,0); + uVar78 = (undefined1)((uint)fVar10 >> 8); + uVar80 = (undefined1)((uint)fVar10 >> 0x10); + uVar82 = (char)((uint)fVar10 >> 0x18); + } + pfVar43[1] = (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + } + } + } + } +LAB_003c03a8: + uVar61 = uVar61 + 1; + } while (uVar61 != local_508); + } + dVar17 = DAT_003c2900; + local_4e4 = uVar67 - 1; + uVar2 = uVar67 - 4 >> 2; + uVar61 = uVar2 + 1; + /* try { // try from 003c0894 to 004c0897 has its CatchHandler @ 003c04e0 */ + uVar65 = (long)pfVar49 - (long)local_4c8 >> 3; + /* catch() { ... } // from try @ 003c052c with catch @ 003c0898 + catch() { ... } // from try @ 003c0760 with catch @ 003c0898 + catch() { ... } // from try @ 003c0800 with catch @ 003c0898 */ + uVar66 = uVar61 * 4; + /* catch() { ... } // from try @ 003c06ec with catch @ 003c08a0 + catch() { ... } // from try @ 003c080c with catch @ 003c08a0 */ + /* catch() { ... } // from try @ 003c0670 with catch @ 003c08a8 */ + if ((int)(uVar67 - 3) < 1) { + uVar66 = 0; + } + uVar68 = NEON_shl(uVar29,2); + /* catch() { ... } // from try @ 003c08f0 with catch @ 003c08bc + catch() { ... } // from try @ 003c0bac with catch @ 003c08bc + catch() { ... } // from try @ 003c0c68 with catch @ 003c08bc */ + uVar3 = uVar66 + 1; + uVar4 = uVar67 - uVar66; + cVar24 = (char)((int)uVar66 >> 0x1f); + /* try { // try from 003c08f0 to 004c08f3 has its CatchHandler @ 003c08bc */ + lVar53 = NEON_shl(CONCAT17(cVar24,CONCAT16(cVar24,CONCAT15(cVar24,(int5)(int)uVar66))),2); + /* try { // try from 003c090c to 004c090f has its CatchHandler @ 003c0c6c */ + uVar55 = uVar66 + 2; + uVar39 = -(ulong)(uVar3 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar3 << 2; + dVar112 = 0.0; + uVar40 = -(ulong)(uVar55 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar55 << 2; + local_490 = 0; + dVar113 = DAT_003c2900; +LAB_003c096c: + local_504 = 0; + dVar110 = dVar17; + do { + swap((Mat *)&local_2a0,(Mat *)&local_240); + pfVar31 = local_b0; + uVar62 = local_b4; + uVar26 = local_b8; + fVar102 = DAT_003c2928; + if ((local_504 == 0) && (0 < local_490 || (param_7 & 1) != 1)) { + if ((param_7 & 2) == 0) { + if (0 < (int)param_2) { + lVar58 = 0; + /* try { // try from 003c09e0 to 004c0a07 has its CatchHandler @ 003c0c04 */ + do { + lVar57 = *local_258; + if (uVar65 != 0) { + uVar32 = *puVar30; + uVar41 = 0; + pfVar31 = local_4c8; + do { + uVar32 = (uVar32 >> 0x20) + (uVar32 & 0xffffffff) * 0xf83f630a; + *(float *)((long)local_290 + uVar41 * 4 + lVar58 * lVar57) = + *pfVar31 + + (pfVar31[1] - *pfVar31) * + ((float)(uVar32 & 0xffffffff) * fVar102 * ((1.0 / (float)uVar65) * 2.0 + 1.0) - + 1.0 / (float)uVar65); + /* try { // try from 003c0a48 to 004c0a4b has its CatchHandler @ 003c0c7c */ + uVar41 = uVar41 + 1; + pfVar31 = pfVar31 + 2; + /* try { // try from 003c0a50 to 004c0a53 has its CatchHandler @ 003c0c04 */ + } while (uVar41 != uVar65); + *puVar30 = uVar32; + } + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)param_2); + } + } + else { + local_4a8 = (int *)0x0; + uVar41 = local_70[0] >> 2; + if (uVar29 != 0) { + if (0x3fffffffffffffff < uVar29) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + /* try { // try from 003c21c8 to 004c2227 has its CatchHandler @ 003c1900 */ + local_4a8 = operator_new(uVar68); + memset(local_4a8,0,uVar68); + } + local_4b0 = (float *)0x0; + uVar32 = (ulong)(int)(uVar26 * 3); + if (uVar32 != 0) { + if (0x3fffffffffffffff < uVar32) { + /* WARNING: Subroutine does not return */ + FUN_0040f0e4(); + } + /* try { // try from 003c2198 to 004c219b has its CatchHandler @ 003c26f4 */ + local_4b0 = operator_new(uVar32 << 2); + memset(local_4b0,0,uVar32 << 2); + } + pfVar49 = local_4b0 + (int)uVar26; + uVar32 = (*puVar30 >> 0x20) + (*puVar30 & 0xffffffff) * 0xf83f630a; + pMVar47 = (Mat *)(local_4b0 + (long)(int)uVar26 * 2); + *puVar30 = uVar32; + uVar51 = 0; + if (uVar26 != 0) { + uVar51 = (uint)uVar32 / uVar26; + } + local_570 = SUB81(pfVar49,0); + uStack_56f = (undefined1)((ulong)pfVar49 >> 8); + uStack_56e = (undefined1)((ulong)pfVar49 >> 0x10); + uStack_56d = (undefined1)((ulong)pfVar49 >> 0x18); + uStack_56c = (undefined1)((ulong)pfVar49 >> 0x20); + uStack_56b = (undefined1)((ulong)pfVar49 >> 0x28); + uStack_56a = (undefined1)((ulong)pfVar49 >> 0x30); + uStack_569 = (undefined1)((ulong)pfVar49 >> 0x38); + iVar25 = (uint)uVar32 - uVar51 * uVar26; + *local_4a8 = iVar25; + if ((int)uVar26 < 1) { + dVar109 = 0.0; + } + else { + dVar109 = 0.0; + lVar58 = 0; + pfVar49 = pfVar31; + do { + if ((int)uVar62 < 1) { + uVar75 = 0; + uVar78 = 0; + uVar80 = 0; + uVar82 = 0; + uVar84 = 0; + uVar86 = 0; + uVar88 = 0; + uVar90 = 0; + fVar102 = 0.0; + } + else { + lVar57 = 0; + fVar102 = 0.0; + do { + pfVar35 = pfVar49 + lVar57; + lVar50 = lVar57 * 4; + lVar57 = lVar57 + 1; + fVar101 = *pfVar35 - *(float *)((long)pfVar31 + lVar50 + (long)iVar25 * uVar41 * 4); + fVar102 = fVar102 + fVar101 * fVar101; + } while ((int)lVar57 < (int)uVar62); + dVar111 = (double)fVar102; + uVar75 = SUB81(dVar111,0); + uVar78 = (undefined1)((ulong)dVar111 >> 8); + uVar80 = (undefined1)((ulong)dVar111 >> 0x10); + uVar82 = (undefined1)((ulong)dVar111 >> 0x18); + uVar84 = (undefined1)((ulong)dVar111 >> 0x20); + uVar86 = (undefined1)((ulong)dVar111 >> 0x28); + uVar88 = (undefined1)((ulong)dVar111 >> 0x30); + uVar90 = (undefined1)((ulong)dVar111 >> 0x38); + } + pfVar49 = pfVar49 + uVar41; + dVar109 = dVar109 + (double)CONCAT17(uVar90,CONCAT16(uVar88,CONCAT15(uVar86,CONCAT14( + uVar84,CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11( + uVar78,uVar75))))))); + local_4b0[lVar58] = fVar102; + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)uVar26); + } + dVar111 = DAT_003c2920; + if (1 < (int)param_2) { + local_498 = local_4a8; + pfVar49 = local_4b0; +LAB_003c1dac: + local_524 = -1; + iVar25 = 3; + pMVar64 = pMVar47; + dVar114 = dVar17; + do { + uVar32 = (uVar32 >> 0x20) + (uVar32 & 0xffffffff) * 0xf83f630a; + uVar46 = (uVar32 >> 0x20) + (uVar32 & 0xffffffff) * 0xf83f630a; + *puVar30 = uVar46; + if ((int)(uVar26 - 1) < 1) { +LAB_003c1f0c: + local_150 = 0; + iVar28 = 0; + } + else { + dVar8 = (double)(uVar46 & 0xffffffff | uVar32 << 0x20) * dVar111 * dVar109 - + (double)*pfVar49; + uVar75 = SUB81(dVar8,0); + uVar78 = (undefined1)((ulong)dVar8 >> 8); + uVar80 = (undefined1)((ulong)dVar8 >> 0x10); + uVar82 = (undefined1)((ulong)dVar8 >> 0x18); + uVar84 = (undefined1)((ulong)dVar8 >> 0x20); + uVar86 = (undefined1)((ulong)dVar8 >> 0x28); + uVar88 = (undefined1)((ulong)dVar8 >> 0x30); + uVar90 = (undefined1)((ulong)dVar8 >> 0x38); + lVar58 = 1; + if (dVar8 <= 0.0) goto LAB_003c1f0c; + do { + local_150 = lVar58; + iVar28 = (int)local_150; + if ((int)(uVar26 - 1) <= iVar28) { + local_150 = (long)iVar28 * uVar41; + goto LAB_003c1e64; + } + dVar8 = (double)CONCAT17(uVar90,CONCAT16(uVar88,CONCAT15(uVar86,CONCAT14(uVar84, + CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78, + uVar75))))))) - (double)pfVar49[local_150]; + uVar75 = SUB81(dVar8,0); + uVar78 = (undefined1)((ulong)dVar8 >> 8); + uVar80 = (undefined1)((ulong)dVar8 >> 0x10); + uVar82 = (undefined1)((ulong)dVar8 >> 0x18); + uVar84 = (undefined1)((ulong)dVar8 >> 0x20); + uVar86 = (undefined1)((ulong)dVar8 >> 0x28); + uVar88 = (undefined1)((ulong)dVar8 >> 0x30); + uVar90 = (undefined1)((ulong)dVar8 >> 0x38); + lVar58 = local_150 + 1; + } while (0.0 < dVar8); + local_150 = local_150 * uVar41; + } +LAB_003c1e64: + local_170 = pfVar31; + local_328 = (undefined **)((ulong)uVar26 << 0x20); + local_180 = &PTR_FUN_004f79a0; + local_160 = CONCAT44(local_160._4_4_,uVar62); + pMStack_178 = pMVar64; + pfStack_168 = pfVar49; + local_158 = uVar41; + parallel_for_((Range *)&local_328,(ParallelLoopBody *)&local_180,-1.0); + local_180 = &PTR_FUN_004f79a0; + ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_180); + uVar75 = 0; + uVar78 = 0; + uVar80 = 0; + uVar82 = 0; + uVar84 = 0; + uVar86 = 0; + uVar88 = 0; + uVar90 = 0; + if (0 < (int)uVar26) { + lVar58 = 0; + do { + lVar57 = lVar58 * 4; + lVar58 = lVar58 + 1; + dVar8 = (double)CONCAT17(uVar90,CONCAT16(uVar88,CONCAT15(uVar86,CONCAT14(uVar84, + CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78, + uVar75))))))) + + (double)*(float *)(pMVar64 + lVar57); + uVar75 = SUB81(dVar8,0); + uVar78 = (undefined1)((ulong)dVar8 >> 8); + uVar80 = (undefined1)((ulong)dVar8 >> 0x10); + uVar82 = (undefined1)((ulong)dVar8 >> 0x18); + uVar84 = (undefined1)((ulong)dVar8 >> 0x20); + uVar86 = (undefined1)((ulong)dVar8 >> 0x28); + uVar88 = (undefined1)((ulong)dVar8 >> 0x30); + uVar90 = (undefined1)((ulong)dVar8 >> 0x38); + } while ((int)lVar58 < (int)uVar26); + } + bVar23 = false; + if (!NAN((double)CONCAT17(uVar90,CONCAT16(uVar88,CONCAT15(uVar86,CONCAT14(uVar84, + CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78, + uVar75)))))))) && !NAN(dVar114)) { + bVar23 = (double)CONCAT17(uVar90,CONCAT16(uVar88,CONCAT15(uVar86,CONCAT14(uVar84, + CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78, + uVar75))))))) < dVar114; + } + pMVar47 = pMVar64; + if (bVar23) { + pMVar47 = (Mat *)CONCAT17(uStack_569, + CONCAT16(uStack_56a, + CONCAT15(uStack_56b, + CONCAT14(uStack_56c, + CONCAT13(uStack_56d, + CONCAT12(uStack_56e, + CONCAT11( + uStack_56f,local_570))))))); + dVar114 = (double)CONCAT17(uVar90,CONCAT16(uVar88,CONCAT15(uVar86,CONCAT14(uVar84, + CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78, + uVar75))))))); + local_570 = SUB81(pMVar64,0); + uStack_56f = (undefined1)((ulong)pMVar64 >> 8); + uStack_56e = (undefined1)((ulong)pMVar64 >> 0x10); + uStack_56d = (undefined1)((ulong)pMVar64 >> 0x18); + uStack_56c = (undefined1)((ulong)pMVar64 >> 0x20); + uStack_56b = (undefined1)((ulong)pMVar64 >> 0x28); + uStack_56a = (undefined1)((ulong)pMVar64 >> 0x30); + uStack_569 = (undefined1)((ulong)pMVar64 >> 0x38); + local_524 = iVar28; + } + iVar25 = iVar25 + -1; + if (iVar25 == 0) goto LAB_003c1f18; + uVar32 = *puVar30; + pMVar64 = pMVar47; + } while( true ); + } + if (0 < (int)param_2) { +LAB_003c1f7c: + lVar58 = 0; + lVar57 = *local_258; + pfVar49 = local_290; + do { + /* try { // try from 003c2090 to 004c2093 has its CatchHandler @ 003c24c0 */ + while (lVar50 = (long)local_4a8[lVar58] * uVar41 * 4, (int)uVar62 < 1) { +LAB_003c2070: + lVar58 = lVar58 + 1; + pfVar49 = (float *)((long)pfVar49 + lVar57); + if ((int)param_2 <= (int)lVar58) goto LAB_003c2118; + } + pfVar35 = (float *)((long)pfVar31 + lVar50); + if (((float *)((long)pfVar31 + lVar50 + 0x10) <= pfVar49 || pfVar49 + 4 <= pfVar35) && + (0xb < uVar62)) { + uVar26 = -((uint)((ulong)pfVar35 >> 2) & 3) & 3; + uVar51 = uVar62; + if (uVar26 < uVar62) { + uVar51 = uVar26; + } + uVar26 = uVar51; + if ((uVar51 != 0) && (*pfVar49 = *(float *)((long)pfVar31 + lVar50), uVar51 != 1)) { + pfVar49[1] = pfVar35[1]; + if (uVar51 == 3) { + pfVar49[2] = pfVar35[2]; + } + else { + uVar26 = 2; + } + } + uVar70 = ((uVar62 - uVar51) - 4 >> 2) + 1; + uVar27 = 0; + iVar25 = uVar70 * 4; + puVar36 = (undefined8 *)((long)pfVar31 + (ulong)uVar51 * 4 + lVar50); + pfVar43 = pfVar49 + uVar51; + do { + uVar9 = *puVar36; + uVar27 = uVar27 + 1; + *(undefined8 *)(pfVar43 + 2) = puVar36[1]; + *(undefined8 *)pfVar43 = uVar9; + puVar36 = puVar36 + 2; + pfVar43 = pfVar43 + 4; + } while (uVar27 < uVar70); + uVar26 = iVar25 + uVar26; + if (uVar62 - uVar51 != iVar25) { + uVar32 = -(ulong)(uVar26 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar26 << 2; + *(undefined4 *)((long)pfVar49 + uVar32) = + *(undefined4 *)((long)pfVar31 + lVar50 + uVar32); + if (((int)(uVar26 + 1) < (int)uVar62) && + (*(undefined4 *)((long)pfVar49 + uVar32 + 4) = + *(undefined4 *)((long)pfVar31 + lVar50 + uVar32 + 4), + (int)(uVar26 + 2) < (int)uVar62)) { + *(undefined4 *)((long)pfVar49 + uVar32 + 8) = + *(undefined4 *)((long)pfVar35 + uVar32 + 8); + } + } + goto LAB_003c2070; + } + lVar50 = 0; + do { + pfVar49[lVar50] = pfVar35[lVar50]; + lVar50 = lVar50 + 1; + } while ((int)lVar50 < (int)uVar62); + lVar58 = lVar58 + 1; + pfVar49 = (float *)((long)pfVar49 + lVar57); + /* try { // try from 003c2114 to 004c2117 has its CatchHandler @ 003c25bc */ + } while ((int)lVar58 < (int)param_2); + } +LAB_003c2118: + if (local_4b0 != (float *)0x0) { + operator_delete(local_4b0); + } + operator_delete(local_4a8); + } + } + else { + /* catch() { ... } // from try @ 003c09e0 with catch @ 003c0c04 + catch() { ... } // from try @ 003c0a50 with catch @ 003c0c04 */ + if ((local_504 == 0 && local_490 == 0) && (((param_7 & 1) != 0 && (0 < (int)local_508)))) { + lVar58 = 0; + do { + while (*(uint *)(lVar22 + lVar58 * 4) < param_2) { + lVar58 = lVar58 + 1; + if ((int)local_508 <= (int)lVar58) goto LAB_003c0cc4; + } + /* try { // try from 003c0c68 to 004c0c6b has its CatchHandler @ 003c08bc */ + /* catch() { ... } // from try @ 003c090c with catch @ 003c0c6c + catch() { ... } // from try @ 003c0b38 with catch @ 003c0c6c + catch() { ... } // from try @ 003c0bd4 with catch @ 003c0c6c */ + local_358 = 0; + local_350 = 0; + /* catch() { ... } // from try @ 003c0ac4 with catch @ 003c0c74 + catch() { ... } // from try @ 003c0be0 with catch @ 003c0c74 */ + pcVar33 = (char *)String::allocate((String *)&local_358,0x21); + uVar21 = s__unsigned_labels_i__<_(unsigned)_004771b8._24_8_; + uVar20 = s__unsigned_labels_i__<_(unsigned)_004771b8._16_8_; + uVar13 = s__unsigned_labels_i__<_(unsigned)_004771b8._8_8_; + uVar9 = s__unsigned_labels_i__<_(unsigned)_004771b8._0_8_; + /* catch() { ... } // from try @ 003c0a48 with catch @ 003c0c7c */ + pcVar33[0x20] = s__unsigned_labels_i__<_(unsigned)_004771b8[0x20]; + *(undefined8 *)pcVar33 = uVar9; + *(undefined8 *)(pcVar33 + 8) = uVar13; + *(undefined8 *)(pcVar33 + 0x10) = uVar20; + *(undefined8 *)(pcVar33 + 0x18) = uVar21; + error(-0xd7,(String *)&local_358, + "double cv::kmeans(cv::InputArray, int, cv::InputOutputArray, cv::TermCriteria, int, int, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/kmeans.cpp",0x13f); + String::deallocate((String *)&local_358); + lVar58 = lVar58 + 1; + } while ((int)lVar58 < (int)local_508); + } +LAB_003c0cc4: + pMStack_178 = (Mat *)0x0; + local_180 = (undefined **)0x0; + pfStack_168 = (float *)0x0; + local_170 = (float *)0x0; + Mat::operator=((Mat *)&local_2a0,(Scalar_ *)&local_180); + if (0 < (int)param_2) { + memset(local_518,0,((ulong)(param_2 - 1) + 1) * 4); + } + if (0 < (int)local_508) { + lVar58 = 0; + /* catch() { ... } // from try @ 003c0d70 with catch @ 003c0d1c + catch() { ... } // from try @ 003c0de8 with catch @ 003c0d1c + catch() { ... } // from try @ 003c0e20 with catch @ 003c0d1c + catch() { ... } // from try @ 003c1514 with catch @ 003c0d1c + catch() { ... } // from try @ 003c163c with catch @ 003c0d1c */ + lVar57 = *local_258; + uVar41 = *local_78; + pfVar31 = local_b0; + do { + lVar73 = (long)*(int *)(lVar22 + lVar58 * 4); + lVar50 = lVar73 * lVar57; + pfVar49 = (float *)((long)local_290 + lVar50); + /* try { // try from 003c0d70 to 004c0d93 has its CatchHandler @ 003c0d1c */ + if (0 < (int)(uVar67 - 3)) { + if ((pfVar31 < (float *)((long)local_290 + lVar50 + 0x40) && pfVar49 < pfVar31 + 0x10) + || (uVar61 < 3)) { + pfVar35 = pfVar49; + pfVar43 = pfVar31 + 1; + do { + pfVar38 = pfVar43 + 4; + fVar102 = pfVar43[-1]; + pfVar35[1] = pfVar35[1] + *pfVar43; + *pfVar35 = *pfVar35 + fVar102; + fVar102 = pfVar43[1]; + pfVar35[3] = pfVar35[3] + pfVar43[2]; + pfVar35[2] = pfVar35[2] + fVar102; + pfVar35 = pfVar35 + 4; + pfVar43 = pfVar38; + } while (pfVar38 != pfVar31 + (ulong)uVar2 * 4 + 5); + } + else { + /* try { // try from 003c0da4 to 004c0da7 has its CatchHandler @ 003c1714 */ + uVar26 = 0; + pfVar35 = pfVar49; + pfVar43 = pfVar31; + pfVar38 = pfVar49; + do { + uVar9 = *(undefined8 *)pfVar38; + uVar26 = uVar26 + 1; + uVar13 = *(undefined8 *)pfVar43; + /* try { // try from 003c0dbc to 004c0dbf has its CatchHandler @ 003c1690 */ + fVar102 = (float)((ulong)uVar9 >> 0x20) + (float)((ulong)uVar13 >> 0x20); + fVar101 = (float)((ulong)*(undefined8 *)(pfVar38 + 2) >> 0x20) + + (float)((ulong)*(undefined8 *)(pfVar43 + 2) >> 0x20); + *(ulong *)(pfVar35 + 2) = + CONCAT17((char)((uint)fVar101 >> 0x18), + CONCAT16((char)((uint)fVar101 >> 0x10), + CONCAT15((char)((uint)fVar101 >> 8), + CONCAT14(SUB41(fVar101,0), + (float)*(undefined8 *)(pfVar38 + 2) + + (float)*(undefined8 *)(pfVar43 + 2))))); + *(ulong *)pfVar35 = + CONCAT17((char)((uint)fVar102 >> 0x18), + CONCAT16((char)((uint)fVar102 >> 0x10), + CONCAT15((char)((uint)fVar102 >> 8), + CONCAT14(SUB41(fVar102,0), + (float)uVar9 + (float)uVar13)))); + pfVar35 = pfVar35 + 4; + pfVar43 = pfVar43 + 4; + pfVar38 = pfVar38 + 4; + } while (uVar26 < uVar61); + } + } + if ((int)uVar66 < (int)uVar67) { + lVar48 = (long)pfVar31 + (lVar53 - (long)local_b0); + /* try { // try from 003c0de8 to 004c0deb has its CatchHandler @ 003c0d1c */ + uVar32 = (long)local_290 + lVar50 + lVar53; + if (((ulong)((long)local_b0 + lVar48) < + (ulong)((long)local_290 + lVar50 + lVar53 + 0x10) && + uVar32 < (ulong)((long)pfVar31 + lVar53 + 0x10)) || (uVar4 < 8)) { + lVar50 = 0; + do { + /* catch() { ... } // from try @ 003c0da4 with catch @ 003c1714 */ + *(float *)((long)pfVar49 + lVar50 + lVar53) = + *(float *)((long)pfVar49 + lVar50 + lVar53) + + *(float *)((long)pfVar31 + lVar50 + lVar53); + lVar50 = lVar50 + 4; + } while (lVar50 != ((ulong)(local_4e4 - uVar66) + 1) * 4); + } + else { + /* try { // try from 003c0e18 to 004c0e1b has its CatchHandler @ 003c162c */ + uVar26 = -((uint)(uVar32 >> 2) & 3) & 3; + /* try { // try from 003c0e20 to 004c0e4b has its CatchHandler @ 003c0d1c */ + if (uVar4 < uVar26) { + uVar26 = uVar4; + } + uVar62 = uVar66; + /* try { // try from 003c0e50 to 004c0e73 has its CatchHandler @ 003c18a4 */ + if (((uVar26 != 0) && + (*(float *)((long)pfVar49 + lVar53) = + *(float *)((long)pfVar49 + lVar53) + *(float *)((long)pfVar31 + lVar53), + uVar62 = uVar3, uVar26 != 1)) && + (*(float *)((long)pfVar49 + uVar39) = + *(float *)((long)pfVar49 + uVar39) + *(float *)((long)pfVar31 + uVar39), + uVar62 = uVar55, uVar26 == 3)) { + *(float *)((long)pfVar49 + uVar40) = + *(float *)((long)pfVar49 + uVar40) + *(float *)((long)pfVar31 + uVar40); + uVar62 = uVar66 + 3; + } + lVar34 = (ulong)uVar26 * 4; + uVar70 = 0; + /* try { // try from 003c0e94 to 004c0eb7 has its CatchHandler @ 003c17cc */ + uVar51 = ((uVar4 - uVar26) - 4 >> 2) + 1; + iVar25 = uVar51 * 4; + puVar36 = (undefined8 *)((long)local_b0 + lVar34 + lVar48); + puVar42 = (undefined8 *)((long)local_290 + lVar34 + lVar50 + lVar53); + puVar69 = (undefined8 *) + ((long)local_290 + lVar50 + ((ulong)uVar26 + (long)(int)uVar66) * 4); + do { + uVar13 = *puVar36; + uVar70 = uVar70 + 1; + uVar9 = *puVar69; + fVar102 = (float)((ulong)uVar9 >> 0x20) + (float)((ulong)uVar13 >> 0x20); + fVar101 = (float)((ulong)puVar69[1] >> 0x20) + (float)((ulong)puVar36[1] >> 0x20); + puVar42[1] = CONCAT17((char)((uint)fVar101 >> 0x18), + CONCAT16((char)((uint)fVar101 >> 0x10), + CONCAT15((char)((uint)fVar101 >> 8), + CONCAT14(SUB41(fVar101,0), + (float)puVar69[1] + + (float)puVar36[1])))); + *puVar42 = CONCAT17((char)((uint)fVar102 >> 0x18), + CONCAT16((char)((uint)fVar102 >> 0x10), + CONCAT15((char)((uint)fVar102 >> 8), + CONCAT14(SUB41(fVar102,0), + (float)uVar9 + (float)uVar13)))); + puVar36 = puVar36 + 2; + puVar42 = puVar42 + 2; + puVar69 = puVar69 + 2; + } while (uVar70 < uVar51); + uVar62 = iVar25 + uVar62; + if (iVar25 != uVar4 - uVar26) { + uVar32 = -(ulong)(uVar62 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar62 << 2; + /* try { // try from 003c0ef0 to 004c0ef3 has its CatchHandler @ 003c18f4 */ + *(float *)((long)pfVar49 + uVar32) = + *(float *)((long)pfVar49 + uVar32) + *(float *)((long)pfVar31 + uVar32); + if ((int)(uVar62 + 1) < (int)uVar67) { + lVar50 = uVar32 + 4; + *(float *)((long)pfVar49 + lVar50) = + *(float *)((long)pfVar49 + lVar50) + *(float *)((long)pfVar31 + lVar50); + if ((int)(uVar62 + 2) < (int)uVar67) { + lVar50 = uVar32 + 8; + *(float *)((long)pfVar49 + lVar50) = + *(float *)((long)pfVar49 + lVar50) + *(float *)((long)pfVar31 + lVar50); + } + } + } + } + } + lVar58 = lVar58 + 1; + pfVar31 = (float *)((long)pfVar31 + uVar41); + local_518[lVar73] = local_518[lVar73] + 1; + } while ((int)lVar58 < (int)local_508); + } + if (local_504 != 0) { + dVar110 = 0.0; + } + if (0 < (int)param_2) { + lVar58 = 0; + uVar26 = -((uint)((ulong)local_1d0 >> 2) & 3) & 3; + lVar57 = *local_258; + if (uVar67 < uVar26) { + uVar26 = uVar67; + } + uVar41 = (ulong)uVar26; + uVar62 = ((uVar67 - uVar26) - 4 >> 2) + 1; + iVar25 = uVar62 * 4; + lVar50 = 0; + pfVar31 = local_290; + do { + iVar28 = (int)lVar58; + if (local_518[lVar58] == 0) { + if (param_2 == 1) { + lVar73 = 0; + iVar103 = *local_518; + iVar56 = 0; + piVar59 = local_518; + } + else { + lVar48 = 1; + iVar103 = *local_518; + iVar56 = 0; + piVar52 = local_518; + do { + piVar52 = piVar52 + 1; + lVar73 = (long)iVar56; + piVar59 = local_518 + lVar73; + if (iVar103 < *piVar52) { + iVar103 = *piVar52; + piVar59 = piVar52; + lVar73 = lVar48; + iVar56 = (int)lVar48; + } + lVar48 = lVar48 + 1; + } while ((int)lVar48 < (int)param_2); + lVar73 = lVar73 * lVar57; + } + pfVar49 = (float *)((long)local_290 + lVar73); + fVar102 = 1.0 / (float)iVar103; + if ((int)uVar67 < 1) { +LAB_003c117c: + if (0 < (int)local_508) goto LAB_003c1184; +LAB_003c17dc: + uVar32 = *local_78; + /* try { // try from 003c17e0 to 004c17e3 has its CatchHandler @ 003c17cc */ + lVar34 = -4; + lVar48 = -1; + } + else { + if (((float *)((long)local_290 + lVar73 + 0x10) <= local_1d0 || + local_1d0 + 4 <= pfVar49) && (9 < uVar67)) { + uVar32 = uVar41; + if ((uVar26 != 0) && (*local_1d0 = *pfVar49 * fVar102, uVar26 != 1)) { + local_1d0[1] = pfVar49[1] * fVar102; + if (uVar26 == 3) { + local_1d0[2] = pfVar49[2] * fVar102; + } + else { + uVar32 = 2; + } + } + if (2 < local_4e4 - uVar26) { + uVar51 = 0; + puVar36 = (undefined8 *)((long)local_290 + lVar73 + uVar41 * 4); + pfVar35 = local_1d0 + uVar41; + do { + uVar9 = *puVar36; + uVar51 = uVar51 + 1; + fVar101 = (float)((ulong)uVar9 >> 0x20) * fVar102; + fVar10 = (float)((ulong)puVar36[1] >> 0x20) * fVar102; + *(ulong *)(pfVar35 + 2) = + CONCAT17((char)((uint)fVar10 >> 0x18), + CONCAT16((char)((uint)fVar10 >> 0x10), + CONCAT15((char)((uint)fVar10 >> 8), + CONCAT14(SUB41(fVar10,0), + (float)puVar36[1] * fVar102)))); + *(ulong *)pfVar35 = + CONCAT17((char)((uint)fVar101 >> 0x18), + CONCAT16((char)((uint)fVar101 >> 0x10), + CONCAT15((char)((uint)fVar101 >> 8), + CONCAT14(SUB41(fVar101,0),(float)uVar9 * fVar102 + )))); + puVar36 = puVar36 + 2; + pfVar35 = pfVar35 + 4; + } while (uVar51 < uVar62); + uVar32 = (ulong)(uint)((int)uVar32 + iVar25); + if (iVar25 == uVar67 - uVar26) goto LAB_003c117c; + } + uVar46 = -(uVar32 >> 0x1f) & 0xfffffffc00000000 | uVar32 << 2; + *(float *)((long)local_1d0 + uVar46) = *(float *)((long)pfVar49 + uVar46) * fVar102; + if (((int)uVar32 + 1 < (int)uVar67) && + (*(float *)((long)local_1d0 + uVar46 + 4) = + *(float *)((long)pfVar49 + uVar46 + 4) * fVar102, + (int)uVar32 + 2 < (int)uVar67)) { + *(float *)((long)local_1d0 + uVar46 + 8) = + *(float *)((long)pfVar49 + uVar46 + 8) * fVar102; + } + goto LAB_003c117c; + } + lVar48 = 0; + do { + local_1d0[lVar48] = pfVar49[lVar48] * fVar102; + lVar48 = lVar48 + 1; + /* catch() { ... } // from try @ 003c0e94 with catch @ 003c17cc + catch() { ... } // from try @ 003c140c with catch @ 003c17cc + catch() { ... } // from try @ 003c155c with catch @ 003c17cc + catch() { ... } // from try @ 003c17e0 with catch @ 003c17cc */ + } while ((int)lVar48 < (int)uVar67); + if ((int)local_508 < 1) goto LAB_003c17dc; +LAB_003c1184: + auVar106 = ZEXT816(0); + uVar32 = *local_78; + uVar46 = 0; + pfVar35 = local_b0; + uVar72 = 0xffffffff; + do { + while( true ) { + iVar71 = (int)uVar72; + uVar60 = uVar46 & 0xffffffff; + if (*(int *)(lVar22 + uVar46 * 4) == iVar56) break; +LAB_003c119c: + uVar46 = uVar46 + 1; + pfVar35 = (float *)((long)pfVar35 + uVar32); + if ((int)local_508 <= (int)uVar46) goto LAB_003c120c; + } + if ((int)uVar67 < 1) { + dVar109 = 0.0; + } + else { + fVar102 = 0.0; + lVar48 = 0; + do { + pfVar43 = pfVar35 + lVar48; + pfVar38 = local_1d0 + lVar48; + lVar48 = lVar48 + 1; + fVar102 = fVar102 + (*pfVar43 - *pfVar38) * (*pfVar43 - *pfVar38); + } while ((int)lVar48 < (int)uVar67); + dVar109 = (double)fVar102; + } + if (dVar109 < auVar106._0_8_) goto LAB_003c119c; + uVar1 = uVar46 + 1; + iVar71 = (int)uVar46; + pfVar35 = (float *)((long)pfVar35 + uVar32); + auVar106._8_8_ = 0; + auVar106._0_8_ = dVar109; + uVar46 = uVar1; + uVar72 = uVar60; + } while ((int)uVar1 < (int)local_508); +LAB_003c120c: + lVar48 = (long)iVar71; + lVar34 = lVar48 << 2; + } + *piVar59 = iVar103 + -1; + lVar48 = uVar32 * lVar48; + local_518[lVar58] = local_518[lVar58] + 1; + *(int *)(lVar22 + lVar34) = iVar28; + if (0 < (int)uVar67) { + pfVar35 = (float *)((long)local_b0 + lVar48 + 0x10); + pfVar43 = (float *)((long)local_b0 + lVar48); + if (((uVar67 < 7 || lVar50 < lVar73 + 0x10 && lVar73 < lVar50 + 0x10) || + pfVar31 < pfVar35 && pfVar43 < pfVar31 + 4) || + (pfVar49 < pfVar35 && pfVar43 < (float *)((long)local_290 + lVar73 + 0x10))) { + lVar73 = 0; + do { + pfVar49[lVar73] = pfVar49[lVar73] - pfVar43[lVar73]; + pfVar31[lVar73] = pfVar31[lVar73] + pfVar43[lVar73]; + lVar73 = lVar73 + 1; + } while ((int)lVar73 < (int)uVar67); + } + else { + /* try { // try from 003c12b0 to 004c135f has its CatchHandler @ 003c1694 */ + uVar51 = -((uint)((ulong)pfVar49 >> 2) & 3) & 3; + if (uVar67 < uVar51) { + uVar51 = uVar67; + } + if (uVar51 == 0) { +LAB_003c172c: + uVar32 = (ulong)uVar51; + } + else { + *pfVar49 = *pfVar49 - *(float *)((long)local_b0 + lVar48); + *pfVar31 = *pfVar31 + *(float *)((long)local_b0 + lVar48); + if (uVar51 == 1) goto LAB_003c172c; + pfVar49[1] = pfVar49[1] - *(float *)((long)local_b0 + lVar48 + 4); + pfVar31[1] = pfVar31[1] + *(float *)((long)local_b0 + lVar48 + 4); + if (uVar51 == 3) { + uVar32 = 3; + pfVar49[2] = pfVar49[2] - *(float *)((long)local_b0 + lVar48 + 8); + pfVar31[2] = pfVar31[2] + *(float *)((long)local_b0 + lVar48 + 8); + } + else { + uVar32 = 2; + } + } + uVar70 = ((uVar67 - uVar51) - 4 >> 2) + 1; + iVar103 = uVar70 * 4; + if (2 < local_4e4 - uVar51) { + lVar5 = (ulong)uVar51 * 4; + lVar34 = 0; + uVar27 = 0; + do { + puVar36 = (undefined8 *)((long)local_290 + lVar34 + lVar5 + lVar73); + puVar42 = (undefined8 *)((long)local_b0 + lVar34 + lVar48 + lVar5); + uVar27 = uVar27 + 1; + uVar9 = *puVar42; + puVar69 = (undefined8 *)((long)local_290 + lVar34 + lVar50 + lVar5); + lVar34 = lVar34 + 0x10; + fVar102 = (float)((ulong)*puVar36 >> 0x20) - (float)((ulong)uVar9 >> 0x20); + fVar101 = (float)((ulong)puVar36[1] >> 0x20) - + (float)((ulong)puVar42[1] >> 0x20); + puVar36[1] = CONCAT17((char)((uint)fVar101 >> 0x18), + CONCAT16((char)((uint)fVar101 >> 0x10), + CONCAT15((char)((uint)fVar101 >> 8), + CONCAT14(SUB41(fVar101,0), + (float)puVar36[1] - + (float)puVar42[1])))); + *puVar36 = CONCAT17((char)((uint)fVar102 >> 0x18), + CONCAT16((char)((uint)fVar102 >> 0x10), + CONCAT15((char)((uint)fVar102 >> 8), + CONCAT14(SUB41(fVar102,0), + (float)*puVar36 - (float)uVar9))) + ); + uVar9 = *puVar42; + fVar102 = (float)((ulong)*puVar69 >> 0x20) + (float)((ulong)uVar9 >> 0x20); + fVar101 = (float)((ulong)puVar69[1] >> 0x20) + + (float)((ulong)puVar42[1] >> 0x20); + puVar69[1] = CONCAT17((char)((uint)fVar101 >> 0x18), + CONCAT16((char)((uint)fVar101 >> 0x10), + CONCAT15((char)((uint)fVar101 >> 8), + CONCAT14(SUB41(fVar101,0), + (float)puVar69[1] + + (float)puVar42[1])))); + *puVar69 = CONCAT17((char)((uint)fVar102 >> 0x18), + CONCAT16((char)((uint)fVar102 >> 0x10), + CONCAT15((char)((uint)fVar102 >> 8), + CONCAT14(SUB41(fVar102,0), + (float)*puVar69 + (float)uVar9))) + ); + } while (uVar27 < uVar70); + uVar32 = (ulong)(uint)((int)uVar32 + iVar103); + if (iVar103 == uVar67 - uVar51) goto joined_r0x003c1490; + } + uVar46 = -(uVar32 >> 0x1f) & 0xfffffffc00000000 | uVar32 << 2; + *(float *)((long)pfVar49 + uVar46) = + *(float *)((long)pfVar49 + uVar46) - + *(float *)((long)local_b0 + uVar46 + lVar48); + /* try { // try from 003c140c to 004c140f has its CatchHandler @ 003c17cc */ + *(float *)((long)local_290 + uVar46 + lVar50) = + *(float *)((long)local_290 + uVar46 + lVar50) + + *(float *)((long)local_b0 + uVar46 + lVar48); + if ((int)uVar32 + 1 < (int)uVar67) { + lVar73 = uVar46 + 4; + *(float *)((long)pfVar49 + lVar73) = + *(float *)((long)pfVar49 + lVar73) - + *(float *)((long)local_b0 + lVar48 + lVar73); + *(float *)((long)local_290 + lVar50 + lVar73) = + *(float *)((long)local_290 + lVar50 + lVar73) + + *(float *)((long)local_b0 + lVar48 + lVar73); + if ((int)uVar32 + 2 < (int)uVar67) { + lVar73 = uVar46 + 8; + *(float *)((long)pfVar49 + lVar73) = + *(float *)((long)pfVar49 + lVar73) - + *(float *)((long)local_b0 + lVar48 + lVar73); + *(float *)((long)local_290 + lVar50 + lVar73) = + *(float *)((long)local_290 + lVar50 + lVar73) + + *(float *)((long)local_b0 + lVar48 + lVar73); + } + } + } + } + } +joined_r0x003c1490: + /* try { // try from 003c1490 to 004c1493 has its CatchHandler @ 003c18a4 */ + lVar50 = lVar50 + lVar57; + pfVar31 = (float *)((long)pfVar31 + lVar57); + lVar58 = lVar58 + 1; + if ((int)param_2 <= iVar28 + 1) { + uVar41 = 0; + lVar58 = 0; + iVar25 = *local_518; + pfVar31 = local_290; + if (iVar25 == 0) goto LAB_003c1670; +LAB_003c14bc: + fVar102 = 1.0 / (float)iVar25; + uVar75 = SUB41(fVar102,0); + uVar78 = (undefined1)((uint)fVar102 >> 8); + uVar80 = (undefined1)((uint)fVar102 >> 0x10); + uVar82 = (undefined1)((uint)fVar102 >> 0x18); + pfVar49 = local_290; + if ((int)uVar67 < 1) goto LAB_003c16d0; +LAB_003c14d0: + uVar26 = -((uint)((ulong)pfVar31 >> 2) & 3) & 3; + if (uVar67 < uVar26) { + uVar26 = uVar67; + } + if (uVar67 < 5) { + uVar26 = uVar67; + } + if (uVar26 == 0) { + uVar32 = 0; + } + else { + *pfVar31 = *pfVar31 * (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))) + ; + /* try { // try from 003c1514 to 004c1553 has its CatchHandler @ 003c0d1c */ + if ((uVar26 == 1) || + (pfVar31[1] = pfVar31[1] * + (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))), + uVar26 == 2)) { + uVar32 = (ulong)uVar26; + } + else { + pfVar31[2] = pfVar31[2] * + (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + if (uVar26 == 4) { + uVar32 = 4; + pfVar31[3] = pfVar31[3] * + (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + } + else { + uVar32 = 3; + } + } + if (uVar26 == uVar67) goto LAB_003c15e8; + } + /* try { // try from 003c155c to 004c155f has its CatchHandler @ 003c17cc */ + uVar62 = ((uVar67 - uVar26) - 4 >> 2) + 1; + iVar25 = uVar62 * 4; + if (2 < local_4e4 - uVar26) { + /* try { // try from 003c1568 to 004c156b has its CatchHandler @ 003c18a4 */ + fVar102 = (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + puVar36 = (undefined8 *)((long)pfVar49 + lVar58 + (ulong)uVar26 * 4); + uVar51 = 0; + puVar42 = puVar36; + do { + uVar9 = *puVar42; + uVar51 = uVar51 + 1; + fVar101 = (float)((ulong)uVar9 >> 0x20) * fVar102; + fVar10 = (float)((ulong)puVar42[1] >> 0x20) * fVar102; + puVar36[1] = CONCAT17((char)((uint)fVar10 >> 0x18), + CONCAT16((char)((uint)fVar10 >> 0x10), + CONCAT15((char)((uint)fVar10 >> 8), + CONCAT14(SUB41(fVar10,0), + (float)puVar42[1] * fVar102)))); + *puVar36 = CONCAT17((char)((uint)fVar101 >> 0x18), + CONCAT16((char)((uint)fVar101 >> 0x10), + CONCAT15((char)((uint)fVar101 >> 8), + CONCAT14(SUB41(fVar101,0), + (float)uVar9 * fVar102)))); + puVar36 = puVar36 + 2; + puVar42 = puVar42 + 2; + } while (uVar51 < uVar62); + uVar32 = (ulong)(uint)((int)uVar32 + iVar25); + if (iVar25 == uVar67 - uVar26) goto LAB_003c15e8; + } + uVar46 = -(uVar32 >> 0x1f) & 0xfffffffc00000000 | uVar32 << 2; + *(float *)((long)pfVar31 + uVar46) = + *(float *)((long)pfVar31 + uVar46) * + (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + if (((int)uVar32 + 1 < (int)uVar67) && + (*(float *)((long)pfVar31 + uVar46 + 4) = + *(float *)((long)pfVar31 + uVar46 + 4) * + (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))), + (int)uVar32 + 2 < (int)uVar67)) { + *(float *)((long)pfVar31 + uVar46 + 8) = + *(float *)((long)pfVar31 + uVar46 + 8) * + (float)CONCAT13(uVar82,CONCAT12(uVar80,CONCAT11(uVar78,uVar75))); + } +LAB_003c15e8: + if (local_504 == 0) goto LAB_003c163c; + lVar58 = 0; + dVar109 = 0.0; + do { + pfVar49 = pfVar31 + lVar58; + lVar57 = lVar58 * 4; + lVar58 = lVar58 + 1; + dVar111 = (double)(*pfVar49 - *(float *)(local_230 + uVar41 * *local_1f8 + lVar57)); + dVar109 = dVar109 + dVar111 * dVar111; + dVar111 = dVar110; + } while ((int)lVar58 < (int)uVar67); + do { + /* catch() { ... } // from try @ 003c0e18 with catch @ 003c162c */ + dVar110 = dVar109; + if (dVar109 <= dVar111) { + dVar110 = dVar111; + } +LAB_003c163c: + do { + /* try { // try from 003c163c to 004c164f has its CatchHandler @ 003c0d1c */ + if (uVar41 == param_2 - 1) goto LAB_003c0a64; + uVar41 = uVar41 + 1; + lVar58 = uVar41 * *local_258; + iVar25 = local_518[uVar41]; + pfVar31 = (float *)((long)local_290 + lVar58); + if (iVar25 != 0) goto LAB_003c14bc; +LAB_003c1670: + /* try { // try from 003c1670 to 004c1673 has its CatchHandler @ 003c18fc */ + pfVar49 = local_290; + local_348 = 0; + local_340 = 0; + pcVar33 = (char *)String::allocate((String *)&local_348,0x10); + uVar9 = s_counters_k_____0_004771e0._8_8_; + /* catch() { ... } // from try @ 003c0dbc with catch @ 003c1690 */ + /* catch() { ... } // from try @ 003c12b0 with catch @ 003c1694 + catch() { ... } // from try @ 003c18e4 with catch @ 003c1694 */ + *(undefined8 *)pcVar33 = s_counters_k_____0_004771e0._0_8_; + *(undefined8 *)(pcVar33 + 8) = uVar9; + error(-0xd7,(String *)&local_348, + "double cv::kmeans(cv::InputArray, int, cv::InputOutputArray, cv::TermCriteria, int, int, cv::OutputArray)" + ,"/builds/master_pack-android/opencv/modules/core/src/kmeans.cpp",0x19b); + String::deallocate((String *)&local_348); + fVar102 = 1.0 / (float)local_518[uVar41]; + uVar75 = SUB41(fVar102,0); + uVar78 = (undefined1)((uint)fVar102 >> 8); + uVar80 = (undefined1)((uint)fVar102 >> 0x10); + uVar82 = (undefined1)((uint)fVar102 >> 0x18); + if (0 < (int)uVar67) goto LAB_003c14d0; +LAB_003c16d0: + dVar109 = 0.0; + dVar111 = dVar110; + } while (local_504 == 0); + } while( true ); + } + } while( true ); + } + } +LAB_003c0a64: + local_504 = local_504 + 1; + iVar25 = iStack_3cc; + if (iStack_3cc < 2) { + iVar25 = 2; + } + if ((local_504 == iVar25) || + (dVar110 <= + (double)CONCAT17(uVar89,CONCAT16(uVar87,CONCAT15(uVar85,CONCAT14(uVar83,CONCAT13(uVar81, + CONCAT12(uVar79,CONCAT11(uVar77,uVar74))))))))) + goto code_r0x003c1868; + local_138 = &local_130; + local_170 = (float *)0x0; + pMStack_178 = _UNK_003c2918; + local_180 = _DAT_003c2910; + uStack_128 = 0; + local_130 = 0; + /* try { // try from 003c0ac4 to 004c0ac7 has its CatchHandler @ 003c0c74 */ + local_390 = 1; + pfStack_168 = (float *)0x0; + local_160 = 0; + local_158 = 0; + local_150 = 0; + local_148 = 0; + local_38c = local_508; + local_140 = &pMStack_178; + Mat::create((Mat *)&local_180,2,&local_390,6); + pfVar31 = local_170; + local_318 = lVar22; + local_338[0] = (ulong)local_508 << 0x20; + /* try { // try from 003c0b38 to 004c0b3b has its CatchHandler @ 003c0c6c */ + local_328 = &PTR_FUN_004f79d0; + local_320 = (long)local_170; + local_310 = (Mat *)&local_c0; + local_308 = (Mat *)&local_2a0; + parallel_for_((Range *)local_338,(ParallelLoopBody *)&local_328,-1.0); + local_328 = &PTR_FUN_004f79d0; + ParallelLoopBody::~ParallelLoopBody((ParallelLoopBody *)&local_328); + dVar112 = 0.0; + if (0 < (int)local_508) { + lVar58 = 0; + do { + lVar57 = lVar58 * 8; + lVar58 = lVar58 + 1; + dVar112 = dVar112 + *(double *)((long)pfVar31 + lVar57); + } while ((int)lVar58 < (int)local_508); + } + if (local_148 != 0) { + piVar59 = (int *)(local_148 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_180); + } + } + local_148 = 0; + /* try { // try from 003c0bac to 004c0bcb has its CatchHandler @ 003c08bc */ + local_170 = (float *)0x0; + local_158 = 0; + local_160 = 0; + pfStack_168 = (float *)0x0; + if (0 < local_180._4_4_) { + iVar25 = 0; + ppMVar44 = local_140; + do { + *(undefined4 *)ppMVar44 = 0; + iVar25 = iVar25 + 1; + /* try { // try from 003c0bd4 to 004c0bd7 has its CatchHandler @ 003c0c6c */ + ppMVar44 = (Mat **)((long)ppMVar44 + 4); + } while (iVar25 < local_180._4_4_); + } + /* try { // try from 003c0be0 to 004c0bf7 has its CatchHandler @ 003c0c74 */ + if (local_138 != &local_130) { + fastFree(local_138); + } + } while( true ); +LAB_003c1f18: + local_498[1] = local_524; + if (local_498 == local_4a8 + (param_2 - 2)) goto LAB_003c1f7c; + pfVar35 = (float *)CONCAT17(uStack_569, + CONCAT16(uStack_56a, + CONCAT15(uStack_56b, + CONCAT14(uStack_56c, + CONCAT13(uStack_56d, + CONCAT12(uStack_56e, + CONCAT11(uStack_56f, + local_570))))))) + ; + local_498 = local_498 + 1; + local_570 = SUB81(pfVar49,0); + uStack_56f = (undefined1)((ulong)pfVar49 >> 8); + uStack_56e = (undefined1)((ulong)pfVar49 >> 0x10); + uStack_56d = (undefined1)((ulong)pfVar49 >> 0x18); + uStack_56c = (undefined1)((ulong)pfVar49 >> 0x20); + uStack_56b = (undefined1)((ulong)pfVar49 >> 0x28); + uStack_56a = (undefined1)((ulong)pfVar49 >> 0x30); + uStack_569 = (undefined1)((ulong)pfVar49 >> 0x38); + uVar32 = *puVar30; + pfVar49 = pfVar35; + dVar109 = dVar114; + goto LAB_003c1dac; +code_r0x003c1868: + if (dVar112 < dVar113) { + cVar24 = _OutputArray::needed(param_8); + if (cVar24 != '\0') { + /* try { // try from 003c2308 to 004c230b has its CatchHandler @ 003c1900 */ + Mat::copyTo((Mat *)&local_2a0,param_8); + } + local_180 = (undefined **)CONCAT44(local_180._4_4_,0x2010000); + local_170 = (float *)0x0; + pMStack_178 = local_4e0; + Mat::copyTo((Mat *)&local_300,(_OutputArray *)&local_180); + dVar113 = dVar112; + } + local_490 = local_490 + 1; + if (local_490 == local_48c) { + if (local_4c8 != (float *)0x0) { + operator_delete(local_4c8); + } + if (local_518 != (int *)0x0) { + operator_delete(local_518); + } + /* catch() { ... } // from try @ 003c0e50 with catch @ 003c18a4 + catch() { ... } // from try @ 003c1490 with catch @ 003c18a4 + catch() { ... } // from try @ 003c1568 with catch @ 003c18a4 + catch() { ... } // from try @ 003c18b8 with catch @ 003c18a4 */ + if (local_1a8 != 0) { + piVar59 = (int *)(local_1a8 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003c18b8 to 004c18bb has its CatchHandler @ 003c18a4 */ + } while (cVar24 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_1e0); + } + } + local_1a8 = 0; + local_1d0 = (float *)0x0; + local_1b8 = 0; + local_1c0 = 0; + local_1c8 = 0; + /* try { // try from 003c18e4 to 004c18e7 has its CatchHandler @ 003c1694 */ + if (0 < local_1e0._4_4_) { + iVar25 = 0; + ppMVar44 = local_1a0; + do { + /* catch() { ... } // from try @ 003c0ef0 with catch @ 003c18f4 */ + *(undefined4 *)ppMVar44 = 0; + iVar25 = iVar25 + 1; + /* catch() { ... } // from try @ 003c1670 with catch @ 003c18fc */ + /* catch() { ... } // from try @ 003c1948 with catch @ 003c1900 + catch() { ... } // from try @ 003c21c8 with catch @ 003c1900 + catch() { ... } // from try @ 003c2308 with catch @ 003c1900 + catch() { ... } // from try @ 003c23fc with catch @ 003c1900 */ + ppMVar44 = (Mat **)((long)ppMVar44 + 4); + } while (iVar25 < local_1e0._4_4_); + } + if (local_198 != &local_190) { + fastFree(local_198); + } + if (local_208 != 0) { + piVar59 = (int *)(local_208 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_240); + } + } + /* try { // try from 003c1948 to 004c196b has its CatchHandler @ 003c1900 */ + local_208 = 0; + local_230 = 0; + local_218 = 0; + local_220 = 0; + local_228 = 0; + if (0 < local_240._4_4_) { + /* try { // try from 003c1970 to 004c1993 has its CatchHandler @ 003c26f4 */ + iVar25 = 0; + ppMVar44 = local_200; + do { + *(undefined4 *)ppMVar44 = 0; + iVar25 = iVar25 + 1; + ppMVar44 = (Mat **)((long)ppMVar44 + 4); + } while (iVar25 < local_240._4_4_); + } + if (local_1f8 != local_1f0) { + fastFree(local_1f8); + } + if (local_268 != 0) { + piVar59 = (int *)(local_268 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_2a0); + } + } + local_268 = 0; + local_290 = (float *)0x0; + local_278 = 0; + local_280 = 0; + /* try { // try from 003c19e8 to 004c19eb has its CatchHandler @ 003c25bc */ + local_288 = 0; + if (0 < local_2a0._4_4_) { + iVar25 = 0; + ppMVar44 = local_260; + do { + *(undefined4 *)ppMVar44 = 0; + iVar25 = iVar25 + 1; + ppMVar44 = (Mat **)((long)ppMVar44 + 4); + } while (iVar25 < local_2a0._4_4_); + } + if (local_258 != local_250) { + fastFree(local_258); + } + if (local_28 != 0) { + piVar59 = (int *)(local_28 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + /* try { // try from 003c1a44 to 004c1a47 has its CatchHandler @ 003c2598 */ + if (iVar25 == 1) { + Mat::deallocate(local_4e0); + } + } + /* try { // try from 003c1a4c to 004c1abf has its CatchHandler @ 003c25bc */ + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar25 = 0; + puVar45 = local_20; + do { + *puVar45 = 0; + iVar25 = iVar25 + 1; + puVar45 = puVar45 + 1; + } while (iVar25 < local_5c); + } + if (local_18 != &local_10) { + fastFree(local_18); + } + if (local_2c8 != 0) { + piVar59 = (int *)(local_2c8 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + /* try { // try from 003c1ac4 to 004c1ae7 has its CatchHandler @ 003c24c0 */ + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_300); + } + } + local_2c8 = 0; + local_2f0 = 0; + local_2d8 = 0; + local_2e0 = 0; + local_2e8 = 0; + if (0 < local_300._4_4_) { + iVar25 = 0; + puVar36 = local_2c0; + do { + *(undefined4 *)puVar36 = 0; + iVar25 = iVar25 + 1; + puVar36 = (undefined8 *)((long)puVar36 + 4); + } while (iVar25 < local_300._4_4_); + } + if (local_2b8 != &local_2b0) { + fastFree(local_2b8); + } + /* try { // try from 003c1b2c to 004c1b2f has its CatchHandler @ 003c23e8 */ + if (local_88 != 0) { + piVar59 = (int *)(local_88 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + if (iVar25 == 1) { + Mat::deallocate((Mat *)&local_c0); + } + } + local_88 = 0; + local_b0 = (float *)0x0; + local_98 = (float *)0x0; + local_a0 = 0; + local_a8 = (float *)0x0; + if (0 < local_bc) { + iVar25 = 0; + puVar45 = local_80; + do { + *puVar45 = 0; + iVar25 = iVar25 + 1; + puVar45 = puVar45 + 1; + } while (iVar25 < local_bc); + } + if (local_78 != local_70) { + fastFree(local_78); + } + if (local_e8 != 0) { + piVar59 = (int *)(local_e8 + 0x14); + do { + iVar25 = *piVar59; + cVar24 = '\x01'; + bVar23 = (bool)ExclusiveMonitorPass(piVar59,0x10); + if (bVar23) { + *piVar59 = iVar25 + -1; + cVar24 = ExclusiveMonitorsStatus(); + } + } while (cVar24 != '\0'); + if (iVar25 == 1) { + Mat::deallocate(local_4f8); + } + } + local_e8 = 0; + local_f8 = 0; + local_110 = (float *)0x0; + local_100 = 0; + local_108 = 0; + if (0 < local_11c) { + iVar25 = 0; + puVar45 = local_e0; + do { + /* try { // try from 003c1c00 to 004c1fe3 has its CatchHandler @ 003c2268 */ + *puVar45 = 0; + iVar25 = iVar25 + 1; + puVar45 = puVar45 + 1; + } while (iVar25 < local_11c); + } + if (local_d8 != &local_d0) { + fastFree(local_d8); + } + auVar76._8_8_ = 0; + auVar76._0_8_ = dVar113; + return auVar76; + } + goto LAB_003c096c; +} + + +================================================================== + +### FUNC 003c2930 (332 bytes) name=FUN_003c2930 + +void FUN_003c2930(long param_1,int param_2,ulong *param_3,float *param_4) + +{ + float *pfVar1; + uint uVar2; + float *pfVar3; + float *pfVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + long lVar8; + int iVar9; + + uVar5 = *param_3; + if (param_2 < 4) { + iVar9 = 0; + } + else { + uVar2 = param_2 - 4U >> 2; + pfVar3 = param_4; + pfVar4 = (float *)(param_1 + 4); + do { + uVar5 = (uVar5 >> 0x20) + (uVar5 & 0xffffffff) * 0xf83f630a; + pfVar1 = pfVar4 + 4; + uVar6 = (uVar5 >> 0x20) + (uVar5 & 0xffffffff) * 0xf83f630a; + uVar7 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + pfVar4[-1] = pfVar3[1] + *pfVar3 * (float)(int)uVar5; + uVar5 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + *pfVar4 = pfVar3[3] + pfVar3[2] * (float)(int)uVar6; + pfVar4[1] = pfVar3[5] + pfVar3[4] * (float)(int)uVar7; + pfVar4[2] = pfVar3[7] + pfVar3[6] * (float)(int)uVar5; + pfVar3 = pfVar3 + 8; + pfVar4 = pfVar1; + } while (pfVar1 != (float *)(param_1 + (ulong)uVar2 * 0x10 + 0x14)); + iVar9 = (uVar2 + 1) * 4; + } + if (iVar9 < param_2) { + lVar8 = (long)iVar9; + pfVar3 = (float *)(param_1 + lVar8 * 4); + pfVar4 = param_4 + lVar8 * 2; + do { + /* try { // try from 003c2a38 to 004c2a3b has its CatchHandler @ 003c30c4 */ + /* try { // try from 003c2a40 to 004c2c67 has its CatchHandler @ 003c3148 */ + pfVar1 = pfVar4 + 2; + uVar5 = (uVar5 >> 0x20) + (uVar5 & 0xffffffff) * 0xf83f630a; + *pfVar3 = pfVar4[1] + *pfVar4 * (float)(int)uVar5; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar1; + } while (pfVar1 != param_4 + (lVar8 + 1 + (ulong)(uint)((param_2 + -1) - iVar9)) * 2); + } + *param_3 = uVar5; + return; +} + + +================================================================== + +### FUNC 003c2a7c (360 bytes) name=FUN_003c2a7c + +void FUN_003c2a7c(long param_1,int param_2,ulong *param_3,double *param_4) + +{ + double *pdVar1; + uint uVar2; + double *pdVar3; + ulong uVar4; + int iVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + double *pdVar9; + long lVar10; + double dVar11; + double dVar12; + + uVar4 = *param_3; + if (param_2 < 4) { + iVar5 = 0; + } + else { + uVar2 = param_2 - 4U >> 2; + pdVar3 = param_4; + pdVar9 = (double *)(param_1 + 8); + do { + pdVar1 = pdVar9 + 4; + uVar6 = (uVar4 >> 0x20) + (uVar4 & 0xffffffff) * 0xf83f630a; + uVar7 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + dVar12 = pdVar3[2]; + dVar11 = pdVar3[3]; + uVar8 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar4 = (uVar8 >> 0x20) + (uVar8 & 0xffffffff) * 0xf83f630a; + pdVar9[-1] = pdVar3[1] + *pdVar3 * (double)(long)(uVar6 >> 0x20 | uVar6 << 0x20); + *pdVar9 = dVar11 + dVar12 * (double)(long)(uVar7 >> 0x20 | uVar7 << 0x20); + dVar12 = pdVar3[4]; + dVar11 = pdVar3[5]; + pdVar9[2] = pdVar3[7] + pdVar3[6] * (double)(long)(uVar4 >> 0x20 | uVar4 << 0x20); + pdVar9[1] = dVar11 + dVar12 * (double)(long)(uVar8 >> 0x20 | uVar8 << 0x20); + pdVar3 = pdVar3 + 8; + pdVar9 = pdVar1; + } while (pdVar1 != (double *)(param_1 + (ulong)uVar2 * 0x20 + 0x28)); + iVar5 = (uVar2 + 1) * 4; + } + if (iVar5 < param_2) { + lVar10 = (long)iVar5; + pdVar3 = (double *)(param_1 + lVar10 * 8); + pdVar9 = param_4 + lVar10 * 2; + do { + pdVar1 = pdVar9 + 2; + uVar4 = (uVar4 >> 0x20) + (uVar4 & 0xffffffff) * 0xf83f630a; + *pdVar3 = pdVar9[1] + *pdVar9 * (double)(long)(uVar4 >> 0x20 | uVar4 << 0x20); + pdVar3 = pdVar3 + 1; + pdVar9 = pdVar1; + } while (pdVar1 != param_4 + (lVar10 + 1 + (ulong)(uint)((param_2 + -1) - iVar5)) * 2); + } + *param_3 = uVar4; + return; +} + + +================================================================== + +### FUNC 003c2be4 (652 bytes) name=FUN_003c2be4 + +void FUN_003c2be4(long param_1,int param_2,ulong *param_3,uint *param_4,char param_5) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint *puVar4; + int iVar5; + uint uVar6; + ulong uVar7; + long lVar8; + undefined1 *puVar9; + undefined1 *puVar10; + ulong uVar11; + + uVar7 = *param_3; + if (param_5 == '\0') { + iVar5 = 0; + if (3 < param_2) { + uVar3 = param_2 - 4U >> 2; + puVar4 = param_4; + puVar9 = (undefined1 *)(param_1 + 1); + do { + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + /* try { // try from 003c2d9c to 004c2d9f has its CatchHandler @ 003c3078 */ + uVar1 = (*puVar4 & (uint)uVar7) + puVar4[1]; + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar2 = (puVar4[2] & (uint)uVar7) + puVar4[3]; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + puVar9[-1] = (char)uVar1; + uVar11 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + if (0xff < uVar2) { + uVar2 = -(uint)(0 < (int)uVar2); + } + *puVar9 = (char)uVar2; + /* try { // try from 003c2e10 to 004c2e13 has its CatchHandler @ 003c30bc */ + uVar7 = (uVar11 >> 0x20) + (uVar11 & 0xffffffff) * 0xf83f630a; + uVar1 = (puVar4[4] & (uint)uVar11) + puVar4[5]; + uVar2 = (puVar4[6] & (uint)uVar7) + puVar4[7]; + puVar10 = puVar9 + 4; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + if (0xff < uVar2) { + uVar2 = -(uint)(0 < (int)uVar2); + } + puVar9[1] = (char)uVar1; + puVar9[2] = (char)uVar2; + puVar4 = puVar4 + 8; + puVar9 = puVar10; + } while (puVar10 != (undefined1 *)(param_1 + (ulong)uVar3 * 4 + 5)); + iVar5 = (uVar3 + 1) * 4; + } + } + else if (param_2 < 4) { + iVar5 = 0; + } + else { + uVar3 = param_2 - 4U >> 2; + puVar4 = param_4; + puVar9 = (undefined1 *)(param_1 + 1); + do { + puVar10 = puVar9 + 4; + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar6 = (uint)uVar7; + uVar1 = (*puVar4 & uVar6) + puVar4[1]; + uVar2 = (puVar4[2] & (int)uVar6 >> 8) + puVar4[3]; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + puVar9[-1] = (char)uVar1; + if (0xff < uVar2) { + uVar2 = -(uint)(0 < (int)uVar2); + } + *puVar9 = (char)uVar2; + uVar1 = (puVar4[4] & (int)uVar6 >> 0x10) + puVar4[5]; + uVar2 = (puVar4[6] & (int)uVar6 >> 0x18) + puVar4[7]; + if (0xff < uVar1) { + uVar1 = -(uint)(0 < (int)uVar1); + } + /* try { // try from 003c2cb0 to 004c2cb3 has its CatchHandler @ 003c30f0 */ + if (0xff < uVar2) { + uVar2 = -(uint)(0 < (int)uVar2); + } + /* try { // try from 003c2cb8 to 004c2d2b has its CatchHandler @ 003c3148 */ + puVar9[1] = (char)uVar1; + puVar9[2] = (char)uVar2; + puVar4 = puVar4 + 8; + puVar9 = puVar10; + } while (puVar10 != (undefined1 *)(param_1 + (ulong)uVar3 * 4 + 5)); + iVar5 = (uVar3 + 1) * 4; + } + if (iVar5 < param_2) { + lVar8 = (long)iVar5; + puVar4 = param_4 + lVar8 * 2; + puVar9 = (undefined1 *)(param_1 + lVar8); + do { + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar3 = (*puVar4 & (uint)uVar7) + puVar4[1]; + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + puVar10 = puVar9 + 1; + *puVar9 = (char)uVar3; + puVar4 = puVar4 + 2; + puVar9 = puVar10; + } while (puVar10 != (undefined1 *)(param_1 + lVar8 + 1 + (ulong)(uint)((param_2 + -1) - iVar5))) + ; + } + *param_3 = uVar7; + return; +} + + +================================================================== + +### FUNC 003c2e70 (636 bytes) name=FUN_003c2e70 + +void FUN_003c2e70(undefined1 *param_1,int param_2,ulong *param_3,int *param_4) + +{ + uint *puVar1; + ulong uVar2; + uint uVar3; + uint uVar4; + undefined1 *puVar5; + int iVar6; + int *piVar7; + ulong uVar8; + int iVar9; + uint *puVar10; + ulong uVar11; + int iVar12; + + uVar8 = *param_3; + /* try { // try from 003c2e84 to 004c2e87 has its CatchHandler @ 003c3050 */ + if (param_2 + -3 < 1) { + iVar12 = 0; + } + else { + iVar12 = 0; + uVar11 = uVar8 & 0xffffffff; + piVar7 = param_4; + puVar5 = param_1; + do { + /* try { // try from 003c2eb0 to 004c2f03 has its CatchHandler @ 003c2750 */ + uVar11 = (uVar8 >> 0x20) + uVar11 * 0xf83f630a; + uVar8 = (uVar11 & 0xffffffff) * 0xf83f630a + (uVar11 >> 0x20); + iVar6 = (int)((uVar11 & 0xffffffff) * (ulong)(uint)piVar7[1] >> 0x20); + iVar9 = (int)((uVar8 & 0xffffffff) * (ulong)(uint)piVar7[6] >> 0x20); + uVar2 = (uVar8 & 0xffffffff) * 0xf83f630a + (uVar8 >> 0x20); + /* try { // try from 003c2f2c to 004c2f2f has its CatchHandler @ 003c3100 */ + /* try { // try from 003c2f3c to 004c2f3f has its CatchHandler @ 003c3124 */ + uVar3 = (piVar7[4] + (int)uVar11) - + (((uint)((int)uVar11 - iVar6) >> (ulong)(*(byte *)(piVar7 + 2) & 0x1f)) + iVar6 >> + (ulong)(piVar7[3] & 0x1f)) * *piVar7; + /* try { // try from 003c2f48 to 004c2f4b has its CatchHandler @ 003c3100 */ + uVar4 = (piVar7[9] + (int)uVar8) - + (((uint)((int)uVar8 - iVar9) >> (ulong)(piVar7[7] & 0x1f)) + iVar9 >> + (ulong)(piVar7[8] & 0x1f)) * piVar7[5]; + /* try { // try from 003c2f54 to 004c2f57 has its CatchHandler @ 003c3124 */ + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *puVar5 = (char)uVar3; + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar5[1] = (char)uVar4; + iVar12 = iVar12 + 4; + uVar8 = (uVar2 & 0xffffffff) * 0xf83f630a + (uVar2 >> 0x20); + uVar11 = uVar8 & 0xffffffff; + iVar6 = (int)((uVar2 & 0xffffffff) * (ulong)(uint)piVar7[0xb] >> 0x20); + iVar9 = (int)(uVar11 * (uint)piVar7[0x10] >> 0x20); + uVar3 = (piVar7[0xe] + (int)uVar2) - + (((uint)((int)uVar2 - iVar6) >> (ulong)(piVar7[0xc] & 0x1f)) + iVar6 >> + (ulong)(*(byte *)(piVar7 + 0xd) & 0x1f)) * piVar7[10]; + /* try { // try from 003c2ff4 to 004c2ff7 has its CatchHandler @ 003c3148 */ + uVar4 = (piVar7[0x13] + (int)uVar8) - + (((uint)((int)uVar8 - iVar9) >> (ulong)(*(byte *)(piVar7 + 0x11) & 0x1f)) + iVar9 >> + (ulong)(piVar7[0x12] & 0x1f)) * piVar7[0xf]; + /* try { // try from 003c3000 to 004c3003 has its CatchHandler @ 003c3050 */ + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + /* try { // try from 003c300c to 004c300f has its CatchHandler @ 003c3078 */ + if (0xff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + puVar5[2] = (char)uVar3; + /* try { // try from 003c3018 to 004c301b has its CatchHandler @ 003c30bc */ + puVar5[3] = (char)uVar4; + piVar7 = piVar7 + 0x14; + puVar5 = puVar5 + 4; + } while (iVar12 < param_2 + -3); + /* try { // try from 003c3024 to 004c3033 has its CatchHandler @ 003c3148 */ + iVar12 = (param_2 - 4U & 0xfffffffc) + 4; + } + if (iVar12 < param_2) { + /* catch() { ... } // from try @ 003c27b4 with catch @ 003c3050 + catch() { ... } // from try @ 003c2e84 with catch @ 003c3050 + catch() { ... } // from try @ 003c3000 with catch @ 003c3050 */ + uVar11 = uVar8 & 0xffffffff; + puVar5 = param_1 + iVar12; + puVar10 = (uint *)(param_4 + (long)iVar12 * 5 + 1); + do { + /* try { // try from 003c3074 to 004c3077 has its CatchHandler @ 003c2750 */ + /* catch() { ... } // from try @ 003c2d9c with catch @ 003c3078 + catch() { ... } // from try @ 003c300c with catch @ 003c3078 */ + puVar1 = puVar10 + 5; + uVar8 = (uVar8 >> 0x20) + uVar11 * 0xf83f630a; + uVar11 = uVar8 & 0xffffffff; + iVar6 = (int)(uVar11 * *puVar10 >> 0x20); + uVar3 = (puVar10[3] + (int)uVar8) - + (((uint)((int)uVar8 - iVar6) >> (ulong)(puVar10[1] & 0x1f)) + iVar6 >> + (ulong)(puVar10[2] & 0x1f)) * puVar10[-1]; + /* catch() { ... } // from try @ 003c2e10 with catch @ 003c30bc + catch() { ... } // from try @ 003c3018 with catch @ 003c30bc */ + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + /* catch() { ... } // from try @ 003c2a38 with catch @ 003c30c4 */ + *puVar5 = (char)uVar3; + puVar5 = puVar5 + 1; + puVar10 = puVar1; + } while (puVar1 != (uint *)(param_4 + + ((ulong)(uint)((param_2 + -1) - iVar12) + (long)iVar12) * 5 + 6)); + } + *param_3 = uVar8; + return; +} + + +================================================================== + +### FUNC 003c30ec (748 bytes) name=FUN_003c30ec + +void FUN_003c30ec(long param_1,int param_2,ulong *param_3,uint *param_4,char param_5) + +{ + int iVar1; + uint uVar2; + uint *puVar3; + int iVar4; + uint uVar5; + ulong uVar6; + undefined1 *puVar7; + undefined1 *puVar8; + long lVar9; + undefined1 uVar10; + undefined1 uVar11; + undefined1 uVar12; + + /* catch() { ... } // from try @ 003c2cb0 with catch @ 003c30f0 */ + uVar6 = *param_3; + if (param_5 == '\0') { + iVar4 = 0; + if (3 < param_2) { + uVar2 = param_2 - 4U >> 2; + puVar3 = param_4; + puVar7 = (undefined1 *)(param_1 + 3); + do { + uVar6 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + iVar4 = (*puVar3 & (uint)uVar6) + puVar3[1]; + uVar6 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + iVar1 = (puVar3[2] & (uint)uVar6) + puVar3[3]; + uVar11 = 0x80; + uVar12 = 0x7f; + uVar10 = (char)iVar4; + if ((0xff < iVar4 + 0x80U) && (uVar10 = uVar12, iVar4 < 1)) { + uVar10 = uVar11; + } + puVar7[-3] = uVar10; + uVar6 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + uVar10 = (char)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar10 = uVar12, iVar1 < 1)) { + uVar10 = uVar11; + } + puVar7[-2] = uVar10; + iVar4 = (puVar3[4] & (uint)uVar6) + puVar3[5]; + uVar6 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + iVar1 = (puVar3[6] & (uint)uVar6) + puVar3[7]; + uVar10 = (char)iVar4; + if ((0xff < iVar4 + 0x80U) && (uVar10 = uVar12, iVar4 < 1)) { + uVar10 = uVar11; + } + puVar7[-1] = uVar10; + uVar10 = (char)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar10 = uVar12, iVar1 < 1)) { + uVar10 = uVar11; + } + puVar8 = puVar7 + 4; + *puVar7 = uVar10; + puVar3 = puVar3 + 8; + puVar7 = puVar8; + } while (puVar8 != (undefined1 *)(param_1 + (ulong)uVar2 * 4 + 7)); + iVar4 = (uVar2 + 1) * 4; + } + } + else if (param_2 < 4) { + iVar4 = 0; + } + else { + /* catch() { ... } // from try @ 003c2f2c with catch @ 003c3100 + catch() { ... } // from try @ 003c2f48 with catch @ 003c3100 */ + uVar2 = param_2 - 4U >> 2; + puVar3 = param_4; + puVar7 = (undefined1 *)(param_1 + 3); + do { + /* catch() { ... } // from try @ 003c2f3c with catch @ 003c3124 + catch() { ... } // from try @ 003c2f54 with catch @ 003c3124 */ + uVar6 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + uVar5 = (uint)uVar6; + /* catch() { ... } // from try @ 003c284c with catch @ 003c3148 + catch() { ... } // from try @ 003c2a40 with catch @ 003c3148 + catch() { ... } // from try @ 003c2cb8 with catch @ 003c3148 + catch() { ... } // from try @ 003c2ff4 with catch @ 003c3148 + catch() { ... } // from try @ 003c3024 with catch @ 003c3148 */ + iVar4 = (*puVar3 & uVar5) + puVar3[1]; + iVar1 = (puVar3[2] & (int)uVar5 >> 8) + puVar3[3]; + uVar11 = 0x80; + uVar12 = 0x7f; + uVar10 = (char)iVar4; + if ((0xff < iVar4 + 0x80U) && (uVar10 = uVar12, iVar4 < 1)) { + uVar10 = uVar11; + } + puVar7[-3] = uVar10; + uVar10 = (char)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar10 = uVar12, iVar1 < 1)) { + uVar10 = uVar11; + } + puVar7[-2] = uVar10; + iVar4 = (puVar3[4] & (int)uVar5 >> 0x10) + puVar3[5]; + iVar1 = (puVar3[6] & (int)uVar5 >> 0x18) + puVar3[7]; + uVar10 = (char)iVar4; + if ((0xff < iVar4 + 0x80U) && (uVar10 = uVar12, iVar4 < 1)) { + uVar10 = uVar11; + } + puVar7[-1] = uVar10; + puVar3 = puVar3 + 8; + uVar10 = (char)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar10 = uVar12, iVar1 < 1)) { + uVar10 = uVar11; + } + puVar8 = puVar7 + 4; + *puVar7 = uVar10; + puVar7 = puVar8; + } while (puVar8 != (undefined1 *)(param_1 + (ulong)uVar2 * 4 + 7)); + iVar4 = (uVar2 + 1) * 4; + } + if (iVar4 < param_2) { + lVar9 = (long)iVar4; + puVar3 = param_4 + lVar9 * 2; + puVar7 = (undefined1 *)(param_1 + lVar9); + do { + uVar6 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + iVar1 = (*puVar3 & (uint)uVar6) + puVar3[1]; + uVar10 = (undefined1)iVar1; + if ((0xff < iVar1 + 0x80U) && (uVar10 = 0x7f, iVar1 < 1)) { + uVar10 = 0x80; + } + puVar8 = puVar7 + 1; + *puVar7 = uVar10; + puVar3 = puVar3 + 2; + puVar7 = puVar8; + } while (puVar8 != (undefined1 *)(param_1 + lVar9 + 1 + (ulong)(uint)((param_2 + -1) - iVar4))); + } + *param_3 = uVar6; + return; +} + + +================================================================== + +### FUNC 003c33d8 (700 bytes) name=FUN_003c33d8 + +void FUN_003c33d8(undefined1 *param_1,int param_2,ulong *param_3,int *param_4) + +{ + uint *puVar1; + ulong uVar2; + ulong uVar3; + undefined1 *puVar4; + int iVar5; + int *piVar6; + uint *puVar7; + int iVar8; + undefined1 uVar9; + ulong uVar10; + ulong uVar11; + int iVar12; + undefined1 uVar13; + undefined1 uVar14; + + uVar10 = *param_3; + if (param_2 + -3 < 1) { + iVar12 = 0; + } + else { + iVar12 = 0; + uVar11 = uVar10 & 0xffffffff; + piVar6 = param_4; + puVar4 = param_1; + do { + uVar10 = (uVar10 >> 0x20) + uVar11 * 0xf83f630a; + uVar2 = (uVar10 & 0xffffffff) * 0xf83f630a + (uVar10 >> 0x20); + iVar5 = (int)((uVar10 & 0xffffffff) * (ulong)(uint)piVar6[1] >> 0x20); + uVar3 = (uVar2 & 0xffffffff) * 0xf83f630a + (uVar2 >> 0x20); + iVar8 = (int)((uVar2 & 0xffffffff) * (ulong)(uint)piVar6[6] >> 0x20); + iVar5 = (piVar6[4] + (int)uVar10) - + (((uint)((int)uVar10 - iVar5) >> (ulong)(piVar6[2] & 0x1f)) + iVar5 >> + (ulong)(*(byte *)(piVar6 + 3) & 0x1f)) * *piVar6; + uVar10 = (uVar3 & 0xffffffff) * 0xf83f630a + (uVar3 >> 0x20); + iVar12 = iVar12 + 4; + uVar11 = uVar10 & 0xffffffff; + iVar8 = (piVar6[9] + (int)uVar2) - + (((uint)((int)uVar2 - iVar8) >> (ulong)(*(byte *)(piVar6 + 7) & 0x1f)) + iVar8 >> + (ulong)(piVar6[8] & 0x1f)) * piVar6[5]; + uVar13 = 0x80; + uVar14 = 0x7f; + uVar9 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar9 = uVar14, iVar5 < 1)) { + uVar9 = uVar13; + } + *puVar4 = uVar9; + uVar9 = (char)iVar8; + if ((0xff < iVar8 + 0x80U) && (uVar9 = uVar14, iVar8 < 1)) { + uVar9 = uVar13; + } + puVar4[1] = uVar9; + iVar8 = (int)(uVar11 * (uint)piVar6[0x10] >> 0x20); + iVar5 = (int)((uVar3 & 0xffffffff) * (ulong)(uint)piVar6[0xb] >> 0x20); + iVar5 = (piVar6[0xe] + (int)uVar3) - + (((uint)((int)uVar3 - iVar5) >> (ulong)(piVar6[0xc] & 0x1f)) + iVar5 >> + (ulong)(piVar6[0xd] & 0x1f)) * piVar6[10]; + iVar8 = (piVar6[0x13] + (int)uVar10) - + (((uint)((int)uVar10 - iVar8) >> (ulong)(piVar6[0x11] & 0x1f)) + iVar8 >> + (ulong)(piVar6[0x12] & 0x1f)) * piVar6[0xf]; + uVar9 = (char)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar9 = uVar14, iVar5 < 1)) { + uVar9 = uVar13; + } + puVar4[2] = uVar9; + uVar9 = (char)iVar8; + if ((0xff < iVar8 + 0x80U) && (uVar9 = uVar14, iVar8 < 1)) { + uVar9 = uVar13; + } + puVar4[3] = uVar9; + puVar4 = puVar4 + 4; + piVar6 = piVar6 + 0x14; + } while (iVar12 < param_2 + -3); + iVar12 = (param_2 - 4U & 0xfffffffc) + 4; + } + if (iVar12 < param_2) { + uVar11 = uVar10 & 0xffffffff; + puVar4 = param_1 + iVar12; + puVar7 = (uint *)(param_4 + (long)iVar12 * 5 + 1); + do { + puVar1 = puVar7 + 5; + uVar10 = (uVar10 >> 0x20) + uVar11 * 0xf83f630a; + uVar11 = uVar10 & 0xffffffff; + iVar5 = (int)(uVar11 * *puVar7 >> 0x20); + iVar5 = (puVar7[3] + (int)uVar10) - + (((uint)((int)uVar10 - iVar5) >> (ulong)(puVar7[1] & 0x1f)) + iVar5 >> + (ulong)(puVar7[2] & 0x1f)) * puVar7[-1]; + uVar9 = (undefined1)iVar5; + if ((0xff < iVar5 + 0x80U) && (uVar9 = 0x7f, iVar5 < 1)) { + uVar9 = 0x80; + } + *puVar4 = uVar9; + puVar4 = puVar4 + 1; + puVar7 = puVar1; + } while (puVar1 != (uint *)(param_4 + + ((ulong)(uint)((param_2 + -1) - iVar12) + (long)iVar12) * 5 + 6)); + } + *param_3 = uVar10; + return; +} + + +================================================================== + +### FUNC 003c3694 (684 bytes) name=FUN_003c3694 + +void FUN_003c3694(long param_1,int param_2,ulong *param_3,uint *param_4,char param_5) + +{ + undefined2 *puVar1; + uint *puVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined2 *puVar7; + int iVar8; + uint *puVar9; + uint uVar10; + ulong uVar11; + long lVar12; + ulong uVar13; + + uVar11 = *param_3; + if (param_5 == '\0') { + iVar8 = 0; + if (3 < param_2) { + uVar6 = param_2 - 4U >> 2; + puVar9 = param_4; + puVar7 = (undefined2 *)(param_1 + 2); + do { + uVar11 = (uVar11 >> 0x20) + (uVar11 & 0xffffffff) * 0xf83f630a; + uVar13 = (uVar11 >> 0x20) + (uVar11 & 0xffffffff) * 0xf83f630a; + uVar3 = (*puVar9 & (uint)uVar11) + puVar9[1]; + uVar11 = (uVar13 >> 0x20) + (uVar13 & 0xffffffff) * 0xf83f630a; + uVar4 = (puVar9[2] & (uint)uVar13) + puVar9[3]; + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + uVar10 = (puVar9[4] & (uint)uVar11) + puVar9[5]; + uVar11 = (uVar11 >> 0x20) + (uVar11 & 0xffffffff) * 0xf83f630a; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + uVar5 = (puVar9[6] & (uint)uVar11) + puVar9[7]; + puVar7[-1] = (short)uVar3; + *puVar7 = (short)uVar4; + if (0xffff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + puVar1 = puVar7 + 4; + puVar7[1] = (short)uVar10; + puVar9 = puVar9 + 8; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + puVar7[2] = (short)uVar5; + puVar7 = puVar1; + } while (puVar1 != (undefined2 *)(param_1 + (ulong)uVar6 * 8 + 10)); + iVar8 = (uVar6 + 1) * 4; + } + } + else if (param_2 < 4) { + iVar8 = 0; + } + else { + uVar6 = param_2 - 4U >> 2; + puVar9 = param_4; + puVar7 = (undefined2 *)(param_1 + 2); + do { + puVar1 = puVar7 + 4; + uVar11 = (uVar11 >> 0x20) + (uVar11 & 0xffffffff) * 0xf83f630a; + uVar10 = (uint)uVar11; + uVar3 = (*puVar9 & uVar10) + puVar9[1]; + uVar4 = (puVar9[2] & (int)uVar10 >> 8) + puVar9[3]; + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + uVar5 = (puVar9[4] & (int)uVar10 >> 0x10) + puVar9[5]; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + uVar10 = (puVar9[6] & (int)uVar10 >> 0x18) + puVar9[7]; + puVar7[-1] = (short)uVar3; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + if (0xffff < uVar10) { + uVar10 = -(uint)(0 < (int)uVar10); + } + *puVar7 = (short)uVar4; + puVar7[1] = (short)uVar5; + puVar7[2] = (short)uVar10; + puVar9 = puVar9 + 8; + puVar7 = puVar1; + } while (puVar1 != (undefined2 *)(param_1 + (ulong)uVar6 * 8 + 10)); + iVar8 = (uVar6 + 1) * 4; + } + if (iVar8 < param_2) { + lVar12 = (long)iVar8; + puVar7 = (undefined2 *)(param_1 + lVar12 * 2); + puVar9 = param_4 + lVar12 * 2; + do { + puVar2 = puVar9 + 2; + uVar11 = (uVar11 >> 0x20) + (uVar11 & 0xffffffff) * 0xf83f630a; + uVar6 = (*puVar9 & (uint)uVar11) + puVar9[1]; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + *puVar7 = (short)uVar6; + puVar7 = puVar7 + 1; + puVar9 = puVar2; + } while (puVar2 != param_4 + (lVar12 + 1 + (ulong)(uint)((param_2 + -1) - iVar8)) * 2); + } + *param_3 = uVar11; + return; +} + + +================================================================== + +### FUNC 003c3940 (668 bytes) name=FUN_003c3940 + +void FUN_003c3940(undefined2 *param_1,int param_2,ulong *param_3,int *param_4) + +{ + uint *puVar1; + ulong uVar2; + ulong uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + undefined2 *puVar9; + int iVar10; + int *piVar11; + ulong uVar12; + int iVar13; + uint *puVar14; + int iVar15; + int iVar16; + ulong uVar17; + ulong uVar18; + long lVar19; + + uVar12 = *param_3; + if (param_2 < 4) { + iVar13 = 0; + } + else { + uVar4 = param_2 - 4U >> 2; + lVar19 = 0; + uVar18 = uVar12 & 0xffffffff; + piVar11 = param_4; + puVar9 = param_1; + do { + uVar17 = (uVar12 >> 0x20) + uVar18 * 0xf83f630a; + uVar2 = (uVar17 & 0xffffffff) * 0xf83f630a + (uVar17 >> 0x20); + uVar3 = (uVar2 & 0xffffffff) * 0xf83f630a + (uVar2 >> 0x20); + iVar15 = (int)((uVar17 & 0xffffffff) * (ulong)(uint)piVar11[1] >> 0x20); + uVar12 = (uVar3 & 0xffffffff) * 0xf83f630a + (uVar3 >> 0x20); + iVar10 = (int)((uVar2 & 0xffffffff) * (ulong)(uint)piVar11[6] >> 0x20); + uVar18 = uVar12 & 0xffffffff; + iVar13 = (int)((uVar3 & 0xffffffff) * (ulong)(uint)piVar11[0xb] >> 0x20); + iVar16 = (int)(uVar18 * (uint)piVar11[0x10] >> 0x20); + uVar5 = (piVar11[4] + (int)uVar17) - + (((uint)((int)uVar17 - iVar15) >> (ulong)(piVar11[2] & 0x1f)) + iVar15 >> + (ulong)(piVar11[3] & 0x1f)) * *piVar11; + uVar6 = (piVar11[9] + (int)uVar2) - + (((uint)((int)uVar2 - iVar10) >> (ulong)(*(byte *)(piVar11 + 7) & 0x1f)) + iVar10 >> + (ulong)(*(byte *)(piVar11 + 8) & 0x1f)) * piVar11[5]; + uVar7 = (piVar11[0xe] + (int)uVar3) - + (((uint)((int)uVar3 - iVar13) >> (ulong)(piVar11[0xc] & 0x1f)) + iVar13 >> + (ulong)(piVar11[0xd] & 0x1f)) * piVar11[10]; + if (0xffff < uVar5) { + uVar5 = -(uint)(0 < (int)uVar5); + } + uVar8 = (piVar11[0x13] + (int)uVar12) - + (((uint)((int)uVar12 - iVar16) >> (ulong)(*(byte *)(piVar11 + 0x11) & 0x1f)) + iVar16 + >> (ulong)(piVar11[0x12] & 0x1f)) * piVar11[0xf]; + if (0xffff < uVar6) { + uVar6 = -(uint)(0 < (int)uVar6); + } + lVar19 = lVar19 + 8; + if (0xffff < uVar7) { + uVar7 = -(uint)(0 < (int)uVar7); + } + if (0xffff < uVar8) { + uVar8 = -(uint)(0 < (int)uVar8); + } + *puVar9 = (short)uVar5; + puVar9[1] = (short)uVar6; + puVar9[2] = (short)uVar7; + puVar9[3] = (short)uVar8; + piVar11 = piVar11 + 0x14; + puVar9 = puVar9 + 4; + } while (lVar19 != ((ulong)uVar4 + 1) * 8); + iVar13 = (uVar4 + 1) * 4; + } + if (iVar13 < param_2) { + uVar18 = uVar12 & 0xffffffff; + puVar9 = param_1 + iVar13; + puVar14 = (uint *)(param_4 + (long)iVar13 * 5 + 1); + do { + puVar1 = puVar14 + 5; + uVar12 = (uVar12 >> 0x20) + uVar18 * 0xf83f630a; + uVar18 = uVar12 & 0xffffffff; + iVar10 = (int)(uVar18 * *puVar14 >> 0x20); + uVar4 = (puVar14[3] + (int)uVar12) - + (((uint)((int)uVar12 - iVar10) >> (ulong)(puVar14[1] & 0x1f)) + iVar10 >> + (ulong)(puVar14[2] & 0x1f)) * puVar14[-1]; + if (0xffff < uVar4) { + uVar4 = -(uint)(0 < (int)uVar4); + } + *puVar9 = (short)uVar4; + puVar9 = puVar9 + 1; + puVar14 = puVar1; + } while (puVar1 != (uint *)(param_4 + + ((ulong)(uint)((param_2 + -1) - iVar13) + (long)iVar13) * 5 + 6)); + } + *param_3 = uVar12; + return; +} + + +================================================================== + +### FUNC 003c3bdc (776 bytes) name=FUN_003c3bdc + +void FUN_003c3bdc(long param_1,int param_2,ulong *param_3,uint *param_4,char param_5) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + undefined2 *puVar6; + int iVar7; + uint *puVar8; + uint uVar9; + ulong uVar10; + undefined2 *puVar11; + long lVar12; + undefined2 uVar13; + undefined2 uVar14; + undefined2 uVar15; + + uVar10 = *param_3; + if (param_5 == '\0') { + iVar7 = 0; + if (3 < param_2) { + uVar5 = param_2 - 4U >> 2; + puVar8 = param_4; + puVar6 = (undefined2 *)(param_1 + 6); + do { + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + iVar7 = (*puVar8 & (uint)uVar10) + puVar8[1]; + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + iVar2 = (puVar8[2] & (uint)uVar10) + puVar8[3]; + uVar14 = 0x8000; + uVar15 = 0x7fff; + uVar13 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar13 = uVar15, iVar7 < 1)) { + uVar13 = uVar14; + } + puVar6[-3] = uVar13; + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + uVar13 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar13 = uVar15, iVar2 < 1)) { + uVar13 = uVar14; + } + uVar9 = puVar8[6]; + iVar7 = (puVar8[4] & (uint)uVar10) + puVar8[5]; + uVar3 = puVar8[7]; + puVar6[-2] = uVar13; + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + puVar8 = puVar8 + 8; + iVar2 = (uVar9 & (uint)uVar10) + uVar3; + uVar13 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar13 = uVar15, iVar7 < 1)) { + uVar13 = uVar14; + } + puVar6[-1] = uVar13; + uVar13 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar13 = uVar15, iVar2 < 1)) { + uVar13 = uVar14; + } + puVar11 = puVar6 + 4; + *puVar6 = uVar13; + puVar6 = puVar11; + } while (puVar11 != (undefined2 *)(param_1 + (ulong)uVar5 * 8 + 0xe)); + iVar7 = (uVar5 + 1) * 4; + } + } + else if (param_2 < 4) { + iVar7 = 0; + } + else { + uVar5 = param_2 - 4U >> 2; + puVar8 = param_4; + puVar6 = (undefined2 *)(param_1 + 6); + do { + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + uVar9 = (uint)uVar10; + iVar7 = (*puVar8 & uVar9) + puVar8[1]; + iVar2 = (puVar8[2] & (int)uVar9 >> 8) + puVar8[3]; + uVar14 = 0x8000; + uVar15 = 0x7fff; + uVar13 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar13 = uVar15, iVar7 < 1)) { + uVar13 = uVar14; + } + puVar6[-3] = uVar13; + uVar13 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar13 = uVar15, iVar2 < 1)) { + uVar13 = uVar14; + } + uVar3 = puVar8[6]; + iVar7 = (puVar8[4] & (int)uVar9 >> 0x10) + puVar8[5]; + uVar4 = puVar8[7]; + puVar6[-2] = uVar13; + iVar2 = (uVar3 & (int)uVar9 >> 0x18) + uVar4; + uVar13 = (short)iVar7; + if ((0xffff < iVar7 + 0x8000U) && (uVar13 = uVar15, iVar7 < 1)) { + uVar13 = uVar14; + } + puVar6[-1] = uVar13; + puVar8 = puVar8 + 8; + uVar13 = (short)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar13 = uVar15, iVar2 < 1)) { + uVar13 = uVar14; + } + puVar11 = puVar6 + 4; + *puVar6 = uVar13; + puVar6 = puVar11; + } while (puVar11 != (undefined2 *)(param_1 + (ulong)uVar5 * 8 + 0xe)); + iVar7 = (uVar5 + 1) * 4; + } + if (iVar7 < param_2) { + lVar12 = (long)iVar7; + puVar6 = (undefined2 *)(param_1 + lVar12 * 2); + puVar8 = param_4 + lVar12 * 2; + do { + puVar1 = puVar8 + 2; + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + iVar2 = (*puVar8 & (uint)uVar10) + puVar8[1]; + uVar13 = (undefined2)iVar2; + if ((0xffff < iVar2 + 0x8000U) && (uVar13 = 0x7fff, iVar2 < 1)) { + uVar13 = 0x8000; + } + *puVar6 = uVar13; + puVar6 = puVar6 + 1; + puVar8 = puVar1; + } while (puVar1 != param_4 + (lVar12 + 1 + (ulong)(uint)((param_2 + -1) - iVar7)) * 2); + } + *param_3 = uVar10; + return; +} + + +================================================================== + +### FUNC 003c3ee4 (728 bytes) name=FUN_003c3ee4 + +void FUN_003c3ee4(undefined2 *param_1,int param_2,ulong *param_3,int *param_4) + +{ + uint *puVar1; + ulong uVar2; + ulong uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + undefined2 *puVar9; + int iVar10; + int *piVar11; + uint *puVar12; + int iVar13; + undefined2 uVar14; + int iVar15; + ulong uVar16; + ulong uVar17; + ulong uVar18; + long lVar19; + undefined2 uVar20; + undefined2 uVar21; + + uVar16 = *param_3; + if (param_2 < 4) { + iVar15 = 0; + } + else { + uVar8 = param_2 - 4U >> 2; + lVar19 = 0; + uVar18 = uVar16 & 0xffffffff; + piVar11 = param_4; + puVar9 = param_1; + do { + uVar17 = (uVar16 >> 0x20) + uVar18 * 0xf83f630a; + lVar19 = lVar19 + 8; + uVar2 = (uVar17 & 0xffffffff) * 0xf83f630a + (uVar17 >> 0x20); + iVar15 = (int)((uVar17 & 0xffffffff) * (ulong)(uint)piVar11[1] >> 0x20); + uVar3 = (uVar2 & 0xffffffff) * 0xf83f630a + (uVar2 >> 0x20); + iVar10 = (int)((uVar2 & 0xffffffff) * (ulong)(uint)piVar11[6] >> 0x20); + uVar16 = (uVar3 & 0xffffffff) * 0xf83f630a + (uVar3 >> 0x20); + uVar18 = uVar16 & 0xffffffff; + iVar15 = (piVar11[4] + (int)uVar17) - + (((uint)((int)uVar17 - iVar15) >> (ulong)(piVar11[2] & 0x1f)) + iVar15 >> + (ulong)(*(byte *)(piVar11 + 3) & 0x1f)) * *piVar11; + iVar10 = (piVar11[9] + (int)uVar2) - + (((uint)((int)uVar2 - iVar10) >> (ulong)(*(byte *)(piVar11 + 7) & 0x1f)) + iVar10 >> + (ulong)(*(byte *)(piVar11 + 8) & 0x1f)) * piVar11[5]; + uVar20 = 0x8000; + uVar21 = 0x7fff; + uVar14 = (short)iVar15; + if ((0xffff < iVar15 + 0x8000U) && (uVar14 = uVar21, iVar15 < 1)) { + uVar14 = uVar20; + } + *puVar9 = uVar14; + uVar14 = (short)iVar10; + if ((0xffff < iVar10 + 0x8000U) && (uVar14 = uVar21, iVar10 < 1)) { + uVar14 = uVar20; + } + uVar4 = piVar11[0xb]; + uVar5 = piVar11[0x10]; + uVar6 = piVar11[0xc]; + uVar7 = piVar11[0x11]; + iVar15 = piVar11[0xe]; + puVar9[1] = uVar14; + iVar13 = (int)(uVar18 * uVar5 >> 0x20); + iVar10 = (int)((uVar3 & 0xffffffff) * (ulong)uVar4 >> 0x20); + iVar15 = (iVar15 + (int)uVar3) - + (((uint)((int)uVar3 - iVar10) >> (ulong)(uVar6 & 0x1f)) + iVar10 >> + (ulong)(piVar11[0xd] & 0x1f)) * piVar11[10]; + iVar10 = (piVar11[0x13] + (int)uVar16) - + (((uint)((int)uVar16 - iVar13) >> (ulong)(uVar7 & 0x1f)) + iVar13 >> + (ulong)(piVar11[0x12] & 0x1f)) * piVar11[0xf]; + uVar14 = (short)iVar15; + if ((0xffff < iVar15 + 0x8000U) && (uVar14 = uVar21, iVar15 < 1)) { + uVar14 = uVar20; + } + puVar9[2] = uVar14; + uVar14 = (short)iVar10; + if ((0xffff < iVar10 + 0x8000U) && (uVar14 = uVar21, iVar10 < 1)) { + uVar14 = uVar20; + } + puVar9[3] = uVar14; + puVar9 = puVar9 + 4; + piVar11 = piVar11 + 0x14; + } while (lVar19 != ((ulong)uVar8 + 1) * 8); + iVar15 = (uVar8 + 1) * 4; + } + if (iVar15 < param_2) { + uVar18 = uVar16 & 0xffffffff; + puVar9 = param_1 + iVar15; + puVar12 = (uint *)(param_4 + (long)iVar15 * 5 + 1); + do { + puVar1 = puVar12 + 5; + uVar16 = (uVar16 >> 0x20) + uVar18 * 0xf83f630a; + uVar18 = uVar16 & 0xffffffff; + iVar10 = (int)(uVar18 * *puVar12 >> 0x20); + iVar10 = (puVar12[3] + (int)uVar16) - + (((uint)((int)uVar16 - iVar10) >> (ulong)(puVar12[1] & 0x1f)) + iVar10 >> + (ulong)(puVar12[2] & 0x1f)) * puVar12[-1]; + uVar14 = (undefined2)iVar10; + if ((0xffff < iVar10 + 0x8000U) && (uVar14 = 0x7fff, iVar10 < 1)) { + uVar14 = 0x8000; + } + *puVar9 = uVar14; + puVar9 = puVar9 + 1; + puVar12 = puVar1; + } while (puVar1 != (uint *)(param_4 + + ((ulong)(uint)((param_2 + -1) - iVar15) + (long)iVar15) * 5 + 6)); + } + *param_3 = uVar16; + return; +} + + +================================================================== + +### FUNC 003c41bc (508 bytes) name=FUN_003c41bc + +void FUN_003c41bc(long param_1,int param_2,ulong *param_3,uint *param_4,char param_5) + +{ + int *piVar1; + uint *puVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int *piVar6; + uint *puVar7; + int iVar8; + uint uVar9; + ulong uVar10; + long lVar11; + ulong uVar12; + + uVar10 = *param_3; + if (param_5 == '\0') { + iVar8 = 0; + if (3 < param_2) { + uVar5 = param_2 - 4U >> 2; + puVar7 = param_4; + piVar6 = (int *)(param_1 + 4); + do { + uVar12 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + piVar1 = piVar6 + 4; + uVar3 = puVar7[2]; + uVar10 = (uVar12 >> 0x20) + (uVar12 & 0xffffffff) * 0xf83f630a; + uVar4 = puVar7[3]; + piVar6[-1] = (*puVar7 & (uint)uVar12) + puVar7[1]; + *piVar6 = (uVar3 & (uint)uVar10) + uVar4; + uVar12 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + uVar3 = puVar7[6]; + uVar10 = (uVar12 >> 0x20) + (uVar12 & 0xffffffff) * 0xf83f630a; + uVar4 = puVar7[7]; + piVar6[1] = (puVar7[4] & (uint)uVar12) + puVar7[5]; + piVar6[2] = (uVar3 & (uint)uVar10) + uVar4; + puVar7 = puVar7 + 8; + piVar6 = piVar1; + } while (piVar1 != (int *)(param_1 + (ulong)uVar5 * 0x10 + 0x14)); + iVar8 = (uVar5 + 1) * 4; + } + } + else if (param_2 < 4) { + iVar8 = 0; + } + else { + uVar5 = param_2 - 4U >> 2; + puVar7 = param_4; + piVar6 = (int *)(param_1 + 4); + do { + uVar3 = *puVar7; + piVar1 = piVar6 + 4; + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + uVar9 = (uint)uVar10; + uVar4 = puVar7[1]; + *piVar6 = (puVar7[2] & (int)uVar9 >> 8) + puVar7[3]; + piVar6[-1] = (uVar3 & uVar9) + uVar4; + uVar3 = puVar7[4]; + uVar4 = puVar7[5]; + piVar6[2] = (puVar7[6] & (int)uVar9 >> 0x18) + puVar7[7]; + piVar6[1] = (uVar3 & (int)uVar9 >> 0x10) + uVar4; + puVar7 = puVar7 + 8; + piVar6 = piVar1; + } while (piVar1 != (int *)(param_1 + (ulong)uVar5 * 0x10 + 0x14)); + iVar8 = (uVar5 + 1) * 4; + } + if (iVar8 < param_2) { + lVar11 = (long)iVar8; + piVar6 = (int *)(param_1 + lVar11 * 4); + puVar7 = param_4 + lVar11 * 2; + do { + puVar2 = puVar7 + 2; + uVar10 = (uVar10 >> 0x20) + (uVar10 & 0xffffffff) * 0xf83f630a; + *piVar6 = (*puVar7 & (uint)uVar10) + puVar7[1]; + piVar6 = piVar6 + 1; + puVar7 = puVar2; + } while (puVar2 != param_4 + (lVar11 + 1 + (ulong)(uint)((param_2 + -1) - iVar8)) * 2); + } + *param_3 = uVar10; + return; +} + + +================================================================== + +### FUNC 003c43b8 (576 bytes) name=FUN_003c43b8 + +void FUN_003c43b8(int *param_1,int param_2,ulong *param_3,int *param_4) + +{ + uint *puVar1; + ulong uVar2; + uint uVar3; + byte bVar4; + uint uVar5; + int *piVar6; + int iVar7; + int iVar8; + ulong uVar9; + int iVar10; + uint *puVar11; + int iVar12; + ulong uVar13; + int *piVar14; + long lVar15; + + uVar9 = *param_3; + if (param_2 < 4) { + iVar8 = 0; + } + else { + uVar5 = param_2 - 4U >> 2; + lVar15 = 0; + uVar13 = uVar9 & 0xffffffff; + piVar6 = param_4; + piVar14 = param_1; + do { + uVar13 = (uVar9 >> 0x20) + uVar13 * 0xf83f630a; + iVar8 = piVar6[9]; + uVar9 = (uVar13 & 0xffffffff) * 0xf83f630a + (uVar13 >> 0x20); + iVar10 = (int)((uVar13 & 0xffffffff) * (ulong)(uint)piVar6[1] >> 0x20); + uVar2 = (uVar9 & 0xffffffff) * 0xf83f630a + (uVar9 >> 0x20); + iVar12 = (int)((uVar9 & 0xffffffff) * (ulong)(uint)piVar6[6] >> 0x20); + bVar4 = *(byte *)(piVar6 + 7); + uVar3 = piVar6[8]; + iVar7 = piVar6[5]; + *piVar14 = (piVar6[4] + (int)uVar13) - + (((uint)((int)uVar13 - iVar10) >> (ulong)(piVar6[2] & 0x1f)) + iVar10 >> + (ulong)(piVar6[3] & 0x1f)) * *piVar6; + piVar14[1] = (iVar8 + (int)uVar9) - + (((uint)((int)uVar9 - iVar12) >> (ulong)(bVar4 & 0x1f)) + iVar12 >> + (ulong)(uVar3 & 0x1f)) * iVar7; + lVar15 = lVar15 + 0x10; + uVar9 = (uVar2 & 0xffffffff) * 0xf83f630a + (uVar2 >> 0x20); + uVar3 = piVar6[0x11]; + uVar13 = uVar9 & 0xffffffff; + iVar8 = piVar6[0x13]; + iVar10 = (int)((uVar2 & 0xffffffff) * (ulong)(uint)piVar6[0xb] >> 0x20); + iVar7 = piVar6[0xf]; + iVar12 = (int)(uVar13 * (uint)piVar6[0x10] >> 0x20); + bVar4 = *(byte *)(piVar6 + 0x12); + piVar14[2] = (piVar6[0xe] + (int)uVar2) - + (((uint)((int)uVar2 - iVar10) >> (ulong)(*(byte *)(piVar6 + 0xc) & 0x1f)) + + iVar10 >> (ulong)(*(byte *)(piVar6 + 0xd) & 0x1f)) * piVar6[10]; + piVar14[3] = (iVar8 + (int)uVar9) - + (((uint)((int)uVar9 - iVar12) >> (ulong)(uVar3 & 0x1f)) + iVar12 >> + (ulong)(bVar4 & 0x1f)) * iVar7; + piVar6 = piVar6 + 0x14; + piVar14 = piVar14 + 4; + } while (lVar15 != ((ulong)uVar5 + 1) * 0x10); + iVar8 = (uVar5 + 1) * 4; + } + if (iVar8 < param_2) { + uVar13 = uVar9 & 0xffffffff; + piVar6 = param_1 + iVar8; + puVar11 = (uint *)(param_4 + (long)iVar8 * 5 + 1); + do { + puVar1 = puVar11 + 5; + uVar9 = (uVar9 >> 0x20) + uVar13 * 0xf83f630a; + uVar13 = uVar9 & 0xffffffff; + iVar7 = (int)(uVar13 * *puVar11 >> 0x20); + *piVar6 = (puVar11[3] + (int)uVar9) - + (((uint)((int)uVar9 - iVar7) >> (ulong)(puVar11[1] & 0x1f)) + iVar7 >> + (ulong)(puVar11[2] & 0x1f)) * puVar11[-1]; + piVar6 = piVar6 + 1; + puVar11 = puVar1; + } while (puVar1 != (uint *)(param_4 + + ((ulong)(uint)((param_2 + -1) - iVar8) + (long)iVar8) * 5 + 6)); + } + *param_3 = uVar9; + return; +} + + +================================================================== + +### FUNC 003c45f8 (1036 bytes) name=FUN_003c45f8 + +void FUN_003c45f8(float *param_1,float *param_2,uint param_3,ulong param_4,float *param_5, + float *param_6,char param_7) + +{ + uint uVar1; + int iVar2; + float *pfVar3; + uint uVar4; + float *pfVar5; + uint uVar6; + long lVar7; + ulong uVar8; + long lVar9; + ulong uVar10; + ulong uVar11; + float *pfVar12; + uint uVar13; + uint uVar14; + float fVar15; + undefined8 uVar16; + undefined8 uVar17; + float fVar18; + undefined8 uVar19; + undefined8 uVar20; + undefined8 uVar21; + undefined8 uVar22; + + uVar4 = (uint)param_4; + if (param_7 == '\0') { + if (uVar4 == 1) { + fVar18 = *param_5; + fVar15 = *param_6; + if (0 < (int)param_3) { + if ((param_2 < param_1 + 4 && param_1 < param_2 + 4) || (param_3 < 9)) { + lVar9 = 0; + do { + param_2[lVar9] = fVar18 + param_1[lVar9] * fVar15; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)param_3); + } + else { + uVar4 = -((uint)((ulong)param_1 >> 2) & 3) & 3; + uVar13 = param_3; + if (uVar4 < param_3) { + uVar13 = uVar4; + } + uVar4 = uVar13; + if ((uVar13 != 0) && (*param_2 = fVar18 + *param_1 * fVar15, uVar13 != 1)) { + param_2[1] = fVar18 + param_1[1] * fVar15; + if (uVar13 == 3) { + param_2[2] = fVar18 + param_1[2] * fVar15; + } + else { + uVar4 = 2; + } + } + uVar1 = ((param_3 - uVar13) - 4 >> 2) + 1; + uVar6 = 0; + iVar2 = uVar1 * 4; + pfVar5 = param_1 + uVar13; + pfVar12 = param_2 + uVar13; + do { + uVar16 = *(undefined8 *)pfVar5; + uVar6 = uVar6 + 1; + *(ulong *)(pfVar12 + 2) = + CONCAT44(fVar18 + fVar15 * (float)((ulong)*(undefined8 *)(pfVar5 + 2) >> 0x20), + fVar18 + fVar15 * (float)*(undefined8 *)(pfVar5 + 2)); + *(ulong *)pfVar12 = + CONCAT44(fVar18 + fVar15 * (float)((ulong)uVar16 >> 0x20), + fVar18 + fVar15 * (float)uVar16); + pfVar5 = pfVar5 + 4; + pfVar12 = pfVar12 + 4; + } while (uVar6 < uVar1); + uVar4 = uVar4 + iVar2; + if (iVar2 != param_3 - uVar13) { + uVar11 = -(ulong)(uVar4 >> 0x1f) & 0xfffffffc00000000 | (ulong)uVar4 << 2; + *(float *)((long)param_2 + uVar11) = + fVar18 + *(float *)((long)param_1 + uVar11) * fVar15; + if (((int)(uVar4 + 1) < (int)param_3) && + (*(float *)((long)param_2 + uVar11 + 4) = + fVar18 + *(float *)((long)param_1 + uVar11 + 4) * fVar15, + (int)(uVar4 + 2) < (int)param_3)) { + *(float *)((long)param_2 + uVar11 + 8) = + fVar18 + *(float *)((long)param_1 + uVar11 + 8) * fVar15; + return; + } + } + } + } + } + else if (0 < (int)param_3) { + uVar11 = -(param_4 >> 0x1f & 1) & 0xfffffffc00000000 | (param_4 & 0xffffffff) << 2; + uVar13 = -((uint)((ulong)param_6 >> 2) & 3) & 3; + pfVar5 = param_2 + 4; + if (uVar4 < uVar13) { + uVar13 = uVar4; + } + uVar1 = ((uVar4 - uVar13) - 4 >> 2) + 1; + iVar2 = uVar1 * 4; + uVar6 = 0; + do { + if (0 < (int)uVar4) { + if ((uVar4 < 7 || + (param_1 < pfVar5 && param_2 < param_1 + 4 || + param_5 < pfVar5 && param_2 < param_5 + 4)) || + (param_6 < pfVar5 && param_2 < param_6 + 4)) { + lVar9 = 0; + do { + param_2[lVar9] = param_5[lVar9] + param_6[lVar9] * param_1[lVar9]; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar4); + } + else { + if ((uVar13 == 0) || (*param_2 = *param_5 + *param_6 * *param_1, uVar13 == 1)) { + uVar10 = (ulong)uVar13; + } + else { + param_2[1] = param_5[1] + param_6[1] * param_1[1]; + if (uVar13 == 3) { + param_2[2] = param_5[2] + param_6[2] * param_1[2]; + uVar10 = 3; + } + else { + uVar10 = 2; + } + } + if (2 < (uVar4 - 1) - uVar13) { + lVar9 = 0; + uVar14 = 0; + do { + lVar7 = lVar9 + (ulong)uVar13 * 4; + uVar14 = uVar14 + 1; + uVar22 = ((undefined8 *)((long)param_1 + lVar7))[1]; + uVar21 = *(undefined8 *)((long)param_1 + lVar7); + uVar17 = ((undefined8 *)((long)param_5 + lVar7))[1]; + uVar16 = *(undefined8 *)((long)param_5 + lVar7); + lVar9 = lVar9 + 0x10; + uVar20 = ((undefined8 *)((long)param_6 + lVar7))[1]; + uVar19 = *(undefined8 *)((long)param_6 + lVar7); + ((undefined8 *)((long)param_2 + lVar7))[1] = + CONCAT44((float)((ulong)uVar17 >> 0x20) + + (float)((ulong)uVar22 >> 0x20) * (float)((ulong)uVar20 >> 0x20), + (float)uVar17 + (float)uVar22 * (float)uVar20); + *(undefined8 *)((long)param_2 + lVar7) = + CONCAT44((float)((ulong)uVar16 >> 0x20) + + (float)((ulong)uVar21 >> 0x20) * (float)((ulong)uVar19 >> 0x20), + (float)uVar16 + (float)uVar21 * (float)uVar19); + } while (uVar14 < uVar1); + uVar10 = (ulong)(uint)((int)uVar10 + iVar2); + if (uVar4 - uVar13 == iVar2) goto LAB_003c47e8; + } + uVar8 = -(uVar10 >> 0x1f) & 0xfffffffc00000000 | uVar10 << 2; + *(float *)((long)param_2 + uVar8) = + *(float *)((long)param_5 + uVar8) + + *(float *)((long)param_6 + uVar8) * *(float *)((long)param_1 + uVar8); + if ((int)uVar10 + 1 < (int)uVar4) { + lVar9 = uVar8 + 4; + *(float *)((long)param_2 + lVar9) = + *(float *)((long)param_5 + lVar9) + + *(float *)((long)param_6 + lVar9) * *(float *)((long)param_1 + lVar9); + if ((int)uVar10 + 2 < (int)uVar4) { + lVar9 = uVar8 + 8; + *(float *)((long)param_2 + lVar9) = + *(float *)((long)param_5 + lVar9) + + *(float *)((long)param_6 + lVar9) * *(float *)((long)param_1 + lVar9); + } + } + } + } +LAB_003c47e8: + uVar6 = uVar6 + 1; + param_1 = (float *)((long)param_1 + uVar11); + param_2 = (float *)((long)param_2 + uVar11); + pfVar5 = (float *)((long)pfVar5 + uVar11); + } while (uVar6 != param_3); + } + } + else if (0 < (int)param_3) { + uVar11 = -(param_4 >> 0x1f & 1) & 0xfffffffc00000000 | (param_4 & 0xffffffff) << 2; + uVar13 = 0; + do { + if (0 < (int)uVar4) { + lVar9 = 0; + pfVar5 = param_6; + do { + fVar15 = param_5[lVar9]; + lVar7 = 0; + do { + pfVar12 = param_1 + lVar7; + pfVar3 = pfVar5 + lVar7; + lVar7 = lVar7 + 1; + fVar15 = fVar15 + *pfVar3 * *pfVar12; + } while ((int)lVar7 < (int)uVar4); + param_2[lVar9] = fVar15; + lVar9 = lVar9 + 1; + pfVar5 = (float *)((long)pfVar5 + uVar11); + } while ((int)lVar9 < (int)uVar4); + } + uVar13 = uVar13 + 1; + param_1 = (float *)((long)param_1 + uVar11); + param_2 = (float *)((long)param_2 + uVar11); + } while (uVar13 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c4a04 (1132 bytes) name=FUN_003c4a04 + +void FUN_003c4a04(float *param_1,double *param_2,uint param_3,uint param_4,double *param_5, + double *param_6,char param_7) + +{ + uint uVar1; + int iVar2; + int iVar3; + int iVar4; + double *pdVar5; + double *pdVar6; + float *pfVar7; + double *pdVar8; + uint uVar9; + long lVar10; + uint uVar11; + long lVar12; + double *pdVar13; + uint uVar14; + double *pdVar15; + uint uVar16; + double *pdVar17; + ulong uVar18; + undefined8 *puVar19; + undefined8 uVar20; + undefined8 uVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + + if (param_7 == '\0') { + if (param_4 == 1) { + dVar23 = *param_5; + dVar22 = *param_6; + if (0 < (int)param_3) { + uVar14 = (uint)((ulong)param_2 >> 3) & 1; + if (param_3 < uVar14) { + uVar14 = param_3; + } + uVar1 = param_3; + if (((int)param_3 < 6) || (uVar9 = 0, uVar1 = uVar14, uVar14 != 0)) { + uVar14 = uVar1; + *param_2 = dVar23 + (double)*param_1 * dVar22; + uVar9 = uVar14; + if ((uVar14 != 1) && + ((param_2[1] = dVar23 + (double)param_1[1] * dVar22, uVar14 != 2 && + (param_2[2] = dVar23 + (double)param_1[2] * dVar22, uVar14 != 3)))) { + param_2[3] = dVar23 + (double)param_1[3] * dVar22; + if (uVar14 == 5) { + param_2[4] = dVar23 + (double)param_1[4] * dVar22; + } + else { + uVar9 = 4; + } + } + if (param_3 == uVar14) { + return; + } + } + uVar1 = ((param_3 - uVar14) - 4 >> 2) + 1; + iVar4 = uVar1 * 4; + if (2 < (param_3 - 1) - uVar14) { + uVar11 = 0; + pfVar7 = param_1 + uVar14; + pdVar8 = param_2 + uVar14; + do { + uVar21 = *(undefined8 *)(pfVar7 + 2); + uVar20 = *(undefined8 *)pfVar7; + uVar11 = uVar11 + 1; + pdVar8[1] = dVar23 + dVar22 * (double)(float)((ulong)uVar20 >> 0x20); + *pdVar8 = dVar23 + dVar22 * (double)(float)uVar20; + pdVar8[3] = dVar23 + dVar22 * (double)(float)((ulong)uVar21 >> 0x20); + pdVar8[2] = dVar23 + dVar22 * (double)(float)uVar21; + pfVar7 = pfVar7 + 4; + pdVar8 = pdVar8 + 4; + } while (uVar11 < uVar1); + uVar9 = uVar9 + iVar4; + if (iVar4 == param_3 - uVar14) { + return; + } + } + iVar4 = uVar9 + 1; + param_2[(int)uVar9] = dVar23 + (double)param_1[(int)uVar9] * dVar22; + if (iVar4 < (int)param_3) { + iVar2 = uVar9 + 2; + param_2[iVar4] = dVar23 + (double)param_1[iVar4] * dVar22; + if (iVar2 < (int)param_3) { + param_2[iVar2] = dVar23 + (double)param_1[iVar2] * dVar22; + return; + } + } + } + } + else if (0 < (int)param_3) { + uVar14 = (uint)((ulong)param_6 >> 3) & 1; + if (param_4 < uVar14) { + uVar14 = param_4; + } + uVar18 = (ulong)uVar14; + uVar1 = ((param_4 - uVar14) - 4 >> 2) + 1; + pdVar8 = param_2 + 4; + lVar12 = NEON_shl(uVar18,2); + iVar4 = uVar1 * 4; + uVar9 = 0; + do { + if (0 < (int)param_4) { + if ((param_5 < pdVar8 && param_2 < param_5 + 4 || + param_6 < pdVar8 && param_2 < param_6 + 4) || (param_4 < 8)) { + lVar10 = 0; + do { + param_2[lVar10] = param_5[lVar10] + param_6[lVar10] * (double)param_1[lVar10]; + lVar10 = lVar10 + 1; + } while ((int)lVar10 < (int)param_4); + } + else { + if (uVar14 != 0) { + *param_2 = *param_5 + *param_6 * (double)*param_1; + } + uVar11 = (uint)(uVar14 != 0); + if (2 < (param_4 - 1) - uVar14) { + uVar16 = 0; + pdVar13 = param_6 + uVar18; + pdVar15 = param_5 + uVar18; + pdVar17 = param_2 + uVar18; + puVar19 = (undefined8 *)((long)param_1 + lVar12); + do { + uVar21 = puVar19[1]; + uVar20 = *puVar19; + pdVar5 = pdVar15 + 1; + dVar24 = *pdVar15; + pdVar6 = pdVar13 + 1; + dVar27 = *pdVar13; + dVar23 = pdVar15[3]; + dVar22 = pdVar15[2]; + uVar16 = uVar16 + 1; + dVar26 = pdVar13[3]; + dVar25 = pdVar13[2]; + pdVar13 = pdVar13 + 4; + pdVar15 = pdVar15 + 4; + pdVar17[1] = *pdVar5 + (double)(float)((ulong)uVar20 >> 0x20) * *pdVar6; + *pdVar17 = dVar24 + (double)(float)uVar20 * dVar27; + pdVar17[3] = dVar23 + (double)(float)((ulong)uVar21 >> 0x20) * dVar26; + pdVar17[2] = dVar22 + (double)(float)uVar21 * dVar25; + pdVar17 = pdVar17 + 4; + puVar19 = puVar19 + 2; + } while (uVar16 < uVar1); + uVar11 = uVar11 + iVar4; + if (param_4 - uVar14 == iVar4) goto LAB_003c4c30; + } + iVar2 = uVar11 + 1; + param_2[(int)uVar11] = + param_5[(int)uVar11] + param_6[(int)uVar11] * (double)param_1[(int)uVar11]; + if (iVar2 < (int)param_4) { + iVar3 = uVar11 + 2; + param_2[iVar2] = param_5[iVar2] + param_6[iVar2] * (double)param_1[iVar2]; + if (iVar3 < (int)param_4) { + param_2[iVar3] = param_5[iVar3] + param_6[iVar3] * (double)param_1[iVar3]; + } + } + } + } +LAB_003c4c30: + uVar9 = uVar9 + 1; + param_1 = param_1 + (int)param_4; + param_2 = param_2 + (int)param_4; + pdVar8 = pdVar8 + (int)param_4; + } while (uVar9 != param_3); + } + } + else if (0 < (int)param_3) { + uVar14 = 0; + do { + if (0 < (int)param_4) { + lVar12 = 0; + pdVar8 = param_6; + do { + dVar22 = param_5[lVar12]; + lVar10 = 0; + do { + pfVar7 = param_1 + lVar10; + pdVar13 = pdVar8 + lVar10; + lVar10 = lVar10 + 1; + dVar22 = dVar22 + *pdVar13 * (double)*pfVar7; + } while ((int)lVar10 < (int)param_4); + param_2[lVar12] = dVar22; + lVar12 = lVar12 + 1; + pdVar8 = pdVar8 + (int)param_4; + } while ((int)lVar12 < (int)param_4); + } + uVar14 = uVar14 + 1; + param_1 = param_1 + (int)param_4; + param_2 = param_2 + (int)param_4; + } while (uVar14 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c4e70 (388 bytes) name=FUN_003c4e70 + +void FUN_003c4e70(long param_1,long param_2,int param_3,uint param_4,float *param_5,float *param_6, + char param_7) + +{ + long lVar1; + float *pfVar2; + long lVar3; + float *pfVar4; + long lVar5; + ulong uVar6; + int iVar7; + float fVar8; + float fVar9; + + if (param_7 == '\0') { + if (param_4 == 1) { + fVar8 = *param_5; + fVar9 = *param_6; + if (0 < param_3) { + lVar5 = 0; + do { + lVar3 = lrintf(fVar8 + *(float *)(param_1 + lVar5 * 4) * fVar9); + *(int *)(param_2 + lVar5 * 4) = (int)lVar3; + lVar5 = lVar5 + 1; + } while (lVar5 != (ulong)(param_3 - 1) + 1); + } + } + else if (0 < param_3) { + uVar6 = -(ulong)(param_4 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_4 << 2; + iVar7 = 0; + do { + if (0 < (int)param_4) { + lVar5 = 0; + do { + lVar3 = lrintf(param_5[lVar5] + param_6[lVar5] * *(float *)(param_1 + lVar5 * 4)); + *(int *)(param_2 + lVar5 * 4) = (int)lVar3; + lVar5 = lVar5 + 1; + } while (lVar5 != (ulong)(param_4 - 1) + 1); + } + iVar7 = iVar7 + 1; + param_1 = param_1 + uVar6; + param_2 = param_2 + uVar6; + } while (iVar7 != param_3); + } + } + else if (0 < param_3) { + uVar6 = -(ulong)(param_4 >> 0x1f) & 0xfffffffc00000000 | (ulong)param_4 << 2; + iVar7 = 0; + do { + if (0 < (int)param_4) { + lVar5 = 0; + pfVar4 = param_6; + do { + fVar8 = param_5[lVar5]; + lVar3 = 0; + do { + lVar1 = lVar3 * 4; + pfVar2 = pfVar4 + lVar3; + lVar3 = lVar3 + 1; + fVar8 = fVar8 + *pfVar2 * *(float *)(param_1 + lVar1); + } while ((int)lVar3 < (int)param_4); + lVar3 = lrintf(fVar8); + *(int *)(param_2 + lVar5 * 4) = (int)lVar3; + lVar5 = lVar5 + 1; + pfVar4 = (float *)((long)pfVar4 + uVar6); + } while (lVar5 != (ulong)(param_4 - 1) + 1); + } + iVar7 = iVar7 + 1; + param_1 = param_1 + uVar6; + param_2 = param_2 + uVar6; + } while (iVar7 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c4ff4 (568 bytes) name=FUN_003c4ff4 + +void FUN_003c4ff4(long param_1,long param_2,int param_3,int param_4,float *param_5,float *param_6, + char param_7) + +{ + long lVar1; + float *pfVar2; + long lVar3; + undefined2 uVar4; + long lVar5; + float *pfVar6; + long lVar7; + float fVar8; + float fVar9; + int iVar10; + + if (param_7 == '\0') { + if (param_4 == 1) { + fVar8 = *param_5; + fVar9 = *param_6; + if (0 < param_3) { + lVar3 = 0; + do { + lVar7 = lrintf(fVar8 + *(float *)(param_1 + lVar3 * 4) * fVar9); + uVar4 = (undefined2)lVar7; + if ((0xffff < (int)lVar7 + 0x8000U) && (uVar4 = 0x7fff, (int)lVar7 < 1)) { + uVar4 = 0x8000; + } + *(undefined2 *)(param_2 + lVar3 * 2) = uVar4; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_3 - 1) + 1); + } + } + else if (0 < param_3) { + iVar10 = 0; + do { + if (0 < param_4) { + lVar3 = 0; + do { + lVar7 = lrintf(param_5[lVar3] + param_6[lVar3] * *(float *)(param_1 + lVar3 * 4)); + uVar4 = (undefined2)lVar7; + if ((0xffff < (int)lVar7 + 0x8000U) && (uVar4 = 0x7fff, (int)lVar7 < 1)) { + uVar4 = 0x8000; + } + *(undefined2 *)(param_2 + lVar3 * 2) = uVar4; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_4 - 1) + 1); + } + param_1 = param_1 + (long)param_4 * 4; + iVar10 = iVar10 + 1; + param_2 = param_2 + (long)param_4 * 2; + } while (iVar10 != param_3); + } + } + else if (0 < param_3) { + lVar3 = (long)param_4; + iVar10 = 0; + do { + if (0 < param_4) { + lVar7 = 0; + pfVar6 = param_6; + do { + fVar8 = param_5[lVar7]; + lVar5 = 0; + do { + lVar1 = lVar5 * 4; + pfVar2 = pfVar6 + lVar5; + lVar5 = lVar5 + 1; + fVar8 = fVar8 + *pfVar2 * *(float *)(param_1 + lVar1); + } while ((int)lVar5 < param_4); + lVar5 = lrintf(fVar8); + uVar4 = (undefined2)lVar5; + if ((0xffff < (int)lVar5 + 0x8000U) && (uVar4 = 0x7fff, (int)lVar5 < 1)) { + uVar4 = 0x8000; + } + *(undefined2 *)(param_2 + lVar7 * 2) = uVar4; + lVar7 = lVar7 + 1; + pfVar6 = pfVar6 + lVar3; + } while (lVar7 != (ulong)(param_4 - 1) + 1); + } + param_1 = param_1 + lVar3 * 4; + iVar10 = iVar10 + 1; + param_2 = param_2 + lVar3 * 2; + } while (iVar10 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c522c (516 bytes) name=FUN_003c522c + +void FUN_003c522c(long param_1,long param_2,int param_3,int param_4,float *param_5,float *param_6, + char param_7) + +{ + long lVar1; + float *pfVar2; + uint uVar3; + long lVar4; + short sVar5; + long lVar6; + float *pfVar7; + long lVar8; + float fVar9; + int iVar10; + float fVar11; + + if (param_7 == '\0') { + if (param_4 == 1) { + fVar9 = *param_5; + fVar11 = *param_6; + if (0 < param_3) { + lVar4 = 0; + do { + lVar8 = lrintf(fVar9 + *(float *)(param_1 + lVar4 * 4) * fVar11); + sVar5 = (short)lVar8; + if (0xffff < (uint)lVar8) { + sVar5 = -(ushort)(0 < (int)(uint)lVar8); + } + *(short *)(param_2 + lVar4 * 2) = sVar5; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_3 - 1) + 1); + } + } + else if (0 < param_3) { + iVar10 = 0; + do { + if (0 < param_4) { + lVar4 = 0; + do { + lVar8 = lrintf(param_5[lVar4] + param_6[lVar4] * *(float *)(param_1 + lVar4 * 4)); + sVar5 = (short)lVar8; + if (0xffff < (uint)lVar8) { + sVar5 = -(ushort)(0 < (int)(uint)lVar8); + } + *(short *)(param_2 + lVar4 * 2) = sVar5; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_4 - 1) + 1); + } + iVar10 = iVar10 + 1; + param_2 = param_2 + (long)param_4 * 2; + param_1 = param_1 + (long)param_4 * 4; + } while (iVar10 != param_3); + } + } + else if (0 < param_3) { + lVar4 = (long)param_4; + iVar10 = 0; + do { + if (0 < param_4) { + lVar8 = 0; + pfVar7 = param_6; + do { + fVar9 = param_5[lVar8]; + lVar6 = 0; + do { + lVar1 = lVar6 * 4; + pfVar2 = pfVar7 + lVar6; + lVar6 = lVar6 + 1; + fVar9 = fVar9 + *pfVar2 * *(float *)(param_1 + lVar1); + } while ((int)lVar6 < param_4); + lVar6 = lrintf(fVar9); + uVar3 = (uint)lVar6; + if (0xffff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *(short *)(param_2 + lVar8 * 2) = (short)uVar3; + lVar8 = lVar8 + 1; + pfVar7 = pfVar7 + lVar4; + } while (lVar8 != (ulong)(param_4 - 1) + 1); + } + param_1 = param_1 + lVar4 * 4; + iVar10 = iVar10 + 1; + param_2 = param_2 + lVar4 * 2; + } while (iVar10 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c5430 (532 bytes) name=FUN_003c5430 + +void FUN_003c5430(long param_1,long param_2,int param_3,int param_4,float *param_5,float *param_6, + char param_7) + +{ + long lVar1; + float *pfVar2; + long lVar3; + undefined1 uVar4; + long lVar5; + float *pfVar6; + long lVar7; + float fVar8; + int iVar9; + float fVar10; + + if (param_7 == '\0') { + if (param_4 == 1) { + fVar8 = *param_5; + fVar10 = *param_6; + if (0 < param_3) { + lVar3 = 0; + do { + lVar7 = lrintf(fVar8 + *(float *)(param_1 + lVar3 * 4) * fVar10); + uVar4 = (undefined1)lVar7; + if ((0xff < (int)lVar7 + 0x80U) && (uVar4 = 0x7f, (int)lVar7 < 1)) { + uVar4 = 0x80; + } + *(undefined1 *)(param_2 + lVar3) = uVar4; + lVar3 = lVar3 + 1; + } while (lVar3 != (ulong)(param_3 - 1) + 1); + } + } + else if (0 < param_3) { + lVar3 = NEON_shl((long)param_4,2); + iVar9 = 0; + do { + if (0 < param_4) { + lVar7 = 0; + do { + lVar5 = lrintf(param_5[lVar7] + param_6[lVar7] * *(float *)(param_1 + lVar7 * 4)); + uVar4 = (undefined1)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar4 = 0x7f, (int)lVar5 < 1)) { + uVar4 = 0x80; + } + *(undefined1 *)(param_2 + lVar7) = uVar4; + lVar7 = lVar7 + 1; + } while (lVar7 != (ulong)(param_4 - 1) + 1); + } + iVar9 = iVar9 + 1; + param_1 = param_1 + lVar3; + param_2 = param_2 + param_4; + } while (iVar9 != param_3); + } + } + else if (0 < param_3) { + lVar3 = (long)param_4; + iVar9 = 0; + do { + if (0 < param_4) { + lVar7 = 0; + pfVar6 = param_6; + do { + fVar8 = param_5[lVar7]; + lVar5 = 0; + do { + lVar1 = lVar5 * 4; + pfVar2 = pfVar6 + lVar5; + lVar5 = lVar5 + 1; + fVar8 = fVar8 + *pfVar2 * *(float *)(param_1 + lVar1); + } while ((int)lVar5 < param_4); + lVar5 = lrintf(fVar8); + uVar4 = (undefined1)lVar5; + if ((0xff < (int)lVar5 + 0x80U) && (uVar4 = 0x7f, (int)lVar5 < 1)) { + uVar4 = 0x80; + } + *(undefined1 *)(param_2 + lVar7) = uVar4; + lVar7 = lVar7 + 1; + pfVar6 = pfVar6 + lVar3; + } while (lVar7 != (ulong)(param_4 - 1) + 1); + } + param_1 = param_1 + lVar3 * 4; + iVar9 = iVar9 + 1; + param_2 = param_2 + lVar3; + } while (iVar9 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c5644 (476 bytes) name=FUN_003c5644 + +void FUN_003c5644(long param_1,long param_2,int param_3,int param_4,float *param_5,float *param_6, + char param_7) + +{ + long lVar1; + float *pfVar2; + uint uVar3; + long lVar4; + char cVar5; + long lVar6; + float *pfVar7; + int iVar8; + long lVar9; + float fVar10; + float fVar11; + + if (param_7 == '\0') { + if (param_4 == 1) { + fVar10 = *param_5; + fVar11 = *param_6; + if (0 < param_3) { + lVar4 = 0; + do { + lVar9 = lrintf(fVar10 + *(float *)(param_1 + lVar4 * 4) * fVar11); + cVar5 = (char)lVar9; + if (0xff < (uint)lVar9) { + cVar5 = -(0 < (int)(uint)lVar9); + } + *(char *)(param_2 + lVar4) = cVar5; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_3 - 1) + 1); + } + } + else if (0 < param_3) { + iVar8 = 0; + do { + if (0 < param_4) { + lVar4 = 0; + do { + lVar9 = lrintf(param_5[lVar4] + param_6[lVar4] * *(float *)(param_1 + lVar4 * 4)); + cVar5 = (char)lVar9; + if (0xff < (uint)lVar9) { + cVar5 = -(0 < (int)(uint)lVar9); + } + *(char *)(param_2 + lVar4) = cVar5; + lVar4 = lVar4 + 1; + } while (lVar4 != (ulong)(param_4 - 1) + 1); + } + iVar8 = iVar8 + 1; + param_1 = param_1 + (long)param_4 * 4; + param_2 = param_2 + param_4; + } while (iVar8 != param_3); + } + } + else if (0 < param_3) { + lVar4 = (long)param_4; + iVar8 = 0; + do { + if (0 < param_4) { + lVar9 = 0; + pfVar7 = param_6; + do { + fVar10 = param_5[lVar9]; + lVar6 = 0; + do { + lVar1 = lVar6 * 4; + pfVar2 = pfVar7 + lVar6; + lVar6 = lVar6 + 1; + fVar10 = fVar10 + *pfVar2 * *(float *)(param_1 + lVar1); + } while ((int)lVar6 < param_4); + lVar6 = lrintf(fVar10); + uVar3 = (uint)lVar6; + if (0xff < uVar3) { + uVar3 = -(uint)(0 < (int)uVar3); + } + *(char *)(param_2 + lVar9) = (char)uVar3; + lVar9 = lVar9 + 1; + pfVar7 = pfVar7 + lVar4; + } while (lVar9 != (ulong)(param_4 - 1) + 1); + } + iVar8 = iVar8 + 1; + param_1 = param_1 + lVar4 * 4; + param_2 = param_2 + lVar4; + } while (iVar8 != param_3); + } + return; +} + + +================================================================== + +### FUNC 003c5820 (456 bytes) name=FUN_003c5820 + +void FUN_003c5820(uint *param_1,ulong *param_2) + +{ + long lVar1; + undefined1 uVar2; + uint uVar3; + undefined4 uVar4; + undefined2 uVar5; + ulong uVar6; + char *pcVar7; + uint uVar8; + long lVar9; + long lVar10; + long lVar11; + uint uVar12; + long lVar13; + long lVar14; + uint uVar15; + uint uVar16; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar15 = param_1[2]; + uVar12 = param_1[3]; + uVar16 = uVar12 * uVar15; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c5950: + lVar9 = *(long *)(param_1 + 4); + lVar10 = *(long *)(param_1 + 0x14); + if ((int)uVar15 < 1) { + return; + } + lVar14 = 0; + lVar13 = lVar9; + while( true ) { + lVar11 = 0; + lVar13 = lVar13 + lVar14 * **(long **)(param_1 + 0x12); + if (0 < (int)uVar12) { + do { + uVar6 = (*param_2 >> 0x20) + (*param_2 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar6; + uVar3 = 0; + uVar8 = (uint)uVar6; + if (uVar16 != 0) { + uVar3 = uVar8 / uVar16; + } + uVar2 = *(undefined1 *)(lVar13 + lVar11); + uVar8 = uVar8 - uVar3 * uVar16; + uVar3 = 0; + if (uVar12 != 0) { + uVar3 = uVar8 / uVar12; + } + lVar1 = (int)uVar3 * lVar10 + (long)(int)(uVar8 - uVar3 * uVar12); + *(undefined1 *)(lVar13 + lVar11) = *(undefined1 *)(lVar9 + lVar1); + lVar11 = lVar11 + 1; + *(undefined1 *)(lVar9 + lVar1) = uVar2; + } while ((int)lVar11 < (int)uVar12); + } + lVar14 = lVar14 + 1; + if ((int)uVar15 <= (int)lVar14) break; + lVar13 = *(long *)(param_1 + 4); + } + return; + } + } + else { + uVar16 = 1; + lVar9 = 0; + do { + lVar10 = lVar9 * 4; + lVar9 = lVar9 + 1; + uVar16 = uVar16 * *(int *)(*(long *)(param_1 + 0x10) + lVar10); + } while ((int)lVar9 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar7 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar5 = s__arr_dims_<__2_004774e0._12_2_; + uVar4 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar7 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar7 + 8) = uVar4; + *(undefined2 *)(pcVar7 + 0xc) = uVar5; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = unsigned char]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar15 = param_1[2]; + uVar12 = param_1[3]; + goto LAB_003c5950; + } + } + lVar10 = *(long *)(param_1 + 4); + lVar9 = 0; + if (uVar16 != 0) { + do { + uVar6 = (*param_2 >> 0x20) + (*param_2 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar6; + uVar15 = 0; + uVar12 = (uint)uVar6; + if (uVar16 != 0) { + uVar15 = uVar12 / uVar16; + } + uVar6 = (ulong)(uVar12 - uVar15 * uVar16); + uVar2 = *(undefined1 *)(lVar10 + uVar6); + *(undefined1 *)(lVar10 + uVar6) = *(undefined1 *)(lVar10 + lVar9); + *(undefined1 *)(lVar10 + lVar9) = uVar2; + lVar9 = lVar9 + 1; + } while ((uint)lVar9 < uVar16); + } + return; +} + + +================================================================== + +### FUNC 003c59fc (476 bytes) name=FUN_003c59fc + +void FUN_003c59fc(uint *param_1,ulong *param_2) + +{ + long lVar1; + long lVar2; + undefined2 uVar3; + uint uVar4; + uint uVar5; + undefined4 uVar6; + ulong uVar7; + char *pcVar8; + long lVar9; + long lVar10; + long lVar11; + long lVar12; + uint uVar13; + uint uVar14; + long *plVar15; + uint uVar16; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar14 = param_1[2]; + uVar13 = param_1[3]; + uVar16 = uVar13 * uVar14; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c5b30: + lVar11 = *(long *)(param_1 + 4); + lVar10 = *(long *)(param_1 + 0x14); + if ((int)uVar14 < 1) { + return; + } + plVar15 = *(long **)(param_1 + 0x12); + lVar9 = 0; + do { + if (0 < (int)uVar13) { + uVar7 = *param_2; + lVar12 = 0; + lVar2 = lVar11 + lVar9 * *plVar15; + do { + uVar3 = *(undefined2 *)(lVar2 + lVar12 * 2); + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar4 = 0; + if (uVar16 != 0) { + uVar4 = (uint)uVar7 / uVar16; + } + uVar4 = (uint)uVar7 - uVar4 * uVar16; + uVar5 = 0; + if (uVar13 != 0) { + uVar5 = uVar4 / uVar13; + } + lVar1 = (int)uVar5 * lVar10 + (long)(int)(uVar4 - uVar5 * uVar13) * 2; + *(undefined2 *)(lVar2 + lVar12 * 2) = *(undefined2 *)(lVar11 + lVar1); + lVar12 = lVar12 + 1; + *(undefined2 *)(lVar11 + lVar1) = uVar3; + } while ((int)lVar12 < (int)uVar13); + *param_2 = uVar7; + } + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar14); + return; + } + } + else { + lVar11 = 0; + uVar16 = 1; + do { + lVar10 = lVar11 * 4; + lVar11 = lVar11 + 1; + uVar16 = uVar16 * *(int *)(*(long *)(param_1 + 0x10) + lVar10); + } while ((int)lVar11 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar3 = s__arr_dims_<__2_004774e0._12_2_; + uVar6 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar8 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar8 + 8) = uVar6; + *(undefined2 *)(pcVar8 + 0xc) = uVar3; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = short unsigned int]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar14 = param_1[2]; + uVar13 = param_1[3]; + goto LAB_003c5b30; + } + } + lVar11 = *(long *)(param_1 + 4); + if (uVar16 != 0) { + uVar7 = *param_2; + lVar10 = 0; + do { + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar14 = 0; + if (uVar16 != 0) { + uVar14 = (uint)uVar7 / uVar16; + } + lVar9 = (ulong)((uint)uVar7 - uVar14 * uVar16) * 2; + uVar3 = *(undefined2 *)(lVar11 + lVar9); + *(undefined2 *)(lVar11 + lVar9) = *(undefined2 *)(lVar11 + lVar10 * 2); + *(undefined2 *)(lVar11 + lVar10 * 2) = uVar3; + lVar10 = lVar10 + 1; + } while ((uint)lVar10 < uVar16); + *param_2 = uVar7; + } + return; +} + + +================================================================== + +### FUNC 003c5bec (476 bytes) name=FUN_003c5bec + +void FUN_003c5bec(uint *param_1,ulong *param_2) + +{ + long lVar1; + long lVar2; + undefined4 uVar3; + uint uVar4; + uint uVar5; + undefined2 uVar6; + ulong uVar7; + char *pcVar8; + long lVar9; + long lVar10; + long lVar11; + long lVar12; + uint uVar13; + uint uVar14; + long *plVar15; + uint uVar16; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar14 = param_1[2]; + uVar13 = param_1[3]; + uVar16 = uVar13 * uVar14; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c5d20: + lVar11 = *(long *)(param_1 + 4); + lVar10 = *(long *)(param_1 + 0x14); + if ((int)uVar14 < 1) { + return; + } + plVar15 = *(long **)(param_1 + 0x12); + lVar9 = 0; + do { + if (0 < (int)uVar13) { + uVar7 = *param_2; + lVar12 = 0; + lVar2 = lVar11 + lVar9 * *plVar15; + do { + uVar3 = *(undefined4 *)(lVar2 + lVar12 * 4); + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar4 = 0; + if (uVar16 != 0) { + uVar4 = (uint)uVar7 / uVar16; + } + uVar4 = (uint)uVar7 - uVar4 * uVar16; + uVar5 = 0; + if (uVar13 != 0) { + uVar5 = uVar4 / uVar13; + } + lVar1 = (int)uVar5 * lVar10 + (long)(int)(uVar4 - uVar5 * uVar13) * 4; + *(undefined4 *)(lVar2 + lVar12 * 4) = *(undefined4 *)(lVar11 + lVar1); + lVar12 = lVar12 + 1; + *(undefined4 *)(lVar11 + lVar1) = uVar3; + } while ((int)lVar12 < (int)uVar13); + *param_2 = uVar7; + } + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)uVar14); + return; + } + } + else { + lVar11 = 0; + uVar16 = 1; + do { + lVar10 = lVar11 * 4; + lVar11 = lVar11 + 1; + uVar16 = uVar16 * *(int *)(*(long *)(param_1 + 0x10) + lVar10); + } while ((int)lVar11 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar8 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar6 = s__arr_dims_<__2_004774e0._12_2_; + uVar3 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar8 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar8 + 8) = uVar3; + *(undefined2 *)(pcVar8 + 0xc) = uVar6; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = int]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar14 = param_1[2]; + uVar13 = param_1[3]; + goto LAB_003c5d20; + } + } + lVar11 = *(long *)(param_1 + 4); + if (uVar16 != 0) { + uVar7 = *param_2; + lVar10 = 0; + do { + uVar7 = (uVar7 >> 0x20) + (uVar7 & 0xffffffff) * 0xf83f630a; + uVar14 = 0; + if (uVar16 != 0) { + uVar14 = (uint)uVar7 / uVar16; + } + lVar9 = (ulong)((uint)uVar7 - uVar14 * uVar16) * 4; + uVar3 = *(undefined4 *)(lVar11 + lVar9); + *(undefined4 *)(lVar11 + lVar9) = *(undefined4 *)(lVar11 + lVar10 * 4); + *(undefined4 *)(lVar11 + lVar10 * 4) = uVar3; + lVar10 = lVar10 + 1; + } while ((uint)lVar10 < uVar16); + *param_2 = uVar7; + } + return; +} + + +================================================================== + +### FUNC 003c5ddc (556 bytes) name=FUN_003c5ddc + +void FUN_003c5ddc(uint *param_1,ulong *param_2) + +{ + undefined2 *puVar1; + long lVar2; + undefined1 uVar3; + undefined1 uVar4; + undefined1 uVar5; + uint uVar6; + undefined4 uVar7; + undefined2 uVar8; + char *pcVar9; + long lVar10; + uint uVar11; + undefined2 *puVar12; + ulong uVar13; + long lVar14; + long lVar15; + uint uVar16; + undefined2 *puVar17; + long lVar18; + long lVar19; + long lVar20; + uint uVar21; + uint uVar22; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar21 = param_1[2]; + uVar11 = param_1[3]; + uVar22 = uVar11 * uVar21; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c5f3c: + lVar10 = *(long *)(param_1 + 4); + lVar19 = *(long *)(param_1 + 0x14); + if ((int)uVar21 < 1) { + return; + } + lVar20 = 0; + lVar18 = lVar10; + while( true ) { + lVar15 = **(long **)(param_1 + 0x12); + if (0 < (int)uVar11) { + puVar17 = (undefined2 *)(lVar18 + lVar20 * lVar15); + do { + puVar12 = (undefined2 *)((long)puVar17 + 3); + uVar13 = (*param_2 >> 0x20) + (*param_2 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar13; + uVar6 = 0; + uVar16 = (uint)uVar13; + if (uVar22 != 0) { + uVar6 = uVar16 / uVar22; + } + uVar3 = *(undefined1 *)puVar17; + uVar4 = *(undefined1 *)((long)puVar17 + 1); + uVar5 = *(undefined1 *)(puVar17 + 1); + uVar16 = uVar16 - uVar6 * uVar22; + uVar6 = 0; + if (uVar11 != 0) { + uVar6 = uVar16 / uVar11; + } + lVar14 = (int)uVar6 * lVar19 + (long)(int)(uVar16 - uVar6 * uVar11) * 3; + lVar2 = lVar10 + lVar14; + *puVar17 = *(undefined2 *)(lVar10 + lVar14); + *(undefined1 *)(puVar17 + 1) = *(undefined1 *)(lVar2 + 2); + *(undefined1 *)(lVar10 + lVar14) = uVar3; + *(undefined1 *)(lVar2 + 1) = uVar4; + *(undefined1 *)(lVar2 + 2) = uVar5; + puVar17 = puVar12; + } while (puVar12 != (undefined2 *)(lVar18 + (ulong)(uVar11 - 1) * 3 + 3 + lVar20 * lVar15) + ); + } + lVar20 = lVar20 + 1; + if ((int)uVar21 <= (int)lVar20) break; + lVar18 = *(long *)(param_1 + 4); + } + return; + } + } + else { + uVar22 = 1; + lVar10 = 0; + do { + lVar19 = lVar10 * 4; + lVar10 = lVar10 + 1; + uVar22 = uVar22 * *(int *)(*(long *)(param_1 + 0x10) + lVar19); + } while ((int)lVar10 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar8 = s__arr_dims_<__2_004774e0._12_2_; + uVar7 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar9 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar9 + 8) = uVar7; + *(undefined2 *)(pcVar9 + 0xc) = uVar8; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]" + ,"/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar21 = param_1[2]; + uVar11 = param_1[3]; + goto LAB_003c5f3c; + } + } + puVar17 = *(undefined2 **)(param_1 + 4); + if (uVar22 != 0) { + puVar12 = puVar17; + do { + puVar1 = (undefined2 *)((long)puVar12 + 3); + uVar13 = (*param_2 >> 0x20) + (*param_2 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar13; + uVar21 = 0; + uVar11 = (uint)uVar13; + if (uVar22 != 0) { + uVar21 = uVar11 / uVar22; + } + lVar10 = (ulong)(uVar11 - uVar21 * uVar22) * 3; + uVar5 = *(undefined1 *)((long)puVar17 + lVar10); + uVar3 = *(undefined1 *)((long)puVar17 + lVar10 + 2); + uVar4 = *(undefined1 *)((long)puVar17 + lVar10 + 1); + *(undefined2 *)((long)puVar17 + lVar10) = *puVar12; + *(undefined1 *)((long)puVar17 + lVar10 + 2) = *(undefined1 *)(puVar12 + 1); + *(undefined1 *)puVar12 = uVar5; + *(undefined1 *)((long)puVar12 + 1) = uVar4; + *(undefined1 *)(puVar12 + 1) = uVar3; + puVar12 = puVar1; + } while (puVar1 != (undefined2 *)((long)puVar17 + ((ulong)(uVar22 - 1) + 1) * 3)); + } + return; +} + + +================================================================== + +### FUNC 003c601c (564 bytes) name=FUN_003c601c + +void FUN_003c601c(uint *param_1,ulong *param_2) + +{ + undefined4 *puVar1; + long lVar2; + undefined4 uVar3; + undefined2 uVar4; + undefined2 uVar5; + undefined2 uVar6; + uint uVar7; + uint uVar8; + long lVar9; + char *pcVar10; + long lVar11; + undefined4 *puVar12; + ulong uVar13; + long lVar14; + undefined4 *puVar15; + uint uVar16; + long lVar17; + long lVar18; + uint uVar19; + long *plVar20; + uint uVar21; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar19 = param_1[2]; + uVar16 = param_1[3]; + uVar21 = uVar16 * uVar19; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c617c: + lVar9 = *(long *)(param_1 + 4); + lVar17 = *(long *)(param_1 + 0x14); + if ((int)uVar19 < 1) { + return; + } + plVar20 = *(long **)(param_1 + 0x12); + lVar18 = 0; + do { + lVar14 = *plVar20; + if (0 < (int)uVar16) { + uVar13 = *param_2; + puVar15 = (undefined4 *)(lVar9 + lVar18 * lVar14); + do { + uVar4 = *(undefined2 *)puVar15; + puVar12 = (undefined4 *)((long)puVar15 + 6); + uVar13 = (uVar13 >> 0x20) + (uVar13 & 0xffffffff) * 0xf83f630a; + uVar5 = *(undefined2 *)((long)puVar15 + 2); + uVar7 = 0; + if (uVar21 != 0) { + uVar7 = (uint)uVar13 / uVar21; + } + *param_2 = uVar13; + uVar6 = *(undefined2 *)(puVar15 + 1); + uVar7 = (uint)uVar13 - uVar7 * uVar21; + uVar8 = 0; + if (uVar16 != 0) { + uVar8 = uVar7 / uVar16; + } + lVar11 = (int)uVar8 * lVar17 + (long)(int)(uVar7 - uVar8 * uVar16) * 6; + lVar2 = lVar9 + lVar11; + *puVar15 = *(undefined4 *)(lVar9 + lVar11); + *(undefined2 *)(puVar15 + 1) = *(undefined2 *)(lVar2 + 4); + *(undefined2 *)(lVar9 + lVar11) = uVar4; + *(undefined2 *)(lVar2 + 2) = uVar5; + *(undefined2 *)(lVar2 + 4) = uVar6; + puVar15 = puVar12; + } while (puVar12 != (undefined4 *)(lVar9 + (ulong)(uVar16 - 1) * 6 + 6 + lVar18 * lVar14)) + ; + } + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)uVar19); + return; + } + } + else { + lVar9 = 0; + uVar21 = 1; + do { + lVar17 = lVar9 * 4; + lVar9 = lVar9 + 1; + uVar21 = uVar21 * *(int *)(*(long *)(param_1 + 0x10) + lVar17); + } while ((int)lVar9 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar4 = s__arr_dims_<__2_004774e0._12_2_; + uVar3 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar10 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar10 + 8) = uVar3; + *(undefined2 *)(pcVar10 + 0xc) = uVar4; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]" + ,"/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar19 = param_1[2]; + uVar16 = param_1[3]; + goto LAB_003c617c; + } + } + puVar15 = *(undefined4 **)(param_1 + 4); + if (uVar21 != 0) { + uVar13 = *param_2; + puVar12 = puVar15; + do { + uVar3 = *puVar12; + puVar1 = (undefined4 *)((long)puVar12 + 6); + uVar13 = (uVar13 >> 0x20) + (uVar13 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar13; + uVar19 = 0; + if (uVar21 != 0) { + uVar19 = (uint)uVar13 / uVar21; + } + lVar9 = (ulong)((uint)uVar13 - uVar19 * uVar21) * 6; + uVar6 = *(undefined2 *)((long)puVar15 + lVar9); + uVar4 = *(undefined2 *)((long)puVar15 + lVar9 + 4); + uVar5 = *(undefined2 *)((long)puVar15 + lVar9 + 2); + *(undefined4 *)((long)puVar15 + lVar9) = uVar3; + *(undefined2 *)((long)puVar15 + lVar9 + 4) = *(undefined2 *)(puVar12 + 1); + *(undefined2 *)puVar12 = uVar6; + *(undefined2 *)((long)puVar12 + 2) = uVar5; + *(undefined2 *)(puVar12 + 1) = uVar4; + puVar12 = puVar1; + } while (puVar1 != (undefined4 *)((long)puVar15 + ((ulong)(uVar21 - 1) + 1) * 6)); + } + return; +} + + +================================================================== + +### FUNC 003c6264 (520 bytes) name=FUN_003c6264 + +void FUN_003c6264(uint *param_1,ulong *param_2) + +{ + long lVar1; + undefined8 *puVar2; + undefined4 uVar3; + undefined4 uVar4; + uint uVar5; + uint uVar6; + undefined2 uVar7; + ulong uVar8; + char *pcVar9; + ulong uVar10; + undefined8 *puVar11; + undefined8 *puVar12; + long lVar13; + undefined8 uVar14; + long lVar15; + uint uVar16; + long lVar17; + long lVar18; + uint uVar19; + long *plVar20; + uint uVar21; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar19 = param_1[2]; + uVar16 = param_1[3]; + uVar21 = uVar16 * uVar19; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c63ac: + lVar15 = *(long *)(param_1 + 4); + lVar17 = *(long *)(param_1 + 0x14); + if ((int)uVar19 < 1) { + return; + } + plVar20 = *(long **)(param_1 + 0x12); + lVar18 = 0; + do { + lVar13 = *plVar20; + if (0 < (int)uVar16) { + uVar8 = *param_2; + puVar12 = (undefined8 *)(lVar15 + lVar18 * lVar13); + do { + uVar3 = *(undefined4 *)puVar12; + uVar8 = (uVar8 >> 0x20) + (uVar8 & 0xffffffff) * 0xf83f630a; + uVar4 = *(undefined4 *)((long)puVar12 + 4); + *param_2 = uVar8; + uVar5 = 0; + if (uVar21 != 0) { + uVar5 = (uint)uVar8 / uVar21; + } + uVar5 = (uint)uVar8 - uVar5 * uVar21; + uVar6 = 0; + if (uVar16 != 0) { + uVar6 = uVar5 / uVar16; + } + lVar1 = (int)uVar6 * lVar17 + (long)(int)(uVar5 - uVar6 * uVar16) * 8; + puVar11 = puVar12 + 1; + *puVar12 = *(undefined8 *)(lVar15 + lVar1); + *(undefined4 *)(lVar15 + lVar1) = uVar3; + *(undefined4 *)(lVar15 + lVar1 + 4) = uVar4; + puVar12 = puVar11; + } while (puVar11 != (undefined8 *)(lVar15 + (ulong)(uVar16 - 1) * 8 + 8 + lVar18 * lVar13) + ); + } + lVar18 = lVar18 + 1; + } while ((int)lVar18 < (int)uVar19); + return; + } + } + else { + lVar15 = 0; + uVar21 = 1; + do { + lVar17 = lVar15 * 4; + lVar15 = lVar15 + 1; + uVar21 = uVar21 * *(int *)(*(long *)(param_1 + 0x10) + lVar17); + } while ((int)lVar15 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar9 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar7 = s__arr_dims_<__2_004774e0._12_2_; + uVar3 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar9 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar9 + 8) = uVar3; + *(undefined2 *)(pcVar9 + 0xc) = uVar7; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar19 = param_1[2]; + uVar16 = param_1[3]; + goto LAB_003c63ac; + } + } + puVar12 = *(undefined8 **)(param_1 + 4); + if (uVar21 != 0) { + uVar8 = *param_2; + puVar11 = puVar12; + do { + uVar14 = *puVar11; + puVar2 = puVar11 + 1; + uVar8 = (uVar8 >> 0x20) + (uVar8 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar8; + uVar19 = 0; + if (uVar21 != 0) { + uVar19 = (uint)uVar8 / uVar21; + } + uVar10 = (ulong)((uint)uVar8 - uVar19 * uVar21); + uVar4 = *(undefined4 *)(puVar12 + uVar10); + uVar3 = *(undefined4 *)((long)puVar12 + uVar10 * 8 + 4); + puVar12[uVar10] = uVar14; + *(undefined4 *)puVar11 = uVar4; + *(undefined4 *)((long)puVar11 + 4) = uVar3; + puVar11 = puVar2; + } while (puVar2 != puVar12 + (ulong)(uVar21 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003c6480 (564 bytes) name=FUN_003c6480 + +void FUN_003c6480(uint *param_1,ulong *param_2) + +{ + undefined8 *puVar1; + long lVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + uint uVar6; + uint uVar7; + undefined2 uVar8; + long lVar9; + char *pcVar10; + long lVar11; + undefined8 *puVar12; + ulong uVar13; + long lVar14; + undefined8 *puVar15; + uint uVar16; + undefined8 uVar17; + long lVar18; + long lVar19; + uint uVar20; + long *plVar21; + uint uVar22; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar20 = param_1[2]; + uVar16 = param_1[3]; + uVar22 = uVar16 * uVar20; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c65e0: + lVar9 = *(long *)(param_1 + 4); + lVar18 = *(long *)(param_1 + 0x14); + if ((int)uVar20 < 1) { + return; + } + plVar21 = *(long **)(param_1 + 0x12); + lVar19 = 0; + do { + lVar14 = *plVar21; + if (0 < (int)uVar16) { + uVar13 = *param_2; + puVar15 = (undefined8 *)(lVar9 + lVar19 * lVar14); + do { + uVar3 = *(undefined4 *)puVar15; + puVar12 = (undefined8 *)((long)puVar15 + 0xc); + uVar13 = (uVar13 >> 0x20) + (uVar13 & 0xffffffff) * 0xf83f630a; + uVar4 = *(undefined4 *)((long)puVar15 + 4); + uVar6 = 0; + if (uVar22 != 0) { + uVar6 = (uint)uVar13 / uVar22; + } + *param_2 = uVar13; + uVar5 = *(undefined4 *)(puVar15 + 1); + uVar6 = (uint)uVar13 - uVar6 * uVar22; + uVar7 = 0; + if (uVar16 != 0) { + uVar7 = uVar6 / uVar16; + } + lVar11 = (int)uVar7 * lVar18 + (long)(int)(uVar6 - uVar7 * uVar16) * 0xc; + lVar2 = lVar9 + lVar11; + *puVar15 = *(undefined8 *)(lVar9 + lVar11); + *(undefined4 *)(puVar15 + 1) = *(undefined4 *)(lVar2 + 8); + *(undefined4 *)(lVar9 + lVar11) = uVar3; + *(undefined4 *)(lVar2 + 4) = uVar4; + *(undefined4 *)(lVar2 + 8) = uVar5; + puVar15 = puVar12; + } while (puVar12 != + (undefined8 *)(lVar9 + (ulong)(uVar16 - 1) * 0xc + 0xc + lVar19 * lVar14)); + } + lVar19 = lVar19 + 1; + } while ((int)lVar19 < (int)uVar20); + return; + } + } + else { + lVar9 = 0; + uVar22 = 1; + do { + lVar18 = lVar9 * 4; + lVar9 = lVar9 + 1; + uVar22 = uVar22 * *(int *)(*(long *)(param_1 + 0x10) + lVar18); + } while ((int)lVar9 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar8 = s__arr_dims_<__2_004774e0._12_2_; + uVar3 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar10 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar10 + 8) = uVar3; + *(undefined2 *)(pcVar10 + 0xc) = uVar8; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar20 = param_1[2]; + uVar16 = param_1[3]; + goto LAB_003c65e0; + } + } + puVar15 = *(undefined8 **)(param_1 + 4); + if (uVar22 != 0) { + uVar13 = *param_2; + puVar12 = puVar15; + do { + uVar17 = *puVar12; + puVar1 = (undefined8 *)((long)puVar12 + 0xc); + uVar13 = (uVar13 >> 0x20) + (uVar13 & 0xffffffff) * 0xf83f630a; + *param_2 = uVar13; + uVar20 = 0; + if (uVar22 != 0) { + uVar20 = (uint)uVar13 / uVar22; + } + lVar9 = (ulong)((uint)uVar13 - uVar20 * uVar22) * 0xc; + uVar5 = *(undefined4 *)((long)puVar15 + lVar9); + uVar3 = *(undefined4 *)((long)puVar15 + lVar9 + 8); + uVar4 = *(undefined4 *)((long)puVar15 + lVar9 + 4); + *(undefined8 *)((long)puVar15 + lVar9) = uVar17; + *(undefined4 *)((long)puVar15 + lVar9 + 8) = *(undefined4 *)(puVar12 + 1); + *(undefined4 *)puVar12 = uVar5; + *(undefined4 *)((long)puVar12 + 4) = uVar4; + *(undefined4 *)(puVar12 + 1) = uVar3; + puVar12 = puVar1; + } while (puVar1 != (undefined8 *)((long)puVar15 + ((ulong)(uVar22 - 1) + 1) * 0xc)); + } + return; +} + + +================================================================== + +### FUNC 003c66c8 (556 bytes) name=FUN_003c66c8 + +void FUN_003c66c8(uint *param_1,ulong *param_2) + +{ + long lVar1; + undefined8 *puVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + uint uVar9; + uint uVar10; + undefined2 uVar11; + undefined8 *puVar12; + char *pcVar13; + ulong uVar14; + long lVar15; + ulong uVar16; + undefined8 *puVar17; + long lVar18; + undefined8 *puVar19; + uint uVar20; + long lVar21; + long lVar22; + uint uVar23; + long *plVar24; + uint uVar25; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar23 = param_1[2]; + uVar20 = param_1[3]; + uVar25 = uVar20 * uVar23; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c6824: + lVar15 = *(long *)(param_1 + 4); + lVar21 = *(long *)(param_1 + 0x14); + if ((int)uVar23 < 1) { + return; + } + plVar24 = *(long **)(param_1 + 0x12); + lVar22 = 0; + do { + lVar18 = *plVar24; + if (0 < (int)uVar20) { + uVar14 = *param_2; + puVar17 = (undefined8 *)(lVar15 + lVar22 * lVar18); + do { + uVar5 = *(undefined4 *)puVar17; + uVar14 = (uVar14 >> 0x20) + (uVar14 & 0xffffffff) * 0xf83f630a; + uVar6 = *(undefined4 *)((long)puVar17 + 4); + *param_2 = uVar14; + uVar9 = 0; + if (uVar25 != 0) { + uVar9 = (uint)uVar14 / uVar25; + } + uVar7 = *(undefined4 *)(puVar17 + 1); + uVar8 = *(undefined4 *)((long)puVar17 + 0xc); + uVar9 = (uint)uVar14 - uVar9 * uVar25; + uVar10 = 0; + if (uVar20 != 0) { + uVar10 = uVar9 / uVar20; + } + lVar1 = (int)uVar10 * lVar21 + (long)(int)(uVar9 - uVar10 * uVar20) * 0x10; + puVar12 = (undefined8 *)(lVar15 + lVar1); + uVar3 = puVar12[1]; + puVar19 = puVar17 + 2; + *puVar17 = *puVar12; + puVar17[1] = uVar3; + *(undefined4 *)(lVar15 + lVar1) = uVar5; + *(undefined4 *)((long)puVar12 + 4) = uVar6; + *(undefined4 *)(puVar12 + 1) = uVar7; + *(undefined4 *)((long)puVar12 + 0xc) = uVar8; + puVar17 = puVar19; + } while (puVar19 != + (undefined8 *)(lVar15 + (ulong)(uVar20 - 1) * 0x10 + 0x10 + lVar22 * lVar18)); + } + lVar22 = lVar22 + 1; + } while ((int)lVar22 < (int)uVar23); + return; + } + } + else { + lVar15 = 0; + uVar25 = 1; + do { + lVar21 = lVar15 * 4; + lVar15 = lVar15 + 1; + uVar25 = uVar25 * *(int *)(*(long *)(param_1 + 0x10) + lVar21); + } while ((int)lVar15 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar13 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar11 = s__arr_dims_<__2_004774e0._12_2_; + uVar5 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar13 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar13 + 8) = uVar5; + *(undefined2 *)(pcVar13 + 0xc) = uVar11; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar23 = param_1[2]; + uVar20 = param_1[3]; + goto LAB_003c6824; + } + } + puVar17 = *(undefined8 **)(param_1 + 4); + if (uVar25 != 0) { + uVar14 = *param_2; + puVar12 = puVar17; + do { + uVar3 = *puVar12; + uVar4 = puVar12[1]; + uVar14 = (uVar14 >> 0x20) + (uVar14 & 0xffffffff) * 0xf83f630a; + puVar19 = puVar12 + 2; + *param_2 = uVar14; + uVar23 = 0; + if (uVar25 != 0) { + uVar23 = (uint)uVar14 / uVar25; + } + uVar16 = (ulong)((uint)uVar14 - uVar23 * uVar25); + puVar2 = puVar17 + uVar16 * 2; + uVar8 = *(undefined4 *)(puVar17 + uVar16 * 2); + uVar5 = *(undefined4 *)((long)puVar2 + 4); + uVar6 = *(undefined4 *)(puVar2 + 1); + uVar7 = *(undefined4 *)((long)puVar2 + 0xc); + *puVar2 = uVar3; + puVar2[1] = uVar4; + *(undefined4 *)puVar12 = uVar8; + *(undefined4 *)((long)puVar12 + 4) = uVar5; + *(undefined4 *)(puVar12 + 1) = uVar6; + *(undefined4 *)((long)puVar12 + 0xc) = uVar7; + puVar12 = puVar19; + } while (puVar19 != puVar17 + ((ulong)(uVar25 - 1) + 1) * 2); + } + return; +} + + +================================================================== + +### FUNC 003c6908 (620 bytes) name=FUN_003c6908 + +void FUN_003c6908(uint *param_1,ulong *param_2) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + undefined4 uVar10; + uint uVar11; + uint uVar12; + undefined2 uVar13; + undefined8 *puVar14; + char *pcVar15; + long lVar16; + ulong uVar17; + long lVar18; + ulong uVar19; + long lVar20; + undefined8 *puVar21; + uint uVar22; + long lVar23; + long lVar24; + uint uVar25; + uint uVar26; + long *plVar27; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar25 = param_1[2]; + uVar22 = param_1[3]; + uVar26 = uVar22 * uVar25; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c6a84: + lVar18 = *(long *)(param_1 + 4); + lVar23 = *(long *)(param_1 + 0x14); + if ((int)uVar25 < 1) { + return; + } + plVar27 = *(long **)(param_1 + 0x12); + lVar24 = 0; + do { + lVar16 = *plVar27; + if (0 < (int)uVar22) { + uVar19 = *param_2; + puVar21 = (undefined8 *)(lVar18 + lVar24 * lVar16); + do { + uVar5 = *(undefined4 *)puVar21; + uVar19 = (uVar19 >> 0x20) + (uVar19 & 0xffffffff) * 0xf83f630a; + uVar6 = *(undefined4 *)((long)puVar21 + 4); + *param_2 = uVar19; + uVar11 = 0; + if (uVar26 != 0) { + uVar11 = (uint)uVar19 / uVar26; + } + uVar7 = *(undefined4 *)(puVar21 + 1); + uVar8 = *(undefined4 *)((long)puVar21 + 0xc); + uVar9 = *(undefined4 *)(puVar21 + 2); + uVar10 = *(undefined4 *)((long)puVar21 + 0x14); + uVar11 = (uint)uVar19 - uVar11 * uVar26; + uVar12 = 0; + if (uVar22 != 0) { + uVar12 = uVar11 / uVar22; + } + lVar20 = (int)uVar12 * lVar23 + (long)(int)(uVar11 - uVar12 * uVar22) * 0x18; + puVar2 = (undefined8 *)(lVar18 + lVar20); + uVar3 = puVar2[1]; + *puVar21 = *puVar2; + puVar21[1] = uVar3; + puVar14 = puVar21 + 3; + puVar21[2] = puVar2[2]; + *(undefined4 *)(lVar18 + lVar20) = uVar5; + *(undefined4 *)((long)puVar2 + 4) = uVar6; + *(undefined4 *)(puVar2 + 1) = uVar7; + *(undefined4 *)((long)puVar2 + 0xc) = uVar8; + *(undefined4 *)(puVar2 + 2) = uVar9; + *(undefined4 *)((long)puVar2 + 0x14) = uVar10; + puVar21 = puVar14; + } while (puVar14 != + (undefined8 *)(lVar18 + (ulong)(uVar22 - 1) * 0x18 + 0x18 + lVar24 * lVar16)); + } + lVar24 = lVar24 + 1; + } while ((int)lVar24 < (int)uVar25); + return; + } + } + else { + lVar18 = 0; + uVar26 = 1; + do { + lVar23 = lVar18 * 4; + lVar18 = lVar18 + 1; + uVar26 = uVar26 * *(int *)(*(long *)(param_1 + 0x10) + lVar23); + } while ((int)lVar18 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar15 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar13 = s__arr_dims_<__2_004774e0._12_2_; + uVar5 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar15 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar15 + 8) = uVar5; + *(undefined2 *)(pcVar15 + 0xc) = uVar13; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar25 = param_1[2]; + uVar22 = param_1[3]; + goto LAB_003c6a84; + } + } + puVar21 = *(undefined8 **)(param_1 + 4); + if (uVar26 != 0) { + uVar19 = *param_2; + puVar14 = puVar21; + do { + uVar3 = *puVar14; + uVar4 = puVar14[1]; + uVar19 = (uVar19 >> 0x20) + (uVar19 & 0xffffffff) * 0xf83f630a; + puVar2 = puVar14 + 3; + *param_2 = uVar19; + uVar25 = 0; + if (uVar26 != 0) { + uVar25 = (uint)uVar19 / uVar26; + } + uVar17 = (ulong)((uint)uVar19 - uVar25 * uVar26); + puVar1 = puVar21 + uVar17 * 3; + uVar10 = *(undefined4 *)(puVar21 + uVar17 * 3); + uVar5 = *(undefined4 *)((long)puVar1 + 4); + uVar6 = *(undefined4 *)(puVar1 + 1); + uVar7 = *(undefined4 *)((long)puVar1 + 0xc); + *puVar1 = uVar3; + puVar1[1] = uVar4; + uVar8 = *(undefined4 *)(puVar1 + 2); + uVar9 = *(undefined4 *)((long)puVar1 + 0x14); + puVar1[2] = puVar14[2]; + *(undefined4 *)puVar14 = uVar10; + *(undefined4 *)((long)puVar14 + 4) = uVar5; + *(undefined4 *)(puVar14 + 1) = uVar6; + *(undefined4 *)((long)puVar14 + 0xc) = uVar7; + *(undefined4 *)(puVar14 + 2) = uVar8; + *(undefined4 *)((long)puVar14 + 0x14) = uVar9; + puVar14 = puVar2; + } while (puVar2 != puVar21 + ((ulong)(uVar26 - 1) + 1) * 3); + } + return; +} + + +================================================================== + +### FUNC 003c6b88 (652 bytes) name=FUN_003c6b88 + +void FUN_003c6b88(uint *param_1,ulong *param_2) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + undefined4 uVar10; + undefined4 uVar11; + undefined4 uVar12; + uint uVar13; + uint uVar14; + undefined2 uVar15; + undefined8 *puVar16; + char *pcVar17; + long lVar18; + long lVar19; + ulong uVar20; + ulong uVar21; + long lVar22; + undefined8 *puVar23; + uint uVar24; + long lVar25; + uint uVar26; + long lVar27; + uint uVar28; + long *plVar29; + undefined8 local_10; + undefined8 local_8; + + if ((int)param_1[1] < 3) { + uVar28 = param_1[2]; + uVar24 = param_1[3]; + uVar26 = uVar24 * uVar28; + if ((*param_1 >> 0xe & 1) == 0) { +LAB_003c6d14: + lVar19 = *(long *)(param_1 + 4); + lVar25 = *(long *)(param_1 + 0x14); + if ((int)uVar28 < 1) { + return; + } + plVar29 = *(long **)(param_1 + 0x12); + lVar27 = 0; + do { + lVar18 = *plVar29; + if (0 < (int)uVar24) { + uVar20 = *param_2; + puVar23 = (undefined8 *)(lVar19 + lVar27 * lVar18); + do { + uVar5 = *(undefined4 *)puVar23; + puVar16 = puVar23 + 4; + uVar20 = (uVar20 >> 0x20) + (uVar20 & 0xffffffff) * 0xf83f630a; + uVar6 = *(undefined4 *)((long)puVar23 + 4); + uVar13 = 0; + if (uVar26 != 0) { + uVar13 = (uint)uVar20 / uVar26; + } + *param_2 = uVar20; + uVar7 = *(undefined4 *)(puVar23 + 1); + uVar8 = *(undefined4 *)((long)puVar23 + 0xc); + uVar9 = *(undefined4 *)(puVar23 + 2); + uVar10 = *(undefined4 *)((long)puVar23 + 0x14); + uVar11 = *(undefined4 *)(puVar23 + 3); + uVar12 = *(undefined4 *)((long)puVar23 + 0x1c); + uVar13 = (uint)uVar20 - uVar13 * uVar26; + uVar14 = 0; + if (uVar24 != 0) { + uVar14 = uVar13 / uVar24; + } + lVar22 = (int)uVar14 * lVar25 + (long)(int)(uVar13 - uVar14 * uVar24) * 0x20; + puVar2 = (undefined8 *)(lVar19 + lVar22); + uVar3 = puVar2[1]; + *puVar23 = *puVar2; + puVar23[1] = uVar3; + uVar3 = puVar2[3]; + puVar23[2] = puVar2[2]; + puVar23[3] = uVar3; + *(undefined4 *)(lVar19 + lVar22) = uVar5; + *(undefined4 *)((long)puVar2 + 4) = uVar6; + *(undefined4 *)(puVar2 + 1) = uVar7; + *(undefined4 *)((long)puVar2 + 0xc) = uVar8; + *(undefined4 *)(puVar2 + 2) = uVar9; + *(undefined4 *)((long)puVar2 + 0x14) = uVar10; + *(undefined4 *)(puVar2 + 3) = uVar11; + *(undefined4 *)((long)puVar2 + 0x1c) = uVar12; + puVar23 = puVar16; + } while (puVar16 != + (undefined8 *)(lVar19 + (ulong)(uVar24 - 1) * 0x20 + 0x20 + lVar27 * lVar18)); + } + lVar27 = lVar27 + 1; + } while ((int)lVar27 < (int)uVar28); + return; + } + } + else { + lVar19 = 0; + uVar26 = 1; + do { + lVar25 = lVar19 * 4; + lVar19 = lVar19 + 1; + uVar26 = uVar26 * *(int *)(*(long *)(param_1 + 0x10) + lVar25); + } while ((int)lVar19 < (int)param_1[1]); + if ((*param_1 >> 0xe & 1) == 0) { + local_10 = 0; + local_8 = 0; + pcVar17 = (char *)cv::String::allocate((String *)&local_10,0xe); + uVar15 = s__arr_dims_<__2_004774e0._12_2_; + uVar5 = s__arr_dims_<__2_004774e0._8_4_; + *(undefined8 *)pcVar17 = s__arr_dims_<__2_004774e0._0_8_; + *(undefined4 *)(pcVar17 + 8) = uVar5; + *(undefined2 *)(pcVar17 + 0xc) = uVar15; + cv::error(-0xd7,(String *)&local_10, + "void cv::randShuffle_(cv::Mat&, cv::RNG&, double) [with T = cv::Vec]", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x2fd); + cv::String::deallocate((String *)&local_10); + uVar28 = param_1[2]; + uVar24 = param_1[3]; + goto LAB_003c6d14; + } + } + puVar23 = *(undefined8 **)(param_1 + 4); + if (uVar26 != 0) { + uVar20 = *param_2; + puVar16 = puVar23; + do { + uVar3 = *puVar16; + uVar4 = puVar16[1]; + uVar20 = (uVar20 >> 0x20) + (uVar20 & 0xffffffff) * 0xf83f630a; + puVar2 = puVar16 + 4; + *param_2 = uVar20; + uVar28 = 0; + if (uVar26 != 0) { + uVar28 = (uint)uVar20 / uVar26; + } + uVar21 = (ulong)((uint)uVar20 - uVar28 * uVar26); + puVar1 = puVar23 + uVar21 * 4; + uVar12 = *(undefined4 *)(puVar23 + uVar21 * 4); + uVar5 = *(undefined4 *)((long)puVar1 + 4); + uVar6 = *(undefined4 *)(puVar1 + 1); + uVar7 = *(undefined4 *)((long)puVar1 + 0xc); + *puVar1 = uVar3; + puVar1[1] = uVar4; + uVar8 = *(undefined4 *)(puVar1 + 2); + uVar3 = puVar16[3]; + uVar9 = *(undefined4 *)((long)puVar1 + 0x14); + uVar10 = *(undefined4 *)(puVar1 + 3); + uVar11 = *(undefined4 *)((long)puVar1 + 0x1c); + puVar1[2] = puVar16[2]; + puVar1[3] = uVar3; + *(undefined4 *)puVar16 = uVar12; + *(undefined4 *)((long)puVar16 + 4) = uVar5; + *(undefined4 *)(puVar16 + 1) = uVar6; + *(undefined4 *)((long)puVar16 + 0xc) = uVar7; + *(undefined4 *)(puVar16 + 2) = uVar8; + *(undefined4 *)((long)puVar16 + 0x14) = uVar9; + *(undefined4 *)(puVar16 + 3) = uVar10; + *(undefined4 *)((long)puVar16 + 0x1c) = uVar11; + puVar16 = puVar2; + } while (puVar2 != puVar23 + ((ulong)(uVar26 - 1) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003c6e28 (476 bytes) name=Mat + +/* cv::Mat::Mat(cv::Size_, int, void*, unsigned long) */ + +void __thiscall cv::Mat::Mat(Mat *this,int *param_2,ulong param_3,long param_4,ulong param_5) + +{ + int iVar1; + int iVar2; + ulong uVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined4 uVar6; + undefined2 uVar7; + char cVar8; + int iVar9; + char *pcVar10; + uint uVar11; + ulong uVar12; + uint uVar13; + long lVar14; + Mat *pMVar15; + ulong uVar16; + undefined8 local_10; + undefined8 local_8; + + uVar11 = (uint)param_3 & 7; + uVar13 = ((uint)param_3 & 0xfff) + 0x42ff0000; + iVar1 = *param_2; + iVar9 = param_2[1]; + pMVar15 = this + 0x50; + *(undefined4 *)(this + 4) = 2; + *(int *)(this + 0xc) = iVar1; + iVar2 = ((uint)(param_3 >> 3) & 0x1ff) + 1 << (ulong)((uint)(0xfa50L >> (uVar11 << 1)) & 3); + *(uint *)this = uVar13; + *(int *)(this + 8) = iVar9; + *(long *)(this + 0x10) = param_4; + *(long *)(this + 0x18) = param_4; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x28) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(Mat **)(this + 0x40) = this + 8; + *(Mat **)(this + 0x48) = pMVar15; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + uVar16 = (long)iVar2 * (long)iVar1; + if (param_5 == 0) { + *(uint *)this = uVar13 | 0x4000; + lVar14 = 0; + goto LAB_003c6f08; + } + uVar12 = 0x88442211UL >> (uVar11 << 2) & 0xf; + if (iVar9 == 1) { + uVar3 = 0; + if (uVar12 != 0) { + uVar3 = uVar16 / uVar12; + } + param_5 = uVar16; + if (uVar16 - uVar3 * uVar12 != 0) goto LAB_003c6f54; +LAB_003c6ff4: + lVar14 = 0; + uVar11 = 0x4000; + } + else { + uVar3 = 0; + if (uVar12 != 0) { + uVar3 = param_5 / uVar12; + } + if (param_5 != uVar3 * uVar12) { +LAB_003c6f54: + local_10 = 0; + local_8 = 0; + pcVar10 = (char *)String::allocate((String *)&local_10,0x1f); + cVar8 = s_Step_must_be_a_multiple_of_esz1_00467cf0[0x1e]; + uVar7 = s_Step_must_be_a_multiple_of_esz1_00467cf0._28_2_; + uVar6 = s_Step_must_be_a_multiple_of_esz1_00467cf0._24_4_; + uVar5 = s_Step_must_be_a_multiple_of_esz1_00467cf0._8_8_; + uVar4 = s_Step_must_be_a_multiple_of_esz1_00467cf0._0_8_; + *(undefined8 *)(pcVar10 + 0x10) = s_Step_must_be_a_multiple_of_esz1_00467cf0._16_8_; + *(undefined4 *)(pcVar10 + 0x18) = uVar6; + *(undefined2 *)(pcVar10 + 0x1c) = uVar7; + pcVar10[0x1e] = cVar8; + *(undefined8 *)pcVar10 = uVar4; + *(undefined8 *)(pcVar10 + 8) = uVar5; + error(-0xd,(String *)&local_10,"cv::Mat::Mat(cv::Size, int, void*, size_t)", + "/builds/master_pack-android/opencv/modules/core/include/opencv2/core/mat.inl.hpp",0x1bc + ); + String::deallocate((String *)&local_10); + uVar13 = *(uint *)this; + pMVar15 = *(Mat **)(this + 0x48); + param_4 = *(long *)(this + 0x18); + iVar9 = *(int *)(this + 8); + } + if (param_5 == uVar16) goto LAB_003c6ff4; + lVar14 = uVar16 - param_5; + uVar11 = 0; + uVar16 = param_5; + } + *(uint *)this = uVar13 | uVar11; +LAB_003c6f08: + *(ulong *)pMVar15 = uVar16; + *(long *)(pMVar15 + 8) = (long)iVar2; + param_4 = param_4 + (long)iVar9 * uVar16; + *(long *)(this + 0x28) = param_4; + *(long *)(this + 0x20) = param_4 + lVar14; + return; +} + + +================================================================== + +### FUNC 003c7018 (684 bytes) name=gaussian + +/* cv::RNG::gaussian(double) */ + +undefined1 [16] __thiscall cv::RNG::gaussian(RNG *this,double param_1) + +{ + uint uVar1; + ulong uVar2; + double dVar3; + uint uVar4; + ulong uVar5; + ulong uVar6; + long lVar7; + long lVar8; + float fVar9; + double dVar10; + double dVar11; + double dVar12; + undefined1 auVar13 [16]; + float fVar14; + float fVar15; + double dVar16; + double dVar17; + float fVar18; + + dVar3 = DAT_003c72f0; + dVar12 = DAT_003c72e8; + dVar17 = DAT_003c72e0; + uVar5 = *(ulong *)this; + fVar9 = DAT_003c72f8; + if (DAT_005332e0 == '\0') { + DAT_00532ee0 = 0x76ad2212; + DAT_005332f0 = DAT_003c72d0; + DAT_005330e0 = 0x3f800000; + DAT_005334ec = DAT_003c72d4; + DAT_005332dc = DAT_003c72d8; + DAT_00532ee4 = 0; + lVar7 = 0; + dVar11 = DAT_003c72c8; + do { + dVar10 = ::exp(dVar11 * dVar11 * -0.5); + dVar10 = ::log(dVar17 / dVar11 + dVar10); + dVar16 = SQRT(dVar10 * -2.0); + if (NAN(dVar16)) { + dVar16 = ::sqrt(dVar10 * -2.0); + } + *(int *)((long)&DAT_005330dc + lVar7) = (int)((dVar16 / dVar11) * dVar12); + dVar11 = ::exp(dVar16 * dVar16 * -0.5); + lVar8 = lVar7 + -4; + *(float *)((long)&DAT_005332d8 + lVar7) = (float)dVar11; + *(float *)((long)&DAT_005334e8 + lVar7) = (float)(dVar16 * dVar3); + lVar7 = lVar8; + dVar11 = dVar16; + } while (lVar8 != -0x1f8); + DAT_005332e0 = '\x01'; + fVar9 = DAT_003c72f8; + } + do { + dVar17 = DAT_003c7300; + fVar18 = DAT_003c72fc; + fVar14 = DAT_003c72f8; + uVar4 = (uint)uVar5; + uVar2 = uVar5 & 0x7f; + uVar1 = uVar4 & 0x7f; + fVar15 = (float)(int)uVar4 * (float)(&DAT_005332f0)[(int)uVar1]; + uVar5 = (uVar5 >> 0x20) + (uVar5 & 0xffffffff) * 0xf83f630a; + if ((uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f) < (uint)(&DAT_00532ee0)[(int)uVar1]) + goto LAB_003c71ec; + if (uVar2 == 0) goto LAB_003c7230; + uVar2 = uVar5 & 0xffffffff; + fVar18 = (float)(&DAT_005330e0)[(int)uVar1]; + fVar14 = (float)(&DAT_005330e0)[(int)(uVar1 - 1)]; + dVar17 = (double)fVar15; + uVar5 = (uVar5 >> 0x20) + (uVar5 & 0xffffffff) * 0xf83f630a; + dVar12 = ::exp(dVar17 * dVar17 * -0.5); + } while (dVar12 <= (double)(fVar18 + (fVar14 - fVar18) * (float)uVar2 * fVar9)); +LAB_003c71f0: + *(ulong *)this = uVar5; + auVar13._0_8_ = param_1 * dVar17; + auVar13._8_8_ = 0; + return auVar13; +LAB_003c7230: + do { + uVar2 = uVar5 & 0xffffffff; + uVar6 = (uVar5 >> 0x20) + (uVar5 & 0xffffffff) * 0xf83f630a; + uVar5 = (uVar6 >> 0x20) + (uVar6 & 0xffffffff) * 0xf83f630a; + fVar9 = logf(fVar18 + fVar14 * (float)uVar2); + fVar15 = (float)((double)-fVar9 * dVar17); + fVar9 = logf(fVar18 + fVar14 * (float)(uVar6 & 0xffffffff)); + } while (-fVar9 + -fVar9 < fVar15 * fVar15); + if ((int)uVar4 < 1) { + dVar17 = (double)(DAT_003c7308 - fVar15); + } + else { + fVar15 = fVar15 + DAT_003c730c; +LAB_003c71ec: + dVar17 = (double)fVar15; + } + goto LAB_003c71f0; +} + + +================================================================== + +### FUNC 003c7310 (9364 bytes) name=fill + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ +/* cv::RNG::fill(cv::_InputOutputArray const&, int, cv::_InputArray const&, cv::_InputArray const&, + bool) */ + +void __thiscall +cv::RNG::fill(RNG *this,_InputOutputArray *param_1,int param_2,_InputArray *param_3, + _InputArray *param_4,bool param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int iVar4; + int *piVar5; + long lVar6; + uint uVar7; + uint uVar8; + int iVar9; + char cVar10; + float fVar11; + float fVar12; + double dVar13; + double dVar14; + float fVar15; + float fVar16; + undefined4 uVar17; + undefined2 uVar18; + undefined8 uVar19; + bool bVar20; + bool bVar21; + bool bVar22; + int iVar23; + int iVar24; + uint uVar25; + void *pvVar26; + ulong uVar27; + ulong uVar28; + char *pcVar29; + uint uVar30; + int iVar31; + long lVar32; + uint *puVar33; + undefined4 *puVar34; + undefined8 *puVar35; + Mat *pMVar36; + undefined1 *puVar37; + undefined8 *puVar38; + uint uVar39; + uint uVar40; + uint *puVar41; + uint uVar42; + long lVar43; + uint uVar44; + uint uVar45; + double *pdVar46; + ulong uVar47; + double *pdVar48; + double *pdVar49; + double *pdVar50; + double *pdVar51; + double *pdVar52; + long lVar53; + double dVar54; + double dVar55; + double dVar56; + undefined8 uVar57; + undefined1 uVar58; + undefined1 uVar59; + undefined1 uVar60; + undefined1 uVar61; + undefined1 uVar62; + undefined1 uVar63; + undefined1 uVar64; + undefined1 uVar65; + undefined1 uVar66; + undefined1 uVar67; + undefined1 uVar68; + undefined1 uVar69; + undefined1 uVar70; + undefined1 uVar71; + undefined1 uVar72; + undefined1 uVar73; + undefined1 uVar74; + undefined1 uVar75; + undefined1 uVar76; + undefined1 uVar77; + undefined1 uVar78; + undefined1 uVar79; + float fVar80; + double dVar81; + undefined1 auVar82 [16]; + undefined1 auVar83 [16]; + float fVar84; + undefined1 uVar85; + double dVar86; + undefined1 auVar87 [16]; + double dVar88; + undefined1 auVar89 [16]; + double dVar90; + double dVar91; + double dVar92; + float fVar93; + double dVar94; + uint uStack_b2c; + Mat *local_ae8; + Mat *local_ae0; + uint local_ac8; + long local_ac0; + code *local_aa8; + undefined1 *local_aa0; + code *local_a90; + byte local_a88; + bool local_a84; + Mat *local_a80; + ulong local_a68; + uchar *local_a58; + undefined8 local_a50; + undefined8 local_a48; + undefined8 local_a40; + undefined8 local_a38; + code *local_a30; + code *local_a28; + code *local_a20; + code *local_a18; + Mat *local_a10; + undefined8 uStack_a08; + uint local_a00; + uint local_9fc; + Mat *local_9f8; + undefined4 local_9f0; + undefined4 local_9ec; + ulong local_9e0; + uint local_9d8; + uint local_9c0; + int local_9bc; + undefined4 local_9b8; + undefined4 local_9b4; + undefined8 local_9b0; + undefined8 local_9a8; + undefined8 local_9a0; + undefined8 local_998; + undefined8 local_990; + long local_988; + undefined4 *local_980; + undefined8 *local_978; + undefined8 local_970; + undefined8 local_968; + uint local_960; + int local_95c; + uint local_958; + int local_954; + double *local_950; + undefined8 local_948; + undefined8 local_940; + undefined8 local_938; + undefined8 local_930; + long local_928; + uint *local_920; + undefined8 *local_918; + undefined8 local_910; + undefined8 local_908; + uint local_900; + int local_8fc; + uint local_8f8; + uint local_8f4; + double *local_8f0; + undefined8 local_8e8; + undefined8 local_8e0; + undefined8 local_8d8; + undefined8 local_8d0; + long local_8c8; + uint *local_8c0; + undefined8 *local_8b8; + undefined8 local_8b0; + undefined8 local_8a8; + double *local_8a0; + ulong local_898; + double adStack_890 [136]; + undefined1 *local_450; + ulong local_448; + undefined1 auStack_440 [56]; + undefined1 *local_408; + undefined1 auStack_400 [1024]; + + iVar23 = _InputArray::kind((_InputArray *)param_1); + if (iVar23 == 0x10000) { + pMVar36 = *(Mat **)(param_1 + 8); + local_980 = &local_9b8; + local_978 = &local_970; + local_9c0 = *(uint *)pMVar36; + local_9bc = *(int *)(pMVar36 + 4); + local_9b8 = *(undefined4 *)(pMVar36 + 8); + local_9b4 = *(undefined4 *)(pMVar36 + 0xc); + local_9b0 = *(undefined8 *)(pMVar36 + 0x10); + local_9a8 = *(undefined8 *)(pMVar36 + 0x18); + local_9a0 = *(undefined8 *)(pMVar36 + 0x20); + local_998 = *(undefined8 *)(pMVar36 + 0x28); + local_990 = *(undefined8 *)(pMVar36 + 0x30); + local_988 = *(long *)(pMVar36 + 0x38); + local_968 = 0; + local_970 = 0; + if (local_988 != 0) { + piVar5 = (int *)(local_988 + 0x14); + do { + cVar10 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar21) { + *piVar5 = *piVar5 + 1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + } + if (2 < *(int *)(pMVar36 + 4)) { + local_9bc = 0; + Mat::copySize((Mat *)&local_9c0,pMVar36); + } + } + else { + _InputArray::getMat_((int)param_1); + } + local_a80 = (Mat *)&local_9c0; + iVar23 = _InputArray::kind(param_3); + if (iVar23 == 0x10000) { + pMVar36 = *(Mat **)(param_3 + 8); + local_920 = &local_958; + local_918 = &local_910; + local_960 = *(uint *)pMVar36; + local_95c = *(int *)(pMVar36 + 4); + local_958 = *(uint *)(pMVar36 + 8); + local_954 = *(int *)(pMVar36 + 0xc); + local_950 = *(double **)(pMVar36 + 0x10); + local_948 = *(undefined8 *)(pMVar36 + 0x18); + local_940 = *(undefined8 *)(pMVar36 + 0x20); + local_938 = *(undefined8 *)(pMVar36 + 0x28); + local_930 = *(undefined8 *)(pMVar36 + 0x30); + local_928 = *(long *)(pMVar36 + 0x38); + local_908 = 0; + local_910 = 0; + if (local_928 != 0) { + piVar5 = (int *)(local_928 + 0x14); + do { + cVar10 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar21) { + *piVar5 = *piVar5 + 1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + } + if (2 < *(int *)(pMVar36 + 4)) { + local_95c = 0; + Mat::copySize((Mat *)&local_960,pMVar36); + } + } + else { + _InputArray::getMat_((int)param_3); + } + local_ae8 = (Mat *)&local_960; + iVar23 = _InputArray::kind(param_4); + if (iVar23 == 0x10000) { + pMVar36 = *(Mat **)(param_4 + 8); + local_8c0 = &local_8f8; + local_8b8 = &local_8b0; + local_900 = *(uint *)pMVar36; + local_8fc = *(int *)(pMVar36 + 4); + local_8f8 = *(uint *)(pMVar36 + 8); + local_8f4 = *(uint *)(pMVar36 + 0xc); + local_8f0 = *(double **)(pMVar36 + 0x10); + local_8e8 = *(undefined8 *)(pMVar36 + 0x18); + local_8e0 = *(undefined8 *)(pMVar36 + 0x20); + local_8d8 = *(undefined8 *)(pMVar36 + 0x28); + local_8d0 = *(undefined8 *)(pMVar36 + 0x30); + local_8c8 = *(long *)(pMVar36 + 0x38); + local_8a8 = 0; + local_8b0 = 0; + if (local_8c8 != 0) { + piVar5 = (int *)(local_8c8 + 0x14); + do { + cVar10 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar21) { + *piVar5 = *piVar5 + 1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + } + if (2 < *(int *)(pMVar36 + 4)) { + local_8fc = 0; + Mat::copySize((Mat *)&local_900,pMVar36); + } + } + else { + _InputArray::getMat_((int)param_4); + } + uVar30 = local_9c0; + local_ae0 = (Mat *)&local_900; + local_8a0 = adStack_890; + uVar8 = local_9c0 >> 3 & 0x1ff; + local_898 = 0x88; + uVar1 = uVar8 + 1; + uVar7 = local_9c0 & 7; + if ((((local_960 >> 3 & 0x1ff) != 0) || ((local_958 != 1 && (local_954 != 1)))) || + (((local_958 + local_954) - 1 != uVar1 && + ((local_958 + local_954 != 2 && + ((((local_920[1] != 1 || (*local_920 != 4)) || ((local_960 & 0xfff) != 6)) || (4 < uVar1))))) + ))) { + local_a50 = 0; + local_a48 = 0; + pvVar26 = (void *)String::allocate((String *)&local_a50,0xdf); + memcpy(pvVar26, + "_param1.channels() == 1 && (_param1.rows == 1 || _param1.cols == 1) && (_param1.rows + _param1.cols - 1 == cn || _param1.rows + _param1.cols - 1 == 1 || (_param1.size() == Size(1, 4) && _param1.type() == CV_64F && cn <= 4))" + ,0xdf); + error(-0xd7,(String *)&local_a50, + "void cv::RNG::fill(cv::InputOutputArray, int, cv::InputArray, cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x1ed); + String::deallocate((String *)&local_a50); + } + if (((local_900 >> 3 & 0x1ff) != 0) || + ((((local_8f8 != 1 && (local_8f4 != 1)) || + ((((local_8f8 + local_8f4) - 1 != uVar1 && (local_8f8 + local_8f4 != 2)) && + ((((local_920[1] != 1 || (*local_920 != 4)) || ((local_960 & 0xfff) != 6)) || (4 < uVar1)))) + )) && (((local_8f8 != uVar1 || (param_2 != 1)) || (uVar1 != local_8f4)))))) { + local_a40 = 0; + local_a38 = 0; + pvVar26 = (void *)String::allocate((String *)&local_a40,0x127); + memcpy(pvVar26,&DAT_00477610,0x127); + error(-0xd7,(String *)&local_a40, + "void cv::RNG::fill(cv::InputOutputArray, int, cv::InputArray, cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x1f2); + String::deallocate((String *)&local_a40); + } + if (local_95c < 3) { + uVar45 = local_954 * local_958; + } + else { + uVar45 = 1; + lVar32 = 0; + do { + puVar33 = local_920 + lVar32; + lVar32 = lVar32 + 1; + uVar45 = uVar45 * *puVar33; + } while ((int)lVar32 < local_95c); + } + if (local_8fc < 3) { + uVar25 = local_8f4 * local_8f8; + } + else { + uVar25 = 1; + lVar32 = 0; + do { + puVar33 = local_8c0 + lVar32; + lVar32 = lVar32 + 1; + uVar25 = uVar25 * *puVar33; + } while ((int)lVar32 < local_8fc); + } + if (param_2 != 0) { + if (param_2 != 1) { + local_450 = (undefined1 *)0x0; + local_448 = 0; + pcVar29 = (char *)String::allocate((String *)&local_450,0x19); + cVar10 = s_Unknown_distribution_type_00477748[0x18]; + uVar19 = s_Unknown_distribution_type_00477748._8_8_; + uVar57 = s_Unknown_distribution_type_00477748._0_8_; + *(undefined8 *)(pcVar29 + 0x10) = s_Unknown_distribution_type_00477748._16_8_; + pcVar29[0x18] = cVar10; + *(undefined8 *)pcVar29 = uVar57; + *(undefined8 *)(pcVar29 + 8) = uVar19; + error(-5,(String *)&local_450, + "void cv::RNG::fill(cv::InputOutputArray, int, cv::InputArray, cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x292); + String::deallocate((String *)&local_450); + pdVar46 = (double *)0x0; + local_a84 = false; + local_a90 = (code *)0x0; + local_aa8 = (code *)0x0; + local_a88 = 1; + pdVar48 = pdVar46; + pdVar49 = pdVar46; + pdVar50 = pdVar46; + pdVar51 = pdVar46; + pdVar52 = pdVar46; + goto LAB_003c77dc; + } + if ((int)uVar25 < (int)uVar1) { + uVar25 = uVar1; + } + uVar30 = uVar45; + if ((int)uVar45 < (int)uVar1) { + uVar30 = uVar1; + } + uVar47 = (ulong)(int)(uVar25 + uVar30); + pdVar49 = local_8a0; + if (local_898 < uVar47) { + if (local_8a0 != adStack_890) { + if (local_8a0 != (double *)0x0) { + operator_delete__(local_8a0); + } + local_8a0 = adStack_890; + local_898 = 0x88; + } + if (uVar47 < 0x89) { + pdVar49 = adStack_890; + uVar47 = local_898; + } + else { + local_8a0 = operator_new__(uVar47 << 3); + pdVar49 = local_8a0; + } + } + local_898 = uVar47; + iVar23 = 8; + if (uVar7 != 6) { + iVar23 = 4; + } + uVar30 = 6; + if (uVar7 != 6) { + uVar30 = 5; + } + if (((local_960 >> 0xe & 1) == 0) || (pdVar52 = local_950, uVar30 != (local_960 & 0xfff))) { + local_9fc = *local_920; + local_a00 = local_920[1]; + Mat::Mat((Mat *)&local_450,(_OutputArray *)&local_a00,uVar30,pdVar49,0); + local_a00 = 0x2010000; + local_9f0 = 0; + local_9ec = 0; + local_9f8 = (Mat *)&local_450; + Mat::convertTo(local_ae8,(_OutputArray *)&local_a00,uVar30,1.0,0.0); + Mat::release((Mat *)&local_450); + pdVar52 = pdVar49; + if (local_408 != auStack_400) { + fastFree(local_408); + } + } + if ((int)uVar45 < (int)uVar1) { + iVar9 = uVar45 * iVar23; + iVar24 = uVar1 * iVar23; + if (iVar9 < iVar24) { + lVar32 = (long)iVar9; + uVar25 = iVar24 - iVar9; + if (((double *)((long)pdVar52 + lVar32) < pdVar52 + 2 && 0 < lVar32 + 0x10) || + (uVar25 < 0x16)) { + pdVar51 = pdVar52; + do { + *(undefined1 *)((long)pdVar51 + lVar32) = *(undefined1 *)pdVar51; + pdVar51 = (double *)((long)pdVar51 + 1); + } while (pdVar51 != (double *)((long)pdVar52 + (ulong)(uint)((iVar24 + -1) - iVar9) + 1)); + } + else { + uVar39 = -(int)pdVar52 & 0xf; + if (uVar25 < uVar39) { + uVar39 = uVar25; + } + iVar31 = iVar9; + if (uVar39 != 0) { + *(undefined1 *)((long)pdVar52 + lVar32) = *(undefined1 *)pdVar52; + iVar31 = iVar9 + 1; + if (uVar39 != 1) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 1)) = + *(undefined1 *)((long)pdVar52 + 1); + iVar31 = iVar9 + 2; + if (uVar39 != 2) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 2)) = + *(undefined1 *)((long)pdVar52 + 2); + iVar31 = iVar9 + 3; + if (uVar39 != 3) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 3)) = + *(undefined1 *)((long)pdVar52 + 3); + iVar31 = iVar9 + 4; + if (uVar39 != 4) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 4)) = + *(undefined1 *)((long)pdVar52 + 4); + iVar31 = iVar9 + 5; + if (uVar39 != 5) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 5)) = + *(undefined1 *)((long)pdVar52 + 5); + iVar31 = iVar9 + 6; + if (uVar39 != 6) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 6)) = + *(undefined1 *)((long)pdVar52 + 6); + iVar31 = iVar9 + 7; + if (uVar39 != 7) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 7)) = + *(undefined1 *)((long)pdVar52 + 7); + iVar31 = iVar9 + 8; + if (uVar39 != 8) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 8)) = + *(undefined1 *)(pdVar52 + 1); + iVar31 = iVar9 + 9; + if (uVar39 != 9) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 9)) = + *(undefined1 *)((long)pdVar52 + 9); + iVar31 = iVar9 + 10; + if (uVar39 != 10) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 10)) = + *(undefined1 *)((long)pdVar52 + 10); + iVar31 = iVar9 + 0xb; + if (uVar39 != 0xb) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 0xb)) = + *(undefined1 *)((long)pdVar52 + 0xb); + iVar31 = iVar9 + 0xc; + if (uVar39 != 0xc) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 0xc)) = + *(undefined1 *)((long)pdVar52 + 0xc); + iVar31 = iVar9 + 0xd; + if (uVar39 != 0xd) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 0xd)) = + *(undefined1 *)((long)pdVar52 + 0xd); + iVar31 = iVar9 + 0xe; + if (uVar39 == 0xf) { + *(undefined1 *)((long)pdVar52 + (long)(iVar9 + 0xe)) = + *(undefined1 *)((long)pdVar52 + 0xe); + iVar31 = iVar9 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar2 = ((uVar25 - uVar39) - 0x10 >> 4) + 1; + iVar4 = uVar2 * 0x10; + if (0xe < (uVar25 - 1) - uVar39) { + uVar44 = 0; + puVar35 = (undefined8 *)((long)pdVar52 + (ulong)uVar39); + puVar38 = (undefined8 *)((long)pdVar52 + (ulong)uVar39 + lVar32); + do { + uVar57 = *puVar35; + uVar44 = uVar44 + 1; + puVar38[1] = puVar35[1]; + *puVar38 = uVar57; + puVar35 = puVar35 + 2; + puVar38 = puVar38 + 2; + } while (uVar44 < uVar2); + iVar31 = iVar31 + iVar4; + if (iVar4 == uVar25 - uVar39) goto LAB_003c76d4; + } + iVar4 = iVar31 + 1; + *(undefined1 *)((long)pdVar52 + (long)iVar31) = + *(undefined1 *)((long)pdVar52 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar24) { + iVar3 = iVar31 + 2; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar3 < iVar24) { + iVar4 = iVar31 + 3; + *(undefined1 *)((long)pdVar52 + (long)iVar3) = + *(undefined1 *)((long)pdVar52 + (long)(iVar3 - iVar9)); + if (iVar4 < iVar24) { + iVar3 = iVar31 + 4; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar3 < iVar24) { + iVar4 = iVar31 + 5; + *(undefined1 *)((long)pdVar52 + (long)iVar3) = + *(undefined1 *)((long)pdVar52 + (long)(iVar3 - iVar9)); + if (iVar4 < iVar24) { + iVar3 = iVar31 + 6; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar3 < iVar24) { + iVar4 = iVar31 + 7; + *(undefined1 *)((long)pdVar52 + (long)iVar3) = + *(undefined1 *)((long)pdVar52 + (long)(iVar3 - iVar9)); + if (iVar4 < iVar24) { + iVar3 = iVar31 + 8; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar3 < iVar24) { + iVar4 = iVar31 + 9; + *(undefined1 *)((long)pdVar52 + (long)iVar3) = + *(undefined1 *)((long)pdVar52 + (long)(iVar3 - iVar9)); + if (iVar4 < iVar24) { + iVar3 = iVar31 + 10; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar3 < iVar24) { + iVar4 = iVar31 + 0xb; + *(undefined1 *)((long)pdVar52 + (long)iVar3) = + *(undefined1 *)((long)pdVar52 + (long)(iVar3 - iVar9)); + if (iVar4 < iVar24) { + iVar3 = iVar31 + 0xc; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar3 < iVar24) { + iVar4 = iVar31 + 0xd; + *(undefined1 *)((long)pdVar52 + (long)iVar3) = + *(undefined1 *)((long)pdVar52 + (long)(iVar3 - iVar9)); + if (iVar4 < iVar24) { + iVar31 = iVar31 + 0xe; + *(undefined1 *)((long)pdVar52 + (long)iVar4) = + *(undefined1 *)((long)pdVar52 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar24) { + *(undefined1 *)((long)pdVar52 + (long)iVar31) = + *(undefined1 *)((long)pdVar52 + (long)(iVar31 - iVar9)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003c76d4: + if (((local_900 >> 0xe & 1) == 0) || (pdVar51 = local_8f0, uVar30 != (local_900 & 0xfff))) { + pdVar51 = pdVar49 + (int)uVar1; + local_9fc = *local_8c0; + local_a00 = local_8c0[1]; + Mat::Mat((Mat *)&local_450,(_OutputArray *)&local_a00,uVar30,pdVar51,0); + local_a00 = 0x2010000; + local_9f0 = 0; + local_9ec = 0; + local_9f8 = (Mat *)&local_450; + Mat::convertTo(local_ae0,(_OutputArray *)&local_a00,uVar30,1.0,0.0); + Mat::release((Mat *)&local_450); + if (local_408 != auStack_400) { + fastFree(local_408); + } + } + if ((int)uVar45 < (int)uVar1) { + iVar9 = uVar45 * iVar23; + iVar23 = uVar1 * iVar23; + if (iVar9 < iVar23) { + lVar32 = (long)iVar9; + uVar30 = iVar23 - iVar9; + if (((double *)((long)pdVar51 + lVar32) < pdVar51 + 2 && 0 < lVar32 + 0x10) || + (uVar30 < 0x16)) { + pdVar49 = pdVar51; + do { + *(undefined1 *)((long)pdVar49 + lVar32) = *(undefined1 *)pdVar49; + pdVar49 = (double *)((long)pdVar49 + 1); + } while (pdVar49 != (double *)((long)pdVar51 + (ulong)(uint)((iVar23 + -1) - iVar9) + 1)); + } + else { + uVar45 = -(int)pdVar51 & 0xf; + if (uVar30 < uVar45) { + uVar45 = uVar30; + } + iVar24 = iVar9; + if (uVar45 != 0) { + *(undefined1 *)((long)pdVar51 + lVar32) = *(undefined1 *)pdVar51; + iVar24 = iVar9 + 1; + if (uVar45 != 1) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 1)) = + *(undefined1 *)((long)pdVar51 + 1); + iVar24 = iVar9 + 2; + if (uVar45 != 2) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 2)) = + *(undefined1 *)((long)pdVar51 + 2); + iVar24 = iVar9 + 3; + if (uVar45 != 3) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 3)) = + *(undefined1 *)((long)pdVar51 + 3); + iVar24 = iVar9 + 4; + if (uVar45 != 4) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 4)) = + *(undefined1 *)((long)pdVar51 + 4); + iVar24 = iVar9 + 5; + if (uVar45 != 5) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 5)) = + *(undefined1 *)((long)pdVar51 + 5); + iVar24 = iVar9 + 6; + if (uVar45 != 6) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 6)) = + *(undefined1 *)((long)pdVar51 + 6); + iVar24 = iVar9 + 7; + if (uVar45 != 7) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 7)) = + *(undefined1 *)((long)pdVar51 + 7); + iVar24 = iVar9 + 8; + if (uVar45 != 8) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 8)) = + *(undefined1 *)(pdVar51 + 1); + iVar24 = iVar9 + 9; + if (uVar45 != 9) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 9)) = + *(undefined1 *)((long)pdVar51 + 9); + iVar24 = iVar9 + 10; + if (uVar45 != 10) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 10)) = + *(undefined1 *)((long)pdVar51 + 10); + iVar24 = iVar9 + 0xb; + if (uVar45 != 0xb) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 0xb)) = + *(undefined1 *)((long)pdVar51 + 0xb); + iVar24 = iVar9 + 0xc; + if (uVar45 != 0xc) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 0xc)) = + *(undefined1 *)((long)pdVar51 + 0xc); + iVar24 = iVar9 + 0xd; + if (uVar45 != 0xd) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 0xd)) = + *(undefined1 *)((long)pdVar51 + 0xd); + iVar24 = iVar9 + 0xe; + if (uVar45 == 0xf) { + *(undefined1 *)((long)pdVar51 + (long)(iVar9 + 0xe)) = + *(undefined1 *)((long)pdVar51 + 0xe); + iVar24 = iVar9 + 0xf; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar25 = ((uVar30 - uVar45) - 0x10 >> 4) + 1; + iVar31 = uVar25 * 0x10; + if (0xe < (uVar30 - 1) - uVar45) { + uVar39 = 0; + puVar35 = (undefined8 *)((long)pdVar51 + (ulong)uVar45); + puVar38 = (undefined8 *)((long)pdVar51 + (ulong)uVar45 + lVar32); + do { + uVar57 = *puVar35; + uVar39 = uVar39 + 1; + puVar38[1] = puVar35[1]; + *puVar38 = uVar57; + puVar35 = puVar35 + 2; + puVar38 = puVar38 + 2; + } while (uVar39 < uVar25); + iVar24 = iVar24 + iVar31; + if (iVar31 == uVar30 - uVar45) goto LAB_003c7794; + } + iVar31 = iVar24 + 1; + *(undefined1 *)((long)pdVar51 + (long)iVar24) = + *(undefined1 *)((long)pdVar51 + (long)(iVar24 - iVar9)); + if (iVar31 < iVar23) { + iVar4 = iVar24 + 2; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar23) { + iVar31 = iVar24 + 3; + *(undefined1 *)((long)pdVar51 + (long)iVar4) = + *(undefined1 *)((long)pdVar51 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar23) { + iVar4 = iVar24 + 4; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar23) { + iVar31 = iVar24 + 5; + *(undefined1 *)((long)pdVar51 + (long)iVar4) = + *(undefined1 *)((long)pdVar51 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar23) { + iVar4 = iVar24 + 6; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar23) { + iVar31 = iVar24 + 7; + *(undefined1 *)((long)pdVar51 + (long)iVar4) = + *(undefined1 *)((long)pdVar51 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar23) { + iVar4 = iVar24 + 8; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar23) { + iVar31 = iVar24 + 9; + *(undefined1 *)((long)pdVar51 + (long)iVar4) = + *(undefined1 *)((long)pdVar51 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar23) { + iVar4 = iVar24 + 10; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar23) { + iVar31 = iVar24 + 0xb; + *(undefined1 *)((long)pdVar51 + (long)iVar4) = + *(undefined1 *)((long)pdVar51 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar23) { + iVar4 = iVar24 + 0xc; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar4 < iVar23) { + iVar31 = iVar24 + 0xd; + *(undefined1 *)((long)pdVar51 + (long)iVar4) = + *(undefined1 *)((long)pdVar51 + (long)(iVar4 - iVar9)); + if (iVar31 < iVar23) { + iVar24 = iVar24 + 0xe; + *(undefined1 *)((long)pdVar51 + (long)iVar31) = + *(undefined1 *)((long)pdVar51 + (long)(iVar31 - iVar9)); + if (iVar24 < iVar23) { + *(undefined1 *)((long)pdVar51 + (long)iVar24) = + *(undefined1 *)((long)pdVar51 + (long)(iVar24 - iVar9)); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +LAB_003c7794: + local_a84 = local_8f8 == uVar1 && uVar1 == local_8f4; + local_a90 = (code *)(&PTR_FUN_004f7a70)[(int)uVar7]; + if (local_a90 == (code *)0x0) { + local_a20 = local_a90; + local_a18 = local_a90; + pcVar29 = (char *)String::allocate((String *)&local_a20,0xe); + uVar18 = s_scaleFunc____0_00477738._12_2_; + uVar17 = s_scaleFunc____0_00477738._8_4_; + *(undefined8 *)pcVar29 = s_scaleFunc____0_00477738._0_8_; + *(undefined4 *)(pcVar29 + 8) = uVar17; + *(undefined2 *)(pcVar29 + 0xc) = uVar18; + error(-0xd7,(String *)&local_a20, + "void cv::RNG::fill(cv::InputOutputArray, int, cv::InputArray, cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x28f); + String::deallocate((String *)&local_a20); + } + pdVar46 = (double *)0x0; + local_a88 = 1; + local_aa8 = (code *)0x0; + pdVar48 = (double *)0x0; + pdVar49 = (double *)0x0; + pdVar50 = (double *)0x0; + goto LAB_003c77dc; + } + uVar47 = (ulong)(int)(uVar45 + uVar1 * 8 + uVar25); + pdVar49 = local_8a0; + if (local_898 < uVar47) { + if (local_8a0 != adStack_890) { + if (local_8a0 != (double *)0x0) { + operator_delete__(local_8a0); + } + local_8a0 = adStack_890; + local_898 = 0x88; + } + if (uVar47 < 0x89) { + pdVar49 = adStack_890; + uVar47 = local_898; + } + else { + uVar27 = uVar47 << 3; + if (0xfe0000000000000 < uVar47) { + uVar27 = 0xffffffffffffffff; + } + local_8a0 = operator_new__(uVar27); + pdVar49 = local_8a0; + } + } + local_898 = uVar47; + pdVar51 = local_8f0; + if ((((local_960 >> 0xe & 1) == 0) || ((local_960 & 0xfff) != 6)) || + (pdVar46 = local_950, uVar45 != uVar1)) { + local_9fc = *local_920; + local_a00 = local_920[1]; + Mat::Mat((Mat *)&local_450,(_OutputArray *)&local_a00,6,pdVar49,0); + local_9f0 = 0; + local_9ec = 0; + local_a00 = 0x2010000; + local_9f8 = (Mat *)&local_450; + Mat::convertTo(local_ae8,(_OutputArray *)&local_a00,6,1.0,0.0); + if ((int)uVar45 < (int)uVar1) { + lVar32 = (long)(int)uVar45; + uVar39 = (uVar8 - uVar45) + 1; + if ((pdVar49 + lVar32 < pdVar49 + 2 && 0 < (lVar32 + 2) * 8) || (uVar39 < 0xe)) { + lVar53 = 0; + do { + *(undefined8 *)((long)pdVar49 + lVar53 + lVar32 * 8) = + *(undefined8 *)((long)pdVar49 + lVar53); + lVar53 = lVar53 + 8; + } while (lVar53 != ((ulong)(uVar8 - uVar45) + 1) * 8); + } + else { + uVar2 = (uint)((ulong)pdVar49 >> 3) & 1; + if (uVar39 < uVar2) { + uVar2 = uVar39; + } + uVar44 = uVar45; + if (uVar2 != 0) { + pdVar49[lVar32] = *pdVar49; + uVar44 = uVar45 + 1; + } + uVar40 = ((uVar39 - uVar2) - 2 >> 1) + 1; + uVar42 = 0; + iVar23 = uVar40 * 2; + pdVar46 = pdVar49 + uVar2; + pdVar50 = pdVar49 + lVar32 + 2 + ((ulong)uVar2 - 2); + do { + dVar56 = *pdVar46; + uVar42 = uVar42 + 1; + pdVar50[1] = pdVar46[1]; + *pdVar50 = dVar56; + pdVar46 = pdVar46 + 2; + pdVar50 = pdVar50 + 2; + } while (uVar42 < uVar40); + iVar9 = iVar23 + uVar44; + if (iVar23 != uVar39 - uVar2) { + pdVar49[iVar9] = pdVar49[(int)(iVar9 - uVar45)]; + } + } + } + Mat::release((Mat *)&local_450); + pdVar46 = pdVar49; + if (local_408 != auStack_400) { + fastFree(local_408); + } + } + if ((((local_900 >> 0xe & 1) == 0) || (uVar25 != uVar1)) || ((local_900 & 0xfff) != 6)) { + lVar32 = (ulong)uVar1 * 8; + local_9fc = *local_8c0; + local_a00 = local_8c0[1]; + pdVar51 = pdVar49 + uVar1; + Mat::Mat((Mat *)&local_450,(_OutputArray *)&local_a00,6,pdVar51,0); + local_9f0 = 0; + local_9ec = 0; + local_a00 = 0x2010000; + local_9f8 = (Mat *)&local_450; + Mat::convertTo(local_ae0,(_OutputArray *)&local_a00,6,1.0,0.0); + if ((int)uVar25 < (int)uVar1) { + lVar43 = (long)(int)uVar25; + lVar53 = (long)(int)uVar8 + 1; + lVar6 = lVar53 + lVar43; + uVar45 = (uVar8 - uVar25) + 1; + if ((lVar6 * 8 < lVar32 + 0x10 && lVar32 < ((long)(int)uVar8 + 3 + lVar43) * 8) || + (uVar45 < 0xe)) { + lVar32 = 0; + do { + *(undefined8 *)((long)pdVar51 + lVar32 + lVar43 * 8) = + *(undefined8 *)((long)pdVar51 + lVar32); + lVar32 = lVar32 + 8; + } while (lVar32 != ((ulong)(uVar8 - uVar25) + 1) * 8); + } + else { + uVar39 = (uint)((ulong)pdVar51 >> 3) & 1; + if (uVar45 < uVar39) { + uVar39 = uVar45; + } + uVar2 = uVar25; + if (uVar39 != 0) { + pdVar51[lVar43] = *pdVar51; + uVar2 = uVar25 + 1; + } + uVar44 = ((uVar45 - uVar39) - 2 >> 1) + 1; + uVar40 = 0; + iVar23 = uVar44 * 2; + pdVar50 = pdVar49 + (ulong)uVar39 + lVar53; + pdVar48 = pdVar49 + (ulong)uVar39 + lVar6; + do { + dVar56 = *pdVar50; + uVar40 = uVar40 + 1; + pdVar48[1] = pdVar50[1]; + *pdVar48 = dVar56; + pdVar50 = pdVar50 + 2; + pdVar48 = pdVar48 + 2; + } while (uVar40 < uVar44); + iVar9 = iVar23 + uVar2; + if (iVar23 != uVar45 - uVar39) { + pdVar51[iVar9] = pdVar51[(int)(iVar9 - uVar25)]; + } + } + } + Mat::release((Mat *)&local_450); + if (local_408 != auStack_400) { + fastFree(local_408); + } + } + if (uVar7 < 5) { + uVar85 = (undefined1)((ulong)DAT_003c9970 >> 0x38); + pdVar49 = pdVar49 + (int)(uVar1 * 2); + local_a88 = 1; + lVar32 = 0; + lVar53 = 1; + pdVar50 = pdVar49; + do { + dVar56 = *(double *)((long)pdVar51 + lVar32); + dVar81 = *(double *)((long)pdVar46 + lVar32); + uVar58 = SUB81(dVar56,0); + uVar60 = (undefined1)((ulong)dVar56 >> 8); + uVar63 = (undefined1)((ulong)dVar56 >> 0x10); + uVar66 = (undefined1)((ulong)dVar56 >> 0x18); + uVar69 = (undefined1)((ulong)dVar56 >> 0x20); + uVar72 = (undefined1)((ulong)dVar56 >> 0x28); + uVar75 = (undefined1)((ulong)dVar56 >> 0x30); + uVar78 = (undefined1)((ulong)dVar56 >> 0x38); + if (dVar81 <= dVar56) { + uVar58 = SUB81(dVar81,0); + uVar60 = (undefined1)((ulong)dVar81 >> 8); + uVar63 = (undefined1)((ulong)dVar81 >> 0x10); + uVar66 = (undefined1)((ulong)dVar81 >> 0x18); + uVar69 = (undefined1)((ulong)dVar81 >> 0x20); + uVar72 = (undefined1)((ulong)dVar81 >> 0x28); + uVar75 = (undefined1)((ulong)dVar81 >> 0x30); + uVar78 = (undefined1)((ulong)dVar81 >> 0x38); + } + if (dVar56 <= dVar81) { + dVar56 = dVar81; + } + if (param_5) { + uVar61 = (undefined1)((ulong)DAT_003c9970 >> 8); + uVar64 = (undefined1)((ulong)DAT_003c9970 >> 0x10); + uVar67 = (undefined1)((ulong)DAT_003c9970 >> 0x18); + uVar70 = (undefined1)((ulong)DAT_003c9970 >> 0x20); + uVar73 = (undefined1)((ulong)DAT_003c9970 >> 0x28); + uVar76 = (undefined1)((ulong)DAT_003c9970 >> 0x30); + uVar59 = (undefined1)DAT_003c9960; + uVar62 = (undefined1)((ulong)DAT_003c9960 >> 8); + uVar65 = (undefined1)((ulong)DAT_003c9960 >> 0x10); + uVar68 = (undefined1)((ulong)DAT_003c9960 >> 0x18); + uVar71 = (undefined1)((ulong)DAT_003c9960 >> 0x20); + uVar74 = (undefined1)((ulong)DAT_003c9960 >> 0x28); + uVar77 = (undefined1)((ulong)DAT_003c9960 >> 0x30); + uVar79 = (undefined1)((ulong)DAT_003c9960 >> 0x38); + if ((uVar30 & 5) == 0) { + dVar81 = 0.0; + uVar45 = 0; +LAB_003c9248: + bVar20 = false; + bVar22 = false; + bVar21 = NAN((double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58)))))))); + if (!NAN(dVar81) && !bVar21) { + bVar20 = dVar81 < (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14( + uVar69,CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11( + uVar60,uVar58))))))); + bVar22 = dVar81 == (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14( + uVar69,CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11( + uVar60,uVar58))))))); + } + if (bVar22 || bVar20 != (NAN(dVar81) || bVar21)) { +LAB_003c9250: + iVar23 = (int)(double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))); + dVar81 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))); + dVar55 = (double)iVar23; + bVar20 = false; + bVar22 = false; + bVar21 = NAN((double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58)))))))); + if (!bVar21 && !NAN(dVar55)) { + bVar20 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))) < dVar55; + bVar22 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))) == dVar55; + } + uVar45 = iVar23 + (uint)(!bVar22 && bVar20 == (bVar21 || NAN(dVar55))); + } + if (uVar7 == 0) { + iVar23 = 0x100; + uVar59 = (char)DAT_003c9958; + uVar62 = (char)((ulong)DAT_003c9958 >> 8); + uVar65 = (char)((ulong)DAT_003c9958 >> 0x10); + uVar68 = (char)((ulong)DAT_003c9958 >> 0x18); + uVar71 = (char)((ulong)DAT_003c9958 >> 0x20); + uVar74 = (char)((ulong)DAT_003c9958 >> 0x28); + uVar77 = (char)((ulong)DAT_003c9958 >> 0x30); + uVar79 = (char)((ulong)DAT_003c9958 >> 0x38); + } + else if (uVar7 == 2) { + iVar23 = 0x10000; + uVar59 = (char)DAT_003c9950; + uVar62 = (char)((ulong)DAT_003c9950 >> 8); + uVar65 = (char)((ulong)DAT_003c9950 >> 0x10); + uVar68 = (char)((ulong)DAT_003c9950 >> 0x18); + uVar71 = (char)((ulong)DAT_003c9950 >> 0x20); + uVar74 = (char)((ulong)DAT_003c9950 >> 0x28); + uVar77 = (char)((ulong)DAT_003c9950 >> 0x30); + uVar79 = (char)((ulong)DAT_003c9950 >> 0x38); + } + else if (uVar7 == 1) { + iVar23 = 0x80; + } + else if (uVar7 == 3) { + iVar23 = 0x8000; + uVar59 = (char)DAT_003c9970; + uVar62 = uVar61; + uVar65 = uVar64; + uVar68 = uVar67; + uVar71 = uVar70; + uVar74 = uVar73; + uVar77 = uVar76; + uVar79 = uVar85; + } + else { + iVar23 = 0x7fffffff; + uVar59 = SUB81(DAT_003c9968,0); + uVar62 = (char)((ulong)DAT_003c9968 >> 8); + uVar65 = (char)((ulong)DAT_003c9968 >> 0x10); + uVar68 = (char)((ulong)DAT_003c9968 >> 0x18); + uVar71 = (char)((ulong)DAT_003c9968 >> 0x20); + uVar74 = (char)((ulong)DAT_003c9968 >> 0x28); + uVar77 = (char)((ulong)DAT_003c9968 >> 0x30); + uVar79 = (char)((ulong)DAT_003c9968 >> 0x38); + } + } + else if (uVar7 == 1) { + bVar21 = false; + if (!NAN((double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69,CONCAT13( + uVar66,CONCAT12(uVar63,CONCAT11(uVar60,uVar58))))) + ))) && !NAN(DAT_003c9978)) { + bVar21 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))) < DAT_003c9978; + } + if (!bVar21) goto LAB_003c9250; + iVar23 = 0x80; + uVar45 = 0xffffff80; + dVar81 = DAT_003c9978; + } + else { + if (uVar7 != 3) { + uVar45 = 0x80000000; + dVar81 = DAT_003c9948; + goto LAB_003c9248; + } + bVar21 = false; + if (!NAN((double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69,CONCAT13( + uVar66,CONCAT12(uVar63,CONCAT11(uVar60,uVar58))))) + ))) && !NAN(DAT_003c9980)) { + bVar21 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))) < DAT_003c9980; + } + if (!bVar21) goto LAB_003c9250; + iVar23 = 0x8000; + uVar45 = 0xffff8000; + uVar59 = (char)DAT_003c9970; + uVar62 = uVar61; + uVar65 = uVar64; + uVar68 = uVar67; + uVar71 = uVar70; + uVar74 = uVar73; + uVar77 = uVar76; + uVar79 = uVar85; + dVar81 = DAT_003c9980; + } + bVar21 = false; + if (!NAN((double)CONCAT17(uVar79,CONCAT16(uVar77,CONCAT15(uVar74,CONCAT14(uVar71,CONCAT13( + uVar68,CONCAT12(uVar65,CONCAT11(uVar62,uVar59))))) + ))) && !NAN(dVar56)) { + bVar21 = (double)CONCAT17(uVar79,CONCAT16(uVar77,CONCAT15(uVar74,CONCAT14(uVar71,CONCAT13( + uVar68,CONCAT12(uVar65,CONCAT11(uVar62,uVar59))))) + )) < dVar56; + } + if (!bVar21) { + uVar59 = SUB81(dVar56,0); + uVar62 = (undefined1)((ulong)dVar56 >> 8); + uVar65 = (undefined1)((ulong)dVar56 >> 0x10); + uVar68 = (undefined1)((ulong)dVar56 >> 0x18); + uVar71 = (undefined1)((ulong)dVar56 >> 0x20); + uVar74 = (undefined1)((ulong)dVar56 >> 0x28); + uVar77 = (undefined1)((ulong)dVar56 >> 0x30); + uVar79 = (undefined1)((ulong)dVar56 >> 0x38); + iVar23 = (int)dVar56 - (uint)(dVar56 < (double)(int)dVar56); + } + dVar56 = (double)CONCAT17(uVar79,CONCAT16(uVar77,CONCAT15(uVar74,CONCAT14(uVar71,CONCAT13( + uVar68,CONCAT12(uVar65,CONCAT11(uVar62,uVar59))))) + )); + uVar58 = SUB81(dVar81,0); + uVar60 = (undefined1)((ulong)dVar81 >> 8); + uVar63 = (undefined1)((ulong)dVar81 >> 0x10); + uVar66 = (undefined1)((ulong)dVar81 >> 0x18); + uVar69 = (undefined1)((ulong)dVar81 >> 0x20); + uVar72 = (undefined1)((ulong)dVar81 >> 0x28); + uVar75 = (undefined1)((ulong)dVar81 >> 0x30); + uVar78 = (undefined1)((ulong)dVar81 >> 0x38); + } + else { + iVar23 = (int)(double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))); + dVar81 = (double)iVar23; + bVar20 = false; + bVar22 = false; + bVar21 = NAN((double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58)))))))); + if (!bVar21 && !NAN(dVar81)) { + bVar20 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69,CONCAT13( + uVar66,CONCAT12(uVar63,CONCAT11(uVar60,uVar58))))) + )) < dVar81; + bVar22 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69,CONCAT13( + uVar66,CONCAT12(uVar63,CONCAT11(uVar60,uVar58))))) + )) == dVar81; + } + uVar45 = iVar23 + (uint)(!bVar22 && bVar20 == (bVar21 || NAN(dVar81))); + iVar23 = (int)dVar56 - (uint)(dVar56 < (double)(int)dVar56); + } + dVar56 = dVar56 - (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69, + CONCAT13(uVar66,CONCAT12(uVar63,CONCAT11(uVar60, + uVar58))))))); + uVar25 = (iVar23 - uVar45) - 1; + *(uint *)((long)pdVar50 + 4) = uVar45; + *(uint *)pdVar50 = uVar25; + if (((DAT_003c99b0 < dVar56) || ((uVar25 & iVar23 - uVar45) != 0)) || ((int)lVar53 == 0)) { + lVar53 = 0; + if (DAT_003c9968 < dVar56) { + uVar25 = 0x7fffffff; + } + *(uint *)pdVar50 = uVar25; + bVar21 = false; + if (!NAN((double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69,CONCAT13( + uVar66,CONCAT12(uVar63,CONCAT11(uVar60,uVar58))))) + ))) && !NAN(DAT_003c99b8)) { + bVar21 = (double)CONCAT17(uVar78,CONCAT16(uVar75,CONCAT15(uVar72,CONCAT14(uVar69,CONCAT13( + uVar66,CONCAT12(uVar63,CONCAT11(uVar60,uVar58))))) + )) < DAT_003c99b8; + } + if (bVar21) { + *(uint *)((long)pdVar50 + 4) = 0xc0000000; + lVar53 = 0; + } + } + else { + lVar53 = 1; + local_a88 = local_a88 & (int)uVar25 < 0x100; + } + lVar32 = lVar32 + 8; + pdVar50 = pdVar50 + 1; + } while (lVar32 != ((long)(int)uVar8 + 1) * 8); + pdVar46 = (double *)0x0; + if ((int)lVar53 == 0) { + puVar33 = (uint *)((long)pdVar49 + 4); + pdVar46 = pdVar49 + (int)uVar1; + puVar41 = (uint *)((long)pdVar46 + 4); + do { + puVar41[3] = *puVar33; + uVar30 = puVar33[-1] + 1; + uVar47 = (ulong)uVar30; + puVar41[-1] = uVar30; + if (uVar30 < 2) { + uVar30 = 0; + iVar23 = 0; + if (uVar47 != 0) { + iVar23 = (int)((1 - uVar47 << 0x20) / uVar47); + } + *puVar41 = iVar23 + 1; +LAB_003c8fac: + uVar25 = 0; + } + else { + uVar45 = 0; + do { + uVar25 = uVar45; + uVar45 = uVar25 + 1; + uVar27 = 1L << ((ulong)uVar45 & 0x3f); + } while (uVar27 < uVar47); + iVar23 = 0; + if (uVar47 != 0) { + iVar23 = (int)((uVar27 - uVar47 << 0x20) / uVar47); + } + *puVar41 = iVar23 + 1; + uVar30 = 1; + if (uVar45 == 1) goto LAB_003c8fac; + uVar30 = 1; + if ((int)uVar25 < 0) { + uVar25 = 0; + } + } + puVar33 = puVar33 + 2; + puVar41[1] = uVar30; + puVar41[2] = uVar25; + puVar41 = puVar41 + 5; + } while (puVar33 != (uint *)((long)pdVar49 + (long)(int)uVar8 * 8 + 0xc)); + } + pdVar48 = (double *)0x0; + pdVar50 = (double *)0x0; + local_aa8 = (code *)(&PTR_FUN_004f79f0)[lVar53 * 8 + (long)(int)uVar7]; + } + else { + if (uVar7 == 6) { + dVar56 = DAT_003c9990; + if (!param_5) goto LAB_003c8dac; +LAB_003c8db8: + pdVar50 = pdVar49 + (int)(uVar1 * 2); + uVar85 = (undefined1)((ulong)DAT_003c99a0 >> 8); + uVar58 = (undefined1)((ulong)DAT_003c99a0 >> 0x10); + uVar60 = (undefined1)((ulong)DAT_003c99a0 >> 0x18); + uVar63 = (undefined1)((ulong)DAT_003c99a0 >> 0x20); + uVar66 = (undefined1)((ulong)DAT_003c99a0 >> 0x28); + uVar69 = (undefined1)((ulong)DAT_003c99a0 >> 0x30); + uVar72 = (undefined1)((ulong)DAT_003c99a0 >> 0x38); + if ((uVar1 < 5 || + pdVar50 < pdVar46 + uVar1 && + pdVar46 < pdVar49 + (long)(int)(uVar1 * 2 + -2) + 2 + (ulong)uVar1 * 2) || + (pdVar50 < pdVar51 + uVar1 && + pdVar51 < pdVar49 + (long)(int)(uVar1 * 2 + -2) + 2 + (ulong)uVar1 * 2)) { + lVar32 = 0; + pdVar49 = pdVar50; + do { + dVar81 = *(double *)((long)pdVar51 + lVar32) - *(double *)((long)pdVar46 + lVar32); + uVar75 = SUB81(dVar81,0); + uVar78 = (char)((ulong)dVar81 >> 8); + uVar59 = (char)((ulong)dVar81 >> 0x10); + uVar62 = (char)((ulong)dVar81 >> 0x18); + uVar65 = (char)((ulong)dVar81 >> 0x20); + uVar68 = (char)((ulong)dVar81 >> 0x28); + uVar71 = (char)((ulong)dVar81 >> 0x30); + uVar74 = (char)((ulong)dVar81 >> 0x38); + if (DAT_003c99a0 <= dVar81) { + uVar75 = SUB81(DAT_003c99a0,0); + uVar78 = uVar85; + uVar59 = uVar58; + uVar62 = uVar60; + uVar65 = uVar63; + uVar68 = uVar66; + uVar71 = uVar69; + uVar74 = uVar72; + } + *pdVar49 = dVar56 * (double)CONCAT17(uVar74,CONCAT16(uVar71,CONCAT15(uVar68,CONCAT14( + uVar65,CONCAT13(uVar62,CONCAT12(uVar59,CONCAT11( + uVar78,uVar75))))))); + pdVar48 = (double *)((long)pdVar51 + lVar32); + pdVar52 = (double *)((long)pdVar46 + lVar32); + lVar32 = lVar32 + 8; + pdVar49[1] = (*pdVar48 + *pdVar52) * 0.5; + pdVar49 = pdVar49 + 2; + } while (lVar32 != ((long)(int)uVar8 + 1) * 8); + } + else { + auVar87 = NEON_fmov(0x3fe0000000000000,8); + uVar30 = (uVar8 - 1 >> 1) + 1; + auVar89._8_8_ = _UNK_003c99c8; + auVar89._0_8_ = _DAT_003c99c0; + uVar45 = 0; + uVar25 = uVar30 * 2; + pdVar49 = pdVar51; + pdVar48 = pdVar46; + pdVar52 = pdVar50; + do { + dVar13 = *pdVar49; + dVar14 = pdVar49[1]; + dVar55 = pdVar48[1]; + dVar81 = *pdVar48; + uVar45 = uVar45 + 1; + dVar54 = dVar13 - dVar81; + dVar94 = dVar14 - dVar55; + auVar82._0_8_ = -(ulong)(dVar54 < _DAT_003c99c0); + auVar82._8_8_ = -(ulong)(dVar94 < _UNK_003c99c8); + auVar83[8] = SUB81(dVar94,0); + auVar83._0_8_ = dVar54; + auVar83[9] = (char)((ulong)dVar94 >> 8); + auVar83[10] = (char)((ulong)dVar94 >> 0x10); + auVar83[0xb] = (char)((ulong)dVar94 >> 0x18); + auVar83[0xc] = (char)((ulong)dVar94 >> 0x20); + auVar83[0xd] = (char)((ulong)dVar94 >> 0x28); + auVar83[0xe] = (char)((ulong)dVar94 >> 0x30); + auVar83[0xf] = (char)((ulong)dVar94 >> 0x38); + auVar83 = auVar89 ^ (auVar89 ^ auVar83) & auVar82; + *pdVar52 = dVar56 * auVar83._0_8_; + pdVar52[1] = (dVar81 + dVar13) * auVar87._0_8_; + pdVar52[2] = dVar56 * auVar83._8_8_; + pdVar52[3] = (dVar55 + dVar14) * auVar87._8_8_; + pdVar52 = pdVar52 + 4; + pdVar49 = pdVar49 + 2; + pdVar48 = pdVar48 + 2; + } while (uVar45 < uVar30); + if (uVar1 != uVar25) { + lVar32 = (long)(int)uVar25; + dVar81 = pdVar51[lVar32] - pdVar46[lVar32]; + uVar75 = SUB81(dVar81,0); + uVar78 = (char)((ulong)dVar81 >> 8); + uVar59 = (char)((ulong)dVar81 >> 0x10); + uVar62 = (char)((ulong)dVar81 >> 0x18); + uVar65 = (char)((ulong)dVar81 >> 0x20); + uVar68 = (char)((ulong)dVar81 >> 0x28); + uVar71 = (char)((ulong)dVar81 >> 0x30); + uVar74 = (char)((ulong)dVar81 >> 0x38); + if (DAT_003c99a0 <= dVar81) { + uVar75 = SUB81(DAT_003c99a0,0); + uVar78 = uVar85; + uVar59 = uVar58; + uVar62 = uVar60; + uVar65 = uVar63; + uVar68 = uVar66; + uVar71 = uVar69; + uVar74 = uVar72; + } + pdVar50[lVar32 * 2] = + dVar56 * (double)CONCAT17(uVar74,CONCAT16(uVar71,CONCAT15(uVar68,CONCAT14(uVar65, + CONCAT13(uVar62,CONCAT12(uVar59,CONCAT11(uVar78, + uVar75))))))); + (pdVar50 + lVar32 * 2)[1] = (pdVar51[lVar32] + pdVar46[lVar32]) * 0.5; + } + } + pdVar48 = (double *)0x0; + } + else { + dVar56 = DAT_003c9988; + dVar81 = DAT_003c9998; + if (!param_5) { +LAB_003c8dac: + dVar81 = DAT_003c99a0; + } + if (uVar7 != 5) goto LAB_003c8db8; + uVar30 = (uVar8 - 3 >> 2) + 1; + pdVar48 = pdVar49 + (int)(uVar1 * 2); + uVar45 = uVar30 * 4; + uVar47 = (ulong)uVar45; + if (uVar8 < 3) { + uVar47 = 0; +LAB_003c9104: + uVar27 = -(uVar47 >> 0x1f) & 0xfffffff800000000 | uVar47 << 3; + dVar55 = *(double *)((long)pdVar51 + uVar27); + dVar54 = *(double *)((long)pdVar46 + uVar27); + dVar94 = dVar55 - dVar54; + if (dVar81 <= dVar94) { + dVar94 = dVar81; + } + *(float *)((long)pdVar48 + uVar27) = (float)(dVar56 * dVar94); + ((float *)((long)pdVar48 + uVar27))[1] = (float)((dVar55 + dVar54) * 0.5); + if ((int)uVar47 + 1 < (int)uVar1) { + lVar32 = uVar27 + 8; + dVar55 = *(double *)((long)pdVar51 + lVar32); + dVar54 = *(double *)((long)pdVar46 + lVar32); + dVar94 = dVar55 - dVar54; + if (dVar81 <= dVar94) { + dVar94 = dVar81; + } + *(float *)((long)pdVar48 + lVar32) = (float)(dVar56 * dVar94); + ((float *)((long)pdVar48 + lVar32))[1] = (float)((dVar55 + dVar54) * 0.5); + if ((int)uVar47 + 2 < (int)uVar1) { + lVar32 = uVar27 + 0x10; + dVar55 = *(double *)((long)pdVar51 + lVar32); + dVar54 = *(double *)((long)pdVar46 + lVar32); + dVar94 = dVar55 - dVar54; + if (dVar81 <= dVar94) { + dVar94 = dVar81; + } + *(float *)((long)pdVar48 + lVar32) = (float)(dVar56 * dVar94); + ((float *)((long)pdVar48 + lVar32))[1] = (float)((dVar55 + dVar54) * 0.5); + } + } + } + else { + auVar89 = NEON_fmov(0x3fe0000000000000,8); + uVar25 = 0; + pdVar49 = pdVar51; + pdVar50 = pdVar46; + pdVar52 = pdVar48; + do { + uVar25 = uVar25 + 1; + dVar92 = pdVar50[3]; + dVar91 = pdVar50[2]; + dVar86 = *pdVar49 - *pdVar50; + dVar88 = pdVar49[1] - pdVar50[1]; + dVar13 = pdVar49[3]; + dVar94 = pdVar49[2]; + dVar14 = dVar94 - dVar91; + dVar90 = dVar13 - dVar92; + dVar55 = (*pdVar49 + *pdVar50) * auVar89._0_8_; + dVar54 = (pdVar49[1] + pdVar50[1]) * auVar89._8_8_; + auVar87[8] = SUB81(dVar54,0); + auVar87._0_8_ = dVar55; + auVar87[9] = (char)((ulong)dVar54 >> 8); + auVar87[10] = (char)((ulong)dVar54 >> 0x10); + auVar87[0xb] = (char)((ulong)dVar54 >> 0x18); + auVar87[0xc] = (char)((ulong)dVar54 >> 0x20); + auVar87[0xd] = (char)((ulong)dVar54 >> 0x28); + auVar87[0xe] = (char)((ulong)dVar54 >> 0x30); + auVar87[0xf] = (char)((ulong)dVar54 >> 0x38); + fVar11 = (float)dVar55; + fVar12 = (float)auVar87._8_8_; + uStack_b2c = (uint)(CONCAT17((char)((uint)fVar12 >> 0x18), + CONCAT16((char)((uint)fVar12 >> 0x10), + CONCAT15((char)((uint)fVar12 >> 8), + CONCAT14(SUB41(fVar12,0),fVar11)))) >> 0x20 + ); + *(float *)pdVar52 = + (float)(dVar56 * (double)((ulong)dVar81 ^ + ((ulong)dVar81 ^ (ulong)dVar86) & -(ulong)(dVar86 < dVar81)) + ); + *(float *)((long)pdVar52 + 4) = fVar11; + *(float *)(pdVar52 + 1) = + (float)(dVar56 * (double)((ulong)dVar81 ^ + ((ulong)dVar81 ^ (ulong)dVar88) & -(ulong)(dVar88 < dVar81)) + ); + *(uint *)((long)pdVar52 + 0xc) = uStack_b2c; + *(float *)(pdVar52 + 2) = + (float)(dVar56 * (double)((ulong)dVar81 ^ + ((ulong)dVar81 ^ (ulong)dVar14) & -(ulong)(dVar14 < dVar81)) + ); + *(float *)((long)pdVar52 + 0x14) = (float)((dVar94 + dVar91) * auVar89._0_8_); + *(float *)(pdVar52 + 3) = + (float)(dVar56 * (double)((ulong)dVar81 ^ + ((ulong)dVar81 ^ (ulong)dVar90) & -(ulong)(dVar90 < dVar81)) + ); + *(float *)((long)pdVar52 + 0x1c) = (float)((dVar13 + dVar92) * auVar89._8_8_); + pdVar52 = pdVar52 + 4; + pdVar49 = pdVar49 + 4; + pdVar50 = pdVar50 + 4; + } while (uVar25 < uVar30); + if (uVar45 != uVar1) goto LAB_003c9104; + } + pdVar50 = (double *)0x0; + } + local_a88 = 1; + pdVar46 = (double *)0x0; + pdVar49 = (double *)0x0; + local_aa8 = (code *)(&PTR_FUN_004f79f0)[(int)uVar7]; + } + if (local_aa8 == (code *)0x0) { + local_a30 = local_aa8; + local_a28 = local_aa8; + pcVar29 = (char *)String::allocate((String *)&local_a30,9); + cVar10 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar29 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar29[8] = cVar10; + error(-0xd7,(String *)&local_a30, + "void cv::RNG::fill(cv::InputOutputArray, int, cv::InputArray, cv::InputArray, bool)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x269); + String::deallocate((String *)&local_a30); + } + pdVar51 = (double *)0x0; + local_a84 = false; + pdVar52 = (double *)0x0; + local_a90 = (code *)0x0; +LAB_003c77dc: + uStack_a08 = 0; + local_a10 = local_a80; + NAryMatIterator::NAryMatIterator((NAryMatIterator *)&local_a00,&local_a10,&local_a58,-1); + uVar7 = 0; + if (uVar1 != 0) { + uVar7 = (uVar8 + 0x400) / uVar1; + } + if ((int)local_9d8 < (int)uVar7) { + uVar7 = local_9d8; + } + if (local_9bc < 1) { + local_ac0 = 0; + } + else { + local_ac0 = local_978[(long)local_9bc + -1]; + } + local_450 = auStack_440; + local_448 = 0x88; + if (param_2 == 0) { + iVar23 = uVar1 * uVar7; + uVar47 = (ulong)(iVar23 * 4); + if (0x88 < uVar47) { + uVar27 = uVar47 << 3; + if (0xfe0000000000000 < uVar47) { + uVar27 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar27); + } + if (pdVar49 == (double *)0x0) { + if (pdVar48 == (double *)0x0) { + if (0 < iVar23) { + puVar37 = local_450; + uVar30 = uVar1; + do { + lVar32 = 0; + do { + puVar35 = (undefined8 *)((long)pdVar50 + lVar32); + puVar38 = (undefined8 *)(puVar37 + lVar32); + lVar32 = lVar32 + 0x10; + uVar57 = puVar35[1]; + *puVar38 = *puVar35; + puVar38[1] = uVar57; + } while (lVar32 != ((long)(int)uVar8 + 1) * 0x10); + puVar37 = puVar37 + (long)(int)uVar1 * 0x10; + bVar21 = (int)uVar30 < iVar23; + uVar30 = uVar30 + uVar1; + } while (bVar21); + } + } + else if (0 < iVar23) { + puVar37 = local_450; + uVar30 = uVar1; + do { + lVar32 = 0; + do { + *(undefined8 *)(puVar37 + lVar32) = *(undefined8 *)((long)pdVar48 + lVar32); + lVar32 = lVar32 + 8; + } while (lVar32 != ((long)(int)uVar8 + 1) * 8); + puVar37 = puVar37 + (long)(int)uVar1 * 8; + bVar21 = (int)uVar30 < iVar23; + uVar30 = uVar30 + uVar1; + } while (bVar21); + } + } + else if (pdVar46 == (double *)0x0) { + if (0 < iVar23) { + puVar37 = local_450; + uVar30 = uVar1; + do { + lVar32 = 0; + do { + *(undefined8 *)(puVar37 + lVar32) = *(undefined8 *)((long)pdVar49 + lVar32); + lVar32 = lVar32 + 8; + } while (lVar32 != ((long)(int)uVar8 + 1) * 8); + puVar37 = puVar37 + (long)(int)uVar1 * 8; + bVar21 = (int)uVar30 < iVar23; + uVar30 = uVar30 + uVar1; + } while (bVar21); + } + } + else if (0 < iVar23) { + puVar37 = local_450; + uVar30 = uVar1; + do { + lVar32 = 0; + do { + puVar35 = (undefined8 *)((long)pdVar46 + lVar32); + puVar38 = (undefined8 *)(puVar37 + lVar32); + lVar32 = lVar32 + 0x14; + uVar57 = puVar35[1]; + *puVar38 = *puVar35; + puVar38[1] = uVar57; + *(undefined4 *)(puVar38 + 2) = *(undefined4 *)(puVar35 + 2); + } while (lVar32 != ((long)(int)uVar8 + 1) * 0x14); + puVar37 = puVar37 + (long)(int)uVar1 * 0x14; + bVar21 = (int)uVar30 < iVar23; + uVar30 = uVar30 + uVar1; + } while (bVar21); + } + puVar37 = (undefined1 *)0x0; + local_aa0 = local_450; + local_448 = uVar47; + } + else { + uVar47 = (ulong)((int)(uVar1 * uVar7 + 1) / 2); + if (0x88 < uVar47) { + uVar27 = uVar47 << 3; + if (0xfe0000000000000 < uVar47) { + uVar27 = 0xffffffffffffffff; + } + local_450 = operator_new__(uVar27); + } + local_aa0 = (undefined1 *)0x0; + puVar37 = local_450; + local_448 = uVar47; + } + fVar12 = DAT_003c99fc; + fVar11 = DAT_003c99f8; + local_a68 = 0; + if (local_9e0 != 0) { + do { + if (0 < (int)local_9d8) { + iVar23 = 0; + local_ac8 = uVar7; + do { + dVar81 = DAT_003c99f0; + dVar56 = DAT_003c99e8; + uVar8 = uVar7; + if ((int)(iVar23 + local_9d8) < (int)uVar7) { + uVar8 = iVar23 + local_9d8; + } + if (param_2 == 0) { + (*local_aa8)(local_a58,uVar1 * uVar8,this,local_aa0,local_a88); + } + else { + iVar9 = uVar1 * uVar8; + uVar47 = *(ulong *)this; + if (DAT_005332e0 == '\0') { + DAT_00532ee0 = 0x76ad2212; + DAT_005332f0 = DAT_003c99d0; + DAT_005330e0 = 0x3f800000; + DAT_005334ec = DAT_003c99d4; + DAT_005332dc = DAT_003c99d8; + DAT_00532ee4 = 0; + lVar32 = 0; + dVar55 = DAT_003c99a8; + do { + dVar54 = ::exp(dVar55 * dVar55 * -0.5); + dVar54 = ::log(DAT_003c99e0 / dVar55 + dVar54); + dVar94 = SQRT(dVar54 * -2.0); + if (NAN(dVar94)) { + dVar94 = ::sqrt(dVar54 * -2.0); + } + *(int *)((long)&DAT_005330dc + lVar32) = (int)((dVar94 / dVar55) * dVar56); + dVar55 = ::exp(dVar94 * dVar94 * -0.5); + lVar53 = lVar32 + -4; + *(float *)((long)&DAT_005332d8 + lVar32) = (float)dVar55; + *(float *)((long)&DAT_005334e8 + lVar32) = (float)(dVar94 * dVar81); + lVar32 = lVar53; + dVar55 = dVar94; + } while (lVar53 != -0x1f8); + DAT_005332e0 = '\x01'; + } + fVar16 = DAT_003c9a0c; + fVar15 = DAT_003c9a08; + if (0 < iVar9) { + lVar32 = 0; +LAB_003c7b94: + do { + while( true ) { + uVar45 = (uint)uVar47; + uVar27 = uVar47 & 0x7f; + uVar30 = uVar45 & 0x7f; + fVar80 = (float)(&DAT_005332f0)[(int)uVar30]; + uVar47 = (uVar47 >> 0x20) + (uVar47 & 0xffffffff) * 0xf83f630a; + if ((uint)(&DAT_00532ee0)[(int)uVar30] <= + (uVar45 ^ (int)uVar45 >> 0x1f) - ((int)uVar45 >> 0x1f)) break; +LAB_003c7be0: + *(float *)(puVar37 + lVar32 * 4) = (float)(int)uVar45 * fVar80; +joined_r0x003c80cc: + iVar24 = (int)lVar32; + lVar32 = lVar32 + 1; + if (iVar9 <= iVar24 + 1) goto LAB_003c7bf0; + } + if (uVar27 != 0) { + uVar27 = uVar47 & 0xffffffff; + fVar84 = (float)(&DAT_005330e0)[(int)uVar30]; + fVar93 = (float)(&DAT_005330e0)[(int)(uVar30 - 1)]; + dVar56 = (double)((float)(int)uVar45 * fVar80); + uVar47 = (uVar47 >> 0x20) + (uVar47 & 0xffffffff) * 0xf83f630a; + dVar56 = ::exp(dVar56 * dVar56 * -0.5); + if ((double)(fVar84 + (fVar93 - fVar84) * (float)uVar27 * fVar11) < dVar56) + goto LAB_003c7be0; + goto LAB_003c7b94; + } + do { + uVar27 = uVar47 & 0xffffffff; + uVar28 = (uVar47 >> 0x20) + (uVar47 & 0xffffffff) * 0xf83f630a; + uVar47 = (uVar28 >> 0x20) + (uVar28 & 0xffffffff) * 0xf83f630a; + fVar80 = logf(fVar12 + fVar11 * (float)uVar27); + fVar84 = (float)((double)-fVar80 * DAT_003c9a00); + fVar80 = logf((float)(uVar28 & 0xffffffff) * fVar11 + fVar12); + } while (-fVar80 + -fVar80 < fVar84 * fVar84); + if ((int)uVar45 < 1) { + *(float *)(puVar37 + lVar32 * 4) = fVar16 - fVar84; + goto joined_r0x003c80cc; + } + *(float *)(puVar37 + lVar32 * 4) = fVar84 + fVar15; + lVar32 = lVar32 + 1; + } while ((int)lVar32 < iVar9); + } +LAB_003c7bf0: + *(ulong *)this = uVar47; + (*local_a90)(puVar37,local_a58,uVar8,uVar1,pdVar52,pdVar51,local_a84); + } + iVar23 = iVar23 - uVar7; + local_a58 = local_a58 + (int)uVar8 * local_ac0; + bVar21 = (int)local_ac8 < (int)local_9d8; + local_ac8 = local_ac8 + uVar7; + } while (bVar21); + } + local_a68 = local_a68 + 1; + NAryMatIterator::operator++((NAryMatIterator *)&local_a00); + } while (local_a68 < local_9e0); + } + if ((local_450 != auStack_440) && (local_450 != (undefined1 *)0x0)) { + operator_delete__(local_450); + } + if ((local_8a0 != adStack_890) && (local_8a0 != (double *)0x0)) { + operator_delete__(local_8a0); + } + if (local_8c8 != 0) { + piVar5 = (int *)(local_8c8 + 0x14); + do { + iVar23 = *piVar5; + cVar10 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar21) { + *piVar5 = iVar23 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_ae0); + } + } + local_8c8 = 0; + local_8f0 = (double *)0x0; + local_8d8 = 0; + local_8e0 = 0; + local_8e8 = 0; + if (0 < local_8fc) { + iVar23 = 0; + puVar33 = local_8c0; + do { + iVar23 = iVar23 + 1; + *puVar33 = 0; + puVar33 = puVar33 + 1; + } while (iVar23 < local_8fc); + } + if (local_8b8 != &local_8b0) { + fastFree(local_8b8); + } + if (local_928 != 0) { + piVar5 = (int *)(local_928 + 0x14); + do { + iVar23 = *piVar5; + cVar10 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar21) { + *piVar5 = iVar23 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_ae8); + } + } + local_928 = 0; + local_950 = (double *)0x0; + local_938 = 0; + local_940 = 0; + local_948 = 0; + if (0 < local_95c) { + iVar23 = 0; + puVar33 = local_920; + do { + iVar23 = iVar23 + 1; + *puVar33 = 0; + puVar33 = puVar33 + 1; + } while (iVar23 < local_95c); + } + if (local_918 != &local_910) { + fastFree(local_918); + } + if (local_988 != 0) { + piVar5 = (int *)(local_988 + 0x14); + do { + iVar23 = *piVar5; + cVar10 = '\x01'; + bVar21 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar21) { + *piVar5 = iVar23 + -1; + cVar10 = ExclusiveMonitorsStatus(); + } + } while (cVar10 != '\0'); + if (iVar23 == 1) { + Mat::deallocate(local_a80); + } + } + local_988 = 0; + local_9b0 = 0; + local_998 = 0; + local_9a0 = 0; + local_9a8 = 0; + if (0 < local_9bc) { + iVar23 = 0; + puVar34 = local_980; + do { + iVar23 = iVar23 + 1; + *puVar34 = 0; + puVar34 = puVar34 + 1; + } while (iVar23 < local_9bc); + } + if (local_978 != &local_970) { + fastFree(local_978); + } + return; +} + + +================================================================== + +### FUNC 003c9a10 (28 bytes) name=theRNG + +/* cv::theRNG() */ + +void cv::theRNG(void) + +{ + TLSDataContainer *this; + + this = (TLSDataContainer *)FUN_003b7ff8(); + TLSDataContainer::getData(this); + return; +} + + +================================================================== + +### FUNC 003c9a2c (56 bytes) name=randu + +/* cv::randu(cv::_InputOutputArray const&, cv::_InputArray const&, cv::_InputArray const&) */ + +void cv::randu(_InputOutputArray *param_1,_InputArray *param_2,_InputArray *param_3) + +{ + RNG *this; + + this = (RNG *)theRNG(); + RNG::fill(this,param_1,0,param_2,param_3,false); + return; +} + + +================================================================== + +### FUNC 003c9a64 (56 bytes) name=randn + +/* cv::randn(cv::_InputOutputArray const&, cv::_InputArray const&, cv::_InputArray const&) */ + +void cv::randn(_InputOutputArray *param_1,_InputArray *param_2,_InputArray *param_3) + +{ + RNG *this; + + this = (RNG *)theRNG(); + RNG::fill(this,param_1,1,param_2,param_3,false); + return; +} + + +================================================================== + +### FUNC 003c9a9c (748 bytes) name=randShuffle + +/* cv::randShuffle(cv::_InputOutputArray const&, double, cv::RNG*) */ + +void cv::randShuffle(_InputOutputArray *param_1,double param_2,RNG *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + undefined8 uVar4; + undefined8 uVar5; + int iVar6; + ulong uVar7; + char *pcVar8; + undefined4 *puVar9; + Mat *pMVar10; + code *pcVar11; + undefined8 local_188; + undefined8 local_180; + code *local_178; + code *local_170; + undefined4 local_168; + int local_164; + undefined4 local_160; + undefined4 local_15c; + undefined8 local_158; + undefined8 local_150; + undefined8 local_148; + undefined8 local_140; + undefined8 local_138; + long local_130; + undefined4 *local_128; + undefined8 *local_120; + undefined8 local_118; + undefined8 local_110; + undefined8 local_108 [33]; + + memcpy(local_108,&DAT_00509400,0x108); + iVar6 = _InputArray::kind((_InputArray *)param_1); + if (iVar6 == 0x10000) { + pMVar10 = *(Mat **)(param_1 + 8); + local_128 = &local_160; + local_120 = &local_118; + local_168 = *(undefined4 *)pMVar10; + local_164 = *(int *)(pMVar10 + 4); + local_160 = *(undefined4 *)(pMVar10 + 8); + local_15c = *(undefined4 *)(pMVar10 + 0xc); + local_158 = *(undefined8 *)(pMVar10 + 0x10); + local_150 = *(undefined8 *)(pMVar10 + 0x18); + local_148 = *(undefined8 *)(pMVar10 + 0x20); + local_140 = *(undefined8 *)(pMVar10 + 0x28); + local_138 = *(undefined8 *)(pMVar10 + 0x30); + local_130 = *(long *)(pMVar10 + 0x38); + local_110 = 0; + local_118 = 0; + if (local_130 != 0) { + piVar1 = (int *)(local_130 + 0x14); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (*(int *)(pMVar10 + 4) < 3) { + local_118 = **(undefined8 **)(pMVar10 + 0x48); + local_110 = (*(undefined8 **)(pMVar10 + 0x48))[1]; + } + else { + local_164 = 0; + Mat::copySize((Mat *)&local_168,pMVar10); + } + } + else { + _InputArray::getMat_((int)param_1); + } + if (param_3 == (RNG *)0x0) { + param_3 = (RNG *)theRNG(); + } + if (local_164 < 1) { +LAB_003c9d60: + uVar7 = 0; + } + else { + uVar7 = local_120[(long)local_164 + -1]; + if (0x20 < uVar7) { + local_188 = 0; + local_180 = 0; + pcVar8 = (char *)String::allocate((String *)&local_188,0x14); + uVar5 = s_dst_elemSize___<__32_00477768._8_8_; + uVar4 = s_dst_elemSize___<__32_00477768._0_8_; + *(undefined4 *)(pcVar8 + 0x10) = s_dst_elemSize___<__32_00477768._16_4_; + *(undefined8 *)pcVar8 = uVar4; + *(undefined8 *)(pcVar8 + 8) = uVar5; + error(-0xd7,(String *)&local_188, + "void cv::randShuffle(cv::InputOutputArray, double, cv::RNG*)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x32d); + String::deallocate((String *)&local_188); + if (0 < local_164) { + pcVar11 = (code *)local_108[local_120[(long)local_164 + -1]]; + goto joined_r0x003c9c40; + } + goto LAB_003c9d60; + } + } + pcVar11 = (code *)local_108[uVar7]; +joined_r0x003c9c40: + if (pcVar11 == (code *)0x0) { + local_178 = pcVar11; + local_170 = pcVar11; + pcVar8 = (char *)String::allocate((String *)&local_178,9); + cVar2 = s_src_dims_<__2_&&_src_channels()___0046bcc0[0x30]; + *(undefined8 *)pcVar8 = s_src_dims_<__2_&&_src_channels()___0046bcc0._40_8_; + pcVar8[8] = cVar2; + error(-0xd7,(String *)&local_178,"void cv::randShuffle(cv::InputOutputArray, double, cv::RNG*)", + "/builds/master_pack-android/opencv/modules/core/src/rand.cpp",0x32f); + String::deallocate((String *)&local_178); + } + (*pcVar11)(param_2,(Mat *)&local_168,param_3); + if (local_130 != 0) { + piVar1 = (int *)(local_130 + 0x14); + do { + iVar6 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar6 == 1) { + Mat::deallocate((Mat *)&local_168); + } + } + local_130 = 0; + local_158 = 0; + local_140 = 0; + local_148 = 0; + local_150 = 0; + if (0 < local_164) { + iVar6 = 0; + puVar9 = local_128; + do { + *puVar9 = 0; + iVar6 = iVar6 + 1; + puVar9 = puVar9 + 1; + } while (iVar6 < local_164); + } + if (local_120 != &local_118) { + fastFree(local_120); + } + return; +} + + +================================================================== + +### FUNC 003c9dd4 (420 bytes) name=cvRandArr + +void cvRandArr(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8, + RNG *param_9,cv *param_10,int param_11,undefined8 param_12,undefined8 param_13, + AutoBuffer *param_14) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 local_e8 [2]; + Mat *local_e0; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined8 *local_c8; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8 [2]; + undefined8 *local_b0; + undefined4 local_a8; + undefined4 local_a4; + undefined8 uStack_a0; + undefined8 uStack_98; + undefined8 local_90; + undefined8 uStack_88; + undefined8 uStack_80; + undefined8 uStack_78; + undefined8 local_70; + undefined8 uStack_68; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_10,(void *)0x0,true,false,0,param_14); + if (param_9 == (RNG *)0x0) { + param_9 = (RNG *)cv::theRNG(); + } + local_c8 = &uStack_a0; + local_b0 = &uStack_80; + local_d8 = 0; + local_d4 = 0; + local_e8[0] = 0x3010000; + local_d0[0] = 0xc1020006; + local_c0 = 1; + local_bc = 4; + local_b8[0] = 0xc1020006; + local_a8 = 1; + local_a4 = 4; + local_e0 = aMStack_60; + uStack_a0 = param_1; + uStack_98 = param_2; + local_90 = param_3; + uStack_88 = param_4; + uStack_80 = param_5; + uStack_78 = param_6; + local_70 = param_7; + uStack_68 = param_8; + cv::RNG::fill(param_9,(_InputOutputArray *)local_e8,(uint)(param_11 == 1),(_InputArray *)local_d0, + (_InputArray *)local_b8,false); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 003c9fa0 (252 bytes) name=cvRandShuffle + +void cvRandShuffle(double param_1,cv *param_2,RNG *param_3) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + AutoBuffer *in_x5; + undefined4 local_78 [2]; + Mat *local_70; + undefined4 local_68; + undefined4 local_64; + Mat aMStack_60 [4]; + int local_5c; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + long local_28; + undefined4 *local_20; + undefined1 *local_18; + undefined1 auStack_10 [16]; + + cv::cvarrToMat(param_2,(void *)0x0,true,false,0,in_x5); + if (param_3 == (RNG *)0x0) { + param_3 = (RNG *)cv::theRNG(); + } + local_68 = 0; + local_64 = 0; + local_78[0] = 0x3010000; + local_70 = aMStack_60; + cv::randShuffle((_InputOutputArray *)local_78,param_1,param_3); + if (local_28 != 0) { + piVar1 = (int *)(local_28 + 0x14); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar4 == 1) { + cv::Mat::deallocate(aMStack_60); + } + } + local_28 = 0; + local_50 = 0; + local_38 = 0; + local_40 = 0; + local_48 = 0; + if (0 < local_5c) { + iVar4 = 0; + do { + *local_20 = 0; + iVar4 = iVar4 + 1; + local_20 = local_20 + 1; + } while (iVar4 < local_5c); + } + if (local_18 != auStack_10) { + cv::fastFree(local_18); + } + return; +} + + +================================================================== + +### FUNC 003ca0c4 (56 bytes) name=seed + +/* cv::RNG_MT19937::seed(unsigned int) */ + +void __thiscall cv::RNG_MT19937::seed(RNG_MT19937 *this,uint param_1) + +{ + int iVar1; + RNG_MT19937 *pRVar2; + + iVar1 = 1; + *(uint *)this = param_1; + pRVar2 = this; + do { + pRVar2 = pRVar2 + 4; + param_1 = iVar1 + (param_1 ^ param_1 >> 0x1e) * 0x6c078965; + iVar1 = iVar1 + 1; + *(uint *)pRVar2 = param_1; + } while (iVar1 != 0x270); + *(undefined4 *)(this + 0x9c0) = 0x270; + return; +} + + +================================================================== + +### FUNC 003ca0fc (4 bytes) name=RNG_MT19937 + +/* cv::RNG_MT19937::RNG_MT19937(unsigned int) */ + +void __thiscall cv::RNG_MT19937::RNG_MT19937(RNG_MT19937 *this,uint param_1) + +{ + (*(code *)PTR_seed_00500fc8)(this,param_1); + return; +} + + +================================================================== + +### FUNC 003ca100 (8 bytes) name=RNG_MT19937 + +/* cv::RNG_MT19937::RNG_MT19937() */ + +void __thiscall cv::RNG_MT19937::RNG_MT19937(RNG_MT19937 *this) + +{ + seed(this,0x1571); + return; +} + + +================================================================== + +### FUNC 003ca108 (256 bytes) name=next + +/* cv::RNG_MT19937::next() */ + +uint __thiscall cv::RNG_MT19937::next(RNG_MT19937 *this) + +{ + RNG_MT19937 *pRVar1; + uint uVar2; + int iVar3; + RNG_MT19937 *pRVar4; + int iVar5; + uint uVar6; + + iVar3 = *(int *)(this + 0x9c0); + if (iVar3 < 0x270) { + iVar5 = iVar3 + 1; + uVar6 = *(uint *)(this + (long)iVar3 * 4); + } + else { + uVar6 = *(uint *)this; + pRVar4 = this + 4; + do { + uVar2 = uVar6 & 0x80000000; + uVar6 = *(uint *)pRVar4; + pRVar1 = pRVar4 + 4; + *(uint *)(pRVar4 + -4) = + *(uint *)(pRVar4 + 0x630) ^ (uVar6 & 0x7fffffff | uVar2) >> 1 ^ + *(uint *)(&LAB_004774d0 + (ulong)(uVar6 & 1) * 4); + pRVar4 = pRVar1; + } while (pRVar1 != this + 0x390); + uVar6 = *(uint *)(this + 0x38c); + pRVar4 = this + 0x390; + do { + uVar2 = uVar6 & 0x80000000; + uVar6 = *(uint *)pRVar4; + pRVar1 = pRVar4 + 4; + *(uint *)(pRVar4 + -4) = + *(uint *)(pRVar4 + -0x390) ^ (uVar6 & 0x7fffffff | uVar2) >> 1 ^ + *(uint *)(&LAB_004774d0 + (ulong)(uVar6 & 1) * 4); + pRVar4 = pRVar1; + } while (pRVar1 != this + 0x9c0); + iVar5 = 1; + uVar6 = *(uint *)this; + *(uint *)(this + 0x9bc) = + *(uint *)(this + 0x630) ^ (uVar6 & 0x7fffffff | *(uint *)(this + 0x9bc) & 0x80000000) >> 1 + ^ *(uint *)(&LAB_004774d0 + (ulong)(uVar6 & 1) * 4); + } + uVar6 = uVar6 ^ uVar6 >> 0xb; + *(int *)(this + 0x9c0) = iVar5; + uVar6 = (uVar6 & 0x13a58ad) << 7 ^ uVar6; + uVar6 = (uVar6 & 0x1df8c) << 0xf ^ uVar6; + return uVar6 ^ uVar6 >> 0x12; +} + + +================================================================== + +### FUNC 003ca208 (4 bytes) name=operator.cast.to.unsigned_int + +/* cv::RNG_MT19937::operator unsigned int() */ + +uint __thiscall cv::RNG_MT19937::operator_cast_to_unsigned_int(RNG_MT19937 *this) + +{ + uint uVar1; + + uVar1 = (*(code *)PTR_next_005000c8)((int)this); + return uVar1; +} + + +================================================================== + +### FUNC 003ca20c (4 bytes) name=operator.cast.to.int + +/* cv::RNG_MT19937::operator int() */ + +int __thiscall cv::RNG_MT19937::operator_cast_to_int(RNG_MT19937 *this) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_next_005000c8)((int)this); + return iVar1; +} + + +================================================================== + +### FUNC 003ca210 (36 bytes) name=operator.cast.to.float + +/* cv::RNG_MT19937::operator float() */ + +float __thiscall cv::RNG_MT19937::operator_cast_to_float(RNG_MT19937 *this) + +{ + uint uVar1; + + uVar1 = next(this); + return (float)uVar1 * DAT_003ca234; +} + + +================================================================== + +### FUNC 003ca238 (80 bytes) name=operator.cast.to.double + +/* cv::RNG_MT19937::operator double() */ + +double __thiscall cv::RNG_MT19937::operator_cast_to_double(RNG_MT19937 *this) + +{ + ulong uVar1; + ulong uVar2; + + uVar1 = next(this); + uVar2 = next(this); + return ((double)(uVar2 >> 6 & 0x3ffffff) + DAT_003ca288 * (double)((uVar1 & 0xffffffff) >> 5)) * + DAT_003ca290; +} + + +================================================================== + +### FUNC 003ca298 (56 bytes) name=uniform + +/* cv::RNG_MT19937::uniform(int, int) */ + +int __thiscall cv::RNG_MT19937::uniform(RNG_MT19937 *this,int param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + + uVar3 = next(this); + uVar1 = param_2 - param_1; + uVar2 = 0; + if (uVar1 != 0) { + uVar2 = uVar3 / uVar1; + } + return (uVar3 - uVar2 * uVar1) + param_1; +} + + +================================================================== + +### FUNC 003ca2d0 (52 bytes) name=uniform + +/* cv::RNG_MT19937::uniform(float, float) */ + +float __thiscall cv::RNG_MT19937::uniform(RNG_MT19937 *this,float param_1,float param_2) + +{ + float fVar1; + + fVar1 = operator_cast_to_float(this); + return param_1 + (param_2 - param_1) * fVar1; +} + + +================================================================== + +### FUNC 003ca304 (52 bytes) name=uniform + +/* cv::RNG_MT19937::uniform(double, double) */ + +double __thiscall cv::RNG_MT19937::uniform(RNG_MT19937 *this,double param_1,double param_2) + +{ + double dVar1; + + dVar1 = operator_cast_to_double(this); + return param_1 + (param_2 - param_1) * dVar1; +} + + +================================================================== + +### FUNC 003ca338 (40 bytes) name=operator() + +/* cv::RNG_MT19937::TEMPNAMEPLACEHOLDERVALUE(unsigned int) */ + +int __thiscall cv::RNG_MT19937::operator()(RNG_MT19937 *this,uint param_1) + +{ + uint uVar1; + uint uVar2; + + uVar2 = next(this); + uVar1 = 0; + if (param_1 != 0) { + uVar1 = uVar2 / param_1; + } + return uVar2 - uVar1 * param_1; +} + + +================================================================== + +### FUNC 003ca360 (4 bytes) name=operator() + +/* cv::RNG_MT19937::TEMPNAMEPLACEHOLDERVALUE() */ + +void __thiscall cv::RNG_MT19937::operator()(RNG_MT19937 *this) + +{ + (*(code *)PTR_next_005000c8)(); + return; +} + + +================================================================== + +### FUNC 003ca370 (524 bytes) name=FUN_003ca370 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_003ca370(float *param_1,undefined8 *param_2,float *param_3,int param_4,char param_5) + +{ + uint uVar1; + float fVar2; + float fVar3; + float fVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 uVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 uVar11; + undefined8 uVar12; + undefined8 uVar13; + undefined8 uVar14; + undefined8 uVar15; + undefined8 uVar16; + undefined8 uVar17; + undefined8 uVar18; + undefined8 uVar19; + undefined8 uVar20; + long lVar21; + undefined8 *puVar22; + ulong uVar24; + long lVar25; + float *pfVar26; + ulong uVar27; + float *pfVar28; + float fVar29; + float fVar32; + float fVar33; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + float fVar39; + float fVar40; + float fVar41; + float fVar42; + float fVar43; + float fVar45; + float fVar46; + undefined1 auVar44 [16]; + float fVar47; + undefined1 auVar48 [16]; + undefined1 auVar49 [16]; + undefined1 auVar50 [16]; + float fVar51; + undefined8 *puVar23; + + uVar20 = _UNK_003ca5f8; + uVar19 = _DAT_003ca5f0; + uVar18 = _UNK_003ca5e8; + uVar17 = _DAT_003ca5e0; + uVar16 = _UNK_003ca5d8; + uVar15 = _DAT_003ca5d0; + uVar14 = _UNK_003ca5c8; + uVar13 = _DAT_003ca5c0; + uVar12 = _UNK_003ca5b8; + uVar11 = _DAT_003ca5b0; + uVar10 = _UNK_003ca5a8; + uVar9 = _DAT_003ca5a0; + uVar8 = _UNK_003ca598; + uVar7 = _DAT_003ca590; + uVar6 = _UNK_003ca588; + uVar5 = _DAT_003ca580; + fVar51 = 1.0; + if (param_5 == '\0') { + fVar51 = DAT_003ca57c; + } + if (param_4 < 4) { + uVar24 = 0; + } + else { + uVar1 = param_4 - 4U >> 2; + puVar22 = param_2; + pfVar26 = param_3; + pfVar28 = param_1; + do { + puVar23 = puVar22 + 2; + fVar41 = (float)puVar22[1]; + fVar42 = (float)((ulong)puVar22[1] >> 0x20); + fVar39 = (float)*puVar22; + fVar40 = (float)((ulong)*puVar22 >> 0x20); + fVar2 = *pfVar28; + fVar3 = pfVar28[1]; + fVar4 = pfVar28[3]; + auVar30._0_4_ = ABS(fVar39); + auVar30._4_4_ = ABS(fVar40); + auVar30._8_4_ = ABS(fVar41); + auVar30._12_4_ = ABS(fVar42); + fVar35 = ABS(fVar2); + fVar36 = ABS(fVar3); + fVar37 = ABS(pfVar28[2]); + fVar38 = ABS(fVar4); + auVar48._4_4_ = fVar36; + auVar48._0_4_ = fVar35; + auVar48._8_4_ = fVar37; + auVar48._12_4_ = fVar38; + auVar48 = NEON_fmax(auVar30,auVar48,4); + auVar44._4_4_ = fVar36; + auVar44._0_4_ = fVar35; + auVar44._8_4_ = fVar37; + auVar44._12_4_ = fVar38; + auVar44 = NEON_fmin(auVar30,auVar44,4); + auVar31._0_4_ = auVar48._0_4_ + (float)uVar5; + auVar31._4_4_ = auVar48._4_4_ + (float)((ulong)uVar5 >> 0x20); + auVar31._8_4_ = auVar48._8_4_ + (float)uVar6; + auVar31._12_4_ = auVar48._12_4_ + (float)((ulong)uVar6 >> 0x20); + auVar50 = NEON_frecpe(auVar31,4); + auVar48 = NEON_frecps(auVar31,auVar50,4); + auVar49._0_4_ = auVar50._0_4_ * auVar48._0_4_; + auVar49._4_4_ = auVar50._4_4_ * auVar48._4_4_; + auVar49._8_4_ = auVar50._8_4_ * auVar48._8_4_; + auVar49._12_4_ = auVar50._12_4_ * auVar48._12_4_; + auVar48 = NEON_frecps(auVar31,auVar49,4); + fVar29 = auVar44._0_4_ * auVar49._0_4_ * auVar48._0_4_; + fVar32 = auVar44._4_4_ * auVar49._4_4_ * auVar48._4_4_; + fVar33 = auVar44._8_4_ * auVar49._8_4_ * auVar48._8_4_; + fVar34 = auVar44._12_4_ * auVar49._12_4_ * auVar48._12_4_; + fVar43 = fVar29 * fVar29; + fVar45 = fVar32 * fVar32; + fVar46 = fVar33 * fVar33; + fVar47 = fVar34 * fVar34; + fVar29 = fVar29 * ((float)uVar13 + + fVar43 * ((float)uVar11 + fVar43 * ((float)uVar9 + fVar43 * (float)uVar7))); + fVar32 = fVar32 * ((float)((ulong)uVar13 >> 0x20) + + fVar45 * ((float)((ulong)uVar11 >> 0x20) + + fVar45 * ((float)((ulong)uVar9 >> 0x20) + + fVar45 * (float)((ulong)uVar7 >> 0x20)))); + fVar33 = fVar33 * ((float)uVar14 + + fVar46 * ((float)uVar12 + fVar46 * ((float)uVar10 + fVar46 * (float)uVar8))) + ; + fVar34 = fVar34 * ((float)((ulong)uVar14 >> 0x20) + + fVar47 * ((float)((ulong)uVar12 >> 0x20) + + fVar47 * ((float)((ulong)uVar10 >> 0x20) + + fVar47 * (float)((ulong)uVar8 >> 0x20)))); + fVar29 = (float)((uint)fVar29 ^ + ((uint)fVar29 ^ (uint)((float)uVar15 - fVar29)) & + ~-(uint)(fVar35 <= auVar30._0_4_)); + fVar32 = (float)((uint)fVar32 ^ + ((uint)fVar32 ^ (uint)((float)((ulong)uVar15 >> 0x20) - fVar32)) & + ~-(uint)(fVar36 <= auVar30._4_4_)); + fVar33 = (float)((uint)fVar33 ^ + ((uint)fVar33 ^ (uint)((float)uVar16 - fVar33)) & + ~-(uint)(fVar37 <= auVar30._8_4_)); + fVar34 = (float)((uint)fVar34 ^ + ((uint)fVar34 ^ (uint)((float)((ulong)uVar16 >> 0x20) - fVar34)) & + ~-(uint)(fVar38 <= auVar30._12_4_)); + fVar29 = (float)((uint)fVar29 ^ + ((uint)fVar29 ^ (uint)((float)uVar17 - fVar29)) & -(uint)(fVar39 < 0.0)); + fVar32 = (float)((uint)fVar32 ^ + ((uint)fVar32 ^ (uint)((float)((ulong)uVar17 >> 0x20) - fVar32)) & + -(uint)(fVar40 < 0.0)); + fVar33 = (float)((uint)fVar33 ^ + ((uint)fVar33 ^ (uint)((float)uVar18 - fVar33)) & -(uint)(fVar41 < 0.0)); + fVar34 = (float)((uint)fVar34 ^ + ((uint)fVar34 ^ (uint)((float)((ulong)uVar18 >> 0x20) - fVar34)) & + -(uint)(fVar42 < 0.0)); + pfVar26[2] = fVar51 * (float)((uint)fVar33 ^ + ((uint)fVar33 ^ (uint)((float)uVar20 - fVar33)) & + -(uint)(pfVar28[2] < 0.0)); + pfVar26[3] = fVar51 * (float)((uint)fVar34 ^ + ((uint)fVar34 ^ (uint)((float)((ulong)uVar20 >> 0x20) - fVar34)) + & -(uint)(fVar4 < 0.0)); + *pfVar26 = fVar51 * (float)((uint)fVar29 ^ + ((uint)fVar29 ^ (uint)((float)uVar19 - fVar29)) & + -(uint)(fVar2 < 0.0)); + pfVar26[1] = fVar51 * (float)((uint)fVar32 ^ + ((uint)fVar32 ^ (uint)((float)((ulong)uVar19 >> 0x20) - fVar32)) + & -(uint)(fVar3 < 0.0)); + puVar22 = puVar23; + pfVar26 = pfVar26 + 4; + pfVar28 = pfVar28 + 4; + } while (puVar23 != param_2 + ((ulong)uVar1 + 1) * 2); + uVar24 = (ulong)((uVar1 + 1) * 4); + } + fVar35 = DAT_003ca61c; + fVar34 = DAT_003ca618; + fVar33 = DAT_003ca614; + fVar32 = DAT_003ca610; + fVar29 = DAT_003ca60c; + fVar4 = DAT_003ca608; + fVar3 = DAT_003ca604; + fVar2 = DAT_003ca600; + if ((int)uVar24 < param_4) { + uVar27 = -(uVar24 >> 0x1f) & 0xfffffffc00000000 | uVar24 << 2; + lVar25 = ((ulong)(uint)((param_4 + -1) - (int)uVar24) + 1) * 4; + lVar21 = 0; + do { + while( true ) { + fVar39 = *(float *)((long)param_2 + lVar21 + uVar27); + fVar38 = *(float *)((long)param_1 + lVar21 + uVar27); + fVar36 = ABS(fVar39); + fVar37 = ABS(fVar38); + if (fVar37 <= fVar36) break; + fVar36 = fVar36 / (fVar37 + fVar2); + fVar37 = fVar36 * fVar36; + fVar37 = fVar33 - fVar36 * (fVar32 + fVar37 * (fVar29 + fVar37 * (fVar4 + fVar3 * fVar37))); + if (0.0 <= fVar39) goto LAB_003ca4f4; +LAB_003ca54c: + fVar37 = fVar34 - fVar37; + if (0.0 <= fVar38) goto LAB_003ca4fc; +LAB_003ca558: + *(float *)((long)param_3 + lVar21 + uVar27) = (fVar35 - fVar37) * fVar51; + lVar21 = lVar21 + 4; + if (lVar21 == lVar25) { + return; + } + } + fVar37 = fVar37 / (fVar36 + fVar2); + fVar36 = fVar37 * fVar37; + fVar37 = (fVar32 + fVar36 * (fVar29 + fVar36 * (fVar4 + fVar3 * fVar36))) * fVar37; + if (fVar39 < 0.0) goto LAB_003ca54c; +LAB_003ca4f4: + if (fVar38 < 0.0) goto LAB_003ca558; +LAB_003ca4fc: + *(float *)((long)param_3 + lVar21 + uVar27) = fVar37 * fVar51; + lVar21 = lVar21 + 4; + } while (lVar21 != lVar25); + } + return; +} + + +================================================================== + +### FUNC 003ca620 (348 bytes) name=FUN_003ca620 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_003ca620(long param_1,long param_2,long param_3,int param_4) + +{ + uint uVar1; + float *pfVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float *pfVar6; + float *pfVar7; + undefined8 uVar8; + undefined8 uVar9; + undefined8 *puVar10; + ulong uVar11; + undefined8 *puVar12; + float *pfVar13; + float *pfVar14; + long lVar15; + ulong uVar16; + float fVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + undefined1 auVar26 [16]; + undefined1 auVar27 [16]; + undefined1 auVar28 [16]; + undefined1 auVar29 [16]; + undefined1 auVar30 [16]; + undefined1 auVar31 [16]; + undefined1 auVar32 [16]; + undefined1 auVar33 [16]; + undefined1 auVar34 [16]; + undefined1 auVar35 [16]; + undefined1 auVar36 [16]; + + uVar9 = _UNK_003ca788; + uVar8 = _DAT_003ca780; + if (param_4 < 8) { + uVar16 = 0; + } + else { + uVar1 = param_4 - 8U >> 3; + pfVar13 = (float *)(param_2 + 0x10); + puVar12 = (undefined8 *)(param_3 + 0x10); + puVar10 = (undefined8 *)(param_1 + 0x10); + do { + fVar20 = (float)puVar10[1]; + fVar21 = (float)((ulong)puVar10[1] >> 0x20); + fVar18 = (float)*puVar10; + fVar19 = (float)((ulong)*puVar10 >> 0x20); + pfVar14 = pfVar13 + -4; + fVar17 = *pfVar13; + pfVar2 = pfVar13 + 1; + pfVar3 = pfVar13 + 2; + pfVar4 = pfVar13 + 3; + fVar25 = (float)puVar10[-1]; + fVar24 = (float)((ulong)puVar10[-1] >> 0x20); + fVar22 = (float)puVar10[-2]; + fVar23 = (float)((ulong)puVar10[-2] >> 0x20); + pfVar5 = pfVar13 + -3; + pfVar6 = pfVar13 + -2; + pfVar7 = pfVar13 + -1; + puVar10 = puVar10 + 4; + pfVar13 = pfVar13 + 8; + fVar17 = fVar18 * fVar18 + fVar17 * fVar17; + fVar18 = fVar19 * fVar19 + *pfVar2 * *pfVar2; + fVar19 = fVar20 * fVar20 + *pfVar3 * *pfVar3; + fVar20 = fVar21 * fVar21 + *pfVar4 * *pfVar4; + fVar21 = fVar22 * fVar22 + *pfVar14 * *pfVar14; + fVar22 = fVar23 * fVar23 + *pfVar5 * *pfVar5; + fVar23 = fVar25 * fVar25 + *pfVar6 * *pfVar6; + fVar25 = fVar24 * fVar24 + *pfVar7 * *pfVar7; + auVar27._4_4_ = fVar18; + auVar27._0_4_ = fVar17; + auVar27._8_4_ = fVar19; + auVar27._12_4_ = fVar20; + auVar29._8_8_ = uVar9; + auVar29._0_8_ = uVar8; + auVar34 = NEON_fmax(auVar27,auVar29,4); + auVar29 = NEON_frsqrte(auVar34,4); + auVar31._4_4_ = fVar22; + auVar31._0_4_ = fVar21; + auVar31._8_4_ = fVar23; + auVar31._12_4_ = fVar25; + auVar33._8_8_ = uVar9; + auVar33._0_8_ = uVar8; + auVar35 = NEON_fmax(auVar31,auVar33,4); + auVar33 = NEON_frsqrte(auVar35,4); + auVar26._0_4_ = auVar34._0_4_ * auVar29._0_4_; + auVar26._4_4_ = auVar34._4_4_ * auVar29._4_4_; + auVar26._8_4_ = auVar34._8_4_ * auVar29._8_4_; + auVar26._12_4_ = auVar34._12_4_ * auVar29._12_4_; + auVar27 = NEON_frsqrts(auVar26,auVar29,4); + auVar30._0_4_ = auVar35._0_4_ * auVar33._0_4_; + auVar30._4_4_ = auVar35._4_4_ * auVar33._4_4_; + auVar30._8_4_ = auVar35._8_4_ * auVar33._8_4_; + auVar30._12_4_ = auVar35._12_4_ * auVar33._12_4_; + auVar31 = NEON_frsqrts(auVar30,auVar33,4); + auVar32._0_4_ = auVar33._0_4_ * auVar31._0_4_; + auVar32._4_4_ = auVar33._4_4_ * auVar31._4_4_; + auVar32._8_4_ = auVar33._8_4_ * auVar31._8_4_; + auVar32._12_4_ = auVar33._12_4_ * auVar31._12_4_; + auVar28._0_4_ = auVar29._0_4_ * auVar27._0_4_; + auVar28._4_4_ = auVar29._4_4_ * auVar27._4_4_; + auVar28._8_4_ = auVar29._8_4_ * auVar27._8_4_; + auVar28._12_4_ = auVar29._12_4_ * auVar27._12_4_; + auVar36._0_4_ = auVar35._0_4_ * auVar32._0_4_; + auVar36._4_4_ = auVar35._4_4_ * auVar32._4_4_; + auVar36._8_4_ = auVar35._8_4_ * auVar32._8_4_; + auVar36._12_4_ = auVar35._12_4_ * auVar32._12_4_; + auVar31 = NEON_frsqrts(auVar36,auVar32,4); + auVar35._0_4_ = auVar34._0_4_ * auVar28._0_4_; + auVar35._4_4_ = auVar34._4_4_ * auVar28._4_4_; + auVar35._8_4_ = auVar34._8_4_ * auVar28._8_4_; + auVar35._12_4_ = auVar34._12_4_ * auVar28._12_4_; + auVar27 = NEON_frsqrts(auVar35,auVar28,4); + puVar12[-1] = CONCAT44(fVar25 * auVar32._12_4_ * auVar31._12_4_, + fVar23 * auVar32._8_4_ * auVar31._8_4_); + puVar12[-2] = CONCAT44(fVar22 * auVar32._4_4_ * auVar31._4_4_, + fVar21 * auVar32._0_4_ * auVar31._0_4_); + puVar12[1] = CONCAT44(fVar20 * auVar28._12_4_ * auVar27._12_4_, + fVar19 * auVar28._8_4_ * auVar27._8_4_); + *puVar12 = CONCAT44(fVar18 * auVar28._4_4_ * auVar27._4_4_, + fVar17 * auVar28._0_4_ * auVar27._0_4_); + puVar12 = puVar12 + 4; + } while (puVar10 != (undefined8 *)(param_1 + (ulong)uVar1 * 0x20 + 0x30)); + uVar16 = (ulong)((uVar1 + 1) * 8); + } + if ((int)uVar16 < param_4) { + uVar11 = -(uVar16 >> 0x1f) & 0xfffffffc00000000 | uVar16 << 2; + lVar15 = 0; + do { + fVar18 = *(float *)(param_2 + uVar11 + lVar15); + fVar17 = *(float *)(param_1 + uVar11 + lVar15); + fVar17 = fVar18 * fVar18 + fVar17 * fVar17; + fVar18 = SQRT(fVar17); + if (NAN(fVar18)) { + fVar18 = sqrtf(fVar17); + } + *(float *)(param_3 + uVar11 + lVar15) = fVar18; + lVar15 = lVar15 + 4; + } while (lVar15 != ((ulong)(uint)((param_4 + -1) - (int)uVar16) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003ca790 (124 bytes) name=FUN_003ca790 + +void FUN_003ca790(long param_1,long param_2,long param_3,int param_4) + +{ + long lVar1; + double dVar2; + double dVar3; + + if (0 < param_4) { + lVar1 = 0; + do { + dVar3 = *(double *)(param_2 + lVar1 * 8); + dVar2 = *(double *)(param_1 + lVar1 * 8); + dVar2 = dVar3 * dVar3 + dVar2 * dVar2; + dVar3 = SQRT(dVar2); + if (NAN(dVar3)) { + dVar3 = sqrt(dVar2); + } + *(double *)(param_3 + lVar1 * 8) = dVar3; + lVar1 = lVar1 + 1; + } while (lVar1 != (ulong)(param_4 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003ca80c (288 bytes) name=FUN_003ca80c + +void FUN_003ca80c(long param_1,long param_2,int param_3) + +{ + uint uVar1; + undefined1 (*pauVar2) [16]; + ulong uVar3; + float *pfVar4; + long lVar5; + ulong uVar6; + float fVar7; + undefined1 auVar8 [16]; + float __x; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + undefined1 auVar12 [16]; + undefined1 auVar13 [16]; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + + if (param_3 < 8) { + uVar6 = 0; + } + else { + uVar1 = param_3 - 8U >> 3; + pauVar2 = (undefined1 (*) [16])(param_1 + 0x10); + pfVar4 = (float *)(param_2 + 0x10); + do { + auVar15 = *pauVar2; + auVar9 = NEON_frsqrte(auVar15,4); + auVar14 = pauVar2[-1]; + auVar13 = NEON_frsqrte(auVar14,4); + pauVar2 = pauVar2 + 2; + auVar8._0_4_ = auVar15._0_4_ * auVar9._0_4_; + auVar8._4_4_ = auVar15._4_4_ * auVar9._4_4_; + auVar8._8_4_ = auVar15._8_4_ * auVar9._8_4_; + auVar8._12_4_ = auVar15._12_4_ * auVar9._12_4_; + auVar8 = NEON_frsqrts(auVar8,auVar9,4); + auVar10._0_4_ = auVar14._0_4_ * auVar13._0_4_; + auVar10._4_4_ = auVar14._4_4_ * auVar13._4_4_; + auVar10._8_4_ = auVar14._8_4_ * auVar13._8_4_; + auVar10._12_4_ = auVar14._12_4_ * auVar13._12_4_; + auVar11 = NEON_frsqrts(auVar10,auVar13,4); + auVar12._0_4_ = auVar13._0_4_ * auVar11._0_4_; + auVar12._4_4_ = auVar13._4_4_ * auVar11._4_4_; + auVar12._8_4_ = auVar13._8_4_ * auVar11._8_4_; + auVar12._12_4_ = auVar13._12_4_ * auVar11._12_4_; + auVar11._0_4_ = auVar9._0_4_ * auVar8._0_4_; + auVar11._4_4_ = auVar9._4_4_ * auVar8._4_4_; + auVar11._8_4_ = auVar9._8_4_ * auVar8._8_4_; + auVar11._12_4_ = auVar9._12_4_ * auVar8._12_4_; + auVar9._0_4_ = auVar14._0_4_ * auVar12._0_4_; + auVar9._4_4_ = auVar14._4_4_ * auVar12._4_4_; + auVar9._8_4_ = auVar14._8_4_ * auVar12._8_4_; + auVar9._12_4_ = auVar14._12_4_ * auVar12._12_4_; + auVar8 = NEON_frsqrts(auVar9,auVar12,4); + auVar14._0_4_ = auVar15._0_4_ * auVar11._0_4_; + auVar14._4_4_ = auVar15._4_4_ * auVar11._4_4_; + auVar14._8_4_ = auVar15._8_4_ * auVar11._8_4_; + auVar14._12_4_ = auVar15._12_4_ * auVar11._12_4_; + auVar15 = NEON_frsqrts(auVar14,auVar11,4); + pfVar4[-2] = auVar12._8_4_ * auVar8._8_4_; + pfVar4[-1] = auVar12._12_4_ * auVar8._12_4_; + pfVar4[-4] = auVar12._0_4_ * auVar8._0_4_; + pfVar4[-3] = auVar12._4_4_ * auVar8._4_4_; + pfVar4[2] = auVar11._8_4_ * auVar15._8_4_; + pfVar4[3] = auVar11._12_4_ * auVar15._12_4_; + *pfVar4 = auVar11._0_4_ * auVar15._0_4_; + pfVar4[1] = auVar11._4_4_ * auVar15._4_4_; + pfVar4 = pfVar4 + 8; + } while (pauVar2 != (undefined1 (*) [16])(param_1 + (ulong)uVar1 * 0x20 + 0x30)); + uVar6 = (ulong)((uVar1 + 1) * 8); + } + if ((int)uVar6 < param_3) { + uVar3 = -(uVar6 >> 0x1f) & 0xfffffffc00000000 | uVar6 << 2; + lVar5 = 0; + do { + __x = *(float *)(param_1 + uVar3 + lVar5); + fVar7 = SQRT(__x); + if (NAN(fVar7)) { + fVar7 = sqrtf(__x); + } + *(float *)(param_2 + uVar3 + lVar5) = 1.0 / fVar7; + lVar5 = lVar5 + 4; + } while (lVar5 != ((ulong)(uint)((param_3 + -1) - (int)uVar6) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003ca92c (124 bytes) name=FUN_003ca92c + +void FUN_003ca92c(long param_1,long param_2,int param_3) + +{ + long lVar1; + double dVar2; + double __x; + + if (0 < param_3) { + lVar1 = 0; + do { + __x = *(double *)(param_1 + lVar1 * 8); + dVar2 = SQRT(__x); + if (NAN(dVar2)) { + dVar2 = sqrt(__x); + } + *(double *)(param_2 + lVar1 * 8) = 1.0 / dVar2; + lVar1 = lVar1 + 1; + } while (lVar1 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003ca9b0 (296 bytes) name=FUN_003ca9b0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_003ca9b0(long param_1,long param_2,int param_3) + +{ + uint uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + undefined1 (*pauVar5) [12]; + undefined8 uVar6; + undefined8 uVar7; + undefined1 (*pauVar8) [12]; + ulong uVar9; + float *pfVar10; + long lVar11; + ulong uVar12; + float fVar13; + undefined1 auVar14 [16]; + undefined1 auVar15 [16]; + undefined1 auVar16 [16]; + float fVar17; + undefined1 auVar18 [16]; + undefined1 auVar19 [16]; + undefined1 auVar20 [16]; + undefined1 auVar21 [16]; + undefined1 auVar22 [16]; + undefined1 auVar23 [16]; + undefined1 auVar24 [16]; + undefined1 auVar25 [16]; + + uVar7 = _UNK_003caae8; + uVar6 = _DAT_003caae0; + if (param_3 < 8) { + uVar12 = 0; + } + else { + uVar1 = param_3 - 8U >> 3; + pfVar10 = (float *)(param_2 + 0x10); + pauVar8 = (undefined1 (*) [12])(param_1 + 0x10); + do { + uVar3 = *(undefined8 *)(*pauVar8 + 8); + fVar13 = (float)((ulong)uVar3 >> 0x20); + uVar2 = *(undefined8 *)*pauVar8; + pauVar5 = pauVar8 + 2; + fVar17 = (float)((ulong)*(undefined8 *)(pauVar8[-1] + 4) >> 0x20); + uVar4 = *(undefined8 *)*(undefined1 (*) [12])(pauVar8[-2] + 8); + auVar15._12_4_ = fVar13; + auVar15._0_12_ = *pauVar8; + auVar18._8_8_ = uVar7; + auVar18._0_8_ = uVar6; + auVar23 = NEON_fmax(auVar15,auVar18,4); + auVar18 = NEON_frsqrte(auVar23,4); + auVar20._12_4_ = fVar17; + auVar20._0_12_ = *(undefined1 (*) [12])(pauVar8[-2] + 8); + auVar22._8_8_ = uVar7; + auVar22._0_8_ = uVar6; + auVar24 = NEON_fmax(auVar20,auVar22,4); + auVar22 = NEON_frsqrte(auVar24,4); + auVar14._0_4_ = auVar23._0_4_ * auVar18._0_4_; + auVar14._4_4_ = auVar23._4_4_ * auVar18._4_4_; + auVar14._8_4_ = auVar23._8_4_ * auVar18._8_4_; + auVar14._12_4_ = auVar23._12_4_ * auVar18._12_4_; + auVar15 = NEON_frsqrts(auVar14,auVar18,4); + auVar19._0_4_ = auVar24._0_4_ * auVar22._0_4_; + auVar19._4_4_ = auVar24._4_4_ * auVar22._4_4_; + auVar19._8_4_ = auVar24._8_4_ * auVar22._8_4_; + auVar19._12_4_ = auVar24._12_4_ * auVar22._12_4_; + auVar20 = NEON_frsqrts(auVar19,auVar22,4); + auVar21._0_4_ = auVar22._0_4_ * auVar20._0_4_; + auVar21._4_4_ = auVar22._4_4_ * auVar20._4_4_; + auVar21._8_4_ = auVar22._8_4_ * auVar20._8_4_; + auVar21._12_4_ = auVar22._12_4_ * auVar20._12_4_; + auVar16._0_4_ = auVar18._0_4_ * auVar15._0_4_; + auVar16._4_4_ = auVar18._4_4_ * auVar15._4_4_; + auVar16._8_4_ = auVar18._8_4_ * auVar15._8_4_; + auVar16._12_4_ = auVar18._12_4_ * auVar15._12_4_; + auVar25._0_4_ = auVar24._0_4_ * auVar21._0_4_; + auVar25._4_4_ = auVar24._4_4_ * auVar21._4_4_; + auVar25._8_4_ = auVar24._8_4_ * auVar21._8_4_; + auVar25._12_4_ = auVar24._12_4_ * auVar21._12_4_; + auVar20 = NEON_frsqrts(auVar25,auVar21,4); + auVar24._0_4_ = auVar23._0_4_ * auVar16._0_4_; + auVar24._4_4_ = auVar23._4_4_ * auVar16._4_4_; + auVar24._8_4_ = auVar23._8_4_ * auVar16._8_4_; + auVar24._12_4_ = auVar23._12_4_ * auVar16._12_4_; + auVar15 = NEON_frsqrts(auVar24,auVar16,4); + pfVar10[-2] = (float)*(undefined8 *)(pauVar8[-1] + 4) * auVar21._8_4_ * auVar20._8_4_; + pfVar10[-1] = fVar17 * auVar21._12_4_ * auVar20._12_4_; + pfVar10[-4] = (float)uVar4 * auVar21._0_4_ * auVar20._0_4_; + pfVar10[-3] = (float)((ulong)uVar4 >> 0x20) * auVar21._4_4_ * auVar20._4_4_; + pfVar10[2] = (float)uVar3 * auVar16._8_4_ * auVar15._8_4_; + pfVar10[3] = fVar13 * auVar16._12_4_ * auVar15._12_4_; + *pfVar10 = (float)uVar2 * auVar16._0_4_ * auVar15._0_4_; + pfVar10[1] = (float)((ulong)uVar2 >> 0x20) * auVar16._4_4_ * auVar15._4_4_; + pfVar10 = pfVar10 + 8; + pauVar8 = (undefined1 (*) [12])(*pauVar5 + 8); + } while ((undefined1 (*) [12])(*pauVar5 + 8) != + (undefined1 (*) [12])(param_1 + (ulong)uVar1 * 0x20 + 0x30)); + uVar12 = (ulong)((uVar1 + 1) * 8); + } + if ((int)uVar12 < param_3) { + uVar9 = -(uVar12 >> 0x1f) & 0xfffffffc00000000 | uVar12 << 2; + lVar11 = 0; + do { + fVar17 = *(float *)(param_1 + uVar9 + lVar11); + fVar13 = SQRT(fVar17); + if (NAN(fVar13)) { + fVar13 = sqrtf(fVar17); + } + *(float *)(param_2 + uVar9 + lVar11) = fVar13; + lVar11 = lVar11 + 4; + } while (lVar11 != ((ulong)(uint)((param_3 + -1) - (int)uVar12) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003caaf0 (108 bytes) name=FUN_003caaf0 + +void FUN_003caaf0(long param_1,long param_2,int param_3) + +{ + long lVar1; + double dVar2; + double __x; + + if (0 < param_3) { + lVar1 = 0; + do { + __x = *(double *)(param_1 + lVar1 * 8); + dVar2 = SQRT(__x); + if (NAN(dVar2)) { + dVar2 = sqrt(__x); + } + *(double *)(param_2 + lVar1 * 8) = dVar2; + lVar1 = lVar1 + 1; + } while (lVar1 != (ulong)(param_3 - 1) + 1); + } + return; +} + + +================================================================== + +### FUNC 003cab60 (1208 bytes) name=FUN_003cab60 + +void FUN_003cab60(float *param_1,long param_2,int param_3) + +{ + float *pfVar1; + int iVar2; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + uint uVar8; + double dVar9; + double dVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + uint uVar15; + uint uVar16; + long lVar17; + long lVar18; + long lVar19; + long lVar20; + ulong uVar21; + uint uVar22; + ulong uVar23; + float *pfVar24; + float *pfVar25; + uint uVar26; + uint uVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + double dVar37; + double dVar38; + double local_18; + int iVar3; + + dVar14 = DAT_003cb058; + dVar13 = DAT_003cb050; + dVar12 = DAT_003cb048; + dVar11 = DAT_003cb040; + dVar10 = DAT_003cb038; + dVar9 = DAT_003cb018; + if (param_3 < 4) { + uVar23 = 0; + } + else { + uVar8 = param_3 - 4U >> 2; + pfVar24 = (float *)(param_2 + 4); + pfVar25 = param_1; + do { + fVar4 = *pfVar25; + fVar5 = pfVar25[1]; + fVar6 = pfVar25[2]; + fVar7 = pfVar25[3]; + if (((uint)fVar4 >> 0x17 & 0xff) < 0x8a) { + dVar28 = (double)fVar4 * DAT_003cb030; +LAB_003cabf0: + if (0x89 < ((uint)fVar5 >> 0x17 & 0xff)) goto LAB_003cae10; +LAB_003cac00: + local_18 = (double)fVar5 * DAT_003cb030; +LAB_003cac14: + if (0x89 < ((uint)fVar6 >> 0x17 & 0xff)) goto LAB_003cae2c; +LAB_003cac24: + dVar34 = (double)fVar6 * DAT_003cb030; +LAB_003cac34: + if (0x89 < ((uint)fVar7 >> 0x17 & 0xff)) goto LAB_003cae44; +LAB_003cac44: + dVar32 = (double)fVar7 * DAT_003cb030; + } + else { + dVar28 = DAT_003cb020; + if ((int)fVar4 < 0) goto LAB_003cabf0; + dVar28 = dVar9; + if (((uint)fVar5 >> 0x17 & 0xff) < 0x8a) goto LAB_003cac00; +LAB_003cae10: + if ((int)fVar5 < 0) { + local_18 = DAT_003cb020; + goto LAB_003cac14; + } + local_18 = DAT_003cb018; + /* catch() { ... } // from try @ 003cb300 with catch @ 003cae18 */ + if (((uint)fVar6 >> 0x17 & 0xff) < 0x8a) goto LAB_003cac24; +LAB_003cae2c: + dVar34 = DAT_003cb020; + if ((int)fVar6 < 0) goto LAB_003cac34; + dVar34 = DAT_003cb018; + if (((uint)fVar7 >> 0x17 & 0xff) < 0x8a) goto LAB_003cac44; +LAB_003cae44: + dVar32 = DAT_003cb020; + if (-1 < (int)fVar7) { + dVar32 = DAT_003cb018; + } + } + lVar17 = lrint(dVar28); + lVar18 = lrint(local_18); + lVar19 = lrint(dVar34); + lVar20 = lrint(dVar32); + uVar27 = (uint)lVar17; + uVar22 = (uint)lVar18; + uVar16 = ((int)uVar27 >> 6) + 0x7f; + uVar26 = (uint)lVar19; + uVar15 = (uint)lVar20; + dVar33 = (dVar28 - (double)(int)uVar27) * dVar10; + dVar35 = (local_18 - (double)(int)uVar22) * dVar10; + dVar34 = (dVar34 - (double)(int)uVar26) * dVar10; + dVar28 = (dVar32 - (double)(int)uVar15) * dVar10; + iVar2 = (int)uVar22 >> 6; + iVar3 = (int)uVar26 >> 6; + if ((uVar16 & 0xffffff00) == 0) { + dVar32 = (double)(float)(uVar16 * 0x800000); +LAB_003cacd0: + if ((iVar2 + 0x7fU & 0xffffff00) != 0) goto LAB_003cae7c; +LAB_003cace0: + dVar31 = (double)(float)((iVar2 + 0x7f) * 0x800000); +LAB_003cacec: + if ((iVar3 + 0x7fU & 0xffffff00) == 0) goto LAB_003cacfc; +LAB_003cae98: + dVar30 = 0.0; + if (-1 < iVar3 + 0x7f) { + dVar30 = DAT_003cb028; + } + } + else { + dVar32 = 0.0; + if ((int)uVar16 < 0) goto LAB_003cacd0; + dVar32 = DAT_003cb028; + if ((iVar2 + 0x7fU & 0xffffff00) == 0) goto LAB_003cace0; +LAB_003cae7c: + dVar31 = 0.0; + if (iVar2 + 0x7f < 0) goto LAB_003cacec; + dVar31 = DAT_003cb028; + if ((iVar3 + 0x7fU & 0xffffff00) != 0) goto LAB_003cae98; +LAB_003cacfc: + dVar30 = (double)(float)((iVar3 + 0x7f) * 0x800000); + } + uVar16 = ((int)uVar15 >> 6) + 0x7f; + if ((uVar16 & 0xffffff00) == 0) { + dVar29 = (double)(float)(uVar16 * 0x800000); + } + else { + dVar29 = 0.0; + if (-1 < (int)uVar16) { + dVar29 = DAT_003cb028; + } + } + pfVar1 = pfVar24 + 4; + pfVar25 = pfVar25 + 4; + dVar38 = *(double *)(&DAT_00477930 + (long)(int)(uVar22 & 0x3f) * 8); + dVar37 = *(double *)(&DAT_00477930 + (long)(int)(uVar15 & 0x3f) * 8); + dVar36 = *(double *)(&DAT_00477930 + (long)(int)(uVar26 & 0x3f) * 8); + pfVar24[-1] = (float)(dVar32 * *(double *)(&DAT_00477930 + (long)(int)(uVar27 & 0x3f) * 8) * + (dVar14 + dVar33 * (dVar13 + dVar33 * (dVar12 + dVar33 * (dVar33 + dVar11 + ))))); + *pfVar24 = (float)(dVar31 * dVar38 * + (dVar14 + dVar35 * (dVar13 + dVar35 * (dVar12 + dVar35 * (dVar35 + dVar11))) + )); + pfVar24[1] = (float)(dVar30 * dVar36 * + (dVar14 + dVar34 * (dVar13 + dVar34 * (dVar12 + dVar34 * (dVar34 + dVar11) + )))); + pfVar24[2] = (float)(dVar29 * dVar37 * + (dVar14 + dVar28 * (dVar13 + dVar28 * (dVar12 + dVar28 * (dVar28 + dVar11) + )))); + pfVar24 = pfVar1; + } while (pfVar1 != (float *)(param_2 + (ulong)uVar8 * 0x10 + 0x14)); + uVar23 = (ulong)((uVar8 + 1) * 4); + } + dVar32 = DAT_003cb058; + dVar34 = DAT_003cb050; + dVar28 = DAT_003cb048; + dVar14 = DAT_003cb040; + dVar13 = DAT_003cb038; + dVar12 = DAT_003cb030; + dVar11 = DAT_003cb028; + dVar10 = DAT_003cb020; + dVar9 = DAT_003cb018; + if ((int)uVar23 < param_3) { + uVar21 = -(uVar23 >> 0x1f) & 0xfffffffc00000000 | uVar23 << 2; + lVar17 = 0; + do { + fVar4 = *(float *)((long)param_1 + lVar17 + uVar21); + if (((uint)fVar4 >> 0x17 & 0xff) < 0x8a) { + dVar33 = (double)fVar4 * dVar12; + } + else { + dVar33 = dVar10; + if (-1 < (int)fVar4) { + dVar33 = dVar9; + } + } + lVar18 = lrint(dVar33); + uVar16 = (uint)lVar18; + uVar8 = ((int)uVar16 >> 6) + 0x7f; + if ((uVar8 & 0xffffff00) == 0) { + dVar35 = (double)(float)(uVar8 * 0x800000); + } + else { + dVar35 = dVar11; + if ((int)uVar8 < 0) { + dVar35 = 0.0; + } + } + dVar33 = (dVar33 - (double)(int)uVar16) * dVar13; + *(float *)(param_2 + uVar21 + lVar17) = + (float)(dVar35 * *(double *)(&DAT_00477930 + (long)(int)(uVar16 & 0x3f) * 8) * + (dVar32 + dVar33 * (dVar34 + dVar33 * (dVar28 + dVar33 * (dVar33 + dVar14))))); + lVar17 = lVar17 + 4; + } while (lVar17 != ((ulong)(uint)((param_3 + -1) - (int)uVar23) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003cb060 (1220 bytes) name=FUN_003cb060 + +void FUN_003cb060(double *param_1,long param_2,int param_3) + +{ + double *pdVar1; + int iVar2; + double dVar4; + double dVar5; + double dVar6; + double dVar7; + double dVar8; + double dVar9; + double dVar10; + double dVar11; + uint uVar12; + uint uVar13; + uint uVar14; + long lVar15; + long lVar16; + long lVar17; + long lVar18; + ulong uVar19; + double dVar20; + double dVar21; + uint uVar22; + uint uVar23; + ulong uVar24; + double *pdVar25; + double *pdVar26; + uint uVar27; + double dVar28; + double dVar29; + double dVar30; + double dVar31; + double dVar32; + double dVar33; + double dVar34; + double dVar35; + double dVar36; + int iVar3; + + dVar11 = DAT_003cb578; + dVar10 = DAT_003cb570; + dVar9 = DAT_003cb568; + dVar8 = DAT_003cb560; + dVar7 = DAT_003cb558; + dVar6 = DAT_003cb550; + dVar5 = DAT_003cb548; + dVar4 = DAT_003cb528; + if (param_3 < 4) { + uVar24 = 0; + } + else { + uVar14 = param_3 - 4U >> 2; + pdVar25 = (double *)(param_2 + 8); + pdVar26 = param_1; + do { + /* catch() { ... } // from try @ 003cb294 with catch @ 003cb2e0 */ + uVar13 = (uint)((long)*pdVar26 >> 0x34); + uVar12 = (uint)((long)pdVar26[1] >> 0x34); + uVar22 = (uint)((long)pdVar26[2] >> 0x34); + uVar23 = (uint)((long)pdVar26[3] >> 0x34); + if ((uVar13 & 0x7ff) < 0x40a) { + dVar28 = *pdVar26 * DAT_003cb540; +LAB_003cb0f4: + if (0x409 < (uVar12 & 0x7ff)) goto LAB_003cb310; +LAB_003cb108: + dVar30 = pdVar26[1] * DAT_003cb540; +LAB_003cb110: + if (0x409 < (uVar22 & 0x7ff)) goto LAB_003cb32c; +LAB_003cb124: + dVar31 = pdVar26[2] * DAT_003cb540; +LAB_003cb12c: + if (0x409 < (uVar23 & 0x7ff)) goto LAB_003cb348; +LAB_003cb140: + dVar20 = pdVar26[3] * DAT_003cb540; + } + else { + dVar28 = DAT_003cb530; + if ((int)uVar13 < 0) goto LAB_003cb0f4; + /* try { // try from 003cb300 to 004cb303 has its CatchHandler @ 003cae18 */ + dVar28 = dVar4; + if ((uVar12 & 0x7ff) < 0x40a) goto LAB_003cb108; +LAB_003cb310: + dVar30 = DAT_003cb530; + if ((int)uVar12 < 0) goto LAB_003cb110; + dVar30 = DAT_003cb528; + if ((uVar22 & 0x7ff) < 0x40a) goto LAB_003cb124; +LAB_003cb32c: + dVar31 = DAT_003cb530; + if ((int)uVar22 < 0) goto LAB_003cb12c; + /* catch() { ... } // from try @ 003cb974 with catch @ 003cb344 */ + dVar31 = DAT_003cb528; + if ((uVar23 & 0x7ff) < 0x40a) goto LAB_003cb140; +LAB_003cb348: + dVar20 = DAT_003cb530; + if (-1 < (int)uVar23) { + dVar20 = DAT_003cb528; + } + } + lVar15 = lrint(dVar28); + lVar16 = lrint(dVar30); + lVar17 = lrint(dVar31); + lVar18 = lrint(dVar20); + uVar23 = (uint)lVar15; + uVar22 = (uint)lVar16; + uVar13 = ((int)uVar23 >> 6) + 0x3ff; + uVar27 = (uint)lVar17; + uVar12 = (uint)lVar18; + dVar29 = (dVar28 - (double)(int)uVar23) * dVar5; + dVar28 = (dVar30 - (double)(int)uVar22) * dVar5; + dVar30 = (dVar31 - (double)(int)uVar27) * dVar5; + dVar31 = (dVar20 - (double)(int)uVar12) * dVar5; + iVar2 = (int)uVar22 >> 6; + iVar3 = (int)uVar27 >> 6; + if ((uVar13 & 0xfffff800) == 0) { + dVar20 = (double)((ulong)uVar13 << 0x34); +LAB_003cb1d4: + if ((iVar2 + 0x3ffU & 0xfffff800) != 0) goto LAB_003cb380; +LAB_003cb1e4: + dVar21 = (double)((ulong)(iVar2 + 0x3ff) << 0x34); +LAB_003cb1ec: + if ((iVar3 + 0x3ffU & 0xfffff800) == 0) goto LAB_003cb1fc; +LAB_003cb39c: + dVar32 = 0.0; + if (-1 < iVar3 + 0x3ff) { + dVar32 = DAT_003cb538; + } + } + else { + dVar20 = 0.0; + if ((int)uVar13 < 0) goto LAB_003cb1d4; + dVar20 = DAT_003cb538; + if ((iVar2 + 0x3ffU & 0xfffff800) == 0) goto LAB_003cb1e4; +LAB_003cb380: + dVar21 = 0.0; + if (iVar2 + 0x3ff < 0) goto LAB_003cb1ec; + dVar21 = DAT_003cb538; + if ((iVar3 + 0x3ffU & 0xfffff800) != 0) goto LAB_003cb39c; +LAB_003cb1fc: + dVar32 = (double)((ulong)(iVar3 + 0x3ff) << 0x34); + } + uVar13 = ((int)uVar12 >> 6) + 0x3ff; + if ((uVar13 & 0xfffff800) == 0) { + dVar33 = (double)((ulong)uVar13 << 0x34); + } + else { + dVar33 = 0.0; + if (-1 < (int)uVar13) { + dVar33 = DAT_003cb538; + } + } + pdVar1 = pdVar25 + 4; + dVar36 = *(double *)(&DAT_00477930 + (long)(int)(uVar23 & 0x3f) * 8); + pdVar26 = pdVar26 + 4; + dVar35 = *(double *)(&DAT_00477930 + (long)(int)(uVar12 & 0x3f) * 8); + dVar34 = *(double *)(&DAT_00477930 + (long)(int)(uVar27 & 0x3f) * 8); + /* try { // try from 003cb294 to 004cb297 has its CatchHandler @ 003cb2e0 */ + *pdVar25 = dVar21 * *(double *)(&DAT_00477930 + (long)(int)(uVar22 & 0x3f) * 8) * + (dVar11 + dVar28 * (dVar10 + dVar28 * (dVar9 + dVar28 * (dVar8 + dVar28 * (dVar7 + + dVar6 * dVar28))))); + pdVar25[-1] = dVar20 * dVar36 * + (dVar11 + dVar29 * (dVar10 + dVar29 * (dVar9 + dVar29 * (dVar8 + dVar29 * (dVar7 + + + dVar6 * dVar29))))); + pdVar25[2] = dVar33 * dVar35 * + (dVar11 + dVar31 * (dVar10 + dVar31 * (dVar9 + dVar31 * (dVar8 + dVar31 * (dVar7 + + dVar6 * dVar31))))); + pdVar25[1] = dVar32 * dVar34 * + (dVar11 + dVar30 * (dVar10 + dVar30 * (dVar9 + dVar30 * (dVar8 + dVar30 * (dVar7 + + dVar6 * dVar30))))); + pdVar25 = pdVar1; + } while (pdVar1 != (double *)(param_2 + (ulong)uVar14 * 0x20 + 0x28)); + uVar24 = (ulong)((uVar14 + 1) * 4); + } + dVar31 = DAT_003cb578; + dVar30 = DAT_003cb570; + dVar28 = DAT_003cb568; + dVar11 = DAT_003cb560; + dVar10 = DAT_003cb558; + dVar9 = DAT_003cb550; + dVar8 = DAT_003cb548; + dVar7 = DAT_003cb540; + dVar6 = DAT_003cb538; + dVar5 = DAT_003cb530; + dVar4 = DAT_003cb528; + if ((int)uVar24 < param_3) { + uVar19 = -(uVar24 >> 0x1f) & 0xfffffff800000000 | uVar24 << 3; + lVar15 = 0; + /* try { // try from 003cb404 to 004cb407 has its CatchHandler @ 003cb958 */ + do { + dVar20 = *(double *)((long)param_1 + lVar15 + uVar19); + uVar14 = (uint)((long)dVar20 >> 0x34); + if ((uVar14 & 0x7ff) < 0x40a) { + dVar20 = dVar20 * dVar7; + } + else { + dVar20 = dVar5; + if (-1 < (int)uVar14) { + dVar20 = dVar4; + } + } + lVar16 = lrint(dVar20); + uVar13 = (uint)lVar16; + uVar14 = ((int)uVar13 >> 6) + 0x3ff; + dVar29 = (double)((ulong)uVar14 << 0x34); + if (((uVar14 & 0xfffff800) != 0) && (dVar29 = dVar6, (int)uVar14 < 0)) { + dVar29 = 0.0; + } + dVar20 = (dVar20 - (double)(int)uVar13) * dVar8; + *(double *)(param_2 + uVar19 + lVar15) = + dVar29 * *(double *)(&DAT_00477930 + (long)(int)(uVar13 & 0x3f) * 8) * + (dVar31 + dVar20 * (dVar30 + dVar20 * (dVar28 + dVar20 * (dVar11 + dVar20 * (dVar10 + + dVar9 * dVar20))))); + lVar15 = lVar15 + 8; + } while (lVar15 != ((ulong)(uint)((param_3 + -1) - (int)uVar24) + 1) * 8); + } + return; +} + + +================================================================== + +### FUNC 003cb580 (744 bytes) name=FUN_003cb580 + +void FUN_003cb580(uint *param_1,long param_2,int param_3) + +{ + float *pfVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + double dVar11; + double dVar12; + float fVar13; + ulong uVar14; + long lVar15; + ulong uVar16; + float *pfVar17; + uint *puVar18; + float fVar19; + double dVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + + dVar12 = DAT_003cb870; + dVar11 = DAT_003cb868; + if (param_3 < 4) { + uVar16 = 0; + } + else { + uVar10 = param_3 - 4U >> 2; + pfVar17 = (float *)(param_2 + 4); + puVar18 = param_1; + do { + uVar6 = *puVar18; + uVar7 = puVar18[1]; + uVar8 = puVar18[2]; + uVar9 = puVar18[3]; + uVar2 = (int)uVar6 >> 0xe & 0x1fe; + uVar3 = (int)uVar7 >> 0xe & 0x1fe; + uVar4 = (int)uVar8 >> 0xe & 0x1fe; + uVar5 = (int)uVar9 >> 0xe & 0x1fe; + pfVar1 = pfVar17 + 4; + puVar18 = puVar18 + 4; + dVar23 = (double)*(float *)(&DAT_00477b40 + (long)(int)(uint)(uVar2 == 0x1fe) * 4) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar2 + 1) * 8) * + ((double)(float)(uVar6 & 0x7fff | 0x3f800000) - 1.0); + dVar22 = (double)*(float *)(&DAT_00477b40 + (long)(int)(uint)(uVar3 == 0x1fe) * 4) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar3 + 1) * 8) * + ((double)(float)(uVar7 & 0x7fff | 0x3f800000) - 1.0); + dVar21 = (double)*(float *)(&DAT_00477b40 + (long)(int)(uint)(uVar4 == 0x1fe) * 4) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar4 + 1) * 8) * + ((double)(float)(uVar8 & 0x7fff | 0x3f800000) - 1.0); + dVar20 = (double)*(float *)(&DAT_00477b40 + (long)(int)(uint)(uVar5 == 0x1fe) * 4) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar5 + 1) * 8) * + ((double)(float)(uVar9 & 0x7fff | 0x3f800000) - 1.0); + dVar26 = *(double *)(&LAB_00477b50 + (long)(int)uVar3 * 8); + dVar25 = *(double *)(&LAB_00477b50 + (long)(int)uVar4 * 8); + dVar24 = *(double *)(&LAB_00477b50 + (long)(int)uVar5 * 8); + pfVar17[-1] = (float)(*(double *)(&LAB_00477b50 + (long)(int)uVar2 * 8) + + dVar11 * (double)(int)((uVar6 >> 0x17 & 0xff) - 0x7f) + + dVar23 * (dVar23 * (dVar12 * dVar23 + -0.5) + 1.0)); + *pfVar17 = (float)(dVar26 + dVar11 * (double)(int)((uVar7 >> 0x17 & 0xff) - 0x7f) + + dVar22 * (dVar22 * (dVar12 * dVar22 + -0.5) + 1.0)); + pfVar17[1] = (float)(dVar25 + dVar11 * (double)(int)((uVar8 >> 0x17 & 0xff) - 0x7f) + + dVar21 * (dVar21 * (dVar12 * dVar21 + -0.5) + 1.0)); + pfVar17[2] = (float)(dVar24 + dVar11 * (double)(int)((uVar9 >> 0x17 & 0xff) - 0x7f) + + dVar20 * (dVar20 * (dVar12 * dVar20 + -0.5) + 1.0)); + pfVar17 = pfVar1; + } while (pfVar1 != (float *)(param_2 + (ulong)uVar10 * 0x10 + 0x14)); + uVar16 = (ulong)((uVar10 + 1) * 4); + } + fVar13 = DAT_003cb878; + dVar11 = DAT_003cb868; + if ((int)uVar16 < param_3) { + uVar14 = -(uVar16 >> 0x1f) & 0xfffffffc00000000 | uVar16 << 2; + lVar15 = 0; + do { + uVar2 = *(uint *)((long)param_1 + lVar15 + uVar14); + uVar10 = (int)uVar2 >> 0xe & 0x1fe; + fVar19 = (float)(((double)(float)(uVar2 & 0x7fff | 0x3f800000) - 1.0) * + *(double *)(&LAB_00477b50 + (long)(int)(uVar10 + 1) * 8)) + + *(float *)(&DAT_00477b40 + (long)(int)(uint)(uVar10 == 0x1fe) * 4); + *(float *)(param_2 + uVar14 + lVar15) = + (float)((double)((fVar19 * (fVar13 * fVar19 + -0.5) + 1.0) * fVar19) + + *(double *)(&LAB_00477b50 + (long)(int)uVar10 * 8) + + dVar11 * (double)(int)((uVar2 >> 0x17 & 0xff) - 0x7f)); + lVar15 = lVar15 + 4; + } while (lVar15 != ((ulong)(uint)((param_3 + -1) - (int)uVar16) + 1) * 4); + } + return; +} + + +================================================================== + +### FUNC 003cb880 (920 bytes) name=FUN_003cb880 + +void FUN_003cb880(ulong *param_1,long param_2,int param_3) + +{ + uint *puVar1; + double *pdVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + double dVar11; + double dVar12; + double dVar13; + double dVar14; + double dVar15; + ulong *puVar16; + ulong *puVar17; + double *pdVar18; + long lVar19; + int iVar20; + double dVar21; + double dVar22; + double dVar23; + double dVar24; + double dVar25; + double dVar26; + double dVar27; + double dVar28; + double dVar29; + double dVar30; + + dVar15 = DAT_003cbc38; + dVar14 = DAT_003cbc30; + dVar13 = DAT_003cbc28; + dVar12 = DAT_003cbc20; + dVar11 = DAT_003cbc18; + if (param_3 < 4) { + iVar20 = 0; + } + else { + uVar9 = param_3 - 4U >> 2; + puVar16 = param_1; + pdVar18 = (double *)(param_2 + 8); + do { + puVar1 = (uint *)((long)puVar16 + 4); + uVar6 = *(uint *)((long)puVar16 + 0xc); + uVar3 = (int)*puVar1 >> 0xb & 0x1fe; + uVar4 = (int)uVar6 >> 0xb & 0x1fe; + /* catch() { ... } // from try @ 003cb404 with catch @ 003cb958 */ + /* try { // try from 003cb974 to 004cb977 has its CatchHandler @ 003cb344 */ + /* catch() { ... } // from try @ 003cbf74 with catch @ 003cb978 */ + dVar30 = *(double *)(&DAT_00477b30 + (long)(int)(uint)(uVar3 == 0x1fe) * 8) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar3 + 1) * 8) * + ((double)(*puVar16 & 0xfffffffffff | 0x3ff0000000000000) - 1.0); + uVar7 = *(uint *)((long)puVar16 + 0x14); + dVar29 = *(double *)(&DAT_00477b30 + (long)(int)(uint)(uVar4 == 0x1fe) * 8) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar4 + 1) * 8) * + ((double)(puVar16[1] & 0xfffffffffff | 0x3ff0000000000000) - 1.0); + uVar8 = *(uint *)((long)puVar16 + 0x1c); + uVar10 = puVar16[3]; + puVar17 = puVar16 + 2; + dVar22 = *(double *)(&LAB_00477b50 + (long)(int)uVar4 * 8); + dVar24 = dVar30 * dVar30; + dVar23 = dVar29 * dVar29; + uVar4 = (int)uVar7 >> 0xb & 0x1fe; + uVar5 = (int)uVar8 >> 0xb & 0x1fe; + pdVar2 = pdVar18 + 4; + /* try { // try from 003cba38 to 004cba3b has its CatchHandler @ 003cbf58 */ + dVar26 = *(double *)(&LAB_00477b50 + (long)(int)uVar4 * 8); + puVar16 = puVar16 + 4; + dVar25 = *(double *)(&LAB_00477b50 + (long)(int)uVar5 * 8); + dVar27 = *(double *)(&LAB_00477b50 + (long)(int)(uVar5 + 1) * 8); + dVar21 = *(double *)(&DAT_00477b30 + (long)(int)(uint)(uVar4 == 0x1fe) * 8) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar4 + 1) * 8) * + ((double)(*puVar17 & 0xfffffffffff | 0x3ff0000000000000) - 1.0); + dVar28 = dVar21 * dVar21; + pdVar18[-1] = *(double *)(&LAB_00477b50 + (long)(int)uVar3 * 8) + + dVar11 * (double)(int)((*puVar1 >> 0x14 & 0x7ff) - 0x3ff) + + (dVar24 * (dVar15 + dVar24 * (dVar14 + dVar13 * dVar24)) + 1.0) * dVar30 + + dVar24 * (dVar24 * (dVar24 * (dVar12 + dVar24 * -0.125) + -0.25) + -0.5); + *pdVar18 = dVar22 + dVar11 * (double)(int)((uVar6 >> 0x14 & 0x7ff) - 0x3ff) + + (dVar23 * (dVar15 + dVar23 * (dVar14 + dVar13 * dVar23)) + 1.0) * dVar29 + + dVar23 * (dVar23 * (dVar23 * (dVar12 + dVar23 * -0.125) + -0.25) + -0.5); + dVar22 = *(double *)(&DAT_00477b30 + (long)(int)(uint)(uVar5 == 0x1fe) * 8) + + dVar27 * ((double)(uVar10 & 0xfffffffffff | 0x3ff0000000000000) - 1.0); + dVar23 = dVar22 * dVar22; + pdVar18[1] = dVar26 + dVar11 * (double)(int)((uVar7 >> 0x14 & 0x7ff) - 0x3ff) + + (dVar28 * (dVar15 + dVar28 * (dVar14 + dVar13 * dVar28)) + 1.0) * dVar21 + + dVar28 * (dVar28 * (dVar28 * (dVar12 + dVar28 * -0.125) + -0.25) + -0.5); + pdVar18[2] = dVar25 + dVar11 * (double)(int)((uVar8 >> 0x14 & 0x7ff) - 0x3ff) + + (dVar23 * (dVar15 + dVar23 * (dVar14 + dVar13 * dVar23)) + 1.0) * dVar22 + + dVar23 * (dVar23 * (dVar23 * (dVar12 + dVar23 * -0.125) + -0.25) + -0.5); + pdVar18 = pdVar2; + } while (pdVar2 != (double *)(param_2 + (ulong)uVar9 * 0x20 + 0x28)); + iVar20 = (uVar9 + 1) * 4; + } + dVar15 = DAT_003cbc38; + dVar14 = DAT_003cbc30; + dVar13 = DAT_003cbc28; + dVar12 = DAT_003cbc20; + dVar11 = DAT_003cbc18; + if (iVar20 < param_3) { + lVar19 = (long)iVar20; + puVar16 = param_1 + lVar19; + pdVar18 = (double *)(param_2 + lVar19 * 8); + do { + puVar17 = puVar16 + 1; + uVar9 = (int)*(uint *)((long)puVar16 + 4) >> 0xb & 0x1fe; + dVar22 = *(double *)(&DAT_00477b30 + (long)(int)(uint)(uVar9 == 0x1fe) * 8) + + *(double *)(&LAB_00477b50 + (long)(int)(uVar9 + 1) * 8) * + ((double)(*puVar16 & 0xfffffffffff | 0x3ff0000000000000) - 1.0); + dVar21 = dVar22 * dVar22; + *pdVar18 = *(double *)(&LAB_00477b50 + (long)(int)uVar9 * 8) + + dVar11 * (double)(int)((*(uint *)((long)puVar16 + 4) >> 0x14 & 0x7ff) - 0x3ff) + + (dVar21 * (dVar15 + dVar21 * (dVar14 + dVar13 * dVar21)) + 1.0) * dVar22 + + dVar21 * (dVar21 * (dVar21 * (dVar12 + dVar21 * -0.125) + -0.25) + -0.5); + puVar16 = puVar17; + pdVar18 = pdVar18 + 1; + } while (puVar17 != param_1 + lVar19 + 1 + (ulong)(uint)((param_3 + -1) - iVar20)); + } + return; +} + + +================================================================== + +### FUNC 003cbc40 (3004 bytes) name=FUN_003cbc40 + +int FUN_003cbc40(float *param_1,ulong param_2,int param_3,float *param_4,ulong param_5,uint param_6) + +{ + long lVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + ulong uVar5; + float fVar6; + float *pfVar7; + long lVar8; + float *pfVar9; + float *pfVar10; + long lVar11; + long lVar12; + float *pfVar13; + long lVar14; + long lVar15; + float *pfVar16; + long lVar17; + float *pfVar18; + int iVar19; + long lVar20; + long lVar21; + uint uVar22; + long lVar23; + ulong uVar24; + uint uVar25; + long lVar26; + long lVar27; + long lVar28; + uint uVar29; + int iVar30; + uint uVar31; + long lVar32; + long lVar33; + float *pfVar34; + uint uVar35; + float fVar36; + float fVar37; + undefined8 uVar38; + undefined8 uVar39; + float fVar40; + undefined8 uVar41; + int iVar42; + float fVar43; + int iVar44; + int iVar45; + float fVar46; + float *pfVar47; + long lVar48; + long lVar49; + float *pfVar50; + long lVar51; + uint uVar52; + long local_30; + long local_28; + int local_14; + + fVar37 = DAT_003cc7fc; + param_5 = param_5 >> 2; + param_2 = param_2 >> 2; + if (param_3 < 1) { + local_14 = 1; + if (param_4 != (float *)0x0) { +LAB_003cc5f4: + uVar52 = param_3 - 1; + if (-1 < (int)uVar52) { + lVar27 = (long)(int)uVar52; + lVar28 = param_2 + 1; + lVar48 = lVar27 * lVar28 + 1; + param_4 = (float *)((long)param_4 + lVar27 * param_5 * 4); + pfVar18 = (float *)((long)param_1 + lVar28 * 4 * lVar27); + pfVar50 = param_1 + lVar48; + uVar24 = 0xffffffff; + do { + if (0 < (int)param_6) { + pfVar47 = param_4; + do { + fVar37 = *pfVar47; + pfVar9 = pfVar50; + pfVar10 = pfVar47; + if ((int)(uVar52 - (int)uVar24) < param_3) { + do { + pfVar13 = pfVar9 + 1; + fVar37 = fVar37 - pfVar10[param_5] * *pfVar9; + pfVar9 = pfVar13; + pfVar10 = pfVar10 + param_5; + } while (pfVar13 != param_1 + lVar48 + 1 + uVar24); + } + pfVar10 = pfVar47 + 1; + *pfVar47 = fVar37 * *pfVar18; + pfVar47 = pfVar10; + } while (pfVar10 != param_4 + (ulong)(param_6 - 1) + 1); + } + uVar22 = (int)uVar24 + 1; + uVar24 = (ulong)uVar22; + pfVar18 = pfVar18 + -lVar28; + param_4 = param_4 + -param_5; + pfVar50 = pfVar50 + ~param_2; + lVar48 = lVar48 + ~param_2; + } while (uVar22 != uVar52); + } + } + } + else { + uVar52 = param_3 - 2; + lVar48 = 0; + uVar22 = param_3 - 1; + lVar49 = NEON_shl(param_2 + 1,2); + iVar19 = 0; + local_28 = 0; + local_30 = 0; + lVar27 = 0; + lVar28 = 0; + lVar32 = 0; + lVar23 = lVar49 + -4; + pfVar50 = (float *)((long)param_1 + lVar49); + local_14 = 1; + iVar44 = 1; + pfVar18 = param_4; + pfVar47 = param_1; + lVar51 = lVar23; + if (param_3 < 2) goto LAB_003cc5bc; +LAB_003cbd00: + fVar43 = *(float *)((long)param_1 + local_28); + lVar1 = lVar32 + 1; + lVar12 = lVar27 + param_2; + lVar11 = lVar1; + fVar46 = fVar43; + iVar30 = iVar44; + iVar45 = iVar19; + do { + lVar20 = lVar32 + lVar12; + fVar36 = ABS(fVar46); + fVar40 = ABS(param_1[lVar20]); + lVar33 = lVar12; + lVar14 = lVar11; + iVar42 = iVar30; + if (fVar40 <= fVar36) { + lVar33 = (long)iVar45 * param_2; + lVar14 = (long)iVar45; + iVar42 = iVar45; + } + iVar45 = iVar42; + iVar30 = iVar30 + 1; + lVar11 = lVar11 + 1; + lVar12 = lVar12 + param_2; + fVar6 = param_1[lVar20]; + if (fVar40 <= fVar36) { + fVar40 = fVar36; + fVar6 = fVar46; + } + fVar46 = fVar6; + } while (iVar30 != param_3); + if (fVar37 <= fVar40) { + if (iVar19 != iVar45) { + iVar30 = (int)lVar32; + if (iVar30 < param_3) { + lVar12 = lVar33 + lVar32; + uVar25 = param_3 - iVar30; + if ((local_28 < (lVar32 + 4 + lVar33) * 4 && lVar12 * 4 < local_28 + 0x10) || (uVar25 < 9) + ) { + pfVar10 = (float *)((long)param_1 + local_28); + do { + fVar46 = *pfVar10; + *pfVar10 = pfVar10[lVar33 - lVar27]; + pfVar10[lVar33 - lVar27] = fVar46; + pfVar10 = pfVar10 + 1; + } while (pfVar10 != param_1 + lVar48 + 1 + (ulong)uVar22); + } + else { + uVar24 = (long)param_1 + local_28; + uVar31 = -((uint)(uVar24 >> 2) & 3) & 3; + if (uVar25 < uVar31) { + uVar31 = uVar25; + } + uVar5 = (ulong)uVar31; + if (uVar31 != 0) { + *(float *)((long)param_1 + local_28) = param_1[lVar12]; + param_1[lVar12] = fVar43; + iVar19 = iVar44; + if (uVar31 != 1) { + fVar46 = *(float *)(uVar24 + 4); + *(float *)(uVar24 + 4) = param_1[lVar33 + lVar1]; + param_1[lVar33 + lVar1] = fVar46; + iVar19 = iVar30 + 2; + if (uVar31 == 3) { + lVar11 = lVar33 + lVar32 + 2; + fVar46 = *(float *)(uVar24 + 8); + *(float *)(uVar24 + 8) = param_1[lVar11]; + param_1[lVar11] = fVar46; + iVar19 = iVar30 + 3; + } + } + } + lVar11 = 0; + uVar35 = ((uVar25 - uVar31) - 4 >> 2) + 1; + uVar29 = 0; + iVar30 = uVar35 * 4; + do { + puVar2 = (undefined8 *)((long)param_1 + lVar11 + (lVar32 + uVar5 + lVar33) * 4); + puVar3 = (undefined8 *)((long)param_1 + lVar11 + (uVar5 + lVar48) * 4); + uVar29 = uVar29 + 1; + uVar41 = *puVar2; + puVar4 = (undefined8 *)((long)param_1 + lVar11 + (lVar12 + uVar5) * 4); + uVar39 = puVar3[1]; + uVar38 = *puVar3; + lVar11 = lVar11 + 0x10; + puVar3[1] = puVar2[1]; + *puVar3 = uVar41; + puVar4[1] = uVar39; + *puVar4 = uVar38; + } while (uVar29 < uVar35); + iVar19 = iVar19 + iVar30; + if (uVar25 - uVar31 != iVar30) { + iVar30 = iVar19 + 1; + lVar12 = iVar19 + lVar33; + lVar11 = lVar27 + iVar19; + fVar46 = param_1[lVar11]; + param_1[lVar11] = param_1[lVar12]; + param_1[lVar12] = fVar46; + if (iVar30 < param_3) { + iVar19 = iVar19 + 2; + lVar12 = iVar30 + lVar33; + lVar11 = lVar27 + iVar30; + fVar46 = param_1[lVar11]; + param_1[lVar11] = param_1[lVar12]; + param_1[lVar12] = fVar46; + if (iVar19 < param_3) { + lVar33 = iVar19 + lVar33; + lVar12 = lVar27 + iVar19; + fVar46 = param_1[lVar12]; + /* catch() { ... } // from try @ 003cba38 with catch @ 003cbf58 */ + param_1[lVar12] = param_1[lVar33]; + param_1[lVar33] = fVar46; + } + } + } + } + } + if ((param_4 != (float *)0x0) && (0 < (int)param_6)) { + /* try { // try from 003cbf74 to 004cbf77 has its CatchHandler @ 003cb978 */ + lVar14 = lVar14 * param_5; + /* catch() { ... } // from try @ 003cc7e4 with catch @ 003cbf78 */ + lVar12 = lVar14 + 4; + lVar11 = lVar12 * 4; + if (((lVar11 - local_30 == 0 || lVar11 < local_30) || local_30 + 0x10 <= lVar11 + -0x10) + && (8 < param_6)) { + uVar25 = -((uint)((ulong)pfVar18 >> 2) & 3) & 3; + uVar31 = param_6; + if (uVar25 < param_6) { + uVar31 = uVar25; + } + uVar25 = uVar31; + if (uVar31 != 0) { + fVar46 = *pfVar18; + *pfVar18 = param_4[lVar14]; + param_4[lVar14] = fVar46; + if (uVar31 != 1) { + fVar46 = pfVar18[1]; + pfVar18[1] = param_4[lVar14 + 1]; + param_4[lVar14 + 1] = fVar46; + if (uVar31 == 3) { + fVar46 = pfVar18[2]; + pfVar18[2] = param_4[lVar14 + 2]; + param_4[lVar14 + 2] = fVar46; + } + else { + /* catch() { ... } // from try @ 003cc038 with catch @ 003cc7c8 */ + uVar25 = 2; + } + } + } + lVar12 = 0; + uVar35 = ((param_6 - uVar31) - 4 >> 2) + 1; + uVar29 = 0; + /* try { // try from 003cc038 to 004cc03b has its CatchHandler @ 003cc7c8 */ + iVar19 = uVar35 * 4; + do { + puVar2 = (undefined8 *)((long)param_4 + lVar12 + (lVar14 + (ulong)uVar31) * 4); + puVar3 = (undefined8 *)((long)param_4 + lVar12 + (lVar28 + (ulong)uVar31) * 4); + uVar29 = uVar29 + 1; + lVar12 = lVar12 + 0x10; + uVar41 = *puVar2; + uVar39 = puVar3[1]; + uVar38 = *puVar3; + puVar3[1] = puVar2[1]; + *puVar3 = uVar41; + puVar2[1] = uVar39; + *puVar2 = uVar38; + } while (uVar29 < uVar35); + iVar30 = uVar25 + iVar19; + if (param_6 - uVar31 != iVar19) { + iVar19 = iVar30 + 1; + lVar12 = iVar30 + lVar14; + lVar11 = lVar28 + iVar30; + fVar46 = param_4[lVar11]; + param_4[lVar11] = param_4[lVar12]; + param_4[lVar12] = fVar46; + if (iVar19 < (int)param_6) { + iVar30 = iVar30 + 2; + lVar12 = iVar19 + lVar14; + lVar11 = lVar28 + iVar19; + fVar46 = param_4[lVar11]; + param_4[lVar11] = param_4[lVar12]; + param_4[lVar12] = fVar46; + if (iVar30 < (int)param_6) { + lVar14 = iVar30 + lVar14; + lVar12 = lVar28 + iVar30; + fVar46 = param_4[lVar12]; + param_4[lVar12] = param_4[lVar14]; + param_4[lVar14] = fVar46; + } + } + } + } + else { + lVar11 = 0; + do { + fVar46 = pfVar18[lVar11]; + pfVar18[lVar11] = param_4[lVar12 + lVar11 + -4]; + param_4[lVar12 + lVar11 + -4] = fVar46; + lVar11 = lVar11 + 1; + } while ((int)lVar11 < (int)param_6); + } + } + local_14 = -local_14; + } + fVar46 = -1.0 / *pfVar47; + lVar12 = lVar27; + lVar11 = lVar28; + lVar33 = lVar32; + lVar27 = lVar27 + param_2; + lVar32 = lVar1; + pfVar10 = pfVar47; + iVar19 = iVar44; + do { + lVar1 = local_30 + param_5 * 4; + lVar28 = lVar11 + param_5; + iVar30 = (int)lVar33; + lVar14 = 0; + pfVar47 = (float *)((long)param_4 + lVar1); + pfVar13 = pfVar50; + lVar15 = -param_2; + lVar17 = lVar28; + lVar20 = lVar1; + lVar21 = lVar27; + pfVar9 = pfVar50; + iVar44 = iVar19; + lVar26 = lVar48; + do { + lVar26 = lVar26 + param_2; + fVar43 = fVar46 * *(float *)((long)param_1 + lVar14 + local_28 + lVar23); + if ((lVar51 + 4 + lVar14 < local_28 + 0x14 && local_28 + 4 < lVar51 + 0x14 + lVar14) || + (uVar22 < 8)) { + pfVar7 = pfVar9; + do { + pfVar16 = pfVar7 + 1; + *pfVar7 = *pfVar7 + pfVar7[lVar15] * fVar43; + pfVar7 = pfVar16; + } while (pfVar16 != + (float *)((long)param_1 + (lVar27 + (ulong)uVar52 + lVar33) * 4 + 8 + lVar14)); + } + else { + uVar25 = -((uint)((ulong)pfVar9 >> 2) & 3) & 3; + if (uVar22 < uVar25) { + uVar25 = uVar22; + } + iVar45 = iVar19; + if (uVar25 != 0) { + *pfVar13 = *pfVar13 + *(float *)((long)param_1 + local_28 + 4) * fVar43; + iVar45 = iVar30 + 2; + if (uVar25 != 1) { + pfVar13[1] = pfVar13[1] + *(float *)((long)param_1 + local_28 + 8) * fVar43; + iVar45 = iVar30 + 3; + if (uVar25 == 3) { + pfVar13[2] = pfVar13[2] + *(float *)((long)param_1 + local_28 + 0xc) * fVar43; + iVar45 = iVar30 + 4; + } + } + } + uVar31 = ((uVar22 - uVar25) - 4 >> 2) + 1; + iVar42 = uVar31 * 4; + if (2 < ((param_3 - iVar30) + -2) - uVar25) { + uVar35 = 0; + pfVar7 = param_1 + lVar26 + 1 + (ulong)uVar25; + pfVar16 = param_1 + lVar26 + 1 + (ulong)uVar25; + pfVar34 = param_1 + lVar48 + 1 + (ulong)uVar25; + do { + uVar39 = *(undefined8 *)pfVar34; + uVar35 = uVar35 + 1; + uVar38 = *(undefined8 *)pfVar16; + *(ulong *)(pfVar7 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar16 + 2) >> 0x20) + + fVar43 * (float)((ulong)*(undefined8 *)(pfVar34 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar16 + 2) + + fVar43 * (float)*(undefined8 *)(pfVar34 + 2)); + *(ulong *)pfVar7 = + CONCAT44((float)((ulong)uVar38 >> 0x20) + + fVar43 * (float)((ulong)uVar39 >> 0x20), + (float)uVar38 + fVar43 * (float)uVar39); + pfVar7 = pfVar7 + 4; + pfVar16 = pfVar16 + 4; + pfVar34 = pfVar34 + 4; + } while (uVar35 < uVar31); + iVar45 = iVar45 + iVar42; + if (iVar42 == uVar22 - uVar25) goto LAB_003cc388; + } + iVar42 = iVar45 + 1; + lVar8 = iVar45 + lVar21; + param_1[lVar8] = param_1[lVar8] + param_1[iVar45 + lVar12] * fVar43; + if (iVar42 < param_3) { + iVar45 = iVar45 + 2; + lVar8 = iVar42 + lVar21; + param_1[lVar8] = param_1[lVar8] + param_1[lVar12 + iVar42] * fVar43; + if (iVar45 < param_3) { + lVar8 = iVar45 + lVar21; + param_1[lVar8] = param_1[lVar8] + param_1[iVar45 + lVar12] * fVar43; + } + } + } +LAB_003cc388: + if ((param_4 != (float *)0x0) && (0 < (int)param_6)) { + if ((local_30 < lVar20 + 0x10 && lVar20 < local_30 + 0x10) || (param_6 < 8)) { + lVar8 = 0; + do { + pfVar47[lVar8] = pfVar47[lVar8] + pfVar18[lVar8] * fVar43; + lVar8 = lVar8 + 1; + } while ((int)lVar8 < (int)param_6); + } + else { + uVar25 = -((uint)((ulong)pfVar47 >> 2) & 3) & 3; + if (param_6 < uVar25) { + uVar25 = param_6; + } + uVar31 = uVar25; + if ((uVar25 != 0) && (*pfVar47 = *pfVar47 + *pfVar18 * fVar43, uVar25 != 1)) { + pfVar47[1] = pfVar47[1] + pfVar18[1] * fVar43; + if (uVar25 == 3) { + pfVar47[2] = pfVar47[2] + pfVar18[2] * fVar43; + } + else { + uVar31 = 2; + } + } + uVar35 = ((param_6 - uVar25) - 4 >> 2) + 1; + uVar29 = 0; + iVar45 = uVar35 * 4; + pfVar7 = param_4 + lVar11 + (ulong)uVar25; + pfVar16 = param_4 + (ulong)uVar25 + lVar17; + pfVar34 = param_4 + (ulong)uVar25 + lVar17; + do { + uVar39 = *(undefined8 *)pfVar7; + uVar29 = uVar29 + 1; + uVar38 = *(undefined8 *)pfVar34; + *(ulong *)(pfVar16 + 2) = + CONCAT44((float)((ulong)*(undefined8 *)(pfVar34 + 2) >> 0x20) + + fVar43 * (float)((ulong)*(undefined8 *)(pfVar7 + 2) >> 0x20), + (float)*(undefined8 *)(pfVar34 + 2) + + fVar43 * (float)*(undefined8 *)(pfVar7 + 2)); + *(ulong *)pfVar16 = + CONCAT44((float)((ulong)uVar38 >> 0x20) + + fVar43 * (float)((ulong)uVar39 >> 0x20), + (float)uVar38 + fVar43 * (float)uVar39); + pfVar7 = pfVar7 + 4; + pfVar16 = pfVar16 + 4; + pfVar34 = pfVar34 + 4; + } while (uVar29 < uVar35); + iVar42 = iVar45 + uVar31; + if (iVar45 != param_6 - uVar25) { + iVar45 = iVar42 + 1; + lVar8 = iVar42 + lVar17; + param_4[lVar8] = param_4[lVar8] + param_4[lVar11 + iVar42] * fVar43; + if (iVar45 < (int)param_6) { + iVar42 = iVar42 + 2; + lVar8 = iVar45 + lVar17; + param_4[lVar8] = param_4[lVar8] + param_4[lVar11 + iVar45] * fVar43; + if (iVar42 < (int)param_6) { + lVar8 = iVar42 + lVar17; + param_4[lVar8] = param_4[lVar8] + param_4[lVar11 + iVar42] * fVar43; + } + } + } + } + } + iVar44 = iVar44 + 1; + lVar14 = lVar14 + lVar23; + pfVar47 = pfVar47 + param_5; + lVar20 = lVar20 + param_5 * 4; + lVar17 = lVar17 + param_5; + pfVar9 = (float *)((long)pfVar9 + lVar23); + lVar15 = lVar15 - param_2; + pfVar13 = (float *)((long)pfVar13 + lVar23); + lVar21 = lVar21 + param_2; + } while (iVar44 != param_3); + pfVar18 = pfVar18 + param_5; + pfVar50 = (float *)((long)pfVar50 + lVar49); + uVar22 = uVar22 - 1; + uVar52 = uVar52 - 1; + lVar51 = lVar51 + lVar49; + local_28 = local_28 + lVar49; + lVar48 = lVar48 + param_2 + 1; + pfVar47 = (float *)((long)pfVar10 + lVar49); + *pfVar10 = -fVar46; + iVar44 = iVar19 + 1; + local_30 = lVar1; + if (iVar44 < param_3) goto LAB_003cbd00; +LAB_003cc5bc: + if (ABS(*(float *)((long)param_1 + local_28)) < fVar37) break; + fVar46 = -1.0 / *pfVar47; + if (iVar44 == param_3) { + *pfVar47 = -fVar46; + if (param_4 == (float *)0x0) { + return local_14; + } + goto LAB_003cc5f4; + } + lVar12 = lVar27; + lVar11 = lVar28; + lVar33 = lVar32; + lVar27 = lVar27 + param_2; + lVar32 = lVar32 + 1; + pfVar10 = pfVar47; + iVar19 = iVar44; + } while( true ); + } + local_14 = 0; + } + return local_14; +} + + +================================================================== + +### FUNC 003cc800 (2272 bytes) name=FUN_003cc800 + +int FUN_003cc800(double *param_1,ulong param_2,uint param_3,double *param_4,ulong param_5, + uint param_6) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + undefined8 *puVar3; + int iVar4; + long lVar5; + double *pdVar6; + uint uVar7; + ulong uVar8; + long lVar9; + long lVar10; + long lVar11; + long lVar12; + double dVar13; + double *pdVar14; + double *pdVar15; + uint uVar16; + long lVar17; + long lVar18; + double *pdVar19; + long lVar20; + uint uVar21; + double *pdVar22; + long lVar23; + long lVar24; + long lVar25; + long lVar26; + long lVar27; + long lVar28; + uint uVar29; + double *pdVar30; + uint uVar31; + double dVar32; + undefined8 uVar33; + double dVar34; + undefined8 uVar35; + double dVar36; + undefined8 uVar37; + double dVar38; + long lVar39; + double dVar40; + uint uVar41; + uint uVar42; + long lVar43; + double *pdVar44; + long lVar45; + uint uVar46; + long lVar47; + int iVar48; + long local_20; + uint local_14; + + dVar34 = DAT_003cd0e0; + param_5 = param_5 >> 3; + param_2 = param_2 >> 3; + if ((int)param_3 < 1) { + iVar48 = 1; + if (param_4 != (double *)0x0) { +LAB_003ccef8: + uVar41 = param_3 - 1; + if (-1 < (int)uVar41) { + lVar26 = (long)(int)uVar41; + lVar25 = param_2 + 1; + lVar5 = lVar25 * lVar26 + 1; + uVar8 = 0xffffffff; + param_4 = (double *)((long)param_4 + lVar26 * param_5 * 8); + pdVar44 = (double *)((long)param_1 + lVar25 * 8 * lVar26); + pdVar22 = param_1 + lVar5; + do { + if (0 < (int)param_6) { + pdVar15 = param_4; + do { + dVar34 = *pdVar15; + pdVar6 = pdVar22; + pdVar19 = pdVar15; + if ((int)(uVar41 - (int)uVar8) < (int)param_3) { + do { + pdVar14 = pdVar6 + 1; + dVar34 = dVar34 - pdVar19[param_5] * *pdVar6; + pdVar6 = pdVar14; + pdVar19 = pdVar19 + param_5; + } while (pdVar14 != param_1 + lVar5 + 1 + uVar8); + } + pdVar19 = pdVar15 + 1; + *pdVar15 = dVar34 * *pdVar44; + pdVar15 = pdVar19; + } while (param_4 + (ulong)(param_6 - 1) + 1 != pdVar19); + } + uVar46 = (int)uVar8 + 1; + uVar8 = (ulong)uVar46; + pdVar44 = pdVar44 + -lVar25; + param_4 = param_4 + -param_5; + pdVar22 = pdVar22 + ~param_2; + lVar5 = lVar5 + ~param_2; + } while (uVar46 != uVar41); + } + } + } + else { + uVar46 = param_3 - 2; + lVar28 = 0; + uVar42 = 0; + lVar47 = NEON_shl(param_2 + 1,3); + local_20 = 0; + uVar21 = param_3 - 1; + lVar26 = 0; + lVar24 = 0; + lVar45 = 0; + lVar43 = 0; + lVar25 = (long)param_1 + lVar47 + param_2 * -8; + lVar5 = 0; + iVar48 = 1; + uVar41 = 1; + pdVar22 = param_4; + pdVar44 = param_1; + local_14 = param_3; + if ((int)param_3 < 2) goto LAB_003ccec0; +LAB_003cc8e8: + dVar40 = *(double *)((long)param_1 + lVar26); + lVar10 = lVar28 + param_2; + lVar9 = lVar24 + 1; + dVar13 = dVar40; + uVar7 = uVar41; + uVar16 = uVar42; + do { + dVar38 = *(double *)((long)param_1 + (lVar10 * 8 - lVar45)); + dVar32 = ABS(dVar13); + dVar36 = ABS(dVar38); + lVar27 = lVar10; + lVar18 = lVar9; + uVar31 = uVar7; + if (dVar36 <= dVar32) { + lVar27 = (long)(int)uVar16 * param_2; + lVar18 = (long)(int)uVar16; + uVar31 = uVar16; + } + uVar16 = uVar31; + uVar7 = uVar7 + 1; + lVar9 = lVar9 + 1; + lVar10 = lVar10 + param_2; + if (dVar36 <= dVar32) { + dVar36 = dVar32; + dVar38 = dVar13; + } + dVar13 = dVar38; + } while (uVar7 != param_3); + if (dVar34 <= dVar36) { + if (uVar42 != uVar16) { + if ((int)lVar24 < (int)param_3) { + lVar10 = lVar27 + lVar24; + if ((lVar26 < (lVar24 + 2 + lVar27) * 8 && lVar10 * 8 < lVar26 + 0x10) || (local_14 < 9)) + { + pdVar15 = (double *)((long)param_1 + lVar26); + do { + dVar13 = *pdVar15; + *pdVar15 = pdVar15[lVar27 - lVar28]; + pdVar15[lVar27 - lVar28] = dVar13; + pdVar15 = pdVar15 + 1; + } while (pdVar15 != param_1 + lVar43 + 1 + (ulong)uVar21); + } + else { + uVar7 = (uint)((ulong)((long)param_1 + lVar26) >> 3) & 1; + if (local_14 < uVar7) { + uVar7 = local_14; + } + if (uVar7 != 0) { + *(double *)((long)param_1 + lVar26) = param_1[lVar10]; + param_1[lVar10] = dVar40; + uVar42 = uVar41; + } + uVar8 = (ulong)uVar7; + lVar9 = 0; + uVar16 = ((local_14 - uVar7) - 2 >> 1) + 1; + uVar31 = 0; + iVar4 = uVar16 * 2; + lVar39 = NEON_shl(uVar8 + lVar43,3); + do { + puVar1 = (undefined8 *)((long)param_1 + lVar9 + (lVar24 + uVar8 + lVar27) * 8); + puVar2 = (undefined8 *)((long)param_1 + lVar9 + lVar39); + uVar31 = uVar31 + 1; + uVar37 = *puVar1; + puVar3 = (undefined8 *)((long)param_1 + lVar9 + (lVar10 + uVar8) * 8); + uVar35 = puVar2[1]; + uVar33 = *puVar2; + lVar9 = lVar9 + 0x10; + puVar2[1] = puVar1[1]; + *puVar2 = uVar37; + puVar3[1] = uVar35; + *puVar3 = uVar33; + } while (uVar31 < uVar16); + if (local_14 - uVar7 != iVar4) { + lVar10 = (long)(int)(uVar42 + iVar4); + lVar27 = lVar10 + lVar27; + lVar10 = lVar10 + lVar28; + dVar13 = param_1[lVar10]; + param_1[lVar10] = param_1[lVar27]; + param_1[lVar27] = dVar13; + } + } + } + if ((param_4 != (double *)0x0) && (0 < (int)param_6)) { + lVar18 = lVar18 * param_5; + lVar10 = lVar18 + 2; + lVar9 = lVar10 * 8; + if (((lVar9 - local_20 == 0 || lVar9 < local_20) || local_20 + 0x10 <= lVar9 + -0x10) && + (8 < param_6)) { + uVar7 = (uint)((ulong)pdVar22 >> 3) & 1; + uVar42 = param_6; + if (uVar7 < param_6) { + uVar42 = uVar7; + } + if (uVar42 != 0) { + dVar13 = *pdVar22; + *pdVar22 = param_4[lVar18]; + param_4[lVar18] = dVar13; + } + lVar10 = 0; + uVar7 = ((param_6 - uVar42) - 2 >> 1) + 1; + uVar16 = 0; + iVar4 = uVar7 * 2; + do { + puVar1 = (undefined8 *)((long)param_4 + lVar10 + (lVar18 + (ulong)uVar42) * 8); + puVar2 = (undefined8 *)((long)param_4 + lVar10 + (lVar5 + (ulong)uVar42) * 8); + uVar16 = uVar16 + 1; + lVar10 = lVar10 + 0x10; + uVar37 = *puVar1; + uVar35 = puVar2[1]; + uVar33 = *puVar2; + puVar2[1] = puVar1[1]; + *puVar2 = uVar37; + puVar1[1] = uVar35; + *puVar1 = uVar33; + } while (uVar16 < uVar7); + if (param_6 - uVar42 != iVar4) { + lVar10 = (long)(int)((uint)(uVar42 != 0) + iVar4); + lVar18 = lVar10 + lVar18; + lVar10 = lVar5 + lVar10; + dVar13 = param_4[lVar10]; + param_4[lVar10] = param_4[lVar18]; + param_4[lVar18] = dVar13; + } + } + else { + lVar9 = 0; + do { + dVar13 = pdVar22[lVar9]; + pdVar22[lVar9] = param_4[lVar10 + lVar9 + -2]; + param_4[lVar10 + lVar9 + -2] = dVar13; + lVar9 = lVar9 + 1; + } while ((int)lVar9 < (int)param_6); + } + } + iVar48 = -iVar48; + } + dVar13 = -1.0 / *pdVar44; + lVar10 = lVar5; + lVar9 = lVar24; + lVar27 = lVar26; + lVar18 = lVar28; + uVar42 = uVar41; + lVar24 = lVar24 + 1; + lVar28 = lVar28 + param_2; + pdVar15 = pdVar44; + do { + lVar39 = local_20 + param_5 * 8; + lVar5 = lVar10 + param_5; + lVar26 = lVar47 + lVar27; + pdVar44 = (double *)((long)param_4 + lVar39); + pdVar19 = (double *)((long)param_1 + lVar26); + lVar20 = -param_2; + lVar23 = lVar5; + uVar41 = uVar42; + lVar17 = lVar43; + do { + lVar17 = lVar17 + param_2; + dVar40 = dVar13 * *(double *)((long)param_1 + lVar17 * 8 + lVar45 + lVar9 * 8); + if ((lVar27 + 8 < (0x10 - (long)param_1) + (long)pdVar19 && + (long)pdVar19 - (long)param_1 < lVar27 + 0x18) || (uVar21 < 7)) { + pdVar6 = pdVar19; + do { + pdVar14 = pdVar6 + 1; + *pdVar6 = *pdVar6 + pdVar6[lVar20] * dVar40; + pdVar6 = pdVar14; + } while (pdVar14 != pdVar19 + (ulong)uVar46 + 1); + } + else { + uVar7 = (uint)((ulong)pdVar19 >> 3) & 1; + if (uVar21 < uVar7) { + uVar7 = uVar21; + } + uVar16 = uVar42; + if (uVar7 != 0) { + *(double *)(lVar25 + lVar17 * 8) = + *(double *)(lVar25 + lVar17 * 8) + + *(double *)((long)param_1 + lVar27 + 8) * dVar40; + uVar16 = (int)lVar9 + 2; + } + uVar31 = ((uVar21 - uVar7) - 2 >> 1) + 1; + iVar4 = uVar31 * 2; + if (local_14 - uVar7 != 2) { + uVar29 = 0; + pdVar6 = param_1 + lVar17 + 1 + (ulong)uVar7; + pdVar14 = param_1 + lVar17 + 1 + (ulong)uVar7; + pdVar30 = param_1 + lVar43 + 1 + (ulong)uVar7; + do { + dVar38 = *pdVar30; + uVar29 = uVar29 + 1; + dVar36 = *pdVar6; + pdVar14[1] = pdVar6[1] + dVar40 * pdVar30[1]; + *pdVar14 = dVar36 + dVar40 * dVar38; + pdVar6 = pdVar6 + 2; + pdVar14 = pdVar14 + 2; + pdVar30 = pdVar30 + 2; + } while (uVar29 < uVar31); + uVar16 = uVar16 + iVar4; + if (iVar4 == uVar21 - uVar7) goto LAB_003ccd48; + } + lVar12 = (long)(int)uVar16 + (lVar17 - lVar9); + param_1[lVar12] = param_1[lVar12] + param_1[(int)uVar16 + lVar18] * dVar40; + } +LAB_003ccd48: + if ((param_4 != (double *)0x0) && (0 < (int)param_6)) { + if ((local_20 < (0x10 - (long)param_4) + (long)pdVar44 && + (long)pdVar44 - (long)param_4 < local_20 + 0x10) || (param_6 < 7)) { + lVar12 = 0; + do { + pdVar44[lVar12] = pdVar44[lVar12] + pdVar22[lVar12] * dVar40; + lVar12 = lVar12 + 1; + } while ((int)lVar12 < (int)param_6); + } + else { + uVar7 = (uint)((ulong)pdVar44 >> 3) & 1; + if (param_6 < uVar7) { + uVar7 = param_6; + } + if (uVar7 != 0) { + *pdVar44 = *pdVar44 + *pdVar22 * dVar40; + } + uVar16 = ((param_6 - uVar7) - 2 >> 1) + 1; + uVar31 = 0; + iVar4 = uVar16 * 2; + pdVar6 = param_4 + lVar10 + (ulong)uVar7; + pdVar14 = param_4 + lVar23 + (ulong)uVar7; + pdVar30 = param_4 + lVar23 + (ulong)uVar7; + do { + dVar38 = *pdVar6; + uVar31 = uVar31 + 1; + dVar36 = *pdVar30; + pdVar14[1] = pdVar30[1] + dVar40 * pdVar6[1]; + *pdVar14 = dVar36 + dVar40 * dVar38; + pdVar6 = pdVar6 + 2; + pdVar14 = pdVar14 + 2; + pdVar30 = pdVar30 + 2; + } while (uVar31 < uVar16); + if (iVar4 != param_6 - uVar7) { + lVar11 = (long)(int)(iVar4 + (uint)(uVar7 != 0)); + lVar12 = lVar23 + lVar11; + param_4[lVar12] = param_4[lVar12] + param_4[lVar10 + lVar11] * dVar40; + } + } + } + uVar41 = uVar41 + 1; + pdVar44 = pdVar44 + param_5; + lVar20 = lVar20 - param_2; + lVar23 = lVar23 + param_5; + pdVar19 = (double *)((long)pdVar19 + lVar47 + -8); + } while (uVar41 != param_3); + pdVar22 = pdVar22 + param_5; + lVar43 = lVar43 + param_2 + 1; + uVar21 = uVar21 - 1; + uVar46 = uVar46 - 1; + uVar41 = uVar42 + 1; + local_14 = local_14 - 1; + lVar45 = lVar45 + -8; + pdVar44 = (double *)((long)pdVar15 + lVar47); + *pdVar15 = -dVar13; + lVar25 = lVar25 + lVar47 + param_2 * -8 + -8; + local_20 = lVar39; + if ((int)uVar41 < (int)param_3) goto LAB_003cc8e8; +LAB_003ccec0: + if (ABS(*(double *)((long)param_1 + lVar26)) < dVar34) break; + dVar13 = -1.0 / *pdVar44; + if (uVar41 == param_3) { + *pdVar44 = -dVar13; + if (param_4 == (double *)0x0) { + return iVar48; + } + goto LAB_003ccef8; + } + lVar10 = lVar5; + lVar9 = lVar24; + lVar27 = lVar26; + lVar18 = lVar28; + uVar42 = uVar41; + lVar24 = lVar24 + 1; + lVar28 = lVar28 + param_2; + pdVar15 = pdVar44; + } while( true ); + } + iVar48 = 0; + } + return iVar48; +} + + +================================================================== + +### FUNC 003cd0e8 (864 bytes) name=FUN_003cd0e8 + +undefined8 +FUN_003cd0e8(float *param_1,ulong param_2,int param_3,float *param_4,ulong param_5,int param_6) + +{ + float *pfVar1; + float *pfVar2; + double dVar3; + int iVar4; + long lVar5; + long lVar6; + float *pfVar7; + int iVar8; + float *pfVar9; + float *pfVar10; + float *pfVar11; + float *pfVar12; + long lVar13; + float *pfVar14; + int iVar15; + double __x; + float fVar16; + double dVar17; + float fVar18; + float fVar19; + + dVar3 = DAT_003cd448; + param_2 = param_2 >> 2; + param_5 = param_5 >> 2; + if (param_3 < 1) { + if (param_4 == (float *)0x0) { + return 1; + } + } + else { + lVar13 = param_2 + 1; + iVar15 = 0; + pfVar12 = param_1; + pfVar9 = param_1; + pfVar14 = param_1; + do { + if (iVar15 < 1) { + __x = (double)*pfVar9; + } + else { + iVar8 = 1; + *pfVar14 = *pfVar14 * *param_1; + pfVar7 = param_1; + pfVar10 = param_1; + pfVar11 = pfVar12; + if (iVar15 != 1) { + do { + pfVar11 = pfVar11 + 1; + pfVar10 = pfVar10 + param_2; + fVar16 = *pfVar11; + if (0 < iVar8) { + lVar5 = 0; + do { + pfVar1 = pfVar12 + lVar5; + pfVar2 = pfVar10 + lVar5; + lVar5 = lVar5 + 1; + fVar16 = fVar16 - *pfVar1 * *pfVar2; + } while ((int)lVar5 < iVar8); + } + pfVar7 = pfVar7 + lVar13; + iVar8 = iVar8 + 1; + *pfVar11 = fVar16 * *pfVar7; + } while (iVar8 != iVar15); + } + lVar5 = 0; + __x = (double)*pfVar9; + do { + pfVar7 = pfVar12 + lVar5; + lVar5 = lVar5 + 1; + __x = __x - (double)*pfVar7 * (double)*pfVar7; + } while ((int)lVar5 < iVar15); + } + if (__x < dVar3) { + return 0; + } + dVar17 = SQRT(__x); + if (NAN(dVar17)) { + dVar17 = sqrt(__x); + } + iVar15 = iVar15 + 1; + pfVar14 = pfVar14 + param_2; + pfVar12 = pfVar12 + param_2; + *pfVar9 = (float)(1.0 / dVar17); + pfVar9 = pfVar9 + lVar13; + } while (iVar15 != param_3); + if (param_4 == (float *)0x0) { + return 1; + } + lVar5 = 0; + iVar15 = 0; + pfVar14 = param_1; + pfVar12 = param_1; + do { + pfVar9 = param_4; + if (0 < param_6) { + do { + fVar16 = pfVar9[lVar5]; + if (0 < iVar15) { + lVar6 = 0; + pfVar7 = pfVar9; + do { + pfVar10 = pfVar12 + lVar6; + lVar6 = lVar6 + 1; + fVar18 = *pfVar7; + pfVar7 = pfVar7 + param_5; + fVar16 = fVar16 - *pfVar10 * fVar18; + } while ((int)lVar6 < iVar15); + } + pfVar9[lVar5] = fVar16 * *pfVar14; + pfVar9 = pfVar9 + 1; + } while (pfVar9 != param_4 + (ulong)(param_6 - 1) + 1); + } + iVar15 = iVar15 + 1; + pfVar14 = pfVar14 + lVar13; + lVar5 = lVar5 + param_5; + pfVar12 = pfVar12 + param_2; + } while (iVar15 != param_3); + } + iVar15 = param_3 + -1; + if (-1 < iVar15) { + lVar13 = (long)iVar15; + lVar5 = lVar13 * param_5 * 4; + pfVar14 = (float *)((long)param_1 + (param_2 + 1) * 4 * lVar13); + param_4 = (float *)((long)param_4 + lVar5); + param_1 = param_1 + lVar13 + ((long)param_3 + -1) * param_2; + lVar5 = ((long)param_3 * 4 + -4) * param_5 - lVar5; + iVar8 = iVar15; + do { + if (0 < param_6) { + pfVar12 = param_4; + do { + fVar16 = *pfVar12; + if (iVar8 < iVar15) { + pfVar9 = (float *)((long)pfVar12 + lVar5); + pfVar7 = param_1; + iVar4 = iVar15; + do { + fVar18 = *pfVar7; + iVar4 = iVar4 + -1; + fVar19 = *pfVar9; + pfVar7 = pfVar7 + -param_2; + pfVar9 = pfVar9 + -param_5; + fVar16 = fVar16 - fVar18 * fVar19; + } while (iVar4 != iVar8); + } + pfVar9 = pfVar12 + 1; + *pfVar12 = fVar16 * *pfVar14; + pfVar12 = pfVar9; + } while (pfVar9 != param_4 + (ulong)(param_6 - 1) + 1); + } + iVar8 = iVar8 + -1; + pfVar14 = pfVar14 + -(param_2 + 1); + param_4 = param_4 + -param_5; + param_1 = param_1 + -1; + lVar5 = lVar5 + param_5 * 4; + } while (iVar8 != -1); + } + return 1; +} + + +================================================================== + +### FUNC 003cd450 (776 bytes) name=FUN_003cd450 + +undefined8 +FUN_003cd450(double *param_1,ulong param_2,int param_3,double *param_4,ulong param_5,int param_6) + +{ + double *pdVar1; + double *pdVar2; + int iVar3; + long lVar4; + long lVar5; + double *pdVar6; + int iVar7; + double *pdVar8; + double *pdVar9; + double *pdVar10; + double *pdVar11; + long lVar12; + double *pdVar13; + int iVar14; + double dVar15; + double dVar16; + double dVar17; + + dVar16 = DAT_003cd758; + param_2 = param_2 >> 3; + param_5 = param_5 >> 3; + if (param_3 < 1) { + if (param_4 == (double *)0x0) { + return 1; + } + } + else { + lVar12 = param_2 + 1; + iVar14 = 0; + pdVar11 = param_1; + pdVar8 = param_1; + pdVar13 = param_1; + do { + if (iVar14 < 1) { + dVar15 = *pdVar8; + } + else { + iVar7 = 1; + *pdVar13 = *pdVar13 * *param_1; + pdVar6 = param_1; + pdVar9 = param_1; + pdVar10 = pdVar11; + if (iVar14 != 1) { + do { + pdVar10 = pdVar10 + 1; + pdVar9 = pdVar9 + param_2; + dVar15 = *pdVar10; + if (0 < iVar7) { + lVar4 = 0; + do { + pdVar1 = pdVar11 + lVar4; + pdVar2 = pdVar9 + lVar4; + lVar4 = lVar4 + 1; + dVar15 = dVar15 - *pdVar2 * *pdVar1; + } while ((int)lVar4 < iVar7); + } + pdVar6 = pdVar6 + lVar12; + iVar7 = iVar7 + 1; + *pdVar10 = dVar15 * *pdVar6; + } while (iVar7 != iVar14); + } + dVar15 = *pdVar8; + lVar4 = 0; + do { + pdVar6 = pdVar11 + lVar4; + lVar4 = lVar4 + 1; + dVar15 = dVar15 - *pdVar6 * *pdVar6; + } while ((int)lVar4 < iVar14); + } + if (dVar15 < dVar16) { + return 0; + } + dVar17 = SQRT(dVar15); + if (NAN(dVar17)) { + dVar17 = sqrt(dVar15); + } + iVar14 = iVar14 + 1; + pdVar13 = pdVar13 + param_2; + pdVar11 = pdVar11 + param_2; + *pdVar8 = 1.0 / dVar17; + pdVar8 = pdVar8 + lVar12; + } while (iVar14 != param_3); + if (param_4 == (double *)0x0) { + return 1; + } + lVar4 = 0; + iVar14 = 0; + pdVar13 = param_1; + pdVar11 = param_1; + do { + pdVar8 = param_4; + if (0 < param_6) { + do { + dVar16 = pdVar8[lVar4]; + if (0 < iVar14) { + lVar5 = 0; + pdVar6 = pdVar8; + do { + pdVar9 = pdVar11 + lVar5; + lVar5 = lVar5 + 1; + dVar15 = *pdVar6; + pdVar6 = pdVar6 + param_5; + dVar16 = dVar16 - dVar15 * *pdVar9; + } while ((int)lVar5 < iVar14); + } + pdVar8[lVar4] = dVar16 * *pdVar13; + pdVar8 = pdVar8 + 1; + } while (pdVar8 != param_4 + (ulong)(param_6 - 1) + 1); + } + iVar14 = iVar14 + 1; + pdVar13 = pdVar13 + lVar12; + lVar4 = lVar4 + param_5; + pdVar11 = pdVar11 + param_2; + } while (iVar14 != param_3); + } + iVar14 = param_3 + -1; + if (-1 < iVar14) { + lVar12 = (long)iVar14; + /* catch() { ... } // from try @ 003cdc58 with catch @ 003cd624 */ + lVar4 = lVar12 * param_5 * 8; + pdVar13 = (double *)((long)param_1 + (param_2 + 1) * 8 * lVar12); + param_4 = (double *)((long)param_4 + lVar4); + param_1 = param_1 + lVar12 + ((long)param_3 + -1) * param_2; + lVar4 = ((long)param_3 * 8 + -8) * param_5 - lVar4; + iVar7 = iVar14; + do { + if (0 < param_6) { + pdVar11 = param_4; + do { + dVar16 = *pdVar11; + if (iVar7 < iVar14) { + pdVar8 = (double *)((long)pdVar11 + lVar4); + pdVar6 = param_1; + iVar3 = iVar14; + do { + iVar3 = iVar3 + -1; + dVar17 = *pdVar6; + dVar15 = *pdVar8; + pdVar6 = pdVar6 + -param_2; + pdVar8 = pdVar8 + -param_5; + dVar16 = dVar16 - dVar15 * dVar17; + } while (iVar3 != iVar7); + } + pdVar8 = pdVar11 + 1; + *pdVar11 = dVar16 * *pdVar13; + pdVar11 = pdVar8; + } while (pdVar8 != param_4 + (ulong)(param_6 - 1) + 1); + } + iVar7 = iVar7 + -1; + pdVar13 = pdVar13 + -(param_2 + 1); + param_4 = param_4 + -param_5; + param_1 = param_1 + -1; + lVar4 = lVar4 + param_5 * 8; + /* try { // try from 003cd6e0 to 004cd6e3 has its CatchHandler @ 003cdc3c */ + } while (iVar7 != -1); + } + return 1; +} + + +================================================================== + +### FUNC 003cd760 (292 bytes) name=FUN_003cd760 + +int FUN_003cd760(undefined8 *param_1,int param_2) + +{ + uint uVar1; + undefined8 uVar2; + byte bVar3; + undefined8 uVar4; + undefined8 *puVar5; + byte *pbVar7; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + undefined8 *puVar6; + byte *pbVar8; + + if (param_2 < 0x10) { + iVar10 = 0; + iVar11 = 0; + iVar12 = 0; + iVar13 = 0; + iVar9 = 0; + } + else { + iVar10 = 0; + iVar11 = 0; + iVar12 = 0; + iVar13 = 0; + uVar1 = param_2 - 0x10U >> 4; + puVar5 = param_1; + do { + puVar6 = puVar5 + 2; + uVar4 = puVar5[1]; + uVar2 = *puVar5; + bVar3 = POPCOUNT((char)((ulong)uVar2 >> 0x10)) + POPCOUNT((char)((ulong)uVar2 >> 0x18)); + iVar10 = iVar10 + (CONCAT12(bVar3,(ushort)(byte)POPCOUNT((char)uVar2) + + (ushort)(byte)POPCOUNT((char)((ulong)uVar2 >> 8))) & 0xffff) + + (uint)bVar3; + iVar11 = iVar11 + (uint)(byte)(POPCOUNT((char)((ulong)uVar2 >> 0x20)) + + POPCOUNT((char)((ulong)uVar2 >> 0x28))) + + (uint)(byte)(POPCOUNT((char)((ulong)uVar2 >> 0x30)) + + POPCOUNT((char)((ulong)uVar2 >> 0x38))); + iVar12 = iVar12 + (uint)(byte)(POPCOUNT((char)uVar4) + POPCOUNT((char)((ulong)uVar4 >> 8))) + + (uint)(byte)(POPCOUNT((char)((ulong)uVar4 >> 0x10)) + + POPCOUNT((char)((ulong)uVar4 >> 0x18))); + iVar13 = iVar13 + (uint)(byte)(POPCOUNT((char)((ulong)uVar4 >> 0x20)) + + POPCOUNT((char)((ulong)uVar4 >> 0x28))) + + (uint)(byte)(POPCOUNT((char)((ulong)uVar4 >> 0x30)) + + POPCOUNT((char)((ulong)uVar4 >> 0x38))); + puVar5 = puVar6; + } while (puVar6 != param_1 + ((ulong)uVar1 + 1) * 2); + iVar9 = (uVar1 + 1) * 0x10; + } + iVar10 = iVar10 + iVar11 + iVar12 + iVar13; + if (iVar9 < param_2 + -3) { + uVar1 = (uint)((param_2 + -4) - iVar9) >> 2; + pbVar8 = (byte *)((long)param_1 + (long)iVar9); + do { + pbVar7 = pbVar8 + 4; + iVar10 = iVar10 + (uint)(byte)(&DAT_00478b50)[*pbVar8] + + (uint)(byte)(&DAT_00478b50)[pbVar8[1]] + + (uint)(byte)(&DAT_00478b50)[pbVar8[2]] + + (uint)(byte)(&DAT_00478b50)[pbVar8[3]]; + pbVar8 = pbVar7; + } while (pbVar7 != (byte *)((long)param_1 + (long)iVar9 + 4 + (ulong)uVar1 * 4)); + iVar9 = iVar9 + 4 + uVar1 * 4; + } + if (iVar9 < param_2) { + pbVar8 = (byte *)((long)param_1 + (long)iVar9); + do { + pbVar7 = pbVar8 + 1; + iVar10 = iVar10 + (uint)(byte)(&DAT_00478b50)[*pbVar8]; + pbVar8 = pbVar7; + } while (pbVar7 != (byte *)((long)param_1 + + (long)iVar9 + 1 + (ulong)(uint)((param_2 + -1) - iVar9))); + } + return iVar10; +} + + +================================================================== + +### FUNC 003cd884 (368 bytes) name=FUN_003cd884 + +int FUN_003cd884(long param_1,long param_2,int param_3) + +{ + byte *pbVar1; + undefined8 *puVar2; + undefined8 *puVar3; + uint uVar4; + undefined8 uVar5; + byte bVar6; + undefined8 uVar7; + long lVar8; + byte *pbVar9; + byte *pbVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + undefined8 uVar16; + undefined8 uVar17; + + iVar12 = 0; + iVar13 = 0; + iVar14 = 0; + iVar15 = 0; + if (param_3 + -0xf < 1) { + iVar11 = 0; + } + else { + lVar8 = 0; + do { + puVar2 = (undefined8 *)(param_1 + lVar8); + puVar3 = (undefined8 *)(param_2 + lVar8); + lVar8 = lVar8 + 0x10; + uVar17 = puVar2[1]; + uVar16 = *puVar2; + uVar7 = puVar3[1]; + uVar5 = *puVar3; + bVar6 = POPCOUNT((byte)((ulong)uVar5 >> 0x10) ^ (byte)((ulong)uVar16 >> 0x10)) + + POPCOUNT((byte)((ulong)uVar5 >> 0x18) ^ (byte)((ulong)uVar16 >> 0x18)); + iVar12 = iVar12 + (CONCAT12(bVar6,(ushort)(byte)POPCOUNT((byte)uVar5 ^ (byte)uVar16) + + (ushort)(byte)POPCOUNT((byte)((ulong)uVar5 >> 8) ^ + (byte)((ulong)uVar16 >> 8))) & 0xffff + ) + (uint)bVar6; + iVar13 = iVar13 + (uint)(byte)(POPCOUNT((byte)((ulong)uVar5 >> 0x20) ^ + (byte)((ulong)uVar16 >> 0x20)) + + POPCOUNT((byte)((ulong)uVar5 >> 0x28) ^ + (byte)((ulong)uVar16 >> 0x28))) + + (uint)(byte)(POPCOUNT((byte)((ulong)uVar5 >> 0x30) ^ + (byte)((ulong)uVar16 >> 0x30)) + + POPCOUNT((byte)((ulong)uVar5 >> 0x38) ^ + (byte)((ulong)uVar16 >> 0x38))); + iVar14 = iVar14 + (uint)(byte)(POPCOUNT((byte)uVar7 ^ (byte)uVar17) + + POPCOUNT((byte)((ulong)uVar7 >> 8) ^ (byte)((ulong)uVar17 >> 8)) + ) + + (uint)(byte)(POPCOUNT((byte)((ulong)uVar7 >> 0x10) ^ + (byte)((ulong)uVar17 >> 0x10)) + + POPCOUNT((byte)((ulong)uVar7 >> 0x18) ^ + (byte)((ulong)uVar17 >> 0x18))); + iVar15 = iVar15 + (uint)(byte)(POPCOUNT((byte)((ulong)uVar7 >> 0x20) ^ + (byte)((ulong)uVar17 >> 0x20)) + + POPCOUNT((byte)((ulong)uVar7 >> 0x28) ^ + (byte)((ulong)uVar17 >> 0x28))) + + (uint)(byte)(POPCOUNT((byte)((ulong)uVar7 >> 0x30) ^ + (byte)((ulong)uVar17 >> 0x30)) + + POPCOUNT((byte)((ulong)uVar7 >> 0x38) ^ + (byte)((ulong)uVar17 >> 0x38))); + } while ((int)lVar8 < param_3 + -0xf); + iVar11 = (param_3 - 0x10U & 0xfffffff0) + 0x10; + } + iVar12 = iVar12 + iVar13 + iVar14 + iVar15; + if (iVar11 < param_3 + -3) { + lVar8 = (long)iVar11; + uVar4 = (uint)((param_3 + -4) - iVar11) >> 2; + pbVar9 = (byte *)(param_1 + lVar8); + pbVar10 = (byte *)(param_2 + lVar8); + do { + pbVar1 = pbVar9 + 4; + iVar12 = iVar12 + (uint)(byte)(&DAT_00478b50)[*pbVar10 ^ *pbVar9] + + (uint)(byte)(&DAT_00478b50)[pbVar10[1] ^ pbVar9[1]] + + (uint)(byte)(&DAT_00478b50)[pbVar10[2] ^ pbVar9[2]] + + (uint)(byte)(&DAT_00478b50)[pbVar10[3] ^ pbVar9[3]]; + pbVar9 = pbVar1; + pbVar10 = pbVar10 + 4; + } while (pbVar1 != (byte *)(param_1 + lVar8 + 4 + (ulong)uVar4 * 4)); + iVar11 = iVar11 + 4 + uVar4 * 4; + } + if (iVar11 < param_3) { + lVar8 = 0; + do { + pbVar9 = (byte *)(param_2 + iVar11 + lVar8); + pbVar10 = (byte *)(param_1 + iVar11 + lVar8); + lVar8 = lVar8 + 1; + iVar12 = iVar12 + (uint)(byte)(&DAT_00478b50)[*pbVar9 ^ *pbVar10]; + } while (lVar8 != (ulong)(uint)((param_3 + -1) - iVar11) + 1); + } + return iVar12; +} + + +================================================================== + +### FUNC 003cd9f4 (524 bytes) name=FUN_003cd9f4 + +int FUN_003cd9f4(undefined8 *param_1,int param_2,int param_3) + +{ + uint uVar1; + undefined8 uVar2; + byte bVar3; + undefined8 uVar4; + byte *pbVar5; + undefined8 *puVar7; + undefined *puVar9; + int iVar10; + int iVar11; + int iVar12; + int iVar13; + int iVar14; + byte *pbVar6; + undefined8 *puVar8; + + if (param_3 == 1) { + if (param_2 < 0x10) { + iVar11 = 0; + iVar12 = 0; + iVar13 = 0; + iVar14 = 0; + iVar10 = 0; + } + else { + iVar11 = 0; + iVar12 = 0; + iVar13 = 0; + iVar14 = 0; + uVar1 = param_2 - 0x10U >> 4; + puVar7 = param_1; + do { + puVar8 = puVar7 + 2; + uVar4 = puVar7[1]; + uVar2 = *puVar7; + bVar3 = POPCOUNT((char)((ulong)uVar2 >> 0x10)) + POPCOUNT((char)((ulong)uVar2 >> 0x18)); + iVar11 = iVar11 + (CONCAT12(bVar3,(ushort)(byte)POPCOUNT((char)uVar2) + + (ushort)(byte)POPCOUNT((char)((ulong)uVar2 >> 8))) & + 0xffff) + (uint)bVar3; + iVar12 = iVar12 + (uint)(byte)(POPCOUNT((char)((ulong)uVar2 >> 0x20)) + + POPCOUNT((char)((ulong)uVar2 >> 0x28))) + + (uint)(byte)(POPCOUNT((char)((ulong)uVar2 >> 0x30)) + + POPCOUNT((char)((ulong)uVar2 >> 0x38))); + iVar13 = iVar13 + (uint)(byte)(POPCOUNT((char)uVar4) + POPCOUNT((char)((ulong)uVar4 >> 8))) + + (uint)(byte)(POPCOUNT((char)((ulong)uVar4 >> 0x10)) + + POPCOUNT((char)((ulong)uVar4 >> 0x18))); + iVar14 = iVar14 + (uint)(byte)(POPCOUNT((char)((ulong)uVar4 >> 0x20)) + + POPCOUNT((char)((ulong)uVar4 >> 0x28))) + + (uint)(byte)(POPCOUNT((char)((ulong)uVar4 >> 0x30)) + + POPCOUNT((char)((ulong)uVar4 >> 0x38))); + puVar7 = puVar8; + } while (puVar8 != param_1 + ((ulong)uVar1 + 1) * 2); + iVar10 = (uVar1 + 1) * 0x10; + } + iVar11 = iVar11 + iVar12 + iVar13 + iVar14; + if (iVar10 < param_2 + -3) { + uVar1 = (uint)((param_2 + -4) - iVar10) >> 2; + pbVar6 = (byte *)((long)param_1 + (long)iVar10); + do { + pbVar5 = pbVar6 + 4; + iVar11 = iVar11 + (uint)(byte)(&DAT_00478b50)[*pbVar6] + + (uint)(byte)(&DAT_00478b50)[pbVar6[1]] + + (uint)(byte)(&DAT_00478b50)[pbVar6[2]] + + (uint)(byte)(&DAT_00478b50)[pbVar6[3]]; + pbVar6 = pbVar5; + } while (pbVar5 != (byte *)((long)param_1 + (long)iVar10 + 4 + (ulong)uVar1 * 4)); + iVar10 = iVar10 + 4 + uVar1 * 4; + } + if (iVar10 < param_2) { + pbVar6 = (byte *)((long)param_1 + (long)iVar10); + do { + pbVar5 = pbVar6 + 1; + iVar11 = iVar11 + (uint)(byte)(&DAT_00478b50)[*pbVar6]; + pbVar6 = pbVar5; + } while (pbVar5 != (byte *)((long)param_1 + + (long)iVar10 + 1 + (ulong)(uint)((param_2 + -1) - iVar10))); + } + } + else { + if (param_3 == 2) { + puVar9 = &DAT_00478c50; + } + else { + if (param_3 != 4) { + return -1; + } + puVar9 = &DAT_00478d50; + } + if (param_2 < 4) { + iVar11 = 0; + iVar10 = 0; + } + else { + uVar1 = param_2 - 4U >> 2; + iVar11 = 0; + pbVar6 = (byte *)((long)param_1 + 1); + do { + pbVar5 = pbVar6 + 4; + iVar11 = iVar11 + (uint)(byte)puVar9[pbVar6[-1]] + (uint)(byte)puVar9[*pbVar6] + + (uint)(byte)puVar9[pbVar6[1]] + (uint)(byte)puVar9[pbVar6[2]]; + pbVar6 = pbVar5; + } while (pbVar5 != (byte *)((long)param_1 + (ulong)uVar1 * 4 + 5)); + iVar10 = (uVar1 + 1) * 4; + } + if (iVar10 < param_2) { + pbVar6 = (byte *)((long)param_1 + (long)iVar10); + do { + pbVar5 = pbVar6 + 1; + iVar11 = iVar11 + (uint)(byte)puVar9[*pbVar6]; + pbVar6 = pbVar5; + } while (pbVar5 != (byte *)((long)param_1 + + (long)iVar10 + 1 + (ulong)(uint)((param_2 + -1) - iVar10))); + } + } + return iVar11; +} + + +================================================================== + +### FUNC 003cdc00 (672 bytes) name=FUN_003cdc00 + +int FUN_003cdc00(byte *param_1,long param_2,int param_3,int param_4) + +{ + byte *pbVar1; + undefined8 *puVar2; + uint uVar3; + undefined8 uVar4; + byte bVar5; + undefined8 uVar6; + long lVar7; + long lVar8; + byte *pbVar9; + byte *pbVar10; + undefined *puVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + int iVar16; + undefined8 uVar17; + undefined8 uVar18; + + if (param_4 == 1) { + iVar13 = 0; + iVar14 = 0; + iVar15 = 0; + iVar16 = 0; + if (param_3 + -0xf < 1) { + iVar12 = 0; + } + else { + lVar8 = 0; + do { + pbVar9 = param_1 + lVar8; + puVar2 = (undefined8 *)(param_2 + lVar8); + lVar8 = lVar8 + 0x10; + uVar18 = *(undefined8 *)(pbVar9 + 8); + uVar17 = *(undefined8 *)pbVar9; + uVar6 = puVar2[1]; + uVar4 = *puVar2; + bVar5 = POPCOUNT((byte)((ulong)uVar4 >> 0x10) ^ (byte)((ulong)uVar17 >> 0x10)) + + POPCOUNT((byte)((ulong)uVar4 >> 0x18) ^ (byte)((ulong)uVar17 >> 0x18)); + iVar13 = iVar13 + (CONCAT12(bVar5,(ushort)(byte)POPCOUNT((byte)uVar4 ^ (byte)uVar17) + + (ushort)(byte)POPCOUNT((byte)((ulong)uVar4 >> 8) ^ + (byte)((ulong)uVar17 >> 8))) & + 0xffff) + (uint)bVar5; + iVar14 = iVar14 + (uint)(byte)(POPCOUNT((byte)((ulong)uVar4 >> 0x20) ^ + (byte)((ulong)uVar17 >> 0x20)) + + POPCOUNT((byte)((ulong)uVar4 >> 0x28) ^ + (byte)((ulong)uVar17 >> 0x28))) + + (uint)(byte)(POPCOUNT((byte)((ulong)uVar4 >> 0x30) ^ + (byte)((ulong)uVar17 >> 0x30)) + + POPCOUNT((byte)((ulong)uVar4 >> 0x38) ^ + (byte)((ulong)uVar17 >> 0x38))); + iVar15 = iVar15 + (uint)(byte)(POPCOUNT((byte)uVar6 ^ (byte)uVar18) + + POPCOUNT((byte)((ulong)uVar6 >> 8) ^ + (byte)((ulong)uVar18 >> 8))) + + (uint)(byte)(POPCOUNT((byte)((ulong)uVar6 >> 0x10) ^ + (byte)((ulong)uVar18 >> 0x10)) + + POPCOUNT((byte)((ulong)uVar6 >> 0x18) ^ + (byte)((ulong)uVar18 >> 0x18))); + iVar16 = iVar16 + (uint)(byte)(POPCOUNT((byte)((ulong)uVar6 >> 0x20) ^ + (byte)((ulong)uVar18 >> 0x20)) + + POPCOUNT((byte)((ulong)uVar6 >> 0x28) ^ + (byte)((ulong)uVar18 >> 0x28))) + + (uint)(byte)(POPCOUNT((byte)((ulong)uVar6 >> 0x30) ^ + (byte)((ulong)uVar18 >> 0x30)) + + POPCOUNT((byte)((ulong)uVar6 >> 0x38) ^ + (byte)((ulong)uVar18 >> 0x38))); + } while ((int)lVar8 < param_3 + -0xf); + iVar12 = (param_3 - 0x10U & 0xfffffff0) + 0x10; + } + iVar13 = iVar13 + iVar14 + iVar15 + iVar16; + if (iVar12 < param_3 + -3) { + lVar8 = (long)iVar12; + uVar3 = (uint)((param_3 + -4) - iVar12) >> 2; + pbVar9 = param_1 + lVar8; + pbVar10 = (byte *)(param_2 + lVar8); + do { + pbVar1 = pbVar9 + 4; + iVar13 = iVar13 + (uint)(byte)(&DAT_00478b50)[*pbVar10 ^ *pbVar9] + + (uint)(byte)(&DAT_00478b50)[pbVar10[1] ^ pbVar9[1]] + + (uint)(byte)(&DAT_00478b50)[pbVar10[2] ^ pbVar9[2]] + + (uint)(byte)(&DAT_00478b50)[pbVar10[3] ^ pbVar9[3]]; + pbVar9 = pbVar1; + pbVar10 = pbVar10 + 4; + } while (pbVar1 != param_1 + lVar8 + 4 + (ulong)uVar3 * 4); + iVar12 = iVar12 + 4 + uVar3 * 4; + } + if (iVar12 < param_3) { + lVar8 = 0; + do { + pbVar9 = (byte *)(param_2 + iVar12 + lVar8); + lVar7 = lVar8 + iVar12; + lVar8 = lVar8 + 1; + iVar13 = iVar13 + (uint)(byte)(&DAT_00478b50)[*pbVar9 ^ param_1[lVar7]]; + } while (lVar8 != (ulong)(uint)((param_3 + -1) - iVar12) + 1); + } + } + else { + if (param_4 == 2) { + puVar11 = &DAT_00478c50; + } + else { + if (param_4 != 4) { + return -1; + } + puVar11 = &DAT_00478d50; + } + if (param_3 < 4) { + iVar13 = 0; + iVar14 = 0; + } + else { + uVar3 = param_3 - 4U >> 2; + /* catch() { ... } // from try @ 003cd6e0 with catch @ 003cdc3c */ + iVar13 = 0; + pbVar9 = (byte *)(param_2 + 1); + pbVar10 = param_1; + do { + pbVar1 = pbVar9 + 4; + /* try { // try from 003cdc58 to 004cdc5b has its CatchHandler @ 003cd624 */ + /* catch() { ... } // from try @ 003ce31c with catch @ 003cdc5c */ + iVar13 = iVar13 + (uint)(byte)puVar11[pbVar9[-1] ^ *pbVar10] + + (uint)(byte)puVar11[*pbVar9 ^ pbVar10[1]] + + (uint)(byte)puVar11[pbVar9[1] ^ pbVar10[2]] + + (uint)(byte)puVar11[pbVar9[2] ^ pbVar10[3]]; + pbVar9 = pbVar1; + pbVar10 = pbVar10 + 4; + } while (pbVar1 != (byte *)(param_2 + (ulong)uVar3 * 4 + 5)); + iVar14 = (uVar3 + 1) * 4; + } + if (iVar14 < param_3) { + lVar8 = 0; + do { + pbVar9 = (byte *)(param_2 + iVar14 + lVar8); + lVar7 = lVar8 + iVar14; + lVar8 = lVar8 + 1; + iVar13 = iVar13 + (uint)(byte)puVar11[*pbVar9 ^ param_1[lVar7]]; + } while (lVar8 != (ulong)(uint)((param_3 + -1) - iVar14) + 1); + } + } + return iVar13; +} + + +================================================================== + +### FUNC 003cdea0 (216 bytes) name=FUN_003cdea0 + +float FUN_003cdea0(float *param_1,long param_2,int param_3) + +{ + float *pfVar1; + uint uVar2; + long lVar3; + long lVar4; + float *pfVar5; + ulong uVar6; + float *pfVar7; + ulong uVar8; + float fVar9; + float fVar10; + + if (param_3 < 4) { + fVar9 = 0.0; + uVar6 = 0; + } + else { + fVar9 = 0.0; + uVar2 = param_3 - 4U >> 2; + pfVar5 = (float *)(param_2 + 4); + pfVar7 = param_1; + do { + pfVar1 = pfVar5 + 4; + fVar9 = fVar9 + (pfVar7[1] - *pfVar5) * (pfVar7[1] - *pfVar5) + + (*pfVar7 - pfVar5[-1]) * (*pfVar7 - pfVar5[-1]) + + (pfVar7[2] - pfVar5[1]) * (pfVar7[2] - pfVar5[1]) + + (pfVar7[3] - pfVar5[2]) * (pfVar7[3] - pfVar5[2]); + pfVar5 = pfVar1; + pfVar7 = pfVar7 + 4; + } while (pfVar1 != (float *)(param_2 + (ulong)uVar2 * 0x10 + 0x14)); + uVar6 = (ulong)((uVar2 + 1) * 4); + } + if ((int)uVar6 < param_3) { + uVar8 = -(uVar6 >> 0x1f) & 0xfffffffc00000000 | uVar6 << 2; + lVar4 = 0; + do { + lVar3 = lVar4 + uVar8; + pfVar5 = (float *)(param_2 + uVar8 + lVar4); + lVar4 = lVar4 + 4; + fVar10 = *(float *)((long)param_1 + lVar3) - *pfVar5; + fVar9 = fVar9 + fVar10 * fVar10; + } while (lVar4 != ((ulong)(uint)((param_3 + -1) - (int)uVar6) + 1) * 4); + } + return fVar9; +} + + +================================================================== + +### FUNC 003cdf78 (196 bytes) name=FUN_003cdf78 + +float FUN_003cdf78(undefined8 *param_1,undefined8 *param_2,int param_3) + +{ + uint uVar1; + long lVar2; + long lVar3; + long lVar4; + undefined8 *puVar5; + ulong uVar7; + undefined8 *puVar8; + ulong uVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + undefined8 *puVar6; + + if (param_3 < 4) { + fVar10 = 0.0; + fVar11 = 0.0; + fVar12 = 0.0; + fVar13 = 0.0; + uVar7 = 0; + } + else { + fVar10 = 0.0; + fVar11 = 0.0; + fVar12 = 0.0; + fVar13 = 0.0; + uVar1 = param_3 - 4U >> 2; + puVar5 = param_1; + puVar8 = param_2; + do { + puVar6 = puVar5 + 2; + fVar10 = fVar10 + ABS((float)*puVar5 - (float)*puVar8); + fVar11 = fVar11 + ABS((float)((ulong)*puVar5 >> 0x20) - (float)((ulong)*puVar8 >> 0x20)); + fVar12 = fVar12 + ABS((float)puVar5[1] - (float)puVar8[1]); + fVar13 = fVar13 + ABS((float)((ulong)puVar5[1] >> 0x20) - (float)((ulong)puVar8[1] >> 0x20)); + puVar5 = puVar6; + puVar8 = puVar8 + 2; + } while (puVar6 != param_1 + ((ulong)uVar1 + 1) * 2); + uVar7 = (ulong)((uVar1 + 1) * 4); + } + fVar13 = fVar10 + fVar11 + fVar12 + fVar13; + if ((int)uVar7 < param_3) { + uVar9 = -(uVar7 >> 0x1f) & 0xfffffffc00000000 | uVar7 << 2; + lVar4 = 0; + do { + lVar2 = lVar4 + uVar9; + lVar3 = lVar4 + uVar9; + lVar4 = lVar4 + 4; + fVar13 = fVar13 + ABS(*(float *)((long)param_1 + lVar2) - *(float *)((long)param_2 + lVar3)); + } while (lVar4 != ((ulong)(uint)((param_3 + -1) - (int)uVar7) + 1) * 4); + } + return fVar13; +} + + +================================================================== + +### FUNC 003ce03c (2348 bytes) name=FUN_003ce03c + +int FUN_003ce03c(long param_1,long param_2,int param_3) + +{ + unkbyte9 *pVar1; + undefined1 (*pauVar2) [16]; + ulong uVar3; + uint uVar4; + int iVar5; + int iVar6; + undefined8 uVar7; + undefined8 uVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + uint3 uVar13; + uint3 uVar14; + byte *pbVar15; + byte *pbVar76; + uint uVar137; + long lVar138; + undefined8 *puVar139; + uint uVar140; + uint uVar141; + undefined8 *puVar142; + int iVar143; + undefined1 uVar144; + byte bVar145; + int iVar146; + int iVar147; + byte bVar149; + int iVar150; + int iVar151; + int iVar152; + int iVar153; + byte bVar154; + undefined1 auVar148 [16]; + int iVar155; + int iVar156; + int iVar157; + byte bVar158; + byte bVar159; + int iVar160; + int iVar161; + int iVar162; + int iVar163; + byte bVar166; + int iVar164; + int iVar165; + int iVar167; + int iVar168; + int iVar169; + int iVar170; + int iVar171; + int iVar172; + int iVar173; + int iVar174; + byte bVar178; + int iVar175; + int iVar176; + int iVar177; + int iVar179; + int iVar180; + int iVar181; + int iVar182; + int iVar183; + int iVar184; + int iVar185; + undefined8 uVar186; + undefined8 uVar187; + int iVar188; + int iVar189; + int iVar190; + int iVar191; + int iVar192; + int iVar193; + int iVar194; + int iVar195; + int iVar196; + int iVar197; + int iVar198; + int iVar199; + int iVar200; + int iVar201; + int iVar202; + int iVar203; + int iVar204; + int iVar205; + int iVar206; + int iVar207; + int iVar208; + int iVar209; + int iVar210; + int iVar211; + int iVar212; + int iVar213; + int iVar214; + int iVar215; + int iVar216; + int iVar217; + int iVar218; + byte *pbVar16; + byte *pbVar17; + byte *pbVar18; + byte *pbVar19; + byte *pbVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + byte *pbVar24; + byte *pbVar25; + byte *pbVar26; + byte *pbVar27; + byte *pbVar28; + byte *pbVar29; + byte *pbVar30; + byte *pbVar31; + byte *pbVar32; + byte *pbVar33; + byte *pbVar34; + byte *pbVar35; + byte *pbVar36; + byte *pbVar37; + byte *pbVar38; + byte *pbVar39; + byte *pbVar40; + byte *pbVar41; + byte *pbVar42; + byte *pbVar43; + byte *pbVar44; + byte *pbVar45; + undefined1 *puVar46; + undefined1 *puVar47; + byte *pbVar48; + byte *pbVar49; + byte *pbVar50; + byte *pbVar51; + byte *pbVar52; + byte *pbVar53; + byte *pbVar54; + byte *pbVar55; + byte *pbVar56; + byte *pbVar57; + byte *pbVar58; + byte *pbVar59; + byte *pbVar60; + byte *pbVar61; + byte *pbVar62; + byte *pbVar63; + byte *pbVar64; + byte *pbVar65; + byte *pbVar66; + byte *pbVar67; + byte *pbVar68; + byte *pbVar69; + byte *pbVar70; + byte *pbVar71; + byte *pbVar72; + byte *pbVar73; + byte *pbVar74; + undefined1 *puVar75; + byte *pbVar77; + byte *pbVar78; + byte *pbVar79; + byte *pbVar80; + byte *pbVar81; + byte *pbVar82; + byte *pbVar83; + byte *pbVar84; + byte *pbVar85; + byte *pbVar86; + byte *pbVar87; + byte *pbVar88; + byte *pbVar89; + byte *pbVar90; + byte *pbVar91; + byte *pbVar92; + byte *pbVar93; + byte *pbVar94; + byte *pbVar95; + byte *pbVar96; + byte *pbVar97; + byte *pbVar98; + byte *pbVar99; + byte *pbVar100; + byte *pbVar101; + byte *pbVar102; + byte *pbVar103; + byte *pbVar104; + byte *pbVar105; + byte *pbVar106; + byte *pbVar107; + byte *pbVar108; + byte *pbVar109; + byte *pbVar110; + byte *pbVar111; + byte *pbVar112; + byte *pbVar113; + byte *pbVar114; + byte *pbVar115; + byte *pbVar116; + byte *pbVar117; + byte *pbVar118; + byte *pbVar119; + byte *pbVar120; + byte *pbVar121; + byte *pbVar122; + byte *pbVar123; + byte *pbVar124; + byte *pbVar125; + byte *pbVar126; + byte *pbVar127; + byte *pbVar128; + byte *pbVar129; + byte *pbVar130; + byte *pbVar131; + byte *pbVar132; + byte *pbVar133; + byte *pbVar134; + byte *pbVar135; + byte *pbVar136; + + iVar169 = 0; + iVar172 = 0; + iVar175 = 0; + iVar179 = 0; + if (param_3 + -0xf < 1) { + /* try { // try from 003ce960 to 004ce963 has its CatchHandler @ 003ce360 */ + iVar143 = 0; + /* catch() { ... } // from try @ 003cf384 with catch @ 003ce964 */ + } + else { + lVar138 = 0; + do { + pVar1 = (unkbyte9 *)(param_2 + lVar138); + pauVar2 = (undefined1 (*) [16])(param_1 + lVar138); + lVar138 = lVar138 + 0x10; + uVar7 = *(undefined8 *)((long)pVar1 + 8); + auVar148[9] = (char)((ulong)uVar7 >> 8); + auVar148._0_9_ = *pVar1; + auVar148[10] = (char)((ulong)uVar7 >> 0x10); + auVar148[0xb] = (char)((ulong)uVar7 >> 0x18); + auVar148[0xc] = (char)((ulong)uVar7 >> 0x20); + auVar148[0xd] = (char)((ulong)uVar7 >> 0x28); + auVar148[0xe] = (char)((ulong)uVar7 >> 0x30); + auVar148[0xf] = (char)((ulong)uVar7 >> 0x38); + auVar148 = NEON_uabd(*pauVar2,auVar148,1); + iVar169 = iVar169 + (CONCAT12(auVar148[1],(ushort)auVar148[0]) & 0xffff) + + (CONCAT12(auVar148[9],(ushort)auVar148[8]) & 0xffff) + + (CONCAT12(auVar148[5],(ushort)auVar148[4]) & 0xffff) + (uint)auVar148[0xc]; + iVar172 = iVar172 + (uint)auVar148[1] + (uint)auVar148[9] + + (uint)auVar148[5] + (uint)auVar148[0xd]; + iVar175 = iVar175 + (uint)auVar148[2] + (uint)auVar148[10] + + (uint)auVar148[6] + (uint)auVar148[0xe]; + iVar179 = iVar179 + (uint)auVar148[3] + (uint)auVar148[0xb] + + (uint)auVar148[7] + (uint)auVar148[0xf]; + } while ((int)lVar138 < param_3 + -0xf); + iVar143 = (param_3 - 0x10U & 0xfffffff0) + 0x10; + } + iVar179 = iVar172 + iVar169 + iVar175 + iVar179; + if (param_3 + -3 <= iVar143) goto LAB_003ce328; + uVar141 = (param_3 + -4) - iVar143; + uVar4 = uVar141 >> 2; + uVar137 = (uVar4 - 0xf >> 4) + 1; + iVar169 = iVar143; + if (uVar141 < 0x3c) { +LAB_003ce290: + pbVar136 = (byte *)(param_2 + iVar169); + pbVar73 = (byte *)(param_1 + iVar169); + do { + iVar169 = iVar169 + 4; + uVar141 = (int)((uint)*pbVar73 - (uint)*pbVar136) >> 0x1f; + uVar137 = (int)((uint)pbVar73[1] - (uint)pbVar136[1]) >> 0x1f; + uVar140 = (int)((uint)pbVar73[2] - (uint)pbVar136[2]) >> 0x1f; + /* catch() { ... } // from try @ 003ce268 with catch @ 003ce2fc */ + uVar12 = (int)((uint)pbVar73[3] - (uint)pbVar136[3]) >> 0x1f; + iVar179 = iVar179 + (((uint)*pbVar73 - (uint)*pbVar136 ^ uVar141) - uVar141) + + (((uint)pbVar73[1] - (uint)pbVar136[1] ^ uVar137) - uVar137) + + (((uint)pbVar73[2] - (uint)pbVar136[2] ^ uVar140) - uVar140) + + (((uint)pbVar73[3] - (uint)pbVar136[3] ^ uVar12) - uVar12); + /* try { // try from 003ce31c to 004ce31f has its CatchHandler @ 003cdc5c */ + pbVar136 = pbVar136 + 4; + pbVar73 = pbVar73 + 4; + } while (iVar169 < param_3 + -3); + } + else { + iVar169 = 0; + iVar172 = 0; + iVar175 = 0; + iVar212 = 0; + puVar75 = (undefined1 *)(param_1 + iVar143); + uVar141 = 0; + pbVar136 = (byte *)(param_2 + iVar143); + do { + uVar144 = *puVar75; + pbVar15 = puVar75 + 1; + pbVar16 = puVar75 + 2; + pbVar17 = puVar75 + 3; + bVar149 = puVar75[4]; + pbVar18 = puVar75 + 5; + pbVar19 = puVar75 + 6; + pbVar20 = puVar75 + 7; + pbVar21 = puVar75 + 8; + pbVar22 = puVar75 + 9; + pbVar23 = puVar75 + 10; + pbVar24 = puVar75 + 0xb; + pbVar25 = puVar75 + 0xc; + pbVar26 = puVar75 + 0xd; + pbVar27 = puVar75 + 0xe; + pbVar28 = puVar75 + 0xf; + pbVar29 = puVar75 + 0x10; + pbVar30 = puVar75 + 0x11; + pbVar31 = puVar75 + 0x12; + pbVar32 = puVar75 + 0x13; + pbVar33 = puVar75 + 0x14; + pbVar34 = puVar75 + 0x15; + pbVar35 = puVar75 + 0x16; + pbVar36 = puVar75 + 0x17; + pbVar37 = puVar75 + 0x18; + pbVar38 = puVar75 + 0x19; + pbVar39 = puVar75 + 0x1a; + pbVar40 = puVar75 + 0x1b; + pbVar41 = puVar75 + 0x1c; + pbVar42 = puVar75 + 0x1d; + pbVar43 = puVar75 + 0x1e; + pbVar44 = puVar75 + 0x1f; + pbVar45 = puVar75 + 0x20; + puVar46 = puVar75 + 0x21; + puVar47 = puVar75 + 0x22; + pbVar48 = puVar75 + 0x23; + pbVar49 = puVar75 + 0x24; + bVar158 = puVar75[0x25]; + bVar166 = puVar75[0x26]; + pbVar50 = puVar75 + 0x27; + pbVar51 = puVar75 + 0x28; + pbVar52 = puVar75 + 0x29; + pbVar53 = puVar75 + 0x2a; + pbVar54 = puVar75 + 0x2b; + pbVar55 = puVar75 + 0x2c; + pbVar56 = puVar75 + 0x2d; + pbVar57 = puVar75 + 0x2e; + pbVar58 = puVar75 + 0x2f; + pbVar59 = puVar75 + 0x30; + pbVar60 = puVar75 + 0x31; + pbVar61 = puVar75 + 0x32; + pbVar62 = puVar75 + 0x33; + pbVar63 = puVar75 + 0x34; + pbVar64 = puVar75 + 0x35; + pbVar65 = puVar75 + 0x36; + pbVar66 = puVar75 + 0x37; + pbVar67 = puVar75 + 0x38; + pbVar68 = puVar75 + 0x39; + pbVar69 = puVar75 + 0x3a; + pbVar70 = puVar75 + 0x3b; + pbVar71 = puVar75 + 0x3c; + pbVar72 = puVar75 + 0x3d; + pbVar73 = puVar75 + 0x3e; + pbVar74 = puVar75 + 0x3f; + puVar75 = puVar75 + 0x40; + uVar141 = uVar141 + 1; + bVar145 = *pbVar136; + pbVar76 = pbVar136 + 1; + pbVar77 = pbVar136 + 2; + pbVar78 = pbVar136 + 3; + pbVar79 = pbVar136 + 4; + pbVar80 = pbVar136 + 5; + pbVar81 = pbVar136 + 6; + pbVar82 = pbVar136 + 7; + pbVar83 = pbVar136 + 8; + pbVar84 = pbVar136 + 9; + pbVar85 = pbVar136 + 10; + pbVar86 = pbVar136 + 0xb; + pbVar87 = pbVar136 + 0xc; + pbVar88 = pbVar136 + 0xd; + pbVar89 = pbVar136 + 0xe; + pbVar90 = pbVar136 + 0xf; + pbVar91 = pbVar136 + 0x10; + pbVar92 = pbVar136 + 0x11; + pbVar93 = pbVar136 + 0x12; + pbVar94 = pbVar136 + 0x13; + pbVar95 = pbVar136 + 0x14; + pbVar96 = pbVar136 + 0x15; + pbVar97 = pbVar136 + 0x16; + pbVar98 = pbVar136 + 0x17; + pbVar99 = pbVar136 + 0x18; + pbVar100 = pbVar136 + 0x19; + pbVar101 = pbVar136 + 0x1a; + pbVar102 = pbVar136 + 0x1b; + pbVar103 = pbVar136 + 0x1c; + pbVar104 = pbVar136 + 0x1d; + pbVar105 = pbVar136 + 0x1e; + pbVar106 = pbVar136 + 0x1f; + pbVar107 = pbVar136 + 0x20; + pbVar108 = pbVar136 + 0x21; + pbVar109 = pbVar136 + 0x22; + pbVar110 = pbVar136 + 0x23; + bVar154 = pbVar136[0x24]; + bVar159 = pbVar136[0x25]; + pbVar111 = pbVar136 + 0x26; + bVar178 = pbVar136[0x27]; + pbVar112 = pbVar136 + 0x28; + pbVar113 = pbVar136 + 0x29; + pbVar114 = pbVar136 + 0x2a; + pbVar115 = pbVar136 + 0x2b; + pbVar116 = pbVar136 + 0x2c; + pbVar117 = pbVar136 + 0x2d; + pbVar118 = pbVar136 + 0x2e; + pbVar119 = pbVar136 + 0x2f; + pbVar120 = pbVar136 + 0x30; + pbVar121 = pbVar136 + 0x31; + pbVar122 = pbVar136 + 0x32; + pbVar123 = pbVar136 + 0x33; + pbVar124 = pbVar136 + 0x34; + pbVar125 = pbVar136 + 0x35; + pbVar126 = pbVar136 + 0x36; + pbVar127 = pbVar136 + 0x37; + pbVar128 = pbVar136 + 0x38; + pbVar129 = pbVar136 + 0x39; + pbVar130 = pbVar136 + 0x3a; + pbVar131 = pbVar136 + 0x3b; + pbVar132 = pbVar136 + 0x3c; + pbVar133 = pbVar136 + 0x3d; + pbVar134 = pbVar136 + 0x3e; + pbVar135 = pbVar136 + 0x3f; + pbVar136 = pbVar136 + 0x40; + uVar13 = CONCAT12(*pbVar114,CONCAT11(*pbVar111,*pbVar109)); + uVar14 = CONCAT12(*pbVar86,CONCAT11(*pbVar82,*pbVar78)); + iVar210 = MP_INT_ABS(((CONCAT12(bVar149,CONCAT11(bVar149,uVar144)) & 0xff00ff) & 0xffff) - + (CONCAT12(*pbVar79,(ushort)bVar145) & 0xffff)); + iVar211 = MP_INT_ABS((uint)bVar149 - (uint)*pbVar79); + iVar174 = MP_INT_ABS((uint)*pbVar21 - (CONCAT12(*pbVar87,(ushort)*pbVar83) & 0xffff)); + iVar177 = MP_INT_ABS((uint)*pbVar25 - (uint)*pbVar87); + iVar202 = MP_INT_ABS((CONCAT12(*pbVar18,(ushort)*pbVar15) & 0xffff) - + (CONCAT12(*pbVar80,(ushort)*pbVar76) & 0xffff)); + iVar204 = MP_INT_ABS((uint)*pbVar18 - (uint)*pbVar80); + iVar206 = MP_INT_ABS((CONCAT12(*pbVar26,(ushort)*pbVar22) & 0xffff) - + (CONCAT12(*pbVar88,(ushort)*pbVar84) & 0xffff)); + iVar208 = MP_INT_ABS((uint)*pbVar26 - (uint)*pbVar88); + iVar190 = MP_INT_ABS((CONCAT12(*pbVar33,(ushort)*pbVar29) & 0xffff) - + (CONCAT12(*pbVar95,(ushort)*pbVar91) & 0xffff)); + iVar192 = MP_INT_ABS((uint)*pbVar33 - (uint)*pbVar95); + iVar163 = MP_INT_ABS((uint)*pbVar37 - (uint)*pbVar99); + iVar168 = MP_INT_ABS((uint)*pbVar41 - (uint)*pbVar103); + iVar194 = MP_INT_ABS((CONCAT12(*pbVar19,(ushort)*pbVar16) & 0xffff) - + (CONCAT12(*pbVar81,(ushort)*pbVar77) & 0xffff)); + iVar196 = MP_INT_ABS((uint)*pbVar19 - (uint)*pbVar81); + iVar198 = MP_INT_ABS((CONCAT12(*pbVar27,(ushort)*pbVar23) & 0xffff) - (uint)*pbVar85); + iVar200 = MP_INT_ABS((uint)*pbVar27 - (uint)*pbVar89); + iVar188 = MP_INT_ABS((CONCAT12(*pbVar34,(ushort)*pbVar30) & 0xffff) - + (CONCAT12(*pbVar96,(ushort)*pbVar92) & 0xffff)); + iVar189 = MP_INT_ABS((uint)*pbVar34 - (uint)*pbVar96); + iVar10 = MP_INT_ABS((uint)*pbVar38 - (uint)*pbVar100); + iVar161 = MP_INT_ABS((uint)*pbVar42 - (uint)*pbVar104); + iVar191 = MP_INT_ABS((CONCAT12(*pbVar49,(ushort)*pbVar45) & 0xffff) - + ((CONCAT12(bVar154,CONCAT11(bVar154,*pbVar107)) & 0xff00ff) & 0xffff)); + iVar193 = MP_INT_ABS((uint)*pbVar49 - (uint)bVar154); + iVar165 = MP_INT_ABS((uint)*pbVar51 - (uint)*pbVar112); + iVar171 = MP_INT_ABS((uint)*pbVar55 - (uint)*pbVar116); + iVar203 = MP_INT_ABS(((CONCAT12(bVar158,CONCAT11(bVar158,*puVar46)) & 0xff00ff) & 0xffff) - + ((CONCAT12(bVar159,CONCAT11(bVar159,*pbVar108)) & 0xff00ff) & 0xffff)); + iVar205 = MP_INT_ABS((uint)bVar158 - (uint)bVar159); + iVar207 = MP_INT_ABS((uint)*pbVar52 - (uint)*pbVar113); + iVar209 = MP_INT_ABS((uint)*pbVar56 - (uint)*pbVar117); + iVar217 = MP_INT_ABS((CONCAT12(*pbVar20,(ushort)*pbVar17) & 0xffff) - (uVar14 & 0xff)); + iVar218 = MP_INT_ABS((uint)*pbVar20 - ((uVar14 & 0xff00) >> 8)); + iVar185 = MP_INT_ABS((CONCAT12(*pbVar28,(ushort)*pbVar24) & 0xffff) - (uint)*pbVar86); + iVar11 = MP_INT_ABS((uint)*pbVar28 - (uint)*pbVar90); + iVar215 = MP_INT_ABS((CONCAT12(*pbVar35,(ushort)*pbVar31) & 0xffff) - + (CONCAT12(*pbVar97,(ushort)*pbVar93) & 0xffff)); + iVar216 = MP_INT_ABS((uint)*pbVar35 - (uint)*pbVar97); + iVar183 = MP_INT_ABS((uint)*pbVar39 - (uint)*pbVar101); + iVar184 = MP_INT_ABS((uint)*pbVar43 - (uint)*pbVar105); + iVar195 = MP_INT_ABS(((CONCAT12(bVar166,CONCAT11(bVar166,*puVar47)) & 0xff00ff) & 0xffff) - + (uVar13 & 0xff)); + iVar197 = MP_INT_ABS((uint)bVar166 - ((uVar13 & 0xff00) >> 8)); + iVar199 = MP_INT_ABS((uint)*pbVar53 - (uint)*pbVar114); + iVar201 = MP_INT_ABS((uint)*pbVar57 - (uint)*pbVar118); + iVar170 = MP_INT_ABS((uint)*pbVar59 - (CONCAT12(*pbVar124,(ushort)*pbVar120) & 0xffff)); + iVar173 = MP_INT_ABS((uint)*pbVar63 - (uint)*pbVar124); + iVar176 = MP_INT_ABS((uint)*pbVar67 - (uint)*pbVar128); + iVar180 = MP_INT_ABS((uint)*pbVar71 - (uint)*pbVar132); + iVar213 = MP_INT_ABS((CONCAT12(*pbVar36,(ushort)*pbVar32) & 0xffff) - + (CONCAT12(*pbVar98,(ushort)*pbVar94) & 0xffff)); + iVar214 = MP_INT_ABS((uint)*pbVar36 - (uint)*pbVar98); + iVar181 = MP_INT_ABS((uint)*pbVar40 - (uint)*pbVar102); + iVar182 = MP_INT_ABS((uint)*pbVar44 - (uint)*pbVar106); + iVar160 = MP_INT_ABS((CONCAT12(*pbVar64,(ushort)*pbVar60) & 0xffff) - + (CONCAT12(*pbVar125,(ushort)*pbVar121) & 0xffff)); + iVar162 = MP_INT_ABS((uint)*pbVar64 - (uint)*pbVar125); + iVar164 = MP_INT_ABS((uint)*pbVar68 - (uint)*pbVar129); + iVar167 = MP_INT_ABS((uint)*pbVar72 - (uint)*pbVar133); + iVar146 = MP_INT_ABS((CONCAT12(*pbVar50,(ushort)*pbVar48) & 0xffff) - + ((CONCAT12(bVar178,CONCAT11(bVar178,*pbVar110)) & 0xff00ff) & 0xffff)); + iVar150 = MP_INT_ABS((uint)*pbVar50 - (uint)bVar178); + iVar152 = MP_INT_ABS((CONCAT12(*pbVar58,(ushort)*pbVar54) & 0xffff) - (uint)*pbVar115); + iVar155 = MP_INT_ABS((uint)*pbVar58 - (uint)*pbVar119); + iVar157 = MP_INT_ABS((CONCAT12(*pbVar65,(ushort)*pbVar61) & 0xffff) - + (CONCAT12(*pbVar126,(ushort)*pbVar122) & 0xffff)); + iVar5 = MP_INT_ABS((uint)*pbVar65 - (uint)*pbVar126); + iVar6 = MP_INT_ABS((uint)*pbVar69 - (uint)*pbVar130); + iVar9 = MP_INT_ABS((uint)*pbVar73 - (uint)*pbVar134); + iVar147 = MP_INT_ABS((CONCAT12(*pbVar66,(ushort)*pbVar62) & 0xffff) - + (CONCAT12(*pbVar127,(ushort)*pbVar123) & 0xffff)); + iVar151 = MP_INT_ABS((uint)*pbVar66 - (uint)*pbVar127); + iVar153 = MP_INT_ABS((uint)*pbVar70 - (uint)*pbVar131); + iVar156 = MP_INT_ABS((uint)*pbVar74 - (uint)*pbVar135); + /* try { // try from 003ce268 to 004ce26b has its CatchHandler @ 003ce2fc */ + iVar169 = iVar170 + iVar160 + iVar157 + iVar147 + + iVar191 + iVar203 + iVar195 + iVar146 + + iVar190 + iVar188 + iVar215 + iVar213 + + iVar210 + iVar202 + iVar194 + iVar217 + iVar169; + iVar172 = iVar173 + iVar162 + iVar5 + iVar151 + + iVar193 + iVar205 + iVar197 + iVar150 + + iVar192 + iVar189 + iVar216 + iVar214 + + iVar211 + iVar204 + iVar196 + iVar218 + iVar172; + iVar175 = iVar176 + iVar164 + iVar6 + iVar153 + + iVar165 + iVar207 + iVar199 + iVar152 + + iVar163 + iVar10 + iVar183 + iVar181 + + iVar174 + iVar206 + iVar198 + iVar185 + iVar175; + iVar212 = iVar180 + iVar167 + iVar9 + iVar156 + + iVar171 + iVar209 + iVar201 + iVar155 + + iVar168 + iVar161 + iVar184 + iVar182 + + iVar177 + iVar208 + iVar200 + iVar11 + iVar212; + } while (uVar141 < uVar137); + iVar179 = iVar179 + iVar169 + iVar172 + iVar175 + iVar212; + iVar169 = iVar143 + uVar137 * 0x40; + if (uVar137 * 0x10 != uVar4 + 1) goto LAB_003ce290; + } + iVar143 = iVar143 + 4 + uVar4 * 4; +LAB_003ce328: + if (iVar143 < param_3) { + lVar138 = (long)iVar143; + uVar4 = param_3 - iVar143; + uVar137 = -((int)param_1 + iVar143) & 0xf; + uVar3 = (ulong)uVar137; + if (uVar4 < uVar137) { + uVar3 = (ulong)uVar4; + } + if (uVar4 < 0x11) { + uVar3 = (ulong)uVar4; + } + uVar137 = (uint)uVar3; + if (uVar137 != 0) { + /* catch() { ... } // from try @ 003ce960 with catch @ 003ce360 */ + iVar169 = iVar143 + 1; + uVar141 = (uint)*(byte *)(param_1 + lVar138) - (uint)*(byte *)(param_2 + lVar138); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 1) { + iVar172 = iVar143 + 2; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 2) { + iVar169 = iVar143 + 3; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 3) { + iVar172 = iVar143 + 4; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 4) { + iVar169 = iVar143 + 5; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + /* try { // try from 003ce41c to 004ce41f has its CatchHandler @ 003ce944 */ + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 5) { + iVar172 = iVar143 + 6; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 6) { + iVar169 = iVar143 + 7; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 7) { + iVar172 = iVar143 + 8; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 8) { + iVar169 = iVar143 + 9; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 9) { + iVar172 = iVar143 + 10; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 10) { + iVar169 = iVar143 + 0xb; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 0xb) { + iVar172 = iVar143 + 0xc; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 0xc) { + iVar169 = iVar143 + 0xd; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 != 0xd) { + iVar172 = iVar143 + 0xe; + uVar141 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar172; + if (uVar137 != 0xe) { + iVar169 = iVar143 + 0xf; + uVar141 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + if (uVar137 == 0x10) { + uVar141 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar140 = (int)uVar141 >> 0x1f; + iVar179 = iVar179 + ((uVar141 ^ uVar140) - uVar140); + iVar169 = iVar143 + 0x10; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + iVar143 = iVar169; + if (uVar137 == uVar4) { + return iVar179; + } + } + uVar141 = ((uVar4 - uVar137) - 0x10 >> 4) + 1; + iVar169 = uVar141 * 0x10; + if (0xe < (uVar4 - 1) - uVar137) { + iVar172 = 0; + iVar175 = 0; + iVar212 = 0; + iVar157 = 0; + uVar140 = 0; + puVar139 = (undefined8 *)(param_1 + uVar3 + lVar138); + puVar142 = (undefined8 *)(param_2 + uVar3 + lVar138); + do { + uVar8 = puVar139[1]; + uVar7 = *puVar139; + uVar140 = uVar140 + 1; + uVar187 = puVar142[1]; + uVar186 = *puVar142; + bVar145 = (byte)((ulong)uVar7 >> 8); + bVar158 = (byte)((ulong)uVar7 >> 0x28); + bVar149 = (byte)((ulong)uVar186 >> 8); + bVar159 = (byte)((ulong)uVar186 >> 0x28); + bVar166 = (byte)((ulong)uVar8 >> 0x28); + bVar154 = (byte)((ulong)uVar187 >> 8); + bVar178 = (byte)((ulong)uVar187 >> 0x28); + iVar182 = MP_INT_ABS((CONCAT12(bVar145,(ushort)(byte)uVar7) & 0xffff) - + ((CONCAT12(bVar149,(short)uVar186) & 0xff00ff) & 0xffff)); + iVar183 = MP_INT_ABS((uint)bVar145 - (uint)bVar149); + iVar184 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x10) - + (uint)(byte)((ulong)uVar186 >> 0x10)); + iVar185 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x18) - + (uint)(byte)((ulong)uVar186 >> 0x18)); + iVar161 = MP_INT_ABS((CONCAT12(bVar158,(ushort)(byte)((ulong)uVar7 >> 0x20)) & 0xffff) - + (CONCAT12(bVar159,(ushort)(byte)((ulong)uVar186 >> 0x20)) & 0xffff)); + iVar163 = MP_INT_ABS((uint)bVar158 - (uint)bVar159); + iVar165 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x30) - + (uint)(byte)((ulong)uVar186 >> 0x30)); + iVar168 = MP_INT_ABS((uint)(byte)((ulong)uVar7 >> 0x38) - + (uint)(byte)((ulong)uVar186 >> 0x38)); + iVar171 = MP_INT_ABS((uint)(byte)uVar8 - + ((CONCAT12(bVar154,(short)uVar187) & 0xff00ff) & 0xffff)); + iVar174 = MP_INT_ABS((uint)(byte)((ulong)uVar8 >> 8) - (uint)bVar154); + iVar177 = MP_INT_ABS((uint)(byte)((ulong)uVar8 >> 0x10) - + (uint)(byte)((ulong)uVar187 >> 0x10)); + iVar181 = MP_INT_ABS((uint)(byte)((ulong)uVar8 >> 0x18) - + (uint)(byte)((ulong)uVar187 >> 0x18)); + iVar5 = MP_INT_ABS((CONCAT12(bVar166,(ushort)(byte)((ulong)uVar8 >> 0x20)) & 0xffff) - + (CONCAT12(bVar178,(ushort)(byte)((ulong)uVar187 >> 0x20)) & 0xffff)); + iVar6 = MP_INT_ABS((uint)bVar166 - (uint)bVar178); + iVar9 = MP_INT_ABS((uint)(byte)((ulong)uVar8 >> 0x30) - (uint)(byte)((ulong)uVar187 >> 0x30) + ); + iVar10 = MP_INT_ABS((uint)(byte)((ulong)uVar8 >> 0x38) - + (uint)(byte)((ulong)uVar187 >> 0x38)); + iVar172 = iVar5 + iVar171 + iVar161 + iVar182 + iVar172; + iVar175 = iVar6 + iVar174 + iVar163 + iVar183 + iVar175; + iVar212 = iVar9 + iVar177 + iVar165 + iVar184 + iVar212; + iVar157 = iVar10 + iVar181 + iVar168 + iVar185 + iVar157; + puVar139 = puVar139 + 2; + puVar142 = puVar142 + 2; + } while (uVar140 < uVar141); + iVar143 = iVar143 + iVar169; + iVar179 = iVar179 + iVar172 + iVar175 + iVar212 + iVar157; + if (iVar169 == uVar4 - uVar137) { + return iVar179; + } + } + iVar169 = iVar143 + 1; + uVar137 = (uint)*(byte *)(param_1 + iVar143) - (uint)*(byte *)(param_2 + iVar143); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar172 = iVar143 + 2; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar172 < param_3) { + iVar169 = iVar143 + 3; + uVar137 = (uint)*(byte *)(param_1 + iVar172) - (uint)*(byte *)(param_2 + iVar172); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar172 = iVar143 + 4; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar172 < param_3) { + iVar169 = iVar143 + 5; + uVar137 = (uint)*(byte *)(param_1 + iVar172) - (uint)*(byte *)(param_2 + iVar172); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar172 = iVar143 + 6; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar172 < param_3) { + iVar169 = iVar143 + 7; + uVar137 = (uint)*(byte *)(param_1 + iVar172) - (uint)*(byte *)(param_2 + iVar172); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar172 = iVar143 + 8; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar172 < param_3) { + iVar169 = iVar143 + 9; + uVar137 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar172 = iVar143 + 10; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar172 < param_3) { + iVar169 = iVar143 + 0xb; + uVar137 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar172 = iVar143 + 0xc; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar172 < param_3) { + iVar169 = iVar143 + 0xd; + uVar137 = (uint)*(byte *)(param_1 + iVar172) - + (uint)*(byte *)(param_2 + iVar172); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar169 < param_3) { + iVar143 = iVar143 + 0xe; + uVar137 = (uint)*(byte *)(param_1 + iVar169) - + (uint)*(byte *)(param_2 + iVar169); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + if (iVar143 < param_3) { + uVar137 = (uint)*(byte *)(param_1 + iVar143) - + (uint)*(byte *)(param_2 + iVar143); + uVar4 = (int)uVar137 >> 0x1f; + iVar179 = iVar179 + ((uVar137 ^ uVar4) - uVar4); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + /* catch() { ... } // from try @ 003ce41c with catch @ 003ce944 */ + return iVar179; +} + + +================================================================== + +### FUNC 003ce968 (100 bytes) name=__do_upcast + +/* __cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const */ + +bool __thiscall +__cxxabiv1::__class_type_info::__do_upcast + (__class_type_info *this,__class_type_info *param_1,void **param_2) + +{ + bool bVar1; + void *local_18; + uint local_10; + undefined4 local_c; + undefined8 local_8; + + local_18 = (void *)0x0; + local_10 = 0; + local_c = 0x10; + local_8 = 0; + (**(code **)(*(long *)this + 0x30))(this,param_1,*param_2,&local_18); + bVar1 = (local_10 & 6) == 6; + if (bVar1) { + *param_2 = local_18; + } + return bVar1; +} + + +================================================================== + +### FUNC 003ce9cc (16 bytes) name=__do_find_public_src + +/* __cxxabiv1::__class_type_info::__do_find_public_src(long, void const*, + __cxxabiv1::__class_type_info const*, void const*) const */ + +undefined4 __thiscall +__cxxabiv1::__class_type_info::__do_find_public_src + (__class_type_info *this,long param_1,void *param_2,__class_type_info *param_3, + void *param_4) + +{ + undefined4 uVar1; + + uVar1 = 6; + if (param_4 != param_2) { + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 003ce9dc (20 bytes) name=~__class_type_info + +/* __cxxabiv1::__class_type_info::~__class_type_info() */ + +void __thiscall __cxxabiv1::__class_type_info::~__class_type_info(__class_type_info *this) + +{ + *(undefined **)this = PTR_vtable_00501fa8 + 0x10; + FUN_003d067c(); + return; +} + + +================================================================== + +### FUNC 003ce9f0 (36 bytes) name=~__class_type_info + +/* __cxxabiv1::__class_type_info::~__class_type_info() */ + +void __thiscall __cxxabiv1::__class_type_info::~__class_type_info(__class_type_info *this) + +{ + ~__class_type_info(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003cea14 (104 bytes) name=__do_upcast + +/* __cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, + __cxxabiv1::__class_type_info::__upcast_result&) const */ + +undefined8 __thiscall +__cxxabiv1::__class_type_info::__do_upcast + (__class_type_info *this,__class_type_info *param_1,void *param_2,__upcast_result *param_3 + ) + +{ + int iVar1; + char *__s1; + + __s1 = *(char **)(this + 8); + if (__s1 != *(char **)(param_1 + 8)) { + /* try { // try from 003cea30 to 004cea33 has its CatchHandler @ 003cf368 */ + if (*__s1 != '*') { + iVar1 = strcmp(__s1,*(char **)(param_1 + 8)); + if (iVar1 == 0) goto LAB_003cea5c; + } + return 0; + } +LAB_003cea5c: + *(void **)param_3 = param_2; + *(undefined8 *)(param_3 + 0x10) = 0x10; + *(undefined4 *)(param_3 + 8) = 6; + return 1; +} + + +================================================================== + +### FUNC 003cea7c (184 bytes) name=__do_catch + +/* __cxxabiv1::__class_type_info::__do_catch(std::type_info const*, void**, unsigned int) const */ + +undefined1 __thiscall +__cxxabiv1::__class_type_info::__do_catch + (__class_type_info *this,type_info *param_1,void **param_2,uint param_3) + +{ + undefined1 uVar1; + int iVar2; + char *__s1; + + __s1 = *(char **)(this + 8); + if (__s1 == *(char **)(param_1 + 8)) { + return 1; + } + if ((*__s1 != '*') && (iVar2 = strcmp(__s1,*(char **)(param_1 + 8)), iVar2 == 0)) { + return 1; + } + if (3 < param_3) { + return 0; + } + uVar1 = (**(code **)(*(long *)param_1 + 0x28))(param_1,this,param_2); + return uVar1; +} + + +================================================================== + +### FUNC 003ceb34 (248 bytes) name=__do_dyncast + +/* __cxxabiv1::__class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, + __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void + const*, __cxxabiv1::__class_type_info::__dyncast_result&) const */ + +undefined8 __thiscall +__cxxabiv1::__class_type_info::__do_dyncast + (__class_type_info *this,undefined8 param_2,undefined4 param_3,long param_4,long param_5, + long param_6,long param_7,long *param_8) + +{ + int iVar1; + char *__s2; + char *__s1; + + __s1 = *(char **)(this + 8); + if (param_5 == param_7) { + if (__s1 == *(char **)(param_6 + 8)) { +LAB_003cec08: + *(undefined4 *)((long)param_8 + 0xc) = param_3; + return 0; + } + if (*__s1 == '*') { + if (__s1 != *(char **)(param_4 + 8)) { + return 0; + } + goto LAB_003cebe8; + } + iVar1 = strcmp(__s1,*(char **)(param_6 + 8)); + if (iVar1 == 0) goto LAB_003cec08; + __s2 = *(char **)(param_4 + 8); + if (__s1 == __s2) goto LAB_003cebe8; + } + else { + __s2 = *(char **)(param_4 + 8); + if (__s1 == __s2) goto LAB_003cebe8; + if (*__s1 == '*') { + return 0; + } + } + iVar1 = strcmp(__s1,__s2); + if (iVar1 != 0) { + return 0; + } +LAB_003cebe8: + *param_8 = param_5; + *(undefined4 *)(param_8 + 1) = param_3; + *(undefined4 *)(param_8 + 2) = 1; + return 0; +} + + +================================================================== + +### FUNC 003cec2c (4 bytes) name=operator.delete + +/* operator delete(void*) */ + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_free_004ffab8)(); + return; +} + + +================================================================== + +### FUNC 003cec30 (4 bytes) name=operator.delete[] + +/* operator delete[](void*) */ + +void operator_delete__(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 003cec34 (12 bytes) name=FUN_003cec34 + +char * FUN_003cec34(void) + +{ + return "__gnu_cxx::__concurrence_lock_error"; +} + + +================================================================== + +### FUNC 003cec40 (12 bytes) name=FUN_003cec40 + +char * FUN_003cec40(void) + +{ + return "__gnu_cxx::__concurrence_unlock_error"; +} + + +================================================================== + +### FUNC 003cec4c (16 bytes) name=FUN_003cec4c + +void FUN_003cec4c(exception *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7ac0; + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 003cec5c (16 bytes) name=FUN_003cec5c + +void FUN_003cec5c(exception *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7af0; + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 003cec6c (48 bytes) name=FUN_003cec6c + +void FUN_003cec6c(exception *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7ac0; + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003cec9c (48 bytes) name=FUN_003cec9c + +void FUN_003cec9c(exception *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f7af0; + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ceccc (48 bytes) name=FUN_003ceccc + +void FUN_003ceccc(void) + +{ + undefined8 *puVar1; + + puVar1 = (undefined8 *)__cxa_allocate_exception(8); + *puVar1 = &PTR_FUN_004f7ac0; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar1,&PTR_PTR_004fca80,FUN_003cec4c); +} + + +================================================================== + +### FUNC 003cecfc (48 bytes) name=FUN_003cecfc + +void FUN_003cecfc(void) + +{ + undefined8 *puVar1; + + puVar1 = (undefined8 *)__cxa_allocate_exception(8); + *puVar1 = &PTR_FUN_004f7af0; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar1,&PTR_PTR_004fca98,FUN_003cec5c); +} + + +================================================================== + +### FUNC 003ced2c (244 bytes) name=__cxa_allocate_exception + +undefined8 * __cxa_allocate_exception(long param_1) + +{ + uint uVar1; + int iVar2; + undefined8 *puVar3; + ulong uVar4; + long extraout_x1; + ulong uVar5; + + puVar3 = malloc(param_1 + 0x80U); + if (puVar3 != (undefined8 *)0x0) { +LAB_003ced50: + *puVar3 = 0; + puVar3[1] = 0; + puVar3[2] = 0; + puVar3[3] = 0; + puVar3[4] = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + puVar3[0xb] = 0; + puVar3[0xc] = 0; + puVar3[0xd] = 0; + puVar3[0xe] = 0; + puVar3[0xf] = 0; + return puVar3 + 0x10; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar2 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00535100); + if (iVar2 != 0) { + FUN_003ceccc(); +LAB_003cee1c: + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); + } + } + if (param_1 + 0x80U < 0x401) { + uVar5 = 0; + uVar4 = DAT_00545130; + do { + if ((uVar4 & 1) == 0) { + DAT_00545130 = 1L << (uVar5 & 0x3f) | DAT_00545130; + puVar3 = (undefined8 *)(&DAT_00535130 + uVar5 * 0x400); + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_003ced50; + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00535100); + if (iVar2 == 0) goto LAB_003ced50; + FUN_003cecfc(); + if (extraout_x1 != -1) { + /* WARNING: Subroutine does not return */ + _Unwind_Resume(); + } + goto LAB_003cee1c; + } + uVar1 = (int)uVar5 + 1; + uVar5 = (ulong)uVar1; + uVar4 = uVar4 >> 1; + } while (uVar1 != 0x40); + } + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003cee24 (204 bytes) name=__cxa_free_exception + +void __cxa_free_exception(undefined *param_1) + +{ + int iVar1; + long extraout_x1; + long lVar2; + long extraout_x1_00; + + if ((param_1 < &DAT_00535130) || ((undefined *)0x54512f < param_1)) { + free(param_1 + -0x80); + return; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + DAT_00545130 = DAT_00545130 & + (1L << ((ulong)(param_1 + -0x535130) >> 10 & 0x3f) ^ 0xffffffffffffffffU); + return; + } + iVar1 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00535100); + if (iVar1 == 0) { + DAT_00545130 = DAT_00545130 & + (1L << ((ulong)(param_1 + -0x535130) >> 10 & 0x3f) ^ 0xffffffffffffffffU); + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00535100); + if (iVar1 == 0) { + return; + } + FUN_003cecfc(); + lVar2 = extraout_x1; + } + else { + FUN_003ceccc(); + lVar2 = extraout_x1_00; + } + if (lVar2 != -1) { + /* WARNING: Subroutine does not return */ + _Unwind_Resume(); + } + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); +} + + +================================================================== + +### FUNC 003ceef0 (228 bytes) name=__cxa_allocate_dependent_exception + +undefined8 * __cxa_allocate_dependent_exception(void) + +{ + uint uVar1; + int iVar2; + undefined8 *puVar3; + ulong uVar4; + ulong uVar5; + long extraout_x1; + + puVar3 = malloc(0x70); + if (puVar3 == (undefined8 *)0x0) { + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar2 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00535100); + if (iVar2 != 0) goto LAB_003cefc0; + } + uVar4 = 0; + uVar5 = DAT_005334f0; + while ((uVar5 & 1) != 0) { + uVar1 = (int)uVar4 + 1; + uVar4 = (ulong)uVar1; + uVar5 = uVar5 >> 1; + if (uVar1 == 0x40) { + /* WARNING: Subroutine does not return */ + std::terminate(); + } + } + DAT_005334f0 = 1L << (uVar4 & 0x3f) | DAT_005334f0; + puVar3 = (undefined8 *)(&DAT_00533500 + uVar4 * 0x70); + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar2 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00535100); + if (iVar2 != 0) { + FUN_003cecfc(); +LAB_003cefc0: + FUN_003ceccc(); + if (extraout_x1 != -1) { + /* WARNING: Subroutine does not return */ + _Unwind_Resume(); + } + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); + } + } + } + *puVar3 = 0; + puVar3[1] = 0; + puVar3[2] = 0; + puVar3[3] = 0; + puVar3[4] = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + puVar3[0xb] = 0; + puVar3[0xc] = 0; + puVar3[0xd] = 0; + return puVar3; +} + + +================================================================== + +### FUNC 003cefd8 (224 bytes) name=__cxa_free_dependent_exception + +void __cxa_free_dependent_exception(undefined *param_1) + +{ + int iVar1; + long extraout_x1; + long lVar2; + long extraout_x1_00; + ulong uVar3; + + if ((param_1 < &DAT_00533500) || ((undefined *)0x5350ff < param_1)) { + free(param_1); + return; + } + uVar3 = (ulong)((int)param_1 - 0x533500U >> 4) / 7; + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + DAT_005334f0 = DAT_005334f0 & (1L << (uVar3 & 0x3f) ^ 0xffffffffffffffffU); + return; + } + iVar1 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00535100); + if (iVar1 == 0) { + DAT_005334f0 = DAT_005334f0 & (1L << (uVar3 & 0x3f) ^ 0xffffffffffffffffU); + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00535100); + if (iVar1 == 0) { + return; + } + FUN_003cecfc(); + lVar2 = extraout_x1; + } + else { + FUN_003ceccc(); + lVar2 = extraout_x1_00; + } + if (lVar2 != -1) { + /* WARNING: Subroutine does not return */ + _Unwind_Resume(); + } + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); +} + + +================================================================== + +### FUNC 003cf0b8 (8 bytes) name=__cxa_get_exception_ptr + +undefined8 __cxa_get_exception_ptr(long param_1) + +{ + return *(undefined8 *)(param_1 + -8); +} + + +================================================================== + +### FUNC 003cf0c0 (160 bytes) name=__cxa_begin_catch + +long __cxa_begin_catch(long *param_1) + +{ + int iVar1; + long lVar2; + long *plVar3; + long *plVar4; + long *plVar5; + + plVar3 = (long *)__cxa_get_globals(); + plVar5 = (long *)*plVar3; + plVar4 = param_1 + -10; + if (*param_1 + 0xb8b1aabcbcd4d500U < 2) { + iVar1 = (int)param_1[-5]; + if (iVar1 < 0) { + iVar1 = -iVar1; + } + lVar2 = plVar3[1]; + *(int *)(param_1 + -5) = iVar1 + 1; + *(int *)(plVar3 + 1) = (int)lVar2 + -1; + if (plVar5 != plVar4) { + param_1[-6] = (long)plVar5; + *plVar3 = (long)plVar4; + } + return param_1[-1]; + } + if (plVar5 == (long *)0x0) { + *plVar3 = (long)plVar4; + return 0; + } + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003cf160 (156 bytes) name=__cxa_end_catch + +void __cxa_end_catch(void) + +{ + long *plVar1; + long lVar2; + int iVar3; + + plVar1 = (long *)__cxa_get_globals_fast(); + lVar2 = *plVar1; + if (lVar2 != 0) { + if (1 < *(long *)(lVar2 + 0x50) + 0xb8b1aabcbcd4d500U) { + *plVar1 = 0; + _Unwind_DeleteException(lVar2 + 0x50); + return; + } + iVar3 = *(int *)(lVar2 + 0x28); + if (iVar3 < 0) { + iVar3 = iVar3 + 1; + if (iVar3 == 0) { + *plVar1 = *(long *)(lVar2 + 0x20); + *(undefined4 *)(lVar2 + 0x28) = 0; + return; + } + } + else { + iVar3 = iVar3 + -1; + if (iVar3 == 0) { + *plVar1 = *(long *)(lVar2 + 0x20); + _Unwind_DeleteException(lVar2 + 0x50); + return; + } + if (iVar3 == -1) { + /* WARNING: Subroutine does not return */ + std::terminate(); + } + } + *(int *)(lVar2 + 0x28) = iVar3; + } + return; +} + + +================================================================== + +### FUNC 003cf1fc (32 bytes) name=uncaught_exception + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::uncaught_exception() */ + +bool std::uncaught_exception(void) + +{ + long lVar1; + + lVar1 = __cxa_get_globals(); + return *(int *)(lVar1 + 8) != 0; +} + + +================================================================== + +### FUNC 003cf21c (4 bytes) name=~exception + +/* std::exception::~exception() */ + +void __thiscall std::exception::~exception(exception *this) + +{ + return; +} + + +================================================================== + +### FUNC 003cf220 (20 bytes) name=~bad_exception + +/* std::bad_exception::~bad_exception() */ + +void __thiscall std::bad_exception::~bad_exception(bad_exception *this) + +{ + *(undefined **)this = PTR_vtable_00501b18 + 0x10; + exception::~exception((exception *)this); + return; +} + + +================================================================== + +### FUNC 003cf234 (12 bytes) name=what + +/* std::exception::what() const */ + +char * std::exception::what(void) + +{ + return "std::exception"; +} + + +================================================================== + +### FUNC 003cf240 (12 bytes) name=what + +/* std::bad_exception::what() const */ + +char * std::bad_exception::what(void) + +{ + return "std::bad_exception"; +} + + +================================================================== + +### FUNC 003cf24c (36 bytes) name=~exception + +/* std::exception::~exception() */ + +void __thiscall std::exception::~exception(exception *this) + +{ + ~exception(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003cf270 (36 bytes) name=~bad_exception + +/* std::bad_exception::~bad_exception() */ + +void __thiscall std::bad_exception::~bad_exception(bad_exception *this) + +{ + ~bad_exception(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003cf294 (4 bytes) name=~__forced_unwind + +/* __cxxabiv1::__forced_unwind::~__forced_unwind() */ + +void __thiscall __cxxabiv1::__forced_unwind::~__forced_unwind(__forced_unwind *this) + +{ + return; +} + + +================================================================== + +### FUNC 003cf298 (36 bytes) name=~__forced_unwind + +/* __cxxabiv1::__forced_unwind::~__forced_unwind() */ + +void __thiscall __cxxabiv1::__forced_unwind::~__forced_unwind(__forced_unwind *this) + +{ + ~__forced_unwind(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003cf2bc (4 bytes) name=~__foreign_exception + +/* __cxxabiv1::__foreign_exception::~__foreign_exception() */ + +void __thiscall __cxxabiv1::__foreign_exception::~__foreign_exception(__foreign_exception *this) + +{ + return; +} + + +================================================================== + +### FUNC 003cf2c0 (36 bytes) name=~__foreign_exception + +/* __cxxabiv1::__foreign_exception::~__foreign_exception() */ + +void __thiscall __cxxabiv1::__foreign_exception::~__foreign_exception(__foreign_exception *this) + +{ + ~__foreign_exception(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003cf2e4 (28 bytes) name=FUN_003cf2e4 + +pthread_key_t * FUN_003cf2e4(pthread_key_t *param_1) + +{ + code *pcVar1; + uint uVar2; + + if (param_1 == (pthread_key_t *)0x0) { + /* WARNING: Does not return */ + pcVar1 = (code *)SoftwareBreakpoint(1000,0x3cf300); + (*pcVar1)(); + } + if ((char)param_1[1] == '\0') { + return param_1; + } + uVar2 = pthread_key_delete(*param_1); + return (pthread_key_t *)(ulong)uVar2; +} + + +================================================================== + +### FUNC 003cf300 (76 bytes) name=FUN_003cf300 + +void FUN_003cf300(long *param_1) + +{ + long lVar1; + long lVar2; + + if (param_1 == (long *)0x0) { + return; + } + lVar1 = *param_1; + while (lVar1 != 0) { + lVar2 = *(long *)(lVar1 + 0x20); + _Unwind_DeleteException(lVar1 + 0x50); + lVar1 = lVar2; + } + free(param_1); + return; +} + + +================================================================== + +### FUNC 003cf34c (56 bytes) name=__cxa_get_globals_fast + +undefined * __cxa_get_globals_fast(void) + +{ + undefined *puVar1; + + if (DAT_0054513c == '\0') { + /* catch() { ... } // from try @ 003cea30 with catch @ 003cf368 */ + return &DAT_00545140; + } + puVar1 = pthread_getspecific(DAT_00545138); + return puVar1; +} + + +================================================================== + +### FUNC 003cf394 (116 bytes) name=__cxa_get_globals + +undefined8 * __cxa_get_globals(void) + +{ + int iVar1; + undefined8 *__pointer; + + if (DAT_0054513c == '\0') { + __pointer = (undefined8 *)&DAT_00545140; + } + else { + __pointer = pthread_getspecific(DAT_00545138); + if (__pointer == (undefined8 *)0x0) { + __pointer = malloc(0x10); + if ((__pointer == (undefined8 *)0x0) || + (iVar1 = pthread_setspecific(DAT_00545138,__pointer), iVar1 != 0)) { + /* WARNING: Subroutine does not return */ + std::terminate(); + } + *__pointer = 0; + *(undefined4 *)(__pointer + 1) = 0; + } + } + return __pointer; +} + + +================================================================== + +### FUNC 003cf418 (64 bytes) name=FUN_003cf418 + +void FUN_003cf418(byte *param_1,ulong *param_2) + +{ + uint uVar1; + byte bVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + + uVar5 = 0; + uVar4 = 0; + do { + bVar2 = *param_1; + uVar3 = uVar4 & 0x3f; + uVar1 = (int)uVar4 + 7; + uVar4 = (ulong)uVar1; + uVar5 = uVar5 | ((ulong)bVar2 & 0x7f) << uVar3; + param_1 = param_1 + 1; + } while ((char)bVar2 < '\0'); + if ((uVar1 < 0x40) && ((bVar2 >> 6 & 1) != 0)) { + uVar5 = -1L << (uVar4 & 0x3f) | uVar5; + } + /* try { // try from 003cf450 to 004cf453 has its CatchHandler @ 003cfd5c */ + *param_2 = uVar5; + return; +} + + +================================================================== + +### FUNC 003cf458 (272 bytes) name=FUN_003cf458 + +ulong * FUN_003cf458(byte param_1,ulong *param_2,ulong *param_3,ulong *param_4) + +{ + ulong uVar1; + ulong uVar2; + ulong *puVar3; + ulong *puVar4; + ulong uVar5; + ulong local_8; + + if (param_1 != 0x50) { + switch(param_1 & 0xf) { + case 0: + case 4: + case 0xc: + puVar4 = param_3 + 1; + local_8 = *param_3; + break; + case 1: + local_8 = 0; + uVar5 = 0; + puVar3 = param_3; + do { + puVar4 = (ulong *)((long)puVar3 + 1); + uVar2 = *puVar3; + uVar1 = uVar5 & 0x3f; + uVar5 = (ulong)((int)uVar5 + 7); + local_8 = local_8 | ((ulong)(byte)uVar2 & 0x7f) << uVar1; + puVar3 = puVar4; + } while ((char)(byte)uVar2 < '\0'); + break; + case 2: + puVar4 = (ulong *)((long)param_3 + 2); + local_8 = (ulong)(ushort)*param_3; + break; + case 3: + puVar4 = (ulong *)((long)param_3 + 4); + local_8 = (ulong)(uint)*param_3; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 9: + puVar4 = (ulong *)FUN_003cf418(param_3,&local_8); + break; + case 10: + puVar4 = (ulong *)((long)param_3 + 2); + local_8 = (ulong)(short)*param_3; + break; + case 0xb: + puVar4 = (ulong *)((long)param_3 + 4); + local_8 = (ulong)(int)(uint)*param_3; + } + if (local_8 != 0) { + if ((param_1 & 0x70) != 0x10) { + param_3 = param_2; + } + local_8 = local_8 + (long)param_3; + if ((char)param_1 < '\0') { + local_8 = *(ulong *)local_8; + } + } + *param_4 = local_8; + return puVar4; + } + puVar4 = (ulong *)((long)param_3 + 7U & 0xfffffffffffffff8); + *param_4 = *puVar4; + return puVar4 + 1; +} + + +================================================================== + +### FUNC 003cf568 (124 bytes) name=FUN_003cf568 + +undefined8 FUN_003cf568(byte param_1,undefined8 param_2) + +{ + byte bVar1; + undefined8 uVar2; + + if (param_1 == 0xff) { + return 0; + } + bVar1 = param_1 & 0x70; + if (bVar1 == 0x20) { + uVar2 = _Unwind_GetTextRelBase(param_2); + return uVar2; + } + if (bVar1 < 0x21) { + if ((param_1 & 0x70) == 0) { + return 0; + } + if (bVar1 == 0x10) { + return 0; + } + } + else { + if (bVar1 == 0x40) { + uVar2 = _Unwind_GetRegionStart(param_2); + return uVar2; + } + if (bVar1 == 0x50) { + return 0; + } + if (bVar1 == 0x30) { + uVar2 = _Unwind_GetDataRelBase(param_2); + return uVar2; + } + } + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### FUNC 003cf5e4 (268 bytes) name=FUN_003cf5e4 + +void FUN_003cf5e4(long param_1,char *param_2,undefined8 *param_3) + +{ + byte bVar1; + char cVar2; + ulong uVar3; + undefined8 uVar4; + char *pcVar5; + byte *pbVar6; + byte *pbVar7; + ulong uVar8; + ulong uVar9; + + if (param_1 == 0) { + uVar4 = 0; + } + else { + uVar4 = _Unwind_GetRegionStart(); + } + *param_3 = uVar4; + cVar2 = *param_2; + if (cVar2 == -1) { + param_3[1] = uVar4; + pbVar6 = (byte *)(param_2 + 2); + cVar2 = param_2[1]; + *(char *)(param_3 + 5) = cVar2; + } + else { + uVar4 = FUN_003cf568(cVar2,param_1); + pcVar5 = (char *)FUN_003cf458(cVar2,uVar4,param_2 + 1,param_3 + 1); + pbVar6 = (byte *)(pcVar5 + 1); + cVar2 = *pcVar5; + *(char *)(param_3 + 5) = cVar2; + } + if (cVar2 == -1) { + param_3[3] = 0; + } + else { + uVar9 = 0; + uVar8 = 0; + pbVar7 = pbVar6; + do { + pbVar6 = pbVar7 + 1; + bVar1 = *pbVar7; + uVar3 = uVar8 & 0x3f; + uVar8 = (ulong)((int)uVar8 + 7); + uVar9 = uVar9 | ((ulong)bVar1 & 0x7f) << uVar3; + pbVar7 = pbVar6; + } while ((char)bVar1 < '\0'); + param_3[3] = pbVar6 + uVar9; + } + uVar9 = 0; + *(byte *)((long)param_3 + 0x29) = *pbVar6; + uVar8 = 0; + pbVar6 = pbVar6 + 1; + do { + pbVar7 = pbVar6 + 1; + bVar1 = *pbVar6; + uVar3 = uVar8 & 0x3f; + uVar8 = (ulong)((int)uVar8 + 7); + uVar9 = uVar9 | ((ulong)bVar1 & 0x7f) << uVar3; + pbVar6 = pbVar7; + } while ((char)bVar1 < '\0'); + param_3[4] = pbVar7 + uVar9; + return; +} + + +================================================================== + +### FUNC 003cf6f0 (320 bytes) name=FUN_003cf6f0 + +char FUN_003cf6f0(long param_1,long *param_2,long *param_3,ulong param_4) + +{ + byte bVar1; + ulong uVar2; + long *plVar3; + char cVar4; + ulong uVar5; + ulong uVar6; + long lVar7; + byte *pbVar8; + long *local_8; + byte *pbVar9; + + pbVar8 = (byte *)(*(long *)(param_1 + 0x18) + ~param_4); + do { + uVar6 = 0; + uVar5 = 0; + pbVar9 = pbVar8; + do { + pbVar8 = pbVar9 + 1; + bVar1 = *pbVar9; + uVar2 = uVar5 & 0x3f; + uVar5 = (ulong)((int)uVar5 + 7); + uVar6 = uVar6 | ((ulong)bVar1 & 0x7f) << uVar2; + pbVar9 = pbVar8; + } while ((char)bVar1 < '\0'); + if (uVar6 == 0) { + return '\0'; + } + bVar1 = *(byte *)(param_1 + 0x28); + if (bVar1 == 0xff) { + lVar7 = 0; + } + else { + switch(bVar1 & 7) { + case 0: + case 4: + lVar7 = uVar6 * -8; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 2: + lVar7 = uVar6 * -2; + break; + case 3: + lVar7 = uVar6 * -4; + } + } + FUN_003cf458(bVar1,*(undefined8 *)(param_1 + 0x10),*(long *)(param_1 + 0x18) + lVar7,&local_8); + plVar3 = local_8; + local_8 = param_3; + cVar4 = (**(code **)(*param_2 + 0x10))(param_2); + if (cVar4 != '\0') { + local_8 = (long *)*local_8; + } + cVar4 = (**(code **)(*plVar3 + 0x20))(plVar3,param_2,&local_8,1); + } while (cVar4 == '\0'); + return cVar4; +} + + +================================================================== + +### FUNC 003cf830 (1336 bytes) name=__gxx_personality_v0 + +undefined8 +__gxx_personality_v0(int param_1,uint param_2,long param_3,ulong *param_4,undefined8 param_5) + +{ + bool bVar1; + bool bVar2; + ulong *puVar3; + undefined1 uVar4; + byte bVar5; + char cVar6; + int iVar7; + ulong uVar8; + byte *pbVar9; + undefined8 uVar10; + byte *pbVar11; + long lVar12; + long *plVar13; + undefined8 *puVar14; + long lVar15; + ulong uVar16; + ulong uVar17; + int iVar18; + _func_void *p_Var19; + undefined8 uVar20; + undefined8 *puVar21; + ulong uVar22; + undefined1 auStack_120 [16]; + undefined8 uStack_110; + long *local_70; + ulong *local_68; + ulong local_60; + int local_4c; + int local_48; + undefined4 uStack_44; + long local_40; + ulong *local_38; + long local_30; + long local_28; + undefined8 local_20; + long local_18; + byte *local_10; + byte local_8; + undefined1 local_7; + + local_4c = 0; + if (param_1 != 1) { + return 3; + } + bVar1 = 1 < param_3 + 0xb8b1aabcbcd4d500U; + if ((param_2 == 6) <= bVar1) { + local_60 = _Unwind_GetLanguageSpecificData(param_5); + if (local_60 == 0) { + return 8; + } + pbVar9 = (byte *)FUN_003cf5e4(param_5,local_60,&local_30); + local_20 = FUN_003cf568(local_8,param_5); + lVar12 = _Unwind_GetIPInfo(param_5,&local_4c); + uVar22 = lVar12 - (ulong)(local_4c == 0); + if (pbVar9 < local_10) { + do { + uVar4 = local_7; + uVar20 = FUN_003cf568(local_7,0); + uVar20 = FUN_003cf458(uVar4,uVar20,pbVar9,&local_48); + uVar4 = local_7; + uVar10 = FUN_003cf568(local_7,0); + uVar20 = FUN_003cf458(uVar4,uVar10,uVar20,&local_40); + uVar4 = local_7; + uVar10 = FUN_003cf568(local_7,0); + pbVar11 = (byte *)FUN_003cf458(uVar4,uVar10,uVar20,&local_38); + uVar16 = 0; + uVar8 = 0; + do { + pbVar9 = pbVar11 + 1; + bVar5 = *pbVar11; + uVar17 = uVar8 & 0x3f; + uVar8 = (ulong)((int)uVar8 + 7); + uVar16 = uVar16 | ((ulong)bVar5 & 0x7f) << uVar17; + pbVar11 = pbVar9; + } while ((char)bVar5 < '\0'); + uVar8 = CONCAT44(uStack_44,local_48) + local_30; + if (uVar22 < uVar8) break; + if (uVar22 < uVar8 + local_40) { + if (local_38 == (ulong *)0x0) { + return 8; + } + uVar22 = (long)local_38 + local_28; + if (uVar16 == 0) { + if (uVar22 == 0) { + return 8; + } + } + else { + if (uVar22 == 0) { + return 8; + } + pbVar9 = local_10 + (uVar16 - 1); + if (pbVar9 != (byte *)0x0) { + if ((param_2 >> 3 & 1) == 0) { + if (bVar1) { + local_68 = (ulong *)0x0; + /* catch() { ... } // from try @ 003cf450 with catch @ 003cfd5c */ + local_70 = (long *)PTR_typeinfo_00501ca8; + } + else { + local_68 = param_4 + 4; + if ((*param_4 & 1) != 0) { + local_68 = (ulong *)param_4[-10]; + } + local_70 = (long *)local_68[-0xe]; + } + } + else { + local_68 = (ulong *)0x0; + local_70 = (long *)PTR_typeinfo_00501bd0; + } + bVar2 = false; + goto LAB_003cfb88; + } + } + iVar7 = 2; + goto LAB_003cfa94; + } + } while (pbVar9 < local_10); + } + uVar22 = 0; + iVar7 = 1; +LAB_003cfa94: + local_68 = (ulong *)0x0; + pbVar9 = (byte *)0x0; + iVar18 = 0; + goto LAB_003cfaa0; + } + local_60 = param_4[-3]; + uVar22 = param_4[-2]; + iVar18 = *(int *)((long)param_4 + -0x24); + if (uVar22 == 0) { + if ((param_2 >> 3 & 1) != 0) { + /* WARNING: Subroutine does not return */ + std::terminate(); + } +LAB_003cf8c8: + FUN_00419d60(param_4); + } + if ((param_2 >> 3 & 1) == 0) { +LAB_003cf934: + if (iVar18 < 0) { + FUN_003cf5e4(param_5,local_60,&local_30); + local_20 = FUN_003cf568(local_8,param_5); + uVar8 = FUN_003cf568(local_8,param_5); + param_4[-2] = uVar8; + } + goto LAB_003cf8d8; + } + goto LAB_003cf8d4; +LAB_003cfb88: + lVar12 = FUN_003cf418(pbVar9,&local_48); + FUN_003cf418(lVar12,&local_40); + uVar8 = CONCAT44(uStack_44,local_48); + if (uVar8 == 0) { + bVar2 = true; + } + else if ((long)uVar8 < 1) { + if (bVar1 < (local_70 != (long *)0x0 && (param_2 & 8) == 0)) { + bVar5 = FUN_003cf6f0(&local_30,local_70,local_68); + bVar5 = bVar5 ^ 1; + } + else { + uVar17 = 0; + uVar16 = 0; + pbVar11 = (byte *)(local_18 + ~uVar8); + do { + bVar5 = *pbVar11; + uVar8 = uVar16 & 0x3f; + uVar16 = (ulong)((int)uVar16 + 7); + uVar17 = uVar17 | ((ulong)bVar5 & 0x7f) << uVar8; + pbVar11 = pbVar11 + 1; + } while ((char)bVar5 < '\0'); + bVar5 = uVar17 == 0; + } + if (bVar5 != 0) { +LAB_003cfcec: + iVar7 = 3; + iVar18 = local_48; + goto LAB_003cfaa0; + } + } + else { + if (local_8 == 0xff) { + lVar15 = 0; + } + else { + switch(local_8 & 7) { + case 0: + case 4: + lVar15 = uVar8 * -8; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 2: + lVar15 = uVar8 * -2; + break; + case 3: + lVar15 = uVar8 * -4; + } + } + FUN_003cf458(local_8,local_20,local_18 + lVar15,&local_38); + puVar3 = local_38; + if (local_38 == (ulong *)0x0) goto LAB_003cfcec; + if (local_70 != (long *)0x0) { + local_38 = local_68; + cVar6 = (**(code **)(*local_70 + 0x10))(local_70); + if (cVar6 != '\0') { + local_38 = (ulong *)*local_38; + } + cVar6 = (**(code **)(*puVar3 + 0x20))(puVar3,local_70,&local_38,1); + if (cVar6 != '\0') { + local_68 = local_38; + goto LAB_003cfcec; + } + } + } + if (local_40 == 0) goto LAB_003cfd40; + pbVar9 = (byte *)(lVar12 + local_40); + goto LAB_003cfb88; +LAB_003cfd40: + if (!bVar2) { + return 8; + } + iVar7 = 2; + iVar18 = 0; +LAB_003cfaa0: + if ((param_2 & 1) != 0) { + if (iVar7 == 2) { + return 8; + } + if (!bVar1) { + param_4[-3] = local_60; + *(int *)((long)param_4 + -0x24) = iVar18; + param_4[-4] = (ulong)pbVar9; + param_4[-1] = (ulong)local_68; + param_4[-2] = uVar22; + return 6; + } + return 6; + } + if (((param_2 >> 3 & 1) == 0) && (!bVar1)) { + if (iVar7 == 1) goto LAB_003cf8c8; + goto LAB_003cf934; + } + if (iVar7 == 1) { + /* WARNING: Subroutine does not return */ + std::terminate(); + } +LAB_003cf8d4: + if (iVar18 < 0) { + lVar12 = std::unexpected(); + __cxa_begin_catch(); + uStack_110 = *(undefined8 *)(lVar12 + -0x10); + uVar20 = *(undefined8 *)(lVar12 + -0x18); + iVar18 = *(int *)(lVar12 + -0x24); + p_Var19 = *(_func_void **)(lVar12 + -0x38); + __cxxabiv1::__unexpected(*(_func_void **)(lVar12 + -0x40)); + __cxa_begin_catch(); + plVar13 = (long *)__cxa_get_globals_fast(); + puVar14 = (undefined8 *)*plVar13; + puVar21 = puVar14 + 0xe; + if ((puVar14[10] & 1) != 0) { + puVar21 = (undefined8 *)*puVar14; + } + FUN_003cf5e4(0,uVar20,auStack_120); + cVar6 = FUN_003cf6f0(auStack_120,puVar21[-0xe],puVar21,(long)iVar18); + if (cVar6 != '\0') { + uVar20 = __cxa_rethrow(); + __cxa_end_catch(); + __cxa_end_catch(); + /* WARNING: Subroutine does not return */ + _Unwind_Resume(uVar20); + } + cVar6 = FUN_003cf6f0(auStack_120,PTR_typeinfo_00501ef8,0,(long)iVar18); + if (cVar6 != '\0') { + plVar13 = (long *)__cxa_allocate_exception(8); + *plVar13 = (long)(PTR_vtable_00501b18 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar13,PTR_typeinfo_00501ef8,PTR__bad_exception_00501a70); + } + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate(p_Var19); + } +LAB_003cf8d8: + _Unwind_SetGR(param_5,0,param_4); + _Unwind_SetGR(param_5,1,(long)iVar18); + _Unwind_SetIP(param_5,uVar22); + return 7; +} + + +================================================================== + +### FUNC 003cfd6c (240 bytes) name=__cxa_call_unexpected + +void __cxa_call_unexpected(long param_1) + +{ + int iVar1; + char cVar2; + long *plVar3; + undefined8 *puVar4; + _func_void *p_Var5; + undefined8 uVar6; + undefined8 *puVar7; + undefined1 auStack_30 [16]; + undefined8 local_20; + + /* try { // try from 003cfd78 to 004cfd7b has its CatchHandler @ 003cf388 */ + __cxa_begin_catch(); + local_20 = *(undefined8 *)(param_1 + -0x10); + uVar6 = *(undefined8 *)(param_1 + -0x18); + iVar1 = *(int *)(param_1 + -0x24); + p_Var5 = *(_func_void **)(param_1 + -0x38); + __cxxabiv1::__unexpected(*(_func_void **)(param_1 + -0x40)); + __cxa_begin_catch(); + plVar3 = (long *)__cxa_get_globals_fast(); + puVar4 = (undefined8 *)*plVar3; + puVar7 = puVar4 + 0xe; + if ((puVar4[10] & 1) != 0) { + puVar7 = (undefined8 *)*puVar4; + } + FUN_003cf5e4(0,uVar6,auStack_30); + cVar2 = FUN_003cf6f0(auStack_30,puVar7[-0xe],puVar7,(long)iVar1); + if (cVar2 != '\0') { + uVar6 = __cxa_rethrow(); + __cxa_end_catch(); + __cxa_end_catch(); + /* WARNING: Subroutine does not return */ + _Unwind_Resume(uVar6); + } + cVar2 = FUN_003cf6f0(auStack_30,PTR_typeinfo_00501ef8,0,(long)iVar1); + if (cVar2 != '\0') { + plVar3 = (long *)__cxa_allocate_exception(8); + *plVar3 = (long)(PTR_vtable_00501b18 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar3,PTR_typeinfo_00501ef8,PTR__bad_exception_00501a70); + } + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate(p_Var5); +} + + +================================================================== + +### FUNC 003cfe5c (16 bytes) name=__terminate + +/* __cxxabiv1::__terminate(void (*)()) */ + +void __cxxabiv1::__terminate(_func_void *param_1) + +{ + (*param_1)(); + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### FUNC 003cfe98 (28 bytes) name=set_terminate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::set_terminate(void (*)()) */ + +undefined8 std::set_terminate(_func_void *param_1) + +{ + char cVar1; + bool bVar2; + undefined *puVar3; + undefined8 uVar4; + + puVar3 = PTR___terminate_handler_005018d0; + do { + uVar4 = *(undefined8 *)puVar3; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(puVar3,0x10); + if (bVar2) { + *(_func_void **)puVar3 = param_1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + return uVar4; +} + + +================================================================== + +### FUNC 003cfeb4 (16 bytes) name=get_terminate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::get_terminate() */ + +undefined8 std::get_terminate(void) + +{ + return *(undefined8 *)PTR___terminate_handler_005018d0; +} + + +================================================================== + +### FUNC 003cfec4 (16 bytes) name=terminate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::terminate() */ + +void std::terminate(void) + +{ + _func_void *p_Var1; + + p_Var1 = (_func_void *)get_terminate(); + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate(p_Var1); +} + + +================================================================== + +### FUNC 003cfed4 (16 bytes) name=__unexpected + +/* __cxxabiv1::__unexpected(void (*)()) */ + +void __cxxabiv1::__unexpected(_func_void *param_1) + +{ + (*param_1)(); + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003cfee4 (28 bytes) name=set_unexpected + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::set_unexpected(void (*)()) */ + +undefined8 std::set_unexpected(_func_void *param_1) + +{ + char cVar1; + bool bVar2; + undefined *puVar3; + undefined8 uVar4; + + puVar3 = PTR___unexpected_handler_00501c88; + do { + uVar4 = *(undefined8 *)puVar3; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(puVar3,0x10); + if (bVar2) { + *(_func_void **)puVar3 = param_1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + return uVar4; +} + + +================================================================== + +### FUNC 003cff00 (16 bytes) name=get_unexpected + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::get_unexpected() */ + +undefined8 std::get_unexpected(void) + +{ + return *(undefined8 *)PTR___unexpected_handler_00501c88; +} + + +================================================================== + +### FUNC 003cff10 (16 bytes) name=unexpected + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::unexpected() */ + +void std::unexpected(void) + +{ + int iVar1; + char cVar2; + bool bVar3; + uint uVar4; + _func_void *p_Var5; + int *piVar6; + long extraout_x1; + + p_Var5 = (_func_void *)get_unexpected(); + uVar4 = __cxxabiv1::__unexpected(p_Var5); + if (1 < uVar4) { + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate(*(_func_void **)(extraout_x1 + -0x38)); + } + piVar6 = (int *)(extraout_x1 + -0x60); + do { + iVar1 = *piVar6; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar3) { + *piVar6 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 + -1 == 0) { + if (*(code **)(extraout_x1 + -0x48) != (code *)0x0) { + (**(code **)(extraout_x1 + -0x48))(extraout_x1 + 0x20); + } + __cxa_free_exception(extraout_x1 + 0x20); + return; + } + return; +} + + +================================================================== + +### FUNC 003cff20 (100 bytes) name=FUN_003cff20 + +void FUN_003cff20(uint param_1,long param_2) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + + if (1 < param_1) { + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate(*(_func_void **)(param_2 + -0x38)); + } + piVar4 = (int *)(param_2 + -0x60); + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 + -1 == 0) { + if (*(code **)(param_2 + -0x48) != (code *)0x0) { + (**(code **)(param_2 + -0x48))(param_2 + 0x20); + } + __cxa_free_exception(param_2 + 0x20); + return; + } + return; +} + + +================================================================== + +### FUNC 003cff84 (140 bytes) name=__cxa_throw + +void __cxa_throw(long param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + undefined8 uVar2; + + lVar1 = __cxa_get_globals(); + *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1; + *(undefined8 *)(param_1 + -0x68) = param_3; + *(undefined8 *)(param_1 + -0x70) = param_2; + *(undefined4 *)(param_1 + -0x80) = 1; + uVar2 = std::get_unexpected(); + *(undefined8 *)(param_1 + -0x60) = uVar2; + uVar2 = std::get_terminate(); + *(undefined8 *)(param_1 + -0x58) = uVar2; + *(undefined8 *)(param_1 + -0x20) = 0x474e5543432b2b00; + *(code **)(param_1 + -0x18) = FUN_003cff20; + _Unwind_RaiseException(param_1 + -0x20); + __cxa_begin_catch(param_1 + -0x20); + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003d0010 (112 bytes) name=__cxa_rethrow + +void __cxa_rethrow(void) + +{ + long *plVar1; + long lVar2; + + plVar1 = (long *)__cxa_get_globals(); + lVar2 = *plVar1; + *(int *)(plVar1 + 1) = (int)plVar1[1] + 1; + if (lVar2 != 0) { + if (*(long *)(lVar2 + 0x50) + 0xb8b1aabcbcd4d500U < 2) { + *(int *)(lVar2 + 0x28) = -*(int *)(lVar2 + 0x28); + } + else { + *plVar1 = 0; + } + _Unwind_Resume_or_Rethrow(lVar2 + 0x50); + __cxa_begin_catch(lVar2 + 0x50); + } + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003d0080 (348 bytes) name=__cxa_guard_acquire + +undefined8 __cxa_guard_acquire(uint *param_1) + +{ + uint uVar1; + uint uVar2; + char cVar3; + bool bVar4; + undefined8 uVar5; + long *plVar6; + + if (PTR___google_potentially_blocking_region_begin_00501d90 != (undefined *)0x0) { + __google_potentially_blocking_region_begin(); + } + if ((char)*param_1 == '\0') { + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { +LAB_003d00dc: + uVar1 = *param_1; + if (uVar1 == 0) goto code_r0x003d00e8; + goto LAB_003d00f0; + } + if ((char)*param_1 == '\0') { + if (*(char *)((long)param_1 + 1) != '\0') { + plVar6 = (long *)__cxa_allocate_exception(8); + *plVar6 = (long)(PTR_vtable_00501fe0 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar6,PTR_typeinfo_00501900,PTR__recursive_init_error_00501eb0); + } + uVar5 = 1; + *(undefined1 *)((long)param_1 + 1) = 1; + goto LAB_003d0108; + } + } +LAB_003d0104: + uVar5 = 0; +LAB_003d0108: + if (PTR___google_potentially_blocking_region_end_00501ae0 != (undefined *)0x0) { + __google_potentially_blocking_region_end(); + } + return uVar5; +code_r0x003d00e8: + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(param_1,0x10); + if (bVar4) { + *param_1 = 0x100; + cVar3 = ExclusiveMonitorsStatus(); + } + if (cVar3 == '\0') { +LAB_003d00f0: + if (uVar1 == 0) { + uVar5 = 1; + goto LAB_003d0108; + } + if (uVar1 != 1) { + if (uVar1 == 0x100) { + do { + uVar2 = *param_1; + if (uVar2 != 0x100) break; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(param_1,0x10); + if (bVar4) { + *param_1 = 0x10100; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + uVar1 = 0x10100; + if (uVar2 != 0x100) { + if (uVar2 == 1) goto LAB_003d0104; + if (uVar2 == 0) goto LAB_003d00dc; + } + } + syscall(0x62,param_1,0,(ulong)uVar1,0); + goto LAB_003d00dc; + } + goto LAB_003d0104; + } + goto LAB_003d00dc; +} + + +================================================================== + +### FUNC 003d01f8 (100 bytes) name=__cxa_guard_abort + +void __cxa_guard_abort(uint *param_1) + +{ + uint uVar1; + char cVar2; + bool bVar3; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(undefined1 *)((long)param_1 + 1) = 0; + return; + } + do { + uVar1 = *param_1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(param_1,0x10); + if (bVar3) { + *param_1 = 0; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((uVar1 & 0x10000) != 0) { + syscall(0x62,param_1,1,0x7fffffff); + return; + } + return; +} + + +================================================================== + +### FUNC 003d026c (112 bytes) name=__cxa_guard_release + +void __cxa_guard_release(uint *param_1) + +{ + uint uVar1; + char cVar2; + bool bVar3; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(undefined1 *)((long)param_1 + 1) = 0; + *(undefined1 *)param_1 = 1; + return; + } + do { + uVar1 = *param_1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(param_1,0x10); + if (bVar3) { + *param_1 = 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if ((uVar1 & 0x10000) != 0) { + syscall(0x62,param_1,1,0x7fffffff); + return; + } + return; +} + + +================================================================== + +### FUNC 003d02ec (20 bytes) name=~recursive_init_error + +/* __gnu_cxx::recursive_init_error::~recursive_init_error() */ + +void __thiscall __gnu_cxx::recursive_init_error::~recursive_init_error(recursive_init_error *this) + +{ + *(undefined **)this = PTR_vtable_00501fe0 + 0x10; + std::exception::~exception((exception *)this); + return; +} + + +================================================================== + +### FUNC 003d0300 (36 bytes) name=~recursive_init_error + +/* __gnu_cxx::recursive_init_error::~recursive_init_error() */ + +void __thiscall __gnu_cxx::recursive_init_error::~recursive_init_error(recursive_init_error *this) + +{ + ~recursive_init_error(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003d0324 (112 bytes) name=operator.new + +/* operator new(unsigned long) */ + +void * operator_new(ulong param_1) + +{ + void *pvVar1; + code *pcVar2; + long *plVar3; + + if (param_1 == 0) { + param_1 = 1; + } + pvVar1 = malloc(param_1); + while( true ) { + if (pvVar1 != (void *)0x0) { + return pvVar1; + } + pcVar2 = (code *)std::get_new_handler(); + if (pcVar2 == (code *)0x0) break; + (*pcVar2)(); + pvVar1 = malloc(param_1); + } + plVar3 = (long *)__cxa_allocate_exception(8); + *plVar3 = (long)(PTR_vtable_00501dd0 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar3,PTR_typeinfo_00501950,PTR__bad_alloc_005019e0); +} + + +================================================================== + +### FUNC 003d0394 (20 bytes) name=operator.new[] + +/* operator new[](unsigned long) */ + +void * operator_new__(ulong param_1) + +{ + void *pvVar1; + + pvVar1 = operator_new(param_1); + return pvVar1; +} + + +================================================================== + +### FUNC 003d03b8 (32 bytes) name=__cxa_pure_virtual + +void __cxa_pure_virtual(void) + +{ + write(2,"pure virtual method called\n",0x1b); + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003d03d8 (32 bytes) name=__cxa_deleted_virtual + +void __cxa_deleted_virtual(void) + +{ + write(2,"deleted virtual method called\n",0x1e); + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 003d03f8 (20 bytes) name=~__si_class_type_info + +/* __cxxabiv1::__si_class_type_info::~__si_class_type_info() */ + +void __thiscall __cxxabiv1::__si_class_type_info::~__si_class_type_info(__si_class_type_info *this) + +{ + *(undefined **)this = PTR_vtable_00501e60 + 0x10; + __class_type_info::~__class_type_info((__class_type_info *)this); + return; +} + + +================================================================== + +### FUNC 003d040c (36 bytes) name=~__si_class_type_info + +/* __cxxabiv1::__si_class_type_info::~__si_class_type_info() */ + +void __thiscall __cxxabiv1::__si_class_type_info::~__si_class_type_info(__si_class_type_info *this) + +{ + ~__si_class_type_info(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003d0430 (344 bytes) name=__do_dyncast + +/* __cxxabiv1::__si_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, + __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void + const*, __cxxabiv1::__class_type_info::__dyncast_result&) const */ + +undefined1 __thiscall +__cxxabiv1::__si_class_type_info::__do_dyncast + (__si_class_type_info *this,long param_1,undefined8 param_3,long param_4,long param_5, + long param_6,long param_7,long *param_8) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + undefined4 uVar4; + char *__s1; + + __s1 = *(char **)(this + 8); + if (__s1 == *(char **)(param_4 + 8)) { +LAB_003d04d4: + *param_8 = param_5; + *(int *)(param_8 + 1) = (int)param_3; + if (-1 < param_1) { + uVar4 = 6; + if (param_7 != param_5 + param_1) { + uVar4 = 1; + } + *(undefined4 *)(param_8 + 2) = uVar4; + return 0; + } + uVar2 = 0; + if (param_1 == -2) { + *(undefined4 *)(param_8 + 2) = 1; + } + } + else { + cVar1 = *__s1; + if (cVar1 != '*') { + iVar3 = strcmp(__s1,*(char **)(param_4 + 8)); + if (iVar3 == 0) goto LAB_003d04d4; + } + if (param_5 == param_7) { + if (__s1 == *(char **)(param_6 + 8)) { +LAB_003d0570: + *(int *)((long)param_8 + 0xc) = (int)param_3; + /* try { // try from 003d0584 to 004d0587 has its CatchHandler @ 003d0ebc */ + return 0; + } + if (cVar1 != '*') { + iVar3 = strcmp(__s1,*(char **)(param_6 + 8)); + if (iVar3 == 0) goto LAB_003d0570; + } + } + /* catch() { ... } // from try @ 003d0ed8 with catch @ 003d04b8 */ + uVar2 = (**(code **)(**(long **)(this + 0x10) + 0x38)) + (*(long **)(this + 0x10),param_1,param_3,param_4,param_5,param_6,param_7); + } + return uVar2; +} + + +================================================================== + +### FUNC 003d0588 (148 bytes) name=__do_find_public_src + +/* __cxxabiv1::__si_class_type_info::__do_find_public_src(long, void const*, + __cxxabiv1::__class_type_info const*, void const*) const */ + +undefined4 __thiscall +__cxxabiv1::__si_class_type_info::__do_find_public_src + (__si_class_type_info *this,long param_1,void *param_2,__class_type_info *param_3, + void *param_4) + +{ + undefined4 uVar1; + int iVar2; + char *__s1; + + if (param_4 == param_2) { + __s1 = *(char **)(this + 8); + if (__s1 == *(char **)(param_3 + 8)) { + return 6; + } + if ((*__s1 != '*') && (iVar2 = strcmp(__s1,*(char **)(param_3 + 8)), iVar2 == 0)) { + return 6; + } + } + uVar1 = (**(code **)(**(long **)(this + 0x10) + 0x40)) + (*(long **)(this + 0x10),param_1,param_2,param_3,param_4); + return uVar1; +} + + +================================================================== + +### FUNC 003d061c (96 bytes) name=__do_upcast + +/* __cxxabiv1::__si_class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, + __cxxabiv1::__class_type_info::__upcast_result&) const */ + +char __thiscall +__cxxabiv1::__si_class_type_info::__do_upcast + (__si_class_type_info *this,__class_type_info *param_1,void *param_2, + __upcast_result *param_3) + +{ + char cVar1; + + cVar1 = __class_type_info::__do_upcast((__class_type_info *)this,param_1,param_2,param_3); + if (cVar1 == '\0') { + cVar1 = (**(code **)(**(long **)(this + 0x10) + 0x30)) + (*(long **)(this + 0x10),param_1,param_2,param_3); + } + return cVar1; +} + + +================================================================== + +### FUNC 003d067c (4 bytes) name=FUN_003d067c + +void FUN_003d067c(void) + +{ + return; +} + + +================================================================== + +### FUNC 003d0680 (8 bytes) name=FUN_003d0680 + +undefined8 FUN_003d0680(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003d0688 (8 bytes) name=FUN_003d0688 + +undefined8 FUN_003d0688(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003d0690 (8 bytes) name=FUN_003d0690 + +undefined8 FUN_003d0690(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003d0698 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 003d069c (80 bytes) name=FUN_003d069c + +bool FUN_003d069c(long param_1,long param_2) + +{ + int iVar1; + char *__s1; + + __s1 = *(char **)(param_1 + 8); + if (__s1 == *(char **)(param_2 + 8)) { + return true; + } + if (*__s1 != '*') { + iVar1 = strcmp(__s1,*(char **)(param_2 + 8)); + return iVar1 == 0; + } + return false; +} + + +================================================================== + +### FUNC 003d06ec (20 bytes) name=~__vmi_class_type_info + +/* __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info() */ + +void __thiscall +__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__vmi_class_type_info *this) + +{ + *(undefined **)this = PTR_vtable_00501ff0 + 0x10; + __class_type_info::~__class_type_info((__class_type_info *)this); + return; +} + + +================================================================== + +### FUNC 003d0700 (36 bytes) name=~__vmi_class_type_info + +/* __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info() */ + +void __thiscall +__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__vmi_class_type_info *this) + +{ + ~__vmi_class_type_info(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 003d0724 (268 bytes) name=__do_find_public_src + +/* __cxxabiv1::__vmi_class_type_info::__do_find_public_src(long, void const*, + __cxxabiv1::__class_type_info const*, void const*) const */ + +uint __thiscall +__cxxabiv1::__vmi_class_type_info::__do_find_public_src + (__vmi_class_type_info *this,long param_1,void *param_2,__class_type_info *param_3, + void *param_4) + +{ + bool bVar1; + uint uVar2; + int iVar3; + ulong uVar4; + char *__s1; + long lVar5; + __vmi_class_type_info *p_Var6; + ulong uVar7; + ulong uVar8; + + if (param_2 == param_4) { + __s1 = *(char **)(this + 8); + if (__s1 == *(char **)(param_3 + 8)) { + return 6; + } + if ((*__s1 != '*') && (iVar3 = strcmp(__s1,*(char **)(param_3 + 8)), iVar3 == 0)) { + return 6; + } + } + uVar8 = (ulong)*(uint *)(this + 0x14); + uVar7 = 1; + p_Var6 = this + uVar8 * 0x10; + if (uVar8 != 0) { + do { + uVar4 = *(ulong *)(p_Var6 + 0x10); + lVar5 = (long)uVar4 >> 8; + if ((((uint)uVar4 >> 1 & 1) != 0) && (((uVar4 & 1) == 0 || (param_1 != -3)))) { + if ((uVar4 & 1) != 0) { + lVar5 = *(long *)(*(long *)param_2 + lVar5); + } + uVar2 = (**(code **)(**(long **)(p_Var6 + 8) + 0x40)) + (*(long **)(p_Var6 + 8),param_1,(long)param_2 + lVar5,param_3,param_4); + if (3 < (int)uVar2) { + return uVar2 | (uint)(uVar4 & 1); + } + } + bVar1 = uVar7 != uVar8; + p_Var6 = p_Var6 + -0x10; + uVar7 = uVar7 + 1; + } while (bVar1); + } + return 1; +} + + +================================================================== + +### FUNC 003d0830 (1464 bytes) name=__do_dyncast + +/* __cxxabiv1::__vmi_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, + __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void + const*, __cxxabiv1::__class_type_info::__dyncast_result&) const */ + +char __thiscall +__cxxabiv1::__vmi_class_type_info::__do_dyncast + (__vmi_class_type_info *this,long param_1,uint param_3,long *param_4,long *param_5, + long param_6,long *param_7,long *param_8) + +{ + byte bVar1; + bool bVar2; + byte bVar3; + char cVar4; + int iVar5; + uint uVar6; + uint uVar7; + ulong uVar8; + uint uVar9; + undefined4 uVar10; + char *__s2; + long lVar11; + ulong uVar12; + char *__s1; + ulong uVar13; + char cVar14; + ulong uVar15; + __vmi_class_type_info *p_Var16; + long local_18; + uint local_10; + uint local_c; + uint local_8; + uint local_4; + + if ((*(uint *)((long)param_8 + 0x14) >> 4 & 1) != 0) { + *(undefined4 *)((long)param_8 + 0x14) = *(undefined4 *)(this + 0x10); + } + __s1 = *(char **)(this + 8); + if (param_5 == param_7) { + if (__s1 == *(char **)(param_6 + 8)) { +LAB_003d0b68: + *(uint *)((long)param_8 + 0xc) = param_3; + return '\0'; + } + if (*__s1 == '*') { + if (__s1 != (char *)param_4[1]) goto LAB_003d08bc; + goto LAB_003d0bf0; + } + iVar5 = strcmp(__s1,*(char **)(param_6 + 8)); + if (iVar5 == 0) goto LAB_003d0b68; + __s2 = (char *)param_4[1]; + if (__s1 == __s2) goto LAB_003d0bf0; + } + else { + __s2 = (char *)param_4[1]; + if (__s2 == __s1) goto LAB_003d0bf0; + if (*__s1 == '*') goto LAB_003d08bc; + } + iVar5 = strcmp(__s1,__s2); + if (iVar5 != 0) { +LAB_003d08bc: + cVar14 = '\0'; + bVar3 = 0; + uVar12 = (long)param_7 - param_1; + if (param_1 < 0) { + uVar12 = 0; + } + bVar2 = true; + do { + uVar15 = 0; + uVar13 = (ulong)*(uint *)(this + 0x14); + p_Var16 = this + uVar13 * 0x10; + if (uVar13 != 0) { + do { + local_4 = *(uint *)((long)param_8 + 0x14); + uVar8 = *(ulong *)(p_Var16 + 0x10); + local_18 = 0; + local_10 = 0; + lVar11 = (long)uVar8 >> 8; + local_c = 0; + local_8 = 0; + uVar9 = param_3; + if ((uVar8 & 1) != 0) { + lVar11 = *(long *)(*param_5 + lVar11); + uVar9 = param_3 | 1; + } + if ((uVar12 == 0) || (uVar12 < (ulong)((long)param_5 + lVar11) != bVar2)) { + if (((uint)uVar8 >> 1 & 1) == 0) { + if ((param_1 == -2) && ((local_4 & 3) == 0)) goto LAB_003d09d8; + uVar9 = uVar9 & 0xfffffffd; + } + cVar4 = (**(code **)(**(long **)(p_Var16 + 8) + 0x38)) + (*(long **)(p_Var16 + 8),param_1,uVar9,param_4,(long)param_5 + lVar11, + param_6,param_7,&local_18); + uVar7 = local_8; + uVar9 = local_c | *(uint *)((long)param_8 + 0xc); + *(uint *)((long)param_8 + 0xc) = uVar9; + if ((local_8 & 0xfffffffb) == 2) { + *param_8 = local_18; + *(uint *)(param_8 + 1) = local_10; + *(uint *)(param_8 + 2) = local_8; + return cVar4; + } + lVar11 = *param_8; + if (cVar14 == '\0') { + if (lVar11 == 0) { + *param_8 = local_18; + *(uint *)(param_8 + 1) = local_10; + cVar14 = cVar4; + if (((uVar9 != 0) && (local_18 != 0)) && ((*(uint *)(this + 0x10) & 1) == 0)) { + return cVar4; + } + } + else { +LAB_003d09bc: + if (lVar11 == local_18) { + *(uint *)(param_8 + 1) = *(uint *)(param_8 + 1) | local_10; + } + else if ((cVar4 != '\0') || (local_18 != 0)) goto LAB_003d0a30; + } + } + else { + if (lVar11 != 0) goto LAB_003d09bc; + if (local_18 == 0) goto LAB_003d09d0; +LAB_003d0a30: + uVar6 = *(uint *)(param_8 + 2); + if (((int)uVar9 < 4) || + (((uVar9 & 1) != 0 && ((*(uint *)((long)param_8 + 0x14) >> 1 & 1) != 0)))) { + if (0 < (int)uVar6) { +LAB_003d0a58: + if (0 < (int)uVar7) { +LAB_003d0a60: + uVar9 = uVar6 ^ uVar7; + local_8 = uVar7; + goto joined_r0x003d0aec; + } + if ((3 < (int)uVar6) && + (((uVar6 & 1) == 0 || ((*(uint *)(this + 0x10) >> 1 & 1) == 0)))) { + if (3 < (int)(uVar6 ^ 1)) { + uVar9 = uVar6 & 2; + goto LAB_003d0a78; + } + goto LAB_003d0afc; + } + if (param_1 < 0) { + if (param_1 == -2) goto LAB_003d0b20; + uVar7 = (**(code **)(*param_4 + 0x40))(param_4,param_1,local_18,param_6,param_7) + ; + goto LAB_003d0a60; + } + if (param_7 != (long *)(local_18 + param_1)) { + uVar7 = uVar6 ^ 1; + goto LAB_003d0b24; + } + local_8 = uVar6 & 6; + if (3 < (int)(uVar6 ^ 6)) goto LAB_003d0da0; +LAB_003d0af4: + if (3 < (int)local_8) { + *param_8 = 0; + *(undefined4 *)(param_8 + 2) = 2; + return '\x01'; + } + goto LAB_003d0afc; + } + if (((int)local_8 < 4) || + (((local_8 & 1) != 0 && ((*(uint *)(this + 0x10) >> 1 & 1) != 0)))) { + if (param_1 < 0) { + if (param_1 != -2) { + uVar6 = (**(code **)(*param_4 + 0x40))(param_4,param_1,lVar11,param_6,param_7) + ; + goto LAB_003d0a58; + } + if ((int)local_8 < 1) goto LAB_003d0b00; +LAB_003d0c88: + uVar6 = 1; + goto LAB_003d0a60; + } + if (param_7 == (long *)(lVar11 + param_1)) { + uVar6 = 6; + if (0 < (int)local_8) goto LAB_003d0a60; + goto LAB_003d0a74; + } + if (0 < (int)local_8) goto LAB_003d0c88; + if (param_7 != (long *)(local_18 + param_1)) { + uVar6 = 1; + uVar7 = 0; + goto LAB_003d0b24; + } +LAB_003d0da0: + local_8 = 0; + uVar9 = 2; + } + else { + uVar6 = 1; + if ((int)(local_8 ^ 1) < 4) goto LAB_003d0af0; +LAB_003d0aac: + uVar9 = local_8 & 2; + } + *param_8 = local_18; + cVar14 = '\0'; + *(uint *)(param_8 + 1) = local_10; + uVar6 = local_8; +LAB_003d0a78: + *(uint *)(param_8 + 2) = uVar6; + if (uVar9 != 0) { + return '\0'; + } + if ((uVar6 & 1) == 0) { + return '\0'; + } + uVar9 = *(uint *)((long)param_8 + 0xc); + } + else { + if (uVar6 == 0) { + if (local_8 != 0) { + uVar6 = 1; +LAB_003d0adc: + uVar9 = uVar6 ^ local_8; +joined_r0x003d0aec: + if (3 < (int)uVar9) { + if (3 < (int)local_8) goto LAB_003d0aac; +LAB_003d0a74: + uVar9 = uVar6 & 2; + goto LAB_003d0a78; + } +LAB_003d0af0: + local_8 = uVar6 & local_8; + goto LAB_003d0af4; + } + } + else { + if (local_8 != 0) goto LAB_003d0adc; +LAB_003d0b20: + uVar7 = uVar6 ^ 1; +LAB_003d0b24: + uVar9 = uVar6 & 2; + if (3 < (int)uVar7) goto LAB_003d0a78; +LAB_003d0afc: + uVar9 = *(uint *)((long)param_8 + 0xc); + } +LAB_003d0b00: + *param_8 = 0; + *(undefined4 *)(param_8 + 2) = 1; + cVar14 = '\x01'; + } + } +LAB_003d09d0: + if (uVar9 == 4) { + return cVar14; + } + } + else { + bVar3 = 1; + } +LAB_003d09d8: + uVar15 = uVar15 + 1; + p_Var16 = p_Var16 + -0x10; + } while (uVar13 != uVar15); + } + bVar1 = bVar3 & bVar2; + bVar3 = 1; + bVar2 = false; + if (bVar1 == 0) { + return cVar14; + } + } while( true ); + } +LAB_003d0bf0: + *param_8 = (long)param_5; + *(uint *)(param_8 + 1) = param_3; + if (-1 < param_1) { + uVar10 = 6; + if (param_7 != (long *)((long)param_5 + param_1)) { + uVar10 = 1; + } + *(undefined4 *)(param_8 + 2) = uVar10; + return '\0'; + } + if (param_1 == -2) { + *(undefined4 *)(param_8 + 2) = 1; + } + return '\0'; +} + + +================================================================== + +### FUNC 003d0de8 (576 bytes) name=__do_upcast + +/* __cxxabiv1::__vmi_class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, + __cxxabiv1::__class_type_info::__upcast_result&) const */ + +char __thiscall +__cxxabiv1::__vmi_class_type_info::__do_upcast + (__vmi_class_type_info *this,__class_type_info *param_1,void *param_2, + __upcast_result *param_3) + +{ + uint uVar1; + char cVar2; + int iVar3; + char *__s1; + ulong uVar4; + long lVar5; + __vmi_class_type_info *p_Var6; + uint uVar7; + ulong uVar8; + ulong uVar9; + long local_18; + uint local_10; + uint local_c; + long local_8; + + cVar2 = __class_type_info::__do_upcast((__class_type_info *)this,param_1,param_2,param_3); + if (cVar2 == '\0') { + uVar7 = *(uint *)(param_3 + 0xc); + if ((uVar7 >> 4 & 1) != 0) { + uVar7 = *(uint *)(this + 0x10); + } + uVar9 = 0; + uVar8 = (ulong)*(uint *)(this + 0x14); + p_Var6 = this + uVar8 * 0x10; + if (uVar8 != 0) { + do { + uVar4 = *(ulong *)(p_Var6 + 0x10); + local_18 = 0; + local_10 = 0; + local_8 = 0; + if (((uVar4 >> 1 & 1) != 0) || ((uVar7 & 1) != 0)) { + if (param_2 == (void *)0x0) { + lVar5 = 0; + } + else { + lVar5 = (long)uVar4 >> 8; + if ((uVar4 & 1) != 0) { + lVar5 = *(long *)(*(long *)param_2 + lVar5); + } + lVar5 = (long)param_2 + lVar5; + } + local_c = uVar7; + cVar2 = (**(code **)(**(long **)(p_Var6 + 8) + 0x30)) + (*(long **)(p_Var6 + 8),param_1,lVar5,&local_18); + if (cVar2 != '\0') { + /* catch() { ... } // from try @ 003d0584 with catch @ 003d0ebc */ + if (((uVar4 & 1) != 0) && (local_8 == 0x10)) { + local_8 = *(long *)(p_Var6 + 8); + } + if (((uVar4 >> 1 & 1) == 0) && (3 < (int)local_10)) { + /* try { // try from 003d0ed8 to 004d0edb has its CatchHandler @ 003d04b8 */ + local_10 = local_10 & 0xfffffffd; + /* catch() { ... } // from try @ 003d18cc with catch @ 003d0edc */ + } + lVar5 = *(long *)(param_3 + 0x10); + if (lVar5 == 0) { + *(long *)param_3 = local_18; + *(ulong *)(param_3 + 8) = CONCAT44(local_c,local_10); + uVar1 = *(uint *)(param_3 + 8); + *(long *)(param_3 + 0x10) = local_8; + if ((int)uVar1 < 4) { + return cVar2; + } + if ((uVar1 >> 1 & 1) == 0) { + if ((uVar1 & 1) == 0) { + return cVar2; + } + uVar1 = *(uint *)(this + 0x10) >> 1; + } + else { + uVar1 = *(uint *)(this + 0x10); + } + if ((uVar1 & 1) == 0) { + return cVar2; + } + } + else { + if (*(long *)param_3 != local_18) { + *(undefined8 *)param_3 = 0; + *(undefined4 *)(param_3 + 8) = 2; + return cVar2; + } + if (*(long *)param_3 == 0) { + if ((local_8 == 0x10) || (lVar5 == 0x10)) { +LAB_003d0fc8: + *(undefined4 *)(param_3 + 8) = 2; + return cVar2; + } + __s1 = *(char **)(local_8 + 8); + /* try { // try from 003d0fa4 to 004d0fa7 has its CatchHandler @ 003d18b0 */ + if ((__s1 != *(char **)(lVar5 + 8)) && + ((*__s1 == '*' || (iVar3 = strcmp(__s1,*(char **)(lVar5 + 8)), iVar3 != 0)))) + goto LAB_003d0fc8; + } + *(uint *)(param_3 + 8) = *(uint *)(param_3 + 8) | local_10; + } + } + } + uVar9 = uVar9 + 1; + p_Var6 = p_Var6 + -0x10; + } while (uVar8 != uVar9); + } + cVar2 = *(int *)(param_3 + 8) != 0; + } + return cVar2; +} + + +================================================================== + +### FUNC 003d1028 (8 bytes) name=FUN_003d1028 + +undefined4 FUN_003d1028(undefined8 param_1,undefined4 param_2) + +{ + return param_2; +} + + +================================================================== + +### FUNC 003d1030 (68 bytes) name=FUN_003d1030 + +void FUN_003d1030(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fcdb0; + FUN_0041a634(param_1 + 2); + if ((*(char *)(param_1 + 3) != '\0') && ((void *)param_1[6] != (void *)0x0)) { + operator_delete__((void *)param_1[6]); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003d1088 (64 bytes) name=FUN_003d1088 + +void FUN_003d1088(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fce10; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501fd8 + 0x10); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003d10ec (44 bytes) name=FUN_003d10ec + +long FUN_003d10ec(undefined8 param_1,void *param_2,long param_3,undefined8 param_4,void *param_5) + +{ + memcpy(param_5,param_2,param_3 - (long)param_2); + return param_3; +} + + +================================================================== + +### FUNC 003d1118 (44 bytes) name=FUN_003d1118 + +long FUN_003d1118(undefined8 param_1,void *param_2,long param_3,void *param_4) + +{ + memcpy(param_4,param_2,param_3 - (long)param_2); + return param_3; +} + + +================================================================== + +### FUNC 003d1144 (64 bytes) name=FUN_003d1144 + +void FUN_003d1144(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fce10; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501fd8 + 0x10); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003d11a8 (76 bytes) name=FUN_003d11a8 + +void FUN_003d11a8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fcdb0; + FUN_0041a634(param_1 + 2); + if ((*(char *)(param_1 + 3) != '\0') && ((void *)param_1[6] != (void *)0x0)) { + operator_delete__((void *)param_1[6]); + } + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d1208 (72 bytes) name=FUN_003d1208 + +void FUN_003d1208(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fce10; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501fd8 + 0x10); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d1274 (72 bytes) name=FUN_003d1274 + +void FUN_003d1274(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fce10; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501fd8 + 0x10); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d12e0 (356 bytes) name=FUN_003d12e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_003d12e0(long *param_1) + +{ + char cVar1; + char cVar2; + int iVar3; + undefined8 *puVar4; + undefined8 *puVar5; + long lVar6; + long lVar7; + char local_101; + undefined8 uStack_100; + undefined8 auStack_f8 [31]; + + puVar4 = &uStack_100; + lVar6 = _DAT_003d1450; + lVar7 = _UNK_003d1458; + do { + cVar1 = (char)lVar6; + cVar2 = (char)lVar7; + lVar6 = lVar6 + _DAT_003d1460; + lVar7 = lVar7 + _UNK_003d1468; + puVar5 = puVar4 + 2; + puVar4[1] = CONCAT17(cVar2 + (char)_UNK_003d14d8, + CONCAT16(cVar1 + (char)_DAT_003d14d0, + CONCAT15(cVar2 + (char)_UNK_003d14c8, + CONCAT14(cVar1 + (char)_DAT_003d14c0, + CONCAT13(cVar2 + (char)_UNK_003d14b8, + CONCAT12(cVar1 + (char)_DAT_003d14b0, + CONCAT11(cVar2 + (char) + _UNK_003d14a8,cVar1 + (char)_DAT_003d14a0))))))); + *puVar4 = CONCAT17(cVar2 + (char)_UNK_003d1498, + CONCAT16(cVar1 + (char)_DAT_003d1490, + CONCAT15(cVar2 + (char)_UNK_003d1488, + CONCAT14(cVar1 + (char)_DAT_003d1480, + CONCAT13(cVar2 + (char)_UNK_003d1478, + CONCAT12(cVar1 + (char)_DAT_003d1470, + CONCAT11(cVar2,cVar1))))))); + puVar4 = puVar5; + } while (puVar5 != (undefined8 *)&stack0x00000000); + (**(code **)(*param_1 + 0x48)) + (param_1,&uStack_100,&stack0x00000000,0,(void *)((long)param_1 + 0x139)); + *(undefined1 *)((long)param_1 + 0x239) = 1; + iVar3 = memcmp(&uStack_100,(void *)((long)param_1 + 0x139),0x100); + if ((iVar3 == 0) && + ((**(code **)(*param_1 + 0x48))(param_1,&uStack_100,(long)&uStack_100 + 1,1,&local_101), + local_101 != '\x01')) { + return; + } + *(undefined1 *)((long)param_1 + 0x239) = 2; + return; +} + + +================================================================== + +### FUNC 003d14e0 (288 bytes) name=FUN_003d14e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_003d14e0(long *param_1) + +{ + char cVar1; + char cVar2; + int iVar3; + undefined8 *puVar4; + undefined8 *puVar5; + long lVar6; + long lVar7; + undefined8 auStack_100 [32]; + + puVar4 = auStack_100; + lVar6 = _DAT_003d1600; + lVar7 = _UNK_003d1608; + do { + cVar1 = (char)lVar6; + cVar2 = (char)lVar7; + lVar6 = lVar6 + _DAT_003d1610; + lVar7 = lVar7 + _UNK_003d1618; + puVar5 = puVar4 + 2; + puVar4[1] = CONCAT17(cVar2 + (char)_UNK_003d1688, + CONCAT16(cVar1 + (char)_DAT_003d1680, + CONCAT15(cVar2 + (char)_UNK_003d1678, + CONCAT14(cVar1 + (char)_DAT_003d1670, + CONCAT13(cVar2 + (char)_UNK_003d1668, + CONCAT12(cVar1 + (char)_DAT_003d1660, + CONCAT11(cVar2 + (char) + _UNK_003d1658,cVar1 + (char)_DAT_003d1650))))))); + *puVar4 = CONCAT17(cVar2 + (char)_UNK_003d1648, + CONCAT16(cVar1 + (char)_DAT_003d1640, + CONCAT15(cVar2 + (char)_UNK_003d1638, + CONCAT14(cVar1 + (char)_DAT_003d1630, + CONCAT13(cVar2 + (char)_UNK_003d1628, + CONCAT12(cVar1 + (char)_DAT_003d1620, + CONCAT11(cVar2,cVar1))))))); + puVar4 = puVar5; + } while (puVar5 != (undefined8 *)&stack0x00000000); + (**(code **)(*param_1 + 0x38)) + (param_1,auStack_100,&stack0x00000000,(void *)((long)param_1 + 0x39)); + *(undefined1 *)(param_1 + 7) = 1; + iVar3 = memcmp(auStack_100,(void *)((long)param_1 + 0x39),0x100); + if (iVar3 != 0) { + *(undefined1 *)(param_1 + 7) = 2; + } + return; +} + + +================================================================== + +### FUNC 003d1690 (68 bytes) name=FUN_003d1690 + +void FUN_003d1690(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fce10; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + *(undefined1 *)(param_1 + 3) = 0; + FUN_003d20ec(param_1); + return; +} + + +================================================================== + +### FUNC 003d16f8 (84 bytes) name=FUN_003d16f8 + +void FUN_003d16f8(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + undefined8 local_8; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fce10; + local_8 = param_2; + uVar1 = FUN_0041a63c(&local_8); + *(undefined1 *)(param_1 + 3) = 0; + param_1[2] = uVar1; + FUN_003d20ec(param_1); + return; +} + + +================================================================== + +### FUNC 003d174c (184 bytes) name=FUN_003d174c + +void FUN_003d174c(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 uVar2; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fce10; + uVar2 = FUN_003ed450(); + param_1[2] = uVar2; + *(undefined1 *)(param_1 + 3) = 0; + FUN_003d20ec(param_1); + *param_1 = &PTR_FUN_004fce90; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + FUN_003d20ec(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 003d183c (20 bytes) name=FUN_003d183c + +long FUN_003d183c(void) + +{ + return *(long *)PTR__ctype__00501e78 + 1; +} + + +================================================================== + +### FUNC 003d1850 (152 bytes) name=FUN_003d1850 + +void FUN_003d1850(long *param_1,undefined8 param_2,long param_3,byte param_4,long param_5) + +{ + undefined *puVar1; + + *(uint *)(param_1 + 1) = (uint)(param_5 != 0); + puVar1 = PTR_DAT_00501f28; + param_1[4] = 0; + *(byte *)(param_1 + 3) = param_4 & param_3 != 0; + *param_1 = (long)(puVar1 + 0x10); + param_1[5] = 0; + if (param_3 == 0) { + param_3 = *(long *)PTR__ctype__00501e78 + 1; + } + param_1[6] = param_3; + memset((void *)((long)param_1 + 0x39),0,0x100); + /* catch() { ... } // from try @ 003d0fa4 with catch @ 003d18b0 */ + *(undefined1 *)(param_1 + 7) = 0; + memset((void *)((long)param_1 + 0x139),0,0x100); + *(undefined1 *)((long)param_1 + 0x239) = 0; + /* try { // try from 003d18cc to 004d18cf has its CatchHandler @ 003d0edc */ + return; +} + + +================================================================== + +### FUNC 003d18e8 (152 bytes) name=FUN_003d18e8 + +void FUN_003d18e8(long *param_1,long param_2,byte param_3,long param_4) + +{ + undefined *puVar1; + + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + puVar1 = PTR_DAT_00501f28; + param_1[4] = 0; + *(byte *)(param_1 + 3) = param_3 & param_2 != 0; + *param_1 = (long)(puVar1 + 0x10); + param_1[5] = 0; + if (param_2 == 0) { + param_2 = *(long *)PTR__ctype__00501e78 + 1; + } + param_1[6] = param_2; + memset((void *)((long)param_1 + 0x39),0,0x100); + *(undefined1 *)(param_1 + 7) = 0; + memset((void *)((long)param_1 + 0x139),0,0x100); + *(undefined1 *)((long)param_1 + 0x239) = 0; + return; +} + + +================================================================== + +### FUNC 003d1980 (36 bytes) name=FUN_003d1980 + +byte FUN_003d1980(long param_1,byte param_2) + +{ + if ((*(byte *)(*(long *)(param_1 + 0x30) + (ulong)param_2) >> 1 & 1) != 0) { + param_2 = param_2 - 0x20; + } + return param_2; +} + + +================================================================== + +### FUNC 003d19a4 (88 bytes) name=FUN_003d19a4 + +undefined1 * FUN_003d19a4(long *param_1,undefined1 *param_2,undefined1 *param_3) + +{ + undefined1 uVar1; + undefined1 *puVar2; + + if (param_2 < param_3) { + do { + uVar1 = (**(code **)(*param_1 + 0x10))(param_1,*param_2); + puVar2 = param_2 + 1; + *param_2 = uVar1; + param_2 = puVar2; + } while (puVar2 != param_3); + } + return param_3; +} + + +================================================================== + +### FUNC 003d19fc (36 bytes) name=FUN_003d19fc + +byte FUN_003d19fc(long param_1,byte param_2) + +{ + if ((*(byte *)(*(long *)(param_1 + 0x30) + (ulong)param_2) & 1) != 0) { + param_2 = param_2 + 0x20; + } + return param_2; +} + + +================================================================== + +### FUNC 003d1a20 (88 bytes) name=FUN_003d1a20 + +undefined1 * FUN_003d1a20(long *param_1,undefined1 *param_2,undefined1 *param_3) + +{ + undefined1 uVar1; + undefined1 *puVar2; + + if (param_2 < param_3) { + do { + uVar1 = (**(code **)(*param_1 + 0x20))(param_1,*param_2); + puVar2 = param_2 + 1; + *param_2 = uVar1; + param_2 = puVar2; + } while (puVar2 != param_3); + } + return param_3; +} + + +================================================================== + +### FUNC 003d1a78 (16 bytes) name=FUN_003d1a78 + +void FUN_003d1a78(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fcf30; + FUN_003d1030(); + return; +} + + +================================================================== + +### FUNC 003d1a88 (48 bytes) name=FUN_003d1a88 + +void FUN_003d1a88(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fcf30; + FUN_003d1030(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d1ab8 (152 bytes) name=FUN_003d1ab8 + +void FUN_003d1ab8(undefined8 *param_1,char *param_2,undefined8 param_3) + +{ + int iVar1; + + FUN_003d18e8(param_1,0,0,param_3); + *param_1 = &PTR_FUN_004fcf30; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 003d1b64 (244 bytes) name=FUN_003d1b64 + +wctype_t FUN_003d1b64(undefined8 param_1,byte param_2) + +{ + wctype_t wVar1; + + if (param_2 == 8) { + wVar1 = wctype("space"); + return wVar1; + } + if (param_2 < 9) { + if (param_2 == 3) { + wVar1 = wctype("alpha"); + return wVar1; + } + if (param_2 < 4) { + if (param_2 == 1) { + wVar1 = wctype("upper"); + return wVar1; + } + if (param_2 == 2) { + wVar1 = wctype("lower"); + return wVar1; + } + } + else { + if (param_2 == 4) { + wVar1 = wctype("digit"); + return wVar1; + } + if (param_2 == 7) { + wVar1 = wctype("alnum"); + return wVar1; + } + } + } + else { + if (param_2 == 0x20) { + wVar1 = wctype("cntrl"); + return wVar1; + } + if (param_2 < 0x21) { + if (param_2 == 0x10) { + wVar1 = wctype("punct"); + return wVar1; + } + if (param_2 == 0x17) { + wVar1 = wctype("graph"); + return wVar1; + } + } + else { + if (param_2 == 0x44) { + wVar1 = wctype("xdigit"); + return wVar1; + } + if (param_2 == 0x97) { + wVar1 = wctype("print"); + return wVar1; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 003d1c58 (8 bytes) name=FUN_003d1c58 + +wint_t FUN_003d1c58(undefined8 param_1,wint_t param_2) + +{ + wint_t wVar1; + + wVar1 = towupper(param_2); + return wVar1; +} + + +================================================================== + +### FUNC 003d1c60 (104 bytes) name=FUN_003d1c60 + +wint_t * FUN_003d1c60(undefined8 param_1,wint_t *param_2,wint_t *param_3) + +{ + wint_t *pwVar1; + wint_t wVar2; + wint_t *pwVar3; + wint_t *pwVar4; + + if (param_2 < param_3) { + pwVar1 = param_2 + 1; + pwVar4 = param_2; + do { + pwVar3 = pwVar1; + wVar2 = towupper(*pwVar4); + *pwVar4 = wVar2; + pwVar1 = pwVar3 + 1; + pwVar4 = pwVar3; + } while (pwVar3 != (wint_t *) + ((long)param_2 + + ((long)param_3 + (3 - (long)(param_2 + 1)) & 0xfffffffffffffffcU) + 4)); + } + return param_3; +} + + +================================================================== + +### FUNC 003d1cc8 (8 bytes) name=FUN_003d1cc8 + +wint_t FUN_003d1cc8(undefined8 param_1,wint_t param_2) + +{ + wint_t wVar1; + + wVar1 = towlower(param_2); + return wVar1; +} + + +================================================================== + +### FUNC 003d1cd0 (104 bytes) name=FUN_003d1cd0 + +wint_t * FUN_003d1cd0(undefined8 param_1,wint_t *param_2,wint_t *param_3) + +{ + wint_t *pwVar1; + wint_t wVar2; + wint_t *pwVar3; + wint_t *pwVar4; + + if (param_2 < param_3) { + pwVar1 = param_2 + 1; + pwVar4 = param_2; + do { + pwVar3 = pwVar1; + wVar2 = towlower(*pwVar4); + *pwVar4 = wVar2; + pwVar1 = pwVar3 + 1; + pwVar4 = pwVar3; + } while (pwVar3 != (wint_t *) + ((long)param_2 + + ((long)param_3 + (3 - (long)(param_2 + 1)) & 0xfffffffffffffffcU) + 4)); + } + return param_3; +} + + +================================================================== + +### FUNC 003d1d38 (136 bytes) name=FUN_003d1d38 + +undefined8 FUN_003d1d38(long param_1,byte param_2,wint_t param_3) + +{ + byte bVar1; + int iVar2; + byte *pbVar3; + wctype_t *pwVar4; + + pbVar3 = (byte *)(param_1 + 0x49c); + pwVar4 = (wctype_t *)(param_1 + 0x4b0); + while ((bVar1 = *pbVar3, pbVar3 = pbVar3 + 1, (param_2 & bVar1) == 0 || + (iVar2 = iswctype(param_3,*pwVar4), iVar2 == 0))) { + pwVar4 = pwVar4 + 1; + if (pbVar3 == (byte *)(param_1 + 0x4ac)) { + return 0; + } + } + return 1; +} + + +================================================================== + +### FUNC 003d1dc0 (184 bytes) name=FUN_003d1dc0 + +ulong FUN_003d1dc0(long param_1,ulong param_2,ulong param_3,long param_4) + +{ + int iVar1; + wctype_t __desc; + wctype_t *pwVar2; + long lVar3; + byte bVar4; + byte *pbVar5; + + if (param_2 < param_3) { + lVar3 = 0; + do { + bVar4 = 0; + pwVar2 = (wctype_t *)(param_1 + 0x4b0); + pbVar5 = (byte *)(param_1 + 0x49c); + do { + __desc = *pwVar2; + pwVar2 = pwVar2 + 1; + iVar1 = iswctype(*(wint_t *)(param_2 + lVar3 * 4),__desc); + if (iVar1 != 0) { + bVar4 = *pbVar5 | bVar4; + } + pbVar5 = pbVar5 + 1; + } while (pwVar2 != (wctype_t *)(param_1 + 0x530)); + *(byte *)(param_4 + lVar3) = bVar4; + lVar3 = lVar3 + 1; + } while (lVar3 != (~param_2 + param_3 >> 2) + 1); + } + return param_3; +} + + +================================================================== + +### FUNC 003d1e78 (124 bytes) name=FUN_003d1e78 + +undefined4 * FUN_003d1e78(long *param_1,undefined1 param_2,undefined4 *param_3,undefined4 *param_4) + +{ + char cVar1; + + if (param_3 < param_4) { + while (cVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,*param_3), cVar1 == '\0') { + param_3 = param_3 + 1; + if (param_4 <= param_3) { + return param_3; + } + } + } + return param_3; +} + + +================================================================== + +### FUNC 003d1ef4 (124 bytes) name=FUN_003d1ef4 + +undefined4 * FUN_003d1ef4(long *param_1,undefined1 param_2,undefined4 *param_3,undefined4 *param_4) + +{ + char cVar1; + + if (param_3 < param_4) { + while (cVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,*param_3), cVar1 != '\0') { + param_3 = param_3 + 1; + if (param_4 <= param_3) { + return param_3; + } + } + } + return param_3; +} + + +================================================================== + +### FUNC 003d1f70 (12 bytes) name=FUN_003d1f70 + +undefined4 FUN_003d1f70(long param_1,byte param_2) + +{ + return *(undefined4 *)(param_1 + (ulong)param_2 * 4 + 0x9c); +} + + +================================================================== + +### FUNC 003d1f7c (52 bytes) name=FUN_003d1f7c + +ulong FUN_003d1f7c(long param_1,ulong param_2,ulong param_3,long param_4) + +{ + long lVar1; + + lVar1 = 0; + if (param_2 < param_3) { + do { + *(undefined4 *)(param_4 + lVar1 * 4) = + *(undefined4 *)(param_1 + (ulong)*(byte *)(param_2 + lVar1) * 4 + 0x9c); + lVar1 = lVar1 + 1; + } while (lVar1 != param_3 - param_2); + } + return param_3; +} + + +================================================================== + +### FUNC 003d1fb0 (84 bytes) name=FUN_003d1fb0 + +uint FUN_003d1fb0(long param_1,uint param_2,byte param_3) + +{ + uint uVar1; + uint uVar2; + + if ((param_2 < 0x80) && (*(char *)(param_1 + 0x18) != '\0')) { + return (uint)*(byte *)(param_1 + (ulong)param_2 + 0x19); + } + uVar1 = wctob(param_2); + uVar2 = uVar1 & 0xff; + if (uVar1 == 0xffffffff) { + uVar2 = (uint)param_3; + } + return uVar2; +} + + +================================================================== + +### FUNC 003d2004 (232 bytes) name=FUN_003d2004 + +ulong FUN_003d2004(long param_1,ulong param_2,ulong param_3,undefined1 param_4,long param_5) + +{ + undefined1 uVar1; + uint __c; + int iVar2; + long lVar3; + + if (*(char *)(param_1 + 0x18) == '\0') { + if (param_2 < param_3) { + lVar3 = 0; + do { + iVar2 = wctob(*(wint_t *)(param_2 + lVar3 * 4)); + uVar1 = (char)iVar2; + if (iVar2 == -1) { + uVar1 = param_4; + } + *(undefined1 *)(param_5 + lVar3) = uVar1; + lVar3 = lVar3 + 1; + } while (lVar3 != (~param_2 + param_3 >> 2) + 1); + } + } + else if (param_2 < param_3) { + lVar3 = 0; + do { + __c = *(uint *)(param_2 + lVar3 * 4); + if (__c < 0x80) { + *(undefined1 *)(param_5 + lVar3) = *(undefined1 *)(param_1 + (ulong)__c + 0x19); + } + else { + iVar2 = wctob(__c); + uVar1 = (char)iVar2; + if (iVar2 == -1) { + uVar1 = param_4; + } + *(undefined1 *)(param_5 + lVar3) = uVar1; + } + lVar3 = lVar3 + 1; + } while (lVar3 != (~param_2 + param_3 >> 2) + 1); + } + return param_3; +} + + +================================================================== + +### FUNC 003d20ec (184 bytes) name=FUN_003d20ec + +void FUN_003d20ec(long param_1) + +{ + long lVar1; + undefined1 uVar2; + int iVar3; + wint_t wVar4; + undefined8 uVar5; + long lVar6; + wint_t *pwVar7; + + lVar6 = 0; + do { + iVar3 = wctob((wint_t)lVar6); + lVar1 = param_1 + lVar6; + lVar6 = lVar6 + 1; + if (iVar3 == -1) { + *(undefined1 *)(param_1 + 0x18) = 0; + goto LAB_003d2130; + } + *(char *)(lVar1 + 0x19) = (char)iVar3; + } while (lVar6 != 0x80); + *(undefined1 *)(param_1 + 0x18) = 1; +LAB_003d2130: + lVar6 = 0; + pwVar7 = (wint_t *)(param_1 + 0x9c); + do { + iVar3 = (int)lVar6; + lVar6 = lVar6 + 1; + wVar4 = btowc(iVar3); + *pwVar7 = wVar4; + pwVar7 = pwVar7 + 1; + } while (lVar6 != 0x100); + lVar6 = 0; + do { + uVar2 = (undefined1)(1 << (ulong)((uint)lVar6 & 0x1f)); + *(undefined1 *)(param_1 + lVar6 + 0x49c) = uVar2; + uVar5 = FUN_003d1b64(param_1,uVar2); + lVar1 = lVar6 * 8; + lVar6 = lVar6 + 1; + *(undefined8 *)(param_1 + lVar1 + 0x4b0) = uVar5; + } while (lVar6 != 0x10); + return; +} + + +================================================================== + +### FUNC 003d21a4 (16 bytes) name=FUN_003d21a4 + +void FUN_003d21a4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7b60; + FUN_003d381c(); + return; +} + + +================================================================== + +### FUNC 003d21b4 (16 bytes) name=FUN_003d21b4 + +void FUN_003d21b4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7b80; + FUN_003d381c(); + return; +} + + +================================================================== + +### FUNC 003d21c4 (48 bytes) name=FUN_003d21c4 + +void FUN_003d21c4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7b60; + FUN_003d381c(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d21f4 (48 bytes) name=FUN_003d21f4 + +void FUN_003d21f4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7b80; + FUN_003d381c(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d2224 (20 bytes) name=FUN_003d2224 + +long FUN_003d2224(long param_1) + +{ + if ((*(uint *)(param_1 + 0x20) & 5) != 0) { + param_1 = 0; + } + return param_1; +} + + +================================================================== + +### FUNC 003d2238 (20 bytes) name=FUN_003d2238 + +bool FUN_003d2238(long param_1) + +{ + return (*(uint *)(param_1 + 0x20) & 5) != 0; +} + + +================================================================== + +### FUNC 003d224c (8 bytes) name=FUN_003d224c + +undefined4 FUN_003d224c(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x20); +} + + +================================================================== + +### FUNC 003d2254 (60 bytes) name=FUN_003d2254 + +void FUN_003d2254(long param_1,uint param_2) + +{ + uint uVar1; + + uVar1 = param_2 | 1; + if (*(long *)(param_1 + 0xe8) != 0) { + uVar1 = param_2; + } + *(uint *)(param_1 + 0x20) = uVar1; + if ((uVar1 & *(uint *)(param_1 + 0x1c)) == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d2290 (68 bytes) name=FUN_003d2290 + +void FUN_003d2290(long param_1,uint param_2) + +{ + uint uVar1; + + param_2 = param_2 | *(uint *)(param_1 + 0x20); + uVar1 = param_2 | 1; + if (*(long *)(param_1 + 0xe8) != 0) { + uVar1 = param_2; + } + *(uint *)(param_1 + 0x20) = uVar1; + if ((uVar1 & *(uint *)(param_1 + 0x1c)) == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d22d4 (44 bytes) name=FUN_003d22d4 + +ulong FUN_003d22d4(ulong param_1,uint param_2) + +{ + long lVar1; + + *(uint *)(param_1 + 0x20) = *(uint *)(param_1 + 0x20) | param_2; + if ((param_2 & *(uint *)(param_1 + 0x1c)) == 0) { + return param_1; + } + lVar1 = __cxa_rethrow(); + return (ulong)(*(int *)(lVar1 + 0x20) == 0); +} + + +================================================================== + +### FUNC 003d2300 (16 bytes) name=FUN_003d2300 + +bool FUN_003d2300(long param_1) + +{ + return *(int *)(param_1 + 0x20) == 0; +} + + +================================================================== + +### FUNC 003d2310 (12 bytes) name=FUN_003d2310 + +uint FUN_003d2310(long param_1) + +{ + return *(uint *)(param_1 + 0x20) >> 1 & 1; +} + + +================================================================== + +### FUNC 003d231c (20 bytes) name=FUN_003d231c + +bool FUN_003d231c(long param_1) + +{ + return (*(uint *)(param_1 + 0x20) & 5) != 0; +} + + +================================================================== + +### FUNC 003d2330 (12 bytes) name=FUN_003d2330 + +uint FUN_003d2330(long param_1) + +{ + return *(uint *)(param_1 + 0x20) & 1; +} + + +================================================================== + +### FUNC 003d233c (8 bytes) name=FUN_003d233c + +undefined4 FUN_003d233c(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x1c); +} + + +================================================================== + +### FUNC 003d2344 (64 bytes) name=FUN_003d2344 + +void FUN_003d2344(long param_1,uint param_2) + +{ + uint uVar1; + + *(uint *)(param_1 + 0x1c) = param_2; + uVar1 = *(uint *)(param_1 + 0x20); + if (*(long *)(param_1 + 0xe8) == 0) { + uVar1 = uVar1 | 1; + *(uint *)(param_1 + 0x20) = uVar1; + } + if ((uVar1 & param_2) == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d2384 (260 bytes) name=FUN_003d2384 + +void FUN_003d2384(undefined8 *param_1,long param_2) + +{ + undefined8 *puVar1; + char cVar2; + undefined8 uVar3; + + FUN_003d347c(); + param_1[0x1b] = 0; + *param_1 = &PTR_FUN_004f7b60; + puVar1 = param_1 + 0x1a; + *(undefined1 *)(param_1 + 0x1c) = 0; + *(undefined1 *)((long)param_1 + 0xe1) = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + FUN_003d429c(param_1); + cVar2 = FUN_003e0700(puVar1); + if (cVar2 == '\0') { + param_1[0x1e] = 0; + cVar2 = FUN_003e08b0(puVar1); + } + else { + uVar3 = FUN_003de994(puVar1); + param_1[0x1e] = uVar3; + cVar2 = FUN_003e08b0(puVar1); + } + if (cVar2 == '\0') { + param_1[0x1f] = 0; + cVar2 = FUN_003e091c(puVar1); + } + else { + uVar3 = FUN_003df7c4(puVar1); + param_1[0x1f] = uVar3; + cVar2 = FUN_003e091c(puVar1); + } + if (cVar2 == '\0') { + param_1[0x20] = 0; + } + else { + uVar3 = FUN_003df82c(puVar1); + param_1[0x20] = uVar3; + } + *(undefined1 *)(param_1 + 0x1c) = 0; + param_1[0x1d] = param_2; + *(undefined1 *)((long)param_1 + 0xe1) = 0; + param_1[0x1b] = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 0; + *(uint *)(param_1 + 4) = (uint)(param_2 == 0); + return; +} + + +================================================================== + +### FUNC 003d249c (8 bytes) name=FUN_003d249c + +undefined8 FUN_003d249c(long param_1) + +{ + return *(undefined8 *)(param_1 + 0xd8); +} + + +================================================================== + +### FUNC 003d24a4 (16 bytes) name=FUN_003d24a4 + +undefined8 FUN_003d24a4(long param_1,undefined8 param_2) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0xd8); + *(undefined8 *)(param_1 + 0xd8) = param_2; + return uVar1; +} + + +================================================================== + +### FUNC 003d24b4 (8 bytes) name=FUN_003d24b4 + +undefined8 FUN_003d24b4(long param_1) + +{ + return *(undefined8 *)(param_1 + 0xe8); +} + + +================================================================== + +### FUNC 003d24bc (64 bytes) name=FUN_003d24bc + +undefined8 FUN_003d24bc(long param_1,long param_2) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0xe8); + *(uint *)(param_1 + 0x20) = (uint)(param_2 == 0); + *(long *)(param_1 + 0xe8) = param_2; + if (((uint)(param_2 == 0) & *(uint *)(param_1 + 0x1c)) == 0) { + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d24fc (124 bytes) name=FUN_003d24fc + +undefined1 FUN_003d24fc(long param_1) + +{ + undefined1 uVar1; + long *plVar2; + + if (*(char *)(param_1 + 0xe1) != '\0') { + return *(undefined1 *)(param_1 + 0xe0); + } + plVar2 = *(long **)(param_1 + 0xf0); + if (plVar2 != (long *)0x0) { + if ((char)plVar2[7] == '\0') { + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,0x20); + } + else { + uVar1 = *(undefined1 *)((long)plVar2 + 0x59); + } + *(undefined1 *)(param_1 + 0xe0) = uVar1; + *(undefined1 *)(param_1 + 0xe1) = 1; + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d2578 (144 bytes) name=FUN_003d2578 + +undefined1 FUN_003d2578(long param_1,undefined1 param_2) + +{ + undefined1 uVar1; + long *plVar2; + + if (*(char *)(param_1 + 0xe1) != '\0') { + uVar1 = *(undefined1 *)(param_1 + 0xe0); + *(undefined1 *)(param_1 + 0xe0) = param_2; + return uVar1; + } + plVar2 = *(long **)(param_1 + 0xf0); + if (plVar2 != (long *)0x0) { + if ((char)plVar2[7] == '\0') { + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,0x20); + } + else { + uVar1 = *(undefined1 *)((long)plVar2 + 0x59); + } + *(undefined1 *)(param_1 + 0xe0) = param_2; + *(undefined1 *)(param_1 + 0xe1) = 1; + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d2608 (116 bytes) name=FUN_003d2608 + +char FUN_003d2608(long param_1,byte param_2,char param_3) + +{ + char cVar1; + char cVar2; + long *plVar3; + + plVar3 = *(long **)(param_1 + 0xf0); + if (plVar3 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar1 = *(char *)((long)plVar3 + (long)(int)(uint)param_2 + 0x139); + if (cVar1 == '\0') { + cVar2 = (**(code **)(*plVar3 + 0x40))(plVar3,param_2,param_3); + cVar1 = param_3; + if (param_3 != cVar2) { + *(char *)((long)plVar3 + (long)(int)(uint)param_2 + 0x139) = cVar2; + return cVar2; + } + } + return cVar1; +} + + +================================================================== + +### FUNC 003d267c (100 bytes) name=FUN_003d267c + +undefined1 FUN_003d267c(long param_1,byte param_2) + +{ + undefined1 uVar1; + long *plVar2; + + plVar2 = *(long **)(param_1 + 0xf0); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar2[7] != '\0') { + return *(undefined1 *)((long)plVar2 + (long)(int)(uint)param_2 + 0x39); + } + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,param_2); + return uVar1; +} + + +================================================================== + +### FUNC 003d26e0 (72 bytes) name=FUN_003d26e0 + +void FUN_003d26e0(undefined8 *param_1) + +{ + FUN_003d347c(); + param_1[0x1b] = 0; + *(undefined1 *)(param_1 + 0x1c) = 0; + *param_1 = &PTR_FUN_004f7b60; + *(undefined1 *)((long)param_1 + 0xe1) = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + return; +} + + +================================================================== + +### FUNC 003d2728 (212 bytes) name=FUN_003d2728 + +void FUN_003d2728(long param_1,long param_2) + +{ + long lVar1; + char cVar2; + undefined8 uVar3; + + lVar1 = param_1 + 0xd0; + FUN_003d429c(); + cVar2 = FUN_003e0700(lVar1); + if (cVar2 == '\0') { + *(undefined8 *)(param_1 + 0xf0) = 0; + cVar2 = FUN_003e08b0(lVar1); + } + else { + uVar3 = FUN_003de994(lVar1); + *(undefined8 *)(param_1 + 0xf0) = uVar3; + cVar2 = FUN_003e08b0(lVar1); + } + if (cVar2 == '\0') { + *(undefined8 *)(param_1 + 0xf8) = 0; + cVar2 = FUN_003e091c(lVar1); + } + else { + uVar3 = FUN_003df7c4(lVar1); + *(undefined8 *)(param_1 + 0xf8) = uVar3; + cVar2 = FUN_003e091c(lVar1); + } + if (cVar2 == '\0') { + *(undefined8 *)(param_1 + 0x100) = 0; + } + else { + uVar3 = FUN_003df82c(lVar1); + *(undefined8 *)(param_1 + 0x100) = uVar3; + } + *(undefined1 *)(param_1 + 0xe0) = 0; + *(long *)(param_1 + 0xe8) = param_2; + *(undefined1 *)(param_1 + 0xe1) = 0; + *(undefined8 *)(param_1 + 0xd8) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(uint *)(param_1 + 0x20) = (uint)(param_2 == 0); + return; +} + + +================================================================== + +### FUNC 003d27fc (172 bytes) name=FUN_003d27fc + +void FUN_003d27fc(long param_1,undefined8 param_2) + +{ + char cVar1; + undefined8 uVar2; + + cVar1 = FUN_003e0700(param_2); + if (cVar1 == '\0') { + *(undefined8 *)(param_1 + 0xf0) = 0; + cVar1 = FUN_003e08b0(param_2); + } + else { + uVar2 = FUN_003de994(param_2); + *(undefined8 *)(param_1 + 0xf0) = uVar2; + cVar1 = FUN_003e08b0(param_2); + } + if (cVar1 == '\0') { + *(undefined8 *)(param_1 + 0xf8) = 0; + cVar1 = FUN_003e091c(param_2); + } + else { + uVar2 = FUN_003df7c4(param_2); + *(undefined8 *)(param_1 + 0xf8) = uVar2; + cVar1 = FUN_003e091c(param_2); + } + if (cVar1 != '\0') { + uVar2 = FUN_003df82c(param_2); + *(undefined8 *)(param_1 + 0x100) = uVar2; + return; + } + *(undefined8 *)(param_1 + 0x100) = 0; + return; +} + + +================================================================== + +### FUNC 003d28a8 (172 bytes) name=FUN_003d28a8 + +undefined8 FUN_003d28a8(undefined8 param_1,long param_2,undefined8 param_3) + +{ + long *plVar1; + undefined1 auStack_8 [8]; + + FUN_003ece1c(param_1,param_2 + 0xd0); + FUN_003d42ec(auStack_8,param_2,param_3); + FUN_003ed708(auStack_8); + FUN_003d27fc(param_2,param_3); + plVar1 = *(long **)(param_2 + 0xe8); + if (plVar1 != (long *)0x0) { + FUN_003ece1c(auStack_8,plVar1 + 7); + (**(code **)(*plVar1 + 0x10))(plVar1,param_3); + FUN_003ed668(plVar1 + 7,param_3); + FUN_003ed708(auStack_8); + } + return param_1; +} + + +================================================================== + +### FUNC 003d2978 (600 bytes) name=FUN_003d2978 + +long FUN_003d2978(long param_1,long param_2) + +{ + int *piVar1; + uint uVar2; + int iVar3; + undefined4 uVar4; + uint uVar5; + char cVar6; + bool bVar7; + undefined1 uVar8; + void *pvVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 uVar15; + undefined8 uVar16; + long *plVar17; + long lVar18; + undefined1 auStack_8 [8]; + undefined8 *puVar12; + + if (param_1 != param_2) { + uVar2 = *(uint *)(param_2 + 0xc0); + if ((int)uVar2 < 9) { + puVar13 = (undefined8 *)(param_1 + 0x40); + } + else { + puVar13 = operator_new__(-(ulong)(uVar2 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar2 << 4); + iVar3 = *(int *)(param_2 + 0xc0); + lVar18 = 0; + puVar11 = puVar13; + if ((long)iVar3 != 0) { + do { + lVar18 = lVar18 + 1; + *puVar11 = 0; + puVar11[1] = 0; + puVar11 = puVar11 + 2; + } while (iVar3 != lVar18); + } + } + lVar18 = *(long *)(param_2 + 0x28); + if (lVar18 != 0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar18 + 0x14) = *(int *)(lVar18 + 0x14) + 1; + } + else { + piVar1 = (int *)(lVar18 + 0x14); + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar7) { + *piVar1 = *piVar1 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + } + FUN_003d3730(param_1,0); + pvVar9 = *(void **)(param_1 + 200); + if (pvVar9 != (void *)(param_1 + 0x40)) { + if (pvVar9 != (void *)0x0) { + operator_delete__(pvVar9); + } + *(undefined8 *)(param_1 + 200) = 0; + } + FUN_003d3798(param_1); + iVar3 = *(int *)(param_2 + 0xc0); + *(long *)(param_1 + 0x28) = lVar18; + if (0 < iVar3) { + puVar10 = *(undefined8 **)(param_2 + 200); + puVar11 = puVar10; + puVar14 = puVar13; + do { + puVar12 = puVar11 + 2; + uVar15 = puVar11[1]; + *puVar14 = *puVar11; + puVar14[1] = uVar15; + puVar11 = puVar12; + puVar14 = puVar14 + 2; + } while (puVar12 != puVar10 + ((ulong)(iVar3 - 1) + 1) * 2); + } + uVar4 = *(undefined4 *)(param_2 + 0x18); + *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_2 + 0x10); + uVar15 = *(undefined8 *)(param_2 + 0xd8); + uVar16 = *(undefined8 *)(param_2 + 8); + cVar6 = *(char *)(param_2 + 0xe1); + *(undefined8 **)(param_1 + 200) = puVar13; + *(int *)(param_1 + 0xc0) = iVar3; + *(undefined4 *)(param_1 + 0x18) = uVar4; + *(undefined8 *)(param_1 + 8) = uVar16; + *(undefined8 *)(param_1 + 0xd8) = uVar15; + if (cVar6 == '\0') { + plVar17 = *(long **)(param_2 + 0xf0); + if (plVar17 == (long *)0x0) goto LAB_003d2bc0; + if ((char)plVar17[7] == '\0') { + FUN_003d14e0(plVar17); + uVar8 = (**(code **)(*plVar17 + 0x30))(plVar17,0x20); + } + else { + uVar8 = *(undefined1 *)((long)plVar17 + 0x59); + } + *(undefined1 *)(param_2 + 0xe0) = uVar8; + *(undefined1 *)(param_2 + 0xe1) = 1; + } + else { + uVar8 = *(undefined1 *)(param_2 + 0xe0); + } + if (*(char *)(param_1 + 0xe1) == '\0') { + plVar17 = *(long **)(param_1 + 0xf0); + if (plVar17 == (long *)0x0) { +LAB_003d2bc0: + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar17[7] == '\0') { + FUN_003d14e0(plVar17); + (**(code **)(*plVar17 + 0x30))(plVar17,0x20); + } + *(undefined1 *)(param_1 + 0xe1) = 1; + } + *(undefined1 *)(param_1 + 0xe0) = uVar8; + FUN_003ece1c(auStack_8,param_2 + 0xd0); + FUN_003ed668(param_1 + 0xd0,auStack_8); + FUN_003ed708(auStack_8); + FUN_003d27fc(param_1,param_1 + 0xd0); + FUN_003d3730(param_1,2); + uVar2 = *(uint *)(param_2 + 0x1c); + *(uint *)(param_1 + 0x1c) = uVar2; + uVar5 = *(uint *)(param_1 + 0x20); + if (*(long *)(param_1 + 0xe8) == 0) { + uVar5 = uVar5 | 1; + *(uint *)(param_1 + 0x20) = uVar5; + } + if ((uVar5 & uVar2) != 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d2bd0 (20 bytes) name=FUN_003d2bd0 + +long FUN_003d2bd0(long param_1) + +{ + if ((*(uint *)(param_1 + 0x20) & 5) != 0) { + param_1 = 0; + } + return param_1; +} + + +================================================================== + +### FUNC 003d2be4 (20 bytes) name=FUN_003d2be4 + +bool FUN_003d2be4(long param_1) + +{ + return (*(uint *)(param_1 + 0x20) & 5) != 0; +} + + +================================================================== + +### FUNC 003d2bf8 (8 bytes) name=FUN_003d2bf8 + +undefined4 FUN_003d2bf8(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x20); +} + + +================================================================== + +### FUNC 003d2c00 (60 bytes) name=FUN_003d2c00 + +void FUN_003d2c00(long param_1,uint param_2) + +{ + uint uVar1; + + uVar1 = param_2 | 1; + if (*(long *)(param_1 + 0xe8) != 0) { + uVar1 = param_2; + } + *(uint *)(param_1 + 0x20) = uVar1; + if ((uVar1 & *(uint *)(param_1 + 0x1c)) == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d2c3c (68 bytes) name=FUN_003d2c3c + +void FUN_003d2c3c(long param_1,uint param_2) + +{ + uint uVar1; + + param_2 = param_2 | *(uint *)(param_1 + 0x20); + uVar1 = param_2 | 1; + if (*(long *)(param_1 + 0xe8) != 0) { + uVar1 = param_2; + } + *(uint *)(param_1 + 0x20) = uVar1; + if ((uVar1 & *(uint *)(param_1 + 0x1c)) == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d2c80 (44 bytes) name=FUN_003d2c80 + +ulong FUN_003d2c80(ulong param_1,uint param_2) + +{ + long lVar1; + + *(uint *)(param_1 + 0x20) = *(uint *)(param_1 + 0x20) | param_2; + if ((param_2 & *(uint *)(param_1 + 0x1c)) == 0) { + return param_1; + } + lVar1 = __cxa_rethrow(); + return (ulong)(*(int *)(lVar1 + 0x20) == 0); +} + + +================================================================== + +### FUNC 003d2cac (16 bytes) name=FUN_003d2cac + +bool FUN_003d2cac(long param_1) + +{ + return *(int *)(param_1 + 0x20) == 0; +} + + +================================================================== + +### FUNC 003d2cbc (12 bytes) name=FUN_003d2cbc + +uint FUN_003d2cbc(long param_1) + +{ + return *(uint *)(param_1 + 0x20) >> 1 & 1; +} + + +================================================================== + +### FUNC 003d2cc8 (20 bytes) name=FUN_003d2cc8 + +bool FUN_003d2cc8(long param_1) + +{ + return (*(uint *)(param_1 + 0x20) & 5) != 0; +} + + +================================================================== + +### FUNC 003d2cdc (12 bytes) name=FUN_003d2cdc + +uint FUN_003d2cdc(long param_1) + +{ + return *(uint *)(param_1 + 0x20) & 1; +} + + +================================================================== + +### FUNC 003d2ce8 (8 bytes) name=FUN_003d2ce8 + +undefined4 FUN_003d2ce8(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x1c); +} + + +================================================================== + +### FUNC 003d2cf0 (64 bytes) name=FUN_003d2cf0 + +void FUN_003d2cf0(long param_1,uint param_2) + +{ + uint uVar1; + + *(uint *)(param_1 + 0x1c) = param_2; + uVar1 = *(uint *)(param_1 + 0x20); + if (*(long *)(param_1 + 0xe8) == 0) { + uVar1 = uVar1 | 1; + *(uint *)(param_1 + 0x20) = uVar1; + } + if ((uVar1 & param_2) == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d2d30 (260 bytes) name=FUN_003d2d30 + +void FUN_003d2d30(undefined8 *param_1,long param_2) + +{ + undefined8 *puVar1; + char cVar2; + undefined8 uVar3; + + FUN_003d347c(); + param_1[0x1b] = 0; + *param_1 = &PTR_FUN_004f7b80; + puVar1 = param_1 + 0x1a; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined1 *)((long)param_1 + 0xe4) = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + FUN_003d429c(param_1); + cVar2 = FUN_00402fb0(puVar1); + if (cVar2 == '\0') { + param_1[0x1e] = 0; + cVar2 = FUN_00403160(puVar1); + } + else { + uVar3 = FUN_00401028(puVar1); + param_1[0x1e] = uVar3; + cVar2 = FUN_00403160(puVar1); + } + if (cVar2 == '\0') { + param_1[0x1f] = 0; + cVar2 = FUN_004031cc(puVar1); + } + else { + uVar3 = FUN_00401d3c(puVar1); + param_1[0x1f] = uVar3; + cVar2 = FUN_004031cc(puVar1); + } + if (cVar2 == '\0') { + param_1[0x20] = 0; + } + else { + uVar3 = FUN_00401da4(puVar1); + param_1[0x20] = uVar3; + } + param_1[0x1d] = param_2; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined1 *)((long)param_1 + 0xe4) = 0; + param_1[0x1b] = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 0; + *(uint *)(param_1 + 4) = (uint)(param_2 == 0); + return; +} + + +================================================================== + +### FUNC 003d2e48 (8 bytes) name=FUN_003d2e48 + +undefined8 FUN_003d2e48(long param_1) + +{ + return *(undefined8 *)(param_1 + 0xd8); +} + + +================================================================== + +### FUNC 003d2e50 (16 bytes) name=FUN_003d2e50 + +undefined8 FUN_003d2e50(long param_1,undefined8 param_2) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0xd8); + *(undefined8 *)(param_1 + 0xd8) = param_2; + return uVar1; +} + + +================================================================== + +### FUNC 003d2e60 (8 bytes) name=FUN_003d2e60 + +undefined8 FUN_003d2e60(long param_1) + +{ + return *(undefined8 *)(param_1 + 0xe8); +} + + +================================================================== + +### FUNC 003d2e68 (64 bytes) name=FUN_003d2e68 + +undefined8 FUN_003d2e68(long param_1,long param_2) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0xe8); + *(uint *)(param_1 + 0x20) = (uint)(param_2 == 0); + *(long *)(param_1 + 0xe8) = param_2; + if (((uint)(param_2 == 0) & *(uint *)(param_1 + 0x1c)) == 0) { + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); +} + + +================================================================== + +### FUNC 003d2ea8 (92 bytes) name=FUN_003d2ea8 + +ulong FUN_003d2ea8(long param_1) + +{ + long *plVar1; + ulong uVar2; + + if (*(char *)(param_1 + 0xe4) != '\0') { + return (ulong)*(uint *)(param_1 + 0xe0); + } + plVar1 = *(long **)(param_1 + 0xf0); + if (plVar1 != (long *)0x0) { + uVar2 = (**(code **)(*plVar1 + 0x50))(plVar1,0x20); + *(int *)(param_1 + 0xe0) = (int)uVar2; + *(undefined1 *)(param_1 + 0xe4) = 1; + return uVar2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d2f04 (100 bytes) name=FUN_003d2f04 + +ulong FUN_003d2f04(long param_1,undefined4 param_2) + +{ + uint uVar1; + long *plVar2; + ulong uVar3; + + if (*(char *)(param_1 + 0xe4) != '\0') { + uVar1 = *(uint *)(param_1 + 0xe0); + *(undefined4 *)(param_1 + 0xe0) = param_2; + return (ulong)uVar1; + } + plVar2 = *(long **)(param_1 + 0xf0); + if (plVar2 != (long *)0x0) { + uVar3 = (**(code **)(*plVar2 + 0x50))(plVar2,0x20); + *(undefined4 *)(param_1 + 0xe0) = param_2; + *(undefined1 *)(param_1 + 0xe4) = 1; + return uVar3; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d2f68 (44 bytes) name=FUN_003d2f68 + +void FUN_003d2f68(long param_1,undefined8 param_2,undefined1 param_3) + +{ + if (*(long **)(param_1 + 0xf0) != (long *)0x0) { + (**(code **)(**(long **)(param_1 + 0xf0) + 0x60))(); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(0,param_2,param_3); +} + + +================================================================== + +### FUNC 003d2f94 (44 bytes) name=FUN_003d2f94 + +void FUN_003d2f94(long param_1,undefined1 param_2) + +{ + if (*(long **)(param_1 + 0xf0) != (long *)0x0) { + (**(code **)(**(long **)(param_1 + 0xf0) + 0x50))(); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(0,param_2); +} + + +================================================================== + +### FUNC 003d2fc0 (72 bytes) name=FUN_003d2fc0 + +void FUN_003d2fc0(undefined8 *param_1) + +{ + FUN_003d347c(); + param_1[0x1b] = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *param_1 = &PTR_FUN_004f7b80; + *(undefined1 *)((long)param_1 + 0xe4) = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + return; +} + + +================================================================== + +### FUNC 003d3008 (212 bytes) name=FUN_003d3008 + +void FUN_003d3008(long param_1,long param_2) + +{ + long lVar1; + char cVar2; + undefined8 uVar3; + + lVar1 = param_1 + 0xd0; + FUN_003d429c(); + cVar2 = FUN_00402fb0(lVar1); + if (cVar2 == '\0') { + *(undefined8 *)(param_1 + 0xf0) = 0; + cVar2 = FUN_00403160(lVar1); + } + else { + uVar3 = FUN_00401028(lVar1); + *(undefined8 *)(param_1 + 0xf0) = uVar3; + cVar2 = FUN_00403160(lVar1); + } + if (cVar2 == '\0') { + *(undefined8 *)(param_1 + 0xf8) = 0; + cVar2 = FUN_004031cc(lVar1); + } + else { + uVar3 = FUN_00401d3c(lVar1); + *(undefined8 *)(param_1 + 0xf8) = uVar3; + cVar2 = FUN_004031cc(lVar1); + } + if (cVar2 == '\0') { + *(undefined8 *)(param_1 + 0x100) = 0; + } + else { + uVar3 = FUN_00401da4(lVar1); + *(undefined8 *)(param_1 + 0x100) = uVar3; + } + *(long *)(param_1 + 0xe8) = param_2; + *(undefined4 *)(param_1 + 0xe0) = 0; + *(undefined1 *)(param_1 + 0xe4) = 0; + *(undefined8 *)(param_1 + 0xd8) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(uint *)(param_1 + 0x20) = (uint)(param_2 == 0); + return; +} + + +================================================================== + +### FUNC 003d30dc (172 bytes) name=FUN_003d30dc + +void FUN_003d30dc(long param_1,undefined8 param_2) + +{ + char cVar1; + undefined8 uVar2; + + cVar1 = FUN_00402fb0(param_2); + if (cVar1 == '\0') { + *(undefined8 *)(param_1 + 0xf0) = 0; + cVar1 = FUN_00403160(param_2); + } + else { + uVar2 = FUN_00401028(param_2); + *(undefined8 *)(param_1 + 0xf0) = uVar2; + cVar1 = FUN_00403160(param_2); + } + if (cVar1 == '\0') { + *(undefined8 *)(param_1 + 0xf8) = 0; + cVar1 = FUN_004031cc(param_2); + } + else { + uVar2 = FUN_00401d3c(param_2); + *(undefined8 *)(param_1 + 0xf8) = uVar2; + cVar1 = FUN_004031cc(param_2); + } + if (cVar1 != '\0') { + uVar2 = FUN_00401da4(param_2); + *(undefined8 *)(param_1 + 0x100) = uVar2; + return; + } + *(undefined8 *)(param_1 + 0x100) = 0; + return; +} + + +================================================================== + +### FUNC 003d3188 (172 bytes) name=FUN_003d3188 + +undefined8 FUN_003d3188(undefined8 param_1,long param_2,undefined8 param_3) + +{ + long *plVar1; + undefined1 auStack_8 [8]; + + FUN_003ece1c(param_1,param_2 + 0xd0); + FUN_003d42ec(auStack_8,param_2,param_3); + FUN_003ed708(auStack_8); + FUN_003d30dc(param_2,param_3); + plVar1 = *(long **)(param_2 + 0xe8); + if (plVar1 != (long *)0x0) { + FUN_003ece1c(auStack_8,plVar1 + 7); + (**(code **)(*plVar1 + 0x10))(plVar1,param_3); + FUN_003ed668(plVar1 + 7,param_3); + FUN_003ed708(auStack_8); + } + return param_1; +} + + +================================================================== + +### FUNC 003d3258 (548 bytes) name=FUN_003d3258 + +long FUN_003d3258(long param_1,long param_2) + +{ + int *piVar1; + uint uVar2; + int iVar3; + uint uVar4; + char cVar5; + bool bVar6; + undefined4 uVar7; + void *pvVar8; + undefined8 *puVar9; + undefined8 *puVar10; + long *plVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 uVar15; + undefined8 uVar16; + long lVar17; + undefined1 auStack_8 [8]; + undefined8 *puVar11; + + if (param_1 != param_2) { + uVar2 = *(uint *)(param_2 + 0xc0); + if ((int)uVar2 < 9) { + puVar13 = (undefined8 *)(param_1 + 0x40); + } + else { + puVar13 = operator_new__(-(ulong)(uVar2 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar2 << 4); + iVar3 = *(int *)(param_2 + 0xc0); + lVar17 = 0; + puVar10 = puVar13; + if ((long)iVar3 != 0) { + do { + lVar17 = lVar17 + 1; + *puVar10 = 0; + puVar10[1] = 0; + puVar10 = puVar10 + 2; + } while (iVar3 != lVar17); + } + } + lVar17 = *(long *)(param_2 + 0x28); + if (lVar17 != 0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar17 + 0x14) = *(int *)(lVar17 + 0x14) + 1; + } + else { + piVar1 = (int *)(lVar17 + 0x14); + do { + cVar5 = '\x01'; + bVar6 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar6) { + *piVar1 = *piVar1 + 1; + cVar5 = ExclusiveMonitorsStatus(); + } + } while (cVar5 != '\0'); + } + } + FUN_003d3730(param_1,0); + pvVar8 = *(void **)(param_1 + 200); + if ((void *)(param_1 + 0x40) != pvVar8) { + if (pvVar8 != (void *)0x0) { + operator_delete__(pvVar8); + } + *(undefined8 *)(param_1 + 200) = 0; + } + FUN_003d3798(param_1); + iVar3 = *(int *)(param_2 + 0xc0); + *(long *)(param_1 + 0x28) = lVar17; + if (0 < iVar3) { + puVar9 = *(undefined8 **)(param_2 + 200); + puVar10 = puVar9; + puVar14 = puVar13; + do { + puVar11 = puVar10 + 2; + uVar15 = puVar10[1]; + *puVar14 = *puVar10; + puVar14[1] = uVar15; + puVar10 = puVar11; + puVar14 = puVar14 + 2; + } while (puVar11 != puVar9 + ((ulong)(iVar3 - 1) + 1) * 2); + } + uVar7 = *(undefined4 *)(param_2 + 0x18); + *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_2 + 0x10); + uVar15 = *(undefined8 *)(param_2 + 0xd8); + uVar16 = *(undefined8 *)(param_2 + 8); + cVar5 = *(char *)(param_2 + 0xe4); + *(undefined8 **)(param_1 + 200) = puVar13; + *(int *)(param_1 + 0xc0) = iVar3; + *(undefined4 *)(param_1 + 0x18) = uVar7; + *(undefined8 *)(param_1 + 8) = uVar16; + *(undefined8 *)(param_1 + 0xd8) = uVar15; + if (cVar5 == '\0') { + plVar12 = *(long **)(param_2 + 0xf0); + if (plVar12 == (long *)0x0) goto LAB_003d346c; + uVar7 = (**(code **)(*plVar12 + 0x50))(plVar12,0x20); + *(undefined4 *)(param_2 + 0xe0) = uVar7; + *(undefined1 *)(param_2 + 0xe4) = 1; + } + else { + uVar7 = *(undefined4 *)(param_2 + 0xe0); + } + if (*(char *)(param_1 + 0xe4) == '\0') { + plVar12 = *(long **)(param_1 + 0xf0); + if (plVar12 == (long *)0x0) { +LAB_003d346c: + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar12 + 0x50))(plVar12,0x20); + *(undefined1 *)(param_1 + 0xe4) = 1; + } + *(undefined4 *)(param_1 + 0xe0) = uVar7; + FUN_003ece1c(auStack_8,param_2 + 0xd0); + FUN_003ed668(param_1 + 0xd0,auStack_8); + FUN_003ed708(auStack_8); + FUN_003d30dc(param_1,param_1 + 0xd0); + FUN_003d3730(param_1,2); + uVar2 = *(uint *)(param_2 + 0x1c); + *(uint *)(param_1 + 0x1c) = uVar2; + uVar4 = *(uint *)(param_1 + 0x20); + if (*(long *)(param_1 + 0xe8) == 0) { + uVar4 = uVar4 | 1; + *(uint *)(param_1 + 0x20) = uVar4; + } + if ((uVar4 & uVar2) != 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_ios::clear"); + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d347c (136 bytes) name=FUN_003d347c + +void FUN_003d347c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7ba0; + param_1[1] = 0; + param_1[2] = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((long)param_1 + 0x1c) = 0; + *(undefined4 *)(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; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + *(undefined4 *)(param_1 + 0x18) = 8; + param_1[0x19] = param_1 + 8; + FUN_003ef168(param_1 + 0x1a); + return; +} + + +================================================================== + +### FUNC 003d3504 (64 bytes) name=FUN_003d3504 + +int FUN_003d3504(void) + +{ + int iVar1; + char cVar2; + bool bVar3; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar1 = DAT_00546184 + 4; + DAT_00546184 = DAT_00546184 + 1; + return iVar1; + } + do { + iVar1 = DAT_00546184; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(0x546184,0x10); + if (bVar3) { + cVar2 = ExclusiveMonitorsStatus(); + DAT_00546184 = DAT_00546184 + 1; + } + } while (cVar2 != '\0'); + return iVar1 + 4; +} + + +================================================================== + +### FUNC 003d3544 (76 bytes) name=FUN_003d3544 + +void FUN_003d3544(long param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 *puVar1; + + puVar1 = operator_new(0x18); + *puVar1 = *(undefined8 *)(param_1 + 0x28); + puVar1[1] = param_2; + *(undefined4 *)(puVar1 + 2) = param_3; + *(undefined4 *)((long)puVar1 + 0x14) = 0; + *(undefined8 **)(param_1 + 0x28) = puVar1; + return; +} + + +================================================================== + +### FUNC 003d3590 (312 bytes) name=FUN_003d3590 + +undefined8 * FUN_003d3590(long param_1,int param_2,char param_3) + +{ + undefined8 uVar1; + int iVar2; + uint uVar3; + undefined8 *puVar4; + undefined8 *puVar5; + undefined8 *puVar6; + undefined8 *puVar8; + long lVar9; + int iVar10; + undefined8 *puVar7; + + if (param_2 < 8) { + iVar10 = 8; + puVar4 = (undefined8 *)(param_1 + 0x40); + } + else { + if (param_2 == 0x7fffffff) { + uVar3 = *(uint *)(param_1 + 0x20) | 1; + *(uint *)(param_1 + 0x20) = uVar3; + if ((uVar3 & *(uint *)(param_1 + 0x1c)) != 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("ios_base::_M_grow_words is not valid"); + } + if (param_3 == '\0') { + *(undefined8 *)(param_1 + 0x30) = 0; + } + else { + *(undefined8 *)(param_1 + 0x38) = 0; + } + return (undefined8 *)(param_1 + 0x30); + } + iVar10 = param_2 + 1; + lVar9 = (long)iVar10; + puVar4 = operator_new__(lVar9 << 4); + puVar5 = puVar4; + do { + *puVar5 = 0; + lVar9 = lVar9 + -1; + puVar5[1] = 0; + puVar5 = puVar5 + 2; + } while (lVar9 != 0); + iVar2 = *(int *)(param_1 + 0xc0); + if (iVar2 < 1) { + puVar5 = *(undefined8 **)(param_1 + 200); + } + else { + puVar5 = *(undefined8 **)(param_1 + 200); + puVar6 = puVar5; + puVar8 = puVar4; + do { + puVar7 = puVar6 + 2; + uVar1 = puVar6[1]; + *puVar8 = *puVar6; + puVar8[1] = uVar1; + puVar6 = puVar7; + puVar8 = puVar8 + 2; + } while (puVar7 != puVar5 + ((ulong)(iVar2 - 1) + 1) * 2); + } + if ((puVar5 != (undefined8 *)0x0) && ((undefined8 *)(param_1 + 0x40) != puVar5)) { + operator_delete__(puVar5); + } + } + *(undefined8 **)(param_1 + 200) = puVar4; + *(int *)(param_1 + 0xc0) = iVar10; + return puVar4 + (long)param_2 * 2; +} + + +================================================================== + +### FUNC 003d3730 (76 bytes) name=FUN_003d3730 + +void FUN_003d3730(long param_1,undefined4 param_2) + +{ + long *plVar1; + + for (plVar1 = *(long **)(param_1 + 0x28); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) { + (*(code *)plVar1[1])(param_2,param_1,*(undefined4 *)(plVar1 + 2)); + } + return; +} + + +================================================================== + +### FUNC 003d3798 (132 bytes) name=FUN_003d3798 + +void FUN_003d3798(long param_1) + +{ + char cVar1; + bool bVar2; + int *piVar3; + undefined8 *puVar4; + undefined8 *puVar5; + int iVar6; + + puVar4 = *(undefined8 **)(param_1 + 0x28); + if (puVar4 != (undefined8 *)0x0) { + piVar3 = (int *)((long)puVar4 + 0x14); + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_003d380c; + do { + do { + iVar6 = *piVar3; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + puVar5 = puVar4; + } while (cVar1 != '\0'); + while( true ) { + if (iVar6 != 0) goto LAB_003d37dc; + puVar4 = (undefined8 *)*puVar5; + operator_delete(puVar5); + if (puVar4 == (undefined8 *)0x0) goto LAB_003d37dc; + piVar3 = (int *)((long)puVar4 + 0x14); + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) break; +LAB_003d380c: + iVar6 = *(int *)((long)puVar4 + 0x14); + *(int *)((long)puVar4 + 0x14) = iVar6 + -1; + puVar5 = puVar4; + } + } while( true ); + } +LAB_003d37dc: + *(undefined8 *)(param_1 + 0x28) = 0; + return; +} + + +================================================================== + +### FUNC 003d381c (88 bytes) name=FUN_003d381c + +void FUN_003d381c(undefined8 *param_1) + +{ + undefined8 *puVar1; + + *param_1 = &PTR_FUN_004f7ba0; + FUN_003d3730(param_1,0); + FUN_003d3798(param_1); + puVar1 = (undefined8 *)param_1[0x19]; + if (puVar1 != param_1 + 8) { + if (puVar1 != (undefined8 *)0x0) { + operator_delete__(puVar1); + } + param_1[0x19] = 0; + } + FUN_003ed708(param_1 + 0x1a); + return; +} + + +================================================================== + +### FUNC 003d3874 (96 bytes) name=FUN_003d3874 + +void FUN_003d3874(undefined8 *param_1) + +{ + undefined8 *puVar1; + + *param_1 = &PTR_FUN_004f7ba0; + FUN_003d3730(param_1,0); + FUN_003d3798(param_1); + puVar1 = (undefined8 *)param_1[0x19]; + if (puVar1 != param_1 + 8) { + if (puVar1 != (undefined8 *)0x0) { + operator_delete__(puVar1); + } + param_1[0x19] = 0; + } + FUN_003ed708(param_1 + 0x1a); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d38d4 (1424 bytes) name=FUN_003d38d4 + +void FUN_003d38d4(void) + +{ + undefined *puVar1; + undefined *puVar2; + undefined *puVar3; + undefined *puVar4; + uint uVar5; + char cVar6; + bool bVar7; + undefined *puVar8; + undefined *puVar9; + undefined *puVar10; + int iVar11; + + puVar4 = PTR_DAT_005018c0; + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar11 = *(int *)PTR_DAT_005018c0; + *(int *)PTR_DAT_005018c0 = iVar11 + 1; + } + else { + do { + iVar11 = *(int *)puVar4; + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(puVar4,0x10); + if (bVar7) { + *(int *)puVar4 = iVar11 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + } + puVar3 = PTR_DAT_00501f48; + puVar4 = PTR_DAT_00501ba0; + if (iVar11 != 0) { + return; + } + puVar1 = PTR_DAT_00501ba0 + 0x38; + puVar2 = PTR_DAT_00501bb0 + 0x10; + *(undefined8 *)(PTR_DAT_00501ba0 + 8) = 0; + *(undefined **)puVar4 = puVar2; + *(undefined8 *)(puVar4 + 0x10) = 0; + *(undefined8 *)(puVar4 + 0x18) = 0; + *(undefined8 *)(puVar4 + 0x20) = 0; + *(undefined8 *)(puVar4 + 0x28) = 0; + *(undefined8 *)(puVar4 + 0x30) = 0; + *puVar3 = 1; + FUN_003ef168(puVar1); + puVar9 = PTR___sF_00501a80; + puVar8 = PTR_DAT_005018b8; + puVar3 = PTR_DAT_005018b8 + 0x38; + *(undefined4 *)(puVar4 + 0x48) = 0xffffffff; + puVar1 = PTR_DAT_00501d30; + *(undefined **)puVar8 = puVar2; + *(undefined8 *)(puVar8 + 8) = 0; + puVar1 = puVar1 + 0x10; + *(undefined8 *)(puVar8 + 0x10) = 0; + *(undefined8 *)(puVar8 + 0x18) = 0; + *(undefined8 *)(puVar8 + 0x20) = 0; + *(undefined8 *)(puVar8 + 0x28) = 0; + *(undefined8 *)(puVar8 + 0x30) = 0; + *(undefined **)(puVar4 + 0x40) = puVar9 + 0x98; + *(undefined **)puVar4 = puVar1; + FUN_003ef168(puVar3); + puVar10 = PTR_DAT_00501e70; + puVar3 = PTR_DAT_00501e70 + 0x38; + *(undefined **)PTR_DAT_00501e70 = puVar2; + *(undefined8 *)(puVar10 + 8) = 0; + *(undefined8 *)(puVar10 + 0x10) = 0; + *(undefined8 *)(puVar10 + 0x18) = 0; + *(undefined8 *)(puVar10 + 0x20) = 0; + *(undefined8 *)(puVar10 + 0x28) = 0; + *(undefined8 *)(puVar10 + 0x30) = 0; + *(undefined **)puVar8 = puVar1; + *(undefined **)(puVar8 + 0x40) = puVar9; + *(undefined4 *)(puVar8 + 0x48) = 0xffffffff; + FUN_003ef168(puVar3); + puVar2 = PTR_DAT_00501a38; + *(undefined **)(puVar10 + 0x40) = puVar9 + 0x130; + *(undefined **)puVar10 = puVar1; + *(undefined4 *)(puVar10 + 0x48) = 0xffffffff; + FUN_003d347c(puVar2 + 8); + puVar1 = PTR_DAT_00501e90; + puVar3 = PTR_DAT_00501e90 + 0x18; + *(undefined8 *)(puVar2 + 0xe0) = 0; + puVar2[0xe8] = 0; + puVar2[0xe9] = 0; + *(undefined8 *)(puVar2 + 0xf0) = 0; + *(undefined8 *)(puVar2 + 0xf8) = 0; + *(undefined8 *)(puVar2 + 0x100) = 0; + *(undefined8 *)(puVar2 + 0x108) = 0; + *(undefined **)(puVar2 + 8) = puVar1 + 0x40; + *(undefined **)puVar2 = puVar3; + FUN_003d2728(puVar2 + 8,puVar4); + puVar1 = PTR_DAT_00501e20; + puVar4 = PTR_DAT_00501e20 + 0x10; + FUN_003d347c(puVar4); + puVar3 = PTR_DAT_005018b8; + *(undefined8 *)(puVar1 + 0xe8) = 0; + puVar2 = PTR_DAT_00501e38; + puVar1[0xf0] = 0; + puVar1[0xf1] = 0; + *(undefined8 *)(puVar1 + 0xf8) = 0; + *(undefined8 *)(puVar1 + 0x100) = 0; + *(undefined8 *)(puVar1 + 0x108) = 0; + *(undefined8 *)(puVar1 + 0x110) = 0; + *(undefined **)(puVar1 + 0x10) = puVar2 + 0x40; + *(undefined **)puVar1 = puVar2 + 0x18; + *(undefined8 *)(puVar1 + 8) = 0; + FUN_003d2728(puVar4,puVar3); + puVar1 = PTR_DAT_00501c50; + puVar4 = PTR_DAT_00501c50 + 8; + FUN_003d347c(puVar4); + puVar8 = PTR_DAT_00501e90; + puVar2 = PTR_DAT_00501e70; + puVar3 = PTR_DAT_00501e90 + 0x18; + *(undefined8 *)(puVar1 + 0xe0) = 0; + puVar1[0xe8] = 0; + puVar1[0xe9] = 0; + *(undefined8 *)(puVar1 + 0xf0) = 0; + *(undefined8 *)(puVar1 + 0xf8) = 0; + *(undefined8 *)(puVar1 + 0x100) = 0; + *(undefined8 *)(puVar1 + 0x108) = 0; + *(undefined **)(puVar1 + 8) = puVar8 + 0x40; + *(undefined **)puVar1 = puVar3; + FUN_003d2728(puVar4,puVar2); + puVar1 = PTR_DAT_00501d50; + puVar4 = PTR_DAT_00501d50 + 8; + FUN_003d347c(puVar4); + puVar8 = PTR_DAT_00501e90; + puVar2 = PTR_DAT_00501e70; + puVar3 = PTR_DAT_00501e90 + 0x18; + *(undefined8 *)(puVar1 + 0xe0) = 0; + puVar1[0xe8] = 0; + puVar1[0xe9] = 0; + *(undefined8 *)(puVar1 + 0xf0) = 0; + *(undefined8 *)(puVar1 + 0xf8) = 0; + *(undefined8 *)(puVar1 + 0x100) = 0; + *(undefined8 *)(puVar1 + 0x108) = 0; + *(undefined **)(puVar1 + 8) = puVar8 + 0x40; + *(undefined **)puVar1 = puVar3; + FUN_003d2728(puVar4,puVar2); + puVar1 = PTR_DAT_00501c50; + puVar2 = PTR_DAT_00501a68; + puVar3 = PTR_DAT_00501a38; + uVar5 = *(uint *)(PTR_DAT_00501c50 + 0x20); + puVar4 = PTR_DAT_00501c78 + 0x10; + *(undefined **)(PTR_DAT_00501e20 + 0xe8) = PTR_DAT_00501a38; + *(uint *)(puVar1 + 0x20) = uVar5 | 0x2000; + *(undefined **)(puVar1 + 0xe0) = puVar3; + *(undefined **)puVar2 = puVar4; + *(undefined8 *)(puVar2 + 8) = 0; + *(undefined8 *)(puVar2 + 0x10) = 0; + *(undefined8 *)(puVar2 + 0x18) = 0; + *(undefined8 *)(puVar2 + 0x20) = 0; + *(undefined8 *)(puVar2 + 0x28) = 0; + *(undefined8 *)(puVar2 + 0x30) = 0; + FUN_003ef168(puVar2 + 0x38); + puVar10 = PTR_DAT_00501b10; + puVar8 = PTR___sF_00501a80; + puVar3 = PTR_DAT_00501b10 + 0x38; + *(undefined4 *)(puVar2 + 0x48) = 0xffffffff; + puVar1 = PTR_DAT_00501ac8; + *(undefined **)puVar10 = puVar4; + *(undefined8 *)(puVar10 + 8) = 0; + puVar1 = puVar1 + 0x10; + *(undefined8 *)(puVar10 + 0x10) = 0; + *(undefined8 *)(puVar10 + 0x18) = 0; + *(undefined8 *)(puVar10 + 0x20) = 0; + *(undefined8 *)(puVar10 + 0x28) = 0; + *(undefined8 *)(puVar10 + 0x30) = 0; + *(undefined **)(puVar2 + 0x40) = puVar8 + 0x98; + *(undefined **)puVar2 = puVar1; + FUN_003ef168(puVar3); + puVar9 = PTR_DAT_00501ad8; + puVar3 = PTR_DAT_00501ad8 + 0x38; + *(undefined **)PTR_DAT_00501ad8 = puVar4; + *(undefined8 *)(puVar9 + 8) = 0; + *(undefined8 *)(puVar9 + 0x10) = 0; + *(undefined8 *)(puVar9 + 0x18) = 0; + *(undefined8 *)(puVar9 + 0x20) = 0; + *(undefined8 *)(puVar9 + 0x28) = 0; + *(undefined8 *)(puVar9 + 0x30) = 0; + *(undefined **)puVar10 = puVar1; + *(undefined **)(puVar10 + 0x40) = puVar8; + *(undefined4 *)(puVar10 + 0x48) = 0xffffffff; + FUN_003ef168(puVar3); + puVar10 = PTR_DAT_00501de8; + *(undefined **)(puVar9 + 0x40) = puVar8 + 0x130; + *(undefined **)puVar9 = puVar1; + *(undefined4 *)(puVar9 + 0x48) = 0xffffffff; + FUN_003d347c(puVar10 + 8); + puVar3 = PTR_DAT_00501b90; + puVar4 = PTR_DAT_00501b90 + 0x18; + *(undefined8 *)(puVar10 + 0xe0) = 0; + *(undefined4 *)(puVar10 + 0xe8) = 0; + puVar10[0xec] = 0; + *(undefined8 *)(puVar10 + 0xf0) = 0; + *(undefined8 *)(puVar10 + 0xf8) = 0; + *(undefined8 *)(puVar10 + 0x100) = 0; + *(undefined8 *)(puVar10 + 0x108) = 0; + *(undefined **)(puVar10 + 8) = puVar3 + 0x40; + *(undefined **)puVar10 = puVar4; + FUN_003d3008(puVar10 + 8,puVar2); + puVar2 = PTR_DAT_00501fc0; + puVar4 = PTR_DAT_00501fc0 + 0x10; + FUN_003d347c(puVar4); + puVar1 = PTR_DAT_00501b10; + *(undefined8 *)(puVar2 + 0xe8) = 0; + puVar3 = PTR_DAT_005019c0; + *(undefined4 *)(puVar2 + 0xf0) = 0; + puVar2[0xf4] = 0; + *(undefined8 *)(puVar2 + 0xf8) = 0; + *(undefined8 *)(puVar2 + 0x100) = 0; + *(undefined8 *)(puVar2 + 0x108) = 0; + *(undefined8 *)(puVar2 + 0x110) = 0; + *(undefined **)(puVar2 + 0x10) = puVar3 + 0x40; + *(undefined **)puVar2 = puVar3 + 0x18; + *(undefined8 *)(puVar2 + 8) = 0; + FUN_003d3008(puVar4,puVar1); + puVar8 = PTR_DAT_00501ee0; + puVar4 = PTR_DAT_00501ee0 + 8; + FUN_003d347c(puVar4); + puVar2 = PTR_DAT_00501b90; + puVar1 = PTR_DAT_00501ad8; + puVar3 = PTR_DAT_00501b90 + 0x18; + *(undefined8 *)(puVar8 + 0xe0) = 0; + *(undefined4 *)(puVar8 + 0xe8) = 0; + puVar8[0xec] = 0; + *(undefined8 *)(puVar8 + 0xf0) = 0; + *(undefined8 *)(puVar8 + 0xf8) = 0; + *(undefined8 *)(puVar8 + 0x100) = 0; + *(undefined8 *)(puVar8 + 0x108) = 0; + *(undefined **)(puVar8 + 8) = puVar2 + 0x40; + *(undefined **)puVar8 = puVar3; + FUN_003d3008(puVar4,puVar1); + puVar8 = PTR_DAT_00501d08; + puVar4 = PTR_DAT_00501d08 + 8; + FUN_003d347c(puVar4); + puVar2 = PTR_DAT_00501b90; + puVar1 = PTR_DAT_00501ad8; + puVar3 = PTR_DAT_00501b90 + 0x18; + *(undefined8 *)(puVar8 + 0xe0) = 0; + *(undefined4 *)(puVar8 + 0xe8) = 0; + puVar8[0xec] = 0; + *(undefined8 *)(puVar8 + 0xf0) = 0; + *(undefined8 *)(puVar8 + 0xf8) = 0; + *(undefined8 *)(puVar8 + 0x100) = 0; + *(undefined8 *)(puVar8 + 0x108) = 0; + *(undefined **)(puVar8 + 8) = puVar2 + 0x40; + *(undefined **)puVar8 = puVar3; + FUN_003d3008(puVar4,puVar1); + puVar1 = PTR_DAT_00501ee0; + puVar4 = PTR_DAT_00501de8; + puVar3 = PTR_pthread_create_00501cc8; + uVar5 = *(uint *)(PTR_DAT_00501ee0 + 0x20); + *(undefined **)(PTR_DAT_00501fc0 + 0xe8) = PTR_DAT_00501de8; + *(undefined **)(puVar1 + 0xe0) = puVar4; + *(uint *)(puVar1 + 0x20) = uVar5 | 0x2000; + puVar4 = PTR_DAT_005018c0; + if (puVar3 != (undefined *)0x0) { + do { + cVar6 = '\x01'; + bVar7 = (bool)ExclusiveMonitorPass(puVar4,0x10); + if (bVar7) { + *(int *)puVar4 = *(int *)puVar4 + 1; + cVar6 = ExclusiveMonitorsStatus(); + } + } while (cVar6 != '\0'); + return; + } + *(int *)PTR_DAT_005018c0 = *(int *)PTR_DAT_005018c0 + 1; + return; +} + + +================================================================== + +### FUNC 003d3fac (160 bytes) name=FUN_003d3fac + +void FUN_003d3fac(void) + +{ + int iVar1; + char cVar2; + bool bVar3; + undefined *puVar4; + + puVar4 = PTR_DAT_005018c0; + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar1 = *(int *)PTR_DAT_005018c0; + *(int *)PTR_DAT_005018c0 = iVar1 + -1; + } + else { + do { + iVar1 = *(int *)puVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(puVar4,0x10); + if (bVar3) { + *(int *)puVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar1 == 2) { + FUN_003f0db8(PTR_DAT_00501a38); + FUN_003f0db8(PTR_DAT_00501c50); + FUN_003f0db8(PTR_DAT_00501d50); + FUN_003f34dc(PTR_DAT_00501de8); + FUN_003f34dc(PTR_DAT_00501ee0); + FUN_003f34dc(PTR_DAT_00501d08); + return; + } + return; +} + + +================================================================== + +### FUNC 003d4058 (560 bytes) name=FUN_003d4058 + +byte FUN_003d4058(byte param_1) + +{ + undefined *puVar1; + byte bVar2; + undefined *puVar3; + undefined1 auStack_8 [8]; + + puVar1 = PTR_DAT_00501f48; + bVar2 = *PTR_DAT_00501f48; + if (bVar2 <= param_1) { + return bVar2; + } + FUN_003d38d4(auStack_8); + *puVar1 = param_1; + puVar1 = PTR_DAT_00501bb0 + 0x10; + puVar3 = PTR_DAT_00501ba0 + 0x38; + *(undefined **)PTR_DAT_00501ba0 = puVar1; + FUN_003ed708(puVar3); + puVar3 = PTR_DAT_005018b8 + 0x38; + *(undefined **)PTR_DAT_005018b8 = puVar1; + FUN_003ed708(puVar3); + puVar3 = PTR_DAT_00501e70 + 0x38; + *(undefined **)PTR_DAT_00501e70 = puVar1; + FUN_003ed708(puVar3); + puVar1 = PTR_DAT_00501c78 + 0x10; + puVar3 = PTR_DAT_00501a68 + 0x38; + *(undefined **)PTR_DAT_00501a68 = puVar1; + FUN_003ed708(puVar3); + puVar3 = PTR_DAT_00501b10 + 0x38; + *(undefined **)PTR_DAT_00501b10 = puVar1; + FUN_003ed708(puVar3); + puVar3 = PTR_DAT_00501ad8 + 0x38; + *(undefined **)PTR_DAT_00501ad8 = puVar1; + FUN_003ed708(puVar3); + FUN_0041b10c(PTR_DAT_00501918,PTR___sF_00501a80 + 0x98,0x10,0x400); + FUN_0041b10c(PTR_DAT_00501b48,PTR___sF_00501a80,8,0x400); + FUN_0041b10c(PTR_DAT_00501a28,PTR___sF_00501a80 + 0x130,0x10,0x400); + FUN_003d24bc(PTR_DAT_00501a38 + 8,PTR_DAT_00501918); + FUN_003d24bc(PTR_DAT_00501e20 + 0x10,PTR_DAT_00501b48); + FUN_003d24bc(PTR_DAT_00501c50 + 8,PTR_DAT_00501a28); + FUN_003d24bc(PTR_DAT_00501d50 + 8,PTR_DAT_00501a28); + FUN_0041b360(PTR_DAT_00501b30,PTR___sF_00501a80 + 0x98,0x10,0x400); + FUN_0041b360(PTR_DAT_00501d18,PTR___sF_00501a80,8,0x400); + FUN_0041b360(PTR_DAT_00501fb0,PTR___sF_00501a80 + 0x130,0x10,0x400); + FUN_003d2e68(PTR_DAT_00501de8 + 8,PTR_DAT_00501b30); + FUN_003d2e68(PTR_DAT_00501fc0 + 0x10,PTR_DAT_00501d18); + FUN_003d2e68(PTR_DAT_00501ee0 + 8,PTR_DAT_00501fb0); + FUN_003d2e68(PTR_DAT_00501d08 + 8,PTR_DAT_00501fb0); + FUN_003d3fac(auStack_8); + return bVar2; +} + + +================================================================== + +### FUNC 003d429c (80 bytes) name=FUN_003d429c + +void FUN_003d429c(long param_1) + +{ + undefined1 auStack_8 [8]; + + *(undefined8 *)(param_1 + 8) = 6; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 0x1002; + FUN_003ef168(auStack_8); + FUN_003ed668(param_1 + 0xd0,auStack_8); + FUN_003ed708(auStack_8); + return; +} + + +================================================================== + +### FUNC 003d42ec (92 bytes) name=FUN_003d42ec + +undefined8 FUN_003d42ec(undefined8 param_1,long param_2,undefined8 param_3) + +{ + FUN_003ece1c(param_1,param_2 + 0xd0); + FUN_003ed668(param_2 + 0xd0,param_3); + FUN_003d3730(param_2,1); + return param_1; +} + + +================================================================== + +### FUNC 003d4348 (44 bytes) name=FUN_003d4348 + +void FUN_003d4348(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7bd8; + param_1[1] = 0; + param_1[2] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003d4374 (16 bytes) name=FUN_003d4374 + +void FUN_003d4374(long *param_1) + +{ + FUN_003d4348((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003d4384 (72 bytes) name=FUN_003d4384 + +void FUN_003d4384(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7bd8; + param_1[1] = 0; + param_1[2] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 2); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d43cc (16 bytes) name=FUN_003d43cc + +void FUN_003d43cc(long *param_1) + +{ + FUN_003d4384((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003d43dc (44 bytes) name=FUN_003d43dc + +void FUN_003d43dc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7c38; + param_1[1] = 0; + param_1[2] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003d4408 (16 bytes) name=FUN_003d4408 + +void FUN_003d4408(long *param_1) + +{ + FUN_003d43dc((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003d4418 (72 bytes) name=FUN_003d4418 + +void FUN_003d4418(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7c38; + param_1[1] = 0; + param_1[2] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 2); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003d4460 (16 bytes) name=FUN_003d4460 + +void FUN_003d4460(long *param_1) + +{ + FUN_003d4418((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003d4470 (44 bytes) name=FUN_003d4470 + +void FUN_003d4470(long *param_1,long *param_2,undefined8 param_3) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),param_3); + return; +} + + +================================================================== + +### FUNC 003d449c (120 bytes) name=FUN_003d449c + +void FUN_003d449c(undefined8 *param_1,undefined8 param_2) + +{ + FUN_003d347c(param_1 + 2); + param_1[0x1d] = 0; + *(undefined1 *)(param_1 + 0x1e) = 0; + *(undefined1 *)((long)param_1 + 0xf1) = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + *param_1 = &PTR_FUN_004f7bd8; + param_1[1] = 0; + param_1[2] = &PTR_FUN_004f7c00; + FUN_003d2728(param_1 + 2,param_2); + return; +} + + +================================================================== + +### FUNC 003d4538 (24 bytes) name=FUN_003d4538 + +void FUN_003d4538(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + return; +} + + +================================================================== + +### FUNC 003d4550 (20 bytes) name=FUN_003d4550 + +void FUN_003d4550(undefined8 param_1,code *param_2) + +{ + (*param_2)(); + return; +} + + +================================================================== + +### FUNC 003d4564 (48 bytes) name=FUN_003d4564 + +long * FUN_003d4564(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003d4594 (48 bytes) name=FUN_003d4594 + +long * FUN_003d4594(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003d45c4 (8 bytes) name=FUN_003d45c4 + +undefined8 FUN_003d45c4(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 003d45cc (148 bytes) name=FUN_003d45cc + +void FUN_003d45cc(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined1 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar2[7] != '\0') { + FUN_003da498(param_1,param_2,param_3,*(undefined1 *)((long)plVar2 + 0x43)); + return; + } + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,10); + FUN_003da498(param_1,param_2,param_3,uVar1); + return; +} + + +================================================================== + +### FUNC 003d4660 (44 bytes) name=FUN_003d4660 + +void FUN_003d4660(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + return; +} + + +================================================================== + +### FUNC 003d468c (116 bytes) name=FUN_003d468c + +void FUN_003d468c(undefined8 *param_1) + +{ + FUN_003d347c(param_1 + 2); + param_1[0x1d] = 0; + *(undefined1 *)(param_1 + 0x1e) = 0; + *(undefined1 *)((long)param_1 + 0xf1) = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + *param_1 = &PTR_FUN_004f7bd8; + param_1[1] = 0; + param_1[2] = &PTR_FUN_004f7c00; + FUN_003d2728(param_1 + 2,0); + return; +} + + +================================================================== + +### FUNC 003d4724 (412 bytes) name=FUN_003d4724 + +void FUN_003d4724(undefined1 *param_1,long *param_2,char param_3) + +{ + int iVar1; + uint uVar2; + ulong uVar3; + byte *pbVar4; + uint uVar5; + byte *pbVar6; + long lVar7; + long *plVar8; + long lVar9; + + lVar7 = *(long *)(*param_2 + -0x18); + *param_1 = 0; + lVar7 = (long)param_2 + lVar7; + uVar2 = *(uint *)(lVar7 + 0x20); + if (uVar2 == 0) { + if (*(long *)(lVar7 + 0xd8) == 0) { + if (param_3 != '\0') goto LAB_003d477c; +LAB_003d47b8: + if ((*(uint *)(lVar7 + 0x18) >> 0xc & 1) != 0) { + plVar8 = *(long **)(lVar7 + 0xe8); + if ((byte *)plVar8[2] < (byte *)plVar8[3]) { + lVar9 = *(long *)(lVar7 + 0xf0); + uVar3 = (ulong)*(byte *)plVar8[2]; + if (lVar9 == 0) { +LAB_003d48bc: + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + } + else { + uVar3 = (**(code **)(*plVar8 + 0x48))(plVar8); + lVar7 = (long)param_2 + *(long *)(*param_2 + -0x18); + lVar9 = *(long *)(lVar7 + 0xf0); + if (lVar9 == 0) goto LAB_003d48bc; + if ((int)uVar3 == -1) { +LAB_003d4858: + uVar2 = *(uint *)(lVar7 + 0x20); + uVar5 = 2; + goto LAB_003d4798; + } + } + if ((*(byte *)(*(long *)(lVar9 + 0x30) + (uVar3 & 0xff)) >> 3 & 1) != 0) { + do { + pbVar4 = (byte *)plVar8[3]; + if (pbVar4 <= (byte *)plVar8[2]) { + iVar1 = (**(code **)(*plVar8 + 0x50))(plVar8); + if (iVar1 != -1) { + pbVar6 = (byte *)plVar8[2]; + pbVar4 = (byte *)plVar8[3]; + goto LAB_003d4808; + } +LAB_003d484c: + lVar7 = (long)param_2 + *(long *)(*param_2 + -0x18); + goto LAB_003d4858; + } + pbVar6 = (byte *)plVar8[2] + 1; + plVar8[2] = (long)pbVar6; +LAB_003d4808: + if (pbVar6 < pbVar4) { + uVar2 = (uint)*pbVar6; + } + else { + uVar2 = (**(code **)(*plVar8 + 0x48))(plVar8); + if (uVar2 == 0xffffffff) goto LAB_003d484c; + } + } while ((*(byte *)(*(long *)(lVar9 + 0x30) + (ulong)(byte)uVar2) >> 3 & 1) != 0); + lVar7 = (long)param_2 + *(long *)(*param_2 + -0x18); + } + } + } + else { + FUN_003f0db8(); + lVar7 = (long)param_2 + *(long *)(*param_2 + -0x18); + if (param_3 == '\0') goto LAB_003d47b8; + } + uVar2 = *(uint *)(lVar7 + 0x20); + if (uVar2 == 0) { +LAB_003d477c: + *param_1 = 1; + return; + } + } + uVar5 = 0; +LAB_003d4798: + FUN_003d2254(lVar7,uVar5 | 4 | uVar2); + return; +} + + +================================================================== + +### FUNC 003d48c0 (252 bytes) name=FUN_003d48c0 + +long * FUN_003d48c0(long *param_1,undefined2 *param_2) + +{ + long lVar1; + long *plVar2; + char local_10 [4]; + uint local_c; + long local_8; + + FUN_003d4724(local_10,param_1,0); + if (local_10[0] != '\0') { + local_c = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_c,&local_8) + ; + if (local_8 < -0x8000) { + *param_2 = 0x8000; + } + else { + if (local_8 < 0x8000) { + *param_2 = (short)local_8; + if (local_c == 0) { + return param_1; + } + goto LAB_003d497c; + } + *param_2 = 0x7fff; + } + local_c = local_c | 4; + if (local_c != 0) { +LAB_003d497c: + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_c | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d4a48 (228 bytes) name=FUN_003d4a48 + +long * FUN_003d4a48(long *param_1,undefined4 *param_2) + +{ + long lVar1; + long *plVar2; + undefined4 uVar3; + char local_10 [4]; + uint local_c; + long local_8; + + FUN_003d4724(local_10,param_1,0); + if (local_10[0] != '\0') { + local_c = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_c,&local_8) + ; + uVar3 = 0x80000000; + if ((local_8 < -0x80000000) || (uVar3 = 0x7fffffff, 0x7fffffff < local_8)) { + *param_2 = uVar3; + local_c = local_c | 4; + } + else { + *param_2 = (int)local_8; + } + if (local_c != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_c | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d4bb8 (188 bytes) name=FUN_003d4bb8 + +long * FUN_003d4bb8(long *param_1,long param_2) + +{ + uint uVar1; + long lVar2; + char local_8 [7]; + char local_1; + + FUN_003d4724(local_8,param_1,0); + if ((param_2 == 0) || (local_8[0] == '\0')) { + if (param_2 != 0) { + return param_1; + } + uVar1 = 4; + } + else { + lVar2 = FUN_003fd410(*(undefined8 *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8),param_2 + ,&local_1); + if (lVar2 == 0) { + uVar1 = 6; + if (local_1 == '\0') { + uVar1 = 4; + } + } + else { + if (local_1 == '\0') { + return param_1; + } + uVar1 = 2; + } + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,uVar1 | *(uint *)(lVar2 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d4cf8 (212 bytes) name=FUN_003d4cf8 + +ulong FUN_003d4cf8(long *param_1) + +{ + long lVar1; + uint uVar2; + ulong uVar3; + byte *pbVar4; + long *plVar5; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] == '\0') { + uVar2 = 4; + if (param_1[1] == 0) { +LAB_003d4d8c: + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uVar2 | *(uint *)(lVar1 + 0x20)); + return 0xffffffff; + } + uVar3 = 0xffffffff; + } + else { + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar4 = (byte *)plVar5[2]; + if (pbVar4 < (byte *)plVar5[3]) { + uVar3 = (ulong)*pbVar4; + plVar5[2] = (long)(pbVar4 + 1); + } + else { + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5); + if ((int)uVar3 == -1) { + uVar2 = 6; + if (param_1[1] != 0) { + uVar2 = 2; + } + goto LAB_003d4d8c; + } + } + param_1[1] = 1; + } + return uVar3; +} + + +================================================================== + +### FUNC 003d4e4c (204 bytes) name=FUN_003d4e4c + +long * FUN_003d4e4c(long *param_1,undefined1 *param_2) + +{ + long lVar1; + uint uVar2; + long *plVar3; + byte *pbVar4; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar4 = (byte *)plVar3[2]; + if (pbVar4 < (byte *)plVar3[3]) { + uVar2 = (uint)*pbVar4; + plVar3[2] = (long)(pbVar4 + 1); + } + else { + uVar2 = (**(code **)(*plVar3 + 0x50))(); + if (uVar2 == 0xffffffff) { + uVar2 = 6; + if (param_1[1] != 0) { + uVar2 = 2; + } + goto LAB_003d4ebc; + } + } + param_1[1] = 1; + *param_2 = (char)uVar2; + } + if (param_1[1] != 0) { + return param_1; + } + uVar2 = 4; +LAB_003d4ebc: + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uVar2 | *(uint *)(lVar1 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d4f9c (392 bytes) name=FUN_003d4f9c + +long * FUN_003d4f9c(long *param_1,undefined1 *param_2,long param_3,uint param_4) + +{ + long lVar1; + uint uVar2; + int iVar3; + byte *pbVar4; + uint uVar5; + byte *pbVar6; + long *plVar7; + undefined1 *puVar8; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] == '\0') { + uVar5 = 0; + } + else { + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar4 = (byte *)plVar7[2]; + if ((byte *)plVar7[3] <= pbVar4) goto LAB_003d5058; +LAB_003d4ffc: + uVar2 = (uint)*pbVar4; +LAB_003d5000: + puVar8 = param_2; + if (uVar2 != 0xffffffff && uVar2 != (param_4 & 0xff)) { + do { + param_2 = puVar8; + if (param_3 <= param_1[1] + 1) break; + param_2 = puVar8 + 1; + *puVar8 = (char)uVar2; + pbVar4 = (byte *)plVar7[2]; + pbVar6 = (byte *)plVar7[3]; + param_1[1] = param_1[1] + 1; + if (pbVar4 < pbVar6) { + pbVar4 = pbVar4 + 1; + plVar7[2] = (long)pbVar4; + } + else { + iVar3 = (**(code **)(*plVar7 + 0x50))(plVar7); + uVar2 = 0xffffffff; + if (iVar3 == -1) goto LAB_003d5000; + pbVar4 = (byte *)plVar7[2]; + pbVar6 = (byte *)plVar7[3]; + } + if (pbVar4 < pbVar6) goto LAB_003d4ffc; +LAB_003d5058: + uVar2 = (**(code **)(*plVar7 + 0x48))(plVar7); + puVar8 = param_2; + if (uVar2 == 0xffffffff || uVar2 == (param_4 & 0xff)) break; + } while( true ); + } + uVar5 = 0; + if (uVar2 == 0xffffffff) { + uVar5 = 2; + } + } + if (0 < param_3) { + *param_2 = 0; + } + if (param_1[1] == 0) { + uVar5 = uVar5 | 4; + } + else if (uVar5 == 0) { + return param_1; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uVar5 | *(uint *)(lVar1 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d51ac (148 bytes) name=FUN_003d51ac + +void FUN_003d51ac(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined1 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar2[7] != '\0') { + FUN_003d4f9c(param_1,param_2,param_3,*(undefined1 *)((long)plVar2 + 0x43)); + return; + } + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,10); + FUN_003d4f9c(param_1,param_2,param_3,uVar1); + return; +} + + +================================================================== + +### FUNC 003d5240 (508 bytes) name=FUN_003d5240 + +long * FUN_003d5240(long *param_1,long *param_2,byte param_3) + +{ + long lVar1; + byte bVar2; + uint uVar3; + int iVar4; + byte *pbVar5; + uint uVar6; + byte *pbVar7; + long *plVar8; + uint uVar9; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] == '\0') goto LAB_003d5384; + plVar8 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + uVar3 = (uint)param_3; + if ((byte *)plVar8[2] < (byte *)plVar8[3]) { + bVar2 = *(byte *)plVar8[2]; + uVar9 = (uint)bVar2; + uVar6 = (uint)bVar2; + if (uVar3 == uVar9) goto LAB_003d5384; +LAB_003d52ac: + do { + while( true ) { + if ((undefined1 *)param_2[5] < (undefined1 *)param_2[6]) { + *(undefined1 *)param_2[5] = (char)uVar6; + param_2[5] = param_2[5] + 1; + } + else { + iVar4 = (**(code **)(*param_2 + 0x68))(param_2); + if (iVar4 == -1) goto LAB_003d530c; + } + pbVar5 = (byte *)plVar8[2]; + pbVar7 = (byte *)plVar8[3]; + param_1[1] = param_1[1] + 1; + if (pbVar5 < pbVar7) { + pbVar5 = pbVar5 + 1; + plVar8[2] = (long)pbVar5; + } + else { + iVar4 = (**(code **)(*plVar8 + 0x50))(plVar8); + if (iVar4 == -1) goto LAB_003d5314; + pbVar5 = (byte *)plVar8[2]; + pbVar7 = (byte *)plVar8[3]; + } + if (pbVar7 <= pbVar5) break; + uVar9 = (uint)*pbVar5; + uVar6 = uVar9; + if (uVar3 == uVar9) goto LAB_003d530c; + } + uVar9 = (**(code **)(*plVar8 + 0x48))(plVar8); + uVar6 = uVar9 & 0xff; + } while (uVar3 != uVar9 && uVar9 != 0xffffffff); + } + else { + uVar9 = (**(code **)(*plVar8 + 0x48))(plVar8); + uVar6 = uVar9 & 0xff; + if ((uVar9 != 0xffffffff) && (uVar3 != uVar9)) goto LAB_003d52ac; + } +LAB_003d530c: + if (uVar9 == 0xffffffff) { +LAB_003d5314: + uVar3 = 6; + if (param_1[1] != 0) { + uVar3 = 2; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uVar3 | *(uint *)(lVar1 + 0x20)); + return param_1; + } +LAB_003d5384: + if (param_1[1] != 0) { + return param_1; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; +} + + +================================================================== + +### FUNC 003d54bc (140 bytes) name=FUN_003d54bc + +void FUN_003d54bc(long *param_1,undefined8 param_2) + +{ + undefined1 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar2[7] != '\0') { + FUN_003d5240(param_1,param_2,*(undefined1 *)((long)plVar2 + 0x43)); + return; + } + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,10); + FUN_003d5240(param_1,param_2,uVar1); + return; +} + + +================================================================== + +### FUNC 003d5548 (172 bytes) name=FUN_003d5548 + +long * FUN_003d5548(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((ulong)plVar3[2] < (ulong)plVar3[3]) { + plVar3[2] = plVar3[2] + 1; + } + else { + iVar2 = (**(code **)(*plVar3 + 0x50))(); + if (iVar2 == -1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 2); + return param_1; + } + } + param_1[1] = 1; + } + return param_1; +} + + +================================================================== + +### FUNC 003d5678 (172 bytes) name=FUN_003d5678 + +uint FUN_003d5678(long *param_1) + +{ + long lVar1; + long *plVar2; + uint uVar3; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] == '\0') { + uVar3 = 0xffffffff; + } + else { + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar2[2] < (byte *)plVar2[3]) { + uVar3 = (uint)*(byte *)plVar2[2]; + } + else { + uVar3 = (**(code **)(*plVar2 + 0x48))(); + if (uVar3 == 0xffffffff) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 2); + return 0xffffffff; + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 003d57a4 (176 bytes) name=FUN_003d57a4 + +long * FUN_003d57a4(long *param_1,undefined8 param_2,long param_3) + +{ + long lVar1; + long *plVar2; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar1 = (**(code **)(*plVar2 + 0x40))(plVar2,param_2,param_3); + param_1[1] = lVar1; + /* catch() { ... } // from try @ 003d5cc4 with catch @ 003d581c */ + if (param_3 != lVar1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 6); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d58d8 (264 bytes) name=FUN_003d58d8 + +long FUN_003d58d8(long *param_1,undefined8 param_2,long param_3) + +{ + long *plVar1; + long lVar2; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar1 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar2 = plVar1[3] - plVar1[2]; + if (lVar2 == 0) { + lVar2 = (**(code **)(*plVar1 + 0x38))(); + } + if (0 < lVar2) { + if (param_3 < lVar2) { + lVar2 = param_3; + } + plVar1 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar2 = (**(code **)(*plVar1 + 0x40))(plVar1,param_2,lVar2); + param_1[1] = lVar2; + return lVar2; + } + if (lVar2 == -1) { + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 2); + return param_1[1]; + } + } + return param_1[1]; +} + + +================================================================== + +### FUNC 003d5a68 (220 bytes) name=FUN_003d5a68 + +long * FUN_003d5a68(long *param_1,char param_2) + +{ + int iVar1; + long *plVar2; + long lVar3; + ulong uVar4; + char local_8 [8]; + + param_1[1] = 0; + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) & 0xfffffffd); + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar3 + 0xe8); + if (plVar2 != (long *)0x0) { + uVar4 = plVar2[2]; + if (((ulong)plVar2[1] < uVar4) && (*(char *)(uVar4 - 1) == param_2)) { + plVar2[2] = uVar4 - 1; + return param_1; + } + iVar1 = (**(code **)(*plVar2 + 0x58))(plVar2,param_2); + if (iVar1 != -1) { + return param_1; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + } + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 1); + } + return param_1; +} + + +================================================================== + +### FUNC 003d5bc8 (204 bytes) name=FUN_003d5bc8 + +long * FUN_003d5bc8(long *param_1) + +{ + int iVar1; + long *plVar2; + long lVar3; + char local_8 [8]; + + param_1[1] = 0; + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) & 0xfffffffd); + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar3 + 0xe8); + if (plVar2 == (long *)0x0) { +LAB_003d5c70: + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return param_1; + } + if ((ulong)plVar2[1] < (ulong)plVar2[2]) { + plVar2[2] = plVar2[2] - 1; + } + else { + iVar1 = (**(code **)(*plVar2 + 0x58))(plVar2,0xffffffff); + /* try { // try from 003d5c5c to 004d5c5f has its CatchHandler @ 003d5ca4 */ + if (iVar1 == -1) { + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + goto LAB_003d5c70; + } + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d5d18 (160 bytes) name=FUN_003d5d18 + +undefined8 FUN_003d5d18(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + char local_8 [8]; + + FUN_003d4724(local_8,param_1,1); + if ((local_8[0] != '\0') && + (plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), plVar3 != (long *)0x0 + )) { + iVar2 = (**(code **)(*plVar3 + 0x30))(); + if (iVar2 != -1) { + return 0; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return 0xffffffff; + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 003d5e40 (220 bytes) name=FUN_003d5e40 + +undefined1 [16] FUN_003d5e40(long *param_1) + +{ + undefined8 uVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + long *plVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + undefined1 auVar11 [16]; + char local_8 [8]; + + FUN_003d4724(local_8,param_1,1); + if ((local_8[0] == '\0') || + ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) != 0)) { + uVar2 = 0; + uVar10 = 0; + uVar9 = 0; + uVar8 = 0; + uVar7 = 0; + uVar6 = 0; + uVar4 = 0; + uVar3 = 0; + uVar1 = 0xffffffffffffffff; + } + else { + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + auVar11 = (**(code **)(*plVar5 + 0x20))(plVar5,0,1,8); + uVar2 = auVar11._8_8_; + uVar1 = auVar11._0_8_; + uVar4 = uVar2 >> 8 & 0xff; + uVar6 = uVar2 >> 0x10 & 0xff; + uVar3 = uVar2 & 0xff; + uVar7 = uVar2 >> 0x18 & 0xff; + uVar8 = uVar2 >> 0x20 & 0xff; + uVar9 = uVar2 >> 0x28 & 0xff; + uVar10 = uVar2 >> 0x30 & 0xff; + uVar2 = uVar2 >> 0x38; + } + auVar11._8_8_ = + uVar3 | uVar4 << 8 | uVar6 << 0x10 | uVar7 << 0x18 | uVar8 << 0x20 | uVar9 << 0x28 | + uVar10 << 0x30 | uVar2 << 0x38; + auVar11._0_8_ = uVar1; + return auVar11; +} + + +================================================================== + +### FUNC 003d5fa0 (216 bytes) name=FUN_003d5fa0 + +long * FUN_003d5fa0(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + long *plVar2; + char local_8 [8]; + + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) & 0xfffffffd); + FUN_003d4724(local_8,param_1,1); + if (((local_8[0] != '\0') && + ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0)) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x28))(plVar2,param_2,param_3,8), lVar1 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003d60fc (216 bytes) name=FUN_003d60fc + +long * FUN_003d60fc(long *param_1,undefined8 param_2,undefined4 param_3) + +{ + long lVar1; + long *plVar2; + char local_8 [8]; + + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) & 0xfffffffd); + FUN_003d4724(local_8,param_1,1); + if (((local_8[0] != '\0') && + ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0)) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x20))(plVar2,param_2,param_3,8), lVar1 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003d6258 (8 bytes) name=FUN_003d6258 + +undefined1 FUN_003d6258(undefined1 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 003d6260 (280 bytes) name=FUN_003d6260 + +long * FUN_003d6260(long *param_1) + +{ + int iVar1; + long lVar2; + byte *pbVar3; + ulong uVar4; + byte *pbVar5; + long *plVar6; + undefined1 auStack_8 [8]; + + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + lVar2 = FUN_003de994(auStack_8); + FUN_003ed708(auStack_8); + plVar6 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar3 = (byte *)plVar6[2]; + /* try { // try from 003d62c0 to 004d62c3 has its CatchHandler @ 003d631c */ + if ((byte *)plVar6[3] <= pbVar3) goto LAB_003d630c; + do { + uVar4 = (ulong)*pbVar3; + while( true ) { + if ((*(byte *)(*(long *)(lVar2 + 0x30) + (uVar4 & 0xff)) >> 3 & 1) == 0) { + return param_1; + } + pbVar5 = (byte *)plVar6[3]; + if ((byte *)plVar6[2] < pbVar5) { + pbVar3 = (byte *)plVar6[2] + 1; + plVar6[2] = (long)pbVar3; + } + else { + iVar1 = (**(code **)(*plVar6 + 0x50))(plVar6); + if (iVar1 == -1) goto LAB_003d6324; + pbVar3 = (byte *)plVar6[2]; + pbVar5 = (byte *)plVar6[3]; + } + if (pbVar3 < pbVar5) break; +LAB_003d630c: + uVar4 = (**(code **)(*plVar6 + 0x48))(plVar6); + /* catch() { ... } // from try @ 003d62c0 with catch @ 003d631c */ + if ((int)uVar4 == -1) { +LAB_003d6324: + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003d633c to 004d633f has its CatchHandler @ 003d5d08 */ + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 2); + return param_1; + } + } + } while( true ); +} + + +================================================================== + +### FUNC 003d638c (172 bytes) name=FUN_003d638c + +long * FUN_003d638c(long *param_1,undefined1 *param_2) + +{ + long lVar1; + uint uVar2; + long *plVar3; + byte *pbVar4; + char local_8 [8]; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar4 = (byte *)plVar3[2]; + if (pbVar4 < (byte *)plVar3[3]) { + uVar2 = (uint)*pbVar4; + plVar3[2] = (long)(pbVar4 + 1); + } + else { + uVar2 = (**(code **)(*plVar3 + 0x50))(); + if (uVar2 == 0xffffffff) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 6); + return param_1; + } + } + *param_2 = (char)uVar2; + } + return param_1; +} + + +================================================================== + +### FUNC 003d64bc (4 bytes) name=thunk_FUN_003d638c + +long * thunk_FUN_003d638c(long *param_1,undefined1 *param_2) + +{ + long lVar1; + uint uVar2; + long *plVar3; + byte *pbVar4; + char acStack_8 [8]; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar4 = (byte *)plVar3[2]; + if (pbVar4 < (byte *)plVar3[3]) { + uVar2 = (uint)*pbVar4; + plVar3[2] = (long)(pbVar4 + 1); + } + else { + uVar2 = (**(code **)(*plVar3 + 0x50))(); + if (uVar2 == 0xffffffff) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 6); + return param_1; + } + } + *param_2 = (char)uVar2; + } + return param_1; +} + + +================================================================== + +### FUNC 003d64c0 (4 bytes) name=thunk_FUN_003d638c + +long * thunk_FUN_003d638c(long *param_1,undefined1 *param_2) + +{ + long lVar1; + uint uVar2; + long *plVar3; + byte *pbVar4; + char acStack_8 [8]; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + pbVar4 = (byte *)plVar3[2]; + if (pbVar4 < (byte *)plVar3[3]) { + uVar2 = (uint)*pbVar4; + plVar3[2] = (long)(pbVar4 + 1); + } + else { + uVar2 = (**(code **)(*plVar3 + 0x50))(); + if (uVar2 == 0xffffffff) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 6); + return param_1; + } + } + *param_2 = (char)uVar2; + } + return param_1; +} + + +================================================================== + +### FUNC 003d64c4 (4 bytes) name=thunk_FUN_003daacc + +long * thunk_FUN_003daacc(long *param_1,undefined1 *param_2) + +{ + byte *pbVar1; + byte bVar2; + uint uVar3; + int iVar4; + long lVar5; + ulong uVar6; + byte *pbVar7; + void *__src; + byte *pbVar8; + long lVar9; + long lVar10; + size_t __n; + long *plVar11; + undefined1 *__dest; + long lVar12; + long lVar13; + char acStack_10 [8]; + undefined1 auStack_8 [8]; + + FUN_003d4724(acStack_10,param_1,0); + if (acStack_10[0] == '\0') { + lVar13 = *param_1; + uVar3 = 4; + } + else { + lVar13 = *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10); + if (lVar13 < 1) { + lVar13 = 0x7fffffffffffffff; + } + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + lVar5 = FUN_003de994(auStack_8); + FUN_003ed708(auStack_8); + plVar11 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar11[2] < (byte *)plVar11[3]) { + uVar6 = (ulong)*(byte *)plVar11[2]; + } + else { + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + lVar12 = 0; +LAB_003dab70: + uVar3 = (uint)uVar6; + __dest = param_2; + if (lVar12 < lVar13 + -1) { + while( true ) { + uVar3 = (uint)uVar6; + param_2 = __dest; + if (uVar3 == 0xffffffff) goto LAB_003dac9c; + lVar10 = *(long *)(lVar5 + 0x30); + if ((*(byte *)(lVar10 + (uVar6 & 0xff)) >> 3 & 1) != 0) goto LAB_003dab94; + __src = (void *)plVar11[2]; + lVar9 = (lVar13 - lVar12) + -1; + if (plVar11[3] - (long)__src < lVar9) { + lVar9 = plVar11[3] - (long)__src; + } + if (lVar9 < 2) { + *__dest = (char)uVar6; + param_2 = __dest + 1; + lVar12 = lVar12 + 1; + pbVar8 = (byte *)plVar11[3]; + if ((byte *)plVar11[2] < pbVar8) { + pbVar7 = (byte *)plVar11[2] + 1; + plVar11[2] = (long)pbVar7; + } + else { + iVar4 = (**(code **)(*plVar11 + 0x50))(plVar11); + uVar6 = 0xffffffff; + if (iVar4 == -1) goto LAB_003dab70; + pbVar7 = (byte *)plVar11[2]; + pbVar8 = (byte *)plVar11[3]; + } + if (pbVar7 < pbVar8) { + uVar6 = (ulong)*pbVar7; + } + else { + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + goto LAB_003dab70; + } + pbVar8 = (byte *)((long)__src + 1); + pbVar7 = (byte *)((long)__src + lVar9); + if (pbVar8 < pbVar7) { + bVar2 = *(byte *)(lVar10 + (ulong)*(byte *)((long)__src + 1)); + while (((bVar2 >> 3 & 1) == 0 && (pbVar1 = pbVar8 + 1, pbVar8 = pbVar7, pbVar1 != pbVar7)) + ) { + bVar2 = *(byte *)(lVar10 + (ulong)*pbVar1); + pbVar8 = pbVar1; + } + } + __n = (long)pbVar8 - (long)__src; + param_2 = __dest + __n; + lVar12 = lVar12 + __n; + memcpy(__dest,__src,__n); + lVar10 = plVar11[2]; + uVar6 = lVar10 + __n; + plVar11[2] = uVar6; + if ((ulong)plVar11[3] <= uVar6) break; + bVar2 = *(byte *)(lVar10 + __n); + uVar6 = (ulong)bVar2; + uVar3 = (uint)bVar2; + __dest = param_2; + if (lVar13 + -1 <= lVar12) goto LAB_003dac9c; + } + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + goto LAB_003dab70; + } +LAB_003dac9c: + if (uVar3 == 0xffffffff) { + *param_2 = 0; + lVar13 = *param_1; + uVar3 = 6; + if (lVar12 != 0) { + uVar3 = 2; + } + *(undefined8 *)((long)param_1 + *(long *)(lVar13 + -0x18) + 0x10) = 0; + } + else { +LAB_003dab94: + *param_2 = 0; + lVar13 = *param_1; + *(undefined8 *)((long)param_1 + *(long *)(lVar13 + -0x18) + 0x10) = 0; + if (lVar12 != 0) { + return param_1; + } + uVar3 = 4; + } + } + lVar13 = (long)param_1 + *(long *)(lVar13 + -0x18); + FUN_003d2254(lVar13,uVar3 | *(uint *)(lVar13 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d64c8 (4 bytes) name=thunk_FUN_003daacc + +long * thunk_FUN_003daacc(long *param_1,undefined1 *param_2) + +{ + byte *pbVar1; + byte bVar2; + uint uVar3; + int iVar4; + long lVar5; + ulong uVar6; + byte *pbVar7; + void *__src; + byte *pbVar8; + long lVar9; + long lVar10; + size_t __n; + long *plVar11; + undefined1 *__dest; + long lVar12; + long lVar13; + char acStack_10 [8]; + undefined1 auStack_8 [8]; + + FUN_003d4724(acStack_10,param_1,0); + if (acStack_10[0] == '\0') { + lVar13 = *param_1; + uVar3 = 4; + } + else { + lVar13 = *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10); + if (lVar13 < 1) { + lVar13 = 0x7fffffffffffffff; + } + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + lVar5 = FUN_003de994(auStack_8); + FUN_003ed708(auStack_8); + plVar11 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar11[2] < (byte *)plVar11[3]) { + uVar6 = (ulong)*(byte *)plVar11[2]; + } + else { + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + lVar12 = 0; +LAB_003dab70: + uVar3 = (uint)uVar6; + __dest = param_2; + if (lVar12 < lVar13 + -1) { + while( true ) { + uVar3 = (uint)uVar6; + param_2 = __dest; + if (uVar3 == 0xffffffff) goto LAB_003dac9c; + lVar10 = *(long *)(lVar5 + 0x30); + if ((*(byte *)(lVar10 + (uVar6 & 0xff)) >> 3 & 1) != 0) goto LAB_003dab94; + __src = (void *)plVar11[2]; + lVar9 = (lVar13 - lVar12) + -1; + if (plVar11[3] - (long)__src < lVar9) { + lVar9 = plVar11[3] - (long)__src; + } + if (lVar9 < 2) { + *__dest = (char)uVar6; + param_2 = __dest + 1; + lVar12 = lVar12 + 1; + pbVar8 = (byte *)plVar11[3]; + if ((byte *)plVar11[2] < pbVar8) { + pbVar7 = (byte *)plVar11[2] + 1; + plVar11[2] = (long)pbVar7; + } + else { + iVar4 = (**(code **)(*plVar11 + 0x50))(plVar11); + uVar6 = 0xffffffff; + if (iVar4 == -1) goto LAB_003dab70; + pbVar7 = (byte *)plVar11[2]; + pbVar8 = (byte *)plVar11[3]; + } + if (pbVar7 < pbVar8) { + uVar6 = (ulong)*pbVar7; + } + else { + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + goto LAB_003dab70; + } + pbVar8 = (byte *)((long)__src + 1); + pbVar7 = (byte *)((long)__src + lVar9); + if (pbVar8 < pbVar7) { + bVar2 = *(byte *)(lVar10 + (ulong)*(byte *)((long)__src + 1)); + while (((bVar2 >> 3 & 1) == 0 && (pbVar1 = pbVar8 + 1, pbVar8 = pbVar7, pbVar1 != pbVar7)) + ) { + bVar2 = *(byte *)(lVar10 + (ulong)*pbVar1); + pbVar8 = pbVar1; + } + } + __n = (long)pbVar8 - (long)__src; + param_2 = __dest + __n; + lVar12 = lVar12 + __n; + memcpy(__dest,__src,__n); + lVar10 = plVar11[2]; + uVar6 = lVar10 + __n; + plVar11[2] = uVar6; + if ((ulong)plVar11[3] <= uVar6) break; + bVar2 = *(byte *)(lVar10 + __n); + uVar6 = (ulong)bVar2; + uVar3 = (uint)bVar2; + __dest = param_2; + if (lVar13 + -1 <= lVar12) goto LAB_003dac9c; + } + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + goto LAB_003dab70; + } +LAB_003dac9c: + if (uVar3 == 0xffffffff) { + *param_2 = 0; + lVar13 = *param_1; + uVar3 = 6; + if (lVar12 != 0) { + uVar3 = 2; + } + *(undefined8 *)((long)param_1 + *(long *)(lVar13 + -0x18) + 0x10) = 0; + } + else { +LAB_003dab94: + *param_2 = 0; + lVar13 = *param_1; + *(undefined8 *)((long)param_1 + *(long *)(lVar13 + -0x18) + 0x10) = 0; + if (lVar12 != 0) { + return param_1; + } + uVar3 = 4; + } + } + lVar13 = (long)param_1 + *(long *)(lVar13 + -0x18); + FUN_003d2254(lVar13,uVar3 | *(uint *)(lVar13 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d64cc (148 bytes) name=FUN_003d64cc + +long * FUN_003d64cc(long *param_1,undefined1 param_2) + +{ + long lVar1; + long *plVar2; + + lVar1 = *(long *)(*param_1 + -0x18); + if (*(char *)((long)param_1 + lVar1 + 0xe1) != '\0') { + *(undefined1 *)((long)param_1 + lVar1 + 0xe0) = param_2; + return param_1; + } + plVar2 = *(long **)((long)param_1 + lVar1 + 0xf0); + if (plVar2 != (long *)0x0) { + if ((char)plVar2[7] == '\0') { + FUN_003d14e0(plVar2); + (**(code **)(*plVar2 + 0x30))(plVar2,0x20); + } + *(undefined1 *)((long)param_1 + lVar1 + 0xe0) = param_2; + *(undefined1 *)((long)param_1 + lVar1 + 0xe1) = 1; + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d6560 (28 bytes) name=FUN_003d6560 + +void FUN_003d6560(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) | param_2; + return; +} + + +================================================================== + +### FUNC 003d657c (28 bytes) name=FUN_003d657c + +void FUN_003d657c(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & (param_2 ^ 0xffffffff); + return; +} + + +================================================================== + +### FUNC 003d6598 (120 bytes) name=FUN_003d6598 + +void FUN_003d6598(long *param_1,int param_2) + +{ + long lVar1; + uint uVar2; + + lVar1 = *(long *)(*param_1 + -0x18); + if (param_2 == 8) { + *(uint *)((long)param_1 + lVar1 + 0x18) = + *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 0x40; + return; + } + if (param_2 != 10) { + uVar2 = 8; + if (param_2 != 0x10) { + uVar2 = 0; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = + uVar2 | *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5; + return; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 2 + ; + return; +} + + +================================================================== + +### FUNC 003d6610 (24 bytes) name=FUN_003d6610 + +void FUN_003d6610(long *param_1,int param_2) + +{ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 8) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003d6628 (24 bytes) name=FUN_003d6628 + +void FUN_003d6628(long *param_1,int param_2) + +{ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003d6640 (176 bytes) name=FUN_003d6640 + +long * FUN_003d6640(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x20)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6774 (4 bytes) name=thunk_FUN_003d6640 + +long * thunk_FUN_003d6640(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x20)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6778 (176 bytes) name=FUN_003d6778 + +long * FUN_003d6778(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x28)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d68ac (4 bytes) name=thunk_FUN_003d6778 + +long * thunk_FUN_003d6778(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x28)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d68b0 (176 bytes) name=FUN_003d68b0 + +long * FUN_003d68b0(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d69e4 (4 bytes) name=thunk_FUN_003d68b0 + +long * thunk_FUN_003d68b0(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d69e8 (176 bytes) name=FUN_003d69e8 + +long * FUN_003d69e8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x30)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6b1c (4 bytes) name=thunk_FUN_003d69e8 + +long * thunk_FUN_003d69e8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x30)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6b20 (176 bytes) name=FUN_003d6b20 + +long * FUN_003d6b20(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x10)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6c54 (4 bytes) name=thunk_FUN_003d6b20 + +long * thunk_FUN_003d6b20(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x10)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6c58 (176 bytes) name=FUN_003d6c58 + +long * FUN_003d6c58(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x38)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6d8c (4 bytes) name=thunk_FUN_003d6c58 + +long * thunk_FUN_003d6c58(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x38)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6d90 (176 bytes) name=FUN_003d6d90 + +long * FUN_003d6d90(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x40)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6ec4 (4 bytes) name=thunk_FUN_003d6d90 + +long * thunk_FUN_003d6d90(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x40)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6ec8 (176 bytes) name=FUN_003d6ec8 + +long * FUN_003d6ec8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x48)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d6ffc (4 bytes) name=thunk_FUN_003d6ec8 + +long * thunk_FUN_003d6ec8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x48)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d7000 (176 bytes) name=FUN_003d7000 + +long * FUN_003d7000(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x50)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d7134 (4 bytes) name=thunk_FUN_003d7000 + +long * thunk_FUN_003d7000(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x50)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d7138 (176 bytes) name=FUN_003d7138 + +long * FUN_003d7138(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x58)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d726c (4 bytes) name=thunk_FUN_003d7138 + +long * thunk_FUN_003d7138(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x58)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d7270 (176 bytes) name=FUN_003d7270 + +long * FUN_003d7270(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d4724(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x60)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d73a4 (4 bytes) name=thunk_FUN_003d7270 + +long * thunk_FUN_003d7270(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d4724(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x60)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d73a8 (44 bytes) name=FUN_003d73a8 + +void FUN_003d73a8(long *param_1,long *param_2,undefined8 param_3) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),param_3); + return; +} + + +================================================================== + +### FUNC 003d73d4 (120 bytes) name=FUN_003d73d4 + +void FUN_003d73d4(undefined8 *param_1,undefined8 param_2) + +{ + /* catch() { ... } // from try @ 003d6c48 with catch @ 003d73ec */ + FUN_003d347c(param_1 + 2); + param_1[0x1d] = 0; + *(undefined4 *)(param_1 + 0x1e) = 0; + *(undefined1 *)((long)param_1 + 0xf4) = 0; + /* try { // try from 003d740c to 004d740f has its CatchHandler @ 003d6380 */ + param_1[0x1f] = 0; + /* catch() { ... } // from try @ 003d64a4 with catch @ 003d7410 */ + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + *param_1 = &PTR_FUN_004f7c38; + param_1[1] = 0; + param_1[2] = &PTR_FUN_004f7c60; + FUN_003d3008(param_1 + 2,param_2); + return; +} + + +================================================================== + +### FUNC 003d7470 (24 bytes) name=FUN_003d7470 + +void FUN_003d7470(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + /* catch() { ... } // from try @ 003d8434 with catch @ 003d7474 */ + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + return; +} + + +================================================================== + +### FUNC 003d7488 (20 bytes) name=FUN_003d7488 + +void FUN_003d7488(undefined8 param_1,code *param_2) + +{ + (*param_2)(); + return; +} + + +================================================================== + +### FUNC 003d749c (48 bytes) name=FUN_003d749c + +long * FUN_003d749c(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003d74cc (48 bytes) name=FUN_003d74cc + +long * FUN_003d74cc(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003d74fc (8 bytes) name=FUN_003d74fc + +undefined8 FUN_003d74fc(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 003d7504 (92 bytes) name=FUN_003d7504 + +void FUN_003d7504(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined4 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 != (long *)0x0) { + uVar1 = (**(code **)(*plVar2 + 0x50))(plVar2,10); + FUN_003db554(param_1,param_2,param_3,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d7560 (44 bytes) name=FUN_003d7560 + +void FUN_003d7560(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + return; +} + + +================================================================== + +### FUNC 003d758c (116 bytes) name=FUN_003d758c + +void FUN_003d758c(undefined8 *param_1) + +{ + /* try { // try from 003d7594 to 004d7c3f has its CatchHandler @ 003d8440 */ + FUN_003d347c(param_1 + 2); + param_1[0x1d] = 0; + *(undefined4 *)(param_1 + 0x1e) = 0; + *(undefined1 *)((long)param_1 + 0xf4) = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + *param_1 = &PTR_FUN_004f7c38; + param_1[1] = 0; + param_1[2] = &PTR_FUN_004f7c60; + FUN_003d3008(param_1 + 2,0); + return; +} + + +================================================================== + +### FUNC 003d7624 (408 bytes) name=FUN_003d7624 + +void FUN_003d7624(undefined1 *param_1,long *param_2,char param_3) + +{ + char cVar1; + int iVar2; + uint uVar3; + int *piVar4; + long lVar5; + uint uVar6; + long *plVar7; + long *plVar8; + + lVar5 = *(long *)(*param_2 + -0x18); + *param_1 = 0; + lVar5 = (long)param_2 + lVar5; + uVar6 = *(uint *)(lVar5 + 0x20); + if (uVar6 == 0) { + if (*(long *)(lVar5 + 0xd8) == 0) { + if (param_3 != '\0') goto LAB_003d767c; +LAB_003d76b8: + if ((*(uint *)(lVar5 + 0x18) >> 0xc & 1) != 0) { + plVar7 = *(long **)(lVar5 + 0xe8); + if ((int *)plVar7[2] < (int *)plVar7[3]) { + iVar2 = *(int *)plVar7[2]; + } + else { + iVar2 = (**(code **)(*plVar7 + 0x48))(plVar7); + lVar5 = (long)param_2 + *(long *)(*param_2 + -0x18); + } + plVar8 = *(long **)(lVar5 + 0xf0); + if (plVar8 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if (iVar2 != -1) { + do { + cVar1 = (**(code **)(*plVar8 + 0x10))(plVar8,8); + if (cVar1 == '\0') { + lVar5 = (long)param_2 + *(long *)(*param_2 + -0x18); + goto LAB_003d7674; + } + piVar4 = (int *)plVar7[2]; + if (piVar4 < (int *)plVar7[3]) { + iVar2 = *piVar4; + plVar7[2] = (long)(piVar4 + 1); + } + else { + iVar2 = (**(code **)(*plVar7 + 0x50))(plVar7); + } + if (iVar2 == -1) break; + if ((int *)plVar7[2] < (int *)plVar7[3]) { + iVar2 = *(int *)plVar7[2]; + } + else { + iVar2 = (**(code **)(*plVar7 + 0x48))(plVar7); + } + } while (iVar2 != -1); + lVar5 = (long)param_2 + *(long *)(*param_2 + -0x18); + } + uVar6 = *(uint *)(lVar5 + 0x20); + uVar3 = 2; + goto LAB_003d7698; + } + } + else { + FUN_003f34dc(); + lVar5 = (long)param_2 + *(long *)(*param_2 + -0x18); + if (param_3 == '\0') goto LAB_003d76b8; + } +LAB_003d7674: + uVar6 = *(uint *)(lVar5 + 0x20); + if (uVar6 == 0) { +LAB_003d767c: + *param_1 = 1; + return; + } + } + uVar3 = 0; +LAB_003d7698: + FUN_003d2c00(lVar5,uVar3 | 4 | uVar6); + return; +} + + +================================================================== + +### FUNC 003d77bc (252 bytes) name=FUN_003d77bc + +long * FUN_003d77bc(long *param_1,undefined2 *param_2) + +{ + long lVar1; + long *plVar2; + char local_10 [4]; + uint local_c; + long local_8; + + FUN_003d7624(local_10,param_1,0); + if (local_10[0] != '\0') { + local_c = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_c,&local_8) + ; + if (local_8 < -0x8000) { + *param_2 = 0x8000; + } + else { + if (local_8 < 0x8000) { + *param_2 = (short)local_8; + if (local_c == 0) { + return param_1; + } + goto LAB_003d7878; + } + *param_2 = 0x7fff; + } + local_c = local_c | 4; + if (local_c != 0) { +LAB_003d7878: + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_c | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d7944 (228 bytes) name=FUN_003d7944 + +long * FUN_003d7944(long *param_1,undefined4 *param_2) + +{ + long lVar1; + long *plVar2; + undefined4 uVar3; + char local_10 [4]; + uint local_c; + long local_8; + + FUN_003d7624(local_10,param_1,0); + if (local_10[0] != '\0') { + local_c = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_c,&local_8) + ; + uVar3 = 0x80000000; + if ((local_8 < -0x80000000) || (uVar3 = 0x7fffffff, 0x7fffffff < local_8)) { + *param_2 = uVar3; + local_c = local_c | 4; + } + else { + *param_2 = (int)local_8; + } + if (local_c != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_c | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d7ab4 (188 bytes) name=FUN_003d7ab4 + +long * FUN_003d7ab4(long *param_1,long param_2) + +{ + uint uVar1; + long lVar2; + char local_8 [7]; + char local_1; + + FUN_003d7624(local_8,param_1,0); + if ((param_2 == 0) || (local_8[0] == '\0')) { + if (param_2 != 0) { + return param_1; + } + uVar1 = 4; + } + else { + lVar2 = FUN_003fd5a8(*(undefined8 *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8),param_2 + ,&local_1); + if (lVar2 == 0) { + uVar1 = 6; + if (local_1 == '\0') { + uVar1 = 4; + } + } + else { + if (local_1 == '\0') { + return param_1; + } + uVar1 = 2; + } + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,uVar1 | *(uint *)(lVar2 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d7bf4 (228 bytes) name=FUN_003d7bf4 + +ulong FUN_003d7bf4(long *param_1) + +{ + long lVar1; + uint uVar2; + ulong uVar3; + uint *puVar4; + long *plVar5; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] == '\0') { + uVar2 = 4; + if (param_1[1] != 0) { + return 0xffffffff; + } + } + else { + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + puVar4 = (uint *)plVar5[2]; + if (puVar4 < (uint *)plVar5[3]) { + uVar3 = (ulong)*puVar4; + plVar5[2] = (long)(puVar4 + 1); + } + else { + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5); + } + if ((int)uVar3 != -1) { + /* try { // try from 003d7c98 to 004d7d37 has its CatchHandler @ 003d8414 */ + param_1[1] = 1; + return uVar3; + } + uVar2 = 6; + if (param_1[1] != 0) { + uVar2 = 2; + } + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uVar2 | *(uint *)(lVar1 + 0x20)); + return 0xffffffff; +} + + +================================================================== + +### FUNC 003d7d5c (252 bytes) name=FUN_003d7d5c + +long * FUN_003d7d5c(long *param_1,int *param_2) + +{ + long lVar1; + int iVar2; + uint uVar3; + long *plVar4; + int *piVar5; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] == '\0') { + if (param_1[1] == 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + } + else { + plVar4 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar5 = (int *)plVar4[2]; + if (piVar5 < (int *)plVar4[3]) { + iVar2 = *piVar5; + plVar4[2] = (long)(piVar5 + 1); + } + else { + iVar2 = (**(code **)(*plVar4 + 0x50))(); + } + if (iVar2 == -1) { + uVar3 = 6; + if (param_1[1] != 0) { + uVar3 = 2; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uVar3 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + param_1[1] = 1; + *param_2 = iVar2; + } + return param_1; +} + + +================================================================== + +### FUNC 003d7ee0 (388 bytes) name=FUN_003d7ee0 + +long * FUN_003d7ee0(long *param_1,int *param_2,long param_3,int param_4) + +{ + int iVar1; + int *piVar2; + uint uVar3; + int *piVar4; + long lVar5; + int *piVar6; + long *plVar7; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] == '\0') { + lVar5 = param_1[1]; + uVar3 = 0; + } + else { + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar2 = (int *)plVar7[2]; + if ((int *)plVar7[3] <= piVar2) goto LAB_003d7fa4; +LAB_003d7f40: + iVar1 = *piVar2; + while (lVar5 = param_1[1], piVar2 = param_2, iVar1 != -1 && param_4 != iVar1) { + while( true ) { + param_2 = piVar2; + if (param_3 <= lVar5 + 1) goto LAB_003d7fd4; + piVar4 = (int *)plVar7[2]; + piVar6 = (int *)plVar7[3]; + param_2 = piVar2 + 1; + *piVar2 = iVar1; + param_1[1] = lVar5 + 1; + if (piVar4 < piVar6) { + iVar1 = *piVar4; + plVar7[2] = (long)(piVar4 + 1); + } + else { + iVar1 = (**(code **)(*plVar7 + 0x50))(plVar7); + } + if (iVar1 == -1) break; + piVar2 = (int *)plVar7[2]; + if (piVar2 < (int *)plVar7[3]) goto LAB_003d7f40; +LAB_003d7fa4: + iVar1 = (**(code **)(*plVar7 + 0x48))(plVar7); + lVar5 = param_1[1]; + piVar2 = param_2; + if (iVar1 == -1 || param_4 == iVar1) goto LAB_003d7fd4; + } + } +LAB_003d7fd4: + uVar3 = 2; + if (iVar1 != -1) { + uVar3 = 0; + } + } + if (0 < param_3) { + *param_2 = 0; + } + if (lVar5 == 0) { + uVar3 = uVar3 | 4; + } + else if (uVar3 == 0) { + return param_1; + } + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar5,uVar3 | *(uint *)(lVar5 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d80e4 (92 bytes) name=FUN_003d80e4 + +void FUN_003d80e4(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined4 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 != (long *)0x0) { + uVar1 = (**(code **)(*plVar2 + 0x50))(plVar2,10); + FUN_003d7ee0(param_1,param_2,param_3,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d8140 (360 bytes) name=FUN_003d8140 + +long * FUN_003d8140(long *param_1,long *param_2,int param_3) + +{ + long lVar1; + int iVar2; + uint uVar3; + int *piVar4; + int *piVar5; + long *plVar6; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar6 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar4 = (int *)plVar6[2]; + if ((int *)plVar6[3] <= piVar4) goto LAB_003d8200; +LAB_003d8198: + iVar2 = *piVar4; + if (iVar2 != -1) { + do { + if (iVar2 == param_3) break; + piVar4 = (int *)param_2[5]; + if (piVar4 < (int *)param_2[6]) { + *piVar4 = iVar2; + param_2[5] = (long)(piVar4 + 1); + } + else { + iVar2 = (**(code **)(*param_2 + 0x68))(param_2); + if (iVar2 == -1) goto LAB_003d8224; + } + piVar5 = (int *)plVar6[2]; + piVar4 = (int *)plVar6[3]; + param_1[1] = param_1[1] + 1; + if (piVar5 < piVar4) { + iVar2 = *piVar5; + plVar6[2] = (long)(piVar5 + 1); + } + else { + iVar2 = (**(code **)(*plVar6 + 0x50))(plVar6); + } + if (iVar2 != -1) { + piVar4 = (int *)plVar6[2]; + if (piVar4 < (int *)plVar6[3]) goto LAB_003d8198; +LAB_003d8200: + iVar2 = (**(code **)(*plVar6 + 0x48))(plVar6); + } + if (iVar2 == -1) break; + } while( true ); + } + if (iVar2 == -1) { + uVar3 = 6; + if (param_1[1] != 0) { + uVar3 = 2; + } + goto LAB_003d8230; + } + } +LAB_003d8224: + if (param_1[1] != 0) { + return param_1; + } + uVar3 = 4; +LAB_003d8230: + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uVar3 | *(uint *)(lVar1 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d832c (84 bytes) name=FUN_003d832c + +void FUN_003d832c(long *param_1,undefined8 param_2) + +{ + undefined4 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 != (long *)0x0) { + uVar1 = (**(code **)(*plVar2 + 0x50))(plVar2,10); + FUN_003d8140(param_1,param_2,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d8380 (180 bytes) name=FUN_003d8380 + +long * FUN_003d8380(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + int *piVar4; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar4 = (int *)plVar3[2]; + if (piVar4 < (int *)plVar3[3]) { + iVar2 = *piVar4; + plVar3[2] = (long)(piVar4 + 1); + } + else { + iVar2 = (**(code **)(*plVar3 + 0x50))(); + } + if (iVar2 == -1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 2); + /* catch() { ... } // from try @ 003d7c98 with catch @ 003d8414 */ + return param_1; + } + param_1[1] = 1; + } + return param_1; +} + + +================================================================== + +### FUNC 003d84b8 (172 bytes) name=FUN_003d84b8 + +int FUN_003d84b8(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + char local_8 [8]; + + iVar2 = -1; + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((int *)plVar3[2] < (int *)plVar3[3]) { + iVar2 = *(int *)plVar3[2]; + } + else { + iVar2 = (**(code **)(*plVar3 + 0x48))(); + } + if (iVar2 == -1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 2); + return -1; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 003d85ec (176 bytes) name=FUN_003d85ec + +long * FUN_003d85ec(long *param_1,undefined8 param_2,long param_3) + +{ + long lVar1; + long *plVar2; + char local_8 [8]; + + /* try { // try from 003d860c to 004d860f has its CatchHandler @ 003d973c */ + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar1 = (**(code **)(*plVar2 + 0x40))(plVar2,param_2,param_3); + param_1[1] = lVar1; + if (param_3 != lVar1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 6); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d8720 (268 bytes) name=FUN_003d8720 + +long FUN_003d8720(long *param_1,undefined8 param_2,long param_3) + +{ + long *plVar1; + long lVar2; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] != '\0') { + plVar1 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar2 = plVar1[3] - plVar1[2] >> 2; + if (lVar2 == 0) { + lVar2 = (**(code **)(*plVar1 + 0x38))(); + } + if (0 < lVar2) { + if (param_3 < lVar2) { + lVar2 = param_3; + } + plVar1 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar2 = (**(code **)(*plVar1 + 0x40))(plVar1,param_2,lVar2); + param_1[1] = lVar2; + return lVar2; + } + if (lVar2 == -1) { + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 2); + return param_1[1]; + } + } + return param_1[1]; +} + + +================================================================== + +### FUNC 003d88b4 (232 bytes) name=FUN_003d88b4 + +long * FUN_003d88b4(long *param_1,int param_2) + +{ + long *plVar1; + long lVar2; + ulong uVar3; + char local_8 [8]; + + param_1[1] = 0; + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) & 0xfffffffd); + FUN_003d7624(local_8,param_1,1); + if (local_8[0] == '\0') { + return param_1; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar1 = *(long **)(lVar2 + 0xe8); + if (plVar1 != (long *)0x0) { + uVar3 = plVar1[2]; + if (((ulong)plVar1[1] < uVar3) && (param_2 == *(int *)(uVar3 - 4))) { + plVar1[2] = uVar3 - 4; + } + else { + param_2 = (**(code **)(*plVar1 + 0x58))(plVar1,param_2); + } + if (param_2 != -1) { + return param_1; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + } + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 1); + return param_1; +} + + +================================================================== + +### FUNC 003d8a20 (216 bytes) name=FUN_003d8a20 + +long * FUN_003d8a20(long *param_1) + +{ + int iVar1; + long *plVar2; + long lVar3; + ulong uVar4; + char local_8 [8]; + + param_1[1] = 0; + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) & 0xfffffffd); + FUN_003d7624(local_8,param_1,1); + if (local_8[0] == '\0') { + return param_1; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar3 + 0xe8); + if (plVar2 != (long *)0x0) { + uVar4 = plVar2[2]; + if ((ulong)plVar2[1] < uVar4) { + iVar1 = *(int *)(uVar4 - 4); + plVar2[2] = uVar4 - 4; + } + else { + iVar1 = (**(code **)(*plVar2 + 0x58))(plVar2,0xffffffff); + } + if (iVar1 != -1) { + return param_1; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + } + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return param_1; +} + + +================================================================== + +### FUNC 003d8b7c (160 bytes) name=FUN_003d8b7c + +undefined8 FUN_003d8b7c(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + char local_8 [8]; + + FUN_003d7624(local_8,param_1,1); + if ((local_8[0] != '\0') && + (plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), plVar3 != (long *)0x0 + )) { + iVar2 = (**(code **)(*plVar3 + 0x30))(); + if (iVar2 != -1) { + return 0; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return 0xffffffff; + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 003d8ca4 (220 bytes) name=FUN_003d8ca4 + +undefined1 [16] FUN_003d8ca4(long *param_1) + +{ + undefined8 uVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + long *plVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + undefined1 auVar11 [16]; + char local_8 [8]; + + FUN_003d7624(local_8,param_1,1); + if ((local_8[0] == '\0') || + ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) != 0)) { + uVar2 = 0; + uVar10 = 0; + uVar9 = 0; + uVar8 = 0; + uVar7 = 0; + uVar6 = 0; + uVar4 = 0; + uVar3 = 0; + uVar1 = 0xffffffffffffffff; + } + else { + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + auVar11 = (**(code **)(*plVar5 + 0x20))(plVar5,0,1,8); + uVar2 = auVar11._8_8_; + uVar1 = auVar11._0_8_; + uVar4 = uVar2 >> 8 & 0xff; + uVar6 = uVar2 >> 0x10 & 0xff; + uVar3 = uVar2 & 0xff; + uVar7 = uVar2 >> 0x18 & 0xff; + uVar8 = uVar2 >> 0x20 & 0xff; + uVar9 = uVar2 >> 0x28 & 0xff; + uVar10 = uVar2 >> 0x30 & 0xff; + uVar2 = uVar2 >> 0x38; + } + auVar11._8_8_ = + uVar3 | uVar4 << 8 | uVar6 << 0x10 | uVar7 << 0x18 | uVar8 << 0x20 | uVar9 << 0x28 | + uVar10 << 0x30 | uVar2 << 0x38; + auVar11._0_8_ = uVar1; + return auVar11; +} + + +================================================================== + +### FUNC 003d8e04 (216 bytes) name=FUN_003d8e04 + +long * FUN_003d8e04(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + long *plVar2; + char local_8 [8]; + + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) & 0xfffffffd); + FUN_003d7624(local_8,param_1,1); + /* try { // try from 003d8e54 to 004d8e57 has its CatchHandler @ 003d973c */ + if (((local_8[0] != '\0') && + ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0)) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x28))(plVar2,param_2,param_3,8), lVar1 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003d8f60 (216 bytes) name=FUN_003d8f60 + +long * FUN_003d8f60(long *param_1,undefined8 param_2,undefined4 param_3) + +{ + long lVar1; + long *plVar2; + char local_8 [8]; + + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) & 0xfffffffd); + FUN_003d7624(local_8,param_1,1); + if (((local_8[0] != '\0') && + ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0)) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x20))(plVar2,param_2,param_3,8), lVar1 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003d90bc (8 bytes) name=FUN_003d90bc + +undefined1 FUN_003d90bc(undefined1 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 003d90c4 (304 bytes) name=FUN_003d90c4 + +long * FUN_003d90c4(long *param_1) + +{ + long lVar1; + char cVar2; + int iVar3; + long *plVar4; + int *piVar5; + long *plVar6; + undefined1 auStack_8 [8]; + + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + plVar4 = (long *)FUN_00401028(auStack_8); + FUN_003ed708(auStack_8); + plVar6 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar5 = (int *)plVar6[2]; + if ((int *)plVar6[3] <= piVar5) goto LAB_003d9194; + while (*piVar5 != -1) { + while( true ) { + cVar2 = (**(code **)(*plVar4 + 0x10))(plVar4,8); + if (cVar2 == '\0') { + return param_1; + } + piVar5 = (int *)plVar6[2]; + if (piVar5 < (int *)plVar6[3]) { + iVar3 = *piVar5; + plVar6[2] = (long)(piVar5 + 1); + } + else { + iVar3 = (**(code **)(*plVar6 + 0x50))(plVar6); + } + if (iVar3 == -1) goto LAB_003d91b0; + piVar5 = (int *)plVar6[2]; + if (piVar5 < (int *)plVar6[3]) break; +LAB_003d9194: + iVar3 = (**(code **)(*plVar6 + 0x48))(plVar6); + if (iVar3 == -1) goto LAB_003d91b0; + } + } +LAB_003d91b0: + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 2); + return param_1; +} + + +================================================================== + +### FUNC 003d9208 (176 bytes) name=FUN_003d9208 + +long * FUN_003d9208(long *param_1,int *param_2) + +{ + long lVar1; + int iVar2; + long *plVar3; + int *piVar4; + char local_8 [8]; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar4 = (int *)plVar3[2]; + if (piVar4 < (int *)plVar3[3]) { + iVar2 = *piVar4; + plVar3[2] = (long)(piVar4 + 1); + } + else { + iVar2 = (**(code **)(*plVar3 + 0x50))(); + } + if (iVar2 == -1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 6); + return param_1; + } + *param_2 = iVar2; + } + return param_1; +} + + +================================================================== + +### FUNC 003d933c (488 bytes) name=FUN_003d933c + +long * FUN_003d933c(long *param_1,int *param_2) + +{ + char cVar1; + uint uVar2; + int iVar3; + long *plVar4; + int *piVar5; + int *piVar6; + long *plVar7; + long lVar8; + int *piVar9; + long lVar10; + char local_10 [8]; + undefined1 auStack_8 [8]; + + FUN_003d7624(local_10,param_1,0); + if (local_10[0] == '\0') { + lVar10 = *param_1; + uVar2 = 4; + } + else { + lVar10 = *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10); + if (lVar10 < 1) { + lVar10 = 0x7fffffffffffffff; + } + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + plVar4 = (long *)FUN_00401028(auStack_8); + FUN_003ed708(auStack_8); + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((int *)plVar7[2] < (int *)plVar7[3]) { + iVar3 = *(int *)plVar7[2]; + } + else { + iVar3 = (**(code **)(*plVar7 + 0x48))(plVar7); + } + lVar8 = 0; +LAB_003d93e0: + piVar9 = param_2; + if (lVar8 < lVar10 + -1) { + while( true ) { + param_2 = piVar9; + if (iVar3 == -1) goto LAB_003d94dc; + cVar1 = (**(code **)(*plVar4 + 0x10))(plVar4,8,iVar3); + if (cVar1 != '\0') goto LAB_003d9410; + piVar6 = (int *)plVar7[2]; + lVar8 = lVar8 + 1; + piVar5 = (int *)plVar7[3]; + param_2 = piVar9 + 1; + *piVar9 = iVar3; + if (piVar6 < piVar5) { + iVar3 = *piVar6; + plVar7[2] = (long)(piVar6 + 1); + } + else { + iVar3 = (**(code **)(*plVar7 + 0x50))(plVar7); + } + if (iVar3 == -1) goto LAB_003d93e0; + if ((int *)plVar7[3] <= (int *)plVar7[2]) break; + iVar3 = *(int *)plVar7[2]; + piVar9 = param_2; + if (lVar10 + -1 <= lVar8) goto LAB_003d94dc; + } + iVar3 = (**(code **)(*plVar7 + 0x48))(plVar7); + goto LAB_003d93e0; + } +LAB_003d94dc: + if (iVar3 == -1) { + lVar10 = *param_1; + *param_2 = 0; + uVar2 = 6; + if (lVar8 != 0) { + uVar2 = 2; + } + *(undefined8 *)((long)param_1 + *(long *)(lVar10 + -0x18) + 0x10) = 0; + } + else { +LAB_003d9410: + lVar10 = *param_1; + *param_2 = 0; + *(undefined8 *)((long)param_1 + *(long *)(lVar10 + -0x18) + 0x10) = 0; + if (lVar8 != 0) { + return param_1; + } + uVar2 = 4; + } + } + lVar10 = (long)param_1 + *(long *)(lVar10 + -0x18); + FUN_003d2c00(lVar10,uVar2 | *(uint *)(lVar10 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003d95d0 (128 bytes) name=FUN_003d95d0 + +long * FUN_003d95d0(long *param_1,undefined4 param_2) + +{ + long *plVar1; + long lVar2; + + lVar2 = *(long *)(*param_1 + -0x18); + if (*(char *)((long)param_1 + lVar2 + 0xe4) != '\0') { + *(undefined4 *)((long)param_1 + lVar2 + 0xe0) = param_2; + return param_1; + } + plVar1 = *(long **)((long)param_1 + lVar2 + 0xf0); + if (plVar1 != (long *)0x0) { + (**(code **)(*plVar1 + 0x50))(plVar1,0x20); + *(undefined4 *)((long)param_1 + lVar2 + 0xe0) = param_2; + *(undefined1 *)((long)param_1 + lVar2 + 0xe4) = 1; + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003d9650 (28 bytes) name=FUN_003d9650 + +void FUN_003d9650(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) | param_2; + return; +} + + +================================================================== + +### FUNC 003d966c (28 bytes) name=FUN_003d966c + +void FUN_003d966c(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & (param_2 ^ 0xffffffff); + return; +} + + +================================================================== + +### FUNC 003d9688 (120 bytes) name=FUN_003d9688 + +void FUN_003d9688(long *param_1,int param_2) + +{ + long lVar1; + uint uVar2; + + lVar1 = *(long *)(*param_1 + -0x18); + if (param_2 == 8) { + *(uint *)((long)param_1 + lVar1 + 0x18) = + *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 0x40; + return; + } + if (param_2 != 10) { + uVar2 = 8; + if (param_2 != 0x10) { + uVar2 = 0; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = + uVar2 | *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5; + return; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 2 + ; + return; +} + + +================================================================== + +### FUNC 003d9700 (24 bytes) name=FUN_003d9700 + +void FUN_003d9700(long *param_1,int param_2) + +{ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 8) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003d9718 (24 bytes) name=FUN_003d9718 + +void FUN_003d9718(long *param_1,int param_2) + +{ + /* catch() { ... } // from try @ 003d8714 with catch @ 003d9718 + catch() { ... } // from try @ 003d92f0 with catch @ 003d9718 */ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003d9730 (176 bytes) name=FUN_003d9730 + +long * FUN_003d9730(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + /* try { // try from 003d9738 to 004d973b has its CatchHandler @ 003d84a4 */ + /* catch() { ... } // from try @ 003d860c with catch @ 003d973c + catch() { ... } // from try @ 003d8e54 with catch @ 003d973c */ + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x20)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + /* catch() { ... } // from try @ 003dacd4 with catch @ 003d97a4 */ + return param_1; +} + + +================================================================== + +### FUNC 003d9864 (4 bytes) name=thunk_FUN_003d9730 + +long * thunk_FUN_003d9730(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x20)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9868 (176 bytes) name=FUN_003d9868 + +long * FUN_003d9868(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x28)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003d98fc to 004d98ff has its CatchHandler @ 003dace0 */ + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d999c (4 bytes) name=thunk_FUN_003d9868 + +long * thunk_FUN_003d9868(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x28)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d99a0 (176 bytes) name=FUN_003d99a0 + +long * FUN_003d99a0(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9ad4 (4 bytes) name=thunk_FUN_003d99a0 + +long * thunk_FUN_003d99a0(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x18)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9ad8 (176 bytes) name=FUN_003d9ad8 + +long * FUN_003d9ad8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x30)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9c0c (4 bytes) name=thunk_FUN_003d9ad8 + +long * thunk_FUN_003d9ad8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x30)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9c10 (176 bytes) name=FUN_003d9c10 + +long * FUN_003d9c10(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003d9c4c to 004d9c4f has its CatchHandler @ 003dacb4 */ + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x10)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9d44 (4 bytes) name=thunk_FUN_003d9c10 + +long * thunk_FUN_003d9c10(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x10)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9d48 (176 bytes) name=FUN_003d9d48 + +long * FUN_003d9d48(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x38)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9e7c (4 bytes) name=thunk_FUN_003d9d48 + +long * thunk_FUN_003d9d48(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x38)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9e80 (176 bytes) name=FUN_003d9e80 + +long * FUN_003d9e80(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x40)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9fb4 (4 bytes) name=thunk_FUN_003d9e80 + +long * thunk_FUN_003d9e80(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x40)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003d9fb8 (176 bytes) name=FUN_003d9fb8 + +long * FUN_003d9fb8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x48)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da0ec (4 bytes) name=thunk_FUN_003d9fb8 + +long * thunk_FUN_003d9fb8(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x48)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da0f0 (176 bytes) name=FUN_003da0f0 + +long * FUN_003da0f0(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x50)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da224 (4 bytes) name=thunk_FUN_003da0f0 + +long * thunk_FUN_003da0f0(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x50)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da228 (176 bytes) name=FUN_003da228 + +long * FUN_003da228(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x58)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da35c (4 bytes) name=thunk_FUN_003da228 + +long * thunk_FUN_003da228(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x58)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da360 (176 bytes) name=FUN_003da360 + +long * FUN_003da360(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char local_8 [4]; + uint local_4; + + FUN_003d7624(local_8,param_1,0); + if (local_8[0] != '\0') { + local_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x60)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&local_4,param_2); + if (local_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,local_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da494 (4 bytes) name=thunk_FUN_003da360 + +long * thunk_FUN_003da360(long *param_1,undefined8 param_2) + +{ + long lVar1; + long *plVar2; + char acStack_8 [4]; + uint uStack_4; + + FUN_003d7624(acStack_8,param_1,0); + if (acStack_8[0] != '\0') { + uStack_4 = 0; + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar2 = *(long **)(lVar1 + 0x100); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + (**(code **)(*plVar2 + 0x60)) + (plVar2,*(undefined8 *)(lVar1 + 0xe8),0xffffffff,0,0xffffffff,lVar1,&uStack_4,param_2) + ; + if (uStack_4 != 0) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,uStack_4 | *(uint *)(lVar1 + 0x20)); + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 003da498 (656 bytes) name=FUN_003da498 + +long * FUN_003da498(long *param_1,undefined1 *param_2,long param_3,uint param_4) + +{ + size_t __n; + byte bVar1; + uint uVar2; + void *pvVar3; + ulong uVar4; + byte *pbVar5; + uint uVar6; + long lVar7; + size_t __n_00; + long lVar8; + byte *pbVar9; + ulong uVar10; + long *plVar11; + undefined1 *__dest; + void *__s; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if (local_8[0] == '\0') { +LAB_003da620: + uVar6 = 0; +LAB_003da624: + if (0 < param_3) { + *param_2 = 0; + } + if (param_1[1] == 0) { + uVar6 = uVar6 | 4; + } + else if (uVar6 == 0) { + return param_1; + } + lVar7 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar7,uVar6 | *(uint *)(lVar7 + 0x20)); + return param_1; + } + plVar11 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar11[2] < (byte *)plVar11[3]) { + uVar2 = (uint)*(byte *)plVar11[2]; + } + else { + uVar2 = (**(code **)(*plVar11 + 0x48))(plVar11); + } +LAB_003da500: + lVar7 = param_1[1]; + do { + lVar8 = lVar7 + 1; + __dest = param_2; + uVar6 = uVar2; + if (uVar2 == (param_4 & 0xff) || uVar2 == 0xffffffff) { +LAB_003da5c0: + if (uVar2 == 0xffffffff) { + uVar6 = 2; + goto LAB_003da624; + } + uVar6 = 4; + if ((param_4 & 0xff) != uVar2) goto LAB_003da624; + uVar4 = plVar11[2]; + uVar10 = plVar11[3]; + param_1[1] = lVar8; + if (uVar4 < uVar10) { + uVar6 = 0; + plVar11[2] = uVar4 + 1; + goto LAB_003da624; + } + (**(code **)(*plVar11 + 0x50))(plVar11); + goto LAB_003da620; + } + while( true ) { + uVar2 = uVar6; + param_2 = __dest; + if (param_3 <= lVar8) goto LAB_003da5c0; + __s = (void *)plVar11[2]; + __n_00 = (param_3 - lVar7) - 1; + if (plVar11[3] - (long)__s < (long)__n_00) { + __n_00 = plVar11[3] - (long)__s; + } + if ((long)__n_00 < 2) break; + pvVar3 = memchr(__s,param_4 & 0xff,__n_00); + __n = (long)pvVar3 - (long)__s; + if (pvVar3 == (void *)0x0) { + __n = __n_00; + } + param_2 = __dest + __n; + memcpy(__dest,__s,__n); + lVar8 = plVar11[2]; + lVar7 = param_1[1]; + uVar10 = plVar11[3]; + uVar4 = lVar8 + __n; + plVar11[2] = uVar4; + lVar7 = __n + lVar7; + param_1[1] = lVar7; + if (uVar10 <= uVar4) { + uVar2 = (**(code **)(*plVar11 + 0x48))(plVar11); + goto LAB_003da500; + } + bVar1 = *(byte *)(lVar8 + __n); + uVar2 = (uint)bVar1; + lVar8 = lVar7 + 1; + __dest = param_2; + uVar6 = (uint)bVar1; + if ((uint)bVar1 == (param_4 & 0xff) || bVar1 == 0xffffffff) goto LAB_003da5c0; + } + *__dest = (char)uVar2; + param_2 = __dest + 1; + pbVar5 = (byte *)plVar11[2]; + pbVar9 = (byte *)plVar11[3]; + param_1[1] = param_1[1] + 1; + if (pbVar5 < pbVar9) { + pbVar5 = pbVar5 + 1; + plVar11[2] = (long)pbVar5; + } + else { + uVar2 = (**(code **)(*plVar11 + 0x50))(plVar11); + if (uVar2 == 0xffffffff) goto LAB_003da500; + pbVar5 = (byte *)plVar11[2]; + pbVar9 = (byte *)plVar11[3]; + } + if (pbVar9 <= pbVar5) break; + uVar2 = (uint)*pbVar5; + lVar7 = param_1[1]; + } while( true ); + uVar2 = (**(code **)(*plVar11 + 0x48))(plVar11); + goto LAB_003da500; +} + + +================================================================== + +### FUNC 003da7b4 (660 bytes) name=FUN_003da7b4 + +long * FUN_003da7b4(long *param_1,long param_2,uint param_3) + +{ + size_t __n; + size_t sVar1; + byte bVar2; + bool bVar3; + uint uVar4; + uint uVar5; + void *pvVar6; + long *plVar7; + byte *pbVar8; + byte *pbVar9; + long lVar10; + char local_8 [8]; + + if (param_3 == 0xffffffff) { + plVar7 = (long *)FUN_004195b8(); + return plVar7; + } + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if ((param_2 < 1) || (local_8[0] == '\0')) { + return param_1; + } + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar7[2] < (byte *)plVar7[3]) { + uVar5 = (uint)*(byte *)plVar7[2]; + } + else { + uVar5 = (**(code **)(*plVar7 + 0x48))(plVar7); + } + lVar10 = param_1[1]; + bVar3 = false; +LAB_003da840: + do { + uVar4 = uVar5; + if (param_3 == uVar5 || uVar5 == 0xffffffff) { +LAB_003da8d0: + if (bVar3) { + param_1[1] = 0x7fffffffffffffff; + } + if (uVar5 == 0xffffffff) { + lVar10 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar10,*(uint *)(lVar10 + 0x20) | 2); + return param_1; + } + if (param_3 != uVar5) { + return param_1; + } + if (param_1[1] != 0x7fffffffffffffff) { + param_1[1] = param_1[1] + 1; + } + if ((ulong)plVar7[2] < (ulong)plVar7[3]) { + plVar7[2] = plVar7[2] + 1; + return param_1; + } + (**(code **)(*plVar7 + 0x50))(plVar7); + return param_1; + } + while (uVar5 = uVar4, lVar10 < param_2) { + pbVar9 = (byte *)plVar7[3]; + pbVar8 = (byte *)plVar7[2]; + __n = param_2 - lVar10; + if ((long)pbVar9 - (long)pbVar8 < param_2 - lVar10) { + __n = (long)pbVar9 - (long)pbVar8; + } + if ((long)__n < 2) { + param_1[1] = lVar10 + 1; + if (pbVar8 < pbVar9) { + pbVar8 = pbVar8 + 1; + plVar7[2] = (long)pbVar8; +LAB_003da940: + if (pbVar9 <= pbVar8) goto LAB_003da954; + uVar5 = (uint)*pbVar8; + lVar10 = param_1[1]; + } + else { + uVar5 = (**(code **)(*plVar7 + 0x50))(plVar7); + if (uVar5 != 0xffffffff) { + pbVar8 = (byte *)plVar7[2]; + pbVar9 = (byte *)plVar7[3]; + goto LAB_003da940; + } +LAB_003da964: + lVar10 = param_1[1]; + } + goto LAB_003da840; + } + pvVar6 = memchr(pbVar8,param_3 & 0xff,__n); + sVar1 = (long)pvVar6 - (long)pbVar8; + if (pvVar6 == (void *)0x0) { + sVar1 = __n; + } + plVar7[2] = (long)(pbVar8 + sVar1); + lVar10 = lVar10 + sVar1; + param_1[1] = lVar10; + if (pbVar9 <= pbVar8 + sVar1) { +LAB_003da954: + uVar5 = (**(code **)(*plVar7 + 0x48))(plVar7); + goto LAB_003da964; + } + bVar2 = pbVar8[sVar1]; + uVar5 = (uint)bVar2; + uVar4 = (uint)bVar2; + if (param_3 == bVar2 || bVar2 == 0xffffffff) goto LAB_003da8d0; + } + if (param_2 != 0x7fffffffffffffff) goto LAB_003da8d0; + param_1[1] = -0x8000000000000000; + lVar10 = -0x8000000000000000; + bVar3 = true; + } while( true ); +} + + +================================================================== + +### FUNC 003daacc (660 bytes) name=FUN_003daacc + +long * FUN_003daacc(long *param_1,undefined1 *param_2) + +{ + byte *pbVar1; + byte bVar2; + uint uVar3; + int iVar4; + long lVar5; + ulong uVar6; + byte *pbVar7; + void *__src; + byte *pbVar8; + long lVar9; + long lVar10; + size_t __n; + long *plVar11; + undefined1 *__dest; + long lVar12; + long lVar13; + char local_10 [8]; + undefined1 auStack_8 [8]; + + FUN_003d4724(local_10,param_1,0); + if (local_10[0] == '\0') { + lVar13 = *param_1; + uVar3 = 4; + } + else { + lVar13 = *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10); + /* try { // try from 003dab24 to 004dab27 has its CatchHandler @ 003dacb4 */ + if (lVar13 < 1) { + lVar13 = 0x7fffffffffffffff; + } + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + lVar5 = FUN_003de994(auStack_8); + FUN_003ed708(auStack_8); + plVar11 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar11[2] < (byte *)plVar11[3]) { + uVar6 = (ulong)*(byte *)plVar11[2]; + } + else { + /* try { // try from 003dad7c to 004dad9b has its CatchHandler @ 003dad48 */ + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + lVar12 = 0; +LAB_003dab70: + uVar3 = (uint)uVar6; + __dest = param_2; + if (lVar12 < lVar13 + -1) { + while( true ) { + uVar3 = (uint)uVar6; + param_2 = __dest; + if (uVar3 == 0xffffffff) goto LAB_003dac9c; + lVar10 = *(long *)(lVar5 + 0x30); + if ((*(byte *)(lVar10 + (uVar6 & 0xff)) >> 3 & 1) != 0) goto LAB_003dab94; + __src = (void *)plVar11[2]; + lVar9 = (lVar13 - lVar12) + -1; + if (plVar11[3] - (long)__src < lVar9) { + lVar9 = plVar11[3] - (long)__src; + } + if (lVar9 < 2) { + *__dest = (char)uVar6; + param_2 = __dest + 1; + lVar12 = lVar12 + 1; + pbVar8 = (byte *)plVar11[3]; + if ((byte *)plVar11[2] < pbVar8) { + pbVar7 = (byte *)plVar11[2] + 1; + plVar11[2] = (long)pbVar7; + } + else { + iVar4 = (**(code **)(*plVar11 + 0x50))(plVar11); + /* catch() { ... } // from try @ 003dad7c with catch @ 003dad48 + catch() { ... } // from try @ 003db394 with catch @ 003dad48 + catch() { ... } // from try @ 003db7e8 with catch @ 003dad48 + catch() { ... } // from try @ 003dba1c with catch @ 003dad48 + catch() { ... } // from try @ 003dbba8 with catch @ 003dad48 */ + uVar6 = 0xffffffff; + if (iVar4 == -1) goto LAB_003dab70; + pbVar7 = (byte *)plVar11[2]; + pbVar8 = (byte *)plVar11[3]; + } + if (pbVar7 < pbVar8) { + uVar6 = (ulong)*pbVar7; + } + else { + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + goto LAB_003dab70; + } + pbVar8 = (byte *)((long)__src + 1); + pbVar7 = (byte *)((long)__src + lVar9); + if (pbVar8 < pbVar7) { + bVar2 = *(byte *)(lVar10 + (ulong)*(byte *)((long)__src + 1)); + /* try { // try from 003dacd4 to 004dacd7 has its CatchHandler @ 003d97a4 */ + while (((bVar2 >> 3 & 1) == 0 && (pbVar1 = pbVar8 + 1, pbVar8 = pbVar7, pbVar1 != pbVar7)) + ) { + bVar2 = *(byte *)(lVar10 + (ulong)*pbVar1); + /* catch() { ... } // from try @ 003d98fc with catch @ 003dace0 + catch() { ... } // from try @ 003da5f8 with catch @ 003dace0 */ + pbVar8 = pbVar1; + } + } + __n = (long)pbVar8 - (long)__src; + param_2 = __dest + __n; + lVar12 = lVar12 + __n; + memcpy(__dest,__src,__n); + lVar10 = plVar11[2]; + uVar6 = lVar10 + __n; + plVar11[2] = uVar6; + if ((ulong)plVar11[3] <= uVar6) break; + bVar2 = *(byte *)(lVar10 + __n); + uVar6 = (ulong)bVar2; + uVar3 = (uint)bVar2; + __dest = param_2; + if (lVar13 + -1 <= lVar12) goto LAB_003dac9c; + } + uVar6 = (**(code **)(*plVar11 + 0x48))(plVar11); + goto LAB_003dab70; + } +LAB_003dac9c: + if (uVar3 == 0xffffffff) { + *param_2 = 0; + /* catch() { ... } // from try @ 003d9c4c with catch @ 003dacb4 + catch() { ... } // from try @ 003dab24 with catch @ 003dacb4 */ + lVar13 = *param_1; + uVar3 = 6; + if (lVar12 != 0) { + uVar3 = 2; + } + *(undefined8 *)((long)param_1 + *(long *)(lVar13 + -0x18) + 0x10) = 0; + } + else { +LAB_003dab94: + *param_2 = 0; + lVar13 = *param_1; + *(undefined8 *)((long)param_1 + *(long *)(lVar13 + -0x18) + 0x10) = 0; + if (lVar12 != 0) { + return param_1; + } + uVar3 = 4; + } + } + lVar13 = (long)param_1 + *(long *)(lVar13 + -0x18); + FUN_003d2254(lVar13,uVar3 | *(uint *)(lVar13 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003dae0c (832 bytes) name=FUN_003dae0c + +long * FUN_003dae0c(long *param_1,long *param_2) + +{ + byte *pbVar1; + ulong uVar2; + byte bVar3; + uint uVar4; + int iVar5; + ulong uVar6; + byte *pbVar7; + long lVar8; + byte *pbVar9; + long lVar10; + long lVar11; + long lVar12; + ulong uVar13; + long *plVar14; + ulong uVar15; + char local_10 [8]; + undefined1 auStack_8 [8]; + + FUN_003d4724(local_10,param_1,0); + if (local_10[0] == '\0') { + lVar10 = *param_1; + /* try { // try from 003dae4c to 004dae4f has its CatchHandler @ 003dbbd8 */ + uVar4 = 4; + } + else { + FUN_00412b08(param_2,0,*(undefined8 *)(*param_2 + -0x18),0); + uVar15 = *(ulong *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10); + if ((long)uVar15 < 1) { + uVar15 = 0x3ffffffffffffff9; + } + FUN_003ece1c(auStack_8,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + lVar10 = FUN_003de994(auStack_8); + FUN_003ed708(auStack_8); + plVar14 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar14[2] < (byte *)plVar14[3]) { + uVar6 = (ulong)*(byte *)plVar14[2]; + } + else { + uVar6 = (**(code **)(*plVar14 + 0x48))(plVar14); + uVar13 = 0; + if ((int)uVar6 == -1) { +LAB_003db0c8: + lVar10 = *param_1; + uVar4 = 6; + if (uVar13 != 0) { + uVar4 = 2; + } + *(undefined8 *)((long)param_1 + *(long *)(lVar10 + -0x18) + 0x10) = 0; + goto LAB_003dae50; + } + } + lVar11 = *(long *)(lVar10 + 0x30); + uVar13 = 0; + bVar3 = *(byte *)(lVar11 + (uVar6 & 0xff)); + while ((bVar3 >> 3 & 1) == 0) { + lVar8 = plVar14[2]; + lVar12 = uVar15 - uVar13; + if (plVar14[3] - lVar8 < (long)(uVar15 - uVar13)) { + lVar12 = plVar14[3] - lVar8; + } + /* try { // try from 003daf30 to 004daf33 has its CatchHandler @ 003dbc0c */ + if (lVar12 < 2) { + lVar12 = *param_2; + lVar11 = *(long *)(lVar12 + -0x18); + uVar2 = lVar11 + 1; + if ((*(ulong *)(lVar12 + -0x10) < uVar2) || (0 < *(int *)(lVar12 + -8))) { + FUN_00410ed8(param_2,uVar2); + lVar12 = *param_2; + lVar11 = *(long *)(lVar12 + -0x18); + } + *(char *)(lVar12 + lVar11) = (char)uVar6; + lVar11 = *param_2; + if ((undefined *)(lVar11 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar11 + -8) = 0; + *(ulong *)(lVar11 + -0x18) = uVar2; + *(undefined1 *)(lVar11 + uVar2) = 0; + } + uVar13 = uVar13 + 1; + pbVar9 = (byte *)plVar14[3]; + if ((byte *)plVar14[2] < pbVar9) { + pbVar7 = (byte *)plVar14[2] + 1; + plVar14[2] = (long)pbVar7; + } + else { + iVar5 = (**(code **)(*plVar14 + 0x50))(plVar14); + if (iVar5 == -1) goto LAB_003db0c8; + pbVar7 = (byte *)plVar14[2]; + pbVar9 = (byte *)plVar14[3]; + } + /* try { // try from 003db098 to 004db13f has its CatchHandler @ 003dbbb4 */ + if (pbVar7 < pbVar9) { + bVar3 = *pbVar7; + goto LAB_003daf88; + } +LAB_003db0a8: + uVar6 = (**(code **)(*plVar14 + 0x48))(plVar14); + uVar4 = (uint)uVar6; + if (uVar15 <= uVar13) { +LAB_003dafd8: + if (uVar4 != 0xffffffff) { + *(undefined8 *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10) = 0; + /* try { // try from 003db024 to 004db027 has its CatchHandler @ 003dbbe8 */ + return param_1; + } + lVar10 = *param_1; + uVar4 = 2; + *(undefined8 *)((long)param_1 + *(long *)(lVar10 + -0x18) + 0x10) = 0; + /* try { // try from 003daff4 to 004daff7 has its CatchHandler @ 003dbbb4 */ + goto LAB_003dae50; + } + if (uVar4 == 0xffffffff) goto LAB_003db0c8; + } + else { + pbVar9 = (byte *)(lVar8 + 1); + pbVar7 = (byte *)(lVar8 + lVar12); + if (pbVar9 < pbVar7) { + bVar3 = *(byte *)(lVar11 + (ulong)*(byte *)(lVar8 + 1)); + while (((bVar3 >> 3 & 1) == 0 && (pbVar1 = pbVar9 + 1, pbVar9 = pbVar7, pbVar1 != pbVar7)) + ) { + bVar3 = *(byte *)(lVar11 + (ulong)*pbVar1); + pbVar9 = pbVar1; + } + } + lVar12 = (long)pbVar9 - lVar8; + FUN_00411624(param_2,lVar8,lVar12); + lVar11 = plVar14[2]; + uVar13 = uVar13 + lVar12; + uVar6 = lVar11 + lVar12; + plVar14[2] = uVar6; + if ((ulong)plVar14[3] <= uVar6) goto LAB_003db0a8; + bVar3 = *(byte *)(lVar11 + lVar12); +LAB_003daf88: + uVar6 = (ulong)bVar3; + uVar4 = (uint)bVar3; + if (uVar15 <= uVar13) goto LAB_003dafd8; + } + lVar11 = *(long *)(lVar10 + 0x30); + bVar3 = *(byte *)(lVar11 + (uVar6 & 0xff)); + } + lVar10 = *param_1; + *(undefined8 *)((long)param_1 + *(long *)(lVar10 + -0x18) + 0x10) = 0; + if (uVar13 != 0) { + return param_1; + } + uVar4 = 4; + } +LAB_003dae50: + /* try { // try from 003dae54 to 004daebf has its CatchHandler @ 003dbbac */ + lVar10 = (long)param_1 + *(long *)(lVar10 + -0x18); + FUN_003d2254(lVar10,uVar4 | *(uint *)(lVar10 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003db200 (704 bytes) name=FUN_003db200 + +long * FUN_003db200(long *param_1,long *param_2,byte param_3) + +{ + ulong uVar1; + size_t sVar2; + size_t __n; + uint uVar3; + uint uVar4; + int iVar5; + void *pvVar6; + long lVar7; + byte *pbVar8; + long lVar9; + byte *pbVar10; + long *plVar11; + ulong uVar12; + void *__s; + char local_8 [8]; + + FUN_003d4724(local_8,param_1,1); + if (local_8[0] != '\0') { + FUN_00412b08(param_2,0,*(undefined8 *)(*param_2 + -0x18),0); + plVar11 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar11[2] < (byte *)plVar11[3]) { + uVar3 = (uint)*(byte *)plVar11[2]; + } + else { + uVar3 = (**(code **)(*plVar11 + 0x48))(plVar11); + } + uVar12 = 0; + do { + while( true ) { + uVar4 = uVar3; + if ((uVar4 == 0xffffffff) || (param_3 == uVar4)) { + if (uVar4 != 0xffffffff) goto LAB_003db3f4; + uVar3 = 6; + if (uVar12 != 0) { + uVar3 = 2; + } + goto LAB_003db244; + } + __s = (void *)plVar11[2]; + __n = 0x3ffffffffffffff9 - uVar12; + if (plVar11[3] - (long)__s < (long)(0x3ffffffffffffff9 - uVar12)) { + __n = plVar11[3] - (long)__s; + } + if ((long)__n < 2) break; + pvVar6 = memchr(__s,(uint)param_3,__n); + sVar2 = (long)pvVar6 - (long)__s; + if (pvVar6 == (void *)0x0) { + sVar2 = __n; + } + /* try { // try from 003db2f4 to 004db2f7 has its CatchHandler @ 003dbbac */ + FUN_00411624(param_2,__s,sVar2); + lVar7 = plVar11[2]; + uVar12 = uVar12 + sVar2; + uVar1 = lVar7 + sVar2; + plVar11[2] = uVar1; + if (uVar1 < (ulong)plVar11[3]) { + uVar4 = (uint)*(byte *)(lVar7 + sVar2); + } + else { +LAB_003db424: + uVar4 = (**(code **)(*plVar11 + 0x48))(plVar11); + } +LAB_003db318: + uVar3 = uVar4; + if (0x3ffffffffffffff8 < uVar12) goto LAB_003db3dc; + } + lVar9 = *param_2; + lVar7 = *(long *)(lVar9 + -0x18); + /* try { // try from 003db368 to 004db36b has its CatchHandler @ 003dbc14 */ + uVar1 = lVar7 + 1; + if ((*(ulong *)(lVar9 + -0x10) < uVar1) || (0 < *(int *)(lVar9 + -8))) { + FUN_00410ed8(param_2,uVar1); + lVar9 = *param_2; + lVar7 = *(long *)(lVar9 + -0x18); + } + /* try { // try from 003db394 to 004db3e7 has its CatchHandler @ 003dad48 */ + *(char *)(lVar9 + lVar7) = (char)uVar4; + lVar7 = *param_2; + if ((undefined *)(lVar7 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar7 + -8) = 0; + *(ulong *)(lVar7 + -0x18) = uVar1; + *(undefined1 *)(lVar7 + uVar1) = 0; + } + uVar12 = uVar12 + 1; + pbVar10 = (byte *)plVar11[3]; + if ((byte *)plVar11[2] < pbVar10) { + pbVar8 = (byte *)plVar11[2] + 1; + plVar11[2] = (long)pbVar8; + } + else { + iVar5 = (**(code **)(*plVar11 + 0x50))(plVar11); + uVar4 = 0xffffffff; + if (iVar5 == -1) goto LAB_003db318; + pbVar8 = (byte *)plVar11[2]; + pbVar10 = (byte *)plVar11[3]; + } + if (pbVar10 <= pbVar8) goto LAB_003db424; + uVar4 = (uint)*pbVar8; + uVar3 = (uint)*pbVar8; + } while (uVar12 < 0x3ffffffffffffff9); +LAB_003db3dc: + if (uVar4 == 0xffffffff) { + uVar3 = 2; + goto LAB_003db244; + } +LAB_003db3f4: + if (param_3 != uVar4) { + uVar3 = 4; + goto LAB_003db244; + } + if ((ulong)plVar11[2] < (ulong)plVar11[3]) { + plVar11[2] = plVar11[2] + 1; + } + else { + (**(code **)(*plVar11 + 0x50))(plVar11); + } + if (uVar12 != 0xffffffffffffffff) { + return param_1; + } + } + uVar3 = 4; +LAB_003db244: + lVar7 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar7,uVar3 | *(uint *)(lVar7 + 0x20)); + return param_1; +} + + +================================================================== + +### FUNC 003db554 (664 bytes) name=FUN_003db554 + +long * FUN_003db554(long *param_1,wchar_t *param_2,long param_3,wchar_t param_4) + +{ + wchar_t wVar1; + wchar_t *pwVar2; + ulong uVar3; + uint uVar4; + long lVar5; + size_t __n; + wchar_t *pwVar6; + long lVar7; + ulong uVar8; + size_t sVar9; + long *plVar10; + char local_8 [8]; + + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if (local_8[0] == '\0') { +LAB_003db6e0: + lVar5 = param_1[1]; + uVar4 = 0; +LAB_003db6e8: + if (0 < param_3) { + *param_2 = L'\0'; + } + /* try { // try from 003db6f4 to 004db6f7 has its CatchHandler @ 003dbc0c */ + if (lVar5 == 0) { + uVar4 = uVar4 | 4; + } + else { + /* try { // try from 003db730 to 004db733 has its CatchHandler @ 003dbb28 */ + if (uVar4 == 0) { + /* try { // try from 003db738 to 004db73b has its CatchHandler @ 003dbc0c */ + return param_1; + } + } + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar5,uVar4 | *(uint *)(lVar5 + 0x20)); + return param_1; + } + plVar10 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((wchar_t *)plVar10[2] < (wchar_t *)plVar10[3]) { + wVar1 = *(wchar_t *)plVar10[2]; + } + else { + /* try { // try from 003db7e8 to 004db7eb has its CatchHandler @ 003dad48 */ + wVar1 = (**(code **)(*plVar10 + 0x48))(plVar10); + /* try { // try from 003db7f8 to 004db7fb has its CatchHandler @ 003dbbac */ + } +LAB_003db5b8: + do { + lVar5 = param_1[1]; +LAB_003db5bc: + lVar7 = lVar5 + 1; + if (param_4 == wVar1 || wVar1 == L'\xffffffff') { +LAB_003db67c: + if (wVar1 == L'\xffffffff') { + uVar4 = 2; + goto LAB_003db6e8; + } + uVar4 = 4; + if (param_4 != wVar1) goto LAB_003db6e8; + uVar3 = plVar10[2]; + uVar8 = plVar10[3]; + param_1[1] = lVar7; + if (uVar3 < uVar8) { + plVar10[2] = uVar3 + 4; + uVar4 = 0; + lVar5 = lVar7; + goto LAB_003db6e8; + } + /* try { // try from 003db80c to 004db80f has its CatchHandler @ 003dbc14 */ + (**(code **)(*plVar10 + 0x50))(plVar10); + goto LAB_003db6e0; + } + while( true ) { + if (param_3 <= lVar7) goto LAB_003db67c; + pwVar6 = (wchar_t *)plVar10[3]; + pwVar2 = (wchar_t *)plVar10[2]; + __n = (param_3 - lVar5) - 1; + sVar9 = (long)pwVar6 - (long)pwVar2 >> 2; + if ((long)sVar9 < (long)__n) { + __n = sVar9; + } + if ((long)__n < 2) break; + pwVar2 = wmemchr(pwVar2,param_4,__n); + if (pwVar2 != (wchar_t *)0x0) { + __n = (long)pwVar2 - plVar10[2] >> 2; + } + wmemcpy(param_2,(wchar_t *)plVar10[2],__n); + lVar7 = plVar10[2]; + lVar5 = param_1[1]; + param_2 = param_2 + __n; + uVar8 = plVar10[3]; + uVar3 = lVar7 + __n * 4; + plVar10[2] = uVar3; + lVar5 = __n + lVar5; + param_1[1] = lVar5; + if (uVar8 <= uVar3) { + wVar1 = (**(code **)(*plVar10 + 0x48))(plVar10); + goto LAB_003db5b8; + } + wVar1 = *(wchar_t *)(lVar7 + __n * 4); + lVar7 = lVar5 + 1; + if (param_4 == wVar1 || wVar1 == L'\xffffffff') goto LAB_003db67c; + } + *param_2 = wVar1; + param_1[1] = lVar7; + param_2 = param_2 + 1; + if (pwVar2 < pwVar6) { + wVar1 = *pwVar2; + plVar10[2] = (long)(pwVar2 + 1); + } + else { + wVar1 = (**(code **)(*plVar10 + 0x50))(plVar10); + /* try { // try from 003db7c8 to 004db7cb has its CatchHandler @ 003dbbac */ + } + if (wVar1 == L'\xffffffff') { + lVar5 = param_1[1]; + wVar1 = L'\xffffffff'; + goto LAB_003db5bc; + } + /* try { // try from 003db774 to 004db783 has its CatchHandler @ 003dbbb4 */ + if ((wchar_t *)plVar10[2] < (wchar_t *)plVar10[3]) { + wVar1 = *(wchar_t *)plVar10[2]; + lVar5 = param_1[1]; + goto LAB_003db5bc; + } + /* try { // try from 003db7d4 to 004db7d7 has its CatchHandler @ 003dbc14 */ + wVar1 = (**(code **)(*plVar10 + 0x48))(plVar10); + } while( true ); +} + + +================================================================== + +### FUNC 003db878 (664 bytes) name=FUN_003db878 + +long * FUN_003db878(long *param_1,long param_2,wchar_t param_3) + +{ + ulong uVar1; + bool bVar2; + wchar_t wVar3; + wchar_t *pwVar4; + long lVar5; + size_t sVar6; + long lVar7; + wchar_t *pwVar8; + ulong uVar9; + size_t __n; + long *plVar10; + char local_8 [8]; + + if (param_3 == L'\xffffffff') { + plVar10 = (long *)FUN_00419824(); + return plVar10; + } + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if ((param_2 < 1) || (local_8[0] == '\0')) { + return param_1; + } + plVar10 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((wchar_t *)plVar10[2] < (wchar_t *)plVar10[3]) { + wVar3 = *(wchar_t *)plVar10[2]; + } + else { + /* try { // try from 003dbaec to 004dbaef has its CatchHandler @ 003dbc14 */ + wVar3 = (**(code **)(*plVar10 + 0x48))(plVar10); + } + lVar5 = param_1[1]; + /* try { // try from 003db8f0 to 004db8f3 has its CatchHandler @ 003dbc0c */ + bVar2 = false; +LAB_003db8fc: + do { + if (param_3 == wVar3 || wVar3 == L'\xffffffff') { +LAB_003db998: + if (bVar2) { + param_1[1] = 0x7fffffffffffffff; + } + if (wVar3 == L'\xffffffff') { + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 2); + /* try { // try from 003dbae0 to 004dbae3 has its CatchHandler @ 003dbbac */ + return param_1; + } + if (param_3 != wVar3) { + return param_1; + } + if (param_1[1] != 0x7fffffffffffffff) { + param_1[1] = param_1[1] + 1; + } + if ((ulong)plVar10[2] < (ulong)plVar10[3]) { + plVar10[2] = plVar10[2] + 4; + return param_1; + } + (**(code **)(*plVar10 + 0x50))(plVar10); + return param_1; + } + while (lVar5 < param_2) { + pwVar8 = (wchar_t *)plVar10[3]; + pwVar4 = (wchar_t *)plVar10[2]; + sVar6 = (long)pwVar8 - (long)pwVar4 >> 2; + __n = param_2 - lVar5; + if ((long)sVar6 < param_2 - lVar5) { + __n = sVar6; + } + if ((long)__n < 2) { + /* try { // try from 003db9f0 to 004db9f3 has its CatchHandler @ 003dbc14 */ + param_1[1] = lVar5 + 1; + if (pwVar4 < pwVar8) { + wVar3 = *pwVar4; + plVar10[2] = (long)(pwVar4 + 1); + } + else { + wVar3 = (**(code **)(*plVar10 + 0x50))(plVar10); + } + if (wVar3 == L'\xffffffff') { + lVar5 = param_1[1]; + wVar3 = L'\xffffffff'; + } + else if ((wchar_t *)plVar10[2] < (wchar_t *)plVar10[3]) { + wVar3 = *(wchar_t *)plVar10[2]; + /* try { // try from 003dba1c to 004dba1f has its CatchHandler @ 003dad48 */ + lVar5 = param_1[1]; + } + else { +LAB_003dba24: + wVar3 = (**(code **)(*plVar10 + 0x48))(plVar10); + lVar5 = param_1[1]; + } + goto LAB_003db8fc; + } + pwVar4 = wmemchr(pwVar4,param_3,__n); + lVar7 = plVar10[2]; + if (pwVar4 != (wchar_t *)0x0) { + __n = (long)pwVar4 - lVar7 >> 2; + } + lVar5 = param_1[1]; + uVar1 = lVar7 + __n * 4; + uVar9 = plVar10[3]; + plVar10[2] = uVar1; + lVar5 = __n + lVar5; + param_1[1] = lVar5; + if (uVar9 <= uVar1) goto LAB_003dba24; + /* try { // try from 003db97c to 004db97f has its CatchHandler @ 003dbbac */ + wVar3 = *(wchar_t *)(lVar7 + __n * 4); + if (param_3 == wVar3 || wVar3 == L'\xffffffff') goto LAB_003db998; + } + if (param_2 != 0x7fffffffffffffff) goto LAB_003db998; + param_1[1] = -0x8000000000000000; + lVar5 = -0x8000000000000000; + bVar2 = true; + } while( true ); +} + + +================================================================== + +### FUNC 003dbb94 (716 bytes) name=FUN_003dbb94 + +long * FUN_003dbb94(long *param_1,long *param_2,wchar_t param_3) + +{ + ulong uVar1; + wchar_t wVar2; + wchar_t *pwVar3; + uint uVar4; + size_t sVar5; + long lVar6; + wchar_t *pwVar7; + long lVar8; + size_t __n; + long *plVar9; + ulong uVar10; + char local_8 [8]; + + /* try { // try from 003dbba8 to 004dbbab has its CatchHandler @ 003dad48 */ + /* catch() { ... } // from try @ 003dae08 with catch @ 003dbbac + catch() { ... } // from try @ 003dae54 with catch @ 003dbbac + catch() { ... } // from try @ 003db2f4 with catch @ 003dbbac + catch() { ... } // from try @ 003db7c8 with catch @ 003dbbac + catch() { ... } // from try @ 003db7f8 with catch @ 003dbbac + catch() { ... } // from try @ 003db97c with catch @ 003dbbac + catch() { ... } // from try @ 003dbae0 with catch @ 003dbbac */ + /* catch() { ... } // from try @ 003daff4 with catch @ 003dbbb4 + catch() { ... } // from try @ 003db098 with catch @ 003dbbb4 + catch() { ... } // from try @ 003db774 with catch @ 003dbbb4 + catch() { ... } // from try @ 003db85c with catch @ 003dbbb4 */ + FUN_003d7624(local_8,param_1,1); + if (local_8[0] != '\0') { + /* catch() { ... } // from try @ 003dada0 with catch @ 003dbc14 + catch() { ... } // from try @ 003db368 with catch @ 003dbc14 + catch() { ... } // from try @ 003db7d4 with catch @ 003dbc14 + catch() { ... } // from try @ 003db80c with catch @ 003dbc14 + catch() { ... } // from try @ 003db9f0 with catch @ 003dbc14 + catch() { ... } // from try @ 003dbaec with catch @ 003dbc14 */ + FUN_00416540(param_2,0,*(undefined8 *)(*param_2 + -0x18),0); + /* catch() { ... } // from try @ 003dbc60 with catch @ 003dbc30 + catch() { ... } // from try @ 003dc244 with catch @ 003dbc30 + catch() { ... } // from try @ 003dc508 with catch @ 003dbc30 + catch() { ... } // from try @ 003dc594 with catch @ 003dbc30 */ + plVar9 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((wchar_t *)plVar9[2] < (wchar_t *)plVar9[3]) { + wVar2 = *(wchar_t *)plVar9[2]; + } + else { + wVar2 = (**(code **)(*plVar9 + 0x48))(plVar9); + /* try { // try from 003dbe44 to 004dbe47 has its CatchHandler @ 003dc5a8 */ + } + uVar10 = 0; + do { + while( true ) { + if ((wVar2 == L'\xffffffff') || (param_3 == wVar2)) { + /* try { // try from 003dbd94 to 004dbd97 has its CatchHandler @ 003dc54c */ + if (wVar2 != L'\xffffffff') goto LAB_003dbd9c; + uVar4 = 6; + if (uVar10 != 0) { + uVar4 = 2; + } + goto LAB_003dbbd8; + } + pwVar7 = (wchar_t *)plVar9[3]; + pwVar3 = (wchar_t *)plVar9[2]; + sVar5 = (long)pwVar7 - (long)pwVar3 >> 2; + /* try { // try from 003dbce0 to 004dbce3 has its CatchHandler @ 003dc608 */ + __n = 0xffffffffffffffe - uVar10; + if ((long)sVar5 < (long)(0xffffffffffffffe - uVar10)) { + __n = sVar5; + } + if ((long)__n < 2) break; + /* try { // try from 003dbc60 to 004dbc7f has its CatchHandler @ 003dbc30 */ + pwVar3 = wmemchr(pwVar3,param_3,__n); + if (pwVar3 != (wchar_t *)0x0) { + __n = (long)pwVar3 - plVar9[2] >> 2; + } + /* try { // try from 003dbc84 to 004dbca3 has its CatchHandler @ 003dc610 */ + FUN_00418664(param_2,plVar9[2],__n); + lVar6 = plVar9[2]; + uVar10 = uVar10 + __n; + uVar1 = lVar6 + __n * 4; + plVar9[2] = uVar1; + if (uVar1 < (ulong)plVar9[3]) { + wVar2 = *(wchar_t *)(lVar6 + __n * 4); + } + else { +LAB_003dbdcc: + wVar2 = (**(code **)(*plVar9 + 0x48))(plVar9); + } +LAB_003dbca8: + if (0xffffffffffffffd < uVar10) goto LAB_003dbd84; + } + lVar6 = *param_2; + lVar8 = *(long *)(lVar6 + -0x18); + uVar1 = lVar8 + 1; + if ((*(ulong *)(lVar6 + -0x10) < uVar1) || (0 < *(int *)(lVar6 + -8))) { + /* try { // try from 003dbd1c to 004dbd1f has its CatchHandler @ 003dc598 */ + FUN_00418208(param_2,uVar1); + lVar6 = *param_2; + /* try { // try from 003dbd24 to 004dbd53 has its CatchHandler @ 003dc608 */ + pwVar3 = (wchar_t *)plVar9[2]; + pwVar7 = (wchar_t *)plVar9[3]; + lVar8 = *(long *)(lVar6 + -0x18); + } + *(wchar_t *)(lVar6 + lVar8 * 4) = wVar2; + if ((ulong *)(lVar6 + -0x18) != (ulong *)PTR_DAT_00501ab8) { + *(undefined4 *)(lVar6 + -8) = 0; + *(ulong *)(lVar6 + -0x18) = uVar1; + *(undefined4 *)(lVar6 + uVar1 * 4) = 0; + } + uVar10 = uVar10 + 1; + if (pwVar3 < pwVar7) { + wVar2 = *pwVar3; + plVar9[2] = (long)(pwVar3 + 1); + } + else { + wVar2 = (**(code **)(*plVar9 + 0x50))(plVar9); + } + if (wVar2 == L'\xffffffff') goto LAB_003dbca8; + if ((wchar_t *)plVar9[3] <= (wchar_t *)plVar9[2]) goto LAB_003dbdcc; + wVar2 = *(wchar_t *)plVar9[2]; + } while (uVar10 < 0xffffffffffffffe); +LAB_003dbd84: + if (wVar2 == L'\xffffffff') { + uVar4 = 2; + goto LAB_003dbbd8; + } +LAB_003dbd9c: + /* try { // try from 003dbd9c to 004dbdfb has its CatchHandler @ 003dc608 */ + if (param_3 != wVar2) { + uVar4 = 4; + goto LAB_003dbbd8; + } + if ((ulong)plVar9[2] < (ulong)plVar9[3]) { + plVar9[2] = plVar9[2] + 4; + } + else { + (**(code **)(*plVar9 + 0x50))(plVar9); + } + if (uVar10 != 0xffffffffffffffff) { + return param_1; + } + } + uVar4 = 4; +LAB_003dbbd8: + /* catch() { ... } // from try @ 003dae4c with catch @ 003dbbd8 */ + lVar6 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003db024 with catch @ 003dbbe8 */ + FUN_003d2c00(lVar6,uVar4 | *(uint *)(lVar6 + 0x20)); + /* catch() { ... } // from try @ 003daf30 with catch @ 003dbc0c + catch() { ... } // from try @ 003db1e0 with catch @ 003dbc0c + catch() { ... } // from try @ 003db6f4 with catch @ 003dbc0c + catch() { ... } // from try @ 003db738 with catch @ 003dbc0c + catch() { ... } // from try @ 003db828 with catch @ 003dbc0c + catch() { ... } // from try @ 003db8f0 with catch @ 003dbc0c */ + return param_1; +} + + +================================================================== + +### FUNC 003dbef4 (160 bytes) name=FUN_003dbef4 + +void FUN_003dbef4(long *param_1,long *param_2) + +{ + undefined8 *puVar1; + long *plVar2; + long lVar3; + long *plVar4; + + plVar2 = (long *)*param_1; + if (plVar2 == param_1) { + plVar4 = (long *)*param_2; + if (plVar4 != param_2) { + puVar1 = (undefined8 *)param_2[1]; + plVar2[1] = (long)puVar1; + *plVar2 = (long)plVar4; + *puVar1 = plVar2; + plVar4[1] = (long)plVar2; + param_2[1] = (long)param_2; + *param_2 = (long)param_2; + return; + } + } + else { + plVar4 = (long *)*param_2; + if (plVar4 == param_2) { + puVar1 = (undefined8 *)param_1[1]; + plVar4[1] = (long)puVar1; + *plVar4 = (long)plVar2; + *puVar1 = plVar4; + plVar2[1] = (long)plVar4; + param_1[1] = (long)param_1; + *param_1 = (long)param_1; + return; + } + *param_1 = (long)plVar4; + *param_2 = (long)plVar2; + lVar3 = param_1[1]; + param_1[1] = param_2[1]; + param_2[1] = lVar3; + lVar3 = *param_1; + *(long **)param_1[1] = param_1; + *(long **)(lVar3 + 8) = param_1; + lVar3 = *param_2; + *(long **)param_2[1] = param_2; + *(long **)(lVar3 + 8) = param_2; + } + return; +} + + +================================================================== + +### FUNC 003dbf94 (52 bytes) name=FUN_003dbf94 + +void FUN_003dbf94(long param_1,long param_2,long param_3) + +{ + long *plVar1; + long *plVar2; + long *plVar3; + + if (param_1 != param_3) { + plVar2 = *(long **)(param_3 + 8); + plVar3 = *(long **)(param_2 + 8); + plVar1 = *(long **)(param_1 + 8); + *plVar2 = param_1; + *plVar3 = param_3; + *plVar1 = param_2; + *(long **)(param_1 + 8) = plVar2; + *(undefined8 *)(param_3 + 8) = *(undefined8 *)(param_2 + 8); + *(long **)(param_2 + 8) = plVar1; + } + return; +} + + +================================================================== + +### FUNC 003dbfc8 (36 bytes) name=FUN_003dbfc8 + +void FUN_003dbfc8(long *param_1) + +{ + long *plVar1; + long *plVar2; + + plVar1 = param_1; + do { + plVar2 = (long *)*plVar1; + *plVar1 = plVar1[1]; + plVar1[1] = (long)plVar2; + plVar1 = plVar2; + } while (param_1 != plVar2); + return; +} + + +================================================================== + +### FUNC 003dbfec (28 bytes) name=FUN_003dbfec + +void FUN_003dbfec(long *param_1,long param_2) + +{ + param_1[1] = *(long *)(param_2 + 8); + *param_1 = param_2; + **(long **)(param_2 + 8) = (long)param_1; + *(long **)(param_2 + 8) = param_1; + return; +} + + +================================================================== + +### FUNC 003dc008 (20 bytes) name=FUN_003dc008 + +void FUN_003dc008(long *param_1) + +{ + long lVar1; + long *plVar2; + + plVar2 = (long *)param_1[1]; + lVar1 = *param_1; + *plVar2 = lVar1; + *(long **)(lVar1 + 8) = plVar2; + return; +} + + +================================================================== + +### FUNC 003dc01c (12 bytes) name=FUN_003dc01c + +undefined1 FUN_003dc01c(long param_1) + +{ + return *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x21); +} + + +================================================================== + +### FUNC 003dc028 (12 bytes) name=FUN_003dc028 + +undefined1 FUN_003dc028(long param_1) + +{ + /* try { // try from 003dc02c to 004dc0c7 has its CatchHandler @ 003dc5a8 */ + return *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x22); +} + + +================================================================== + +### FUNC 003dc034 (12 bytes) name=FUN_003dc034 + +undefined4 FUN_003dc034(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x58); +} + + +================================================================== + +### FUNC 003dc040 (12 bytes) name=FUN_003dc040 + +undefined4 FUN_003dc040(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x5c); +} + + +================================================================== + +### FUNC 003dc04c (12 bytes) name=FUN_003dc04c + +undefined4 FUN_003dc04c(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x60); +} + + +================================================================== + +### FUNC 003dc058 (12 bytes) name=FUN_003dc058 + +undefined1 FUN_003dc058(long param_1) + +{ + return *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x21); +} + + +================================================================== + +### FUNC 003dc064 (12 bytes) name=FUN_003dc064 + +undefined1 FUN_003dc064(long param_1) + +{ + return *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x22); +} + + +================================================================== + +### FUNC 003dc070 (12 bytes) name=FUN_003dc070 + +undefined4 FUN_003dc070(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x58); +} + + +================================================================== + +### FUNC 003dc07c (12 bytes) name=FUN_003dc07c + +undefined4 FUN_003dc07c(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x5c); +} + + +================================================================== + +### FUNC 003dc088 (12 bytes) name=FUN_003dc088 + +undefined4 FUN_003dc088(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x60); +} + + +================================================================== + +### FUNC 003dc094 (16 bytes) name=FUN_003dc094 + +void FUN_003dc094(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7e70; + FUN_003f0114(); + return; +} + + +================================================================== + +### FUNC 003dc0a4 (16 bytes) name=FUN_003dc0a4 + +void FUN_003dc0a4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7ee0; + FUN_003f005c(); + return; +} + + +================================================================== + +### FUNC 003dc0b4 (12 bytes) name=FUN_003dc0b4 + +undefined1 FUN_003dc0b4(long param_1) + +{ + return *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x48); +} + + +================================================================== + +### FUNC 003dc0c0 (12 bytes) name=FUN_003dc0c0 + +undefined1 FUN_003dc0c0(long param_1) + +{ + return *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x49); +} + + +================================================================== + +### FUNC 003dc0cc (16 bytes) name=FUN_003dc0cc + +void FUN_003dc0cc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7d00; + FUN_003f0724(); + return; +} + + +================================================================== + +### FUNC 003dc0dc (8 bytes) name=FUN_003dc0dc + +undefined8 FUN_003dc0dc(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003dc0e4 (8 bytes) name=FUN_003dc0e4 + +undefined8 FUN_003dc0e4(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003dc0ec (4 bytes) name=FUN_003dc0ec + +void FUN_003dc0ec(void) + +{ + return; +} + + +================================================================== + +### FUNC 003dc0f0 (36 bytes) name=FUN_003dc0f0 + +ulong FUN_003dc0f0(undefined8 param_1,byte *param_2,byte *param_3) + +{ + ulong uVar1; + byte *pbVar2; + + uVar1 = 0; + if (param_2 < param_3) { + do { + pbVar2 = param_2 + 1; + uVar1 = (ulong)*param_2 + (uVar1 >> 0x39 | uVar1 << 7); + param_2 = pbVar2; + } while (pbVar2 != param_3); + } + return uVar1; +} + + +================================================================== + +### FUNC 003dc114 (16 bytes) name=FUN_003dc114 + +void FUN_003dc114(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7f50; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc124 (16 bytes) name=FUN_003dc124 + +void FUN_003dc124(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7f80; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc134 (16 bytes) name=FUN_003dc134 + +void FUN_003dc134(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7d50; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc144 (16 bytes) name=FUN_003dc144 + +void FUN_003dc144(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7dd0; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc154 (16 bytes) name=FUN_003dc154 + +void FUN_003dc154(undefined8 *param_1) + +{ + /* try { // try from 003dc15c to 004dc15f has its CatchHandler @ 003dc608 */ + *param_1 = &PTR_FUN_004f7e30; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc164 (16 bytes) name=FUN_003dc164 + +void FUN_003dc164(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7fb0; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc174 (16 bytes) name=FUN_003dc174 + +void FUN_003dc174(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7fb0; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc184 (16 bytes) name=FUN_003dc184 + +void FUN_003dc184(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8010; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc194 (16 bytes) name=FUN_003dc194 + +void FUN_003dc194(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8010; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003dc1a4 (48 bytes) name=FUN_003dc1a4 + +undefined8 FUN_003dc1a4(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x10),auStack_8); + /* try { // try from 003dc1d0 to 004dc1d3 has its CatchHandler @ 003dc610 */ + return param_1; +} + + +================================================================== + +### FUNC 003dc1d4 (48 bytes) name=FUN_003dc1d4 + +undefined8 FUN_003dc1d4(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x28),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc204 (48 bytes) name=FUN_003dc204 + +undefined8 FUN_003dc204(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x38),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc234 (48 bytes) name=FUN_003dc234 + +undefined8 FUN_003dc234(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + /* try { // try from 003dc244 to 004dc277 has its CatchHandler @ 003dbc30 */ + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x48),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc264 (48 bytes) name=FUN_003dc264 + +undefined8 FUN_003dc264(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + /* try { // try from 003dc280 to 004dc283 has its CatchHandler @ 003dc610 */ + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x10),auStack_8); + /* try { // try from 003dc28c to 004dc28f has its CatchHandler @ 003dc608 */ + return param_1; +} + + +================================================================== + +### FUNC 003dc294 (48 bytes) name=FUN_003dc294 + +undefined8 FUN_003dc294(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x28),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc2c4 (48 bytes) name=FUN_003dc2c4 + +undefined8 FUN_003dc2c4(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x38),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc2f4 (48 bytes) name=FUN_003dc2f4 + +undefined8 FUN_003dc2f4(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x48),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc324 (48 bytes) name=FUN_003dc324 + +undefined8 FUN_003dc324(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x10),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc354 (48 bytes) name=FUN_003dc354 + +undefined8 FUN_003dc354(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x28),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc384 (48 bytes) name=FUN_003dc384 + +undefined8 FUN_003dc384(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x38),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003dc3b4 (100 bytes) name=FUN_003dc3b4 + +void FUN_003dc3b4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f80b0; + if (*(char *)((long)param_1 + 0x6f) != '\0') { + if ((void *)param_1[2] != (void *)0x0) { + operator_delete__((void *)param_1[2]); + } + if ((void *)param_1[5] != (void *)0x0) { + operator_delete__((void *)param_1[5]); + } + if ((void *)param_1[7] != (void *)0x0) { + operator_delete__((void *)param_1[7]); + } + if ((void *)param_1[9] != (void *)0x0) { + operator_delete__((void *)param_1[9]); + } + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc418 (100 bytes) name=FUN_003dc418 + +void FUN_003dc418(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f80d0; + if (*(char *)((long)param_1 + 0x6f) != '\0') { + if ((void *)param_1[2] != (void *)0x0) { + operator_delete__((void *)param_1[2]); + } + if ((void *)param_1[5] != (void *)0x0) { + operator_delete__((void *)param_1[5]); + } + if ((void *)param_1[7] != (void *)0x0) { + operator_delete__((void *)param_1[7]); + } + if ((void *)param_1[9] != (void *)0x0) { + operator_delete__((void *)param_1[9]); + } + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc47c (88 bytes) name=FUN_003dc47c + +void FUN_003dc47c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f80f0; + if (*(char *)(param_1 + 0x11) != '\0') { + if ((void *)param_1[2] != (void *)0x0) { + operator_delete__((void *)param_1[2]); + } + if ((void *)param_1[5] != (void *)0x0) { + operator_delete__((void *)param_1[5]); + } + if ((void *)param_1[7] != (void *)0x0) { + operator_delete__((void *)param_1[7]); + } + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc4d4 (36 bytes) name=FUN_003dc4d4 + +void FUN_003dc4d4(void *param_1) + +{ + /* try { // try from 003dc4e4 to 004dc4e7 has its CatchHandler @ 003dc5e4 */ + FUN_003dc3b4(); + /* try { // try from 003dc4f4 to 004dc4f7 has its CatchHandler @ 003dc608 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc4f8 (36 bytes) name=FUN_003dc4f8 + +void FUN_003dc4f8(void *param_1) + +{ + /* try { // try from 003dc508 to 004dc50b has its CatchHandler @ 003dbc30 */ + FUN_003dc418(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc51c (48 bytes) name=FUN_003dc51c + +void FUN_003dc51c(undefined8 *param_1) + +{ + /* try { // try from 003dc51c to 004dc51f has its CatchHandler @ 003dc610 */ + *param_1 = &PTR_FUN_004f7e70; + /* try { // try from 003dc538 to 004dc53b has its CatchHandler @ 003dc5a8 */ + FUN_003f0114(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc54c (48 bytes) name=FUN_003dc54c + +void FUN_003dc54c(undefined8 *param_1) + +{ + /* catch() { ... } // from try @ 003dbd94 with catch @ 003dc54c */ + *param_1 = &PTR_FUN_004f7ee0; + FUN_003f005c(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc57c (48 bytes) name=FUN_003dc57c + +void FUN_003dc57c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7f50; + /* try { // try from 003dc594 to 004dc597 has its CatchHandler @ 003dbc30 */ + /* catch() { ... } // from try @ 003dbd1c with catch @ 003dc598 */ + FUN_003ecdfc(); + /* catch() { ... } // from try @ 003dbe44 with catch @ 003dc5a8 + catch() { ... } // from try @ 003dc02c with catch @ 003dc5a8 + catch() { ... } // from try @ 003dc538 with catch @ 003dc5a8 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc5ac (48 bytes) name=FUN_003dc5ac + +void FUN_003dc5ac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7f80; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc5dc (36 bytes) name=FUN_003dc5dc + +void FUN_003dc5dc(void *param_1) + +{ + /* catch() { ... } // from try @ 003dbee4 with catch @ 003dc5e4 + catch() { ... } // from try @ 003dc4e4 with catch @ 003dc5e4 */ + FUN_003dc47c(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc600 (48 bytes) name=FUN_003dc600 + +void FUN_003dc600(undefined8 *param_1) + +{ + /* catch() { ... } // from try @ 003dbce0 with catch @ 003dc608 + catch() { ... } // from try @ 003dbd24 with catch @ 003dc608 + catch() { ... } // from try @ 003dbd9c with catch @ 003dc608 + catch() { ... } // from try @ 003dc15c with catch @ 003dc608 + catch() { ... } // from try @ 003dc28c with catch @ 003dc608 + catch() { ... } // from try @ 003dc4f4 with catch @ 003dc608 */ + /* catch() { ... } // from try @ 003dbc84 with catch @ 003dc610 + catch() { ... } // from try @ 003dc1d0 with catch @ 003dc610 + catch() { ... } // from try @ 003dc280 with catch @ 003dc610 + catch() { ... } // from try @ 003dc51c with catch @ 003dc610 */ + *param_1 = &PTR_FUN_004f7d00; + /* catch() { ... } // from try @ 003dc64c with catch @ 003dc618 + catch() { ... } // from try @ 003dc6c4 with catch @ 003dc618 + catch() { ... } // from try @ 003dc9ac with catch @ 003dc618 + catch() { ... } // from try @ 003dcbac with catch @ 003dc618 + catch() { ... } // from try @ 003dceb4 with catch @ 003dc618 + catch() { ... } // from try @ 003dcf58 with catch @ 003dc618 + catch() { ... } // from try @ 003dcf7c with catch @ 003dc618 */ + FUN_003f0724(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc630 (48 bytes) name=FUN_003dc630 + +void FUN_003dc630(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7d50; + /* try { // try from 003dc64c to 004dc683 has its CatchHandler @ 003dc618 */ + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc660 (48 bytes) name=FUN_003dc660 + +void FUN_003dc660(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7dd0; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc690 (48 bytes) name=FUN_003dc690 + +void FUN_003dc690(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7e30; + FUN_003ecdfc(); + /* try { // try from 003dc6bc to 004dc6bf has its CatchHandler @ 003dcf6c */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc6c0 (48 bytes) name=FUN_003dc6c0 + +void FUN_003dc6c0(undefined8 *param_1) + +{ + /* try { // try from 003dc6c4 to 004dc733 has its CatchHandler @ 003dc618 */ + *param_1 = &PTR_FUN_004f7fb0; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc6f0 (48 bytes) name=FUN_003dc6f0 + +void FUN_003dc6f0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7fb0; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc720 (48 bytes) name=FUN_003dc720 + +void FUN_003dc720(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8010; + /* try { // try from 003dc738 to 004dc757 has its CatchHandler @ 003dcf80 */ + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc750 (48 bytes) name=FUN_003dc750 + +void FUN_003dc750(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8010; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc780 (48 bytes) name=FUN_003dc780 + +void FUN_003dc780(undefined8 *param_1) + +{ + /* try { // try from 003dc784 to 004dc787 has its CatchHandler @ 003dcf18 */ + *param_1 = &PTR_FUN_004fd4c0; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc7c4 (56 bytes) name=FUN_003dc7c4 + +void FUN_003dc7c4(undefined8 *param_1) + +{ + /* try { // try from 003dc7c8 to 004dc7cb has its CatchHandler @ 003dcf5c */ + /* try { // try from 003dc7d0 to 004dc817 has its CatchHandler @ 003dcf18 */ + *param_1 = &PTR_FUN_004fd4c0; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc810 (48 bytes) name=FUN_003dc810 + +void FUN_003dc810(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fd4c0; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc854 (56 bytes) name=FUN_003dc854 + +void FUN_003dc854(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fd4c0; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc8a0 (48 bytes) name=FUN_003dc8a0 + +void FUN_003dc8a0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7c80; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc8e4 (56 bytes) name=FUN_003dc8e4 + +void FUN_003dc8e4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7c80; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + /* try { // try from 003dc90c to 004dc90f has its CatchHandler @ 003dcf18 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc930 (48 bytes) name=FUN_003dc930 + +void FUN_003dc930(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f7c80; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dc974 (56 bytes) name=FUN_003dc974 + +void FUN_003dc974(undefined8 *param_1) + +{ + /* try { // try from 003dc980 to 004dc983 has its CatchHandler @ 003dcf80 */ + *param_1 = &PTR_FUN_004f7c80; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dc9c0 (100 bytes) name=FUN_003dc9c0 + +void FUN_003dc9c0(undefined8 *param_1) + +{ + void *pvVar1; + void *pvVar2; + + pvVar2 = (void *)param_1[4]; + *param_1 = &PTR_FUN_004f7e50; + pvVar1 = (void *)FUN_003ed4bc(); + if ((pvVar2 != pvVar1) && (pvVar2 != (void *)0x0)) { + operator_delete__(pvVar2); + } + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_0041a634(param_1 + 3); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003dca38 (36 bytes) name=FUN_003dca38 + +void FUN_003dca38(void *param_1) + +{ + FUN_003dc9c0(); + /* try { // try from 003dca4c to 004dca8f has its CatchHandler @ 003dcf88 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dca5c (16 bytes) name=FUN_003dca5c + +void FUN_003dca5c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fd560; + FUN_0041a6b4(); + return; +} + + +================================================================== + +### FUNC 003dca6c (48 bytes) name=FUN_003dca6c + +void FUN_003dca6c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fd560; + FUN_0041a6b4(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003dca9c (68 bytes) name=FUN_003dca9c + +void FUN_003dca9c(void *param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar2 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar2 < 1) { + operator_delete(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 003dcae0 (28 bytes) name=FUN_003dcae0 + +void FUN_003dcae0(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003dcafc (56 bytes) name=FUN_003dcafc + +void FUN_003dcafc(long *param_1,undefined1 param_2) + +{ + /* try { // try from 003dcb0c to 004dcb0f has its CatchHandler @ 003dcf18 */ + FUN_003d14e0(); + (**(code **)(*param_1 + 0x30))(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003dcb34 (612 bytes) name=FUN_003dcb34 + +uint FUN_003dcb34(undefined8 param_1,undefined1 *param_2,undefined1 *param_3,undefined1 *param_4, + undefined1 *param_5) + +{ + size_t *__s; + char *pcVar1; + bool bVar2; + uint uVar3; + size_t *psVar4; + size_t *psVar5; + size_t sVar6; + size_t sVar7; + size_t *__dest; + size_t sVar8; + undefined1 auStack_8 [8]; + + if (param_2 == param_3) { + __dest = (size_t *)(PTR_DAT_00501f30 + 0x18); + } + else { + if ((param_2 == (undefined1 *)0x0) && (param_3 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + sVar7 = (long)param_3 - (long)param_2; + /* try { // try from 003dcb80 to 004dcb83 has its CatchHandler @ 003dcf80 */ + psVar4 = (size_t *)FUN_00412a70(sVar7,0,auStack_8); + __dest = psVar4 + 3; + if (sVar7 == 1) { + *(undefined1 *)(psVar4 + 3) = *param_2; + } + else { + /* try { // try from 003dcbac to 004dcbaf has its CatchHandler @ 003dc618 */ + memcpy(__dest,param_2,sVar7); + } + if (psVar4 != (size_t *)PTR_DAT_00501f30) { + *(undefined4 *)(psVar4 + 2) = 0; + *psVar4 = sVar7; + *(undefined1 *)((long)psVar4 + sVar7 + 0x18) = 0; + } + } + if (param_4 == param_5) { + psVar4 = (size_t *)(PTR_DAT_00501f30 + 0x18); + } + else { + if ((param_4 == (undefined1 *)0x0) && (param_5 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + sVar7 = (long)param_5 - (long)param_4; + psVar5 = (size_t *)FUN_00412a70(sVar7,0,auStack_8); + psVar4 = psVar5 + 3; + if (sVar7 == 1) { + *(undefined1 *)(psVar5 + 3) = *param_4; + } + else { + memcpy(psVar4,param_4,sVar7); + } + if (psVar5 != (size_t *)PTR_DAT_00501f30) { + *(undefined4 *)(psVar5 + 2) = 0; + *psVar5 = sVar7; + *(undefined1 *)((long)psVar5 + sVar7 + 0x18) = 0; + } + } + sVar8 = __dest[-3]; + sVar7 = psVar4[-3]; + uVar3 = FUN_0041ad04(param_1,__dest,psVar4); + psVar5 = __dest; + __s = psVar4; + while (uVar3 == 0) { + sVar6 = strlen((char *)psVar5); + pcVar1 = (char *)((long)psVar5 + sVar6); + sVar6 = strlen((char *)__s); + bVar2 = pcVar1 == (char *)((long)__dest + sVar8); + if ((char *)((long)__s + sVar6) == (char *)((long)psVar4 + sVar7)) { + uVar3 = (uint)!bVar2; +LAB_003dcc88: + if (psVar4 + -3 != (size_t *)PTR_DAT_00501f30) goto LAB_003dccf8; + goto LAB_003dcc98; + } + if (bVar2) { + uVar3 = 0xffffffff; + goto LAB_003dcc88; + } + psVar5 = (size_t *)(pcVar1 + 1); + __s = (size_t *)((char *)((long)__s + sVar6) + 1); + uVar3 = FUN_0041ad04(param_1,psVar5,__s); + } + if (psVar4 + -3 == (size_t *)PTR_DAT_00501f30) { +LAB_003dcc98: + if (__dest + -3 != (size_t *)PTR_DAT_00501f30) goto LAB_003dcd14; + } + else { +LAB_003dccf8: + FUN_003dca9c(psVar4 + -3,auStack_8); + if (__dest + -3 != (size_t *)PTR_DAT_00501f30) { +LAB_003dcd14: + FUN_003dca9c(__dest + -3,auStack_8); + return uVar3; + } + } + return uVar3; +} + + +================================================================== + +### FUNC 003dcdc0 (524 bytes) name=FUN_003dcdc0 + +long * FUN_003dcdc0(long *param_1,undefined8 param_2,undefined1 *param_3,undefined1 *param_4) + +{ + size_t *psVar1; + void *pvVar2; + ulong uVar3; + size_t sVar4; + long lVar5; + long lVar6; + size_t sVar7; + ulong uVar8; + size_t *__dest; + undefined1 auStack_8 [8]; + + __dest = (size_t *)(PTR_DAT_00501f30 + 0x18); + *param_1 = (long)__dest; + if (param_3 == param_4) { + /* catch() { ... } // from try @ 003dc898 with catch @ 003dcf88 + catch() { ... } // from try @ 003dca4c with catch @ 003dcf88 */ + sVar7 = 0; + } + else { + if ((param_3 == (undefined1 *)0x0) && (param_4 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + sVar7 = (long)param_4 - (long)param_3; + psVar1 = (size_t *)FUN_00412a70(sVar7,0,auStack_8); + __dest = psVar1 + 3; + if (sVar7 == 1) { + *(undefined1 *)(psVar1 + 3) = *param_3; + } + else { + memcpy(__dest,param_3,sVar7); + } + if (psVar1 != (size_t *)PTR_DAT_00501f30) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = sVar7; + *(undefined1 *)((long)psVar1 + sVar7 + 0x18) = 0; + } + } + uVar8 = sVar7 << 1; + sVar7 = __dest[-3]; + pvVar2 = operator_new__(uVar8); + psVar1 = __dest; + while( true ) { + uVar3 = FUN_0041ad2c(param_2,pvVar2,psVar1,uVar8); + if (uVar8 <= uVar3) { + uVar8 = uVar3 + 1; + /* try { // try from 003dce98 to 004dce9b has its CatchHandler @ 003dcf80 */ + operator_delete__(pvVar2); + pvVar2 = operator_new__(uVar8); + /* try { // try from 003dcea4 to 004dcea7 has its CatchHandler @ 003dcf18 */ + /* try { // try from 003dceb4 to 004dceb7 has its CatchHandler @ 003dc618 */ + uVar3 = FUN_0041ad2c(param_2,pvVar2,psVar1,uVar8); + } + /* try { // try from 003dcec4 to 004dcec7 has its CatchHandler @ 003dcf18 */ + FUN_00411624(param_1,pvVar2,uVar3); + sVar4 = strlen((char *)psVar1); + /* try { // try from 003dced4 to 004dcf07 has its CatchHandler @ 003dcf80 */ + if ((char *)((long)psVar1 + sVar4) == (char *)((long)__dest + sVar7)) break; + lVar6 = *param_1; + psVar1 = (size_t *)((char *)((long)psVar1 + sVar4) + 1); + lVar5 = *(long *)(lVar6 + -0x18); + uVar3 = lVar5 + 1; + if ((*(ulong *)(lVar6 + -0x10) < uVar3) || (0 < *(int *)(lVar6 + -8))) { + /* try { // try from 003dcf10 to 004dcf13 has its CatchHandler @ 003dcf18 */ + FUN_00410ed8(param_1,uVar3); + lVar6 = *param_1; + /* catch() { ... } // from try @ 003dc784 with catch @ 003dcf18 + catch() { ... } // from try @ 003dc7d0 with catch @ 003dcf18 + catch() { ... } // from try @ 003dc90c with catch @ 003dcf18 + catch() { ... } // from try @ 003dcb0c with catch @ 003dcf18 + catch() { ... } // from try @ 003dcea4 with catch @ 003dcf18 + catch() { ... } // from try @ 003dcec4 with catch @ 003dcf18 + catch() { ... } // from try @ 003dcf10 with catch @ 003dcf18 */ + lVar5 = *(long *)(lVar6 + -0x18); + } + *(undefined1 *)(lVar6 + lVar5) = 0; + lVar5 = *param_1; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar5 + -8) = 0; + *(ulong *)(lVar5 + -0x18) = uVar3; + *(undefined1 *)(lVar5 + uVar3) = 0; + } + } + operator_delete__(pvVar2); + /* try { // try from 003dcf58 to 004dcf5b has its CatchHandler @ 003dc618 */ + /* catch() { ... } // from try @ 003dc7c8 with catch @ 003dcf5c */ + if (__dest + -3 == (size_t *)PTR_DAT_00501f30) { + /* catch() { ... } // from try @ 003dc6bc with catch @ 003dcf6c */ + /* try { // try from 003dcf7c to 004dcf7f has its CatchHandler @ 003dc618 */ + /* catch() { ... } // from try @ 003dc738 with catch @ 003dcf80 + catch() { ... } // from try @ 003dc980 with catch @ 003dcf80 + catch() { ... } // from try @ 003dcb80 with catch @ 003dcf80 + catch() { ... } // from try @ 003dce98 with catch @ 003dcf80 + catch() { ... } // from try @ 003dced4 with catch @ 003dcf80 */ + return param_1; + } + FUN_003dca9c(__dest + -3,auStack_8); + /* catch() { ... } // from try @ 003dcfdc with catch @ 003dcfac + catch() { ... } // from try @ 003dd2a0 with catch @ 003dcfac + catch() { ... } // from try @ 003ddb38 with catch @ 003dcfac + catch() { ... } // from try @ 003ddb94 with catch @ 003dcfac */ + return param_1; +} + + +================================================================== + +### FUNC 003dd040 (384 bytes) name=FUN_003dd040 + +int FUN_003dd040(undefined8 param_1,char *param_2,undefined8 param_3,char *param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8) + +{ + int iVar1; + char *__s1; + size_t sVar2; + char *__locale; + undefined1 *local_e0; + undefined1 *puStack_d8; + undefined8 *local_d0; + undefined8 uStack_c8; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + local_20 = param_5; + local_18 = param_6; + local_10 = param_7; + local_8 = param_8; + /* try { // try from 003dd098 to 004dd09b has its CatchHandler @ 003ddc28 */ + __s1 = setlocale(1,(char *)0x0); + local_e0 = (undefined1 *)register0x00000008; + puStack_d8 = (undefined1 *)register0x00000008; + if ((__s1 != (char *)0x0) && (iVar1 = strcmp(__s1,"C"), iVar1 != 0)) { + sVar2 = strlen(__s1); + __locale = operator_new__(sVar2 + 1); + memcpy(__locale,__s1,sVar2 + 1); + setlocale(1,"C"); + local_d0 = &local_20; + /* try { // try from 003dd160 to 004dd163 has its CatchHandler @ 003ddc04 */ + /* try { // try from 003dd168 to 004dd16b has its CatchHandler @ 003ddbbc */ + uStack_c8 = 0xffffff80ffffffe0; + iVar1 = vsprintf(param_2,param_4,&local_e0); + setlocale(1,__locale); + operator_delete__(__locale); + return iVar1; + } + local_d0 = &local_20; + /* try { // try from 003dd0c8 to 004dd0cb has its CatchHandler @ 003ddbbc */ + uStack_c8 = 0xffffff80ffffffe0; + /* try { // try from 003dd0f8 to 004dd0fb has its CatchHandler @ 003ddbf4 */ + iVar1 = vsprintf(param_2,param_4,&local_e0); + /* try { // try from 003dd100 to 004dd143 has its CatchHandler @ 003ddbbc */ + return iVar1; +} + + +================================================================== + +### FUNC 003dd1c0 (68 bytes) name=FUN_003dd1c0 + +void FUN_003dd1c0(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fd450; + param_1[2] = 0; + FUN_003efed0(param_1,0,0); + /* try { // try from 003dd200 to 004dd203 has its CatchHandler @ 003ddb98 */ + return; +} + + +================================================================== + +### FUNC 003dd218 (68 bytes) name=FUN_003dd218 + +void FUN_003dd218(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004fd450; + FUN_003efed0(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003dd270 (60 bytes) name=FUN_003dd270 + +void FUN_003dd270(undefined8 *param_1,undefined8 param_2,undefined8 param_3,long param_4) + +{ + /* try { // try from 003dd274 to 004dd277 has its CatchHandler @ 003ddb70 */ + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fd450; + FUN_003efed0(); + /* try { // try from 003dd2a0 to 004dd2f3 has its CatchHandler @ 003dcfac */ + return; +} + + +================================================================== + +### FUNC 003dd2c0 (28 bytes) name=FUN_003dd2c0 + +void FUN_003dd2c0(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003dd2dc (28 bytes) name=FUN_003dd2dc + +void FUN_003dd2dc(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003dd2f8 (44 bytes) name=FUN_003dd2f8 + +undefined8 FUN_003dd2f8(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x20))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd324 (44 bytes) name=FUN_003dd324 + +undefined8 FUN_003dd324(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x28))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd350 (44 bytes) name=FUN_003dd350 + +undefined8 FUN_003dd350(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x30))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd37c (44 bytes) name=FUN_003dd37c + +undefined8 FUN_003dd37c(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x38))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd3a8 (28 bytes) name=FUN_003dd3a8 + +void FUN_003dd3a8(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003dd3c4 (28 bytes) name=FUN_003dd3c4 + +void FUN_003dd3c4(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 003dd3e0 (28 bytes) name=FUN_003dd3e0 + +void FUN_003dd3e0(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003dd3fc (68 bytes) name=FUN_003dd3fc + +void FUN_003dd3fc(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fd3e0; + param_1[2] = 0; + FUN_003efd44(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003dd454 (68 bytes) name=FUN_003dd454 + +void FUN_003dd454(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004fd3e0; + FUN_003efd44(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003dd4ac (60 bytes) name=FUN_003dd4ac + +void FUN_003dd4ac(undefined8 *param_1,undefined8 param_2,undefined8 param_3,long param_4) + +{ + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fd3e0; + FUN_003efd44(); + return; +} + + +================================================================== + +### FUNC 003dd4fc (28 bytes) name=FUN_003dd4fc + +void FUN_003dd4fc(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003dd518 (28 bytes) name=FUN_003dd518 + +void FUN_003dd518(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003dd534 (44 bytes) name=FUN_003dd534 + +undefined8 FUN_003dd534(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x20))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd560 (44 bytes) name=FUN_003dd560 + +undefined8 FUN_003dd560(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x28))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd58c (44 bytes) name=FUN_003dd58c + +undefined8 FUN_003dd58c(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x30))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd5b8 (44 bytes) name=FUN_003dd5b8 + +undefined8 FUN_003dd5b8(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x38))(); + return param_1; +} + + +================================================================== + +### FUNC 003dd5e4 (28 bytes) name=FUN_003dd5e4 + +void FUN_003dd5e4(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003dd600 (28 bytes) name=FUN_003dd600 + +void FUN_003dd600(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 003dd61c (28 bytes) name=FUN_003dd61c + +void FUN_003dd61c(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003dd638 (112 bytes) name=FUN_003dd638 + +void FUN_003dd638(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_004f80b0; + *(undefined1 *)((long)param_1 + 0x21) = 0; + *(undefined1 *)((long)param_1 + 0x22) = 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; + *(undefined4 *)(param_1 + 0xb) = 0; + *(undefined1 *)((long)param_1 + 0x5c) = 0; + *(undefined1 *)((long)param_1 + 0x5d) = 0; + *(undefined1 *)((long)param_1 + 0x5e) = 0; + *(undefined1 *)((long)param_1 + 0x5f) = 0; + *(undefined1 *)(param_1 + 0xc) = 0; + *(undefined1 *)((long)param_1 + 0x61) = 0; + *(undefined1 *)((long)param_1 + 0x62) = 0; + *(undefined1 *)((long)param_1 + 99) = 0; + *(undefined1 *)((long)param_1 + 0x6f) = 0; + return; +} + + +================================================================== + +### FUNC 003dd6a8 (112 bytes) name=FUN_003dd6a8 + +void FUN_003dd6a8(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_004f80d0; + *(undefined1 *)((long)param_1 + 0x21) = 0; + *(undefined1 *)((long)param_1 + 0x22) = 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; + *(undefined4 *)(param_1 + 0xb) = 0; + *(undefined1 *)((long)param_1 + 0x5c) = 0; + *(undefined1 *)((long)param_1 + 0x5d) = 0; + *(undefined1 *)((long)param_1 + 0x5e) = 0; + *(undefined1 *)((long)param_1 + 0x5f) = 0; + *(undefined1 *)(param_1 + 0xc) = 0; + *(undefined1 *)((long)param_1 + 0x61) = 0; + *(undefined1 *)((long)param_1 + 0x62) = 0; + *(undefined1 *)((long)param_1 + 99) = 0; + *(undefined1 *)((long)param_1 + 0x6f) = 0; + return; +} + + +================================================================== + +### FUNC 003dd718 (192 bytes) name=FUN_003dd718 + +void FUN_003dd718(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 local_8; + + *param_1 = &PTR_FUN_004fd450; + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = 0; + FUN_003efed0(param_1,0,0); + *param_1 = &PTR_FUN_004f7e70; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a600(&local_8,param_2,0); + /* try { // try from 003dd7bc to 004dd7bf has its CatchHandler @ 003ddb98 */ + FUN_003efed0(param_1,local_8,0); + FUN_0041a634(&local_8); + /* try { // try from 003dd7c8 to 004ddb17 has its CatchHandler @ 003ddb70 */ + return; + } + return; +} + + +================================================================== + +### FUNC 003dd800 (192 bytes) name=FUN_003dd800 + +void FUN_003dd800(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 local_8; + + *param_1 = &PTR_FUN_004fd3e0; + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = 0; + FUN_003efd44(param_1,0,0); + *param_1 = &PTR_FUN_004f7ee0; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a600(&local_8,param_2,0); + FUN_003efd44(param_1,local_8,0); + FUN_0041a634(&local_8); + return; + } + return; +} + + +================================================================== + +### FUNC 003dd8e8 (28 bytes) name=FUN_003dd8e8 + +void FUN_003dd8e8(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f7f50; + return; +} + + +================================================================== + +### FUNC 003dd904 (48 bytes) name=FUN_003dd904 + +void FUN_003dd904(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003dd934 (48 bytes) name=FUN_003dd934 + +void FUN_003dd934(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003dd964 (28 bytes) name=FUN_003dd964 + +void FUN_003dd964(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f7f80; + return; +} + + +================================================================== + +### FUNC 003dd980 (28 bytes) name=FUN_003dd980 + +void FUN_003dd980(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003dd99c (28 bytes) name=FUN_003dd99c + +void FUN_003dd99c(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003dd9b8 (64 bytes) name=FUN_003dd9b8 + +void FUN_003dd9b8(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fd390; + FUN_003f0604(param_1,0); + return; +} + + +================================================================== + +### FUNC 003dda0c (64 bytes) name=FUN_003dda0c + +void FUN_003dda0c(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004fd390; + FUN_003f0604(param_1,0); + return; +} + + +================================================================== + +### FUNC 003dda60 (60 bytes) name=FUN_003dda60 + +void FUN_003dda60(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fd390; + FUN_003f0604(); + return; +} + + +================================================================== + +### FUNC 003ddab0 (28 bytes) name=FUN_003ddab0 + +void FUN_003ddab0(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003ddacc (28 bytes) name=FUN_003ddacc + +void FUN_003ddacc(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003ddae8 (44 bytes) name=FUN_003ddae8 + +undefined8 FUN_003ddae8(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x20))(); + return param_1; +} + + +================================================================== + +### FUNC 003ddb14 (44 bytes) name=FUN_003ddb14 + +undefined8 FUN_003ddb14(undefined8 param_1,long *param_2) + +{ + /* try { // try from 003ddb24 to 004ddb27 has its CatchHandler @ 003ddb98 */ + (**(code **)(*param_2 + 0x28))(); + /* try { // try from 003ddb38 to 004ddb3b has its CatchHandler @ 003dcfac */ + return param_1; +} + + +================================================================== + +### FUNC 003ddb40 (44 bytes) name=FUN_003ddb40 + +undefined8 FUN_003ddb40(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x30))(); + return param_1; +} + + +================================================================== + +### FUNC 003ddb6c (68 bytes) name=FUN_003ddb6c + +void FUN_003ddb6c(undefined8 *param_1,long param_2) + +{ + /* catch() { ... } // from try @ 003dd000 with catch @ 003ddb70 + catch() { ... } // from try @ 003dd274 with catch @ 003ddb70 + catch() { ... } // from try @ 003dd7c8 with catch @ 003ddb70 */ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_004f80f0; + param_1[5] = 0; + /* try { // try from 003ddb94 to 004ddb97 has its CatchHandler @ 003dcfac */ + param_1[6] = 0; + /* catch() { ... } // from try @ 003dd024 with catch @ 003ddb98 + catch() { ... } // from try @ 003dd200 with catch @ 003ddb98 + catch() { ... } // from try @ 003dd7bc with catch @ 003ddb98 + catch() { ... } // from try @ 003ddb24 with catch @ 003ddb98 */ + param_1[7] = 0; + param_1[8] = 0; + *(undefined1 *)(param_1 + 9) = 0; + *(undefined1 *)((long)param_1 + 0x49) = 0; + *(undefined1 *)(param_1 + 0x11) = 0; + return; +} + + +================================================================== + +### FUNC 003ddbb0 (184 bytes) name=FUN_003ddbb0 + +void FUN_003ddbb0(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 local_8; + + /* catch() { ... } // from try @ 003dd0c8 with catch @ 003ddbbc + catch() { ... } // from try @ 003dd100 with catch @ 003ddbbc + catch() { ... } // from try @ 003dd168 with catch @ 003ddbbc */ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fd390; + param_1[2] = 0; + FUN_003f0604(param_1,0); + /* catch() { ... } // from try @ 003dd0f8 with catch @ 003ddbf4 */ + *param_1 = &PTR_FUN_004f7d00; + /* catch() { ... } // from try @ 003dd160 with catch @ 003ddc04 */ + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + /* catch() { ... } // from try @ 003ddc54 with catch @ 003ddc30 + catch() { ... } // from try @ 003dddc4 with catch @ 003ddc30 + catch() { ... } // from try @ 003ddfd4 with catch @ 003ddc30 + catch() { ... } // from try @ 003de030 with catch @ 003ddc30 */ + FUN_0041a600(&local_8,param_2,0); + FUN_003f0604(param_1,local_8); + /* try { // try from 003ddc54 to 004ddc77 has its CatchHandler @ 003ddc30 */ + FUN_0041a634(&local_8); + return; + } + /* catch() { ... } // from try @ 003dd098 with catch @ 003ddc28 */ + return; +} + + +================================================================== + +### FUNC 003ddc90 (28 bytes) name=FUN_003ddc90 + +void FUN_003ddc90(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f7d50; + return; +} + + +================================================================== + +### FUNC 003ddcac (28 bytes) name=FUN_003ddcac + +void FUN_003ddcac(long *param_1) + +{ + /* try { // try from 003ddcbc to 004ddcbf has its CatchHandler @ 003de034 */ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003ddcc8 (28 bytes) name=FUN_003ddcc8 + +void FUN_003ddcc8(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003ddce4 (28 bytes) name=FUN_003ddce4 + +void FUN_003ddce4(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 003ddd00 (28 bytes) name=FUN_003ddd00 + +void FUN_003ddd00(long *param_1) + +{ + /* try { // try from 003ddd10 to 004ddd13 has its CatchHandler @ 003de004 */ + (**(code **)(*param_1 + 0x28))(); + /* try { // try from 003ddd18 to 004ddd87 has its CatchHandler @ 003de034 */ + return; +} + + +================================================================== + +### FUNC 003ddd1c (28 bytes) name=FUN_003ddd1c + +void FUN_003ddd1c(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 003ddd38 (28 bytes) name=FUN_003ddd38 + +void FUN_003ddd38(long *param_1) + +{ + (**(code **)(*param_1 + 0x38))(); + return; +} + + +================================================================== + +### FUNC 003ddd54 (28 bytes) name=FUN_003ddd54 + +void FUN_003ddd54(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003ddd70 (28 bytes) name=FUN_003ddd70 + +void FUN_003ddd70(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 003ddd8c (28 bytes) name=FUN_003ddd8c + +void FUN_003ddd8c(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003ddda8 (28 bytes) name=FUN_003ddda8 + +void FUN_003ddda8(long *param_1) + +{ + (**(code **)(*param_1 + 0x58))(); + return; +} + + +================================================================== + +### FUNC 003dddc4 (28 bytes) name=FUN_003dddc4 + +void FUN_003dddc4(long *param_1) + +{ + /* try { // try from 003dddc4 to 004dde1f has its CatchHandler @ 003ddc30 */ + (**(code **)(*param_1 + 0x60))(); + return; +} + + +================================================================== + +### FUNC 003ddde0 (28 bytes) name=FUN_003ddde0 + +void FUN_003ddde0(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f7dd0; + return; +} + + +================================================================== + +### FUNC 003dddfc (28 bytes) name=FUN_003dddfc + +void FUN_003dddfc(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003dde18 (28 bytes) name=FUN_003dde18 + +void FUN_003dde18(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003dde34 (28 bytes) name=FUN_003dde34 + +void FUN_003dde34(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 003dde50 (28 bytes) name=FUN_003dde50 + +void FUN_003dde50(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 003dde6c (28 bytes) name=FUN_003dde6c + +void FUN_003dde6c(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 003dde88 (28 bytes) name=FUN_003dde88 + +void FUN_003dde88(long *param_1) + +{ + /* try { // try from 003dde88 to 004dde8b has its CatchHandler @ 003de034 */ + (**(code **)(*param_1 + 0x38))(); + return; +} + + +================================================================== + +### FUNC 003ddea4 (28 bytes) name=FUN_003ddea4 + +void FUN_003ddea4(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003ddec0 (28 bytes) name=FUN_003ddec0 + +void FUN_003ddec0(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 003ddedc (76 bytes) name=FUN_003ddedc + +void FUN_003ddedc(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004f7e50; + uVar1 = FUN_003ed4bc(); + param_1[4] = uVar1; + FUN_003fd7dc(param_1,0); + return; +} + + +================================================================== + +### FUNC 003ddf3c (76 bytes) name=FUN_003ddf3c + +void FUN_003ddf3c(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004f7e50; + uVar1 = FUN_003ed4bc(); + param_1[4] = uVar1; + FUN_003fd7dc(param_1,0); + return; +} + + +================================================================== + +### FUNC 003ddf9c (160 bytes) name=FUN_003ddf9c + +void FUN_003ddf9c(undefined8 *param_1,undefined8 param_2,char *param_3,long param_4) + +{ + int iVar1; + char *__s2; + size_t sVar2; + void *pvVar3; + + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004f7e50; + /* try { // try from 003ddfd4 to 004ddfd7 has its CatchHandler @ 003ddc30 */ + __s2 = (char *)FUN_003ed4bc(); + iVar1 = strcmp(param_3,__s2); + if (iVar1 == 0) { + param_1[4] = __s2; + } + else { + sVar2 = strlen(param_3); + pvVar3 = operator_new__(sVar2 + 1); + /* try { // try from 003de030 to 004de033 has its CatchHandler @ 003ddc30 */ + pvVar3 = memcpy(pvVar3,param_3,sVar2 + 1); + /* catch() { ... } // from try @ 003ddcbc with catch @ 003de034 + catch() { ... } // from try @ 003ddd18 with catch @ 003de034 + catch() { ... } // from try @ 003dde88 with catch @ 003de034 */ + param_1[4] = pvVar3; + } + FUN_003fd7dc(param_1,param_2); + /* catch() { ... } // from try @ 003ddd10 with catch @ 003de004 */ + return; +} + + +================================================================== + +### FUNC 003de080 (28 bytes) name=FUN_003de080 + +void FUN_003de080(long param_1,undefined8 *param_2) + +{ + /* try { // try from 003de088 to 004de08b has its CatchHandler @ 003de040 */ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x10); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x18); + return; +} + + +================================================================== + +### FUNC 003de09c (28 bytes) name=FUN_003de09c + +void FUN_003de09c(long param_1,undefined8 *param_2) + +{ + /* try { // try from 003de0a4 to 004de0a7 has its CatchHandler @ 003de878 */ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x20); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x28); + return; +} + + +================================================================== + +### FUNC 003de0b8 (28 bytes) name=FUN_003de0b8 + +void FUN_003de0b8(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x30); + /* try { // try from 003de0c4 to 004de0c7 has its CatchHandler @ 003de9d0 */ + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x38); + return; +} + + +================================================================== + +### FUNC 003de0d4 (4 bytes) name=FUN_003de0d4 + +void FUN_003de0d4(void) + +{ + return; +} + + +================================================================== + +### FUNC 003de0d8 (28 bytes) name=FUN_003de0d8 + +void FUN_003de0d8(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x40); + /* try { // try from 003de0ec to 004de0ef has its CatchHandler @ 003de9c8 */ + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x48); + return; +} + + +================================================================== + +### FUNC 003de0f4 (88 bytes) name=FUN_003de0f4 + +void FUN_003de0f4(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x58); + /* try { // try from 003de104 to 004de107 has its CatchHandler @ 003de9a4 */ + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x60); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x68); + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x70); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x78); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x80); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x88); + return; +} + + +================================================================== + +### FUNC 003de14c (88 bytes) name=FUN_003de14c + +void FUN_003de14c(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x90); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x98); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xa0); + /* try { // try from 003de178 to 004de17b has its CatchHandler @ 003de970 */ + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xa8); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xb0); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xb8); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xc0); + return; +} + + +================================================================== + +### FUNC 003de1a4 (148 bytes) name=FUN_003de1a4 + +void FUN_003de1a4(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 200); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xd0); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xd8); + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xe0); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xe8); + /* try { // try from 003de1e8 to 004de1eb has its CatchHandler @ 003de99c */ + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xf0); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xf8); + param_2[7] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x100); + param_2[8] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x108); + param_2[9] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x110); + /* try { // try from 003de224 to 004de227 has its CatchHandler @ 003de994 */ + param_2[10] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x118); + param_2[0xb] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x120); + return; +} + + +================================================================== + +### FUNC 003de238 (148 bytes) name=FUN_003de238 + +void FUN_003de238(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x128); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x130); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x138); + /* try { // try from 003de260 to 004de263 has its CatchHandler @ 003de958 */ + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x140); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x148); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x150); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x158); + /* try { // try from 003de290 to 004de2c3 has its CatchHandler @ 003de8a0 */ + param_2[7] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x160); + param_2[8] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x168); + param_2[9] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x170); + param_2[10] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x178); + param_2[0xb] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x180); + return; +} + + +================================================================== + +### FUNC 003de2cc (220 bytes) name=FUN_003de2cc + +void FUN_003de2cc(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + param_1[4] = 0; + *param_1 = &PTR_FUN_004f7e30; + 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; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x18] = 0; + param_1[0x19] = 0; + param_1[0x1a] = 0; + param_1[0x1b] = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + param_1[0x24] = 0; + param_1[0x25] = 0; + param_1[0x26] = 0; + param_1[0x27] = 0; + param_1[0x28] = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + param_1[0x2e] = 0; + param_1[0x2f] = 0; + param_1[0x30] = 0; + *(undefined1 *)(param_1 + 0x31) = 0; + return; +} + + +================================================================== + +### FUNC 003de3a8 (28 bytes) name=FUN_003de3a8 + +void FUN_003de3a8(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f7fb0; + return; +} + + +================================================================== + +### FUNC 003de3c4 (28 bytes) name=FUN_003de3c4 + +void FUN_003de3c4(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003de3e0 (28 bytes) name=FUN_003de3e0 + +void FUN_003de3e0(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f7fe0; + return; +} + + +================================================================== + +### FUNC 003de3fc (28 bytes) name=FUN_003de3fc + +void FUN_003de3fc(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f8010; + return; +} + + +================================================================== + +### FUNC 003de418 (28 bytes) name=FUN_003de418 + +void FUN_003de418(long *param_1) + +{ + /* try { // try from 003de428 to 004de42b has its CatchHandler @ 003de958 */ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003de434 (28 bytes) name=FUN_003de434 + +void FUN_003de434(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003de450 (28 bytes) name=FUN_003de450 + +void FUN_003de450(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 003de46c (28 bytes) name=FUN_003de46c + +void FUN_003de46c(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 003de488 (28 bytes) name=FUN_003de488 + +void FUN_003de488(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + /* try { // try from 003de49c to 004de49f has its CatchHandler @ 003de994 */ + return; +} + + +================================================================== + +### FUNC 003de4a4 (28 bytes) name=FUN_003de4a4 + +void FUN_003de4a4(long *param_1) + +{ + (**(code **)(*param_1 + 0x38))(); + return; +} + + +================================================================== + +### FUNC 003de4c0 (28 bytes) name=FUN_003de4c0 + +void FUN_003de4c0(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f8060; + return; +} + + +================================================================== + +### FUNC 003de4dc (60 bytes) name=FUN_003de4dc + +void FUN_003de4dc(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fd4c0; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + /* try { // try from 003de510 to 004de513 has its CatchHandler @ 003de99c */ + return; +} + + +================================================================== + +### FUNC 003de52c (60 bytes) name=FUN_003de52c + +void FUN_003de52c(undefined8 *param_1,undefined8 param_2,undefined8 param_3,long param_4) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + *param_1 = &PTR_FUN_004fd4c0; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 003de57c (28 bytes) name=FUN_003de57c + +void FUN_003de57c(long *param_1) + +{ + /* try { // try from 003de584 to 004de5b3 has its CatchHandler @ 003de9c8 */ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003de598 (28 bytes) name=FUN_003de598 + +void FUN_003de598(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003de5b4 (44 bytes) name=FUN_003de5b4 + +undefined8 FUN_003de5b4(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x18))(); + return param_1; +} + + +================================================================== + +### FUNC 003de5e0 (28 bytes) name=FUN_003de5e0 + +void FUN_003de5e0(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 003de5fc (8 bytes) name=FUN_003de5fc + +undefined8 FUN_003de5fc(undefined8 param_1,undefined8 *param_2) + +{ + return *param_2; +} + + +================================================================== + +### FUNC 003de604 (24 bytes) name=FUN_003de604 + +long * FUN_003de604(long *param_1) + +{ + /* try { // try from 003de604 to 004de607 has its CatchHandler @ 003de960 */ + /* try { // try from 003de60c to 004de65b has its CatchHandler @ 003de9c8 */ + *param_1 = (long)(PTR_DAT_00501f30 + 0x18); + return param_1; +} + + +================================================================== + +### FUNC 003de61c (168 bytes) name=FUN_003de61c + +void FUN_003de61c(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 uVar2; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fd4c0; + uVar2 = FUN_003ed450(); + param_1[2] = uVar2; + *param_1 = &PTR_FUN_004fd5c0; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 003de708 (144 bytes) name=FUN_003de708 + +void FUN_003de708(undefined8 *param_1,char *param_2,undefined8 param_3) + +{ + int iVar1; + + FUN_0041a854(param_1,param_3); + *param_1 = &PTR_FUN_004fd560; + /* try { // try from 003de740 to 004de743 has its CatchHandler @ 003de878 */ + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 003de7ac (60 bytes) name=FUN_003de7ac + +void FUN_003de7ac(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + /* try { // try from 003de7b4 to 004de7b7 has its CatchHandler @ 003de040 */ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f7c80; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + /* try { // try from 003de7e0 to 004de7e3 has its CatchHandler @ 003de8a0 */ + return; +} + + +================================================================== + +### FUNC 003de7fc (72 bytes) name=FUN_003de7fc + +void FUN_003de7fc(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + undefined8 local_8; + + /* try { // try from 003de804 to 004de807 has its CatchHandler @ 003de9d0 */ + /* try { // try from 003de810 to 004de813 has its CatchHandler @ 003de970 */ + /* try { // try from 003de81c to 004de81f has its CatchHandler @ 003de8a0 */ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f7c80; + local_8 = param_2; + uVar1 = FUN_0041a63c(&local_8); + param_1[2] = uVar1; + /* try { // try from 003de840 to 004de843 has its CatchHandler @ 003de99c */ + return; +} + + +================================================================== + +### FUNC 003de844 (28 bytes) name=FUN_003de844 + +void FUN_003de844(long *param_1) + +{ + /* try { // try from 003de84c to 004de84f has its CatchHandler @ 003de9c8 */ + (**(code **)(*param_1 + 0x10))(); + /* try { // try from 003de858 to 004de85b has its CatchHandler @ 003de958 */ + return; +} + + +================================================================== + +### FUNC 003de860 (44 bytes) name=FUN_003de860 + +undefined8 FUN_003de860(undefined8 param_1,long *param_2) + +{ + /* try { // try from 003de864 to 004de867 has its CatchHandler @ 003de994 */ + /* catch() { ... } // from try @ 003de0a4 with catch @ 003de878 + catch() { ... } // from try @ 003de740 with catch @ 003de878 + catch() { ... } // from try @ 003de7f8 with catch @ 003de878 */ + (**(code **)(*param_2 + 0x18))(); + return param_1; +} + + +================================================================== + +### FUNC 003de88c (28 bytes) name=FUN_003de88c + +void FUN_003de88c(long *param_1) + +{ + /* try { // try from 003de89c to 004de89f has its CatchHandler @ 003de040 */ + (**(code **)(*param_1 + 0x20))(); + /* catch() { ... } // from try @ 003de290 with catch @ 003de8a0 + catch() { ... } // from try @ 003de7e0 with catch @ 003de8a0 + catch() { ... } // from try @ 003de81c with catch @ 003de8a0 */ + return; +} + + +================================================================== + +### FUNC 003de8a8 (168 bytes) name=FUN_003de8a8 + +void FUN_003de8a8(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 uVar2; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f7c80; + uVar2 = FUN_003ed450(); + param_1[2] = uVar2; + *param_1 = &PTR_FUN_004f7cc0; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 003de994 (104 bytes) name=FUN_003de994 + +void FUN_003de994(long *param_1) + +{ + ulong uVar1; + long lVar2; + + /* catch() { ... } // from try @ 003de224 with catch @ 003de994 + catch() { ... } // from try @ 003de49c with catch @ 003de994 + catch() { ... } // from try @ 003de864 with catch @ 003de994 */ + /* catch() { ... } // from try @ 003de1e8 with catch @ 003de99c + catch() { ... } // from try @ 003de510 with catch @ 003de99c + catch() { ... } // from try @ 003de840 with catch @ 003de99c */ + /* catch() { ... } // from try @ 003de104 with catch @ 003de9a4 */ + uVar1 = FUN_003edb10(PTR_DAT_00501da0); + /* catch() { ... } // from try @ 003de0ec with catch @ 003de9c8 + catch() { ... } // from try @ 003de584 with catch @ 003de9c8 + catch() { ... } // from try @ 003de60c with catch @ 003de9c8 + catch() { ... } // from try @ 003de84c with catch @ 003de9c8 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + /* catch() { ... } // from try @ 003de0c4 with catch @ 003de9d0 + catch() { ... } // from try @ 003de6cc with catch @ 003de9d0 + catch() { ... } // from try @ 003de804 with catch @ 003de9d0 */ + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,PTR_PTR_00501cf0,0); + if (lVar2 != 0) { + /* catch() { ... } // from try @ 003dea28 with catch @ 003de9f0 + catch() { ... } // from try @ 003dec9c with catch @ 003de9f0 + catch() { ... } // from try @ 003ded64 with catch @ 003de9f0 */ + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003de9fc (536 bytes) name=FUN_003de9fc + +undefined1 [16] +FUN_003de9fc(long *param_1,long *param_2,ulong param_3,long param_4,undefined1 param_5, + undefined8 param_6,byte *param_7,byte *param_8) + +{ + byte *pbVar1; + byte bVar2; + char cVar3; + char cVar4; + int iVar5; + long *plVar6; + char cVar7; + ulong uVar8; + undefined1 auVar9 [16]; + + /* try { // try from 003dea28 to 004dea2b has its CatchHandler @ 003de9f0 */ + plVar6 = (long *)FUN_003de994(param_4 + 0xd0); + /* try { // try from 003dea44 to 004dea47 has its CatchHandler @ 003ded78 */ + uVar8 = param_3 & 0xff; + while (param_7 != param_8) { + bVar2 = *param_7; + /* try { // try from 003deaf0 to 004deb43 has its CatchHandler @ 003ded68 */ + cVar3 = *(char *)((long)plVar6 + (long)(int)(uint)bVar2 + 0x139); + if (cVar3 == '\0') { + cVar3 = (**(code **)(*plVar6 + 0x40))(plVar6,bVar2,0); + if (cVar3 != '\0') { + *(char *)((long)plVar6 + (long)(int)(uint)bVar2 + 0x139) = cVar3; + goto LAB_003deafc; + } +LAB_003deb04: + if ((int)uVar8 != 0) goto LAB_003deae0; + if ((byte *)param_2[6] <= (byte *)param_2[5]) { + iVar5 = (**(code **)(*param_2 + 0x68))(param_2); + uVar8 = (ulong)(iVar5 == -1); + goto LAB_003deae0; + } + *(byte *)param_2[5] = *param_7; + param_7 = param_7 + 1; + param_2[5] = param_2[5] + 1; + } + else { +LAB_003deafc: + if (cVar3 != '%') goto LAB_003deb04; + pbVar1 = param_7 + 1; + if (param_8 == pbVar1) break; + bVar2 = param_7[1]; + /* try { // try from 003dea64 to 004dea67 has its CatchHandler @ 003ded70 */ + cVar3 = *(char *)((long)plVar6 + (long)(int)(uint)bVar2 + 0x139); + if (cVar3 == '\0') { + /* try { // try from 003debb4 to 004debb7 has its CatchHandler @ 003ded70 */ + cVar3 = (**(code **)(*plVar6 + 0x40))(plVar6,bVar2,0); + if (cVar3 != '\0') { + *(char *)((long)plVar6 + (long)(int)(uint)bVar2 + 0x139) = cVar3; + goto LAB_003dea70; + } + cVar7 = '\0'; + param_7 = pbVar1; + cVar4 = cVar3; + } + else { +LAB_003dea70: + if ((cVar3 == 'O') || (cVar3 == 'E')) { + pbVar1 = param_7 + 2; + if (param_8 == pbVar1) break; + bVar2 = param_7[2]; + /* try { // try from 003dea94 to 004dea97 has its CatchHandler @ 003ded68 */ + cVar4 = *(char *)((long)plVar6 + (long)(int)(uint)bVar2 + 0x139); + param_7 = pbVar1; + cVar7 = cVar3; + if ((cVar4 == '\0') && + (cVar4 = (**(code **)(*plVar6 + 0x40))(plVar6,bVar2,0), cVar4 != '\0')) { + *(char *)((long)plVar6 + (long)(int)(uint)bVar2 + 0x139) = cVar4; + } + } + else { + cVar7 = '\0'; + param_7 = pbVar1; + cVar4 = cVar3; + } + } + auVar9 = (**(code **)(*param_1 + 0x10)) + (param_1,param_2,param_3 & 0xffffffffffffff00 | uVar8,param_4,param_5, + param_6,cVar4,cVar7); + param_2 = auVar9._0_8_; + uVar8 = auVar9._8_8_ & 0xff; + param_3 = param_3 & 0xffffffffffffff00; +LAB_003deae0: + param_7 = param_7 + 1; + /* try { // try from 003deae8 to 004deaeb has its CatchHandler @ 003decf4 */ + } + } + auVar9._8_8_ = param_3 & 0xffffffffffffff00 | uVar8; + auVar9._0_8_ = param_2; + return auVar9; +} + + +================================================================== + +### FUNC 003dec14 (820 bytes) name=FUN_003dec14 + +undefined1 [16] +FUN_003dec14(undefined8 param_1,long *param_2,ulong param_3,long *param_4,uint param_5,int *param_6, + int param_7,int param_8,ulong param_9,long param_10,uint *param_11) + +{ + byte bVar1; + int iVar2; + uint uVar3; + long *plVar4; + uint uVar5; + ulong uVar6; + ulong uVar7; + int iVar8; + ulong uVar9; + int iVar10; + int iVar11; + undefined1 auVar12 [16]; + + /* try { // try from 003dec28 to 004dec2b has its CatchHandler @ 003ded78 */ + plVar4 = (long *)FUN_003de994(param_10 + 0xd0); + uVar9 = param_3 & 0xffffffff; + if (param_9 == 2) { + iVar10 = 10; + } + else { + iVar10 = 1000; + if (param_9 != 4) { + iVar10 = 1; + } + } + iVar8 = 0; + uVar7 = 0; + do { + if (param_2 == (long *)0x0) { +LAB_003ded38: + param_2 = (long *)0x0; + if (param_4 == (long *)0x0) { +LAB_003decbc: + if (param_9 == uVar7) { + *param_6 = iVar8; + } + else { + /* try { // try from 003decc4 to 004decc7 has its CatchHandler @ 003ded78 */ + /* try { // try from 003decd0 to 004decd3 has its CatchHandler @ 003ded70 */ + if ((uVar7 == 2) && (param_9 == 4)) { + *param_6 = iVar8 + -100; + } + else { + *param_11 = *param_11 | 4; + } + } + auVar12._8_8_ = param_3 & 0xffffffff00000000 | uVar9; + auVar12._0_8_ = param_2; + /* catch() { ... } // from try @ 003deae8 with catch @ 003decf4 */ + return auVar12; + } + iVar11 = 1; +joined_r0x003ded4c: + iVar2 = 0; + if (param_5 == 0xffffffff) { + if ((byte *)param_4[2] < (byte *)param_4[3]) { + param_5 = (uint)*(byte *)param_4[2]; + } + else { + param_5 = (**(code **)(*param_4 + 0x48))(param_4); + if (param_5 == 0xffffffff) { + iVar2 = 1; + param_4 = (long *)0x0; + goto LAB_003decac; + } + } + /* try { // try from 003ded64 to 004ded67 has its CatchHandler @ 003de9f0 */ + iVar2 = 0; + /* catch() { ... } // from try @ 003dea94 with catch @ 003ded68 + catch() { ... } // from try @ 003deaf0 with catch @ 003ded68 */ + } +LAB_003decac: + if ((iVar11 == iVar2) || (param_9 <= uVar7)) goto LAB_003decbc; + uVar6 = 0xff; + /* catch() { ... } // from try @ 003dea64 with catch @ 003ded70 + catch() { ... } // from try @ 003debb4 with catch @ 003ded70 + catch() { ... } // from try @ 003decd0 with catch @ 003ded70 */ + uVar3 = 0xff; + if (param_2 != (long *)0x0) { + /* catch() { ... } // from try @ 003dea44 with catch @ 003ded78 + catch() { ... } // from try @ 003dec28 with catch @ 003ded78 + catch() { ... } // from try @ 003decc4 with catch @ 003ded78 */ + if ((int)uVar9 == -1) { + if ((byte *)param_2[2] < (byte *)param_2[3]) { + uVar9 = (ulong)*(byte *)param_2[2]; + } + else { + /* try { // try from 003deef0 to 004deef3 has its CatchHandler @ 003df118 */ + uVar3 = (**(code **)(*param_2 + 0x48))(param_2); + uVar9 = (ulong)uVar3; + if (uVar3 == 0xffffffff) { + uVar6 = 0xff; + param_2 = (long *)0x0; + uVar3 = 0xff; + goto LAB_003ded88; + } + } + } + goto LAB_003ded80; + } + } + else { + if ((int)uVar9 == -1) { + if ((byte *)param_2[2] < (byte *)param_2[3]) { + uVar9 = (ulong)*(byte *)param_2[2]; + /* try { // try from 003dee1c to 004dee1f has its CatchHandler @ 003df198 */ + } + else { + uVar3 = (**(code **)(*param_2 + 0x48))(param_2); + if (uVar3 == 0xffffffff) goto LAB_003ded38; + uVar9 = (ulong)uVar3; + } + } + iVar11 = 0; + /* try { // try from 003dec9c to 004decbb has its CatchHandler @ 003de9f0 */ + if (param_4 != (long *)0x0) goto joined_r0x003ded4c; + if (param_9 <= uVar7) goto LAB_003decbc; +LAB_003ded80: + /* catch() { ... } // from try @ 003dedd0 with catch @ 003ded80 + catch() { ... } // from try @ 003df04c with catch @ 003ded80 + catch() { ... } // from try @ 003df178 with catch @ 003ded80 */ + uVar3 = (uint)uVar9 & 0xff; + uVar6 = uVar9 & 0xff; + } +LAB_003ded88: + bVar1 = *(byte *)((long)plVar4 + (long)(int)uVar3 + 0x139); + uVar5 = (uint)bVar1; + if (bVar1 == 0) { + bVar1 = (**(code **)(*plVar4 + 0x40))(plVar4,uVar6,0x2a); + uVar5 = (uint)bVar1; + if (uVar5 == 0x2a) goto LAB_003decbc; + *(byte *)((long)plVar4 + (long)(int)uVar3 + 0x139) = bVar1; + /* try { // try from 003dee68 to 004dee6b has its CatchHandler @ 003df184 */ + /* try { // try from 003dee70 to 004deeaf has its CatchHandler @ 003df198 */ + } + if (9 < (uVar5 - 0x30 & 0xff)) goto LAB_003decbc; + iVar8 = iVar8 * 10 + (uVar5 - 0x30); + if ((param_8 < iVar8 * iVar10) || (iVar8 * iVar10 + iVar10 <= param_7)) goto LAB_003decbc; + /* try { // try from 003dedd0 to 004dedd3 has its CatchHandler @ 003ded80 */ + iVar10 = iVar10 / 10; + if (param_2 != (long *)0x0) { + /* try { // try from 003dedec to 004dedef has its CatchHandler @ 003df17c */ + if ((ulong)param_2[2] < (ulong)param_2[3]) { + uVar9 = 0xffffffff; + param_2[2] = param_2[2] + 1; + } + else { + uVar9 = 0xffffffff; + (**(code **)(*param_2 + 0x50))(param_2); + } + } + uVar7 = uVar7 + 1; + } while( true ); +} + + +================================================================== + +### FUNC 003def48 (432 bytes) name=FUN_003def48 + +undefined1 [16] +FUN_003def48(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + int iVar4; + ulong uVar5; + long *plVar6; + undefined1 auVar7 [16]; + int local_8; + int local_4; + + /* try { // try from 003def64 to 004def67 has its CatchHandler @ 003df198 */ + FUN_003de994(param_6 + 0xd0); + local_4 = 0; + auVar7 = FUN_003dec14(param_1,param_2,param_3,param_4,param_5,&local_8,0,9999,4,param_6,&local_4); + plVar6 = auVar7._0_8_; + /* try { // try from 003defd8 to 004defdb has its CatchHandler @ 003df17c */ + uVar5 = auVar7._8_8_ & 0xffffffff; + if (local_4 == 0) { + if (local_8 < 0) { + *(int *)(param_8 + 0x14) = local_8 + 100; + } + else { + *(int *)(param_8 + 0x14) = local_8 + -0x76c; + } + } + else { + *param_7 = *param_7 | 4; + } + if (plVar6 == (long *)0x0) { +LAB_003df060: + plVar6 = (long *)0x0; + iVar4 = 1; + if (param_4 != (long *)0x0) goto LAB_003df010; + } + else { + if (auVar7._8_4_ == -1) { + if ((byte *)plVar6[2] < (byte *)plVar6[3]) { + uVar5 = (ulong)*(byte *)plVar6[2]; + } + else { + uVar3 = (**(code **)(*plVar6 + 0x48))(); + if (uVar3 == 0xffffffff) goto LAB_003df060; + uVar5 = (ulong)uVar3; + } + } + iVar4 = 0; + if (param_4 == (long *)0x0) goto LAB_003df024; +LAB_003df010: + iVar1 = 0; + if ((int)param_5 == -1) { + /* try { // try from 003df07c to 004df07f has its CatchHandler @ 003df17c */ + /* try { // try from 003df088 to 004df08b has its CatchHandler @ 003df198 */ + if ((ulong)param_4[2] < (ulong)param_4[3]) { + iVar1 = 0; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + iVar1 = 1; + if (iVar2 != -1) { + iVar1 = 0; + } + } + } + if (iVar4 != iVar1) goto LAB_003df024; + } + *param_7 = *param_7 | 2; +LAB_003df024: + auVar7._8_8_ = param_3 & 0xffffffff00000000 | uVar5; + auVar7._0_8_ = plVar6; + /* try { // try from 003df04c to 004df073 has its CatchHandler @ 003ded80 */ + return auVar7; +} + + +================================================================== + +### FUNC 003df0f8 (104 bytes) name=FUN_003df0f8 + +void FUN_003df0f8(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(PTR_DAT_00501e98); + /* catch() { ... } // from try @ 003deef0 with catch @ 003df118 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,PTR_PTR_00501e10,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003df160 (104 bytes) name=FUN_003df160 + +void FUN_003df160(long *param_1) + +{ + ulong uVar1; + long lVar2; + + /* try { // try from 003df178 to 004df17b has its CatchHandler @ 003ded80 */ + uVar1 = FUN_003edb10(&DAT_005461e8); + /* catch() { ... } // from try @ 003dedec with catch @ 003df17c + catch() { ... } // from try @ 003defd8 with catch @ 003df17c + catch() { ... } // from try @ 003df07c with catch @ 003df17c */ + /* catch() { ... } // from try @ 003dee68 with catch @ 003df184 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + /* catch() { ... } // from try @ 003dee1c with catch @ 003df198 + catch() { ... } // from try @ 003dee70 with catch @ 003df198 + catch() { ... } // from try @ 003def64 with catch @ 003df198 + catch() { ... } // from try @ 003df088 with catch @ 003df198 */ + /* catch() { ... } // from try @ 003df1e0 with catch @ 003df1a0 + catch() { ... } // from try @ 003df3d0 with catch @ 003df1a0 + catch() { ... } // from try @ 003df47c with catch @ 003df1a0 */ + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd050,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003df1c8 (104 bytes) name=FUN_003df1c8 + +void FUN_003df1c8(long *param_1) + +{ + ulong uVar1; + long lVar2; + + /* try { // try from 003df1e0 to 004df1e3 has its CatchHandler @ 003df1a0 */ + uVar1 = FUN_003edb10(&DAT_00546220); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + /* try { // try from 003df210 to 004df213 has its CatchHandler @ 003df488 */ + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd080,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003df230 (1200 bytes) name=FUN_003df230 + +void FUN_003df230(long param_1,undefined8 param_2) + +{ + undefined8 uVar1; + char cVar2; + bool bVar3; + undefined1 uVar4; + int iVar5; + long *plVar6; + ulong uVar7; + char *pcVar8; + void *pvVar9; + long lVar10; + int *piVar11; + undefined8 *puVar12; + long local_30; + long local_28; + long local_20; + long local_18; + long local_10; + long local_8; + + /* try { // try from 003df248 to 004df24b has its CatchHandler @ 003df480 */ + *(undefined1 *)(param_1 + 0x88) = 1; + plVar6 = (long *)FUN_003df1c8(param_2); + /* try { // try from 003df270 to 004df273 has its CatchHandler @ 003df418 */ + (**(code **)(*plVar6 + 0x20))(&local_30); + uVar7 = *(ulong *)(local_30 + -0x18); + *(ulong *)(param_1 + 0x18) = uVar7; + if ((undefined *)(local_30 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_30 + -8); + *(int *)(local_30 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_30 + -8); + do { + iVar5 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 < 1) { + /* try { // try from 003df660 to 004df663 has its CatchHandler @ 003df490 */ + operator_delete((undefined *)(local_30 + -0x18)); + /* catch() { ... } // from try @ 003df4dc with catch @ 003df664 + catch() { ... } // from try @ 003df574 with catch @ 003df664 + catch() { ... } // from try @ 003df614 with catch @ 003df664 */ + uVar7 = *(ulong *)(param_1 + 0x18); + } + else { + uVar7 = *(ulong *)(param_1 + 0x18); + } + } + pcVar8 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x20))(&local_28,plVar6); + FUN_00411998(&local_28,pcVar8,*(undefined8 *)(param_1 + 0x18),0); + if ((undefined *)(local_28 + -0x18) != PTR_DAT_00501f30) { + /* try { // try from 003df574 to 004df577 has its CatchHandler @ 003df664 */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_28 + -8); + *(int *)(local_28 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_28 + -8); + do { + iVar5 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 < 1) { + operator_delete((undefined *)(local_28 + -0x18)); + } + } + bVar3 = false; + /* try { // try from 003df2e8 to 004df2eb has its CatchHandler @ 003df480 */ + *(char **)(param_1 + 0x10) = pcVar8; + if (*(long *)(param_1 + 0x18) != 0) { + bVar3 = '\0' < *pcVar8; + } + lVar10 = *plVar6; + *(bool *)(param_1 + 0x20) = bVar3; + (**(code **)(lVar10 + 0x28))(&local_20,plVar6); + uVar7 = *(ulong *)(local_20 + -0x18); + *(ulong *)(param_1 + 0x30) = uVar7; + if ((undefined *)(local_20 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_20 + -8); + *(int *)(local_20 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_20 + -8); + do { + iVar5 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 < 1) { + operator_delete((undefined *)(local_20 + -0x18)); + uVar7 = *(ulong *)(param_1 + 0x30); + } + else { + uVar7 = *(ulong *)(param_1 + 0x30); + } + } + pvVar9 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x28))(&local_18,plVar6); + /* try { // try from 003df35c to 004df35f has its CatchHandler @ 003df488 */ + FUN_00411998(&local_18,pvVar9,*(undefined8 *)(param_1 + 0x30),0); + if ((undefined *)(local_18 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_18 + -8); + *(int *)(local_18 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_18 + -8); + do { + /* try { // try from 003df5e8 to 004df60b has its CatchHandler @ 003df490 */ + iVar5 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 < 1) { + operator_delete((undefined *)(local_18 + -0x18)); + } + } + lVar10 = *plVar6; + *(void **)(param_1 + 0x28) = pvVar9; + (**(code **)(lVar10 + 0x30))(&local_10,plVar6); + uVar7 = *(ulong *)(local_10 + -0x18); + *(ulong *)(param_1 + 0x40) = uVar7; + if ((undefined *)(local_10 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_10 + -8); + do { + iVar5 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003df4fc to 004df4ff has its CatchHandler @ 003df61c */ + } while (cVar2 != '\0'); + } + if (iVar5 < 1) { + /* catch() { ... } // from try @ 003df7e8 with catch @ 003df66c + catch() { ... } // from try @ 003df844 with catch @ 003df66c */ + operator_delete((undefined *)(local_10 + -0x18)); + uVar7 = *(ulong *)(param_1 + 0x40); + } + else { + uVar7 = *(ulong *)(param_1 + 0x40); + } + } + pvVar9 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x30))(&local_8,plVar6); + /* try { // try from 003df3d0 to 004df3fb has its CatchHandler @ 003df1a0 */ + FUN_00411998(&local_8,pvVar9,*(undefined8 *)(param_1 + 0x40),0); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_8 + -8); + do { + iVar5 = *piVar11; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 < 1) { + operator_delete((undefined *)(local_8 + -0x18)); + } + } + lVar10 = *plVar6; + *(void **)(param_1 + 0x38) = pvVar9; + /* try { // try from 003df404 to 004df407 has its CatchHandler @ 003df488 */ + uVar4 = (**(code **)(lVar10 + 0x10))(plVar6); + *(undefined1 *)(param_1 + 0x48) = uVar4; + /* try { // try from 003df410 to 004df413 has its CatchHandler @ 003df480 */ + /* catch() { ... } // from try @ 003df270 with catch @ 003df418 */ + uVar4 = (**(code **)(*plVar6 + 0x18))(plVar6); + *(undefined1 *)(param_1 + 0x49) = uVar4; + plVar6 = (long *)FUN_003de994(param_2); + puVar12 = *(undefined8 **)PTR_PTR_00501d10; + if ((char)plVar6[7] == '\x01') { + uVar1 = puVar12[1]; + *(undefined8 *)(param_1 + 0x4a) = *puVar12; + *(undefined8 *)(param_1 + 0x52) = uVar1; + uVar1 = puVar12[3]; + *(undefined8 *)(param_1 + 0x5a) = puVar12[2]; + *(undefined8 *)(param_1 + 0x62) = uVar1; + *(undefined4 *)(param_1 + 0x6a) = *(undefined4 *)(puVar12 + 4); + } + else { + if ((char)plVar6[7] == '\0') { + FUN_003d14e0(); + /* try { // try from 003df4dc to 004df4df has its CatchHandler @ 003df664 */ + } + (**(code **)(*plVar6 + 0x38)) + (plVar6,puVar12,(long)puVar12 + 0x24,(undefined8 *)(param_1 + 0x4a)); + } + /* try { // try from 003df47c to 004df47f has its CatchHandler @ 003df1a0 */ + /* catch() { ... } // from try @ 003df248 with catch @ 003df480 + catch() { ... } // from try @ 003df2e8 with catch @ 003df480 + catch() { ... } // from try @ 003df410 with catch @ 003df480 */ + puVar12 = *(undefined8 **)PTR_PTR_00501aa0; + /* catch() { ... } // from try @ 003df210 with catch @ 003df488 + catch() { ... } // from try @ 003df35c with catch @ 003df488 + catch() { ... } // from try @ 003df404 with catch @ 003df488 */ + if ((char)plVar6[7] == '\x01') { + uVar1 = puVar12[1]; + *(undefined8 *)(param_1 + 0x6e) = *puVar12; + *(undefined8 *)(param_1 + 0x76) = uVar1; + /* try { // try from 003df614 to 004df617 has its CatchHandler @ 003df664 */ + *(undefined8 *)(param_1 + 0x7e) = puVar12[2]; + /* catch() { ... } // from try @ 003df4fc with catch @ 003df61c */ + *(undefined2 *)(param_1 + 0x86) = *(undefined2 *)(puVar12 + 3); + } + else { + /* catch() { ... } // from try @ 003df4c0 with catch @ 003df490 + catch() { ... } // from try @ 003df5e8 with catch @ 003df490 + catch() { ... } // from try @ 003df660 with catch @ 003df490 */ + if ((char)plVar6[7] == '\0') { + FUN_003d14e0(plVar6); + } + (**(code **)(*plVar6 + 0x38)) + (plVar6,puVar12,(long)puVar12 + 0x1a,(undefined8 *)(param_1 + 0x6e)); + } + /* try { // try from 003df4c0 to 004df4c3 has its CatchHandler @ 003df490 */ + return; +} + + +================================================================== + +### FUNC 003df7c4 (104 bytes) name=FUN_003df7c4 + +void FUN_003df7c4(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00546210); + /* try { // try from 003df7e8 to 004df7f3 has its CatchHandler @ 003df66c */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + /* try { // try from 003df7fc to 004df7ff has its CatchHandler @ 003df820 */ + /* try { // try from 003df808 to 004df80b has its CatchHandler @ 003df848 */ + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd0c8,0); + if (lVar2 != 0) { + /* catch() { ... } // from try @ 003df768 with catch @ 003df820 + catch() { ... } // from try @ 003df7fc with catch @ 003df820 */ + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003df82c (104 bytes) name=FUN_003df82c + +void FUN_003df82c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + /* try { // try from 003df844 to 004df847 has its CatchHandler @ 003df66c */ + uVar1 = FUN_003edb10(&DAT_00546218); + /* catch() { ... } // from try @ 003df6f0 with catch @ 003df848 + catch() { ... } // from try @ 003df808 with catch @ 003df848 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + /* catch() { ... } // from try @ 003df8c8 with catch @ 003df870 + catch() { ... } // from try @ 003e0a78 with catch @ 003df870 + catch() { ... } // from try @ 003e0c54 with catch @ 003df870 + catch() { ... } // from try @ 003e1040 with catch @ 003df870 */ + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd0b0,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003df894 (104 bytes) name=FUN_003df894 + +void FUN_003df894(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00546238); + /* try { // try from 003df8c8 to 004df8cb has its CatchHandler @ 003df870 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd110,0); + /* try { // try from 003df8e4 to 004df8e7 has its CatchHandler @ 003e114c */ + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003df8fc (1016 bytes) name=FUN_003df8fc + +void FUN_003df8fc(long param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + bool bVar3; + undefined4 uVar4; + int iVar5; + long *plVar6; + ulong uVar7; + char *pcVar8; + void *pvVar9; + long lVar10; + int *piVar11; + undefined8 *puVar12; + long local_40; + long local_38; + long local_30; + long local_28; + long local_20; + long local_18; + long local_10; + long local_8; + + /* try { // try from 003df904 to 004df907 has its CatchHandler @ 003e115c */ + /* try { // try from 003df924 to 004df927 has its CatchHandler @ 003e1154 */ + *(undefined1 *)(param_1 + 0x6f) = 1; + plVar6 = (long *)FUN_003df894(param_2); + uVar2 = (**(code **)(*plVar6 + 0x10))(); + *(undefined1 *)(param_1 + 0x21) = uVar2; + uVar2 = (**(code **)(*plVar6 + 0x18))(plVar6); + *(undefined1 *)(param_1 + 0x22) = uVar2; + uVar4 = (**(code **)(*plVar6 + 0x40))(plVar6); + lVar10 = *plVar6; + *(undefined4 *)(param_1 + 0x58) = uVar4; + (**(code **)(lVar10 + 0x20))(&local_40,plVar6); + uVar7 = *(ulong *)(local_40 + -0x18); + *(ulong *)(param_1 + 0x18) = uVar7; + if ((undefined *)(local_40 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_40 + -8); + *(int *)(local_40 + -8) = iVar5 + -1; + } + else { + piVar11 = (int *)(local_40 + -8); + do { + iVar5 = *piVar11; + cVar1 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar3) { + *piVar11 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar5 < 1) { + operator_delete((undefined *)(local_40 + -0x18)); + uVar7 = *(ulong *)(param_1 + 0x18); + } + else { + uVar7 = *(ulong *)(param_1 + 0x18); + } + } + pcVar8 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x20))(&local_38,plVar6); + FUN_00411998(&local_38,pcVar8,*(undefined8 *)(param_1 + 0x18),0); + if ((undefined *)(local_38 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_38 + -0x18),&local_8); + } + bVar3 = false; + *(char **)(param_1 + 0x10) = pcVar8; + if (*(long *)(param_1 + 0x18) != 0) { + bVar3 = '\0' < *pcVar8; + } + lVar10 = *plVar6; + *(bool *)(param_1 + 0x20) = bVar3; + (**(code **)(lVar10 + 0x28))(&local_30,plVar6); + uVar7 = *(ulong *)(local_30 + -0x18); + *(ulong *)(param_1 + 0x30) = uVar7; + if ((undefined *)(local_30 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_30 + -0x18),&local_8); + uVar7 = *(ulong *)(param_1 + 0x30); + } + pvVar9 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x28))(&local_28,plVar6); + FUN_00411998(&local_28,pvVar9,*(undefined8 *)(param_1 + 0x30),0); + if ((undefined *)(local_28 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_28 + -0x18),&local_8); + } + lVar10 = *plVar6; + *(void **)(param_1 + 0x28) = pvVar9; + (**(code **)(lVar10 + 0x30))(&local_20,plVar6); + uVar7 = *(ulong *)(local_20 + -0x18); + *(ulong *)(param_1 + 0x40) = uVar7; + if ((undefined *)(local_20 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_20 + -0x18),&local_8); + uVar7 = *(ulong *)(param_1 + 0x40); + } + pvVar9 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x30))(&local_18,plVar6); + FUN_00411998(&local_18,pvVar9,*(undefined8 *)(param_1 + 0x40),0); + /* try { // try from 003dfaec to 004dfaef has its CatchHandler @ 003e1144 */ + if ((undefined *)(local_18 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_18 + -0x18),&local_8); + } + lVar10 = *plVar6; + *(void **)(param_1 + 0x38) = pvVar9; + (**(code **)(lVar10 + 0x38))(&local_10,plVar6); + uVar7 = *(ulong *)(local_10 + -0x18); + *(ulong *)(param_1 + 0x50) = uVar7; + if ((undefined *)(local_10 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_10 + -0x18),&local_8); + uVar7 = *(ulong *)(param_1 + 0x50); + } + pvVar9 = operator_new__(uVar7); + (**(code **)(*plVar6 + 0x38))(&local_8,plVar6); + FUN_00411998(&local_8,pvVar9,*(undefined8 *)(param_1 + 0x50),0); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_8 + -0x18),&local_10); + } + lVar10 = *plVar6; + *(void **)(param_1 + 0x48) = pvVar9; + uVar4 = (**(code **)(lVar10 + 0x48))(plVar6); + /* try { // try from 003dfb90 to 004dfd3b has its CatchHandler @ 003e118c */ + *(undefined4 *)(param_1 + 0x5c) = uVar4; + uVar4 = (**(code **)(*plVar6 + 0x50))(plVar6); + *(undefined4 *)(param_1 + 0x60) = uVar4; + plVar6 = (long *)FUN_003de994(param_2); + puVar12 = *(undefined8 **)PTR_PTR_00501b68; + if ((char)plVar6[7] == '\x01') { + *(undefined8 *)(param_1 + 100) = *puVar12; + *(undefined2 *)(param_1 + 0x6c) = *(undefined2 *)(puVar12 + 1); + *(undefined1 *)(param_1 + 0x6e) = *(undefined1 *)((long)puVar12 + 10); + } + else { + if ((char)plVar6[7] == '\0') { + FUN_003d14e0(); + } + (**(code **)(*plVar6 + 0x38))(plVar6,puVar12,(long)puVar12 + 0xb,param_1 + 100); + } + return; +} + + +================================================================== + +### FUNC 003dfe2c (104 bytes) name=FUN_003dfe2c + +void FUN_003dfe2c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + /* try { // try from 003dfe3c to 004dfe3f has its CatchHandler @ 003e1044 */ + uVar1 = FUN_003edb10(&DAT_00546240); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd148,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003dfe94 (952 bytes) name=FUN_003dfe94 + +void FUN_003dfe94(long param_1,undefined8 param_2) + +{ + undefined1 uVar1; + bool bVar2; + undefined4 uVar3; + long *plVar4; + ulong uVar5; + char *pcVar6; + void *pvVar7; + long lVar8; + undefined8 *puVar9; + long local_40; + long local_38; + long local_30; + long local_28; + long local_20; + long local_18; + long local_10; + long local_8; + + /* try { // try from 003dfeb0 to 004dfeb3 has its CatchHandler @ 003e118c */ + *(undefined1 *)(param_1 + 0x6f) = 1; + plVar4 = (long *)FUN_003dfe2c(param_2); + uVar1 = (**(code **)(*plVar4 + 0x10))(); + *(undefined1 *)(param_1 + 0x21) = uVar1; + uVar1 = (**(code **)(*plVar4 + 0x18))(plVar4); + *(undefined1 *)(param_1 + 0x22) = uVar1; + uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4); + lVar8 = *plVar4; + *(undefined4 *)(param_1 + 0x58) = uVar3; + (**(code **)(lVar8 + 0x20))(&local_40,plVar4); + uVar5 = *(ulong *)(local_40 + -0x18); + *(ulong *)(param_1 + 0x18) = uVar5; + if ((undefined *)(local_40 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_40 + -0x18),&local_8); + uVar5 = *(ulong *)(param_1 + 0x18); + } + pcVar6 = operator_new__(uVar5); + /* try { // try from 003dff44 to 004dff7f has its CatchHandler @ 003e0f44 */ + (**(code **)(*plVar4 + 0x20))(&local_38,plVar4); + FUN_00411998(&local_38,pcVar6,*(undefined8 *)(param_1 + 0x18),0); + if ((undefined *)(local_38 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_38 + -0x18),&local_8); + } + bVar2 = false; + *(char **)(param_1 + 0x10) = pcVar6; + if (*(long *)(param_1 + 0x18) != 0) { + bVar2 = '\0' < *pcVar6; + } + lVar8 = *plVar4; + *(bool *)(param_1 + 0x20) = bVar2; + (**(code **)(lVar8 + 0x28))(&local_30,plVar4); + uVar5 = *(ulong *)(local_30 + -0x18); + *(ulong *)(param_1 + 0x30) = uVar5; + if ((undefined *)(local_30 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_30 + -0x18),&local_8); + uVar5 = *(ulong *)(param_1 + 0x30); + } + pvVar7 = operator_new__(uVar5); + (**(code **)(*plVar4 + 0x28))(&local_28,plVar4); + /* try { // try from 003dfff0 to 004e0213 has its CatchHandler @ 003e118c */ + FUN_00411998(&local_28,pvVar7,*(undefined8 *)(param_1 + 0x30),0); + if ((undefined *)(local_28 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_28 + -0x18),&local_8); + } + lVar8 = *plVar4; + *(void **)(param_1 + 0x28) = pvVar7; + (**(code **)(lVar8 + 0x30))(&local_20,plVar4); + uVar5 = *(ulong *)(local_20 + -0x18); + *(ulong *)(param_1 + 0x40) = uVar5; + if ((undefined *)(local_20 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_20 + -0x18),&local_8); + uVar5 = *(ulong *)(param_1 + 0x40); + } + pvVar7 = operator_new__(uVar5); + (**(code **)(*plVar4 + 0x30))(&local_18,plVar4); + FUN_00411998(&local_18,pvVar7,*(undefined8 *)(param_1 + 0x40),0); + if ((undefined *)(local_18 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_18 + -0x18),&local_8); + } + lVar8 = *plVar4; + *(void **)(param_1 + 0x38) = pvVar7; + (**(code **)(lVar8 + 0x38))(&local_10,plVar4); + uVar5 = *(ulong *)(local_10 + -0x18); + *(ulong *)(param_1 + 0x50) = uVar5; + if ((undefined *)(local_10 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_10 + -0x18),&local_8); + uVar5 = *(ulong *)(param_1 + 0x50); + } + pvVar7 = operator_new__(uVar5); + (**(code **)(*plVar4 + 0x38))(&local_8,plVar4); + FUN_00411998(&local_8,pvVar7,*(undefined8 *)(param_1 + 0x50),0); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_003dca9c((undefined *)(local_8 + -0x18),&local_10); + } + lVar8 = *plVar4; + *(void **)(param_1 + 0x48) = pvVar7; + uVar3 = (**(code **)(lVar8 + 0x48))(plVar4); + *(undefined4 *)(param_1 + 0x5c) = uVar3; + uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4); + *(undefined4 *)(param_1 + 0x60) = uVar3; + plVar4 = (long *)FUN_003de994(param_2); + puVar9 = *(undefined8 **)PTR_PTR_00501b68; + if ((char)plVar4[7] == '\x01') { + *(undefined8 *)(param_1 + 100) = *puVar9; + *(undefined2 *)(param_1 + 0x6c) = *(undefined2 *)(puVar9 + 1); + /* try { // try from 003e0240 to 004e0243 has its CatchHandler @ 003e1194 */ + *(undefined1 *)(param_1 + 0x6e) = *(undefined1 *)((long)puVar9 + 10); + /* try { // try from 003e0248 to 004e024b has its CatchHandler @ 003e118c */ + } + else { + if ((char)plVar4[7] == '\0') { + FUN_003d14e0(); + } + (**(code **)(*plVar4 + 0x38))(plVar4,puVar9,(long)puVar9 + 0xb,param_1 + 100); + } + return; +} + + +================================================================== + +### FUNC 003e0384 (104 bytes) name=FUN_003e0384 + +void FUN_003e0384(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00546228); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd250,0); + /* try { // try from 003e03d4 to 004e044f has its CatchHandler @ 003e10d4 */ + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003e03ec (104 bytes) name=FUN_003e03ec + +void FUN_003e03ec(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00546230); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd238,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003e0454 (104 bytes) name=FUN_003e0454 + +void FUN_003e0454(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00546208); + /* try { // try from 003e047c to 004e047f has its CatchHandler @ 003e10dc */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd0f8,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003e04bc (268 bytes) name=FUN_003e04bc + +undefined1 [16] +FUN_003e04bc(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5, + undefined8 param_6,char param_7,char param_8) + +{ + long *plVar1; + undefined8 uVar2; + size_t sVar3; + long lVar4; + undefined1 auVar5 [16]; + undefined1 local_88; + char local_87; + char local_86; + undefined1 local_85; + char acStack_80 [128]; + + /* try { // try from 003e04f0 to 004e051b has its CatchHandler @ 003e10d4 */ + plVar1 = (long *)FUN_003de994(param_4 + 0xd0); + uVar2 = FUN_003e0454(param_4 + 0xd0); + if ((char)plVar1[7] == '\0') { + FUN_003d14e0(plVar1); + local_88 = (**(code **)(*plVar1 + 0x30))(plVar1,0x25); + } + else { + local_88 = *(undefined1 *)((long)plVar1 + 0x5e); + } + if (param_8 == '\0') { + local_86 = '\0'; + local_87 = param_7; + } + else { + local_85 = 0; + local_86 = param_7; + local_87 = param_8; + } + FUN_003fd708(uVar2,acStack_80,0x80,&local_88,param_6); + sVar3 = strlen(acStack_80); + if (param_3 == '\0') { + /* try { // try from 003e0564 to 004e0567 has its CatchHandler @ 003e1128 */ + /* try { // try from 003e056c to 004e056f has its CatchHandler @ 003e10d4 */ + lVar4 = (**(code **)(*param_2 + 0x60))(param_2,acStack_80,(long)(int)sVar3); + param_3 = (int)sVar3 != lVar4; + } + auVar5[8] = param_3; + auVar5._0_8_ = param_2; + auVar5._9_7_ = 0; + return auVar5; +} + + +================================================================== + +### FUNC 003e05c8 (104 bytes) name=FUN_003e05c8 + +void FUN_003e05c8(long *param_1) + +{ + ulong uVar1; + long lVar2; + + /* try { // try from 003e05e0 to 004e05e3 has its CatchHandler @ 003e118c */ + uVar1 = FUN_003edb10(&DAT_00546200); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd268,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003e0630 (104 bytes) name=FUN_003e0630 + +void FUN_003e0630(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005461f8); + /* try { // try from 003e0654 to 004e0657 has its CatchHandler @ 003e1104 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd298,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003e0698 (104 bytes) name=FUN_003e0698 + +void FUN_003e0698(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005461f0); + /* try { // try from 003e06c8 to 004e06cb has its CatchHandler @ 003e1070 */ + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fd180,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003e0700 (108 bytes) name=FUN_003e0700 + +bool FUN_003e0700(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(PTR_DAT_00501da0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + /* try { // try from 003e073c to 004e073f has its CatchHandler @ 003e1144 */ + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,PTR_PTR_00501cf0,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e076c (108 bytes) name=FUN_003e076c + +bool FUN_003e076c(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(PTR_DAT_00501e98); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + /* try { // try from 003e07b0 to 004e07b3 has its CatchHandler @ 003e1068 */ + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,PTR_PTR_00501e10,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e07d8 (108 bytes) name=FUN_003e07d8 + +bool FUN_003e07d8(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005461e8); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + /* try { // try from 003e0824 to 004e0827 has its CatchHandler @ 003e113c */ + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd050,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e0844 (108 bytes) name=FUN_003e0844 + +bool FUN_003e0844(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00546220); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd080,0); + /* try { // try from 003e0898 to 004e089b has its CatchHandler @ 003e11a4 */ + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e08b0 (108 bytes) name=FUN_003e08b0 + +bool FUN_003e08b0(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00546210); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd0c8,0); + bVar1 = lVar3 != 0; + } + /* try { // try from 003e090c to 004e090f has its CatchHandler @ 003e1154 */ + return bVar1; +} + + +================================================================== + +### FUNC 003e091c (108 bytes) name=FUN_003e091c + +bool FUN_003e091c(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00546218); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd0b0,0); + bVar1 = lVar3 != 0; + } + /* try { // try from 003e0980 to 004e0983 has its CatchHandler @ 003e115c */ + return bVar1; +} + + +================================================================== + +### FUNC 003e0988 (108 bytes) name=FUN_003e0988 + +bool FUN_003e0988(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00546240); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd148,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e09f4 (108 bytes) name=FUN_003e09f4 + +bool FUN_003e09f4(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + /* try { // try from 003e09f4 to 004e09f7 has its CatchHandler @ 003e114c */ + uVar2 = FUN_003edb10(&DAT_00546228); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd250,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e0a60 (108 bytes) name=FUN_003e0a60 + +bool FUN_003e0a60(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + /* try { // try from 003e0a78 to 004e0a7b has its CatchHandler @ 003df870 */ + uVar2 = FUN_003edb10(&DAT_00546230); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd238,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e0acc (108 bytes) name=FUN_003e0acc + +bool FUN_003e0acc(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00546208); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd0f8,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e0b38 (108 bytes) name=FUN_003e0b38 + +bool FUN_003e0b38(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00546200); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd268,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 003e0ba4 (108 bytes) name=FUN_003e0ba4 + +bool FUN_003e0ba4(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + /* try { // try from 003e0bac to 004e0bdf has its CatchHandler @ 003e118c */ + uVar2 = FUN_003edb10(&DAT_005461f8); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + /* try { // try from 003e0be8 to 004e0beb has its CatchHandler @ 003e10d4 */ + /* try { // try from 003e0bf4 to 004e0bf7 has its CatchHandler @ 003e1104 */ + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd298,0); + bVar1 = lVar3 != 0; + } + /* try { // try from 003e0c00 to 004e0c03 has its CatchHandler @ 003e118c */ + /* try { // try from 003e0c0c to 004e0c0f has its CatchHandler @ 003e11a4 */ + return bVar1; +} + + +================================================================== + +### FUNC 003e0c10 (108 bytes) name=FUN_003e0c10 + +bool FUN_003e0c10(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + /* try { // try from 003e0c18 to 004e0c1b has its CatchHandler @ 003e113c */ + /* try { // try from 003e0c24 to 004e0c27 has its CatchHandler @ 003e1068 */ + uVar2 = FUN_003edb10(&DAT_005461f0); + /* try { // try from 003e0c30 to 004e0c33 has its CatchHandler @ 003e1144 */ + bVar1 = false; + /* try { // try from 003e0c3c to 004e0c3f has its CatchHandler @ 003e1070 */ + /* try { // try from 003e0c48 to 004e0c4b has its CatchHandler @ 003e118c */ + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + /* try { // try from 003e0c54 to 004e0c57 has its CatchHandler @ 003df870 */ + /* try { // try from 003e0c60 to 004e0c63 has its CatchHandler @ 003e114c */ + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fd180,0); + bVar1 = lVar3 != 0; + } + /* try { // try from 003e0c6c to 004e0c6f has its CatchHandler @ 003e115c */ + /* try { // try from 003e0c78 to 004e0c7b has its CatchHandler @ 003e1154 */ + return bVar1; +} + + +================================================================== + +### FUNC 003e0c7c (2080 bytes) name=FUN_003e0c7c + +void FUN_003e0c7c(undefined8 *param_1,undefined1 param_2,byte *param_3,long param_4, + undefined8 *param_5,undefined8 *param_6) + +{ + undefined1 *puVar1; + undefined1 *puVar2; + uint uVar3; + uint uVar4; + long lVar5; + ulong uVar6; + ulong uVar7; + long lVar8; + undefined1 *puVar9; + byte bVar10; + long lVar11; + ulong uVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 uVar15; + + bVar10 = *param_3; + /* try { // try from 003e0c84 to 004e0c87 has its CatchHandler @ 003e10d4 */ + lVar11 = 0; + uVar12 = 0; + uVar6 = (ulong)bVar10; + while (lVar8 = (long)param_6 - (long)param_5, (long)uVar6 < lVar8) { + while( true ) { + if ((char)bVar10 < '\x01') goto LAB_003e0cd4; + param_6 = (undefined8 *)((long)param_6 - uVar6); + if (param_4 - 1U <= uVar12) break; + uVar12 = uVar12 + 1; + lVar8 = (long)param_6 - (long)param_5; + bVar10 = param_3[uVar12]; + uVar6 = (ulong)bVar10; + /* try { // try from 003e0cd0 to 004e0cd3 has its CatchHandler @ 003e118c */ + if (lVar8 <= (long)uVar6) goto LAB_003e0cd4; + } + lVar11 = lVar11 + 1; + } +LAB_003e0cd4: + if (param_5 != param_6) { + puVar1 = (undefined1 *)((long)param_5 + 1); + puVar2 = (undefined1 *)((long)param_6 + (1 - (long)puVar1)); + if ((puVar2 < (undefined1 *)0x10) || (param_1 < param_5 + 2 && param_5 < param_1 + 2)) { + lVar5 = 0; + do { + *(undefined1 *)((long)param_1 + lVar5) = *(undefined1 *)((long)param_5 + lVar5); + lVar5 = lVar5 + 1; + } while (lVar5 != lVar8); + } + else { + /* try { // try from 003e0d14 to 004e0d17 has its CatchHandler @ 003e10d4 */ + uVar6 = ((ulong)((long)param_6 + (-0xf - (long)puVar1)) >> 4) + 1; + uVar7 = 0; + puVar9 = (undefined1 *)(uVar6 * 0x10); + puVar13 = param_1; + puVar14 = param_5; + do { + uVar15 = *puVar14; + uVar7 = uVar7 + 1; + puVar13[1] = puVar14[1]; + *puVar13 = uVar15; + puVar13 = puVar13 + 2; + puVar14 = puVar14 + 2; + } while (uVar7 < uVar6); + /* try { // try from 003e0d44 to 004e0d47 has its CatchHandler @ 003e1164 */ + /* try { // try from 003e0d74 to 004e0d77 has its CatchHandler @ 003e10d4 */ + /* try { // try from 003e0de0 to 004e0de3 has its CatchHandler @ 003e1068 */ + /* try { // try from 003e0df4 to 004e0df7 has its CatchHandler @ 003e113c */ + /* try { // try from 003e0e08 to 004e0e0b has its CatchHandler @ 003e11a4 */ + if ((((((puVar2 != puVar9) && + (*(undefined1 *)(param_1 + uVar6 * 2) = *(undefined1 *)(param_5 + uVar6 * 2), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 1)))) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 1)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 1)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 2)))) && + ((*(undefined1 *)((long)param_1 + (long)(puVar9 + 2)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 2)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 3)) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 3)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 3)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 4)))))) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 4)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 4)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 5)))) && + (((((*(undefined1 *)((long)param_1 + (long)(puVar9 + 5)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 5)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 6)) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 6)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 6)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 7)))) && + ((*(undefined1 *)((long)param_1 + (long)(puVar9 + 7)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 7)), + param_6 != param_5 + uVar6 * 2 + 1 && + (((*(undefined1 *)(param_1 + uVar6 * 2 + 1) = *(undefined1 *)(param_5 + uVar6 * 2 + 1), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 9)) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 9)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 9)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 10)))) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 10)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 10)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 0xb)))))))) && + ((*(undefined1 *)((long)param_1 + (long)(puVar9 + 0xb)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 0xb)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 0xc)) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 0xc)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 0xc)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 0xd)))))) && + (*(undefined1 *)((long)param_1 + (long)(puVar9 + 0xd)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 0xd)), + param_6 != (undefined8 *)((long)param_5 + (long)(puVar9 + 0xe)))))) { + *(undefined1 *)((long)param_1 + (long)(puVar9 + 0xe)) = + *(undefined1 *)((long)param_5 + (long)(puVar9 + 0xe)); + } + } + param_1 = (undefined8 *)((long)param_1 + (long)((long)param_6 + (1 - (long)puVar1))); + } + while (puVar13 = param_1, lVar11 = lVar11 + -1, lVar11 != -1) { + *(undefined1 *)puVar13 = param_2; + param_1 = (undefined8 *)((long)puVar13 + 1); + bVar10 = param_3[uVar12]; + uVar4 = (uint)bVar10; + if (uVar4 != 0) { + if ((param_1 < param_6 + 2 && param_6 < (undefined8 *)((long)puVar13 + 0x11U)) || + (uVar4 < 0x10)) { + lVar8 = 0; + do { + lVar5 = lVar8 + 1; + /* try { // try from 003e145c to 004e145f has its CatchHandler @ 003e1fb0 */ + *(undefined1 *)((long)puVar13 + lVar8 + 1) = *(undefined1 *)((long)param_6 + lVar8); + lVar8 = lVar5; + /* try { // try from 003e1464 to 004e14a3 has its CatchHandler @ 003e1f10 */ + } while (lVar5 != (ulong)(byte)(bVar10 - 1) + 1); + } + else { + uVar15 = *param_6; + uVar4 = (uVar4 - 0x10 >> 4 & 0xf) + 1; + uVar6 = (ulong)uVar4 & 0xf; + lVar8 = uVar6 * 0x10; + *(undefined8 *)((long)puVar13 + 9) = param_6[1]; + *param_1 = uVar15; + if (uVar4 != 1) { + uVar15 = param_6[2]; + *(undefined8 *)((long)puVar13 + 0x19) = param_6[3]; + *(undefined8 *)((long)puVar13 + 0x11U) = uVar15; + if (uVar4 != 2) { + uVar15 = param_6[4]; + *(undefined8 *)((long)puVar13 + 0x29) = param_6[5]; + *(undefined8 *)((long)puVar13 + 0x21) = uVar15; + if (uVar4 != 3) { + uVar15 = param_6[6]; + *(undefined8 *)((long)puVar13 + 0x39) = param_6[7]; + *(undefined8 *)((long)puVar13 + 0x31) = uVar15; + if (uVar4 != 4) { + uVar15 = param_6[8]; + *(undefined8 *)((long)puVar13 + 0x49) = param_6[9]; + *(undefined8 *)((long)puVar13 + 0x41) = uVar15; + if (uVar4 != 5) { + /* try { // try from 003e1040 to 004e1043 has its CatchHandler @ 003df870 */ + /* catch() { ... } // from try @ 003dfe3c with catch @ 003e1044 */ + uVar15 = param_6[10]; + *(undefined8 *)((long)puVar13 + 0x59) = param_6[0xb]; + *(undefined8 *)((long)puVar13 + 0x51) = uVar15; + if (uVar4 != 6) { + uVar15 = param_6[0xc]; + /* catch() { ... } // from try @ 003e07b0 with catch @ 003e1068 + catch() { ... } // from try @ 003e0c24 with catch @ 003e1068 + catch() { ... } // from try @ 003e0de0 with catch @ 003e1068 */ + *(undefined8 *)((long)puVar13 + 0x69) = param_6[0xd]; + *(undefined8 *)((long)puVar13 + 0x61) = uVar15; + if (uVar4 != 7) { + /* catch() { ... } // from try @ 003e06c8 with catch @ 003e1070 + catch() { ... } // from try @ 003e0c3c with catch @ 003e1070 */ + uVar15 = param_6[0xe]; + *(undefined8 *)((long)puVar13 + 0x79) = param_6[0xf]; + *(undefined8 *)((long)puVar13 + 0x71) = uVar15; + if (uVar4 != 8) { + /* catch() { ... } // from try @ 003e0360 with catch @ 003e1094 */ + uVar15 = param_6[0x10]; + *(undefined8 *)((long)puVar13 + 0x89) = param_6[0x11]; + *(undefined8 *)((long)puVar13 + 0x81) = uVar15; + if (uVar4 != 9) { + uVar15 = param_6[0x12]; + *(undefined8 *)((long)puVar13 + 0x99) = param_6[0x13]; + *(undefined8 *)((long)puVar13 + 0x91) = uVar15; + if (uVar4 != 10) { + uVar15 = param_6[0x14]; + *(undefined8 *)((long)puVar13 + 0xa9) = param_6[0x15]; + *(undefined8 *)((long)puVar13 + 0xa1) = uVar15; + if (uVar4 != 0xb) { + /* catch() { ... } // from try @ 003e0330 with catch @ 003e10d4 + catch() { ... } // from try @ 003e03d4 with catch @ 003e10d4 + catch() { ... } // from try @ 003e04f0 with catch @ 003e10d4 + catch() { ... } // from try @ 003e056c with catch @ 003e10d4 + catch() { ... } // from try @ 003e0be8 with catch @ 003e10d4 + catch() { ... } // from try @ 003e0c84 with catch @ 003e10d4 + catch() { ... } // from try @ 003e0d14 with catch @ 003e10d4 + catch() { ... } // from try @ 003e0d74 with catch @ 003e10d4 */ + /* catch() { ... } // from try @ 003e047c with catch @ 003e10dc */ + uVar15 = param_6[0x16]; + *(undefined8 *)((long)puVar13 + 0xb9) = param_6[0x17]; + *(undefined8 *)((long)puVar13 + 0xb1) = uVar15; + if (uVar4 != 0xc) { + uVar15 = param_6[0x18]; + *(undefined8 *)((long)puVar13 + 0xc9) = param_6[0x19]; + *(undefined8 *)((long)puVar13 + 0xc1) = uVar15; + if (uVar4 != 0xd) { + /* catch() { ... } // from try @ 003e0654 with catch @ 003e1104 + catch() { ... } // from try @ 003e0bf4 with catch @ 003e1104 */ + uVar15 = param_6[0x1a]; + *(undefined8 *)((long)puVar13 + 0xd9) = param_6[0x1b]; + *(undefined8 *)((long)puVar13 + 0xd1) = uVar15; + if (uVar4 == 0xf) { + uVar15 = param_6[0x1c]; + *(undefined8 *)((long)puVar13 + 0xe9) = param_6[0x1d]; + *(undefined8 *)((long)puVar13 + 0xe1) = uVar15; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + /* catch() { ... } // from try @ 003e0564 with catch @ 003e1128 */ + uVar4 = (uint)bVar10 - (uint)lVar8; + /* catch() { ... } // from try @ 003e0824 with catch @ 003e113c + catch() { ... } // from try @ 003e0c18 with catch @ 003e113c + catch() { ... } // from try @ 003e0df4 with catch @ 003e113c */ + if ((uint)bVar10 != (uint)lVar8) { + *(undefined1 *)(param_1 + uVar6 * 2) = *(undefined1 *)(param_6 + uVar6 * 2); + if (((uVar4 & 0xff) != 1) && + (*(undefined1 *)((long)param_1 + lVar8 + 1) = + *(undefined1 *)((long)param_6 + lVar8 + 1), (uVar4 & 0xff) != 2)) { + uVar3 = uVar4 & 0xff; + *(undefined1 *)((long)param_1 + lVar8 + 2) = *(undefined1 *)((long)param_6 + lVar8 + 2); + /* try { // try from 003e0ecc to 004e0edb has its CatchHandler @ 003e118c */ + if ((uVar3 != 3) && + (((*(undefined1 *)((long)param_1 + lVar8 + 3) = + *(undefined1 *)((long)param_6 + lVar8 + 3), uVar3 != 4 && + (*(undefined1 *)((long)param_1 + lVar8 + 4) = + *(undefined1 *)((long)param_6 + lVar8 + 4), uVar3 != 5)) && + (*(undefined1 *)((long)param_1 + lVar8 + 5) = + *(undefined1 *)((long)param_6 + lVar8 + 5), uVar3 != 6)))) { + uVar4 = uVar4 & 0xff; + *(undefined1 *)((long)param_1 + lVar8 + 6) = + *(undefined1 *)((long)param_6 + lVar8 + 6); + /* catch() { ... } // from try @ 003dff44 with catch @ 003e0f44 */ + if ((((uVar4 != 7) && + (*(undefined1 *)((long)param_1 + lVar8 + 7) = + *(undefined1 *)((long)param_6 + lVar8 + 7), uVar4 != 8)) && + (*(undefined1 *)(param_1 + uVar6 * 2 + 1) = + *(undefined1 *)(param_6 + uVar6 * 2 + 1), uVar4 != 9)) && + (((*(undefined1 *)((long)param_1 + lVar8 + 9) = + *(undefined1 *)((long)param_6 + lVar8 + 9), uVar4 != 10 && + (*(undefined1 *)((long)param_1 + lVar8 + 10) = + *(undefined1 *)((long)param_6 + lVar8 + 10), uVar4 != 0xb)) && + ((*(undefined1 *)((long)param_1 + lVar8 + 0xb) = + *(undefined1 *)((long)param_6 + lVar8 + 0xb), uVar4 != 0xc && + ((*(undefined1 *)((long)param_1 + lVar8 + 0xc) = + *(undefined1 *)((long)param_6 + lVar8 + 0xc), uVar4 != 0xd && + (*(undefined1 *)((long)param_1 + lVar8 + 0xd) = + *(undefined1 *)((long)param_6 + lVar8 + 0xd), uVar4 != 0xe)))))))) { + *(undefined1 *)((long)param_1 + lVar8 + 0xe) = + *(undefined1 *)((long)param_6 + lVar8 + 0xe); + } + } + } + } + } + lVar8 = (ulong)(byte)(bVar10 - 1) + 1; + param_6 = (undefined8 *)((long)param_6 + lVar8); + param_1 = (undefined8 *)((long)param_1 + lVar8); + } + } + while (puVar14 = puVar13, uVar12 = uVar12 - 1, uVar12 != 0xffffffffffffffff) { + *(undefined1 *)puVar14 = param_2; + puVar13 = (undefined8 *)((long)puVar14 + 1); + bVar10 = param_3[uVar12]; + uVar4 = (uint)bVar10; + if (uVar4 != 0) { + /* try { // try from 003e1260 to 004e1263 has its CatchHandler @ 003e1fa8 */ + if ((puVar13 < param_6 + 2 && param_6 < (undefined8 *)((long)puVar14 + 0x11U)) || + (uVar4 < 0x10)) { + lVar11 = 0; + do { + lVar8 = lVar11 + 1; + *(undefined1 *)((long)puVar14 + lVar11 + 1) = *(undefined1 *)((long)param_6 + lVar11); + lVar11 = lVar8; + } while (lVar8 != (ulong)(byte)(bVar10 - 1) + 1); + } + else { + uVar15 = *param_6; + uVar4 = (uVar4 - 0x10 >> 4 & 0xf) + 1; + uVar6 = (ulong)uVar4 & 0xf; + lVar11 = uVar6 * 0x10; + *(undefined8 *)((long)puVar14 + 9) = param_6[1]; + *puVar13 = uVar15; + if (uVar4 != 1) { + uVar15 = param_6[2]; + *(undefined8 *)((long)puVar14 + 0x19) = param_6[3]; + *(undefined8 *)((long)puVar14 + 0x11U) = uVar15; + if (uVar4 != 2) { + uVar15 = param_6[4]; + *(undefined8 *)((long)puVar14 + 0x29) = param_6[5]; + *(undefined8 *)((long)puVar14 + 0x21) = uVar15; + if (uVar4 != 3) { + uVar15 = param_6[6]; + *(undefined8 *)((long)puVar14 + 0x39) = param_6[7]; + *(undefined8 *)((long)puVar14 + 0x31) = uVar15; + if (uVar4 != 4) { + uVar15 = param_6[8]; + *(undefined8 *)((long)puVar14 + 0x49) = param_6[9]; + *(undefined8 *)((long)puVar14 + 0x41) = uVar15; + /* try { // try from 003e1300 to 004e1303 has its CatchHandler @ 003e1f48 */ + if (uVar4 != 5) { + uVar15 = param_6[10]; + *(undefined8 *)((long)puVar14 + 0x59) = param_6[0xb]; + *(undefined8 *)((long)puVar14 + 0x51) = uVar15; + if (uVar4 != 6) { + uVar15 = param_6[0xc]; + *(undefined8 *)((long)puVar14 + 0x69) = param_6[0xd]; + *(undefined8 *)((long)puVar14 + 0x61) = uVar15; + if (uVar4 != 7) { + uVar15 = param_6[0xe]; + *(undefined8 *)((long)puVar14 + 0x79) = param_6[0xf]; + *(undefined8 *)((long)puVar14 + 0x71) = uVar15; + if (uVar4 != 8) { + uVar15 = param_6[0x10]; + *(undefined8 *)((long)puVar14 + 0x89) = param_6[0x11]; + *(undefined8 *)((long)puVar14 + 0x81) = uVar15; + if (uVar4 != 9) { + uVar15 = param_6[0x12]; + *(undefined8 *)((long)puVar14 + 0x99) = param_6[0x13]; + *(undefined8 *)((long)puVar14 + 0x91) = uVar15; + if (uVar4 != 10) { + uVar15 = param_6[0x14]; + *(undefined8 *)((long)puVar14 + 0xa9) = param_6[0x15]; + *(undefined8 *)((long)puVar14 + 0xa1) = uVar15; + if (uVar4 != 0xb) { + uVar15 = param_6[0x16]; + /* try { // try from 003e13a4 to 004e141b has its CatchHandler @ 003e1f10 */ + *(undefined8 *)((long)puVar14 + 0xb9) = param_6[0x17]; + *(undefined8 *)((long)puVar14 + 0xb1) = uVar15; + if (uVar4 != 0xc) { + uVar15 = param_6[0x18]; + *(undefined8 *)((long)puVar14 + 0xc9) = param_6[0x19]; + *(undefined8 *)((long)puVar14 + 0xc1) = uVar15; + if (uVar4 != 0xd) { + uVar15 = param_6[0x1a]; + *(undefined8 *)((long)puVar14 + 0xd9) = param_6[0x1b]; + *(undefined8 *)((long)puVar14 + 0xd1) = uVar15; + if (uVar4 == 0xf) { + uVar15 = param_6[0x1c]; + *(undefined8 *)((long)puVar14 + 0xe9) = param_6[0x1d]; + *(undefined8 *)((long)puVar14 + 0xe1) = uVar15; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + uVar4 = (uint)bVar10 - (uint)lVar11; + if ((uint)bVar10 != (uint)lVar11) { + /* catch() { ... } // from try @ 003df8e4 with catch @ 003e114c + catch() { ... } // from try @ 003e09f4 with catch @ 003e114c + catch() { ... } // from try @ 003e0c60 with catch @ 003e114c */ + *(undefined1 *)(puVar13 + uVar6 * 2) = *(undefined1 *)(param_6 + uVar6 * 2); + /* catch() { ... } // from try @ 003df924 with catch @ 003e1154 + catch() { ... } // from try @ 003e090c with catch @ 003e1154 + catch() { ... } // from try @ 003e0c78 with catch @ 003e1154 */ + /* catch() { ... } // from try @ 003df904 with catch @ 003e115c + catch() { ... } // from try @ 003e0980 with catch @ 003e115c + catch() { ... } // from try @ 003e0c6c with catch @ 003e115c */ + /* catch() { ... } // from try @ 003e0d44 with catch @ 003e1164 */ + if (((uVar4 & 0xff) != 1) && + (*(undefined1 *)((long)puVar13 + lVar11 + 1) = + *(undefined1 *)((long)param_6 + lVar11 + 1), (uVar4 & 0xff) != 2)) { + uVar3 = uVar4 & 0xff; + *(undefined1 *)((long)puVar13 + lVar11 + 2) = + *(undefined1 *)((long)param_6 + lVar11 + 2); + /* catch() { ... } // from try @ 003dfb90 with catch @ 003e118c + catch() { ... } // from try @ 003dfeb0 with catch @ 003e118c + catch() { ... } // from try @ 003dfff0 with catch @ 003e118c + catch() { ... } // from try @ 003e0248 with catch @ 003e118c + catch() { ... } // from try @ 003e05e0 with catch @ 003e118c + catch() { ... } // from try @ 003e0bac with catch @ 003e118c + catch() { ... } // from try @ 003e0c00 with catch @ 003e118c + catch() { ... } // from try @ 003e0c48 with catch @ 003e118c + catch() { ... } // from try @ 003e0cd0 with catch @ 003e118c + catch() { ... } // from try @ 003e0ecc with catch @ 003e118c */ + /* catch() { ... } // from try @ 003e0240 with catch @ 003e1194 */ + /* catch() { ... } // from try @ 003e0898 with catch @ 003e11a4 + catch() { ... } // from try @ 003e0c0c with catch @ 003e11a4 + catch() { ... } // from try @ 003e0e08 with catch @ 003e11a4 */ + if ((uVar3 != 3) && + (((*(undefined1 *)((long)puVar13 + lVar11 + 3) = + *(undefined1 *)((long)param_6 + lVar11 + 3), uVar3 != 4 && + (*(undefined1 *)((long)puVar13 + lVar11 + 4) = + *(undefined1 *)((long)param_6 + lVar11 + 4), uVar3 != 5)) && + (*(undefined1 *)((long)puVar13 + lVar11 + 5) = + *(undefined1 *)((long)param_6 + lVar11 + 5), uVar3 != 6)))) { + uVar4 = uVar4 & 0xff; + *(undefined1 *)((long)puVar13 + lVar11 + 6) = + *(undefined1 *)((long)param_6 + lVar11 + 6); + /* catch() { ... } // from try @ 003e1204 with catch @ 003e11c0 + catch() { ... } // from try @ 003e1c38 with catch @ 003e11c0 + catch() { ... } // from try @ 003e1f0c with catch @ 003e11c0 */ + /* try { // try from 003e1204 to 004e1207 has its CatchHandler @ 003e11c0 */ + /* try { // try from 003e1220 to 004e1223 has its CatchHandler @ 003e1fa0 */ + if ((((uVar4 != 7) && + (*(undefined1 *)((long)puVar13 + lVar11 + 7) = + *(undefined1 *)((long)param_6 + lVar11 + 7), uVar4 != 8)) && + (*(undefined1 *)(puVar13 + uVar6 * 2 + 1) = + *(undefined1 *)(param_6 + uVar6 * 2 + 1), uVar4 != 9)) && + (((*(undefined1 *)((long)puVar13 + lVar11 + 9) = + *(undefined1 *)((long)param_6 + lVar11 + 9), uVar4 != 10 && + (*(undefined1 *)((long)puVar13 + lVar11 + 10) = + *(undefined1 *)((long)param_6 + lVar11 + 10), uVar4 != 0xb)) && + ((*(undefined1 *)((long)puVar13 + lVar11 + 0xb) = + *(undefined1 *)((long)param_6 + lVar11 + 0xb), uVar4 != 0xc && + ((*(undefined1 *)((long)puVar13 + lVar11 + 0xc) = + *(undefined1 *)((long)param_6 + lVar11 + 0xc), uVar4 != 0xd && + (*(undefined1 *)((long)puVar13 + lVar11 + 0xd) = + *(undefined1 *)((long)param_6 + lVar11 + 0xd), uVar4 != 0xe)))))))) { + *(undefined1 *)((long)puVar13 + lVar11 + 0xe) = + *(undefined1 *)((long)param_6 + lVar11 + 0xe); + } + } + } + } + } + lVar11 = (ulong)(byte)(bVar10 - 1) + 1; + /* try { // try from 003e1240 to 004e1243 has its CatchHandler @ 003e1f98 */ + param_6 = (undefined8 *)((long)param_6 + lVar11); + puVar13 = (undefined8 *)((long)puVar13 + lVar11); + } + } + return; +} + + +================================================================== + +### FUNC 003e149c (176 bytes) name=FUN_003e149c + +void FUN_003e149c(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4, + void *param_5,undefined8 param_6,long param_7,int *param_8) + +{ + void *__dest; + int iVar1; + + if (param_5 != (void *)0x0) { + iVar1 = (int)param_5 - (int)param_7; + __dest = (void *)FUN_003e0c7c(param_6,param_4,param_2,param_3,param_7,param_7 + iVar1); + memcpy(__dest,param_5,(long)(*param_8 - iVar1)); + *param_8 = (*param_8 - iVar1) + ((int)__dest - (int)param_6); + return; + } + iVar1 = FUN_003e0c7c(param_6,param_4,param_2,param_3,param_7,param_7 + *param_8); + *param_8 = iVar1 - (int)param_6; + /* try { // try from 003e1544 to 004e1547 has its CatchHandler @ 003e1f20 */ + return; +} + + +================================================================== + +### FUNC 003e154c (84 bytes) name=FUN_003e154c + +void FUN_003e154c(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4, + undefined8 param_5,undefined8 param_6,long param_7,int *param_8) + +{ + int iVar1; + + iVar1 = FUN_003e0c7c(param_6,param_4,param_2,param_3,param_7,param_7 + *param_8); + *param_8 = iVar1 - (int)param_6; + return; +} + + +================================================================== + +### FUNC 003e15a0 (1312 bytes) name=FUN_003e15a0 + +undefined1 [16] +FUN_003e15a0(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined1 param_5, + undefined8 *param_6) + +{ + uint uVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + byte *pbVar6; + undefined8 *puVar7; + ulong uVar8; + long lVar9; + byte *pbVar10; + ulong uVar11; + long lVar12; + ulong uVar13; + ulong uVar14; + undefined1 auVar15 [16]; + undefined1 *local_38; + undefined1 auStack_20 [8]; + undefined4 local_18 [2]; + undefined *local_10; + undefined *local_8; + + uVar13 = param_3 & 0xff; + lVar4 = FUN_003de994(param_4 + 0xd0); + /* try { // try from 003e15e8 to 004e1617 has its CatchHandler @ 003e1f10 */ + lVar5 = FUN_003edb10(&DAT_00546238); + lVar9 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar9 + lVar5 * 8); + if (lVar12 == 0) { + puVar7 = operator_new(0x70); + /* try { // try from 003e19f4 to 004e19f7 has its CatchHandler @ 003e1f48 */ + *(undefined4 *)(puVar7 + 1) = 0; + *puVar7 = &PTR_FUN_004f80d0; + puVar7[2] = 0; + puVar7[3] = 0; + *(undefined1 *)(puVar7 + 4) = 0; + *(undefined1 *)((long)puVar7 + 0x21) = 0; + *(undefined1 *)((long)puVar7 + 0x22) = 0; + puVar7[5] = 0; + puVar7[6] = 0; + puVar7[7] = 0; + puVar7[8] = 0; + puVar7[9] = 0; + puVar7[10] = 0; + *(undefined4 *)(puVar7 + 0xb) = 0; + *(undefined1 *)((long)puVar7 + 0x5c) = 0; + *(undefined1 *)((long)puVar7 + 0x5d) = 0; + *(undefined1 *)((long)puVar7 + 0x5e) = 0; + *(undefined1 *)((long)puVar7 + 0x5f) = 0; + *(undefined1 *)(puVar7 + 0xc) = 0; + *(undefined1 *)((long)puVar7 + 0x61) = 0; + *(undefined1 *)((long)puVar7 + 0x62) = 0; + *(undefined1 *)((long)puVar7 + 99) = 0; + *(undefined1 *)((long)puVar7 + 0x6f) = 0; + FUN_003df8fc(puVar7,param_4 + 0xd0); + /* try { // try from 003e1a68 to 004e1a6b has its CatchHandler @ 003e1f18 */ + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar7,lVar5); + lVar12 = *(long *)(lVar9 + lVar5 * 8); + } + pbVar10 = (byte *)*param_6; + if (*pbVar10 == *(byte *)(lVar12 + 100)) { + local_18[0] = *(undefined4 *)(lVar12 + 0x60); + lVar5 = *(long *)(pbVar10 + -0x18); + local_38 = *(undefined1 **)(lVar12 + 0x48); + uVar14 = *(ulong *)(lVar12 + 0x50); + if (lVar5 == 0) goto LAB_003e18ec; + pbVar10 = pbVar10 + 1; + } + else { + local_18[0] = *(undefined4 *)(lVar12 + 0x5c); + uVar14 = *(ulong *)(lVar12 + 0x40); + local_38 = *(undefined1 **)(lVar12 + 0x38); + lVar5 = *(long *)(pbVar10 + -0x18); + } + /* try { // try from 003e1638 to 004e163b has its CatchHandler @ 003e1ff4 */ + if ((pbVar10 < pbVar10 + lVar5) && + (pbVar6 = pbVar10, (*(byte *)(*(long *)(lVar4 + 0x30) + (ulong)*pbVar10) >> 2 & 1) != 0)) { + do { + pbVar6 = pbVar6 + 1; + if (pbVar6 == pbVar10 + lVar5) goto LAB_003e1670; + } while ((*(byte *)(*(long *)(lVar4 + 0x30) + (ulong)*pbVar6) >> 2 & 1) != 0); + lVar5 = (long)pbVar6 - (long)pbVar10; +LAB_003e1670: + if (lVar5 != 0) { + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,lVar5 << 1); + iVar3 = *(int *)(lVar12 + 0x58); + lVar4 = lVar5 - iVar3; + if (0 < lVar4) { + if (iVar3 < 0) { + lVar4 = lVar5; + } + if (*(long *)(lVar12 + 0x18) == 0) { + FUN_00412fdc(&local_10,pbVar10,lVar4); + iVar3 = *(int *)(lVar12 + 0x58); + } + else { + FUN_00412ec4(&local_10,0,*(undefined8 *)(local_10 + -0x18),lVar4 << 1,0); + if (-1 < *(int *)(local_10 + -8)) { + /* try { // try from 003e16dc to 004e16df has its CatchHandler @ 003e1ffc */ + FUN_00412cf8(&local_10); + } + lVar9 = FUN_003e0c7c(local_10,*(undefined1 *)(lVar12 + 0x22), + *(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),pbVar10 + ,pbVar10 + lVar4); + if (-1 < *(int *)(local_10 + -8)) { + FUN_00412cf8(&local_10); + } + uVar8 = lVar9 - (long)local_10; + if (*(ulong *)(local_10 + -0x18) < uVar8) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase"); + } + FUN_00412b08(&local_10,uVar8,*(ulong *)(local_10 + -0x18) - uVar8,0); + iVar3 = *(int *)(lVar12 + 0x58); + } + } + if (0 < iVar3) { + FUN_004116e0(&local_10,*(undefined1 *)(lVar12 + 0x21)); + if (lVar4 < 0) { + FUN_0041168c(&local_10,-lVar4,*(undefined1 *)(lVar12 + 0x65)); + FUN_00411624(&local_10,pbVar10,lVar5); + } + else { + FUN_00411624(&local_10,pbVar10 + lVar4,(long)*(int *)(lVar12 + 0x58)); + } + } + /* try { // try from 003e1780 to 004e17db has its CatchHandler @ 003e1ff4 */ + uVar1 = *(uint *)(param_4 + 0x18) & 0xb0; + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) == 0) { + lVar4 = 0; + } + else { + lVar4 = *(long *)(lVar12 + 0x30); + } + uVar8 = uVar14 + *(long *)(local_10 + -0x18) + lVar4; + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,uVar8 * 2); + uVar11 = *(ulong *)(param_4 + 0x10); + lVar4 = 0; + bVar2 = uVar8 < uVar11 && uVar1 == 0x10; + do { + /* try { // try from 003e181c to 004e181f has its CatchHandler @ 003e1fc4 */ + /* try { // try from 003e1824 to 004e1827 has its CatchHandler @ 003e1ff4 */ + switch(*(undefined1 *)((long)local_18 + lVar4)) { + case 0: + if (bVar2) { +LAB_003e1990: + FUN_0041168c(&local_8,uVar11 - uVar8,param_5); + } + break; + case 1: + if (bVar2) goto LAB_003e1990; + FUN_004116e0(&local_8,param_5); + break; + case 2: + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) != 0) { + FUN_00411624(&local_8,*(undefined8 *)(lVar12 + 0x28),*(undefined8 *)(lVar12 + 0x30)); + } + break; + case 3: + if (uVar14 != 0) { + FUN_004116e0(&local_8,*local_38); + } + break; + case 4: + /* try { // try from 003e1980 to 004e1983 has its CatchHandler @ 003e1f50 */ + FUN_00411464(&local_8,&local_10); + } + lVar4 = lVar4 + 1; + } while (lVar4 != 4); + if (1 < uVar14) { + FUN_00411624(&local_8,local_38 + 1,uVar14 - 1); + } + uVar14 = *(ulong *)(local_8 + -0x18); + if (uVar14 < uVar11) { + if (uVar1 == 0x20) { + FUN_0041168c(&local_8,uVar11 - uVar14,param_5); + uVar14 = uVar11; + } + else { + FUN_00412ec4(&local_8,0,0,uVar11 - uVar14,param_5); + uVar14 = uVar11; + } + } + /* try { // try from 003e1898 to 004e189b has its CatchHandler @ 003e1f10 */ + if (((param_3 & 0xff) == 0) && + (lVar4 = (**(code **)(*param_2 + 0x60))(param_2,local_8,(long)(int)uVar14), + (int)uVar14 != lVar4)) { + uVar13 = 1; + } + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_8 + -0x18,auStack_20); + } + if (local_10 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_10 + -0x18,&local_8); + } + } + } +LAB_003e18ec: + *(undefined8 *)(param_4 + 0x10) = 0; + auVar15._8_8_ = param_3 & 0xffffffffffffff00 | uVar13; + auVar15._0_8_ = param_2; + /* try { // try from 003e190c to 004e190f has its CatchHandler @ 003e1f74 */ + return auVar15; +} + + +================================================================== + +### FUNC 003e1b44 (1312 bytes) name=FUN_003e1b44 + +undefined1 [16] +FUN_003e1b44(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined1 param_5, + undefined8 *param_6) + +{ + uint uVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + byte *pbVar6; + undefined8 *puVar7; + ulong uVar8; + long lVar9; + byte *pbVar10; + ulong uVar11; + long lVar12; + ulong uVar13; + ulong uVar14; + undefined1 auVar15 [16]; + undefined1 *local_38; + undefined1 auStack_20 [8]; + undefined4 local_18 [2]; + undefined *local_10; + undefined *local_8; + + /* try { // try from 003e1b50 to 004e1b53 has its CatchHandler @ 003e1f98 */ + uVar13 = param_3 & 0xff; + lVar4 = FUN_003de994(param_4 + 0xd0); + lVar5 = FUN_003edb10(&DAT_00546240); + lVar9 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar9 + lVar5 * 8); + if (lVar12 == 0) { + puVar7 = operator_new(0x70); + /* catch() { ... } // from try @ 003e1240 with catch @ 003e1f98 + catch() { ... } // from try @ 003e1b50 with catch @ 003e1f98 + catch() { ... } // from try @ 003e1d08 with catch @ 003e1f98 */ + *(undefined4 *)(puVar7 + 1) = 0; + /* catch() { ... } // from try @ 003e1220 with catch @ 003e1fa0 + catch() { ... } // from try @ 003e1bc4 with catch @ 003e1fa0 + catch() { ... } // from try @ 003e1cfc with catch @ 003e1fa0 */ + *puVar7 = &PTR_FUN_004f80b0; + /* catch() { ... } // from try @ 003e1260 with catch @ 003e1fa8 + catch() { ... } // from try @ 003e1adc with catch @ 003e1fa8 + catch() { ... } // from try @ 003e1d14 with catch @ 003e1fa8 */ + puVar7[2] = 0; + puVar7[3] = 0; + /* catch() { ... } // from try @ 003e145c with catch @ 003e1fb0 */ + *(undefined1 *)(puVar7 + 4) = 0; + *(undefined1 *)((long)puVar7 + 0x21) = 0; + *(undefined1 *)((long)puVar7 + 0x22) = 0; + puVar7[5] = 0; + puVar7[6] = 0; + /* catch() { ... } // from try @ 003e181c with catch @ 003e1fc4 */ + puVar7[7] = 0; + puVar7[8] = 0; + puVar7[9] = 0; + puVar7[10] = 0; + *(undefined4 *)(puVar7 + 0xb) = 0; + *(undefined1 *)((long)puVar7 + 0x5c) = 0; + *(undefined1 *)((long)puVar7 + 0x5d) = 0; + *(undefined1 *)((long)puVar7 + 0x5e) = 0; + *(undefined1 *)((long)puVar7 + 0x5f) = 0; + *(undefined1 *)(puVar7 + 0xc) = 0; + *(undefined1 *)((long)puVar7 + 0x61) = 0; + *(undefined1 *)((long)puVar7 + 0x62) = 0; + /* catch() { ... } // from try @ 003e1638 with catch @ 003e1ff4 + catch() { ... } // from try @ 003e1780 with catch @ 003e1ff4 + catch() { ... } // from try @ 003e1824 with catch @ 003e1ff4 + catch() { ... } // from try @ 003e1e34 with catch @ 003e1ff4 */ + *(undefined1 *)((long)puVar7 + 99) = 0; + *(undefined1 *)((long)puVar7 + 0x6f) = 0; + /* catch() { ... } // from try @ 003e16dc with catch @ 003e1ffc + catch() { ... } // from try @ 003e1d80 with catch @ 003e1ffc */ + FUN_003dfe94(puVar7,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar7,lVar5); + lVar12 = *(long *)(lVar9 + lVar5 * 8); + } + pbVar10 = (byte *)*param_6; + if (*pbVar10 == *(byte *)(lVar12 + 100)) { + local_18[0] = *(undefined4 *)(lVar12 + 0x60); + lVar5 = *(long *)(pbVar10 + -0x18); + local_38 = *(undefined1 **)(lVar12 + 0x48); + uVar14 = *(ulong *)(lVar12 + 0x50); + if (lVar5 == 0) goto LAB_003e1e90; + pbVar10 = pbVar10 + 1; + } + else { + local_18[0] = *(undefined4 *)(lVar12 + 0x5c); + /* try { // try from 003e1bc4 to 004e1bc7 has its CatchHandler @ 003e1fa0 */ + uVar14 = *(ulong *)(lVar12 + 0x40); + local_38 = *(undefined1 **)(lVar12 + 0x38); + lVar5 = *(long *)(pbVar10 + -0x18); + } + if ((pbVar10 < pbVar10 + lVar5) && + (pbVar6 = pbVar10, (*(byte *)(*(long *)(lVar4 + 0x30) + (ulong)*pbVar10) >> 2 & 1) != 0)) { + do { + pbVar6 = pbVar6 + 1; + if (pbVar6 == pbVar10 + lVar5) goto LAB_003e1c14; + } while ((*(byte *)(*(long *)(lVar4 + 0x30) + (ulong)*pbVar6) >> 2 & 1) != 0); + lVar5 = (long)pbVar6 - (long)pbVar10; +LAB_003e1c14: + if (lVar5 != 0) { + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,lVar5 << 1); + /* try { // try from 003e1c38 to 004e1cf3 has its CatchHandler @ 003e11c0 */ + iVar3 = *(int *)(lVar12 + 0x58); + lVar4 = lVar5 - iVar3; + if (0 < lVar4) { + if (iVar3 < 0) { + lVar4 = lVar5; + } + if (*(long *)(lVar12 + 0x18) == 0) { + /* catch() { ... } // from try @ 003e1300 with catch @ 003e1f48 + catch() { ... } // from try @ 003e19f4 with catch @ 003e1f48 + catch() { ... } // from try @ 003e1d2c with catch @ 003e1f48 */ + /* catch() { ... } // from try @ 003e1980 with catch @ 003e1f50 + catch() { ... } // from try @ 003e1d38 with catch @ 003e1f50 */ + FUN_00412fdc(&local_10,pbVar10,lVar4); + iVar3 = *(int *)(lVar12 + 0x58); + } + else { + FUN_00412ec4(&local_10,0,*(undefined8 *)(local_10 + -0x18),lVar4 << 1,0); + if (-1 < *(int *)(local_10 + -8)) { + FUN_00412cf8(&local_10); + } + lVar9 = FUN_003e0c7c(local_10,*(undefined1 *)(lVar12 + 0x22), + *(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),pbVar10 + ,pbVar10 + lVar4); + if (-1 < *(int *)(local_10 + -8)) { + FUN_00412cf8(&local_10); + } + uVar8 = lVar9 - (long)local_10; + if (*(ulong *)(local_10 + -0x18) < uVar8) { + /* try { // try from 003e20c4 to 004e20c7 has its CatchHandler @ 003e2bc8 */ + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase"); + } + FUN_00412b08(&local_10,uVar8,*(ulong *)(local_10 + -0x18) - uVar8,0); + iVar3 = *(int *)(lVar12 + 0x58); + } + } + if (0 < iVar3) { + /* try { // try from 003e1cfc to 004e1cff has its CatchHandler @ 003e1fa0 */ + FUN_004116e0(&local_10,*(undefined1 *)(lVar12 + 0x21)); + if (lVar4 < 0) { + FUN_0041168c(&local_10,-lVar4,*(undefined1 *)(lVar12 + 0x65)); + /* catch() { ... } // from try @ 003e190c with catch @ 003e1f74 + catch() { ... } // from try @ 003e1d44 with catch @ 003e1f74 */ + FUN_00411624(&local_10,pbVar10,lVar5); + } + else { + /* try { // try from 003e1d08 to 004e1d0b has its CatchHandler @ 003e1f98 */ + FUN_00411624(&local_10,pbVar10 + lVar4,(long)*(int *)(lVar12 + 0x58)); + } + } + /* try { // try from 003e1d14 to 004e1d17 has its CatchHandler @ 003e1fa8 */ + /* try { // try from 003e1d20 to 004e1d23 has its CatchHandler @ 003e1f18 */ + uVar1 = *(uint *)(param_4 + 0x18) & 0xb0; + /* try { // try from 003e1d2c to 004e1d2f has its CatchHandler @ 003e1f48 */ + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) == 0) { + lVar4 = 0; + } + else { + lVar4 = *(long *)(lVar12 + 0x30); + } + /* try { // try from 003e1d38 to 004e1d3b has its CatchHandler @ 003e1f50 */ + uVar8 = uVar14 + *(long *)(local_10 + -0x18) + lVar4; + /* try { // try from 003e1d44 to 004e1d47 has its CatchHandler @ 003e1f74 */ + /* try { // try from 003e1d50 to 004e1d5f has its CatchHandler @ 003e1f10 */ + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,uVar8 * 2); + /* try { // try from 003e1d68 to 004e1d6b has its CatchHandler @ 003e1f20 */ + /* try { // try from 003e1d74 to 004e1d77 has its CatchHandler @ 003e1f10 */ + uVar11 = *(ulong *)(param_4 + 0x10); + /* try { // try from 003e1d80 to 004e1d83 has its CatchHandler @ 003e1ffc */ + lVar4 = 0; + /* try { // try from 003e1d94 to 004e1d97 has its CatchHandler @ 003e1f18 */ + bVar2 = uVar8 < uVar11 && uVar1 == 0x10; + do { + switch(*(undefined1 *)((long)local_18 + lVar4)) { + case 0: + if (bVar2) { +LAB_003e1f34: + FUN_0041168c(&local_8,uVar11 - uVar8,param_5); + } + break; + case 1: + if (bVar2) goto LAB_003e1f34; + /* try { // try from 003e1f0c to 004e1f0f has its CatchHandler @ 003e11c0 */ + /* catch() { ... } // from try @ 003e13a4 with catch @ 003e1f10 + catch() { ... } // from try @ 003e1464 with catch @ 003e1f10 + catch() { ... } // from try @ 003e15e8 with catch @ 003e1f10 + catch() { ... } // from try @ 003e1898 with catch @ 003e1f10 + catch() { ... } // from try @ 003e1d50 with catch @ 003e1f10 + catch() { ... } // from try @ 003e1d74 with catch @ 003e1f10 + catch() { ... } // from try @ 003e1dd8 with catch @ 003e1f10 + catch() { ... } // from try @ 003e1e24 with catch @ 003e1f10 */ + FUN_004116e0(&local_8,param_5); + /* catch() { ... } // from try @ 003e1a68 with catch @ 003e1f18 + catch() { ... } // from try @ 003e1d20 with catch @ 003e1f18 + catch() { ... } // from try @ 003e1d94 with catch @ 003e1f18 */ + break; + case 2: + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) != 0) { + FUN_00411624(&local_8,*(undefined8 *)(lVar12 + 0x28),*(undefined8 *)(lVar12 + 0x30)); + } + break; + case 3: + if (uVar14 != 0) { + FUN_004116e0(&local_8,*local_38); + } + break; + case 4: + /* catch() { ... } // from try @ 003e1544 with catch @ 003e1f20 + catch() { ... } // from try @ 003e1d68 with catch @ 003e1f20 */ + FUN_00411464(&local_8,&local_10); + } + lVar4 = lVar4 + 1; + /* try { // try from 003e1dd8 to 004e1ddb has its CatchHandler @ 003e1f10 */ + } while (lVar4 != 4); + if (1 < uVar14) { + FUN_00411624(&local_8,local_38 + 1,uVar14 - 1); + } + uVar14 = *(ulong *)(local_8 + -0x18); + if (uVar14 < uVar11) { + if (uVar1 == 0x20) { + FUN_0041168c(&local_8,uVar11 - uVar14,param_5); + uVar14 = uVar11; + /* catch() { ... } // from try @ 003e2068 with catch @ 003e2024 + catch() { ... } // from try @ 003e2934 with catch @ 003e2024 + catch() { ... } // from try @ 003e29d4 with catch @ 003e2024 + catch() { ... } // from try @ 003e2bbc with catch @ 003e2024 */ + } + else { + /* try { // try from 003e1e1c to 004e1e1f has its CatchHandler @ 003e1e60 */ + /* try { // try from 003e1e24 to 004e1e27 has its CatchHandler @ 003e1f10 */ + FUN_00412ec4(&local_8,0,0,uVar11 - uVar14,param_5); + uVar14 = uVar11; + } + } + /* try { // try from 003e1e34 to 004e1e37 has its CatchHandler @ 003e1ff4 */ + if (((param_3 & 0xff) == 0) && + (lVar4 = (**(code **)(*param_2 + 0x60))(param_2,local_8,(long)(int)uVar14), + (int)uVar14 != lVar4)) { + uVar13 = 1; + } + /* catch() { ... } // from try @ 003e1e1c with catch @ 003e1e60 */ + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_8 + -0x18,auStack_20); + } + if (local_10 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_10 + -0x18,&local_8); + } + } + } +LAB_003e1e90: + *(undefined8 *)(param_4 + 0x10) = 0; + auVar15._8_8_ = param_3 & 0xffffffffffffff00 | uVar13; + auVar15._0_8_ = param_2; + return auVar15; +} + + +================================================================== + +### FUNC 003e20e8 (520 bytes) name=FUN_003e20e8 + +undefined1 [16] +FUN_003e20e8(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + char param_5,long param_6,undefined1 param_7) + +{ + char cVar1; + bool bVar2; + void *pvVar3; + int iVar4; + long *plVar5; + undefined *puVar6; + int *piVar7; + size_t __n; + undefined1 auVar8 [16]; + undefined1 auStack_1400 [4960]; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + void *local_8; + + FUN_003ece1c(auStack_10,param_6 + 0xd0); + plVar5 = (long *)FUN_003de994(auStack_10); + local_8 = (void *)FUN_003ed450(); + /* try { // try from 003e2164 to 004e2167 has its CatchHandler @ 003e2c9c */ + iVar4 = FUN_003dd040(param_1,&local_8,auStack_1400,0,"%.*Lf",0); + __n = (size_t)iVar4; + FUN_00410b48(&local_8,__n,0,auStack_18); + if (-1 < *(int *)((long)local_8 + -8)) { + FUN_00412cf8(&local_8); + } + pvVar3 = local_8; + if ((char)plVar5[7] == '\x01') { + /* try { // try from 003e22d0 to 004e230f has its CatchHandler @ 003e2be4 */ + memcpy(local_8,auStack_1400,__n); + } + else { + if ((char)plVar5[7] == '\0') { + FUN_003d14e0(plVar5); + /* try { // try from 003e22c8 to 004e22cb has its CatchHandler @ 003e2bd0 */ + } + (**(code **)(*plVar5 + 0x38))(plVar5,auStack_1400,auStack_1400 + __n,pvVar3); + } + if (param_5 == '\0') { + auVar8 = FUN_003e1b44(param_2,param_3,param_4,param_6,param_7,&local_8); + puVar6 = (undefined *)((long)local_8 + -0x18); + if (puVar6 == PTR_DAT_00501f30) goto LAB_003e2224; + } + else { + auVar8 = FUN_003e15a0(param_2,param_3,param_4,param_6,param_7,&local_8); + /* try { // try from 003e2208 to 004e227f has its CatchHandler @ 003e2be4 */ + puVar6 = (undefined *)((long)local_8 + -0x18); + if (puVar6 == PTR_DAT_00501f30) goto LAB_003e2224; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)local_8 + -8); + *(int *)((long)local_8 + -8) = iVar4 + -1; + } + else { + piVar7 = (int *)((long)local_8 + -8); + do { + iVar4 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete(puVar6); + } +LAB_003e2224: + FUN_003ed708(auStack_10); + return auVar8; +} + + +================================================================== + +### FUNC 003e232c (68 bytes) name=FUN_003e232c + +void FUN_003e232c(void) + +{ + char in_w3; + + if (in_w3 == '\0') { + FUN_003e1b44(); + return; + } + FUN_003e15a0(); + return; +} + + +================================================================== + +### FUNC 003e2370 (504 bytes) name=FUN_003e2370 + +void FUN_003e2370(long param_1,byte param_2,char *param_3,char *param_4,long param_5,size_t param_6) + +{ + uint uVar1; + char cVar2; + char cVar3; + long *plVar4; + char *__s; + size_t __n; + long lVar5; + + uVar1 = *(uint *)(param_1 + 0x18) & 0xb0; + __n = param_5 - param_6; + if (uVar1 == 0x20) { + /* try { // try from 003e2520 to 004e2523 has its CatchHandler @ 003e2bf4 */ + memcpy(param_3,param_4,param_6); + memset(param_3 + param_6,(uint)param_2,__n); + return; + } + /* try { // try from 003e23b0 to 004e23b3 has its CatchHandler @ 003e2c74 */ + lVar5 = 0; + __s = param_3; + if (uVar1 != 0x10) goto LAB_003e23b8; + plVar4 = (long *)FUN_003de994(param_1 + 0xd0); + if ((char)plVar4[7] == '\0') { + cVar2 = FUN_003dcafc(plVar4,0x2d); + cVar3 = *param_4; + if (cVar3 != cVar2) { + if ((char)plVar4[7] != '\0') goto LAB_003e240c; + FUN_003d14e0(plVar4); + cVar2 = (**(code **)(*plVar4 + 0x30))(plVar4,0x2b); + cVar3 = *param_4; + if (cVar3 != cVar2) { + if ((char)plVar4[7] != '\0') goto LAB_003e2418; + /* try { // try from 003e24ac to 004e24d7 has its CatchHandler @ 003e2bf4 */ + FUN_003d14e0(plVar4); + cVar2 = (**(code **)(*plVar4 + 0x30))(plVar4,0x30); + cVar3 = *param_4; + if ((cVar3 == cVar2) && (1 < (long)param_6)) { + if ((char)plVar4[7] != '\0') goto LAB_003e242c; + cVar3 = FUN_003dcafc(plVar4,0x78); + cVar2 = param_4[1]; + if (cVar2 != cVar3) { + if ((char)plVar4[7] != '\0') goto LAB_003e2440; + cVar3 = FUN_003dcafc(plVar4,0x58); + cVar2 = param_4[1]; + /* try { // try from 003e2518 to 004e251b has its CatchHandler @ 003e2c58 */ + goto LAB_003e2444; + } + goto LAB_003e254c; + } + goto LAB_003e244c; + } + } + } + else { + cVar3 = *param_4; + if (cVar3 != *(char *)((long)plVar4 + 0x66)) { +LAB_003e240c: + if (*(char *)((long)plVar4 + 100) != cVar3) { +LAB_003e2418: + if ((*(char *)((long)plVar4 + 0x69) == cVar3) && (1 < (long)param_6)) { +LAB_003e242c: + cVar2 = param_4[1]; + if (*(char *)((long)plVar4 + 0xb1) != cVar2) { +LAB_003e2440: + cVar3 = *(char *)((long)plVar4 + 0x91); +LAB_003e2444: + if (cVar2 != cVar3) goto LAB_003e244c; +LAB_003e254c: + cVar3 = *param_4; + } + lVar5 = 2; + *param_3 = cVar3; + __s = param_3 + 2; + param_3[1] = param_4[1]; + } + else { +LAB_003e244c: + lVar5 = 0; + } + goto LAB_003e23b8; + } + } + } + /* try { // try from 003e2454 to 004e247f has its CatchHandler @ 003e2be4 */ + __s = param_3 + 1; + *param_3 = cVar3; + lVar5 = 1; +LAB_003e23b8: + memset(__s,(uint)param_2,__n); + memcpy(__s + __n,param_4 + lVar5,param_6 - lVar5); + return; +} + + +================================================================== + +### FUNC 003e2568 (64 bytes) name=FUN_003e2568 + +void FUN_003e2568(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,int *param_7) + +{ + FUN_003e2370(param_4,param_2,param_5,param_6,param_3,(long)*param_7); + /* try { // try from 003e2594 to 004e2597 has its CatchHandler @ 003e2be4 */ + *param_7 = (int)param_3; + return; +} + + +================================================================== + +### FUNC 003e25a8 (872 bytes) name=FUN_003e25a8 + +undefined1 [16] +FUN_003e25a8(undefined8 param_1,undefined8 param_2,long *param_3,char param_4,long param_5, + undefined1 param_6,undefined1 param_7) + +{ + bool bVar1; + int iVar2; + long lVar3; + long lVar4; + long *plVar5; + void *pvVar6; + undefined8 *puVar7; + int iVar8; + undefined1 *puVar9; + size_t sVar10; + size_t sVar11; + long lVar12; + undefined1 *puVar13; + long lVar14; + undefined1 auVar15 [16]; + int local_1c; + undefined8 local_18; + undefined1 auStack_10 [16]; + + lVar4 = FUN_003edb10(&DAT_00546220); + lVar14 = *(long *)(*(long *)(param_5 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar14 + lVar4 * 8); + if (lVar12 == 0) { + puVar7 = operator_new(0x90); + *(undefined4 *)(puVar7 + 1) = 0; + *puVar7 = &PTR_FUN_004f80f0; + puVar7[2] = 0; + puVar7[3] = 0; + /* try { // try from 003e28c0 to 004e28c3 has its CatchHandler @ 003e2bc0 */ + *(undefined1 *)(puVar7 + 4) = 0; + puVar7[5] = 0; + puVar7[6] = 0; + puVar7[7] = 0; + puVar7[8] = 0; + *(undefined1 *)(puVar7 + 9) = 0; + *(undefined1 *)((long)puVar7 + 0x49) = 0; + *(undefined1 *)(puVar7 + 0x11) = 0; + FUN_003df230(puVar7,param_5 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_5 + 0xd0),puVar7,lVar4); + lVar12 = *(long *)(lVar14 + lVar4 * 8); + } + /* try { // try from 003e2608 to 004e260b has its CatchHandler @ 003e2c18 */ + lVar4 = *(long *)(param_5 + 8); + iVar8 = (int)lVar4; + if (lVar4 < 0) { + iVar8 = 6; + lVar4 = 6; + } + FUN_003ee004(param_5,auStack_10,param_7); + iVar2 = iVar8 + 0x1e; + if ((*(uint *)(param_5 + 0x18) & 4) != 0) { + iVar2 = iVar8 + 0x138; + } + lVar14 = -((long)iVar2 + 0x1eU & 0xfffffffffffffff0); + local_18 = FUN_003ed450(); + /* try { // try from 003e267c to 004e267f has its CatchHandler @ 003e2ca4 */ + local_1c = FUN_003dd040(param_1,&local_18,&stack0xffffffffffffff60 + lVar14,0,auStack_10,lVar4); + plVar5 = (long *)FUN_003de994(param_5 + 0xd0); + iVar8 = local_1c; + sVar10 = (size_t)local_1c; + lVar4 = -(sVar10 + 0x1e & 0xfffffffffffffff0); + if ((char)plVar5[7] == '\x01') { + memcpy(&stack0xffffffffffffff60 + lVar4 + lVar14,&stack0xffffffffffffff60 + lVar14,sVar10); + } + else { + if ((char)plVar5[7] == '\0') { + FUN_003d14e0(); + } + (**(code **)(*plVar5 + 0x38)) + (plVar5,&stack0xffffffffffffff60 + lVar14,&stack0xffffffffffffff60 + sVar10 + lVar14, + &stack0xffffffffffffff60 + lVar4 + lVar14); + /* try { // try from 003e26f0 to 004e26f3 has its CatchHandler @ 003e2c9c */ + sVar10 = (size_t)local_1c; + iVar8 = local_1c; + } + pvVar6 = memchr(&stack0xffffffffffffff60 + lVar14,0x2e,sVar10); + if (pvVar6 == (void *)0x0) { + puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14; + /* try { // try from 003e27d8 to 004e27db has its CatchHandler @ 003e2bc8 */ + if ((*(char *)(lVar12 + 0x20) == '\0') || + ((2 < iVar8 && + (((puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14, + 0x39 < (byte)(&stack0xffffffffffffff61)[lVar14] || + (puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14, + 9 < (byte)((&stack0xffffffffffffff62)[lVar14] - 0x30))) || + (puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14, + (byte)(&stack0xffffffffffffff61)[lVar14] < 0x30)))))) goto LAB_003e2720; + puVar9 = (undefined1 *)0x0; + } + else { + puVar9 = (undefined1 *) + ((long)pvVar6 + + (long)(&stack0xffffffffffffff60 + (lVar4 - (long)&stack0xffffffffffffff60))); + *(undefined1 *) + ((long)pvVar6 + (long)(&stack0xffffffffffffff60 + (lVar4 - (long)&stack0xffffffffffffff60))) = + *(undefined1 *)(lVar12 + 0x48); + puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14; + if (*(char *)(lVar12 + 0x20) == '\0') goto LAB_003e2720; + } + lVar3 = -(sVar10 * 2 + 0x1e & 0xfffffffffffffff0); + bVar1 = ((&stack0xffffffffffffff60)[lVar14] - 0x2b & 0xfd) == 0; + if (bVar1) { + (&stack0xffffffffffffff60)[lVar3 + lVar4 + lVar14] = (&stack0xffffffffffffff60)[lVar4 + lVar14]; + local_1c = iVar8 + -1; + } + /* try { // try from 003e284c to 004e284f has its CatchHandler @ 003e2bec */ + FUN_003e149c(param_2,*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18), + *(undefined1 *)(lVar12 + 0x49),puVar9, + &stack0xffffffffffffff60 + (ulong)bVar1 + lVar3 + lVar4 + lVar14, + &stack0xffffffffffffff60 + (ulong)bVar1 + lVar4 + lVar14,&local_1c); + local_1c = (uint)bVar1 + local_1c; + sVar10 = (size_t)local_1c; + puVar13 = &stack0xffffffffffffff60 + lVar3 + lVar4 + lVar14; +LAB_003e2720: + lVar4 = *(long *)(param_5 + 0x10); + sVar11 = sVar10; + puVar9 = puVar13; + if ((long)sVar10 < lVar4) { + lVar12 = -(lVar4 + 0x1eU & 0xfffffffffffffff0); + puVar9 = puVar13 + lVar12; + sVar11 = (size_t)(int)lVar4; + FUN_003e2370(param_5,param_6,(long)puVar13 + lVar12,puVar13,lVar4,sVar10); + local_1c = (int)lVar4; + } + /* try { // try from 003e2764 to 004e2767 has its CatchHandler @ 003e2c6c */ + *(undefined8 *)(param_5 + 0x10) = 0; + if (param_4 == '\0') { + sVar10 = (**(code **)(*param_3 + 0x60))(param_3,puVar9,sVar11); + param_4 = sVar10 != sVar11; + } + auVar15[8] = param_4; + auVar15._0_8_ = param_3; + auVar15._9_7_ = 0; + return auVar15; +} + + +================================================================== + +### FUNC 003e2940 (24 bytes) name=FUN_003e2940 + +void FUN_003e2940(void) + +{ + FUN_003e25a8(); + return; +} + + +================================================================== + +### FUNC 003e2958 (852 bytes) name=FUN_003e2958 + +undefined1 [16] +FUN_003e2958(undefined8 param_1,undefined8 param_2,long *param_3,char param_4,long param_5, + undefined1 param_6,undefined1 param_7) + +{ + bool bVar1; + long lVar2; + int iVar3; + long lVar4; + long *plVar5; + void *pvVar6; + undefined8 *puVar7; + int iVar8; + undefined1 *puVar9; + long lVar10; + size_t sVar11; + size_t sVar12; + undefined1 *puVar13; + long lVar14; + undefined1 auVar15 [16]; + int local_1c; + undefined8 local_18; + undefined1 auStack_10 [16]; + + lVar4 = FUN_003edb10(&DAT_00546220); + lVar14 = *(long *)(*(long *)(param_5 + 0xd0) + 0x18); + lVar10 = *(long *)(lVar14 + lVar4 * 8); + if (lVar10 == 0) { + puVar7 = operator_new(0x90); + *(undefined4 *)(puVar7 + 1) = 0; + *puVar7 = &PTR_FUN_004f80f0; + puVar7[2] = 0; + /* catch() { ... } // from try @ 003e2518 with catch @ 003e2c58 */ + puVar7[3] = 0; + *(undefined1 *)(puVar7 + 4) = 0; + puVar7[5] = 0; + puVar7[6] = 0; + puVar7[7] = 0; + /* catch() { ... } // from try @ 003e2764 with catch @ 003e2c6c + catch() { ... } // from try @ 003e2a04 with catch @ 003e2c6c + catch() { ... } // from try @ 003e2a54 with catch @ 003e2c6c */ + puVar7[8] = 0; + *(undefined1 *)(puVar7 + 9) = 0; + /* catch() { ... } // from try @ 003e23b0 with catch @ 003e2c74 + catch() { ... } // from try @ 003e29bc with catch @ 003e2c74 */ + *(undefined1 *)((long)puVar7 + 0x49) = 0; + *(undefined1 *)(puVar7 + 0x11) = 0; + FUN_003df230(puVar7,param_5 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_5 + 0xd0),puVar7,lVar4); + lVar10 = *(long *)(lVar14 + lVar4 * 8); + } + lVar4 = *(long *)(param_5 + 8); + /* try { // try from 003e29bc to 004e29bf has its CatchHandler @ 003e2c74 */ + iVar8 = (int)lVar4; + /* try { // try from 003e29c8 to 004e29cb has its CatchHandler @ 003e2be4 */ + if (lVar4 < 0) { + iVar8 = 6; + lVar4 = 6; + } + /* try { // try from 003e29e0 to 004e29e3 has its CatchHandler @ 003e2bc0 */ + FUN_003ee004(param_5,auStack_10,param_7); + iVar3 = iVar8 + 0x42; + /* try { // try from 003e29ec to 004e29ef has its CatchHandler @ 003e2bec */ + if ((*(uint *)(param_5 + 0x18) >> 2 & 1) != 0) { + iVar3 = iVar8 + 0x1348; + } + /* try { // try from 003e29f8 to 004e29fb has its CatchHandler @ 003e2bc8 */ + /* try { // try from 003e2a04 to 004e2a07 has its CatchHandler @ 003e2c6c */ + lVar14 = -((long)iVar3 + 0x1eU & 0xfffffffffffffff0); + /* try { // try from 003e2a10 to 004e2a13 has its CatchHandler @ 003e2c9c */ + local_18 = FUN_003ed450(); + /* try { // try from 003e2a1c to 004e2a1f has its CatchHandler @ 003e2ca4 */ + /* try { // try from 003e2a28 to 004e2a2b has its CatchHandler @ 003e2c18 */ + /* try { // try from 003e2a34 to 004e2a43 has its CatchHandler @ 003e2be4 */ + local_1c = FUN_003dd040(param_1,&local_18,&stack0xffffffffffffff60 + lVar14,0,auStack_10,lVar4); + plVar5 = (long *)FUN_003de994(param_5 + 0xd0); + iVar8 = local_1c; + sVar11 = (size_t)local_1c; + /* try { // try from 003e2a54 to 004e2a57 has its CatchHandler @ 003e2c6c */ + lVar4 = -(sVar11 + 0x1e & 0xfffffffffffffff0); + if ((char)plVar5[7] == '\x01') { + /* catch() { ... } // from try @ 003e2164 with catch @ 003e2c9c + catch() { ... } // from try @ 003e26f0 with catch @ 003e2c9c + catch() { ... } // from try @ 003e2a10 with catch @ 003e2c9c */ + /* catch() { ... } // from try @ 003e267c with catch @ 003e2ca4 + catch() { ... } // from try @ 003e2a1c with catch @ 003e2ca4 */ + memcpy(&stack0xffffffffffffff60 + lVar4 + lVar14,&stack0xffffffffffffff60 + lVar14,sVar11); + } + else { + if ((char)plVar5[7] == '\0') { + FUN_003d14e0(); + } + (**(code **)(*plVar5 + 0x38)) + (plVar5,&stack0xffffffffffffff60 + lVar14,&stack0xffffffffffffff60 + sVar11 + lVar14, + &stack0xffffffffffffff60 + lVar4 + lVar14); + sVar11 = (size_t)local_1c; + iVar8 = local_1c; + } + /* try { // try from 003e2a98 to 004e2a9b has its CatchHandler @ 003e2be4 */ + pvVar6 = memchr(&stack0xffffffffffffff60 + lVar14,0x2e,sVar11); + if (pvVar6 == (void *)0x0) { + puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14; + if ((*(char *)(lVar10 + 0x20) == '\0') || + ((2 < iVar8 && + (((puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14, + 0x39 < (byte)(&stack0xffffffffffffff61)[lVar14] || + (puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14, + 9 < (byte)((&stack0xffffffffffffff62)[lVar14] - 0x30))) || + (puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14, + (byte)(&stack0xffffffffffffff61)[lVar14] < 0x30)))))) goto LAB_003e2ac0; + puVar9 = (undefined1 *)0x0; + } + else { + puVar9 = (undefined1 *) + ((long)pvVar6 + + (long)(&stack0xffffffffffffff60 + (lVar4 - (long)&stack0xffffffffffffff60))); + *(undefined1 *) + ((long)pvVar6 + (long)(&stack0xffffffffffffff60 + (lVar4 - (long)&stack0xffffffffffffff60))) = + *(undefined1 *)(lVar10 + 0x48); + puVar13 = &stack0xffffffffffffff60 + lVar4 + lVar14; + if (*(char *)(lVar10 + 0x20) == '\0') goto LAB_003e2ac0; + } + lVar2 = -(sVar11 * 2 + 0x1e & 0xfffffffffffffff0); + /* try { // try from 003e2bbc to 004e2bbf has its CatchHandler @ 003e2024 */ + bVar1 = ((&stack0xffffffffffffff60)[lVar14] - 0x2b & 0xfd) == 0; + if (bVar1) { + /* catch() { ... } // from try @ 003e2608 with catch @ 003e2c18 + catch() { ... } // from try @ 003e2a28 with catch @ 003e2c18 */ + (&stack0xffffffffffffff60)[lVar2 + lVar4 + lVar14] = (&stack0xffffffffffffff60)[lVar4 + lVar14]; + local_1c = iVar8 + -1; + } + /* catch() { ... } // from try @ 003e20c4 with catch @ 003e2bc8 + catch() { ... } // from try @ 003e27d8 with catch @ 003e2bc8 + catch() { ... } // from try @ 003e29f8 with catch @ 003e2bc8 */ + /* catch() { ... } // from try @ 003e22c8 with catch @ 003e2bd0 */ + /* catch() { ... } // from try @ 003e2208 with catch @ 003e2be4 + catch() { ... } // from try @ 003e22d0 with catch @ 003e2be4 + catch() { ... } // from try @ 003e2454 with catch @ 003e2be4 + catch() { ... } // from try @ 003e2594 with catch @ 003e2be4 + catch() { ... } // from try @ 003e29c8 with catch @ 003e2be4 + catch() { ... } // from try @ 003e2a34 with catch @ 003e2be4 + catch() { ... } // from try @ 003e2a98 with catch @ 003e2be4 + catch() { ... } // from try @ 003e2aec with catch @ 003e2be4 */ + FUN_003e149c(param_2,*(undefined8 *)(lVar10 + 0x10),*(undefined8 *)(lVar10 + 0x18), + *(undefined1 *)(lVar10 + 0x49),puVar9, + &stack0xffffffffffffff60 + (ulong)bVar1 + lVar2 + lVar4 + lVar14, + &stack0xffffffffffffff60 + (ulong)bVar1 + lVar4 + lVar14,&local_1c); + /* catch() { ... } // from try @ 003e20a4 with catch @ 003e2bec + catch() { ... } // from try @ 003e284c with catch @ 003e2bec + catch() { ... } // from try @ 003e29ec with catch @ 003e2bec */ + local_1c = (uint)bVar1 + local_1c; + /* catch() { ... } // from try @ 003e24ac with catch @ 003e2bf4 + catch() { ... } // from try @ 003e2520 with catch @ 003e2bf4 */ + sVar11 = (size_t)local_1c; + puVar13 = &stack0xffffffffffffff60 + lVar2 + lVar4 + lVar14; +LAB_003e2ac0: + lVar4 = *(long *)(param_5 + 0x10); + sVar12 = sVar11; + puVar9 = puVar13; + if ((long)sVar11 < lVar4) { + lVar10 = -(lVar4 + 0x1eU & 0xfffffffffffffff0); + puVar9 = puVar13 + lVar10; + /* try { // try from 003e2ae4 to 004e2ae7 has its CatchHandler @ 003e2b10 */ + /* try { // try from 003e2aec to 004e2aef has its CatchHandler @ 003e2be4 */ + sVar12 = (size_t)(int)lVar4; + FUN_003e2370(param_5,param_6,(long)puVar13 + lVar10,puVar13,lVar4,sVar11); + local_1c = (int)lVar4; + } + *(undefined8 *)(param_5 + 0x10) = 0; + if (param_4 == '\0') { + /* catch() { ... } // from try @ 003e2ae4 with catch @ 003e2b10 */ + sVar11 = (**(code **)(*param_3 + 0x60))(param_3,puVar9,sVar12); + param_4 = sVar11 != sVar12; + } + auVar15[8] = param_4; + auVar15._0_8_ = param_3; + auVar15._9_7_ = 0; + return auVar15; +} + + +================================================================== + +### FUNC 003e2cdc (24 bytes) name=FUN_003e2cdc + +void FUN_003e2cdc(void) + +{ + FUN_003e2958(); + return; +} + + +================================================================== + +### FUNC 003e2cf4 (168 bytes) name=FUN_003e2cf4 + +int FUN_003e2cf4(undefined1 *param_1,ulong param_2,long param_3,uint param_4,char param_5) + +{ + long lVar1; + ulong uVar2; + undefined1 *puVar3; + + puVar3 = param_1; + if (param_5 == '\0') { + /* catch() { ... } // from try @ 003e2d90 with catch @ 003e2d40 + catch() { ... } // from try @ 003e3570 with catch @ 003e2d40 + catch() { ... } // from try @ 003e36cc with catch @ 003e2d40 + catch() { ... } // from try @ 003e46ec with catch @ 003e2d40 + catch() { ... } // from try @ 003e57a0 with catch @ 003e2d40 */ + if ((param_4 & 0x4a) == 0x40) { + do { + uVar2 = param_2 & 7; + param_2 = param_2 >> 3; + /* try { // try from 003e2d90 to 004e2daf has its CatchHandler @ 003e2d40 */ + puVar3 = puVar3 + -1; + *puVar3 = *(undefined1 *)(param_3 + uVar2 + 4); + } while (param_2 != 0); + } + else { + lVar1 = 0x14; + if ((param_4 & 0x4000) == 0) { + lVar1 = 4; + } + do { + uVar2 = param_2 & 0xf; + param_2 = param_2 >> 4; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined1 *)(param_3 + lVar1 + uVar2); + } while (param_2 != 0); + } + } + else { + do { + uVar2 = param_2 / 10; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined1 *)(param_3 + param_2 % 10 + 4); + param_2 = uVar2; + } while (uVar2 != 0); + } + return (int)param_1 - (int)puVar3; +} + + +================================================================== + +### FUNC 003e2d9c (624 bytes) name=FUN_003e2d9c + +undefined1 [16] +FUN_003e2d9c(undefined8 param_1,long *param_2,char param_3,long param_4,undefined1 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined1 *puVar4; + undefined1 *puVar5; + bool bVar6; + bool bVar7; + int iVar8; + long lVar9; + undefined8 *puVar10; + undefined1 *puVar11; + undefined1 *puVar12; + long lVar13; + long lVar14; + undefined1 auVar15 [16]; + undefined1 auStack_b0 [40]; + undefined1 auStack_88 [24]; + + /* try { // try from 003e2db4 to 004e2dd3 has its CatchHandler @ 003e5600 */ + lVar9 = FUN_003edb10(&DAT_00546220); + lVar13 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + if (lVar14 == 0) { + puVar10 = operator_new(0x90); + *(undefined4 *)(puVar10 + 1) = 0; + *puVar10 = &PTR_FUN_004f80f0; + puVar10[2] = 0; + puVar10[3] = 0; + /* try { // try from 003e2fbc to 004e2fbf has its CatchHandler @ 003e5788 */ + *(undefined1 *)(puVar10 + 4) = 0; + puVar10[5] = 0; + /* try { // try from 003e2fc4 to 004e300f has its CatchHandler @ 003e59d8 */ + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + *(undefined1 *)(puVar10 + 9) = 0; + *(undefined1 *)((long)puVar10 + 0x49) = 0; + *(undefined1 *)(puVar10 + 0x11) = 0; + FUN_003df230(puVar10,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar10,lVar9); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar4 = auStack_b0; + puVar5 = auStack_b0; + uVar1 = uVar2 & 0x4a; + bVar6 = uVar1 != 8; + bVar7 = uVar1 != 0x40; + lVar9 = -param_6; + if ((bVar6 && bVar7) <= (0 < param_6)) { + lVar9 = param_6; + } + iVar8 = FUN_003e2cf4(auStack_88,lVar9,lVar14 + 0x4a,uVar2,bVar6 && bVar7); + puVar12 = auStack_b0 + (0x28 - iVar8); + if (*(char *)(lVar14 + 0x20) == '\0') { + puVar11 = puVar12; + if (!bVar6 || !bVar7) { +LAB_003e2f4c: + puVar12 = puVar11; + if (((uVar2 >> 9 & 1) != 0) && (param_6 != 0)) { + if (uVar1 == 0x40) { + iVar8 = iVar8 + 1; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4e); + puVar12 = puVar11 + -1; + } + else { + puVar12 = puVar11 + -2; + iVar8 = iVar8 + 2; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4a + ((ulong)(uVar2 >> 0xe) & 1) + 2); + *puVar12 = *(undefined1 *)(lVar14 + 0x4e); + } + } + goto LAB_003e2e60; + } + } + else { + /* try { // try from 003e2f28 to 004e2f2b has its CatchHandler @ 003e453c */ + lVar9 = -((-(ulong)(iVar8 + 1U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar8 + 1U) << 1) + 0x1e + & 0xfffffffffffffff0); + puVar5 = auStack_b0 + lVar9; + puVar4 = auStack_b0 + lVar9; + /* try { // try from 003e2f30 to 004e2f8f has its CatchHandler @ 003e59d8 */ + puVar11 = auStack_b0 + lVar9 + 2; + iVar8 = FUN_003e0c7c(puVar11,*(undefined1 *)(lVar14 + 0x49),*(undefined8 *)(lVar14 + 0x10), + *(undefined8 *)(lVar14 + 0x18),puVar12,puVar12 + iVar8); + iVar8 = iVar8 - (int)puVar11; + if (!bVar6 || !bVar7) goto LAB_003e2f4c; + } + puVar5 = puVar4; + if (param_6 < 0) { + iVar8 = iVar8 + 1; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4a); + puVar12 = puVar11 + -1; + } + else { + /* try { // try from 003e2e5c to 004e2e5f has its CatchHandler @ 003e59d8 */ + puVar12 = puVar11; + if ((uVar2 >> 0xb & 1) != 0) { + iVar8 = iVar8 + 1; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4b); + puVar12 = puVar11 + -1; + } + } +LAB_003e2e60: + lVar14 = *(long *)(param_4 + 0x10); + lVar13 = (long)iVar8; + puVar11 = puVar12; + lVar9 = lVar13; + if (lVar13 < lVar14) { + lVar3 = -(lVar14 + 0x1eU & 0xfffffffffffffff0); + puVar11 = puVar5 + lVar3; + /* try { // try from 003e2e8c to 004e2e8f has its CatchHandler @ 003e590c */ + /* try { // try from 003e2e94 to 004e2ee7 has its CatchHandler @ 003e59d8 */ + lVar9 = (long)(int)lVar14; + FUN_003e2370(param_4,param_5,(long)puVar5 + lVar3,puVar12,lVar14,lVar13); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar13 = (**(code **)(*param_2 + 0x60))(param_2,puVar11,lVar9); + param_3 = lVar9 != lVar13; + } + auVar15[8] = param_3; + auVar15._0_8_ = param_2; + auVar15._9_7_ = 0; + return auVar15; +} + + +================================================================== + +### FUNC 003e303c (540 bytes) name=FUN_003e303c + +undefined1 [16] +FUN_003e303c(undefined8 param_1,long *param_2,ulong param_3,long param_4,uint param_5,char param_6) + +{ + uint uVar1; + long lVar2; + long lVar3; + undefined8 *puVar4; + byte extraout_w1; + ulong uVar5; + int iVar6; + size_t __n; + long lVar7; + undefined8 uVar8; + undefined1 auVar9 [16]; + + uVar1 = *(uint *)(param_4 + 0x18); + uVar5 = param_3 & 0xff; + if ((uVar1 & 1) == 0) { + param_2 = (long *)FUN_003e2d9c(); + uVar5 = (ulong)extraout_w1; + goto LAB_003e3090; + } + lVar2 = FUN_003edb10(&DAT_00546220); + lVar7 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar3 = *(long *)(lVar7 + lVar2 * 8); + if (lVar3 == 0) { + puVar4 = operator_new(0x90); + *(undefined4 *)(puVar4 + 1) = 0; + *puVar4 = &PTR_FUN_004f80f0; + puVar4[2] = 0; + puVar4[3] = 0; + *(undefined1 *)(puVar4 + 4) = 0; + puVar4[5] = 0; + puVar4[6] = 0; + puVar4[7] = 0; + puVar4[8] = 0; + *(undefined1 *)(puVar4 + 9) = 0; + *(undefined1 *)((long)puVar4 + 0x49) = 0; + *(undefined1 *)(puVar4 + 0x11) = 0; + FUN_003df230(puVar4,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar4,lVar2); + lVar3 = *(long *)(lVar7 + lVar2 * 8); + if (param_6 == '\0') goto LAB_003e30e0; +LAB_003e3160: + uVar8 = *(undefined8 *)(lVar3 + 0x28); + lVar2 = *(long *)(param_4 + 0x10); + lVar3 = (long)*(int *)(lVar3 + 0x30); + if (lVar3 < lVar2) goto LAB_003e30f8; +LAB_003e3178: + *(undefined8 *)(param_4 + 0x10) = 0; + if ((char)param_3 != '\0') goto LAB_003e3090; +LAB_003e3180: + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,uVar8,lVar3); + uVar5 = (ulong)(lVar3 != lVar2); + } + else { + if (param_6 != '\0') goto LAB_003e3160; +LAB_003e30e0: + /* try { // try from 003e30e4 to 004e30e7 has its CatchHandler @ 003e592c */ + uVar8 = *(undefined8 *)(lVar3 + 0x38); + lVar2 = *(long *)(param_4 + 0x10); + lVar3 = (long)*(int *)(lVar3 + 0x40); + if (lVar2 <= lVar3) goto LAB_003e3178; +LAB_003e30f8: + __n = lVar2 - lVar3; + lVar2 = -(__n + 0x1e & 0xfffffffffffffff0); + /* try { // try from 003e3114 to 004e3117 has its CatchHandler @ 003e591c */ + memset(&stack0xffffffffffffff90 + lVar2,param_5 & 0xff,__n); + /* try { // try from 003e311c to 004e31ef has its CatchHandler @ 003e592c */ + *(undefined8 *)(param_4 + 0x10) = 0; + iVar6 = (int)__n; + if ((uVar1 & 0xb0) == 0x20) { + if ((char)param_3 != '\0') goto LAB_003e3090; + lVar7 = (**(code **)(*param_2 + 0x60))(param_2,uVar8,lVar3); + if (lVar3 == lVar7) { + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,&stack0xffffffffffffff90 + lVar2,(long)iVar6) + ; + uVar5 = (ulong)(iVar6 != lVar2); + goto LAB_003e3090; + } + } + else { + if ((param_3 & 0xff) != 0) goto LAB_003e3090; + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,&stack0xffffffffffffff90 + lVar2,(long)iVar6); + if (iVar6 == lVar2) goto LAB_003e3180; + } + uVar5 = 1; + } +LAB_003e3090: + auVar9._8_8_ = param_3 & 0xffffffffffffff00 | uVar5; + auVar9._0_8_ = param_2; + return auVar9; +} + + +================================================================== + +### FUNC 003e3288 (20 bytes) name=FUN_003e3288 + +void FUN_003e3288(void) + +{ + /* try { // try from 003e3288 to 004e328b has its CatchHandler @ 003e35fc */ + /* try { // try from 003e3290 to 004e333f has its CatchHandler @ 003e592c */ + FUN_003e2d9c(); + return; +} + + +================================================================== + +### FUNC 003e329c (564 bytes) name=FUN_003e329c + +undefined1 [16] +FUN_003e329c(undefined8 param_1,long *param_2,char param_3,long param_4,undefined1 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined1 *puVar4; + undefined1 *puVar5; + int iVar6; + long lVar7; + undefined8 *puVar8; + undefined1 *puVar9; + undefined1 *puVar10; + long lVar11; + long lVar12; + undefined1 auVar13 [16]; + undefined1 auStack_b0 [40]; + undefined1 auStack_88 [24]; + + lVar7 = FUN_003edb10(&DAT_00546220); + lVar11 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + if (lVar12 == 0) { + /* try { // try from 003e345c to 004e345f has its CatchHandler @ 003e59d8 */ + puVar8 = operator_new(0x90); + *(undefined4 *)(puVar8 + 1) = 0; + *puVar8 = &PTR_FUN_004f80f0; + puVar8[2] = 0; + puVar8[3] = 0; + *(undefined1 *)(puVar8 + 4) = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined1 *)(puVar8 + 9) = 0; + *(undefined1 *)((long)puVar8 + 0x49) = 0; + *(undefined1 *)(puVar8 + 0x11) = 0; + FUN_003df230(puVar8,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar8,lVar7); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar5 = auStack_b0; + puVar4 = auStack_b0; + uVar1 = uVar2 & 0x4a; + iVar6 = FUN_003e2cf4(auStack_88,param_6,lVar12 + 0x4a,uVar2,uVar1 != 8 && uVar1 != 0x40); + puVar9 = auStack_b0 + (0x28 - iVar6); + if (*(char *)(lVar12 + 0x20) != '\0') { + lVar7 = -((-(ulong)(iVar6 + 1U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar6 + 1U) << 1) + 0x1e + & 0xfffffffffffffff0); + puVar4 = auStack_b0 + lVar7; + puVar5 = auStack_b0 + lVar7; + puVar10 = auStack_b0 + lVar7 + 2; + iVar6 = FUN_003e0c7c(puVar10,*(undefined1 *)(lVar12 + 0x49),*(undefined8 *)(lVar12 + 0x10), + *(undefined8 *)(lVar12 + 0x18),puVar9,puVar9 + iVar6); + iVar6 = iVar6 - (int)puVar10; + puVar9 = puVar10; + } + puVar10 = puVar9; + if (((uVar1 == 8 || uVar1 == 0x40) && (puVar5 = puVar4, param_6 != 0)) && ((uVar2 >> 9 & 1) != 0)) + { + if (uVar1 == 0x40) { + iVar6 = iVar6 + 1; + puVar9[-1] = *(undefined1 *)(lVar12 + 0x4e); + puVar10 = puVar9 + -1; + } + else { + puVar10 = puVar9 + -2; + iVar6 = iVar6 + 2; + puVar9[-1] = *(undefined1 *)(lVar12 + 0x4a + ((ulong)(uVar2 >> 0xe) & 1) + 2); + *puVar10 = *(undefined1 *)(lVar12 + 0x4e); + } + } + lVar12 = *(long *)(param_4 + 0x10); + lVar11 = (long)iVar6; + puVar9 = puVar10; + lVar7 = lVar11; + if (lVar11 < lVar12) { + lVar3 = -(lVar12 + 0x1eU & 0xfffffffffffffff0); + puVar9 = puVar5 + lVar3; + lVar7 = (long)(int)lVar12; + FUN_003e2370(param_4,param_5,(long)puVar5 + lVar3,puVar10,lVar12,lVar11); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar11 = (**(code **)(*param_2 + 0x60))(param_2,puVar9,lVar7); + param_3 = lVar7 != lVar11; + } + auVar13[8] = param_3; + auVar13._0_8_ = param_2; + auVar13._9_7_ = 0; + /* try { // try from 003e33d8 to 004e33db has its CatchHandler @ 003e36dc */ + return auVar13; +} + + +================================================================== + +### FUNC 003e3500 (20 bytes) name=FUN_003e3500 + +void FUN_003e3500(void) + +{ + FUN_003e329c(); + return; +} + + +================================================================== + +### FUNC 003e3514 (92 bytes) name=FUN_003e3514 + +void FUN_003e3514(void) + +{ + uint uVar1; + long in_x3; + + uVar1 = *(uint *)(in_x3 + 0x18); + *(uint *)(in_x3 + 0x18) = uVar1 & 0xffffbfb5 | 0x208; + /* try { // try from 003e3544 to 004e3547 has its CatchHandler @ 003e5600 */ + FUN_003e329c(); + *(uint *)(in_x3 + 0x18) = uVar1; + return; +} + + +================================================================== + +### FUNC 003e3570 (168 bytes) name=FUN_003e3570 + +int FUN_003e3570(undefined1 *param_1,ulong param_2,long param_3,uint param_4,char param_5) + +{ + long lVar1; + ulong uVar2; + undefined1 *puVar3; + + /* try { // try from 003e3570 to 004e35c3 has its CatchHandler @ 003e2d40 */ + puVar3 = param_1; + if (param_5 == '\0') { + if ((param_4 & 0x4a) == 0x40) { + do { + /* catch() { ... } // from try @ 003e3288 with catch @ 003e35fc */ + uVar2 = param_2 & 7; + param_2 = param_2 >> 3; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined1 *)(param_3 + uVar2 + 4); + } while (param_2 != 0); + } + else { + lVar1 = 0x14; + if ((param_4 & 0x4000) == 0) { + lVar1 = 4; + } + do { + uVar2 = param_2 & 0xf; + param_2 = param_2 >> 4; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined1 *)(param_3 + lVar1 + uVar2); + } while (param_2 != 0); + } + } + else { + do { + uVar2 = param_2 / 10; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined1 *)(param_3 + param_2 % 10 + 4); + param_2 = uVar2; + } while (uVar2 != 0); + } + return (int)param_1 - (int)puVar3; +} + + +================================================================== + +### FUNC 003e3618 (624 bytes) name=FUN_003e3618 + +undefined1 [16] +FUN_003e3618(undefined8 param_1,long *param_2,char param_3,long param_4,undefined1 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined1 *puVar4; + undefined1 *puVar5; + bool bVar6; + bool bVar7; + int iVar8; + long lVar9; + undefined8 *puVar10; + undefined1 *puVar11; + undefined1 *puVar12; + long lVar13; + long lVar14; + undefined1 auVar15 [16]; + undefined1 auStack_b0 [40]; + undefined1 auStack_88 [24]; + + lVar9 = FUN_003edb10(&DAT_00546220); + lVar13 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + if (lVar14 == 0) { + puVar10 = operator_new(0x90); + *(undefined4 *)(puVar10 + 1) = 0; + *puVar10 = &PTR_FUN_004f80f0; + puVar10[2] = 0; + puVar10[3] = 0; + *(undefined1 *)(puVar10 + 4) = 0; + puVar10[5] = 0; + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + *(undefined1 *)(puVar10 + 9) = 0; + *(undefined1 *)((long)puVar10 + 0x49) = 0; + *(undefined1 *)(puVar10 + 0x11) = 0; + FUN_003df230(puVar10,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar10,lVar9); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar4 = auStack_b0; + puVar5 = auStack_b0; + uVar1 = uVar2 & 0x4a; + bVar6 = uVar1 != 8; + bVar7 = uVar1 != 0x40; + lVar9 = -param_6; + if ((bVar6 && bVar7) <= (0 < param_6)) { + lVar9 = param_6; + } + iVar8 = FUN_003e3570(auStack_88,lVar9,lVar14 + 0x4a,uVar2,bVar6 && bVar7); + puVar12 = auStack_b0 + (0x28 - iVar8); + /* try { // try from 003e36cc to 004e36cf has its CatchHandler @ 003e2d40 */ + if (*(char *)(lVar14 + 0x20) == '\0') { + puVar11 = puVar12; + if (!bVar6 || !bVar7) { +LAB_003e37c8: + puVar12 = puVar11; + if (((uVar2 >> 9 & 1) != 0) && (param_6 != 0)) { + if (uVar1 == 0x40) { + iVar8 = iVar8 + 1; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4e); + puVar12 = puVar11 + -1; + } + else { + puVar12 = puVar11 + -2; + iVar8 = iVar8 + 2; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4a + ((ulong)(uVar2 >> 0xe) & 1) + 2); + *puVar12 = *(undefined1 *)(lVar14 + 0x4e); + } + } + goto LAB_003e36dc; + } + } + else { + lVar9 = -((-(ulong)(iVar8 + 1U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar8 + 1U) << 1) + 0x1e + & 0xfffffffffffffff0); + puVar5 = auStack_b0 + lVar9; + puVar4 = auStack_b0 + lVar9; + puVar11 = auStack_b0 + lVar9 + 2; + iVar8 = FUN_003e0c7c(puVar11,*(undefined1 *)(lVar14 + 0x49),*(undefined8 *)(lVar14 + 0x10), + *(undefined8 *)(lVar14 + 0x18),puVar12,puVar12 + iVar8); + iVar8 = iVar8 - (int)puVar11; + if (!bVar6 || !bVar7) goto LAB_003e37c8; + } + /* try { // try from 003e36d4 to 004e36d7 has its CatchHandler @ 003e36dc */ + puVar5 = puVar4; + if (param_6 < 0) { + iVar8 = iVar8 + 1; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4a); + puVar12 = puVar11 + -1; + } + else { + puVar12 = puVar11; + if ((uVar2 >> 0xb & 1) != 0) { + iVar8 = iVar8 + 1; + puVar11[-1] = *(undefined1 *)(lVar14 + 0x4b); + puVar12 = puVar11 + -1; + } + } +LAB_003e36dc: + /* catch() { ... } // from try @ 003e33d8 with catch @ 003e36dc + catch() { ... } // from try @ 003e36d4 with catch @ 003e36dc + catch() { ... } // from try @ 003e4424 with catch @ 003e36dc */ + lVar14 = *(long *)(param_4 + 0x10); + lVar13 = (long)iVar8; + /* try { // try from 003e36e8 to 004e36eb has its CatchHandler @ 003e59d8 */ + puVar11 = puVar12; + lVar9 = lVar13; + if (lVar13 < lVar14) { + /* try { // try from 003e36f4 to 004e36f7 has its CatchHandler @ 003e36fc */ + /* catch() { ... } // from try @ 003e34d0 with catch @ 003e36fc + catch() { ... } // from try @ 003e36f4 with catch @ 003e36fc + catch() { ... } // from try @ 003e46b4 with catch @ 003e36fc + catch() { ... } // from try @ 003e552c with catch @ 003e36fc + catch() { ... } // from try @ 003e56d0 with catch @ 003e36fc */ + lVar3 = -(lVar14 + 0x1eU & 0xfffffffffffffff0); + puVar11 = puVar5 + lVar3; + /* try { // try from 003e3708 to 004e370b has its CatchHandler @ 003e5600 */ + lVar9 = (long)(int)lVar14; + FUN_003e2370(param_4,param_5,(long)puVar5 + lVar3,puVar12,lVar14,lVar13); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar13 = (**(code **)(*param_2 + 0x60))(param_2,puVar11,lVar9); + param_3 = lVar9 != lVar13; + } + auVar15[8] = param_3; + auVar15._0_8_ = param_2; + auVar15._9_7_ = 0; + return auVar15; +} + + +================================================================== + +### FUNC 003e38b8 (20 bytes) name=FUN_003e38b8 + +void FUN_003e38b8(void) + +{ + FUN_003e3618(); + return; +} + + +================================================================== + +### FUNC 003e38cc (564 bytes) name=FUN_003e38cc + +undefined1 [16] +FUN_003e38cc(undefined8 param_1,long *param_2,char param_3,long param_4,undefined1 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined1 *puVar4; + undefined1 *puVar5; + int iVar6; + long lVar7; + undefined8 *puVar8; + undefined1 *puVar9; + undefined1 *puVar10; + long lVar11; + long lVar12; + undefined1 auVar13 [16]; + undefined1 auStack_b0 [40]; + undefined1 auStack_88 [24]; + + lVar7 = FUN_003edb10(&DAT_00546220); + lVar11 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + if (lVar12 == 0) { + puVar8 = operator_new(0x90); + *(undefined4 *)(puVar8 + 1) = 0; + *puVar8 = &PTR_FUN_004f80f0; + puVar8[2] = 0; + puVar8[3] = 0; + *(undefined1 *)(puVar8 + 4) = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined1 *)(puVar8 + 9) = 0; + *(undefined1 *)((long)puVar8 + 0x49) = 0; + *(undefined1 *)(puVar8 + 0x11) = 0; + FUN_003df230(puVar8,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar8,lVar7); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar5 = auStack_b0; + puVar4 = auStack_b0; + uVar1 = uVar2 & 0x4a; + /* try { // try from 003e3958 to 004e418f has its CatchHandler @ 003e592c */ + iVar6 = FUN_003e3570(auStack_88,param_6,lVar12 + 0x4a,uVar2,uVar1 != 8 && uVar1 != 0x40); + puVar9 = auStack_b0 + (0x28 - iVar6); + if (*(char *)(lVar12 + 0x20) != '\0') { + lVar7 = -((-(ulong)(iVar6 + 1U >> 0x1f) & 0xfffffffe00000000 | (ulong)(iVar6 + 1U) << 1) + 0x1e + & 0xfffffffffffffff0); + puVar4 = auStack_b0 + lVar7; + puVar5 = auStack_b0 + lVar7; + puVar10 = auStack_b0 + lVar7 + 2; + iVar6 = FUN_003e0c7c(puVar10,*(undefined1 *)(lVar12 + 0x49),*(undefined8 *)(lVar12 + 0x10), + *(undefined8 *)(lVar12 + 0x18),puVar9,puVar9 + iVar6); + iVar6 = iVar6 - (int)puVar10; + puVar9 = puVar10; + } + puVar10 = puVar9; + if (((uVar1 == 8 || uVar1 == 0x40) && (puVar5 = puVar4, param_6 != 0)) && ((uVar2 >> 9 & 1) != 0)) + { + if (uVar1 == 0x40) { + iVar6 = iVar6 + 1; + puVar9[-1] = *(undefined1 *)(lVar12 + 0x4e); + puVar10 = puVar9 + -1; + } + else { + puVar10 = puVar9 + -2; + iVar6 = iVar6 + 2; + puVar9[-1] = *(undefined1 *)(lVar12 + 0x4a + ((ulong)(uVar2 >> 0xe) & 1) + 2); + *puVar10 = *(undefined1 *)(lVar12 + 0x4e); + } + } + lVar12 = *(long *)(param_4 + 0x10); + lVar11 = (long)iVar6; + puVar9 = puVar10; + lVar7 = lVar11; + if (lVar11 < lVar12) { + lVar3 = -(lVar12 + 0x1eU & 0xfffffffffffffff0); + puVar9 = puVar5 + lVar3; + lVar7 = (long)(int)lVar12; + FUN_003e2370(param_4,param_5,(long)puVar5 + lVar3,puVar10,lVar12,lVar11); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar11 = (**(code **)(*param_2 + 0x60))(param_2,puVar9,lVar7); + param_3 = lVar7 != lVar11; + } + auVar13[8] = param_3; + auVar13._0_8_ = param_2; + auVar13._9_7_ = 0; + return auVar13; +} + + +================================================================== + +### FUNC 003e3b30 (20 bytes) name=FUN_003e3b30 + +void FUN_003e3b30(void) + +{ + FUN_003e38cc(); + return; +} + + +================================================================== + +### FUNC 003e3b44 (224 bytes) name=FUN_003e3b44 + +long FUN_003e3b44(undefined8 param_1,long *param_2) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + long lVar4; + + lVar1 = FUN_003edb10(&DAT_00546238); + lVar4 = *(long *)(*param_2 + 0x18); + lVar2 = *(long *)(lVar4 + lVar1 * 8); + if (lVar2 != 0) { + return lVar2; + } + puVar3 = operator_new(0x70); + *(undefined4 *)(puVar3 + 1) = 0; + *puVar3 = &PTR_FUN_004f80d0; + puVar3[2] = 0; + puVar3[3] = 0; + *(undefined1 *)(puVar3 + 4) = 0; + *(undefined1 *)((long)puVar3 + 0x21) = 0; + *(undefined1 *)((long)puVar3 + 0x22) = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + *(undefined4 *)(puVar3 + 0xb) = 0; + *(undefined1 *)((long)puVar3 + 0x5c) = 0; + *(undefined1 *)((long)puVar3 + 0x5d) = 0; + *(undefined1 *)((long)puVar3 + 0x5e) = 0; + *(undefined1 *)((long)puVar3 + 0x5f) = 0; + *(undefined1 *)(puVar3 + 0xc) = 0; + *(undefined1 *)((long)puVar3 + 0x61) = 0; + *(undefined1 *)((long)puVar3 + 0x62) = 0; + *(undefined1 *)((long)puVar3 + 99) = 0; + *(undefined1 *)((long)puVar3 + 0x6f) = 0; + FUN_003df8fc(puVar3,param_2); + FUN_003ed980(*param_2,puVar3,lVar1); + return *(long *)(lVar4 + lVar1 * 8); +} + + +================================================================== + +### FUNC 003e3c54 (224 bytes) name=FUN_003e3c54 + +long FUN_003e3c54(undefined8 param_1,long *param_2) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + long lVar4; + + lVar1 = FUN_003edb10(&DAT_00546240); + lVar4 = *(long *)(*param_2 + 0x18); + lVar2 = *(long *)(lVar4 + lVar1 * 8); + if (lVar2 != 0) { + return lVar2; + } + puVar3 = operator_new(0x70); + *(undefined4 *)(puVar3 + 1) = 0; + *puVar3 = &PTR_FUN_004f80b0; + puVar3[2] = 0; + puVar3[3] = 0; + *(undefined1 *)(puVar3 + 4) = 0; + *(undefined1 *)((long)puVar3 + 0x21) = 0; + *(undefined1 *)((long)puVar3 + 0x22) = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + *(undefined4 *)(puVar3 + 0xb) = 0; + *(undefined1 *)((long)puVar3 + 0x5c) = 0; + *(undefined1 *)((long)puVar3 + 0x5d) = 0; + *(undefined1 *)((long)puVar3 + 0x5e) = 0; + *(undefined1 *)((long)puVar3 + 0x5f) = 0; + *(undefined1 *)(puVar3 + 0xc) = 0; + *(undefined1 *)((long)puVar3 + 0x61) = 0; + *(undefined1 *)((long)puVar3 + 0x62) = 0; + *(undefined1 *)((long)puVar3 + 99) = 0; + *(undefined1 *)((long)puVar3 + 0x6f) = 0; + FUN_003dfe94(puVar3,param_2); + FUN_003ed980(*param_2,puVar3,lVar1); + return *(long *)(lVar4 + lVar1 * 8); +} + + +================================================================== + +### FUNC 003e3d64 (180 bytes) name=FUN_003e3d64 + +long FUN_003e3d64(undefined8 param_1,long *param_2) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + long lVar4; + + lVar1 = FUN_003edb10(&DAT_00546220); + lVar4 = *(long *)(*param_2 + 0x18); + lVar2 = *(long *)(lVar4 + lVar1 * 8); + if (lVar2 != 0) { + return lVar2; + } + puVar3 = operator_new(0x90); + *(undefined4 *)(puVar3 + 1) = 0; + *puVar3 = &PTR_FUN_004f80f0; + puVar3[2] = 0; + puVar3[3] = 0; + *(undefined1 *)(puVar3 + 4) = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + *(undefined1 *)(puVar3 + 9) = 0; + *(undefined1 *)((long)puVar3 + 0x49) = 0; + *(undefined1 *)(puVar3 + 0x11) = 0; + FUN_003df230(puVar3,param_2); + FUN_003ed980(*param_2,puVar3,lVar1); + return *(long *)(lVar4 + lVar1 * 8); +} + + +================================================================== + +### FUNC 003e3e48 (136 bytes) name=FUN_003e3e48 + +ulong FUN_003e3e48(long *param_1) + +{ + ulong uVar1; + long *plVar2; + + plVar2 = (long *)*param_1; + if (plVar2 == (long *)0x0) { + uVar1 = 0xffffffff; + } + else { + uVar1 = (ulong)*(uint *)(param_1 + 1); + if (*(uint *)(param_1 + 1) == 0xffffffff) { + if ((byte *)plVar2[2] < (byte *)plVar2[3]) { + uVar1 = (ulong)*(byte *)plVar2[2]; + } + else { + uVar1 = (**(code **)(*plVar2 + 0x48))(plVar2); + if ((int)uVar1 == -1) { + *param_1 = 0; + return uVar1; + } + } + *(int *)(param_1 + 1) = (int)uVar1; + return uVar1; + } + } + return uVar1; +} + + +================================================================== + +### FUNC 003e3ed0 (884 bytes) name=FUN_003e3ed0 + +undefined1 [16] +FUN_003e3ed0(undefined8 param_1,long *param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,int *param_6,long param_7,long param_8,long param_9,uint *param_10) + +{ + long lVar1; + undefined1 auVar2 [16]; + char cVar3; + char cVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + long *plVar9; + ulong uVar10; + size_t sVar11; + uint uVar12; + long lVar13; + ulong uVar14; + ulong uVar15; + ulong uVar16; + char *__s; + undefined8 local_20; + undefined8 uStack_18; + long *local_10; + uint local_8; + undefined4 uStack_4; + + local_8 = (uint)param_3; + uStack_4 = (undefined4)((ulong)param_3 >> 0x20); + local_20 = param_4; + uStack_18 = param_5; + local_10 = param_2; + plVar9 = (long *)FUN_003de994(param_9 + 0xd0); + lVar1 = -(param_8 * 4 + 0x1eU & 0xfffffffffffffff0); + iVar5 = FUN_003e3e48(&local_10); + iVar6 = FUN_003e3e48(&local_20); + if (((iVar5 == -1) != (iVar6 == -1)) && (cVar3 = FUN_003e3e48(&local_10), param_8 != 0)) { + lVar13 = 0; + uVar15 = 0; + do { + while ((**(char **)(param_7 + lVar13 * 8) != cVar3 && + (cVar4 = (**(code **)(*plVar9 + 0x10))(plVar9), cVar3 != cVar4))) { + lVar13 = lVar13 + 1; + if (lVar13 == param_8) goto LAB_003e3fc4; + } + *(int *)(&stack0xffffffffffffff70 + uVar15 * 4 + lVar1) = (int)lVar13; + lVar13 = lVar13 + 1; + uVar15 = uVar15 + 1; + } while (lVar13 != param_8); +LAB_003e3fc4: + uVar14 = 0; +joined_r0x003e3fd0: + if (1 < uVar15) { + uVar16 = 1; + uVar10 = strlen(*(char **)(param_7 + (long)*(int *)(&stack0xffffffffffffff70 + lVar1) * 8)); + do { + lVar13 = uVar16 * 4; + uVar16 = uVar16 + 1; + sVar11 = strlen(*(char **)(param_7 + + (long)*(int *)(&stack0xffffffffffffff70 + lVar13 + lVar1) * 8)); + if (sVar11 < uVar10) { + uVar10 = sVar11; + } + } while (uVar16 < uVar15); + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 1; + } + else { + (**(code **)(*local_10 + 0x50))(); + } + local_8 = 0xffffffff; + } + uVar14 = uVar14 + 1; + if (uVar10 <= uVar14) goto LAB_003e4190; + iVar5 = FUN_003e3e48(&local_10); + iVar6 = FUN_003e3e48(&local_20); + if ((iVar5 == -1) == (iVar6 == -1)) goto LAB_003e4190; + uVar16 = 0; + do { + while( true ) { + uVar12 = (uint)*(byte *)(*(long *)(param_7 + + (long)*(int *)(&stack0xffffffffffffff70 + + uVar16 * 4 + lVar1) * 8) + uVar14); + if (local_10 == (long *)0x0) break; + if (local_8 != 0xffffffff) { + uVar8 = local_8 & 0xff; + goto LAB_003e4070; + } + if ((byte *)local_10[2] < (byte *)local_10[3]) { + uVar8 = (uint)*(byte *)local_10[2]; + } + else { + uVar8 = (**(code **)(*local_10 + 0x48))(); + if (uVar8 == 0xffffffff) { + local_10 = (long *)0x0; + uVar8 = 0xff; + goto LAB_003e4070; + } + } + local_8 = uVar8; + if (uVar12 != (uVar8 & 0xff)) goto LAB_003e4078; +LAB_003e40d4: + uVar16 = uVar16 + 1; + if (uVar15 <= uVar16) goto joined_r0x003e3fd0; + } + uVar8 = 0xff; +LAB_003e4070: + if (uVar12 == uVar8) goto LAB_003e40d4; +LAB_003e4078: + uVar15 = uVar15 - 1; + *(undefined4 *)(&stack0xffffffffffffff70 + uVar16 * 4 + lVar1) = + *(undefined4 *)(&stack0xffffffffffffff70 + uVar15 * 4 + lVar1); + } while (uVar16 < uVar15); + goto joined_r0x003e3fd0; + } + if (uVar15 == 1) { + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 1; + } + else { + FUN_003dcae0(); + } + local_8 = 0xffffffff; + } + iVar5 = *(int *)(&stack0xffffffffffffff70 + lVar1); + __s = *(char **)(param_7 + (long)iVar5 * 8); + sVar11 = strlen(__s); + while (uVar14 = uVar14 + 1, uVar14 < sVar11) { + iVar6 = FUN_003e3e48(&local_10); + iVar7 = FUN_003e3e48(&local_20); + if (((iVar6 == -1) == (iVar7 == -1)) || + (cVar3 = __s[uVar14], cVar4 = FUN_003e3e48(&local_10), cVar3 != cVar4)) break; + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 1; + } + else { + FUN_003dcae0(); + } + local_8 = 0xffffffff; + } + } + if (uVar14 == sVar11) { + *param_6 = iVar5; + goto LAB_003e419c; + } + } + } +LAB_003e4190: + *param_10 = *param_10 | 4; +LAB_003e419c: + auVar2._8_4_ = local_8; + auVar2._0_8_ = local_10; + auVar2._12_4_ = uStack_4; + return auVar2; +} + + +================================================================== + +### FUNC 003e4244 (1068 bytes) name=FUN_003e4244 + +undefined1 [16] +FUN_003e4244(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + int *param_6,long param_7,ulong param_8,long param_9,uint *param_10) + +{ + long lVar1; + long lVar2; + undefined1 auVar3 [16]; + char cVar4; + char cVar5; + int iVar6; + int iVar7; + uint uVar8; + long *plVar9; + size_t sVar10; + ulong uVar11; + ulong uVar12; + ulong uVar13; + ulong *puVar14; + ulong *puVar15; + ulong uVar16; + ulong uVar17; + long *local_20; + undefined8 local_18; + long *local_10; + uint local_8; + undefined4 uStack_4; + + /* catch() { ... } // from try @ 003e4224 with catch @ 003e4270 */ + local_8 = (uint)param_3; + uStack_4 = (undefined4)((ulong)param_3 >> 0x20); + local_20 = param_4; + local_18 = param_5; + local_10 = param_2; + plVar9 = (long *)FUN_003de994(param_9 + 0xd0); + lVar1 = -(param_8 * 8 + 0x1e & 0xfffffffffffffff0); + iVar6 = FUN_003e3e48(&local_10); + iVar7 = FUN_003e3e48(&local_20); + if ((iVar6 == -1) == (iVar7 == -1)) { + uVar17 = 0; + uVar16 = 0; + puVar14 = (ulong *)0x0; + plVar9 = local_10; + } + else { + puVar15 = (ulong *)(param_8 * 2); + puVar14 = (ulong *)0x0; + uVar17 = 0; + cVar4 = FUN_003e3e48(&local_10); + if (puVar15 == (ulong *)0x0) { + uVar16 = 0; + plVar9 = local_10; + } + else { + do { + while ((**(char **)(param_7 + (long)puVar14 * 8) != cVar4 && + (cVar5 = (**(code **)(*plVar9 + 0x10))(plVar9), cVar4 != cVar5))) { + puVar14 = (ulong *)((long)puVar14 + 1); + if (puVar14 == puVar15) goto LAB_003e4428; + } + *(int *)(&stack0xffffffffffffff80 + uVar17 * 4 + lVar1) = (int)puVar14; + puVar14 = (ulong *)((long)puVar14 + 1); + uVar17 = uVar17 + 1; + /* try { // try from 003e4424 to 004e4427 has its CatchHandler @ 003e36dc */ + } while (puVar14 != puVar15); +LAB_003e4428: + if (uVar17 == 0) { + uVar16 = 0; + puVar14 = (ulong *)0x0; + plVar9 = local_10; + } + else { + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 1; + } + else { + FUN_003dcae0(local_10); + } + local_8 = 0xffffffff; + } + plVar9 = local_10; + uVar16 = 0; + lVar2 = -(uVar17 * 8 + 0x1e & 0xfffffffffffffff0); + puVar14 = (ulong *)(&stack0xffffffffffffff80 + lVar2 + lVar1); + do { + sVar10 = strlen(*(char **)(param_7 + + (long)*(int *)(&stack0xffffffffffffff80 + uVar16 * 4 + lVar1) * + 8)); + *(size_t *)(&stack0xffffffffffffff80 + uVar16 * 8 + lVar2 + lVar1) = sVar10; + uVar16 = uVar16 + 1; + } while (uVar16 != uVar17); + uVar16 = 1; + } + } + } + do { + uVar13 = uVar17; + if (plVar9 == (long *)0x0) { +LAB_003e4584: + if (local_20 == (long *)0x0) break; + iVar6 = 1; +LAB_003e4310: + iVar7 = 0; + if ((int)local_18 == -1) { + if ((byte *)local_20[2] < (byte *)local_20[3]) { + uVar8 = (uint)*(byte *)local_20[2]; + } + else { + uVar8 = (**(code **)(*local_20 + 0x48))(); + if (uVar8 == 0xffffffff) { + local_20 = (long *)0x0; + iVar7 = 1; + goto LAB_003e4320; + } + } + local_18 = CONCAT44(local_18._4_4_,uVar8); + if (iVar6 == 0) break; + } + else { +LAB_003e4320: + if (iVar7 == iVar6) break; + } +LAB_003e4328: + if (local_10 == (long *)0x0) { + uVar8 = 0xff; + } + else if (local_8 == 0xffffffff) { + if ((byte *)local_10[2] < (byte *)local_10[3]) { + uVar8 = (uint)*(byte *)local_10[2]; + } + else { + uVar8 = (**(code **)(*local_10 + 0x48))(local_10); + if (uVar8 == 0xffffffff) { + local_10 = (long *)0x0; + uVar8 = 0xff; + goto LAB_003e4340; + } + } + local_8 = uVar8; + uVar8 = uVar8 & 0xff; + } + else { + uVar8 = local_8 & 0xff; + } + } + else { + if (local_8 == 0xffffffff) { + /* catch() { ... } // from try @ 003e2f28 with catch @ 003e453c */ + if ((byte *)plVar9[2] < (byte *)plVar9[3]) { + uVar8 = (uint)*(byte *)plVar9[2]; + } + else { + uVar8 = (**(code **)(*plVar9 + 0x48))(plVar9); + if (uVar8 == 0xffffffff) { + local_10 = (long *)0x0; + goto LAB_003e4584; + } + } + iVar6 = 0; + /* try { // try from 003e4558 to 004e46af has its CatchHandler @ 003e59d8 */ + local_8 = uVar8; + if (local_20 != (long *)0x0) goto LAB_003e4310; + goto LAB_003e4328; + } + iVar6 = 0; + if (local_20 != (long *)0x0) goto LAB_003e4310; + uVar8 = local_8 & 0xff; + } +LAB_003e4340: + if (uVar17 == 0) goto LAB_003e450c; + uVar11 = 0; + uVar13 = 0; + do { + while( true ) { + if (uVar16 < puVar14[uVar11]) break; + uVar13 = uVar13 + 1; +LAB_003e435c: + uVar11 = uVar11 + 1; + if (uVar17 <= uVar11) goto LAB_003e43a8; + } + if (*(byte *)(*(long *)(param_7 + + (long)*(int *)(&stack0xffffffffffffff80 + uVar11 * 4 + lVar1) * 8) + + uVar16) == uVar8) goto LAB_003e435c; + uVar17 = uVar17 - 1; + uVar12 = puVar14[uVar17]; + *(undefined4 *)(&stack0xffffffffffffff80 + uVar11 * 4 + lVar1) = + *(undefined4 *)(&stack0xffffffffffffff80 + uVar17 * 4 + lVar1); + puVar14[uVar11] = uVar12; + } while (uVar11 < uVar17); +LAB_003e43a8: + if (uVar17 == uVar13) break; + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_8 = 0xffffffff; + local_10[2] = local_10[2] + 1; + } + else { + (**(code **)(*local_10 + 0x50))(local_10); + local_8 = 0xffffffff; + } + } + uVar16 = uVar16 + 1; + plVar9 = local_10; + } while( true ); + if (uVar13 == 1) { + uVar17 = *puVar14; +joined_r0x003e45fc: + if (uVar17 == uVar16) { +LAB_003e4600: + iVar7 = *(int *)(&stack0xffffffffffffff80 + lVar1); + iVar6 = iVar7 - (int)param_8; + if ((ulong)(long)iVar7 < param_8) { + iVar6 = iVar7; + } + *param_6 = iVar6; + goto LAB_003e4518; + } + } + else if (uVar13 == 2) { + if (*puVar14 != uVar16) { + uVar17 = puVar14[1]; + goto joined_r0x003e45fc; + } + goto LAB_003e4600; + } +LAB_003e450c: + *param_10 = *param_10 | 4; +LAB_003e4518: + auVar3._8_4_ = local_8; + auVar3._0_8_ = local_10; + auVar3._12_4_ = uStack_4; + return auVar3; +} + + +================================================================== + +### FUNC 003e4670 (584 bytes) name=FUN_003e4670 + +undefined1 [16] +FUN_003e4670(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + ulong uVar6; + long *plVar7; + int iVar8; + undefined1 auVar9 [16]; + undefined4 local_78; + int local_74; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + /* try { // try from 003e46b4 to 004e46cb has its CatchHandler @ 003e36fc */ + lVar4 = FUN_003e0454(param_6 + 0xd0); + FUN_003de994(param_6 + 0xd0); + lVar5 = *(long *)(lVar4 + 0x10); + /* try { // try from 003e46d0 to 004e46e7 has its CatchHandler @ 003e5600 */ + local_60 = *(undefined8 *)(lVar5 + 0xa0); + /* try { // try from 003e46ec to 004e46ef has its CatchHandler @ 003e2d40 */ + local_68 = *(undefined8 *)(lVar5 + 0x98); + local_70 = *(undefined8 *)(lVar5 + 0x90); + local_58 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xa8); + local_50 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xb0); + local_48 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xb8); + local_40 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xc0); + local_38 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x58); + local_30 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x60); + local_28 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x68); + local_20 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x70); + local_18 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x78); + local_74 = 0; + local_10 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x80); + local_8 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x88); + auVar9 = FUN_003e4244(param_1,param_2,param_3,param_4,param_5,&local_78,&local_70,7,param_6, + &local_74); + plVar7 = auVar9._0_8_; + uVar6 = auVar9._8_8_ & 0xffffffff; + if (local_74 == 0) { + *(undefined4 *)(param_8 + 0x18) = local_78; + } + else { + *param_7 = *param_7 | 4; + } + if (plVar7 == (long *)0x0) { +LAB_003e482c: + plVar7 = (long *)0x0; + iVar8 = 1; + if (param_4 != (long *)0x0) goto LAB_003e47d8; + } + else { + if (auVar9._8_4_ == -1) { + if ((byte *)plVar7[2] < (byte *)plVar7[3]) { + uVar6 = (ulong)*(byte *)plVar7[2]; + } + else { + uVar3 = (**(code **)(*plVar7 + 0x48))(); + if (uVar3 == 0xffffffff) goto LAB_003e482c; + uVar6 = (ulong)uVar3; + } + } + iVar8 = 0; + if (param_4 == (long *)0x0) goto LAB_003e47ec; +LAB_003e47d8: + iVar1 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[2] < (ulong)param_4[3]) { + iVar1 = 0; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + iVar1 = 1; + if (iVar2 != -1) { + iVar1 = 0; + } + } + } + if (iVar8 != iVar1) goto LAB_003e47ec; + } + *param_7 = *param_7 | 2; +LAB_003e47ec: + auVar9._8_8_ = param_3 & 0xffffffff00000000 | uVar6; + auVar9._0_8_ = plVar7; + return auVar9; +} + + +================================================================== + +### FUNC 003e48b8 (704 bytes) name=FUN_003e48b8 + +undefined1 [16] +FUN_003e48b8(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long lVar5; + ulong uVar6; + long *plVar7; + int iVar8; + undefined1 auVar9 [16]; + undefined4 local_c8; + int local_c4; + undefined8 local_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + lVar4 = FUN_003e0454(param_6 + 0xd0); + FUN_003de994(param_6 + 0xd0); + lVar5 = *(long *)(lVar4 + 0x10); + local_b0 = *(undefined8 *)(lVar5 + 0x138); + local_b8 = *(undefined8 *)(lVar5 + 0x130); + local_c0 = *(undefined8 *)(lVar5 + 0x128); + local_a8 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x140); + local_a0 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x148); + local_98 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x150); + local_90 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x158); + local_88 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x160); + local_80 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x168); + local_78 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x170); + local_70 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x178); + local_68 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x180); + local_60 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 200); + local_58 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xd0); + local_50 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xd8); + local_48 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xe0); + local_40 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xe8); + local_38 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xf0); + local_30 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0xf8); + local_28 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x100); + local_20 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x108); + local_18 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x110); + local_10 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x118); + local_c4 = 0; + local_8 = *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x120); + auVar9 = FUN_003e4244(param_1,param_2,param_3,param_4,param_5,&local_c8,&local_c0,0xc,param_6, + &local_c4); + plVar7 = auVar9._0_8_; + uVar6 = auVar9._8_8_ & 0xffffffff; + if (local_c4 == 0) { + *(undefined4 *)(param_8 + 0x10) = local_c8; + } + else { + *param_7 = *param_7 | 4; + } + if (plVar7 == (long *)0x0) { +LAB_003e4aec: + plVar7 = (long *)0x0; + iVar8 = 1; + if (param_4 != (long *)0x0) goto LAB_003e4a98; + } + else { + if (auVar9._8_4_ == -1) { + if ((byte *)plVar7[2] < (byte *)plVar7[3]) { + uVar6 = (ulong)*(byte *)plVar7[2]; + } + else { + uVar3 = (**(code **)(*plVar7 + 0x48))(); + if (uVar3 == 0xffffffff) goto LAB_003e4aec; + uVar6 = (ulong)uVar3; + } + } + iVar8 = 0; + if (param_4 == (long *)0x0) goto LAB_003e4aac; +LAB_003e4a98: + iVar1 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[2] < (ulong)param_4[3]) { + iVar1 = 0; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + iVar1 = 1; + if (iVar2 != -1) { + iVar1 = 0; + } + } + } + if (iVar8 != iVar1) goto LAB_003e4aac; + } + *param_7 = *param_7 | 2; +LAB_003e4aac: + auVar9._8_8_ = param_3 & 0xffffffff00000000 | uVar6; + auVar9._0_8_ = plVar7; + return auVar9; +} + + +================================================================== + +### FUNC 003e4b78 (4064 bytes) name=FUN_003e4b78 + +undefined1 [16] +FUN_003e4b78(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8,char *param_9) + +{ + undefined1 auVar1 [16]; + char cVar2; + char cVar4; + uint uVar5; + byte bVar3; + int iVar6; + int iVar7; + long lVar8; + long *plVar9; + size_t sVar10; + ulong uVar11; + long lVar12; + long *plVar13; + ulong uVar14; + undefined1 auVar15 [12]; + undefined1 auVar16 [12]; + long *local_90; + undefined8 local_88; + undefined1 local_80 [12]; + undefined4 uStack_74; + uint local_68; + int local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + local_80._8_4_ = (undefined4)param_3; + uStack_74 = (undefined4)((ulong)param_3 >> 0x20); + local_90 = param_4; + local_88 = param_5; + local_80._0_8_ = param_2; + lVar8 = FUN_003e0454(param_6 + 0xd0); + uVar14 = 0; + plVar9 = (long *)FUN_003de994(param_6 + 0xd0); + sVar10 = strlen(param_9); + auVar16._8_4_ = local_80._8_4_; + auVar16._0_8_ = local_80._0_8_; + local_68 = 0; +LAB_003e4c1c: + local_80._8_4_ = auVar16._8_4_; + plVar13 = auVar16._0_8_; + if (plVar13 == (long *)0x0) { +LAB_003e4d04: + if (local_90 == (long *)0x0) { +LAB_003e4d48: + if ((local_68 != 0) || (uVar14 != sVar10)) { + *param_7 = *param_7 | 4; + } + auVar1._8_4_ = local_80._8_4_; + auVar1._0_8_ = local_80._0_8_; + auVar1._12_4_ = uStack_74; + return auVar1; + } + iVar6 = 1; +joined_r0x003e4d1c: + iVar7 = 0; + if ((int)local_88 == -1) { + if ((byte *)local_90[2] < (byte *)local_90[3]) { + uVar5 = (uint)*(byte *)local_90[2]; + } + else { + uVar5 = (**(code **)(*local_90 + 0x48))(); + if (uVar5 == 0xffffffff) { + local_90 = (long *)0x0; + iVar7 = 1; + goto LAB_003e4c48; + } + } + local_88 = CONCAT44(local_88._4_4_,uVar5); + if (iVar6 == 0) goto LAB_003e4d48; + } + else { +LAB_003e4c48: + if (iVar6 == iVar7) goto LAB_003e4d48; + } + } + else { + uVar5 = local_80._8_4_; + if (local_80._8_4_ == 0xffffffff) { + if ((byte *)plVar13[2] < (byte *)plVar13[3]) { + uVar5 = (uint)*(byte *)plVar13[2]; + } + else { + uVar5 = (**(code **)(*plVar13 + 0x48))(plVar13); + if (uVar5 == 0xffffffff) { + local_80._0_8_ = (long *)0x0; + goto LAB_003e4d04; + } + } + } + local_80._8_4_ = uVar5; + iVar6 = 0; + if (local_90 != (long *)0x0) { + goto joined_r0x003e4d1c; + } + } + if ((sVar10 <= uVar14) || (local_68 != 0)) goto LAB_003e4d48; + bVar3 = param_9[uVar14]; + cVar2 = *(char *)((long)plVar9 + (long)(int)(uint)bVar3 + 0x139); + if (cVar2 == '\0') { + cVar2 = (**(code **)(*plVar9 + 0x40))(plVar9,bVar3,0); + if (cVar2 != '\0') { + *(char *)((long)plVar9 + (long)(int)(uint)bVar3 + 0x139) = cVar2; + goto LAB_003e4c74; + } +LAB_003e4d90: + bVar3 = param_9[uVar14]; + if ((long *)local_80._0_8_ == (long *)0x0) { +LAB_003e4ed0: + auVar15._4_8_ = 0; + auVar15._0_4_ = local_80._8_4_; + auVar16 = auVar15 << 0x40; + plVar13 = (long *)0x0; + if (bVar3 == 0xff) { + uVar14 = uVar14 + 1; + } + else { +LAB_003e4db4: + auVar16._8_4_ = local_80._8_4_; + auVar16._0_8_ = plVar13; + uVar14 = uVar14 + 1; + local_68 = local_68 | 4; + } + } + else { + if (local_80._8_4_ == 0xffffffff) { + if (*(byte **)(local_80._0_8_ + 0x10) < *(byte **)(local_80._0_8_ + 0x18)) { + local_80._8_4_ = ZEXT14(**(byte **)(local_80._0_8_ + 0x10)); + uVar5 = local_80._8_4_; + goto joined_r0x003e4e5c; + } + uVar5 = (**(code **)(*(long *)local_80._0_8_ + 0x48))(); + auVar16._8_4_ = uVar5; + auVar16._0_8_ = local_80._0_8_; + if (uVar5 == 0xffffffff) { + local_80._0_8_ = (long *)0x0; + goto LAB_003e4ed0; + } + plVar13 = (long *)local_80._0_8_; + local_80._8_4_ = uVar5; + if ((uint)bVar3 != (uVar5 & 0xff)) goto LAB_003e4db4; + uVar11 = uVar14; + if ((long *)local_80._0_8_ == (long *)0x0) goto LAB_003e4ccc; + uVar11 = *(ulong *)(local_80._0_8_ + 0x10); + if (uVar11 < *(ulong *)(local_80._0_8_ + 0x18)) goto LAB_003e4e70; + } + else { + uVar5 = local_80._8_4_ & 0xff; +joined_r0x003e4e5c: + plVar13 = (long *)local_80._0_8_; + if (bVar3 != uVar5) goto LAB_003e4db4; + uVar11 = *(ulong *)(local_80._0_8_ + 0x10); + if (uVar11 < *(ulong *)(local_80._0_8_ + 0x18)) { +LAB_003e4e70: + *(ulong *)(local_80._0_8_ + 0x10) = uVar11 + 1; + goto LAB_003e4e7c; + } + } + (**(code **)(*(long *)local_80._0_8_ + 0x50))(); +LAB_003e4e7c: + uVar14 = uVar14 + 1; + auVar16._8_4_ = 0xffffffff; + auVar16._0_8_ = local_80._0_8_; + } + goto LAB_003e4c1c; + } +LAB_003e4c74: + if (cVar2 != '%') goto LAB_003e4d90; + uVar11 = uVar14 + 1; + bVar3 = param_9[uVar11]; + cVar2 = *(char *)((long)plVar9 + (long)(int)(uint)bVar3 + 0x139); + if (cVar2 == '\0') { + cVar2 = (**(code **)(*plVar9 + 0x40))(plVar9); + if (cVar2 != '\0') { + *(char *)((long)plVar9 + (long)(int)(uint)bVar3 + 0x139) = cVar2; + goto LAB_003e4c90; + } + goto LAB_003e4cc0; + } +LAB_003e4c90: + local_64 = 0; + if ((cVar2 == 'O') || (cVar2 == 'E')) { + uVar11 = uVar14 + 2; + bVar3 = param_9[uVar11]; + cVar2 = *(char *)((long)plVar9 + (long)(int)(uint)bVar3 + 0x139); + if (cVar2 != '\0') goto LAB_003e4ca8; + cVar2 = (**(code **)(*plVar9 + 0x40))(plVar9); + if (cVar2 != '\0') { + *(char *)((long)plVar9 + (long)(int)(uint)bVar3 + 0x139) = cVar2; + goto LAB_003e4ca8; + } +switchD_003e4ce4_caseD_45: +LAB_003e4cc0: + auVar16._8_4_ = local_80._8_4_; + auVar16._0_8_ = local_80._0_8_; + local_68 = local_68 | 4; +LAB_003e4ccc: + local_80._0_8_ = auVar16._0_8_; + uVar14 = uVar11 + 1; + goto LAB_003e4c1c; + } +LAB_003e4ca8: + switch(cVar2) { + case 'A': + lVar12 = *(long *)(lVar8 + 0x10); + local_60 = *(undefined8 *)(lVar12 + 0x58); + local_58 = *(undefined8 *)(lVar12 + 0x60); + uVar14 = uVar11 + 1; + local_50 = *(undefined8 *)(lVar12 + 0x68); + local_48 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x70); + local_40 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x78); + local_38 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x80); + local_30 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x88); + /* catch() { ... } // from try @ 003e2db4 with catch @ 003e5600 + catch() { ... } // from try @ 003e3544 with catch @ 003e5600 + catch() { ... } // from try @ 003e3708 with catch @ 003e5600 + catch() { ... } // from try @ 003e46d0 with catch @ 003e5600 + catch() { ... } // from try @ 003e56c0 with catch @ 003e5600 */ + auVar16 = FUN_003e3ed0(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x18,&local_60,7,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'B': + lVar12 = *(long *)(lVar8 + 0x10); + uVar14 = uVar11 + 1; + local_60 = *(undefined8 *)(lVar12 + 200); + local_58 = *(undefined8 *)(lVar12 + 0xd0); + local_50 = *(undefined8 *)(lVar12 + 0xd8); + local_48 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xe0); + local_40 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xe8); + local_38 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xf0); + local_30 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xf8); + local_28 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x100); + local_20 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x108); + local_18 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x110); + /* try { // try from 003e552c to 004e554b has its CatchHandler @ 003e36fc */ + local_10 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x118); + local_8 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x120); + auVar16 = FUN_003e3ed0(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x10,&local_60,0xc,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'C': + case 'Y': + case 'y': + /* catch() { ... } // from try @ 003e3114 with catch @ 003e591c */ + /* catch() { ... } // from try @ 003e30e4 with catch @ 003e592c + catch() { ... } // from try @ 003e311c with catch @ 003e592c + catch() { ... } // from try @ 003e3290 with catch @ 003e592c + catch() { ... } // from try @ 003e3958 with catch @ 003e592c + catch() { ... } // from try @ 003e422c with catch @ 003e592c */ + /* catch() { ... } // from try @ 003e588c with catch @ 003e5934 */ + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_64,0,9999,4,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + if (local_68 == 0) { + if (local_64 < 0) { + iVar6 = local_64 + 100; + } + else { + iVar6 = local_64 + -0x76c; + } + uVar14 = uVar11 + 1; + /* try { // try from 003e597c to 004e597f has its CatchHandler @ 003e59d8 */ + *(int *)(param_8 + 0x14) = iVar6; + goto LAB_003e4c1c; + } + break; + case 'D': + /* try { // try from 003e5894 to 004e58cb has its CatchHandler @ 003e59d8 */ + if ((char)plVar9[7] == '\x01') { + local_60 = DAT_00479960; + /* WARNING: Ignoring partial resolution of indirect */ + local_58._0_1_ = DAT_00479968; + } + else { + if ((char)plVar9[7] == '\0') { + /* try { // try from 003e5a5c to 004e5a7b has its CatchHandler @ 003e6694 */ + FUN_003d14e0(plVar9); + } + (**(code **)(*plVar9 + 0x38))(plVar9,&DAT_00479960,&DAT_00479969,&local_60); + } + uVar14 = uVar11 + 1; + auVar16 = FUN_003e4b78(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8,&local_60); + local_80._0_8_ = auVar16._0_8_; + /* try { // try from 003e5904 to 004e5907 has its CatchHandler @ 003e59e0 */ + /* catch() { ... } // from try @ 003e2e8c with catch @ 003e590c */ + goto LAB_003e4c1c; + default: + goto switchD_003e4ce4_caseD_45; + case 'H': + /* try { // try from 003e5850 to 004e5853 has its CatchHandler @ 003e59d8 */ + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 8,0,0x17,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + /* try { // try from 003e588c to 004e588f has its CatchHandler @ 003e5934 */ + goto LAB_003e4c1c; + case 'I': + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 8,1,0xc,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'M': + /* catch() { ... } // from try @ 003e2fbc with catch @ 003e5788 */ + /* try { // try from 003e57a0 to 004e57a3 has its CatchHandler @ 003e2d40 */ + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 4,0,0x3b,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'R': + if ((char)plVar9[7] == '\x01') { + /* WARNING: Ignoring partial resolution of indirect */ + local_60._0_4_ = DAT_00479970; + } + else { + if ((char)plVar9[7] == '\0') { + FUN_003d14e0(plVar9); + } + (**(code **)(*plVar9 + 0x38))(plVar9,&DAT_00479970,&DAT_00479976,&local_60); + } + uVar14 = uVar11 + 1; + auVar16 = FUN_003e4b78(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8,&local_60); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'S': + /* try { // try from 003e56c0 to 004e56c3 has its CatchHandler @ 003e5600 */ + /* try { // try from 003e56d0 to 004e56d3 has its CatchHandler @ 003e36fc */ + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8,0,0x3d,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'T': + if ((char)plVar9[7] == '\x01') { + local_60 = DAT_00479978; + /* WARNING: Ignoring partial resolution of indirect */ + local_58._0_1_ = DAT_00479980; + } + else { + if ((char)plVar9[7] == '\0') { + FUN_003d14e0(plVar9); + } + (**(code **)(*plVar9 + 0x38))(plVar9,&DAT_00479978,&DAT_00479981,&local_60); + } + uVar14 = uVar11 + 1; + auVar16 = FUN_003e4b78(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8,&local_60); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'X': + uVar14 = uVar11 + 1; + auVar16 = FUN_003e4b78(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8, + *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x20)); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'Z': + bVar3 = FUN_003e3e48(local_80); + if ((*(byte *)(plVar9[6] + (ulong)bVar3) & 1) == 0) goto LAB_003e4cc0; + local_80 = FUN_003e3ed0(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_60,PTR_PTR_005018c8,0xe,param_6,&local_68); + iVar6 = FUN_003e3e48(local_80); + iVar7 = FUN_003e3e48(&local_90); + auVar16 = local_80; + if ((((iVar6 == -1) != (iVar7 == -1)) && (local_68 == 0)) && ((int)local_60 == 0)) { + cVar2 = FUN_003e3e48(local_80); + if ((char)plVar9[7] == '\0') { + cVar4 = FUN_003dcafc(plVar9,0x2d); + } + else { + cVar4 = *(char *)((long)plVar9 + 0x66); + } + auVar16 = local_80; + if (cVar2 != cVar4) { + cVar2 = FUN_003e3e48(local_80); + if ((char)plVar9[7] == '\0') { + cVar4 = FUN_003dcafc(plVar9,0x2b); + auVar16 = local_80; + } + else { + cVar4 = *(char *)((long)plVar9 + 100); + auVar16 = local_80; + } + if (cVar2 != cVar4) break; + } + local_80._8_4_ = auVar16._8_4_; + local_80._0_8_ = auVar16._0_8_; + auVar15 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_60,0,0x17,2,param_6,&local_68); + local_80 = auVar16; + local_80 = auVar15; + auVar16 = FUN_003dec14(param_1,auVar15._0_8_,CONCAT44(uStack_74,auVar15._8_4_),local_90, + local_88,&local_60,0,0x3b,2,param_6,&local_68); + } + break; + case 'a': + lVar12 = *(long *)(lVar8 + 0x10); + local_60 = *(undefined8 *)(lVar12 + 0x90); + local_58 = *(undefined8 *)(lVar12 + 0x98); + uVar14 = uVar11 + 1; + local_50 = *(undefined8 *)(lVar12 + 0xa0); + local_48 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xa8); + local_40 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xb0); + local_38 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xb8); + local_30 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0xc0); + auVar16 = FUN_003e3ed0(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x18,&local_60,7,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'b': + case 'h': + lVar12 = *(long *)(lVar8 + 0x10); + uVar14 = uVar11 + 1; + local_60 = *(undefined8 *)(lVar12 + 0x128); + local_58 = *(undefined8 *)(lVar12 + 0x130); + local_50 = *(undefined8 *)(lVar12 + 0x138); + local_48 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x140); + local_40 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x148); + local_38 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x150); + local_30 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x158); + local_28 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x160); + local_20 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x168); + local_18 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x170); + local_10 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x178); + local_8 = *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x180); + auVar16 = FUN_003e3ed0(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x10,&local_60,0xc,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'c': + uVar14 = uVar11 + 1; + auVar16 = FUN_003e4b78(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8, + *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x30)); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'd': + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0xc,1,0x1f,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + case 'e': + bVar3 = FUN_003e3e48(local_80); + if ((*(byte *)(plVar9[6] + (ulong)bVar3) >> 3 & 1) == 0) { + /* catch() { ... } // from try @ 003e2e5c with catch @ 003e59d8 + catch() { ... } // from try @ 003e2e94 with catch @ 003e59d8 + catch() { ... } // from try @ 003e2f30 with catch @ 003e59d8 + catch() { ... } // from try @ 003e2fc4 with catch @ 003e59d8 + catch() { ... } // from try @ 003e345c with catch @ 003e59d8 + catch() { ... } // from try @ 003e36e8 with catch @ 003e59d8 + catch() { ... } // from try @ 003e4558 with catch @ 003e59d8 + catch() { ... } // from try @ 003e5850 with catch @ 003e59d8 + catch() { ... } // from try @ 003e5894 with catch @ 003e59d8 + catch() { ... } // from try @ 003e597c with catch @ 003e59d8 */ + /* catch() { ... } // from try @ 003e5904 with catch @ 003e59e0 */ + /* catch() { ... } // from try @ 003e5a38 with catch @ 003e5a00 + catch() { ... } // from try @ 003e5d74 with catch @ 003e5a00 + catch() { ... } // from try @ 003e643c with catch @ 003e5a00 + catch() { ... } // from try @ 003e6658 with catch @ 003e5a00 */ + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0xc,10,0x1f,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + } + else { + if ((long *)local_80._0_8_ != (long *)0x0) { + if (*(ulong *)(local_80._0_8_ + 0x10) < *(ulong *)(local_80._0_8_ + 0x18)) { + *(ulong *)(local_80._0_8_ + 0x10) = *(ulong *)(local_80._0_8_ + 0x10) + 1; + } + else { + FUN_003dcae0(); + } + local_80._8_4_ = 0xffffffff; + } + uVar14 = uVar11 + 1; + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0xc,1,9,1,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + } + goto LAB_003e4c1c; + case 'm': + auVar16 = FUN_003dec14(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_64,1,0xc,2,param_6,&local_68); + local_80._0_8_ = auVar16._0_8_; + if (local_68 != 0) goto LAB_003e4ccc; + uVar14 = uVar11 + 1; + *(int *)(param_8 + 0x10) = local_64 + -1; + goto LAB_003e4c1c; + case 'n': + uVar14 = FUN_003e3e48(local_80); + cVar2 = *(char *)((long)plVar9 + (uVar14 & 0xff) + 0x139); + if (cVar2 == '\0') { + /* try { // try from 003e5a38 to 004e5a57 has its CatchHandler @ 003e5a00 */ + cVar2 = (**(code **)(*plVar9 + 0x40))(plVar9,uVar14 & 0xffffffff,0); + if (cVar2 == '\0') goto LAB_003e4cc0; + *(char *)((long)plVar9 + (uVar14 & 0xff) + 0x139) = cVar2; + } + if (cVar2 != '\n') goto LAB_003e4cc0; +LAB_003e5434: + auVar16._8_4_ = local_80._8_4_; + auVar16._0_8_ = local_80._0_8_; + if ((long *)local_80._0_8_ == (long *)0x0) goto LAB_003e4ccc; + uVar14 = uVar11; + if (*(ulong *)(local_80._0_8_ + 0x10) < *(ulong *)(local_80._0_8_ + 0x18)) { + *(ulong *)(local_80._0_8_ + 0x10) = *(ulong *)(local_80._0_8_ + 0x10) + 1; + } + else { + FUN_003dcae0(local_80._0_8_); + /* try { // try from 003e5b28 to 004e5b2b has its CatchHandler @ 003e66ec */ + } + goto LAB_003e4e7c; + case 't': + uVar14 = FUN_003e3e48(local_80); + cVar2 = *(char *)((long)plVar9 + (uVar14 & 0xff) + 0x139); + if (cVar2 == '\0') { + cVar2 = (**(code **)(*plVar9 + 0x40))(plVar9,uVar14 & 0xffffffff,0); + if (cVar2 == '\0') goto LAB_003e4cc0; + /* try { // try from 003e59c0 to 004e59c3 has its CatchHandler @ 003e59c8 */ + *(char *)((long)plVar9 + (uVar14 & 0xff) + 0x139) = cVar2; + /* catch() { ... } // from try @ 003e59c0 with catch @ 003e59c8 */ + } + if (cVar2 == '\t') goto LAB_003e5434; + goto LAB_003e4cc0; + case 'x': + uVar14 = uVar11 + 1; + auVar16 = FUN_003e4b78(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8, + *(undefined8 *)(*(long *)(lVar8 + 0x10) + 0x10)); + local_80._0_8_ = auVar16._0_8_; + goto LAB_003e4c1c; + } + local_80._0_8_ = auVar16._0_8_; + uVar14 = uVar11 + 1; + goto LAB_003e4c1c; +} + + +================================================================== + +### FUNC 003e5b58 (364 bytes) name=FUN_003e5b58 + +undefined1 [16] +FUN_003e5b58(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,undefined8 param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long *plVar5; + ulong uVar6; + int iVar7; + undefined1 auVar8 [16]; + + /* try { // try from 003e5b58 to 004e5b5b has its CatchHandler @ 003e6684 */ + /* try { // try from 003e5b60 to 004e5bef has its CatchHandler @ 003e66ec */ + lVar4 = FUN_003e0454(param_6 + 0xd0); + auVar8 = FUN_003e4b78(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8, + *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x20)); + plVar5 = auVar8._0_8_; + uVar6 = auVar8._8_8_ & 0xffffffff; + if (plVar5 == (long *)0x0) { +LAB_003e5c38: + plVar5 = (long *)0x0; + /* try { // try from 003e5c3c to 004e5c63 has its CatchHandler @ 003e665c */ + iVar7 = 1; + if (param_4 != (long *)0x0) goto LAB_003e5bf8; + } + else { + if (auVar8._8_4_ == -1) { + if ((byte *)plVar5[2] < (byte *)plVar5[3]) { + uVar6 = (ulong)*(byte *)plVar5[2]; + } + else { + uVar3 = (**(code **)(*plVar5 + 0x48))(); + if (uVar3 == 0xffffffff) goto LAB_003e5c38; + uVar6 = (ulong)uVar3; + } + } + iVar7 = 0; + if (param_4 == (long *)0x0) goto LAB_003e5c0c; +LAB_003e5bf8: + iVar1 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[2] < (ulong)param_4[3]) { + iVar1 = 0; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + iVar1 = 1; + if (iVar2 != -1) { + iVar1 = 0; + } + } + } + if (iVar7 != iVar1) goto LAB_003e5c0c; + } + *param_7 = *param_7 | 2; +LAB_003e5c0c: + auVar8._8_8_ = param_3 & 0xffffffff00000000 | uVar6; + auVar8._0_8_ = plVar5; + return auVar8; +} + + +================================================================== + +### FUNC 003e5cc4 (364 bytes) name=FUN_003e5cc4 + +undefined1 [16] +FUN_003e5cc4(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,undefined8 param_8) + +{ + int iVar1; + int iVar2; + uint uVar3; + long lVar4; + long *plVar5; + ulong uVar6; + int iVar7; + undefined1 auVar8 [16]; + + /* try { // try from 003e5cd4 to 004e5cd7 has its CatchHandler @ 003e66ec */ + lVar4 = FUN_003e0454(param_6 + 0xd0); + auVar8 = FUN_003e4b78(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8, + *(undefined8 *)(*(long *)(lVar4 + 0x10) + 0x10)); + plVar5 = auVar8._0_8_; + /* try { // try from 003e5d48 to 004e5d4b has its CatchHandler @ 003e6694 */ + uVar6 = auVar8._8_8_ & 0xffffffff; + if (plVar5 == (long *)0x0) { +LAB_003e5da4: + plVar5 = (long *)0x0; + iVar7 = 1; + if (param_4 != (long *)0x0) goto LAB_003e5d64; + } + else { + if (auVar8._8_4_ == -1) { + if ((byte *)plVar5[2] < (byte *)plVar5[3]) { + uVar6 = (ulong)*(byte *)plVar5[2]; + } + else { + uVar3 = (**(code **)(*plVar5 + 0x48))(); + if (uVar3 == 0xffffffff) goto LAB_003e5da4; + uVar6 = (ulong)uVar3; + } + } + iVar7 = 0; + if (param_4 == (long *)0x0) goto LAB_003e5d78; +LAB_003e5d64: + iVar1 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[2] < (ulong)param_4[3]) { + iVar1 = 0; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + iVar1 = 1; + if (iVar2 != -1) { + iVar1 = 0; + } + } + } + /* try { // try from 003e5d74 to 004e5dc7 has its CatchHandler @ 003e5a00 */ + if (iVar7 != iVar1) goto LAB_003e5d78; + } + *param_7 = *param_7 | 2; +LAB_003e5d78: + auVar8._8_8_ = param_3 & 0xffffffff00000000 | uVar6; + auVar8._0_8_ = plVar5; + return auVar8; +} + + +================================================================== + +### FUNC 003e5e30 (1096 bytes) name=FUN_003e5e30 + +/* WARNING: Removing unreachable block (ram,0x003e6920) */ +/* WARNING: Removing unreachable block (ram,0x003e6aac) */ +/* WARNING: Removing unreachable block (ram,0x003e6ac0) */ +/* WARNING: Removing unreachable block (ram,0x003e6ac8) */ +/* WARNING: Removing unreachable block (ram,0x003e6aec) */ +/* WARNING: Removing unreachable block (ram,0x003e6ad8) */ +/* WARNING: Removing unreachable block (ram,0x003e6ae4) */ +/* WARNING: Removing unreachable block (ram,0x003e6a34) */ +/* WARNING: Removing unreachable block (ram,0x003e6a94) */ +/* WARNING: Removing unreachable block (ram,0x003e6a3c) */ +/* WARNING: Removing unreachable block (ram,0x003e6a40) */ +/* WARNING: Removing unreachable block (ram,0x003e6a50) */ +/* WARNING: Removing unreachable block (ram,0x003e6a78) */ +/* WARNING: Removing unreachable block (ram,0x003e6a84) */ +/* WARNING: Removing unreachable block (ram,0x003e6a90) */ +/* WARNING: Removing unreachable block (ram,0x003e6410) */ +/* WARNING: Removing unreachable block (ram,0x003e68d0) */ +/* WARNING: Removing unreachable block (ram,0x003e641c) */ +/* WARNING: Removing unreachable block (ram,0x003e6434) */ +/* WARNING: Removing unreachable block (ram,0x003e643c) */ +/* WARNING: Removing unreachable block (ram,0x003e68dc) */ +/* WARNING: Removing unreachable block (ram,0x003e6a9c) */ +/* WARNING: Removing unreachable block (ram,0x003e61ac) */ +/* WARNING: Removing unreachable block (ram,0x003e61b0) */ +/* WARNING: Removing unreachable block (ram,0x003e6aa8) */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003e5e30(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,long param_6,uint *param_7,undefined8 param_8) + +{ + byte bVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + int iVar5; + int iVar6; + long lVar7; + undefined *puVar8; + long lVar9; + undefined1 auVar10 [16]; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + undefined1 auStack_28 [8]; + undefined1 auStack_20 [8]; + undefined4 local_18; + undefined *local_10; + undefined *local_8; + + local_50 = param_4; + uStack_48 = param_5; + local_40 = param_2; + local_38 = param_3; + FUN_003de994(param_6 + 0xd0); + lVar7 = FUN_003e3b44(auStack_28,param_6 + 0xd0); + local_10 = PTR_DAT_00501f30 + 0x18; + if (*(char *)(lVar7 + 0x20) != '\0') { + FUN_00410ed8(&local_10,0x20); + } + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,0x20); + local_18 = *(undefined4 *)(lVar7 + 0x60); + lVar9 = 0; + bVar1 = (byte)local_18; + while( true ) { + if (bVar1 < 5) { + /* WARNING: Could not recover jumptable at 0x003e5f64. Too many branches */ + /* WARNING: Treating indirect jump as call */ + auVar10 = (*(code *)(&LAB_003e5f68 + (long)*(short *)(&DAT_00479404 + (ulong)bVar1 * 2) * 4)) + (); + return auVar10; + } + if (3 < (int)lVar9 + 1) break; + bVar1 = *(byte *)((long)&local_18 + lVar9 + 1); + lVar9 = lVar9 + 1; + } + if ((1 < *(ulong *)(local_8 + -0x18)) && (lVar9 = FUN_004123cc(&local_8,0x30,0), lVar9 != 0)) { + if (lVar9 == -1) { + lVar9 = *(long *)(local_8 + -0x18) + -1; + } + FUN_00412dc4(&local_8,0,lVar9); + } + if (*(long *)(local_10 + -0x18) != 0) { + /* try { // try from 003e6920 to 004e6923 has its CatchHandler @ 003e6d5c */ + FUN_004116e0(&local_10,0); + cVar4 = FUN_003ee0cc(*(undefined8 *)(lVar7 + 0x10),*(undefined8 *)(lVar7 + 0x18),&local_10); + if (cVar4 == '\0') { + *param_7 = *param_7 | 4; + } + } + FUN_00411a24(param_8,&local_8); + iVar5 = FUN_003e3e48(&local_40); + iVar6 = FUN_003e3e48(&local_50); + uVar3 = local_38; + uVar2 = local_40; + /* try { // try from 003e61e4 to 004e61e7 has its CatchHandler @ 003e66e4 */ + if ((iVar6 == -1) == (iVar5 == -1)) { + *param_7 = *param_7 | 2; + if (local_8 + -0x18 != PTR_DAT_00501f30) goto LAB_003e6b40; +LAB_003e6200: + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_003e6214; + } + else { + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003e6200; +LAB_003e6b40: + FUN_003dca9c(local_8 + -0x18,auStack_20); + /* try { // try from 003e6b50 to 004e6b53 has its CatchHandler @ 003e6db4 */ + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_003e6214; + } + FUN_003dca9c(puVar8,&local_8); +LAB_003e6214: + auVar10._8_8_ = uVar3; + auVar10._0_8_ = uVar2; + return auVar10; +} + + +================================================================== + +### FUNC 003e6bbc (1096 bytes) name=FUN_003e6bbc + +/* WARNING: Removing unreachable block (ram,0x003e76ac) */ +/* WARNING: Removing unreachable block (ram,0x003e7838) */ +/* WARNING: Removing unreachable block (ram,0x003e784c) */ +/* WARNING: Removing unreachable block (ram,0x003e7854) */ +/* WARNING: Removing unreachable block (ram,0x003e7878) */ +/* WARNING: Removing unreachable block (ram,0x003e7864) */ +/* WARNING: Removing unreachable block (ram,0x003e7870) */ +/* WARNING: Removing unreachable block (ram,0x003e77c0) */ +/* WARNING: Removing unreachable block (ram,0x003e7820) */ +/* WARNING: Removing unreachable block (ram,0x003e77c8) */ +/* WARNING: Removing unreachable block (ram,0x003e77cc) */ +/* WARNING: Removing unreachable block (ram,0x003e77dc) */ +/* WARNING: Removing unreachable block (ram,0x003e7804) */ +/* WARNING: Removing unreachable block (ram,0x003e7810) */ +/* WARNING: Removing unreachable block (ram,0x003e781c) */ +/* WARNING: Removing unreachable block (ram,0x003e719c) */ +/* WARNING: Removing unreachable block (ram,0x003e765c) */ +/* WARNING: Removing unreachable block (ram,0x003e71a8) */ +/* WARNING: Removing unreachable block (ram,0x003e71c0) */ +/* WARNING: Removing unreachable block (ram,0x003e71c8) */ +/* WARNING: Removing unreachable block (ram,0x003e7668) */ +/* WARNING: Removing unreachable block (ram,0x003e7828) */ +/* WARNING: Removing unreachable block (ram,0x003e6f38) */ +/* WARNING: Removing unreachable block (ram,0x003e6f3c) */ +/* WARNING: Removing unreachable block (ram,0x003e7834) */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003e6bbc(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,long param_6,uint *param_7,undefined8 param_8) + +{ + byte bVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + int iVar5; + int iVar6; + long lVar7; + undefined *puVar8; + long lVar9; + undefined1 auVar10 [16]; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + undefined1 auStack_28 [8]; + undefined1 auStack_20 [8]; + undefined4 local_18; + undefined *local_10; + undefined *local_8; + + /* try { // try from 003e6bc4 to 004e6bc7 has its CatchHandler @ 003e6dac */ + local_50 = param_4; + uStack_48 = param_5; + local_40 = param_2; + local_38 = param_3; + FUN_003de994(param_6 + 0xd0); + lVar7 = FUN_003e3c54(auStack_28,param_6 + 0xd0); + /* try { // try from 003e6c38 to 004e6c93 has its CatchHandler @ 003e6720 */ + local_10 = PTR_DAT_00501f30 + 0x18; + if (*(char *)(lVar7 + 0x20) != '\0') { + FUN_00410ed8(&local_10,0x20); + } + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,0x20); + local_18 = *(undefined4 *)(lVar7 + 0x60); + lVar9 = 0; + bVar1 = (byte)local_18; + /* try { // try from 003e6c9c to 004e6c9f has its CatchHandler @ 003e6dac */ + /* try { // try from 003e6ca8 to 004e6cab has its CatchHandler @ 003e6db4 */ + /* try { // try from 003e6cb4 to 004e6cb7 has its CatchHandler @ 003e6cfc */ + /* try { // try from 003e6cc0 to 004e6cc3 has its CatchHandler @ 003e6d5c */ + /* try { // try from 003e6ccc to 004e6ccf has its CatchHandler @ 003e6da4 */ + while( true ) { + if (bVar1 < 5) { + /* try { // try from 003e6ce0 to 004e6ce3 has its CatchHandler @ 003e6db4 */ + /* WARNING: Could not recover jumptable at 0x003e6cf0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + auVar10 = (*(code *)(&UNK_003e6cf4 + (long)*(short *)(&DAT_00479410 + (ulong)bVar1 * 2) * 4)) + (); + return auVar10; + } + if (3 < (int)lVar9 + 1) break; + /* catch() { ... } // from try @ 003e6e20 with catch @ 003e6dd0 + catch() { ... } // from try @ 003e72dc with catch @ 003e6dd0 + catch() { ... } // from try @ 003e7314 with catch @ 003e6dd0 + catch() { ... } // from try @ 003e7420 with catch @ 003e6dd0 */ + bVar1 = *(byte *)((long)&local_18 + lVar9 + 1); + lVar9 = lVar9 + 1; + } + if ((1 < *(ulong *)(local_8 + -0x18)) && (lVar9 = FUN_004123cc(&local_8,0x30,0), lVar9 != 0)) { + if (lVar9 == -1) { + /* try { // try from 003e7180 to 004e7183 has its CatchHandler @ 003e7424 */ + lVar9 = *(long *)(local_8 + -0x18) + -1; + } + FUN_00412dc4(&local_8,0,lVar9); + } + if (*(long *)(local_10 + -0x18) != 0) { + FUN_004116e0(&local_10,0); + cVar4 = FUN_003ee0cc(*(undefined8 *)(lVar7 + 0x10),*(undefined8 *)(lVar7 + 0x18),&local_10); + if (cVar4 == '\0') { + *param_7 = *param_7 | 4; + } + } + FUN_00411a24(param_8,&local_8); + iVar5 = FUN_003e3e48(&local_40); + iVar6 = FUN_003e3e48(&local_50); + uVar3 = local_38; + uVar2 = local_40; + if ((iVar6 == -1) == (iVar5 == -1)) { + *param_7 = *param_7 | 2; + if (local_8 + -0x18 != PTR_DAT_00501f30) goto LAB_003e78c4; +LAB_003e6f8c: + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_003e6fa0; + } + else { + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003e6f8c; +LAB_003e78c4: + /* try { // try from 003e78c8 to 004e7aaf has its CatchHandler @ 003e94bc */ + FUN_003dca9c(local_8 + -0x18,auStack_20); + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_003e6fa0; + } + FUN_003dca9c(puVar8,&local_8); +LAB_003e6fa0: + auVar10._8_8_ = uVar3; + auVar10._0_8_ = uVar2; + return auVar10; +} + + +================================================================== + +### FUNC 003e7940 (256 bytes) name=FUN_003e7940 + +undefined1 [16] +FUN_003e7940(undefined8 param_1,undefined8 param_2,ulong param_3,undefined8 param_4, + undefined8 param_5,char param_6,undefined8 param_7,_Ios_Iostate *param_8, + longdouble *param_9) + +{ + char *pcVar1; + char cVar2; + bool bVar3; + undefined *puVar4; + int *piVar5; + int iVar6; + undefined1 auVar7 [16]; + int *local_8; + + puVar4 = PTR_DAT_00501f30; + pcVar1 = PTR_DAT_00501f30 + 0x18; + if (param_6 == '\0') { + auVar7 = FUN_003e6bbc(); + } + else { + auVar7 = FUN_003e5e30(); + } + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar1,param_9,param_8,&local_8); + if (puVar4 != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(puVar4 + 0x10); + *(int *)(puVar4 + 0x10) = iVar6 + -1; + } + else { + piVar5 = (int *)(puVar4 + 0x10); + do { + iVar6 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar6 < 1) { + operator_delete(puVar4); + } + } + auVar7._8_8_ = param_3 & 0xffffffff00000000 | auVar7._8_8_ & 0xffffffff; + return auVar7; +} + + +================================================================== + +### FUNC 003e7a68 (456 bytes) name=FUN_003e7a68 + +undefined1 [16] +FUN_003e7a68(undefined8 param_1,undefined8 param_2,ulong param_3,undefined8 param_4, + undefined8 param_5,char param_6,long param_7,undefined8 param_8,long *param_9) + +{ + char cVar1; + bool bVar2; + undefined *__src; + long *plVar3; + undefined *puVar4; + int iVar5; + int *piVar6; + ulong uVar7; + size_t __n; + undefined8 uVar8; + void *__dest; + undefined1 auVar9 [16]; + undefined *local_8; + + plVar3 = (long *)FUN_003de994(param_7 + 0xd0); + local_8 = PTR_DAT_00501f30 + 0x18; + if (param_6 == '\0') { + auVar9 = FUN_003e6bbc(param_1,param_2,param_3,param_4,param_5,param_7,param_8,&local_8); + uVar8 = auVar9._0_8_; + __n = *(size_t *)(local_8 + -0x18); + uVar7 = param_3 & 0xffffffff00000000 | auVar9._8_8_ & 0xffffffff; + if (__n != 0) goto LAB_003e7b50; +LAB_003e7afc: + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) goto LAB_003e7b0c; + } + else { + auVar9 = FUN_003e5e30(); + uVar8 = auVar9._0_8_; + /* try { // try from 003e7af0 to 004e7af3 has its CatchHandler @ 003e9254 */ + __n = *(size_t *)(local_8 + -0x18); + uVar7 = param_3 & 0xffffffff00000000 | auVar9._8_8_ & 0xffffffff; + /* try { // try from 003e7af8 to 004e7b67 has its CatchHandler @ 003e94bc */ + if (__n == 0) goto LAB_003e7afc; +LAB_003e7b50: + FUN_004134a0(param_9,__n,0); + __src = local_8; + __dest = (void *)*param_9; + puVar4 = local_8 + __n; + if (-1 < *(int *)((long)__dest + -8)) { + FUN_00412cf8(param_9); + __dest = (void *)*param_9; + } + /* try { // try from 003e7b90 to 004e7b93 has its CatchHandler @ 003e9334 */ + if ((char)plVar3[7] == '\x01') { + memcpy(__dest,__src,__n); + goto LAB_003e7afc; + } + if ((char)plVar3[7] == '\0') { + FUN_003d14e0(plVar3); + } + (**(code **)(*plVar3 + 0x38))(plVar3,__src,puVar4,__dest); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) goto LAB_003e7b0c; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; + } + else { + piVar6 = (int *)(local_8 + -8); + do { + iVar5 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar5 < 1) { + operator_delete(puVar4); + } +LAB_003e7b0c: + auVar9._8_8_ = uVar7; + auVar9._0_8_ = uVar8; + return auVar9; +} + + +================================================================== + +### FUNC 003e7c58 (3172 bytes) name=FUN_003e7c58 + +undefined1 [16] +FUN_003e7c58(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,undefined4 *param_7,long *param_8) + +{ + bool bVar1; + long *plVar2; + undefined8 uVar3; + bool bVar4; + bool bVar5; + char cVar6; + char cVar7; + byte bVar8; + int iVar9; + int iVar10; + int iVar11; + uint uVar12; + long lVar13; + long lVar14; + undefined *puVar15; + void *pvVar16; + char cVar17; + uint uVar18; + undefined4 uVar19; + byte *pbVar20; + ulong uVar21; + long lVar22; + undefined1 uVar23; + undefined1 auVar24 [16]; + long *local_40; + undefined8 local_38; + long *local_30; + undefined8 local_28; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + uVar18 = 0; + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + local_28 = param_3; + lVar13 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + iVar9 = FUN_003e3e48(&local_30); + iVar10 = FUN_003e3e48(&local_40); + if ((iVar9 == -1) != (iVar10 == -1)) { + bVar8 = FUN_003e3e48(&local_30); + uVar12 = (uint)bVar8; + bVar5 = *(byte *)(lVar13 + 0x6f) != bVar8; + if ((bVar5) && (*(byte *)(lVar13 + 0x6e) != bVar8)) { + cVar6 = *(char *)(lVar13 + 0x20); +LAB_003e85d8: + iVar9 = 0; + bVar5 = false; + do { + if ((cVar6 != '\0') && (*(byte *)(lVar13 + 0x49) == uVar12)) { + /* try { // try from 003e8504 to 004e852b has its CatchHandler @ 003e9464 */ + bVar1 = false; + local_8 = PTR_DAT_00501f30 + 0x18; + goto LAB_003e8510; + } + if ((*(byte *)(lVar13 + 0x48) == uVar12) || + (bVar8 = *(byte *)(lVar13 + 0x72), bVar8 != uVar12)) { + bVar1 = false; + goto LAB_003e7ce8; + } + if (bVar5) { +LAB_003e8618: + if (local_30 == (long *)0x0) goto LAB_003e87b4; +LAB_003e8624: + if ((ulong)local_30[3] <= (ulong)local_30[2]) { + (**(code **)(*local_30 + 0x50))(); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (local_30 != (long *)0x0) { + pbVar20 = (byte *)local_30[2]; + if (pbVar20 < (byte *)local_30[3]) goto LAB_003e8650; + goto LAB_003e880c; + } + goto LAB_003e87b4; + } + local_30[2] = local_30[2] + 1; + pbVar20 = (byte *)local_30[2]; + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (pbVar20 < (byte *)local_30[3]) { +LAB_003e8650: + uVar18 = (uint)*pbVar20; + } + else { +LAB_003e880c: + uVar18 = (**(code **)(*local_30 + 0x48))(); + if (uVar18 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e87b4; + } + } + iVar10 = 0; + local_28 = CONCAT44(local_28._4_4_,uVar18); + if (local_40 != (long *)0x0) goto LAB_003e8664; + } + else { + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + uVar21 = lVar22 + 1; + if ((*(ulong *)(lVar14 + -0x10) < uVar21) || (0 < *(int *)(lVar14 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + } + *(undefined1 *)(lVar14 + lVar22) = 0x30; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) == PTR_DAT_00501f30) goto LAB_003e8618; + *(undefined4 *)(lVar14 + -8) = 0; + *(ulong *)(lVar14 + -0x18) = uVar21; + *(undefined1 *)(lVar14 + uVar21) = 0; + if (local_30 != (long *)0x0) goto LAB_003e8624; +LAB_003e87b4: + if (local_40 == (long *)0x0) goto LAB_003e871c; + iVar10 = 1; +LAB_003e8664: + iVar11 = 0; + if ((int)local_38 == -1) { + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar18 = (uint)*(byte *)local_40[2]; + } + else { + uVar18 = (**(code **)(*local_40 + 0x48))(); + if (uVar18 == 0xffffffff) { + local_40 = (long *)0x0; + iVar11 = 1; + goto LAB_003e8674; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar18); + iVar11 = 0; + } +LAB_003e8674: + if (iVar11 == iVar10) goto LAB_003e871c; + } + iVar9 = iVar9 + 1; + if (local_30 == (long *)0x0) { +LAB_003e8848: + uVar12 = 0xff; + } + else if ((uint)local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar12 = (uint)*(byte *)local_30[2]; + } + else { + uVar12 = (**(code **)(*local_30 + 0x48))(local_30); + if (uVar12 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e8848; + } + } + local_28 = CONCAT44(local_28._4_4_,uVar12); + uVar12 = uVar12 & 0xff; + } + else { + uVar12 = (uint)local_28 & 0xff; + } + cVar6 = *(char *)(lVar13 + 0x20); + bVar5 = true; + } while( true ); + } + cVar6 = *(char *)(lVar13 + 0x20); + /* try { // try from 003e8540 to 004e86ab has its CatchHandler @ 003e9358 */ + uVar18 = (uint)bVar8; + if ((cVar6 != '\0') && (*(byte *)(lVar13 + 0x49) == uVar18)) { + cVar6 = '\x01'; + goto LAB_003e85d8; + } + if (*(byte *)(lVar13 + 0x48) == uVar18) goto LAB_003e85d8; + uVar19 = 0x2d; + if (!bVar5) { + uVar19 = 0x2b; + } + FUN_004116e0(param_8,uVar19); + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + iVar9 = FUN_003e3e48(&local_30); + iVar10 = FUN_003e3e48(&local_40); + if ((iVar9 == -1) != (iVar10 == -1)) { + uVar12 = FUN_003e3e48(&local_30); + uVar12 = uVar12 & 0xff; + cVar6 = *(char *)(lVar13 + 0x20); + goto LAB_003e85d8; + } + } + cVar6 = *(char *)(lVar13 + 0x20); + iVar9 = 0; + bVar5 = false; + bVar1 = true; + uVar12 = uVar18; + goto LAB_003e7ce8; +code_r0x003e8074: + bVar4 = true; + uVar23 = 0x2d; + if (*(byte *)(lVar13 + 0x6e) != uVar12) goto LAB_003e7d10; +LAB_003e8088: + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + /* try { // try from 003e8094 to 004e8097 has its CatchHandler @ 003e931c */ + uVar21 = lVar22 + 1; + if ((*(ulong *)(lVar14 + -0x10) < uVar21) || (0 < *(int *)(lVar14 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + } + *(undefined1 *)(lVar14 + lVar22) = uVar23; + bVar4 = true; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) == PTR_DAT_00501f30) { +LAB_003e7d78: + if (local_30 != (long *)0x0) goto LAB_003e7d80; +LAB_003e80f0: + if (local_40 == (long *)0x0) goto LAB_003e7ddc; + iVar10 = 1; + } + else { +LAB_003e80dc: + *(undefined4 *)(lVar14 + -8) = 0; + *(ulong *)(lVar14 + -0x18) = uVar21; + *(undefined1 *)(lVar14 + uVar21) = 0; + if (local_30 == (long *)0x0) goto LAB_003e80f0; +LAB_003e7d80: + if ((ulong)local_30[3] <= (ulong)local_30[2]) { + (**(code **)(*local_30 + 0x50))(); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (local_30 != (long *)0x0) { + pbVar20 = (byte *)local_30[2]; + if (pbVar20 < (byte *)local_30[3]) goto LAB_003e7db0; + goto LAB_003e8440; + } + goto LAB_003e80f0; + } + local_30[2] = local_30[2] + 1; + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + pbVar20 = (byte *)local_30[2]; + if (pbVar20 < (byte *)local_30[3]) { +LAB_003e7db0: + uVar18 = (uint)*pbVar20; + } + else { +LAB_003e8440: + uVar18 = (**(code **)(*local_30 + 0x48))(); + if (uVar18 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e80f0; + } + } + iVar10 = 0; + local_28 = CONCAT44(local_28._4_4_,uVar18); + if (local_40 == (long *)0x0) goto LAB_003e8130; + /* try { // try from 003e7dc8 to 004e7ec7 has its CatchHandler @ 003e946c */ + } + iVar11 = 0; + if ((int)local_38 == -1) { + /* try { // try from 003e8114 to 004e813b has its CatchHandler @ 003e9464 */ + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar18 = (uint)*(byte *)local_40[2]; + } + else { + uVar18 = (**(code **)(*local_40 + 0x48))(); + if (uVar18 == 0xffffffff) { + local_40 = (long *)0x0; + iVar11 = 1; + goto LAB_003e7dd4; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar18); + if (iVar10 == 0) goto LAB_003e7ddc; + } + else { +LAB_003e7dd4: + if (iVar11 == iVar10) goto LAB_003e7ddc; + } +LAB_003e8130: + uVar12 = FUN_003e3e48(&local_30); + uVar12 = uVar12 & 0xff; + goto LAB_003e7d10; +LAB_003e871c: + /* try { // try from 003e871c to 004e88f7 has its CatchHandler @ 003e9464 */ + iVar9 = iVar9 + 1; + bVar5 = true; + cVar6 = *(char *)(lVar13 + 0x20); + bVar1 = true; + uVar12 = (uint)bVar8; +LAB_003e7ce8: + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar6 != '\0') { +LAB_003e8510: + FUN_00410ed8(&local_8,0x20); + } + /* try { // try from 003e7cf8 to 004e7cfb has its CatchHandler @ 003e94bc */ + cVar6 = *(char *)(lVar13 + 0x88); + if (cVar6 == '\0') { + if (bVar1) { +LAB_003e86e4: + puVar15 = local_8; + if (*(long *)(local_8 + -0x18) != 0) { +LAB_003e86f0: + FUN_004116e0(&local_8,iVar9); + goto LAB_003e7df8; + } + goto LAB_003e7e1c; + } + bVar4 = false; + bVar1 = false; +LAB_003e7d10: + if ((uVar12 - 0x30 & 0xff) < 10) { + lVar22 = *param_8; + lVar14 = *(long *)(lVar22 + -0x18); + uVar21 = lVar14 + 1; + if ((*(ulong *)(lVar22 + -0x10) < uVar21) || (0 < *(int *)(lVar22 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar22 = *param_8; + lVar14 = *(long *)(lVar22 + -0x18); + } + *(char *)(lVar22 + lVar14) = (char)(uVar12 - 0x30) + '0'; + bVar5 = true; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) == PTR_DAT_00501f30) goto LAB_003e7d78; + goto LAB_003e80dc; + } + if ((*(byte *)(lVar13 + 0x48) == uVar12) && (bVar1 < (bVar4 ^ 1U))) { + FUN_004116e0(param_8,0x2e); + bVar1 = true; + goto LAB_003e7d78; + } + /* try { // try from 003e7f9c to 004e7f9f has its CatchHandler @ 003e9324 */ + /* try { // try from 003e7fa4 to 004e7fa7 has its CatchHandler @ 003e931c */ + if (((*(byte *)(lVar13 + 0x80) != uVar12) && (*(byte *)(lVar13 + 0x86) != uVar12)) || + (bVar5 <= bVar4)) goto LAB_003e7ddc; + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + uVar21 = lVar22 + 1; + if ((*(ulong *)(lVar14 + -0x10) < uVar21) || (0 < *(int *)(lVar14 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + } + *(undefined1 *)(lVar14 + lVar22) = 0x65; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar14 + -8) = 0; + *(ulong *)(lVar14 + -0x18) = uVar21; + *(undefined1 *)(lVar14 + uVar21) = 0; + } + if (local_30 != (long *)0x0) { + /* try { // try from 003e8020 to 004e8023 has its CatchHandler @ 003e9474 */ + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + iVar10 = FUN_003e3e48(&local_30); + iVar11 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) != (iVar10 == -1)) { + uVar12 = FUN_003e3e48(&local_30); + uVar12 = uVar12 & 0xff; + if (*(byte *)(lVar13 + 0x6f) != uVar12) goto code_r0x003e8074; + uVar23 = 0x2b; + goto LAB_003e8088; + } +LAB_003e86a0: + if (*(long *)(local_8 + -0x18) != 0) { +LAB_003e7df8: + puVar15 = local_8; + cVar6 = FUN_003ee0cc(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_8); + if (cVar6 == '\0') { + *param_7 = 4; + } + goto LAB_003e7e1c; + } + puVar15 = local_8 + -0x18; + if (puVar15 == PTR_DAT_00501f30) goto LAB_003e7e30; + } + else { + if (bVar1) goto LAB_003e86e4; + cVar7 = *(char *)(lVar13 + 0x20); + bVar4 = false; + bVar1 = false; +LAB_003e7e70: + if (cVar7 == '\0') goto LAB_003e7e80; + while (*(byte *)(lVar13 + 0x49) != uVar12) { +LAB_003e7e80: + if (*(byte *)(lVar13 + 0x48) == uVar12) { + if ((bVar4 ^ 1U) <= bVar1) goto LAB_003e86a0; + /* try { // try from 003e8174 to 004e8177 has its CatchHandler @ 003e937c */ + if (*(long *)(local_8 + -0x18) != 0) { + /* try { // try from 003e817c to 004e8373 has its CatchHandler @ 003e9464 */ + FUN_004116e0(&local_8,iVar9); + } + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + uVar21 = lVar22 + 1; + if ((*(ulong *)(lVar14 + -0x10) < uVar21) || (0 < *(int *)(lVar14 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + } + *(undefined1 *)(lVar14 + lVar22) = 0x2e; + bVar1 = true; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar14 + -8) = 0; + *(ulong *)(lVar14 + -0x18) = uVar21; + *(undefined1 *)(lVar14 + uVar21) = 0; + } + goto joined_r0x003e81ec; + } + pvVar16 = memchr((void *)(lVar13 + 0x72),uVar12,10); + if (pvVar16 != (void *)0x0) { + lVar22 = *param_8; + lVar14 = *(long *)(lVar22 + -0x18); + uVar21 = lVar14 + 1; + if ((*(ulong *)(lVar22 + -0x10) < uVar21) || (0 < *(int *)(lVar22 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar22 = *param_8; + lVar14 = *(long *)(lVar22 + -0x18); + } + *(char *)(lVar22 + lVar14) = ((char)pvVar16 - (char)(void *)(lVar13 + 0x72)) + '0'; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar14 + -8) = 0; + *(ulong *)(lVar14 + -0x18) = uVar21; + *(undefined1 *)(lVar14 + uVar21) = 0; + } + iVar9 = iVar9 + 1; + bVar5 = true; + goto joined_r0x003e81ec; + } + if (((*(byte *)(lVar13 + 0x80) != uVar12) && (*(byte *)(lVar13 + 0x86) != uVar12)) || + (bVar5 <= bVar4)) goto LAB_003e7ddc; + if ((!bVar1) && (*(long *)(local_8 + -0x18) != 0)) { + FUN_004116e0(&local_8,iVar9); + } + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + uVar21 = lVar22 + 1; + if ((*(ulong *)(lVar14 + -0x10) < uVar21) || (0 < *(int *)(lVar14 + -8))) { + FUN_00410ed8(param_8,uVar21); + lVar14 = *param_8; + lVar22 = *(long *)(lVar14 + -0x18); + } + *(undefined1 *)(lVar14 + lVar22) = 0x65; + lVar14 = *param_8; + if ((undefined *)(lVar14 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar14 + -8) = 0; + *(ulong *)(lVar14 + -0x18) = uVar21; + *(undefined1 *)(lVar14 + uVar21) = 0; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + iVar10 = FUN_003e3e48(&local_30); + iVar11 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) == (iVar10 == -1)) goto LAB_003e86a0; + uVar12 = FUN_003e3e48(&local_30); + uVar12 = uVar12 & 0xff; + bVar4 = *(byte *)(lVar13 + 0x6f) != uVar12; + if ((bVar4) && (*(byte *)(lVar13 + 0x6e) != uVar12)) { + cVar7 = *(char *)(lVar13 + 0x20); + bVar4 = true; + goto LAB_003e7e70; + } + cVar7 = *(char *)(lVar13 + 0x20); + if ((cVar7 == '\0') || (*(byte *)(lVar13 + 0x49) != uVar12)) { + /* try { // try from 003e839c to 004e839f has its CatchHandler @ 003e938c */ + if (*(byte *)(lVar13 + 0x48) == uVar12) { + bVar4 = true; + goto LAB_003e7e70; + } + uVar19 = 0x2d; + if (!bVar4) { + uVar19 = 0x2b; + } + FUN_004116e0(param_8,uVar19); + bVar4 = true; + goto joined_r0x003e81ec; + } + bVar4 = true; + } + if ((bVar4 ^ 1U) <= bVar1) goto LAB_003e86a0; + if (iVar9 != 0) { + FUN_004116e0(&local_8,iVar9); + bVar1 = false; + iVar9 = 0; +joined_r0x003e81ec: + if (local_30 == (long *)0x0) { +LAB_003e81f0: + cVar7 = cVar6; + if (local_40 == (long *)0x0) goto LAB_003e7ddc; +LAB_003e7f54: + /* try { // try from 003e7f58 to 004e7f5b has its CatchHandler @ 003e931c */ + cVar17 = '\0'; + if ((int)local_38 == -1) { + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar18 = (uint)*(byte *)local_40[2]; + } + else { + uVar18 = (**(code **)(*local_40 + 0x48))(); + if (uVar18 == 0xffffffff) { + local_40 = (long *)0x0; + cVar17 = cVar6; + goto LAB_003e7f64; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar18); + cVar17 = '\0'; + } +LAB_003e7f64: + if (cVar17 == cVar7) goto LAB_003e7ddc; + } + else { + if ((ulong)local_30[3] <= (ulong)local_30[2]) { + (**(code **)(*local_30 + 0x50))(); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (local_30 != (long *)0x0) { + pbVar20 = (byte *)local_30[2]; + if (pbVar20 < (byte *)local_30[3]) goto LAB_003e7f40; + goto LAB_003e83f4; + } + goto LAB_003e81f0; + } + local_30[2] = local_30[2] + 1; + local_28._4_4_ = (undefined4)((ulong)local_28 >> 0x20); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + pbVar20 = (byte *)local_30[2]; + if (pbVar20 < (byte *)local_30[3]) { +LAB_003e7f40: + uVar18 = (uint)*pbVar20; + } + else { +LAB_003e83f4: + uVar18 = (**(code **)(*local_30 + 0x48))(); + if (uVar18 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e81f0; + } + } + local_28 = CONCAT44(local_28._4_4_,uVar18); + cVar7 = '\0'; + if (local_40 != (long *)0x0) goto LAB_003e7f54; + } + if (local_30 == (long *)0x0) { +LAB_003e8478: + uVar12 = 0xff; + cVar7 = *(char *)(lVar13 + 0x20); + } + else if ((uint)local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar12 = (uint)*(byte *)local_30[2]; + } + else { + uVar12 = (**(code **)(*local_30 + 0x48))(); + if (uVar12 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e8478; + } + } + local_28 = CONCAT44(local_28._4_4_,uVar12); + uVar12 = uVar12 & 0xff; + cVar7 = *(char *)(lVar13 + 0x20); + } + else { + uVar12 = (uint)local_28 & 0xff; + cVar7 = *(char *)(lVar13 + 0x20); + } + goto LAB_003e7e70; + } + FUN_00412b08(param_8,0,*(undefined8 *)(*param_8 + -0x18),0); + bVar1 = false; +LAB_003e7ddc: + puVar15 = local_8; + if (*(long *)(local_8 + -0x18) != 0) { + if ((bVar4 ^ 1U) <= bVar1) goto LAB_003e7df8; + goto LAB_003e86f0; + } +LAB_003e7e1c: + puVar15 = puVar15 + -0x18; + if (puVar15 == PTR_DAT_00501f30) goto LAB_003e7e30; + } + uVar3 = local_28; + plVar2 = local_30; + FUN_003dca9c(puVar15,auStack_10); + local_30 = plVar2; + local_28 = uVar3; +LAB_003e7e30: + auVar24._8_8_ = local_28; + auVar24._0_8_ = local_30; + return auVar24; +} + + +================================================================== + +### FUNC 003e88e4 (544 bytes) name=FUN_003e88e4 + +undefined1 [16] +FUN_003e88e4(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + undefined8 param_6,_Ios_Iostate *param_7,float *param_8) + +{ + char cVar1; + bool bVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int *piVar7; + char *pcVar8; + long *plVar9; + ulong uVar10; + undefined1 auVar11 [16]; + char *local_10; + int *local_8; + + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,0x20); + auVar11 = FUN_003e7c58(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&local_10); + pcVar8 = local_10; + plVar9 = auVar11._0_8_; + /* try { // try from 003e8968 to 004e896b has its CatchHandler @ 003e931c */ + uVar10 = auVar11._8_8_ & 0xffffffff; + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar8,param_8,param_7,&local_8); + if (plVar9 == (long *)0x0) { +LAB_003e8aa0: + /* try { // try from 003e8aa0 to 004e8aa3 has its CatchHandler @ 003e931c */ + plVar9 = (long *)0x0; + iVar4 = 1; + if (param_4 != (long *)0x0) goto LAB_003e89c0; + goto LAB_003e8a44; + } + if (auVar11._8_4_ == -1) { + if ((byte *)plVar9[2] < (byte *)plVar9[3]) { + uVar10 = (ulong)*(byte *)plVar9[2]; + } + else { + uVar6 = (**(code **)(*plVar9 + 0x48))(plVar9); + if (uVar6 == 0xffffffff) goto LAB_003e8aa0; + uVar10 = (ulong)uVar6; + } + } + iVar4 = 0; + if (param_4 == (long *)0x0) { +LAB_003e89d4: + uVar10 = param_3 & 0xffffffff00000000 | uVar10; + /* try { // try from 003e89dc to 004e89df has its CatchHandler @ 003e946c */ + pcVar8 = local_10 + -0x18; + if (pcVar8 == PTR_DAT_00501f30) goto LAB_003e89ec; + } + else { +LAB_003e89c0: + iVar3 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[3] <= (ulong)param_4[2]) { + /* try { // try from 003e8ab8 to 004e8abb has its CatchHandler @ 003e94b4 */ + iVar5 = (**(code **)(*param_4 + 0x48))(param_4); + iVar3 = 1; + if (iVar5 == -1) goto LAB_003e89cc; + } + if (iVar4 != 0) goto LAB_003e89d4; + } + else { +LAB_003e89cc: + if (iVar4 != iVar3) goto LAB_003e89d4; + } +LAB_003e8a44: + uVar10 = param_3 & 0xffffffff00000000 | uVar10; + *(uint *)param_7 = *(uint *)param_7 | 2; + pcVar8 = local_10 + -0x18; + /* try { // try from 003e8a60 to 004e8a63 has its CatchHandler @ 003e949c */ + if (pcVar8 == PTR_DAT_00501f30) goto LAB_003e89ec; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar4 + -1; + } + else { + piVar7 = (int *)(local_10 + -8); + do { + iVar4 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete(pcVar8); + } +LAB_003e89ec: + auVar11._8_8_ = uVar10; + auVar11._0_8_ = plVar9; + return auVar11; +} + + +================================================================== + +### FUNC 003e8b2c (544 bytes) name=FUN_003e8b2c + +undefined1 [16] +FUN_003e8b2c(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + undefined8 param_6,_Ios_Iostate *param_7,double *param_8) + +{ + char cVar1; + bool bVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int *piVar7; + char *pcVar8; + long *plVar9; + ulong uVar10; + undefined1 auVar11 [16]; + char *local_10; + int *local_8; + + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,0x20); + /* try { // try from 003e8ba8 to 004e8bab has its CatchHandler @ 003e7490 */ + auVar11 = FUN_003e7c58(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&local_10); + pcVar8 = local_10; + plVar9 = auVar11._0_8_; + /* try { // try from 003e8bb8 to 004e8bbb has its CatchHandler @ 003e94bc */ + /* try { // try from 003e8bc4 to 004e8bc7 has its CatchHandler @ 003e946c */ + uVar10 = auVar11._8_8_ & 0xffffffff; + /* try { // try from 003e8bd0 to 004e8bd3 has its CatchHandler @ 003e931c */ + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar8,param_8,param_7,&local_8); + if (plVar9 == (long *)0x0) { +LAB_003e8ce8: + plVar9 = (long *)0x0; + iVar4 = 1; + if (param_4 != (long *)0x0) goto LAB_003e8c08; + goto LAB_003e8c8c; + } + if (auVar11._8_4_ == -1) { + if ((byte *)plVar9[2] < (byte *)plVar9[3]) { + uVar10 = (ulong)*(byte *)plVar9[2]; + } + else { + uVar6 = (**(code **)(*plVar9 + 0x48))(plVar9); + if (uVar6 == 0xffffffff) goto LAB_003e8ce8; + uVar10 = (ulong)uVar6; + } + } + iVar4 = 0; + if (param_4 == (long *)0x0) { +LAB_003e8c1c: + uVar10 = param_3 & 0xffffffff00000000 | uVar10; + pcVar8 = local_10 + -0x18; + if (pcVar8 == PTR_DAT_00501f30) goto LAB_003e8c34; + } + else { +LAB_003e8c08: + iVar3 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[3] <= (ulong)param_4[2]) { + iVar5 = (**(code **)(*param_4 + 0x48))(param_4); + /* try { // try from 003e8d08 to 004e8d0b has its CatchHandler @ 003e93e4 */ + iVar3 = 1; + /* try { // try from 003e8d10 to 004e8d47 has its CatchHandler @ 003e94bc */ + if (iVar5 == -1) goto LAB_003e8c14; + } + if (iVar4 != 0) goto LAB_003e8c1c; + } + else { +LAB_003e8c14: + if (iVar4 != iVar3) goto LAB_003e8c1c; + } +LAB_003e8c8c: + /* try { // try from 003e8c90 to 004e8c93 has its CatchHandler @ 003e9440 */ + uVar10 = param_3 & 0xffffffff00000000 | uVar10; + /* try { // try from 003e8c9c to 004e8c9f has its CatchHandler @ 003e94bc */ + *(uint *)param_7 = *(uint *)param_7 | 2; + pcVar8 = local_10 + -0x18; + /* try { // try from 003e8cac to 004e8caf has its CatchHandler @ 003e93f4 */ + if (pcVar8 == PTR_DAT_00501f30) goto LAB_003e8c34; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar4 + -1; + } + else { + piVar7 = (int *)(local_10 + -8); + do { + iVar4 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + /* try { // try from 003e8ccc to 004e8ccf has its CatchHandler @ 003e94bc */ + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete(pcVar8); + } +LAB_003e8c34: + auVar11._8_8_ = uVar10; + auVar11._0_8_ = plVar9; + return auVar11; +} + + +================================================================== + +### FUNC 003e8d74 (544 bytes) name=FUN_003e8d74 + +undefined1 [16] +FUN_003e8d74(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + undefined8 param_6,_Ios_Iostate *param_7,longdouble *param_8) + +{ + char cVar1; + bool bVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int *piVar7; + char *pcVar8; + long *plVar9; + ulong uVar10; + undefined1 auVar11 [16]; + char *local_10; + int *local_8; + + /* try { // try from 003e8d74 to 004e8d77 has its CatchHandler @ 003e93d4 */ + /* try { // try from 003e8d7c to 004e8d7f has its CatchHandler @ 003e94bc */ + /* try { // try from 003e8d8c to 004e8d8f has its CatchHandler @ 003e93b0 */ + local_10 = PTR_DAT_00501f30 + 0x18; + /* try { // try from 003e8d9c to 004e8d9f has its CatchHandler @ 003e92c0 */ + /* try { // try from 003e8db8 to 004e8dbb has its CatchHandler @ 003e946c */ + FUN_00410ed8(&local_10,0x20); + auVar11 = FUN_003e7c58(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&local_10); + pcVar8 = local_10; + plVar9 = auVar11._0_8_; + /* try { // try from 003e8dfc to 004e8dff has its CatchHandler @ 003e92a4 */ + /* try { // try from 003e8e04 to 004e8e07 has its CatchHandler @ 003e946c */ + uVar10 = auVar11._8_8_ & 0xffffffff; + /* try { // try from 003e8e18 to 004e8e1b has its CatchHandler @ 003e9334 */ + local_8 = (int *)FUN_003ed450(); + /* try { // try from 003e8e28 to 004e8e2b has its CatchHandler @ 003e9418 */ + /* try { // try from 003e8e34 to 004e8e37 has its CatchHandler @ 003e94bc */ + std::__convert_to_v(pcVar8,param_8,param_7,&local_8); + if (plVar9 == (long *)0x0) { +LAB_003e8f30: + plVar9 = (long *)0x0; + iVar4 = 1; + if (param_4 != (long *)0x0) goto LAB_003e8e50; + goto LAB_003e8ed4; + } + /* try { // try from 003e8e40 to 004e8e43 has its CatchHandler @ 003e93f4 */ + if (auVar11._8_4_ == -1) { + if ((byte *)plVar9[2] < (byte *)plVar9[3]) { + uVar10 = (ulong)*(byte *)plVar9[2]; + } + else { + uVar6 = (**(code **)(*plVar9 + 0x48))(plVar9); + if (uVar6 == 0xffffffff) goto LAB_003e8f30; + uVar10 = (ulong)uVar6; + } + } + iVar4 = 0; + if (param_4 == (long *)0x0) { +LAB_003e8e64: + uVar10 = param_3 & 0xffffffff00000000 | uVar10; + pcVar8 = local_10 + -0x18; + if (pcVar8 == PTR_DAT_00501f30) goto LAB_003e8e7c; + } + else { +LAB_003e8e50: + iVar3 = 0; + if ((int)param_5 == -1) { + if ((ulong)param_4[3] <= (ulong)param_4[2]) { + iVar5 = (**(code **)(*param_4 + 0x48))(param_4); + iVar3 = 1; + if (iVar5 == -1) goto LAB_003e8e5c; + } + if (iVar4 != 0) goto LAB_003e8e64; + } + else { +LAB_003e8e5c: + if (iVar4 != iVar3) goto LAB_003e8e64; + } +LAB_003e8ed4: + uVar10 = param_3 & 0xffffffff00000000 | uVar10; + *(uint *)param_7 = *(uint *)param_7 | 2; + pcVar8 = local_10 + -0x18; + if (pcVar8 == PTR_DAT_00501f30) goto LAB_003e8e7c; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar4 + -1; + } + else { + /* try { // try from 003e8f04 to 004e8f07 has its CatchHandler @ 003e938c */ + piVar7 = (int *)(local_10 + -8); + do { + iVar4 = *piVar7; + /* try { // try from 003e8f10 to 004e8f13 has its CatchHandler @ 003e9464 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + /* try { // try from 003e8f1c to 004e8f1f has its CatchHandler @ 003e93b0 */ + if (iVar4 < 1) { + /* try { // try from 003e8f28 to 004e8f2b has its CatchHandler @ 003e9358 */ + operator_delete(pcVar8); + } +LAB_003e8e7c: + auVar11._8_8_ = uVar10; + auVar11._0_8_ = plVar9; + return auVar11; +} + + +================================================================== + +### FUNC 003e8fbc (2416 bytes) name=FUN_003e8fbc + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003e8fbc(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,ulong *param_8) + +{ + ulong uVar1; + ulong uVar2; + bool bVar3; + bool bVar4; + undefined1 auVar5 [16]; + bool bVar6; + char cVar7; + bool bVar8; + bool bVar9; + byte bVar10; + char cVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + uint uVar16; + long lVar17; + void *pvVar18; + char cVar19; + byte *pbVar20; + ulong uVar21; + long lVar22; + uint uVar23; + ulong uVar24; + ulong uVar25; + ulong uVar26; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + uint local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (uint)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar17 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + uVar16 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar16 == 0x40) { + iVar15 = 8; + } + else { + iVar15 = 0x10; + if (uVar16 != 8) { + iVar15 = 10; + } + } + iVar12 = FUN_003e3e48(&local_30); + iVar13 = FUN_003e3e48(&local_40); + if ((iVar12 == -1) == (iVar13 == -1)) { + uVar23 = 0; + bVar9 = false; +LAB_003e96a8: + cVar11 = *(char *)(lVar17 + 0x20); + bVar3 = true; + iVar12 = 0; + bVar8 = false; +LAB_003e9424: + if (iVar15 == 0x10) goto LAB_003e942c; +LAB_003e91d0: + /* try { // try from 003e91d0 to 004e91d3 has its CatchHandler @ 003e938c */ + /* try { // try from 003e91dc to 004e91df has its CatchHandler @ 003e9464 */ + uVar25 = (ulong)iVar15; + /* try { // try from 003e91e8 to 004e91fb has its CatchHandler @ 003e94bc */ + } + else { + bVar10 = FUN_003e3e48(&local_30); + uVar23 = (uint)bVar10; + bVar9 = *(byte *)(lVar17 + 0x6e) == bVar10; + if ((bVar9) || (*(byte *)(lVar17 + 0x6f) == bVar10)) { + cVar11 = *(char *)(lVar17 + 0x20); + if ((cVar11 == '\0') || (*(byte *)(lVar17 + 0x49) != bVar10)) { + if (*(byte *)(lVar17 + 0x48) != bVar10) { + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + /* try { // try from 003e90a8 to 004e90ab has its CatchHandler @ 003e92c0 */ + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + local_28 = 0xffffffff; + } + /* try { // try from 003e90b4 to 004e919f has its CatchHandler @ 003e9464 */ + iVar12 = FUN_003e3e48(&local_30); + iVar13 = FUN_003e3e48(&local_40); + if ((iVar12 == -1) == (iVar13 == -1)) goto LAB_003e96a8; + uVar23 = FUN_003e3e48(&local_30); + uVar23 = uVar23 & 0xff; + cVar11 = *(char *)(lVar17 + 0x20); + } + } + else { + cVar11 = '\x01'; + } + } + else { + cVar11 = *(char *)(lVar17 + 0x20); + } + iVar12 = 0; + bVar8 = false; + do { + if (((cVar11 != '\0') && (*(byte *)(lVar17 + 0x49) == uVar23)) || + (*(byte *)(lVar17 + 0x48) == uVar23)) break; + if (*(byte *)(lVar17 + 0x72) == uVar23) { + /* catch() { ... } // from try @ 003e8114 with catch @ 003e9464 + catch() { ... } // from try @ 003e817c with catch @ 003e9464 + catch() { ... } // from try @ 003e8504 with catch @ 003e9464 + catch() { ... } // from try @ 003e871c with catch @ 003e9464 + catch() { ... } // from try @ 003e8f10 with catch @ 003e9464 + catch() { ... } // from try @ 003e90b4 with catch @ 003e9464 + catch() { ... } // from try @ 003e91c4 with catch @ 003e9464 + catch() { ... } // from try @ 003e91dc with catch @ 003e9464 */ + /* catch() { ... } // from try @ 003e7dc8 with catch @ 003e946c + catch() { ... } // from try @ 003e89dc with catch @ 003e946c + catch() { ... } // from try @ 003e8bc4 with catch @ 003e946c + catch() { ... } // from try @ 003e8db8 with catch @ 003e946c + catch() { ... } // from try @ 003e8e04 with catch @ 003e946c */ + if ((iVar15 == 10) < bVar8) goto LAB_003e912c; + /* catch() { ... } // from try @ 003e8020 with catch @ 003e9474 */ + iVar12 = iVar12 + 1; + if ((iVar15 == 8) || (bVar8 = true, uVar16 == 0)) { + iVar12 = 0; + bVar8 = true; + iVar15 = 8; + } + } + else { + if (!bVar8) break; +LAB_003e912c: + if ((*(byte *)(lVar17 + 0x70) != uVar23) && (*(byte *)(lVar17 + 0x71) != uVar23)) { + /* catch() { ... } // from try @ 003e8a60 with catch @ 003e949c + catch() { ... } // from try @ 003e8aac with catch @ 003e949c */ + bVar3 = false; + bVar8 = true; + goto LAB_003e9424; + } + if ((iVar15 != 0x10) && (uVar16 != 0)) { + bVar3 = false; + bVar8 = true; + goto LAB_003e91d0; + } + iVar12 = 0; + bVar8 = false; + iVar15 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = 0xffffffff; + } + iVar13 = FUN_003e3e48(&local_30); + iVar14 = FUN_003e3e48(&local_40); + if ((iVar13 == -1) == (iVar14 == -1)) { + cVar11 = *(char *)(lVar17 + 0x20); + bVar3 = true; + goto LAB_003e9424; + } + /* try { // try from 003e91ac to 004e91af has its CatchHandler @ 003e94bc */ + uVar23 = FUN_003e3e48(&local_30); + uVar23 = uVar23 & 0xff; + /* try { // try from 003e91b8 to 004e91bb has its CatchHandler @ 003e9334 */ + cVar11 = *(char *)(lVar17 + 0x20); + } while (bVar8); + /* try { // try from 003e91c4 to 004e91c7 has its CatchHandler @ 003e9464 */ + bVar3 = false; + if (iVar15 != 0x10) goto LAB_003e91d0; +LAB_003e942c: + uVar25 = 0x16; + /* catch() { ... } // from try @ 003e767c with catch @ 003e9440 + catch() { ... } // from try @ 003e8c90 with catch @ 003e9440 */ + } + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar11 != '\0') { + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + } + local_58 = &local_8; + uVar26 = (ulong)iVar15; + cVar11 = *(char *)(lVar17 + 0x88); + /* try { // try from 003e9204 to 004e9207 has its CatchHandler @ 003e9418 */ + uVar1 = 0x7fffffffffffffff; + if (bVar9) { + uVar1 = 0x8000000000000000; + } + uVar2 = 0; + if (uVar26 != 0) { + uVar2 = uVar1 / uVar26; + } + if (cVar11 == '\0') { + if (bVar3) { +LAB_003e9914: + uVar24 = 0; + bVar6 = false; + bVar4 = false; + goto LAB_003e9398; + } + uVar24 = 0; + bVar6 = false; +LAB_003e923c: + if (10 < uVar25) goto LAB_003e92e8; +LAB_003e9244: + /* catch() { ... } // from try @ 003e7af0 with catch @ 003e9254 */ + if ((0x2f < uVar23) && (uVar23 < (int)uVar25 + 0x30U)) { + uVar16 = uVar23 - 0x30; +LAB_003e925c: + if (uVar24 <= uVar2) goto LAB_003e9324; +LAB_003e9264: + bVar6 = true; + if (local_30 == (long *)0x0) goto LAB_003e9350; +LAB_003e9270: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) { +LAB_003e9734: + local_28 = 0xffffffff; + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e9350; + } + goto LAB_003e92a0; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003e9350; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) goto LAB_003e9734; + } + uVar16 = (uint)*pbVar20; +LAB_003e92a0: + /* try { // try from 003e92a0 to 004e92a3 has its CatchHandler @ 003e7490 */ + /* catch() { ... } // from try @ 003e8dfc with catch @ 003e92a4 */ + iVar15 = 0; + local_28 = uVar16; + if (local_40 == (long *)0x0) goto LAB_003e92c8; + iVar13 = 0; + /* try { // try from 003e92bc to 004e92bf has its CatchHandler @ 003e7490 */ + if ((int)local_38 == -1) goto LAB_003e936c; +LAB_003e92c0: + /* catch() { ... } // from try @ 003e8d9c with catch @ 003e92c0 + catch() { ... } // from try @ 003e90a8 with catch @ 003e92c0 */ + if (iVar15 != iVar13) { +LAB_003e92c8: + do { + if (local_30 == (long *)0x0) { +LAB_003e976c: + uVar23 = 0xff; + goto LAB_003e923c; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar16 = (uint)*(byte *)local_30[2]; + } + else { + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + /* try { // try from 003e9768 to 004e976b has its CatchHandler @ 003ea0cc */ + local_30 = (long *)0x0; + goto LAB_003e976c; + } + } + uVar23 = uVar16 & 0xff; + local_28 = uVar16; + goto LAB_003e923c; + } + uVar23 = local_28 & 0xff; + if (uVar25 < 0xb) goto LAB_003e9244; +LAB_003e92e8: + uVar16 = uVar23 - 0x30; + if ((uVar16 & 0xff) < 10) goto LAB_003e925c; + if ((uVar23 - 0x61 & 0xff) < 6) { + uVar16 = uVar23 - 0x57; + goto LAB_003e925c; + } + if (5 < (uVar23 - 0x41 & 0xff)) goto LAB_003e9774; + /* catch() { ... } // from try @ 003e7f58 with catch @ 003e931c + catch() { ... } // from try @ 003e7fa4 with catch @ 003e931c + catch() { ... } // from try @ 003e8094 with catch @ 003e931c + catch() { ... } // from try @ 003e8968 with catch @ 003e931c + catch() { ... } // from try @ 003e8aa0 with catch @ 003e931c + catch() { ... } // from try @ 003e8bd0 with catch @ 003e931c */ + uVar16 = uVar23 - 0x37; + if (uVar2 < uVar24) goto LAB_003e9264; +LAB_003e9324: + /* catch() { ... } // from try @ 003e7f9c with catch @ 003e9324 */ + uVar21 = uVar24 * uVar26; + /* catch() { ... } // from try @ 003e7b90 with catch @ 003e9334 + catch() { ... } // from try @ 003e8e18 with catch @ 003e9334 + catch() { ... } // from try @ 003e91b8 with catch @ 003e9334 */ + iVar12 = iVar12 + 1; + uVar24 = (long)(int)uVar16 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)(int)uVar16 < uVar21); + if (local_30 != (long *)0x0) goto LAB_003e9270; +LAB_003e9350: + if (local_40 == (long *)0x0) break; + /* catch() { ... } // from try @ 003e8540 with catch @ 003e9358 + catch() { ... } // from try @ 003e8f28 with catch @ 003e9358 */ + iVar15 = 1; + iVar13 = 0; + if ((int)local_38 != -1) goto LAB_003e92c0; +LAB_003e936c: + if ((byte *)local_40[2] < (byte *)local_40[3]) { + /* catch() { ... } // from try @ 003e8174 with catch @ 003e937c */ + uVar16 = (uint)*(byte *)local_40[2]; + } + else { + uVar16 = (**(code **)(*local_40 + 0x48))(); + if (uVar16 == 0xffffffff) goto code_r0x003e9880; + } + local_38 = CONCAT44(local_38._4_4_,uVar16); + /* catch() { ... } // from try @ 003e839c with catch @ 003e938c + catch() { ... } // from try @ 003e8f04 with catch @ 003e938c + catch() { ... } // from try @ 003e91d0 with catch @ 003e938c */ + if (iVar15 == 0) break; + } while( true ); + } + goto LAB_003e9390; + } + } + else { + if (bVar3) goto LAB_003e9914; + /* catch() { ... } // from try @ 003e77f4 with catch @ 003e94b4 + catch() { ... } // from try @ 003e8ab8 with catch @ 003e94b4 */ + uVar24 = 0; + bVar6 = false; +LAB_003e94bc: + /* catch() { ... } // from try @ 003e75b4 with catch @ 003e94bc + catch() { ... } // from try @ 003e7720 with catch @ 003e94bc + catch() { ... } // from try @ 003e78c8 with catch @ 003e94bc + catch() { ... } // from try @ 003e7af8 with catch @ 003e94bc + catch() { ... } // from try @ 003e7cf8 with catch @ 003e94bc + catch() { ... } // from try @ 003e8bb8 with catch @ 003e94bc + catch() { ... } // from try @ 003e8c9c with catch @ 003e94bc + catch() { ... } // from try @ 003e8ccc with catch @ 003e94bc + catch() { ... } // from try @ 003e8d10 with catch @ 003e94bc + catch() { ... } // from try @ 003e8d7c with catch @ 003e94bc + catch() { ... } // from try @ 003e8e34 with catch @ 003e94bc + catch() { ... } // from try @ 003e91ac with catch @ 003e94bc + catch() { ... } // from try @ 003e91e8 with catch @ 003e94bc */ + if ((*(char *)(lVar17 + 0x20) != '\0') && (*(byte *)(lVar17 + 0x49) == uVar23)) + goto LAB_003e95bc; +LAB_003e94d0: + /* catch() { ... } // from try @ 003e9d40 with catch @ 003e94e0 + catch() { ... } // from try @ 003e9f90 with catch @ 003e94e0 + catch() { ... } // from try @ 003e9fd4 with catch @ 003e94e0 + catch() { ... } // from try @ 003ea10c with catch @ 003e94e0 + catch() { ... } // from try @ 003ea120 with catch @ 003e94e0 */ + if ((*(byte *)(lVar17 + 0x48) != uVar23) && + (pvVar18 = memchr((void *)(lVar17 + 0x72),uVar23,uVar25), pvVar18 != (void *)0x0)) { + iVar15 = (int)pvVar18 - (int)(void *)(lVar17 + 0x72); + if (0xf < iVar15) { + iVar15 = iVar15 + -6; + } + if (uVar2 < uVar24) { + bVar6 = true; + } + else { + uVar21 = uVar24 * uVar26; + iVar12 = iVar12 + 1; + uVar24 = (long)iVar15 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)iVar15 < uVar21); + } +LAB_003e952c: + if (local_30 == (long *)0x0) goto LAB_003e963c; +LAB_003e9534: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) { +LAB_003e982c: + local_28 = 0xffffffff; + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e963c; + } + goto LAB_003e9568; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + /* try { // try from 003e980c to 004e986b has its CatchHandler @ 003ea17c */ + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003e963c; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) goto LAB_003e982c; + } + uVar16 = (uint)*pbVar20; +LAB_003e9568: + local_28 = uVar16; + if (local_40 == (long *)0x0) goto LAB_003e9590; + cVar7 = '\0'; + do { + cVar19 = '\0'; + if ((int)local_38 == -1) { + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar16 = (uint)*(byte *)local_40[2]; + } + else { + uVar16 = (**(code **)(*local_40 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_40 = (long *)0x0; + cVar19 = cVar11; + goto LAB_003e9588; + } + } + /* try { // try from 003e966c to 004e966f has its CatchHandler @ 003ea124 */ + local_38 = CONCAT44(local_38._4_4_,uVar16); + cVar19 = '\0'; + /* try { // try from 003e9674 to 004e96c7 has its CatchHandler @ 003ea17c */ + } +LAB_003e9588: + if (cVar19 == cVar7) goto LAB_003e9390; +LAB_003e9590: + if (local_30 == (long *)0x0) { +LAB_003e9864: + uVar23 = 0xff; + goto LAB_003e94bc; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar16 = (uint)*(byte *)local_30[2]; + } + else { + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003e9864; + } + } + uVar23 = uVar16 & 0xff; + local_28 = uVar16; + goto LAB_003e94bc; + } + uVar23 = local_28 & 0xff; + if ((*(char *)(lVar17 + 0x20) == '\0') || (*(byte *)(lVar17 + 0x49) != uVar23)) + goto LAB_003e94d0; +LAB_003e95bc: + if (iVar12 == 0) { + bVar4 = true; + iVar12 = 0; + goto LAB_003e9398; + } + lVar22 = *(long *)(local_8 + -0x18); + uVar21 = lVar22 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar21) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar21); + lVar22 = *(long *)(local_8 + -0x18); + } + local_8[lVar22] = (char)iVar12; + iVar12 = 0; + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003e952c; + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar21; + /* try { // try from 003e9630 to 004e9633 has its CatchHandler @ 003ea17c */ + local_8[uVar21] = 0; + if (local_30 != (long *)0x0) goto LAB_003e9534; +LAB_003e963c: + if (local_40 == (long *)0x0) goto LAB_003e9390; + cVar7 = cVar11; + } while( true ); + } + } +LAB_003e9774: + bVar4 = false; + if (*(long *)(local_8 + -0x18) != 0) goto LAB_003e9784; +LAB_003e93a4: + /* catch() { ... } // from try @ 003e8d8c with catch @ 003e93b0 + catch() { ... } // from try @ 003e8f1c with catch @ 003e93b0 */ + if ((iVar12 == 0) <= bVar8) goto LAB_003e97cc; +LAB_003e93b8: + *param_8 = 0; + *param_7 = 4; +LAB_003e93cc: + if (bVar3) { + /* catch() { ... } // from try @ 003e8d74 with catch @ 003e93d4 */ + *param_7 = *param_7 | 2; + } + /* catch() { ... } // from try @ 003e8d08 with catch @ 003e93e4 */ + auVar5._8_4_ = local_28; + auVar5._0_8_ = local_30; + auVar5._12_4_ = uStack_24; + /* catch() { ... } // from try @ 003e8cac with catch @ 003e93f4 + catch() { ... } // from try @ 003e8e40 with catch @ 003e93f4 */ + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_8 + -0x18,auStack_10); + } + /* catch() { ... } // from try @ 003e8e28 with catch @ 003e9418 + catch() { ... } // from try @ 003e9204 with catch @ 003e9418 */ + return auVar5; +code_r0x003e9880: + local_40 = (long *)0x0; + iVar13 = 1; + goto LAB_003e92c0; +LAB_003e9390: + bVar4 = false; + bVar3 = true; +LAB_003e9398: + if (*(long *)(local_8 + -0x18) == 0) goto LAB_003e93a4; +LAB_003e9784: + FUN_004116e0(local_58,iVar12); + cVar11 = FUN_003ee0cc(*(undefined8 *)(lVar17 + 0x10),*(undefined8 *)(lVar17 + 0x18),local_58); + if (cVar11 == '\0') { + *param_7 = 4; + } + if (((iVar12 == 0) <= bVar8) || (*(long *)(local_8 + -0x18) != 0)) { +LAB_003e97cc: + if (!bVar4) { + if (bVar6) { + uVar25 = 0x7fffffffffffffff; + if (bVar9) { + uVar25 = 0x8000000000000000; + } + *param_8 = uVar25; + *param_7 = 4; + } + else { + uVar25 = -uVar24; + if (!bVar9) { + uVar25 = uVar24; + } + *param_8 = uVar25; + } + goto LAB_003e93cc; + } + } + goto LAB_003e93b8; +} + + +================================================================== + +### FUNC 003e9958 (20 bytes) name=FUN_003e9958 + +void FUN_003e9958(void) + +{ + FUN_003e8fbc(); + return; +} + + +================================================================== + +### FUNC 003e996c (1000 bytes) name=FUN_003e996c + +undefined1 [16] +FUN_003e996c(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,byte *param_8) + +{ + undefined1 auVar1 [16]; + undefined1 auVar2 [16]; + undefined1 auVar3 [16]; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + int iVar8; + int iVar9; + uint uVar10; + long lVar11; + uint uVar12; + ulong uVar13; + long *local_30; + undefined8 local_28; + undefined1 local_20 [12]; + undefined4 uStack_14; + ulong local_8; + + /* try { // try from 003e9978 to 004e997b has its CatchHandler @ 003ea184 */ + /* try { // try from 003e9980 to 004e9983 has its CatchHandler @ 003ea194 */ + local_20._8_4_ = (undefined4)param_3; + uStack_14 = (undefined4)((ulong)param_3 >> 0x20); + local_30 = param_4; + local_28 = param_5; + local_20._0_8_ = param_2; + if ((*(uint *)(param_6 + 0x18) & 1) == 0) { + local_8 = 0xffffffffffffffff; + local_20 = FUN_003e8fbc(); + if (local_8 < 2) { + *param_8 = (byte)local_8 & 1; + } + else { + *param_8 = 1; + *param_7 = 4; + iVar8 = FUN_003e3e48(local_20); + iVar9 = FUN_003e3e48(&local_30); + if ((iVar8 == -1) == (iVar9 == -1)) { + /* try { // try from 003e9a0c to 004e9a0f has its CatchHandler @ 003ea134 */ + *param_7 = *param_7 | 2; + } + } +LAB_003e9ca0: + auVar2._12_4_ = uStack_14; + auVar2._0_12_ = local_20; + return auVar2; + } + bVar7 = true; + uVar13 = 0; + lVar11 = FUN_003e3d64(&local_8,param_6 + 0xd0); + bVar4 = *(long *)(lVar11 + 0x40) == 0; + bVar6 = true; + bVar5 = *(long *)(lVar11 + 0x30) == 0; +LAB_003e9a54: + if (bVar4 <= (bVar5 ^ 1U)) { + do { + if ((long *)local_20._0_8_ == (long *)0x0) { +LAB_003e9c68: + if (local_30 == (long *)0x0) { +LAB_003e9c1c: + iVar8 = 1; + goto joined_r0x003e9c20; + } + iVar8 = 1; +LAB_003e9a80: + /* try { // try from 003e9a80 to 004e9c9b has its CatchHandler @ 003ea194 */ +joined_r0x003e9bf4: + iVar9 = 0; + if ((int)local_28 == -1) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar10 = (uint)*(byte *)local_30[2]; + } + else { + uVar10 = (**(code **)(*local_30 + 0x48))(); + if (uVar10 == 0xffffffff) { + local_30 = (long *)0x0; + iVar9 = 1; + /* try { // try from 003e9d40 to 004e9d93 has its CatchHandler @ 003e94e0 */ + goto LAB_003e9a90; + } + } + local_28 = CONCAT44(local_28._4_4_,uVar10); + if (iVar8 == 0) goto LAB_003e9c1c; + } + else { +LAB_003e9a90: + if (iVar9 == iVar8) goto LAB_003e9c1c; + } +LAB_003e9a98: + if ((long *)local_20._0_8_ == (long *)0x0) { +LAB_003e9c90: + uVar12 = 0xff; + } + else { + if (local_20._8_4_ != 0xffffffff) goto LAB_003e9aac; + if (*(byte **)(local_20._0_8_ + 0x10) < *(byte **)(local_20._0_8_ + 0x18)) { + uVar10 = (uint)**(byte **)(local_20._0_8_ + 0x10); + } + else { + uVar10 = (**(code **)(*(long *)local_20._0_8_ + 0x48))(); + if (uVar10 == 0xffffffff) { + local_20._0_8_ = (long *)0x0; + goto LAB_003e9c90; + } + } + uVar12 = uVar10 & 0xff; + local_20._8_4_ = uVar10; + } + } + else { + if (local_20._8_4_ == 0xffffffff) { + if (*(byte **)(local_20._0_8_ + 0x10) < *(byte **)(local_20._0_8_ + 0x18)) { + uVar10 = (uint)**(byte **)(local_20._0_8_ + 0x10); + } + else { + uVar10 = (**(code **)(*(long *)local_20._0_8_ + 0x48))(); + if (uVar10 == 0xffffffff) { + local_20._0_8_ = (long *)0x0; + goto LAB_003e9c68; + } + } + iVar8 = 0; + local_20._8_4_ = uVar10; + if (local_30 != (long *)0x0) { + goto joined_r0x003e9bf4; + } + goto LAB_003e9a98; + } + iVar8 = 0; + if (local_30 != (long *)0x0) goto LAB_003e9a80; +LAB_003e9aac: + uVar12 = local_20._8_4_ & 0xff; + } + if (!bVar4) { + bVar6 = *(byte *)(*(long *)(lVar11 + 0x38) + uVar13) == uVar12; + } + if (bVar6 < bVar5) break; + if (!bVar5) { + bVar7 = *(byte *)(*(long *)(lVar11 + 0x28) + uVar13) == uVar12; + } + if ((bVar7 < bVar4) || (bVar7 < (bVar6 ^ 1U))) { + if ((bVar6) && ((*(ulong *)(lVar11 + 0x40) == uVar13 && (uVar13 != 0)))) { + *param_8 = 0; + *param_7 = 0; + goto LAB_003e9b84; + } + /* try { // try from 003e9d14 to 004e9d17 has its CatchHandler @ 003ea17c */ + *param_8 = 0; + goto LAB_003e9d18; + } + uVar13 = uVar13 + 1; + if ((long *)local_20._0_8_ != (long *)0x0) { + if (*(ulong *)(local_20._0_8_ + 0x10) < *(ulong *)(local_20._0_8_ + 0x18)) { + *(ulong *)(local_20._0_8_ + 0x10) = *(ulong *)(local_20._0_8_ + 0x10) + 1; + } + else { + (**(code **)(*(long *)local_20._0_8_ + 0x50))(); + } + local_20._8_4_ = 0xffffffff; + } + bVar4 = true; + if (bVar6) { + bVar4 = *(ulong *)(lVar11 + 0x40) <= uVar13; + } + bVar5 = true; + if (!bVar7) goto LAB_003e9a54; + bVar5 = *(ulong *)(lVar11 + 0x30) <= uVar13; + if (!bVar5 < bVar4) break; + } while( true ); + } + iVar8 = 0; +joined_r0x003e9c20: + if (((bVar6) && (*(ulong *)(lVar11 + 0x40) == uVar13)) && (uVar13 != 0)) { + *param_8 = 0; + if ((!bVar7) || (*(ulong *)(lVar11 + 0x30) != uVar13)) { + *param_7 = iVar8 << 1; + goto LAB_003e9b84; + } + } + else { + if (((bVar7) && (*(ulong *)(lVar11 + 0x30) == uVar13)) && (uVar13 != 0)) { + *param_8 = 1; + *param_7 = iVar8 << 1; + goto LAB_003e9ca0; + } + *param_8 = 0; + if (iVar8 != 0) { + *param_7 = 6; + auVar3._8_4_ = local_20._8_4_; + auVar3._0_8_ = local_20._0_8_; + auVar3._12_4_ = uStack_14; + return auVar3; + } + } +LAB_003e9d18: + *param_7 = 4; +LAB_003e9b84: + auVar1._8_4_ = local_20._8_4_; + auVar1._0_8_ = local_20._0_8_; + auVar1._12_4_ = uStack_14; + return auVar1; +} + + +================================================================== + +### FUNC 003e9d54 (2460 bytes) name=FUN_003e9d54 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003e9d54(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,short *param_8) + +{ + ulong uVar1; + bool bVar2; + bool bVar3; + undefined1 auVar4 [16]; + bool bVar5; + char cVar6; + bool bVar7; + byte bVar8; + char cVar9; + uint uVar10; + int iVar11; + int iVar12; + int iVar13; + uint uVar14; + long lVar15; + void *pvVar16; + char cVar17; + byte *pbVar18; + long lVar19; + uint uVar20; + ushort uVar21; + uint uVar22; + uint uVar23; + ulong __n; + uint uVar24; + int *piVar25; + ushort local_6c; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + uint local_28; + undefined4 uStack_24; + undefined1 auStack_18 [16]; + undefined *local_8; + + local_28 = (uint)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar15 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + uVar24 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar24 == 0x40) { + uVar10 = 8; + } + else { + uVar10 = 0x10; + if (uVar24 != 8) { + uVar10 = 10; + } + } + iVar11 = FUN_003e3e48(&local_30); + iVar12 = FUN_003e3e48(&local_40); + /* try { // try from 003e9de4 to 004e9de7 has its CatchHandler @ 003ea194 */ + if ((iVar11 == -1) == (iVar12 == -1)) { + uVar20 = 0; + local_6c = 0; +LAB_003ea44c: + cVar9 = *(char *)(lVar15 + 0x20); + bVar2 = true; + /* try { // try from 003ea454 to 004ea457 has its CatchHandler @ 003eb06c */ + iVar11 = 0; + bVar7 = false; +LAB_003ea1ac: + if (uVar10 == 0x10) goto LAB_003ea1b4; +LAB_003e9f68: + /* try { // try from 003e9f68 to 004e9f6b has its CatchHandler @ 003ea19c */ + /* try { // try from 003e9f74 to 004e9f77 has its CatchHandler @ 003ea17c */ + __n = (ulong)(int)uVar10; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 == '\0') goto LAB_003e9f88; +LAB_003ea1d4: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar9 = *(char *)(lVar15 + 0x88); + uVar24 = 0; + if (uVar10 != 0) { + uVar24 = 0xffff / uVar10; + } + if (cVar9 != '\0') goto LAB_003ea1f8; +LAB_003e9fa0: + if (bVar2) { +LAB_003ea6c8: + uVar21 = 0; + bVar5 = false; + bVar3 = false; + goto LAB_003ea120; + } + uVar23 = 0; + bVar5 = false; +LAB_003e9fc0: + if (10 < __n) goto LAB_003ea06c; +LAB_003e9fc8: + uVar21 = (ushort)uVar23; + /* try { // try from 003e9fcc to 004e9fcf has its CatchHandler @ 003ea110 */ + /* try { // try from 003e9fd4 to 004e9fd7 has its CatchHandler @ 003e94e0 */ + if ((0x2f < uVar20) && (uVar20 < (int)__n + 0x30U)) { + uVar14 = uVar20 - 0x30; +LAB_003e9fe0: + if (uVar23 <= uVar24) goto LAB_003ea0a8; +LAB_003e9fe8: + bVar5 = true; + if (local_30 == (long *)0x0) goto LAB_003ea0d8; +LAB_003e9ff4: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) { +LAB_003ea4d8: + local_28 = 0xffffffff; + uVar20 = (**(code **)(*local_30 + 0x48))(); + if (uVar20 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ea0d8; + } + goto LAB_003ea024; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003ea0d8; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) goto LAB_003ea4d8; + } + uVar20 = (uint)*pbVar18; +LAB_003ea024: + iVar12 = 0; + local_28 = uVar20; + if (local_40 == (long *)0x0) goto LAB_003ea04c; + iVar13 = 0; + if ((int)local_38 == -1) goto LAB_003ea0f4; +LAB_003ea044: + uVar21 = (ushort)uVar23; + if (iVar13 != iVar12) { +LAB_003ea04c: + do { + if (local_30 == (long *)0x0) { +LAB_003ea588: + uVar20 = 0xff; + goto LAB_003e9fc0; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar14 = (uint)*(byte *)local_30[2]; + } + else { + uVar14 = (**(code **)(*local_30 + 0x48))(); + if (uVar14 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ea588; + } + } + uVar20 = uVar14 & 0xff; + local_28 = uVar14; + goto LAB_003e9fc0; + } + /* try { // try from 003ea060 to 004ea063 has its CatchHandler @ 003ea19c */ + uVar20 = local_28 & 0xff; + if (__n < 0xb) goto LAB_003e9fc8; +LAB_003ea06c: + uVar21 = (ushort)uVar23; + /* try { // try from 003ea06c to 004ea06f has its CatchHandler @ 003ea1c0 */ + uVar14 = uVar20 - 0x30; + /* try { // try from 003ea078 to 004ea07b has its CatchHandler @ 003ea17c */ + if ((uVar14 & 0xff) < 10) goto LAB_003e9fe0; + /* try { // try from 003ea084 to 004ea087 has its CatchHandler @ 003ea0cc */ + if ((uVar20 - 0x61 & 0xff) < 6) { + uVar14 = uVar20 - 0x57; + goto LAB_003e9fe0; + } + /* try { // try from 003ea090 to 004ea093 has its CatchHandler @ 003ea17c */ + if (5 < (uVar20 - 0x41 & 0xff)) goto LAB_003ea590; + uVar14 = uVar20 - 0x37; + if (uVar24 < uVar23) goto LAB_003e9fe8; +LAB_003ea0a8: + uVar20 = uVar23 * uVar10; + /* try { // try from 003ea0ac to 004ea0af has its CatchHandler @ 003ea194 */ + iVar11 = iVar11 + 1; + uVar22 = uVar20 & 0xffff; + uVar23 = uVar22 + uVar14 & 0xffff; + /* catch() { ... } // from try @ 003e9768 with catch @ 003ea0cc + catch() { ... } // from try @ 003ea084 with catch @ 003ea0cc */ + bVar5 = (bool)(bVar5 | ((uVar20 & 0xffff) != 0xffff - uVar14 && + (int)(0xffff - uVar14) <= (int)uVar22)); + if (local_30 != (long *)0x0) goto LAB_003e9ff4; +LAB_003ea0d8: + uVar21 = (ushort)uVar23; + if (local_40 == (long *)0x0) break; + iVar12 = 1; + iVar13 = 0; + if ((int)local_38 != -1) goto LAB_003ea044; +LAB_003ea0f4: + uVar21 = (ushort)uVar23; + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar20 = (uint)*(byte *)local_40[2]; + } + else { + uVar20 = (**(code **)(*local_40 + 0x48))(); + if (uVar20 == 0xffffffff) goto code_r0x003ea618; + } + /* try { // try from 003ea10c to 004ea10f has its CatchHandler @ 003e94e0 */ + local_38 = CONCAT44(local_38._4_4_,uVar20); + /* catch() { ... } // from try @ 003e9fcc with catch @ 003ea110 */ + if (iVar12 == 0) break; + } while( true ); + } + goto LAB_003ea118; + } + } + else { + bVar8 = FUN_003e3e48(&local_30); + uVar20 = (uint)bVar8; + local_6c = (ushort)(*(byte *)(lVar15 + 0x6e) == bVar8); + if ((local_6c == 0) && (*(byte *)(lVar15 + 0x6f) != bVar8)) { + cVar9 = *(char *)(lVar15 + 0x20); + } + else { + /* try { // try from 003e9e10 to 004e9e13 has its CatchHandler @ 003ea17c */ + cVar9 = *(char *)(lVar15 + 0x20); + if ((cVar9 == '\0') || (*(byte *)(lVar15 + 0x49) != bVar8)) { + if (*(byte *)(lVar15 + 0x48) != bVar8) { + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + local_28 = 0xffffffff; + } + iVar11 = FUN_003e3e48(&local_30); + iVar12 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) goto LAB_003ea44c; + uVar20 = FUN_003e3e48(&local_30); + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar15 + 0x20); + } + } + else { + cVar9 = '\x01'; + } + } + iVar11 = 0; + bVar7 = false; + do { + if (((cVar9 != '\0') && (*(byte *)(lVar15 + 0x49) == uVar20)) || + (*(byte *)(lVar15 + 0x48) == uVar20)) break; + /* try { // try from 003e9eb4 to 004e9eb7 has its CatchHandler @ 003ea1c0 */ + if (*(byte *)(lVar15 + 0x72) == uVar20) { + if ((uVar10 == 10) < bVar7) goto LAB_003e9ec4; + iVar11 = iVar11 + 1; + if ((uVar10 == 8) || (bVar7 = true, uVar24 == 0)) { + iVar11 = 0; + bVar7 = true; + uVar10 = 8; + } + } + else { + if (!bVar7) break; +LAB_003e9ec4: + if ((*(byte *)(lVar15 + 0x70) != uVar20) && (*(byte *)(lVar15 + 0x71) != uVar20)) { + bVar2 = false; + bVar7 = true; + goto LAB_003ea1ac; + } + if ((uVar10 != 0x10) && (uVar24 != 0)) { + bVar2 = false; + bVar7 = true; + goto LAB_003e9f68; + } + iVar11 = 0; + bVar7 = false; + uVar10 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = 0xffffffff; + } + iVar12 = FUN_003e3e48(&local_30); + iVar13 = FUN_003e3e48(&local_40); + if ((iVar12 == -1) == (iVar13 == -1)) { + cVar9 = *(char *)(lVar15 + 0x20); + bVar2 = true; + goto LAB_003ea1ac; + } + uVar20 = FUN_003e3e48(&local_30); + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar15 + 0x20); + /* try { // try from 003e9f58 to 004e9f5b has its CatchHandler @ 003ea17c */ + } while (bVar7); + bVar2 = false; + if (uVar10 != 0x10) goto LAB_003e9f68; +LAB_003ea1b4: + /* catch() { ... } // from try @ 003e9eb4 with catch @ 003ea1c0 + catch() { ... } // from try @ 003ea06c with catch @ 003ea1c0 */ + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 != '\0') goto LAB_003ea1d4; +LAB_003e9f88: + cVar9 = *(char *)(lVar15 + 0x88); + /* try { // try from 003e9f90 to 004e9f93 has its CatchHandler @ 003e94e0 */ + uVar24 = 0; + if (uVar10 != 0) { + uVar24 = 0xffff / uVar10; + } + if (cVar9 == '\0') goto LAB_003e9fa0; +LAB_003ea1f8: + local_58 = &local_8; + if (bVar2) goto LAB_003ea6c8; + /* catch() { ... } // from try @ 003ea260 with catch @ 003ea200 + catch() { ... } // from try @ 003ea904 with catch @ 003ea200 + catch() { ... } // from try @ 003eaff4 with catch @ 003ea200 */ + uVar23 = 0; + bVar5 = false; +LAB_003ea20c: + if ((*(char *)(lVar15 + 0x20) != '\0') && (*(byte *)(lVar15 + 0x49) == uVar20)) + goto LAB_003ea310; +LAB_003ea220: + uVar21 = (ushort)uVar23; + if ((*(byte *)(lVar15 + 0x48) != uVar20) && + (pvVar16 = memchr((void *)(lVar15 + 0x72),uVar20,__n), pvVar16 != (void *)0x0)) { + iVar12 = (int)pvVar16 - (int)(void *)(lVar15 + 0x72); + if (0xf < iVar12) { + iVar12 = iVar12 + -6; + } + if (uVar24 < uVar23) { + bVar5 = true; + } + else { + /* try { // try from 003ea260 to 004ea263 has its CatchHandler @ 003ea200 */ + iVar11 = iVar11 + 1; + bVar5 = (bool)(bVar5 | 0xffff - iVar12 < (int)(uVar23 * uVar10 & 0xffff)); + uVar23 = (uVar23 * uVar10 & 0xffff) + iVar12 & 0xffff; + } +LAB_003ea280: + if (local_30 == (long *)0x0) goto LAB_003ea390; +LAB_003ea288: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) { +LAB_003ea5c4: + local_28 = 0xffffffff; + uVar20 = (**(code **)(*local_30 + 0x48))(); + if (uVar20 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ea390; + } + goto LAB_003ea2bc; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003ea390; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) goto LAB_003ea5c4; + } + uVar20 = (uint)*pbVar18; +LAB_003ea2bc: + local_28 = uVar20; + if (local_40 == (long *)0x0) goto LAB_003ea2e4; + cVar6 = '\0'; + do { + uVar21 = (ushort)uVar23; + cVar17 = '\0'; + if ((int)local_38 == -1) { + /* try { // try from 003ea3b0 to 004ea3b3 has its CatchHandler @ 003eaff8 */ + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar20 = (uint)*(byte *)local_40[2]; + } + else { + uVar20 = (**(code **)(*local_40 + 0x48))(); + if (uVar20 == 0xffffffff) { + local_40 = (long *)0x0; + cVar17 = cVar9; + goto LAB_003ea2dc; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar20); + cVar17 = '\0'; + } +LAB_003ea2dc: + if (cVar17 == cVar6) goto LAB_003ea118; +LAB_003ea2e4: + if (local_30 == (long *)0x0) { +LAB_003ea5fc: + uVar20 = 0xff; + goto LAB_003ea20c; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar14 = (uint)*(byte *)local_30[2]; + } + else { + /* try { // try from 003ea5ec to 004ea61b has its CatchHandler @ 003eaff8 */ + uVar14 = (**(code **)(*local_30 + 0x48))(); + if (uVar14 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ea5fc; + } + } + uVar20 = uVar14 & 0xff; + local_28 = uVar14; + goto LAB_003ea20c; + } + uVar20 = local_28 & 0xff; + if ((*(char *)(lVar15 + 0x20) == '\0') || (*(byte *)(lVar15 + 0x49) != uVar20)) + goto LAB_003ea220; +LAB_003ea310: + uVar21 = (ushort)uVar23; + if (iVar11 == 0) { + bVar3 = true; + iVar11 = 0; + goto LAB_003ea120; + } + lVar19 = *(long *)(local_8 + -0x18); + uVar1 = lVar19 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar1) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar1); + lVar19 = *(long *)(local_8 + -0x18); + } + local_8[lVar19] = (char)iVar11; + iVar11 = 0; + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003ea280; + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar1; + local_8[uVar1] = 0; + if (local_30 != (long *)0x0) goto LAB_003ea288; +LAB_003ea390: + uVar21 = (ushort)uVar23; + if (local_40 == (long *)0x0) goto LAB_003ea118; + cVar6 = cVar9; + } while( true ); + } + } +LAB_003ea590: + bVar3 = false; +LAB_003ea120: + /* try { // try from 003ea120 to 004ea123 has its CatchHandler @ 003e94e0 */ + local_58 = &local_8; + /* catch() { ... } // from try @ 003e966c with catch @ 003ea124 */ + if (*(long *)(local_8 + -0x18) == 0) { + /* catch() { ... } // from try @ 003e9a0c with catch @ 003ea134 */ + if ((iVar11 == 0) <= bVar7) { +LAB_003ea54c: + if (!bVar3) { + if (bVar5) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = local_6c + (uVar21 ^ -local_6c); + } + goto LAB_003ea154; + } + } + } + else { + FUN_004116e0(local_58,iVar11); + cVar9 = FUN_003ee0cc(*(undefined8 *)(lVar15 + 0x10),*(undefined8 *)(lVar15 + 0x18),local_58); + if (cVar9 == '\0') { + *param_7 = 4; + } + if (((iVar11 == 0) <= bVar7) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_003ea54c; + } + *param_8 = 0; + *param_7 = 4; +LAB_003ea154: + if (bVar2) { + *param_7 = *param_7 | 2; + } + auVar4._8_4_ = local_28; + auVar4._0_8_ = local_30; + auVar4._12_4_ = uStack_24; + /* catch() { ... } // from try @ 003e9630 with catch @ 003ea17c + catch() { ... } // from try @ 003e9674 with catch @ 003ea17c + catch() { ... } // from try @ 003e980c with catch @ 003ea17c + catch() { ... } // from try @ 003e9d14 with catch @ 003ea17c + catch() { ... } // from try @ 003e9e10 with catch @ 003ea17c + catch() { ... } // from try @ 003e9f58 with catch @ 003ea17c + catch() { ... } // from try @ 003e9f74 with catch @ 003ea17c + catch() { ... } // from try @ 003ea078 with catch @ 003ea17c + catch() { ... } // from try @ 003ea090 with catch @ 003ea17c */ + if (local_8 + -0x18 != PTR_DAT_00501f30) { + /* try { // try from 003ea67c to 004ea67f has its CatchHandler @ 003eb090 */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar11 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar11 + -1; + } + else { + piVar25 = (int *)(local_8 + -8); + do { + iVar11 = *piVar25; + cVar9 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar25,0x10); + if (bVar2) { + *piVar25 = iVar11 + -1; + cVar9 = ExclusiveMonitorsStatus(); + } + } while (cVar9 != '\0'); + } + if (iVar11 < 1) { + operator_delete(local_8 + -0x18); + } + } + /* catch() { ... } // from try @ 003e9978 with catch @ 003ea184 */ + /* catch() { ... } // from try @ 003e9934 with catch @ 003ea194 + catch() { ... } // from try @ 003e9980 with catch @ 003ea194 + catch() { ... } // from try @ 003e9a80 with catch @ 003ea194 + catch() { ... } // from try @ 003e9de4 with catch @ 003ea194 + catch() { ... } // from try @ 003ea0ac with catch @ 003ea194 */ + /* catch() { ... } // from try @ 003e9f68 with catch @ 003ea19c + catch() { ... } // from try @ 003ea060 with catch @ 003ea19c */ + return auVar4; +code_r0x003ea618: + local_40 = (long *)0x0; + iVar13 = 1; + goto LAB_003ea044; +LAB_003ea118: + bVar3 = false; + bVar2 = true; + goto LAB_003ea120; +} + + +================================================================== + +### FUNC 003ea71c (20 bytes) name=FUN_003ea71c + +void FUN_003ea71c(void) + +{ + FUN_003e9d54(); + return; +} + + +================================================================== + +### FUNC 003ea730 (2384 bytes) name=FUN_003ea730 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003ea730(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,int *param_8) + +{ + ulong uVar1; + bool bVar2; + bool bVar3; + undefined1 auVar4 [16]; + bool bVar5; + char cVar6; + bool bVar7; + byte bVar8; + char cVar9; + uint uVar10; + int iVar11; + int iVar12; + int iVar13; + uint uVar14; + long lVar15; + void *pvVar16; + char cVar17; + byte *pbVar18; + long lVar19; + uint uVar20; + uint uVar21; + ulong __n; + uint uVar22; + uint local_6c; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + uint local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (uint)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar15 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + uVar22 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar22 == 0x40) { + uVar10 = 8; + } + else { + uVar10 = 0x10; + if (uVar22 != 8) { + uVar10 = 10; + } + } + iVar11 = FUN_003e3e48(&local_30); + iVar12 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) { + uVar20 = 0; + local_6c = 0; +LAB_003eae0c: + /* try { // try from 003eae0c to 004eae0f has its CatchHandler @ 003eaff8 */ + cVar9 = *(char *)(lVar15 + 0x20); + bVar2 = true; + iVar11 = 0; + bVar7 = false; +LAB_003eab78: + if (uVar10 == 0x10) goto LAB_003eab80; +LAB_003ea944: + __n = (ulong)(int)uVar10; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 == '\0') goto LAB_003ea964; +LAB_003eaba0: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar9 = *(char *)(lVar15 + 0x88); + uVar22 = 0; + if (uVar10 != 0) { + uVar22 = 0xffffffff / uVar10; + } + if (cVar9 != '\0') goto LAB_003eabc4; +LAB_003ea97c: + if (bVar2) { +LAB_003eb068: + uVar21 = 0; + /* catch() { ... } // from try @ 003ea454 with catch @ 003eb06c + catch() { ... } // from try @ 003ead50 with catch @ 003eb06c + catch() { ... } // from try @ 003eadbc with catch @ 003eb06c + catch() { ... } // from try @ 003eae00 with catch @ 003eb06c */ + bVar5 = false; + bVar3 = false; + goto LAB_003eaaec; + } + uVar21 = 0; + bVar5 = false; +LAB_003ea998: + if (10 < __n) goto LAB_003eaa44; +LAB_003ea9a0: + if ((0x2f < uVar20) && (uVar20 < (int)__n + 0x30U)) { + uVar14 = uVar20 - 0x30; +LAB_003ea9b8: + if (uVar21 <= uVar22) goto LAB_003eaa80; +LAB_003ea9c0: + bVar5 = true; + if (local_30 == (long *)0x0) goto LAB_003eaaa4; +LAB_003ea9cc: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) { +LAB_003eaea0: + local_28 = 0xffffffff; + uVar20 = (**(code **)(*local_30 + 0x48))(); + if (uVar20 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eaaa4; + } + goto LAB_003ea9fc; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003eaaa4; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) goto LAB_003eaea0; + } + uVar20 = (uint)*pbVar18; +LAB_003ea9fc: + iVar12 = 0; + local_28 = uVar20; + if (local_40 == (long *)0x0) goto LAB_003eaa24; + iVar13 = 0; + if ((int)local_38 == -1) goto LAB_003eaac0; +LAB_003eaa1c: + if (iVar12 != iVar13) { +LAB_003eaa24: + do { + if (local_30 == (long *)0x0) { +LAB_003eaf50: + uVar20 = 0xff; + goto LAB_003ea998; + } + /* try { // try from 003eaa2c to 004eaa2f has its CatchHandler @ 003eb034 */ + if (local_28 == 0xffffffff) { + /* try { // try from 003eae30 to 004eae33 has its CatchHandler @ 003eb154 */ + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar14 = (uint)*(byte *)local_30[2]; + } + else { + /* try { // try from 003eaf3c to 004eaf3f has its CatchHandler @ 003eaff8 */ + uVar14 = (**(code **)(*local_30 + 0x48))(); + if (uVar14 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eaf50; + } + } + uVar20 = uVar14 & 0xff; + local_28 = uVar14; + goto LAB_003ea998; + } + uVar20 = local_28 & 0xff; + if (__n < 0xb) goto LAB_003ea9a0; +LAB_003eaa44: + uVar14 = uVar20 - 0x30; + if ((uVar14 & 0xff) < 10) goto LAB_003ea9b8; + if ((uVar20 - 0x61 & 0xff) < 6) { + uVar14 = uVar20 - 0x57; + goto LAB_003ea9b8; + } + /* try { // try from 003eaa6c to 004eac0f has its CatchHandler @ 003eb044 */ + if (5 < (uVar20 - 0x41 & 0xff)) goto LAB_003eaf58; + uVar14 = uVar20 - 0x37; + if (uVar22 < uVar21) goto LAB_003ea9c0; +LAB_003eaa80: + uVar20 = uVar21 * uVar10; + iVar11 = iVar11 + 1; + uVar21 = uVar14 + uVar20; + bVar5 = (bool)(bVar5 | ~uVar14 < uVar20); + if (local_30 != (long *)0x0) goto LAB_003ea9cc; +LAB_003eaaa4: + if (local_40 == (long *)0x0) break; + iVar12 = 1; + iVar13 = 0; + if ((int)local_38 != -1) goto LAB_003eaa1c; +LAB_003eaac0: + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar20 = (uint)*(byte *)local_40[2]; + } + else { + uVar20 = (**(code **)(*local_40 + 0x48))(); + if (uVar20 == 0xffffffff) goto code_r0x003eafe0; + } + local_38 = CONCAT44(local_38._4_4_,uVar20); + if (iVar12 == 0) break; + } while( true ); + } + goto LAB_003eaae4; + } + } + else { + bVar8 = FUN_003e3e48(&local_30); + uVar20 = (uint)bVar8; + local_6c = (uint)(*(byte *)(lVar15 + 0x6e) == bVar8); + /* try { // try from 003ea7e8 to 004ea7eb has its CatchHandler @ 003eaf94 */ + /* try { // try from 003eaddc to 004eaddf has its CatchHandler @ 003eaf94 */ + if ((local_6c == 0) && (*(byte *)(lVar15 + 0x6f) != bVar8)) { + /* try { // try from 003eade8 to 004eadeb has its CatchHandler @ 003eb02c */ + cVar9 = *(char *)(lVar15 + 0x20); + } + else { + cVar9 = *(char *)(lVar15 + 0x20); + /* try { // try from 003eadf4 to 004eadf7 has its CatchHandler @ 003eb0b8 */ + if ((cVar9 == '\0') || (*(byte *)(lVar15 + 0x49) != bVar8)) { + if (*(byte *)(lVar15 + 0x48) != bVar8) { + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + /* catch() { ... } // from try @ 003eac90 with catch @ 003eb054 + catch() { ... } // from try @ 003eadac with catch @ 003eb054 */ + } + local_28 = 0xffffffff; + } + iVar11 = FUN_003e3e48(&local_30); + iVar12 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) goto LAB_003eae0c; + uVar20 = FUN_003e3e48(&local_30); + /* try { // try from 003ea85c to 004ea85f has its CatchHandler @ 003eb0b8 */ + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar15 + 0x20); + } + } + else { + cVar9 = '\x01'; + /* try { // try from 003eae00 to 004eae03 has its CatchHandler @ 003eb06c */ + } + } + iVar11 = 0; + bVar7 = false; + do { + if (((cVar9 != '\0') && (*(byte *)(lVar15 + 0x49) == uVar20)) || + (*(byte *)(lVar15 + 0x48) == uVar20)) break; + if (*(byte *)(lVar15 + 0x72) == uVar20) { + if ((uVar10 == 10) < bVar7) goto LAB_003ea8a0; + iVar11 = iVar11 + 1; + /* try { // try from 003eadac to 004eadaf has its CatchHandler @ 003eb054 */ + if ((uVar10 == 8) || (bVar7 = true, uVar22 == 0)) { + /* try { // try from 003eadbc to 004eadbf has its CatchHandler @ 003eb06c */ + iVar11 = 0; + bVar7 = true; + uVar10 = 8; + } + } + else { + if (!bVar7) break; +LAB_003ea8a0: + if ((*(byte *)(lVar15 + 0x70) != uVar20) && (*(byte *)(lVar15 + 0x71) != uVar20)) { + /* try { // try from 003eadd0 to 004eadd3 has its CatchHandler @ 003eb02c */ + bVar2 = false; + bVar7 = true; + goto LAB_003eab78; + } + if ((uVar10 != 0x10) && (uVar22 != 0)) { + bVar2 = false; + bVar7 = true; + goto LAB_003ea944; + } + iVar11 = 0; + bVar7 = false; + uVar10 = 0x10; + } + if (local_30 != (long *)0x0) { + /* try { // try from 003ea8d8 to 004ea8db has its CatchHandler @ 003eb02c */ + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + /* catch() { ... } // from try @ 003eaa2c with catch @ 003eb034 + catch() { ... } // from try @ 003eaf30 with catch @ 003eb034 */ + (**(code **)(*local_30 + 0x50))(); + } + local_28 = 0xffffffff; + } + iVar12 = FUN_003e3e48(&local_30); + /* try { // try from 003ea904 to 004ea957 has its CatchHandler @ 003ea200 */ + iVar13 = FUN_003e3e48(&local_40); + if ((iVar12 == -1) == (iVar13 == -1)) { + cVar9 = *(char *)(lVar15 + 0x20); + bVar2 = true; + goto LAB_003eab78; + } + uVar20 = FUN_003e3e48(&local_30); + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar15 + 0x20); + } while (bVar7); + bVar2 = false; + if (uVar10 != 0x10) goto LAB_003ea944; +LAB_003eab80: + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 != '\0') goto LAB_003eaba0; +LAB_003ea964: + cVar9 = *(char *)(lVar15 + 0x88); + uVar22 = 0; + if (uVar10 != 0) { + uVar22 = 0xffffffff / uVar10; + } + if (cVar9 == '\0') goto LAB_003ea97c; +LAB_003eabc4: + local_58 = &local_8; + if (bVar2) goto LAB_003eb068; + uVar21 = 0; + bVar5 = false; +LAB_003eabd8: + if ((*(char *)(lVar15 + 0x20) != '\0') && (*(byte *)(lVar15 + 0x49) == uVar20)) + goto LAB_003eacd0; +LAB_003eabec: + if ((*(byte *)(lVar15 + 0x48) != uVar20) && + (pvVar16 = memchr((void *)(lVar15 + 0x72),uVar20,__n), pvVar16 != (void *)0x0)) { + uVar20 = (int)pvVar16 - (int)(void *)(lVar15 + 0x72); + if (0xf < (int)uVar20) { + uVar20 = uVar20 - 6; + } + if (uVar22 < uVar21) { + bVar5 = true; + } + else { + uVar14 = uVar21 * uVar10; + iVar11 = iVar11 + 1; + uVar21 = uVar20 + uVar14; + bVar5 = (bool)(bVar5 | ~uVar20 < uVar14); + } +LAB_003eac40: + if (local_30 == (long *)0x0) goto LAB_003ead50; +LAB_003eac48: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) { +LAB_003eaf8c: + local_28 = 0xffffffff; + /* try { // try from 003eaf90 to 004eaf93 has its CatchHandler @ 003eb154 */ + /* catch() { ... } // from try @ 003ea7e8 with catch @ 003eaf94 + catch() { ... } // from try @ 003eaddc with catch @ 003eaf94 */ + uVar20 = (**(code **)(*local_30 + 0x48))(); + if (uVar20 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ead50; + } + goto LAB_003eac7c; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + /* try { // try from 003eaf70 to 004eaf73 has its CatchHandler @ 003eb0e8 */ + if (local_30 == (long *)0x0) goto LAB_003ead50; + pbVar18 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar18) goto LAB_003eaf8c; + } + uVar20 = (uint)*pbVar18; +LAB_003eac7c: + local_28 = uVar20; + if (local_40 == (long *)0x0) goto LAB_003eaca4; + cVar6 = '\0'; + /* try { // try from 003eac90 to 004eac93 has its CatchHandler @ 003eb054 */ + do { + cVar17 = '\0'; + if ((int)local_38 == -1) { + /* try { // try from 003ead6c to 004ead6f has its CatchHandler @ 003eb044 */ + /* try { // try from 003ead78 to 004ead7b has its CatchHandler @ 003eb0c0 */ + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar20 = (uint)*(byte *)local_40[2]; + } + else { + /* try { // try from 003eaff4 to 004eaff7 has its CatchHandler @ 003ea200 */ + uVar20 = (**(code **)(*local_40 + 0x48))(); + /* catch() { ... } // from try @ 003ea3b0 with catch @ 003eaff8 + catch() { ... } // from try @ 003ea5ec with catch @ 003eaff8 + catch() { ... } // from try @ 003ea6f0 with catch @ 003eaff8 + catch() { ... } // from try @ 003eacf8 with catch @ 003eaff8 + catch() { ... } // from try @ 003ead44 with catch @ 003eaff8 + catch() { ... } // from try @ 003eae0c with catch @ 003eaff8 + catch() { ... } // from try @ 003eaf3c with catch @ 003eaff8 */ + if (uVar20 == 0xffffffff) { + local_40 = (long *)0x0; + cVar17 = cVar9; + goto LAB_003eac9c; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar20); + cVar17 = '\0'; + } +LAB_003eac9c: + if (cVar6 == cVar17) goto LAB_003eaae4; +LAB_003eaca4: + if (local_30 == (long *)0x0) { +LAB_003eafc4: + uVar20 = 0xff; + goto LAB_003eabd8; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar14 = (uint)*(byte *)local_30[2]; + } + else { + uVar14 = (**(code **)(*local_30 + 0x48))(); + if (uVar14 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eafc4; + } + } + uVar20 = uVar14 & 0xff; + local_28 = uVar14; + goto LAB_003eabd8; + } + uVar20 = local_28 & 0xff; + if ((*(char *)(lVar15 + 0x20) == '\0') || (*(byte *)(lVar15 + 0x49) != uVar20)) + goto LAB_003eabec; +LAB_003eacd0: + if (iVar11 == 0) { + bVar3 = true; + iVar11 = 0; + goto LAB_003eaaec; + } + lVar19 = *(long *)(local_8 + -0x18); + uVar1 = lVar19 + 1; + /* try { // try from 003eacf8 to 004eacfb has its CatchHandler @ 003eaff8 */ + if ((*(ulong *)(local_8 + -0x10) < uVar1) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar1); + lVar19 = *(long *)(local_8 + -0x18); + } + local_8[lVar19] = (char)iVar11; + iVar11 = 0; + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003eac40; + /* try { // try from 003ead3c to 004ead3f has its CatchHandler @ 003eb01c */ + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar1; + /* try { // try from 003ead44 to 004ead47 has its CatchHandler @ 003eaff8 */ + local_8[uVar1] = 0; + if (local_30 != (long *)0x0) goto LAB_003eac48; +LAB_003ead50: + /* try { // try from 003ead50 to 004ead53 has its CatchHandler @ 003eb06c */ + if (local_40 == (long *)0x0) goto LAB_003eaae4; + /* try { // try from 003ead60 to 004ead63 has its CatchHandler @ 003eb0c0 */ + cVar6 = cVar9; + } while( true ); + } + } +LAB_003eaf58: + bVar3 = false; +LAB_003eaaec: + local_58 = &local_8; + if (*(long *)(local_8 + -0x18) == 0) { + if ((iVar11 == 0) <= bVar7) { +LAB_003eaf14: + if (!bVar3) { + if (bVar5) { + *param_8 = -1; + /* try { // try from 003eaf30 to 004eaf33 has its CatchHandler @ 003eb034 */ + *param_7 = 4; + } + else { + /* catch() { ... } // from try @ 003ead3c with catch @ 003eb01c */ + *param_8 = (uVar21 ^ -local_6c) + local_6c; + /* catch() { ... } // from try @ 003ea8d8 with catch @ 003eb02c + catch() { ... } // from try @ 003eadd0 with catch @ 003eb02c + catch() { ... } // from try @ 003eade8 with catch @ 003eb02c */ + } + goto LAB_003eab20; + } + } + } + else { + FUN_004116e0(local_58,iVar11); + cVar9 = FUN_003ee0cc(*(undefined8 *)(lVar15 + 0x10),*(undefined8 *)(lVar15 + 0x18),local_58); + if (cVar9 == '\0') { + *param_7 = 4; + } + if (((iVar11 == 0) <= bVar7) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_003eaf14; + } + *param_8 = 0; + *param_7 = 4; +LAB_003eab20: + if (bVar2) { + *param_7 = *param_7 | 2; + } + auVar4._8_4_ = local_28; + auVar4._0_8_ = local_30; + auVar4._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + /* catch() { ... } // from try @ 003eaa6c with catch @ 003eb044 + catch() { ... } // from try @ 003ead6c with catch @ 003eb044 */ + FUN_003dca9c(local_8 + -0x18,auStack_10); + } + return auVar4; +code_r0x003eafe0: + local_40 = (long *)0x0; + iVar13 = 1; + goto LAB_003eaa1c; +LAB_003eaae4: + bVar3 = false; + bVar2 = true; + goto LAB_003eaaec; +} + + +================================================================== + +### FUNC 003eb0ac (20 bytes) name=FUN_003eb0ac + +void FUN_003eb0ac(void) + +{ + FUN_003ea730(); + /* catch() { ... } // from try @ 003ea85c with catch @ 003eb0b8 + catch() { ... } // from try @ 003eadf4 with catch @ 003eb0b8 */ + return; +} + + +================================================================== + +### FUNC 003eb0c0 (2384 bytes) name=FUN_003eb0c0 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003eb0c0(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long *param_8) + +{ + bool bVar1; + bool bVar2; + undefined1 auVar3 [16]; + bool bVar4; + char cVar5; + bool bVar6; + bool bVar7; + byte bVar8; + char cVar9; + int iVar10; + int iVar11; + int iVar12; + uint uVar13; + long lVar14; + void *pvVar15; + char cVar16; + byte *pbVar17; + ulong uVar18; + long lVar19; + uint uVar20; + ulong uVar21; + ulong __n; + ulong uVar22; + ulong uVar23; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + uint local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + /* catch() { ... } // from try @ 003ead60 with catch @ 003eb0c0 + catch() { ... } // from try @ 003ead78 with catch @ 003eb0c0 */ + local_28 = (uint)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + /* catch() { ... } // from try @ 003eaf70 with catch @ 003eb0e8 */ + /* try { // try from 003eb0f8 to 004eb11f has its CatchHandler @ 003eb120 */ + lVar14 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + uVar13 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar13 == 0x40) { + uVar23 = 8; + } + else { + /* catch() { ... } // from try @ 003eb0f8 with catch @ 003eb120 */ + uVar23 = 0x10; + if (uVar13 != 8) { + uVar23 = 10; + } + } + iVar10 = FUN_003e3e48(&local_30); + iVar11 = FUN_003e3e48(&local_40); + /* catch() { ... } // from try @ 003eae30 with catch @ 003eb154 + catch() { ... } // from try @ 003eaf90 with catch @ 003eb154 */ + if ((iVar10 == -1) == (iVar11 == -1)) { + uVar20 = 0; + bVar7 = false; +LAB_003eb7a4: + cVar9 = *(char *)(lVar14 + 0x20); + bVar1 = true; + iVar10 = 0; + bVar6 = false; +LAB_003eb50c: + if ((int)uVar23 == 0x10) goto LAB_003eb514; +LAB_003eb2d4: + __n = (ulong)(int)uVar23; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 == '\0') goto LAB_003eb2f4; +LAB_003eb534: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar9 = *(char *)(lVar14 + 0x88); + uVar22 = 0; + if (uVar23 != 0) { + uVar22 = 0xffffffffffffffff / uVar23; + } + if (cVar9 != '\0') goto LAB_003eb558; +LAB_003eb30c: + if (bVar1) { +LAB_003eb9f8: + uVar21 = 0; + bVar4 = false; + bVar2 = false; + goto LAB_003eb480; + } + /* try { // try from 003eb314 to 004eb317 has its CatchHandler @ 003eb438 */ + uVar21 = 0; + /* try { // try from 003eb31c to 004eb3fb has its CatchHandler @ 003eb22c */ + bVar4 = false; +LAB_003eb328: + if (10 < __n) goto LAB_003eb3d4; +LAB_003eb330: + if ((0x2f < uVar20) && (uVar20 < (int)__n + 0x30U)) { + uVar13 = uVar20 - 0x30; +LAB_003eb348: + if (uVar21 <= uVar22) goto LAB_003eb410; +LAB_003eb350: + bVar4 = true; + if (local_30 == (long *)0x0) goto LAB_003eb438; +LAB_003eb35c: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar17 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar17) { +LAB_003eb830: + local_28 = 0xffffffff; + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eb438; + } + goto LAB_003eb38c; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + /* try { // try from 003eb81c to 004eb81f has its CatchHandler @ 003eb708 */ + if (local_30 == (long *)0x0) goto LAB_003eb438; + pbVar17 = (byte *)local_30[2]; + /* catch() { ... } // from try @ 003eb8f4 with catch @ 003eb828 + catch() { ... } // from try @ 003eb93c with catch @ 003eb828 */ + if ((byte *)local_30[3] <= pbVar17) goto LAB_003eb830; + } + uVar13 = (uint)*pbVar17; +LAB_003eb38c: + iVar11 = 0; + local_28 = uVar13; + if (local_40 == (long *)0x0) goto LAB_003eb3b4; + iVar12 = 0; + if ((int)local_38 == -1) goto LAB_003eb454; +LAB_003eb3ac: + if (iVar11 != iVar12) { +LAB_003eb3b4: + do { + if (local_30 == (long *)0x0) { +LAB_003eb8e0: + uVar20 = 0xff; + goto LAB_003eb328; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar13 = (uint)*(byte *)local_30[2]; + } + else { + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eb8e0; + } + } + /* try { // try from 003eb7d4 to 004eb7e7 has its CatchHandler @ 003eb708 */ + uVar20 = uVar13 & 0xff; + local_28 = uVar13; + goto LAB_003eb328; + } + uVar20 = local_28 & 0xff; + if (__n < 0xb) goto LAB_003eb330; +LAB_003eb3d4: + uVar13 = uVar20 - 0x30; + if ((uVar13 & 0xff) < 10) goto LAB_003eb348; + if ((uVar20 - 0x61 & 0xff) < 6) { + uVar13 = uVar20 - 0x57; + goto LAB_003eb348; + } + if (5 < (uVar20 - 0x41 & 0xff)) goto LAB_003eb8e8; + uVar13 = uVar20 - 0x37; + if (uVar22 < uVar21) goto LAB_003eb350; +LAB_003eb410: + iVar10 = iVar10 + 1; + uVar18 = uVar21 * uVar23; + uVar21 = (long)(int)uVar13 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)(int)uVar13 < uVar18); + if (local_30 != (long *)0x0) goto LAB_003eb35c; +LAB_003eb438: + /* catch() { ... } // from try @ 003eb314 with catch @ 003eb438 */ + if (local_40 == (long *)0x0) break; + iVar11 = 1; + /* try { // try from 003eb448 to 004eb44b has its CatchHandler @ 003eb22c */ + iVar12 = 0; + if ((int)local_38 != -1) goto LAB_003eb3ac; +LAB_003eb454: + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar13 = (uint)*(byte *)local_40[2]; + } + else { + uVar13 = (**(code **)(*local_40 + 0x48))(); + if (uVar13 == 0xffffffff) goto code_r0x003eb970; + } + local_38 = CONCAT44(local_38._4_4_,uVar13); + if (iVar11 == 0) break; + } while( true ); + } + goto LAB_003eb478; + } + } + else { + bVar8 = FUN_003e3e48(&local_30); + uVar20 = (uint)bVar8; + bVar7 = *(byte *)(lVar14 + 0x6e) == bVar8; + /* try { // try from 003eb774 to 004eb7cb has its CatchHandler @ 003eb7f8 */ + if ((bVar7) || (*(byte *)(lVar14 + 0x6f) == bVar8)) { + cVar9 = *(char *)(lVar14 + 0x20); + if ((cVar9 == '\0') || (*(byte *)(lVar14 + 0x49) != bVar8)) { + if (*(byte *)(lVar14 + 0x48) != bVar8) { + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + local_28 = 0xffffffff; + } + iVar10 = FUN_003e3e48(&local_30); + iVar11 = FUN_003e3e48(&local_40); + if ((iVar10 == -1) == (iVar11 == -1)) goto LAB_003eb7a4; + uVar20 = FUN_003e3e48(&local_30); + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar14 + 0x20); + } + } + else { + cVar9 = '\x01'; + } + } + else { + cVar9 = *(char *)(lVar14 + 0x20); + } + iVar10 = 0; + bVar6 = false; + do { + if (((cVar9 != '\0') && (*(byte *)(lVar14 + 0x49) == uVar20)) || + (*(byte *)(lVar14 + 0x48) == uVar20)) break; + iVar11 = (int)uVar23; + if (*(byte *)(lVar14 + 0x72) == uVar20) { + if ((iVar11 == 10) < bVar6) goto LAB_003eb230; + iVar10 = iVar10 + 1; + if ((iVar11 == 8) || (bVar6 = true, uVar13 == 0)) { + iVar10 = 0; + bVar6 = true; + uVar23 = 8; + } + } + else { + /* catch() { ... } // from try @ 003eb294 with catch @ 003eb22c + catch() { ... } // from try @ 003eb31c with catch @ 003eb22c + catch() { ... } // from try @ 003eb448 with catch @ 003eb22c */ + if (!bVar6) break; +LAB_003eb230: + if ((*(byte *)(lVar14 + 0x70) != uVar20) && (*(byte *)(lVar14 + 0x71) != uVar20)) { + bVar1 = false; + bVar6 = true; + goto LAB_003eb50c; + } + if ((iVar11 != 0x10) && (uVar13 != 0)) { + bVar1 = false; + bVar6 = true; + goto LAB_003eb2d4; + } + iVar10 = 0; + bVar6 = false; + uVar23 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = 0xffffffff; + } + iVar11 = FUN_003e3e48(&local_30); + /* try { // try from 003eb294 to 004eb2c3 has its CatchHandler @ 003eb22c */ + iVar12 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) { + cVar9 = *(char *)(lVar14 + 0x20); + bVar1 = true; + goto LAB_003eb50c; + } + uVar20 = FUN_003e3e48(&local_30); + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar14 + 0x20); + } while (bVar6); + bVar1 = false; + if ((int)uVar23 != 0x10) goto LAB_003eb2d4; +LAB_003eb514: + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 != '\0') goto LAB_003eb534; +LAB_003eb2f4: + cVar9 = *(char *)(lVar14 + 0x88); + uVar22 = 0; + if (uVar23 != 0) { + uVar22 = 0xffffffffffffffff / uVar23; + } + if (cVar9 == '\0') goto LAB_003eb30c; +LAB_003eb558: + local_58 = &local_8; + if (bVar1) goto LAB_003eb9f8; + uVar21 = 0; + bVar4 = false; +LAB_003eb56c: + if ((*(char *)(lVar14 + 0x20) != '\0') && (*(byte *)(lVar14 + 0x49) == uVar20)) + goto LAB_003eb668; +LAB_003eb580: + if ((*(byte *)(lVar14 + 0x48) != uVar20) && + (pvVar15 = memchr((void *)(lVar14 + 0x72),uVar20,__n), pvVar15 != (void *)0x0)) { + iVar11 = (int)pvVar15 - (int)(void *)(lVar14 + 0x72); + if (0xf < iVar11) { + iVar11 = iVar11 + -6; + } + if (uVar22 < uVar21) { + bVar4 = true; + } + else { + iVar10 = iVar10 + 1; + uVar18 = uVar21 * uVar23; + uVar21 = (long)iVar11 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)iVar11 < uVar18); + } +LAB_003eb5d8: + if (local_30 == (long *)0x0) goto LAB_003eb6e8; +LAB_003eb5e0: + /* catch() { ... } // from try @ 003eb644 with catch @ 003eb5e4 + catch() { ... } // from try @ 003eb690 with catch @ 003eb5e4 + catch() { ... } // from try @ 003eb704 with catch @ 003eb5e4 */ + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar17 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar17) { +LAB_003eb91c: + local_28 = 0xffffffff; + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eb6e8; + } + goto LAB_003eb614; + } + } + else { + /* try { // try from 003eb8f4 to 004eb907 has its CatchHandler @ 003eb828 */ + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003eb6e8; + pbVar17 = (byte *)local_30[2]; + /* catch() { ... } // from try @ 003eb894 with catch @ 003eb918 */ + if ((byte *)local_30[3] <= pbVar17) goto LAB_003eb91c; + } + uVar13 = (uint)*pbVar17; +LAB_003eb614: + local_28 = uVar13; + if (local_40 == (long *)0x0) goto LAB_003eb63c; + cVar5 = '\0'; + do { + cVar16 = '\0'; + if ((int)local_38 == -1) { + /* try { // try from 003eb704 to 004eb707 has its CatchHandler @ 003eb5e4 */ + /* catch() { ... } // from try @ 003eb7d4 with catch @ 003eb708 + catch() { ... } // from try @ 003eb81c with catch @ 003eb708 */ + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar13 = (uint)*(byte *)local_40[2]; + } + else { + uVar13 = (**(code **)(*local_40 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_40 = (long *)0x0; + cVar16 = cVar9; + goto LAB_003eb634; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar13); + cVar16 = '\0'; + } +LAB_003eb634: + if (cVar5 == cVar16) goto LAB_003eb478; +LAB_003eb63c: + if (local_30 == (long *)0x0) { +LAB_003eb954: + uVar20 = 0xff; + goto LAB_003eb56c; + } + /* try { // try from 003eb644 to 004eb647 has its CatchHandler @ 003eb5e4 */ + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar13 = (uint)*(byte *)local_30[2]; + } + else { + /* try { // try from 003eb93c to 004eb93f has its CatchHandler @ 003eb828 */ + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + /* catch() { ... } // from try @ 003eba94 with catch @ 003eb950 + catch() { ... } // from try @ 003ebadc with catch @ 003eb950 */ + local_30 = (long *)0x0; + goto LAB_003eb954; + } + } + /* catch() { ... } // from try @ 003eb774 with catch @ 003eb7f8 */ + uVar20 = uVar13 & 0xff; + local_28 = uVar13; + goto LAB_003eb56c; + } + uVar20 = local_28 & 0xff; + if ((*(char *)(lVar14 + 0x20) == '\0') || (*(byte *)(lVar14 + 0x49) != uVar20)) + goto LAB_003eb580; +LAB_003eb668: + if (iVar10 == 0) { + bVar2 = true; + iVar10 = 0; + goto LAB_003eb480; + } + lVar19 = *(long *)(local_8 + -0x18); + uVar18 = lVar19 + 1; + /* try { // try from 003eb688 to 004eb68b has its CatchHandler @ 003eb6f4 */ + /* try { // try from 003eb690 to 004eb6df has its CatchHandler @ 003eb5e4 */ + if ((*(ulong *)(local_8 + -0x10) < uVar18) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar18); + lVar19 = *(long *)(local_8 + -0x18); + } + local_8[lVar19] = (char)iVar10; + iVar10 = 0; + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003eb5d8; + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar18; + local_8[uVar18] = 0; + if (local_30 != (long *)0x0) goto LAB_003eb5e0; +LAB_003eb6e8: + if (local_40 == (long *)0x0) goto LAB_003eb478; + /* catch() { ... } // from try @ 003eb688 with catch @ 003eb6f4 */ + cVar5 = cVar9; + } while( true ); + } + } +LAB_003eb8e8: + bVar2 = false; +LAB_003eb480: + local_58 = &local_8; + if (*(long *)(local_8 + -0x18) == 0) { + if ((iVar10 == 0) <= bVar6) { +LAB_003eb8a4: + if (!bVar2) { + if (bVar4) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = (uVar21 ^ -(ulong)bVar7) + (ulong)bVar7; + /* try { // try from 003eb9bc to 004eb9bf has its CatchHandler @ 003ebab8 */ + } + goto LAB_003eb4b4; + } + } + } + else { + FUN_004116e0(local_58,iVar10); + cVar9 = FUN_003ee0cc(*(undefined8 *)(lVar14 + 0x10),*(undefined8 *)(lVar14 + 0x18),local_58); + if (cVar9 == '\0') { + *param_7 = 4; + } + /* try { // try from 003eb894 to 004eb8eb has its CatchHandler @ 003eb918 */ + if (((iVar10 == 0) <= bVar6) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_003eb8a4; + } + *param_8 = 0; + *param_7 = 4; +LAB_003eb4b4: + if (bVar1) { + *param_7 = *param_7 | 2; + } + auVar3._8_4_ = local_28; + auVar3._0_8_ = local_30; + auVar3._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_8 + -0x18,auStack_10); + } + return auVar3; +code_r0x003eb970: + local_40 = (long *)0x0; + iVar12 = 1; + goto LAB_003eb3ac; +LAB_003eb478: + bVar2 = false; + bVar1 = true; + goto LAB_003eb480; +} + + +================================================================== + +### FUNC 003eba3c (20 bytes) name=FUN_003eba3c + +void FUN_003eba3c(void) + +{ + FUN_003eb0c0(); + return; +} + + +================================================================== + +### FUNC 003eba50 (108 bytes) name=FUN_003eba50 + +void FUN_003eba50(void) + +{ + uint uVar1; + long in_x5; + undefined8 *in_x7; + undefined8 local_8; + + uVar1 = *(uint *)(in_x5 + 0x18); + /* try { // try from 003eba6c to 004eba6f has its CatchHandler @ 003ebae0 */ + /* try { // try from 003eba74 to 004eba8b has its CatchHandler @ 003ebab8 */ + *(uint *)(in_x5 + 0x18) = uVar1 & 0xffffffb5 | 8; + FUN_003eb0c0(); + *(uint *)(in_x5 + 0x18) = uVar1; + /* try { // try from 003eba94 to 004ebaa7 has its CatchHandler @ 003eb950 */ + *in_x7 = local_8; + /* catch() { ... } // from try @ 003eb9bc with catch @ 003ebab8 + catch() { ... } // from try @ 003eba74 with catch @ 003ebab8 */ + return; +} + + +================================================================== + +### FUNC 003ebabc (2416 bytes) name=FUN_003ebabc + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003ebabc(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,ulong *param_8) + +{ + ulong uVar1; + ulong uVar2; + bool bVar3; + bool bVar4; + undefined1 auVar5 [16]; + bool bVar6; + char cVar7; + bool bVar8; + bool bVar9; + byte bVar10; + char cVar11; + int iVar12; + int iVar13; + int iVar14; + int iVar15; + uint uVar16; + long lVar17; + void *pvVar18; + char cVar19; + byte *pbVar20; + ulong uVar21; + long lVar22; + uint uVar23; + ulong uVar24; + ulong uVar25; + ulong uVar26; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + uint local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (uint)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + /* try { // try from 003ebadc to 004ebadf has its CatchHandler @ 003eb950 */ + /* catch() { ... } // from try @ 003eba6c with catch @ 003ebae0 */ + lVar17 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + uVar16 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar16 == 0x40) { + iVar15 = 8; + } + else { + iVar15 = 0x10; + /* catch() { ... } // from try @ 003ebbe8 with catch @ 003ebb20 + catch() { ... } // from try @ 003ebc30 with catch @ 003ebb20 */ + if (uVar16 != 8) { + iVar15 = 10; + } + } + iVar12 = FUN_003e3e48(&local_30); + iVar13 = FUN_003e3e48(&local_40); + if ((iVar12 == -1) == (iVar13 == -1)) { + uVar23 = 0; + bVar9 = false; +LAB_003ec1a8: + cVar11 = *(char *)(lVar17 + 0x20); + bVar3 = true; + iVar12 = 0; + bVar8 = false; +LAB_003ebf24: + if (iVar15 == 0x10) goto LAB_003ebf2c; +LAB_003ebcd0: + uVar25 = (ulong)iVar15; + } + else { + bVar10 = FUN_003e3e48(&local_30); + uVar23 = (uint)bVar10; + bVar9 = *(byte *)(lVar17 + 0x6e) == bVar10; + if ((bVar9) || (*(byte *)(lVar17 + 0x6f) == bVar10)) { + cVar11 = *(char *)(lVar17 + 0x20); + if ((cVar11 == '\0') || (*(byte *)(lVar17 + 0x49) != bVar10)) { + if (*(byte *)(lVar17 + 0x48) != bVar10) { + /* try { // try from 003ebb8c to 004ebbdf has its CatchHandler @ 003ebc0c */ + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + local_28 = 0xffffffff; + } + iVar12 = FUN_003e3e48(&local_30); + iVar13 = FUN_003e3e48(&local_40); + if ((iVar12 == -1) == (iVar13 == -1)) goto LAB_003ec1a8; + uVar23 = FUN_003e3e48(&local_30); + /* try { // try from 003ebbe8 to 004ebbfb has its CatchHandler @ 003ebb20 */ + uVar23 = uVar23 & 0xff; + cVar11 = *(char *)(lVar17 + 0x20); + } + } + else { + cVar11 = '\x01'; + } + } + else { + cVar11 = *(char *)(lVar17 + 0x20); + } + iVar12 = 0; + bVar8 = false; + do { + /* catch() { ... } // from try @ 003ebb8c with catch @ 003ebc0c */ + if (((cVar11 != '\0') && (*(byte *)(lVar17 + 0x49) == uVar23)) || + (*(byte *)(lVar17 + 0x48) == uVar23)) break; + if (*(byte *)(lVar17 + 0x72) == uVar23) { + /* catch() { ... } // from try @ 003ebeec with catch @ 003ebf6c */ + if ((iVar15 == 10) < bVar8) goto LAB_003ebc2c; + iVar12 = iVar12 + 1; + if ((iVar15 == 8) || (bVar8 = true, uVar16 == 0)) { + iVar12 = 0; + /* try { // try from 003ebf90 to 004ebf93 has its CatchHandler @ 003ebe80 */ + bVar8 = true; + iVar15 = 8; + } + } + else { + if (!bVar8) break; +LAB_003ebc2c: + /* try { // try from 003ebc30 to 004ebc33 has its CatchHandler @ 003ebb20 */ + /* catch() { ... } // from try @ 003ebd08 with catch @ 003ebc40 + catch() { ... } // from try @ 003ebd50 with catch @ 003ebc40 */ + if ((*(byte *)(lVar17 + 0x70) != uVar23) && (*(byte *)(lVar17 + 0x71) != uVar23)) { + /* catch() { ... } // from try @ 003ec098 with catch @ 003ebfa0 + catch() { ... } // from try @ 003ec100 with catch @ 003ebfa0 */ + bVar3 = false; + bVar8 = true; + goto LAB_003ebf24; + } + if ((iVar15 != 0x10) && (uVar16 != 0)) { + bVar3 = false; + /* try { // try from 003ec40c to 004ec40f has its CatchHandler @ 003ec2c0 */ + bVar8 = true; + goto LAB_003ebcd0; + } + iVar12 = 0; + bVar8 = false; + iVar15 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + (**(code **)(*local_30 + 0x50))(); + /* catch() { ... } // from try @ 003ec370 with catch @ 003ec3e8 */ + } + local_28 = 0xffffffff; + } + iVar13 = FUN_003e3e48(&local_30); + iVar14 = FUN_003e3e48(&local_40); + if ((iVar13 == -1) == (iVar14 == -1)) { + cVar11 = *(char *)(lVar17 + 0x20); + bVar3 = true; + goto LAB_003ebf24; + } + /* try { // try from 003ebcac to 004ebcff has its CatchHandler @ 003ebd2c */ + uVar23 = FUN_003e3e48(&local_30); + uVar23 = uVar23 & 0xff; + cVar11 = *(char *)(lVar17 + 0x20); + } while (bVar8); + bVar3 = false; + if (iVar15 != 0x10) goto LAB_003ebcd0; +LAB_003ebf2c: + uVar25 = 0x16; + } + /* try { // try from 003ebf48 to 004ebf5b has its CatchHandler @ 003ebe80 */ + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar11 != '\0') { + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + } + local_58 = &local_8; + uVar26 = (ulong)iVar15; + cVar11 = *(char *)(lVar17 + 0x88); + /* try { // try from 003ebd08 to 004ebd1b has its CatchHandler @ 003ebc40 */ + uVar1 = 0x7fffffffffffffff; + if (bVar9) { + uVar1 = 0x8000000000000000; + } + uVar2 = 0; + if (uVar26 != 0) { + uVar2 = uVar1 / uVar26; + } + if (cVar11 == '\0') { + if (bVar3) { +LAB_003ec414: + uVar24 = 0; + bVar6 = false; + bVar4 = false; + /* catch() { ... } // from try @ 003ec530 with catch @ 003ec420 + catch() { ... } // from try @ 003ec584 with catch @ 003ec420 */ + goto LAB_003ebe98; + } + uVar24 = 0; + /* catch() { ... } // from try @ 003ebcac with catch @ 003ebd2c */ + bVar6 = false; +LAB_003ebd3c: + if (10 < uVar25) goto LAB_003ebde8; +LAB_003ebd44: + /* try { // try from 003ebd50 to 004ebd53 has its CatchHandler @ 003ebc40 */ + if ((0x2f < uVar23) && (uVar23 < (int)uVar25 + 0x30U)) { + uVar16 = uVar23 - 0x30; +LAB_003ebd5c: + /* catch() { ... } // from try @ 003ebe28 with catch @ 003ebd60 + catch() { ... } // from try @ 003ebe70 with catch @ 003ebd60 */ + if (uVar24 <= uVar2) goto LAB_003ebe24; +LAB_003ebd64: + bVar6 = true; + if (local_30 == (long *)0x0) goto LAB_003ebe50; +LAB_003ebd70: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) { +LAB_003ec234: + local_28 = 0xffffffff; + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + /* try { // try from 003ec250 to 004ec263 has its CatchHandler @ 003ec120 */ + goto LAB_003ebe50; + } + goto LAB_003ebda0; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003ebe50; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) goto LAB_003ec234; + } + uVar16 = (uint)*pbVar20; +LAB_003ebda0: + iVar15 = 0; + local_28 = uVar16; + if (local_40 == (long *)0x0) goto LAB_003ebdc8; + iVar13 = 0; + if ((int)local_38 == -1) goto LAB_003ebe6c; +LAB_003ebdc0: + if (iVar15 != iVar13) { +LAB_003ebdc8: + do { + /* try { // try from 003ebdcc to 004ebe1f has its CatchHandler @ 003ebe4c */ + if (local_30 == (long *)0x0) { +LAB_003ec26c: + uVar23 = 0xff; + goto LAB_003ebd3c; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar16 = (uint)*(byte *)local_30[2]; + } + else { + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ec26c; + } + } + uVar23 = uVar16 & 0xff; + local_28 = uVar16; + goto LAB_003ebd3c; + } + uVar23 = local_28 & 0xff; + if (uVar25 < 0xb) goto LAB_003ebd44; +LAB_003ebde8: + uVar16 = uVar23 - 0x30; + if ((uVar16 & 0xff) < 10) goto LAB_003ebd5c; + if ((uVar23 - 0x61 & 0xff) < 6) { + uVar16 = uVar23 - 0x57; + /* try { // try from 003ec208 to 004ec247 has its CatchHandler @ 003ec280 */ + goto LAB_003ebd5c; + } + if (5 < (uVar23 - 0x41 & 0xff)) goto LAB_003ec274; + uVar16 = uVar23 - 0x37; + if (uVar2 < uVar24) goto LAB_003ebd64; +LAB_003ebe24: + /* try { // try from 003ebe28 to 004ebe3b has its CatchHandler @ 003ebd60 */ + uVar21 = uVar24 * uVar26; + iVar12 = iVar12 + 1; + uVar24 = (long)(int)uVar16 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)(int)uVar16 < uVar21); + /* catch() { ... } // from try @ 003ebdcc with catch @ 003ebe4c */ + if (local_30 != (long *)0x0) goto LAB_003ebd70; +LAB_003ebe50: + if (local_40 == (long *)0x0) break; + iVar15 = 1; + iVar13 = 0; + if ((int)local_38 != -1) goto LAB_003ebdc0; +LAB_003ebe6c: + /* try { // try from 003ebe70 to 004ebe73 has its CatchHandler @ 003ebd60 */ + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar16 = (uint)*(byte *)local_40[2]; + } + else { + /* try { // try from 003ec370 to 004ec3af has its CatchHandler @ 003ec3e8 */ + uVar16 = (**(code **)(*local_40 + 0x48))(); + if (uVar16 == 0xffffffff) goto code_r0x003ec380; + } + /* catch() { ... } // from try @ 003ebf48 with catch @ 003ebe80 + catch() { ... } // from try @ 003ebf90 with catch @ 003ebe80 */ + local_38 = CONCAT44(local_38._4_4_,uVar16); + if (iVar15 == 0) break; + } while( true ); + } + goto LAB_003ebe90; + } + } + else { + if (bVar3) goto LAB_003ec414; + uVar24 = 0; + bVar6 = false; +LAB_003ebfbc: + if ((*(char *)(lVar17 + 0x20) != '\0') && (*(byte *)(lVar17 + 0x49) == uVar23)) + goto LAB_003ec0bc; +LAB_003ebfd0: + if ((*(byte *)(lVar17 + 0x48) != uVar23) && + (pvVar18 = memchr((void *)(lVar17 + 0x72),uVar23,uVar25), pvVar18 != (void *)0x0)) { + iVar15 = (int)pvVar18 - (int)(void *)(lVar17 + 0x72); + if (0xf < iVar15) { + iVar15 = iVar15 + -6; + } + if (uVar2 < uVar24) { + bVar6 = true; + } + else { + uVar21 = uVar24 * uVar26; + iVar12 = iVar12 + 1; + uVar24 = (long)iVar15 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)iVar15 < uVar21); + } +LAB_003ec02c: + if (local_30 == (long *)0x0) goto LAB_003ec13c; +LAB_003ec034: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + /* try { // try from 003ec050 to 004ec08f has its CatchHandler @ 003ec0dc */ + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) { +LAB_003ec32c: + local_28 = 0xffffffff; + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ec13c; + } + goto LAB_003ec068; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003ec13c; + pbVar20 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar20) goto LAB_003ec32c; + } + uVar16 = (uint)*pbVar20; +LAB_003ec068: + local_28 = uVar16; + if (local_40 == (long *)0x0) goto LAB_003ec090; + cVar7 = '\0'; + do { + cVar19 = '\0'; + if ((int)local_38 == -1) { + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar16 = (uint)*(byte *)local_40[2]; + } + else { + uVar16 = (**(code **)(*local_40 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_40 = (long *)0x0; + cVar19 = cVar11; + goto LAB_003ec088; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar16); + cVar19 = '\0'; + } +LAB_003ec088: + if (cVar19 == cVar7) goto LAB_003ebe90; +LAB_003ec090: + if (local_30 == (long *)0x0) { +LAB_003ec364: + uVar23 = 0xff; + goto LAB_003ebfbc; + } + /* try { // try from 003ec098 to 004ec0ab has its CatchHandler @ 003ebfa0 */ + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar16 = (uint)*(byte *)local_30[2]; + } + else { + uVar16 = (**(code **)(*local_30 + 0x48))(); + if (uVar16 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ec364; + } + } + uVar23 = uVar16 & 0xff; + local_28 = uVar16; + goto LAB_003ebfbc; + } + uVar23 = local_28 & 0xff; + if ((*(char *)(lVar17 + 0x20) == '\0') || (*(byte *)(lVar17 + 0x49) != uVar23)) + goto LAB_003ebfd0; +LAB_003ec0bc: + if (iVar12 == 0) { + bVar4 = true; + iVar12 = 0; + goto LAB_003ebe98; + } + lVar22 = *(long *)(local_8 + -0x18); + uVar21 = lVar22 + 1; + /* catch() { ... } // from try @ 003ec050 with catch @ 003ec0dc */ + if ((*(ulong *)(local_8 + -0x10) < uVar21) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar21); + /* try { // try from 003ec100 to 004ec103 has its CatchHandler @ 003ebfa0 */ + lVar22 = *(long *)(local_8 + -0x18); + } + local_8[lVar22] = (char)iVar12; + iVar12 = 0; + /* catch() { ... } // from try @ 003ec250 with catch @ 003ec120 + catch() { ... } // from try @ 003ec2a4 with catch @ 003ec120 */ + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003ec02c; + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar21; + local_8[uVar21] = 0; + if (local_30 != (long *)0x0) goto LAB_003ec034; +LAB_003ec13c: + if (local_40 == (long *)0x0) goto LAB_003ebe90; + cVar7 = cVar11; + } while( true ); + } + } +LAB_003ec274: + bVar4 = false; + /* catch() { ... } // from try @ 003ec208 with catch @ 003ec280 */ + if (*(long *)(local_8 + -0x18) != 0) goto LAB_003ec284; +LAB_003ebea4: + if ((iVar12 == 0) <= bVar8) goto LAB_003ec2cc; +LAB_003ebeb8: + *param_8 = 0; + *param_7 = 4; +LAB_003ebecc: + if (bVar3) { + *param_7 = *param_7 | 2; + } + auVar5._8_4_ = local_28; + auVar5._0_8_ = local_30; + auVar5._12_4_ = uStack_24; + /* try { // try from 003ebeec to 004ebf3f has its CatchHandler @ 003ebf6c */ + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_8 + -0x18,auStack_10); + } + return auVar5; +code_r0x003ec380: + local_40 = (long *)0x0; + iVar13 = 1; + goto LAB_003ebdc0; +LAB_003ebe90: + bVar4 = false; + bVar3 = true; +LAB_003ebe98: + if (*(long *)(local_8 + -0x18) == 0) goto LAB_003ebea4; +LAB_003ec284: + FUN_004116e0(local_58,iVar12); + cVar11 = FUN_003ee0cc(*(undefined8 *)(lVar17 + 0x10),*(undefined8 *)(lVar17 + 0x18),local_58); + /* try { // try from 003ec2a4 to 004ec2a7 has its CatchHandler @ 003ec120 */ + if (cVar11 == '\0') { + *param_7 = 4; + } + /* catch() { ... } // from try @ 003ec3b8 with catch @ 003ec2c0 + catch() { ... } // from try @ 003ec40c with catch @ 003ec2c0 */ + if (((iVar12 == 0) <= bVar8) || (*(long *)(local_8 + -0x18) != 0)) { +LAB_003ec2cc: + if (!bVar4) { + if (bVar6) { + uVar25 = 0x7fffffffffffffff; + if (bVar9) { + uVar25 = 0x8000000000000000; + } + *param_8 = uVar25; + *param_7 = 4; + } + else { + /* try { // try from 003ec3b8 to 004ec3cb has its CatchHandler @ 003ec2c0 */ + uVar25 = -uVar24; + if (!bVar9) { + uVar25 = uVar24; + } + *param_8 = uVar25; + } + goto LAB_003ebecc; + } + } + goto LAB_003ebeb8; +} + + +================================================================== + +### FUNC 003ec458 (20 bytes) name=FUN_003ec458 + +void FUN_003ec458(void) + +{ + FUN_003ebabc(); + return; +} + + +================================================================== + +### FUNC 003ec46c (2384 bytes) name=FUN_003ec46c + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_003ec46c(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long *param_8) + +{ + bool bVar1; + bool bVar2; + undefined1 auVar3 [16]; + bool bVar4; + char cVar5; + bool bVar6; + bool bVar7; + byte bVar8; + char cVar9; + int iVar10; + int iVar11; + int iVar12; + uint uVar13; + long lVar14; + void *pvVar15; + char cVar16; + byte *pbVar17; + ulong uVar18; + long lVar19; + uint uVar20; + ulong uVar21; + ulong __n; + ulong uVar22; + ulong uVar23; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + uint local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (uint)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar14 = FUN_003e3d64(auStack_18,param_6 + 0xd0); + uVar13 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar13 == 0x40) { + uVar23 = 8; + } + else { + uVar23 = 0x10; + if (uVar13 != 8) { + uVar23 = 10; + } + } + iVar10 = FUN_003e3e48(&local_30); + /* try { // try from 003ec4e8 to 004ec527 has its CatchHandler @ 003ec560 */ + iVar11 = FUN_003e3e48(&local_40); + if ((iVar10 == -1) == (iVar11 == -1)) { + uVar20 = 0; + bVar7 = false; +LAB_003ecb50: + cVar9 = *(char *)(lVar14 + 0x20); + bVar1 = true; + iVar10 = 0; + bVar6 = false; +LAB_003ec8b8: + if ((int)uVar23 == 0x10) goto LAB_003ec8c0; +LAB_003ec680: + __n = (ulong)(int)uVar23; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 == '\0') goto LAB_003ec6a0; +LAB_003ec8e0: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar9 = *(char *)(lVar14 + 0x88); + uVar22 = 0; + if (uVar23 != 0) { + uVar22 = 0xffffffffffffffff / uVar23; + } + if (cVar9 != '\0') goto LAB_003ec904; +LAB_003ec6b8: + if (bVar1) { +LAB_003ecda4: + uVar21 = 0; + bVar4 = false; + bVar2 = false; + goto LAB_003ec82c; + } + uVar21 = 0; + bVar4 = false; +LAB_003ec6d4: + if (10 < __n) goto LAB_003ec780; +LAB_003ec6dc: + if ((0x2f < uVar20) && (uVar20 < (int)__n + 0x30U)) { + uVar13 = uVar20 - 0x30; +LAB_003ec6f4: + if (uVar21 <= uVar22) goto LAB_003ec7bc; +LAB_003ec6fc: + bVar4 = true; + if (local_30 == (long *)0x0) goto LAB_003ec7e4; +LAB_003ec708: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + /* try { // try from 003ec720 to 004ec723 has its CatchHandler @ 003ec728 */ + pbVar17 = (byte *)local_30[2]; + /* catch() { ... } // from try @ 003ec664 with catch @ 003ec728 + catch() { ... } // from try @ 003ec720 with catch @ 003ec728 */ + if ((byte *)local_30[3] <= pbVar17) { +LAB_003ecbdc: + local_28 = 0xffffffff; + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ec7e4; + } + goto LAB_003ec738; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003ec7e4; + pbVar17 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar17) goto LAB_003ecbdc; + } + uVar13 = (uint)*pbVar17; +LAB_003ec738: + iVar11 = 0; + local_28 = uVar13; + if (local_40 == (long *)0x0) goto LAB_003ec760; + /* try { // try from 003ec74c to 004ec74f has its CatchHandler @ 003ec5a0 */ + iVar12 = 0; + if ((int)local_38 == -1) goto LAB_003ec800; +LAB_003ec758: + if (iVar11 != iVar12) { +LAB_003ec760: + do { + /* catch() { ... } // from try @ 003eca04 with catch @ 003ec760 + catch() { ... } // from try @ 003ece50 with catch @ 003ec760 */ + if (local_30 == (long *)0x0) { +LAB_003ecc8c: + uVar20 = 0xff; + goto LAB_003ec6d4; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar13 = (uint)*(byte *)local_30[2]; + } + else { + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ecc8c; + } + } + uVar20 = uVar13 & 0xff; + local_28 = uVar13; + goto LAB_003ec6d4; + } + uVar20 = local_28 & 0xff; + if (__n < 0xb) goto LAB_003ec6dc; +LAB_003ec780: + uVar13 = uVar20 - 0x30; + if ((uVar13 & 0xff) < 10) goto LAB_003ec6f4; + if ((uVar20 - 0x61 & 0xff) < 6) { + uVar13 = uVar20 - 0x57; + goto LAB_003ec6f4; + } + if (5 < (uVar20 - 0x41 & 0xff)) goto LAB_003ecc94; + uVar13 = uVar20 - 0x37; + if (uVar22 < uVar21) goto LAB_003ec6fc; +LAB_003ec7bc: + iVar10 = iVar10 + 1; + uVar18 = uVar21 * uVar23; + uVar21 = (long)(int)uVar13 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)(int)uVar13 < uVar18); + if (local_30 != (long *)0x0) goto LAB_003ec708; +LAB_003ec7e4: + if (local_40 == (long *)0x0) break; + iVar11 = 1; + iVar12 = 0; + if ((int)local_38 != -1) goto LAB_003ec758; +LAB_003ec800: + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar13 = (uint)*(byte *)local_40[2]; + } + else { + uVar13 = (**(code **)(*local_40 + 0x48))(); + if (uVar13 == 0xffffffff) goto code_r0x003ecd1c; + } + local_38 = CONCAT44(local_38._4_4_,uVar13); + if (iVar11 == 0) break; + } while( true ); + } + goto LAB_003ec824; + } + } + else { + bVar8 = FUN_003e3e48(&local_30); + uVar20 = (uint)bVar8; + bVar7 = *(byte *)(lVar14 + 0x6e) == bVar8; + if ((bVar7) || (*(byte *)(lVar14 + 0x6f) == bVar8)) { + cVar9 = *(char *)(lVar14 + 0x20); + if ((cVar9 == '\0') || (*(byte *)(lVar14 + 0x49) != bVar8)) { + /* try { // try from 003ec530 to 004ec543 has its CatchHandler @ 003ec420 */ + if (*(byte *)(lVar14 + 0x48) != bVar8) { + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + FUN_003dcae0(); + } + /* catch() { ... } // from try @ 003ec4e8 with catch @ 003ec560 */ + local_28 = 0xffffffff; + } + iVar10 = FUN_003e3e48(&local_30); + iVar11 = FUN_003e3e48(&local_40); + /* try { // try from 003ec584 to 004ec587 has its CatchHandler @ 003ec420 */ + if ((iVar10 == -1) == (iVar11 == -1)) goto LAB_003ecb50; + uVar20 = FUN_003e3e48(&local_30); + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar14 + 0x20); + } + } + else { + cVar9 = '\x01'; + } + } + else { + cVar9 = *(char *)(lVar14 + 0x20); + } + /* catch() { ... } // from try @ 003ec6ac with catch @ 003ec5a0 + catch() { ... } // from try @ 003ec74c with catch @ 003ec5a0 */ + iVar10 = 0; + bVar6 = false; + do { + if (((cVar9 != '\0') && (*(byte *)(lVar14 + 0x49) == uVar20)) || + (*(byte *)(lVar14 + 0x48) == uVar20)) break; + iVar11 = (int)uVar23; + if (*(byte *)(lVar14 + 0x72) == uVar20) { + if ((iVar11 == 10) < bVar6) goto LAB_003ec5dc; + iVar10 = iVar10 + 1; + if ((iVar11 == 8) || (bVar6 = true, uVar13 == 0)) { + iVar10 = 0; + bVar6 = true; + uVar23 = 8; + } + } + else { + if (!bVar6) break; +LAB_003ec5dc: + if ((*(byte *)(lVar14 + 0x70) != uVar20) && (*(byte *)(lVar14 + 0x71) != uVar20)) { + bVar1 = false; + bVar6 = true; + goto LAB_003ec8b8; + } + if ((iVar11 != 0x10) && (uVar13 != 0)) { + bVar1 = false; + bVar6 = true; + goto LAB_003ec680; + } + iVar10 = 0; + bVar6 = false; + uVar23 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = 0xffffffff; + } + iVar11 = FUN_003e3e48(&local_30); + iVar12 = FUN_003e3e48(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) { + cVar9 = *(char *)(lVar14 + 0x20); + bVar1 = true; + goto LAB_003ec8b8; + } + uVar20 = FUN_003e3e48(&local_30); + /* try { // try from 003ec664 to 004ec6a3 has its CatchHandler @ 003ec728 */ + uVar20 = uVar20 & 0xff; + cVar9 = *(char *)(lVar14 + 0x20); + } while (bVar6); + bVar1 = false; + if ((int)uVar23 != 0x10) goto LAB_003ec680; +LAB_003ec8c0: + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar9 != '\0') goto LAB_003ec8e0; +LAB_003ec6a0: + cVar9 = *(char *)(lVar14 + 0x88); + /* try { // try from 003ec6ac to 004ec6bf has its CatchHandler @ 003ec5a0 */ + uVar22 = 0; + if (uVar23 != 0) { + uVar22 = 0xffffffffffffffff / uVar23; + } + if (cVar9 == '\0') goto LAB_003ec6b8; +LAB_003ec904: + local_58 = &local_8; + if (bVar1) goto LAB_003ecda4; + uVar21 = 0; + bVar4 = false; +LAB_003ec918: + if ((*(char *)(lVar14 + 0x20) != '\0') && (*(byte *)(lVar14 + 0x49) == uVar20)) + goto LAB_003eca14; +LAB_003ec92c: + if ((*(byte *)(lVar14 + 0x48) != uVar20) && + (pvVar15 = memchr((void *)(lVar14 + 0x72),uVar20,__n), pvVar15 != (void *)0x0)) { + iVar11 = (int)pvVar15 - (int)(void *)(lVar14 + 0x72); + if (0xf < iVar11) { + iVar11 = iVar11 + -6; + } + if (uVar22 < uVar21) { + bVar4 = true; + } + else { + iVar10 = iVar10 + 1; + uVar18 = uVar21 * uVar23; + uVar21 = (long)iVar11 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)iVar11 < uVar18); + } +LAB_003ec984: + if (local_30 == (long *)0x0) goto LAB_003eca94; +LAB_003ec98c: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 1; + pbVar17 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar17) { +LAB_003eccc8: + local_28 = 0xffffffff; + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003eca94; + } + goto LAB_003ec9c0; + } + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = 0xffffffff; + if (local_30 == (long *)0x0) goto LAB_003eca94; + pbVar17 = (byte *)local_30[2]; + if ((byte *)local_30[3] <= pbVar17) goto LAB_003eccc8; + } + uVar13 = (uint)*pbVar17; +LAB_003ec9c0: + local_28 = uVar13; + if (local_40 == (long *)0x0) goto LAB_003ec9e8; + cVar5 = '\0'; + do { + cVar16 = '\0'; + if ((int)local_38 == -1) { + if ((byte *)local_40[2] < (byte *)local_40[3]) { + uVar13 = (uint)*(byte *)local_40[2]; + } + else { + uVar13 = (**(code **)(*local_40 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_40 = (long *)0x0; + cVar16 = cVar9; + goto LAB_003ec9e0; + } + } + local_38 = CONCAT44(local_38._4_4_,uVar13); + cVar16 = '\0'; + } +LAB_003ec9e0: + if (cVar5 == cVar16) goto LAB_003ec824; +LAB_003ec9e8: + if (local_30 == (long *)0x0) { +LAB_003ecd00: + uVar20 = 0xff; + goto LAB_003ec918; + } + if (local_28 == 0xffffffff) { + if ((byte *)local_30[2] < (byte *)local_30[3]) { + uVar13 = (uint)*(byte *)local_30[2]; + } + else { + uVar13 = (**(code **)(*local_30 + 0x48))(); + if (uVar13 == 0xffffffff) { + local_30 = (long *)0x0; + goto LAB_003ecd00; + } + } + uVar20 = uVar13 & 0xff; + local_28 = uVar13; + goto LAB_003ec918; + } + uVar20 = local_28 & 0xff; + /* try { // try from 003eca04 to 004eca17 has its CatchHandler @ 003ec760 */ + if ((*(char *)(lVar14 + 0x20) == '\0') || (*(byte *)(lVar14 + 0x49) != uVar20)) + goto LAB_003ec92c; +LAB_003eca14: + if (iVar10 == 0) { + bVar2 = true; + iVar10 = 0; + goto LAB_003ec82c; + } + lVar19 = *(long *)(local_8 + -0x18); + uVar18 = lVar19 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar18) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar18); + lVar19 = *(long *)(local_8 + -0x18); + } + local_8[lVar19] = (char)iVar10; + iVar10 = 0; + /* try { // try from 003eca74 to 004ece1f has its CatchHandler @ 003ece54 */ + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_003ec984; + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar18; + local_8[uVar18] = 0; + if (local_30 != (long *)0x0) goto LAB_003ec98c; +LAB_003eca94: + if (local_40 == (long *)0x0) goto LAB_003ec824; + cVar5 = cVar9; + } while( true ); + } + } +LAB_003ecc94: + bVar2 = false; +LAB_003ec82c: + local_58 = &local_8; + if (*(long *)(local_8 + -0x18) == 0) { + /* try { // try from 003ec844 to 004ec847 has its CatchHandler @ 003ece54 */ + if ((iVar10 == 0) <= bVar6) { +LAB_003ecc50: + if (!bVar2) { + if (bVar4) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = (uVar21 ^ -(ulong)bVar7) + (ulong)bVar7; + } + goto LAB_003ec860; + } + } + } + else { + FUN_004116e0(local_58,iVar10); + cVar9 = FUN_003ee0cc(*(undefined8 *)(lVar14 + 0x10),*(undefined8 *)(lVar14 + 0x18),local_58); + if (cVar9 == '\0') { + *param_7 = 4; + } + if (((iVar10 == 0) <= bVar6) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_003ecc50; + } + *param_8 = 0; + *param_7 = 4; +LAB_003ec860: + if (bVar1) { + *param_7 = *param_7 | 2; + } + auVar3._8_4_ = local_28; + auVar3._0_8_ = local_30; + auVar3._12_4_ = uStack_24; + /* try { // try from 003ec880 to 004ec883 has its CatchHandler @ 003ece24 */ + /* try { // try from 003ec888 to 004ec9fb has its CatchHandler @ 003ece54 */ + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003dca9c(local_8 + -0x18,auStack_10); + } + return auVar3; +code_r0x003ecd1c: + local_40 = (long *)0x0; + iVar12 = 1; + goto LAB_003ec758; +LAB_003ec824: + bVar2 = false; + bVar1 = true; + goto LAB_003ec82c; +} + + +================================================================== + +### FUNC 003ecde8 (20 bytes) name=FUN_003ecde8 + +void FUN_003ecde8(void) + +{ + FUN_003ec46c(); + return; +} + + +================================================================== + +### FUNC 003ecdfc (4 bytes) name=FUN_003ecdfc + +void FUN_003ecdfc(void) + +{ + return; +} + + +================================================================== + +### FUNC 003ece00 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 003ece04 (24 bytes) name=FUN_003ece04 + +void FUN_003ece04(void) + +{ + FUN_0041a600(&DAT_00546278,&LAB_00479a30,0); + return; +} + + +================================================================== + +### FUNC 003ece1c (56 bytes) name=FUN_003ece1c + +void FUN_003ece1c(undefined8 *param_1,undefined8 *param_2) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + piVar3 = (int *)*param_2; + *param_1 = piVar3; + /* catch() { ... } // from try @ 003ec880 with catch @ 003ece24 */ + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + return; + } + *piVar3 = *piVar3 + 1; + /* try { // try from 003ece50 to 004ece53 has its CatchHandler @ 003ec760 */ + return; +} + + +================================================================== + +### FUNC 003ece54 (8 bytes) name=FUN_003ece54 + +void FUN_003ece54(undefined8 *param_1,undefined8 param_2) + +{ + /* catch() { ... } // from try @ 003ec844 with catch @ 003ece54 + catch() { ... } // from try @ 003ec888 with catch @ 003ece54 + catch() { ... } // from try @ 003eca74 with catch @ 003ece54 */ + *param_1 = param_2; + return; +} + + +================================================================== + +### FUNC 003ece5c (712 bytes) name=FUN_003ece5c + +long * FUN_003ece5c(long *param_1,long *param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + int iVar3; + size_t sVar4; + long lVar5; + long lVar6; + long lVar7; + ulong uVar8; + undefined8 *puVar9; + char *pcVar10; + + puVar2 = PTR_DAT_00501f30; + /* catch() { ... } // from try @ 003ed024 with catch @ 003ece70 + catch() { ... } // from try @ 003ed4e0 with catch @ 003ece70 */ + puVar9 = *(undefined8 **)(*param_2 + 0x20); + *param_1 = (long)(PTR_DAT_00501f30 + 0x18); + pcVar10 = (char *)*puVar9; + if (pcVar10 == (char *)0x0) { + FUN_00412ec4(param_1,0,*(undefined8 *)puVar2,1,0x2a); + } + else { + if (puVar9[1] != 0) { + uVar8 = 0; + do { + puVar1 = puVar9 + uVar8; + uVar8 = uVar8 + 1; + iVar3 = strcmp((char *)*puVar1,(char *)puVar9[uVar8]); + if (4 < uVar8) { + if (iVar3 == 0) goto LAB_003eced4; + break; + } + } while (iVar3 == 0); + FUN_00410ed8(param_1,0x80); + puVar9 = *(undefined8 **)PTR_PTR_00501ea0; + pcVar10 = (char *)*puVar9; + sVar4 = strlen(pcVar10); + FUN_00411624(param_1,pcVar10,sVar4); + lVar5 = *param_1; + lVar6 = *(long *)(lVar5 + -0x18); + uVar8 = lVar6 + 1; + if ((*(ulong *)(lVar5 + -0x10) < uVar8) || (0 < *(int *)(lVar5 + -8))) { + FUN_00410ed8(param_1,uVar8); + lVar5 = *param_1; + lVar6 = *(long *)(lVar5 + -0x18); + } + *(undefined1 *)(lVar5 + lVar6) = 0x3d; + lVar5 = *param_1; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar5 + -8) = 0; + *(ulong *)(lVar5 + -0x18) = uVar8; + *(undefined1 *)(lVar5 + uVar8) = 0; + } + pcVar10 = (char *)**(undefined8 **)(*param_2 + 0x20); + sVar4 = strlen(pcVar10); + FUN_00411624(param_1,pcVar10,sVar4); + lVar5 = 8; + do { + lVar6 = *param_1; + lVar7 = *(long *)(lVar6 + -0x18); + uVar8 = lVar7 + 1; + /* try { // try from 003ecfd8 to 004ed01b has its CatchHandler @ 003ed4bc */ + if ((*(ulong *)(lVar6 + -0x10) < uVar8) || (0 < *(int *)(lVar6 + -8))) { + FUN_00410ed8(param_1,uVar8); + lVar6 = *param_1; + lVar7 = *(long *)(lVar6 + -0x18); + } + *(undefined1 *)(lVar6 + lVar7) = 0x3b; + lVar6 = *param_1; + if ((undefined *)(lVar6 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar6 + -8) = 0; + *(ulong *)(lVar6 + -0x18) = uVar8; + *(undefined1 *)(lVar6 + uVar8) = 0; + } + pcVar10 = *(char **)((long)puVar9 + lVar5); + /* try { // try from 003ed024 to 004ed037 has its CatchHandler @ 003ece70 */ + sVar4 = strlen(pcVar10); + FUN_00411624(param_1,pcVar10,sVar4); + lVar6 = *param_1; + lVar7 = *(long *)(lVar6 + -0x18); + uVar8 = lVar7 + 1; + if ((*(ulong *)(lVar6 + -0x10) < uVar8) || (0 < *(int *)(lVar6 + -8))) { + FUN_00410ed8(param_1,uVar8); + lVar6 = *param_1; + lVar7 = *(long *)(lVar6 + -0x18); + } + *(undefined1 *)(lVar6 + lVar7) = 0x3d; + lVar6 = *param_1; + if ((undefined *)(lVar6 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar6 + -8) = 0; + *(ulong *)(lVar6 + -0x18) = uVar8; + *(undefined1 *)(lVar6 + uVar8) = 0; + } + pcVar10 = *(char **)(*(long *)(*param_2 + 0x20) + lVar5); + sVar4 = strlen(pcVar10); + FUN_00411624(param_1,pcVar10,sVar4); + lVar5 = lVar5 + 8; + } while (lVar5 != 0x30); + /* try { // try from 003ed0c0 to 004ed4a3 has its CatchHandler @ 003ed4bc */ + return param_1; + } +LAB_003eced4: + sVar4 = strlen(pcVar10); + FUN_00412fdc(param_1,pcVar10,sVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003ed188 (444 bytes) name=FUN_003ed188 + +bool FUN_003ed188(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + bool bVar3; + int iVar4; + char *__s1; + char *__s2; + undefined8 *puVar5; + void *pvVar6; + int *piVar7; + undefined8 *puVar8; + void *local_10; + void *local_8; + + if (*param_1 == *param_2) { + return true; + } + puVar5 = *(undefined8 **)(*param_1 + 0x20); + __s1 = (char *)*puVar5; + if (__s1 != (char *)0x0) { + puVar8 = *(undefined8 **)(*param_2 + 0x20); + __s2 = (char *)*puVar8; + if ((__s2 != (char *)0x0) && (iVar4 = strcmp(__s1,__s2), iVar4 == 0)) { + if ((puVar5[1] == 0) && (puVar8[1] == 0)) { + return true; + } + FUN_003ece5c(&local_10,param_1); + FUN_003ece5c(&local_8,param_2); + pvVar6 = local_10; + bVar3 = false; + if (*(size_t *)((long)local_10 + -0x18) == *(size_t *)((long)local_8 + -0x18)) { + iVar4 = memcmp(local_10,local_8,*(size_t *)((long)local_10 + -0x18)); + bVar3 = iVar4 == 0; + } + if ((undefined *)((long)local_8 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)local_8 + -8); + *(int *)((long)local_8 + -8) = iVar4 + -1; + } + else { + piVar7 = (int *)((long)local_8 + -8); + do { + iVar4 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + pvVar6 = local_10; + if (iVar4 < 1) { + operator_delete((undefined *)((long)local_8 + -0x18)); + pvVar6 = local_10; + } + } + if ((undefined *)((long)pvVar6 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)pvVar6 + -8); + *(int *)((long)pvVar6 + -8) = iVar4 + -1; + } + else { + piVar7 = (int *)((long)pvVar6 + -8); + do { + iVar4 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)((long)pvVar6 + -0x18)); + } + } + return bVar3; + } + } + return false; +} + + +================================================================== + +### FUNC 003ed3c4 (96 bytes) name=FUN_003ed3c4 + +void FUN_003ed3c4(uint param_1) + +{ + if ((param_1 != 0) && (((param_1 & 0x3f) == 0 || ((param_1 & 0xffffffc0) != 0)))) { + if (param_1 - 1 < 6) { + /* WARNING: Could not recover jumptable at 0x003ed424. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*(code *)(&UNK_003ed428 + (long)(char)(&DAT_00479984)[param_1 - 1] * 4))(); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f658("locale::_S_normalize_category category not found"); + } + return; +} + + +================================================================== + +### FUNC 003ed450 (108 bytes) name=FUN_003ed450 + +long FUN_003ed450(void) + +{ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + if (DAT_00546278 == 0) { + FUN_0041a600(&DAT_00546278,&LAB_00479a30,0); + } + } + else { + pthread_once((pthread_once_t *)&DAT_005462a0,FUN_003ece04); + } + return DAT_00546278; +} + + +================================================================== + +### FUNC 003ed4bc (12 bytes) name=FUN_003ed4bc + +undefined1 * FUN_003ed4bc(void) + +{ + /* catch() { ... } // from try @ 003ecfd8 with catch @ 003ed4bc + catch() { ... } // from try @ 003ed0c0 with catch @ 003ed4bc */ + return &LAB_00479a30; +} + + +================================================================== + +### FUNC 003ed4c8 (372 bytes) name=FUN_003ed4c8 + +void FUN_003ed4c8(long param_1) + +{ + long *plVar1; + char cVar2; + bool bVar3; + long *plVar4; + int iVar5; + ulong uVar6; + void *pvVar7; + ulong uVar8; + long lVar9; + + pvVar7 = *(void **)(param_1 + 8); + /* try { // try from 003ed4e0 to 004ed4e3 has its CatchHandler @ 003ece70 */ + if (pvVar7 != (void *)0x0) { + uVar6 = *(ulong *)(param_1 + 0x10); + if (uVar6 != 0) { + uVar8 = 0; + do { + plVar4 = *(long **)((long)pvVar7 + uVar8 * 8); + if (plVar4 != (long *)0x0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = (int)plVar4[1]; + *(int *)(plVar4 + 1) = iVar5 + -1; + } + else { + plVar1 = plVar4 + 1; + do { + iVar5 = (int)*plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 == 1) { + (**(code **)(*plVar4 + 8))(); + } + pvVar7 = *(void **)(param_1 + 8); + uVar6 = *(ulong *)(param_1 + 0x10); + } + uVar8 = uVar8 + 1; + } while (uVar8 < uVar6); + if (pvVar7 == (void *)0x0) goto LAB_003ed564; + } + operator_delete__(pvVar7); + } +LAB_003ed564: + pvVar7 = *(void **)(param_1 + 0x18); + if (pvVar7 != (void *)0x0) { + uVar6 = *(ulong *)(param_1 + 0x10); + if (uVar6 != 0) { + uVar8 = 0; + do { + plVar4 = *(long **)((long)pvVar7 + uVar8 * 8); + if (plVar4 != (long *)0x0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar5 = (int)plVar4[1]; + *(int *)(plVar4 + 1) = iVar5 + -1; + } + else { + plVar1 = plVar4 + 1; + do { + iVar5 = (int)*plVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = iVar5 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar5 == 1) { + (**(code **)(*plVar4 + 8))(); + } + pvVar7 = *(void **)(param_1 + 0x18); + uVar6 = *(ulong *)(param_1 + 0x10); + } + uVar8 = uVar8 + 1; + } while (uVar8 < uVar6); + if (pvVar7 == (void *)0x0) goto LAB_003ed5ec; + } + operator_delete__(pvVar7); + } +LAB_003ed5ec: + pvVar7 = *(void **)(param_1 + 0x20); + lVar9 = 0; + if (pvVar7 != (void *)0x0) { + do { + if (*(void **)((long)pvVar7 + lVar9) != (void *)0x0) { + operator_delete__(*(void **)((long)pvVar7 + lVar9)); + pvVar7 = *(void **)(param_1 + 0x20); + } + lVar9 = lVar9 + 8; + } while (lVar9 != 0x30); + if (pvVar7 != (void *)0x0) { + operator_delete__(pvVar7); + return; + } + } + return; +} + + +================================================================== + +### FUNC 003ed668 (160 bytes) name=FUN_003ed668 + +undefined8 * FUN_003ed668(undefined8 *param_1,undefined8 *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + int *piVar4; + int *piVar5; + + piVar4 = (int *)*param_2; + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + piVar5 = (int *)*param_1; + *piVar4 = *piVar4 + 1; + iVar3 = *piVar5; + *piVar5 = iVar3 + -1; + } + else { + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + piVar5 = (int *)*param_1; + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if ((iVar3 == 1) && (piVar5 != (int *)0x0)) { + FUN_003ed4c8(piVar5); + operator_delete(piVar5); + } + *param_1 = *param_2; + return param_1; +} + + +================================================================== + +### FUNC 003ed708 (108 bytes) name=FUN_003ed708 + +void FUN_003ed708(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + int *piVar4; + + piVar4 = (int *)*param_1; + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *piVar4; + *piVar4 = iVar3 + -1; + } + else { + do { + iVar3 = *piVar4; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if ((iVar3 == 1) && (piVar4 != (int *)0x0)) { + FUN_003ed4c8(piVar4); + operator_delete(piVar4); + return; + } + return; +} + + +================================================================== + +### FUNC 003ed774 (492 bytes) name=FUN_003ed774 + +void FUN_003ed774(undefined4 *param_1,long param_2,undefined4 param_3) + +{ + undefined8 *puVar1; + int *piVar2; + char cVar3; + bool bVar4; + ulong uVar5; + void *pvVar6; + long lVar7; + undefined8 *puVar8; + char *__s; + size_t sVar9; + ulong uVar10; + long lVar11; + + uVar10 = *(ulong *)(param_2 + 0x10); + *param_1 = param_3; + uVar5 = uVar10 << 3; + *(undefined8 *)(param_1 + 2) = 0; + if (0xfe0000000000000 < uVar10) { + uVar5 = 0xffffffffffffffff; + } + *(ulong *)(param_1 + 4) = uVar10; + *(undefined8 *)(param_1 + 6) = 0; + *(undefined8 *)(param_1 + 8) = 0; + pvVar6 = operator_new__(uVar5); + uVar10 = *(ulong *)(param_1 + 4); + *(void **)(param_1 + 2) = pvVar6; + uVar5 = 0; + if (uVar10 != 0) { + lVar11 = 0; + do { + *(undefined8 *)((long)pvVar6 + lVar11 * 8) = + *(undefined8 *)(*(long *)(param_2 + 8) + lVar11 * 8); + lVar7 = *(long *)(*(long *)(param_1 + 2) + lVar11 * 8); + if (lVar7 == 0) { +LAB_003ed7f0: + if (uVar10 <= lVar11 + 1U) goto LAB_003ed838; + } + else { + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar2 = (int *)(lVar7 + 8); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + uVar10 = *(ulong *)(param_1 + 4); + goto LAB_003ed7f0; + } + *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1; + if (uVar10 <= lVar11 + 1U) goto LAB_003ed838; + } + lVar11 = lVar11 + 1; + pvVar6 = *(void **)(param_1 + 2); + } while( true ); + } +LAB_003ed848: + pvVar6 = operator_new__(uVar5); + uVar5 = *(ulong *)(param_1 + 4); + *(void **)(param_1 + 6) = pvVar6; + if (uVar5 == 0) { +LAB_003ed8c8: + puVar8 = operator_new__(0x30); + *(undefined8 **)(param_1 + 8) = puVar8; + lVar11 = 0; + *puVar8 = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 8) = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x10) = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x18) = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x20) = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x28) = 0; + do { + __s = *(char **)(*(long *)(param_2 + 0x20) + lVar11); + if (__s == (char *)0x0) { + return; + } + sVar9 = strlen(__s); + lVar7 = *(long *)(param_1 + 8); + pvVar6 = operator_new__(sVar9 + 1); + *(void **)(lVar7 + lVar11) = pvVar6; + puVar8 = (undefined8 *)(*(long *)(param_1 + 8) + lVar11); + puVar1 = (undefined8 *)(*(long *)(param_2 + 0x20) + lVar11); + lVar11 = lVar11 + 8; + memcpy((void *)*puVar8,(void *)*puVar1,sVar9 + 1); + } while (lVar11 != 0x30); + return; + } + lVar11 = 0; + do { + *(undefined8 *)((long)pvVar6 + lVar11 * 8) = + *(undefined8 *)(*(long *)(param_2 + 0x18) + lVar11 * 8); + lVar7 = *(long *)(*(long *)(param_1 + 6) + lVar11 * 8); + if (lVar7 == 0) { +LAB_003ed880: + if (uVar5 <= lVar11 + 1U) goto LAB_003ed8c8; + } + else { + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar2 = (int *)(lVar7 + 8); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar2,0x10); + if (bVar4) { + *piVar2 = *piVar2 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + uVar5 = *(ulong *)(param_1 + 4); + goto LAB_003ed880; + } + *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1; + if (uVar5 <= lVar11 + 1U) goto LAB_003ed8c8; + } + lVar11 = lVar11 + 1; + pvVar6 = *(void **)(param_1 + 6); + } while( true ); +LAB_003ed838: + uVar5 = uVar10 << 3; + if (0xfe0000000000000 < uVar10) { + uVar5 = 0xffffffffffffffff; + } + goto LAB_003ed848; +} + + +================================================================== + +### FUNC 003ed980 (356 bytes) name=FUN_003ed980 + +void FUN_003ed980(long param_1,long *param_2,long param_3) + +{ + long *plVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined8 *puVar5; + long extraout_x1; + long lVar6; + + if ((DAT_00546288 & 1) == 0) { + iVar4 = __cxa_guard_acquire(&DAT_00546288); + if (iVar4 == 0) goto LAB_003ed9a0; + DAT_00546250 = 0; + DAT_00546258 = 0; + DAT_00546260 = 0; + DAT_00546268 = 0; + DAT_00546270 = 0; + __cxa_guard_release(&DAT_00546288); + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_003eda60; +LAB_003ed9ac: + iVar4 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00546250); + if (iVar4 != 0) { + puVar5 = (undefined8 *)__cxa_allocate_exception(8); + *puVar5 = &PTR_FUN_004f7ac0; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar5,&PTR_PTR_004fca80,FUN_003cec4c); + } + if (*(long *)(*(long *)(param_1 + 0x18) + param_3 * 8) == 0) { + plVar1 = param_2 + 1; + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(plVar1,0x10); + if (bVar3) { + *(int *)plVar1 = (int)*plVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + *(long **)(*(long *)(param_1 + 0x18) + param_3 * 8) = param_2; + goto LAB_003ed9f0; + } + } + else { +LAB_003ed9a0: + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) goto LAB_003ed9ac; +LAB_003eda60: + lVar6 = *(long *)(param_1 + 0x18); + if (*(long *)(lVar6 + param_3 * 8) == 0) { + *(int *)(param_2 + 1) = (int)param_2[1] + 1; + *(long **)(lVar6 + param_3 * 8) = param_2; + goto LAB_003ed9f0; + } + } + if (param_2 != (long *)0x0) { + (**(code **)(*param_2 + 8))(param_2); + } +LAB_003ed9f0: + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar4 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00546250); + if (iVar4 != 0) { + FUN_003cecfc(); + if (extraout_x1 != -1) { + /* WARNING: Subroutine does not return */ + _Unwind_Resume(); + } + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); + } + } + return; +} + + +================================================================== + +### FUNC 003edb10 (80 bytes) name=FUN_003edb10 + +long FUN_003edb10(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + + lVar4 = *param_1; + if (lVar4 == 0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = DAT_00546248 + 1; + DAT_00546248 = iVar3; + } + else { + do { + iVar3 = DAT_00546248; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(0x546248,0x10); + if (bVar2) { + cVar1 = ExclusiveMonitorsStatus(); + DAT_00546248 = DAT_00546248 + 1; + } + } while (cVar1 != '\0'); + iVar3 = iVar3 + 1; + } + lVar4 = (long)iVar3; + *param_1 = lVar4; + } + return lVar4 + -1; +} + + +================================================================== + +### FUNC 003edb60 (780 bytes) name=FUN_003edb60 + +void FUN_003edb60(long param_1,undefined8 param_2,long param_3) + +{ + int *piVar1; + ulong uVar2; + char cVar3; + bool bVar4; + ulong uVar5; + long *plVar6; + long *plVar7; + ulong uVar8; + void *pvVar9; + long lVar10; + void *pvVar11; + int iVar12; + ulong uVar13; + undefined8 *puVar14; + long lVar15; + long *plVar16; + ulong uVar17; + void *pvVar18; + void *pvVar19; + + if (param_3 == 0) { + return; + } + uVar5 = FUN_003edb10(param_2); + if (*(long *)(param_1 + 0x10) - 1U < uVar5) { + uVar17 = uVar5 + 4; + uVar8 = uVar17 * 8; + if (0xfe0000000000000 < uVar17) { + uVar8 = 0xffffffffffffffff; + } + pvVar18 = *(void **)(param_1 + 8); + pvVar9 = operator_new__(uVar8); + uVar8 = *(ulong *)(param_1 + 0x10); + if (uVar8 != 0) { + lVar10 = 0; + do { + *(undefined8 *)((long)pvVar9 + lVar10) = *(undefined8 *)(*(long *)(param_1 + 8) + lVar10); + lVar10 = lVar10 + 8; + } while (lVar10 != uVar8 * 8); + } + if (uVar8 < uVar17) { + lVar10 = uVar17 - uVar8; + uVar2 = (lVar10 - 2U >> 1) + 1; + lVar15 = uVar2 * 2; + if (2 < (uVar5 + 3) - uVar8) { + uVar13 = 0; + puVar14 = (undefined8 *)((long)pvVar9 + uVar8 * 8); + do { + puVar14[1] = 0; + *puVar14 = 0; + uVar13 = uVar13 + 1; + puVar14 = puVar14 + 2; + } while (uVar13 < uVar2); + uVar8 = uVar8 + lVar15; + if (lVar10 == lVar15) goto LAB_003edd3c; + } + *(undefined8 *)((long)pvVar9 + uVar8 * 8) = 0; + if (uVar8 + 1 < uVar17) { + *(undefined8 *)((long)pvVar9 + (uVar8 + 1) * 8) = 0; + if (uVar8 + 2 < uVar17) { + *(undefined8 *)((long)pvVar9 + (uVar8 + 2) * 8) = 0; + } + } + } +LAB_003edd3c: + uVar8 = uVar17 * 8; + pvVar19 = *(void **)(param_1 + 0x18); + if (0xfe0000000000000 < uVar17) { + uVar8 = 0xffffffffffffffff; + } + pvVar11 = operator_new__(uVar8); + uVar8 = *(ulong *)(param_1 + 0x10); + if (uVar8 != 0) { + lVar10 = 0; + do { + *(undefined8 *)((long)pvVar11 + lVar10) = + *(undefined8 *)(*(long *)(param_1 + 0x18) + lVar10); + lVar10 = lVar10 + 8; + } while (lVar10 != uVar8 * 8); + } + if (uVar8 < uVar17) { + lVar10 = uVar17 - uVar8; + uVar2 = (lVar10 - 2U >> 1) + 1; + lVar15 = uVar2 * 2; + if (2 < (uVar5 + 3) - uVar8) { + uVar13 = 0; + puVar14 = (undefined8 *)((long)pvVar11 + uVar8 * 8); + do { + puVar14[1] = 0; + *puVar14 = 0; + uVar13 = uVar13 + 1; + puVar14 = puVar14 + 2; + } while (uVar13 < uVar2); + uVar8 = uVar8 + lVar15; + if (lVar15 - lVar10 == 0) goto LAB_003edde0; + } + *(undefined8 *)((long)pvVar11 + uVar8 * 8) = 0; + if (uVar8 + 1 < uVar17) { + *(undefined8 *)((long)pvVar11 + (uVar8 + 1) * 8) = 0; + if (uVar8 + 2 < uVar17) { + *(undefined8 *)((long)pvVar11 + (uVar8 + 2) * 8) = 0; + } + } + } +LAB_003edde0: + *(ulong *)(param_1 + 0x10) = uVar17; + *(void **)(param_1 + 8) = pvVar9; + *(void **)(param_1 + 0x18) = pvVar11; + if (pvVar18 != (void *)0x0) { + operator_delete__(pvVar18); + } + if (pvVar19 == (void *)0x0) goto LAB_003edba0; + operator_delete__(pvVar19); + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) goto LAB_003edbac; +LAB_003ede10: + plVar16 = (long *)(*(long *)(param_1 + 8) + uVar5 * 8); + plVar6 = *(long **)(*(long *)(param_1 + 8) + uVar5 * 8); + *(int *)(param_3 + 8) = *(int *)(param_3 + 8) + 1; + if (plVar6 == (long *)0x0) goto LAB_003edbf8; + iVar12 = (int)plVar6[1]; + *(int *)(plVar6 + 1) = iVar12 + -1; + } + else { +LAB_003edba0: + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_003ede10; +LAB_003edbac: + piVar1 = (int *)(param_3 + 8); + do { + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = *piVar1 + 1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + plVar16 = (long *)(*(long *)(param_1 + 8) + uVar5 * 8); + plVar6 = *(long **)(*(long *)(param_1 + 8) + uVar5 * 8); + plVar7 = plVar6 + 1; + if (plVar6 == (long *)0x0) goto LAB_003edbf8; + do { + iVar12 = (int)*plVar7; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar7,0x10); + if (bVar4) { + *(int *)plVar7 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar12 == 1) { + (**(code **)(*plVar6 + 8))(); + } +LAB_003edbf8: + uVar5 = *(ulong *)(param_1 + 0x10); + *plVar16 = param_3; + if (uVar5 != 0) { + uVar17 = 0; + do { + plVar7 = *(long **)(*(long *)(param_1 + 0x18) + uVar17 * 8); + if (plVar7 != (long *)0x0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar12 = (int)plVar7[1]; + *(int *)(plVar7 + 1) = iVar12 + -1; + } + else { + plVar16 = plVar7 + 1; + do { + iVar12 = (int)*plVar16; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(plVar16,0x10); + if (bVar4) { + *(int *)plVar16 = iVar12 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar12 == 1) { + (**(code **)(*plVar7 + 8))(); + } + uVar5 = *(ulong *)(param_1 + 0x10); + *(undefined8 *)(*(long *)(param_1 + 0x18) + uVar17 * 8) = 0; + } + uVar17 = uVar17 + 1; + } while (uVar17 < uVar5); + } + return; +} + + +================================================================== + +### FUNC 003edeb4 (140 bytes) name=FUN_003edeb4 + +void FUN_003edeb4(undefined8 param_1,long param_2,long *param_3) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + + lVar4 = *param_3; + if (lVar4 == 0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = DAT_00546248 + 1; + DAT_00546248 = iVar3; + } + else { + do { + iVar3 = DAT_00546248; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(0x546248,0x10); + if (bVar2) { + cVar1 = ExclusiveMonitorsStatus(); + DAT_00546248 = DAT_00546248 + 1; + } + } while (cVar1 != '\0'); + iVar3 = iVar3 + 1; + } + lVar4 = (long)iVar3; + *param_3 = lVar4; + } + if ((lVar4 - 1U <= *(long *)(param_2 + 0x10) - 1U) && + (lVar4 = *(long *)(*(long *)(param_2 + 8) + (lVar4 - 1U) * 8), lVar4 != 0)) { + FUN_003edb60(param_1,param_3,lVar4); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f658("locale::_Impl::_M_replace_facet"); +} + + +================================================================== + +### FUNC 003edf40 (196 bytes) name=FUN_003edf40 + +void FUN_003edf40(undefined8 param_1,long param_2,long *param_3) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long *plVar5; + + plVar5 = (long *)*param_3; + while( true ) { + if (plVar5 == (long *)0x0) { + return; + } + lVar4 = *plVar5; + if (lVar4 == 0) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = DAT_00546248 + 1; + DAT_00546248 = iVar3; + } + else { + do { + iVar3 = DAT_00546248; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(0x546248,0x10); + if (bVar2) { + cVar1 = ExclusiveMonitorsStatus(); + DAT_00546248 = DAT_00546248 + 1; + } + } while (cVar1 != '\0'); + iVar3 = iVar3 + 1; + } + lVar4 = (long)iVar3; + *plVar5 = lVar4; + } + if ((*(long *)(param_2 + 0x10) - 1U < lVar4 - 1U) || + (*(long *)(*(long *)(param_2 + 8) + (lVar4 - 1U) * 8) == 0)) break; + FUN_003edb60(param_1); + param_3 = param_3 + 1; + plVar5 = (long *)*param_3; + } + /* WARNING: Subroutine does not return */ + FUN_0040f658("locale::_Impl::_M_replace_facet"); +} + + +================================================================== + +### FUNC 003ee004 (200 bytes) name=FUN_003ee004 + +void FUN_003ee004(long param_1,undefined1 *param_2,char param_3) + +{ + uint uVar1; + undefined1 uVar2; + undefined1 *puVar3; + undefined1 *puVar4; + + uVar1 = *(uint *)(param_1 + 0x18); + *param_2 = 0x25; + if ((uVar1 >> 0xb & 1) == 0) { + puVar3 = param_2 + 1; + } + else { + puVar3 = param_2 + 2; + param_2[1] = 0x2b; + } + puVar4 = puVar3; + if ((uVar1 >> 10 & 1) != 0) { + puVar4 = puVar3 + 1; + *puVar3 = 0x23; + } + *puVar4 = 0x2e; + puVar4[1] = 0x2a; + puVar3 = puVar4 + 2; + if (param_3 != '\0') { + puVar3 = puVar4 + 3; + puVar4[2] = param_3; + } + if ((uVar1 & 0x104) != 4) { + if ((uVar1 & 0x104) != 0x100) { + uVar2 = 0x47; + if ((uVar1 & 0x4000) == 0) { + uVar2 = 0x67; + } + *puVar3 = uVar2; + puVar3[1] = 0; + return; + } + uVar2 = 0x45; + if ((uVar1 & 0x4000) == 0) { + uVar2 = 0x65; + } + *puVar3 = uVar2; + puVar3[1] = 0; + return; + } + *puVar3 = 0x66; + puVar3[1] = 0; + return; +} + + +================================================================== + +### FUNC 003ee0cc (148 bytes) name=FUN_003ee0cc + +bool FUN_003ee0cc(long param_1,long param_2,undefined8 *param_3) + +{ + byte *pbVar1; + byte *pbVar2; + bool bVar3; + ulong uVar4; + byte bVar5; + bool bVar6; + ulong uVar7; + ulong uVar8; + byte *pbVar9; + + pbVar9 = (byte *)*param_3; + uVar7 = *(long *)(pbVar9 + -0x18) - 1; + uVar4 = param_2 - 1U; + if (uVar7 < param_2 - 1U) { + uVar4 = uVar7; + } + if (uVar4 == 0) { + bVar6 = true; + } + else { + uVar8 = 0; + do { + pbVar1 = (byte *)(param_1 + uVar8); + uVar8 = uVar8 + 1; + pbVar2 = pbVar9 + uVar7; + uVar7 = uVar7 - 1; + bVar6 = *pbVar2 == *pbVar1; + if (uVar4 <= uVar8) break; + } while (bVar6); + } + bVar5 = *(byte *)(param_1 + uVar4); + while ((uVar7 != 0 && (bVar3 = bVar6 != false, bVar6 = false, bVar3))) { + pbVar1 = pbVar9 + uVar7; + uVar7 = uVar7 - 1; + bVar6 = *pbVar1 == bVar5; + } + if ('\0' < (char)bVar5) { + bVar6 = (bool)(bVar6 & *pbVar9 <= bVar5); + } + return bVar6; +} + + +================================================================== + +### FUNC 003ee160 (2916 bytes) name=FUN_003ee160 + +void FUN_003ee160(undefined4 *param_1,undefined4 param_2) + +{ + long lVar1; + undefined2 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + long lVar5; + + puVar3 = &DAT_005473c0; + *param_1 = param_2; + puVar4 = &DAT_00547540; + lVar1 = 0; + *(undefined8 *)(param_1 + 4) = 0x1c; + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 **)(param_1 + 2) = &DAT_005473c0; + *(undefined8 **)(param_1 + 6) = &DAT_00547540; + while( true ) { + *(undefined8 *)((long)puVar4 + lVar1) = 0; + *(undefined8 *)((long)puVar3 + lVar1) = 0; + lVar1 = lVar1 + 8; + if (lVar1 == 0xe0) break; + puVar3 = *(undefined8 **)(param_1 + 2); + puVar4 = *(undefined8 **)(param_1 + 6); + } + *(undefined2 ***)(param_1 + 8) = &DAT_005467e0; + DAT_005467e0 = &DAT_00546350; + puVar2 = (undefined2 *)FUN_003ed4bc(); + DAT_00546350 = *puVar2; + DAT_005467f0 = 0; + DAT_005467e8 = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x18) = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x20) = 0; + *(undefined8 *)(*(long *)(param_1 + 8) + 0x28) = 0; + FUN_003d18e8(&DAT_00546970,0,0,1); + FUN_003edb60(param_1,PTR_DAT_00501da0,&DAT_00546970); + FUN_0041a854(&DAT_00546710,1); + FUN_003edb60(param_1,PTR_DAT_00501e98,&DAT_00546710); + DAT_005474a0 = PTR_DAT_005019b0 + 0x10; + DAT_005463c0 = PTR_DAT_00501e00 + 0x10; + DAT_005474a8 = 1; + DAT_005474b0 = 0; + DAT_005474b8 = 0; + DAT_005474c0 = 0; + DAT_005474c8 = 0; + DAT_005474d0 = 0; + DAT_005474d8 = 0; + DAT_005474e0 = 0; + DAT_005474e8 = 0; + DAT_005474e9 = 0; + DAT_00547528 = 0; + DAT_005463c8 = 1; + DAT_005463d0 = &DAT_005474a0; + FUN_003f0604(&DAT_005463c0,0); + FUN_003edb60(param_1,PTR_DAT_00501db0,&DAT_005463c0); + DAT_00547650 = PTR_DAT_00501b70 + 0x10; + DAT_00547658 = 1; + FUN_003edb60(param_1,PTR_DAT_00501d20,&DAT_00547650); + DAT_00546ce0 = PTR_DAT_00501970 + 0x10; + DAT_00546ce8 = 1; + FUN_003edb60(param_1,PTR_DAT_00501f98,&DAT_00546ce0); + DAT_005462b8 = 1; + DAT_005462b0 = PTR_DAT_00501dd8 + 0x10; + DAT_005462c0 = FUN_003ed450(); + FUN_003edb60(param_1,PTR_DAT_00501ab0,&DAT_005462b0); + DAT_005462d0 = PTR_DAT_00501b80 + 0x10; + DAT_00546c70 = PTR_DAT_00501ac0 + 0x10; + DAT_005462d8 = 1; + DAT_005462e0 = 0; + DAT_005462e8 = 0; + DAT_005462f0 = 0; + DAT_005462f1 = 0; + DAT_005462f2 = 0; + DAT_005462f8 = 0; + DAT_00546300 = 0; + DAT_00546308 = 0; + DAT_00546310 = 0; + DAT_00546318 = 0; + DAT_00546320 = 0; + DAT_00546328 = 0; + DAT_0054632c = 0; + DAT_0054632d = 0; + DAT_0054632e = 0; + DAT_0054632f = 0; + DAT_00546330 = 0; + DAT_00546331 = 0; + DAT_00546332 = 0; + DAT_00546333 = 0; + DAT_0054633f = 0; + DAT_00546c78 = 1; + DAT_00546c80 = &DAT_005462d0; + FUN_003efed0(&DAT_00546c70,0,0); + FUN_003edb60(param_1,PTR_DAT_00501c48,&DAT_00546c70); + DAT_00547310 = PTR_DAT_005018e8 + 0x10; + DAT_00546c30 = PTR_DAT_00501c40 + 0x10; + DAT_00547318 = 1; + DAT_00547320 = 0; + DAT_00547328 = 0; + DAT_00547330 = 0; + DAT_00547331 = 0; + DAT_00547332 = 0; + DAT_00547338 = 0; + DAT_00547340 = 0; + DAT_00547348 = 0; + DAT_00547350 = 0; + DAT_00547358 = 0; + DAT_00547360 = 0; + DAT_00547368 = 0; + DAT_0054736c = 0; + DAT_0054736d = 0; + DAT_0054736e = 0; + DAT_0054736f = 0; + DAT_00547370 = 0; + DAT_00547371 = 0; + DAT_00547372 = 0; + DAT_00547373 = 0; + DAT_0054737f = 0; + DAT_00546c38 = 1; + DAT_00546c40 = &DAT_00547310; + FUN_003efd44(&DAT_00546c30,0,0); + FUN_003edb60(param_1,PTR_DAT_005019e8,&DAT_00546c30); + DAT_00546be0 = PTR_DAT_00501b50 + 0x10; + DAT_00546be8 = 1; + FUN_003edb60(param_1,PTR_DAT_00501958,&DAT_00546be0); + DAT_005463e0 = PTR_DAT_00501940 + 0x10; + DAT_005463e8 = 1; + FUN_003edb60(param_1,PTR_DAT_00501a08,&DAT_005463e0); + DAT_00546590 = 0; + DAT_00546588 = 1; + DAT_00546580 = PTR_DAT_00501da8 + 0x10; + DAT_00546598 = 0; + DAT_005465a0 = 0; + DAT_005465a8 = 0; + DAT_005465b0 = 0; + DAT_005465b8 = 0; + DAT_005465c0 = 0; + DAT_005465c8 = 0; + DAT_005465d0 = 0; + DAT_005465d8 = 0; + DAT_005465e0 = 0; + DAT_005465e8 = 0; + DAT_005465f0 = 0; + DAT_005465f8 = 0; + DAT_00546600 = 0; + DAT_00546608 = 0; + DAT_00546610 = 0; + DAT_00546618 = 0; + DAT_00546620 = 0; + DAT_00546628 = 0; + DAT_00546630 = 0; + DAT_00546638 = 0; + DAT_00546640 = 0; + DAT_00546648 = 0; + DAT_00546650 = 0; + DAT_00546658 = 0; + DAT_00546660 = 0; + DAT_00546668 = 0; + DAT_00546670 = 0; + DAT_00546678 = 0; + DAT_00546680 = 0; + DAT_00546688 = 0; + DAT_00546690 = 0; + DAT_00546698 = 0; + DAT_005466a0 = 0; + DAT_005466a8 = 0; + DAT_005466b0 = 0; + DAT_005466b8 = 0; + DAT_005466c0 = 0; + DAT_005466c8 = 0; + DAT_005466d0 = 0; + DAT_005466d8 = 0; + DAT_005466e0 = 0; + DAT_005466e8 = 0; + DAT_005466f0 = 0; + DAT_005466f8 = 0; + DAT_00546700 = 0; + DAT_00546708 = 0; + FUN_003ddf3c(&DAT_00547620,&DAT_00546580,1); + FUN_003edb60(param_1,PTR_DAT_005019f8,&DAT_00547620); + DAT_00547380 = PTR_DAT_00501990 + 0x10; + DAT_00547388 = 1; + FUN_003edb60(param_1,PTR_DAT_00501c10,&DAT_00547380); + DAT_00546c20 = PTR_DAT_00501c58 + 0x10; + DAT_00546c28 = 1; + FUN_003edb60(param_1,PTR_DAT_00501d88,&DAT_00546c20); + FUN_003de4dc(&DAT_005463a0,1); + FUN_003edb60(param_1,PTR_DAT_00501db8,&DAT_005463a0); + FUN_003d1690(&DAT_00546cf0,1); + FUN_003edb60(param_1,PTR_DAT_00501ec0,&DAT_00546cf0); + FUN_0041a8fc(&DAT_005472f0,1); + FUN_003edb60(param_1,PTR_DAT_00501df0,&DAT_005472f0); + DAT_00546820 = PTR_DAT_00501df8 + 0x10; + DAT_00546380 = PTR_DAT_00501c68 + 0x10; + DAT_00546828 = 1; + DAT_00546830 = 0; + DAT_00546838 = 0; + DAT_00546840 = 0; + DAT_00546848 = 0; + DAT_00546850 = 0; + DAT_00546858 = 0; + DAT_00546860 = 0; + DAT_00546868 = 0; + DAT_0054686c = 0; + DAT_00546968 = 0; + DAT_00546388 = 1; + DAT_00546390 = &DAT_00546820; + FUN_003f07dc(&DAT_00546380,0); + FUN_003edb60(param_1,PTR_DAT_00501a18,&DAT_00546380); + DAT_00546bf0 = PTR_DAT_00501ee8 + 0x10; + DAT_00546bf8 = 1; + FUN_003edb60(param_1,PTR_DAT_00501bb8,&DAT_00546bf0); + DAT_00546c00 = PTR_DAT_00501a60 + 0x10; + DAT_00546c08 = 1; + FUN_003edb60(param_1,PTR_DAT_00501b40,&DAT_00546c00); + /* catch() { ... } // from try @ 003eeaac with catch @ 003ee844 + catch() { ... } // from try @ 003eeb14 with catch @ 003ee844 */ + DAT_00546c58 = 1; + DAT_00546c50 = PTR_DAT_005019c8 + 0x10; + DAT_00546c60 = FUN_003ed450(); + FUN_003edb60(param_1,PTR_DAT_00501c18,&DAT_00546c50); + DAT_00546740 = PTR_DAT_00501d48 + 0x10; + DAT_00546360 = PTR_DAT_00501cb0 + 0x10; + DAT_00546748 = 1; + DAT_00546750 = 0; + DAT_00546758 = 0; + DAT_00546760 = 0; + DAT_00546764 = 0; + DAT_00546768 = 0; + DAT_00546770 = 0; + DAT_00546778 = 0; + DAT_00546780 = 0; + DAT_00546788 = 0; + DAT_00546790 = 0; + DAT_00546798 = 0; + DAT_005467a0 = 0; + DAT_005467a4 = 0; + DAT_005467a5 = 0; + DAT_005467a6 = 0; + DAT_005467a7 = 0; + DAT_005467a8 = 0; + DAT_005467a9 = 0; + DAT_005467aa = 0; + DAT_005467ab = 0; + DAT_005467d8 = 0; + DAT_00546368 = 1; + DAT_00546370 = &DAT_00546740; + FUN_003f0330(&DAT_00546360,0,0); + FUN_003edb60(param_1,PTR_DAT_00501f90,&DAT_00546360); + DAT_00547240 = PTR_DAT_00501948 + 0x10; + DAT_00546cc0 = PTR_DAT_00501ed8 + 0x10; + DAT_00547248 = 1; + DAT_00547250 = 0; + DAT_00547258 = 0; + DAT_00547260 = 0; + DAT_00547264 = 0; + DAT_00547268 = 0; + DAT_00547270 = 0; + DAT_00547278 = 0; + DAT_00547280 = 0; + DAT_00547288 = 0; + DAT_00547290 = 0; + DAT_00547298 = 0; + DAT_005472a0 = 0; + DAT_005472a4 = 0; + DAT_005472a5 = 0; + DAT_005472a6 = 0; + DAT_005472a7 = 0; + DAT_005472a8 = 0; + DAT_005472a9 = 0; + DAT_005472aa = 0; + DAT_005472ab = 0; + DAT_005472d8 = 0; + DAT_00546cc8 = 1; + DAT_00546cd0 = &DAT_00547240; + FUN_003f01cc(&DAT_00546cc0,0,0); + FUN_003edb60(param_1,PTR_DAT_00501d58,&DAT_00546cc0); + DAT_00546340 = PTR_DAT_005018f0 + 0x10; + DAT_00546348 = 1; + FUN_003edb60(param_1,PTR_DAT_00501f78,&DAT_00546340); + DAT_005472e0 = PTR_DAT_00501f50 + 0x10; + DAT_005472e8 = 1; + FUN_003edb60(param_1,PTR_DAT_00501a48,&DAT_005472e0); + DAT_00546400 = 0; + DAT_005463f8 = 1; + DAT_005463f0 = PTR_DAT_00501930 + 0x10; + DAT_00546408 = 0; + DAT_00546410 = 0; + DAT_00546418 = 0; + DAT_00546420 = 0; + DAT_00546428 = 0; + DAT_00546430 = 0; + DAT_00546438 = 0; + DAT_00546440 = 0; + DAT_00546448 = 0; + /* try { // try from 003eeaac to 004eeaaf has its CatchHandler @ 003ee844 */ + DAT_00546450 = 0; + DAT_00546458 = 0; + DAT_00546460 = 0; + DAT_00546468 = 0; + DAT_00546470 = 0; + /* try { // try from 003eeac0 to 004eeac3 has its CatchHandler @ 003eeadc */ + DAT_00546478 = 0; + DAT_00546480 = 0; + DAT_00546488 = 0; + DAT_00546490 = 0; + DAT_00546498 = 0; + /* try { // try from 003eead4 to 004eead7 has its CatchHandler @ 003eeb18 */ + DAT_005464a0 = 0; + DAT_005464a8 = 0; + /* catch() { ... } // from try @ 003eeac0 with catch @ 003eeadc */ + DAT_005464b0 = 0; + DAT_005464b8 = 0; + DAT_005464c0 = 0; + DAT_005464c8 = 0; + DAT_005464d0 = 0; + DAT_005464d8 = 0; + DAT_005464e0 = 0; + DAT_005464e8 = 0; + DAT_005464f0 = 0; + DAT_005464f8 = 0; + DAT_00546500 = 0; + DAT_00546508 = 0; + DAT_00546510 = 0; + DAT_00546518 = 0; + /* try { // try from 003eeb14 to 004eeb17 has its CatchHandler @ 003ee844 */ + DAT_00546520 = 0; + /* catch() { ... } // from try @ 003eead4 with catch @ 003eeb18 */ + DAT_00546528 = 0; + DAT_00546530 = 0; + DAT_00546538 = 0; + DAT_00546540 = 0; + DAT_00546548 = 0; + DAT_00546550 = 0; + DAT_00546558 = 0; + /* catch() { ... } // from try @ 003eebcc with catch @ 003eeb34 */ + DAT_00546560 = 0; + DAT_00546568 = 0; + DAT_00546570 = 0; + DAT_00546578 = 0; + FUN_004005d0(&DAT_00546bb0,&DAT_005463f0,1); + FUN_003edb60(param_1,PTR_DAT_00501a00,&DAT_00546bb0); + /* try { // try from 003eeb74 to 004eeb77 has its CatchHandler @ 003eebbc */ + DAT_00546810 = PTR_DAT_00501cb8 + 0x10; + DAT_00546818 = 1; + FUN_003edb60(param_1,PTR_DAT_00501880,&DAT_00546810); + DAT_00547530 = PTR_DAT_00501bc8 + 0x10; + DAT_00547538 = 1; + /* catch() { ... } // from try @ 003eeb74 with catch @ 003eebbc */ + FUN_003edb60(param_1,PTR_DAT_00501dc8,&DAT_00547530); + /* try { // try from 003eebcc to 004eebcf has its CatchHandler @ 003eeb34 */ + FUN_00400b70(&DAT_00547220,1); + FUN_003edb60(param_1,PTR_DAT_00501e18,&DAT_00547220); + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_00501db0); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_005474a0; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_00501c48); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_005462d0; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_005019e8); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_00547310; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_005019f8); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_00546580; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_00501a18); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_00546820; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_00501f90); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_00546740; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_00501d58); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_00547240; + lVar5 = *(long *)(param_1 + 6); + lVar1 = FUN_003edb10(PTR_DAT_00501a00); + *(undefined ***)(lVar5 + lVar1 * 8) = &DAT_005463f0; + return; +} + + +================================================================== + +### FUNC 003eedb4 (68 bytes) name=FUN_003eedb4 + +void FUN_003eedb4(void) + +{ + undefined *puVar1; + + FUN_003ee160(&DAT_00546c90,2); + puVar1 = PTR_DAT_00501bf8; + *(undefined **)PTR_DAT_00501b98 = &DAT_00546c90; + *(undefined **)puVar1 = &DAT_00546c90; + return; +} + + +================================================================== + +### FUNC 003eedf8 (120 bytes) name=FUN_003eedf8 + +void FUN_003eedf8(void) + +{ + undefined *puVar1; + + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + /* catch() { ... } // from try @ 003eee54 with catch @ 003eee10 + catch() { ... } // from try @ 003ef090 with catch @ 003eee10 + catch() { ... } // from try @ 003ef208 with catch @ 003eee10 */ + pthread_once((pthread_once_t *)PTR_DAT_00501a58,FUN_003eedb4); + } + puVar1 = PTR_DAT_00501b98; + if (*(long *)PTR_DAT_00501b98 != 0) { + return; + } + FUN_003ee160(&DAT_00546c90,2); + /* try { // try from 003eee54 to 004eee57 has its CatchHandler @ 003eee10 */ + *(undefined **)puVar1 = &DAT_00546c90; + *(undefined **)PTR_DAT_00501bf8 = &DAT_00546c90; + return; +} + + +================================================================== + +### FUNC 003eee70 (504 bytes) name=FUN_003eee70 + +undefined8 FUN_003eee70(undefined8 param_1,undefined8 *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + char *pcVar4; + int *piVar5; + undefined8 uVar6; + undefined1 auVar7 [16]; + char *local_8; + + FUN_003eedf8(); + if (((DAT_00546730 & 1) == 0) && (iVar3 = __cxa_guard_acquire(&DAT_00546730), iVar3 != 0)) { + DAT_00547390 = 0; + DAT_00547398 = 0; + DAT_005473a0 = 0; + DAT_005473a8 = 0; + DAT_005473b0 = 0; + __cxa_guard_release(&DAT_00546730); + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) goto LAB_003eeeac; +LAB_003eef94: + piVar5 = (int *)*param_2; + uVar6 = *(undefined8 *)PTR_DAT_00501bf8; + *piVar5 = *piVar5 + 1; +LAB_003eeee0: + *(int **)PTR_DAT_00501bf8 = piVar5; + FUN_003ece5c(&local_8,param_2); + iVar3 = FUN_00412830(&local_8,&DAT_00479be8); + if (iVar3 == 0) { + pcVar4 = local_8 + -0x18; + if (pcVar4 == PTR_DAT_00501f30) goto LAB_003eef24; +LAB_003eefdc: + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar3 + -1; + if (0 < iVar3) goto LAB_003eef3c; +LAB_003ef000: + /* try { // try from 003ef004 to 004ef01f has its CatchHandler @ 003ef19c */ + operator_delete(pcVar4); + goto LAB_003eef24; + } + piVar5 = (int *)(local_8 + -8); + do { + /* try { // try from 003eefe8 to 004eefeb has its CatchHandler @ 003ef20c */ + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + if (iVar3 < 1) goto LAB_003ef000; + } + else { + setlocale(6,local_8); + pcVar4 = local_8 + -0x18; + if (pcVar4 != PTR_DAT_00501f30) goto LAB_003eefdc; +LAB_003eef24: + /* try { // try from 003eef28 to 004eef6f has its CatchHandler @ 003ef21c */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_003eef3c; + } + iVar3 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547390); + if (iVar3 == 0) { +LAB_003eef3c: + FUN_003ece54(param_1,uVar6); + return param_1; + } + auVar7 = FUN_003cecfc(); + } + else { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_003eef94; +LAB_003eeeac: + iVar3 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00547390); + if (iVar3 == 0) { + piVar5 = (int *)*param_2; + uVar6 = *(undefined8 *)PTR_DAT_00501bf8; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + piVar5 = (int *)*param_2; + goto LAB_003eeee0; + } + uVar6 = FUN_003ceccc(); + /* try { // try from 003ef04c to 004ef04f has its CatchHandler @ 003ef20c */ + if ((PTR_pthread_create_00501cc8 == (undefined *)0x0) || + (iVar3 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547390), iVar3 == 0)) + goto LAB_003ef030; + auVar7 = FUN_003cecfc(); + } + uVar6 = auVar7._0_8_; + if (auVar7._8_8_ == -1) { + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); + } +LAB_003ef030: + /* WARNING: Subroutine does not return */ + _Unwind_Resume(uVar6); +} + + +================================================================== + +### FUNC 003ef0c4 (164 bytes) name=FUN_003ef0c4 + +undefined * FUN_003ef0c4(void) + +{ + undefined *puVar1; + + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + pthread_once((pthread_once_t *)PTR_DAT_00501a58,FUN_003eedb4); + } + puVar1 = PTR_DAT_00501b98; + /* try { // try from 003ef0f8 to 004ef193 has its CatchHandler @ 003ef21c */ + if (*(long *)PTR_DAT_00501b98 != 0) { + FUN_003ece54(&DAT_00546c10); + return &DAT_00546c10; + } + FUN_003ee160(&DAT_00546c90,2); + *(undefined **)puVar1 = &DAT_00546c90; + *(undefined **)PTR_DAT_00501bf8 = &DAT_00546c90; + FUN_003ece54(&DAT_00546c10,&DAT_00546c90); + return &DAT_00546c10; +} + + +================================================================== + +### FUNC 003ef168 (436 bytes) name=FUN_003ef168 + +void FUN_003ef168(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + undefined *puVar3; + undefined *puVar4; + int iVar5; + int *piVar6; + long extraout_x1; + long lVar7; + long extraout_x1_00; + + *param_1 = 0; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + /* catch() { ... } // from try @ 003ef004 with catch @ 003ef19c */ + pthread_once((pthread_once_t *)PTR_DAT_00501a58,FUN_003eedb4); + } + puVar3 = PTR_DAT_00501b98; + if (*(long *)PTR_DAT_00501b98 == 0) { + piVar6 = (int *)&DAT_00546c90; + FUN_003ee160(&DAT_00546c90,2); + puVar4 = PTR_DAT_00501bf8; + *(undefined **)puVar3 = &DAT_00546c90; + *(undefined **)puVar4 = &DAT_00546c90; + } + else { + piVar6 = *(int **)PTR_DAT_00501bf8; + } + *param_1 = piVar6; + if (*(int **)PTR_DAT_00501b98 == piVar6) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *piVar6 = *piVar6 + 1; + return; + } + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + /* try { // try from 003ef2bc to 004ef2bf has its CatchHandler @ 003ef448 */ + return; + } + /* catch() { ... } // from try @ 003ef418 with catch @ 003ef240 + catch() { ... } // from try @ 003ef46c with catch @ 003ef240 */ + if (((DAT_00546730 & 1) == 0) && (iVar5 = __cxa_guard_acquire(&DAT_00546730), iVar5 != 0)) { + DAT_00547390 = 0; + DAT_00547398 = 0; + DAT_005473a0 = 0; + DAT_005473a8 = 0; + DAT_005473b0 = 0; + __cxa_guard_release(&DAT_00546730); + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar5 = pthread_mutex_lock((pthread_mutex_t *)&DAT_00547390); + puVar3 = PTR_DAT_00501bf8; + if (iVar5 == 0) { + piVar6 = *(int **)PTR_DAT_00501bf8; + do { + /* try { // try from 003ef208 to 004ef20b has its CatchHandler @ 003eee10 */ + /* catch() { ... } // from try @ 003eefe8 with catch @ 003ef20c + catch() { ... } // from try @ 003ef04c with catch @ 003ef20c */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = *piVar6 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + /* catch() { ... } // from try @ 003ef070 with catch @ 003ef214 */ + /* catch() { ... } // from try @ 003eef28 with catch @ 003ef21c + catch() { ... } // from try @ 003ef054 with catch @ 003ef21c + catch() { ... } // from try @ 003ef0f8 with catch @ 003ef21c */ + *param_1 = *(undefined8 *)puVar3; + iVar5 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547390); + if (iVar5 == 0) { + return; + } + FUN_003cecfc(); + lVar7 = extraout_x1; + } + else { + FUN_003ceccc(); + lVar7 = extraout_x1_00; + } + if (lVar7 == -1) { + /* WARNING: Subroutine does not return */ + __cxa_call_unexpected(); + } + /* WARNING: Subroutine does not return */ + _Unwind_Resume(); + } + piVar6 = *(int **)PTR_DAT_00501bf8; + *piVar6 = *piVar6 + 1; + *param_1 = piVar6; + return; +} + + +================================================================== + +### FUNC 003ef31c (40 bytes) name=FUN_003ef31c + +undefined8 FUN_003ef31c(undefined8 param_1) + +{ + undefined8 in_x4; + + FUN_00414378(param_1,in_x4); + return param_1; +} + + +================================================================== + +### FUNC 003ef344 (40 bytes) name=FUN_003ef344 + +undefined8 FUN_003ef344(undefined8 param_1) + +{ + undefined8 in_x4; + + FUN_00418c54(param_1,in_x4); + return param_1; +} + + +================================================================== + +### FUNC 003ef36c (32 bytes) name=FUN_003ef36c + +void FUN_003ef36c(long *param_1,undefined8 param_2) + +{ + /* try { // try from 003ef370 to 004ef373 has its CatchHandler @ 003ef4c8 */ + (**(code **)(*param_1 + 0x20))(param_1,param_2,0); + return; +} + + +================================================================== + +### FUNC 003ef38c (32 bytes) name=FUN_003ef38c + +void FUN_003ef38c(long *param_1,undefined8 param_2) + +{ + /* try { // try from 003ef38c to 004ef3a7 has its CatchHandler @ 003ef498 */ + (**(code **)(*param_1 + 0x20))(param_1,param_2,0); + return; +} + + +================================================================== + +### FUNC 003ef3ac (20 bytes) name=FUN_003ef3ac + +void FUN_003ef3ac(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003ef3c0 (20 bytes) name=FUN_003ef3c0 + +void FUN_003ef3c0(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003ef3d4 (52 bytes) name=FUN_003ef3d4 + +void FUN_003ef3d4(long *param_1) + +{ + /* try { // try from 003ef3d4 to 004ef3d7 has its CatchHandler @ 003ef4c8 */ + /* try { // try from 003ef3dc to 004ef3f3 has its CatchHandler @ 003ef470 */ + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + /* try { // try from 003ef3f8 to 004ef40f has its CatchHandler @ 003ef448 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ef408 (52 bytes) name=FUN_003ef408 + +void FUN_003ef408(long *param_1) + +{ + /* try { // try from 003ef418 to 004ef42b has its CatchHandler @ 003ef240 */ + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ef43c (40 bytes) name=FUN_003ef43c + +void FUN_003ef43c(long param_1) + +{ + int iVar1; + + /* catch() { ... } // from try @ 003ef2bc with catch @ 003ef448 + catch() { ... } // from try @ 003ef3f8 with catch @ 003ef448 */ + iVar1 = getc(*(FILE **)(param_1 + 0x40)); + *(int *)(param_1 + 0x48) = iVar1; + return; +} + + +================================================================== + +### FUNC 003ef464 (40 bytes) name=FUN_003ef464 + +int FUN_003ef464(long param_1) + +{ + int iVar1; + + /* try { // try from 003ef46c to 004ef46f has its CatchHandler @ 003ef240 */ + /* catch() { ... } // from try @ 003ef3dc with catch @ 003ef470 */ + iVar1 = getc(*(FILE **)(param_1 + 0x40)); + iVar1 = ungetc(iVar1,*(FILE **)(param_1 + 0x40)); + return iVar1; +} + + +================================================================== + +### FUNC 003ef48c (100 bytes) name=FUN_003ef48c + +int FUN_003ef48c(long param_1,int param_2) + +{ + int iVar1; + + /* catch() { ... } // from try @ 003ef38c with catch @ 003ef498 */ + if (param_2 == -1) { + /* catch() { ... } // from try @ 003ef370 with catch @ 003ef4c8 + catch() { ... } // from try @ 003ef3d4 with catch @ 003ef4c8 */ + iVar1 = *(int *)(param_1 + 0x48); + if (iVar1 != -1) { + iVar1 = ungetc(iVar1,*(FILE **)(param_1 + 0x40)); + *(undefined4 *)(param_1 + 0x48) = 0xffffffff; + return iVar1; + } + } + else { + iVar1 = ungetc(param_2,*(FILE **)(param_1 + 0x40)); + } + *(undefined4 *)(param_1 + 0x48) = 0xffffffff; + return iVar1; +} + + +================================================================== + +### FUNC 003ef4f0 (8 bytes) name=FUN_003ef4f0 + +int FUN_003ef4f0(long param_1) + +{ + int iVar1; + + iVar1 = fflush(*(FILE **)(param_1 + 0x40)); + return iVar1; +} + + +================================================================== + +### FUNC 003ef4f8 (8 bytes) name=FUN_003ef4f8 + +int FUN_003ef4f8(long param_1) + +{ + int iVar1; + + iVar1 = fflush(*(FILE **)(param_1 + 0x40)); + return iVar1; +} + + +================================================================== + +### FUNC 003ef500 (88 bytes) name=FUN_003ef500 + +undefined1 [16] FUN_003ef500(long param_1,long param_2,int param_3) + +{ + int iVar1; + ulong uVar2; + undefined1 auVar3 [16]; + + iVar1 = 0; + if ((param_3 != 0) && (iVar1 = 2, param_3 == 1)) { + iVar1 = 1; + } + iVar1 = fseek(*(FILE **)(param_1 + 0x40),param_2,iVar1); + uVar2 = 0xffffffffffffffff; + if (iVar1 == 0) { + uVar2 = ftell(*(FILE **)(param_1 + 0x40)); + } + auVar3._8_8_ = 0; + auVar3._0_8_ = uVar2; + return auVar3; +} + + +================================================================== + +### FUNC 003ef558 (88 bytes) name=FUN_003ef558 + +undefined1 [16] FUN_003ef558(long param_1,long param_2,int param_3) + +{ + int iVar1; + ulong uVar2; + undefined1 auVar3 [16]; + + iVar1 = 0; + if ((param_3 != 0) && (iVar1 = 2, param_3 == 1)) { + iVar1 = 1; + } + iVar1 = fseek(*(FILE **)(param_1 + 0x40),param_2,iVar1); + uVar2 = 0xffffffffffffffff; + if (iVar1 == 0) { + uVar2 = ftell(*(FILE **)(param_1 + 0x40)); + } + auVar3._8_8_ = 0; + auVar3._0_8_ = uVar2; + return auVar3; +} + + +================================================================== + +### FUNC 003ef5b0 (40 bytes) name=FUN_003ef5b0 + +void FUN_003ef5b0(long param_1) + +{ + wint_t wVar1; + + wVar1 = getwc(*(__FILE **)(param_1 + 0x40)); + *(wint_t *)(param_1 + 0x48) = wVar1; + return; +} + + +================================================================== + +### FUNC 003ef5d8 (116 bytes) name=FUN_003ef5d8 + +long FUN_003ef5d8(long param_1,long param_2,long param_3) + +{ + wint_t wVar1; + undefined4 uVar2; + long lVar3; + + lVar3 = 0; + if (param_3 == 0) { + uVar2 = 0xffffffff; + } + else { + do { + wVar1 = getwc(*(__FILE **)(param_1 + 0x40)); + if (wVar1 == 0xffffffff) { + uVar2 = 0xffffffff; + if (lVar3 == 0) goto LAB_003ef62c; + break; + } + *(wint_t *)(param_2 + lVar3 * 4) = wVar1; + lVar3 = lVar3 + 1; + } while (param_3 != lVar3); + uVar2 = *(undefined4 *)(param_2 + lVar3 * 4 + -4); + } +LAB_003ef62c: + *(undefined4 *)(param_1 + 0x48) = uVar2; + return lVar3; +} + + +================================================================== + +### FUNC 003ef64c (40 bytes) name=FUN_003ef64c + +wint_t FUN_003ef64c(long param_1) + +{ + wint_t wVar1; + + wVar1 = getwc(*(__FILE **)(param_1 + 0x40)); + wVar1 = ungetwc(wVar1,*(__FILE **)(param_1 + 0x40)); + return wVar1; +} + + +================================================================== + +### FUNC 003ef674 (108 bytes) name=FUN_003ef674 + +wint_t FUN_003ef674(long param_1,wint_t param_2) + +{ + wint_t wVar1; + + if (param_2 == 0xffffffff) { + wVar1 = 0xffffffff; + if (*(wint_t *)(param_1 + 0x48) != 0xffffffff) { + wVar1 = ungetwc(*(wint_t *)(param_1 + 0x48),*(__FILE **)(param_1 + 0x40)); + *(undefined4 *)(param_1 + 0x48) = 0xffffffff; + return wVar1; + } + } + else { + wVar1 = ungetwc(param_2,*(__FILE **)(param_1 + 0x40)); + } + *(undefined4 *)(param_1 + 0x48) = 0xffffffff; + return wVar1; +} + + +================================================================== + +### FUNC 003ef6e0 (100 bytes) name=FUN_003ef6e0 + +long FUN_003ef6e0(long param_1,long param_2,long param_3) + +{ + wint_t wVar1; + long lVar2; + + if (param_3 == 0) { + lVar2 = 0; + } + else { + lVar2 = 0; + do { + wVar1 = putwc(*(wchar_t *)(param_2 + lVar2 * 4),*(__FILE **)(param_1 + 0x40)); + if (wVar1 == 0xffffffff) { + return lVar2; + } + lVar2 = lVar2 + 1; + } while (param_3 != lVar2); + } + return lVar2; +} + + +================================================================== + +### FUNC 003ef744 (16 bytes) name=FUN_003ef744 + +void FUN_003ef744(long param_1,void *param_2,size_t param_3) + +{ + fwrite(param_2,1,param_3,*(FILE **)(param_1 + 0x40)); + return; +} + + +================================================================== + +### FUNC 003ef754 (88 bytes) name=FUN_003ef754 + +void FUN_003ef754(long param_1,void *param_2,size_t param_3) + +{ + size_t sVar1; + + sVar1 = fread(param_2,1,param_3,*(FILE **)(param_1 + 0x40)); + if (0 < (long)sVar1) { + *(uint *)(param_1 + 0x48) = (uint)*(byte *)((long)param_2 + (sVar1 - 1)); + return; + } + *(undefined4 *)(param_1 + 0x48) = 0xffffffff; + /* catch() { ... } // from try @ 003ef7dc with catch @ 003ef7a0 + catch() { ... } // from try @ 003ef968 with catch @ 003ef7a0 + catch() { ... } // from try @ 003ef9c4 with catch @ 003ef7a0 + catch() { ... } // from try @ 003efa1c with catch @ 003ef7a0 + catch() { ... } // from try @ 003efa74 with catch @ 003ef7a0 + catch() { ... } // from try @ 003efc6c with catch @ 003ef7a0 + catch() { ... } // from try @ 003efca8 with catch @ 003ef7a0 + catch() { ... } // from try @ 003efdb4 with catch @ 003ef7a0 */ + return; +} + + +================================================================== + +### FUNC 003ef7ac (60 bytes) name=FUN_003ef7ac + +int FUN_003ef7ac(long param_1,int param_2) + +{ + int iVar1; + + if (param_2 != -1) { + iVar1 = putc(param_2,*(FILE **)(param_1 + 0x40)); + return iVar1; + } + iVar1 = fflush(*(FILE **)(param_1 + 0x40)); + /* try { // try from 003ef7dc to 004ef7df has its CatchHandler @ 003ef7a0 */ + return -(uint)(iVar1 != 0); +} + + +================================================================== + +### FUNC 003ef7e8 (60 bytes) name=FUN_003ef7e8 + +wint_t FUN_003ef7e8(long param_1,wchar_t param_2) + +{ + wint_t wVar1; + int iVar2; + + if (param_2 != L'\xffffffff') { + wVar1 = putwc(param_2,*(__FILE **)(param_1 + 0x40)); + return wVar1; + } + iVar2 = fflush(*(FILE **)(param_1 + 0x40)); + return -(uint)(iVar2 != 0); +} + + +================================================================== + +### FUNC 003ef824 (12 bytes) name=FUN_003ef824 + +void FUN_003ef824(undefined8 param_1,long *param_2) + +{ + FUN_003f1ad0(param_1,*param_2,*(undefined8 *)(*param_2 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003ef830 (140 bytes) name=FUN_003ef830 + +void FUN_003ef830(long *param_1,undefined8 param_2) + +{ + undefined1 uVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + /* try { // try from 003ef8b8 to 004ef8bb has its CatchHandler @ 003efe1c */ + FUN_0040f118(); + } + if ((char)plVar2[7] != '\0') { + FUN_003db200(param_1,param_2,*(undefined1 *)((long)plVar2 + 0x43)); + return; + } + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,10); + FUN_003db200(param_1,param_2,uVar1); + return; +} + + +================================================================== + +### FUNC 003ef8bc (636 bytes) name=FUN_003ef8bc + +long * FUN_003ef8bc(long *param_1,long *param_2) + +{ + char cVar1; + int iVar2; + uint uVar3; + long *plVar4; + long *plVar5; + long lVar6; + int *piVar7; + long lVar8; + long lVar9; + long lVar10; + long lVar11; + char local_208 [8]; + int local_200 [128]; + + /* try { // try from 003ef8d8 to 004ef8fb has its CatchHandler @ 003efdec */ + FUN_003d7624(local_208,param_1,0); + if (local_208[0] == '\0') { + lVar9 = *param_1; + uVar3 = 4; + } + else { + /* try { // try from 003ef94c to 004ef963 has its CatchHandler @ 003efdc8 */ + FUN_00416540(param_2,0,*(undefined8 *)(*param_2 + -0x18),0); + /* try { // try from 003ef968 to 004ef9b3 has its CatchHandler @ 003ef7a0 */ + lVar9 = *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10); + if (lVar9 < 1) { + lVar9 = 0xffffffffffffffe; + } + FUN_003ece1c(local_200,(long)param_1 + *(long *)(*param_1 + -0x18) + 0xd0); + plVar4 = (long *)FUN_00401028(local_200); + FUN_003ed708(local_200); + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((int *)plVar5[2] < (int *)plVar5[3]) { + /* try { // try from 003ef9bc to 004ef9bf has its CatchHandler @ 003efcd0 */ + iVar2 = *(int *)plVar5[2]; + } + else { + iVar2 = (**(code **)(*plVar5 + 0x48))(); + } + /* try { // try from 003ef9c4 to 004efa0b has its CatchHandler @ 003ef7a0 */ + if (iVar2 == -1) { + lVar10 = 0; + lVar6 = 0; + } + else { + lVar11 = 0; + lVar8 = 0; + do { + cVar1 = (**(code **)(*plVar4 + 0x10))(plVar4,8,iVar2); + lVar10 = lVar8; + lVar6 = lVar11; + if (cVar1 != '\0') goto LAB_003ef9f0; + if (lVar8 == 0x80) { + FUN_00418664(param_2,local_200,0x80); + lVar10 = 1; + lVar8 = 0; + } + else { + lVar10 = lVar8 + 1; + } + lVar6 = *param_1; + lVar11 = lVar11 + 1; + local_200[lVar8] = iVar2; + plVar5 = *(long **)((long)param_1 + *(long *)(lVar6 + -0x18) + 0xe8); + piVar7 = (int *)plVar5[2]; + if (piVar7 < (int *)plVar5[3]) { + /* try { // try from 003efa68 to 004efa6b has its CatchHandler @ 003efc84 */ + iVar2 = *piVar7; + plVar5[2] = (long)(piVar7 + 1); + } + else { + iVar2 = (**(code **)(*plVar5 + 0x50))(plVar5); + } + lVar6 = lVar9; + /* try { // try from 003efa74 to 004efa87 has its CatchHandler @ 003ef7a0 */ + if (iVar2 == -1) { + iVar2 = -1; + if (lVar11 == lVar9) goto LAB_003ef9f0; + break; + } + if ((int *)plVar5[2] < (int *)plVar5[3]) { + iVar2 = *(int *)plVar5[2]; + } + else { + iVar2 = (**(code **)(*plVar5 + 0x48))(plVar5); + } + if (lVar11 == lVar9) goto LAB_003ef9f0; + lVar8 = lVar10; + } while (iVar2 != -1); + iVar2 = -1; + lVar6 = lVar11; + } +LAB_003ef9f0: + FUN_00418664(param_2,local_200,lVar10); + if (iVar2 == -1) { + lVar9 = *param_1; + uVar3 = 6; + if (lVar6 != 0) { + uVar3 = 2; + } + /* try { // try from 003efb14 to 004efb47 has its CatchHandler @ 003efdb8 */ + *(undefined8 *)((long)param_1 + *(long *)(lVar9 + -0x18) + 0x10) = 0; + } + else { + lVar9 = *param_1; + /* try { // try from 003efa14 to 004efa17 has its CatchHandler @ 003efcac */ + *(undefined8 *)((long)param_1 + *(long *)(lVar9 + -0x18) + 0x10) = 0; + if (lVar6 != 0) { + return param_1; + } + /* try { // try from 003efa1c to 004efa5f has its CatchHandler @ 003ef7a0 */ + uVar3 = 4; + } + } + lVar9 = (long)param_1 + *(long *)(lVar9 + -0x18); + FUN_003d2c00(lVar9,uVar3 | *(uint *)(lVar9 + 0x20)); + /* try { // try from 003ef928 to 004ef92b has its CatchHandler @ 003efe1c */ + /* try { // try from 003ef930 to 004ef947 has its CatchHandler @ 003efcf4 */ + return param_1; +} + + +================================================================== + +### FUNC 003efbec (12 bytes) name=FUN_003efbec + +void FUN_003efbec(undefined8 param_1,long *param_2) + +{ + FUN_003f41b4(param_1,*param_2,*(undefined8 *)(*param_2 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003efbf8 (84 bytes) name=FUN_003efbf8 + +void FUN_003efbf8(long *param_1,undefined8 param_2) + +{ + undefined4 uVar1; + long *plVar2; + + /* try { // try from 003efbf8 to 004efbfb has its CatchHandler @ 003efd38 */ + /* try { // try from 003efc04 to 004efc07 has its CatchHandler @ 003efdd8 */ + /* try { // try from 003efc0c to 004efc0f has its CatchHandler @ 003efd38 */ + /* try { // try from 003efc14 to 004efc2b has its CatchHandler @ 003efdd0 */ + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 != (long *)0x0) { + uVar1 = (**(code **)(*plVar2 + 0x50))(plVar2,10); + /* try { // try from 003efc30 to 004efc47 has its CatchHandler @ 003efdc0 */ + FUN_003dbb94(param_1,param_2,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003efc4c (108 bytes) name=FUN_003efc4c + +void FUN_003efc4c(long *param_1,long param_2) + +{ + undefined *puVar1; + + /* try { // try from 003efc4c to 004efc63 has its CatchHandler @ 003efdb8 */ + /* try { // try from 003efc6c to 004efc7f has its CatchHandler @ 003ef7a0 */ + puVar1 = PTR_DAT_00501bb0 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar1; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + /* catch() { ... } // from try @ 003efa68 with catch @ 003efc84 */ + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + param_1[8] = param_2; + *param_1 = (long)&PTR_FUN_004fd800; + /* try { // try from 003efca8 to 004efcab has its CatchHandler @ 003ef7a0 */ + *(undefined4 *)(param_1 + 9) = 0xffffffff; + /* catch() { ... } // from try @ 003efa14 with catch @ 003efcac */ + return; +} + + +================================================================== + +### FUNC 003efcb8 (8 bytes) name=FUN_003efcb8 + +undefined8 FUN_003efcb8(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x40); +} + + +================================================================== + +### FUNC 003efcc0 (108 bytes) name=FUN_003efcc0 + +void FUN_003efcc0(long *param_1,long param_2) + +{ + undefined *puVar1; + + /* catch() { ... } // from try @ 003ef9bc with catch @ 003efcd0 */ + puVar1 = PTR_DAT_00501c78 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar1; + param_1[2] = 0; + param_1[3] = 0; + /* catch() { ... } // from try @ 003ef930 with catch @ 003efcf4 */ + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + param_1[8] = param_2; + *param_1 = (long)&PTR_FUN_004fd880; + *(undefined4 *)(param_1 + 9) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 003efd2c (8 bytes) name=FUN_003efd2c + +undefined8 FUN_003efd2c(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x40); +} + + +================================================================== + +### FUNC 003efd34 (16 bytes) name=FUN_003efd34 + +undefined4 FUN_003efd34(void) + +{ + /* catch() { ... } // from try @ 003efbf8 with catch @ 003efd38 + catch() { ... } // from try @ 003efc0c with catch @ 003efd38 */ + return *(undefined4 *)PTR_DAT_00501b78; +} + + +================================================================== + +### FUNC 003efd44 (396 bytes) name=FUN_003efd44 + +void FUN_003efd44(long param_1) + +{ + undefined4 uVar1; + undefined *puVar2; + long lVar3; + undefined1 *puVar4; + long *plVar5; + + plVar5 = *(long **)(param_1 + 0x10); + if (plVar5 == (long *)0x0) { + plVar5 = operator_new(0x70); + *(undefined4 *)(plVar5 + 1) = 0; + puVar2 = PTR_DAT_005018e8; + plVar5[2] = 0; + plVar5[3] = 0; + *plVar5 = (long)(puVar2 + 0x10); + /* try { // try from 003efe7c to 004efe7f has its CatchHandler @ 003efe50 */ + *(undefined1 *)(plVar5 + 4) = 0; + *(undefined1 *)((long)plVar5 + 0x21) = 0; + *(undefined1 *)((long)plVar5 + 0x22) = 0; + plVar5[5] = 0; + plVar5[6] = 0; + plVar5[7] = 0; + plVar5[8] = 0; + plVar5[9] = 0; + plVar5[10] = 0; + *(undefined4 *)(plVar5 + 0xb) = 0; + *(undefined1 *)((long)plVar5 + 0x5c) = 0; + *(undefined1 *)((long)plVar5 + 0x5d) = 0; + *(undefined1 *)((long)plVar5 + 0x5e) = 0; + *(undefined1 *)((long)plVar5 + 0x5f) = 0; + *(undefined1 *)(plVar5 + 0xc) = 0; + *(undefined1 *)((long)plVar5 + 0x61) = 0; + *(undefined1 *)((long)plVar5 + 0x62) = 0; + *(undefined1 *)((long)plVar5 + 99) = 0; + *(undefined1 *)((long)plVar5 + 0x6f) = 0; + *(long **)(param_1 + 0x10) = plVar5; + } + *(undefined1 *)((long)plVar5 + 0x21) = 0x2e; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x22) = 0x2c; + lVar3 = *(long *)(param_1 + 0x10); + *(undefined1 **)(lVar3 + 0x10) = &DAT_00472008; + *(undefined1 **)(lVar3 + 0x28) = &DAT_00472008; + *(undefined1 **)(lVar3 + 0x38) = &DAT_00472008; + *(undefined1 **)(lVar3 + 0x48) = &DAT_00472008; + *(undefined8 *)(lVar3 + 0x18) = 0; + *(undefined8 *)(lVar3 + 0x30) = 0; + *(undefined8 *)(lVar3 + 0x40) = 0; + *(undefined8 *)(lVar3 + 0x50) = 0; + *(undefined4 *)(lVar3 + 0x58) = 0; + uVar1 = *(undefined4 *)PTR_DAT_00501b78; + *(undefined4 *)(lVar3 + 0x5c) = uVar1; + /* try { // try from 003efdb4 to 004efdb7 has its CatchHandler @ 003ef7a0 */ + *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x60) = uVar1; + /* catch() { ... } // from try @ 003efb14 with catch @ 003efdb8 + catch() { ... } // from try @ 003efc4c with catch @ 003efdb8 */ + /* catch() { ... } // from try @ 003efc30 with catch @ 003efdc0 */ + puVar4 = *(undefined1 **)PTR_PTR_00501b68; + /* catch() { ... } // from try @ 003ef94c with catch @ 003efdc8 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 100) = *puVar4; + /* catch() { ... } // from try @ 003efc14 with catch @ 003efdd0 */ + /* catch() { ... } // from try @ 003efc04 with catch @ 003efdd8 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x65) = puVar4[1]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x66) = puVar4[2]; + /* catch() { ... } // from try @ 003ef8d8 with catch @ 003efdec */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x67) = puVar4[3]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x68) = puVar4[4]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x69) = puVar4[5]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6a) = puVar4[6]; + /* catch() { ... } // from try @ 003ef8b8 with catch @ 003efe1c + catch() { ... } // from try @ 003ef928 with catch @ 003efe1c */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6b) = puVar4[7]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6c) = puVar4[8]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6d) = puVar4[9]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6e) = puVar4[10]; + /* catch() { ... } // from try @ 003efe7c with catch @ 003efe50 + catch() { ... } // from try @ 003effb0 with catch @ 003efe50 + catch() { ... } // from try @ 003effec with catch @ 003efe50 + catch() { ... } // from try @ 003f002c with catch @ 003efe50 + catch() { ... } // from try @ 003f0070 with catch @ 003efe50 + catch() { ... } // from try @ 003f0290 with catch @ 003efe50 + catch() { ... } // from try @ 003f02cc with catch @ 003efe50 + catch() { ... } // from try @ 003f03d8 with catch @ 003efe50 */ + return; +} + + +================================================================== + +### FUNC 003efed0 (396 bytes) name=FUN_003efed0 + +void FUN_003efed0(long param_1) + +{ + undefined4 uVar1; + undefined *puVar2; + long lVar3; + undefined1 *puVar4; + long *plVar5; + + plVar5 = *(long **)(param_1 + 0x10); + if (plVar5 == (long *)0x0) { + /* try { // try from 003effe4 to 004effe7 has its CatchHandler @ 003f02f4 */ + plVar5 = operator_new(0x70); + *(undefined4 *)(plVar5 + 1) = 0; + puVar2 = PTR_DAT_00501b80; + /* try { // try from 003effec to 004f001b has its CatchHandler @ 003efe50 */ + plVar5[2] = 0; + plVar5[3] = 0; + *plVar5 = (long)(puVar2 + 0x10); + *(undefined1 *)(plVar5 + 4) = 0; + *(undefined1 *)((long)plVar5 + 0x21) = 0; + *(undefined1 *)((long)plVar5 + 0x22) = 0; + plVar5[5] = 0; + plVar5[6] = 0; + plVar5[7] = 0; + plVar5[8] = 0; + /* try { // try from 003f0024 to 004f0027 has its CatchHandler @ 003f02d0 */ + plVar5[9] = 0; + plVar5[10] = 0; + /* try { // try from 003f002c to 004f005b has its CatchHandler @ 003efe50 */ + *(undefined4 *)(plVar5 + 0xb) = 0; + *(undefined1 *)((long)plVar5 + 0x5c) = 0; + *(undefined1 *)((long)plVar5 + 0x5d) = 0; + *(undefined1 *)((long)plVar5 + 0x5e) = 0; + *(undefined1 *)((long)plVar5 + 0x5f) = 0; + *(undefined1 *)(plVar5 + 0xc) = 0; + *(undefined1 *)((long)plVar5 + 0x61) = 0; + *(undefined1 *)((long)plVar5 + 0x62) = 0; + *(undefined1 *)((long)plVar5 + 99) = 0; + *(undefined1 *)((long)plVar5 + 0x6f) = 0; + *(long **)(param_1 + 0x10) = plVar5; + } + *(undefined1 *)((long)plVar5 + 0x21) = 0x2e; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x22) = 0x2c; + lVar3 = *(long *)(param_1 + 0x10); + *(undefined1 **)(lVar3 + 0x10) = &DAT_00472008; + *(undefined1 **)(lVar3 + 0x28) = &DAT_00472008; + *(undefined1 **)(lVar3 + 0x38) = &DAT_00472008; + *(undefined1 **)(lVar3 + 0x48) = &DAT_00472008; + *(undefined8 *)(lVar3 + 0x18) = 0; + *(undefined8 *)(lVar3 + 0x30) = 0; + *(undefined8 *)(lVar3 + 0x40) = 0; + *(undefined8 *)(lVar3 + 0x50) = 0; + *(undefined4 *)(lVar3 + 0x58) = 0; + uVar1 = *(undefined4 *)PTR_DAT_00501b78; + *(undefined4 *)(lVar3 + 0x5c) = uVar1; + *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x60) = uVar1; + puVar4 = *(undefined1 **)PTR_PTR_00501b68; + /* try { // try from 003eff58 to 004eff5b has its CatchHandler @ 003f0440 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 100) = *puVar4; + /* try { // try from 003eff64 to 004eff67 has its CatchHandler @ 003f0410 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x65) = puVar4[1]; + /* try { // try from 003eff6c to 004eff6f has its CatchHandler @ 003f0440 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x66) = puVar4[2]; + /* try { // try from 003eff74 to 004eff8b has its CatchHandler @ 003f0318 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x67) = puVar4[3]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x68) = puVar4[4]; + /* try { // try from 003eff90 to 004effa7 has its CatchHandler @ 003f03ec */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x69) = puVar4[5]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6a) = puVar4[6]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6b) = puVar4[7]; + /* try { // try from 003effb0 to 004effdb has its CatchHandler @ 003efe50 */ + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6c) = puVar4[8]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6d) = puVar4[9]; + *(undefined1 *)(*(long *)(param_1 + 0x10) + 0x6e) = puVar4[10]; + return; +} + + +================================================================== + +### FUNC 003f005c (68 bytes) name=FUN_003f005c + +void FUN_003f005c(long *param_1) + +{ + /* try { // try from 003f0064 to 004f0067 has its CatchHandler @ 003f02a8 */ + /* try { // try from 003f0070 to 004f0083 has its CatchHandler @ 003efe50 */ + *param_1 = (long)(PTR_DAT_00501c40 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003f00b4 (76 bytes) name=FUN_003f00b4 + +void FUN_003f00b4(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501c40 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f0114 (68 bytes) name=FUN_003f0114 + +void FUN_003f0114(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501ac0 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003f016c (76 bytes) name=FUN_003f016c + +void FUN_003f016c(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501ac0 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f01cc (356 bytes) name=FUN_003f01cc + +void FUN_003f01cc(long param_1) + +{ + undefined4 uVar1; + undefined *puVar2; + long lVar3; + long *plVar4; + byte *pbVar5; + + /* try { // try from 003f01cc to 004f01cf has its CatchHandler @ 003f035c */ + plVar4 = *(long **)(param_1 + 0x10); + if (plVar4 == (long *)0x0) { + plVar4 = operator_new(0xa0); + *(undefined4 *)(plVar4 + 1) = 0; + puVar2 = PTR_DAT_00501948; + /* try { // try from 003f02cc to 004f02cf has its CatchHandler @ 003efe50 */ + plVar4[2] = 0; + /* catch() { ... } // from try @ 003f0024 with catch @ 003f02d0 */ + plVar4[3] = 0; + *plVar4 = (long)(puVar2 + 0x10); + *(undefined1 *)(plVar4 + 4) = 0; + *(undefined4 *)((long)plVar4 + 0x24) = 0; + *(undefined4 *)(plVar4 + 5) = 0; + plVar4[6] = 0; + plVar4[7] = 0; + plVar4[8] = 0; + /* catch() { ... } // from try @ 003effe4 with catch @ 003f02f4 */ + plVar4[9] = 0; + plVar4[10] = 0; + plVar4[0xb] = 0; + *(undefined4 *)(plVar4 + 0xc) = 0; + *(undefined1 *)((long)plVar4 + 100) = 0; + *(undefined1 *)((long)plVar4 + 0x65) = 0; + *(undefined1 *)((long)plVar4 + 0x66) = 0; + *(undefined1 *)((long)plVar4 + 0x67) = 0; + *(undefined1 *)(plVar4 + 0xd) = 0; + /* catch() { ... } // from try @ 003eff74 with catch @ 003f0318 */ + *(undefined1 *)((long)plVar4 + 0x69) = 0; + *(undefined1 *)((long)plVar4 + 0x6a) = 0; + *(undefined1 *)((long)plVar4 + 0x6b) = 0; + *(undefined1 *)(plVar4 + 0x13) = 0; + *(long **)(param_1 + 0x10) = plVar4; + } + /* try { // try from 003f01e8 to 004f0203 has its CatchHandler @ 003f03fc */ + *(undefined4 *)((long)plVar4 + 0x24) = 0x2e; + plVar4[6] = (long)&DAT_00479f78; + *(undefined4 *)(plVar4 + 5) = 0x2c; + plVar4[8] = (long)&DAT_00479f78; + plVar4[10] = (long)&DAT_00479f78; + plVar4[2] = (long)&DAT_00472008; + plVar4[3] = 0; + plVar4[7] = 0; + plVar4[9] = 0; + plVar4[0xb] = 0; + *(undefined4 *)(plVar4 + 0xc) = 0; + /* try { // try from 003f0230 to 004f0233 has its CatchHandler @ 003f035c */ + uVar1 = *(undefined4 *)PTR_DAT_00501b78; + *(undefined4 *)((long)plVar4 + 100) = uVar1; + /* try { // try from 003f0238 to 004f024f has its CatchHandler @ 003f03f4 */ + *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x68) = uVar1; + lVar3 = *(long *)(param_1 + 0x10); + pbVar5 = *(byte **)PTR_PTR_00501b68; + /* try { // try from 003f0254 to 004f026b has its CatchHandler @ 003f03e4 */ + *(uint *)(lVar3 + 0x6c) = (uint)*pbVar5; + *(uint *)(lVar3 + 0x70) = (uint)pbVar5[1]; + *(uint *)(lVar3 + 0x74) = (uint)pbVar5[2]; + *(uint *)(lVar3 + 0x78) = (uint)pbVar5[3]; + /* try { // try from 003f0270 to 004f0287 has its CatchHandler @ 003f03dc */ + *(uint *)(lVar3 + 0x7c) = (uint)pbVar5[4]; + *(uint *)(lVar3 + 0x80) = (uint)pbVar5[5]; + *(uint *)(lVar3 + 0x84) = (uint)pbVar5[6]; + *(uint *)(lVar3 + 0x88) = (uint)pbVar5[7]; + /* try { // try from 003f0290 to 004f02a3 has its CatchHandler @ 003efe50 */ + *(uint *)(lVar3 + 0x8c) = (uint)pbVar5[8]; + *(uint *)(lVar3 + 0x90) = (uint)pbVar5[9]; + *(uint *)(lVar3 + 0x94) = (uint)pbVar5[10]; + /* catch() { ... } // from try @ 003f0064 with catch @ 003f02a8 */ + return; +} + + +================================================================== + +### FUNC 003f0330 (356 bytes) name=FUN_003f0330 + +void FUN_003f0330(long param_1) + +{ + undefined4 uVar1; + undefined *puVar2; + long lVar3; + long *plVar4; + byte *pbVar5; + + plVar4 = *(long **)(param_1 + 0x10); + if (plVar4 == (long *)0x0) { + plVar4 = operator_new(0xa0); + *(undefined4 *)(plVar4 + 1) = 0; + puVar2 = PTR_DAT_00501d48; + plVar4[2] = 0; + plVar4[3] = 0; + *plVar4 = (long)(puVar2 + 0x10); + /* catch() { ... } // from try @ 003eff58 with catch @ 003f0440 + catch() { ... } // from try @ 003eff6c with catch @ 003f0440 */ + *(undefined1 *)(plVar4 + 4) = 0; + *(undefined4 *)((long)plVar4 + 0x24) = 0; + *(undefined4 *)(plVar4 + 5) = 0; + plVar4[6] = 0; + plVar4[7] = 0; + plVar4[8] = 0; + plVar4[9] = 0; + plVar4[10] = 0; + plVar4[0xb] = 0; + *(undefined4 *)(plVar4 + 0xc) = 0; + *(undefined1 *)((long)plVar4 + 100) = 0; + *(undefined1 *)((long)plVar4 + 0x65) = 0; + *(undefined1 *)((long)plVar4 + 0x66) = 0; + *(undefined1 *)((long)plVar4 + 0x67) = 0; + *(undefined1 *)(plVar4 + 0xd) = 0; + *(undefined1 *)((long)plVar4 + 0x69) = 0; + *(undefined1 *)((long)plVar4 + 0x6a) = 0; + *(undefined1 *)((long)plVar4 + 0x6b) = 0; + *(undefined1 *)(plVar4 + 0x13) = 0; + *(long **)(param_1 + 0x10) = plVar4; + } + *(undefined4 *)((long)plVar4 + 0x24) = 0x2e; + /* catch() { ... } // from try @ 003f01cc with catch @ 003f035c + catch() { ... } // from try @ 003f0230 with catch @ 003f035c */ + plVar4[6] = (long)&DAT_00479f78; + *(undefined4 *)(plVar4 + 5) = 0x2c; + plVar4[8] = (long)&DAT_00479f78; + plVar4[10] = (long)&DAT_00479f78; + plVar4[2] = (long)&DAT_00472008; + plVar4[3] = 0; + plVar4[7] = 0; + plVar4[9] = 0; + plVar4[0xb] = 0; + *(undefined4 *)(plVar4 + 0xc) = 0; + uVar1 = *(undefined4 *)PTR_DAT_00501b78; + *(undefined4 *)((long)plVar4 + 100) = uVar1; + *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x68) = uVar1; + lVar3 = *(long *)(param_1 + 0x10); + pbVar5 = *(byte **)PTR_PTR_00501b68; + *(uint *)(lVar3 + 0x6c) = (uint)*pbVar5; + *(uint *)(lVar3 + 0x70) = (uint)pbVar5[1]; + *(uint *)(lVar3 + 0x74) = (uint)pbVar5[2]; + *(uint *)(lVar3 + 0x78) = (uint)pbVar5[3]; + /* try { // try from 003f03d8 to 004f03db has its CatchHandler @ 003efe50 */ + *(uint *)(lVar3 + 0x7c) = (uint)pbVar5[4]; + /* catch() { ... } // from try @ 003f0104 with catch @ 003f03dc + catch() { ... } // from try @ 003f0270 with catch @ 003f03dc */ + *(uint *)(lVar3 + 0x80) = (uint)pbVar5[5]; + /* catch() { ... } // from try @ 003f0254 with catch @ 003f03e4 */ + *(uint *)(lVar3 + 0x84) = (uint)pbVar5[6]; + /* catch() { ... } // from try @ 003eff90 with catch @ 003f03ec */ + *(uint *)(lVar3 + 0x88) = (uint)pbVar5[7]; + /* catch() { ... } // from try @ 003f0238 with catch @ 003f03f4 */ + *(uint *)(lVar3 + 0x8c) = (uint)pbVar5[8]; + /* catch() { ... } // from try @ 003f01e8 with catch @ 003f03fc */ + *(uint *)(lVar3 + 0x90) = (uint)pbVar5[9]; + *(uint *)(lVar3 + 0x94) = (uint)pbVar5[10]; + /* catch() { ... } // from try @ 003eff64 with catch @ 003f0410 */ + return; +} + + +================================================================== + +### FUNC 003f0494 (68 bytes) name=FUN_003f0494 + +void FUN_003f0494(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501ed8 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003f04ec (76 bytes) name=FUN_003f04ec + +void FUN_003f04ec(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501ed8 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f054c (68 bytes) name=FUN_003f054c + +void FUN_003f054c(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501cb0 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003f05a4 (76 bytes) name=FUN_003f05a4 + +void FUN_003f05a4(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501cb0 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f0604 (288 bytes) name=FUN_003f0604 + +void FUN_003f0604(long param_1) + +{ + undefined1 *puVar1; + long lVar2; + undefined *puVar3; + long *plVar4; + long lVar5; + long lVar6; + + plVar4 = *(long **)(param_1 + 0x10); + if (plVar4 == (long *)0x0) { + plVar4 = operator_new(0x90); + *(undefined4 *)(plVar4 + 1) = 0; + puVar3 = PTR_DAT_005019b0; + /* try { // try from 003f06e4 to 004f06e7 has its CatchHandler @ 003f06fc */ + plVar4[2] = 0; + plVar4[3] = 0; + *plVar4 = (long)(puVar3 + 0x10); + /* catch() { ... } // from try @ 003f06e4 with catch @ 003f06fc */ + *(undefined1 *)(plVar4 + 4) = 0; + plVar4[5] = 0; + plVar4[6] = 0; + plVar4[7] = 0; + /* try { // try from 003f070c to 004f070f has its CatchHandler @ 003f0688 */ + plVar4[8] = 0; + /* catch() { ... } // from try @ 003f084c with catch @ 003f0710 */ + *(undefined1 *)(plVar4 + 9) = 0; + *(undefined1 *)((long)plVar4 + 0x49) = 0; + *(undefined1 *)(plVar4 + 0x11) = 0; + *(long **)(param_1 + 0x10) = plVar4; + } + *(undefined1 *)(plVar4 + 9) = 0x2e; + plVar4[3] = 0; + lVar5 = *(long *)(param_1 + 0x10); + *(undefined1 *)(plVar4 + 4) = 0; + plVar4[2] = (long)&DAT_00472008; + *(undefined1 *)(lVar5 + 0x49) = 0x2c; + lVar5 = 0; + lVar6 = *(long *)PTR_PTR_00501d10; + do { + puVar1 = (undefined1 *)(lVar6 + lVar5); + /* try { // try from 003f065c to 004f065f has its CatchHandler @ 003f0674 */ + lVar2 = *(long *)(param_1 + 0x10) + lVar5; + lVar5 = lVar5 + 1; + *(undefined1 *)(lVar2 + 0x4a) = *puVar1; + } while (lVar5 != 0x24); + /* catch() { ... } // from try @ 003f065c with catch @ 003f0674 */ + lVar5 = 0; + lVar6 = *(long *)PTR_PTR_00501aa0; + do { + /* try { // try from 003f0684 to 004f0687 has its CatchHandler @ 003f0600 */ + puVar1 = (undefined1 *)(lVar6 + lVar5); + /* catch() { ... } // from try @ 003f070c with catch @ 003f0688 */ + lVar2 = *(long *)(param_1 + 0x10) + lVar5; + lVar5 = lVar5 + 1; + *(undefined1 *)(lVar2 + 0x6e) = *puVar1; + } while (lVar5 != 0x1a); + lVar5 = *(long *)(param_1 + 0x10); + *(undefined **)(lVar5 + 0x28) = &DAT_0046d718; + *(undefined8 *)(lVar5 + 0x30) = 4; + *(char **)(lVar5 + 0x38) = "false"; + *(undefined8 *)(lVar5 + 0x40) = 5; + return; +} + + +================================================================== + +### FUNC 003f0724 (68 bytes) name=FUN_003f0724 + +void FUN_003f0724(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501e00 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003f077c (76 bytes) name=FUN_003f077c + +void FUN_003f077c(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501e00 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f07dc (612 bytes) name=FUN_003f07dc + +void FUN_003f07dc(long param_1) + +{ + byte *pbVar1; + uint3 uVar2; + undefined *puVar3; + long lVar4; + long *plVar5; + long *plVar6; + ulong *puVar7; + ulong *puVar8; + ulong *puVar9; + undefined1 uVar10; + undefined1 uVar11; + undefined1 uVar12; + ulong uVar13; + ulong uVar14; + long lVar15; + + plVar5 = *(long **)(param_1 + 0x10); + if (plVar5 == (long *)0x0) { + plVar5 = operator_new(0x150); + *(undefined4 *)(plVar5 + 1) = 0; + puVar3 = PTR_DAT_00501df8; + /* try { // try from 003f0a00 to 004f0a03 has its CatchHandler @ 003f0a18 */ + plVar5[2] = 0; + plVar5[3] = 0; + *plVar5 = (long)(puVar3 + 0x10); + /* catch() { ... } // from try @ 003f0a00 with catch @ 003f0a18 */ + *(undefined1 *)(plVar5 + 4) = 0; + plVar5[5] = 0; + plVar5[6] = 0; + plVar5[7] = 0; + /* try { // try from 003f0a28 to 004f0a2b has its CatchHandler @ 003f0998 */ + plVar5[8] = 0; + *(undefined4 *)(plVar5 + 9) = 0; + /* catch() { ... } // from try @ 003f0adc with catch @ 003f0a30 + catch() { ... } // from try @ 003f0b28 with catch @ 003f0a30 */ + *(undefined4 *)((long)plVar5 + 0x4c) = 0; + *(undefined1 *)(plVar5 + 0x29) = 0; + *(long **)(param_1 + 0x10) = plVar5; + } + plVar5[3] = 0; + plVar5[2] = (long)&DAT_00472008; + *(undefined4 *)(plVar5 + 9) = 0x2e; + *(undefined4 *)((long)plVar5 + 0x4c) = 0x2c; + *(undefined1 *)(plVar5 + 4) = 0; + puVar7 = (ulong *)(plVar5 + 10); + puVar8 = (ulong *)(plVar5 + 0x1c); + /* try { // try from 003f0824 to 004f0827 has its CatchHandler @ 003f083c */ + puVar9 = *(ulong **)PTR_PTR_00501d10; + if ((puVar7 < (ulong *)((long)puVar9 + 0x24U)) && (puVar9 < puVar8)) { + lVar4 = 0; + do { + pbVar1 = (byte *)((long)puVar9 + lVar4); + lVar4 = lVar4 + 1; + *(uint *)puVar7 = (uint)*pbVar1; + puVar7 = (ulong *)((long)puVar7 + 4); + } while (lVar4 != 0x24); + } + else { + /* catch() { ... } // from try @ 003f0824 with catch @ 003f083c */ + /* try { // try from 003f084c to 004f084f has its CatchHandler @ 003f0710 */ + uVar14 = puVar9[1]; + uVar13 = *puVar9; + /* catch() { ... } // from try @ 003f0994 with catch @ 003f0850 */ + uVar10 = (undefined1)(uVar13 >> 8); + uVar11 = (undefined1)(uVar13 >> 0x28); + uVar2 = CONCAT12((char)(uVar14 >> 8),(short)uVar14) & 0xff00ff; + uVar12 = (undefined1)(uVar14 >> 0x28); + plVar5[0xb] = (ulong)CONCAT14((char)(uVar13 >> 0x18),(uint)(byte)(uVar13 >> 0x10)); + *puVar7 = (ulong)((uint6)CONCAT14(uVar10,(uint)CONCAT12(uVar10,(ushort)(byte)uVar13)) & + 0xffff0000ffff); + plVar5[0xd] = (ulong)CONCAT14((char)(uVar13 >> 0x38),(uint)(byte)(uVar13 >> 0x30)); + plVar5[0xc] = (ulong)((uint6)CONCAT14(uVar11,(uint)CONCAT12(uVar11,(ushort)(byte)(uVar13 >> 0x20 + ))) & + 0xffff0000ffff); + plVar5[0xf] = (ulong)CONCAT14((char)(uVar14 >> 0x18),(uint)(byte)(uVar14 >> 0x10)); + plVar5[0xe] = (ulong)((uint6)CONCAT14((char)(uVar2 >> 0x10),(uint)uVar2) & 0xffff0000ffff); + plVar5[0x11] = (ulong)CONCAT14((char)(uVar14 >> 0x38),(uint)(byte)(uVar14 >> 0x30)); + plVar5[0x10] = (ulong)((uint6)CONCAT14(uVar12,(uint)CONCAT12(uVar12,(ushort)(byte)(uVar14 >> + 0x20))) & + 0xffff0000ffff); + uVar14 = puVar9[3]; + uVar13 = puVar9[2]; + uVar10 = (undefined1)(uVar13 >> 8); + uVar11 = (undefined1)(uVar13 >> 0x28); + uVar2 = CONCAT12((char)(uVar14 >> 8),(short)uVar14) & 0xff00ff; + uVar12 = (undefined1)(uVar14 >> 0x28); + plVar5[0x13] = (ulong)CONCAT14((char)(uVar13 >> 0x18),(uint)(byte)(uVar13 >> 0x10)); + plVar5[0x12] = (ulong)((uint6)CONCAT14(uVar10,(uint)CONCAT12(uVar10,(ushort)(byte)uVar13)) & + 0xffff0000ffff); + plVar5[0x15] = (ulong)CONCAT14((char)(uVar13 >> 0x38),(uint)(byte)(uVar13 >> 0x30)); + plVar5[0x14] = (ulong)((uint6)CONCAT14(uVar11,(uint)CONCAT12(uVar11,(ushort)(byte)(uVar13 >> + 0x20))) & + 0xffff0000ffff); + plVar5[0x17] = (ulong)CONCAT14((char)(uVar14 >> 0x18),(uint)(byte)(uVar14 >> 0x10)); + plVar5[0x16] = (ulong)((uint6)CONCAT14((char)(uVar2 >> 0x10),(uint)uVar2) & 0xffff0000ffff); + plVar5[0x19] = (ulong)CONCAT14((char)(uVar14 >> 0x38),(uint)(byte)(uVar14 >> 0x30)); + plVar5[0x18] = (ulong)((uint6)CONCAT14(uVar12,(uint)CONCAT12(uVar12,(ushort)(byte)(uVar14 >> + 0x20))) & + 0xffff0000ffff); + *(uint *)(plVar5 + 0x1a) = (uint)(byte)puVar9[4]; + *(uint *)((long)plVar5 + 0xd4) = (uint)*(byte *)((long)puVar9 + 0x21); + *(uint *)(plVar5 + 0x1b) = (uint)*(byte *)((long)puVar9 + 0x22); + *(uint *)((long)plVar5 + 0xdc) = (uint)*(byte *)((long)puVar9 + 0x23); + } + plVar6 = *(long **)PTR_PTR_00501aa0; + if ((puVar8 < (ulong *)((long)plVar6 + 0x1aU)) && (plVar6 < plVar5 + 0x29)) { + lVar4 = 0; + do { + pbVar1 = (byte *)((long)plVar6 + lVar4); + lVar4 = lVar4 + 1; + *(uint *)puVar8 = (uint)*pbVar1; + puVar8 = (ulong *)((long)puVar8 + 4); + } while (lVar4 != 0x1a); + } + else { + lVar15 = plVar6[1]; + lVar4 = *plVar6; + uVar10 = (undefined1)((ulong)lVar4 >> 8); + uVar11 = (undefined1)((ulong)lVar4 >> 0x28); + uVar2 = CONCAT12((char)((ulong)lVar15 >> 8),(short)lVar15) & 0xff00ff; + uVar12 = (undefined1)((ulong)lVar15 >> 0x28); + plVar5[0x1d] = (ulong)CONCAT14((char)((ulong)lVar4 >> 0x18),(uint)(byte)((ulong)lVar4 >> 0x10)); + *puVar8 = (ulong)((uint6)CONCAT14(uVar10,(uint)CONCAT12(uVar10,(ushort)(byte)lVar4)) & + 0xffff0000ffff); + plVar5[0x1f] = (ulong)CONCAT14((char)((ulong)lVar4 >> 0x38),(uint)(byte)((ulong)lVar4 >> 0x30)); + plVar5[0x1e] = (ulong)((uint6)CONCAT14(uVar11,(uint)CONCAT12(uVar11,(ushort)(byte)((ulong)lVar4 + >> 0x20))) & + 0xffff0000ffff); + plVar5[0x21] = (ulong)CONCAT14((char)((ulong)lVar15 >> 0x18),(uint)(byte)((ulong)lVar15 >> 0x10) + ); + plVar5[0x20] = (ulong)((uint6)CONCAT14((char)(uVar2 >> 0x10),(uint)uVar2) & 0xffff0000ffff); + plVar5[0x23] = (ulong)CONCAT14((char)((ulong)lVar15 >> 0x38),(uint)(byte)((ulong)lVar15 >> 0x30) + ); + plVar5[0x22] = (ulong)((uint6)CONCAT14(uVar12,(uint)CONCAT12(uVar12,(ushort)(byte)((ulong)lVar15 + >> 0x20))) & + 0xffff0000ffff); + *(uint *)(plVar5 + 0x24) = (uint)*(byte *)(plVar6 + 2); + *(uint *)((long)plVar5 + 0x124) = (uint)*(byte *)((long)plVar6 + 0x11); + *(uint *)(plVar5 + 0x25) = (uint)*(byte *)((long)plVar6 + 0x12); + *(uint *)((long)plVar5 + 300) = (uint)*(byte *)((long)plVar6 + 0x13); + *(uint *)(plVar5 + 0x26) = (uint)*(byte *)((long)plVar6 + 0x14); + *(uint *)((long)plVar5 + 0x134) = (uint)*(byte *)((long)plVar6 + 0x15); + *(uint *)(plVar5 + 0x27) = (uint)*(byte *)((long)plVar6 + 0x16); + /* try { // try from 003f096c to 004f096f has its CatchHandler @ 003f0984 */ + *(uint *)((long)plVar5 + 0x13c) = (uint)*(byte *)((long)plVar6 + 0x17); + *(uint *)(plVar5 + 0x28) = (uint)*(byte *)(plVar6 + 3); + *(uint *)((long)plVar5 + 0x144) = (uint)*(byte *)((long)plVar6 + 0x19); + } + /* catch() { ... } // from try @ 003f096c with catch @ 003f0984 */ + plVar5[5] = (long)&DAT_00479c70; + /* try { // try from 003f0994 to 004f0997 has its CatchHandler @ 003f0850 */ + plVar5[6] = 4; + /* catch() { ... } // from try @ 003f0a28 with catch @ 003f0998 */ + plVar5[7] = (long)L"false"; + plVar5[8] = 5; + return; +} + + +================================================================== + +### FUNC 003f0a40 (68 bytes) name=FUN_003f0a40 + +void FUN_003f0a40(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501c68 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003f0a98 (76 bytes) name=FUN_003f0a98 + +void FUN_003f0a98(long *param_1) + +{ + /* try { // try from 003f0aac to 004f0aaf has its CatchHandler @ 003f0b04 */ + *param_1 = (long)(PTR_DAT_00501c68 + 0x10); + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + /* try { // try from 003f0ad0 to 004f0ad3 has its CatchHandler @ 003f0b2c */ + FUN_003ecdfc(param_1); + /* try { // try from 003f0adc to 004f0aef has its CatchHandler @ 003f0a30 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f0af8 (36 bytes) name=FUN_003f0af8 + +void FUN_003f0af8(undefined8 *param_1) + +{ + /* catch() { ... } // from try @ 003f0aac with catch @ 003f0b04 */ + *param_1 = &PTR_FUN_004f8188; + param_1[1] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003f0b1c (16 bytes) name=FUN_003f0b1c + +void FUN_003f0b1c(long *param_1) + +{ + /* try { // try from 003f0b28 to 004f0b2b has its CatchHandler @ 003f0a30 */ + FUN_003f0af8((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f0b2c (64 bytes) name=FUN_003f0b2c + +void FUN_003f0b2c(undefined8 *param_1) + +{ + /* catch() { ... } // from try @ 003f0ad0 with catch @ 003f0b2c */ + *param_1 = &PTR_FUN_004f8188; + param_1[1] = PTR_DAT_00501a40 + 0x10; + /* catch() { ... } // from try @ 003f0c00 with catch @ 003f0b58 + catch() { ... } // from try @ 003f0c50 with catch @ 003f0b58 */ + FUN_003d381c(param_1 + 1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f0b6c (16 bytes) name=FUN_003f0b6c + +void FUN_003f0b6c(long *param_1) + +{ + FUN_003f0b2c((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f0b7c (36 bytes) name=FUN_003f0b7c + +void FUN_003f0b7c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f81e8; + param_1[1] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003f0ba0 (16 bytes) name=FUN_003f0ba0 + +void FUN_003f0ba0(long *param_1) + +{ + FUN_003f0b7c((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f0bb0 (64 bytes) name=FUN_003f0bb0 + +void FUN_003f0bb0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f81e8; + /* try { // try from 003f0bd0 to 004f0bd3 has its CatchHandler @ 003f0c2c */ + param_1[1] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f0bf0 (16 bytes) name=FUN_003f0bf0 + +void FUN_003f0bf0(long *param_1) + +{ + /* try { // try from 003f0bf0 to 004f0bf3 has its CatchHandler @ 003f0c54 */ + FUN_003f0bb0((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f0c00 (40 bytes) name=FUN_003f0c00 + +void FUN_003f0c00(long *param_1,long *param_2,undefined8 param_3) + +{ + long lVar1; + + /* try { // try from 003f0c00 to 004f0c17 has its CatchHandler @ 003f0b58 */ + lVar1 = *param_2; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[1]; + FUN_003d2728((long)param_1 + lVar1,param_3); + return; +} + + +================================================================== + +### FUNC 003f0c28 (116 bytes) name=FUN_003f0c28 + +void FUN_003f0c28(undefined8 *param_1,undefined8 param_2) + +{ + /* catch() { ... } // from try @ 003f0bd0 with catch @ 003f0c2c */ + FUN_003d347c(param_1 + 1); + param_1[0x1c] = 0; + /* try { // try from 003f0c50 to 004f0c53 has its CatchHandler @ 003f0b58 */ + /* catch() { ... } // from try @ 003f0bf0 with catch @ 003f0c54 */ + *(undefined1 *)(param_1 + 0x1d) = 0; + *(undefined1 *)((long)param_1 + 0xe9) = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + *param_1 = &PTR_FUN_004f8188; + /* catch() { ... } // from try @ 003f0db8 with catch @ 003f0c80 */ + param_1[1] = &PTR_FUN_004f81b0; + FUN_003d2728(param_1 + 1,param_2); + return; +} + + +================================================================== + +### FUNC 003f0cc0 (24 bytes) name=FUN_003f0cc0 + +void FUN_003f0cc0(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + return; +} + + +================================================================== + +### FUNC 003f0cd8 (20 bytes) name=FUN_003f0cd8 + +void FUN_003f0cd8(undefined8 param_1,code *param_2) + +{ + (*param_2)(); + return; +} + + +================================================================== + +### FUNC 003f0cec (48 bytes) name=FUN_003f0cec + +long * FUN_003f0cec(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003f0d1c (48 bytes) name=FUN_003f0d1c + +long * FUN_003f0d1c(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003f0d4c (108 bytes) name=FUN_003f0d4c + +void FUN_003f0d4c(long *param_1,undefined8 param_2,long param_3) + +{ + long lVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar1 = (**(code **)(*plVar2 + 0x60))(plVar2); + if (param_3 != lVar1) { + /* try { // try from 003f0d90 to 004f0d93 has its CatchHandler @ 003f0da8 */ + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f0d90 with catch @ 003f0da8 */ + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return; + } + return; +} + + +================================================================== + +### FUNC 003f0db8 (100 bytes) name=FUN_003f0db8 + +long * FUN_003f0db8(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + + /* try { // try from 003f0db8 to 004f0dbb has its CatchHandler @ 003f0c80 */ + /* catch() { ... } // from try @ 003f1030 with catch @ 003f0dc0 */ + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((plVar3 != (long *)0x0) && (iVar2 = (**(code **)(*plVar3 + 0x30))(), iVar2 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + } + return param_1; +} + + +================================================================== + +### FUNC 003f0ea0 (196 bytes) name=FUN_003f0ea0 + +undefined1 [16] FUN_003f0ea0(long *param_1) + +{ + undefined8 uVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + long *plVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + undefined1 auVar11 [16]; + + if ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0) { + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + /* try { // try from 003f0f30 to 004f0f4b has its CatchHandler @ 003f1078 */ + auVar11 = (**(code **)(*plVar5 + 0x20))(plVar5,0,1,0x10); + uVar2 = auVar11._8_8_; + uVar1 = auVar11._0_8_; + uVar4 = uVar2 >> 8 & 0xff; + uVar6 = uVar2 >> 0x10 & 0xff; + uVar3 = uVar2 & 0xff; + uVar7 = uVar2 >> 0x18 & 0xff; + uVar8 = uVar2 >> 0x20 & 0xff; + uVar9 = uVar2 >> 0x28 & 0xff; + uVar10 = uVar2 >> 0x30 & 0xff; + uVar2 = uVar2 >> 0x38; + } + else { + uVar2 = 0; + uVar10 = 0; + uVar9 = 0; + uVar8 = 0; + uVar7 = 0; + uVar6 = 0; + uVar4 = 0; + uVar3 = 0; + uVar1 = 0xffffffffffffffff; + } + auVar11._8_8_ = + uVar3 | uVar4 << 8 | uVar6 << 0x10 | uVar7 << 0x18 | uVar8 << 0x20 | uVar9 << 0x28 | + uVar10 << 0x30 | uVar2 << 0x38; + auVar11._0_8_ = uVar1; + /* try { // try from 003f0f14 to 004f0f17 has its CatchHandler @ 003f10ac */ + return auVar11; +} + + +================================================================== + +### FUNC 003f0fe8 (136 bytes) name=FUN_003f0fe8 + +long * FUN_003f0fe8(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + long *plVar2; + + /* try { // try from 003f1030 to 004f1033 has its CatchHandler @ 003f0dc0 */ + /* catch() { ... } // from try @ 003f0f80 with catch @ 003f1034 */ + if (((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x28))(plVar2,param_2,param_3,0x10), lVar1 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + /* catch() { ... } // from try @ 003f0fb8 with catch @ 003f1020 */ + return param_1; +} + + +================================================================== + +### FUNC 003f10f4 (136 bytes) name=FUN_003f10f4 + +long * FUN_003f10f4(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + long *plVar2; + + if (((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x20))(plVar2,param_2,param_3,0x10), lVar1 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f1200 (40 bytes) name=FUN_003f1200 + +void FUN_003f1200(long *param_1,long *param_2) + +{ + long lVar1; + + /* catch() { ... } // from try @ 003f11f4 with catch @ 003f120c */ + lVar1 = *param_2; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + /* try { // try from 003f121c to 004f121f has its CatchHandler @ 003f10e0 */ + /* catch() { ... } // from try @ 003f12b4 with catch @ 003f1220 */ + *(long *)((long)param_1 + lVar1) = param_2[1]; + FUN_003d2728((long)param_1 + lVar1,0); + return; +} + + +================================================================== + +### FUNC 003f1228 (112 bytes) name=FUN_003f1228 + +void FUN_003f1228(undefined8 *param_1) + +{ + FUN_003d347c(param_1 + 1); + param_1[0x1c] = 0; + *(undefined1 *)(param_1 + 0x1d) = 0; + *(undefined1 *)((long)param_1 + 0xe9) = 0; + param_1[0x1e] = 0; + /* try { // try from 003f1264 to 004f1267 has its CatchHandler @ 003f12a4 */ + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + *param_1 = &PTR_FUN_004f8188; + /* try { // try from 003f127c to 004f127f has its CatchHandler @ 003f12b8 */ + param_1[1] = &PTR_FUN_004f81b0; + /* try { // try from 003f1284 to 004f1287 has its CatchHandler @ 003f12a4 */ + FUN_003d2728(param_1 + 1,0); + return; +} + + +================================================================== + +### FUNC 003f12bc (124 bytes) name=FUN_003f12bc + +void FUN_003f12bc(undefined1 *param_1,long *param_2) + +{ + long lVar1; + uint uVar2; + long lVar3; + + lVar3 = *param_2; + /* catch() { ... } // from try @ 003f1350 with catch @ 003f12cc */ + *(long **)(param_1 + 8) = param_2; + lVar1 = *(long *)(lVar3 + -0x18); + *param_1 = 0; + lVar1 = (long)param_2 + lVar1; + if (*(long *)(lVar1 + 0xd8) != 0) { + uVar2 = *(uint *)(lVar1 + 0x20); + if (uVar2 != 0) goto LAB_003f1324; + FUN_003f0db8(); + lVar3 = *param_2; + } + lVar1 = (long)param_2 + *(long *)(lVar3 + -0x18); + /* try { // try from 003f1308 to 004f130b has its CatchHandler @ 003f1340 */ + uVar2 = *(uint *)(lVar1 + 0x20); + if (uVar2 == 0) { + *param_1 = 1; + /* try { // try from 003f131c to 004f131f has its CatchHandler @ 003f1354 */ + return; + } +LAB_003f1324: + /* try { // try from 003f1324 to 004f1327 has its CatchHandler @ 003f1340 */ + FUN_003d2254(lVar1,uVar2 | 4); + return; +} + + +================================================================== + +### FUNC 003f1338 (132 bytes) name=FUN_003f1338 + +void FUN_003f1338(long param_1) + +{ + char cVar1; + int iVar2; + long lVar3; + long *plVar4; + + /* catch() { ... } // from try @ 003f1308 with catch @ 003f1340 + catch() { ... } // from try @ 003f1324 with catch @ 003f1340 */ + plVar4 = *(long **)(param_1 + 8); + lVar3 = *(long *)(*plVar4 + -0x18); + /* try { // try from 003f1350 to 004f1353 has its CatchHandler @ 003f12cc */ + /* catch() { ... } // from try @ 003f131c with catch @ 003f1354 */ + /* catch() { ... } // from try @ 003f13ec with catch @ 003f1368 */ + if (((((*(uint *)((long)plVar4 + lVar3 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar4 = *(long **)((long)plVar4 + lVar3 + 0xe8), plVar4 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar4 + 0x30))(), iVar2 == -1)) { + /* try { // try from 003f13a4 to 004f13a7 has its CatchHandler @ 003f13dc */ + lVar3 = (long)*(long **)(param_1 + 8) + *(long *)(**(long **)(param_1 + 8) + -0x18); + /* try { // try from 003f13b8 to 004f13bb has its CatchHandler @ 003f13f0 */ + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return; + } + return; +} + + +================================================================== + +### FUNC 003f13bc (264 bytes) name=FUN_003f13bc + +long * FUN_003f13bc(long *param_1,long param_2) + +{ + char cVar1; + int iVar2; + long lVar3; + long *plVar4; + uint uVar5; + undefined1 uStack_11; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f13c0 to 004f13c3 has its CatchHandler @ 003f13dc */ + /* catch() { ... } // from try @ 003f13a4 with catch @ 003f13dc + catch() { ... } // from try @ 003f13c0 with catch @ 003f13dc */ + FUN_003f12bc(local_10,param_1); + /* try { // try from 003f13ec to 004f13ef has its CatchHandler @ 003f1368 */ + if ((param_2 == 0) || (local_10[0] == '\0')) { + if (param_2 != 0) goto LAB_003f1414; + uVar5 = 1; + } + else { + /* catch() { ... } // from try @ 003f13b8 with catch @ 003f13f0 */ + /* catch() { ... } // from try @ 003f1540 with catch @ 003f1404 */ + lVar3 = FUN_003fd410(param_2,*(undefined8 *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8) + ,&uStack_11); + uVar5 = 4; + if (lVar3 != 0) goto LAB_003f1414; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,uVar5 | *(uint *)(lVar3 + 0x20)); +LAB_003f1414: + plVar4 = local_8; + lVar3 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar3 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar4 = *(long **)((long)plVar4 + lVar3 + 0xe8), plVar4 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar4 + 0x30))(), iVar2 == -1)) { + lVar3 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f1564 (288 bytes) name=FUN_003f1564 + +long * FUN_003f1564(long *param_1,undefined1 param_2) + +{ + char cVar1; + int iVar2; + long *plVar3; + long lVar4; + char local_10 [8]; + long *local_8; + + FUN_003f12bc(local_10,param_1); + if (local_10[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((undefined1 *)plVar3[5] < (undefined1 *)plVar3[6]) { + *(undefined1 *)plVar3[5] = param_2; + plVar3[5] = plVar3[5] + 1; + } + else { + /* try { // try from 003f1654 to 004f1657 has its CatchHandler @ 003f166c */ + iVar2 = (**(code **)(*plVar3 + 0x68))(plVar3,param_2); + if (iVar2 == -1) { + /* catch() { ... } // from try @ 003f1654 with catch @ 003f166c */ + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f167c to 004f167f has its CatchHandler @ 003f1544 */ + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + /* catch() { ... } // from try @ 003f17bc with catch @ 003f1680 */ + } + } + } + plVar3 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar3 = *(long **)((long)plVar3 + lVar4 + 0xe8), plVar3 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar3 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f1724 (264 bytes) name=FUN_003f1724 + +long * FUN_003f1724(long *param_1,undefined8 param_2,long param_3) + +{ + char cVar1; + int iVar2; + long lVar3; + long *plVar4; + char local_10 [8]; + long *local_8; + + FUN_003f12bc(local_10,param_1); + if ((local_10[0] != '\0') && + (plVar4 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar3 = (**(code **)(*plVar4 + 0x60))(plVar4,param_2,param_3), param_3 != lVar3)) { + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f1794 to 004f1797 has its CatchHandler @ 003f17ac */ + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 1); + } + plVar4 = local_8; + /* catch() { ... } // from try @ 003f1794 with catch @ 003f17ac */ + lVar3 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f17bc to 004f17bf has its CatchHandler @ 003f1680 */ + /* catch() { ... } // from try @ 003f1844 with catch @ 003f17c0 */ + if (((((*(uint *)((long)local_8 + lVar3 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar4 = *(long **)((long)plVar4 + lVar3 + 0xe8), plVar4 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar4 + 0x30))(), iVar2 == -1)) { + /* try { // try from 003f17fc to 004f17ff has its CatchHandler @ 003f1834 */ + lVar3 = (long)local_8 + *(long *)(*local_8 + -0x18); + /* try { // try from 003f1810 to 004f1813 has its CatchHandler @ 003f1848 */ + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 1); + /* try { // try from 003f1818 to 004f181b has its CatchHandler @ 003f1834 */ + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f18cc (8 bytes) name=FUN_003f18cc + +undefined1 FUN_003f18cc(undefined1 *param_1) + +{ + /* catch() { ... } // from try @ 003f1898 with catch @ 003f18d0 + catch() { ... } // from try @ 003f18b4 with catch @ 003f18d0 */ + return *param_1; +} + + +================================================================== + +### FUNC 003f18d4 (124 bytes) name=FUN_003f18d4 + +void FUN_003f18d4(long *param_1) + +{ + undefined1 uVar1; + long *plVar2; + + /* try { // try from 003f18e0 to 004f18e3 has its CatchHandler @ 003f185c */ + /* catch() { ... } // from try @ 003f18ac with catch @ 003f18e4 */ + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + /* catch() { ... } // from try @ 003f198c with catch @ 003f18f8 */ + if ((char)plVar2[7] != '\0') { + FUN_003f1564(param_1,*(undefined1 *)((long)plVar2 + 0x43)); + FUN_003f0db8(); + return; + } + FUN_003d14e0(plVar2); + uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2,10); + FUN_003f1564(param_1,uVar1); + FUN_003f0db8(); + return; +} + + +================================================================== + +### FUNC 003f1950 (8 bytes) name=FUN_003f1950 + +void FUN_003f1950(undefined8 param_1) + +{ + FUN_003f1564(param_1,0); + return; +} + + +================================================================== + +### FUNC 003f1958 (4 bytes) name=thunk_FUN_003f0db8 + +long * thunk_FUN_003f0db8(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((plVar3 != (long *)0x0) && (iVar2 = (**(code **)(*plVar3 + 0x30))(), iVar2 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + } + return param_1; +} + + +================================================================== + +### FUNC 003f195c (148 bytes) name=FUN_003f195c + +long * FUN_003f195c(long *param_1,undefined1 param_2) + +{ + long lVar1; + long *plVar2; + + /* try { // try from 003f1964 to 004f1967 has its CatchHandler @ 003f197c */ + lVar1 = *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f1964 with catch @ 003f197c */ + if (*(char *)((long)param_1 + lVar1 + 0xe1) != '\0') { + *(undefined1 *)((long)param_1 + lVar1 + 0xe0) = param_2; + /* try { // try from 003f198c to 004f198f has its CatchHandler @ 003f18f8 */ + /* catch() { ... } // from try @ 003f1ad0 with catch @ 003f1990 */ + return param_1; + } + plVar2 = *(long **)((long)param_1 + lVar1 + 0xf0); + if (plVar2 != (long *)0x0) { + if ((char)plVar2[7] == '\0') { + FUN_003d14e0(plVar2); + (**(code **)(*plVar2 + 0x30))(plVar2,0x20); + } + *(undefined1 *)((long)param_1 + lVar1 + 0xe0) = param_2; + *(undefined1 *)((long)param_1 + lVar1 + 0xe1) = 1; + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003f19f0 (28 bytes) name=FUN_003f19f0 + +void FUN_003f19f0(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) | param_2; + return; +} + + +================================================================== + +### FUNC 003f1a0c (28 bytes) name=FUN_003f1a0c + +void FUN_003f1a0c(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & (param_2 ^ 0xffffffff); + return; +} + + +================================================================== + +### FUNC 003f1a28 (120 bytes) name=FUN_003f1a28 + +void FUN_003f1a28(long *param_1,int param_2) + +{ + long lVar1; + uint uVar2; + + lVar1 = *(long *)(*param_1 + -0x18); + if (param_2 == 8) { + *(uint *)((long)param_1 + lVar1 + 0x18) = + *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 0x40; + return; + } + if (param_2 != 10) { + uVar2 = 8; + if (param_2 != 0x10) { + uVar2 = 0; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = + uVar2 | *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5; + return; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 2 + ; + return; +} + + +================================================================== + +### FUNC 003f1aa0 (24 bytes) name=FUN_003f1aa0 + +void FUN_003f1aa0(long *param_1,int param_2) + +{ + /* try { // try from 003f1aa8 to 004f1aab has its CatchHandler @ 003f1ac0 */ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 8) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003f1ab8 (24 bytes) name=FUN_003f1ab8 + +void FUN_003f1ab8(long *param_1,int param_2) + +{ + /* catch() { ... } // from try @ 003f1aa8 with catch @ 003f1ac0 */ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003f1ad0 (936 bytes) name=FUN_003f1ad0 + +long * FUN_003f1ad0(long *param_1,undefined8 param_2,long param_3) + +{ + bool bVar1; + char cVar2; + undefined1 uVar3; + int iVar4; + long lVar5; + long *plVar6; + long lVar7; + long lVar8; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f1ad0 to 004f1ad3 has its CatchHandler @ 003f1990 */ + /* catch() { ... } // from try @ 003f1c10 with catch @ 003f1ad4 */ + FUN_003f12bc(local_10,param_1); + if (local_10[0] == '\0') goto LAB_003f1b50; + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + lVar8 = *(long *)(lVar5 + 0x10); + if (param_3 < lVar8) { + bVar1 = (*(uint *)(lVar5 + 0x18) & 0xb0) != 0x20; + if (bVar1) { + lVar7 = lVar8 - param_3; + if (*(char *)(lVar5 + 0xe1) == '\0') { + plVar6 = *(long **)(lVar5 + 0xf0); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar6[7] == '\0') { + FUN_003d14e0(plVar6); + uVar3 = (**(code **)(*plVar6 + 0x30))(plVar6,0x20); + } + else { + uVar3 = *(undefined1 *)((long)plVar6 + 0x59); + } + *(undefined1 *)(lVar5 + 0xe0) = uVar3; + /* catch() { ... } // from try @ 003f1d3c with catch @ 003f1dd8 + catch() { ... } // from try @ 003f1da0 with catch @ 003f1dd8 */ + *(undefined1 *)(lVar5 + 0xe1) = 1; + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + } + else { + uVar3 = *(undefined1 *)(lVar5 + 0xe0); + } + if (0 < lVar7) { + while( true ) { + plVar6 = *(long **)(lVar5 + 0xe8); + if ((undefined1 *)plVar6[5] < (undefined1 *)plVar6[6]) { + *(undefined1 *)plVar6[5] = uVar3; + plVar6[5] = plVar6[5] + 1; + } + else { + iVar4 = (**(code **)(*plVar6 + 0x68))(plVar6,uVar3); + if (iVar4 == -1) { + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar5,*(uint *)(lVar5 + 0x20) | 1); + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + goto LAB_003f1b44; + } + } + lVar7 = lVar7 + -1; + if (lVar7 == 0) break; + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + } + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + } + } +LAB_003f1b44: + if (*(int *)(lVar5 + 0x20) == 0) { + lVar5 = (**(code **)(**(long **)(lVar5 + 0xe8) + 0x60)) + (*(long **)(lVar5 + 0xe8),param_2,param_3); + /* try { // try from 003f1c60 to 004f1c63 has its CatchHandler @ 003f1c78 */ + if (param_3 != lVar5) { + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f1c60 with catch @ 003f1c78 */ + FUN_003d2254(lVar5,*(uint *)(lVar5 + 0x20) | 1); + } + if (bVar1) goto LAB_003f1c30; + /* try { // try from 003f1c88 to 004f1c8b has its CatchHandler @ 003f1c14 */ + /* catch() { ... } // from try @ 003f1e04 with catch @ 003f1c8c */ + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + if (*(int *)(lVar5 + 0x20) == 0) { + /* try { // try from 003f1d3c to 004f1d3f has its CatchHandler @ 003f1dd8 */ + lVar8 = lVar8 - param_3; + if (*(char *)(lVar5 + 0xe1) == '\0') { + plVar6 = *(long **)(lVar5 + 0xf0); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar6[7] == '\0') { + FUN_003d14e0(plVar6); + /* try { // try from 003f1e60 to 004f1e63 has its CatchHandler @ 003f1e98 */ + uVar3 = (**(code **)(*plVar6 + 0x30))(plVar6,0x20); + } + else { + /* try { // try from 003f1e04 to 004f1e07 has its CatchHandler @ 003f1c8c */ + uVar3 = *(undefined1 *)((long)plVar6 + 0x59); + } + /* catch() { ... } // from try @ 003f1da8 with catch @ 003f1e08 */ + *(undefined1 *)(lVar5 + 0xe0) = uVar3; + /* catch() { ... } // from try @ 003f1d58 with catch @ 003f1e10 */ + *(undefined1 *)(lVar5 + 0xe1) = 1; + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f1ea8 with catch @ 003f1e24 */ + } + else { + uVar3 = *(undefined1 *)(lVar5 + 0xe0); + } + if (0 < lVar8) { + while( true ) { + plVar6 = *(long **)(lVar5 + 0xe8); + if ((undefined1 *)plVar6[5] < (undefined1 *)plVar6[6]) { + *(undefined1 *)plVar6[5] = uVar3; + plVar6[5] = plVar6[5] + 1; + } + else { + /* try { // try from 003f1da0 to 004f1da3 has its CatchHandler @ 003f1dd8 */ + iVar4 = (**(code **)(*plVar6 + 0x68))(plVar6,uVar3); + /* try { // try from 003f1da8 to 004f1dbf has its CatchHandler @ 003f1e08 */ + if (iVar4 == -1) { + lVar7 = *param_1; + goto LAB_003f1c18; + } + } + lVar8 = lVar8 + -1; + lVar7 = *param_1; + if (lVar8 == 0) break; + lVar5 = (long)param_1 + *(long *)(lVar7 + -0x18); + } + goto LAB_003f1c34; + } + } + } + } + else { + /* catch() { ... } // from try @ 003f1be8 with catch @ 003f1c00 */ + lVar5 = (**(code **)(**(long **)(lVar5 + 0xe8) + 0x60)) + (*(long **)(lVar5 + 0xe8),param_2,param_3); + /* try { // try from 003f1c10 to 004f1c13 has its CatchHandler @ 003f1ad4 */ + lVar7 = *param_1; + /* catch() { ... } // from try @ 003f1c88 with catch @ 003f1c14 */ + if (param_3 != lVar5) { +LAB_003f1c18: + lVar5 = (long)param_1 + *(long *)(lVar7 + -0x18); + FUN_003d2254(lVar5,*(uint *)(lVar5 + 0x20) | 1); +LAB_003f1c30: + lVar7 = *param_1; + } +LAB_003f1c34: + lVar5 = (long)param_1 + *(long *)(lVar7 + -0x18); + } + *(undefined8 *)(lVar5 + 0x10) = 0; +LAB_003f1b50: + plVar6 = local_8; + lVar5 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar5 + 0x18) >> 0xd & 1) != 0) && + (cVar2 = std::uncaught_exception(), cVar2 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar5 + 0xe8), plVar6 != (long *)0x0)) && + (iVar4 = (**(code **)(*plVar6 + 0x30))(), iVar4 == -1)) { + lVar5 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar5,*(uint *)(lVar5 + 0x20) | 1); + /* try { // try from 003f1be8 to 004f1beb has its CatchHandler @ 003f1c00 */ + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f1f18 (36 bytes) name=FUN_003f1f18 + +void FUN_003f1f18(undefined8 param_1,undefined1 param_2) + +{ + undefined1 local_1; + + /* try { // try from 003f1f18 to 004f1f1b has its CatchHandler @ 003f1f34 */ + local_1 = param_2; + FUN_003f1ad0(param_1,&local_1,1); + /* catch() { ... } // from try @ 003f1efc with catch @ 003f1f34 + catch() { ... } // from try @ 003f1f18 with catch @ 003f1f34 */ + return; +} + + +================================================================== + +### FUNC 003f1f3c (36 bytes) name=FUN_003f1f3c + +void FUN_003f1f3c(undefined8 param_1,undefined1 param_2) + +{ + undefined1 local_1; + + /* try { // try from 003f1f44 to 004f1f47 has its CatchHandler @ 003f1ec0 */ + /* catch() { ... } // from try @ 003f1f10 with catch @ 003f1f48 */ + local_1 = param_2; + FUN_003f1ad0(param_1,&local_1,1); + /* catch() { ... } // from try @ 003f2094 with catch @ 003f1f5c */ + return; +} + + +================================================================== + +### FUNC 003f1f60 (36 bytes) name=FUN_003f1f60 + +void FUN_003f1f60(undefined8 param_1,undefined1 param_2) + +{ + undefined1 local_1; + + local_1 = param_2; + FUN_003f1ad0(param_1,&local_1,1); + return; +} + + +================================================================== + +### FUNC 003f1f84 (108 bytes) name=FUN_003f1f84 + +long * FUN_003f1f84(long *param_1,char *param_2) + +{ + long lVar1; + size_t sVar2; + + if (param_2 != (char *)0x0) { + sVar2 = strlen(param_2); + FUN_003f1ad0(param_1,param_2,sVar2); + return param_1; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return param_1; +} + + +================================================================== + +### FUNC 003f1ff0 (108 bytes) name=FUN_003f1ff0 + +long * FUN_003f1ff0(long *param_1,char *param_2) + +{ + long lVar1; + size_t sVar2; + + if (param_2 != (char *)0x0) { + sVar2 = strlen(param_2); + FUN_003f1ad0(param_1,param_2,sVar2); + return param_1; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return param_1; +} + + +================================================================== + +### FUNC 003f205c (108 bytes) name=FUN_003f205c + +long * FUN_003f205c(long *param_1,char *param_2) + +{ + long lVar1; + size_t sVar2; + + /* try { // try from 003f206c to 004f206f has its CatchHandler @ 003f2084 */ + if (param_2 != (char *)0x0) { + sVar2 = strlen(param_2); + /* catch() { ... } // from try @ 003f206c with catch @ 003f2084 */ + FUN_003f1ad0(param_1,param_2,sVar2); + /* try { // try from 003f2094 to 004f2097 has its CatchHandler @ 003f1f5c */ + /* catch() { ... } // from try @ 003f21d0 with catch @ 003f2098 */ + return param_1; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return param_1; +} + + +================================================================== + +### FUNC 003f20c8 (400 bytes) name=FUN_003f20c8 + +long * FUN_003f20c8(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + FUN_003f12bc(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x18))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f21a8 to 004f21ab has its CatchHandler @ 003f21c0 */ + /* catch() { ... } // from try @ 003f21a8 with catch @ 003f21c0 */ + /* try { // try from 003f21d0 to 004f21d3 has its CatchHandler @ 003f2098 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + /* catch() { ... } // from try @ 003f2310 with catch @ 003f21d4 */ + return param_1; +} + + +================================================================== + +### FUNC 003f22f8 (4 bytes) name=thunk_FUN_003f20c8 + +long * thunk_FUN_003f20c8(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x18))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f22fc (68 bytes) name=FUN_003f22fc + +void FUN_003f22fc(long *param_1,short param_2) + +{ + uint uVar1; + + /* catch() { ... } // from try @ 003f22e8 with catch @ 003f2300 */ + /* try { // try from 003f2310 to 004f2313 has its CatchHandler @ 003f21d4 */ + /* catch() { ... } // from try @ 003f239c with catch @ 003f2314 */ + uVar1 = *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & 0x4a; + if ((uVar1 != 8) && (uVar1 != 0x40)) { + FUN_003f20c8(param_1,(long)param_2); + return; + } + FUN_003f20c8(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f2340 (64 bytes) name=FUN_003f2340 + +void FUN_003f2340(long *param_1,int param_2) + +{ + uint uVar1; + + /* try { // try from 003f2350 to 004f2353 has its CatchHandler @ 003f238c */ + uVar1 = *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & 0x4a; + /* try { // try from 003f2368 to 004f236b has its CatchHandler @ 003f23a0 */ + if ((uVar1 != 8) && (uVar1 != 0x40)) { + /* try { // try from 003f2370 to 004f2373 has its CatchHandler @ 003f238c */ + FUN_003f20c8(param_1,(long)param_2); + return; + } + FUN_003f20c8(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f2380 (400 bytes) name=FUN_003f2380 + +long * FUN_003f2380(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + /* catch() { ... } // from try @ 003f2350 with catch @ 003f238c + catch() { ... } // from try @ 003f2370 with catch @ 003f238c */ + /* try { // try from 003f239c to 004f239f has its CatchHandler @ 003f2314 */ + /* catch() { ... } // from try @ 003f2368 with catch @ 003f23a0 */ + FUN_003f12bc(local_10,param_1); + /* catch() { ... } // from try @ 003f243c with catch @ 003f23b4 */ + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + /* try { // try from 003f23f0 to 004f23f3 has its CatchHandler @ 003f242c */ + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + /* try { // try from 003f2408 to 004f240b has its CatchHandler @ 003f2440 */ + /* try { // try from 003f2410 to 004f2413 has its CatchHandler @ 003f242c */ + (**(code **)(*plVar5 + 0x20))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + /* catch() { ... } // from try @ 003f23f0 with catch @ 003f242c + catch() { ... } // from try @ 003f2410 with catch @ 003f242c */ + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f243c to 004f243f has its CatchHandler @ 003f23b4 */ + /* catch() { ... } // from try @ 003f2408 with catch @ 003f2440 */ + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + /* catch() { ... } // from try @ 003f24c0 with catch @ 003f2454 */ + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + /* catch() { ... } // from try @ 003f2498 with catch @ 003f24b0 */ + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + /* try { // try from 003f24c0 to 004f24c3 has its CatchHandler @ 003f2454 */ + /* catch() { ... } // from try @ 003f25fc with catch @ 003f24c4 */ + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + /* try { // try from 003f2498 to 004f249b has its CatchHandler @ 003f24b0 */ + return param_1; +} + + +================================================================== + +### FUNC 003f25b0 (4 bytes) name=thunk_FUN_003f2380 + +long * thunk_FUN_003f2380(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x20))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f25b4 (8 bytes) name=FUN_003f25b4 + +void FUN_003f25b4(undefined8 param_1,undefined2 param_2) + +{ + FUN_003f2380(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f25bc (8 bytes) name=FUN_003f25bc + +void FUN_003f25bc(undefined8 param_1,undefined4 param_2) + +{ + FUN_003f2380(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f25c4 (400 bytes) name=FUN_003f25c4 + +long * FUN_003f25c4(long *param_1,undefined1 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f25d4 to 004f25d7 has its CatchHandler @ 003f25ec */ + /* catch() { ... } // from try @ 003f25d4 with catch @ 003f25ec */ + FUN_003f12bc(local_10,param_1); + if (local_10[0] != '\0') { + /* try { // try from 003f25fc to 004f25ff has its CatchHandler @ 003f24c4 */ + /* catch() { ... } // from try @ 003f2740 with catch @ 003f2600 */ + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + /* catch() { ... } // from try @ 003f2718 with catch @ 003f2730 */ + /* try { // try from 003f2740 to 004f2743 has its CatchHandler @ 003f2600 */ + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + /* catch() { ... } // from try @ 003f287c with catch @ 003f2744 */ + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x10))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + /* try { // try from 003f2718 to 004f271b has its CatchHandler @ 003f2730 */ + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f27f4 (4 bytes) name=thunk_FUN_003f25c4 + +long * thunk_FUN_003f25c4(long *param_1,undefined1 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x10))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f27f8 (400 bytes) name=FUN_003f27f8 + +long * FUN_003f27f8(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + FUN_003f12bc(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + /* try { // try from 003f2854 to 004f2857 has its CatchHandler @ 003f286c */ + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + /* catch() { ... } // from try @ 003f2854 with catch @ 003f286c */ + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + /* try { // try from 003f287c to 004f287f has its CatchHandler @ 003f2744 */ + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + /* catch() { ... } // from try @ 003f2ad8 with catch @ 003f2880 */ + (**(code **)(*plVar5 + 0x28))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f2a28 (4 bytes) name=thunk_FUN_003f27f8 + +long * thunk_FUN_003f27f8(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x28))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f2a2c (400 bytes) name=FUN_003f2a2c + +long * FUN_003f2a2c(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + FUN_003f12bc(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + /* try { // try from 003f2ba8 to 004f2bab has its CatchHandler @ 003f2cc4 */ + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x30))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + /* try { // try from 003f2ad8 to 004f2af3 has its CatchHandler @ 003f2880 */ + if ((extraout_w1 & 0xff) != 0) { + /* catch() { ... } // from try @ 003f29c4 with catch @ 003f2ae0 */ + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f2c88 with catch @ 003f2af4 */ + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f2c5c (4 bytes) name=thunk_FUN_003f2a2c + +long * thunk_FUN_003f2a2c(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x30))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f2c60 (412 bytes) name=FUN_003f2c60 + +long * FUN_003f2c60(undefined8 param_1,long *param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f2c88 to 004f2cd7 has its CatchHandler @ 003f2af4 */ + FUN_003f12bc(local_10,param_2); + if (local_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + /* catch() { ... } // from try @ 003f2ba8 with catch @ 003f2cc4 */ + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + /* catch() { ... } // from try @ 003f2e44 with catch @ 003f2ce0 + catch() { ... } // from try @ 003f2ec8 with catch @ 003f2ce0 */ + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x38))(param_1,plVar5,lVar6,lVar6 == 0,lVar4,uVar2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f2d5c to 004f2d5f has its CatchHandler @ 003f2ecc */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + /* try { // try from 003f2d78 to 004f2e0b has its CatchHandler @ 003f2e9c */ + return param_2; +} + + +================================================================== + +### FUNC 003f2e9c (4 bytes) name=thunk_FUN_003f2c60 + +long * thunk_FUN_003f2c60(undefined8 param_1,long *param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_2); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x38))(param_1,plVar5,lVar6,lVar6 == 0,lVar4,uVar2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + return param_2; +} + + +================================================================== + +### FUNC 003f2ea0 (8 bytes) name=FUN_003f2ea0 + +void FUN_003f2ea0(float param_1) + +{ + FUN_003f2c60((double)param_1); + return; +} + + +================================================================== + +### FUNC 003f2ea8 (420 bytes) name=FUN_003f2ea8 + +long * FUN_003f2ea8(undefined8 param_1,long *param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f2ec8 to 004f2ecb has its CatchHandler @ 003f2ce0 */ + /* catch() { ... } // from try @ 003f2d5c with catch @ 003f2ecc + catch() { ... } // from try @ 003f2e38 with catch @ 003f2ecc */ + FUN_003f12bc(local_10,param_2); + if (local_10[0] != '\0') { + /* catch() { ... } // from try @ 003f2fe8 with catch @ 003f2ef0 + catch() { ... } // from try @ 003f3034 with catch @ 003f2ef0 */ + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + /* try { // try from 003f3034 to 004f3037 has its CatchHandler @ 003f2ef0 */ + /* catch() { ... } // from try @ 003f2fc0 with catch @ 003f3038 */ + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x40))(param_1,plVar5,lVar6,lVar6 == 0,lVar4,uVar2); + if ((extraout_w1 & 0xff) != 0) { + /* try { // try from 003f2f64 to 004f2f67 has its CatchHandler @ 003f3010 */ + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + /* try { // try from 003f2fe8 to 004f2ffb has its CatchHandler @ 003f2ef0 */ + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + /* catch() { ... } // from try @ 003f2f64 with catch @ 003f3010 + catch() { ... } // from try @ 003f2fc8 with catch @ 003f3010 */ + return param_2; + } + /* try { // try from 003f2fc0 to 004f2fc3 has its CatchHandler @ 003f3038 */ + /* try { // try from 003f2fc8 to 004f2fdf has its CatchHandler @ 003f3010 */ + return param_2; +} + + +================================================================== + +### FUNC 003f30ec (4 bytes) name=thunk_FUN_003f2ea8 + +long * thunk_FUN_003f2ea8(undefined8 param_1,long *param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_2); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x40))(param_1,plVar5,lVar6,lVar6 == 0,lVar4,uVar2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + return param_2; +} + + +================================================================== + +### FUNC 003f30f0 (400 bytes) name=FUN_003f30f0 + +long * FUN_003f30f0(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f30f8 to 004f30fb has its CatchHandler @ 003f31a4 */ + FUN_003f12bc(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + /* try { // try from 003f3154 to 004f3157 has its CatchHandler @ 003f31cc */ + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + /* try { // try from 003f315c to 004f3173 has its CatchHandler @ 003f31a4 */ + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + /* try { // try from 003f317c to 004f318f has its CatchHandler @ 003f3080 */ + (**(code **)(*plVar5 + 0x48))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + /* catch() { ... } // from try @ 003f30f8 with catch @ 003f31a4 + catch() { ... } // from try @ 003f315c with catch @ 003f31a4 */ + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f31c8 to 004f31cb has its CatchHandler @ 003f3080 */ + /* catch() { ... } // from try @ 003f3154 with catch @ 003f31cc */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + /* try { // try from 003f324c to 004f324f has its CatchHandler @ 003f3210 */ + return param_1; + } + /* catch() { ... } // from try @ 003f324c with catch @ 003f3210 + catch() { ... } // from try @ 003f3390 with catch @ 003f3210 + catch() { ... } // from try @ 003f34a4 with catch @ 003f3210 */ + return param_1; +} + + +================================================================== + +### FUNC 003f3320 (4 bytes) name=thunk_FUN_003f30f0 + +long * thunk_FUN_003f30f0(long *param_1,undefined8 param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + uint extraout_w1; + long *plVar5; + long lVar6; + long *plVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f12bc(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar5 = *(long **)(lVar4 + 0xf8); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar6 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe1) == '\0') { + plVar7 = *(long **)(lVar4 + 0xf0); + if (plVar7 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + if ((char)plVar7[7] == '\0') { + FUN_003d14e0(plVar7); + uVar2 = (**(code **)(*plVar7 + 0x30))(plVar7,0x20); + } + else { + uVar2 = *(undefined1 *)((long)plVar7 + 0x59); + } + *(undefined1 *)(lVar4 + 0xe0) = uVar2; + *(undefined1 *)(lVar4 + 0xe1) = 1; + } + else { + uVar2 = *(undefined1 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar5 + 0x48))(plVar5,lVar6,lVar6 == 0,lVar4,uVar2,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar5 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar5 = *(long **)((long)plVar5 + lVar4 + 0xe8), plVar5 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar5 + 0x30))(), iVar3 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2254(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f3324 (40 bytes) name=FUN_003f3324 + +void FUN_003f3324(long *param_1,long *param_2,undefined8 param_3) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[1]; + FUN_003d3008((long)param_1 + lVar1,param_3); + return; +} + + +================================================================== + +### FUNC 003f334c (116 bytes) name=FUN_003f334c + +void FUN_003f334c(undefined8 *param_1,undefined8 param_2) + +{ + FUN_003d347c(param_1 + 1); + /* try { // try from 003f3370 to 004f3387 has its CatchHandler @ 003f34a8 */ + param_1[0x1c] = 0; + *(undefined4 *)(param_1 + 0x1d) = 0; + *(undefined1 *)((long)param_1 + 0xec) = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + /* try { // try from 003f3390 to 004f33a3 has its CatchHandler @ 003f3210 */ + param_1[0x20] = 0; + param_1[0x21] = 0; + *param_1 = &PTR_FUN_004f81e8; + param_1[1] = &PTR_FUN_004f8210; + FUN_003d3008(param_1 + 1,param_2); + return; +} + + +================================================================== + +### FUNC 003f33e4 (24 bytes) name=FUN_003f33e4 + +void FUN_003f33e4(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[1]; + return; +} + + +================================================================== + +### FUNC 003f33fc (20 bytes) name=FUN_003f33fc + +void FUN_003f33fc(undefined8 param_1,code *param_2) + +{ + (*param_2)(); + return; +} + + +================================================================== + +### FUNC 003f3410 (48 bytes) name=FUN_003f3410 + +long * FUN_003f3410(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + return param_1; +} + + +================================================================== + +### FUNC 003f3440 (48 bytes) name=FUN_003f3440 + +long * FUN_003f3440(long *param_1,code *param_2) + +{ + (*param_2)((long)param_1 + *(long *)(*param_1 + -0x18)); + /* catch() { ... } // from try @ 003f3320 with catch @ 003f3464 + catch() { ... } // from try @ 003f33dc with catch @ 003f3464 */ + return param_1; +} + + +================================================================== + +### FUNC 003f3470 (108 bytes) name=FUN_003f3470 + +void FUN_003f3470(long *param_1,undefined8 param_2,long param_3) + +{ + long lVar1; + long *plVar2; + + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + lVar1 = (**(code **)(*plVar2 + 0x60))(plVar2); + /* try { // try from 003f34a4 to 004f34a7 has its CatchHandler @ 003f3210 */ + /* catch() { ... } // from try @ 003f3370 with catch @ 003f34a8 */ + if (param_3 != lVar1) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f34fc with catch @ 003f34c0 + catch() { ... } // from try @ 003f363c with catch @ 003f34c0 + catch() { ... } // from try @ 003f3754 with catch @ 003f34c0 */ + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return; + } + return; +} + + +================================================================== + +### FUNC 003f34dc (100 bytes) name=FUN_003f34dc + +long * FUN_003f34dc(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + /* try { // try from 003f34fc to 004f34ff has its CatchHandler @ 003f34c0 */ + if ((plVar3 != (long *)0x0) && (iVar2 = (**(code **)(*plVar3 + 0x30))(), iVar2 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 1); + } + return param_1; +} + + +================================================================== + +### FUNC 003f35c4 (196 bytes) name=FUN_003f35c4 + +undefined1 [16] FUN_003f35c4(long *param_1) + +{ + undefined8 uVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + long *plVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + undefined1 auVar11 [16]; + + /* try { // try from 003f35cc to 004f3617 has its CatchHandler @ 003f3714 */ + if ((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0) { + plVar5 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + auVar11 = (**(code **)(*plVar5 + 0x20))(plVar5,0,1,0x10); + uVar2 = auVar11._8_8_; + uVar1 = auVar11._0_8_; + uVar4 = uVar2 >> 8 & 0xff; + uVar6 = uVar2 >> 0x10 & 0xff; + uVar3 = uVar2 & 0xff; + uVar7 = uVar2 >> 0x18 & 0xff; + uVar8 = uVar2 >> 0x20 & 0xff; + uVar9 = uVar2 >> 0x28 & 0xff; + uVar10 = uVar2 >> 0x30 & 0xff; + uVar2 = uVar2 >> 0x38; + } + else { + uVar2 = 0; + uVar10 = 0; + uVar9 = 0; + uVar8 = 0; + uVar7 = 0; + uVar6 = 0; + uVar4 = 0; + uVar3 = 0; + uVar1 = 0xffffffffffffffff; + } + /* try { // try from 003f361c to 004f3633 has its CatchHandler @ 003f3758 */ + auVar11._8_8_ = + uVar3 | uVar4 << 8 | uVar6 << 0x10 | uVar7 << 0x18 | uVar8 << 0x20 | uVar9 << 0x28 | + uVar10 << 0x30 | uVar2 << 0x38; + auVar11._0_8_ = uVar1; + /* try { // try from 003f363c to 004f364f has its CatchHandler @ 003f34c0 */ + return auVar11; +} + + +================================================================== + +### FUNC 003f370c (136 bytes) name=FUN_003f370c + +long * FUN_003f370c(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + long *plVar2; + + /* catch() { ... } // from try @ 003f35cc with catch @ 003f3714 + catch() { ... } // from try @ 003f3688 with catch @ 003f3714 */ + /* try { // try from 003f3754 to 004f3757 has its CatchHandler @ 003f34c0 */ + /* catch() { ... } // from try @ 003f361c with catch @ 003f3758 */ + if (((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x28))(plVar2,param_2,param_3,0x10), lVar1 == -1)) { + /* catch() { ... } // from try @ 003f3878 with catch @ 003f3770 + catch() { ... } // from try @ 003f38c4 with catch @ 003f3770 */ + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f3818 (136 bytes) name=FUN_003f3818 + +long * FUN_003f3818(long *param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + long *plVar2; + + /* try { // try from 003f3858 to 004f386f has its CatchHandler @ 003f38a0 */ + if (((*(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x20) & 5) == 0) && + (plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar1 = (**(code **)(*plVar2 + 0x20))(plVar2,param_2,param_3,0x10), lVar1 == -1)) { + /* try { // try from 003f3878 to 004f388b has its CatchHandler @ 003f3770 */ + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return param_1; + } + /* try { // try from 003f3850 to 004f3853 has its CatchHandler @ 003f38c8 */ + return param_1; +} + + +================================================================== + +### FUNC 003f3924 (40 bytes) name=FUN_003f3924 + +void FUN_003f3924(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[1]; + FUN_003d3008((long)param_1 + lVar1,0); + return; +} + + +================================================================== + +### FUNC 003f394c (112 bytes) name=FUN_003f394c + +void FUN_003f394c(undefined8 *param_1) + +{ + FUN_003d347c(param_1 + 1); + param_1[0x1c] = 0; + *(undefined4 *)(param_1 + 0x1d) = 0; + *(undefined1 *)((long)param_1 + 0xec) = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + *param_1 = &PTR_FUN_004f81e8; + param_1[1] = &PTR_FUN_004f8210; + FUN_003d3008(param_1 + 1,0); + return; +} + + +================================================================== + +### FUNC 003f39e0 (124 bytes) name=FUN_003f39e0 + +void FUN_003f39e0(undefined1 *param_1,long *param_2) + +{ + long lVar1; + uint uVar2; + + lVar1 = *param_2; + *(long **)(param_1 + 8) = param_2; + lVar1 = *(long *)(lVar1 + -0x18); + *param_1 = 0; + lVar1 = (long)param_2 + lVar1; + if (*(long *)(lVar1 + 0xd8) != 0) { + uVar2 = *(uint *)(lVar1 + 0x20); + if (uVar2 != 0) goto LAB_003f3a48; + FUN_003f34dc(); + lVar1 = (long)param_2 + *(long *)(*param_2 + -0x18); + } + uVar2 = *(uint *)(lVar1 + 0x20); + if (uVar2 == 0) { + *param_1 = 1; + return; + } +LAB_003f3a48: + FUN_003d2c00(lVar1,uVar2 | 4); + return; +} + + +================================================================== + +### FUNC 003f3a5c (132 bytes) name=FUN_003f3a5c + +void FUN_003f3a5c(long param_1) + +{ + char cVar1; + int iVar2; + long lVar3; + long *plVar4; + + plVar4 = *(long **)(param_1 + 8); + lVar3 = *(long *)(*plVar4 + -0x18); + if (((((*(uint *)((long)plVar4 + lVar3 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar4 = *(long **)((long)plVar4 + lVar3 + 0xe8), plVar4 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar4 + 0x30))(), iVar2 == -1)) { + lVar3 = (long)*(long **)(param_1 + 8) + *(long *)(**(long **)(param_1 + 8) + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return; + } + return; +} + + +================================================================== + +### FUNC 003f3ae0 (264 bytes) name=FUN_003f3ae0 + +long * FUN_003f3ae0(long *param_1,long param_2) + +{ + char cVar1; + int iVar2; + long lVar3; + long *plVar4; + uint uVar5; + undefined1 uStack_11; + char local_10 [8]; + long *local_8; + + FUN_003f39e0(local_10,param_1); + if ((param_2 == 0) || (local_10[0] == '\0')) { + if (param_2 != 0) goto LAB_003f3b38; + uVar5 = 1; + } + else { + lVar3 = FUN_003fd5a8(param_2,*(undefined8 *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8) + ,&uStack_11); + uVar5 = 4; + if (lVar3 != 0) goto LAB_003f3b38; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,uVar5 | *(uint *)(lVar3 + 0x20)); +LAB_003f3b38: + /* catch() { ... } // from try @ 003f3c1c with catch @ 003f3b38 */ + plVar4 = local_8; + lVar3 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar3 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar4 = *(long **)((long)plVar4 + lVar3 + 0xe8), plVar4 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar4 + 0x30))(), iVar2 == -1)) { + /* try { // try from 003f3bb8 to 004f3bbb has its CatchHandler @ 003f3bec */ + /* try { // try from 003f3bc0 to 004f3bd7 has its CatchHandler @ 003f3c20 */ + lVar3 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f3c88 (288 bytes) name=FUN_003f3c88 + +long * FUN_003f3c88(long *param_1,int param_2) + +{ + char cVar1; + int iVar2; + long *plVar3; + long lVar4; + int *piVar5; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f3ca8 to 004f3cab has its CatchHandler @ 003f3cdc */ + FUN_003f39e0(local_10,param_1); + /* try { // try from 003f3cb0 to 004f3cc7 has its CatchHandler @ 003f3d10 */ + if (local_10[0] != '\0') { + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + piVar5 = (int *)plVar3[5]; + if (piVar5 < (int *)plVar3[6]) { + *piVar5 = param_2; + /* catch() { ... } // from try @ 003f3ca8 with catch @ 003f3cdc */ + plVar3[5] = (long)(piVar5 + 1); + } + else { + /* try { // try from 003f3d98 to 004f3d9b has its CatchHandler @ 003f3dcc */ + param_2 = (**(code **)(*plVar3 + 0x68))(plVar3,param_2); + /* try { // try from 003f3da0 to 004f3db7 has its CatchHandler @ 003f3e00 */ + } + if (param_2 == -1) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar3 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f3d0c to 004f3d0f has its CatchHandler @ 003f3c28 */ + /* catch() { ... } // from try @ 003f3cb0 with catch @ 003f3d10 */ + /* catch() { ... } // from try @ 003f3dfc with catch @ 003f3d18 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar3 = *(long **)((long)plVar3 + lVar4 + 0xe8), plVar3 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar3 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f3e48 (264 bytes) name=FUN_003f3e48 + +long * FUN_003f3e48(long *param_1,undefined8 param_2,long param_3) + +{ + char cVar1; + int iVar2; + long lVar3; + long *plVar4; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f3e54 to 004f3e57 has its CatchHandler @ 003f3e6c */ + /* catch() { ... } // from try @ 003f3e54 with catch @ 003f3e6c */ + FUN_003f39e0(local_10,param_1); + /* try { // try from 003f3e7c to 004f3e7f has its CatchHandler @ 003f3e08 */ + /* catch() { ... } // from try @ 003f3ef4 with catch @ 003f3e80 */ + if ((local_10[0] != '\0') && + (plVar4 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8), + lVar3 = (**(code **)(*plVar4 + 0x60))(plVar4,param_2,param_3), param_3 != lVar3)) { + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 1); + } + plVar4 = local_8; + /* try { // try from 003f3ecc to 004f3ecf has its CatchHandler @ 003f3ee4 */ + lVar3 = *(long *)(*local_8 + -0x18); + /* catch() { ... } // from try @ 003f3ecc with catch @ 003f3ee4 */ + /* try { // try from 003f3ef4 to 004f3ef7 has its CatchHandler @ 003f3e80 */ + /* catch() { ... } // from try @ 003f3fec with catch @ 003f3ef8 */ + if (((((*(uint *)((long)local_8 + lVar3 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar4 = *(long **)((long)plVar4 + lVar3 + 0xe8), plVar4 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar4 + 0x30))(), iVar2 == -1)) { + lVar3 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f3ff0 (8 bytes) name=FUN_003f3ff0 + +undefined1 FUN_003f3ff0(undefined1 *param_1) + +{ + /* catch() { ... } // from try @ 003f3f90 with catch @ 003f3ff0 */ + return *param_1; +} + + +================================================================== + +### FUNC 003f3ff8 (80 bytes) name=FUN_003f3ff8 + +void FUN_003f3ff8(long *param_1) + +{ + undefined4 uVar1; + long *plVar2; + + /* catch() { ... } // from try @ 003f40f0 with catch @ 003f3ff8 */ + plVar2 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar2 != (long *)0x0) { + uVar1 = (**(code **)(*plVar2 + 0x50))(plVar2,10); + FUN_003f3c88(param_1,uVar1); + FUN_003f34dc(); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003f4048 (8 bytes) name=FUN_003f4048 + +void FUN_003f4048(undefined8 param_1) + +{ + FUN_003f3c88(param_1,0); + return; +} + + +================================================================== + +### FUNC 003f4050 (4 bytes) name=thunk_FUN_003f34dc + +long * thunk_FUN_003f34dc(long *param_1) + +{ + long lVar1; + int iVar2; + long *plVar3; + + plVar3 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((plVar3 != (long *)0x0) && (iVar2 = (**(code **)(*plVar3 + 0x30))(), iVar2 == -1)) { + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 1); + } + return param_1; +} + + +================================================================== + +### FUNC 003f4054 (128 bytes) name=FUN_003f4054 + +long * FUN_003f4054(long *param_1,undefined4 param_2) + +{ + long *plVar1; + long lVar2; + + lVar2 = *(long *)(*param_1 + -0x18); + if (*(char *)((long)param_1 + lVar2 + 0xe4) != '\0') { + *(undefined4 *)((long)param_1 + lVar2 + 0xe0) = param_2; + /* try { // try from 003f408c to 004f408f has its CatchHandler @ 003f40c0 */ + /* try { // try from 003f4094 to 004f40ab has its CatchHandler @ 003f40f4 */ + return param_1; + } + plVar1 = *(long **)((long)param_1 + lVar2 + 0xf0); + if (plVar1 != (long *)0x0) { + (**(code **)(*plVar1 + 0x50))(plVar1,0x20); + *(undefined4 *)((long)param_1 + lVar2 + 0xe0) = param_2; + *(undefined1 *)((long)param_1 + lVar2 + 0xe4) = 1; + /* catch() { ... } // from try @ 003f408c with catch @ 003f40c0 */ + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 003f40d4 (28 bytes) name=FUN_003f40d4 + +void FUN_003f40d4(long *param_1,uint param_2) + +{ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) | param_2; + return; +} + + +================================================================== + +### FUNC 003f40f0 (28 bytes) name=FUN_003f40f0 + +void FUN_003f40f0(long *param_1,uint param_2) + +{ + /* try { // try from 003f40f0 to 004f40f3 has its CatchHandler @ 003f3ff8 */ + /* catch() { ... } // from try @ 003f4094 with catch @ 003f40f4 */ + /* catch() { ... } // from try @ 003f41f4 with catch @ 003f40fc */ + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) = + *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & (param_2 ^ 0xffffffff); + return; +} + + +================================================================== + +### FUNC 003f410c (120 bytes) name=FUN_003f410c + +void FUN_003f410c(long *param_1,int param_2) + +{ + long lVar1; + uint uVar2; + + lVar1 = *(long *)(*param_1 + -0x18); + if (param_2 == 8) { + *(uint *)((long)param_1 + lVar1 + 0x18) = + *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 0x40; + return; + } + if (param_2 != 10) { + uVar2 = 8; + if (param_2 != 0x10) { + uVar2 = 0; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = + uVar2 | *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5; + return; + } + *(uint *)((long)param_1 + lVar1 + 0x18) = *(uint *)((long)param_1 + lVar1 + 0x18) & 0xffffffb5 | 2 + ; + return; +} + + +================================================================== + +### FUNC 003f4184 (24 bytes) name=FUN_003f4184 + +void FUN_003f4184(long *param_1,int param_2) + +{ + /* try { // try from 003f4190 to 004f4193 has its CatchHandler @ 003f41c4 */ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 8) = (long)param_2; + /* try { // try from 003f4198 to 004f41af has its CatchHandler @ 003f41f8 */ + return; +} + + +================================================================== + +### FUNC 003f419c (24 bytes) name=FUN_003f419c + +void FUN_003f419c(long *param_1,int param_2) + +{ + *(long *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x10) = (long)param_2; + return; +} + + +================================================================== + +### FUNC 003f41b4 (896 bytes) name=FUN_003f41b4 + +long * FUN_003f41b4(long *param_1,undefined8 param_2,long param_3) + +{ + bool bVar1; + char cVar2; + int iVar3; + int iVar4; + long lVar5; + long *plVar6; + int *piVar7; + long lVar8; + long lVar9; + long lVar10; + char local_10 [8]; + long *local_8; + + /* catch() { ... } // from try @ 003f4190 with catch @ 003f41c4 */ + FUN_003f39e0(local_10,param_1); + if (local_10[0] == '\0') goto LAB_003f4234; + /* try { // try from 003f41f4 to 004f41f7 has its CatchHandler @ 003f40fc */ + /* catch() { ... } // from try @ 003f4198 with catch @ 003f41f8 */ + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f4300 with catch @ 003f4200 */ + lVar10 = *(long *)(lVar5 + 0x10); + if (param_3 < lVar10) { + bVar1 = (*(uint *)(lVar5 + 0x18) & 0xb0) != 0x20; + if (bVar1) { + lVar9 = lVar10 - param_3; + if (*(char *)(lVar5 + 0xe4) == '\0') { + plVar6 = *(long **)(lVar5 + 0xf0); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + iVar3 = (**(code **)(*plVar6 + 0x50))(plVar6,0x20); + lVar8 = *param_1; + *(int *)(lVar5 + 0xe0) = iVar3; + *(undefined1 *)(lVar5 + 0xe4) = 1; + lVar5 = (long)param_1 + *(long *)(lVar8 + -0x18); + /* try { // try from 003f44e8 to 004f44eb has its CatchHandler @ 003f4574 */ + } + else { + iVar3 = *(int *)(lVar5 + 0xe0); + } + if (0 < lVar9) { + while( true ) { + plVar6 = *(long **)(lVar5 + 0xe8); + piVar7 = (int *)plVar6[5]; + if (piVar7 < (int *)plVar6[6]) { + *piVar7 = iVar3; + plVar6[5] = (long)(piVar7 + 1); + iVar4 = iVar3; + } + else { + iVar4 = (**(code **)(*plVar6 + 0x68))(plVar6,iVar3); + } + lVar5 = *param_1; + if (iVar4 == -1) { + lVar5 = (long)param_1 + *(long *)(lVar5 + -0x18); + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 1); + /* try { // try from 003f4484 to 004f4487 has its CatchHandler @ 003f4574 */ + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + goto LAB_003f4228; + } + lVar9 = lVar9 + -1; + if (lVar9 == 0) break; + lVar5 = (long)param_1 + *(long *)(lVar5 + -0x18); + } + lVar5 = (long)param_1 + *(long *)(lVar5 + -0x18); + } + } +LAB_003f4228: + if (*(int *)(lVar5 + 0x20) == 0) { + lVar5 = (**(code **)(**(long **)(lVar5 + 0xe8) + 0x60)) + (*(long **)(lVar5 + 0xe8),param_2,param_3); + if (param_3 != lVar5) { + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 1); + } + if (bVar1) goto LAB_003f4314; + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + if (*(int *)(lVar5 + 0x20) == 0) { + lVar10 = lVar10 - param_3; + if (*(char *)(lVar5 + 0xe4) == '\0') { + /* try { // try from 003f44f0 to 004f4507 has its CatchHandler @ 003f4524 */ + plVar6 = *(long **)(lVar5 + 0xf0); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + iVar3 = (**(code **)(*plVar6 + 0x50))(plVar6,0x20); + lVar9 = *param_1; + /* try { // try from 003f4510 to 004f4513 has its CatchHandler @ 003f4310 */ + *(int *)(lVar5 + 0xe0) = iVar3; + *(undefined1 *)(lVar5 + 0xe4) = 1; + lVar5 = (long)param_1 + *(long *)(lVar9 + -0x18); + /* catch() { ... } // from try @ 003f44f0 with catch @ 003f4524 */ + } + else { + iVar3 = *(int *)(lVar5 + 0xe0); + } + if (0 < lVar10) { + while( true ) { + plVar6 = *(long **)(lVar5 + 0xe8); + piVar7 = (int *)plVar6[5]; + if (piVar7 < (int *)plVar6[6]) { + /* try { // try from 003f43a0 to 004f43a3 has its CatchHandler @ 003f454c */ + *piVar7 = iVar3; + plVar6[5] = (long)(piVar7 + 1); + iVar4 = iVar3; + } + else { + iVar4 = (**(code **)(*plVar6 + 0x68))(plVar6,iVar3); + } + /* try { // try from 003f43ac to 004f43bf has its CatchHandler @ 003f4310 */ + lVar5 = *param_1; + if (iVar4 == -1) { + lVar5 = (long)param_1 + *(long *)(lVar5 + -0x18); + /* try { // try from 003f44a0 to 004f44bb has its CatchHandler @ 003f4598 */ + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 1); + goto LAB_003f4314; + } + lVar10 = lVar10 + -1; + if (lVar10 == 0) break; + lVar5 = (long)param_1 + *(long *)(lVar5 + -0x18); + } + goto LAB_003f4318; + } + } + } + } + else { + lVar10 = (**(code **)(**(long **)(lVar5 + 0xe8) + 0x60)) + (*(long **)(lVar5 + 0xe8),param_2,param_3); + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f4300 to 004f4303 has its CatchHandler @ 003f4200 */ + if (param_3 != lVar10) { + /* catch() { ... } // from try @ 003f42a4 with catch @ 003f4304 */ + /* catch() { ... } // from try @ 003f43ac with catch @ 003f4310 + catch() { ... } // from try @ 003f4510 with catch @ 003f4310 + catch() { ... } // from try @ 003f4548 with catch @ 003f4310 + catch() { ... } // from try @ 003f4570 with catch @ 003f4310 */ + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 1); +LAB_003f4314: + lVar5 = *param_1; +LAB_003f4318: + lVar5 = (long)param_1 + *(long *)(lVar5 + -0x18); + } + } + *(undefined8 *)(lVar5 + 0x10) = 0; +LAB_003f4234: + plVar6 = local_8; + lVar5 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar5 + 0x18) >> 0xd & 1) != 0) && + (cVar2 = std::uncaught_exception(), cVar2 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar5 + 0xe8), plVar6 != (long *)0x0)) && + (iVar3 = (**(code **)(*plVar6 + 0x30))(), iVar3 == -1)) { + /* try { // try from 003f429c to 004f429f has its CatchHandler @ 003f42d0 */ + lVar5 = (long)local_8 + *(long *)(*local_8 + -0x18); + /* try { // try from 003f42a4 to 004f42bb has its CatchHandler @ 003f4304 */ + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 1); + /* catch() { ... } // from try @ 003f429c with catch @ 003f42d0 */ + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f45d4 (36 bytes) name=FUN_003f45d4 + +void FUN_003f45d4(undefined8 param_1,undefined4 param_2) + +{ + undefined4 local_4; + + local_4 = param_2; + FUN_003f41b4(param_1,&local_4,1); + return; +} + + +================================================================== + +### FUNC 003f45f8 (88 bytes) name=FUN_003f45f8 + +void FUN_003f45f8(long *param_1,undefined1 param_2) + +{ + long *plVar1; + undefined4 local_4; + + plVar1 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar1 != (long *)0x0) { + local_4 = (**(code **)(*plVar1 + 0x50))(); + FUN_003f41b4(param_1,&local_4,1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(0,param_2); +} + + +================================================================== + +### FUNC 003f4650 (108 bytes) name=FUN_003f4650 + +long * FUN_003f4650(long *param_1,wchar_t *param_2) + +{ + long lVar1; + size_t sVar2; + + if (param_2 != (wchar_t *)0x0) { + sVar2 = wcslen(param_2); + /* try { // try from 003f4670 to 004f4673 has its CatchHandler @ 003f46a4 */ + /* try { // try from 003f4678 to 004f468f has its CatchHandler @ 003f46d8 */ + FUN_003f41b4(param_1,param_2,sVar2); + return param_1; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f4670 with catch @ 003f46a4 */ + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 1); + return param_1; +} + + +================================================================== + +### FUNC 003f46bc (248 bytes) name=FUN_003f46bc + +long * FUN_003f46bc(long *param_1,char *param_2) + +{ + char *pcVar1; + long lVar2; + undefined4 uVar3; + size_t sVar4; + ulong uVar5; + undefined4 *puVar6; + long *plVar7; + char cVar8; + undefined4 *puVar9; + + /* try { // try from 003f46d4 to 004f46d7 has its CatchHandler @ 003f45c0 */ + /* catch() { ... } // from try @ 003f4678 with catch @ 003f46d8 */ + if (param_2 == (char *)0x0) { + /* try { // try from 003f4794 to 004f47af has its CatchHandler @ 003f4840 */ + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 1); + } + else { + /* catch() { ... } // from try @ 003f47e8 with catch @ 003f46e0 + catch() { ... } // from try @ 003f483c with catch @ 003f46e0 */ + sVar4 = strlen(param_2); + uVar5 = sVar4 << 2; + if (0x1fc0000000000000 < sVar4) { + uVar5 = 0xffffffffffffffff; + } + puVar6 = operator_new__(uVar5); + if (sVar4 != 0) { + cVar8 = *param_2; + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + if (plVar7 != (long *)0x0) { + pcVar1 = param_2 + sVar4; + puVar9 = puVar6; + do { + param_2 = param_2 + 1; + uVar3 = (**(code **)(*plVar7 + 0x50))(plVar7,cVar8); + *puVar9 = uVar3; + if (param_2 == pcVar1) goto LAB_003f4760; + puVar9 = puVar9 + 1; + cVar8 = *param_2; + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xf0); + } while (plVar7 != (long *)0x0); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } +LAB_003f4760: + FUN_003f41b4(param_1,puVar6,sVar4); + operator_delete__(puVar6); + } + /* try { // try from 003f4778 to 004f477b has its CatchHandler @ 003f4818 */ + return param_1; +} + + +================================================================== + +### FUNC 003f4854 (372 bytes) name=FUN_003f4854 + +long * FUN_003f4854(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + /* catch() { ... } // from try @ 003f48a4 with catch @ 003f4860 + catch() { ... } // from try @ 003f49ec with catch @ 003f4860 + catch() { ... } // from try @ 003f4b58 with catch @ 003f4860 */ + FUN_003f39e0(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + /* try { // try from 003f48a4 to 004f48a7 has its CatchHandler @ 003f4860 */ + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + /* try { // try from 003f4978 to 004f49cb has its CatchHandler @ 003f4b18 */ + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x18))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f4a68 (4 bytes) name=thunk_FUN_003f4854 + +long * thunk_FUN_003f4854(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x18))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f4a6c (68 bytes) name=FUN_003f4a6c + +void FUN_003f4a6c(long *param_1,short param_2) + +{ + uint uVar1; + + uVar1 = *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & 0x4a; + if ((uVar1 != 8) && (uVar1 != 0x40)) { + FUN_003f4854(param_1,(long)param_2); + return; + } + FUN_003f4854(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f4ab0 (64 bytes) name=FUN_003f4ab0 + +void FUN_003f4ab0(long *param_1,int param_2) + +{ + uint uVar1; + + uVar1 = *(uint *)((long)param_1 + *(long *)(*param_1 + -0x18) + 0x18) & 0x4a; + if ((uVar1 != 8) && (uVar1 != 0x40)) { + FUN_003f4854(param_1,(long)param_2); + return; + } + FUN_003f4854(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f4af0 (372 bytes) name=FUN_003f4af0 + +long * FUN_003f4af0(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + /* catch() { ... } // from try @ 003f4978 with catch @ 003f4b18 + catch() { ... } // from try @ 003f4a2c with catch @ 003f4b18 */ + FUN_003f39e0(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + /* try { // try from 003f4c90 to 004f4cdf has its CatchHandler @ 003f4ec4 */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + /* try { // try from 003f4b58 to 004f4b5b has its CatchHandler @ 003f4860 */ + /* catch() { ... } // from try @ 003f49d0 with catch @ 003f4b5c */ + (**(code **)(*plVar6 + 0x20))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + /* catch() { ... } // from try @ 003f4bc0 with catch @ 003f4b80 + catch() { ... } // from try @ 003f4d04 with catch @ 003f4b80 + catch() { ... } // from try @ 003f4dd8 with catch @ 003f4b80 + catch() { ... } // from try @ 003f4ec0 with catch @ 003f4b80 */ + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f4bc0 to 004f4bc3 has its CatchHandler @ 003f4b80 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f4d04 (4 bytes) name=thunk_FUN_003f4af0 + +long * thunk_FUN_003f4af0(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x20))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f4d08 (8 bytes) name=FUN_003f4d08 + +void FUN_003f4d08(undefined8 param_1,undefined2 param_2) + +{ + FUN_003f4af0(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f4d10 (8 bytes) name=FUN_003f4d10 + +void FUN_003f4d10(undefined8 param_1,undefined4 param_2) + +{ + FUN_003f4af0(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 003f4d18 (372 bytes) name=FUN_003f4d18 + +long * FUN_003f4d18(long *param_1,undefined1 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + FUN_003f39e0(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f4d5c to 004f4d5f has its CatchHandler @ 003f4ec4 */ + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + /* try { // try from 003f4e2c to 004f4e8b has its CatchHandler @ 003f4ec4 */ + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x10))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f4dd8 to 004f4ddb has its CatchHandler @ 003f4b80 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f4f2c (4 bytes) name=thunk_FUN_003f4d18 + +long * thunk_FUN_003f4d18(long *param_1,undefined1 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x10))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f4f30 (372 bytes) name=FUN_003f4f30 + +long * FUN_003f4f30(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + FUN_003f39e0(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f4f74 to 004f4f77 has its CatchHandler @ 003f501c */ + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + /* try { // try from 003f5040 to 004f5043 has its CatchHandler @ 003f4f00 */ + /* catch() { ... } // from try @ 003f4fcc with catch @ 003f5044 */ + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x28))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 003f4fcc to 004f4fcf has its CatchHandler @ 003f5044 */ + /* try { // try from 003f4fd4 to 004f4feb has its CatchHandler @ 003f501c */ + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f4ff4 to 004f5007 has its CatchHandler @ 003f4f00 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + /* catch() { ... } // from try @ 003f50a8 with catch @ 003f5090 + catch() { ... } // from try @ 003f5148 with catch @ 003f5090 + catch() { ... } // from try @ 003f5190 with catch @ 003f5090 */ + return param_1; + } + /* catch() { ... } // from try @ 003f4f74 with catch @ 003f501c + catch() { ... } // from try @ 003f4fd4 with catch @ 003f501c */ + return param_1; +} + + +================================================================== + +### FUNC 003f5144 (4 bytes) name=thunk_FUN_003f4f30 + +long * thunk_FUN_003f4f30(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x28))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f5148 (372 bytes) name=FUN_003f5148 + +long * FUN_003f5148(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + /* try { // try from 003f5148 to 004f515b has its CatchHandler @ 003f5090 */ + /* catch() { ... } // from try @ 003f513c with catch @ 003f516c */ + FUN_003f39e0(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + /* try { // try from 003f5190 to 004f5193 has its CatchHandler @ 003f5090 */ + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + /* catch() { ... } // from try @ 003f5274 with catch @ 003f52e8 */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + /* try { // try from 003f5274 to 004f5277 has its CatchHandler @ 003f52e8 */ + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + /* catch() { ... } // from try @ 003f529c with catch @ 003f51b0 + catch() { ... } // from try @ 003f52e4 with catch @ 003f51b0 */ + (**(code **)(*plVar6 + 0x30))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f521c to 004f521f has its CatchHandler @ 003f52c0 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + /* try { // try from 003f527c to 004f5293 has its CatchHandler @ 003f52c0 */ + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + /* try { // try from 003f529c to 004f52af has its CatchHandler @ 003f51b0 */ + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f535c (4 bytes) name=thunk_FUN_003f5148 + +long * thunk_FUN_003f5148(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x30))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f5360 (372 bytes) name=FUN_003f5360 + +long * FUN_003f5360(undefined8 param_1,long *param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + FUN_003f39e0(local_10,param_2); + if (local_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + /* catch() { ... } // from try @ 003f559c with catch @ 003f5470 */ + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x38))(param_1,plVar6,lVar7,lVar7 == 0,lVar4,uVar3); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + /* try { // try from 003f5408 to 004f540b has its CatchHandler @ 003f5438 */ + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* try { // try from 003f5414 to 004f5427 has its CatchHandler @ 003f5330 */ + /* catch() { ... } // from try @ 003f5408 with catch @ 003f5438 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + /* try { // try from 003f545c to 004f545f has its CatchHandler @ 003f5330 */ + return param_2; +} + + +================================================================== + +### FUNC 003f5574 (4 bytes) name=thunk_FUN_003f5360 + +long * thunk_FUN_003f5360(undefined8 param_1,long *param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_2); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x38))(param_1,plVar6,lVar7,lVar7 == 0,lVar4,uVar3); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + return param_2; +} + + +================================================================== + +### FUNC 003f5578 (8 bytes) name=FUN_003f5578 + +void FUN_003f5578(float param_1) + +{ + FUN_003f5360((double)param_1); + return; +} + + +================================================================== + +### FUNC 003f5580 (380 bytes) name=FUN_003f5580 + +long * FUN_003f5580(undefined8 param_1,long *param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + /* catch() { ... } // from try @ 003f5574 with catch @ 003f558c */ + /* try { // try from 003f559c to 004f559f has its CatchHandler @ 003f5470 */ + /* catch() { ... } // from try @ 003f5680 with catch @ 003f55a0 */ + FUN_003f39e0(local_10,param_2); + if (local_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + /* catch() { ... } // from try @ 003f57b8 with catch @ 003f568c */ + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x40))(param_1,plVar6,lVar7,lVar7 == 0,lVar4,uVar3); + if ((extraout_w1 & 0xff) != 0) { + /* try { // try from 003f561c to 004f561f has its CatchHandler @ 003f5650 */ + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + /* try { // try from 003f5624 to 004f563b has its CatchHandler @ 003f5684 */ + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + /* catch() { ... } // from try @ 003f561c with catch @ 003f5650 */ + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + /* try { // try from 003f5680 to 004f5683 has its CatchHandler @ 003f55a0 */ + /* catch() { ... } // from try @ 003f5624 with catch @ 003f5684 */ + return param_2; +} + + +================================================================== + +### FUNC 003f579c (4 bytes) name=thunk_FUN_003f5580 + +long * thunk_FUN_003f5580(undefined8 param_1,long *param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_2); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x40))(param_1,plVar6,lVar7,lVar7 == 0,lVar4,uVar3); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_2 + *(long *)(*param_2 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_2; + } + return param_2; +} + + +================================================================== + +### FUNC 003f57a0 (372 bytes) name=FUN_003f57a0 + +long * FUN_003f57a0(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char local_10 [8]; + long *local_8; + + /* catch() { ... } // from try @ 003f5790 with catch @ 003f57a8 */ + /* try { // try from 003f57b8 to 004f57bb has its CatchHandler @ 003f568c */ + /* catch() { ... } // from try @ 003f58e8 with catch @ 003f57bc */ + FUN_003f39e0(local_10,param_1); + if (local_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + /* try { // try from 003f58c0 to 004f58c3 has its CatchHandler @ 003f58d8 */ + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x48))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = local_8; + lVar4 = *(long *)(*local_8 + -0x18); + if (((((*(uint *)((long)local_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + /* catch() { ... } // from try @ 003f58c0 with catch @ 003f58d8 */ + lVar4 = (long)local_8 + *(long *)(*local_8 + -0x18); + /* try { // try from 003f58e8 to 004f58eb has its CatchHandler @ 003f57bc */ + /* catch() { ... } // from try @ 003f5a18 with catch @ 003f58ec */ + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f59b4 (4 bytes) name=thunk_FUN_003f57a0 + +long * thunk_FUN_003f57a0(long *param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + long lVar4; + long *plVar5; + uint extraout_w1; + long *plVar6; + long lVar7; + char acStack_10 [8]; + long *plStack_8; + + FUN_003f39e0(acStack_10,param_1); + if (acStack_10[0] != '\0') { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + plVar6 = *(long **)(lVar4 + 0xf8); + if (plVar6 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + lVar7 = *(long *)(lVar4 + 0xe8); + if (*(char *)(lVar4 + 0xe4) == '\0') { + plVar5 = *(long **)(lVar4 + 0xf0); + if (plVar5 == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5,0x20); + *(undefined4 *)(lVar4 + 0xe0) = uVar3; + *(undefined1 *)(lVar4 + 0xe4) = 1; + } + else { + uVar3 = *(undefined4 *)(lVar4 + 0xe0); + } + (**(code **)(*plVar6 + 0x48))(plVar6,lVar7,lVar7 == 0,lVar4,uVar3,param_2); + if ((extraout_w1 & 0xff) != 0) { + lVar4 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + } + } + plVar6 = plStack_8; + lVar4 = *(long *)(*plStack_8 + -0x18); + if (((((*(uint *)((long)plStack_8 + lVar4 + 0x18) >> 0xd & 1) != 0) && + (cVar1 = std::uncaught_exception(), cVar1 == '\0')) && + (plVar6 = *(long **)((long)plVar6 + lVar4 + 0xe8), plVar6 != (long *)0x0)) && + (iVar2 = (**(code **)(*plVar6 + 0x30))(), iVar2 == -1)) { + lVar4 = (long)plStack_8 + *(long *)(*plStack_8 + -0x18); + FUN_003d2c00(lVar4,*(uint *)(lVar4 + 0x20) | 1); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 003f59b8 (56 bytes) name=FUN_003f59b8 + +long FUN_003f59b8(long param_1) + +{ + ulong uVar1; + ulong uVar2; + + if ((*(uint *)(param_1 + 0x40) >> 3 & 1) != 0) { + uVar2 = *(ulong *)(param_1 + 0x28); + uVar1 = *(ulong *)(param_1 + 0x18); + if ((uVar2 != 0) && (uVar1 < uVar2)) { + *(ulong *)(param_1 + 0x18) = uVar2; + uVar1 = uVar2; + } + return uVar1 - *(long *)(param_1 + 0x10); + } + return -1; +} + + +================================================================== + +### FUNC 003f59f0 (68 bytes) name=FUN_003f59f0 + +ulong FUN_003f59f0(long param_1) + +{ + byte *pbVar1; + byte *pbVar2; + + /* try { // try from 003f59f0 to 004f59f3 has its CatchHandler @ 003f5a08 */ + if ((*(uint *)(param_1 + 0x40) >> 3 & 1) != 0) { + pbVar1 = *(byte **)(param_1 + 0x28); + pbVar2 = *(byte **)(param_1 + 0x18); + /* catch() { ... } // from try @ 003f59f0 with catch @ 003f5a08 */ + if ((pbVar1 != (byte *)0x0) && (pbVar2 < pbVar1)) { + *(byte **)(param_1 + 0x18) = pbVar1; + pbVar2 = pbVar1; + } + if (*(byte **)(param_1 + 0x10) < pbVar2) { + /* try { // try from 003f5a18 to 004f5a1b has its CatchHandler @ 003f58ec */ + /* catch() { ... } // from try @ 003f5b48 with catch @ 003f5a1c */ + return (ulong)**(byte **)(param_1 + 0x10); + } + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 003f5a34 (104 bytes) name=FUN_003f5a34 + +uint FUN_003f5a34(long param_1,uint param_2) + +{ + bool bVar1; + ulong uVar2; + + uVar2 = *(ulong *)(param_1 + 0x10); + if (*(ulong *)(param_1 + 8) < uVar2) { + if (param_2 == 0xffffffff) { + *(ulong *)(param_1 + 0x10) = uVar2 - 1; + return 0; + } + bVar1 = (uint)*(byte *)(uVar2 - 1) == (param_2 & 0xff); + if ((bVar1) || ((*(uint *)(param_1 + 0x40) >> 4 & 1) != 0)) { + *(ulong *)(param_1 + 0x10) = uVar2 - 1; + if (bVar1) { + return param_2; + } + *(char *)(uVar2 - 1) = (char)param_2; + return param_2; + } + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 003f5a9c (392 bytes) name=FUN_003f5a9c + +undefined1 [16] FUN_003f5a9c(long param_1,ulong param_2,int param_3,uint param_4) + +{ + ulong uVar1; + uint uVar2; + bool bVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + ulong uVar8; + long lVar9; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + + uVar2 = *(uint *)(param_1 + 0x40) & 8; + bVar3 = (param_4 & uVar2) == 0; + bVar4 = (*(uint *)(param_1 + 0x40) & 0x10 & param_4) != 0; + bVar5 = param_3 == 1; + bVar6 = (param_4 & 0x10) != 0; + bVar7 = (param_4 & 8) == 0; + if (bVar3 || bVar6) { + lVar9 = *(long *)(param_1 + 0x20); + if (((lVar9 != 0) || (param_2 == 0)) && ((bVar4 && bVar7 || (!bVar5 && (!bVar3 && bVar4))))) + goto LAB_003f5b1c; + } + else { + lVar9 = *(long *)(param_1 + 8); + if ((lVar9 != 0) || (param_2 == 0)) { +LAB_003f5b1c: + uVar8 = *(ulong *)(param_1 + 0x28); + /* try { // try from 003f5b20 to 004f5b23 has its CatchHandler @ 003f5b38 */ + if ((uVar8 != 0) && (*(ulong *)(param_1 + 0x18) < uVar8)) { + if (uVar2 == 0) { + *(ulong *)(param_1 + 8) = uVar8; + *(ulong *)(param_1 + 0x10) = uVar8; + } + *(ulong *)(param_1 + 0x18) = uVar8; + } + /* catch() { ... } // from try @ 003f5b20 with catch @ 003f5b38 */ + if (param_3 == 1) { + uVar8 = param_2 + (uVar8 - lVar9); + param_2 = param_2 + (*(long *)(param_1 + 0x10) - lVar9); + } + else { + uVar8 = param_2; + /* try { // try from 003f5b48 to 004f5b4b has its CatchHandler @ 003f5a1c */ + if (param_3 == 2) { + param_2 = param_2 + (*(long *)(param_1 + 0x18) - lVar9); + uVar8 = param_2; + } + } + /* catch() { ... } // from try @ 003f5c78 with catch @ 003f5b4c */ + if ((((long)param_2 < 0) || ((bVar5 || (bVar3 || !bVar4)) && (bVar3 || bVar6))) || + (*(long *)(param_1 + 0x18) - lVar9 < (long)param_2)) { + param_2 = 0xffffffffffffffff; + } + else { + *(ulong *)(param_1 + 0x10) = *(long *)(param_1 + 8) + param_2; + } + if (((-1 < (long)uVar8) && (!bVar5 && (!bVar3 && bVar4) || bVar4 && bVar7)) && + ((long)uVar8 <= *(long *)(param_1 + 0x18) - lVar9)) { + lVar9 = *(long *)(param_1 + 0x20); + for (uVar1 = uVar8; 0x7fffffff < (long)uVar1; uVar1 = uVar1 - 0x7fffffff) { + lVar9 = lVar9 + 0x7fffffff; + } + *(long *)(param_1 + 0x28) = lVar9 + (int)uVar1; + auVar11._8_8_ = 0; + auVar11._0_8_ = uVar8; + return auVar11; + } + goto LAB_003f5afc; + } + } + param_2 = 0xffffffffffffffff; +LAB_003f5afc: + auVar10._8_8_ = 0; + auVar10._0_8_ = param_2; + return auVar10; +} + + +================================================================== + +### FUNC 003f5c24 (308 bytes) name=FUN_003f5c24 + +undefined1 [16] FUN_003f5c24(long param_1,long param_2,ulong param_3,uint param_4) + +{ + uint uVar1; + bool bVar2; + bool bVar3; + ulong uVar4; + long lVar5; + long lVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + ulong uVar12; + undefined1 auVar13 [16]; + + uVar1 = *(uint *)(param_1 + 0x40) & 8; + bVar2 = (param_4 & uVar1) == 0; + bVar3 = (*(uint *)(param_1 + 0x40) & 0x10 & param_4) != 0; + if (bVar2) { + lVar6 = *(long *)(param_1 + 0x20); + if (((lVar6 != 0) || (param_2 == 0)) && (bVar3)) goto LAB_003f5cb4; + } + else { + lVar6 = *(long *)(param_1 + 8); + /* try { // try from 003f5c50 to 004f5c53 has its CatchHandler @ 003f5c68 */ + if ((lVar6 != 0) || (param_2 == 0)) { +LAB_003f5cb4: + uVar4 = *(ulong *)(param_1 + 0x28); + if ((uVar4 != 0) && (*(ulong *)(param_1 + 0x18) < uVar4)) { + if (uVar1 == 0) { + *(ulong *)(param_1 + 8) = uVar4; + *(ulong *)(param_1 + 0x10) = uVar4; + *(ulong *)(param_1 + 0x18) = uVar4; + } + else { + *(ulong *)(param_1 + 0x18) = uVar4; + } + } + if ((-1 < param_2) && (param_2 <= *(long *)(param_1 + 0x18) - lVar6)) { + if (!bVar2) { + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 8) + param_2; + } + if (bVar3) { + lVar6 = *(long *)(param_1 + 0x20); + *(long *)(param_1 + 0x28) = lVar6; + for (lVar5 = param_2; 0x7fffffff < lVar5; lVar5 = lVar5 + -0x7fffffff) { + lVar6 = lVar6 + 0x7fffffff; + } + *(long *)(param_1 + 0x28) = lVar6 + (int)lVar5; + } + uVar12 = param_3 & 0xff; + uVar11 = param_3 >> 8 & 0xff; + uVar10 = param_3 >> 0x10 & 0xff; + uVar9 = param_3 >> 0x18 & 0xff; + uVar8 = param_3 >> 0x20 & 0xff; + uVar7 = param_3 >> 0x28 & 0xff; + uVar4 = param_3 >> 0x30 & 0xff; + /* try { // try from 003f5d40 to 004f5d43 has its CatchHandler @ 003f5df8 */ + param_3 = param_3 >> 0x38; + goto LAB_003f5c78; + } + } + } + param_3 = 0; + uVar4 = 0; + uVar7 = 0; + uVar8 = 0; + uVar9 = 0; + /* catch() { ... } // from try @ 003f5c50 with catch @ 003f5c68 */ + uVar10 = 0; + uVar11 = 0; + uVar12 = 0; + param_2 = -1; +LAB_003f5c78: + /* try { // try from 003f5c78 to 004f5c7b has its CatchHandler @ 003f5b4c */ + /* catch() { ... } // from try @ 003f5dcc with catch @ 003f5c80 + catch() { ... } // from try @ 003f5e3c with catch @ 003f5c80 */ + auVar13._8_8_ = + uVar12 | uVar11 << 8 | uVar10 << 0x10 | uVar9 << 0x18 | uVar8 << 0x20 | uVar7 << 0x28 | + uVar4 << 0x30 | param_3 << 0x38; + auVar13._0_8_ = param_2; + return auVar13; +} + + +================================================================== + +### FUNC 003f5d58 (60 bytes) name=FUN_003f5d58 + +long FUN_003f5d58(long param_1) + +{ + ulong uVar1; + ulong uVar2; + + /* try { // try from 003f5d5c to 004f5d77 has its CatchHandler @ 003f5e48 */ + if ((*(uint *)(param_1 + 0x40) >> 3 & 1) != 0) { + uVar2 = *(ulong *)(param_1 + 0x28); + uVar1 = *(ulong *)(param_1 + 0x18); + if ((uVar2 != 0) && (uVar1 < uVar2)) { + *(ulong *)(param_1 + 0x18) = uVar2; + uVar1 = uVar2; + } + return (long)(uVar1 - *(long *)(param_1 + 0x10)) >> 2; + } + return -1; +} + + +================================================================== + +### FUNC 003f5d94 (96 bytes) name=FUN_003f5d94 + +int FUN_003f5d94(long param_1,int param_2) + +{ + bool bVar1; + ulong uVar2; + + uVar2 = *(ulong *)(param_1 + 0x10); + if (*(ulong *)(param_1 + 8) < uVar2) { + if (param_2 == -1) { + *(ulong *)(param_1 + 0x10) = uVar2 - 4; + return 0; + } + bVar1 = *(int *)(uVar2 - 4) == param_2; + /* try { // try from 003f5dcc to 004f5ddf has its CatchHandler @ 003f5c80 */ + if ((bVar1) || ((*(uint *)(param_1 + 0x40) >> 4 & 1) != 0)) { + *(ulong *)(param_1 + 0x10) = uVar2 - 4; + if (bVar1) { + return param_2; + } + *(int *)(uVar2 - 4) = param_2; + return param_2; + } + } + /* try { // try from 003f5da4 to 004f5da7 has its CatchHandler @ 003f5df8 */ + /* try { // try from 003f5dac to 004f5dc3 has its CatchHandler @ 003f5e40 */ + return -1; +} + + +================================================================== + +### FUNC 003f5df4 (376 bytes) name=FUN_003f5df4 + +undefined1 [16] FUN_003f5df4(long param_1,ulong param_2,int param_3,uint param_4) + +{ + ulong uVar1; + uint uVar2; + bool bVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + ulong uVar8; + long lVar9; + undefined1 auVar10 [16]; + undefined1 auVar11 [16]; + + /* catch() { ... } // from try @ 003f5d40 with catch @ 003f5df8 + catch() { ... } // from try @ 003f5da4 with catch @ 003f5df8 */ + uVar2 = *(uint *)(param_1 + 0x40) & 8; + bVar3 = (param_4 & uVar2) == 0; + bVar4 = (*(uint *)(param_1 + 0x40) & 0x10 & param_4) != 0; + bVar5 = param_3 == 1; + bVar6 = (param_4 & 0x10) != 0; + bVar7 = (param_4 & 8) == 0; + /* try { // try from 003f5e3c to 004f5e3f has its CatchHandler @ 003f5c80 */ + /* catch() { ... } // from try @ 003f5dac with catch @ 003f5e40 */ + if (bVar3 || bVar6) { + lVar9 = *(long *)(param_1 + 0x20); + /* catch() { ... } // from try @ 003f5f98 with catch @ 003f5e70 */ + if (((lVar9 != 0) || (param_2 == 0)) && ((bVar4 && bVar7 || (!bVar5 && (!bVar3 && bVar4))))) + goto LAB_003f5e74; + } + else { + lVar9 = *(long *)(param_1 + 8); + /* catch() { ... } // from try @ 003f5d5c with catch @ 003f5e48 */ + if ((lVar9 != 0) || (param_2 == 0)) { +LAB_003f5e74: + uVar8 = *(ulong *)(param_1 + 0x28); + if ((uVar8 != 0) && (*(ulong *)(param_1 + 0x18) < uVar8)) { + if (uVar2 == 0) { + *(ulong *)(param_1 + 8) = uVar8; + *(ulong *)(param_1 + 0x10) = uVar8; + } + *(ulong *)(param_1 + 0x18) = uVar8; + } + if (param_3 == 1) { + uVar8 = param_2 + ((long)(uVar8 - lVar9) >> 2); + param_2 = param_2 + (*(long *)(param_1 + 0x10) - lVar9 >> 2); + } + else { + uVar8 = param_2; + if (param_3 == 2) { + param_2 = param_2 + (*(long *)(param_1 + 0x18) - lVar9 >> 2); + uVar8 = param_2; + } + } + if ((((long)param_2 < 0) || ((bVar5 || (bVar3 || !bVar4)) && (bVar3 || bVar6))) || + (*(long *)(param_1 + 0x18) - lVar9 >> 2 < (long)param_2)) { + param_2 = 0xffffffffffffffff; + } + else { + *(ulong *)(param_1 + 0x10) = *(long *)(param_1 + 8) + param_2 * 4; + } + if (((-1 < (long)uVar8) && (!bVar5 && (!bVar3 && bVar4) || bVar4 && bVar7)) && + ((long)uVar8 <= *(long *)(param_1 + 0x18) - lVar9 >> 2)) { + lVar9 = *(long *)(param_1 + 0x20); + for (uVar1 = uVar8; 0x7fffffff < (long)uVar1; uVar1 = uVar1 - 0x7fffffff) { + lVar9 = lVar9 + 0x1fffffffc; + } + *(ulong *)(param_1 + 0x28) = lVar9 + uVar1 * 4; + auVar11._8_8_ = 0; + auVar11._0_8_ = uVar8; + return auVar11; + } + goto LAB_003f5e54; + } + } + param_2 = 0xffffffffffffffff; +LAB_003f5e54: + auVar10._8_8_ = 0; + auVar10._0_8_ = param_2; + return auVar10; +} + + +================================================================== + +### FUNC 003f5f6c (332 bytes) name=FUN_003f5f6c + +undefined1 [16] FUN_003f5f6c(long param_1,long param_2,ulong param_3,uint param_4) + +{ + uint uVar1; + bool bVar2; + bool bVar3; + ulong uVar4; + long lVar5; + ulong uVar6; + long lVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + ulong uVar12; + undefined1 auVar13 [16]; + + /* try { // try from 003f5f70 to 004f5f73 has its CatchHandler @ 003f5f88 */ + uVar1 = *(uint *)(param_1 + 0x40) & 8; + bVar2 = (param_4 & uVar1) == 0; + bVar3 = (*(uint *)(param_1 + 0x40) & 0x10 & param_4) != 0; + /* catch() { ... } // from try @ 003f5f70 with catch @ 003f5f88 */ + if (bVar2) { + lVar5 = *(long *)(param_1 + 0x20); + if (((lVar5 != 0) || (param_2 == 0)) && (bVar3)) goto LAB_003f5ffc; + } + else { + lVar5 = *(long *)(param_1 + 8); + /* try { // try from 003f5f98 to 004f5f9b has its CatchHandler @ 003f5e70 */ + if ((lVar5 != 0) || (param_2 == 0)) { +LAB_003f5ffc: + uVar4 = *(ulong *)(param_1 + 0x28); + if ((uVar4 != 0) && (*(ulong *)(param_1 + 0x18) < uVar4)) { + if (uVar1 == 0) { + *(ulong *)(param_1 + 8) = uVar4; + *(ulong *)(param_1 + 0x10) = uVar4; + *(ulong *)(param_1 + 0x18) = uVar4; + } + else { + *(ulong *)(param_1 + 0x18) = uVar4; + } + } + if ((-1 < param_2) && (param_2 <= *(long *)(param_1 + 0x18) - lVar5 >> 2)) { + if (!bVar2) { + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 8) + param_2 * 4; + } + if (bVar3) { + lVar7 = *(long *)(param_1 + 0x20); + *(long *)(param_1 + 0x28) = lVar7; + for (lVar5 = param_2; 0x7fffffff < lVar5; lVar5 = lVar5 + -0x7fffffff) { + lVar7 = lVar7 + 0x1fffffffc; + } + *(long *)(param_1 + 0x28) = lVar7 + lVar5 * 4; + } + uVar12 = param_3 & 0xff; + uVar11 = param_3 >> 8 & 0xff; + uVar10 = param_3 >> 0x10 & 0xff; + uVar9 = param_3 >> 0x18 & 0xff; + uVar8 = param_3 >> 0x20 & 0xff; + uVar6 = param_3 >> 0x28 & 0xff; + uVar4 = param_3 >> 0x30 & 0xff; + param_3 = param_3 >> 0x38; + /* try { // try from 003f609c to 004f609f has its CatchHandler @ 003f60b4 */ + goto LAB_003f5fc0; + } + } + } + /* catch() { ... } // from try @ 003f60c4 with catch @ 003f5f9c */ + param_3 = 0; + uVar4 = 0; + uVar6 = 0; + uVar8 = 0; + uVar9 = 0; + uVar10 = 0; + uVar11 = 0; + uVar12 = 0; + param_2 = -1; +LAB_003f5fc0: + auVar13._8_8_ = + uVar12 | uVar11 << 8 | uVar10 << 0x10 | uVar9 << 0x18 | uVar8 << 0x20 | uVar6 << 0x28 | + uVar4 << 0x30 | param_3 << 0x38; + auVar13._0_8_ = param_2; + return auVar13; +} + + +================================================================== + +### FUNC 003f60b8 (64 bytes) name=FUN_003f60b8 + +undefined4 FUN_003f60b8(long param_1) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + + if ((*(uint *)(param_1 + 0x40) >> 3 & 1) != 0) { + /* catch() { ... } // from try @ 003f61f0 with catch @ 003f60c8 */ + puVar1 = *(undefined4 **)(param_1 + 0x28); + puVar2 = *(undefined4 **)(param_1 + 0x18); + if ((puVar1 != (undefined4 *)0x0) && (puVar2 < puVar1)) { + *(undefined4 **)(param_1 + 0x18) = puVar1; + puVar2 = puVar1; + } + if (*(undefined4 **)(param_1 + 0x10) < puVar2) { + return **(undefined4 **)(param_1 + 0x10); + } + } + /* try { // try from 003f60c4 to 004f60c7 has its CatchHandler @ 003f5f9c */ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003f60f8 (168 bytes) name=FUN_003f60f8 + +size_t * FUN_003f60f8(undefined1 *param_1,long param_2) + +{ + size_t *psVar1; + size_t *__dest; + size_t __n; + + __n = param_2 - (long)param_1; + psVar1 = (size_t *)FUN_00412a70(__n,0); + __dest = psVar1 + 3; + if (__n == 1) { + *(undefined1 *)(psVar1 + 3) = *param_1; + } + else { + __dest = memcpy(__dest,param_1,__n); + } + if (psVar1 == (size_t *)PTR_DAT_00501f30) { + return __dest; + } + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined1 *)((long)psVar1 + __n + 0x18) = 0; + return __dest; +} + + +================================================================== + +### FUNC 003f61a0 (180 bytes) name=FUN_003f61a0 + +wchar_t * FUN_003f61a0(wchar_t *param_1,long param_2) + +{ + wchar_t *__s1; + size_t *psVar1; + size_t __n; + + __n = param_2 - (long)param_1 >> 2; + /* try { // try from 003f61c8 to 004f61cb has its CatchHandler @ 003f61e0 */ + psVar1 = (size_t *)FUN_004164a8(__n,0); + __s1 = (wchar_t *)(psVar1 + 3); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_1; + } + else { + /* catch() { ... } // from try @ 003f61c8 with catch @ 003f61e0 */ + wmemcpy(__s1,param_1,__n); + /* try { // try from 003f61f0 to 004f61f3 has its CatchHandler @ 003f60c8 */ + /* catch() { ... } // from try @ 003f631c with catch @ 003f61f4 */ + } + if (psVar1 == (size_t *)PTR_DAT_00501ab8) { + return __s1; + } + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + (param_2 - (long)param_1) + 0x18) = 0; + return __s1; +} + + +================================================================== + +### FUNC 003f6254 (156 bytes) name=FUN_003f6254 + +void FUN_003f6254(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = (long)&PTR_FUN_004fda10; + lVar4 = param_1[9]; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003f62f0 (156 bytes) name=FUN_003f62f0 + +void FUN_003f62f0(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* try { // try from 003f62f4 to 004f62f7 has its CatchHandler @ 003f630c */ + /* catch() { ... } // from try @ 003f62f4 with catch @ 003f630c */ + *param_1 = (long)&PTR_FUN_004fdc50; + lVar4 = param_1[9]; + /* try { // try from 003f631c to 004f631f has its CatchHandler @ 003f61f4 */ + /* catch() { ... } // from try @ 003f6448 with catch @ 003f6320 */ + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003f638c (164 bytes) name=FUN_003f638c + +void FUN_003f638c(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = (long)&PTR_FUN_004fda10; + lVar4 = param_1[9]; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + /* try { // try from 003f6420 to 004f6423 has its CatchHandler @ 003f6438 */ + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f6430 (164 bytes) name=FUN_003f6430 + +void FUN_003f6430(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* catch() { ... } // from try @ 003f6420 with catch @ 003f6438 */ + /* try { // try from 003f6448 to 004f644b has its CatchHandler @ 003f6320 */ + /* catch() { ... } // from try @ 003f6574 with catch @ 003f644c */ + *param_1 = (long)&PTR_FUN_004fdc50; + lVar4 = param_1[9]; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f64d4 (204 bytes) name=FUN_003f64d4 + +void FUN_003f64d4(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f8478; + param_1[0xb] = &PTR_FUN_004f84a0; + lVar4 = param_1[10]; + param_1[1] = &PTR_FUN_004fdc50; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + /* catch() { ... } // from try @ 003f654c with catch @ 003f6564 */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + /* try { // try from 003f6574 to 004f6577 has its CatchHandler @ 003f644c */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + /* catch() { ... } // from try @ 003f65e0 with catch @ 003f6578 */ + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[1] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 8); + param_1[0xb] = PTR_DAT_00501ea8 + 0x10; + /* try { // try from 003f654c to 004f654f has its CatchHandler @ 003f6564 */ + FUN_003d381c(param_1 + 0xb); + return; +} + + +================================================================== + +### FUNC 003f65a0 (16 bytes) name=FUN_003f65a0 + +void FUN_003f65a0(long *param_1) + +{ + FUN_003f64d4((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f65b0 (204 bytes) name=FUN_003f65b0 + +void FUN_003f65b0(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* try { // try from 003f65b8 to 004f65bb has its CatchHandler @ 003f65d0 */ + *param_1 = &PTR_FUN_004f82c8; + /* catch() { ... } // from try @ 003f65b8 with catch @ 003f65d0 */ + param_1[0xb] = &PTR_FUN_004f82f0; + /* try { // try from 003f65e0 to 004f65e3 has its CatchHandler @ 003f6578 */ + lVar4 = param_1[10]; + /* catch() { ... } // from try @ 003f664c with catch @ 003f65e4 */ + param_1[1] = &PTR_FUN_004fda10; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + /* catch() { ... } // from try @ 003f6624 with catch @ 003f663c */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + /* try { // try from 003f664c to 004f664f has its CatchHandler @ 003f65e4 */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 8); + /* try { // try from 003f6624 to 004f6627 has its CatchHandler @ 003f663c */ + param_1[0xb] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0xb); + return; +} + + +================================================================== + +### FUNC 003f667c (16 bytes) name=FUN_003f667c + +void FUN_003f667c(long *param_1) + +{ + FUN_003f65b0((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f668c (204 bytes) name=FUN_003f668c + +void FUN_003f668c(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f8258; + param_1[0xc] = &PTR_FUN_004f8280; + lVar4 = param_1[0xb]; + param_1[2] = &PTR_FUN_004fda10; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + /* catch() { ... } // from try @ 003f67ac with catch @ 003f673c */ + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[2] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0xc] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0xc); + return; +} + + +================================================================== + +### FUNC 003f6758 (16 bytes) name=FUN_003f6758 + +void FUN_003f6758(long *param_1) + +{ + FUN_003f668c((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6768 (204 bytes) name=FUN_003f6768 + +void FUN_003f6768(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* try { // try from 003f6784 to 004f6787 has its CatchHandler @ 003f679c */ + *param_1 = &LAB_004f8408; + param_1[0xc] = &PTR_FUN_004f8430; + lVar4 = param_1[0xb]; + /* catch() { ... } // from try @ 003f6784 with catch @ 003f679c */ + param_1[2] = &PTR_FUN_004fdc50; + /* try { // try from 003f67ac to 004f67af has its CatchHandler @ 003f673c */ + /* catch() { ... } // from try @ 003f6820 with catch @ 003f67b0 */ + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + /* try { // try from 003f67f8 to 004f67fb has its CatchHandler @ 003f6810 */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + /* catch() { ... } // from try @ 003f6894 with catch @ 003f6824 */ + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + /* catch() { ... } // from try @ 003f67f8 with catch @ 003f6810 */ + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + /* try { // try from 003f6820 to 004f6823 has its CatchHandler @ 003f67b0 */ + } + } + param_1[2] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0xc] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0xc); + return; +} + + +================================================================== + +### FUNC 003f6834 (16 bytes) name=FUN_003f6834 + +void FUN_003f6834(long *param_1) + +{ + FUN_003f6768((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6844 (212 bytes) name=FUN_003f6844 + +void FUN_003f6844(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f8478; + /* try { // try from 003f686c to 004f686f has its CatchHandler @ 003f6884 */ + param_1[0xb] = &PTR_FUN_004f84a0; + lVar4 = param_1[10]; + param_1[1] = &PTR_FUN_004fdc50; + /* catch() { ... } // from try @ 003f686c with catch @ 003f6884 */ + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + /* try { // try from 003f6908 to 004f690b has its CatchHandler @ 003f6898 */ + iVar3 = *(int *)(lVar4 + -8); + /* catch() { ... } // from try @ 003f6a18 with catch @ 003f6910 + catch() { ... } // from try @ 003f6a64 with catch @ 003f6910 */ + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + /* try { // try from 003f68e0 to 004f68e3 has its CatchHandler @ 003f68f8 */ + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + /* catch() { ... } // from try @ 003f68e0 with catch @ 003f68f8 */ + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + /* try { // try from 003f6894 to 004f6897 has its CatchHandler @ 003f6824 */ + /* catch() { ... } // from try @ 003f6908 with catch @ 003f6898 */ + param_1[1] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 8); + param_1[0xb] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0xb); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f6918 (16 bytes) name=FUN_003f6918 + +void FUN_003f6918(long *param_1) + +{ + FUN_003f6844((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6928 (212 bytes) name=FUN_003f6928 + +void FUN_003f6928(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f82c8; + param_1[0xb] = &PTR_FUN_004f82f0; + lVar4 = param_1[10]; + param_1[1] = &PTR_FUN_004fda10; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + /* try { // try from 003f69c4 to 004f69df has its CatchHandler @ 003f6a68 */ + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 8); + param_1[0xb] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0xb); + /* try { // try from 003f69a8 to 004f69ab has its CatchHandler @ 003f6a40 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f69fc (16 bytes) name=FUN_003f69fc + +void FUN_003f69fc(long *param_1) + +{ + FUN_003f6928((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6a0c (212 bytes) name=FUN_003f6a0c + +void FUN_003f6a0c(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* try { // try from 003f6a0c to 004f6a0f has its CatchHandler @ 003f6a40 */ + /* try { // try from 003f6a18 to 004f6a2b has its CatchHandler @ 003f6910 */ + *param_1 = &PTR_FUN_004f8258; + param_1[0xc] = &PTR_FUN_004f8280; + lVar4 = param_1[0xb]; + /* catch() { ... } // from try @ 003f69a8 with catch @ 003f6a40 + catch() { ... } // from try @ 003f6a0c with catch @ 003f6a40 */ + param_1[2] = &PTR_FUN_004fda10; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + /* try { // try from 003f6a64 to 004f6a67 has its CatchHandler @ 003f6910 */ + /* catch() { ... } // from try @ 003f69c4 with catch @ 003f6a68 */ + param_1[2] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0xc] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0xc); + operator_delete(param_1); + /* catch() { ... } // from try @ 003f6bb8 with catch @ 003f6a90 */ + return; +} + + +================================================================== + +### FUNC 003f6ae0 (16 bytes) name=FUN_003f6ae0 + +void FUN_003f6ae0(long *param_1) + +{ + FUN_003f6a0c((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6af0 (212 bytes) name=FUN_003f6af0 + +void FUN_003f6af0(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &LAB_004f8408; + param_1[0xc] = &PTR_FUN_004f8430; + lVar4 = param_1[0xb]; + param_1[2] = &PTR_FUN_004fdc50; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + /* try { // try from 003f6bb8 to 004f6bbb has its CatchHandler @ 003f6a90 */ + /* catch() { ... } // from try @ 003f6ce4 with catch @ 003f6bbc */ + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + /* try { // try from 003f6b90 to 004f6b93 has its CatchHandler @ 003f6ba8 */ + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + /* catch() { ... } // from try @ 003f6b90 with catch @ 003f6ba8 */ + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[2] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0xc] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0xc); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f6bc4 (16 bytes) name=FUN_003f6bc4 + +void FUN_003f6bc4(long *param_1) + +{ + FUN_003f6af0((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6bd4 (216 bytes) name=FUN_003f6bd4 + +void FUN_003f6bd4(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f8368; + param_1[0xd] = &PTR_FUN_004f83b8; + lVar4 = param_1[0xc]; + param_1[2] = &PTR_FUN_004f8390; + param_1[3] = &PTR_FUN_004fda10; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[3] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0xd] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0xd); + return; +} + + +================================================================== + +### FUNC 003f6cac (8 bytes) name=FUN_003f6cac + +void FUN_003f6cac(long param_1) + +{ + FUN_003f6bd4(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 003f6cb4 (16 bytes) name=FUN_003f6cb4 + +void FUN_003f6cb4(long *param_1) + +{ + /* try { // try from 003f6cbc to 004f6cbf has its CatchHandler @ 003f6cd4 */ + FUN_003f6bd4((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6cc4 (216 bytes) name=FUN_003f6cc4 + +void FUN_003f6cc4(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* catch() { ... } // from try @ 003f6cbc with catch @ 003f6cd4 */ + *param_1 = &PTR_FUN_004f8518; + /* try { // try from 003f6ce4 to 004f6ce7 has its CatchHandler @ 003f6bbc */ + /* catch() { ... } // from try @ 003f6e10 with catch @ 003f6ce8 */ + param_1[0xd] = &PTR_FUN_004f8568; + lVar4 = param_1[0xc]; + param_1[2] = &PTR_FUN_004f8540; + param_1[3] = &PTR_FUN_004fdc50; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + param_1[3] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0xd] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0xd); + return; +} + + +================================================================== + +### FUNC 003f6d9c (8 bytes) name=FUN_003f6d9c + +void FUN_003f6d9c(long param_1) + +{ + FUN_003f6cc4(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 003f6da4 (16 bytes) name=FUN_003f6da4 + +void FUN_003f6da4(long *param_1) + +{ + FUN_003f6cc4((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6db4 (224 bytes) name=FUN_003f6db4 + +void FUN_003f6db4(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f8368; + param_1[0xd] = &PTR_FUN_004f83b8; + lVar4 = param_1[0xc]; + /* try { // try from 003f6de8 to 004f6deb has its CatchHandler @ 003f6e00 */ + param_1[2] = &PTR_FUN_004f8390; + param_1[3] = &PTR_FUN_004fda10; + /* catch() { ... } // from try @ 003f6de8 with catch @ 003f6e00 */ + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + /* try { // try from 003f6e10 to 004f6e13 has its CatchHandler @ 003f6ce8 */ + /* catch() { ... } // from try @ 003f6f3c with catch @ 003f6e14 */ + param_1[3] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0xd] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0xd); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003f6e94 (8 bytes) name=FUN_003f6e94 + +void FUN_003f6e94(long param_1) + +{ + FUN_003f6db4(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 003f6e9c (16 bytes) name=FUN_003f6e9c + +void FUN_003f6e9c(long *param_1) + +{ + FUN_003f6db4((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6eac (224 bytes) name=FUN_003f6eac + +void FUN_003f6eac(undefined8 *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *param_1 = &PTR_FUN_004f8518; + param_1[0xd] = &PTR_FUN_004f8568; + lVar4 = param_1[0xc]; + param_1[2] = &PTR_FUN_004f8540; + param_1[3] = &PTR_FUN_004fdc50; + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + /* try { // try from 003f6f14 to 004f6f17 has its CatchHandler @ 003f6f2c */ + param_1[3] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 10); + /* catch() { ... } // from try @ 003f6f14 with catch @ 003f6f2c */ + param_1[0xd] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0xd); + operator_delete(param_1); + /* try { // try from 003f6f3c to 004f6f3f has its CatchHandler @ 003f6e14 */ + /* catch() { ... } // from try @ 003f7068 with catch @ 003f6f40 */ + return; +} + + +================================================================== + +### FUNC 003f6f8c (8 bytes) name=FUN_003f6f8c + +void FUN_003f6f8c(long param_1) + +{ + FUN_003f6eac(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 003f6f94 (16 bytes) name=FUN_003f6f94 + +void FUN_003f6f94(long *param_1) + +{ + FUN_003f6eac((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 003f6fa4 (124 bytes) name=FUN_003f6fa4 + +void FUN_003f6fa4(long *param_1,undefined4 param_2) + +{ + undefined *puVar1; + + puVar1 = PTR_DAT_00501bb0 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar1; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + *param_1 = (long)&PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 8) = param_2; + param_1[9] = (long)(PTR_DAT_00501f30 + 0x18); + return; +} + + +================================================================== + +### FUNC 003f8018 (356 bytes) name=FUN_003f8018 + +long * FUN_003f8018(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + /* try { // try from 003f801c to 004f801f has its CatchHandler @ 003f8034 */ + /* catch() { ... } // from try @ 003f801c with catch @ 003f8034 */ + local_8 = PTR_DAT_00501f30 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x28); + /* try { // try from 003f8044 to 004f8047 has its CatchHandler @ 003f7f20 */ + if (uVar6 == 0) { + FUN_004144f8(param_1,param_2 + 0x48); + return param_1; + /* try { // try from 003f8144 to 004f8147 has its CatchHandler @ 003f815c */ + } + /* catch() { ... } // from try @ 003f816c with catch @ 003f8048 */ + uVar8 = *(ulong *)(param_2 + 0x18); + uVar3 = *(ulong *)(param_2 + 0x20); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar6,auStack_18); + } + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + /* catch() { ... } // from try @ 003f82c0 with catch @ 003f8170 + catch() { ... } // from try @ 003f8330 with catch @ 003f8170 */ + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003f8124; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar8,auStack_18); + } + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003f8124; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003f8124: + if (iVar5 < 1) { + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003f81cc (168 bytes) name=FUN_003f81cc + +void FUN_003f81cc(long param_1,long param_2,long param_3,long param_4) + +{ + uint uVar1; + long lVar2; + long lVar3; + + lVar3 = *(long *)(param_1 + 0x48); + uVar1 = *(uint *)(param_1 + 0x40) >> 3; + lVar2 = param_2 + *(long *)(lVar3 + -0x18); + if (param_2 == lVar3) { + lVar3 = param_2 + *(long *)(lVar3 + -0x10); + } + else { + lVar2 = lVar2 + param_3; + param_3 = 0; + lVar3 = lVar2; + } + if ((uVar1 & 1) != 0) { + *(long *)(param_1 + 8) = param_2; + *(long *)(param_1 + 0x10) = param_2 + param_3; + *(long *)(param_1 + 0x18) = lVar2; + } + if ((*(uint *)(param_1 + 0x40) & 0x10) != 0) { + *(long *)(param_1 + 0x28) = param_2; + *(long *)(param_1 + 0x20) = param_2; + *(long *)(param_1 + 0x30) = lVar3; + for (; 0x7fffffff < param_4; param_4 = param_4 + -0x7fffffff) { + param_2 = param_2 + 0x7fffffff; + /* try { // try from 003f8234 to 004f8237 has its CatchHandler @ 003f82ec */ + } + *(long *)(param_1 + 0x28) = param_2 + (int)param_4; + /* try { // try from 003f8250 to 004f826b has its CatchHandler @ 003f833c */ + if ((uVar1 & 1) == 0) { + *(long *)(param_1 + 8) = lVar2; + *(long *)(param_1 + 0x10) = lVar2; + *(long *)(param_1 + 0x18) = lVar2; + } + } + return; +} + + +================================================================== + +### FUNC 003f8274 (32 bytes) name=FUN_003f8274 + +void FUN_003f8274(long param_1,uint param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 0x40) = param_2; + uVar1 = 0; + if ((param_2 & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x48) + -0x18); + } + FUN_003f81cc(param_1,*(long *)(param_1 + 0x48),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003f8294 (76 bytes) name=FUN_003f8294 + +void FUN_003f8294(long param_1,long *param_2) + +{ + undefined8 uVar1; + + /* try { // try from 003f8298 to 004f829b has its CatchHandler @ 003f82ec */ + /* try { // try from 003f82a0 to 004f82b7 has its CatchHandler @ 003f8334 */ + FUN_00412fdc(param_1 + 0x48,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + /* try { // try from 003f82c0 to 004f82d3 has its CatchHandler @ 003f8170 */ + if ((*(uint *)(param_1 + 0x40) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x48) + -0x18); + } + FUN_003f81cc(param_1,*(long *)(param_1 + 0x48),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003f82e0 (100 bytes) name=FUN_003f82e0 + +long FUN_003f82e0(long param_1,long param_2,long param_3) + +{ + /* catch() { ... } // from try @ 003f8234 with catch @ 003f82ec + catch() { ... } // from try @ 003f8298 with catch @ 003f82ec */ + if ((param_2 != 0) && (-1 < param_3)) { + FUN_00412b08(param_1 + 0x48,0,*(undefined8 *)(*(long *)(param_1 + 0x48) + -0x18),0); + FUN_003f81cc(param_1,param_2,param_3,0); + } + /* try { // try from 003f8330 to 004f8333 has its CatchHandler @ 003f8170 */ + /* catch() { ... } // from try @ 003f82a0 with catch @ 003f8334 */ + /* catch() { ... } // from try @ 003f8250 with catch @ 003f833c */ + return param_1; +} + + +================================================================== + +### FUNC 003f8344 (172 bytes) name=FUN_003f8344 + +void FUN_003f8344(long *param_1,long *param_2,uint param_3) + +{ + undefined *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + /* catch() { ... } // from try @ 003f83e8 with catch @ 003f8360 + catch() { ... } // from try @ 003f8430 with catch @ 003f8360 */ + puVar1 = PTR_DAT_00501bb0 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar1; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + lVar2 = *param_2; + *(undefined4 *)(param_1 + 8) = 0; + uVar3 = *(undefined8 *)(lVar2 + -0x18); + *param_1 = (long)&PTR_FUN_004fda10; + FUN_004108cc(param_1 + 9,lVar2,uVar3,auStack_8); + *(uint *)(param_1 + 8) = param_3; + uVar3 = 0; + /* try { // try from 003f83cc to 004f83df has its CatchHandler @ 003f840c */ + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[9] + -0x18); + } + FUN_003f81cc(param_1,param_1[9],0,uVar3); + /* try { // try from 003f83e8 to 004f83fb has its CatchHandler @ 003f8360 */ + return; +} + + +================================================================== + +### FUNC 003f8410 (508 bytes) name=FUN_003f8410 + +int FUN_003f8410(long param_1,int param_2) + +{ + char cVar1; + bool bVar2; + long lVar3; + ulong uVar4; + int *piVar5; + ulong uVar6; + int iVar7; + undefined1 *puVar8; + undefined *local_8; + + /* try { // try from 003f8430 to 004f8433 has its CatchHandler @ 003f8360 */ + if ((*(uint *)(param_1 + 0x40) >> 4 & 1) == 0) { + return -1; + } + if (param_2 == -1) { + return 0; + } + puVar8 = *(undefined1 **)(param_1 + 0x28); + lVar3 = *(long *)(*(long *)(param_1 + 0x48) + -0x10); + bVar2 = puVar8 < *(undefined1 **)(param_1 + 0x30); + if (bVar2 < (lVar3 == 0x3ffffffffffffff9)) { + return -1; + } + if (bVar2) { + *puVar8 = (char)param_2; + goto LAB_003f8478; + } + uVar4 = lVar3 * 2; + if (uVar4 < 0x200) { + uVar4 = 0x200; +LAB_003f84ac: + /* catch() { ... } // from try @ 003f8500 with catch @ 003f84ac + catch() { ... } // from try @ 003f8650 with catch @ 003f84ac + catch() { ... } // from try @ 003f86d4 with catch @ 003f84ac */ + uVar6 = uVar4; + } + else { + uVar6 = 0x3ffffffffffffff9; + if (uVar4 < 0x3ffffffffffffffa) goto LAB_003f84ac; + } + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,uVar6); + lVar3 = *(long *)(param_1 + 0x20); + if (lVar3 != 0) { + FUN_00412fdc(&local_8,lVar3,*(long *)(param_1 + 0x30) - lVar3); + } + lVar3 = *(long *)(local_8 + -0x18); + uVar4 = lVar3 + 1; + /* try { // try from 003f8500 to 004f8503 has its CatchHandler @ 003f84ac */ + if ((*(ulong *)(local_8 + -0x10) < uVar4) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(&local_8,uVar4); + lVar3 = *(long *)(local_8 + -0x18); + } + local_8[lVar3] = (char)param_2; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar4; + local_8[uVar4] = 0; + } + /* try { // try from 003f8534 to 004f8623 has its CatchHandler @ 003f86c4 */ + FUN_00411a24(param_1 + 0x48,&local_8); + FUN_003f81cc(param_1,*(undefined8 *)(param_1 + 0x48), + *(long *)(param_1 + 0x10) - *(long *)(param_1 + 8), + *(long *)(param_1 + 0x28) - *(long *)(param_1 + 0x20)); + if (local_8 + -0x18 != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar7 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar7 + -1; + } + else { + piVar5 = (int *)(local_8 + -8); + do { + iVar7 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar7 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar7 < 1) { + operator_delete(local_8 + -0x18); + } + } +LAB_003f8478: + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1; + return param_2; +} + + +================================================================== + +### FUNC 003f8634 (44 bytes) name=FUN_003f8634 + +void FUN_003f8634(long param_1) + +{ + ulong uVar1; + + uVar1 = *(ulong *)(param_1 + 0x28); + if ((uVar1 != 0) && (*(ulong *)(param_1 + 0x18) < uVar1)) { + if ((*(uint *)(param_1 + 0x40) >> 3 & 1) == 0) { + /* try { // try from 003f8650 to 004f8653 has its CatchHandler @ 003f84ac */ + *(ulong *)(param_1 + 8) = uVar1; + *(ulong *)(param_1 + 0x10) = uVar1; + } + *(ulong *)(param_1 + 0x18) = uVar1; + } + return; +} + + +================================================================== + +### FUNC 003f8660 (76 bytes) name=FUN_003f8660 + +void FUN_003f8660(long param_1,long param_2,undefined8 param_3,long param_4) + +{ + *(long *)(param_1 + 0x28) = param_2; + *(long *)(param_1 + 0x20) = param_2; + *(undefined8 *)(param_1 + 0x30) = param_3; + for (; 0x7fffffff < param_4; param_4 = param_4 + -0x7fffffff) { + param_2 = param_2 + 0x7fffffff; + } + *(long *)(param_1 + 0x28) = param_2 + (int)param_4; + return; +} + + +================================================================== + +### FUNC 003f86ac (236 bytes) name=FUN_003f86ac + +void FUN_003f86ac(long *param_1,long *param_2,uint param_3) + +{ + long lVar1; + + /* catch() { ... } // from try @ 003f8534 with catch @ 003f86c4 */ + lVar1 = param_2[1]; + /* try { // try from 003f86d4 to 004f86d7 has its CatchHandler @ 003f84ac */ + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[2] = (long)(PTR_DAT_00501bb0 + 0x10); + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + param_1[2] = (long)&PTR_FUN_004fda10; + *(uint *)(param_1 + 10) = param_3 | 8; + lVar1 = *(long *)(*param_1 + -0x18); + param_1[0xb] = (long)(PTR_DAT_00501f30 + 0x18); + FUN_003d2728((long)param_1 + lVar1,param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003f87f0 (268 bytes) name=FUN_003f87f0 + +void FUN_003f87f0(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + + puVar1 = param_1 + 0xc; + FUN_003d347c(puVar1); + param_1[0x27] = 0; + *(undefined1 *)(param_1 + 0x28) = 0; + *(undefined1 *)((long)param_1 + 0x141) = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + *param_1 = &DAT_004fda98; + param_1[1] = 0; + param_1[0xc] = &DAT_004fdac0; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f8258; + param_1[0xc] = &PTR_FUN_004f8280; + puVar2 = PTR_DAT_00501bb0; + param_1[3] = 0; + param_1[4] = 0; + param_1[2] = puVar2 + 0x10; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + param_1[2] = &PTR_FUN_004fda10; + *(uint *)(param_1 + 10) = param_2 | 8; + param_1[0xb] = PTR_DAT_00501f30 + 0x18; + FUN_003d2728(puVar1); + return; +} + + +================================================================== + +### FUNC 003f8960 (292 bytes) name=FUN_003f8960 + +void FUN_003f8960(long *param_1,long *param_2,long *param_3,uint param_4) + +{ + long lVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + lVar1 = param_2[1]; + lVar2 = *(long *)(lVar1 + -0x18); + *param_1 = lVar1; + *(long *)((long)param_1 + lVar2) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[2] = (long)(PTR_DAT_00501bb0 + 0x10); + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + lVar1 = *param_3; + param_1[2] = (long)&PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 10) = 0; + FUN_004108cc(param_1 + 0xb,lVar1,*(undefined8 *)(lVar1 + -0x18),auStack_8); + *(uint *)(param_1 + 10) = param_4 | 8; + uVar3 = 0; + if ((param_4 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xb] + -0x18); + } + FUN_003f81cc(param_1 + 2,param_1[0xb],0,uVar3); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003f8b00 (320 bytes) name=FUN_003f8b00 + +void FUN_003f8b00(undefined8 *param_1,long *param_2,uint param_3) + +{ + undefined8 *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = param_1 + 0xc; + FUN_003d347c(puVar1); + param_1[0x27] = 0; + *(undefined1 *)(param_1 + 0x28) = 0; + *(undefined1 *)((long)param_1 + 0x141) = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + *param_1 = &DAT_004fda98; + param_1[1] = 0; + param_1[0xc] = &DAT_004fdac0; + FUN_003d2728(puVar1,0); + /* catch() { ... } // from try @ 003f8cd8 with catch @ 003f8b80 + catch() { ... } // from try @ 003f8d48 with catch @ 003f8b80 */ + *param_1 = &PTR_FUN_004f8258; + param_1[0xc] = &PTR_FUN_004f8280; + param_1[2] = PTR_DAT_00501bb0 + 0x10; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + lVar2 = *param_2; + param_1[2] = &PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 10) = 0; + FUN_004108cc(param_1 + 0xb,lVar2,*(undefined8 *)(lVar2 + -0x18),auStack_8); + *(uint *)(param_1 + 10) = param_3 | 8; + uVar3 = 0; + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xb] + -0x18); + } + FUN_003f81cc(param_1 + 2,param_1[0xb],0,uVar3); + FUN_003d2728(puVar1,param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003f8cc8 (200 bytes) name=FUN_003f8cc8 + +void FUN_003f8cc8(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + + /* try { // try from 003f8cd8 to 004f8ceb has its CatchHandler @ 003f8b80 */ + lVar4 = *param_2; + *param_1 = lVar4; + lVar5 = param_1[0xb]; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[3]; + param_1[2] = (long)&PTR_FUN_004fda10; + /* catch() { ... } // from try @ 003f8c4c with catch @ 003f8d04 + catch() { ... } // from try @ 003f8cb0 with catch @ 003f8d04 */ + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501f30) { + /* catch() { ... } // from try @ 003f8cb8 with catch @ 003f8d4c */ + /* catch() { ... } // from try @ 003f8c68 with catch @ 003f8d54 */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + /* catch() { ... } // from try @ 003f8e88 with catch @ 003f8d80 + catch() { ... } // from try @ 003f8ed4 with catch @ 003f8d80 */ + iVar3 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar5 + -0x18)); + } + } + param_1[2] = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 9); + lVar4 = param_2[1]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[2]; + /* try { // try from 003f8d48 to 004f8d4b has its CatchHandler @ 003f8b80 */ + return; +} + + +================================================================== + +### FUNC 003f8d90 (8 bytes) name=FUN_003f8d90 + +long FUN_003f8d90(long param_1) + +{ + return param_1 + 0x10; +} + + +================================================================== + +### FUNC 003f8d98 (356 bytes) name=FUN_003f8d98 + +long * FUN_003f8d98(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + local_8 = PTR_DAT_00501f30 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x38); + if (uVar6 == 0) { + FUN_004144f8(param_1,param_2 + 0x58); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x28); + uVar3 = *(ulong *)(param_2 + 0x30); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar6,auStack_18); + } + /* try { // try from 003f8e18 to 004f8e1b has its CatchHandler @ 003f8eb0 */ + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + /* try { // try from 003f8e34 to 004f8e4f has its CatchHandler @ 003f8ed8 */ + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003f8ea4; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar8,auStack_18); + } + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + /* try { // try from 003f8e7c to 004f8e7f has its CatchHandler @ 003f8eb0 */ + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + /* try { // try from 003f8e88 to 004f8e9b has its CatchHandler @ 003f8d80 */ + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003f8ea4; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003f8ea4: + if (iVar5 < 1) { + /* catch() { ... } // from try @ 003f8e18 with catch @ 003f8eb0 + catch() { ... } // from try @ 003f8e7c with catch @ 003f8eb0 */ + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003f8f4c (80 bytes) name=FUN_003f8f4c + +void FUN_003f8f4c(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00412fdc(param_1 + 0x58,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x50) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x58) + -0x18); + } + /* catch() { ... } // from try @ 003f8fc0 with catch @ 003f8f94 + catch() { ... } // from try @ 003f91c4 with catch @ 003f8f94 + catch() { ... } // from try @ 003f9254 with catch @ 003f8f94 */ + FUN_003f81cc(param_1 + 0x10,*(long *)(param_1 + 0x58),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003f8f9c (228 bytes) name=FUN_003f8f9c + +void FUN_003f8f9c(long *param_1,long *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = param_2[1]; + /* try { // try from 003f8fc0 to 004f8fc3 has its CatchHandler @ 003f8f94 */ + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[2]; + FUN_003d2728((long)param_1 + lVar1,0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = (long)(PTR_DAT_00501bb0 + 0x10); + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + param_1[1] = (long)&PTR_FUN_004fda10; + *(uint *)(param_1 + 9) = param_3 | 0x10; + lVar1 = *(long *)(*param_1 + -0x18); + param_1[10] = (long)(PTR_DAT_00501f30 + 0x18); + FUN_003d2728((long)param_1 + lVar1,param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003f90d8 (264 bytes) name=FUN_003f90d8 + +void FUN_003f90d8(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + + puVar1 = param_1 + 0xb; + FUN_003d347c(puVar1); + param_1[0x26] = 0; + *(undefined1 *)(param_1 + 0x27) = 0; + *(undefined1 *)((long)param_1 + 0x139) = 0; + /* try { // try from 003f911c to 004f911f has its CatchHandler @ 003f91f0 */ + param_1[0x28] = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + *param_1 = &DAT_004fdae8; + /* try { // try from 003f9138 to 004f9153 has its CatchHandler @ 003f9268 */ + param_1[0xb] = &DAT_004fdb10; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f82c8; + param_1[0xb] = &PTR_FUN_004f82f0; + puVar2 = PTR_DAT_00501bb0; + param_1[2] = 0; + /* try { // try from 003f9180 to 004f9183 has its CatchHandler @ 003f91f0 */ + param_1[3] = 0; + param_1[1] = puVar2 + 0x10; + /* try { // try from 003f9188 to 004f919f has its CatchHandler @ 003f9260 */ + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + /* try { // try from 003f91a4 to 004f91bb has its CatchHandler @ 003f9258 */ + param_1[1] = &PTR_FUN_004fda10; + *(uint *)(param_1 + 9) = param_2 | 0x10; + param_1[10] = PTR_DAT_00501f30 + 0x18; + /* try { // try from 003f91c4 to 004f91d7 has its CatchHandler @ 003f8f94 */ + FUN_003d2728(puVar1); + return; +} + + +================================================================== + +### FUNC 003f9244 (284 bytes) name=FUN_003f9244 + +void FUN_003f9244(long *param_1,long *param_2,long *param_3,uint param_4) + +{ + long lVar1; + undefined8 uVar2; + undefined1 auStack_8 [8]; + + /* try { // try from 003f9254 to 004f9257 has its CatchHandler @ 003f8f94 */ + /* catch() { ... } // from try @ 003f91a4 with catch @ 003f9258 */ + /* catch() { ... } // from try @ 003f9188 with catch @ 003f9260 */ + lVar1 = param_2[1]; + /* catch() { ... } // from try @ 003f9138 with catch @ 003f9268 */ + *param_1 = lVar1; + /* catch() { ... } // from try @ 003f92ac with catch @ 003f9278 + catch() { ... } // from try @ 003f9448 with catch @ 003f9278 + catch() { ... } // from try @ 003f94e0 with catch @ 003f9278 */ + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[2]; + FUN_003d2728((long)param_1 + lVar1,0); + lVar1 = *param_2; + /* try { // try from 003f92ac to 004f92df has its CatchHandler @ 003f9278 */ + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = (long)(PTR_DAT_00501bb0 + 0x10); + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + lVar1 = *param_3; + param_1[1] = (long)&PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 9) = 0; + FUN_004108cc(param_1 + 10,lVar1,*(undefined8 *)(lVar1 + -0x18),auStack_8); + *(uint *)(param_1 + 9) = param_4 | 0x10; + uVar2 = 0; + if ((param_4 & 3) != 0) { + uVar2 = *(undefined8 *)(param_1[10] + -0x18); + } + FUN_003f81cc(param_1 + 1,param_1[10],0,uVar2); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003f93dc (316 bytes) name=FUN_003f93dc + +void FUN_003f93dc(undefined8 *param_1,long *param_2,uint param_3) + +{ + undefined8 *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = param_1 + 0xb; + /* try { // try from 003f9408 to 004f940b has its CatchHandler @ 003f947c */ + FUN_003d347c(puVar1); + /* try { // try from 003f9410 to 004f9427 has its CatchHandler @ 003f94ec */ + param_1[0x26] = 0; + *(undefined1 *)(param_1 + 0x27) = 0; + *(undefined1 *)((long)param_1 + 0x139) = 0; + param_1[0x28] = 0; + /* try { // try from 003f942c to 004f9443 has its CatchHandler @ 003f94e4 */ + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + *param_1 = &DAT_004fdae8; + /* try { // try from 003f9448 to 004f945f has its CatchHandler @ 003f9278 */ + param_1[0xb] = &DAT_004fdb10; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f82c8; + param_1[0xb] = &PTR_FUN_004f82f0; + /* catch() { ... } // from try @ 003f93a4 with catch @ 003f947c + catch() { ... } // from try @ 003f9408 with catch @ 003f947c */ + param_1[1] = PTR_DAT_00501bb0 + 0x10; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + lVar2 = *param_2; + param_1[1] = &PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 9) = 0; + FUN_004108cc(param_1 + 10,lVar2,*(undefined8 *)(lVar2 + -0x18),auStack_8); + *(uint *)(param_1 + 9) = param_3 | 0x10; + uVar3 = 0; + if ((param_3 & 3) != 0) { + /* try { // try from 003f94e0 to 004f94e3 has its CatchHandler @ 003f9278 */ + uVar3 = *(undefined8 *)(param_1[10] + -0x18); + } + /* catch() { ... } // from try @ 003f942c with catch @ 003f94e4 */ + /* catch() { ... } // from try @ 003f9410 with catch @ 003f94ec */ + FUN_003f81cc(param_1 + 1,param_1[10],0,uVar3); + /* catch() { ... } // from try @ 003f93c0 with catch @ 003f94f4 */ + FUN_003d2728(puVar1,param_1 + 1); + /* catch() { ... } // from try @ 003f9628 with catch @ 003f9504 */ + return; +} + + +================================================================== + +### FUNC 003f95a0 (200 bytes) name=FUN_003f95a0 + +void FUN_003f95a0(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + + lVar4 = *param_2; + *param_1 = lVar4; + lVar5 = param_1[10]; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[3]; + param_1[1] = (long)&PTR_FUN_004fda10; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501f30) { + /* try { // try from 003f9628 to 004f962b has its CatchHandler @ 003f9504 */ + /* catch() { ... } // from try @ 003f974c with catch @ 003f962c */ + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar5 + -0x18)); + } + } + param_1[1] = (long)(PTR_DAT_00501bb0 + 0x10); + /* try { // try from 003f9600 to 004f9603 has its CatchHandler @ 003f9618 */ + FUN_003ed708(param_1 + 8); + lVar4 = param_2[1]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[2]; + /* catch() { ... } // from try @ 003f9600 with catch @ 003f9618 */ + return; +} + + +================================================================== + +### FUNC 003f9668 (8 bytes) name=FUN_003f9668 + +long FUN_003f9668(long param_1) + +{ + return param_1 + 8; +} + + +================================================================== + +### FUNC 003f9670 (356 bytes) name=FUN_003f9670 + +long * FUN_003f9670(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + local_8 = PTR_DAT_00501f30 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x30); + if (uVar6 == 0) { + FUN_004144f8(param_1,param_2 + 0x50); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x20); + uVar3 = *(ulong *)(param_2 + 0x28); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar6,auStack_18); + } + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + /* try { // try from 003f97c8 to 004f97cb has its CatchHandler @ 003f992c */ + /* try { // try from 003f97d0 to 004f98d7 has its CatchHandler @ 003f9974 */ + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003f977c; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar8,auStack_18); + } + /* catch() { ... } // from try @ 003f9724 with catch @ 003f973c */ + FUN_004144f8(param_1,&local_8); + /* try { // try from 003f974c to 004f974f has its CatchHandler @ 003f962c */ + /* catch() { ... } // from try @ 003f995c with catch @ 003f9750 */ + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003f977c; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003f977c: + if (iVar5 < 1) { + /* try { // try from 003f9784 to 004f97b3 has its CatchHandler @ 003f9974 */ + operator_delete(puVar4); + } + /* try { // try from 003f9724 to 004f9727 has its CatchHandler @ 003f973c */ + return param_1; +} + + +================================================================== + +### FUNC 003f9824 (80 bytes) name=FUN_003f9824 + +void FUN_003f9824(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00412fdc(param_1 + 0x50,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x48) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x50) + -0x18); + } + FUN_003f81cc(param_1 + 8,*(long *)(param_1 + 0x50),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003f9874 (300 bytes) name=FUN_003f9874 + +void FUN_003f9874(long *param_1,long *param_2,undefined4 param_3) + +{ + undefined *puVar1; + long lVar2; + + lVar2 = param_2[2]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = param_2[4]; + param_1[2] = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2 + 0x10) = param_2[5]; + FUN_003d2728((long)param_1 + lVar2 + 0x10,0); + lVar2 = param_2[1]; + /* try { // try from 003f98ec to 004f98ef has its CatchHandler @ 003f9960 */ + *param_1 = lVar2; + /* try { // try from 003f98f4 to 004f9927 has its CatchHandler @ 003f9974 */ + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[8]; + /* catch() { ... } // from try @ 003f97c8 with catch @ 003f992c */ + param_1[2] = param_2[9]; + puVar1 = PTR_DAT_00501bb0; + param_1[4] = 0; + param_1[5] = 0; + param_1[3] = (long)(puVar1 + 0x10); + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + /* try { // try from 003f995c to 004f995f has its CatchHandler @ 003f9750 */ + *(undefined4 *)(param_1 + 0xb) = param_3; + /* catch() { ... } // from try @ 003f98ec with catch @ 003f9960 */ + param_1[3] = (long)&PTR_FUN_004fda10; + lVar2 = *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 003f9784 with catch @ 003f9974 + catch() { ... } // from try @ 003f97d0 with catch @ 003f9974 + catch() { ... } // from try @ 003f98f4 with catch @ 003f9974 */ + /* catch() { ... } // from try @ 003f9ab0 with catch @ 003f997c */ + param_1[0xc] = (long)(PTR_DAT_00501f30 + 0x18); + FUN_003d2728((long)param_1 + lVar2,param_1 + 3); + return; +} + + +================================================================== + +### FUNC 003f9a08 (312 bytes) name=FUN_003f9a08 + +void FUN_003f9a08(undefined8 *param_1,undefined4 param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + + puVar1 = param_1 + 0xd; + FUN_003d347c(puVar1); + param_1[0x28] = 0; + *(undefined1 *)(param_1 + 0x29) = 0; + *(undefined1 *)((long)param_1 + 0x149) = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + *param_1 = &DAT_004fdb88; + param_1[1] = 0; + param_1[0xd] = &DAT_004fdbb0; + FUN_003d2728(puVar1,0); + /* try { // try from 003f9a88 to 004f9a8b has its CatchHandler @ 003f9aa0 */ + param_1[2] = &DAT_004fdb38; + param_1[0xd] = &DAT_004fdb60; + FUN_003d2728(puVar1,0); + /* catch() { ... } // from try @ 003f9a88 with catch @ 003f9aa0 */ + *param_1 = &PTR_FUN_004f8368; + /* try { // try from 003f9ab0 to 004f9ab3 has its CatchHandler @ 003f997c */ + /* catch() { ... } // from try @ 003f9bf4 with catch @ 003f9ab4 */ + param_1[0xd] = &PTR_FUN_004f83b8; + param_1[2] = &PTR_FUN_004f8390; + puVar2 = PTR_DAT_00501bb0; + param_1[4] = 0; + param_1[5] = 0; + param_1[3] = puVar2 + 0x10; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + param_1[3] = &PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 0xb) = param_2; + param_1[0xc] = PTR_DAT_00501f30 + 0x18; + FUN_003d2728(puVar1); + return; +} + + +================================================================== + +### FUNC 003f9bb4 (356 bytes) name=FUN_003f9bb4 + +void FUN_003f9bb4(long *param_1,long *param_2,long *param_3,uint param_4) + +{ + long lVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + /* try { // try from 003f9bcc to 004f9bcf has its CatchHandler @ 003f9be4 */ + lVar1 = param_2[2]; + /* catch() { ... } // from try @ 003f9bcc with catch @ 003f9be4 */ + lVar2 = *(long *)(lVar1 + -0x18); + *param_1 = lVar1; + /* try { // try from 003f9bf4 to 004f9bf7 has its CatchHandler @ 003f9ab4 */ + *(long *)((long)param_1 + lVar2) = param_2[3]; + /* catch() { ... } // from try @ 003f9d2c with catch @ 003f9bf8 */ + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = param_2[4]; + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[5]; + FUN_003d2728((long)param_1 + lVar1 + 0x10,0); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + param_1[3] = (long)(PTR_DAT_00501bb0 + 0x10); + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + lVar1 = *param_3; + param_1[3] = (long)&PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 0xb) = 0; + FUN_004108cc(param_1 + 0xc,lVar1,*(undefined8 *)(lVar1 + -0x18),auStack_8); + *(uint *)(param_1 + 0xb) = param_4; + uVar3 = 0; + if ((param_4 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xc] + -0x18); + } + FUN_003f81cc(param_1 + 3,param_1[0xc],0,uVar3); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 3); + /* try { // try from 003f9d04 to 004f9d07 has its CatchHandler @ 003f9d1c */ + return; +} + + +================================================================== + +### FUNC 003f9da4 (364 bytes) name=FUN_003f9da4 + +void FUN_003f9da4(undefined8 *param_1,long *param_2,uint param_3) + +{ + undefined8 *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = param_1 + 0xd; + FUN_003d347c(puVar1); + param_1[0x28] = 0; + *(undefined1 *)(param_1 + 0x29) = 0; + *(undefined1 *)((long)param_1 + 0x149) = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + *param_1 = &DAT_004fdb88; + param_1[1] = 0; + param_1[0xd] = &DAT_004fdbb0; + FUN_003d2728(puVar1,0); + param_1[2] = &DAT_004fdb38; + param_1[0xd] = &DAT_004fdb60; + /* try { // try from 003f9e3c to 004f9e3f has its CatchHandler @ 003f9e54 */ + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f8368; + /* catch() { ... } // from try @ 003f9e3c with catch @ 003f9e54 */ + param_1[0xd] = &PTR_FUN_004f83b8; + /* try { // try from 003f9e64 to 004f9e67 has its CatchHandler @ 003f9d30 */ + /* catch() { ... } // from try @ 003f9fa8 with catch @ 003f9e68 */ + param_1[2] = &PTR_FUN_004f8390; + param_1[3] = PTR_DAT_00501bb0 + 0x10; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + lVar2 = *param_2; + param_1[3] = &PTR_FUN_004fda10; + *(undefined4 *)(param_1 + 0xb) = 0; + FUN_004108cc(param_1 + 0xc,lVar2,*(undefined8 *)(lVar2 + -0x18),auStack_8); + *(uint *)(param_1 + 0xb) = param_3; + uVar3 = 0; + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xc] + -0x18); + } + FUN_003f81cc(param_1 + 3,param_1[0xc],0,uVar3); + FUN_003d2728(puVar1,param_1 + 3); + return; +} + + +================================================================== + +### FUNC 003f9fac (260 bytes) name=FUN_003f9fac + +void FUN_003f9fac(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + + /* catch() { ... } // from try @ 003fa0e0 with catch @ 003f9fac */ + lVar4 = *param_2; + *param_1 = lVar4; + lVar5 = param_1[0xc]; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + param_1[3] = (long)&PTR_FUN_004fda10; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar5 + -0x18)); + } + } + param_1[3] = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 10); + lVar4 = param_2[1]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar4 = param_2[4]; + param_1[2] = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18) + 0x10) = param_2[5]; + lVar4 = param_2[2]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[3]; + return; +} + + +================================================================== + +### FUNC 003fa0b0 (8 bytes) name=FUN_003fa0b0 + +long FUN_003fa0b0(long param_1) + +{ + return param_1 + 0x18; +} + + +================================================================== + +### FUNC 003fa0b8 (356 bytes) name=FUN_003fa0b8 + +long * FUN_003fa0b8(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + /* try { // try from 003fa0b8 to 004fa0bb has its CatchHandler @ 003fa0d0 */ + /* catch() { ... } // from try @ 003fa0b8 with catch @ 003fa0d0 */ + local_8 = PTR_DAT_00501f30 + 0x18; + *param_1 = (long)local_8; + /* try { // try from 003fa0e0 to 004fa0e3 has its CatchHandler @ 003f9fac */ + uVar6 = *(ulong *)(param_2 + 0x40); + /* catch() { ... } // from try @ 003fa218 with catch @ 003fa0e4 */ + if (uVar6 == 0) { + FUN_004144f8(param_1,param_2 + 0x60); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x30); + uVar3 = *(ulong *)(param_2 + 0x38); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar6,auStack_18); + } + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + /* try { // try from 003fa218 to 004fa21b has its CatchHandler @ 003fa0e4 */ + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + /* catch() { ... } // from try @ 003fa35c with catch @ 003fa21c */ + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fa1c4; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f60f8(uVar3,uVar8,auStack_18); + } + FUN_004144f8(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501f30) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fa1c4; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003fa1c4: + if (iVar5 < 1) { + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003fa26c (80 bytes) name=FUN_003fa26c + +void FUN_003fa26c(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00412fdc(param_1 + 0x60,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x58) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x60) + -0x18); + } + FUN_003f81cc(param_1 + 0x18,*(long *)(param_1 + 0x60),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003fa2bc (116 bytes) name=FUN_003fa2bc + +void FUN_003fa2bc(long *param_1,undefined4 param_2) + +{ + undefined *puVar1; + + puVar1 = PTR_DAT_00501c78 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar1; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + *param_1 = (long)&PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 8) = param_2; + param_1[9] = (long)(PTR_DAT_00501ab8 + 0x18); + return; +} + + +================================================================== + +### FUNC 003fa330 (356 bytes) name=FUN_003fa330 + +long * FUN_003fa330(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + /* try { // try from 003fa334 to 004fa337 has its CatchHandler @ 003fa34c */ + /* catch() { ... } // from try @ 003fa334 with catch @ 003fa34c */ + local_8 = PTR_DAT_00501ab8 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x28); + /* try { // try from 003fa35c to 004fa35f has its CatchHandler @ 003fa21c */ + if (uVar6 == 0) { + FUN_00418ce4(param_1,param_2 + 0x48); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x18); + uVar3 = *(ulong *)(param_2 + 0x20); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar6,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fa43c; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar8,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fa43c; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003fa43c: + if (iVar5 < 1) { + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003fa4e4 (172 bytes) name=FUN_003fa4e4 + +void FUN_003fa4e4(long param_1,long param_2,long param_3,long param_4) + +{ + uint uVar1; + long lVar2; + long lVar3; + + lVar3 = *(long *)(param_1 + 0x48); + uVar1 = *(uint *)(param_1 + 0x40) >> 3; + lVar2 = param_2 + *(long *)(lVar3 + -0x18) * 4; + if (param_2 == lVar3) { + lVar3 = param_2 + *(long *)(lVar3 + -0x10) * 4; + } + else { + lVar2 = lVar2 + param_3 * 4; + param_3 = 0; + lVar3 = lVar2; + } + if ((uVar1 & 1) != 0) { + *(long *)(param_1 + 8) = param_2; + *(long *)(param_1 + 0x10) = param_2 + param_3 * 4; + *(long *)(param_1 + 0x18) = lVar2; + } + if ((*(uint *)(param_1 + 0x40) & 0x10) != 0) { + *(long *)(param_1 + 0x28) = param_2; + *(long *)(param_1 + 0x20) = param_2; + *(long *)(param_1 + 0x30) = lVar3; + for (; 0x7fffffff < param_4; param_4 = param_4 + -0x7fffffff) { + param_2 = param_2 + 0x1fffffffc; + } + *(long *)(param_1 + 0x28) = param_2 + (long)(int)param_4 * 4; + if ((uVar1 & 1) == 0) { + *(long *)(param_1 + 8) = lVar2; + *(long *)(param_1 + 0x10) = lVar2; + *(long *)(param_1 + 0x18) = lVar2; + } + } + return; +} + + +================================================================== + +### FUNC 003fa590 (32 bytes) name=FUN_003fa590 + +void FUN_003fa590(long param_1,uint param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 0x40) = param_2; + uVar1 = 0; + if ((param_2 & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x48) + -0x18); + } + FUN_003fa4e4(param_1,*(long *)(param_1 + 0x48),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003fa5b0 (76 bytes) name=FUN_003fa5b0 + +void FUN_003fa5b0(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00416a24(param_1 + 0x48,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x40) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x48) + -0x18); + } + FUN_003fa4e4(param_1,*(long *)(param_1 + 0x48),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003fa5fc (100 bytes) name=FUN_003fa5fc + +long FUN_003fa5fc(long param_1,long param_2,long param_3) + +{ + if ((param_2 != 0) && (-1 < param_3)) { + FUN_00416540(param_1 + 0x48,0,*(undefined8 *)(*(long *)(param_1 + 0x48) + -0x18),0); + FUN_003fa4e4(param_1,param_2,param_3,0); + } + return param_1; +} + + +================================================================== + +### FUNC 003fa660 (172 bytes) name=FUN_003fa660 + +void FUN_003fa660(long *param_1,long *param_2,uint param_3) + +{ + undefined *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = PTR_DAT_00501c78 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar1; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + lVar2 = *param_2; + *(undefined4 *)(param_1 + 8) = 0; + uVar3 = *(undefined8 *)(lVar2 + -0x18); + *param_1 = (long)&PTR_FUN_004fdc50; + FUN_00417e14(param_1 + 9,lVar2,uVar3,auStack_8); + *(uint *)(param_1 + 8) = param_3; + uVar3 = 0; + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[9] + -0x18); + } + FUN_003fa4e4(param_1,param_1[9],0,uVar3); + return; +} + + +================================================================== + +### FUNC 003fa72c (504 bytes) name=FUN_003fa72c + +int FUN_003fa72c(long param_1,int param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + int iVar4; + int *piVar5; + long lVar6; + ulong uVar7; + undefined *local_8; + + if ((*(uint *)(param_1 + 0x40) >> 4 & 1) == 0) { + return -1; + } + if (param_2 == -1) { + return 0; + } + piVar5 = *(int **)(param_1 + 0x28); + lVar6 = *(long *)(*(long *)(param_1 + 0x48) + -0x10); + bVar2 = piVar5 < *(int **)(param_1 + 0x30); + if (bVar2 < (lVar6 == 0xffffffffffffffe)) { + return -1; + } + if (bVar2) { + *piVar5 = param_2; + goto LAB_003fa78c; + } + uVar7 = lVar6 * 2; + if (uVar7 < 0x200) { + uVar7 = 0x200; +LAB_003fa7bc: + uVar3 = uVar7; + } + else { + uVar3 = 0xffffffffffffffe; + if (uVar7 < 0xfffffffffffffff) goto LAB_003fa7bc; + } + local_8 = PTR_DAT_00501ab8 + 0x18; + FUN_00418208(&local_8,uVar3); + lVar6 = *(long *)(param_1 + 0x20); + if (lVar6 != 0) { + FUN_00416a24(&local_8,lVar6,*(long *)(param_1 + 0x30) - lVar6 >> 2); + } + lVar6 = *(long *)(local_8 + -0x18); + uVar7 = lVar6 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar7) || (0 < *(int *)(local_8 + -8))) { + FUN_00418208(&local_8,uVar7); + lVar6 = *(long *)(local_8 + -0x18); + } + *(int *)(local_8 + lVar6 * 4) = param_2; + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar7; + *(undefined4 *)(local_8 + uVar7 * 4) = 0; + } + FUN_00415584(param_1 + 0x48,&local_8); + FUN_003fa4e4(param_1,*(undefined8 *)(param_1 + 0x48), + *(long *)(param_1 + 0x10) - *(long *)(param_1 + 8) >> 2, + *(long *)(param_1 + 0x28) - *(long *)(param_1 + 0x20) >> 2); + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar4 + -1; + } + else { + piVar5 = (int *)(local_8 + -8); + do { + iVar4 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete(local_8 + -0x18); + piVar5 = *(int **)(param_1 + 0x28); + goto LAB_003fa78c; + } + } + piVar5 = *(int **)(param_1 + 0x28); +LAB_003fa78c: + *(int **)(param_1 + 0x28) = piVar5 + 1; + return param_2; +} + + +================================================================== + +### FUNC 003fa94c (44 bytes) name=FUN_003fa94c + +void FUN_003fa94c(long param_1) + +{ + ulong uVar1; + + uVar1 = *(ulong *)(param_1 + 0x28); + if ((uVar1 != 0) && (*(ulong *)(param_1 + 0x18) < uVar1)) { + if ((*(uint *)(param_1 + 0x40) >> 3 & 1) == 0) { + *(ulong *)(param_1 + 8) = uVar1; + *(ulong *)(param_1 + 0x10) = uVar1; + } + *(ulong *)(param_1 + 0x18) = uVar1; + } + return; +} + + +================================================================== + +### FUNC 003fa978 (64 bytes) name=FUN_003fa978 + +void FUN_003fa978(long param_1,long param_2,undefined8 param_3,long param_4) + +{ + *(long *)(param_1 + 0x28) = param_2; + *(long *)(param_1 + 0x20) = param_2; + *(undefined8 *)(param_1 + 0x30) = param_3; + for (; 0x7fffffff < param_4; param_4 = param_4 + -0x7fffffff) { + param_2 = param_2 + 0x1fffffffc; + } + *(long *)(param_1 + 0x28) = param_2 + (long)(int)param_4 * 4; + return; +} + + +================================================================== + +### FUNC 003fa9b8 (236 bytes) name=FUN_003fa9b8 + +void FUN_003fa9b8(long *param_1,long *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[2] = (long)(PTR_DAT_00501c78 + 0x10); + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + param_1[2] = (long)&PTR_FUN_004fdc50; + *(uint *)(param_1 + 10) = param_3 | 8; + lVar1 = *(long *)(*param_1 + -0x18); + param_1[0xb] = (long)(PTR_DAT_00501ab8 + 0x18); + FUN_003d3008((long)param_1 + lVar1,param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003faafc (268 bytes) name=FUN_003faafc + +void FUN_003faafc(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + + puVar1 = param_1 + 0xc; + FUN_003d347c(puVar1); + param_1[0x27] = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined1 *)((long)param_1 + 0x144) = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + *param_1 = &DAT_004fdcd8; + param_1[1] = 0; + param_1[0xc] = &DAT_004fdd00; + FUN_003d3008(puVar1,0); + *param_1 = &LAB_004f8408; + param_1[0xc] = &PTR_FUN_004f8430; + puVar2 = PTR_DAT_00501c78; + param_1[3] = 0; + param_1[4] = 0; + param_1[2] = puVar2 + 0x10; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + param_1[2] = &PTR_FUN_004fdc50; + *(uint *)(param_1 + 10) = param_2 | 8; + param_1[0xb] = PTR_DAT_00501ab8 + 0x18; + FUN_003d3008(puVar1); + return; +} + + +================================================================== + +### FUNC 003fac6c (292 bytes) name=FUN_003fac6c + +void FUN_003fac6c(long *param_1,long *param_2,long *param_3,uint param_4) + +{ + long lVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + lVar1 = param_2[1]; + lVar2 = *(long *)(lVar1 + -0x18); + *param_1 = lVar1; + *(long *)((long)param_1 + lVar2) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[2] = (long)(PTR_DAT_00501c78 + 0x10); + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + lVar1 = *param_3; + param_1[2] = (long)&PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 10) = 0; + FUN_00417e14(param_1 + 0xb,lVar1,*(undefined8 *)(lVar1 + -0x18),auStack_8); + *(uint *)(param_1 + 10) = param_4 | 8; + uVar3 = 0; + if ((param_4 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xb] + -0x18); + } + FUN_003fa4e4(param_1 + 2,param_1[0xb],0,uVar3); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003fae0c (320 bytes) name=FUN_003fae0c + +void FUN_003fae0c(undefined8 *param_1,long *param_2,uint param_3) + +{ + undefined8 *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = param_1 + 0xc; + FUN_003d347c(puVar1); + param_1[0x27] = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined1 *)((long)param_1 + 0x144) = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + *param_1 = &DAT_004fdcd8; + param_1[1] = 0; + param_1[0xc] = &DAT_004fdd00; + FUN_003d3008(puVar1,0); + *param_1 = &LAB_004f8408; + param_1[0xc] = &PTR_FUN_004f8430; + param_1[2] = PTR_DAT_00501c78 + 0x10; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_003ef168(param_1 + 9); + lVar2 = *param_2; + param_1[2] = &PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 10) = 0; + FUN_00417e14(param_1 + 0xb,lVar2,*(undefined8 *)(lVar2 + -0x18),auStack_8); + *(uint *)(param_1 + 10) = param_3 | 8; + uVar3 = 0; + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xb] + -0x18); + } + FUN_003fa4e4(param_1 + 2,param_1[0xb],0,uVar3); + FUN_003d3008(puVar1,param_1 + 2); + return; +} + + +================================================================== + +### FUNC 003fafd4 (200 bytes) name=FUN_003fafd4 + +void FUN_003fafd4(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + + lVar4 = *param_2; + *param_1 = lVar4; + lVar5 = param_1[0xb]; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[3]; + param_1[2] = (long)&PTR_FUN_004fdc50; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar5 + -0x18)); + } + } + param_1[2] = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 9); + lVar4 = param_2[1]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[2]; + return; +} + + +================================================================== + +### FUNC 003fb09c (8 bytes) name=FUN_003fb09c + +long FUN_003fb09c(long param_1) + +{ + return param_1 + 0x10; +} + + +================================================================== + +### FUNC 003fb0a4 (356 bytes) name=FUN_003fb0a4 + +long * FUN_003fb0a4(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + local_8 = PTR_DAT_00501ab8 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x38); + if (uVar6 == 0) { + FUN_00418ce4(param_1,param_2 + 0x58); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x28); + uVar3 = *(ulong *)(param_2 + 0x30); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar6,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fb1b0; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar8,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fb1b0; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003fb1b0: + if (iVar5 < 1) { + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003fb258 (80 bytes) name=FUN_003fb258 + +void FUN_003fb258(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00416a24(param_1 + 0x58,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x50) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x58) + -0x18); + } + FUN_003fa4e4(param_1 + 0x10,*(long *)(param_1 + 0x58),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003fb2a8 (228 bytes) name=FUN_003fb2a8 + +void FUN_003fb2a8(long *param_1,long *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[2]; + FUN_003d3008((long)param_1 + lVar1,0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = (long)(PTR_DAT_00501c78 + 0x10); + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + param_1[1] = (long)&PTR_FUN_004fdc50; + *(uint *)(param_1 + 9) = param_3 | 0x10; + lVar1 = *(long *)(*param_1 + -0x18); + param_1[10] = (long)(PTR_DAT_00501ab8 + 0x18); + FUN_003d3008((long)param_1 + lVar1,param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003fb3e4 (264 bytes) name=FUN_003fb3e4 + +void FUN_003fb3e4(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + + puVar1 = param_1 + 0xb; + FUN_003d347c(puVar1); + param_1[0x26] = 0; + *(undefined4 *)(param_1 + 0x27) = 0; + *(undefined1 *)((long)param_1 + 0x13c) = 0; + param_1[0x28] = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + *param_1 = &DAT_004fdd28; + param_1[0xb] = &DAT_004fdd50; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f8478; + param_1[0xb] = &PTR_FUN_004f84a0; + puVar2 = PTR_DAT_00501c78; + param_1[2] = 0; + param_1[3] = 0; + param_1[1] = puVar2 + 0x10; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + param_1[1] = &PTR_FUN_004fdc50; + *(uint *)(param_1 + 9) = param_2 | 0x10; + param_1[10] = PTR_DAT_00501ab8 + 0x18; + FUN_003d3008(puVar1); + return; +} + + +================================================================== + +### FUNC 003fb550 (284 bytes) name=FUN_003fb550 + +void FUN_003fb550(long *param_1,long *param_2,long *param_3,uint param_4) + +{ + long lVar1; + undefined8 uVar2; + undefined1 auStack_8 [8]; + + lVar1 = param_2[1]; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[2]; + FUN_003d3008((long)param_1 + lVar1,0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = (long)(PTR_DAT_00501c78 + 0x10); + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + lVar1 = *param_3; + param_1[1] = (long)&PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 9) = 0; + FUN_00417e14(param_1 + 10,lVar1,*(undefined8 *)(lVar1 + -0x18),auStack_8); + *(uint *)(param_1 + 9) = param_4 | 0x10; + uVar2 = 0; + if ((param_4 & 3) != 0) { + uVar2 = *(undefined8 *)(param_1[10] + -0x18); + } + FUN_003fa4e4(param_1 + 1,param_1[10],0,uVar2); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003fb6e8 (316 bytes) name=FUN_003fb6e8 + +void FUN_003fb6e8(undefined8 *param_1,long *param_2,uint param_3) + +{ + undefined8 *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = param_1 + 0xb; + FUN_003d347c(puVar1); + param_1[0x26] = 0; + *(undefined4 *)(param_1 + 0x27) = 0; + *(undefined1 *)((long)param_1 + 0x13c) = 0; + param_1[0x28] = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + *param_1 = &DAT_004fdd28; + param_1[0xb] = &DAT_004fdd50; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f8478; + param_1[0xb] = &PTR_FUN_004f84a0; + param_1[1] = PTR_DAT_00501c78 + 0x10; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_003ef168(param_1 + 8); + lVar2 = *param_2; + param_1[1] = &PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 9) = 0; + FUN_00417e14(param_1 + 10,lVar2,*(undefined8 *)(lVar2 + -0x18),auStack_8); + *(uint *)(param_1 + 9) = param_3 | 0x10; + uVar3 = 0; + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[10] + -0x18); + } + FUN_003fa4e4(param_1 + 1,param_1[10],0,uVar3); + FUN_003d3008(puVar1,param_1 + 1); + return; +} + + +================================================================== + +### FUNC 003fb8ac (200 bytes) name=FUN_003fb8ac + +void FUN_003fb8ac(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + + lVar4 = *param_2; + *param_1 = lVar4; + lVar5 = param_1[10]; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[3]; + param_1[1] = (long)&PTR_FUN_004fdc50; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar5 + -0x18)); + } + } + param_1[1] = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 8); + lVar4 = param_2[1]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[2]; + return; +} + + +================================================================== + +### FUNC 003fb974 (8 bytes) name=FUN_003fb974 + +long FUN_003fb974(long param_1) + +{ + return param_1 + 8; +} + + +================================================================== + +### FUNC 003fb97c (356 bytes) name=FUN_003fb97c + +long * FUN_003fb97c(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + local_8 = PTR_DAT_00501ab8 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x30); + if (uVar6 == 0) { + FUN_00418ce4(param_1,param_2 + 0x50); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x20); + uVar3 = *(ulong *)(param_2 + 0x28); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar6,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fba88; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar8,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fba88; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003fba88: + if (iVar5 < 1) { + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003fbb30 (80 bytes) name=FUN_003fbb30 + +void FUN_003fbb30(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00416a24(param_1 + 0x50,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x48) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x50) + -0x18); + } + FUN_003fa4e4(param_1 + 8,*(long *)(param_1 + 0x50),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003fbb80 (300 bytes) name=FUN_003fbb80 + +void FUN_003fbb80(long *param_1,long *param_2,undefined4 param_3) + +{ + undefined *puVar1; + long lVar2; + + lVar2 = param_2[2]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = param_2[4]; + param_1[2] = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2 + 0x10) = param_2[5]; + FUN_003d3008((long)param_1 + lVar2 + 0x10,0); + lVar2 = param_2[1]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + puVar1 = PTR_DAT_00501c78; + param_1[4] = 0; + param_1[5] = 0; + param_1[3] = (long)(puVar1 + 0x10); + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + *(undefined4 *)(param_1 + 0xb) = param_3; + param_1[3] = (long)&PTR_FUN_004fdc50; + lVar2 = *(long *)(*param_1 + -0x18); + param_1[0xc] = (long)(PTR_DAT_00501ab8 + 0x18); + FUN_003d3008((long)param_1 + lVar2,param_1 + 3); + return; +} + + +================================================================== + +### FUNC 003fbd14 (312 bytes) name=FUN_003fbd14 + +void FUN_003fbd14(undefined8 *param_1,undefined4 param_2) + +{ + undefined8 *puVar1; + undefined *puVar2; + + puVar1 = param_1 + 0xd; + FUN_003d347c(puVar1); + param_1[0x28] = 0; + *(undefined4 *)(param_1 + 0x29) = 0; + *(undefined1 *)((long)param_1 + 0x14c) = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + *param_1 = &DAT_004fddc8; + param_1[1] = 0; + param_1[0xd] = &DAT_004fddf0; + FUN_003d3008(puVar1,0); + param_1[2] = &DAT_004fdd78; + param_1[0xd] = &DAT_004fdda0; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f8518; + param_1[0xd] = &PTR_FUN_004f8568; + param_1[2] = &PTR_FUN_004f8540; + puVar2 = PTR_DAT_00501c78; + param_1[4] = 0; + param_1[5] = 0; + param_1[3] = puVar2 + 0x10; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + param_1[3] = &PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 0xb) = param_2; + param_1[0xc] = PTR_DAT_00501ab8 + 0x18; + FUN_003d3008(puVar1); + return; +} + + +================================================================== + +### FUNC 003fbec0 (356 bytes) name=FUN_003fbec0 + +void FUN_003fbec0(long *param_1,long *param_2,long *param_3,uint param_4) + +{ + long lVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + lVar1 = param_2[2]; + lVar2 = *(long *)(lVar1 + -0x18); + *param_1 = lVar1; + *(long *)((long)param_1 + lVar2) = param_2[3]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = param_2[4]; + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[5]; + FUN_003d3008((long)param_1 + lVar1 + 0x10,0); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + param_1[3] = (long)(PTR_DAT_00501c78 + 0x10); + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + lVar1 = *param_3; + param_1[3] = (long)&PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 0xb) = 0; + FUN_00417e14(param_1 + 0xc,lVar1,*(undefined8 *)(lVar1 + -0x18),auStack_8); + *(uint *)(param_1 + 0xb) = param_4; + uVar3 = 0; + if ((param_4 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xc] + -0x18); + } + FUN_003fa4e4(param_1 + 3,param_1[0xc],0,uVar3); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 3); + return; +} + + +================================================================== + +### FUNC 003fc0b0 (364 bytes) name=FUN_003fc0b0 + +void FUN_003fc0b0(undefined8 *param_1,long *param_2,uint param_3) + +{ + undefined8 *puVar1; + long lVar2; + undefined8 uVar3; + undefined1 auStack_8 [8]; + + puVar1 = param_1 + 0xd; + FUN_003d347c(puVar1); + param_1[0x28] = 0; + *(undefined4 *)(param_1 + 0x29) = 0; + *(undefined1 *)((long)param_1 + 0x14c) = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + *param_1 = &DAT_004fddc8; + param_1[1] = 0; + param_1[0xd] = &DAT_004fddf0; + FUN_003d3008(puVar1,0); + param_1[2] = &DAT_004fdd78; + param_1[0xd] = &DAT_004fdda0; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f8518; + param_1[0xd] = &PTR_FUN_004f8568; + param_1[2] = &PTR_FUN_004f8540; + param_1[3] = PTR_DAT_00501c78 + 0x10; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + FUN_003ef168(param_1 + 10); + lVar2 = *param_2; + param_1[3] = &PTR_FUN_004fdc50; + *(undefined4 *)(param_1 + 0xb) = 0; + FUN_00417e14(param_1 + 0xc,lVar2,*(undefined8 *)(lVar2 + -0x18),auStack_8); + *(uint *)(param_1 + 0xb) = param_3; + uVar3 = 0; + if ((param_3 & 3) != 0) { + uVar3 = *(undefined8 *)(param_1[0xc] + -0x18); + } + FUN_003fa4e4(param_1 + 3,param_1[0xc],0,uVar3); + FUN_003d3008(puVar1,param_1 + 3); + return; +} + + +================================================================== + +### FUNC 003fc2b8 (260 bytes) name=FUN_003fc2b8 + +void FUN_003fc2b8(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + + lVar4 = *param_2; + *param_1 = lVar4; + lVar5 = param_1[0xc]; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + param_1[3] = (long)&PTR_FUN_004fdc50; + if ((undefined *)(lVar5 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar5 + -0x18)); + } + } + param_1[3] = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 10); + lVar4 = param_2[1]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar4 = param_2[4]; + param_1[2] = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18) + 0x10) = param_2[5]; + lVar4 = param_2[2]; + *param_1 = lVar4; + *(long *)((long)param_1 + *(long *)(lVar4 + -0x18)) = param_2[3]; + return; +} + + +================================================================== + +### FUNC 003fc3bc (8 bytes) name=FUN_003fc3bc + +long FUN_003fc3bc(long param_1) + +{ + return param_1 + 0x18; +} + + +================================================================== + +### FUNC 003fc3c4 (356 bytes) name=FUN_003fc3c4 + +long * FUN_003fc3c4(long *param_1,long param_2) + +{ + char cVar1; + bool bVar2; + ulong uVar3; + undefined *puVar4; + int iVar5; + ulong uVar6; + int *piVar7; + ulong uVar8; + undefined1 auStack_18 [16]; + undefined *local_8; + + local_8 = PTR_DAT_00501ab8 + 0x18; + *param_1 = (long)local_8; + uVar6 = *(ulong *)(param_2 + 0x40); + if (uVar6 == 0) { + FUN_00418ce4(param_1,param_2 + 0x60); + return param_1; + } + uVar8 = *(ulong *)(param_2 + 0x30); + uVar3 = *(ulong *)(param_2 + 0x38); + if (uVar8 < uVar6) { + if (uVar6 != uVar3) { + if (uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar6,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fc4d0; + } + } + else { + if (uVar8 != uVar3) { + if ((uVar3 == 0) && (uVar8 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + local_8 = (undefined *)FUN_003f61a0(uVar3,uVar8,auStack_18); + } + FUN_00418ce4(param_1,&local_8); + puVar4 = local_8 + -0x18; + if (puVar4 == PTR_DAT_00501ab8) { + return param_1; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + piVar7 = (int *)(local_8 + -8); + do { + iVar5 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar5 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + goto LAB_003fc4d0; + } + } + iVar5 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar5 + -1; +LAB_003fc4d0: + if (iVar5 < 1) { + operator_delete(puVar4); + } + return param_1; +} + + +================================================================== + +### FUNC 003fc578 (80 bytes) name=FUN_003fc578 + +void FUN_003fc578(long param_1,long *param_2) + +{ + undefined8 uVar1; + + FUN_00416a24(param_1 + 0x60,*param_2,*(undefined8 *)(*param_2 + -0x18)); + uVar1 = 0; + if ((*(uint *)(param_1 + 0x58) & 3) != 0) { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x60) + -0x18); + } + FUN_003fa4e4(param_1 + 0x18,*(long *)(param_1 + 0x60),0,uVar1); + return; +} + + +================================================================== + +### FUNC 003fc5c8 (4 bytes) name=FUN_003fc5c8 + +void FUN_003fc5c8(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fc5cc (4 bytes) name=FUN_003fc5cc + +void FUN_003fc5cc(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fc5d0 (12 bytes) name=FUN_003fc5d0 + +undefined1 [16] FUN_003fc5d0(void) + +{ + return ZEXT816(0xffffffffffffffff); +} + + +================================================================== + +### FUNC 003fc5dc (12 bytes) name=FUN_003fc5dc + +undefined1 [16] FUN_003fc5dc(void) + +{ + return ZEXT816(0xffffffffffffffff); +} + + +================================================================== + +### FUNC 003fc5e8 (8 bytes) name=FUN_003fc5e8 + +undefined8 FUN_003fc5e8(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003fc5f0 (8 bytes) name=FUN_003fc5f0 + +undefined8 FUN_003fc5f0(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003fc5f8 (8 bytes) name=FUN_003fc5f8 + +undefined8 FUN_003fc5f8(void) + +{ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003fc600 (60 bytes) name=FUN_003fc600 + +ulong FUN_003fc600(long *param_1) + +{ + ulong uVar1; + + uVar1 = (**(code **)(*param_1 + 0x48))(); + if ((int)uVar1 != -1) { + uVar1 = (ulong)*(byte *)param_1[2]; + param_1[2] = (long)((byte *)param_1[2] + 1); + } + return uVar1; +} + + +================================================================== + +### FUNC 003fc63c (8 bytes) name=FUN_003fc63c + +undefined8 FUN_003fc63c(void) + +{ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003fc644 (8 bytes) name=FUN_003fc644 + +undefined8 FUN_003fc644(void) + +{ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003fc64c (4 bytes) name=FUN_003fc64c + +void FUN_003fc64c(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fc650 (4 bytes) name=FUN_003fc650 + +void FUN_003fc650(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fc654 (12 bytes) name=FUN_003fc654 + +undefined1 [16] FUN_003fc654(void) + +{ + return ZEXT816(0xffffffffffffffff); +} + + +================================================================== + +### FUNC 003fc660 (12 bytes) name=FUN_003fc660 + +undefined1 [16] FUN_003fc660(void) + +{ + return ZEXT816(0xffffffffffffffff); +} + + +================================================================== + +### FUNC 003fc66c (8 bytes) name=FUN_003fc66c + +undefined8 FUN_003fc66c(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003fc674 (8 bytes) name=FUN_003fc674 + +undefined8 FUN_003fc674(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003fc67c (8 bytes) name=FUN_003fc67c + +undefined8 FUN_003fc67c(void) + +{ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003fc684 (8 bytes) name=FUN_003fc684 + +undefined8 FUN_003fc684(void) + +{ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003fc68c (8 bytes) name=FUN_003fc68c + +undefined8 FUN_003fc68c(void) + +{ + return 0xffffffff; +} + + +================================================================== + +### FUNC 003fc694 (16 bytes) name=FUN_003fc694 + +void FUN_003fc694(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8590; + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003fc6a4 (16 bytes) name=FUN_003fc6a4 + +void FUN_003fc6a4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8610; + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003fc6b4 (48 bytes) name=FUN_003fc6b4 + +void FUN_003fc6b4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8590; + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fc6e4 (48 bytes) name=FUN_003fc6e4 + +void FUN_003fc6e4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8610; + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fc714 (220 bytes) name=FUN_003fc714 + +long FUN_003fc714(long *param_1,undefined1 *param_2,long param_3) + +{ + size_t __n; + size_t sVar1; + long lVar2; + int iVar3; + void *__src; + long lVar4; + + lVar4 = 0; + if (param_3 < 1) { + return 0; + } + __src = (void *)param_1[2]; + lVar2 = 0; + sVar1 = param_1[3] - (long)__src; + while( true ) { + if (sVar1 != 0) { + __n = param_3 + lVar2; + if ((long)sVar1 < param_3 + lVar2) { + __n = sVar1; + } + lVar4 = lVar4 + __n; + memcpy(param_2,__src,__n); + param_1[2] = param_1[2] + __n; + if (param_3 <= lVar4) { + return lVar4; + } + param_2 = param_2 + __n; + } + iVar3 = (**(code **)(*param_1 + 0x50))(param_1); + if (iVar3 == -1) { + return lVar4; + } + lVar4 = lVar4 + 1; + *param_2 = (char)iVar3; + if (param_3 <= lVar4) break; + __src = (void *)param_1[2]; + lVar2 = -lVar4; + sVar1 = param_1[3] - (long)__src; + param_2 = param_2 + 1; + } + return lVar4; +} + + +================================================================== + +### FUNC 003fc7f0 (216 bytes) name=FUN_003fc7f0 + +long FUN_003fc7f0(long *param_1,undefined1 *param_2,long param_3) + +{ + size_t __n; + long lVar1; + int iVar2; + size_t sVar3; + void *__dest; + long lVar4; + undefined1 *puVar5; + + lVar4 = 0; + if (0 < param_3) { + __dest = (void *)param_1[5]; + lVar1 = 0; + sVar3 = param_1[6] - (long)__dest; + puVar5 = param_2; + if (sVar3 != 0) goto LAB_003fc880; + while( true ) { + do { + param_2 = puVar5 + 1; + iVar2 = (**(code **)(*param_1 + 0x68))(param_1,*puVar5); + if (iVar2 == -1) { + return lVar4; + } + lVar4 = lVar4 + 1; + if (param_3 <= lVar4) { + return lVar4; + } + __dest = (void *)param_1[5]; + lVar1 = -lVar4; + sVar3 = param_1[6] - (long)__dest; + puVar5 = param_2; + } while (sVar3 == 0); +LAB_003fc880: + __n = param_3 + lVar1; + if ((long)sVar3 < param_3 + lVar1) { + __n = sVar3; + } + lVar4 = lVar4 + __n; + memcpy(__dest,param_2,__n); + param_1[5] = param_1[5] + __n; + if (param_3 <= lVar4) break; + puVar5 = param_2 + __n; + } + } + return lVar4; +} + + +================================================================== + +### FUNC 003fc8c8 (204 bytes) name=FUN_003fc8c8 + +long FUN_003fc8c8(long *param_1,wchar_t *param_2,long param_3) + +{ + size_t __n; + wchar_t wVar1; + size_t sVar2; + long lVar3; + + lVar3 = 0; + if (0 < param_3) { + do { + sVar2 = param_1[3] - param_1[2] >> 2; + __n = param_3 - lVar3; + if ((long)sVar2 < param_3 - lVar3) { + __n = sVar2; + } + if (sVar2 != 0) { + lVar3 = lVar3 + __n; + wmemcpy(param_2,(wchar_t *)param_1[2],__n); + param_1[2] = param_1[2] + __n * 4; + if (param_3 <= lVar3) { + return lVar3; + } + param_2 = param_2 + __n; + } + wVar1 = (**(code **)(*param_1 + 0x50))(param_1); + if (wVar1 == L'\xffffffff') { + return lVar3; + } + lVar3 = lVar3 + 1; + *param_2 = wVar1; + param_2 = param_2 + 1; + } while (lVar3 < param_3); + } + return lVar3; +} + + +================================================================== + +### FUNC 003fc994 (200 bytes) name=FUN_003fc994 + +long FUN_003fc994(long *param_1,wchar_t *param_2,long param_3) + +{ + size_t __n; + int iVar1; + size_t sVar2; + long lVar3; + + lVar3 = 0; + if (param_3 < 1) { + return 0; + } + while( true ) { + sVar2 = param_1[6] - param_1[5] >> 2; + __n = param_3 - lVar3; + if ((long)sVar2 < param_3 - lVar3) { + __n = sVar2; + } + if (sVar2 != 0) { + lVar3 = lVar3 + __n; + wmemcpy((wchar_t *)param_1[5],param_2,__n); + param_1[5] = param_1[5] + __n * 4; + if (param_3 <= lVar3) { + return lVar3; + } + param_2 = param_2 + __n; + } + iVar1 = (**(code **)(*param_1 + 0x68))(param_1,*param_2); + if (iVar1 == -1) break; + lVar3 = lVar3 + 1; + param_2 = param_2 + 1; + if (param_3 <= lVar3) { + return lVar3; + } + } + return lVar3; +} + + +================================================================== + +### FUNC 003fca5c (64 bytes) name=FUN_003fca5c + +undefined4 FUN_003fca5c(long *param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = (**(code **)(*param_1 + 0x48))(); + uVar2 = 0xffffffff; + if (iVar1 != -1) { + uVar2 = *(undefined4 *)param_1[2]; + param_1[2] = (long)((undefined4 *)param_1[2] + 1); + } + return uVar2; +} + + +================================================================== + +### FUNC 003fca9c (96 bytes) name=FUN_003fca9c + +undefined8 FUN_003fca9c(undefined8 param_1,long *param_2,undefined8 param_3) + +{ + FUN_003ece1c(param_1,param_2 + 7); + (**(code **)(*param_2 + 0x10))(param_2,param_3); + FUN_003ed668(param_2 + 7,param_3); + return param_1; +} + + +================================================================== + +### FUNC 003fcb10 (40 bytes) name=FUN_003fcb10 + +undefined8 FUN_003fcb10(undefined8 param_1,long param_2) + +{ + FUN_003ece1c(param_1,param_2 + 0x38); + return param_1; +} + + +================================================================== + +### FUNC 003fcb38 (28 bytes) name=FUN_003fcb38 + +void FUN_003fcb38(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003fcb54 (28 bytes) name=FUN_003fcb54 + +void FUN_003fcb54(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 003fcb70 (28 bytes) name=FUN_003fcb70 + +void FUN_003fcb70(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 003fcb8c (28 bytes) name=FUN_003fcb8c + +void FUN_003fcb8c(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 003fcba8 (52 bytes) name=FUN_003fcba8 + +long FUN_003fcba8(long *param_1) + +{ + long lVar1; + + lVar1 = param_1[3] - param_1[2]; + if (lVar1 == 0) { + lVar1 = (**(code **)(*param_1 + 0x38))(); + } + return lVar1; +} + + +================================================================== + +### FUNC 003fcbdc (120 bytes) name=FUN_003fcbdc + +ulong FUN_003fcbdc(long *param_1) + +{ + int iVar1; + ulong uVar2; + byte *pbVar3; + byte *pbVar4; + + pbVar4 = (byte *)param_1[3]; + if ((byte *)param_1[2] < pbVar4) { + pbVar3 = (byte *)param_1[2] + 1; + param_1[2] = (long)pbVar3; + } + else { + iVar1 = (**(code **)(*param_1 + 0x50))(); + if (iVar1 == -1) { + return 0xffffffff; + } + pbVar3 = (byte *)param_1[2]; + pbVar4 = (byte *)param_1[3]; + } + if (pbVar3 < pbVar4) { + uVar2 = (ulong)*pbVar3; + } + else { + uVar2 = (**(code **)(*param_1 + 0x48))(param_1); + } + return uVar2; +} + + +================================================================== + +### FUNC 003fcc54 (64 bytes) name=FUN_003fcc54 + +ulong FUN_003fcc54(long *param_1) + +{ + byte bVar1; + ulong uVar2; + byte *pbVar3; + + pbVar3 = (byte *)param_1[2]; + if (pbVar3 < (byte *)param_1[3]) { + bVar1 = *pbVar3; + param_1[2] = (long)(pbVar3 + 1); + return (ulong)bVar1; + } + uVar2 = (**(code **)(*param_1 + 0x50))(); + return uVar2; +} + + +================================================================== + +### FUNC 003fcc94 (56 bytes) name=FUN_003fcc94 + +ulong FUN_003fcc94(long *param_1) + +{ + ulong uVar1; + + if ((byte *)param_1[2] < (byte *)param_1[3]) { + return (ulong)*(byte *)param_1[2]; + } + uVar1 = (**(code **)(*param_1 + 0x48))(); + return uVar1; +} + + +================================================================== + +### FUNC 003fcccc (28 bytes) name=FUN_003fcccc + +void FUN_003fcccc(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003fcce8 (80 bytes) name=FUN_003fcce8 + +ulong FUN_003fcce8(long *param_1,char param_2) + +{ + ulong uVar1; + + uVar1 = param_1[2]; + if (((ulong)param_1[1] < uVar1) && (*(char *)(uVar1 - 1) == param_2)) { + param_1[2] = uVar1 - 1; + return (ulong)*(byte *)(uVar1 - 1); + } + uVar1 = (**(code **)(*param_1 + 0x58))(); + return uVar1; +} + + +================================================================== + +### FUNC 003fcd38 (72 bytes) name=FUN_003fcd38 + +ulong FUN_003fcd38(long *param_1) + +{ + ulong uVar1; + + uVar1 = param_1[2]; + if ((ulong)param_1[1] < uVar1) { + param_1[2] = uVar1 - 1; + return (ulong)*(byte *)(uVar1 - 1); + } + uVar1 = (**(code **)(*param_1 + 0x58))(param_1,0xffffffff); + return uVar1; +} + + +================================================================== + +### FUNC 003fcd80 (80 bytes) name=FUN_003fcd80 + +ulong FUN_003fcd80(long *param_1,byte param_2) + +{ + ulong uVar1; + + if ((byte *)param_1[5] < (byte *)param_1[6]) { + *(byte *)param_1[5] = param_2; + param_1[5] = param_1[5] + 1; + return (ulong)param_2; + } + uVar1 = (**(code **)(*param_1 + 0x68))(); + return uVar1; +} + + +================================================================== + +### FUNC 003fcdd0 (28 bytes) name=FUN_003fcdd0 + +void FUN_003fcdd0(long *param_1) + +{ + (**(code **)(*param_1 + 0x60))(); + return; +} + + +================================================================== + +### FUNC 003fcdec (48 bytes) name=FUN_003fcdec + +void FUN_003fcdec(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8590; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003fce1c (8 bytes) name=FUN_003fce1c + +undefined8 FUN_003fce1c(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 003fce24 (8 bytes) name=FUN_003fce24 + +undefined8 FUN_003fce24(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x10); +} + + +================================================================== + +### FUNC 003fce2c (8 bytes) name=FUN_003fce2c + +undefined8 FUN_003fce2c(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x18); +} + + +================================================================== + +### FUNC 003fce34 (16 bytes) name=FUN_003fce34 + +void FUN_003fce34(long param_1,int param_2) + +{ + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 0x10) + (long)param_2; + return; +} + + +================================================================== + +### FUNC 003fce44 (16 bytes) name=FUN_003fce44 + +void FUN_003fce44(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + *(undefined8 *)(param_1 + 8) = param_2; + *(undefined8 *)(param_1 + 0x10) = param_3; + *(undefined8 *)(param_1 + 0x18) = param_4; + return; +} + + +================================================================== + +### FUNC 003fce54 (8 bytes) name=FUN_003fce54 + +undefined8 FUN_003fce54(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x20); +} + + +================================================================== + +### FUNC 003fce5c (8 bytes) name=FUN_003fce5c + +undefined8 FUN_003fce5c(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x28); +} + + +================================================================== + +### FUNC 003fce64 (8 bytes) name=FUN_003fce64 + +undefined8 FUN_003fce64(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x30); +} + + +================================================================== + +### FUNC 003fce6c (16 bytes) name=FUN_003fce6c + +void FUN_003fce6c(long param_1,int param_2) + +{ + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + (long)param_2; + return; +} + + +================================================================== + +### FUNC 003fce7c (16 bytes) name=FUN_003fce7c + +void FUN_003fce7c(long param_1,undefined8 param_2,undefined8 param_3) + +{ + *(undefined8 *)(param_1 + 0x30) = param_3; + *(undefined8 *)(param_1 + 0x28) = param_2; + *(undefined8 *)(param_1 + 0x20) = param_2; + return; +} + + +================================================================== + +### FUNC 003fce8c (60 bytes) name=FUN_003fce8c + +void FUN_003fce8c(long *param_1) + +{ + if ((ulong)param_1[2] < (ulong)param_1[3]) { + param_1[2] = param_1[2] + 1; + return; + } + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003fcec8 (16 bytes) name=FUN_003fcec8 + +void FUN_003fcec8(long param_1,long param_2) + +{ + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 0x10) + param_2; + return; +} + + +================================================================== + +### FUNC 003fced8 (16 bytes) name=FUN_003fced8 + +void FUN_003fced8(long param_1,long param_2) + +{ + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + param_2; + return; +} + + +================================================================== + +### FUNC 003fcee8 (80 bytes) name=FUN_003fcee8 + +void FUN_003fcee8(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + + uVar4 = *(undefined8 *)(param_2 + 8); + uVar3 = *(undefined8 *)(param_2 + 0x10); + uVar2 = *(undefined8 *)(param_2 + 0x18); + uVar1 = *(undefined8 *)(param_2 + 0x20); + param_1[5] = *(undefined8 *)(param_2 + 0x28); + *param_1 = &PTR_FUN_004f8590; + param_1[6] = *(undefined8 *)(param_2 + 0x28); + param_1[1] = uVar4; + param_1[2] = uVar3; + param_1[3] = uVar2; + param_1[4] = uVar1; + FUN_003ece1c(param_1 + 7,param_2 + 0x38); + return; +} + + +================================================================== + +### FUNC 003fcf38 (4 bytes) name=FUN_003fcf38 + +void FUN_003fcf38(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fcf3c (24 bytes) name=FUN_003fcf3c + +void FUN_003fcf3c(undefined8 param_1,undefined8 param_2) + +{ + undefined1 uStack_1; + + FUN_003fd410(param_1,param_2,&uStack_1); + return; +} + + +================================================================== + +### FUNC 003fcf54 (96 bytes) name=FUN_003fcf54 + +undefined8 FUN_003fcf54(undefined8 param_1,long *param_2,undefined8 param_3) + +{ + FUN_003ece1c(param_1,param_2 + 7); + (**(code **)(*param_2 + 0x10))(param_2,param_3); + FUN_003ed668(param_2 + 7,param_3); + return param_1; +} + + +================================================================== + +### FUNC 003fcfc8 (40 bytes) name=FUN_003fcfc8 + +undefined8 FUN_003fcfc8(undefined8 param_1,long param_2) + +{ + FUN_003ece1c(param_1,param_2 + 0x38); + return param_1; +} + + +================================================================== + +### FUNC 003fcff0 (28 bytes) name=FUN_003fcff0 + +void FUN_003fcff0(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003fd00c (28 bytes) name=FUN_003fd00c + +void FUN_003fd00c(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 003fd028 (28 bytes) name=FUN_003fd028 + +void FUN_003fd028(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 003fd044 (28 bytes) name=FUN_003fd044 + +void FUN_003fd044(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 003fd060 (56 bytes) name=FUN_003fd060 + +long FUN_003fd060(long *param_1) + +{ + long lVar1; + + lVar1 = param_1[3] - param_1[2] >> 2; + if (lVar1 == 0) { + lVar1 = (**(code **)(*param_1 + 0x38))(); + } + return lVar1; +} + + +================================================================== + +### FUNC 003fd098 (116 bytes) name=FUN_003fd098 + +ulong FUN_003fd098(long *param_1) + +{ + ulong uVar1; + uint *puVar2; + + puVar2 = (uint *)param_1[2]; + if (puVar2 < (uint *)param_1[3]) { + uVar1 = (ulong)*puVar2; + param_1[2] = (long)(puVar2 + 1); + } + else { + uVar1 = (**(code **)(*param_1 + 0x50))(); + } + if ((int)uVar1 != -1) { + if ((uint *)param_1[2] < (uint *)param_1[3]) { + uVar1 = (ulong)*(uint *)param_1[2]; + } + else { + uVar1 = (**(code **)(*param_1 + 0x48))(param_1); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 003fd10c (64 bytes) name=FUN_003fd10c + +ulong FUN_003fd10c(long *param_1) + +{ + uint uVar1; + ulong uVar2; + uint *puVar3; + + puVar3 = (uint *)param_1[2]; + if (puVar3 < (uint *)param_1[3]) { + uVar1 = *puVar3; + param_1[2] = (long)(puVar3 + 1); + return (ulong)uVar1; + } + uVar2 = (**(code **)(*param_1 + 0x50))(); + return uVar2; +} + + +================================================================== + +### FUNC 003fd14c (56 bytes) name=FUN_003fd14c + +ulong FUN_003fd14c(long *param_1) + +{ + ulong uVar1; + + if ((uint *)param_1[2] < (uint *)param_1[3]) { + return (ulong)*(uint *)param_1[2]; + } + uVar1 = (**(code **)(*param_1 + 0x48))(); + return uVar1; +} + + +================================================================== + +### FUNC 003fd184 (28 bytes) name=FUN_003fd184 + +void FUN_003fd184(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003fd1a0 (80 bytes) name=FUN_003fd1a0 + +void FUN_003fd1a0(long *param_1,int param_2) + +{ + ulong uVar1; + + uVar1 = param_1[2]; + if (((ulong)param_1[1] < uVar1) && (*(int *)(uVar1 - 4) == param_2)) { + param_1[2] = uVar1 - 4; + return; + } + (**(code **)(*param_1 + 0x58))(param_1); + return; +} + + +================================================================== + +### FUNC 003fd1f0 (72 bytes) name=FUN_003fd1f0 + +ulong FUN_003fd1f0(long *param_1) + +{ + uint uVar1; + ulong uVar2; + + uVar2 = param_1[2]; + if ((ulong)param_1[1] < uVar2) { + uVar1 = *(uint *)(uVar2 - 4); + param_1[2] = uVar2 - 4; + return (ulong)uVar1; + } + uVar2 = (**(code **)(*param_1 + 0x58))(param_1,0xffffffff); + return uVar2; +} + + +================================================================== + +### FUNC 003fd238 (84 bytes) name=FUN_003fd238 + +undefined4 FUN_003fd238(long *param_1,undefined4 param_2) + +{ + undefined4 uVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)param_1[5]; + if (puVar2 < (undefined4 *)param_1[6]) { + *puVar2 = param_2; + param_1[5] = (long)(puVar2 + 1); + return param_2; + } + uVar1 = (**(code **)(*param_1 + 0x68))(); + return uVar1; +} + + +================================================================== + +### FUNC 003fd28c (28 bytes) name=FUN_003fd28c + +void FUN_003fd28c(long *param_1) + +{ + (**(code **)(*param_1 + 0x60))(); + return; +} + + +================================================================== + +### FUNC 003fd2a8 (48 bytes) name=FUN_003fd2a8 + +void FUN_003fd2a8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8610; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 003fd2d8 (8 bytes) name=FUN_003fd2d8 + +undefined8 FUN_003fd2d8(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 003fd2e0 (8 bytes) name=FUN_003fd2e0 + +undefined8 FUN_003fd2e0(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x10); +} + + +================================================================== + +### FUNC 003fd2e8 (8 bytes) name=FUN_003fd2e8 + +undefined8 FUN_003fd2e8(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x18); +} + + +================================================================== + +### FUNC 003fd2f0 (16 bytes) name=FUN_003fd2f0 + +void FUN_003fd2f0(long param_1,int param_2) + +{ + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 0x10) + (long)param_2 * 4; + return; +} + + +================================================================== + +### FUNC 003fd300 (16 bytes) name=FUN_003fd300 + +void FUN_003fd300(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + *(undefined8 *)(param_1 + 8) = param_2; + *(undefined8 *)(param_1 + 0x10) = param_3; + *(undefined8 *)(param_1 + 0x18) = param_4; + return; +} + + +================================================================== + +### FUNC 003fd310 (8 bytes) name=FUN_003fd310 + +undefined8 FUN_003fd310(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x20); +} + + +================================================================== + +### FUNC 003fd318 (8 bytes) name=FUN_003fd318 + +undefined8 FUN_003fd318(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x28); +} + + +================================================================== + +### FUNC 003fd320 (8 bytes) name=FUN_003fd320 + +undefined8 FUN_003fd320(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x30); +} + + +================================================================== + +### FUNC 003fd328 (16 bytes) name=FUN_003fd328 + +void FUN_003fd328(long param_1,int param_2) + +{ + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + (long)param_2 * 4; + return; +} + + +================================================================== + +### FUNC 003fd338 (16 bytes) name=FUN_003fd338 + +void FUN_003fd338(long param_1,undefined8 param_2,undefined8 param_3) + +{ + *(undefined8 *)(param_1 + 0x30) = param_3; + *(undefined8 *)(param_1 + 0x28) = param_2; + *(undefined8 *)(param_1 + 0x20) = param_2; + return; +} + + +================================================================== + +### FUNC 003fd348 (60 bytes) name=FUN_003fd348 + +void FUN_003fd348(long *param_1) + +{ + if ((ulong)param_1[2] < (ulong)param_1[3]) { + param_1[2] = param_1[2] + 4; + return; + } + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003fd384 (16 bytes) name=FUN_003fd384 + +void FUN_003fd384(long param_1,long param_2) + +{ + *(long *)(param_1 + 0x10) = *(long *)(param_1 + 0x10) + param_2 * 4; + return; +} + + +================================================================== + +### FUNC 003fd394 (16 bytes) name=FUN_003fd394 + +void FUN_003fd394(long param_1,long param_2) + +{ + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + param_2 * 4; + return; +} + + +================================================================== + +### FUNC 003fd3a4 (80 bytes) name=FUN_003fd3a4 + +void FUN_003fd3a4(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + undefined8 uVar2; + undefined8 uVar3; + undefined8 uVar4; + + uVar4 = *(undefined8 *)(param_2 + 8); + uVar3 = *(undefined8 *)(param_2 + 0x10); + uVar2 = *(undefined8 *)(param_2 + 0x18); + uVar1 = *(undefined8 *)(param_2 + 0x20); + param_1[5] = *(undefined8 *)(param_2 + 0x28); + *param_1 = &PTR_FUN_004f8610; + param_1[6] = *(undefined8 *)(param_2 + 0x28); + param_1[1] = uVar4; + param_1[2] = uVar3; + param_1[3] = uVar2; + param_1[4] = uVar1; + FUN_003ece1c(param_1 + 7,param_2 + 0x38); + return; +} + + +================================================================== + +### FUNC 003fd3f4 (4 bytes) name=FUN_003fd3f4 + +void FUN_003fd3f4(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fd3f8 (24 bytes) name=FUN_003fd3f8 + +void FUN_003fd3f8(undefined8 param_1,undefined8 param_2) + +{ + undefined1 uStack_1; + + FUN_003fd5a8(param_1,param_2,&uStack_1); + return; +} + + +================================================================== + +### FUNC 003fd410 (408 bytes) name=FUN_003fd410 + +long FUN_003fd410(long *param_1,long *param_2,undefined1 *param_3) + +{ + uint uVar1; + int iVar2; + long lVar3; + byte *pbVar4; + undefined1 uVar5; + byte *pbVar6; + long lVar7; + long lVar8; + + pbVar6 = (byte *)param_1[3]; + pbVar4 = (byte *)param_1[2]; + *param_3 = 1; + if (pbVar4 < pbVar6) { + uVar1 = (uint)*pbVar4; + } + else { + uVar1 = (**(code **)(*param_1 + 0x48))(); + if (uVar1 == 0xffffffff) { + return 0; + } + pbVar4 = (byte *)param_1[2]; + pbVar6 = (byte *)param_1[3]; + } + uVar5 = (undefined1)uVar1; + lVar7 = (long)pbVar6 - (long)pbVar4; + lVar8 = 0; + if (lVar7 < 2) goto LAB_003fd4b8; +LAB_003fd45c: + lVar3 = (**(code **)(*param_2 + 0x60))(param_2,pbVar4,lVar7); + lVar8 = lVar8 + lVar3; + param_1[2] = param_1[2] + lVar3; + if (lVar3 < lVar7) { +LAB_003fd544: + *param_3 = 0; + return lVar8; + } + do { + uVar1 = (**(code **)(*param_1 + 0x48))(param_1); + if (uVar1 == 0xffffffff) { + return lVar8; + } + pbVar6 = (byte *)param_1[3]; + pbVar4 = (byte *)param_1[2]; + while( true ) { + uVar5 = (undefined1)uVar1; + lVar7 = (long)pbVar6 - (long)pbVar4; + if (1 < lVar7) goto LAB_003fd45c; +LAB_003fd4b8: + if ((undefined1 *)param_2[5] < (undefined1 *)param_2[6]) { + *(undefined1 *)param_2[5] = uVar5; + param_2[5] = param_2[5] + 1; + } + else { + iVar2 = (**(code **)(*param_2 + 0x68))(param_2,uVar5); + if (iVar2 == -1) goto LAB_003fd544; + } + lVar8 = lVar8 + 1; + pbVar6 = (byte *)param_1[3]; + if ((byte *)param_1[2] < pbVar6) { + pbVar4 = (byte *)param_1[2] + 1; + param_1[2] = (long)pbVar4; + } + else { + iVar2 = (**(code **)(*param_1 + 0x50))(param_1); + if (iVar2 == -1) { + return lVar8; + } + pbVar4 = (byte *)param_1[2]; + pbVar6 = (byte *)param_1[3]; + } + if (pbVar6 <= pbVar4) break; + uVar1 = (uint)*pbVar4; + pbVar4 = (byte *)param_1[2]; + } + } while( true ); +} + + +================================================================== + +### FUNC 003fd5a8 (352 bytes) name=FUN_003fd5a8 + +long FUN_003fd5a8(long *param_1,long *param_2,undefined1 *param_3) + +{ + int iVar1; + long lVar2; + int *piVar3; + int *piVar4; + long lVar5; + long lVar6; + + piVar4 = (int *)param_1[3]; + piVar3 = (int *)param_1[2]; + *param_3 = 1; + if (piVar3 < piVar4) { + iVar1 = *piVar3; + } + else { + iVar1 = (**(code **)(*param_1 + 0x48))(); + } + lVar6 = 0; + do { + while( true ) { + if (iVar1 == -1) { + return lVar6; + } + lVar5 = param_1[3] - param_1[2] >> 2; + if (lVar5 < 2) break; + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,param_1[2],lVar5); + lVar6 = lVar6 + lVar2; + param_1[2] = param_1[2] + lVar2 * 4; + if (lVar2 < lVar5) { +LAB_003fd6c4: + *param_3 = 0; + return lVar6; + } +LAB_003fd620: + iVar1 = (**(code **)(*param_1 + 0x48))(param_1); + } + piVar3 = (int *)param_2[5]; + if (piVar3 < (int *)param_2[6]) { + *piVar3 = iVar1; + param_2[5] = (long)(piVar3 + 1); + } + else { + iVar1 = (**(code **)(*param_2 + 0x68))(param_2,iVar1); + if (iVar1 == -1) goto LAB_003fd6c4; + } + piVar3 = (int *)param_1[2]; + lVar6 = lVar6 + 1; + if (piVar3 < (int *)param_1[3]) { + iVar1 = *piVar3; + param_1[2] = (long)(piVar3 + 1); + } + else { + iVar1 = (**(code **)(*param_1 + 0x50))(param_1); + } + if (iVar1 == -1) { + return lVar6; + } + if ((int *)param_1[3] <= (int *)param_1[2]) goto LAB_003fd620; + iVar1 = *(int *)param_1[2]; + } while( true ); +} + + +================================================================== + +### FUNC 003fd708 (196 bytes) name=FUN_003fd708 + +void FUN_003fd708(long param_1,char *param_2,size_t param_3,char *param_4,tm *param_5) + +{ + char *__s; + size_t sVar1; + char *__locale; + + __s = setlocale(6,(char *)0x0); + if (__s == (char *)0x0) { + __locale = (char *)0x0; + } + else { + sVar1 = strlen(__s); + __locale = operator_new__(sVar1 + 1); + memcpy(__locale,__s,sVar1 + 1); + setlocale(6,*(char **)(param_1 + 0x20)); + } + sVar1 = strftime(param_2,param_3,param_4,param_5); + setlocale(6,__locale); + if (__locale != (char *)0x0) { + operator_delete__(__locale); + } + if (sVar1 == 0) { + *param_2 = '\0'; + } + return; +} + + +================================================================== + +### FUNC 003fd7dc (792 bytes) name=FUN_003fd7dc + +void FUN_003fd7dc(long param_1) + +{ + undefined *puVar1; + long *plVar2; + + plVar2 = *(long **)(param_1 + 0x10); + if (plVar2 == (long *)0x0) { + plVar2 = operator_new(400); + *(undefined4 *)(plVar2 + 1) = 0; + puVar1 = PTR_DAT_00501da8; + plVar2[2] = 0; + plVar2[3] = 0; + *plVar2 = (long)(puVar1 + 0x10); + plVar2[4] = 0; + plVar2[5] = 0; + plVar2[6] = 0; + plVar2[7] = 0; + plVar2[8] = 0; + plVar2[9] = 0; + plVar2[10] = 0; + plVar2[0xb] = 0; + plVar2[0xc] = 0; + plVar2[0xd] = 0; + plVar2[0xe] = 0; + plVar2[0xf] = 0; + plVar2[0x10] = 0; + plVar2[0x11] = 0; + plVar2[0x12] = 0; + plVar2[0x13] = 0; + plVar2[0x14] = 0; + plVar2[0x15] = 0; + plVar2[0x16] = 0; + plVar2[0x17] = 0; + plVar2[0x18] = 0; + plVar2[0x19] = 0; + plVar2[0x1a] = 0; + plVar2[0x1b] = 0; + plVar2[0x1c] = 0; + plVar2[0x1d] = 0; + plVar2[0x1e] = 0; + plVar2[0x1f] = 0; + plVar2[0x20] = 0; + plVar2[0x21] = 0; + plVar2[0x22] = 0; + plVar2[0x23] = 0; + plVar2[0x24] = 0; + plVar2[0x25] = 0; + plVar2[0x26] = 0; + plVar2[0x27] = 0; + plVar2[0x28] = 0; + plVar2[0x29] = 0; + plVar2[0x2a] = 0; + plVar2[0x2b] = 0; + plVar2[0x2c] = 0; + plVar2[0x2d] = 0; + plVar2[0x2e] = 0; + plVar2[0x2f] = 0; + plVar2[0x30] = 0; + *(undefined1 *)(plVar2 + 0x31) = 0; + *(long **)(param_1 + 0x10) = plVar2; + } + plVar2[6] = (long)&DAT_00472008; + plVar2[7] = (long)&DAT_00472008; + plVar2[10] = (long)&DAT_00472008; + plVar2[0xb] = (long)"Sunday"; + plVar2[4] = (long)&DAT_00479978; + plVar2[0xc] = (long)"Monday"; + plVar2[5] = (long)&DAT_00479978; + plVar2[0xd] = (long)"Tuesday"; + plVar2[0xe] = (long)"Wednesday"; + plVar2[0xf] = (long)"Thursday"; + plVar2[8] = (long)&DAT_0047a318; + plVar2[0x10] = (long)"Friday"; + plVar2[0x11] = (long)"Saturday"; + plVar2[0x12] = (long)&DAT_0047a378; + plVar2[0x13] = (long)&DAT_0047a380; + plVar2[0x14] = (long)&DAT_0047a388; + plVar2[0x15] = (long)&DAT_0047a390; + plVar2[2] = (long)&DAT_00479960; + plVar2[0x16] = (long)&DAT_0047a398; + plVar2[3] = (long)&DAT_00479960; + plVar2[0x17] = (long)&DAT_0047a3a0; + plVar2[0x18] = (long)&DAT_0047a3a8; + plVar2[9] = (long)&DAT_0047a320; + plVar2[0x19] = (long)"January"; + plVar2[0x1d] = (long)&DAT_0047a3d8; + plVar2[0x1a] = (long)"February"; + plVar2[0x1b] = (long)"March"; + plVar2[0x1c] = (long)"April"; + plVar2[0x1e] = (long)&DAT_0047a3e0; + plVar2[0x1f] = (long)&DAT_0047a3e8; + plVar2[0x20] = (long)"August"; + plVar2[0x21] = (long)"September"; + plVar2[0x22] = (long)"October"; + plVar2[0x23] = (long)"November"; + plVar2[0x29] = (long)&DAT_0047a3d8; + plVar2[0x24] = (long)"December"; + plVar2[0x25] = (long)&DAT_0047a430; + plVar2[0x26] = (long)&DAT_0047a438; + plVar2[0x27] = (long)&DAT_0047a440; + plVar2[0x28] = (long)&DAT_0047a448; + plVar2[0x2a] = (long)&DAT_0047a450; + plVar2[0x2b] = (long)&DAT_0047a458; + plVar2[0x2c] = (long)&DAT_0047a460; + plVar2[0x2d] = (long)&DAT_0047a468; + plVar2[0x2e] = (long)&DAT_0047a470; + plVar2[0x2f] = (long)&DAT_0047a478; + plVar2[0x30] = (long)&DAT_0047a480; + return; +} + + +================================================================== + +### FUNC 003fdaf4 (224 bytes) name=FUN_003fdaf4 + +void FUN_003fdaf4(long param_1,wchar_t *param_2,size_t param_3,wchar_t *param_4,tm *param_5) + +{ + char *__s; + size_t sVar1; + char *__locale; + + __s = setlocale(6,(char *)0x0); + if (__s == (char *)0x0) { + sVar1 = wcsftime(param_2,param_3,param_4,param_5); + setlocale(6,(char *)0x0); + } + else { + sVar1 = strlen(__s); + __locale = operator_new__(sVar1 + 1); + memcpy(__locale,__s,sVar1 + 1); + setlocale(6,*(char **)(param_1 + 0x20)); + sVar1 = wcsftime(param_2,param_3,param_4,param_5); + setlocale(6,__locale); + operator_delete__(__locale); + } + if (sVar1 == 0) { + *param_2 = L'\0'; + } + return; +} + + +================================================================== + +### FUNC 003fdbe4 (792 bytes) name=FUN_003fdbe4 + +void FUN_003fdbe4(long param_1) + +{ + undefined *puVar1; + long *plVar2; + + plVar2 = *(long **)(param_1 + 0x10); + if (plVar2 == (long *)0x0) { + plVar2 = operator_new(400); + *(undefined4 *)(plVar2 + 1) = 0; + puVar1 = PTR_DAT_00501930; + plVar2[2] = 0; + plVar2[3] = 0; + *plVar2 = (long)(puVar1 + 0x10); + plVar2[4] = 0; + plVar2[5] = 0; + plVar2[6] = 0; + plVar2[7] = 0; + plVar2[8] = 0; + plVar2[9] = 0; + plVar2[10] = 0; + plVar2[0xb] = 0; + plVar2[0xc] = 0; + plVar2[0xd] = 0; + plVar2[0xe] = 0; + plVar2[0xf] = 0; + plVar2[0x10] = 0; + plVar2[0x11] = 0; + plVar2[0x12] = 0; + plVar2[0x13] = 0; + plVar2[0x14] = 0; + plVar2[0x15] = 0; + plVar2[0x16] = 0; + plVar2[0x17] = 0; + plVar2[0x18] = 0; + plVar2[0x19] = 0; + plVar2[0x1a] = 0; + plVar2[0x1b] = 0; + plVar2[0x1c] = 0; + plVar2[0x1d] = 0; + plVar2[0x1e] = 0; + plVar2[0x1f] = 0; + plVar2[0x20] = 0; + plVar2[0x21] = 0; + plVar2[0x22] = 0; + plVar2[0x23] = 0; + plVar2[0x24] = 0; + plVar2[0x25] = 0; + plVar2[0x26] = 0; + plVar2[0x27] = 0; + plVar2[0x28] = 0; + plVar2[0x29] = 0; + plVar2[0x2a] = 0; + plVar2[0x2b] = 0; + plVar2[0x2c] = 0; + plVar2[0x2d] = 0; + plVar2[0x2e] = 0; + plVar2[0x2f] = 0; + plVar2[0x30] = 0; + *(undefined1 *)(plVar2 + 0x31) = 0; + *(long **)(param_1 + 0x10) = plVar2; + } + plVar2[6] = (long)&DAT_00479f78; + plVar2[7] = (long)&DAT_00479f78; + plVar2[10] = (long)&DAT_00479f78; + plVar2[0xb] = (long)&DAT_00479f90; + plVar2[4] = (long)&DAT_00479f48; + plVar2[0xc] = (long)L"Monday"; + plVar2[5] = (long)&DAT_00479f48; + plVar2[0xd] = (long)L"Tuesday"; + plVar2[0xe] = (long)L"Wednesday"; + plVar2[0xf] = (long)L"Thursday"; + plVar2[8] = (long)&DAT_00479f70; + plVar2[0x10] = (long)L"Friday"; + plVar2[0x11] = (long)&LAB_0047a060; + plVar2[0x12] = (long)&DAT_0047a088; + plVar2[0x13] = (long)&DAT_0047a098; + plVar2[0x14] = (long)&DAT_0047a0a8; + plVar2[0x15] = (long)&DAT_0047a0b8; + plVar2[2] = (long)&DAT_00479f20; + plVar2[0x16] = (long)&DAT_0047a0c8; + plVar2[3] = (long)&DAT_00479f20; + plVar2[0x17] = (long)&DAT_0047a0d8; + plVar2[0x18] = (long)&DAT_0047a0e8; + plVar2[9] = (long)&DAT_00479f80; + plVar2[0x19] = (long)L"January"; + plVar2[0x1d] = (long)&DAT_0047a170; + plVar2[0x1a] = (long)L"February"; + plVar2[0x1b] = (long)L"March"; + plVar2[0x1c] = (long)L"April"; + plVar2[0x1e] = (long)&DAT_0047a180; + plVar2[0x1f] = (long)&DAT_0047a198; + plVar2[0x20] = (long)L"August"; + plVar2[0x21] = (long)L"September"; + plVar2[0x22] = (long)L"October"; + plVar2[0x23] = (long)L"November"; + plVar2[0x29] = (long)&DAT_0047a170; + plVar2[0x24] = (long)&DAT_0047a240; + plVar2[0x25] = (long)&DAT_0047a268; + plVar2[0x26] = (long)&DAT_0047a278; + plVar2[0x27] = (long)&DAT_0047a288; + plVar2[0x28] = (long)&DAT_0047a298; + plVar2[0x2a] = (long)&DAT_0047a2a8; + plVar2[0x2b] = (long)&DAT_0047a2b8; + plVar2[0x2c] = (long)&DAT_0047a2c8; + plVar2[0x2d] = (long)&DAT_0047a2d8; + plVar2[0x2e] = (long)&DAT_0047a2e8; + plVar2[0x2f] = (long)&DAT_0047a2f8; + plVar2[0x30] = (long)&DAT_0047a308; + return; +} + + +================================================================== + +### FUNC 003fdefc (96 bytes) name=FUN_003fdefc + +void FUN_003fdefc(long param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar1 = *(long *)(param_1 + 0x18); + lVar2 = *(long *)(lVar1 + 0x10); + *(long *)(param_1 + 0x18) = lVar2; + if (lVar2 != 0) { + *(long *)(lVar2 + 8) = param_1; + } + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(param_1 + 8); + if (*param_2 != param_1) { + lVar2 = *(long *)(param_1 + 8); + if (*(long *)(lVar2 + 0x10) == param_1) { + *(long *)(lVar2 + 0x10) = lVar1; + } + else { + *(long *)(lVar2 + 0x18) = lVar1; + } + *(long *)(lVar1 + 0x10) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; + } + *param_2 = lVar1; + *(long *)(lVar1 + 0x10) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; +} + + +================================================================== + +### FUNC 003fdf5c (96 bytes) name=FUN_003fdf5c + +void FUN_003fdf5c(long param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar1 = *(long *)(param_1 + 0x10); + lVar2 = *(long *)(lVar1 + 0x18); + *(long *)(param_1 + 0x10) = lVar2; + if (lVar2 != 0) { + *(long *)(lVar2 + 8) = param_1; + } + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(param_1 + 8); + if (*param_2 != param_1) { + lVar2 = *(long *)(param_1 + 8); + if (*(long *)(lVar2 + 0x18) == param_1) { + *(long *)(lVar2 + 0x18) = lVar1; + } + else { + *(long *)(lVar2 + 0x10) = lVar1; + } + *(long *)(lVar1 + 0x18) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; + } + *param_2 = lVar1; + *(long *)(lVar1 + 0x18) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; +} + + +================================================================== + +### FUNC 003fdfbc (96 bytes) name=FUN_003fdfbc + +long FUN_003fdfbc(long param_1) + +{ + long lVar1; + long lVar2; + + lVar2 = *(long *)(param_1 + 0x18); + if (*(long *)(param_1 + 0x18) != 0) { + do { + lVar1 = lVar2; + lVar2 = *(long *)(lVar1 + 0x10); + } while (lVar2 != 0); + return lVar1; + } + lVar2 = *(long *)(param_1 + 8); + if (param_1 == *(long *)(lVar2 + 0x18)) { + do { + lVar1 = lVar2; + lVar2 = *(long *)(lVar1 + 8); + } while (*(long *)(lVar2 + 0x18) == lVar1); + if (lVar2 == *(long *)(lVar1 + 0x18)) { + lVar2 = lVar1; + } + return lVar2; + } + return lVar2; +} + + +================================================================== + +### FUNC 003fe01c (96 bytes) name=FUN_003fe01c + +long FUN_003fe01c(long param_1) + +{ + long lVar1; + long lVar2; + + lVar2 = *(long *)(param_1 + 0x18); + if (*(long *)(param_1 + 0x18) != 0) { + do { + lVar1 = lVar2; + lVar2 = *(long *)(lVar1 + 0x10); + } while (lVar2 != 0); + return lVar1; + } + lVar2 = *(long *)(param_1 + 8); + if (param_1 == *(long *)(lVar2 + 0x18)) { + do { + lVar1 = lVar2; + lVar2 = *(long *)(lVar1 + 8); + } while (*(long *)(lVar2 + 0x18) == lVar1); + if (lVar2 == *(long *)(lVar1 + 0x18)) { + lVar2 = lVar1; + } + return lVar2; + } + return lVar2; +} + + +================================================================== + +### FUNC 003fe07c (112 bytes) name=FUN_003fe07c + +long FUN_003fe07c(int *param_1) + +{ + bool bVar1; + long lVar2; + long lVar3; + + if ((*param_1 == 0) && (param_1 == *(int **)(*(long *)(param_1 + 2) + 8))) { + return *(long *)(param_1 + 6); + } + lVar3 = *(long *)(param_1 + 4); + if (*(long *)(param_1 + 4) != 0) { + do { + lVar2 = lVar3; + lVar3 = *(long *)(lVar2 + 0x18); + } while (lVar3 != 0); + return lVar2; + } + lVar3 = *(long *)(param_1 + 2); + if (param_1 != *(int **)(lVar3 + 0x10)) { + return lVar3; + } + do { + lVar2 = *(long *)(lVar3 + 8); + bVar1 = *(long *)(lVar2 + 0x10) == lVar3; + lVar3 = lVar2; + } while (bVar1); + return lVar2; +} + + +================================================================== + +### FUNC 003fe0ec (112 bytes) name=FUN_003fe0ec + +long FUN_003fe0ec(int *param_1) + +{ + bool bVar1; + long lVar2; + long lVar3; + + if ((*param_1 == 0) && (param_1 == *(int **)(*(long *)(param_1 + 2) + 8))) { + return *(long *)(param_1 + 6); + } + lVar3 = *(long *)(param_1 + 4); + if (*(long *)(param_1 + 4) != 0) { + do { + lVar2 = lVar3; + lVar3 = *(long *)(lVar2 + 0x18); + } while (lVar3 != 0); + return lVar2; + } + lVar3 = *(long *)(param_1 + 2); + if (param_1 != *(int **)(lVar3 + 0x10)) { + return lVar3; + } + do { + lVar2 = *(long *)(lVar3 + 8); + bVar1 = *(long *)(lVar2 + 0x10) == lVar3; + lVar3 = lVar2; + } while (bVar1); + return lVar2; +} + + +================================================================== + +### FUNC 003fe15c (96 bytes) name=FUN_003fe15c + +void FUN_003fe15c(long param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar1 = *(long *)(param_1 + 0x18); + lVar2 = *(long *)(lVar1 + 0x10); + *(long *)(param_1 + 0x18) = lVar2; + if (lVar2 != 0) { + *(long *)(lVar2 + 8) = param_1; + } + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(param_1 + 8); + if (param_1 != *param_2) { + lVar2 = *(long *)(param_1 + 8); + if (param_1 == *(long *)(lVar2 + 0x10)) { + *(long *)(lVar2 + 0x10) = lVar1; + } + else { + *(long *)(lVar2 + 0x18) = lVar1; + } + *(long *)(lVar1 + 0x10) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; + } + *param_2 = lVar1; + *(long *)(lVar1 + 0x10) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; +} + + +================================================================== + +### FUNC 003fe1bc (96 bytes) name=FUN_003fe1bc + +void FUN_003fe1bc(long param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar1 = *(long *)(param_1 + 0x10); + lVar2 = *(long *)(lVar1 + 0x18); + *(long *)(param_1 + 0x10) = lVar2; + if (lVar2 != 0) { + *(long *)(lVar2 + 8) = param_1; + } + *(undefined8 *)(lVar1 + 8) = *(undefined8 *)(param_1 + 8); + if (param_1 != *param_2) { + lVar2 = *(long *)(param_1 + 8); + if (param_1 == *(long *)(lVar2 + 0x18)) { + *(long *)(lVar2 + 0x18) = lVar1; + } + else { + *(long *)(lVar2 + 0x10) = lVar1; + } + *(long *)(lVar1 + 0x18) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; + } + *param_2 = lVar1; + *(long *)(lVar1 + 0x18) = param_1; + *(long *)(param_1 + 8) = lVar1; + return; +} + + +================================================================== + +### FUNC 003fe21c (448 bytes) name=FUN_003fe21c + +void FUN_003fe21c(char param_1,int *param_2,long param_3,long param_4) + +{ + long lVar1; + int *piVar2; + long lVar3; + int *piVar4; + long lVar5; + int *piVar6; + int *piVar7; + + *(long *)(param_2 + 2) = param_3; + param_2[4] = 0; + param_2[5] = 0; + param_2[6] = 0; + param_2[7] = 0; + lVar1 = param_4 + 8; + *param_2 = 0; + if (param_1 == '\0') { + *(int **)(param_3 + 0x18) = param_2; + if (*(long *)(param_4 + 0x18) == param_3) { + *(int **)(param_4 + 0x18) = param_2; + } + } + else { + *(int **)(param_3 + 0x10) = param_2; + if (param_3 == param_4) { + *(int **)(param_4 + 8) = param_2; + *(int **)(param_4 + 0x18) = param_2; + } + else if (*(long *)(param_4 + 0x10) == param_3) { + *(int **)(param_4 + 0x10) = param_2; + } + } + piVar4 = *(int **)(param_4 + 8); + do { + while( true ) { + if ((param_2 == piVar4) || (piVar7 = *(int **)(param_2 + 2), *piVar7 != 0)) { + *piVar4 = 1; + return; + } + piVar6 = *(int **)(piVar7 + 2); + piVar2 = *(int **)(piVar6 + 4); + if (piVar7 == piVar2) break; + if ((piVar2 == (int *)0x0) || (*piVar2 != 0)) { + piVar4 = piVar7; + if (*(int **)(piVar7 + 4) == param_2) { + FUN_003fdf5c(piVar7,lVar1); + piVar4 = *(int **)(piVar7 + 2); + param_2 = piVar7; + } + lVar5 = *(long *)(piVar6 + 6); + *piVar4 = 1; + *piVar6 = 0; + lVar3 = *(long *)(lVar5 + 0x10); + *(long *)(piVar6 + 6) = lVar3; + if (lVar3 != 0) { + *(int **)(lVar3 + 8) = piVar6; + } + *(undefined8 *)(lVar5 + 8) = *(undefined8 *)(piVar6 + 2); + if (piVar6 == *(int **)(param_4 + 8)) { + *(long *)(param_4 + 8) = lVar5; + } + else { + lVar3 = *(long *)(piVar6 + 2); + if (piVar6 == *(int **)(lVar3 + 0x10)) { + *(long *)(lVar3 + 0x10) = lVar5; + } + else { + *(long *)(lVar3 + 0x18) = lVar5; + } + } + *(int **)(lVar5 + 0x10) = piVar6; + *(long *)(piVar6 + 2) = lVar5; + piVar4 = *(int **)(param_4 + 8); + } + else { +LAB_003fe2a4: + *piVar7 = 1; + *piVar2 = 1; + *piVar6 = 0; + param_2 = piVar6; + } + } + piVar2 = *(int **)(piVar6 + 6); + if ((piVar2 != (int *)0x0) && (*piVar2 == 0)) goto LAB_003fe2a4; + piVar4 = piVar7; + if (*(int **)(piVar7 + 6) == param_2) { + FUN_003fdefc(piVar7,lVar1); + piVar4 = *(int **)(piVar7 + 2); + param_2 = piVar7; + } + *piVar4 = 1; + *piVar6 = 0; + FUN_003fdf5c(piVar6,lVar1); + piVar4 = *(int **)(param_4 + 8); + } while( true ); +} + + +================================================================== + +### FUNC 003fe3dc (944 bytes) name=FUN_003fe3dc + +int * FUN_003fe3dc(int *param_1,long param_2) + +{ + int *piVar1; + int iVar2; + long lVar3; + int *piVar4; + int *piVar5; + int *piVar6; + int *piVar7; + + piVar4 = *(int **)(param_1 + 4); + if (piVar4 == (int *)0x0) { + piVar7 = *(int **)(param_1 + 6); + } + else { + piVar5 = *(int **)(param_1 + 6); + piVar6 = piVar5; + piVar7 = piVar4; + if (piVar5 != (int *)0x0) { + do { + piVar1 = piVar6; + piVar6 = *(int **)(piVar1 + 4); + } while (*(int **)(piVar1 + 4) != (int *)0x0); + piVar7 = *(int **)(piVar1 + 6); + if (param_1 != piVar1) { + *(int **)(piVar4 + 2) = piVar1; + *(int **)(piVar1 + 4) = piVar4; + piVar4 = piVar1; + if (piVar5 != piVar1) { + piVar4 = *(int **)(piVar1 + 2); + piVar6 = piVar4; + if (piVar7 != (int *)0x0) { + *(int **)(piVar7 + 2) = piVar4; + piVar6 = *(int **)(piVar1 + 2); + } + *(int **)(piVar6 + 4) = piVar7; + *(int **)(piVar1 + 6) = piVar5; + *(int **)(*(long *)(param_1 + 6) + 8) = piVar1; + } + if (*(int **)(param_2 + 8) == param_1) { + *(int **)(param_2 + 8) = piVar1; + lVar3 = *(long *)(param_1 + 2); + } + else { + lVar3 = *(long *)(param_1 + 2); + if (*(int **)(lVar3 + 0x10) == param_1) { + *(int **)(lVar3 + 0x10) = piVar1; + } + else { + *(int **)(lVar3 + 0x18) = piVar1; + } + } + iVar2 = *piVar1; + *piVar1 = *param_1; + *(long *)(piVar1 + 2) = lVar3; + *param_1 = iVar2; + goto LAB_003fe498; + } + } + } + piVar4 = *(int **)(param_1 + 2); + if (piVar7 != (int *)0x0) { + *(int **)(piVar7 + 2) = piVar4; + } + if (*(int **)(param_2 + 8) == param_1) { + *(int **)(param_2 + 8) = piVar7; + } + else { + lVar3 = *(long *)(param_1 + 2); + if (*(int **)(lVar3 + 0x10) == param_1) { + *(int **)(lVar3 + 0x10) = piVar7; + } + else { + *(int **)(lVar3 + 0x18) = piVar7; + } + } + if (*(int **)(param_2 + 0x10) == param_1) { + piVar6 = piVar7; + if (*(long *)(param_1 + 6) == 0) { + *(undefined8 *)(param_2 + 0x10) = *(undefined8 *)(param_1 + 2); + } + else { + do { + piVar5 = piVar6; + piVar6 = *(int **)(piVar5 + 4); + } while (piVar6 != (int *)0x0); + *(int **)(param_2 + 0x10) = piVar5; + } + } + if (*(int **)(param_2 + 0x18) == param_1) { + piVar6 = piVar7; + if (*(long *)(param_1 + 4) == 0) { + *(undefined8 *)(param_2 + 0x18) = *(undefined8 *)(param_1 + 2); + iVar2 = *param_1; + } + else { + do { + piVar5 = piVar6; + piVar6 = *(int **)(piVar5 + 6); + } while (piVar6 != (int *)0x0); + iVar2 = *param_1; + *(int **)(param_2 + 0x18) = piVar5; + } + } + else { + iVar2 = *param_1; + } +LAB_003fe498: + lVar3 = param_2 + 8; + if (iVar2 == 0) { + return param_1; + } +LAB_003fe4e0: + do { + piVar6 = piVar7; + if (*(int **)(param_2 + 8) == piVar7) { +LAB_003fe594: + if (piVar6 == (int *)0x0) { + return param_1; + } +LAB_003fe598: + *piVar6 = 1; + return param_1; + } + if ((piVar7 != (int *)0x0) && (*piVar7 != 1)) goto LAB_003fe598; + piVar6 = *(int **)(piVar4 + 4); + if (piVar6 == piVar7) { + piVar7 = *(int **)(piVar4 + 6); + if (*piVar7 == 0) { + *piVar7 = 1; + *piVar4 = 0; + FUN_003fdefc(piVar4,lVar3); + piVar7 = *(int **)(piVar4 + 6); + } + piVar5 = *(int **)(piVar7 + 4); + if ((piVar5 == (int *)0x0) || (*piVar5 == 1)) { + piVar1 = *(int **)(piVar7 + 6); + if ((piVar1 == (int *)0x0) || (*piVar1 == 1)) { + *piVar7 = 0; + piVar7 = piVar4; + piVar4 = *(int **)(piVar4 + 2); + goto LAB_003fe4e0; + } +LAB_003fe56c: + *piVar7 = *piVar4; + *piVar4 = 1; +LAB_003fe580: + *piVar1 = 1; + } + else { + piVar1 = *(int **)(piVar7 + 6); + if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_003fe56c; + *piVar5 = 1; + *piVar7 = 0; + FUN_003fdf5c(piVar7,lVar3); + piVar1 = *(int **)(*(int **)(piVar4 + 6) + 6); + **(int **)(piVar4 + 6) = *piVar4; + *piVar4 = 1; + if (piVar1 != (int *)0x0) goto LAB_003fe580; + } + FUN_003fdefc(piVar4,lVar3); + goto LAB_003fe594; + } + if (*piVar6 == 0) { + *piVar6 = 1; + *piVar4 = 0; + FUN_003fdf5c(piVar4,lVar3); + piVar6 = *(int **)(piVar4 + 4); + } + piVar5 = *(int **)(piVar6 + 6); + if ((piVar5 != (int *)0x0) && (*piVar5 != 1)) { + piVar1 = *(int **)(piVar6 + 4); + if ((piVar1 == (int *)0x0) || (*piVar1 == 1)) { + *piVar5 = 1; + *piVar6 = 0; + FUN_003fdefc(piVar6,lVar3); + piVar1 = *(int **)(*(int **)(piVar4 + 4) + 4); + **(int **)(piVar4 + 4) = *piVar4; + *piVar4 = 1; + if (piVar1 != (int *)0x0) goto LAB_003fe5e8; + } + else { +LAB_003fe5d8: + *piVar6 = *piVar4; + *piVar4 = 1; +LAB_003fe5e8: + *piVar1 = 1; + } + FUN_003fdf5c(piVar4,lVar3); + piVar6 = piVar7; + if (piVar7 == (int *)0x0) { + return param_1; + } + goto LAB_003fe598; + } + piVar1 = *(int **)(piVar6 + 4); + if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_003fe5d8; + piVar5 = *(int **)(piVar4 + 2); + *piVar6 = 0; + piVar7 = piVar4; + piVar4 = piVar5; + } while( true ); +} + + +================================================================== + +### FUNC 003fe78c (52 bytes) name=FUN_003fe78c + +int FUN_003fe78c(int *param_1,int *param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + iVar1 = 0; + while( true ) { + if (*param_1 == 1) { + iVar1 = iVar1 + 1; + } + if (param_1 == param_2) break; + param_1 = *(int **)(param_1 + 2); + } + return iVar1; + } + return 0; +} + + +================================================================== + +### FUNC 003fe7c0 (12 bytes) name=FUN_003fe7c0 + +undefined4 FUN_003fe7c0(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x24); +} + + +================================================================== + +### FUNC 003fe7cc (12 bytes) name=FUN_003fe7cc + +undefined4 FUN_003fe7cc(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x28); +} + + +================================================================== + +### FUNC 003fe7d8 (12 bytes) name=FUN_003fe7d8 + +undefined4 FUN_003fe7d8(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x60); +} + + +================================================================== + +### FUNC 003fe7e4 (12 bytes) name=FUN_003fe7e4 + +undefined4 FUN_003fe7e4(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 100); +} + + +================================================================== + +### FUNC 003fe7f0 (12 bytes) name=FUN_003fe7f0 + +undefined4 FUN_003fe7f0(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x68); +} + + +================================================================== + +### FUNC 003fe7fc (12 bytes) name=FUN_003fe7fc + +undefined4 FUN_003fe7fc(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x24); +} + + +================================================================== + +### FUNC 003fe808 (12 bytes) name=FUN_003fe808 + +undefined4 FUN_003fe808(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x28); +} + + +================================================================== + +### FUNC 003fe814 (12 bytes) name=FUN_003fe814 + +undefined4 FUN_003fe814(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x60); +} + + +================================================================== + +### FUNC 003fe820 (12 bytes) name=FUN_003fe820 + +undefined4 FUN_003fe820(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 100); +} + + +================================================================== + +### FUNC 003fe82c (12 bytes) name=FUN_003fe82c + +undefined4 FUN_003fe82c(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x68); +} + + +================================================================== + +### FUNC 003fe838 (16 bytes) name=FUN_003fe838 + +void FUN_003fe838(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8880; + FUN_003f054c(); + return; +} + + +================================================================== + +### FUNC 003fe848 (16 bytes) name=FUN_003fe848 + +void FUN_003fe848(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f88f0; + FUN_003f0494(); + return; +} + + +================================================================== + +### FUNC 003fe858 (12 bytes) name=FUN_003fe858 + +undefined4 FUN_003fe858(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x48); +} + + +================================================================== + +### FUNC 003fe864 (12 bytes) name=FUN_003fe864 + +undefined4 FUN_003fe864(long param_1) + +{ + return *(undefined4 *)(*(long *)(param_1 + 0x10) + 0x4c); +} + + +================================================================== + +### FUNC 003fe870 (16 bytes) name=FUN_003fe870 + +void FUN_003fe870(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8710; + FUN_003f0a40(); + return; +} + + +================================================================== + +### FUNC 003fe880 (8 bytes) name=FUN_003fe880 + +undefined8 FUN_003fe880(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003fe888 (8 bytes) name=FUN_003fe888 + +undefined8 FUN_003fe888(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 003fe890 (4 bytes) name=FUN_003fe890 + +void FUN_003fe890(void) + +{ + return; +} + + +================================================================== + +### FUNC 003fe894 (36 bytes) name=FUN_003fe894 + +ulong FUN_003fe894(undefined8 param_1,uint *param_2,uint *param_3) + +{ + ulong uVar1; + + uVar1 = 0; + for (; param_2 < param_3; param_2 = param_2 + 1) { + uVar1 = (ulong)*param_2 + (uVar1 >> 0x39 | uVar1 << 7); + } + return uVar1; +} + + +================================================================== + +### FUNC 003fe8b8 (16 bytes) name=FUN_003fe8b8 + +void FUN_003fe8b8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8960; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe8c8 (16 bytes) name=FUN_003fe8c8 + +void FUN_003fe8c8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8990; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe8d8 (16 bytes) name=FUN_003fe8d8 + +void FUN_003fe8d8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8760; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe8e8 (16 bytes) name=FUN_003fe8e8 + +void FUN_003fe8e8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f87e0; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe8f8 (16 bytes) name=FUN_003fe8f8 + +void FUN_003fe8f8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8840; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe908 (16 bytes) name=FUN_003fe908 + +void FUN_003fe908(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f89c0; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe918 (16 bytes) name=FUN_003fe918 + +void FUN_003fe918(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f89c0; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe928 (16 bytes) name=FUN_003fe928 + +void FUN_003fe928(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8a20; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe938 (16 bytes) name=FUN_003fe938 + +void FUN_003fe938(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8a20; + FUN_003ecdfc(); + return; +} + + +================================================================== + +### FUNC 003fe948 (48 bytes) name=FUN_003fe948 + +undefined8 FUN_003fe948(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x10),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fe978 (48 bytes) name=FUN_003fe978 + +undefined8 FUN_003fe978(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x10),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fe9a8 (48 bytes) name=FUN_003fe9a8 + +undefined8 FUN_003fe9a8(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_00410a08(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x10),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fe9d8 (48 bytes) name=FUN_003fe9d8 + +undefined8 FUN_003fe9d8(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x30),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fea08 (48 bytes) name=FUN_003fea08 + +undefined8 FUN_003fea08(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x40),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fea38 (48 bytes) name=FUN_003fea38 + +undefined8 FUN_003fea38(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x50),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fea68 (48 bytes) name=FUN_003fea68 + +undefined8 FUN_003fea68(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x30),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003fea98 (48 bytes) name=FUN_003fea98 + +undefined8 FUN_003fea98(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x40),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003feac8 (48 bytes) name=FUN_003feac8 + +undefined8 FUN_003feac8(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x50),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003feaf8 (48 bytes) name=FUN_003feaf8 + +undefined8 FUN_003feaf8(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x28),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003feb28 (48 bytes) name=FUN_003feb28 + +undefined8 FUN_003feb28(undefined8 param_1,long param_2) + +{ + undefined1 auStack_8 [8]; + + FUN_0041786c(param_1,*(undefined8 *)(*(long *)(param_2 + 0x10) + 0x38),auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 003feb58 (100 bytes) name=FUN_003feb58 + +void FUN_003feb58(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8ac0; + if (*(char *)(param_1 + 0x13) != '\0') { + if ((void *)param_1[2] != (void *)0x0) { + operator_delete__((void *)param_1[2]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete__((void *)param_1[6]); + } + if ((void *)param_1[8] != (void *)0x0) { + operator_delete__((void *)param_1[8]); + } + if ((void *)param_1[10] != (void *)0x0) { + operator_delete__((void *)param_1[10]); + } + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003febbc (100 bytes) name=FUN_003febbc + +void FUN_003febbc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8ae0; + if (*(char *)(param_1 + 0x13) != '\0') { + if ((void *)param_1[2] != (void *)0x0) { + operator_delete__((void *)param_1[2]); + } + if ((void *)param_1[6] != (void *)0x0) { + operator_delete__((void *)param_1[6]); + } + if ((void *)param_1[8] != (void *)0x0) { + operator_delete__((void *)param_1[8]); + } + if ((void *)param_1[10] != (void *)0x0) { + operator_delete__((void *)param_1[10]); + } + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003fec20 (88 bytes) name=FUN_003fec20 + +void FUN_003fec20(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8b00; + if (*(char *)(param_1 + 0x29) != '\0') { + if ((void *)param_1[2] != (void *)0x0) { + operator_delete__((void *)param_1[2]); + } + if ((void *)param_1[5] != (void *)0x0) { + operator_delete__((void *)param_1[5]); + } + if ((void *)param_1[7] != (void *)0x0) { + operator_delete__((void *)param_1[7]); + } + } + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003fec78 (36 bytes) name=FUN_003fec78 + +void FUN_003fec78(void *param_1) + +{ + FUN_003feb58(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fec9c (36 bytes) name=FUN_003fec9c + +void FUN_003fec9c(void *param_1) + +{ + FUN_003febbc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fecc0 (48 bytes) name=FUN_003fecc0 + +void FUN_003fecc0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8880; + FUN_003f054c(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fecf0 (48 bytes) name=FUN_003fecf0 + +void FUN_003fecf0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f88f0; + FUN_003f0494(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fed20 (48 bytes) name=FUN_003fed20 + +void FUN_003fed20(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8960; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fed50 (48 bytes) name=FUN_003fed50 + +void FUN_003fed50(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8990; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fed80 (36 bytes) name=FUN_003fed80 + +void FUN_003fed80(void *param_1) + +{ + FUN_003fec20(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003feda4 (48 bytes) name=FUN_003feda4 + +void FUN_003feda4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8710; + FUN_003f0a40(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fedd4 (48 bytes) name=FUN_003fedd4 + +void FUN_003fedd4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8760; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fee04 (48 bytes) name=FUN_003fee04 + +void FUN_003fee04(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f87e0; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fee34 (48 bytes) name=FUN_003fee34 + +void FUN_003fee34(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8840; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fee64 (48 bytes) name=FUN_003fee64 + +void FUN_003fee64(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f89c0; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fee94 (48 bytes) name=FUN_003fee94 + +void FUN_003fee94(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f89c0; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003feec4 (48 bytes) name=FUN_003feec4 + +void FUN_003feec4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8a20; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003feef4 (48 bytes) name=FUN_003feef4 + +void FUN_003feef4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8a20; + FUN_003ecdfc(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fef24 (48 bytes) name=FUN_003fef24 + +void FUN_003fef24(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe390; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003fef68 (56 bytes) name=FUN_003fef68 + +void FUN_003fef68(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe390; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003fefb4 (48 bytes) name=FUN_003fefb4 + +void FUN_003fefb4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe390; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003feff8 (56 bytes) name=FUN_003feff8 + +void FUN_003feff8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe390; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ff044 (48 bytes) name=FUN_003ff044 + +void FUN_003ff044(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8690; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003ff088 (56 bytes) name=FUN_003ff088 + +void FUN_003ff088(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8690; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ff0d4 (48 bytes) name=FUN_003ff0d4 + +void FUN_003ff0d4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8690; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003ff118 (56 bytes) name=FUN_003ff118 + +void FUN_003ff118(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8690; + FUN_0041a634(param_1 + 2); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ff164 (100 bytes) name=FUN_003ff164 + +void FUN_003ff164(undefined8 *param_1) + +{ + void *pvVar1; + void *pvVar2; + + pvVar2 = (void *)param_1[4]; + *param_1 = &PTR_FUN_004f8860; + pvVar1 = (void *)FUN_003ed4bc(); + if ((pvVar2 != pvVar1) && (pvVar2 != (void *)0x0)) { + operator_delete__(pvVar2); + } + if ((long *)param_1[2] != (long *)0x0) { + (**(code **)(*(long *)param_1[2] + 8))(); + } + FUN_0041a634(param_1 + 3); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 003ff1dc (36 bytes) name=FUN_003ff1dc + +void FUN_003ff1dc(void *param_1) + +{ + FUN_003ff164(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ff200 (16 bytes) name=FUN_003ff200 + +void FUN_003ff200(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe430; + FUN_0041a718(); + return; +} + + +================================================================== + +### FUNC 003ff210 (48 bytes) name=FUN_003ff210 + +void FUN_003ff210(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe430; + FUN_0041a718(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 003ff240 (28 bytes) name=FUN_003ff240 + +void FUN_003ff240(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003ff25c (68 bytes) name=FUN_003ff25c + +void FUN_003ff25c(void *param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar2 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar2 < 1) { + operator_delete(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 003ff2a0 (696 bytes) name=FUN_003ff2a0 + +uint FUN_003ff2a0(undefined8 param_1,wchar_t *param_2,wchar_t *param_3,wchar_t *param_4, + wchar_t *param_5) + +{ + char cVar1; + bool bVar2; + wchar_t *__s; + uint uVar3; + size_t *psVar4; + size_t sVar5; + wchar_t wVar6; + wchar_t *__s1; + size_t sVar7; + wchar_t *pwVar8; + wchar_t *pwVar9; + long lVar10; + undefined1 auStack_8 [8]; + + if (param_2 == param_3) { + __s1 = (wchar_t *)(PTR_DAT_00501ab8 + 0x18); + } + else { + if ((param_2 == (wchar_t *)0x0) && (param_3 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + sVar7 = (long)param_3 - (long)param_2 >> 2; + psVar4 = (size_t *)FUN_004164a8(sVar7,0,auStack_8); + __s1 = (wchar_t *)(psVar4 + 3); + if (sVar7 == 1) { + *(wchar_t *)(psVar4 + 3) = *param_2; + } + else { + wmemcpy(__s1,param_2,sVar7); + } + if (psVar4 != (size_t *)PTR_DAT_00501ab8) { + *(undefined4 *)(psVar4 + 2) = 0; + *psVar4 = sVar7; + *(undefined4 *)((long)psVar4 + ((long)param_3 - (long)param_2) + 0x18) = 0; + } + } + if (param_4 == param_5) { + pwVar9 = (wchar_t *)(PTR_DAT_00501ab8 + 0x18); + sVar7 = *(size_t *)PTR_DAT_00501ab8; + } + else { + if ((param_4 == (wchar_t *)0x0) && (param_5 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + sVar7 = (long)param_5 - (long)param_4 >> 2; + psVar4 = (size_t *)FUN_004164a8(sVar7,0,auStack_8); + pwVar9 = (wchar_t *)(psVar4 + 3); + if (sVar7 == 1) { + *(wchar_t *)(psVar4 + 3) = *param_4; + } + else { + wmemcpy(pwVar9,param_4,sVar7); + } + if (psVar4 == (size_t *)PTR_DAT_00501ab8) { + sVar7 = *psVar4; + } + else { + *(undefined4 *)(psVar4 + 2) = 0; + *psVar4 = sVar7; + *(undefined4 *)((long)psVar4 + ((long)param_5 - (long)param_4) + 0x18) = 0; + } + } + lVar10 = *(long *)(__s1 + -6); + uVar3 = FUN_0041ad3c(param_1,__s1,pwVar9); + pwVar8 = __s1; + __s = pwVar9; + do { + if (uVar3 != 0) { + if (pwVar9 + -6 != (wchar_t *)PTR_DAT_00501ab8) { +LAB_003ff46c: + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + wVar6 = pwVar9[-2]; + pwVar9[-2] = wVar6 + L'\xffffffff'; + } + else { + pwVar8 = pwVar9 + -2; + do { + wVar6 = *pwVar8; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(pwVar8,0x10); + if (bVar2) { + *pwVar8 = wVar6 + L'\xffffffff'; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (wVar6 < L'\x01') { + operator_delete(pwVar9 + -6); + } + } +LAB_003ff40c: + if (__s1 + -6 != (wchar_t *)PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + wVar6 = __s1[-2]; + __s1[-2] = wVar6 + L'\xffffffff'; + } + else { + pwVar9 = __s1 + -2; + do { + wVar6 = *pwVar9; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(pwVar9,0x10); + if (bVar2) { + *pwVar9 = wVar6 + L'\xffffffff'; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (wVar6 < L'\x01') { + operator_delete(__s1 + -6); + } + } + return uVar3; + } + sVar5 = wcslen(pwVar8); + pwVar8 = pwVar8 + sVar5; + sVar5 = wcslen(__s); + if (__s + sVar5 == pwVar9 + sVar7) { + uVar3 = (uint)(pwVar8 != __s1 + lVar10); +LAB_003ff3fc: + if (pwVar9 + -6 != (wchar_t *)PTR_DAT_00501ab8) goto LAB_003ff46c; + goto LAB_003ff40c; + } + if (pwVar8 == __s1 + lVar10) { + uVar3 = 0xffffffff; + goto LAB_003ff3fc; + } + pwVar8 = pwVar8 + 1; + __s = __s + sVar5 + 1; + uVar3 = FUN_0041ad3c(param_1,pwVar8,__s); + } while( true ); +} + + +================================================================== + +### FUNC 003ff580 (608 bytes) name=FUN_003ff580 + +long * FUN_003ff580(long *param_1,undefined8 param_2,wchar_t *param_3,wchar_t *param_4) + +{ + char cVar1; + bool bVar2; + undefined *puVar3; + wchar_t wVar4; + size_t *psVar5; + ulong uVar6; + void *pvVar7; + long lVar8; + size_t sVar9; + wchar_t *__s; + long lVar10; + ulong uVar11; + wchar_t *pwVar12; + wchar_t *__s1; + undefined1 auStack_8 [8]; + + puVar3 = PTR_DAT_00501ab8; + __s1 = (wchar_t *)(PTR_DAT_00501ab8 + 0x18); + *param_1 = (long)__s1; + if (param_3 == param_4) { + uVar11 = 0; + pwVar12 = __s1 + *(long *)puVar3; + } + else { + if ((param_3 == (wchar_t *)0x0) && (param_4 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + lVar10 = (long)param_4 - (long)param_3; + sVar9 = lVar10 >> 2; + psVar5 = (size_t *)FUN_004164a8(sVar9,0,auStack_8); + __s1 = (wchar_t *)(psVar5 + 3); + if (sVar9 == 1) { + *(wchar_t *)(psVar5 + 3) = *param_3; + } + else { + wmemcpy(__s1,param_3,sVar9); + } + if (psVar5 == (size_t *)PTR_DAT_00501ab8) { + sVar9 = *psVar5; + } + else { + *(undefined4 *)(psVar5 + 2) = 0; + *psVar5 = sVar9; + *(undefined4 *)((long)psVar5 + lVar10 + 0x18) = 0; + } + uVar11 = lVar10 >> 1; + pwVar12 = __s1 + sVar9; + uVar6 = 0xffffffffffffffff; + if (0x1fc0000000000000 < uVar11) goto LAB_003ff634; + } + uVar6 = uVar11 << 2; +LAB_003ff634: + pvVar7 = operator_new__(uVar6); + __s = __s1; + while( true ) { + uVar6 = FUN_0041ad64(param_2,pvVar7,__s,uVar11); + if (uVar11 <= uVar6) { + uVar11 = uVar6 + 1; + operator_delete__(pvVar7); + uVar6 = uVar11 * 4; + if (0x1fc0000000000000 < uVar11) { + uVar6 = 0xffffffffffffffff; + } + pvVar7 = operator_new__(uVar6); + uVar6 = FUN_0041ad64(param_2,pvVar7,__s,uVar11); + } + FUN_00418664(param_1,pvVar7,uVar6); + sVar9 = wcslen(__s); + if (__s + sVar9 == pwVar12) break; + lVar8 = *param_1; + __s = __s + sVar9 + 1; + lVar10 = *(long *)(lVar8 + -0x18); + uVar6 = lVar10 + 1; + if ((*(ulong *)(lVar8 + -0x10) < uVar6) || (0 < *(int *)(lVar8 + -8))) { + FUN_00418208(param_1,uVar6); + lVar8 = *param_1; + lVar10 = *(long *)(lVar8 + -0x18); + } + *(undefined4 *)(lVar8 + lVar10 * 4) = 0; + if ((ulong *)(lVar8 + -0x18) != (ulong *)PTR_DAT_00501ab8) { + *(undefined4 *)(lVar8 + -8) = 0; + *(ulong *)(lVar8 + -0x18) = uVar6; + *(undefined4 *)(lVar8 + uVar6 * 4) = 0; + } + } + operator_delete__(pvVar7); + if (__s1 + -6 != (wchar_t *)PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + wVar4 = __s1[-2]; + __s1[-2] = wVar4 + L'\xffffffff'; + } + else { + pwVar12 = __s1 + -2; + do { + wVar4 = *pwVar12; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(pwVar12,0x10); + if (bVar2) { + *pwVar12 = wVar4 + L'\xffffffff'; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (wVar4 < L'\x01') { + operator_delete(__s1 + -6); + } + } + return param_1; +} + + +================================================================== + +### FUNC 003ff854 (68 bytes) name=FUN_003ff854 + +void FUN_003ff854(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fe320; + param_1[2] = 0; + FUN_003f0330(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003ff8ac (68 bytes) name=FUN_003ff8ac + +void FUN_003ff8ac(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004fe320; + FUN_003f0330(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003ff904 (60 bytes) name=FUN_003ff904 + +void FUN_003ff904(undefined8 *param_1,undefined8 param_2,undefined8 param_3,long param_4) + +{ + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fe320; + FUN_003f0330(); + return; +} + + +================================================================== + +### FUNC 003ff954 (28 bytes) name=FUN_003ff954 + +void FUN_003ff954(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003ff970 (28 bytes) name=FUN_003ff970 + +void FUN_003ff970(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003ff98c (44 bytes) name=FUN_003ff98c + +undefined8 FUN_003ff98c(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x20))(); + return param_1; +} + + +================================================================== + +### FUNC 003ff9b8 (44 bytes) name=FUN_003ff9b8 + +undefined8 FUN_003ff9b8(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x28))(); + return param_1; +} + + +================================================================== + +### FUNC 003ff9e4 (44 bytes) name=FUN_003ff9e4 + +undefined8 FUN_003ff9e4(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x30))(); + return param_1; +} + + +================================================================== + +### FUNC 003ffa10 (44 bytes) name=FUN_003ffa10 + +undefined8 FUN_003ffa10(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x38))(); + return param_1; +} + + +================================================================== + +### FUNC 003ffa3c (28 bytes) name=FUN_003ffa3c + +void FUN_003ffa3c(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003ffa58 (28 bytes) name=FUN_003ffa58 + +void FUN_003ffa58(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 003ffa74 (28 bytes) name=FUN_003ffa74 + +void FUN_003ffa74(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003ffa90 (68 bytes) name=FUN_003ffa90 + +void FUN_003ffa90(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fe2b0; + param_1[2] = 0; + FUN_003f01cc(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003ffae8 (68 bytes) name=FUN_003ffae8 + +void FUN_003ffae8(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004fe2b0; + FUN_003f01cc(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 003ffb40 (60 bytes) name=FUN_003ffb40 + +void FUN_003ffb40(undefined8 *param_1,undefined8 param_2,undefined8 param_3,long param_4) + +{ + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fe2b0; + FUN_003f01cc(); + return; +} + + +================================================================== + +### FUNC 003ffb90 (28 bytes) name=FUN_003ffb90 + +void FUN_003ffb90(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003ffbac (28 bytes) name=FUN_003ffbac + +void FUN_003ffbac(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003ffbc8 (44 bytes) name=FUN_003ffbc8 + +undefined8 FUN_003ffbc8(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x20))(); + return param_1; +} + + +================================================================== + +### FUNC 003ffbf4 (44 bytes) name=FUN_003ffbf4 + +undefined8 FUN_003ffbf4(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x28))(); + return param_1; +} + + +================================================================== + +### FUNC 003ffc20 (44 bytes) name=FUN_003ffc20 + +undefined8 FUN_003ffc20(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x30))(); + return param_1; +} + + +================================================================== + +### FUNC 003ffc4c (44 bytes) name=FUN_003ffc4c + +undefined8 FUN_003ffc4c(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x38))(); + return param_1; +} + + +================================================================== + +### FUNC 003ffc78 (28 bytes) name=FUN_003ffc78 + +void FUN_003ffc78(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 003ffc94 (28 bytes) name=FUN_003ffc94 + +void FUN_003ffc94(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 003ffcb0 (28 bytes) name=FUN_003ffcb0 + +void FUN_003ffcb0(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 003ffccc (112 bytes) name=FUN_003ffccc + +void FUN_003ffccc(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_004f8ac0; + *(undefined4 *)((long)param_1 + 0x24) = 0; + *(undefined4 *)(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; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined1 *)((long)param_1 + 100) = 0; + *(undefined1 *)((long)param_1 + 0x65) = 0; + *(undefined1 *)((long)param_1 + 0x66) = 0; + *(undefined1 *)((long)param_1 + 0x67) = 0; + *(undefined1 *)(param_1 + 0xd) = 0; + *(undefined1 *)((long)param_1 + 0x69) = 0; + *(undefined1 *)((long)param_1 + 0x6a) = 0; + *(undefined1 *)((long)param_1 + 0x6b) = 0; + *(undefined1 *)(param_1 + 0x13) = 0; + return; +} + + +================================================================== + +### FUNC 003ffd3c (112 bytes) name=FUN_003ffd3c + +void FUN_003ffd3c(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_004f8ae0; + *(undefined4 *)((long)param_1 + 0x24) = 0; + *(undefined4 *)(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; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined1 *)((long)param_1 + 100) = 0; + *(undefined1 *)((long)param_1 + 0x65) = 0; + *(undefined1 *)((long)param_1 + 0x66) = 0; + *(undefined1 *)((long)param_1 + 0x67) = 0; + *(undefined1 *)(param_1 + 0xd) = 0; + *(undefined1 *)((long)param_1 + 0x69) = 0; + *(undefined1 *)((long)param_1 + 0x6a) = 0; + *(undefined1 *)((long)param_1 + 0x6b) = 0; + *(undefined1 *)(param_1 + 0x13) = 0; + return; +} + + +================================================================== + +### FUNC 003ffdac (192 bytes) name=FUN_003ffdac + +void FUN_003ffdac(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 local_8; + + *param_1 = &PTR_FUN_004fe320; + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = 0; + FUN_003f0330(param_1,0,0); + *param_1 = &PTR_FUN_004f8880; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a600(&local_8,param_2,0); + FUN_003f0330(param_1,local_8,0); + FUN_0041a634(&local_8); + return; + } + return; +} + + +================================================================== + +### FUNC 003ffe94 (192 bytes) name=FUN_003ffe94 + +void FUN_003ffe94(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 local_8; + + *param_1 = &PTR_FUN_004fe2b0; + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = 0; + FUN_003f01cc(param_1,0,0); + *param_1 = &PTR_FUN_004f88f0; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a600(&local_8,param_2,0); + FUN_003f01cc(param_1,local_8,0); + FUN_0041a634(&local_8); + return; + } + return; +} + + +================================================================== + +### FUNC 003fff7c (28 bytes) name=FUN_003fff7c + +void FUN_003fff7c(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f8960; + return; +} + + +================================================================== + +### FUNC 003fff98 (48 bytes) name=FUN_003fff98 + +void FUN_003fff98(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 003fffc8 (48 bytes) name=FUN_003fffc8 + +void FUN_003fffc8(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 003ffff8 (28 bytes) name=FUN_003ffff8 + +void FUN_003ffff8(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f8990; + return; +} + + +================================================================== + +### FUNC 00400014 (28 bytes) name=FUN_00400014 + +void FUN_00400014(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400030 (28 bytes) name=FUN_00400030 + +void FUN_00400030(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 0040004c (64 bytes) name=FUN_0040004c + +void FUN_0040004c(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fe260; + FUN_003f07dc(param_1,0); + return; +} + + +================================================================== + +### FUNC 004000a0 (64 bytes) name=FUN_004000a0 + +void FUN_004000a0(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004fe260; + FUN_003f07dc(param_1,0); + return; +} + + +================================================================== + +### FUNC 004000f4 (60 bytes) name=FUN_004000f4 + +void FUN_004000f4(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004fe260; + FUN_003f07dc(); + return; +} + + +================================================================== + +### FUNC 00400144 (28 bytes) name=FUN_00400144 + +void FUN_00400144(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400160 (28 bytes) name=FUN_00400160 + +void FUN_00400160(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 0040017c (44 bytes) name=FUN_0040017c + +undefined8 FUN_0040017c(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x20))(); + return param_1; +} + + +================================================================== + +### FUNC 004001a8 (44 bytes) name=FUN_004001a8 + +undefined8 FUN_004001a8(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x28))(); + return param_1; +} + + +================================================================== + +### FUNC 004001d4 (44 bytes) name=FUN_004001d4 + +undefined8 FUN_004001d4(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x30))(); + return param_1; +} + + +================================================================== + +### FUNC 00400200 (68 bytes) name=FUN_00400200 + +void FUN_00400200(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_004f8b00; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + *(undefined4 *)(param_1 + 9) = 0; + *(undefined4 *)((long)param_1 + 0x4c) = 0; + *(undefined1 *)(param_1 + 0x29) = 0; + return; +} + + +================================================================== + +### FUNC 00400244 (184 bytes) name=FUN_00400244 + +void FUN_00400244(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 local_8; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fe260; + param_1[2] = 0; + FUN_003f07dc(param_1,0); + *param_1 = &PTR_FUN_004f8710; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a600(&local_8,param_2,0); + FUN_003f07dc(param_1,local_8); + FUN_0041a634(&local_8); + return; + } + return; +} + + +================================================================== + +### FUNC 00400324 (28 bytes) name=FUN_00400324 + +void FUN_00400324(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f8760; + return; +} + + +================================================================== + +### FUNC 00400340 (28 bytes) name=FUN_00400340 + +void FUN_00400340(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 0040035c (28 bytes) name=FUN_0040035c + +void FUN_0040035c(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 00400378 (28 bytes) name=FUN_00400378 + +void FUN_00400378(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 00400394 (28 bytes) name=FUN_00400394 + +void FUN_00400394(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 004003b0 (28 bytes) name=FUN_004003b0 + +void FUN_004003b0(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 004003cc (28 bytes) name=FUN_004003cc + +void FUN_004003cc(long *param_1) + +{ + (**(code **)(*param_1 + 0x38))(); + return; +} + + +================================================================== + +### FUNC 004003e8 (28 bytes) name=FUN_004003e8 + +void FUN_004003e8(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 00400404 (28 bytes) name=FUN_00400404 + +void FUN_00400404(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 00400420 (28 bytes) name=FUN_00400420 + +void FUN_00400420(long *param_1) + +{ + (**(code **)(*param_1 + 0x50))(); + return; +} + + +================================================================== + +### FUNC 0040043c (28 bytes) name=FUN_0040043c + +void FUN_0040043c(long *param_1) + +{ + (**(code **)(*param_1 + 0x58))(); + return; +} + + +================================================================== + +### FUNC 00400458 (28 bytes) name=FUN_00400458 + +void FUN_00400458(long *param_1) + +{ + (**(code **)(*param_1 + 0x60))(); + return; +} + + +================================================================== + +### FUNC 00400474 (28 bytes) name=FUN_00400474 + +void FUN_00400474(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f87e0; + return; +} + + +================================================================== + +### FUNC 00400490 (28 bytes) name=FUN_00400490 + +void FUN_00400490(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 004004ac (28 bytes) name=FUN_004004ac + +void FUN_004004ac(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 004004c8 (28 bytes) name=FUN_004004c8 + +void FUN_004004c8(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 004004e4 (28 bytes) name=FUN_004004e4 + +void FUN_004004e4(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 00400500 (28 bytes) name=FUN_00400500 + +void FUN_00400500(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 0040051c (28 bytes) name=FUN_0040051c + +void FUN_0040051c(long *param_1) + +{ + (**(code **)(*param_1 + 0x38))(); + return; +} + + +================================================================== + +### FUNC 00400538 (28 bytes) name=FUN_00400538 + +void FUN_00400538(long *param_1) + +{ + (**(code **)(*param_1 + 0x40))(); + return; +} + + +================================================================== + +### FUNC 00400554 (28 bytes) name=FUN_00400554 + +void FUN_00400554(long *param_1) + +{ + (**(code **)(*param_1 + 0x48))(); + return; +} + + +================================================================== + +### FUNC 00400570 (76 bytes) name=FUN_00400570 + +void FUN_00400570(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004f8860; + uVar1 = FUN_003ed4bc(); + param_1[4] = uVar1; + FUN_003fdbe4(param_1,0); + return; +} + + +================================================================== + +### FUNC 004005d0 (76 bytes) name=FUN_004005d0 + +void FUN_004005d0(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + param_1[2] = param_2; + *param_1 = &PTR_FUN_004f8860; + uVar1 = FUN_003ed4bc(); + param_1[4] = uVar1; + FUN_003fdbe4(param_1,0); + return; +} + + +================================================================== + +### FUNC 00400630 (160 bytes) name=FUN_00400630 + +void FUN_00400630(undefined8 *param_1,undefined8 param_2,char *param_3,long param_4) + +{ + int iVar1; + char *__s2; + size_t sVar2; + void *pvVar3; + + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + param_1[2] = 0; + *param_1 = &PTR_FUN_004f8860; + __s2 = (char *)FUN_003ed4bc(); + iVar1 = strcmp(param_3,__s2); + if (iVar1 == 0) { + param_1[4] = __s2; + } + else { + sVar2 = strlen(param_3); + pvVar3 = operator_new__(sVar2 + 1); + pvVar3 = memcpy(pvVar3,param_3,sVar2 + 1); + param_1[4] = pvVar3; + } + FUN_003fdbe4(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00400714 (28 bytes) name=FUN_00400714 + +void FUN_00400714(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x10); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x18); + return; +} + + +================================================================== + +### FUNC 00400730 (28 bytes) name=FUN_00400730 + +void FUN_00400730(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x20); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x28); + return; +} + + +================================================================== + +### FUNC 0040074c (28 bytes) name=FUN_0040074c + +void FUN_0040074c(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x30); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x38); + return; +} + + +================================================================== + +### FUNC 00400768 (4 bytes) name=FUN_00400768 + +void FUN_00400768(void) + +{ + return; +} + + +================================================================== + +### FUNC 0040076c (28 bytes) name=FUN_0040076c + +void FUN_0040076c(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x40); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x48); + return; +} + + +================================================================== + +### FUNC 00400788 (88 bytes) name=FUN_00400788 + +void FUN_00400788(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x58); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x60); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x68); + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x70); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x78); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x80); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x88); + return; +} + + +================================================================== + +### FUNC 004007e0 (88 bytes) name=FUN_004007e0 + +void FUN_004007e0(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x90); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x98); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xa0); + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xa8); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xb0); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xb8); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xc0); + return; +} + + +================================================================== + +### FUNC 00400838 (148 bytes) name=FUN_00400838 + +void FUN_00400838(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 200); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xd0); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xd8); + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xe0); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xe8); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xf0); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0xf8); + param_2[7] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x100); + param_2[8] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x108); + param_2[9] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x110); + param_2[10] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x118); + param_2[0xb] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x120); + return; +} + + +================================================================== + +### FUNC 004008cc (148 bytes) name=FUN_004008cc + +void FUN_004008cc(long param_1,undefined8 *param_2) + +{ + *param_2 = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x128); + param_2[1] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x130); + param_2[2] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x138); + param_2[3] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x140); + param_2[4] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x148); + param_2[5] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x150); + param_2[6] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x158); + param_2[7] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x160); + param_2[8] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x168); + param_2[9] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x170); + param_2[10] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x178); + param_2[0xb] = *(undefined8 *)(*(long *)(param_1 + 0x10) + 0x180); + return; +} + + +================================================================== + +### FUNC 00400960 (220 bytes) name=FUN_00400960 + +void FUN_00400960(undefined8 *param_1,long param_2) + +{ + param_1[2] = 0; + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + param_1[3] = 0; + param_1[4] = 0; + *param_1 = &PTR_FUN_004f8840; + 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; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x18] = 0; + param_1[0x19] = 0; + param_1[0x1a] = 0; + param_1[0x1b] = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + param_1[0x24] = 0; + param_1[0x25] = 0; + param_1[0x26] = 0; + param_1[0x27] = 0; + param_1[0x28] = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + param_1[0x2e] = 0; + param_1[0x2f] = 0; + param_1[0x30] = 0; + *(undefined1 *)(param_1 + 0x31) = 0; + return; +} + + +================================================================== + +### FUNC 00400a3c (28 bytes) name=FUN_00400a3c + +void FUN_00400a3c(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f89c0; + return; +} + + +================================================================== + +### FUNC 00400a58 (28 bytes) name=FUN_00400a58 + +void FUN_00400a58(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400a74 (28 bytes) name=FUN_00400a74 + +void FUN_00400a74(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f89f0; + return; +} + + +================================================================== + +### FUNC 00400a90 (28 bytes) name=FUN_00400a90 + +void FUN_00400a90(undefined8 *param_1,long param_2) + +{ + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f8a20; + return; +} + + +================================================================== + +### FUNC 00400aac (28 bytes) name=FUN_00400aac + +void FUN_00400aac(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400ac8 (28 bytes) name=FUN_00400ac8 + +void FUN_00400ac8(long *param_1) + +{ + (**(code **)(*param_1 + 0x18))(); + return; +} + + +================================================================== + +### FUNC 00400ae4 (28 bytes) name=FUN_00400ae4 + +void FUN_00400ae4(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 00400b00 (28 bytes) name=FUN_00400b00 + +void FUN_00400b00(long *param_1) + +{ + (**(code **)(*param_1 + 0x28))(); + return; +} + + +================================================================== + +### FUNC 00400b1c (28 bytes) name=FUN_00400b1c + +void FUN_00400b1c(long *param_1) + +{ + (**(code **)(*param_1 + 0x30))(); + return; +} + + +================================================================== + +### FUNC 00400b38 (28 bytes) name=FUN_00400b38 + +void FUN_00400b38(long *param_1) + +{ + (**(code **)(*param_1 + 0x38))(); + return; +} + + +================================================================== + +### FUNC 00400b54 (28 bytes) name=FUN_00400b54 + +void FUN_00400b54(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f8a70; + return; +} + + +================================================================== + +### FUNC 00400b70 (60 bytes) name=FUN_00400b70 + +void FUN_00400b70(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fe390; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 00400bc0 (60 bytes) name=FUN_00400bc0 + +void FUN_00400bc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,long param_4) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_4 != 0); + *param_1 = &PTR_FUN_004fe390; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 00400c10 (28 bytes) name=FUN_00400c10 + +void FUN_00400c10(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400c2c (28 bytes) name=FUN_00400c2c + +void FUN_00400c2c(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400c48 (44 bytes) name=FUN_00400c48 + +undefined8 FUN_00400c48(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x18))(); + return param_1; +} + + +================================================================== + +### FUNC 00400c74 (28 bytes) name=FUN_00400c74 + +void FUN_00400c74(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 00400c90 (8 bytes) name=FUN_00400c90 + +undefined8 FUN_00400c90(undefined8 param_1,undefined8 *param_2) + +{ + return *param_2; +} + + +================================================================== + +### FUNC 00400c98 (24 bytes) name=FUN_00400c98 + +long * FUN_00400c98(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501ab8 + 0x18); + return param_1; +} + + +================================================================== + +### FUNC 00400cb0 (168 bytes) name=FUN_00400cb0 + +void FUN_00400cb0(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 uVar2; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fe390; + uVar2 = FUN_003ed450(); + param_1[2] = uVar2; + *param_1 = &PTR_FUN_004fe490; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 00400d9c (144 bytes) name=FUN_00400d9c + +void FUN_00400d9c(undefined8 *param_1,char *param_2,undefined8 param_3) + +{ + int iVar1; + + FUN_0041a8fc(param_1,param_3); + *param_1 = &PTR_FUN_004fe430; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 00400e40 (60 bytes) name=FUN_00400e40 + +void FUN_00400e40(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004f8690; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 00400e90 (72 bytes) name=FUN_00400e90 + +void FUN_00400e90(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + undefined8 local_8; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f8690; + local_8 = param_2; + uVar1 = FUN_0041a63c(&local_8); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 00400ed8 (28 bytes) name=FUN_00400ed8 + +void FUN_00400ed8(long *param_1) + +{ + (**(code **)(*param_1 + 0x10))(); + return; +} + + +================================================================== + +### FUNC 00400ef4 (44 bytes) name=FUN_00400ef4 + +undefined8 FUN_00400ef4(undefined8 param_1,long *param_2) + +{ + (**(code **)(*param_2 + 0x18))(); + return param_1; +} + + +================================================================== + +### FUNC 00400f20 (28 bytes) name=FUN_00400f20 + +void FUN_00400f20(long *param_1) + +{ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### FUNC 00400f3c (168 bytes) name=FUN_00400f3c + +void FUN_00400f3c(undefined8 *param_1,char *param_2,long param_3) + +{ + int iVar1; + undefined8 uVar2; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004f8690; + uVar2 = FUN_003ed450(); + param_1[2] = uVar2; + *param_1 = &PTR_FUN_004f86d0; + iVar1 = strcmp(param_2,"C"); + if ((iVar1 != 0) && (iVar1 = strcmp(param_2,"POSIX"), iVar1 != 0)) { + FUN_0041a634(param_1 + 2); + FUN_0041a600(param_1 + 2,param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 00401028 (104 bytes) name=FUN_00401028 + +void FUN_00401028(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(PTR_DAT_00501ec0); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,PTR_PTR_005018a8,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00401090 (440 bytes) name=FUN_00401090 + +undefined1 [16] +FUN_00401090(long *param_1,undefined8 param_2,ulong param_3,long param_4,undefined4 param_5, + undefined8 param_6,int *param_7,int *param_8) + +{ + long *plVar1; + char cVar2; + int iVar4; + char cVar3; + long *plVar5; + int *piVar6; + char cVar7; + ulong uVar8; + undefined1 auVar9 [16]; + undefined1 auVar10 [16]; + + auVar9._8_8_ = param_3; + auVar9._0_8_ = param_2; + plVar5 = (long *)FUN_00401028(param_4 + 0xd0); + while( true ) { + plVar1 = auVar9._0_8_; + uVar8 = auVar9._8_8_ & 0xff; + while( true ) { + if (param_7 == param_8) goto LAB_004011f8; + cVar2 = (**(code **)(*plVar5 + 0x60))(plVar5,*param_7,0); + if (cVar2 == '%') break; + iVar4 = *param_7; + if ((int)uVar8 == 0) { + piVar6 = (int *)plVar1[5]; + if (piVar6 < (int *)plVar1[6]) { + *piVar6 = iVar4; + plVar1[5] = (long)(piVar6 + 1); + } + else { + iVar4 = (**(code **)(*plVar1 + 0x68))(plVar1); + } + uVar8 = (ulong)(iVar4 == -1); + } + param_7 = param_7 + 1; + } + piVar6 = param_7 + 1; + if (param_8 == piVar6) break; + cVar2 = (**(code **)(*plVar5 + 0x60))(plVar5,param_7[1],0); + if ((cVar2 == 'O') || (cVar2 == 'E')) { + piVar6 = param_7 + 2; + if (param_8 == piVar6) break; + cVar3 = (**(code **)(*plVar5 + 0x60))(plVar5,param_7[2],0); + cVar7 = cVar2; + } + else { + cVar7 = '\0'; + cVar3 = cVar2; + } + param_7 = piVar6 + 1; + auVar9 = (**(code **)(*param_1 + 0x10)) + (param_1,plVar1,param_3 & 0xffffffffffffff00 | uVar8,param_4,param_5,param_6, + cVar3,cVar7); + param_3 = param_3 & 0xffffffffffffff00; + } +LAB_004011f8: + auVar10._8_8_ = param_3 & 0xffffffffffffff00 | uVar8; + auVar10._0_8_ = plVar1; + return auVar10; +} + + +================================================================== + +### FUNC 00401248 (740 bytes) name=FUN_00401248 + +undefined1 [16] +FUN_00401248(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6, + int param_7,int param_8,ulong param_9,long param_10,uint *param_11) + +{ + uint uVar1; + long *plVar2; + ulong uVar3; + ulong uVar4; + bool bVar5; + bool bVar6; + ulong uVar7; + int iVar8; + int iVar9; + undefined1 auVar10 [16]; + + plVar2 = (long *)FUN_00401028(param_10 + 0xd0); + uVar3 = param_3 & 0xffffffff; + if (param_9 == 2) { + iVar9 = 10; + } + else { + iVar9 = 1000; + if (param_9 != 4) { + iVar9 = 1; + } + } + iVar8 = 0; + uVar7 = 0; + do { + if (param_2 == (long *)0x0) { +LAB_00401340: + param_2 = (long *)0x0; + if (param_4 == (long *)0x0) { +joined_r0x004012f0: + if (param_9 == uVar7) { + *param_6 = iVar8; + } + else if ((uVar7 == 2) && (param_9 == 4)) { + *param_6 = iVar8 + -100; + } + else { + *param_11 = *param_11 | 4; + } + auVar10._8_8_ = param_3 & 0xffffffff00000000 | uVar3; + auVar10._0_8_ = param_2; + return auVar10; + } + bVar5 = true; + bVar6 = true; +joined_r0x00401350: + if (param_5 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + param_5 = *(int *)param_4[2]; + } + else { + param_5 = (**(code **)(*param_4 + 0x48))(param_4); + } + bVar6 = bVar5; + if (param_5 == -1) { + param_4 = (long *)0x0; + } + } + if (((param_5 == -1) == bVar6) || (param_9 <= uVar7)) goto joined_r0x004012f0; + if (param_2 == (long *)0x0) { + uVar4 = 0xffffffff; + } + else { + uVar4 = uVar3; + if ((int)uVar3 == -1) { + if ((uint *)param_2[2] < (uint *)param_2[3]) { + uVar1 = *(uint *)param_2[2]; + } + else { + uVar1 = (**(code **)(*param_2 + 0x48))(param_2); + } + uVar4 = (ulong)uVar1; + uVar3 = uVar4; + if (uVar1 == 0xffffffff) { + param_2 = (long *)0x0; + } + } + } + } + else { + uVar4 = uVar3; + if ((int)uVar3 == -1) { + if ((uint *)param_2[2] < (uint *)param_2[3]) { + uVar1 = *(uint *)param_2[2]; + } + else { + uVar1 = (**(code **)(*param_2 + 0x48))(param_2); + } + if (uVar1 == 0xffffffff) goto LAB_00401340; + uVar4 = (ulong)uVar1; + } + uVar3 = uVar4; + if (param_4 != (long *)0x0) { + bVar5 = false; + bVar6 = false; + goto joined_r0x00401350; + } + if (param_9 <= uVar7) goto joined_r0x004012f0; + } + uVar1 = (**(code **)(*plVar2 + 0x60))(plVar2,uVar4,0x2a); + uVar1 = (uVar1 & 0xff) - 0x30; + if (9 < (uVar1 & 0xff)) goto joined_r0x004012f0; + iVar8 = iVar8 * 10 + uVar1; + if ((param_8 < iVar8 * iVar9) || (iVar8 * iVar9 + iVar9 <= param_7)) goto joined_r0x004012f0; + iVar9 = iVar9 / 10; + if (param_2 == (long *)0x0) { + uVar7 = uVar7 + 1; + } + else { + if ((ulong)param_2[2] < (ulong)param_2[3]) { + param_2[2] = param_2[2] + 4; + } + else { + (**(code **)(*param_2 + 0x50))(param_2); + } + uVar3 = 0xffffffff; + uVar7 = uVar7 + 1; + } + } while( true ); +} + + +================================================================== + +### FUNC 0040152c (432 bytes) name=FUN_0040152c + +undefined1 [16] +FUN_0040152c(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8) + +{ + uint uVar1; + int iVar2; + bool bVar3; + long *plVar4; + ulong uVar5; + undefined1 auVar6 [16]; + int local_8; + int local_4; + + FUN_00401028(param_6 + 0xd0); + local_4 = 0; + auVar6 = FUN_00401248(param_1,param_2,param_3,param_4,param_5,&local_8,0,9999,4,param_6,&local_4); + plVar4 = auVar6._0_8_; + uVar5 = auVar6._8_8_ & 0xffffffff; + if (local_4 == 0) { + if (local_8 < 0) { + *(int *)(param_8 + 0x14) = local_8 + 100; + } + else { + *(int *)(param_8 + 0x14) = local_8 + -0x76c; + } + if (plVar4 == (long *)0x0) goto LAB_0040164c; +LAB_004015e4: + if (auVar6._8_4_ == -1) { + if ((uint *)plVar4[2] < (uint *)plVar4[3]) { + uVar1 = *(uint *)plVar4[2]; + } + else { + uVar1 = (**(code **)(*plVar4 + 0x48))(); + } + if (uVar1 == 0xffffffff) goto LAB_0040164c; + uVar5 = (ulong)uVar1; + } + bVar3 = false; + if (param_4 == (long *)0x0) goto LAB_00401610; +LAB_004015f4: + iVar2 = (int)param_5; + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + iVar2 = *(int *)param_4[2]; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + } + } + if ((iVar2 == -1) != bVar3) goto LAB_00401610; + } + else { + *param_7 = *param_7 | 4; + if (plVar4 != (long *)0x0) goto LAB_004015e4; +LAB_0040164c: + plVar4 = (long *)0x0; + bVar3 = true; + if (param_4 != (long *)0x0) goto LAB_004015f4; + } + *param_7 = *param_7 | 2; +LAB_00401610: + auVar6._8_8_ = param_3 & 0xffffffff00000000 | uVar5; + auVar6._0_8_ = plVar4; + return auVar6; +} + + +================================================================== + +### FUNC 004016dc (104 bytes) name=FUN_004016dc + +void FUN_004016dc(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(PTR_DAT_00501df0); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,PTR_PTR_00501cd0,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00401744 (104 bytes) name=FUN_00401744 + +void FUN_00401744(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476c0); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdea0,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 004017ac (104 bytes) name=FUN_004017ac + +void FUN_004017ac(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476f8); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdf08,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00401814 (1092 bytes) name=FUN_00401814 + +void FUN_00401814(long param_1,undefined8 param_2) + +{ + char cVar1; + bool bVar2; + undefined4 uVar3; + int iVar4; + long *plVar5; + ulong uVar6; + char *pcVar7; + ulong uVar8; + void *pvVar9; + long lVar10; + int *piVar11; + long local_30; + long local_28; + long local_20; + long local_18; + long local_10; + long local_8; + + *(undefined1 *)(param_1 + 0x148) = 1; + plVar5 = (long *)FUN_004017ac(param_2); + (**(code **)(*plVar5 + 0x20))(&local_30); + uVar6 = *(ulong *)(local_30 + -0x18); + *(ulong *)(param_1 + 0x18) = uVar6; + if ((undefined *)(local_30 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_30 + -8); + *(int *)(local_30 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_30 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_30 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x18); + } + else { + uVar6 = *(ulong *)(param_1 + 0x18); + } + } + pcVar7 = operator_new__(uVar6); + (**(code **)(*plVar5 + 0x20))(&local_28,plVar5); + FUN_00411998(&local_28,pcVar7,*(undefined8 *)(param_1 + 0x18),0); + if ((undefined *)(local_28 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_28 + -8); + *(int *)(local_28 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_28 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_28 + -0x18)); + } + } + bVar2 = false; + *(char **)(param_1 + 0x10) = pcVar7; + if (*(long *)(param_1 + 0x18) != 0) { + bVar2 = '\0' < *pcVar7; + } + lVar10 = *plVar5; + *(bool *)(param_1 + 0x20) = bVar2; + (**(code **)(lVar10 + 0x28))(&local_20,plVar5); + uVar6 = *(ulong *)(local_20 + -0x18); + *(ulong *)(param_1 + 0x30) = uVar6; + if ((undefined *)(local_20 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_20 + -8); + *(int *)(local_20 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_20 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_20 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x30); + } + else { + uVar6 = *(ulong *)(param_1 + 0x30); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x28))(&local_18,plVar5); + FUN_004154f8(&local_18,pvVar9,*(undefined8 *)(param_1 + 0x30),0); + if ((undefined *)(local_18 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_18 + -8); + *(int *)(local_18 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_18 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_18 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x28) = pvVar9; + (**(code **)(lVar10 + 0x30))(&local_10,plVar5); + uVar6 = *(ulong *)(local_10 + -0x18); + *(ulong *)(param_1 + 0x40) = uVar6; + if ((undefined *)(local_10 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_10 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_10 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x40); + } + else { + uVar6 = *(ulong *)(param_1 + 0x40); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x30))(&local_8,plVar5); + FUN_004154f8(&local_8,pvVar9,*(undefined8 *)(param_1 + 0x40),0); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_8 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_8 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x38) = pvVar9; + uVar3 = (**(code **)(lVar10 + 0x10))(plVar5); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x48) = uVar3; + uVar3 = (**(code **)(lVar10 + 0x18))(plVar5); + *(undefined4 *)(param_1 + 0x4c) = uVar3; + plVar5 = (long *)FUN_00401028(param_2); + (**(code **)(*plVar5 + 0x58)) + (plVar5,*(long *)PTR_PTR_00501d10,*(long *)PTR_PTR_00501d10 + 0x24,param_1 + 0x50); + (**(code **)(*plVar5 + 0x58)) + (plVar5,*(long *)PTR_PTR_00501aa0,*(long *)PTR_PTR_00501aa0 + 0x1a,param_1 + 0xe0); + return; +} + + +================================================================== + +### FUNC 00401d3c (104 bytes) name=FUN_00401d3c + +void FUN_00401d3c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476e8); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdf50,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00401da4 (104 bytes) name=FUN_00401da4 + +void FUN_00401da4(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476f0); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdf38,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00401e0c (104 bytes) name=FUN_00401e0c + +void FUN_00401e0c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00547710); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdf98,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00401e74 (1400 bytes) name=FUN_00401e74 + +void FUN_00401e74(long param_1,undefined8 param_2) + +{ + char cVar1; + bool bVar2; + undefined4 uVar3; + int iVar4; + long *plVar5; + ulong uVar6; + char *pcVar7; + ulong uVar8; + void *pvVar9; + long lVar10; + int *piVar11; + long local_40; + long local_38; + long local_30; + long local_28; + long local_20; + long local_18; + long local_10; + long local_8; + + *(undefined1 *)(param_1 + 0x98) = 1; + plVar5 = (long *)FUN_00401e0c(param_2); + uVar3 = (**(code **)(*plVar5 + 0x10))(); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x24) = uVar3; + uVar3 = (**(code **)(lVar10 + 0x18))(plVar5); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x28) = uVar3; + uVar3 = (**(code **)(lVar10 + 0x40))(plVar5); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x60) = uVar3; + (**(code **)(lVar10 + 0x20))(&local_40,plVar5); + uVar6 = *(ulong *)(local_40 + -0x18); + *(ulong *)(param_1 + 0x18) = uVar6; + if ((undefined *)(local_40 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_40 + -8); + *(int *)(local_40 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_40 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_40 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x18); + } + else { + uVar6 = *(ulong *)(param_1 + 0x18); + } + } + pcVar7 = operator_new__(uVar6); + (**(code **)(*plVar5 + 0x20))(&local_38,plVar5); + FUN_00411998(&local_38,pcVar7,*(undefined8 *)(param_1 + 0x18),0); + if ((undefined *)(local_38 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_38 + -8); + *(int *)(local_38 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_38 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_38 + -0x18)); + } + } + bVar2 = false; + *(char **)(param_1 + 0x10) = pcVar7; + if (*(long *)(param_1 + 0x18) != 0) { + bVar2 = '\0' < *pcVar7; + } + lVar10 = *plVar5; + *(bool *)(param_1 + 0x20) = bVar2; + (**(code **)(lVar10 + 0x28))(&local_30,plVar5); + uVar6 = *(ulong *)(local_30 + -0x18); + *(ulong *)(param_1 + 0x38) = uVar6; + if ((undefined *)(local_30 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_30 + -8); + *(int *)(local_30 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_30 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_30 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x38); + } + else { + uVar6 = *(ulong *)(param_1 + 0x38); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x28))(&local_28,plVar5); + FUN_004154f8(&local_28,pvVar9,*(undefined8 *)(param_1 + 0x38),0); + if ((undefined *)(local_28 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_28 + -8); + *(int *)(local_28 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_28 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_28 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x30) = pvVar9; + (**(code **)(lVar10 + 0x30))(&local_20,plVar5); + uVar6 = *(ulong *)(local_20 + -0x18); + *(ulong *)(param_1 + 0x48) = uVar6; + if ((undefined *)(local_20 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_20 + -8); + *(int *)(local_20 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_20 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_20 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x48); + } + else { + uVar6 = *(ulong *)(param_1 + 0x48); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x30))(&local_18,plVar5); + FUN_004154f8(&local_18,pvVar9,*(undefined8 *)(param_1 + 0x48),0); + if ((undefined *)(local_18 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_18 + -8); + *(int *)(local_18 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_18 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_18 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x40) = pvVar9; + (**(code **)(lVar10 + 0x38))(&local_10,plVar5); + uVar6 = *(ulong *)(local_10 + -0x18); + *(ulong *)(param_1 + 0x58) = uVar6; + if ((undefined *)(local_10 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_10 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_10 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x58); + } + else { + uVar6 = *(ulong *)(param_1 + 0x58); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x38))(&local_8,plVar5); + FUN_004154f8(&local_8,pvVar9,*(undefined8 *)(param_1 + 0x58),0); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_8 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_8 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x50) = pvVar9; + uVar3 = (**(code **)(lVar10 + 0x48))(plVar5); + *(undefined4 *)(param_1 + 100) = uVar3; + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5); + *(undefined4 *)(param_1 + 0x68) = uVar3; + plVar5 = (long *)FUN_00401028(param_2); + (**(code **)(*plVar5 + 0x58)) + (plVar5,*(long *)PTR_PTR_00501b68,*(long *)PTR_PTR_00501b68 + 0xb,param_1 + 0x6c); + return; +} + + +================================================================== + +### FUNC 0040252c (104 bytes) name=FUN_0040252c + +void FUN_0040252c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00547718); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdfd0,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402594 (1400 bytes) name=FUN_00402594 + +void FUN_00402594(long param_1,undefined8 param_2) + +{ + char cVar1; + bool bVar2; + undefined4 uVar3; + int iVar4; + long *plVar5; + ulong uVar6; + char *pcVar7; + ulong uVar8; + void *pvVar9; + long lVar10; + int *piVar11; + long local_40; + long local_38; + long local_30; + long local_28; + long local_20; + long local_18; + long local_10; + long local_8; + + *(undefined1 *)(param_1 + 0x98) = 1; + plVar5 = (long *)FUN_0040252c(param_2); + uVar3 = (**(code **)(*plVar5 + 0x10))(); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x24) = uVar3; + uVar3 = (**(code **)(lVar10 + 0x18))(plVar5); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x28) = uVar3; + uVar3 = (**(code **)(lVar10 + 0x40))(plVar5); + lVar10 = *plVar5; + *(undefined4 *)(param_1 + 0x60) = uVar3; + (**(code **)(lVar10 + 0x20))(&local_40,plVar5); + uVar6 = *(ulong *)(local_40 + -0x18); + *(ulong *)(param_1 + 0x18) = uVar6; + if ((undefined *)(local_40 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_40 + -8); + *(int *)(local_40 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_40 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_40 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x18); + } + else { + uVar6 = *(ulong *)(param_1 + 0x18); + } + } + pcVar7 = operator_new__(uVar6); + (**(code **)(*plVar5 + 0x20))(&local_38,plVar5); + FUN_00411998(&local_38,pcVar7,*(undefined8 *)(param_1 + 0x18),0); + if ((undefined *)(local_38 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_38 + -8); + *(int *)(local_38 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_38 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_38 + -0x18)); + } + } + bVar2 = false; + *(char **)(param_1 + 0x10) = pcVar7; + if (*(long *)(param_1 + 0x18) != 0) { + bVar2 = '\0' < *pcVar7; + } + lVar10 = *plVar5; + *(bool *)(param_1 + 0x20) = bVar2; + (**(code **)(lVar10 + 0x28))(&local_30,plVar5); + uVar6 = *(ulong *)(local_30 + -0x18); + *(ulong *)(param_1 + 0x38) = uVar6; + if ((undefined *)(local_30 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_30 + -8); + *(int *)(local_30 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_30 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_30 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x38); + } + else { + uVar6 = *(ulong *)(param_1 + 0x38); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x28))(&local_28,plVar5); + FUN_004154f8(&local_28,pvVar9,*(undefined8 *)(param_1 + 0x38),0); + if ((undefined *)(local_28 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_28 + -8); + *(int *)(local_28 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_28 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_28 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x30) = pvVar9; + (**(code **)(lVar10 + 0x30))(&local_20,plVar5); + uVar6 = *(ulong *)(local_20 + -0x18); + *(ulong *)(param_1 + 0x48) = uVar6; + if ((undefined *)(local_20 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_20 + -8); + *(int *)(local_20 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_20 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_20 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x48); + } + else { + uVar6 = *(ulong *)(param_1 + 0x48); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x30))(&local_18,plVar5); + FUN_004154f8(&local_18,pvVar9,*(undefined8 *)(param_1 + 0x48),0); + if ((undefined *)(local_18 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_18 + -8); + *(int *)(local_18 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_18 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_18 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x40) = pvVar9; + (**(code **)(lVar10 + 0x38))(&local_10,plVar5); + uVar6 = *(ulong *)(local_10 + -0x18); + *(ulong *)(param_1 + 0x58) = uVar6; + if ((undefined *)(local_10 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_10 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_10 + -0x18)); + uVar6 = *(ulong *)(param_1 + 0x58); + } + else { + uVar6 = *(ulong *)(param_1 + 0x58); + } + } + uVar8 = uVar6 << 2; + if (0x1fc0000000000000 < uVar6) { + uVar8 = 0xffffffffffffffff; + } + pvVar9 = operator_new__(uVar8); + (**(code **)(*plVar5 + 0x38))(&local_8,plVar5); + FUN_004154f8(&local_8,pvVar9,*(undefined8 *)(param_1 + 0x58),0); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar4 + -1; + } + else { + piVar11 = (int *)(local_8 + -8); + do { + iVar4 = *piVar11; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar11,0x10); + if (bVar2) { + *piVar11 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined *)(local_8 + -0x18)); + } + } + lVar10 = *plVar5; + *(void **)(param_1 + 0x50) = pvVar9; + uVar3 = (**(code **)(lVar10 + 0x48))(plVar5); + *(undefined4 *)(param_1 + 100) = uVar3; + uVar3 = (**(code **)(*plVar5 + 0x50))(plVar5); + *(undefined4 *)(param_1 + 0x68) = uVar3; + plVar5 = (long *)FUN_00401028(param_2); + (**(code **)(*plVar5 + 0x58)) + (plVar5,*(long *)PTR_PTR_00501b68,*(long *)PTR_PTR_00501b68 + 0xb,param_1 + 0x6c); + return; +} + + +================================================================== + +### FUNC 00402c4c (104 bytes) name=FUN_00402c4c + +void FUN_00402c4c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00547700); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fe0d8,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402cb4 (104 bytes) name=FUN_00402cb4 + +void FUN_00402cb4(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_00547708); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fe0c0,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402d1c (104 bytes) name=FUN_00402d1c + +void FUN_00402d1c(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476e0); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fdf80,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402d84 (244 bytes) name=FUN_00402d84 + +undefined1 [16] +FUN_00402d84(undefined8 param_1,long *param_2,char param_3,long param_4,undefined8 param_5, + undefined8 param_6,byte param_7,byte param_8) + +{ + long *plVar1; + undefined8 uVar2; + size_t sVar3; + long lVar4; + undefined1 auVar5 [16]; + undefined4 local_210; + uint local_20c; + uint local_208; + undefined4 local_204; + wchar_t awStack_200 [128]; + + plVar1 = (long *)FUN_00401028(param_4 + 0xd0); + uVar2 = FUN_00402d1c(param_4 + 0xd0); + local_210 = (**(code **)(*plVar1 + 0x50))(plVar1,0x25); + if (param_8 == 0) { + local_208 = 0; + } + else { + local_204 = 0; + local_208 = (uint)param_7; + param_7 = param_8; + } + local_20c = (uint)param_7; + FUN_003fdaf4(uVar2,awStack_200,0x80,&local_210,param_6); + sVar3 = wcslen(awStack_200); + if (param_3 == '\0') { + lVar4 = (**(code **)(*param_2 + 0x60))(param_2,awStack_200,(long)(int)sVar3); + param_3 = (int)sVar3 != lVar4; + } + auVar5[8] = param_3; + auVar5._0_8_ = param_2; + auVar5._9_7_ = 0; + return auVar5; +} + + +================================================================== + +### FUNC 00402e78 (104 bytes) name=FUN_00402e78 + +void FUN_00402e78(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476d8); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fe0f0,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402ee0 (104 bytes) name=FUN_00402ee0 + +void FUN_00402ee0(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476d0); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fe120,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402f48 (104 bytes) name=FUN_00402f48 + +void FUN_00402f48(long *param_1) + +{ + ulong uVar1; + long lVar2; + + uVar1 = FUN_003edb10(&DAT_005476c8); + if ((uVar1 < *(ulong *)(*param_1 + 0x10)) && + (lVar2 = *(long *)(*(long *)(*param_1 + 8) + uVar1 * 8), lVar2 != 0)) { + lVar2 = __dynamic_cast(lVar2,PTR_PTR_00501e48,&PTR_PTR_004fe008,0); + if (lVar2 != 0) { + return; + } + /* WARNING: Subroutine does not return */ + __cxa_bad_cast(); + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); +} + + +================================================================== + +### FUNC 00402fb0 (108 bytes) name=FUN_00402fb0 + +bool FUN_00402fb0(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(PTR_DAT_00501ec0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,PTR_PTR_005018a8,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 0040301c (108 bytes) name=FUN_0040301c + +bool FUN_0040301c(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(PTR_DAT_00501df0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,PTR_PTR_00501cd0,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 00403088 (108 bytes) name=FUN_00403088 + +bool FUN_00403088(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476c0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fdea0,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 004030f4 (108 bytes) name=FUN_004030f4 + +bool FUN_004030f4(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476f8); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fdf08,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 00403160 (108 bytes) name=FUN_00403160 + +bool FUN_00403160(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476e8); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fdf50,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 004031cc (108 bytes) name=FUN_004031cc + +bool FUN_004031cc(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476f0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fdf38,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 00403238 (108 bytes) name=FUN_00403238 + +bool FUN_00403238(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00547718); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fdfd0,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 004032a4 (108 bytes) name=FUN_004032a4 + +bool FUN_004032a4(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00547700); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fe0d8,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 00403310 (108 bytes) name=FUN_00403310 + +bool FUN_00403310(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_00547708); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fe0c0,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 0040337c (108 bytes) name=FUN_0040337c + +bool FUN_0040337c(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476e0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fdf80,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 004033e8 (108 bytes) name=FUN_004033e8 + +bool FUN_004033e8(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476d8); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fe0f0,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 00403454 (108 bytes) name=FUN_00403454 + +bool FUN_00403454(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476d0); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fe120,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 004034c0 (108 bytes) name=FUN_004034c0 + +bool FUN_004034c0(long *param_1) + +{ + bool bVar1; + ulong uVar2; + long lVar3; + + uVar2 = FUN_003edb10(&DAT_005476c8); + bVar1 = false; + if ((uVar2 < *(ulong *)(*param_1 + 0x10)) && + (lVar3 = *(long *)(*(long *)(*param_1 + 8) + uVar2 * 8), lVar3 != 0)) { + lVar3 = __dynamic_cast(lVar3,PTR_PTR_00501e48,&PTR_PTR_004fe008,0); + bVar1 = lVar3 != 0; + } + return bVar1; +} + + +================================================================== + +### FUNC 0040352c (856 bytes) name=FUN_0040352c + +void FUN_0040352c(undefined8 *param_1,undefined4 param_2,byte *param_3,long param_4, + undefined8 *param_5,undefined8 *param_6) + +{ + uint uVar1; + uint uVar2; + bool bVar3; + byte bVar4; + undefined8 *puVar5; + uint uVar6; + long lVar7; + undefined8 *puVar8; + long lVar9; + undefined8 *puVar10; + byte bVar11; + uint uVar12; + uint uVar13; + ulong uVar14; + ulong uVar15; + undefined8 *puVar16; + ulong uVar17; + ulong uVar18; + undefined8 uVar19; + + bVar11 = *param_3; + lVar9 = 0; + uVar18 = 0; + uVar17 = (ulong)bVar11; + while ((long)uVar17 < (long)param_6 - (long)param_5 >> 2) { + while( true ) { + if ((char)bVar11 < '\x01') goto LAB_00403580; + param_6 = (undefined8 *)((long)param_6 + (ulong)bVar11 * -4); + if (param_4 - 1U <= uVar18) break; + uVar18 = uVar18 + 1; + bVar11 = param_3[uVar18]; + uVar17 = (ulong)bVar11; + if ((long)param_6 - (long)param_5 >> 2 <= (long)uVar17) goto LAB_00403580; + } + lVar9 = lVar9 + 1; + } +LAB_00403580: + if (param_5 == param_6) goto LAB_00403710; + puVar5 = (undefined8 *)((long)param_5 + 4); + uVar14 = (ulong)((long)param_6 - (long)puVar5) >> 2; + uVar17 = uVar14 + 1; + puVar8 = param_1; + if ((uVar17 < 9) || (param_1 < param_5 + 2 && param_5 < param_1 + 2)) { + do { + bVar3 = puVar5 != param_6; + *(undefined4 *)puVar8 = *(undefined4 *)((long)puVar5 + -4); + puVar5 = (undefined8 *)((long)puVar5 + 4); + puVar8 = (undefined8 *)((long)puVar8 + 4); + } while (bVar3); + } + else { + uVar14 = (uVar14 - 3 >> 2) + 1; + uVar15 = 0; + puVar5 = param_1; + puVar8 = param_5; + do { + uVar19 = *puVar8; + uVar15 = uVar15 + 1; + puVar5[1] = puVar8[1]; + *puVar5 = uVar19; + puVar5 = puVar5 + 2; + puVar8 = puVar8 + 2; + } while (uVar15 < uVar14); + lVar7 = uVar14 * 0x10; + if (((uVar17 != uVar14 * 4) && + (*(undefined4 *)(param_1 + uVar14 * 2) = *(undefined4 *)(param_5 + uVar14 * 2), + param_6 != (undefined8 *)((long)param_5 + lVar7 + 4))) && + (*(undefined4 *)((long)param_1 + lVar7 + 4) = *(undefined4 *)((long)param_5 + lVar7 + 4), + param_6 != param_5 + uVar14 * 2 + 1)) { + *(undefined4 *)(param_1 + uVar14 * 2 + 1) = *(undefined4 *)(param_5 + uVar14 * 2 + 1); + } + } + puVar5 = (undefined8 *)((long)param_1 + uVar17 * 4); + lVar9 = lVar9 + -1; + if (lVar9 == -1) { +LAB_004037fc: + while (puVar8 = puVar5, uVar18 = uVar18 - 1, uVar18 != 0xffffffffffffffff) { + *(undefined4 *)puVar8 = param_2; + puVar5 = (undefined8 *)((long)puVar8 + 4); + bVar11 = param_3[uVar18]; + if (bVar11 != 0) { + puVar10 = puVar5; + puVar16 = param_6; + bVar4 = bVar11; + if ((puVar5 < param_6 + 2 && param_6 < (undefined8 *)((long)puVar8 + 0x14U)) || + (uVar6 = (uint)bVar11, bVar11 < 9)) { + do { + bVar4 = bVar4 - 1; + *(undefined4 *)puVar10 = *(undefined4 *)puVar16; + puVar10 = (undefined8 *)((long)puVar10 + 4); + puVar16 = (undefined8 *)((long)puVar16 + 4); + } while (bVar4 != 0); + } + else { + uVar13 = (uVar6 - 4 >> 2 & 0x3f) + 1; + uVar12 = 0; + uVar2 = uVar13 & 0x3f; + uVar1 = uVar2 * 4; + puVar8 = puVar5; + puVar10 = param_6; + do { + uVar19 = *puVar10; + uVar12 = uVar12 + 1; + puVar8[1] = puVar10[1]; + *puVar8 = uVar19; + puVar8 = puVar8 + 2; + puVar10 = puVar10 + 2; + } while ((uVar12 & 0xff) < uVar13); + lVar9 = (ulong)uVar1 * 4; + if (uVar6 != uVar1) { + uVar6 = uVar6 + uVar2 * -4 & 0xff; + *(undefined4 *)((long)puVar5 + (ulong)uVar1 * 4) = + *(undefined4 *)((long)param_6 + (ulong)uVar1 * 4); + if ((uVar6 != 1) && + (*(undefined4 *)((long)puVar5 + lVar9 + 4) = + *(undefined4 *)((long)param_6 + lVar9 + 4), uVar6 != 2)) { + *(undefined4 *)((long)puVar5 + lVar9 + 8) = *(undefined4 *)((long)param_6 + lVar9 + 8) + ; + } + } + } + lVar9 = ((ulong)(byte)(bVar11 - 1) + 1) * 4; + param_6 = (undefined8 *)((long)param_6 + lVar9); + puVar5 = (undefined8 *)((long)puVar5 + lVar9); + } + } + return; + } + *(undefined4 *)puVar5 = param_2; + param_1 = (undefined8 *)((long)puVar5 + 4); + uVar6 = (uint)param_3[uVar18]; + if (param_3[uVar18] == 0) goto LAB_00403710; + do { + puVar8 = param_1; + puVar10 = param_6; + uVar13 = uVar6; + if ((param_1 < param_6 + 2 && param_6 < (undefined8 *)((long)puVar5 + 0x14U)) || (uVar6 < 9)) { + do { + uVar12 = uVar13 - 1; + *(undefined4 *)puVar8 = *(undefined4 *)puVar10; + puVar8 = (undefined8 *)((long)puVar8 + 4); + puVar10 = (undefined8 *)((long)puVar10 + 4); + uVar13 = uVar12 & 0xff; + } while ((uVar12 & 0xff) != 0); + } + else { + uVar13 = (uVar6 - 4 >> 2 & 0x3f) + 1; + uVar12 = 0; + uVar2 = uVar13 & 0x3f; + uVar1 = uVar2 * 4; + puVar5 = param_1; + puVar8 = param_6; + do { + uVar19 = *puVar8; + uVar12 = uVar12 + 1; + puVar5[1] = puVar8[1]; + *puVar5 = uVar19; + puVar5 = puVar5 + 2; + puVar8 = puVar8 + 2; + } while ((uVar12 & 0xff) < uVar13); + lVar7 = (ulong)uVar1 * 4; + if (uVar6 != uVar1) { + uVar13 = uVar6 + uVar2 * -4 & 0xff; + *(undefined4 *)((long)param_1 + (ulong)uVar1 * 4) = + *(undefined4 *)((long)param_6 + (ulong)uVar1 * 4); + if ((uVar13 != 1) && + (*(undefined4 *)((long)param_1 + lVar7 + 4) = *(undefined4 *)((long)param_6 + lVar7 + 4), + uVar13 != 2)) { + *(undefined4 *)((long)param_1 + lVar7 + 8) = *(undefined4 *)((long)param_6 + lVar7 + 8); + } + } + } + lVar7 = ((ulong)(byte)((char)uVar6 - 1) + 1) * 4; + param_6 = (undefined8 *)((long)param_6 + lVar7); + param_1 = (undefined8 *)((long)param_1 + lVar7); +LAB_00403710: + do { + puVar5 = param_1; + lVar9 = lVar9 + -1; + if (lVar9 == -1) goto LAB_004037fc; + *(undefined4 *)puVar5 = param_2; + param_1 = (undefined8 *)((long)puVar5 + 4); + uVar6 = (uint)param_3[uVar18]; + } while (uVar6 == 0); + } while( true ); +} + + +================================================================== + +### FUNC 00403884 (188 bytes) name=FUN_00403884 + +void FUN_00403884(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4, + wchar_t *param_5,long param_6,long param_7,int *param_8) + +{ + wchar_t *__s1; + long lVar1; + int iVar2; + + if (param_5 != (wchar_t *)0x0) { + iVar2 = (int)((long)param_5 - param_7 >> 2); + __s1 = (wchar_t *) + FUN_0040352c(param_6,param_4,param_2,param_3,param_7,param_7 + (long)iVar2 * 4); + wmemcpy(__s1,param_5,(long)(*param_8 - iVar2)); + *param_8 = (*param_8 - iVar2) + (int)((long)__s1 - param_6 >> 2); + return; + } + lVar1 = FUN_0040352c(param_6,param_4,param_2,param_3,param_7,param_7 + (long)*param_8 * 4); + *param_8 = (int)((ulong)(lVar1 - param_6) >> 2); + return; +} + + +================================================================== + +### FUNC 00403940 (88 bytes) name=FUN_00403940 + +void FUN_00403940(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4, + undefined8 param_5,long param_6,long param_7,int *param_8) + +{ + long lVar1; + + lVar1 = FUN_0040352c(param_6,param_4,param_2,param_3,param_7,param_7 + (long)*param_8 * 4); + *param_8 = (int)(lVar1 - param_6 >> 2); + return; +} + + +================================================================== + +### FUNC 00403998 (1696 bytes) name=FUN_00403998 + +undefined1 [16] +FUN_00403998(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5, + undefined8 *param_6) + +{ + ulong uVar1; + uint uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + int iVar6; + long *plVar7; + long lVar8; + long lVar9; + undefined8 *puVar10; + ulong uVar11; + long lVar12; + int *piVar13; + ulong uVar14; + ulong uVar15; + long lVar16; + ulong uVar17; + undefined1 auVar18 [16]; + undefined4 *local_40; + undefined4 local_18 [2]; + undefined *local_10; + undefined *local_8; + + uVar15 = param_3 & 0xff; + plVar7 = (long *)FUN_00401028(param_4 + 0xd0); + lVar8 = FUN_003edb10(&DAT_00547710); + lVar16 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar16 + lVar8 * 8); + if (lVar12 == 0) { + puVar10 = operator_new(0xa0); + *(undefined4 *)(puVar10 + 1) = 0; + *puVar10 = &PTR_FUN_004f8ae0; + puVar10[2] = 0; + puVar10[3] = 0; + *(undefined1 *)(puVar10 + 4) = 0; + *(undefined4 *)((long)puVar10 + 0x24) = 0; + *(undefined4 *)(puVar10 + 5) = 0; + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + puVar10[9] = 0; + puVar10[10] = 0; + puVar10[0xb] = 0; + *(undefined4 *)(puVar10 + 0xc) = 0; + *(undefined1 *)((long)puVar10 + 100) = 0; + *(undefined1 *)((long)puVar10 + 0x65) = 0; + *(undefined1 *)((long)puVar10 + 0x66) = 0; + *(undefined1 *)((long)puVar10 + 0x67) = 0; + *(undefined1 *)(puVar10 + 0xd) = 0; + *(undefined1 *)((long)puVar10 + 0x69) = 0; + *(undefined1 *)((long)puVar10 + 0x6a) = 0; + *(undefined1 *)((long)puVar10 + 0x6b) = 0; + *(undefined1 *)(puVar10 + 0x13) = 0; + FUN_00401e74(puVar10,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar10,lVar8); + lVar12 = *(long *)(lVar16 + lVar8 * 8); + } + piVar13 = (int *)*param_6; + if (*piVar13 == *(int *)(lVar12 + 0x6c)) { + lVar8 = *(long *)(piVar13 + -6); + local_18[0] = *(undefined4 *)(lVar12 + 0x68); + local_40 = *(undefined4 **)(lVar12 + 0x50); + if (lVar8 != 0) { + piVar13 = piVar13 + 1; + } + uVar17 = *(ulong *)(lVar12 + 0x58); + } + else { + local_18[0] = *(undefined4 *)(lVar12 + 100); + uVar17 = *(ulong *)(lVar12 + 0x48); + local_40 = *(undefined4 **)(lVar12 + 0x40); + lVar8 = *(long *)(piVar13 + -6); + } + lVar8 = (**(code **)(*plVar7 + 0x28))(plVar7,4,piVar13,piVar13 + lVar8); + lVar8 = lVar8 - (long)piVar13 >> 2; + if (lVar8 != 0) { + local_10 = PTR_DAT_00501ab8 + 0x18; + FUN_00418208(&local_10,lVar8 << 1); + iVar6 = *(int *)(lVar12 + 0x60); + lVar16 = lVar8 - iVar6; + if (0 < lVar16) { + if (iVar6 < 0) { + lVar16 = lVar8; + } + if (*(long *)(lVar12 + 0x18) == 0) { + FUN_00416a24(&local_10,piVar13,lVar16); + iVar6 = *(int *)(lVar12 + 0x60); + } + else { + FUN_0041690c(&local_10,0,*(undefined8 *)(local_10 + -0x18),lVar16 << 1,0); + if (-1 < *(int *)(local_10 + -8)) { + FUN_0041673c(&local_10); + } + lVar9 = FUN_0040352c(local_10,*(undefined4 *)(lVar12 + 0x28),*(undefined8 *)(lVar12 + 0x10), + *(undefined8 *)(lVar12 + 0x18),piVar13,piVar13 + lVar16); + if (-1 < *(int *)(local_10 + -8)) { + FUN_0041673c(&local_10); + } + uVar11 = lVar9 - (long)local_10 >> 2; + if (*(ulong *)(local_10 + -0x18) < uVar11) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase"); + } + FUN_00416540(&local_10,uVar11,*(ulong *)(local_10 + -0x18) - uVar11,0); + iVar6 = *(int *)(lVar12 + 0x60); + } + } + if (0 < iVar6) { + uVar3 = *(undefined4 *)(lVar12 + 0x24); + lVar9 = *(long *)(local_10 + -0x18); + uVar11 = lVar9 + 1; + if ((*(ulong *)(local_10 + -0x10) < uVar11) || (0 < *(int *)(local_10 + -8))) { + FUN_00418208(&local_10,uVar11); + lVar9 = *(long *)(local_10 + -0x18); + } + *(undefined4 *)(local_10 + lVar9 * 4) = uVar3; + if (local_10 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_10 + -8) = 0; + *(ulong *)(local_10 + -0x18) = uVar11; + *(undefined4 *)(local_10 + uVar11 * 4) = 0; + } + if (lVar16 < 0) { + FUN_0041885c(&local_10,-lVar16,*(undefined4 *)(lVar12 + 0x70)); + FUN_00418664(&local_10,piVar13,lVar8); + } + else { + FUN_00418664(&local_10,piVar13 + lVar16,(long)*(int *)(lVar12 + 0x60)); + } + } + uVar2 = *(uint *)(param_4 + 0x18) & 0xb0; + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) == 0) { + lVar8 = 0; + } + else { + lVar8 = *(long *)(lVar12 + 0x38); + } + uVar11 = uVar17 + *(long *)(local_10 + -0x18) + lVar8; + local_8 = PTR_DAT_00501ab8 + 0x18; + FUN_00418208(&local_8,uVar11 * 2); + uVar14 = *(ulong *)(param_4 + 0x10); + lVar8 = 0; + bVar5 = uVar11 < uVar14 && uVar2 == 0x10; + do { + switch(*(undefined1 *)((long)local_18 + lVar8)) { + case 0: + if (bVar5) { +LAB_00403e24: + FUN_0041885c(&local_8,uVar14 - uVar11,param_5); + } + break; + case 1: + if (bVar5) goto LAB_00403e24; + lVar16 = *(long *)(local_8 + -0x18); + uVar1 = lVar16 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar1) || (0 < *(int *)(local_8 + -8))) { + FUN_00418208(&local_8,uVar1); + lVar16 = *(long *)(local_8 + -0x18); + } + *(undefined4 *)(local_8 + lVar16 * 4) = param_5; + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar1; + *(undefined4 *)(local_8 + uVar1 * 4) = 0; + } + break; + case 2: + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) != 0) { + FUN_00418664(&local_8,*(undefined8 *)(lVar12 + 0x30),*(undefined8 *)(lVar12 + 0x38)); + } + break; + case 3: + if (uVar17 != 0) { + uVar3 = *local_40; + lVar16 = *(long *)(local_8 + -0x18); + uVar1 = lVar16 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar1) || (0 < *(int *)(local_8 + -8))) { + FUN_00418208(&local_8,uVar1); + lVar16 = *(long *)(local_8 + -0x18); + } + *(undefined4 *)(local_8 + lVar16 * 4) = uVar3; + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar1; + *(undefined4 *)(local_8 + uVar1 * 4) = 0; + } + } + break; + case 4: + FUN_00418364(&local_8,&local_10); + } + lVar8 = lVar8 + 1; + } while (lVar8 != 4); + if (1 < uVar17) { + FUN_00418664(&local_8,local_40 + 1,uVar17 - 1); + } + uVar17 = *(ulong *)(local_8 + -0x18); + if (uVar17 < uVar14) { + if (uVar2 == 0x20) { + FUN_0041885c(&local_8,uVar14 - uVar17,param_5); + uVar17 = uVar14; + } + else { + FUN_0041690c(&local_8,0,0,uVar14 - uVar17,param_5); + uVar17 = uVar14; + } + } + if (((param_3 & 0xff) == 0) && + (lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_8,(long)(int)uVar17), + (int)uVar17 != lVar8)) { + uVar15 = 1; + } + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar6 + -1; + } + else { + piVar13 = (int *)(local_8 + -8); + do { + iVar6 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (iVar6 < 1) { + operator_delete(local_8 + -0x18); + } + } + if (local_10 + -0x18 != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar6 + -1; + } + else { + piVar13 = (int *)(local_10 + -8); + do { + iVar6 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (iVar6 < 1) { + operator_delete(local_10 + -0x18); + } + } + } + *(undefined8 *)(param_4 + 0x10) = 0; + auVar18._8_8_ = param_3 & 0xffffffffffffff00 | uVar15; + auVar18._0_8_ = param_2; + return auVar18; +} + + +================================================================== + +### FUNC 004040b4 (1696 bytes) name=FUN_004040b4 + +undefined1 [16] +FUN_004040b4(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5, + undefined8 *param_6) + +{ + ulong uVar1; + uint uVar2; + undefined4 uVar3; + char cVar4; + bool bVar5; + int iVar6; + long *plVar7; + long lVar8; + long lVar9; + undefined8 *puVar10; + ulong uVar11; + long lVar12; + int *piVar13; + ulong uVar14; + ulong uVar15; + long lVar16; + ulong uVar17; + undefined1 auVar18 [16]; + undefined4 *local_40; + undefined4 local_18 [2]; + undefined *local_10; + undefined *local_8; + + uVar15 = param_3 & 0xff; + plVar7 = (long *)FUN_00401028(param_4 + 0xd0); + lVar8 = FUN_003edb10(&DAT_00547718); + lVar16 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar16 + lVar8 * 8); + if (lVar12 == 0) { + puVar10 = operator_new(0xa0); + *(undefined4 *)(puVar10 + 1) = 0; + *puVar10 = &PTR_FUN_004f8ac0; + puVar10[2] = 0; + puVar10[3] = 0; + *(undefined1 *)(puVar10 + 4) = 0; + *(undefined4 *)((long)puVar10 + 0x24) = 0; + *(undefined4 *)(puVar10 + 5) = 0; + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + puVar10[9] = 0; + puVar10[10] = 0; + puVar10[0xb] = 0; + *(undefined4 *)(puVar10 + 0xc) = 0; + *(undefined1 *)((long)puVar10 + 100) = 0; + *(undefined1 *)((long)puVar10 + 0x65) = 0; + *(undefined1 *)((long)puVar10 + 0x66) = 0; + *(undefined1 *)((long)puVar10 + 0x67) = 0; + *(undefined1 *)(puVar10 + 0xd) = 0; + *(undefined1 *)((long)puVar10 + 0x69) = 0; + *(undefined1 *)((long)puVar10 + 0x6a) = 0; + *(undefined1 *)((long)puVar10 + 0x6b) = 0; + *(undefined1 *)(puVar10 + 0x13) = 0; + FUN_00402594(puVar10,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar10,lVar8); + lVar12 = *(long *)(lVar16 + lVar8 * 8); + } + piVar13 = (int *)*param_6; + if (*piVar13 == *(int *)(lVar12 + 0x6c)) { + lVar8 = *(long *)(piVar13 + -6); + local_18[0] = *(undefined4 *)(lVar12 + 0x68); + local_40 = *(undefined4 **)(lVar12 + 0x50); + if (lVar8 != 0) { + piVar13 = piVar13 + 1; + } + uVar17 = *(ulong *)(lVar12 + 0x58); + } + else { + local_18[0] = *(undefined4 *)(lVar12 + 100); + uVar17 = *(ulong *)(lVar12 + 0x48); + local_40 = *(undefined4 **)(lVar12 + 0x40); + lVar8 = *(long *)(piVar13 + -6); + } + lVar8 = (**(code **)(*plVar7 + 0x28))(plVar7,4,piVar13,piVar13 + lVar8); + lVar8 = lVar8 - (long)piVar13 >> 2; + if (lVar8 != 0) { + local_10 = PTR_DAT_00501ab8 + 0x18; + FUN_00418208(&local_10,lVar8 << 1); + iVar6 = *(int *)(lVar12 + 0x60); + lVar16 = lVar8 - iVar6; + if (0 < lVar16) { + if (iVar6 < 0) { + lVar16 = lVar8; + } + if (*(long *)(lVar12 + 0x18) == 0) { + FUN_00416a24(&local_10,piVar13,lVar16); + iVar6 = *(int *)(lVar12 + 0x60); + } + else { + FUN_0041690c(&local_10,0,*(undefined8 *)(local_10 + -0x18),lVar16 << 1,0); + if (-1 < *(int *)(local_10 + -8)) { + FUN_0041673c(&local_10); + } + lVar9 = FUN_0040352c(local_10,*(undefined4 *)(lVar12 + 0x28),*(undefined8 *)(lVar12 + 0x10), + *(undefined8 *)(lVar12 + 0x18),piVar13,piVar13 + lVar16); + if (-1 < *(int *)(local_10 + -8)) { + FUN_0041673c(&local_10); + } + uVar11 = lVar9 - (long)local_10 >> 2; + if (*(ulong *)(local_10 + -0x18) < uVar11) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase"); + } + FUN_00416540(&local_10,uVar11,*(ulong *)(local_10 + -0x18) - uVar11,0); + iVar6 = *(int *)(lVar12 + 0x60); + } + } + if (0 < iVar6) { + uVar3 = *(undefined4 *)(lVar12 + 0x24); + lVar9 = *(long *)(local_10 + -0x18); + uVar11 = lVar9 + 1; + if ((*(ulong *)(local_10 + -0x10) < uVar11) || (0 < *(int *)(local_10 + -8))) { + FUN_00418208(&local_10,uVar11); + lVar9 = *(long *)(local_10 + -0x18); + } + *(undefined4 *)(local_10 + lVar9 * 4) = uVar3; + if (local_10 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_10 + -8) = 0; + *(ulong *)(local_10 + -0x18) = uVar11; + *(undefined4 *)(local_10 + uVar11 * 4) = 0; + } + if (lVar16 < 0) { + FUN_0041885c(&local_10,-lVar16,*(undefined4 *)(lVar12 + 0x70)); + FUN_00418664(&local_10,piVar13,lVar8); + } + else { + FUN_00418664(&local_10,piVar13 + lVar16,(long)*(int *)(lVar12 + 0x60)); + } + } + uVar2 = *(uint *)(param_4 + 0x18) & 0xb0; + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) == 0) { + lVar8 = 0; + } + else { + lVar8 = *(long *)(lVar12 + 0x38); + } + uVar11 = uVar17 + *(long *)(local_10 + -0x18) + lVar8; + local_8 = PTR_DAT_00501ab8 + 0x18; + FUN_00418208(&local_8,uVar11 * 2); + uVar14 = *(ulong *)(param_4 + 0x10); + lVar8 = 0; + bVar5 = uVar11 < uVar14 && uVar2 == 0x10; + do { + switch(*(undefined1 *)((long)local_18 + lVar8)) { + case 0: + if (bVar5) { +LAB_00404540: + FUN_0041885c(&local_8,uVar14 - uVar11,param_5); + } + break; + case 1: + if (bVar5) goto LAB_00404540; + lVar16 = *(long *)(local_8 + -0x18); + uVar1 = lVar16 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar1) || (0 < *(int *)(local_8 + -8))) { + FUN_00418208(&local_8,uVar1); + lVar16 = *(long *)(local_8 + -0x18); + } + *(undefined4 *)(local_8 + lVar16 * 4) = param_5; + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar1; + *(undefined4 *)(local_8 + uVar1 * 4) = 0; + } + break; + case 2: + if ((*(uint *)(param_4 + 0x18) >> 9 & 1) != 0) { + FUN_00418664(&local_8,*(undefined8 *)(lVar12 + 0x30),*(undefined8 *)(lVar12 + 0x38)); + } + break; + case 3: + if (uVar17 != 0) { + uVar3 = *local_40; + lVar16 = *(long *)(local_8 + -0x18); + uVar1 = lVar16 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar1) || (0 < *(int *)(local_8 + -8))) { + FUN_00418208(&local_8,uVar1); + lVar16 = *(long *)(local_8 + -0x18); + } + *(undefined4 *)(local_8 + lVar16 * 4) = uVar3; + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar1; + *(undefined4 *)(local_8 + uVar1 * 4) = 0; + } + } + break; + case 4: + FUN_00418364(&local_8,&local_10); + } + lVar8 = lVar8 + 1; + } while (lVar8 != 4); + if (1 < uVar17) { + FUN_00418664(&local_8,local_40 + 1,uVar17 - 1); + } + uVar17 = *(ulong *)(local_8 + -0x18); + if (uVar17 < uVar14) { + if (uVar2 == 0x20) { + FUN_0041885c(&local_8,uVar14 - uVar17,param_5); + uVar17 = uVar14; + } + else { + FUN_0041690c(&local_8,0,0,uVar14 - uVar17,param_5); + uVar17 = uVar14; + } + } + if (((param_3 & 0xff) == 0) && + (lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_8,(long)(int)uVar17), + (int)uVar17 != lVar8)) { + uVar15 = 1; + } + if (local_8 + -0x18 != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar6 + -1; + } + else { + piVar13 = (int *)(local_8 + -8); + do { + iVar6 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (iVar6 < 1) { + operator_delete(local_8 + -0x18); + } + } + if (local_10 + -0x18 != PTR_DAT_00501ab8) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar6 + -1; + } + else { + piVar13 = (int *)(local_10 + -8); + do { + iVar6 = *piVar13; + cVar4 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar13,0x10); + if (bVar5) { + *piVar13 = iVar6 + -1; + cVar4 = ExclusiveMonitorsStatus(); + } + } while (cVar4 != '\0'); + } + if (iVar6 < 1) { + operator_delete(local_10 + -0x18); + } + } + } + *(undefined8 *)(param_4 + 0x10) = 0; + auVar18._8_8_ = param_3 & 0xffffffffffffff00 | uVar15; + auVar18._0_8_ = param_2; + return auVar18; +} + + +================================================================== + +### FUNC 004047d0 (468 bytes) name=FUN_004047d0 + +undefined1 [16] +FUN_004047d0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + char param_5,long param_6,undefined4 param_7) + +{ + char cVar1; + bool bVar2; + int iVar3; + long *plVar4; + undefined *puVar5; + int *piVar6; + undefined1 auVar7 [16]; + undefined1 auStack_1400 [4960]; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + FUN_003ece1c(auStack_10,param_6 + 0xd0); + plVar4 = (long *)FUN_00401028(auStack_10); + local_8 = FUN_003ed450(); + iVar3 = FUN_003dd040(param_1,&local_8,auStack_1400,0,"%.*Lf",0); + FUN_00417644(&local_8,(long)iVar3,0,auStack_18); + if (-1 < *(int *)(local_8 + -8)) { + FUN_0041673c(&local_8); + } + (**(code **)(*plVar4 + 0x58))(plVar4,auStack_1400,auStack_1400 + iVar3,local_8); + if (param_5 == '\0') { + auVar7 = FUN_004040b4(param_2,param_3,param_4,param_6,param_7,&local_8); + puVar5 = (undefined *)(local_8 + -0x18); + if (puVar5 == PTR_DAT_00501ab8) goto LAB_004048f4; + } + else { + auVar7 = FUN_00403998(param_2,param_3,param_4,param_6,param_7,&local_8); + puVar5 = (undefined *)(local_8 + -0x18); + if (puVar5 == PTR_DAT_00501ab8) goto LAB_004048f4; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar3 + -1; + } + else { + piVar6 = (int *)(local_8 + -8); + do { + iVar3 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete(puVar5); + } +LAB_004048f4: + FUN_003ed708(auStack_10); + return auVar7; +} + + +================================================================== + +### FUNC 004049e0 (64 bytes) name=FUN_004049e0 + +void FUN_004049e0(void) + +{ + char in_w3; + + if (in_w3 == '\0') { + FUN_004040b4(); + return; + } + FUN_00403998(); + return; +} + + +================================================================== + +### FUNC 00404a20 (476 bytes) name=FUN_00404a20 + +void FUN_00404a20(long param_1,wchar_t param_2,wchar_t *param_3,wchar_t *param_4,long param_5, + size_t param_6) + +{ + uint uVar1; + wchar_t wVar2; + wchar_t wVar3; + long *plVar4; + wchar_t *__s; + size_t __n; + long lVar5; + long lVar6; + + uVar1 = *(uint *)(param_1 + 0x18) & 0xb0; + __n = param_5 - param_6; + if (uVar1 == 0x20) { + wmemcpy(param_3,param_4,param_6); + wmemset(param_3 + param_6,param_2,__n); + return; + } + if (uVar1 != 0x10) goto LAB_00404a5c; + plVar4 = (long *)FUN_00401028(param_1 + 0xd0); + wVar2 = (**(code **)(*plVar4 + 0x50))(plVar4,0x2d); + wVar3 = *param_4; + if (wVar3 != wVar2) { + wVar2 = (**(code **)(*plVar4 + 0x50))(plVar4,0x2b); + wVar3 = *param_4; + if (wVar3 != wVar2) { + wVar3 = (**(code **)(*plVar4 + 0x50))(plVar4,0x30); + if ((*param_4 == wVar3) && (1 < (long)param_6)) { + wVar3 = (**(code **)(*plVar4 + 0x50))(plVar4,0x78); + if (param_4[1] != wVar3) { + wVar3 = (**(code **)(*plVar4 + 0x50))(plVar4,0x58); + if (param_4[1] != wVar3) goto LAB_00404a5c; + } + __s = param_3 + 2; + lVar6 = 8; + lVar5 = 2; + *param_3 = *param_4; + param_3[1] = param_4[1]; + } + else { +LAB_00404a5c: + lVar6 = 0; + lVar5 = 0; + __s = param_3; + } + goto LAB_00404a64; + } + } + __s = param_3 + 1; + *param_3 = wVar3; + lVar6 = 4; + lVar5 = 1; +LAB_00404a64: + wmemset(__s,param_2,__n); + wmemcpy(__s + __n,(wchar_t *)((long)param_4 + lVar6),param_6 - lVar5); + return; +} + + +================================================================== + +### FUNC 00404bfc (64 bytes) name=FUN_00404bfc + +void FUN_00404bfc(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,int *param_7) + +{ + FUN_00404a20(param_4,param_2,param_5,param_6,param_3,(long)*param_7); + *param_7 = (int)param_3; + return; +} + + +================================================================== + +### FUNC 00404c3c (808 bytes) name=FUN_00404c3c + +undefined1 [16] +FUN_00404c3c(undefined8 param_1,undefined8 param_2,long *param_3,char param_4,long param_5, + undefined4 param_6,undefined1 param_7) + +{ + bool bVar1; + int iVar2; + char cVar3; + long lVar4; + long lVar5; + long *plVar6; + void *pvVar7; + undefined8 *puVar8; + int iVar9; + undefined1 *puVar10; + long lVar11; + size_t sVar12; + size_t sVar13; + undefined1 *puVar14; + long lVar15; + long lVar16; + undefined1 auVar17 [16]; + int local_1c; + undefined8 local_18; + undefined1 auStack_10 [16]; + + lVar5 = FUN_003edb10(&DAT_005476f8); + lVar16 = *(long *)(*(long *)(param_5 + 0xd0) + 0x18); + lVar15 = *(long *)(lVar16 + lVar5 * 8); + if (lVar15 == 0) { + puVar8 = operator_new(0x150); + *(undefined4 *)(puVar8 + 1) = 0; + *puVar8 = &PTR_FUN_004f8b00; + puVar8[2] = 0; + puVar8[3] = 0; + *(undefined1 *)(puVar8 + 4) = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined4 *)(puVar8 + 9) = 0; + *(undefined4 *)((long)puVar8 + 0x4c) = 0; + *(undefined1 *)(puVar8 + 0x29) = 0; + FUN_00401814(puVar8,param_5 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_5 + 0xd0),puVar8,lVar5); + lVar15 = *(long *)(lVar16 + lVar5 * 8); + } + lVar5 = *(long *)(param_5 + 8); + iVar9 = (int)lVar5; + if (lVar5 < 0) { + iVar9 = 6; + lVar5 = 6; + } + FUN_003ee004(param_5,auStack_10,param_7); + iVar2 = iVar9 + 0x1e; + if ((*(uint *)(param_5 + 0x18) & 4) != 0) { + iVar2 = iVar9 + 0x138; + } + lVar16 = -((long)iVar2 + 0x1eU & 0xfffffffffffffff0); + local_18 = FUN_003ed450(); + local_1c = FUN_003dd040(param_1,&local_18,&stack0xffffffffffffff60 + lVar16,0,auStack_10,lVar5); + plVar6 = (long *)FUN_00401028(param_5 + 0xd0); + lVar5 = -((long)local_1c * 4 + 0x1eU & 0xfffffffffffffff0); + (**(code **)(*plVar6 + 0x58)) + (plVar6,&stack0xffffffffffffff60 + lVar16,&stack0xffffffffffffff60 + local_1c + lVar16, + &stack0xffffffffffffff60 + lVar5 + lVar16); + iVar9 = local_1c; + sVar12 = (size_t)local_1c; + pvVar7 = memchr(&stack0xffffffffffffff60 + lVar16,0x2e,sVar12); + if (pvVar7 == (void *)0x0) { + puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar16; + if ((*(char *)(lVar15 + 0x20) == '\0') || + ((2 < iVar9 && + (((puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar16, + 0x39 < (byte)(&stack0xffffffffffffff61)[lVar16] || + (puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar16, + 9 < (byte)((&stack0xffffffffffffff62)[lVar16] - 0x30))) || + (puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar16, + (byte)(&stack0xffffffffffffff61)[lVar16] < 0x30)))))) goto LAB_00404d9c; + puVar10 = (undefined1 *)0x0; + } + else { + cVar3 = *(char *)(lVar15 + 0x20); + puVar10 = &stack0xffffffffffffff60 + + ((long)pvVar7 - (long)(&stack0xffffffffffffff60 + lVar16)) * 4 + lVar5 + lVar16; + *(undefined4 *) + (&stack0xffffffffffffff60 + + ((long)pvVar7 - (long)(&stack0xffffffffffffff60 + lVar16)) * 4 + lVar5 + lVar16) = + *(undefined4 *)(lVar15 + 0x48); + puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar16; + if (cVar3 == '\0') goto LAB_00404d9c; + } + lVar4 = -(sVar12 * 8 + 0x1e & 0xfffffffffffffff0); + bVar1 = ((&stack0xffffffffffffff60)[lVar16] - 0x2b & 0xfd) == 0; + if (bVar1) { + *(undefined4 *)(&stack0xffffffffffffff60 + lVar4 + lVar5 + lVar16) = + *(undefined4 *)(&stack0xffffffffffffff60 + lVar5 + lVar16); + lVar11 = 4; + local_1c = iVar9 + -1; + } + else { + lVar11 = 0; + } + FUN_00403884(param_2,*(undefined8 *)(lVar15 + 0x10),*(undefined8 *)(lVar15 + 0x18), + *(undefined4 *)(lVar15 + 0x4c),puVar10, + &stack0xffffffffffffff60 + lVar11 + lVar4 + lVar5 + lVar16, + &stack0xffffffffffffff60 + lVar11 + lVar5 + lVar16,&local_1c); + local_1c = (uint)bVar1 + local_1c; + sVar12 = (size_t)local_1c; + puVar14 = &stack0xffffffffffffff60 + lVar4 + lVar5 + lVar16; +LAB_00404d9c: + lVar5 = *(long *)(param_5 + 0x10); + sVar13 = sVar12; + puVar10 = puVar14; + if ((long)sVar12 < lVar5) { + lVar15 = -(lVar5 * 4 + 0x1eU & 0xfffffffffffffff0); + puVar10 = puVar14 + lVar15; + sVar13 = (size_t)(int)lVar5; + FUN_00404a20(param_5,param_6,(long)puVar14 + lVar15,puVar14,lVar5,sVar12); + local_1c = (int)lVar5; + } + *(undefined8 *)(param_5 + 0x10) = 0; + if (param_4 == '\0') { + sVar12 = (**(code **)(*param_3 + 0x60))(param_3,puVar10,sVar13); + param_4 = sVar13 != sVar12; + } + auVar17[8] = param_4; + auVar17._0_8_ = param_3; + auVar17._9_7_ = 0; + return auVar17; +} + + +================================================================== + +### FUNC 00404f94 (24 bytes) name=FUN_00404f94 + +void FUN_00404f94(void) + +{ + FUN_00404c3c(); + return; +} + + +================================================================== + +### FUNC 00404fac (788 bytes) name=FUN_00404fac + +undefined1 [16] +FUN_00404fac(undefined8 param_1,undefined8 param_2,long *param_3,char param_4,long param_5, + undefined4 param_6,undefined1 param_7) + +{ + bool bVar1; + char cVar2; + long lVar3; + int iVar4; + long lVar5; + long *plVar6; + void *pvVar7; + undefined8 *puVar8; + int iVar9; + undefined1 *puVar10; + long lVar11; + size_t sVar12; + size_t sVar13; + undefined1 *puVar14; + long lVar15; + long lVar16; + undefined1 auVar17 [16]; + int local_1c; + undefined8 local_18; + undefined1 auStack_10 [16]; + + lVar5 = FUN_003edb10(&DAT_005476f8); + lVar15 = *(long *)(*(long *)(param_5 + 0xd0) + 0x18); + lVar16 = *(long *)(lVar15 + lVar5 * 8); + if (lVar16 == 0) { + puVar8 = operator_new(0x150); + *(undefined4 *)(puVar8 + 1) = 0; + *puVar8 = &PTR_FUN_004f8b00; + puVar8[2] = 0; + puVar8[3] = 0; + *(undefined1 *)(puVar8 + 4) = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined4 *)(puVar8 + 9) = 0; + *(undefined4 *)((long)puVar8 + 0x4c) = 0; + *(undefined1 *)(puVar8 + 0x29) = 0; + FUN_00401814(puVar8,param_5 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_5 + 0xd0),puVar8,lVar5); + lVar16 = *(long *)(lVar15 + lVar5 * 8); + } + lVar5 = *(long *)(param_5 + 8); + iVar9 = (int)lVar5; + if (lVar5 < 0) { + iVar9 = 6; + lVar5 = 6; + } + FUN_003ee004(param_5,auStack_10,param_7); + iVar4 = iVar9 + 0x42; + if ((*(uint *)(param_5 + 0x18) >> 2 & 1) != 0) { + iVar4 = iVar9 + 0x1348; + } + lVar15 = -((long)iVar4 + 0x1eU & 0xfffffffffffffff0); + local_18 = FUN_003ed450(); + local_1c = FUN_003dd040(param_1,&local_18,&stack0xffffffffffffff60 + lVar15,0,auStack_10,lVar5); + plVar6 = (long *)FUN_00401028(param_5 + 0xd0); + lVar5 = -((long)local_1c * 4 + 0x1eU & 0xfffffffffffffff0); + (**(code **)(*plVar6 + 0x58)) + (plVar6,&stack0xffffffffffffff60 + lVar15,&stack0xffffffffffffff60 + local_1c + lVar15, + &stack0xffffffffffffff60 + lVar5 + lVar15); + iVar9 = local_1c; + sVar12 = (size_t)local_1c; + pvVar7 = memchr(&stack0xffffffffffffff60 + lVar15,0x2e,sVar12); + if (pvVar7 == (void *)0x0) { + puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar15; + if ((*(char *)(lVar16 + 0x20) == '\0') || + ((2 < iVar9 && + (((puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar15, + 0x39 < (byte)(&stack0xffffffffffffff61)[lVar15] || + (puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar15, + 9 < (byte)((&stack0xffffffffffffff62)[lVar15] - 0x30))) || + (puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar15, + (byte)(&stack0xffffffffffffff61)[lVar15] < 0x30)))))) goto LAB_004050fc; + puVar10 = (undefined1 *)0x0; + } + else { + cVar2 = *(char *)(lVar16 + 0x20); + puVar10 = &stack0xffffffffffffff60 + + ((long)pvVar7 - (long)(&stack0xffffffffffffff60 + lVar15)) * 4 + lVar5 + lVar15; + *(undefined4 *) + (&stack0xffffffffffffff60 + + ((long)pvVar7 - (long)(&stack0xffffffffffffff60 + lVar15)) * 4 + lVar5 + lVar15) = + *(undefined4 *)(lVar16 + 0x48); + puVar14 = &stack0xffffffffffffff60 + lVar5 + lVar15; + if (cVar2 == '\0') goto LAB_004050fc; + } + lVar3 = -(sVar12 * 8 + 0x1e & 0xfffffffffffffff0); + bVar1 = ((&stack0xffffffffffffff60)[lVar15] - 0x2b & 0xfd) == 0; + if (bVar1) { + *(undefined4 *)(&stack0xffffffffffffff60 + lVar3 + lVar5 + lVar15) = + *(undefined4 *)(&stack0xffffffffffffff60 + lVar5 + lVar15); + lVar11 = 4; + local_1c = iVar9 + -1; + } + else { + lVar11 = 0; + } + FUN_00403884(param_2,*(undefined8 *)(lVar16 + 0x10),*(undefined8 *)(lVar16 + 0x18), + *(undefined4 *)(lVar16 + 0x4c),puVar10, + &stack0xffffffffffffff60 + lVar11 + lVar3 + lVar5 + lVar15, + &stack0xffffffffffffff60 + lVar11 + lVar5 + lVar15,&local_1c); + local_1c = (uint)bVar1 + local_1c; + sVar12 = (size_t)local_1c; + puVar14 = &stack0xffffffffffffff60 + lVar3 + lVar5 + lVar15; +LAB_004050fc: + lVar5 = *(long *)(param_5 + 0x10); + sVar13 = sVar12; + puVar10 = puVar14; + if ((long)sVar12 < lVar5) { + lVar15 = -(lVar5 * 4 + 0x1eU & 0xfffffffffffffff0); + puVar10 = puVar14 + lVar15; + sVar13 = (size_t)(int)lVar5; + FUN_00404a20(param_5,param_6,(long)puVar14 + lVar15,puVar14,lVar5,sVar12); + local_1c = (int)lVar5; + } + *(undefined8 *)(param_5 + 0x10) = 0; + if (param_4 == '\0') { + sVar12 = (**(code **)(*param_3 + 0x60))(param_3,puVar10,sVar13); + param_4 = sVar13 != sVar12; + } + auVar17[8] = param_4; + auVar17._0_8_ = param_3; + auVar17._9_7_ = 0; + return auVar17; +} + + +================================================================== + +### FUNC 004052f0 (24 bytes) name=FUN_004052f0 + +void FUN_004052f0(void) + +{ + FUN_00404fac(); + return; +} + + +================================================================== + +### FUNC 00405308 (172 bytes) name=FUN_00405308 + +ulong FUN_00405308(undefined4 *param_1,ulong param_2,long param_3,uint param_4,char param_5) + +{ + long lVar1; + ulong uVar2; + undefined4 *puVar3; + + puVar3 = param_1; + if (param_5 == '\0') { + if ((param_4 & 0x4a) == 0x40) { + do { + uVar2 = param_2 & 7; + param_2 = param_2 >> 3; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined4 *)(param_3 + (uVar2 + 4) * 4); + } while (param_2 != 0); + } + else { + lVar1 = 0x14; + if ((param_4 & 0x4000) == 0) { + lVar1 = 4; + } + do { + uVar2 = param_2 & 0xf; + param_2 = param_2 >> 4; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined4 *)(param_3 + (uVar2 + lVar1) * 4); + } while (param_2 != 0); + } + } + else { + do { + uVar2 = param_2 / 10; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined4 *)(param_3 + (param_2 % 10 + 4) * 4); + param_2 = uVar2; + } while (uVar2 != 0); + } + return (ulong)((long)param_1 - (long)puVar3) >> 2; +} + + +================================================================== + +### FUNC 004053b4 (632 bytes) name=FUN_004053b4 + +undefined1 [16] +FUN_004053b4(undefined8 param_1,long *param_2,char param_3,long param_4,undefined4 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined4 *puVar4; + undefined4 *puVar5; + bool bVar6; + bool bVar7; + int iVar8; + long lVar9; + undefined8 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + long lVar13; + long lVar14; + undefined1 auVar15 [16]; + undefined4 auStack_120 [40]; + undefined1 auStack_80 [16]; + + lVar9 = FUN_003edb10(&DAT_005476f8); + lVar13 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + if (lVar14 == 0) { + puVar10 = operator_new(0x150); + *(undefined4 *)(puVar10 + 1) = 0; + *puVar10 = &PTR_FUN_004f8b00; + puVar10[2] = 0; + puVar10[3] = 0; + *(undefined1 *)(puVar10 + 4) = 0; + puVar10[5] = 0; + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + *(undefined4 *)(puVar10 + 9) = 0; + *(undefined4 *)((long)puVar10 + 0x4c) = 0; + *(undefined1 *)(puVar10 + 0x29) = 0; + FUN_00401814(puVar10,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar10,lVar9); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar4 = auStack_120; + puVar5 = auStack_120; + uVar1 = uVar2 & 0x4a; + bVar6 = uVar1 != 8; + bVar7 = uVar1 != 0x40; + lVar9 = -param_6; + if ((bVar6 && bVar7) <= (0 < param_6)) { + lVar9 = param_6; + } + iVar8 = FUN_00405308(auStack_80,lVar9,lVar14 + 0x50,uVar2,bVar6 && bVar7); + puVar11 = auStack_120 + (0x28 - iVar8); + if (*(char *)(lVar14 + 0x20) == '\0') { + puVar12 = puVar11; + if (!bVar6 || !bVar7) { +LAB_0040556c: + puVar11 = puVar12; + if (((uVar2 >> 9 & 1) != 0) && (param_6 != 0)) { + if (uVar1 == 0x40) { + iVar8 = iVar8 + 1; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x60); + puVar11 = puVar12 + -1; + } + else { + puVar11 = puVar12 + -2; + iVar8 = iVar8 + 2; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x50 + (((ulong)(uVar2 >> 0xe) & 1) + 2) * 4); + *puVar11 = *(undefined4 *)(lVar14 + 0x60); + } + } + goto LAB_00405474; + } + } + else { + lVar9 = -((-(ulong)(iVar8 + 1U >> 0x1f) & 0xfffffff800000000 | (ulong)(iVar8 + 1U) << 3) + 0x1e + & 0xfffffffffffffff0); + puVar5 = (undefined4 *)((long)auStack_120 + lVar9); + puVar4 = (undefined4 *)((long)auStack_120 + lVar9); + puVar12 = (undefined4 *)((long)auStack_120 + lVar9 + 8); + lVar9 = FUN_0040352c(puVar12,*(undefined4 *)(lVar14 + 0x4c),*(undefined8 *)(lVar14 + 0x10), + *(undefined8 *)(lVar14 + 0x18),puVar11,puVar11 + iVar8); + iVar8 = (int)((ulong)(lVar9 - (long)puVar12) >> 2); + if (!bVar6 || !bVar7) goto LAB_0040556c; + } + puVar5 = puVar4; + if (param_6 < 0) { + iVar8 = iVar8 + 1; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x50); + puVar11 = puVar12 + -1; + } + else { + puVar11 = puVar12; + if ((uVar2 >> 0xb & 1) != 0) { + iVar8 = iVar8 + 1; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x54); + puVar11 = puVar12 + -1; + } + } +LAB_00405474: + lVar13 = *(long *)(param_4 + 0x10); + lVar14 = (long)iVar8; + puVar12 = puVar11; + lVar9 = lVar14; + if (lVar14 < lVar13) { + lVar3 = -(lVar13 * 4 + 0x1eU & 0xfffffffffffffff0); + puVar12 = (undefined4 *)((long)puVar5 + lVar3); + lVar9 = (long)(int)lVar13; + FUN_00404a20(param_4,param_5,(long)puVar5 + lVar3,puVar11,lVar13,lVar14); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar13 = (**(code **)(*param_2 + 0x60))(param_2,puVar12,lVar9); + param_3 = lVar13 != lVar9; + } + auVar15[8] = param_3; + auVar15._0_8_ = param_2; + auVar15._9_7_ = 0; + return auVar15; +} + + +================================================================== + +### FUNC 0040565c (540 bytes) name=FUN_0040565c + +undefined1 [16] +FUN_0040565c(undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5, + char param_6) + +{ + uint uVar1; + long lVar2; + long lVar3; + undefined8 *puVar4; + byte extraout_w1; + ulong uVar5; + int iVar6; + size_t __n; + long lVar7; + undefined8 uVar8; + undefined1 auVar9 [16]; + + uVar1 = *(uint *)(param_4 + 0x18); + uVar5 = param_3 & 0xff; + if ((uVar1 & 1) == 0) { + param_2 = (long *)FUN_004053b4(); + uVar5 = (ulong)extraout_w1; + goto LAB_004056ac; + } + lVar2 = FUN_003edb10(&DAT_005476f8); + lVar7 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar3 = *(long *)(lVar7 + lVar2 * 8); + if (lVar3 == 0) { + puVar4 = operator_new(0x150); + *(undefined4 *)(puVar4 + 1) = 0; + *puVar4 = &PTR_FUN_004f8b00; + puVar4[2] = 0; + puVar4[3] = 0; + *(undefined1 *)(puVar4 + 4) = 0; + puVar4[5] = 0; + puVar4[6] = 0; + puVar4[7] = 0; + puVar4[8] = 0; + *(undefined4 *)(puVar4 + 9) = 0; + *(undefined4 *)((long)puVar4 + 0x4c) = 0; + *(undefined1 *)(puVar4 + 0x29) = 0; + FUN_00401814(puVar4,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar4,lVar2); + lVar3 = *(long *)(lVar7 + lVar2 * 8); + if (param_6 == '\0') goto LAB_004056fc; +LAB_00405780: + uVar8 = *(undefined8 *)(lVar3 + 0x28); + lVar2 = *(long *)(param_4 + 0x10); + lVar3 = (long)*(int *)(lVar3 + 0x30); + if (lVar3 < lVar2) goto LAB_00405714; +LAB_00405798: + *(undefined8 *)(param_4 + 0x10) = 0; + if ((char)param_3 != '\0') goto LAB_004056ac; +LAB_004057a0: + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,uVar8,lVar3); + uVar5 = (ulong)(lVar3 != lVar2); + } + else { + if (param_6 != '\0') goto LAB_00405780; +LAB_004056fc: + uVar8 = *(undefined8 *)(lVar3 + 0x38); + lVar2 = *(long *)(param_4 + 0x10); + lVar3 = (long)*(int *)(lVar3 + 0x40); + if (lVar2 <= lVar3) goto LAB_00405798; +LAB_00405714: + __n = lVar2 - lVar3; + lVar2 = -(__n * 4 + 0x1e & 0xfffffffffffffff0); + wmemset((wchar_t *)(&stack0xffffffffffffff90 + lVar2),param_5,__n); + *(undefined8 *)(param_4 + 0x10) = 0; + iVar6 = (int)__n; + if ((uVar1 & 0xb0) == 0x20) { + if ((char)param_3 != '\0') goto LAB_004056ac; + lVar7 = (**(code **)(*param_2 + 0x60))(param_2,uVar8,lVar3); + if (lVar3 == lVar7) { + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,&stack0xffffffffffffff90 + lVar2,(long)iVar6) + ; + uVar5 = (ulong)(iVar6 != lVar2); + goto LAB_004056ac; + } + } + else { + if ((param_3 & 0xff) != 0) goto LAB_004056ac; + lVar2 = (**(code **)(*param_2 + 0x60))(param_2,&stack0xffffffffffffff90 + lVar2,(long)iVar6); + if (iVar6 == lVar2) goto LAB_004057a0; + } + uVar5 = 1; + } +LAB_004056ac: + auVar9._8_8_ = param_3 & 0xffffffffffffff00 | uVar5; + auVar9._0_8_ = param_2; + return auVar9; +} + + +================================================================== + +### FUNC 004058a8 (20 bytes) name=FUN_004058a8 + +void FUN_004058a8(void) + +{ + FUN_004053b4(); + return; +} + + +================================================================== + +### FUNC 004058bc (572 bytes) name=FUN_004058bc + +undefined1 [16] +FUN_004058bc(undefined8 param_1,long *param_2,char param_3,long param_4,undefined4 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined4 *puVar4; + undefined4 *puVar5; + int iVar6; + long lVar7; + undefined8 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + long lVar11; + long lVar12; + undefined1 auVar13 [16]; + undefined4 auStack_120 [40]; + undefined1 auStack_80 [16]; + + lVar7 = FUN_003edb10(&DAT_005476f8); + lVar11 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + if (lVar12 == 0) { + puVar8 = operator_new(0x150); + *(undefined4 *)(puVar8 + 1) = 0; + *puVar8 = &PTR_FUN_004f8b00; + puVar8[2] = 0; + puVar8[3] = 0; + *(undefined1 *)(puVar8 + 4) = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined4 *)(puVar8 + 9) = 0; + *(undefined4 *)((long)puVar8 + 0x4c) = 0; + *(undefined1 *)(puVar8 + 0x29) = 0; + FUN_00401814(puVar8,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar8,lVar7); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar5 = auStack_120; + puVar4 = auStack_120; + uVar1 = uVar2 & 0x4a; + iVar6 = FUN_00405308(auStack_80,param_6,lVar12 + 0x50,uVar2,uVar1 != 8 && uVar1 != 0x40); + puVar10 = auStack_120 + (0x28 - iVar6); + if (*(char *)(lVar12 + 0x20) != '\0') { + lVar7 = -((-(ulong)(iVar6 + 1U >> 0x1f) & 0xfffffff800000000 | (ulong)(iVar6 + 1U) << 3) + 0x1e + & 0xfffffffffffffff0); + puVar4 = (undefined4 *)((long)auStack_120 + lVar7); + puVar5 = (undefined4 *)((long)auStack_120 + lVar7); + puVar9 = (undefined4 *)((long)auStack_120 + lVar7 + 8); + lVar7 = FUN_0040352c(puVar9,*(undefined4 *)(lVar12 + 0x4c),*(undefined8 *)(lVar12 + 0x10), + *(undefined8 *)(lVar12 + 0x18),puVar10,puVar10 + iVar6); + iVar6 = (int)((ulong)(lVar7 - (long)puVar9) >> 2); + puVar10 = puVar9; + } + puVar9 = puVar10; + if (((uVar1 == 8 || uVar1 == 0x40) && (puVar5 = puVar4, param_6 != 0)) && ((uVar2 >> 9 & 1) != 0)) + { + if (uVar1 == 0x40) { + iVar6 = iVar6 + 1; + puVar10[-1] = *(undefined4 *)(lVar12 + 0x60); + puVar9 = puVar10 + -1; + } + else { + puVar9 = puVar10 + -2; + iVar6 = iVar6 + 2; + puVar10[-1] = *(undefined4 *)(lVar12 + 0x50 + (((ulong)(uVar2 >> 0xe) & 1) + 2) * 4); + *puVar9 = *(undefined4 *)(lVar12 + 0x60); + } + } + lVar11 = *(long *)(param_4 + 0x10); + lVar12 = (long)iVar6; + puVar10 = puVar9; + lVar7 = lVar12; + if (lVar12 < lVar11) { + lVar3 = -(lVar11 * 4 + 0x1eU & 0xfffffffffffffff0); + puVar10 = (undefined4 *)((long)puVar5 + lVar3); + lVar7 = (long)(int)lVar11; + FUN_00404a20(param_4,param_5,(long)puVar5 + lVar3,puVar9,lVar11,lVar12); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar11 = (**(code **)(*param_2 + 0x60))(param_2,puVar10,lVar7); + param_3 = lVar7 != lVar11; + } + auVar13[8] = param_3; + auVar13._0_8_ = param_2; + auVar13._9_7_ = 0; + return auVar13; +} + + +================================================================== + +### FUNC 00405b28 (20 bytes) name=FUN_00405b28 + +void FUN_00405b28(void) + +{ + FUN_004058bc(); + return; +} + + +================================================================== + +### FUNC 00405b3c (92 bytes) name=FUN_00405b3c + +void FUN_00405b3c(void) + +{ + uint uVar1; + long in_x3; + + uVar1 = *(uint *)(in_x3 + 0x18); + *(uint *)(in_x3 + 0x18) = uVar1 & 0xffffbfb5 | 0x208; + FUN_004058bc(); + *(uint *)(in_x3 + 0x18) = uVar1; + return; +} + + +================================================================== + +### FUNC 00405b98 (172 bytes) name=FUN_00405b98 + +ulong FUN_00405b98(undefined4 *param_1,ulong param_2,long param_3,uint param_4,char param_5) + +{ + long lVar1; + ulong uVar2; + undefined4 *puVar3; + + puVar3 = param_1; + if (param_5 == '\0') { + if ((param_4 & 0x4a) == 0x40) { + do { + uVar2 = param_2 & 7; + param_2 = param_2 >> 3; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined4 *)(param_3 + (uVar2 + 4) * 4); + } while (param_2 != 0); + } + else { + lVar1 = 0x14; + if ((param_4 & 0x4000) == 0) { + lVar1 = 4; + } + do { + uVar2 = param_2 & 0xf; + param_2 = param_2 >> 4; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined4 *)(param_3 + (uVar2 + lVar1) * 4); + } while (param_2 != 0); + } + } + else { + do { + uVar2 = param_2 / 10; + puVar3 = puVar3 + -1; + *puVar3 = *(undefined4 *)(param_3 + (param_2 % 10 + 4) * 4); + param_2 = uVar2; + } while (uVar2 != 0); + } + return (ulong)((long)param_1 - (long)puVar3) >> 2; +} + + +================================================================== + +### FUNC 00405c44 (632 bytes) name=FUN_00405c44 + +undefined1 [16] +FUN_00405c44(undefined8 param_1,long *param_2,char param_3,long param_4,undefined4 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined4 *puVar4; + undefined4 *puVar5; + bool bVar6; + bool bVar7; + int iVar8; + long lVar9; + undefined8 *puVar10; + undefined4 *puVar11; + undefined4 *puVar12; + long lVar13; + long lVar14; + undefined1 auVar15 [16]; + undefined4 auStack_120 [40]; + undefined1 auStack_80 [16]; + + lVar9 = FUN_003edb10(&DAT_005476f8); + lVar13 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + if (lVar14 == 0) { + puVar10 = operator_new(0x150); + *(undefined4 *)(puVar10 + 1) = 0; + *puVar10 = &PTR_FUN_004f8b00; + puVar10[2] = 0; + puVar10[3] = 0; + *(undefined1 *)(puVar10 + 4) = 0; + puVar10[5] = 0; + puVar10[6] = 0; + puVar10[7] = 0; + puVar10[8] = 0; + *(undefined4 *)(puVar10 + 9) = 0; + *(undefined4 *)((long)puVar10 + 0x4c) = 0; + *(undefined1 *)(puVar10 + 0x29) = 0; + FUN_00401814(puVar10,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar10,lVar9); + lVar14 = *(long *)(lVar13 + lVar9 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar4 = auStack_120; + puVar5 = auStack_120; + uVar1 = uVar2 & 0x4a; + bVar6 = uVar1 != 8; + bVar7 = uVar1 != 0x40; + lVar9 = -param_6; + if ((bVar6 && bVar7) <= (0 < param_6)) { + lVar9 = param_6; + } + iVar8 = FUN_00405b98(auStack_80,lVar9,lVar14 + 0x50,uVar2,bVar6 && bVar7); + puVar11 = auStack_120 + (0x28 - iVar8); + if (*(char *)(lVar14 + 0x20) == '\0') { + puVar12 = puVar11; + if (!bVar6 || !bVar7) { +LAB_00405dfc: + puVar11 = puVar12; + if (((uVar2 >> 9 & 1) != 0) && (param_6 != 0)) { + if (uVar1 == 0x40) { + iVar8 = iVar8 + 1; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x60); + puVar11 = puVar12 + -1; + } + else { + puVar11 = puVar12 + -2; + iVar8 = iVar8 + 2; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x50 + (((ulong)(uVar2 >> 0xe) & 1) + 2) * 4); + *puVar11 = *(undefined4 *)(lVar14 + 0x60); + } + } + goto LAB_00405d04; + } + } + else { + lVar9 = -((-(ulong)(iVar8 + 1U >> 0x1f) & 0xfffffff800000000 | (ulong)(iVar8 + 1U) << 3) + 0x1e + & 0xfffffffffffffff0); + puVar5 = (undefined4 *)((long)auStack_120 + lVar9); + puVar4 = (undefined4 *)((long)auStack_120 + lVar9); + puVar12 = (undefined4 *)((long)auStack_120 + lVar9 + 8); + lVar9 = FUN_0040352c(puVar12,*(undefined4 *)(lVar14 + 0x4c),*(undefined8 *)(lVar14 + 0x10), + *(undefined8 *)(lVar14 + 0x18),puVar11,puVar11 + iVar8); + iVar8 = (int)((ulong)(lVar9 - (long)puVar12) >> 2); + if (!bVar6 || !bVar7) goto LAB_00405dfc; + } + puVar5 = puVar4; + if (param_6 < 0) { + iVar8 = iVar8 + 1; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x50); + puVar11 = puVar12 + -1; + } + else { + puVar11 = puVar12; + if ((uVar2 >> 0xb & 1) != 0) { + iVar8 = iVar8 + 1; + puVar12[-1] = *(undefined4 *)(lVar14 + 0x54); + puVar11 = puVar12 + -1; + } + } +LAB_00405d04: + lVar13 = *(long *)(param_4 + 0x10); + lVar14 = (long)iVar8; + puVar12 = puVar11; + lVar9 = lVar14; + if (lVar14 < lVar13) { + lVar3 = -(lVar13 * 4 + 0x1eU & 0xfffffffffffffff0); + puVar12 = (undefined4 *)((long)puVar5 + lVar3); + lVar9 = (long)(int)lVar13; + FUN_00404a20(param_4,param_5,(long)puVar5 + lVar3,puVar11,lVar13,lVar14); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar13 = (**(code **)(*param_2 + 0x60))(param_2,puVar12,lVar9); + param_3 = lVar13 != lVar9; + } + auVar15[8] = param_3; + auVar15._0_8_ = param_2; + auVar15._9_7_ = 0; + return auVar15; +} + + +================================================================== + +### FUNC 00405eec (20 bytes) name=FUN_00405eec + +void FUN_00405eec(void) + +{ + FUN_00405c44(); + return; +} + + +================================================================== + +### FUNC 00405f00 (572 bytes) name=FUN_00405f00 + +undefined1 [16] +FUN_00405f00(undefined8 param_1,long *param_2,char param_3,long param_4,undefined4 param_5, + long param_6) + +{ + uint uVar1; + uint uVar2; + long lVar3; + undefined4 *puVar4; + undefined4 *puVar5; + int iVar6; + long lVar7; + undefined8 *puVar8; + undefined4 *puVar9; + undefined4 *puVar10; + long lVar11; + long lVar12; + undefined1 auVar13 [16]; + undefined4 auStack_120 [40]; + undefined1 auStack_80 [16]; + + lVar7 = FUN_003edb10(&DAT_005476f8); + lVar11 = *(long *)(*(long *)(param_4 + 0xd0) + 0x18); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + if (lVar12 == 0) { + puVar8 = operator_new(0x150); + *(undefined4 *)(puVar8 + 1) = 0; + *puVar8 = &PTR_FUN_004f8b00; + puVar8[2] = 0; + puVar8[3] = 0; + *(undefined1 *)(puVar8 + 4) = 0; + puVar8[5] = 0; + puVar8[6] = 0; + puVar8[7] = 0; + puVar8[8] = 0; + *(undefined4 *)(puVar8 + 9) = 0; + *(undefined4 *)((long)puVar8 + 0x4c) = 0; + *(undefined1 *)(puVar8 + 0x29) = 0; + FUN_00401814(puVar8,param_4 + 0xd0); + FUN_003ed980(*(undefined8 *)(param_4 + 0xd0),puVar8,lVar7); + lVar12 = *(long *)(lVar11 + lVar7 * 8); + } + uVar2 = *(uint *)(param_4 + 0x18); + puVar5 = auStack_120; + puVar4 = auStack_120; + uVar1 = uVar2 & 0x4a; + iVar6 = FUN_00405b98(auStack_80,param_6,lVar12 + 0x50,uVar2,uVar1 != 8 && uVar1 != 0x40); + puVar10 = auStack_120 + (0x28 - iVar6); + if (*(char *)(lVar12 + 0x20) != '\0') { + lVar7 = -((-(ulong)(iVar6 + 1U >> 0x1f) & 0xfffffff800000000 | (ulong)(iVar6 + 1U) << 3) + 0x1e + & 0xfffffffffffffff0); + puVar4 = (undefined4 *)((long)auStack_120 + lVar7); + puVar5 = (undefined4 *)((long)auStack_120 + lVar7); + puVar9 = (undefined4 *)((long)auStack_120 + lVar7 + 8); + lVar7 = FUN_0040352c(puVar9,*(undefined4 *)(lVar12 + 0x4c),*(undefined8 *)(lVar12 + 0x10), + *(undefined8 *)(lVar12 + 0x18),puVar10,puVar10 + iVar6); + iVar6 = (int)((ulong)(lVar7 - (long)puVar9) >> 2); + puVar10 = puVar9; + } + puVar9 = puVar10; + if (((uVar1 == 8 || uVar1 == 0x40) && (puVar5 = puVar4, param_6 != 0)) && ((uVar2 >> 9 & 1) != 0)) + { + if (uVar1 == 0x40) { + iVar6 = iVar6 + 1; + puVar10[-1] = *(undefined4 *)(lVar12 + 0x60); + puVar9 = puVar10 + -1; + } + else { + puVar9 = puVar10 + -2; + iVar6 = iVar6 + 2; + puVar10[-1] = *(undefined4 *)(lVar12 + 0x50 + (((ulong)(uVar2 >> 0xe) & 1) + 2) * 4); + *puVar9 = *(undefined4 *)(lVar12 + 0x60); + } + } + lVar11 = *(long *)(param_4 + 0x10); + lVar12 = (long)iVar6; + puVar10 = puVar9; + lVar7 = lVar12; + if (lVar12 < lVar11) { + lVar3 = -(lVar11 * 4 + 0x1eU & 0xfffffffffffffff0); + puVar10 = (undefined4 *)((long)puVar5 + lVar3); + lVar7 = (long)(int)lVar11; + FUN_00404a20(param_4,param_5,(long)puVar5 + lVar3,puVar9,lVar11,lVar12); + } + *(undefined8 *)(param_4 + 0x10) = 0; + if (param_3 == '\0') { + lVar11 = (**(code **)(*param_2 + 0x60))(param_2,puVar10,lVar7); + param_3 = lVar7 != lVar11; + } + auVar13[8] = param_3; + auVar13._0_8_ = param_2; + auVar13._9_7_ = 0; + return auVar13; +} + + +================================================================== + +### FUNC 0040616c (20 bytes) name=FUN_0040616c + +void FUN_0040616c(void) + +{ + FUN_00405f00(); + return; +} + + +================================================================== + +### FUNC 00406180 (224 bytes) name=FUN_00406180 + +long FUN_00406180(undefined8 param_1,long *param_2) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + long lVar4; + + lVar1 = FUN_003edb10(&DAT_00547710); + lVar4 = *(long *)(*param_2 + 0x18); + lVar2 = *(long *)(lVar4 + lVar1 * 8); + if (lVar2 != 0) { + return lVar2; + } + puVar3 = operator_new(0xa0); + *(undefined4 *)(puVar3 + 1) = 0; + *puVar3 = &PTR_FUN_004f8ae0; + puVar3[2] = 0; + puVar3[3] = 0; + *(undefined1 *)(puVar3 + 4) = 0; + *(undefined4 *)((long)puVar3 + 0x24) = 0; + *(undefined4 *)(puVar3 + 5) = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + puVar3[0xb] = 0; + *(undefined4 *)(puVar3 + 0xc) = 0; + *(undefined1 *)((long)puVar3 + 100) = 0; + *(undefined1 *)((long)puVar3 + 0x65) = 0; + *(undefined1 *)((long)puVar3 + 0x66) = 0; + *(undefined1 *)((long)puVar3 + 0x67) = 0; + *(undefined1 *)(puVar3 + 0xd) = 0; + *(undefined1 *)((long)puVar3 + 0x69) = 0; + *(undefined1 *)((long)puVar3 + 0x6a) = 0; + *(undefined1 *)((long)puVar3 + 0x6b) = 0; + *(undefined1 *)(puVar3 + 0x13) = 0; + FUN_00401e74(puVar3,param_2); + FUN_003ed980(*param_2,puVar3,lVar1); + return *(long *)(lVar4 + lVar1 * 8); +} + + +================================================================== + +### FUNC 00406290 (224 bytes) name=FUN_00406290 + +long FUN_00406290(undefined8 param_1,long *param_2) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + long lVar4; + + lVar1 = FUN_003edb10(&DAT_00547718); + lVar4 = *(long *)(*param_2 + 0x18); + lVar2 = *(long *)(lVar4 + lVar1 * 8); + if (lVar2 != 0) { + return lVar2; + } + puVar3 = operator_new(0xa0); + *(undefined4 *)(puVar3 + 1) = 0; + *puVar3 = &PTR_FUN_004f8ac0; + puVar3[2] = 0; + puVar3[3] = 0; + *(undefined1 *)(puVar3 + 4) = 0; + *(undefined4 *)((long)puVar3 + 0x24) = 0; + *(undefined4 *)(puVar3 + 5) = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + puVar3[9] = 0; + puVar3[10] = 0; + puVar3[0xb] = 0; + *(undefined4 *)(puVar3 + 0xc) = 0; + *(undefined1 *)((long)puVar3 + 100) = 0; + *(undefined1 *)((long)puVar3 + 0x65) = 0; + *(undefined1 *)((long)puVar3 + 0x66) = 0; + *(undefined1 *)((long)puVar3 + 0x67) = 0; + *(undefined1 *)(puVar3 + 0xd) = 0; + *(undefined1 *)((long)puVar3 + 0x69) = 0; + *(undefined1 *)((long)puVar3 + 0x6a) = 0; + *(undefined1 *)((long)puVar3 + 0x6b) = 0; + *(undefined1 *)(puVar3 + 0x13) = 0; + FUN_00402594(puVar3,param_2); + FUN_003ed980(*param_2,puVar3,lVar1); + return *(long *)(lVar4 + lVar1 * 8); +} + + +================================================================== + +### FUNC 004063a0 (180 bytes) name=FUN_004063a0 + +long FUN_004063a0(undefined8 param_1,long *param_2) + +{ + long lVar1; + long lVar2; + undefined8 *puVar3; + long lVar4; + + lVar1 = FUN_003edb10(&DAT_005476f8); + lVar4 = *(long *)(*param_2 + 0x18); + lVar2 = *(long *)(lVar4 + lVar1 * 8); + if (lVar2 != 0) { + return lVar2; + } + puVar3 = operator_new(0x150); + *(undefined4 *)(puVar3 + 1) = 0; + *puVar3 = &PTR_FUN_004f8b00; + puVar3[2] = 0; + puVar3[3] = 0; + *(undefined1 *)(puVar3 + 4) = 0; + puVar3[5] = 0; + puVar3[6] = 0; + puVar3[7] = 0; + puVar3[8] = 0; + *(undefined4 *)(puVar3 + 9) = 0; + *(undefined4 *)((long)puVar3 + 0x4c) = 0; + *(undefined1 *)(puVar3 + 0x29) = 0; + FUN_00401814(puVar3,param_2); + FUN_003ed980(*param_2,puVar3,lVar1); + return *(long *)(lVar4 + lVar1 * 8); +} + + +================================================================== + +### FUNC 00406484 (148 bytes) name=FUN_00406484 + +ulong FUN_00406484(long *param_1) + +{ + ulong uVar1; + long *plVar2; + + plVar2 = (long *)*param_1; + if (plVar2 == (long *)0x0) { + return 0xffffffff; + } + if (*(uint *)(param_1 + 1) != 0xffffffff) { + return (ulong)*(uint *)(param_1 + 1); + } + if ((uint *)plVar2[2] < (uint *)plVar2[3]) { + uVar1 = (ulong)*(uint *)plVar2[2]; + } + else { + uVar1 = (**(code **)(*plVar2 + 0x48))(plVar2); + } + if ((int)uVar1 != -1) { + *(int *)(param_1 + 1) = (int)uVar1; + return uVar1; + } + *param_1 = 0; + return uVar1; +} + + +================================================================== + +### FUNC 00406518 (892 bytes) name=FUN_00406518 + +undefined1 [16] +FUN_00406518(undefined8 param_1,long *param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,int *param_6,long param_7,long param_8,long param_9,uint *param_10) + +{ + wchar_t wVar1; + long lVar2; + undefined1 auVar3 [16]; + int iVar4; + int iVar5; + int iVar6; + wchar_t wVar7; + long *plVar8; + ulong uVar9; + size_t sVar10; + ulong uVar11; + long lVar12; + ulong uVar13; + wchar_t *__s; + ulong uVar14; + undefined8 local_20; + undefined8 uStack_18; + long *local_10; + int local_8; + undefined4 uStack_4; + + local_8 = (int)param_3; + uStack_4 = (undefined4)((ulong)param_3 >> 0x20); + local_20 = param_4; + uStack_18 = param_5; + local_10 = param_2; + plVar8 = (long *)FUN_00401028(param_9 + 0xd0); + lVar2 = -(param_8 * 4 + 0x1eU & 0xfffffffffffffff0); + iVar4 = FUN_00406484(&local_10); + iVar5 = FUN_00406484(&local_20); + if (((iVar4 == -1) != (iVar5 == -1)) && (iVar4 = FUN_00406484(&local_10), param_8 != 0)) { + lVar12 = 0; + uVar11 = 0; + do { + while ((iVar5 = **(int **)(param_7 + lVar12 * 8), iVar4 == iVar5 || + (iVar5 = (**(code **)(*plVar8 + 0x30))(plVar8,iVar5), iVar4 == iVar5))) { + *(int *)(&stack0xffffffffffffff60 + uVar11 * 4 + lVar2) = (int)lVar12; + lVar12 = lVar12 + 1; + uVar11 = uVar11 + 1; + if (lVar12 == param_8) goto LAB_00406610; + } + lVar12 = lVar12 + 1; + } while (lVar12 != param_8); +LAB_00406610: + uVar14 = 0; +joined_r0x0040661c: + if (1 < uVar11) { + uVar13 = 1; + uVar9 = wcslen(*(wchar_t **)(param_7 + (long)*(int *)(&stack0xffffffffffffff60 + lVar2) * 8)); + do { + lVar12 = uVar13 * 4; + uVar13 = uVar13 + 1; + sVar10 = wcslen(*(wchar_t **) + (param_7 + (long)*(int *)(&stack0xffffffffffffff60 + lVar12 + lVar2) * 8)); + if (sVar10 < uVar9) { + uVar9 = sVar10; + } + } while (uVar13 < uVar11); + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 4; + } + else { + (**(code **)(*local_10 + 0x50))(); + } + local_8 = -1; + } + uVar14 = uVar14 + 1; + if (uVar9 <= uVar14) goto LAB_004067b8; + iVar4 = FUN_00406484(&local_10); + iVar5 = FUN_00406484(&local_20); + if ((iVar4 == -1) == (iVar5 == -1)) goto LAB_004067b8; + uVar13 = 0; + do { + while( true ) { + iVar4 = *(int *)(*(long *)(param_7 + + (long)*(int *)(&stack0xffffffffffffff60 + uVar13 * 4 + lVar2) * + 8) + uVar14 * 4); + if (local_10 == (long *)0x0) { + iVar5 = -1; + } + else { + iVar5 = local_8; + if (local_8 == -1) { + if ((int *)local_10[2] < (int *)local_10[3]) { + iVar5 = *(int *)local_10[2]; + } + else { + iVar5 = (**(code **)(*local_10 + 0x48))(local_10); + } + if (iVar5 == -1) { + local_10 = (long *)0x0; + } + else { + local_8 = iVar5; + } + } + } + if (iVar4 != iVar5) break; + uVar13 = uVar13 + 1; + if (uVar11 <= uVar13) goto joined_r0x0040661c; + } + uVar11 = uVar11 - 1; + *(undefined4 *)(&stack0xffffffffffffff60 + uVar13 * 4 + lVar2) = + *(undefined4 *)(&stack0xffffffffffffff60 + uVar11 * 4 + lVar2); + } while (uVar13 < uVar11); + goto joined_r0x0040661c; + } + if (uVar11 == 1) { + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 4; + } + else { + FUN_003ff240(); + } + local_8 = -1; + } + iVar4 = *(int *)(&stack0xffffffffffffff60 + lVar2); + __s = *(wchar_t **)(param_7 + (long)iVar4 * 8); + sVar10 = wcslen(__s); + while (uVar14 = uVar14 + 1, uVar14 < sVar10) { + iVar5 = FUN_00406484(&local_10); + iVar6 = FUN_00406484(&local_20); + if (((iVar5 == -1) == (iVar6 == -1)) || + (wVar1 = __s[uVar14], wVar7 = FUN_00406484(&local_10), wVar7 != wVar1)) break; + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 4; + } + else { + FUN_003ff240(); + } + local_8 = -1; + } + } + if (uVar14 == sVar10) { + *param_6 = iVar4; + goto LAB_004067c4; + } + } + } +LAB_004067b8: + *param_10 = *param_10 | 4; +LAB_004067c4: + auVar3._8_4_ = local_8; + auVar3._0_8_ = local_10; + auVar3._12_4_ = uStack_4; + return auVar3; +} + + +================================================================== + +### FUNC 00406894 (1040 bytes) name=FUN_00406894 + +undefined1 [16] +FUN_00406894(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + int *param_6,long param_7,ulong param_8,long param_9,uint *param_10) + +{ + long lVar1; + undefined1 auVar2 [16]; + int iVar3; + int iVar4; + long *plVar5; + size_t sVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + long lVar10; + long lVar11; + ulong *puVar12; + ulong uVar13; + ulong uVar14; + long *local_20; + undefined8 local_18; + long *local_10; + int local_8; + undefined4 uStack_4; + + local_8 = (int)param_3; + uStack_4 = (undefined4)((ulong)param_3 >> 0x20); + local_20 = param_4; + local_18 = param_5; + local_10 = param_2; + plVar5 = (long *)FUN_00401028(param_9 + 0xd0); + lVar1 = -(param_8 * 8 + 0x1e & 0xfffffffffffffff0); + iVar3 = FUN_00406484(&local_10); + iVar4 = FUN_00406484(&local_20); + if ((iVar3 == -1) != (iVar4 == -1)) { + lVar11 = param_8 * 2; + iVar3 = FUN_00406484(&local_10); + if (lVar11 != 0) { + lVar10 = 0; + uVar14 = 0; + do { + while ((iVar4 = **(int **)(param_7 + lVar10 * 8), iVar3 == iVar4 || + (iVar4 = (**(code **)(*plVar5 + 0x30))(plVar5,iVar4), iVar3 == iVar4))) { + *(int *)(&stack0xffffffffffffff70 + uVar14 * 4 + lVar1) = (int)lVar10; + lVar10 = lVar10 + 1; + uVar14 = uVar14 + 1; + if (lVar10 == lVar11) goto LAB_0040698c; + } + lVar10 = lVar10 + 1; + } while (lVar10 != lVar11); +LAB_0040698c: + if (uVar14 != 0) { + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 4; + } + else { + FUN_003ff240(); + } + local_8 = -1; + } + uVar13 = 0; + lVar11 = -(uVar14 * 8 + 0x1e & 0xfffffffffffffff0); + puVar12 = (ulong *)(&stack0xffffffffffffff70 + lVar11 + lVar1); + do { + sVar6 = wcslen(*(wchar_t **) + (param_7 + + (long)*(int *)(&stack0xffffffffffffff70 + uVar13 * 4 + lVar1) * 8)); + *(size_t *)(&stack0xffffffffffffff70 + uVar13 * 8 + lVar11 + lVar1) = sVar6; + uVar13 = uVar13 + 1; + } while (uVar13 != uVar14); + uVar13 = 1; + lVar11 = 4; + goto LAB_00406a04; + } + } + } + uVar13 = 0; + uVar14 = 0; + puVar12 = (ulong *)0x0; + lVar11 = 0; +LAB_00406a04: + if (local_10 == (long *)0x0) goto LAB_00406ae8; +LAB_00406a08: + if (local_8 == -1) { + if ((int *)local_10[2] < (int *)local_10[3]) { + iVar3 = *(int *)local_10[2]; + } + else { + iVar3 = (**(code **)(*local_10 + 0x48))(); + } + if (iVar3 == -1) { + local_10 = (long *)0x0; + goto LAB_00406ae8; + } + local_8 = iVar3; + if (local_20 == (long *)0x0) goto LAB_00406a38; + } + else { + iVar3 = local_8; + if (local_20 == (long *)0x0) goto LAB_00406a4c; + } + iVar4 = 0; + iVar3 = 0; + if ((int)local_18 == -1) goto LAB_00406b04; +LAB_00406a30: + if (iVar3 != iVar4) { +LAB_00406a38: + do { + if (local_10 == (long *)0x0) { + iVar3 = -1; + } + else { + iVar3 = local_8; + if (local_8 == -1) { + if ((int *)local_10[2] < (int *)local_10[3]) { + iVar3 = *(int *)local_10[2]; + } + else { + iVar3 = (**(code **)(*local_10 + 0x48))(); + } + if (iVar3 == -1) { + local_10 = (long *)0x0; + } + else { + local_8 = iVar3; + } + } + } +LAB_00406a4c: + if (uVar14 == 0) goto LAB_00406b40; + uVar8 = 0; + uVar9 = 0; + do { + while( true ) { + if (uVar13 < puVar12[uVar8]) break; + uVar9 = uVar9 + 1; +LAB_00406a64: + uVar8 = uVar8 + 1; + if (uVar14 <= uVar8) goto LAB_00406ab0; + } + if (*(int *)(*(long *)(param_7 + + (long)*(int *)(&stack0xffffffffffffff70 + uVar8 * 4 + lVar1) * 8) + + lVar11) == iVar3) goto LAB_00406a64; + uVar14 = uVar14 - 1; + uVar7 = puVar12[uVar14]; + *(undefined4 *)(&stack0xffffffffffffff70 + uVar8 * 4 + lVar1) = + *(undefined4 *)(&stack0xffffffffffffff70 + uVar14 * 4 + lVar1); + puVar12[uVar8] = uVar7; + } while (uVar8 < uVar14); +LAB_00406ab0: + if (uVar14 == uVar9) break; + if (local_10 != (long *)0x0) { + if ((ulong)local_10[2] < (ulong)local_10[3]) { + local_10[2] = local_10[2] + 4; + } + else { + (**(code **)(*local_10 + 0x50))(); + } + local_8 = -1; + } + uVar13 = uVar13 + 1; + lVar11 = lVar11 + 4; + if (local_10 != (long *)0x0) goto LAB_00406a08; +LAB_00406ae8: + if (local_20 == (long *)0x0) break; + iVar4 = 1; + iVar3 = 0; + if ((int)local_18 != -1) goto LAB_00406a30; +LAB_00406b04: + if ((int *)local_20[2] < (int *)local_20[3]) { + iVar3 = *(int *)local_20[2]; + } + else { + iVar3 = (**(code **)(*local_20 + 0x48))(); + } + if (iVar3 == -1) goto LAB_00406bf8; + local_18 = CONCAT44(local_18._4_4_,iVar3); + if (iVar4 == 0) break; + } while( true ); + } + if (uVar14 == 1) { + uVar14 = *puVar12; +joined_r0x00406c94: + if (uVar14 == uVar13) { +LAB_00406c38: + iVar4 = *(int *)(&stack0xffffffffffffff70 + lVar1); + iVar3 = iVar4 - (int)param_8; + if ((ulong)(long)iVar4 < param_8) { + iVar3 = iVar4; + } + *param_6 = iVar3; + goto LAB_00406b4c; + } + } + else if (uVar14 == 2) { + if (*puVar12 != uVar13) { + uVar14 = puVar12[1]; + goto joined_r0x00406c94; + } + goto LAB_00406c38; + } +LAB_00406b40: + *param_10 = *param_10 | 4; +LAB_00406b4c: + auVar2._8_4_ = local_8; + auVar2._0_8_ = local_10; + auVar2._12_4_ = uStack_4; + return auVar2; +LAB_00406bf8: + local_20 = (long *)0x0; + iVar3 = 1; + goto LAB_00406a30; +} + + +================================================================== + +### FUNC 00406ca4 (584 bytes) name=FUN_00406ca4 + +undefined1 [16] +FUN_00406ca4(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8) + +{ + uint uVar1; + int iVar2; + long lVar3; + long lVar4; + long *plVar5; + ulong uVar6; + bool bVar7; + undefined1 auVar8 [16]; + undefined4 local_78; + int local_74; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + lVar3 = FUN_00402d1c(param_6 + 0xd0); + FUN_00401028(param_6 + 0xd0); + lVar4 = *(long *)(lVar3 + 0x10); + local_60 = *(undefined8 *)(lVar4 + 0xa0); + local_68 = *(undefined8 *)(lVar4 + 0x98); + local_70 = *(undefined8 *)(lVar4 + 0x90); + local_58 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xa8); + local_50 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xb0); + local_48 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xb8); + local_40 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xc0); + local_38 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x58); + local_30 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x60); + local_28 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x68); + local_20 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x70); + local_18 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x78); + local_74 = 0; + local_10 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x80); + local_8 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x88); + auVar8 = FUN_00406894(param_1,param_2,param_3,param_4,param_5,&local_78,&local_70,7,param_6, + &local_74); + plVar5 = auVar8._0_8_; + uVar6 = auVar8._8_8_ & 0xffffffff; + if (local_74 == 0) { + *(undefined4 *)(param_8 + 0x18) = local_78; + if (plVar5 == (long *)0x0) goto LAB_00406e68; +LAB_00406dfc: + if (auVar8._8_4_ == -1) { + if ((uint *)plVar5[2] < (uint *)plVar5[3]) { + uVar1 = *(uint *)plVar5[2]; + } + else { + uVar1 = (**(code **)(*plVar5 + 0x48))(); + } + if (uVar1 == 0xffffffff) goto LAB_00406e68; + uVar6 = (ulong)uVar1; + } + bVar7 = false; + if (param_4 == (long *)0x0) goto LAB_00406e28; +LAB_00406e0c: + iVar2 = (int)param_5; + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + iVar2 = *(int *)param_4[2]; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + } + } + if ((iVar2 == -1) != bVar7) goto LAB_00406e28; + } + else { + *param_7 = *param_7 | 4; + if (plVar5 != (long *)0x0) goto LAB_00406dfc; +LAB_00406e68: + plVar5 = (long *)0x0; + bVar7 = true; + if (param_4 != (long *)0x0) goto LAB_00406e0c; + } + *param_7 = *param_7 | 2; +LAB_00406e28: + auVar8._8_8_ = param_3 & 0xffffffff00000000 | uVar6; + auVar8._0_8_ = plVar5; + return auVar8; +} + + +================================================================== + +### FUNC 00406eec (704 bytes) name=FUN_00406eec + +undefined1 [16] +FUN_00406eec(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8) + +{ + uint uVar1; + int iVar2; + long lVar3; + long lVar4; + long *plVar5; + ulong uVar6; + bool bVar7; + undefined1 auVar8 [16]; + undefined4 local_c8; + int local_c4; + undefined8 local_c0; + undefined8 local_b8; + undefined8 local_b0; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_80; + undefined8 local_78; + undefined8 local_70; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + lVar3 = FUN_00402d1c(param_6 + 0xd0); + FUN_00401028(param_6 + 0xd0); + lVar4 = *(long *)(lVar3 + 0x10); + local_b0 = *(undefined8 *)(lVar4 + 0x138); + local_b8 = *(undefined8 *)(lVar4 + 0x130); + local_c0 = *(undefined8 *)(lVar4 + 0x128); + local_a8 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x140); + local_a0 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x148); + local_98 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x150); + local_90 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x158); + local_88 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x160); + local_80 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x168); + local_78 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x170); + local_70 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x178); + local_68 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x180); + local_60 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 200); + local_58 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xd0); + local_50 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xd8); + local_48 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xe0); + local_40 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xe8); + local_38 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xf0); + local_30 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0xf8); + local_28 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x100); + local_20 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x108); + local_18 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x110); + local_10 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x118); + local_c4 = 0; + local_8 = *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x120); + auVar8 = FUN_00406894(param_1,param_2,param_3,param_4,param_5,&local_c8,&local_c0,0xc,param_6, + &local_c4); + plVar5 = auVar8._0_8_; + uVar6 = auVar8._8_8_ & 0xffffffff; + if (local_c4 == 0) { + *(undefined4 *)(param_8 + 0x10) = local_c8; + if (plVar5 == (long *)0x0) goto LAB_00407128; +LAB_004070bc: + if (auVar8._8_4_ == -1) { + if ((uint *)plVar5[2] < (uint *)plVar5[3]) { + uVar1 = *(uint *)plVar5[2]; + } + else { + uVar1 = (**(code **)(*plVar5 + 0x48))(); + } + if (uVar1 == 0xffffffff) goto LAB_00407128; + uVar6 = (ulong)uVar1; + } + bVar7 = false; + if (param_4 == (long *)0x0) goto LAB_004070e8; +LAB_004070cc: + iVar2 = (int)param_5; + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + iVar2 = *(int *)param_4[2]; + } + else { + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + } + } + if ((iVar2 == -1) != bVar7) goto LAB_004070e8; + } + else { + *param_7 = *param_7 | 4; + if (plVar5 != (long *)0x0) goto LAB_004070bc; +LAB_00407128: + plVar5 = (long *)0x0; + bVar7 = true; + if (param_4 != (long *)0x0) goto LAB_004070cc; + } + *param_7 = *param_7 | 2; +LAB_004070e8: + auVar8._8_8_ = param_3 & 0xffffffff00000000 | uVar6; + auVar8._0_8_ = plVar5; + return auVar8; +} + + +================================================================== + +### FUNC 004071ac (3756 bytes) name=FUN_004071ac + +undefined1 [16] +FUN_004071ac(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long param_8,wchar_t *param_9) + +{ + wchar_t wVar1; + undefined1 auVar2 [16]; + undefined1 auVar3 [12]; + undefined1 auVar4 [12]; + char cVar5; + int iVar6; + undefined4 uVar9; + int iVar7; + wchar_t wVar8; + long lVar10; + long *plVar11; + size_t sVar12; + long lVar13; + long lVar14; + size_t sVar15; + undefined1 auVar16 [12]; + long *local_90; + undefined8 local_88; + undefined1 local_80 [12]; + undefined4 uStack_74; + uint local_68; + int local_64; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + local_80._8_4_ = (undefined4)param_3; + uStack_74 = (undefined4)((ulong)param_3 >> 0x20); + local_90 = param_4; + local_88 = param_5; + local_80._0_8_ = param_2; + lVar10 = FUN_00402d1c(param_6 + 0xd0); + sVar15 = 0; + plVar11 = (long *)FUN_00401028(param_6 + 0xd0); + sVar12 = wcslen(param_9); + auVar16._8_4_ = local_80._8_4_; + auVar16._0_8_ = local_80._0_8_; + local_68 = 0; + if ((long *)local_80._0_8_ == (long *)0x0) goto LAB_004072f4; +LAB_00407254: + local_80._8_4_ = auVar16._8_4_; + if (local_80._8_4_ == -1) { + if (*(int **)(local_80._0_8_ + 0x10) < *(int **)(local_80._0_8_ + 0x18)) { + iVar6 = **(int **)(local_80._0_8_ + 0x10); + local_80 = auVar16; + } + else { + iVar6 = (**(code **)(*(long *)local_80._0_8_ + 0x48))(local_80._0_8_); + local_80 = auVar16; + } + auVar16._8_4_ = iVar6; + auVar16._0_8_ = local_80._0_8_; + if (iVar6 == -1) { + auVar3._4_8_ = 0; + auVar3._0_4_ = local_80._8_4_; + auVar16 = auVar3 << 0x40; + goto LAB_004072f4; + } + } + iVar6 = 0; + local_80 = auVar16; + if (local_90 == (long *)0x0) goto LAB_00407284; + iVar7 = 0; + if ((int)local_88 == -1) goto LAB_00407310; +LAB_0040727c: + if (iVar6 == iVar7) { +LAB_00407340: + if ((local_68 != 0) || (sVar15 != sVar12)) { + *param_7 = *param_7 | 4; + } + auVar2._12_4_ = uStack_74; + auVar2._0_12_ = local_80; + return auVar2; + } +LAB_00407284: + do { + if ((sVar12 <= sVar15) || (local_68 != 0)) goto LAB_00407340; + cVar5 = (**(code **)(*plVar11 + 0x60))(plVar11,param_9[sVar15],0); + if (cVar5 != '%') { + wVar1 = param_9[sVar15]; + auVar16 = local_80; + if ((long *)local_80._0_8_ == (long *)0x0) { +LAB_0040741c: + local_80._0_8_ = (long *)0x0; + if (wVar1 == L'\xffffffff') { + sVar15 = sVar15 + 1; + } + else { +LAB_004072e0: + local_68 = local_68 | 4; +LAB_004072ec: + sVar15 = sVar15 + 1; + } + } + else { + if (local_80._8_4_ == L'\xffffffff') { + if (*(wchar_t **)(local_80._0_8_ + 0x10) < *(wchar_t **)(local_80._0_8_ + 0x18)) { + wVar8 = **(wchar_t **)(local_80._0_8_ + 0x10); + } + else { + wVar8 = (**(code **)(*(long *)local_80._0_8_ + 0x48))(); + } + auVar16._8_4_ = wVar8; + auVar16._0_8_ = local_80._0_8_; + if (wVar8 == L'\xffffffff') { + auVar4._4_8_ = 0; + auVar4._0_4_ = local_80._8_4_; + auVar16 = auVar4 << 0x40; + goto LAB_0040741c; + } + if (wVar1 != wVar8) goto LAB_004072e0; + if ((long *)local_80._0_8_ != (long *)0x0) goto LAB_0040746c; + goto LAB_004072ec; + } + if (wVar1 != local_80._8_4_) goto LAB_004072e0; +LAB_0040746c: + local_80._0_8_ = auVar16._0_8_; + if (*(ulong *)(local_80._0_8_ + 0x10) < *(ulong *)(local_80._0_8_ + 0x18)) { + *(ulong *)(local_80._0_8_ + 0x10) = *(ulong *)(local_80._0_8_ + 0x10) + 4; + } + else { + lVar14 = *(long *)local_80._0_8_; + local_80 = auVar16; + (**(code **)(lVar14 + 0x50))(); + } + sVar15 = sVar15 + 1; + auVar16._8_4_ = 0xffffffff; + auVar16._0_8_ = local_80._0_8_; + } + goto LAB_004072f0; + } + lVar14 = sVar15 + 1; + cVar5 = (**(code **)(*plVar11 + 0x60))(plVar11,param_9[sVar15 + 1],0); + local_64 = 0; + if ((cVar5 == 'O') || (cVar5 == 'E')) { + lVar14 = sVar15 + 2; + cVar5 = (**(code **)(*plVar11 + 0x60))(plVar11,param_9[sVar15 + 2],0); + } + switch(cVar5) { + case 'A': + lVar13 = *(long *)(lVar10 + 0x10); + local_60 = *(undefined8 *)(lVar13 + 0x58); + local_58 = *(undefined8 *)(lVar13 + 0x60); + local_50 = *(undefined8 *)(lVar13 + 0x68); + local_48 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x70); + local_40 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x78); + local_38 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x80); + local_30 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x88); + auVar16 = FUN_00406518(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x18,&local_60,7,param_6,&local_68); + break; + case 'B': + lVar13 = *(long *)(lVar10 + 0x10); + local_60 = *(undefined8 *)(lVar13 + 200); + local_58 = *(undefined8 *)(lVar13 + 0xd0); + local_50 = *(undefined8 *)(lVar13 + 0xd8); + local_48 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xe0); + local_40 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xe8); + local_38 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xf0); + local_30 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xf8); + local_28 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x100); + local_20 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x108); + local_18 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x110); + local_10 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x118); + local_8 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x120); + auVar16 = FUN_00406518(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x10,&local_60,0xc,param_6,&local_68); + break; + case 'C': + case 'Y': + case 'y': + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_64,0,9999,4,param_6,&local_68); + if (local_68 == 0) { + if (local_64 < 0) { + iVar6 = local_64 + 100; + } + else { + iVar6 = local_64 + -0x76c; + } + *(int *)(param_8 + 0x14) = iVar6; + } + break; + case 'D': + (**(code **)(*plVar11 + 0x58))(plVar11,&DAT_00479960,&DAT_00479969,&local_60); + auVar16 = FUN_004071ac(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8,&local_60); + /* catch() { ... } // from try @ 00407874 with catch @ 0040779c + catch() { ... } // from try @ 004078d4 with catch @ 0040779c + catch() { ... } // from try @ 004078fc with catch @ 0040779c + catch() { ... } // from try @ 00407990 with catch @ 0040779c */ + break; + default: +switchD_00407414_caseD_45: + auVar16 = local_80; + goto LAB_004073ec; + case 'H': + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 8,0,0x17,2,param_6,&local_68); + break; + case 'I': + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 8,1,0xc,2,param_6,&local_68); + break; + case 'M': + /* try { // try from 00407874 to 00507877 has its CatchHandler @ 0040779c */ + /* try { // try from 00407880 to 00507883 has its CatchHandler @ 0040796c */ + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 4,0,0x3b,2,param_6,&local_68); + break; + case 'R': + /* try { // try from 004078d4 to 005078d7 has its CatchHandler @ 0040779c */ + (**(code **)(*plVar11 + 0x58))(plVar11,&DAT_00479970,&DAT_00479976,&local_60); + /* try { // try from 004078f4 to 005078f7 has its CatchHandler @ 00407980 */ + /* try { // try from 004078fc to 0050797f has its CatchHandler @ 0040779c */ + auVar16 = FUN_004071ac(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8,&local_60); + break; + case 'S': + /* catch() { ... } // from try @ 00407880 with catch @ 0040796c */ + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8,0,0x3d,2,param_6,&local_68); + /* catch() { ... } // from try @ 004078f4 with catch @ 00407980 */ + break; + case 'T': + /* try { // try from 00407990 to 00507993 has its CatchHandler @ 0040779c */ + (**(code **)(*plVar11 + 0x58))(plVar11,&DAT_00479978,&DAT_00479981,&local_60); + auVar16 = FUN_004071ac(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8,&local_60); + break; + case 'X': + auVar16 = FUN_004071ac(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8, + *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x20)); + break; + case 'Z': + uVar9 = FUN_00406484(local_80); + cVar5 = (**(code **)(*plVar11 + 0x10))(plVar11,1,uVar9); + if (cVar5 == '\0') goto switchD_00407414_caseD_45; + auVar16 = FUN_00406518(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_60,PTR_PTR_00501e80,0xe,param_6,&local_68); + local_80 = auVar16; + iVar6 = FUN_00406484(local_80); + iVar7 = FUN_00406484(&local_90); + auVar16 = local_80; + if ((((iVar6 == -1) != (iVar7 == -1)) && (local_68 == 0)) && ((int)local_60 == 0)) { + iVar6 = FUN_00406484(local_80); + iVar7 = (**(code **)(*plVar11 + 0x50))(plVar11,0x2d); + if (iVar6 != iVar7) { + iVar6 = FUN_00406484(local_80); + iVar7 = (**(code **)(*plVar11 + 0x50))(plVar11,0x2b); + auVar16 = local_80; + if (iVar6 != iVar7) break; + } + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_60,0,0x17,2,param_6,&local_68); + local_80 = auVar16; + auVar16 = FUN_00401248(param_1,auVar16._0_8_,CONCAT44(uStack_74,auVar16._8_4_),local_90, + local_88,&local_60,0,0x3b,2,param_6,&local_68); + } + break; + case 'a': + lVar13 = *(long *)(lVar10 + 0x10); + local_60 = *(undefined8 *)(lVar13 + 0x90); + local_58 = *(undefined8 *)(lVar13 + 0x98); + local_50 = *(undefined8 *)(lVar13 + 0xa0); + local_48 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xa8); + local_40 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xb0); + local_38 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xb8); + local_30 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0xc0); + auVar16 = FUN_00406518(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x18,&local_60,7,param_6,&local_68); + break; + case 'b': + case 'h': + lVar13 = *(long *)(lVar10 + 0x10); + local_60 = *(undefined8 *)(lVar13 + 0x128); + local_58 = *(undefined8 *)(lVar13 + 0x130); + local_50 = *(undefined8 *)(lVar13 + 0x138); + local_48 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x140); + local_40 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x148); + local_38 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x150); + local_30 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x158); + local_28 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x160); + local_20 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x168); + local_18 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x170); + local_10 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x178); + local_8 = *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x180); + auVar16 = FUN_00406518(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0x10,&local_60,0xc,param_6,&local_68); + break; + case 'c': + auVar16 = FUN_004071ac(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8, + *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x30)); + break; + case 'd': + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0xc,1,0x1f,2,param_6,&local_68); + break; + case 'e': + uVar9 = FUN_00406484(local_80); + cVar5 = (**(code **)(*plVar11 + 0x10))(plVar11,8,uVar9); + if (cVar5 == '\0') { + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0xc,10,0x1f,2,param_6,&local_68); + } + else { + if (local_80._0_8_ != 0) { + if (*(ulong *)(local_80._0_8_ + 0x10) < *(ulong *)(local_80._0_8_ + 0x18)) { + *(ulong *)(local_80._0_8_ + 0x10) = *(ulong *)(local_80._0_8_ + 0x10) + 4; + } + else { + FUN_003ff240(); + } + local_80._8_4_ = 0xffffffff; + } + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_8 + 0xc,1,9,1,param_6,&local_68); + } + break; + case 'm': + auVar16 = FUN_00401248(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,&local_64,1,0xc,2,param_6,&local_68); + if (local_68 == 0) { + *(int *)(param_8 + 0x10) = local_64 + -1; + } + break; + case 'n': + uVar9 = FUN_00406484(local_80); + cVar5 = (**(code **)(*plVar11 + 0x60))(plVar11,uVar9,0); + auVar16 = local_80; + if (cVar5 != '\n') goto LAB_004073ec; +LAB_00407f68: + local_80._0_8_ = auVar16._0_8_; + if (local_80._0_8_ != 0) { + if (*(ulong *)(local_80._0_8_ + 0x10) < *(ulong *)(local_80._0_8_ + 0x18)) { + *(ulong *)(local_80._0_8_ + 0x10) = *(ulong *)(local_80._0_8_ + 0x10) + 4; + } + else { + FUN_003ff240(local_80._0_8_); + local_80 = auVar16; + } + auVar16._8_4_ = 0xffffffff; + auVar16._0_8_ = local_80._0_8_; + } + break; + case 't': + uVar9 = FUN_00406484(local_80); + cVar5 = (**(code **)(*plVar11 + 0x60))(plVar11,uVar9,0); + auVar16 = local_80; + if (cVar5 == '\t') goto LAB_00407f68; +LAB_004073ec: + local_68 = local_68 | 4; + break; + case 'x': + auVar16 = FUN_004071ac(param_1,local_80._0_8_,CONCAT44(uStack_74,local_80._8_4_),local_90, + local_88,param_6,&local_68,param_8, + *(undefined8 *)(*(long *)(lVar10 + 0x10) + 0x10)); + } + local_80._0_8_ = auVar16._0_8_; + sVar15 = lVar14 + 1; +LAB_004072f0: + if ((long *)local_80._0_8_ != (long *)0x0) goto LAB_00407254; +LAB_004072f4: + local_80 = auVar16; + if (local_90 == (long *)0x0) goto LAB_00407340; + iVar6 = 1; + iVar7 = 0; + if ((int)local_88 != -1) goto LAB_0040727c; +LAB_00407310: + local_80 = auVar16; + if ((int *)local_90[2] < (int *)local_90[3]) { + iVar7 = *(int *)local_90[2]; + } + else { + iVar7 = (**(code **)(*local_90 + 0x48))(); + } + if (iVar7 == -1) break; + local_88 = CONCAT44(local_88._4_4_,iVar7); + if (iVar6 == 0) goto LAB_00407340; + } while( true ); + local_90 = (long *)0x0; + iVar7 = 1; + goto LAB_0040727c; +} + + +================================================================== + +### FUNC 00408058 (392 bytes) name=FUN_00408058 + +undefined1 [16] +FUN_00408058(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,undefined8 param_8) + +{ + uint uVar1; + int iVar2; + long lVar3; + long *plVar4; + ulong uVar5; + bool bVar6; + bool bVar7; + undefined1 auVar8 [16]; + + lVar3 = FUN_00402d1c(param_6 + 0xd0); + auVar8 = FUN_004071ac(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8, + *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x20)); + plVar4 = auVar8._0_8_; + uVar5 = auVar8._8_8_ & 0xffffffff; + iVar2 = (int)param_5; + if (plVar4 == (long *)0x0) { +LAB_004081a0: + plVar4 = (long *)0x0; + bVar7 = true; + bVar6 = true; + if (param_4 != (long *)0x0) goto joined_r0x004081b4; + } + else { + if (auVar8._8_4_ == -1) { + if ((uint *)plVar4[2] < (uint *)plVar4[3]) { + uVar1 = *(uint *)plVar4[2]; + } + else { + uVar1 = (**(code **)(*plVar4 + 0x48))(); + } + if (uVar1 == 0xffffffff) goto LAB_004081a0; + uVar5 = (ulong)uVar1; + } + if (param_4 == (long *)0x0) goto LAB_00408114; + bVar7 = false; + bVar6 = false; +joined_r0x004081b4: + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + if ((*(int *)param_4[2] == -1) != bVar7) goto LAB_00408114; + goto LAB_00408164; + } + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + bVar6 = bVar7; + } + if ((iVar2 == -1) != bVar6) goto LAB_00408114; + } +LAB_00408164: + *param_7 = *param_7 | 2; +LAB_00408114: + auVar8._8_8_ = param_3 & 0xffffffff00000000 | uVar5; + auVar8._0_8_ = plVar4; + return auVar8; +} + + +================================================================== + +### FUNC 004081e0 (392 bytes) name=FUN_004081e0 + +undefined1 [16] +FUN_004081e0(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,undefined8 param_8) + +{ + uint uVar1; + int iVar2; + long lVar3; + long *plVar4; + ulong uVar5; + bool bVar6; + bool bVar7; + undefined1 auVar8 [16]; + + lVar3 = FUN_00402d1c(param_6 + 0xd0); + auVar8 = FUN_004071ac(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8, + *(undefined8 *)(*(long *)(lVar3 + 0x10) + 0x10)); + plVar4 = auVar8._0_8_; + uVar5 = auVar8._8_8_ & 0xffffffff; + iVar2 = (int)param_5; + if (plVar4 == (long *)0x0) { +LAB_00408328: + plVar4 = (long *)0x0; + bVar7 = true; + bVar6 = true; + if (param_4 != (long *)0x0) goto joined_r0x0040833c; + } + else { + if (auVar8._8_4_ == -1) { + if ((uint *)plVar4[2] < (uint *)plVar4[3]) { + uVar1 = *(uint *)plVar4[2]; + } + else { + uVar1 = (**(code **)(*plVar4 + 0x48))(); + } + if (uVar1 == 0xffffffff) goto LAB_00408328; + uVar5 = (ulong)uVar1; + } + if (param_4 == (long *)0x0) goto LAB_0040829c; + bVar7 = false; + bVar6 = false; +joined_r0x0040833c: + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + if ((*(int *)param_4[2] == -1) != bVar7) goto LAB_0040829c; + goto LAB_004082ec; + } + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + bVar6 = bVar7; + } + if ((iVar2 == -1) != bVar6) goto LAB_0040829c; + } +LAB_004082ec: + *param_7 = *param_7 | 2; +LAB_0040829c: + auVar8._8_8_ = param_3 & 0xffffffff00000000 | uVar5; + auVar8._0_8_ = plVar4; + return auVar8; +} + + +================================================================== + +### FUNC 00408368 (1116 bytes) name=FUN_00408368 + +/* WARNING: Removing unreachable block (ram,0x00408e64) */ +/* WARNING: Removing unreachable block (ram,0x00409024) */ +/* WARNING: Removing unreachable block (ram,0x00409038) */ +/* WARNING: Removing unreachable block (ram,0x00409040) */ +/* WARNING: Removing unreachable block (ram,0x00409064) */ +/* WARNING: Removing unreachable block (ram,0x00409050) */ +/* WARNING: Removing unreachable block (ram,0x0040905c) */ +/* WARNING: Removing unreachable block (ram,0x00408fac) */ +/* WARNING: Removing unreachable block (ram,0x0040900c) */ +/* WARNING: Removing unreachable block (ram,0x00408fb4) */ +/* WARNING: Removing unreachable block (ram,0x00408fb8) */ +/* WARNING: Removing unreachable block (ram,0x00408fc8) */ +/* WARNING: Removing unreachable block (ram,0x00408ff0) */ +/* WARNING: Removing unreachable block (ram,0x00408ffc) */ +/* WARNING: Removing unreachable block (ram,0x00409008) */ +/* WARNING: Removing unreachable block (ram,0x00408980) */ +/* WARNING: Removing unreachable block (ram,0x00408e14) */ +/* WARNING: Removing unreachable block (ram,0x0040898c) */ +/* WARNING: Removing unreachable block (ram,0x004089a4) */ +/* WARNING: Removing unreachable block (ram,0x004089ac) */ +/* WARNING: Removing unreachable block (ram,0x00408e20) */ +/* WARNING: Removing unreachable block (ram,0x00409014) */ +/* WARNING: Removing unreachable block (ram,0x00408698) */ +/* WARNING: Removing unreachable block (ram,0x0040869c) */ +/* WARNING: Removing unreachable block (ram,0x00409020) */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_00408368(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,long param_6,uint *param_7,undefined8 param_8) + +{ + byte bVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + int iVar5; + int iVar6; + long lVar7; + undefined *puVar8; + long lVar9; + undefined1 auVar10 [16]; + long local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 local_38; + undefined1 auStack_28 [8]; + undefined1 auStack_20 [8]; + undefined4 local_18; + undefined *local_10; + undefined *local_8; + + local_50 = param_4; + uStack_48 = param_5; + local_40 = param_2; + local_38 = param_3; + FUN_00401028(param_6 + 0xd0); + lVar7 = FUN_00406290(auStack_28,param_6 + 0xd0); + local_10 = PTR_DAT_00501f30 + 0x18; + if (*(char *)(lVar7 + 0x20) != '\0') { + FUN_00410ed8(&local_10,0x20); + } + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,0x20); + local_58 = 0; + local_18 = *(undefined4 *)(lVar7 + 0x68); + bVar1 = (byte)local_18; + while( true ) { + if (bVar1 < 5) { + /* WARNING: Could not recover jumptable at 0x004084a0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + auVar10 = (*(code *)(&UNK_004084a4 + (long)*(short *)(&DAT_0047a508 + (ulong)bVar1 * 2) * 4)) + (); + return auVar10; + } + if (3 < (int)local_58 + 1) break; + bVar1 = *(byte *)((long)&local_18 + local_58 + 1); + local_58 = local_58 + 1; + } + if ((1 < *(ulong *)(local_8 + -0x18)) && (lVar9 = FUN_004123cc(&local_8,0x30,0), lVar9 != 0)) { + if (lVar9 == -1) { + lVar9 = *(long *)(local_8 + -0x18) + -1; + } + FUN_00412dc4(&local_8,0,lVar9); + } + if (*(long *)(local_10 + -0x18) != 0) { + FUN_004116e0(&local_10,0); + cVar4 = FUN_003ee0cc(*(undefined8 *)(lVar7 + 0x10),*(undefined8 *)(lVar7 + 0x18),&local_10); + if (cVar4 == '\0') { + *param_7 = *param_7 | 4; + } + } + FUN_00411a24(param_8,&local_8); + iVar5 = FUN_00406484(&local_40); + iVar6 = FUN_00406484(&local_50); + uVar3 = local_38; + uVar2 = local_40; + if ((iVar6 == -1) == (iVar5 == -1)) { + *param_7 = *param_7 | 2; + if (local_8 + -0x18 != PTR_DAT_00501f30) goto LAB_004090b8; +LAB_004086ec: + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_00408700; + } + else { + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_004086ec; +LAB_004090b8: + FUN_003ff25c(local_8 + -0x18,auStack_20); + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_00408700; + } + FUN_003ff25c(puVar8,&local_8); +LAB_00408700: + auVar10._8_8_ = uVar3; + auVar10._0_8_ = uVar2; + return auVar10; +} + + +================================================================== + +### FUNC 00409134 (512 bytes) name=FUN_00409134 + +/* WARNING: Removing unreachable block (ram,0x00409c30) */ +/* WARNING: Removing unreachable block (ram,0x00409df0) */ +/* WARNING: Removing unreachable block (ram,0x00409e04) */ +/* WARNING: Removing unreachable block (ram,0x00409e0c) */ +/* WARNING: Removing unreachable block (ram,0x00409e30) */ +/* WARNING: Removing unreachable block (ram,0x00409e1c) */ +/* WARNING: Removing unreachable block (ram,0x00409e28) */ +/* WARNING: Removing unreachable block (ram,0x00409d78) */ +/* WARNING: Removing unreachable block (ram,0x00409dd8) */ +/* WARNING: Removing unreachable block (ram,0x00409d80) */ +/* WARNING: Removing unreachable block (ram,0x00409d84) */ +/* WARNING: Removing unreachable block (ram,0x00409d94) */ +/* WARNING: Removing unreachable block (ram,0x00409dbc) */ +/* WARNING: Removing unreachable block (ram,0x00409dc8) */ +/* WARNING: Removing unreachable block (ram,0x00409dd4) */ +/* WARNING: Removing unreachable block (ram,0x0040974c) */ +/* WARNING: Removing unreachable block (ram,0x00409be0) */ +/* WARNING: Removing unreachable block (ram,0x00409758) */ +/* WARNING: Removing unreachable block (ram,0x00409770) */ +/* WARNING: Removing unreachable block (ram,0x00409778) */ +/* WARNING: Removing unreachable block (ram,0x00409bec) */ +/* WARNING: Removing unreachable block (ram,0x00409de0) */ +/* WARNING: Removing unreachable block (ram,0x00409464) */ +/* WARNING: Removing unreachable block (ram,0x00409468) */ +/* WARNING: Removing unreachable block (ram,0x00409dec) */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_00409134(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,long param_6,uint *param_7,undefined8 param_8) + +{ + byte bVar1; + undefined8 uVar2; + undefined8 uVar3; + char cVar4; + int iVar5; + int iVar6; + long lVar7; + undefined *puVar8; + long lVar9; + undefined1 auVar10 [16]; + long local_58; + undefined8 local_50; + undefined8 uStack_48; + undefined8 local_40; + undefined8 uStack_38; + undefined1 auStack_28 [8]; + undefined1 auStack_20 [8]; + undefined4 local_18; + undefined *local_10; + undefined *local_8; + + local_50 = param_4; + uStack_48 = param_5; + local_40 = param_2; + uStack_38 = param_3; + FUN_00401028(param_6 + 0xd0); + lVar7 = FUN_00406180(auStack_28,param_6 + 0xd0); + local_10 = PTR_DAT_00501f30 + 0x18; + if (*(char *)(lVar7 + 0x20) != '\0') { + FUN_00410ed8(&local_10,0x20); + } + local_8 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_8,0x20); + local_58 = 0; + local_18 = *(undefined4 *)(lVar7 + 0x68); + bVar1 = (byte)local_18; + while( true ) { + if (bVar1 < 5) { + /* WARNING: Could not recover jumptable at 0x0040926c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + auVar10 = (*(code *)(&UNK_00409270 + (long)*(short *)(&DAT_0047a514 + (ulong)bVar1 * 2) * 4)) + (); + return auVar10; + } + if (3 < (int)local_58 + 1) break; + bVar1 = *(byte *)((long)&local_18 + local_58 + 1); + local_58 = local_58 + 1; + } + if ((1 < *(ulong *)(local_8 + -0x18)) && (lVar9 = FUN_004123cc(&local_8,0x30,0), lVar9 != 0)) { + if (lVar9 == -1) { + lVar9 = *(long *)(local_8 + -0x18) + -1; + } + FUN_00412dc4(&local_8,0,lVar9); + } + if (*(long *)(local_10 + -0x18) != 0) { + FUN_004116e0(&local_10,0); + cVar4 = FUN_003ee0cc(*(undefined8 *)(lVar7 + 0x10),*(undefined8 *)(lVar7 + 0x18),&local_10); + if (cVar4 == '\0') { + *param_7 = *param_7 | 4; + } + } + FUN_00411a24(param_8,&local_8); + iVar5 = FUN_00406484(&local_40); + iVar6 = FUN_00406484(&local_50); + uVar3 = uStack_38; + uVar2 = local_40; + if ((iVar6 == -1) == (iVar5 == -1)) { + *param_7 = *param_7 | 2; + if (local_8 + -0x18 != PTR_DAT_00501f30) goto LAB_00409e7c; +LAB_004094b8: + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_004094cc; + } + else { + if (local_8 + -0x18 == PTR_DAT_00501f30) goto LAB_004094b8; +LAB_00409e7c: + FUN_003ff25c(local_8 + -0x18,auStack_20); + puVar8 = local_10 + -0x18; + if (puVar8 == PTR_DAT_00501f30) goto LAB_004094cc; + } + FUN_003ff25c(puVar8,&local_8); +LAB_004094cc: + auVar10._8_8_ = uVar3; + auVar10._0_8_ = uVar2; + return auVar10; +} + + +================================================================== + +### FUNC 00409650 (1376 bytes) name=__bss_start__ + +undefined1 [16] __bss_start__(long param_1) + +{ + byte bVar1; + undefined1 uVar2; + bool bVar3; + char cVar4; + int iVar5; + int iVar6; + wchar_t __c; + wchar_t *pwVar7; + long *plVar8; + long lVar9; + int iVar10; + uint uVar11; + ulong uVar12; + ulong uVar13; + long lVar14; + ulong unaff_x19; + undefined8 uVar15; + uint unaff_w21; + undefined8 uVar16; + long *unaff_x22; + undefined4 unaff_w24; + long unaff_x25; + long unaff_x26; + wchar_t *unaff_x27; + long unaff_x28; + long unaff_x29; + undefined1 auVar17 [16]; + + do { + *(undefined1 *)(param_1 + unaff_x19) = 0; + do { + unaff_w21 = unaff_w21 + 1; + while( true ) { + plVar8 = *(long **)(unaff_x29 + 0xe0); + if (plVar8 == (long *)0x0) break; + uVar12 = plVar8[2]; + if (uVar12 < (ulong)plVar8[3]) { + *(undefined4 *)(unaff_x29 + 0xe8) = unaff_w24; + plVar8[2] = uVar12 + 4; + } + else { + (**(code **)(*plVar8 + 0x50))(); + plVar8 = *(long **)(unaff_x29 + 0xe0); + *(undefined4 *)(unaff_x29 + 0xe8) = unaff_w24; + } + if (plVar8 == (long *)0x0) break; + __c = *(wchar_t *)(unaff_x29 + 0xe8); + if (__c == L'\xffffffff') { + if ((int *)plVar8[2] < (int *)plVar8[3]) { + iVar5 = *(int *)plVar8[2]; + } + else { + iVar5 = (**(code **)(*plVar8 + 0x48))(); + } + if (iVar5 == -1) { + *(undefined8 *)(unaff_x29 + 0xe0) = 0; + break; + } + plVar8 = *(long **)(unaff_x29 + 0xd0); + *(int *)(unaff_x29 + 0xe8) = iVar5; + if (plVar8 != (long *)0x0) goto LAB_00409518; + goto LAB_00409530; + } + plVar8 = *(long **)(unaff_x29 + 0xd0); + if (plVar8 != (long *)0x0) { +LAB_00409518: + iVar6 = 0; + iVar5 = *(int *)(unaff_x29 + 0xd8); + goto joined_r0x00409524; + } +LAB_00409544: + pwVar7 = wmemchr(unaff_x27,__c,10); + if (pwVar7 != (wchar_t *)0x0) goto LAB_00409558; +LAB_00409954: + if ((*(wchar_t *)(unaff_x25 + 0x24) == __c) && (*(int *)(unaff_x29 + 0xb4) == 0)) { + if (*(int *)(unaff_x25 + 0x60) < 1) goto LAB_00409634; + *(uint *)(unaff_x29 + 0xb0) = unaff_w21; + unaff_w21 = 0; + *(undefined4 *)(unaff_x29 + 0xb4) = 1; + } + else { + if ((*(char *)(unaff_x25 + 0x20) == '\0') || + ((*(wchar_t *)(unaff_x25 + 0x28) != __c || (*(int *)(unaff_x29 + 0xb4) != 0)))) + goto LAB_00409634; + if (unaff_w21 == 0) { + bVar3 = false; + goto LAB_00409638; + } + lVar9 = **(long **)(unaff_x29 + 0xb8); + lVar14 = *(long *)(lVar9 + -0x18); + uVar12 = lVar14 + 1; + if ((*(ulong *)(lVar9 + -0x10) < uVar12) || (0 < *(int *)(lVar9 + -8))) { + plVar8 = *(long **)(unaff_x29 + 0xb8); + FUN_00410ed8(plVar8,uVar12); + lVar9 = *plVar8; + lVar14 = *(long *)(lVar9 + -0x18); + } + *(char *)(lVar9 + lVar14) = (char)unaff_w21; + unaff_w21 = 0; + lVar9 = **(long **)(unaff_x29 + 0xb8); + if (lVar9 + -0x18 != *(long *)(unaff_x28 + 0xf30)) { + *(undefined4 *)(lVar9 + -8) = 0; + *(ulong *)(lVar9 + -0x18) = uVar12; + *(undefined1 *)(lVar9 + uVar12) = 0; + } + } + } + plVar8 = *(long **)(unaff_x29 + 0xd0); + if (plVar8 == (long *)0x0) { +LAB_00409634: + bVar3 = true; +LAB_00409638: + if (*(long *)(*unaff_x22 + -0x18) == 0) goto LAB_00409468; + if (bVar3) { + while (*(int *)(unaff_x29 + 200) + 1 < 4) { + *(long *)(unaff_x29 + 200) = *(long *)(unaff_x29 + 200) + 1; + bVar1 = *(byte *)(*(long *)(unaff_x29 + 0xa0) + *(long *)(unaff_x29 + 200)); + if (bVar1 < 5) { + /* WARNING: Could not recover jumptable at 0x0040926c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + auVar17 = (*(code *)(&UNK_00409270 + + (long)*(short *)(*(long *)(unaff_x29 + 0x98) + (ulong)bVar1 * 2) * + 4))(); + return auVar17; + } + bVar3 = true; + } + } + if ((bool)(bVar3 & 1 < *(ulong *)(unaff_x29 + 0xa8))) { + if (*(int *)(unaff_x29 + 0x74) == 0) { + lVar9 = *(long *)(unaff_x25 + 0x40); + } + else { + lVar9 = *(long *)(unaff_x25 + 0x50); + } + uVar12 = 1; + while( true ) { + iVar5 = FUN_00406484(unaff_x29 + 0xe0); + iVar6 = FUN_00406484(unaff_x29 + 0xd0); + if ((((iVar5 == -1) == (iVar6 == -1)) || (*(ulong *)(unaff_x29 + 0xa8) <= uVar12)) || + (iVar5 = FUN_00406484(unaff_x29 + 0xe0), iVar5 != *(int *)(lVar9 + uVar12 * 4))) + break; + plVar8 = *(long **)(unaff_x29 + 0xe0); + if (plVar8 != (long *)0x0) { + uVar13 = plVar8[2]; + if (uVar13 < (ulong)plVar8[3]) { + *(undefined4 *)(unaff_x29 + 0xe8) = 0xffffffff; + plVar8[2] = uVar13 + 4; + } + else { + (**(code **)(*plVar8 + 0x50))(); + *(undefined4 *)(unaff_x29 + 0xe8) = 0xffffffff; + } + } + uVar12 = uVar12 + 1; + } + if (uVar12 == *(ulong *)(unaff_x29 + 0xa8)) goto LAB_004096fc; +LAB_00409468: + **(uint **)(unaff_x29 + 0x90) = **(uint **)(unaff_x29 + 0x90) | 4; + } + else { + if (!bVar3) goto LAB_00409468; +LAB_004096fc: + if ((1 < *(ulong *)(*(long *)(unaff_x29 + 0x118) + -0x18)) && + (lVar9 = FUN_004123cc(), lVar9 != 0)) { + FUN_00412dc4(); + } + if (*(int *)(unaff_x29 + 0x74) != 0) { + if (*(int *)(*(char **)(unaff_x29 + 0x118) + -8) < 0) { + if (**(char **)(unaff_x29 + 0x118) != '0') goto LAB_00409bec; + } + else { + FUN_00412cf8(); + if (**(char **)(unaff_x29 + 0x118) != '0') { + if (-1 < *(int *)(*(char **)(unaff_x29 + 0x118) + -8)) { + FUN_00412cf8(); + } +LAB_00409bec: + FUN_00412ec4(); + *(undefined4 *)(*(long *)(unaff_x29 + 0x118) + -8) = 0xffffffff; + } + } + } + if (*(long *)(*(long *)(unaff_x29 + 0x110) + -0x18) != 0) { + uVar15 = *(undefined8 *)(unaff_x29 + 0xb8); + uVar11 = unaff_w21 & 0xff; + if (*(int *)(unaff_x29 + 0xb4) != 0) { + uVar11 = (uint)*(byte *)(unaff_x29 + 0xb0); + } + FUN_004116e0(uVar15,uVar11); + cVar4 = FUN_003ee0cc(*(undefined8 *)(unaff_x25 + 0x10),*(undefined8 *)(unaff_x25 + 0x18) + ,uVar15); + if (cVar4 == '\0') { + **(uint **)(unaff_x29 + 0x90) = **(uint **)(unaff_x29 + 0x90) | 4; + } + } + if ((*(int *)(unaff_x29 + 0xb4) != 0) && (*(uint *)(unaff_x25 + 0x60) != unaff_w21)) + goto LAB_00409468; + FUN_00411a24(*(undefined8 *)(unaff_x29 + 0x60)); + } + iVar5 = FUN_00406484(unaff_x29 + 0xe0); + iVar6 = FUN_00406484(unaff_x29 + 0xd0); + if ((iVar6 == -1) == (iVar5 == -1)) { + uVar15 = *(undefined8 *)(unaff_x29 + 0xe0); + uVar16 = *(undefined8 *)(unaff_x29 + 0xe8); + **(uint **)(unaff_x29 + 0x90) = **(uint **)(unaff_x29 + 0x90) | 2; + lVar9 = *(long *)(unaff_x29 + 0x118) + -0x18; + if (lVar9 == *(long *)(unaff_x28 + 0xf30)) goto LAB_004094b8; +LAB_00409e7c: + FUN_003ff25c(lVar9,unaff_x29 + 0x100); + if (*(long *)(unaff_x29 + 0x110) + -0x18 == *(long *)(unaff_x28 + 0xf30)) + goto LAB_004094cc; + } + else { + lVar9 = *(long *)(unaff_x29 + 0x118) + -0x18; + uVar15 = *(undefined8 *)(unaff_x29 + 0xe0); + uVar16 = *(undefined8 *)(unaff_x29 + 0xe8); + if (lVar9 != *(long *)(unaff_x28 + 0xf30)) goto LAB_00409e7c; +LAB_004094b8: + if (*(long *)(unaff_x29 + 0x110) + -0x18 == *(long *)(unaff_x28 + 0xf30)) + goto LAB_004094cc; + } + FUN_003ff25c(); +LAB_004094cc: + auVar17._8_8_ = uVar16; + auVar17._0_8_ = uVar15; + return auVar17; + } + iVar5 = *(int *)(unaff_x29 + 0xd8); + iVar6 = 1; +joined_r0x00409524: + iVar10 = 0; + if (iVar5 == -1) { + if ((int *)plVar8[2] < (int *)plVar8[3]) { + iVar5 = *(int *)plVar8[2]; + } + else { + iVar5 = (**(code **)(*plVar8 + 0x48))(); + } + if (iVar5 != -1) { + *(int *)(unaff_x29 + 0xd8) = iVar5; + if (iVar6 != 0) goto LAB_00409530; + goto LAB_00409634; + } + *(undefined8 *)(unaff_x29 + 0xd0) = 0; + iVar10 = 1; + } + if (iVar10 == iVar6) goto LAB_00409634; +LAB_00409530: + plVar8 = *(long **)(unaff_x29 + 0xe0); + if (plVar8 != (long *)0x0) { + __c = *(wchar_t *)(unaff_x29 + 0xe8); + if (__c == L'\xffffffff') { + if ((wchar_t *)plVar8[2] < (wchar_t *)plVar8[3]) { + __c = *(wchar_t *)plVar8[2]; + } + else { + __c = (**(code **)(*plVar8 + 0x48))(); + } + if (__c == L'\xffffffff') { + *(undefined8 *)(unaff_x29 + 0xe0) = 0; + } + else { + *(wchar_t *)(unaff_x29 + 0xe8) = __c; + } + } + goto LAB_00409544; + } + __c = L'\xffffffff'; + pwVar7 = wmemchr(unaff_x27,L'\xffffffff',10); + if (pwVar7 == (wchar_t *)0x0) goto LAB_00409954; +LAB_00409558: + lVar9 = *unaff_x22; + lVar14 = *(long *)(lVar9 + -0x18); + unaff_x19 = lVar14 + 1; + uVar2 = *(undefined1 *) + (**(long **)(unaff_x26 + 0xb68) + ((long)pwVar7 - *(long *)(unaff_x29 + 0xc0) >> 2)); + if ((*(ulong *)(lVar9 + -0x10) < unaff_x19) || (0 < *(int *)(lVar9 + -8))) { + FUN_00410ed8(); + lVar9 = *unaff_x22; + lVar14 = *(long *)(lVar9 + -0x18); + } + *(undefined1 *)(lVar9 + lVar14) = uVar2; + param_1 = *unaff_x22; + } while (param_1 + -0x18 == *(long *)(unaff_x28 + 0xf30)); + *(undefined4 *)(param_1 + -8) = 0; + *(ulong *)(param_1 + -0x18) = unaff_x19; + } while( true ); +} + + +================================================================== + +### FUNC 00409ef8 (256 bytes) name=FUN_00409ef8 + +undefined1 [16] +FUN_00409ef8(undefined8 param_1,undefined8 param_2,ulong param_3,undefined8 param_4, + undefined8 param_5,char param_6,undefined8 param_7,_Ios_Iostate *param_8, + longdouble *param_9) + +{ + char *pcVar1; + char cVar2; + bool bVar3; + undefined *puVar4; + int *piVar5; + int iVar6; + undefined1 auVar7 [16]; + int *local_8; + + puVar4 = PTR_DAT_00501f30; + pcVar1 = PTR_DAT_00501f30 + 0x18; + if (param_6 == '\0') { + auVar7 = FUN_00408368(); + } + else { + auVar7 = FUN_00409134(); + } + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar1,param_9,param_8,&local_8); + if (puVar4 != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(puVar4 + 0x10); + *(int *)(puVar4 + 0x10) = iVar6 + -1; + } + else { + piVar5 = (int *)(puVar4 + 0x10); + do { + iVar6 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar6 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar6 < 1) { + /* catch() { ... } // from try @ 0040a010 with catch @ 00409fdc + catch() { ... } // from try @ 0040a088 with catch @ 00409fdc + catch() { ... } // from try @ 0040a0ec with catch @ 00409fdc + catch() { ... } // from try @ 0040a104 with catch @ 00409fdc + catch() { ... } // from try @ 0040a118 with catch @ 00409fdc */ + operator_delete(puVar4); + } + } + auVar7._8_8_ = param_3 & 0xffffffff00000000 | auVar7._8_8_ & 0xffffffff; + return auVar7; +} + + +================================================================== + +### FUNC 0040a020 (392 bytes) name=FUN_0040a020 + +undefined1 [16] +FUN_0040a020(undefined8 param_1,undefined8 param_2,ulong param_3,undefined8 param_4, + undefined8 param_5,char param_6,long param_7,undefined8 param_8,long *param_9) + +{ + char cVar1; + bool bVar2; + undefined *puVar3; + long *plVar4; + undefined *puVar5; + int iVar6; + int *piVar7; + long lVar8; + long lVar9; + ulong uVar10; + undefined8 uVar11; + undefined1 auVar12 [16]; + undefined *local_8; + + plVar4 = (long *)FUN_00401028(param_7 + 0xd0); + local_8 = PTR_DAT_00501f30 + 0x18; + /* try { // try from 0040a080 to 0050a083 has its CatchHandler @ 0040a0f4 */ + /* try { // try from 0040a088 to 0050a0ab has its CatchHandler @ 00409fdc */ + if (param_6 == '\0') { + auVar12 = FUN_00408368(param_1,param_2,param_3,param_4,param_5,param_7,param_8,&local_8); + uVar11 = auVar12._0_8_; + /* try { // try from 0040a0e4 to 0050a0e7 has its CatchHandler @ 0040a108 */ + /* try { // try from 0040a0ec to 0050a0ef has its CatchHandler @ 00409fdc */ + /* catch() { ... } // from try @ 0040a080 with catch @ 0040a0f4 */ + lVar9 = *(long *)(local_8 + -0x18); + uVar10 = param_3 & 0xffffffff00000000 | auVar12._8_8_ & 0xffffffff; + if (lVar9 != 0) goto LAB_0040a100; +LAB_0040a0b0: + puVar5 = local_8 + -0x18; + if (puVar5 == PTR_DAT_00501f30) goto LAB_0040a0c0; + } + else { + auVar12 = FUN_00409134(); + uVar11 = auVar12._0_8_; + lVar9 = *(long *)(local_8 + -0x18); + uVar10 = param_3 & 0xffffffff00000000 | auVar12._8_8_ & 0xffffffff; + if (lVar9 == 0) goto LAB_0040a0b0; +LAB_0040a100: + /* try { // try from 0040a104 to 0050a107 has its CatchHandler @ 00409fdc */ + /* catch() { ... } // from try @ 0040a0e4 with catch @ 0040a108 */ + FUN_00418884(param_9,lVar9,0); + puVar3 = local_8; + /* try { // try from 0040a118 to 0050a11b has its CatchHandler @ 00409fdc */ + lVar8 = *param_9; + puVar5 = local_8 + lVar9; + if (-1 < *(int *)(lVar8 + -8)) { + FUN_0041673c(param_9); + lVar8 = *param_9; + } + (**(code **)(*plVar4 + 0x58))(plVar4,puVar3,puVar5,lVar8); + puVar5 = local_8 + -0x18; + if (puVar5 == PTR_DAT_00501f30) goto LAB_0040a0c0; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar6 + -1; + } + else { + piVar7 = (int *)(local_8 + -8); + do { + iVar6 = *piVar7; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar7,0x10); + if (bVar2) { + *piVar7 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar6 < 1) { + operator_delete(puVar5); + } +LAB_0040a0c0: + auVar12._8_8_ = uVar10; + auVar12._0_8_ = uVar11; + return auVar12; +} + + +================================================================== + +### FUNC 0040a1d0 (3000 bytes) name=FUN_0040a1d0 + +undefined1 [16] +FUN_0040a1d0(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,undefined4 *param_7,long *param_8) + +{ + bool bVar1; + long *plVar2; + undefined8 uVar3; + bool bVar4; + bool bVar5; + char cVar6; + char cVar7; + int iVar8; + int iVar9; + wchar_t __c; + int iVar10; + wchar_t wVar11; + long lVar12; + long lVar13; + undefined *puVar14; + wchar_t *pwVar15; + char cVar16; + undefined4 uVar17; + ulong uVar18; + long lVar19; + undefined1 uVar20; + uint uVar21; + undefined1 auVar22 [16]; + long *local_40; + undefined8 local_38; + long *local_30; + undefined8 local_28; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + wVar11 = L'\0'; + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + local_28 = param_3; + lVar12 = FUN_004063a0(auStack_18,param_6 + 0xd0); + iVar8 = FUN_00406484(&local_30); + iVar9 = FUN_00406484(&local_40); + if ((iVar8 == -1) != (iVar9 == -1)) { + wVar11 = FUN_00406484(&local_30); + bVar5 = wVar11 != *(wchar_t *)(lVar12 + 0xe4); + if ((bVar5) && (wVar11 != *(wchar_t *)(lVar12 + 0xe0))) { + cVar6 = *(char *)(lVar12 + 0x20); + __c = wVar11; +LAB_0040aad0: + iVar8 = 0; + bVar5 = false; + do { + if ((cVar6 != '\0') && (*(wchar_t *)(lVar12 + 0x4c) == __c)) { + bVar1 = false; + local_8 = PTR_DAT_00501f30 + 0x18; + goto LAB_0040aa0c; + } + if ((*(wchar_t *)(lVar12 + 0x48) == __c) || + (wVar11 = *(wchar_t *)(lVar12 + 0xf0), wVar11 != __c)) { + bVar1 = false; + goto LAB_0040a260; + } + if (!bVar5) { + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + uVar18 = lVar19 + 1; + if ((*(ulong *)(lVar13 + -0x10) < uVar18) || (0 < *(int *)(lVar13 + -8))) { + FUN_00410ed8(param_8,uVar18); + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + } + *(undefined1 *)(lVar13 + lVar19) = 0x30; + lVar13 = *param_8; + if ((undefined *)(lVar13 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar13 + -8) = 0; + *(ulong *)(lVar13 + -0x18) = uVar18; + *(undefined1 *)(lVar13 + uVar18) = 0; + } + } + iVar8 = iVar8 + 1; + if (local_30 == (long *)0x0) { +LAB_0040ac54: + if (local_40 == (long *)0x0) goto LAB_0040ac2c; + iVar10 = 1; +joined_r0x0040ac6c: + iVar9 = 0; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar9 = *(int *)local_40[2]; + } + else { + iVar9 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar9 == -1) { + local_40 = (long *)0x0; + iVar9 = 1; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar9); + iVar9 = 0; + } + } + if (iVar10 == iVar9) goto LAB_0040ac2c; + } + else { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (local_30 == (long *)0x0) goto LAB_0040ac54; + } + if ((int *)local_30[2] < (int *)local_30[3]) { + iVar9 = *(int *)local_30[2]; + } + else { + iVar9 = (**(code **)(*local_30 + 0x48))(); + } + if (iVar9 == -1) { + local_30 = (long *)0x0; + goto LAB_0040ac54; + } + iVar10 = 0; + local_28 = CONCAT44(local_28._4_4_,iVar9); + if (local_40 != (long *)0x0) { + goto joined_r0x0040ac6c; + } + } + bVar5 = true; + __c = FUN_00406484(&local_30); + cVar6 = *(char *)(lVar12 + 0x20); + } while( true ); + } + cVar6 = *(char *)(lVar12 + 0x20); + if ((cVar6 != '\0') && (wVar11 == *(wchar_t *)(lVar12 + 0x4c))) { + cVar6 = '\x01'; + __c = *(wchar_t *)(lVar12 + 0x4c); + goto LAB_0040aad0; + } + __c = *(wchar_t *)(lVar12 + 0x48); + if (wVar11 == *(wchar_t *)(lVar12 + 0x48)) goto LAB_0040aad0; + uVar17 = 0x2d; + if (!bVar5) { + uVar17 = 0x2b; + } + FUN_004116e0(param_8,uVar17); + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + iVar8 = FUN_00406484(&local_30); + iVar9 = FUN_00406484(&local_40); + if ((iVar8 == -1) != (iVar9 == -1)) { + __c = FUN_00406484(&local_30); + cVar6 = *(char *)(lVar12 + 0x20); + goto LAB_0040aad0; + } + } + cVar6 = *(char *)(lVar12 + 0x20); + iVar8 = 0; + bVar5 = false; + bVar1 = true; + __c = wVar11; + goto LAB_0040a260; +LAB_0040ac2c: + bVar5 = true; + cVar6 = *(char *)(lVar12 + 0x20); + bVar1 = true; + __c = wVar11; +LAB_0040a260: + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar6 != '\0') { +LAB_0040aa0c: + FUN_00410ed8(&local_8,0x20); + } + cVar6 = *(char *)(lVar12 + 0x148); + if (cVar6 == '\0') { + if (!bVar1) { + bVar4 = false; + bVar1 = false; +LAB_0040a288: + uVar21 = __c + L'\xffffffd0'; + if (9 < uVar21) goto LAB_0040a55c; +LAB_0040a294: + lVar19 = *param_8; + lVar13 = *(long *)(lVar19 + -0x18); + uVar18 = lVar13 + 1; + if ((*(ulong *)(lVar19 + -0x10) < uVar18) || (0 < *(int *)(lVar19 + -8))) { + FUN_00410ed8(param_8,uVar18); + lVar19 = *param_8; + lVar13 = *(long *)(lVar19 + -0x18); + } + *(char *)(lVar19 + lVar13) = (char)uVar21 + '0'; + bVar5 = true; + lVar13 = *param_8; + if ((undefined *)(lVar13 + -0x18) != PTR_DAT_00501f30) goto LAB_0040a6ac; +LAB_0040a2ec: + if (local_30 == (long *)0x0) goto LAB_0040a6c0; + do { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (local_30 == (long *)0x0) goto LAB_0040a6c0; + } + if ((int *)local_30[2] < (int *)local_30[3]) { + iVar9 = *(int *)local_30[2]; + } + else { + iVar9 = (**(code **)(*local_30 + 0x48))(); + } + if (iVar9 == -1) { + local_30 = (long *)0x0; + goto LAB_0040a6c0; + } + iVar10 = 0; + local_28 = CONCAT44(local_28._4_4_,iVar9); + if (local_40 == (long *)0x0) goto LAB_0040a544; + while( true ) { + iVar9 = 0; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar9 = *(int *)local_40[2]; + } + else { + iVar9 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar9 == -1) { + local_40 = (long *)0x0; + iVar9 = 1; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar9); + iVar9 = 0; + } + } + if (iVar9 == iVar10) goto LAB_0040a358; +LAB_0040a544: + __c = FUN_00406484(&local_30); + uVar21 = __c + L'\xffffffd0'; + if (uVar21 < 10) goto LAB_0040a294; +LAB_0040a55c: + if ((*(wchar_t *)(lVar12 + 0x48) == __c) && (bVar1 < (bVar4 ^ 1U))) { + FUN_004116e0(param_8,0x2e); + bVar1 = true; + goto LAB_0040a2ec; + } + if (((*(wchar_t *)(lVar12 + 0x128) != __c) && (*(wchar_t *)(lVar12 + 0x140) != __c)) || + (bVar5 <= bVar4)) goto LAB_0040a358; + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + uVar18 = lVar19 + 1; + if ((*(ulong *)(lVar13 + -0x10) < uVar18) || (0 < *(int *)(lVar13 + -8))) { + FUN_00410ed8(param_8,uVar18); + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + } + *(undefined1 *)(lVar13 + lVar19) = 0x65; + lVar13 = *param_8; + if ((undefined *)(lVar13 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar13 + -8) = 0; + *(ulong *)(lVar13 + -0x18) = uVar18; + *(undefined1 *)(lVar13 + uVar18) = 0; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + iVar9 = FUN_00406484(&local_30); + iVar10 = FUN_00406484(&local_40); + if ((iVar10 == -1) == (iVar9 == -1)) goto LAB_0040ab90; + __c = FUN_00406484(&local_30); + if (__c == *(wchar_t *)(lVar12 + 0xe4)) { + uVar20 = 0x2b; + } + else { + bVar4 = true; + uVar20 = 0x2d; + if (__c != *(wchar_t *)(lVar12 + 0xe0)) goto LAB_0040a288; + } + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + uVar18 = lVar19 + 1; + if ((*(ulong *)(lVar13 + -0x10) < uVar18) || (0 < *(int *)(lVar13 + -8))) { + FUN_00410ed8(param_8,uVar18); + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + } + *(undefined1 *)(lVar13 + lVar19) = uVar20; + bVar4 = true; + lVar13 = *param_8; + if ((undefined *)(lVar13 + -0x18) == PTR_DAT_00501f30) goto LAB_0040a2ec; +LAB_0040a6ac: + *(undefined4 *)(lVar13 + -8) = 0; + *(ulong *)(lVar13 + -0x18) = uVar18; + *(undefined1 *)(lVar13 + uVar18) = 0; + if (local_30 != (long *)0x0) break; +LAB_0040a6c0: + if (local_40 == (long *)0x0) goto LAB_0040a358; + iVar10 = 1; + } + } while( true ); + } +LAB_0040abf0: + puVar14 = local_8; + if (*(long *)(local_8 + -0x18) != 0) { +LAB_0040abfc: + FUN_004116e0(&local_8,iVar8); +LAB_0040a374: + puVar14 = local_8; + cVar6 = FUN_003ee0cc(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_8); + if (cVar6 == '\0') { + *param_7 = 4; + } + } +LAB_0040a398: + puVar14 = puVar14 + -0x18; + if (puVar14 == PTR_DAT_00501f30) goto LAB_0040a3ac; + } + else { + if (bVar1) goto LAB_0040abf0; + cVar7 = *(char *)(lVar12 + 0x20); + bVar4 = false; + bVar1 = false; +LAB_0040a3ec: + if ((cVar7 != '\0') && (__c == *(wchar_t *)(lVar12 + 0x4c))) { + if ((bVar4 ^ 1U) <= bVar1) goto LAB_0040ab90; + if (iVar8 != 0) { + FUN_004116e0(&local_8,iVar8); + bVar1 = false; + iVar8 = 0; +LAB_0040a4c4: + if (local_30 == (long *)0x0) { +LAB_0040a78c: + if (local_40 == (long *)0x0) goto LAB_0040a358; + cVar7 = cVar6; +joined_r0x0040a7a4: + cVar16 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar9 = *(int *)local_40[2]; + } + else { + iVar9 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar9 == -1) { + local_40 = (long *)0x0; + cVar16 = cVar6; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar9); + cVar16 = '\0'; + } + } + if (cVar7 == cVar16) goto LAB_0040a358; + } + else { +LAB_0040a4cc: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + if (local_30 == (long *)0x0) goto LAB_0040a78c; + } + if ((int *)local_30[2] < (int *)local_30[3]) { + iVar9 = *(int *)local_30[2]; + } + else { + iVar9 = (**(code **)(*local_30 + 0x48))(); + } + if (iVar9 == -1) { + local_30 = (long *)0x0; + goto LAB_0040a78c; + } + cVar7 = '\0'; + local_28 = CONCAT44(local_28._4_4_,iVar9); + if (local_40 != (long *)0x0) { + goto joined_r0x0040a7a4; + } + } + __c = FUN_00406484(&local_30); + cVar7 = *(char *)(lVar12 + 0x20); + goto LAB_0040a3ec; + } + FUN_00412b08(param_8,0,*(undefined8 *)(*param_8 + -0x18),0); + bVar1 = false; +LAB_0040a358: + puVar14 = local_8; + if (*(long *)(local_8 + -0x18) != 0) { + if ((bVar4 ^ 1U) <= bVar1) goto LAB_0040a374; + goto LAB_0040abfc; + } + goto LAB_0040a398; + } + if (__c != *(wchar_t *)(lVar12 + 0x48)) { + pwVar15 = wmemchr((wchar_t *)(lVar12 + 0xf0),__c,10); + if (pwVar15 != (wchar_t *)0x0) { + lVar19 = *param_8; + lVar13 = *(long *)(lVar19 + -0x18); + uVar18 = lVar13 + 1; + if ((*(ulong *)(lVar19 + -0x10) < uVar18) || (0 < *(int *)(lVar19 + -8))) { + FUN_00410ed8(param_8,uVar18); + lVar19 = *param_8; + lVar13 = *(long *)(lVar19 + -0x18); + } + *(char *)(lVar19 + lVar13) = (char)((long)pwVar15 - (lVar12 + 0xf0) >> 2) + '0'; + lVar13 = *param_8; + if ((undefined *)(lVar13 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar13 + -8) = 0; + *(ulong *)(lVar13 + -0x18) = uVar18; + *(undefined1 *)(lVar13 + uVar18) = 0; + } + iVar8 = iVar8 + 1; + bVar5 = true; + if (local_30 != (long *)0x0) goto LAB_0040a4cc; + goto LAB_0040a78c; + } + if (((__c != *(wchar_t *)(lVar12 + 0x128)) && (__c != *(wchar_t *)(lVar12 + 0x140))) || + (bVar5 <= bVar4)) goto LAB_0040a358; + if ((!bVar1) && (*(long *)(local_8 + -0x18) != 0)) { + FUN_004116e0(&local_8,iVar8); + } + FUN_004116e0(param_8,0x65); + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = CONCAT44(local_28._4_4_,0xffffffff); + } + iVar9 = FUN_00406484(&local_30); + iVar10 = FUN_00406484(&local_40); + if ((iVar10 == -1) == (iVar9 == -1)) goto LAB_0040ab90; + __c = FUN_00406484(&local_30); + bVar4 = __c == *(wchar_t *)(lVar12 + 0xe4); + if ((bVar4) || (__c == *(wchar_t *)(lVar12 + 0xe0))) { + cVar7 = *(char *)(lVar12 + 0x20); + if ((cVar7 == '\0') || (__c != *(wchar_t *)(lVar12 + 0x4c))) { + if (__c != *(wchar_t *)(lVar12 + 0x48)) { + uVar17 = 0x2d; + if (bVar4) { + uVar17 = 0x2b; + } + FUN_004116e0(param_8,uVar17); + bVar4 = true; + goto LAB_0040a4c4; + } + goto LAB_0040a8c4; + } + cVar7 = '\x01'; + bVar4 = true; + } + else { + cVar7 = *(char *)(lVar12 + 0x20); +LAB_0040a8c4: + bVar4 = true; + } + goto LAB_0040a3ec; + } + if (bVar1 < (bVar4 ^ 1U)) { + lVar13 = *(long *)(local_8 + -0x18); + if (lVar13 != 0) { + uVar18 = lVar13 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar18) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(&local_8,uVar18); + lVar13 = *(long *)(local_8 + -0x18); + } + local_8[lVar13] = (char)iVar8; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar18; + local_8[uVar18] = 0; + } + } + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + uVar18 = lVar19 + 1; + if ((*(ulong *)(lVar13 + -0x10) < uVar18) || (0 < *(int *)(lVar13 + -8))) { + FUN_00410ed8(param_8,uVar18); + lVar13 = *param_8; + lVar19 = *(long *)(lVar13 + -0x18); + } + *(undefined1 *)(lVar13 + lVar19) = 0x2e; + bVar1 = true; + lVar13 = *param_8; + if ((undefined *)(lVar13 + -0x18) != PTR_DAT_00501f30) { + *(undefined4 *)(lVar13 + -8) = 0; + *(ulong *)(lVar13 + -0x18) = uVar18; + *(undefined1 *)(lVar13 + uVar18) = 0; + } + goto LAB_0040a4c4; + } +LAB_0040ab90: + if (*(long *)(local_8 + -0x18) != 0) goto LAB_0040a374; + puVar14 = local_8 + -0x18; + if (puVar14 == PTR_DAT_00501f30) goto LAB_0040a3ac; + } + uVar3 = local_28; + plVar2 = local_30; + FUN_003ff25c(puVar14,auStack_10); + local_30 = plVar2; + local_28 = uVar3; +LAB_0040a3ac: + auVar22._8_8_ = local_28; + auVar22._0_8_ = local_30; + return auVar22; +} + + +================================================================== + +### FUNC 0040adb0 (564 bytes) name=FUN_0040adb0 + +undefined1 [16] +FUN_0040adb0(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + undefined8 param_6,_Ios_Iostate *param_7,float *param_8) + +{ + char cVar1; + int iVar2; + uint uVar3; + int *piVar4; + bool bVar5; + bool bVar6; + char *pcVar7; + long *plVar8; + ulong uVar9; + undefined1 auVar10 [16]; + char *local_10; + int *local_8; + + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,0x20); + auVar10 = FUN_0040a1d0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&local_10); + pcVar7 = local_10; + plVar8 = auVar10._0_8_; + uVar9 = auVar10._8_8_ & 0xffffffff; + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar7,param_8,param_7,&local_8); + iVar2 = (int)param_5; + if (plVar8 == (long *)0x0) { +LAB_0040af90: + plVar8 = (long *)0x0; + bVar6 = true; + bVar5 = true; + if (param_4 != (long *)0x0) goto joined_r0x0040afa4; +LAB_0040af08: + uVar9 = param_3 & 0xffffffff00000000 | uVar9; + *(uint *)param_7 = *(uint *)param_7 | 2; + pcVar7 = local_10 + -0x18; + if (pcVar7 == PTR_DAT_00501f30) goto LAB_0040aec0; + } + else { + if (auVar10._8_4_ == -1) { + if ((uint *)plVar8[2] < (uint *)plVar8[3]) { + uVar3 = *(uint *)plVar8[2]; + } + else { + uVar3 = (**(code **)(*plVar8 + 0x48))(plVar8); + } + if (uVar3 == 0xffffffff) goto LAB_0040af90; + uVar9 = (ulong)uVar3; + } + if (param_4 != (long *)0x0) { + bVar6 = false; + bVar5 = false; +joined_r0x0040afa4: + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + if ((*(int *)param_4[2] == -1) == bVar6) goto LAB_0040af08; + goto LAB_0040aea8; + } + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + bVar5 = bVar6; + } + if ((iVar2 == -1) == bVar5) goto LAB_0040af08; + } +LAB_0040aea8: + uVar9 = param_3 & 0xffffffff00000000 | uVar9; + pcVar7 = local_10 + -0x18; + if (pcVar7 == PTR_DAT_00501f30) goto LAB_0040aec0; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar2 + -1; + } + else { + piVar4 = (int *)(local_10 + -8); + do { + iVar2 = *piVar4; + cVar1 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar5) { + *piVar4 = iVar2 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar2 < 1) { + operator_delete(pcVar7); + } +LAB_0040aec0: + auVar10._8_8_ = uVar9; + auVar10._0_8_ = plVar8; + return auVar10; +} + + +================================================================== + +### FUNC 0040b00c (564 bytes) name=FUN_0040b00c + +undefined1 [16] +FUN_0040b00c(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + undefined8 param_6,_Ios_Iostate *param_7,double *param_8) + +{ + char cVar1; + int iVar2; + uint uVar3; + int *piVar4; + bool bVar5; + bool bVar6; + char *pcVar7; + long *plVar8; + ulong uVar9; + undefined1 auVar10 [16]; + char *local_10; + int *local_8; + + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,0x20); + auVar10 = FUN_0040a1d0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&local_10); + pcVar7 = local_10; + plVar8 = auVar10._0_8_; + uVar9 = auVar10._8_8_ & 0xffffffff; + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar7,param_8,param_7,&local_8); + iVar2 = (int)param_5; + if (plVar8 == (long *)0x0) { +LAB_0040b1ec: + plVar8 = (long *)0x0; + bVar6 = true; + bVar5 = true; + if (param_4 != (long *)0x0) goto joined_r0x0040b200; +LAB_0040b164: + uVar9 = param_3 & 0xffffffff00000000 | uVar9; + *(uint *)param_7 = *(uint *)param_7 | 2; + pcVar7 = local_10 + -0x18; + if (pcVar7 == PTR_DAT_00501f30) goto LAB_0040b11c; + } + else { + if (auVar10._8_4_ == -1) { + if ((uint *)plVar8[2] < (uint *)plVar8[3]) { + uVar3 = *(uint *)plVar8[2]; + } + else { + uVar3 = (**(code **)(*plVar8 + 0x48))(plVar8); + } + if (uVar3 == 0xffffffff) goto LAB_0040b1ec; + uVar9 = (ulong)uVar3; + } + if (param_4 != (long *)0x0) { + bVar6 = false; + bVar5 = false; +joined_r0x0040b200: + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + if ((*(int *)param_4[2] == -1) == bVar6) goto LAB_0040b164; + goto LAB_0040b104; + } + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + bVar5 = bVar6; + } + if ((iVar2 == -1) == bVar5) goto LAB_0040b164; + } +LAB_0040b104: + uVar9 = param_3 & 0xffffffff00000000 | uVar9; + pcVar7 = local_10 + -0x18; + if (pcVar7 == PTR_DAT_00501f30) goto LAB_0040b11c; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar2 + -1; + } + else { + piVar4 = (int *)(local_10 + -8); + do { + iVar2 = *piVar4; + cVar1 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar5) { + *piVar4 = iVar2 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar2 < 1) { + operator_delete(pcVar7); + } +LAB_0040b11c: + auVar10._8_8_ = uVar9; + auVar10._0_8_ = plVar8; + return auVar10; +} + + +================================================================== + +### FUNC 0040b268 (564 bytes) name=FUN_0040b268 + +undefined1 [16] +FUN_0040b268(undefined8 param_1,undefined8 param_2,ulong param_3,long *param_4,undefined8 param_5, + undefined8 param_6,_Ios_Iostate *param_7,longdouble *param_8) + +{ + char cVar1; + int iVar2; + uint uVar3; + int *piVar4; + bool bVar5; + bool bVar6; + char *pcVar7; + long *plVar8; + ulong uVar9; + undefined1 auVar10 [16]; + char *local_10; + int *local_8; + + local_10 = PTR_DAT_00501f30 + 0x18; + FUN_00410ed8(&local_10,0x20); + auVar10 = FUN_0040a1d0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&local_10); + pcVar7 = local_10; + plVar8 = auVar10._0_8_; + uVar9 = auVar10._8_8_ & 0xffffffff; + local_8 = (int *)FUN_003ed450(); + std::__convert_to_v(pcVar7,param_8,param_7,&local_8); + iVar2 = (int)param_5; + if (plVar8 == (long *)0x0) { +LAB_0040b448: + plVar8 = (long *)0x0; + bVar6 = true; + bVar5 = true; + if (param_4 != (long *)0x0) goto joined_r0x0040b45c; +LAB_0040b3c0: + uVar9 = param_3 & 0xffffffff00000000 | uVar9; + *(uint *)param_7 = *(uint *)param_7 | 2; + pcVar7 = local_10 + -0x18; + if (pcVar7 == PTR_DAT_00501f30) goto LAB_0040b378; + } + else { + if (auVar10._8_4_ == -1) { + if ((uint *)plVar8[2] < (uint *)plVar8[3]) { + uVar3 = *(uint *)plVar8[2]; + } + else { + uVar3 = (**(code **)(*plVar8 + 0x48))(plVar8); + } + if (uVar3 == 0xffffffff) goto LAB_0040b448; + uVar9 = (ulong)uVar3; + } + if (param_4 != (long *)0x0) { + bVar6 = false; + bVar5 = false; +joined_r0x0040b45c: + if (iVar2 == -1) { + if ((int *)param_4[2] < (int *)param_4[3]) { + if ((*(int *)param_4[2] == -1) == bVar6) goto LAB_0040b3c0; + goto LAB_0040b360; + } + iVar2 = (**(code **)(*param_4 + 0x48))(param_4); + bVar5 = bVar6; + } + if ((iVar2 == -1) == bVar5) goto LAB_0040b3c0; + } +LAB_0040b360: + uVar9 = param_3 & 0xffffffff00000000 | uVar9; + pcVar7 = local_10 + -0x18; + if (pcVar7 == PTR_DAT_00501f30) goto LAB_0040b378; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)(local_10 + -8); + *(int *)(local_10 + -8) = iVar2 + -1; + } + else { + piVar4 = (int *)(local_10 + -8); + do { + iVar2 = *piVar4; + cVar1 = '\x01'; + bVar5 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar5) { + *piVar4 = iVar2 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar2 < 1) { + operator_delete(pcVar7); + } +LAB_0040b378: + auVar10._8_8_ = uVar9; + auVar10._0_8_ = plVar8; + return auVar10; +} + + +================================================================== + +### FUNC 0040b4c4 (2288 bytes) name=FUN_0040b4c4 + +undefined1 [16] +FUN_0040b4c4(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,ulong *param_8) + +{ + ulong uVar1; + ulong uVar2; + bool bVar3; + bool bVar4; + undefined1 auVar5 [16]; + bool bVar6; + bool bVar7; + wchar_t wVar8; + bool bVar9; + char cVar10; + int iVar11; + int iVar12; + wchar_t wVar13; + int iVar14; + uint uVar15; + int iVar16; + long lVar17; + long lVar18; + wchar_t *pwVar19; + char cVar20; + ulong uVar21; + char cVar22; + ulong uVar23; + ulong uVar24; + ulong uVar25; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + wchar_t local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (wchar_t)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar17 = FUN_004063a0(auStack_18,param_6 + 0xd0); + uVar15 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar15 == 0x40) { + iVar16 = 8; + } + else { + iVar16 = 0x10; + if (uVar15 != 8) { + iVar16 = 10; + } + } + iVar11 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) { + wVar13 = L'\0'; + bVar9 = false; + } + else { + wVar13 = FUN_00406484(&local_30); + bVar9 = wVar13 == *(wchar_t *)(lVar17 + 0xe0); + /* try { // try from 0040bb8c to 0050bbc7 has its CatchHandler @ 0040bb2c */ + if ((!bVar9) && (wVar13 != *(wchar_t *)(lVar17 + 0xe4))) { + cVar10 = *(char *)(lVar17 + 0x20); +LAB_0040b5f8: + iVar11 = 0; + bVar7 = false; + do { + if (((cVar10 != '\0') && (*(wchar_t *)(lVar17 + 0x4c) == wVar13)) || + (*(wchar_t *)(lVar17 + 0x48) == wVar13)) { +LAB_0040bd4c: + bVar3 = false; + goto joined_r0x0040ba28; + } + if (*(wchar_t *)(lVar17 + 0xf0) == wVar13) { + if ((iVar16 == 10) < bVar7) goto LAB_0040b634; + iVar11 = iVar11 + 1; + if ((iVar16 == 8) || (bVar7 = true, uVar15 == 0)) { + iVar11 = 0; + bVar7 = true; + iVar16 = 8; + } + } + else { + if (!bVar7) goto LAB_0040bd4c; +LAB_0040b634: + if ((*(wchar_t *)(lVar17 + 0xe8) != wVar13) && (*(wchar_t *)(lVar17 + 0xec) != wVar13)) { + bVar7 = true; + bVar3 = false; + goto joined_r0x0040ba28; + } + if ((iVar16 != 0x10) && (uVar15 != 0)) { + bVar3 = false; + bVar7 = true; + goto LAB_0040b6e0; + } + iVar11 = 0; + bVar7 = false; + iVar16 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = L'\xffffffff'; + } + iVar12 = FUN_00406484(&local_30); + iVar14 = FUN_00406484(&local_40); + if ((iVar12 == -1) == (iVar14 == -1)) { + cVar10 = *(char *)(lVar17 + 0x20); + bVar3 = true; + goto joined_r0x0040ba28; + } + wVar13 = FUN_00406484(&local_30); + if (!bVar7) goto LAB_0040bda8; + cVar10 = *(char *)(lVar17 + 0x20); + } while( true ); + } + cVar10 = *(char *)(lVar17 + 0x20); + if ((cVar10 != '\0') && (wVar13 == *(wchar_t *)(lVar17 + 0x4c))) { + cVar10 = '\x01'; + goto LAB_0040b5f8; + } + if (wVar13 == *(wchar_t *)(lVar17 + 0x48)) goto LAB_0040b5f8; + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = L'\xffffffff'; + } + iVar11 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar11 == -1) != (iVar12 == -1)) { + wVar13 = FUN_00406484(&local_30); + cVar10 = *(char *)(lVar17 + 0x20); + goto LAB_0040b5f8; + } + } + cVar10 = *(char *)(lVar17 + 0x20); + bVar3 = true; + iVar11 = 0; + bVar7 = false; +joined_r0x0040ba28: + if (iVar16 == 0x10) { + uVar24 = 0x16; + } + else { +LAB_0040b6e0: + uVar24 = (ulong)iVar16; + } + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar10 != '\0') { + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + } + local_58 = &local_8; + uVar25 = (ulong)iVar16; + cVar10 = *(char *)(lVar17 + 0x148); + uVar1 = 0x7fffffffffffffff; + if (bVar9) { + uVar1 = 0x8000000000000000; + } + uVar2 = 0; + if (uVar25 != 0) { + uVar2 = uVar1 / uVar25; + } + if (cVar10 == '\0') { + uVar23 = 0; + bVar6 = false; + if (!bVar3) { +LAB_0040b748: + if (10 < uVar24) goto LAB_0040b81c; +LAB_0040b750: + if ((0x2f < (uint)wVar13) && ((uint)wVar13 < (uint)((int)uVar24 + L'0'))) { + uVar15 = wVar13 + L'\xffffffd0'; +LAB_0040b768: + if (uVar23 <= uVar2) goto LAB_0040b84c; +LAB_0040b770: + bVar6 = true; + if (local_30 == (long *)0x0) goto LAB_0040b878; +LAB_0040b77c: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + /* try { // try from 0040bc6c to 0050bc6f has its CatchHandler @ 0040bc90 */ + (**(code **)(*local_30 + 0x50))(); + /* try { // try from 0040bc74 to 0050bc77 has its CatchHandler @ 0040bb2c */ + local_28 = L'\xffffffff'; + /* catch() { ... } // from try @ 0040bbf4 with catch @ 0040bc7c */ + if (local_30 == (long *)0x0) goto LAB_0040b878; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040b878; + } + iVar16 = 0; + local_28 = wVar13; + if (local_40 == (long *)0x0) goto LAB_0040b7dc; + iVar12 = 0; + if ((int)local_38 == -1) goto LAB_0040b894; +LAB_0040b7d4: + do { + if (iVar12 == iVar16) goto LAB_0040b8c0; +LAB_0040b7dc: + while( true ) { + wVar13 = L'\xffffffff'; + if ((local_30 == (long *)0x0) || (wVar13 = local_28, local_28 != L'\xffffffff')) + goto LAB_0040b748; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040b748; + } + local_28 = wVar13; + if (uVar24 < 0xb) goto LAB_0040b750; +LAB_0040b81c: + uVar15 = wVar13 + L'\xffffffd0'; + if (uVar15 < 10) goto LAB_0040b768; + if ((uint)(wVar13 + L'\xffffff9f') < 6) { + uVar15 = wVar13 + L'\xffffffa9'; + goto LAB_0040b768; + } + if (5 < (uint)(wVar13 + L'\xffffffbf')) goto LAB_0040b980; + uVar15 = wVar13 + L'\xffffffc9'; + if (uVar2 < uVar23) goto LAB_0040b770; +LAB_0040b84c: + uVar21 = uVar23 * uVar25; + iVar11 = iVar11 + 1; + uVar23 = (long)(int)uVar15 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)(int)uVar15 < uVar21); + if (local_30 != (long *)0x0) goto LAB_0040b77c; +LAB_0040b878: + if (local_40 == (long *)0x0) goto LAB_0040b8c0; + iVar16 = 1; + iVar12 = 0; + if ((int)local_38 != -1) goto LAB_0040b7d4; +LAB_0040b894: + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar12 = *(int *)local_40[2]; + } + else { + iVar12 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar12 == -1) break; + local_38 = CONCAT44(local_38._4_4_,iVar12); + if (iVar16 == 0) goto LAB_0040b8c0; + } + local_40 = (long *)0x0; + iVar12 = 1; + } while( true ); + } + } +LAB_0040b980: + bVar4 = false; + } + else { + if (!bVar3) { + uVar23 = 0; + bVar6 = false; + wVar8 = local_28; +LAB_0040ba6c: + local_28 = wVar8; + if ((*(char *)(lVar17 + 0x20) == '\0') || (wVar13 != *(wchar_t *)(lVar17 + 0x4c))) { + if ((wVar13 == *(wchar_t *)(lVar17 + 0x48)) || + (pwVar19 = wmemchr((wchar_t *)(lVar17 + 0xf0),wVar13,uVar24), pwVar19 == (wchar_t *)0x0)) + goto LAB_0040b980; + iVar16 = (int)((long)pwVar19 - (lVar17 + 0xf0) >> 2); + if (0xf < iVar16) { + iVar16 = iVar16 + -6; + } + if (uVar23 <= uVar2) { + uVar21 = uVar23 * uVar25; + iVar11 = iVar11 + 1; + uVar23 = (long)iVar16 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)iVar16 < uVar21); + goto LAB_0040bae0; + } + bVar6 = true; + if (local_30 != (long *)0x0) goto LAB_0040bae8; +LAB_0040bbf0: + /* try { // try from 0040bbf4 to 0050bbf7 has its CatchHandler @ 0040bc7c */ + if (local_40 == (long *)0x0) goto LAB_0040b8c0; + cVar22 = cVar10; + /* try { // try from 0040bbfc to 0050bc33 has its CatchHandler @ 0040bb2c */ +joined_r0x0040bc08: + cVar20 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar16 = *(int *)local_40[2]; + } + else { + iVar16 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar16 == -1) { + local_40 = (long *)0x0; + cVar20 = cVar10; + /* try { // try from 0040bc8c to 0050bc8f has its CatchHandler @ 0040bb2c */ + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar16); + cVar20 = '\0'; + } + } + if (cVar20 == cVar22) goto LAB_0040b8c0; + } + else { + if (iVar11 == 0) { + bVar4 = true; + goto LAB_0040b984; + } + FUN_004116e0(local_58,iVar11); + iVar11 = 0; +LAB_0040bae0: + if (local_30 == (long *)0x0) goto LAB_0040bbf0; +LAB_0040bae8: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + /* try { // try from 0040bca0 to 0050bca3 has its CatchHandler @ 0040bb2c */ + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040bbf0; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + /* catch() { ... } // from try @ 0040bc6c with catch @ 0040bc90 */ + local_30 = (long *)0x0; + goto LAB_0040bbf0; + } + cVar22 = '\0'; + /* catch() { ... } // from try @ 0040bb8c with catch @ 0040bb2c + catch() { ... } // from try @ 0040bbfc with catch @ 0040bb2c + catch() { ... } // from try @ 0040bc74 with catch @ 0040bb2c + catch() { ... } // from try @ 0040bc8c with catch @ 0040bb2c + catch() { ... } // from try @ 0040bca0 with catch @ 0040bb2c */ + local_28 = wVar13; + if (local_40 != (long *)0x0) { + goto joined_r0x0040bc08; + } + } + wVar8 = local_28; + wVar13 = L'\xffffffff'; + if ((local_30 != (long *)0x0) && (wVar13 = local_28, local_28 == L'\xffffffff')) { + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + wVar8 = wVar13; + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + wVar8 = local_28; + } + } + goto LAB_0040ba6c; + } + uVar23 = 0; + bVar6 = false; + bVar4 = false; + } +LAB_0040b984: + lVar18 = *(long *)(local_8 + -0x18); +joined_r0x0040b8d0: + if (lVar18 == 0) { + if ((iVar11 == 0) <= bVar7) { +LAB_0040b9a4: + if (!bVar4) { + if (bVar6) { + uVar24 = 0x7fffffffffffffff; + if (bVar9) { + uVar24 = 0x8000000000000000; + } + *param_8 = uVar24; + *param_7 = 4; + } + else { + uVar24 = -uVar23; + if (!bVar9) { + uVar24 = uVar23; + } + *param_8 = uVar24; + } + goto LAB_0040b930; + } + } + } + else { + FUN_004116e0(local_58,iVar11); + cVar10 = FUN_003ee0cc(*(undefined8 *)(lVar17 + 0x10),*(undefined8 *)(lVar17 + 0x18),local_58); + if (cVar10 == '\0') { + *param_7 = 4; + } + if (((iVar11 == 0) <= bVar7) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_0040b9a4; + } + *param_8 = 0; + *param_7 = 4; +LAB_0040b930: + if (bVar3) { + *param_7 = *param_7 | 2; + } + auVar5._8_4_ = local_28; + auVar5._0_8_ = local_30; + auVar5._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003ff25c(local_8 + -0x18,auStack_10); + } + return auVar5; +LAB_0040bda8: + cVar10 = *(char *)(lVar17 + 0x20); + bVar3 = false; + goto joined_r0x0040ba28; +LAB_0040b8c0: + bVar4 = false; + bVar3 = true; + lVar18 = *(long *)(local_8 + -0x18); + goto joined_r0x0040b8d0; +} + + +================================================================== + +### FUNC 0040bde0 (20 bytes) name=FUN_0040bde0 + +void FUN_0040bde0(void) + +{ + FUN_0040b4c4(); + return; +} + + +================================================================== + +### FUNC 0040bdf4 (1016 bytes) name=FUN_0040bdf4 + +undefined1 [16] +FUN_0040bdf4(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,byte *param_8) + +{ + undefined1 auVar1 [16]; + undefined1 auVar2 [16]; + undefined1 auVar3 [16]; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + int iVar8; + int iVar9; + long lVar10; + ulong uVar11; + long *local_30; + undefined8 local_28; + undefined1 local_20 [12]; + undefined4 uStack_14; + ulong local_8; + + local_20._8_4_ = (undefined4)param_3; + uStack_14 = (undefined4)((ulong)param_3 >> 0x20); + local_30 = param_4; + local_28 = param_5; + local_20._0_8_ = param_2; + if ((*(uint *)(param_6 + 0x18) & 1) == 0) { + local_8 = 0xffffffffffffffff; + local_20 = FUN_0040b4c4(); + if (local_8 < 2) { + *param_8 = (byte)local_8 & 1; + } + else { + *param_8 = 1; + *param_7 = 4; + iVar8 = FUN_00406484(local_20); + iVar9 = FUN_00406484(&local_30); + if ((iVar8 == -1) == (iVar9 == -1)) { + *param_7 = *param_7 | 2; + } + } + goto LAB_0040c11c; + } + bVar7 = true; + uVar11 = 0; + lVar10 = FUN_004063a0(&local_8,param_6 + 0xd0); + bVar4 = *(long *)(lVar10 + 0x40) == 0; + bVar6 = true; + bVar5 = *(long *)(lVar10 + 0x30) == 0; +LAB_0040bedc: + if (bVar4 <= (bVar5 ^ 1U)) { + do { + if ((long *)local_20._0_8_ == (long *)0x0) { +LAB_0040c030: + if (local_30 != (long *)0x0) { + iVar8 = 1; +joined_r0x0040c048: + iVar9 = 0; + if ((int)local_28 == -1) { + if ((int *)local_30[2] < (int *)local_30[3]) { + iVar9 = *(int *)local_30[2]; + } + else { + iVar9 = (**(code **)(*local_30 + 0x48))(local_30); + } + if (iVar9 != -1) { + local_28 = CONCAT44(local_28._4_4_,iVar9); + if (iVar8 != 0) goto LAB_0040bf20; + goto LAB_0040c078; + } + local_30 = (long *)0x0; + iVar9 = 1; + } + if (iVar8 != iVar9) goto LAB_0040bf20; + } +LAB_0040c078: + iVar8 = 1; + if (bVar6) goto LAB_0040c0c8; + goto LAB_0040bfe0; + } + if (local_20._8_4_ == -1) { + if (*(int **)(local_20._0_8_ + 0x10) < *(int **)(local_20._0_8_ + 0x18)) { + iVar8 = **(int **)(local_20._0_8_ + 0x10); + } + else { + iVar8 = (**(code **)(*(long *)local_20._0_8_ + 0x48))(local_20._0_8_); + } + if (iVar8 == -1) { + local_20._0_8_ = (long *)0x0; + goto LAB_0040c030; + } + local_20._8_4_ = iVar8; + if (local_30 != (long *)0x0) goto LAB_0040bf08; +LAB_0040bf20: + iVar8 = -1; + iVar9 = local_20._8_4_; + if (((long *)local_20._0_8_ != (long *)0x0) && + (iVar8 = local_20._8_4_, local_20._8_4_ == -1)) { + if (*(int **)(local_20._0_8_ + 0x10) < *(int **)(local_20._0_8_ + 0x18)) { + iVar8 = **(int **)(local_20._0_8_ + 0x10); + } + else { + iVar8 = (**(code **)(*(long *)local_20._0_8_ + 0x48))(local_20._0_8_); + } + iVar9 = iVar8; + if (iVar8 == -1) { + local_20._0_8_ = (long *)0x0; + iVar9 = local_20._8_4_; + } + } + } + else { + iVar8 = local_20._8_4_; + iVar9 = local_20._8_4_; + if (local_30 != (long *)0x0) { +LAB_0040bf08: + iVar8 = 0; + goto joined_r0x0040c048; + } + } + local_20._8_4_ = iVar9; + if (!bVar4) { + bVar6 = *(int *)(*(long *)(lVar10 + 0x38) + uVar11 * 4) == iVar8; + } + if (bVar6 < bVar5) break; + if (!bVar5) { + bVar7 = *(int *)(*(long *)(lVar10 + 0x28) + uVar11 * 4) == iVar8; + } + if ((bVar7 < bVar4) || (bVar7 < (bVar6 ^ 1U))) { + if ((!bVar6) || ((*(ulong *)(lVar10 + 0x40) != uVar11 || (uVar11 == 0)))) { + *param_8 = 0; + goto LAB_0040c194; + } + *param_8 = 0; + *param_7 = 0; + goto LAB_0040c0f4; + } + uVar11 = uVar11 + 1; + if ((long *)local_20._0_8_ != (long *)0x0) { + if (*(ulong *)(local_20._0_8_ + 0x10) < *(ulong *)(local_20._0_8_ + 0x18)) { + *(ulong *)(local_20._0_8_ + 0x10) = *(ulong *)(local_20._0_8_ + 0x10) + 4; + } + else { + (**(code **)(*(long *)local_20._0_8_ + 0x50))(); + } + local_20._8_4_ = -1; + } + bVar4 = true; + if (bVar6) { + bVar4 = *(ulong *)(lVar10 + 0x40) <= uVar11; + } + bVar5 = true; + if (!bVar7) goto LAB_0040bedc; + bVar5 = *(ulong *)(lVar10 + 0x30) <= uVar11; + if (!bVar5 < bVar4) break; + } while( true ); + } + iVar8 = 0; + if (bVar6) { +LAB_0040c0c8: + if ((uVar11 != *(ulong *)(lVar10 + 0x40)) || (uVar11 == 0)) goto LAB_0040bfe0; + *param_8 = 0; + if ((!bVar7) || (uVar11 != *(ulong *)(lVar10 + 0x30))) { + *param_7 = iVar8 << 1; + goto LAB_0040c0f4; + } + } + else { +LAB_0040bfe0: + if (((bVar7) && (*(ulong *)(lVar10 + 0x30) == uVar11)) && (uVar11 != 0)) { + *param_8 = 1; + *param_7 = iVar8 << 1; +LAB_0040c11c: + auVar2._12_4_ = uStack_14; + auVar2._0_12_ = local_20; + return auVar2; + } + *param_8 = 0; + if (iVar8 != 0) { + *param_7 = 6; + auVar3._8_4_ = local_20._8_4_; + auVar3._0_8_ = local_20._0_8_; + auVar3._12_4_ = uStack_14; + return auVar3; + } + } +LAB_0040c194: + *param_7 = 4; +LAB_0040c0f4: + auVar1._8_4_ = local_20._8_4_; + auVar1._0_8_ = local_20._0_8_; + auVar1._12_4_ = uStack_14; + return auVar1; +} + + +================================================================== + +### FUNC 0040c1ec (2288 bytes) name=FUN_0040c1ec + +undefined1 [16] +FUN_0040c1ec(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,short *param_8) + +{ + uint uVar1; + bool bVar2; + bool bVar3; + undefined1 auVar4 [16]; + bool bVar5; + bool bVar6; + wchar_t wVar7; + char cVar8; + ushort uVar9; + uint uVar10; + int iVar11; + int iVar12; + wchar_t wVar13; + int iVar14; + uint uVar15; + long lVar16; + long lVar17; + wchar_t *pwVar18; + char cVar19; + char cVar20; + ushort uVar21; + uint uVar22; + uint uVar23; + ulong __n; + uint uVar24; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + wchar_t local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (wchar_t)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar16 = FUN_004063a0(auStack_18,param_6 + 0xd0); + uVar24 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar24 == 0x40) { + uVar10 = 8; + } + else { + uVar10 = 0x10; + if (uVar24 != 8) { + uVar10 = 10; + } + } + iVar11 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) { + wVar13 = L'\0'; + uVar9 = 0; + } + else { + wVar13 = FUN_00406484(&local_30); + uVar9 = (ushort)(wVar13 == *(wchar_t *)(lVar16 + 0xe0)); + if ((uVar9 == 0) && (wVar13 != *(wchar_t *)(lVar16 + 0xe4))) { + cVar8 = *(char *)(lVar16 + 0x20); +LAB_0040c320: + iVar11 = 0; + bVar6 = false; + do { + if (((cVar8 != '\0') && (*(wchar_t *)(lVar16 + 0x4c) == wVar13)) || + (*(wchar_t *)(lVar16 + 0x48) == wVar13)) { +LAB_0040ca74: + bVar2 = false; + goto joined_r0x0040c730; + } + if (*(wchar_t *)(lVar16 + 0xf0) == wVar13) { + if ((uVar10 == 10) < bVar6) goto LAB_0040c35c; + iVar11 = iVar11 + 1; + if ((uVar10 == 8) || (bVar6 = true, uVar24 == 0)) { + iVar11 = 0; + bVar6 = true; + uVar10 = 8; + } + } + else { + if (!bVar6) goto LAB_0040ca74; +LAB_0040c35c: + if ((*(wchar_t *)(lVar16 + 0xe8) != wVar13) && (*(wchar_t *)(lVar16 + 0xec) != wVar13)) { + bVar6 = true; + bVar2 = false; + goto joined_r0x0040c730; + } + if ((uVar10 != 0x10) && (uVar24 != 0)) { + bVar2 = false; + bVar6 = true; + goto LAB_0040c408; + } + iVar11 = 0; + bVar6 = false; + uVar10 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = L'\xffffffff'; + } + iVar12 = FUN_00406484(&local_30); + iVar14 = FUN_00406484(&local_40); + if ((iVar12 == -1) == (iVar14 == -1)) { + cVar8 = *(char *)(lVar16 + 0x20); + bVar2 = true; + goto joined_r0x0040c730; + } + wVar13 = FUN_00406484(&local_30); + if (!bVar6) goto LAB_0040cad0; + cVar8 = *(char *)(lVar16 + 0x20); + } while( true ); + } + cVar8 = *(char *)(lVar16 + 0x20); + if ((cVar8 != '\0') && (wVar13 == *(wchar_t *)(lVar16 + 0x4c))) { + cVar8 = '\x01'; + goto LAB_0040c320; + } + if (wVar13 == *(wchar_t *)(lVar16 + 0x48)) goto LAB_0040c320; + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = L'\xffffffff'; + } + iVar11 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar11 == -1) != (iVar12 == -1)) { + wVar13 = FUN_00406484(&local_30); + cVar8 = *(char *)(lVar16 + 0x20); + goto LAB_0040c320; + } + } + cVar8 = *(char *)(lVar16 + 0x20); + bVar2 = true; + iVar11 = 0; + bVar6 = false; +joined_r0x0040c730: + if (uVar10 == 0x10) { + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 == '\0') goto LAB_0040c428; +LAB_0040c754: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar8 = *(char *)(lVar16 + 0x148); + uVar24 = 0; + if (uVar10 != 0) { + uVar24 = 0xffff / uVar10; + } + if (cVar8 == '\0') goto LAB_0040c440; +LAB_0040c778: + local_58 = &local_8; + if (!bVar2) { + uVar23 = 0; + bVar5 = false; + wVar7 = local_28; +LAB_0040c78c: + local_28 = wVar7; + uVar21 = (ushort)uVar23; + if ((*(char *)(lVar16 + 0x20) == '\0') || (wVar13 != *(wchar_t *)(lVar16 + 0x4c))) { + if ((wVar13 == *(wchar_t *)(lVar16 + 0x48)) || + (pwVar18 = wmemchr((wchar_t *)(lVar16 + 0xf0),wVar13,__n), pwVar18 == (wchar_t *)0x0)) + goto LAB_0040c6a4; + iVar12 = (int)((long)pwVar18 - (lVar16 + 0xf0) >> 2); + if (0xf < iVar12) { + iVar12 = iVar12 + -6; + } + if (uVar23 <= uVar24) { + iVar11 = iVar11 + 1; + bVar5 = (bool)(bVar5 | 0xffff - iVar12 < (int)(uVar23 * uVar10 & 0xffff)); + uVar23 = (uVar23 * uVar10 & 0xffff) + iVar12 & 0xffff; + goto LAB_0040c804; + } + bVar5 = true; + if (local_30 != (long *)0x0) goto LAB_0040c80c; +LAB_0040c918: + uVar21 = (ushort)uVar23; + if (local_40 == (long *)0x0) goto LAB_0040c5d8; + cVar20 = cVar8; +joined_r0x0040c930: + uVar21 = (ushort)uVar23; + cVar19 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar12 = *(int *)local_40[2]; + } + else { + iVar12 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar12 == -1) { + local_40 = (long *)0x0; + cVar19 = cVar8; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar12); + cVar19 = '\0'; + } + } + if (cVar19 == cVar20) goto LAB_0040c5d8; + } + else { + if (iVar11 == 0) { + bVar3 = true; + goto LAB_0040c6a8; + } + FUN_004116e0(local_58,iVar11); + iVar11 = 0; +LAB_0040c804: + if (local_30 == (long *)0x0) goto LAB_0040c918; +LAB_0040c80c: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040c918; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040c918; + } + cVar20 = '\0'; + local_28 = wVar13; + if (local_40 != (long *)0x0) { + goto joined_r0x0040c930; + } + } + wVar7 = local_28; + wVar13 = L'\xffffffff'; + if ((local_30 != (long *)0x0) && (wVar13 = local_28, local_28 == L'\xffffffff')) { + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + wVar7 = wVar13; + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + wVar7 = local_28; + } + } + goto LAB_0040c78c; + } + uVar21 = 0; + bVar5 = false; + bVar3 = false; + } + else { +LAB_0040c408: + __n = (ulong)(int)uVar10; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 != '\0') goto LAB_0040c754; +LAB_0040c428: + cVar8 = *(char *)(lVar16 + 0x148); + uVar24 = 0; + if (uVar10 != 0) { + uVar24 = 0xffff / uVar10; + } + if (cVar8 != '\0') goto LAB_0040c778; +LAB_0040c440: + uVar23 = 0; + uVar21 = 0; + bVar5 = false; + if (!bVar2) { +LAB_0040c45c: + if (10 < __n) goto LAB_0040c530; +LAB_0040c464: + uVar21 = (ushort)uVar23; + if ((0x2f < (uint)wVar13) && ((uint)wVar13 < (uint)((int)__n + L'0'))) { + uVar15 = wVar13 + L'\xffffffd0'; +LAB_0040c47c: + if (uVar23 <= uVar24) goto LAB_0040c560; +LAB_0040c484: + bVar5 = true; + if (local_30 == (long *)0x0) goto LAB_0040c590; +LAB_0040c490: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040c590; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040c590; + } + iVar12 = 0; + local_28 = wVar13; + if (local_40 == (long *)0x0) goto LAB_0040c4f0; + iVar14 = 0; + if ((int)local_38 == -1) goto LAB_0040c5ac; +LAB_0040c4e8: + do { + uVar21 = (ushort)uVar23; + if (iVar14 == iVar12) goto LAB_0040c5d8; +LAB_0040c4f0: + while( true ) { + wVar13 = L'\xffffffff'; + if ((local_30 == (long *)0x0) || (wVar13 = local_28, local_28 != L'\xffffffff')) + goto LAB_0040c45c; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040c45c; + } + local_28 = wVar13; + if (__n < 0xb) goto LAB_0040c464; +LAB_0040c530: + uVar21 = (ushort)uVar23; + uVar15 = wVar13 + L'\xffffffd0'; + if (uVar15 < 10) goto LAB_0040c47c; + if ((uint)(wVar13 + L'\xffffff9f') < 6) { + uVar15 = wVar13 + L'\xffffffa9'; + goto LAB_0040c47c; + } + if (5 < (uint)(wVar13 + L'\xffffffbf')) goto LAB_0040c6a4; + uVar15 = wVar13 + L'\xffffffc9'; + if (uVar24 < uVar23) goto LAB_0040c484; +LAB_0040c560: + uVar1 = uVar23 * uVar10; + iVar11 = iVar11 + 1; + uVar22 = uVar1 & 0xffff; + uVar23 = uVar22 + uVar15 & 0xffff; + bVar5 = (bool)(bVar5 | ((uVar1 & 0xffff) != 0xffff - uVar15 && + (int)(0xffff - uVar15) <= (int)uVar22)); + if (local_30 != (long *)0x0) goto LAB_0040c490; +LAB_0040c590: + uVar21 = (ushort)uVar23; + if (local_40 == (long *)0x0) goto LAB_0040c5d8; + iVar12 = 1; + iVar14 = 0; + if ((int)local_38 != -1) goto LAB_0040c4e8; +LAB_0040c5ac: + uVar21 = (ushort)uVar23; + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar14 = *(int *)local_40[2]; + } + else { + iVar14 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar14 == -1) break; + local_38 = CONCAT44(local_38._4_4_,iVar14); + if (iVar12 == 0) goto LAB_0040c5d8; + } + local_40 = (long *)0x0; + iVar14 = 1; + } while( true ); + } + } +LAB_0040c6a4: + bVar3 = false; + } +LAB_0040c6a8: + lVar17 = *(long *)(local_8 + -0x18); +joined_r0x0040c5e8: + if (lVar17 == 0) { + if ((iVar11 == 0) <= bVar6) { +LAB_0040c634: + if (!bVar3) { + if (bVar5) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = uVar9 + (uVar21 ^ -uVar9); + } + goto LAB_0040c654; + } + } + } + else { + local_58 = &local_8; + FUN_004116e0(local_58,iVar11); + cVar8 = FUN_003ee0cc(*(undefined8 *)(lVar16 + 0x10),*(undefined8 *)(lVar16 + 0x18),local_58); + if (cVar8 == '\0') { + *param_7 = 4; + } + if (((iVar11 == 0) <= bVar6) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_0040c634; + } + *param_8 = 0; + *param_7 = 4; +LAB_0040c654: + if (bVar2) { + *param_7 = *param_7 | 2; + } + auVar4._8_4_ = local_28; + auVar4._0_8_ = local_30; + auVar4._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003ff25c(local_8 + -0x18,auStack_10); + } + return auVar4; +LAB_0040cad0: + cVar8 = *(char *)(lVar16 + 0x20); + bVar2 = false; + goto joined_r0x0040c730; +LAB_0040c5d8: + bVar3 = false; + bVar2 = true; + lVar17 = *(long *)(local_8 + -0x18); + goto joined_r0x0040c5e8; +} + + +================================================================== + +### FUNC 0040cb08 (20 bytes) name=FUN_0040cb08 + +void FUN_0040cb08(void) + +{ + FUN_0040c1ec(); + return; +} + + +================================================================== + +### FUNC 0040cb1c (2268 bytes) name=FUN_0040cb1c + +undefined1 [16] +FUN_0040cb1c(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,int *param_8) + +{ + uint uVar1; + bool bVar2; + bool bVar3; + undefined1 auVar4 [16]; + bool bVar5; + bool bVar6; + wchar_t wVar7; + char cVar8; + uint uVar9; + int iVar10; + int iVar11; + wchar_t wVar12; + int iVar13; + uint uVar14; + long lVar15; + long lVar16; + wchar_t *pwVar17; + char cVar18; + char cVar19; + uint uVar20; + ulong __n; + uint uVar21; + uint local_6c; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + wchar_t local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (wchar_t)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar15 = FUN_004063a0(auStack_18,param_6 + 0xd0); + uVar21 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar21 == 0x40) { + uVar9 = 8; + } + else { + uVar9 = 0x10; + if (uVar21 != 8) { + uVar9 = 10; + } + } + iVar10 = FUN_00406484(&local_30); + iVar11 = FUN_00406484(&local_40); + if ((iVar10 == -1) == (iVar11 == -1)) { + wVar12 = L'\0'; + local_6c = 0; + } + else { + wVar12 = FUN_00406484(&local_30); + local_6c = (uint)(wVar12 == *(wchar_t *)(lVar15 + 0xe0)); + if ((local_6c == 0) && (wVar12 != *(wchar_t *)(lVar15 + 0xe4))) { + cVar8 = *(char *)(lVar15 + 0x20); +LAB_0040cc50: + iVar10 = 0; + bVar6 = false; + do { + if (((cVar8 != '\0') && (*(wchar_t *)(lVar15 + 0x4c) == wVar12)) || + (*(wchar_t *)(lVar15 + 0x48) == wVar12)) { +LAB_0040d390: + bVar2 = false; + goto joined_r0x0040d050; + } + if (*(wchar_t *)(lVar15 + 0xf0) == wVar12) { + if ((uVar9 == 10) < bVar6) goto LAB_0040cc8c; + iVar10 = iVar10 + 1; + if ((uVar9 == 8) || (bVar6 = true, uVar21 == 0)) { + iVar10 = 0; + bVar6 = true; + uVar9 = 8; + } + } + else { + if (!bVar6) goto LAB_0040d390; +LAB_0040cc8c: + if ((*(wchar_t *)(lVar15 + 0xe8) != wVar12) && (*(wchar_t *)(lVar15 + 0xec) != wVar12)) { + bVar6 = true; + bVar2 = false; + goto joined_r0x0040d050; + } + if ((uVar9 != 0x10) && (uVar21 != 0)) { + bVar2 = false; + bVar6 = true; + goto LAB_0040cd38; + } + iVar10 = 0; + bVar6 = false; + uVar9 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = L'\xffffffff'; + } + iVar11 = FUN_00406484(&local_30); + iVar13 = FUN_00406484(&local_40); + if ((iVar11 == -1) == (iVar13 == -1)) { + cVar8 = *(char *)(lVar15 + 0x20); + bVar2 = true; + goto joined_r0x0040d050; + } + wVar12 = FUN_00406484(&local_30); + if (!bVar6) goto LAB_0040d3ec; + cVar8 = *(char *)(lVar15 + 0x20); + } while( true ); + } + cVar8 = *(char *)(lVar15 + 0x20); + if ((cVar8 != '\0') && (wVar12 == *(wchar_t *)(lVar15 + 0x4c))) { + cVar8 = '\x01'; + goto LAB_0040cc50; + } + if (wVar12 == *(wchar_t *)(lVar15 + 0x48)) goto LAB_0040cc50; + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = L'\xffffffff'; + } + iVar10 = FUN_00406484(&local_30); + iVar11 = FUN_00406484(&local_40); + if ((iVar10 == -1) != (iVar11 == -1)) { + wVar12 = FUN_00406484(&local_30); + cVar8 = *(char *)(lVar15 + 0x20); + goto LAB_0040cc50; + } + } + cVar8 = *(char *)(lVar15 + 0x20); + bVar2 = true; + iVar10 = 0; + bVar6 = false; +joined_r0x0040d050: + if (uVar9 == 0x10) { + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 == '\0') goto LAB_0040cd58; +LAB_0040d074: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar8 = *(char *)(lVar15 + 0x148); + uVar21 = 0; + if (uVar9 != 0) { + uVar21 = 0xffffffff / uVar9; + } + if (cVar8 == '\0') goto LAB_0040cd70; +LAB_0040d098: + local_58 = &local_8; + if (!bVar2) { + uVar20 = 0; + bVar5 = false; + wVar7 = local_28; +LAB_0040d0ac: + local_28 = wVar7; + if ((*(char *)(lVar15 + 0x20) == '\0') || (wVar12 != *(wchar_t *)(lVar15 + 0x4c))) { + if ((wVar12 == *(wchar_t *)(lVar15 + 0x48)) || + (pwVar17 = wmemchr((wchar_t *)(lVar15 + 0xf0),wVar12,__n), pwVar17 == (wchar_t *)0x0)) + goto LAB_0040cfc4; + uVar14 = (uint)((long)pwVar17 - (lVar15 + 0xf0) >> 2); + if (0xf < (int)uVar14) { + uVar14 = uVar14 - 6; + } + if (uVar20 <= uVar21) { + uVar1 = uVar20 * uVar9; + iVar10 = iVar10 + 1; + uVar20 = uVar14 + uVar1; + bVar5 = (bool)(bVar5 | ~uVar14 < uVar1); + goto LAB_0040d118; + } + bVar5 = true; + if (local_30 != (long *)0x0) goto LAB_0040d120; +LAB_0040d22c: + if (local_40 == (long *)0x0) goto LAB_0040cef8; + cVar19 = cVar8; +joined_r0x0040d244: + cVar18 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar11 = *(int *)local_40[2]; + } + else { + iVar11 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar11 == -1) { + local_40 = (long *)0x0; + cVar18 = cVar8; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar11); + cVar18 = '\0'; + } + } + if (cVar18 == cVar19) goto LAB_0040cef8; + } + else { + if (iVar10 == 0) { + bVar3 = true; + goto LAB_0040cfc8; + } + FUN_004116e0(local_58,iVar10); + iVar10 = 0; +LAB_0040d118: + if (local_30 == (long *)0x0) goto LAB_0040d22c; +LAB_0040d120: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040d22c; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar12 = *(wchar_t *)local_30[2]; + } + else { + wVar12 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar12 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040d22c; + } + cVar19 = '\0'; + local_28 = wVar12; + if (local_40 != (long *)0x0) { + goto joined_r0x0040d244; + } + } + wVar7 = local_28; + wVar12 = L'\xffffffff'; + if ((local_30 != (long *)0x0) && (wVar12 = local_28, local_28 == L'\xffffffff')) { + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar12 = *(wchar_t *)local_30[2]; + } + else { + wVar12 = (**(code **)(*local_30 + 0x48))(); + } + wVar7 = wVar12; + if (wVar12 == L'\xffffffff') { + local_30 = (long *)0x0; + wVar7 = local_28; + } + } + goto LAB_0040d0ac; + } + uVar20 = 0; + bVar5 = false; + bVar3 = false; + } + else { +LAB_0040cd38: + __n = (ulong)(int)uVar9; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 != '\0') goto LAB_0040d074; +LAB_0040cd58: + cVar8 = *(char *)(lVar15 + 0x148); + uVar21 = 0; + if (uVar9 != 0) { + uVar21 = 0xffffffff / uVar9; + } + if (cVar8 != '\0') goto LAB_0040d098; +LAB_0040cd70: + uVar20 = 0; + bVar5 = false; + if (!bVar2) { +LAB_0040cd88: + if (10 < __n) goto LAB_0040ce5c; +LAB_0040cd90: + if ((0x2f < (uint)wVar12) && ((uint)wVar12 < (uint)((int)__n + L'0'))) { + uVar14 = wVar12 + L'\xffffffd0'; +LAB_0040cda8: + if (uVar20 <= uVar21) goto LAB_0040ce8c; +LAB_0040cdb0: + bVar5 = true; + if (local_30 == (long *)0x0) goto LAB_0040ceb0; +LAB_0040cdbc: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040ceb0; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar12 = *(wchar_t *)local_30[2]; + } + else { + wVar12 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar12 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040ceb0; + } + iVar11 = 0; + local_28 = wVar12; + if (local_40 == (long *)0x0) goto LAB_0040ce1c; + iVar13 = 0; + if ((int)local_38 == -1) goto LAB_0040cecc; +LAB_0040ce14: + do { + if (iVar13 == iVar11) goto LAB_0040cef8; +LAB_0040ce1c: + while( true ) { + wVar12 = L'\xffffffff'; + if ((local_30 == (long *)0x0) || (wVar12 = local_28, local_28 != L'\xffffffff')) + goto LAB_0040cd88; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar12 = *(wchar_t *)local_30[2]; + } + else { + wVar12 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar12 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040cd88; + } + local_28 = wVar12; + if (__n < 0xb) goto LAB_0040cd90; +LAB_0040ce5c: + uVar14 = wVar12 + L'\xffffffd0'; + if (uVar14 < 10) goto LAB_0040cda8; + if ((uint)(wVar12 + L'\xffffff9f') < 6) { + uVar14 = wVar12 + L'\xffffffa9'; + goto LAB_0040cda8; + } + if (5 < (uint)(wVar12 + L'\xffffffbf')) goto LAB_0040cfc4; + uVar14 = wVar12 + L'\xffffffc9'; + if (uVar21 < uVar20) goto LAB_0040cdb0; +LAB_0040ce8c: + uVar1 = uVar20 * uVar9; + iVar10 = iVar10 + 1; + uVar20 = uVar14 + uVar1; + bVar5 = (bool)(bVar5 | ~uVar14 < uVar1); + if (local_30 != (long *)0x0) goto LAB_0040cdbc; +LAB_0040ceb0: + if (local_40 == (long *)0x0) goto LAB_0040cef8; + iVar11 = 1; + iVar13 = 0; + if ((int)local_38 != -1) goto LAB_0040ce14; +LAB_0040cecc: + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar13 = *(int *)local_40[2]; + } + else { + iVar13 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar13 == -1) break; + local_38 = CONCAT44(local_38._4_4_,iVar13); + if (iVar11 == 0) goto LAB_0040cef8; + } + local_40 = (long *)0x0; + iVar13 = 1; + } while( true ); + } + } +LAB_0040cfc4: + bVar3 = false; + } +LAB_0040cfc8: + lVar16 = *(long *)(local_8 + -0x18); +joined_r0x0040cf08: + if (lVar16 == 0) { + if ((iVar10 == 0) <= bVar6) { +LAB_0040cf54: + if (!bVar3) { + if (bVar5) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = (uVar20 ^ -local_6c) + local_6c; + } + goto LAB_0040cf74; + } + } + } + else { + local_58 = &local_8; + FUN_004116e0(local_58,iVar10); + cVar8 = FUN_003ee0cc(*(undefined8 *)(lVar15 + 0x10),*(undefined8 *)(lVar15 + 0x18),local_58); + if (cVar8 == '\0') { + *param_7 = 4; + } + if (((iVar10 == 0) <= bVar6) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_0040cf54; + } + *param_8 = 0; + *param_7 = 4; +LAB_0040cf74: + if (bVar2) { + *param_7 = *param_7 | 2; + } + auVar4._8_4_ = local_28; + auVar4._0_8_ = local_30; + auVar4._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003ff25c(local_8 + -0x18,auStack_10); + } + return auVar4; +LAB_0040d3ec: + cVar8 = *(char *)(lVar15 + 0x20); + bVar2 = false; + goto joined_r0x0040d050; +LAB_0040cef8: + bVar3 = false; + bVar2 = true; + lVar16 = *(long *)(local_8 + -0x18); + goto joined_r0x0040cf08; +} + + +================================================================== + +### FUNC 0040d424 (20 bytes) name=FUN_0040d424 + +void FUN_0040d424(void) + +{ + FUN_0040cb1c(); + return; +} + + +================================================================== + +### FUNC 0040d438 (2268 bytes) name=FUN_0040d438 + +undefined1 [16] +FUN_0040d438(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long *param_8) + +{ + bool bVar1; + bool bVar2; + undefined1 auVar3 [16]; + bool bVar4; + bool bVar5; + wchar_t wVar6; + bool bVar7; + char cVar8; + int iVar9; + int iVar10; + wchar_t wVar11; + int iVar12; + uint uVar13; + long lVar14; + long lVar15; + wchar_t *pwVar16; + char cVar17; + ulong uVar18; + char cVar19; + ulong uVar20; + ulong __n; + ulong uVar21; + ulong uVar22; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + wchar_t local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (wchar_t)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar14 = FUN_004063a0(auStack_18,param_6 + 0xd0); + uVar13 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar13 == 0x40) { + uVar22 = 8; + } + else { + uVar22 = 0x10; + if (uVar13 != 8) { + uVar22 = 10; + } + } + iVar9 = FUN_00406484(&local_30); + iVar10 = FUN_00406484(&local_40); + if ((iVar9 == -1) == (iVar10 == -1)) { + wVar11 = L'\0'; + bVar7 = false; + } + else { + wVar11 = FUN_00406484(&local_30); + bVar7 = wVar11 == *(wchar_t *)(lVar14 + 0xe0); + if ((!bVar7) && (wVar11 != *(wchar_t *)(lVar14 + 0xe4))) { + cVar8 = *(char *)(lVar14 + 0x20); +LAB_0040d56c: + iVar9 = 0; + bVar5 = false; + do { + if (((cVar8 != '\0') && (*(wchar_t *)(lVar14 + 0x4c) == wVar11)) || + (*(wchar_t *)(lVar14 + 0x48) == wVar11)) { +LAB_0040dcac: + bVar1 = false; + goto LAB_0040d64c; + } + iVar10 = (int)uVar22; + if (*(wchar_t *)(lVar14 + 0xf0) == wVar11) { + if ((iVar10 == 10) < bVar5) goto LAB_0040d5a8; + iVar9 = iVar9 + 1; + if ((iVar10 == 8) || (bVar5 = true, uVar13 == 0)) { + iVar9 = 0; + bVar5 = true; + uVar22 = 8; + } + } + else { + if (!bVar5) goto LAB_0040dcac; +LAB_0040d5a8: + if ((*(wchar_t *)(lVar14 + 0xe8) != wVar11) && (*(wchar_t *)(lVar14 + 0xec) != wVar11)) { + bVar5 = true; + bVar1 = false; + goto joined_r0x0040d970; + } + if ((iVar10 != 0x10) && (uVar13 != 0)) { + bVar1 = false; + bVar5 = true; + goto LAB_0040d654; + } + iVar9 = 0; + bVar5 = false; + uVar22 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = L'\xffffffff'; + } + iVar10 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar10 == -1) == (iVar12 == -1)) { + cVar8 = *(char *)(lVar14 + 0x20); + bVar1 = true; + goto LAB_0040d64c; + } + wVar11 = FUN_00406484(&local_30); + if (!bVar5) goto LAB_0040dd08; + cVar8 = *(char *)(lVar14 + 0x20); + } while( true ); + } + cVar8 = *(char *)(lVar14 + 0x20); + if ((cVar8 != '\0') && (wVar11 == *(wchar_t *)(lVar14 + 0x4c))) { + cVar8 = '\x01'; + goto LAB_0040d56c; + } + if (wVar11 == *(wchar_t *)(lVar14 + 0x48)) goto LAB_0040d56c; + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = L'\xffffffff'; + } + iVar9 = FUN_00406484(&local_30); + iVar10 = FUN_00406484(&local_40); + if ((iVar9 == -1) != (iVar10 == -1)) { + wVar11 = FUN_00406484(&local_30); + cVar8 = *(char *)(lVar14 + 0x20); + goto LAB_0040d56c; + } + } + cVar8 = *(char *)(lVar14 + 0x20); + bVar1 = true; + iVar9 = 0; + bVar5 = false; +LAB_0040d64c: + iVar10 = (int)uVar22; +joined_r0x0040d970: + if (iVar10 == 0x10) { + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 == '\0') goto LAB_0040d674; +LAB_0040d994: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar8 = *(char *)(lVar14 + 0x148); + uVar21 = 0; + if (uVar22 != 0) { + uVar21 = 0xffffffffffffffff / uVar22; + } + if (cVar8 == '\0') goto LAB_0040d68c; +LAB_0040d9b8: + local_58 = &local_8; + if (!bVar1) { + uVar20 = 0; + bVar4 = false; + wVar6 = local_28; +LAB_0040d9cc: + local_28 = wVar6; + if ((*(char *)(lVar14 + 0x20) == '\0') || (wVar11 != *(wchar_t *)(lVar14 + 0x4c))) { + if ((wVar11 == *(wchar_t *)(lVar14 + 0x48)) || + (pwVar16 = wmemchr((wchar_t *)(lVar14 + 0xf0),wVar11,__n), pwVar16 == (wchar_t *)0x0)) + goto LAB_0040d8e4; + iVar10 = (int)((long)pwVar16 - (lVar14 + 0xf0) >> 2); + if (0xf < iVar10) { + iVar10 = iVar10 + -6; + } + if (uVar20 <= uVar21) { + iVar9 = iVar9 + 1; + uVar18 = uVar20 * uVar22; + uVar20 = (long)iVar10 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)iVar10 < uVar18); + goto LAB_0040da3c; + } + bVar4 = true; + if (local_30 != (long *)0x0) goto LAB_0040da44; +LAB_0040db50: + if (local_40 == (long *)0x0) goto LAB_0040d818; + cVar19 = cVar8; +joined_r0x0040db68: + cVar17 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar10 = *(int *)local_40[2]; + } + else { + iVar10 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar10 == -1) { + local_40 = (long *)0x0; + cVar17 = cVar8; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar10); + cVar17 = '\0'; + } + } + if (cVar17 == cVar19) goto LAB_0040d818; + } + else { + if (iVar9 == 0) { + bVar2 = true; + goto LAB_0040d8e8; + } + FUN_004116e0(local_58,iVar9); + iVar9 = 0; +LAB_0040da3c: + if (local_30 == (long *)0x0) goto LAB_0040db50; +LAB_0040da44: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040db50; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040db50; + } + cVar19 = '\0'; + local_28 = wVar11; + if (local_40 != (long *)0x0) { + goto joined_r0x0040db68; + } + } + wVar6 = local_28; + wVar11 = L'\xffffffff'; + if ((local_30 != (long *)0x0) && (wVar11 = local_28, local_28 == L'\xffffffff')) { + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + wVar6 = wVar11; + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + wVar6 = local_28; + } + } + goto LAB_0040d9cc; + } + uVar20 = 0; + bVar4 = false; + bVar2 = false; + } + else { +LAB_0040d654: + __n = (ulong)(int)uVar22; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 != '\0') goto LAB_0040d994; +LAB_0040d674: + cVar8 = *(char *)(lVar14 + 0x148); + uVar21 = 0; + if (uVar22 != 0) { + uVar21 = 0xffffffffffffffff / uVar22; + } + if (cVar8 != '\0') goto LAB_0040d9b8; +LAB_0040d68c: + uVar20 = 0; + bVar4 = false; + if (!bVar1) { +LAB_0040d6a4: + if (10 < __n) goto LAB_0040d778; +LAB_0040d6ac: + if ((0x2f < (uint)wVar11) && ((uint)wVar11 < (uint)((int)__n + L'0'))) { + uVar13 = wVar11 + L'\xffffffd0'; +LAB_0040d6c4: + if (uVar20 <= uVar21) goto LAB_0040d7a8; +LAB_0040d6cc: + bVar4 = true; + if (local_30 == (long *)0x0) goto LAB_0040d7d0; +LAB_0040d6d8: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040d7d0; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040d7d0; + } + iVar10 = 0; + local_28 = wVar11; + if (local_40 == (long *)0x0) goto LAB_0040d738; + iVar12 = 0; + if ((int)local_38 == -1) goto LAB_0040d7ec; +LAB_0040d730: + do { + if (iVar12 == iVar10) goto LAB_0040d818; +LAB_0040d738: + while( true ) { + wVar11 = L'\xffffffff'; + if ((local_30 == (long *)0x0) || (wVar11 = local_28, local_28 != L'\xffffffff')) + goto LAB_0040d6a4; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040d6a4; + } + local_28 = wVar11; + if (__n < 0xb) goto LAB_0040d6ac; +LAB_0040d778: + uVar13 = wVar11 + L'\xffffffd0'; + if (uVar13 < 10) goto LAB_0040d6c4; + if ((uint)(wVar11 + L'\xffffff9f') < 6) { + uVar13 = wVar11 + L'\xffffffa9'; + goto LAB_0040d6c4; + } + if (5 < (uint)(wVar11 + L'\xffffffbf')) goto LAB_0040d8e4; + uVar13 = wVar11 + L'\xffffffc9'; + if (uVar21 < uVar20) goto LAB_0040d6cc; +LAB_0040d7a8: + iVar9 = iVar9 + 1; + uVar18 = uVar20 * uVar22; + uVar20 = (long)(int)uVar13 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)(int)uVar13 < uVar18); + if (local_30 != (long *)0x0) goto LAB_0040d6d8; +LAB_0040d7d0: + if (local_40 == (long *)0x0) goto LAB_0040d818; + iVar10 = 1; + iVar12 = 0; + if ((int)local_38 != -1) goto LAB_0040d730; +LAB_0040d7ec: + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar12 = *(int *)local_40[2]; + } + else { + iVar12 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar12 == -1) break; + local_38 = CONCAT44(local_38._4_4_,iVar12); + if (iVar10 == 0) goto LAB_0040d818; + } + local_40 = (long *)0x0; + iVar12 = 1; + } while( true ); + } + } +LAB_0040d8e4: + bVar2 = false; + } +LAB_0040d8e8: + lVar15 = *(long *)(local_8 + -0x18); +joined_r0x0040d828: + if (lVar15 == 0) { + if ((iVar9 == 0) <= bVar5) { +LAB_0040d874: + if (!bVar2) { + if (bVar4) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = (uVar20 ^ -(ulong)bVar7) + (ulong)bVar7; + } + goto LAB_0040d894; + } + } + } + else { + local_58 = &local_8; + FUN_004116e0(local_58,iVar9); + cVar8 = FUN_003ee0cc(*(undefined8 *)(lVar14 + 0x10),*(undefined8 *)(lVar14 + 0x18),local_58); + if (cVar8 == '\0') { + *param_7 = 4; + } + if (((iVar9 == 0) <= bVar5) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_0040d874; + } + *param_8 = 0; + *param_7 = 4; +LAB_0040d894: + if (bVar1) { + *param_7 = *param_7 | 2; + } + auVar3._8_4_ = local_28; + auVar3._0_8_ = local_30; + auVar3._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003ff25c(local_8 + -0x18,auStack_10); + } + return auVar3; +LAB_0040dd08: + cVar8 = *(char *)(lVar14 + 0x20); + bVar1 = false; + goto LAB_0040d64c; +LAB_0040d818: + bVar2 = false; + bVar1 = true; + lVar15 = *(long *)(local_8 + -0x18); + goto joined_r0x0040d828; +} + + +================================================================== + +### FUNC 0040dd40 (20 bytes) name=FUN_0040dd40 + +void FUN_0040dd40(void) + +{ + FUN_0040d438(); + return; +} + + +================================================================== + +### FUNC 0040dd54 (108 bytes) name=FUN_0040dd54 + +void FUN_0040dd54(void) + +{ + uint uVar1; + long in_x5; + undefined8 *in_x7; + undefined8 local_8; + + uVar1 = *(uint *)(in_x5 + 0x18); + *(uint *)(in_x5 + 0x18) = uVar1 & 0xffffffb5 | 8; + FUN_0040d438(); + *(uint *)(in_x5 + 0x18) = uVar1; + *in_x7 = local_8; + return; +} + + +================================================================== + +### FUNC 0040ddc0 (2388 bytes) name=FUN_0040ddc0 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined1 [16] +FUN_0040ddc0(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,ulong *param_8) + +{ + ulong uVar1; + ulong uVar2; + bool bVar3; + bool bVar4; + undefined1 auVar5 [16]; + bool bVar6; + bool bVar7; + wchar_t wVar8; + bool bVar9; + char cVar10; + int iVar11; + int iVar12; + wchar_t wVar13; + int iVar14; + uint uVar15; + int iVar16; + long lVar17; + long lVar18; + wchar_t *pwVar19; + char cVar20; + ulong uVar21; + char cVar22; + ulong uVar23; + ulong uVar24; + ulong uVar25; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + wchar_t local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (wchar_t)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar17 = FUN_004063a0(auStack_18,param_6 + 0xd0); + uVar15 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar15 == 0x40) { + iVar16 = 8; + } + else { + iVar16 = 0x10; + if (uVar15 != 8) { + iVar16 = 10; + } + } + iVar11 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar11 == -1) == (iVar12 == -1)) { + wVar13 = L'\0'; + bVar9 = false; + } + else { + wVar13 = FUN_00406484(&local_30); + bVar9 = wVar13 == *(wchar_t *)(lVar17 + 0xe0); + if ((!bVar9) && (wVar13 != *(wchar_t *)(lVar17 + 0xe4))) { + cVar10 = *(char *)(lVar17 + 0x20); +LAB_0040def4: + iVar11 = 0; + bVar7 = false; + do { + if (((cVar10 != '\0') && (*(wchar_t *)(lVar17 + 0x4c) == wVar13)) || + (*(wchar_t *)(lVar17 + 0x48) == wVar13)) { +LAB_0040e6ac: + bVar3 = false; + goto joined_r0x0040e324; + } + if (*(wchar_t *)(lVar17 + 0xf0) == wVar13) { + if ((iVar16 == 10) < bVar7) goto LAB_0040df30; + iVar11 = iVar11 + 1; + if ((iVar16 == 8) || (bVar7 = true, uVar15 == 0)) { + iVar11 = 0; + bVar7 = true; + iVar16 = 8; + } + } + else { + if (!bVar7) goto LAB_0040e6ac; +LAB_0040df30: + if ((*(wchar_t *)(lVar17 + 0xe8) != wVar13) && (*(wchar_t *)(lVar17 + 0xec) != wVar13)) { + bVar7 = true; + bVar3 = false; + goto joined_r0x0040e324; + } + if ((iVar16 != 0x10) && (uVar15 != 0)) { + bVar3 = false; + bVar7 = true; + goto LAB_0040dfdc; + } + iVar11 = 0; + bVar7 = false; + iVar16 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = L'\xffffffff'; + } + iVar12 = FUN_00406484(&local_30); + iVar14 = FUN_00406484(&local_40); + if ((iVar12 == -1) == (iVar14 == -1)) { + cVar10 = *(char *)(lVar17 + 0x20); + bVar3 = true; + goto joined_r0x0040e324; + } + wVar13 = FUN_00406484(&local_30); + if (!bVar7) goto LAB_0040e708; + cVar10 = *(char *)(lVar17 + 0x20); + } while( true ); + } + cVar10 = *(char *)(lVar17 + 0x20); + if ((cVar10 != '\0') && (wVar13 == *(wchar_t *)(lVar17 + 0x4c))) { + cVar10 = '\x01'; + goto LAB_0040def4; + } + if (wVar13 == *(wchar_t *)(lVar17 + 0x48)) goto LAB_0040def4; + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = L'\xffffffff'; + } + iVar11 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar11 == -1) != (iVar12 == -1)) { + wVar13 = FUN_00406484(&local_30); + cVar10 = *(char *)(lVar17 + 0x20); + goto LAB_0040def4; + } + } + cVar10 = *(char *)(lVar17 + 0x20); + bVar3 = true; + iVar11 = 0; + bVar7 = false; +joined_r0x0040e324: + if (iVar16 == 0x10) { + uVar24 = 0x16; + } + else { +LAB_0040dfdc: + uVar24 = (ulong)iVar16; + } + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar10 != '\0') { + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + } + local_58 = &local_8; + uVar25 = (ulong)iVar16; + cVar10 = *(char *)(lVar17 + 0x148); + uVar1 = 0x7fffffffffffffff; + if (bVar9) { + uVar1 = 0x8000000000000000; + } + uVar2 = 0; + if (uVar25 != 0) { + uVar2 = uVar1 / uVar25; + } + if (cVar10 == '\0') { + uVar23 = 0; + bVar6 = false; + if (!bVar3) { +LAB_0040e044: + if (10 < uVar24) goto LAB_0040e118; +LAB_0040e04c: + if ((0x2f < (uint)wVar13) && ((uint)wVar13 < (uint)((int)uVar24 + L'0'))) { + uVar15 = wVar13 + L'\xffffffd0'; +LAB_0040e064: + if (uVar23 <= uVar2) goto LAB_0040e148; +LAB_0040e06c: + bVar6 = true; + if (local_30 == (long *)0x0) goto LAB_0040e174; +LAB_0040e078: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040e174; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040e174; + } + iVar16 = 0; + local_28 = wVar13; + if (local_40 == (long *)0x0) goto LAB_0040e0d8; + iVar12 = 0; + if ((int)local_38 == -1) goto LAB_0040e190; +LAB_0040e0d0: + do { + if (iVar12 == iVar16) goto LAB_0040e1bc; +LAB_0040e0d8: + while( true ) { + wVar13 = L'\xffffffff'; + if ((local_30 == (long *)0x0) || (wVar13 = local_28, local_28 != L'\xffffffff')) + goto LAB_0040e044; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040e044; + } + local_28 = wVar13; + if (uVar24 < 0xb) goto LAB_0040e04c; +LAB_0040e118: + uVar15 = wVar13 + L'\xffffffd0'; + if (uVar15 < 10) goto LAB_0040e064; + if ((uint)(wVar13 + L'\xffffff9f') < 6) { + uVar15 = wVar13 + L'\xffffffa9'; + goto LAB_0040e064; + } + if (5 < (uint)(wVar13 + L'\xffffffbf')) goto LAB_0040e27c; + uVar15 = wVar13 + L'\xffffffc9'; + if (uVar2 < uVar23) goto LAB_0040e06c; +LAB_0040e148: + uVar21 = uVar23 * uVar25; + iVar11 = iVar11 + 1; + uVar23 = (long)(int)uVar15 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)(int)uVar15 < uVar21); + if (local_30 != (long *)0x0) goto LAB_0040e078; +LAB_0040e174: + if (local_40 == (long *)0x0) goto LAB_0040e1bc; + iVar16 = 1; + iVar12 = 0; + if ((int)local_38 != -1) goto LAB_0040e0d0; +LAB_0040e190: + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar12 = *(int *)local_40[2]; + } + else { + iVar12 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar12 == -1) break; + local_38 = CONCAT44(local_38._4_4_,iVar12); + if (iVar16 == 0) goto LAB_0040e1bc; + } + local_40 = (long *)0x0; + iVar12 = 1; + } while( true ); + } + } +LAB_0040e27c: + bVar4 = false; + } + else { + if (!bVar3) { + uVar23 = 0; + bVar6 = false; + wVar8 = local_28; +LAB_0040e368: + local_28 = wVar8; + if ((*(char *)(lVar17 + 0x20) == '\0') || (wVar13 != *(wchar_t *)(lVar17 + 0x4c))) { + if ((wVar13 == *(wchar_t *)(lVar17 + 0x48)) || + (pwVar19 = wmemchr((wchar_t *)(lVar17 + 0xf0),wVar13,uVar24), pwVar19 == (wchar_t *)0x0)) + goto LAB_0040e27c; + iVar16 = (int)((long)pwVar19 - (lVar17 + 0xf0) >> 2); + if (0xf < iVar16) { + iVar16 = iVar16 + -6; + } + if (uVar23 <= uVar2) { + uVar21 = uVar23 * uVar25; + iVar11 = iVar11 + 1; + uVar23 = (long)iVar16 + uVar21; + bVar6 = (bool)(bVar6 | uVar1 - (long)iVar16 < uVar21); + goto LAB_0040e3dc; + } + bVar6 = true; + if (local_30 != (long *)0x0) goto LAB_0040e3e4; +LAB_0040e4ec: + if (local_40 == (long *)0x0) goto LAB_0040e1bc; + cVar22 = cVar10; +joined_r0x0040e504: + cVar20 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar16 = *(int *)local_40[2]; + } + else { + iVar16 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar16 == -1) { + local_40 = (long *)0x0; + cVar20 = cVar10; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar16); + cVar20 = '\0'; + } + } + if (cVar20 == cVar22) goto LAB_0040e1bc; + } + else { + if (iVar11 == 0) { + bVar4 = true; + goto LAB_0040e280; + } + lVar18 = *(long *)(local_8 + -0x18); + uVar21 = lVar18 + 1; + if ((*(ulong *)(local_8 + -0x10) < uVar21) || (0 < *(int *)(local_8 + -8))) { + FUN_00410ed8(local_58,uVar21); + lVar18 = *(long *)(local_8 + -0x18); + } + local_8[lVar18] = (char)iVar11; + iVar11 = 0; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + *(undefined4 *)(local_8 + -8) = 0; + *(ulong *)(local_8 + -0x18) = uVar21; + local_8[uVar21] = 0; + } +LAB_0040e3dc: + if (local_30 == (long *)0x0) goto LAB_0040e4ec; +LAB_0040e3e4: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040e4ec; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040e4ec; + } + cVar22 = '\0'; + local_28 = wVar13; + if (local_40 != (long *)0x0) { + goto joined_r0x0040e504; + } + } + wVar8 = local_28; + wVar13 = L'\xffffffff'; + if ((local_30 != (long *)0x0) && (wVar13 = local_28, local_28 == L'\xffffffff')) { + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar13 = *(wchar_t *)local_30[2]; + } + else { + wVar13 = (**(code **)(*local_30 + 0x48))(); + } + wVar8 = wVar13; + if (wVar13 == L'\xffffffff') { + local_30 = (long *)0x0; + wVar8 = local_28; + } + } + goto LAB_0040e368; + } + uVar23 = 0; + bVar6 = false; + bVar4 = false; + } +LAB_0040e280: + lVar18 = *(long *)(local_8 + -0x18); +joined_r0x0040e1cc: + if (lVar18 == 0) { + if ((iVar11 == 0) <= bVar7) { +LAB_0040e2a0: + if (!bVar4) { + if (bVar6) { + uVar24 = 0x7fffffffffffffff; + if (bVar9) { + uVar24 = 0x8000000000000000; + } + *param_8 = uVar24; + *param_7 = 4; + } + else { + uVar24 = -uVar23; + if (!bVar9) { + uVar24 = uVar23; + } + *param_8 = uVar24; + } + goto LAB_0040e22c; + } + } + } + else { + FUN_004116e0(local_58,iVar11); + cVar10 = FUN_003ee0cc(*(undefined8 *)(lVar17 + 0x10),*(undefined8 *)(lVar17 + 0x18),local_58); + if (cVar10 == '\0') { + *param_7 = 4; + } + if (((iVar11 == 0) <= bVar7) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_0040e2a0; + } + *param_8 = 0; + *param_7 = 4; +LAB_0040e22c: + if (bVar3) { + *param_7 = *param_7 | 2; + } + auVar5._8_4_ = local_28; + auVar5._0_8_ = local_30; + auVar5._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003ff25c(local_8 + -0x18,auStack_10); + } + return auVar5; +LAB_0040e708: + cVar10 = *(char *)(lVar17 + 0x20); + bVar3 = false; + goto joined_r0x0040e324; +LAB_0040e1bc: + bVar4 = false; + bVar3 = true; + lVar18 = *(long *)(local_8 + -0x18); + goto joined_r0x0040e1cc; +} + + +================================================================== + +### FUNC 0040e740 (20 bytes) name=FUN_0040e740 + +void FUN_0040e740(void) + +{ + FUN_0040ddc0(); + return; +} + + +================================================================== + +### FUNC 0040e754 (2268 bytes) name=FUN_0040e754 + +undefined1 [16] +FUN_0040e754(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,undefined8 param_5, + long param_6,uint *param_7,long *param_8) + +{ + bool bVar1; + bool bVar2; + undefined1 auVar3 [16]; + bool bVar4; + bool bVar5; + wchar_t wVar6; + bool bVar7; + char cVar8; + int iVar9; + int iVar10; + wchar_t wVar11; + int iVar12; + uint uVar13; + long lVar14; + long lVar15; + wchar_t *pwVar16; + char cVar17; + ulong uVar18; + char cVar19; + ulong uVar20; + ulong __n; + ulong uVar21; + ulong uVar22; + undefined **local_58; + long *local_40; + undefined8 local_38; + long *local_30; + wchar_t local_28; + undefined4 uStack_24; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined *local_8; + + local_28 = (wchar_t)param_3; + uStack_24 = (undefined4)((ulong)param_3 >> 0x20); + local_40 = param_4; + local_38 = param_5; + local_30 = param_2; + lVar14 = FUN_004063a0(auStack_18,param_6 + 0xd0); + uVar13 = *(uint *)(param_6 + 0x18) & 0x4a; + if (uVar13 == 0x40) { + uVar22 = 8; + } + else { + uVar22 = 0x10; + if (uVar13 != 8) { + uVar22 = 10; + } + } + iVar9 = FUN_00406484(&local_30); + iVar10 = FUN_00406484(&local_40); + if ((iVar9 == -1) == (iVar10 == -1)) { + wVar11 = L'\0'; + bVar7 = false; + } + else { + wVar11 = FUN_00406484(&local_30); + bVar7 = wVar11 == *(wchar_t *)(lVar14 + 0xe0); + if ((!bVar7) && (wVar11 != *(wchar_t *)(lVar14 + 0xe4))) { + cVar8 = *(char *)(lVar14 + 0x20); +LAB_0040e888: + iVar9 = 0; + bVar5 = false; + do { + if (((cVar8 != '\0') && (*(wchar_t *)(lVar14 + 0x4c) == wVar11)) || + (*(wchar_t *)(lVar14 + 0x48) == wVar11)) { +LAB_0040efc8: + bVar1 = false; + goto LAB_0040e968; + } + iVar10 = (int)uVar22; + if (*(wchar_t *)(lVar14 + 0xf0) == wVar11) { + if ((iVar10 == 10) < bVar5) goto LAB_0040e8c4; + iVar9 = iVar9 + 1; + if ((iVar10 == 8) || (bVar5 = true, uVar13 == 0)) { + iVar9 = 0; + bVar5 = true; + uVar22 = 8; + } + } + else { + if (!bVar5) goto LAB_0040efc8; +LAB_0040e8c4: + if ((*(wchar_t *)(lVar14 + 0xe8) != wVar11) && (*(wchar_t *)(lVar14 + 0xec) != wVar11)) { + bVar5 = true; + bVar1 = false; + goto joined_r0x0040ec8c; + } + if ((iVar10 != 0x10) && (uVar13 != 0)) { + bVar1 = false; + bVar5 = true; + goto LAB_0040e970; + } + iVar9 = 0; + bVar5 = false; + uVar22 = 0x10; + } + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + } + local_28 = L'\xffffffff'; + } + iVar10 = FUN_00406484(&local_30); + iVar12 = FUN_00406484(&local_40); + if ((iVar10 == -1) == (iVar12 == -1)) { + cVar8 = *(char *)(lVar14 + 0x20); + bVar1 = true; + goto LAB_0040e968; + } + wVar11 = FUN_00406484(&local_30); + if (!bVar5) goto LAB_0040f024; + cVar8 = *(char *)(lVar14 + 0x20); + } while( true ); + } + cVar8 = *(char *)(lVar14 + 0x20); + if ((cVar8 != '\0') && (wVar11 == *(wchar_t *)(lVar14 + 0x4c))) { + cVar8 = '\x01'; + goto LAB_0040e888; + } + if (wVar11 == *(wchar_t *)(lVar14 + 0x48)) goto LAB_0040e888; + if (local_30 != (long *)0x0) { + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + FUN_003ff240(); + } + local_28 = L'\xffffffff'; + } + iVar9 = FUN_00406484(&local_30); + iVar10 = FUN_00406484(&local_40); + if ((iVar9 == -1) != (iVar10 == -1)) { + wVar11 = FUN_00406484(&local_30); + cVar8 = *(char *)(lVar14 + 0x20); + goto LAB_0040e888; + } + } + cVar8 = *(char *)(lVar14 + 0x20); + bVar1 = true; + iVar9 = 0; + bVar5 = false; +LAB_0040e968: + iVar10 = (int)uVar22; +joined_r0x0040ec8c: + if (iVar10 == 0x10) { + __n = 0x16; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 == '\0') goto LAB_0040e990; +LAB_0040ecb0: + local_58 = &local_8; + FUN_00410ed8(local_58,0x20); + cVar8 = *(char *)(lVar14 + 0x148); + uVar21 = 0; + if (uVar22 != 0) { + uVar21 = 0xffffffffffffffff / uVar22; + } + if (cVar8 == '\0') goto LAB_0040e9a8; +LAB_0040ecd4: + local_58 = &local_8; + if (!bVar1) { + uVar20 = 0; + bVar4 = false; + wVar6 = local_28; +LAB_0040ece8: + local_28 = wVar6; + if ((*(char *)(lVar14 + 0x20) == '\0') || (wVar11 != *(wchar_t *)(lVar14 + 0x4c))) { + if ((wVar11 == *(wchar_t *)(lVar14 + 0x48)) || + (pwVar16 = wmemchr((wchar_t *)(lVar14 + 0xf0),wVar11,__n), pwVar16 == (wchar_t *)0x0)) + goto LAB_0040ec00; + iVar10 = (int)((long)pwVar16 - (lVar14 + 0xf0) >> 2); + if (0xf < iVar10) { + iVar10 = iVar10 + -6; + } + if (uVar20 <= uVar21) { + iVar9 = iVar9 + 1; + uVar18 = uVar20 * uVar22; + uVar20 = (long)iVar10 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)iVar10 < uVar18); + goto LAB_0040ed58; + } + bVar4 = true; + if (local_30 != (long *)0x0) goto LAB_0040ed60; +LAB_0040ee6c: + if (local_40 == (long *)0x0) goto LAB_0040eb34; + cVar19 = cVar8; +joined_r0x0040ee84: + cVar17 = '\0'; + if ((int)local_38 == -1) { + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar10 = *(int *)local_40[2]; + } + else { + iVar10 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar10 == -1) { + local_40 = (long *)0x0; + cVar17 = cVar8; + } + else { + local_38 = CONCAT44(local_38._4_4_,iVar10); + cVar17 = '\0'; + } + } + if (cVar17 == cVar19) goto LAB_0040eb34; + } + else { + if (iVar9 == 0) { + bVar2 = true; + goto LAB_0040ec04; + } + FUN_004116e0(local_58,iVar9); + iVar9 = 0; +LAB_0040ed58: + if (local_30 == (long *)0x0) goto LAB_0040ee6c; +LAB_0040ed60: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040ee6c; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040ee6c; + } + cVar19 = '\0'; + local_28 = wVar11; + if (local_40 != (long *)0x0) { + goto joined_r0x0040ee84; + } + } + wVar6 = local_28; + wVar11 = L'\xffffffff'; + if ((local_30 != (long *)0x0) && (wVar11 = local_28, local_28 == L'\xffffffff')) { + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + wVar6 = wVar11; + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + wVar6 = local_28; + } + } + goto LAB_0040ece8; + } + uVar20 = 0; + bVar4 = false; + bVar2 = false; + } + else { +LAB_0040e970: + __n = (ulong)(int)uVar22; + local_8 = PTR_DAT_00501f30 + 0x18; + if (cVar8 != '\0') goto LAB_0040ecb0; +LAB_0040e990: + cVar8 = *(char *)(lVar14 + 0x148); + uVar21 = 0; + if (uVar22 != 0) { + uVar21 = 0xffffffffffffffff / uVar22; + } + if (cVar8 != '\0') goto LAB_0040ecd4; +LAB_0040e9a8: + uVar20 = 0; + bVar4 = false; + if (!bVar1) { +LAB_0040e9c0: + if (10 < __n) goto LAB_0040ea94; +LAB_0040e9c8: + if ((0x2f < (uint)wVar11) && ((uint)wVar11 < (uint)((int)__n + L'0'))) { + uVar13 = wVar11 + L'\xffffffd0'; +LAB_0040e9e0: + if (uVar20 <= uVar21) goto LAB_0040eac4; +LAB_0040e9e8: + bVar4 = true; + if (local_30 == (long *)0x0) goto LAB_0040eaec; +LAB_0040e9f4: + if ((ulong)local_30[2] < (ulong)local_30[3]) { + local_30[2] = local_30[2] + 4; + } + else { + (**(code **)(*local_30 + 0x50))(); + local_28 = L'\xffffffff'; + if (local_30 == (long *)0x0) goto LAB_0040eaec; + } + local_28 = L'\xffffffff'; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040eaec; + } + iVar10 = 0; + local_28 = wVar11; + if (local_40 == (long *)0x0) goto LAB_0040ea54; + iVar12 = 0; + if ((int)local_38 == -1) goto LAB_0040eb08; +LAB_0040ea4c: + do { + if (iVar12 == iVar10) goto LAB_0040eb34; +LAB_0040ea54: + while( true ) { + wVar11 = L'\xffffffff'; + if ((local_30 == (long *)0x0) || (wVar11 = local_28, local_28 != L'\xffffffff')) + goto LAB_0040e9c0; + if ((wchar_t *)local_30[2] < (wchar_t *)local_30[3]) { + wVar11 = *(wchar_t *)local_30[2]; + } + else { + wVar11 = (**(code **)(*local_30 + 0x48))(); + } + if (wVar11 == L'\xffffffff') { + local_30 = (long *)0x0; + goto LAB_0040e9c0; + } + local_28 = wVar11; + if (__n < 0xb) goto LAB_0040e9c8; +LAB_0040ea94: + uVar13 = wVar11 + L'\xffffffd0'; + if (uVar13 < 10) goto LAB_0040e9e0; + if ((uint)(wVar11 + L'\xffffff9f') < 6) { + uVar13 = wVar11 + L'\xffffffa9'; + goto LAB_0040e9e0; + } + if (5 < (uint)(wVar11 + L'\xffffffbf')) goto LAB_0040ec00; + uVar13 = wVar11 + L'\xffffffc9'; + if (uVar21 < uVar20) goto LAB_0040e9e8; +LAB_0040eac4: + iVar9 = iVar9 + 1; + uVar18 = uVar20 * uVar22; + uVar20 = (long)(int)uVar13 + uVar18; + bVar4 = (bool)(bVar4 | (ulong)~(long)(int)uVar13 < uVar18); + if (local_30 != (long *)0x0) goto LAB_0040e9f4; +LAB_0040eaec: + if (local_40 == (long *)0x0) goto LAB_0040eb34; + iVar10 = 1; + iVar12 = 0; + if ((int)local_38 != -1) goto LAB_0040ea4c; +LAB_0040eb08: + if ((int *)local_40[2] < (int *)local_40[3]) { + iVar12 = *(int *)local_40[2]; + } + else { + iVar12 = (**(code **)(*local_40 + 0x48))(); + } + if (iVar12 == -1) break; + local_38 = CONCAT44(local_38._4_4_,iVar12); + if (iVar10 == 0) goto LAB_0040eb34; + } + local_40 = (long *)0x0; + iVar12 = 1; + } while( true ); + } + } +LAB_0040ec00: + bVar2 = false; + } +LAB_0040ec04: + lVar15 = *(long *)(local_8 + -0x18); +joined_r0x0040eb44: + if (lVar15 == 0) { + if ((iVar9 == 0) <= bVar5) { +LAB_0040eb90: + if (!bVar2) { + if (bVar4) { + *param_8 = -1; + *param_7 = 4; + } + else { + *param_8 = (uVar20 ^ -(ulong)bVar7) + (ulong)bVar7; + } + goto LAB_0040ebb0; + } + } + } + else { + local_58 = &local_8; + FUN_004116e0(local_58,iVar9); + cVar8 = FUN_003ee0cc(*(undefined8 *)(lVar14 + 0x10),*(undefined8 *)(lVar14 + 0x18),local_58); + if (cVar8 == '\0') { + *param_7 = 4; + } + if (((iVar9 == 0) <= bVar5) || (*(long *)(local_8 + -0x18) != 0)) goto LAB_0040eb90; + } + *param_8 = 0; + *param_7 = 4; +LAB_0040ebb0: + if (bVar1) { + *param_7 = *param_7 | 2; + } + auVar3._8_4_ = local_28; + auVar3._0_8_ = local_30; + auVar3._12_4_ = uStack_24; + if (local_8 + -0x18 != PTR_DAT_00501f30) { + FUN_003ff25c(local_8 + -0x18,auStack_10); + } + return auVar3; +LAB_0040f024: + cVar8 = *(char *)(lVar14 + 0x20); + bVar1 = false; + goto LAB_0040e968; +LAB_0040eb34: + bVar2 = false; + bVar1 = true; + lVar15 = *(long *)(local_8 + -0x18); + goto joined_r0x0040eb44; +} + + +================================================================== + +### FUNC 0040f05c (20 bytes) name=FUN_0040f05c + +void FUN_0040f05c(void) + +{ + FUN_0040e754(); + return; +} + + +================================================================== + +### FUNC 0040f070 (64 bytes) name=FUN_0040f070 + +void FUN_0040f070(void *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar4 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (0 < iVar4) { + return; + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0040f0b0 (52 bytes) name=FUN_0040f0b0 + +void FUN_0040f0b0(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_00501b18 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501ef8,PTR__bad_exception_00501a70); +} + + +================================================================== + +### FUNC 0040f0e4 (52 bytes) name=FUN_0040f0e4 + +void FUN_0040f0e4(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_00501dd0 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501950,PTR__bad_alloc_005019e0); +} + + +================================================================== + +### FUNC 0040f118 (52 bytes) name=FUN_0040f118 + +void FUN_0040f118(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_005018d8 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501d68,PTR__bad_cast_00501b20); +} + + +================================================================== + +### FUNC 0040f14c (52 bytes) name=FUN_0040f14c + +void FUN_0040f14c(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_00501a98 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501c60,PTR__bad_typeid_00501af0); +} + + +================================================================== + +### FUNC 0040f180 (120 bytes) name=FUN_0040f180 + +void FUN_0040f180(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c798(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501ba8,PTR_FUN_00501f40); +} + + +================================================================== + +### FUNC 0040f234 (120 bytes) name=FUN_0040f234 + +void FUN_0040f234(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c7d8(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501f88,PTR_FUN_00501d98); +} + + +================================================================== + +### FUNC 0040f2e8 (120 bytes) name=FUN_0040f2e8 + +void FUN_0040f2e8(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c824(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501fe8,PTR_FUN_00501920); +} + + +================================================================== + +### FUNC 0040f39c (120 bytes) name=FUN_0040f39c + +void FUN_0040f39c(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c870(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501c70,PTR_FUN_00501a90); +} + + +================================================================== + +### FUNC 0040f450 (120 bytes) name=FUN_0040f450 + +void FUN_0040f450(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c8bc(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501960,PTR_FUN_005018f8); +} + + +================================================================== + +### FUNC 0040f504 (280 bytes) name=FUN_0040f504 + +void FUN_0040f504(char *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8) + +{ + long lVar1; + size_t sVar2; + undefined8 uVar3; + undefined1 *local_120; + undefined1 *puStack_118; + undefined1 *local_110; + undefined8 uStack_108; + undefined1 auStack_f8 [8]; + undefined1 auStack_f0 [8]; + long local_e8; + undefined1 auStack_40 [8]; + undefined8 local_38; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + undefined8 local_10; + undefined8 local_8; + + local_38 = param_2; + local_30 = param_3; + local_28 = param_4; + local_20 = param_5; + local_18 = param_6; + local_10 = param_7; + local_8 = param_8; + sVar2 = strlen(param_1); + lVar1 = -(sVar2 + 0x21e & 0xfffffffffffffff0); + local_110 = auStack_40; + uStack_108 = 0xffffff80ffffffc8; + local_120 = (undefined1 *)register0x00000008; + puStack_118 = (undefined1 *)register0x00000008; + FUN_004101f0(&stack0xfffffffffffffeb0 + lVar1,sVar2 + 0x200,param_1,&local_120); + uVar3 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_e8,&stack0xfffffffffffffeb0 + lVar1,auStack_f8); + FUN_0041c8bc(uVar3,&local_e8); + if ((undefined *)(local_e8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_e8 + -0x18),auStack_f0); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar3,PTR_PTR_00501960,PTR_FUN_005018f8); +} + + +================================================================== + +### FUNC 0040f658 (120 bytes) name=FUN_0040f658 + +void FUN_0040f658(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c908(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501bc0,PTR_FUN_00501d28); +} + + +================================================================== + +### FUNC 0040f70c (120 bytes) name=FUN_0040f70c + +void FUN_0040f70c(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c948(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_005018e0,PTR_FUN_00501ec8); +} + + +================================================================== + +### FUNC 0040f7c0 (120 bytes) name=FUN_0040f7c0 + +void FUN_0040f7c0(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c994(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501978,PTR_FUN_00501ef0); +} + + +================================================================== + +### FUNC 0040f874 (120 bytes) name=FUN_0040f874 + +void FUN_0040f874(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041c9e0(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501a88,PTR_FUN_00501c98); +} + + +================================================================== + +### FUNC 0040f928 (120 bytes) name=FUN_0040f928 + +void FUN_0040f928(undefined8 param_1) + +{ + undefined8 uVar1; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + uVar1 = __cxa_allocate_exception(0x10); + FUN_00410a08(&local_8,param_1,auStack_18); + FUN_0041b554(uVar1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501be0,PTR_FUN_005019b8); +} + + +================================================================== + +### FUNC 0040f9b4 (160 bytes) name=FUN_0040f9b4 + +void FUN_0040f9b4(undefined4 param_1) + +{ + undefined *puVar1; + undefined *puVar2; + undefined *puVar3; + long *plVar4; + long *plVar5; + undefined1 auStack_10 [8]; + long local_8; + + plVar4 = (long *)__cxa_allocate_exception(0x20); + plVar5 = (long *)FUN_0041507c(); + (**(code **)(*plVar5 + 0x18))(&local_8,plVar5,param_1); + FUN_0041c908(plVar4,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_10); + } + *(undefined4 *)(plVar4 + 2) = param_1; + puVar3 = PTR_PTR_00501f20; + puVar2 = PTR_FUN_00501d78; + puVar1 = PTR_DAT_00501d00 + 0x10; + plVar4[3] = (long)plVar5; + *plVar4 = (long)puVar1; + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar4,puVar3,puVar2); +} + + +================================================================== + +### FUNC 0040fa90 (160 bytes) name=FUN_0040fa90 + +void FUN_0040fa90(undefined4 param_1) + +{ + undefined *puVar1; + undefined *puVar2; + undefined *puVar3; + long *plVar4; + long lVar5; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + long local_8; + + plVar4 = (long *)__cxa_allocate_exception(0x20); + lVar5 = FUN_0040fec4(); + FUN_00410a08(&local_8,"std::future_error",auStack_10); + FUN_0041c798(plVar4,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + FUN_0040f070((undefined *)(local_8 + -0x18),auStack_18); + } + *(undefined4 *)(plVar4 + 2) = param_1; + puVar3 = PTR_FUN_00501e40; + puVar2 = PTR_PTR_00501980; + puVar1 = PTR_DAT_00501aa8 + 0x10; + plVar4[3] = lVar5; + *plVar4 = (long)puVar1; + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar4,puVar2,puVar3); +} + + +================================================================== + +### FUNC 0040fb6c (52 bytes) name=FUN_0040fb6c + +void FUN_0040fb6c(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_DAT_00501f38 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_PTR_00501988,PTR_FUN_00501888); +} + + +================================================================== + +### FUNC 0040fba0 (64 bytes) name=FUN_0040fba0 + +void FUN_0040fba0(undefined4 param_1) + +{ + undefined8 uVar1; + + uVar1 = __cxa_allocate_exception(0x18); + FUN_0040ffc4(uVar1,param_1); + /* WARNING: Subroutine does not return */ + __cxa_throw(uVar1,PTR_PTR_00501c90,PTR_FUN_00501d60); +} + + +================================================================== + +### FUNC 0040fbf4 (12 bytes) name=FUN_0040fbf4 + +char * FUN_0040fbf4(void) + +{ + return "bad_function_call"; +} + + +================================================================== + +### FUNC 0040fc00 (16 bytes) name=FUN_0040fc00 + +void FUN_0040fc00(exception *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f8b20; + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0040fc10 (48 bytes) name=FUN_0040fc10 + +void FUN_0040fc10(exception *param_1) + +{ + *(undefined ***)param_1 = &PTR_FUN_004f8b20; + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0040fc40 (12 bytes) name=FUN_0040fc40 + +char * FUN_0040fc40(void) + +{ + return "future"; +} + + +================================================================== + +### FUNC 0040fc4c (20 bytes) name=FUN_0040fc4c + +void FUN_0040fc4c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe540; + FUN_00415068(); + return; +} + + +================================================================== + +### FUNC 0040fc60 (52 bytes) name=FUN_0040fc60 + +void FUN_0040fc60(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe540; + FUN_00415068(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0040fc94 (16 bytes) name=FUN_0040fc94 + +void FUN_0040fc94(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8b50; + FUN_0041bd78(); + return; +} + + +================================================================== + +### FUNC 0040fca4 (48 bytes) name=FUN_0040fca4 + +void FUN_0040fca4(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8b50; + FUN_0041bd78(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0040fcd4 (248 bytes) name=FUN_0040fcd4 + +long * FUN_0040fcd4(long *param_1,undefined8 param_2,undefined4 param_3) + +{ + *param_1 = (long)(PTR_DAT_00501f30 + 0x18); + switch(param_3) { + case 1: + FUN_00412fdc(param_1,"Future already retrieved",0x18); + return param_1; + case 2: + FUN_00412fdc(param_1,"Promise already satisfied",0x19); + return param_1; + case 3: + FUN_00412fdc(param_1,"No associated state",0x13); + return param_1; + case 4: + FUN_00412fdc(param_1,"Broken promise",0xe); + return param_1; + default: + FUN_00412fdc(param_1,"Unknown error",0xd); + return param_1; + } +} + + +================================================================== + +### FUNC 0040fe30 (148 bytes) name=FUN_0040fe30 + +long FUN_0040fe30(long param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + int *piVar4; + long local_8; + + (**(code **)(**(long **)(param_1 + 0x18) + 0x18)) + (&local_8,*(long **)(param_1 + 0x18),*(undefined4 *)(param_1 + 0x10)); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar3 + -1; + } + else { + piVar4 = (int *)(local_8 + -8); + do { + iVar3 = *piVar4; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(local_8 + -0x18)); + } + } + return local_8; +} + + +================================================================== + +### FUNC 0040fec4 (112 bytes) name=FUN_0040fec4 + +undefined ** FUN_0040fec4(void) + +{ + int iVar1; + + if (((DAT_00547720 & 1) == 0) && (iVar1 = __cxa_guard_acquire(&DAT_00547720), iVar1 != 0)) { + __cxa_guard_release(&DAT_00547720); + __cxa_atexit(FUN_0040fc4c,&PTR_PTR_00509620,&DAT_00502000); + return &PTR_PTR_00509620; + } + return &PTR_PTR_00509620; +} + + +================================================================== + +### FUNC 0040ff34 (16 bytes) name=FUN_0040ff34 + +void FUN_0040ff34(undefined8 *param_1) + +{ + *param_1 = &PTR___cxa_pure_virtual_004fe510; + std::__exception_ptr::exception_ptr::exception_ptr((exception_ptr *)(param_1 + 1)); + return; +} + + +================================================================== + +### FUNC 0040ff44 (16 bytes) name=FUN_0040ff44 + +void FUN_0040ff44(undefined8 *param_1) + +{ + *param_1 = &PTR___cxa_pure_virtual_004fe510; + std::__exception_ptr::exception_ptr::~exception_ptr((exception_ptr *)(param_1 + 1)); + return; +} + + +================================================================== + +### FUNC 0040ff54 (48 bytes) name=FUN_0040ff54 + +void FUN_0040ff54(undefined8 *param_1) + +{ + *param_1 = &PTR___cxa_pure_virtual_004fe510; + std::__exception_ptr::exception_ptr::~exception_ptr((exception_ptr *)(param_1 + 1)); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0040ff84 (16 bytes) name=FUN_0040ff84 + +void FUN_0040ff84(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe5c0; + FUN_0041be04(); + return; +} + + +================================================================== + +### FUNC 0040ff94 (48 bytes) name=FUN_0040ff94 + +void FUN_0040ff94(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe5c0; + FUN_0041be04(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0040ffc4 (184 bytes) name=FUN_0040ffc4 + +void FUN_0040ffc4(undefined8 *param_1,undefined4 param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + int *piVar4; + undefined1 auStack_18 [16]; + long local_8; + + FUN_00410a08(&local_8,"regex_error",auStack_18); + FUN_0041c908(param_1,&local_8); + if ((undefined *)(local_8 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(local_8 + -8); + *(int *)(local_8 + -8) = iVar3 + -1; + } + else { + piVar4 = (int *)(local_8 + -8); + do { + iVar3 = *piVar4; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(local_8 + -0x18)); + } + } + *(undefined4 *)(param_1 + 2) = param_2; + *param_1 = &PTR_FUN_004fe5c0; + return; +} + + +================================================================== + +### FUNC 004100e4 (120 bytes) name=FUN_004100e4 + +void FUN_004100e4(void *param_1,long param_2) + +{ + long lVar1; + void *__src; + size_t __n; + undefined1 auStack_70 [59]; + undefined1 auStack_35 [53]; + + __n = param_2 - (long)param_1; + __src = memcpy(auStack_70, + "not enough space for format expansion (Please submit full bug report at http://gcc.gnu.org/bugs.html):\n " + ,0x6c); + lVar1 = -(__n + 0x8a & 0xfffffffffffffff0); + memcpy(&stack0xffffffffffffff60 + lVar1,__src,0x6b); + memcpy(auStack_35 + lVar1,param_1,__n); + auStack_35[__n + lVar1] = 0; + /* WARNING: Subroutine does not return */ + FUN_0040f180(&stack0xffffffffffffff60 + lVar1); +} + + +================================================================== + +### FUNC 0041015c (148 bytes) name=FUN_0041015c + +ulong FUN_0041015c(void *param_1,ulong param_2,ulong param_3) + +{ + size_t __n; + ulong uVar1; + undefined1 *puVar2; + long lVar3; + ulong uVar4; + undefined1 local_39 [25]; + + lVar3 = *(long *)PTR_PTR_00501d10; + puVar2 = local_39 + 1; + do { + uVar1 = param_3 / 10; + puVar2 = puVar2 + -1; + *puVar2 = *(undefined1 *)(lVar3 + param_3 % 10 + 4); + param_3 = uVar1; + } while (uVar1 != 0); + uVar1 = (long)(local_39 + 1) - (long)puVar2; + uVar4 = uVar1 & 0xffffffff; + __n = (size_t)(int)uVar1; + if (param_2 < __n) { + uVar4 = 0xffffffff; + } + else { + memcpy(param_1,local_39 + (1 - __n),__n); + } + return uVar4; +} + + +================================================================== + +### FUNC 004101f0 (400 bytes) name=FUN_004101f0 + +long FUN_004101f0(char *param_1,long param_2,char *param_3,undefined8 *param_4) + +{ + char *pcVar1; + char cVar2; + char cVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + undefined8 *puVar8; + undefined8 *puVar9; + int iVar10; + long lVar11; + char *pcVar7; + + pcVar1 = param_1 + param_2 + -1; + puVar8 = (undefined8 *)*param_4; + lVar11 = param_4[1]; + iVar10 = *(int *)(param_4 + 3); + pcVar6 = param_1; +LAB_00410238: + do { + cVar3 = *param_3; + while( true ) { + if (cVar3 == '\0') { + *pcVar6 = '\0'; + return (long)pcVar6 - (long)param_1; + } + puVar9 = puVar8; + if (pcVar6 < pcVar1) break; +LAB_0041031c: + while( true ) { + FUN_004100e4(param_1,pcVar6); +LAB_00410328: + iVar4 = iVar10 + 8; + if (iVar4 < 1) { + puVar8 = (undefined8 *)(lVar11 + iVar10); + iVar10 = iVar4; + } + else { + puVar8 = puVar9; + puVar9 = (undefined8 *)((long)puVar9 + 0xfU & 0xfffffffffffffff8); + iVar10 = iVar4; + } +LAB_00410288: + pcVar5 = (char *)*puVar8; + cVar3 = *pcVar5; + pcVar7 = pcVar6; + if (cVar3 == '\0') break; + do { + pcVar6 = pcVar7 + 1; + *pcVar7 = cVar3; + pcVar5 = pcVar5 + 1; + cVar3 = *pcVar5; + if (cVar3 == '\0') goto LAB_004102ac; + pcVar7 = pcVar6; + } while (pcVar6 != pcVar1); + } +LAB_004102ac: + param_3 = param_3 + 2; + cVar3 = *param_3; + puVar8 = puVar9; + } + if (cVar3 != '%') { +LAB_0041022c: + *pcVar6 = cVar3; + param_3 = param_3 + 1; + pcVar6 = pcVar6 + 1; + goto LAB_00410238; + } + cVar2 = param_3[1]; + if (cVar2 == 's') { + if (iVar10 < 0) goto LAB_00410328; + puVar9 = (undefined8 *)((long)puVar8 + 0xfU & 0xfffffffffffffff8); + goto LAB_00410288; + } + if (cVar2 != 'z') { + param_3 = param_3 + (cVar2 == '%'); + goto LAB_0041022c; + } + if (param_3[2] != 'u') goto LAB_0041022c; + if (iVar10 < 0) { + iVar4 = iVar10 + 8; + if (iVar4 < 1) { + puVar9 = (undefined8 *)(lVar11 + iVar10); + iVar10 = iVar4; + } + else { + puVar8 = (undefined8 *)((long)puVar8 + 0xfU & 0xfffffffffffffff8); + iVar10 = iVar4; + } + } + else { + puVar8 = (undefined8 *)((long)puVar8 + 0xfU & 0xfffffffffffffff8); + } + iVar4 = FUN_0041015c(pcVar6,(long)pcVar1 - (long)pcVar6,*puVar9); + puVar9 = puVar8; + if (iVar4 < 1) goto LAB_0041031c; + pcVar6 = pcVar6 + iVar4; + param_3 = param_3 + 3; + } while( true ); +} + + +================================================================== + +### FUNC 00410380 (68 bytes) name=FUN_00410380 + +void FUN_00410380(void *param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar2 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar2 < 1) { + operator_delete(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 004103c4 (8 bytes) name=FUN_004103c4 + +undefined8 FUN_004103c4(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004103cc (12 bytes) name=FUN_004103cc + +undefined8 FUN_004103cc(undefined8 *param_1,undefined8 param_2) + +{ + *param_1 = param_2; + return param_2; +} + + +================================================================== + +### FUNC 004103d8 (12 bytes) name=FUN_004103d8 + +long FUN_004103d8(long *param_1) + +{ + return *param_1 + -0x18; +} + + +================================================================== + +### FUNC 004103e4 (8 bytes) name=FUN_004103e4 + +undefined8 FUN_004103e4(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004103ec (16 bytes) name=FUN_004103ec + +long FUN_004103ec(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 004103fc (56 bytes) name=FUN_004103fc + +void FUN_004103fc(long *param_1,ulong param_2,undefined8 param_3) + +{ + if (param_2 <= *(ulong *)(*param_1 + -0x18)) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)",param_3,param_2); +} + + +================================================================== + +### FUNC 00410434 (56 bytes) name=FUN_00410434 + +void FUN_00410434(long *param_1,long param_2,ulong param_3,undefined8 param_4) + +{ + if (param_3 <= (ulong)((0x3ffffffffffffff9 - *(long *)(*param_1 + -0x18)) + param_2)) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c(param_4); +} + + +================================================================== + +### FUNC 0041046c (24 bytes) name=FUN_0041046c + +ulong FUN_0041046c(long *param_1,long param_2,ulong param_3) + +{ + ulong uVar1; + + uVar1 = *(long *)(*param_1 + -0x18) - param_2; + if (param_3 < uVar1) { + uVar1 = param_3; + } + return uVar1; +} + + +================================================================== + +### FUNC 00410484 (36 bytes) name=FUN_00410484 + +bool FUN_00410484(ulong *param_1,ulong param_2) + +{ + bool bVar1; + ulong uVar2; + + uVar2 = *param_1; + bVar1 = true; + if (uVar2 <= param_2) { + bVar1 = uVar2 + *(long *)(uVar2 - 0x18) < param_2; + } + return bVar1; +} + + +================================================================== + +### FUNC 004104a8 (28 bytes) name=FUN_004104a8 + +void FUN_004104a8(undefined1 *param_1,undefined1 *param_2,size_t param_3) + +{ + if (param_3 != 1) { + memcpy(param_1,param_2,param_3); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 004104c4 (28 bytes) name=FUN_004104c4 + +void FUN_004104c4(undefined1 *param_1,undefined1 *param_2,size_t param_3) + +{ + if (param_3 != 1) { + memmove(param_1,param_2,param_3); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 004104e0 (32 bytes) name=FUN_004104e0 + +void FUN_004104e0(byte *param_1,size_t param_2,byte param_3) + +{ + if (param_2 != 1) { + memset(param_1,(uint)param_3,param_2); + return; + } + *param_1 = param_3; + return; +} + + +================================================================== + +### FUNC 00410500 (32 bytes) name=FUN_00410500 + +void FUN_00410500(undefined1 *param_1,undefined1 *param_2,long param_3) + +{ + if (param_3 - (long)param_2 != 1) { + memcpy(param_1,param_2,param_3 - (long)param_2); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00410520 (32 bytes) name=FUN_00410520 + +void FUN_00410520(undefined1 *param_1,undefined1 *param_2,long param_3) + +{ + if (param_3 - (long)param_2 != 1) { + memcpy(param_1,param_2,param_3 - (long)param_2); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00410540 (32 bytes) name=FUN_00410540 + +void FUN_00410540(undefined1 *param_1,undefined1 *param_2,long param_3) + +{ + if (param_3 - (long)param_2 != 1) { + memcpy(param_1,param_2,param_3 - (long)param_2); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00410560 (32 bytes) name=FUN_00410560 + +void FUN_00410560(undefined1 *param_1,undefined1 *param_2,long param_3) + +{ + if (param_3 - (long)param_2 != 1) { + memcpy(param_1,param_2,param_3 - (long)param_2); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00410580 (40 bytes) name=FUN_00410580 + +undefined4 FUN_00410580(long param_1,long param_2) + +{ + undefined4 uVar1; + + param_1 = param_1 - param_2; + if (0x7fffffff < param_1) { + return 0x7fffffff; + } + uVar1 = 0x80000000; + if (-0x80000001 < param_1) { + uVar1 = (undefined4)param_1; + } + return uVar1; +} + + +================================================================== + +### FUNC 004105a8 (12 bytes) name=FUN_004105a8 + +undefined8 * FUN_004105a8(void) + +{ + return &DAT_00547730; +} + + +================================================================== + +### FUNC 004105b4 (16 bytes) name=FUN_004105b4 + +void FUN_004105b4(undefined8 *param_1) + +{ + *param_1 = &DAT_00547748; + return; +} + + +================================================================== + +### FUNC 004105c4 (16 bytes) name=FUN_004105c4 + +void FUN_004105c4(undefined8 *param_1) + +{ + *param_1 = &DAT_00547748; + return; +} + + +================================================================== + +### FUNC 004105d4 (380 bytes) name=FUN_004105d4 + +void FUN_004105d4(undefined8 *param_1,long *param_2,ulong param_3,ulong param_4) + +{ + void *__src; + void *pvVar1; + ulong uVar2; + ulong *puVar3; + ulong *__dest; + ulong uVar4; + long lVar5; + + lVar5 = *param_2; + uVar4 = *(ulong *)(lVar5 + -0x18); + if (uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string",param_3,uVar4); + } + __src = (void *)(lVar5 + param_3); + uVar2 = uVar4 - param_3; + if (param_4 < uVar4 - param_3) { + uVar2 = param_4; + } + pvVar1 = (void *)(lVar5 + uVar2 + param_3); + if (__src == pvVar1) { + *param_1 = &DAT_00547748; + return; + } + if ((pvVar1 != (void *)0x0) && (__src == (void *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + uVar4 = (long)pvVar1 - (long)__src; + if (0x3ffffffffffffff9 < uVar4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((uVar4 + 0x39 < 0x1001) || (uVar4 == 0)) { + puVar3 = operator_new(uVar4 + 0x19); + puVar3[1] = uVar4; + *(undefined4 *)(puVar3 + 2) = 0; + __dest = puVar3 + 3; + if (uVar4 == 1) { + *(undefined1 *)(puVar3 + 3) = *(undefined1 *)(lVar5 + param_3); + goto LAB_004106a8; + } + } + else { + uVar2 = (uVar4 + 0x1000) - (uVar4 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar2) { + uVar2 = 0x3ffffffffffffff9; + } + puVar3 = operator_new(uVar2 + 0x19); + __dest = puVar3 + 3; + puVar3[1] = uVar2; + *(undefined4 *)(puVar3 + 2) = 0; + } + __dest = memcpy(__dest,__src,uVar4); +LAB_004106a8: + if (puVar3 != &DAT_00547730) { + *puVar3 = uVar4; + *(undefined1 *)((long)puVar3 + uVar4 + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00410750 (380 bytes) name=FUN_00410750 + +void FUN_00410750(undefined8 *param_1,long *param_2,ulong param_3,ulong param_4) + +{ + void *__src; + void *pvVar1; + ulong uVar2; + ulong *puVar3; + ulong *__dest; + ulong uVar4; + long lVar5; + + lVar5 = *param_2; + uVar4 = *(ulong *)(lVar5 + -0x18); + if (uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string",param_3,uVar4); + } + __src = (void *)(lVar5 + param_3); + uVar2 = uVar4 - param_3; + if (param_4 < uVar4 - param_3) { + uVar2 = param_4; + } + pvVar1 = (void *)(lVar5 + uVar2 + param_3); + if (__src == pvVar1) { + *param_1 = &DAT_00547748; + return; + } + if ((pvVar1 != (void *)0x0) && (__src == (void *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + uVar4 = (long)pvVar1 - (long)__src; + if (0x3ffffffffffffff9 < uVar4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((uVar4 + 0x39 < 0x1001) || (uVar4 == 0)) { + puVar3 = operator_new(uVar4 + 0x19); + puVar3[1] = uVar4; + *(undefined4 *)(puVar3 + 2) = 0; + __dest = puVar3 + 3; + if (uVar4 == 1) { + *(undefined1 *)(puVar3 + 3) = *(undefined1 *)(lVar5 + param_3); + goto LAB_00410824; + } + } + else { + uVar2 = (uVar4 + 0x1000) - (uVar4 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar2) { + uVar2 = 0x3ffffffffffffff9; + } + puVar3 = operator_new(uVar2 + 0x19); + __dest = puVar3 + 3; + puVar3[1] = uVar2; + *(undefined4 *)(puVar3 + 2) = 0; + } + __dest = memcpy(__dest,__src,uVar4); +LAB_00410824: + if (puVar3 != &DAT_00547730) { + *puVar3 = uVar4; + *(undefined1 *)((long)puVar3 + uVar4 + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 004108cc (316 bytes) name=FUN_004108cc + +void FUN_004108cc(undefined8 *param_1,undefined1 *param_2,ulong param_3) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__dest; + + if (param_2 == param_2 + param_3) { + *param_1 = &DAT_00547748; + return; + } + if ((param_2 + param_3 != (undefined1 *)0x0) && (param_2 == (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + if (0x3ffffffffffffff9 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_3 - 0xfc8 < 0xffffffffffffefff) { + uVar1 = (param_3 + 0x1000) - (param_3 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __dest = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + else { + puVar2 = operator_new(param_3 + 0x19); + puVar2[1] = param_3; + *(undefined4 *)(puVar2 + 2) = 0; + __dest = puVar2 + 3; + if (param_3 == 1) { + *(undefined1 *)(puVar2 + 3) = *param_2; + goto LAB_0041097c; + } + } + __dest = memcpy(__dest,param_2,param_3); +LAB_0041097c: + if (puVar2 != &DAT_00547730) { + *puVar2 = param_3; + *(undefined1 *)((long)puVar2 + param_3 + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00410a08 (320 bytes) name=FUN_00410a08 + +void FUN_00410a08(undefined8 *param_1,char *param_2) + +{ + size_t __n; + size_t sVar1; + size_t *psVar2; + size_t *__dest; + + if (param_2 == (char *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = strlen(param_2); + if (__n == 0) { + *param_1 = &DAT_00547748; + return; + } + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (__n - 0xfc8 < 0xffffffffffffefff) { + sVar1 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < sVar1) { + sVar1 = 0x3ffffffffffffff9; + } + psVar2 = operator_new(sVar1 + 0x19); + __dest = psVar2 + 3; + psVar2[1] = sVar1; + *(undefined4 *)(psVar2 + 2) = 0; + } + else { + psVar2 = operator_new(__n + 0x19); + psVar2[1] = __n; + *(undefined4 *)(psVar2 + 2) = 0; + __dest = psVar2 + 3; + if (__n == 1) { + *(char *)(psVar2 + 3) = *param_2; + goto LAB_00410ab0; + } + } + __dest = memcpy(__dest,param_2,__n); +LAB_00410ab0: + if (psVar2 != &DAT_00547730) { + *psVar2 = __n; + *(undefined1 *)((long)psVar2 + __n + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00410b48 (260 bytes) name=FUN_00410b48 + +void FUN_00410b48(undefined8 *param_1,ulong param_2,byte param_3) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__s; + + if (param_2 == 0) { + __s = (ulong *)&DAT_00547748; + goto LAB_00410b74; + } + if (0x3ffffffffffffff9 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_2 + 0x39 < 0x1001) { + puVar2 = operator_new(param_2 + 0x19); + puVar2[1] = param_2; + *(undefined4 *)(puVar2 + 2) = 0; + __s = puVar2 + 3; + if (param_2 != 1) goto LAB_00410be4; + *(byte *)(puVar2 + 3) = param_3; + } + else { + uVar1 = (param_2 + 0x1000) - (param_2 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __s = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; +LAB_00410be4: + __s = memset(__s,(uint)param_3,param_2); + } + if (puVar2 != &DAT_00547730) { + *puVar2 = param_2; + *(undefined1 *)((long)puVar2 + param_2 + 0x18) = 0; + } +LAB_00410b74: + *param_1 = __s; + return; +} + + +================================================================== + +### FUNC 00410c4c (24 bytes) name=FUN_00410c4c + +void FUN_00410c4c(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + *param_2 = &DAT_00547748; + return; +} + + +================================================================== + +### FUNC 00410c64 (316 bytes) name=FUN_00410c64 + +void FUN_00410c64(undefined8 *param_1,undefined1 *param_2,ulong param_3) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__dest; + + if (param_2 == param_2 + param_3) { + *param_1 = &DAT_00547748; + return; + } + if ((param_2 + param_3 != (undefined1 *)0x0) && (param_2 == (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + if (0x3ffffffffffffff9 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_3 - 0xfc8 < 0xffffffffffffefff) { + uVar1 = (param_3 + 0x1000) - (param_3 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __dest = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + else { + puVar2 = operator_new(param_3 + 0x19); + puVar2[1] = param_3; + *(undefined4 *)(puVar2 + 2) = 0; + __dest = puVar2 + 3; + if (param_3 == 1) { + *(undefined1 *)(puVar2 + 3) = *param_2; + goto LAB_00410d14; + } + } + __dest = memcpy(__dest,param_2,param_3); +LAB_00410d14: + if (puVar2 != &DAT_00547730) { + *puVar2 = param_3; + *(undefined1 *)((long)puVar2 + param_3 + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00410da0 (88 bytes) name=FUN_00410da0 + +void FUN_00410da0(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + lVar4 = *param_1; + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00410df8 (48 bytes) name=FUN_00410df8 + +void FUN_00410df8(long *param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (*(int *)(lVar2 + -8) < 0) { + *(undefined4 *)(lVar2 + -8) = 0; + } + lVar1 = *param_2; + if (*(int *)(lVar1 + -8) < 0) { + *(undefined4 *)(lVar1 + -8) = 0; + } + *param_1 = lVar1; + *param_2 = lVar2; + return; +} + + +================================================================== + +### FUNC 00410e28 (8 bytes) name=FUN_00410e28 + +undefined8 FUN_00410e28(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 00410e30 (16 bytes) name=FUN_00410e30 + +long FUN_00410e30(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 00410e40 (24 bytes) name=FUN_00410e40 + +long * FUN_00410e40(long *param_1,long *param_2) + +{ + *param_1 = *param_2 + *(long *)(*param_2 + -0x18); + return param_1; +} + + +================================================================== + +### FUNC 00410e58 (16 bytes) name=FUN_00410e58 + +undefined8 * FUN_00410e58(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + return param_1; +} + + +================================================================== + +### FUNC 00410e68 (8 bytes) name=FUN_00410e68 + +undefined8 FUN_00410e68(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 00410e70 (16 bytes) name=FUN_00410e70 + +long FUN_00410e70(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 00410e80 (24 bytes) name=FUN_00410e80 + +long * FUN_00410e80(long *param_1,long *param_2) + +{ + *param_1 = *param_2 + *(long *)(*param_2 + -0x18); + return param_1; +} + + +================================================================== + +### FUNC 00410e98 (16 bytes) name=FUN_00410e98 + +undefined8 * FUN_00410e98(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + return param_1; +} + + +================================================================== + +### FUNC 00410ea8 (12 bytes) name=FUN_00410ea8 + +undefined8 FUN_00410ea8(long *param_1) + +{ + return *(undefined8 *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 00410eb4 (12 bytes) name=FUN_00410eb4 + +undefined8 FUN_00410eb4(long *param_1) + +{ + return *(undefined8 *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 00410ec0 (12 bytes) name=FUN_00410ec0 + +undefined8 FUN_00410ec0(void) + +{ + return 0x3ffffffffffffff9; +} + + +================================================================== + +### FUNC 00410ecc (12 bytes) name=FUN_00410ecc + +undefined8 FUN_00410ecc(long *param_1) + +{ + return *(undefined8 *)(*param_1 + -0x10); +} + + +================================================================== + +### FUNC 00410ed8 (396 bytes) name=FUN_00410ed8 + +void FUN_00410ed8(long *param_1,ulong param_2) + +{ + char cVar1; + bool bVar2; + long *plVar3; + long lVar4; + int *piVar5; + int iVar6; + size_t __n; + undefined1 *__src; + ulong uVar7; + + __src = (undefined1 *)*param_1; + uVar7 = *(ulong *)(__src + -0x10); + if ((param_2 != uVar7) || (0 < *(int *)(__src + -8))) { + if (param_2 < *(ulong *)(__src + -0x18)) { + param_2 = *(ulong *)(__src + -0x18); + } + if (0x3ffffffffffffff9 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (uVar7 < param_2) { + if (param_2 < uVar7 << 1) { + param_2 = uVar7 << 1; + } + if ((0x1000 < param_2 + 0x39) && (uVar7 < param_2)) { + param_2 = (param_2 + 0x1000) - (param_2 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < param_2) { + param_2 = 0x3ffffffffffffff9; + } + } + } + plVar3 = operator_new(param_2 + 0x19); + __n = *(size_t *)(__src + -0x18); + plVar3[1] = param_2; + *(undefined4 *)(plVar3 + 2) = 0; + lVar4 = 0; + if (__n != 0) { + if (__n == 1) { + *(undefined1 *)(plVar3 + 3) = *__src; + lVar4 = *(long *)(__src + -0x18); + } + else { + memcpy(plVar3 + 3,__src,__n); + lVar4 = *(long *)(__src + -0x18); + } + } + if (plVar3 != &DAT_00547730) { + *plVar3 = lVar4; + *(undefined1 *)((long)plVar3 + lVar4 + 0x18) = 0; + } + lVar4 = *param_1; + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar6 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar6 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar6 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar6 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + } + } + *param_1 = (long)(plVar3 + 3); + } + return; +} + + +================================================================== + +### FUNC 00411064 (52 bytes) name=FUN_00411064 + +void FUN_00411064(long *param_1) + +{ + if (*(ulong *)(*param_1 + -0x10) <= *(ulong *)(*param_1 + -0x18)) { + return; + } + FUN_00410ed8(param_1,0); + return; +} + + +================================================================== + +### FUNC 004110a4 (328 bytes) name=FUN_004110a4 + +undefined8 FUN_004110a4(undefined8 *param_1,undefined1 *param_2,ulong param_3) + +{ + ulong uVar1; + undefined1 *__dest; + long lVar2; + undefined1 *puVar3; + + puVar3 = (undefined1 *)*param_1; + lVar2 = *(long *)(puVar3 + -0x18); + if (0x3ffffffffffffff9U - lVar2 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::append"); + } + uVar1 = param_3 + lVar2; + if ((*(ulong *)(puVar3 + -0x10) < uVar1) || (0 < *(int *)(puVar3 + -8))) { + if ((puVar3 <= param_2) && (param_2 <= puVar3 + lVar2)) { + lVar2 = (long)param_2 - (long)puVar3; + FUN_00410ed8(param_1,uVar1); + puVar3 = (undefined1 *)*param_1; + param_2 = puVar3 + lVar2; + lVar2 = *(long *)(puVar3 + -0x18); + __dest = puVar3 + lVar2; + goto joined_r0x0041119c; + } + FUN_00410ed8(param_1,uVar1); + puVar3 = (undefined1 *)*param_1; + lVar2 = *(long *)(puVar3 + -0x18); + } + __dest = puVar3 + lVar2; +joined_r0x0041119c: + if (param_3 == 1) { + puVar3[lVar2] = *param_2; + puVar3 = (undefined1 *)*param_1; + } + else { + memcpy(__dest,param_2,param_3); + puVar3 = (undefined1 *)*param_1; + } + if (puVar3 == &DAT_00547748) { + return 0; + } + *(ulong *)(puVar3 + -0x18) = uVar1; + *(undefined4 *)(puVar3 + -8) = 0; + puVar3[uVar1] = 0; + return 0; +} + + +================================================================== + +### FUNC 004111ec (260 bytes) name=FUN_004111ec + +undefined8 FUN_004111ec(long *param_1,ulong param_2,byte param_3) + +{ + ulong uVar1; + void *__s; + long lVar2; + undefined1 *puVar3; + long lVar4; + + lVar2 = *param_1; + lVar4 = *(long *)(lVar2 + -0x18); + if (0x3ffffffffffffff9U - lVar4 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::append"); + } + uVar1 = param_2 + lVar4; + if ((*(ulong *)(lVar2 + -0x10) < uVar1) || (0 < *(int *)(lVar2 + -8))) { + FUN_00410ed8(param_1,uVar1); + lVar2 = *param_1; + lVar4 = *(long *)(lVar2 + -0x18); + __s = (void *)(lVar2 + lVar4); + } + else { + __s = (void *)(lVar2 + lVar4); + } + if (param_2 == 1) { + *(byte *)(lVar2 + lVar4) = param_3; + puVar3 = (undefined1 *)*param_1; + } + else { + memset(__s,(uint)param_3,param_2); + puVar3 = (undefined1 *)*param_1; + } + if (puVar3 == &DAT_00547748) { + return 0; + } + *(ulong *)(puVar3 + -0x18) = uVar1; + *(undefined4 *)(puVar3 + -8) = 0; + puVar3[uVar1] = 0; + return 0; +} + + +================================================================== + +### FUNC 004112f0 (20 bytes) name=FUN_004112f0 + +bool FUN_004112f0(long *param_1) + +{ + return *(long *)(*param_1 + -0x18) == 0; +} + + +================================================================== + +### FUNC 00411304 (12 bytes) name=FUN_00411304 + +long FUN_00411304(long *param_1,long param_2) + +{ + return *param_1 + param_2; +} + + +================================================================== + +### FUNC 00411310 (48 bytes) name=FUN_00411310 + +long FUN_00411310(long *param_1,ulong param_2) + +{ + if (param_2 < *(ulong *)(*param_1 + -0x18)) { + return *param_1 + param_2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)"); +} + + +================================================================== + +### FUNC 00411340 (8 bytes) name=FUN_00411340 + +undefined8 FUN_00411340(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 00411348 (20 bytes) name=FUN_00411348 + +long FUN_00411348(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18) + -1; +} + + +================================================================== + +### FUNC 0041135c (64 bytes) name=FUN_0041135c + +undefined8 FUN_0041135c(undefined8 param_1,char *param_2) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + if (sVar1 != 0) { + FUN_004110a4(param_1,param_2,sVar1); + } + return param_1; +} + + +================================================================== + +### FUNC 0041139c (160 bytes) name=FUN_0041139c + +long * FUN_0041139c(long *param_1,undefined1 param_2) + +{ + ulong uVar1; + long lVar2; + long lVar3; + undefined1 *puVar4; + + lVar2 = *param_1; + lVar3 = *(long *)(lVar2 + -0x18); + uVar1 = lVar3 + 1; + if ((*(ulong *)(lVar2 + -0x10) < uVar1) || (0 < *(int *)(lVar2 + -8))) { + FUN_00410ed8(param_1,uVar1); + lVar2 = *param_1; + lVar3 = *(long *)(lVar2 + -0x18); + } + *(undefined1 *)(lVar2 + lVar3) = param_2; + puVar4 = (undefined1 *)*param_1; + if (puVar4 == &DAT_00547748) { + return param_1; + } + *(ulong *)(puVar4 + -0x18) = uVar1; + *(undefined4 *)(puVar4 + -8) = 0; + puVar4[uVar1] = 0; + return param_1; +} + + +================================================================== + +### FUNC 0041143c (40 bytes) name=FUN_0041143c + +undefined8 FUN_0041143c(undefined8 param_1,undefined8 param_2,long param_3) + +{ + if (param_3 != 0) { + FUN_004110a4(); + } + return param_1; +} + + +================================================================== + +### FUNC 00411464 (192 bytes) name=FUN_00411464 + +long * FUN_00411464(long *param_1,undefined8 *param_2) + +{ + ulong uVar1; + undefined1 *puVar2; + long lVar3; + long lVar4; + size_t __n; + + puVar2 = (undefined1 *)*param_2; + __n = *(size_t *)(puVar2 + -0x18); + if (__n != 0) { + lVar4 = *param_1; + lVar3 = *(long *)(lVar4 + -0x18); + uVar1 = lVar3 + __n; + if ((*(ulong *)(lVar4 + -0x10) < uVar1) || (0 < *(int *)(lVar4 + -8))) { + FUN_00410ed8(param_1,uVar1); + lVar4 = *param_1; + puVar2 = (undefined1 *)*param_2; + lVar3 = *(long *)(lVar4 + -0x18); + } + if (__n == 1) { + *(undefined1 *)(lVar4 + lVar3) = *puVar2; + } + else { + memcpy((void *)(lVar4 + lVar3),puVar2,__n); + } + puVar2 = (undefined1 *)*param_1; + if (puVar2 != &DAT_00547748) { + *(undefined4 *)(puVar2 + -8) = 0; + *(ulong *)(puVar2 + -0x18) = uVar1; + puVar2[uVar1] = 0; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00411524 (4 bytes) name=thunk_FUN_00411464 + +long * thunk_FUN_00411464(long *param_1,undefined8 *param_2) + +{ + ulong uVar1; + undefined1 *puVar2; + long lVar3; + long lVar4; + size_t __n; + + puVar2 = (undefined1 *)*param_2; + __n = *(size_t *)(puVar2 + -0x18); + if (__n != 0) { + lVar4 = *param_1; + lVar3 = *(long *)(lVar4 + -0x18); + uVar1 = lVar3 + __n; + if ((*(ulong *)(lVar4 + -0x10) < uVar1) || (0 < *(int *)(lVar4 + -8))) { + FUN_00410ed8(param_1,uVar1); + lVar4 = *param_1; + puVar2 = (undefined1 *)*param_2; + lVar3 = *(long *)(lVar4 + -0x18); + } + if (__n == 1) { + *(undefined1 *)(lVar4 + lVar3) = *puVar2; + } + else { + memcpy((void *)(lVar4 + lVar3),puVar2,__n); + } + puVar2 = (undefined1 *)*param_1; + if (puVar2 != &DAT_00547748) { + *(undefined4 *)(puVar2 + -8) = 0; + *(ulong *)(puVar2 + -0x18) = uVar1; + puVar2[uVar1] = 0; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00411528 (252 bytes) name=FUN_00411528 + +long * FUN_00411528(long *param_1,long *param_2,ulong param_3,ulong param_4) + +{ + size_t __n; + undefined1 *puVar1; + long lVar2; + long lVar3; + ulong uVar4; + long lVar5; + + lVar5 = *param_2; + uVar4 = *(ulong *)(lVar5 + -0x18); + if (uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::append", + param_3,uVar4); + } + __n = uVar4 - param_3; + if (param_4 < uVar4 - param_3) { + __n = param_4; + } + if (__n != 0) { + lVar2 = *param_1; + lVar3 = *(long *)(lVar2 + -0x18); + uVar4 = __n + lVar3; + if ((*(ulong *)(lVar2 + -0x10) < uVar4) || (0 < *(int *)(lVar2 + -8))) { + FUN_00410ed8(param_1,uVar4); + lVar2 = *param_1; + lVar5 = *param_2; + lVar3 = *(long *)(lVar2 + -0x18); + } + if (__n == 1) { + *(undefined1 *)(lVar2 + lVar3) = *(undefined1 *)(lVar5 + param_3); + } + else { + memcpy((void *)(lVar2 + lVar3),(void *)(lVar5 + param_3),__n); + } + puVar1 = (undefined1 *)*param_1; + if (puVar1 != &DAT_00547748) { + *(undefined4 *)(puVar1 + -8) = 0; + *(ulong *)(puVar1 + -0x18) = uVar4; + puVar1[uVar4] = 0; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00411624 (40 bytes) name=FUN_00411624 + +undefined8 FUN_00411624(undefined8 param_1,undefined8 param_2,long param_3) + +{ + if (param_3 != 0) { + FUN_004110a4(); + } + return param_1; +} + + +================================================================== + +### FUNC 0041164c (64 bytes) name=FUN_0041164c + +undefined8 FUN_0041164c(undefined8 param_1,char *param_2) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + if (sVar1 != 0) { + FUN_004110a4(param_1,param_2,sVar1); + } + return param_1; +} + + +================================================================== + +### FUNC 0041168c (44 bytes) name=FUN_0041168c + +undefined8 FUN_0041168c(undefined8 param_1,long param_2,undefined1 param_3) + +{ + if (param_2 != 0) { + FUN_004111ec(param_1,param_2,param_3); + } + return param_1; +} + + +================================================================== + +### FUNC 004116b8 (40 bytes) name=FUN_004116b8 + +undefined8 FUN_004116b8(undefined8 param_1,undefined8 param_2,long param_3) + +{ + if (param_3 != 0) { + FUN_004110a4(); + } + return param_1; +} + + +================================================================== + +### FUNC 004116e0 (152 bytes) name=FUN_004116e0 + +void FUN_004116e0(long *param_1,undefined1 param_2) + +{ + ulong uVar1; + long lVar2; + long lVar3; + undefined1 *puVar4; + + lVar2 = *param_1; + lVar3 = *(long *)(lVar2 + -0x18); + uVar1 = lVar3 + 1; + if ((*(ulong *)(lVar2 + -0x10) < uVar1) || (0 < *(int *)(lVar2 + -8))) { + FUN_00410ed8(param_1,uVar1); + lVar2 = *param_1; + lVar3 = *(long *)(lVar2 + -0x18); + } + *(undefined1 *)(lVar2 + lVar3) = param_2; + puVar4 = (undefined1 *)*param_1; + if (puVar4 == &DAT_00547748) { + return; + } + *(ulong *)(puVar4 + -0x18) = uVar1; + *(undefined4 *)(puVar4 + -8) = 0; + puVar4[uVar1] = 0; + return; +} + + +================================================================== + +### FUNC 00411778 (48 bytes) name=FUN_00411778 + +void FUN_00411778(long *param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (*(int *)(lVar2 + -8) < 0) { + *(undefined4 *)(lVar2 + -8) = 0; + } + lVar1 = *param_2; + if (*(int *)(lVar1 + -8) < 0) { + *(undefined4 *)(lVar1 + -8) = 0; + } + *param_1 = lVar1; + *param_2 = lVar2; + return; +} + + +================================================================== + +### FUNC 004117a8 (248 bytes) name=FUN_004117a8 + +ulong * FUN_004117a8(ulong param_1,byte param_2) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__s; + + if (param_1 == 0) { + return (ulong *)&DAT_00547748; + } + if (0x3ffffffffffffff9 < param_1) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_1 + 0x39 < 0x1001) { + puVar2 = operator_new(param_1 + 0x19); + puVar2[1] = param_1; + *(undefined4 *)(puVar2 + 2) = 0; + __s = puVar2 + 3; + if (param_1 == 1) { + *(byte *)(puVar2 + 3) = param_2; + goto LAB_0041184c; + } + } + else { + uVar1 = (param_1 + 0x1000) - (param_1 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __s = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + __s = memset(__s,(uint)param_2,param_1); +LAB_0041184c: + if (puVar2 != &DAT_00547730) { + *puVar2 = param_1; + *(undefined1 *)((long)puVar2 + param_1 + 0x18) = 0; + } + return __s; +} + + +================================================================== + +### FUNC 004118a0 (248 bytes) name=FUN_004118a0 + +ulong * FUN_004118a0(ulong param_1,byte param_2) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__s; + + if (param_1 == 0) { + return (ulong *)&DAT_00547748; + } + if (0x3ffffffffffffff9 < param_1) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_1 + 0x39 < 0x1001) { + puVar2 = operator_new(param_1 + 0x19); + puVar2[1] = param_1; + *(undefined4 *)(puVar2 + 2) = 0; + __s = puVar2 + 3; + if (param_1 == 1) { + *(byte *)(puVar2 + 3) = param_2; + goto LAB_00411944; + } + } + else { + uVar1 = (param_1 + 0x1000) - (param_1 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __s = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + __s = memset(__s,(uint)param_2,param_1); +LAB_00411944: + if (puVar2 != &DAT_00547730) { + *puVar2 = param_1; + *(undefined1 *)((long)puVar2 + param_1 + 0x18) = 0; + } + return __s; +} + + +================================================================== + +### FUNC 00411998 (140 bytes) name=FUN_00411998 + +size_t FUN_00411998(long *param_1,undefined1 *param_2,ulong param_3,ulong param_4) + +{ + size_t __n; + ulong uVar1; + long lVar2; + + lVar2 = *param_1; + uVar1 = *(ulong *)(lVar2 + -0x18); + if (uVar1 < param_4) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::copy", + param_4,uVar1); + } + __n = uVar1 - param_4; + if (param_3 < uVar1 - param_4) { + __n = param_3; + } + if (__n != 0) { + if (__n == 1) { + *param_2 = *(undefined1 *)(lVar2 + param_4); + return 1; + } + memcpy(param_2,(void *)(lVar2 + param_4),__n); + } + return __n; +} + + +================================================================== + +### FUNC 00411a24 (48 bytes) name=FUN_00411a24 + +void FUN_00411a24(long *param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (*(int *)(lVar2 + -8) < 0) { + *(undefined4 *)(lVar2 + -8) = 0; + } + lVar1 = *param_2; + if (*(int *)(lVar1 + -8) < 0) { + *(undefined4 *)(lVar1 + -8) = 0; + } + *param_1 = lVar1; + *param_2 = lVar2; + return; +} + + +================================================================== + +### FUNC 00411a54 (8 bytes) name=FUN_00411a54 + +undefined8 FUN_00411a54(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 00411a5c (8 bytes) name=FUN_00411a5c + +undefined8 FUN_00411a5c(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 00411a64 (8 bytes) name=FUN_00411a64 + +undefined8 FUN_00411a64(undefined8 param_1) + +{ + return param_1; +} + + +================================================================== + +### FUNC 00411a6c (188 bytes) name=FUN_00411a6c + +ulong FUN_00411a6c(long *param_1,char *param_2,ulong param_3,ulong param_4) + +{ + char cVar1; + int iVar2; + ulong uVar3; + ulong uVar4; + long lVar5; + + lVar5 = *param_1; + uVar3 = *(ulong *)(lVar5 + -0x18); + if (param_4 == 0) { + uVar4 = param_3; + if (uVar3 < param_3) { + uVar4 = 0xffffffffffffffff; + } + } + else { + uVar4 = 0xffffffffffffffff; + if ((param_4 <= uVar3) && (param_3 <= uVar3 - param_4)) { + cVar1 = *param_2; + uVar4 = param_3; + do { + uVar4 = uVar4 + 1; + if ((*(char *)(lVar5 + param_3) == cVar1) && + (iVar2 = memcmp((void *)(lVar5 + uVar4),param_2 + 1,param_4 - 1), iVar2 == 0)) { + return param_3; + } + param_3 = param_3 + 1; + } while (uVar4 <= uVar3 - param_4); + uVar4 = 0xffffffffffffffff; + } + } + return uVar4; +} + + +================================================================== + +### FUNC 00411b28 (196 bytes) name=FUN_00411b28 + +ulong FUN_00411b28(long *param_1,undefined8 *param_2,ulong param_3) + +{ + char cVar1; + int iVar2; + ulong uVar3; + char *pcVar4; + ulong uVar5; + ulong uVar6; + long lVar7; + + pcVar4 = (char *)*param_2; + lVar7 = *param_1; + uVar3 = *(ulong *)(pcVar4 + -0x18); + uVar5 = *(ulong *)(lVar7 + -0x18); + if (uVar3 == 0) { + uVar6 = param_3; + if (uVar5 < param_3) { + uVar6 = 0xffffffffffffffff; + } + } + else { + uVar6 = 0xffffffffffffffff; + if ((uVar3 <= uVar5) && (param_3 <= uVar5 - uVar3)) { + cVar1 = *pcVar4; + uVar6 = param_3; + do { + uVar6 = uVar6 + 1; + if ((*(char *)(lVar7 + param_3) == cVar1) && + (iVar2 = memcmp((void *)(lVar7 + uVar6),pcVar4 + 1,uVar3 - 1), iVar2 == 0)) { + return param_3; + } + param_3 = param_3 + 1; + } while (uVar6 <= uVar5 - uVar3); + uVar6 = 0xffffffffffffffff; + } + } + return uVar6; +} + + +================================================================== + +### FUNC 00411bec (216 bytes) name=FUN_00411bec + +ulong FUN_00411bec(long *param_1,char *param_2,ulong param_3) + +{ + char cVar1; + int iVar2; + size_t sVar3; + ulong uVar4; + ulong uVar5; + long lVar6; + + sVar3 = strlen(param_2); + lVar6 = *param_1; + uVar4 = *(ulong *)(lVar6 + -0x18); + if (sVar3 == 0) { + uVar5 = param_3; + if (uVar4 < param_3) { + uVar5 = 0xffffffffffffffff; + } + } + else { + uVar5 = 0xffffffffffffffff; + if ((sVar3 <= uVar4) && (param_3 <= uVar4 - sVar3)) { + cVar1 = *param_2; + uVar5 = param_3; + do { + uVar5 = uVar5 + 1; + if ((*(char *)(lVar6 + param_3) == cVar1) && + (iVar2 = memcmp((void *)(lVar6 + uVar5),param_2 + 1,sVar3 - 1), iVar2 == 0)) { + return param_3; + } + param_3 = param_3 + 1; + } while (uVar5 <= uVar4 - sVar3); + uVar5 = 0xffffffffffffffff; + } + } + return uVar5; +} + + +================================================================== + +### FUNC 00411cc4 (84 bytes) name=FUN_00411cc4 + +long FUN_00411cc4(long *param_1,byte param_2,ulong param_3) + +{ + void *pvVar1; + long lVar2; + + lVar2 = *param_1; + if (*(ulong *)(lVar2 + -0x18) <= param_3) { + return -1; + } + pvVar1 = memchr((void *)(lVar2 + param_3),(uint)param_2,*(ulong *)(lVar2 + -0x18) - param_3); + lVar2 = (long)pvVar1 - lVar2; + if (pvVar1 == (void *)0x0) { + lVar2 = -1; + } + return lVar2; +} + + +================================================================== + +### FUNC 00411d18 (148 bytes) name=FUN_00411d18 + +ulong FUN_00411d18(long *param_1,undefined8 *param_2,ulong param_3) + +{ + bool bVar1; + int iVar2; + ulong uVar3; + ulong __n; + void *__s2; + long lVar4; + + __s2 = (void *)*param_2; + lVar4 = *param_1; + __n = *(ulong *)((long)__s2 + -0x18); + uVar3 = *(ulong *)(lVar4 + -0x18); + if (uVar3 < __n) { + return 0xffffffffffffffff; + } + uVar3 = uVar3 - __n; + if (uVar3 < param_3) { + param_3 = uVar3; + } + do { + iVar2 = memcmp((void *)(lVar4 + param_3),__s2,__n); + if (iVar2 == 0) { + return param_3; + } + bVar1 = param_3 != 0; + param_3 = param_3 - 1; + } while (bVar1); + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00411dac (148 bytes) name=FUN_00411dac + +ulong FUN_00411dac(long *param_1,void *param_2,ulong param_3,ulong param_4) + +{ + bool bVar1; + int iVar2; + ulong uVar3; + long lVar4; + + lVar4 = *param_1; + uVar3 = *(ulong *)(lVar4 + -0x18); + if (uVar3 < param_4) { + return 0xffffffffffffffff; + } + uVar3 = uVar3 - param_4; + if (param_3 < uVar3) { + uVar3 = param_3; + } + do { + iVar2 = memcmp((void *)(lVar4 + uVar3),param_2,param_4); + if (iVar2 == 0) { + return uVar3; + } + bVar1 = uVar3 != 0; + uVar3 = uVar3 - 1; + } while (bVar1); + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00411e40 (168 bytes) name=FUN_00411e40 + +ulong FUN_00411e40(long *param_1,char *param_2,ulong param_3) + +{ + bool bVar1; + int iVar2; + size_t __n; + ulong uVar3; + long lVar4; + + __n = strlen(param_2); + lVar4 = *param_1; + uVar3 = *(ulong *)(lVar4 + -0x18); + if (uVar3 < __n) { + return 0xffffffffffffffff; + } + uVar3 = uVar3 - __n; + if (param_3 < uVar3) { + uVar3 = param_3; + } + do { + iVar2 = memcmp((void *)(lVar4 + uVar3),param_2,__n); + if (iVar2 == 0) { + return uVar3; + } + bVar1 = uVar3 != 0; + uVar3 = uVar3 - 1; + } while (bVar1); + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00411ee8 (72 bytes) name=FUN_00411ee8 + +void FUN_00411ee8(long *param_1,char param_2,ulong param_3) + +{ + char *pcVar1; + ulong uVar2; + long lVar3; + + lVar3 = *(long *)(*param_1 + -0x18); + if (lVar3 != 0) { + uVar2 = lVar3 - 1; + if (uVar2 < param_3) { + param_3 = uVar2; + } + do { + if (param_3 == 0xffffffffffffffff) { + return; + } + pcVar1 = (char *)(*param_1 + param_3); + param_3 = param_3 - 1; + } while (*pcVar1 != param_2); + } + return; +} + + +================================================================== + +### FUNC 00411f30 (140 bytes) name=FUN_00411f30 + +ulong FUN_00411f30(long *param_1,void *param_2,ulong param_3,size_t param_4) + +{ + void *pvVar1; + long lVar2; + ulong uVar3; + + if (param_4 != 0) { + lVar2 = *param_1; + uVar3 = *(ulong *)(lVar2 + -0x18); + for (; param_3 < uVar3; param_3 = param_3 + 1) { + pvVar1 = memchr(param_2,(uint)*(byte *)(lVar2 + param_3),param_4); + if (pvVar1 != (void *)0x0) { + return param_3; + } + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00411fbc (12 bytes) name=FUN_00411fbc + +void FUN_00411fbc(void) + +{ + FUN_00411f30(); + return; +} + + +================================================================== + +### FUNC 00411fc8 (60 bytes) name=FUN_00411fc8 + +void FUN_00411fc8(undefined8 param_1,char *param_2,undefined8 param_3) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + FUN_00411f30(param_1,param_2,param_3,sVar1); + return; +} + + +================================================================== + +### FUNC 00412004 (84 bytes) name=FUN_00412004 + +long FUN_00412004(long *param_1,byte param_2,ulong param_3) + +{ + void *pvVar1; + long lVar2; + + lVar2 = *param_1; + if (*(ulong *)(lVar2 + -0x18) <= param_3) { + return -1; + } + pvVar1 = memchr((void *)(lVar2 + param_3),(uint)param_2,*(ulong *)(lVar2 + -0x18) - param_3); + lVar2 = (long)pvVar1 - lVar2; + if (pvVar1 == (void *)0x0) { + lVar2 = -1; + } + return lVar2; +} + + +================================================================== + +### FUNC 00412058 (128 bytes) name=FUN_00412058 + +ulong FUN_00412058(long *param_1,undefined8 *param_2,ulong param_3) + +{ + void *pvVar1; + long lVar2; + ulong uVar3; + void *__s; + size_t __n; + long lVar4; + + __s = (void *)*param_2; + lVar4 = *param_1; + __n = *(size_t *)((long)__s + -0x18); + lVar2 = *(long *)(lVar4 + -0x18); + if ((__n != 0) && (lVar2 != 0)) { + uVar3 = lVar2 - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + do { + pvVar1 = memchr(__s,(uint)*(byte *)(lVar4 + param_3),__n); + if (pvVar1 != (void *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + } while (param_3 != 0xffffffffffffffff); + return 0xffffffffffffffff; + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004120d8 (128 bytes) name=FUN_004120d8 + +ulong FUN_004120d8(long *param_1,void *param_2,ulong param_3,size_t param_4) + +{ + bool bVar1; + long lVar2; + ulong uVar3; + void *pvVar4; + long lVar5; + + lVar5 = *param_1; + lVar2 = *(long *)(lVar5 + -0x18); + if ((param_4 != 0) && (lVar2 != 0)) { + uVar3 = lVar2 - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + do { + pvVar4 = memchr(param_2,(uint)*(byte *)(lVar5 + param_3),param_4); + if (pvVar4 != (void *)0x0) { + return param_3; + } + bVar1 = param_3 != 0; + param_3 = param_3 - 1; + } while (bVar1); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00412158 (148 bytes) name=FUN_00412158 + +ulong FUN_00412158(long *param_1,char *param_2,ulong param_3) + +{ + size_t __n; + void *pvVar1; + long lVar2; + ulong uVar3; + long lVar4; + + __n = strlen(param_2); + lVar4 = *param_1; + lVar2 = *(long *)(lVar4 + -0x18); + if ((__n != 0) && (lVar2 != 0)) { + uVar3 = lVar2 - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + do { + pvVar1 = memchr(param_2,(uint)*(byte *)(lVar4 + param_3),__n); + if (pvVar1 != (void *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + } while (param_3 != 0xffffffffffffffff); + return 0xffffffffffffffff; + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004121ec (72 bytes) name=FUN_004121ec + +void FUN_004121ec(long *param_1,char param_2,ulong param_3) + +{ + char *pcVar1; + ulong uVar2; + long lVar3; + + lVar3 = *(long *)(*param_1 + -0x18); + if (lVar3 != 0) { + uVar2 = lVar3 - 1; + if (uVar2 < param_3) { + param_3 = uVar2; + } + do { + if (param_3 == 0xffffffffffffffff) { + return; + } + pcVar1 = (char *)(*param_1 + param_3); + param_3 = param_3 - 1; + } while (*pcVar1 != param_2); + } + return; +} + + +================================================================== + +### FUNC 00412234 (132 bytes) name=FUN_00412234 + +ulong FUN_00412234(long *param_1,undefined8 *param_2,ulong param_3) + +{ + void *pvVar1; + void *__s; + long lVar2; + ulong uVar3; + size_t __n; + + lVar2 = *param_1; + __s = (void *)*param_2; + uVar3 = *(ulong *)(lVar2 + -0x18); + __n = *(size_t *)((long)__s + -0x18); + while( true ) { + if (uVar3 <= param_3) { + return 0xffffffffffffffff; + } + pvVar1 = memchr(__s,(uint)*(byte *)(lVar2 + param_3),__n); + if (pvVar1 == (void *)0x0) break; + param_3 = param_3 + 1; + } + return param_3; +} + + +================================================================== + +### FUNC 004122b8 (132 bytes) name=FUN_004122b8 + +ulong FUN_004122b8(long *param_1,void *param_2,ulong param_3,size_t param_4) + +{ + void *pvVar1; + long lVar2; + ulong uVar3; + + lVar2 = *param_1; + uVar3 = *(ulong *)(lVar2 + -0x18); + while( true ) { + if (uVar3 <= param_3) { + return 0xffffffffffffffff; + } + pvVar1 = memchr(param_2,(uint)*(byte *)(lVar2 + param_3),param_4); + if (pvVar1 == (void *)0x0) break; + param_3 = param_3 + 1; + } + return param_3; +} + + +================================================================== + +### FUNC 0041233c (144 bytes) name=FUN_0041233c + +ulong FUN_0041233c(long *param_1,char *param_2,ulong param_3) + +{ + size_t __n; + void *pvVar1; + long lVar2; + ulong uVar3; + + __n = strlen(param_2); + lVar2 = *param_1; + uVar3 = *(ulong *)(lVar2 + -0x18); + while( true ) { + if (uVar3 <= param_3) { + return 0xffffffffffffffff; + } + pvVar1 = memchr(param_2,(uint)*(byte *)(lVar2 + param_3),__n); + if (pvVar1 == (void *)0x0) break; + param_3 = param_3 + 1; + } + return param_3; +} + + +================================================================== + +### FUNC 004123cc (76 bytes) name=FUN_004123cc + +ulong FUN_004123cc(long *param_1,char param_2,ulong param_3) + +{ + char *pcVar1; + long lVar2; + + lVar2 = *param_1; + if (param_3 < *(ulong *)(lVar2 + -0x18)) { + pcVar1 = (char *)(lVar2 + param_3); + while( true ) { + if (*pcVar1 != param_2) { + return param_3; + } + param_3 = param_3 + 1; + if (*(ulong *)(lVar2 + -0x18) <= param_3) break; + param_2 = *(char *)(lVar2 + param_3); + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00412418 (124 bytes) name=FUN_00412418 + +ulong FUN_00412418(long *param_1,undefined8 *param_2,ulong param_3) + +{ + ulong uVar1; + void *pvVar2; + long lVar3; + void *__s; + long lVar4; + size_t __n; + + lVar4 = *param_1; + __s = (void *)*param_2; + lVar3 = *(long *)(lVar4 + -0x18); + __n = *(size_t *)((long)__s + -0x18); + if (lVar3 == 0) { + return 0xffffffffffffffff; + } + uVar1 = lVar3 - 1; + if (uVar1 < param_3) { + param_3 = uVar1; + } + do { + pvVar2 = memchr(__s,(uint)*(byte *)(lVar4 + param_3),__n); + if (pvVar2 == (void *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + } while (param_3 != 0xffffffffffffffff); + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00412494 (144 bytes) name=FUN_00412494 + +ulong FUN_00412494(long *param_1,void *param_2,ulong param_3,size_t param_4) + +{ + ulong uVar1; + bool bVar2; + void *pvVar3; + long lVar4; + long lVar5; + + lVar5 = *param_1; + lVar4 = *(long *)(lVar5 + -0x18); + if (lVar4 == 0) { + return 0xffffffffffffffff; + } + uVar1 = lVar4 - 1; + if (uVar1 < param_3) { + param_3 = uVar1; + } + do { + pvVar3 = memchr(param_2,(uint)*(byte *)(lVar5 + param_3),param_4); + if (pvVar3 == (void *)0x0) { + return param_3; + } + bVar2 = param_3 != 0; + param_3 = param_3 - 1; + } while (bVar2); + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00412524 (144 bytes) name=FUN_00412524 + +ulong FUN_00412524(long *param_1,char *param_2,ulong param_3) + +{ + ulong uVar1; + size_t __n; + void *pvVar2; + long lVar3; + long lVar4; + + __n = strlen(param_2); + lVar4 = *param_1; + lVar3 = *(long *)(lVar4 + -0x18); + if (lVar3 == 0) { + return 0xffffffffffffffff; + } + uVar1 = lVar3 - 1; + if (uVar1 < param_3) { + param_3 = uVar1; + } + do { + pvVar2 = memchr(param_2,(uint)*(byte *)(lVar4 + param_3),__n); + if (pvVar2 == (void *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + } while (param_3 != 0xffffffffffffffff); + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004125b4 (76 bytes) name=FUN_004125b4 + +ulong FUN_004125b4(long *param_1,char param_2,ulong param_3) + +{ + ulong uVar1; + bool bVar2; + ulong uVar3; + long lVar4; + + uVar3 = 0xffffffffffffffff; + lVar4 = *(long *)(*param_1 + -0x18); + if (lVar4 != 0) { + uVar1 = lVar4 - 1; + uVar3 = param_3; + if (uVar1 < param_3) { + uVar3 = uVar1; + } + while (*(char *)(*param_1 + uVar3) == param_2) { + bVar2 = uVar3 == 0; + uVar3 = uVar3 - 1; + if (bVar2) { + return 0xffffffffffffffff; + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00412600 (100 bytes) name=FUN_00412600 + +undefined8 FUN_00412600(undefined8 param_1,long *param_2,ulong param_3,undefined8 param_4) + +{ + if (param_3 <= *(ulong *)(*param_2 + -0x18)) { + FUN_004105d4(param_1,param_2,param_3,param_4); + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr", + param_3,*(ulong *)(*param_2 + -0x18)); +} + + +================================================================== + +### FUNC 00412664 (104 bytes) name=FUN_00412664 + +int FUN_00412664(undefined8 *param_1,undefined8 *param_2) + +{ + size_t __n; + int iVar1; + ulong uVar2; + long lVar3; + ulong uVar4; + + uVar4 = *(ulong *)((long)*param_2 + -0x18); + uVar2 = *(ulong *)((long)*param_1 + -0x18); + __n = uVar4; + if (uVar2 < uVar4) { + __n = uVar2; + } + iVar1 = memcmp((void *)*param_1,(void *)*param_2,__n); + if (iVar1 == 0) { + iVar1 = 0x7fffffff; + lVar3 = uVar2 - uVar4; + if (lVar3 < 0x80000000) { + iVar1 = -0x80000000; + if (-0x80000001 < lVar3) { + iVar1 = (int)lVar3; + } + return iVar1; + } + } + return iVar1; +} + + +================================================================== + +### FUNC 004126cc (156 bytes) name=FUN_004126cc + +int FUN_004126cc(long *param_1,ulong param_2,ulong param_3,undefined8 *param_4) + +{ + ulong uVar1; + size_t __n; + int iVar2; + ulong uVar3; + long lVar4; + + uVar3 = *(ulong *)(*param_1 + -0x18); + if (uVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar3); + } + uVar1 = uVar3 - param_2; + if (param_3 < uVar3 - param_2) { + uVar1 = param_3; + } + uVar3 = *(ulong *)((long)*param_4 + -0x18); + __n = uVar1; + if (uVar3 < uVar1) { + __n = uVar3; + } + iVar2 = memcmp((void *)(*param_1 + param_2),(void *)*param_4,__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar4 = uVar1 - uVar3; + if (lVar4 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar4) { + iVar2 = (int)lVar4; + } + return iVar2; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00412768 (200 bytes) name=FUN_00412768 + +int FUN_00412768(long *param_1,ulong param_2,ulong param_3,long *param_4,ulong param_5,ulong param_6 + ) + +{ + ulong uVar1; + size_t __n; + int iVar2; + ulong uVar3; + ulong uVar4; + long lVar5; + + uVar4 = *(ulong *)(*param_1 + -0x18); + if (uVar4 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar4); + } + uVar3 = *(ulong *)(*param_4 + -0x18); + if (param_5 <= uVar3) { + uVar3 = uVar3 - param_5; + uVar1 = uVar4 - param_2; + if (param_3 < uVar4 - param_2) { + uVar1 = param_3; + } + if (param_6 < uVar3) { + uVar3 = param_6; + } + __n = uVar1; + if (uVar3 < uVar1) { + __n = uVar3; + } + iVar2 = memcmp((void *)(*param_1 + param_2),(void *)(*param_4 + param_5),__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar5 = uVar1 - uVar3; + if (lVar5 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar5) { + iVar2 = (int)lVar5; + } + return iVar2; + } + } + return iVar2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_5); +} + + +================================================================== + +### FUNC 00412830 (124 bytes) name=FUN_00412830 + +int FUN_00412830(undefined8 *param_1,char *param_2) + +{ + size_t __n; + int iVar1; + size_t sVar2; + ulong uVar3; + long lVar4; + void *__s1; + + __s1 = (void *)*param_1; + sVar2 = strlen(param_2); + uVar3 = *(ulong *)((long)__s1 + -0x18); + __n = sVar2; + if (uVar3 < sVar2) { + __n = uVar3; + } + iVar1 = memcmp(__s1,param_2,__n); + if (iVar1 == 0) { + iVar1 = 0x7fffffff; + lVar4 = uVar3 - sVar2; + if (lVar4 < 0x80000000) { + iVar1 = -0x80000000; + if (-0x80000001 < lVar4) { + iVar1 = (int)lVar4; + } + return iVar1; + } + } + return iVar1; +} + + +================================================================== + +### FUNC 004128ac (180 bytes) name=FUN_004128ac + +int FUN_004128ac(long *param_1,ulong param_2,ulong param_3,char *param_4) + +{ + ulong uVar1; + size_t __n; + int iVar2; + size_t sVar3; + ulong uVar4; + long lVar5; + + lVar5 = *param_1; + uVar4 = *(ulong *)(lVar5 + -0x18); + if (uVar4 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar4); + } + uVar1 = uVar4 - param_2; + if (param_3 < uVar4 - param_2) { + uVar1 = param_3; + } + sVar3 = strlen(param_4); + __n = sVar3; + if (uVar1 < sVar3) { + __n = uVar1; + } + iVar2 = memcmp((void *)(lVar5 + param_2),param_4,__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar5 = uVar1 - sVar3; + if (lVar5 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar5) { + iVar2 = (int)lVar5; + } + return iVar2; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00412960 (156 bytes) name=FUN_00412960 + +int FUN_00412960(long *param_1,ulong param_2,ulong param_3,void *param_4,ulong param_5) + +{ + ulong uVar1; + size_t __n; + int iVar2; + ulong uVar3; + long lVar4; + + uVar3 = *(ulong *)(*param_1 + -0x18); + if (uVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar3); + } + uVar1 = uVar3 - param_2; + if (param_3 < uVar3 - param_2) { + uVar1 = param_3; + } + __n = uVar1; + if (param_5 < uVar1) { + __n = param_5; + } + iVar2 = memcmp((void *)(*param_1 + param_2),param_4,__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar4 = uVar1 - param_5; + if (lVar4 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar4) { + iVar2 = (int)lVar4; + } + return iVar2; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 004129fc (8 bytes) name=FUN_004129fc + +void FUN_004129fc(undefined8 *param_1,undefined8 param_2) + +{ + *param_1 = param_2; + return; +} + + +================================================================== + +### FUNC 00412a04 (12 bytes) name=FUN_00412a04 + +undefined8 * FUN_00412a04(void) + +{ + return &DAT_00547730; +} + + +================================================================== + +### FUNC 00412a10 (12 bytes) name=FUN_00412a10 + +uint FUN_00412a10(long param_1) + +{ + return *(uint *)(param_1 + 0x10) >> 0x1f; +} + + +================================================================== + +### FUNC 00412a1c (16 bytes) name=FUN_00412a1c + +bool FUN_00412a1c(long param_1) + +{ + return 0 < *(int *)(param_1 + 0x10); +} + + +================================================================== + +### FUNC 00412a2c (12 bytes) name=FUN_00412a2c + +void FUN_00412a2c(long param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 00412a38 (8 bytes) name=FUN_00412a38 + +void FUN_00412a38(long param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + return; +} + + +================================================================== + +### FUNC 00412a40 (40 bytes) name=FUN_00412a40 + +void FUN_00412a40(long *param_1,long param_2) + +{ + if (param_1 == &DAT_00547730) { + return; + } + *(undefined4 *)(param_1 + 2) = 0; + *param_1 = param_2; + *(undefined1 *)((long)param_1 + param_2 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 00412a68 (8 bytes) name=FUN_00412a68 + +long FUN_00412a68(long param_1) + +{ + return param_1 + 0x18; +} + + +================================================================== + +### FUNC 00412a70 (152 bytes) name=FUN_00412a70 + +void FUN_00412a70(ulong param_1,ulong param_2) + +{ + void *pvVar1; + + if (0x3ffffffffffffff9 < param_1) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_2 < param_1) { + if (param_1 < param_2 << 1) { + param_1 = param_2 << 1; + } + if ((0x1000 < param_1 + 0x39) && (param_2 < param_1)) { + param_1 = (param_1 + 0x1000) - (param_1 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < param_1) { + param_1 = 0x3ffffffffffffff9; + } + } + } + pvVar1 = operator_new(param_1 + 0x19); + *(ulong *)((long)pvVar1 + 8) = param_1; + *(undefined4 *)((long)pvVar1 + 0x10) = 0; + return; +} + + +================================================================== + +### FUNC 00412b08 (496 bytes) name=FUN_00412b08 + +void FUN_00412b08(long *param_1,size_t param_2,long param_3,long param_4) + +{ + ulong uVar1; + char cVar2; + bool bVar3; + undefined8 *puVar4; + long lVar5; + int *piVar6; + int iVar7; + undefined8 *puVar8; + size_t __n; + undefined1 auStack_8 [8]; + + puVar8 = (undefined8 *)*param_1; + uVar1 = (param_4 - param_3) + puVar8[-3]; + __n = (puVar8[-3] - param_2) - param_3; + if (((ulong)puVar8[-2] < uVar1) || (0 < *(int *)(puVar8 + -1))) { + puVar4 = (undefined8 *)FUN_00412a70(uVar1,puVar8[-2],auStack_8); + if (param_2 != 0) { + if (param_2 == 1) { + *(undefined1 *)(puVar4 + 3) = *(undefined1 *)*param_1; + } + else { + memcpy(puVar4 + 3,(undefined1 *)*param_1,param_2); + } + } + if (__n != 0) { + param_4 = param_2 + 0x18 + param_4; + if (__n == 1) { + *(undefined1 *)((long)puVar4 + param_4) = *(undefined1 *)(*param_1 + param_3 + param_2); + } + else { + memcpy((void *)((long)puVar4 + param_4),(void *)(*param_1 + param_3 + param_2),__n); + } + } + puVar8 = puVar4 + 3; + lVar5 = *param_1; + if ((undefined8 *)(lVar5 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar7 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar7 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar7 = *piVar6; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar3) { + *piVar6 = iVar7 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar7 < 1) { + operator_delete((undefined8 *)(lVar5 + -0x18)); + } + } + *param_1 = (long)puVar8; + if (puVar4 == &DAT_00547730) { + return; + } + } + else { + if ((param_3 != param_4) && (__n != 0)) { + if (__n == 1) { + *(undefined1 *)((long)puVar8 + param_4 + param_2) = + *(undefined1 *)((long)puVar8 + param_3 + param_2); + puVar8 = (undefined8 *)*param_1; + } + else { + memmove((void *)((long)puVar8 + param_4 + param_2), + (void *)((long)puVar8 + param_3 + param_2),__n); + puVar8 = (undefined8 *)*param_1; + } + } + if (puVar8 == (undefined8 *)&DAT_00547748) { + return; + } + } + puVar8[-3] = uVar1; + *(undefined4 *)(puVar8 + -1) = 0; + *(undefined1 *)((long)puVar8 + uVar1) = 0; + return; +} + + +================================================================== + +### FUNC 00412cf8 (92 bytes) name=FUN_00412cf8 + +void FUN_00412cf8(undefined8 *param_1) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if (puVar1 != &DAT_00547748) { + if (0 < *(int *)(puVar1 + -8)) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return; +} + + +================================================================== + +### FUNC 00412d54 (92 bytes) name=FUN_00412d54 + +void FUN_00412d54(undefined8 *param_1) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return; +} + + +================================================================== + +### FUNC 00412db0 (20 bytes) name=FUN_00412db0 + +void FUN_00412db0(long *param_1) + +{ + FUN_00412b08(param_1,0,*(undefined8 *)(*param_1 + -0x18),0); + return; +} + + +================================================================== + +### FUNC 00412dc4 (96 bytes) name=FUN_00412dc4 + +long * FUN_00412dc4(long *param_1,ulong param_2,ulong param_3) + +{ + ulong uVar1; + + if (param_2 <= *(ulong *)(*param_1 + -0x18)) { + uVar1 = *(ulong *)(*param_1 + -0x18) - param_2; + if (param_3 < uVar1) { + uVar1 = param_3; + } + FUN_00412b08(param_1,param_2,uVar1,0); + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase", + param_2); +} + + +================================================================== + +### FUNC 00412e24 (68 bytes) name=FUN_00412e24 + +long FUN_00412e24(long *param_1,long param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + FUN_00412b08(param_1,param_2 - lVar2,1,0); + lVar1 = *param_1; + *(undefined4 *)(lVar1 + -8) = 0xffffffff; + return lVar1 + (param_2 - lVar2); +} + + +================================================================== + +### FUNC 00412e68 (92 bytes) name=FUN_00412e68 + +long FUN_00412e68(long *param_1,long param_2,long param_3) + +{ + long lVar1; + long lVar2; + + if (param_3 - param_2 == 0) { + return param_2; + } + lVar2 = *param_1; + FUN_00412b08(param_1,param_2 - lVar2,param_3 - param_2,0); + lVar1 = *param_1; + *(undefined4 *)(lVar1 + -8) = 0xffffffff; + return lVar1 + (param_2 - lVar2); +} + + +================================================================== + +### FUNC 00412ec4 (156 bytes) name=FUN_00412ec4 + +long * FUN_00412ec4(long *param_1,long param_2,long param_3,ulong param_4,byte param_5) + +{ + if ((ulong)((0x3ffffffffffffff9 - *(long *)(*param_1 + -0x18)) + param_3) < param_4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); + } + FUN_00412b08(); + if (param_4 != 0) { + if (param_4 == 1) { + *(byte *)(*param_1 + param_2) = param_5; + return param_1; + } + memset((void *)(*param_1 + param_2),(uint)param_5,param_4); + } + return param_1; +} + + +================================================================== + +### FUNC 00412f60 (124 bytes) name=FUN_00412f60 + +long * FUN_00412f60(long *param_1,long param_2,undefined8 param_3,undefined1 *param_4,size_t param_5 + ) + +{ + FUN_00412b08(); + if (param_5 != 0) { + if (param_5 == 1) { + *(undefined1 *)(*param_1 + param_2) = *param_4; + return param_1; + } + memcpy((void *)(*param_1 + param_2),param_4,param_5); + } + return param_1; +} + + +================================================================== + +### FUNC 00412fdc (296 bytes) name=FUN_00412fdc + +undefined8 * FUN_00412fdc(undefined8 *param_1,undefined1 *param_2,size_t param_3) + +{ + undefined1 *__dest; + undefined8 *puVar1; + + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); + if (0x3ffffffffffffff9 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::assign"); + } + if (((param_2 < __dest) || (__dest + *(long *)(__dest + -0x18) < param_2)) || + (0 < *(int *)(__dest + -8))) { + FUN_00412b08(param_1,0,*(long *)(__dest + -0x18),param_3); + if (param_3 == 0) { + return param_1; + } + if (param_3 != 1) { + memcpy((undefined1 *)*param_1,param_2,param_3); + return param_1; + } + *(undefined1 *)*param_1 = *param_2; + return param_1; + } + if ((ulong)((long)param_2 - (long)__dest) < param_3) { + if (param_2 == __dest) goto LAB_00413094; + if (param_3 != 1) { + memmove(__dest,param_2,param_3); + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); + goto LAB_00413094; + } + } + else if (param_3 != 1) { + memcpy(__dest,param_2,param_3); + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); + goto LAB_00413094; + } + *__dest = *param_2; + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); +LAB_00413094: + if (puVar1 != &DAT_00547730) { + *(undefined4 *)(__dest + -8) = 0; + *(size_t *)(__dest + -0x18) = param_3; + __dest[param_3] = 0; + } + return param_1; +} + + +================================================================== + +### FUNC 00413104 (36 bytes) name=FUN_00413104 + +undefined8 FUN_00413104(undefined8 param_1) + +{ + FUN_00412fdc(); + return param_1; +} + + +================================================================== + +### FUNC 00413128 (76 bytes) name=FUN_00413128 + +void FUN_00413128(undefined8 param_1,long *param_2,ulong param_3,ulong param_4) + +{ + ulong uVar1; + ulong uVar2; + + uVar2 = *(ulong *)(*param_2 + -0x18); + if (param_3 <= uVar2) { + uVar1 = uVar2 - param_3; + if (param_4 < uVar2 - param_3) { + uVar1 = param_4; + } + FUN_00412fdc(param_1,*param_2 + param_3,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::assign", + param_3,uVar2); +} + + +================================================================== + +### FUNC 00413174 (52 bytes) name=FUN_00413174 + +void FUN_00413174(undefined8 param_1,char *param_2) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + FUN_00412fdc(param_1,param_2,sVar1); + return; +} + + +================================================================== + +### FUNC 004131a8 (52 bytes) name=FUN_004131a8 + +void FUN_004131a8(undefined8 param_1,char *param_2) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + FUN_00412fdc(param_1,param_2,sVar1); + return; +} + + +================================================================== + +### FUNC 004131dc (4 bytes) name=thunk_FUN_00412fdc + +undefined8 * thunk_FUN_00412fdc(undefined8 *param_1,undefined1 *param_2,size_t param_3) + +{ + undefined1 *__dest; + undefined8 *puVar1; + + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); + if (0x3ffffffffffffff9 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::assign"); + } + if (((param_2 < __dest) || (__dest + *(long *)(__dest + -0x18) < param_2)) || + (0 < *(int *)(__dest + -8))) { + FUN_00412b08(param_1,0,*(long *)(__dest + -0x18),param_3); + if (param_3 == 0) { + return param_1; + } + if (param_3 != 1) { + memcpy((undefined1 *)*param_1,param_2,param_3); + return param_1; + } + *(undefined1 *)*param_1 = *param_2; + return param_1; + } + if ((ulong)((long)param_2 - (long)__dest) < param_3) { + if (param_2 == __dest) goto LAB_00413094; + if (param_3 != 1) { + memmove(__dest,param_2,param_3); + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); + goto LAB_00413094; + } + } + else if (param_3 != 1) { + memcpy(__dest,param_2,param_3); + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); + goto LAB_00413094; + } + *__dest = *param_2; + __dest = (undefined1 *)*param_1; + puVar1 = (undefined8 *)(__dest + -0x18); +LAB_00413094: + if (puVar1 != &DAT_00547730) { + *(undefined4 *)(__dest + -8) = 0; + *(size_t *)(__dest + -0x18) = param_3; + __dest[param_3] = 0; + } + return param_1; +} + + +================================================================== + +### FUNC 004131e0 (476 bytes) name=FUN_004131e0 + +long * FUN_004131e0(long *param_1,ulong param_2,undefined1 *param_3,ulong param_4) + +{ + undefined1 *__src; + long lVar1; + undefined1 *__dest; + ulong uVar2; + undefined1 *puVar3; + size_t __n; + + puVar3 = (undefined1 *)*param_1; + uVar2 = *(ulong *)(puVar3 + -0x18); + if (uVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::insert", + param_2,uVar2); + } + if (param_4 <= 0x3ffffffffffffff9 - uVar2) { + if (((param_3 < puVar3) || (puVar3 + uVar2 < param_3)) || (0 < *(int *)(puVar3 + -8))) { + FUN_00412b08(param_1,param_2,0,param_4); + if (param_4 != 0) { + if (param_4 == 1) { + *(undefined1 *)(*param_1 + param_2) = *param_3; + } + else { + memcpy((void *)(*param_1 + param_2),param_3,param_4); + } + } + } + else { + FUN_00412b08(param_1,param_2,0); + lVar1 = *param_1; + __src = param_3 + (lVar1 - (long)puVar3); + __dest = (undefined1 *)(lVar1 + param_2); + if (__src + param_4 <= __dest) { + if (param_4 != 1) { + memcpy(__dest,__src,param_4); + return param_1; + } + *(undefined1 *)(lVar1 + param_2) = param_3[lVar1 - (long)puVar3]; + return param_1; + } + if (__src < __dest) { + __n = (long)__dest - (long)__src; + if (__n == 1) { + *(undefined1 *)(lVar1 + param_2) = param_3[lVar1 - (long)puVar3]; + } + else { + __dest = memcpy(__dest,__src,__n); + } + if (param_4 - __n == 1) { + __dest[__n] = __dest[param_4]; + } + else { + memcpy(__dest + __n,__dest + param_4,param_4 - __n); + } + } + else if (param_4 == 1) { + *(undefined1 *)(lVar1 + param_2) = __src[1]; + } + else { + memcpy(__dest,__src + param_4,param_4); + } + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::insert"); +} + + +================================================================== + +### FUNC 004133bc (12 bytes) name=FUN_004133bc + +void FUN_004133bc(long *param_1,long param_2) + +{ + FUN_004131e0(param_1,param_2 - *param_1); + return; +} + + +================================================================== + +### FUNC 004133c8 (76 bytes) name=FUN_004133c8 + +void FUN_004133c8(undefined8 param_1,undefined8 param_2,long *param_3,ulong param_4,ulong param_5) + +{ + ulong uVar1; + ulong uVar2; + + uVar2 = *(ulong *)(*param_3 + -0x18); + if (param_4 <= uVar2) { + uVar1 = uVar2 - param_4; + if (param_5 < uVar2 - param_4) { + uVar1 = param_5; + } + FUN_004131e0(param_1,param_2,*param_3 + param_4,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::insert", + param_4,uVar2); +} + + +================================================================== + +### FUNC 00413414 (60 bytes) name=FUN_00413414 + +void FUN_00413414(undefined8 param_1,undefined8 param_2,char *param_3) + +{ + size_t sVar1; + + sVar1 = strlen(param_3); + FUN_004131e0(param_1,param_2,param_3,sVar1); + return; +} + + +================================================================== + +### FUNC 00413450 (12 bytes) name=FUN_00413450 + +void FUN_00413450(void) + +{ + FUN_004131e0(); + return; +} + + +================================================================== + +### FUNC 0041345c (68 bytes) name=FUN_0041345c + +void FUN_0041345c(long *param_1) + +{ + ulong uVar1; + + uVar1 = *(ulong *)(*param_1 + -0x18) - 1; + if (uVar1 <= *(ulong *)(*param_1 + -0x18)) { + FUN_00412b08(param_1,uVar1,1,0); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase"); +} + + +================================================================== + +### FUNC 004134a0 (100 bytes) name=FUN_004134a0 + +void FUN_004134a0(long *param_1,ulong param_2,undefined1 param_3) + +{ + ulong uVar1; + + uVar1 = *(ulong *)(*param_1 + -0x18); + if (0x3ffffffffffffff9 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::resize",param_2,param_3); + } + if (uVar1 < param_2) { + if (param_2 - uVar1 != 0) { + FUN_004111ec(param_1,param_2 - uVar1); + return; + } + } + else if (param_2 < uVar1) { + FUN_00412b08(param_1,param_2,uVar1 - param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 00413504 (8 bytes) name=FUN_00413504 + +void FUN_00413504(undefined8 param_1,undefined8 param_2) + +{ + FUN_004134a0(param_1,param_2,0); + return; +} + + +================================================================== + +### FUNC 0041350c (96 bytes) name=FUN_0041350c + +undefined1 * FUN_0041350c(undefined8 *param_1) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1; +} + + +================================================================== + +### FUNC 0041356c (96 bytes) name=FUN_0041356c + +undefined1 * FUN_0041356c(undefined8 *param_1) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1; +} + + +================================================================== + +### FUNC 004135cc (100 bytes) name=FUN_004135cc + +undefined1 * FUN_004135cc(undefined8 *param_1,long param_2) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + param_2; +} + + +================================================================== + +### FUNC 00413630 (108 bytes) name=FUN_00413630 + +undefined8 * FUN_00413630(undefined8 *param_1,undefined8 *param_2) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_2; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_2,0,0,0); + puVar1 = (undefined1 *)*param_2; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + *param_1 = puVar1; + return param_1; +} + + +================================================================== + +### FUNC 0041369c (100 bytes) name=FUN_0041369c + +undefined1 * FUN_0041369c(undefined8 *param_1) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + *(long *)(puVar1 + -0x18); +} + + +================================================================== + +### FUNC 00413700 (116 bytes) name=FUN_00413700 + +undefined8 * FUN_00413700(undefined8 *param_1,undefined8 *param_2) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_2; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_2,0,0,0); + puVar1 = (undefined1 *)*param_2; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + *param_1 = puVar1 + *(long *)(puVar1 + -0x18); + return param_1; +} + + +================================================================== + +### FUNC 00413774 (104 bytes) name=FUN_00413774 + +undefined1 * FUN_00413774(undefined8 *param_1) + +{ + undefined1 *puVar1; + long lVar2; + + puVar1 = (undefined1 *)*param_1; + lVar2 = *(long *)(puVar1 + -0x18); + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + lVar2 + -1; +} + + +================================================================== + +### FUNC 004137dc (124 bytes) name=FUN_004137dc + +undefined1 * FUN_004137dc(undefined8 *param_1,ulong param_2) + +{ + undefined1 *puVar1; + + puVar1 = (undefined1 *)*param_1; + if (param_2 < *(ulong *)(puVar1 + -0x18)) { + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547748)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00412b08(param_1,0,0,0); + puVar1 = (undefined1 *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + param_2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)"); +} + + +================================================================== + +### FUNC 00413858 (64 bytes) name=FUN_00413858 + +long * FUN_00413858(long *param_1,undefined1 param_2) + +{ + FUN_00412b08(param_1,0,*(undefined8 *)(*param_1 + -0x18),1); + *(undefined1 *)*param_1 = param_2; + return param_1; +} + + +================================================================== + +### FUNC 00413898 (120 bytes) name=FUN_00413898 + +long FUN_00413898(long *param_1,long param_2,undefined1 param_3) + +{ + long lVar1; + + param_2 = param_2 - *param_1; + if (*(long *)(*param_1 + -0x18) != 0x3ffffffffffffff9) { + FUN_00412b08(param_1,param_2,0,1); + *(undefined1 *)(*param_1 + param_2) = param_3; + lVar1 = *param_1; + *(undefined4 *)(lVar1 + -8) = 0xffffffff; + return lVar1 + param_2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); +} + + +================================================================== + +### FUNC 00413910 (148 bytes) name=FUN_00413910 + +long * FUN_00413910(long *param_1,size_t param_2,byte param_3) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(*param_1 + -0x18); + if (0x3ffffffffffffff9 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux",*param_1,uVar1); + } + FUN_00412b08(param_1,0,uVar1,param_2); + if (param_2 != 0) { + if (param_2 == 1) { + *(byte *)*param_1 = param_3; + return param_1; + } + memset((byte *)*param_1,(uint)param_3,param_2); + } + return param_1; +} + + +================================================================== + +### FUNC 004139a4 (192 bytes) name=FUN_004139a4 + +long * FUN_004139a4(long *param_1,ulong param_2,ulong param_3,byte param_4) + +{ + if (*(ulong *)(*param_1 + -0x18) < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::insert", + param_2); + } + if (param_3 <= 0x3ffffffffffffff9 - *(ulong *)(*param_1 + -0x18)) { + FUN_00412b08(param_1,param_2,0,param_3); + if (param_3 != 0) { + if (param_3 == 1) { + *(byte *)(*param_1 + param_2) = param_4; + return param_1; + } + memset((void *)(*param_1 + param_2),(uint)param_4,param_3); + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); +} + + +================================================================== + +### FUNC 00413a64 (164 bytes) name=FUN_00413a64 + +long * FUN_00413a64(long *param_1,long param_2,long param_3,ulong param_4,byte param_5) + +{ + long lVar1; + + lVar1 = param_2 - *param_1; + if ((ulong)((0x3ffffffffffffff9 - *(long *)(*param_1 + -0x18)) + (param_3 - param_2)) < param_4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); + } + FUN_00412b08(param_1,lVar1); + if (param_4 != 0) { + if (param_4 == 1) { + *(byte *)(*param_1 + lVar1) = param_5; + return param_1; + } + memset((void *)(*param_1 + lVar1),(uint)param_5,param_4); + } + return param_1; +} + + +================================================================== + +### FUNC 00413b08 (204 bytes) name=FUN_00413b08 + +long * FUN_00413b08(long *param_1,ulong param_2,ulong param_3,ulong param_4,byte param_5) + +{ + ulong uVar1; + ulong uVar2; + + uVar2 = *(ulong *)(*param_1 + -0x18); + if (uVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace", + param_2,uVar2); + } + uVar1 = uVar2 - param_2; + if (param_3 < uVar2 - param_2) { + uVar1 = param_3; + } + if (param_4 <= (0x3ffffffffffffff9 - uVar2) + uVar1) { + FUN_00412b08(); + if (param_4 != 0) { + if (param_4 == 1) { + *(byte *)(*param_1 + param_2) = param_5; + return param_1; + } + memset((void *)(*param_1 + param_2),(uint)param_5,param_4); + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); +} + + +================================================================== + +### FUNC 00413bd4 (152 bytes) name=FUN_00413bd4 + +void FUN_00413bd4(long *param_1,long param_2,ulong param_3,byte param_4) + +{ + param_2 = param_2 - *param_1; + if (0x3ffffffffffffff9U - *(long *)(*param_1 + -0x18) < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); + } + FUN_00412b08(param_1,param_2,0,param_3); + if (param_3 != 0) { + if (param_3 != 1) { + memset((void *)(*param_1 + param_2),(uint)param_4,param_3); + return; + } + *(byte *)(*param_1 + param_2) = param_4; + } + return; +} + + +================================================================== + +### FUNC 00413c6c (708 bytes) name=FUN_00413c6c + +long * FUN_00413c6c(long *param_1,ulong param_2,ulong param_3,undefined1 *param_4,ulong param_5) + +{ + undefined1 *puVar1; + ulong uVar2; + char cVar3; + bool bVar4; + long lVar5; + int iVar6; + ulong *puVar7; + undefined1 *puVar8; + long lVar9; + ulong uVar10; + ulong *__dest; + undefined1 auStack_8 [8]; + + puVar8 = (undefined1 *)*param_1; + uVar10 = *(ulong *)(puVar8 + -0x18); + if (uVar10 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace", + param_2); + } + uVar2 = uVar10 - param_2; + if (param_3 < uVar10 - param_2) { + uVar2 = param_3; + } + if ((0x3ffffffffffffff9 - uVar10) + uVar2 < param_5) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::replace"); + } + if (((param_4 < puVar8) || (puVar8 + uVar10 < param_4)) || (0 < *(int *)(puVar8 + -8))) { + FUN_00412b08(param_1,param_2,uVar2,param_5); + if (param_5 != 0) { + if (param_5 == 1) { + *(undefined1 *)(*param_1 + param_2) = *param_4; + } + else { + memcpy((void *)(*param_1 + param_2),param_4,param_5); + } + } + return param_1; + } + puVar1 = param_4 + param_5; + if (puVar8 + param_2 < puVar1) { + if (param_4 < puVar8 + uVar2 + param_2) { + if (param_4 == puVar1) { + __dest = (ulong *)&DAT_00547748; + } + else { + if ((puVar1 != (undefined1 *)0x0) && (param_4 == (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + puVar7 = (ulong *)FUN_00412a70(param_5,0,auStack_8); + __dest = puVar7 + 3; + if (param_5 == 1) { + *(undefined1 *)(puVar7 + 3) = *param_4; + } + else { + memcpy(__dest,param_4,param_5); + } + if (puVar7 != &DAT_00547730) { + *(undefined4 *)(puVar7 + 2) = 0; + *puVar7 = param_5; + *(undefined1 *)((long)puVar7 + param_5 + 0x18) = 0; + } + } + FUN_00412b08(param_1,param_2,uVar2,param_5); + if (param_5 != 0) { + if (param_5 == 1) { + *(char *)(*param_1 + param_2) = (char)*__dest; + } + else { + memcpy((void *)(*param_1 + param_2),__dest,param_5); + } + } + if (__dest + -3 == &DAT_00547730) { + return param_1; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar6 = (int)__dest[-1]; + *(int *)(__dest + -1) = iVar6 + -1; + } + else { + puVar7 = __dest + -1; + do { + iVar6 = (int)*puVar7; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(puVar7,0x10); + if (bVar4) { + *(int *)puVar7 = iVar6 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (0 < iVar6) { + return param_1; + } + operator_delete(__dest + -3); + return param_1; + } + lVar5 = (param_5 - (long)puVar8) - uVar2; + } + else { + lVar5 = -(long)puVar8; + } + FUN_00412b08(param_1,param_2,uVar2,param_5); + lVar9 = *param_1; + if (param_5 != 1) { + memcpy((void *)(lVar9 + param_2),param_4 + lVar9 + lVar5,param_5); + return param_1; + } + *(undefined1 *)(lVar9 + param_2) = param_4[lVar9 + lVar5]; + return param_1; +} + + +================================================================== + +### FUNC 00413f54 (12 bytes) name=FUN_00413f54 + +void FUN_00413f54(void) + +{ + FUN_00413c6c(); + return; +} + + +================================================================== + +### FUNC 00413f60 (76 bytes) name=FUN_00413f60 + +void FUN_00413f60(void) + +{ + long *in_x3; + ulong in_x4; + + if (in_x4 <= *(ulong *)(*in_x3 + -0x18)) { + FUN_00413c6c(); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace", + in_x4,*(ulong *)(*in_x3 + -0x18)); +} + + +================================================================== + +### FUNC 00413fac (68 bytes) name=FUN_00413fac + +void FUN_00413fac(undefined8 param_1,undefined8 param_2,undefined8 param_3,char *param_4) + +{ + size_t sVar1; + + sVar1 = strlen(param_4); + FUN_00413c6c(param_1,param_2,param_3,param_4,sVar1); + return; +} + + +================================================================== + +### FUNC 00413ff0 (16 bytes) name=FUN_00413ff0 + +void FUN_00413ff0(long *param_1,long param_2,long param_3) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2); + return; +} + + +================================================================== + +### FUNC 00414000 (24 bytes) name=FUN_00414000 + +void FUN_00414000(long *param_1,long param_2,long param_3,long *param_4) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2,*param_4, + *(undefined8 *)(*param_4 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00414018 (80 bytes) name=FUN_00414018 + +void FUN_00414018(long *param_1,long param_2,long param_3,char *param_4) + +{ + size_t sVar1; + + sVar1 = strlen(param_4); + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1); + return; +} + + +================================================================== + +### FUNC 00414068 (20 bytes) name=FUN_00414068 + +void FUN_00414068(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2,param_4,param_5 - param_4); + return; +} + + +================================================================== + +### FUNC 0041407c (20 bytes) name=FUN_0041407c + +void FUN_0041407c(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2,param_4,param_5 - param_4); + return; +} + + +================================================================== + +### FUNC 00414090 (16 bytes) name=FUN_00414090 + +void FUN_00414090(long *param_1,long param_2,long param_3) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2); + return; +} + + +================================================================== + +### FUNC 004140a0 (20 bytes) name=FUN_004140a0 + +void FUN_004140a0(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2,param_4,param_5 - param_4); + return; +} + + +================================================================== + +### FUNC 004140b4 (20 bytes) name=FUN_004140b4 + +void FUN_004140b4(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00413c6c(param_1,param_2 - *param_1,param_3 - param_2,param_4,param_5 - param_4); + return; +} + + +================================================================== + +### FUNC 004140c8 (220 bytes) name=FUN_004140c8 + +size_t * FUN_004140c8(size_t *param_1,undefined8 param_2) + +{ + char cVar1; + bool bVar2; + size_t *psVar3; + size_t *psVar4; + size_t __n; + size_t sVar5; + + if ((int)param_1[2] < 0) { + psVar3 = (size_t *)FUN_00412a70(*param_1,param_1[1],param_2); + __n = *param_1; + psVar4 = psVar3 + 3; + sVar5 = 0; + if (__n != 0) { + psVar4 = psVar3 + 3; + if (__n == 1) { + *(char *)(psVar3 + 3) = (char)param_1[3]; + sVar5 = *param_1; + } + else { + psVar4 = memcpy(psVar4,param_1 + 3,__n); + sVar5 = *param_1; + } + } + if (psVar3 != &DAT_00547730) { + *(undefined4 *)(psVar3 + 2) = 0; + *psVar3 = sVar5; + *(undefined1 *)((long)psVar3 + sVar5 + 0x18) = 0; + } + } + else { + if (param_1 != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(param_1 + 2) = (int)param_1[2] + 1; + } + else { + psVar4 = param_1 + 2; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(psVar4,0x10); + if (bVar2) { + *(int *)psVar4 = (int)*psVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + psVar4 = param_1 + 3; + } + return psVar4; +} + + +================================================================== + +### FUNC 004141a4 (80 bytes) name=FUN_004141a4 + +void FUN_004141a4(undefined8 *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + + if (param_1 != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(param_1 + 2); + *(int *)(param_1 + 2) = iVar4 + -1; + } + else { + piVar1 = (int *)(param_1 + 2); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar4 < 1) { + operator_delete(param_1); + return; + } + } + return; +} + + +================================================================== + +### FUNC 004141f4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 004141f8 (76 bytes) name=FUN_004141f8 + +undefined8 * FUN_004141f8(undefined8 *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + + if (param_1 != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(param_1 + 2) = *(int *)(param_1 + 2) + 1; + } + else { + piVar1 = (int *)(param_1 + 2); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + return param_1 + 3; +} + + +================================================================== + +### FUNC 00414244 (308 bytes) name=FUN_00414244 + +size_t * FUN_00414244(size_t *param_1,undefined8 param_2,long param_3) + +{ + size_t *psVar1; + size_t *__dest; + ulong uVar2; + size_t __n; + size_t sVar3; + ulong uVar4; + + uVar2 = param_1[1]; + uVar4 = param_3 + *param_1; + if (0x3ffffffffffffff9 < uVar4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((uVar2 < uVar4) && (uVar4 < uVar2 << 1)) { + uVar4 = uVar2 << 1; + } + if ((0x1000 < uVar4 + 0x39) && (uVar2 < uVar4)) { + uVar4 = (uVar4 + 0x1000) - (uVar4 + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar4) { + uVar4 = 0x3ffffffffffffff9; + } + } + psVar1 = operator_new(uVar4 + 0x19); + __n = *param_1; + __dest = psVar1 + 3; + psVar1[1] = uVar4; + *(undefined4 *)(psVar1 + 2) = 0; + sVar3 = 0; + if (__n != 0) { + __dest = psVar1 + 3; + if (__n == 1) { + *(char *)(psVar1 + 3) = (char)param_1[3]; + sVar3 = *param_1; + } + else { + __dest = memcpy(__dest,param_1 + 3,__n); + sVar3 = *param_1; + } + } + if (psVar1 != &DAT_00547730) { + *psVar1 = sVar3; + *(undefined1 *)((long)psVar1 + sVar3 + 0x18) = 0; + return __dest; + } + return __dest; +} + + +================================================================== + +### FUNC 00414378 (144 bytes) name=FUN_00414378 + +void FUN_00414378(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int *piVar3; + long lVar4; + undefined1 auStack_8 [8]; + + lVar4 = *param_2; + if (*(int *)(lVar4 + -8) < 0) { + lVar4 = FUN_00414244((undefined8 *)(lVar4 + -0x18),auStack_8,0); + *param_1 = lVar4; + return; + } + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar4 + -8) = *(int *)(lVar4 + -8) + 1; + } + else { + piVar3 = (int *)(lVar4 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + *param_1 = lVar4; + return; +} + + +================================================================== + +### FUNC 00414408 (240 bytes) name=FUN_00414408 + +long * FUN_00414408(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + long lVar6; + undefined1 auStack_8 [8]; + + lVar4 = *param_1; + lVar6 = *param_2; + if (lVar4 != lVar6) { + if (*(int *)(lVar6 + -8) < 0) { + lVar6 = FUN_00414244((undefined8 *)(lVar6 + -0x18),auStack_8,0); + lVar4 = *param_1; + } + else if ((undefined8 *)(lVar6 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar6 + -8) = *(int *)(lVar6 + -8) + 1; + } + else { + piVar5 = (int *)(lVar6 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + lVar4 = *param_1; + } + } + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + } + } + *param_1 = lVar6; + } + return param_1; +} + + +================================================================== + +### FUNC 004144f8 (240 bytes) name=FUN_004144f8 + +long * FUN_004144f8(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + long lVar6; + undefined1 auStack_8 [8]; + + lVar4 = *param_1; + lVar6 = *param_2; + if (lVar4 != lVar6) { + if (*(int *)(lVar6 + -8) < 0) { + lVar6 = FUN_00414244((undefined8 *)(lVar6 + -0x18),auStack_8,0); + lVar4 = *param_1; + } + else if ((undefined8 *)(lVar6 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar6 + -8) = *(int *)(lVar6 + -8) + 1; + } + else { + piVar5 = (int *)(lVar6 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + lVar4 = *param_1; + } + } + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + } + } + *param_1 = lVar6; + } + return param_1; +} + + +================================================================== + +### FUNC 004145e8 (120 bytes) name=FUN_004145e8 + +undefined8 * FUN_004145e8(undefined8 *param_1,char *param_2,long *param_3) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + *param_1 = &DAT_00547748; + FUN_00410ed8(param_1,sVar1 + *(long *)(*param_3 + -0x18)); + if (sVar1 != 0) { + FUN_004110a4(param_1,param_2,sVar1); + } + FUN_00411464(param_1,param_3); + return param_1; +} + + +================================================================== + +### FUNC 00414688 (108 bytes) name=FUN_00414688 + +undefined8 * FUN_00414688(undefined8 *param_1,undefined1 param_2,long *param_3) + +{ + *param_1 = &DAT_00547748; + FUN_00410ed8(param_1,*(long *)(*param_3 + -0x18) + 1); + FUN_004111ec(param_1,1,param_2); + FUN_00411464(param_1,param_3); + return param_1; +} + + +================================================================== + +### FUNC 0041471c (152 bytes) name=FUN_0041471c + +long * FUN_0041471c(long *param_1,long *param_2,undefined8 param_3) + +{ + char cVar1; + bool bVar2; + long lVar3; + int *piVar4; + undefined1 auStack_8 [8]; + + lVar3 = *param_2; + if (*(int *)(lVar3 + -8) < 0) { + lVar3 = FUN_00414244((undefined8 *)(lVar3 + -0x18),auStack_8,0); + } + else if ((undefined8 *)(lVar3 + -0x18) != &DAT_00547730) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar3 + -8) = *(int *)(lVar3 + -8) + 1; + } + else { + piVar4 = (int *)(lVar3 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + *param_1 = lVar3; + FUN_00411464(param_1,param_3); + return param_1; +} + + +================================================================== + +### FUNC 004147dc (308 bytes) name=FUN_004147dc + +void FUN_004147dc(undefined8 *param_1,undefined1 *param_2,undefined1 *param_3) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__dest; + ulong __n; + + if (param_2 == param_3) { + *param_1 = &DAT_00547748; + return; + } + if ((param_2 == (undefined1 *)0x0) && (param_3 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_3 - (long)param_2; + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((__n + 0x39 < 0x1001) || (__n == 0)) { + puVar2 = operator_new(__n + 0x19); + puVar2[1] = __n; + *(undefined4 *)(puVar2 + 2) = 0; + __dest = puVar2 + 3; + if (__n == 1) { + *(undefined1 *)(puVar2 + 3) = *param_2; + goto LAB_00414884; + } + } + else { + uVar1 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __dest = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + __dest = memcpy(__dest,param_2,__n); +LAB_00414884: + if (puVar2 != &DAT_00547730) { + *puVar2 = __n; + *(undefined1 *)((long)puVar2 + __n + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00414910 (308 bytes) name=FUN_00414910 + +void FUN_00414910(undefined8 *param_1,undefined1 *param_2,undefined1 *param_3) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__dest; + ulong __n; + + if (param_2 == param_3) { + *param_1 = &DAT_00547748; + return; + } + if ((param_2 == (undefined1 *)0x0) && (param_3 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_3 - (long)param_2; + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((__n + 0x39 < 0x1001) || (__n == 0)) { + puVar2 = operator_new(__n + 0x19); + puVar2[1] = __n; + *(undefined4 *)(puVar2 + 2) = 0; + __dest = puVar2 + 3; + if (__n == 1) { + *(undefined1 *)(puVar2 + 3) = *param_2; + goto LAB_004149b8; + } + } + else { + uVar1 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __dest = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + __dest = memcpy(__dest,param_2,__n); +LAB_004149b8: + if (puVar2 != &DAT_00547730) { + *puVar2 = __n; + *(undefined1 *)((long)puVar2 + __n + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00414a44 (288 bytes) name=FUN_00414a44 + +void FUN_00414a44(undefined8 *param_1,undefined1 *param_2,undefined1 *param_3) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__dest; + ulong __n; + + if (param_2 == param_3) { + *param_1 = &DAT_00547748; + return; + } + __n = (long)param_3 - (long)param_2; + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((__n + 0x39 < 0x1001) || (__n == 0)) { + puVar2 = operator_new(__n + 0x19); + puVar2[1] = __n; + *(undefined4 *)(puVar2 + 2) = 0; + __dest = puVar2 + 3; + if (__n == 1) { + *(undefined1 *)(puVar2 + 3) = *param_2; + goto LAB_00414ad8; + } + } + else { + uVar1 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __dest = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + __dest = memcpy(__dest,param_2,__n); +LAB_00414ad8: + if (puVar2 != &DAT_00547730) { + *puVar2 = __n; + *(undefined1 *)((long)puVar2 + __n + 0x18) = 0; + } + *param_1 = __dest; + return; +} + + +================================================================== + +### FUNC 00414b64 (280 bytes) name=FUN_00414b64 + +ulong * FUN_00414b64(undefined1 *param_1,undefined1 *param_2) + +{ + ulong uVar1; + ulong *puVar2; + ulong *__dest; + ulong __n; + + if (param_1 == param_2) { + return (ulong *)&DAT_00547748; + } + __n = (long)param_2 - (long)param_1; + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((__n + 0x39 < 0x1001) || (__n == 0)) { + puVar2 = operator_new(__n + 0x19); + puVar2[1] = __n; + *(undefined4 *)(puVar2 + 2) = 0; + __dest = puVar2 + 3; + if (__n == 1) { + *(undefined1 *)(puVar2 + 3) = *param_1; + goto LAB_00414bf4; + } + } + else { + uVar1 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar1) { + uVar1 = 0x3ffffffffffffff9; + } + puVar2 = operator_new(uVar1 + 0x19); + __dest = puVar2 + 3; + puVar2[1] = uVar1; + *(undefined4 *)(puVar2 + 2) = 0; + } + __dest = memcpy(__dest,param_1,__n); +LAB_00414bf4: + if (puVar2 != &DAT_00547730) { + *puVar2 = __n; + *(undefined1 *)((long)puVar2 + __n + 0x18) = 0; + } + return __dest; +} + + +================================================================== + +### FUNC 00414c7c (304 bytes) name=FUN_00414c7c + +ulong * FUN_00414c7c(undefined1 *param_1,undefined1 *param_2) + +{ + ulong *puVar1; + ulong *__dest; + ulong __n; + ulong uVar2; + + if (param_1 == param_2) { + return (ulong *)&DAT_00547748; + } + if ((param_1 == (undefined1 *)0x0) && (param_2 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_2 - (long)param_1; + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((__n + 0x39 < 0x1001) || (__n == 0)) { + puVar1 = operator_new(__n + 0x19); + puVar1[1] = __n; + *(undefined4 *)(puVar1 + 2) = 0; + __dest = puVar1 + 3; + if (__n == 1) { + *(undefined1 *)(puVar1 + 3) = *param_1; + goto LAB_00414d24; + } + } + else { + uVar2 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar2) { + uVar2 = 0x3ffffffffffffff9; + } + puVar1 = operator_new(uVar2 + 0x19); + __dest = puVar1 + 3; + puVar1[1] = uVar2; + *(undefined4 *)(puVar1 + 2) = 0; + } + __dest = memcpy(__dest,param_1,__n); +LAB_00414d24: + if (puVar1 != &DAT_00547730) { + *puVar1 = __n; + *(undefined1 *)((long)puVar1 + __n + 0x18) = 0; + } + return __dest; +} + + +================================================================== + +### FUNC 00414dac (304 bytes) name=FUN_00414dac + +ulong * FUN_00414dac(undefined1 *param_1,undefined1 *param_2) + +{ + ulong *puVar1; + ulong *__dest; + ulong __n; + ulong uVar2; + + if (param_1 == param_2) { + return (ulong *)&DAT_00547748; + } + if ((param_1 == (undefined1 *)0x0) && (param_2 != (undefined1 *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_2 - (long)param_1; + if (0x3ffffffffffffff9 < __n) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if ((__n + 0x39 < 0x1001) || (__n == 0)) { + puVar1 = operator_new(__n + 0x19); + puVar1[1] = __n; + *(undefined4 *)(puVar1 + 2) = 0; + __dest = puVar1 + 3; + if (__n == 1) { + *(undefined1 *)(puVar1 + 3) = *param_1; + goto LAB_00414e54; + } + } + else { + uVar2 = (__n + 0x1000) - (__n + 0x39 & 0xfff); + if (0x3ffffffffffffff9 < uVar2) { + uVar2 = 0x3ffffffffffffff9; + } + puVar1 = operator_new(uVar2 + 0x19); + __dest = puVar1 + 3; + puVar1[1] = uVar2; + *(undefined4 *)(puVar1 + 2) = 0; + } + __dest = memcpy(__dest,param_1,__n); +LAB_00414e54: + if (puVar1 != &DAT_00547730) { + *puVar1 = __n; + *(undefined1 *)((long)puVar1 + __n + 0x18) = 0; + } + return __dest; +} + + +================================================================== + +### FUNC 00414edc (20 bytes) name=FUN_00414edc + +bool FUN_00414edc(long *param_1,long *param_2) + +{ + return *param_1 == *param_2; +} + + +================================================================== + +### FUNC 00414ef0 (20 bytes) name=FUN_00414ef0 + +bool FUN_00414ef0(long *param_1,long *param_2) + +{ + return *param_1 == *param_2; +} + + +================================================================== + +### FUNC 00414f04 (12 bytes) name=FUN_00414f04 + +char * FUN_00414f04(void) + +{ + return "generic"; +} + + +================================================================== + +### FUNC 00414f10 (12 bytes) name=FUN_00414f10 + +char * FUN_00414f10(void) + +{ + return "system"; +} + + +================================================================== + +### FUNC 00414f1c (16 bytes) name=FUN_00414f1c + +undefined4 FUN_00414f1c(undefined8 param_1,undefined4 param_2) + +{ + return param_2; +} + + +================================================================== + +### FUNC 00414f2c (80 bytes) name=FUN_00414f2c + +bool FUN_00414f2c(long *param_1,undefined8 param_2,int *param_3) + +{ + int iVar1; + long extraout_x1; + + iVar1 = (**(code **)(*param_1 + 0x20))(); + if (*(long *)(param_3 + 2) != extraout_x1) { + return false; + } + return *param_3 == iVar1; +} + + +================================================================== + +### FUNC 00414f7c (44 bytes) name=FUN_00414f7c + +bool FUN_00414f7c(long param_1,int *param_2,int param_3) + +{ + if (*(long *)(param_2 + 2) != param_1) { + return false; + } + return *param_2 == param_3; +} + + +================================================================== + +### FUNC 00414fa8 (4 bytes) name=FUN_00414fa8 + +void FUN_00414fa8(void) + +{ + return; +} + + +================================================================== + +### FUNC 00414fac (4 bytes) name=FUN_00414fac + +void FUN_00414fac(void) + +{ + return; +} + + +================================================================== + +### FUNC 00414fb0 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 00414fb4 (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 00414fb8 (56 bytes) name=FUN_00414fb8 + +undefined8 FUN_00414fb8(undefined8 param_1,undefined8 param_2,int param_3) + +{ + char *pcVar1; + undefined1 auStack_8 [8]; + + pcVar1 = strerror(param_3); + FUN_00410a08(param_1,pcVar1,auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 00414ff0 (56 bytes) name=FUN_00414ff0 + +undefined8 FUN_00414ff0(undefined8 param_1,undefined8 param_2,int param_3) + +{ + char *pcVar1; + undefined1 auStack_8 [8]; + + pcVar1 = strerror(param_3); + FUN_00410a08(param_1,pcVar1,auStack_8); + return param_1; +} + + +================================================================== + +### FUNC 00415028 (16 bytes) name=FUN_00415028 + +void FUN_00415028(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe670; + FUN_0041be04(); + return; +} + + +================================================================== + +### FUNC 00415038 (48 bytes) name=FUN_00415038 + +void FUN_00415038(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004fe670; + FUN_0041be04(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00415068 (4 bytes) name=FUN_00415068 + +void FUN_00415068(void) + +{ + return; +} + + +================================================================== + +### FUNC 0041506c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 00415070 (12 bytes) name=FUN_00415070 + +undefined ** FUN_00415070(void) + +{ + return &PTR_PTR_00509630; +} + + +================================================================== + +### FUNC 0041507c (12 bytes) name=FUN_0041507c + +undefined ** FUN_0041507c(void) + +{ + return &PTR_PTR_00509628; +} + + +================================================================== + +### FUNC 00415088 (40 bytes) name=FUN_00415088 + +void FUN_00415088(undefined4 *param_1) + +{ + (**(code **)(**(long **)(param_1 + 2) + 0x20))(*(long **)(param_1 + 2),*param_1); + return; +} + + +================================================================== + +### FUNC 004150b0 (68 bytes) name=FUN_004150b0 + +void FUN_004150b0(void *param_1) + +{ + int *piVar1; + int iVar2; + char cVar3; + bool bVar4; + + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar2 = *(int *)((long)param_1 + 0x10); + *(int *)((long)param_1 + 0x10) = iVar2 + -1; + } + else { + piVar1 = (int *)((long)param_1 + 0x10); + do { + iVar2 = *piVar1; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar4) { + *piVar1 = iVar2 + -1; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (iVar2 < 1) { + operator_delete(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 004150f4 (8 bytes) name=FUN_004150f4 + +undefined8 FUN_004150f4(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004150fc (12 bytes) name=FUN_004150fc + +undefined8 FUN_004150fc(undefined8 *param_1,undefined8 param_2) + +{ + *param_1 = param_2; + return param_2; +} + + +================================================================== + +### FUNC 00415108 (12 bytes) name=FUN_00415108 + +long FUN_00415108(long *param_1) + +{ + return *param_1 + -0x18; +} + + +================================================================== + +### FUNC 00415114 (8 bytes) name=FUN_00415114 + +undefined8 FUN_00415114(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 0041511c (16 bytes) name=FUN_0041511c + +long FUN_0041511c(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18) * 4; +} + + +================================================================== + +### FUNC 0041512c (56 bytes) name=FUN_0041512c + +void FUN_0041512c(long *param_1,ulong param_2,undefined8 param_3) + +{ + if (param_2 <= *(ulong *)(*param_1 + -0x18)) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)",param_3,param_2); +} + + +================================================================== + +### FUNC 00415164 (52 bytes) name=FUN_00415164 + +void FUN_00415164(long *param_1,long param_2,ulong param_3,undefined8 param_4) + +{ + if (param_3 <= (ulong)((0xffffffffffffffe - *(long *)(*param_1 + -0x18)) + param_2)) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c(param_4); +} + + +================================================================== + +### FUNC 00415198 (24 bytes) name=FUN_00415198 + +ulong FUN_00415198(long *param_1,long param_2,ulong param_3) + +{ + ulong uVar1; + + uVar1 = *(long *)(*param_1 + -0x18) - param_2; + if (param_3 < uVar1) { + uVar1 = param_3; + } + return uVar1; +} + + +================================================================== + +### FUNC 004151b0 (36 bytes) name=FUN_004151b0 + +bool FUN_004151b0(ulong *param_1,ulong param_2) + +{ + bool bVar1; + ulong uVar2; + + uVar2 = *param_1; + bVar1 = true; + if (uVar2 <= param_2) { + bVar1 = uVar2 + *(long *)(uVar2 - 0x18) * 4 < param_2; + } + return bVar1; +} + + +================================================================== + +### FUNC 004151d4 (28 bytes) name=FUN_004151d4 + +void FUN_004151d4(wchar_t *param_1,wchar_t *param_2,size_t param_3) + +{ + if (param_3 != 1) { + wmemcpy(param_1,param_2,param_3); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 004151f0 (28 bytes) name=FUN_004151f0 + +void FUN_004151f0(wchar_t *param_1,wchar_t *param_2,size_t param_3) + +{ + if (param_3 != 1) { + wmemmove(param_1,param_2,param_3); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 0041520c (32 bytes) name=FUN_0041520c + +void FUN_0041520c(wchar_t *param_1,size_t param_2,wchar_t param_3) + +{ + if (param_2 != 1) { + wmemset(param_1,param_3,param_2); + return; + } + *param_1 = param_3; + return; +} + + +================================================================== + +### FUNC 0041522c (36 bytes) name=FUN_0041522c + +void FUN_0041522c(wchar_t *param_1,wchar_t *param_2,long param_3) + +{ + size_t __n; + + __n = param_3 - (long)param_2 >> 2; + if (__n != 1) { + wmemcpy(param_1,param_2,__n); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00415250 (36 bytes) name=FUN_00415250 + +void FUN_00415250(wchar_t *param_1,wchar_t *param_2,long param_3) + +{ + size_t __n; + + __n = param_3 - (long)param_2 >> 2; + if (__n != 1) { + wmemcpy(param_1,param_2,__n); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00415274 (36 bytes) name=FUN_00415274 + +void FUN_00415274(wchar_t *param_1,wchar_t *param_2,long param_3) + +{ + size_t __n; + + __n = param_3 - (long)param_2 >> 2; + if (__n != 1) { + wmemcpy(param_1,param_2,__n); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 00415298 (36 bytes) name=FUN_00415298 + +void FUN_00415298(wchar_t *param_1,wchar_t *param_2,long param_3) + +{ + size_t __n; + + __n = param_3 - (long)param_2 >> 2; + if (__n != 1) { + wmemcpy(param_1,param_2,__n); + return; + } + *param_1 = *param_2; + return; +} + + +================================================================== + +### FUNC 004152bc (40 bytes) name=FUN_004152bc + +undefined4 FUN_004152bc(long param_1,long param_2) + +{ + undefined4 uVar1; + + param_1 = param_1 - param_2; + if (0x7fffffff < param_1) { + return 0x7fffffff; + } + uVar1 = 0x80000000; + if (-0x80000001 < param_1) { + uVar1 = (undefined4)param_1; + } + return uVar1; +} + + +================================================================== + +### FUNC 004152e4 (12 bytes) name=FUN_004152e4 + +undefined8 * FUN_004152e4(void) + +{ + return &DAT_00547750; +} + + +================================================================== + +### FUNC 004152f0 (16 bytes) name=FUN_004152f0 + +void FUN_004152f0(undefined8 *param_1) + +{ + *param_1 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 00415300 (16 bytes) name=FUN_00415300 + +void FUN_00415300(undefined8 *param_1) + +{ + *param_1 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 00415310 (24 bytes) name=FUN_00415310 + +void FUN_00415310(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + *param_2 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 00415328 (88 bytes) name=FUN_00415328 + +void FUN_00415328(long *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + lVar4 = *param_1; + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00415380 (48 bytes) name=FUN_00415380 + +void FUN_00415380(long *param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (*(int *)(lVar2 + -8) < 0) { + *(undefined4 *)(lVar2 + -8) = 0; + } + lVar1 = *param_2; + if (*(int *)(lVar1 + -8) < 0) { + *(undefined4 *)(lVar1 + -8) = 0; + } + *param_1 = lVar1; + *param_2 = lVar2; + return; +} + + +================================================================== + +### FUNC 004153b0 (8 bytes) name=FUN_004153b0 + +undefined8 FUN_004153b0(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004153b8 (16 bytes) name=FUN_004153b8 + +long FUN_004153b8(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18) * 4; +} + + +================================================================== + +### FUNC 004153c8 (24 bytes) name=FUN_004153c8 + +long * FUN_004153c8(long *param_1,long *param_2) + +{ + *param_1 = *param_2 + *(long *)(*param_2 + -0x18) * 4; + return param_1; +} + + +================================================================== + +### FUNC 004153e0 (16 bytes) name=FUN_004153e0 + +undefined8 * FUN_004153e0(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + return param_1; +} + + +================================================================== + +### FUNC 004153f0 (8 bytes) name=FUN_004153f0 + +undefined8 FUN_004153f0(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004153f8 (16 bytes) name=FUN_004153f8 + +long FUN_004153f8(long *param_1) + +{ + return *param_1 + *(long *)(*param_1 + -0x18) * 4; +} + + +================================================================== + +### FUNC 00415408 (24 bytes) name=FUN_00415408 + +long * FUN_00415408(long *param_1,long *param_2) + +{ + *param_1 = *param_2 + *(long *)(*param_2 + -0x18) * 4; + return param_1; +} + + +================================================================== + +### FUNC 00415420 (16 bytes) name=FUN_00415420 + +undefined8 * FUN_00415420(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + return param_1; +} + + +================================================================== + +### FUNC 00415430 (12 bytes) name=FUN_00415430 + +undefined8 FUN_00415430(long *param_1) + +{ + return *(undefined8 *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 0041543c (12 bytes) name=FUN_0041543c + +undefined8 FUN_0041543c(long *param_1) + +{ + return *(undefined8 *)(*param_1 + -0x18); +} + + +================================================================== + +### FUNC 00415448 (8 bytes) name=FUN_00415448 + +undefined8 FUN_00415448(void) + +{ + return 0xffffffffffffffe; +} + + +================================================================== + +### FUNC 00415450 (12 bytes) name=FUN_00415450 + +undefined8 FUN_00415450(long *param_1) + +{ + return *(undefined8 *)(*param_1 + -0x10); +} + + +================================================================== + +### FUNC 0041545c (20 bytes) name=FUN_0041545c + +bool FUN_0041545c(long *param_1) + +{ + return *(long *)(*param_1 + -0x18) == 0; +} + + +================================================================== + +### FUNC 00415470 (12 bytes) name=FUN_00415470 + +long FUN_00415470(long *param_1,long param_2) + +{ + return *param_1 + param_2 * 4; +} + + +================================================================== + +### FUNC 0041547c (48 bytes) name=FUN_0041547c + +long FUN_0041547c(long *param_1,ulong param_2) + +{ + if (param_2 < *(ulong *)(*param_1 + -0x18)) { + return *param_1 + param_2 * 4; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)"); +} + + +================================================================== + +### FUNC 004154ac (8 bytes) name=FUN_004154ac + +undefined8 FUN_004154ac(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004154b4 (20 bytes) name=FUN_004154b4 + +long FUN_004154b4(long *param_1) + +{ + return *param_1 + (*(long *)(*param_1 + -0x18) + -1) * 4; +} + + +================================================================== + +### FUNC 004154c8 (48 bytes) name=FUN_004154c8 + +void FUN_004154c8(long *param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (*(int *)(lVar2 + -8) < 0) { + *(undefined4 *)(lVar2 + -8) = 0; + } + lVar1 = *param_2; + if (*(int *)(lVar1 + -8) < 0) { + *(undefined4 *)(lVar1 + -8) = 0; + } + *param_1 = lVar1; + *param_2 = lVar2; + return; +} + + +================================================================== + +### FUNC 004154f8 (140 bytes) name=FUN_004154f8 + +size_t FUN_004154f8(long *param_1,wchar_t *param_2,ulong param_3,ulong param_4) + +{ + size_t __n; + ulong uVar1; + long lVar2; + + lVar2 = *param_1; + uVar1 = *(ulong *)(lVar2 + -0x18); + if (uVar1 < param_4) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::copy", + param_4,uVar1); + } + __n = uVar1 - param_4; + if (param_3 < uVar1 - param_4) { + __n = param_3; + } + if (__n != 0) { + if (__n == 1) { + *param_2 = *(wchar_t *)(lVar2 + param_4 * 4); + return 1; + } + wmemcpy(param_2,(wchar_t *)(lVar2 + param_4 * 4),__n); + } + return __n; +} + + +================================================================== + +### FUNC 00415584 (48 bytes) name=FUN_00415584 + +void FUN_00415584(long *param_1,long *param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (*(int *)(lVar2 + -8) < 0) { + *(undefined4 *)(lVar2 + -8) = 0; + } + lVar1 = *param_2; + if (*(int *)(lVar1 + -8) < 0) { + *(undefined4 *)(lVar1 + -8) = 0; + } + *param_1 = lVar1; + *param_2 = lVar2; + return; +} + + +================================================================== + +### FUNC 004155b4 (8 bytes) name=FUN_004155b4 + +undefined8 FUN_004155b4(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004155bc (8 bytes) name=FUN_004155bc + +undefined8 FUN_004155bc(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 004155c4 (8 bytes) name=FUN_004155c4 + +undefined8 FUN_004155c4(undefined8 param_1) + +{ + return param_1; +} + + +================================================================== + +### FUNC 004155cc (212 bytes) name=FUN_004155cc + +ulong FUN_004155cc(long *param_1,wchar_t *param_2,ulong param_3,ulong param_4) + +{ + bool bVar1; + int iVar2; + wchar_t *__s1; + ulong uVar3; + ulong uVar4; + + uVar4 = *(ulong *)(*param_1 + -0x18); + if (param_4 == 0) { + if (uVar4 < param_3) { + param_3 = 0xffffffffffffffff; + } + return param_3; + } + if ((param_4 <= uVar4) && (param_3 <= uVar4 - param_4)) { + __s1 = (wchar_t *)(*param_1 + (param_3 + 1) * 4); + uVar3 = param_3 + 1; + do { + if ((__s1[-1] == *param_2) && (iVar2 = wmemcmp(__s1,param_2 + 1,param_4 - 1), iVar2 == 0)) { + return uVar3 - 1; + } + __s1 = __s1 + 1; + bVar1 = uVar3 <= uVar4 - param_4; + uVar3 = uVar3 + 1; + } while (bVar1); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004156a0 (12 bytes) name=FUN_004156a0 + +void FUN_004156a0(void) + +{ + FUN_004155cc(); + return; +} + + +================================================================== + +### FUNC 004156ac (60 bytes) name=FUN_004156ac + +void FUN_004156ac(undefined8 param_1,wchar_t *param_2,undefined8 param_3) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + FUN_004155cc(param_1,param_2,param_3,sVar1); + return; +} + + +================================================================== + +### FUNC 004156e8 (80 bytes) name=FUN_004156e8 + +long FUN_004156e8(long *param_1,wchar_t param_2,ulong param_3) + +{ + wchar_t *pwVar1; + long lVar2; + + lVar2 = *param_1; + if ((param_3 < *(ulong *)(lVar2 + -0x18)) && + (pwVar1 = wmemchr((wchar_t *)(lVar2 + param_3 * 4),param_2,*(ulong *)(lVar2 + -0x18) - param_3) + , pwVar1 != (wchar_t *)0x0)) { + return (long)pwVar1 - lVar2 >> 2; + } + return -1; +} + + +================================================================== + +### FUNC 00415738 (136 bytes) name=FUN_00415738 + +ulong FUN_00415738(long *param_1,undefined8 *param_2,ulong param_3) + +{ + bool bVar1; + int iVar2; + ulong uVar3; + wchar_t *__s1; + ulong __n; + wchar_t *__s2; + + __s2 = (wchar_t *)*param_2; + uVar3 = *(ulong *)(*param_1 + -0x18); + __n = *(ulong *)(__s2 + -6); + if (__n <= uVar3) { + uVar3 = uVar3 - __n; + if (uVar3 < param_3) { + param_3 = uVar3; + } + __s1 = (wchar_t *)(*param_1 + param_3 * 4); + do { + iVar2 = wmemcmp(__s1,__s2,__n); + if (iVar2 == 0) { + return param_3; + } + bVar1 = param_3 != 0; + param_3 = param_3 - 1; + __s1 = __s1 + -1; + } while (bVar1); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004157c0 (136 bytes) name=FUN_004157c0 + +ulong FUN_004157c0(long *param_1,wchar_t *param_2,ulong param_3,ulong param_4) + +{ + bool bVar1; + int iVar2; + ulong uVar3; + wchar_t *__s1; + + uVar3 = *(ulong *)(*param_1 + -0x18); + if (param_4 <= uVar3) { + uVar3 = uVar3 - param_4; + if (param_3 < uVar3) { + uVar3 = param_3; + } + __s1 = (wchar_t *)(*param_1 + uVar3 * 4); + do { + iVar2 = wmemcmp(__s1,param_2,param_4); + if (iVar2 == 0) { + return uVar3; + } + bVar1 = uVar3 != 0; + uVar3 = uVar3 - 1; + __s1 = __s1 + -1; + } while (bVar1); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415848 (156 bytes) name=FUN_00415848 + +ulong FUN_00415848(long *param_1,wchar_t *param_2,ulong param_3) + +{ + bool bVar1; + int iVar2; + size_t __n; + ulong uVar3; + wchar_t *__s1; + + __n = wcslen(param_2); + uVar3 = *(ulong *)(*param_1 + -0x18); + if (__n <= uVar3) { + uVar3 = uVar3 - __n; + if (param_3 < uVar3) { + uVar3 = param_3; + } + __s1 = (wchar_t *)(*param_1 + uVar3 * 4); + do { + iVar2 = wmemcmp(__s1,param_2,__n); + if (iVar2 == 0) { + return uVar3; + } + bVar1 = uVar3 != 0; + uVar3 = uVar3 - 1; + __s1 = __s1 + -1; + } while (bVar1); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004158e4 (68 bytes) name=FUN_004158e4 + +void FUN_004158e4(long *param_1,int param_2,ulong param_3) + +{ + ulong uVar1; + long lVar2; + + lVar2 = *(long *)(*param_1 + -0x18); + if (lVar2 != 0) { + uVar1 = lVar2 - 1; + if (uVar1 < param_3) { + param_3 = uVar1; + } + do { + if (param_3 == 0xffffffffffffffff) { + return; + } + lVar2 = param_3 * 4; + param_3 = param_3 - 1; + } while (*(int *)(*param_1 + lVar2) != param_2); + } + return; +} + + +================================================================== + +### FUNC 00415928 (152 bytes) name=FUN_00415928 + +ulong FUN_00415928(long *param_1,wchar_t *param_2,ulong param_3,size_t param_4) + +{ + long lVar1; + wchar_t *pwVar2; + long lVar3; + + if ((param_4 != 0) && (lVar1 = *param_1, param_3 < *(ulong *)(lVar1 + -0x18))) { + lVar3 = param_3 << 2; + do { + pwVar2 = (wchar_t *)(lVar1 + lVar3); + lVar3 = lVar3 + 4; + pwVar2 = wmemchr(param_2,*pwVar2,param_4); + if (pwVar2 != (wchar_t *)0x0) { + return param_3; + } + lVar1 = *param_1; + param_3 = param_3 + 1; + } while (param_3 < *(ulong *)(lVar1 + -0x18)); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 004159c0 (12 bytes) name=FUN_004159c0 + +void FUN_004159c0(void) + +{ + FUN_00415928(); + return; +} + + +================================================================== + +### FUNC 004159cc (60 bytes) name=FUN_004159cc + +void FUN_004159cc(undefined8 param_1,wchar_t *param_2,undefined8 param_3) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + FUN_00415928(param_1,param_2,param_3,sVar1); + return; +} + + +================================================================== + +### FUNC 00415a08 (80 bytes) name=FUN_00415a08 + +long FUN_00415a08(long *param_1,wchar_t param_2,ulong param_3) + +{ + wchar_t *pwVar1; + long lVar2; + + lVar2 = *param_1; + if ((param_3 < *(ulong *)(lVar2 + -0x18)) && + (pwVar1 = wmemchr((wchar_t *)(lVar2 + param_3 * 4),param_2,*(ulong *)(lVar2 + -0x18) - param_3) + , pwVar1 != (wchar_t *)0x0)) { + return (long)pwVar1 - lVar2 >> 2; + } + return -1; +} + + +================================================================== + +### FUNC 00415a58 (156 bytes) name=FUN_00415a58 + +ulong FUN_00415a58(long *param_1,undefined8 *param_2,ulong param_3) + +{ + wchar_t *pwVar1; + long lVar2; + ulong uVar3; + long lVar4; + wchar_t *__s; + size_t __n; + + __s = (wchar_t *)*param_2; + lVar2 = *param_1; + __n = *(size_t *)(__s + -6); + if ((__n != 0) && (*(long *)(lVar2 + -0x18) != 0)) { + uVar3 = *(long *)(lVar2 + -0x18) - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + lVar4 = param_3 << 2; + while( true ) { + pwVar1 = (wchar_t *)(lVar2 + lVar4); + lVar4 = lVar4 + -4; + pwVar1 = wmemchr(__s,*pwVar1,__n); + if (pwVar1 != (wchar_t *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + if (param_3 == 0xffffffffffffffff) break; + lVar2 = *param_1; + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415af4 (136 bytes) name=FUN_00415af4 + +ulong FUN_00415af4(long *param_1,wchar_t *param_2,ulong param_3,size_t param_4) + +{ + wchar_t *pwVar1; + long lVar2; + ulong uVar3; + long lVar4; + + lVar2 = *param_1; + if ((param_4 == 0) || (*(long *)(lVar2 + -0x18) == 0)) { +LAB_00415b18: + param_3 = 0xffffffffffffffff; + } + else { + uVar3 = *(long *)(lVar2 + -0x18) - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + lVar4 = param_3 << 2; + while( true ) { + pwVar1 = (wchar_t *)(lVar2 + lVar4); + lVar4 = lVar4 + -4; + pwVar1 = wmemchr(param_2,*pwVar1,param_4); + if (pwVar1 != (wchar_t *)0x0) break; + if (param_3 == 0) goto LAB_00415b18; + lVar2 = *param_1; + param_3 = param_3 - 1; + } + } + return param_3; +} + + +================================================================== + +### FUNC 00415b7c (172 bytes) name=FUN_00415b7c + +ulong FUN_00415b7c(long *param_1,wchar_t *param_2,ulong param_3) + +{ + size_t __n; + long lVar1; + wchar_t *pwVar2; + ulong uVar3; + long lVar4; + + __n = wcslen(param_2); + lVar1 = *param_1; + if ((__n != 0) && (*(long *)(lVar1 + -0x18) != 0)) { + uVar3 = *(long *)(lVar1 + -0x18) - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + lVar4 = param_3 << 2; + while( true ) { + pwVar2 = (wchar_t *)(lVar1 + lVar4); + lVar4 = lVar4 + -4; + pwVar2 = wmemchr(param_2,*pwVar2,__n); + if (pwVar2 != (wchar_t *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + if (param_3 == 0xffffffffffffffff) break; + lVar1 = *param_1; + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415c28 (68 bytes) name=FUN_00415c28 + +void FUN_00415c28(long *param_1,int param_2,ulong param_3) + +{ + ulong uVar1; + long lVar2; + + lVar2 = *(long *)(*param_1 + -0x18); + if (lVar2 != 0) { + uVar1 = lVar2 - 1; + if (uVar1 < param_3) { + param_3 = uVar1; + } + do { + if (param_3 == 0xffffffffffffffff) { + return; + } + lVar2 = param_3 * 4; + param_3 = param_3 - 1; + } while (param_2 != *(int *)(*param_1 + lVar2)); + } + return; +} + + +================================================================== + +### FUNC 00415c6c (152 bytes) name=FUN_00415c6c + +ulong FUN_00415c6c(long *param_1,undefined8 *param_2,ulong param_3) + +{ + long lVar1; + wchar_t *pwVar2; + long lVar3; + wchar_t *__s; + size_t __n; + + lVar1 = *param_1; + __s = (wchar_t *)*param_2; + lVar3 = param_3 << 2; + __n = *(size_t *)(__s + -6); + if (param_3 < *(ulong *)(lVar1 + -0x18)) { + do { + pwVar2 = (wchar_t *)(lVar1 + lVar3); + lVar3 = lVar3 + 4; + pwVar2 = wmemchr(__s,*pwVar2,__n); + if (pwVar2 == (wchar_t *)0x0) { + return param_3; + } + lVar1 = *param_1; + param_3 = param_3 + 1; + } while (param_3 < *(ulong *)(lVar1 + -0x18)); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415d04 (152 bytes) name=FUN_00415d04 + +ulong FUN_00415d04(long *param_1,wchar_t *param_2,ulong param_3,size_t param_4) + +{ + long lVar1; + wchar_t *pwVar2; + long lVar3; + + lVar1 = *param_1; + lVar3 = param_3 << 2; + if (param_3 < *(ulong *)(lVar1 + -0x18)) { + do { + pwVar2 = (wchar_t *)(lVar1 + lVar3); + lVar3 = lVar3 + 4; + pwVar2 = wmemchr(param_2,*pwVar2,param_4); + if (pwVar2 == (wchar_t *)0x0) { + return param_3; + } + lVar1 = *param_1; + param_3 = param_3 + 1; + } while (param_3 < *(ulong *)(lVar1 + -0x18)); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415d9c (160 bytes) name=FUN_00415d9c + +ulong FUN_00415d9c(long *param_1,wchar_t *param_2,ulong param_3) + +{ + size_t __n; + long lVar1; + wchar_t *pwVar2; + long lVar3; + + lVar3 = param_3 << 2; + __n = wcslen(param_2); + lVar1 = *param_1; + if (param_3 < *(ulong *)(lVar1 + -0x18)) { + do { + pwVar2 = (wchar_t *)(lVar1 + lVar3); + lVar3 = lVar3 + 4; + pwVar2 = wmemchr(param_2,*pwVar2,__n); + if (pwVar2 == (wchar_t *)0x0) { + return param_3; + } + lVar1 = *param_1; + param_3 = param_3 + 1; + } while (param_3 < *(ulong *)(lVar1 + -0x18)); + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415e3c (72 bytes) name=FUN_00415e3c + +ulong FUN_00415e3c(long *param_1,int param_2,ulong param_3) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + if (param_3 < *(ulong *)(lVar2 + -0x18)) { + lVar1 = param_3 * 4; + while( true ) { + if (*(int *)(lVar2 + lVar1) != param_2) { + return param_3; + } + param_3 = param_3 + 1; + if (*(ulong *)(lVar2 + -0x18) <= param_3) break; + param_2 = *(int *)(lVar2 + param_3 * 4); + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415e84 (152 bytes) name=FUN_00415e84 + +ulong FUN_00415e84(long *param_1,undefined8 *param_2,ulong param_3) + +{ + wchar_t *pwVar1; + long lVar2; + ulong uVar3; + long lVar4; + wchar_t *__s; + size_t __n; + + __s = (wchar_t *)*param_2; + lVar2 = *param_1; + __n = *(size_t *)(__s + -6); + if (*(long *)(lVar2 + -0x18) != 0) { + uVar3 = *(long *)(lVar2 + -0x18) - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + lVar4 = param_3 << 2; + while( true ) { + pwVar1 = (wchar_t *)(lVar2 + lVar4); + lVar4 = lVar4 + -4; + pwVar1 = wmemchr(__s,*pwVar1,__n); + if (pwVar1 == (wchar_t *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + if (param_3 == 0xffffffffffffffff) break; + lVar2 = *param_1; + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00415f1c (132 bytes) name=FUN_00415f1c + +ulong FUN_00415f1c(long *param_1,wchar_t *param_2,ulong param_3,size_t param_4) + +{ + wchar_t *pwVar1; + long lVar2; + ulong uVar3; + long lVar4; + + lVar2 = *param_1; + if (*(long *)(lVar2 + -0x18) == 0) { +LAB_00415f3c: + param_3 = 0xffffffffffffffff; + } + else { + uVar3 = *(long *)(lVar2 + -0x18) - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + lVar4 = param_3 << 2; + while( true ) { + pwVar1 = (wchar_t *)(lVar2 + lVar4); + lVar4 = lVar4 + -4; + pwVar1 = wmemchr(param_2,*pwVar1,param_4); + if (pwVar1 == (wchar_t *)0x0) break; + if (param_3 == 0) goto LAB_00415f3c; + lVar2 = *param_1; + param_3 = param_3 - 1; + } + } + return param_3; +} + + +================================================================== + +### FUNC 00415fa0 (168 bytes) name=FUN_00415fa0 + +ulong FUN_00415fa0(long *param_1,wchar_t *param_2,ulong param_3) + +{ + size_t __n; + long lVar1; + wchar_t *pwVar2; + ulong uVar3; + long lVar4; + + __n = wcslen(param_2); + lVar1 = *param_1; + if (*(long *)(lVar1 + -0x18) != 0) { + uVar3 = *(long *)(lVar1 + -0x18) - 1; + if (uVar3 < param_3) { + param_3 = uVar3; + } + lVar4 = param_3 << 2; + while( true ) { + pwVar2 = (wchar_t *)(lVar1 + lVar4); + lVar4 = lVar4 + -4; + pwVar2 = wmemchr(param_2,*pwVar2,__n); + if (pwVar2 == (wchar_t *)0x0) { + return param_3; + } + param_3 = param_3 - 1; + if (param_3 == 0xffffffffffffffff) break; + lVar1 = *param_1; + } + } + return 0xffffffffffffffff; +} + + +================================================================== + +### FUNC 00416048 (72 bytes) name=FUN_00416048 + +ulong FUN_00416048(long *param_1,int param_2,ulong param_3) + +{ + ulong uVar1; + bool bVar2; + ulong uVar3; + long lVar4; + + uVar3 = 0xffffffffffffffff; + lVar4 = *(long *)(*param_1 + -0x18); + if (lVar4 != 0) { + uVar1 = lVar4 - 1; + uVar3 = param_3; + if (uVar1 < param_3) { + uVar3 = uVar1; + } + while (*(int *)(*param_1 + uVar3 * 4) == param_2) { + bVar2 = uVar3 == 0; + uVar3 = uVar3 - 1; + if (bVar2) { + return 0xffffffffffffffff; + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00416090 (104 bytes) name=FUN_00416090 + +int FUN_00416090(undefined8 *param_1,undefined8 *param_2) + +{ + size_t __n; + int iVar1; + ulong uVar2; + long lVar3; + ulong uVar4; + + uVar4 = *(ulong *)((wchar_t *)*param_2 + -6); + uVar2 = *(ulong *)((wchar_t *)*param_1 + -6); + __n = uVar4; + if (uVar2 < uVar4) { + __n = uVar2; + } + iVar1 = wmemcmp((wchar_t *)*param_1,(wchar_t *)*param_2,__n); + if (iVar1 == 0) { + iVar1 = 0x7fffffff; + lVar3 = uVar2 - uVar4; + if (lVar3 < 0x80000000) { + iVar1 = -0x80000000; + if (-0x80000001 < lVar3) { + iVar1 = (int)lVar3; + } + return iVar1; + } + } + return iVar1; +} + + +================================================================== + +### FUNC 004160f8 (156 bytes) name=FUN_004160f8 + +int FUN_004160f8(long *param_1,ulong param_2,ulong param_3,undefined8 *param_4) + +{ + ulong uVar1; + size_t __n; + int iVar2; + ulong uVar3; + long lVar4; + + uVar3 = *(ulong *)(*param_1 + -0x18); + if (uVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar3); + } + uVar1 = uVar3 - param_2; + if (param_3 < uVar3 - param_2) { + uVar1 = param_3; + } + uVar3 = *(ulong *)((wchar_t *)*param_4 + -6); + __n = uVar1; + if (uVar3 < uVar1) { + __n = uVar3; + } + iVar2 = wmemcmp((wchar_t *)(*param_1 + param_2 * 4),(wchar_t *)*param_4,__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar4 = uVar1 - uVar3; + if (lVar4 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar4) { + iVar2 = (int)lVar4; + } + return iVar2; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00416194 (200 bytes) name=FUN_00416194 + +int FUN_00416194(long *param_1,ulong param_2,ulong param_3,long *param_4,ulong param_5,ulong param_6 + ) + +{ + ulong uVar1; + size_t __n; + int iVar2; + ulong uVar3; + ulong uVar4; + long lVar5; + + uVar4 = *(ulong *)(*param_1 + -0x18); + if (uVar4 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar4); + } + uVar3 = *(ulong *)(*param_4 + -0x18); + if (param_5 <= uVar3) { + uVar3 = uVar3 - param_5; + uVar1 = uVar4 - param_2; + if (param_3 < uVar4 - param_2) { + uVar1 = param_3; + } + if (param_6 < uVar3) { + uVar3 = param_6; + } + __n = uVar1; + if (uVar3 < uVar1) { + __n = uVar3; + } + iVar2 = wmemcmp((wchar_t *)(*param_1 + param_2 * 4),(wchar_t *)(*param_4 + param_5 * 4),__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar5 = uVar1 - uVar3; + if (lVar5 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar5) { + iVar2 = (int)lVar5; + } + return iVar2; + } + } + return iVar2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_5); +} + + +================================================================== + +### FUNC 0041625c (128 bytes) name=FUN_0041625c + +int FUN_0041625c(long *param_1,wchar_t *param_2) + +{ + size_t __n; + int iVar1; + size_t sVar2; + ulong uVar3; + long lVar4; + + uVar3 = *(ulong *)(*param_1 + -0x18); + sVar2 = wcslen(param_2); + __n = sVar2; + if (uVar3 < sVar2) { + __n = uVar3; + } + iVar1 = wmemcmp((wchar_t *)*param_1,param_2,__n); + if (iVar1 == 0) { + iVar1 = 0x7fffffff; + lVar4 = uVar3 - sVar2; + if (lVar4 < 0x80000000) { + iVar1 = -0x80000000; + if (-0x80000001 < lVar4) { + iVar1 = (int)lVar4; + } + return iVar1; + } + } + return iVar1; +} + + +================================================================== + +### FUNC 004162dc (188 bytes) name=FUN_004162dc + +int FUN_004162dc(long *param_1,ulong param_2,ulong param_3,wchar_t *param_4) + +{ + ulong uVar1; + size_t __n; + int iVar2; + size_t sVar3; + ulong uVar4; + long lVar5; + + uVar4 = *(ulong *)(*param_1 + -0x18); + if (uVar4 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar4); + } + uVar1 = uVar4 - param_2; + if (param_3 < uVar4 - param_2) { + uVar1 = param_3; + } + sVar3 = wcslen(param_4); + __n = sVar3; + if (uVar1 < sVar3) { + __n = uVar1; + } + iVar2 = wmemcmp((wchar_t *)(*param_1 + param_2 * 4),param_4,__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar5 = uVar1 - sVar3; + if (lVar5 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar5) { + iVar2 = (int)lVar5; + } + return iVar2; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00416398 (156 bytes) name=FUN_00416398 + +int FUN_00416398(long *param_1,ulong param_2,ulong param_3,wchar_t *param_4,ulong param_5) + +{ + ulong uVar1; + size_t __n; + int iVar2; + ulong uVar3; + long lVar4; + + uVar3 = *(ulong *)(*param_1 + -0x18); + if (uVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::compare", + param_2,uVar3); + } + uVar1 = uVar3 - param_2; + if (param_3 < uVar3 - param_2) { + uVar1 = param_3; + } + __n = uVar1; + if (param_5 < uVar1) { + __n = param_5; + } + iVar2 = wmemcmp((wchar_t *)(*param_1 + param_2 * 4),param_4,__n); + if (iVar2 == 0) { + iVar2 = 0x7fffffff; + lVar4 = uVar1 - param_5; + if (lVar4 < 0x80000000) { + iVar2 = -0x80000000; + if (-0x80000001 < lVar4) { + iVar2 = (int)lVar4; + } + return iVar2; + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00416434 (8 bytes) name=FUN_00416434 + +void FUN_00416434(undefined8 *param_1,undefined8 param_2) + +{ + *param_1 = param_2; + return; +} + + +================================================================== + +### FUNC 0041643c (12 bytes) name=FUN_0041643c + +undefined8 * FUN_0041643c(void) + +{ + return &DAT_00547750; +} + + +================================================================== + +### FUNC 00416448 (12 bytes) name=FUN_00416448 + +uint FUN_00416448(long param_1) + +{ + return *(uint *)(param_1 + 0x10) >> 0x1f; +} + + +================================================================== + +### FUNC 00416454 (16 bytes) name=FUN_00416454 + +bool FUN_00416454(long param_1) + +{ + return 0 < *(int *)(param_1 + 0x10); +} + + +================================================================== + +### FUNC 00416464 (12 bytes) name=FUN_00416464 + +void FUN_00416464(long param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0xffffffff; + return; +} + + +================================================================== + +### FUNC 00416470 (8 bytes) name=FUN_00416470 + +void FUN_00416470(long param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + return; +} + + +================================================================== + +### FUNC 00416478 (40 bytes) name=FUN_00416478 + +void FUN_00416478(long *param_1,long param_2) + +{ + if (param_1 == &DAT_00547750) { + return; + } + *(undefined4 *)(param_1 + 2) = 0; + *param_1 = param_2; + *(undefined4 *)((long)param_1 + param_2 * 4 + 0x18) = 0; + return; +} + + +================================================================== + +### FUNC 004164a0 (8 bytes) name=FUN_004164a0 + +long FUN_004164a0(long param_1) + +{ + return param_1 + 0x18; +} + + +================================================================== + +### FUNC 004164a8 (152 bytes) name=FUN_004164a8 + +void FUN_004164a8(ulong param_1,ulong param_2) + +{ + long lVar1; + void *pvVar2; + ulong uVar3; + + if (0xffffffffffffffe < param_1) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_S_create"); + } + if (param_2 < param_1) { + if (param_1 < param_2 << 1) { + param_1 = param_2 << 1; + } + lVar1 = (param_1 + 1) * 4; + uVar3 = lVar1 + 0x38; + if ((uVar3 < 0x1001) || (param_1 <= param_2)) { + uVar3 = lVar1 + 0x18; + goto LAB_00416514; + } + param_1 = param_1 + (0x1000 - (uVar3 & 0xfff) >> 2); + if (0xffffffffffffffe < param_1) { + param_1 = 0xffffffffffffffe; + } + } + uVar3 = param_1 * 4 + 0x1c; +LAB_00416514: + pvVar2 = operator_new(uVar3); + *(ulong *)((long)pvVar2 + 8) = param_1; + *(undefined4 *)((long)pvVar2 + 0x10) = 0; + return; +} + + +================================================================== + +### FUNC 00416540 (508 bytes) name=FUN_00416540 + +void FUN_00416540(long *param_1,size_t param_2,long param_3,long param_4) + +{ + long lVar1; + ulong uVar2; + char cVar3; + bool bVar4; + undefined8 *puVar5; + wchar_t wVar6; + wchar_t *__s2; + wchar_t *pwVar7; + undefined8 *puVar8; + size_t __n; + undefined1 auStack_8 [8]; + + puVar8 = (undefined8 *)*param_1; + uVar2 = (param_4 - param_3) + puVar8[-3]; + __n = (puVar8[-3] - param_2) - param_3; + if (((ulong)puVar8[-2] < uVar2) || (0 < *(int *)(puVar8 + -1))) { + puVar5 = (undefined8 *)FUN_004164a8(uVar2,puVar8[-2],auStack_8); + if (param_2 == 0) { + __s2 = (wchar_t *)*param_1; + } + else { + __s2 = (wchar_t *)*param_1; + if (param_2 == 1) { + *(wchar_t *)(puVar5 + 3) = *__s2; + } + else { + wmemcpy((wchar_t *)(puVar5 + 3),__s2,param_2); + __s2 = (wchar_t *)*param_1; + } + } + if (__n != 0) { + lVar1 = (param_4 + param_2) * 4 + 0x18; + if (__n == 1) { + *(wchar_t *)((long)puVar5 + lVar1) = __s2[param_3 + param_2]; + } + else { + wmemcpy((wchar_t *)((long)puVar5 + lVar1),__s2 + param_3 + param_2,__n); + __s2 = (wchar_t *)*param_1; + } + } + puVar8 = puVar5 + 3; + if (__s2 + -6 != (wchar_t *)&DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + wVar6 = __s2[-2]; + __s2[-2] = wVar6 + L'\xffffffff'; + } + else { + pwVar7 = __s2 + -2; + do { + wVar6 = *pwVar7; + cVar3 = '\x01'; + bVar4 = (bool)ExclusiveMonitorPass(pwVar7,0x10); + if (bVar4) { + *pwVar7 = wVar6 + L'\xffffffff'; + cVar3 = ExclusiveMonitorsStatus(); + } + } while (cVar3 != '\0'); + } + if (wVar6 < L'\x01') { + operator_delete(__s2 + -6); + } + } + *param_1 = (long)puVar8; + if (puVar5 == &DAT_00547750) { + return; + } + } + else { + if ((param_3 != param_4) && (__n != 0)) { + if (__n == 1) { + *(undefined4 *)((long)puVar8 + (param_4 + param_2) * 4) = + *(undefined4 *)((long)puVar8 + (param_3 + param_2) * 4); + } + else { + wmemmove((wchar_t *)((long)puVar8 + (param_4 + param_2) * 4), + (wchar_t *)((long)puVar8 + (param_3 + param_2) * 4),__n); + puVar8 = (undefined8 *)*param_1; + } + } + if (puVar8 == (undefined8 *)&DAT_00547768) { + return; + } + } + puVar8[-3] = uVar2; + *(undefined4 *)(puVar8 + -1) = 0; + *(undefined4 *)((long)puVar8 + uVar2 * 4) = 0; + return; +} + + +================================================================== + +### FUNC 0041673c (92 bytes) name=FUN_0041673c + +void FUN_0041673c(undefined8 *param_1) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if (puVar1 != &DAT_00547768) { + if (0 < *(int *)(puVar1 + -8)) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return; +} + + +================================================================== + +### FUNC 00416798 (92 bytes) name=FUN_00416798 + +void FUN_00416798(undefined8 *param_1) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return; +} + + +================================================================== + +### FUNC 004167f4 (20 bytes) name=FUN_004167f4 + +void FUN_004167f4(long *param_1) + +{ + FUN_00416540(param_1,0,*(undefined8 *)(*param_1 + -0x18),0); + return; +} + + +================================================================== + +### FUNC 00416808 (96 bytes) name=FUN_00416808 + +long * FUN_00416808(long *param_1,ulong param_2,ulong param_3) + +{ + ulong uVar1; + + if (param_2 <= *(ulong *)(*param_1 + -0x18)) { + uVar1 = *(ulong *)(*param_1 + -0x18) - param_2; + if (param_3 < uVar1) { + uVar1 = param_3; + } + FUN_00416540(param_1,param_2,uVar1,0); + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase", + param_2); +} + + +================================================================== + +### FUNC 00416868 (68 bytes) name=FUN_00416868 + +long FUN_00416868(long *param_1,long param_2) + +{ + long lVar1; + long lVar2; + + lVar2 = *param_1; + FUN_00416540(param_1,param_2 - lVar2 >> 2,1,0); + lVar1 = *param_1; + *(undefined4 *)(lVar1 + -8) = 0xffffffff; + return lVar1 + (param_2 - lVar2); +} + + +================================================================== + +### FUNC 004168ac (96 bytes) name=FUN_004168ac + +long FUN_004168ac(long *param_1,long param_2,long param_3) + +{ + long lVar1; + long lVar2; + + lVar1 = param_3 - param_2 >> 2; + if (lVar1 == 0) { + return param_2; + } + lVar2 = *param_1; + FUN_00416540(param_1,param_2 - lVar2 >> 2,lVar1,0); + lVar1 = *param_1; + *(undefined4 *)(lVar1 + -8) = 0xffffffff; + return lVar1 + (param_2 - lVar2); +} + + +================================================================== + +### FUNC 0041690c (156 bytes) name=FUN_0041690c + +long * FUN_0041690c(long *param_1,long param_2,long param_3,ulong param_4,wchar_t param_5) + +{ + if ((ulong)((0xffffffffffffffe - *(long *)(*param_1 + -0x18)) + param_3) < param_4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); + } + FUN_00416540(); + if (param_4 != 0) { + if (param_4 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = param_5; + return param_1; + } + wmemset((wchar_t *)(*param_1 + param_2 * 4),param_5,param_4); + } + return param_1; +} + + +================================================================== + +### FUNC 004169a8 (124 bytes) name=FUN_004169a8 + +long * FUN_004169a8(long *param_1,long param_2,undefined8 param_3,wchar_t *param_4,size_t param_5) + +{ + FUN_00416540(); + if (param_5 != 0) { + if (param_5 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = *param_4; + return param_1; + } + wmemcpy((wchar_t *)(*param_1 + param_2 * 4),param_4,param_5); + } + return param_1; +} + + +================================================================== + +### FUNC 00416a24 (288 bytes) name=FUN_00416a24 + +undefined8 * FUN_00416a24(undefined8 *param_1,wchar_t *param_2,size_t param_3) + +{ + wchar_t *__s1; + ulong uVar1; + wchar_t *pwVar2; + + __s1 = (wchar_t *)*param_1; + pwVar2 = __s1 + -6; + if (0xffffffffffffffe < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::assign"); + } + if (((param_2 < __s1) || (__s1 + *(long *)(__s1 + -6) < param_2)) || (L'\0' < __s1[-2])) { + FUN_00416540(param_1,0,*(long *)(__s1 + -6),param_3); + if (param_3 == 0) { + return param_1; + } + if (param_3 != 1) { + wmemcpy((wchar_t *)*param_1,param_2,param_3); + return param_1; + } + *(wchar_t *)*param_1 = *param_2; + return param_1; + } + uVar1 = (long)param_2 - (long)__s1 >> 2; + if (uVar1 < param_3) { + if (uVar1 == 0) goto LAB_00416ad4; + if (param_3 != 1) { + wmemmove(__s1,param_2,param_3); + __s1 = (wchar_t *)*param_1; + pwVar2 = __s1 + -6; + goto LAB_00416ad4; + } + } + else if (param_3 != 1) { + wmemcpy(__s1,param_2,param_3); + __s1 = (wchar_t *)*param_1; + pwVar2 = __s1 + -6; + goto LAB_00416ad4; + } + *__s1 = *param_2; +LAB_00416ad4: + if (pwVar2 != (wchar_t *)&DAT_00547750) { + __s1[-2] = L'\0'; + *(size_t *)(__s1 + -6) = param_3; + __s1[param_3] = L'\0'; + } + return param_1; +} + + +================================================================== + +### FUNC 00416b44 (36 bytes) name=FUN_00416b44 + +undefined8 FUN_00416b44(undefined8 param_1) + +{ + FUN_00416a24(); + return param_1; +} + + +================================================================== + +### FUNC 00416b68 (76 bytes) name=FUN_00416b68 + +void FUN_00416b68(undefined8 param_1,long *param_2,ulong param_3,ulong param_4) + +{ + ulong uVar1; + ulong uVar2; + + uVar2 = *(ulong *)(*param_2 + -0x18); + if (param_3 <= uVar2) { + uVar1 = uVar2 - param_3; + if (param_4 < uVar2 - param_3) { + uVar1 = param_4; + } + FUN_00416a24(param_1,*param_2 + param_3 * 4,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::assign", + param_3,uVar2); +} + + +================================================================== + +### FUNC 00416bb4 (52 bytes) name=FUN_00416bb4 + +void FUN_00416bb4(undefined8 param_1,wchar_t *param_2) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + FUN_00416a24(param_1,param_2,sVar1); + return; +} + + +================================================================== + +### FUNC 00416be8 (52 bytes) name=FUN_00416be8 + +void FUN_00416be8(undefined8 param_1,wchar_t *param_2) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + FUN_00416a24(param_1,param_2,sVar1); + return; +} + + +================================================================== + +### FUNC 00416c1c (4 bytes) name=thunk_FUN_00416a24 + +undefined8 * thunk_FUN_00416a24(undefined8 *param_1,wchar_t *param_2,size_t param_3) + +{ + wchar_t *__s1; + ulong uVar1; + wchar_t *pwVar2; + + __s1 = (wchar_t *)*param_1; + pwVar2 = __s1 + -6; + if (0xffffffffffffffe < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::assign"); + } + if (((param_2 < __s1) || (__s1 + *(long *)(__s1 + -6) < param_2)) || (L'\0' < __s1[-2])) { + FUN_00416540(param_1,0,*(long *)(__s1 + -6),param_3); + if (param_3 == 0) { + return param_1; + } + if (param_3 != 1) { + wmemcpy((wchar_t *)*param_1,param_2,param_3); + return param_1; + } + *(wchar_t *)*param_1 = *param_2; + return param_1; + } + uVar1 = (long)param_2 - (long)__s1 >> 2; + if (uVar1 < param_3) { + if (uVar1 == 0) goto LAB_00416ad4; + if (param_3 != 1) { + wmemmove(__s1,param_2,param_3); + __s1 = (wchar_t *)*param_1; + pwVar2 = __s1 + -6; + goto LAB_00416ad4; + } + } + else if (param_3 != 1) { + wmemcpy(__s1,param_2,param_3); + __s1 = (wchar_t *)*param_1; + pwVar2 = __s1 + -6; + goto LAB_00416ad4; + } + *__s1 = *param_2; +LAB_00416ad4: + if (pwVar2 != (wchar_t *)&DAT_00547750) { + __s1[-2] = L'\0'; + *(size_t *)(__s1 + -6) = param_3; + __s1[param_3] = L'\0'; + } + return param_1; +} + + +================================================================== + +### FUNC 00416c20 (492 bytes) name=FUN_00416c20 + +long * FUN_00416c20(long *param_1,ulong param_2,wchar_t *param_3,ulong param_4) + +{ + wchar_t *__s2; + wchar_t *__s1; + long lVar1; + ulong uVar2; + wchar_t *pwVar3; + size_t __n; + long lVar4; + + pwVar3 = (wchar_t *)*param_1; + uVar2 = *(ulong *)(pwVar3 + -6); + if (uVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::insert", + param_2,uVar2); + } + if (param_4 <= 0xffffffffffffffe - uVar2) { + if (((param_3 < pwVar3) || (pwVar3 + uVar2 < param_3)) || (L'\0' < pwVar3[-2])) { + FUN_00416540(param_1,param_2,0,param_4); + if (param_4 != 0) { + if (param_4 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = *param_3; + } + else { + wmemcpy((wchar_t *)(*param_1 + param_2 * 4),param_3,param_4); + } + } + } + else { + FUN_00416540(param_1,param_2,0); + lVar1 = *param_1; + __s2 = (wchar_t *)((long)param_3 + (lVar1 - (long)pwVar3)); + __s1 = (wchar_t *)(lVar1 + param_2 * 4); + if (__s2 + param_4 <= __s1) { + if (param_4 != 1) { + wmemcpy(__s1,__s2,param_4); + return param_1; + } + *(undefined4 *)(lVar1 + param_2 * 4) = + *(undefined4 *)((long)param_3 + (lVar1 - (long)pwVar3)); + return param_1; + } + if (__s2 < __s1) { + lVar4 = (long)__s1 - (long)__s2; + __n = lVar4 >> 2; + if (__n == 1) { + *(undefined4 *)(lVar1 + param_2 * 4) = + *(undefined4 *)((long)param_3 + (lVar1 - (long)pwVar3)); + } + else { + wmemcpy(__s1,__s2,__n); + } + if (param_4 - __n == 1) { + *(wchar_t *)((long)__s1 + lVar4) = __s1[param_4]; + } + else { + wmemcpy((wchar_t *)((long)__s1 + lVar4),__s1 + param_4,param_4 - __n); + } + } + else if (param_4 == 1) { + *(wchar_t *)(lVar1 + param_2 * 4) = __s2[1]; + } + else { + wmemcpy(__s1,__s2 + param_4,param_4); + } + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::insert"); +} + + +================================================================== + +### FUNC 00416e0c (16 bytes) name=FUN_00416e0c + +void FUN_00416e0c(long *param_1,long param_2) + +{ + FUN_00416c20(param_1,param_2 - *param_1 >> 2); + return; +} + + +================================================================== + +### FUNC 00416e1c (76 bytes) name=FUN_00416e1c + +void FUN_00416e1c(undefined8 param_1,undefined8 param_2,long *param_3,ulong param_4,ulong param_5) + +{ + ulong uVar1; + ulong uVar2; + + uVar2 = *(ulong *)(*param_3 + -0x18); + if (param_4 <= uVar2) { + uVar1 = uVar2 - param_4; + if (param_5 < uVar2 - param_4) { + uVar1 = param_5; + } + FUN_00416c20(param_1,param_2,*param_3 + param_4 * 4,uVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::insert", + param_4,uVar2); +} + + +================================================================== + +### FUNC 00416e68 (60 bytes) name=FUN_00416e68 + +void FUN_00416e68(undefined8 param_1,undefined8 param_2,wchar_t *param_3) + +{ + size_t sVar1; + + sVar1 = wcslen(param_3); + FUN_00416c20(param_1,param_2,param_3,sVar1); + return; +} + + +================================================================== + +### FUNC 00416ea4 (12 bytes) name=FUN_00416ea4 + +void FUN_00416ea4(void) + +{ + FUN_00416c20(); + return; +} + + +================================================================== + +### FUNC 00416eb0 (68 bytes) name=FUN_00416eb0 + +void FUN_00416eb0(long *param_1) + +{ + ulong uVar1; + + uVar1 = *(ulong *)(*param_1 + -0x18) - 1; + if (uVar1 <= *(ulong *)(*param_1 + -0x18)) { + FUN_00416540(param_1,uVar1,1,0); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase"); +} + + +================================================================== + +### FUNC 00416ef4 (96 bytes) name=FUN_00416ef4 + +undefined * FUN_00416ef4(undefined8 *param_1) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1; +} + + +================================================================== + +### FUNC 00416f54 (108 bytes) name=FUN_00416f54 + +undefined8 * FUN_00416f54(undefined8 *param_1,undefined8 *param_2) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_2; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_2,0,0,0); + puVar1 = (undefined *)*param_2; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + *param_1 = puVar1; + return param_1; +} + + +================================================================== + +### FUNC 00416fc0 (96 bytes) name=FUN_00416fc0 + +undefined * FUN_00416fc0(undefined8 *param_1) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1; +} + + +================================================================== + +### FUNC 00417020 (100 bytes) name=FUN_00417020 + +undefined * FUN_00417020(undefined8 *param_1,long param_2) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + param_2 * 4; +} + + +================================================================== + +### FUNC 00417084 (100 bytes) name=FUN_00417084 + +undefined * FUN_00417084(undefined8 *param_1) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + *(long *)(puVar1 + -0x18) * 4; +} + + +================================================================== + +### FUNC 004170e8 (116 bytes) name=FUN_004170e8 + +undefined8 * FUN_004170e8(undefined8 *param_1,undefined8 *param_2) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_2; + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_2,0,0,0); + puVar1 = (undefined *)*param_2; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + *param_1 = puVar1 + *(long *)(puVar1 + -0x18) * 4; + return param_1; +} + + +================================================================== + +### FUNC 0041715c (104 bytes) name=FUN_0041715c + +undefined * FUN_0041715c(undefined8 *param_1) + +{ + undefined *puVar1; + long lVar2; + + puVar1 = (undefined *)*param_1; + lVar2 = *(long *)(puVar1 + -0x18); + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + (lVar2 + -1) * 4; +} + + +================================================================== + +### FUNC 004171c4 (124 bytes) name=FUN_004171c4 + +undefined * FUN_004171c4(undefined8 *param_1,ulong param_2) + +{ + undefined *puVar1; + + puVar1 = (undefined *)*param_1; + if (param_2 < *(ulong *)(puVar1 + -0x18)) { + if ((-1 < *(int *)(puVar1 + -8)) && (puVar1 != &DAT_00547768)) { + if (*(int *)(puVar1 + -8) != 0) { + FUN_00416540(param_1,0,0,0); + puVar1 = (undefined *)*param_1; + } + *(undefined4 *)(puVar1 + -8) = 0xffffffff; + } + return puVar1 + param_2 * 4; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)"); +} + + +================================================================== + +### FUNC 00417240 (64 bytes) name=FUN_00417240 + +long * FUN_00417240(long *param_1,undefined4 param_2) + +{ + FUN_00416540(param_1,0,*(undefined8 *)(*param_1 + -0x18),1); + *(undefined4 *)*param_1 = param_2; + return param_1; +} + + +================================================================== + +### FUNC 00417280 (112 bytes) name=FUN_00417280 + +long FUN_00417280(long *param_1,long param_2,undefined4 param_3) + +{ + long lVar1; + + param_2 = param_2 - *param_1; + if (*(long *)(*param_1 + -0x18) != 0xffffffffffffffe) { + FUN_00416540(param_1,param_2 >> 2,0,1); + lVar1 = *param_1; + *(undefined4 *)(lVar1 + param_2) = param_3; + *(undefined4 *)(lVar1 + -8) = 0xffffffff; + return lVar1 + param_2; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux",param_2 >> 2); +} + + +================================================================== + +### FUNC 004172f0 (144 bytes) name=FUN_004172f0 + +long * FUN_004172f0(long *param_1,size_t param_2,wchar_t param_3) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(*param_1 + -0x18); + if (0xffffffffffffffe < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux",*param_1,uVar1); + } + FUN_00416540(param_1,0,uVar1,param_2); + if (param_2 != 0) { + if (param_2 == 1) { + *(wchar_t *)*param_1 = param_3; + return param_1; + } + wmemset((wchar_t *)*param_1,param_3,param_2); + } + return param_1; +} + + +================================================================== + +### FUNC 00417380 (188 bytes) name=FUN_00417380 + +long * FUN_00417380(long *param_1,ulong param_2,ulong param_3,wchar_t param_4) + +{ + if (*(ulong *)(*param_1 + -0x18) < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::insert", + param_2); + } + if (param_3 <= 0xffffffffffffffe - *(ulong *)(*param_1 + -0x18)) { + FUN_00416540(param_1,param_2,0,param_3); + if (param_3 != 0) { + if (param_3 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = param_4; + return param_1; + } + wmemset((wchar_t *)(*param_1 + param_2 * 4),param_4,param_3); + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); +} + + +================================================================== + +### FUNC 0041743c (168 bytes) name=FUN_0041743c + +long * FUN_0041743c(long *param_1,long param_2,long param_3,ulong param_4,wchar_t param_5) + +{ + long lVar1; + + lVar1 = param_2 - *param_1; + if ((ulong)((0xffffffffffffffe - *(long *)(*param_1 + -0x18)) + (param_3 - param_2 >> 2)) < + param_4) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux",lVar1 >> 2); + } + FUN_00416540(); + if (param_4 != 0) { + if (param_4 == 1) { + *(wchar_t *)(*param_1 + lVar1) = param_5; + return param_1; + } + wmemset((wchar_t *)(*param_1 + lVar1),param_5,param_4); + } + return param_1; +} + + +================================================================== + +### FUNC 004174e4 (204 bytes) name=FUN_004174e4 + +long * FUN_004174e4(long *param_1,ulong param_2,ulong param_3,ulong param_4,wchar_t param_5) + +{ + ulong uVar1; + ulong uVar2; + + uVar2 = *(ulong *)(*param_1 + -0x18); + if (uVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace", + param_2,uVar2); + } + uVar1 = uVar2 - param_2; + if (param_3 < uVar2 - param_2) { + uVar1 = param_3; + } + if (param_4 <= (0xffffffffffffffe - uVar2) + uVar1) { + FUN_00416540(); + if (param_4 != 0) { + if (param_4 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = param_5; + return param_1; + } + wmemset((wchar_t *)(*param_1 + param_2 * 4),param_5,param_4); + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux"); +} + + +================================================================== + +### FUNC 004175b0 (148 bytes) name=FUN_004175b0 + +void FUN_004175b0(long *param_1,long param_2,ulong param_3,wchar_t param_4) + +{ + param_2 = param_2 - *param_1; + if (0xffffffffffffffeU - *(long *)(*param_1 + -0x18) < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::_M_replace_aux",param_2 >> 2); + } + FUN_00416540(param_1,param_2 >> 2,0,param_3); + if (param_3 != 0) { + if (param_3 != 1) { + wmemset((wchar_t *)(*param_1 + param_2),param_4,param_3); + return; + } + *(wchar_t *)(*param_1 + param_2) = param_4; + } + return; +} + + +================================================================== + +### FUNC 00417644 (160 bytes) name=FUN_00417644 + +void FUN_00417644(undefined8 *param_1,size_t param_2,wchar_t param_3,undefined8 param_4) + +{ + size_t *psVar1; + wchar_t *__s; + + if (param_2 == 0) { + __s = (wchar_t *)&DAT_00547768; + } + else { + psVar1 = (size_t *)FUN_004164a8(param_2,0,param_4); + __s = (wchar_t *)(psVar1 + 3); + if (param_2 == 1) { + *(wchar_t *)(psVar1 + 3) = param_3; + } + else { + wmemset(__s,param_3,param_2); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = param_2; + *(undefined4 *)((long)psVar1 + param_2 * 4 + 0x18) = 0; + } + } + *param_1 = __s; + return; +} + + +================================================================== + +### FUNC 004176e4 (292 bytes) name=FUN_004176e4 + +void FUN_004176e4(undefined8 *param_1,long *param_2,ulong param_3,ulong param_4) + +{ + wchar_t *__s2; + wchar_t *pwVar1; + ulong uVar2; + size_t *psVar3; + ulong uVar4; + long lVar5; + size_t __n; + undefined1 auStack_8 [8]; + + lVar5 = *param_2; + uVar4 = *(ulong *)(lVar5 + -0x18); + if (uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string",param_3,uVar4); + } + __s2 = (wchar_t *)(lVar5 + param_3 * 4); + uVar2 = uVar4 - param_3; + if (param_4 < uVar4 - param_3) { + uVar2 = param_4; + } + pwVar1 = (wchar_t *)(lVar5 + (uVar2 + param_3) * 4); + if (__s2 != pwVar1) { + if ((pwVar1 != (wchar_t *)0x0) && (__s2 == (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)pwVar1 - (long)__s2 >> 2; + psVar3 = (size_t *)FUN_004164a8(__n,0,auStack_8); + if (__n == 1) { + *(undefined4 *)(psVar3 + 3) = *(undefined4 *)(lVar5 + param_3 * 4); + } + else { + wmemcpy((wchar_t *)(psVar3 + 3),__s2,__n); + } + if (psVar3 != &DAT_00547750) { + *(undefined4 *)(psVar3 + 2) = 0; + *psVar3 = __n; + *(undefined4 *)((long)psVar3 + ((long)pwVar1 - (long)__s2) + 0x18) = 0; + } + *param_1 = psVar3 + 3; + return; + } + *param_1 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 00417808 (100 bytes) name=FUN_00417808 + +undefined8 FUN_00417808(undefined8 param_1,long *param_2,ulong param_3,undefined8 param_4) + +{ + if (param_3 <= *(ulong *)(*param_2 + -0x18)) { + FUN_004176e4(param_1,param_2,param_3,param_4); + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr", + param_3,*(ulong *)(*param_2 + -0x18)); +} + + +================================================================== + +### FUNC 0041786c (220 bytes) name=FUN_0041786c + +void FUN_0041786c(undefined8 *param_1,wchar_t *param_2,undefined8 param_3) + +{ + size_t sVar1; + size_t *psVar2; + long lVar3; + + if (param_2 == (wchar_t *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + sVar1 = wcslen(param_2); + lVar3 = sVar1 * 4; + if (lVar3 != 0) { + sVar1 = lVar3 >> 2; + psVar2 = (size_t *)FUN_004164a8(sVar1,0,param_3); + if (sVar1 == 1) { + *(wchar_t *)(psVar2 + 3) = *param_2; + } + else { + wmemcpy((wchar_t *)(psVar2 + 3),param_2,sVar1); + } + if (psVar2 != &DAT_00547750) { + *(undefined4 *)(psVar2 + 2) = 0; + *psVar2 = sVar1; + *(undefined4 *)((long)psVar2 + lVar3 + 0x18) = 0; + } + *param_1 = psVar2 + 3; + return; + } + *param_1 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 00417948 (736 bytes) name=FUN_00417948 + +ulong * FUN_00417948(ulong *param_1,ulong param_2,ulong param_3,wchar_t *param_4,ulong param_5) + +{ + ulong uVar1; + char cVar2; + bool bVar3; + wchar_t wVar4; + size_t *psVar5; + wchar_t *pwVar6; + ulong uVar7; + long lVar8; + wchar_t *pwVar9; + size_t __n; + undefined1 auStack_8 [8]; + + pwVar6 = (wchar_t *)*param_1; + uVar7 = *(ulong *)(pwVar6 + -6); + if (uVar7 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace", + param_2); + } + uVar1 = uVar7 - param_2; + if (param_3 < uVar7 - param_2) { + uVar1 = param_3; + } + if ((0xffffffffffffffe - uVar7) + uVar1 < param_5) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::replace"); + } + if (((param_4 < pwVar6) || (pwVar6 + uVar7 < param_4)) || (L'\0' < pwVar6[-2])) { + FUN_00416540(param_1,param_2,uVar1,param_5); + if (param_5 != 0) { + if (param_5 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = *param_4; + } + else { + wmemcpy((wchar_t *)(*param_1 + param_2 * 4),param_4,param_5); + } + } + return param_1; + } + pwVar9 = param_4 + param_5; + if (pwVar6 + param_2 < pwVar9) { + if (param_4 < pwVar6 + uVar1 + param_2) { + if (param_4 == pwVar9) { + pwVar6 = (wchar_t *)&DAT_00547768; + } + else { + if ((pwVar9 != (wchar_t *)0x0) && (param_4 == (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)(param_5 * 4) >> 2; + psVar5 = (size_t *)FUN_004164a8(__n,0,auStack_8); + pwVar6 = (wchar_t *)(psVar5 + 3); + if (__n == 1) { + *(wchar_t *)(psVar5 + 3) = *param_4; + } + else { + wmemcpy(pwVar6,param_4,__n); + } + if (psVar5 != &DAT_00547750) { + *(undefined4 *)(psVar5 + 2) = 0; + *psVar5 = __n; + *(undefined4 *)((long)psVar5 + param_5 * 4 + 0x18) = 0; + } + } + FUN_00416540(param_1,param_2,uVar1,param_5); + if (param_5 != 0) { + if (param_5 == 1) { + *(wchar_t *)(*param_1 + param_2 * 4) = *pwVar6; + } + else { + wmemcpy((wchar_t *)(*param_1 + param_2 * 4),pwVar6,param_5); + } + } + if (pwVar6 + -6 == (wchar_t *)&DAT_00547750) { + return param_1; + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + wVar4 = pwVar6[-2]; + pwVar6[-2] = wVar4 + L'\xffffffff'; + } + else { + pwVar9 = pwVar6 + -2; + do { + wVar4 = *pwVar9; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(pwVar9,0x10); + if (bVar3) { + *pwVar9 = wVar4 + L'\xffffffff'; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (L'\0' < wVar4) { + return param_1; + } + operator_delete(pwVar6 + -6); + return param_1; + } + lVar8 = (param_5 + ((long)param_4 - (long)pwVar6 >> 2)) - uVar1; + } + else { + lVar8 = (long)param_4 - (long)pwVar6 >> 2; + } + FUN_00416540(param_1,param_2,uVar1,param_5); + uVar7 = *param_1; + if (param_5 != 1) { + wmemcpy((wchar_t *)(uVar7 + param_2 * 4),(wchar_t *)(uVar7 + lVar8 * 4),param_5); + return param_1; + } + *(undefined4 *)(uVar7 + param_2 * 4) = *(undefined4 *)(uVar7 + lVar8 * 4); + return param_1; +} + + +================================================================== + +### FUNC 00417c4c (12 bytes) name=FUN_00417c4c + +void FUN_00417c4c(void) + +{ + FUN_00417948(); + return; +} + + +================================================================== + +### FUNC 00417c58 (76 bytes) name=FUN_00417c58 + +void FUN_00417c58(void) + +{ + long *in_x3; + ulong in_x4; + + if (in_x4 <= *(ulong *)(*in_x3 + -0x18)) { + FUN_00417948(); + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace", + in_x4,*(ulong *)(*in_x3 + -0x18)); +} + + +================================================================== + +### FUNC 00417ca4 (68 bytes) name=FUN_00417ca4 + +void FUN_00417ca4(undefined8 param_1,undefined8 param_2,undefined8 param_3,wchar_t *param_4) + +{ + size_t sVar1; + + sVar1 = wcslen(param_4); + FUN_00417948(param_1,param_2,param_3,param_4,sVar1); + return; +} + + +================================================================== + +### FUNC 00417ce8 (24 bytes) name=FUN_00417ce8 + +void FUN_00417ce8(long *param_1,long param_2,long param_3) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2); + return; +} + + +================================================================== + +### FUNC 00417d00 (32 bytes) name=FUN_00417d00 + +void FUN_00417d00(long *param_1,long param_2,long param_3,long *param_4) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,*param_4, + *(undefined8 *)(*param_4 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00417d20 (88 bytes) name=FUN_00417d20 + +void FUN_00417d20(long *param_1,long param_2,long param_3,wchar_t *param_4) + +{ + size_t sVar1; + + sVar1 = wcslen(param_4); + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,param_4,sVar1); + return; +} + + +================================================================== + +### FUNC 00417d78 (32 bytes) name=FUN_00417d78 + +void FUN_00417d78(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,param_4,param_5 - param_4 >> 2 + ); + return; +} + + +================================================================== + +### FUNC 00417d98 (32 bytes) name=FUN_00417d98 + +void FUN_00417d98(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,param_4,param_5 - param_4 >> 2 + ); + return; +} + + +================================================================== + +### FUNC 00417db8 (28 bytes) name=FUN_00417db8 + +void FUN_00417db8(long *param_1,long param_2,long param_3,undefined8 param_4,long param_5) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,param_4,(param_5 << 2) >> 2); + return; +} + + +================================================================== + +### FUNC 00417dd4 (32 bytes) name=FUN_00417dd4 + +void FUN_00417dd4(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,param_4,param_5 - param_4 >> 2 + ); + return; +} + + +================================================================== + +### FUNC 00417df4 (32 bytes) name=FUN_00417df4 + +void FUN_00417df4(long *param_1,long param_2,long param_3,long param_4,long param_5) + +{ + FUN_00417948(param_1,param_2 - *param_1 >> 2,param_3 - param_2 >> 2,param_4,param_5 - param_4 >> 2 + ); + return; +} + + +================================================================== + +### FUNC 00417e14 (220 bytes) name=FUN_00417e14 + +void FUN_00417e14(undefined8 *param_1,wchar_t *param_2,long param_3,undefined8 param_4) + +{ + size_t *psVar1; + size_t __n; + + if (param_2 == param_2 + param_3) { + *param_1 = &DAT_00547768; + return; + } + if ((param_2 + param_3 != (wchar_t *)0x0) && (param_2 == (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = param_3 * 4 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0,param_4); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_2; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_2,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + param_3 * 4 + 0x18) = 0; + } + *param_1 = psVar1 + 3; + return; +} + + +================================================================== + +### FUNC 00417ef0 (220 bytes) name=FUN_00417ef0 + +void FUN_00417ef0(undefined8 *param_1,wchar_t *param_2,long param_3,undefined8 param_4) + +{ + size_t *psVar1; + size_t __n; + + if (param_2 == param_2 + param_3) { + *param_1 = &DAT_00547768; + return; + } + if ((param_2 + param_3 != (wchar_t *)0x0) && (param_2 == (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = param_3 * 4 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0,param_4); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_2; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_2,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + param_3 * 4 + 0x18) = 0; + } + *param_1 = psVar1 + 3; + return; +} + + +================================================================== + +### FUNC 00417fcc (292 bytes) name=FUN_00417fcc + +void FUN_00417fcc(undefined8 *param_1,long *param_2,ulong param_3,ulong param_4,undefined8 param_5) + +{ + wchar_t *__s2; + wchar_t *pwVar1; + ulong uVar2; + size_t *psVar3; + ulong uVar4; + long lVar5; + size_t __n; + + lVar5 = *param_2; + uVar4 = *(ulong *)(lVar5 + -0x18); + if (uVar4 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string",param_3,uVar4); + } + __s2 = (wchar_t *)(lVar5 + param_3 * 4); + uVar2 = uVar4 - param_3; + if (param_4 < uVar4 - param_3) { + uVar2 = param_4; + } + pwVar1 = (wchar_t *)(lVar5 + (uVar2 + param_3) * 4); + if (__s2 != pwVar1) { + if ((pwVar1 != (wchar_t *)0x0) && (__s2 == (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)pwVar1 - (long)__s2 >> 2; + psVar3 = (size_t *)FUN_004164a8(__n,0,param_5); + if (__n == 1) { + *(undefined4 *)(psVar3 + 3) = *(undefined4 *)(lVar5 + param_3 * 4); + } + else { + wmemcpy((wchar_t *)(psVar3 + 3),__s2,__n); + } + if (psVar3 != &DAT_00547750) { + *(undefined4 *)(psVar3 + 2) = 0; + *psVar3 = __n; + *(undefined4 *)((long)psVar3 + ((long)pwVar1 - (long)__s2) + 0x18) = 0; + } + *param_1 = psVar3 + 3; + return; + } + *param_1 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 004180f0 (140 bytes) name=FUN_004180f0 + +wchar_t * FUN_004180f0(size_t param_1,wchar_t param_2) + +{ + size_t *psVar1; + wchar_t *__s; + + if (param_1 == 0) { + __s = (wchar_t *)&DAT_00547768; + } + else { + psVar1 = (size_t *)FUN_004164a8(param_1,0); + __s = (wchar_t *)(psVar1 + 3); + if (param_1 == 1) { + *(wchar_t *)(psVar1 + 3) = param_2; + } + else { + wmemset(__s,param_2,param_1); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = param_1; + *(undefined4 *)((long)psVar1 + param_1 * 4 + 0x18) = 0; + } + } + return __s; +} + + +================================================================== + +### FUNC 0041817c (140 bytes) name=FUN_0041817c + +wchar_t * FUN_0041817c(size_t param_1,wchar_t param_2) + +{ + size_t *psVar1; + wchar_t *__s; + + if (param_1 == 0) { + __s = (wchar_t *)&DAT_00547768; + } + else { + psVar1 = (size_t *)FUN_004164a8(param_1,0); + __s = (wchar_t *)(psVar1 + 3); + if (param_1 == 1) { + *(wchar_t *)(psVar1 + 3) = param_2; + } + else { + wmemset(__s,param_2,param_1); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = param_1; + *(undefined4 *)((long)psVar1 + param_1 * 4 + 0x18) = 0; + } + } + return __s; +} + + +================================================================== + +### FUNC 00418208 (284 bytes) name=FUN_00418208 + +void FUN_00418208(long *param_1,ulong param_2) + +{ + char cVar1; + bool bVar2; + size_t *psVar3; + int iVar4; + size_t __n; + long lVar5; + int *piVar6; + wchar_t *__s2; + undefined1 auStack_8 [8]; + + __s2 = (wchar_t *)*param_1; + if ((param_2 != *(ulong *)(__s2 + -4)) || (L'\0' < __s2[-2])) { + if (param_2 < *(ulong *)(__s2 + -6)) { + param_2 = *(ulong *)(__s2 + -6); + } + psVar3 = (size_t *)FUN_004164a8(param_2,*(ulong *)(__s2 + -4),auStack_8); + __n = *(size_t *)(__s2 + -6); + if (__n != 0) { + if (__n == 1) { + *(wchar_t *)(psVar3 + 3) = *__s2; + } + else { + wmemcpy((wchar_t *)(psVar3 + 3),__s2,__n); + __n = *(size_t *)(__s2 + -6); + } + } + if (psVar3 != &DAT_00547750) { + *(undefined4 *)(psVar3 + 2) = 0; + *psVar3 = __n; + *(undefined4 *)((long)psVar3 + __n * 4 + 0x18) = 0; + } + lVar5 = *param_1; + if ((undefined8 *)(lVar5 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(lVar5 + -8); + *(int *)(lVar5 + -8) = iVar4 + -1; + } + else { + piVar6 = (int *)(lVar5 + -8); + do { + iVar4 = *piVar6; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar6,0x10); + if (bVar2) { + *piVar6 = iVar4 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar4 < 1) { + operator_delete((undefined8 *)(lVar5 + -0x18)); + } + } + *param_1 = (long)(psVar3 + 3); + } + return; +} + + +================================================================== + +### FUNC 00418324 (52 bytes) name=FUN_00418324 + +void FUN_00418324(long *param_1) + +{ + if (*(ulong *)(*param_1 + -0x10) <= *(ulong *)(*param_1 + -0x18)) { + return; + } + FUN_00418208(param_1,0); + return; +} + + +================================================================== + +### FUNC 00418364 (192 bytes) name=FUN_00418364 + +undefined8 * FUN_00418364(undefined8 *param_1,long *param_2) + +{ + ulong uVar1; + wchar_t *__s2; + long lVar2; + undefined *puVar3; + size_t __n; + + __s2 = (wchar_t *)*param_2; + __n = *(size_t *)(__s2 + -6); + if (__n != 0) { + puVar3 = (undefined *)*param_1; + lVar2 = *(long *)(puVar3 + -0x18); + uVar1 = lVar2 + __n; + if ((*(ulong *)(puVar3 + -0x10) < uVar1) || (0 < *(int *)(puVar3 + -8))) { + FUN_00418208(param_1,uVar1); + puVar3 = (undefined *)*param_1; + __s2 = (wchar_t *)*param_2; + lVar2 = *(long *)(puVar3 + -0x18); + } + if (__n == 1) { + *(wchar_t *)(puVar3 + lVar2 * 4) = *__s2; + } + else { + wmemcpy((wchar_t *)(puVar3 + lVar2 * 4),__s2,__n); + puVar3 = (undefined *)*param_1; + } + if (puVar3 != &DAT_00547768) { + *(undefined4 *)(puVar3 + -8) = 0; + *(ulong *)(puVar3 + -0x18) = uVar1; + *(undefined4 *)(puVar3 + uVar1 * 4) = 0; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00418424 (4 bytes) name=thunk_FUN_00418364 + +undefined8 * thunk_FUN_00418364(undefined8 *param_1,long *param_2) + +{ + ulong uVar1; + wchar_t *__s2; + long lVar2; + undefined *puVar3; + size_t __n; + + __s2 = (wchar_t *)*param_2; + __n = *(size_t *)(__s2 + -6); + if (__n != 0) { + puVar3 = (undefined *)*param_1; + lVar2 = *(long *)(puVar3 + -0x18); + uVar1 = lVar2 + __n; + if ((*(ulong *)(puVar3 + -0x10) < uVar1) || (0 < *(int *)(puVar3 + -8))) { + FUN_00418208(param_1,uVar1); + puVar3 = (undefined *)*param_1; + __s2 = (wchar_t *)*param_2; + lVar2 = *(long *)(puVar3 + -0x18); + } + if (__n == 1) { + *(wchar_t *)(puVar3 + lVar2 * 4) = *__s2; + } + else { + wmemcpy((wchar_t *)(puVar3 + lVar2 * 4),__s2,__n); + puVar3 = (undefined *)*param_1; + } + if (puVar3 != &DAT_00547768) { + *(undefined4 *)(puVar3 + -8) = 0; + *(ulong *)(puVar3 + -0x18) = uVar1; + *(undefined4 *)(puVar3 + uVar1 * 4) = 0; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00418428 (252 bytes) name=FUN_00418428 + +undefined8 * FUN_00418428(undefined8 *param_1,long *param_2,ulong param_3,ulong param_4) + +{ + size_t __n; + undefined *puVar1; + long lVar2; + ulong uVar3; + long lVar4; + + lVar4 = *param_2; + uVar3 = *(ulong *)(lVar4 + -0x18); + if (uVar3 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f504("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::append", + param_3,uVar3); + } + __n = uVar3 - param_3; + if (param_4 < uVar3 - param_3) { + __n = param_4; + } + if (__n != 0) { + puVar1 = (undefined *)*param_1; + lVar2 = *(long *)(puVar1 + -0x18); + uVar3 = __n + lVar2; + if ((*(ulong *)(puVar1 + -0x10) < uVar3) || (0 < *(int *)(puVar1 + -8))) { + FUN_00418208(param_1,uVar3); + puVar1 = (undefined *)*param_1; + lVar4 = *param_2; + lVar2 = *(long *)(puVar1 + -0x18); + } + if (__n == 1) { + *(undefined4 *)(puVar1 + lVar2 * 4) = *(undefined4 *)(lVar4 + param_3 * 4); + } + else { + wmemcpy((wchar_t *)(puVar1 + lVar2 * 4),(wchar_t *)(lVar4 + param_3 * 4),__n); + puVar1 = (undefined *)*param_1; + } + if (puVar1 != &DAT_00547768) { + *(undefined4 *)(puVar1 + -8) = 0; + *(ulong *)(puVar1 + -0x18) = uVar3; + *(undefined4 *)(puVar1 + uVar3 * 4) = 0; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00418524 (320 bytes) name=FUN_00418524 + +undefined8 FUN_00418524(undefined8 *param_1,wchar_t *param_2,ulong param_3) + +{ + ulong uVar1; + wchar_t *__s1; + long lVar2; + wchar_t *pwVar3; + + pwVar3 = (wchar_t *)*param_1; + lVar2 = *(long *)(pwVar3 + -6); + if (0xffffffffffffffeU - lVar2 < param_3) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::append"); + } + uVar1 = param_3 + lVar2; + if ((*(ulong *)(pwVar3 + -4) < uVar1) || (L'\0' < pwVar3[-2])) { + if ((pwVar3 <= param_2) && (param_2 <= pwVar3 + lVar2)) { + lVar2 = (long)param_2 - (long)pwVar3; + FUN_00418208(param_1,uVar1); + pwVar3 = (wchar_t *)*param_1; + param_2 = (wchar_t *)((long)pwVar3 + lVar2); + lVar2 = *(long *)(pwVar3 + -6); + __s1 = pwVar3 + lVar2; + goto joined_r0x00418614; + } + FUN_00418208(param_1,uVar1); + pwVar3 = (wchar_t *)*param_1; + lVar2 = *(long *)(pwVar3 + -6); + } + __s1 = pwVar3 + lVar2; +joined_r0x00418614: + if (param_3 == 1) { + pwVar3[lVar2] = *param_2; + } + else { + wmemcpy(__s1,param_2,param_3); + pwVar3 = (wchar_t *)*param_1; + } + if (pwVar3 == (wchar_t *)&DAT_00547768) { + return 0; + } + *(ulong *)(pwVar3 + -6) = uVar1; + pwVar3[-2] = L'\0'; + pwVar3[uVar1] = L'\0'; + return 0; +} + + +================================================================== + +### FUNC 00418664 (40 bytes) name=FUN_00418664 + +undefined8 FUN_00418664(undefined8 param_1,undefined8 param_2,long param_3) + +{ + if (param_3 != 0) { + FUN_00418524(); + } + return param_1; +} + + +================================================================== + +### FUNC 0041868c (40 bytes) name=FUN_0041868c + +undefined8 FUN_0041868c(undefined8 param_1,undefined8 param_2,long param_3) + +{ + if (param_3 != 0) { + FUN_00418524(); + } + return param_1; +} + + +================================================================== + +### FUNC 004186b4 (64 bytes) name=FUN_004186b4 + +undefined8 FUN_004186b4(undefined8 param_1,wchar_t *param_2) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + if (sVar1 != 0) { + FUN_00418524(param_1,param_2,sVar1); + } + return param_1; +} + + +================================================================== + +### FUNC 004186f4 (64 bytes) name=FUN_004186f4 + +undefined8 FUN_004186f4(undefined8 param_1,wchar_t *param_2) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + if (sVar1 != 0) { + FUN_00418524(param_1,param_2,sVar1); + } + return param_1; +} + + +================================================================== + +### FUNC 00418734 (40 bytes) name=FUN_00418734 + +undefined8 FUN_00418734(undefined8 param_1,undefined8 param_2,long param_3) + +{ + if (param_3 != 0) { + FUN_00418524(); + } + return param_1; +} + + +================================================================== + +### FUNC 0041875c (256 bytes) name=FUN_0041875c + +undefined8 FUN_0041875c(undefined8 *param_1,ulong param_2,wchar_t param_3) + +{ + ulong uVar1; + wchar_t *__s; + undefined *puVar2; + long lVar3; + + puVar2 = (undefined *)*param_1; + lVar3 = *(long *)(puVar2 + -0x18); + if (0xffffffffffffffeU - lVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::append"); + } + uVar1 = param_2 + lVar3; + if ((*(ulong *)(puVar2 + -0x10) < uVar1) || (0 < *(int *)(puVar2 + -8))) { + FUN_00418208(param_1,uVar1); + puVar2 = (undefined *)*param_1; + lVar3 = *(long *)(puVar2 + -0x18); + __s = (wchar_t *)(puVar2 + lVar3 * 4); + } + else { + __s = (wchar_t *)(puVar2 + lVar3 * 4); + } + if (param_2 == 1) { + *(wchar_t *)(puVar2 + lVar3 * 4) = param_3; + } + else { + wmemset(__s,param_3,param_2); + puVar2 = (undefined *)*param_1; + } + if (puVar2 == &DAT_00547768) { + return 0; + } + *(ulong *)(puVar2 + -0x18) = uVar1; + *(undefined4 *)(puVar2 + -8) = 0; + *(undefined4 *)(puVar2 + uVar1 * 4) = 0; + return 0; +} + + +================================================================== + +### FUNC 0041885c (40 bytes) name=FUN_0041885c + +undefined8 FUN_0041885c(undefined8 param_1,long param_2) + +{ + if (param_2 != 0) { + FUN_0041875c(); + } + return param_1; +} + + +================================================================== + +### FUNC 00418884 (92 bytes) name=FUN_00418884 + +void FUN_00418884(long *param_1,ulong param_2) + +{ + ulong uVar1; + + uVar1 = *(ulong *)(*param_1 + -0x18); + if (0xffffffffffffffe < param_2) { + /* WARNING: Subroutine does not return */ + FUN_0040f39c("basic_string::resize"); + } + if (uVar1 < param_2) { + if (param_2 - uVar1 != 0) { + FUN_0041875c(param_1,param_2 - uVar1); + return; + } + } + else if (param_2 < uVar1) { + FUN_00416540(param_1,param_2,uVar1 - param_2,0); + return; + } + return; +} + + +================================================================== + +### FUNC 004188e0 (8 bytes) name=FUN_004188e0 + +void FUN_004188e0(undefined8 param_1,undefined8 param_2) + +{ + FUN_00418884(param_1,param_2,0); + return; +} + + +================================================================== + +### FUNC 004188e8 (148 bytes) name=FUN_004188e8 + +void FUN_004188e8(undefined8 *param_1,undefined4 param_2) + +{ + ulong uVar1; + undefined *puVar2; + long lVar3; + + puVar2 = (undefined *)*param_1; + lVar3 = *(long *)(puVar2 + -0x18); + uVar1 = lVar3 + 1; + if ((*(ulong *)(puVar2 + -0x10) < uVar1) || (0 < *(int *)(puVar2 + -8))) { + FUN_00418208(param_1,uVar1); + puVar2 = (undefined *)*param_1; + lVar3 = *(long *)(puVar2 + -0x18); + } + *(undefined4 *)(puVar2 + lVar3 * 4) = param_2; + if (puVar2 == &DAT_00547768) { + return; + } + *(ulong *)(puVar2 + -0x18) = uVar1; + *(undefined4 *)(puVar2 + -8) = 0; + *(undefined4 *)(puVar2 + uVar1 * 4) = 0; + return; +} + + +================================================================== + +### FUNC 0041897c (156 bytes) name=FUN_0041897c + +undefined8 * FUN_0041897c(undefined8 *param_1,undefined4 param_2) + +{ + ulong uVar1; + undefined *puVar2; + long lVar3; + + puVar2 = (undefined *)*param_1; + lVar3 = *(long *)(puVar2 + -0x18); + uVar1 = lVar3 + 1; + if ((*(ulong *)(puVar2 + -0x10) < uVar1) || (0 < *(int *)(puVar2 + -8))) { + FUN_00418208(param_1,uVar1); + puVar2 = (undefined *)*param_1; + lVar3 = *(long *)(puVar2 + -0x18); + } + *(undefined4 *)(puVar2 + lVar3 * 4) = param_2; + if (puVar2 == &DAT_00547768) { + return param_1; + } + *(ulong *)(puVar2 + -0x18) = uVar1; + *(undefined4 *)(puVar2 + -8) = 0; + *(undefined4 *)(puVar2 + uVar1 * 4) = 0; + return param_1; +} + + +================================================================== + +### FUNC 00418a18 (228 bytes) name=FUN_00418a18 + +size_t * FUN_00418a18(size_t *param_1,undefined8 param_2) + +{ + char cVar1; + bool bVar2; + size_t *psVar3; + size_t __n; + + if ((int)param_1[2] < 0) { + psVar3 = (size_t *)FUN_004164a8(*param_1,param_1[1],param_2); + __n = *param_1; + if (__n != 0) { + if (__n == 1) { + *(int *)(psVar3 + 3) = (int)param_1[3]; + } + else { + wmemcpy((wchar_t *)(psVar3 + 3),(wchar_t *)(param_1 + 3),__n); + __n = *param_1; + } + } + param_1 = psVar3 + 3; + if (psVar3 != &DAT_00547750) { + *(undefined4 *)(psVar3 + 2) = 0; + *psVar3 = __n; + *(undefined4 *)((long)psVar3 + __n * 4 + 0x18) = 0; + } + } + else { + if (param_1 != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(param_1 + 2) = (int)param_1[2] + 1; + } + else { + psVar3 = param_1 + 2; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(psVar3,0x10); + if (bVar2) { + *(int *)psVar3 = (int)*psVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + param_1 = param_1 + 3; + } + return param_1; +} + + +================================================================== + +### FUNC 00418afc (80 bytes) name=FUN_00418afc + +void FUN_00418afc(undefined8 *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + int iVar4; + + if (param_1 != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar4 = *(int *)(param_1 + 2); + *(int *)(param_1 + 2) = iVar4 + -1; + } + else { + piVar1 = (int *)(param_1 + 2); + do { + iVar4 = *piVar1; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = iVar4 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + if (iVar4 < 1) { + operator_delete(param_1); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00418b4c (4 bytes) name=operator.delete + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_004ff6e0)(); + return; +} + + +================================================================== + +### FUNC 00418b50 (76 bytes) name=FUN_00418b50 + +undefined8 * FUN_00418b50(undefined8 *param_1) + +{ + int *piVar1; + char cVar2; + bool bVar3; + + if (param_1 != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(param_1 + 2) = *(int *)(param_1 + 2) + 1; + } + else { + piVar1 = (int *)(param_1 + 2); + do { + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar1,0x10); + if (bVar3) { + *piVar1 = *piVar1 + 1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + } + } + return param_1 + 3; +} + + +================================================================== + +### FUNC 00418b9c (184 bytes) name=FUN_00418b9c + +size_t * FUN_00418b9c(size_t *param_1,undefined8 param_2,long param_3) + +{ + size_t *psVar1; + size_t __n; + + psVar1 = (size_t *)FUN_004164a8(param_3 + *param_1,param_1[1],param_2); + __n = *param_1; + if (__n != 0) { + if (__n == 1) { + *(int *)(psVar1 + 3) = (int)param_1[3]; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),(wchar_t *)(param_1 + 3),__n); + __n = *param_1; + } + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + __n * 4 + 0x18) = 0; + return psVar1 + 3; + } + return (size_t *)&DAT_00547768; +} + + +================================================================== + +### FUNC 00418c54 (144 bytes) name=FUN_00418c54 + +void FUN_00418c54(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int *piVar3; + long lVar4; + undefined1 auStack_8 [8]; + + lVar4 = *param_2; + if (*(int *)(lVar4 + -8) < 0) { + lVar4 = FUN_00418b9c((undefined8 *)(lVar4 + -0x18),auStack_8,0); + *param_1 = lVar4; + return; + } + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar4 + -8) = *(int *)(lVar4 + -8) + 1; + } + else { + piVar3 = (int *)(lVar4 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + *param_1 = lVar4; + return; +} + + +================================================================== + +### FUNC 00418ce4 (240 bytes) name=FUN_00418ce4 + +long * FUN_00418ce4(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + long lVar6; + undefined1 auStack_8 [8]; + + lVar4 = *param_1; + lVar6 = *param_2; + if (lVar4 != lVar6) { + if (*(int *)(lVar6 + -8) < 0) { + lVar6 = FUN_00418b9c((undefined8 *)(lVar6 + -0x18),auStack_8,0); + lVar4 = *param_1; + } + else if ((undefined8 *)(lVar6 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar6 + -8) = *(int *)(lVar6 + -8) + 1; + } + else { + piVar5 = (int *)(lVar6 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + lVar4 = *param_1; + } + } + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + } + } + *param_1 = lVar6; + } + return param_1; +} + + +================================================================== + +### FUNC 00418dd4 (240 bytes) name=FUN_00418dd4 + +long * FUN_00418dd4(long *param_1,long *param_2) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + long lVar6; + undefined1 auStack_8 [8]; + + lVar4 = *param_1; + lVar6 = *param_2; + if (lVar4 != lVar6) { + if (*(int *)(lVar6 + -8) < 0) { + lVar6 = FUN_00418b9c((undefined8 *)(lVar6 + -0x18),auStack_8,0); + lVar4 = *param_1; + } + else if ((undefined8 *)(lVar6 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar6 + -8) = *(int *)(lVar6 + -8) + 1; + } + else { + piVar5 = (int *)(lVar6 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + lVar4 = *param_1; + } + } + if ((undefined8 *)(lVar4 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined8 *)(lVar4 + -0x18)); + } + } + *param_1 = lVar6; + } + return param_1; +} + + +================================================================== + +### FUNC 00418ec4 (120 bytes) name=FUN_00418ec4 + +undefined8 * FUN_00418ec4(undefined8 *param_1,wchar_t *param_2,long *param_3) + +{ + size_t sVar1; + + sVar1 = wcslen(param_2); + *param_1 = &DAT_00547768; + FUN_00418208(param_1,sVar1 + *(long *)(*param_3 + -0x18)); + if (sVar1 != 0) { + FUN_00418524(param_1,param_2,sVar1); + } + FUN_00418364(param_1,param_3); + return param_1; +} + + +================================================================== + +### FUNC 00418f64 (108 bytes) name=FUN_00418f64 + +undefined8 * FUN_00418f64(undefined8 *param_1,undefined4 param_2,long *param_3) + +{ + *param_1 = &DAT_00547768; + FUN_00418208(param_1,*(long *)(*param_3 + -0x18) + 1); + FUN_0041875c(param_1,1,param_2); + /* catch() { ... } // from try @ 00419918 with catch @ 00418fb0 */ + FUN_00418364(param_1,param_3); + return param_1; +} + + +================================================================== + +### FUNC 00418ff8 (152 bytes) name=FUN_00418ff8 + +long * FUN_00418ff8(long *param_1,long *param_2,undefined8 param_3) + +{ + char cVar1; + bool bVar2; + long lVar3; + int *piVar4; + undefined1 auStack_8 [8]; + + lVar3 = *param_2; + if (*(int *)(lVar3 + -8) < 0) { + lVar3 = FUN_00418b9c((undefined8 *)(lVar3 + -0x18),auStack_8,0); + } + else if ((undefined8 *)(lVar3 + -0x18) != &DAT_00547750) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + *(int *)(lVar3 + -8) = *(int *)(lVar3 + -8) + 1; + } + else { + piVar4 = (int *)(lVar3 + -8); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar2) { + *piVar4 = *piVar4 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + } + *param_1 = lVar3; + FUN_00418364(param_1,param_3); + return param_1; +} + + +================================================================== + +### FUNC 004190b8 (216 bytes) name=FUN_004190b8 + +void FUN_004190b8(undefined8 *param_1,wchar_t *param_2,wchar_t *param_3,undefined8 param_4) + +{ + size_t *psVar1; + size_t __n; + + if (param_2 == param_3) { + *param_1 = &DAT_00547768; + return; + } + if ((param_2 == (wchar_t *)0x0) && (param_3 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_3 - (long)param_2 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0,param_4); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_2; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_2,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + ((long)param_3 - (long)param_2) + 0x18) = 0; + } + *param_1 = psVar1 + 3; + return; +} + + +================================================================== + +### FUNC 00419190 (216 bytes) name=FUN_00419190 + +void FUN_00419190(undefined8 *param_1,wchar_t *param_2,wchar_t *param_3,undefined8 param_4) + +{ + size_t *psVar1; + size_t __n; + + if (param_2 == param_3) { + *param_1 = &DAT_00547768; + return; + } + if ((param_2 == (wchar_t *)0x0) && (param_3 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_3 - (long)param_2 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0,param_4); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_2; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_2,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + ((long)param_3 - (long)param_2) + 0x18) = 0; + } + *param_1 = psVar1 + 3; + return; +} + + +================================================================== + +### FUNC 00419268 (196 bytes) name=FUN_00419268 + +void FUN_00419268(undefined8 *param_1,wchar_t *param_2,wchar_t *param_3,undefined8 param_4) + +{ + size_t *psVar1; + size_t __n; + + if (param_2 != param_3) { + __n = (long)param_3 - (long)param_2 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0,param_4); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_2; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_2,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + ((long)param_3 - (long)param_2) + 0x18) = 0; + } + *param_1 = psVar1 + 3; + return; + } + *param_1 = &DAT_00547768; + return; +} + + +================================================================== + +### FUNC 0041932c (188 bytes) name=FUN_0041932c + +wchar_t * FUN_0041932c(wchar_t *param_1,wchar_t *param_2) + +{ + size_t *psVar1; + size_t __n; + + if (param_1 != param_2) { + __n = (long)param_2 - (long)param_1 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_1; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_1,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + ((long)param_2 - (long)param_1) + 0x18) = 0; + } + return (wchar_t *)(psVar1 + 3); + } + return (wchar_t *)&DAT_00547768; +} + + +================================================================== + +### FUNC 004193e8 (212 bytes) name=FUN_004193e8 + +wchar_t * FUN_004193e8(wchar_t *param_1,wchar_t *param_2) + +{ + size_t *psVar1; + size_t __n; + + if (param_1 == param_2) { + return (wchar_t *)&DAT_00547768; + } + if ((param_1 == (wchar_t *)0x0) && (param_2 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_2 - (long)param_1 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_1; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_1,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + ((long)param_2 - (long)param_1) + 0x18) = 0; + } + return (wchar_t *)(psVar1 + 3); +} + + +================================================================== + +### FUNC 004194bc (212 bytes) name=FUN_004194bc + +wchar_t * FUN_004194bc(wchar_t *param_1,wchar_t *param_2) + +{ + size_t *psVar1; + size_t __n; + + if (param_1 == param_2) { + return (wchar_t *)&DAT_00547768; + } + if ((param_1 == (wchar_t *)0x0) && (param_2 != (wchar_t *)0x0)) { + /* WARNING: Subroutine does not return */ + FUN_0040f180("basic_string::_S_construct null not valid"); + } + __n = (long)param_2 - (long)param_1 >> 2; + psVar1 = (size_t *)FUN_004164a8(__n,0); + if (__n == 1) { + *(wchar_t *)(psVar1 + 3) = *param_1; + } + else { + wmemcpy((wchar_t *)(psVar1 + 3),param_1,__n); + } + if (psVar1 != &DAT_00547750) { + *(undefined4 *)(psVar1 + 2) = 0; + *psVar1 = __n; + *(undefined4 *)((long)psVar1 + ((long)param_2 - (long)param_1) + 0x18) = 0; + } + return (wchar_t *)(psVar1 + 3); +} + + +================================================================== + +### FUNC 00419590 (20 bytes) name=FUN_00419590 + +bool FUN_00419590(long *param_1,long *param_2) + +{ + return *param_1 == *param_2; +} + + +================================================================== + +### FUNC 004195a4 (20 bytes) name=FUN_004195a4 + +bool FUN_004195a4(long *param_1,long *param_2) + +{ + return *param_1 == *param_2; +} + + +================================================================== + +### FUNC 004195b8 (492 bytes) name=FUN_004195b8 + +long * FUN_004195b8(long *param_1,long param_2) + +{ + long lVar1; + bool bVar2; + uint uVar3; + byte *pbVar4; + long lVar5; + byte *pbVar6; + long *plVar7; + char local_8 [8]; + + if (param_2 == 1) { + plVar7 = (long *)FUN_003d5548(); + return plVar7; + } + param_1[1] = 0; + FUN_003d4724(local_8,param_1,1); + if ((param_2 < 1) || (local_8[0] == '\0')) { + return param_1; + } + plVar7 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((byte *)plVar7[2] < (byte *)plVar7[3]) { + uVar3 = (uint)*(byte *)plVar7[2]; + } + else { + uVar3 = (**(code **)(*plVar7 + 0x48))(plVar7); + } + lVar5 = param_1[1]; + bVar2 = false; + while( true ) { + while (param_2 <= lVar5) { + if ((uVar3 == 0xffffffff) || (param_2 != 0x7fffffffffffffff)) goto LAB_004196f0; + param_1[1] = -0x8000000000000000; + bVar2 = true; + lVar5 = -0x8000000000000000; + } + if (uVar3 == 0xffffffff) break; + pbVar6 = (byte *)plVar7[3]; + pbVar4 = (byte *)plVar7[2]; + lVar1 = param_2 - lVar5; + if ((long)pbVar6 - (long)pbVar4 < param_2 - lVar5) { + lVar1 = (long)pbVar6 - (long)pbVar4; + } + if (lVar1 < 2) { + param_1[1] = lVar5 + 1; + if (pbVar6 <= pbVar4) { + uVar3 = (**(code **)(*plVar7 + 0x50))(plVar7); + if (uVar3 != 0xffffffff) { + pbVar4 = (byte *)plVar7[2]; + pbVar6 = (byte *)plVar7[3]; + goto LAB_00419750; + } + goto LAB_00419774; + } + pbVar4 = pbVar4 + 1; + plVar7[2] = (long)pbVar4; +LAB_00419750: + if (pbVar6 <= pbVar4) goto LAB_00419764; + uVar3 = (uint)*pbVar4; + lVar5 = param_1[1]; + } + else { + plVar7[2] = (long)(pbVar4 + lVar1); + lVar5 = lVar5 + lVar1; + param_1[1] = lVar5; + if (pbVar4 + lVar1 < pbVar6) { + uVar3 = (uint)pbVar4[lVar1]; + } + else { +LAB_00419764: + uVar3 = (**(code **)(*plVar7 + 0x48))(plVar7); +LAB_00419774: + lVar5 = param_1[1]; + } + } + } +LAB_004196f0: + if (bVar2) { + param_1[1] = 0x7fffffffffffffff; + } + if (uVar3 == 0xffffffff) { + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar5,*(uint *)(lVar5 + 0x20) | 2); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 00419824 (496 bytes) name=FUN_00419824 + +long * FUN_00419824(long *param_1,long param_2) + +{ + long lVar1; + bool bVar2; + int iVar3; + long lVar4; + long lVar5; + int *piVar6; + int *piVar7; + long *plVar8; + char local_8 [8]; + + if (param_2 == 1) { + plVar8 = (long *)FUN_003d8380(); + return plVar8; + } + param_1[1] = 0; + FUN_003d7624(local_8,param_1,1); + if ((param_2 < 1) || (local_8[0] == '\0')) { + return param_1; + } + plVar8 = *(long **)((long)param_1 + *(long *)(*param_1 + -0x18) + 0xe8); + if ((int *)plVar8[2] < (int *)plVar8[3]) { + iVar3 = *(int *)plVar8[2]; + } + else { + iVar3 = (**(code **)(*plVar8 + 0x48))(plVar8); + } + lVar5 = param_1[1]; + bVar2 = false; + while( true ) { + while (param_2 <= lVar5) { + if ((iVar3 == -1) || (param_2 != 0x7fffffffffffffff)) goto LAB_00419960; + param_1[1] = -0x8000000000000000; + /* try { // try from 00419918 to 0051991b has its CatchHandler @ 00418fb0 */ + bVar2 = true; + lVar5 = -0x8000000000000000; + } + if (iVar3 == -1) break; + piVar7 = (int *)plVar8[3]; + piVar6 = (int *)plVar8[2]; + lVar4 = (long)piVar7 - (long)piVar6 >> 2; + /* try { // try from 004198c8 to 005198cb has its CatchHandler @ 004198f8 */ + lVar1 = param_2 - lVar5; + if (lVar4 < param_2 - lVar5) { + lVar1 = lVar4; + } + if (lVar1 < 2) { + param_1[1] = lVar5 + 1; + if (piVar6 < piVar7) { + iVar3 = *piVar6; + plVar8[2] = (long)(piVar6 + 1); + } + else { + iVar3 = (**(code **)(*plVar8 + 0x50))(plVar8); + } + if (iVar3 == -1) goto LAB_004199f4; + if ((int *)plVar8[3] <= (int *)plVar8[2]) goto LAB_004199e4; + iVar3 = *(int *)plVar8[2]; + lVar5 = param_1[1]; + } + else { + plVar8[2] = (long)(piVar6 + lVar1); + lVar5 = lVar5 + lVar1; + param_1[1] = lVar5; + if (piVar6 + lVar1 < piVar7) { + iVar3 = piVar6[lVar1]; + /* catch() { ... } // from try @ 004198c8 with catch @ 004198f8 */ + } + else { +LAB_004199e4: + iVar3 = (**(code **)(*plVar8 + 0x48))(plVar8); +LAB_004199f4: + lVar5 = param_1[1]; + } + } + } +LAB_00419960: + if (bVar2) { + param_1[1] = 0x7fffffffffffffff; + } + if (iVar3 == -1) { + lVar5 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar5,*(uint *)(lVar5 + 0x20) | 2); + return param_1; + } + return param_1; +} + + +================================================================== + +### FUNC 00419a94 (12 bytes) name=what + +/* std::bad_alloc::what() const */ + +char * std::bad_alloc::what(void) + +{ + return "std::bad_alloc"; +} + + +================================================================== + +### FUNC 00419aa0 (20 bytes) name=~bad_alloc + +/* std::bad_alloc::~bad_alloc() */ + +void __thiscall std::bad_alloc::~bad_alloc(bad_alloc *this) + +{ + *(undefined **)this = PTR_vtable_00501dd0 + 0x10; + exception::~exception((exception *)this); + return; +} + + +================================================================== + +### FUNC 00419ab4 (36 bytes) name=~bad_alloc + +/* std::bad_alloc::~bad_alloc() */ + +void __thiscall std::bad_alloc::~bad_alloc(bad_alloc *this) + +{ + ~bad_alloc(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00419ad8 (12 bytes) name=what + +/* std::bad_cast::what() const */ + +char * std::bad_cast::what(void) + +{ + return "std::bad_cast"; +} + + +================================================================== + +### FUNC 00419ae4 (20 bytes) name=~bad_cast + +/* std::bad_cast::~bad_cast() */ + +void __thiscall std::bad_cast::~bad_cast(bad_cast *this) + +{ + *(undefined **)this = PTR_vtable_005018d8 + 0x10; + exception::~exception((exception *)this); + return; +} + + +================================================================== + +### FUNC 00419af8 (36 bytes) name=~bad_cast + +/* std::bad_cast::~bad_cast() */ + +void __thiscall std::bad_cast::~bad_cast(bad_cast *this) + +{ + ~bad_cast(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00419b1c (12 bytes) name=what + +/* std::bad_typeid::what() const */ + +char * std::bad_typeid::what(void) + +{ + return "std::bad_typeid"; +} + + +================================================================== + +### FUNC 00419b28 (20 bytes) name=~bad_typeid + +/* std::bad_typeid::~bad_typeid() */ + +void __thiscall std::bad_typeid::~bad_typeid(bad_typeid *this) + +{ + *(undefined **)this = PTR_vtable_00501a98 + 0x10; + exception::~exception((exception *)this); + return; +} + + +================================================================== + +### FUNC 00419b3c (36 bytes) name=~bad_typeid + +/* std::bad_typeid::~bad_typeid() */ + +void __thiscall std::bad_typeid::~bad_typeid(bad_typeid *this) + +{ + ~bad_typeid(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 00419b60 (304 bytes) name=__dynamic_cast + +long __dynamic_cast(long *param_1,undefined8 param_2,long *param_3,long param_4) + +{ + uint uVar1; + long *plVar2; + long local_18; + uint local_10; + uint local_c; + uint local_8; + undefined4 local_4; + + plVar2 = *(long **)(*param_1 + -8); + local_18 = 0; + local_10 = 0; + local_c = 0; + local_8 = 0; + local_4 = 0x10; + (**(code **)(*plVar2 + 0x38)) + (plVar2,param_4,6,param_3,(long)param_1 + *(long *)(*param_1 + -0x10),param_2,param_1, + &local_18); + if (local_18 != 0) { + if ((local_8 & 6) == 6) { + return local_18; + } + if ((local_c & local_10 & 6) == 6) { + return local_18; + } + if (((local_c & 5) != 4) && (local_8 == 0)) { + if (param_4 < 0) { + if ((param_4 != -2) && + (uVar1 = (**(code **)(*param_3 + 0x40))(param_3,param_4,local_18,param_2,param_1), + (uVar1 & 6) == 6)) { + return local_18; + } + } + else if (param_1 == (long *)(local_18 + param_4)) { + /* catch() { ... } // from try @ 0041a5e8 with catch @ 00419c80 */ + return local_18; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 00419c90 (52 bytes) name=__cxa_bad_cast + +void __cxa_bad_cast(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_005018d8 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501d68,PTR__bad_cast_00501b20); +} + + +================================================================== + +### FUNC 00419cc4 (52 bytes) name=__cxa_bad_typeid + +void __cxa_bad_typeid(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_00501a98 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501c60,PTR__bad_typeid_00501af0); +} + + +================================================================== + +### FUNC 00419cf8 (52 bytes) name=__cxa_throw_bad_array_new_length + +void __cxa_throw_bad_array_new_length(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_00501c30 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501b00,PTR__bad_array_new_length_00501de0); +} + + +================================================================== + +### FUNC 00419d2c (52 bytes) name=__cxa_throw_bad_array_length + +void __cxa_throw_bad_array_length(void) + +{ + long *plVar1; + + plVar1 = (long *)__cxa_allocate_exception(8); + *plVar1 = (long)(PTR_vtable_005019f0 + 0x10); + /* WARNING: Subroutine does not return */ + __cxa_throw(plVar1,PTR_typeinfo_00501f80,PTR__bad_array_length_00501ae8); +} + + +================================================================== + +### FUNC 00419d60 (68 bytes) name=FUN_00419d60 + +void FUN_00419d60(long *param_1) + +{ + if ((param_1 != (long *)0x0) && (__cxa_begin_catch(), *param_1 + 0xb8b1aabcbcd4d500U < 2)) { + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate((_func_void *)param_1[-7]); + } + /* WARNING: Subroutine does not return */ + std::terminate(); +} + + +================================================================== + +### FUNC 00419da4 (4 bytes) name=_M_safe_bool_dummy + +/* std::__exception_ptr::exception_ptr::_M_safe_bool_dummy() */ + +void std::__exception_ptr::exception_ptr::_M_safe_bool_dummy(void) + +{ + return; +} + + +================================================================== + +### FUNC 00419da8 (108 bytes) name=FUN_00419da8 + +void FUN_00419da8(uint param_1,long param_2) + +{ + int iVar1; + char cVar2; + bool bVar3; + int *piVar4; + long lVar5; + + lVar5 = *(long *)(param_2 + -0x50); + if (1 < param_1) { + /* WARNING: Subroutine does not return */ + __cxxabiv1::__terminate(*(_func_void **)(lVar5 + -0x58)); + } + __cxa_free_dependent_exception(param_2 + -0x50); + piVar4 = (int *)(lVar5 + -0x80); + do { + iVar1 = *piVar4; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar4,0x10); + if (bVar3) { + *piVar4 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 + -1 == 0) { + if (*(code **)(lVar5 + -0x68) != (code *)0x0) { + (**(code **)(lVar5 + -0x68))(lVar5); + } + __cxa_free_exception(lVar5); + return; + } + return; +} + + +================================================================== + +### FUNC 00419e14 (8 bytes) name=exception_ptr + +/* std::__exception_ptr::exception_ptr::exception_ptr() */ + +void __thiscall std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00419e1c (8 bytes) name=exception_ptr + +/* std::__exception_ptr::exception_ptr::exception_ptr(void + (std::__exception_ptr::exception_ptr::*)()) */ + +void __thiscall +std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this,_func_void *param_1) + +{ + *(undefined8 *)this = 0; + return; +} + + +================================================================== + +### FUNC 00419e24 (32 bytes) name=_M_addref + +/* std::__exception_ptr::exception_ptr::_M_addref() */ + +void __thiscall std::__exception_ptr::exception_ptr::_M_addref(exception_ptr *this) + +{ + char cVar1; + bool bVar2; + int *piVar3; + + if (*(long *)this != 0) { + piVar3 = (int *)(*(long *)this + -0x80); + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar3,0x10); + if (bVar2) { + *piVar3 = *piVar3 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + return; +} + + +================================================================== + +### FUNC 00419e44 (8 bytes) name=exception_ptr + +/* std::__exception_ptr::exception_ptr::exception_ptr(void*) */ + +void __thiscall +std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this,void *param_1) + +{ + *(void **)this = param_1; + _M_addref(this); + return; +} + + +================================================================== + +### FUNC 00419e4c (12 bytes) name=exception_ptr + +/* std::__exception_ptr::exception_ptr::exception_ptr(std::__exception_ptr::exception_ptr const&) */ + +void __thiscall +std::__exception_ptr::exception_ptr::exception_ptr(exception_ptr *this,exception_ptr *param_1) + +{ + *(undefined8 *)this = *(undefined8 *)param_1; + _M_addref(this); + return; +} + + +================================================================== + +### FUNC 00419e58 (88 bytes) name=_M_release + +/* std::__exception_ptr::exception_ptr::_M_release() */ + +void __thiscall std::__exception_ptr::exception_ptr::_M_release(exception_ptr *this) + +{ + int iVar1; + char cVar2; + bool bVar3; + long lVar4; + int *piVar5; + + lVar4 = *(long *)this; + if (lVar4 != 0) { + piVar5 = (int *)(lVar4 + -0x80); + do { + iVar1 = *piVar5; + cVar2 = '\x01'; + bVar3 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar3) { + *piVar5 = iVar1 + -1; + cVar2 = ExclusiveMonitorsStatus(); + } + } while (cVar2 != '\0'); + if (iVar1 + -1 == 0) { + if (*(code **)(lVar4 + -0x68) != (code *)0x0) { + (**(code **)(lVar4 + -0x68))(*(undefined8 *)this); + } + __cxa_free_exception(*(undefined8 *)this); + *(undefined8 *)this = 0; + } + } + return; +} + + +================================================================== + +### FUNC 00419eb0 (4 bytes) name=~exception_ptr + +/* std::__exception_ptr::exception_ptr::~exception_ptr() */ + +void __thiscall std::__exception_ptr::exception_ptr::~exception_ptr(exception_ptr *this) + +{ + (*(code *)PTR__M_release_00500cf8)(); + return; +} + + +================================================================== + +### FUNC 00419eb4 (8 bytes) name=_M_get + +/* std::__exception_ptr::exception_ptr::_M_get() const */ + +undefined8 __thiscall std::__exception_ptr::exception_ptr::_M_get(exception_ptr *this) + +{ + return *(undefined8 *)this; +} + + +================================================================== + +### FUNC 00419ebc (20 bytes) name=swap + +/* std::__exception_ptr::exception_ptr::swap(std::__exception_ptr::exception_ptr&) */ + +void __thiscall +std::__exception_ptr::exception_ptr::swap(exception_ptr *this,exception_ptr *param_1) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)this; + *(undefined8 *)this = *(undefined8 *)param_1; + *(undefined8 *)param_1 = uVar1; + return; +} + + +================================================================== + +### FUNC 00419ed0 (64 bytes) name=operator= + +/* std::__exception_ptr::exception_ptr::TEMPNAMEPLACEHOLDERVALUE(std::__exception_ptr::exception_ptr + const&) */ + +exception_ptr * __thiscall +std::__exception_ptr::exception_ptr::operator=(exception_ptr *this,exception_ptr *param_1) + +{ + exception_ptr aeStack_8 [8]; + + exception_ptr(aeStack_8,param_1); + swap(aeStack_8,this); + ~exception_ptr(aeStack_8); + return this; +} + + +================================================================== + +### FUNC 00419f10 (16 bytes) name=operator! + +/* std::__exception_ptr::exception_ptr::TEMPNAMEPLACEHOLDERVALUE() const */ + +bool __thiscall std::__exception_ptr::exception_ptr::operator!(exception_ptr *this) + +{ + return *(long *)this == 0; +} + + +================================================================== + +### FUNC 00419f20 (36 bytes) name=operator.cast.to.function.pointer + +/* std::__exception_ptr::exception_ptr::operator void (std::__exception_ptr::exception_ptr::*)()() + const */ + +_func_void * __thiscall +std::__exception_ptr::exception_ptr::operator_cast_to_function_pointer(exception_ptr *this) + +{ + if (*(long *)this != 0) { + return (_func_void *)PTR__M_safe_bool_dummy_00501d38; + } + return (_func_void *)0x0; +} + + +================================================================== + +### FUNC 00419f44 (12 bytes) name=__cxa_exception_type + +/* std::__exception_ptr::exception_ptr::__cxa_exception_type() const */ + +undefined8 __thiscall std::__exception_ptr::exception_ptr::__cxa_exception_type(exception_ptr *this) + +{ + return *(undefined8 *)(*(long *)this + -0x70); +} + + +================================================================== + +### FUNC 00419f50 (20 bytes) name=operator== + +/* std::__exception_ptr::TEMPNAMEPLACEHOLDERVALUE(std::__exception_ptr::exception_ptr const&, + std::__exception_ptr::exception_ptr const&) */ + +bool std::__exception_ptr::operator==(exception_ptr *param_1,exception_ptr *param_2) + +{ + return *(long *)param_1 == *(long *)param_2; +} + + +================================================================== + +### FUNC 00419f64 (28 bytes) name=operator!= + +/* std::__exception_ptr::TEMPNAMEPLACEHOLDERVALUE(std::__exception_ptr::exception_ptr const&, + std::__exception_ptr::exception_ptr const&) */ + +byte std::__exception_ptr::operator!=(exception_ptr *param_1,exception_ptr *param_2) + +{ + byte bVar1; + + bVar1 = operator==(param_1,param_2); + return bVar1 ^ 1; +} + + +================================================================== + +### FUNC 00419f80 (124 bytes) name=current_exception + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::current_exception() */ + +void std::current_exception(void) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + exception_ptr *in_x8; + + puVar1 = (undefined8 *)__cxa_get_globals(); + puVar1 = (undefined8 *)*puVar1; + if ((puVar1 != (undefined8 *)0x0) && (puVar1[10] + 0xb8b1aabcbcd4d500 < 2)) { + puVar2 = puVar1 + 0xe; + if ((puVar1[10] & 1) != 0) { + puVar2 = (undefined8 *)*puVar1; + } + __exception_ptr::exception_ptr::exception_ptr(in_x8,puVar2); + return; + } + __exception_ptr::exception_ptr::exception_ptr(in_x8); + return; +} + + +================================================================== + +### FUNC 00419ffc (124 bytes) name=rethrow_exception + +/* std::rethrow_exception(std::__exception_ptr::exception_ptr) */ + +void std::rethrow_exception(exception_ptr *param_1) + +{ + char cVar1; + bool bVar2; + long lVar3; + long *plVar4; + int *piVar5; + + lVar3 = __exception_ptr::exception_ptr::_M_get(param_1); + plVar4 = (long *)__cxa_allocate_dependent_exception(); + piVar5 = (int *)(lVar3 + -0x80); + *plVar4 = lVar3; + do { + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = *piVar5 + 1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + lVar3 = get_unexpected(); + plVar4[2] = lVar3; + lVar3 = get_terminate(); + plVar4[3] = lVar3; + plVar4[10] = 0x474e5543432b2b01; + plVar4[0xb] = (long)FUN_00419da8; + _Unwind_RaiseException(plVar4 + 10); + __cxa_begin_catch(plVar4 + 10); + /* WARNING: Subroutine does not return */ + terminate(); +} + + +================================================================== + +### FUNC 0041a078 (28 bytes) name=set_new_handler + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::set_new_handler(void (*)()) */ + +_func_void * std::set_new_handler(_func_void *param_1) + +{ + char cVar1; + bool bVar2; + _func_void *p_Var3; + + do { + p_Var3 = DAT_00547770; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(0x547770,0x10); + if (bVar2) { + cVar1 = ExclusiveMonitorsStatus(); + DAT_00547770 = param_1; + } + } while (cVar1 != '\0'); + return p_Var3; +} + + +================================================================== + +### FUNC 0041a094 (16 bytes) name=get_new_handler + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* std::get_new_handler() */ + +undefined8 std::get_new_handler(void) + +{ + return DAT_00547770; +} + + +================================================================== + +### FUNC 0041a0a4 (384 bytes) name=__verbose_terminate_handler + +/* WARNING: Removing unreachable block (ram,0x0041a194) */ +/* WARNING: Removing unreachable block (ram,0x0041a228) */ +/* WARNING: Removing unreachable block (ram,0x0041a1a8) */ +/* __gnu_cxx::__verbose_terminate_handler() */ + +void __gnu_cxx::__verbose_terminate_handler(void) + +{ + FILE *__s; + long lVar1; + char *pcVar2; + char *__s_00; + size_t __n; + + if (DAT_00547778 == '\0') { + DAT_00547778 = '\x01'; + lVar1 = __cxa_current_exception_type(); + if (lVar1 != 0) { + pcVar2 = *(char **)(lVar1 + 8); + if (*pcVar2 == '*') { + pcVar2 = pcVar2 + 1; + } + __s_00 = (char *)__cxa_demangle(pcVar2,0,0); + __s = (FILE *)(PTR___sF_00501a80 + 0x130); + fwrite("terminate called after throwing an instance of \'",1,0x30,__s); + fputs(pcVar2,__s); + do { + fwrite(&DAT_0047ae60,1,2,(FILE *)(PTR___sF_00501a80 + 0x130)); + __cxa_rethrow(); + fputs(__s_00,__s); + } while( true ); + } + pcVar2 = "terminate called without an active exception\n"; + __n = 0x2d; + } + else { + __n = 0x1d; + pcVar2 = "terminate called recursively\n"; + } + fwrite(pcVar2,1,__n,(FILE *)(PTR___sF_00501a80 + 0x130)); + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### FUNC 0041a234 (260 bytes) name=__convert_to_v + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* void std::__convert_to_v(char const*, float&, std::_Ios_Iostate&, int* const&) */ + +void std::__convert_to_v(char *param_1,float *param_2,_Ios_Iostate *param_3,int **param_4) + +{ + char *__s; + size_t sVar1; + char *__locale; + float fVar2; + float fVar3; + char *local_8; + + __s = setlocale(6,(char *)0x0); + if (__s == (char *)0x0) { + __locale = (char *)0x0; + } + else { + sVar1 = strlen(__s); + __locale = operator_new__(sVar1 + 1); + memcpy(__locale,__s,sVar1 + 1); + setlocale(6,"C"); + } + fVar2 = strtof(param_1,&local_8); + *param_2 = fVar2; + if ((local_8 == param_1) || (*local_8 != '\0')) { + *param_2 = 0.0; + *(undefined4 *)param_3 = 4; + } + else if ((DAT_0041a348 < fVar2) || (fVar2 < DAT_0041a34c)) { + fVar3 = DAT_0041a348; + if (fVar2 <= 0.0) { + fVar3 = DAT_0041a34c; + } + *param_2 = fVar3; + *(undefined4 *)param_3 = 4; + } + setlocale(6,__locale); + if (__locale != (char *)0x0) { + operator_delete__(__locale); + } + return; +} + + +================================================================== + +### FUNC 0041a350 (260 bytes) name=__convert_to_v + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* void std::__convert_to_v(char const*, double&, std::_Ios_Iostate&, int* const&) */ + +void std::__convert_to_v(char *param_1,double *param_2,_Ios_Iostate *param_3,int **param_4) + +{ + char *__s; + size_t sVar1; + char *__locale; + double dVar2; + double dVar3; + char *local_8; + + __s = setlocale(6,(char *)0x0); + if (__s == (char *)0x0) { + __locale = (char *)0x0; + } + else { + sVar1 = strlen(__s); + __locale = operator_new__(sVar1 + 1); + memcpy(__locale,__s,sVar1 + 1); + setlocale(6,"C"); + } + dVar2 = strtod(param_1,&local_8); + *param_2 = dVar2; + if ((local_8 == param_1) || (*local_8 != '\0')) { + *param_2 = 0.0; + *(undefined4 *)param_3 = 4; + } + else if ((DAT_0041a468 < dVar2) || (dVar2 < DAT_0041a470)) { + dVar3 = DAT_0041a468; + if (dVar2 <= 0.0) { + dVar3 = DAT_0041a470; + } + *param_2 = dVar3; + *(undefined4 *)param_3 = 4; + } + setlocale(6,__locale); + if (__locale != (char *)0x0) { + operator_delete__(__locale); + } + return; +} + + +================================================================== + +### FUNC 0041a480 (308 bytes) name=__convert_to_v + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ +/* void std::__convert_to_v(char const*, long double&, std::_Ios_Iostate&, int* const&) + */ + +void std::__convert_to_v + (char *param_1,longdouble *param_2,_Ios_Iostate *param_3,int **param_4) + +{ + longdouble lVar1; + int iVar2; + char *__s; + size_t sVar3; + char *__locale; + double dVar4; + longdouble lVar5; + longdouble extraout_var; + longdouble lVar6; + char *local_8; + + __s = setlocale(6,(char *)0x0); + if (__s == (char *)0x0) { + __locale = (char *)0x0; + } + else { + sVar3 = strlen(__s); + __locale = operator_new__(sVar3 + 1); + memcpy(__locale,__s,sVar3 + 1); + setlocale(6,"C"); + } + dVar4 = strtold(param_1,&local_8); + param_2[1] = extraout_var; + *param_2 = (longdouble)dVar4; + lVar1 = _DAT_0041a5f0; + lVar6 = _UNK_0041a5d8; + lVar5 = _DAT_0041a5d0; + if ((local_8 == param_1) || (*local_8 != '\0')) { + param_2[1] = _UNK_0041a5f8; + *param_2 = lVar1; + *(undefined4 *)param_3 = 4; + } + else { + iVar2 = __getf2(); + if (iVar2 < 1) { + iVar2 = __lttf2(dVar4,_DAT_0041a5e0); + if (-1 < iVar2) goto LAB_0041a518; + } + iVar2 = __getf2(dVar4,_DAT_0041a5f0); + if (iVar2 < 1) { + lVar5 = _DAT_0041a5e0; + lVar6 = _DAT_0041a5e8; + } + param_2[1] = lVar6; + *param_2 = lVar5; + /* try { // try from 0041a598 to 0051a59b has its CatchHandler @ 0041a5c8 */ + *(undefined4 *)param_3 = 4; + } +LAB_0041a518: + setlocale(6,__locale); + if (__locale != (char *)0x0) { + operator_delete__(__locale); + } + return; +} + + +================================================================== + +### FUNC 0041a600 (52 bytes) name=FUN_0041a600 + +void FUN_0041a600(undefined8 *param_1,char *param_2) + +{ + int iVar1; + + *param_1 = 0; + iVar1 = strcmp(param_2,"C"); + if (iVar1 == 0) { + return; + } + /* WARNING: Subroutine does not return */ + FUN_0040f658("locale::facet::_S_create_c_locale name not valid"); +} + + +================================================================== + +### FUNC 0041a634 (8 bytes) name=FUN_0041a634 + +void FUN_0041a634(undefined8 *param_1) + +{ + *param_1 = 0; + return; +} + + +================================================================== + +### FUNC 0041a63c (8 bytes) name=FUN_0041a63c + +undefined8 FUN_0041a63c(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0041a644 (8 bytes) name=FUN_0041a644 + +undefined8 FUN_0041a644(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0041a64c (16 bytes) name=FUN_0041a64c + +undefined8 +FUN_0041a64c(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,undefined8 param_6,undefined8 param_7,undefined8 *param_8) + +{ + *param_5 = param_3; + *param_8 = param_6; + return 3; +} + + +================================================================== + +### FUNC 0041a65c (12 bytes) name=FUN_0041a65c + +undefined8 +FUN_0041a65c(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5) + +{ + *param_5 = param_3; + return 3; +} + + +================================================================== + +### FUNC 0041a668 (16 bytes) name=FUN_0041a668 + +undefined8 +FUN_0041a668(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5,undefined8 param_6,undefined8 param_7,undefined8 *param_8) + +{ + *param_5 = param_3; + *param_8 = param_6; + return 3; +} + + +================================================================== + +### FUNC 0041a678 (8 bytes) name=FUN_0041a678 + +undefined8 FUN_0041a678(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 0041a680 (8 bytes) name=FUN_0041a680 + +undefined8 FUN_0041a680(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 0041a688 (16 bytes) name=FUN_0041a688 + +ulong FUN_0041a688(undefined8 param_1,undefined8 param_2,long param_3,long param_4,ulong param_5) + +{ + ulong uVar1; + + uVar1 = param_4 - param_3; + if (param_5 < (ulong)(param_4 - param_3)) { + uVar1 = param_5; + } + return uVar1; +} + + +================================================================== + +### FUNC 0041a698 (8 bytes) name=FUN_0041a698 + +undefined8 FUN_0041a698(void) + +{ + return 1; +} + + +================================================================== + +### FUNC 0041a6a0 (12 bytes) name=FUN_0041a6a0 + +undefined8 +FUN_0041a6a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 *param_5) + +{ + *param_5 = param_3; + return 3; +} + + +================================================================== + +### FUNC 0041a6ac (8 bytes) name=FUN_0041a6ac + +undefined8 FUN_0041a6ac(void) + +{ + return 0; +} + + +================================================================== + +### FUNC 0041a6b4 (64 bytes) name=FUN_0041a6b4 + +void FUN_0041a6b4(long *param_1) + +{ + *param_1 = (long)&DAT_004f8c60; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501c38 + 0x10); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 0041a718 (64 bytes) name=FUN_0041a718 + +void FUN_0041a718(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fe7f0; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501ce8 + 0x10); + FUN_003ecdfc(param_1); + return; +} + + +================================================================== + +### FUNC 0041a77c (72 bytes) name=FUN_0041a77c + +void FUN_0041a77c(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fe7f0; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501ce8 + 0x10); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041a7e8 (72 bytes) name=FUN_0041a7e8 + +void FUN_0041a7e8(long *param_1) + +{ + *param_1 = (long)&DAT_004f8c60; + FUN_0041a634(param_1 + 2); + *param_1 = (long)(PTR_DAT_00501c38 + 0x10); + FUN_003ecdfc(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041a854 (60 bytes) name=FUN_0041a854 + +void FUN_0041a854(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &DAT_004f8c60; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 0041a8b4 (72 bytes) name=FUN_0041a8b4 + +void FUN_0041a8b4(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + undefined8 local_8; + + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &DAT_004f8c60; + local_8 = param_2; + uVar1 = FUN_0041a63c(&local_8); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 0041a8fc (60 bytes) name=FUN_0041a8fc + +void FUN_0041a8fc(undefined8 *param_1,long param_2) + +{ + undefined8 uVar1; + + *(uint *)(param_1 + 1) = (uint)(param_2 != 0); + *param_1 = &PTR_FUN_004fe7f0; + uVar1 = FUN_003ed450(); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 0041a95c (72 bytes) name=FUN_0041a95c + +void FUN_0041a95c(undefined8 *param_1,undefined8 param_2,long param_3) + +{ + undefined8 uVar1; + undefined8 local_8; + + /* catch() { ... } // from try @ 0041b0d4 with catch @ 0041a960 */ + *(uint *)(param_1 + 1) = (uint)(param_3 != 0); + *param_1 = &PTR_FUN_004fe7f0; + local_8 = param_2; + uVar1 = FUN_0041a63c(&local_8); + param_1[2] = uVar1; + return; +} + + +================================================================== + +### FUNC 0041a9a4 (340 bytes) name=FUN_0041a9a4 + +undefined1 +FUN_0041a9a4(undefined8 param_1,mbstate_t *param_2,wchar_t *param_3,wchar_t *param_4,ulong *param_5, + char *param_6,char *param_7,ulong *param_8) + +{ + undefined1 uVar1; + size_t sVar2; + char acStack_10 [8]; + mbstate_t local_8; + + local_8 = *param_2; + sVar2 = __ctype_get_mb_cur_max(); + if (param_6 + (sVar2 * ((long)param_4 - (long)param_3 >> 2) - (long)param_7) == (char *)0x0) { + if (param_3 < param_4) { + do { + sVar2 = wcrtomb(param_6,*param_3,&local_8); + if (sVar2 == 0xffffffffffffffff) goto LAB_0041aa74; + param_3 = param_3 + 1; + *param_2 = local_8; + param_6 = param_6 + sVar2; + } while (param_3 < param_4); + } + uVar1 = 0; + } + else { + uVar1 = param_3 < param_4; + if (param_3 < param_4) { + if (param_6 < param_7) { + do { + sVar2 = wcrtomb(acStack_10,*param_3,&local_8); + if (sVar2 == 0xffffffffffffffff) goto LAB_0041aa74; + if ((ulong)((long)param_7 - (long)param_6) < sVar2) { + uVar1 = 1; + goto LAB_0041aa78; + } + memcpy(param_6,acStack_10,sVar2); + param_6 = param_6 + sVar2; + *param_2 = local_8; + param_3 = param_3 + 1; + } while ((param_6 < param_7) && (param_3 < param_4)); + uVar1 = param_3 < param_4; + } + } + } +LAB_0041aa78: + *param_5 = (ulong)param_3; + *param_8 = (ulong)param_6; + return uVar1; +LAB_0041aa74: + uVar1 = 2; + goto LAB_0041aa78; +} + + +================================================================== + +### FUNC 0041aaf8 (244 bytes) name=FUN_0041aaf8 + +undefined1 +FUN_0041aaf8(undefined8 param_1,mbstate_t *param_2,char *param_3,char *param_4,ulong *param_5, + wchar_t *param_6,wchar_t *param_7,ulong *param_8) + +{ + undefined1 uVar1; + size_t sVar2; + mbstate_t local_8; + + uVar1 = param_3 < param_4; + local_8 = *param_2; + if (((bool)uVar1) && (param_6 < param_7)) { + while (sVar2 = mbrtowc(param_6,param_3,(long)param_4 - (long)param_3,&local_8), + sVar2 != 0xffffffffffffffff) { + if (sVar2 == 0xfffffffffffffffe) { + *param_5 = (ulong)param_3; + *param_8 = (ulong)param_6; + return 1; + } + if (sVar2 == 0) { + *param_6 = L'\0'; + sVar2 = 1; + } + param_3 = param_3 + sVar2; + *param_2 = local_8; + param_6 = param_6 + 1; + uVar1 = param_3 < param_4; + if ((!(bool)uVar1) || (param_7 <= param_6)) goto LAB_0041aba8; + } + uVar1 = 2; + } +LAB_0041aba8: + *param_5 = (ulong)param_3; + *param_8 = (ulong)param_6; + return uVar1; +} + + +================================================================== + +### FUNC 0041abec (28 bytes) name=FUN_0041abec + +bool FUN_0041abec(void) + +{ + size_t sVar1; + + sVar1 = __ctype_get_mb_cur_max(); + return sVar1 == 1; +} + + +================================================================== + +### FUNC 0041ac18 (20 bytes) name=FUN_0041ac18 + +void FUN_0041ac18(void) + +{ + __ctype_get_mb_cur_max(); + return; +} + + +================================================================== + +### FUNC 0041ac3c (200 bytes) name=FUN_0041ac3c + +int FUN_0041ac3c(undefined8 param_1,mbstate_t *param_2,char *param_3,char *param_4,long param_5) + +{ + size_t sVar1; + int iVar2; + mbstate_t local_8; + + local_8 = *param_2; + iVar2 = 0; + if ((param_3 < param_4) && (param_5 != 0)) { + while (sVar1 = mbrtowc((wchar_t *)0x0,param_3,(long)param_4 - (long)param_3,&local_8), + 1 < sVar1 + 2) { + if (sVar1 == 0) { + param_3 = param_3 + 1; + *param_2 = local_8; + iVar2 = iVar2 + 1; + } + else { + param_3 = param_3 + sVar1; + *param_2 = local_8; + iVar2 = (int)sVar1 + iVar2; + } + if (param_4 <= param_3) { + return iVar2; + } + param_5 = param_5 + -1; + if (param_5 == 0) { + return iVar2; + } + } + } + return iVar2; +} + + +================================================================== + +### FUNC 0041ad04 (40 bytes) name=FUN_0041ad04 + +uint FUN_0041ad04(undefined8 param_1,char *param_2,char *param_3) + +{ + int iVar1; + + iVar1 = strcoll(param_2,param_3); + return (uint)(iVar1 != 0) | iVar1 >> 0x1e; +} + + +================================================================== + +### FUNC 0041ad2c (16 bytes) name=FUN_0041ad2c + +void FUN_0041ad2c(undefined8 param_1,char *param_2,char *param_3,size_t param_4) + +{ + strxfrm(param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0041ad3c (40 bytes) name=FUN_0041ad3c + +uint FUN_0041ad3c(undefined8 param_1,wchar_t *param_2,wchar_t *param_3) + +{ + int iVar1; + + iVar1 = wcscoll(param_2,param_3); + return (uint)(iVar1 != 0) | iVar1 >> 0x1e; +} + + +================================================================== + +### FUNC 0041ad64 (16 bytes) name=FUN_0041ad64 + +void FUN_0041ad64(undefined8 param_1,wchar_t *param_2,wchar_t *param_3,size_t param_4) + +{ + wcsxfrm(param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0041ad74 (76 bytes) name=FUN_0041ad74 + +void FUN_0041ad74(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501f70 + 0x10); + FUN_0041e6c8(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 0041adf4 (76 bytes) name=FUN_0041adf4 + +void FUN_0041adf4(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501938 + 0x10); + FUN_00422248(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 0041ae74 (84 bytes) name=FUN_0041ae74 + +void FUN_0041ae74(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501f70 + 0x10); + FUN_0041e6c8(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041aefc (84 bytes) name=FUN_0041aefc + +void FUN_0041aefc(long *param_1) + +{ + *param_1 = (long)(PTR_DAT_00501938 + 0x10); + FUN_00422248(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041af84 (156 bytes) name=FUN_0041af84 + +undefined1 FUN_0041af84(ulong *param_1,ulong param_2) + +{ + ulong *puVar1; + ulong uVar2; + undefined1 local_1; + + if (param_1[8] != 0) { + return *(undefined1 *)(param_1[8] + param_2); + } + do { + puVar1 = param_1; +code_r0x0041afb4: + switch((char)puVar1[7]) { + case '\0': + return *(undefined1 *)(puVar1[0xe] + param_2); + case '\x01': + uVar2 = *(ulong *)puVar1[0xe]; + param_1 = (ulong *)puVar1[0xe]; + if (uVar2 <= param_2) { + param_2 = param_2 - uVar2; + param_1 = (ulong *)puVar1[0xf]; + } + break; + case '\x02': + case '\x03': + (**(code **)(*(long *)puVar1[0xe] + 0x10))((long *)puVar1[0xe],param_2,1,&local_1); + return local_1; + default: + goto code_r0x0041afb4; + } + } while( true ); +} + + +================================================================== + +### FUNC 0041b020 (44 bytes) name=FUN_0041b020 + +void FUN_0041b020(undefined8 *param_1) + +{ + FUN_0041e124(); + *param_1 = &PTR_FUN_004fe880; + return; +} + + +================================================================== + +### FUNC 0041b04c (172 bytes) name=FUN_0041b04c + +void FUN_0041b04c(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + char cVar1; + undefined8 uVar2; + + FUN_0041e124(); + *param_1 = &PTR_FUN_004fe880; + /* try { // try from 0041b084 to 0051b087 has its CatchHandler @ 0041b0b4 */ + FUN_004322fc(param_1 + 0xd,param_2,param_3); + cVar1 = FUN_00432400(param_1 + 0xd); + if (cVar1 == '\0') { + return; + } + /* catch() { ... } // from try @ 0041b084 with catch @ 0041b0b4 */ + *(undefined4 *)(param_1 + 0xf) = param_3; + param_1[0x14] = param_4; + FUN_0041e2b0(param_1); + uVar2 = param_1[0x13]; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + param_1[1] = uVar2; + /* try { // try from 0041b0d4 to 0051b0d7 has its CatchHandler @ 0041a960 */ + param_1[2] = uVar2; + param_1[3] = uVar2; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + return; +} + + +================================================================== + +### FUNC 0041b10c (168 bytes) name=FUN_0041b10c + +void FUN_0041b10c(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + char cVar1; + undefined8 uVar2; + + FUN_0041e124(); + *param_1 = &PTR_FUN_004fe880; + FUN_0043227c(param_1 + 0xd,param_2,param_3); + cVar1 = FUN_00432400(param_1 + 0xd); + if (cVar1 == '\0') { + return; + } + *(undefined4 *)(param_1 + 0xf) = param_3; + param_1[0x14] = param_4; + FUN_0041e2b0(param_1); + uVar2 = param_1[0x13]; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + param_1[1] = uVar2; + param_1[2] = uVar2; + param_1[3] = uVar2; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + return; +} + + +================================================================== + +### FUNC 0041b1c8 (8 bytes) name=FUN_0041b1c8 + +void FUN_0041b1c8(long param_1) + +{ + FUN_00432410(param_1 + 0x68); + return; +} + + +================================================================== + +### FUNC 0041b1d0 (8 bytes) name=FUN_0041b1d0 + +void FUN_0041b1d0(long param_1) + +{ + FUN_00432438(param_1 + 0x68); + return; +} + + +================================================================== + +### FUNC 0041b1d8 (156 bytes) name=FUN_0041b1d8 + +undefined4 FUN_0041b1d8(ulong *param_1,ulong param_2) + +{ + ulong *puVar1; + ulong uVar2; + undefined4 local_4; + + if (param_1[8] != 0) { + return *(undefined4 *)(param_1[8] + param_2 * 4); + } + do { + puVar1 = param_1; +code_r0x0041b208: + switch((char)puVar1[7]) { + case '\0': + return *(undefined4 *)(puVar1[0xe] + param_2 * 4); + case '\x01': + uVar2 = *(ulong *)puVar1[0xe]; + param_1 = (ulong *)puVar1[0xe]; + if (uVar2 <= param_2) { + param_2 = param_2 - uVar2; + param_1 = (ulong *)puVar1[0xf]; + } + break; + case '\x02': + case '\x03': + (**(code **)(*(long *)puVar1[0xe] + 0x10))((long *)puVar1[0xe],param_2,1,&local_4); + return local_4; + default: + goto code_r0x0041b208; + } + } while( true ); +} + + +================================================================== + +### FUNC 0041b274 (44 bytes) name=FUN_0041b274 + +void FUN_0041b274(undefined8 *param_1) + +{ + FUN_00421348(); + *param_1 = &PTR_FUN_004fe900; + return; +} + + +================================================================== + +### FUNC 0041b2a0 (172 bytes) name=FUN_0041b2a0 + +void FUN_0041b2a0(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + char cVar1; + undefined8 uVar2; + + FUN_00421348(); + *param_1 = &PTR_FUN_004fe900; + FUN_004322fc(param_1 + 0xd,param_2,param_3); + cVar1 = FUN_00432400(param_1 + 0xd); + if (cVar1 == '\0') { + return; + } + *(undefined4 *)(param_1 + 0xf) = param_3; + param_1[0x14] = param_4; + FUN_004214d4(param_1); + uVar2 = param_1[0x13]; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + param_1[1] = uVar2; + param_1[2] = uVar2; + param_1[3] = uVar2; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + return; +} + + +================================================================== + +### FUNC 0041b360 (168 bytes) name=FUN_0041b360 + +void FUN_0041b360(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + char cVar1; + undefined8 uVar2; + + FUN_00421348(); + *param_1 = &PTR_FUN_004fe900; + FUN_0043227c(param_1 + 0xd,param_2,param_3); + cVar1 = FUN_00432400(param_1 + 0xd); + if (cVar1 == '\0') { + return; + } + *(undefined4 *)(param_1 + 0xf) = param_3; + param_1[0x14] = param_4; + FUN_004214d4(param_1); + uVar2 = param_1[0x13]; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + param_1[1] = uVar2; + param_1[2] = uVar2; + param_1[3] = uVar2; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + return; +} + + +================================================================== + +### FUNC 0041b41c (8 bytes) name=FUN_0041b41c + +void FUN_0041b41c(long param_1) + +{ + FUN_00432410(param_1 + 0x68); + return; +} + + +================================================================== + +### FUNC 0041b424 (8 bytes) name=FUN_0041b424 + +void FUN_0041b424(long param_1) + +{ + FUN_00432438(param_1 + 0x68); + return; +} + + +================================================================== + +### FUNC 0041b42c (8 bytes) name=FUN_0041b42c + +undefined8 FUN_0041b42c(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 0041b434 (140 bytes) name=FUN_0041b434 + +void FUN_0041b434(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8cc0; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + /* catch() { ... } // from try @ 0041ba84 with catch @ 0041b470 */ + return; +} + + +================================================================== + +### FUNC 0041b4c0 (148 bytes) name=FUN_0041b4c0 + +void FUN_0041b4c0(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8cc0; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041b554 (44 bytes) name=FUN_0041b554 + +void FUN_0041b554(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8cc0; + FUN_00414378(param_1 + 1); + return; +} + + +================================================================== + +### FUNC 0041b5a8 (28 bytes) name=FUN_0041b5a8 + +void FUN_0041b5a8(long param_1) + +{ + *(undefined **)(param_1 + 0x18) = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0x18); + return; +} + + +================================================================== + +### FUNC 0041b5c4 (8 bytes) name=FUN_0041b5c4 + +void FUN_0041b5c4(long param_1) + +{ + FUN_0041b5a8(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 0041b5cc (16 bytes) name=FUN_0041b5cc + +void FUN_0041b5cc(long *param_1) + +{ + FUN_0041b5a8((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041b5dc (56 bytes) name=FUN_0041b5dc + +void FUN_0041b5dc(void *param_1) + +{ + *(undefined **)((long)param_1 + 0x18) = PTR_DAT_00501a40 + 0x10; + FUN_003d381c((long)param_1 + 0x18); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041b614 (8 bytes) name=FUN_0041b614 + +void FUN_0041b614(long param_1) + +{ + FUN_0041b5dc(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 0041b61c (16 bytes) name=FUN_0041b61c + +void FUN_0041b61c(long *param_1) + +{ + FUN_0041b5dc((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041b62c (28 bytes) name=FUN_0041b62c + +void FUN_0041b62c(long param_1) + +{ + *(undefined **)(param_1 + 0x18) = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0x18); + return; +} + + +================================================================== + +### FUNC 0041b648 (8 bytes) name=FUN_0041b648 + +void FUN_0041b648(long param_1) + +{ + FUN_0041b62c(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 0041b650 (16 bytes) name=FUN_0041b650 + +void FUN_0041b650(long *param_1) + +{ + FUN_0041b62c((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041b660 (56 bytes) name=FUN_0041b660 + +void FUN_0041b660(void *param_1) + +{ + *(undefined **)((long)param_1 + 0x18) = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c((long)param_1 + 0x18); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041b698 (8 bytes) name=FUN_0041b698 + +void FUN_0041b698(long param_1) + +{ + FUN_0041b660(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 0041b6a0 (16 bytes) name=FUN_0041b6a0 + +void FUN_0041b6a0(long *param_1) + +{ + FUN_0041b660((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041b6b0 (4 bytes) name=FUN_0041b6b0 + +void FUN_0041b6b0(void) + +{ + return; +} + + +================================================================== + +### FUNC 0041b6b4 (144 bytes) name=FUN_0041b6b4 + +void FUN_0041b6b4(long *param_1,long *param_2,undefined8 param_3) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),param_3); + lVar1 = param_2[3]; + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[4]; + FUN_003d2728((long)param_1 + lVar1 + 0x10,param_3); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[5]; + param_1[2] = param_2[6]; + return; +} + + +================================================================== + +### FUNC 0041b75c (192 bytes) name=FUN_0041b75c + +void FUN_0041b75c(undefined8 *param_1,undefined8 param_2) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 3; + FUN_003d347c(puVar1); + param_1[0x1e] = 0; + *(undefined1 *)(param_1 + 0x1f) = 0; + *(undefined1 *)((long)param_1 + 0xf9) = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + *param_1 = &DAT_004fea68; + param_1[1] = 0; + param_1[3] = &DAT_004fea90; + FUN_003d2728(puVar1,param_2); + param_1[2] = &DAT_004fea18; + param_1[3] = &DAT_004fea40; + FUN_003d2728(puVar1,param_2); + *param_1 = &PTR_FUN_004f8d38; + param_1[3] = &PTR_FUN_004f8d88; + param_1[2] = &PTR_FUN_004f8d60; + return; +} + + +================================================================== + +### FUNC 0041b840 (76 bytes) name=FUN_0041b840 + +void FUN_0041b840(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[5]; + param_1[2] = param_2[6]; + lVar1 = param_2[3]; + param_1[2] = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18) + 0x10) = param_2[4]; + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + return; +} + + +================================================================== + +### FUNC 0041b88c (136 bytes) name=FUN_0041b88c + +void FUN_0041b88c(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = param_2[3]; + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[4]; + FUN_003d2728((long)param_1 + lVar1 + 0x10,0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[5]; + param_1[2] = param_2[6]; + return; +} + + +================================================================== + +### FUNC 0041b92c (188 bytes) name=FUN_0041b92c + +void FUN_0041b92c(undefined8 *param_1) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 3; + FUN_003d347c(puVar1); + param_1[0x1e] = 0; + *(undefined1 *)(param_1 + 0x1f) = 0; + *(undefined1 *)((long)param_1 + 0xf9) = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + *param_1 = &DAT_004fea68; + param_1[1] = 0; + param_1[3] = &DAT_004fea90; + FUN_003d2728(puVar1,0); + param_1[2] = &DAT_004fea18; + param_1[3] = &DAT_004fea40; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f8d38; + param_1[3] = &PTR_FUN_004f8d88; + param_1[2] = &PTR_FUN_004f8d60; + return; +} + + +================================================================== + +### FUNC 0041ba0c (4 bytes) name=FUN_0041ba0c + +void FUN_0041ba0c(void) + +{ + return; +} + + +================================================================== + +### FUNC 0041ba10 (144 bytes) name=FUN_0041ba10 + +void FUN_0041ba10(long *param_1,long *param_2,undefined8 param_3) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + /* try { // try from 0041ba34 to 0051ba37 has its CatchHandler @ 0041ba64 */ + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),param_3); + lVar1 = param_2[3]; + param_1[2] = lVar1; + /* catch() { ... } // from try @ 0041ba34 with catch @ 0041ba64 */ + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[4]; + FUN_003d3008((long)param_1 + lVar1 + 0x10,param_3); + lVar1 = *param_2; + *param_1 = lVar1; + /* try { // try from 0041ba84 to 0051ba87 has its CatchHandler @ 0041b470 */ + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[5]; + param_1[2] = param_2[6]; + return; +} + + +================================================================== + +### FUNC 0041bab8 (192 bytes) name=FUN_0041bab8 + +void FUN_0041bab8(undefined8 *param_1,undefined8 param_2) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 3; + FUN_003d347c(puVar1); + param_1[0x1e] = 0; + *(undefined4 *)(param_1 + 0x1f) = 0; + *(undefined1 *)((long)param_1 + 0xfc) = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + *param_1 = &DAT_004feb08; + param_1[1] = 0; + param_1[3] = &DAT_004feb30; + FUN_003d3008(puVar1,param_2); + param_1[2] = &DAT_004feab8; + param_1[3] = &DAT_004feae0; + FUN_003d3008(puVar1,param_2); + *param_1 = &PTR_FUN_004f8df8; + param_1[3] = &PTR_FUN_004f8e48; + param_1[2] = &DAT_004f8e20; + return; +} + + +================================================================== + +### FUNC 0041bb9c (76 bytes) name=FUN_0041bb9c + +void FUN_0041bb9c(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[5]; + param_1[2] = param_2[6]; + lVar1 = param_2[3]; + param_1[2] = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18) + 0x10) = param_2[4]; + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + return; +} + + +================================================================== + +### FUNC 0041bbe8 (136 bytes) name=FUN_0041bbe8 + +void FUN_0041bbe8(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = param_2[3]; + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[4]; + FUN_003d3008((long)param_1 + lVar1 + 0x10,0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[5]; + param_1[2] = param_2[6]; + return; +} + + +================================================================== + +### FUNC 0041bc88 (188 bytes) name=FUN_0041bc88 + +void FUN_0041bc88(undefined8 *param_1) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 3; + FUN_003d347c(puVar1); + param_1[0x1e] = 0; + *(undefined4 *)(param_1 + 0x1f) = 0; + *(undefined1 *)((long)param_1 + 0xfc) = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + *param_1 = &DAT_004feb08; + param_1[1] = 0; + param_1[3] = &DAT_004feb30; + FUN_003d3008(puVar1,0); + param_1[2] = &DAT_004feab8; + param_1[3] = &DAT_004feae0; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f8df8; + param_1[3] = &PTR_FUN_004f8e48; + param_1[2] = &DAT_004f8e20; + return; +} + + +================================================================== + +### FUNC 0041bd68 (8 bytes) name=FUN_0041bd68 + +undefined8 FUN_0041bd68(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 0041bd70 (8 bytes) name=FUN_0041bd70 + +undefined8 FUN_0041bd70(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 0041bd78 (140 bytes) name=FUN_0041bd78 + +void FUN_0041bd78(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041be04 (140 bytes) name=FUN_0041be04 + +void FUN_0041be04(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + /* catch() { ... } // from try @ 0041c37c with catch @ 0041be20 */ + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041be90 (140 bytes) name=FUN_0041be90 + +void FUN_0041be90(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041bf1c (140 bytes) name=FUN_0041bf1c + +void FUN_0041bf1c(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041bfa8 (140 bytes) name=FUN_0041bfa8 + +void FUN_0041bfa8(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041c034 (140 bytes) name=FUN_0041c034 + +void FUN_0041c034(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041c0c0 (140 bytes) name=FUN_0041c0c0 + +void FUN_0041c0c0(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041c14c (140 bytes) name=FUN_0041c14c + +void FUN_0041c14c(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041c1d8 (140 bytes) name=FUN_0041c1d8 + +void FUN_0041c1d8(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + return; +} + + +================================================================== + +### FUNC 0041c264 (148 bytes) name=FUN_0041c264 + +void FUN_0041c264(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c2f8 (148 bytes) name=FUN_0041c2f8 + +void FUN_0041c2f8(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + /* try { // try from 0041c37c to 0051c37f has its CatchHandler @ 0041be20 */ + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + /* catch() { ... } // from try @ 0041c32c with catch @ 0041c35c */ + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + /* try { // try from 0041c32c to 0051c32f has its CatchHandler @ 0041c35c */ + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c38c (148 bytes) name=FUN_0041c38c + +void FUN_0041c38c(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c420 (148 bytes) name=FUN_0041c420 + +void FUN_0041c420(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8f60; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c4b4 (148 bytes) name=FUN_0041c4b4 + +void FUN_0041c4b4(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c548 (148 bytes) name=FUN_0041c548 + +void FUN_0041c548(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c5dc (148 bytes) name=FUN_0041c5dc + +void FUN_0041c5dc(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c670 (148 bytes) name=FUN_0041c670 + +void FUN_0041c670(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + /* catch() { ... } // from try @ 0041ce64 with catch @ 0041c6f0 */ + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c704 (148 bytes) name=FUN_0041c704 + +void FUN_0041c704(exception *param_1) + +{ + char cVar1; + bool bVar2; + int iVar3; + long lVar4; + int *piVar5; + + *(undefined ***)param_1 = &PTR_FUN_004f8e70; + lVar4 = *(long *)(param_1 + 8); + if ((undefined *)(lVar4 + -0x18) != PTR_DAT_00501f30) { + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + iVar3 = *(int *)(lVar4 + -8); + *(int *)(lVar4 + -8) = iVar3 + -1; + } + else { + piVar5 = (int *)(lVar4 + -8); + do { + iVar3 = *piVar5; + cVar1 = '\x01'; + bVar2 = (bool)ExclusiveMonitorPass(piVar5,0x10); + if (bVar2) { + *piVar5 = iVar3 + -1; + cVar1 = ExclusiveMonitorsStatus(); + } + } while (cVar1 != '\0'); + } + if (iVar3 < 1) { + operator_delete((undefined *)(lVar4 + -0x18)); + } + } + std::exception::~exception(param_1); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041c798 (44 bytes) name=FUN_0041c798 + +void FUN_0041c798(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8e70; + FUN_00414378(param_1 + 1); + return; +} + + +================================================================== + +### FUNC 0041c7d8 (56 bytes) name=FUN_0041c7d8 + +void FUN_0041c7d8(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8e70; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8ea0; + return; +} + + +================================================================== + +### FUNC 0041c824 (56 bytes) name=FUN_0041c824 + +void FUN_0041c824(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8e70; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8ed0; + return; +} + + +================================================================== + +### FUNC 0041c870 (56 bytes) name=FUN_0041c870 + +void FUN_0041c870(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8e70; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8f00; + return; +} + + +================================================================== + +### FUNC 0041c8bc (56 bytes) name=FUN_0041c8bc + +void FUN_0041c8bc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8e70; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8f30; + return; +} + + +================================================================== + +### FUNC 0041c908 (44 bytes) name=FUN_0041c908 + +void FUN_0041c908(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8f60; + FUN_00414378(param_1 + 1); + return; +} + + +================================================================== + +### FUNC 0041c948 (56 bytes) name=FUN_0041c948 + +void FUN_0041c948(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8f60; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8f90; + return; +} + + +================================================================== + +### FUNC 0041c994 (56 bytes) name=FUN_0041c994 + +void FUN_0041c994(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8f60; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8fc0; + return; +} + + +================================================================== + +### FUNC 0041c9e0 (56 bytes) name=FUN_0041c9e0 + +void FUN_0041c9e0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f8f60; + FUN_00414378(param_1 + 1); + *param_1 = &PTR_FUN_004f8ff0; + return; +} + + +================================================================== + +### FUNC 0041ca2c (116 bytes) name=FUN_0041ca2c + +long FUN_0041ca2c(long param_1,long param_2,long param_3) + +{ + char cVar1; + + cVar1 = FUN_00432400(param_1 + 0x68); + if (cVar1 == '\0') { + if ((param_2 == 0) && (param_3 == 0)) { + *(undefined8 *)(param_1 + 0xa0) = 1; + } + else if ((param_2 != 0) && (0 < param_3)) { + *(long *)(param_1 + 0x98) = param_2; + *(long *)(param_1 + 0xa0) = param_3; + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 0041caa0 (116 bytes) name=FUN_0041caa0 + +long FUN_0041caa0(long param_1,long param_2,long param_3) + +{ + char cVar1; + + cVar1 = FUN_00432400(param_1 + 0x68); + if (cVar1 == '\0') { + if ((param_2 == 0) && (param_3 == 0)) { + *(undefined8 *)(param_1 + 0xa0) = 1; + } + else if ((param_2 != 0) && (0 < param_3)) { + *(long *)(param_1 + 0x98) = param_2; + *(long *)(param_1 + 0xa0) = param_3; + return param_1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 0041cb14 (176 bytes) name=FUN_0041cb14 + +long FUN_0041cb14(long param_1) + +{ + long lVar1; + char cVar2; + int iVar3; + long lVar4; + long lVar5; + + if ((*(uint *)(param_1 + 0x78) >> 3 & 1) != 0) { + cVar2 = FUN_00432400(param_1 + 0x68); + if (cVar2 != '\0') { + lVar5 = *(long *)(param_1 + 0x18) - *(long *)(param_1 + 0x10); + if (*(long **)(param_1 + 200) != (long *)0x0) { + iVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x28))(); + if (-1 < iVar3) { + lVar4 = FUN_004326b0(param_1 + 0x68); + iVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x40))(*(long **)(param_1 + 200)); + lVar1 = 0; + if ((long)iVar3 != 0) { + lVar1 = lVar4 / (long)iVar3; + } + lVar5 = lVar5 + lVar1; + } + return lVar5; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + } + return -1; +} + + +================================================================== + +### FUNC 0041cbc4 (180 bytes) name=FUN_0041cbc4 + +long FUN_0041cbc4(long param_1) + +{ + long lVar1; + char cVar2; + int iVar3; + long lVar4; + long lVar5; + + if ((*(uint *)(param_1 + 0x78) >> 3 & 1) != 0) { + cVar2 = FUN_00432400(param_1 + 0x68); + if (cVar2 != '\0') { + lVar5 = *(long *)(param_1 + 0x18) - *(long *)(param_1 + 0x10) >> 2; + if (*(long **)(param_1 + 200) != (long *)0x0) { + iVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x28))(); + if (-1 < iVar3) { + lVar4 = FUN_004326b0(param_1 + 0x68); + iVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x40))(*(long **)(param_1 + 200)); + lVar1 = 0; + if ((long)iVar3 != 0) { + lVar1 = lVar4 / (long)iVar3; + } + lVar5 = lVar5 + lVar1; + } + return lVar5; + } + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + } + return -1; +} + + +================================================================== + +### FUNC 0041cc78 (64 bytes) name=FUN_0041cc78 + +int FUN_0041cc78(long *param_1) + +{ + int iVar1; + + iVar1 = 0; + if ((ulong)param_1[4] < (ulong)param_1[5]) { + iVar1 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + iVar1 = -(uint)(iVar1 == -1); + } + return iVar1; +} + + +================================================================== + +### FUNC 0041ccb8 (64 bytes) name=FUN_0041ccb8 + +int FUN_0041ccb8(long *param_1) + +{ + int iVar1; + + iVar1 = 0; + if ((ulong)param_1[4] < (ulong)param_1[5]) { + iVar1 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + iVar1 = -(uint)(iVar1 == -1); + } + return iVar1; +} + + +================================================================== + +### FUNC 0041ccf8 (364 bytes) name=FUN_0041ccf8 + +uint FUN_0041ccf8(long *param_1,uint param_2) + +{ + char cVar1; + int iVar2; + uint uVar3; + ulong uVar4; + undefined1 *puVar5; + long lVar6; + + if ((*(uint *)(param_1 + 0xf) >> 3 & 1) == 0) { + return 0xffffffff; + } + if (*(char *)((long)param_1 + 0xaa) == '\0') { + uVar4 = param_1[2]; + cVar1 = (char)param_1[0x18]; + if ((ulong)param_1[1] < uVar4) { + param_1[2] = uVar4 - 1; + uVar3 = (uint)*(byte *)(uVar4 - 1); + goto LAB_0041cd48; + } + } + else { + iVar2 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + if (iVar2 == -1) { + return 0xffffffff; + } + lVar6 = param_1[0x13]; + cVar1 = (char)param_1[0x18]; + param_1[1] = lVar6; + param_1[2] = lVar6; + param_1[3] = lVar6; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + } + lVar6 = (**(code **)(*param_1 + 0x20))(param_1,0xffffffffffffffff,1,0x18); + if (lVar6 == -1) { + return 0xffffffff; + } + uVar3 = (**(code **)(*param_1 + 0x48))(param_1); + if (uVar3 == 0xffffffff) { + return 0xffffffff; + } +LAB_0041cd48: + if ((param_2 == 0xffffffff) < (param_2 == uVar3)) { + return param_2; + } + if (param_2 != 0xffffffff) { + if (cVar1 != '\0') { + return 0xffffffff; + } + /* try { // try from 0041ce14 to 0051ce17 has its CatchHandler @ 0041ce44 */ + if ((char)param_1[0x18] == '\0') { + puVar5 = (undefined1 *)((long)param_1 + 0xab); + lVar6 = param_1[2]; + param_1[0x17] = param_1[3]; + /* catch() { ... } // from try @ 0041ce14 with catch @ 0041ce44 */ + param_1[1] = (long)puVar5; + param_1[2] = (long)puVar5; + param_1[0x16] = lVar6; + param_1[3] = (long)param_1 + 0xac; + *(undefined1 *)(param_1 + 0x18) = 1; + } + else { + puVar5 = (undefined1 *)param_1[2]; + } + *(undefined1 *)((long)param_1 + 0xa9) = 1; + *puVar5 = (char)param_2; + return param_2; + } + return 0; +} + + +================================================================== + +### FUNC 0041ce64 (364 bytes) name=FUN_0041ce64 + +int FUN_0041ce64(long *param_1,int param_2) + +{ + int iVar1; + ulong uVar2; + int *piVar3; + long lVar4; + char cVar5; + + /* try { // try from 0041ce64 to 0051ce67 has its CatchHandler @ 0041c6f0 */ + if ((*(uint *)(param_1 + 0xf) >> 3 & 1) == 0) { + return -1; + } + if (*(char *)((long)param_1 + 0xaa) == '\0') { + uVar2 = param_1[2]; + cVar5 = (char)param_1[0x18]; + if ((ulong)param_1[1] < uVar2) { + iVar1 = *(int *)(uVar2 - 4); + param_1[2] = uVar2 - 4; + goto LAB_0041ceb4; + } + } + else { + iVar1 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + if (iVar1 == -1) { + return -1; + } + lVar4 = param_1[0x13]; + cVar5 = (char)param_1[0x18]; + param_1[1] = lVar4; + param_1[2] = lVar4; + param_1[3] = lVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + } + lVar4 = (**(code **)(*param_1 + 0x20))(param_1,0xffffffffffffffff,1,0x18); + if (lVar4 == -1) { + return -1; + } + iVar1 = (**(code **)(*param_1 + 0x48))(param_1); + if (iVar1 == -1) { + return -1; + } +LAB_0041ceb4: + if ((param_2 == -1) < (param_2 == iVar1)) { + return param_2; + } + if (param_2 != -1) { + if (cVar5 != '\0') { + return -1; + } + if ((char)param_1[0x18] == '\0') { + piVar3 = (int *)((long)param_1 + 0xac); + lVar4 = param_1[2]; + param_1[0x17] = param_1[3]; + param_1[1] = (long)piVar3; + param_1[2] = (long)piVar3; + param_1[0x16] = lVar4; + param_1[3] = (long)(param_1 + 0x16); + *(undefined1 *)(param_1 + 0x18) = 1; + } + else { + piVar3 = (int *)param_1[2]; + } + *(undefined1 *)((long)param_1 + 0xa9) = 1; + *piVar3 = param_2; + return param_2; + } + return 0; +} + + +================================================================== + +### FUNC 0041cfd0 (352 bytes) name=FUN_0041cfd0 + +long FUN_0041cfd0(long param_1,undefined8 param_2,long param_3) + +{ + uint uVar1; + char cVar2; + long lVar3; + long lVar4; + long lVar5; + undefined8 uVar6; + + uVar1 = *(uint *)(param_1 + 0x78); + if (*(long **)(param_1 + 200) == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar2 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(); + if (((cVar2 == '\0') || ((uVar1 & 0x11) == 0)) || (*(char *)(param_1 + 0xa9) != '\0')) { +LAB_0041d0a8: + lVar4 = FUN_003fc7f0(param_1,param_2,param_3); + return lVar4; + } + lVar3 = *(long *)(param_1 + 0x30) - *(long *)(param_1 + 0x28); + lVar4 = lVar3; + if ((*(char *)(param_1 + 0xaa) == '\0') && + (lVar4 = *(ulong *)(param_1 + 0xa0) - 1, *(ulong *)(param_1 + 0xa0) < 2)) { + lVar4 = lVar3; + } + if (0x3ff < lVar4) { + lVar4 = 0x400; + } + if (param_3 < lVar4) goto LAB_0041d0a8; + lVar3 = *(long *)(param_1 + 0x28) - *(long *)(param_1 + 0x20); + lVar4 = FUN_00432584(param_1 + 0x68,*(long *)(param_1 + 0x20),lVar3,param_2,param_3); + if (lVar4 != lVar3 + param_3) goto LAB_0041d08c; + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + uVar6 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 8) = uVar6; + *(undefined8 *)(param_1 + 0x10) = uVar6; + *(undefined8 *)(param_1 + 0x18) = uVar6; +LAB_0041d0e0: + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + } + else { + lVar5 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar5; + *(long *)(param_1 + 0x10) = lVar5; + *(long *)(param_1 + 0x18) = lVar5; + if (*(ulong *)(param_1 + 0xa0) < 2) goto LAB_0041d0e0; + *(long *)(param_1 + 0x28) = lVar5; + *(long *)(param_1 + 0x20) = lVar5; + *(ulong *)(param_1 + 0x30) = lVar5 + (*(ulong *)(param_1 + 0xa0) - 1); + } + *(undefined1 *)(param_1 + 0xaa) = 1; +LAB_0041d08c: + lVar5 = lVar4 - lVar3; + if (lVar4 <= lVar3) { + lVar5 = 0; + } + return lVar5; +} + + +================================================================== + +### FUNC 0041d130 (360 bytes) name=FUN_0041d130 + +long FUN_0041d130(long param_1,undefined8 param_2,long param_3) + +{ + uint uVar1; + char cVar2; + long lVar3; + long lVar4; + long lVar5; + undefined8 uVar6; + + uVar1 = *(uint *)(param_1 + 0x78); + if (*(long **)(param_1 + 200) == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar2 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(); + if (((cVar2 == '\0') || ((uVar1 & 0x11) == 0)) || (*(char *)(param_1 + 0xa9) != '\0')) { +LAB_0041d210: + lVar4 = FUN_003fc994(param_1,param_2,param_3); + return lVar4; + } + lVar3 = *(long *)(param_1 + 0x30) - *(long *)(param_1 + 0x28) >> 2; + lVar4 = lVar3; + if ((*(char *)(param_1 + 0xaa) == '\0') && + (lVar4 = *(ulong *)(param_1 + 0xa0) - 1, *(ulong *)(param_1 + 0xa0) < 2)) { + lVar4 = lVar3; + } + if (0x3ff < lVar4) { + lVar4 = 0x400; + } + if (param_3 < lVar4) goto LAB_0041d210; + lVar3 = *(long *)(param_1 + 0x28) - *(long *)(param_1 + 0x20) >> 2; + lVar4 = FUN_00432584(param_1 + 0x68,*(long *)(param_1 + 0x20),lVar3,param_2,param_3); + /* catch() { ... } // from try @ 0041d814 with catch @ 0041d1f0 */ + if (lVar4 != lVar3 + param_3) goto LAB_0041d1f4; + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + uVar6 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 8) = uVar6; + *(undefined8 *)(param_1 + 0x10) = uVar6; + *(undefined8 *)(param_1 + 0x18) = uVar6; +LAB_0041d248: + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + } + else { + lVar5 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar5; + *(long *)(param_1 + 0x10) = lVar5; + *(long *)(param_1 + 0x18) = lVar5; + if (*(ulong *)(param_1 + 0xa0) < 2) goto LAB_0041d248; + *(long *)(param_1 + 0x28) = lVar5; + *(long *)(param_1 + 0x20) = lVar5; + *(ulong *)(param_1 + 0x30) = lVar5 + *(ulong *)(param_1 + 0xa0) * 4 + -4; + } + *(undefined1 *)(param_1 + 0xaa) = 1; +LAB_0041d1f4: + lVar5 = lVar4 - lVar3; + if (lVar4 <= lVar3) { + lVar5 = 0; + } + return lVar5; +} + + +================================================================== + +### FUNC 0041d298 (1144 bytes) name=FUN_0041d298 + +ulong FUN_0041d298(long *param_1) + +{ + bool bVar1; + char cVar2; + int iVar3; + byte *pbVar4; + size_t sVar5; + byte *pbVar6; + void *pvVar7; + byte *pbVar8; + long lVar9; + ulong uVar10; + size_t sVar11; + ulong uVar12; + ulong uVar13; + void *local_8; + + if ((*(uint *)(param_1 + 0xf) >> 3 & 1) == 0) { + return 0xffffffff; + } + if (*(char *)((long)param_1 + 0xaa) == '\0') { + pbVar4 = (byte *)param_1[2]; + } + else { + uVar12 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + if ((int)uVar12 == -1) { + return uVar12; + } + pbVar4 = (byte *)param_1[0x13]; + param_1[1] = (long)pbVar4; + param_1[2] = (long)pbVar4; + param_1[3] = (long)pbVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + } + if ((char)param_1[0x18] == '\0') { + pbVar8 = (byte *)param_1[3]; + pbVar6 = pbVar4; + } + else { + pbVar6 = (byte *)param_1[0x16]; + pbVar8 = (byte *)param_1[0x17]; + if ((byte *)param_1[1] != pbVar4) { + pbVar6 = pbVar6 + 1; + } + param_1[1] = param_1[0x13]; + param_1[0x16] = (long)pbVar6; + param_1[2] = (long)pbVar6; + param_1[3] = (long)pbVar8; + *(undefined1 *)(param_1 + 0x18) = 0; + } + if (pbVar6 < pbVar8) goto LAB_0041d3c4; + if ((ulong)param_1[0x14] < 2) { + uVar12 = 1; + } + else { + uVar12 = param_1[0x14] - 1; + } + if ((long *)param_1[0x19] == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar2 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + if (cVar2 == '\0') { + iVar3 = (**(code **)(*(long *)param_1[0x19] + 0x28))((long *)param_1[0x19]); + if (iVar3 < 1) { + iVar3 = (**(code **)(*(long *)param_1[0x19] + 0x40))((long *)param_1[0x19]); + uVar13 = (uVar12 - 1) + (long)iVar3; + uVar10 = uVar12; + } + else { + uVar13 = (long)iVar3 * uVar12; + uVar10 = uVar13; + } + sVar5 = param_1[0x1d] - param_1[0x1c]; + lVar9 = uVar10 - sVar5; + if ((long)uVar10 <= (long)sVar5) { + lVar9 = 0; + } + if (((*(char *)((long)param_1 + 0xa9) != '\0') && (param_1[3] == param_1[1])) && (sVar5 != 0)) { + lVar9 = 0; + } + if (param_1[0x1b] < (long)uVar13) { + pvVar7 = operator_new__(uVar13); + sVar11 = 0; + if (sVar5 != 0) { + memcpy(pvVar7,(void *)param_1[0x1c],sVar5); + sVar11 = sVar5; + } + if ((void *)param_1[0x1a] != (void *)0x0) { + operator_delete__((void *)param_1[0x1a]); + } + param_1[0x1a] = (long)pvVar7; + param_1[0x1b] = uVar13; + } + else if (sVar5 == 0) { + pvVar7 = (void *)param_1[0x1a]; + sVar11 = 0; + } + else { + memmove((void *)param_1[0x1a],(void *)param_1[0x1c],sVar5); + pvVar7 = (void *)param_1[0x1a]; + sVar11 = sVar5; + } + uVar13 = (long)pvVar7 + sVar11; + param_1[0x1c] = (long)pvVar7; + param_1[0x1d] = uVar13; + iVar3 = 0; + *(undefined8 *)((long)param_1 + 0x8c) = *(undefined8 *)((long)param_1 + 0x84); + sVar5 = 0; + if (0 < lVar9) goto LAB_0041d570; + bVar1 = false; + do { + pvVar7 = (void *)param_1[1]; + local_8 = pvVar7; + if ((ulong)param_1[0x1c] < uVar13) { + iVar3 = (**(code **)(*(long *)param_1[0x19] + 0x20)) + ((long *)param_1[0x19],(long)param_1 + 0x84,param_1[0x1c],uVar13, + param_1 + 0x1c,pvVar7,(long)pvVar7 + uVar12,&local_8); + pvVar7 = (void *)param_1[1]; + if (iVar3 == 3) goto LAB_0041d5d8; +LAB_0041d548: + sVar5 = (long)local_8 - (long)pvVar7; + if (iVar3 == 2) goto LAB_0041d38c; + } + else { + if (iVar3 != 3) goto LAB_0041d548; +LAB_0041d5d8: + uVar13 = param_1[0x1d] - param_1[0x1a]; + sVar5 = uVar12; + if (uVar13 < uVar12) { + sVar5 = uVar13; + } + memcpy(pvVar7,(void *)param_1[0x1a],sVar5); + param_1[0x1c] = param_1[0x1a] + sVar5; + } + if ((sVar5 == 0) <= bVar1) goto LAB_0041d38c; + uVar13 = param_1[0x1d]; + lVar9 = 1; +LAB_0041d570: + if (param_1[0x1b] < (long)((uVar13 - param_1[0x1a]) + lVar9)) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::underflow codecvt::max_length() is not valid"); + } + lVar9 = FUN_004324c0(param_1 + 0xd,uVar13,lVar9); + if (lVar9 == 0) { + bVar1 = true; + } + else { + bVar1 = false; + if (lVar9 == -1) goto LAB_0041d38c; + } + uVar13 = param_1[0x1d] + lVar9; + param_1[0x1d] = uVar13; + } while( true ); + } + sVar5 = FUN_004324c0(param_1 + 0xd,param_1[1],uVar12); + if (sVar5 == 0) { + iVar3 = 0; + if ((*(uint *)(param_1 + 0xf) >> 4 & 1) != 0) { + lVar9 = param_1[0x13]; + param_1[1] = lVar9; + param_1[2] = lVar9; + param_1[3] = lVar9; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + return 0xffffffff; + } + goto LAB_0041d334; + } + if ((long)sVar5 < 1) goto LAB_0041d620; +LAB_0041d394: + if ((*(uint *)(param_1 + 0xf) >> 3 & 1) == 0) { + pbVar6 = (byte *)param_1[0x13]; + param_1[1] = (long)pbVar6; + param_1[2] = (long)pbVar6; + param_1[3] = (long)pbVar6; + } + else { + pbVar6 = (byte *)param_1[0x13]; + param_1[1] = (long)pbVar6; + param_1[2] = (long)pbVar6; + param_1[3] = (long)(pbVar6 + sVar5); + } + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 1; +LAB_0041d3c4: + return (ulong)*pbVar6; +LAB_0041d38c: + if ((long)sVar5 < 1) { + if (!bVar1) { + if (iVar3 == 2) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::underflow invalid byte sequence in file"); + } +LAB_0041d620: + /* WARNING: Subroutine does not return */ + FUN_0040f928(&DAT_0047b680); + } +LAB_0041d334: + lVar9 = param_1[0x13]; + param_1[1] = lVar9; + param_1[2] = lVar9; + param_1[3] = lVar9; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + if (iVar3 != 1) { + return 0xffffffff; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::underflow incomplete character in file"); + } + goto LAB_0041d394; +} + + +================================================================== + +### FUNC 0041d710 (1156 bytes) name=FUN_0041d710 + +ulong FUN_0041d710(long *param_1) + +{ + bool bVar1; + char cVar2; + int iVar3; + uint *puVar4; + size_t sVar5; + void *__dest; + uint *puVar6; + long lVar7; + uint *puVar8; + wchar_t *__s1; + ulong uVar9; + size_t sVar10; + ulong uVar11; + ulong uVar12; + wchar_t *local_8; + + if ((*(uint *)(param_1 + 0xf) >> 3 & 1) == 0) { + return 0xffffffff; + } + if (*(char *)((long)param_1 + 0xaa) == '\0') { + puVar4 = (uint *)param_1[2]; + } + else { + uVar11 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + if ((int)uVar11 == -1) { + return uVar11; + } + puVar4 = (uint *)param_1[0x13]; + param_1[1] = (long)puVar4; + param_1[2] = (long)puVar4; + param_1[3] = (long)puVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + } + if ((char)param_1[0x18] == '\0') { + puVar6 = (uint *)param_1[3]; + } + else { + puVar8 = (uint *)param_1[1]; + puVar6 = (uint *)param_1[0x17]; + param_1[1] = param_1[0x13]; + puVar4 = (uint *)(param_1[0x16] + (ulong)(puVar8 != puVar4) * 4); + param_1[3] = (long)puVar6; + param_1[0x16] = (long)puVar4; + param_1[2] = (long)puVar4; + *(undefined1 *)(param_1 + 0x18) = 0; + } + if (puVar4 < puVar6) goto LAB_0041d83c; + if ((ulong)param_1[0x14] < 2) { + uVar11 = 1; + } + else { + uVar11 = param_1[0x14] - 1; + } + if ((long *)param_1[0x19] == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar2 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + if (cVar2 == '\0') { + iVar3 = (**(code **)(*(long *)param_1[0x19] + 0x28))((long *)param_1[0x19]); + if (iVar3 < 1) { + iVar3 = (**(code **)(*(long *)param_1[0x19] + 0x40))((long *)param_1[0x19]); + uVar12 = (uVar11 - 1) + (long)iVar3; + uVar9 = uVar11; + } + else { + uVar12 = (long)iVar3 * uVar11; + uVar9 = uVar12; + } + sVar5 = param_1[0x1d] - param_1[0x1c]; + lVar7 = uVar9 - sVar5; + if ((long)uVar9 <= (long)sVar5) { + lVar7 = 0; + } + if (((*(char *)((long)param_1 + 0xa9) != '\0') && (param_1[3] == param_1[1])) && (sVar5 != 0)) { + lVar7 = 0; + } + if (param_1[0x1b] < (long)uVar12) { + __dest = operator_new__(uVar12); + sVar10 = 0; + if (sVar5 != 0) { + memcpy(__dest,(void *)param_1[0x1c],sVar5); + sVar10 = sVar5; + } + if ((void *)param_1[0x1a] != (void *)0x0) { + operator_delete__((void *)param_1[0x1a]); + } + param_1[0x1a] = (long)__dest; + param_1[0x1b] = uVar12; + } + else if (sVar5 == 0) { + __dest = (void *)param_1[0x1a]; + sVar10 = 0; + } + else { + /* catch() { ... } // from try @ 0041dae4 with catch @ 0041db28 */ + memmove((void *)param_1[0x1a],(void *)param_1[0x1c],sVar5); + /* try { // try from 0041db38 to 0051db3b has its CatchHandler @ 0041d9dc */ + __dest = (void *)param_1[0x1a]; + sVar10 = sVar5; + /* catch() { ... } // from try @ 0041dbc4 with catch @ 0041db3c + catch() { ... } // from try @ 0041dc78 with catch @ 0041db3c + catch() { ... } // from try @ 0041dce0 with catch @ 0041db3c + catch() { ... } // from try @ 0041dd08 with catch @ 0041db3c + catch() { ... } // from try @ 0041dd1c with catch @ 0041db3c */ + } + uVar12 = (long)__dest + sVar10; + param_1[0x1c] = (long)__dest; + param_1[0x1d] = uVar12; + *(undefined8 *)((long)param_1 + 0x8c) = *(undefined8 *)((long)param_1 + 0x84); + iVar3 = 0; + sVar5 = 0; + if (0 < lVar7) goto LAB_0041d9f4; + bVar1 = false; + do { + __s1 = (wchar_t *)param_1[1]; + local_8 = __s1; + if ((ulong)param_1[0x1c] < uVar12) { + iVar3 = (**(code **)(*(long *)param_1[0x19] + 0x20)) + ((long *)param_1[0x19],(long)param_1 + 0x84,param_1[0x1c],uVar12, + param_1 + 0x1c,__s1,__s1 + uVar11,&local_8); + __s1 = (wchar_t *)param_1[1]; + if (iVar3 == 3) goto LAB_0041da5c; +LAB_0041d9c8: + sVar5 = (long)local_8 - (long)__s1 >> 2; + if (iVar3 == 2) goto LAB_0041d804; + } + else { + if (iVar3 != 3) goto LAB_0041d9c8; +LAB_0041da5c: + uVar12 = param_1[0x1d] - param_1[0x1a]; + sVar5 = uVar11; + if (uVar12 < uVar11) { + sVar5 = uVar12; + } + wmemcpy(__s1,(wchar_t *)param_1[0x1a],sVar5); + param_1[0x1c] = param_1[0x1a] + sVar5; + } + /* catch() { ... } // from try @ 0041da1c with catch @ 0041d9dc + catch() { ... } // from try @ 0041daec with catch @ 0041d9dc + catch() { ... } // from try @ 0041db38 with catch @ 0041d9dc */ + if ((sVar5 == 0) <= bVar1) goto LAB_0041d804; + uVar12 = param_1[0x1d]; + lVar7 = 1; +LAB_0041d9f4: + if (param_1[0x1b] < (long)((uVar12 - param_1[0x1a]) + lVar7)) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::underflow codecvt::max_length() is not valid"); + } + lVar7 = FUN_004324c0(param_1 + 0xd,uVar12,lVar7); + /* try { // try from 0041da1c to 0051daa3 has its CatchHandler @ 0041d9dc */ + if (lVar7 == 0) { + bVar1 = true; + } + else { + bVar1 = false; + if (lVar7 == -1) goto LAB_0041d804; + } + uVar12 = param_1[0x1d] + lVar7; + param_1[0x1d] = uVar12; + } while( true ); + } + sVar5 = FUN_004324c0(param_1 + 0xd,param_1[1],uVar11); + if (sVar5 == 0) { + iVar3 = 0; + if ((*(uint *)(param_1 + 0xf) >> 4 & 1) != 0) { + lVar7 = param_1[0x13]; + param_1[1] = lVar7; + param_1[2] = lVar7; + param_1[3] = lVar7; + /* try { // try from 0041dae4 to 0051dae7 has its CatchHandler @ 0041db28 */ + param_1[5] = 0; + param_1[4] = 0; + /* try { // try from 0041daec to 0051db07 has its CatchHandler @ 0041d9dc */ + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + return 0xffffffff; + } + goto LAB_0041d7ac; + } + if ((long)sVar5 < 1) goto LAB_0041daa4; +LAB_0041d80c: + if ((*(uint *)(param_1 + 0xf) >> 3 & 1) == 0) { + puVar4 = (uint *)param_1[0x13]; + param_1[1] = (long)puVar4; + param_1[2] = (long)puVar4; + param_1[3] = (long)puVar4; + } + else { + /* try { // try from 0041d814 to 0051d817 has its CatchHandler @ 0041d1f0 */ + puVar4 = (uint *)param_1[0x13]; + param_1[1] = (long)puVar4; + param_1[2] = (long)puVar4; + param_1[3] = (long)(puVar4 + sVar5); + } + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 1; +LAB_0041d83c: + return (ulong)*puVar4; +LAB_0041d804: + if ((long)sVar5 < 1) { + if (!bVar1) { + if (iVar3 == 2) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::underflow invalid byte sequence in file"); + } +LAB_0041daa4: + /* WARNING: Subroutine does not return */ + FUN_0040f928(&DAT_0047b680); + } +LAB_0041d7ac: + lVar7 = param_1[0x13]; + param_1[1] = lVar7; + param_1[2] = lVar7; + param_1[3] = lVar7; + /* try { // try from 0041d7c4 to 0051d7c7 has its CatchHandler @ 0041d7f4 */ + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + if (iVar3 != 1) { + /* catch() { ... } // from try @ 0041d7c4 with catch @ 0041d7f4 */ + return 0xffffffff; + } + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::underflow incomplete character in file"); + } + goto LAB_0041d80c; +} + + +================================================================== + +### FUNC 0041db94 (644 bytes) name=FUN_0041db94 + +long FUN_0041db94(long *param_1,wchar_t *param_2,long param_3) + +{ + uint uVar1; + char cVar2; + int iVar3; + wchar_t *pwVar4; + long lVar5; + wchar_t *pwVar6; + size_t __n; + long lVar7; + + if ((char)param_1[0x18] == '\0') { + lVar7 = 0; + if (*(char *)((long)param_1 + 0xaa) != '\0') { + /* try { // try from 0041dcd8 to 0051dcdb has its CatchHandler @ 0041dd0c */ + iVar3 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + /* try { // try from 0041dce0 to 0051dcef has its CatchHandler @ 0041db3c */ + if (iVar3 == -1) { + return 0; + } + lVar5 = param_1[0x13]; + param_1[1] = lVar5; + param_1[2] = lVar5; + param_1[3] = lVar5; + /* catch() { ... } // from try @ 0041dc70 with catch @ 0041dcf8 */ + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + /* try { // try from 0041dd08 to 0051dd0b has its CatchHandler @ 0041db3c */ + } + } + else { + pwVar4 = (wchar_t *)param_1[2]; + /* try { // try from 0041dbc4 to 0051dc43 has its CatchHandler @ 0041db3c */ + if (param_3 < 1) { + lVar7 = 0; + pwVar6 = (wchar_t *)param_1[1]; + } + else { + pwVar6 = (wchar_t *)param_1[1]; + if (pwVar4 == pwVar6) { + param_3 = param_3 + -1; + lVar7 = 1; + *param_2 = *pwVar4; + pwVar4 = pwVar4 + 1; + param_2 = param_2 + 1; + } + else { + lVar7 = 0; + } + } + lVar5 = param_1[0x16] + (ulong)(pwVar6 != pwVar4) * 4; + param_1[1] = param_1[0x13]; + param_1[0x16] = lVar5; + param_1[2] = lVar5; + param_1[3] = param_1[0x17]; + *(undefined1 *)(param_1 + 0x18) = 0; + } + uVar1 = *(uint *)(param_1 + 0xf); + if ((ulong)param_1[0x14] < 2) { + lVar5 = 1; + } + else { + lVar5 = param_1[0x14] - 1; + } + if (param_3 <= lVar5) { +LAB_0041dd0c: + /* catch() { ... } // from try @ 0041dcd8 with catch @ 0041dd0c */ + lVar5 = FUN_003fc8c8(param_1,param_2,param_3); + /* try { // try from 0041dd1c to 0051dd1f has its CatchHandler @ 0041db3c */ + /* catch() { ... } // from try @ 0041de60 with catch @ 0041dd20 + catch() { ... } // from try @ 0041df68 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e050 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e29c with catch @ 0041dd20 + catch() { ... } // from try @ 0041e430 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e48c with catch @ 0041dd20 + catch() { ... } // from try @ 0041e5c0 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e5d4 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e670 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e684 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e698 with catch @ 0041dd20 + catch() { ... } // from try @ 0041e6ac with catch @ 0041dd20 */ + return lVar7 + lVar5; + } + if ((long *)param_1[0x19] == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar2 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + if ((cVar2 == '\0') || ((uVar1 >> 3 & 1) == 0)) goto LAB_0041dd0c; + lVar5 = param_1[3] - param_1[2]; + __n = lVar5 >> 2; + pwVar4 = param_2; + if (__n != 0) { + lVar7 = lVar7 + __n; + param_3 = param_3 - __n; + pwVar4 = (wchar_t *)((long)param_2 + lVar5); + wmemcpy(param_2,(wchar_t *)param_1[2],__n); + param_1[2] = param_1[2] + lVar5; + } + while( true ) { + /* try { // try from 0041dc70 to 0051dc73 has its CatchHandler @ 0041dcf8 */ + /* try { // try from 0041dc78 to 0051dc9f has its CatchHandler @ 0041db3c */ + lVar5 = FUN_004324c0(param_1 + 0xd,pwVar4,param_3); + if (lVar5 == -1) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::xsgetn error reading the file"); + } + if (lVar5 == 0) break; + param_3 = param_3 - lVar5; + lVar7 = lVar7 + lVar5; + if (param_3 == 0) goto LAB_0041dd88; + pwVar4 = pwVar4 + lVar5; + } + if (param_3 != 0) { + lVar5 = param_1[0x13]; + param_1[1] = lVar5; + param_1[2] = lVar5; + param_1[3] = lVar5; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + return lVar7; + } +LAB_0041dd88: + if ((*(uint *)(param_1 + 0xf) & 0x11) == 0) { + lVar5 = param_1[0x13]; + param_1[1] = lVar5; + param_1[2] = lVar5; + param_1[3] = lVar5; + } + else { + lVar5 = param_1[0x13]; + param_1[1] = lVar5; + param_1[2] = lVar5; + param_1[3] = lVar5; + if (1 < (ulong)param_1[0x14]) { + param_1[5] = lVar5; + param_1[4] = lVar5; + param_1[6] = lVar5 + param_1[0x14] * 4 + -4; + goto LAB_0041ddb4; + } + } + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; +LAB_0041ddb4: + *(undefined1 *)((long)param_1 + 0xa9) = 1; + return lVar7; +} + + +================================================================== + +### FUNC 0041de18 (664 bytes) name=FUN_0041de18 + +long FUN_0041de18(long *param_1,undefined1 *param_2,long param_3) + +{ + uint uVar1; + size_t __n; + char cVar2; + int iVar3; + undefined1 *puVar4; + undefined1 *puVar5; + long lVar6; + long lVar7; + + if ((char)param_1[0x18] == '\0') { + lVar7 = 0; + if (*(char *)((long)param_1 + 0xaa) != '\0') { + iVar3 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + /* try { // try from 0041df60 to 0051df63 has its CatchHandler @ 0041e674 */ + if (iVar3 == -1) { + return 0; + } + lVar6 = param_1[0x13]; + /* try { // try from 0041df68 to 0051dfff has its CatchHandler @ 0041dd20 */ + param_1[1] = lVar6; + param_1[2] = lVar6; + param_1[3] = lVar6; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + } + } + else { + puVar4 = (undefined1 *)param_1[2]; + if (param_3 < 1) { + lVar7 = 0; + puVar5 = (undefined1 *)param_1[1]; + } + else { + puVar5 = (undefined1 *)param_1[1]; + if (puVar4 == puVar5) { + lVar7 = 1; + *param_2 = *puVar4; + param_3 = param_3 + -1; + param_2 = param_2 + 1; + puVar4 = (undefined1 *)(param_1[2] + 1); + param_1[2] = (long)puVar4; + if ((char)param_1[0x18] == '\0') goto LAB_0041de84; + puVar5 = (undefined1 *)param_1[1]; + } + else { + lVar7 = 0; + } + } + lVar6 = param_1[0x16]; + /* try { // try from 0041de60 to 0051df37 has its CatchHandler @ 0041dd20 */ + if (puVar4 != puVar5) { + lVar6 = lVar6 + 1; + } + param_1[1] = param_1[0x13]; + param_1[0x16] = lVar6; + param_1[2] = lVar6; + param_1[3] = param_1[0x17]; + *(undefined1 *)(param_1 + 0x18) = 0; + } +LAB_0041de84: + uVar1 = *(uint *)(param_1 + 0xf); + if ((ulong)param_1[0x14] < 2) { + lVar6 = 1; + } + else { + lVar6 = param_1[0x14] - 1; + } + if (param_3 <= lVar6) { +LAB_0041df88: + lVar6 = FUN_003fc714(param_1,param_2,param_3); + return lVar7 + lVar6; + } + if ((long *)param_1[0x19] == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar2 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + if ((cVar2 == '\0') || ((uVar1 >> 3 & 1) == 0)) goto LAB_0041df88; + __n = param_1[3] - param_1[2]; + puVar4 = param_2; + if (__n != 0) { + puVar4 = param_2 + __n; + lVar7 = lVar7 + __n; + memcpy(param_2,(void *)param_1[2],__n); + param_3 = param_3 - __n; + param_1[2] = param_1[2] + __n; + } + while( true ) { + lVar6 = FUN_004324c0(param_1 + 0xd,puVar4,param_3); + if (lVar6 == -1) { + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::xsgetn error reading the file"); + } + if (lVar6 == 0) break; + param_3 = param_3 - lVar6; + lVar7 = lVar7 + lVar6; + if (param_3 == 0) goto LAB_0041e020; + puVar4 = puVar4 + lVar6; + } + if (param_3 != 0) { + lVar6 = param_1[0x13]; + param_1[1] = lVar6; + param_1[2] = lVar6; + param_1[3] = lVar6; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + return lVar7; + } +LAB_0041e020: + if ((*(uint *)(param_1 + 0xf) & 0x11) == 0) { + lVar6 = param_1[0x13]; + param_1[1] = lVar6; + param_1[2] = lVar6; + param_1[3] = lVar6; + } + else { + lVar6 = param_1[0x13]; + param_1[1] = lVar6; + param_1[2] = lVar6; + param_1[3] = lVar6; + if (1 < (ulong)param_1[0x14]) { + param_1[5] = lVar6; + param_1[4] = lVar6; + param_1[6] = lVar6 + (param_1[0x14] - 1U); + goto LAB_0041e04c; + } + } + param_1[5] = 0; + param_1[4] = 0; + /* try { // try from 0041e048 to 0051e04b has its CatchHandler @ 0041e660 */ + param_1[6] = 0; +LAB_0041e04c: + /* try { // try from 0041e050 to 0051e253 has its CatchHandler @ 0041dd20 */ + *(undefined1 *)((long)param_1 + 0xa9) = 1; + return lVar7; +} + + +================================================================== + +### FUNC 0041e0b0 (56 bytes) name=FUN_0041e0b0 + +void FUN_0041e0b0(long param_1) + +{ + undefined8 uVar1; + + if (*(char *)(param_1 + 0xc0) == '\0') { + uVar1 = *(undefined8 *)(param_1 + 0x10); + *(long *)(param_1 + 8) = param_1 + 0xab; + *(long *)(param_1 + 0x10) = param_1 + 0xab; + *(undefined8 *)(param_1 + 0xb0) = uVar1; + *(undefined8 *)(param_1 + 0xb8) = *(undefined8 *)(param_1 + 0x18); + *(long *)(param_1 + 0x18) = param_1 + 0xac; + *(undefined1 *)(param_1 + 0xc0) = 1; + } + return; +} + + +================================================================== + +### FUNC 0041e0e8 (60 bytes) name=FUN_0041e0e8 + +void FUN_0041e0e8(long param_1) + +{ + long lVar1; + + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar1 = *(long *)(param_1 + 0xb0); + if (*(long *)(param_1 + 0x10) != *(long *)(param_1 + 8)) { + lVar1 = lVar1 + 1; + } + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + *(long *)(param_1 + 0xb0) = lVar1; + *(long *)(param_1 + 0x10) = lVar1; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(undefined1 *)(param_1 + 0xc0) = 0; + } + return; +} + + +================================================================== + +### FUNC 0041e124 (348 bytes) name=FUN_0041e124 + +void FUN_0041e124(long *param_1) + +{ + long *plVar1; + undefined *puVar2; + char cVar3; + long lVar4; + + plVar1 = param_1 + 7; + puVar2 = PTR_DAT_00501bb0 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar2; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(plVar1); + *param_1 = (long)&PTR_FUN_004fecf0; + param_1[8] = 0; + param_1[9] = 0; + param_1[0xc] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + FUN_00432208(param_1 + 0xd,param_1 + 8); + *(undefined4 *)(param_1 + 0xf) = 0; + *(undefined1 *)((long)param_1 + 0x7c) = 0; + param_1[0x14] = 0x400; + *(undefined1 *)((long)param_1 + 0x7d) = 0; + *(undefined1 *)((long)param_1 + 0x7e) = 0; + *(undefined1 *)((long)param_1 + 0x7f) = 0; + *(undefined1 *)(param_1 + 0x10) = 0; + *(undefined1 *)((long)param_1 + 0x81) = 0; + *(undefined1 *)((long)param_1 + 0x82) = 0; + *(undefined1 *)((long)param_1 + 0x83) = 0; + *(undefined1 *)((long)param_1 + 0x84) = 0; + *(undefined1 *)((long)param_1 + 0x85) = 0; + *(undefined1 *)((long)param_1 + 0x86) = 0; + *(undefined1 *)((long)param_1 + 0x87) = 0; + *(undefined1 *)(param_1 + 0x11) = 0; + *(undefined1 *)((long)param_1 + 0x89) = 0; + *(undefined1 *)((long)param_1 + 0x8a) = 0; + *(undefined1 *)((long)param_1 + 0x8b) = 0; + *(undefined1 *)((long)param_1 + 0x8c) = 0; + *(undefined1 *)((long)param_1 + 0x8d) = 0; + *(undefined1 *)((long)param_1 + 0x8e) = 0; + *(undefined1 *)((long)param_1 + 0x8f) = 0; + *(undefined1 *)(param_1 + 0x12) = 0; + *(undefined1 *)((long)param_1 + 0x91) = 0; + *(undefined1 *)((long)param_1 + 0x92) = 0; + *(undefined1 *)((long)param_1 + 0x93) = 0; + param_1[0x13] = 0; + *(undefined1 *)(param_1 + 0x15) = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + *(undefined1 *)((long)param_1 + 0xab) = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + *(undefined1 *)(param_1 + 0x18) = 0; + param_1[0x19] = 0; + param_1[0x1a] = 0; + param_1[0x1b] = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + cVar3 = FUN_003e076c(plVar1); + if (cVar3 == '\0') { + return; + } + lVar4 = FUN_003df0f8(plVar1); + param_1[0x19] = lVar4; + return; +} + + +================================================================== + +### FUNC 0041e2a8 (8 bytes) name=FUN_0041e2a8 + +void FUN_0041e2a8(long param_1) + +{ + FUN_00432400(param_1 + 0x68); + return; +} + + +================================================================== + +### FUNC 0041e2b0 (68 bytes) name=FUN_0041e2b0 + +void FUN_0041e2b0(long param_1) + +{ + void *pvVar1; + + if ((*(char *)(param_1 + 0xa8) == '\0') && (*(long *)(param_1 + 0x98) == 0)) { + pvVar1 = operator_new__(*(ulong *)(param_1 + 0xa0)); + *(void **)(param_1 + 0x98) = pvVar1; + *(undefined1 *)(param_1 + 0xa8) = 1; + } + return; +} + + +================================================================== + +### FUNC 0041e2f4 (84 bytes) name=FUN_0041e2f4 + +void FUN_0041e2f4(long param_1) + +{ + if (*(char *)(param_1 + 0xa8) != '\0') { + if (*(void **)(param_1 + 0x98) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x98)); + } + *(undefined8 *)(param_1 + 0x98) = 0; + *(undefined1 *)(param_1 + 0xa8) = 0; + } + if (*(void **)(param_1 + 0xd0) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0xd0)); + } + *(undefined8 *)(param_1 + 0xd0) = 0; + *(undefined8 *)(param_1 + 0xd8) = 0; + *(undefined8 *)(param_1 + 0xe0) = 0; + *(undefined8 *)(param_1 + 0xe8) = 0; + return; +} + + +================================================================== + +### FUNC 0041e348 (388 bytes) name=FUN_0041e348 + +bool FUN_0041e348(long param_1,long param_2,long param_3) + +{ + long lVar1; + long lVar2; + char cVar3; + int iVar4; + uint uVar5; + long lVar6; + long local_10; + undefined8 local_8; + + if (*(long **)(param_1 + 200) == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(); + if (cVar3 == '\0') { + iVar4 = (**(code **)(**(long **)(param_1 + 200) + 0x40))(*(long **)(param_1 + 200)); + /* try { // try from 0041e3b8 to 0051e3c7 has its CatchHandler @ 0041e64c */ + /* try { // try from 0041e3d0 to 0051e3d3 has its CatchHandler @ 0041e638 */ + lVar1 = -(iVar4 * param_3 + 0x1eU & 0xfffffffffffffff0); + uVar5 = (**(code **)(**(long **)(param_1 + 200) + 0x10)) + (*(long **)(param_1 + 200),param_1 + 0x84,param_2,param_2 + param_3,&local_8, + &stack0xffffffffffffff90 + lVar1, + &stack0xffffffffffffff90 + iVar4 * param_3 + lVar1,&local_10); + lVar2 = local_10; + if (uVar5 < 2) { + param_3 = local_10 - (long)(&stack0xffffffffffffff90 + lVar1); + lVar6 = FUN_00432544(param_1 + 0x68,&stack0xffffffffffffff90 + lVar1,param_3); + if ((param_3 == lVar6) && ((uVar5 & 1) != 0)) { + /* try { // try from 0041e484 to 0051e487 has its CatchHandler @ 0041e69c */ + /* try { // try from 0041e48c to 0051e48f has its CatchHandler @ 0041dd20 */ + iVar4 = (**(code **)(**(long **)(param_1 + 200) + 0x10)) + (*(long **)(param_1 + 200),param_1 + 0x84,local_8, + *(undefined8 *)(param_1 + 0x28),&local_8,&stack0xffffffffffffff90 + lVar1 + ,lVar2,&local_10); + if (iVar4 == 2) goto LAB_0041e4bc; + param_3 = local_10 - (long)(&stack0xffffffffffffff90 + lVar1); + lVar6 = FUN_00432544(param_1 + 0x68,&stack0xffffffffffffff90 + lVar1,param_3); + } + goto LAB_0041e418; + } + if (uVar5 != 3) { +LAB_0041e4bc: + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::_M_convert_to_external conversion error"); + } + } + lVar6 = FUN_00432544(param_1 + 0x68,param_2,param_3); +LAB_0041e418: + /* try { // try from 0041e430 to 0051e433 has its CatchHandler @ 0041dd20 */ + return lVar6 == param_3; +} + + +================================================================== + +### FUNC 0041e4cc (144 bytes) name=FUN_0041e4cc + +int FUN_0041e4cc(long param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + + /* try { // try from 0041e4d8 to 0051e4ff has its CatchHandler @ 0041e64c */ + cVar1 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(*(long **)(param_1 + 200)); + if (cVar1 != '\0') { + return (int)*(undefined8 *)(param_1 + 0x10) - (int)*(undefined8 *)(param_1 + 0x18); + } + /* try { // try from 0041e538 to 0051e53b has its CatchHandler @ 0041e56c */ + iVar2 = (**(code **)(**(long **)(param_1 + 200) + 0x38)) + (*(long **)(param_1 + 200),param_2,*(undefined8 *)(param_1 + 0xd0), + *(undefined8 *)(param_1 + 0xe0), + *(long *)(param_1 + 0x10) - *(long *)(param_1 + 8)); + /* try { // try from 0041e540 to 0051e543 has its CatchHandler @ 0041e64c */ + return ((int)*(undefined8 *)(param_1 + 0xd0) + iVar2) - (int)*(undefined8 *)(param_1 + 0xe8); +} + + +================================================================== + +### FUNC 0041e55c (364 bytes) name=FUN_0041e55c + +bool FUN_0041e55c(long *param_1) + +{ + bool bVar1; + byte bVar2; + uint uVar3; + int iVar4; + long lVar5; + long lVar6; + long local_88; + undefined1 auStack_80 [128]; + + /* catch() { ... } // from try @ 0041e538 with catch @ 0041e56c */ + bVar1 = true; + if ((ulong)param_1[4] < (ulong)param_1[5]) { + /* try { // try from 0041e6ac to 0051e6af has its CatchHandler @ 0041dd20 */ + /* catch() { ... } // from try @ 0041e7d0 with catch @ 0041e6b0 + catch() { ... } // from try @ 0041e808 with catch @ 0041e6b0 + catch() { ... } // from try @ 0041e9b8 with catch @ 0041e6b0 + catch() { ... } // from try @ 0041e9e0 with catch @ 0041e6b0 + catch() { ... } // from try @ 0041e9f4 with catch @ 0041e6b0 */ + iVar4 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + bVar1 = iVar4 != -1; + } + if (*(char *)((long)param_1 + 0xaa) != '\0') { + if ((long *)param_1[0x19] == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + bVar2 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + /* try { // try from 0041e5b0 to 0051e5b3 has its CatchHandler @ 0041e5c8 */ + if (bVar2 < bVar1) { + lVar5 = 0; + /* try { // try from 0041e5c0 to 0051e5c3 has its CatchHandler @ 0041dd20 */ + /* catch() { ... } // from try @ 0041e5b0 with catch @ 0041e5c8 + catch() { ... } // from try @ 0041e5ec with catch @ 0041e5c8 + catch() { ... } // from try @ 0041e630 with catch @ 0041e5c8 */ + while( true ) { + /* try { // try from 0041e5ec to 0051e5ef has its CatchHandler @ 0041e5c8 */ + uVar3 = (**(code **)(*(long *)param_1[0x19] + 0x18)) + ((long *)param_1[0x19],(long)param_1 + 0x84,auStack_80,&stack0x00000000, + &local_88); + if (uVar3 == 2) { + /* try { // try from 0041e684 to 0051e687 has its CatchHandler @ 0041dd20 */ + /* catch() { ... } // from try @ 0041e294 with catch @ 0041e688 */ + return false; + } + if (uVar3 < 2) { + lVar6 = local_88 - (long)auStack_80; + if (lVar6 < 1) break; + /* try { // try from 0041e670 to 0051e673 has its CatchHandler @ 0041dd20 */ + /* catch() { ... } // from try @ 0041df60 with catch @ 0041e674 */ + lVar5 = FUN_00432544(param_1 + 0xd,auStack_80,lVar6); + if (lVar6 != lVar5) { + return false; + } + } + /* try { // try from 0041e5d4 to 0051e5d7 has its CatchHandler @ 0041dd20 */ + if ((lVar5 < 1) || (uVar3 != 1)) break; + if (bVar1 == false) { + /* try { // try from 0041e698 to 0051e69b has its CatchHandler @ 0041dd20 */ + /* catch() { ... } // from try @ 0041e484 with catch @ 0041e69c */ + return false; + } + } + /* try { // try from 0041e628 to 0051e62b has its CatchHandler @ 0041e650 */ + if (bVar1 == false) { + return false; + } + /* try { // try from 0041e630 to 0051e633 has its CatchHandler @ 0041e5c8 */ + /* catch() { ... } // from try @ 0041e3d0 with catch @ 0041e638 */ + iVar4 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + return iVar4 != -1; + } + } + /* catch() { ... } // from try @ 0041e3b8 with catch @ 0041e64c + catch() { ... } // from try @ 0041e4d8 with catch @ 0041e64c + catch() { ... } // from try @ 0041e540 with catch @ 0041e64c */ + /* catch() { ... } // from try @ 0041e628 with catch @ 0041e650 */ + /* catch() { ... } // from try @ 0041e048 with catch @ 0041e660 */ + return bVar1; +} + + +================================================================== + +### FUNC 0041e6c8 (228 bytes) name=FUN_0041e6c8 + +long FUN_0041e6c8(long param_1) + +{ + char cVar1; + long lVar2; + undefined8 uVar3; + + cVar1 = FUN_00432400(param_1 + 0x68); + if (cVar1 != '\0') { + cVar1 = FUN_0041e55c(param_1); + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined1 *)(param_1 + 0xc0) = 0; + if (*(char *)(param_1 + 0xa8) != '\0') { + if (*(void **)(param_1 + 0x98) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x98)); + } + *(undefined8 *)(param_1 + 0x98) = 0; + *(undefined1 *)(param_1 + 0xa8) = 0; + } + if (*(void **)(param_1 + 0xd0) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0xd0)); + } + uVar3 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 0xd0) = 0; + *(undefined8 *)(param_1 + 0xd8) = 0; + *(undefined8 *)(param_1 + 0xe0) = 0; + *(undefined8 *)(param_1 + 0xe8) = 0; + *(undefined1 *)(param_1 + 0xa9) = 0; + *(undefined1 *)(param_1 + 0xaa) = 0; + *(undefined8 *)(param_1 + 8) = uVar3; + *(undefined8 *)(param_1 + 0x10) = uVar3; + *(undefined8 *)(param_1 + 0x18) = uVar3; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x84) = *(undefined8 *)(param_1 + 0x7c); + *(undefined8 *)(param_1 + 0x8c) = *(undefined8 *)(param_1 + 0x7c); + lVar2 = FUN_00432440(param_1 + 0x68); + if ((lVar2 != 0) && (cVar1 == '\x01')) { + return param_1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0041e864 (76 bytes) name=FUN_0041e864 + +void FUN_0041e864(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fecf0; + FUN_0041e6c8(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 0041e8b0 (84 bytes) name=FUN_0041e8b0 + +void FUN_0041e8b0(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fecf0; + FUN_0041e6c8(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041e904 (128 bytes) name=FUN_0041e904 + +void FUN_0041e904(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f9048; + param_1[2] = &PTR_FUN_004fecf0; + param_1[0x20] = &PTR_FUN_004f9070; + FUN_0041e6c8(param_1 + 2); + FUN_00432214(param_1 + 0xf); + param_1[2] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0x20] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0x20); + return; +} + + +================================================================== + +### FUNC 0041e984 (16 bytes) name=FUN_0041e984 + +void FUN_0041e984(long *param_1) + +{ + FUN_0041e904((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041e994 (136 bytes) name=FUN_0041e994 + +void FUN_0041e994(undefined8 *param_1) + +{ + /* try { // try from 0041e9b0 to 0051e9b3 has its CatchHandler @ 0041e9d0 */ + /* try { // try from 0041e9b8 to 0051e9bb has its CatchHandler @ 0041e6b0 */ + *param_1 = &PTR_FUN_004f9048; + param_1[2] = &PTR_FUN_004fecf0; + param_1[0x20] = &PTR_FUN_004f9070; + /* catch() { ... } // from try @ 0041e9b0 with catch @ 0041e9d0 */ + FUN_0041e6c8(param_1 + 2); + FUN_00432214(param_1 + 0xf); + /* try { // try from 0041e9e0 to 0051e9e3 has its CatchHandler @ 0041e6b0 */ + /* catch() { ... } // from try @ 0041e800 with catch @ 0041e9e4 */ + param_1[2] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 9); + /* try { // try from 0041e9f4 to 0051e9f7 has its CatchHandler @ 0041e6b0 */ + /* catch() { ... } // from try @ 0041eaa0 with catch @ 0041e9f8 + catch() { ... } // from try @ 0041ed94 with catch @ 0041e9f8 + catch() { ... } // from try @ 0041ee04 with catch @ 0041e9f8 + catch() { ... } // from try @ 0041eebc with catch @ 0041e9f8 + catch() { ... } // from try @ 0041ef4c with catch @ 0041e9f8 + catch() { ... } // from try @ 0041ef60 with catch @ 0041e9f8 + catch() { ... } // from try @ 0041ef74 with catch @ 0041e9f8 */ + param_1[0x20] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0x20); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041ea1c (16 bytes) name=FUN_0041ea1c + +void FUN_0041ea1c(long *param_1) + +{ + FUN_0041e994((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041ea2c (128 bytes) name=FUN_0041ea2c + +void FUN_0041ea2c(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f90b8; + param_1[0x1f] = &PTR_FUN_004f90e0; + param_1[1] = &PTR_FUN_004fecf0; + FUN_0041e6c8(param_1 + 1); + FUN_00432214(param_1 + 0xe); + param_1[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 8); + param_1[0x1f] = PTR_DAT_00501a40 + 0x10; + /* try { // try from 0041eaa0 to 0051ed43 has its CatchHandler @ 0041e9f8 */ + FUN_003d381c(param_1 + 0x1f); + return; +} + + +================================================================== + +### FUNC 0041eaac (16 bytes) name=FUN_0041eaac + +void FUN_0041eaac(long *param_1) + +{ + FUN_0041ea2c((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041eabc (136 bytes) name=FUN_0041eabc + +void FUN_0041eabc(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f90b8; + param_1[0x1f] = &PTR_FUN_004f90e0; + param_1[1] = &PTR_FUN_004fecf0; + FUN_0041e6c8(param_1 + 1); + FUN_00432214(param_1 + 0xe); + param_1[1] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 8); + param_1[0x1f] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0x1f); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041eb44 (16 bytes) name=FUN_0041eb44 + +void FUN_0041eb44(long *param_1) + +{ + FUN_0041eabc((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041eb54 (140 bytes) name=FUN_0041eb54 + +void FUN_0041eb54(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f9158; + param_1[2] = &PTR_FUN_004f9180; + param_1[0x21] = &PTR_FUN_004f91a8; + param_1[3] = &PTR_FUN_004fecf0; + FUN_0041e6c8(param_1 + 3); + FUN_00432214(param_1 + 0x10); + param_1[3] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0x21] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0x21); + return; +} + + +================================================================== + +### FUNC 0041ebe0 (8 bytes) name=FUN_0041ebe0 + +void FUN_0041ebe0(long param_1) + +{ + FUN_0041eb54(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 0041ebe8 (16 bytes) name=FUN_0041ebe8 + +void FUN_0041ebe8(long *param_1) + +{ + FUN_0041eb54((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041ebf8 (264 bytes) name=FUN_0041ebf8 + +long * FUN_0041ebf8(long *param_1,undefined8 param_2,uint param_3) + +{ + long *plVar1; + char cVar2; + void *pvVar3; + long lVar4; + + plVar1 = param_1 + 0xd; + cVar2 = FUN_00432400(plVar1); + if (cVar2 == '\0') { + FUN_00432394(plVar1,param_2,param_3,0x1b4); + cVar2 = FUN_00432400(plVar1); + if (cVar2 != '\0') { + if ((char)param_1[0x15] == '\0') { + pvVar3 = (void *)param_1[0x13]; + if (pvVar3 == (void *)0x0) { + pvVar3 = operator_new__(param_1[0x14]); + param_1[0x13] = (long)pvVar3; + *(undefined1 *)(param_1 + 0x15) = 1; + } + } + else { + pvVar3 = (void *)param_1[0x13]; + } + *(uint *)(param_1 + 0xf) = param_3; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + param_1[1] = (long)pvVar3; + param_1[2] = (long)pvVar3; + param_1[3] = (long)pvVar3; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined8 *)((long)param_1 + 0x84) = *(undefined8 *)((long)param_1 + 0x7c); + *(undefined8 *)((long)param_1 + 0x8c) = *(undefined8 *)((long)param_1 + 0x7c); + if (((param_3 >> 1 & 1) == 0) || + (lVar4 = (**(code **)(*param_1 + 0x20))(param_1,0,2,param_3), lVar4 != -1)) { + return param_1; + } + FUN_0041e6c8(param_1); + } + } + return (long *)0x0; +} + + +================================================================== + +### FUNC 0041ed00 (8 bytes) name=FUN_0041ed00 + +void FUN_0041ed00(undefined8 param_1,undefined8 *param_2) + +{ + FUN_0041ebf8(param_1,*param_2); + return; +} + + +================================================================== + +### FUNC 0041ed08 (148 bytes) name=FUN_0041ed08 + +void FUN_0041ed08(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f9158; + param_1[2] = &PTR_FUN_004f9180; + param_1[0x21] = &PTR_FUN_004f91a8; + param_1[3] = &PTR_FUN_004fecf0; + FUN_0041e6c8(param_1 + 3); + FUN_00432214(param_1 + 0x10); + param_1[3] = PTR_DAT_00501bb0 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0x21] = PTR_DAT_00501a40 + 0x10; + FUN_003d381c(param_1 + 0x21); + /* try { // try from 0041ed8c to 0051ed8f has its CatchHandler @ 0041ef50 */ + /* try { // try from 0041ed94 to 0051edcf has its CatchHandler @ 0041e9f8 */ + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 0041ed9c (8 bytes) name=FUN_0041ed9c + +void FUN_0041ed9c(long param_1) + +{ + FUN_0041ed08(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 0041eda4 (16 bytes) name=FUN_0041eda4 + +void FUN_0041eda4(long *param_1) + +{ + FUN_0041ed08((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 0041edb4 (272 bytes) name=FUN_0041edb4 + +undefined1 [16] FUN_0041edb4(long param_1,undefined8 param_2,undefined8 param_3,ulong param_4) + +{ + char cVar1; + long lVar2; + undefined8 uVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + undefined1 auVar12 [16]; + + cVar1 = FUN_0041e55c(); + if (cVar1 == '\0') { + uVar4 = 0; + uVar5 = 0; + uVar6 = 0; + uVar7 = 0; + uVar8 = 0; + uVar9 = 0; + /* try { // try from 0041edfc to 0051edff has its CatchHandler @ 0041ef64 */ + uVar10 = 0; + uVar11 = 0; + /* try { // try from 0041ee04 to 0051ee73 has its CatchHandler @ 0041e9f8 */ + lVar2 = -1; + } + else { + lVar2 = FUN_00432660(param_1 + 0x68,param_2,param_3); + if (lVar2 == -1) { + uVar4 = 0; + uVar5 = 0; + uVar6 = 0; + uVar7 = 0; + uVar8 = 0; + /* try { // try from 0041eeb4 to 0051eeb7 has its CatchHandler @ 0041ef3c */ + uVar9 = 0; + uVar10 = 0; + /* try { // try from 0041eebc to 0051eedb has its CatchHandler @ 0041e9f8 */ + uVar11 = 0; + } + else { + uVar3 = *(undefined8 *)(param_1 + 0x98); + uVar11 = param_4 & 0xff; + uVar10 = param_4 >> 8 & 0xff; + *(undefined8 *)(param_1 + 0xe8) = *(undefined8 *)(param_1 + 0xd0); + uVar9 = param_4 >> 0x10 & 0xff; + *(undefined8 *)(param_1 + 0xe0) = *(undefined8 *)(param_1 + 0xd0); + uVar8 = param_4 >> 0x18 & 0xff; + *(undefined1 *)(param_1 + 0xa9) = 0; + uVar7 = param_4 >> 0x20 & 0xff; + *(undefined1 *)(param_1 + 0xaa) = 0; + uVar6 = param_4 >> 0x28 & 0xff; + *(undefined8 *)(param_1 + 8) = uVar3; + uVar5 = param_4 >> 0x30 & 0xff; + *(undefined8 *)(param_1 + 0x10) = uVar3; + uVar4 = param_4 >> 0x38; + *(undefined8 *)(param_1 + 0x18) = uVar3; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(ulong *)(param_1 + 0x84) = param_4; + } + } + auVar12._8_8_ = + uVar11 | uVar10 << 8 | uVar9 << 0x10 | uVar8 << 0x18 | uVar7 << 0x20 | uVar6 << 0x28 | + uVar5 << 0x30 | uVar4 << 0x38; + auVar12._0_8_ = lVar2; + return auVar12; +} + + +================================================================== + +### FUNC 0041eec4 (552 bytes) name=FUN_0041eec4 + +int FUN_0041eec4(long param_1,int param_2) + +{ + bool bVar1; + char cVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + undefined1 *puVar6; + undefined1 *puVar7; + undefined1 local_1; + + if ((*(uint *)(param_1 + 0x78) & 0x11) != 0) { + if (*(char *)(param_1 + 0xa9) != '\0') { + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar4 = *(long *)(param_1 + 0xb0); + if (*(long *)(param_1 + 0x10) != *(long *)(param_1 + 8)) { + lVar4 = lVar4 + 1; + } + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + *(long *)(param_1 + 0xb0) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(undefined1 *)(param_1 + 0xc0) = 0; + } + iVar3 = FUN_0041e4cc(param_1,param_1 + 0x8c); + lVar4 = FUN_0041edb4(param_1,(long)iVar3,1,*(undefined8 *)(param_1 + 0x8c)); + if (lVar4 == -1) { + return -1; + } + } + puVar6 = *(undefined1 **)(param_1 + 0x20); + bVar1 = param_2 != -1; + puVar7 = *(undefined1 **)(param_1 + 0x28); + local_1 = (undefined1)param_2; + if (puVar6 < puVar7) { + if (bVar1) { + /* catch() { ... } // from try @ 0041eeb4 with catch @ 0041ef3c */ + *puVar7 = local_1; + puVar6 = *(undefined1 **)(param_1 + 0x20); + puVar7 = (undefined1 *)(*(long *)(param_1 + 0x28) + 1); + /* try { // try from 0041ef4c to 0051ef4f has its CatchHandler @ 0041e9f8 */ + *(undefined1 **)(param_1 + 0x28) = puVar7; + } + /* catch() { ... } // from try @ 0041ed8c with catch @ 0041ef50 */ + cVar2 = FUN_0041e348(param_1,puVar6,(long)puVar7 - (long)puVar6); + /* try { // try from 0041ef60 to 0051ef63 has its CatchHandler @ 0041e9f8 */ + if (cVar2 != '\0') { + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + uVar5 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 8) = uVar5; + *(undefined8 *)(param_1 + 0x10) = uVar5; + *(undefined8 *)(param_1 + 0x18) = uVar5; + } + else { + lVar4 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(long *)(param_1 + 0x18) = lVar4; + if (1 < *(ulong *)(param_1 + 0xa0)) { + *(long *)(param_1 + 0x28) = lVar4; + *(long *)(param_1 + 0x20) = lVar4; + *(ulong *)(param_1 + 0x30) = lVar4 + (*(ulong *)(param_1 + 0xa0) - 1); + goto LAB_0041efd8; + } + } + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + /* try { // try from 0041f074 to 0051f077 has its CatchHandler @ 0041ef78 */ + *(undefined8 *)(param_1 + 0x30) = 0; +LAB_0041efd8: + if (param_2 == -1) { + param_2 = 0; + } + return param_2; + } + } + else { + /* catch() { ... } // from try @ 0041f074 with catch @ 0041ef78 + catch() { ... } // from try @ 0041f0c8 with catch @ 0041ef78 + catch() { ... } // from try @ 0041f3f8 with catch @ 0041ef78 + catch() { ... } // from try @ 0041f41c with catch @ 0041ef78 + catch() { ... } // from try @ 0041f430 with catch @ 0041ef78 */ + if (1 < *(ulong *)(param_1 + 0xa0)) { + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + uVar5 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 8) = uVar5; + *(undefined8 *)(param_1 + 0x10) = uVar5; + *(undefined8 *)(param_1 + 0x18) = uVar5; + /* try { // try from 0041f0c0 to 0051f0c3 has its CatchHandler @ 0041f420 */ + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + /* try { // try from 0041f0c8 to 0051f3b7 has its CatchHandler @ 0041ef78 */ + *(undefined8 *)(param_1 + 0x30) = 0; + } + else { + lVar4 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(long *)(param_1 + 0x18) = lVar4; + *(long *)(param_1 + 0x28) = lVar4; + *(long *)(param_1 + 0x20) = lVar4; + *(ulong *)(param_1 + 0x30) = lVar4 + (*(ulong *)(param_1 + 0xa0) - 1); + } + *(undefined1 *)(param_1 + 0xaa) = 1; + if (bVar1) { + **(undefined1 **)(param_1 + 0x28) = local_1; + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1; + } + goto LAB_0041efd8; + } + if ((!bVar1) || (cVar2 = FUN_0041e348(param_1,&local_1,1), cVar2 != '\0')) { + *(undefined1 *)(param_1 + 0xaa) = 1; + if (param_2 == -1) { + param_2 = 0; + } + return param_2; + } + } + } + /* catch() { ... } // from try @ 0041edfc with catch @ 0041ef64 */ + /* try { // try from 0041ef74 to 0051ef77 has its CatchHandler @ 0041e9f8 */ + return -1; +} + + +================================================================== + +### FUNC 0041f0ec (472 bytes) name=FUN_0041f0ec + +undefined1 [16] FUN_0041f0ec(long param_1,long param_2,int param_3) + +{ + byte bVar1; + char cVar2; + int iVar3; + long lVar4; + long lVar5; + bool bVar6; + long lVar7; + undefined8 uVar8; + undefined1 auVar9 [16]; + undefined8 local_8; + + if (*(long **)(param_1 + 200) == (long *)0x0) { +LAB_0041f138: + bVar6 = true; + lVar5 = 0; + } + else { + iVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x28))(); + lVar5 = (long)iVar3; + if (iVar3 < 0) goto LAB_0041f138; + bVar6 = iVar3 < 1; + } + lVar7 = -1; + bVar1 = FUN_00432400(param_1 + 0x68); + uVar8 = 0; + if (bVar1 <= (byte)(bVar6 & param_2 != 0)) goto LAB_0041f1c8; + if (((param_2 != 0) || (param_3 != 1)) || + ((*(char *)(param_1 + 0xaa) != '\0' && + (cVar2 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(*(long **)(param_1 + 200)), + cVar2 == '\0')))) { + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar4 = *(long *)(param_1 + 0xb0); + if (*(long *)(param_1 + 0x10) != *(long *)(param_1 + 8)) { + lVar4 = lVar4 + 1; + } + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + *(long *)(param_1 + 0xb0) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(undefined1 *)(param_1 + 0xc0) = 0; + } + local_8 = *(undefined8 *)(param_1 + 0x7c); + lVar5 = lVar5 * param_2; + if ((param_3 != 1) || (*(char *)(param_1 + 0xa9) == '\0')) goto LAB_0041f224; + bVar6 = false; +LAB_0041f298: + local_8 = *(undefined8 *)(param_1 + 0x8c); + iVar3 = FUN_0041e4cc(param_1); + lVar5 = lVar5 + iVar3; + if (!bVar6) { +LAB_0041f224: + auVar9 = FUN_0041edb4(param_1,lVar5,param_3,local_8); + return auVar9; + } + } + else { + local_8 = *(undefined8 *)(param_1 + 0x7c); + if (*(char *)(param_1 + 0xa9) != '\0') { + bVar6 = true; + lVar5 = 0; + goto LAB_0041f298; + } + lVar5 = 0; + } + if (*(char *)(param_1 + 0xaa) != '\0') { + lVar5 = *(long *)(param_1 + 0x28) - *(long *)(param_1 + 0x20); + } + lVar4 = FUN_00432660(param_1 + 0x68,0,1); + if (lVar4 != -1) { + lVar7 = lVar4 + lVar5; + uVar8 = local_8; + } +LAB_0041f1c8: + auVar9._8_8_ = uVar8; + auVar9._0_8_ = lVar7; + return auVar9; +} + + +================================================================== + +### FUNC 0041f2c4 (240 bytes) name=FUN_0041f2c4 + +undefined1 [16] FUN_0041f2c4(long param_1,undefined8 param_2,undefined8 param_3) + +{ + char cVar1; + undefined8 uVar2; + long lVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + undefined1 auVar12 [16]; + + cVar1 = FUN_00432400(param_1 + 0x68); + if (cVar1 == '\0') { + uVar4 = 0; + uVar5 = 0; + uVar6 = 0; + uVar7 = 0; + uVar8 = 0; + uVar9 = 0; + uVar10 = 0; + uVar11 = 0; + uVar2 = 0xffffffffffffffff; + } + else { + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar3 = *(long *)(param_1 + 0xb0); + if (*(long *)(param_1 + 0x10) != *(long *)(param_1 + 8)) { + lVar3 = lVar3 + 1; + } + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + *(long *)(param_1 + 0xb0) = lVar3; + *(long *)(param_1 + 0x10) = lVar3; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(undefined1 *)(param_1 + 0xc0) = 0; + } + auVar12 = FUN_0041edb4(param_1,param_2,0,param_3); + uVar4 = auVar12._8_8_; + uVar2 = auVar12._0_8_; + uVar11 = uVar4 & 0xff; + uVar10 = uVar4 >> 8 & 0xff; + uVar9 = uVar4 >> 0x10 & 0xff; + uVar8 = uVar4 >> 0x18 & 0xff; + uVar7 = uVar4 >> 0x20 & 0xff; + uVar6 = uVar4 >> 0x28 & 0xff; + uVar5 = uVar4 >> 0x30 & 0xff; + uVar4 = uVar4 >> 0x38; + } + auVar12._8_8_ = + uVar11 | uVar10 << 8 | uVar9 << 0x10 | uVar8 << 0x18 | uVar7 << 0x20 | uVar6 << 0x28 | + uVar5 << 0x30 | uVar4 << 0x38; + auVar12._0_8_ = uVar2; + return auVar12; +} + + +================================================================== + +### FUNC 0041f3b4 (484 bytes) name=FUN_0041f3b4 + +void FUN_0041f3b4(long *param_1,undefined8 param_2) + +{ + void *__src; + size_t __n; + char cVar1; + int iVar2; + long *plVar3; + long lVar4; + size_t sVar5; + + cVar1 = FUN_003e076c(param_2); + if (cVar1 == '\0') { + /* try { // try from 0041f4f8 to 0051f4fb has its CatchHandler @ 0041f440 */ + plVar3 = (long *)0x0; + } + else { + plVar3 = (long *)FUN_003df0f8(param_2); + } + /* try { // try from 0041f3f0 to 0051f3f3 has its CatchHandler @ 0041f40c */ + cVar1 = FUN_00432400(param_1 + 0xd); + /* try { // try from 0041f3f8 to 0051f3fb has its CatchHandler @ 0041ef78 */ + if ((cVar1 == '\0') || + ((*(char *)((long)param_1 + 0xa9) == '\0' && (*(char *)((long)param_1 + 0xaa) == '\0')))) + goto LAB_0041f3fc; + /* try { // try from 0041f41c to 0051f41f has its CatchHandler @ 0041ef78 */ + /* catch() { ... } // from try @ 0041f0c0 with catch @ 0041f420 */ + if ((long *)param_1[0x19] == (long *)0x0) { +LAB_0041f594: + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + iVar2 = (**(code **)(*(long *)param_1[0x19] + 0x28))(); + /* try { // try from 0041f430 to 0051f433 has its CatchHandler @ 0041ef78 */ + if (iVar2 == -1) { +LAB_0041f49c: + param_1[0x19] = 0; + return; + } + if (*(char *)((long)param_1 + 0xa9) == '\0') { + if (*(char *)((long)param_1 + 0xaa) != '\0') { + cVar1 = FUN_0041e55c(param_1); + if (cVar1 == '\0') goto LAB_0041f49c; + lVar4 = param_1[0x13]; + param_1[1] = lVar4; + param_1[2] = lVar4; + param_1[3] = lVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + } + } + else { + /* catch() { ... } // from try @ 0041f4f8 with catch @ 0041f440 + catch() { ... } // from try @ 0041f808 with catch @ 0041f440 + catch() { ... } // from try @ 0041f930 with catch @ 0041f440 + catch() { ... } // from try @ 0041f9a0 with catch @ 0041f440 + catch() { ... } // from try @ 0041fa3c with catch @ 0041f440 + catch() { ... } // from try @ 0041faa4 with catch @ 0041f440 + catch() { ... } // from try @ 0041fc4c with catch @ 0041f440 + catch() { ... } // from try @ 0041fc60 with catch @ 0041f440 */ + if ((long *)param_1[0x19] == (long *)0x0) goto LAB_0041f594; + cVar1 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + if (cVar1 == '\0') { + lVar4 = param_1[0x1a]; + iVar2 = (**(code **)(*(long *)param_1[0x19] + 0x38)) + ((long *)param_1[0x19],(long)param_1 + 0x8c,lVar4,param_1[0x1c], + param_1[2] - param_1[1]); + __src = (void *)(lVar4 + iVar2); + param_1[0x1c] = (long)__src; + __n = param_1[0x1d] - (long)__src; + sVar5 = 0; + if (__n != 0) { + memmove((void *)param_1[0x1a],__src,__n); + sVar5 = __n; + } + lVar4 = param_1[0x13]; + param_1[0x1c] = param_1[0x1a]; + param_1[0x1d] = param_1[0x1a] + sVar5; + param_1[1] = lVar4; + param_1[2] = lVar4; + param_1[3] = lVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined8 *)((long)param_1 + 0x84) = *(undefined8 *)((long)param_1 + 0x7c); + *(undefined8 *)((long)param_1 + 0x8c) = *(undefined8 *)((long)param_1 + 0x7c); + } + else if (((plVar3 != (long *)0x0) && + (cVar1 = (**(code **)(*plVar3 + 0x30))(plVar3), cVar1 == '\0')) && + (lVar4 = (**(code **)(*param_1 + 0x20))(param_1,0,1,(int)param_1[0xf]), lVar4 == -1)) + goto LAB_0041f49c; + } +LAB_0041f3fc: + param_1[0x19] = (long)plVar3; + /* catch() { ... } // from try @ 0041f3f0 with catch @ 0041f40c */ + return; +} + + +================================================================== + +### FUNC 0041f598 (128 bytes) name=FUN_0041f598 + +void FUN_0041f598(long param_1,long param_2) + +{ + long lVar1; + + if (((*(uint *)(param_1 + 0x78) >> 3 & 1) == 0) || (param_2 < 1)) { + lVar1 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar1; + *(long *)(param_1 + 0x10) = lVar1; + /* try { // try from 0041f610 to 0051f77b has its CatchHandler @ 0041fc1c */ + *(long *)(param_1 + 0x18) = lVar1; + } + else { + lVar1 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar1; + *(long *)(param_1 + 0x10) = lVar1; + *(long *)(param_1 + 0x18) = lVar1 + param_2; + } + if (((param_2 == 0) && ((*(uint *)(param_1 + 0x78) & 0x11) != 0)) && + (1 < *(ulong *)(param_1 + 0xa0))) { + *(long *)(param_1 + 0x28) = lVar1; + *(long *)(param_1 + 0x20) = lVar1; + *(ulong *)(param_1 + 0x30) = lVar1 + (*(ulong *)(param_1 + 0xa0) - 1); + return; + } + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + return; +} + + +================================================================== + +### FUNC 0041f618 (132 bytes) name=FUN_0041f618 + +void FUN_0041f618(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + FUN_0041e124(param_1 + 2); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 2); + return; +} + + +================================================================== + +### FUNC 0041f6f4 (164 bytes) name=FUN_0041f6f4 + +void FUN_0041f6f4(undefined8 *param_1) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 0x20; + FUN_003d347c(puVar1); + param_1[0x3b] = 0; + *(undefined1 *)(param_1 + 0x3c) = 0; + *(undefined1 *)((long)param_1 + 0x1e1) = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + *param_1 = &DAT_004fed78; + param_1[1] = 0; + param_1[0x20] = &DAT_004feda0; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f9048; + param_1[0x20] = &PTR_FUN_004f9070; + FUN_0041e124(param_1 + 2); + FUN_003d2728(puVar1,param_1 + 2); + return; +} + + +================================================================== + +### FUNC 0041f7f8 (236 bytes) name=FUN_0041f7f8 + +void FUN_0041f7f8(long *param_1,long *param_2,undefined8 param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + /* try { // try from 0041f808 to 0051f80b has its CatchHandler @ 0041f440 */ + plVar1 = param_1 + 2; + lVar2 = param_2[1]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_0041e124(plVar1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_0041ebf8(plVar1,param_3,param_4 | 8); + if (lVar2 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0041f93c (268 bytes) name=FUN_0041f93c + +void FUN_0041f93c(long *param_1,undefined8 param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x20; + FUN_003d347c(plVar1); + param_1[0x3b] = 0; + *(undefined1 *)(param_1 + 0x3c) = 0; + *(undefined1 *)((long)param_1 + 0x1e1) = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + *param_1 = (long)&DAT_004fed78; + /* try { // try from 0041f998 to 0051f99b has its CatchHandler @ 0041fc64 */ + /* try { // try from 0041f9a0 to 0051f9f3 has its CatchHandler @ 0041f440 */ + param_1[1] = 0; + param_1[0x20] = (long)&DAT_004feda0; + FUN_003d2728(plVar1,0); + plVar2 = param_1 + 2; + *param_1 = (long)&PTR_FUN_004f9048; + param_1[0x20] = (long)&PTR_FUN_004f9070; + FUN_0041e124(plVar2); + FUN_003d2728(plVar1,plVar2); + lVar3 = FUN_0041ebf8(plVar2,param_2,param_3 | 8); + if (lVar3 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 4); + /* try { // try from 0041fa34 to 0051fa37 has its CatchHandler @ 0041fc50 */ + /* try { // try from 0041fa3c to 0051fa6f has its CatchHandler @ 0041f440 */ + return; +} + + +================================================================== + +### FUNC 0041faa8 (236 bytes) name=FUN_0041faa8 + +void FUN_0041faa8(long *param_1,long *param_2,undefined8 *param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + plVar1 = param_1 + 2; + lVar2 = param_2[1]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_0041e124(plVar1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_0041ebf8(plVar1,*param_3,param_4 | 8); + if (lVar2 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0041fbec (268 bytes) name=FUN_0041fbec + +void FUN_0041fbec(long *param_1,undefined8 *param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x20; + FUN_003d347c(plVar1); + param_1[0x3b] = 0; + /* catch() { ... } // from try @ 0041f610 with catch @ 0041fc1c + catch() { ... } // from try @ 0041f920 with catch @ 0041fc1c */ + *(undefined1 *)(param_1 + 0x3c) = 0; + *(undefined1 *)((long)param_1 + 0x1e1) = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + /* catch() { ... } // from try @ 0041fa9c with catch @ 0041fc3c */ + param_1[0x3f] = 0; + param_1[0x40] = 0; + *param_1 = (long)&DAT_004fed78; + /* try { // try from 0041fc4c to 0051fc4f has its CatchHandler @ 0041f440 */ + /* catch() { ... } // from try @ 0041fa34 with catch @ 0041fc50 */ + param_1[1] = 0; + param_1[0x20] = (long)&DAT_004feda0; + FUN_003d2728(plVar1,0); + /* try { // try from 0041fc60 to 0051fc63 has its CatchHandler @ 0041f440 */ + plVar2 = param_1 + 2; + /* catch() { ... } // from try @ 0041f998 with catch @ 0041fc64 */ + *param_1 = (long)&PTR_FUN_004f9048; + /* catch() { ... } // from try @ 0041f7b4 with catch @ 0041fc74 + catch() { ... } // from try @ 0041f914 with catch @ 0041fc74 */ + param_1[0x20] = (long)&PTR_FUN_004f9070; + FUN_0041e124(plVar2); + FUN_003d2728(plVar1,plVar2); + lVar3 = FUN_0041ebf8(plVar2,*param_2,param_3 | 8); + if (lVar3 != 0) { + /* catch() { ... } // from try @ 0041fcec with catch @ 0041fcb0 + catch() { ... } // from try @ 0041fd30 with catch @ 0041fcb0 + catch() { ... } // from try @ 0041ff14 with catch @ 0041fcb0 */ + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 4); + /* try { // try from 0041fcec to 0051fcef has its CatchHandler @ 0041fcb0 */ + return; +} + + +================================================================== + +### FUNC 0041fd58 (128 bytes) name=FUN_0041fd58 + +void FUN_0041fd58(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[2] = (long)&PTR_FUN_004fecf0; + FUN_0041e6c8(param_1 + 2); + FUN_00432214(param_1 + 0xf); + param_1[2] = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 9); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + return; +} + + +================================================================== + +### FUNC 0041fdd8 (8 bytes) name=FUN_0041fdd8 + +long FUN_0041fdd8(long param_1) + +{ + return param_1 + 0x10; +} + + +================================================================== + +### FUNC 0041fde0 (8 bytes) name=FUN_0041fde0 + +void FUN_0041fde0(long param_1) + +{ + FUN_00432400(param_1 + 0x78); + return; +} + + +================================================================== + +### FUNC 0041fde8 (8 bytes) name=FUN_0041fde8 + +void FUN_0041fde8(long param_1) + +{ + FUN_00432400(param_1 + 0x78); + return; +} + + +================================================================== + +### FUNC 0041fdf0 (96 bytes) name=FUN_0041fdf0 + +void FUN_0041fdf0(long *param_1,undefined8 param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_0041ebf8(param_1 + 2,param_2,param_3 | 8); + if (lVar1 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0041fe50 (100 bytes) name=FUN_0041fe50 + +void FUN_0041fe50(long *param_1,undefined8 *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_0041ebf8(param_1 + 2,*param_2,param_3 | 8); + if (lVar1 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0041feb4 (76 bytes) name=FUN_0041feb4 + +void FUN_0041feb4(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_0041e6c8(param_1 + 2); + if (lVar1 != 0) { + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0041ff00 (124 bytes) name=FUN_0041ff00 + +void FUN_0041ff00(long *param_1,long *param_2) + +{ + long lVar1; + + /* catch() { ... } // from try @ 0041fd28 with catch @ 0041ff04 */ + /* try { // try from 0041ff14 to 0051ff17 has its CatchHandler @ 0041fcb0 */ + /* catch() { ... } // from try @ 0041ff84 with catch @ 0041ff18 + catch() { ... } // from try @ 0041ffd8 with catch @ 0041ff18 + catch() { ... } // from try @ 0042011c with catch @ 0041ff18 + catch() { ... } // from try @ 004201ec with catch @ 0041ff18 + catch() { ... } // from try @ 00420200 with catch @ 0041ff18 */ + lVar1 = param_2[1]; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[2]; + FUN_003d2728((long)param_1 + lVar1,0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + FUN_0041e124(param_1 + 1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 1); + return; +} + + +================================================================== + +### FUNC 0041ffd4 (160 bytes) name=FUN_0041ffd4 + +void FUN_0041ffd4(undefined8 *param_1) + +{ + undefined8 *puVar1; + + /* try { // try from 0041ffd8 to 0052001f has its CatchHandler @ 0041ff18 */ + puVar1 = param_1 + 0x1f; + FUN_003d347c(puVar1); + param_1[0x3a] = 0; + *(undefined1 *)(param_1 + 0x3b) = 0; + *(undefined1 *)((long)param_1 + 0x1d9) = 0; + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + *param_1 = &DAT_004fedc8; + param_1[0x1f] = &DAT_004fedf0; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f90b8; + param_1[0x1f] = &PTR_FUN_004f90e0; + FUN_0041e124(param_1 + 1); + FUN_003d2728(puVar1,param_1 + 1); + return; +} + + +================================================================== + +### FUNC 004200d4 (228 bytes) name=FUN_004200d4 + +void FUN_004200d4(long *param_1,long *param_2,undefined8 param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + plVar1 = param_1 + 1; + lVar2 = param_2[1]; + *param_1 = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2) = param_2[2]; + FUN_003d2728((long)param_1 + lVar2,0); + /* try { // try from 0042011c to 0052016f has its CatchHandler @ 0041ff18 */ + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_0041e124(plVar1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_0041ebf8(plVar1,param_3,param_4 | 0x10); + if (lVar2 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 4); + /* try { // try from 004201b4 to 005201b7 has its CatchHandler @ 004201c8 */ + return; +} + + +================================================================== + +### FUNC 00420210 (264 bytes) name=FUN_00420210 + +void FUN_00420210(long *param_1,undefined8 param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + /* catch() { ... } // from try @ 00420350 with catch @ 00420210 + catch() { ... } // from try @ 00420550 with catch @ 00420210 + catch() { ... } // from try @ 004205e8 with catch @ 00420210 + catch() { ... } // from try @ 00420620 with catch @ 00420210 + catch() { ... } // from try @ 00420694 with catch @ 00420210 + catch() { ... } // from try @ 004206b0 with catch @ 00420210 */ + plVar1 = param_1 + 0x1f; + FUN_003d347c(plVar1); + param_1[0x3a] = 0; + *(undefined1 *)(param_1 + 0x3b) = 0; + *(undefined1 *)((long)param_1 + 0x1d9) = 0; + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + *param_1 = (long)&DAT_004fedc8; + param_1[0x1f] = (long)&DAT_004fedf0; + FUN_003d2728(plVar1,0); + plVar2 = param_1 + 1; + *param_1 = (long)&PTR_FUN_004f90b8; + param_1[0x1f] = (long)&PTR_FUN_004f90e0; + FUN_0041e124(plVar2); + FUN_003d2728(plVar1,plVar2); + lVar3 = FUN_0041ebf8(plVar2,param_2,param_3 | 0x10); + if (lVar3 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00420378 (228 bytes) name=FUN_00420378 + +void FUN_00420378(long *param_1,long *param_2,undefined8 *param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + plVar1 = param_1 + 1; + /* try { // try from 00420394 to 00520397 has its CatchHandler @ 00420698 */ + lVar2 = param_2[1]; + *param_1 = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + /* try { // try from 004203b4 to 005203b7 has its CatchHandler @ 00420654 */ + *(long *)((long)param_1 + lVar2) = param_2[2]; + FUN_003d2728((long)param_1 + lVar2,0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_0041e124(plVar1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_0041ebf8(plVar1,*param_3,param_4 | 0x10); + if (lVar2 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + /* try { // try from 00420428 to 0052042b has its CatchHandler @ 00420698 */ + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004204b4 (264 bytes) name=FUN_004204b4 + +void FUN_004204b4(long *param_1,undefined8 *param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x1f; + FUN_003d347c(plVar1); + param_1[0x3a] = 0; + *(undefined1 *)(param_1 + 0x3b) = 0; + *(undefined1 *)((long)param_1 + 0x1d9) = 0; + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + *param_1 = (long)&DAT_004fedc8; + param_1[0x1f] = (long)&DAT_004fedf0; + FUN_003d2728(plVar1,0); + plVar2 = param_1 + 1; + *param_1 = (long)&PTR_FUN_004f90b8; + param_1[0x1f] = (long)&PTR_FUN_004f90e0; + FUN_0041e124(plVar2); + FUN_003d2728(plVar1,plVar2); + /* try { // try from 00420550 to 005205a3 has its CatchHandler @ 00420210 */ + lVar3 = FUN_0041ebf8(plVar2,*param_2,param_3 | 0x10); + if (lVar3 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0042061c (128 bytes) name=FUN_0042061c + +void FUN_0042061c(long *param_1,long *param_2) + +{ + long lVar1; + + /* try { // try from 00420620 to 00520623 has its CatchHandler @ 00420210 */ + /* try { // try from 0042062c to 00520643 has its CatchHandler @ 00420698 */ + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = (long)&PTR_FUN_004fecf0; + /* catch() { ... } // from try @ 004203b4 with catch @ 00420654 */ + FUN_0041e6c8(param_1 + 1); + FUN_00432214(param_1 + 0xe); + param_1[1] = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 8); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + /* try { // try from 00420694 to 00520697 has its CatchHandler @ 00420210 */ + /* catch() { ... } // from try @ 00420394 with catch @ 00420698 + catch() { ... } // from try @ 00420428 with catch @ 00420698 + catch() { ... } // from try @ 004205c4 with catch @ 00420698 + catch() { ... } // from try @ 0042062c with catch @ 00420698 */ + return; +} + + +================================================================== + +### FUNC 0042069c (8 bytes) name=FUN_0042069c + +long FUN_0042069c(long param_1) + +{ + /* catch() { ... } // from try @ 00420618 with catch @ 004206a0 */ + return param_1 + 8; +} + + +================================================================== + +### FUNC 004206a4 (8 bytes) name=FUN_004206a4 + +void FUN_004206a4(long param_1) + +{ + FUN_00432400(param_1 + 0x70); + return; +} + + +================================================================== + +### FUNC 004206ac (8 bytes) name=FUN_004206ac + +void FUN_004206ac(long param_1) + +{ + /* try { // try from 004206b0 to 005206b3 has its CatchHandler @ 00420210 */ + FUN_00432400(param_1 + 0x70); + return; +} + + +================================================================== + +### FUNC 004206b4 (96 bytes) name=FUN_004206b4 + +void FUN_004206b4(long *param_1,undefined8 param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_0041ebf8(param_1 + 1,param_2,param_3 | 0x10); + if (lVar1 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00420714 (100 bytes) name=FUN_00420714 + +void FUN_00420714(long *param_1,undefined8 *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_0041ebf8(param_1 + 1,*param_2,param_3 | 0x10); + if (lVar1 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00420778 (76 bytes) name=FUN_00420778 + +void FUN_00420778(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_0041e6c8(param_1 + 1); + if (lVar1 != 0) { + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004207c4 (204 bytes) name=FUN_004207c4 + +void FUN_004207c4(long *param_1,long *param_2) + +{ + long lVar1; + + /* catch() { ... } // from try @ 00420808 with catch @ 004207cc + catch() { ... } // from try @ 004208b4 with catch @ 004207cc + catch() { ... } // from try @ 004208cc with catch @ 004207cc */ + lVar1 = param_2[2]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = param_2[4]; + /* try { // try from 00420808 to 0052087f has its CatchHandler @ 004207cc */ + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[5]; + FUN_003d2728((long)param_1 + lVar1 + 0x10,0); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + FUN_0041e124(param_1 + 3); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 3); + return; +} + + +================================================================== + +### FUNC 004208fc (212 bytes) name=FUN_004208fc + +void FUN_004208fc(undefined8 *param_1) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 0x21; + FUN_003d347c(puVar1); + param_1[0x3c] = 0; + *(undefined1 *)(param_1 + 0x3d) = 0; + *(undefined1 *)((long)param_1 + 0x1e9) = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + *param_1 = &DAT_004fee68; + /* try { // try from 00420950 to 00520953 has its CatchHandler @ 004209e8 */ + param_1[1] = 0; + param_1[0x21] = &DAT_004fee90; + FUN_003d2728(puVar1,0); + param_1[2] = &DAT_004fee18; + param_1[0x21] = &DAT_004fee40; + FUN_003d2728(puVar1,0); + *param_1 = &PTR_FUN_004f9158; + param_1[0x21] = &PTR_FUN_004f91a8; + param_1[2] = &PTR_FUN_004f9180; + FUN_0041e124(param_1 + 3); + FUN_003d2728(puVar1,param_1 + 3); + /* try { // try from 004209c4 to 005209e3 has its CatchHandler @ 004208d0 */ + return; +} + + +================================================================== + +### FUNC 00420a4c (308 bytes) name=FUN_00420a4c + +void FUN_00420a4c(long *param_1,long *param_2,undefined8 param_3,undefined4 param_4) + +{ + long *plVar1; + long lVar2; + + lVar2 = param_2[2]; + *param_1 = lVar2; + /* try { // try from 00420a78 to 00520a7b has its CatchHandler @ 00420a10 */ + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar2 + -0x18),0); + /* try { // try from 00420a98 to 00520a9b has its CatchHandler @ 004210f0 */ + lVar2 = param_2[4]; + /* try { // try from 00420aa0 to 00520ad3 has its CatchHandler @ 00420a10 */ + param_1[2] = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2 + 0x10) = param_2[5]; + FUN_003d2728((long)param_1 + lVar2 + 0x10,0); + lVar2 = param_2[1]; + plVar1 = param_1 + 3; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar2 = *param_2; + *param_1 = lVar2; + /* try { // try from 00420af0 to 00520af3 has its CatchHandler @ 00421104 */ + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[8]; + /* try { // try from 00420af8 to 00520b7f has its CatchHandler @ 00420a10 */ + param_1[2] = param_2[9]; + FUN_0041e124(plVar1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_0041ebf8(plVar1,param_3,param_4); + if (lVar2 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00420bec (316 bytes) name=FUN_00420bec + +void FUN_00420bec(long *param_1,undefined8 param_2,undefined4 param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x21; + FUN_003d347c(plVar1); + param_1[0x3c] = 0; + *(undefined1 *)(param_1 + 0x3d) = 0; + *(undefined1 *)((long)param_1 + 0x1e9) = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + *param_1 = (long)&DAT_004fee68; + param_1[1] = 0; + param_1[0x21] = (long)&DAT_004fee90; + FUN_003d2728(plVar1,0); + param_1[2] = (long)&DAT_004fee18; + param_1[0x21] = (long)&DAT_004fee40; + FUN_003d2728(plVar1,0); + plVar2 = param_1 + 3; + *param_1 = (long)&PTR_FUN_004f9158; + param_1[0x21] = (long)&PTR_FUN_004f91a8; + param_1[2] = (long)&PTR_FUN_004f9180; + FUN_0041e124(plVar2); + FUN_003d2728(plVar1,plVar2); + lVar3 = FUN_0041ebf8(plVar2,param_2,param_3); + if (lVar3 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00420da0 (308 bytes) name=FUN_00420da0 + +void FUN_00420da0(long *param_1,long *param_2,undefined8 *param_3,undefined4 param_4) + +{ + long *plVar1; + long lVar2; + + lVar2 = param_2[2]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d2728((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = param_2[4]; + param_1[2] = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2 + 0x10) = param_2[5]; + /* try { // try from 00420e0c to 00520e0f has its CatchHandler @ 004210cc */ + FUN_003d2728((long)param_1 + lVar2 + 0x10,0); + lVar2 = param_2[1]; + plVar1 = param_1 + 3; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar2 = *param_2; + /* try { // try from 00420e38 to 00520e3b has its CatchHandler @ 00420a10 */ + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + FUN_0041e124(plVar1); + FUN_003d2728((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_0041ebf8(plVar1,*param_3,param_4); + if (lVar2 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00420f40 (316 bytes) name=FUN_00420f40 + +void FUN_00420f40(long *param_1,undefined8 *param_2,undefined4 param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x21; + FUN_003d347c(plVar1); + param_1[0x3c] = 0; + *(undefined1 *)(param_1 + 0x3d) = 0; + *(undefined1 *)((long)param_1 + 0x1e9) = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + *param_1 = (long)&DAT_004fee68; + param_1[1] = 0; + param_1[0x21] = (long)&DAT_004fee90; + FUN_003d2728(plVar1,0); + param_1[2] = (long)&DAT_004fee18; + param_1[0x21] = (long)&DAT_004fee40; + FUN_003d2728(plVar1,0); + plVar2 = param_1 + 3; + *param_1 = (long)&PTR_FUN_004f9158; + param_1[0x21] = (long)&PTR_FUN_004f91a8; + /* try { // try from 00420ff8 to 00520ffb has its CatchHandler @ 00420a10 */ + param_1[2] = (long)&PTR_FUN_004f9180; + FUN_0041e124(plVar2); + FUN_003d2728(plVar1,plVar2); + lVar3 = FUN_0041ebf8(plVar2,*param_2,param_3); + if (lVar3 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + /* try { // try from 00421044 to 00521047 has its CatchHandler @ 004210a8 */ + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 00421058 to 0052105b has its CatchHandler @ 00420a10 */ + FUN_003d2254(lVar3,*(uint *)(lVar3 + 0x20) | 4); + /* try { // try from 0042106c to 0052106f has its CatchHandler @ 004210a8 */ + return; +} + + +================================================================== + +### FUNC 004210f4 (188 bytes) name=FUN_004210f4 + +void FUN_004210f4(long *param_1,long *param_2) + +{ + long lVar1; + + /* try { // try from 00421100 to 00521103 has its CatchHandler @ 00420a10 */ + /* catch() { ... } // from try @ 00420af0 with catch @ 00421104 */ + lVar1 = *param_2; + *param_1 = lVar1; + /* try { // try from 00421114 to 00521117 has its CatchHandler @ 00420a10 */ + /* catch() { ... } // from try @ 00420b9c with catch @ 00421118 */ + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + param_1[3] = (long)&PTR_FUN_004fecf0; + FUN_0041e6c8(param_1 + 3); + FUN_00432214(param_1 + 0x10); + /* catch() { ... } // from try @ 004211dc with catch @ 00421150 + catch() { ... } // from try @ 00421220 with catch @ 00421150 + catch() { ... } // from try @ 00421880 with catch @ 00421150 + catch() { ... } // from try @ 004218cc with catch @ 00421150 + catch() { ... } // from try @ 00422008 with catch @ 00421150 + catch() { ... } // from try @ 0042205c with catch @ 00421150 + catch() { ... } // from try @ 00422698 with catch @ 00421150 + catch() { ... } // from try @ 00422764 with catch @ 00421150 + catch() { ... } // from try @ 00422964 with catch @ 00421150 + catch() { ... } // from try @ 0042299c with catch @ 00421150 + catch() { ... } // from try @ 004229f4 with catch @ 00421150 + catch() { ... } // from try @ 00422ab4 with catch @ 00421150 */ + param_1[3] = (long)(PTR_DAT_00501bb0 + 0x10); + FUN_003ed708(param_1 + 10); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar1 = param_2[4]; + param_1[2] = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18) + 0x10) = param_2[5]; + lVar1 = param_2[2]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + return; +} + + +================================================================== + +### FUNC 004211b0 (8 bytes) name=FUN_004211b0 + +long FUN_004211b0(long param_1) + +{ + return param_1 + 0x18; +} + + +================================================================== + +### FUNC 004211b8 (8 bytes) name=FUN_004211b8 + +void FUN_004211b8(long param_1) + +{ + FUN_00432400(param_1 + 0x80); + return; +} + + +================================================================== + +### FUNC 004211c0 (8 bytes) name=FUN_004211c0 + +void FUN_004211c0(long param_1) + +{ + FUN_00432400(param_1 + 0x80); + return; +} + + +================================================================== + +### FUNC 004211c8 (92 bytes) name=FUN_004211c8 + +void FUN_004211c8(long *param_1) + +{ + long lVar1; + + /* try { // try from 004211dc to 005211df has its CatchHandler @ 00421150 */ + lVar1 = FUN_0041ebf8(param_1 + 3); + if (lVar1 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 00421218 to 0052121b has its CatchHandler @ 00422a3c */ + /* try { // try from 00421220 to 00521223 has its CatchHandler @ 00421150 */ + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00421224 (96 bytes) name=FUN_00421224 + +void FUN_00421224(long *param_1,undefined8 *param_2) + +{ + long lVar1; + + lVar1 = FUN_0041ebf8(param_1 + 3,*param_2); + if (lVar1 != 0) { + FUN_003d2254((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00421284 (76 bytes) name=FUN_00421284 + +void FUN_00421284(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_0041e6c8(param_1 + 3); + if (lVar1 != 0) { + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2254(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004212d0 (56 bytes) name=FUN_004212d0 + +void FUN_004212d0(long param_1) + +{ + undefined8 uVar1; + + if (*(char *)(param_1 + 0xc0) == '\0') { + uVar1 = *(undefined8 *)(param_1 + 0x10); + *(long *)(param_1 + 8) = param_1 + 0xac; + *(long *)(param_1 + 0x10) = param_1 + 0xac; + *(undefined8 *)(param_1 + 0xb0) = uVar1; + *(undefined8 *)(param_1 + 0xb8) = *(undefined8 *)(param_1 + 0x18); + *(long *)(param_1 + 0x18) = param_1 + 0xb0; + *(undefined1 *)(param_1 + 0xc0) = 1; + } + return; +} + + +================================================================== + +### FUNC 00421308 (64 bytes) name=FUN_00421308 + +void FUN_00421308(long param_1) + +{ + long lVar1; + + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar1 = *(long *)(param_1 + 8); + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + lVar1 = *(long *)(param_1 + 0xb0) + (ulong)(*(long *)(param_1 + 0x10) != lVar1) * 4; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(long *)(param_1 + 0xb0) = lVar1; + *(long *)(param_1 + 0x10) = lVar1; + *(undefined1 *)(param_1 + 0xc0) = 0; + } + return; +} + + +================================================================== + +### FUNC 00421348 (348 bytes) name=FUN_00421348 + +void FUN_00421348(long *param_1) + +{ + long *plVar1; + undefined *puVar2; + char cVar3; + long lVar4; + + plVar1 = param_1 + 7; + puVar2 = PTR_DAT_00501c78 + 0x10; + param_1[1] = 0; + *param_1 = (long)puVar2; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + FUN_003ef168(plVar1); + *param_1 = (long)&PTR_FUN_004fef30; + param_1[8] = 0; + param_1[9] = 0; + param_1[0xc] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + FUN_00432208(param_1 + 0xd,param_1 + 8); + *(undefined4 *)(param_1 + 0xf) = 0; + *(undefined1 *)((long)param_1 + 0x7c) = 0; + param_1[0x14] = 0x400; + *(undefined1 *)((long)param_1 + 0x7d) = 0; + *(undefined1 *)((long)param_1 + 0x7e) = 0; + *(undefined1 *)((long)param_1 + 0x7f) = 0; + *(undefined1 *)(param_1 + 0x10) = 0; + *(undefined1 *)((long)param_1 + 0x81) = 0; + *(undefined1 *)((long)param_1 + 0x82) = 0; + *(undefined1 *)((long)param_1 + 0x83) = 0; + *(undefined1 *)((long)param_1 + 0x84) = 0; + *(undefined1 *)((long)param_1 + 0x85) = 0; + *(undefined1 *)((long)param_1 + 0x86) = 0; + *(undefined1 *)((long)param_1 + 0x87) = 0; + *(undefined1 *)(param_1 + 0x11) = 0; + *(undefined1 *)((long)param_1 + 0x89) = 0; + *(undefined1 *)((long)param_1 + 0x8a) = 0; + *(undefined1 *)((long)param_1 + 0x8b) = 0; + *(undefined1 *)((long)param_1 + 0x8c) = 0; + *(undefined1 *)((long)param_1 + 0x8d) = 0; + *(undefined1 *)((long)param_1 + 0x8e) = 0; + *(undefined1 *)((long)param_1 + 0x8f) = 0; + *(undefined1 *)(param_1 + 0x12) = 0; + *(undefined1 *)((long)param_1 + 0x91) = 0; + *(undefined1 *)((long)param_1 + 0x92) = 0; + *(undefined1 *)((long)param_1 + 0x93) = 0; + param_1[0x13] = 0; + *(undefined1 *)(param_1 + 0x15) = 0; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + *(undefined4 *)((long)param_1 + 0xac) = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + *(undefined1 *)(param_1 + 0x18) = 0; + param_1[0x19] = 0; + param_1[0x1a] = 0; + param_1[0x1b] = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + cVar3 = FUN_0040301c(plVar1); + if (cVar3 == '\0') { + return; + } + lVar4 = FUN_004016dc(plVar1); + param_1[0x19] = lVar4; + return; +} + + +================================================================== + +### FUNC 004214cc (8 bytes) name=FUN_004214cc + +void FUN_004214cc(long param_1) + +{ + FUN_00432400(param_1 + 0x68); + return; +} + + +================================================================== + +### FUNC 004214d4 (92 bytes) name=FUN_004214d4 + +void FUN_004214d4(long param_1) + +{ + ulong uVar1; + void *pvVar2; + + if ((*(char *)(param_1 + 0xa8) == '\0') && (*(long *)(param_1 + 0x98) == 0)) { + uVar1 = *(ulong *)(param_1 + 0xa0) << 2; + if (0x1fc0000000000000 < *(ulong *)(param_1 + 0xa0)) { + uVar1 = 0xffffffffffffffff; + } + pvVar2 = operator_new__(uVar1); + *(void **)(param_1 + 0x98) = pvVar2; + *(undefined1 *)(param_1 + 0xa8) = 1; + return; + } + return; +} + + +================================================================== + +### FUNC 00421530 (84 bytes) name=FUN_00421530 + +void FUN_00421530(long param_1) + +{ + if (*(char *)(param_1 + 0xa8) != '\0') { + if (*(void **)(param_1 + 0x98) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x98)); + } + *(undefined8 *)(param_1 + 0x98) = 0; + *(undefined1 *)(param_1 + 0xa8) = 0; + } + if (*(void **)(param_1 + 0xd0) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0xd0)); + } + *(undefined8 *)(param_1 + 0xd0) = 0; + *(undefined8 *)(param_1 + 0xd8) = 0; + *(undefined8 *)(param_1 + 0xe0) = 0; + *(undefined8 *)(param_1 + 0xe8) = 0; + return; +} + + +================================================================== + +### FUNC 00421584 (388 bytes) name=FUN_00421584 + +bool FUN_00421584(long param_1,long param_2,long param_3) + +{ + long lVar1; + long lVar2; + char cVar3; + int iVar4; + uint uVar5; + long lVar6; + long local_10; + undefined8 local_8; + + if (*(long **)(param_1 + 200) == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + cVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(); + if (cVar3 == '\0') { + iVar4 = (**(code **)(**(long **)(param_1 + 200) + 0x40))(*(long **)(param_1 + 200)); + lVar1 = -(iVar4 * param_3 + 0x1eU & 0xfffffffffffffff0); + uVar5 = (**(code **)(**(long **)(param_1 + 200) + 0x10)) + (*(long **)(param_1 + 200),param_1 + 0x84,param_2,param_2 + param_3 * 4, + &local_8,&stack0xffffffffffffff90 + lVar1, + &stack0xffffffffffffff90 + iVar4 * param_3 + lVar1,&local_10); + lVar2 = local_10; + if (uVar5 < 2) { + param_3 = local_10 - (long)(&stack0xffffffffffffff90 + lVar1); + lVar6 = FUN_00432544(param_1 + 0x68,&stack0xffffffffffffff90 + lVar1,param_3); + /* try { // try from 004216a0 to 0052179f has its CatchHandler @ 00422a88 */ + if ((param_3 == lVar6) && ((uVar5 & 1) != 0)) { + iVar4 = (**(code **)(**(long **)(param_1 + 200) + 0x10)) + (*(long **)(param_1 + 200),param_1 + 0x84,local_8, + *(undefined8 *)(param_1 + 0x28),&local_8,&stack0xffffffffffffff90 + lVar1 + ,lVar2,&local_10); + if (iVar4 == 2) goto LAB_004216f8; + param_3 = local_10 - (long)(&stack0xffffffffffffff90 + lVar1); + lVar6 = FUN_00432544(param_1 + 0x68,&stack0xffffffffffffff90 + lVar1,param_3); + } + goto LAB_00421654; + } + if (uVar5 != 3) { +LAB_004216f8: + /* WARNING: Subroutine does not return */ + FUN_0040f928("basic_filebuf::_M_convert_to_external conversion error"); + } + } + lVar6 = FUN_00432544(param_1 + 0x68,param_2,param_3); +LAB_00421654: + return lVar6 == param_3; +} + + +================================================================== + +### FUNC 00421708 (152 bytes) name=FUN_00421708 + +ulong FUN_00421708(long param_1,undefined8 param_2) + +{ + char cVar1; + int iVar2; + + cVar1 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(*(long **)(param_1 + 200)); + if (cVar1 != '\0') { + return (ulong)(*(long *)(param_1 + 0x10) - *(long *)(param_1 + 0x18)) >> 2; + } + iVar2 = (**(code **)(**(long **)(param_1 + 200) + 0x38)) + (*(long **)(param_1 + 200),param_2,*(undefined8 *)(param_1 + 0xd0), + *(undefined8 *)(param_1 + 0xe0), + *(long *)(param_1 + 0x10) - *(long *)(param_1 + 8) >> 2); + return (ulong)(uint)(((int)*(undefined8 *)(param_1 + 0xd0) + iVar2) - + (int)*(undefined8 *)(param_1 + 0xe8)); +} + + +================================================================== + +### FUNC 004217a0 (364 bytes) name=FUN_004217a0 + +bool FUN_004217a0(long *param_1) + +{ + bool bVar1; + byte bVar2; + uint uVar3; + int iVar4; + long lVar5; + long lVar6; + long local_88; + undefined1 auStack_80 [128]; + + bVar1 = true; + if ((ulong)param_1[4] < (ulong)param_1[5]) { + iVar4 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + bVar1 = iVar4 != -1; + } + if (*(char *)((long)param_1 + 0xaa) != '\0') { + if ((long *)param_1[0x19] == (long *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + /* try { // try from 004217e8 to 005217eb has its CatchHandler @ 00422a60 */ + bVar2 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + /* try { // try from 004217f0 to 0052180f has its CatchHandler @ 00422a88 */ + if (bVar2 < bVar1) { + lVar5 = 0; + while( true ) { + /* try { // try from 0042183c to 0052183f has its CatchHandler @ 00422a4c */ + /* try { // try from 00421844 to 00521847 has its CatchHandler @ 00422a88 */ + uVar3 = (**(code **)(*(long *)param_1[0x19] + 0x18)) + ((long *)param_1[0x19],(long)param_1 + 0x84,auStack_80,&stack0x00000000, + &local_88); + if (uVar3 == 2) { + /* try { // try from 004218cc to 005218cf has its CatchHandler @ 00421150 */ + return false; + } + if (uVar3 < 2) { + lVar6 = local_88 - (long)auStack_80; + if (lVar6 < 1) break; + lVar5 = FUN_00432544(param_1 + 0xd,auStack_80,lVar6); + /* try { // try from 004218c4 to 005218c7 has its CatchHandler @ 004229e4 */ + if (lVar6 != lVar5) { + return false; + } + } + if ((lVar5 < 1) || (uVar3 != 1)) break; + if (bVar1 == false) { + return false; + } + } + if (bVar1 == false) { + return false; + } + /* try { // try from 00421880 to 00521883 has its CatchHandler @ 00421150 */ + iVar4 = (**(code **)(*param_1 + 0x68))(param_1,0xffffffff); + return iVar4 != -1; + } + } + return bVar1; +} + + +================================================================== + +### FUNC 0042190c (272 bytes) name=FUN_0042190c + +undefined1 [16] FUN_0042190c(long param_1,undefined8 param_2,undefined8 param_3,ulong param_4) + +{ + char cVar1; + long lVar2; + undefined8 uVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + undefined1 auVar12 [16]; + + cVar1 = FUN_004217a0(); + if (cVar1 == '\0') { + uVar4 = 0; + uVar5 = 0; + uVar6 = 0; + uVar7 = 0; + uVar8 = 0; + uVar9 = 0; + uVar10 = 0; + uVar11 = 0; + lVar2 = -1; + } + else { + lVar2 = FUN_00432660(param_1 + 0x68,param_2,param_3); + if (lVar2 == -1) { + uVar4 = 0; + uVar5 = 0; + uVar6 = 0; + uVar7 = 0; + uVar8 = 0; + uVar9 = 0; + uVar10 = 0; + uVar11 = 0; + } + else { + uVar3 = *(undefined8 *)(param_1 + 0x98); + uVar11 = param_4 & 0xff; + uVar10 = param_4 >> 8 & 0xff; + *(undefined8 *)(param_1 + 0xe8) = *(undefined8 *)(param_1 + 0xd0); + uVar9 = param_4 >> 0x10 & 0xff; + *(undefined8 *)(param_1 + 0xe0) = *(undefined8 *)(param_1 + 0xd0); + uVar8 = param_4 >> 0x18 & 0xff; + *(undefined1 *)(param_1 + 0xa9) = 0; + uVar7 = param_4 >> 0x20 & 0xff; + *(undefined1 *)(param_1 + 0xaa) = 0; + uVar6 = param_4 >> 0x28 & 0xff; + *(undefined8 *)(param_1 + 8) = uVar3; + uVar5 = param_4 >> 0x30 & 0xff; + *(undefined8 *)(param_1 + 0x10) = uVar3; + uVar4 = param_4 >> 0x38; + *(undefined8 *)(param_1 + 0x18) = uVar3; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(ulong *)(param_1 + 0x84) = param_4; + } + } + auVar12._8_8_ = + uVar11 | uVar10 << 8 | uVar9 << 0x10 | uVar8 << 0x18 | uVar7 << 0x20 | uVar6 << 0x28 | + uVar5 << 0x30 | uVar4 << 0x38; + auVar12._0_8_ = lVar2; + return auVar12; +} + + +================================================================== + +### FUNC 00421a1c (524 bytes) name=FUN_00421a1c + +int FUN_00421a1c(long param_1,int param_2) + +{ + bool bVar1; + char cVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + int *piVar6; + int *piVar7; + int *piVar8; + int local_4; + + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + return -1; + } + if (*(char *)(param_1 + 0xa9) != '\0') { + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar4 = *(long *)(param_1 + 8); + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + lVar4 = *(long *)(param_1 + 0xb0) + (ulong)(*(long *)(param_1 + 0x10) != lVar4) * 4; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(long *)(param_1 + 0xb0) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(undefined1 *)(param_1 + 0xc0) = 0; + } + iVar3 = FUN_00421708(param_1,param_1 + 0x8c); + lVar4 = FUN_0042190c(param_1,(long)iVar3,1,*(undefined8 *)(param_1 + 0x8c)); + if (lVar4 == -1) { + return -1; + } + } + piVar6 = *(int **)(param_1 + 0x20); + bVar1 = param_2 == -1; + piVar7 = *(int **)(param_1 + 0x28); + if (piVar7 <= piVar6) { + if (*(ulong *)(param_1 + 0xa0) < 2) { + if (bVar1) { + param_2 = 0; + } + else { + local_4 = param_2; + cVar2 = FUN_00421584(param_1,&local_4,1); + if (cVar2 == '\0') { + return -1; + } + } + *(undefined1 *)(param_1 + 0xaa) = 1; + return param_2; + } + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + uVar5 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 8) = uVar5; + *(undefined8 *)(param_1 + 0x10) = uVar5; + *(undefined8 *)(param_1 + 0x18) = uVar5; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + } + else { + lVar4 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(long *)(param_1 + 0x18) = lVar4; + *(long *)(param_1 + 0x28) = lVar4; + *(long *)(param_1 + 0x20) = lVar4; + *(ulong *)(param_1 + 0x30) = lVar4 + *(ulong *)(param_1 + 0xa0) * 4 + -4; + } + *(undefined1 *)(param_1 + 0xaa) = 1; + if (bVar1) { + return 0; + } + piVar6 = *(int **)(param_1 + 0x28); + *piVar6 = param_2; + *(int **)(param_1 + 0x28) = piVar6 + 1; + return param_2; + } + piVar8 = piVar7; + if (!bVar1) { + piVar8 = piVar7 + 1; + *piVar7 = param_2; + *(int **)(param_1 + 0x28) = piVar8; + } + cVar2 = FUN_00421584(param_1,piVar6,(long)piVar8 - (long)piVar6 >> 2); + if (cVar2 == '\0') { + return -1; + } + if ((*(uint *)(param_1 + 0x78) & 0x11) == 0) { + uVar5 = *(undefined8 *)(param_1 + 0x98); + *(undefined8 *)(param_1 + 8) = uVar5; + *(undefined8 *)(param_1 + 0x10) = uVar5; + /* try { // try from 00421c14 to 00521c17 has its CatchHandler @ 004229a0 */ + *(undefined8 *)(param_1 + 0x18) = uVar5; + } + else { + lVar4 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(long *)(param_1 + 0x18) = lVar4; + if (1 < *(ulong *)(param_1 + 0xa0)) { + *(long *)(param_1 + 0x28) = lVar4; + *(long *)(param_1 + 0x20) = lVar4; + *(ulong *)(param_1 + 0x30) = lVar4 + *(ulong *)(param_1 + 0xa0) * 4 + -4; + goto LAB_00421b84; + } + } + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; +LAB_00421b84: + /* try { // try from 00421b84 to 00521ba3 has its CatchHandler @ 004229c0 */ + if (bVar1) { + param_2 = 0; + } + return param_2; +} + + +================================================================== + +### FUNC 00421c28 (480 bytes) name=FUN_00421c28 + +undefined1 [16] FUN_00421c28(long param_1,long param_2,int param_3) + +{ + byte bVar1; + char cVar2; + int iVar3; + long lVar4; + long lVar5; + bool bVar6; + long lVar7; + undefined8 uVar8; + undefined1 auVar9 [16]; + undefined8 local_8; + + if (*(long **)(param_1 + 200) == (long *)0x0) { +LAB_00421c74: + bVar6 = true; + lVar5 = 0; + } + else { + iVar3 = (**(code **)(**(long **)(param_1 + 200) + 0x28))(); + lVar5 = (long)iVar3; + if (iVar3 < 0) goto LAB_00421c74; + bVar6 = iVar3 < 1; + } + lVar7 = -1; + bVar1 = FUN_00432400(param_1 + 0x68); + uVar8 = 0; + if (bVar1 <= (byte)(bVar6 & param_2 != 0)) goto LAB_00421d08; + if (((param_2 != 0) || (param_3 != 1)) || + ((*(char *)(param_1 + 0xaa) != '\0' && + (cVar2 = (**(code **)(**(long **)(param_1 + 200) + 0x30))(*(long **)(param_1 + 200)), + cVar2 == '\0')))) { + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar4 = *(long *)(param_1 + 8); + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + lVar4 = *(long *)(param_1 + 0xb0) + (ulong)(*(long *)(param_1 + 0x10) != lVar4) * 4; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(long *)(param_1 + 0xb0) = lVar4; + *(long *)(param_1 + 0x10) = lVar4; + *(undefined1 *)(param_1 + 0xc0) = 0; + } + local_8 = *(undefined8 *)(param_1 + 0x7c); + lVar5 = lVar5 * param_2; + if ((param_3 != 1) || (*(char *)(param_1 + 0xa9) == '\0')) goto LAB_00421d64; + bVar6 = false; +LAB_00421ddc: + local_8 = *(undefined8 *)(param_1 + 0x8c); + iVar3 = FUN_00421708(param_1); + lVar5 = lVar5 + iVar3; + if (!bVar6) { +LAB_00421d64: + auVar9 = FUN_0042190c(param_1,lVar5,param_3,local_8); + return auVar9; + } + } + else { + local_8 = *(undefined8 *)(param_1 + 0x7c); + if (*(char *)(param_1 + 0xa9) != '\0') { + bVar6 = true; + lVar5 = 0; + goto LAB_00421ddc; + } + lVar5 = 0; + } + if (*(char *)(param_1 + 0xaa) != '\0') { + lVar5 = *(long *)(param_1 + 0x28) - *(long *)(param_1 + 0x20) >> 2; + } + lVar4 = FUN_00432660(param_1 + 0x68,0,1); + if (lVar4 != -1) { + lVar7 = lVar4 + lVar5; + uVar8 = local_8; + } +LAB_00421d08: + auVar9._8_8_ = uVar8; + auVar9._0_8_ = lVar7; + return auVar9; +} + + +================================================================== + +### FUNC 00421e08 (244 bytes) name=FUN_00421e08 + +undefined1 [16] FUN_00421e08(long param_1,undefined8 param_2,undefined8 param_3) + +{ + char cVar1; + undefined8 uVar2; + long lVar3; + ulong uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + undefined1 auVar12 [16]; + + cVar1 = FUN_00432400(param_1 + 0x68); + if (cVar1 == '\0') { + uVar4 = 0; + uVar5 = 0; + uVar6 = 0; + uVar7 = 0; + uVar8 = 0; + uVar9 = 0; + uVar10 = 0; + uVar11 = 0; + uVar2 = 0xffffffffffffffff; + } + else { + if (*(char *)(param_1 + 0xc0) != '\0') { + lVar3 = *(long *)(param_1 + 8); + *(undefined8 *)(param_1 + 8) = *(undefined8 *)(param_1 + 0x98); + lVar3 = *(long *)(param_1 + 0xb0) + (ulong)(*(long *)(param_1 + 0x10) != lVar3) * 4; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0xb8); + *(long *)(param_1 + 0xb0) = lVar3; + *(long *)(param_1 + 0x10) = lVar3; + *(undefined1 *)(param_1 + 0xc0) = 0; + } + auVar12 = FUN_0042190c(param_1,param_2,0,param_3); + uVar4 = auVar12._8_8_; + uVar2 = auVar12._0_8_; + uVar11 = uVar4 & 0xff; + uVar10 = uVar4 >> 8 & 0xff; + uVar9 = uVar4 >> 0x10 & 0xff; + uVar8 = uVar4 >> 0x18 & 0xff; + uVar7 = uVar4 >> 0x20 & 0xff; + uVar6 = uVar4 >> 0x28 & 0xff; + uVar5 = uVar4 >> 0x30 & 0xff; + uVar4 = uVar4 >> 0x38; + } + auVar12._8_8_ = + uVar11 | uVar10 << 8 | uVar9 << 0x10 | uVar8 << 0x18 | uVar7 << 0x20 | uVar6 << 0x28 | + uVar5 << 0x30 | uVar4 << 0x38; + auVar12._0_8_ = uVar2; + return auVar12; +} + + +================================================================== + +### FUNC 00421efc (488 bytes) name=FUN_00421efc + +void FUN_00421efc(long *param_1,undefined8 param_2) + +{ + void *__src; + size_t __n; + char cVar1; + int iVar2; + long *plVar3; + long lVar4; + size_t sVar5; + + /* try { // try from 00421f10 to 00521f13 has its CatchHandler @ 004229f8 */ + cVar1 = FUN_0040301c(param_2); + if (cVar1 == '\0') { + plVar3 = (long *)0x0; + } + else { + plVar3 = (long *)FUN_004016dc(param_2); + } + cVar1 = FUN_00432400(param_1 + 0xd); + if ((cVar1 == '\0') || + ((*(char *)((long)param_1 + 0xa9) == '\0' && (*(char *)((long)param_1 + 0xaa) == '\0')))) + goto LAB_00421f44; + if ((long *)param_1[0x19] == (long *)0x0) { +LAB_004220e0: + /* WARNING: Subroutine does not return */ + FUN_0040f118(); + } + iVar2 = (**(code **)(*(long *)param_1[0x19] + 0x28))(); + if (iVar2 == -1) { +LAB_00421fe4: + param_1[0x19] = 0; + return; + } + /* try { // try from 00421f84 to 00521f87 has its CatchHandler @ 00422a88 */ + if (*(char *)((long)param_1 + 0xa9) == '\0') { + /* try { // try from 00422008 to 0052200b has its CatchHandler @ 00421150 */ + if (*(char *)((long)param_1 + 0xaa) != '\0') { + cVar1 = FUN_004217a0(param_1); + if (cVar1 == '\0') goto LAB_00421fe4; + lVar4 = param_1[0x13]; + param_1[1] = lVar4; + param_1[2] = lVar4; + param_1[3] = lVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + } + } + else { + if ((long *)param_1[0x19] == (long *)0x0) goto LAB_004220e0; + cVar1 = (**(code **)(*(long *)param_1[0x19] + 0x30))(); + if (cVar1 == '\0') { + /* try { // try from 00422054 to 00522057 has its CatchHandler @ 00422aa4 */ + /* try { // try from 0042205c to 0052215b has its CatchHandler @ 00421150 */ + lVar4 = param_1[0x1a]; + iVar2 = (**(code **)(*(long *)param_1[0x19] + 0x38)) + ((long *)param_1[0x19],(long)param_1 + 0x8c,lVar4,param_1[0x1c], + param_1[2] - param_1[1] >> 2); + __src = (void *)(lVar4 + iVar2); + param_1[0x1c] = (long)__src; + __n = param_1[0x1d] - (long)__src; + sVar5 = 0; + if (__n != 0) { + memmove((void *)param_1[0x1a],__src,__n); + sVar5 = __n; + } + lVar4 = param_1[0x13]; + param_1[0x1c] = param_1[0x1a]; + param_1[0x1d] = param_1[0x1a] + sVar5; + param_1[1] = lVar4; + param_1[2] = lVar4; + param_1[3] = lVar4; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined8 *)((long)param_1 + 0x84) = *(undefined8 *)((long)param_1 + 0x7c); + *(undefined8 *)((long)param_1 + 0x8c) = *(undefined8 *)((long)param_1 + 0x7c); + } + else if (((plVar3 != (long *)0x0) && + (cVar1 = (**(code **)(*plVar3 + 0x30))(plVar3), cVar1 == '\0')) && + (lVar4 = (**(code **)(*param_1 + 0x20))(param_1,0,1,(int)param_1[0xf]), lVar4 == -1)) + goto LAB_00421fe4; + } +LAB_00421f44: + param_1[0x19] = (long)plVar3; + return; +} + + +================================================================== + +### FUNC 004220e4 (128 bytes) name=FUN_004220e4 + +void FUN_004220e4(long param_1,long param_2) + +{ + long lVar1; + + if (((*(uint *)(param_1 + 0x78) >> 3 & 1) == 0) || (param_2 < 1)) { + lVar1 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar1; + *(long *)(param_1 + 0x10) = lVar1; + *(long *)(param_1 + 0x18) = lVar1; + } + else { + lVar1 = *(long *)(param_1 + 0x98); + *(long *)(param_1 + 8) = lVar1; + *(long *)(param_1 + 0x10) = lVar1; + *(long *)(param_1 + 0x18) = lVar1 + param_2 * 4; + } + if (((param_2 == 0) && ((*(uint *)(param_1 + 0x78) & 0x11) != 0)) && + (1 < *(ulong *)(param_1 + 0xa0))) { + *(long *)(param_1 + 0x28) = lVar1; + *(long *)(param_1 + 0x20) = lVar1; + *(ulong *)(param_1 + 0x30) = lVar1 + *(ulong *)(param_1 + 0xa0) * 4 + -4; + return; + } + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + return; +} + + +================================================================== + +### FUNC 00422164 (8 bytes) name=FUN_00422164 + +long FUN_00422164(long param_1) + +{ + return param_1 + 0x10; +} + + +================================================================== + +### FUNC 0042216c (8 bytes) name=FUN_0042216c + +void FUN_0042216c(long param_1) + +{ + FUN_00432400(param_1 + 0x78); + return; +} + + +================================================================== + +### FUNC 00422174 (8 bytes) name=FUN_00422174 + +void FUN_00422174(long param_1) + +{ + FUN_00432400(param_1 + 0x78); + return; +} + + +================================================================== + +### FUNC 0042217c (8 bytes) name=FUN_0042217c + +long FUN_0042217c(long param_1) + +{ + return param_1 + 8; +} + + +================================================================== + +### FUNC 00422184 (8 bytes) name=FUN_00422184 + +void FUN_00422184(long param_1) + +{ + FUN_00432400(param_1 + 0x70); + return; +} + + +================================================================== + +### FUNC 0042218c (8 bytes) name=FUN_0042218c + +void FUN_0042218c(long param_1) + +{ + FUN_00432400(param_1 + 0x70); + return; +} + + +================================================================== + +### FUNC 00422194 (8 bytes) name=FUN_00422194 + +long FUN_00422194(long param_1) + +{ + return param_1 + 0x18; +} + + +================================================================== + +### FUNC 0042219c (8 bytes) name=FUN_0042219c + +void FUN_0042219c(long param_1) + +{ + FUN_00432400(param_1 + 0x80); + return; +} + + +================================================================== + +### FUNC 004221a4 (8 bytes) name=FUN_004221a4 + +void FUN_004221a4(long param_1) + +{ + FUN_00432400(param_1 + 0x80); + return; +} + + +================================================================== + +### FUNC 004221ac (156 bytes) name=FUN_004221ac + +void FUN_004221ac(long *param_1) + +{ + long lVar1; + undefined8 uVar2; + long lVar3; + + lVar3 = *param_1; + *(undefined4 *)(lVar3 + 0x78) = 0; + *(undefined1 *)(lVar3 + 0xc0) = 0; + if (*(char *)(lVar3 + 0xa8) != '\0') { + if (*(void **)(lVar3 + 0x98) != (void *)0x0) { + operator_delete__(*(void **)(lVar3 + 0x98)); + } + *(undefined8 *)(lVar3 + 0x98) = 0; + *(undefined1 *)(lVar3 + 0xa8) = 0; + } + if (*(void **)(lVar3 + 0xd0) != (void *)0x0) { + operator_delete__(*(void **)(lVar3 + 0xd0)); + } + lVar1 = *param_1; + *(undefined8 *)(lVar3 + 0xd0) = 0; + *(undefined8 *)(lVar3 + 0xd8) = 0; + *(undefined8 *)(lVar3 + 0xe0) = 0; + *(undefined8 *)(lVar3 + 0xe8) = 0; + /* try { // try from 00422208 to 0052220b has its CatchHandler @ 004229a0 */ + *(undefined8 *)(lVar1 + 0x84) = *(undefined8 *)(lVar1 + 0x7c); + uVar2 = *(undefined8 *)(lVar1 + 0x98); + lVar3 = *param_1; + *(undefined1 *)(lVar1 + 0xa9) = 0; + *(undefined1 *)(lVar1 + 0xaa) = 0; + *(undefined8 *)(lVar1 + 8) = uVar2; + *(undefined8 *)(lVar1 + 0x10) = uVar2; + *(undefined8 *)(lVar1 + 0x18) = uVar2; + *(undefined8 *)(lVar1 + 0x28) = 0; + *(undefined8 *)(lVar1 + 0x20) = 0; + *(undefined8 *)(lVar1 + 0x30) = 0; + *(undefined8 *)(lVar3 + 0x8c) = *(undefined8 *)(lVar3 + 0x84); + return; +} + + +================================================================== + +### FUNC 00422248 (240 bytes) name=FUN_00422248 + +long FUN_00422248(long param_1) + +{ + char cVar1; + long lVar2; + undefined8 uVar3; + + cVar1 = FUN_00432400(param_1 + 0x68); + if (cVar1 != '\0') { + cVar1 = FUN_004217a0(param_1); + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined1 *)(param_1 + 0xc0) = 0; + if (*(char *)(param_1 + 0xa8) != '\0') { + if (*(void **)(param_1 + 0x98) != (void *)0x0) { + /* try { // try from 00422314 to 00522317 has its CatchHandler @ 00422928 */ + operator_delete__(*(void **)(param_1 + 0x98)); + } + *(undefined8 *)(param_1 + 0x98) = 0; + *(undefined1 *)(param_1 + 0xa8) = 0; + } + if (*(void **)(param_1 + 0xd0) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0xd0)); + } + *(undefined8 *)(param_1 + 0xd0) = 0; + *(undefined8 *)(param_1 + 0xd8) = 0; + *(undefined8 *)(param_1 + 0xe0) = 0; + *(undefined8 *)(param_1 + 0xe8) = 0; + uVar3 = *(undefined8 *)(param_1 + 0x98); + *(undefined1 *)(param_1 + 0xa9) = 0; + *(undefined1 *)(param_1 + 0xaa) = 0; + *(undefined8 *)(param_1 + 8) = uVar3; + *(undefined8 *)(param_1 + 0x10) = uVar3; + *(undefined8 *)(param_1 + 0x18) = uVar3; + *(undefined8 *)(param_1 + 0x28) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x84) = *(undefined8 *)(param_1 + 0x7c); + *(undefined8 *)(param_1 + 0x8c) = *(undefined8 *)(param_1 + 0x7c); + lVar2 = FUN_00432440(param_1 + 0x68); + if ((lVar2 != 0) && (cVar1 == '\x01')) { + return param_1; + } + } + return 0; +} + + +================================================================== + +### FUNC 00422388 (76 bytes) name=FUN_00422388 + +void FUN_00422388(long *param_1) + +{ + /* try { // try from 00422388 to 0052238b has its CatchHandler @ 00422a80 */ + /* try { // try from 004223a4 to 005223a7 has its CatchHandler @ 004229a0 */ + *param_1 = (long)&PTR_FUN_004fef30; + FUN_00422248(); + FUN_00432214(param_1 + 0xd); + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + return; +} + + +================================================================== + +### FUNC 004223d4 (84 bytes) name=FUN_004223d4 + +void FUN_004223d4(long *param_1) + +{ + *param_1 = (long)&PTR_FUN_004fef30; + FUN_00422248(); + /* try { // try from 004223f8 to 005223fb has its CatchHandler @ 00422a70 */ + FUN_00432214(param_1 + 0xd); + /* try { // try from 00422400 to 00522403 has its CatchHandler @ 004229a0 */ + *param_1 = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 7); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00422428 (132 bytes) name=FUN_00422428 + +void FUN_00422428(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + FUN_00421348(param_1 + 2); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 2); + /* try { // try from 004224a0 to 005224a3 has its CatchHandler @ 004229c0 */ + return; +} + + +================================================================== + +### FUNC 00422504 (164 bytes) name=FUN_00422504 + +void FUN_00422504(undefined8 *param_1) + +{ + undefined8 *puVar1; + + /* try { // try from 00422508 to 0052250b has its CatchHandler @ 00422a90 */ + /* try { // try from 00422510 to 005225d3 has its CatchHandler @ 00422a88 */ + puVar1 = param_1 + 0x20; + FUN_003d347c(puVar1); + param_1[0x3b] = 0; + *(undefined4 *)(param_1 + 0x3c) = 0; + *(undefined1 *)((long)param_1 + 0x1e4) = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + *param_1 = &DAT_004fefb8; + param_1[1] = 0; + param_1[0x20] = &LAB_004fefe0; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f91f8; + param_1[0x20] = &PTR_FUN_004f9220; + FUN_00421348(param_1 + 2); + FUN_003d3008(puVar1,param_1 + 2); + return; +} + + +================================================================== + +### FUNC 00422608 (128 bytes) name=FUN_00422608 + +void FUN_00422608(long *param_1,long *param_2) + +{ + long lVar1; + + /* try { // try from 00422610 to 00522613 has its CatchHandler @ 004229c0 */ + lVar1 = *param_2; + /* try { // try from 00422624 to 00522627 has its CatchHandler @ 004229f8 */ + *param_1 = lVar1; + /* try { // try from 00422630 to 00522633 has its CatchHandler @ 00422a88 */ + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[2] = (long)&PTR_FUN_004fef30; + FUN_00422248(param_1 + 2); + FUN_00432214(param_1 + 0xf); + param_1[2] = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 9); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + return; +} + + +================================================================== + +### FUNC 00422688 (128 bytes) name=FUN_00422688 + +void FUN_00422688(undefined8 *param_1) + +{ + /* try { // try from 00422698 to 0052269b has its CatchHandler @ 00421150 */ + /* try { // try from 004226a8 to 005226ab has its CatchHandler @ 00422978 */ + *param_1 = &PTR_FUN_004f91f8; + param_1[2] = &PTR_FUN_004fef30; + param_1[0x20] = &PTR_FUN_004f9220; + FUN_00422248(param_1 + 2); + FUN_00432214(param_1 + 0xf); + param_1[2] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0x20] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0x20); + return; +} + + +================================================================== + +### FUNC 00422708 (16 bytes) name=FUN_00422708 + +void FUN_00422708(long *param_1) + +{ + FUN_00422688((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00422718 (136 bytes) name=FUN_00422718 + +void FUN_00422718(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f91f8; + param_1[2] = &PTR_FUN_004fef30; + param_1[0x20] = &PTR_FUN_004f9220; + FUN_00422248(param_1 + 2); + FUN_00432214(param_1 + 0xf); + /* try { // try from 00422764 to 005227b7 has its CatchHandler @ 00421150 */ + param_1[2] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 9); + param_1[0x20] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0x20); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 004227a0 (16 bytes) name=FUN_004227a0 + +void FUN_004227a0(long *param_1) + +{ + FUN_00422718((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 004227b0 (124 bytes) name=FUN_004227b0 + +void FUN_004227b0(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = param_2[1]; + *param_1 = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1) = param_2[2]; + FUN_003d3008((long)param_1 + lVar1,0); + lVar1 = *param_2; + *param_1 = lVar1; + /* try { // try from 004227f8 to 005227fb has its CatchHandler @ 004229a0 */ + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + FUN_00421348(param_1 + 1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 1); + return; +} + + +================================================================== + +### FUNC 00422884 (160 bytes) name=FUN_00422884 + +void FUN_00422884(undefined8 *param_1) + +{ + undefined8 *puVar1; + + puVar1 = param_1 + 0x1f; + FUN_003d347c(puVar1); + param_1[0x3a] = 0; + *(undefined4 *)(param_1 + 0x3b) = 0; + *(undefined1 *)((long)param_1 + 0x1dc) = 0; + /* try { // try from 004228b4 to 005228b7 has its CatchHandler @ 00422a80 */ + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + *param_1 = &DAT_004ff008; + param_1[0x1f] = &LAB_004ff030; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f9268; + param_1[0x1f] = &PTR_FUN_004f9290; + FUN_00421348(param_1 + 1); + /* try { // try from 00422908 to 0052290b has its CatchHandler @ 00422968 */ + /* try { // try from 00422910 to 00522913 has its CatchHandler @ 00422a80 */ + FUN_003d3008(puVar1,param_1 + 1); + return; +} + + +================================================================== + +### FUNC 00422984 (128 bytes) name=FUN_00422984 + +void FUN_00422984(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + /* try { // try from 0042299c to 0052299f has its CatchHandler @ 00421150 */ + /* catch() { ... } // from try @ 00421c14 with catch @ 004229a0 + catch() { ... } // from try @ 00422208 with catch @ 004229a0 + catch() { ... } // from try @ 004223a4 with catch @ 004229a0 + catch() { ... } // from try @ 00422400 with catch @ 004229a0 + catch() { ... } // from try @ 00422604 with catch @ 004229a0 + catch() { ... } // from try @ 004227f8 with catch @ 004229a0 + catch() { ... } // from try @ 0042284c with catch @ 004229a0 */ + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = (long)&PTR_FUN_004fef30; + FUN_00422248(param_1 + 1); + /* catch() { ... } // from try @ 00421b84 with catch @ 004229c0 + catch() { ... } // from try @ 004224a0 with catch @ 004229c0 + catch() { ... } // from try @ 00422610 with catch @ 004229c0 */ + FUN_00432214(param_1 + 0xe); + param_1[1] = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 8); + /* catch() { ... } // from try @ 004218c4 with catch @ 004229e4 */ + lVar1 = param_2[1]; + *param_1 = lVar1; + /* try { // try from 004229f4 to 005229f7 has its CatchHandler @ 00421150 */ + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[2]; + /* catch() { ... } // from try @ 00421f10 with catch @ 004229f8 + catch() { ... } // from try @ 00422624 with catch @ 004229f8 */ + return; +} + + +================================================================== + +### FUNC 00422a04 (128 bytes) name=FUN_00422a04 + +void FUN_00422a04(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f9268; + param_1[0x1f] = &PTR_FUN_004f9290; + /* catch() { ... } // from try @ 00421218 with catch @ 00422a3c */ + param_1[1] = &PTR_FUN_004fef30; + FUN_00422248(param_1 + 1); + FUN_00432214(param_1 + 0xe); + /* catch() { ... } // from try @ 0042183c with catch @ 00422a4c */ + param_1[1] = PTR_DAT_00501c78 + 0x10; + /* catch() { ... } // from try @ 004217e8 with catch @ 00422a60 */ + FUN_003ed708(param_1 + 8); + /* catch() { ... } // from try @ 004223f8 with catch @ 00422a70 */ + param_1[0x1f] = PTR_DAT_00501ea8 + 0x10; + /* catch() { ... } // from try @ 00422388 with catch @ 00422a80 + catch() { ... } // from try @ 00422860 with catch @ 00422a80 + catch() { ... } // from try @ 004228b4 with catch @ 00422a80 + catch() { ... } // from try @ 00422910 with catch @ 00422a80 */ + FUN_003d381c(param_1 + 0x1f); + return; +} + + +================================================================== + +### FUNC 00422a84 (16 bytes) name=FUN_00422a84 + +void FUN_00422a84(long *param_1) + +{ + /* catch() { ... } // from try @ 004216a0 with catch @ 00422a88 + catch() { ... } // from try @ 004217f0 with catch @ 00422a88 + catch() { ... } // from try @ 00421844 with catch @ 00422a88 + catch() { ... } // from try @ 00421f84 with catch @ 00422a88 + catch() { ... } // from try @ 004224c4 with catch @ 00422a88 + catch() { ... } // from try @ 00422510 with catch @ 00422a88 + catch() { ... } // from try @ 00422630 with catch @ 00422a88 */ + /* catch() { ... } // from try @ 00422508 with catch @ 00422a90 */ + FUN_00422a04((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00422a94 (136 bytes) name=FUN_00422a94 + +void FUN_00422a94(undefined8 *param_1) + +{ + /* catch() { ... } // from try @ 00422054 with catch @ 00422aa4 */ + /* try { // try from 00422ab4 to 00522ab7 has its CatchHandler @ 00421150 */ + /* catch() { ... } // from try @ 00422844 with catch @ 00422ab8 */ + *param_1 = &PTR_FUN_004f9268; + param_1[0x1f] = &PTR_FUN_004f9290; + param_1[1] = &PTR_FUN_004fef30; + FUN_00422248(param_1 + 1); + FUN_00432214(param_1 + 0xe); + param_1[1] = PTR_DAT_00501c78 + 0x10; + /* catch() { ... } // from try @ 00422be0 with catch @ 00422af0 + catch() { ... } // from try @ 00422c24 with catch @ 00422af0 + catch() { ... } // from try @ 00422c74 with catch @ 00422af0 */ + FUN_003ed708(param_1 + 8); + param_1[0x1f] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0x1f); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00422b1c (16 bytes) name=FUN_00422b1c + +void FUN_00422b1c(long *param_1) + +{ + FUN_00422a94((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00422b2c (204 bytes) name=FUN_00422b2c + +void FUN_00422b2c(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = param_2[2]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar1 + -0x18),0); + lVar1 = param_2[4]; + param_1[2] = lVar1; + lVar1 = *(long *)(lVar1 + -0x18); + *(long *)((long)param_1 + lVar1 + 0x10) = param_2[5]; + FUN_003d3008((long)param_1 + lVar1 + 0x10,0); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + FUN_00421348(param_1 + 3); + /* try { // try from 00422be0 to 00522be3 has its CatchHandler @ 00422af0 */ + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),param_1 + 3); + return; +} + + +================================================================== + +### FUNC 00422c64 (212 bytes) name=FUN_00422c64 + +void FUN_00422c64(undefined8 *param_1) + +{ + undefined8 *puVar1; + + /* catch() { ... } // from try @ 00422c1c with catch @ 00422c64 */ + puVar1 = param_1 + 0x21; + /* try { // try from 00422c74 to 00522c77 has its CatchHandler @ 00422af0 */ + /* catch() { ... } // from try @ 00422ccc with catch @ 00422c78 + catch() { ... } // from try @ 00422d10 with catch @ 00422c78 + catch() { ... } // from try @ 00422e8c with catch @ 00422c78 */ + FUN_003d347c(puVar1); + param_1[0x3c] = 0; + *(undefined4 *)(param_1 + 0x3d) = 0; + *(undefined1 *)((long)param_1 + 0x1ec) = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + *param_1 = &DAT_004ff0a8; + param_1[1] = 0; + param_1[0x21] = &LAB_004ff0d0; + FUN_003d3008(puVar1,0); + /* try { // try from 00422ccc to 00522ccf has its CatchHandler @ 00422c78 */ + param_1[2] = &DAT_004ff058; + param_1[0x21] = &DAT_004ff080; + FUN_003d3008(puVar1,0); + *param_1 = &PTR_FUN_004f9308; + /* try { // try from 00422d08 to 00522d0b has its CatchHandler @ 00422e7c */ + param_1[0x21] = &PTR_FUN_004f9358; + /* try { // try from 00422d10 to 00522d4f has its CatchHandler @ 00422c78 */ + param_1[2] = &PTR_FUN_004f9330; + FUN_00421348(param_1 + 3); + FUN_003d3008(puVar1,param_1 + 3); + return; +} + + +================================================================== + +### FUNC 00422db4 (188 bytes) name=FUN_00422db4 + +void FUN_00422db4(long *param_1,long *param_2) + +{ + long lVar1; + + lVar1 = *param_2; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + param_1[3] = (long)&PTR_FUN_004fef30; + FUN_00422248(param_1 + 3); + FUN_00432214(param_1 + 0x10); + param_1[3] = (long)(PTR_DAT_00501c78 + 0x10); + FUN_003ed708(param_1 + 10); + lVar1 = param_2[1]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar1 = param_2[4]; + param_1[2] = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18) + 0x10) = param_2[5]; + lVar1 = param_2[2]; + *param_1 = lVar1; + *(long *)((long)param_1 + *(long *)(lVar1 + -0x18)) = param_2[3]; + return; +} + + +================================================================== + +### FUNC 00422e70 (140 bytes) name=FUN_00422e70 + +void FUN_00422e70(undefined8 *param_1) + +{ + /* catch() { ... } // from try @ 00422d08 with catch @ 00422e7c */ + /* try { // try from 00422e8c to 00522e8f has its CatchHandler @ 00422c78 */ + /* catch() { ... } // from try @ 00423134 with catch @ 00422e90 + catch() { ... } // from try @ 00423344 with catch @ 00422e90 */ + *param_1 = &PTR_FUN_004f9308; + param_1[2] = &PTR_FUN_004f9330; + param_1[0x21] = &PTR_FUN_004f9358; + param_1[3] = &PTR_FUN_004fef30; + FUN_00422248(param_1 + 3); + FUN_00432214(param_1 + 0x10); + param_1[3] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0x21] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0x21); + return; +} + + +================================================================== + +### FUNC 00422efc (8 bytes) name=FUN_00422efc + +void FUN_00422efc(long param_1) + +{ + FUN_00422e70(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 00422f04 (16 bytes) name=FUN_00422f04 + +void FUN_00422f04(long *param_1) + +{ + FUN_00422e70((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00422f14 (280 bytes) name=FUN_00422f14 + +long * FUN_00422f14(long *param_1,undefined8 param_2,uint param_3) + +{ + long *plVar1; + char cVar2; + void *pvVar3; + ulong uVar4; + long lVar5; + + plVar1 = param_1 + 0xd; + cVar2 = FUN_00432400(plVar1); + if (cVar2 == '\0') { + FUN_00432394(plVar1,param_2,param_3,0x1b4); + cVar2 = FUN_00432400(plVar1); + if (cVar2 != '\0') { + if ((char)param_1[0x15] == '\0') { + pvVar3 = (void *)param_1[0x13]; + if (pvVar3 == (void *)0x0) { + uVar4 = param_1[0x14] << 2; + if (0x1fc0000000000000 < (ulong)param_1[0x14]) { + uVar4 = 0xffffffffffffffff; + } + pvVar3 = operator_new__(uVar4); + param_1[0x13] = (long)pvVar3; + *(undefined1 *)(param_1 + 0x15) = 1; + } + } + else { + pvVar3 = (void *)param_1[0x13]; + } + *(uint *)(param_1 + 0xf) = param_3; + *(undefined1 *)((long)param_1 + 0xa9) = 0; + *(undefined1 *)((long)param_1 + 0xaa) = 0; + param_1[1] = (long)pvVar3; + param_1[2] = (long)pvVar3; + param_1[3] = (long)pvVar3; + param_1[5] = 0; + param_1[4] = 0; + param_1[6] = 0; + *(undefined8 *)((long)param_1 + 0x84) = *(undefined8 *)((long)param_1 + 0x7c); + *(undefined8 *)((long)param_1 + 0x8c) = *(undefined8 *)((long)param_1 + 0x7c); + /* try { // try from 00422fa4 to 00522fa7 has its CatchHandler @ 00423348 */ + /* try { // try from 00423000 to 00523003 has its CatchHandler @ 00423350 */ + /* try { // try from 00423008 to 005230bf has its CatchHandler @ 00423348 */ + if (((param_3 >> 1 & 1) == 0) || + (lVar5 = (**(code **)(*param_1 + 0x20))(param_1,0,2,param_3), lVar5 != -1)) { + return param_1; + } + FUN_00422248(param_1); + } + } + return (long *)0x0; +} + + +================================================================== + +### FUNC 0042302c (8 bytes) name=FUN_0042302c + +void FUN_0042302c(undefined8 param_1,undefined8 *param_2) + +{ + FUN_00422f14(param_1,*param_2); + return; +} + + +================================================================== + +### FUNC 00423034 (100 bytes) name=FUN_00423034 + +void FUN_00423034(long *param_1,undefined8 *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_00422f14(param_1 + 2,*param_2,param_3 | 8); + if (lVar1 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423098 (100 bytes) name=FUN_00423098 + +void FUN_00423098(long *param_1,undefined8 *param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_00422f14(param_1 + 1,*param_2,param_3 | 0x10); + if (lVar1 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 004230ec to 005230ef has its CatchHandler @ 00423380 */ + /* try { // try from 004230f4 to 005230f7 has its CatchHandler @ 00423348 */ + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004230fc (96 bytes) name=FUN_004230fc + +void FUN_004230fc(long *param_1,undefined8 *param_2) + +{ + long lVar1; + + lVar1 = FUN_00422f14(param_1 + 3,*param_2); + if (lVar1 != 0) { + /* try { // try from 00423134 to 00523137 has its CatchHandler @ 00422e90 */ + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0042315c (96 bytes) name=FUN_0042315c + +void FUN_0042315c(long *param_1,undefined8 param_2,uint param_3) + +{ + long lVar1; + + lVar1 = FUN_00422f14(param_1 + 2,param_2,param_3 | 8); + if (lVar1 != 0) { + /* try { // try from 00423184 to 00523187 has its CatchHandler @ 00423348 */ + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004231bc (96 bytes) name=FUN_004231bc + +void FUN_004231bc(long *param_1,undefined8 param_2,uint param_3) + +{ + long lVar1; + + /* try { // try from 004231c0 to 005231c3 has its CatchHandler @ 0042331c */ + /* try { // try from 004231c8 to 00523253 has its CatchHandler @ 00423348 */ + lVar1 = FUN_00422f14(param_1 + 1,param_2,param_3 | 0x10); + if (lVar1 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0042321c (92 bytes) name=FUN_0042321c + +void FUN_0042321c(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_00422f14(param_1 + 3); + if (lVar1 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423278 (236 bytes) name=FUN_00423278 + +void FUN_00423278(long *param_1,long *param_2,undefined8 *param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + plVar1 = param_1 + 2; + /* try { // try from 00423294 to 00523297 has its CatchHandler @ 00423370 */ + lVar2 = param_2[1]; + /* try { // try from 0042329c to 005232bb has its CatchHandler @ 00423348 */ + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_00421348(plVar1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_00422f14(plVar1,*param_3,param_4 | 8); + if (lVar2 != 0) { + /* try { // try from 0042330c to 0052330f has its CatchHandler @ 00423360 */ + /* try { // try from 00423314 to 00523317 has its CatchHandler @ 00423348 */ + /* catch() { ... } // from try @ 004231c0 with catch @ 0042331c */ + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* try { // try from 00423344 to 00523347 has its CatchHandler @ 00422e90 */ + /* catch() { ... } // from try @ 00422fa4 with catch @ 00423348 + catch() { ... } // from try @ 00423008 with catch @ 00423348 + catch() { ... } // from try @ 004230f4 with catch @ 00423348 + catch() { ... } // from try @ 00423184 with catch @ 00423348 + catch() { ... } // from try @ 004231c8 with catch @ 00423348 + catch() { ... } // from try @ 0042329c with catch @ 00423348 + catch() { ... } // from try @ 00423314 with catch @ 00423348 */ + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 4); + /* catch() { ... } // from try @ 00423000 with catch @ 00423350 */ + /* catch() { ... } // from try @ 0042330c with catch @ 00423360 */ + return; +} + + +================================================================== + +### FUNC 004233bc (268 bytes) name=FUN_004233bc + +void FUN_004233bc(long *param_1,undefined8 *param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x20; + FUN_003d347c(plVar1); + param_1[0x3b] = 0; + *(undefined4 *)(param_1 + 0x3c) = 0; + *(undefined1 *)((long)param_1 + 0x1e4) = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + *param_1 = (long)&DAT_004fefb8; + param_1[1] = 0; + param_1[0x20] = (long)&LAB_004fefe0; + FUN_003d3008(plVar1,0); + plVar2 = param_1 + 2; + *param_1 = (long)&PTR_FUN_004f91f8; + param_1[0x20] = (long)&PTR_FUN_004f9220; + FUN_00421348(plVar2); + FUN_003d3008(plVar1,plVar2); + lVar3 = FUN_00422f14(plVar2,*param_2,param_3 | 8); + if (lVar3 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + /* catch() { ... } // from try @ 00423500 with catch @ 004234ac + catch() { ... } // from try @ 00423528 with catch @ 004234ac + catch() { ... } // from try @ 004235c0 with catch @ 004234ac + catch() { ... } // from try @ 004245e0 with catch @ 004234ac + catch() { ... } // from try @ 004245f4 with catch @ 004234ac */ + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423528 (228 bytes) name=FUN_00423528 + +void FUN_00423528(long *param_1,long *param_2,undefined8 *param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + /* try { // try from 00423528 to 00523577 has its CatchHandler @ 004234ac */ + plVar1 = param_1 + 1; + lVar2 = param_2[1]; + *param_1 = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2) = param_2[2]; + FUN_003d3008((long)param_1 + lVar2,0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_00421348(plVar1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_00422f14(plVar1,*param_3,param_4 | 0x10); + if (lVar2 != 0) { + /* try { // try from 004235b8 to 005235bb has its CatchHandler @ 004245d0 */ + /* try { // try from 004235c0 to 00524333 has its CatchHandler @ 004234ac */ + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423664 (264 bytes) name=FUN_00423664 + +void FUN_00423664(long *param_1,undefined8 *param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x1f; + FUN_003d347c(plVar1); + param_1[0x3a] = 0; + *(undefined4 *)(param_1 + 0x3b) = 0; + *(undefined1 *)((long)param_1 + 0x1dc) = 0; + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + *param_1 = (long)&DAT_004ff008; + param_1[0x1f] = (long)&LAB_004ff030; + FUN_003d3008(plVar1,0); + plVar2 = param_1 + 1; + *param_1 = (long)&PTR_FUN_004f9268; + param_1[0x1f] = (long)&PTR_FUN_004f9290; + FUN_00421348(plVar2); + FUN_003d3008(plVar1,plVar2); + lVar3 = FUN_00422f14(plVar2,*param_2,param_3 | 0x10); + if (lVar3 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004237cc (308 bytes) name=FUN_004237cc + +void FUN_004237cc(long *param_1,long *param_2,undefined8 *param_3,undefined4 param_4) + +{ + long *plVar1; + long lVar2; + + lVar2 = param_2[2]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = param_2[4]; + param_1[2] = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2 + 0x10) = param_2[5]; + FUN_003d3008((long)param_1 + lVar2 + 0x10,0); + lVar2 = param_2[1]; + plVar1 = param_1 + 3; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + FUN_00421348(plVar1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_00422f14(plVar1,*param_3,param_4); + if (lVar2 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 0042396c (316 bytes) name=FUN_0042396c + +void FUN_0042396c(long *param_1,undefined8 *param_2,undefined4 param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x21; + FUN_003d347c(plVar1); + param_1[0x3c] = 0; + *(undefined4 *)(param_1 + 0x3d) = 0; + *(undefined1 *)((long)param_1 + 0x1ec) = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + *param_1 = (long)&DAT_004ff0a8; + param_1[1] = 0; + param_1[0x21] = (long)&LAB_004ff0d0; + FUN_003d3008(plVar1,0); + param_1[2] = (long)&DAT_004ff058; + param_1[0x21] = (long)&DAT_004ff080; + FUN_003d3008(plVar1,0); + plVar2 = param_1 + 3; + *param_1 = (long)&PTR_FUN_004f9308; + param_1[0x21] = (long)&PTR_FUN_004f9358; + param_1[2] = (long)&PTR_FUN_004f9330; + FUN_00421348(plVar2); + FUN_003d3008(plVar1,plVar2); + lVar3 = FUN_00422f14(plVar2,*param_2,param_3); + if (lVar3 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423b20 (236 bytes) name=FUN_00423b20 + +void FUN_00423b20(long *param_1,long *param_2,undefined8 param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + plVar1 = param_1 + 2; + lVar2 = param_2[1]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[2]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_00421348(plVar1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_00422f14(plVar1,param_3,param_4 | 8); + if (lVar2 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423c64 (268 bytes) name=FUN_00423c64 + +void FUN_00423c64(long *param_1,undefined8 param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x20; + FUN_003d347c(plVar1); + param_1[0x3b] = 0; + *(undefined4 *)(param_1 + 0x3c) = 0; + *(undefined1 *)((long)param_1 + 0x1e4) = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + *param_1 = (long)&DAT_004fefb8; + param_1[1] = 0; + param_1[0x20] = (long)&LAB_004fefe0; + FUN_003d3008(plVar1,0); + plVar2 = param_1 + 2; + *param_1 = (long)&PTR_FUN_004f91f8; + param_1[0x20] = (long)&PTR_FUN_004f9220; + FUN_00421348(plVar2); + FUN_003d3008(plVar1,plVar2); + lVar3 = FUN_00422f14(plVar2,param_2,param_3 | 8); + if (lVar3 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423dd0 (228 bytes) name=FUN_00423dd0 + +void FUN_00423dd0(long *param_1,long *param_2,undefined8 param_3,uint param_4) + +{ + long *plVar1; + long lVar2; + + plVar1 = param_1 + 1; + lVar2 = param_2[1]; + *param_1 = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2) = param_2[2]; + FUN_003d3008((long)param_1 + lVar2,0); + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + FUN_00421348(plVar1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_00422f14(plVar1,param_3,param_4 | 0x10); + if (lVar2 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00423f0c (264 bytes) name=FUN_00423f0c + +void FUN_00423f0c(long *param_1,undefined8 param_2,uint param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x1f; + FUN_003d347c(plVar1); + param_1[0x3a] = 0; + *(undefined4 *)(param_1 + 0x3b) = 0; + *(undefined1 *)((long)param_1 + 0x1dc) = 0; + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + *param_1 = (long)&DAT_004ff008; + param_1[0x1f] = (long)&LAB_004ff030; + FUN_003d3008(plVar1,0); + plVar2 = param_1 + 1; + *param_1 = (long)&PTR_FUN_004f9268; + param_1[0x1f] = (long)&PTR_FUN_004f9290; + FUN_00421348(plVar2); + FUN_003d3008(plVar1,plVar2); + lVar3 = FUN_00422f14(plVar2,param_2,param_3 | 0x10); + if (lVar3 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00424074 (308 bytes) name=FUN_00424074 + +void FUN_00424074(long *param_1,long *param_2,undefined8 param_3,undefined4 param_4) + +{ + long *plVar1; + long lVar2; + + lVar2 = param_2[2]; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[3]; + param_1[1] = 0; + FUN_003d3008((long)param_1 + *(long *)(lVar2 + -0x18),0); + lVar2 = param_2[4]; + param_1[2] = lVar2; + lVar2 = *(long *)(lVar2 + -0x18); + *(long *)((long)param_1 + lVar2 + 0x10) = param_2[5]; + FUN_003d3008((long)param_1 + lVar2 + 0x10,0); + lVar2 = param_2[1]; + plVar1 = param_1 + 3; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[6]; + param_1[2] = param_2[7]; + lVar2 = *param_2; + *param_1 = lVar2; + *(long *)((long)param_1 + *(long *)(lVar2 + -0x18)) = param_2[8]; + param_1[2] = param_2[9]; + FUN_00421348(plVar1); + FUN_003d3008((long)param_1 + *(long *)(*param_1 + -0x18),plVar1); + lVar2 = FUN_00422f14(plVar1,param_3,param_4); + if (lVar2 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar2 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar2,*(uint *)(lVar2 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00424214 (316 bytes) name=FUN_00424214 + +void FUN_00424214(long *param_1,undefined8 param_2,undefined4 param_3) + +{ + long *plVar1; + long *plVar2; + long lVar3; + + plVar1 = param_1 + 0x21; + FUN_003d347c(plVar1); + param_1[0x3c] = 0; + *(undefined4 *)(param_1 + 0x3d) = 0; + *(undefined1 *)((long)param_1 + 0x1ec) = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + *param_1 = (long)&DAT_004ff0a8; + param_1[1] = 0; + param_1[0x21] = (long)&LAB_004ff0d0; + FUN_003d3008(plVar1,0); + param_1[2] = (long)&DAT_004ff058; + param_1[0x21] = (long)&DAT_004ff080; + FUN_003d3008(plVar1,0); + plVar2 = param_1 + 3; + *param_1 = (long)&PTR_FUN_004f9308; + param_1[0x21] = (long)&PTR_FUN_004f9358; + param_1[2] = (long)&PTR_FUN_004f9330; + FUN_00421348(plVar2); + FUN_003d3008(plVar1,plVar2); + lVar3 = FUN_00422f14(plVar2,param_2,param_3); + if (lVar3 != 0) { + FUN_003d2c00((long)param_1 + *(long *)(*param_1 + -0x18),0); + return; + } + lVar3 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar3,*(uint *)(lVar3 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004243c8 (76 bytes) name=FUN_004243c8 + +void FUN_004243c8(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_00422248(param_1 + 2); + if (lVar1 != 0) { + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00424414 (76 bytes) name=FUN_00424414 + +void FUN_00424414(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_00422248(param_1 + 1); + if (lVar1 != 0) { + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 00424460 (76 bytes) name=FUN_00424460 + +void FUN_00424460(long *param_1) + +{ + long lVar1; + + lVar1 = FUN_00422248(param_1 + 3); + if (lVar1 != 0) { + return; + } + lVar1 = (long)param_1 + *(long *)(*param_1 + -0x18); + FUN_003d2c00(lVar1,*(uint *)(lVar1 + 0x20) | 4); + return; +} + + +================================================================== + +### FUNC 004244ac (148 bytes) name=FUN_004244ac + +void FUN_004244ac(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_004f9308; + param_1[2] = &PTR_FUN_004f9330; + param_1[0x21] = &PTR_FUN_004f9358; + param_1[3] = &PTR_FUN_004fef30; + FUN_00422248(param_1 + 3); + FUN_00432214(param_1 + 0x10); + param_1[3] = PTR_DAT_00501c78 + 0x10; + FUN_003ed708(param_1 + 10); + param_1[0x21] = PTR_DAT_00501ea8 + 0x10; + FUN_003d381c(param_1 + 0x21); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00424540 (8 bytes) name=FUN_00424540 + +void FUN_00424540(long param_1) + +{ + FUN_004244ac(param_1 + -0x10); + return; +} + + +================================================================== + +### FUNC 00424548 (16 bytes) name=FUN_00424548 + +void FUN_00424548(long *param_1) + +{ + FUN_004244ac((long)param_1 + *(long *)(*param_1 + -0x18)); + return; +} + + +================================================================== + +### FUNC 00424558 (12 bytes) name=what + +/* std::bad_array_length::what() const */ + +undefined * std::bad_array_length::what(void) + +{ + return &DAT_0047b740; +} + + +================================================================== + +### FUNC 00424564 (20 bytes) name=~bad_array_length + +/* std::bad_array_length::~bad_array_length() */ + +void __thiscall std::bad_array_length::~bad_array_length(bad_array_length *this) + +{ + *(undefined **)this = PTR_vtable_005019f0 + 0x10; + bad_alloc::~bad_alloc((bad_alloc *)this); + return; +} + + +================================================================== + +### FUNC 00424578 (36 bytes) name=~bad_array_length + +/* std::bad_array_length::~bad_array_length() */ + +void __thiscall std::bad_array_length::~bad_array_length(bad_array_length *this) + +{ + ~bad_array_length(this); + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 0042459c (12 bytes) name=what + +/* std::bad_array_new_length::what() const */ + +char * std::bad_array_new_length::what(void) + +{ + return "std::bad_array_new_length"; +} + + +================================================================== + +### FUNC 004245a8 (20 bytes) name=~bad_array_new_length + +/* std::bad_array_new_length::~bad_array_new_length() */ + +void __thiscall std::bad_array_new_length::~bad_array_new_length(bad_array_new_length *this) + +{ + *(undefined **)this = PTR_vtable_00501c30 + 0x10; + bad_alloc::~bad_alloc((bad_alloc *)this); + return; +} + + +================================================================== + +### FUNC 004245bc (36 bytes) name=~bad_array_new_length + +/* std::bad_array_new_length::~bad_array_new_length() */ + +void __thiscall std::bad_array_new_length::~bad_array_new_length(bad_array_new_length *this) + +{ + ~bad_array_new_length(this); + /* catch() { ... } // from try @ 004235b8 with catch @ 004245d0 */ + operator_delete(this); + return; +} + + +================================================================== + +### FUNC 004245e0 (160 bytes) name=FUN_004245e0 + +long FUN_004245e0(long param_1,undefined4 param_2,long param_3,long param_4) + +{ + long lVar1; + int iVar2; + + /* catch() { ... } // from try @ 00424618 with catch @ 00424604 + catch() { ... } // from try @ 004246b4 with catch @ 00424604 + catch() { ... } // from try @ 004247c0 with catch @ 00424604 + catch() { ... } // from try @ 004247d8 with catch @ 00424604 + catch() { ... } // from try @ 004247ec with catch @ 00424604 */ + switch(param_2) { + case 1: + case 2: + case 3: + case 4: + case 0xb: + case 0x21: + case 0x2b: + case 0x2d: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3a: + case 0x3c: + case 0x3d: + case 0x3f: + case 0x4b: + case 0x4c: + if (param_3 == 0) { + return 0; + } + case 0x2a: + case 0x30: + if (param_4 == 0) { +LAB_004245f0: + /* try { // try from 004245f4 to 005245f7 has its CatchHandler @ 004234ac */ + return 0; + } + iVar2 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar2) { + return 0; + } + break; + default: + goto LAB_004245f0; + case 9: + case 10: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x28: + case 0x33: + case 0x34: + case 0x35: + case 0x3b: + case 0x3e: + case 0x42: + case 0x43: + case 0x44: + case 0x48: + case 0x49: + case 0x4a: + if (param_3 == 0) { + return 0; + } + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: + case 0x29: + case 0x2e: + case 0x2f: + iVar2 = *(int *)(param_1 + 0x28); + /* try { // try from 00424618 to 00524653 has its CatchHandler @ 00424604 */ + if (*(int *)(param_1 + 0x2c) <= iVar2) { + return 0; + } + } + *(int *)(param_1 + 0x28) = iVar2 + 1; + lVar1 = *(long *)(param_1 + 0x20) + (long)iVar2 * 0x18; + if (lVar1 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18) = param_2; + *(long *)(lVar1 + 8) = param_3; + *(long *)(lVar1 + 0x10) = param_4; + return lVar1; + } + return 0; +} + + +================================================================== + +### FUNC 00424680 (96 bytes) name=FUN_00424680 + +long FUN_00424680(long param_1,long param_2,int param_3) + +{ + long lVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x28); + if (iVar2 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar2 + 1; + lVar1 = *(long *)(param_1 + 0x20) + (long)iVar2 * 0x18; + /* try { // try from 004246ac to 005246af has its CatchHandler @ 004247dc */ + /* try { // try from 004246b4 to 0052471f has its CatchHandler @ 00424604 */ + if ((lVar1 != 0 && param_2 != 0) && (param_3 != 0)) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18) = 0; + *(long *)(lVar1 + 8) = param_2; + *(int *)(lVar1 + 0x10) = param_3; + return lVar1; + } + } + return 0; +} + + +================================================================== + +### FUNC 004246e0 (432 bytes) name=FUN_004246e0 + +long * FUN_004246e0(long param_1,long *param_2,int param_3) + +{ + int iVar1; + char cVar2; + long lVar3; + char *pcVar4; + int *piVar5; + undefined4 uVar6; + long *plVar7; + + pcVar4 = *(char **)(param_1 + 0x18); + cVar2 = *pcVar4; + plVar7 = param_2; + do { + if ((cVar2 == 'V') || (cVar2 == 'r')) { + *(char **)(param_1 + 0x18) = pcVar4 + 1; + if (cVar2 != 'r') { + if (cVar2 != 'V') goto LAB_00424744; + /* try { // try from 004247ec to 005247ef has its CatchHandler @ 00424604 */ + /* catch() { ... } // from try @ 00424804 with catch @ 004247f0 + catch() { ... } // from try @ 00424868 with catch @ 004247f0 + catch() { ... } // from try @ 004248d4 with catch @ 004247f0 */ + uVar6 = 0x1d; + if (param_3 == 0) { + uVar6 = 0x1a; + } + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 9; + goto LAB_00424758; + } + uVar6 = 0x1c; + if (param_3 == 0) { + uVar6 = 0x19; + } + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 9; + lVar3 = FUN_004245e0(param_1,uVar6,0,0); + /* try { // try from 004247c0 to 005247c3 has its CatchHandler @ 00424604 */ + *plVar7 = lVar3; + } + else { + if (cVar2 != 'K') { + /* try { // try from 00424804 to 00524827 has its CatchHandler @ 004247f0 */ + if ((param_3 == 0) && (cVar2 == 'F')) { + while (param_2 != plVar7) { + piVar5 = (int *)*param_2; + iVar1 = *piVar5; + if (iVar1 == 0x1a) { + *piVar5 = 0x1d; + /* try { // try from 00424860 to 00524863 has its CatchHandler @ 004248c4 */ + } + else if (iVar1 == 0x1b) { + *piVar5 = 0x1e; + } + else if (iVar1 == 0x19) { + *piVar5 = 0x1c; + } + param_2 = (long *)(piVar5 + 2); + } + } + /* try { // try from 00424868 to 0052486b has its CatchHandler @ 004247f0 */ + return plVar7; + } + *(char **)(param_1 + 0x18) = pcVar4 + 1; +LAB_00424744: + uVar6 = 0x1e; + /* try { // try from 0042474c to 0052474f has its CatchHandler @ 004247c8 */ + if (param_3 == 0) { + uVar6 = 0x1b; + } + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 6; +LAB_00424758: + lVar3 = FUN_004245e0(param_1,uVar6,0,0); + *plVar7 = lVar3; + } + if (lVar3 == 0) { + /* catch() { ... } // from try @ 0042474c with catch @ 004247c8 */ + /* try { // try from 004247d8 to 005247db has its CatchHandler @ 00424604 */ + /* catch() { ... } // from try @ 004246ac with catch @ 004247dc */ + return (long *)0x0; + } + pcVar4 = *(char **)(param_1 + 0x18); + plVar7 = (long *)(lVar3 + 8); + cVar2 = *pcVar4; + } while( true ); +} + + +================================================================== + +### FUNC 00424890 (704 bytes) name=FUN_00424890 + +long FUN_00424890(long param_1,int param_2) + +{ + long lVar1; + undefined4 uVar2; + byte bVar3; + uint uVar4; + long lVar5; + uint uVar6; + char *pcVar7; + undefined *puVar8; + uint uVar9; + int iVar10; + int iVar11; + byte *pbVar12; + long lVar13; + uint uVar14; + int iVar15; + undefined8 uVar16; + long lVar17; + + pcVar7 = *(char **)(param_1 + 0x18); + if (*pcVar7 != 'S') { + return 0; + } + *(char **)(param_1 + 0x18) = pcVar7 + 1; + if (pcVar7[1] != '\0') { + *(char **)(param_1 + 0x18) = pcVar7 + 2; + /* catch() { ... } // from try @ 00424860 with catch @ 004248c4 */ + bVar3 = pcVar7[1]; + uVar6 = (uint)bVar3; + uVar14 = bVar3 - 0x30; + /* try { // try from 004248d4 to 005248d7 has its CatchHandler @ 004247f0 */ + /* catch() { ... } // from try @ 004248f4 with catch @ 004248d8 + catch() { ... } // from try @ 004249b8 with catch @ 004248d8 + catch() { ... } // from try @ 00424a30 with catch @ 004248d8 + catch() { ... } // from try @ 00424ac0 with catch @ 004248d8 + catch() { ... } // from try @ 00424b44 with catch @ 004248d8 + catch() { ... } // from try @ 00424bd4 with catch @ 004248d8 + catch() { ... } // from try @ 00424c84 with catch @ 004248d8 + catch() { ... } // from try @ 00424d14 with catch @ 004248d8 + catch() { ... } // from try @ 00424d80 with catch @ 004248d8 + catch() { ... } // from try @ 00424f0c with catch @ 004248d8 + catch() { ... } // from try @ 00424fc4 with catch @ 004248d8 + catch() { ... } // from try @ 00425008 with catch @ 004248d8 + catch() { ... } // from try @ 00425074 with catch @ 004248d8 + catch() { ... } // from try @ 00425108 with catch @ 004248d8 + catch() { ... } // from try @ 00425154 with catch @ 004248d8 + catch() { ... } // from try @ 00425168 with catch @ 004248d8 + catch() { ... } // from try @ 0042517c with catch @ 004248d8 + catch() { ... } // from try @ 00425190 with catch @ 004248d8 + catch() { ... } // from try @ 004251a4 with catch @ 004248d8 + catch() { ... } // from try @ 004251b8 with catch @ 004248d8 + catch() { ... } // from try @ 004251cc with catch @ 004248d8 + catch() { ... } // from try @ 004251e0 with catch @ 004248d8 + catch() { ... } // from try @ 004251f4 with catch @ 004248d8 + catch() { ... } // from try @ 00425208 with catch @ 004248d8 + catch() { ... } // from try @ 0042521c with catch @ 004248d8 + catch() { ... } // from try @ 00425230 with catch @ 004248d8 + catch() { ... } // from try @ 00425244 with catch @ 004248d8 */ + if (((uVar14 & 0xff) < 10) || (bVar3 == 0x5f)) { + if (bVar3 == 0x5f) { + uVar4 = 0; + goto LAB_004249cc; + } + } + else { + /* try { // try from 00424b3c to 00524b3f has its CatchHandler @ 00425158 */ + /* try { // try from 00424b44 to 00524b93 has its CatchHandler @ 004248d8 */ + if (0x19 < (byte)(bVar3 + 0xbf)) goto LAB_0042495c; + } + uVar9 = 0; + do { + /* try { // try from 004248f4 to 00524977 has its CatchHandler @ 004248d8 */ + uVar4 = (uVar9 * 0x24 + uVar6) - 0x37; + if ((uVar14 & 0xff) < 10) { + uVar4 = (uVar9 * 0x24 + uVar6) - 0x30; + } + else if (0x19 < (uVar6 - 0x41 & 0xff)) { + return 0; + } + uVar6 = 0; + if (uVar4 < uVar9) { + return 0; + } + pbVar12 = *(byte **)(param_1 + 0x18); + if (*pbVar12 != 0) { + *(byte **)(param_1 + 0x18) = pbVar12 + 1; + uVar6 = (uint)*pbVar12; + if (uVar6 == 0x5f) goto LAB_004249c8; + } + uVar14 = uVar6 - 0x30; + uVar9 = uVar4; + } while( true ); + } + uVar6 = 0; +LAB_0042495c: + uVar14 = *(uint *)(param_1 + 0x10) >> 3 & 1; + if (uVar14 < (param_2 != 0)) { + uVar14 = (uint)((byte)(**(char **)(param_1 + 0x18) + 0xbdU) < 2); + } + if (uVar6 == 0x74) { + puVar8 = &UNK_004f9790; + } + else if (uVar6 == 0x61) { + puVar8 = &UNK_004f97c8; + } + else if (uVar6 == 0x62) { + puVar8 = &UNK_004f9800; + } + else if (uVar6 == 0x73) { + puVar8 = &UNK_004f9838; + } + else if (uVar6 == 0x69) { + puVar8 = &UNK_004f9870; + } + else if (uVar6 == 0x6f) { + puVar8 = &UNK_004f98a8; + } + else { + if (uVar6 != 100) { + return 0; + } + /* try { // try from 004249b0 to 005249b3 has its CatchHandler @ 00425220 */ + puVar8 = &LAB_004f98e0; + /* try { // try from 004249b8 to 005249ef has its CatchHandler @ 004248d8 */ + } + lVar5 = *(long *)(puVar8 + 0x28); + /* try { // try from 00424a28 to 00524a2b has its CatchHandler @ 004251bc */ + if (lVar5 == 0) { + iVar15 = *(int *)(param_1 + 0x2c); + iVar10 = *(int *)(param_1 + 0x28); + } + else { + iVar10 = *(int *)(param_1 + 0x28); + /* try { // try from 00424a30 to 00524a7f has its CatchHandler @ 004248d8 */ + iVar15 = *(int *)(param_1 + 0x2c); + uVar2 = *(undefined4 *)(puVar8 + 0x30); + lVar17 = 0; + if (iVar10 < iVar15) { + lVar13 = (long)iVar10; + iVar10 = iVar10 + 1; + *(int *)(param_1 + 0x28) = iVar10; + lVar1 = *(long *)(param_1 + 0x20) + lVar13 * 0x18; + if (lVar1 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + lVar13 * 0x18) = 0x18; + *(long *)(lVar1 + 8) = lVar5; + *(undefined4 *)(lVar1 + 0x10) = uVar2; + lVar17 = lVar1; + } + } + *(long *)(param_1 + 0x48) = lVar17; + } + if (uVar14 == 0) { + uVar16 = *(undefined8 *)(puVar8 + 8); + iVar11 = *(int *)(puVar8 + 0x10); + } + else { + uVar16 = *(undefined8 *)(puVar8 + 0x18); + iVar11 = *(int *)(puVar8 + 0x20); + } + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + iVar11; + if (iVar15 <= iVar10) { + return 0; + } + *(int *)(param_1 + 0x28) = iVar10 + 1; + lVar5 = *(long *)(param_1 + 0x20) + (long)iVar10 * 0x18; + /* try { // try from 00424ab8 to 00524abb has its CatchHandler @ 004251a8 */ + if (lVar5 != 0) { + /* try { // try from 00424ac0 to 00524b03 has its CatchHandler @ 004248d8 */ + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar10 * 0x18) = 0x18; + *(undefined8 *)(lVar5 + 8) = uVar16; + *(int *)(lVar5 + 0x10) = iVar11; + return lVar5; + } + return 0; +LAB_004249c8: + uVar4 = uVar4 + 1; +LAB_004249cc: + if (*(uint *)(param_1 + 0x38) <= uVar4) { + return 0; + } + lVar5 = *(long *)(*(long *)(param_1 + 0x30) + (ulong)uVar4 * 8); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + return lVar5; +} + + +================================================================== + +### FUNC 00424b50 (204 bytes) name=FUN_00424b50 + +void FUN_00424b50(int *param_1,int *param_2,undefined4 *param_3) + +{ + int *piVar1; + + if (param_3 == (undefined4 *)0x0) { +switchD_00424ba4_caseD_5: + return; + } + do { + switch(*param_3) { + case 1: + case 2: + case 3: + case 9: + case 10: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: + case 0x21: + case 0x22: + case 0x25: + case 0x26: + case 0x28: + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + case 0x2f: + case 0x30: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x42: + case 0x48: + case 0x49: + case 0x4a: + case 0x4b: + case 0x4c: +switchD_00424ba4_caseD_1: + piVar1 = *(int **)(param_3 + 2); + break; + case 4: + *param_1 = *param_1 + 1; + piVar1 = *(int **)(param_3 + 2); + break; + default: + goto switchD_00424ba4_caseD_5; + case 7: + case 8: + case 0x32: + param_3 = *(undefined4 **)(param_3 + 4); + goto joined_r0x00424bc4; + case 0x23: + case 0x24: + /* try { // try from 00424bcc to 00524bcf has its CatchHandler @ 004251d0 */ + piVar1 = *(int **)(param_3 + 2); + /* try { // try from 00424bd4 to 00524c43 has its CatchHandler @ 004248d8 */ + if (*piVar1 == 5) { + *param_2 = *param_2 + 1; + goto switchD_00424ba4_caseD_1; + } + break; + case 0x43: + case 0x44: + case 0x45: + case 0x46: + param_3 = *(undefined4 **)(param_3 + 2); + goto joined_r0x00424bc4; + } + FUN_00424b50(param_1,param_2,piVar1); + param_3 = *(undefined4 **)(param_3 + 4); +joined_r0x00424bc4: + if (param_3 == (undefined4 *)0x0) { + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 00424c1c (120 bytes) name=FUN_00424c1c + +void FUN_00424c1c(undefined1 *param_1,undefined1 param_2) + +{ + long lVar1; + + lVar1 = *(long *)(param_1 + 0x100); + if (lVar1 != 0xff) { + *(long *)(param_1 + 0x100) = lVar1 + 1; + param_1[lVar1] = param_2; + param_1[0x108] = param_2; + return; + } + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *(undefined8 *)(param_1 + 0x100) = 1; + /* try { // try from 00424c7c to 00524c7f has its CatchHandler @ 0042516c */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + *param_1 = param_2; + /* try { // try from 00424c84 to 00524cc3 has its CatchHandler @ 004248d8 */ + param_1[0x108] = param_2; + return; +} + + +================================================================== + +### FUNC 00424c94 (136 bytes) name=FUN_00424c94 + +long FUN_00424c94(long *param_1) + +{ + ulong uVar1; + bool bVar2; + byte *pbVar3; + ulong uVar4; + byte bVar5; + ulong uVar6; + + pbVar3 = (byte *)*param_1; + bVar5 = *pbVar3; + bVar2 = bVar5 == 0x6e; + if (bVar2) { + *param_1 = (long)(pbVar3 + 1); + uVar6 = 0xffffffffffffffff; + /* try { // try from 00424d0c to 00524d0f has its CatchHandler @ 004251f8 */ + bVar5 = pbVar3[1]; + } + else { + uVar6 = 0; + } + if ((byte)(bVar5 - 0x30) < 10) { + pbVar3 = (byte *)*param_1; + uVar4 = 0; + do { + pbVar3 = pbVar3 + 1; + *param_1 = (long)pbVar3; + uVar1 = (ulong)bVar5; + bVar5 = *pbVar3; + uVar4 = (uVar4 * 10 + uVar1) - 0x30; + } while ((byte)(bVar5 - 0x30) < 10); + } + else { + /* try { // try from 00424d14 to 00524d3f has its CatchHandler @ 004248d8 */ + uVar4 = 0; + } + return (uVar4 ^ uVar6) + (ulong)bVar2; +} + + +================================================================== + +### FUNC 00424d1c (124 bytes) name=FUN_00424d1c + +undefined8 FUN_00424d1c(long param_1,ulong *param_2) + +{ + uint uVar1; + ulong uVar2; + int *piVar3; + int iVar4; + + if (*(long *)(param_1 + 0x120) == 0) { + *(undefined4 *)(param_1 + 0x130) = 1; + } + else { + piVar3 = *(int **)(*(long *)(*(long *)(param_1 + 0x120) + 8) + 0x10); + uVar2 = *param_2 & 0xffffffff; + if ((piVar3 != (int *)0x0) && (*piVar3 == 0x2f)) { + iVar4 = (int)*param_2; + if (iVar4 < 1) { + /* try { // try from 00424d78 to 00524d7b has its CatchHandler @ 00425234 */ + if (iVar4 != 0) { + return 0; + } + } + else { + do { + piVar3 = *(int **)(piVar3 + 4); + uVar1 = (int)uVar2 - 1; + uVar2 = (ulong)uVar1; + if (piVar3 == (int *)0x0) { + return 0; + } + if (*piVar3 != 0x2f) { + return 0; + } + } while (uVar1 != 0); + } + /* try { // try from 00424d80 to 00524ecb has its CatchHandler @ 004248d8 */ + return *(undefined8 *)(piVar3 + 2); + } + } + return 0; +} + + +================================================================== + +### FUNC 00424d98 (152 bytes) name=FUN_00424d98 + +int * FUN_00424d98(undefined8 param_1,undefined4 *param_2) + +{ + int *piVar1; + + while (param_2 != (undefined4 *)0x0) { + switch(*param_2) { + case 0: + case 6: + case 0x18: + case 0x27: + case 0x31: + case 0x40: + case 0x45: + case 0x47: + case 0x4a: + case 0x4b: + goto LAB_00424de4; + default: + piVar1 = (int *)FUN_00424d98(param_1,*(undefined8 *)(param_2 + 2)); + if (piVar1 != (int *)0x0) { + return piVar1; + } + case 7: + case 8: + case 0x32: + param_2 = *(undefined4 **)(param_2 + 4); + break; + case 5: + piVar1 = (int *)FUN_00424d1c(param_1,param_2 + 2); + if (piVar1 == (int *)0x0) { + return (int *)0x0; + } + if (*piVar1 != 0x2f) { + return (int *)0x0; + } + return piVar1; + } + } +LAB_00424de4: + return (int *)0x0; +} + + +================================================================== + +### FUNC 00424e30 (240 bytes) name=FUN_00424e30 + +void FUN_00424e30(void *param_1,size_t param_2,long *param_3) + +{ + ulong uVar1; + void *pvVar2; + size_t __size; + + __size = param_3[2]; + uVar1 = param_3[1] + 1 + param_2; + if (__size < uVar1) { + if ((int)param_3[3] != 0) { + return; + } + if ((__size != 0) || (__size = 2, 2 < uVar1)) { + do { + __size = __size * 2; + } while (__size < uVar1); + } + pvVar2 = realloc((void *)*param_3,__size); + if (pvVar2 == (void *)0x0) { + /* try { // try from 00424f04 to 00524f07 has its CatchHandler @ 004251e4 */ + free((void *)*param_3); + *param_3 = 0; + /* try { // try from 00424f0c to 00524f43 has its CatchHandler @ 004248d8 */ + param_3[1] = 0; + param_3[2] = 0; + *(undefined4 *)(param_3 + 3) = 1; + return; + } + *param_3 = (long)pvVar2; + param_3[2] = __size; + } + if ((int)param_3[3] != 0) { + return; + } + memcpy((void *)(*param_3 + param_3[1]),param_1,param_2); + *(undefined1 *)(*param_3 + param_2 + param_3[1]) = 0; + param_3[1] = param_3[1] + param_2; + return; +} + + +================================================================== + +### FUNC 00424f20 (180 bytes) name=FUN_00424f20 + +void FUN_00424f20(char *param_1,char *param_2) + +{ + char *pcVar1; + char cVar2; + size_t sVar3; + long lVar4; + + sVar3 = strlen(param_2); + if (sVar3 != 0) { + pcVar1 = param_2 + sVar3; + lVar4 = *(long *)(param_1 + 0x100); + do { + /* try { // try from 00424f7c to 00524f7f has its CatchHandler @ 0042520c */ + while (cVar2 = *param_2, lVar4 == 0xff) { + param_2 = param_2 + 1; + param_1[0xff] = '\0'; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + param_1[0x100] = '\x01'; + param_1[0x101] = '\0'; + param_1[0x102] = '\0'; + param_1[0x103] = '\0'; + param_1[0x104] = '\0'; + param_1[0x105] = '\0'; + param_1[0x106] = '\0'; + param_1[0x107] = '\0'; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + *param_1 = cVar2; + param_1[0x108] = cVar2; + lVar4 = 1; + if (param_2 == pcVar1) { + return; + } + } + *(long *)(param_1 + 0x100) = lVar4 + 1; + param_2 = param_2 + 1; + param_1[lVar4] = cVar2; + param_1[0x108] = cVar2; + lVar4 = lVar4 + 1; + } while (param_2 != pcVar1); + } + /* try { // try from 00424fc4 to 00524fc7 has its CatchHandler @ 004248d8 */ + return; +} + + +================================================================== + +### FUNC 00424fd4 (340 bytes) name=FUN_00424fd4 + +long FUN_00424fd4(long param_1,int param_2) + +{ + char cVar1; + int iVar2; + long lVar3; + void *__s1; + + lVar3 = (long)param_2; + __s1 = *(void **)(param_1 + 0x18); + if (lVar3 <= *(long *)(param_1 + 8) - (long)__s1) { + /* try { // try from 00425000 to 00525003 has its CatchHandler @ 00425180 */ + *(long *)(param_1 + 0x18) = (long)__s1 + lVar3; + /* try { // try from 00425008 to 00525033 has its CatchHandler @ 004248d8 */ + if (((*(uint *)(param_1 + 0x10) >> 2 & 1) != 0) && (*(char *)((long)__s1 + lVar3) == '$')) { + *(long *)(param_1 + 0x18) = (long)__s1 + lVar3 + 1; + } + if ((((9 < param_2) && (iVar2 = memcmp(__s1,"_GLOBAL_",8), iVar2 == 0)) && + ((cVar1 = *(char *)((long)__s1 + 8), cVar1 == '_' || cVar1 == '.' || (cVar1 == '$')))) && + (*(char *)((long)__s1 + 9) == 'N')) { + /* try { // try from 00425100 to 00525103 has its CatchHandler @ 00425144 */ + /* try { // try from 00425108 to 0052510b has its CatchHandler @ 004248d8 */ + *(int *)(param_1 + 0x50) = (*(int *)(param_1 + 0x50) + 0x16) - param_2; + lVar3 = FUN_00424680(param_1,"(anonymous namespace)",0x15); + return lVar3; + } + iVar2 = *(int *)(param_1 + 0x28); + if (iVar2 < *(int *)(param_1 + 0x2c)) { + /* try { // try from 0042506c to 0052506f has its CatchHandler @ 00425194 */ + /* try { // try from 00425074 to 005250c7 has its CatchHandler @ 004248d8 */ + *(int *)(param_1 + 0x28) = iVar2 + 1; + lVar3 = *(long *)(param_1 + 0x20) + (long)iVar2 * 0x18; + if ((param_2 != 0 && __s1 != (void *)0x0) && (lVar3 != 0)) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18) = 0; + *(void **)(lVar3 + 8) = __s1; + *(int *)(lVar3 + 0x10) = param_2; + return lVar3; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 00425128 (204 bytes) name=FUN_00425128 + +void FUN_00425128(char *param_1,undefined8 param_2) + +{ + char cVar1; + size_t sVar2; + long lVar3; + size_t sVar4; + char local_20 [32]; + + /* catch() { ... } // from try @ 00425100 with catch @ 00425144 */ + /* try { // try from 00425154 to 00525157 has its CatchHandler @ 004248d8 */ + sprintf(local_20,"%ld",param_2); + /* catch() { ... } // from try @ 00424b3c with catch @ 00425158 */ + sVar2 = strlen(local_20); + if (sVar2 != 0) { + /* try { // try from 00425168 to 0052516b has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 00424c7c with catch @ 0042516c */ + sVar4 = 0; + lVar3 = *(long *)(param_1 + 0x100); + do { + /* try { // try from 00425190 to 00525193 has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 0042506c with catch @ 00425194 */ + while (cVar1 = local_20[sVar4], lVar3 == 0xff) { + /* try { // try from 004251a4 to 005251a7 has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 00424ab8 with catch @ 004251a8 */ + sVar4 = sVar4 + 1; + param_1[0xff] = '\0'; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + /* try { // try from 004251b8 to 005251bb has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 00424a28 with catch @ 004251bc */ + param_1[0x100] = '\x01'; + param_1[0x101] = '\0'; + param_1[0x102] = '\0'; + param_1[0x103] = '\0'; + param_1[0x104] = '\0'; + param_1[0x105] = '\0'; + param_1[0x106] = '\0'; + param_1[0x107] = '\0'; + /* try { // try from 004251cc to 005251cf has its CatchHandler @ 004248d8 */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + /* catch() { ... } // from try @ 00424bcc with catch @ 004251d0 */ + *param_1 = cVar1; + param_1[0x108] = cVar1; + lVar3 = 1; + if (sVar4 == sVar2) { + return; + } + } + *(long *)(param_1 + 0x100) = lVar3 + 1; + /* try { // try from 0042517c to 0052517f has its CatchHandler @ 004248d8 */ + sVar4 = sVar4 + 1; + /* catch() { ... } // from try @ 00425000 with catch @ 00425180 */ + param_1[lVar3] = cVar1; + param_1[0x108] = cVar1; + lVar3 = lVar3 + 1; + } while (sVar4 != sVar2); + } + /* try { // try from 004251e0 to 005251e3 has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 00424f04 with catch @ 004251e4 */ + return; +} + + +================================================================== + +### FUNC 004251f4 (168 bytes) name=FUN_004251f4 + +undefined8 FUN_004251f4(long param_1) + +{ + byte bVar1; + bool bVar2; + undefined8 uVar3; + byte *pbVar4; + long lVar5; + ulong uVar6; + + /* try { // try from 004251f4 to 005251f7 has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 00424d0c with catch @ 004251f8 */ + pbVar4 = *(byte **)(param_1 + 0x18); + /* try { // try from 00425208 to 0052520b has its CatchHandler @ 004248d8 */ + bVar1 = *pbVar4; + /* catch() { ... } // from try @ 00424f7c with catch @ 0042520c */ + bVar2 = bVar1 == 0x6e; + if (bVar2) { + *(byte **)(param_1 + 0x18) = pbVar4 + 1; + /* catch() { ... } // from try @ 004252a4 with catch @ 00425288 + catch() { ... } // from try @ 0042546c with catch @ 00425288 + catch() { ... } // from try @ 00425680 with catch @ 00425288 + catch() { ... } // from try @ 004257f0 with catch @ 00425288 + catch() { ... } // from try @ 0042588c with catch @ 00425288 + catch() { ... } // from try @ 004258f8 with catch @ 00425288 + catch() { ... } // from try @ 0042590c with catch @ 00425288 + catch() { ... } // from try @ 00425920 with catch @ 00425288 + catch() { ... } // from try @ 00425934 with catch @ 00425288 */ + bVar1 = pbVar4[1]; + } + /* try { // try from 0042521c to 0052521f has its CatchHandler @ 004248d8 */ + /* catch() { ... } // from try @ 004249b0 with catch @ 00425220 */ + if ((byte)(bVar1 - 0x30) < 10) { + pbVar4 = *(byte **)(param_1 + 0x18); + lVar5 = 0; + do { + pbVar4 = pbVar4 + 1; + uVar6 = (ulong)bVar1; + /* try { // try from 00425230 to 00525233 has its CatchHandler @ 004248d8 */ + *(byte **)(param_1 + 0x18) = pbVar4; + /* catch() { ... } // from try @ 00424d78 with catch @ 00425234 */ + bVar1 = *pbVar4; + /* try { // try from 00425244 to 00525247 has its CatchHandler @ 004248d8 */ + lVar5 = lVar5 * 10 + uVar6 + -0x30; + } while ((byte)(bVar1 - 0x30) < 10); + if ((0 < lVar5) && (!bVar2)) { + uVar3 = FUN_00424fd4(); + *(undefined8 *)(param_1 + 0x48) = uVar3; + return uVar3; + } + } + return 0; +} + + +================================================================== + +### FUNC 0042529c (140 bytes) name=FUN_0042529c + +long FUN_0042529c(long param_1) + +{ + long lVar1; + long lVar2; + byte *pbVar3; + byte bVar4; + + pbVar3 = *(byte **)(param_1 + 0x18); + bVar4 = *pbVar3; + /* try { // try from 004252a4 to 0052542b has its CatchHandler @ 00425288 */ + if (bVar4 != 0x5f) { + if ((bVar4 != 0x6e) && ((byte)(bVar4 - 0x30) < 10)) { + lVar1 = 0; + do { + pbVar3 = pbVar3 + 1; + *(byte **)(param_1 + 0x18) = pbVar3; + lVar2 = lVar1 * 10 + (ulong)bVar4; + bVar4 = *pbVar3; + lVar1 = lVar2 + -0x30; + } while ((byte)(bVar4 - 0x30) < 10); + lVar2 = lVar2 + -0x2f; + if (bVar4 == 0x5f) goto LAB_00425318; + } + return -1; + } + lVar2 = 0; +LAB_00425318: + *(byte **)(param_1 + 0x18) = pbVar3 + 1; + return lVar2; +} + + +================================================================== + +### FUNC 00425328 (164 bytes) name=FUN_00425328 + +ulong FUN_00425328(long param_1) + +{ + long lVar1; + bool bVar2; + char *pcVar3; + long lVar4; + byte *pbVar5; + byte bVar6; + + pcVar3 = *(char **)(param_1 + 0x18); + if (*pcVar3 == '_') { + pbVar5 = (byte *)(pcVar3 + 1); + *(byte **)(param_1 + 0x18) = pbVar5; + bVar6 = pcVar3[1]; + if (bVar6 == 0x6e) { + pbVar5 = (byte *)(pcVar3 + 2); + *(byte **)(param_1 + 0x18) = pbVar5; + bVar6 = pcVar3[2]; + if (9 < (byte)(bVar6 - 0x30)) { + return 1; + } + bVar2 = true; + } + else { + if (9 < (byte)(bVar6 - 0x30)) { + return 1; + } + bVar2 = false; + } + lVar4 = 0; + do { + pbVar5 = pbVar5 + 1; + *(byte **)(param_1 + 0x18) = pbVar5; + lVar1 = lVar4 * 10 + (ulong)bVar6; + bVar6 = *pbVar5; + lVar4 = lVar1 + -0x30; + } while ((byte)(bVar6 - 0x30) < 10); + if (bVar2) { + return lVar1 - 0x31U >> 0x3f; + } + } + return 1; +} + + +================================================================== + +### FUNC 004253cc (236 bytes) name=FUN_004253cc + +long FUN_004253cc(long param_1) + +{ + int iVar1; + byte *pbVar2; + long lVar3; + long lVar4; + byte *pbVar5; + byte bVar6; + char *pcVar7; + + pcVar7 = *(char **)(param_1 + 0x18); + if (*pcVar7 != 'T') { + return 0; + } + pbVar5 = (byte *)(pcVar7 + 1); + *(byte **)(param_1 + 0x18) = pbVar5; + bVar6 = pcVar7[1]; + if (bVar6 == 0x5f) { + lVar4 = 0; + } + else { + if (bVar6 == 0x6e) { + return 0; + } + if (9 < (byte)(bVar6 - 0x30)) { + return 0; + } + lVar3 = 0; + pbVar2 = (byte *)(pcVar7 + 2); + do { + pbVar5 = pbVar2; + *(byte **)(param_1 + 0x18) = pbVar5; + lVar4 = lVar3 * 10 + (ulong)bVar6; + bVar6 = *pbVar5; + lVar3 = lVar4 + -0x30; + pbVar2 = pbVar5 + 1; + } while ((byte)(bVar6 - 0x30) < 10); + lVar4 = lVar4 + -0x2f; + if (bVar6 != 0x5f) { + return 0; + } + } + iVar1 = *(int *)(param_1 + 0x28); + /* try { // try from 00425464 to 00525467 has its CatchHandler @ 00425924 */ + *(byte **)(param_1 + 0x18) = pbVar5 + 1; + /* try { // try from 0042546c to 0052563f has its CatchHandler @ 00425288 */ + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + if (iVar1 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar1 + 1; + lVar3 = *(long *)(param_1 + 0x20) + (long)iVar1 * 0x18; + if (lVar3 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18) = 5; + *(long *)(lVar3 + 8) = lVar4; + return lVar3; + } + } + return 0; +} + + +================================================================== + +### FUNC 004254b8 (236 bytes) name=FUN_004254b8 + +undefined8 FUN_004254b8(long param_1,uint param_2) + +{ + byte *pbVar1; + char *pcVar2; + char *pcVar3; + char cVar4; + + if (param_2 == 0) { + pbVar1 = *(byte **)(param_1 + 0x18); + if (*pbVar1 == 0) { + return 0; + } + *(byte **)(param_1 + 0x18) = pbVar1 + 1; + param_2 = (uint)*pbVar1; + } + if (param_2 == 0x68) { + pcVar3 = *(char **)(param_1 + 0x18); + cVar4 = *pcVar3; + pcVar2 = pcVar3; + if (cVar4 == 'n') { + pcVar2 = pcVar3 + 1; + *(char **)(param_1 + 0x18) = pcVar2; + cVar4 = pcVar3[1]; + } + if ((byte)(cVar4 - 0x30U) < 10) { + do { + pcVar2 = pcVar2 + 1; + *(char **)(param_1 + 0x18) = pcVar2; + cVar4 = *pcVar2; + } while ((byte)(cVar4 - 0x30U) < 10); + goto LAB_00425538; + } + } + else { + if (param_2 != 0x76) { + return 0; + } + FUN_00424c94(param_1 + 0x18); + if (**(char **)(param_1 + 0x18) != '_') { + return 0; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + FUN_00424c94(param_1 + 0x18); + pcVar2 = *(char **)(param_1 + 0x18); + } + cVar4 = *pcVar2; +LAB_00425538: + if (cVar4 != '_') { + return 0; + } + *(char **)(param_1 + 0x18) = pcVar2 + 1; + return 1; +} + + +================================================================== + +### FUNC 004255a4 (5356 bytes) name=FUN_004255a4 + +long FUN_004255a4(long param_1) + +{ + undefined4 uVar1; + byte bVar2; + char cVar3; + int iVar4; + long lVar5; + int *piVar6; + undefined8 uVar7; + undefined8 uVar8; + int *piVar9; + undefined8 uVar10; + int *piVar11; + char *pcVar12; + long *plVar13; + undefined8 uVar14; + long lVar15; + char *pcVar16; + undefined8 *puVar17; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + long local_8; + + pcVar12 = *(char **)(param_1 + 0x18); + uVar14 = *(undefined8 *)(param_1 + 0x48); + if (1 < (byte)(*pcVar12 + 0xb7U)) { + return 0; + } + pcVar16 = pcVar12 + 1; + *(char **)(param_1 + 0x18) = pcVar16; + cVar3 = pcVar12[1]; + if (cVar3 == 'E') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + uVar14 = FUN_004245e0(param_1,0x2f,0,0); + return uVar14; + } + plVar13 = &local_8; + local_8 = 0; +LAB_00425614: + switch(cVar3) { + case 'I': + case 'J': + lVar5 = FUN_004255a4(param_1); + break; + default: + lVar5 = FUN_004271e4(param_1); + break; + case 'L': + lVar5 = FUN_00429d84(param_1); + break; + case 'X': + pcVar12 = pcVar16 + 1; + uVar1 = *(undefined4 *)(param_1 + 0x54); + *(char **)(param_1 + 0x18) = pcVar12; + *(undefined4 *)(param_1 + 0x54) = 1; + cVar3 = pcVar16[1]; + if (cVar3 == 'L') { + lVar5 = FUN_00429d84(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + } + else if (cVar3 == 'T') { + lVar5 = FUN_004253cc(param_1); + /* catch() { ... } // from try @ 00425884 with catch @ 004258e8 */ + pcVar12 = *(char **)(param_1 + 0x18); + } + else if (cVar3 == 's') { + if (pcVar16[2] == 'r') { + *(char **)(param_1 + 0x18) = pcVar16 + 3; + uVar7 = FUN_004271e4(param_1); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar10 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar10); + } + lVar5 = FUN_004245e0(param_1,1,uVar7,uVar8); + pcVar12 = *(char **)(param_1 + 0x18); + } + else { + if (pcVar16[2] != 'p') goto LAB_00425700; + *(char **)(param_1 + 0x18) = pcVar16 + 3; + uVar7 = FUN_00429efc(param_1); + lVar5 = FUN_004245e0(param_1,0x4a,uVar7,0); + pcVar12 = *(char **)(param_1 + 0x18); + } + } + else { + if (cVar3 == 'f') { + if (pcVar16[2] != 'p') goto LAB_00425700; + *(char **)(param_1 + 0x18) = pcVar16 + 3; + if (pcVar16[3] == 'T') { + lVar15 = 0; + *(char **)(param_1 + 0x18) = pcVar16 + 4; + } + else { + iVar4 = FUN_0042529c(param_1); + lVar15 = (long)(iVar4 + 1); + /* try { // try from 00425b54 to 00525b57 has its CatchHandler @ 00425fe4 */ + if (iVar4 + 1 == 0) { + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_0042580c; + } + } + /* try { // try from 00425884 to 00525887 has its CatchHandler @ 004258e8 */ + iVar4 = *(int *)(param_1 + 0x28); + /* try { // try from 0042588c to 0052588f has its CatchHandler @ 00425288 */ + if (iVar4 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar4 + 1; + lVar5 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar5 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(lVar5 + 8) = lVar15; + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004257ac; + } + } + goto switchD_00425a68_default; + } + if ((byte)(cVar3 - 0x30U) < 10) { +LAB_0042578c: + lVar5 = FUN_00428b90(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + if (lVar5 != 0) { + if (*pcVar12 == 'I') { + /* try { // try from 00425a6c to 00525aa3 has its CatchHandler @ 00425938 */ + uVar7 = FUN_004255a4(param_1); + lVar5 = FUN_004245e0(param_1,4,lVar5,uVar7); + pcVar12 = *(char **)(param_1 + 0x18); + } + goto LAB_004257ac; + } + } + else { + if (cVar3 == 'o') { + if (pcVar16[2] == 'n') { + *(char **)(param_1 + 0x18) = pcVar16 + 3; + goto LAB_0042578c; + } + } + else if (((cVar3 == 't') || (cVar3 == 'i')) && (pcVar16[2] == 'l')) { + uVar7 = 0; + if (cVar3 == 't') { + uVar7 = FUN_004271e4(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar12 + 2; + /* try { // try from 00425a28 to 00525a2b has its CatchHandler @ 00425938 */ + uVar8 = FUN_00426a90(param_1,0x45); + lVar5 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004257ac; + } +LAB_00425700: + piVar6 = (int *)FUN_0042899c(param_1); + if (piVar6 != (int *)0x0) { + iVar4 = *piVar6; + if (iVar4 == 0x31) { + puVar17 = *(undefined8 **)(piVar6 + 2); + /* try { // try from 004258f8 to 005258fb has its CatchHandler @ 00425288 */ + /* catch() { ... } // from try @ 00425678 with catch @ 004258fc */ + pcVar12 = (char *)*puVar17; + /* try { // try from 0042590c to 0052590f has its CatchHandler @ 00425288 */ + /* catch() { ... } // from try @ 004257e8 with catch @ 00425910 */ + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar17 + 2) + -2; + iVar4 = strcmp(pcVar12,"st"); + if (iVar4 == 0) { + uVar7 = FUN_004271e4(param_1); +LAB_00425adc: + /* try { // try from 00425adc to 00525adf has its CatchHandler @ 00425fbc */ + /* try { // try from 00425ae4 to 00525b1b has its CatchHandler @ 00425938 */ + lVar5 = FUN_004245e0(param_1,0x36,piVar6,uVar7); + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004257ac; + } + /* try { // try from 00425920 to 00525923 has its CatchHandler @ 00425288 */ + /* catch() { ... } // from try @ 00425464 with catch @ 00425924 */ + /* try { // try from 00425934 to 00525937 has its CatchHandler @ 00425288 */ + /* catch() { ... } // from try @ 0042594c with catch @ 00425938 + catch() { ... } // from try @ 00425a28 with catch @ 00425938 + catch() { ... } // from try @ 00425a6c with catch @ 00425938 + catch() { ... } // from try @ 00425ae4 with catch @ 00425938 + catch() { ... } // from try @ 00425b74 with catch @ 00425938 + catch() { ... } // from try @ 00425bb8 with catch @ 00425938 + catch() { ... } // from try @ 00425cb8 with catch @ 00425938 + catch() { ... } // from try @ 00425d54 with catch @ 00425938 + catch() { ... } // from try @ 00425dac with catch @ 00425938 + catch() { ... } // from try @ 00425e00 with catch @ 00425938 + catch() { ... } // from try @ 00425e7c with catch @ 00425938 + catch() { ... } // from try @ 00425ec0 with catch @ 00425938 + catch() { ... } // from try @ 00425f24 with catch @ 00425938 + catch() { ... } // from try @ 00425f40 with catch @ 00425938 + catch() { ... } // from try @ 00425f54 with catch @ 00425938 + catch() { ... } // from try @ 00425f68 with catch @ 00425938 + catch() { ... } // from try @ 00425f7c with catch @ 00425938 + catch() { ... } // from try @ 00425f90 with catch @ 00425938 + catch() { ... } // from try @ 00425fa4 with catch @ 00425938 + catch() { ... } // from try @ 00425fb8 with catch @ 00425938 + catch() { ... } // from try @ 00425fcc with catch @ 00425938 + catch() { ... } // from try @ 00425fe0 with catch @ 00425938 + catch() { ... } // from try @ 00425ff4 with catch @ 00425938 + catch() { ... } // from try @ 00426008 with catch @ 00425938 + catch() { ... } // from try @ 0042601c with catch @ 00425938 */ + switch(*(undefined4 *)((long)puVar17 + 0x14)) { + case 0: + goto switchD_00425a68_caseD_0; + case 1: + cVar3 = *pcVar12; + /* try { // try from 00425b74 to 00525b77 has its CatchHandler @ 00425938 */ + if (((cVar3 == 'm') || (cVar3 == 'p')) && (pcVar12[1] == cVar3)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + /* try { // try from 00425bb0 to 00525bb3 has its CatchHandler @ 00425fa8 */ + goto LAB_00425adc; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_00425a68_caseD_1; + case 2: + goto switchD_00425940_caseD_2; + case 3: + goto switchD_00425940_caseD_3; + } + } + else if (iVar4 == 0x32) { + /* try { // try from 00425a64 to 00525a67 has its CatchHandler @ 00425f80 */ + switch(piVar6[2]) { + case 0: +switchD_00425a68_caseD_0: + lVar5 = FUN_004245e0(param_1,0x35,piVar6,0); + /* try { // try from 00425a08 to 00525a0b has its CatchHandler @ 00425fd0 */ + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004257ac; + case 1: + goto switchD_00425a68_caseD_1; + case 2: + pcVar12 = (char *)0x0; +switchD_00425940_caseD_2: + /* try { // try from 0042594c to 005259cf has its CatchHandler @ 00425938 */ + /* try { // try from 00425e60 to 00525e63 has its CatchHandler @ 00425f58 */ + if ((((char *)**(undefined8 **)(piVar6 + 2))[1] == 'c') && + ((cVar3 = *(char *)**(undefined8 **)(piVar6 + 2), (byte)(cVar3 + 0x8eU) < 2 || + ((byte)(cVar3 + 0x9dU) < 2)))) { + /* try { // try from 00425e7c to 00525e7f has its CatchHandler @ 00425938 */ + uVar7 = FUN_004271e4(param_1); + } + else { + uVar7 = FUN_00429efc(param_1); + } + iVar4 = strcmp(pcVar12,"cl"); + if (iVar4 == 0) { + /* try { // try from 00425cb8 to 00525cbb has its CatchHandler @ 00425938 */ + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar4 = strcmp(pcVar12,"dt"); + if ((iVar4 == 0) || (iVar4 = strcmp(pcVar12,"pt"), iVar4 == 0)) { + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar10 = FUN_004255a4(param_1); + /* try { // try from 00425eb8 to 00525ebb has its CatchHandler @ 00425f6c */ + /* try { // try from 00425ec0 to 00525ee3 has its CatchHandler @ 00425938 */ + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar10); + } + } + else { + uVar8 = FUN_00429efc(param_1); + } + } + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar8); + lVar5 = FUN_004245e0(param_1,0x37,piVar6,uVar7); + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004257ac; + case 3: + /* try { // try from 004257e8 to 005257eb has its CatchHandler @ 00425910 */ + pcVar12 = (char *)0x0; +switchD_00425940_caseD_3: + /* try { // try from 004257f0 to 0052584b has its CatchHandler @ 00425288 */ + iVar4 = strcmp(pcVar12,"qu"); + if (iVar4 == 0) { + local_18 = FUN_00429efc(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + if (cVar3 == 'L') { + piVar9 = (int *)FUN_00429d84(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; +LAB_00425d9c: + if (cVar3 == 'L') { + lVar5 = FUN_00429d84(param_1); + } + else if (cVar3 == 'T') { + lVar5 = FUN_004253cc(param_1); + } + else { + /* try { // try from 00425dac to 00525daf has its CatchHandler @ 00425938 */ + if (cVar3 == 's') { + if (pcVar12[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + uVar7 = FUN_004271e4(param_1); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar10 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar10); + } + lVar5 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + else { + if (pcVar12[1] != 'p') goto LAB_00425df4; + *(char **)(param_1 + 0x18) = pcVar12 + 2; + uVar7 = FUN_00429efc(param_1); + lVar5 = FUN_004245e0(param_1,0x4a,uVar7,0); + } + } + else if (cVar3 == 'f') { + /* try { // try from 00425fb8 to 00525fbb has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425adc with catch @ 00425fbc */ + if (pcVar12[1] == 'p') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + /* try { // try from 00425fcc to 00525fcf has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425a08 with catch @ 00425fd0 */ + if (pcVar12[2] == 'T') { + lVar15 = 0; + *(char **)(param_1 + 0x18) = pcVar12 + 3; + } + else { + iVar4 = FUN_0042529c(param_1); + if (iVar4 + 1 == 0) goto LAB_00426254; + lVar15 = (long)(iVar4 + 1); + } + /* try { // try from 00425fe0 to 00525fe3 has its CatchHandler @ 00425938 */ + iVar4 = *(int *)(param_1 + 0x28); + /* catch() { ... } // from try @ 00425b54 with catch @ 00425fe4 */ + lVar5 = 0; + if (iVar4 < *(int *)(param_1 + 0x2c)) { + /* try { // try from 00425ff4 to 00525ff7 has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425d90 with catch @ 00425ff8 */ + /* try { // try from 00426008 to 0052600b has its CatchHandler @ 00425938 */ + *(int *)(param_1 + 0x28) = iVar4 + 1; + /* catch() { ... } // from try @ 00425df8 with catch @ 0042600c */ + lVar5 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar5 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + /* try { // try from 0042601c to 0052601f has its CatchHandler @ 00425938 */ + *(long *)(lVar5 + 8) = lVar15; + } + } + } + else { +LAB_00425df4: + /* try { // try from 00425df8 to 00525dfb has its CatchHandler @ 0042600c */ + piVar11 = (int *)FUN_0042899c(param_1); + /* try { // try from 00425e00 to 00525e27 has its CatchHandler @ 00425938 */ + if (piVar11 == (int *)0x0) { +LAB_00426254: + lVar5 = 0; + } + else { + iVar4 = *piVar11; + if (iVar4 == 0x31) { + puVar17 = *(undefined8 **)(piVar11 + 2); + pcVar12 = (char *)*puVar17; + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(puVar17 + 2) + -2; + iVar4 = strcmp(pcVar12,"st"); + if (iVar4 != 0) { + lVar5 = 0; + switch(*(undefined4 *)((long)puVar17 + 0x14)) { + case 0: + goto switchD_004261e8_caseD_0; + case 1: + goto switchD_00426250_caseD_1; + case 2: + goto switchD_00426250_caseD_2; + case 3: + goto switchD_00426250_caseD_3; + default: + goto switchD_004261e8_default; + } + } + uVar7 = FUN_004271e4(param_1); + } + else { + if (iVar4 == 0x32) { + lVar5 = 0; + switch(piVar11[2]) { + case 0: +switchD_004261e8_caseD_0: + lVar5 = FUN_004245e0(param_1,0x35,piVar11,0); + break; + case 1: + goto switchD_004261e8_caseD_1; + case 2: + pcVar12 = (char *)0x0; +switchD_00426250_caseD_2: + if (((char *)**(undefined8 **)(piVar11 + 2))[1] == 'c') { + cVar3 = *(char *)**(undefined8 **)(piVar11 + 2); + bVar2 = cVar3 + 0x8e; + if ((1 < bVar2) && (1 < (byte)(cVar3 + 0x9dU))) goto LAB_0042650c; + local_20 = FUN_004271e4(param_1,bVar2,pcVar12,0); + } + else { +LAB_0042650c: + local_20 = FUN_00429efc(param_1); + } + iVar4 = strcmp(pcVar12,"cl"); + if (iVar4 == 0) { + uVar7 = FUN_00426a90(param_1,0x45); + } + else { + iVar4 = strcmp(pcVar12,"dt"); + if ((iVar4 == 0) || (iVar4 = strcmp(pcVar12,"pt"), iVar4 == 0)) { + uVar7 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar8 = FUN_004255a4(param_1); + uVar7 = FUN_004245e0(param_1,4,uVar7,uVar8); + } + } + else { + uVar7 = FUN_00429efc(param_1); + } + } + uVar7 = FUN_004245e0(param_1,0x38,local_20,uVar7); + lVar5 = FUN_004245e0(param_1,0x37,piVar11,uVar7); + break; + case 3: + pcVar12 = (char *)0x0; +switchD_00426250_caseD_3: + iVar4 = strcmp(pcVar12,"qu"); + if (iVar4 == 0) { + local_20 = FUN_00429efc(param_1); + local_28 = FUN_00429efc(param_1); + uVar7 = FUN_00429efc(param_1); + } + else { + if ((*pcVar12 != 'n') || + ((pcVar12[1] != 'a' && (pcVar12[1] != 'w')))) + goto LAB_00426254; + local_20 = FUN_00426a90(param_1,0x5f); + local_28 = FUN_004271e4(param_1); + /* try { // try from 0042660c to 0052660f has its CatchHandler @ 004266bc */ + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + /* try { // try from 00426614 to 00526653 has its CatchHandler @ 0042631c */ + if (cVar3 != 'E') { + if (cVar3 == 'p') { + /* try { // try from 004268e4 to 005268e7 has its CatchHandler @ 00426ab4 */ + lVar5 = 0; + /* try { // try from 004268ec to 0052696b has its CatchHandler @ 0042670c */ + if (pcVar12[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_00426644; + } + } + else { + if (cVar3 != 'i') goto LAB_00426254; + lVar5 = 0; + if (pcVar12[1] == 'l') { + uVar7 = FUN_00429efc(param_1); + goto LAB_00426644; + } + } + break; + } + uVar7 = 0; + *(char **)(param_1 + 0x18) = pcVar12 + 1; + } +LAB_00426644: + uVar7 = FUN_004245e0(param_1,0x3b,local_28,uVar7); + uVar7 = FUN_004245e0(param_1,0x3a,local_20,uVar7); + lVar5 = FUN_004245e0(param_1,0x39,piVar11,uVar7); + } + goto switchD_004261e8_default; + } + if (iVar4 != 0x33) goto LAB_00426254; + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_00425e3c; + } +switchD_004261e8_caseD_1: + uVar7 = FUN_00429efc(param_1); + } +LAB_00425e3c: + lVar5 = FUN_004245e0(param_1,0x36,piVar11,uVar7); + } + } + } + else { + if (9 < (byte)(cVar3 - 0x30U)) { + if (cVar3 != 'o') goto LAB_00425dd4; + if (pcVar12[1] != 'n') goto LAB_00425df4; + *(char **)(param_1 + 0x18) = pcVar12 + 2; + } + lVar5 = FUN_00428b90(param_1); + if ((lVar5 != 0) && (**(char **)(param_1 + 0x18) == 'I')) { + uVar7 = FUN_004255a4(param_1); + /* try { // try from 00425f1c to 00525f1f has its CatchHandler @ 00425f44 */ + /* try { // try from 00425f24 to 00525f27 has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425cf4 with catch @ 00425f30 */ + lVar5 = FUN_004245e0(param_1,4,lVar5,uVar7); + } + } + } + } + else { + if (cVar3 == 'T') { + piVar9 = (int *)FUN_004253cc(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + goto LAB_00425d9c; + } + /* try { // try from 00425cf4 to 00525cf7 has its CatchHandler @ 00425f30 */ + if (cVar3 == 's') { + if (pcVar12[1] == 'r') { + /* try { // try from 004266e0 to 005266e3 has its CatchHandler @ 0042631c */ + /* catch() { ... } // from try @ 004263d8 with catch @ 004266e4 */ + *(char **)(param_1 + 0x18) = pcVar12 + 2; + piVar9 = (int *)FUN_004271e4(param_1); + /* try { // try from 004266f4 to 005266f7 has its CatchHandler @ 0042631c */ + uVar7 = FUN_00428b90(param_1); + /* catch() { ... } // from try @ 0042668c with catch @ 004266f8 */ + /* try { // try from 00426708 to 0052670b has its CatchHandler @ 0042631c */ + /* catch() { ... } // from try @ 00426724 with catch @ 0042670c + catch() { ... } // from try @ 004267e4 with catch @ 0042670c + catch() { ... } // from try @ 004268ec with catch @ 0042670c + catch() { ... } // from try @ 004269ac with catch @ 0042670c + catch() { ... } // from try @ 00426a10 with catch @ 0042670c + catch() { ... } // from try @ 00426a9c with catch @ 0042670c + catch() { ... } // from try @ 00426ab0 with catch @ 0042670c + catch() { ... } // from try @ 00426ac4 with catch @ 0042670c + catch() { ... } // from try @ 00426ad8 with catch @ 0042670c + catch() { ... } // from try @ 00426aec with catch @ 0042670c */ + if (**(char **)(param_1 + 0x18) != 'I') { + piVar9 = (int *)FUN_004245e0(param_1,1,piVar9,uVar7); + /* try { // try from 00426724 to 00526793 has its CatchHandler @ 0042670c */ + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + goto LAB_00425d9c; + } + uVar8 = FUN_004255a4(param_1); + uVar7 = FUN_004245e0(param_1,4,uVar7,uVar8); + uVar8 = 1; + /* try { // try from 004267dc to 005267df has its CatchHandler @ 00426aa0 */ + goto LAB_00425d88; + } + if (pcVar12[1] != 'p') goto LAB_00425d38; + *(char **)(param_1 + 0x18) = pcVar12 + 2; + piVar9 = (int *)FUN_00429efc(param_1); + uVar7 = 0x4a; +LAB_004260dc: + piVar11 = (int *)FUN_004245e0(param_1,uVar7,piVar9,0); +LAB_004260e8: + piVar9 = piVar11; + pcVar12 = *(char **)(param_1 + 0x18); +LAB_004260ec: + cVar3 = *pcVar12; + goto LAB_00425d9c; + } + if (cVar3 == 'f') { + if (pcVar12[1] != 'p') goto LAB_00425d38; + *(char **)(param_1 + 0x18) = pcVar12 + 2; + if (pcVar12[2] == 'T') { + pcVar12 = pcVar12 + 3; + lVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar12; + } + else { + iVar4 = FUN_0042529c(param_1); + /* try { // try from 00426330 to 0052639f has its CatchHandler @ 0042631c */ + pcVar12 = *(char **)(param_1 + 0x18); + if (iVar4 + 1 == 0) { +LAB_004260f8: + piVar9 = (int *)0x0; + cVar3 = *pcVar12; + goto LAB_00425d9c; + } + lVar5 = (long)(iVar4 + 1); + } + iVar4 = *(int *)(param_1 + 0x28); + if (iVar4 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar4 + 1; + piVar9 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18); + if (piVar9 == (int *)0x0) goto LAB_004260ec; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(piVar9 + 2) = lVar5; + /* catch() { ... } // from try @ 00426330 with catch @ 0042631c + catch() { ... } // from try @ 004263e0 with catch @ 0042631c + catch() { ... } // from try @ 0042646c with catch @ 0042631c + catch() { ... } // from try @ 00426614 with catch @ 0042631c + catch() { ... } // from try @ 00426694 with catch @ 0042631c + catch() { ... } // from try @ 004266cc with catch @ 0042631c + catch() { ... } // from try @ 004266e0 with catch @ 0042631c + catch() { ... } // from try @ 004266f4 with catch @ 0042631c + catch() { ... } // from try @ 00426708 with catch @ 0042631c */ + cVar3 = *pcVar12; + } + else { + cVar3 = *pcVar12; + piVar9 = (int *)0x0; + } + goto LAB_00425d9c; + } + if ((byte)(cVar3 - 0x30U) < 10) { +LAB_00425f50: + /* try { // try from 00425f54 to 00525f57 has its CatchHandler @ 00425938 */ + piVar9 = (int *)FUN_00428b90(param_1); + /* catch() { ... } // from try @ 00425e60 with catch @ 00425f58 */ + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + /* try { // try from 00425f68 to 00525f6b has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425eb8 with catch @ 00425f6c */ + if ((piVar9 != (int *)0x0) && (cVar3 == 'I')) { + uVar7 = FUN_004255a4(param_1); + /* try { // try from 00425f7c to 00525f7f has its CatchHandler @ 00425938 */ + uVar8 = 4; + /* catch() { ... } // from try @ 00425a64 with catch @ 00425f80 */ + goto LAB_00425d88; + } + goto LAB_00425d9c; + } + if (cVar3 == 'o') { + /* try { // try from 00425f40 to 00525f43 has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425f1c with catch @ 00425f44 */ + if (pcVar12[1] == 'n') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + goto LAB_00425f50; + } + } + else if (((cVar3 == 't') || (cVar3 == 'i')) && (pcVar12[1] == 'l')) { + uVar7 = 0; + if (cVar3 == 't') { + uVar7 = FUN_004271e4(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar12 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + piVar9 = (int *)FUN_004245e0(param_1,0x30,uVar7,uVar8); + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + goto LAB_00425d9c; + } +LAB_00425d38: + piVar9 = (int *)FUN_0042899c(param_1); + piVar11 = (int *)0x0; + if (piVar9 == (int *)0x0) goto LAB_004260e8; + iVar4 = *piVar9; + if (iVar4 == 0x31) { + puVar17 = *(undefined8 **)(piVar9 + 2); + pcVar12 = (char *)*puVar17; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar17 + 2) + -2 + ; + iVar4 = strcmp(pcVar12,"st"); + if (iVar4 != 0) { + switch(*(undefined4 *)((long)puVar17 + 0x14)) { + case 0: + goto switchD_00426168_caseD_0; + case 1: + goto switchD_004262d4_caseD_1; + case 2: + goto switchD_004262d4_caseD_2; + case 3: + goto switchD_004262d4_caseD_3; + default: + goto switchD_00426168_default; + } + } + uVar7 = FUN_004271e4(param_1); + uVar8 = 0x36; + goto LAB_00425d88; + } + /* try { // try from 00425d54 to 00525d57 has its CatchHandler @ 00425938 */ + if (iVar4 != 0x32) { + if (iVar4 == 0x33) { + if (**(char **)(param_1 + 0x18) != '_') goto switchD_00426168_caseD_1; + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_00425d80; + } +switchD_00426168_default: + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004260f8; + } + switch(piVar9[2]) { + case 0: +switchD_00426168_caseD_0: + uVar7 = 0x35; + goto LAB_004260dc; + case 1: + goto switchD_00426168_caseD_1; + case 2: + pcVar12 = (char *)0x0; +switchD_004262d4_caseD_2: + if ((((char *)**(undefined8 **)(piVar9 + 2))[1] == 'c') && + ((cVar3 = *(char *)**(undefined8 **)(piVar9 + 2), (byte)(cVar3 + 0x8eU) < 2 + || ((byte)(cVar3 + 0x9dU) < 2)))) { + local_20 = FUN_004271e4(param_1); + } + else { + local_20 = FUN_00429efc(param_1); + } + iVar4 = strcmp(pcVar12,"cl"); + if (iVar4 == 0) { + uVar7 = FUN_00426a90(param_1,0x45); + } + else { + iVar4 = strcmp(pcVar12,"dt"); + if ((iVar4 == 0) || (iVar4 = strcmp(pcVar12,"pt"), iVar4 == 0)) { + uVar7 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar8 = FUN_004255a4(param_1); + uVar7 = FUN_004245e0(param_1,4,uVar7,uVar8); + } + } + else { + /* try { // try from 00426a08 to 00526a0b has its CatchHandler @ 00426a8c */ + uVar7 = FUN_00429efc(param_1); + /* try { // try from 00426a10 to 00526a43 has its CatchHandler @ 0042670c */ + } + } + uVar7 = FUN_004245e0(param_1,0x38,local_20,uVar7); + uVar8 = 0x37; + /* try { // try from 004263d8 to 005263db has its CatchHandler @ 004266e4 */ + goto LAB_00425d88; + case 3: + pcVar12 = (char *)0x0; +switchD_004262d4_caseD_3: + iVar4 = strcmp(pcVar12,"qu"); + if (iVar4 == 0) { + /* try { // try from 004267e4 to 005268a3 has its CatchHandler @ 0042670c */ + local_20 = FUN_00429efc(param_1); + uVar7 = FUN_00429efc(param_1); + uVar8 = FUN_00429efc(param_1); +LAB_004264bc: + uVar7 = FUN_004245e0(param_1,0x3b,uVar7,uVar8); + uVar7 = FUN_004245e0(param_1,0x3a,local_20,uVar7); + uVar8 = 0x39; + goto LAB_00425d88; + } + /* try { // try from 00426464 to 00526467 has its CatchHandler @ 004266d0 */ + if ((*pcVar12 != 'n') || ((pcVar12[1] != 'a' && (pcVar12[1] != 'w')))) + goto switchD_00426168_default; + /* try { // try from 0042646c to 005265d3 has its CatchHandler @ 0042631c */ + local_20 = FUN_00426a90(param_1,0x5f); + uVar7 = FUN_004271e4(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + if (cVar3 == 'E') { + uVar8 = 0; + *(char **)(param_1 + 0x18) = pcVar12 + 1; + goto LAB_004264bc; + } + if (cVar3 == 'p') { + if (pcVar12[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + /* try { // try from 004269a4 to 005269a7 has its CatchHandler @ 00426ac8 */ + uVar8 = FUN_00426a90(param_1,0x45); + /* try { // try from 004269ac to 005269cf has its CatchHandler @ 0042670c */ + goto LAB_004264bc; + } + } + else { + if (cVar3 != 'i') { + piVar9 = (int *)0x0; + goto LAB_00425d9c; + } + if (pcVar12[1] == 'l') { + uVar8 = FUN_00429efc(param_1); + goto LAB_004264bc; + } + } + piVar9 = (int *)0x0; +LAB_00425dd4: + if (((cVar3 != 't') && (cVar3 != 'i')) || (pcVar12[1] != 'l')) + goto LAB_00425df4; + uVar7 = 0; + if (cVar3 == 't') { + uVar7 = FUN_004271e4(param_1); + } + *(long *)(param_1 + 0x18) = *(long *)(param_1 + 0x18) + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar5 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + break; + default: + goto switchD_00426168_default; + } + } + } + else { + /* try { // try from 00425bb8 to 00525bff has its CatchHandler @ 00425938 */ + if ((*pcVar12 != 'n') || ((pcVar12[1] != 'a' && (pcVar12[1] != 'w')))) break; + local_18 = FUN_00426a90(param_1,0x5f); + piVar9 = (int *)FUN_004271e4(param_1); + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + if (cVar3 != 'E') { + if (cVar3 == 'p') { + lVar5 = 0; + /* try { // try from 00425f90 to 00525f93 has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425c38 with catch @ 00425f94 */ + if (pcVar12[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar12 + 2; + /* try { // try from 00425fa4 to 00525fa7 has its CatchHandler @ 00425938 */ + /* catch() { ... } // from try @ 00425bb0 with catch @ 00425fa8 */ + lVar5 = FUN_00426a90(param_1,0x45); + goto switchD_004261e8_default; + } + } + else { + lVar5 = 0; + if ((cVar3 == 'i') && (pcVar12[1] == 'l')) { + lVar5 = FUN_00429efc(param_1); + goto switchD_004261e8_default; + } + } + goto LAB_004257ac; + } + lVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar12 + 1; + } +switchD_004261e8_default: + uVar7 = FUN_004245e0(param_1,0x3b,piVar9,lVar5); + /* try { // try from 00425c38 to 00525c3b has its CatchHandler @ 00425f94 */ + uVar7 = FUN_004245e0(param_1,0x3a,local_18,uVar7); + lVar5 = FUN_004245e0(param_1,0x39,piVar6,uVar7); + pcVar12 = *(char **)(param_1 + 0x18); + goto LAB_004257ac; + } + } + else if (iVar4 == 0x33) { + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_00425adc; + } +switchD_00425a68_caseD_1: + uVar7 = FUN_00429efc(param_1); + goto LAB_00425adc; + } + } +switchD_00425a68_default: + pcVar12 = *(char **)(param_1 + 0x18); + } +LAB_0042580c: + lVar5 = 0; + } +LAB_004257ac: + *(undefined4 *)(param_1 + 0x54) = uVar1; + if (*pcVar12 != 'E') { + return 0; + } + *(char **)(param_1 + 0x18) = pcVar12 + 1; + } + if (lVar5 == 0) { + return 0; + } + lVar5 = FUN_004245e0(param_1,0x2f,lVar5,0); + *plVar13 = lVar5; + if (lVar5 == 0) { + return 0; + } + pcVar16 = *(char **)(param_1 + 0x18); + plVar13 = (long *)(lVar5 + 0x10); + cVar3 = *pcVar16; + if (cVar3 == 'E') { + *(undefined8 *)(param_1 + 0x48) = uVar14; + *(char **)(param_1 + 0x18) = pcVar16 + 1; + /* try { // try from 00425678 to 0052567b has its CatchHandler @ 004258fc */ + /* try { // try from 00425680 to 005257af has its CatchHandler @ 00425288 */ + return local_8; + } + goto LAB_00425614; +switchD_004262d4_caseD_1: + cVar3 = *pcVar12; + /* try { // try from 004263e0 to 0052642b has its CatchHandler @ 0042631c */ + if (((cVar3 == 'm') || (cVar3 == 'p')) && (pcVar12[1] == cVar3)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + uVar8 = 0x36; + goto LAB_00425d88; + } + /* try { // try from 00426a84 to 00526a87 has its CatchHandler @ 00426adc */ + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + /* catch() { ... } // from try @ 00426a08 with catch @ 00426a8c */ + } +switchD_00426168_caseD_1: + uVar7 = FUN_00429efc(param_1); +LAB_00425d80: + uVar8 = 0x36; +LAB_00425d88: + piVar9 = (int *)FUN_004245e0(param_1,uVar8,piVar9,uVar7); + /* try { // try from 00425d90 to 00525d93 has its CatchHandler @ 00425ff8 */ + pcVar12 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar12; + goto LAB_00425d9c; +switchD_00426250_caseD_1: + cVar3 = *pcVar12; + /* try { // try from 0042668c to 0052668f has its CatchHandler @ 004266f8 */ + /* try { // try from 00426694 to 00526697 has its CatchHandler @ 0042631c */ + if (((cVar3 == 'm') || (cVar3 == 'p')) && (pcVar12[1] == cVar3)) { + cVar3 = **(char **)(param_1 + 0x18); + if (cVar3 != '_') { + /* catch() { ... } // from try @ 0042660c with catch @ 004266bc */ + uVar7 = FUN_00429efc(param_1,cVar3,pcVar12,0); + /* try { // try from 004266cc to 005266cf has its CatchHandler @ 0042631c */ + /* catch() { ... } // from try @ 00426464 with catch @ 004266d0 */ + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + goto LAB_00425e3c; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_004261e8_caseD_1; +} + + +================================================================== + +### FUNC 00426a90 (1876 bytes) name=FUN_00426a90 + +undefined8 FUN_00426a90(long param_1,char param_2) + +{ + undefined4 uVar1; + char cVar2; + int iVar3; + int *piVar4; + undefined8 uVar5; + long lVar6; + long lVar7; + undefined8 uVar8; + undefined8 uVar9; + char *pcVar10; + long *plVar11; + undefined8 *puVar12; + long local_8; + + /* try { // try from 00426a9c to 00526a9f has its CatchHandler @ 0042670c */ + /* catch() { ... } // from try @ 004267dc with catch @ 00426aa0 */ + pcVar10 = *(char **)(param_1 + 0x18); + /* try { // try from 00426ab0 to 00526ab3 has its CatchHandler @ 0042670c */ + /* catch() { ... } // from try @ 004268e4 with catch @ 00426ab4 */ + plVar11 = &local_8; + local_8 = 0; + /* try { // try from 00426ac4 to 00526ac7 has its CatchHandler @ 0042670c */ + /* catch() { ... } // from try @ 004269a4 with catch @ 00426ac8 */ + if (*pcVar10 == param_2) { + *(char **)(param_1 + 0x18) = pcVar10 + 1; + uVar5 = FUN_004245e0(param_1,0x2e,0,0); + return uVar5; + } + do { + uVar1 = *(undefined4 *)(param_1 + 0x54); + /* try { // try from 00426aec to 00526aef has its CatchHandler @ 0042670c */ + *(undefined4 *)(param_1 + 0x54) = 1; + /* catch() { ... } // from try @ 00426b10 with catch @ 00426af0 + catch() { ... } // from try @ 00426bdc with catch @ 00426af0 + catch() { ... } // from try @ 00426d9c with catch @ 00426af0 + catch() { ... } // from try @ 00426e68 with catch @ 00426af0 + catch() { ... } // from try @ 00426f04 with catch @ 00426af0 + catch() { ... } // from try @ 00426f48 with catch @ 00426af0 + catch() { ... } // from try @ 00427044 with catch @ 00426af0 + catch() { ... } // from try @ 00427124 with catch @ 00426af0 + catch() { ... } // from try @ 004274b4 with catch @ 00426af0 + catch() { ... } // from try @ 00427574 with catch @ 00426af0 + catch() { ... } // from try @ 00427694 with catch @ 00426af0 + catch() { ... } // from try @ 004277b8 with catch @ 00426af0 + catch() { ... } // from try @ 004277fc with catch @ 00426af0 + catch() { ... } // from try @ 004278cc with catch @ 00426af0 + catch() { ... } // from try @ 0042790c with catch @ 00426af0 + catch() { ... } // from try @ 004279f4 with catch @ 00426af0 + catch() { ... } // from try @ 00427a50 with catch @ 00426af0 + catch() { ... } // from try @ 00427a78 with catch @ 00426af0 + catch() { ... } // from try @ 00427a8c with catch @ 00426af0 + catch() { ... } // from try @ 00427aa0 with catch @ 00426af0 + catch() { ... } // from try @ 00427ab4 with catch @ 00426af0 + catch() { ... } // from try @ 00427ac8 with catch @ 00426af0 + catch() { ... } // from try @ 00427adc with catch @ 00426af0 + catch() { ... } // from try @ 00427af0 with catch @ 00426af0 + catch() { ... } // from try @ 00427b04 with catch @ 00426af0 + catch() { ... } // from try @ 00427b2c with catch @ 00426af0 + catch() { ... } // from try @ 00427b50 with catch @ 00426af0 + catch() { ... } // from try @ 00427b98 with catch @ 00426af0 + catch() { ... } // from try @ 00427bac with catch @ 00426af0 + catch() { ... } // from try @ 00427bd0 with catch @ 00426af0 + catch() { ... } // from try @ 00427be4 with catch @ 00426af0 */ + cVar2 = *pcVar10; + if (cVar2 == 'L') { + lVar6 = FUN_00429d84(param_1); +LAB_00426c54: + *(undefined4 *)(param_1 + 0x54) = uVar1; + if (lVar6 == 0) { + return 0; + } + } + else { + if (cVar2 == 'T') { + lVar6 = FUN_004253cc(param_1); + goto LAB_00426c54; + } + if (cVar2 == 's') { + if (pcVar10[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar10 + 2; + uVar5 = FUN_004271e4(param_1); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar9 = FUN_004255a4(param_1); + /* try { // try from 0042711c to 0052711f has its CatchHandler @ 00427aa4 */ + /* try { // try from 00427124 to 00527463 has its CatchHandler @ 00426af0 */ + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar9); + } + lVar6 = FUN_004245e0(param_1,1,uVar5,uVar8); + } + else { + if (pcVar10[1] != 'p') goto LAB_00426b44; + *(char **)(param_1 + 0x18) = pcVar10 + 2; + uVar5 = FUN_00429efc(param_1); + lVar6 = FUN_004245e0(param_1,0x4a,uVar5,0); + } + goto LAB_00426c54; + } + /* try { // try from 00426b10 to 00526b9b has its CatchHandler @ 00426af0 */ + if (cVar2 == 'f') { + if (pcVar10[1] != 'p') goto LAB_00426b44; + *(char **)(param_1 + 0x18) = pcVar10 + 2; + if (pcVar10[2] == 'T') { + lVar7 = 0; + *(char **)(param_1 + 0x18) = pcVar10 + 3; + } + else { + iVar3 = FUN_0042529c(param_1); + if (iVar3 + 1 == 0) goto switchD_00426de8_default; + lVar7 = (long)(iVar3 + 1); + } + iVar3 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar3) goto switchD_00426de8_default; + *(int *)(param_1 + 0x28) = iVar3 + 1; + lVar6 = *(long *)(param_1 + 0x20) + (long)iVar3 * 0x18; + if (lVar6 == 0) goto switchD_00426de8_default; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar3 * 0x18) = 6; + *(long *)(lVar6 + 8) = lVar7; + } + else { + if (9 < (byte)(cVar2 - 0x30U)) { + if (cVar2 == 'o') { + if (pcVar10[1] == 'n') { + *(char **)(param_1 + 0x18) = pcVar10 + 2; + goto LAB_00426bb8; + } + } + else if (((cVar2 == 't') || (cVar2 == 'i')) && (pcVar10[1] == 'l')) { + uVar5 = 0; + if (cVar2 == 't') { + uVar5 = FUN_004271e4(param_1); + pcVar10 = *(char **)(param_1 + 0x18); + } + /* try { // try from 00426d9c to 00526e27 has its CatchHandler @ 00426af0 */ + *(char **)(param_1 + 0x18) = pcVar10 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar6 = FUN_004245e0(param_1,0x30,uVar5,uVar8); + goto LAB_00426c54; + } +LAB_00426b44: + piVar4 = (int *)FUN_0042899c(param_1); + if (piVar4 == (int *)0x0) goto switchD_00426de8_default; + iVar3 = *piVar4; + if (iVar3 == 0x31) { + puVar12 = *(undefined8 **)(piVar4 + 2); + pcVar10 = (char *)*puVar12; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar12 + 2) + -2; + iVar3 = strcmp(pcVar10,"st"); + if (iVar3 != 0) { + switch(*(undefined4 *)((long)puVar12 + 0x14)) { + case 0: + goto switchD_00426de8_caseD_0; + case 1: + goto switchD_00426e10_caseD_1; + case 2: + goto switchD_00426e10_caseD_2; + case 3: + goto switchD_00426e10_caseD_3; + default: + goto switchD_00426de8_default; + } + } + uVar5 = FUN_004271e4(param_1); + } + else { + if (iVar3 == 0x32) { + switch(piVar4[2]) { + case 0: +switchD_00426de8_caseD_0: + lVar6 = FUN_004245e0(param_1,0x35,piVar4,0); + goto LAB_00426c54; + case 1: + goto switchD_00426de8_caseD_1; + case 2: + pcVar10 = (char *)0x0; +switchD_00426e10_caseD_2: + /* try { // try from 00426f04 to 00526f07 has its CatchHandler @ 00426af0 */ + if ((((char *)**(undefined8 **)(piVar4 + 2))[1] == 'c') && + ((cVar2 = *(char *)**(undefined8 **)(piVar4 + 2), (byte)(cVar2 + 0x8eU) < 2 || + ((byte)(cVar2 + 0x9dU) < 2)))) { + uVar5 = FUN_004271e4(param_1); + } + else { + uVar5 = FUN_00429efc(param_1); + } + iVar3 = strcmp(pcVar10,"cl"); + if (iVar3 == 0) { + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar3 = strcmp(pcVar10,"dt"); + /* try { // try from 00426f40 to 00526f43 has its CatchHandler @ 00427ab8 */ + /* try { // try from 00426f48 to 00527003 has its CatchHandler @ 00426af0 */ + if ((iVar3 == 0) || (iVar3 = strcmp(pcVar10,"pt"), iVar3 == 0)) { + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar9 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar9); + } + } + else { + uVar8 = FUN_00429efc(param_1); + } + } + uVar5 = FUN_004245e0(param_1,0x38,uVar5,uVar8); + lVar6 = FUN_004245e0(param_1,0x37,piVar4,uVar5); + goto LAB_00426c54; + case 3: + pcVar10 = (char *)0x0; +switchD_00426e10_caseD_3: + iVar3 = strcmp(pcVar10,"qu"); + if (iVar3 == 0) { + uVar5 = FUN_00429efc(param_1); + uVar8 = FUN_00429efc(param_1); + uVar9 = FUN_00429efc(param_1); + } + else { + /* try { // try from 00426e60 to 00526e63 has its CatchHandler @ 00427b54 */ + if ((*pcVar10 != 'n') || ((pcVar10[1] != 'a' && (pcVar10[1] != 'w')))) + goto switchD_00426de8_default; + /* try { // try from 00426e68 to 00526e6b has its CatchHandler @ 00426af0 */ + uVar5 = FUN_00426a90(param_1,0x5f); + uVar8 = FUN_004271e4(param_1); + pcVar10 = *(char **)(param_1 + 0x18); + cVar2 = *pcVar10; + if (cVar2 == 'E') { + uVar9 = 0; + *(char **)(param_1 + 0x18) = pcVar10 + 1; + } + else if (cVar2 == 'p') { + if (pcVar10[1] != 'i') goto switchD_00426de8_default; + *(char **)(param_1 + 0x18) = pcVar10 + 2; + uVar9 = FUN_00426a90(param_1,0x45); + } + else { + if ((cVar2 != 'i') || (pcVar10[1] != 'l')) { +switchD_00426de8_default: + *(undefined4 *)(param_1 + 0x54) = uVar1; + return 0; + /* try { // try from 00426d70 to 00526d73 has its CatchHandler @ 00427b64 */ + } + uVar9 = FUN_00429efc(param_1); + } + } + uVar8 = FUN_004245e0(param_1,0x3b,uVar8,uVar9); + /* try { // try from 00426ecc to 00526ecf has its CatchHandler @ 00427b30 */ + uVar5 = FUN_004245e0(param_1,0x3a,uVar5,uVar8); + lVar6 = FUN_004245e0(param_1,0x39,piVar4,uVar5); + goto LAB_00426c54; + default: + goto switchD_00426de8_default; + } + } + if (iVar3 != 0x33) goto switchD_00426de8_default; + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar5 = FUN_00426a90(param_1,0x45); + goto LAB_00426b8c; + } +switchD_00426de8_caseD_1: + uVar5 = FUN_00429efc(param_1); + } +LAB_00426b8c: + lVar6 = FUN_004245e0(param_1,0x36,piVar4,uVar5); + goto LAB_00426c54; + } +LAB_00426bb8: + lVar6 = FUN_00428b90(param_1); + if (lVar6 == 0) goto switchD_00426de8_default; + /* try { // try from 00426bd4 to 00526bd7 has its CatchHandler @ 00427ae0 */ + if (**(char **)(param_1 + 0x18) == 'I') { + uVar5 = FUN_004255a4(param_1); + lVar6 = FUN_004245e0(param_1,4,lVar6,uVar5); + goto LAB_00426c54; + } + } + *(undefined4 *)(param_1 + 0x54) = uVar1; + } + /* try { // try from 00426bdc to 00526d43 has its CatchHandler @ 00426af0 */ + lVar6 = FUN_004245e0(param_1,0x2e,lVar6,0); + *plVar11 = lVar6; + if (lVar6 == 0) { + return 0; + } + pcVar10 = *(char **)(param_1 + 0x18); + plVar11 = (long *)(lVar6 + 0x10); + if (*pcVar10 == param_2) { + *(char **)(param_1 + 0x18) = pcVar10 + 1; + return local_8; + } + } while( true ); +switchD_00426e10_caseD_1: + cVar2 = *pcVar10; + /* try { // try from 0042703c to 0052703f has its CatchHandler @ 00427b88 */ + if (((cVar2 == 'm') || (cVar2 == 'p')) && (pcVar10[1] == cVar2)) { + /* try { // try from 00427044 to 005270e3 has its CatchHandler @ 00426af0 */ + if (**(char **)(param_1 + 0x18) != '_') { + uVar5 = FUN_00429efc(param_1); + uVar5 = FUN_004245e0(param_1,0x38,uVar5,uVar5); + goto LAB_00426b8c; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_00426de8_caseD_1; +} + + +================================================================== + +### FUNC 004271e4 (5800 bytes) name=FUN_004271e4 + +int * FUN_004271e4(long param_1) + +{ + bool bVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + int iVar6; + byte bVar7; + char cVar8; + code *pcVar9; + uint uVar10; + int iVar11; + long *plVar12; + int *piVar13; + undefined8 uVar14; + long lVar15; + ulong uVar16; + undefined8 uVar17; + undefined8 uVar18; + ushort uVar19; + long lVar20; + byte *pbVar21; + byte *pbVar22; + byte *pbVar23; + char *pcVar24; + int *local_8; + + pbVar22 = *(byte **)(param_1 + 0x18); + bVar7 = *pbVar22; + if ((bVar7 == 0x56 || bVar7 == 0x72) || (uVar10 = (uint)bVar7, uVar10 == 0x4b)) { + plVar12 = (long *)FUN_004246e0(param_1,&local_8,0); + if (plVar12 == (long *)0x0) { + return (int *)0x0; + } + if (**(char **)(param_1 + 0x18) == 'F') { + piVar13 = (int *)FUN_0042a564(param_1); + *plVar12 = (long)piVar13; + } + else { + piVar13 = (int *)FUN_004271e4(); + *plVar12 = (long)piVar13; + } + if (piVar13 == (int *)0x0) { + return (int *)0x0; + } + if (*piVar13 - 0x1fU < 2) { + lVar20 = *(long *)(piVar13 + 2); + *(int **)(piVar13 + 2) = local_8; + local_8 = (int *)*plVar12; + *plVar12 = lVar20; + } + if (local_8 == (int *)0x0) { + return (int *)0x0; + } + iVar11 = *(int *)(param_1 + 0x38); + if (*(int *)(param_1 + 0x3c) <= iVar11) { + return (int *)0x0; + } + *(int **)(*(long *)(param_1 + 0x30) + (long)iVar11 * 8) = local_8; + *(int *)(param_1 + 0x38) = iVar11 + 1; + return local_8; + } + switch(uVar10) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x4e: + case 0x5a: + local_8 = (int *)FUN_00429114(param_1); + break; + default: + goto switchD_00427260_caseD_3a; + case 0x41: + pbVar21 = pbVar22 + 1; + *(byte **)(param_1 + 0x18) = pbVar21; + if (pbVar22[1] == 0x5f) { + /* try { // try from 00427b98 to 00527b9b has its CatchHandler @ 00426af0 */ + lVar20 = 0; + } + else { + if ((byte)(pbVar22[1] - 0x30) < 10) { + pbVar22 = pbVar22 + 2; + do { + pbVar23 = pbVar22; + *(byte **)(param_1 + 0x18) = pbVar23; + pbVar22 = pbVar23 + 1; + } while ((byte)(*pbVar23 - 0x30) < 10); + lVar20 = FUN_00424680(param_1,pbVar21,(int)pbVar23 - (int)pbVar21); +joined_r0x00427cbc: + if (lVar20 == 0) goto LAB_00427408; + pbVar21 = *(byte **)(param_1 + 0x18); + } + else { + uVar2 = *(undefined4 *)(param_1 + 0x54); + *(undefined4 *)(param_1 + 0x54) = 1; + /* catch() { ... } // from try @ 00427c1c with catch @ 00427c00 + catch() { ... } // from try @ 00427dc0 with catch @ 00427c00 + catch() { ... } // from try @ 00427e2c with catch @ 00427c00 + catch() { ... } // from try @ 00427f4c with catch @ 00427c00 + catch() { ... } // from try @ 004280cc with catch @ 00427c00 + catch() { ... } // from try @ 004280f4 with catch @ 00427c00 */ + bVar7 = pbVar22[1]; + if (bVar7 == 0x4c) { + lVar20 = FUN_00429d84(param_1); +LAB_00427cb8: + *(undefined4 *)(param_1 + 0x54) = uVar2; + goto joined_r0x00427cbc; + } + if (bVar7 == 0x54) { + lVar20 = FUN_004253cc(param_1); + goto LAB_00427cb8; + } + if (bVar7 == 0x73) { + if (pbVar22[2] == 0x72) { + *(byte **)(param_1 + 0x18) = pbVar22 + 3; + uVar14 = FUN_004271e4(param_1); + uVar17 = FUN_00428b90(param_1); + /* try { // try from 00428318 to 00528337 has its CatchHandler @ 0042811c */ + if (**(char **)(param_1 + 0x18) == 'I') { + uVar18 = FUN_004255a4(param_1); + uVar17 = FUN_004245e0(param_1,4,uVar17,uVar18); + lVar20 = FUN_004245e0(param_1,1,uVar14,uVar17); + } + else { + lVar20 = FUN_004245e0(param_1,1,uVar14,uVar17); + /* try { // try from 00428340 to 00528343 has its CatchHandler @ 00428570 */ + } + } + else { + if (pbVar22[2] != 0x70) goto LAB_00427c5c; + *(byte **)(param_1 + 0x18) = pbVar22 + 3; + uVar14 = FUN_00429efc(param_1); + lVar20 = FUN_004245e0(param_1,0x4a,uVar14,0); + } + goto LAB_00427cb8; + } + /* try { // try from 00427c1c to 00527d3b has its CatchHandler @ 00427c00 */ + if (bVar7 != 0x66) { + if ((byte)(bVar7 - 0x30) < 10) { +LAB_00427d30: + lVar20 = FUN_00428b90(param_1); + if (lVar20 != 0) { + pbVar21 = *(byte **)(param_1 + 0x18); + /* try { // try from 00427d4c to 00527d4f has its CatchHandler @ 004280d0 */ + if (*pbVar21 != 0x49) { + *(undefined4 *)(param_1 + 0x54) = uVar2; + goto LAB_004273f8; + } + uVar14 = FUN_004255a4(param_1); + lVar20 = FUN_004245e0(param_1,4,lVar20,uVar14); + goto LAB_00427cb8; + } + } + else { + if (bVar7 == 0x6f) { + if (pbVar22[2] == 0x6e) { + *(byte **)(param_1 + 0x18) = pbVar22 + 3; + goto LAB_00427d30; + } + } + else if (((bVar7 == 0x74) || (bVar7 == 0x69)) && (pbVar22[2] == 0x6c)) { + uVar14 = 0; + if (bVar7 == 0x74) { + uVar14 = FUN_004271e4(param_1); + } + /* try { // try from 004281a8 to 005281ab has its CatchHandler @ 00428588 */ + *(long *)(param_1 + 0x18) = *(long *)(param_1 + 0x18) + 2; + uVar17 = FUN_00426a90(param_1,0x45); + lVar20 = FUN_004245e0(param_1,0x30,uVar14,uVar17); + goto LAB_00427cb8; + } +LAB_00427c5c: + piVar13 = (int *)FUN_0042899c(param_1); + if (piVar13 != (int *)0x0) { + iVar11 = *piVar13; + if (iVar11 == 0x31) { + pcVar24 = (char *)**(undefined8 **)(piVar13 + 2); + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(*(undefined8 **)(piVar13 + 2) + 2) + -2; + iVar11 = strcmp(pcVar24,"st"); + if (iVar11 == 0) { + uVar14 = FUN_004271e4(param_1); +LAB_00427ca4: + lVar20 = FUN_004245e0(param_1,0x36,piVar13,uVar14); + goto LAB_00427cb8; + } + /* try { // try from 00428204 to 00528207 has its CatchHandler @ 00428578 */ + /* try { // try from 0042820c to 00528233 has its CatchHandler @ 00428588 */ + switch(*(undefined4 *)(*(long *)(piVar13 + 2) + 0x14)) { + case 0: + goto switchD_00427ff4_caseD_0; + case 1: + cVar8 = *pcVar24; + if (((cVar8 == 'm') || (cVar8 == 'p')) && (pcVar24[1] == cVar8)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar14 = FUN_00429efc(param_1); + uVar14 = FUN_004245e0(param_1,0x38,uVar14,uVar14); + goto LAB_00427ca4; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_00427ff4_caseD_1; + case 2: + goto switchD_00428220_caseD_2; + case 3: + goto switchD_00428220_caseD_3; + } + } + else if (iVar11 == 0x32) { + switch(piVar13[2]) { + case 0: +switchD_00427ff4_caseD_0: + lVar20 = FUN_004245e0(param_1,0x35,piVar13,0); + goto LAB_00427cb8; + case 1: + goto switchD_00427ff4_caseD_1; + case 2: + pcVar24 = (char *)0x0; +switchD_00428220_caseD_2: + /* try { // try from 004280f4 to 005280f7 has its CatchHandler @ 00427c00 */ + if ((((char *)**(undefined8 **)(piVar13 + 2))[1] == 'c') && + ((cVar8 = *(char *)**(undefined8 **)(piVar13 + 2), (byte)(cVar8 + 0x8eU) < 2 || + ((byte)(cVar8 + 0x9dU) < 2)))) { + uVar14 = FUN_004271e4(param_1); + } + else { + /* catch() { ... } // from try @ 00427e00 with catch @ 004280f8 */ + uVar14 = FUN_00429efc(param_1); + } + iVar11 = strcmp(pcVar24,"cl"); + if (iVar11 == 0) { + /* try { // try from 004284c0 to 005284c3 has its CatchHandler @ 00428520 */ + uVar17 = FUN_00426a90(param_1,0x45); + /* try { // try from 004284c8 to 005284d3 has its CatchHandler @ 00428588 */ + } + else { + /* catch() { ... } // from try @ 00428138 with catch @ 0042811c + catch() { ... } // from try @ 00428318 with catch @ 0042811c + catch() { ... } // from try @ 004284f4 with catch @ 0042811c + catch() { ... } // from try @ 0042856c with catch @ 0042811c */ + iVar11 = strcmp(pcVar24,"dt"); + /* try { // try from 00428138 to 00528157 has its CatchHandler @ 0042811c */ + if ((iVar11 == 0) || (iVar11 = strcmp(pcVar24,"pt"), iVar11 == 0)) { + uVar17 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar18 = FUN_004255a4(param_1); + uVar17 = FUN_004245e0(param_1,4,uVar17,uVar18); + } + } + else { + uVar17 = FUN_00429efc(param_1); + } + } + uVar14 = FUN_004245e0(param_1,0x38,uVar14,uVar17); + /* try { // try from 00428174 to 00528177 has its CatchHandler @ 00428570 */ + lVar20 = FUN_004245e0(param_1,0x37,piVar13,uVar14); + goto LAB_00427cb8; + case 3: + pcVar24 = (char *)0x0; +switchD_00428220_caseD_3: + iVar11 = strcmp(pcVar24,"qu"); + if (iVar11 == 0) { + uVar14 = FUN_00429efc(param_1); + uVar17 = FUN_00429efc(param_1); + uVar18 = FUN_00429efc(param_1); +LAB_0042809c: + uVar17 = FUN_004245e0(param_1,0x3b,uVar17,uVar18); + /* catch() { ... } // from try @ 00427f44 with catch @ 004280bc */ + uVar14 = FUN_004245e0(param_1,0x3a,uVar14,uVar17); + /* try { // try from 004280cc to 005280cf has its CatchHandler @ 00427c00 */ + /* catch() { ... } // from try @ 00427d4c with catch @ 004280d0 */ + lVar20 = FUN_004245e0(param_1,0x39,piVar13,uVar14); + goto LAB_00427cb8; + } + if ((*pcVar24 == 'n') && ((pcVar24[1] == 'a' || (pcVar24[1] == 'w')))) { + uVar14 = FUN_00426a90(param_1,0x5f); + uVar17 = FUN_004271e4(param_1); + pcVar24 = *(char **)(param_1 + 0x18); + cVar8 = *pcVar24; + if (cVar8 == 'E') { + uVar18 = 0; + *(char **)(param_1 + 0x18) = pcVar24 + 1; + goto LAB_0042809c; + } + if (cVar8 == 'p') { + if (pcVar24[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar24 + 2; + uVar18 = FUN_00426a90(param_1,0x45); + goto LAB_0042809c; + } + } + else if ((cVar8 == 'i') && (pcVar24[1] == 'l')) { + uVar18 = FUN_00429efc(param_1); + goto LAB_0042809c; + } + } + } + } + else if (iVar11 == 0x33) { + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar14 = FUN_00426a90(param_1,0x45); + goto LAB_00427ca4; + } +switchD_00427ff4_caseD_1: + uVar14 = FUN_00429efc(param_1); + goto LAB_00427ca4; + } + } + } +switchD_00427ff4_default: + /* try { // try from 00427f44 to 00527f47 has its CatchHandler @ 004280bc */ + *(undefined4 *)(param_1 + 0x54) = uVar2; + /* try { // try from 00427f4c to 005280b7 has its CatchHandler @ 00427c00 */ + goto LAB_00427408; + } + /* try { // try from 00427dc0 to 00527def has its CatchHandler @ 00427c00 */ + if (pbVar22[2] != 0x70) goto LAB_00427c5c; + *(byte **)(param_1 + 0x18) = pbVar22 + 3; + if (pbVar22[3] == 0x54) { + iVar11 = 0; + *(byte **)(param_1 + 0x18) = pbVar22 + 4; + } + else { + iVar11 = FUN_0042529c(param_1); + iVar11 = iVar11 + 1; + if (iVar11 == 0) goto switchD_00427ff4_default; + } + iVar6 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar6) goto switchD_00427ff4_default; + /* try { // try from 00427e00 to 00527e03 has its CatchHandler @ 004280f8 */ + *(int *)(param_1 + 0x28) = iVar6 + 1; + lVar20 = *(long *)(param_1 + 0x20) + (long)iVar6 * 0x18; + if (lVar20 == 0) goto switchD_00427ff4_default; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar6 * 0x18) = 6; + *(long *)(lVar20 + 8) = (long)iVar11; + *(undefined4 *)(param_1 + 0x54) = uVar2; + /* try { // try from 00427e2c to 00527efb has its CatchHandler @ 00427c00 */ + pbVar21 = *(byte **)(param_1 + 0x18); + } +LAB_004273f8: + if (*pbVar21 != 0x5f) goto LAB_00427408; + } + /* catch() { ... } // from try @ 004277f4 with catch @ 00427b9c */ + *(byte **)(param_1 + 0x18) = pbVar21 + 1; + /* try { // try from 00427bac to 00527baf has its CatchHandler @ 00426af0 */ + uVar14 = FUN_004271e4(param_1); + /* catch() { ... } // from try @ 004278a8 with catch @ 00427bb0 */ + /* catch() { ... } // from try @ 004277b0 with catch @ 00427bc0 */ + local_8 = (int *)FUN_004245e0(param_1,0x2a,lVar20,uVar14); + break; + case 0x43: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x25,uVar14,0); + break; + case 0x44: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + if (pbVar22[1] == 0) { + return (int *)0x0; + } + *(byte **)(param_1 + 0x18) = pbVar22 + 2; + /* try { // try from 004274ac to 005274af has its CatchHandler @ 00427af4 */ + /* try { // try from 004274b4 to 00527523 has its CatchHandler @ 00426af0 */ + switch(pbVar22[1]) { + case 0x46: + /* catch() { ... } // from try @ 00426bd4 with catch @ 00427ae0 */ + iVar11 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar11) { + uRam0000000000000000 = 0; + /* WARNING: Does not return */ + pcVar9 = (code *)SoftwareBreakpoint(1000,0x427d1c); + (*pcVar9)(); + } + /* try { // try from 00427af0 to 00527af3 has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 004274ac with catch @ 00427af4 */ + /* try { // try from 00427b04 to 00527b07 has its CatchHandler @ 00426af0 */ + *(int *)(param_1 + 0x28) = iVar11 + 1; + /* catch() { ... } // from try @ 00427980 with catch @ 00427b08 */ + local_8 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x2c; + /* try { // try from 00427b2c to 00527b2f has its CatchHandler @ 00426af0 */ + bVar1 = (byte)(pbVar22[2] - 0x30) < 10; + /* catch() { ... } // from try @ 00426ecc with catch @ 00427b30 */ + *(ushort *)(local_8 + 4) = (ushort)bVar1; + if (bVar1) { + FUN_00424c94(param_1 + 0x18); + } + piVar13 = local_8; + uVar14 = FUN_004271e4(param_1); + *(undefined8 *)(piVar13 + 2) = uVar14; + if (*(long *)(local_8 + 2) == 0) { + return (int *)0x0; + } + /* try { // try from 00427b50 to 00527b53 has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 00426e60 with catch @ 00427b54 */ + FUN_00424c94(param_1 + 0x18); + pcVar24 = *(char **)(param_1 + 0x18); + uVar19 = 0; + /* catch() { ... } // from try @ 00426d70 with catch @ 00427b64 */ + if (*pcVar24 != '\0') { + *(char **)(param_1 + 0x18) = pcVar24 + 1; + uVar19 = (ushort)(*pcVar24 == 's'); + } + *(ushort *)((long)local_8 + 0x12) = uVar19; + return local_8; + default: + goto switchD_00427260_caseD_3a; + case 0x54: + case 0x74: + uVar2 = *(undefined4 *)(param_1 + 0x54); + *(undefined4 *)(param_1 + 0x54) = 1; + bVar7 = pbVar22[2]; + if (bVar7 == 0x4c) { + lVar20 = FUN_00429d84(param_1); + } + else { + /* try { // try from 004279f4 to 005279f7 has its CatchHandler @ 00426af0 */ + if (bVar7 == 0x54) { + lVar20 = FUN_004253cc(param_1); + } + else if (bVar7 == 0x73) { + if (pbVar22[3] == 0x72) { + *(byte **)(param_1 + 0x18) = pbVar22 + 4; + uVar14 = FUN_004271e4(param_1); + uVar17 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar18 = FUN_004255a4(param_1); + /* catch() { ... } // from try @ 00428694 with catch @ 004287f8 */ + uVar17 = FUN_004245e0(param_1,4,uVar17,uVar18); + /* try { // try from 00428808 to 0052880b has its CatchHandler @ 004285cc */ + /* catch() { ... } // from try @ 00428820 with catch @ 0042880c + catch() { ... } // from try @ 004288d0 with catch @ 0042880c + catch() { ... } // from try @ 004289f0 with catch @ 0042880c + catch() { ... } // from try @ 00428a5c with catch @ 0042880c + catch() { ... } // from try @ 00428a78 with catch @ 0042880c + catch() { ... } // from try @ 00428a8c with catch @ 0042880c + catch() { ... } // from try @ 00428aa0 with catch @ 0042880c */ + lVar20 = FUN_004245e0(param_1,1,uVar14,uVar17); + } + else { + lVar20 = FUN_004245e0(param_1,1,uVar14,uVar17); + } + } + else { + if (pbVar22[3] != 0x70) goto LAB_00427a40; + *(byte **)(param_1 + 0x18) = pbVar22 + 4; + uVar14 = FUN_00429efc(param_1); + lVar20 = FUN_004245e0(param_1,0x4a,uVar14,0); + } + } + else if (bVar7 == 0x66) { + if (pbVar22[3] != 0x70) goto LAB_00427a40; + *(byte **)(param_1 + 0x18) = pbVar22 + 4; + if (pbVar22[4] == 0x54) { + iVar11 = 0; + *(byte **)(param_1 + 0x18) = pbVar22 + 5; + } + else { + /* try { // try from 004282a4 to 005282a7 has its CatchHandler @ 00428570 */ + iVar11 = FUN_0042529c(param_1); + iVar11 = iVar11 + 1; + if (iVar11 == 0) goto LAB_004282b0; + } + iVar6 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar6) goto LAB_004282b0; + *(int *)(param_1 + 0x28) = iVar6 + 1; + lVar15 = *(long *)(param_1 + 0x20) + (long)iVar6 * 0x18; + lVar20 = 0; + if (lVar15 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar6 * 0x18) = 6; + *(long *)(lVar15 + 8) = (long)iVar11; + lVar20 = lVar15; + } + } + else { + if ((byte)(bVar7 - 0x30) < 10) { +LAB_00427e48: + lVar20 = FUN_00428b90(param_1); + if (lVar20 != 0) { + if (**(char **)(param_1 + 0x18) == 'I') { + uVar14 = FUN_004255a4(param_1); + lVar20 = FUN_004245e0(param_1,4,lVar20,uVar14); + } + goto switchD_004284b4_default; + } + } + else { + if (bVar7 == 0x6f) { + if (pbVar22[3] == 0x6e) { + *(byte **)(param_1 + 0x18) = pbVar22 + 4; + goto LAB_00427e48; + } + } + else if (((bVar7 == 0x74) || (bVar7 == 0x69)) && (pbVar22[3] == 0x6c)) { + uVar14 = 0; + if (bVar7 == 0x74) { + uVar14 = FUN_004271e4(param_1); + } + *(long *)(param_1 + 0x18) = *(long *)(param_1 + 0x18) + 2; + uVar17 = FUN_00426a90(param_1,0x45); + lVar20 = FUN_004245e0(param_1,0x30,uVar14,uVar17); + goto switchD_004284b4_default; + } +LAB_00427a40: + piVar13 = (int *)FUN_0042899c(param_1); + /* try { // try from 00427a48 to 00527a4b has its CatchHandler @ 00427bd4 */ + if (piVar13 != (int *)0x0) { + /* try { // try from 00427a50 to 00527a53 has its CatchHandler @ 00426af0 */ + iVar11 = *piVar13; + if (iVar11 == 0x31) { + pcVar24 = (char *)**(undefined8 **)(piVar13 + 2); + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(*(undefined8 **)(piVar13 + 2) + 2) + -2; + iVar11 = strcmp(pcVar24,"st"); + if (iVar11 != 0) { + lVar20 = 0; + switch(*(undefined4 *)(*(long *)(piVar13 + 2) + 0x14)) { + case 0: + goto switchD_004284b4_caseD_0; + case 1: + goto switchD_0042829c_caseD_1; + case 2: + goto switchD_0042829c_caseD_2; + case 3: + goto switchD_0042829c_caseD_3; + default: + goto switchD_004284b4_default; + } + } + uVar14 = FUN_004271e4(param_1); + } + else { + if (iVar11 == 0x32) { + /* try { // try from 00428490 to 00528493 has its CatchHandler @ 00428588 */ + lVar20 = 0; + switch(piVar13[2]) { + case 0: +switchD_004284b4_caseD_0: + /* try { // try from 0042869c to 0052869f has its CatchHandler @ 004285cc */ + lVar20 = FUN_004245e0(param_1,0x35,piVar13,0); + break; + case 1: + goto switchD_004284b4_caseD_1; + case 2: + pcVar24 = (char *)0x0; +switchD_0042829c_caseD_2: + if (((char *)**(undefined8 **)(piVar13 + 2))[1] == 'c') { + cVar8 = *(char *)**(undefined8 **)(piVar13 + 2); + bVar7 = cVar8 + 0x8e; + if ((1 < bVar7) && (1 < (byte)(cVar8 + 0x9dU))) goto LAB_004284e4; + uVar14 = FUN_004271e4(param_1,bVar7,0); + } + else { +LAB_004284e4: + uVar14 = FUN_00429efc(param_1); + } + /* try { // try from 004284f4 to 005284f7 has its CatchHandler @ 0042811c */ + iVar11 = strcmp(pcVar24,"cl"); + if (iVar11 == 0) { + uVar17 = FUN_00426a90(param_1,0x45); + } + else { + iVar11 = strcmp(pcVar24,"dt"); + /* catch() { ... } // from try @ 004284c0 with catch @ 00428520 */ + if ((iVar11 == 0) || (iVar11 = strcmp(pcVar24,"pt"), iVar11 == 0)) { + uVar17 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar18 = FUN_004255a4(param_1); + uVar17 = FUN_004245e0(param_1,4,uVar17,uVar18); + } + } + else { + uVar17 = FUN_00429efc(param_1); + } + } + uVar14 = FUN_004245e0(param_1,0x38,uVar14,uVar17); + /* try { // try from 0042856c to 0052856f has its CatchHandler @ 0042811c */ + lVar20 = FUN_004245e0(param_1,0x37,piVar13,uVar14); + /* catch() { ... } // from try @ 00428174 with catch @ 00428570 + catch() { ... } // from try @ 004282a4 with catch @ 00428570 + catch() { ... } // from try @ 00428340 with catch @ 00428570 */ + break; + case 3: + /* catch() { ... } // from try @ 004285dc with catch @ 004285cc + catch() { ... } // from try @ 0042869c with catch @ 004285cc + catch() { ... } // from try @ 00428808 with catch @ 004285cc */ + pcVar24 = (char *)0x0; +switchD_0042829c_caseD_3: + /* try { // try from 004285dc to 0052864b has its CatchHandler @ 004285cc */ + iVar11 = strcmp(pcVar24,"qu"); + if (iVar11 == 0) { + uVar14 = FUN_00429efc(param_1); + uVar17 = FUN_00429efc(param_1); + uVar18 = FUN_00429efc(param_1); + } + else { + if ((*pcVar24 != 'n') || ((pcVar24[1] != 'a' && (pcVar24[1] != 'w')))) + goto LAB_004282b0; + uVar14 = FUN_00426a90(param_1,0x5f); + uVar17 = FUN_004271e4(param_1); + pcVar24 = *(char **)(param_1 + 0x18); + cVar8 = *pcVar24; + if (cVar8 != 'E') { + if (cVar8 == 'p') { + if (pcVar24[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar24 + 2; + uVar18 = FUN_00426a90(param_1,0x45); + goto LAB_00428654; + } + } + else if ((cVar8 == 'i') && (pcVar24[1] == 'l')) { + uVar18 = FUN_00429efc(param_1); + goto LAB_00428654; + } + goto LAB_004282b0; + } + uVar18 = 0; + *(char **)(param_1 + 0x18) = pcVar24 + 1; + } +LAB_00428654: + uVar17 = FUN_004245e0(param_1,0x3b,uVar17,uVar18); + uVar14 = FUN_004245e0(param_1,0x3a,uVar14,uVar17); + lVar20 = FUN_004245e0(param_1,0x39,piVar13,uVar14); + /* try { // try from 00428694 to 00528697 has its CatchHandler @ 004287f8 */ + } + goto switchD_004284b4_default; + } + /* catch() { ... } // from try @ 00427904 with catch @ 00427a68 */ + if (iVar11 != 0x33) goto LAB_004282b0; + /* try { // try from 00427a78 to 00527a7b has its CatchHandler @ 00426af0 */ + if (**(char **)(param_1 + 0x18) == '_') { + /* try { // try from 00428820 to 0052887f has its CatchHandler @ 0042880c */ + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar14 = FUN_00426a90(param_1,0x45); + goto LAB_00427a88; + } +switchD_004284b4_caseD_1: + /* catch() { ... } // from try @ 0042756c with catch @ 00427a7c */ + uVar14 = FUN_00429efc(param_1); + } +LAB_00427a88: + /* try { // try from 00427a8c to 00527a8f has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 0042796c with catch @ 00427a90 */ + lVar20 = FUN_004245e0(param_1,0x36,piVar13,uVar14); + goto switchD_004284b4_default; + } + } +LAB_004282b0: + lVar20 = 0; + } + } +switchD_004284b4_default: + *(undefined4 *)(param_1 + 0x54) = uVar2; + /* try { // try from 00427aa0 to 00527aa3 has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 0042711c with catch @ 00427aa4 */ + local_8 = (int *)FUN_004245e0(param_1,0x42,lVar20,0); + /* try { // try from 00427ab4 to 00527ab7 has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 00426f40 with catch @ 00427ab8 */ + if (local_8 == (int *)0x0) { + return (int *)0x0; + } + pcVar24 = *(char **)(param_1 + 0x18); + if (*pcVar24 == '\0') { + return (int *)0x0; + } + /* try { // try from 00427ac8 to 00527acb has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 0042768c with catch @ 00427acc */ + *(char **)(param_1 + 0x18) = pcVar24 + 1; + if (*pcVar24 != 'E') { + return (int *)0x0; + } + goto LAB_00427348; + case 0x61: + piVar13 = (int *)FUN_00424680(param_1,&DAT_0047bc68,4); + return piVar13; + case 100: + iVar11 = *(int *)(param_1 + 0x28); + /* try { // try from 0042796c to 0052796f has its CatchHandler @ 00427a90 */ + if (iVar11 < *(int *)(param_1 + 0x2c)) { + /* try { // try from 00427980 to 00527983 has its CatchHandler @ 00427b08 */ + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + *(undefined ***)(piVar13 + 2) = &PTR_s_decimal64_004f96d0; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 9; + return piVar13; + } + } + break; + case 0x65: + iVar11 = *(int *)(param_1 + 0x28); + if (iVar11 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + *(undefined ***)(piVar13 + 2) = &PTR_s_decimal128_004f96f0; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 10; + return piVar13; + } + } + break; + case 0x66: + iVar11 = *(int *)(param_1 + 0x28); + if (iVar11 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + /* try { // try from 004277f4 to 005277f7 has its CatchHandler @ 00427b9c */ + if (piVar13 != (int *)0x0) { + /* try { // try from 004277fc to 0052785f has its CatchHandler @ 00426af0 */ + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + *(undefined ***)(piVar13 + 2) = &PTR_s_decimal32_004f96b0; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 9; + return piVar13; + } + } + break; + case 0x68: + iVar11 = *(int *)(param_1 + 0x28); + if (iVar11 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + /* try { // try from 004277b0 to 005277b3 has its CatchHandler @ 00427bc0 */ + *(undefined ***)(piVar13 + 2) = &PTR_DAT_004f9710; + /* try { // try from 004277b8 to 005277cf has its CatchHandler @ 00426af0 */ + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 4; + return piVar13; + } + } + break; + case 0x69: + iVar11 = *(int *)(param_1 + 0x28); + if (iVar11 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + *(undefined ***)(piVar13 + 2) = &PTR_DAT_004f9750; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 8; + return piVar13; + } + } + break; + case 0x6e: + /* try { // try from 0042790c to 00527923 has its CatchHandler @ 00426af0 */ + iVar11 = *(int *)(param_1 + 0x28); + if (iVar11 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + *(undefined ***)(piVar13 + 2) = &PTR_LAB_004f9770; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 0x11; + return piVar13; + } + } + break; + case 0x70: + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x4a,uVar14,0); + /* try { // try from 00427904 to 00527907 has its CatchHandler @ 00427a68 */ + goto LAB_00427344; + case 0x73: + iVar11 = *(int *)(param_1 + 0x28); + if (iVar11 < *(int *)(param_1 + 0x2c)) { + /* try { // try from 004278a8 to 005278ab has its CatchHandler @ 00427bb0 */ + *(int *)(param_1 + 0x28) = iVar11 + 1; + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + /* try { // try from 004278cc to 005278cf has its CatchHandler @ 00426af0 */ + *(undefined ***)(piVar13 + 2) = &PTR_s_char16_t_004f9730; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 8; + return piVar13; + } + } + break; + case 0x76: + local_8 = (int *)FUN_0042a694(param_1); + goto LAB_00427344; + } +LAB_00427b88: + /* catch() { ... } // from try @ 0042703c with catch @ 00427b88 */ + local_8 = (int *)0x0; + /* WARNING: Does not return */ + pcVar9 = (code *)SoftwareBreakpoint(1000,0x427b98); + (*pcVar9)(); + case 0x46: + local_8 = (int *)FUN_0042a564(param_1); + break; + case 0x47: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x26,uVar14,0); + break; + case 0x4d: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + lVar20 = FUN_004271e4(param_1); + if ((lVar20 == 0) || (lVar15 = FUN_004271e4(param_1), lVar15 == 0)) { +LAB_00427408: + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004245e0(param_1,0x2b,lVar20,lVar15); + } + break; + case 0x4f: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x24,uVar14,0); + break; + case 0x50: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x22,uVar14,0); + break; + case 0x52: + /* try { // try from 0042756c to 0052756f has its CatchHandler @ 00427a7c */ + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + /* try { // try from 00427574 to 0052764b has its CatchHandler @ 00426af0 */ + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x23,uVar14,0); + break; + case 0x53: + bVar7 = pbVar22[1]; + if (((9 < (byte)(bVar7 - 0x30)) && (bVar7 != 0x5f)) && (0x19 < (byte)(bVar7 + 0xbf))) { + /* try { // try from 00427bd0 to 00527bd3 has its CatchHandler @ 00426af0 */ + /* catch() { ... } // from try @ 00427a48 with catch @ 00427bd4 */ + local_8 = (int *)FUN_00429114(param_1); + if (local_8 == (int *)0x0) { + return (int *)0x0; + } + /* try { // try from 00427be4 to 00527be7 has its CatchHandler @ 00426af0 */ + if (*local_8 == 0x18) { + return local_8; + } + goto LAB_00427348; + } + local_8 = (int *)FUN_00424890(param_1,0); + if (**(char **)(param_1 + 0x18) != 'I') { + return local_8; + } +LAB_004275f0: + piVar13 = local_8; + uVar14 = FUN_004255a4(param_1); + local_8 = (int *)FUN_004245e0(param_1,4,piVar13,uVar14); + break; + case 0x54: + local_8 = (int *)FUN_004253cc(param_1); + pcVar24 = *(char **)(param_1 + 0x18); + if (*pcVar24 == 'I') { + if (*(int *)(param_1 + 0x58) == 0) { + if (local_8 == (int *)0x0) { + return (int *)0x0; + } + iVar11 = *(int *)(param_1 + 0x38); + if (*(int *)(param_1 + 0x3c) <= iVar11) { + return (int *)0x0; + } + *(int **)(*(long *)(param_1 + 0x30) + (long)iVar11 * 8) = local_8; + *(int *)(param_1 + 0x38) = iVar11 + 1; + goto LAB_004275f0; + } + uVar2 = *(undefined4 *)(param_1 + 0x28); + uVar3 = *(undefined4 *)(param_1 + 0x38); + uVar4 = *(undefined4 *)(param_1 + 0x40); + uVar5 = *(undefined4 *)(param_1 + 0x50); + uVar14 = FUN_004255a4(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + if (local_8 == (int *)0x0) { + return (int *)0x0; + } + iVar11 = *(int *)(param_1 + 0x38); + if (*(int *)(param_1 + 0x3c) <= iVar11) { + return (int *)0x0; + } + *(int **)(*(long *)(param_1 + 0x30) + (long)iVar11 * 8) = local_8; + *(int *)(param_1 + 0x38) = iVar11 + 1; + local_8 = (int *)FUN_004245e0(param_1,4,local_8,uVar14); + } + else { + *(char **)(param_1 + 0x18) = pcVar24; + *(undefined4 *)(param_1 + 0x28) = uVar2; + *(undefined4 *)(param_1 + 0x38) = uVar3; + *(undefined4 *)(param_1 + 0x40) = uVar4; + *(undefined4 *)(param_1 + 0x50) = uVar5; + } + } + break; + case 0x55: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + local_8 = (int *)FUN_004251f4(param_1); + uVar14 = FUN_004271e4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x21,uVar14,local_8); + break; + case 0x61: + case 0x62: + case 99: + case 100: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6a: + case 0x6c: + case 0x6d: + case 0x6e: + case 0x6f: + case 0x73: + case 0x74: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7a: + iVar11 = *(int *)(param_1 + 0x28); + uVar16 = -(ulong)(uVar10 - 0x61 >> 0x1f) & 0xffffffe000000000 | (ulong)(uVar10 - 0x61) << 5; + if (iVar11 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar11 + 1; + /* try { // try from 0042768c to 0052768f has its CatchHandler @ 00427acc */ + piVar13 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18); + if (piVar13 != (int *)0x0) { + /* try { // try from 00427694 to 0052777b has its CatchHandler @ 00426af0 */ + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar11 * 0x18) = 0x27; + *(undefined **)(piVar13 + 2) = &UNK_004f9370 + uVar16; + iVar11 = *(int *)(&DAT_004f9378 + uVar16); + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + iVar11; + return piVar13; + } + } + goto LAB_00427b88; + case 0x75: + *(byte **)(param_1 + 0x18) = pbVar22 + 1; + uVar14 = FUN_004251f4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x28,uVar14,0); + } +LAB_00427344: + if (local_8 != (int *)0x0) { +LAB_00427348: + iVar11 = *(int *)(param_1 + 0x38); + if (iVar11 < *(int *)(param_1 + 0x3c)) { + *(int **)(*(long *)(param_1 + 0x30) + (long)iVar11 * 8) = local_8; + *(int *)(param_1 + 0x38) = iVar11 + 1; + return local_8; + } + } +switchD_00427260_caseD_3a: + return (int *)0x0; +switchD_0042829c_caseD_1: + /* catch() { ... } // from try @ 00428204 with catch @ 00428578 */ + cVar8 = *pcVar24; + /* catch() { ... } // from try @ 004281a8 with catch @ 00428588 + catch() { ... } // from try @ 0042820c with catch @ 00428588 + catch() { ... } // from try @ 00428490 with catch @ 00428588 + catch() { ... } // from try @ 004284c8 with catch @ 00428588 */ + if (((cVar8 == 'm') || (cVar8 == 'p')) && (pcVar24[1] == cVar8)) { + cVar8 = **(char **)(param_1 + 0x18); + if (cVar8 != '_') { + uVar14 = FUN_00429efc(param_1,cVar8,0); + uVar14 = FUN_004245e0(param_1,0x38,uVar14,uVar14); + goto LAB_00427a88; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_004284b4_caseD_1; +} + + +================================================================== + +### FUNC 0042888c (272 bytes) name=FUN_0042888c + +long FUN_0042888c(long param_1) + +{ + char cVar1; + long lVar2; + char *pcVar3; + long *plVar4; + long local_8; + + pcVar3 = *(char **)(param_1 + 0x18); + local_8 = 0; + cVar1 = *pcVar3; + /* try { // try from 004288c8 to 005288cb has its CatchHandler @ 00428a68 */ + if ((cVar1 != 'E' && cVar1 != '\0') && (plVar4 = &local_8, cVar1 != '.')) { + while (((cVar1 != 'O' && (cVar1 != 'R')) || (pcVar3[1] != 'E'))) { + lVar2 = FUN_004271e4(param_1); + if (lVar2 == 0) { + return 0; + } + /* try { // try from 004288d0 to 005289a7 has its CatchHandler @ 0042880c */ + lVar2 = FUN_004245e0(param_1,0x2e,lVar2,0); + *plVar4 = lVar2; + plVar4 = (long *)(lVar2 + 0x10); + if (lVar2 == 0) { + return 0; + } + pcVar3 = *(char **)(param_1 + 0x18); + cVar1 = *pcVar3; + if ((cVar1 == 'E' || cVar1 == '\0') || (cVar1 == '.')) break; + } + if (local_8 != 0) { + if (*(long *)(local_8 + 0x10) != 0) { + return local_8; + } + if (**(int **)(local_8 + 8) == 0x27) { + lVar2 = *(long *)(*(int **)(local_8 + 8) + 2); + if (*(int *)(lVar2 + 0x1c) == 9) { + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) - *(int *)(lVar2 + 8); + *(undefined8 *)(local_8 + 8) = 0; + return local_8; + } + return local_8; + } + return local_8; + } + } + return 0; +} + + +================================================================== + +### FUNC 0042899c (500 bytes) name=FUN_0042899c + +long FUN_0042899c(long param_1) + +{ + int iVar1; + long lVar2; + undefined4 uVar3; + byte bVar4; + uint uVar5; + undefined8 uVar6; + long lVar7; + byte *pbVar8; + int iVar9; + int iVar10; + byte bVar11; + byte bVar12; + + pbVar8 = *(byte **)(param_1 + 0x18); + if (*pbVar8 == 0) { + bVar12 = 0; + bVar11 = 0; + } + else { + *(byte **)(param_1 + 0x18) = pbVar8 + 1; + bVar11 = *pbVar8; + if (pbVar8[1] == 0) { + bVar12 = 0; + /* try { // try from 00428a54 to 00528a57 has its CatchHandler @ 00428a90 */ + } + else { + /* try { // try from 00428a5c to 00528a5f has its CatchHandler @ 0042880c */ + *(byte **)(param_1 + 0x18) = pbVar8 + 2; + /* catch() { ... } // from try @ 004288c8 with catch @ 00428a68 */ + bVar12 = pbVar8[1]; + if (bVar11 == 0x76) { + uVar5 = bVar12 - 0x30; + if ((uVar5 & 0xff) < 10) { + lVar7 = FUN_004251f4(); + iVar9 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar9) { + return 0; + } + *(int *)(param_1 + 0x28) = iVar9 + 1; + lVar2 = *(long *)(param_1 + 0x20) + (long)iVar9 * 0x18; + if (lVar7 == 0) { + return 0; + } + if (lVar2 == 0) { + return 0; + } + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar9 * 0x18) = 0x32; + *(uint *)(lVar2 + 8) = uVar5; + *(long *)(lVar2 + 0x10) = lVar7; + return lVar2; + } + } + else { + /* try { // try from 00428a78 to 00528a7b has its CatchHandler @ 0042880c */ + /* catch() { ... } // from try @ 004289e8 with catch @ 00428a7c */ + if ((bVar12 == 0x76) && (bVar11 == 99)) { + uVar3 = *(undefined4 *)(param_1 + 0x58); + /* try { // try from 00428a8c to 00528a8f has its CatchHandler @ 0042880c */ + /* catch() { ... } // from try @ 00428a54 with catch @ 00428a90 */ + *(uint *)(param_1 + 0x58) = (uint)(*(int *)(param_1 + 0x54) == 0); + uVar6 = FUN_004271e4(); + /* try { // try from 00428aa0 to 00528aa3 has its CatchHandler @ 0042880c */ + if (*(int *)(param_1 + 0x58) == 0) { + /* try { // try from 00428b34 to 00528b37 has its CatchHandler @ 00428ce8 */ + lVar7 = FUN_004245e0(param_1,0x33,uVar6,0); + *(undefined4 *)(param_1 + 0x58) = uVar3; + /* try { // try from 00428b3c to 00528c27 has its CatchHandler @ 00428aa4 */ + } + else { + /* catch() { ... } // from try @ 00428ab8 with catch @ 00428aa4 + catch() { ... } // from try @ 00428b3c with catch @ 00428aa4 + catch() { ... } // from try @ 00428c70 with catch @ 00428aa4 + catch() { ... } // from try @ 00428cdc with catch @ 00428aa4 + catch() { ... } // from try @ 00428cf8 with catch @ 00428aa4 + catch() { ... } // from try @ 00428d0c with catch @ 00428aa4 + catch() { ... } // from try @ 00428d20 with catch @ 00428aa4 */ + lVar7 = FUN_004245e0(param_1,0x34,uVar6,0); + *(undefined4 *)(param_1 + 0x58) = uVar3; + } + /* try { // try from 00428ab8 to 00528b17 has its CatchHandler @ 00428aa4 */ + return lVar7; + } + } + } + } + iVar10 = 0x3d; + iVar9 = 0; + do { + iVar1 = iVar9 + (iVar10 - iVar9) / 2; + /* try { // try from 004289e8 to 005289eb has its CatchHandler @ 00428a7c */ + /* try { // try from 004289f0 to 00528a13 has its CatchHandler @ 0042880c */ + bVar4 = *(&PTR_DAT_004f9918)[(long)iVar1 * 3]; + if (bVar11 == bVar4) { + bVar4 = (&PTR_DAT_004f9918)[(long)iVar1 * 3][1]; + if (bVar12 == bVar4) { + iVar9 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar9) { + return 0; + } + *(int *)(param_1 + 0x28) = iVar9 + 1; + lVar7 = *(long *)(param_1 + 0x20) + (long)iVar9 * 0x18; + if (lVar7 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar9 * 0x18) = 0x31; + *(undefined ***)(lVar7 + 8) = &PTR_DAT_004f9918 + (long)iVar1 * 3; + return lVar7; + } + return 0; + } + if (bVar4 <= bVar12) goto LAB_00428a34; + } + else if (bVar4 <= bVar11) { +LAB_00428a34: + iVar9 = iVar1 + 1; + iVar1 = iVar10; + } + iVar10 = iVar1; + if (iVar9 == iVar10) { + return 0; + } + } while( true ); +} + + +================================================================== + +### FUNC 00428b90 (1412 bytes) name=FUN_00428b90 + +int * FUN_00428b90(long param_1) + +{ + int iVar1; + byte bVar2; + int iVar3; + undefined8 uVar4; + int *piVar5; + long lVar6; + char *pcVar7; + char *pcVar8; + ulong uVar9; + char cVar10; + byte *pbVar11; + bool bVar12; + int *local_8; + + pcVar8 = *(char **)(param_1 + 0x18); + cVar10 = *pcVar8; + if ((byte)(cVar10 - 0x30U) < 10) { + local_8 = (int *)FUN_004251f4(); + /* try { // try from 00428cd4 to 00528cd7 has its CatchHandler @ 00428d10 */ + pcVar7 = *(char **)(param_1 + 0x18); + /* try { // try from 00428cdc to 00528cdf has its CatchHandler @ 00428aa4 */ + cVar10 = *pcVar7; + goto joined_r0x00428ce8; + } + if ((byte)(cVar10 + 0x9fU) < 0x1a) { + /* try { // try from 00428d20 to 00528d23 has its CatchHandler @ 00428aa4 */ + local_8 = (int *)FUN_0042899c(); + /* catch() { ... } // from try @ 00428d38 with catch @ 00428d24 + catch() { ... } // from try @ 00428db8 with catch @ 00428d24 + catch() { ... } // from try @ 00428e20 with catch @ 00428d24 + catch() { ... } // from try @ 00428ea0 with catch @ 00428d24 + catch() { ... } // from try @ 00428f2c with catch @ 00428d24 + catch() { ... } // from try @ 00429010 with catch @ 00428d24 + catch() { ... } // from try @ 0042907c with catch @ 00428d24 + catch() { ... } // from try @ 004290a0 with catch @ 00428d24 + catch() { ... } // from try @ 004290b4 with catch @ 00428d24 + catch() { ... } // from try @ 004290c8 with catch @ 00428d24 + catch() { ... } // from try @ 004290dc with catch @ 00428d24 + catch() { ... } // from try @ 004290f0 with catch @ 00428d24 + catch() { ... } // from try @ 00429104 with catch @ 00428d24 */ + if ((local_8 != (int *)0x0) && (*local_8 == 0x31)) { + pcVar8 = (char *)**(undefined8 **)(local_8 + 2); + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(*(undefined8 **)(local_8 + 2) + 2) + 7; + iVar3 = strcmp(pcVar8,"li"); + if (iVar3 == 0) { + uVar4 = FUN_004251f4(param_1); + local_8 = (int *)FUN_004245e0(param_1,0x36,local_8,uVar4); + } + } + /* try { // try from 00428d38 to 00528d93 has its CatchHandler @ 00428d24 */ + pcVar7 = *(char **)(param_1 + 0x18); + cVar10 = *pcVar7; + goto joined_r0x00428ce8; + } + if (1 < (byte)(cVar10 + 0xbdU)) { + if (cVar10 == 'L') { + *(char **)(param_1 + 0x18) = pcVar8 + 1; + local_8 = (int *)FUN_004251f4(); + /* try { // try from 00428e98 to 00528e9b has its CatchHandler @ 004290e0 */ + if (local_8 == (int *)0x0) { + return (int *)0x0; + } + /* try { // try from 00428ea0 to 00528eeb has its CatchHandler @ 00428d24 */ + iVar3 = FUN_00425328(param_1); + if (iVar3 == 0) { + return (int *)0x0; + } + cVar10 = **(char **)(param_1 + 0x18); + pcVar7 = *(char **)(param_1 + 0x18); + goto joined_r0x00428ce8; + } + if (cVar10 != 'U') { + return (int *)0x0; + } + if (pcVar8[1] == 'l') { + pcVar7 = pcVar8 + 1; + *(char **)(param_1 + 0x18) = pcVar7; + cVar10 = pcVar8[1]; + if (cVar10 == 'l') { + *(char **)(param_1 + 0x18) = pcVar8 + 2; + lVar6 = FUN_0042888c(); + pcVar7 = *(char **)(param_1 + 0x18); + if (lVar6 == 0) goto LAB_00428f1c; + cVar10 = *pcVar7; + /* try { // try from 00428db0 to 00528db3 has its CatchHandler @ 004290b8 */ + if (cVar10 == 'E') { + /* try { // try from 00428db8 to 00528ddf has its CatchHandler @ 00428d24 */ + *(char **)(param_1 + 0x18) = pcVar7 + 1; + if (pcVar7[1] == '_') { + pcVar8 = pcVar7 + 2; + iVar3 = 0; + *(char **)(param_1 + 0x18) = pcVar8; + } + else { + if (pcVar7[1] == 'n') { + return (int *)0x0; + } + local_8 = (int *)0x0; + iVar3 = FUN_00424c94(param_1 + 0x18); + pcVar7 = *(char **)(param_1 + 0x18); + cVar10 = *pcVar7; + if (cVar10 != '_') goto joined_r0x00428ce8; + iVar3 = iVar3 + 1; + pcVar8 = pcVar7 + 1; + *(char **)(param_1 + 0x18) = pcVar8; + if (iVar3 < 0) { + cVar10 = pcVar7[1]; + pcVar7 = pcVar8; + local_8 = (int *)0x0; + goto joined_r0x00428ce8; + } + } + iVar1 = *(int *)(param_1 + 0x28); + if (iVar1 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar1 + 1; + local_8 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18); + if (local_8 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18) = 0x45; + *(long *)(local_8 + 2) = lVar6; + local_8[4] = iVar3; + iVar3 = *(int *)(param_1 + 0x38); + if (iVar3 < *(int *)(param_1 + 0x3c)) goto LAB_00428e70; + } + } + cVar10 = *pcVar8; + local_8 = (int *)0x0; + pcVar7 = pcVar8; + goto joined_r0x00428ce8; + } + } + } + else { + if (pcVar8[1] != 't') { + return (int *)0x0; + } + pcVar7 = pcVar8 + 1; + *(char **)(param_1 + 0x18) = pcVar7; + cVar10 = pcVar8[1]; + if (cVar10 == 't') { + /* try { // try from 00428e18 to 00528e1b has its CatchHandler @ 004290f4 */ + *(char **)(param_1 + 0x18) = pcVar8 + 2; + lVar6 = FUN_0042529c(); + /* try { // try from 00428e20 to 00528e5f has its CatchHandler @ 00428d24 */ + if ((-1 < lVar6) && (iVar3 = *(int *)(param_1 + 0x28), iVar3 < *(int *)(param_1 + 0x2c))) { + *(int *)(param_1 + 0x28) = iVar3 + 1; + local_8 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar3 * 0x18); + if (local_8 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar3 * 0x18) = 0x47; + *(long *)(local_8 + 2) = lVar6; + iVar3 = *(int *)(param_1 + 0x38); + if (iVar3 < *(int *)(param_1 + 0x3c)) { +LAB_00428e70: + *(int **)(*(long *)(param_1 + 0x30) + (long)iVar3 * 8) = local_8; + *(int *)(param_1 + 0x38) = iVar3 + 1; + cVar10 = **(char **)(param_1 + 0x18); + pcVar7 = *(char **)(param_1 + 0x18); + goto joined_r0x00428ce8; + } + } + } + pcVar7 = *(char **)(param_1 + 0x18); +LAB_00428f1c: + cVar10 = *pcVar7; + local_8 = (int *)0x0; + /* try { // try from 00428f24 to 00528f27 has its CatchHandler @ 004290cc */ + goto joined_r0x00428ce8; + } + } + local_8 = (int *)0x0; + goto joined_r0x00428ce8; + } + piVar5 = *(int **)(param_1 + 0x48); + if ((piVar5 == (int *)0x0) || ((*piVar5 != 0 && (*piVar5 != 0x18)))) { + if (cVar10 != 'C') { + if (cVar10 != 'D') { + return (int *)0x0; + } + goto LAB_00428f4c; + } +LAB_00429060: + /* try { // try from 00429074 to 00529077 has its CatchHandler @ 004290a4 */ + /* try { // try from 0042907c to 0052907f has its CatchHandler @ 00428d24 */ + switch(pcVar8[1]) { + case '1': + iVar3 = 1; + break; + case '2': + iVar3 = 2; + break; + case '3': + /* try { // try from 004290f0 to 005290f3 has its CatchHandler @ 00428d24 */ + iVar3 = 3; + /* catch() { ... } // from try @ 00428e18 with catch @ 004290f4 */ + break; + case '4': + iVar3 = 4; + break; + case '5': + /* catch() { ... } // from try @ 00428e98 with catch @ 004290e0 */ + iVar3 = 5; + break; + default: +switchD_00428f70_caseD_33: + return (int *)0x0; + } + iVar1 = *(int *)(param_1 + 0x28); + /* catch() { ... } // from try @ 00429008 with catch @ 00429090 */ + pcVar7 = pcVar8 + 2; + *(char **)(param_1 + 0x18) = pcVar7; + /* try { // try from 004290a0 to 005290a3 has its CatchHandler @ 00428d24 */ + if (iVar1 < *(int *)(param_1 + 0x2c)) { + /* catch() { ... } // from try @ 00429074 with catch @ 004290a4 */ + /* try { // try from 004290b4 to 005290b7 has its CatchHandler @ 00428d24 */ + /* catch() { ... } // from try @ 00428db0 with catch @ 004290b8 */ + *(int *)(param_1 + 0x28) = iVar1 + 1; + local_8 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18); + if ((local_8 != (int *)0x0) && (piVar5 != (int *)0x0)) { + /* try { // try from 004290c8 to 005290cb has its CatchHandler @ 00428d24 */ + /* catch() { ... } // from try @ 00428f24 with catch @ 004290cc */ + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18) = 7; + local_8[2] = iVar3; + *(int **)(local_8 + 4) = piVar5; + cVar10 = pcVar8[2]; + /* try { // try from 004290dc to 005290df has its CatchHandler @ 00428d24 */ + goto joined_r0x00428ce8; + } + } + } + else { + /* try { // try from 00428f2c to 00528fcf has its CatchHandler @ 00428d24 */ + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + piVar5[4]; + cVar10 = *pcVar8; + if (cVar10 == 'C') goto LAB_00429060; + if (cVar10 != 'D') { + local_8 = (int *)0x0; + pcVar7 = pcVar8; + goto joined_r0x00428ce8; + } +LAB_00428f4c: + switch(pcVar8[1]) { + case '0': + iVar3 = 1; + break; + case '1': + iVar3 = 2; + break; + case '2': + iVar3 = 3; + break; + default: + goto switchD_00428f70_caseD_33; + case '4': + iVar3 = 4; + break; + case '5': + iVar3 = 5; + } + iVar1 = *(int *)(param_1 + 0x28); + pcVar7 = pcVar8 + 2; + *(char **)(param_1 + 0x18) = pcVar7; + if (iVar1 < *(int *)(param_1 + 0x2c)) { + /* try { // try from 00429008 to 0052900b has its CatchHandler @ 00429090 */ + *(int *)(param_1 + 0x28) = iVar1 + 1; + /* try { // try from 00429010 to 00529033 has its CatchHandler @ 00428d24 */ + local_8 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18); + if ((local_8 != (int *)0x0) && (piVar5 != (int *)0x0)) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18) = 8; + local_8[2] = iVar3; + *(int **)(local_8 + 4) = piVar5; + cVar10 = pcVar8[2]; + goto joined_r0x00428ce8; + } + } + } + pcVar7 = pcVar8 + 2; + cVar10 = *pcVar7; + /* try { // try from 00429104 to 00529107 has its CatchHandler @ 00428d24 */ + local_8 = (int *)0x0; + /* catch() { ... } // from try @ 0042911c with catch @ 00429108 + catch() { ... } // from try @ 0042919c with catch @ 00429108 + catch() { ... } // from try @ 00429204 with catch @ 00429108 + catch() { ... } // from try @ 0042927c with catch @ 00429108 + catch() { ... } // from try @ 00429308 with catch @ 00429108 + catch() { ... } // from try @ 004293dc with catch @ 00429108 + catch() { ... } // from try @ 00429448 with catch @ 00429108 + catch() { ... } // from try @ 0042946c with catch @ 00429108 + catch() { ... } // from try @ 00429480 with catch @ 00429108 + catch() { ... } // from try @ 00429494 with catch @ 00429108 + catch() { ... } // from try @ 004294a8 with catch @ 00429108 + catch() { ... } // from try @ 004294bc with catch @ 00429108 + catch() { ... } // from try @ 004294d0 with catch @ 00429108 */ +joined_r0x00428ce8: + /* catch() { ... } // from try @ 00428b34 with catch @ 00428ce8 */ + if (cVar10 != 'B') { + return local_8; + } + do { + *(char **)(param_1 + 0x18) = pcVar7 + 1; + bVar12 = false; + bVar2 = pcVar7[1]; + if (bVar2 == 0x6e) { + /* try { // try from 00428cf8 to 00528cfb has its CatchHandler @ 00428aa4 */ + /* catch() { ... } // from try @ 00428c68 with catch @ 00428cfc */ + *(char **)(param_1 + 0x18) = pcVar7 + 2; + bVar12 = true; + bVar2 = pcVar7[2]; + /* try { // try from 00428d0c to 00528d0f has its CatchHandler @ 00428aa4 */ + /* catch() { ... } // from try @ 00428cd4 with catch @ 00428d10 */ + if ((byte)(bVar2 - 0x30) < 10) goto LAB_00428c48; +LAB_00428d18: + uVar4 = 0; + } + else { + if (9 < (byte)(bVar2 - 0x30)) goto LAB_00428d18; +LAB_00428c48: + pbVar11 = *(byte **)(param_1 + 0x18); + lVar6 = 0; + do { + pbVar11 = pbVar11 + 1; + uVar9 = (ulong)bVar2; + *(byte **)(param_1 + 0x18) = pbVar11; + bVar2 = *pbVar11; + /* try { // try from 00428c68 to 00528c6b has its CatchHandler @ 00428cfc */ + lVar6 = lVar6 * 10 + uVar9 + -0x30; + /* try { // try from 00428c70 to 00528c93 has its CatchHandler @ 00428aa4 */ + } while ((byte)(bVar2 - 0x30) < 10); + if ((lVar6 < 1) || (bVar12)) goto LAB_00428d18; + uVar4 = FUN_00424fd4(param_1); + *(undefined8 *)(param_1 + 0x48) = uVar4; + } + local_8 = (int *)FUN_004245e0(param_1,0x4b,local_8,uVar4); + pcVar7 = *(char **)(param_1 + 0x18); + if (*pcVar7 != 'B') { + return local_8; + } + } while( true ); +} + + +================================================================== + +### FUNC 00429114 (1452 bytes) name=FUN_00429114 + +long FUN_00429114(long param_1) + +{ + int iVar1; + int iVar2; + long lVar3; + char *pcVar4; + long *plVar5; + int *piVar6; + undefined8 uVar7; + undefined8 uVar8; + char *pcVar9; + long lVar10; + int *piVar11; + undefined1 *puVar12; + char cVar13; + long lVar14; + long local_8; + + /* try { // try from 0042911c to 00529177 has its CatchHandler @ 00429108 */ + puVar12 = *(undefined1 **)(param_1 + 0x18); + switch(*puVar12) { + case 0x4e: + *(undefined1 **)(param_1 + 0x18) = puVar12 + 1; + plVar5 = (long *)FUN_004246e0(param_1,&local_8,1); + if (plVar5 == (long *)0x0) { + return 0; + } + pcVar4 = *(char **)(param_1 + 0x18); + cVar13 = *pcVar4; + /* try { // try from 00429274 to 00529277 has its CatchHandler @ 004294ac */ + /* try { // try from 0042927c to 005292c7 has its CatchHandler @ 00429108 */ + if (cVar13 == 'O') { + uVar8 = 0x20; + iVar1 = *(int *)(param_1 + 0x50) + 3; + } + else { + lVar3 = 0; + if (cVar13 != 'R') { + lVar14 = 0; + goto LAB_00429290; + } + uVar8 = 0x1f; + iVar1 = *(int *)(param_1 + 0x50) + 2; + } + *(int *)(param_1 + 0x50) = iVar1; + *(char **)(param_1 + 0x18) = pcVar4 + 1; + /* try { // try from 00429588 to 0052958b has its CatchHandler @ 004296cc */ + /* try { // try from 00429590 to 005295f3 has its CatchHandler @ 0042950c */ + lVar14 = 0; + lVar3 = FUN_004245e0(param_1,uVar8,0,0); + pcVar4 = *(char **)(param_1 + 0x18); + cVar13 = *pcVar4; +LAB_00429290: + do { + if (cVar13 == '\0') { +LAB_00429518: + *plVar5 = 0; + return 0; + /* try { // try from 00429520 to 00529547 has its CatchHandler @ 0042950c */ + } + pcVar9 = pcVar4; + if (cVar13 == 'D') { + if ((pcVar4[1] & 0xdfU) == 0x54) { + lVar10 = FUN_004271e4(); + goto LAB_00429500; + } + /* catch() { ... } // from try @ 00429520 with catch @ 0042950c + catch() { ... } // from try @ 00429590 with catch @ 0042950c + catch() { ... } // from try @ 00429628 with catch @ 0042950c + catch() { ... } // from try @ 00429698 with catch @ 0042950c + catch() { ... } // from try @ 004296b4 with catch @ 0042950c + catch() { ... } // from try @ 004296c8 with catch @ 0042950c + catch() { ... } // from try @ 004296dc with catch @ 0042950c */ + lVar10 = FUN_00428b90(param_1); + goto LAB_00429500; + } + do { + if ((((byte)(cVar13 - 0x30U) < 10) || ((byte)(cVar13 + 0x9fU) < 0x1a)) || + ((cVar13 == 'C' || cVar13 == 'U' || (cVar13 == 'L')))) { + /* try { // try from 0042946c to 0052946f has its CatchHandler @ 00429108 */ + /* catch() { ... } // from try @ 00429440 with catch @ 00429470 */ + lVar10 = FUN_00428b90(param_1); + if (lVar14 != 0) goto LAB_0042947c; +LAB_00429490: + /* try { // try from 00429494 to 00529497 has its CatchHandler @ 00429108 */ + if (cVar13 == 'S') goto LAB_004294cc; + } + else { + if (cVar13 == 'S') { + lVar10 = FUN_00424890(param_1,1); + if (lVar14 != 0) { +LAB_0042947c: + uVar8 = 1; +LAB_00429480: + /* try { // try from 00429480 to 00529483 has its CatchHandler @ 00429108 */ + /* catch() { ... } // from try @ 00429194 with catch @ 00429484 */ + lVar10 = FUN_004245e0(param_1,uVar8,lVar14,lVar10); + goto LAB_00429490; + } + pcVar4 = *(char **)(param_1 + 0x18); + cVar13 = *pcVar4; + lVar14 = lVar10; + goto LAB_00429290; + } + if (cVar13 == 'I') { + if (lVar14 != 0) { + lVar10 = FUN_004255a4(param_1); + uVar8 = 4; + goto LAB_00429480; + } + goto LAB_00429518; + } + if (cVar13 != 'T') { + if (cVar13 == 'E') { + *plVar5 = lVar14; + if (lVar14 == 0) { + return 0; + } + /* try { // try from 00429690 to 00529693 has its CatchHandler @ 004296b8 */ + if (lVar3 != 0) { + /* try { // try from 00429698 to 0052969b has its CatchHandler @ 0042950c */ + *(long *)(lVar3 + 8) = local_8; + local_8 = lVar3; + } + /* catch() { ... } // from try @ 00429620 with catch @ 004296a4 */ + if (**(char **)(param_1 + 0x18) == 'E') { + /* try { // try from 004296b4 to 005296b7 has its CatchHandler @ 0042950c */ + /* catch() { ... } // from try @ 00429690 with catch @ 004296b8 */ + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + return local_8; + } + return 0; + } + /* try { // try from 00429300 to 00529303 has its CatchHandler @ 00429498 */ + if ((cVar13 != 'M') || (lVar14 == 0)) goto LAB_00429518; + /* try { // try from 00429308 to 0052939b has its CatchHandler @ 00429108 */ + pcVar4 = pcVar9 + 1; + *(char **)(param_1 + 0x18) = pcVar4; + cVar13 = pcVar9[1]; + goto LAB_00429290; + } + lVar10 = FUN_004253cc(param_1); +LAB_00429500: + if (lVar14 != 0) goto LAB_0042947c; + } + /* catch() { ... } // from try @ 00429300 with catch @ 00429498 */ + pcVar9 = *(char **)(param_1 + 0x18); + cVar13 = *pcVar9; + lVar14 = lVar10; + } while (cVar13 == 'E'); + /* try { // try from 004294a8 to 005294ab has its CatchHandler @ 00429108 */ + /* catch() { ... } // from try @ 00429274 with catch @ 004294ac */ + if ((lVar10 == 0) || (iVar1 = *(int *)(param_1 + 0x38), *(int *)(param_1 + 0x3c) <= iVar1)) + goto LAB_00429518; + /* try { // try from 004294bc to 005294bf has its CatchHandler @ 00429108 */ + /* catch() { ... } // from try @ 004291fc with catch @ 004294c0 */ + *(long *)(*(long *)(param_1 + 0x30) + (long)iVar1 * 8) = lVar10; + *(int *)(param_1 + 0x38) = iVar1 + 1; +LAB_004294cc: + pcVar4 = *(char **)(param_1 + 0x18); + /* try { // try from 004294d0 to 005294d3 has its CatchHandler @ 00429108 */ + cVar13 = *pcVar4; + lVar14 = lVar10; + } while( true ); + default: + lVar3 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + if (lVar3 == 0) { + return 0; + } + iVar1 = *(int *)(param_1 + 0x38); + if (*(int *)(param_1 + 0x3c) <= iVar1) { + return 0; + } + /* try { // try from 00429440 to 00529443 has its CatchHandler @ 00429470 */ + *(long *)(*(long *)(param_1 + 0x30) + (long)iVar1 * 8) = lVar3; + /* try { // try from 00429448 to 0052944b has its CatchHandler @ 00429108 */ + *(int *)(param_1 + 0x38) = iVar1 + 1; + uVar8 = FUN_004255a4(param_1); + /* catch() { ... } // from try @ 004293d4 with catch @ 0042945c */ + lVar3 = FUN_004245e0(param_1,4,lVar3,uVar8); + } + break; + case 0x53: + /* try { // try from 004291fc to 005291ff has its CatchHandler @ 004294c0 */ + if (puVar12[1] == 't') { + *(undefined1 **)(param_1 + 0x18) = puVar12 + 2; + uVar8 = FUN_00424680(param_1,&DAT_0047bc88,3); + uVar7 = FUN_00428b90(param_1); + /* try { // try from 004293d4 to 005293d7 has its CatchHandler @ 0042945c */ + lVar3 = FUN_004245e0(param_1,1,uVar8,uVar7); + /* try { // try from 004293dc to 005293ff has its CatchHandler @ 00429108 */ + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 3; + if (**(char **)(param_1 + 0x18) != 'I') { + return lVar3; + } + if (lVar3 == 0) { + return 0; + } + iVar1 = *(int *)(param_1 + 0x38); + if (*(int *)(param_1 + 0x3c) <= iVar1) { + return 0; + } + *(long *)(*(long *)(param_1 + 0x30) + (long)iVar1 * 8) = lVar3; + *(int *)(param_1 + 0x38) = iVar1 + 1; + } + else { + /* try { // try from 00429204 to 0052923b has its CatchHandler @ 00429108 */ + lVar3 = FUN_00424890(param_1,0); + if (**(char **)(param_1 + 0x18) != 'I') { + return lVar3; + } + } + uVar8 = FUN_004255a4(param_1); + lVar3 = FUN_004245e0(param_1,4,lVar3,uVar8); + break; + case 0x55: + lVar3 = FUN_00428b90(param_1); + return lVar3; + case 0x5a: + /* try { // try from 00429194 to 00529197 has its CatchHandler @ 00429484 */ + *(undefined1 **)(param_1 + 0x18) = puVar12 + 1; + /* try { // try from 0042919c to 005291c3 has its CatchHandler @ 00429108 */ + uVar8 = FUN_004296c0(param_1,0); + pcVar4 = *(char **)(param_1 + 0x18); + if (*pcVar4 != 'E') { + return 0; + } + *(char **)(param_1 + 0x18) = pcVar4 + 1; + if (pcVar4[1] == 's') { + *(char **)(param_1 + 0x18) = pcVar4 + 2; + iVar1 = FUN_00425328(param_1); + if (iVar1 == 0) { + return 0; + } + piVar6 = (int *)FUN_00424680(param_1,&LAB_0047bc78,0xe); + } + else if (pcVar4[1] == 'd') { + *(char **)(param_1 + 0x18) = pcVar4 + 2; + iVar1 = FUN_0042529c(param_1); + if (iVar1 < 0) { + return 0; + } + piVar11 = (int *)FUN_00429114(param_1); + if ((((piVar11 != (int *)0x0) && (*piVar11 != 0x45)) && (*piVar11 != 0x47)) && + (iVar2 = FUN_00425328(param_1), iVar2 == 0)) { + return 0; + } + iVar2 = *(int *)(param_1 + 0x28); + piVar6 = (int *)0x0; + if (iVar2 < *(int *)(param_1 + 0x2c)) { + /* try { // try from 00429620 to 00529623 has its CatchHandler @ 004296a4 */ + *(int *)(param_1 + 0x28) = iVar2 + 1; + /* try { // try from 00429628 to 00529657 has its CatchHandler @ 0042950c */ + piVar6 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18); + if (piVar6 != (int *)0x0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18) = 0x46; + piVar6[4] = iVar1; + *(int **)(piVar6 + 2) = piVar11; + } + } + } + else { + piVar6 = (int *)FUN_00429114(param_1); + if (((piVar6 != (int *)0x0) && (*piVar6 != 0x45)) && + ((*piVar6 != 0x47 && (iVar1 = FUN_00425328(param_1), iVar1 == 0)))) { + return 0; + } + } + lVar3 = FUN_004245e0(param_1,2,uVar8,piVar6); + return lVar3; + } + return lVar3; +} + + +================================================================== + +### FUNC 004296c0 (1732 bytes) name=FUN_004296c0 + +uint * FUN_004296c0(long param_1,int param_2) + +{ + uint *puVar1; + char cVar2; + byte bVar3; + int iVar4; + uint uVar5; + uint *puVar6; + long lVar7; + int *piVar8; + undefined8 uVar9; + char *pcVar10; + long lVar11; + uint *puVar12; + ulong uVar13; + char *pcVar14; + + /* try { // try from 004296c8 to 005296cb has its CatchHandler @ 0042950c */ + pcVar10 = *(char **)(param_1 + 0x18); + /* catch() { ... } // from try @ 00429588 with catch @ 004296cc */ + /* try { // try from 004296dc to 005296df has its CatchHandler @ 0042950c */ + /* catch() { ... } // from try @ 004296f4 with catch @ 004296e0 + catch() { ... } // from try @ 0042975c with catch @ 004296e0 + catch() { ... } // from try @ 00429800 with catch @ 004296e0 + catch() { ... } // from try @ 00429870 with catch @ 004296e0 + catch() { ... } // from try @ 0042988c with catch @ 004296e0 + catch() { ... } // from try @ 004298a0 with catch @ 004296e0 + catch() { ... } // from try @ 004298b4 with catch @ 004296e0 */ + if ((*pcVar10 != 'T') && (*pcVar10 != 'G')) { + /* try { // try from 004296f4 to 0052971b has its CatchHandler @ 004296e0 */ + puVar6 = (uint *)FUN_00429114(); + if ((puVar6 != (uint *)0x0) && ((param_2 != 0 && ((*(uint *)(param_1 + 0x10) & 1) == 0)))) { + for (; *puVar6 - 0x1c < 5; puVar6 = *(uint **)(puVar6 + 2)) { + } + if (*puVar6 == 2) { + piVar8 = *(int **)(puVar6 + 4); + iVar4 = *piVar8; + while (iVar4 - 0x1cU < 5) { + piVar8 = *(int **)(piVar8 + 2); + iVar4 = *piVar8; + } + *(int **)(puVar6 + 4) = piVar8; + } + return puVar6; + } + cVar2 = **(char **)(param_1 + 0x18); + if (cVar2 == 'E' || cVar2 == '\0') { + return puVar6; + } + puVar12 = puVar6; + if (puVar6 == (uint *)0x0) { + return (uint *)0x0; + } + do { + uVar5 = *puVar12; + if (uVar5 == 4) { + puVar12 = *(uint **)(puVar12 + 2); + goto joined_r0x00429808; + } + } while (((3 < uVar5) && (uVar5 - 0x1c < 5)) && + (puVar1 = puVar12 + 2, puVar12 = *(uint **)puVar1, *(uint **)puVar1 != (uint *)0x0 + /* try { // try from 00429754 to 00529757 has its CatchHandler @ 004298a4 */)); +LAB_0042975c: + /* try { // try from 0042975c to 005297bf has its CatchHandler @ 004296e0 */ + if (cVar2 == 'J') goto LAB_00429cac; + lVar11 = 0; + goto LAB_0042984c; + } + iVar4 = *(int *)(param_1 + 0x50); + *(int *)(param_1 + 0x50) = iVar4 + 0x14; + if (*pcVar10 == 'T') { + *(char **)(param_1 + 0x18) = pcVar10 + 1; + if (pcVar10[1] == '\0') { + return (uint *)0x0; + } + *(char **)(param_1 + 0x18) = pcVar10 + 2; + switch(pcVar10[1]) { + case 'C': + lVar11 = FUN_004271e4(param_1); + /* try { // try from 00429bd8 to 00529ccf has its CatchHandler @ 00429a98 */ + lVar7 = FUN_00424c94(param_1 + 0x18); + if (lVar7 < 0) { + return (uint *)0x0; + } + if (**(char **)(param_1 + 0x18) != '_') { + return (uint *)0x0; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + puVar6 = (uint *)FUN_004271e4(param_1); + uVar9 = 0xb; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + 5; + break; + default: + return (uint *)0x0; + case 'F': + puVar6 = (uint *)FUN_004271e4(param_1); + uVar9 = 0xe; + lVar11 = 0; + break; + case 'H': + puVar6 = (uint *)FUN_00429114(param_1); + uVar9 = 0x14; + lVar11 = 0; + break; + case 'I': + puVar6 = (uint *)FUN_004271e4(param_1); + uVar9 = 0xc; + lVar11 = 0; + break; + case 'J': + puVar6 = (uint *)FUN_004271e4(param_1); + /* try { // try from 00429b64 to 00529b67 has its CatchHandler @ 00429f80 */ + uVar9 = 0x12; + lVar11 = 0; + break; + case 'S': + puVar6 = (uint *)FUN_004271e4(param_1); + uVar9 = 0xd; + lVar11 = 0; + break; + case 'T': + /* try { // try from 00429b1c to 00529b57 has its CatchHandler @ 00429a98 */ + *(int *)(param_1 + 0x50) = iVar4 + 10; + puVar6 = (uint *)FUN_004271e4(param_1); + uVar9 = 10; + lVar11 = 0; + break; + case 'V': + *(int *)(param_1 + 0x50) = iVar4 + 0xf; + puVar6 = (uint *)FUN_004271e4(param_1); + uVar9 = 9; + lVar11 = 0; + /* try { // try from 00429b14 to 00529b17 has its CatchHandler @ 00429fcc */ + break; + case 'W': + puVar6 = (uint *)FUN_00429114(param_1); + uVar9 = 0x15; + lVar11 = 0; + break; + case 'c': + iVar4 = FUN_004254b8(param_1,0); + if (iVar4 == 0) { + return (uint *)0x0; + } + iVar4 = FUN_004254b8(param_1,0); + if (iVar4 == 0) { + return (uint *)0x0; + } + puVar6 = (uint *)FUN_004296c0(param_1,0); + uVar9 = 0x11; + lVar11 = 0; + break; + case 'h': + iVar4 = FUN_004254b8(param_1,0x68); + if (iVar4 == 0) { + return (uint *)0x0; + } + puVar6 = (uint *)FUN_004296c0(param_1,0); + uVar9 = 0xf; + lVar11 = 0; + break; + case 'v': + iVar4 = FUN_004254b8(param_1,0x76); + if (iVar4 == 0) { + return (uint *)0x0; + } + puVar6 = (uint *)FUN_004296c0(param_1,0); + uVar9 = 0x10; + lVar11 = 0; + } + goto LAB_00429880; + } + if (*pcVar10 != 'G') { + return (uint *)0x0; + } + *(char **)(param_1 + 0x18) = pcVar10 + 1; + /* try { // try from 004298a0 to 005298a3 has its CatchHandler @ 004296e0 */ + if (pcVar10[1] == '\0') { + return (uint *)0x0; + } + /* catch() { ... } // from try @ 00429754 with catch @ 004298a4 */ + *(char **)(param_1 + 0x18) = pcVar10 + 2; + /* try { // try from 004298b4 to 005298b7 has its CatchHandler @ 004296e0 */ + /* catch() { ... } // from try @ 004298c8 with catch @ 004298b8 + catch() { ... } // from try @ 0042992c with catch @ 004298b8 + catch() { ... } // from try @ 00429954 with catch @ 004298b8 */ + /* try { // try from 004298c8 to 005298eb has its CatchHandler @ 004298b8 */ + switch(pcVar10[1]) { + case 'A': + /* try { // try from 00429a6c to 00529a6f has its CatchHandler @ 004299f8 */ + puVar6 = (uint *)FUN_004296c0(param_1,0); + uVar9 = 0x17; + lVar11 = 0; + /* catch() { ... } // from try @ 00429a64 with catch @ 00429a84 */ + break; + default: + /* try { // try from 004297f8 to 005297fb has its CatchHandler @ 0042987c */ + /* try { // try from 00429800 to 0052982f has its CatchHandler @ 004296e0 */ + return (uint *)0x0; + case 'R': + puVar6 = (uint *)FUN_00429114(param_1); + /* try { // try from 00429a08 to 00529a2b has its CatchHandler @ 004299f8 */ + iVar4 = *(int *)(param_1 + 0x28); + if (iVar4 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar4 + 1; + lVar11 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar11 == 0) goto LAB_00429d68; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 0x41; + uVar9 = FUN_00424c94(param_1 + 0x18); + *(undefined8 *)(lVar11 + 8) = uVar9; + } + else { +LAB_00429d68: + lVar11 = 0; + /* try { // try from 00429d6c to 00529dc7 has its CatchHandler @ 00429fa8 */ + } + uVar9 = 0x16; + /* try { // try from 00429a64 to 00529a67 has its CatchHandler @ 00429a84 */ + break; + case 'T': + /* try { // try from 00429a94 to 00529a97 has its CatchHandler @ 004299f8 */ + /* catch() { ... } // from try @ 00429ab4 with catch @ 00429a98 + catch() { ... } // from try @ 00429b1c with catch @ 00429a98 + catch() { ... } // from try @ 00429bd8 with catch @ 00429a98 + catch() { ... } // from try @ 00429df0 with catch @ 00429a98 + catch() { ... } // from try @ 00429fa4 with catch @ 00429a98 */ + if ((pcVar10[2] == '\0') || (*(char **)(param_1 + 0x18) = pcVar10 + 3, pcVar10[2] != 'n')) { + puVar6 = (uint *)FUN_004296c0(param_1,0); + uVar9 = 0x48; + lVar11 = 0; + } + else { + puVar6 = (uint *)FUN_004296c0(param_1,0); + /* try { // try from 00429ab4 to 00529af7 has its CatchHandler @ 00429a98 */ + uVar9 = 0x49; + lVar11 = 0; + } + break; + case 'V': + /* catch() { ... } // from try @ 004299c4 with catch @ 004299e4 */ + puVar6 = (uint *)FUN_00429114(param_1); + uVar9 = 0x13; + /* try { // try from 004299f4 to 005299f7 has its CatchHandler @ 00429958 */ + /* catch() { ... } // from try @ 00429a08 with catch @ 004299f8 + catch() { ... } // from try @ 00429a6c with catch @ 004299f8 + catch() { ... } // from try @ 00429a94 with catch @ 004299f8 */ + lVar11 = 0; + break; + case 'r': + lVar11 = FUN_00424c94(param_1 + 0x18); + if (lVar11 < 2) { + return (uint *)0x0; + } + /* try { // try from 00429924 to 00529927 has its CatchHandler @ 00429944 */ + pcVar10 = *(char **)(param_1 + 0x18); + /* try { // try from 0042992c to 0052992f has its CatchHandler @ 004298b8 */ + if (*pcVar10 == '\0') { + return (uint *)0x0; + } + pcVar14 = pcVar10 + 1; + *(char **)(param_1 + 0x18) = pcVar14; + if (*pcVar10 != '_') { + return (uint *)0x0; + } + /* catch() { ... } // from try @ 00429924 with catch @ 00429944 */ + lVar11 = lVar11 + -1; + puVar12 = (uint *)0x0; + do { + /* try { // try from 00429954 to 00529957 has its CatchHandler @ 004298b8 */ + if (*pcVar14 == '\0') { + return (uint *)0x0; + } + /* catch() { ... } // from try @ 00429968 with catch @ 00429958 + catch() { ... } // from try @ 004299cc with catch @ 00429958 + catch() { ... } // from try @ 004299f4 with catch @ 00429958 */ + uVar13 = 0; + if (*pcVar14 == '$') { + bVar3 = pcVar14[1]; + uVar5 = (uint)bVar3; + if (bVar3 == 0x53) { + uVar5 = 0x2f; + } + else if (bVar3 == 0x5f) { + uVar5 = 0x2e; + } + else { + /* try { // try from 00429cd8 to 00529d13 has its CatchHandler @ 00429fa8 */ + if (bVar3 != 0x24) { + return (uint *)0x0; + } + } + iVar4 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar4) { +LAB_00429d70: + *(long *)(param_1 + 0x18) = *(long *)(param_1 + 0x18) + 2; + return (uint *)0x0; + } + *(int *)(param_1 + 0x28) = iVar4 + 1; + puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18); + if (puVar6 == (uint *)0x0) goto LAB_00429d70; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 0x40; + lVar7 = -2; + puVar6[2] = uVar5; + pcVar14 = (char *)(*(long *)(param_1 + 0x18) + 2); + *(char **)(param_1 + 0x18) = pcVar14; + } + else { + do { + uVar13 = uVar13 + 1; + /* try { // try from 00429968 to 0052998b has its CatchHandler @ 00429958 */ + if ((lVar11 <= (long)uVar13) || (pcVar14[uVar13] == '\0')) break; + } while (pcVar14[uVar13] != '$'); + lVar7 = -uVar13; + puVar6 = (uint *)FUN_00424680(param_1,pcVar14,uVar13 & 0xffffffff); + pcVar14 = (char *)(*(long *)(param_1 + 0x18) + uVar13); + *(char **)(param_1 + 0x18) = pcVar14; + if (puVar6 == (uint *)0x0) { + return (uint *)0x0; + } + } + lVar11 = lVar11 + lVar7; + /* try { // try from 004299c4 to 005299c7 has its CatchHandler @ 004299e4 */ + if ((puVar12 != (uint *)0x0) && + (puVar6 = (uint *)FUN_004245e0(param_1,0x3f,puVar12), puVar6 == (uint *)0x0)) { + return (uint *)0x0; + } + /* try { // try from 004299cc to 005299cf has its CatchHandler @ 00429958 */ + puVar12 = puVar6; + } while (0 < lVar11); + uVar9 = 0x3e; + lVar11 = 0; + } + goto LAB_00429880; +joined_r0x00429808: + if (puVar12 == (uint *)0x0) goto LAB_00429834; + uVar5 = *puVar12; + if (8 < uVar5) { + if (uVar5 == 0x34) goto LAB_0042975c; + goto LAB_00429834; + } + if (6 < uVar5) goto LAB_0042975c; + if (1 < uVar5 - 1) goto LAB_00429834; + puVar12 = *(uint **)(puVar12 + 4); + goto joined_r0x00429808; +LAB_00429834: + if (cVar2 == 'J') { +LAB_00429cac: + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + lVar11 = FUN_004271e4(param_1); + if (lVar11 == 0) { +LAB_00429d60: + lVar11 = 0; + /* try { // try from 00429d64 to 00529d67 has its CatchHandler @ 00429fdc */ + } + else { +LAB_0042984c: + lVar7 = FUN_0042888c(param_1); + if (lVar7 == 0) goto LAB_00429d60; + /* try { // try from 00429868 to 0052986b has its CatchHandler @ 00429890 */ + lVar11 = FUN_004245e0(param_1,0x29,lVar11,lVar7); + /* try { // try from 00429870 to 00529873 has its CatchHandler @ 004296e0 */ + } + uVar9 = 3; + /* catch() { ... } // from try @ 004297f8 with catch @ 0042987c */ +LAB_00429880: + /* try { // try from 0042988c to 0052988f has its CatchHandler @ 004296e0 */ + /* catch() { ... } // from try @ 00429868 with catch @ 00429890 */ + puVar6 = (uint *)FUN_004245e0(param_1,uVar9,puVar6,lVar11); + return puVar6; +} + + +================================================================== + +### FUNC 00429d84 (376 bytes) name=FUN_00429d84 + +undefined8 FUN_00429d84(long param_1) + +{ + int *piVar1; + undefined8 uVar2; + char cVar3; + char *pcVar4; + int iVar5; + char *pcVar6; + undefined8 uVar7; + + pcVar6 = *(char **)(param_1 + 0x18); + if (*pcVar6 != 'L') { + return 0; + } + pcVar4 = pcVar6 + 1; + *(char **)(param_1 + 0x18) = pcVar4; + if (pcVar6[1] == 'Z') { + cVar3 = 'Z'; + } + else { + if (pcVar6[1] != '_') { + piVar1 = (int *)FUN_004271e4(); + if (piVar1 == (int *)0x0) { + return 0; + } + /* try { // try from 00429df0 to 00529f43 has its CatchHandler @ 00429a98 */ + if ((*piVar1 == 0x27) && (*(int *)(*(long *)(piVar1 + 2) + 0x1c) != 0)) { + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) - *(int *)(*(long *)(piVar1 + 2) + 8); + } + pcVar4 = *(char **)(param_1 + 0x18); + uVar7 = 0x3c; + cVar3 = *pcVar4; + pcVar6 = pcVar4; + if (cVar3 == 'n') { + pcVar6 = pcVar4 + 1; + *(char **)(param_1 + 0x18) = pcVar6; + uVar7 = 0x3d; + cVar3 = pcVar4[1]; + } + pcVar4 = pcVar6; + if (cVar3 == 'E') { + iVar5 = 0; + } + else { + do { + if (cVar3 == '\0') { + return 0; + } + pcVar4 = pcVar4 + 1; + *(char **)(param_1 + 0x18) = pcVar4; + cVar3 = *pcVar4; + } while (cVar3 != 'E'); + iVar5 = (int)pcVar4 - (int)pcVar6; + } + uVar2 = FUN_00424680(param_1,pcVar6,iVar5); + uVar7 = FUN_004245e0(param_1,uVar7,piVar1,uVar2); + pcVar4 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar4; + goto LAB_00429e5c; + } + pcVar4 = pcVar6 + 2; + *(char **)(param_1 + 0x18) = pcVar4; + cVar3 = pcVar6[2]; + } + uVar7 = 0; + if (cVar3 == 'Z') { + *(char **)(param_1 + 0x18) = pcVar4 + 1; + uVar7 = FUN_004296c0(param_1,0); + pcVar4 = *(char **)(param_1 + 0x18); + cVar3 = *pcVar4; + } +LAB_00429e5c: + if (cVar3 != 'E') { + return 0; + } + *(char **)(param_1 + 0x18) = pcVar4 + 1; + return uVar7; +} + + +================================================================== + +### FUNC 00429efc (1640 bytes) name=FUN_00429efc + +int * FUN_00429efc(long param_1) + +{ + char cVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + undefined8 uVar5; + undefined8 uVar6; + char *pcVar7; + long lVar8; + undefined8 *puVar9; + + pcVar7 = *(char **)(param_1 + 0x18); + cVar1 = *pcVar7; + if (cVar1 == 'L') { + piVar3 = (int *)FUN_00429d84(); + return piVar3; + } + if (cVar1 == 'T') { + piVar3 = (int *)FUN_004253cc(); + return piVar3; + } + if (cVar1 == 's') { + if (pcVar7[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar7 + 2; + piVar3 = (int *)FUN_004271e4(); + uVar4 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar6 = FUN_004255a4(param_1); + uVar4 = FUN_004245e0(param_1,4,uVar4,uVar6); + } + uVar6 = 1; + goto LAB_00429fec; + } + if (pcVar7[1] == 'p') { + *(char **)(param_1 + 0x18) = pcVar7 + 2; + piVar3 = (int *)FUN_00429efc(); + uVar6 = 0x4a; + uVar4 = 0; + goto LAB_0042a128; + } + } + else if (cVar1 == 'f') { + /* try { // try from 0042a000 to 0052a033 has its CatchHandler @ 00429fec */ + if (pcVar7[1] == 'p') { + *(char **)(param_1 + 0x18) = pcVar7 + 2; + if (pcVar7[2] == 'T') { + lVar8 = 0; + *(char **)(param_1 + 0x18) = pcVar7 + 3; + } + else { + iVar2 = FUN_0042529c(); + lVar8 = (long)(iVar2 + 1); + if (iVar2 + 1 == 0) { + return (int *)0x0; + } + } + iVar2 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar2) { + return (int *)0x0; + } + /* try { // try from 0042a050 to 0052a053 has its CatchHandler @ 0042a364 */ + *(int *)(param_1 + 0x28) = iVar2 + 1; + piVar3 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18); + /* try { // try from 0042a058 to 0052a08f has its CatchHandler @ 00429fec */ + if (piVar3 == (int *)0x0) { + return (int *)0x0; + } + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar2 * 0x18) = 6; + *(long *)(piVar3 + 2) = lVar8; + return piVar3; + } + } + else { + if ((byte)(cVar1 - 0x30U) < 10) { +LAB_00429f48: + piVar3 = (int *)FUN_00428b90(param_1); + if (piVar3 == (int *)0x0) { + return (int *)0x0; + } + if (**(char **)(param_1 + 0x18) != 'I') { + return piVar3; + } + uVar4 = FUN_004255a4(param_1); + uVar6 = 4; + goto LAB_0042a128; + } + if (cVar1 == 'o') { + if (pcVar7[1] == 'n') { + *(char **)(param_1 + 0x18) = pcVar7 + 2; + goto LAB_00429f48; + } + } + else { + /* catch() { ... } // from try @ 00429b64 with catch @ 00429f80 */ + if (((cVar1 == 't') || (cVar1 == 'i')) && (pcVar7[1] == 'l')) { + piVar3 = (int *)0x0; + if (cVar1 == 't') { + piVar3 = (int *)FUN_004271e4(param_1); + pcVar7 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar7 + 2; + uVar4 = FUN_00426a90(param_1,0x45); + uVar6 = 0x30; + goto LAB_0042a128; + } + } + } + piVar3 = (int *)FUN_0042899c(param_1); + /* try { // try from 00429fa4 to 00529fa7 has its CatchHandler @ 00429a98 */ + if (piVar3 == (int *)0x0) { + return (int *)0x0; + } + /* catch() { ... } // from try @ 00429cd8 with catch @ 00429fa8 + catch() { ... } // from try @ 00429d6c with catch @ 00429fa8 */ + iVar2 = *piVar3; + if (iVar2 == 0x31) { + puVar9 = *(undefined8 **)(piVar3 + 2); + /* try { // try from 0042a0ac to 0052a0af has its CatchHandler @ 0042a33c */ + pcVar7 = (char *)*puVar9; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar9 + 2) + -2; + iVar2 = strcmp(pcVar7,"st"); + if (iVar2 != 0) { + /* try { // try from 0042a0d8 to 0052a327 has its CatchHandler @ 00429fec */ + switch(*(undefined4 *)((long)puVar9 + 0x14)) { + case 0: + goto switchD_0042a190_caseD_0; + case 1: + goto switchD_0042a214_caseD_1; + case 2: + goto switchD_0042a214_caseD_2; + case 3: + goto switchD_0042a214_caseD_3; + default: + goto switchD_0042a190_default; + } + } + uVar4 = FUN_004271e4(param_1); + } + else { + if (iVar2 == 0x32) { + switch(piVar3[2]) { + case 0: +switchD_0042a190_caseD_0: + uVar6 = 0x35; + uVar4 = 0; +LAB_0042a128: + piVar3 = (int *)FUN_004245e0(param_1,uVar6,piVar3,uVar4); + return piVar3; + case 1: + goto switchD_0042a190_caseD_1; + case 2: + pcVar7 = (char *)0x0; +switchD_0042a214_caseD_2: + if ((((char *)**(undefined8 **)(piVar3 + 2))[1] == 'c') && + ((cVar1 = *(char *)**(undefined8 **)(piVar3 + 2), (byte)(cVar1 + 0x8eU) < 2 || + ((byte)(cVar1 + 0x9dU) < 2)))) { + uVar4 = FUN_004271e4(param_1); + } + else { + uVar4 = FUN_00429efc(param_1); + } + iVar2 = strcmp(pcVar7,"cl"); + if (iVar2 == 0) { + uVar6 = FUN_00426a90(param_1,0x45); + /* try { // try from 0042a460 to 0052a6c7 has its CatchHandler @ 0042a374 */ + } + else { + iVar2 = strcmp(pcVar7,"dt"); + /* catch() { ... } // from try @ 0042a0ac with catch @ 0042a33c */ + if ((iVar2 == 0) || (iVar2 = strcmp(pcVar7,"pt"), iVar2 == 0)) { + uVar6 = FUN_00428b90(param_1); + /* try { // try from 0042a360 to 0052a363 has its CatchHandler @ 00429fec */ + /* catch() { ... } // from try @ 0042a050 with catch @ 0042a364 */ + if (**(char **)(param_1 + 0x18) == 'I') { + uVar5 = FUN_004255a4(param_1); + uVar6 = FUN_004245e0(param_1,4,uVar6,uVar5); + } + } + else { + uVar6 = FUN_00429efc(param_1); + } + } + /* catch() { ... } // from try @ 0042a388 with catch @ 0042a374 + catch() { ... } // from try @ 0042a3e0 with catch @ 0042a374 + catch() { ... } // from try @ 0042a460 with catch @ 0042a374 + catch() { ... } // from try @ 0042a6fc with catch @ 0042a374 */ + uVar4 = FUN_004245e0(param_1,0x38,uVar4,uVar6); + uVar6 = 0x37; + /* try { // try from 0042a388 to 0052a3bb has its CatchHandler @ 0042a374 */ + goto LAB_00429fec; + case 3: + pcVar7 = (char *)0x0; +switchD_0042a214_caseD_3: + iVar2 = strcmp(pcVar7,"qu"); + if (iVar2 == 0) { + uVar4 = FUN_00429efc(param_1); + /* try { // try from 0042a434 to 0052a437 has its CatchHandler @ 0042a6d8 */ + uVar6 = FUN_00429efc(param_1); + uVar5 = FUN_00429efc(param_1); + } + else { + if (*pcVar7 != 'n') { + return (int *)0x0; + } + if ((pcVar7[1] != 'a') && (pcVar7[1] != 'w')) { + return (int *)0x0; + } + uVar4 = FUN_00426a90(param_1,0x5f); + uVar6 = FUN_004271e4(param_1); + pcVar7 = *(char **)(param_1 + 0x18); + cVar1 = *pcVar7; + if (cVar1 == 'E') { + uVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar7 + 1; + } + else if (cVar1 == 'p') { + if (pcVar7[1] != 'i') { + return (int *)0x0; + } + *(char **)(param_1 + 0x18) = pcVar7 + 2; + uVar5 = FUN_00426a90(param_1,0x45); + } + else { + if ((cVar1 != 'i') || (pcVar7[1] != 'l')) { +switchD_0042a190_default: + return (int *)0x0; + } + uVar5 = FUN_00429efc(param_1); + } + } + uVar6 = FUN_004245e0(param_1,0x3b,uVar6,uVar5); + uVar4 = FUN_004245e0(param_1,0x3a,uVar4,uVar6); + uVar6 = 0x39; + goto LAB_00429fec; + default: + goto switchD_0042a190_default; + } + } + if (iVar2 != 0x33) { + return (int *)0x0; + } + /* catch() { ... } // from try @ 00429b14 with catch @ 00429fcc */ + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar4 = FUN_00426a90(param_1,0x45); + goto LAB_00429fe0; + } +switchD_0042a190_caseD_1: + uVar4 = FUN_00429efc(param_1); + /* catch() { ... } // from try @ 00429d64 with catch @ 00429fdc */ + } +LAB_00429fe0: + uVar6 = 0x36; +LAB_00429fec: + /* catch() { ... } // from try @ 0042a000 with catch @ 00429fec + catch() { ... } // from try @ 0042a058 with catch @ 00429fec + catch() { ... } // from try @ 0042a0d8 with catch @ 00429fec + catch() { ... } // from try @ 0042a360 with catch @ 00429fec */ + piVar3 = (int *)FUN_004245e0(param_1,uVar6,piVar3,uVar4); + return piVar3; +switchD_0042a214_caseD_1: + cVar1 = *pcVar7; + if (((cVar1 == 'm') || (cVar1 == 'p')) && (pcVar7[1] == cVar1)) { + /* try { // try from 0042a3d8 to 0052a3db has its CatchHandler @ 0042a700 */ + if (**(char **)(param_1 + 0x18) != '_') { + /* try { // try from 0042a3e0 to 0052a417 has its CatchHandler @ 0042a374 */ + uVar4 = FUN_00429efc(param_1); + uVar4 = FUN_004245e0(param_1,0x38,uVar4,uVar4); + goto LAB_00429fe0; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_0042a190_caseD_1; +} + + +================================================================== + +### FUNC 0042a564 (304 bytes) name=FUN_0042a564 + +undefined8 FUN_0042a564(long param_1) + +{ + char *pcVar1; + char cVar2; + int iVar3; + long lVar4; + long lVar5; + undefined8 uVar6; + char *pcVar7; + undefined8 uVar8; + + pcVar7 = *(char **)(param_1 + 0x18); + if (*pcVar7 == 'F') { + pcVar1 = pcVar7 + 1; + *(char **)(param_1 + 0x18) = pcVar1; + cVar2 = pcVar7[1]; + if (cVar2 == 'Y') { + pcVar1 = pcVar7 + 2; + *(char **)(param_1 + 0x18) = pcVar1; + cVar2 = pcVar7[2]; + } + if (cVar2 == 'J') { + *(char **)(param_1 + 0x18) = pcVar1 + 1; + } + lVar4 = FUN_004271e4(); + if ((lVar4 == 0) || (lVar5 = FUN_0042888c(param_1), lVar5 == 0)) { + uVar6 = 0; + } + else { + uVar6 = FUN_004245e0(param_1,0x29,lVar4,lVar5); + } + pcVar7 = *(char **)(param_1 + 0x18); + cVar2 = *pcVar7; + if (cVar2 == 'O') { + uVar8 = 0x20; + iVar3 = *(int *)(param_1 + 0x50) + 3; + } + else { + if (cVar2 != 'R') { + if (cVar2 != 'E') { + return 0; + } + goto LAB_0042a604; + } + uVar8 = 0x1f; + iVar3 = *(int *)(param_1 + 0x50) + 2; + } + *(int *)(param_1 + 0x50) = iVar3; + *(char **)(param_1 + 0x18) = pcVar7 + 1; + uVar6 = FUN_004245e0(param_1,uVar8,uVar6,0); + pcVar7 = *(char **)(param_1 + 0x18); + if (*pcVar7 == 'E') { +LAB_0042a604: + *(char **)(param_1 + 0x18) = pcVar7 + 1; + return uVar6; + } + } + return 0; +} + + +================================================================== + +### FUNC 0042a694 (10036 bytes) name=FUN_0042a694 + +undefined8 FUN_0042a694(long param_1) + +{ + undefined4 uVar1; + byte bVar2; + bool bVar3; + int iVar4; + int iVar5; + ulong uVar6; + undefined8 uVar7; + undefined8 uVar8; + long lVar9; + int *piVar10; + char *pcVar11; + int *piVar12; + long lVar13; + char *pcVar14; + int *piVar15; + undefined8 uVar16; + char cVar17; + byte *pbVar18; + byte *pbVar19; + ulong uVar20; + undefined8 *puVar21; + + pbVar19 = *(byte **)(param_1 + 0x18); + if (*pbVar19 != 0x5f) { + iVar5 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar5) { + return 0; + } + /* catch() { ... } // from try @ 0042a434 with catch @ 0042a6d8 */ + *(int *)(param_1 + 0x28) = iVar5 + 1; + lVar9 = *(long *)(param_1 + 0x20) + (long)iVar5 * 0x18; + if (lVar9 == 0) { + return 0; + } + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar5 * 0x18) = 0x41; + /* try { // try from 0042a6fc to 0052a6ff has its CatchHandler @ 0042a374 */ + bVar2 = *pbVar19; + /* catch() { ... } // from try @ 0042a3d8 with catch @ 0042a700 */ + bVar3 = bVar2 == 0x6e; + if (bVar3) { + pbVar18 = pbVar19 + 1; + *(byte **)(param_1 + 0x18) = pbVar18; + uVar20 = 0xffffffffffffffff; + bVar2 = pbVar19[1]; + } + else { + uVar20 = 0; + pbVar18 = pbVar19; + } + uVar6 = 0; + /* catch() { ... } // from try @ 0042a744 with catch @ 0042a71c + catch() { ... } // from try @ 0042a7b0 with catch @ 0042a71c + catch() { ... } // from try @ 0042a918 with catch @ 0042a71c + catch() { ... } // from try @ 0042ab4c with catch @ 0042a71c + catch() { ... } // from try @ 0042ab78 with catch @ 0042a71c + catch() { ... } // from try @ 0042ab8c with catch @ 0042a71c */ + while ((byte)(bVar2 - 0x30) < 10) { + pbVar18 = pbVar18 + 1; + *(byte **)(param_1 + 0x18) = pbVar18; + uVar6 = (uVar6 * 10 + (ulong)bVar2) - 0x30; + bVar2 = *pbVar18; + /* try { // try from 0042a744 to 0052a767 has its CatchHandler @ 0042a71c */ + } + *(ulong *)(lVar9 + 8) = (ulong)bVar3 + (uVar6 ^ uVar20); + goto LAB_0042a760; + } + pbVar18 = pbVar19 + 1; + uVar1 = *(undefined4 *)(param_1 + 0x54); + *(byte **)(param_1 + 0x18) = pbVar18; + *(undefined4 *)(param_1 + 0x54) = 1; + bVar2 = pbVar19[1]; + if (bVar2 == 0x4c) { + lVar9 = FUN_00429d84(); + } + else if (bVar2 == 0x54) { + lVar9 = FUN_004253cc(); + } + else if (bVar2 == 0x73) { + if (pbVar19[2] == 0x72) { + *(byte **)(param_1 + 0x18) = pbVar19 + 3; + uVar7 = FUN_004271e4(); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + /* try { // try from 0042b1a4 to 0052b313 has its CatchHandler @ 0042afc8 */ + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + lVar9 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + else { + lVar9 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + } + else { + /* try { // try from 0042a8a4 to 0052a8a7 has its CatchHandler @ 0042ab54 */ + if (pbVar19[2] != 0x70) goto LAB_0042a8ac; + *(byte **)(param_1 + 0x18) = pbVar19 + 3; + uVar7 = FUN_00429efc(); + lVar9 = FUN_004245e0(param_1,0x4a,uVar7,0); + } + } + else { + if (bVar2 == 0x66) { + if (pbVar19[2] == 0x70) { + *(byte **)(param_1 + 0x18) = pbVar19 + 3; + if (pbVar19[3] == 0x54) { + lVar13 = 0; + *(byte **)(param_1 + 0x18) = pbVar19 + 4; + } + else { + iVar5 = FUN_0042529c(); + if (iVar5 + 1 == 0) goto switchD_0042aaac_default; + lVar13 = (long)(iVar5 + 1); + } + iVar5 = *(int *)(param_1 + 0x28); + if (iVar5 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar5 + 1; + lVar9 = *(long *)(param_1 + 0x20) + (long)iVar5 * 0x18; + if (lVar9 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar5 * 0x18) = 6; + *(long *)(lVar9 + 8) = lVar13; + *(undefined4 *)(param_1 + 0x54) = uVar1; + pbVar18 = *(byte **)(param_1 + 0x18); + goto LAB_0042a760; + } + } + goto switchD_0042aaac_default; + } + } + else { + if ((byte)(bVar2 - 0x30) < 10) { +LAB_0042a9f0: + lVar9 = FUN_00428b90(param_1); + if (lVar9 == 0) goto switchD_0042aaac_default; + pbVar18 = *(byte **)(param_1 + 0x18); + if (*pbVar18 != 0x49) { + *(undefined4 *)(param_1 + 0x54) = uVar1; + goto LAB_0042a760; + } + uVar7 = FUN_004255a4(param_1); + lVar9 = FUN_004245e0(param_1,4,lVar9,uVar7); + goto LAB_0042a86c; + } + /* try { // try from 0042a814 to 0052a827 has its CatchHandler @ 0042ab54 */ + if (bVar2 == 0x6f) { + if (pbVar19[2] == 0x6e) { + *(byte **)(param_1 + 0x18) = pbVar19 + 3; + goto LAB_0042a9f0; + } + } + else { + /* try { // try from 0042a830 to 0052a833 has its CatchHandler @ 0042ab90 */ + if (((bVar2 == 0x74) || (bVar2 == 0x69)) && (pbVar19[2] == 0x6c)) { + uVar7 = 0; + if (bVar2 == 0x74) { + uVar7 = FUN_004271e4(param_1); + pbVar18 = *(byte **)(param_1 + 0x18); + } + *(byte **)(param_1 + 0x18) = pbVar18 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar9 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + goto LAB_0042a86c; + } + } + } +LAB_0042a8ac: + piVar10 = (int *)FUN_0042899c(param_1); + if (piVar10 == (int *)0x0) goto switchD_0042aaac_default; + iVar5 = *piVar10; + if (iVar5 == 0x31) { + puVar21 = *(undefined8 **)(piVar10 + 2); + /* try { // try from 0042ad44 to 0052ad97 has its CatchHandler @ 0042abb8 */ + pcVar11 = (char *)*puVar21; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar21 + 2) + -2; + iVar4 = strcmp(pcVar11,"st"); + if (iVar4 != 0) { + switch(*(undefined4 *)((long)puVar21 + 0x14)) { + case 0: +switchD_0042aaac_caseD_0: + lVar9 = FUN_004245e0(param_1,0x35,piVar10,0); + goto LAB_0042a86c; + case 1: + cVar17 = *pcVar11; + if (((cVar17 != 'm') && (cVar17 != 'p')) || (pcVar11[1] != cVar17)) + goto switchD_0042aaac_caseD_1; + pcVar11 = *(char **)(param_1 + 0x18); + bVar3 = true; + cVar17 = *pcVar11; + if (cVar17 != '_') goto LAB_0042a8f4; + pcVar11 = pcVar11 + 1; + *(char **)(param_1 + 0x18) = pcVar11; + goto LAB_0042ade4; + case 2: +switchD_0042ad88_caseD_2: + /* try { // try from 0042abcc to 0052abeb has its CatchHandler @ 0042abb8 */ + if ((((char *)**(undefined8 **)(piVar10 + 2))[1] == 'c') && + ((cVar17 = *(char *)**(undefined8 **)(piVar10 + 2), (byte)(cVar17 + 0x8eU) < 2 || + ((byte)(cVar17 + 0x9dU) < 2)))) { + lVar9 = FUN_004271e4(param_1); + /* try { // try from 0042af54 to 0052af57 has its CatchHandler @ 0042abb8 */ + } + else { + pcVar14 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar14; + if (cVar17 == 'L') { + lVar9 = FUN_00429d84(param_1); + } + else if (cVar17 == 'T') { + lVar9 = FUN_004253cc(param_1); + /* try { // try from 0042ba74 to 0052ba77 has its CatchHandler @ 0042ba4c */ + } + else if (cVar17 == 's') { + if (pcVar14[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar14 + 2; + uVar7 = FUN_004271e4(param_1); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + lVar9 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + else { + lVar9 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + } + else { + if (pcVar14[1] != 'p') goto LAB_0042ac3c; + *(char **)(param_1 + 0x18) = pcVar14 + 2; + uVar7 = FUN_00429efc(param_1); + lVar9 = FUN_004245e0(param_1,0x4a,uVar7,0); + } + } + else { + if (cVar17 == 'f') { + /* try { // try from 0042b410 to 0052b413 has its CatchHandler @ 0042b7a0 */ + if (pcVar14[1] != 'p') goto LAB_0042ac3c; + /* try { // try from 0042b418 to 0052b47b has its CatchHandler @ 0042b7d0 */ + *(char **)(param_1 + 0x18) = pcVar14 + 2; + if (pcVar14[2] == 'T') { + iVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar14 + 3; + } + else { + iVar5 = FUN_0042529c(param_1); + iVar5 = iVar5 + 1; + if (iVar5 == 0) goto switchD_0042c9c0_default; + } + iVar4 = *(int *)(param_1 + 0x28); + if (iVar4 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar4 + 1; + lVar9 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar9 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(lVar9 + 8) = (long)iVar5; + } + goto LAB_0042ac9c; + } + } + else if ((byte)(cVar17 - 0x30U) < 10) { +LAB_0042b288: + lVar9 = FUN_00428b90(param_1); + if (lVar9 != 0) { + if (**(char **)(param_1 + 0x18) == 'I') { + uVar7 = FUN_004255a4(param_1); + lVar9 = FUN_004245e0(param_1,4,lVar9,uVar7); + } + goto LAB_0042ac9c; + } + } + else { + if (cVar17 == 'o') { + if (pcVar14[1] == 'n') { + *(char **)(param_1 + 0x18) = pcVar14 + 2; + goto LAB_0042b288; + } + } + else { + /* try { // try from 0042ac30 to 0052ac33 has its CatchHandler @ 0042af9c */ + if (((cVar17 == 't') || (cVar17 == 'i')) && (pcVar14[1] == 'l')) { + uVar7 = 0; + if (cVar17 == 't') { + uVar7 = FUN_004271e4(param_1); + pcVar14 = *(char **)(param_1 + 0x18); + } + /* try { // try from 0042ba98 to 0052ba9b has its CatchHandler @ 0042bb2c */ + *(char **)(param_1 + 0x18) = pcVar14 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar9 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + goto LAB_0042ac9c; + } + } +LAB_0042ac3c: + piVar12 = (int *)FUN_0042899c(param_1); + if (piVar12 != (int *)0x0) { + iVar5 = *piVar12; + /* try { // try from 0042ac50 to 0052ac53 has its CatchHandler @ 0042afa4 */ + if (iVar5 == 0x31) { + puVar21 = *(undefined8 **)(piVar12 + 2); + pcVar14 = (char *)*puVar21; + /* catch() { ... } // from try @ 0042b968 with catch @ 0042ba24 */ + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar21 + 2) + -2 + ; + iVar5 = strcmp(pcVar14,"st"); + if (iVar5 == 0) { + uVar7 = FUN_004271e4(param_1); +LAB_0042c930: + lVar9 = FUN_004245e0(param_1,0x36,piVar12,uVar7); + goto LAB_0042ac9c; + } + switch(*(undefined4 *)((long)puVar21 + 0x14)) { + case 0: + goto switchD_0042c9c0_caseD_0; + case 1: + cVar17 = *pcVar14; + /* try { // try from 0042cc70 to 0052cc73 has its CatchHandler @ 0042cfac */ + if (((cVar17 == 'm') || (cVar17 == 'p')) && (pcVar14[1] == cVar17)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + goto LAB_0042c930; + } + /* try { // try from 0042cd40 to 0052cd43 has its CatchHandler @ 0042cfac */ + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_0042c9c0_caseD_1; + case 2: + goto switchD_0042ba64_caseD_2; + case 3: + goto switchD_0042ba64_caseD_3; + } + } + else if (iVar5 == 0x32) { + /* try { // try from 0042c9a0 to 0052c9cb has its CatchHandler @ 0042cfd0 */ + switch(piVar12[2]) { + case 0: +switchD_0042c9c0_caseD_0: + lVar9 = FUN_004245e0(param_1,0x35,piVar12,0); + goto LAB_0042ac9c; + case 1: +switchD_0042c9c0_caseD_1: + uVar7 = FUN_00429efc(param_1); + goto LAB_0042ac84; + case 2: + pcVar14 = (char *)0x0; +switchD_0042ba64_caseD_2: + /* try { // try from 0042ca0c to 0052ca0f has its CatchHandler @ 0042cf84 */ + /* try { // try from 0042cafc to 0052caff has its CatchHandler @ 0042ce94 */ + if ((((char *)**(undefined8 **)(piVar12 + 2))[1] == 'c') && + ((cVar17 = *(char *)**(undefined8 **)(piVar12 + 2), + (byte)(cVar17 + 0x8eU) < 2 || ((byte)(cVar17 + 0x9dU) < 2)))) { + /* try { // try from 0042cb04 to 0052cb7f has its CatchHandler @ 0042cfd0 */ + uVar7 = FUN_004271e4(param_1); + } + else { + /* try { // try from 0042ca14 to 0052ca47 has its CatchHandler @ 0042cfd0 */ + uVar7 = FUN_00429efc(param_1); + } + iVar5 = strcmp(pcVar14,"cl"); + if (iVar5 == 0) { + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar5 = strcmp(pcVar14,"dt"); + if ((iVar5 == 0) || (iVar5 = strcmp(pcVar14,"pt"), iVar5 == 0)) { + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + } + } + else { + uVar8 = FUN_00429efc(param_1); + } + } + /* try { // try from 0042ca98 to 0052ca9b has its CatchHandler @ 0042cf98 */ + /* try { // try from 0042caa0 to 0052cacf has its CatchHandler @ 0042cfd0 */ + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar8); + lVar9 = FUN_004245e0(param_1,0x37,piVar12,uVar7); + goto LAB_0042ac9c; + case 3: + pcVar14 = (char *)0x0; +switchD_0042ba64_caseD_3: + iVar5 = strcmp(pcVar14,"qu"); + if (iVar5 == 0) { + uVar7 = FUN_00429efc(param_1); + /* try { // try from 0042cbfc to 0052cbff has its CatchHandler @ 0042cfc8 */ + uVar8 = FUN_00429efc(param_1); + uVar16 = FUN_00429efc(param_1); +LAB_0042cba8: + uVar8 = FUN_004245e0(param_1,0x3b,uVar8,uVar16); + uVar7 = FUN_004245e0(param_1,0x3a,uVar7,uVar8); + lVar9 = FUN_004245e0(param_1,0x39,piVar12,uVar7); + goto LAB_0042ac9c; + } + if ((*pcVar14 == 'n') && ((pcVar14[1] == 'a' || (pcVar14[1] == 'w')))) { + uVar7 = FUN_00426a90(param_1,0x5f); + uVar8 = FUN_004271e4(param_1); + pcVar14 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar14; + if (cVar17 == 'E') { + uVar16 = 0; + *(char **)(param_1 + 0x18) = pcVar14 + 1; + goto LAB_0042cba8; + } + if (cVar17 == 'p') { + if (pcVar14[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar14 + 2; + uVar16 = FUN_00426a90(param_1,0x45); + goto LAB_0042cba8; + } + } + else if ((cVar17 == 'i') && (pcVar14[1] == 'l')) { + uVar16 = FUN_00429efc(param_1); + goto LAB_0042cba8; + } + } + } + } + else if (iVar5 == 0x33) { + if (**(char **)(param_1 + 0x18) != '_') goto switchD_0042c9c0_caseD_1; + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + /* try { // try from 0042c998 to 0052c99b has its CatchHandler @ 0042cfb4 */ +LAB_0042ac84: + lVar9 = FUN_004245e0(param_1,0x36,piVar12,uVar7); + goto LAB_0042ac9c; + } + } + } +switchD_0042c9c0_default: + lVar9 = 0; + } + } +LAB_0042ac9c: + iVar5 = strcmp(pcVar11,"cl"); + if (iVar5 == 0) { + uVar7 = FUN_00426a90(param_1,0x45); + } + else { + iVar5 = strcmp(pcVar11,"dt"); + /* try { // try from 0042acc4 to 0052acc7 has its CatchHandler @ 0042af9c */ + if ((iVar5 == 0) || (iVar5 = strcmp(pcVar11,"pt"), iVar5 == 0)) { + uVar7 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar8 = FUN_004255a4(param_1); + uVar7 = FUN_004245e0(param_1,4,uVar7,uVar8); + } + } + else { + uVar7 = FUN_00429efc(param_1); + } + } + uVar7 = FUN_004245e0(param_1,0x38,lVar9,uVar7); + lVar9 = FUN_004245e0(param_1,0x37,piVar10,uVar7); + goto LAB_0042a86c; + case 3: + goto switchD_0042ad88_caseD_3; + default: + goto switchD_0042aaac_default; + } + } + uVar7 = FUN_004271e4(param_1); +LAB_0042a9c0: + lVar9 = FUN_004245e0(param_1,0x36,piVar10,uVar7); + } + else { + if (iVar5 == 0x32) { + switch(piVar10[2]) { + case 0: + goto switchD_0042aaac_caseD_0; + case 1: + goto switchD_0042aaac_caseD_1; + case 2: + pcVar11 = (char *)0x0; + goto switchD_0042ad88_caseD_2; + case 3: + pcVar11 = (char *)0x0; + goto switchD_0042ad88_caseD_3; + default: + goto switchD_0042aaac_default; + } + } + if (iVar5 != 0x33) goto switchD_0042aaac_default; +switchD_0042aaac_caseD_1: + pcVar11 = *(char **)(param_1 + 0x18); + if (iVar5 == 0x33) { + cVar17 = *pcVar11; + bVar3 = false; + if (cVar17 != '_') goto LAB_0042a8f4; + *(char **)(param_1 + 0x18) = pcVar11 + 1; + lVar9 = FUN_00426a90(param_1,0x45); + } + else { +LAB_0042ade4: + cVar17 = *pcVar11; + bVar3 = false; +LAB_0042a8f4: + if (cVar17 == 'L') { + lVar9 = FUN_00429d84(param_1); + } + else if (cVar17 == 'T') { + lVar9 = FUN_004253cc(param_1); + } + else if (cVar17 == 's') { + if (pcVar11[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar7 = FUN_004271e4(param_1); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + lVar9 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + else { + lVar9 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + } + else { + if (pcVar11[1] != 'p') goto LAB_0042a94c; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar7 = FUN_00429efc(param_1); + lVar9 = FUN_004245e0(param_1,0x4a,uVar7,0); + } + } + else if (cVar17 == 'f') { + if (pcVar11[1] != 'p') goto LAB_0042a94c; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + if (pcVar11[2] == 'T') { + iVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 3; + } + else { + iVar5 = FUN_0042529c(param_1); + iVar5 = iVar5 + 1; + if (iVar5 == 0) goto LAB_0042b848; + } + iVar4 = *(int *)(param_1 + 0x28); + lVar9 = 0; + if (iVar4 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar4 + 1; + lVar9 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar9 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(lVar9 + 8) = (long)iVar5; + } + } + } + else { + /* try { // try from 0042a918 to 0052a943 has its CatchHandler @ 0042a71c */ + if ((byte)(cVar17 - 0x30U) < 10) { +LAB_0042aeb4: + lVar9 = FUN_00428b90(param_1); + /* try { // try from 0042aebc to 0052aebf has its CatchHandler @ 0042af6c */ + /* try { // try from 0042aec4 to 0052af47 has its CatchHandler @ 0042af9c */ + if ((lVar9 != 0) && (**(char **)(param_1 + 0x18) == 'I')) { + uVar7 = FUN_004255a4(param_1); + lVar9 = FUN_004245e0(param_1,4,lVar9,uVar7); + } + } + else { + if (cVar17 == 'o') { + if (pcVar11[1] == 'n') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + goto LAB_0042aeb4; + } + } + else if (((cVar17 == 't') || (cVar17 == 'i')) && (pcVar11[1] == 'l')) { + uVar7 = 0; + if (cVar17 == 't') { + uVar7 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar9 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + goto switchD_0042b7dc_default; + } +LAB_0042a94c: + piVar12 = (int *)FUN_0042899c(param_1); + if (piVar12 == (int *)0x0) { +LAB_0042b848: + lVar9 = 0; + } + else { + iVar5 = *piVar12; + if (iVar5 == 0x31) { + puVar21 = *(undefined8 **)(piVar12 + 2); + /* catch() { ... } // from try @ 0042b824 with catch @ 0042b7f0 + catch() { ... } // from try @ 0042b8d8 with catch @ 0042b7f0 + catch() { ... } // from try @ 0042b91c with catch @ 0042b7f0 */ + pcVar11 = (char *)*puVar21; + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(puVar21 + 2) + -2; + iVar5 = strcmp(pcVar11,"st"); + if (iVar5 != 0) { + lVar9 = 0; + /* try { // try from 0042b824 to 0052b827 has its CatchHandler @ 0042b7f0 */ + switch(*(undefined4 *)((long)puVar21 + 0x14)) { + case 0: + goto switchD_0042b7dc_caseD_0; + case 1: + goto switchD_0042b834_caseD_1; + case 2: + goto switchD_0042b834_caseD_2; + case 3: + goto switchD_0042b834_caseD_3; + default: + goto switchD_0042b7dc_default; + } + } + uVar7 = FUN_004271e4(param_1); + } + else { + if (iVar5 == 0x32) { + lVar9 = 0; + /* try { // try from 0042b7cc to 0052b7cf has its CatchHandler @ 0042b360 */ + /* catch() { ... } // from try @ 0042b3e0 with catch @ 0042b7d0 + catch() { ... } // from try @ 0042b418 with catch @ 0042b7d0 */ + switch(piVar12[2]) { + case 0: +switchD_0042b7dc_caseD_0: + lVar9 = FUN_004245e0(param_1,0x35,piVar12,0); + /* try { // try from 0042b864 to 0052b867 has its CatchHandler @ 0042b8f8 */ + break; + case 1: + goto switchD_0042b7dc_caseD_1; + case 2: + pcVar11 = (char *)0x0; +switchD_0042b834_caseD_2: + /* catch() { ... } // from try @ 0042ba98 with catch @ 0042bb2c */ + if ((((char *)**(undefined8 **)(piVar12 + 2))[1] == 'c') && + ((cVar17 = *(char *)**(undefined8 **)(piVar12 + 2), + (byte)(cVar17 + 0x8eU) < 2 || ((byte)(cVar17 + 0x9dU) < 2)))) { + uVar7 = FUN_004271e4(param_1); + } + else { + uVar7 = FUN_00429efc(param_1); + } + iVar5 = strcmp(pcVar11,"cl"); + if (iVar5 == 0) { + /* try { // try from 0042bb0c to 0052bb27 has its CatchHandler @ 0042ba4c */ + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar5 = strcmp(pcVar11,"dt"); + if ((iVar5 == 0) || (iVar5 = strcmp(pcVar11,"pt"), iVar5 == 0)) { + uVar8 = FUN_00428b90(param_1); + /* try { // try from 0042b8d8 to 0052b8f3 has its CatchHandler @ 0042b7f0 */ + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + /* catch() { ... } // from try @ 0042b864 with catch @ 0042b8f8 */ + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + } + } + else { + uVar8 = FUN_00429efc(param_1); + /* try { // try from 0042bba4 to 0052bba7 has its CatchHandler @ 0042bf8c */ + } + } + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar8); + /* try { // try from 0042b91c to 0052b91f has its CatchHandler @ 0042b7f0 */ + /* catch() { ... } // from try @ 0042b948 with catch @ 0042b920 + catch() { ... } // from try @ 0042b9f4 with catch @ 0042b920 + catch() { ... } // from try @ 0042ba48 with catch @ 0042b920 */ + lVar9 = FUN_004245e0(param_1,0x37,piVar12,uVar7); + break; + case 3: + pcVar11 = (char *)0x0; +switchD_0042b834_caseD_3: + /* try { // try from 0042b948 to 0052b94b has its CatchHandler @ 0042b920 */ + iVar5 = strcmp(pcVar11,"qu"); + if (iVar5 == 0) { + uVar7 = FUN_00429efc(param_1); + uVar8 = FUN_00429efc(param_1); + uVar16 = FUN_00429efc(param_1); + } + else { + /* try { // try from 0042b968 to 0052b96b has its CatchHandler @ 0042ba24 */ + if ((*pcVar11 != 'n') || ((pcVar11[1] != 'a' && (pcVar11[1] != 'w')))) + goto LAB_0042b848; + uVar7 = FUN_00426a90(param_1,0x5f); + uVar8 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + if (cVar17 != 'E') { + if (cVar17 == 'p') { + lVar9 = 0; + if (pcVar11[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar16 = FUN_00426a90(param_1,0x45); + goto LAB_0042b9c4; + } + } + else { + if (cVar17 != 'i') goto LAB_0042b848; + lVar9 = 0; + if (pcVar11[1] == 'l') { + uVar16 = FUN_00429efc(param_1); + goto LAB_0042b9c4; + } + } + break; + } + uVar16 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 1; + } +LAB_0042b9c4: + uVar8 = FUN_004245e0(param_1,0x3b,uVar8,uVar16); + uVar7 = FUN_004245e0(param_1,0x3a,uVar7,uVar8); + /* try { // try from 0042b9f4 to 0052ba1f has its CatchHandler @ 0042b920 */ + lVar9 = FUN_004245e0(param_1,0x39,piVar12,uVar7); + } + goto switchD_0042b7dc_default; + } + if (iVar5 != 0x33) goto LAB_0042b848; + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_0042a994; + } +switchD_0042b7dc_caseD_1: + uVar7 = FUN_00429efc(param_1); + } +LAB_0042a994: + lVar9 = FUN_004245e0(param_1,0x36,piVar12,uVar7); + } + } + } +switchD_0042b7dc_default: + if (bVar3) { + uVar7 = FUN_004245e0(param_1,0x38,lVar9,lVar9); + goto LAB_0042a9c0; + } + } + /* try { // try from 0042ae78 to 0052ae7b has its CatchHandler @ 0042af9c */ + lVar9 = FUN_004245e0(param_1,0x36,piVar10,lVar9); + } + } +LAB_0042a86c: + *(undefined4 *)(param_1 + 0x54) = uVar1; + if (lVar9 == 0) { + return 0; + } + pbVar18 = *(byte **)(param_1 + 0x18); +LAB_0042a760: + if (*pbVar18 != 0x5f) { + return 0; + } + *(byte **)(param_1 + 0x18) = pbVar18 + 1; + uVar7 = FUN_004271e4(param_1); + /* try { // try from 0042a7a8 to 0052a7ab has its CatchHandler @ 0042ab7c */ + /* try { // try from 0042a7b0 to 0052a7d7 has its CatchHandler @ 0042a71c */ + uVar7 = FUN_004245e0(param_1,0x2d,lVar9,uVar7); + return uVar7; +switchD_0042ad88_caseD_3: + iVar5 = strcmp(pcVar11,"qu"); + if (iVar5 == 0) { + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + if (cVar17 == 'L') { + piVar12 = (int *)FUN_00429d84(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; +LAB_0042b01c: + if (cVar17 == 'L') { + lVar9 = FUN_00429d84(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b0d8; + } + if (cVar17 == 'T') { + lVar9 = FUN_004253cc(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b0d8; + } + if (cVar17 == 's') { + if (pcVar11[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + /* try { // try from 0042bf64 to 0052bf67 has its CatchHandler @ 0042bb54 */ + piVar15 = (int *)FUN_004271e4(param_1); + /* catch() { ... } // from try @ 0042bc8c with catch @ 0042bf68 + catch() { ... } // from try @ 0042bd24 with catch @ 0042bf68 + catch() { ... } // from try @ 0042bedc with catch @ 0042bf68 */ + /* catch() { ... } // from try @ 0042bc38 with catch @ 0042bf70 */ + uVar7 = FUN_00428b90(param_1); + /* catch() { ... } // from try @ 0042bbe4 with catch @ 0042bf84 + catch() { ... } // from try @ 0042bc40 with catch @ 0042bf84 + catch() { ... } // from try @ 0042bd98 with catch @ 0042bf84 + catch() { ... } // from try @ 0042bed0 with catch @ 0042bf84 */ + if (**(char **)(param_1 + 0x18) == 'I') { + uVar8 = FUN_004255a4(param_1); + uVar7 = FUN_004245e0(param_1,4,uVar7,uVar8); + uVar8 = 1; + goto LAB_0042b0c4; + } + /* catch() { ... } // from try @ 0042bba4 with catch @ 0042bf8c + catch() { ... } // from try @ 0042be0c with catch @ 0042bf8c + catch() { ... } // from try @ 0042bec4 with catch @ 0042bf8c */ + /* catch() { ... } // from try @ 0042bfe4 with catch @ 0042bf98 + catch() { ... } // from try @ 0042c0b0 with catch @ 0042bf98 + catch() { ... } // from try @ 0042c3b0 with catch @ 0042bf98 */ + lVar9 = FUN_004245e0(param_1,1,piVar15,uVar7); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + } + else { + if (pcVar11[1] != 'p') goto LAB_0042b074; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + piVar15 = (int *)FUN_00429efc(param_1); + uVar7 = 0x4a; +LAB_0042b6bc: + lVar9 = FUN_004245e0(param_1,uVar7,piVar15,0); +LAB_0042b6c8: + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + } + goto LAB_0042b0d8; + } + if (cVar17 != 'f') { + if (9 < (byte)(cVar17 - 0x30U)) { + if (cVar17 != 'o') goto LAB_0042b054; + if (pcVar11[1] != 'n') goto LAB_0042b074; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + } + /* try { // try from 0042b340 to 0052b343 has its CatchHandler @ 0042afc8 */ + lVar9 = FUN_00428b90(param_1); + /* catch() { ... } // from try @ 0042b0c0 with catch @ 0042b344 */ + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + if ((lVar9 != 0) && (cVar17 == 'I')) { + /* catch() { ... } // from try @ 0042b384 with catch @ 0042b360 + catch() { ... } // from try @ 0042b4fc with catch @ 0042b360 + catch() { ... } // from try @ 0042b7cc with catch @ 0042b360 */ + uVar7 = FUN_004255a4(param_1); + lVar9 = FUN_004245e0(param_1,4,lVar9,uVar7); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + /* try { // try from 0042b384 to 0052b3a7 has its CatchHandler @ 0042b360 */ + } + goto LAB_0042b0d8; + } + if (pcVar11[1] == 'p') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + if (pcVar11[2] == 'T') { + iVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 3; + } + else { + iVar5 = FUN_0042529c(param_1); + iVar5 = iVar5 + 1; + if (iVar5 == 0) goto switchD_0042c544_default; + } + iVar4 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar4) goto switchD_0042c544_default; + *(int *)(param_1 + 0x28) = iVar4 + 1; + lVar9 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar9 == 0) goto LAB_0042b6c8; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(lVar9 + 8) = (long)iVar5; + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b0d8; + } +LAB_0042b074: + piVar15 = (int *)FUN_0042899c(param_1); + if (piVar15 == (int *)0x0) { +switchD_0042c544_default: + pcVar11 = *(char **)(param_1 + 0x18); + lVar9 = 0; + cVar17 = *pcVar11; + goto LAB_0042b0d8; + } + iVar5 = *piVar15; + if (iVar5 == 0x31) { + /* try { // try from 0042cce4 to 0052cce7 has its CatchHandler @ 0042c3c0 */ + pcVar11 = (char *)**(undefined8 **)(piVar15 + 2); + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(*(undefined8 **)(piVar15 + 2) + 2) + -2; + iVar5 = strcmp(pcVar11,"st"); + if (iVar5 != 0) { + /* try { // try from 0042cd1c to 0052cd1f has its CatchHandler @ 0042cf60 */ + /* try { // try from 0042cd28 to 0052cd2b has its CatchHandler @ 0042cfc8 */ + /* try { // try from 0042cd34 to 0052cd37 has its CatchHandler @ 0042c3c0 */ + switch(*(undefined4 *)(*(long *)(piVar15 + 2) + 0x14)) { + case 0: + goto switchD_0042c544_caseD_0; + case 1: + cVar17 = *pcVar11; + /* try { // try from 0042cd4c to 0052cd4f has its CatchHandler @ 0042cf60 */ + /* try { // try from 0042cd5c to 0052cd5f has its CatchHandler @ 0042cf00 */ + if (((cVar17 == 'm') || (cVar17 == 'p')) && (pcVar11[1] == cVar17)) { + /* try { // try from 0042cd6c to 0052cd6f has its CatchHandler @ 0042cf28 */ + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + /* try { // try from 0042cd88 to 0052cd8b has its CatchHandler @ 0042cfd0 */ + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + uVar8 = 0x36; + goto LAB_0042b0c4; + } + /* try { // try from 0042cdc0 to 0052cdf3 has its CatchHandler @ 0042cfd0 */ + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_0042c544_caseD_1; + case 2: + goto switchD_0042cd38_caseD_2; + case 3: + goto switchD_0042cd38_caseD_3; + } + goto switchD_0042c544_default; + } + uVar7 = FUN_004271e4(param_1); + uVar8 = 0x36; + /* try { // try from 0042cdb8 to 0052cdbb has its CatchHandler @ 0042cf4c */ +LAB_0042b0c4: + /* try { // try from 0042b0c8 to 0052b0cb has its CatchHandler @ 0042b318 */ + lVar9 = FUN_004245e0(param_1,uVar8,piVar15,uVar7); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b0d8; + } + if (iVar5 != 0x32) { + if (iVar5 != 0x33) goto switchD_0042c544_default; + if (**(char **)(param_1 + 0x18) != '_') goto switchD_0042c544_caseD_1; + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); +LAB_0042b0bc: + /* try { // try from 0042b0c0 to 0052b0c3 has its CatchHandler @ 0042b344 */ + uVar8 = 0x36; + goto LAB_0042b0c4; + } + switch(piVar15[2]) { + case 0: +switchD_0042c544_caseD_0: + uVar7 = 0x35; + goto LAB_0042b6bc; + case 1: +switchD_0042c544_caseD_1: + uVar7 = FUN_00429efc(param_1); + goto LAB_0042b0bc; + case 2: + pcVar11 = (char *)0x0; +switchD_0042cd38_caseD_2: + if ((((char *)**(undefined8 **)(piVar15 + 2))[1] == 'c') && + ((cVar17 = *(char *)**(undefined8 **)(piVar15 + 2), (byte)(cVar17 + 0x8eU) < 2 || + ((byte)(cVar17 + 0x9dU) < 2)))) { + uVar7 = FUN_004271e4(param_1); + } + else { + uVar7 = FUN_00429efc(param_1); + } + iVar5 = strcmp(pcVar11,"cl"); + if (iVar5 == 0) { + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar5 = strcmp(pcVar11,"dt"); + if ((iVar5 == 0) || (iVar5 = strcmp(pcVar11,"pt"), iVar5 == 0)) { + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + } + } + else { + uVar8 = FUN_00429efc(param_1); + } + } + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar8); + uVar8 = 0x37; + goto LAB_0042b0c4; + case 3: + pcVar11 = (char *)0x0; +switchD_0042cd38_caseD_3: + iVar5 = strcmp(pcVar11,"qu"); + if (iVar5 == 0) { + uVar7 = FUN_00429efc(param_1); + uVar8 = FUN_00429efc(param_1); + uVar16 = FUN_00429efc(param_1); +LAB_0042c7a0: + uVar8 = FUN_004245e0(param_1,0x3b,uVar8,uVar16); + uVar7 = FUN_004245e0(param_1,0x3a,uVar7,uVar8); + uVar8 = 0x39; + goto LAB_0042b0c4; + } + if ((*pcVar11 != 'n') || ((pcVar11[1] != 'a' && (pcVar11[1] != 'w')))) + goto switchD_0042c544_default; + uVar7 = FUN_00426a90(param_1,0x5f); + uVar8 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + if (cVar17 == 'E') { + uVar16 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 1; + goto LAB_0042c7a0; + } + if (cVar17 == 'p') { + if (pcVar11[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar16 = FUN_00426a90(param_1,0x45); + goto LAB_0042c7a0; + } + } + else { + if (cVar17 != 'i') { + lVar9 = 0; + goto LAB_0042b0d8; + } + if (pcVar11[1] == 'l') { + uVar16 = FUN_00429efc(param_1); + goto LAB_0042c7a0; + } + } + lVar9 = 0; + break; + default: + goto switchD_0042c544_default; + } +LAB_0042b110: + if (((cVar17 != 't') && (cVar17 != 'i')) || (pcVar11[1] != 'l')) goto LAB_0042b130; + uVar7 = 0; + if (cVar17 == 't') { + uVar7 = FUN_004271e4(param_1); + /* try { // try from 0042bfe4 to 0052c05f has its CatchHandler @ 0042bf98 */ + pcVar11 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar13 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + } + else { + /* catch() { ... } // from try @ 0042aebc with catch @ 0042af6c */ + if (cVar17 == 'T') { + piVar12 = (int *)FUN_004253cc(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b01c; + } + if (cVar17 == 's') { + if (pcVar11[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + piVar15 = (int *)FUN_004271e4(param_1); + uVar7 = FUN_00428b90(param_1); + /* try { // try from 0042c0a8 to 0052c0ab has its CatchHandler @ 0042c3a0 */ + /* try { // try from 0042c0b0 to 0052c357 has its CatchHandler @ 0042bf98 */ + if (**(char **)(param_1 + 0x18) != 'I') { + piVar12 = (int *)FUN_004245e0(param_1,1,piVar15,uVar7); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b01c; + } + uVar8 = FUN_004255a4(param_1); + uVar7 = FUN_004245e0(param_1,4,uVar7,uVar8); + uVar8 = 1; + goto LAB_0042b008; + } + if (pcVar11[1] != 'p') goto LAB_0042afb8; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + piVar15 = (int *)FUN_00429efc(param_1); + uVar7 = 0x4a; +LAB_0042b7a0: + /* catch() { ... } // from try @ 0042b410 with catch @ 0042b7a0 */ + piVar12 = (int *)FUN_004245e0(param_1,uVar7,piVar15,0); +LAB_0042b7ac: + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b01c; + } + if (cVar17 == 'f') { + if (pcVar11[1] != 'p') goto LAB_0042afb8; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + if (pcVar11[2] == 'T') { + iVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 3; + } + else { + iVar5 = FUN_0042529c(param_1); + iVar5 = iVar5 + 1; + if (iVar5 == 0) goto switchD_0042c218_default; + } + iVar4 = *(int *)(param_1 + 0x28); + if (*(int *)(param_1 + 0x2c) <= iVar4) goto switchD_0042c218_default; + *(int *)(param_1 + 0x28) = iVar4 + 1; + piVar12 = (int *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18); + if (piVar12 == (int *)0x0) goto LAB_0042b7ac; + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(piVar12 + 2) = (long)iVar5; + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b01c; + } + if ((byte)(cVar17 - 0x30U) < 10) { +LAB_0042b39c: + piVar12 = (int *)FUN_00428b90(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + if ((piVar12 != (int *)0x0) && (cVar17 == 'I')) { + uVar7 = FUN_004255a4(param_1); + uVar8 = 4; + piVar15 = piVar12; + goto LAB_0042b008; + } + goto LAB_0042b01c; + } + if (cVar17 == 'o') { + if (pcVar11[1] == 'n') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + goto LAB_0042b39c; + } + } + else { + /* try { // try from 0042af98 to 0052af9b has its CatchHandler @ 0042abb8 */ + /* catch() { ... } // from try @ 0042ac30 with catch @ 0042af9c + catch() { ... } // from try @ 0042acc4 with catch @ 0042af9c + catch() { ... } // from try @ 0042ae78 with catch @ 0042af9c + catch() { ... } // from try @ 0042aec4 with catch @ 0042af9c */ + /* catch() { ... } // from try @ 0042ac50 with catch @ 0042afa4 */ + if (((cVar17 == 't') || (cVar17 == 'i')) && (pcVar11[1] == 'l')) { + uVar7 = 0; + if (cVar17 == 't') { + uVar7 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + piVar12 = (int *)FUN_004245e0(param_1,0x30,uVar7,uVar8); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b01c; + } + } +LAB_0042afb8: + piVar15 = (int *)FUN_0042899c(param_1); + piVar12 = (int *)0x0; + if (piVar15 == (int *)0x0) goto LAB_0042b7ac; + /* catch() { ... } // from try @ 0042affc with catch @ 0042afc8 + catch() { ... } // from try @ 0042b1a4 with catch @ 0042afc8 + catch() { ... } // from try @ 0042b340 with catch @ 0042afc8 */ + iVar5 = *piVar15; + if (iVar5 == 0x31) { + pcVar11 = (char *)**(undefined8 **)(piVar15 + 2); + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(*(undefined8 **)(piVar15 + 2) + 2) + -2; + iVar5 = strcmp(pcVar11,"st"); + if (iVar5 != 0) { + switch(*(undefined4 *)(*(long *)(piVar15 + 2) + 0x14)) { + case 0: + goto switchD_0042c218_caseD_0; + case 1: + goto switchD_0042c59c_caseD_1; + case 2: + goto switchD_0042c59c_caseD_2; + case 3: + goto switchD_0042c59c_caseD_3; + default: + goto switchD_0042c218_default; + } + } + uVar7 = FUN_004271e4(param_1); + uVar8 = 0x36; + goto LAB_0042b008; + } + if (iVar5 != 0x32) { + if (iVar5 == 0x33) { + if (**(char **)(param_1 + 0x18) != '_') goto switchD_0042c218_caseD_1; + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_0042b000; + } +switchD_0042c218_default: + pcVar11 = *(char **)(param_1 + 0x18); + piVar12 = (int *)0x0; + cVar17 = *pcVar11; + goto LAB_0042b01c; + } + switch(piVar15[2]) { + case 0: +switchD_0042c218_caseD_0: + uVar7 = 0x35; + goto LAB_0042b7a0; + case 1: + goto switchD_0042c218_caseD_1; + case 2: + pcVar11 = (char *)0x0; +switchD_0042c59c_caseD_2: + if ((((char *)**(undefined8 **)(piVar15 + 2))[1] == 'c') && + ((cVar17 = *(char *)**(undefined8 **)(piVar15 + 2), (byte)(cVar17 + 0x8eU) < 2 || + ((byte)(cVar17 + 0x9dU) < 2)))) { + uVar7 = FUN_004271e4(param_1); + } + else { + uVar7 = FUN_00429efc(param_1); + } + iVar5 = strcmp(pcVar11,"cl"); + if (iVar5 == 0) { + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar5 = strcmp(pcVar11,"dt"); + if ((iVar5 == 0) || (iVar5 = strcmp(pcVar11,"pt"), iVar5 == 0)) { + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + } + } + else { + uVar8 = FUN_00429efc(param_1); + } + } + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar8); + uVar8 = 0x37; + goto LAB_0042b008; + case 3: + pcVar11 = (char *)0x0; +switchD_0042c59c_caseD_3: + iVar5 = strcmp(pcVar11,"qu"); + if (iVar5 == 0) { + uVar7 = FUN_00429efc(param_1); + uVar8 = FUN_00429efc(param_1); + uVar16 = FUN_00429efc(param_1); +LAB_0042c404: + uVar8 = FUN_004245e0(param_1,0x3b,uVar8,uVar16); + /* try { // try from 0042c41c to 0052c41f has its CatchHandler @ 0042c3c0 */ + uVar7 = FUN_004245e0(param_1,0x3a,uVar7,uVar8); + uVar8 = 0x39; + /* try { // try from 0042c438 to 0052c43b has its CatchHandler @ 0042cfac */ + goto LAB_0042b008; + } + /* catch() { ... } // from try @ 0042c0a8 with catch @ 0042c3a0 */ + /* try { // try from 0042c3b0 to 0052c3b3 has its CatchHandler @ 0042bf98 */ + if ((*pcVar11 != 'n') || ((pcVar11[1] != 'a' && (pcVar11[1] != 'w')))) + goto switchD_0042c218_default; + uVar7 = FUN_00426a90(param_1,0x5f); + /* catch() { ... } // from try @ 0042c41c with catch @ 0042c3c0 + catch() { ... } // from try @ 0042cce4 with catch @ 0042c3c0 + catch() { ... } // from try @ 0042cd34 with catch @ 0042c3c0 + catch() { ... } // from try @ 0042cefc with catch @ 0042c3c0 */ + uVar8 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + if (cVar17 == 'E') { + uVar16 = 0; + /* try { // try from 0042c49c to 0052c94f has its CatchHandler @ 0042cfd0 */ + *(char **)(param_1 + 0x18) = pcVar11 + 1; + goto LAB_0042c404; + } + if (cVar17 == 'p') { + if (pcVar11[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar16 = FUN_00426a90(param_1,0x45); + goto LAB_0042c404; + } + } + else { + if (cVar17 != 'i') { + piVar12 = (int *)0x0; + goto LAB_0042b01c; + } + if (pcVar11[1] == 'l') { + uVar16 = FUN_00429efc(param_1); + goto LAB_0042c404; + } + } + piVar12 = (int *)0x0; +LAB_0042b054: + /* try { // try from 0042b06c to 0052b06f has its CatchHandler @ 0042b318 */ + if (((cVar17 != 't') && (cVar17 != 'i')) || (pcVar11[1] != 'l')) goto LAB_0042b074; + uVar7 = 0; + if (cVar17 == 't') { + uVar7 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + } + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar8 = FUN_00426a90(param_1,0x45); + lVar9 = FUN_004245e0(param_1,0x30,uVar7,uVar8); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; +LAB_0042b0d8: + if (cVar17 == 'L') { + lVar13 = FUN_00429d84(param_1); + } + else if (cVar17 == 'T') { + lVar13 = FUN_004253cc(param_1); + } + else if (cVar17 == 's') { + if (pcVar11[1] == 'r') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar7 = FUN_004271e4(param_1); + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + lVar13 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + else { + lVar13 = FUN_004245e0(param_1,1,uVar7,uVar8); + } + } + else { + if (pcVar11[1] != 'p') goto LAB_0042b130; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar7 = FUN_00429efc(param_1); + lVar13 = FUN_004245e0(param_1,0x4a,uVar7,0); + } + } + else if (cVar17 == 'f') { + if (pcVar11[1] == 'p') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + if (pcVar11[2] == 'T') { + iVar5 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 3; + } + else { + iVar5 = FUN_0042529c(param_1); + iVar5 = iVar5 + 1; + if (iVar5 == 0) goto LAB_0042bc80; + } + iVar4 = *(int *)(param_1 + 0x28); + /* try { // try from 0042b4fc to 0052b787 has its CatchHandler @ 0042b360 */ + lVar13 = 0; + if (iVar4 < *(int *)(param_1 + 0x2c)) { + *(int *)(param_1 + 0x28) = iVar4 + 1; + lVar13 = *(long *)(param_1 + 0x20) + (long)iVar4 * 0x18; + if (lVar13 != 0) { + *(undefined4 *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18) = 6; + *(long *)(lVar13 + 8) = (long)iVar5; + } + } + } + else { +LAB_0042b130: + piVar15 = (int *)FUN_0042899c(param_1); + if (piVar15 == (int *)0x0) { +LAB_0042bc80: + lVar13 = 0; + } + else { + iVar5 = *piVar15; + if (iVar5 == 0x31) { + pcVar11 = (char *)**(undefined8 **)(piVar15 + 2); + /* try { // try from 0042bc38 to 0052bc3b has its CatchHandler @ 0042bf70 */ + *(int *)(param_1 + 0x50) = + *(int *)(param_1 + 0x50) + *(int *)(*(undefined8 **)(piVar15 + 2) + 2) + -2; + iVar5 = strcmp(pcVar11,"st"); + /* try { // try from 0042bc40 to 0052bc63 has its CatchHandler @ 0042bf84 */ + if (iVar5 != 0) { + lVar13 = 0; + switch(*(undefined4 *)(*(long *)(piVar15 + 2) + 0x14)) { + case 0: + goto switchD_0042bc10_caseD_0; + case 1: + goto switchD_0042bc6c_caseD_1; + case 2: + goto switchD_0042bc6c_caseD_2; + case 3: + goto switchD_0042bc6c_caseD_3; + default: + goto switchD_0042bc10_default; + } + } + uVar7 = FUN_004271e4(param_1); + } + else { + if (iVar5 == 0x32) { + lVar13 = 0; + switch(piVar15[2]) { + case 0: +switchD_0042bc10_caseD_0: + /* try { // try from 0042be0c to 0052be0f has its CatchHandler @ 0042bf8c */ + lVar13 = FUN_004245e0(param_1,0x35,piVar15,0); + break; + case 1: + goto switchD_0042bc10_caseD_1; + case 2: + pcVar11 = (char *)0x0; +switchD_0042bc6c_caseD_2: + /* try { // try from 0042bc8c to 0052bc8f has its CatchHandler @ 0042bf68 */ + if ((((char *)**(undefined8 **)(piVar15 + 2))[1] == 'c') && + ((cVar17 = *(char *)**(undefined8 **)(piVar15 + 2), + (byte)(cVar17 + 0x8eU) < 2 || ((byte)(cVar17 + 0x9dU) < 2)))) { + uVar7 = FUN_004271e4(param_1); + /* try { // try from 0042bd98 to 0052bd9b has its CatchHandler @ 0042bf84 */ + } + else { + uVar7 = FUN_00429efc(param_1); + } + /* try { // try from 0042bcb0 to 0052bcb3 has its CatchHandler @ 0042bee4 */ + iVar5 = strcmp(pcVar11,"cl"); + if (iVar5 == 0) { + uVar8 = FUN_00426a90(param_1,0x45); + } + else { + iVar5 = strcmp(pcVar11,"dt"); + if ((iVar5 == 0) || (iVar5 = strcmp(pcVar11,"pt"), iVar5 == 0)) { + uVar8 = FUN_00428b90(param_1); + if (**(char **)(param_1 + 0x18) == 'I') { + uVar16 = FUN_004255a4(param_1); + uVar8 = FUN_004245e0(param_1,4,uVar8,uVar16); + } + } + else { + uVar8 = FUN_00429efc(param_1); + } + } + /* try { // try from 0042bd24 to 0052bd27 has its CatchHandler @ 0042bf68 */ + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar8); + lVar13 = FUN_004245e0(param_1,0x37,piVar15,uVar7); + break; + case 3: + pcVar11 = (char *)0x0; +switchD_0042bc6c_caseD_3: + iVar5 = strcmp(pcVar11,"qu"); + if (iVar5 == 0) { + uVar7 = FUN_00429efc(param_1); + uVar8 = FUN_00429efc(param_1); + uVar16 = FUN_00429efc(param_1); + } + else { + if ((*pcVar11 != 'n') || ((pcVar11[1] != 'a' && (pcVar11[1] != 'w')))) + goto LAB_0042bc80; + uVar7 = FUN_00426a90(param_1,0x5f); + uVar8 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + /* try { // try from 0042be80 to 0052bebb has its CatchHandler @ 0042bb54 */ + if (cVar17 != 'E') { + if (cVar17 == 'p') { + lVar13 = 0; + if (pcVar11[1] == 'i') { + *(char **)(param_1 + 0x18) = pcVar11 + 2; + uVar16 = FUN_00426a90(param_1,0x45); + goto LAB_0042beac; + } + } + else { + if (cVar17 != 'i') goto LAB_0042bc80; + lVar13 = 0; + if (pcVar11[1] == 'l') { + uVar16 = FUN_00429efc(param_1); + goto LAB_0042beac; + } + } + break; + } + uVar16 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 1; + } +LAB_0042beac: + uVar8 = FUN_004245e0(param_1,0x3b,uVar8,uVar16); + /* try { // try from 0042bec4 to 0052bec7 has its CatchHandler @ 0042bf8c */ + /* try { // try from 0042bed0 to 0052bed3 has its CatchHandler @ 0042bf84 */ + uVar7 = FUN_004245e0(param_1,0x3a,uVar7,uVar8); + /* try { // try from 0042bedc to 0052bedf has its CatchHandler @ 0042bf68 */ + /* catch() { ... } // from try @ 0042bcb0 with catch @ 0042bee4 */ + lVar13 = FUN_004245e0(param_1,0x39,piVar15,uVar7); + } + break; + } + if (iVar5 != 0x33) goto LAB_0042bc80; + if (**(char **)(param_1 + 0x18) == '_') { + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + uVar7 = FUN_00426a90(param_1,0x45); + goto LAB_0042b178; + } +switchD_0042bc10_caseD_1: + uVar7 = FUN_00429efc(param_1); + } +LAB_0042b178: + lVar13 = FUN_004245e0(param_1,0x36,piVar15,uVar7); + } + } + } + else { + if (9 < (byte)(cVar17 - 0x30U)) { + if (cVar17 != 'o') goto LAB_0042b110; + if (pcVar11[1] != 'n') goto LAB_0042b130; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + } + lVar13 = FUN_00428b90(param_1); + if ((lVar13 != 0) && (**(char **)(param_1 + 0x18) == 'I')) { + uVar7 = FUN_004255a4(param_1); + /* catch() { ... } // from try @ 0042b06c with catch @ 0042b318 + catch() { ... } // from try @ 0042b0c8 with catch @ 0042b318 */ + lVar13 = FUN_004245e0(param_1,4,lVar13,uVar7); + } + } + break; + default: + goto switchD_0042c218_default; + } + } + } + else { + /* try { // try from 0042ab18 to 0052ab1b has its CatchHandler @ 0042ab54 */ + if ((*pcVar11 != 'n') || ((pcVar11[1] != 'a' && (pcVar11[1] != 'w')))) + goto switchD_0042aaac_default; + piVar12 = (int *)FUN_00426a90(param_1,0x5f); + lVar9 = FUN_004271e4(param_1); + pcVar11 = *(char **)(param_1 + 0x18); + /* try { // try from 0042ab4c to 0052ab4f has its CatchHandler @ 0042a71c */ + cVar17 = *pcVar11; + /* catch() { ... } // from try @ 0042a814 with catch @ 0042ab54 + catch() { ... } // from try @ 0042a8a4 with catch @ 0042ab54 + catch() { ... } // from try @ 0042ab18 with catch @ 0042ab54 */ + if (cVar17 == 'E') { + lVar13 = 0; + *(char **)(param_1 + 0x18) = pcVar11 + 1; + /* try { // try from 0042b3e0 to 0052b3e3 has its CatchHandler @ 0042b7d0 */ + } + else if (cVar17 == 'p') { + if (pcVar11[1] != 'i') goto switchD_0042aaac_default; + *(char **)(param_1 + 0x18) = pcVar11 + 2; + lVar13 = FUN_00426a90(param_1,0x45); + } + else { + if ((cVar17 != 'i') || (pcVar11[1] != 'l')) { +switchD_0042aaac_default: + *(undefined4 *)(param_1 + 0x54) = uVar1; + return 0; + } + /* try { // try from 0042ab78 to 0052ab7b has its CatchHandler @ 0042a71c */ + lVar13 = FUN_00429efc(param_1); + /* catch() { ... } // from try @ 0042a7a8 with catch @ 0042ab7c */ + } + } +switchD_0042bc10_default: + /* try { // try from 0042ab8c to 0052ab8f has its CatchHandler @ 0042a71c */ + /* catch() { ... } // from try @ 0042a830 with catch @ 0042ab90 */ + uVar7 = FUN_004245e0(param_1,0x3b,lVar9,lVar13); + uVar7 = FUN_004245e0(param_1,0x3a,piVar12,uVar7); + /* catch() { ... } // from try @ 0042abcc with catch @ 0042abb8 + catch() { ... } // from try @ 0042ad44 with catch @ 0042abb8 + catch() { ... } // from try @ 0042af54 with catch @ 0042abb8 + catch() { ... } // from try @ 0042af98 with catch @ 0042abb8 */ + lVar9 = FUN_004245e0(param_1,0x39,piVar10,uVar7); + goto LAB_0042a86c; +switchD_0042c59c_caseD_1: + cVar17 = *pcVar11; + if (((cVar17 == 'm') || (cVar17 == 'p')) && (pcVar11[1] == cVar17)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + uVar8 = 0x36; + goto LAB_0042b008; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } +switchD_0042c218_caseD_1: + uVar7 = FUN_00429efc(param_1); + /* try { // try from 0042affc to 0052b01f has its CatchHandler @ 0042afc8 */ +LAB_0042b000: + uVar8 = 0x36; +LAB_0042b008: + piVar12 = (int *)FUN_004245e0(param_1,uVar8,piVar15,uVar7); + pcVar11 = *(char **)(param_1 + 0x18); + cVar17 = *pcVar11; + goto LAB_0042b01c; +switchD_0042bc6c_caseD_1: + cVar17 = *pcVar11; + if (((cVar17 == 'm') || (cVar17 == 'p')) && (pcVar11[1] == cVar17)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + goto LAB_0042b178; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_0042bc10_caseD_1; +switchD_0042b834_caseD_1: + cVar17 = *pcVar11; + /* try { // try from 0042bb50 to 0052bb53 has its CatchHandler @ 0042ba4c */ + /* catch() { ... } // from try @ 0042bb88 with catch @ 0042bb54 + catch() { ... } // from try @ 0042be80 with catch @ 0042bb54 + catch() { ... } // from try @ 0042bf64 with catch @ 0042bb54 */ + if (((cVar17 == 'm') || (cVar17 == 'p')) && (pcVar11[1] == cVar17)) { + if (**(char **)(param_1 + 0x18) != '_') { + uVar7 = FUN_00429efc(param_1); + /* try { // try from 0042bb88 to 0052bb8b has its CatchHandler @ 0042bb54 */ + uVar7 = FUN_004245e0(param_1,0x38,uVar7,uVar7); + goto LAB_0042a994; + } + *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1; + } + goto switchD_0042b7dc_caseD_1; +} + + +================================================================== + +### FUNC 0042cdc8 (14860 bytes) name=FUN_0042cdc8 + +void FUN_0042cdc8(undefined1 *param_1,uint param_2,int *param_3) + +{ + char *pcVar1; + byte *pbVar2; + int *piVar3; + undefined1 uVar4; + char cVar5; + bool bVar6; + int iVar7; + long lVar8; + long *plVar9; + int *piVar10; + long lVar11; + char *pcVar12; + size_t sVar13; + undefined8 *puVar14; + int iVar15; + uint uVar16; + long lVar17; + long lVar18; + long lVar19; + int *piVar20; + undefined8 *puVar21; + long *plVar22; + long **pplVar23; + long **pplVar24; + ulong uVar25; + byte bVar26; + int iVar27; + size_t sVar28; + undefined1 *puVar29; + byte *pbVar30; + byte *pbVar31; + uint uVar32; + undefined8 unaff_x22; + ulong uVar33; + ulong uVar34; + undefined8 uVar35; + undefined8 uVar36; + long local_90; + int *local_88; + long *local_80; + int *local_78; + long local_70 [2]; + long **local_60; + int *local_58; + long local_50 [2]; + long ***local_40; + int *local_38; + undefined4 local_30; + undefined4 uStack_2c; + long local_28; + long *local_20; + int *local_18; + ulong local_10; + long local_8; + + if (param_3 == (int *)0x0) goto LAB_0042ce44; + if (*(int *)(param_1 + 0x130) != 0) { + return; + } + iVar7 = *param_3; + /* try { // try from 0042cdfc to 0052cdff has its CatchHandler @ 0042cf28 */ + switch(iVar7) { + case 0: + if ((param_2 >> 2 & 1) == 0) { + iVar7 = param_3[4]; + lVar11 = *(long *)(param_3 + 2); + if ((long)iVar7 != 0) { + lVar19 = 0; + lVar18 = *(long *)(param_1 + 0x100); + do { + uVar4 = *(undefined1 *)(lVar11 + lVar19); + if (lVar18 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar8 = 1; + lVar18 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar8 = lVar18 + 1; + } + *(long *)(param_1 + 0x100) = lVar8; + lVar19 = lVar19 + 1; + param_1[lVar18] = uVar4; + /* catch() { ... } // from try @ 0042cafc with catch @ 0042ce94 */ + param_1[0x108] = uVar4; + lVar18 = lVar8; + } while (iVar7 != lVar19); + } + } + else { + pbVar30 = *(byte **)(param_3 + 2); + pbVar2 = pbVar30 + param_3[4]; + while (pbVar30 < pbVar2) { + /* try { // try from 0042f4d4 to 0052f4d7 has its CatchHandler @ 0042f334 */ + bVar26 = *pbVar30; + if (((3 < (long)pbVar2 - (long)pbVar30) && (bVar26 == 0x5f)) && + ((pbVar30[1] == 0x5f && + ((bVar26 = 0x5f, pbVar30[2] == 0x55 && (pbVar31 = pbVar30 + 3, pbVar31 < pbVar2)))))) { + uVar34 = 0; + do { + bVar26 = *pbVar31; + uVar16 = (uint)bVar26; + uVar32 = uVar16 - 0x30; + if (9 < (uVar32 & 0xff)) { + if ((uVar16 - 0x41 & 0xff) < 6) { + /* try { // try from 0042f518 to 0052f51b has its CatchHandler @ 0042f5c8 */ + uVar32 = uVar16 - 0x37; + } + else { + if (5 < (uVar16 - 0x61 & 0xff)) { + if (((pbVar31 < pbVar2) && (bVar26 == 0x5f)) && (uVar34 < 0x100)) { + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *(undefined8 *)(param_1 + 0x100) = 0; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + param_1[lVar11] = (char)uVar34; + param_1[0x108] = (char)uVar34; + goto LAB_0042f4c4; + } + break; + } + uVar32 = bVar26 - 0x57; + } + } + pbVar31 = pbVar31 + 1; + /* try { // try from 0042f520 to 0052f5b3 has its CatchHandler @ 0042f334 */ + uVar34 = (long)(int)uVar32 + uVar34 * 0x10; + } while (pbVar31 != pbVar2); + bVar26 = 0x5f; + } + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = bVar26; + param_1[0x108] = bVar26; + pbVar31 = pbVar30; +LAB_0042f4c4: + pbVar30 = pbVar31 + 1; + } + } + break; + case 1: + case 2: + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + if ((param_2 >> 2 & 1) == 0) { + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + *param_1 = 0x3a; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_0042cf18: + lVar11 = lVar19 + 1; + } + else { + lVar19 = lVar11 + 1; + /* try { // try from 0042cefc to 0052ceff has its CatchHandler @ 0042c3c0 */ + *(long *)(param_1 + 0x100) = lVar19; + /* catch() { ... } // from try @ 0042cd5c with catch @ 0042cf00 + catch() { ... } // from try @ 0042ce14 with catch @ 0042cf00 */ + param_1[lVar11] = 0x3a; + param_1[0x108] = 0x3a; + if (lVar19 != 0xff) goto LAB_0042cf18; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + /* try { // try from 0042e774 to 0052e777 has its CatchHandler @ 0042e660 */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x3a; + param_1[0x108] = 0x3a; + } + else { + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x2e; + param_1[0x108] = 0x2e; + } + /* catch() { ... } // from try @ 0042cd6c with catch @ 0042cf28 + catch() { ... } // from try @ 0042cdfc with catch @ 0042cf28 */ + piVar10 = *(int **)(param_3 + 4); + if (*piVar10 == 0x46) { + FUN_00424f20(param_1,&DAT_0047bc90); + FUN_00425128(param_1,(long)(piVar10[4] + 1)); + FUN_00424f20(param_1,&DAT_0047bca0); + piVar10 = *(int **)(piVar10 + 2); + } + FUN_0042cdc8(param_1,param_2,piVar10); + break; + case 3: + uVar36 = *(undefined8 *)(param_1 + 0x128); + /* catch() { ... } // from try @ 0042cdb8 with catch @ 0042cf4c */ + *(undefined8 *)(param_1 + 0x128) = 0; + piVar10 = *(int **)(param_3 + 2); + if (piVar10 != (int *)0x0) { + iVar7 = *piVar10; + /* catch() { ... } // from try @ 0042cd1c with catch @ 0042cf60 + catch() { ... } // from try @ 0042cd4c with catch @ 0042cf60 */ + lVar11 = *(long *)(param_1 + 0x120); + local_80 = (long *)0x0; + *(long ***)(param_1 + 0x128) = &local_80; + local_78 = piVar10; + local_70[0]._0_4_ = 0; + local_70[1] = lVar11; + if (iVar7 - 0x1cU < 5) { + /* catch() { ... } // from try @ 0042ca0c with catch @ 0042cf84 */ + piVar10 = *(int **)(piVar10 + 2); + if (piVar10 != (int *)0x0) { + iVar7 = *piVar10; + local_60 = &local_80; + /* catch() { ... } // from try @ 0042ca98 with catch @ 0042cf98 */ + *(long ****)(param_1 + 0x128) = &local_60; + local_58 = piVar10; + local_50[0]._0_4_ = 0; + /* catch() { ... } // from try @ 0042c438 with catch @ 0042cfac + catch() { ... } // from try @ 0042cc70 with catch @ 0042cfac + catch() { ... } // from try @ 0042cd40 with catch @ 0042cfac */ + local_50[1] = lVar11; + if (4 < iVar7 - 0x1cU) { + uVar34 = 2; + goto LAB_00430434; + } + /* catch() { ... } // from try @ 0042c998 with catch @ 0042cfb4 */ + piVar10 = *(int **)(piVar10 + 2); + if (piVar10 != (int *)0x0) { + iVar7 = *piVar10; + /* catch() { ... } // from try @ 0042cbfc with catch @ 0042cfc8 + catch() { ... } // from try @ 0042cd28 with catch @ 0042cfc8 */ + local_40 = &local_60; + /* catch() { ... } // from try @ 0042c49c with catch @ 0042cfd0 + catch() { ... } // from try @ 0042c9a0 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042ca14 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042caa0 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042cb04 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042cd88 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042cdc0 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042ce08 with catch @ 0042cfd0 + catch() { ... } // from try @ 0042ce20 with catch @ 0042cfd0 */ + local_38 = piVar10; + *(long **)(param_1 + 0x128) = local_50 + 2; + local_30 = 0; + local_28 = lVar11; + if (4 < iVar7 - 0x1cU) { + uVar34 = 3; + goto LAB_00430434; + } + piVar10 = *(int **)(piVar10 + 2); + if (piVar10 != (int *)0x0) { + /* catch() { ... } // from try @ 0042d020 with catch @ 0042cff0 + catch() { ... } // from try @ 0042d048 with catch @ 0042cff0 + catch() { ... } // from try @ 0042d0d8 with catch @ 0042cff0 */ + iVar7 = *piVar10; + local_20 = local_50 + 2; + local_18 = piVar10; + *(long ***)(param_1 + 0x128) = &local_20; + local_10 = local_10 & 0xffffffff00000000; + local_8 = lVar11; + if (4 < iVar7 - 0x1cU) { + uVar34 = 4; + goto LAB_00430434; + } + } + } + } + } + else { + uVar34 = 1; +LAB_00430434: + uVar33 = uVar34; + if (iVar7 == 4) { + /* try { // try from 0043065c to 0053065f has its CatchHandler @ 00430608 */ + *(long **)(param_1 + 0x120) = &local_90; + local_90 = lVar11; + local_88 = piVar10; +LAB_00430554: + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + if (*piVar10 == 4) { + *(long *)(param_1 + 0x120) = local_90; + } + iVar7 = (int)uVar33; + uVar32 = iVar7 - 1; + if ((int)local_70[(ulong)uVar32 * 4] == 0) { + /* catch() { ... } // from try @ 00430518 with catch @ 004305f4 */ + FUN_00424c1c(param_1,0x20); + /* try { // try from 00430604 to 00530607 has its CatchHandler @ 00430484 */ + /* catch() { ... } // from try @ 0043065c with catch @ 00430608 + catch() { ... } // from try @ 004306a8 with catch @ 00430608 + catch() { ... } // from try @ 004307ac with catch @ 00430608 */ + FUN_004307d4(param_1,param_2,(&local_78)[(ulong)uVar32 * 4]); + } + if (uVar32 != 0) { + uVar32 = iVar7 - 2; + if ((int)local_70[(ulong)uVar32 * 4] == 0) { + FUN_00424c1c(param_1,0x20); + FUN_004307d4(param_1,param_2,(&local_78)[(ulong)uVar32 * 4]); + } + if (uVar32 != 0) { + uVar32 = iVar7 - 3; + if ((int)local_70[(ulong)uVar32 * 4] == 0) { + FUN_00424c1c(param_1,0x20); + FUN_004307d4(param_1,param_2,(&local_78)[(ulong)uVar32 * 4]); + } + if ((uVar32 != 0) && ((int)local_70[0] == 0)) { + FUN_00424c1c(param_1,0x20); + FUN_004307d4(param_1,param_2,local_78); + *(undefined8 *)(param_1 + 0x128) = uVar36; + return; + } + } + } + *(undefined8 *)(param_1 + 0x128) = uVar36; + return; + } + if (iVar7 != 2) goto LAB_00430554; + piVar20 = *(int **)(piVar10 + 4); + if (*piVar20 == 0x46) { + piVar20 = *(int **)(piVar20 + 2); + } + if (4 < *piVar20 - 0x1cU) goto LAB_00430554; + iVar7 = (int)uVar34; + if (iVar7 != 4) { + uVar33 = (ulong)(iVar7 - 1); + /* catch() { ... } // from try @ 004303a8 with catch @ 00430470 */ + pplVar23 = &local_80 + uVar34 * 4; + *(long ***)(param_1 + 0x128) = pplVar23; + pplVar24 = &local_80 + uVar33 * 4; + /* try { // try from 00430480 to 00530483 has its CatchHandler @ 0043031c */ + uVar25 = (ulong)(iVar7 + 1U); + /* catch() { ... } // from try @ 004304d4 with catch @ 00430484 + catch() { ... } // from try @ 00430520 with catch @ 00430484 + catch() { ... } // from try @ 00430604 with catch @ 00430484 */ + piVar3 = (&local_78)[uVar33 * 4]; + *pplVar23 = *pplVar24; + (&local_78)[uVar34 * 4] = piVar3; + lVar19 = local_70[uVar33 * 4 + 1]; + local_70[uVar34 * 4] = local_70[uVar33 * 4]; + local_70[uVar34 * 4 + 1] = lVar19; + (&local_80)[uVar34 * 4] = (long *)pplVar24; + (&local_78)[uVar33 * 4] = piVar20; + *(undefined4 *)(local_70 + uVar33 * 4) = 0; + local_70[uVar33 * 4 + 1] = lVar11; + piVar20 = *(int **)(piVar20 + 2); + uVar33 = uVar25; + if (4 < *piVar20 - 0x1cU) goto LAB_00430554; + if (iVar7 + 1U != 4) { + uVar33 = (ulong)(iVar7 + 2U); + pplVar24 = &local_80 + uVar25 * 4; + *(long ***)(param_1 + 0x128) = pplVar24; + piVar3 = (&local_78)[uVar34 * 4]; + /* try { // try from 004304d4 to 005304d7 has its CatchHandler @ 00430484 */ + *pplVar24 = *pplVar23; + (&local_78)[uVar25 * 4] = piVar3; + lVar19 = local_70[uVar34 * 4 + 1]; + local_70[uVar25 * 4] = local_70[uVar34 * 4]; + local_70[uVar25 * 4 + 1] = lVar19; + (&local_80)[uVar25 * 4] = (long *)pplVar23; + (&local_78)[uVar34 * 4] = piVar20; + *(undefined4 *)(local_70 + uVar34 * 4) = 0; + local_70[uVar34 * 4 + 1] = lVar11; + piVar20 = *(int **)(piVar20 + 2); + if (4 < *piVar20 - 0x1cU) goto LAB_00430554; + if (iVar7 + 2U != 4) { + local_10 = CONCAT44(uStack_2c,local_30); + local_18 = local_38; + /* try { // try from 00430518 to 0053051b has its CatchHandler @ 004305f4 */ + local_20 = local_50 + 2; + /* try { // try from 00430520 to 005305ab has its CatchHandler @ 00430484 */ + local_8 = local_28; + *(long ***)(param_1 + 0x128) = &local_20; + local_30 = 0; + if (4 < **(int **)(piVar20 + 2) - 0x1cU) { + uVar33 = 4; + local_38 = piVar20; + local_28 = lVar11; + goto LAB_00430554; + } + } + } + } + } + } + *(undefined4 *)(param_1 + 0x130) = 1; + break; + case 4: + uVar36 = *(undefined8 *)(param_1 + 0x160); + uVar35 = *(undefined8 *)(param_1 + 0x128); + *(int **)(param_1 + 0x160) = param_3; + *(undefined8 *)(param_1 + 0x128) = 0; + piVar10 = *(int **)(param_3 + 2); + if (((((param_2 >> 2 & 1) == 0) || (*piVar10 != 0)) || (piVar10[4] != 6)) || + (iVar7 = strncmp(*(char **)(piVar10 + 2),"JArray",6), iVar7 != 0)) { + FUN_0042cdc8(param_1,param_2,piVar10); + if (param_1[0x108] == '<') { + FUN_00424c1c(param_1,0x20); + } + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x3c; + param_1[0x108] = 0x3c; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + if (param_1[0x108] == '>') { + FUN_00424c1c(param_1,0x20); + } + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x3e; + param_1[0x108] = 0x3e; + } + else { + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + FUN_00424f20(param_1,&DAT_00470b38); + } + *(undefined8 *)(param_1 + 0x128) = uVar35; + *(undefined8 *)(param_1 + 0x160) = uVar36; + break; + case 5: + piVar10 = (int *)FUN_00424d1c(param_1,param_3 + 2); + if (piVar10 != (int *)0x0) { + if (*piVar10 != 0x2f) { +LAB_0042dfe0: + puVar21 = *(undefined8 **)(param_1 + 0x120); + *(undefined8 *)(param_1 + 0x120) = *puVar21; + FUN_0042cdc8(param_1,param_2); + *(undefined8 **)(param_1 + 0x120) = puVar21; + return; + } + iVar7 = *(int *)(param_1 + 0x134); + while (0 < iVar7) { + piVar10 = *(int **)(piVar10 + 4); + iVar7 = iVar7 + -1; + /* try { // try from 0042f46c to 0052f46f has its CatchHandler @ 0042f5a0 */ + if ((piVar10 == (int *)0x0) || (*piVar10 != 0x2f)) goto LAB_0042ce44; + } + if ((iVar7 == 0) && (*(long *)(piVar10 + 2) != 0)) goto LAB_0042dfe0; + } + goto LAB_0042ce44; + case 6: + lVar19 = *(long *)(param_3 + 2); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar19 != 0) { + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x7b; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x70; +LAB_0042eebc: + lVar18 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar18; + param_1[lVar11] = 0x61; + param_1[0x108] = 0x61; + if (lVar18 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x72; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x6d; + } + else { +LAB_0042eed8: + lVar8 = lVar18 + 1; + *(long *)(param_1 + 0x100) = lVar8; + param_1[lVar18] = 0x72; + param_1[0x108] = 0x72; + if (lVar8 != 0xff) goto LAB_0042eef4; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x6d; + lVar11 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + } + else { + lVar18 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar18; + param_1[lVar11] = 0x7b; + param_1[0x108] = 0x7b; + if (lVar18 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x70; + lVar18 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x61; + goto LAB_0042eed8; + } + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar18] = 0x70; + param_1[0x108] = 0x70; + if (lVar11 != 0xff) goto LAB_0042eebc; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x61; + lVar8 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x72; +LAB_0042eef4: + lVar11 = lVar8 + 1; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar8] = 0x6d; + param_1[0x108] = 0x6d; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_0042ef14; + } + } + lVar18 = lVar11 + 1; +LAB_0042ef14: + *(long *)(param_1 + 0x100) = lVar18; + param_1[lVar11] = 0x23; + param_1[0x108] = 0x23; + sVar28 = 0; + sprintf((char *)&local_80,"%ld",lVar19); + sVar13 = strlen((char *)&local_80); + lVar11 = *(long *)(param_1 + 0x100); + lVar19 = lVar11; + if (sVar13 != 0) { + do { + cVar5 = *(char *)((long)&local_80 + sVar28); + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar11 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + sVar28 = sVar28 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar11; + } while (sVar28 != sVar13); + } + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x7d; + param_1[0x108] = 0x7d; + return; + } + /* try { // try from 0042d804 to 0052d807 has its CatchHandler @ 0042dbc4 */ + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x74; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x68; +LAB_0042d844: + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x69; + param_1[0x108] = 0x69; + /* try { // try from 0042d85c to 0052d86b has its CatchHandler @ 0042db98 */ + if (lVar19 != 0xff) goto LAB_0042d860; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + /* try { // try from 0042d80c to 0052d80f has its CatchHandler @ 0042d100 */ + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x74; + param_1[0x108] = 0x74; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x68; + lVar19 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x69; + } + else { + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x68; + param_1[0x108] = 0x68; + if (lVar11 != 0xff) goto LAB_0042d844; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x69; + lVar19 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } +LAB_0042d860: + lVar11 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x73; + param_1[0x108] = 0x73; + break; + case 7: + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + break; + case 8: + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x7e; + param_1[0x108] = 0x7e; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + break; + case 9: + /* try { // try from 0042df58 to 0052df5b has its CatchHandler @ 0042de70 */ + pcVar12 = "vtable for "; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + /* try { // try from 0042df9c to 0052dfc7 has its CatchHandler @ 0042e230 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + /* try { // try from 0042df74 to 0052df77 has its CatchHandler @ 0042e208 */ + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 10: + puVar29 = &DAT_0047bcc0; + lVar11 = *(long *)(param_1 + 0x100); + do { + uVar4 = *puVar29; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + puVar29 = puVar29 + 1; + param_1[lVar11] = uVar4; + param_1[0x108] = uVar4; + lVar11 = lVar19; + } while (puVar29 != &LAB_0047bcc8); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0xb: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "construction vtable for "[lVar11]; + if (lVar19 == 0xff) { + /* try { // try from 0042e134 to 0052e137 has its CatchHandler @ 0042e254 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + /* try { // try from 0042e13c to 0052e13f has its CatchHandler @ 0042de70 */ + lVar18 = 1; + lVar19 = 0; + /* try { // try from 0042e14c to 0052e14f has its CatchHandler @ 0042e208 */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x18); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 2; + *param_1 = 0x2d; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x69; +LAB_0042ec90: + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x6e; + param_1[0x108] = 0x6e; + if (lVar19 != 0xff) goto LAB_0042ecac; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x2d; + param_1[0x108] = 0x2d; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x69; + lVar19 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x6e; + } + else { + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x69; + param_1[0x108] = 0x69; + if (lVar11 != 0xff) goto LAB_0042ec90; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x6e; + lVar19 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } +LAB_0042ecac: + lVar11 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x2d; + param_1[0x108] = 0x2d; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + break; + case 0xc: + pcVar12 = "typeinfo for "; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + /* try { // try from 0042e9dc to 0052e9df has its CatchHandler @ 0042e660 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + /* catch() { ... } // from try @ 0042e790 with catch @ 0042e9e0 + catch() { ... } // from try @ 0042e860 with catch @ 0042e9e0 + catch() { ... } // from try @ 0042e960 with catch @ 0042e9e0 */ + break; + case 0xd: + /* try { // try from 0042d2ac to 0052d2af has its CatchHandler @ 0042dc00 */ + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + /* try { // try from 0042d2b4 to 0052d30b has its CatchHandler @ 0042d100 */ + do { + uVar4 = (&LAB_0047bd00)[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = uVar4; + param_1[0x108] = uVar4; + lVar19 = lVar18; + } while (lVar11 != 0x12); + /* try { // try from 0042e9c8 to 0052e9cb has its CatchHandler @ 0042e660 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + /* catch() { ... } // from try @ 0042e948 with catch @ 0042e9cc */ + break; + case 0xe: + pcVar12 = "typeinfo fn for "; + lVar11 = *(long *)(param_1 + 0x100); + do { + /* try { // try from 0042d34c to 0052d34f has its CatchHandler @ 0042dbd8 */ + cVar5 = *pcVar12; + /* try { // try from 0042d354 to 0052d7cf has its CatchHandler @ 0042d100 */ + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0xf: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "non-virtual thunk to "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x15); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x10: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "virtual thunk to "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x11); + /* catch() { ... } // from try @ 0042e7b8 with catch @ 0042e988 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x11: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "covariant return thunk to "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x1a); + /* try { // try from 0042e96c to 0052e96f has its CatchHandler @ 0042e660 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x12: + pcVar12 = "java Class for "; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + /* try { // try from 0042e960 to 0052e963 has its CatchHandler @ 0042e9e0 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x13: + FUN_00424f20(param_1,"guard variable for "); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x14: + FUN_00424f20(param_1,"TLS init function for "); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x15: + FUN_00424f20(param_1,"TLS wrapper function for "); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x16: + FUN_00424f20(param_1,"reference temporary #"); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + FUN_00424f20(param_1," for "); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x17: + FUN_00424f20(param_1,"hidden alias for "); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x18: + iVar7 = param_3[4]; + lVar11 = *(long *)(param_3 + 2); + if ((long)iVar7 != 0) { + lVar19 = 0; + lVar18 = *(long *)(param_1 + 0x100); + do { + uVar4 = *(undefined1 *)(lVar11 + lVar19); + if (lVar18 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar8 = 1; + lVar18 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar8 = lVar18 + 1; + } + *(long *)(param_1 + 0x100) = lVar8; + lVar19 = lVar19 + 1; + param_1[lVar18] = uVar4; + param_1[0x108] = uVar4; + lVar18 = lVar8; + } while (iVar7 != lVar19); + } + break; + case 0x19: + case 0x1a: + case 0x1b: + local_80 = *(long **)(param_1 + 0x128); + plVar22 = local_80; + if (local_80 == (long *)0x0) { + local_80 = (long *)0x0; + bVar6 = false; + } + else { + do { + if ((int)plVar22[2] == 0) { + if (2 < *(int *)plVar22[1] - 0x19U) break; + if (iVar7 == *(int *)plVar22[1]) { + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + return; + } + } + plVar22 = (long *)*plVar22; + } while (plVar22 != (long *)0x0); + bVar6 = false; + } + goto LAB_0042d6c4; + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: + case 0x21: + case 0x22: + case 0x25: + case 0x26: + local_80 = *(long **)(param_1 + 0x128); + bVar6 = false; +LAB_0042d6c4: + local_70[1] = *(long *)(param_1 + 0x120); + *(long ***)(param_1 + 0x128) = &local_80; +LAB_0042d6e0: + lVar11 = *(long *)(param_3 + 2); + local_78 = param_3; +LAB_0042d6e4: + piVar10 = local_78; + local_70[0]._0_4_ = 0; + FUN_0042cdc8(param_1,param_2,lVar11); + if ((int)local_70[0] == 0) { + FUN_004307d4(param_1,param_2,piVar10); + } + *(long **)(param_1 + 0x128) = local_80; + if (bVar6) { + *(undefined8 *)(param_1 + 0x120) = unaff_x22; + } + break; + case 0x23: + case 0x24: + piVar10 = *(int **)(param_3 + 2); + bVar6 = false; + iVar7 = *piVar10; + if (iVar7 == 5) { + uVar32 = *(uint *)(param_1 + 0x148); + puVar21 = *(undefined8 **)(param_1 + 0x140); + if ((int)uVar32 < 1) { +LAB_0042f18c: + if (*(int *)(param_1 + 0x14c) <= (int)uVar32) { +LAB_004306b8: + *(undefined4 *)(param_1 + 0x130) = 1; + return; + } + uVar34 = -(ulong)(uVar32 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar32 << 4; + plVar22 = *(long **)(param_1 + 0x120); + *(uint *)(param_1 + 0x148) = uVar32 + 1; + *(int **)((long)puVar21 + uVar34) = piVar10; + puVar21 = (undefined8 *)((long)puVar21 + uVar34 + 8); + if (plVar22 != (long *)0x0) { + uVar32 = *(uint *)(param_1 + 0x158); + iVar7 = *(int *)(param_1 + 0x15c); + if ((int)uVar32 < iVar7) { + uVar34 = -(ulong)(uVar32 >> 0x1f) & 0xfffffff000000000 | (ulong)uVar32 << 4; + puVar14 = puVar21; + iVar27 = uVar32 + 1; + do { + iVar15 = iVar27; + puVar21 = (undefined8 *)(*(long *)(param_1 + 0x150) + uVar34); + puVar21[1] = plVar22[1]; + *puVar14 = puVar21; + plVar22 = (long *)*plVar22; + if (plVar22 == (long *)0x0) { + *(int *)(param_1 + 0x158) = iVar15; + goto LAB_0042f210; + } + uVar34 = uVar34 + 0x10; + puVar14 = puVar21; + iVar27 = iVar15 + 1; + } while (iVar15 + 1 != iVar7 + 1); + *(int *)(param_1 + 0x158) = iVar15; + } + goto LAB_004306b8; + } +LAB_0042f210: + *puVar21 = 0; + bVar6 = false; + piVar10 = (int *)FUN_00424d1c(param_1,piVar10 + 2); + if (piVar10 == (int *)0x0) goto LAB_0042ce44; +LAB_0042f3d0: + iVar7 = *piVar10; + if (iVar7 != 0x2f) goto LAB_0042d720; + iVar7 = *(int *)(param_1 + 0x134); + while (0 < iVar7) { + piVar10 = *(int **)(piVar10 + 4); + iVar7 = iVar7 + -1; + /* try { // try from 0042f3f8 to 0052f3fb has its CatchHandler @ 0042f5b4 */ + if ((piVar10 == (int *)0x0) || (*piVar10 != 0x2f)) goto LAB_0042ce3c; + } + /* try { // try from 0042f404 to 0052f45b has its CatchHandler @ 0042f334 */ + if ((iVar7 == 0) && (piVar10 = *(int **)(piVar10 + 2), piVar10 != (int *)0x0)) { + iVar7 = *piVar10; + goto LAB_0042d720; + } +LAB_0042ce3c: + if (!bVar6) goto LAB_0042ce44; + } + else { + puVar14 = puVar21; + if (piVar10 != (int *)*puVar21) { + do { + puVar14 = puVar14 + 2; + if (puVar14 == puVar21 + ((ulong)(uVar32 - 1) + 1) * 2) goto LAB_0042f18c; + } while (piVar10 != (int *)*puVar14); + } + unaff_x22 = *(undefined8 *)(param_1 + 0x120); + *(undefined8 *)(param_1 + 0x120) = puVar14[1]; + bVar6 = true; + /* try { // try from 0042f3c4 to 0052f3c7 has its CatchHandler @ 0042f334 */ + piVar10 = (int *)FUN_00424d1c(param_1,piVar10 + 2); + if (piVar10 != (int *)0x0) goto LAB_0042f3d0; + } + *(undefined8 *)(param_1 + 0x120) = unaff_x22; +LAB_0042ce44: + *(undefined4 *)(param_1 + 0x130) = 1; + return; + } +LAB_0042d720: + if ((iVar7 == 0x23) || (*param_3 == iVar7)) { + local_80 = *(long **)(param_1 + 0x128); + param_3 = piVar10; + goto LAB_0042d6c4; + } + if (iVar7 != 0x24) { + local_80 = *(long **)(param_1 + 0x128); + goto LAB_0042d6c4; + } + lVar11 = *(long *)(piVar10 + 2); + local_80 = *(long **)(param_1 + 0x128); + local_70[1] = *(long *)(param_1 + 0x120); + *(long ***)(param_1 + 0x128) = &local_80; + local_78 = param_3; + if (lVar11 == 0) goto LAB_0042d6e0; + goto LAB_0042d6e4; + case 0x27: + /* try { // try from 0042d020 to 0052d023 has its CatchHandler @ 0042cff0 */ + if ((param_2 >> 2 & 1) == 0) { + lVar11 = (long)(int)(*(long **)(param_3 + 2))[1]; + lVar19 = **(long **)(param_3 + 2); + if (lVar11 != 0) { + lVar18 = 0; + lVar8 = *(long *)(param_1 + 0x100); + do { + uVar4 = *(undefined1 *)(lVar19 + lVar18); + if (lVar8 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar17 = 1; + lVar8 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + /* try { // try from 0042d040 to 0052d043 has its CatchHandler @ 0042d0c8 */ + lVar17 = lVar8 + 1; + } + /* try { // try from 0042d048 to 0052d0c3 has its CatchHandler @ 0042cff0 */ + *(long *)(param_1 + 0x100) = lVar17; + lVar18 = lVar18 + 1; + param_1[lVar8] = uVar4; + param_1[0x108] = uVar4; + lVar8 = lVar17; + } while (lVar11 != lVar18); + } + } + else { + lVar11 = (long)*(int *)(*(long *)(param_3 + 2) + 0x18); + lVar19 = *(long *)(*(long *)(param_3 + 2) + 0x10); + if (lVar11 != 0) { + lVar18 = 0; + lVar8 = *(long *)(param_1 + 0x100); + do { + uVar4 = *(undefined1 *)(lVar19 + lVar18); + if (lVar8 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar17 = 1; + lVar8 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar17 = lVar8 + 1; + } + *(long *)(param_1 + 0x100) = lVar17; + lVar18 = lVar18 + 1; + param_1[lVar8] = uVar4; + param_1[0x108] = uVar4; + lVar8 = lVar17; + } while (lVar11 != lVar18); + } + } + break; + case 0x28: + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x29: + if ((param_2 >> 5 & 1) == 0) { + if ((*(long *)(param_3 + 2) != 0) && ((param_2 >> 6 & 1) == 0)) { + local_80 = *(long **)(param_1 + 0x128); + *(long ***)(param_1 + 0x128) = &local_80; + local_70[1] = *(long *)(param_1 + 0x120); + local_70[0]._0_4_ = 0; + local_78 = param_3; + FUN_0042cdc8(param_1,param_2 & 0xffffff9f,*(undefined8 *)(param_3 + 2)); + *(long **)(param_1 + 0x128) = local_80; + if ((int)local_70[0] != 0) { + return; + } + FUN_00424c1c(param_1,0x20); + } + /* catch() { ... } // from try @ 0042d040 with catch @ 0042d0c8 */ + FUN_00431630(param_1,param_2 & 0xffffff9f,param_3 + 4,*(undefined8 *)(param_1 + 0x128)); + } + else { + FUN_00431630(param_1,param_2 & 0xffffff9f,param_3 + 4,*(undefined8 *)(param_1 + 0x128)); + if (*(long *)(param_3 + 2) != 0) { + FUN_0042cdc8(param_1,param_2 & 0xffffff9f); + } + } + break; + case 0x2a: + /* try { // try from 0042d0d8 to 0052d0db has its CatchHandler @ 0042cff0 */ + plVar22 = *(long **)(param_1 + 0x128); + local_70[1] = *(long *)(param_1 + 0x120); + *(long ***)(param_1 + 0x128) = &local_80; + local_70[0]._0_4_ = 0; + /* catch() { ... } // from try @ 0042d158 with catch @ 0042d100 + catch() { ... } // from try @ 0042d1ac with catch @ 0042d100 + catch() { ... } // from try @ 0042d2b4 with catch @ 0042d100 + catch() { ... } // from try @ 0042d354 with catch @ 0042d100 + catch() { ... } // from try @ 0042d80c with catch @ 0042d100 + catch() { ... } // from try @ 0042d9c4 with catch @ 0042d100 + catch() { ... } // from try @ 0042da54 with catch @ 0042d100 + catch() { ... } // from try @ 0042db58 with catch @ 0042d100 + catch() { ... } // from try @ 0042db94 with catch @ 0042d100 + catch() { ... } // from try @ 0042dbc0 with catch @ 0042d100 + catch() { ... } // from try @ 0042dbd4 with catch @ 0042d100 + catch() { ... } // from try @ 0042dbe8 with catch @ 0042d100 + catch() { ... } // from try @ 0042dbfc with catch @ 0042d100 + catch() { ... } // from try @ 0042dc10 with catch @ 0042d100 + catch() { ... } // from try @ 0042dc4c with catch @ 0042d100 */ + local_80 = plVar22; + if ((plVar22 == (long *)0x0) || (2 < *(int *)plVar22[1] - 0x19U)) { + local_78 = param_3; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + *(long **)(param_1 + 0x128) = plVar22; + if ((int)local_70[0] != 0) { + return; + } + } + else { + plVar9 = plVar22; + pplVar23 = &local_80; + uVar34 = 1; + do { + pplVar24 = pplVar23; + uVar33 = uVar34; + if ((int)plVar9[2] == 0) { + if (3 < (uint)uVar34) { + *(undefined4 *)(param_1 + 0x130) = 1; + return; + } + uVar33 = (ulong)((uint)uVar34 + 1); + pplVar24 = &local_80 + uVar34 * 4; + /* try { // try from 0042d158 to 0052d15b has its CatchHandler @ 0042d100 */ + piVar10 = (int *)plVar9[1]; + *pplVar24 = (long *)*plVar9; + (&local_78)[uVar34 * 4] = piVar10; + lVar11 = plVar9[3]; + local_70[uVar34 * 4] = plVar9[2]; + local_70[uVar34 * 4 + 1] = lVar11; + (&local_80)[uVar34 * 4] = (long *)pplVar23; + *(long ***)(param_1 + 0x128) = pplVar24; + *(undefined4 *)(plVar9 + 2) = 1; + } + plVar9 = (long *)*plVar9; + } while ((plVar9 != (long *)0x0) && + (pplVar23 = pplVar24, uVar34 = uVar33, *(int *)plVar9[1] - 0x19U < 3)); + local_78 = param_3; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + *(long **)(param_1 + 0x128) = plVar22; + if ((int)local_70[0] != 0) { + return; + } + /* try { // try from 0042d1a4 to 0052d1a7 has its CatchHandler @ 0042dbec */ + if ((int)uVar33 != 1) { + do { + uVar32 = (int)uVar33 - 1; + uVar33 = (ulong)uVar32; + /* try { // try from 0042d1ac to 0052d273 has its CatchHandler @ 0042d100 */ + FUN_004307d4(param_1,param_2,(&local_78)[uVar33 * 4]); + } while (uVar32 != 1); + plVar22 = *(long **)(param_1 + 0x128); + } + } + FUN_00431368(param_1,param_2,param_3 + 2,plVar22); + break; + case 0x2b: + case 0x2d: + local_80 = *(long **)(param_1 + 0x128); + *(long ***)(param_1 + 0x128) = &local_80; + local_70[1] = *(long *)(param_1 + 0x120); + local_70[0]._0_4_ = 0; + local_78 = param_3; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + if ((int)local_70[0] == 0) { + FUN_004307d4(param_1,param_2,param_3); + } + *(long **)(param_1 + 0x128) = local_80; + break; + case 0x2c: + if (*(short *)((long)param_3 + 0x12) != 0) { + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 2; + *param_1 = 0x5f; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x53; +LAB_0042f0c8: + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x61; + param_1[0x108] = 0x61; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x74; + lVar11 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_0042f100; + } +LAB_0042f0e4: + lVar11 = lVar19 + 1; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x74; + param_1[0x108] = 0x74; + if (lVar11 != 0xff) goto LAB_0042f100; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x5f; + param_1[0x108] = 0x5f; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x53; + lVar19 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + /* try { // try from 00430364 to 00530367 has its CatchHandler @ 0043031c */ + param_1[1] = 0x61; + goto LAB_0042f0e4; + } + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x53; + param_1[0x108] = 0x53; + /* catch() { ... } // from try @ 0042f320 with catch @ 0042f0c0 */ + if (lVar11 != 0xff) goto LAB_0042f0c8; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x61; + lVar11 = 2; + /* catch() { ... } // from try @ 00430364 with catch @ 0043031c + catch() { ... } // from try @ 004303b0 with catch @ 0043031c + catch() { ... } // from try @ 00430480 with catch @ 0043031c */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x74; +LAB_0042f100: + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x20; + param_1[0x108] = 0x20; + } + if (*(undefined **)(*(long *)(param_3 + 2) + 8) == &UNK_004f9470) { + lVar11 = *(long *)(param_1 + 0x100); + } + else { + FUN_0042cdc8(param_1,param_2); + lVar19 = *(long *)(param_1 + 0x100); + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar11 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x20; + param_1[0x108] = 0x20; + } + if ((short)param_3[4] == 0) { + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 2; + *param_1 = 0x5f; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x46; +LAB_0042ede4: + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x72; + param_1[0x108] = 0x72; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x61; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 99; + } + else { +LAB_0042ee00: + lVar18 = lVar19 + 1; + *(long *)(param_1 + 0x100) = lVar18; + param_1[lVar19] = 0x61; + param_1[0x108] = 0x61; + if (lVar18 != 0xff) goto LAB_0042ee1c; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 99; + lVar11 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x5f; + param_1[0x108] = 0x5f; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x46; + lVar19 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x72; + goto LAB_0042ee00; + } + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x46; + param_1[0x108] = 0x46; + if (lVar11 != 0xff) goto LAB_0042ede4; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x72; + lVar18 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x61; +LAB_0042ee1c: + lVar11 = lVar18 + 1; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar18] = 99; + param_1[0x108] = 99; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_0042ee3c; + } + } + lVar19 = lVar11 + 1; +LAB_0042ee3c: + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x74; + param_1[0x108] = 0x74; + return; + } + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 2; + *param_1 = 0x5f; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x41; +LAB_0042e358: + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 99; + param_1[0x108] = 99; + /* try { // try from 0042e36c to 0052e36f has its CatchHandler @ 0042e600 */ + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 99; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x75; + } + else { +LAB_0042e374: + lVar18 = lVar19 + 1; + *(long *)(param_1 + 0x100) = lVar18; + param_1[lVar19] = 99; + param_1[0x108] = 99; + if (lVar18 != 0xff) goto LAB_0042e390; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x75; + lVar11 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } +LAB_0042e3ac: + lVar19 = lVar11 + 1; + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x5f; + param_1[0x108] = 0x5f; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x41; + lVar19 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 99; + goto LAB_0042e374; + } + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x41; + param_1[0x108] = 0x41; + /* try { // try from 0042e350 to 0052e353 has its CatchHandler @ 0042e268 */ + if (lVar11 != 0xff) goto LAB_0042e358; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 99; + lVar18 = 2; + param_1[1] = 99; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_0042e390: + lVar11 = lVar18 + 1; + /* try { // try from 0042e394 to 0052e3bf has its CatchHandler @ 0042e628 */ + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar18] = 0x75; + param_1[0x108] = 0x75; + if (lVar11 != 0xff) goto LAB_0042e3ac; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x6d; + param_1[0x108] = 0x6d; + break; + case 0x2e: + case 0x2f: + if (*(long *)(param_3 + 2) != 0) { + FUN_0042cdc8(param_1,param_2); + } + /* try { // try from 0042e1ec to 0052e1ef has its CatchHandler @ 0042e254 */ + if (*(long *)(param_3 + 4) != 0) { + uVar33 = *(ulong *)(param_1 + 0x100); + /* try { // try from 0042e1f4 to 0052e1f7 has its CatchHandler @ 0042de70 */ + uVar34 = uVar33; + if (0xfd < uVar33) { + param_1[uVar33] = 0; + uVar34 = 0; + (**(code **)(param_1 + 0x110))(param_1,uVar33,*(undefined8 *)(param_1 + 0x118)); + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + param_1[uVar34] = 0x2c; + /* catch() { ... } // from try @ 0042df74 with catch @ 0042e208 + catch() { ... } // from try @ 0042e044 with catch @ 0042e208 + catch() { ... } // from try @ 0042e14c with catch @ 0042e208 */ + *(ulong *)(param_1 + 0x100) = uVar34 + 2; + param_1[uVar34 + 1] = 0x20; + param_1[0x108] = 0x20; + lVar11 = *(long *)(param_1 + 0x138); + /* try { // try from 0042e22c to 0052e22f has its CatchHandler @ 0042de70 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + /* catch() { ... } // from try @ 0042df9c with catch @ 0042e230 */ + if ((*(long *)(param_1 + 0x138) == lVar11) && (*(long *)(param_1 + 0x100) == uVar34 + 2)) { + *(ulong *)(param_1 + 0x100) = uVar34; + } + } + break; + case 0x30: + /* catch() { ... } // from try @ 0042e134 with catch @ 0042e254 + catch() { ... } // from try @ 0042e1ec with catch @ 0042e254 */ + uVar36 = *(undefined8 *)(param_3 + 4); + if (*(long *)(param_3 + 2) != 0) { + /* try { // try from 0042e264 to 0052e267 has its CatchHandler @ 0042de70 */ + FUN_0042cdc8(param_1,param_2); + } + /* catch() { ... } // from try @ 0042e350 with catch @ 0042e268 + catch() { ... } // from try @ 0042e468 with catch @ 0042e268 + catch() { ... } // from try @ 0042e534 with catch @ 0042e268 + catch() { ... } // from try @ 0042e5b8 with catch @ 0042e268 + catch() { ... } // from try @ 0042e5ec with catch @ 0042e268 + catch() { ... } // from try @ 0042e624 with catch @ 0042e268 + catch() { ... } // from try @ 0042e65c with catch @ 0042e268 */ + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x7b; + param_1[0x108] = 0x7b; + FUN_0042cdc8(param_1,param_2,uVar36); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + /* try { // try from 0042f5c4 to 0052f5c7 has its CatchHandler @ 0042f334 */ + /* catch() { ... } // from try @ 0042f518 with catch @ 0042f5c8 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + /* try { // try from 0042f5d8 to 0052f5db has its CatchHandler @ 0042f334 */ + lVar19 = 1; + /* catch() { ... } // from try @ 0042f760 with catch @ 0042f5e0 + catch() { ... } // from try @ 0042f8bc with catch @ 0042f5e0 */ + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x7d; + param_1[0x108] = 0x7d; + break; + case 0x31: + lVar19 = *(long *)(param_3 + 2); + pcVar12 = "operator"; + iVar7 = *(int *)(lVar19 + 0x10); + lVar11 = *(long *)(param_1 + 0x100); + do { + /* try { // try from 0042e044 to 0052e047 has its CatchHandler @ 0042e208 */ + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar11 = 0; + /* try { // try from 0042e070 to 0052e10b has its CatchHandler @ 0042de70 */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar18; + } while (pcVar12 != ""); + pcVar12 = *(char **)(lVar19 + 8); + if ((byte)(*pcVar12 + 0x9fU) < 0x1a) { + if (lVar18 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar18 + 1; + param_1[lVar18] = 0x20; + param_1[0x108] = 0x20; + pcVar12 = *(char **)(lVar19 + 8); + } + lVar11 = (long)iVar7; + /* try { // try from 0042e8d4 to 0052e91f has its CatchHandler @ 0042e660 */ + if (pcVar12[lVar11 + -1] == ' ') { + /* try { // try from 0042e950 to 0052e953 has its CatchHandler @ 0042e660 */ + lVar11 = (long)(iVar7 + -1); + } + if (lVar11 != 0) { + pcVar1 = pcVar12 + lVar11; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + /* try { // try from 0042e948 to 0052e94b has its CatchHandler @ 0042e9cc */ + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != pcVar1); + } + break; + case 0x32: + /* try { // try from 0042e544 to 0052e547 has its CatchHandler @ 0042e600 */ + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "operator "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 9); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + break; + default: + /* try { // try from 0042ce08 to 0052ce0b has its CatchHandler @ 0042cfd0 */ + *(undefined4 *)(param_1 + 0x130) = 1; + break; + case 0x34: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "operator "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 9); + if (*(int **)(param_1 + 0x160) != (int *)0x0) { + local_80 = *(long **)(param_1 + 0x120); + *(long ***)(param_1 + 0x120) = &local_80; + local_78 = *(int **)(param_1 + 0x160); + } + if (**(int **)(param_3 + 2) == 4) { + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(*(int **)(param_3 + 2) + 2)); + if (*(long *)(param_1 + 0x160) != 0) { + *(long **)(param_1 + 0x120) = local_80; + } + /* catch() { ... } // from try @ 0042f2a4 with catch @ 0042f2fc */ + if (param_1[0x108] == '<') { + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *(undefined8 *)(param_1 + 0x100) = 0; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + /* try { // try from 004303a8 to 005303ab has its CatchHandler @ 00430470 */ + param_1[lVar11] = 0x20; + param_1[0x108] = 0x20; + /* try { // try from 004303b0 to 0053043b has its CatchHandler @ 0043031c */ + } + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + param_1[lVar11] = 0x3c; + /* try { // try from 0042f320 to 0052f323 has its CatchHandler @ 0042f0c0 */ + param_1[0x108] = 0x3c; + /* catch() { ... } // from try @ 0042f3c4 with catch @ 0042f334 + catch() { ... } // from try @ 0042f404 with catch @ 0042f334 + catch() { ... } // from try @ 0042f4d4 with catch @ 0042f334 + catch() { ... } // from try @ 0042f520 with catch @ 0042f334 + catch() { ... } // from try @ 0042f5c4 with catch @ 0042f334 + catch() { ... } // from try @ 0042f5d8 with catch @ 0042f334 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 2) + 0x10)); + if (param_1[0x108] == '>') { + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *(undefined8 *)(param_1 + 0x100) = 0; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + param_1[lVar11] = 0x20; + param_1[0x108] = 0x20; + } + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + param_1[lVar11] = 0x3e; + param_1[0x108] = 0x3e; + } + else { + FUN_0042cdc8(param_1,param_2); + if (*(long *)(param_1 + 0x160) != 0) { + *(long **)(param_1 + 0x120) = local_80; + } + } + break; + case 0x35: + /* try { // try from 0042e52c to 0052e52f has its CatchHandler @ 0042e64c */ + /* try { // try from 0042e534 to 0052e537 has its CatchHandler @ 0042e268 */ + FUN_004318e0(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x36: + piVar20 = *(int **)(param_3 + 2); + piVar10 = *(int **)(param_3 + 4); + if (*piVar20 == 0x31) { + pcVar12 = (char *)**(undefined8 **)(piVar20 + 2); + iVar7 = strcmp(pcVar12,"ad"); + if (iVar7 == 0) { + iVar7 = *piVar10; + if (iVar7 != 3) goto LAB_0042f258; + if ((**(int **)(piVar10 + 2) == 1) && (**(int **)(piVar10 + 4) == 0x29)) { + piVar10 = *(int **)(piVar10 + 2); + } + } + else { + iVar7 = *piVar10; +LAB_0042f258: + if (iVar7 == 0x38) { + FUN_004319b4(param_1,param_2,*(undefined8 *)(piVar10 + 2)); + /* try { // try from 004306a0 to 005306a3 has its CatchHandler @ 0043079c */ + /* try { // try from 004306a8 to 00530743 has its CatchHandler @ 00430608 */ + FUN_004318e0(param_1,param_2,piVar20); + return; + } + } + FUN_004318e0(param_1,param_2,piVar20); + iVar7 = strcmp(pcVar12,"gs"); + if (iVar7 == 0) { + FUN_0042cdc8(param_1,param_2,piVar10); + return; + } + iVar7 = strcmp(pcVar12,"st"); + if (iVar7 == 0) { + FUN_00424c1c(param_1,0x28); + /* try { // try from 0042f2a4 to 0052f2a7 has its CatchHandler @ 0042f2fc */ + FUN_0042cdc8(param_1,param_2,piVar10); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + param_1[lVar11] = 0x29; + param_1[0x108] = 0x29; + return; + } + } + else if (*piVar20 == 0x33) { + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11 + 1; + param_1[lVar11] = 0x28; + param_1[0x108] = 0x28; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(piVar20 + 2)); + FUN_00424c1c(param_1,0x29); + } + else { + FUN_004318e0(param_1,param_2,piVar20); + } + FUN_004319b4(param_1,param_2,piVar10); + break; + case 0x37: + piVar10 = *(int **)(param_3 + 4); + if (*piVar10 != 0x38) goto LAB_0042ce44; + /* try { // try from 0042e5b8 to 0052e5bb has its CatchHandler @ 0042e268 */ + puVar21 = *(undefined8 **)(*(int **)(param_3 + 2) + 2); + pcVar12 = (char *)*puVar21; + if ((pcVar12[1] == 'c') && (((byte)(*pcVar12 + 0x8eU) < 2 || ((byte)(*pcVar12 + 0x9dU) < 2)))) { + FUN_004318e0(param_1,param_2); + FUN_00424c1c(param_1,0x3c); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8)); + FUN_00424f20(param_1,&DAT_0047bf38); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 0x10)); + FUN_00424c1c(param_1,0x29); + } + else { + /* try { // try from 0042e790 to 0052e793 has its CatchHandler @ 0042e9e0 */ + if ((**(int **)(param_3 + 2) == 0x31) && + ((*(int *)(puVar21 + 2) == 1 && (*(char *)puVar21[1] == '>')))) { + FUN_00424c1c(param_1,0x28); + piVar10 = *(int **)(param_3 + 4); + pcVar12 = (char *)**(undefined8 **)(*(long *)(param_3 + 2) + 8); + } + /* try { // try from 0042e5e4 to 0052e5e7 has its CatchHandler @ 0042e64c */ + iVar7 = strcmp(pcVar12,"cl"); + /* try { // try from 0042e5ec to 0052e5ef has its CatchHandler @ 0042e268 */ + piVar10 = *(int **)(piVar10 + 2); + if ((iVar7 == 0) && (*piVar10 == 3)) { + if (**(int **)(piVar10 + 4) != 0x29) { + *(undefined4 *)(param_1 + 0x130) = 1; + } + FUN_004319b4(param_1,param_2,*(undefined8 *)(piVar10 + 2)); + } + else { + /* catch() { ... } // from try @ 0042e36c with catch @ 0042e600 + catch() { ... } // from try @ 0042e43c with catch @ 0042e600 + catch() { ... } // from try @ 0042e544 with catch @ 0042e600 */ + FUN_004319b4(param_1,param_2); + } + lVar11 = *(long *)(param_3 + 2); + pcVar12 = (char *)**(undefined8 **)(lVar11 + 8); + /* try { // try from 0042e624 to 0052e627 has its CatchHandler @ 0042e268 */ + iVar7 = strcmp(pcVar12,"ix"); + /* catch() { ... } // from try @ 0042e394 with catch @ 0042e628 */ + if (iVar7 == 0) { + FUN_00424c1c(param_1,0x5b); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 0x10)); + FUN_00424c1c(param_1,0x5d); + } + else { + iVar7 = strcmp(pcVar12,"cl"); + if (iVar7 != 0) { + FUN_004318e0(param_1,param_2,lVar11); + } + /* catch() { ... } // from try @ 0042e52c with catch @ 0042e64c + catch() { ... } // from try @ 0042e5e4 with catch @ 0042e64c */ + FUN_004319b4(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 0x10)); + } + /* try { // try from 0042e65c to 0052e65f has its CatchHandler @ 0042e268 */ + /* catch() { ... } // from try @ 0042e774 with catch @ 0042e660 + catch() { ... } // from try @ 0042e8d4 with catch @ 0042e660 + catch() { ... } // from try @ 0042e950 with catch @ 0042e660 + catch() { ... } // from try @ 0042e96c with catch @ 0042e660 + catch() { ... } // from try @ 0042e9c8 with catch @ 0042e660 + catch() { ... } // from try @ 0042e9dc with catch @ 0042e660 */ + if (((**(int **)(param_3 + 2) == 0x31) && + (lVar11 = *(long *)(*(int **)(param_3 + 2) + 2), *(int *)(lVar11 + 0x10) == 1)) && + (**(char **)(lVar11 + 8) == '>')) { + FUN_00424c1c(param_1,0x29); + } + } + break; + case 0x38: + *(undefined4 *)(param_1 + 0x130) = 1; + break; + case 0x39: + piVar10 = *(int **)(param_3 + 4); + if ((*piVar10 != 0x3a) || (piVar20 = *(int **)(piVar10 + 4), *piVar20 != 0x3b)) + goto LAB_0042ce44; + lVar18 = *(long *)(param_3 + 2); + lVar11 = *(long *)(piVar10 + 2); + /* try { // try from 0042e43c to 0052e43f has its CatchHandler @ 0042e600 */ + uVar36 = *(undefined8 *)(piVar20 + 2); + lVar19 = *(long *)(piVar20 + 4); + iVar7 = strcmp((char *)**(undefined8 **)(lVar18 + 8),"qu"); + if (iVar7 == 0) { + FUN_004319b4(param_1,param_2); + FUN_004318e0(param_1,param_2,lVar18); + FUN_004319b4(param_1,param_2,uVar36); + FUN_00424f20(param_1,&DAT_0047be80); + FUN_004319b4(param_1,param_2,lVar19); + } + else { + /* try { // try from 0042e468 to 0052e503 has its CatchHandler @ 0042e268 */ + FUN_00424f20(param_1,&DAT_0047be88); + if (*(long *)(lVar11 + 8) != 0) { + FUN_004319b4(param_1,param_2); + FUN_00424c1c(param_1,0x20); + } + FUN_0042cdc8(param_1,param_2,uVar36); + if (lVar19 != 0) { + FUN_004319b4(param_1,param_2,lVar19); + } + } + break; + case 0x3a: + case 0x3b: + *(undefined4 *)(param_1 + 0x130) = 1; + break; + case 0x3c: + case 0x3d: + uVar32 = 0; + if ((**(int **)(param_3 + 2) == 0x27) && + (uVar32 = *(uint *)(*(long *)(*(int **)(param_3 + 2) + 2) + 0x1c), uVar32 != 0)) { + if (uVar32 < 7) { + if (**(int **)(param_3 + 4) == 0) { + if (iVar7 == 0x3d) { + /* catch() { ... } // from try @ 004308a8 with catch @ 004307b0 + catch() { ... } // from try @ 00430958 with catch @ 004307b0 + catch() { ... } // from try @ 00430974 with catch @ 004307b0 */ + FUN_00424c1c(param_1,0x2d); + } + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + switch(uVar32) { + case 2: + FUN_00424c1c(param_1,0x75); + return; + case 3: + FUN_00424c1c(param_1,0x6c); + return; + case 4: + FUN_00424f20(param_1,&DAT_0047be90); + return; + case 5: + FUN_00424f20(param_1,&DAT_0047be98); + return; + case 6: + FUN_00424f20(param_1,&DAT_0047bea0); + return; + default: + return; + } + } + } + else if ((((uVar32 == 7) && (piVar10 = *(int **)(param_3 + 4), *piVar10 == 0)) && + (piVar10[4] == 1)) && (iVar7 == 0x3c)) { + if (**(char **)(piVar10 + 2) == '0') { + FUN_00424f20(param_1,"false"); + return; + } + if (**(char **)(piVar10 + 2) == '1') { + /* catch() { ... } // from try @ 004306a0 with catch @ 0043079c */ + FUN_00424f20(param_1,&DAT_0046d718); + return; + /* try { // try from 004307ac to 005307af has its CatchHandler @ 00430608 */ + } + } + } + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x28; + param_1[0x108] = 0x28; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x29; + param_1[0x108] = 0x29; + if (*param_3 == 0x3d) { + FUN_00424c1c(param_1,0x2d); + } + if (uVar32 == 8) { + FUN_00424c1c(param_1,0x5b); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + FUN_00424c1c(param_1,0x5d); + } + else { + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + } + break; + case 0x3e: + pcVar12 = "java resource "; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + /* try { // try from 0042db50 to 0052db53 has its CatchHandler @ 0042db84 */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x3f: + /* try { // try from 0042db58 to 0052db5b has its CatchHandler @ 0042d100 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + /* try { // try from 0042db68 to 0052db6b has its CatchHandler @ 0042dc14 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + break; + case 0x40: + lVar11 = *(long *)(param_1 + 0x100); + iVar7 = param_3[2]; + /* try { // try from 0042d968 to 0052d96b has its CatchHandler @ 0042dc14 */ + if (lVar11 == 0xff) { + /* try { // try from 0042f814 to 0052f8a7 has its CatchHandler @ 0042f8a8 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = (char)iVar7; + param_1[0x108] = (char)iVar7; + break; + case 0x41: + sprintf((char *)&local_80,"%ld",*(undefined8 *)(param_3 + 2)); + sVar28 = strlen((char *)&local_80); + if (sVar28 != 0) { + sVar13 = 0; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *(char *)((long)&local_80 + sVar13); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + sVar13 = sVar13 + 1; + /* try { // try from 0042d9c4 to 0052da1b has its CatchHandler @ 0042d100 */ + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (sVar13 != sVar28); + } + break; + case 0x42: + pcVar12 = "decltype ("; + lVar11 = *(long *)(param_1 + 0x100); + do { + cVar5 = *pcVar12; + /* try { // try from 0042da4c to 0052da4f has its CatchHandler @ 0042dc3c */ + if (lVar11 == 0xff) { + /* try { // try from 0042da54 to 0052db07 has its CatchHandler @ 0042d100 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + param_1[lVar11] = cVar5; + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + /* catch() { ... } // from try @ 0042f46c with catch @ 0042f5a0 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + /* catch() { ... } // from try @ 0042f3f8 with catch @ 0042f5b4 */ + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x29; + param_1[0x108] = 0x29; + break; + case 0x43: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "global constructors keyed to "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x1d); + /* try { // try from 0042e860 to 0052e863 has its CatchHandler @ 0042e9e0 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x44: + /* catch() { ... } // from try @ 0042db50 with catch @ 0042db84 */ + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "global destructors keyed to "[lVar11]; + if (lVar19 == 0xff) { + /* try { // try from 0042dbc0 to 0052dbc3 has its CatchHandler @ 0042d100 */ + /* catch() { ... } // from try @ 0042d804 with catch @ 0042dbc4 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + /* try { // try from 0042dbd4 to 0052dbd7 has its CatchHandler @ 0042d100 */ + lVar18 = 1; + /* catch() { ... } // from try @ 0042d34c with catch @ 0042dbd8 */ + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + /* try { // try from 0042db94 to 0052db97 has its CatchHandler @ 0042d100 */ + lVar18 = lVar19 + 1; + } + /* catch() { ... } // from try @ 0042d85c with catch @ 0042db98 */ + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x1c); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x45: + /* try { // try from 0042dbe8 to 0052dbeb has its CatchHandler @ 0042d100 */ + /* catch() { ... } // from try @ 0042d1a4 with catch @ 0042dbec */ + pcVar12 = "{lambda("; + lVar11 = *(long *)(param_1 + 0x100); + /* try { // try from 0042dbfc to 0052dbff has its CatchHandler @ 0042d100 */ + do { + cVar5 = *pcVar12; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + /* catch() { ... } // from try @ 0042da4c with catch @ 0042dc3c */ + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + /* try { // try from 0042dc4c to 0052dc4f has its CatchHandler @ 0042d100 */ + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + /* catch() { ... } // from try @ 0042d2ac with catch @ 0042dc00 */ + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + pcVar12 = pcVar12 + 1; + /* try { // try from 0042dc10 to 0052dc13 has its CatchHandler @ 0042d100 */ + param_1[lVar11] = cVar5; + /* catch() { ... } // from try @ 0042d968 with catch @ 0042dc14 + catch() { ... } // from try @ 0042db68 with catch @ 0042dc14 */ + param_1[0x108] = cVar5; + lVar11 = lVar19; + } while (pcVar12 != ""); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + /* try { // try from 0042eb0c to 0052eb0f has its CatchHandler @ 0042ea84 */ + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + *param_1 = 0x29; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_0042eb30: + lVar11 = lVar19 + 1; + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x29; + param_1[0x108] = 0x29; + if (lVar19 != 0xff) goto LAB_0042eb30; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x23; + param_1[0x108] = 0x23; + /* try { // try from 0042eb50 to 0052eb53 has its CatchHandler @ 0042eb64 */ + sVar28 = 0; + /* try { // try from 0042eb58 to 0052eb5b has its CatchHandler @ 0042ea84 */ + sprintf((char *)&local_80,"%ld",(long)(param_3[4] + 1)); + /* catch() { ... } // from try @ 0042eb50 with catch @ 0042eb64 */ + sVar13 = strlen((char *)&local_80); + lVar11 = *(long *)(param_1 + 0x100); + /* try { // try from 0042eb74 to 0052eb77 has its CatchHandler @ 0042ea84 */ + lVar19 = lVar11; + if (sVar13 != 0) { + do { + cVar5 = *(char *)((long)&local_80 + sVar28); + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar11 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + sVar28 = sVar28 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar11; + } while (sVar28 != sVar13); + } + if (lVar11 == 0xff) { + /* try { // try from 0042f760 to 0052f7fb has its CatchHandler @ 0042f5e0 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x7d; + param_1[0x108] = 0x7d; + break; + case 0x47: + puVar29 = &DAT_0047bf18; + lVar11 = *(long *)(param_1 + 0x100); + do { + uVar4 = *puVar29; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + puVar29 = puVar29 + 1; + param_1[lVar11] = uVar4; + param_1[0x108] = uVar4; + lVar11 = lVar19; + } while (puVar29 != (undefined1 *)0x47bf26); + sVar28 = 0; + sprintf((char *)&local_80,"%ld",*(long *)(param_3 + 2) + 1); + sVar13 = strlen((char *)&local_80); + lVar11 = *(long *)(param_1 + 0x100); + lVar19 = lVar11; + if (sVar13 != 0) { + do { + cVar5 = *(char *)((long)&local_80 + sVar28); + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar11 = lVar19 + 1; + } + /* catch() { ... } // from try @ 0042eb0c with catch @ 0042ea84 + catch() { ... } // from try @ 0042eb58 with catch @ 0042ea84 + catch() { ... } // from try @ 0042eb74 with catch @ 0042ea84 */ + *(long *)(param_1 + 0x100) = lVar11; + sVar28 = sVar28 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar11; + } while (sVar28 != sVar13); + } + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x7d; + param_1[0x108] = 0x7d; + break; + case 0x48: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "transaction clone for "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x16); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x49: + lVar11 = 0; + lVar19 = *(long *)(param_1 + 0x100); + do { + cVar5 = "non-transaction clone for "[lVar11]; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar18 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar18 = lVar19 + 1; + } + *(long *)(param_1 + 0x100) = lVar18; + lVar11 = lVar11 + 1; + param_1[lVar19] = cVar5; + param_1[0x108] = cVar5; + lVar19 = lVar18; + } while (lVar11 != 0x1a); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + break; + case 0x4a: + iVar7 = 0; + piVar10 = (int *)FUN_00424d98(param_1,*(undefined8 *)(param_3 + 2)); + if (piVar10 == (int *)0x0) { + FUN_004319b4(param_1,param_2,*(undefined8 *)(param_3 + 2)); + FUN_00424f20(param_1,&DAT_00471a90); + } + else { + do { + if ((*piVar10 != 0x2f) || (*(long *)(piVar10 + 2) == 0)) { + uVar36 = *(undefined8 *)(param_3 + 2); + if (iVar7 == 0) { + return; + } + goto LAB_0042ddd8; + } + piVar10 = *(int **)(piVar10 + 4); + iVar7 = iVar7 + 1; + } while (piVar10 != (int *)0x0); + uVar36 = *(undefined8 *)(param_3 + 2); +LAB_0042ddd8: + iVar27 = 0; + do { + *(int *)(param_1 + 0x134) = iVar27; + FUN_0042cdc8(param_1,param_2,uVar36); + if (iVar27 < iVar7 + -1) { + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + /* try { // try from 0042e7b8 to 0052e7e3 has its CatchHandler @ 0042e988 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x2c; + lVar19 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_0042de28: + lVar11 = lVar19 + 1; + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x2c; + param_1[0x108] = 0x2c; + if (lVar19 != 0xff) goto LAB_0042de28; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar11 = 1; + lVar19 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x20; + param_1[0x108] = 0x20; + } + iVar27 = iVar27 + 1; + } while (iVar27 != iVar7); + } + break; + case 0x4b: + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x5b; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x61; +LAB_0042dea0: + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x62; + param_1[0x108] = 0x62; + if (lVar19 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x69; + lVar11 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_0042ded8; + } +LAB_0042debc: + lVar11 = lVar19 + 1; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x69; + param_1[0x108] = 0x69; + if (lVar11 != 0xff) goto LAB_0042ded8; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + *(long *)(param_1 + 0x100) = lVar19; + /* catch() { ... } // from try @ 0042df58 with catch @ 0042de70 + catch() { ... } // from try @ 0042e070 with catch @ 0042de70 + catch() { ... } // from try @ 0042e13c with catch @ 0042de70 + catch() { ... } // from try @ 0042e1c0 with catch @ 0042de70 + catch() { ... } // from try @ 0042e1f4 with catch @ 0042de70 + catch() { ... } // from try @ 0042e22c with catch @ 0042de70 + catch() { ... } // from try @ 0042e264 with catch @ 0042de70 */ + param_1[lVar11] = 0x5b; + param_1[0x108] = 0x5b; + if (lVar19 == 0xff) { + /* catch() { ... } // from try @ 0042f814 with catch @ 0042f8a8 */ + param_1[0xff] = 0; + /* try { // try from 0042f8bc to 0052f8bf has its CatchHandler @ 0042f5e0 */ + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x61; + lVar19 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x62; + goto LAB_0042debc; + } + lVar11 = lVar11 + 2; + *(long *)(param_1 + 0x100) = lVar11; + param_1[lVar19] = 0x61; + param_1[0x108] = 0x61; + if (lVar11 != 0xff) goto LAB_0042dea0; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x62; + lVar11 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x69; +LAB_0042ded8: + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x3a; + param_1[0x108] = 0x3a; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x5d; + param_1[0x108] = 0x5d; + break; + case 0x4c: + puVar29 = &DAT_0047bf28; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar11 = *(long *)(param_1 + 0x100); + do { + uVar4 = *puVar29; + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + /* try { // try from 0042e1c0 to 0052e1c3 has its CatchHandler @ 0042de70 */ + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + puVar29 = puVar29 + 1; + param_1[lVar11] = uVar4; + param_1[0x108] = uVar4; + lVar11 = lVar19; + } while (puVar29 != &LAB_0047bf30); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 4)); + lVar11 = *(long *)(param_1 + 0x100); + if (lVar11 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar19 = 1; + lVar11 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar19 = lVar11 + 1; + } + *(long *)(param_1 + 0x100) = lVar19; + param_1[lVar11] = 0x5d; + param_1[0x108] = 0x5d; + } + /* try { // try from 0042ce14 to 0052ce17 has its CatchHandler @ 0042cf00 */ + /* try { // try from 0042ce20 to 0052ce23 has its CatchHandler @ 0042cfd0 */ + return; +} + + +================================================================== + +### FUNC 004307d4 (2176 bytes) name=FUN_004307d4 + +void FUN_004307d4(undefined1 *param_1,uint param_2,undefined4 *param_3) + +{ + char cVar1; + long lVar2; + long lVar3; + long lVar4; + undefined1 uVar5; + char *pcVar6; + + switch(*param_3) { + case 3: + param_3 = *(undefined4 **)(param_3 + 2); + goto LAB_00430810; + default: + goto LAB_00430810; + case 0x19: + case 0x1c: + lVar2 = 0; + lVar3 = *(long *)(param_1 + 0x100); + do { + cVar1 = " restrict"[lVar2]; + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar4 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar4 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar4; + lVar2 = lVar2 + 1; + param_1[lVar3] = cVar1; + param_1[0x108] = cVar1; + lVar3 = lVar4; + } while (lVar2 != 9); + break; + case 0x1a: + case 0x1d: + lVar2 = 0; + lVar3 = *(long *)(param_1 + 0x100); + do { + cVar1 = " volatile"[lVar2]; + /* catch() { ... } // from try @ 00430950 with catch @ 00430964 */ + if (lVar3 == 0xff) { + /* try { // try from 00430974 to 00530977 has its CatchHandler @ 004307b0 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar4 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar4 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar4; + lVar2 = lVar2 + 1; + param_1[lVar3] = cVar1; + /* try { // try from 00430950 to 00530953 has its CatchHandler @ 00430964 */ + param_1[0x108] = cVar1; + lVar3 = lVar4; + /* try { // try from 00430958 to 0053095b has its CatchHandler @ 004307b0 */ + } while (lVar2 != 9); + break; + case 0x1b: + case 0x1e: + lVar2 = *(long *)(param_1 + 0x100); + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x20; + lVar2 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 99; +LAB_004309dc: + lVar3 = lVar2 + 1; + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x6f; + param_1[0x108] = 0x6f; + if (lVar3 == 0xff) { + param_1[0xff] = 0; + uVar5 = 0x74; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x6e; + lVar3 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x73; + } + else { +LAB_004309f8: + lVar2 = lVar3 + 1; + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x6e; + param_1[0x108] = 0x6e; + if (lVar2 != 0xff) goto LAB_00430a14; + uVar5 = 0x74; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x73; + lVar3 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + goto LAB_00430af8; + } + lVar3 = lVar2 + 1; + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x20; + param_1[0x108] = 0x20; + if (lVar3 == 0xff) { + /* try { // try from 00430d5c to 00530dcb has its CatchHandler @ 00430c98 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 99; + lVar3 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x6f; + goto LAB_004309f8; + } + lVar2 = lVar2 + 2; + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 99; + param_1[0x108] = 99; + /* catch() { ... } // from try @ 00430a20 with catch @ 004309d8 + catch() { ... } // from try @ 00430a6c with catch @ 004309d8 + catch() { ... } // from try @ 00430b20 with catch @ 004309d8 */ + if (lVar2 != 0xff) goto LAB_004309dc; + /* catch() { ... } // from try @ 00430f78 with catch @ 00430f38 + catch() { ... } // from try @ 0043143c with catch @ 00430f38 + catch() { ... } // from try @ 0043145c with catch @ 00430f38 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x6f; + lVar2 = 2; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + param_1[1] = 0x6e; +LAB_00430a14: + lVar3 = lVar2 + 1; + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x73; + /* try { // try from 00430a20 to 00530a23 has its CatchHandler @ 004309d8 */ + param_1[0x108] = 0x73; + uVar5 = 0x74; + if (lVar3 != 0xff) goto LAB_00430af8; + goto LAB_00430a30; + case 0x1f: + lVar3 = *(long *)(param_1 + 0x100); + /* try { // try from 00430a64 to 00530a67 has its CatchHandler @ 00430b10 */ + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + /* try { // try from 00430a6c to 00530ae7 has its CatchHandler @ 004309d8 */ + lVar2 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x20; + param_1[0x108] = 0x20; + goto LAB_00430a80; + case 0x20: + lVar3 = *(long *)(param_1 + 0x100); + if (lVar3 == 0xff) { + /* try { // try from 00430e28 to 00530e2b has its CatchHandler @ 00430c98 */ + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar2 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x20; + param_1[0x108] = 0x20; + goto LAB_00430ad0; + case 0x21: + lVar2 = *(long *)(param_1 + 0x100); + /* try { // try from 00430b20 to 00530b23 has its CatchHandler @ 004309d8 */ + /* catch() { ... } // from try @ 00430b74 with catch @ 00430b24 + catch() { ... } // from try @ 00430bc0 with catch @ 00430b24 + catch() { ... } // from try @ 00430c94 with catch @ 00430b24 */ + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + /* try { // try from 00430f78 to 005313f7 has its CatchHandler @ 00430f38 */ + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x20; + param_1[0x108] = 0x20; + param_3 = *(undefined4 **)(param_3 + 4); +LAB_00430810: + FUN_0042cdc8(param_1,param_2,param_3); + return; + case 0x22: + if ((param_2 >> 2 & 1) == 0) { + lVar2 = *(long *)(param_1 + 0x100); + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x2a; + param_1[0x108] = 0x2a; + } + break; + case 0x23: + /* try { // try from 00430b74 to 00530b77 has its CatchHandler @ 00430b24 */ + lVar2 = *(long *)(param_1 + 0x100); +LAB_00430a80: + if (lVar2 == 0xff) { + /* try { // try from 00430e04 to 00530e07 has its CatchHandler @ 00430e18 */ + param_1[0xff] = 0; + /* try { // try from 00430e0c to 00530e0f has its CatchHandler @ 00430c98 */ + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + /* catch() { ... } // from try @ 00430e04 with catch @ 00430e18 */ + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x26; + param_1[0x108] = 0x26; + break; + case 0x24: + lVar2 = *(long *)(param_1 + 0x100); +LAB_00430ad0: + if (lVar2 == 0xff) { + uVar5 = 0x26; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + *param_1 = 0x26; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x26; + param_1[0x108] = 0x26; + uVar5 = 0x26; + if (lVar3 == 0xff) { +LAB_00430a30: + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,lVar3,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_00430afc; + } + } +LAB_00430af8: + lVar2 = lVar3 + 1; +LAB_00430afc: + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = uVar5; + param_1[0x108] = uVar5; + /* catch() { ... } // from try @ 00430a64 with catch @ 00430b10 */ + return; + case 0x25: + pcVar6 = "complex "; + lVar2 = *(long *)(param_1 + 0x100); + do { + /* try { // try from 00430bc0 to 00530c47 has its CatchHandler @ 00430b24 */ + cVar1 = *pcVar6; + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + pcVar6 = pcVar6 + 1; + param_1[lVar2] = cVar1; + param_1[0x108] = cVar1; + lVar2 = lVar3; + /* try { // try from 00430bb8 to 00530bbb has its CatchHandler @ 00430c84 */ + } while (pcVar6 != ""); + break; + case 0x26: + pcVar6 = "imaginary "; + lVar2 = *(long *)(param_1 + 0x100); + do { + cVar1 = *pcVar6; + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + pcVar6 = pcVar6 + 1; + param_1[lVar2] = cVar1; + param_1[0x108] = cVar1; + lVar2 = lVar3; + } while (pcVar6 != ""); + break; + case 0x2b: + if (param_1[0x108] != '(') { + lVar2 = *(long *)(param_1 + 0x100); + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + /* catch() { ... } // from try @ 00430bb8 with catch @ 00430c84 */ + param_1[lVar2] = 0x20; + param_1[0x108] = 0x20; + } + /* try { // try from 00430c94 to 00530c97 has its CatchHandler @ 00430b24 */ + /* catch() { ... } // from try @ 00430d5c with catch @ 00430c98 + catch() { ... } // from try @ 00430e0c with catch @ 00430c98 + catch() { ... } // from try @ 00430e28 with catch @ 00430c98 */ + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar2 = *(long *)(param_1 + 0x100); + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 2; + *param_1 = 0x3a; + param_1[1] = 0x3a; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_00430ce4: + lVar3 = lVar2 + 1; + } + else { + lVar3 = lVar2 + 1; + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x3a; + param_1[0x108] = 0x3a; + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x3a; + lVar2 = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_00430ce4; + } + lVar2 = lVar2 + 2; + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x3a; + param_1[0x108] = 0x3a; + if (lVar2 != 0xff) goto LAB_00430ce4; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x2a; + param_1[0x108] = 0x2a; + break; + case 0x2d: + pcVar6 = " __vector("; + lVar2 = *(long *)(param_1 + 0x100); + do { + cVar1 = *pcVar6; + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + /* try { // try from 004308a8 to 00530917 has its CatchHandler @ 004307b0 */ + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + pcVar6 = pcVar6 + 1; + param_1[lVar2] = cVar1; + param_1[0x108] = cVar1; + lVar2 = lVar3; + } while (pcVar6 != ""); + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(param_3 + 2)); + lVar2 = *(long *)(param_1 + 0x100); + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x29; + param_1[0x108] = 0x29; + } + return; +} + + +================================================================== + +### FUNC 00431054 (788 bytes) name=FUN_00431054 + +void FUN_00431054(undefined1 *param_1,uint param_2,undefined8 *param_3,int param_4) + +{ + undefined1 uVar1; + int iVar2; + long lVar3; + long lVar4; + int *piVar5; + undefined8 uVar6; + undefined1 *puVar7; + undefined8 uVar8; + + if (param_3 != (undefined8 *)0x0) { + iVar2 = *(int *)(param_1 + 0x130); + while (iVar2 == 0) { + if (*(int *)(param_3 + 2) == 0) { + piVar5 = (int *)param_3[1]; + iVar2 = *piVar5; + if ((param_4 != 0) || (4 < iVar2 - 0x1cU)) { + *(undefined4 *)(param_3 + 2) = 1; + uVar8 = *(undefined8 *)(param_1 + 0x120); + *(undefined8 *)(param_1 + 0x120) = param_3[3]; + if (iVar2 == 0x29) { + FUN_00431630(param_1,param_2,piVar5 + 4,*param_3); + *(undefined8 *)(param_1 + 0x120) = uVar8; + return; + } + if (iVar2 == 0x2a) { + FUN_00431368(param_1,param_2,piVar5 + 2,*param_3); + *(undefined8 *)(param_1 + 0x120) = uVar8; + return; + } + if (iVar2 == 2) { + uVar6 = *(undefined8 *)(param_1 + 0x128); + *(undefined8 *)(param_1 + 0x128) = 0; + FUN_0042cdc8(param_1,param_2,*(undefined8 *)(piVar5 + 2)); + *(undefined8 *)(param_1 + 0x128) = uVar6; + lVar3 = *(long *)(param_1 + 0x100); + if ((param_2 >> 2 & 1) != 0) { + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar4 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar4 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar4; + param_1[lVar3] = 0x2e; + param_1[0x108] = 0x2e; + goto LAB_004311e8; + } + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar4 = 1; + *param_1 = 0x3a; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_004311bc: + lVar3 = lVar4 + 1; + } + else { + lVar4 = lVar3 + 1; + *(long *)(param_1 + 0x100) = lVar4; + param_1[lVar3] = 0x3a; + param_1[0x108] = 0x3a; + if (lVar4 != 0xff) goto LAB_004311bc; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar4 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar4] = 0x3a; + param_1[0x108] = 0x3a; +LAB_004311e8: + piVar5 = *(int **)(param_3[1] + 0x10); + iVar2 = *piVar5; + if (iVar2 != 0x46) goto LAB_00431208; + puVar7 = &DAT_0047bc90; + lVar3 = *(long *)(param_1 + 0x100); + do { + uVar1 = *puVar7; + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar4 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar4 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar4; + puVar7 = puVar7 + 1; + param_1[lVar3] = uVar1; + param_1[0x108] = uVar1; + lVar3 = lVar4; + } while (puVar7 != (undefined1 *)0x47bc9d); + FUN_00425128(param_1,(long)(piVar5[4] + 1)); + FUN_00424f20(param_1,&DAT_0047bca0); + do { + piVar5 = *(int **)(piVar5 + 2); + iVar2 = *piVar5; +LAB_00431208: + } while (iVar2 - 0x1cU < 5); + FUN_0042cdc8(param_1,param_2,piVar5); + *(undefined8 *)(param_1 + 0x120) = uVar8; + return; + } + FUN_004307d4(param_1,param_2); + *(undefined8 *)(param_1 + 0x120) = uVar8; + } + } + param_3 = (undefined8 *)*param_3; + if (param_3 == (undefined8 *)0x0) { + return; + } + iVar2 = *(int *)(param_1 + 0x130); + } + } + return; +} + + +================================================================== + +### FUNC 00431368 (712 bytes) name=FUN_00431368 + +void FUN_00431368(undefined1 *param_1,undefined4 param_2,long *param_3,long *param_4) + +{ + long *plVar1; + long lVar2; + long lVar3; + + plVar1 = param_4; + if (param_4 != (long *)0x0) { + do { + if ((int)plVar1[2] == 0) { + /* try { // try from 00431430 to 00531433 has its CatchHandler @ 0043144c */ + /* try { // try from 0043143c to 0053143f has its CatchHandler @ 00430f38 */ + if (*(int *)plVar1[1] == 0x2a) { + FUN_00431054(param_1,param_2,param_4,0); + /* try { // try from 004314c8 to 0053169f has its CatchHandler @ 00431460 */ + lVar3 = *(long *)(param_1 + 0x100); + goto joined_r0x004314d0; + } + lVar3 = *(long *)(param_1 + 0x100); + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + *param_1 = 0x20; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; +LAB_0043146c: + lVar3 = lVar2 + 1; + } + else { + /* catch() { ... } // from try @ 00431430 with catch @ 0043144c */ + lVar2 = lVar3 + 1; + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x20; + /* try { // try from 0043145c to 0053145f has its CatchHandler @ 00430f38 */ + param_1[0x108] = 0x20; + /* catch() { ... } // from try @ 004314c8 with catch @ 00431460 + catch() { ... } // from try @ 004316e0 with catch @ 00431460 + catch() { ... } // from try @ 0043174c with catch @ 00431460 + catch() { ... } // from try @ 004317ac with catch @ 00431460 + catch() { ... } // from try @ 004317c4 with catch @ 00431460 + catch() { ... } // from try @ 004317d8 with catch @ 00431460 + catch() { ... } // from try @ 004317ec with catch @ 00431460 */ + if (lVar2 != 0xff) goto LAB_0043146c; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x28; + param_1[0x108] = 0x28; + FUN_00431054(param_1,param_2,param_4,0); + lVar3 = *(long *)(param_1 + 0x100); + lVar2 = lVar3 + 1; + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x29; + param_1[0x108] = 0x29; + goto LAB_004313b4; + } + plVar1 = (long *)*plVar1; + } while (plVar1 != (long *)0x0); + FUN_00431054(param_1,param_2,param_4,0); + } + lVar2 = *(long *)(param_1 + 0x100); +LAB_004313b4: + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar3 = 1; + lVar2 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar3 = lVar2 + 1; + } + *(long *)(param_1 + 0x100) = lVar3; + param_1[lVar2] = 0x20; + param_1[0x108] = 0x20; +joined_r0x004314d0: + if (lVar3 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x5b; + param_1[0x108] = 0x5b; + lVar2 = 1; + lVar3 = *param_3; + *(undefined8 *)(param_1 + 0x100) = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + if (lVar3 == 0) goto LAB_0043140c; +LAB_004313f4: + FUN_0042cdc8(param_1,param_2); + lVar2 = *(long *)(param_1 + 0x100); + } + else { + lVar2 = lVar3 + 1; + *(long *)(param_1 + 0x100) = lVar2; + param_1[lVar3] = 0x5b; + param_1[0x108] = 0x5b; + if (*param_3 != 0) goto LAB_004313f4; + } + if (lVar2 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *(undefined8 *)(param_1 + 0x100) = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + *param_1 = 0x5d; + param_1[0x108] = 0x5d; + return; + } +LAB_0043140c: + *(long *)(param_1 + 0x100) = lVar2 + 1; + param_1[lVar2] = 0x5d; + param_1[0x108] = 0x5d; + return; +} + + +================================================================== + +### FUNC 00431630 (688 bytes) name=FUN_00431630 + +void FUN_00431630(undefined1 *param_1,undefined4 param_2,long *param_3,long *param_4) + +{ + int iVar1; + byte bVar2; + long *plVar3; + long lVar4; + long lVar5; + undefined8 uVar6; + + if (param_4 != (long *)0x0) { + iVar1 = (int)param_4[2]; + plVar3 = param_4; +joined_r0x0043165c: + if (iVar1 == 0) { + switch(*(undefined4 *)plVar3[1]) { + case 0x19: + case 0x1a: + case 0x1b: + case 0x21: + case 0x25: + case 0x26: + case 0x2b: + bVar2 = param_1[0x108]; +LAB_00431740: + /* try { // try from 00431744 to 00531747 has its CatchHandler @ 004317dc */ + if (bVar2 == 0x20) goto LAB_004317ac; + lVar5 = *(long *)(param_1 + 0x100); + /* try { // try from 0043174c to 0053176b has its CatchHandler @ 00431460 */ + if (lVar5 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar4 = 1; + lVar5 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar4 = lVar5 + 1; + } + *(long *)(param_1 + 0x100) = lVar4; + param_1[lVar5] = 0x20; + param_1[0x108] = 0x20; + if (lVar4 != 0xff) goto LAB_004317b8; +LAB_00431770: + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,lVar4,*(undefined8 *)(param_1 + 0x118)); + lVar5 = 1; + lVar4 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + break; + default: + plVar3 = (long *)*plVar3; + if (plVar3 != (long *)0x0) goto code_r0x00431698; + goto LAB_004316a0; + case 0x22: + case 0x23: + case 0x24: + bVar2 = param_1[0x108]; + /* try { // try from 004317a4 to 005317a7 has its CatchHandler @ 004317c8 */ + if ((bVar2 & 0xfd) != 0x28) goto LAB_00431740; +LAB_004317ac: + /* try { // try from 004317ac to 005317af has its CatchHandler @ 00431460 */ + lVar4 = *(long *)(param_1 + 0x100); + /* catch() { ... } // from try @ 004316d8 with catch @ 004317b4 */ + if (lVar4 == 0xff) goto LAB_00431770; +LAB_004317b8: + lVar5 = lVar4 + 1; + } + *(long *)(param_1 + 0x100) = lVar5; + /* try { // try from 004317c4 to 005317c7 has its CatchHandler @ 00431460 */ + param_1[lVar4] = 0x28; + /* catch() { ... } // from try @ 004317a4 with catch @ 004317c8 */ + param_1[0x108] = 0x28; + uVar6 = *(undefined8 *)(param_1 + 0x128); + /* try { // try from 004317d8 to 005317db has its CatchHandler @ 00431460 */ + /* catch() { ... } // from try @ 00431744 with catch @ 004317dc */ + *(undefined8 *)(param_1 + 0x128) = 0; + FUN_00431054(param_1,param_2,param_4,0); + lVar4 = *(long *)(param_1 + 0x100); + /* try { // try from 004317ec to 005317ef has its CatchHandler @ 00431460 */ + if (lVar4 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar5 = 1; + lVar4 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar5 = lVar4 + 1; + } + *(long *)(param_1 + 0x100) = lVar5; + param_1[lVar4] = 0x29; + param_1[0x108] = 0x29; + goto joined_r0x004316c4; + } + } +LAB_004316a0: + uVar6 = *(undefined8 *)(param_1 + 0x128); + *(undefined8 *)(param_1 + 0x128) = 0; + FUN_00431054(param_1,param_2,param_4,0); + lVar5 = *(long *)(param_1 + 0x100); +joined_r0x004316c4: + if (lVar5 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *param_1 = 0x28; + param_1[0x108] = 0x28; + lVar4 = 1; + lVar5 = *param_3; + *(undefined8 *)(param_1 + 0x100) = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + if (lVar5 != 0) goto LAB_004316e4; + } + else { + lVar4 = lVar5 + 1; + *(long *)(param_1 + 0x100) = lVar4; + param_1[lVar5] = 0x28; + /* try { // try from 004316d8 to 005316db has its CatchHandler @ 004317b4 */ + param_1[0x108] = 0x28; + /* try { // try from 004316e0 to 0053170b has its CatchHandler @ 00431460 */ + if (*param_3 != 0) { +LAB_004316e4: + FUN_0042cdc8(param_1,param_2); + lVar4 = *(long *)(param_1 + 0x100); + } + if (lVar4 == 0xff) { + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar5 = 1; + lVar4 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + goto LAB_00431700; + } + } + lVar5 = lVar4 + 1; +LAB_00431700: + *(long *)(param_1 + 0x100) = lVar5; + param_1[lVar4] = 0x29; + param_1[0x108] = 0x29; + FUN_00431054(param_1,param_2,param_4,1); + *(undefined8 *)(param_1 + 0x128) = uVar6; + return; +code_r0x00431698: + iVar1 = *(int *)(plVar3 + 2); + goto joined_r0x0043165c; +} + + +================================================================== + +### FUNC 004318e0 (212 bytes) name=FUN_004318e0 + +void FUN_004318e0(undefined1 *param_1,undefined8 param_2,int *param_3) + +{ + undefined1 uVar1; + long lVar2; + long lVar3; + long lVar4; + long lVar5; + + if (*param_3 != 0x31) { + FUN_0042cdc8(); + return; + } + lVar4 = (long)*(int *)(*(long *)(param_3 + 2) + 0x10); + lVar5 = *(long *)(*(long *)(param_3 + 2) + 8); + if (lVar4 != 0) { + lVar3 = 0; + lVar2 = *(long *)(param_1 + 0x100); + do { + while (uVar1 = *(undefined1 *)(lVar5 + lVar3), lVar2 == 0xff) { + lVar3 = lVar3 + 1; + param_1[0xff] = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + *(undefined8 *)(param_1 + 0x100) = 1; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + *param_1 = uVar1; + param_1[0x108] = uVar1; + lVar2 = 1; + if (lVar4 == lVar3) { + return; + } + } + *(long *)(param_1 + 0x100) = lVar2 + 1; + lVar3 = lVar3 + 1; + param_1[lVar2] = uVar1; + param_1[0x108] = uVar1; + lVar2 = lVar2 + 1; + } while (lVar4 != lVar3); + } + return; +} + + +================================================================== + +### FUNC 004319b4 (264 bytes) name=FUN_004319b4 + +void FUN_004319b4(long param_1,undefined4 param_2,uint *param_3) + +{ + uint uVar1; + long lVar2; + long lVar3; + + uVar1 = *param_3; + if ((uVar1 != 0x30 && 1 < uVar1) && (uVar1 != 6)) { + lVar3 = *(long *)(param_1 + 0x100); + if (lVar3 == 0xff) { + *(undefined1 *)(param_1 + 0xff) = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar2 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar2; + *(undefined1 *)(param_1 + lVar3) = 0x28; + *(undefined1 *)(param_1 + 0x108) = 0x28; + FUN_0042cdc8(param_1,param_2,param_3); + lVar3 = *(long *)(param_1 + 0x100); + if (lVar3 == 0xff) { + *(undefined1 *)(param_1 + 0xff) = 0; + (**(code **)(param_1 + 0x110))(param_1,0xff,*(undefined8 *)(param_1 + 0x118)); + lVar2 = 1; + lVar3 = 0; + *(long *)(param_1 + 0x138) = *(long *)(param_1 + 0x138) + 1; + } + else { + lVar2 = lVar3 + 1; + } + *(long *)(param_1 + 0x100) = lVar2; + *(undefined1 *)(param_1 + lVar3) = 0x29; + *(undefined1 *)(param_1 + 0x108) = 0x29; + return; + } + FUN_0042cdc8(param_1); + return; +} + + +================================================================== + +### FUNC 00431abc (1092 bytes) name=FUN_00431abc + +bool FUN_00431abc(char *param_1,code *param_2,undefined8 param_3) + +{ + char *pcVar1; + char cVar2; + long lVar3; + long lVar4; + long lVar5; + code *pcVar6; + char cVar7; + int iVar8; + int iVar9; + size_t sVar10; + undefined8 uVar11; + long lVar12; + undefined4 uVar13; + char *pcVar14; + char *local_1c8; + char *local_1c0; + uint local_1b8; + char *local_1b0; + undefined1 *local_1a8; + undefined4 local_1a0; + int local_19c; + undefined1 *local_198; + undefined4 local_190; + int local_18c; + undefined4 local_188; + undefined8 local_180; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170; + undefined1 auStack_168 [256]; + long local_68; + undefined1 local_60; + code *local_58; + undefined8 local_50; + undefined8 local_48; + undefined8 local_40; + int local_38; + undefined4 local_34; + undefined8 local_30; + undefined1 *local_28; + undefined4 local_20; + uint local_1c; + undefined1 *local_18; + undefined4 local_10; + uint local_c [3]; + + cVar7 = *param_1; + if ((cVar7 == '_') && (param_1[1] == 'Z')) { + iVar9 = 1; + } + else { + iVar9 = 0; + iVar8 = strncmp(param_1,"_GLOBAL_",8); + if ((iVar8 == 0) && ((cVar2 = param_1[8], cVar2 == '_' || cVar2 == '.' || (cVar2 == '$')))) { + cVar2 = param_1[9]; + if (((cVar2 == 'I') || (iVar9 = 0, cVar2 == 'D')) && + ((iVar9 = 0, param_1[10] == '_' && (iVar9 = 2, cVar2 != 'I')))) { + iVar9 = 3; + } + } + } + sVar10 = strlen(param_1); + local_18c = (int)sVar10; + local_19c = local_18c << 1; + local_1c0 = param_1 + sVar10; + lVar3 = -((long)local_19c * 0x18 + 0x10); + local_1a8 = &stack0xfffffffffffffde0 + lVar3; + local_1b8 = 0x11; + lVar4 = -((-(sVar10 >> 0x1f & 1) & 0xfffffff800000000 | (sVar10 & 0xffffffff) << 3) + 0x16 & + 0xfffffffffffffff0); + local_198 = &stack0xfffffffffffffde0 + lVar4 + lVar3; + local_1a0 = 0; + local_190 = 0; + local_188 = 0; + local_180 = 0; + local_178 = 0; + local_174 = 0; + local_170 = 0; + local_1c8 = param_1; + if (iVar9 == 1) { + if (cVar7 != '_') { + return false; + } + if (param_1[1] != 'Z') { + return false; + } + local_1b0 = param_1 + 2; + lVar12 = FUN_004296c0(&local_1c8,1); + if ((local_1b8 & 1) == 0) { +LAB_00431edc: + cVar7 = *local_1b0; + } + else { + while (pcVar1 = local_1b0, cVar7 = *local_1b0, cVar7 == '.') { + cVar7 = local_1b0[1]; + if (((byte)(cVar7 + 0x9fU) < 0x1a) || (cVar7 == '_')) { + cVar7 = local_1b0[2]; + pcVar14 = local_1b0 + 2; + if (0x19 < (byte)(cVar7 + 0x9fU)) goto LAB_00431ed0; + do { + do { + pcVar14 = pcVar14 + 1; + cVar7 = *pcVar14; + /* try { // try from 00431ecc to 00531ecf has its CatchHandler @ 004320f8 */ + } while ((byte)(cVar7 + 0x9fU) < 0x1a); +LAB_00431ed0: + } while (cVar7 == '_'); + } + else { + if (9 < (byte)(cVar7 - 0x30U)) goto LAB_00431edc; + cVar7 = *local_1b0; + pcVar14 = local_1b0; + } + while (cVar7 == '.') { + while( true ) { + if (9 < (byte)(pcVar14[1] - 0x30U)) goto LAB_00431e60; + cVar7 = pcVar14[2]; + pcVar14 = pcVar14 + 2; + if (9 < (byte)(cVar7 - 0x30U)) break; + do { + pcVar14 = pcVar14 + 1; + } while ((byte)(*pcVar14 - 0x30U) < 10); + if (*pcVar14 != '.') goto LAB_00431e60; + } + } +LAB_00431e60: + iVar8 = (int)local_1b0; + local_1b0 = pcVar14; + uVar11 = FUN_00424680(&local_1c8,pcVar1,(int)pcVar14 - iVar8); + lVar12 = FUN_004245e0(&local_1c8,0x4c,lVar12,uVar11); + } + } + } + else if (iVar9 == 0) { + local_1b0 = param_1; + local_1a8 = &stack0xfffffffffffffde0 + lVar3; + local_198 = &stack0xfffffffffffffde0 + lVar4 + lVar3; + lVar12 = FUN_004271e4(&local_1c8); + cVar7 = *local_1b0; + } + else { + pcVar1 = param_1 + 0xb; + uVar13 = 0x43; + if (iVar9 != 2) { + uVar13 = 0x44; + } + if ((param_1[0xb] == '_') && (param_1[0xc] == 'Z')) { + local_1b0 = param_1 + 0xd; + local_1a8 = &stack0xfffffffffffffde0 + lVar3; + local_198 = &stack0xfffffffffffffde0 + lVar4 + lVar3; + uVar11 = FUN_004296c0(&local_1c8,0); + } + else { + local_1b0 = pcVar1; + local_1a8 = &stack0xfffffffffffffde0 + lVar3; + local_198 = &stack0xfffffffffffffde0 + lVar4 + lVar3; + sVar10 = strlen(pcVar1); + uVar11 = FUN_00424680(&local_1c8,pcVar1,sVar10); + } + lVar12 = FUN_004245e0(&local_1c8,uVar13,uVar11,0); + pcVar1 = local_1b0; + sVar10 = strlen(local_1b0); + local_1b0 = pcVar1 + sVar10; + cVar7 = pcVar1[sVar10]; + } + if ((cVar7 == '\0') && (lVar12 != 0)) { + local_68 = 0; + local_60 = 0; + local_48 = 0; + local_40 = 0; + local_34 = 0; + local_30 = 0; + local_38 = 0; + local_28 = (undefined1 *)0x0; + local_20 = 0; + local_1c = 0; + local_18 = (undefined1 *)0x0; + local_10 = 0; + local_c[0] = 0; + local_58 = param_2; + local_50 = param_3; + FUN_00424b50(local_c,&local_1c,lVar12); + local_c[1] = 0; + local_c[2] = 0; + /* catch() { ... } // from try @ 00431d18 with catch @ 00431cb0 + catch() { ... } // from try @ 00431fc0 with catch @ 00431cb0 + catch() { ... } // from try @ 00431ff8 with catch @ 00431cb0 + catch() { ... } // from try @ 00432068 with catch @ 00431cb0 + catch() { ... } // from try @ 004320c8 with catch @ 00431cb0 + catch() { ... } // from try @ 004320e0 with catch @ 00431cb0 + catch() { ... } // from try @ 004320f4 with catch @ 00431cb0 + catch() { ... } // from try @ 00432134 with catch @ 00431cb0 */ + local_c[0] = local_1c * local_c[0]; + lVar5 = -((-(ulong)(local_1c >> 0x1f) & 0xfffffff000000000 | (ulong)local_1c << 4) + 0x10); + local_28 = &stack0xfffffffffffffde0 + lVar5 + lVar4 + lVar3; + local_18 = &stack0xfffffffffffffde0 + + ((lVar5 + lVar4 + lVar3) - + ((-(ulong)(local_c[0] >> 0x1f) & 0xfffffff000000000 | (ulong)local_c[0] << 4) + 0x10) + ); + FUN_0042cdc8(auStack_168,0x11,lVar12); + uVar11 = local_50; + pcVar6 = local_58; + lVar3 = local_68; + auStack_168[local_68] = 0; + (*pcVar6)(auStack_168,lVar3,uVar11); + /* try { // try from 00431d18 to 00531e5f has its CatchHandler @ 00431cb0 */ + return local_38 == 0; + } + return false; +} + + +================================================================== + +### FUNC 00431f00 (348 bytes) name=__cxa_demangle + +char * __cxa_demangle(long param_1,char *param_2,ulong *param_3,undefined4 *param_4) + +{ + int iVar1; + size_t sVar2; + char *__src; + ulong uVar3; + char *local_20; + undefined8 local_18; + ulong local_10; + int local_8; + + if ((param_1 == 0) || ((param_2 != (char *)0x0 && (param_3 == (ulong *)0x0)))) { + if (param_4 == (undefined4 *)0x0) { + /* try { // try from 00431ff8 to 00532027 has its CatchHandler @ 00431cb0 */ + return (char *)0x0; + } + *param_4 = 0xfffffffd; + } + else { + local_20 = (char *)0x0; + local_18 = 0; + local_10 = 0; + local_8 = 0; + iVar1 = FUN_00431abc(param_1,FUN_00424e30,&local_20); + __src = local_20; + if (iVar1 == 0) { + free(local_20); + /* try { // try from 00431ff0 to 00531ff3 has its CatchHandler @ 00432124 */ + if (param_4 == (undefined4 *)0x0) { + return (char *)0x0; + } + } + else { + uVar3 = 1; + if (local_8 == 0) { + uVar3 = local_10; + } + if (local_20 != (char *)0x0) { + if (param_2 == (char *)0x0) { + if (param_3 != (ulong *)0x0) { + *param_3 = uVar3; + } + } + else { + sVar2 = strlen(local_20); + if (sVar2 < *param_3) { + memcpy(param_2,__src,sVar2 + 1); + free(__src); + __src = param_2; + } + else { + free(param_2); + *param_3 = uVar3; + } + } + /* try { // try from 00431fc0 to 00531fc3 has its CatchHandler @ 00431cb0 */ + if (param_4 == (undefined4 *)0x0) { + return __src; + } + *param_4 = 0; + return __src; + } + if (param_4 == (undefined4 *)0x0) { + return (char *)0x0; + } + if (uVar3 == 1) { + *param_4 = 0xffffffff; + return (char *)0x0; + } + } + *param_4 = 0xfffffffe; + } + return (char *)0x0; +} + + +================================================================== + +### FUNC 0043205c (48 bytes) name=__gcclibcxx_demangle_callback + +undefined4 __gcclibcxx_demangle_callback(long param_1,long param_2) + +{ + int iVar1; + undefined4 uVar2; + + /* try { // try from 00432060 to 00532063 has its CatchHandler @ 004320d0 */ + /* try { // try from 00432068 to 00532087 has its CatchHandler @ 00431cb0 */ + if ((param_1 == 0) || (param_2 == 0)) { + uVar2 = 0xfffffffd; + } + else { + iVar1 = FUN_00431abc(); + uVar2 = 0xfffffffe; + if (iVar1 != 0) { + uVar2 = 0; + } + } + return uVar2; +} + + +================================================================== + +### FUNC 0043208c (60 bytes) name=__cxa_current_exception_type + +long __cxa_current_exception_type(void) + +{ + long *plVar1; + long lVar2; + + plVar1 = (long *)__cxa_get_globals(); + plVar1 = (long *)*plVar1; + if (plVar1 == (long *)0x0) { + /* try { // try from 004320c0 to 005320c3 has its CatchHandler @ 004320e4 */ + lVar2 = 0; + } + else { + if ((plVar1[10] & 1U) != 0) { + plVar1 = (long *)(*plVar1 + -0x70); + } + lVar2 = *plVar1; + } + return lVar2; +} + + +================================================================== + +### FUNC 004320c8 (196 bytes) name=FUN_004320c8 + +char * FUN_004320c8(uint param_1) + +{ + /* try { // try from 004320c8 to 005320cb has its CatchHandler @ 00431cb0 */ + /* catch() { ... } // from try @ 004320c0 with catch @ 004320e4 */ + /* try { // try from 004320f4 to 00532123 has its CatchHandler @ 00431cb0 */ + /* catch() { ... } // from try @ 00431ecc with catch @ 004320f8 */ + /* catch() { ... } // from try @ 00432060 with catch @ 004320d0 */ + switch(param_1 & 0x3d) { + case 1: + case 0x11: + /* try { // try from 00432134 to 00532137 has its CatchHandler @ 00431cb0 */ + return "a"; + default: + /* try { // try from 004320e0 to 005320e3 has its CatchHandler @ 00431cb0 */ + return (char *)0x0; + case 5: + case 0x15: + return "ab"; + case 8: + return "r"; + case 9: + case 0x19: + return "a+"; + case 0xc: + return "rb"; + case 0xd: + case 0x1d: + return "a+b"; + case 0x10: + case 0x30: + return "w"; + case 0x14: + case 0x34: + /* catch() { ... } // from try @ 00431ff0 with catch @ 00432124 */ + return "wb"; + case 0x18: + /* catch() { ... } // from try @ 00432190 with catch @ 00432164 + catch() { ... } // from try @ 00432240 with catch @ 00432164 + catch() { ... } // from try @ 00432348 with catch @ 00432164 + catch() { ... } // from try @ 00432490 with catch @ 00432164 + catch() { ... } // from try @ 004324a4 with catch @ 00432164 */ + return "r+"; + case 0x1c: + return "r+b"; + case 0x38: + return "w+"; + case 0x3c: + return "w+b"; + } +} + + +================================================================== + +### FUNC 0043218c (124 bytes) name=FUN_0043218c + +size_t FUN_0043218c(int param_1,void *param_2,size_t param_3) + +{ + ssize_t sVar1; + int *piVar2; + size_t __n; + + /* try { // try from 00432190 to 005321eb has its CatchHandler @ 00432164 */ + __n = param_3; + do { + while (sVar1 = write(param_1,param_2,__n), sVar1 == -1) { + piVar2 = (int *)__errno(); + if (*piVar2 != 4) { + return param_3 - __n; + } + } + __n = __n - sVar1; + param_2 = (void *)((long)param_2 + sVar1); + } while (__n != 0); + return param_3; +} + + +================================================================== + +### FUNC 00432208 (12 bytes) name=FUN_00432208 + +void FUN_00432208(undefined8 *param_1) + +{ + *param_1 = 0; + *(undefined1 *)(param_1 + 1) = 0; + return; +} + + +================================================================== + +### FUNC 00432214 (104 bytes) name=FUN_00432214 + +void FUN_00432214(undefined8 *param_1) + +{ + int iVar1; + int *piVar2; + FILE *__stream; + + __stream = (FILE *)*param_1; + if ((__stream != (FILE *)0x0) && (*(char *)(param_1 + 1) != '\0')) { + /* try { // try from 00432234 to 00532237 has its CatchHandler @ 00432494 */ + piVar2 = (int *)__errno(); + /* try { // try from 00432240 to 005322ef has its CatchHandler @ 00432164 */ + *piVar2 = 0; + iVar1 = fclose(__stream); + while ((iVar1 != 0 && (*piVar2 == 4))) { + iVar1 = fclose((FILE *)*param_1); + } + } + return; +} + + +================================================================== + +### FUNC 0043227c (128 bytes) name=FUN_0043227c + +long * FUN_0043227c(long *param_1,long param_2) + +{ + int iVar1; + int *piVar2; + FILE *__stream; + + if ((param_2 != 0) && (*param_1 == 0)) { + piVar2 = (int *)__errno(); + __stream = (FILE *)0x0; + *piVar2 = 0; + while( true ) { + iVar1 = fflush(__stream); + if (iVar1 == 0) { + *param_1 = param_2; + *(undefined1 *)(param_1 + 1) = 0; + return param_1; + } + if (*piVar2 != 4) break; + __stream = (FILE *)*param_1; + } + } + return (long *)0x0; +} + + +================================================================== + +### FUNC 004322fc (136 bytes) name=FUN_004322fc + +long * FUN_004322fc(long *param_1,int param_2,undefined4 param_3) + +{ + char *__modes; + FILE *__stream; + + __modes = (char *)FUN_004320c8(param_3); + if ((__modes != (char *)0x0) && (*param_1 == 0)) { + __stream = fdopen(param_2,__modes); + /* try { // try from 00432340 to 00532343 has its CatchHandler @ 00432480 */ + *param_1 = (long)__stream; + if (__stream != (FILE *)0x0) { + /* try { // try from 00432348 to 00532463 has its CatchHandler @ 00432164 */ + *(undefined1 *)(param_1 + 1) = 1; + if (param_2 != 0) { + return param_1; + } + setvbuf(__stream,(char *)0x0,2,0); + return param_1; + } + } + return (long *)0x0; +} + + +================================================================== + +### FUNC 00432394 (108 bytes) name=FUN_00432394 + +long * FUN_00432394(long *param_1,char *param_2,undefined4 param_3) + +{ + char *__modes; + FILE *pFVar1; + + __modes = (char *)FUN_004320c8(param_3); + if ((__modes != (char *)0x0) && (*param_1 == 0)) { + pFVar1 = fopen(param_2,__modes); + *param_1 = (long)pFVar1; + if (pFVar1 != (FILE *)0x0) { + *(undefined1 *)(param_1 + 1) = 1; + return param_1; + } + } + return (long *)0x0; +} + + +================================================================== + +### FUNC 00432400 (16 bytes) name=FUN_00432400 + +bool FUN_00432400(long *param_1) + +{ + return *param_1 != 0; +} + + +================================================================== + +### FUNC 00432410 (24 bytes) name=FUN_00432410 + +int FUN_00432410(undefined8 *param_1) + +{ + int iVar1; + + iVar1 = fileno((FILE *)*param_1); + return iVar1; +} + + +================================================================== + +### FUNC 00432438 (8 bytes) name=FUN_00432438 + +undefined8 FUN_00432438(undefined8 *param_1) + +{ + return *param_1; +} + + +================================================================== + +### FUNC 00432440 (128 bytes) name=FUN_00432440 + +long * FUN_00432440(long *param_1) + +{ + int iVar1; + int *piVar2; + FILE *__stream; + + __stream = (FILE *)*param_1; + if (__stream == (FILE *)0x0) { + /* try { // try from 00432490 to 00532493 has its CatchHandler @ 00432164 */ + /* catch() { ... } // from try @ 00432234 with catch @ 00432494 */ + return (long *)0x0; + } + if ((char)param_1[1] != '\0') { + piVar2 = (int *)__errno(); + *piVar2 = 0; + while (iVar1 = fclose(__stream), iVar1 != 0) { + /* catch() { ... } // from try @ 00432340 with catch @ 00432480 */ + if (*piVar2 != 4) { + *param_1 = 0; + return (long *)0x0; + } + __stream = (FILE *)*param_1; + } + } + *param_1 = 0; + /* try { // try from 004324a4 to 005324a7 has its CatchHandler @ 00432164 */ + /* catch() { ... } // from try @ 004324e8 with catch @ 004324a8 + catch() { ... } // from try @ 00432584 with catch @ 004324a8 + catch() { ... } // from try @ 004329a0 with catch @ 004324a8 */ + return param_1; +} + + +================================================================== + +### FUNC 004324c0 (116 bytes) name=FUN_004324c0 + +ssize_t FUN_004324c0(undefined8 *param_1,void *param_2,size_t param_3) + +{ + int __fd; + ssize_t sVar1; + int *piVar2; + + do { + __fd = fileno((FILE *)*param_1); + /* try { // try from 004324e8 to 0053252b has its CatchHandler @ 004324a8 */ + sVar1 = read(__fd,param_2,param_3); + if (sVar1 != -1) { + return sVar1; + } + piVar2 = (int *)__errno(); + } while (*piVar2 == 4); + return -1; +} + + +================================================================== + +### FUNC 00432544 (48 bytes) name=FUN_00432544 + +void FUN_00432544(undefined8 *param_1,undefined8 param_2,undefined8 param_3) + +{ + int iVar1; + + iVar1 = fileno((FILE *)*param_1); + FUN_0043218c(iVar1,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00432584 (220 bytes) name=FUN_00432584 + +long FUN_00432584(undefined8 param_1,void *param_2,size_t param_3,long param_4,long param_5) + +{ + long lVar1; + long lVar2; + int __fd; + ssize_t sVar3; + long lVar4; + int *piVar5; + long lVar6; + iovec local_20; + long local_10; + long local_8; + + /* try { // try from 00432584 to 005328bf has its CatchHandler @ 004324a8 */ + lVar1 = param_3 + param_5; + __fd = FUN_00432410(); + lVar6 = lVar1; + local_10 = param_4; + local_8 = param_5; + do { + while( true ) { + local_20.iov_base = param_2; + local_20.iov_len = param_3; + sVar3 = writev(__fd,&local_20,2); + lVar4 = (long)(int)sVar3; + if (lVar4 == -1) break; + lVar6 = lVar6 - lVar4; + param_2 = (void *)((long)param_2 + lVar4); + if (lVar6 == 0) goto LAB_00432644; + lVar2 = lVar4 - param_3; + param_3 = param_3 - lVar4; + if (-1 < lVar2) { + lVar4 = FUN_0043218c(__fd,param_4 + lVar2,param_5 - lVar2); + return lVar1 - (lVar6 - lVar4); + } + } + piVar5 = (int *)__errno(); + } while (*piVar5 == 4); +LAB_00432644: + return lVar1 - lVar6; +} + + +================================================================== + +### FUNC 00432660 (52 bytes) name=FUN_00432660 + +void FUN_00432660(undefined8 *param_1,__off_t param_2,int param_3) + +{ + int __fd; + + __fd = fileno((FILE *)*param_1); + lseek(__fd,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 004326a8 (8 bytes) name=FUN_004326a8 + +int FUN_004326a8(undefined8 *param_1) + +{ + int iVar1; + + iVar1 = fflush((FILE *)*param_1); + return iVar1; +} + + +================================================================== + +### FUNC 004326b0 (200 bytes) name=FUN_004326b0 + +long FUN_004326b0(undefined8 *param_1) + +{ + int iVar1; + __off_t _Var2; + int local_8c; + pollfd local_88; + uint local_70; + long local_50; + + local_8c = 0; + iVar1 = fileno((FILE *)*param_1); + iVar1 = ioctl(iVar1,0x541b,&local_8c); + if ((iVar1 == 0) && (-1 < local_8c)) { + return (long)local_8c; + } + local_88.fd = FUN_00432410(param_1); + local_88.events = 1; + iVar1 = poll(&local_88,1,0); + if (0 < iVar1) { + iVar1 = FUN_00432410(param_1); + iVar1 = fstat(iVar1,(stat *)&stack0xffffffffffffff80); + if ((iVar1 == 0) && ((local_70 & 0xf000) == 0x8000)) { + iVar1 = FUN_00432410(param_1); + _Var2 = lseek(iVar1,0,1); + return local_50 - _Var2; + } + } + return 0; +} + + +================================================================== + +### FUNC 00432788 (316 bytes) name=__getf2 + +undefined4 __getf2(undefined1 param_1 [16],undefined1 param_2 [16]) + +{ + undefined8 uVar1; + bool bVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + bool bVar6; + undefined4 uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + ulong uVar12; + ulong uVar13; + + uVar13 = param_2._8_8_; + uVar12 = param_2._0_8_; + uVar11 = param_1._8_8_; + uVar10 = param_1._0_8_; + uVar1 = fpcr; + uVar8 = uVar11 >> 0x30 & 0x7fff; + uVar4 = uVar11 & 0xffffffffffff; + uVar5 = uVar13 & 0xffffffffffff; + uVar9 = uVar13 >> 0x30 & 0x7fff; + if (uVar8 == 0x7fff) { + if (uVar4 != 0 || uVar10 != 0) goto LAB_00432894; + bVar6 = false; + if (uVar9 == 0x7fff) goto LAB_004327e4; + } + else { + if (uVar9 == 0x7fff) { +LAB_004327e4: + if (uVar5 != 0 || uVar12 != 0) { +LAB_00432894: + __sfp_handle_exceptions(1); + return 0xfffffffe; + } + } + bVar6 = false; + if (uVar8 == 0) { + bVar6 = uVar4 == 0 && uVar10 == 0; + } + } + bVar2 = uVar9 == 0 && (uVar5 == 0 && uVar12 == 0); + if ((bool)(bVar2 & bVar6)) { + return 0; + } + uVar3 = uVar13 >> 0x3f; + if (!bVar6) { + uVar3 = -((long)uVar11 >> 0x3f); + if (((bVar2) || (uVar3 != uVar13 >> 0x3f)) || (uVar9 < uVar8)) { +LAB_00432860: + if (uVar3 == 0) { + return 1; + } + return 0xffffffff; + } + if (uVar9 <= uVar8) { + if ((uVar5 < uVar4) || ((uVar4 == uVar5 && (uVar12 < uVar10)))) goto LAB_00432860; + if ((uVar5 <= uVar4) && ((uVar4 != uVar5 || (uVar12 <= uVar10)))) { + return 0; + } + } + } + uVar7 = 0xffffffff; + if (uVar3 != 0) { + uVar7 = 1; + } + return uVar7; +} + + +================================================================== + +### FUNC 004328c4 (316 bytes) name=__lttf2 + +undefined4 __lttf2(undefined1 param_1 [16],undefined1 param_2 [16]) + +{ + undefined8 uVar1; + bool bVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + bool bVar6; + undefined4 uVar7; + ulong uVar8; + ulong uVar9; + ulong uVar10; + ulong uVar11; + ulong uVar12; + ulong uVar13; + + uVar13 = param_2._8_8_; + uVar12 = param_2._0_8_; + uVar11 = param_1._8_8_; + uVar10 = param_1._0_8_; + uVar1 = fpcr; + uVar8 = uVar11 >> 0x30 & 0x7fff; + uVar4 = uVar11 & 0xffffffffffff; + uVar5 = uVar13 & 0xffffffffffff; + uVar9 = uVar13 >> 0x30 & 0x7fff; + if (uVar8 == 0x7fff) { + if (uVar4 != 0 || uVar10 != 0) goto LAB_004329d0; + bVar6 = false; + if (uVar9 == 0x7fff) goto LAB_00432920; + } + else { + if (uVar9 == 0x7fff) { +LAB_00432920: + if (uVar5 != 0 || uVar12 != 0) { +LAB_004329d0: + __sfp_handle_exceptions(1); + return 2; + } + } + bVar6 = false; + if (uVar8 == 0) { + bVar6 = uVar4 == 0 && uVar10 == 0; + } + } + bVar2 = uVar9 == 0 && (uVar5 == 0 && uVar12 == 0); + if ((bool)(bVar2 & bVar6)) { + return 0; + } + uVar3 = uVar13 >> 0x3f; + if (!bVar6) { + uVar3 = -((long)uVar11 >> 0x3f); + if (((bVar2) || (uVar3 != uVar13 >> 0x3f)) || (uVar9 < uVar8)) { +LAB_0043299c: + /* try { // try from 004329a0 to 005329a3 has its CatchHandler @ 004324a8 */ + if (uVar3 == 0) { + return 1; + } + return 0xffffffff; + } + if (uVar9 <= uVar8) { + /* catch() { ... } // from try @ 00432574 with catch @ 00432990 */ + if ((uVar5 < uVar4) || ((uVar4 == uVar5 && (uVar12 < uVar10)))) goto LAB_0043299c; + if ((uVar5 <= uVar4) && ((uVar4 != uVar5 || (uVar12 <= uVar10)))) { + return 0; + } + } + } + uVar7 = 0xffffffff; + if (uVar3 != 0) { + uVar7 = 1; + } + return uVar7; +} + + +================================================================== + +### FUNC 00432a00 (40 bytes) name=FUN_00432a00 + +void FUN_00432a00(byte *param_1,ulong *param_2) + +{ + byte bVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + + uVar3 = 0; + /* try { // try from 00432a04 to 00532a07 has its CatchHandler @ 004329c0 */ + uVar4 = 0; + do { + bVar1 = *param_1; + uVar2 = uVar4 & 0x3f; + uVar4 = (ulong)((int)uVar4 + 7); + uVar3 = uVar3 | ((ulong)bVar1 & 0x7f) << uVar2; + param_1 = param_1 + 1; + } while ((char)bVar1 < '\0'); + *param_2 = uVar3; + return; +} + + +================================================================== + +### FUNC 00432a28 (64 bytes) name=FUN_00432a28 + +void FUN_00432a28(byte *param_1,ulong *param_2) + +{ + uint uVar1; + byte bVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + + uVar4 = 0; + uVar5 = 0; + do { + bVar2 = *param_1; + uVar3 = uVar5 & 0x3f; + uVar1 = (int)uVar5 + 7; + uVar5 = (ulong)uVar1; + uVar4 = uVar4 | ((ulong)bVar2 & 0x7f) << uVar3; + param_1 = param_1 + 1; + } while ((char)bVar2 < '\0'); + /* try { // try from 00432a50 to 00532a53 has its CatchHandler @ 00432aac */ + if ((uVar1 < 0x40) && ((bVar2 >> 6 & 1) != 0)) { + /* try { // try from 00432a58 to 00532a8f has its CatchHandler @ 004329c0 */ + uVar4 = -1L << (uVar5 & 0x3f) | uVar4; + } + *param_2 = uVar4; + return; +} + + +================================================================== + +### FUNC 00432a68 (240 bytes) name=FUN_00432a68 + +ulong * FUN_00432a68(byte param_1,ulong *param_2,ulong *param_3,ulong *param_4) + +{ + ulong *puVar1; + ulong *local_8; + + if (param_1 == 0x50) { + local_8 = (ulong *)((long)param_3 + 7U & 0xfffffffffffffff8); + puVar1 = local_8 + 1; + local_8 = (ulong *)*local_8; + } + else { + /* catch() { ... } // from try @ 00432a50 with catch @ 00432aac */ + /* try { // try from 00432abc to 00532abf has its CatchHandler @ 004329c0 */ + switch(param_1 & 0xf) { + case 0: + case 4: + case 0xc: + puVar1 = param_3 + 1; + local_8 = (ulong *)*param_3; + break; + case 1: + /* catch() { ... } // from try @ 00432cac with catch @ 00432ac8 + catch() { ... } // from try @ 00432d10 with catch @ 00432ac8 + catch() { ... } // from try @ 00432d58 with catch @ 00432ac8 */ + puVar1 = (ulong *)FUN_00432a00(param_3,&local_8); + break; + case 2: + puVar1 = (ulong *)((long)param_3 + 2); + local_8 = (ulong *)(ulong)(ushort)*param_3; + break; + case 3: + puVar1 = (ulong *)((long)param_3 + 4); + local_8 = (ulong *)(ulong)(uint)*param_3; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 9: + puVar1 = (ulong *)FUN_00432a28(param_3,&local_8); + break; + case 10: + puVar1 = (ulong *)((long)param_3 + 2); + local_8 = (ulong *)(long)(short)*param_3; + break; + case 0xb: + puVar1 = (ulong *)((long)param_3 + 4); + local_8 = (ulong *)(long)(int)(uint)*param_3; + } + if (local_8 != (ulong *)0x0) { + if ((param_1 & 0x70) != 0x10) { + param_3 = param_2; + } + local_8 = (ulong *)((long)local_8 + (long)param_3); + if ((char)param_1 < '\0') { + local_8 = (ulong *)*local_8; + } + } + } + *param_4 = (ulong)local_8; + return puVar1; +} + + +================================================================== + +### FUNC 00432b58 (276 bytes) name=FUN_00432b58 + +void FUN_00432b58(void) + +{ + DAT_00547790 = 8; + DAT_00547791 = 8; + DAT_00547792 = 8; + DAT_00547793 = 8; + DAT_00547794 = 8; + DAT_00547795 = 8; + DAT_00547796 = 8; + DAT_00547797 = 8; + DAT_00547798 = 8; + DAT_00547799 = 8; + DAT_0054779a = 8; + DAT_0054779b = 8; + DAT_0054779c = 8; + DAT_0054779d = 8; + DAT_0054779e = 8; + DAT_0054779f = 8; + DAT_005477a0 = 8; + DAT_005477a1 = 8; + DAT_005477a2 = 8; + DAT_005477a3 = 8; + DAT_005477a4 = 8; + DAT_005477a5 = 8; + DAT_005477a6 = 8; + DAT_005477a7 = 8; + DAT_005477a8 = 8; + DAT_005477a9 = 8; + DAT_005477aa = 8; + DAT_005477ab = 8; + DAT_005477ac = 8; + DAT_005477ad = 8; + DAT_005477ae = 8; + DAT_005477af = 8; + DAT_005477d0 = 8; + DAT_005477d1 = 8; + DAT_005477d2 = 8; + DAT_005477d3 = 8; + DAT_005477d4 = 8; + DAT_005477d5 = 8; + DAT_005477d6 = 8; + DAT_005477d7 = 8; + DAT_005477d8 = 8; + DAT_005477d9 = 8; + DAT_005477da = 8; + DAT_005477db = 8; + DAT_005477dc = 8; + DAT_005477dd = 8; + DAT_005477de = 8; + DAT_005477df = 8; + DAT_005477e0 = 8; + DAT_005477e1 = 8; + DAT_005477e2 = 8; + DAT_005477e3 = 8; + DAT_005477e4 = 8; + DAT_005477e5 = 8; + DAT_005477e6 = 8; + DAT_005477e7 = 8; + DAT_005477e8 = 8; + DAT_005477e9 = 8; + DAT_005477ea = 8; + DAT_005477eb = 8; + DAT_005477ec = 8; + DAT_005477ed = 8; + DAT_005477ee = 8; + DAT_005477ef = 8; + DAT_005477f0 = 8; + return; +} + + +================================================================== + +### FUNC 00432c6c (60 bytes) name=FUN_00432c6c + +void FUN_00432c6c(long param_1,undefined8 param_2,undefined8 *param_3) + +{ + if (DAT_005477af == '\b') { + *param_3 = param_2; + if ((*(ulong *)(param_1 + 0x340) >> 0x3e & 1) != 0) { + *(undefined1 *)(param_1 + 0x377) = 0; + } + *(undefined8 **)(param_1 + 0xf8) = param_3; + return; + } + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### FUNC 00432ca8 (88 bytes) name=_Unwind_GetGR + +undefined8 * _Unwind_GetGR(long param_1,int param_2) + +{ + undefined8 *puVar1; + + /* try { // try from 00432cac to 00532caf has its CatchHandler @ 00432ac8 */ + if (param_2 < 0x62) { + puVar1 = *(undefined8 **)(param_1 + (long)param_2 * 8); + if (((*(ulong *)(param_1 + 0x340) >> 0x3e & 1) == 0) || + (*(char *)(param_1 + param_2 + 0x358) == '\0')) { + if ((&DAT_00547790)[param_2] != '\b') goto LAB_00432cb8; + puVar1 = (undefined8 *)*puVar1; + } + return puVar1; + } +LAB_00432cb8: + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### FUNC 00432d00 (268 bytes) name=FUN_00432d00 + +long FUN_00432d00(long param_1,long param_2) + +{ + undefined8 *__dest; + undefined8 *__src; + long lVar1; + undefined1 auStack_8 [8]; + + /* try { // try from 00432d08 to 00532d0b has its CatchHandler @ 00432d48 */ + /* try { // try from 00432d10 to 00532d13 has its CatchHandler @ 00432ac8 */ + if ((((*(ulong *)(param_2 + 0x340) >> 0x3e & 1) == 0) || (*(char *)(param_2 + 0x377) == '\0')) && + (*(long *)(param_2 + 0xf8) == 0)) { + FUN_00432c6c(param_2,*(undefined8 *)(param_2 + 0x310),auStack_8); + } + lVar1 = 0; + while( true ) { + /* catch() { ... } // from try @ 00432d08 with catch @ 00432d48 */ + __dest = *(undefined8 **)(param_1 + lVar1 * 8); + __src = *(undefined8 **)(param_2 + lVar1 * 8); + /* try { // try from 00432d58 to 00532d5b has its CatchHandler @ 00432ac8 */ + if (*(char *)(param_1 + lVar1 + 0x358) != '\0') break; + if ((*(char *)(param_2 + lVar1 + 0x358) == '\0') || (__dest == (undefined8 *)0x0)) { + if ((__dest != (undefined8 *)0x0 && __src != (undefined8 *)0x0) && (__src != __dest)) { + memcpy(__dest,__src,(ulong)(byte)(&DAT_00547790)[lVar1]); + } + } + else { + if ((&DAT_00547790)[lVar1] != '\b') break; + *__dest = __src; + } + lVar1 = lVar1 + 1; + if (lVar1 == 0x61) { + if ((((*(ulong *)(param_1 + 0x340) >> 0x3e & 1) == 0) || + (lVar1 = 0, *(char *)(param_1 + 0x377) == '\0')) && + (lVar1 = 0, *(long *)(param_1 + 0xf8) == 0)) { + lVar1 = _Unwind_GetGR(param_2,0x1f); + lVar1 = (lVar1 - *(long *)(param_1 + 0x310)) + *(long *)(param_2 + 0x350); + } + return lVar1; + } + } + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### FUNC 00432e0c (8 bytes) name=_Unwind_GetCFA + +undefined8 _Unwind_GetCFA(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x310); +} + + +================================================================== + +### FUNC 00432e14 (88 bytes) name=_Unwind_SetGR + +void _Unwind_SetGR(long param_1,int param_2,undefined8 param_3) + +{ + if (0x61 < param_2) { +LAB_00432e24: + /* WARNING: Subroutine does not return */ + abort(); + } + if (((*(ulong *)(param_1 + 0x340) >> 0x3e & 1) == 0) || + (*(char *)(param_1 + param_2 + 0x358) == '\0')) { + if ((&DAT_00547790)[param_2] != '\b') goto LAB_00432e24; + **(undefined8 **)(param_1 + (long)param_2 * 8) = param_3; + } + else { + *(undefined8 *)(param_1 + (long)param_2 * 8) = param_3; + } + return; +} + + +================================================================== + +### FUNC 00432e6c (8 bytes) name=_Unwind_GetIP + +undefined8 _Unwind_GetIP(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x318); +} + + +================================================================== + +### FUNC 00432e74 (20 bytes) name=_Unwind_GetIPInfo + +undefined8 _Unwind_GetIPInfo(long param_1,uint *param_2) + +{ + undefined8 uVar1; + + uVar1 = *(undefined8 *)(param_1 + 0x318); + *param_2 = (uint)((ulong)*(undefined8 *)(param_1 + 0x340) >> 0x3f); + return uVar1; +} + + +================================================================== + +### FUNC 00432e88 (8 bytes) name=_Unwind_SetIP + +void _Unwind_SetIP(long param_1,undefined8 param_2) + +{ + *(undefined8 *)(param_1 + 0x318) = param_2; + return; +} + + +================================================================== + +### FUNC 00432e90 (8 bytes) name=_Unwind_GetLanguageSpecificData + +undefined8 _Unwind_GetLanguageSpecificData(long param_1) + +{ + return *(undefined8 *)(param_1 + 800); +} + + +================================================================== + +### FUNC 00432e98 (8 bytes) name=_Unwind_GetRegionStart + +undefined8 _Unwind_GetRegionStart(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x338); +} + + +================================================================== + +### FUNC 00432ea0 (40 bytes) name=_Unwind_FindEnclosingFunction + +undefined8 _Unwind_FindEnclosingFunction(long param_1) + +{ + long lVar1; + undefined1 auStack_18 [16]; + undefined8 local_8; + + lVar1 = _Unwind_Find_FDE(param_1 + -1,auStack_18); + if (lVar1 == 0) { + local_8 = 0; + } + return local_8; +} + + +================================================================== + +### FUNC 00432ec8 (8 bytes) name=_Unwind_GetDataRelBase + +undefined8 _Unwind_GetDataRelBase(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x330); +} + + +================================================================== + +### FUNC 00432ed0 (8 bytes) name=_Unwind_GetTextRelBase + +undefined8 _Unwind_GetTextRelBase(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x328); +} + + +================================================================== + +### FUNC 00432ed8 (120 bytes) name=FUN_00432ed8 + +undefined8 FUN_00432ed8(byte param_1,undefined8 param_2) + +{ + byte bVar1; + undefined8 uVar2; + + if (param_1 != 0xff) { + bVar1 = param_1 & 0x70; + if (bVar1 == 0x20) { + uVar2 = _Unwind_GetTextRelBase(param_2); + return uVar2; + } + if (bVar1 < 0x21) { + if (((param_1 & 0x70) != 0) && (bVar1 != 0x10)) { +LAB_00432f40: + /* WARNING: Subroutine does not return */ + abort(); + } + } + else { + if (bVar1 == 0x40) { + uVar2 = _Unwind_GetRegionStart(); + return uVar2; + } + if (bVar1 != 0x50) { + if (bVar1 == 0x30) { + uVar2 = _Unwind_GetDataRelBase(); + return uVar2; + } + goto LAB_00432f40; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 00432f50 (1272 bytes) name=FUN_00432f50 + +void FUN_00432f50(byte *param_1,byte *param_2,long param_3,void *param_4) + +{ + byte bVar1; + byte bVar2; + undefined1 uVar3; + undefined1 *puVar4; + byte *pbVar5; + void *pvVar6; + long lVar7; + undefined8 uVar8; + long lVar9; + ulong uVar10; + long lVar11; + ulong uVar12; + long *plVar13; + undefined4 uVar14; + undefined1 *puVar15; + undefined1 *puVar16; + ulong local_18; + long local_10; + long local_8; + + puVar4 = &stack0xffffffffffffff70; + *(undefined8 *)((long)param_4 + 0x620) = 0; + puVar16 = (undefined1 *)0x0; + do { + if ((param_2 <= param_1) || + (uVar12 = *(ulong *)((long)param_4 + 0x648), + (ulong)(*(long *)(param_3 + 0x318) - (*(long *)(param_3 + 0x340) >> 0x3f)) <= uVar12)) { + return; + } + bVar2 = *param_1; + uVar10 = (ulong)bVar2; + pbVar5 = param_1 + 1; + bVar1 = bVar2 & 0xc0; + if (bVar1 == 0x40) { + *(ulong *)((long)param_4 + 0x648) = + uVar12 + (uVar10 & 0x3f) * *(long *)((long)param_4 + 0x660); + goto switchD_00433024_caseD_0; + } + if (bVar1 == 0x80) { + local_18 = uVar10 & 0x3f; +LAB_004330b8: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_10); + lVar11 = *(long *)((long)param_4 + 0x658); + lVar9 = local_10; +LAB_00433278: + if (0x61 < local_18) goto switchD_00433024_caseD_0; + lVar7 = local_18 * 0x10; + *(undefined4 *)((long)param_4 + lVar7 + 8) = 1; + lVar9 = lVar9 * lVar11; + goto LAB_00433414; + } + if (bVar1 == 0xc0) { + *(undefined4 *)((long)param_4 + (uVar10 & 0x3f) * 0x10 + 8) = 0; + goto switchD_00433024_caseD_0; + } + switch(bVar2) { + case 0: + break; + case 1: + uVar3 = *(undefined1 *)((long)param_4 + 0x670); + uVar8 = FUN_00432ed8(uVar3,param_3); + pbVar5 = (byte *)FUN_00432a68(uVar3,uVar8,pbVar5,&local_8); + /* catch() { ... } // from try @ 004330e0 with catch @ 0043305c + catch() { ... } // from try @ 00433168 with catch @ 0043305c + catch() { ... } // from try @ 00433188 with catch @ 0043305c */ + *(long *)((long)param_4 + 0x648) = local_8; + break; + case 2: + *(ulong *)((long)param_4 + 0x648) = + uVar12 + (ulong)param_1[1] * *(long *)((long)param_4 + 0x660); + pbVar5 = param_1 + 2; + break; + case 3: + *(ulong *)((long)param_4 + 0x648) = + uVar12 + (ulong)*(ushort *)(param_1 + 1) * *(long *)((long)param_4 + 0x660); + pbVar5 = param_1 + 3; + break; + case 4: + *(ulong *)((long)param_4 + 0x648) = + uVar12 + (ulong)*(uint *)(param_1 + 1) * *(long *)((long)param_4 + 0x660); + pbVar5 = param_1 + 5; + break; + case 5: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_18); + goto LAB_004330b8; + case 6: + case 8: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_18); + /* try { // try from 004330e0 to 0053311f has its CatchHandler @ 0043305c */ + if (local_18 < 0x62) { + *(undefined4 *)((long)param_4 + local_18 * 0x10 + 8) = 0; + } + break; + case 7: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_18); + if (local_18 < 0x62) { + *(undefined4 *)((long)param_4 + local_18 * 0x10 + 8) = 6; + } + break; + case 9: + uVar8 = FUN_00432a00(pbVar5,&local_18); + pbVar5 = (byte *)FUN_00432a00(uVar8,&local_8); + if (local_18 < 0x62) { + lVar7 = local_18 * 0x10; + *(undefined4 *)((long)param_4 + lVar7 + 8) = 2; + lVar9 = local_8; + goto LAB_00433414; + } + break; + case 10: + /* try { // try from 00433160 to 00533163 has its CatchHandler @ 00433178 */ + if (puVar16 == (undefined1 *)0x0) { + puVar15 = puVar4 + -0x660; + puVar4 = puVar4 + -0x660; + } + else { + /* try { // try from 00433168 to 0053316b has its CatchHandler @ 0043305c */ + puVar15 = puVar4; + puVar4 = puVar16; + puVar16 = *(undefined1 **)(puVar16 + 0x620); + } + /* catch() { ... } // from try @ 00433160 with catch @ 00433178 */ + pvVar6 = memcpy(puVar4,param_4,0x648); + /* try { // try from 00433188 to 0053318b has its CatchHandler @ 0043305c */ + *(void **)((long)param_4 + 0x620) = pvVar6; + puVar4 = puVar15; + break; + case 0xb: + puVar15 = *(undefined1 **)((long)param_4 + 0x620); + memcpy(param_4,puVar15,0x648); + *(undefined1 **)(puVar15 + 0x620) = puVar16; + puVar16 = puVar15; + break; + case 0xc: + uVar8 = FUN_00432a00(pbVar5,&local_10); + *(long *)((long)param_4 + 0x630) = local_10; + pbVar5 = (byte *)FUN_00432a00(uVar8,&local_10); + *(long *)((long)param_4 + 0x628) = local_10; + goto LAB_004331fc; + case 0xd: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_10); + *(long *)((long)param_4 + 0x630) = local_10; +LAB_004331fc: + *(undefined4 *)((long)param_4 + 0x640) = 1; + break; + case 0xe: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_10); + lVar9 = local_10; + goto LAB_004332c8; + case 0xf: + *(byte **)((long)param_4 + 0x638) = pbVar5; + *(undefined4 *)((long)param_4 + 0x640) = 2; + goto LAB_00433378; + case 0x10: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_18); + if (local_18 < 0x62) { + uVar14 = 3; +LAB_00433370: + *(undefined4 *)((long)param_4 + local_18 * 0x10 + 8) = uVar14; + *(byte **)((long)param_4 + local_18 * 0x10) = pbVar5; + } + goto LAB_00433378; + case 0x11: + uVar8 = FUN_00432a00(pbVar5,&local_18); + pbVar5 = (byte *)FUN_00432a28(uVar8,&local_8); + lVar11 = *(long *)((long)param_4 + 0x658); + lVar9 = local_8; + goto LAB_00433278; + case 0x12: + uVar8 = FUN_00432a00(pbVar5,&local_10); + *(long *)((long)param_4 + 0x630) = local_10; + pbVar5 = (byte *)FUN_00432a28(uVar8,&local_8); + *(undefined4 *)((long)param_4 + 0x640) = 1; + goto LAB_004332bc; + case 0x13: + pbVar5 = (byte *)FUN_00432a28(pbVar5,&local_8); +LAB_004332bc: + lVar9 = local_8 * *(long *)((long)param_4 + 0x658); +LAB_004332c8: + *(long *)((long)param_4 + 0x628) = lVar9; + break; + case 0x14: + uVar8 = FUN_00432a00(pbVar5,&local_18); + pbVar5 = (byte *)FUN_00432a00(uVar8,&local_10); + lVar11 = *(long *)((long)param_4 + 0x658); + lVar9 = local_10; + goto LAB_00433328; + case 0x15: + uVar8 = FUN_00432a00(pbVar5,&local_18); + pbVar5 = (byte *)FUN_00432a28(uVar8,&local_8); + lVar11 = *(long *)((long)param_4 + 0x658); + lVar9 = local_8; +LAB_00433328: + if (local_18 < 0x62) { + lVar7 = local_18 * 0x10; + *(undefined4 *)((long)param_4 + lVar7 + 8) = 4; + lVar9 = lVar9 * lVar11; +LAB_00433414: + *(long *)((long)param_4 + lVar7) = lVar9; + } + break; + case 0x16: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_18); + if (local_18 < 0x62) { + uVar14 = 5; + goto LAB_00433370; + } +LAB_00433378: + lVar9 = FUN_00432a00(pbVar5,&local_10); + pbVar5 = (byte *)(lVar9 + local_10); + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 0x2d: + lVar9 = 0x10; + local_18 = 0x10; + lVar7 = 0; + plVar13 = (long *)((long)param_4 + 0x100); + do { + *(undefined4 *)(plVar13 + 1) = 1; + lVar9 = lVar9 + 1; + *plVar13 = lVar7; + lVar7 = lVar7 + 8; + plVar13 = plVar13 + 2; + } while (lVar9 != 0x20); + break; + case 0x2e: + pbVar5 = (byte *)FUN_00432a00(pbVar5,&local_10); + *(long *)(param_3 + 0x350) = local_10; + break; + case 0x2f: + uVar8 = FUN_00432a00(pbVar5,&local_18); + pbVar5 = (byte *)FUN_00432a00(uVar8,&local_10); + lVar9 = *(long *)((long)param_4 + 0x658); + if (local_18 < 0x62) { + lVar7 = local_18 * 0x10; + *(undefined4 *)((long)param_4 + lVar7 + 8) = 1; + lVar9 = -(lVar9 * local_10); + goto LAB_00433414; + } + } +switchD_00433024_caseD_0: + param_1 = pbVar5; + } while( true ); +} + + +================================================================== + +### FUNC 00433448 (1060 bytes) name=FUN_00433448 + +undefined8 FUN_00433448(long param_1,long *param_2) + +{ + byte bVar1; + char cVar2; + uint *puVar3; + long lVar4; + int *piVar5; + size_t sVar6; + long *plVar7; + byte *pbVar8; + byte *pbVar9; + long lVar10; + undefined8 uVar11; + ulong uVar12; + int iVar13; + long *plVar14; + long lVar15; + uint *puVar16; + char *pcVar17; + ulong local_18; + long local_10; + long local_8; + char *pcVar18; + + memset(param_2,0,0x680); + *(undefined8 *)(param_1 + 0x350) = 0; + *(undefined8 *)(param_1 + 800) = 0; + if (*(long *)(param_1 + 0x318) == 0) { + return 5; + } + puVar3 = (uint *)_Unwind_Find_FDE(*(long *)(param_1 + 0x318) + + (-1 - (*(long *)(param_1 + 0x340) >> 0x3f)),param_1 + 0x328); + if (puVar3 == (uint *)0x0) { + if (**(int **)(param_1 + 0x318) != -0x2d7fee98) { + return 5; + } + if ((*(int **)(param_1 + 0x318))[1] != -0x2bffffff) { + return 5; + } + lVar15 = *(long *)(param_1 + 0x310); + param_2[0xc6] = 0x1f; + *(undefined4 *)(param_2 + 200) = 1; + lVar10 = lVar15 + 0x130; + param_2[0xc5] = 0x130; + lVar4 = 8; + plVar7 = param_2; + do { + *(undefined4 *)(plVar7 + 1) = 1; + *plVar7 = lVar4; + lVar4 = lVar4 + 8; + plVar7 = plVar7 + 2; + } while (lVar4 != 0x100); + for (piVar5 = (int *)(lVar15 + 0x250); *piVar5 != 0; + piVar5 = (int *)((long)piVar5 + (ulong)(uint)piVar5[1])) { + if (*piVar5 == 0x46508001) { + plVar7 = param_2 + 0x80; + do { + *(undefined4 *)(plVar7 + 1) = 1; + plVar14 = plVar7 + 2; + *plVar7 = (long)piVar5 + ((-0x3f0 - lVar10) - (long)param_2) + (long)plVar7; + plVar7 = plVar14; + } while (plVar14 != param_2 + 0xc0); + } + } + *(undefined1 *)((long)param_2 + 0x673) = 1; + param_2[0x3e] = (lVar15 + 0x230) - lVar10; + *(undefined4 *)(param_2 + 0x3f) = 1; + *(undefined4 *)(param_2 + 0xc1) = 4; + param_2[0xc0] = *(long *)(lVar15 + 0x238) - lVar10; + param_2[0xcd] = 0x60; +LAB_00433844: + uVar11 = 0; + } + else { + puVar16 = (uint *)((long)puVar3 + (4 - (long)(int)puVar3[1])); + param_2[0xc9] = *(long *)(param_1 + 0x338); + pcVar18 = (char *)((long)puVar16 + 9); + sVar6 = strlen(pcVar18); + plVar14 = (long *)(pcVar18 + sVar6 + 1); + plVar7 = plVar14; + if ((*(char *)((long)puVar16 + 9) == 'e') && (*(char *)((long)puVar16 + 10) == 'h')) { + plVar7 = plVar14 + 1; + pcVar18 = (char *)((long)puVar16 + 0xb); + param_2[0xcf] = *plVar14; + } + if ((byte)puVar16[2] < 4) { +LAB_00433620: + uVar11 = FUN_00432a00(plVar7,&local_18); + param_2[0xcc] = local_18; + pbVar8 = (byte *)FUN_00432a28(uVar11,&local_10); + param_2[0xcb] = local_10; + if ((char)puVar16[2] == '\x01') { + pbVar9 = pbVar8 + 1; + uVar12 = (ulong)*pbVar8; + } + else { + pbVar9 = (byte *)FUN_00432a00(pbVar8,&local_18); + uVar12 = local_18; + } + param_2[0xcd] = uVar12; + *(undefined1 *)((long)param_2 + 0x671) = 0xff; + pbVar8 = (byte *)0x0; + if (*pcVar18 == 'z') { + pcVar18 = pcVar18 + 1; + pbVar9 = (byte *)FUN_00432a00(pbVar9,&local_18); + *(undefined1 *)((long)param_2 + 0x672) = 1; + pbVar8 = pbVar9 + local_18; + } + while( true ) { + pcVar17 = pcVar18 + 1; + cVar2 = *pcVar18; + if (cVar2 == '\0') break; + pcVar18 = pcVar17; + if (cVar2 == 'L') { + *(byte *)((long)param_2 + 0x671) = *pbVar9; +LAB_004336dc: + pbVar9 = pbVar9 + 1; + } + else { + if (cVar2 == 'R') { + *(byte *)(param_2 + 0xce) = *pbVar9; + goto LAB_004336dc; + } + if (cVar2 == 'P') { + bVar1 = *pbVar9; + uVar11 = FUN_00432ed8(bVar1,param_1); + pbVar9 = (byte *)FUN_00432a68(bVar1,uVar11,pbVar9 + 1,&local_8); + param_2[0xca] = local_8; + } + else { + if (cVar2 != 'S') goto LAB_0043374c; + *(undefined1 *)((long)param_2 + 0x673) = 1; + } + } + } + if (pbVar8 == (byte *)0x0) { + pbVar8 = pbVar9; + } +LAB_0043374c: + if (pbVar8 != (byte *)0x0) { + FUN_00432f50(pbVar8,(long)puVar16 + (ulong)*puVar16 + 4,param_1,param_2); + if (*(byte *)(param_2 + 0xce) == 0xff) { + iVar13 = 0; + } + else { + switch(*(byte *)(param_2 + 0xce) & 7) { + case 0: + case 4: + iVar13 = 8; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 2: + iVar13 = 2; + break; + case 3: + iVar13 = 4; + } + } + lVar4 = 0; + lVar10 = (long)puVar3 + (ulong)(uint)(iVar13 << 1) + 8; + if (*(char *)((long)param_2 + 0x672) != '\0') { + lVar10 = FUN_00432a00(lVar10,&local_8); + lVar4 = lVar10 + local_8; + } + cVar2 = *(char *)((long)param_2 + 0x671); + if (cVar2 != -1) { + uVar11 = FUN_00432ed8(cVar2,param_1); + lVar10 = FUN_00432a68(cVar2,uVar11,lVar10,&local_8); + *(long *)(param_1 + 800) = local_8; + } + if (lVar4 == 0) { + lVar4 = lVar10; + } + FUN_00432f50(lVar4,(long)puVar3 + (ulong)*puVar3 + 4,param_1,param_2); + goto LAB_00433844; + } + } + else if (((char)*plVar7 == '\b') && (*(char *)((long)plVar7 + 1) == '\0')) { + plVar7 = (long *)((long)plVar7 + 2); + goto LAB_00433620; + } + uVar11 = 3; + } + return uVar11; +} + + +================================================================== + +### FUNC 0043386c (1460 bytes) name=FUN_0043386c + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +ulong FUN_0043386c(byte *param_1,byte *param_2,undefined8 param_3,ulong param_4) + +{ + byte bVar1; + int iVar2; + int iVar3; + ulong uVar4; + undefined8 uVar5; + long lVar6; + ulong uVar7; + ulong *puVar8; + byte *pbVar9; + ulong uVar10; + uint uVar11; + uint uVar12; + int local_220 [2]; + ulong local_218; + ulong local_210; + ulong local_208; + ulong local_200 [64]; + uint uVar13; + + local_200[0] = param_4; + uVar11 = 1; +LAB_004338bc: + pbVar9 = param_1; + if (param_2 <= pbVar9) { + if (uVar11 != 0) { + return local_200[(int)(uVar11 - 1)]; + } +switchD_00433c78_caseD_3: + /* WARNING: Subroutine does not return */ + abort(); + } + bVar1 = *pbVar9; + param_1 = pbVar9 + 1; + uVar12 = (uint)bVar1; + uVar13 = (uint)bVar1; + if (bVar1 < 0x21) { + if (bVar1 < 0x1f) { + if (uVar13 == 0x10) { + param_1 = (byte *)FUN_00432a00(param_1,&local_218); + uVar4 = local_218; + } + else if (uVar13 < 0x11) { + if (uVar13 == 10) { + uVar4 = (ulong)*(ushort *)(pbVar9 + 1); + /* catch() { ... } // from try @ 00433f04 with catch @ 00433ac0 + catch() { ... } // from try @ 0043435c with catch @ 00433ac0 + catch() { ... } // from try @ 00434794 with catch @ 00433ac0 + catch() { ... } // from try @ 00434810 with catch @ 00433ac0 + catch() { ... } // from try @ 0043489c with catch @ 00433ac0 */ +LAB_00433ac8: + param_1 = pbVar9 + 3; + } + else if (uVar13 < 0xb) { + if (uVar12 == 6) goto LAB_00433c04; + if (uVar12 < 7) { + if (bVar1 != 3) goto switchD_00433c78_caseD_3; + param_1 = pbVar9 + 9; + uVar4 = *(ulong *)(pbVar9 + 1); + } + else { + param_1 = pbVar9 + 2; + if (uVar12 == 8) { + uVar4 = (ulong)pbVar9[1]; + } + else { + if (uVar12 != 9) goto switchD_00433c78_caseD_3; + uVar4 = (long)(char)pbVar9[1]; + } + } + } + else { + if (uVar13 == 0xd) { + uVar4 = (ulong)*(int *)(pbVar9 + 1); + } + else { + if (0xd < uVar13) { + param_1 = pbVar9 + 9; + if ((bVar1 == 0xe) || (bVar1 == 0xf)) { + uVar4 = *(ulong *)(pbVar9 + 1); + goto LAB_00433ddc; + } + goto switchD_00433c78_caseD_3; + } + if (bVar1 == 0xb) { + uVar4 = (ulong)*(short *)(pbVar9 + 1); + goto LAB_00433ac8; + } + if (bVar1 != 0xc) goto switchD_00433c78_caseD_3; + uVar4 = (ulong)*(uint *)(pbVar9 + 1); + } + param_1 = pbVar9 + 5; + } + } + else if (uVar13 == 0x15) { + local_210 = (ulong)pbVar9[1]; + param_1 = pbVar9 + 2; + if ((long)(int)(uVar11 - 1) <= (long)local_210) goto switchD_00433c78_caseD_3; + uVar4 = local_200[(long)(int)(uVar11 - 1) - local_210]; + } + else { + if (0x15 < uVar13) { + if (uVar13 == 0x19) goto LAB_00433c04; + if (0x19 < uVar13) goto LAB_00433cc8; + iVar3 = uVar11 - 1; + iVar2 = uVar11 - 2; + if (uVar13 == 0x16) { + if ((int)uVar11 < 2) goto switchD_00433c78_caseD_3; + uVar4 = local_200[iVar3]; + local_200[iVar3] = local_200[iVar2]; + local_200[iVar2] = uVar4; + } + else { + if ((uVar13 != 0x17) || ((int)uVar11 < 3)) goto switchD_00433c78_caseD_3; + uVar4 = local_200[iVar3]; + uVar10 = local_200[(int)(uVar11 - 3)]; + local_200[iVar3] = local_200[iVar2]; + local_200[iVar2] = uVar10; + local_200[(int)(uVar11 - 3)] = uVar4; + } + goto LAB_004338bc; + } + if (uVar13 == 0x12) { + if (uVar11 == 0) goto switchD_00433c78_caseD_3; + iVar3 = uVar11 - 1; + } + else { + if (uVar13 < 0x12) { + param_1 = (byte *)FUN_00432a28(param_1,&local_208); + uVar4 = local_208; + goto LAB_00433ddc; + } + if (uVar13 == 0x13) { + if (uVar11 == 0) goto switchD_00433c78_caseD_3; + uVar11 = uVar11 - 1; + goto LAB_004338bc; + } + if ((uVar13 != 0x14) || ((int)uVar11 < 2)) goto switchD_00433c78_caseD_3; + iVar3 = uVar11 - 2; + } + uVar4 = local_200[iVar3]; + } + } + else { +LAB_00433c04: + if (uVar11 == 0) goto switchD_00433c78_caseD_3; + uVar11 = uVar11 - 1; + puVar8 = (ulong *)local_200[(int)uVar11]; + if (uVar12 == 0x1f) { + uVar4 = -(long)puVar8; + } + else if (uVar12 < 0x20) { + if (uVar12 == 6) { +switchD_00433c78_caseD_8: + uVar4 = *puVar8; + } + else { + if (bVar1 != 0x19) goto switchD_00433c78_caseD_3; + uVar4 = ((ulong)puVar8 ^ (long)puVar8 >> 0x3f) - ((long)puVar8 >> 0x3f); + } + } + else if (uVar12 == 0x23) { + param_1 = (byte *)FUN_00432a00(param_1,&local_218); + uVar4 = (long)puVar8 + local_218; + } + else if (uVar12 == 0x94) { + param_1 = pbVar9 + 2; + switch(pbVar9[1]) { + case 1: + uVar4 = (ulong)(byte)*puVar8; + break; + case 2: + uVar4 = (ulong)(ushort)*puVar8; + break; + default: + goto switchD_00433c78_caseD_3; + case 4: + uVar4 = (ulong)(uint)*puVar8; + break; + case 8: + goto switchD_00433c78_caseD_8; + } + } + else { + if (uVar12 != 0x20) goto switchD_00433c78_caseD_3; + uVar4 = ~(ulong)puVar8; + } + } + } + else if (uVar13 < 0x50) { + if (0x2f < uVar12) { + uVar4 = (ulong)(uVar12 - 0x30); + goto LAB_00433ddc; + } + if (0x27 < uVar12) { + if (uVar13 < 0x2f) { + if (0x28 < uVar13) goto LAB_00433cc8; + if (uVar11 == 0) goto switchD_00433c78_caseD_3; + uVar11 = uVar11 - 1; + param_1 = pbVar9 + 3; + if (local_200[(int)uVar11] != 0) { + param_1 = pbVar9 + 3 + *(short *)(pbVar9 + 1); + } + } + else { + param_1 = pbVar9 + (long)*(short *)(pbVar9 + 1) + 3; + } + goto LAB_004338bc; + } + if ((uVar13 < 0x24) && (0x22 < uVar13)) goto LAB_00433c04; +LAB_00433cc8: + if ((int)uVar11 < 2) goto switchD_00433c78_caseD_3; + uVar12 = uVar11 - 2; + uVar7 = local_200[(int)uVar12]; + uVar10 = local_200[(int)(uVar11 - 1)]; + uVar11 = uVar12; + switch(bVar1) { + case 0x1a: + uVar4 = uVar10 & uVar7; + break; + case 0x1b: + uVar4 = 0; + if (uVar10 != 0) { + uVar4 = (long)uVar7 / (long)uVar10; + } + break; + case 0x1c: + uVar4 = uVar7 - uVar10; + break; + case 0x1d: + uVar4 = 0; + if (uVar10 != 0) { + uVar4 = uVar7 / uVar10; + } + uVar4 = uVar7 - uVar4 * uVar10; + break; + case 0x1e: + uVar4 = uVar10 * uVar7; + break; + default: + goto switchD_00433c78_caseD_3; + case 0x21: + uVar4 = uVar10 | uVar7; + break; + case 0x22: + uVar4 = uVar10 + uVar7; + break; + case 0x24: + uVar4 = uVar7 << (uVar10 & 0x3f); + break; + case 0x25: + uVar4 = uVar7 >> (uVar10 & 0x3f); + break; + case 0x26: + uVar4 = (long)uVar7 >> (uVar10 & 0x3f); + break; + case 0x27: + uVar4 = uVar10 ^ uVar7; + break; + case 0x29: + uVar4 = (ulong)(uVar7 == uVar10); + break; + case 0x2a: + uVar4 = (ulong)((long)uVar10 <= (long)uVar7); + break; + case 0x2b: + uVar4 = (ulong)((long)uVar10 < (long)uVar7); + break; + case 0x2c: + uVar4 = (ulong)((long)uVar7 <= (long)uVar10); + break; + case 0x2d: + uVar4 = (ulong)((long)uVar7 < (long)uVar10); + break; + case 0x2e: + uVar4 = (ulong)(uVar7 != uVar10); + } + } + else { + if (uVar13 != 0x90) { + if (uVar13 < 0x91) { + if (bVar1 < 0x70) { + iVar3 = uVar12 - 0x50; + goto LAB_00433b30; + } + param_1 = (byte *)FUN_00432a28(param_1,&local_210); + lVar6 = _Unwind_GetGR(param_3,uVar13 - 0x70); + } + else { + if (uVar13 == 0x94) goto LAB_00433c04; + if (0x94 < uVar13) { + if (uVar13 != 0x96) { + if (uVar13 == 0xf1) { + bVar1 = pbVar9[1]; + uVar5 = FUN_00432ed8(bVar1,param_3); + param_1 = (byte *)FUN_00432a68(bVar1,uVar5,pbVar9 + 2,&local_208); + uVar4 = local_208; + goto LAB_00433ddc; + } + goto switchD_00433c78_caseD_3; + } + goto LAB_004338bc; + } + if (bVar1 != 0x92) goto switchD_00433c78_caseD_3; + uVar5 = FUN_00432a00(param_1,local_220); + param_1 = (byte *)FUN_00432a28(uVar5,&local_210); + lVar6 = _Unwind_GetGR(param_3,local_220[0]); + } + uVar4 = lVar6 + local_210; + goto LAB_00433ddc; + } + param_1 = (byte *)FUN_00432a00(param_1,local_220); + iVar3 = local_220[0]; +LAB_00433b30: + uVar4 = _Unwind_GetGR(param_3,iVar3); + } +LAB_00433ddc: + if (0x3f < uVar11) goto switchD_00433c78_caseD_3; + local_200[(int)uVar11] = uVar4; + uVar11 = uVar11 + 1; + goto LAB_004338bc; +} + + +================================================================== + +### FUNC 00433e20 (524 bytes) name=FUN_00433e20 + +void FUN_00433e20(void *param_1,long *param_2) + +{ + ulong uVar1; + long lVar2; + long lVar3; + long lVar4; + undefined1 *puVar5; + long *plVar6; + undefined1 auStack_3d0 [8]; + long local_3c8; + long alStack_3c0 [31]; + long local_2c8; + ulong local_80; + char acStack_68 [31]; + char local_49; + + memcpy(alStack_3c0,param_1,0x3c0); + if ((((local_80 >> 0x3e & 1) == 0) || (local_49 == '\0')) && (local_2c8 == 0)) { + FUN_00432c6c(alStack_3c0,*(undefined8 *)((long)param_1 + 0x310),auStack_3d0); + } + if ((*(ulong *)((long)param_1 + 0x340) >> 0x3e & 1) != 0) { + *(undefined1 *)((long)param_1 + 0x377) = 0; + } + lVar2 = param_2[200]; + *(undefined8 *)((long)param_1 + 0xf8) = 0; + if ((int)lVar2 == 1) { + lVar2 = _Unwind_GetGR(alStack_3c0,(int)param_2[0xc6]); + lVar2 = lVar2 + param_2[0xc5]; + } + else { + if ((int)lVar2 != 2) { +LAB_00433f68: + /* WARNING: Subroutine does not return */ + abort(); + } + lVar2 = FUN_00432a00(param_2[199],&local_3c8); + lVar2 = FUN_0043386c(lVar2,lVar2 + local_3c8,alStack_3c0,0); + } + *(long *)((long)param_1 + 0x310) = lVar2; + puVar5 = (undefined1 *)((long)param_1 + 0x358); + lVar4 = 0; + /* try { // try from 00433f04 to 005342c3 has its CatchHandler @ 00433ac0 */ + plVar6 = param_2; + do { + switch((int)plVar6[1]) { + case 1: + lVar3 = lVar2 + *plVar6; + break; + case 2: + if (acStack_68[(int)*plVar6] != '\0') { + lVar3 = _Unwind_GetGR(alStack_3c0); + goto LAB_00433f58; + } + lVar3 = alStack_3c0[(int)*plVar6]; + break; + case 3: + lVar3 = FUN_00432a00(*plVar6,&local_3c8); + lVar3 = FUN_0043386c(lVar3,lVar3 + local_3c8,alStack_3c0,lVar2); + break; + case 4: + lVar3 = lVar2 + *plVar6; + goto LAB_00433f58; + case 5: + lVar3 = FUN_00432a00(*plVar6,&local_3c8); + lVar3 = FUN_0043386c(lVar3,lVar3 + local_3c8,alStack_3c0,lVar2); +LAB_00433f58: + if ((byte)(&DAT_00547790)[lVar4] < 9) { + *puVar5 = 1; + goto LAB_00433fd8; + } + goto LAB_00433f68; + default: + goto switchD_00433f30_default; + } + if ((*(ulong *)((long)param_1 + 0x340) >> 0x3e & 1) != 0) { + *puVar5 = 0; + } +LAB_00433fd8: + *(long *)((long)param_1 + lVar4 * 8) = lVar3; +switchD_00433f30_default: + lVar4 = lVar4 + 1; + plVar6 = plVar6 + 2; + puVar5 = puVar5 + 1; + if (lVar4 == 0x62) { + uVar1 = *(ulong *)((long)param_1 + 0x340) & 0x7fffffffffffffff; + if (*(char *)((long)param_2 + 0x673) != '\0') { + uVar1 = *(ulong *)((long)param_1 + 0x340) | 0x8000000000000000; + } + *(ulong *)((long)param_1 + 0x340) = uVar1; + return; + } + } while( true ); +} + + +================================================================== + +### FUNC 0043402c (220 bytes) name=FUN_0043402c + +void FUN_0043402c(void *param_1,undefined8 param_2,undefined8 param_3) + +{ + int iVar1; + undefined8 unaff_x30; + undefined1 auStack_688 [8]; + undefined1 auStack_680 [1576]; + undefined8 local_58; + undefined8 local_50; + undefined4 local_40; + + memset(param_1,0,0x3c0); + *(undefined8 *)((long)param_1 + 0x318) = unaff_x30; + *(undefined8 *)((long)param_1 + 0x340) = 0x4000000000000000; + iVar1 = FUN_00433448(param_1,auStack_680); + if (iVar1 != 0) { + /* WARNING: Subroutine does not return */ + abort(); + } + if (((PTR_pthread_create_00501cc8 == (undefined *)0x0) || + (iVar1 = pthread_once((pthread_once_t *)&DAT_005477f4,FUN_00432b58), iVar1 != 0)) && + (DAT_00547790 == '\0')) { + FUN_00432b58(); + } + FUN_00432c6c(param_1,param_2,auStack_688); + local_58 = 0; + local_40 = 1; + local_50 = 0x1f; + FUN_00433e20(param_1,auStack_680); + *(undefined8 *)((long)param_1 + 0x318) = param_3; + return; +} + + +================================================================== + +### FUNC 00434108 (76 bytes) name=FUN_00434108 + +void FUN_00434108(long param_1,long param_2) + +{ + undefined8 uVar1; + + FUN_00433e20(); + if (*(int *)(param_2 + *(long *)(param_2 + 0x668) * 0x10 + 8) == 6) { + *(undefined8 *)(param_1 + 0x318) = 0; + } + else { + uVar1 = _Unwind_GetGR(param_1); + *(undefined8 *)(param_1 + 0x318) = uVar1; + } + return; +} + + +================================================================== + +### FUNC 00434154 (192 bytes) name=FUN_00434154 + +undefined8 FUN_00434154(undefined8 *param_1,long param_2) + +{ + int iVar1; + long lVar2; + undefined8 uVar3; + uint uVar4; + undefined1 auStack_680 [1616]; + code *local_30; + + do { + iVar1 = FUN_00433448(param_2,auStack_680); + lVar2 = _Unwind_GetCFA(param_2); + uVar4 = 4; + if (lVar2 + (*(long *)(param_2 + 0x340) >> 0x3f) != param_1[3]) { + uVar4 = 0; + } + if (iVar1 != 0) { + return 2; + } + if (local_30 != (code *)0x0) { + uVar3 = (*local_30)(1,uVar4 | 2,*param_1,param_1,param_2); + if ((int)uVar3 == 7) { + return uVar3; + } + if ((int)uVar3 != 8) { + return 2; + } + } + if (uVar4 != 0) { + /* WARNING: Subroutine does not return */ + abort(); + } + FUN_00434108(param_2,auStack_680); + } while( true ); +} + + +================================================================== + +### FUNC 00434214 (236 bytes) name=FUN_00434214 + +undefined4 FUN_00434214(undefined8 *param_1,undefined8 param_2) + +{ + int iVar1; + int iVar2; + code *pcVar3; + undefined8 uVar4; + undefined4 uVar5; + undefined1 auStack_680 [1616]; + code *local_30; + + pcVar3 = (code *)param_1[2]; + uVar4 = param_1[3]; + while( true ) { + iVar1 = FUN_00433448(param_2,auStack_680); + if ((iVar1 != 5) && (iVar1 != 0)) { + return 2; + } + uVar5 = 0x1a; + if (iVar1 != 5) { + uVar5 = 10; + } + iVar2 = (*pcVar3)(1,uVar5,*param_1,param_1,param_2,uVar4); + if (iVar2 != 0) break; + if (iVar1 == 5) { + return 5; + } + if (local_30 != (code *)0x0) { + iVar1 = (*local_30)(1,10,*param_1,param_1,param_2); + if (iVar1 == 7) { + return 7; + } + if (iVar1 != 8) { + return 2; + } + } + FUN_00434108(param_2,auStack_680); + } + return 2; +} + + +================================================================== + +### FUNC 00434300 (244 bytes) name=__frame_state_for + +long __frame_state_for(long param_1,long param_2) + +{ + char cVar1; + int iVar2; + char *pcVar3; + undefined8 *puVar4; + long lVar5; + char *pcVar6; + undefined1 auStack_a40 [792]; + long local_728; + undefined8 local_700; + undefined8 local_6f0; + undefined8 local_680; + char local_678 [1568]; + undefined8 local_58; + undefined2 local_50; + int local_40; + undefined2 local_18; + undefined8 local_8; + + /* try { // try from 00434320 to 00534323 has its CatchHandler @ 00434798 */ + memset(auStack_a40,0,0x3c0); + /* try { // try from 00434334 to 00534337 has its CatchHandler @ 004348a8 */ + local_700 = 0x4000000000000000; + local_728 = param_1 + 1; + /* try { // try from 00434348 to 0053434b has its CatchHandler @ 004348e4 */ + iVar2 = FUN_00433448(auStack_a40,&local_680); + lVar5 = 0; + /* try { // try from 0043435c to 0053435f has its CatchHandler @ 00433ac0 */ + if ((iVar2 == 0) && (local_40 != 2)) { + pcVar3 = local_678; + pcVar6 = (char *)(param_2 + 0x334); + puVar4 = (undefined8 *)(param_2 + 0x20); + do { + cVar1 = *pcVar3; + *pcVar6 = cVar1; + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + *puVar4 = *(undefined8 *)(pcVar3 + -8); + } + else { + *puVar4 = 0; + } + pcVar3 = pcVar3 + 0x10; + pcVar6 = pcVar6 + 1; + puVar4 = puVar4 + 1; + } while (pcVar3 != (char *)&local_58); + *(undefined8 *)(param_2 + 0x10) = local_58; + *(undefined2 *)(param_2 + 0x330) = local_50; + *(undefined2 *)(param_2 + 0x332) = local_18; + *(undefined8 *)(param_2 + 0x18) = local_6f0; + *(undefined8 *)(param_2 + 8) = local_8; + lVar5 = param_2; + } + return lVar5; +} + + +================================================================== + +### FUNC 004343f4 (4 bytes) name=FUN_004343f4 + +void FUN_004343f4(void) + +{ + return; +} + + +================================================================== + +### FUNC 004343f8 (376 bytes) name=_Unwind_RaiseException + +undefined1 [16] _Unwind_RaiseException(undefined8 *param_1,undefined8 param_2) + +{ + undefined1 auVar1 [16]; + int iVar2; + long lVar3; + undefined1 auStack_e00 [960]; + undefined1 auStack_a40 [784]; + undefined8 local_730; + undefined8 local_728; + long local_700; + undefined1 auStack_680 [1616]; + code *local_30; + + FUN_0043402c(auStack_e00,&stack0x00000000); + memcpy(auStack_a40,auStack_e00,0x3c0); + do { + iVar2 = FUN_00433448(auStack_a40,auStack_680); + if ((iVar2 == 5) || (iVar2 != 0)) goto LAB_00434530; + if (local_30 != (code *)0x0) { + iVar2 = (*local_30)(1,1,*param_1,param_1,auStack_a40); + if (iVar2 == 6) { + param_1[2] = 0; + lVar3 = _Unwind_GetCFA(auStack_a40); + param_1[3] = lVar3 + (local_700 >> 0x3f); + memcpy(auStack_a40,auStack_e00,0x3c0); + iVar2 = FUN_00434154(param_1,auStack_a40); + if (iVar2 == 7) { + FUN_00432d00(auStack_e00,auStack_a40); + FUN_004343f4(local_730,local_728); + } +LAB_00434530: + auVar1._8_8_ = param_2; + auVar1._0_8_ = param_1; + return auVar1; + } + if (iVar2 != 8) goto LAB_00434530; + } + FUN_00434108(auStack_a40,auStack_680); + } while( true ); +} + + +================================================================== + +### FUNC 00434570 (244 bytes) name=_Unwind_ForcedUnwind + +undefined1 [16] _Unwind_ForcedUnwind(long param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined1 auVar1 [16]; + int iVar2; + undefined1 auStack_780 [960]; + undefined1 auStack_3c0 [784]; + undefined8 local_b0; + undefined8 local_a8; + + FUN_0043402c(auStack_780,&stack0x00000000); + memcpy(auStack_3c0,auStack_780,0x3c0); + *(undefined8 *)(param_1 + 0x10) = param_2; + *(undefined8 *)(param_1 + 0x18) = param_3; + iVar2 = FUN_00434214(param_1,auStack_3c0); + if (iVar2 == 7) { + FUN_00432d00(auStack_780,auStack_3c0); + FUN_004343f4(local_b0,local_a8); + } + auVar1._8_8_ = param_2; + auVar1._0_8_ = param_1; + /* try { // try from 00434638 to 0053464b has its CatchHandler @ 004348a0 */ + /* try { // try from 0043465c to 0053465f has its CatchHandler @ 0043483c */ + return auVar1; +} + + +================================================================== + +### FUNC 00434664 (252 bytes) name=_Unwind_Resume + +undefined1 [16] _Unwind_Resume(long param_1,undefined8 param_2) + +{ + undefined1 auVar1 [16]; + int iVar2; + undefined1 auStack_780 [960]; + undefined1 auStack_3c0 [784]; + undefined8 local_b0; + undefined8 local_a8; + + /* try { // try from 00434668 to 005346d7 has its CatchHandler @ 004348a0 */ + FUN_0043402c(auStack_780,&stack0x00000000); + memcpy(auStack_3c0,auStack_780,0x3c0); + if (*(long *)(param_1 + 0x10) == 0) { + iVar2 = FUN_00434154(param_1,auStack_3c0); + } + else { + /* try { // try from 004346e8 to 005346eb has its CatchHandler @ 00434978 */ + iVar2 = FUN_00434214(param_1,auStack_3c0); + } + if (iVar2 != 7) { + /* WARNING: Subroutine does not return */ + abort(); + } + /* try { // try from 004346fc to 005346ff has its CatchHandler @ 00434934 */ + FUN_00432d00(auStack_780,auStack_3c0); + /* try { // try from 00434708 to 0053470b has its CatchHandler @ 004348a0 */ + FUN_004343f4(local_b0,local_a8); + auVar1._8_8_ = param_2; + auVar1._0_8_ = param_1; + return auVar1; +} + + +================================================================== + +### FUNC 00434760 (248 bytes) name=_Unwind_Resume_or_Rethrow + +undefined1 [16] _Unwind_Resume_or_Rethrow(long param_1,undefined8 param_2) + +{ + undefined1 auVar1 [16]; + int iVar2; + undefined1 auStack_780 [960]; + undefined1 auStack_3c0 [784]; + undefined8 local_b0; + undefined8 local_a8; + + /* try { // try from 00434794 to 00534797 has its CatchHandler @ 00433ac0 */ + /* catch() { ... } // from try @ 00434320 with catch @ 00434798 */ + if (*(long *)(param_1 + 0x10) == 0) { + _Unwind_RaiseException(); + /* try { // try from 004347ac to 005347d3 has its CatchHandler @ 004347d4 */ + } + else { + FUN_0043402c(auStack_780,&stack0x00000000); + /* catch() { ... } // from try @ 004347ac with catch @ 004347d4 */ + memcpy(auStack_3c0,auStack_780,0x3c0); + iVar2 = FUN_00434214(param_1,auStack_3c0); + if (iVar2 != 7) { + /* WARNING: Subroutine does not return */ + abort(); + } + /* try { // try from 004347f0 to 00534803 has its CatchHandler @ 00434804 */ + FUN_00432d00(auStack_780,auStack_3c0); + /* catch() { ... } // from try @ 004347f0 with catch @ 00434804 + catch() { ... } // from try @ 00434834 with catch @ 00434804 */ + FUN_004343f4(local_b0,local_a8); + /* try { // try from 00434810 to 00534813 has its CatchHandler @ 00433ac0 */ + /* catch() { ... } // from try @ 004348bc with catch @ 00434814 */ + } + auVar1._8_8_ = param_2; + auVar1._0_8_ = param_1; + /* try { // try from 00434834 to 00534837 has its CatchHandler @ 00434804 */ + /* catch() { ... } // from try @ 0043465c with catch @ 0043483c */ + /* try { // try from 0043484c to 00534873 has its CatchHandler @ 00434874 */ + return auVar1; +} + + +================================================================== + +### FUNC 00434858 (36 bytes) name=_Unwind_DeleteException + +void _Unwind_DeleteException(long param_1) + +{ + if (*(code **)(param_1 + 8) != (code *)0x0) { + (**(code **)(param_1 + 8))(1,param_1); + } + /* catch() { ... } // from try @ 0043484c with catch @ 00434874 */ + return; +} + + +================================================================== + +### FUNC 0043487c (208 bytes) name=_Unwind_Backtrace + +undefined8 _Unwind_Backtrace(code *param_1,undefined8 param_2) + +{ + int iVar1; + int iVar2; + undefined1 auStack_a40 [960]; + undefined1 auStack_680 [1664]; + + /* try { // try from 0043489c to 0053489f has its CatchHandler @ 00433ac0 */ + /* catch() { ... } // from try @ 00434638 with catch @ 004348a0 + catch() { ... } // from try @ 00434668 with catch @ 004348a0 + catch() { ... } // from try @ 00434708 with catch @ 004348a0 */ + /* catch() { ... } // from try @ 00434334 with catch @ 004348a8 */ + /* try { // try from 004348bc to 005348e3 has its CatchHandler @ 00434814 */ + FUN_0043402c(auStack_a40,&stack0x00000000); + /* catch() { ... } // from try @ 00434348 with catch @ 004348e4 */ + while (((iVar1 = FUN_00433448(auStack_a40,auStack_680), iVar1 == 5 || (iVar1 == 0)) && + (iVar2 = (*param_1)(auStack_a40,param_2), iVar2 == 0))) { + /* try { // try from 004348f8 to 0053491f has its CatchHandler @ 00434920 */ + if (iVar1 == 5) { + /* catch() { ... } // from try @ 004348f8 with catch @ 00434920 */ + /* catch() { ... } // from try @ 004346fc with catch @ 00434934 */ + /* try { // try from 00434944 to 0053496b has its CatchHandler @ 0043496c */ + return 5; + } + FUN_00434108(auStack_a40,auStack_680); + } + return 3; +} + + +================================================================== + +### FUNC 0043494c (40 bytes) name=FUN_0043494c + +void FUN_0043494c(byte *param_1,ulong *param_2) + +{ + byte bVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + + uVar3 = 0; + uVar4 = 0; + do { + bVar1 = *param_1; + uVar2 = uVar4 & 0x3f; + uVar4 = (ulong)((int)uVar4 + 7); + uVar3 = uVar3 | ((ulong)bVar1 & 0x7f) << uVar2; + param_1 = param_1 + 1; + } while ((char)bVar1 < '\0'); + /* catch() { ... } // from try @ 00434944 with catch @ 0043496c */ + *param_2 = uVar3; + return; +} + + +================================================================== + +### FUNC 00434974 (64 bytes) name=FUN_00434974 + +void FUN_00434974(byte *param_1,ulong *param_2) + +{ + uint uVar1; + byte bVar2; + ulong uVar3; + ulong uVar4; + ulong uVar5; + + uVar4 = 0; + /* catch() { ... } // from try @ 004346e8 with catch @ 00434978 */ + uVar5 = 0; + do { + bVar2 = *param_1; + uVar3 = uVar5 & 0x3f; + /* try { // try from 00434988 to 005349af has its CatchHandler @ 004349b0 */ + uVar1 = (int)uVar5 + 7; + uVar5 = (ulong)uVar1; + uVar4 = uVar4 | ((ulong)bVar2 & 0x7f) << uVar3; + param_1 = param_1 + 1; + } while ((char)bVar2 < '\0'); + if ((uVar1 < 0x40) && ((bVar2 >> 6 & 1) != 0)) { + uVar4 = -1L << (uVar5 & 0x3f) | uVar4; + } + *param_2 = uVar4; + /* catch() { ... } // from try @ 00434988 with catch @ 004349b0 */ + return; +} + + +================================================================== + +### FUNC 004349b4 (28 bytes) name=FUN_004349b4 + +int FUN_004349b4(undefined8 param_1,long param_2,long param_3) + +{ + int iVar1; + + /* catch() { ... } // from try @ 004349f0 with catch @ 004349c0 + catch() { ... } // from try @ 00434a9c with catch @ 004349c0 + catch() { ... } // from try @ 00435248 with catch @ 004349c0 + catch() { ... } // from try @ 004353c4 with catch @ 004349c0 + catch() { ... } // from try @ 00435728 with catch @ 004349c0 + catch() { ... } // from try @ 00435a5c with catch @ 004349c0 + catch() { ... } // from try @ 00435d48 with catch @ 004349c0 + catch() { ... } // from try @ 004360b0 with catch @ 004349c0 + catch() { ... } // from try @ 004362a8 with catch @ 004349c0 + catch() { ... } // from try @ 00436370 with catch @ 004349c0 + catch() { ... } // from try @ 004363b4 with catch @ 004349c0 + catch() { ... } // from try @ 00436590 with catch @ 004349c0 + catch() { ... } // from try @ 0043669c with catch @ 004349c0 + catch() { ... } // from try @ 00436770 with catch @ 004349c0 + catch() { ... } // from try @ 004368ec with catch @ 004349c0 + catch() { ... } // from try @ 00436914 with catch @ 004349c0 */ + iVar1 = -(uint)(*(ulong *)(param_2 + 8) < *(ulong *)(param_3 + 8)); + if (*(ulong *)(param_3 + 8) < *(ulong *)(param_2 + 8)) { + iVar1 = 1; + } + return iVar1; +} + + +================================================================== + +### FUNC 004349d0 (192 bytes) name=FUN_004349d0 + +void FUN_004349d0(undefined8 param_1,code *param_2,long param_3,ulong param_4,int param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined8 uVar4; + ulong uVar5; + ulong uVar6; + ulong uVar7; + + iVar3 = (int)param_4; + /* try { // try from 004349f0 to 00534a4b has its CatchHandler @ 004349c0 */ + while( true ) { + uVar1 = iVar3 * 2 + 1; + uVar5 = (ulong)uVar1; + if (param_5 <= (int)uVar1) { + return; + } + uVar2 = iVar3 * 2 + 2; + if ((int)uVar2 < param_5) { + uVar5 = -(ulong)(uVar1 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + iVar3 = (*param_2)(param_1,*(undefined8 *)(param_3 + uVar5), + *(undefined8 *)(param_3 + uVar5 + 8)); + if (iVar3 < 0) { + uVar1 = uVar2; + } + uVar5 = (ulong)uVar1; + } + uVar6 = -(param_4 >> 0x1f & 1) & 0xfffffff800000000 | (param_4 & 0xffffffff) << 3; + uVar7 = -(uVar5 >> 0x1f) & 0xfffffff800000000 | uVar5 << 3; + iVar3 = (*param_2)(param_1,*(undefined8 *)(param_3 + uVar6),*(undefined8 *)(param_3 + uVar7)); + if (-1 < iVar3) break; + uVar4 = *(undefined8 *)(param_3 + uVar6); + *(undefined8 *)(param_3 + uVar6) = *(undefined8 *)(param_3 + uVar7); + *(undefined8 *)(param_3 + uVar7) = uVar4; + iVar3 = (int)uVar5; + param_4 = uVar5; + } + return; +} + + +================================================================== + +### FUNC 00434a90 (180 bytes) name=FUN_00434a90 + +void FUN_00434a90(undefined8 param_1,undefined8 param_2,long param_3) + +{ + long lVar1; + long lVar2; + uint uVar3; + undefined8 uVar4; + int iVar5; + ulong uVar6; + ulong uVar7; + long lVar8; + + /* try { // try from 00434a94 to 00534a97 has its CatchHandler @ 004369c0 */ + /* try { // try from 00434a9c to 00534e0b has its CatchHandler @ 004349c0 */ + uVar6 = *(ulong *)(param_3 + 8); + lVar2 = param_3 + 0x10; + uVar7 = uVar6 >> 1; + while( true ) { + uVar3 = (int)uVar7 - 1; + uVar7 = (ulong)uVar3; + if ((int)uVar3 < 0) break; + FUN_004349d0(param_1,param_2,lVar2,uVar3,uVar6 & 0xffffffff); + } + lVar8 = 0; + iVar5 = (int)uVar6 + -1; + lVar1 = lVar2 + (long)iVar5 * 8; + for (; 0 < iVar5; iVar5 = iVar5 + -1) { + uVar4 = *(undefined8 *)(param_3 + 0x10); + *(undefined8 *)(param_3 + 0x10) = *(undefined8 *)(lVar1 + lVar8); + *(undefined8 *)(lVar1 + lVar8) = uVar4; + lVar8 = lVar8 + -8; + FUN_004349d0(param_1,param_2,lVar2,0,iVar5); + } + return; +} + + +================================================================== + +### FUNC 00434b44 (96 bytes) name=FUN_00434b44 + +undefined8 FUN_00434b44(byte param_1) + +{ + undefined8 uVar1; + + if (param_1 == 0xff) { + uVar1 = 0; + } + else { + switch(param_1 & 7) { + case 0: + case 4: + uVar1 = 8; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 2: + uVar1 = 2; + break; + case 3: + uVar1 = 4; + } + } + return uVar1; +} + + +================================================================== + +### FUNC 00434ba4 (96 bytes) name=FUN_00434ba4 + +undefined8 FUN_00434ba4(byte param_1,long param_2) + +{ + byte bVar1; + bool bVar2; + + if (param_1 != 0xff) { + bVar1 = param_1 & 0x70; + if (bVar1 == 0x20) { + return *(undefined8 *)(param_2 + 8); + } + if (bVar1 < 0x21) { + bVar2 = bVar1 == 0x10; + if ((param_1 & 0x70) == 0) { + return 0; + } + } + else { + if (bVar1 == 0x30) { + return *(undefined8 *)(param_2 + 0x10); + } + bVar2 = bVar1 == 0x50; + } + if (!bVar2) { + /* WARNING: Subroutine does not return */ + abort(); + } + } + return 0; +} + + +================================================================== + +### FUNC 00434c04 (96 bytes) name=FUN_00434c04 + +undefined8 FUN_00434c04(byte param_1,long param_2) + +{ + byte bVar1; + bool bVar2; + + if (param_1 != 0xff) { + bVar1 = param_1 & 0x70; + if (bVar1 == 0x20) { + return *(undefined8 *)(param_2 + 8); + } + if (bVar1 < 0x21) { + bVar2 = bVar1 == 0x10; + if ((param_1 & 0x70) == 0) { + return 0; + } + } + else { + if (bVar1 == 0x30) { + return *(undefined8 *)(param_2 + 0x10); + } + bVar2 = bVar1 == 0x50; + } + if (!bVar2) { + /* WARNING: Subroutine does not return */ + abort(); + } + } + return 0; +} + + +================================================================== + +### FUNC 00434c64 (240 bytes) name=FUN_00434c64 + +ulong * FUN_00434c64(byte param_1,ulong *param_2,ulong *param_3,ulong *param_4) + +{ + ulong *puVar1; + ulong *local_8; + + if (param_1 == 0x50) { + local_8 = (ulong *)((long)param_3 + 7U & 0xfffffffffffffff8); + puVar1 = local_8 + 1; + local_8 = (ulong *)*local_8; + } + else { + switch(param_1 & 0xf) { + case 0: + case 4: + case 0xc: + puVar1 = param_3 + 1; + local_8 = (ulong *)*param_3; + break; + case 1: + puVar1 = (ulong *)FUN_0043494c(param_3,&local_8); + break; + case 2: + puVar1 = (ulong *)((long)param_3 + 2); + local_8 = (ulong *)(ulong)(ushort)*param_3; + break; + case 3: + puVar1 = (ulong *)((long)param_3 + 4); + local_8 = (ulong *)(ulong)(uint)*param_3; + break; + default: + /* WARNING: Subroutine does not return */ + abort(); + case 9: + puVar1 = (ulong *)FUN_00434974(param_3,&local_8); + break; + case 10: + puVar1 = (ulong *)((long)param_3 + 2); + local_8 = (ulong *)(long)(short)*param_3; + break; + case 0xb: + puVar1 = (ulong *)((long)param_3 + 4); + local_8 = (ulong *)(long)(int)(uint)*param_3; + } + if (local_8 != (ulong *)0x0) { + if ((param_1 & 0x70) != 0x10) { + param_3 = param_2; + } + local_8 = (ulong *)((long)local_8 + (long)param_3); + if ((char)param_1 < '\0') { + local_8 = (ulong *)*local_8; + } + } + } + *param_4 = (ulong)local_8; + return puVar1; +} + + +================================================================== + +### FUNC 00434d54 (144 bytes) name=FUN_00434d54 + +int FUN_00434d54(long param_1,long param_2,long param_3) + +{ + int iVar1; + ushort uVar2; + undefined8 uVar3; + ulong local_10; + ulong local_8; + + uVar2 = *(ushort *)(param_1 + 0x20) >> 3 & 0xff; + uVar3 = FUN_00434ba4(uVar2,param_1); + FUN_00434c64(uVar2,uVar3,param_2 + 8,&local_10); + FUN_00434c64(*(ushort *)(param_1 + 0x20) >> 3,uVar3,param_3 + 8,&local_8); + iVar1 = -(uint)(local_10 < local_8); + if (local_8 < local_10) { + iVar1 = 1; + } + return iVar1; +} + + +================================================================== + +### FUNC 00434de4 (252 bytes) name=FUN_00434de4 + +byte FUN_00434de4(long param_1) + +{ + char cVar1; + byte bVar2; + size_t sVar3; + undefined8 uVar4; + long lVar5; + byte *pbVar6; + char *pcVar7; + char *pcVar8; + undefined1 auStack_18 [8]; + undefined1 auStack_10 [8]; + undefined1 auStack_8 [8]; + + pcVar8 = (char *)(param_1 + 9); + sVar3 = strlen(pcVar8); + pcVar7 = pcVar8 + sVar3 + 1; + if (3 < *(byte *)(param_1 + 8)) { + if (pcVar8[sVar3 + 1] != '\b') { + return 0xff; + } + if (pcVar7[1] != '\0') { + return 0xff; + } + pcVar7 = pcVar7 + 2; + } + if (*(char *)(param_1 + 9) == 'z') { + uVar4 = FUN_0043494c(pcVar7,auStack_10); + lVar5 = FUN_00434974(uVar4,auStack_8); + if (*(char *)(param_1 + 8) == '\x01') { + lVar5 = lVar5 + 1; + } + else { + lVar5 = FUN_0043494c(lVar5,auStack_10); + } + pbVar6 = (byte *)FUN_0043494c(lVar5,auStack_10); + for (pcVar8 = (char *)(param_1 + 10); cVar1 = *pcVar8, cVar1 != 'R'; pcVar8 = pcVar8 + 1) { + if (cVar1 == 'P') { + pbVar6 = (byte *)FUN_00434c64(*pbVar6 & 0x7f,0,pbVar6 + 1,auStack_18); + } + else { + if (cVar1 != 'L') goto LAB_00434e3c; + pbVar6 = pbVar6 + 1; + } + /* try { // try from 00434ed0 to 00534edf has its CatchHandler @ 004369f4 */ + } + bVar2 = *pbVar6; + } + else { +LAB_00434e3c: + bVar2 = 0; + } + return bVar2; +} + + +================================================================== + +### FUNC 00434ee0 (352 bytes) name=FUN_00434ee0 + +uint * FUN_00434ee0(long param_1,uint *param_2,long param_3) + +{ + undefined8 uVar1; + long lVar2; + ulong uVar3; + undefined8 uVar4; + ulong uVar5; + long lVar6; + ulong uVar7; + ulong local_10; + ulong local_8; + + uVar3 = (ulong)(*(ushort *)(param_1 + 0x20) >> 3); + uVar7 = uVar3 & 0xff; + uVar1 = FUN_00434ba4(uVar3 & 0xff,param_1); + lVar2 = 0; + do { + if (*param_2 == 0) { + return (uint *)0x0; + } + if (param_2[1] != 0) { + lVar6 = lVar2; + if (((*(byte *)(param_1 + 0x20) >> 2 & 1) != 0) && + (lVar6 = (long)param_2 + (4 - (long)(int)param_2[1]), lVar6 != lVar2)) { + uVar3 = FUN_00434de4(lVar6); + uVar7 = uVar3 & 0xffffffff; + uVar1 = FUN_00434ba4(uVar3,param_1); + } + /* try { // try from 00434f74 to 00534f77 has its CatchHandler @ 004369d0 */ + if ((uint)uVar7 == 0) { + local_10 = *(ulong *)(param_2 + 2); + local_8 = *(ulong *)(param_2 + 4); + uVar3 = local_10; + } + else { + uVar4 = FUN_00434c64(uVar7 & 0xff,uVar1,param_2 + 2,&local_10); + FUN_00434c64((uint)uVar7 & 0xf,0,uVar4,&local_8); + uVar3 = FUN_00434b44(uVar7 & 0xff); + uVar5 = 0xffffffffffffffff; + if ((uVar3 & 0xffffffff) < 8) { + uVar5 = (1L << ((uVar3 & 7) << 3)) - 1; + } + uVar3 = uVar5 & local_10; + } + lVar2 = lVar6; + if ((uVar3 != 0) && (param_3 - local_10 < local_8)) { + return param_2; + } + } + param_2 = (uint *)((long)param_2 + (ulong)*param_2 + 4); + } while( true ); +} + + +================================================================== + +### FUNC 00435040 (16 bytes) name=FUN_00435040 + +void FUN_00435040(long param_1) + +{ + /* try { // try from 00435040 to 0053520f has its CatchHandler @ 00436a90 */ + FUN_00434de4((param_1 + 4) - (long)*(int *)(param_1 + 4)); + return; +} + + +================================================================== + +### FUNC 00435050 (1052 bytes) name=FUN_00435050 + +undefined8 FUN_00435050(ulong *param_1,ulong param_2,ulong *param_3) + +{ + long lVar1; + char cVar2; + int iVar3; + bool bVar4; + byte bVar5; + undefined1 uVar6; + undefined8 uVar7; + undefined8 uVar8; + ulong uVar9; + ulong *puVar10; + undefined8 *puVar11; + ulong uVar12; + ulong *puVar13; + ulong uVar14; + ulong *puVar15; + int *piVar16; + ulong uVar17; + int *piVar18; + ulong *puVar19; + int *piVar20; + int *piVar21; + ulong uVar22; + undefined8 local_40; + ulong local_38; + long local_30; + ulong local_28; + ulong local_20; + undefined8 local_18; + undefined8 local_10; + + piVar16 = (int *)param_1[2]; + uVar17 = *param_1; + if ((param_2 < 0x30) || ((int)param_3[5] == 0)) { + if (param_2 < 0x1a) { + return 0xffffffff; + } + } + else { + if ((param_1[4] == DAT_00509648) && (param_1[5] == DAT_005477f8)) { + puVar19 = DAT_00547800; + puVar13 = (ulong *)0x0; + puVar15 = (ulong *)0x0; + while (puVar10 = puVar19, puVar10 != (ulong *)0x0) { + if ((*puVar10 <= *param_3) && (*param_3 < puVar10[1])) { + uVar17 = puVar10[2]; + piVar18 = (int *)puVar10[3]; + if (puVar10 != DAT_00547800) { + puVar15[5] = puVar10[5]; + puVar10[5] = (ulong)DAT_00547800; + DAT_00547800 = puVar10; + } + goto LAB_00435260; + } + puVar13 = puVar10; + if (*puVar10 == 0 && puVar10[1] == 0) break; + puVar19 = (ulong *)puVar10[5]; + if (puVar19 != (ulong *)0x0) { + puVar15 = puVar10; + } + } + goto LAB_00435180; + } + puVar11 = &DAT_00547838; + DAT_00509648 = param_1[4]; + DAT_005477f8 = param_1[5]; + do { + puVar11[-6] = 0; + puVar11[-5] = 0; + puVar11[-1] = puVar11; + puVar11 = puVar11 + 6; + } while (puVar11 != (undefined8 *)0x5479b8); + DAT_00547980 = 0; + DAT_00547800 = &DAT_00547808; + *(undefined4 *)(param_3 + 5) = 0; + } + puVar15 = (ulong *)0x0; + puVar13 = (ulong *)0x0; +LAB_00435180: + uVar22 = (ulong)(ushort)param_1[3]; + uVar9 = 0; + uVar14 = 0; + bVar4 = false; + piVar21 = (int *)0x0; + piVar18 = (int *)0x0; + while (uVar22 = uVar22 - 1, uVar22 != 0xffffffffffffffff) { + iVar3 = *piVar16; + piVar20 = piVar18; + if (iVar3 == 1) { + uVar12 = uVar17 + *(long *)(piVar16 + 4); + if ((uVar12 <= *param_3) && (*param_3 < uVar12 + *(long *)(piVar16 + 10))) { + bVar4 = true; + uVar9 = uVar12 + *(long *)(piVar16 + 10); + uVar14 = uVar12; + } + } + else { + piVar20 = piVar16; + if ((iVar3 != 0x6474e550) && (piVar20 = piVar18, iVar3 == 2)) { + piVar21 = piVar16; + } + } + piVar16 = piVar16 + 0xe; + piVar18 = piVar20; + } + if (!bVar4) { + return 0; + } + if (param_2 >= 0x30) { + if ((puVar15 != (ulong *)0x0) && (puVar13 != (ulong *)0x0)) { + puVar15[5] = puVar13[5]; + puVar13[5] = (ulong)DAT_00547800; + DAT_00547800 = puVar13; + } + puVar13 = DAT_00547800; + /* try { // try from 00435248 to 0053529b has its CatchHandler @ 004349c0 */ + DAT_00547800[2] = uVar17; + puVar13[3] = (ulong)piVar18; + puVar13[4] = (ulong)piVar21; + *puVar13 = uVar14; + puVar13[1] = uVar9; + } +LAB_00435260: + if (piVar18 == (int *)0x0) { + return 0; + } + lVar1 = uVar17 + *(long *)(piVar18 + 4); + if (*(char *)(uVar17 + *(long *)(piVar18 + 4)) != '\x01') { + return 1; + } + uVar6 = *(undefined1 *)(lVar1 + 1); + uVar7 = FUN_00434c04(uVar6,param_3); + uVar7 = FUN_00434c64(uVar6,uVar7,lVar1 + 4,&local_40); + cVar2 = *(char *)(lVar1 + 2); + /* try { // try from 004352a8 to 005352ab has its CatchHandler @ 00436a6c */ + /* try { // try from 004352b4 to 005352b7 has its CatchHandler @ 00436a90 */ + if ((cVar2 != -1) && (*(char *)(lVar1 + 3) == ';')) { + /* try { // try from 004352c0 to 005352c3 has its CatchHandler @ 00436a6c */ + uVar8 = FUN_00434c04(cVar2,param_3); + piVar16 = (int *)FUN_00434c64(cVar2,uVar8,uVar7,&local_38); + if (local_38 == 0) { + return 1; + } + if (((ulong)piVar16 & 3) == 0) { + uVar17 = *param_3; + if (uVar17 < (ulong)(lVar1 + *piVar16)) { + return 1; + } + uVar9 = local_38 - 1; + if (uVar17 < (ulong)(lVar1 + piVar16[uVar9 * 2])) { + uVar14 = 0; + uVar22 = uVar9; + do { + uVar12 = uVar22; + if (uVar12 <= uVar14) { + /* WARNING: Subroutine does not return */ + abort(); + } + uVar9 = uVar12 + uVar14 >> 1; + uVar22 = uVar9; + } while ((uVar17 < (ulong)(lVar1 + piVar16[uVar9 * 2])) || + (uVar14 = uVar9 + 1, uVar22 = uVar12, + (ulong)(lVar1 + piVar16[uVar9 * 2 + 2]) <= uVar17)); + } + uVar17 = lVar1 + piVar16[uVar9 * 2 + 1]; + bVar5 = FUN_00435040(uVar17); + uVar14 = FUN_00434b44(bVar5); + FUN_00434c64(bVar5 & 0xf,0,uVar17 + (uVar14 & 0xffffffff) + 8,&local_30); + iVar3 = piVar16[uVar9 * 2]; + /* try { // try from 004353c4 to 005355cb has its CatchHandler @ 004349c0 */ + if (*param_3 < (ulong)(lVar1 + iVar3 + local_30)) { + param_3[4] = uVar17; + } + param_3[3] = lVar1 + iVar3; + return 1; + } + } + local_28 = param_3[1]; + local_20 = param_3[2]; + local_10 = 4; + local_30 = 0; + local_18 = local_40; + uVar17 = FUN_00434ee0(&local_30,local_40,*param_3); + param_3[4] = uVar17; + if (uVar17 != 0) { + uVar6 = FUN_00435040(); + uVar7 = FUN_00434c04(uVar6,param_3); + FUN_00434c64(uVar6,uVar7,param_3[4] + 8,&local_38); + param_3[3] = local_38; + } + return 1; +} + + +================================================================== + +### FUNC 0043546c (156 bytes) name=FUN_0043546c + +int FUN_0043546c(undefined8 param_1,long param_2,long param_3) + +{ + int iVar1; + undefined1 uVar2; + undefined8 uVar3; + ulong local_10; + ulong local_8; + + uVar2 = FUN_00435040(param_2); + uVar3 = FUN_00434ba4(uVar2,param_1); + FUN_00434c64(uVar2,uVar3,param_2 + 8,&local_10); + uVar2 = FUN_00435040(param_3); + uVar3 = FUN_00434ba4(uVar2,param_1); + FUN_00434c64(uVar2,uVar3,param_3 + 8,&local_8); + iVar1 = -(uint)(local_10 < local_8); + if (local_8 < local_10) { + iVar1 = 1; + } + return iVar1; +} + + +================================================================== + +### FUNC 00435508 (352 bytes) name=FUN_00435508 + +long FUN_00435508(ulong *param_1,uint *param_2) + +{ + ushort uVar1; + uint uVar2; + long lVar3; + ulong uVar4; + ulong uVar5; + long lVar6; + long lVar7; + undefined8 uVar8; + ulong local_8; + + uVar8 = 0; + uVar2 = 0; + lVar7 = 0; + lVar3 = 0; + do { + if (*param_2 == 0) { + return lVar7; + } + if (param_2[1] != 0) { + lVar6 = (long)param_2 + (4 - (long)(int)param_2[1]); + if (lVar6 != lVar3) { + uVar2 = FUN_00434de4(lVar6); + if (uVar2 == 0xff) { + return -1; + } + uVar8 = FUN_00434ba4((char)uVar2,param_1); + uVar1 = (ushort)param_1[4]; + lVar3 = lVar6; + if ((uVar1 & 0x7f8) == 0x7f8) { + *(ushort *)(param_1 + 4) = uVar1 & 0xf800 | uVar1 & 7 | (ushort)((uVar2 & 0xff) << 3); + } + else if ((uVar1 >> 3 & 0xff) != uVar2) { + *(byte *)(param_1 + 4) = (byte)param_1[4] | 4; + } + } + FUN_00434c64(uVar2 & 0xff,uVar8,param_2 + 2,&local_8); + /* try { // try from 004355e8 to 005355f7 has its CatchHandler @ 00436a98 */ + uVar4 = FUN_00434b44(uVar2 & 0xff); + uVar5 = 0xffffffffffffffff; + if ((uVar4 & 0xffffffff) < 8) { + uVar5 = (1L << ((uVar4 & 7) << 3)) - 1; + } + if (((uVar5 & local_8) != 0) && (lVar7 = lVar7 + 1, local_8 < *param_1)) { + *param_1 = local_8; + } + } + param_2 = (uint *)((long)param_2 + (ulong)*param_2 + 4); + } while( true ); +} + + +================================================================== + +### FUNC 00435668 (308 bytes) name=FUN_00435668 + +void FUN_00435668(long param_1,long *param_2,uint *param_3) + +{ + undefined8 uVar1; + long lVar2; + ulong uVar3; + ulong uVar4; + long lVar5; + long lVar6; + ulong uVar7; + ulong local_8; + + uVar3 = (ulong)(*(ushort *)(param_1 + 0x20) >> 3); + uVar7 = uVar3 & 0xff; + uVar1 = FUN_00434ba4(uVar3 & 0xff,param_1); + lVar2 = 0; + for (; *param_3 != 0; param_3 = (uint *)((long)param_3 + (ulong)*param_3 + 4)) { + if (param_3[1] != 0) { + lVar6 = lVar2; + if (((*(byte *)(param_1 + 0x20) >> 2 & 1) != 0) && + (lVar6 = (long)param_3 + (4 - (long)(int)param_3[1]), lVar6 != lVar2)) { + uVar3 = FUN_00434de4(lVar6); + uVar7 = uVar3 & 0xffffffff; + uVar1 = FUN_00434ba4(uVar3,param_1); + } + if ((int)uVar7 == 0) { + uVar3 = *(ulong *)(param_3 + 2); + } + else { + FUN_00434c64(uVar7 & 0xff,uVar1,param_3 + 2,&local_8); + uVar4 = FUN_00434b44(uVar7 & 0xff); + /* try { // try from 00435728 to 0053591b has its CatchHandler @ 004349c0 */ + uVar3 = 0xffffffffffffffff; + if ((uVar4 & 0xffffffff) < 8) { + uVar3 = (1L << ((uVar4 & 7) << 3)) - 1; + } + uVar3 = uVar3 & local_8; + } + lVar2 = lVar6; + if ((uVar3 != 0) && (lVar6 = *param_2, lVar6 != 0)) { + lVar5 = *(long *)(lVar6 + 8); + *(long *)(lVar6 + 8) = lVar5 + 1; + *(uint **)(lVar6 + (lVar5 + 2) * 8) = param_3; + } + } + } + return; +} + + +================================================================== + +### FUNC 0043579c (1392 bytes) name=FUN_0043579c + +long FUN_0043579c(ulong *param_1,ulong param_2) + +{ + ushort uVar1; + ushort uVar2; + ulong *puVar3; + void *pvVar4; + byte bVar5; + uint uVar6; + int iVar7; + undefined8 uVar8; + undefined8 uVar9; + long lVar10; + ulong uVar11; + long *plVar12; + size_t __size; + ulong uVar13; + ulong *puVar14; + ulong *puVar15; + code *pcVar16; + ulong uVar17; + ulong *puVar18; + long lVar19; + ulong uVar20; + ulong *puVar21; + ulong local_18; + ulong *local_10; + void *local_8; + + if (((byte)param_1[4] & 1) != 0) goto LAB_004357c8; + uVar17 = (ulong)((uint)param_1[4] >> 0xb); + if (uVar17 == 0) { + if (((byte)param_1[4] >> 1 & 1) == 0) { + uVar17 = FUN_00435508(param_1,param_1[3]); + if (uVar17 != 0xffffffffffffffff) goto LAB_00435840; +LAB_00435800: + param_1[4] = 0; + *(undefined2 *)(param_1 + 4) = 0x7f8; + param_1[3] = (ulong)&DAT_00547990; + } + else { + for (plVar12 = (long *)param_1[3]; *plVar12 != 0; plVar12 = plVar12 + 1) { + lVar10 = FUN_00435508(param_1); + if (lVar10 == -1) goto LAB_00435800; + uVar17 = uVar17 + lVar10; + } +LAB_00435840: + if (((uint)uVar17 & 0x1fffff) == uVar17) { + uVar6 = (uint)param_1[4] & 0x7ff | (uint)uVar17 << 0xb; + } + else { + uVar6 = (uint)param_1[4] & 0x7ff; + } + *(uint *)(param_1 + 4) = uVar6; + if (uVar17 != 0) goto LAB_00435868; + } + } + else { +LAB_00435868: + __size = (uVar17 + 2) * 8; + local_10 = malloc(__size); + if (local_10 != (ulong *)0x0) { + local_10[1] = 0; + local_8 = malloc(__size); + if (local_8 != (void *)0x0) { + *(undefined8 *)((long)local_8 + 8) = 0; + } + if (((byte)param_1[4] >> 1 & 1) == 0) { + FUN_00435668(param_1,&local_10,param_1[3]); + } + else { + for (plVar12 = (long *)param_1[3]; *plVar12 != 0; plVar12 = plVar12 + 1) { + FUN_00435668(param_1,&local_10); + } + } + pvVar4 = local_8; + puVar3 = local_10; + if ((local_10 != (ulong *)0x0) && (local_10[1] != uVar17)) { +LAB_00435bc0: + /* WARNING: Subroutine does not return */ + abort(); + } + if (((byte)param_1[4] >> 2 & 1) == 0) { + if ((param_1[4] & 0x7f8) == 0) { + pcVar16 = FUN_004349b4; + } + else { + pcVar16 = FUN_00434d54; + } + } + else { + pcVar16 = FUN_0043546c; + } + if (local_8 == (void *)0x0) { + FUN_00434a90(param_1,pcVar16,local_10); + } + else { + puVar18 = local_10 + 2; + uVar20 = local_10[1]; + puVar14 = &DAT_00547988; + puVar21 = puVar18; + for (uVar13 = 0; uVar13 != uVar20; uVar13 = uVar13 + 1) { + /* try { // try from 00435c28 to 00535c37 has its CatchHandler @ 004368f0 */ + while ((puVar14 != &DAT_00547988 && + (iVar7 = (*pcVar16)(param_1,*puVar21,*puVar14), iVar7 < 0))) { + puVar15 = *(ulong **)((long)pvVar4 + (long)puVar14 + (0x10 - (long)puVar18)); + *(undefined8 *)((long)pvVar4 + (long)puVar14 + (0x10 - (long)puVar18)) = 0; + puVar14 = puVar15; + } + *(ulong **)((long)pvVar4 + uVar13 * 8 + 0x10) = puVar14; + puVar14 = puVar21; + puVar21 = puVar21 + 1; + } + lVar10 = 0; + uVar13 = 0; + for (uVar11 = 0; uVar11 != uVar20; uVar11 = uVar11 + 1) { + if (*(long *)((long)pvVar4 + uVar11 * 8 + 0x10) == 0) { + lVar19 = lVar10 + 2; + lVar10 = lVar10 + 1; + *(ulong *)((long)pvVar4 + lVar19 * 8) = *puVar18; + } + else { + lVar19 = uVar13 + 2; + uVar13 = uVar13 + 1; + puVar3[lVar19] = *puVar18; + } + puVar18 = puVar18 + 1; + } + puVar3[1] = uVar13; + *(long *)((long)pvVar4 + 8) = lVar10; + if (*(long *)((long)local_8 + 8) + local_10[1] != uVar17) goto LAB_00435bc0; + FUN_00434a90(param_1,pcVar16); + pvVar4 = local_8; + puVar3 = local_10; + lVar10 = *(long *)((long)local_8 + 8); + if (lVar10 != 0) { + uVar17 = local_10[1]; + lVar19 = lVar10 << 3; + do { + lVar10 = lVar10 + -1; + uVar13 = *(ulong *)((long)pvVar4 + lVar19 + 8); + puVar18 = puVar3 + uVar17; + while (uVar17 != 0) { + iVar7 = (*pcVar16)(param_1,puVar18[1],uVar13); + if (iVar7 < 1) break; + *(ulong *)((long)(puVar18 + -1) + lVar19 + 0x10) = puVar18[1]; + uVar17 = uVar17 - 1; + puVar18 = puVar18 + -1; + } + lVar19 = lVar19 + -8; + puVar3[lVar10 + uVar17 + 2] = uVar13; + } while (lVar10 != 0); + /* try { // try from 00435944 to 00535953 has its CatchHandler @ 00436a48 */ + puVar3[1] = puVar3[1] + *(long *)((long)pvVar4 + 8); + } + free(local_8); + } + *local_10 = param_1[3]; + param_1[3] = (ulong)local_10; + *(byte *)(param_1 + 4) = (byte)param_1[4] | 1; + } + } + if (param_2 < *param_1) { + return 0; + } +LAB_004357c8: + bVar5 = (byte)param_1[4]; + if ((bVar5 & 1) == 0) { + if ((bVar5 >> 1 & 1) == 0) { + lVar10 = FUN_00434ee0(param_1,param_1[3],param_2); + return lVar10; + } + for (plVar12 = (long *)param_1[3]; *plVar12 != 0; plVar12 = plVar12 + 1) { + lVar10 = FUN_00434ee0(param_1,*plVar12,param_2); + if (lVar10 != 0) { + return lVar10; + } + } + } + else if ((bVar5 >> 2 & 1) == 0) { + if (((ushort)param_1[4] & 0x7f8) == 0) { + uVar17 = 0; + uVar13 = *(ulong *)(param_1[3] + 8); + while (uVar20 = uVar13, uVar17 < uVar20) { + uVar13 = uVar20 + uVar17 >> 1; + lVar10 = *(long *)(param_1[3] + (uVar13 + 2) * 8); + /* try { // try from 00435a5c to 00535c07 has its CatchHandler @ 004349c0 */ + if (*(ulong *)(lVar10 + 8) <= param_2) { + if (param_2 < *(ulong *)(lVar10 + 8) + *(long *)(lVar10 + 0x10)) { + return lVar10; + } + uVar17 = uVar13 + 1; + uVar13 = uVar20; + } + } + } + else { + uVar1 = (ushort)param_1[4] >> 3; + uVar2 = uVar1 & 0xff; + uVar20 = param_1[3]; + uVar17 = 0; + uVar8 = FUN_00434ba4(uVar2,param_1); + uVar13 = *(ulong *)(uVar20 + 8); + while (uVar11 = uVar13, uVar17 < uVar11) { + uVar13 = uVar11 + uVar17 >> 1; + lVar10 = *(long *)(uVar20 + (uVar13 + 2) * 8); + uVar9 = FUN_00434c64(uVar2,uVar8,lVar10 + 8,&local_18); + FUN_00434c64(uVar1 & 0xf,0,uVar9,&local_10); + if (local_18 <= param_2) { + if (param_2 < local_18 + (long)local_10) { + return lVar10; + } + uVar17 = uVar13 + 1; + uVar13 = uVar11; + } + } + } + } + else { + uVar20 = param_1[3]; + uVar17 = 0; + uVar13 = *(ulong *)(uVar20 + 8); + while (uVar11 = uVar13, uVar17 < uVar11) { + uVar13 = uVar11 + uVar17 >> 1; + lVar10 = *(long *)(uVar20 + (uVar13 + 2) * 8); + bVar5 = FUN_00435040(lVar10); + uVar8 = FUN_00434ba4(bVar5,param_1); + uVar8 = FUN_00434c64(bVar5,uVar8,lVar10 + 8,&local_18); + FUN_00434c64(bVar5 & 0xf,0,uVar8,&local_10); + if (local_18 <= param_2) { + if (param_2 < local_18 + (long)local_10) { + return lVar10; + } + uVar17 = uVar13 + 1; + uVar13 = uVar11; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 00435d0c (156 bytes) name=__register_frame_info_bases + +int * __register_frame_info_bases + (int *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + uint uVar1; + + if ((param_1 != (int *)0x0) && (*param_1 != 0)) { + *param_2 = 0xffffffffffffffff; + param_2[4] = 0; + param_2[3] = param_1; + /* try { // try from 00435d48 to 00535f7f has its CatchHandler @ 004349c0 */ + param_2[1] = param_3; + param_2[2] = param_4; + *(undefined2 *)(param_2 + 4) = 0x7f8; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_00547998); + } + param_1 = (int *)&DAT_005477f8; + param_2[5] = DAT_005479c0; + DAT_005479c0 = param_2; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + uVar1 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547998); + return (int *)(ulong)uVar1; + } + } + return param_1; +} + + +================================================================== + +### FUNC 00435da8 (12 bytes) name=__register_frame_info + +void __register_frame_info(undefined8 param_1,undefined8 param_2) + +{ + __register_frame_info_bases(param_1,param_2,0,0); + return; +} + + +================================================================== + +### FUNC 00435db4 (64 bytes) name=__register_frame + +void __register_frame(int *param_1) + +{ + void *pvVar1; + + if (*param_1 != 0) { + pvVar1 = malloc(0x30); + __register_frame_info(param_1,pvVar1); + return; + } + return; +} + + +================================================================== + +### FUNC 00435df4 (148 bytes) name=__register_frame_info_table_bases + +int __register_frame_info_table_bases + (undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + int iVar1; + + param_2[4] = 0; + param_2[3] = param_1; + *(undefined1 *)(param_2 + 4) = 2; + param_2[1] = param_3; + *param_2 = 0xffffffffffffffff; + param_2[2] = param_4; + *(ushort *)(param_2 + 4) = *(ushort *)(param_2 + 4) | 0x7f8; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_00547998); + } + param_2[5] = DAT_005479c0; + DAT_005479c0 = param_2; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + iVar1 = pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547998); + return iVar1; + } + return 0x5477f8; +} + + +================================================================== + +### FUNC 00435e88 (12 bytes) name=__register_frame_info_table + +void __register_frame_info_table(undefined8 param_1,undefined8 param_2) + +{ + __register_frame_info_table_bases(param_1,param_2,0,0); + return; +} + + +================================================================== + +### FUNC 00435e94 (44 bytes) name=__register_frame_table + +void __register_frame_table(undefined8 param_1) + +{ + void *pvVar1; + + pvVar1 = malloc(0x30); + __register_frame_info_table(param_1,pvVar1); + return; +} + + +================================================================== + +### FUNC 00435ec0 (256 bytes) name=__deregister_frame_info_bases + +long __deregister_frame_info_bases(int *param_1) + +{ + long *plVar1; + long lVar2; + + if ((param_1 == (int *)0x0) || (*param_1 == 0)) { + return 0; + } + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_00547998); + } + plVar1 = &DAT_005479c0; + for (lVar2 = DAT_005479c0; lVar2 != 0; lVar2 = *(long *)(lVar2 + 0x28)) { + if (*(int **)(lVar2 + 0x18) == param_1) goto LAB_00435f50; + plVar1 = (long *)(lVar2 + 0x28); + } + plVar1 = &DAT_005479c8; + while (lVar2 = *plVar1, lVar2 != 0) { + if ((*(byte *)(lVar2 + 0x20) & 1) == 0) { + if (*(int **)(lVar2 + 0x18) == param_1) goto LAB_00435f50; + } + else if ((int *)**(undefined8 **)(lVar2 + 0x18) == param_1) { + *plVar1 = *(long *)(lVar2 + 0x28); + free(*(void **)(lVar2 + 0x18)); + goto LAB_00435fa4; + } + plVar1 = (long *)(lVar2 + 0x28); + } + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) goto LAB_00435fa0; +LAB_00435f90: + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547998); + if (lVar2 != 0) { + return lVar2; + } +LAB_00435fa0: + /* WARNING: Subroutine does not return */ + /* try { // try from 00435fa0 to 00535faf has its CatchHandler @ 00436948 */ + abort(); +LAB_00435f50: + *plVar1 = *(long *)(lVar2 + 0x28); +LAB_00435fa4: + if (PTR_pthread_create_00501cc8 == (undefined *)0x0) { + return lVar2; + } + goto LAB_00435f90; +} + + +================================================================== + +### FUNC 00435fc0 (4 bytes) name=__deregister_frame_info + +void __deregister_frame_info(void) + +{ + (*(code *)PTR___deregister_frame_info_bases_004ffd80)(); + return; +} + + +================================================================== + +### FUNC 00435fc4 (36 bytes) name=__deregister_frame + +void __deregister_frame(int *param_1) + +{ + void *__ptr; + + if (*param_1 != 0) { + __ptr = (void *)__deregister_frame_info(); + free(__ptr); + return; + } + return; +} + + +================================================================== + +### FUNC 00435fe8 (452 bytes) name=_Unwind_Find_FDE + +long _Unwind_Find_FDE(ulong param_1,ulong *param_2) + +{ + ulong uVar1; + undefined1 uVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + ulong *puVar6; + ulong *puVar7; + ulong *puVar8; + ulong local_30; + ulong local_28; + ulong local_20; + ulong local_18; + long local_10; + undefined4 local_8; + + puVar8 = DAT_005479c8; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_00547998); + puVar8 = DAT_005479c8; + } + for (; puVar8 != (ulong *)0x0; puVar8 = (ulong *)puVar8[5]) { + if (*puVar8 <= param_1) { + lVar4 = FUN_0043579c(puVar8,param_1); + if (lVar4 != 0) goto LAB_00436184; + break; + } + } + do { + puVar8 = DAT_005479c0; + if (DAT_005479c0 == (ulong *)0x0) { + lVar4 = 0; + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) goto LAB_004360c4; + goto LAB_00436128; + } + DAT_005479c0 = (ulong *)DAT_005479c0[5]; + lVar4 = FUN_0043579c(puVar8,param_1); + puVar7 = (ulong *)&DAT_005479c8; + for (puVar6 = DAT_005479c8; (puVar6 != (ulong *)0x0 && (*puVar8 <= *puVar6)); + puVar6 = (ulong *)puVar6[5]) { + puVar7 = puVar6 + 5; + } + puVar8[5] = (ulong)puVar6; + *puVar7 = (ulong)puVar8; + /* try { // try from 004360b0 to 0053611f has its CatchHandler @ 004349c0 */ + } while (lVar4 == 0); +LAB_00436184: + if (PTR_pthread_create_00501cc8 != (undefined *)0x0) { +LAB_004360c4: + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00547998); + if (lVar4 == 0) { +LAB_00436128: + local_8 = 1; + local_28 = 0; + local_20 = 0; + local_18 = 0; + local_10 = 0; + local_30 = param_1; + iVar3 = dl_iterate_phdr(FUN_00435050,&local_30); + if (iVar3 < 0) { + return 0; + } + if (local_10 == 0) { + return 0; + } + *param_2 = local_28; + param_2[1] = local_20; + local_30 = local_18; + goto LAB_0043617c; + } + } + *param_2 = puVar8[1]; + uVar1 = puVar8[4]; + param_2[1] = puVar8[2]; + uVar2 = (undefined1)((ushort)puVar8[4] >> 3); + if (((byte)uVar1 >> 2 & 1) != 0) { + uVar2 = FUN_00435040(lVar4); + } + uVar5 = FUN_00434ba4(uVar2,puVar8); + FUN_00434c64(uVar2,uVar5,lVar4 + 8,&local_30); + local_10 = lVar4; +LAB_0043617c: + param_2[2] = local_30; + return local_10; +} + + +================================================================== + +### FUNC 004361ac (96 bytes) name=__sfp_handle_exceptions + +ulong __sfp_handle_exceptions(ulong param_1) + +{ + undefined8 uVar1; + uint uVar2; + + uVar2 = (uint)param_1; + if ((param_1 & 1) != 0) { + uVar1 = fpsr; + } + if ((uVar2 >> 1 & 1) != 0) { + uVar1 = fpsr; + } + if ((uVar2 >> 2 & 1) != 0) { + uVar1 = fpsr; + } + if ((uVar2 >> 3 & 1) != 0) { + uVar1 = fpsr; + } + if ((uVar2 >> 4 & 1) != 0) { + param_1 = fpsr; + } + return param_1; +} + + +================================================================== + +### FUNC 00548000 (1 bytes) name=strerror + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strerror(int __errnum) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548008 (1 bytes) name=memcpy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memcpy(void *__dest,void *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548010 (1 bytes) name=fopen + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +FILE * fopen(char *__filename,char *__modes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548018 (1 bytes) name=gettimeofday + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int gettimeofday(timeval *__tv,__timezone_ptr_t __tz) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548020 (1 bytes) name=cos + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double cos(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548028 (1 bytes) name=writev + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t writev(int __fd,iovec *__iovec,int __count) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548030 (1 bytes) name=memchr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memchr(void *__s,int __c,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548038 (1 bytes) name=gzclose + +/* WARNING: Control flow encountered bad instruction data */ + +void gzclose(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548040 (1 bytes) name=asprintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int asprintf(char **__ptr,char *__fmt,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548048 (1 bytes) name=opendir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +DIR * opendir(char *__name) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548050 (1 bytes) name=__ctype_get_mb_cur_max + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t __ctype_get_mb_cur_max(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548058 (1 bytes) name=sin + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double sin(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548060 (1 bytes) name=logf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float logf(float __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548068 (1 bytes) name=strncpy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strncpy(char *__dest,char *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548070 (1 bytes) name=usleep + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int usleep(__useconds_t __useconds) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548078 (1 bytes) name=towlower + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t towlower(wint_t __wc) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548080 (1 bytes) name=mbrtowc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t mbrtowc(wchar_t *__pwc,char *__s,size_t __n,mbstate_t *__p) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548088 (1 bytes) name=btowc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t btowc(int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548090 (1 bytes) name=getwc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t getwc(__FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548098 (1 bytes) name=pthread_mutex_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_destroy(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480a0 (1 bytes) name=close + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int close(int __fd) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480a8 (1 bytes) name=pthread_mutexattr_settype + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_settype(pthread_mutexattr_t *__attr,int __kind) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480b0 (1 bytes) name=wmemmove + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemmove(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480b8 (1 bytes) name=getenv + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * getenv(char *__name) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480c0 (1 bytes) name=strftime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strftime(char *__s,size_t __maxsize,char *__format,tm *__tp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480c8 (1 bytes) name=gzgets + +/* WARNING: Control flow encountered bad instruction data */ + +void gzgets(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480d0 (1 bytes) name=pthread_join + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_join(pthread_t __th,void **__thread_return) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480d8 (1 bytes) name=fcntl + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fcntl(int __fd,int __cmd,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480e0 (1 bytes) name=pthread_mutex_trylock + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_trylock(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480e8 (1 bytes) name=wcslen + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcslen(wchar_t *__s) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480f0 (1 bytes) name=__android_log_write + +/* WARNING: Control flow encountered bad instruction data */ + +void __android_log_write(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005480f8 (1 bytes) name=clock_gettime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int clock_gettime(clockid_t __clock_id,timespec *__tp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548100 (1 bytes) name=readlink + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t readlink(char *__path,char *__buf,size_t __len) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548108 (1 bytes) name=sscanf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int sscanf(char *__s,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548110 (1 bytes) name=free + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void free(void *__ptr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548118 (1 bytes) name=sqrt + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double sqrt(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548120 (1 bytes) name=fread + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fread(void *__ptr,size_t __size,size_t __n,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548128 (1 bytes) name=strchr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strchr(char *__s,int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548130 (1 bytes) name=strtold + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double strtold(char *__nptr,char **__endptr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548138 (1 bytes) name=calloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * calloc(size_t __nmemb,size_t __size) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548140 (1 bytes) name=pthread_key_delete + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_delete(pthread_key_t __key) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548148 (1 bytes) name=mkdir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int mkdir(char *__path,__mode_t __mode) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548150 (1 bytes) name=strcmp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strcmp(char *__s1,char *__s2) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548158 (1 bytes) name=AndroidBitmap_lockPixels + +/* WARNING: Control flow encountered bad instruction data */ + +void AndroidBitmap_lockPixels(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548160 (1 bytes) name=malloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * malloc(size_t __size) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548168 (1 bytes) name=strxfrm + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strxfrm(char *__dest,char *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548170 (1 bytes) name=wmemset + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemset(wchar_t *__s,wchar_t __c,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548178 (1 bytes) name=nanosleep + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int nanosleep(timespec *__requested_time,timespec *__remaining) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548180 (1 bytes) name=pthread_cond_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_destroy(pthread_cond_t *__cond) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548188 (1 bytes) name=isxdigit + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int isxdigit(int param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548190 (1 bytes) name=sprintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int sprintf(char *__s,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548198 (1 bytes) name=log10 + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double log10(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481a8 (1 bytes) name=pthread_setspecific + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_setspecific(pthread_key_t __key,void *__pointer) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481b0 (1 bytes) name=read + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t read(int __fd,void *__buf,size_t __nbytes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481b8 (1 bytes) name=memmove + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memmove(void *__dest,void *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481c0 (1 bytes) name=pthread_once + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_once(pthread_once_t *__once_control,__init_routine *__init_routine) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481c8 (1 bytes) name=__google_potentially_blocking_region_end + +/* WARNING: Control flow encountered bad instruction data */ + +void __google_potentially_blocking_region_end(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481d0 (1 bytes) name=feof + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int feof(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481d8 (1 bytes) name=strlen + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strlen(char *__s) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481e0 (1 bytes) name=wcscoll + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int wcscoll(wchar_t *__s1,wchar_t *__s2) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481e8 (1 bytes) name=atan2 + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double atan2(double __y,double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481f0 (1 bytes) name=access + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int access(char *__name,int __type) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005481f8 (1 bytes) name=gettid + +/* WARNING: Control flow encountered bad instruction data */ + +void gettid(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548200 (1 bytes) name=strstr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strstr(char *__haystack,char *__needle) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548208 (1 bytes) name=pthread_mutexattr_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548210 (1 bytes) name=fclose + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fclose(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548218 (1 bytes) name=realloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * realloc(void *__ptr,size_t __size) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548220 (1 bytes) name=iswctype + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int iswctype(wint_t __wc,wctype_t __desc) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548228 (1 bytes) name=gzeof + +/* WARNING: Control flow encountered bad instruction data */ + +void gzeof(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548230 (1 bytes) name=strtod + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double strtod(char *__nptr,char **__endptr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548238 (1 bytes) name=wcsftime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcsftime(wchar_t *__s,size_t __maxsize,wchar_t *__format,tm *__tp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548240 (1 bytes) name=munmap + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int munmap(void *__addr,size_t __len) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548248 (1 bytes) name=fprintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fprintf(FILE *__stream,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548250 (1 bytes) name=wctype + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wctype_t wctype(char *__property) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548258 (1 bytes) name=putc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int putc(int __c,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548260 (1 bytes) name=pow + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double pow(double __x,double __y) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548268 (1 bytes) name=strncmp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strncmp(char *__s1,char *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548270 (1 bytes) name=fputc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fputc(int __c,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548278 (1 bytes) name=lrintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long lrintf(float __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548280 (1 bytes) name=wmemcpy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemcpy(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548288 (1 bytes) name=log + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double log(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548290 (1 bytes) name=exp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double exp(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548298 (1 bytes) name=snprintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int snprintf(char *__s,size_t __maxlen,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482a0 (1 bytes) name=getc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int getc(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482a8 (1 bytes) name=pthread_attr_setdetachstate + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_setdetachstate(pthread_attr_t *__attr,int __detachstate) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482b0 (1 bytes) name=strtol + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long strtol(char *__nptr,char **__endptr,int __base) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482b8 (1 bytes) name=__android_log_print + +/* WARNING: Control flow encountered bad instruction data */ + +void __android_log_print(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482c0 (1 bytes) name=ftell + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long ftell(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482c8 (1 bytes) name=remove + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int remove(char *__filename) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482d0 (1 bytes) name=towupper + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t towupper(wint_t __wc) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482d8 (1 bytes) name=pthread_mutex_unlock + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_unlock(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482e0 (1 bytes) name=dlsym + +/* WARNING: Control flow encountered bad instruction data */ + +void dlsym(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482e8 (1 bytes) name=strcoll + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strcoll(char *__s1,char *__s2) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482f0 (1 bytes) name=pthread_cond_wait + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_wait(pthread_cond_t *__cond,pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005482f8 (1 bytes) name=putwc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t putwc(wchar_t __wc,__FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548300 (1 bytes) name=gzputs + +/* WARNING: Control flow encountered bad instruction data */ + +void gzputs(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548308 (1 bytes) name=wctob + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int wctob(wint_t __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548310 (1 bytes) name=poll + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int poll(pollfd *__fds,nfds_t __nfds,int __timeout) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548318 (1 bytes) name=pthread_cond_timedwait + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_timedwait(pthread_cond_t *__cond,pthread_mutex_t *__mutex,timespec *__abstime) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548320 (1 bytes) name=pthread_create + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_create(pthread_t *__newthread,pthread_attr_t *__attr,__start_routine *__start_routine, + void *__arg) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548328 (1 bytes) name=pthread_cond_broadcast + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_broadcast(pthread_cond_t *__cond) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548330 (1 bytes) name=fwrite + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fwrite(void *__ptr,size_t __size,size_t __n,FILE *__s) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548338 (1 bytes) name=mmap + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * mmap(void *__addr,size_t __len,int __prot,int __flags,int __fd,__off_t __offset) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548340 (1 bytes) name=strcpy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strcpy(char *__dest,char *__src) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548348 (1 bytes) name=fileno + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fileno(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548350 (1 bytes) name=vsnprintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int vsnprintf(char *__s,size_t __maxlen,char *__format,__gnuc_va_list __arg) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548358 (1 bytes) name=lrint + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long lrint(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548360 (1 bytes) name=wmemcmp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int wmemcmp(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548368 (1 bytes) name=syscall + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long syscall(long __sysno,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548370 (1 bytes) name=memset + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memset(void *__s,int __c,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548378 (1 bytes) name=pthread_mutex_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_init(pthread_mutex_t *__mutex,pthread_mutexattr_t *__mutexattr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548380 (1 bytes) name=fdopen + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +FILE * fdopen(int __fd,char *__modes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548388 (1 bytes) name=dlopen + +/* WARNING: Control flow encountered bad instruction data */ + +void dlopen(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548390 (1 bytes) name=pthread_cond_signal + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_signal(pthread_cond_t *__cond) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548398 (1 bytes) name=__google_potentially_blocking_region_begin + +/* WARNING: Control flow encountered bad instruction data */ + +void __google_potentially_blocking_region_begin(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483a0 (1 bytes) name=gzrewind + +/* WARNING: Control flow encountered bad instruction data */ + +void gzrewind(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483a8 (1 bytes) name=stat + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int stat(char *__file,stat *__buf) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483b0 (1 bytes) name=pthread_getspecific + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * pthread_getspecific(pthread_key_t __key) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483b8 (1 bytes) name=wmemchr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wchar_t * wmemchr(wchar_t *__s,wchar_t __c,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483c0 (1 bytes) name=acos + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double acos(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483c8 (1 bytes) name=ioctl + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int ioctl(int __fd,ulong __request,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483d0 (1 bytes) name=abort + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void abort(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483d8 (1 bytes) name=__cxa_atexit + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_atexit(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483e0 (1 bytes) name=atoi + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int atoi(char *__nptr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483e8 (1 bytes) name=fseek + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fseek(FILE *__stream,long __off,int __whence) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483f0 (1 bytes) name=sqrtf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float sqrtf(float __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005483f8 (1 bytes) name=setvbuf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int setvbuf(FILE *__stream,char *__buf,int __modes,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548400 (1 bytes) name=gzopen + +/* WARNING: Control flow encountered bad instruction data */ + +void gzopen(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548408 (1 bytes) name=printf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int printf(char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548410 (1 bytes) name=AndroidBitmap_unlockPixels + +/* WARNING: Control flow encountered bad instruction data */ + +void AndroidBitmap_unlockPixels(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548418 (1 bytes) name=memcmp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int memcmp(void *__s1,void *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548420 (1 bytes) name=write + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t write(int __fd,void *__buf,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548428 (1 bytes) name=__errno + +/* WARNING: Control flow encountered bad instruction data */ + +void __errno(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548438 (1 bytes) name=tolower + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int tolower(int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548440 (1 bytes) name=pthread_mutexattr_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_init(pthread_mutexattr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548448 (1 bytes) name=wcrtomb + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcrtomb(char *__s,wchar_t __wc,mbstate_t *__ps) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548450 (1 bytes) name=ungetc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int ungetc(int __c,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548458 (1 bytes) name=pthread_mutex_lock + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_lock(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548460 (1 bytes) name=toupper + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int toupper(int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548468 (1 bytes) name=pthread_attr_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_destroy(pthread_attr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548470 (1 bytes) name=readdir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +dirent * readdir(DIR *__dirp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548478 (1 bytes) name=__cxa_finalize + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_finalize(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548480 (1 bytes) name=localtime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime(time_t *__timer) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548488 (1 bytes) name=fflush + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fflush(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548490 (1 bytes) name=pthread_key_create + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_create(pthread_key_t *__key,__destr_function *__destr_function) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548498 (1 bytes) name=pipe + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pipe(int *__pipedes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484a0 (1 bytes) name=lseek + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +__off_t lseek(int __fd,__off_t __offset,int __whence) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484a8 (1 bytes) name=atan + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double atan(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484b0 (1 bytes) name=time + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +time_t time(time_t *__timer) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484b8 (1 bytes) name=pthread_attr_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_init(pthread_attr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484c0 (1 bytes) name=uname + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int uname(utsname *__name) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484c8 (1 bytes) name=__stack_chk_fail + +/* WARNING: Control flow encountered bad instruction data */ + +void __stack_chk_fail(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484d0 (1 bytes) name=wcsxfrm + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t wcsxfrm(wchar_t *__s1,wchar_t *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484d8 (1 bytes) name=strtof + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float strtof(char *__nptr,char **__endptr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484e0 (1 bytes) name=fputs + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fputs(char *__s,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484e8 (1 bytes) name=rewind + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void rewind(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484f0 (1 bytes) name=fgets + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * fgets(char *__s,int __n,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 005484f8 (1 bytes) name=ungetwc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +wint_t ungetwc(wint_t __wc,__FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548500 (1 bytes) name=pthread_cond_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_init(pthread_cond_t *__cond,pthread_condattr_t *__cond_attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548508 (1 bytes) name=mkstemp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int mkstemp(char *__template) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548510 (1 bytes) name=AndroidBitmap_getInfo + +/* WARNING: Control flow encountered bad instruction data */ + +void AndroidBitmap_getInfo(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548518 (1 bytes) name=setlocale + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * setlocale(int __category,char *__locale) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548520 (1 bytes) name=dl_iterate_phdr + +/* WARNING: Control flow encountered bad instruction data */ + +void dl_iterate_phdr(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548528 (1 bytes) name=vsprintf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int vsprintf(char *__s,char *__format,__gnuc_va_list __arg) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548530 (1 bytes) name=open + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int open(char *__file,int __oflag,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548538 (1 bytes) name=fscanf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fscanf(FILE *__stream,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548540 (1 bytes) name=strdup + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strdup(char *__s) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548548 (1 bytes) name=strrchr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strrchr(char *__s,int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548550 (1 bytes) name=localtime_r + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime_r(time_t *__timer,tm *__tp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548558 (1 bytes) name=closedir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int closedir(DIR *__dirp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00548560 (1 bytes) name=fstat + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fstat(int __fd,stat *__buf) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/all_functions_decomp_libmagcore.so_00100000.txt b/analysis/ida/export/ghidra_dump/all_functions_decomp_libmagcore.so_00100000.txt new file mode 100644 index 0000000..a0ae6cd --- /dev/null +++ b/analysis/ida/export/ghidra_dump/all_functions_decomp_libmagcore.so_00100000.txt @@ -0,0 +1,32767 @@ +### FUNC 00105cb8 (26 bytes) name=_init + +int _init(EVP_PKEY_CTX *ctx) + +{ + int iVar1; + + iVar1 = 0; + if (PTR___gmon_start___0033ef98 != (undefined *)0x0) { + iVar1 = __gmon_start__(); + } + return iVar1; +} + + +================================================================== + +### FUNC 00105ce0 (12 bytes) name=FUN_00105ce0 + +void FUN_00105ce0(void) + +{ + (*(code *)PTR_0033f010)(); + return; +} + + +================================================================== + +### FUNC 00105cf0 (6 bytes) name=exp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double exp(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_exp_0033f018)(); + return dVar1; +} + + +================================================================== + +### FUNC 00105d00 (6 bytes) name=pthread_getspecific + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * pthread_getspecific(pthread_key_t __key) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_pthread_getspecific_0033f020)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00105d10 (6 bytes) name=pthread_cond_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_destroy(pthread_cond_t *__cond) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_destroy_0033f028)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105d20 (6 bytes) name=libusb_cancel_transfer + +void libusb_cancel_transfer(void) + +{ + (*(code *)PTR_libusb_cancel_transfer_0033f030)(); + return; +} + + +================================================================== + +### FUNC 00105d30 (6 bytes) name=libusb_get_device_address + +void libusb_get_device_address(void) + +{ + (*(code *)PTR_libusb_get_device_address_0033f038)(); + return; +} + + +================================================================== + +### FUNC 00105d40 (6 bytes) name=memset + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memset(void *__s,int __c,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memset_0033f040)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00105d50 (6 bytes) name=ftell + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long ftell(FILE *__stream) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_ftell_0033f048)(); + return lVar1; +} + + +================================================================== + +### FUNC 00105d60 (6 bytes) name=libusb_close + +void libusb_close(void) + +{ + (*(code *)PTR_libusb_close_0033f050)(); + return; +} + + +================================================================== + +### FUNC 00105d70 (6 bytes) name=libusb_get_active_config_descriptor + +void libusb_get_active_config_descriptor(void) + +{ + (*(code *)PTR_libusb_get_active_config_descriptor_0033f058)(); + return; +} + + +================================================================== + +### FUNC 00105d80 (6 bytes) name=libusb_unref_device + +void libusb_unref_device(void) + +{ + (*(code *)PTR_libusb_unref_device_0033f060)(); + return; +} + + +================================================================== + +### FUNC 00105d90 (6 bytes) name=close + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int close(int __fd) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_close_0033f068)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105da0 (6 bytes) name=libusb_unlock_event_waiters + +void libusb_unlock_event_waiters(void) + +{ + (*(code *)PTR_libusb_unlock_event_waiters_0033f070)(); + return; +} + + +================================================================== + +### FUNC 00105db0 (6 bytes) name=libusb_open + +void libusb_open(void) + +{ + (*(code *)PTR_libusb_open_0033f078)(); + return; +} + + +================================================================== + +### FUNC 00105dc0 (6 bytes) name=MAG_Free + +void MAG_Free(void) + +{ + (*(code *)PTR_MAG_Free_0033f080)(); + return; +} + + +================================================================== + +### FUNC 00105dd0 (6 bytes) name=ioctl + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int ioctl(int __fd,ulong __request,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_ioctl_0033f088)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105de0 (6 bytes) name=libusb_claim_interface + +void libusb_claim_interface(void) + +{ + (*(code *)PTR_libusb_claim_interface_0033f090)(); + return; +} + + +================================================================== + +### FUNC 00105df0 (6 bytes) name=pthread_setspecific + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_setspecific(pthread_key_t __key,void *__pointer) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_setspecific_0033f098)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105e00 (6 bytes) name=libusb_alloc_transfer + +void libusb_alloc_transfer(void) + +{ + (*(code *)PTR_libusb_alloc_transfer_0033f0a0)(); + return; +} + + +================================================================== + +### FUNC 00105e10 (6 bytes) name=libusb_set_configuration + +void libusb_set_configuration(void) + +{ + (*(code *)PTR_libusb_set_configuration_0033f0a8)(); + return; +} + + +================================================================== + +### FUNC 00105e20 (6 bytes) name=__gmon_start__ + +void __gmon_start__(void) + +{ + (*(code *)PTR___gmon_start___0033f0b0)(); + return; +} + + +================================================================== + +### FUNC 00105e30 (6 bytes) name=recvmsg + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t recvmsg(int __fd,msghdr *__message,int __flags) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_recvmsg_0033f0b8)(); + return sVar1; +} + + +================================================================== + +### FUNC 00105e40 (6 bytes) name=operator.new[] + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * operator_new__(ulong param_1) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_operator_new___0033f0c0)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00105e50 (6 bytes) name=uname + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int uname(utsname *__name) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_uname_0033f0c8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105e60 (6 bytes) name=fseek + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fseek(FILE *__stream,long __off,int __whence) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fseek_0033f0d0)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105e70 (6 bytes) name=pthread_cond_signal + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_signal(pthread_cond_t *__cond) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_signal_0033f0d8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105e80 (6 bytes) name=operator.delete + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void operator_delete(void *param_1) + +{ + (*(code *)PTR_operator_delete_0033f0e0)(); + return; +} + + +================================================================== + +### FUNC 00105e90 (6 bytes) name=_M_dispose + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::string::_Rep::_M_dispose(allocator *param_1) + +{ + (*(code *)PTR__M_dispose_0033f0e8)(); + return; +} + + +================================================================== + +### FUNC 00105ea0 (6 bytes) name=pthread_mutexattr_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutexattr_destroy_0033f0f0)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105eb0 (6 bytes) name=libusb_free_device_list + +void libusb_free_device_list(void) + +{ + (*(code *)PTR_libusb_free_device_list_0033f0f8)(); + return; +} + + +================================================================== + +### FUNC 00105ec0 (6 bytes) name=__assert_fail + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void __assert_fail(char *__assertion,char *__file,uint __line,char *__function) + +{ + (*(code *)PTR___assert_fail_0033f100)(); + return; +} + + +================================================================== + +### FUNC 00105ed0 (6 bytes) name=__printf_chk + +void __printf_chk(void) + +{ + (*(code *)PTR___printf_chk_0033f108)(); + return; +} + + +================================================================== + +### FUNC 00105ee0 (6 bytes) name=gettimeofday + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int gettimeofday(timeval *__tv,__timezone_ptr_t __tz) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_gettimeofday_0033f110)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105ef0 (6 bytes) name=MAG_GetRectTemperatureInfo + +void MAG_GetRectTemperatureInfo(void) + +{ + (*(code *)PTR_MAG_GetRectTemperatureInfo_0033f118)(); + return; +} + + +================================================================== + +### FUNC 00105f00 (6 bytes) name=libusb_get_device_list + +void libusb_get_device_list(void) + +{ + (*(code *)PTR_libusb_get_device_list_0033f120)(); + return; +} + + +================================================================== + +### FUNC 00105f10 (6 bytes) name=Init + +void __thiscall std::ios_base::Init::Init(Init *this) + +{ + (*(code *)PTR_Init_0033f128)(); + return; +} + + +================================================================== + +### FUNC 00105f20 (6 bytes) name=MAG_GetCamInfo + +void MAG_GetCamInfo(void) + +{ + (*(code *)PTR_MAG_GetCamInfo_0033f130)(); + return; +} + + +================================================================== + +### FUNC 00105f30 (6 bytes) name=read + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t read(int __fd,void *__buf,size_t __nbytes) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_read_0033f138)(); + return sVar1; +} + + +================================================================== + +### FUNC 00105f40 (6 bytes) name=strncmp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strncmp(char *__s1,char *__s2,size_t __n) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_strncmp_0033f140)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105f50 (6 bytes) name=malloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * malloc(size_t __size) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_malloc_0033f148)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00105f60 (6 bytes) name=fopen + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +FILE * fopen(char *__filename,char *__modes) + +{ + FILE *pFVar1; + + pFVar1 = (FILE *)(*(code *)PTR_fopen_0033f150)(); + return pFVar1; +} + + +================================================================== + +### FUNC 00105f70 (6 bytes) name=libusb_control_transfer + +void libusb_control_transfer(void) + +{ + (*(code *)PTR_libusb_control_transfer_0033f158)(); + return; +} + + +================================================================== + +### FUNC 00105f80 (6 bytes) name=pthread_cond_timedwait + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_timedwait(pthread_cond_t *__cond,pthread_mutex_t *__mutex,timespec *__abstime) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_timedwait_0033f160)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105f90 (6 bytes) name=__memcpy_chk + +void __memcpy_chk(void) + +{ + (*(code *)PTR___memcpy_chk_0033f168)(); + return; +} + + +================================================================== + +### FUNC 00105fa0 (6 bytes) name=libusb_get_config_descriptor + +void libusb_get_config_descriptor(void) + +{ + (*(code *)PTR_libusb_get_config_descriptor_0033f170)(); + return; +} + + +================================================================== + +### FUNC 00105fb0 (6 bytes) name=__cxa_atexit + +void __cxa_atexit(void) + +{ + (*(code *)PTR___cxa_atexit_0033f178)(); + return; +} + + +================================================================== + +### FUNC 00105fc0 (6 bytes) name=libusb_try_lock_events + +void libusb_try_lock_events(void) + +{ + (*(code *)PTR_libusb_try_lock_events_0033f180)(); + return; +} + + +================================================================== + +### FUNC 00105fd0 (6 bytes) name=setsockopt + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int setsockopt(int __fd,int __level,int __optname,void *__optval,socklen_t __optlen) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_setsockopt_0033f188)(); + return iVar1; +} + + +================================================================== + +### FUNC 00105fe0 (6 bytes) name=MAG_StopProcessImage + +void MAG_StopProcessImage(void) + +{ + (*(code *)PTR_MAG_StopProcessImage_0033f190)(); + return; +} + + +================================================================== + +### FUNC 00105ff0 (6 bytes) name=pthread_mutex_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_init(pthread_mutex_t *__mutex,pthread_mutexattr_t *__mutexattr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_init_0033f198)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106000 (6 bytes) name=fgets + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * fgets(char *__s,int __n,FILE *__stream) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_fgets_0033f1a0)(); + return pcVar1; +} + + +================================================================== + +### FUNC 00106010 (6 bytes) name=__vsnprintf_chk + +void __vsnprintf_chk(void) + +{ + (*(code *)PTR___vsnprintf_chk_0033f1a8)(); + return; +} + + +================================================================== + +### FUNC 00106020 (6 bytes) name=libusb_handle_events_timeout_completed + +void libusb_handle_events_timeout_completed(void) + +{ + (*(code *)PTR_libusb_handle_events_timeout_completed_0033f1b0)(); + return; +} + + +================================================================== + +### FUNC 00106030 (6 bytes) name=pthread_attr_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_destroy(pthread_attr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_attr_destroy_0033f1b8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106040 (6 bytes) name=libusb_has_capability + +void libusb_has_capability(void) + +{ + (*(code *)PTR_libusb_has_capability_0033f1c0)(); + return; +} + + +================================================================== + +### FUNC 00106050 (6 bytes) name=getpwuid + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +passwd * getpwuid(__uid_t __uid) + +{ + passwd *ppVar1; + + ppVar1 = (passwd *)(*(code *)PTR_getpwuid_0033f1c8)(); + return ppVar1; +} + + +================================================================== + +### FUNC 00106060 (6 bytes) name=operator<< + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ostream * std::operator<<(ostream *param_1,char *param_2) + +{ + ostream *poVar1; + + poVar1 = (ostream *)(*(code *)PTR_operator<<_0033f1d0)(); + return poVar1; +} + + +================================================================== + +### FUNC 00106070 (6 bytes) name=__strdup + +void __strdup(void) + +{ + (*(code *)PTR___strdup_0033f1d8)(); + return; +} + + +================================================================== + +### FUNC 00106080 (6 bytes) name=free + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void free(void *__ptr) + +{ + (*(code *)PTR_free_0033f1e0)(); + return; +} + + +================================================================== + +### FUNC 00106090 (6 bytes) name=libusb_get_bus_number + +void libusb_get_bus_number(void) + +{ + (*(code *)PTR_libusb_get_bus_number_0033f1e8)(); + return; +} + + +================================================================== + +### FUNC 001060a0 (6 bytes) name=strlen + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strlen(char *__s) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_strlen_0033f1f0)(); + return sVar1; +} + + +================================================================== + +### FUNC 001060b0 (6 bytes) name=libusb_free_config_descriptor + +void libusb_free_config_descriptor(void) + +{ + (*(code *)PTR_libusb_free_config_descriptor_0033f1f8)(); + return; +} + + +================================================================== + +### FUNC 001060c0 (6 bytes) name=_M_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::string::_Rep::_M_destroy(allocator *param_1) + +{ + (*(code *)PTR__M_destroy_0033f200)(); + return; +} + + +================================================================== + +### FUNC 001060d0 (6 bytes) name=__asprintf_chk + +void __asprintf_chk(void) + +{ + (*(code *)PTR___asprintf_chk_0033f208)(); + return; +} + + +================================================================== + +### FUNC 001060e0 (6 bytes) name=pthread_create + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_create(pthread_t *__newthread,pthread_attr_t *__attr,__start_routine *__start_routine, + void *__arg) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_create_0033f210)(); + return iVar1; +} + + +================================================================== + +### FUNC 001060f0 (6 bytes) name=opendir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +DIR * opendir(char *__name) + +{ + DIR *pDVar1; + + pDVar1 = (DIR *)(*(code *)PTR_opendir_0033f218)(); + return pDVar1; +} + + +================================================================== + +### FUNC 00106100 (6 bytes) name=__xstat + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int __xstat(int __ver,char *__filename,stat *__stat_buf) + +{ + int iVar1; + + iVar1 = (*(code *)PTR___xstat_0033f220)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106110 (6 bytes) name=pthread_cond_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_init(pthread_cond_t *__cond,pthread_condattr_t *__cond_attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_init_0033f228)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106120 (6 bytes) name=libusb_submit_transfer + +void libusb_submit_transfer(void) + +{ + (*(code *)PTR_libusb_submit_transfer_0033f230)(); + return; +} + + +================================================================== + +### FUNC 00106130 (6 bytes) name=__ctype_b_loc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ushort ** __ctype_b_loc(void) + +{ + ushort **ppuVar1; + + ppuVar1 = (ushort **)(*(code *)PTR___ctype_b_loc_0033f238)(); + return ppuVar1; +} + + +================================================================== + +### FUNC 00106140 (6 bytes) name=__cxa_finalize + +void __cxa_finalize(void) + +{ + (*(code *)PTR___cxa_finalize_0033f240)(); + return; +} + + +================================================================== + +### FUNC 00106150 (6 bytes) name=libusb_event_handler_active + +void libusb_event_handler_active(void) + +{ + (*(code *)PTR_libusb_event_handler_active_0033f248)(); + return; +} + + +================================================================== + +### FUNC 00106160 (6 bytes) name=pthread_key_delete + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_delete(pthread_key_t __key) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_key_delete_0033f250)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106170 (6 bytes) name=readdir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +dirent * readdir(DIR *__dirp) + +{ + dirent *pdVar1; + + pdVar1 = (dirent *)(*(code *)PTR_readdir_0033f258)(); + return pdVar1; +} + + +================================================================== + +### FUNC 00106180 (6 bytes) name=libusb_ref_device + +void libusb_ref_device(void) + +{ + (*(code *)PTR_libusb_ref_device_0033f260)(); + return; +} + + +================================================================== + +### FUNC 00106190 (6 bytes) name=libusb_handle_events_timeout + +void libusb_handle_events_timeout(void) + +{ + (*(code *)PTR_libusb_handle_events_timeout_0033f268)(); + return; +} + + +================================================================== + +### FUNC 001061a0 (6 bytes) name=libusb_exit + +void libusb_exit(void) + +{ + (*(code *)PTR_libusb_exit_0033f270)(); + return; +} + + +================================================================== + +### FUNC 001061b0 (6 bytes) name=strrchr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strrchr(char *__s,int __c) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strrchr_0033f278)(); + return pcVar1; +} + + +================================================================== + +### FUNC 001061c0 (6 bytes) name=syscall + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long syscall(long __sysno,...) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_syscall_0033f280)(); + return lVar1; +} + + +================================================================== + +### FUNC 001061d0 (6 bytes) name=libusb_free_bos_descriptor + +void libusb_free_bos_descriptor(void) + +{ + (*(code *)PTR_libusb_free_bos_descriptor_0033f288)(); + return; +} + + +================================================================== + +### FUNC 001061e0 (6 bytes) name=sscanf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int sscanf(char *__s,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_sscanf_0033f290)(); + return iVar1; +} + + +================================================================== + +### FUNC 001061f0 (6 bytes) name=libusb_wait_for_event + +void libusb_wait_for_event(void) + +{ + (*(code *)PTR_libusb_wait_for_event_0033f298)(); + return; +} + + +================================================================== + +### FUNC 00106200 (6 bytes) name=libusb_init + +void libusb_init(void) + +{ + (*(code *)PTR_libusb_init_0033f2a0)(); + return; +} + + +================================================================== + +### FUNC 00106210 (6 bytes) name=pipe + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pipe(int *__pipedes) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pipe_0033f2a8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106220 (6 bytes) name=libusb_free_transfer + +void libusb_free_transfer(void) + +{ + (*(code *)PTR_libusb_free_transfer_0033f2b0)(); + return; +} + + +================================================================== + +### FUNC 00106230 (6 bytes) name=pthread_join + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_join(pthread_t __th,void **__thread_return) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_join_0033f2b8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106240 (6 bytes) name=poll + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int poll(pollfd *__fds,nfds_t __nfds,int __timeout) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_poll_0033f2c0)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106250 (6 bytes) name=pthread_mutex_trylock + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_trylock(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_trylock_0033f2c8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106260 (6 bytes) name=libusb_unlock_events + +void libusb_unlock_events(void) + +{ + (*(code *)PTR_libusb_unlock_events_0033f2d0)(); + return; +} + + +================================================================== + +### FUNC 00106270 (6 bytes) name=pow + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double pow(double __x,double __y) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_pow_0033f2d8)(); + return dVar1; +} + + +================================================================== + +### FUNC 00106280 (6 bytes) name=libusb_set_auto_detach_kernel_driver + +void libusb_set_auto_detach_kernel_driver(void) + +{ + (*(code *)PTR_libusb_set_auto_detach_kernel_driver_0033f2e0)(); + return; +} + + +================================================================== + +### FUNC 00106290 (6 bytes) name=usleep + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int usleep(__useconds_t __useconds) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_usleep_0033f2e8)(); + return iVar1; +} + + +================================================================== + +### FUNC 001062a0 (6 bytes) name=strerror + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strerror(int __errnum) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strerror_0033f2f0)(); + return pcVar1; +} + + +================================================================== + +### FUNC 001062b0 (6 bytes) name=MAG_IsLinked + +void MAG_IsLinked(void) + +{ + (*(code *)PTR_MAG_IsLinked_0033f2f8)(); + return; +} + + +================================================================== + +### FUNC 001062c0 (6 bytes) name=fputs + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fputs(char *__s,FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fputs_0033f300)(); + return iVar1; +} + + +================================================================== + +### FUNC 001062d0 (6 bytes) name=lseek + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +__off_t lseek(int __fd,__off_t __offset,int __whence) + +{ + __off_t _Var1; + + _Var1 = (*(code *)PTR_lseek_0033f308)(); + return _Var1; +} + + +================================================================== + +### FUNC 001062e0 (6 bytes) name=strtol + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long strtol(char *__nptr,char **__endptr,int __base) + +{ + long lVar1; + + lVar1 = (*(code *)PTR_strtol_0033f310)(); + return lVar1; +} + + +================================================================== + +### FUNC 001062f0 (6 bytes) name=readlink + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t readlink(char *__path,char *__buf,size_t __len) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_readlink_0033f318)(); + return sVar1; +} + + +================================================================== + +### FUNC 00106300 (6 bytes) name=libusb_hotplug_deregister_callback + +void libusb_hotplug_deregister_callback(void) + +{ + (*(code *)PTR_libusb_hotplug_deregister_callback_0033f320)(); + return; +} + + +================================================================== + +### FUNC 00106310 (6 bytes) name=__strcpy_chk + +void __strcpy_chk(void) + +{ + (*(code *)PTR___strcpy_chk_0033f328)(); + return; +} + + +================================================================== + +### FUNC 00106320 (6 bytes) name=__ostream_insert> + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ostream * std::__ostream_insert> + (ostream *param_1,char *param_2,long param_3) + +{ + ostream *poVar1; + + poVar1 = (ostream *)(*(code *)PTR___ostream_insert>_0033f330)(); + return poVar1; +} + + +================================================================== + +### FUNC 00106330 (6 bytes) name=memmove + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memmove(void *__dest,void *__src,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memmove_0033f338)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00106340 (6 bytes) name=strchr + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strchr(char *__s,int __c) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strchr_0033f340)(); + return pcVar1; +} + + +================================================================== + +### FUNC 00106350 (6 bytes) name=socket + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int socket(int __domain,int __type,int __protocol) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_socket_0033f348)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106360 (6 bytes) name=fread + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fread(void *__ptr,size_t __size,size_t __n,FILE *__stream) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_fread_0033f350)(); + return sVar1; +} + + +================================================================== + +### FUNC 00106370 (6 bytes) name=getenv + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * getenv(char *__name) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_getenv_0033f358)(); + return pcVar1; +} + + +================================================================== + +### FUNC 00106380 (6 bytes) name=libusb_get_next_timeout + +void libusb_get_next_timeout(void) + +{ + (*(code *)PTR_libusb_get_next_timeout_0033f360)(); + return; +} + + +================================================================== + +### FUNC 00106390 (6 bytes) name=__errno_location + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int * __errno_location(void) + +{ + int *piVar1; + + piVar1 = (int *)(*(code *)PTR___errno_location_0033f368)(); + return piVar1; +} + + +================================================================== + +### FUNC 001063a0 (6 bytes) name=pthread_mutexattr_settype + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_settype(pthread_mutexattr_t *__attr,int __kind) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutexattr_settype_0033f370)(); + return iVar1; +} + + +================================================================== + +### FUNC 001063b0 (6 bytes) name=__stack_chk_fail + +void __stack_chk_fail(void) + +{ + (*(code *)PTR___stack_chk_fail_0033f378)(); + return; +} + + +================================================================== + +### FUNC 001063c0 (6 bytes) name=strcmp + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strcmp(char *__s1,char *__s2) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_strcmp_0033f380)(); + return iVar1; +} + + +================================================================== + +### FUNC 001063d0 (6 bytes) name=__cxa_allocate_exception + +void __cxa_allocate_exception(void) + +{ + (*(code *)PTR___cxa_allocate_exception_0033f388)(); + return; +} + + +================================================================== + +### FUNC 001063e0 (6 bytes) name=libusb_error_name + +void libusb_error_name(void) + +{ + (*(code *)PTR_libusb_error_name_0033f390)(); + return; +} + + +================================================================== + +### FUNC 001063f0 (6 bytes) name=assign + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::string::assign(char *param_1,ulong param_2) + +{ + (*(code *)PTR_assign_0033f398)(); + return; +} + + +================================================================== + +### FUNC 00106400 (6 bytes) name=MAG_IsChannelAvailable + +void MAG_IsChannelAvailable(void) + +{ + (*(code *)PTR_MAG_IsChannelAvailable_0033f3a0)(); + return; +} + + +================================================================== + +### FUNC 00106410 (6 bytes) name=nanosleep + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int nanosleep(timespec *__requested_time,timespec *__remaining) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_nanosleep_0033f3a8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106420 (6 bytes) name=getuid + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +__uid_t getuid(void) + +{ + __uid_t _Var1; + + _Var1 = (*(code *)PTR_getuid_0033f3b0)(); + return _Var1; +} + + +================================================================== + +### FUNC 00106430 (6 bytes) name=pthread_cond_wait + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_wait(pthread_cond_t *__cond,pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_wait_0033f3b8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106440 (6 bytes) name=operator.delete[] + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void operator_delete__(void *param_1) + +{ + (*(code *)PTR_operator_delete___0033f3c0)(); + return; +} + + +================================================================== + +### FUNC 00106450 (6 bytes) name=libusb_get_device_descriptor + +void libusb_get_device_descriptor(void) + +{ + (*(code *)PTR_libusb_get_device_descriptor_0033f3c8)(); + return; +} + + +================================================================== + +### FUNC 00106460 (6 bytes) name=calloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * calloc(size_t __nmemb,size_t __size) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_calloc_0033f3d0)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00106470 (6 bytes) name=munmap + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int munmap(void *__addr,size_t __len) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_munmap_0033f3d8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106480 (6 bytes) name=feof + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int feof(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_feof_0033f3e0)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106490 (6 bytes) name=__cxa_throw + +void __cxa_throw(void) + +{ + (*(code *)PTR___cxa_throw_0033f3e8)(); + return; +} + + +================================================================== + +### FUNC 001064a0 (6 bytes) name=fclose + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fclose(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fclose_0033f3f0)(); + return iVar1; +} + + +================================================================== + +### FUNC 001064b0 (6 bytes) name=libusb_handle_events_completed + +void libusb_handle_events_completed(void) + +{ + (*(code *)PTR_libusb_handle_events_completed_0033f3f8)(); + return; +} + + +================================================================== + +### FUNC 001064c0 (6 bytes) name=strncpy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strncpy(char *__dest,char *__src,size_t __n) + +{ + char *pcVar1; + + pcVar1 = (char *)(*(code *)PTR_strncpy_0033f400)(); + return pcVar1; +} + + +================================================================== + +### FUNC 001064d0 (6 bytes) name=pthread_attr_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_init(pthread_attr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_attr_init_0033f408)(); + return iVar1; +} + + +================================================================== + +### FUNC 001064e0 (6 bytes) name=localtime_r + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime_r(time_t *__timer,tm *__tp) + +{ + tm *ptVar1; + + ptVar1 = (tm *)(*(code *)PTR_localtime_r_0033f410)(); + return ptVar1; +} + + +================================================================== + +### FUNC 001064f0 (6 bytes) name=__cxa_end_catch + +void __cxa_end_catch(void) + +{ + (*(code *)PTR___cxa_end_catch_0033f418)(); + return; +} + + +================================================================== + +### FUNC 00106500 (6 bytes) name=__throw_bad_alloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::__throw_bad_alloc(void) + +{ + (*(code *)PTR___throw_bad_alloc_0033f420)(); + return; +} + + +================================================================== + +### FUNC 00106510 (6 bytes) name=fscanf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fscanf(FILE *__stream,char *__format,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fscanf_0033f428)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106520 (6 bytes) name=closedir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int closedir(DIR *__dirp) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_closedir_0033f430)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106530 (6 bytes) name=__sprintf_chk + +void __sprintf_chk(void) + +{ + (*(code *)PTR___sprintf_chk_0033f438)(); + return; +} + + +================================================================== + +### FUNC 00106540 (6 bytes) name=libusb_get_port_numbers + +void libusb_get_port_numbers(void) + +{ + (*(code *)PTR_libusb_get_port_numbers_0033f440)(); + return; +} + + +================================================================== + +### FUNC 00106550 (6 bytes) name=MAG_LinkCameraEx + +void MAG_LinkCameraEx(void) + +{ + (*(code *)PTR_MAG_LinkCameraEx_0033f448)(); + return; +} + + +================================================================== + +### FUNC 00106560 (6 bytes) name=__snprintf_chk + +void __snprintf_chk(void) + +{ + (*(code *)PTR___snprintf_chk_0033f450)(); + return; +} + + +================================================================== + +### FUNC 00106570 (6 bytes) name=access + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int access(char *__name,int __type) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_access_0033f458)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106580 (6 bytes) name=endl> + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ostream * std::endl>(ostream *param_1) + +{ + ostream *poVar1; + + poVar1 = (ostream *)(*(code *)PTR_endl>_0033f460)(); + return poVar1; +} + + +================================================================== + +### FUNC 00106590 (6 bytes) name=__cxa_begin_catch + +void __cxa_begin_catch(void) + +{ + (*(code *)PTR___cxa_begin_catch_0033f468)(); + return; +} + + +================================================================== + +### FUNC 001065a0 (6 bytes) name=bind + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int bind(int __fd,sockaddr *__addr,socklen_t __len) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_bind_0033f470)(); + return iVar1; +} + + +================================================================== + +### FUNC 001065b0 (6 bytes) name=libusb_bulk_transfer + +void libusb_bulk_transfer(void) + +{ + (*(code *)PTR_libusb_bulk_transfer_0033f478)(); + return; +} + + +================================================================== + +### FUNC 001065c0 (6 bytes) name=fwrite + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fwrite(void *__ptr,size_t __size,size_t __n,FILE *__s) + +{ + size_t sVar1; + + sVar1 = (*(code *)PTR_fwrite_0033f480)(); + return sVar1; +} + + +================================================================== + +### FUNC 001065d0 (6 bytes) name=pthread_mutex_lock + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_lock(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_lock_0033f488)(); + return iVar1; +} + + +================================================================== + +### FUNC 001065e0 (6 bytes) name=realloc + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * realloc(void *__ptr,size_t __size) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_realloc_0033f490)(); + return pvVar1; +} + + +================================================================== + +### FUNC 001065f0 (6 bytes) name=timerfd_create + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int timerfd_create(clockid_t __clock_id,int __flags) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_timerfd_create_0033f498)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106600 (6 bytes) name=pthread_mutexattr_init + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_init(pthread_mutexattr_t *__attr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutexattr_init_0033f4a0)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106610 (6 bytes) name=pthread_key_create + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_create(pthread_key_t *__key,__destr_function *__destr_function) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_key_create_0033f4a8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106620 (6 bytes) name=libusb_lock_events + +void libusb_lock_events(void) + +{ + (*(code *)PTR_libusb_lock_events_0033f4b0)(); + return; +} + + +================================================================== + +### FUNC 00106630 (6 bytes) name=timerfd_settime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int timerfd_settime(int __ufd,int __flags,itimerspec *__utmr,itimerspec *__otmr) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_timerfd_settime_0033f4b8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106640 (6 bytes) name=localtime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime(time_t *__timer) + +{ + tm *ptVar1; + + ptVar1 = (tm *)(*(code *)PTR_localtime_0033f4c0)(); + return ptVar1; +} + + +================================================================== + +### FUNC 00106650 (6 bytes) name=pthread_mutex_destroy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_destroy(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_destroy_0033f4c8)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106660 (6 bytes) name=write + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t write(int __fd,void *__buf,size_t __n) + +{ + ssize_t sVar1; + + sVar1 = (*(code *)PTR_write_0033f4d0)(); + return sVar1; +} + + +================================================================== + +### FUNC 00106670 (6 bytes) name=operator.new + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * operator_new(ulong param_1) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_operator_new_0033f4d8)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00106680 (6 bytes) name=_Unwind_Resume + +void _Unwind_Resume(void) + +{ + (*(code *)PTR__Unwind_Resume_0033f4e0)(); + return; +} + + +================================================================== + +### FUNC 00106690 (6 bytes) name=pthread_cond_broadcast + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_broadcast(pthread_cond_t *__cond) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_cond_broadcast_0033f4e8)(); + return iVar1; +} + + +================================================================== + +### FUNC 001066a0 (6 bytes) name=clock_gettime + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int clock_gettime(clockid_t __clock_id,timespec *__tp) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_clock_gettime_0033f4f0)(); + return iVar1; +} + + +================================================================== + +### FUNC 001066b0 (6 bytes) name=sqrt + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double sqrt(double __x) + +{ + double dVar1; + + dVar1 = (double)(*(code *)PTR_sqrt_0033f4f8)(); + return dVar1; +} + + +================================================================== + +### FUNC 001066c0 (6 bytes) name=strtoul + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ulong strtoul(char *__nptr,char **__endptr,int __base) + +{ + ulong uVar1; + + uVar1 = (*(code *)PTR_strtoul_0033f500)(); + return uVar1; +} + + +================================================================== + +### FUNC 001066d0 (6 bytes) name=pthread_mutex_unlock + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_unlock(pthread_mutex_t *__mutex) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_mutex_unlock_0033f508)(); + return iVar1; +} + + +================================================================== + +### FUNC 001066e0 (6 bytes) name=memcpy + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memcpy(void *__dest,void *__src,size_t __n) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_memcpy_0033f510)(); + return pvVar1; +} + + +================================================================== + +### FUNC 001066f0 (6 bytes) name=fcntl + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fcntl(int __fd,int __cmd,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fcntl_0033f518)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106700 (6 bytes) name=libusb_release_interface + +void libusb_release_interface(void) + +{ + (*(code *)PTR_libusb_release_interface_0033f520)(); + return; +} + + +================================================================== + +### FUNC 00106710 (6 bytes) name=open + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int open(char *__file,int __oflag,...) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_open_0033f528)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106720 (6 bytes) name=__open_2 + +void __open_2(void) + +{ + (*(code *)PTR___open_2_0033f530)(); + return; +} + + +================================================================== + +### FUNC 00106730 (6 bytes) name=mmap + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * mmap(void *__addr,size_t __len,int __prot,int __flags,int __fd,__off_t __offset) + +{ + void *pvVar1; + + pvVar1 = (void *)(*(code *)PTR_mmap_0033f538)(); + return pvVar1; +} + + +================================================================== + +### FUNC 00106740 (6 bytes) name=libusb_lock_event_waiters + +void libusb_lock_event_waiters(void) + +{ + (*(code *)PTR_libusb_lock_event_waiters_0033f540)(); + return; +} + + +================================================================== + +### FUNC 00106750 (6 bytes) name=mkdir + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int mkdir(char *__path,__mode_t __mode) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_mkdir_0033f548)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106760 (6 bytes) name=time + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +time_t time(time_t *__timer) + +{ + time_t tVar1; + + tVar1 = (*(code *)PTR_time_0033f550)(); + return tVar1; +} + + +================================================================== + +### FUNC 00106770 (6 bytes) name=fflush + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fflush(FILE *__stream) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_fflush_0033f558)(); + return iVar1; +} + + +================================================================== + +### FUNC 00106780 (6 bytes) name=sqrtf + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float sqrtf(float __x) + +{ + float fVar1; + + fVar1 = (float)(*(code *)PTR_sqrtf_0033f560)(); + return fVar1; +} + + +================================================================== + +### FUNC 00106790 (6 bytes) name=pthread_attr_setdetachstate + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_setdetachstate(pthread_attr_t *__attr,int __detachstate) + +{ + int iVar1; + + iVar1 = (*(code *)PTR_pthread_attr_setdetachstate_0033f568)(); + return iVar1; +} + + +================================================================== + +### FUNC 001067a0 (46 bytes) name=entry + +void processEntry entry(void) + +{ + std::ios_base::Init::Init((Init *)&DAT_00340a9c); + __cxa_atexit(PTR__Init_0033efa8,&DAT_00340a9c,&PTR_LOOP_0033f580); + return; +} + + +================================================================== + +### FUNC 001067d0 (64 bytes) name=_INIT_2 + +void _INIT_2(void) + +{ + std::ios_base::Init::Init((Init *)&DAT_00340aa8); + __cxa_atexit(PTR__Init_0033efa8,&DAT_00340aa8,&PTR_LOOP_0033f580); + DAT_00340aa0 = *(undefined8 *)PTR_stdout_0033efe8; + return; +} + + +================================================================== + +### FUNC 00106810 (46 bytes) name=_INIT_3 + +void _INIT_3(void) + +{ + std::ios_base::Init::Init((Init *)&DAT_00340ad0); + __cxa_atexit(PTR__Init_0033efa8,&DAT_00340ad0,&PTR_LOOP_0033f580); + return; +} + + +================================================================== + +### FUNC 00106840 (46 bytes) name=_INIT_4 + +void _INIT_4(void) + +{ + std::ios_base::Init::Init((Init *)&DAT_003665a8); + __cxa_atexit(PTR__Init_0033efa8,&DAT_003665a8,&PTR_LOOP_0033f580); + return; +} + + +================================================================== + +### FUNC 00106870 (46 bytes) name=_INIT_5 + +void _INIT_5(void) + +{ + std::ios_base::Init::Init((Init *)&DAT_003665a9); + __cxa_atexit(PTR__Init_0033efa8,&DAT_003665a9,&PTR_LOOP_0033f580); + return; +} + + +================================================================== + +### FUNC 001068a0 (44 bytes) name=FUN_001068a0 + +/* WARNING: Removing unreachable block (ram,0x001068bd) */ +/* WARNING: Removing unreachable block (ram,0x001068c9) */ + +void FUN_001068a0(void) + +{ + return; +} + + +================================================================== + +### FUNC 001068d0 (60 bytes) name=FUN_001068d0 + +/* WARNING: Removing unreachable block (ram,0x001068fa) */ +/* WARNING: Removing unreachable block (ram,0x00106906) */ + +void FUN_001068d0(void) + +{ + return; +} + + +================================================================== + +### FUNC 00106910 (50 bytes) name=_FINI_0 + +void _FINI_0(void) + +{ + if (DAT_0033f620 == '\0') { + if (PTR___cxa_finalize_0033efc0 != (undefined *)0x0) { + __cxa_finalize(PTR_LOOP_0033f580); + } + FUN_001068a0(); + DAT_0033f620 = '\x01'; + } + return; +} + + +================================================================== + +### FUNC 00106950 (46 bytes) name=_INIT_0 + +void _INIT_0(void) + +{ + if ((DAT_0033e9f8 != 0) && (PTR__Jv_RegisterClasses_0033efa0 != (undefined *)0x0)) { + (*(code *)PTR__Jv_RegisterClasses_0033efa0)(&DAT_0033e9f8); + FUN_001068d0(); + return; + } + FUN_001068d0(); + return; +} + + +================================================================== + +### FUNC 00106990 (68 bytes) name=FUN_00106990 + +void FUN_00106990(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ebb0; + if ((void *)param_1[1] != (void *)0x0) { + operator_delete__((void *)param_1[1]); + param_1[1] = 0; + } + param_1[2] = 0; + if ((void *)param_1[3] != (void *)0x0) { + operator_delete__((void *)param_1[3]); + param_1[3] = 0; + } + return; +} + + +================================================================== + +### FUNC 001069e0 (18 bytes) name=FUN_001069e0 + +void FUN_001069e0(void *param_1) + +{ + FUN_00106990(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00106a00 (63 bytes) name=FUN_00106a00 + +void FUN_00106a00(undefined8 *param_1) + +{ + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + *(undefined4 *)(param_1 + 4) = 0; + *param_1 = &PTR_FUN_0033ebb0; + *(undefined4 *)((long)param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 5) = 0; + *(undefined4 *)((long)param_1 + 0x2c) = 0; + return; +} + + +================================================================== + +### FUNC 00106a40 (252 bytes) name=FUN_00106a40 + +undefined8 FUN_00106a40(long param_1,uint param_2,uint param_3,uint param_4) + +{ + void *pvVar1; + + *(undefined4 *)(param_1 + 0x2c) = 0; + if (*(void **)(param_1 + 8) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 8)); + *(undefined8 *)(param_1 + 8) = 0; + } + *(undefined8 *)(param_1 + 0x10) = 0; + if (*(void **)(param_1 + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x18)); + *(undefined8 *)(param_1 + 0x18) = 0; + } + if (((param_2 != 0) && (param_3 < 0x41)) && ((param_3 - 1 & param_3) == 0)) { + *(undefined4 *)(param_1 + 0x20) = 0; + *(uint *)(param_1 + 0x24) = param_2; + *(uint *)(param_1 + 0x28) = param_3; + pvVar1 = operator_new__((((ulong)param_4 + 3 >> 2) + (ulong)(param_2 >> 1)) * 4); + *(void **)(param_1 + 8) = pvVar1; + if (pvVar1 != (void *)0x0) { + *(ulong *)(param_1 + 0x10) = (long)pvVar1 + (ulong)(param_4 & 0xfffffffe); + if (2 < param_3) { + pvVar1 = operator_new__((ulong)param_2 * 4); + *(void **)(param_1 + 0x18) = pvVar1; + if (pvVar1 == (void *)0x0) { + return 0; + } + } + *(undefined4 *)(param_1 + 0x2c) = 1; + return 1; + } + *(undefined8 *)(param_1 + 0x10) = 0; + } + return 0; +} + + +================================================================== + +### FUNC 00106b40 (469 bytes) name=FUN_00106b40 + +undefined8 FUN_00106b40(long param_1,ushort *param_2) + +{ + long lVar1; + ushort *puVar2; + int iVar3; + uint *puVar4; + sbyte sVar5; + uint uVar6; + long lVar7; + int iVar8; + + if (*(int *)(param_1 + 0x2c) == 0) { + return 0; + } + iVar3 = *(int *)(param_1 + 0x28); + iVar8 = *(int *)(param_1 + 0x20) + 1; + *(int *)(param_1 + 0x20) = iVar8; + if (iVar3 == 1) { +LAB_00106d10: + memcpy(*(void **)(param_1 + 0x10),param_2,(ulong)*(uint *)(param_1 + 0x24) * 2); + iVar8 = *(int *)(param_1 + 0x20); + iVar3 = *(int *)(param_1 + 0x28); + } + else if (iVar3 == 2) { + if (iVar8 == 1) goto LAB_00106d10; + puVar2 = *(ushort **)(param_1 + 0x10); + for (uVar6 = *(uint *)(param_1 + 0x24) >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar2 = (ushort)((int)((uint)*param_2 + (uint)*puVar2) >> 1); + puVar2[1] = (ushort)((int)((uint)param_2[1] + (uint)puVar2[1]) >> 1); + puVar2[2] = (ushort)((int)((uint)param_2[2] + (uint)puVar2[2]) >> 1); + puVar2[3] = (ushort)((int)((uint)param_2[3] + (uint)puVar2[3]) >> 1); + puVar2 = puVar2 + 4; + param_2 = param_2 + 4; + } + iVar3 = 2; + } + else { + puVar4 = *(uint **)(param_1 + 0x18); + if (iVar8 == 1) { + uVar6 = *(uint *)(param_1 + 0x24) >> 2; + if (*(uint *)(param_1 + 0x24) >> 2 == 0) { + return 0; + } + do { + *puVar4 = (uint)*param_2; + puVar4[1] = (uint)param_2[1]; + puVar4[2] = (uint)param_2[2]; + uVar6 = uVar6 - 1; + puVar4[3] = (uint)param_2[3]; + puVar4 = puVar4 + 4; + param_2 = param_2 + 4; + } while (uVar6 != 0); + } + else if (iVar8 == iVar3) { + lVar1 = *(long *)(param_1 + 0x10); + sVar5 = 2; + if ((((iVar8 != 4) && (sVar5 = 3, iVar8 != 8)) && (sVar5 = 4, iVar8 != 0x10)) && + ((sVar5 = 5, iVar8 != 0x20 && (sVar5 = 6, iVar8 != 0x40)))) { + sVar5 = 0; + } + iVar8 = *(int *)(param_1 + 0x24); + if (iVar8 == 0) goto LAB_00106bc3; + lVar7 = 0; + do { + uVar6 = (uint)*(ushort *)((long)param_2 + lVar7) + *(int *)((long)puVar4 + lVar7 * 2); + *(short *)(lVar1 + lVar7) = (short)(uVar6 >> sVar5); + *(uint *)((long)puVar4 + lVar7 * 2) = uVar6; + lVar7 = lVar7 + 2; + } while (lVar7 != (ulong)(iVar8 - 1) * 2 + 2); + } + else { + uVar6 = *(uint *)(param_1 + 0x24) >> 2; + if (*(uint *)(param_1 + 0x24) >> 2 == 0) { + return 0; + } + do { + *puVar4 = *puVar4 + (uint)*param_2; + puVar4[1] = puVar4[1] + (uint)param_2[1]; + puVar4[2] = puVar4[2] + (uint)param_2[2]; + puVar4[3] = puVar4[3] + (uint)param_2[3]; + uVar6 = uVar6 - 1; + puVar4 = puVar4 + 4; + param_2 = param_2 + 4; + } while (uVar6 != 0); + } + iVar8 = *(int *)(param_1 + 0x20); + iVar3 = *(int *)(param_1 + 0x28); + } + if (iVar8 != iVar3) { + return 0; + } +LAB_00106bc3: + *(undefined4 *)(param_1 + 0x20) = 0; + return 1; +} + + +================================================================== + +### FUNC 00106d30 (16 bytes) name=FUN_00106d30 + +void FUN_00106d30(long param_1) + +{ + if (*(int *)(param_1 + 0x2c) != 0) { + *(undefined4 *)(param_1 + 0x20) = 0; + } + return; +} + + +================================================================== + +### FUNC 00106d40 (5 bytes) name=FUN_00106d40 + +undefined8 FUN_00106d40(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x10); +} + + +================================================================== + +### FUNC 00106d50 (26 bytes) name=FUN_00106d50 + +void FUN_00106d50(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + if ((FILE *)param_1[1] != (FILE *)0x0) { + fclose((FILE *)param_1[1]); + return; + } + return; +} + + +================================================================== + +### FUNC 00106d80 (26 bytes) name=FUN_00106d80 + +void FUN_00106d80(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + if ((FILE *)param_1[1] != (FILE *)0x0) { + fclose((FILE *)param_1[1]); + return; + } + return; +} + + +================================================================== + +### FUNC 00106db0 (26 bytes) name=FUN_00106db0 + +void FUN_00106db0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + if ((FILE *)param_1[1] != (FILE *)0x0) { + fclose((FILE *)param_1[1]); + return; + } + return; +} + + +================================================================== + +### FUNC 00106de0 (37 bytes) name=FUN_00106de0 + +void FUN_00106de0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + if ((FILE *)param_1[1] != (FILE *)0x0) { + fclose((FILE *)param_1[1]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00106e10 (37 bytes) name=FUN_00106e10 + +void FUN_00106e10(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + if ((FILE *)param_1[1] != (FILE *)0x0) { + fclose((FILE *)param_1[1]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00106e40 (37 bytes) name=FUN_00106e40 + +void FUN_00106e40(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + if ((FILE *)param_1[1] != (FILE *)0x0) { + fclose((FILE *)param_1[1]); + } + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00106e70 (100 bytes) name=FUN_00106e70 + +long FUN_00106e70(long param_1) + +{ + int iVar1; + long lVar2; + long lVar3; + + fflush(*(FILE **)(param_1 + 8)); + iVar1 = feof(*(FILE **)(param_1 + 8)); + if (iVar1 == 0) { + lVar2 = ftell(*(FILE **)(param_1 + 8)); + fseek(*(FILE **)(param_1 + 8),0,2); + lVar3 = ftell(*(FILE **)(param_1 + 8)); + fseek(*(FILE **)(param_1 + 8),lVar2,0); + return lVar3; + } + lVar2 = ftell(*(FILE **)(param_1 + 8)); + return lVar2; +} + + +================================================================== + +### FUNC 00106ee0 (11 bytes) name=FUN_00106ee0 + +void FUN_00106ee0(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ec30; + return; +} + + +================================================================== + +### FUNC 00106ef0 (5 bytes) name=FUN_00106ef0 + +undefined8 FUN_00106ef0(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 00106f00 (23 bytes) name=FUN_00106f00 + +bool FUN_00106f00(long param_1) + +{ + int iVar1; + + iVar1 = feof(*(FILE **)(param_1 + 8)); + return iVar1 != 0; +} + + +================================================================== + +### FUNC 00106f20 (56 bytes) name=FUN_00106f20 + +ulong FUN_00106f20(long param_1,char *param_2,int param_3) + +{ + int iVar1; + char *pcVar2; + ulong uVar3; + + iVar1 = feof(*(FILE **)(param_1 + 8)); + uVar3 = 0; + if (iVar1 == 0) { + pcVar2 = fgets(param_2,param_3,*(FILE **)(param_1 + 8)); + uVar3 = CONCAT71((int7)(uVar3 >> 8),pcVar2 != (char *)0x0); + } + return uVar3 & 0xffffffff; +} + + +================================================================== + +### FUNC 00106f60 (31 bytes) name=FUN_00106f60 + +long FUN_00106f60(long param_1,void *param_2,size_t param_3,size_t param_4) + +{ + size_t sVar1; + + sVar1 = fread(param_2,param_3,param_4,*(FILE **)(param_1 + 8)); + return sVar1 * param_3; +} + + +================================================================== + +### FUNC 00106f80 (9 bytes) name=FUN_00106f80 + +void FUN_00106f80(long param_1) + +{ + ftell(*(FILE **)(param_1 + 8)); + return; +} + + +================================================================== + +### FUNC 00106f90 (23 bytes) name=FUN_00106f90 + +bool FUN_00106f90(long param_1,long param_2,int param_3) + +{ + int iVar1; + + iVar1 = fseek(*(FILE **)(param_1 + 8),param_2,param_3); + return iVar1 == 0; +} + + +================================================================== + +### FUNC 00106fb0 (149 bytes) name=FUN_00106fb0 + +void FUN_00106fb0(undefined8 *param_1,char *param_2,char param_3) + +{ + FILE *pFVar1; + undefined8 *puVar2; + + *param_1 = &PTR_FUN_0033ec70; + if (param_3 == '\0') { + pFVar1 = fopen(param_2,"wb"); + param_1[1] = pFVar1; + if (pFVar1 == (FILE *)0x0) { + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "IOError: open file failed2.[IFStream::IFStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,&PTR_vtable_0033ec10,0); + } + } + else { + pFVar1 = fopen(param_2,"rb+"); + param_1[1] = pFVar1; + if (pFVar1 == (FILE *)0x0) { + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "IOError: open file failed1.[IFStream::IFStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,&PTR_vtable_0033ec10,0); + } + } + return; +} + + +================================================================== + +### FUNC 00107080 (23 bytes) name=FUN_00107080 + +bool FUN_00107080(long param_1) + +{ + int iVar1; + + iVar1 = fflush(*(FILE **)(param_1 + 8)); + return iVar1 == 0; +} + + +================================================================== + +### FUNC 001070a0 (29 bytes) name=FUN_001070a0 + +uint FUN_001070a0(long param_1,char *param_2) + +{ + uint uVar1; + + uVar1 = fputs(param_2,*(FILE **)(param_1 + 8)); + return ~uVar1 >> 0x1f; +} + + +================================================================== + +### FUNC 001070c0 (36 bytes) name=FUN_001070c0 + +bool FUN_001070c0(long param_1,void *param_2,size_t param_3,size_t param_4) + +{ + size_t sVar1; + + sVar1 = fwrite(param_2,param_3,param_4,*(FILE **)(param_1 + 8)); + return sVar1 != 0; +} + + +================================================================== + +### FUNC 001070f0 (51 bytes) name=FUN_001070f0 + +undefined8 FUN_001070f0(long param_1,char *param_2) + +{ + int iVar1; + + iVar1 = fputs(param_2,*(FILE **)(param_1 + 8)); + if (-1 < iVar1) { + iVar1 = fputs("\n",*(FILE **)(param_1 + 8)); + if (-1 < iVar1) { + return 1; + } + } + return 0; +} + + +================================================================== + +### FUNC 00107130 (135 bytes) name=FUN_00107130 + +void FUN_00107130(undefined8 *param_1,char *param_2) + +{ + FILE *__stream; + long lVar1; + undefined8 *puVar2; + + *param_1 = &PTR_FUN_0033ecb0; + param_1[2] = 0; + __stream = fopen(param_2,"rb"); + param_1[1] = __stream; + if (__stream != (FILE *)0x0) { + fseek(__stream,0,2); + lVar1 = ftell((FILE *)param_1[1]); + param_1[2] = lVar1; + fseek((FILE *)param_1[1],0,0); + return; + } + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "IOError: open file failed.[IFStream::IFStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,&PTR_vtable_0033ec10,0); +} + + +================================================================== + +### FUNC 001071e0 (827 bytes) name=FUN_001071e0 + +void FUN_001071e0(long param_1) + +{ + ulong uVar1; + int iVar2; + uint uVar3; + undefined8 *puVar5; + undefined8 *puVar6; + bool bVar7; + byte bVar8; + ulong uVar4; + + bVar8 = 0; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + *(undefined4 *)(param_1 + 0x1ef8) = 0; + *(undefined4 *)(param_1 + 0x208) = 0; + *(undefined4 *)(param_1 + 0x20c) = 0; + *(undefined4 *)(param_1 + 0x214) = 0; + *(undefined4 *)(param_1 + 0x210) = 0; + *(undefined4 *)(param_1 + 0x1328) = 0; + *(undefined4 *)(param_1 + 0x1760) = 0; + if (*(void **)(param_1 + 0x240) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x240)); + *(undefined8 *)(param_1 + 0x240) = 0; + } + if (*(void **)(param_1 + 0x248) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x248)); + *(undefined8 *)(param_1 + 0x248) = 0; + } + if (*(void **)(param_1 + 0x250) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x250)); + *(undefined8 *)(param_1 + 0x250) = 0; + } + *(undefined8 *)(param_1 + 600) = 0; + *(undefined8 *)(param_1 + 0x260) = 0; + *(undefined8 *)(param_1 + 0x268) = 0; + *(undefined8 *)(param_1 + 0x270) = 0; + if (*(void **)(param_1 + 0x278) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x278)); + *(undefined8 *)(param_1 + 0x278) = 0; + } + *(undefined8 *)(param_1 + 0x280) = 0; + if (*(void **)(param_1 + 0x298) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x298)); + *(undefined8 *)(param_1 + 0x298) = 0; + } + if (*(void **)(param_1 + 0x2a0) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x2a0)); + *(undefined8 *)(param_1 + 0x2a0) = 0; + } + if (*(void **)(param_1 + 0x200) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x200)); + *(undefined8 *)(param_1 + 0x200) = 0; + } + if (*(void **)(param_1 + 0x2a8) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x2a8)); + *(undefined8 *)(param_1 + 0x2a8) = 0; + } + if (*(void **)(param_1 + 0x288) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x288)); + *(undefined8 *)(param_1 + 0x288) = 0; + } + if (*(void **)(param_1 + 0x290) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x290)); + *(undefined8 *)(param_1 + 0x290) = 0; + } + if (*(void **)(param_1 + 0x1580) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x1580)); + *(undefined8 *)(param_1 + 0x1580) = 0; + } + if (*(void **)(param_1 + 0x1588) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x1588)); + *(undefined8 *)(param_1 + 0x1588) = 0; + } + if (*(void **)(param_1 + 0x1590) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x1590)); + *(undefined8 *)(param_1 + 0x1590) = 0; + } + puVar5 = (undefined8 *)(param_1 + 0x1328); + uVar4 = 0x438; + iVar2 = 0x438; + bVar7 = ((ulong)puVar5 & 1) != 0; + if (bVar7) { + puVar5 = (undefined8 *)(param_1 + 0x1329); + *(undefined1 *)(param_1 + 0x1328) = 0; + uVar4 = 0x437; + iVar2 = 0x437; + } + if (((ulong)puVar5 & 2) == 0) { + uVar3 = (uint)uVar4; + } + else { + uVar3 = iVar2 - 2; + uVar4 = (ulong)uVar3; + *(undefined2 *)puVar5 = 0; + puVar5 = (undefined8 *)((long)puVar5 + 2); + } + if (((ulong)puVar5 & 4) != 0) { + *(undefined4 *)puVar5 = 0; + uVar4 = (ulong)(uVar3 - 4); + puVar5 = (undefined8 *)((long)puVar5 + 4); + } + for (uVar1 = uVar4 >> 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar5 = 0; + puVar5 = puVar5 + (ulong)bVar8 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar5 = 0; + puVar5 = (undefined8 *)((long)puVar5 + 4); + } + puVar6 = puVar5; + if ((uVar4 & 2) != 0) { + puVar6 = (undefined8 *)((long)puVar5 + 2); + *(undefined2 *)puVar5 = 0; + } + if (bVar7) { + *(undefined1 *)puVar6 = 0; + } + FUN_00106a40(param_1 + 0x1dc0,0,0,0); + FUN_00106a40(param_1 + 0x1df0,0,0,0); + FUN_00106a40(param_1 + 0x1e20,0,0,0); + FUN_00119ee0(param_1 + 0x1e50,0,0,0,0); + FUN_00119ee0(param_1 + 0x1e90,0,0,0,0); + memset((void *)(param_1 + 0x1f08),0,0x2c78); + memset((void *)(param_1 + 0x4b80),0,0x2c78); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return; +} + + +================================================================== + +### FUNC 00107530 (252 bytes) name=FUN_00107530 + +undefined8 FUN_00107530(long param_1,uint param_2,int param_3) + +{ + pthread_mutex_t *__mutex; + void *pvVar1; + uint uVar2; + undefined1 auStack_48 [32]; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + if ((((*(int *)(param_1 + 0x208) != 0) && ((param_2 & 3) == 0)) && (3 < param_2)) && + (param_3 != 0)) { + uVar2 = param_2 * param_3; + if ((uint)(*(int *)(param_1 + 0x1edc) * *(int *)(param_1 + 0x1ed8)) < uVar2) { + if (*(void **)(param_1 + 0x200) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x200)); + *(undefined8 *)(param_1 + 0x200) = 0; + } + pvVar1 = operator_new__((ulong)uVar2); + *(void **)(param_1 + 0x200) = pvVar1; + if (pvVar1 == (void *)0x0) { + FUN_00113aa0(auStack_48,4); + FUN_00116630(auStack_48,"Insufficient memory"); + FUN_00113b30(auStack_48); + FUN_001071e0(param_1); + pthread_mutex_unlock(__mutex); + return 0; + } + } + *(uint *)(param_1 + 0x1ed8) = param_2; + *(int *)(param_1 + 0x1edc) = param_3; + *(uint *)(param_1 + 0x77fc) = uVar2; + *(uint *)(param_1 + 0xadc) = param_2; + *(int *)(param_1 + 0xae0) = param_3; + } + pthread_mutex_unlock(__mutex); + return 1; +} + + +================================================================== + +### FUNC 00107640 (269 bytes) name=FUN_00107640 + +int FUN_00107640(long param_1,undefined8 param_2,int param_3) + +{ + pthread_mutex_t *__mutex; + int iVar1; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + if (*(int *)(param_1 + 0x208) == 0) { + pthread_mutex_unlock(__mutex); + return 0; + } + if (param_3 != 0) { + *(undefined4 *)(param_1 + 0x20c) = 0; + *(undefined4 *)(param_1 + 0x1f0c) = 0; + *(undefined4 *)(param_1 + 0x1f10) = 0; + *(undefined4 *)(param_1 + 0x1f14) = 0; + *(undefined4 *)(param_1 + 0x1f18) = 0; + FUN_00106d30(param_1 + 0x1dc0); + FUN_00106d30(param_1 + 0x1df0); + if (1 < *(uint *)(param_1 + 0x1eec)) { + FUN_00106d30(param_1 + 0x1e20); + } + if (1 < *(uint *)(param_1 + 0x1ef0)) { + FUN_0011a230(param_1 + 0x1e50); + } + FUN_0011a230(param_1 + 0x1e90); + } + iVar1 = FUN_00106b40(param_1 + 0x1dc0,param_2); + if (iVar1 != 0) { + *(undefined4 *)(param_1 + 0x20c) = 1; + } + pthread_mutex_unlock(__mutex); + return iVar1; +} + + +================================================================== + +### FUNC 00107760 (601 bytes) name=FUN_00107760 + +void FUN_00107760(long param_1) + +{ + long lVar1; + long lVar2; + int iVar3; + ulong uVar4; + FILE *__stream; + size_t sVar5; + long lVar6; + size_t sVar7; + int iVar8; + uint uVar9; + int *piVar10; + uint uVar11; + uint uVar12; + long lVar14; + ulong uVar13; + + *(undefined4 *)(param_1 + 0x1330) = 0; + piVar10 = (int *)(param_1 + 0x1448); + uVar4 = 0; + do { + uVar13 = uVar4; + uVar11 = (uint)uVar13; + uVar4 = (ulong)(uVar11 + 1); + if (uVar11 == *(int *)(param_1 + 0x1438) - 2U) break; + iVar3 = *piVar10; + piVar10 = piVar10 + 1; + } while (iVar3 < *(int *)(param_1 + 0x3c)); + iVar3 = *(int *)(param_1 + 0x77f8); + iVar8 = *(int *)(param_1 + 0x1434); + uVar12 = *(uint *)(param_1 + 0x143c); + *(uint *)(param_1 + 0x1720) = uVar11; + uVar9 = iVar3 * 2 * (iVar8 * 3 + -1) + *(int *)(param_1 + 0x1440) + uVar12; + if (uVar11 <= uVar11 + 1) { + do { + lVar1 = param_1 + uVar13 * 4; + if (*(int *)(lVar1 + 0x1598) == 0) { + iVar3 = access((char *)(param_1 + 0x1334),0); + if (iVar3 != 0) { +LAB_001079a7: + *(undefined4 *)(param_1 + 0x1328) = 0; + return; + } + __stream = fopen((char *)(param_1 + 0x1334),"rb"); + fseek(__stream,(ulong)*(uint *)(lVar1 + 0x15e8),0); + sVar5 = fread((void *)((ulong)*(uint *)(lVar1 + 0x1638) + *(long *)(param_1 + 0x1580)),1, + (ulong)uVar9,__stream); + if ((*(int *)(lVar1 + 0x1534) != 0) && ((uint)uVar13 <= *(int *)(param_1 + 0x1438) - 2U)) { + fseek(__stream,(ulong)*(uint *)(lVar1 + 0x1688),0); + sVar7 = fread((void *)((ulong)*(uint *)(lVar1 + 0x16d4) + *(long *)(param_1 + 0x1590)),4, + (ulong)(uint)(*(int *)(lVar1 + 0x1534) * 10),__stream); + if ((ulong)(uint)(*(int *)(lVar1 + 0x1534) * 10) != (sVar7 & 0xffffffff)) { + fclose(__stream); + goto LAB_001079a7; + } + } + fclose(__stream); + if (uVar9 != (uint)sVar5) goto LAB_001079a7; + *(undefined4 *)(lVar1 + 0x1598) = 1; + } + uVar11 = *(uint *)(param_1 + 0x1720); + uVar12 = (uint)uVar13 + 1; + uVar13 = (ulong)uVar12; + uVar4 = (ulong)(uVar11 + 1); + } while (uVar12 <= uVar11 + 1); + iVar3 = *(int *)(param_1 + 0x77f8); + iVar8 = *(int *)(param_1 + 0x1434); + uVar12 = *(uint *)(param_1 + 0x143c); + } + lVar1 = param_1 + (ulong)uVar11 * 4; + uVar11 = *(uint *)(lVar1 + 0x1638); + lVar6 = (ulong)*(uint *)(param_1 + 0x1638 + uVar4 * 4) + *(long *)(param_1 + 0x1580); + *(long *)(param_1 + 0x1730) = lVar6; + lVar2 = ((ulong)(uVar12 >> 1) + (ulong)(uint)(iVar3 * (iVar8 + -1))) * 2; + lVar14 = (ulong)uVar11 + *(long *)(param_1 + 0x1580); + *(long *)(param_1 + 0x1728) = lVar14; + *(long *)(param_1 + 0x1748) = lVar6 + lVar2; + *(long *)(param_1 + 0x1740) = lVar14 + lVar2; + *(ulong *)(param_1 + 0x1758) = (ulong)*(uint *)(lVar1 + 0x16d4) + *(long *)(param_1 + 0x1590); + return; +} + + +================================================================== + +### FUNC 001079d0 (3935 bytes) name=FUN_001079d0 + +void FUN_001079d0(long param_1,undefined4 param_2) + +{ + pthread_mutex_t *__mutex; + undefined2 uVar1; + undefined4 uVar2; + ulong uVar3; + undefined1 uVar4; + uint uVar5; + char *pcVar6; + undefined1 *puVar7; + int *piVar8; + char cVar9; + ulong uVar10; + int iVar11; + int iVar12; + long lVar13; + int iVar14; + undefined8 *puVar15; + undefined8 *puVar16; + undefined8 *puVar17; + undefined8 *puVar18; + undefined8 *puVar19; + undefined8 *puVar20; + int iVar21; + bool bVar22; + byte bVar23; + + bVar23 = 0; + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + puVar15 = (undefined8 *)(param_1 + 0x2b0); + puVar17 = (undefined8 *)(param_1 + 0x6d8); + puVar16 = (undefined8 *)(param_1 + 0xb00); + puVar18 = (undefined8 *)(param_1 + 0xf28); + switch(param_2) { + case 0: + iVar11 = 0; + puVar7 = (undefined1 *)(param_1 + 0x2b2); + do { + uVar4 = (undefined1)iVar11; + *puVar7 = uVar4; + puVar7[-1] = uVar4; + puVar7[-2] = uVar4; + iVar11 = iVar11 + 1; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (iVar11 != 0x100); + break; + case 1: + iVar11 = 0xff; + puVar7 = (undefined1 *)(param_1 + 0x2b2); + do { + uVar4 = (undefined1)iVar11; + *puVar7 = uVar4; + puVar7[-1] = uVar4; + puVar7[-2] = uVar4; + iVar11 = iVar11 + -1; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (iVar11 != -1); + break; + case 2: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + iVar11 = 0; + do { + *puVar7 = 0; + puVar7[-1] = 0; + iVar14 = iVar11 + 0x75; + puVar7[1] = 0; + puVar7[-2] = (char)(iVar11 / 0x16); + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 0xa0e); + puVar7 = (undefined1 *)(param_1 + 0x30a); + iVar11 = 0; + iVar14 = 0; + do { + puVar7[-1] = 0; + puVar7[1] = 0; + iVar21 = iVar14 + 0xbc; + *puVar7 = (char)(iVar14 / 0x47); + puVar7[-2] = (char)(iVar11 / 0x47) + 'u'; + puVar7 = puVar7 + 4; + iVar11 = iVar11 + 0x25; + iVar14 = iVar21; + } while (iVar21 != 0x3424); + pcVar6 = (char *)(param_1 + 0x426); + iVar11 = 0; + iVar14 = 0; + iVar21 = 0; + do { + pcVar6[1] = '\0'; + iVar12 = iVar21 + 0x27; + *pcVar6 = (char)(iVar21 / 0x1d) + -0x44; + pcVar6[-1] = (char)(iVar11 / 0x94); + pcVar6[-2] = (char)(iVar14 / 0x1d) + -0x66; + pcVar6 = pcVar6 + 4; + iVar11 = iVar11 + 0xff; + iVar14 = iVar14 + -0x3b; + iVar21 = iVar12; + } while (iVar12 != 0x46b); + pcVar6 = (char *)(param_1 + 0x49a); + iVar11 = 0; + iVar14 = 0x1ce3; + iVar21 = 0; + do { + pcVar6[1] = '\0'; + iVar12 = iVar21 + 0x1c; + *pcVar6 = (char)(iVar21 / 0x1e) + -0x1d; + pcVar6[-1] = (char)(iVar14 / 0x94); + pcVar6[-2] = (char)(iVar11 / 0x12) + '_'; + pcVar6 = pcVar6 + 4; + iVar11 = iVar11 + -0x50; + iVar14 = iVar14 + 0xff; + iVar21 = iVar12; + } while (iVar12 != 0x1f8); + puVar19 = puVar15; + iVar11 = 0x2ed1; + iVar14 = 0x1f8; + do { + *(undefined1 *)(puVar19 + 0x46) = 0xf; + *(undefined1 *)((long)puVar19 + 0x233) = 0; + iVar21 = iVar14 + 0x1c; + *(char *)((long)puVar19 + 0x232) = (char)(iVar14 / 0x1e) + -0x1d; + *(char *)((long)puVar19 + 0x231) = (char)(iVar11 / 0x94); + puVar19 = (undefined8 *)((long)puVar19 + 4); + iVar11 = iVar11 + 0xff; + iVar14 = iVar21; + } while (iVar21 != 0x348); + puVar7 = (undefined1 *)(param_1 + 0x512); + iVar11 = 0x3ac5; + do { + *puVar7 = 0xff; + puVar7[-2] = 0xf; + puVar7[1] = 0; + iVar14 = iVar11 + 0xff; + puVar7[-1] = (char)(iVar11 / 0x94); + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 0x817e); + puVar7 = (undefined1 *)(param_1 + 0x62e); + iVar11 = 0; + iVar14 = 0x817e; + do { + *puVar7 = 0xff; + puVar7[1] = 0; + iVar21 = iVar14 + 0xff; + puVar7[-1] = (char)(iVar14 / 0x94); + puVar7[-2] = (char)(iVar11 >> 5) + '\x0f'; + puVar7 = puVar7 + 4; + iVar11 = iVar11 + 0xf0; + iVar14 = iVar21; + } while (iVar21 != 0x936c); + puVar19 = puVar15; + iVar11 = 0x10e0; + do { + iVar14 = iVar11 + 0xf0; + *(undefined1 *)((long)puVar19 + 0x3c6) = 0xff; + *(undefined1 *)((long)puVar19 + 0x3c5) = 0xff; + *(undefined1 *)((long)puVar19 + 0x3c7) = 0; + *(char *)((long)puVar19 + 0x3c4) = (char)(iVar11 >> 5) + '\x0f'; + puVar19 = (undefined8 *)((long)puVar19 + 4); + iVar11 = iVar14; + } while (iVar14 != 0x1ef0); + break; + case 3: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + iVar11 = 0; + iVar14 = 0; + do { + iVar21 = iVar11 + 0xff; + *puVar7 = 0; + puVar7[1] = 0; + puVar7[-1] = (char)(iVar11 >> 7); + puVar7[-2] = (char)(iVar14 >> 6) + '2'; + puVar7 = puVar7 + 4; + iVar11 = iVar21; + iVar14 = iVar14 + 0xcd; + } while (iVar21 != 0x3fc0); + iVar11 = 0; + puVar7 = (undefined1 *)(param_1 + 0x3b2); + do { + puVar7[1] = 0; + *puVar7 = (char)(iVar11 >> 6); + puVar7[-1] = (char)(iVar11 + 0x3fc0 >> 7); + iVar14 = -iVar11; + if (iVar14 < 0) { + iVar14 = iVar14 + 0x3f; + } + iVar11 = iVar11 + 0xff; + puVar7[-2] = (char)(iVar14 >> 6) + -1; + puVar7 = puVar7 + 4; + } while (iVar11 != 0x3fc0); + puVar7 = (undefined1 *)(param_1 + 0x4b2); + iVar11 = 0; + do { + *puVar7 = 0xff; + puVar7[1] = 0; + iVar14 = iVar11 + 0x3f; + if (-1 < iVar11) { + iVar14 = iVar11; + } + puVar7[-1] = (char)(iVar14 >> 6) + -1; + iVar14 = iVar11 + -0xff; + puVar7[-2] = (char)(-iVar11 >> 7); + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != -0x3fc0); + iVar11 = 0; + puVar7 = (undefined1 *)(param_1 + 0x5b2); + do { + *puVar7 = 0xff; + puVar7[1] = 0; + puVar7[-1] = (char)(iVar11 >> 6); + iVar14 = iVar11 + 0x3fc0; + iVar11 = iVar11 + 0xff; + puVar7[-2] = (char)(iVar14 >> 7); + puVar7 = puVar7 + 4; + } while (iVar11 != 0x3fc0); + break; + case 4: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + iVar11 = 0; + do { + puVar7[-1] = (char)iVar11; + iVar11 = iVar11 + 1; + *puVar7 = 0x32; + puVar7[-2] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (iVar11 != 0x32); + iVar11 = 0x32; + pcVar6 = (char *)(param_1 + 0x37a); + iVar14 = 0; + do { + pcVar6[-1] = (char)iVar11; + iVar11 = iVar11 + 1; + pcVar6[-2] = '\0'; + pcVar6[1] = '\0'; + *pcVar6 = (char)(iVar14 / 0x96) + '2'; + pcVar6 = pcVar6 + 4; + iVar14 = iVar14 + 0xcd; + } while (iVar11 != 200); + puVar7 = (undefined1 *)(param_1 + 0x5d2); + iVar11 = 200; + do { + puVar7[-1] = (char)iVar11; + iVar11 = iVar11 + 1; + *puVar7 = 0xff; + puVar7[-2] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (iVar11 != 0x100); + break; + case 5: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + iVar11 = 0; + iVar14 = 0; + iVar21 = 0; + do { + iVar12 = iVar21 + 0xcb; + puVar7[1] = 0; + *puVar7 = (char)(iVar21 >> 6); + puVar7[-1] = (char)(iVar11 >> 6); + puVar7[-2] = (char)(iVar14 >> 6); + puVar7 = puVar7 + 4; + iVar11 = iVar11 + 0x16; + iVar14 = iVar14 + 0x24; + iVar21 = iVar12; + } while (iVar12 != 0x32c0); + iVar14 = 0; + iVar21 = 0; + iVar11 = 0; + pcVar6 = (char *)(param_1 + 0x3b2); + do { + pcVar6[1] = '\0'; + *pcVar6 = (char)(iVar11 >> 6) + -0x35; + pcVar6[-1] = (char)(iVar21 >> 6) + '\x16'; + iVar12 = iVar14 + 0x3f; + if (-1 < iVar14) { + iVar12 = iVar14; + } + iVar11 = iVar11 + 0x34; + iVar21 = iVar21 + 0x44; + iVar14 = iVar14 + -0x24; + pcVar6[-2] = (char)(iVar12 >> 6) + '$'; + pcVar6 = pcVar6 + 4; + } while (iVar11 != 0xd00); + puVar7 = (undefined1 *)(param_1 + 0x4b2); + iVar11 = 0; + do { + iVar14 = iVar11 + 0x7c; + *puVar7 = 0xff; + puVar7[-2] = 0; + puVar7[1] = 0; + puVar7[-1] = (char)(iVar11 >> 6) + 'Z'; + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 0x1f00); + puVar7 = (undefined1 *)(param_1 + 0x5b2); + iVar11 = 0; + iVar14 = 0; + do { + iVar21 = iVar14 + 0x29; + *puVar7 = 0xff; + puVar7[1] = 0; + puVar7[-1] = (char)(iVar14 >> 6) + -0x2a; + puVar7[-2] = (char)(iVar11 >> 6); + puVar7 = puVar7 + 4; + iVar11 = iVar11 + 0xff; + iVar14 = iVar21; + } while (iVar21 != 0xa40); + break; + case 6: + pcVar6 = (char *)(param_1 + 0x2b2); + iVar11 = 0; + do { + pcVar6[1] = '\0'; + iVar14 = iVar11 + -0xff; + *pcVar6 = (char)(iVar11 / 100) + -1; + pcVar6[-1] = ~(byte)iVar11; + pcVar6[-2] = ~(byte)iVar11; + pcVar6 = pcVar6 + 4; + iVar11 = iVar14; + } while (iVar14 != -0x639c); + iVar11 = 0; + puVar7 = (undefined1 *)(param_1 + 0x442); + do { + puVar7[1] = 0; + iVar14 = iVar11 / 0x69; + cVar9 = (char)iVar11 + -0x65; + iVar11 = iVar11 + 0xff; + *puVar7 = (char)iVar14; + puVar7[-1] = cVar9; + puVar7[-2] = cVar9; + puVar7 = puVar7 + 4; + } while (iVar11 != 0x6897); + puVar7 = (undefined1 *)(param_1 + 0x5e6); + iVar11 = 0x32; + do { + puVar7[-1] = (char)iVar11; + puVar7[-2] = (char)iVar11; + iVar11 = iVar11 + -1; + *puVar7 = 0xff; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (iVar11 != -1); + break; + case 7: + iVar11 = 0; + pcVar6 = (char *)(param_1 + 0x2b2); + do { + cVar9 = (char)iVar11; + iVar11 = iVar11 + 1; + pcVar6[-1] = '\0'; + pcVar6[-2] = '\0'; + pcVar6[1] = '\0'; + *pcVar6 = cVar9 * '\x02'; + pcVar6 = pcVar6 + 4; + } while (iVar11 != 0x80); + puVar7 = (undefined1 *)(param_1 + 0x4b2); + iVar11 = 0; + do { + *puVar7 = 0xff; + puVar7[1] = 0; + iVar14 = iVar11 + 0xff; + uVar4 = (undefined1)(iVar11 / 0x7f); + puVar7[-1] = uVar4; + puVar7[-2] = uVar4; + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 0x7f80); + break; + case 8: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + cVar9 = '\x7f'; + do { + puVar7[-2] = cVar9; + cVar9 = cVar9 + '\x04'; + *puVar7 = 0; + puVar7[-1] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != -1); + puVar7 = (undefined1 *)(param_1 + 0x332); + iVar11 = 0; + do { + iVar14 = iVar11 + 0xff; + *puVar7 = 0; + puVar7[-2] = 0xff; + puVar7[1] = 0; + puVar7[-1] = (char)(iVar11 >> 6); + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 0x3fc0); + iVar11 = 0; + puVar7 = (undefined1 *)(param_1 + 0x432); + do { + puVar7[-1] = 0xff; + puVar7[1] = 0; + *puVar7 = (char)(iVar11 >> 6); + iVar14 = -iVar11; + if (iVar14 < 0) { + iVar14 = iVar14 + 0x3f; + } + iVar11 = iVar11 + 0xff; + puVar7[-2] = (char)(iVar14 >> 6) + -1; + puVar7 = puVar7 + 4; + } while (iVar11 != 0x3fc0); + iVar11 = 0; + puVar7 = (undefined1 *)(param_1 + 0x532); + do { + *puVar7 = 0xff; + puVar7[-2] = 0; + puVar7[1] = 0; + iVar14 = iVar11 + 0x3f; + if (-1 < iVar11) { + iVar14 = iVar11; + } + iVar11 = iVar11 + -0xff; + puVar7[-1] = (char)(iVar14 >> 6) + -1; + puVar7 = puVar7 + 4; + } while (iVar11 != -0x3fc0); + pcVar6 = (char *)(param_1 + 0x632); + cVar9 = -1; + do { + *pcVar6 = cVar9; + cVar9 = cVar9 + -4; + pcVar6[-1] = '\0'; + pcVar6[-2] = '\0'; + pcVar6[1] = '\0'; + pcVar6 = pcVar6 + 4; + } while (cVar9 != '\x7f'); + break; + case 9: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + iVar11 = 0; + do { + puVar7[1] = 0; + iVar14 = iVar11 + 0xff; + uVar4 = (undefined1)(iVar11 / 200); + *puVar7 = uVar4; + puVar7[-1] = uVar4; + puVar7[-2] = uVar4; + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 0x9867); + puVar7 = (undefined1 *)(param_1 + 0x516); + iVar11 = 0x9867; + do { + puVar7[-1] = 0xc3; + puVar7[-2] = 0xc3; + iVar14 = iVar11 + 0xff; + puVar7[1] = 0; + *puVar7 = (char)(iVar11 / 200); + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != 51000); + puVar7 = (undefined1 *)(param_1 + 0x5d2); + iVar11 = 0; + do { + *puVar7 = 0xff; + puVar7[1] = 0; + iVar14 = iVar11 + -0xc3; + cVar9 = (char)(iVar11 / 0x37) + -0x3d; + puVar7[-1] = cVar9; + puVar7[-2] = cVar9; + puVar7 = puVar7 + 4; + iVar11 = iVar14; + } while (iVar14 != -0x2aa8); + break; + case 10: + pcVar6 = (char *)(param_1 + 0x2b2); + cVar9 = '\0'; + do { + *pcVar6 = cVar9; + pcVar6[-2] = cVar9; + cVar9 = cVar9 + '\a'; + pcVar6[-1] = '\0'; + pcVar6[1] = '\0'; + pcVar6 = pcVar6 + 4; + } while (cVar9 != -4); + iVar11 = 0; + pcVar6 = (char *)(param_1 + 0x342); + do { + pcVar6[-1] = '\0'; + cVar9 = (char)iVar11; + pcVar6[1] = '\0'; + iVar14 = iVar11 + 3; + if (-1 < iVar11) { + iVar14 = iVar11; + } + iVar11 = iVar11 + 7; + *pcVar6 = -4 - cVar9; + pcVar6[-2] = -4 - (char)(iVar14 >> 2); + pcVar6 = pcVar6 + 4; + } while (iVar11 != 0x103); + iVar11 = 0xf5; + puVar7 = (undefined1 *)(param_1 + 0x3d6); + do { + *puVar7 = 0; + puVar7[1] = 0; + puVar7[-1] = -4 - (char)iVar11; + iVar14 = iVar11 + 3; + if (-1 < iVar11) { + iVar14 = iVar11; + } + iVar11 = iVar11 + -7; + puVar7[-2] = -4 - (char)(iVar14 >> 2); + puVar7 = puVar7 + 4; + } while (iVar11 != -7); + uVar10 = 0; + puVar7 = (undefined1 *)(param_1 + 0x466); + do { + *puVar7 = 0; + puVar7[1] = 0; + puVar7[-1] = -4 - (char)((int)(uVar10 >> 0x1f) + (int)uVar10 >> 1); + cVar9 = (char)uVar10; + uVar5 = (int)uVar10 + 7; + uVar10 = (ulong)uVar5; + puVar7[-2] = -4 - cVar9; + puVar7 = puVar7 + 4; + } while (uVar5 != 0x103); + uVar10 = 0xf5; + pcVar6 = (char *)(param_1 + 0x4fa); + do { + pcVar6[-2] = '\0'; + pcVar6[1] = '\0'; + iVar11 = (int)uVar10; + *pcVar6 = -4 - (char)uVar10; + uVar3 = uVar10 >> 0x1f; + uVar5 = iVar11 - 7; + uVar10 = (ulong)uVar5; + pcVar6[-1] = -4 - (char)((int)uVar3 + iVar11 >> 1); + pcVar6 = pcVar6 + 4; + } while (uVar5 != 0xfffffff9); + iVar11 = 0; + pcVar6 = (char *)(param_1 + 0x58a); + do { + pcVar6[-2] = '\0'; + pcVar6[1] = '\0'; + iVar14 = iVar11 + 3; + if (-1 < iVar11) { + iVar14 = iVar11; + } + *pcVar6 = -4 - (char)(iVar14 >> 2); + cVar9 = (char)iVar11; + iVar11 = iVar11 + 7; + pcVar6[-1] = -4 - cVar9; + pcVar6 = pcVar6 + 4; + } while (iVar11 != 0x103); + iVar11 = 0xfc; + pcVar6 = (char *)(param_1 + 0x61e); + do { + pcVar6[1] = '\0'; + iVar14 = iVar11 + 3; + if (-1 < iVar11) { + iVar14 = iVar11; + } + *pcVar6 = -4 - (char)(iVar14 >> 2); + cVar9 = -4 - (char)iVar11; + iVar11 = iVar11 + -7; + pcVar6[-1] = cVar9; + pcVar6[-2] = cVar9; + pcVar6 = pcVar6 + 4; + } while (iVar11 != -7); + break; + case 0xb: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + cVar9 = '\0'; + do { + puVar7[-2] = cVar9; + cVar9 = cVar9 + '\a'; + *puVar7 = 0; + puVar7[-1] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != -4); + puVar7 = (undefined1 *)(param_1 + 0x342); + cVar9 = '\0'; + do { + puVar7[-1] = cVar9; + cVar9 = cVar9 + '\a'; + *puVar7 = 0; + puVar7[-2] = 0xff; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != '\x03'); + puVar7 = (undefined1 *)(param_1 + 0x3d6); + cVar9 = -0xb; + do { + puVar7[-2] = cVar9; + cVar9 = cVar9 + -7; + *puVar7 = 0; + puVar7[-1] = 0xff; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != -7); + pcVar6 = (char *)(param_1 + 0x466); + cVar9 = '\0'; + do { + *pcVar6 = cVar9; + cVar9 = cVar9 + '\a'; + pcVar6[-1] = -1; + pcVar6[-2] = '\0'; + pcVar6[1] = '\0'; + pcVar6 = pcVar6 + 4; + } while (cVar9 != '\x03'); + puVar7 = (undefined1 *)(param_1 + 0x4fa); + cVar9 = -0xb; + do { + puVar7[-1] = cVar9; + cVar9 = cVar9 + -7; + *puVar7 = 0xff; + puVar7[-2] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != -7); + puVar7 = (undefined1 *)(param_1 + 0x58a); + cVar9 = '\0'; + do { + puVar7[-2] = cVar9; + cVar9 = cVar9 + '\a'; + *puVar7 = 0xff; + puVar7[-1] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != '\x03'); + puVar7 = (undefined1 *)(param_1 + 0x61e); + cVar9 = '\0'; + do { + puVar7[-1] = cVar9; + cVar9 = cVar9 + '\a'; + *puVar7 = 0xff; + puVar7[-2] = 0xff; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (cVar9 != '\x03'); + break; + case 0xc: + puVar7 = (undefined1 *)(param_1 + 0x2b2); + lVar13 = 0; + do { + puVar7[-1] = (char)lVar13; + lVar13 = lVar13 + 4; + *puVar7 = 0; + puVar7[-2] = 0xff; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (lVar13 != 0x100); + iVar11 = 0x3f; + puVar7 = (undefined1 *)(param_1 + 0x3b2); + do { + cVar9 = (char)iVar11; + iVar11 = iVar11 + -1; + *puVar7 = 0; + puVar7[-1] = 0xff; + puVar7[1] = 0; + puVar7[-2] = cVar9 * '\x04'; + puVar7 = puVar7 + 4; + } while (iVar11 != -1); + puVar7 = (undefined1 *)(param_1 + 0x4b2); + lVar13 = 0; + do { + *puVar7 = (char)lVar13; + lVar13 = lVar13 + 4; + puVar7[-1] = 0xff; + puVar7[-2] = 0; + puVar7[1] = 0; + puVar7 = puVar7 + 4; + } while (lVar13 != 0x100); + iVar11 = 0x3f; + puVar7 = (undefined1 *)(param_1 + 0x5b2); + do { + cVar9 = (char)iVar11; + iVar11 = iVar11 + -1; + *puVar7 = 0xff; + puVar7[-2] = 0; + puVar7[1] = 0; + puVar7[-1] = cVar9 * '\x04'; + puVar7 = puVar7 + 4; + } while (iVar11 != -1); + break; + default: + pthread_mutex_unlock(__mutex); + piVar8 = __errno_location(); + *piVar8 = -0x1b51ffff; + return; + } + bVar22 = ((ulong)puVar17 & 1) != 0; + uVar5 = 0x400; + puVar19 = puVar15; + if (bVar22) { + puVar17 = (undefined8 *)(param_1 + 0x6d9); + puVar19 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0x6d8) = *(undefined1 *)(param_1 + 0x2b0); + uVar5 = 0x3ff; + } + puVar20 = puVar17; + if (((ulong)puVar17 & 2) != 0) { + uVar1 = *(undefined2 *)puVar19; + puVar20 = (undefined8 *)((long)puVar17 + 2); + puVar19 = (undefined8 *)((long)puVar19 + 2); + uVar5 = uVar5 - 2; + *(undefined2 *)puVar17 = uVar1; + } + puVar17 = puVar20; + if (((ulong)puVar20 & 4) != 0) { + uVar2 = *(undefined4 *)puVar19; + puVar17 = (undefined8 *)((long)puVar20 + 4); + puVar19 = (undefined8 *)((long)puVar19 + 4); + uVar5 = uVar5 - 4; + *(undefined4 *)puVar20 = uVar2; + } + lVar13 = 0; + for (uVar10 = (ulong)(uVar5 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) { + *puVar17 = *puVar19; + puVar19 = puVar19 + (ulong)bVar23 * -2 + 1; + puVar17 = puVar17 + (ulong)bVar23 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar17 = *(undefined4 *)puVar19; + lVar13 = 4; + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)((long)puVar17 + lVar13) = *(undefined2 *)((long)puVar19 + lVar13); + lVar13 = lVar13 + 2; + } + if (bVar22) { + *(undefined1 *)((long)puVar17 + lVar13) = *(undefined1 *)((long)puVar19 + lVar13); + } + bVar22 = ((ulong)puVar16 & 1) != 0; + uVar5 = 0x400; + puVar17 = puVar15; + if (bVar22) { + puVar16 = (undefined8 *)(param_1 + 0xb01); + puVar17 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0xb00) = *(undefined1 *)(param_1 + 0x2b0); + uVar5 = 0x3ff; + } + puVar19 = puVar16; + if (((ulong)puVar16 & 2) != 0) { + uVar1 = *(undefined2 *)puVar17; + puVar19 = (undefined8 *)((long)puVar16 + 2); + puVar17 = (undefined8 *)((long)puVar17 + 2); + uVar5 = uVar5 - 2; + *(undefined2 *)puVar16 = uVar1; + } + puVar16 = puVar19; + if (((ulong)puVar19 & 4) != 0) { + uVar2 = *(undefined4 *)puVar17; + puVar16 = (undefined8 *)((long)puVar19 + 4); + puVar17 = (undefined8 *)((long)puVar17 + 4); + uVar5 = uVar5 - 4; + *(undefined4 *)puVar19 = uVar2; + } + lVar13 = 0; + for (uVar10 = (ulong)(uVar5 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) { + *puVar16 = *puVar17; + puVar17 = puVar17 + (ulong)bVar23 * -2 + 1; + puVar16 = puVar16 + (ulong)bVar23 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar16 = *(undefined4 *)puVar17; + lVar13 = 4; + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)((long)puVar16 + lVar13) = *(undefined2 *)((long)puVar17 + lVar13); + lVar13 = lVar13 + 2; + } + if (bVar22) { + *(undefined1 *)((long)puVar16 + lVar13) = *(undefined1 *)((long)puVar17 + lVar13); + } + bVar22 = ((ulong)puVar18 & 1) != 0; + uVar5 = 0x400; + if (bVar22) { + puVar18 = (undefined8 *)(param_1 + 0xf29); + puVar15 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0xf28) = *(undefined1 *)(param_1 + 0x2b0); + uVar5 = 0x3ff; + } + puVar17 = puVar18; + if (((ulong)puVar18 & 2) != 0) { + uVar1 = *(undefined2 *)puVar15; + puVar17 = (undefined8 *)((long)puVar18 + 2); + puVar15 = (undefined8 *)((long)puVar15 + 2); + uVar5 = uVar5 - 2; + *(undefined2 *)puVar18 = uVar1; + } + puVar16 = puVar17; + if (((ulong)puVar17 & 4) != 0) { + uVar2 = *(undefined4 *)puVar15; + puVar16 = (undefined8 *)((long)puVar17 + 4); + puVar15 = (undefined8 *)((long)puVar15 + 4); + uVar5 = uVar5 - 4; + *(undefined4 *)puVar17 = uVar2; + } + lVar13 = 0; + for (uVar10 = (ulong)(uVar5 >> 3); uVar10 != 0; uVar10 = uVar10 - 1) { + *puVar16 = *puVar15; + puVar15 = puVar15 + (ulong)bVar23 * -2 + 1; + puVar16 = puVar16 + (ulong)bVar23 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar16 = *(undefined4 *)puVar15; + lVar13 = 4; + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)((long)puVar16 + lVar13) = *(undefined2 *)((long)puVar15 + lVar13); + lVar13 = lVar13 + 2; + } + if (bVar22) { + *(undefined1 *)((long)puVar16 + lVar13) = *(undefined1 *)((long)puVar15 + lVar13); + } + pthread_mutex_unlock(__mutex); + return; +} + + +================================================================== + +### FUNC 00108990 (51 bytes) name=FUN_00108990 + +void FUN_00108990(long param_1) + +{ + ushort uVar1; + uint uVar2; + int iVar3; + ushort *puVar4; + + iVar3 = *(int *)(param_1 + 0x77f8); + puVar4 = *(ushort **)(param_1 + 0x268); + uVar1 = *puVar4; + uVar2 = (uint)uVar1; + if (iVar3 != 0) { + while( true ) { + if ((ushort)uVar2 < uVar1) { + uVar2 = (uint)uVar1; + } + iVar3 = iVar3 + -1; + if (iVar3 == 0) break; + uVar1 = puVar4[1]; + puVar4 = puVar4 + 1; + } + } + *(uint *)(param_1 + 0x1f20) = uVar2; + return; +} + + +================================================================== + +### FUNC 001089d0 (269 bytes) name=FUN_001089d0 + +void FUN_001089d0(long param_1,ushort *param_2) + +{ + ushort uVar1; + uint uVar2; + int iVar3; + long lVar4; + ulong uVar5; + long lVar6; + uint uVar7; + ulong uVar8; + int iVar9; + int iVar10; + uint uVar11; + ulong uVar12; + int iVar13; + double dVar14; + double dVar15; + + uVar2 = *(uint *)(param_1 + 0x77f8); + uVar1 = *param_2; + uVar5 = (ulong)uVar1; + uVar7 = (uint)uVar1; + if (uVar2 == 0) { + dVar14 = 0.0; + uVar11 = (uint)uVar1; + lVar4 = 0; + iVar13 = 0; + iVar9 = 0; + dVar15 = dVar14; + } + else { + iVar10 = 0; + lVar6 = 0; + lVar4 = 0; + iVar13 = 0; + iVar9 = 0; + uVar8 = uVar5; + uVar12 = uVar5; + while( true ) { + uVar7 = (uint)uVar8; + param_2 = param_2 + 1; + lVar4 = lVar4 + uVar5; + uVar11 = (uint)uVar5; + lVar6 = lVar6 + (ulong)(uVar11 * uVar11); + iVar3 = iVar10; + if ((ushort)uVar5 <= (ushort)uVar12) { + if ((ushort)uVar5 < (ushort)uVar8) { + uVar8 = uVar5; + iVar13 = iVar10; + } + uVar7 = (uint)uVar8; + uVar5 = uVar12; + uVar11 = (uint)uVar12; + iVar3 = iVar9; + } + iVar9 = iVar3; + uVar12 = uVar5; + if (iVar10 + 1U == uVar2) break; + iVar10 = iVar10 + 1; + uVar5 = (ulong)*param_2; + } + dVar14 = (double)lVar4 * (double)lVar4; + dVar15 = (double)lVar6; + } + *(uint *)(param_1 + 0x1f20) = uVar11; + *(uint *)(param_1 + 0x1f24) = uVar7; + *(int *)(param_1 + 0x1f30) = iVar9; + *(int *)(param_1 + 0x1f34) = iVar13; + *(int *)(param_1 + 0x1f28) = (int)(lVar4 / (long)(ulong)uVar2); + dVar15 = (dVar15 - dVar14 / (double)uVar2) / (double)(uVar2 - 1); + dVar14 = SQRT(dVar15); + if (NAN(dVar14)) { + dVar14 = sqrt(dVar15); + } + *(int *)(param_1 + 0x1f2c) = (int)dVar14; + return; +} + + +================================================================== + +### FUNC 00108ae0 (724 bytes) name=FUN_00108ae0 + +void FUN_00108ae0(long param_1) + +{ + undefined8 *puVar1; + int *piVar2; + int iVar3; + long lVar4; + long lVar5; + int iVar6; + int iVar7; + uint uVar8; + uint uVar9; + ulong uVar10; + ulong uVar11; + long lVar12; + undefined8 *puVar13; + undefined8 *puVar14; + uint uVar15; + uint uVar16; + int iVar17; + bool bVar18; + uint local_44; + + puVar1 = (undefined8 *)(param_1 + 0x1f60); + uVar11 = 0x400; + iVar7 = 0x400; + iVar17 = *(int *)(param_1 + 0x1f3c); + iVar6 = *(int *)(param_1 + 8000); + lVar4 = *(long *)(param_1 + 0x268); + bVar18 = ((ulong)puVar1 & 1) != 0; + lVar5 = *(long *)(param_1 + 0x298); + puVar13 = puVar1; + if (bVar18) { + *(undefined1 *)(param_1 + 0x1f60) = 0; + uVar11 = 0x3ff; + iVar7 = 0x3ff; + puVar13 = (undefined8 *)(param_1 + 0x1f61); + } + if (((ulong)puVar13 & 2) == 0) { + uVar9 = (uint)uVar11; + } + else { + uVar9 = iVar7 - 2; + uVar11 = (ulong)uVar9; + *(undefined2 *)puVar13 = 0; + puVar13 = (undefined8 *)((long)puVar13 + 2); + } + if (((ulong)puVar13 & 4) != 0) { + *(undefined4 *)puVar13 = 0; + uVar11 = (ulong)(uVar9 - 4); + puVar13 = (undefined8 *)((long)puVar13 + 4); + } + for (uVar10 = uVar11 >> 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *puVar13 = 0; + puVar13 = puVar13 + 1; + } + if ((uVar11 & 4) != 0) { + *(undefined4 *)puVar13 = 0; + puVar13 = (undefined8 *)((long)puVar13 + 4); + } + puVar14 = puVar13; + if ((uVar11 & 2) != 0) { + puVar14 = (undefined8 *)((long)puVar13 + 2); + *(undefined2 *)puVar13 = 0; + } + if (bVar18) { + *(undefined1 *)puVar14 = 0; + } + iVar7 = *(int *)(param_1 + 0x77f8); + iVar3 = *(int *)(param_1 + 8000); + if (iVar7 != 0) { + lVar12 = 0; + do { + uVar9 = ((uint)*(ushort *)(lVar4 + lVar12 * 2) - iVar3) * + (int)(0xffc00000 / (ulong)(uint)(iVar17 - iVar6)); + *(undefined1 *)(lVar5 + lVar12) = *(undefined1 *)(param_1 + 0x2760 + (ulong)(uVar9 >> 0x16)); + lVar12 = lVar12 + 1; + piVar2 = (int *)((long)puVar1 + (ulong)(uVar9 >> 0x18) * 4); + *piVar2 = *piVar2 + 1; + } while (lVar12 != (ulong)(iVar7 - 1) + 1); + } + *(undefined4 *)(param_1 + 0x1f4c) = 1; + uVar9 = *(uint *)(param_1 + 0x1ee0); + lVar4 = *(long *)(param_1 + 0x2a8); + if (*(int *)(param_1 + 0x74) == 0) { + uVar15 = *(uint *)(param_1 + 0x1ee4); + if (uVar15 < 2) { + iVar17 = 0; + } + else { + iVar17 = (int)(0xff0000 / (ulong)(uVar15 - 1)); + } + iVar6 = uVar15 - 1; + if (-1 < iVar6) { + uVar16 = iVar6 * iVar17; + uVar15 = iVar6 * uVar9; + do { + uVar11 = (ulong)uVar15; + uVar8 = uVar16 >> 0x10; + iVar6 = iVar6 + -1; + uVar16 = uVar16 - iVar17; + uVar15 = uVar15 - uVar9; + memset((void *)(uVar11 + lVar4),uVar8 & 0xff,(ulong)uVar9); + } while (iVar6 != -1); + return; + } + } + else { + iVar17 = *(int *)(param_1 + 8000); + iVar6 = 0; + if ((*(int *)(param_1 + 0x1f24) != iVar17) && (iVar17 != *(int *)(param_1 + 0x1f3c))) { + iVar6 = ((*(int *)(param_1 + 0x1f24) - iVar17) * 0x3ff) / + (*(int *)(param_1 + 0x1f3c) - iVar17); + } + iVar7 = 0x3ff; + if ((iVar17 != *(int *)(param_1 + 0x1f20)) && (iVar17 != *(int *)(param_1 + 0x1f3c))) { + iVar7 = ((*(int *)(param_1 + 0x1f20) - iVar17) * 0x3ff) / + (*(int *)(param_1 + 0x1f3c) - iVar17); + } + uVar15 = *(uint *)(param_1 + 0x1ee4); + if (uVar15 < 2) { + local_44 = 0; + } + else { + local_44 = (uint)((iVar7 - iVar6) * 0x10000) / (uVar15 - 1); + } + iVar17 = uVar15 - 1; + if (-1 < iVar17) { + uVar16 = iVar17 * uVar9; + uVar15 = local_44 * iVar17; + do { + uVar10 = (ulong)uVar16; + uVar8 = (uVar15 >> 0x10) + iVar6; + uVar11 = (ulong)uVar8; + if (0x3ff < uVar8) { + uVar11 = 0x3ff; + } + iVar17 = iVar17 + -1; + uVar16 = uVar16 - uVar9; + memset((void *)(uVar10 + lVar4),(uint)*(byte *)(param_1 + 0x2760 + uVar11),(ulong)uVar9); + uVar15 = uVar15 - local_44; + } while (iVar17 != -1); + } + } + return; +} + + +================================================================== + +### FUNC 00108dc0 (56 bytes) name=FUN_00108dc0 + +undefined8 FUN_00108dc0(long param_1) + +{ + if ((*(int *)(param_1 + 0x208) != 0) && (*(int *)(param_1 + 0x214) != 0)) { + if (*(int *)(param_1 + 0x1f4c) == 0) { + FUN_00108ae0(param_1,0); + } + return *(undefined8 *)(param_1 + 0x298); + } + return 0; +} + + +================================================================== + +### FUNC 00108e10 (832 bytes) name=FUN_00108e10 + +void FUN_00108e10(long param_1) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + ulong uVar5; + uint uVar6; + uint uVar7; + ushort *puVar8; + long lVar9; + uint uVar10; + ulong uVar11; + uint *puVar12; + uint *puVar13; + ushort *puVar14; + uint uVar15; + uint *puVar16; + float fVar17; + float fVar18; + uint local_2044; + uint local_2038 [1024]; + float afStack_1038 [1026]; + + puVar14 = *(ushort **)(param_1 + 0x268); + uVar4 = *(uint *)(param_1 + 0x1ed4); + if (uVar4 == 0) { + uVar10 = 0; + uVar15 = 0; + uVar3 = 0; + uVar1 = 0; + local_2044 = 0xffffffff; + } + else { + puVar16 = local_2038; + uVar3 = *(uint *)(param_1 + 0x1ed0); + local_2044 = uVar4 - 1; + puVar12 = puVar16; + do { + if (uVar3 >> 2 == 0) { + uVar1 = 0; + } + else { + uVar1 = 0; + puVar8 = puVar14; + uVar10 = uVar3 >> 2; + do { + uVar1 = uVar1 + (uint)*puVar8 + (uint)puVar8[1] + (uint)puVar8[2] + (uint)puVar8[3]; + uVar10 = uVar10 - 1; + puVar8 = puVar8 + 4; + } while (uVar10 != 0); + puVar14 = puVar14 + (ulong)((uVar3 >> 2) - 1) * 4 + 4; + } + puVar13 = puVar12 + 1; + *puVar12 = uVar1 / uVar3; + puVar12 = puVar13; + } while (puVar13 != local_2038 + (ulong)local_2044 + 1); + uVar10 = uVar4 >> 2; + uVar15 = uVar4 * 7 >> 3; + if (uVar4 >> 2 == 0) { + uVar2 = 0; + uVar3 = 0; + if (uVar4 <= uVar10) goto LAB_00109157; +LAB_00108f16: + uVar1 = 0; + uVar6 = uVar10; + do { + uVar11 = (ulong)uVar6; + uVar6 = uVar6 + 1; + uVar1 = uVar1 + local_2038[uVar11]; + uVar3 = uVar2; + } while (uVar6 != uVar4); + } + else { + uVar2 = 0; + do { + uVar2 = uVar2 + *puVar16; + puVar16 = puVar16 + 1; + } while (puVar16 != local_2038 + (ulong)(uVar10 - 1) + 1); + uVar3 = uVar2; + if (uVar10 < uVar4) goto LAB_00108f16; +LAB_00109157: + uVar1 = 0; + } + if (uVar15 < uVar10) goto LAB_001090f1; + } + uVar6 = local_2044 - uVar10; + uVar2 = uVar10; + do { + uVar7 = uVar2 + 1; + uVar3 = uVar3 + local_2038[uVar2]; + uVar1 = uVar1 - local_2038[uVar2]; + fVar18 = (float)(int)uVar7 / (float)uVar4; + uVar11 = (ulong)uVar6; + uVar6 = uVar6 - 1; + fVar17 = (float)uVar3 / (float)(int)uVar7 - (float)uVar1 / (float)uVar11; + afStack_1038[uVar2] = (DAT_00131e20 - fVar18) * fVar18 * fVar17 * fVar17; + uVar2 = uVar7; + } while (uVar7 <= uVar15); + uVar11 = (ulong)uVar10; + fVar17 = afStack_1038[uVar10]; + uVar5 = (ulong)uVar10; + fVar18 = fVar17; + while( true ) { + if (fVar18 <= fVar17) { + uVar11 = uVar5; + fVar18 = fVar17; + } + uVar3 = (uint)uVar11; + uVar1 = (int)uVar5 + 1; + uVar5 = (ulong)uVar1; + if (uVar1 == uVar15 + 1) break; + fVar17 = afStack_1038[uVar5]; + } + if ((uVar15 != uVar3) && (uVar3 != uVar10)) { + lVar9 = 0; + uVar1 = 0; + do { + uVar1 = uVar1 + local_2038[lVar9]; + lVar9 = lVar9 + 1; + } while ((uint)lVar9 <= uVar3); + uVar15 = uVar3 + 1; + if (uVar15 < uVar4) { + uVar2 = 0; + uVar6 = uVar15; + do { + uVar5 = (ulong)uVar6; + uVar6 = uVar6 + 1; + uVar2 = uVar2 + local_2038[uVar5]; + } while (uVar6 != uVar4); + } + else { + uVar2 = 0; + } + uVar1 = uVar1 / uVar15; + uVar2 = uVar2 / (local_2044 - uVar3); + uVar6 = (int)(uVar1 - uVar2) >> 0x1f; + if (((int)(uVar1 + uVar2) <= (int)(((uVar1 - uVar2 ^ uVar6) - uVar6) * 0x80)) && + ((int)uVar2 <= (int)uVar1)) { + *(uint *)(param_1 + 0x4b70) = local_2038[uVar11]; + uVar1 = *(uint *)(param_1 + 0x4b68); + if ((uVar10 < uVar1) && (uVar1 <= local_2044)) { + uVar10 = uVar4 >> 7; + if (uVar4 >> 7 == 0) { + uVar10 = 1; + } + if (uVar10 + uVar1 < uVar3) { + uVar3 = uVar10 + uVar1; + } + if (uVar3 < uVar1 - uVar10) { + uVar3 = uVar1 - uVar10; + } + uVar15 = uVar3 + 1; + } + lVar9 = 0; + uVar4 = 0; + do { + uVar4 = uVar4 + local_2038[lVar9]; + lVar9 = lVar9 + 1; + } while ((uint)lVar9 <= uVar3); + *(uint *)(param_1 + 0x4b68) = uVar3; + *(uint *)(param_1 + 0x4b6c) = uVar4 / uVar15; + return; + } + } +LAB_001090f1: + *(undefined4 *)(param_1 + 0x4b70) = 0; + *(uint *)(param_1 + 0x4b68) = local_2044; + *(undefined4 *)(param_1 + 0x4b6c) = *(undefined4 *)(param_1 + 0x1f28); + return; +} + + +================================================================== + +### FUNC 00109160 (323 bytes) name=FUN_00109160 + +void FUN_00109160(long param_1,ushort *param_2,ushort *param_3) + +{ + undefined8 *puVar1; + int *piVar2; + ushort uVar3; + ushort uVar4; + undefined2 *puVar5; + ulong uVar6; + uint uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int iVar10; + bool bVar12; + ulong uVar11; + + puVar1 = (undefined8 *)(param_1 + 0x2360); + uVar11 = 0x400; + iVar10 = 0x400; + bVar12 = ((ulong)puVar1 & 1) != 0; + puVar8 = puVar1; + if (bVar12) { + *(undefined1 *)(param_1 + 0x2360) = 0; + uVar11 = 0x3ff; + iVar10 = 0x3ff; + puVar8 = (undefined8 *)(param_1 + 0x2361); + } + if (((ulong)puVar8 & 2) == 0) { + uVar7 = (uint)uVar11; + } + else { + uVar7 = iVar10 - 2; + uVar11 = (ulong)uVar7; + *(undefined2 *)puVar8 = 0; + puVar8 = (undefined8 *)((long)puVar8 + 2); + } + if (((ulong)puVar8 & 4) != 0) { + *(undefined4 *)puVar8 = 0; + uVar11 = (ulong)(uVar7 - 4); + puVar8 = (undefined8 *)((long)puVar8 + 4); + } + for (uVar6 = uVar11 >> 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar8 = 0; + puVar8 = puVar8 + 1; + } + if ((uVar11 & 4) != 0) { + *(undefined4 *)puVar8 = 0; + puVar8 = (undefined8 *)((long)puVar8 + 4); + } + puVar9 = puVar8; + if ((uVar11 & 2) != 0) { + puVar9 = (undefined8 *)((long)puVar8 + 2); + *(undefined2 *)puVar8 = 0; + } + if (bVar12) { + *(undefined1 *)puVar9 = 0; + } + puVar5 = *(undefined2 **)(param_1 + 0x240); + for (uVar7 = *(uint *)(param_1 + 0x77f8) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + uVar3 = *param_2; + uVar4 = *param_3; + piVar2 = (int *)((long)puVar1 + (ulong)(byte)(uVar3 >> 8) * 4); + *piVar2 = *piVar2 + 1; + *puVar5 = (short)((uint)uVar3 - (uint)uVar4 >> 1); + uVar3 = param_2[1]; + uVar4 = param_3[1]; + piVar2 = (int *)((long)puVar1 + (ulong)(byte)(uVar3 >> 8) * 4); + *piVar2 = *piVar2 + 1; + puVar5[1] = (short)((uint)uVar3 - (uint)uVar4 >> 1); + uVar3 = param_2[2]; + uVar4 = param_3[2]; + piVar2 = (int *)((long)puVar1 + (ulong)(byte)(uVar3 >> 8) * 4); + *piVar2 = *piVar2 + 1; + puVar5[2] = (short)((uint)uVar3 - (uint)uVar4 >> 1); + uVar3 = param_2[3]; + uVar4 = param_3[3]; + piVar2 = (int *)((long)puVar1 + (ulong)(byte)(uVar3 >> 8) * 4); + *piVar2 = *piVar2 + 1; + puVar5[3] = (short)((uint)uVar3 - (uint)uVar4 >> 1); + puVar5 = puVar5 + 4; + param_2 = param_2 + 4; + param_3 = param_3 + 4; + } + return; +} + + +================================================================== + +### FUNC 001092b0 (352 bytes) name=FUN_001092b0 + +void FUN_001092b0(long param_1,int *param_2,int *param_3) + +{ + int *piVar1; + sbyte sVar2; + sbyte sVar3; + uint uVar4; + + uVar4 = *(uint *)(param_1 + 0x1ee8); + if (uVar4 == 0x10) { + sVar2 = 2; + } + else if (uVar4 < 0x11) { + if (uVar4 == 4) { + sVar2 = 4; + } + else { + sVar2 = 3; + if (uVar4 != 8) { + return; + } + } + } + else { + if (uVar4 == 0x20) { + uVar4 = *(uint *)(param_1 + 0x1eec); + sVar2 = 1; + goto joined_r0x001093e7; + } + sVar2 = 0; + if (uVar4 != 0x40) { + return; + } + } + uVar4 = *(uint *)(param_1 + 0x1eec); +joined_r0x001093e7: + if (uVar4 == 0x10) { + sVar3 = 2; + } + else if (uVar4 < 0x10) { + if (uVar4 == 4) { + sVar3 = 4; + } + else { + sVar3 = 3; + if (uVar4 != 8) { + return; + } + } + } + else if (uVar4 == 0x20) { + sVar3 = 1; + } + else { + sVar3 = 0; + if (uVar4 != 0x40) { + return; + } + } + piVar1 = *(int **)(param_1 + 0x248); + for (uVar4 = *(uint *)(param_1 + 0x77f8) >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *piVar1 = (*param_2 << sVar3) - (*param_3 << sVar2); + piVar1[1] = (param_2[1] << sVar3) - (param_3[1] << sVar2); + piVar1[2] = (param_2[2] << sVar3) - (param_3[2] << sVar2); + piVar1[3] = (param_2[3] << sVar3) - (param_3[3] << sVar2); + piVar1 = piVar1 + 4; + param_3 = param_3 + 4; + param_2 = param_2 + 4; + } + return; +} + + +================================================================== + +### FUNC 00109440 (513 bytes) name=FUN_00109440 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulong FUN_00109440(undefined8 param_1,float *param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + long lVar4; + float *pfVar5; + float *pfVar6; + float fVar7; + double dVar8; + float fVar9; + double dVar10; + float local_108 [64]; + + fVar7 = DAT_00131e20; + pfVar5 = (float *)&DAT_0012c960; + pfVar6 = local_108; + for (lVar4 = 0x1e; lVar4 != 0; lVar4 = lVar4 + -1) { + *(undefined8 *)pfVar6 = *(undefined8 *)pfVar5; + pfVar5 = pfVar5 + 2; + pfVar6 = pfVar6 + 2; + } + *pfVar6 = *pfVar5; + if (param_2 == (float *)0x0) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + return 0; + } + if ((((0.0 < *param_2) && (0.0 < param_2[4])) && (fVar9 = param_2[3], 0.0 <= fVar9)) && + (fVar9 <= DAT_00131e20)) { + iVar1 = 0x23; + if ((int)param_2[2] < 0x24) { + iVar1 = (int)param_2[2]; + } + iVar3 = -0x19; + if (-0x1a < iVar1) { + iVar3 = iVar1; + } + fVar7 = SQRT(local_108[iVar3 + 0x19] * fVar9); + if (NAN(fVar7)) { + fVar7 = sqrtf(fVar9 * local_108[iVar3 + 0x19]); + } + dVar10 = 0.0; + fVar9 = DAT_00131e30 / param_2[4]; + fVar7 = DAT_00131e28 * fVar7 + _DAT_00131e2c; + if (0.0 < param_2[5]) { + dVar10 = pow((double)param_2[5],DAT_00131e58); + dVar10 = DAT_00131e58 * dVar10; + } + if (param_2[6] <= 0.0) { + dVar8 = 0.0; + } + else { + dVar8 = pow((double)param_2[6],DAT_00131e60); + dVar8 = dVar8 * _DAT_00131e68; + } + dVar10 = exp((double)((float)((uint)(fVar9 + fVar7 + (float)(dVar8 + dVar10)) ^ DAT_00131e70) * + *param_2 * DAT_00131e34)); + param_2[9] = (float)dVar10; + return CONCAT44((float)dVar10,(float)dVar10); + } + param_2[9] = 1.0; + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + return (ulong)(uint)fVar7; +} + + +================================================================== + +### FUNC 00109670 (1608 bytes) name=FUN_00109670 + +undefined4 FUN_00109670(long param_1,undefined8 *param_2) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + uint uVar2; + uint uVar3; + long lVar4; + int iVar5; + int *piVar6; + void *pvVar7; + ulong uVar8; + long lVar9; + ulong uVar10; + undefined4 *puVar11; + undefined4 *puVar12; + bool bVar13; + byte bVar14; + undefined1 auStack_38 [32]; + + bVar14 = 0; + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + FUN_001071e0(); + pthread_mutex_lock(__mutex); + *(undefined4 *)(param_1 + 0x7804) = 8; + *(undefined4 *)(param_1 + 0x7808) = 0xffff3cb0; + *(undefined4 *)(param_1 + 0x780c) = 3; + *(undefined4 *)(param_1 + 0x7810) = 0; + *(undefined4 *)(param_1 + 0x7814) = 0; + *(undefined8 *)(param_1 + 0x1ed0) = *param_2; + *(undefined8 *)(param_1 + 0x1ed8) = param_2[1]; + *(undefined8 *)(param_1 + 0x1ee0) = param_2[2]; + *(undefined8 *)(param_1 + 0x1ee8) = param_2[3]; + uVar1 = *(uint *)(param_1 + 0x1ee8); + *(undefined8 *)(param_1 + 0x1ef0) = param_2[4]; + if ((uVar1 - 4 < 0x3d) && ((uVar1 - 1 & uVar1) == 0)) { + uVar1 = *(uint *)(param_1 + 0x1eec) - 1; + if ((((uVar1 < 0x40) && + ((((((uVar1 & *(uint *)(param_1 + 0x1eec)) == 0 && (*(int *)(param_1 + 0x1ef0) - 1U < 2)) + && (*(int *)(param_1 + 0x1ef4) != 0)) && + ((uVar1 = *(uint *)(param_1 + 0x1ed0), (uVar1 & 3) == 0 && (3 < uVar1)))) && + (*(int *)(param_1 + 0x1ed4) != 0)))) && + (((uVar2 = *(uint *)(param_1 + 0x1ed8), (uVar2 & 3) == 0 && (3 < uVar2)) && + (*(int *)(param_1 + 0x1edc) != 0)))) && + (((uVar3 = *(uint *)(param_1 + 0x1ee0), (uVar3 & 3) == 0 && (3 < uVar3)) && + (*(int *)(param_1 + 0x1ee4) != 0)))) { + iVar5 = uVar1 * *(int *)(param_1 + 0x1ed4); + *(int *)(param_1 + 0x77f8) = iVar5; + *(uint *)(param_1 + 0x7800) = uVar3 * *(int *)(param_1 + 0x1ee4); + *(uint *)(param_1 + 0x77fc) = uVar2 * *(int *)(param_1 + 0x1edc); + pvVar7 = operator_new__((ulong)(uint)(iVar5 * 3) * 2); + *(void **)(param_1 + 0x250) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8) * 2); + *(void **)(param_1 + 0x290) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8)); + *(void **)(param_1 + 0x298) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8) << 2); + *(void **)(param_1 + 0x2a0) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8)); + *(void **)(param_1 + 0x288) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x7800)); + *(void **)(param_1 + 0x2a8) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8) * 2); + *(void **)(param_1 + 0x240) = pvVar7; + pvVar7 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8) << 2); + *(void **)(param_1 + 0x248) = pvVar7; + pvVar7 = operator_new__((ulong)(uint)(*(int *)(param_1 + 0x1ed8) * 3 + + *(int *)(param_1 + 0x77fc))); + lVar9 = *(long *)(param_1 + 0x250); + *(void **)(param_1 + 0x200) = pvVar7; + if ((((lVar9 != 0) && (*(long *)(param_1 + 0x290) != 0)) && + ((*(long *)(param_1 + 0x298) != 0 && + ((*(long *)(param_1 + 0x2a0) != 0 && (*(long *)(param_1 + 0x2a8) != 0)))))) && + ((*(long *)(param_1 + 0x288) != 0 && + (((*(long *)(param_1 + 0x240) != 0 && (*(long *)(param_1 + 0x248) != 0)) && + (pvVar7 != (void *)0x0)))))) { + *(long *)(param_1 + 600) = lVar9; + lVar4 = (ulong)*(uint *)(param_1 + 0x77f8) * 2; + lVar9 = lVar9 + lVar4; + *(long *)(param_1 + 0x260) = lVar9; + *(long *)(param_1 + 0x270) = lVar4 + lVar9; + iVar5 = FUN_00106a40(param_1 + 0x1dc0,(ulong)*(uint *)(param_1 + 0x77f8), + *(undefined4 *)(param_1 + 0x1ee8),0); + if (iVar5 == 0) { + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to create baseline accmulator"); + } + else { + iVar5 = FUN_00106a40(param_1 + 0x1df0,*(undefined4 *)(param_1 + 0x77f8), + *(undefined4 *)(param_1 + 0x1eec),0); + if (iVar5 == 0) { + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to create frame accmulator"); + } + else if ((*(uint *)(param_1 + 0x1eec) < 2) || + (iVar5 = FUN_00106a40(param_1 + 0x1e20,*(undefined4 *)(param_1 + 0x77f8), + *(uint *)(param_1 + 0x1eec),0), iVar5 != 0)) { + if ((*(uint *)(param_1 + 0x1ef0) < 2) || + (iVar5 = FUN_00119ee0(param_1 + 0x1e50,*(undefined4 *)(param_1 + 0x77f8), + *(uint *)(param_1 + 0x1ef0) - 1,0,0), iVar5 != 0)) { + if ((*(uint *)(param_1 + 0x1ef4) < 2) || + (iVar5 = FUN_00119ee0(param_1 + 0x1e90,*(undefined4 *)(param_1 + 0x77f8), + *(uint *)(param_1 + 0x1ef4),1,0), iVar5 != 0)) { + puVar12 = (undefined4 *)(param_1 + 0x6b0); + uVar10 = 0x28; + bVar13 = ((ulong)puVar12 & 1) != 0; + puVar11 = puVar12; + if (bVar13) { + puVar11 = (undefined4 *)(param_1 + 0x6b1 + (ulong)bVar14 * -2); + *(undefined1 *)puVar12 = 0; + uVar10 = 0x27; + } + puVar12 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + uVar10 = (ulong)((int)uVar10 - 2); + puVar12 = (undefined4 *)((long)puVar11 + (ulong)bVar14 * -4 + 2); + *(undefined2 *)puVar11 = 0; + } + for (uVar8 = uVar10 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *puVar12 = 0; + puVar12 = puVar12 + (ulong)bVar14 * -2 + 1; + } + puVar11 = puVar12; + if ((uVar10 & 2) != 0) { + puVar11 = (undefined4 *)((long)puVar12 + (ulong)bVar14 * -4 + 2); + *(undefined2 *)puVar12 = 0; + } + if (bVar13) { + *(undefined1 *)puVar11 = 0; + } + puVar12 = (undefined4 *)(param_1 + 0xad8); + *(undefined4 *)(param_1 + 0x6b0) = 0x28; + *(undefined2 *)(param_1 + 0x6bc) = 1; + *(undefined2 *)(param_1 + 0x6be) = 8; + uVar10 = 0x28; + *(undefined4 *)(param_1 + 0x6c0) = 0; + *(undefined4 *)(param_1 + 0x6b4) = *(undefined4 *)(param_1 + 0x1ed0); + *(undefined4 *)(param_1 + 0x6b8) = *(undefined4 *)(param_1 + 0x1ed4); + bVar13 = ((ulong)puVar12 & 1) != 0; + puVar11 = puVar12; + if (bVar13) { + puVar11 = (undefined4 *)(param_1 + 0xad9 + (ulong)bVar14 * -2); + *(undefined1 *)puVar12 = 0; + uVar10 = 0x27; + } + puVar12 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + uVar10 = (ulong)((int)uVar10 - 2); + puVar12 = (undefined4 *)((long)puVar11 + (ulong)bVar14 * -4 + 2); + *(undefined2 *)puVar11 = 0; + } + for (uVar8 = uVar10 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *puVar12 = 0; + puVar12 = puVar12 + (ulong)bVar14 * -2 + 1; + } + puVar11 = puVar12; + if ((uVar10 & 2) != 0) { + puVar11 = (undefined4 *)((long)puVar12 + (ulong)bVar14 * -4 + 2); + *(undefined2 *)puVar12 = 0; + } + if (bVar13) { + *(undefined1 *)puVar11 = 0; + } + puVar12 = (undefined4 *)(param_1 + 0xf00); + *(undefined4 *)(param_1 + 0xad8) = 0x28; + *(undefined2 *)(param_1 + 0xae4) = 1; + *(undefined2 *)(param_1 + 0xae6) = 8; + uVar10 = 0x28; + *(undefined4 *)(param_1 + 0xae8) = 0; + *(undefined4 *)(param_1 + 0xadc) = *(undefined4 *)(param_1 + 0x1ed8); + *(undefined4 *)(param_1 + 0xae0) = *(undefined4 *)(param_1 + 0x1edc); + bVar13 = ((ulong)puVar12 & 1) != 0; + puVar11 = puVar12; + if (bVar13) { + puVar11 = (undefined4 *)(param_1 + 0xf01 + (ulong)bVar14 * -2); + *(undefined1 *)puVar12 = 0; + uVar10 = 0x27; + } + puVar12 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + uVar10 = (ulong)((int)uVar10 - 2); + puVar12 = (undefined4 *)((long)puVar11 + (ulong)bVar14 * -4 + 2); + *(undefined2 *)puVar11 = 0; + } + for (uVar8 = uVar10 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *puVar12 = 0; + puVar12 = puVar12 + (ulong)bVar14 * -2 + 1; + } + puVar11 = puVar12; + if ((uVar10 & 2) != 0) { + puVar11 = (undefined4 *)((long)puVar12 + (ulong)bVar14 * -4 + 2); + *(undefined2 *)puVar12 = 0; + } + if (bVar13) { + *(undefined1 *)puVar11 = 0; + } + *(undefined4 *)(param_1 + 0xf00) = 0x28; + *(undefined2 *)(param_1 + 0xf0c) = 1; + *(undefined2 *)(param_1 + 0xf0e) = 8; + *(undefined4 *)(param_1 + 0xf10) = 0; + *(undefined4 *)(param_1 + 0xf04) = *(undefined4 *)(param_1 + 0x1ee0); + *(undefined4 *)(param_1 + 0xf08) = *(undefined4 *)(param_1 + 0x1ee4); + FUN_00109440(param_1,param_1 + 0xb4); + *(undefined4 *)(param_1 + 0x208) = 1; + pthread_mutex_unlock(__mutex); + return *(undefined4 *)(param_1 + 0x208); + } + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to create std smoother"); + } + else { + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to create temperature smoother"); + } + } + else { + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to create frame accmulator"); + } + } + FUN_00113b30(auStack_38); + pthread_mutex_unlock(__mutex); + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffd; + return 0; + } + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to allocate memory"); + FUN_00113b30(auStack_38); + pthread_mutex_unlock(__mutex); + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffe; + return 0; + } + } + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to configurate CFunctions due to parameter error"); + FUN_00113b30(auStack_38); + pthread_mutex_unlock(__mutex); + piVar6 = __errno_location(); + *piVar6 = -0x1b51ffff; + return 0; +} + + +================================================================== + +### FUNC 00109d40 (299 bytes) name=FUN_00109d40 + +undefined8 FUN_00109d40(long param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + int *piVar1; + int iVar2; + long lVar3; + undefined8 *puVar4; + undefined8 *puVar5; + uint uVar6; + byte bVar7; + + bVar7 = 0; + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + if (param_2 == 0) { + param_2 = 7; +switchD_00109d75_caseD_7: + puVar4 = &DAT_0012d4e0; + } + else { + switch(param_2) { + case 1: + puVar4 = &DAT_001311a0; + break; + case 2: + puVar4 = &DAT_00130780; + break; + case 3: + puVar4 = &DAT_0012fd60; + break; + case 4: + puVar4 = &DAT_0012f340; + break; + case 5: + puVar4 = &DAT_0012e920; + break; + case 6: + puVar4 = &DAT_0012df00; + break; + case 7: + goto switchD_00109d75_caseD_7; + case 8: + puVar4 = &DAT_0012cac0; + break; + default: + pthread_mutex_unlock(__mutex); + return 0; + } + } + puVar5 = (undefined8 *)&DAT_00340080; + for (lVar3 = 0x143; lVar3 != 0; lVar3 = lVar3 + -1) { + *puVar5 = *puVar4; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + puVar5 = puVar5 + (ulong)bVar7 * -2 + 1; + } + lVar3 = 0; + *(undefined4 *)puVar5 = *(undefined4 *)puVar4; + iVar2 = DAT_00340080; + do { + piVar1 = (int *)(&DAT_00340084 + lVar3); + uVar6 = *piVar1 - iVar2; + *(uint *)((long)&DAT_0033f660 + lVar3) = ((uVar6 >> 1) + 0x1000000) / uVar6; + lVar3 = lVar3 + 4; + iVar2 = *piVar1; + } while (lVar3 != 0xa18); + lVar3 = (long)DAT_00340074; + *(int *)(param_1 + 0x50) = param_2; + DAT_0033f654 = (undefined4)(0x7fffffff / lVar3); + pthread_mutex_unlock(__mutex); + return 1; +} + + +================================================================== + +### FUNC 00109e70 (92 bytes) name=FUN_00109e70 + +int FUN_00109e70(undefined8 param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar3 = param_2 + 150000; + iVar2 = param_2 + 0x259ef; + if (-1 < iVar3) { + iVar2 = iVar3; + } + iVar1 = 0x285; + if (iVar2 >> 0xc < 0x286) { + iVar1 = iVar2 >> 0xc; + } + if (iVar1 < 0) { + iVar1 = 0; + } + iVar2 = ((&DAT_00340080)[iVar1 + 1] - (&DAT_00340080)[iVar1]) * (iVar3 + iVar1 * -0x1000); + if (iVar2 < 0) { + iVar2 = iVar2 + 0xfff; + } + iVar3 = (iVar2 >> 0xc) + (&DAT_00340080)[iVar1]; + iVar2 = 0; + if (-1 < iVar3) { + iVar2 = iVar3; + } + return iVar2; +} + + +================================================================== + +### FUNC 00109ed0 (62 bytes) name=FUN_00109ed0 + +int FUN_00109ed0(long param_1,int param_2) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x7810) == 0) { + iVar1 = param_2 - *(int *)(param_1 + 0x7808) >> ((byte)*(undefined4 *)(param_1 + 0x780c) & 0x1f) + ; + if (iVar1 < 0) { + iVar1 = 0; + } + return iVar1; + } + iVar1 = FUN_00109e70(); + return iVar1 >> (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f); +} + + +================================================================== + +### FUNC 00109f20 (409 bytes) name=FUN_00109f20 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00109f20(long param_1) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + uint uVar4; + int iVar5; + int iVar6; + long lVar7; + float fVar8; + float fVar9; + int local_98 [12]; + int local_68 [14]; + + if ((*(int *)(param_1 + 0x1328) != 0) && (*(int *)(param_1 + 0x132c) != 0)) { + iVar6 = (*(int *)(param_1 + 0x1448) + *(int *)(param_1 + 0x1444)) / 2; + if (*(float *)(param_1 + 0x7c) == _DAT_00131e24) { + *(undefined4 *)(param_1 + 0x17a4) = 1; + *(undefined4 *)(param_1 + 0x183c) = *(undefined4 *)(param_1 + 0x7804); + *(int *)(param_1 + 0x1840) = (*(int *)(param_1 + 0x7808) + *(int *)(param_1 + 0x3c)) - iVar6; + return; + } + iVar1 = *(int *)(param_1 + 0x3c); + *(undefined4 *)(param_1 + 0x17a4) = 10; + iVar5 = 0; + lVar7 = 0; + fVar8 = (*(float *)(param_1 + 0x7c) * (float)(iVar1 - iVar6)) / DAT_00131e3c + DAT_00131e20; + fVar9 = DAT_00131e38; + if (DAT_00131e38 <= fVar8) { + fVar9 = fVar8; + } + do { + *(int *)((long)local_98 + lVar7) = iVar5; + iVar2 = iVar5 - iVar1; + iVar5 = iVar5 + 10000; + uVar3 = FUN_00109ed0(param_1,(int)((float)iVar2 * fVar9) + iVar6); + *(undefined4 *)((long)local_68 + lVar7) = uVar3; + lVar7 = lVar7 + 4; + } while (iVar5 != 110000); + lVar7 = 0; + do { + iVar6 = *(int *)((long)local_68 + lVar7 + 4); + iVar1 = *(int *)((long)local_98 + lVar7 + 4); + *(int *)(param_1 + 0x17a8 + lVar7) = iVar6; + uVar4 = ((iVar1 - local_98[0]) + ((uint)(iVar6 - local_68[0]) >> 1)) / + (uint)(iVar6 - local_68[0]); + *(uint *)(param_1 + 0x183c + lVar7 * 2) = uVar4; + *(uint *)(param_1 + 0x1840 + lVar7 * 2) = local_98[0] - uVar4 * local_68[0]; + lVar7 = lVar7 + 4; + local_98[0] = iVar1; + local_68[0] = iVar6; + } while (lVar7 != 0x28); + } + return; +} + + +================================================================== + +### FUNC 0010a0d0 (120 bytes) name=FUN_0010a0d0 + +int FUN_0010a0d0(undefined8 param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + + uVar3 = 0x286; + uVar1 = 0; + while (uVar2 = uVar1, uVar2 + 1 < uVar3) { + while (uVar1 = (int)(uVar3 + uVar2) >> 1, param_2 < (int)(&DAT_00340080)[(int)uVar1]) { + uVar3 = uVar1; + if (uVar1 <= uVar2 + 1) goto LAB_0010a0fe; + } + } +LAB_0010a0fe: + param_2 = param_2 - (&DAT_00340080)[(int)uVar2]; + if (param_2 <= DAT_0033f654) { + return uVar2 * 0x1000 + -150000 + (param_2 * (&DAT_0033f660)[(int)uVar2] >> 0xc); + } + return uVar2 * 0x1000 + -150000 + + (int)((long)param_2 * (long)(int)(&DAT_0033f660)[(int)uVar2] >> 0xc); +} + + +================================================================== + +### FUNC 0010a150 (45 bytes) name=FUN_0010a150 + +ulong FUN_0010a150(long param_1,int param_2) + +{ + ulong uVar1; + + if (*(int *)(param_1 + 0x7810) == 0) { + return (ulong)(uint)((param_2 << ((byte)*(undefined4 *)(param_1 + 0x780c) & 0x1f)) + + *(int *)(param_1 + 0x7808)); + } + uVar1 = FUN_0010a0d0(param_1,param_2 << (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f)); + return uVar1; +} + + +================================================================== + +### FUNC 0010a190 (20 bytes) name=FUN_0010a190 + +void FUN_0010a190(undefined8 param_1) + +{ + undefined4 uVar1; + + uVar1 = FUN_0010a150(); + FUN_00109e70(param_1,uVar1); + return; +} + + +================================================================== + +### FUNC 0010a1b0 (28 bytes) name=FUN_0010a1b0 + +ulong FUN_0010a1b0(long param_1,int param_2) + +{ + ulong uVar1; + + if (*(int *)(param_1 + 0x7810) != 0) { + return (ulong)(uint)(param_2 << (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f)); + } + uVar1 = FUN_0010a190(); + return uVar1; +} + + +================================================================== + +### FUNC 0010a1e0 (20 bytes) name=FUN_0010a1e0 + +void FUN_0010a1e0(undefined8 param_1) + +{ + undefined4 uVar1; + + uVar1 = FUN_0010a0d0(); + FUN_00109ed0(param_1,uVar1); + return; +} + + +================================================================== + +### FUNC 0010a200 (28 bytes) name=FUN_0010a200 + +ulong FUN_0010a200(long param_1,int param_2) + +{ + ulong uVar1; + + if (*(int *)(param_1 + 0x7810) != 0) { + return (ulong)(uint)(param_2 >> (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f)); + } + uVar1 = FUN_0010a1e0(); + return uVar1; +} + + +================================================================== + +### FUNC 0010a230 (384 bytes) name=FUN_0010a230 + +int FUN_0010a230(float param_1,long param_2,int param_3) + +{ + float fVar1; + float fVar2; + float fVar3; + int iVar4; + int iVar5; + int *piVar6; + int iVar7; + + fVar3 = DAT_00131e20; + fVar1 = *(float *)(param_2 + 0xd8); + if ((((fVar1 <= 0.0) || (DAT_00131e20 < fVar1)) || (param_1 <= 0.0)) || + (((DAT_00131e20 < param_1 || (fVar2 = *(float *)(param_2 + 0xdc), fVar2 <= 0.0)) || + (DAT_00131e20 < fVar2)))) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51ffff; + } + else { + iVar4 = FUN_00109e70(); + iVar5 = FUN_00109e70(param_2,(int)(DAT_00131e3c * *(float *)(param_2 + 0xbc))); + param_1 = fVar1 * fVar2 * param_1; + iVar4 = FUN_0010a0d0(param_2,(int)(((float)iVar4 - (float)iVar5 * (fVar3 - param_1)) / param_1)) + ; + param_3 = -0x42afe; + if (-0x42aff < iVar4) { + param_3 = iVar4; + } + iVar4 = *(int *)(param_2 + 0x44) + -15000; + iVar5 = iVar4 / 5000; + iVar7 = 6; + if (iVar5 < 7) { + iVar7 = iVar5; + } + iVar5 = 0; + if (-1 < iVar7) { + iVar5 = iVar7; + } + iVar7 = *(int *)(param_2 + 0x90 + (long)iVar5 * 4); + param_3 = iVar7 + ((iVar4 + iVar5 * -5000) * + (*(int *)(param_2 + 0x90 + (long)(iVar5 + 1) * 4) - iVar7)) / 5000 + param_3; + if (*(int *)(param_2 + 0x54) != 0) { + param_3 = param_3 + (int)((float)param_3 * *(float *)(param_2 + 0xd0)) + + (int)(DAT_00131e3c * *(float *)(param_2 + 0xd4)); + } + } + return param_3; +} + + +================================================================== + +### FUNC 0010a3c0 (223 bytes) name=FUN_0010a3c0 + +int FUN_0010a3c0(undefined8 param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar4 = param_2 + 150000; + iVar3 = iVar4 + param_3; + iVar2 = param_2 + 0x259ef; + if (-1 < iVar4) { + iVar2 = iVar4; + } + iVar2 = iVar2 >> 0xc; + if (0x285 < iVar2) { + iVar2 = 0x285; + } + if (iVar2 < 0) { + iVar2 = 0; + } + iVar1 = iVar3 + 0xfff; + if (-1 < iVar3) { + iVar1 = iVar3; + } + iVar1 = iVar1 >> 0xc; + if (0x285 < iVar1) { + iVar1 = 0x285; + } + if (iVar1 < 0) { + iVar1 = 0; + } + if (iVar1 != iVar2) { + iVar3 = ((&DAT_00340080)[iVar1 + 1] - (&DAT_00340080)[iVar1]) * (iVar3 + iVar1 * -0x1000); + if (iVar3 < 0) { + iVar3 = iVar3 + 0xfff; + } + iVar4 = ((&DAT_00340080)[iVar2 + 1] - (&DAT_00340080)[iVar2]) * (iVar4 + iVar2 * -0x1000); + if (iVar4 < 0) { + iVar4 = iVar4 + 0xfff; + } + return ((&DAT_00340080)[iVar1] + (iVar3 >> 0xc)) - ((iVar4 >> 0xc) + (&DAT_00340080)[iVar2]); + } + param_3 = ((&DAT_00340080)[iVar1 + 1] - (&DAT_00340080)[iVar1]) * param_3; + iVar3 = param_3 + 0xfff; + if (-1 < param_3) { + iVar3 = param_3; + } + return iVar3 >> 0xc; +} + + +================================================================== + +### FUNC 0010a4b0 (71 bytes) name=FUN_0010a4b0 + +uint FUN_0010a4b0(long param_1,undefined8 param_2,uint param_3) + +{ + int iVar1; + uint uVar2; + + if (*(int *)(param_1 + 0x7810) != 0) { + iVar1 = FUN_0010a3c0(); + uVar2 = iVar1 >> (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f); + if (0xffff < (int)uVar2) { + uVar2 = 0xffff; + } + return uVar2; + } + param_3 = param_3 >> ((byte)*(undefined4 *)(param_1 + 0x780c) & 0x1f); + uVar2 = 0xffff; + if (param_3 < 0x10000) { + uVar2 = param_3; + } + return uVar2; +} + + +================================================================== + +### FUNC 0010a500 (251 bytes) name=FUN_0010a500 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_0010a500(long param_1) + +{ + ushort uVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar3 = *(int *)(param_1 + 0x34); + uVar1 = FUN_0010a4b0(param_1,30000,*(int *)(param_1 + 0x24) * 1000); + if (iVar3 < 0) { + iVar2 = 0x51eb851f; + iVar4 = -100; + if (-0x65 < iVar3) { + iVar4 = iVar3; + } + } + else { + iVar2 = 0x1b4e81b5; + iVar4 = 100; + if (iVar3 < 0x65) { + iVar4 = iVar3; + } + } + iVar4 = iVar4 * (uint)uVar1; + iVar3 = (uint)uVar1 + ((iVar4 >> 0x1f) - (int)((long)iVar4 * (long)iVar2 >> 0x24)); + if ((*(int *)(param_1 + 0x1328) == 0) || (*(float *)(param_1 + 0x7c) <= _DAT_00131e24)) + goto LAB_0010a578; + if (*(int *)(param_1 + 0x1438) == 1) { + iVar4 = *(int *)(param_1 + 0x1448); + iVar2 = *(int *)(param_1 + 0x1444); + } + else { + if (*(int *)(param_1 + 0x1438) != 2) goto LAB_0010a578; + iVar4 = *(int *)(param_1 + 0x1448); + iVar2 = *(int *)(param_1 + 0x1444); + if (iVar4 - iVar2 != 50000) goto LAB_0010a578; + } + iVar3 = iVar3 + (int)(((float)((*(int *)(param_1 + 0x3c) - (iVar4 + iVar2) / 2) * iVar3) * + *(float *)(param_1 + 0x7c)) / DAT_00131e3c); +LAB_0010a578: + iVar4 = 0x80; + if (0x7f < iVar3) { + iVar4 = iVar3; + } + return iVar4; +} + + +================================================================== + +### FUNC 0010a610 (1519 bytes) name=FUN_0010a610 + +void FUN_0010a610(long param_1) + +{ + int *piVar1; + long lVar2; + ushort *puVar3; + bool bVar4; + int iVar5; + uint uVar6; + uint *puVar7; + uint *puVar8; + uint uVar9; + uint uVar10; + int iVar11; + ulong uVar12; + ulong uVar13; + long lVar14; + int iVar15; + int *piVar16; + int *piVar17; + ulong uVar18; + int iVar19; + uint uVar20; + uint uVar21; + uint uVar22; + bool bVar23; + int local_1040; + int local_103c; + uint local_1038 [1024]; + uint local_38 [2]; + + piVar1 = (int *)(param_1 + 0x2b60); + lVar2 = param_1 + 0x3b60; + uVar9 = *(uint *)(param_1 + 0x77f8); + if ((*(int *)(param_1 + 0x6c) != 0) && (*(int *)(param_1 + 0x10) == 0)) { + uVar9 = (*(int *)(param_1 + 0x4b68) + 1) * *(int *)(param_1 + 0x1ed0); + } + iVar15 = *(int *)(param_1 + 8000); + uVar18 = 1; + if (uVar9 >> 0xc != 0) { + uVar18 = (ulong)(uVar9 >> 0xc); + } + uVar21 = *(int *)(param_1 + 0x1f3c) - iVar15; + uVar13 = 0x1000; + bVar23 = false; + iVar11 = 0x1000; + if (((ulong)piVar1 & 1) == 0) { + piVar17 = piVar1; + bVar4 = false; + if (((ulong)piVar1 & 2) == 0) goto LAB_0010a699; +LAB_0010aba1: + bVar23 = bVar4; + uVar22 = iVar11 - 2; + uVar13 = (ulong)uVar22; + *(undefined2 *)piVar17 = 0; + piVar17 = (int *)((long)piVar17 + 2); + } + else { + piVar17 = (int *)(param_1 + 0x2b61); + *(undefined1 *)(param_1 + 0x2b60) = 0; + uVar13 = 0xfff; + bVar23 = true; + iVar11 = 0xfff; + bVar4 = true; + if (((ulong)piVar17 & 2) != 0) goto LAB_0010aba1; +LAB_0010a699: + uVar22 = (uint)uVar13; + } + if (((ulong)piVar17 & 4) != 0) { + *piVar17 = 0; + uVar13 = (ulong)(uVar22 - 4); + piVar17 = piVar17 + 1; + } + for (uVar12 = uVar13 >> 3; uVar12 != 0; uVar12 = uVar12 - 1) { + piVar17[0] = 0; + piVar17[1] = 0; + piVar17 = piVar17 + 2; + } + if ((uVar13 & 4) != 0) { + *piVar17 = 0; + piVar17 = piVar17 + 1; + } + piVar16 = piVar17; + if ((uVar13 & 2) != 0) { + piVar16 = (int *)((long)piVar17 + 2); + *(undefined2 *)piVar17 = 0; + } + if (bVar23) { + *(undefined1 *)piVar16 = 0; + } + puVar3 = *(ushort **)(param_1 + 0x268); + for (; uVar9 != 0; uVar9 = uVar9 - 1) { + piVar1[((uint)*puVar3 - iVar15) * (int)(0xffc00000 / (ulong)uVar21) >> 0x16] = + piVar1[((uint)*puVar3 - iVar15) * (int)(0xffc00000 / (ulong)uVar21) >> 0x16] + 1; + puVar3 = puVar3 + 1; + } + if (*(int *)(param_1 + 0x6c) == 0) { +LAB_0010a78a: + iVar11 = *(int *)(param_1 + 0x1f28); + } + else if ((*(int *)(param_1 + 0x10) == 0) && + (*(uint *)(param_1 + 0x4b68) < *(int *)(param_1 + 0x1ed4) - 1U)) { + iVar11 = *(int *)(param_1 + 0x4b6c); + iVar5 = *(int *)(param_1 + 0x4b70) * 0x20; + if (iVar5 < iVar11 * 0x1f) { + uVar21 = (uint)((*(int *)(param_1 + 0x4b70) - iVar15) * 0x3ff) / uVar21; + if (uVar21 != 0) { + lVar14 = 0; + do { + piVar1[lVar14] = 0; + lVar14 = lVar14 + 1; + } while ((uint)lVar14 < uVar21); +LAB_0010a777: + if (*(int *)(param_1 + 0x6c) == 0) goto LAB_0010a78a; + goto LAB_0010a780; + } + } + else if (iVar11 * 0x21 < iVar5) { + lVar14 = 0; + do { + *(undefined4 *)((long)piVar1 + lVar14) = 0; + lVar14 = lVar14 + 4; + } while (lVar14 != 0x1000); + goto LAB_0010a777; + } + } + else { +LAB_0010a780: + iVar11 = *(int *)(param_1 + 0x4b6c); + } + uVar13 = (ulong)(uint)((iVar11 - *(int *)(param_1 + 8000)) * 0x3ff) / + (ulong)(uint)(*(int *)(param_1 + 0x1f3c) - *(int *)(param_1 + 8000)); + uVar9 = (uint)uVar13; + uVar12 = uVar13; + if (*(int *)(param_1 + 0x70) != 0) { + if (uVar9 == 0) { + bVar23 = false; + uVar22 = 0; + uVar21 = 0; + iVar15 = 1; + } + else { + uVar22 = 0; + uVar21 = 0; + piVar17 = piVar1; + uVar6 = 0; + do { + iVar15 = *piVar17; + uVar10 = uVar6 + 1; + piVar17 = piVar17 + 1; + uVar21 = uVar21 + iVar15; + uVar22 = uVar22 + iVar15 * uVar6; + uVar6 = uVar10; + } while (uVar10 != uVar9); + iVar15 = uVar9 + 1; + if (0x3ff < iVar15) goto LAB_0010a863; + bVar23 = uVar21 != 0; + } + uVar10 = 0; + piVar17 = piVar1 + iVar15; + uVar6 = 0; + iVar11 = iVar15; + do { + iVar5 = *piVar17; + piVar17 = piVar17 + 1; + uVar10 = uVar10 + iVar5; + iVar5 = iVar5 * iVar11; + iVar11 = iVar11 + 1; + uVar6 = uVar6 + iVar5; + } while (iVar11 < 0x400); + if ((uVar10 == 0) || (!bVar23)) goto LAB_0010a863; + uVar21 = uVar6 / uVar10 + uVar22 / uVar21 >> 1; + uVar12 = (ulong)uVar21; + if (uVar21 <= uVar9) { + uVar12 = uVar13; + } + } + iVar15 = (int)uVar12 + 1; +LAB_0010a863: + iVar11 = *(int *)(param_1 + 0x30); + if (iVar11 < 0x65) { + if (iVar11 < -100) { + local_103c = 0xe0; + local_1040 = -0xdf; + } + else { + local_1040 = (iVar11 * 0x1bf) / 200; + local_103c = local_1040 + 0x1bf; + } + } + else { + local_103c = 0x29e; + local_1040 = 0xdf; + } + lVar14 = 0; + do { + *(uint *)((long)piVar1 + lVar14) = + (uint)(*(int *)(param_1 + 0x2b64 + lVar14) + *(int *)((long)piVar1 + lVar14)) >> 1; + lVar14 = lVar14 + 4; + } while (lVar14 != 0xffc); + *(undefined4 *)(param_1 + 0x3b5c) = *(undefined4 *)(param_1 + 0x3b58); + iVar5 = (int)uVar12; + iVar11 = (int)(0x10000 / uVar18); + uVar9 = (uint)uVar18; + if (-1 < iVar5) { + lVar14 = 0; + uVar21 = 0; + iVar19 = 0; + do { + uVar21 = uVar21 + *(int *)((long)piVar1 + lVar14 + uVar12 * 4); + if (uVar21 < uVar9) { + uVar22 = uVar21 * iVar11 >> 8; + } + else { + iVar19 = iVar19 + 1; + uVar22 = 0; + uVar21 = 0; + } + *(uint *)(uVar12 * 4 + lVar2 + lVar14) = uVar22 + iVar19 * 0x100; + lVar14 = lVar14 + -4; + } while (lVar14 != ~uVar12 * 4); + } + if (iVar15 < 0x400) { + uVar21 = 0; + lVar14 = 0; + iVar19 = 0; + do { + uVar21 = uVar21 + *(int *)((long)piVar1 + lVar14 + (long)iVar15 * 4); + if (uVar21 < uVar9 * 8) { + if (uVar21 < uVar9) { + uVar22 = uVar21 * iVar11 >> 8; + } + else { + iVar19 = iVar19 + 1; + uVar22 = 0; + uVar21 = 0; + } + } + else { + iVar19 = iVar19 + 2; + uVar22 = 0; + uVar21 = 0; + } + *(uint *)((long)iVar15 * 4 + lVar2 + lVar14) = uVar22 + iVar19 * 0x100; + lVar14 = lVar14 + 4; + } while (lVar14 != (ulong)(0x3ff - iVar15) * 4 + 4); + } + uVar9 = FUN_0010a500(param_1); + iVar11 = 4; + uVar9 = (uint)((*(int *)(param_1 + 0x1f3c) - *(int *)(param_1 + 8000)) * 0x10) / uVar9; + if (uVar9 != 0) { + uVar21 = 0x200; + if (uVar9 < 0x201) { + uVar21 = uVar9; + } + iVar11 = uVar21 << 2; + } + uVar9 = iVar11 * 0x600; + puVar7 = local_1038; + do { + uVar21 = uVar9 >> 0xd; + if (uVar21 == 0) { + uVar21 = 1; + } + puVar8 = puVar7 + 1; + uVar9 = uVar9 + iVar11; + *puVar7 = uVar21; + puVar7 = puVar8; + } while (puVar8 != local_38); + uVar9 = *(uint *)(param_1 + 0x3b60); + if (uVar9 != 0) { + uVar21 = (local_1040 + 0x1c0) * 0x10; + if (-1 < iVar5) { + uVar18 = 0; + uVar22 = uVar21; + do { + uVar10 = uVar21 - (*(int *)(lVar2 + uVar12 * 4 + uVar18 * 4) * + ((uint)((local_1040 + 0x1c0) * 0x40000) / uVar9) >> 0xe); + uVar6 = uVar22 - local_1038[iVar5 + (int)uVar18]; + uVar20 = uVar22 - uVar10; + uVar22 = uVar10; + if (local_1038[iVar5 + (int)uVar18] < uVar20) { + uVar22 = uVar6; + } + *(char *)(param_1 + 0x2760 + uVar12 + uVar18) = (char)(uVar22 >> 6); + uVar18 = uVar18 - 1; + } while (uVar18 != ~uVar12); + } + } + uVar9 = *(uint *)(param_1 + 0x4b5c); + if (uVar9 != 0) { + if (iVar15 < 0x400) { + lVar14 = 0; + uVar21 = local_103c * 0x10; + do { + uVar22 = (*(int *)(lVar2 + (long)iVar15 * 4 + lVar14 * 4) * + ((uint)((0x240 - local_1040) * 0x40000) / uVar9) >> 0xe) + local_103c * 0x10; + uVar10 = uVar22 - uVar21; + uVar6 = uVar21 + local_1038[iVar15 + (int)lVar14]; + uVar21 = uVar22; + if (local_1038[iVar15 + (int)lVar14] < uVar10) { + uVar21 = uVar6; + } + *(char *)(param_1 + 0x2760 + (long)iVar15 + lVar14) = (char)(uVar21 >> 6); + lVar14 = lVar14 + 1; + } while (lVar14 != (ulong)(0x3ff - iVar15) + 1); + } + } + return; +} + + +================================================================== + +### FUNC 0010ac30 (173 bytes) name=FUN_0010ac30 + +int FUN_0010ac30(undefined8 param_1,int param_2,uint param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar4 = param_2 + 150000; + iVar1 = param_2 + 0x259ef; + if (-1 < iVar4) { + iVar1 = iVar4; + } + iVar2 = 0x285; + if (iVar1 >> 0xc < 0x286) { + iVar2 = iVar1 >> 0xc; + } + iVar1 = 0; + if (-1 < iVar2) { + iVar1 = iVar2; + } + iVar2 = (&DAT_00340080)[iVar1]; + iVar3 = (&DAT_00340080)[iVar1 + 1] - iVar2; + if (iVar3 < (int)((((int)param_3 >> 0x1f ^ param_3) - ((int)param_3 >> 0x1f)) * 2)) { + iVar3 = iVar3 * (iVar4 + iVar1 * -0x1000); + if (iVar3 < 0) { + iVar3 = iVar3 + 0xfff; + } + iVar4 = (iVar3 >> 0xc) + iVar2 + param_3; + if ((iVar4 < iVar2) || ((int)(&DAT_00340080)[iVar1 + 1] < iVar4)) { + iVar1 = FUN_0010a0d0(); + return iVar1 - param_2; + } + } + return (int)(param_3 * (&DAT_0033f660)[iVar1]) >> 0xc; +} + + +================================================================== + +### FUNC 0010acf0 (43 bytes) name=FUN_0010acf0 + +ulong FUN_0010acf0(long param_1,undefined8 param_2,uint param_3) + +{ + ulong uVar1; + + if (*(int *)(param_1 + 0x7810) == 0) { + return (ulong)((param_3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x780c) & 0x1f)); + } + uVar1 = FUN_0010ac30(param_1,param_2, + (param_3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f)); + return uVar1; +} + + +================================================================== + +### FUNC 0010ad30 (18 bytes) name=FUN_0010ad30 + +ulong FUN_0010ad30(long param_1,uint param_2) + +{ + ulong uVar1; + + if (*(int *)(param_1 + 0xb0) != 0) { + uVar1 = FUN_0010a230(); + return uVar1; + } + return (ulong)param_2; +} + + +================================================================== + +### FUNC 0010ad50 (47 bytes) name=FUN_0010ad50 + +float FUN_0010ad50(float param_1,undefined8 param_2,long param_3) + +{ + if (*(float *)(param_3 + 0xb0) < param_1) { + return param_1 * *(float *)(param_3 + 0xbc) + *(float *)(param_3 + 0xc0); + } + return param_1 * *(float *)(param_3 + 0xb4) + *(float *)(param_3 + 0xb8); +} + + +================================================================== + +### FUNC 0010ad90 (779 bytes) name=FUN_0010ad90 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_0010ad90(float param_1,long param_2,uint param_3,float *param_4,uint *param_5) + +{ + long lVar1; + ushort uVar2; + int iVar3; + uint uVar4; + long lVar5; + uint uVar6; + uint uVar7; + int iVar8; + int iVar9; + int iVar10; + long lVar11; + ulong uVar12; + long lVar13; + uint uVar14; + uint uVar15; + ulong uVar16; + uint uVar17; + int iVar18; + uint uVar19; + float fVar20; + byte local_38; + + uVar17 = *(uint *)(param_2 + 0x4b60); + if (uVar17 == 0) { + iVar3 = *(int *)(param_2 + 0x1f20); + iVar10 = FUN_0010a150(param_2,iVar3); + iVar8 = *(int *)(param_2 + 0x1f28); + iVar9 = FUN_0010a150(param_2,iVar8); + if (iVar10 - iVar9 < 10000) { + *(undefined4 *)(param_2 + 0x4b60) = 0xffff; + return 0; + } + uVar17 = iVar8 + (iVar3 - iVar8) / 3; + *(uint *)(param_2 + 0x4b60) = uVar17; + } + lVar5 = *(long *)(param_2 + 0x268); + uVar2 = *(ushort *)(lVar5 + (ulong)param_3 * 2); + if (uVar17 < uVar2) { + iVar3 = *(int *)(param_2 + 0x1ef8); + local_38 = (byte)iVar3; + if (iVar3 != 0) { + param_1 = param_1 * (float)(1 << (local_38 & 0x1f)); + } + uVar4 = *(uint *)(param_2 + 0x1ed0); + uVar6 = param_3 / uVar4; + param_3 = param_3 - uVar6 * uVar4; + uVar15 = param_3; + if ((int)uVar6 < (int)param_3) { + uVar15 = uVar6; + } + uVar7 = ~uVar6 + *(int *)(param_2 + 0x1ed4); + uVar14 = (uVar4 - 1) - param_3; + if (uVar14 <= uVar7) { + uVar7 = uVar14; + } + if ((int)uVar7 < (int)uVar15) { + uVar15 = uVar7; + } + if (0 < (int)uVar15) { + uVar16 = (ulong)uVar2; + iVar8 = 1; + iVar10 = 0; + do { + iVar9 = iVar8; + iVar8 = iVar9 * 2; + lVar11 = 0; + lVar13 = lVar5 + ((ulong)((uVar6 - iVar9) * uVar4) + ((long)(int)param_3 - (long)iVar9)) * 2 + ; + uVar7 = 0; + do { + iVar18 = (int)lVar11; + lVar1 = lVar11 * 2; + lVar11 = lVar11 + 1; + uVar7 = uVar7 + (uint)*(ushort *)(lVar13 + (ulong)(uVar4 * 2 * iVar9 + iVar18) * 2) + + (uint)*(ushort *)(lVar13 + lVar1); + } while ((int)lVar11 <= iVar8); + iVar18 = 1; + uVar14 = uVar4; + do { + uVar12 = (ulong)uVar14; + iVar18 = iVar18 + 1; + uVar19 = uVar14 + iVar8; + uVar14 = uVar14 + uVar4; + uVar7 = uVar7 + (uint)*(ushort *)(lVar13 + (ulong)uVar19 * 2) + + (uint)*(ushort *)(lVar13 + uVar12 * 2); + } while (iVar18 != iVar8); + uVar12 = (ulong)uVar7 / (ulong)(uint)(iVar9 * 8); + iVar8 = (int)uVar12; + if (iVar8 <= (int)uVar17) { + fVar20 = (float)iVar10 + + (float)(int)((iVar9 - iVar10) * (uVar17 - (int)uVar16)) / + (float)(iVar8 - (int)uVar16); + if (fVar20 != _DAT_00131e24) goto LAB_0010af61; + break; + } + iVar8 = iVar9 + 1; + if ((param_1 < (float)iVar9) && (iVar10 = iVar9 * 9 >> 3, iVar8 <= iVar10)) { + iVar8 = iVar10; + } + uVar16 = uVar12; + iVar10 = iVar9; + } while (iVar8 <= (int)uVar15); + } + fVar20 = (float)(int)uVar15; + if (param_1 < fVar20) { +LAB_0010af61: + if ((int)(DAT_00131e40 + fVar20) <= (int)uVar15) { + uVar15 = (int)(DAT_00131e40 + fVar20); + } + iVar8 = uVar15 * 2; + if (-1 < iVar8) { + uVar14 = (uVar6 - uVar15) * uVar4; + iVar10 = 0; + uVar7 = 0; + uVar6 = 0; + do { + lVar13 = 0; + do { + uVar19 = (uint)*(ushort *) + (lVar5 + ((ulong)uVar14 + ((long)(int)param_3 - (long)(int)uVar15)) * 2 + + lVar13 * 2); + if (uVar19 <= uVar17) { + uVar6 = uVar6 + uVar19; + uVar7 = uVar7 + 1; + } + lVar13 = lVar13 + 1; + } while ((int)lVar13 <= iVar8); + iVar10 = iVar10 + 1; + uVar14 = uVar14 + uVar4; + } while (iVar10 != iVar8 + 1); + if (uVar7 != 0) { + if (iVar3 != 0) { + fVar20 = fVar20 / (float)(1 << (local_38 & 0x1f)); + } + *param_4 = fVar20; + *param_5 = uVar6 / uVar7; + return 1; + } + } + } + } + return 0; +} + + +================================================================== + +### FUNC 0010b0a0 (1381 bytes) name=FUN_0010b0a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulong FUN_0010b0a0(long param_1,ushort param_2,uint param_3,int param_4) + +{ + long lVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + int iVar5; + ulong uVar6; + byte bVar7; + int iVar8; + uint uVar9; + uint uVar10; + int *piVar11; + int iVar12; + float fVar13; + float fVar14; + float fVar15; + float local_40; + int local_3c [3]; + + fVar13 = DAT_00131e20; + if (*(int *)(param_1 + 0x1760) == 0) { + uVar6 = FUN_0010a150(param_1,param_2); + return uVar6; + } + uVar6 = (ulong)*(uint *)(param_1 + 0x78); + uVar9 = (uint)param_2; + if (*(uint *)(param_1 + 0x1764) <= *(uint *)(param_1 + 0x78)) { + uVar6 = 0; + } + lVar1 = param_1 + 0x1768 + uVar6 * 0x21c; + fVar15 = *(float *)(lVar1 + 0x204); + if ((fVar15 <= _DAT_00131e44) || (DAT_00131e48 <= fVar15)) { + if (((param_4 == 0) || + (((*(float *)(lVar1 + 0xac) < DAT_00131e20 || (*(float *)(lVar1 + 0xb0) < DAT_00131e20)) || + (*(float *)(lVar1 + 0xb4) <= 0.0)))) || (*(float *)(lVar1 + 0xbc) <= 0.0)) { + iVar3 = *(int *)(param_1 + 0x7810); + iVar5 = *(int *)(param_1 + 0x44); + } + else { + iVar5 = FUN_0010ad90(param_1,param_3,&local_40,local_3c); + if (iVar5 == 0) { + iVar3 = *(int *)(param_1 + 0x7810); + } + else { + if (*(float *)(lVar1 + 0xb0) < local_40) { + fVar15 = local_40 * *(float *)(lVar1 + 0xbc) + *(float *)(lVar1 + 0xc0); + } + else { + fVar15 = local_40 * *(float *)(lVar1 + 0xb4) + *(float *)(lVar1 + 0xb8); + } + fVar14 = *(float *)(lVar1 + 0xac); + if (*(float *)(lVar1 + 0xb0) < fVar14) { + fVar14 = fVar14 * *(float *)(lVar1 + 0xbc) + *(float *)(lVar1 + 0xc0); + } + else { + fVar14 = fVar14 * *(float *)(lVar1 + 0xb4) + *(float *)(lVar1 + 0xb8); + } + iVar3 = *(int *)(param_1 + 0x7810); + if (iVar3 == 0) { + iVar5 = FUN_0010a190(param_1,uVar9); + iVar3 = FUN_0010a190(param_1,local_3c[0]); + uVar9 = FUN_0010a1e0(param_1,(int)((float)iVar5 + + (float)(iVar5 - iVar3) * (fVar13 - fVar15 / fVar14))); + iVar3 = 0; + } + else { + bVar7 = 7 - (char)*(undefined4 *)(param_1 + 0x7814); + iVar5 = (uint)param_2 << (bVar7 & 0x1f); + uVar9 = (int)((float)iVar5 + + (float)(iVar5 - (local_3c[0] << (bVar7 & 0x1f))) * (fVar13 - fVar15 / fVar14) + ) >> (bVar7 & 0x1f); + } + } + iVar5 = *(int *)(param_1 + 0x44); + } + if (iVar3 == 0) goto LAB_0010b1a4; + } + else { + uVar2 = FUN_0010a150(param_1,uVar9); + iVar3 = FUN_00109e70(param_1,uVar2); + iVar5 = *(int *)(param_1 + 0x44); + iVar4 = FUN_00109e70(param_1,iVar5); + iVar4 = (int)(((float)iVar3 - (float)iVar4 * (DAT_00131e20 - fVar15)) / fVar15); + iVar3 = DAT_003400fc; + if (DAT_003400fc <= iVar4) { + iVar3 = iVar4; + } + if (*(int *)(param_1 + 0x7810) == 0) { + uVar9 = FUN_0010a1e0(param_1); + goto LAB_0010b1a4; + } + uVar9 = iVar3 >> (7U - (char)*(undefined4 *)(param_1 + 0x7814) & 0x1f); + } + uVar9 = FUN_0010a150(param_1,uVar9); +LAB_0010b1a4: + iVar3 = *(int *)(lVar1 + 0x3c) + -1; + if (iVar3 == 0) { + uVar6 = 1; + uVar10 = 0; + } + else if (*(int *)(lVar1 + 0x40) < (int)uVar9) { + iVar4 = 0; + piVar11 = (int *)(lVar1 + 0x44); + do { + iVar4 = iVar4 + 1; + if (iVar4 == iVar3) { + uVar10 = iVar3 * 2; + uVar6 = (ulong)(uVar10 + 1); + goto LAB_0010b1e4; + } + iVar12 = *piVar11; + piVar11 = piVar11 + 1; + } while (iVar12 < (int)uVar9); + uVar10 = iVar4 * 2; + uVar6 = (ulong)(uVar10 + 1); + } + else { + uVar6 = 1; + uVar10 = 0; + } +LAB_0010b1e4: + iVar3 = *(int *)(param_1 + 0x40); + iVar12 = (int)((long)(int)uVar9 * (long)*(int *)(lVar1 + 0xd4 + (ulong)uVar10 * 4) >> + ((byte)*(undefined4 *)(lVar1 + 0x30) & 0x3f)) + *(int *)(lVar1 + 0xd4 + uVar6 * 4); + iVar4 = (*(int *)(lVar1 + 0x38) + *(int *)(param_1 + 0x3c)) - *(int *)(lVar1 + 0x34); + if (*(int *)(param_1 + 0x4c) == 0) { + iVar4 = iVar3 - iVar4; + iVar8 = -1000; + } + else { + iVar4 = iVar4 - iVar3; + iVar8 = -5000; + } + if (iVar8 <= iVar4) { + iVar8 = iVar4; + } + iVar4 = 1000; + if (iVar8 < 0x3e9) { + iVar4 = iVar8; + } + iVar5 = FUN_0010a3c0(param_1,iVar3, + (iVar3 - *(int *)(param_1 + 0x48)) + (iVar5 - *(int *)(param_1 + 0x3c)) * 2 + + iVar4); + if (param_4 != 0) { + if (*(float *)(param_1 + 0x8c) != 0.0) { + iVar3 = *(int *)(param_1 + 0x4ba0); + if (*(int *)(lVar1 + 0x20c) - *(int *)(lVar1 + 0x208) < 0xc351) { + if (iVar3 < 40000) { + if (iVar3 < 0x1389) { + iVar3 = 5000; + } + } + else { + iVar3 = 40000; + } + } + else if (iVar3 < 80000) { + if (iVar3 < -79999) { + iVar3 = -80000; + } + } + else { + iVar3 = 80000; + } + iVar3 = FUN_0010a3c0(param_1,35000, + (int)((float)(iVar3 - *(int *)(param_1 + 0x88)) * + *(float *)(param_1 + 0x8c))); + iVar5 = iVar5 + iVar3; + } + if (*(float *)(lVar1 + 0x214) != 0.0) { + uVar9 = *(uint *)(param_1 + 0x1ed0); + iVar4 = (param_3 - (param_3 / uVar9) * uVar9) - (uVar9 >> 1); + iVar3 = param_3 / uVar9 - (*(uint *)(param_1 + 0x1ed4) >> 1); + fVar13 = (float)(iVar3 * iVar3 + iVar4 * iVar4); + fVar15 = SQRT(fVar13); + if (NAN(fVar15)) { + fVar15 = sqrtf(fVar13); + } + fVar15 = (float)((uint)fVar15 ^ DAT_00131e70); + fVar13 = *(float *)(lVar1 + 0x214); + iVar3 = FUN_00109e70(param_1,iVar12); + iVar4 = FUN_00109e70(param_1,*(undefined4 *)(param_1 + 0x48)); + iVar5 = iVar5 + (int)((float)(iVar3 - iVar4) * fVar15 * fVar13); + } + } + iVar5 = FUN_0010ac30(param_1,iVar12,iVar5); + return (ulong)(uint)(iVar5 + iVar12); +} + + +================================================================== + +### FUNC 0010b620 (652 bytes) name=FUN_0010b620 + +void FUN_0010b620(long param_1) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int iVar4; + byte bVar5; + int iVar6; + + memcpy((void *)(param_1 + 0x4b80),(void *)(param_1 + 0x1f08),0x2c78); + uVar1 = FUN_0010b0a0(param_1,*(undefined2 *)(param_1 + 0x1f28), + (*(uint *)(param_1 + 0x1ed0) >> 1) + (*(uint *)(param_1 + 0x77f8) >> 1),0); + *(undefined4 *)(param_1 + 0x4ba0) = uVar1; + uVar1 = FUN_0010b0a0(param_1,*(undefined2 *)(param_1 + 0x1f3c), + (*(uint *)(param_1 + 0x1ed0) >> 1) + (*(uint *)(param_1 + 0x77f8) >> 1),0); + *(undefined4 *)(param_1 + 0x4bb4) = uVar1; + uVar1 = FUN_0010b0a0(param_1,*(undefined2 *)(param_1 + 0x1f20),*(undefined4 *)(param_1 + 0x4ba8),1 + ); + *(undefined4 *)(param_1 + 0x4b98) = uVar1; + uVar1 = FUN_0010b0a0(param_1,*(undefined2 *)(param_1 + 8000), + (*(uint *)(param_1 + 0x1ed0) >> 1) + (*(uint *)(param_1 + 0x77f8) >> 1),0); + *(undefined4 *)(param_1 + 0x4bb8) = uVar1; + iVar2 = FUN_0010b0a0(param_1,*(undefined2 *)(param_1 + 0x1f24),*(undefined4 *)(param_1 + 0x4bac),1 + ); + iVar4 = *(int *)(param_1 + 0xb0); + *(int *)(param_1 + 0x4b9c) = iVar2; + if (iVar4 == 2) { + iVar6 = *(int *)(param_1 + 0x4ba0); + *(float *)(param_1 + 0xbc) = (float)iVar6 * DAT_00131e34; + } + else { + if (iVar4 == 3) { + *(float *)(param_1 + 0xbc) = (float)*(int *)(param_1 + 0x48) * DAT_00131e34; + } + iVar6 = *(int *)(param_1 + 0x4ba0); + } + if (*(int *)(param_1 + 0x7810) == 0) { + bVar5 = (byte)*(undefined4 *)(param_1 + 0x780c); + *(uint *)(param_1 + 0x4bbc) = (uint)*(ushort *)(param_1 + 0x1f44) << (bVar5 & 0x1f); + iVar3 = (uint)*(ushort *)(param_1 + 0x1f2c) << (bVar5 & 0x1f); + } + else { + bVar5 = 7 - (char)*(undefined4 *)(param_1 + 0x7814); + uVar1 = FUN_0010ac30(param_1,iVar6,(uint)*(ushort *)(param_1 + 0x1f44) << (bVar5 & 0x1f)); + *(undefined4 *)(param_1 + 0x4bbc) = uVar1; + iVar3 = FUN_0010ac30(param_1,iVar6,(uint)*(ushort *)(param_1 + 0x1f2c) << (bVar5 & 0x1f)); + } + *(int *)(param_1 + 0x4ba4) = iVar3; + if (*(int *)(param_1 + 0x60) == 0) { + iVar4 = *(int *)(param_1 + 0x4b98); + goto LAB_0010b761; + } + if (iVar4 == 0) { + *(int *)(param_1 + 0x4ba0) = iVar6; +LAB_0010b7a8: + iVar4 = *(int *)(param_1 + 0x4b98); + *(int *)(param_1 + 0x4b9c) = iVar2; + } + else { + uVar1 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1,iVar6); + iVar2 = *(int *)(param_1 + 0x4b9c); + *(undefined4 *)(param_1 + 0x4ba0) = uVar1; + if (*(int *)(param_1 + 0xb0) == 0) goto LAB_0010b7a8; + iVar2 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1,iVar2); + *(int *)(param_1 + 0x4b9c) = iVar2; + iVar4 = *(int *)(param_1 + 0x4b98); + if (*(int *)(param_1 + 0xb0) != 0) { + iVar4 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1,iVar4); + iVar2 = *(int *)(param_1 + 0x4b9c); + } + } + *(int *)(param_1 + 0x4b98) = iVar4; + iVar6 = *(int *)(param_1 + 0x4ba0); +LAB_0010b761: + if (iVar4 < iVar2) { + *(int *)(param_1 + 0x4b98) = iVar2; + iVar4 = iVar2; + } + if (iVar4 < iVar6) { + *(int *)(param_1 + 0x4ba0) = iVar4; + iVar6 = iVar4; + } + if (iVar6 < iVar2) { + *(int *)(param_1 + 0x4ba0) = iVar2; + } + return; +} + + +================================================================== + +### FUNC 0010b8d0 (169 bytes) name=FUN_0010b8d0 + +uint FUN_0010b8d0(undefined4 param_1,long param_2,int param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined4 extraout_XMM0_Da; + undefined4 extraout_XMM0_Da_00; + + uVar6 = 0xffff; + uVar5 = 0; + uVar1 = *(uint *)(param_2 + 0x1ed0); + uVar2 = *(uint *)(param_2 + 0x77f8); + *(undefined4 *)(param_2 + 0x5c) = 1; + do { + uVar4 = uVar6 + uVar5 >> 1; + iVar3 = FUN_0010b0a0(param_1,param_2,(short)uVar4,(uVar1 >> 1) + (uVar2 >> 1),0); + if (((*(int *)(param_2 + 0x5c) != 0) || + (param_1 = extraout_XMM0_Da, *(int *)(param_2 + 0x60) != 0)) && + (param_1 = *(undefined4 *)(param_2 + 0xb8), *(int *)(param_2 + 0xb0) != 0)) { + iVar3 = FUN_0010a230(param_2,iVar3); + param_1 = extraout_XMM0_Da_00; + } + if (param_3 < iVar3) { + uVar6 = uVar4; + uVar4 = uVar5; + } + uVar5 = uVar4; + } while (uVar5 + 1 < uVar6); + return uVar6 + uVar5 >> 1; +} + + +================================================================== + +### FUNC 0010b990 (80 bytes) name=FUN_0010b990 + +undefined1 [16] FUN_0010b990(long param_1) + +{ + int iVar1; + ulong uVar2; + ushort uVar3; + undefined8 uVar4; + uint uVar5; + undefined1 auVar6 [16]; + undefined1 auVar7 [16]; + + uVar3 = FUN_0010b8d0(); + uVar4 = 0x100; + if (((int)(uint)uVar3 <= *(int *)(param_1 + 0x1f3c)) && + (uVar5 = (uint)uVar3, + uVar5 == *(uint *)(param_1 + 0x1f20) || (int)(uint)uVar3 < (int)*(uint *)(param_1 + 0x1f20))) { + iVar1 = *(int *)(param_1 + 8000); + uVar4 = 0; + if (iVar1 <= (int)uVar5) { + uVar2 = (ulong)(uint)(*(int *)(param_1 + 0x1f3c) - iVar1); + auVar7._1_7_ = 0; + auVar7[0] = *(byte *)(param_1 + 0x2760 + + (ulong)((uVar5 - iVar1) * (int)(0xffc00000 / uVar2) >> 0x16)); + auVar7._8_8_ = 0xffc00000 % uVar2; + return auVar7; + } + } + auVar6._8_2_ = uVar3; + auVar6._0_8_ = uVar4; + auVar6._10_6_ = 0; + return auVar6; +} + + +================================================================== + +### FUNC 0010b9f0 (786 bytes) name=FUN_0010b9f0 + +void FUN_0010b9f0(long param_1) + +{ + undefined2 uVar1; + uint uVar2; + undefined4 uVar3; + ushort uVar4; + ushort uVar5; + int iVar6; + uint uVar7; + undefined1 *puVar8; + ulong uVar9; + long lVar10; + uint uVar11; + undefined8 *puVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 *puVar15; + uint uVar16; + bool bVar17; + byte bVar18; + + bVar18 = 0; + uVar7 = *(uint *)(param_1 + 0x1f3c); + uVar2 = *(uint *)(param_1 + 8000); + uVar4 = FUN_0010b8d0(param_1,*(undefined4 *)(param_1 + 0x18)); + uVar5 = FUN_0010b8d0(param_1,*(undefined4 *)(param_1 + 0x14)); + uVar16 = 0x100; + if (uVar4 <= uVar7) { + uVar16 = 0xffffffff; + if (uVar2 < uVar4 || uVar2 == uVar4) { + uVar16 = (uint)*(byte *)(param_1 + 0x2760 + + (ulong)((uVar4 - uVar2) * 0x3ff) / (ulong)(uVar7 - uVar2)); + } + } + uVar11 = 0x100; + if (uVar5 <= uVar7) { + uVar11 = 0; + if (uVar2 < uVar5 || uVar2 == uVar5) { + uVar11 = (uint)*(byte *)(param_1 + 0x2760 + + (ulong)((uVar5 - uVar2) * 0x3ff) / (ulong)(uVar7 - uVar2)); + } + } + puVar12 = (undefined8 *)(param_1 + 0x6d8); + puVar13 = (undefined8 *)(param_1 + 0x2b0); + uVar7 = 0x400; + iVar6 = 0x400; + bVar17 = ((ulong)puVar12 & 1) != 0; + puVar15 = puVar12; + if (bVar17) { + puVar13 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0x6d8) = *(undefined1 *)(param_1 + 0x2b0); + uVar7 = 0x3ff; + iVar6 = 0x3ff; + puVar15 = (undefined8 *)(param_1 + 0x6d9); + } + if (((ulong)puVar15 & 2) != 0) { + uVar1 = *(undefined2 *)puVar13; + puVar13 = (undefined8 *)((long)puVar13 + 2); + uVar7 = iVar6 - 2; + *(undefined2 *)puVar15 = uVar1; + puVar15 = (undefined8 *)((long)puVar15 + 2); + } + puVar14 = puVar15; + if (((ulong)puVar15 & 4) != 0) { + uVar3 = *(undefined4 *)puVar13; + puVar14 = (undefined8 *)((long)puVar15 + 4); + puVar13 = (undefined8 *)((long)puVar13 + 4); + uVar7 = uVar7 - 4; + *(undefined4 *)puVar15 = uVar3; + } + for (uVar9 = (ulong)(uVar7 >> 3); uVar9 != 0; uVar9 = uVar9 - 1) { + *puVar14 = *puVar13; + puVar13 = puVar13 + (ulong)bVar18 * -2 + 1; + puVar14 = puVar14 + (ulong)bVar18 * -2 + 1; + } + lVar10 = 0; + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar14 = *(undefined4 *)puVar13; + lVar10 = 4; + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)((long)puVar14 + lVar10) = *(undefined2 *)((long)puVar13 + lVar10); + lVar10 = lVar10 + 2; + } + if (bVar17) { + *(undefined1 *)((long)puVar14 + lVar10) = *(undefined1 *)((long)puVar13 + lVar10); + } + puVar8 = (undefined1 *)((long)puVar12 + (long)(int)uVar11 * 4); + while( true ) { + uVar7 = 0xff; + if ((int)uVar16 < 0xff) { + uVar7 = uVar16; + } + if ((int)uVar7 < (int)uVar11) break; + *puVar8 = 0; + puVar8[1] = 0xff; + uVar11 = uVar11 + 1; + puVar8[2] = 0; + puVar8[3] = 0; + puVar8 = puVar8 + 4; + } + puVar13 = (undefined8 *)(param_1 + 0xb00); + uVar7 = 0x400; + iVar6 = 0x400; + bVar17 = ((ulong)puVar13 & 1) != 0; + puVar15 = puVar12; + if (bVar17) { + puVar13 = (undefined8 *)(param_1 + 0xb01); + *(undefined1 *)(param_1 + 0xb00) = *(undefined1 *)(param_1 + 0x6d8); + uVar7 = 0x3ff; + iVar6 = 0x3ff; + puVar15 = (undefined8 *)(param_1 + 0x6d9); + } + if (((ulong)puVar13 & 2) != 0) { + uVar1 = *(undefined2 *)puVar15; + puVar15 = (undefined8 *)((long)puVar15 + 2); + uVar7 = iVar6 - 2; + *(undefined2 *)puVar13 = uVar1; + puVar13 = (undefined8 *)((long)puVar13 + 2); + } + puVar14 = puVar13; + if (((ulong)puVar13 & 4) != 0) { + uVar3 = *(undefined4 *)puVar15; + puVar14 = (undefined8 *)((long)puVar13 + 4); + puVar15 = (undefined8 *)((long)puVar15 + 4); + uVar7 = uVar7 - 4; + *(undefined4 *)puVar13 = uVar3; + } + lVar10 = 0; + for (uVar9 = (ulong)(uVar7 >> 3); uVar9 != 0; uVar9 = uVar9 - 1) { + *puVar14 = *puVar15; + puVar15 = puVar15 + (ulong)bVar18 * -2 + 1; + puVar14 = puVar14 + (ulong)bVar18 * -2 + 1; + } + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar14 = *(undefined4 *)puVar15; + lVar10 = 4; + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)((long)puVar14 + lVar10) = *(undefined2 *)((long)puVar15 + lVar10); + lVar10 = lVar10 + 2; + } + if (bVar17) { + *(undefined1 *)((long)puVar14 + lVar10) = *(undefined1 *)((long)puVar15 + lVar10); + } + puVar13 = (undefined8 *)(param_1 + 0xf28); + uVar7 = 0x400; + iVar6 = 0x400; + bVar17 = ((ulong)puVar13 & 1) != 0; + if (bVar17) { + puVar13 = (undefined8 *)(param_1 + 0xf29); + puVar12 = (undefined8 *)(param_1 + 0x6d9); + *(undefined1 *)(param_1 + 0xf28) = *(undefined1 *)(param_1 + 0x6d8); + uVar7 = 0x3ff; + iVar6 = 0x3ff; + } + puVar15 = puVar13; + if (((ulong)puVar13 & 2) != 0) { + uVar1 = *(undefined2 *)puVar12; + puVar15 = (undefined8 *)((long)puVar13 + 2); + puVar12 = (undefined8 *)((long)puVar12 + 2); + uVar7 = iVar6 - 2; + *(undefined2 *)puVar13 = uVar1; + } + puVar13 = puVar15; + if (((ulong)puVar15 & 4) != 0) { + uVar3 = *(undefined4 *)puVar12; + puVar13 = (undefined8 *)((long)puVar15 + 4); + puVar12 = (undefined8 *)((long)puVar12 + 4); + uVar7 = uVar7 - 4; + *(undefined4 *)puVar15 = uVar3; + } + lVar10 = 0; + for (uVar9 = (ulong)(uVar7 >> 3); uVar9 != 0; uVar9 = uVar9 - 1) { + *puVar13 = *puVar12; + puVar12 = puVar12 + (ulong)bVar18 * -2 + 1; + puVar13 = puVar13 + (ulong)bVar18 * -2 + 1; + } + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar13 = *(undefined4 *)puVar12; + lVar10 = 4; + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)((long)puVar13 + lVar10) = *(undefined2 *)((long)puVar12 + lVar10); + lVar10 = lVar10 + 2; + } + if (bVar17) { + *(undefined1 *)((long)puVar13 + lVar10) = *(undefined1 *)((long)puVar12 + lVar10); + } + return; +} + + +================================================================== + +### FUNC 0010bd10 (347 bytes) name=FUN_0010bd10 + +void FUN_0010bd10(long param_1) + +{ + int iVar1; + int iVar2; + ulong uVar3; + ushort uVar4; + uint uVar5; + int iVar6; + long lVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + int iVar13; + + if ((*(uint *)(param_1 + 0x1c) < *(uint *)(param_1 + 0x20)) && + (*(int *)(param_1 + 0x14) < *(int *)(param_1 + 0x18))) { + uVar5 = FUN_0010b8d0(); + uVar4 = FUN_0010b8d0(param_1,*(undefined4 *)(param_1 + 0x18)); + uVar5 = uVar5 & 0xffff; + uVar10 = *(uint *)(param_1 + 0x1f20); + if ((int)*(uint *)(param_1 + 0x1f20) <= (int)(uint)uVar4) { + uVar10 = (uint)uVar4; + } + uVar11 = *(uint *)(param_1 + 0x1f24); + if ((int)uVar5 <= (int)*(uint *)(param_1 + 0x1f24)) { + uVar11 = uVar5; + } + *(uint *)(param_1 + 0x1f3c) = uVar10; + iVar13 = 0; + *(uint *)(param_1 + 8000) = uVar11; + uVar3 = (ulong)((uVar5 - uVar11) * 0x3ff) / (ulong)(uVar10 - uVar11); + uVar5 = ((uVar4 - uVar11) * 0x3ff) / (uVar10 - uVar11); + uVar10 = (uint)uVar3; + iVar1 = *(int *)(param_1 + 0x20) * 4; + iVar2 = *(int *)(param_1 + 0x1c); + if (uVar10 != 0) { + iVar13 = (int)((uint)(iVar2 << 0x18) / uVar3); + } + uVar11 = 0; + if (uVar10 < uVar5) { + uVar11 = (uint)((iVar1 + iVar2 * -4) * 0x400000) / (uVar5 - uVar10); + } + uVar12 = 0; + if (uVar5 < 0x3ff) { + uVar12 = (uint)((*(int *)(param_1 + 0x20) * -4 + 0x3ff) * 0x400000) / (0x3ff - uVar5); + } + param_1 = param_1 + 0x2760; + iVar6 = 0; + uVar9 = -uVar5 * uVar12; + lVar7 = 0; + uVar8 = -uVar10 * uVar11; + do { + if (uVar10 < (uint)lVar7) { + if ((uint)lVar7 < uVar5) { + *(char *)(param_1 + lVar7) = (char)((uVar8 >> 0x16) + iVar2 * 4 >> 2); + } + else { + *(char *)(param_1 + lVar7) = (char)((uVar9 >> 0x16) + iVar1 >> 2); + } + } + else { + *(char *)(param_1 + lVar7) = (char)((uint)iVar6 >> 0x18); + } + lVar7 = lVar7 + 1; + iVar6 = iVar6 + iVar13; + uVar9 = uVar9 + uVar12; + uVar8 = uVar8 + uVar11; + } while (lVar7 != 0x400); + } + return; +} + + +================================================================== + +### FUNC 0010be80 (1251 bytes) name=FUN_0010be80 + +void FUN_0010be80(long param_1) + +{ + undefined2 uVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + ulong uVar5; + ulong uVar6; + uint uVar7; + long lVar8; + uint uVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 *puVar12; + undefined8 *puVar13; + int iVar14; + bool bVar15; + byte bVar16; + + bVar16 = 0; + uVar4 = *(uint *)(param_1 + 0x1f24); + uVar9 = *(uint *)(param_1 + 0x1f20); + if (uVar4 == uVar9) { + *(uint *)(param_1 + 8000) = uVar4; + *(uint *)(param_1 + 0x1f3c) = uVar4; + puVar11 = (undefined8 *)(param_1 + 0x2760); + uVar5 = 0x400; + bVar15 = ((ulong)puVar11 & 1) != 0; + if (bVar15) { + *(undefined1 *)(param_1 + 0x2760) = 0x80; + puVar11 = (undefined8 *)(param_1 + 0x2761); + uVar5 = 0x3ff; + } + puVar10 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + puVar10 = (undefined8 *)((long)puVar11 + 2); + uVar5 = (ulong)((int)uVar5 - 2); + *(undefined2 *)puVar11 = 0x8080; + } + if (((ulong)puVar10 & 4) != 0) { + *(undefined4 *)puVar10 = 0x80808080; + uVar5 = (ulong)((int)uVar5 - 4); + puVar10 = (undefined8 *)((long)puVar10 + 4); + } + for (uVar6 = uVar5 >> 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar10 = 0x8080808080808080; + puVar10 = puVar10 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar10 = 0x80808080; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } + puVar11 = puVar10; + if ((uVar5 & 2) != 0) { + puVar11 = (undefined8 *)((long)puVar10 + 2); + *(undefined2 *)puVar10 = 0x8080; + } + if (bVar15) { + *(undefined1 *)puVar11 = 0x80; + } + memset(*(void **)(param_1 + 0x298),0x80,(ulong)*(uint *)(param_1 + 0x77f8)); + puVar11 = (undefined8 *)(param_1 + 0x1f60); + uVar5 = 0x400; + bVar15 = ((ulong)puVar11 & 1) != 0; + if (bVar15) { + *(undefined1 *)(param_1 + 0x1f60) = 0; + puVar11 = (undefined8 *)(param_1 + 0x1f61); + uVar5 = 0x3ff; + } + puVar10 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + puVar10 = (undefined8 *)((long)puVar11 + 2); + uVar5 = (ulong)((int)uVar5 - 2); + *(undefined2 *)puVar11 = 0; + } + if (((ulong)puVar10 & 4) != 0) { + *(undefined4 *)puVar10 = 0; + uVar5 = (ulong)((int)uVar5 - 4); + puVar10 = (undefined8 *)((long)puVar10 + 4); + } + for (uVar6 = uVar5 >> 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar10 = 0; + puVar10 = puVar10 + (ulong)bVar16 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar10 = 0; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } + puVar11 = puVar10; + if ((uVar5 & 2) != 0) { + puVar11 = (undefined8 *)((long)puVar10 + 2); + *(undefined2 *)puVar10 = 0; + } + if (bVar15) { + *(undefined1 *)puVar11 = 0; + } + *(undefined4 *)(param_1 + 0x2160) = *(undefined4 *)(param_1 + 0x77f8); + memset(*(void **)(param_1 + 0x2a8),0x80,(ulong)*(uint *)(param_1 + 0x7800)); + *(undefined4 *)(param_1 + 0x1f4c) = 1; + return; + } + if (*(int *)(param_1 + 0x10) == 0) { + iVar14 = *(int *)(param_1 + 0x1f28); + if (*(int *)(param_1 + 0x6c) != 0) { + FUN_00108e10(); + iVar14 = *(int *)(param_1 + 0x4b6c); + uVar4 = *(uint *)(param_1 + 0x1f24); + uVar9 = *(uint *)(param_1 + 0x1f20); + } + uVar3 = FUN_0010a500(param_1); + uVar7 = iVar14 - (uVar3 >> 1); + if (uVar7 <= uVar4) { + uVar4 = uVar7; + } + uVar3 = (uVar3 >> 1) + iVar14; + *(uint *)(param_1 + 8000) = uVar4; + if (uVar9 <= uVar3) { + uVar9 = uVar3; + } + *(uint *)(param_1 + 0x1f3c) = uVar9; + if ((int)uVar4 < 0) { + *(undefined4 *)(param_1 + 8000) = 0; + } + if (0xffff < (int)uVar9) { + *(undefined4 *)(param_1 + 0x1f3c) = 0xffff; + } + FUN_0010a610(param_1); + if (*(int *)(param_1 + 0x28) != 0) { + FUN_0010b9f0(param_1); + *(undefined4 *)(param_1 + 0x4b64) = 1; + goto LAB_0010bf28; + } + iVar14 = *(int *)(param_1 + 0x4b64); + } + else { + FUN_0010bd10(); + iVar14 = *(int *)(param_1 + 0x4b64); + } + if (iVar14 != 0) { + puVar11 = (undefined8 *)(param_1 + 0x6d8); + puVar10 = (undefined8 *)(param_1 + 0x2b0); + uVar4 = 0x400; + bVar15 = ((ulong)puVar11 & 1) != 0; + puVar12 = puVar10; + if (bVar15) { + puVar11 = (undefined8 *)(param_1 + 0x6d9); + puVar12 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0x6d8) = *(undefined1 *)(param_1 + 0x2b0); + uVar4 = 0x3ff; + } + puVar13 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + uVar1 = *(undefined2 *)puVar12; + puVar13 = (undefined8 *)((long)puVar11 + 2); + puVar12 = (undefined8 *)((long)puVar12 + 2); + uVar4 = uVar4 - 2; + *(undefined2 *)puVar11 = uVar1; + } + puVar11 = puVar13; + if (((ulong)puVar13 & 4) != 0) { + uVar2 = *(undefined4 *)puVar12; + puVar11 = (undefined8 *)((long)puVar13 + 4); + puVar12 = (undefined8 *)((long)puVar12 + 4); + uVar4 = uVar4 - 4; + *(undefined4 *)puVar13 = uVar2; + } + lVar8 = 0; + for (uVar5 = (ulong)(uVar4 >> 3); uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar11 = *puVar12; + puVar12 = puVar12 + (ulong)bVar16 * -2 + 1; + puVar11 = puVar11 + (ulong)bVar16 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar11 = *(undefined4 *)puVar12; + lVar8 = 4; + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)((long)puVar11 + lVar8) = *(undefined2 *)((long)puVar12 + lVar8); + lVar8 = lVar8 + 2; + } + if (bVar15) { + *(undefined1 *)((long)puVar11 + lVar8) = *(undefined1 *)((long)puVar12 + lVar8); + } + puVar12 = (undefined8 *)(param_1 + 0xb00); + uVar4 = 0x400; + bVar15 = ((ulong)puVar12 & 1) != 0; + puVar11 = puVar10; + if (bVar15) { + puVar12 = (undefined8 *)(param_1 + 0xb01); + puVar11 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0xb00) = *(undefined1 *)(param_1 + 0x2b0); + uVar4 = 0x3ff; + } + puVar13 = puVar12; + if (((ulong)puVar12 & 2) != 0) { + uVar1 = *(undefined2 *)puVar11; + puVar13 = (undefined8 *)((long)puVar12 + 2); + puVar11 = (undefined8 *)((long)puVar11 + 2); + uVar4 = uVar4 - 2; + *(undefined2 *)puVar12 = uVar1; + } + puVar12 = puVar13; + if (((ulong)puVar13 & 4) != 0) { + uVar2 = *(undefined4 *)puVar11; + puVar12 = (undefined8 *)((long)puVar13 + 4); + puVar11 = (undefined8 *)((long)puVar11 + 4); + uVar4 = uVar4 - 4; + *(undefined4 *)puVar13 = uVar2; + } + lVar8 = 0; + for (uVar5 = (ulong)(uVar4 >> 3); uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar12 = *puVar11; + puVar11 = puVar11 + (ulong)bVar16 * -2 + 1; + puVar12 = puVar12 + (ulong)bVar16 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar12 = *(undefined4 *)puVar11; + lVar8 = 4; + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)((long)puVar12 + lVar8) = *(undefined2 *)((long)puVar11 + lVar8); + lVar8 = lVar8 + 2; + } + if (bVar15) { + *(undefined1 *)((long)puVar12 + lVar8) = *(undefined1 *)((long)puVar11 + lVar8); + } + puVar11 = (undefined8 *)(param_1 + 0xf28); + uVar4 = 0x400; + bVar15 = ((ulong)puVar11 & 1) != 0; + if (bVar15) { + puVar11 = (undefined8 *)(param_1 + 0xf29); + puVar10 = (undefined8 *)(param_1 + 0x2b1); + *(undefined1 *)(param_1 + 0xf28) = *(undefined1 *)(param_1 + 0x2b0); + uVar4 = 0x3ff; + } + puVar12 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + uVar1 = *(undefined2 *)puVar10; + puVar12 = (undefined8 *)((long)puVar11 + 2); + puVar10 = (undefined8 *)((long)puVar10 + 2); + uVar4 = uVar4 - 2; + *(undefined2 *)puVar11 = uVar1; + } + puVar11 = puVar12; + if (((ulong)puVar12 & 4) != 0) { + uVar2 = *(undefined4 *)puVar10; + puVar11 = (undefined8 *)((long)puVar12 + 4); + puVar10 = (undefined8 *)((long)puVar10 + 4); + uVar4 = uVar4 - 4; + *(undefined4 *)puVar12 = uVar2; + } + lVar8 = 0; + for (uVar5 = (ulong)(uVar4 >> 3); uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar11 = *puVar10; + puVar10 = puVar10 + (ulong)bVar16 * -2 + 1; + puVar11 = puVar11 + (ulong)bVar16 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar11 = *(undefined4 *)puVar10; + lVar8 = 4; + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)((long)puVar11 + lVar8) = *(undefined2 *)((long)puVar10 + lVar8); + lVar8 = lVar8 + 2; + } + if (bVar15) { + *(undefined1 *)((long)puVar11 + lVar8) = *(undefined1 *)((long)puVar10 + lVar8); + } + *(undefined4 *)(param_1 + 0x4b64) = 0; + } +LAB_0010bf28: + if (*(int *)(param_1 + 0x58) == 0) { + bVar15 = false; + if (*(int *)(param_1 + 0xc) == 0) { + bVar15 = *(int *)(param_1 + 0x2c) == 0; + } + } + else { + bVar15 = false; + } + FUN_00108ae0(param_1,bVar15); + return; +} + + +================================================================== + +### FUNC 0010c3e0 (906 bytes) name=FUN_0010c3e0 + +undefined8 +FUN_0010c3e0(long param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6, + int param_7) + +{ + undefined4 uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int *piVar6; + int iVar7; + ushort *puVar8; + long lVar9; + undefined8 uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + int iVar14; + uint local_48; + + if (param_7 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffb; + } + else { + if ((((param_2 <= param_4) && (uVar2 = *(uint *)(param_1 + 0x1ed0), param_4 < uVar2)) && + (param_3 <= param_5)) && + ((param_5 < *(uint *)(param_1 + 0x1ed4) && (param_6 != (int *)0x0)))) { + uVar13 = param_3; + if (((param_3 == 0 && param_2 == 0) && (uVar13 = 0, uVar2 - 1 == param_4)) && + (uVar13 = 0, *(uint *)(param_1 + 0x1ed4) - 1 == param_5)) { + uVar12 = *(uint *)(param_1 + 0x1f24); + uVar11 = *(uint *)(param_1 + 0x1f20); + iVar5 = *(int *)(param_1 + 0x1f34); + iVar14 = *(int *)(param_1 + 0x1f30); + lVar9 = (long)*(int *)(param_1 + 0x1f28) * (ulong)*(uint *)(param_1 + 0x77f8); + local_48 = uVar2; + } + else { + iVar14 = 0; + iVar5 = 0; + uVar11 = 0; + uVar12 = 0xffffffff; + uVar3 = uVar2 * uVar13; + lVar9 = 0; + local_48 = param_4 + 1; + do { + iVar7 = uVar3 + param_2; + puVar8 = (ushort *)(*(long *)(param_1 + 0x268) + ((ulong)uVar3 + (ulong)param_2) * 2); + do { + lVar9 = lVar9 + (ulong)*puVar8; + uVar4 = (uint)*puVar8; + if (uVar11 < uVar4) { + uVar11 = uVar4; + iVar14 = iVar7; + } + if (uVar4 < uVar12) { + uVar12 = uVar4; + iVar5 = iVar7; + } + iVar7 = iVar7 + 1; + puVar8 = puVar8 + 1; + } while (iVar7 != local_48 + uVar3); + uVar13 = uVar13 + 1; + uVar3 = uVar3 + uVar2; + } while (uVar13 <= param_5); + } + iVar7 = FUN_0010b0a0(param_1,uVar12 & 0xffff,iVar5,1); + *param_6 = iVar7; + iVar7 = FUN_0010b0a0(param_1,uVar11 & 0xffff,iVar14,1); + param_6[1] = iVar7; + iVar7 = FUN_0010b0a0(param_1,lVar9 / (long)(ulong)(((param_5 + 1) - param_3) * + (local_48 - param_2)) & 0xffff, + (param_4 + param_2 >> 1) + ((param_3 + param_5) * uVar2 >> 1),1); + param_6[2] = iVar7; + param_6[3] = iVar5; + param_6[4] = iVar14; + if (*(int *)(param_1 + 0x60) == 0) { + iVar5 = param_6[1]; + } + else { + if (*(int *)(param_1 + 0xb0) == 0) { + *param_6 = *param_6; + iVar5 = param_6[1]; +LAB_0010c6a7: + iVar7 = param_6[2]; + param_6[1] = iVar5; + } + else { + iVar5 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1); + iVar14 = *(int *)(param_1 + 0xb0); + uVar1 = *(undefined4 *)(param_1 + 0xb8); + *param_6 = iVar5; + iVar5 = param_6[1]; + if (iVar14 == 0) goto LAB_0010c6a7; + iVar5 = FUN_0010a230(uVar1,param_1); + iVar14 = *(int *)(param_1 + 0xb0); + uVar1 = *(undefined4 *)(param_1 + 0xb8); + param_6[1] = iVar5; + iVar7 = param_6[2]; + if (iVar14 != 0) { + iVar7 = FUN_0010a230(uVar1,param_1,iVar7); + iVar5 = param_6[1]; + } + } + param_6[2] = iVar7; + } + iVar14 = *param_6; + if (iVar5 < iVar14) { + param_6[1] = iVar14; + iVar5 = iVar14; + } + if (iVar5 < iVar7) { + param_6[2] = iVar5; + iVar7 = iVar5; + } + if (iVar7 < iVar14) { + param_6[2] = iVar14; + } + uVar10 = 1; + goto joined_r0x0010c454; + } + piVar6 = __errno_location(); + *piVar6 = -0x1b51ffff; + } + uVar10 = 0; +joined_r0x0010c454: + if (param_7 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return uVar10; +} + + +================================================================== + +### FUNC 0010c780 (2167 bytes) name=FUN_0010c780 + +undefined8 +FUN_0010c780(long param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6, + int param_7) + +{ + undefined4 uVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + int *piVar6; + uint uVar7; + uint uVar8; + int iVar9; + uint uVar10; + long lVar11; + undefined8 uVar12; + uint uVar13; + int iVar14; + int iVar15; + int iVar16; + uint uVar17; + uint uVar18; + long lVar19; + long lVar20; + ulong uVar21; + float fVar22; + float fVar23; + float fVar24; + float fVar25; + float fVar26; + uint local_b0; + int local_a8; + int local_a4; + long local_90; + long local_80; + int local_74; + + if (param_7 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffb; + } + else { + if ((((param_2 < param_4) && (param_4 < *(uint *)(param_1 + 0x1ed0))) && (param_3 < param_5)) && + ((param_5 < *(uint *)(param_1 + 0x1ed4) && (param_6 != (int *)0x0)))) { + uVar10 = param_4 - param_2; + uVar18 = param_5 - param_3; + if (uVar10 < uVar18) { + fVar26 = (float)(int)(uVar18 * uVar18 - uVar10 * uVar10); + fVar23 = SQRT(fVar26); + fVar22 = fVar23; + if (NAN(fVar23)) { + fVar22 = sqrtf(fVar26); + } + if (NAN(fVar23)) { + fVar23 = sqrtf(fVar26); + } + local_90 = 0; + lVar20 = 0; + local_a8 = 0; + local_a4 = 0; + uVar21 = 0; + uVar17 = 0; + uVar8 = 0xffffffff; + do { + iVar5 = (int)local_90; + iVar16 = param_3 + iVar5; + iVar15 = (param_3 - (int)((float)(param_5 + param_3) + fVar23) / 2) + iVar5; + lVar11 = *(long *)(param_1 + 0x268) + + ((ulong)(uint)(iVar16 * *(int *)(param_1 + 0x1ed0)) + (ulong)param_2) * 2; + iVar2 = 0; + lVar19 = lVar11 + 2; + iVar5 = (param_3 - (int)((float)(param_5 + param_3) - fVar22) / 2) + iVar5; + uVar7 = param_2 - param_4; + uVar3 = param_2; + do { + iVar9 = ((int)uVar7 >> 0x1f ^ uVar7) - ((int)uVar7 >> 0x1f); + iVar4 = iVar2; + if (iVar2 < iVar9) { + fVar26 = (float)(iVar5 * iVar5 * 4 + uVar7 * uVar7); + fVar24 = SQRT(fVar26); + if (NAN(fVar24)) { + fVar24 = sqrtf(fVar26); + } + fVar26 = (float)(uVar7 * uVar7 + iVar15 * iVar15 * 4); + fVar25 = SQRT(fVar26); + if (NAN(fVar25)) { + fVar25 = sqrtf(fVar26); + } + iVar4 = iVar9; + if ((int)(fVar24 + fVar25) <= (int)(uVar18 * 2)) goto LAB_0010cca8; + if (!CARRY4(param_2 + param_4,uVar7)) break; + } + else { +LAB_0010cca8: + uVar21 = (ulong)((int)uVar21 + 1); + lVar20 = lVar20 + (ulong)*(ushort *)(lVar19 + -2); + uVar13 = (uint)*(ushort *)(lVar19 + -2); + if (uVar17 < uVar13) { + local_a8 = uVar3 + *(int *)(param_1 + 0x1ed0) * iVar16; + uVar17 = uVar13; + } + iVar2 = iVar4; + if (uVar13 < uVar8) { + local_a4 = *(int *)(param_1 + 0x1ed0) * iVar16 + uVar3; + uVar8 = uVar13; + } + } + lVar19 = lVar19 + 2; + uVar3 = uVar3 + 1; + uVar7 = uVar7 + 2; + } while (lVar19 != lVar11 + (ulong)uVar10 * 2 + 4); + local_90 = local_90 + 1; + } while (local_90 != (ulong)uVar18 + 1); + } + else { + uVar7 = param_4 + param_2; + fVar26 = (float)(int)(uVar10 * uVar10 - uVar18 * uVar18); + fVar23 = SQRT(fVar26); + fVar22 = fVar23; + if (NAN(fVar23)) { + fVar22 = sqrtf(fVar26); + } + if (NAN(fVar23)) { + fVar23 = sqrtf(fVar26); + } + local_80 = 0; + lVar20 = 0; + local_a8 = 0; + local_a4 = 0; + uVar21 = 0; + uVar17 = 0; + uVar8 = 0xffffffff; + do { + iVar16 = param_3 + (int)local_80; + lVar11 = 0; + iVar5 = 0; + iVar2 = iVar16 * 2 - (param_5 + param_3); + iVar2 = iVar2 * iVar2; + lVar19 = *(long *)(param_1 + 0x268) + 2 + + ((ulong)(uint)(iVar16 * *(int *)(param_1 + 0x1ed0)) + (ulong)param_2) * 2; + do { + iVar15 = (int)lVar11; + iVar9 = param_2 + iVar15; + uVar13 = iVar9 * 2 - uVar7; + uVar3 = (int)uVar13 >> 0x1f; + iVar14 = (uVar13 ^ uVar3) - uVar3; + iVar4 = iVar5; + if (iVar5 < iVar14) { + iVar4 = (param_2 - (int)((float)uVar7 - fVar22) / 2) + iVar15; + fVar26 = (float)(uint)(iVar2 + iVar4 * iVar4 * 4); + fVar24 = SQRT(fVar26); + if (NAN(fVar24)) { + fVar24 = sqrtf(fVar26); + } + iVar15 = iVar15 + (param_2 - (int)((float)uVar7 + fVar23) / 2); + fVar26 = (float)(uint)(iVar2 + iVar15 * iVar15 * 4); + fVar25 = SQRT(fVar26); + if (NAN(fVar25)) { + fVar25 = sqrtf(fVar26); + } + iVar4 = iVar14; + if ((int)(fVar24 + fVar25) <= (int)(uVar10 * 2)) goto LAB_0010c980; + if (uVar7 <= (uint)(iVar9 * 2)) break; + } + else { +LAB_0010c980: + uVar21 = (ulong)((int)uVar21 + 1); + lVar20 = lVar20 + (ulong)*(ushort *)(lVar19 + -2); + uVar3 = (uint)*(ushort *)(lVar19 + -2); + if (uVar17 < uVar3) { + local_a8 = iVar16 * *(int *)(param_1 + 0x1ed0) + iVar9; + uVar17 = uVar3; + } + iVar5 = iVar4; + if (uVar3 < uVar8) { + local_a4 = iVar16 * *(int *)(param_1 + 0x1ed0) + iVar9; + uVar8 = uVar3; + } + } + lVar11 = lVar11 + 1; + lVar19 = lVar19 + 2; + } while (lVar11 != (ulong)uVar10 + 1); + local_80 = local_80 + 1; + } while (local_80 != (ulong)uVar18 + 1); + } + local_b0 = param_4 + param_2; + local_74 = param_5 + param_3; + iVar2 = *(int *)(param_1 + 0x1ed0); + iVar5 = FUN_0010b0a0(param_1,uVar8 & 0xffff,local_a4,1); + *param_6 = iVar5; + iVar5 = FUN_0010b0a0(param_1,uVar17,local_a8,1); + param_6[1] = iVar5; + iVar2 = FUN_0010b0a0(param_1,lVar20 / (long)uVar21 & 0xffff, + (local_b0 >> 1) + ((uint)(local_74 * iVar2) >> 1),1); + param_6[2] = iVar2; + param_6[3] = local_a4; + param_6[4] = local_a8; + if (*(int *)(param_1 + 0x60) == 0) { + iVar5 = param_6[1]; + } + else { + if (*(int *)(param_1 + 0xb0) == 0) { + *param_6 = *param_6; + iVar5 = param_6[1]; +LAB_0010cdac: + param_6[1] = iVar5; + iVar2 = param_6[2]; + } + else { + iVar5 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1); + iVar2 = *(int *)(param_1 + 0xb0); + uVar1 = *(undefined4 *)(param_1 + 0xb8); + *param_6 = iVar5; + iVar5 = param_6[1]; + if (iVar2 == 0) goto LAB_0010cdac; + iVar5 = FUN_0010a230(uVar1,param_1); + iVar16 = *(int *)(param_1 + 0xb0); + uVar1 = *(undefined4 *)(param_1 + 0xb8); + param_6[1] = iVar5; + iVar2 = param_6[2]; + if (iVar16 != 0) { + iVar2 = FUN_0010a230(uVar1,param_1,iVar2); + iVar5 = param_6[1]; + } + } + param_6[2] = iVar2; + } + iVar16 = *param_6; + if (iVar5 < iVar16) { + param_6[1] = iVar16; + iVar5 = iVar16; + } + if (iVar5 < iVar2) { + param_6[2] = iVar5; + iVar2 = iVar5; + } + if (iVar2 < iVar16) { + param_6[2] = iVar16; + } + uVar12 = 1; + goto joined_r0x0010c807; + } + piVar6 = __errno_location(); + *piVar6 = -0x1b51ffff; + } + uVar12 = 0; +joined_r0x0010c807: + if (param_7 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return uVar12; +} + + +================================================================== + +### FUNC 0010d020 (862 bytes) name=FUN_0010d020 + +uint FUN_0010d020(long param_1,ushort *param_2,uint param_3,undefined4 *param_4,uint param_5, + uint param_6,int param_7,int param_8) + +{ + ushort uVar1; + long lVar2; + uint uVar3; + uint uVar4; + uint uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + int *piVar9; + uint uVar10; + int iVar12; + ulong uVar13; + uint uVar14; + int iVar15; + uint uVar16; + uint uVar17; + uint local_3c; + ulong uVar11; + + if (param_8 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar9 = __errno_location(); + *piVar9 = -0x1b51fffb; + goto joined_r0x0010d0a9; + } + if (param_7 == 0) { + if (param_5 < *(uint *)(param_1 + 0x1ed0)) { + uVar17 = *(uint *)(param_1 + 0x1ed4); + goto joined_r0x0010d0d0; + } + } + else if (param_5 < *(uint *)(param_1 + 0x1ed4)) { + uVar17 = *(uint *)(param_1 + 0x1ed0); +joined_r0x0010d0d0: + if ((((param_6 < uVar17) && (param_4 != (undefined4 *)0x0)) && (param_2 != (ushort *)0x0)) && + (1 < param_3)) { + if (param_7 == 0) { + uVar3 = *(int *)(param_1 + 0x1ed4) - param_6; + uVar17 = param_3 >> 1; + if (uVar3 <= param_3 >> 1) { + uVar17 = uVar3; + } + if (param_6 < uVar17 + param_6) { + uVar3 = *(uint *)(param_1 + 0x1ed0); + lVar2 = *(long *)(param_1 + 0x268); + uVar4 = 0; + uVar10 = param_6 * uVar3 + param_5; + do { + uVar11 = (ulong)uVar10; + uVar10 = uVar10 + uVar3; + uVar13 = (ulong)uVar4; + uVar4 = uVar4 + 1; + param_2[uVar13] = *(ushort *)(lVar2 + uVar11 * 2); + } while (uVar4 != uVar17); + } + else { + uVar3 = *(uint *)(param_1 + 0x1ed0); + } + } + else { + uVar3 = *(int *)(param_1 + 0x1ed0) - param_6; + uVar17 = param_3 >> 1; + if (uVar3 <= param_3 >> 1) { + uVar17 = uVar3; + } + memcpy(param_2,(void *)(*(long *)(param_1 + 0x268) + + ((ulong)(*(int *)(param_1 + 0x1ed0) * param_5) + (ulong)param_6) * 2) + ,(ulong)uVar17 * 2); + uVar3 = *(uint *)(param_1 + 0x1ed0); + } + if (uVar17 == 0) { + uVar10 = 0; + local_3c = 0xffffffff; + uVar4 = 0; + uVar16 = 0; + uVar14 = 0xffff; + } + else { + uVar10 = 0; + uVar16 = 0; + uVar4 = 0; + local_3c = 0xffffffff; + uVar5 = uVar17; + do { + uVar1 = *param_2; + uVar16 = uVar16 + uVar1; + uVar14 = (uint)uVar1; + if (uVar4 < uVar1) { + uVar4 = uVar14; + uVar10 = uVar5; + } + if (uVar14 < local_3c) { + local_3c = uVar14; + } + uVar5 = uVar5 - 1; + param_2 = param_2 + 1; + uVar14 = local_3c; + } while (uVar5 != 0); + } + if (param_7 == 0) { + iVar15 = (uVar17 - uVar10) * uVar3 + (uVar3 >> 1); + iVar12 = param_5 + (*(uint *)(param_1 + 0x77f8) >> 1); + } + else { + iVar12 = (uVar3 >> 1) + uVar3 * param_5; + iVar15 = ((*(uint *)(param_1 + 0x77f8) >> 1) + uVar17) - uVar10; + } + uVar6 = FUN_0010b0a0(param_1,uVar14,iVar12,0); + *param_4 = uVar6; + uVar6 = FUN_0010b0a0(param_1,uVar4,iVar12,0); + param_4[1] = uVar6; + uVar6 = FUN_0010b0a0(param_1,(ulong)uVar16 / (ulong)uVar17 & 0xffff,iVar12,0); + param_4[2] = uVar6; + param_4[4] = uVar4; + param_4[5] = iVar15; + param_4[3] = local_3c; + if (*(int *)(param_1 + 0x60) == 0) goto LAB_0010d24c; + if (*(int *)(param_1 + 0xb0) == 0) { + *param_4 = *param_4; + uVar8 = param_4[1]; +LAB_0010d240: + uVar7 = param_4[2]; + param_4[1] = uVar8; + } + else { + uVar7 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1); + iVar12 = *(int *)(param_1 + 0xb0); + uVar6 = *(undefined4 *)(param_1 + 0xb8); + uVar8 = param_4[1]; + *param_4 = uVar7; + if (iVar12 == 0) goto LAB_0010d240; + uVar8 = FUN_0010a230(uVar6,param_1); + iVar12 = *(int *)(param_1 + 0xb0); + uVar6 = *(undefined4 *)(param_1 + 0xb8); + param_4[1] = uVar8; + uVar7 = param_4[2]; + if (iVar12 != 0) { + uVar7 = FUN_0010a230(uVar6,param_1,uVar7); + } + } + param_4[2] = uVar7; +LAB_0010d24c: + if (param_8 == 0) { + return uVar17; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return uVar17; + } + } + piVar9 = __errno_location(); + *piVar9 = -0x1b51ffff; +joined_r0x0010d0a9: + if (param_8 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return 0; +} + + +================================================================== + +### FUNC 0010d3a0 (1056 bytes) name=FUN_0010d3a0 + +uint FUN_0010d3a0(long param_1,ushort *param_2,uint param_3,undefined4 *param_4,uint param_5, + uint param_6,uint param_7,uint param_8,int param_9) + +{ + ushort uVar1; + uint uVar2; + long lVar3; + int iVar4; + uint uVar5; + undefined4 uVar6; + uint uVar7; + undefined4 uVar8; + undefined4 uVar9; + int *piVar10; + uint uVar11; + int iVar12; + uint uVar13; + uint uVar14; + uint uVar15; + ushort *puVar16; + ushort *puVar17; + uint uVar18; + int iVar19; + + if (param_9 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar10 = __errno_location(); + *piVar10 = -0x1b51fffb; + } + else { + uVar2 = *(uint *)(param_1 + 0x1ed0); + if (((((param_5 < uVar2) && (param_7 < uVar2)) && (param_6 < *(uint *)(param_1 + 0x1ed4))) && + (param_8 < *(uint *)(param_1 + 0x1ed4))) && + (((param_5 != param_7 || (param_6 != param_8)) && + ((param_4 != (undefined4 *)0x0 && ((param_2 != (ushort *)0x0 && (1 < param_3)))))))) { + uVar11 = (int)(param_5 - param_7) >> 0x1f; + iVar4 = (param_5 - param_7 ^ uVar11) - uVar11; + uVar11 = (int)(param_6 - param_8) >> 0x1f; + iVar12 = (param_6 - param_8 ^ uVar11) - uVar11; + iVar19 = iVar4; + if (iVar4 < iVar12) { + iVar19 = iVar12; + } + uVar11 = param_3 >> 1; + if ((int)(iVar19 + 1U) <= (int)(param_3 >> 1)) { + uVar11 = iVar19 + 1U; + } + uVar5 = param_5; + uVar18 = param_6; + uVar13 = param_7; + uVar15 = param_8; + if (param_5 <= param_7) { + uVar5 = param_7; + uVar18 = param_8; + uVar13 = param_5; + uVar15 = param_6; + } + if (iVar4 < iVar12) { + if ((int)uVar15 < (int)uVar18) { + uVar14 = (uVar15 - 1) + uVar11; + if ((int)uVar18 < (int)uVar14) { + uVar14 = uVar18; + } + if ((int)uVar15 <= (int)uVar14) { + iVar4 = uVar15 * uVar2; + lVar3 = *(long *)(param_1 + 0x268); + puVar17 = param_2; + iVar19 = 0; + do { + puVar16 = puVar17 + 1; + uVar7 = iVar19 / (int)(uVar18 - uVar15) + uVar13 + iVar4; + iVar4 = iVar4 + uVar2; + *puVar17 = *(ushort *)(lVar3 + (ulong)uVar7 * 2); + puVar17 = puVar16; + iVar19 = iVar19 + (uVar5 - uVar13); + } while (puVar16 != param_2 + (ulong)(uVar14 - uVar15) + 1); + } + } + else { + uVar14 = (uVar15 - uVar11) + 1; + if ((int)uVar14 < (int)uVar18) { + uVar14 = uVar18; + } + if ((int)uVar14 <= (int)uVar15) { + iVar4 = uVar15 * uVar2; + lVar3 = *(long *)(param_1 + 0x268); + puVar17 = param_2; + iVar19 = 0; + do { + puVar16 = puVar17 + 1; + uVar7 = iVar19 / (int)(uVar18 - uVar15) + uVar13 + iVar4; + iVar4 = iVar4 - uVar2; + *puVar17 = *(ushort *)(lVar3 + (ulong)uVar7 * 2); + puVar17 = puVar16; + iVar19 = iVar19 + (uVar13 - uVar5); + } while (puVar16 != param_2 + (ulong)(uVar15 - uVar14) + 1); + } + } + } + else { + uVar14 = (uVar13 - 1) + uVar11; + if ((int)uVar5 < (int)uVar14) { + uVar14 = uVar5; + } + if ((int)uVar13 <= (int)uVar14) { + lVar3 = *(long *)(param_1 + 0x268); + iVar4 = uVar5 - uVar13; + puVar17 = param_2; + iVar19 = 0; + do { + uVar5 = (iVar19 / iVar4 + uVar15) * uVar2 + uVar13; + uVar13 = uVar13 + 1; + *puVar17 = *(ushort *)(lVar3 + (ulong)uVar5 * 2); + puVar17 = puVar17 + 1; + iVar19 = iVar19 + (uVar18 - uVar15); + } while (uVar13 != uVar14 + 1); + } + } + uVar18 = 0; + uVar13 = 0; + uVar5 = 0xffffffff; + uVar15 = uVar11; + do { + uVar1 = *param_2; + uVar18 = uVar18 + uVar1; + uVar14 = (uint)uVar1; + if (uVar13 < uVar1) { + uVar13 = uVar14; + } + if (uVar14 < uVar5) { + uVar5 = uVar14; + } + uVar15 = uVar15 - 1; + param_2 = param_2 + 1; + } while (uVar15 != 0); + iVar19 = (param_5 + param_7 >> 1) + ((param_6 + param_8) * uVar2 >> 1); + uVar6 = FUN_0010b0a0(param_1,uVar5,iVar19,0); + *param_4 = uVar6; + uVar6 = FUN_0010b0a0(param_1,uVar13,iVar19,0); + param_4[1] = uVar6; + uVar6 = FUN_0010b0a0(param_1,(ulong)uVar18 / (ulong)uVar11 & 0xffff,iVar19,0); + param_4[2] = uVar6; + if (*(int *)(param_1 + 0x60) == 0) goto joined_r0x0010d411; + if (*(int *)(param_1 + 0xb0) == 0) { + *param_4 = *param_4; + uVar9 = param_4[1]; +LAB_0010d5fa: + uVar8 = param_4[2]; + param_4[1] = uVar9; + } + else { + uVar8 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1); + iVar19 = *(int *)(param_1 + 0xb0); + uVar6 = *(undefined4 *)(param_1 + 0xb8); + uVar9 = param_4[1]; + *param_4 = uVar8; + if (iVar19 == 0) goto LAB_0010d5fa; + uVar9 = FUN_0010a230(uVar6,param_1); + iVar19 = *(int *)(param_1 + 0xb0); + uVar6 = *(undefined4 *)(param_1 + 0xb8); + param_4[1] = uVar9; + uVar8 = param_4[2]; + if (iVar19 != 0) { + uVar8 = FUN_0010a230(uVar6,param_1,uVar8); + } + } + param_4[2] = uVar8; + goto joined_r0x0010d411; + } + piVar10 = __errno_location(); + *piVar10 = -0x1b51ffff; + } + uVar11 = 0; +joined_r0x0010d411: + if (param_9 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return uVar11; +} + + +================================================================== + +### FUNC 0010d7e0 (1106 bytes) name=FUN_0010d7e0 + +uint FUN_0010d7e0(long param_1,uint *param_2,uint param_3,undefined4 *param_4,uint param_5, + uint param_6,uint param_7,uint param_8,int param_9) + +{ + long lVar1; + uint uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + int *piVar6; + int iVar7; + uint uVar8; + uint *puVar9; + uint uVar10; + uint uVar11; + int iVar12; + uint uVar13; + uint uVar14; + uint uVar15; + int iVar16; + undefined4 extraout_XMM0_Da; + undefined4 extraout_XMM0_Da_00; + undefined4 extraout_XMM0_Da_01; + undefined4 extraout_XMM0_Da_02; + + if (param_9 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffb; + } + else { + uVar2 = *(uint *)(param_1 + 0x1ed0); + if (((((param_5 < uVar2) && (param_7 < uVar2)) && (param_6 < *(uint *)(param_1 + 0x1ed4))) && + (param_8 < *(uint *)(param_1 + 0x1ed4))) && + (((param_5 != param_7 || (param_6 != param_8)) && + ((param_4 != (undefined4 *)0x0 && ((param_2 != (uint *)0x0 && (3 < param_3)))))))) { + uVar11 = (int)(param_5 - param_7) >> 0x1f; + iVar7 = (param_5 - param_7 ^ uVar11) - uVar11; + uVar11 = (int)(param_6 - param_8) >> 0x1f; + iVar12 = (param_6 - param_8 ^ uVar11) - uVar11; + iVar16 = iVar7; + if (iVar7 < iVar12) { + iVar16 = iVar12; + } + uVar11 = param_3 >> 2; + if ((int)(iVar16 + 1U) <= (int)(param_3 >> 2)) { + uVar11 = iVar16 + 1U; + } + uVar14 = param_5; + uVar15 = param_6; + uVar8 = param_7; + uVar13 = param_8; + if (param_5 <= param_7) { + uVar14 = param_7; + uVar15 = param_8; + uVar8 = param_5; + uVar13 = param_6; + } + if (iVar7 < iVar12) { + if ((int)uVar13 < (int)uVar15) { + uVar2 = (uVar13 - 1) + uVar11; + if ((int)uVar15 < (int)uVar2) { + uVar2 = uVar15; + } + if ((int)uVar13 <= (int)uVar2) { + lVar1 = *(long *)(param_1 + 0x268); + iVar7 = uVar15 - uVar13; + puVar9 = param_2; + iVar16 = 0; + do { + iVar12 = *(int *)(param_1 + 0x1ed0) * uVar13; + uVar13 = uVar13 + 1; + *puVar9 = (uint)*(ushort *)(lVar1 + (ulong)(iVar16 / iVar7 + uVar8 + iVar12) * 2); + puVar9 = puVar9 + 1; + iVar16 = iVar16 + (uVar14 - uVar8); + } while (uVar13 != uVar2 + 1); + } + } + else { + uVar2 = (uVar13 - uVar11) + 1; + if ((int)uVar2 < (int)uVar15) { + uVar2 = uVar15; + } + if ((int)uVar2 <= (int)uVar13) { + lVar1 = *(long *)(param_1 + 0x268); + iVar7 = uVar15 - uVar13; + puVar9 = param_2; + iVar16 = 0; + do { + iVar12 = *(int *)(param_1 + 0x1ed0) * uVar13; + uVar13 = uVar13 - 1; + *puVar9 = (uint)*(ushort *)(lVar1 + (ulong)(iVar16 / iVar7 + uVar8 + iVar12) * 2); + puVar9 = puVar9 + 1; + iVar16 = iVar16 + (uVar8 - uVar14); + } while (uVar13 != uVar2 - 1); + } + } + } + else { + uVar10 = (uVar8 - 1) + uVar11; + if ((int)uVar14 < (int)uVar10) { + uVar10 = uVar14; + } + if ((int)uVar8 <= (int)uVar10) { + iVar7 = uVar14 - uVar8; + lVar1 = *(long *)(param_1 + 0x268); + puVar9 = param_2; + iVar16 = 0; + while( true ) { + uVar2 = uVar2 * (iVar16 / iVar7 + uVar13) + uVar8; + uVar8 = uVar8 + 1; + *puVar9 = (uint)*(ushort *)(lVar1 + (ulong)uVar2 * 2); + if (uVar8 == uVar10 + 1) break; + uVar2 = *(uint *)(param_1 + 0x1ed0); + puVar9 = puVar9 + 1; + iVar16 = iVar16 + (uVar15 - uVar13); + } + } + } + uVar14 = 0; + uVar8 = 0; + uVar13 = 0xffffffff; + puVar9 = param_2; + uVar2 = uVar11; + do { + uVar15 = *puVar9; + uVar14 = uVar14 + uVar15; + if (uVar8 < uVar15) { + uVar8 = uVar15; + } + if (uVar15 < uVar13) { + uVar13 = uVar15; + } + uVar2 = uVar2 - 1; + puVar9 = puVar9 + 1; + } while (uVar2 != 0); + iVar16 = (param_5 + param_7 >> 1) + ((param_6 + param_8) * *(int *)(param_1 + 0x1ed0) >> 1); + uVar3 = FUN_0010b0a0(param_1,uVar13 & 0xffff,iVar16,0); + *param_4 = uVar3; + uVar3 = FUN_0010b0a0(param_1,uVar8 & 0xffff,iVar16,0); + param_4[1] = uVar3; + uVar3 = FUN_0010b0a0(param_1,(ulong)uVar14 / (ulong)uVar11 & 0xffff,iVar16,0); + param_4[2] = uVar3; + uVar3 = extraout_XMM0_Da; + if (*(int *)(param_1 + 0x60) != 0) { + uVar3 = *(undefined4 *)(param_1 + 0xb8); + if (*(int *)(param_1 + 0xb0) == 0) { + *param_4 = *param_4; + uVar5 = param_4[1]; +LAB_0010da52: + uVar4 = param_4[2]; + param_4[1] = uVar5; + } + else { + uVar4 = FUN_0010a230(uVar3,param_1); + iVar7 = *(int *)(param_1 + 0xb0); + uVar3 = *(undefined4 *)(param_1 + 0xb8); + uVar5 = param_4[1]; + *param_4 = uVar4; + if (iVar7 == 0) goto LAB_0010da52; + uVar5 = FUN_0010a230(uVar3,param_1); + iVar7 = *(int *)(param_1 + 0xb0); + uVar3 = *(undefined4 *)(param_1 + 0xb8); + param_4[1] = uVar5; + uVar4 = param_4[2]; + if (iVar7 != 0) { + uVar4 = FUN_0010a230(uVar3,param_1,uVar4); + uVar3 = extraout_XMM0_Da_02; + } + } + param_4[2] = uVar4; + } + puVar9 = param_2 + (ulong)(uVar11 - 1) + 1; + do { + uVar2 = FUN_0010b0a0(uVar3,param_1,(short)*param_2,iVar16,0); + *param_2 = uVar2; + uVar3 = extraout_XMM0_Da_00; + if (*(int *)(param_1 + 0x60) != 0) { + uVar3 = *(undefined4 *)(param_1 + 0xb8); + if (*(int *)(param_1 + 0xb0) != 0) { + uVar2 = FUN_0010a230(param_1,uVar2); + uVar3 = extraout_XMM0_Da_01; + } + *param_2 = uVar2; + } + param_2 = param_2 + 1; + } while (param_2 != puVar9); + goto joined_r0x0010d851; + } + piVar6 = __errno_location(); + *piVar6 = -0x1b51ffff; + } + uVar11 = 0; +joined_r0x0010d851: + if (param_9 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return uVar11; +} + + +================================================================== + +### FUNC 0010dc40 (624 bytes) name=FUN_0010dc40 + +undefined8 FUN_0010dc40(long param_1,uint *param_2,uint param_3,int *param_4,int param_5) + +{ + undefined4 uVar1; + ushort uVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + int *piVar8; + uint uVar9; + undefined8 uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + long lVar17; + uint uVar18; + ulong uVar10; + + if (param_5 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar8 = __errno_location(); + *piVar8 = -0x1b51fffb; + } + else { + if (((param_4 != (int *)0x0) && (param_2 != (uint *)0x0)) && (param_3 != 0)) { + uVar3 = *(uint *)(param_1 + 0x1ed0); + uVar15 = 0; + uVar13 = 0; + lVar17 = 0; + uVar14 = 0; + uVar12 = 0xffffffff; + uVar18 = 0; + uVar16 = 0; + uVar10 = (ulong)param_3; + do { + uVar9 = *param_2; + param_2 = param_2 + 1; + uVar2 = *(ushort *)(*(long *)(param_1 + 0x268) + (ulong)uVar9 * 2); + lVar17 = lVar17 + (ulong)uVar2; + uVar4 = (uint)uVar2; + if (uVar14 < uVar4) { + uVar18 = uVar9; + uVar14 = uVar4; + } + if (uVar4 < uVar12) { + uVar16 = uVar9; + uVar12 = uVar4; + } + uVar15 = uVar15 + uVar9 / uVar3; + uVar13 = uVar13 + (uVar9 - (uVar9 / uVar3) * uVar3); + uVar9 = (int)uVar10 - 1; + uVar10 = (ulong)uVar9; + } while (uVar9 != 0); + iVar5 = FUN_0010b0a0(param_1,uVar12 & 0xffff,uVar16,1); + *param_4 = iVar5; + iVar5 = FUN_0010b0a0(param_1,uVar14,uVar18,1); + param_4[1] = iVar5; + iVar5 = FUN_0010b0a0(param_1,lVar17 / (long)(ulong)param_3 & 0xffff, + (uVar15 / param_3) * uVar3 + uVar13 / param_3,1); + param_4[2] = iVar5; + param_4[3] = uVar16; + param_4[4] = uVar18; + if (*(int *)(param_1 + 0x60) == 0) { + iVar7 = param_4[1]; + } + else { + if (*(int *)(param_1 + 0xb0) == 0) { + *param_4 = *param_4; + iVar7 = param_4[1]; +LAB_0010de64: + iVar5 = param_4[2]; + param_4[1] = iVar7; + } + else { + iVar6 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1); + iVar5 = *(int *)(param_1 + 0xb0); + uVar1 = *(undefined4 *)(param_1 + 0xb8); + iVar7 = param_4[1]; + *param_4 = iVar6; + if (iVar5 == 0) goto LAB_0010de64; + iVar7 = FUN_0010a230(uVar1,param_1); + iVar6 = *(int *)(param_1 + 0xb0); + uVar1 = *(undefined4 *)(param_1 + 0xb8); + param_4[1] = iVar7; + iVar5 = param_4[2]; + if (iVar6 != 0) { + iVar5 = FUN_0010a230(uVar1,param_1,iVar5); + iVar7 = param_4[1]; + } + } + param_4[2] = iVar5; + } + iVar6 = *param_4; + if (iVar7 < iVar6) { + param_4[1] = iVar6; + iVar7 = iVar6; + } + if (iVar7 < iVar5) { + param_4[2] = iVar7; + iVar5 = iVar7; + } + if (iVar5 < iVar6) { + param_4[2] = iVar6; + } + uVar11 = 1; + goto joined_r0x0010dcb1; + } + piVar8 = __errno_location(); + *piVar8 = -0x1b51ffff; + } + uVar11 = 0; +joined_r0x0010dcb1: + if (param_5 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return uVar11; +} + + +================================================================== + +### FUNC 0010ded0 (460 bytes) name=FUN_0010ded0 + +undefined4 FUN_0010ded0(long param_1,uint param_2,int param_3,int param_4) + +{ + uint uVar1; + undefined4 uVar2; + int *piVar3; + ulong uVar4; + int iVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + int iVar10; + uint uVar11; + uint uVar12; + uint uVar13; + + if (param_4 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffb; + } + else { + if (param_2 < *(uint *)(param_1 + 0x77f8)) { + if (param_3 == 1) { + uVar12 = *(uint *)(param_1 + 0x1ed0); + iVar9 = 0; + uVar1 = param_2 / uVar12; + iVar8 = param_2 - uVar1 * uVar12; + iVar7 = iVar8; +LAB_0010dfae: + iVar5 = uVar1 - iVar9; + uVar13 = 0; + uVar6 = 0; + do { + if (((-1 < iVar8) && (iVar8 < (int)uVar12)) && (iVar5 <= (int)(uVar1 + iVar9))) { + uVar11 = uVar12 * iVar5 + iVar8; + iVar10 = iVar5; + do { + if ((-1 < iVar10) && (iVar10 < *(int *)(param_1 + 0x1ed4))) { + uVar6 = uVar6 + 1; + uVar13 = uVar13 + *(ushort *)(*(long *)(param_1 + 0x268) + (ulong)uVar11 * 2); + } + iVar10 = iVar10 + 1; + uVar11 = uVar11 + uVar12; + } while (iVar10 != uVar1 + iVar9 + 1); + } + iVar8 = iVar8 + 1; + } while (iVar8 <= iVar7); + uVar4 = (ulong)uVar13; + } + else { + iVar9 = 1; + if (param_3 != 3) { + iVar9 = (param_3 != 5) + 2; + } + uVar12 = *(uint *)(param_1 + 0x1ed0); + uVar1 = param_2 / uVar12; + iVar7 = param_2 - uVar1 * uVar12; + iVar8 = iVar7 - iVar9; + iVar7 = iVar7 + iVar9; + if (iVar8 <= iVar7) goto LAB_0010dfae; + uVar4 = 0; + uVar6 = 0; + } + uVar2 = FUN_0010b0a0(param_1,uVar4 / uVar6 & 0xffff,param_2,1); + if ((*(int *)(param_1 + 0x60) != 0) && (*(int *)(param_1 + 0xb0) != 0)) { + uVar2 = FUN_0010a230(*(undefined4 *)(param_1 + 0xb8),param_1,uVar2); + } + goto joined_r0x0010df44; + } + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + } + uVar2 = 0x80000001; +joined_r0x0010df44: + if (param_4 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return uVar2; +} + + +================================================================== + +### FUNC 0010e0c0 (303 bytes) name=FUN_0010e0c0 + +void FUN_0010e0c0(long param_1,long param_2,long param_3,long param_4,int param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined2 uVar4; + int iVar5; + long lVar6; + + iVar5 = *(int *)(param_1 + 0x3c); + uVar1 = *(uint *)(param_1 + 0x1720); + iVar2 = *(int *)(param_1 + 0x1444 + (ulong)uVar1 * 4); + if (iVar5 < *(int *)(param_1 + 0x1444)) { + iVar2 = ((iVar5 - iVar2) * 0x1000) / + (*(int *)(param_1 + 0x1444 + (ulong)(uVar1 + 1) * 4) - iVar2); + iVar5 = -0x3fff; + if (-0x4000 < iVar2) { + iVar5 = iVar2; + } + iVar2 = 0x3fff; + if (iVar5 < 0x4000) { + iVar2 = iVar5; + } + } + else { + iVar2 = ((iVar5 - iVar2) * 0x1000) / + (*(int *)(param_1 + 0x1444 + (ulong)(uVar1 + 1) * 4) - iVar2); + iVar3 = -0x3fff; + if (-0x4000 < iVar2) { + iVar3 = iVar2; + } + iVar2 = 0x3fff; + if (iVar3 < 0x4000) { + iVar2 = iVar3; + } + if (iVar5 <= *(int *)(param_1 + 0x1444 + (ulong)(*(int *)(param_1 + 0x1438) - 1) * 4)) { + if (param_5 == 0) { + return; + } + lVar6 = 0; + do { + *(short *)(param_4 + lVar6) = + (short)(((int)*(short *)(param_3 + lVar6) - (int)*(short *)(param_2 + lVar6)) * iVar2 + >> 0xc) + *(short *)(param_2 + lVar6); + lVar6 = lVar6 + 2; + } while (lVar6 != (ulong)(param_5 - 1) * 2 + 2); + return; + } + } + if (param_5 == 0) { + return; + } + lVar6 = 0; + do { + iVar5 = (((int)*(short *)(param_3 + lVar6) - (int)*(short *)(param_2 + lVar6)) * iVar2 >> 0xc) + + (int)*(short *)(param_2 + lVar6); + if (iVar5 < -0x8000) { + iVar5 = -0x8000; + } + uVar4 = (undefined2)iVar5; + if (0x7fff < iVar5) { + uVar4 = 0x7fff; + } + *(undefined2 *)(param_4 + lVar6) = uVar4; + lVar6 = lVar6 + 2; + } while (lVar6 != (ulong)(param_5 - 1) * 2 + 2); + return; +} + + +================================================================== + +### FUNC 0010e200 (297 bytes) name=FUN_0010e200 + +void FUN_0010e200(long param_1,long param_2,long param_3,long param_4,int param_5) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined2 uVar4; + int iVar5; + long lVar6; + + iVar5 = *(int *)(param_1 + 0x3c); + uVar1 = *(uint *)(param_1 + 0x1720); + iVar2 = *(int *)(param_1 + 0x1444 + (ulong)uVar1 * 4); + if (iVar5 < *(int *)(param_1 + 0x1444)) { + iVar2 = ((iVar5 - iVar2) * 0x1000) / + (*(int *)(param_1 + 0x1444 + (ulong)(uVar1 + 1) * 4) - iVar2); + iVar5 = -0x3fff; + if (-0x4000 < iVar2) { + iVar5 = iVar2; + } + iVar2 = 0x3fff; + if (iVar5 < 0x4000) { + iVar2 = iVar5; + } + } + else { + iVar2 = ((iVar5 - iVar2) * 0x1000) / + (*(int *)(param_1 + 0x1444 + (ulong)(uVar1 + 1) * 4) - iVar2); + iVar3 = -0x3fff; + if (-0x4000 < iVar2) { + iVar3 = iVar2; + } + iVar2 = 0x3fff; + if (iVar3 < 0x4000) { + iVar2 = iVar3; + } + if (iVar5 <= *(int *)(param_1 + 0x1444 + (ulong)(*(int *)(param_1 + 0x1438) - 1) * 4)) { + if (param_5 == 0) { + return; + } + lVar6 = 0; + do { + *(ushort *)(param_4 + lVar6) = + (short)((int)(((uint)*(ushort *)(param_3 + lVar6) - (uint)*(ushort *)(param_2 + lVar6)) + * iVar2) >> 0xc) + *(ushort *)(param_2 + lVar6); + lVar6 = lVar6 + 2; + } while (lVar6 != (ulong)(param_5 - 1) * 2 + 2); + return; + } + } + if (param_5 == 0) { + return; + } + lVar6 = 0; + do { + iVar5 = ((int)(((uint)*(ushort *)(param_3 + lVar6) - (uint)*(ushort *)(param_2 + lVar6)) * iVar2 + ) >> 0xc) + (uint)*(ushort *)(param_2 + lVar6); + if (iVar5 < 0) { + iVar5 = 0; + } + uVar4 = (undefined2)iVar5; + if (0xffff < iVar5) { + uVar4 = 0xffff; + } + *(undefined2 *)(param_4 + lVar6) = uVar4; + lVar6 = lVar6 + 2; + } while (lVar6 != (ulong)(param_5 - 1) * 2 + 2); + return; +} + + +================================================================== + +### FUNC 0010e340 (453 bytes) name=FUN_0010e340 + +void FUN_0010e340(long param_1,int param_2,uint param_3) + +{ + long lVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + if ((*(int *)(param_1 + 0x208) != 0) && (*(int *)(param_1 + 0x1328) != 0)) { + if (param_2 == 0) { + FUN_00107760(param_1); + if ((*(int *)(param_1 + 0x1328) != 0) && (*(int *)(param_1 + 0x132c) != 0)) { + FUN_00109f20(param_1); + } + } + else { + if ((param_2 == 1) && (1 < param_3)) { + DAT_0033f644 = 0; + DAT_0033f640 = 0; + DAT_0033f650 = (*(int *)(param_1 + 0x1434) + -1) * *(int *)(param_1 + 0x77f8); + DAT_0033f64c = (*(int *)(param_1 + 0x77f8) + DAT_0033f650) * 2; + DAT_0033f648 = ((param_3 - 2) + DAT_0033f650 + DAT_0033f64c) / (param_3 - 1) + 7 & + 0xfffffff8; + } + else if (param_2 < 1) goto LAB_0010e4b8; + uVar3 = 0; + if (DAT_0033f644 < DAT_0033f650) { + uVar3 = DAT_0033f648; + if (DAT_0033f650 - DAT_0033f644 <= (int)DAT_0033f648) { + uVar3 = DAT_0033f650 - DAT_0033f644; + } + lVar1 = (long)DAT_0033f644 * 2; + iVar4 = DAT_0033f644 + uVar3; + FUN_0010e0c0(param_1,lVar1 + *(long *)(param_1 + 0x1728),lVar1 + *(long *)(param_1 + 0x1730) + ,lVar1 + *(long *)(param_1 + 0x1738),uVar3); + DAT_0033f644 = iVar4; + } + iVar4 = DAT_0033f64c; + if (((int)uVar3 < (int)DAT_0033f648) && (DAT_0033f640 < DAT_0033f64c)) { + iVar2 = DAT_0033f64c - DAT_0033f640; + if ((int)(DAT_0033f648 - uVar3) <= DAT_0033f64c - DAT_0033f640) { + iVar2 = DAT_0033f648 - uVar3; + } + lVar1 = (long)DAT_0033f640 * 2; + iVar5 = DAT_0033f640 + iVar2; + FUN_0010e200(param_1,lVar1 + *(long *)(param_1 + 0x1740),lVar1 + *(long *)(param_1 + 0x1748) + ,lVar1 + *(long *)(param_1 + 0x1750),iVar2); + DAT_0033f640 = iVar5; + if (iVar4 == iVar5) { + *(undefined4 *)(param_1 + 0x1330) = 1; + } + } + } + } +LAB_0010e4b8: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return; +} + + +================================================================== + +### FUNC 0010e520 (485 bytes) name=FUN_0010e520 + +void FUN_0010e520(long param_1,long param_2) + +{ + undefined1 *puVar1; + long lVar2; + undefined1 uVar3; + long lVar4; + uint uVar5; + int iVar6; + int iVar7; + ulong uVar8; + undefined1 *puVar9; + undefined2 uVar10; + undefined1 *puVar12; + undefined1 *puVar13; + undefined1 uVar14; + long lVar15; + long lVar16; + uint uVar17; + int iVar18; + long in_FS_OFFSET; + undefined1 auStack_68 [16]; + undefined1 *local_58; + undefined8 local_48; + undefined8 local_40; + undefined4 local_38; + long local_30; + int iVar11; + + local_30 = *(long *)(in_FS_OFFSET + 0x28); + lVar4 = *(long *)(param_1 + 600); + lVar16 = *(long *)(param_1 + 0x1dd0); + if (*(int *)(param_1 + 0x1dec) == 0) { + lVar16 = 0; + } + iVar7 = FUN_00109ed0(param_1,100000); + iVar6 = DAT_0033f590; + if (*(int *)(param_1 + 0x77f8) != 0) { + iVar18 = 0; + lVar2 = (ulong)(*(int *)(param_1 + 0x77f8) - 1) * 2 + 2; + lVar15 = 0; + do { + while( true ) { + iVar11 = ((uint)*(ushort *)(param_2 + lVar15) - (uint)*(ushort *)(lVar16 + lVar15)) * iVar6 + + iVar7; + uVar10 = (undefined2)iVar11; + if (iVar11 < 0x10000) break; + iVar18 = iVar18 + 1; + uVar10 = 0xffff; +LAB_0010e599: + *(undefined2 *)(lVar4 + lVar15) = uVar10; + lVar15 = lVar15 + 2; + if (lVar15 == lVar2) goto LAB_0010e5e0; + } + if (-1 < iVar11) goto LAB_0010e599; + iVar18 = iVar18 + 1; + *(undefined2 *)(lVar4 + lVar15) = 0; + lVar15 = lVar15 + 2; + } while (lVar15 != lVar2); +LAB_0010e5e0: + if ((0x100 < iVar18) && (1 < iVar6)) { + iVar7 = *(int *)(param_1 + 0x7804); + DAT_0033f590 = iVar6 + -1; + FUN_00113aa0(auStack_68,2); + FUN_00116630(auStack_68,"Conversation ratio adjusted to "); + uVar8 = FUN_00116480(auStack_68); + if (0x18 < uVar8) { + local_48 = 0x3233343536373839; + local_38 = 0x393837; + local_40 = 0x3635343332313031; + puVar1 = local_58; + uVar17 = (iVar6 + -1) * iVar7; + do { + puVar12 = puVar1; + puVar1 = puVar12 + 1; + uVar5 = uVar17 / 10; + uVar14 = *(undefined1 *)((long)&local_40 + (ulong)(uVar17 % 10) + 1); + *puVar12 = uVar14; + uVar17 = uVar5; + } while (uVar5 != 0); + if ((local_58 != puVar1) && (puVar9 = local_58, local_58 < puVar12)) { + while( true ) { + uVar3 = *puVar9; + puVar13 = puVar12 + -1; + *puVar9 = uVar14; + *puVar12 = uVar3; + if (puVar13 <= puVar9 + 1) break; + uVar14 = *puVar13; + puVar9 = puVar9 + 1; + puVar12 = puVar13; + } + } + local_58 = local_58 + ((int)puVar1 - (int)local_58); + *local_58 = 0; + } + FUN_00116630(auStack_68,"mK/LSB"); + FUN_00113b30(auStack_68); + } + } + if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 0010e730 (281 bytes) name=FUN_0010e730 + +void FUN_0010e730(long param_1,long param_2) + +{ + uint uVar1; + short sVar2; + undefined4 uVar3; + int iVar4; + long lVar5; + uint uVar6; + int iVar7; + short *psVar8; + ushort *puVar9; + long lVar11; + long lVar12; + int iVar13; + long lVar14; + short *psVar15; + long lVar10; + + lVar12 = *(long *)(param_1 + 0x1dd0); + lVar11 = *(long *)(param_1 + 0x1750); + uVar3 = *(undefined4 *)(param_1 + 0xfc); + lVar5 = *(long *)(param_1 + 600); + if (*(int *)(param_1 + 0x1dec) == 0) { + lVar12 = 0; + } + uVar1 = *(int *)(param_1 + 0x1434) - 1; + iVar4 = *(int *)(param_1 + 0x77f8); + if (iVar4 != 0) { + psVar15 = (short *)(*(long *)(param_1 + 0x1738) + 2); + lVar14 = 0; + do { + iVar13 = (int)((uint)*(ushort *)(param_2 + lVar14) - (uint)*(ushort *)(lVar12 + lVar14)) >> 1; + if ((uVar1 == 0) || (iVar13 <= psVar15[-1])) { + lVar10 = 0; + } + else { + uVar6 = 0; + psVar8 = psVar15; + do { + uVar6 = uVar6 + 1; + lVar10 = (ulong)(iVar4 * 2 * uVar1) * 2; + if (uVar1 == uVar6) goto LAB_0010e7f9; + sVar2 = *psVar8; + psVar8 = psVar8 + 1; + } while (sVar2 < iVar13); + lVar10 = (ulong)(uVar6 * iVar4 * 2) * 2; + } +LAB_0010e7f9: + puVar9 = (ushort *)(lVar10 + lVar11); + lVar11 = lVar11 + 4; + iVar7 = ((int)((uint)*puVar9 * iVar13) >> ((byte)uVar3 & 0x1f)) + (uint)puVar9[1]; + iVar13 = 0; + if (-1 < iVar7) { + iVar13 = iVar7; + } + if (0xffff < iVar13) { + iVar13 = 0xffff; + } + psVar15 = psVar15 + uVar1; + *(short *)(lVar5 + lVar14) = (short)iVar13; + lVar14 = lVar14 + 2; + } while (lVar14 != (ulong)(iVar4 - 1) * 2 + 2); + } + return; +} + + +================================================================== + +### FUNC 0010e850 (501 bytes) name=FUN_0010e850 + +ulong FUN_0010e850(long param_1,long param_2) + +{ + uint *puVar1; + ulong uVar2; + uint uVar3; + ulong uVar4; + uint *puVar5; + + puVar5 = *(uint **)(param_1 + 0x1758); + uVar3 = *(uint *)(param_1 + 0x1534 + (ulong)*(uint *)(param_1 + 0x1720) * 4); + uVar4 = (ulong)uVar3; + if (uVar3 != 0) { + puVar1 = puVar5 + ((ulong)(uVar3 - 1) * 5 + 5) * 2; + do { + uVar4 = (ulong)(puVar5[1] - 3); + switch(uVar4) { + case 0: + uVar2 = (long)(int)((uint)*(ushort *)(param_2 + (ulong)puVar5[3] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[2] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[4] * 2)) * 0x55555556; + uVar4 = uVar2 & 0xffffffff; + *(short *)(param_2 + (ulong)*puVar5 * 2) = (short)(uVar2 >> 0x20); + break; + case 1: + uVar3 = (int)((uint)*(ushort *)(param_2 + (ulong)puVar5[2] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[3] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[4] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[5] * 2)) >> 2; + uVar4 = (ulong)uVar3; + *(short *)(param_2 + (ulong)*puVar5 * 2) = (short)uVar3; + break; + case 2: + uVar2 = (long)(int)((uint)*(ushort *)(param_2 + (ulong)puVar5[3] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[2] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[4] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[5] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[6] * 2)) * 0x66666667; + uVar4 = uVar2 & 0xffffffff; + *(short *)(param_2 + (ulong)*puVar5 * 2) = (short)(uVar2 >> 0x21); + break; + case 3: + uVar2 = (long)(int)((uint)*(ushort *)(param_2 + (ulong)puVar5[3] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[2] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[4] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[5] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[6] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[7] * 2)) * 0x2aaaaaab; + uVar4 = uVar2 & 0xffffffff; + *(short *)(param_2 + (ulong)*puVar5 * 2) = (short)(uVar2 >> 0x20); + break; + case 4: + uVar3 = (uint)*(ushort *)(param_2 + (ulong)puVar5[3] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[2] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[4] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[5] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[6] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[7] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[8] * 2); + uVar4 = (long)(int)uVar3 * -0x6db6db6d & 0xffffffff; + *(short *)(param_2 + (ulong)*puVar5 * 2) = (short)(uVar3 / 7); + break; + case 5: + uVar3 = (int)((uint)*(ushort *)(param_2 + (ulong)puVar5[2] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[3] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[4] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[5] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[6] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[7] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[8] * 2) + + (uint)*(ushort *)(param_2 + (ulong)puVar5[9] * 2)) >> 3; + uVar4 = (ulong)uVar3; + *(short *)(param_2 + (ulong)*puVar5 * 2) = (short)uVar3; + break; + default: + goto switchD_0010e8b2_default; + } + puVar5 = puVar5 + 10; + } while (puVar5 != puVar1); + } +switchD_0010e8b2_default: + return uVar4; +} + + +================================================================== + +### FUNC 0010ea70 (51 bytes) name=FUN_0010ea70 + +void FUN_0010ea70(long param_1) + +{ + if ((*(int *)(param_1 + 0x1328) != 0) && (*(int *)(param_1 + 0x1330) != 0)) { + FUN_0010e730(); + FUN_0010e850(param_1,*(undefined8 *)(param_1 + 600)); + return; + } + FUN_0010e520(); + return; +} + + +================================================================== + +### FUNC 0010eab0 (127 bytes) name=FUN_0010eab0 + +void FUN_0010eab0(long param_1) + +{ + int iVar1; + undefined8 uVar2; + + if (*(int *)(param_1 + 0x1eec) != 1) { + iVar1 = FUN_00106b40(param_1 + 0x1df0); + *(undefined4 *)(param_1 + 0x1f0c) = 0; + if (iVar1 != 0) { + uVar2 = 0; + if (*(int *)(param_1 + 0x1e1c) != 0) { + uVar2 = *(undefined8 *)(param_1 + 0x1e00); + } + FUN_0010ea70(param_1,uVar2); + *(undefined4 *)(param_1 + 0x1f14) = 1; + } + return; + } + FUN_00106b40(param_1 + 0x1df0); + uVar2 = 0; + if (*(int *)(param_1 + 0x1e1c) != 0) { + uVar2 = *(undefined8 *)(param_1 + 0x1e00); + } + *(undefined8 *)(param_1 + 0x4b78) = uVar2; + FUN_0010ea70(param_1); + *(undefined4 *)(param_1 + 0x1f14) = 1; + return; +} + + +================================================================== + +### FUNC 0010eb40 (149 bytes) name=FUN_0010eb40 + +void FUN_0010eb40(long param_1) + +{ + long lVar1; + long lVar2; + long lVar3; + uint uVar4; + uint uVar5; + + lVar2 = FUN_0011a270(param_1 + 0x1e90); + if (lVar2 != 0) { + uVar5 = *(uint *)(param_1 + 0x77f8); + if (*(int *)(param_1 + 0x1328) == 0) { + lVar3 = 0; + uVar4 = 0; + if (uVar5 != 0) { + do { + lVar1 = lVar3 * 2; + lVar3 = lVar3 + 1; + uVar4 = uVar4 + *(ushort *)(lVar2 + lVar1); + } while ((uint)lVar3 < uVar5); + *(uint *)(param_1 + 0x1f44) = uVar4 / uVar5; + return; + } + uVar5 = 0; + uVar4 = 0; + } + else { + if (uVar5 == 0) { + uVar4 = 0; + } + else { + lVar3 = 0; + uVar4 = 0; + do { + lVar1 = lVar3 * 2; + lVar3 = lVar3 + 1; + uVar4 = uVar4 + *(ushort *)(lVar2 + lVar1); + } while ((uint)lVar3 < uVar5); + } + uVar5 = uVar5 - *(int *)(param_1 + 0x1534 + (ulong)*(uint *)(param_1 + 0x1720) * 4); + if (uVar5 == 0) { + return; + } + } + *(uint *)(param_1 + 0x1f44) = uVar4 / uVar5; + } + return; +} + + +================================================================== + +### FUNC 0010ebe0 (394 bytes) name=FUN_0010ebe0 + +undefined4 FUN_0010ebe0(long param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + void *pvVar1; + int *piVar2; + char *pcVar3; + undefined1 auStack_48 [40]; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + if ((*(int *)(param_1 + 0x208) == 0) || (*(int *)(param_1 + 0x214) == 0)) { + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + return 0; + } + if (param_2 == 0) { + *(undefined4 *)(param_1 + 0x210) = 0; + if (*(void **)(param_1 + 0x278) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x278)); + *(undefined8 *)(param_1 + 0x278) = 0; +LAB_0010ec51: + if (*(int *)(param_1 + 0x210) != 0) { + pcVar3 = "Add Temperature Mask"; + goto LAB_0010ec66; + } + } + pcVar3 = "Delete Temperature Mask"; + } + else { + if (*(long *)(param_1 + 0x278) == 0) { + pvVar1 = operator_new__((ulong)*(uint *)(param_1 + 0x77f8) * 2); + *(void **)(param_1 + 0x278) = pvVar1; + *(void **)(param_1 + 0x280) = pvVar1; + if (pvVar1 == (void *)0x0) { + FUN_00113aa0(auStack_48,4); + FUN_00116630(auStack_48,"Failed to create mask frame"); + FUN_00113b30(auStack_48); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffe; + goto LAB_0010ec51; + } + } + pcVar3 = "Add Temperature Mask"; + memcpy(*(void **)(param_1 + 0x280),*(void **)(param_1 + 0x268), + (ulong)*(uint *)(param_1 + 0x77f8) * 2); + *(undefined4 *)(param_1 + 0x210) = 1; + } +LAB_0010ec66: + FUN_00113aa0(auStack_48,2); + FUN_00116630(auStack_48,pcVar3); + FUN_00113b30(auStack_48); + pthread_mutex_unlock(__mutex); + return *(undefined4 *)(param_1 + 0x210); +} + + +================================================================== + +### FUNC 0010eda0 (95 bytes) name=FUN_0010eda0 + +void FUN_0010eda0(long param_1) + +{ + ushort *puVar1; + ushort *puVar2; + ushort uVar3; + int iVar4; + int iVar5; + int iVar6; + + uVar3 = FUN_00109ed0(param_1,0); + puVar1 = *(ushort **)(param_1 + 0x280); + puVar2 = *(ushort **)(param_1 + 0x268); + for (iVar5 = *(int *)(param_1 + 0x77f8); iVar5 != 0; iVar5 = iVar5 + -1) { + iVar4 = ((uint)*puVar2 - (uint)*puVar1) + (uint)uVar3; + iVar6 = 0; + if ((-1 < iVar4) && (iVar6 = iVar4, 0xfffe < iVar4)) { + iVar6 = -1; + } + *puVar2 = (ushort)iVar6; + puVar1 = puVar1 + 1; + puVar2 = puVar2 + 1; + } + return; +} + + +================================================================== + +### FUNC 0010ee00 (316 bytes) name=FUN_0010ee00 + +undefined8 FUN_0010ee00(long param_1,long param_2,uint param_3,int param_4,int param_5) + +{ + undefined4 uVar1; + long lVar2; + uint uVar3; + undefined4 uVar4; + int *piVar5; + int iVar6; + ulong uVar7; + + if (param_5 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + } + if (*(int *)(param_1 + 0x214) == 0) { + piVar5 = __errno_location(); + iVar6 = -0x1b51fffb; + } + else { + if (param_2 != 0) { + lVar2 = *(long *)(param_1 + 0x268); + uVar3 = param_3 >> 2; + if (*(uint *)(param_1 + 0x77f8) <= param_3 >> 2) { + uVar3 = *(uint *)(param_1 + 0x77f8); + } + uVar1 = *(undefined4 *)(param_1 + 0xb8); + uVar7 = 0; + if (uVar3 != 0) { + do { + while (((uVar4 = FUN_0010b0a0(param_1,*(undefined2 *)(lVar2 + uVar7 * 2), + uVar7 & 0xffffffff,1), param_4 == 0 && + (*(int *)(param_1 + 0x60) == 0)) || (*(int *)(param_1 + 0xb0) == 0))) { + *(undefined4 *)(param_2 + uVar7 * 4) = uVar4; + uVar7 = uVar7 + 1; + if (uVar3 <= (uint)uVar7) goto LAB_0010eed0; + } + uVar4 = FUN_0010a230(uVar1,param_1,uVar4); + *(undefined4 *)(param_2 + uVar7 * 4) = uVar4; + uVar7 = uVar7 + 1; + } while ((uint)uVar7 < uVar3); + } +LAB_0010eed0: + if (param_5 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return 1; + } + piVar5 = __errno_location(); + iVar6 = -0x1b51ffff; + } + *piVar5 = iVar6; + if (param_5 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + } + return 0; +} + + +================================================================== + +### FUNC 0010ef60 (405 bytes) name=FUN_0010ef60 + +ulong FUN_0010ef60(long param_1,uint param_2,uint param_3) + +{ + pthread_mutex_t *__mutex; + ushort uVar1; + uint uVar2; + int iVar3; + ushort *puVar4; + uint uVar5; + ulong uVar6; + int iVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + + uVar2 = *(uint *)(param_1 + 0x1ed0); + uVar10 = 0x10; + if ((0xf < param_2) && (uVar10 = uVar2 >> 1, param_2 <= uVar2 >> 1)) { + uVar10 = param_2; + } + uVar15 = *(uint *)(param_1 + 0x1ed4); + uVar11 = 9; + if ((8 < param_3) && (uVar11 = uVar15 >> 1, param_3 <= uVar15 >> 1)) { + uVar11 = param_3; + } + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + uVar16 = uVar15 + uVar11 >> 1; + uVar15 = uVar15 - uVar11 >> 1; + pthread_mutex_lock(__mutex); + if ((*(int *)(param_1 + 0x214) != 0) && (uVar15 < uVar16)) { + uVar11 = 0; + uVar5 = uVar2 - uVar10 >> 1; + iVar3 = *(int *)(param_1 + 0x1ed0); + uVar9 = 0; + uVar17 = (uVar15 - 1) * iVar3; + do { + puVar4 = (ushort *)(*(long *)(param_1 + 0x268) + ((ulong)uVar17 + (ulong)(uVar5 - 1)) * 2); + for (iVar7 = (uVar2 + uVar10 >> 1) - uVar5; iVar7 != 0; iVar7 = iVar7 + -1) { + uVar1 = *puVar4; + uVar11 = uVar11 + ((int)((uint)uVar1 + (uint)puVar4[2] + (uint)puVar4[(uint)(iVar3 * 2)] + + (uint)puVar4[(ulong)(uint)(iVar3 * 2) + 2]) >> 2); + uVar8 = (uint)uVar1 - (uint)puVar4[(uint)(iVar3 * 2)]; + uVar12 = (uint)uVar1 - (uint)puVar4[2]; + uVar13 = (int)uVar8 >> 0x1f; + uVar14 = (int)uVar12 >> 0x1f; + uVar9 = uVar9 + (((uVar8 ^ uVar13) - uVar13) + ((uVar12 ^ uVar14) - uVar14) >> 1); + puVar4 = puVar4 + 1; + } + uVar15 = uVar15 + 1; + uVar17 = uVar17 + iVar3; + } while (uVar15 != uVar16); + pthread_mutex_unlock(__mutex); + uVar6 = (ulong)uVar11; + if (0xffff < uVar11) { + uVar6 = (ulong)uVar9 / (ulong)(uVar11 >> 0x10); + } + return uVar6; + } + pthread_mutex_unlock(__mutex); + return 0; +} + + +================================================================== + +### FUNC 0010f100 (417 bytes) name=FUN_0010f100 + +int FUN_0010f100(long param_1,uint param_2,uint param_3) + +{ + pthread_mutex_t *__mutex; + ushort *puVar1; + ushort *puVar2; + long lVar3; + ulong uVar4; + long lVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + double dVar13; + double __x; + + if ((int)param_2 < 0x10) { + uVar10 = *(uint *)(param_1 + 0x1ed0); + uVar7 = 0x10; + } + else { + uVar10 = *(uint *)(param_1 + 0x1ed0); + uVar7 = uVar10; + if (param_2 <= uVar10) { + uVar7 = param_2; + } + } + if ((int)param_3 < 9) { + uVar9 = *(uint *)(param_1 + 0x1ed4); + uVar8 = 9; + } + else { + uVar9 = *(uint *)(param_1 + 0x1ed4); + uVar8 = uVar9; + if (param_3 <= uVar9) { + uVar8 = param_3; + } + } + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + uVar11 = uVar9 - uVar8 >> 1; + uVar6 = uVar10 - uVar7 >> 1; + uVar9 = uVar9 + uVar8 >> 1; + pthread_mutex_lock(__mutex); + uVar10 = uVar10 + uVar7 >> 1; + if (*(int *)(param_1 + 0x214) == 0) { + pthread_mutex_unlock(__mutex); + iVar12 = 0; + } + else { + if (uVar11 < uVar9) { + lVar5 = 0; + lVar3 = 0; + uVar8 = uVar11 * *(int *)(param_1 + 0x1ed0); + uVar7 = uVar11; + do { + puVar2 = (ushort *)(*(long *)(param_1 + 0x268) + ((ulong)uVar8 + (ulong)uVar6) * 2); + if (uVar6 < uVar10) { + puVar1 = puVar2 + (ulong)((uVar10 - 1) - uVar6) + 1; + do { + uVar4 = (ulong)*puVar2; + puVar2 = puVar2 + 1; + lVar3 = lVar3 + uVar4; + lVar5 = lVar5 + uVar4 * uVar4; + } while (puVar2 != puVar1); + } + uVar7 = uVar7 + 1; + uVar8 = uVar8 + *(int *)(param_1 + 0x1ed0); + } while (uVar9 != uVar7); + dVar13 = (double)lVar3 * (double)lVar3; + } + else { + dVar13 = 0.0; + lVar5 = 0; + } + uVar10 = (uVar10 - uVar6) * (uVar9 - uVar11); + pthread_mutex_unlock(__mutex); + __x = ((double)lVar5 - dVar13 / (double)uVar10) / (double)(uVar10 - 1); + dVar13 = SQRT(__x); + if (NAN(dVar13)) { + dVar13 = sqrt(__x); + } + iVar12 = (int)dVar13; + } + return iVar12; +} + + +================================================================== + +### FUNC 0010f2b0 (321 bytes) name=FUN_0010f2b0 + +void FUN_0010f2b0(long param_1,int *param_2,ushort *param_3,uint param_4) + +{ + ushort uVar1; + uint uVar2; + uint uVar3; + int iVar4; + ulong uVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uVar9; + uint uVar10; + uint uVar11; + ushort *puVar12; + uint uVar13; + uint uVar14; + uint uVar15; + + uVar15 = 0; + iVar8 = 4; + uVar14 = (uint)*param_3; + uVar2 = (uint)param_3[1]; + uVar9 = (uint)*param_3; + puVar12 = param_3; + uVar6 = uVar14; + uVar11 = uVar9; + if (param_3[1] < uVar14) goto LAB_0010f34c; +LAB_0010f2ec: + uVar3 = (uint)puVar12[2]; + if (uVar6 < uVar9) { + uVar9 = uVar6; + } + uVar7 = uVar3; + uVar11 = uVar9; + if (uVar2 < puVar12[2]) goto LAB_0010f303; + do { + uVar3 = uVar2; + uVar11 = uVar9; + if (uVar7 < uVar9) { + uVar9 = uVar7; + uVar11 = uVar7; + } +LAB_0010f303: + do { + uVar1 = puVar12[4]; + uVar2 = (uint)uVar1; + uVar10 = uVar9; + uVar13 = (uint)uVar1; + if ((uVar1 <= uVar3) && (uVar13 = uVar3, uVar11 = uVar9, uVar2 < uVar9)) { + uVar10 = uVar2; + uVar11 = uVar2; + } + uVar3 = (uint)puVar12[6]; + uVar15 = uVar15 + uVar6 + uVar2 + uVar7 + uVar3; + uVar9 = uVar10; + uVar2 = uVar3; + if ((uVar3 <= uVar13) && (uVar9 = uVar11, uVar2 = uVar13, uVar3 < uVar10)) { + uVar9 = uVar3; + uVar11 = uVar3; + } + puVar12 = puVar12 + (ulong)(*(int *)(param_1 + 0x1ed0) * 2 - 8) + 8; + iVar8 = iVar8 + -1; + if (iVar8 == 0) { + if (param_4 <= (uVar2 - uVar9) * 0x20) { + uVar15 = uVar15 >> 4; + uVar6 = uVar2 - uVar15; + if (uVar2 - uVar15 < uVar15 - uVar9) { + uVar6 = uVar15 - uVar9; + } + if (param_4 <= uVar6) { + param_4 = uVar6; + } + iVar8 = 4; + while( true ) { + iVar4 = (int)(0x8000 / (ulong)param_4); + param_2[2] = param_2[2] + (param_3[2] - uVar15) * iVar4; + uVar1 = param_3[4]; + *param_2 = *param_2 + (uVar14 - uVar15) * iVar4; + param_2[4] = param_2[4] + (uVar1 - uVar15) * iVar4; + param_2[6] = param_2[6] + (param_3[6] - uVar15) * iVar4; + iVar8 = iVar8 + -1; + uVar5 = (ulong)(*(int *)(param_1 + 0x1ed0) * 2 - 8); + param_3 = param_3 + uVar5 + 8; + param_2 = param_2 + uVar5 + 8; + if (iVar8 == 0) break; + uVar14 = (uint)*param_3; + } + } + return; + } + uVar6 = (uint)*puVar12; + if (uVar6 <= uVar2) goto LAB_0010f2ec; +LAB_0010f34c: + uVar3 = (uint)puVar12[2]; + uVar2 = uVar6; + uVar7 = uVar3; + } while (uVar6 < uVar3); + } while( true ); +} + + +================================================================== + +### FUNC 0010f400 (507 bytes) name=FUN_0010f400 + +void FUN_0010f400(long param_1,int param_2) + +{ + byte bVar1; + int iVar2; + int iVar3; + uint uVar4; + uint uVar5; + long lVar6; + ulong uVar7; + uint uVar8; + long lVar9; + long lVar10; + long lVar11; + int *piVar12; + int *piVar13; + byte *pbVar14; + byte *pbVar15; + uint uVar16; + uint uVar17; + long lVar18; + uint local_3c; + + memset(*(void **)(param_1 + 0x2a0),0,(ulong)*(uint *)(param_1 + 0x77f8) << 2); + FUN_0010a4b0(param_1,30000,*(int *)(param_1 + 0x24) * 1000); + if (*(int *)(param_1 + 0x1ed4) == 6) { + pbVar14 = *(byte **)(param_1 + 0x298); + piVar13 = *(int **)(param_1 + 0x2a0); + uVar5 = 6; + } + else { + local_3c = 0; + do { + iVar2 = *(int *)(param_1 + 0x1ed0); + if (iVar2 != 6) { + lVar6 = (long)(int)(local_3c * iVar2); + lVar10 = lVar6 * 2; + lVar18 = lVar6 * 4; + do { + lVar9 = lVar10 + *(long *)(param_1 + 0x268); + lVar11 = lVar18 + *(long *)(param_1 + 0x2a0); + lVar10 = lVar10 + 2; + lVar18 = lVar18 + 4; + FUN_0010f2b0(param_1,lVar11,lVar9); + } while (lVar10 != (lVar6 + 1 + (ulong)(iVar2 - 7)) * 2); + } + uVar5 = *(uint *)(param_1 + 0x1ed4); + local_3c = local_3c + 1; + } while (local_3c < uVar5 - 6); + pbVar14 = *(byte **)(param_1 + 0x298); + piVar13 = *(int **)(param_1 + 0x2a0); + if (uVar5 == 0) { + return; + } + } + uVar8 = *(uint *)(param_1 + 0x1ed0); + uVar17 = 0; + do { + if (uVar17 < 6) { + uVar16 = (uVar17 >> 1) + 1; + } + else { + uVar16 = 4; + if (uVar5 < uVar17 + 7) { + uVar16 = (uVar5 + 1) - uVar17 >> 1; + } + } + if (uVar8 != 0) { + uVar7 = 0; + piVar12 = piVar13; + pbVar15 = pbVar14; + do { + uVar5 = (uint)uVar7; + if (uVar5 < 6) { + uVar4 = (int)(uVar7 >> 1) + 1; + } + else { + uVar4 = 4; + if (uVar8 < uVar5 + 7) { + uVar4 = (uVar8 + 1) - uVar5 >> 1; + } + } + piVar13 = piVar12 + 1; + iVar2 = *piVar12 * param_2; + if (uVar4 * uVar16 == 0x10) { + if (iVar2 < 0) { + iVar2 = iVar2 + 0x7ffff; + } + iVar2 = iVar2 >> 0x13; + } + else { + iVar2 = iVar2 / (int)(uVar4 * uVar16 * 0x8000); + } + iVar3 = iVar2 + (uint)*pbVar15; + if ((int)(iVar2 + (uint)*pbVar15) < 0) { + iVar3 = 0; + } + pbVar14 = pbVar15 + 1; + bVar1 = (byte)iVar3; + if (0xff < iVar3) { + bVar1 = 0xff; + } + uVar7 = (ulong)(uVar5 + 1); + *pbVar15 = bVar1; + uVar8 = *(uint *)(param_1 + 0x1ed0); + piVar12 = piVar13; + pbVar15 = pbVar14; + } while (uVar5 + 1 < uVar8); + } + uVar5 = *(uint *)(param_1 + 0x1ed4); + uVar17 = uVar17 + 1; + } while (uVar17 < uVar5); + return; +} + + +================================================================== + +### FUNC 0010f620 (256 bytes) name=FUN_0010f620 + +void FUN_0010f620(long param_1,int *param_2,ushort *param_3,uint param_4) + +{ + ushort uVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + ushort *puVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + + uVar12 = 0; + uVar9 = (uint)*param_3; + iVar4 = 4; + uVar2 = (uint)param_3[1]; + puVar6 = param_3; + uVar10 = uVar9; + uVar8 = uVar9; + if (param_3[1] < *param_3) goto LAB_0010f6b8; +LAB_0010f658: + uVar3 = (uint)puVar6[2]; + if (uVar10 < uVar9) { + uVar9 = uVar10; + } + uVar11 = uVar3; + uVar8 = uVar9; + if (uVar2 < puVar6[2]) goto LAB_0010f670; + do { + uVar3 = uVar2; + uVar8 = uVar9; + if (uVar11 < uVar9) { + uVar9 = uVar11; + uVar8 = uVar11; + } +LAB_0010f670: + do { + uVar1 = puVar6[4]; + uVar2 = (uint)uVar1; + uVar7 = uVar9; + uVar5 = (uint)uVar1; + if ((uVar1 <= uVar3) && (uVar5 = uVar3, uVar8 = uVar9, uVar2 < uVar9)) { + uVar7 = uVar2; + uVar8 = uVar2; + } + uVar3 = (uint)puVar6[6]; + uVar12 = uVar12 + uVar10 + uVar2 + uVar11 + uVar3; + uVar9 = uVar7; + uVar2 = uVar3; + if ((uVar3 <= uVar5) && (uVar9 = uVar8, uVar2 = uVar5, uVar3 < uVar7)) { + uVar9 = uVar3; + uVar8 = uVar3; + } + puVar6 = puVar6 + (ulong)(*(int *)(param_1 + 0x1ed0) * 2 - 8) + 8; + iVar4 = iVar4 + -1; + if (iVar4 == 0) { + if ((uVar2 - uVar9) * 0x20 < param_4) { + *param_2 = 0; + return; + } + uVar12 = uVar12 >> 4; + uVar10 = uVar2 - uVar12; + if (uVar2 - uVar12 < uVar12 - uVar9) { + uVar10 = uVar12 - uVar9; + } + if (param_4 <= uVar10) { + param_4 = uVar10; + } + *param_2 = (int)(0x8000 / (ulong)param_4) * + (param_3[(ulong)(uint)(*(int *)(param_1 + 0x1ed0) * 3) + 3] - uVar12); + return; + } + uVar10 = (uint)*puVar6; + if (uVar10 <= uVar2) goto LAB_0010f658; +LAB_0010f6b8: + uVar3 = (uint)puVar6[2]; + uVar2 = uVar10; + uVar11 = uVar3; + } while (uVar10 < uVar3); + } while( true ); +} + + +================================================================== + +### FUNC 0010f730 (529 bytes) name=FUN_0010f730 + +void FUN_0010f730(long param_1,int param_2) + +{ + ushort uVar1; + long lVar2; + byte *pbVar3; + byte *pbVar4; + byte *pbVar5; + long lVar6; + int *piVar7; + byte bVar8; + int iVar9; + long lVar10; + uint uVar11; + long lVar12; + int iVar13; + uint local_34; + + uVar1 = FUN_0010a4b0(param_1,30000,*(int *)(param_1 + 0x24) * 1000); + iVar13 = *(int *)(param_1 + 0x1ed0); + lVar6 = *(long *)(param_1 + 0x2a0); + local_34 = 0; + uVar11 = param_2 * 2 * (uint)uVar1 >> 8; + do { + lVar2 = *(long *)(param_1 + 0x268) + (ulong)(local_34 * iVar13) * 2; + lVar10 = lVar2; + lVar12 = lVar6 + 0xc + (ulong)((local_34 + 3) * iVar13) * 4; + if (iVar13 != 6) { + do { + lVar6 = lVar10 + 2; + FUN_0010f620(param_1,lVar12,lVar10,uVar11); + lVar10 = lVar6; + lVar12 = lVar12 + 4; + } while (lVar6 != lVar2 + 2 + (ulong)(iVar13 - 7) * 2); + iVar13 = *(int *)(param_1 + 0x1ed0); + lVar6 = *(long *)(param_1 + 0x2a0); + } + iVar9 = *(int *)(param_1 + 0x1ed4); + local_34 = local_34 + 2; + } while (local_34 <= iVar9 - 7U); + if (iVar9 != 7) { + local_34 = 1; + while( true ) { + lVar2 = *(long *)(param_1 + 0x268) + (ulong)(local_34 * iVar13) * 2; + lVar10 = lVar2; + lVar6 = lVar6 + 0xc + (ulong)((local_34 + 3) * iVar13) * 4; + if (iVar13 != 6) { + do { + lVar12 = lVar10 + 2; + FUN_0010f620(param_1,lVar6,lVar10,uVar11); + lVar10 = lVar12; + lVar6 = lVar6 + 4; + } while (lVar12 != lVar2 + 2 + (ulong)(iVar13 - 7) * 2); + iVar9 = *(int *)(param_1 + 0x1ed4); + } + local_34 = local_34 + 2; + if (iVar9 - 7U < local_34) break; + iVar13 = *(int *)(param_1 + 0x1ed0); + lVar6 = *(long *)(param_1 + 0x2a0); + } + if (iVar9 - 3U < 4) { + return; + } + iVar13 = *(int *)(param_1 + 0x1ed0); + lVar6 = *(long *)(param_1 + 0x2a0); + } + uVar11 = 3; + while( true ) { + lVar2 = (ulong)(uVar11 * iVar13) + 3; + pbVar3 = (byte *)(lVar2 + *(long *)(param_1 + 0x298)); + pbVar4 = pbVar3; + piVar7 = (int *)(lVar6 + lVar2 * 4); + if (iVar13 != 6) { + do { + iVar9 = *piVar7 * param_2; + if (iVar9 < 0) { + iVar9 = iVar9 + 0x7fff; + } + iVar9 = (iVar9 >> 0xf) + (uint)*pbVar4; + if (iVar9 < 0) { + iVar9 = 0; + } + pbVar5 = pbVar4 + 1; + bVar8 = (byte)iVar9; + if (0xff < iVar9) { + bVar8 = 0xff; + } + *pbVar4 = bVar8; + pbVar4 = pbVar5; + piVar7 = piVar7 + 1; + } while (pbVar5 != pbVar3 + (ulong)(iVar13 - 7) + 1); + iVar9 = *(int *)(param_1 + 0x1ed4); + } + uVar11 = uVar11 + 1; + if (iVar9 - 3U <= uVar11) break; + iVar13 = *(int *)(param_1 + 0x1ed0); + lVar6 = *(long *)(param_1 + 0x2a0); + } + return; +} + + +================================================================== + +### FUNC 0010f950 (11 bytes) name=FUN_0010f950 + +void FUN_0010f950(undefined8 param_1,int param_2) + +{ + if (param_2 == 0) { + return; + } + FUN_0010f400(); + return; +} + + +================================================================== + +### FUNC 0010f970 (11 bytes) name=FUN_0010f970 + +void FUN_0010f970(undefined8 param_1,int param_2) + +{ + if (param_2 != 0) { + FUN_0010f730(); + return; + } + return; +} + + +================================================================== + +### FUNC 0010f990 (234 bytes) name=FUN_0010f990 + +void FUN_0010f990(long param_1,int param_2,int param_3,int param_4) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + if (param_2 - 1U < 4) { + uVar2 = *(uint *)(param_1 + 0x1ed0); + uVar3 = 1 << ((byte)param_2 & 0x1f); + uVar1 = *(uint *)(param_1 + 0x1ed4); + *(int *)(param_1 + 0x1ef8) = param_2; + uVar4 = param_3 - uVar2 / (uVar3 * 2); + if ((int)uVar4 < 0) { + uVar4 = 0; + } + uVar2 = (uVar2 - 2) - uVar2 / uVar3; + if (uVar4 <= uVar2) { + uVar2 = uVar4; + } + uVar4 = param_4 - uVar1 / (uVar3 * 2); + if ((int)uVar4 < 0) { + uVar4 = 0; + } + *(uint *)(param_1 + 0x1efc) = uVar2 & 0xfffffffe; + uVar2 = (uVar1 - 1) - uVar1 / uVar3; + if (uVar4 <= uVar2) { + uVar2 = uVar4; + } + *(uint *)(param_1 + 0x1f00) = uVar2; + pthread_mutex_unlock(__mutex); + return; + } + *(undefined4 *)(param_1 + 0x1ef8) = 0; + *(undefined4 *)(param_1 + 0x1efc) = 0; + *(undefined4 *)(param_1 + 0x1f00) = 0; + pthread_mutex_unlock(__mutex); + return; +} + + +================================================================== + +### FUNC 0010fa80 (7 bytes) name=FUN_0010fa80 + +undefined4 FUN_0010fa80(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x1ef8); +} + + +================================================================== + +### FUNC 0010fa90 (416 bytes) name=FUN_0010fa90 + +void FUN_0010fa90(long param_1) + +{ + ushort uVar1; + ushort uVar2; + uint uVar3; + void *pvVar4; + long lVar5; + uint uVar6; + ushort *puVar7; + ushort *puVar8; + ulong uVar9; + int iVar10; + uint uVar11; + uint *puVar12; + uint uVar13; + ushort *puVar14; + ushort *puVar15; + uint *puVar16; + void *__src; + ushort uVar17; + ushort uVar18; + + uVar3 = *(uint *)(param_1 + 0x1ed0); + iVar10 = (*(uint *)(param_1 + 0x1ed4) >> 1) + 1; + __src = (void *)(*(long *)(param_1 + 0x268) + + ((ulong)(uVar3 * *(int *)(param_1 + 0x1f00)) + (ulong)*(uint *)(param_1 + 0x1efc)) + * 2); + pvVar4 = *(void **)(param_1 + 0x290); + do { + pvVar4 = memcpy(pvVar4,__src,(ulong)((uVar3 >> 1) + 2) * 2); + uVar3 = *(uint *)(param_1 + 0x1ed0); + __src = (void *)((long)__src + (ulong)uVar3 * 2); + iVar10 = iVar10 + -1; + pvVar4 = (void *)((long)pvVar4 + (ulong)((uVar3 >> 1) + 2) * 2); + } while (iVar10 != 0); + puVar15 = *(ushort **)(param_1 + 0x290); + puVar16 = *(uint **)(param_1 + 0x268); + uVar11 = *(uint *)(param_1 + 0x1ed4) >> 1; + if (uVar11 != 0) { + while( true ) { + uVar3 = uVar3 >> 1; + puVar8 = puVar15; + if (uVar3 != 0) { + puVar12 = puVar16; + uVar6 = uVar3; + uVar13 = (uint)*puVar15; + do { + uVar17 = puVar8[1]; + puVar8 = puVar8 + 1; + uVar6 = uVar6 - 1; + *puVar12 = ((int)(uVar17 + uVar13) >> 1) << 0x10 | uVar13; + puVar12 = puVar12 + 1; + uVar13 = (uint)uVar17; + } while (uVar6 != 0); + uVar9 = (ulong)(uVar3 - 1); + uVar3 = *(uint *)(param_1 + 0x1ed0) >> 1; + puVar16 = puVar16 + uVar9 + 1; + puVar14 = puVar15 + uVar9 + 3; + puVar8 = puVar15 + ((uVar9 + 1) - (ulong)uVar3); + if (*(uint *)(param_1 + 0x1ed0) >> 1 != 0) { + puVar7 = puVar8; + puVar12 = puVar16; + uVar17 = *puVar8; + uVar18 = puVar15[uVar9 + 3]; + uVar6 = uVar3; + do { + uVar1 = puVar7[1]; + uVar2 = puVar14[1]; + puVar7 = puVar7 + 1; + puVar14 = puVar14 + 1; + uVar6 = uVar6 - 1; + *puVar12 = ((int)((uint)uVar1 + (uint)uVar17 + (uint)uVar18 + (uint)uVar2) >> 2) << 0x10 + | (int)((uint)uVar17 + (uint)uVar18) >> 1; + puVar12 = puVar12 + 1; + uVar17 = uVar1; + uVar18 = uVar2; + } while (uVar6 != 0); + lVar5 = (ulong)(uVar3 - 1) + 1; + puVar16 = puVar16 + lVar5; + puVar8 = puVar8 + lVar5; + } + } + puVar15 = puVar8 + 2; + uVar11 = uVar11 - 1; + if (uVar11 == 0) break; + uVar3 = *(uint *)(param_1 + 0x1ed0); + } + } + return; +} + + +================================================================== + +### FUNC 0010fc40 (1006 bytes) name=FUN_0010fc40 + +void FUN_0010fc40(long param_1) + +{ + ushort uVar1; + ushort uVar2; + void *pvVar3; + ulong uVar4; + long lVar5; + uint *puVar6; + int iVar7; + ushort *puVar8; + ushort *puVar9; + void *__src; + uint uVar10; + ushort uVar11; + ushort *puVar12; + ushort uVar13; + ushort *puVar14; + uint uVar15; + uint *puVar16; + ushort *local_48; + uint local_3c; + + uVar15 = *(uint *)(param_1 + 0x1ed0); + pvVar3 = *(void **)(param_1 + 0x290); + iVar7 = (*(uint *)(param_1 + 0x1ed4) >> 2) + 1; + __src = (void *)(*(long *)(param_1 + 0x268) + + ((ulong)(uVar15 * *(int *)(param_1 + 0x1f00)) + (ulong)*(uint *)(param_1 + 0x1efc) + ) * 2); + do { + pvVar3 = memcpy(pvVar3,__src,(ulong)((uVar15 >> 2) + 2) * 2); + uVar15 = *(uint *)(param_1 + 0x1ed0); + __src = (void *)((long)__src + (ulong)uVar15 * 2); + iVar7 = iVar7 + -1; + pvVar3 = (void *)((long)pvVar3 + (ulong)((uVar15 >> 2) + 2) * 2); + } while (iVar7 != 0); + puVar14 = *(ushort **)(param_1 + 0x290); + puVar16 = *(uint **)(param_1 + 0x268); + local_3c = *(uint *)(param_1 + 0x1ed4) >> 2; + if (local_3c == 0) { + return; + } + puVar9 = puVar14; + if (uVar15 >> 2 == 0) goto LAB_00110000; + do { + puVar6 = puVar16; + puVar9 = puVar14; + uVar11 = *puVar14; + uVar10 = uVar15 >> 2; + do { + uVar13 = puVar9[1]; + puVar9 = puVar9 + 1; + iVar7 = (uint)uVar11 + (uint)uVar13; + *puVar6 = ((int)((uint)uVar11 + (uint)uVar11 * 2 + (uint)uVar13) >> 2) << 0x10 | (uint)uVar11; + uVar10 = uVar10 - 1; + puVar6[1] = ((int)(iVar7 + (uint)uVar13 * 2) >> 2) << 0x10 | iVar7 >> 1; + puVar6 = puVar6 + 2; + uVar11 = uVar13; + } while (uVar10 != 0); + uVar4 = (ulong)((uVar15 >> 2) - 1); + puVar16 = puVar16 + (uVar4 + 1) * 2; + puVar8 = puVar14 + uVar4 + 3; + uVar15 = *(uint *)(param_1 + 0x1ed0) >> 2; + lVar5 = (ulong)uVar15 * -2; + puVar9 = puVar14 + ((uVar4 + 1) - (ulong)uVar15); + if (*(uint *)(param_1 + 0x1ed0) >> 2 == 0) goto LAB_00110002; + puVar6 = puVar16; + puVar12 = puVar9; + uVar11 = *puVar9; + uVar13 = puVar14[uVar4 + 3]; + uVar10 = uVar15; + do { + uVar1 = puVar12[1]; + uVar2 = puVar8[1]; + puVar12 = puVar12 + 1; + puVar8 = puVar8 + 1; + *puVar6 = ((int)((uint)uVar11 + (uint)uVar11 * 8 + ((uint)uVar13 + (uint)uVar1) * 3 + + (uint)uVar2) >> 4) << 0x10 | + (int)((uint)uVar11 + (uint)uVar11 * 2 + (uint)uVar13) >> 2; + uVar10 = uVar10 - 1; + puVar6[1] = ((int)((uint)uVar1 + (uint)uVar1 * 8 + ((uint)uVar11 + (uint)uVar2) * 3 + + (uint)uVar13) >> 4) << 0x10 | + (int)((uint)uVar2 + (uint)uVar13 + ((uint)uVar11 + (uint)uVar1) * 3) >> 3; + puVar6 = puVar6 + 2; + uVar11 = uVar1; + uVar13 = uVar2; + } while (uVar10 != 0); + uVar4 = (ulong)(uVar15 - 1); + puVar16 = puVar16 + (uVar4 + 1) * 2; + puVar14 = puVar9 + uVar4 + 3; + uVar15 = *(uint *)(param_1 + 0x1ed0) >> 2; + lVar5 = (ulong)uVar15 * -2; + local_48 = puVar9 + ((uVar4 + 1) - (ulong)uVar15); + if (*(uint *)(param_1 + 0x1ed0) >> 2 == 0) goto LAB_0011000c; + puVar6 = puVar16; + puVar8 = local_48; + uVar11 = *local_48; + uVar13 = puVar9[uVar4 + 3]; + uVar10 = uVar15; + do { + uVar1 = puVar8[1]; + uVar2 = puVar14[1]; + iVar7 = (uint)uVar11 + (uint)uVar13; + puVar8 = puVar8 + 1; + puVar14 = puVar14 + 1; + *puVar6 = ((int)(iVar7 * 3 + (uint)uVar1 + (uint)uVar2) >> 3) << 0x10 | iVar7 >> 1; + uVar10 = uVar10 - 1; + puVar6[1] = ((int)(iVar7 + ((uint)uVar1 + (uint)uVar2) * 3) >> 3) << 0x10 | + (int)((uint)uVar11 + (uint)uVar1 + (uint)uVar13 + (uint)uVar2) >> 2; + puVar6 = puVar6 + 2; + uVar11 = uVar1; + uVar13 = uVar2; + } while (uVar10 != 0); + uVar4 = (ulong)(uVar15 - 1); + puVar16 = puVar16 + (uVar4 + 1) * 2; + uVar15 = *(uint *)(param_1 + 0x1ed0) >> 2; + puVar9 = local_48 + uVar4 + 3; + puVar14 = local_48 + ((uVar4 + 1) - (ulong)uVar15); + if (*(uint *)(param_1 + 0x1ed0) >> 2 != 0) { + puVar6 = puVar16; + puVar8 = puVar14; + uVar11 = *puVar14; + uVar13 = local_48[uVar4 + 3]; + uVar10 = uVar15; + do { + uVar1 = puVar9[1]; + uVar2 = puVar8[1]; + puVar8 = puVar8 + 1; + puVar9 = puVar9 + 1; + *puVar6 = ((int)(((uint)uVar11 + (uint)uVar1) * 3 + (uint)uVar2 + + (uint)uVar13 + (uint)uVar13 * 8) >> 4) << 0x10 | + (int)((uint)uVar13 + (uint)uVar13 * 2 + (uint)uVar11) >> 2; + uVar10 = uVar10 - 1; + puVar6[1] = ((int)(((uint)uVar13 + (uint)uVar2) * 3 + (uint)uVar11 + + (uint)uVar1 + (uint)uVar1 * 8) >> 4) << 0x10 | + (int)((uint)uVar11 + (uint)uVar2 + ((uint)uVar13 + (uint)uVar1) * 3) >> 3; + puVar6 = puVar6 + 2; + uVar11 = uVar2; + uVar13 = uVar1; + } while (uVar10 != 0); + lVar5 = (ulong)(uVar15 - 1) + 1; + puVar16 = puVar16 + lVar5 * 2; + puVar14 = puVar14 + lVar5; + } + while( true ) { + local_3c = local_3c - 1; + if (local_3c == 0) { + return; + } + puVar14 = puVar14 + 2; + uVar15 = *(uint *)(param_1 + 0x1ed0); + puVar9 = puVar14; + if (uVar15 >> 2 != 0) break; +LAB_00110000: + lVar5 = 0; +LAB_00110002: + local_48 = (ushort *)((long)puVar9 + lVar5); +LAB_0011000c: + puVar14 = (ushort *)((long)local_48 + lVar5); + } + } while( true ); +} + + +================================================================== + +### FUNC 00110030 (343 bytes) name=FUN_00110030 + +undefined4 FUN_00110030(long param_1,undefined8 *param_2,int param_3) + +{ + undefined1 uVar1; + undefined2 uVar2; + undefined4 uVar3; + uint uVar4; + ulong uVar5; + long lVar6; + undefined8 *puVar7; + undefined8 *puVar8; + bool bVar9; + byte bVar10; + + bVar10 = 0; + if (param_3 != 0x21c) { + return 0; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + if (*(int *)((long)param_2 + 0x3c) - 1U < 0x19) { + puVar7 = (undefined8 *)(param_1 + 0x1768); + uVar4 = 0x21c; + bVar9 = ((ulong)puVar7 & 1) != 0; + if (bVar9) { + uVar1 = *(undefined1 *)param_2; + puVar7 = (undefined8 *)(param_1 + 0x1769); + param_2 = (undefined8 *)((long)param_2 + 1); + *(undefined1 *)(param_1 + 0x1768) = uVar1; + uVar4 = 0x21b; + } + puVar8 = puVar7; + if (((ulong)puVar7 & 2) != 0) { + uVar2 = *(undefined2 *)param_2; + puVar8 = (undefined8 *)((long)puVar7 + 2); + param_2 = (undefined8 *)((long)param_2 + 2); + uVar4 = uVar4 - 2; + *(undefined2 *)puVar7 = uVar2; + } + puVar7 = puVar8; + if (((ulong)puVar8 & 4) != 0) { + uVar3 = *(undefined4 *)param_2; + puVar7 = (undefined8 *)((long)puVar8 + 4); + param_2 = (undefined8 *)((long)param_2 + 4); + uVar4 = uVar4 - 4; + *(undefined4 *)puVar8 = uVar3; + } + lVar6 = 0; + for (uVar5 = (ulong)(uVar4 >> 3); uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar7 = *param_2; + param_2 = param_2 + (ulong)bVar10 * -2 + 1; + puVar7 = puVar7 + (ulong)bVar10 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar7 = *(undefined4 *)param_2; + lVar6 = 4; + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)((long)puVar7 + lVar6) = *(undefined2 *)((long)param_2 + lVar6); + lVar6 = lVar6 + 2; + } + if (bVar9) { + *(undefined1 *)((long)puVar7 + lVar6) = *(undefined1 *)((long)param_2 + lVar6); + } + *(undefined4 *)(param_1 + 0x1764) = 1; + *(undefined4 *)(param_1 + 0x1760) = 1; + *(undefined4 *)(param_1 + 0x78) = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + uVar3 = 0; + if (*(int *)(param_1 + 0x1760) != 0) { + *(undefined4 *)(param_1 + 0x7810) = *(undefined4 *)(param_1 + 0x182c); + *(undefined4 *)(param_1 + 0x7814) = *(undefined4 *)(param_1 + 0x1834); + FUN_00109d40(param_1,*(undefined4 *)(param_1 + 0x1830)); + uVar3 = *(undefined4 *)(param_1 + 0x1760); + } + return uVar3; +} + + +================================================================== + +### FUNC 001101b0 (39 bytes) name=FUN_001101b0 + +void FUN_001101b0(long param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + undefined4 uVar1; + + uVar1 = 0; + if (*(int *)(param_1 + 0x7810) != 0) { + uVar1 = *(undefined4 *)(param_1 + 0x7814); + } + *param_2 = uVar1; + *param_3 = *(undefined4 *)(param_1 + 0x7804); + *param_4 = *(undefined4 *)(param_1 + 0x7808); + return; +} + + +================================================================== + +### FUNC 001101e0 (296 bytes) name=FUN_001101e0 + +undefined8 FUN_001101e0(long param_1,int param_2,uint param_3,undefined4 param_4) + +{ + int iVar1; + long lVar2; + char *pcVar3; + char *pcVar4; + undefined4 uVar5; + bool bVar6; + + bVar6 = *(int *)(param_1 + 0x1760) == 0; + if (bVar6) { + if (6 < param_2 - 1U) { +LAB_00110259: + if (param_3 == 0) { + return 0; + } + uVar5 = 0; + if ((param_3 - 1 & param_3) != 0) { + return 0; + } + goto LAB_00110269; + } + } + else { + lVar2 = 0x14; + pcVar3 = (char *)(param_1 + 0x1768); + pcVar4 = "Shutterless Default"; + do { + if (lVar2 == 0) break; + lVar2 = lVar2 + -1; + bVar6 = *pcVar3 == *pcVar4; + pcVar3 = pcVar3 + 1; + pcVar4 = pcVar4 + 1; + } while (bVar6); + if (bVar6) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + *(uint *)(param_1 + 0x183c) = param_3; + *(undefined4 *)(param_1 + 0x1840) = param_4; + *(undefined4 *)(param_1 + 0x7810) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return 1; + } + if ((6 < param_2 - 1U) || + (*(int *)(param_1 + 0x182c + (ulong)*(uint *)(param_1 + 0x78) * 0x21c) == 0)) + goto LAB_00110259; + } + uVar5 = 1; +LAB_00110269: + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + *(undefined4 *)(param_1 + 0x7810) = uVar5; + *(int *)(param_1 + 0x7814) = param_2; + iVar1 = 0; + *(uint *)(param_1 + 0x7804) = param_3; + *(undefined4 *)(param_1 + 0x7808) = param_4; + do { + if (param_3 == 1 << ((byte)iVar1 & 0x1f)) { + *(int *)(param_1 + 0x780c) = iVar1; + break; + } + iVar1 = iVar1 + 1; + } while (iVar1 != 0x20); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return 1; +} + + +================================================================== + +### FUNC 00110320 (671 bytes) name=FUN_00110320 + +void FUN_00110320(long param_1) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + byte bVar4; + byte bVar5; + byte bVar6; + undefined1 uVar7; + ulong uVar8; + void *pvVar9; + long lVar10; + byte *pbVar11; + int iVar12; + size_t __n; + byte *pbVar13; + void *pvVar14; + int iVar15; + byte *pbVar16; + byte *pbVar17; + uint uVar18; + void *__src; + uint uVar19; + + uVar19 = 0; + __src = *(void **)(param_1 + 0x298); + uVar18 = *(uint *)(param_1 + 0x1ed0) + 8; + uVar8 = (ulong)uVar18; + pvVar14 = (void *)(((ulong)(uint)((*(int *)(param_1 + 0x1edc) + 3) * *(int *)(param_1 + 0x1ed8)) - + (ulong)((*(int *)(param_1 + 0x1ed4) + 1) * uVar18)) + + *(long *)(param_1 + 0x200)); + __n = (size_t)*(uint *)(param_1 + 0x1ed0); + pvVar9 = pvVar14; + if (*(int *)(param_1 + 0x1ed4) != 0) { + do { + pvVar9 = memcpy(pvVar9,__src,__n); + uVar18 = *(uint *)(param_1 + 0x1ed0); + iVar12 = (uint)*(byte *)((long)__src + (ulong)(uVar18 - 1)) * 2 - + (uint)*(byte *)((long)__src + (ulong)(uVar18 - 2)); + if (iVar12 < 0) { + iVar12 = 0; + } + uVar7 = 0xff; + if (iVar12 < 0x100) { + uVar7 = (undefined1)iVar12; + } + uVar19 = uVar19 + 1; + *(undefined1 *)((long)pvVar9 + (ulong)uVar18) = uVar7; + __n = (size_t)*(uint *)(param_1 + 0x1ed0); + __src = (void *)((long)__src + __n); + uVar8 = (ulong)(*(uint *)(param_1 + 0x1ed0) + 8); + pvVar9 = (void *)((long)pvVar9 + uVar8); + } while (uVar19 < *(uint *)(param_1 + 0x1ed4)); + } + lVar10 = 0; + if ((int)__n != -1) { + do { + iVar12 = (uint)*(byte *)((long)pvVar9 + (lVar10 - uVar8)) * 2 - + (uint)*(byte *)((long)pvVar9 + lVar10 + uVar8 * -2); + if (iVar12 < 0) { + iVar12 = 0; + } + uVar7 = (undefined1)iVar12; + if (0xff < iVar12) { + uVar7 = 0xff; + } + *(undefined1 *)((long)pvVar9 + lVar10) = uVar7; + lVar10 = lVar10 + 1; + } while (lVar10 != __n + 1); + } + uVar18 = 0; + if (*(int *)(param_1 + 0x1ed4) != 0) { + do { + uVar19 = *(uint *)(param_1 + 0x1ed0); + pbVar11 = (byte *)((ulong)((uVar18 * 3 >> 1) * *(int *)(param_1 + 0x1ed8)) + + *(long *)(param_1 + 0x200)); + pbVar13 = (byte *)((ulong)((uVar19 + 8) * uVar18) + (long)pvVar14); + if (uVar19 >> 1 != 0) { + pbVar17 = pbVar11 + (ulong)((uVar19 >> 1) - 1) * 3 + 3; + while( true ) { + bVar1 = pbVar13[1]; + bVar2 = *pbVar13; + pbVar16 = pbVar13 + (ulong)uVar19 + 8; + bVar3 = pbVar13[2]; + bVar4 = *pbVar16; + bVar5 = pbVar16[2]; + bVar6 = pbVar16[1]; + *pbVar11 = bVar2; + iVar15 = (uint)bVar1 * 0x156; + iVar12 = (uint)bVar6 * 2; + pbVar11[1] = (byte)(iVar15 + (uint)bVar2 * 0xab >> 9); + pbVar11[2] = (byte)(iVar15 + (uint)bVar3 * 0xab >> 9); + iVar15 = (uint)bVar4 * 0x156; + pbVar16 = pbVar11 + *(uint *)(param_1 + 0x1ed8); + *pbVar16 = (byte)((uint)bVar2 * 0xab + iVar15 >> 9); + pbVar16[1] = (byte)(((uint)bVar2 + ((uint)bVar4 + (uint)bVar1 + iVar12) * 2) * 0x39 >> 9); + pbVar16[2] = (byte)(((uint)bVar3 + ((uint)bVar1 + (uint)bVar5 + iVar12) * 2) * 0x39 >> 9); + pbVar16 = pbVar13 + (*(int *)(param_1 + 0x1ed0) * 2 + 0x10); + pbVar13 = pbVar13 + 2; + bVar1 = *pbVar16; + bVar2 = pbVar16[1]; + bVar3 = pbVar16[2]; + pbVar16 = pbVar11 + (uint)(*(int *)(param_1 + 0x1ed8) * 2); + *pbVar16 = (byte)(iVar15 + (uint)bVar1 * 0xab >> 9); + pbVar16[1] = (byte)(((uint)bVar1 + ((uint)bVar4 + (uint)bVar2 + iVar12) * 2) * 0x39 >> 9); + pbVar11 = pbVar11 + 3; + pbVar16[2] = (byte)(((uint)bVar3 + (iVar12 + (uint)bVar5 + (uint)bVar2) * 2) * 0x39 >> 9); + if (pbVar11 == pbVar17) break; + uVar19 = *(uint *)(param_1 + 0x1ed0); + } + } + uVar18 = uVar18 + 2; + } while (uVar18 < *(uint *)(param_1 + 0x1ed4)); + } + return; +} + + +================================================================== + +### FUNC 001105d0 (1436 bytes) name=FUN_001105d0 + +void FUN_001105d0(long param_1) + +{ + void *pvVar1; + byte bVar2; + byte bVar3; + byte bVar4; + byte bVar5; + byte bVar6; + byte bVar7; + byte bVar8; + byte bVar9; + undefined1 uVar10; + uint uVar11; + ulong uVar12; + void *pvVar13; + long lVar14; + byte *pbVar15; + byte *pbVar16; + int iVar17; + size_t __n; + uint uVar18; + void *__src; + uint uVar19; + uint uVar20; + byte *pbVar21; + uint uVar22; + int iVar23; + int iVar24; + uint uVar25; + int iVar26; + byte *pbVar27; + uint local_44; + + uVar25 = 0; + __src = *(void **)(param_1 + 0x298); + uVar11 = *(uint *)(param_1 + 0x1ed0) + 8; + uVar12 = (ulong)uVar11; + pvVar1 = (void *)(((ulong)(uint)((*(int *)(param_1 + 0x1edc) + 3) * *(int *)(param_1 + 0x1ed8)) - + (ulong)((*(int *)(param_1 + 0x1ed4) + 1) * uVar11)) + *(long *)(param_1 + 0x200) + ); + __n = (size_t)*(uint *)(param_1 + 0x1ed0); + pvVar13 = pvVar1; + if (*(int *)(param_1 + 0x1ed4) != 0) { + do { + pvVar13 = memcpy(pvVar13,__src,__n); + uVar11 = *(uint *)(param_1 + 0x1ed0); + iVar17 = (uint)*(byte *)((long)__src + (ulong)(uVar11 - 1)) * 2 - + (uint)*(byte *)((long)__src + (ulong)(uVar11 - 2)); + if (iVar17 < 0) { + iVar17 = 0; + } + uVar10 = 0xff; + if (iVar17 < 0x100) { + uVar10 = (undefined1)iVar17; + } + uVar25 = uVar25 + 1; + *(undefined1 *)((long)pvVar13 + (ulong)uVar11) = uVar10; + __n = (size_t)*(uint *)(param_1 + 0x1ed0); + __src = (void *)((long)__src + __n); + uVar12 = (ulong)(*(uint *)(param_1 + 0x1ed0) + 8); + pvVar13 = (void *)((long)pvVar13 + uVar12); + } while (uVar25 < *(uint *)(param_1 + 0x1ed4)); + } + lVar14 = 0; + if ((int)__n != -1) { + do { + iVar17 = (uint)*(byte *)((long)pvVar13 + (lVar14 - uVar12)) * 2 - + (uint)*(byte *)((long)pvVar13 + lVar14 + uVar12 * -2); + if (iVar17 < 0) { + iVar17 = 0; + } + uVar10 = (undefined1)iVar17; + if (0xff < iVar17) { + uVar10 = 0xff; + } + *(undefined1 *)((long)pvVar13 + lVar14) = uVar10; + lVar14 = lVar14 + 1; + } while (lVar14 != __n + 1); + } + local_44 = 0; + if (*(int *)(param_1 + 0x1ed4) != 0) { + do { + uVar11 = *(uint *)(param_1 + 0x1ed0); + pbVar15 = (byte *)((ulong)((uVar11 + 8) * local_44) + (long)pvVar1); + pbVar27 = (byte *)((ulong)(((local_44 * 5) / 3) * *(int *)(param_1 + 0x1ed8)) + + *(long *)(param_1 + 0x200)); + if (uVar11 / 3 != 0) { + pbVar16 = pbVar15 + (ulong)(uVar11 / 3 - 1) * 3 + 3; + while( true ) { + pbVar21 = pbVar15 + (ulong)uVar11 + 8; + bVar2 = pbVar15[1]; + bVar3 = *pbVar15; + bVar4 = pbVar15[2]; + bVar5 = pbVar15[3]; + bVar6 = pbVar21[1]; + uVar11 = (uint)bVar6; + bVar7 = *pbVar21; + bVar8 = pbVar21[2]; + bVar9 = pbVar21[3]; + iVar17 = (uint)bVar3 * 0x19a; + *pbVar27 = bVar3; + uVar20 = (uint)bVar9; + pbVar27[1] = (byte)((uint)bVar2 * 0x267 + iVar17 >> 10); + pbVar27[2] = (byte)((uint)bVar2 * 0x334 + (uint)bVar4 * 0xcd >> 10); + pbVar27[3] = (byte)((uint)bVar2 * 0xcd + (uint)bVar4 * 0x334 >> 10); + pbVar27[4] = (byte)((uint)bVar4 * 0x267 + (uint)bVar5 * 0x19a >> 10); + pbVar21 = pbVar27 + *(uint *)(param_1 + 0x1ed8); + *pbVar21 = (byte)(iVar17 + (uint)bVar7 * 0x267 >> 10); + iVar23 = (uint)bVar8 * 0x7b; + iVar17 = (uint)bVar6 * 0x7b; + iVar26 = (uint)bVar8 * 0x1ec; + pbVar21[1] = (byte)((uint)bVar3 * 0xa4 + (uint)bVar6 * 0x171 + + ((uint)bVar7 + (uint)bVar2) * 0xf6 >> 10); + pbVar21[2] = (byte)(((uint)bVar4 + (uint)bVar2 * 4 + ((uint)bVar6 + (uint)bVar6 * 2) * 2) + * 0x52 + iVar23 >> 10); + pbVar21[3] = (byte)(iVar26 + iVar17 + ((uint)bVar2 + (uint)bVar4 * 4) * 0x52 >> 10); + pbVar21[4] = (byte)((bVar4 + uVar20) * 0xf6 + (uint)bVar5 * 0xa4 + (uint)bVar8 * 0x171 >> + 10); + pbVar21 = pbVar15 + (*(int *)(param_1 + 0x1ed0) * 2 + 0x10); + bVar2 = pbVar21[1]; + bVar3 = *pbVar21; + uVar25 = (uint)pbVar21[2]; + iVar24 = (uint)bVar2 * 0x7b; + uVar18 = (uint)pbVar21[3]; + pbVar21 = pbVar27 + (uint)(*(int *)(param_1 + 0x1ed8) * 2); + *pbVar21 = (byte)((uint)bVar7 * 0x334 + (uint)bVar3 * 0xcd >> 10); + uVar22 = (uint)bVar7; + pbVar21[1] = (byte)((uint)bVar3 * 0x52 + (uint)bVar6 * 0x1ec + uVar22 * 0x148 + iVar24 >> + 10); + pbVar21[2] = (byte)((uVar25 + ((uint)bVar2 + (uint)bVar8 + uVar11 * 4) * 4) * 0x29 >> 10); + pbVar21[3] = (byte)(((uint)bVar2 + (uVar25 + uVar11 + (uint)bVar8 * 4) * 4) * 0x29 >> 10); + pbVar21[4] = (byte)(iVar26 + uVar20 * 0x148 + uVar18 * 0x52 + uVar25 * 0x7b >> 10); + pbVar21 = pbVar27 + (uint)(*(int *)(param_1 + 0x1ed8) * 3); + uVar19 = (uint)bVar3; + *pbVar21 = (byte)(uVar22 * 0xcd + uVar19 * 0x334 >> 10); + iVar26 = (uint)bVar2 * 0x1ec; + pbVar21[1] = (byte)(uVar19 * 0x148 + uVar22 * 0x52 + iVar17 + iVar26 >> 10); + pbVar21[2] = (byte)(((uint)bVar8 + (uVar25 + uVar11 + (uint)bVar2 * 4) * 4) * 0x29 >> 10); + pbVar21[3] = (byte)((uVar11 + ((uint)bVar2 + (uint)bVar8 + uVar25 * 4) * 4) * 0x29 >> 10); + pbVar21[4] = (byte)(uVar20 * 0x52 + iVar23 + uVar18 * 0x148 + uVar25 * 0x1ec >> 10); + pbVar21 = pbVar15 + (*(int *)(param_1 + 0x1ed0) * 3 + 0x18); + bVar3 = pbVar21[1]; + bVar4 = *pbVar21; + bVar5 = pbVar21[2]; + bVar6 = pbVar21[3]; + pbVar21 = pbVar27 + (uint)(*(int *)(param_1 + 0x1ed8) << 2); + *pbVar21 = (byte)(uVar19 * 0x267 + (uint)bVar4 * 0x19a >> 10); + pbVar15 = pbVar15 + 3; + pbVar21[1] = (byte)((uint)bVar4 * 0xa4 + (uint)bVar2 * 0x171 + (uVar19 + bVar3) * 0xf6 >> + 10); + pbVar27 = pbVar27 + 5; + pbVar21[2] = (byte)(iVar26 + uVar25 * 0x7b + ((uint)bVar5 + (uint)bVar3 * 4) * 0x52 >> 10) + ; + pbVar21[3] = (byte)(uVar25 * 0x1ec + iVar24 + ((uint)bVar3 + (uint)bVar5 * 4) * 0x52 >> 10 + ); + pbVar21[4] = (byte)(uVar25 * 0x171 + (uint)bVar6 * 0xa4 + (bVar5 + uVar18) * 0xf6 >> 10); + if (pbVar15 == pbVar16) break; + uVar11 = *(uint *)(param_1 + 0x1ed0); + } + } + local_44 = local_44 + 3; + } while (local_44 < *(uint *)(param_1 + 0x1ed4)); + } + return; +} + + +================================================================== + +### FUNC 00110b70 (1030 bytes) name=FUN_00110b70 + +ulong FUN_00110b70(long param_1) + +{ + int iVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + byte bVar5; + byte bVar6; + byte bVar7; + int iVar8; + int iVar9; + ulong uVar10; + int iVar11; + long lVar12; + uint uVar13; + long lVar14; + long lVar15; + long lVar16; + int iVar17; + int iVar18; + int iVar19; + int iVar20; + int iVar21; + int local_4c; + int local_48; + + iVar8 = *(int *)(param_1 + 0x1ed0); + iVar9 = *(int *)(param_1 + 0x1ed4); + iVar11 = iVar8 * 2; + lVar14 = *(long *)(param_1 + 0x298); + lVar12 = *(long *)(param_1 + 0x200); + if (iVar9 < 2) { + iVar19 = (iVar8 + -1) * 2; + } + else { + local_48 = 1; + local_4c = 0; + do { + iVar18 = local_4c * iVar8; + iVar19 = 0; + iVar21 = 2; + if (2 < iVar8) { + do { + iVar17 = (iVar19 >> 1) + iVar18; + lVar15 = (long)(iVar19 + iVar18); + pbVar2 = (byte *)(lVar14 + 1 + lVar15); + pbVar3 = (byte *)(lVar14 + 2 + lVar15); + lVar16 = (long)(iVar19 + iVar18 + iVar8); + bVar6 = *pbVar2; + uVar13 = (uint)*(byte *)(lVar14 + lVar15); + *(uint *)(lVar12 + (long)iVar17 * 4) = + ((int)((uint)*pbVar3 + (uint)bVar6) >> 1) * 0x1000000 + + ((int)(uVar13 + bVar6) >> 1) * 0x100 + (uint)bVar6 * 0x10000 + uVar13; + bVar6 = *(byte *)(lVar14 + lVar15); + bVar7 = *pbVar2; + bVar5 = *(byte *)(lVar14 + 1 + lVar16); + *(int *)(lVar12 + (long)(iVar17 + (iVar8 >> 1)) * 4) = + ((int)((uint)*pbVar3 + (uint)bVar7 + (uint)bVar5 + + (uint)*(byte *)(lVar14 + 2 + lVar16)) >> 2) * 0x1000000 + + ((int)((uint)bVar6 + (uint)bVar7 + (uint)*(byte *)(lVar14 + lVar16) + (uint)bVar5) >> + 2) * 0x100 + + ((int)((uint)bVar6 + (uint)*(byte *)(lVar14 + lVar16)) >> 1) + + ((int)((uint)bVar7 + (uint)bVar5) >> 1) * 0x10000; + iVar17 = iVar21 + 2; + iVar19 = iVar21; + iVar21 = iVar17; + } while (iVar17 < iVar8); + } + iVar18 = iVar18 + iVar8 + -2; + iVar19 = local_4c * 2 * iVar8 + iVar8 + -2; + pbVar2 = (byte *)(lVar14 + iVar18); + pbVar3 = (byte *)(lVar14 + 1 + (long)iVar18); + bVar6 = *pbVar2; + *(ushort *)(lVar12 + (long)iVar19 * 2) = + (ushort)bVar6 + (short)(((int)((uint)*pbVar3 + (uint)bVar6) >> 1) << 8); + bVar6 = *pbVar2; + bVar7 = *(byte *)(lVar14 + (iVar18 + iVar8)); + local_4c = local_48; + *(short *)(lVar12 + (long)(iVar19 + iVar8) * 2) = + (short)((int)((uint)bVar6 + (uint)bVar7) >> 1) + + (short)(((int)((uint)*pbVar3 + (uint)bVar6 + (uint)bVar7 + + (uint)*(byte *)(lVar14 + 1 + (long)(iVar18 + iVar8))) >> 2) << 8); + local_48 = local_48 + 1; + } while (iVar9 != local_48); + iVar19 = (iVar8 + -1) * 2; + iVar21 = 0; + iVar18 = 1; + do { + iVar20 = iVar21 * iVar8 + iVar8 + -1; + iVar21 = iVar21 * 2 * iVar11 + iVar19; + pbVar2 = (byte *)(lVar14 + iVar20); + pbVar4 = (byte *)(lVar14 + -1 + (long)iVar20); + *(byte *)(lVar12 + iVar21) = *pbVar2; + pbVar3 = (byte *)(lVar14 + (iVar20 + iVar8)); + *(char *)(lVar12 + 1 + (long)iVar21) = + (char)((int)(uint)*pbVar4 >> 2) + (char)((int)((uint)*pbVar2 + (uint)*pbVar2 * 2) >> 2); + *(char *)(lVar12 + (iVar21 + iVar11)) = (char)((int)((uint)*pbVar3 + (uint)*pbVar2) >> 1); + bVar6 = *pbVar3; + iVar17 = iVar18 + 1; + *(char *)(lVar12 + 1 + (long)(iVar21 + iVar11)) = + (char)((int)((uint)*pbVar2 + (uint)*pbVar2 * 2 + (uint)*pbVar4 + + (uint)*(byte *)(lVar14 + -1 + (long)(iVar20 + iVar8)) + + (uint)bVar6 + (uint)bVar6 * 2) >> 3); + iVar21 = iVar18; + iVar18 = iVar17; + } while (iVar9 != iVar17); + } + iVar21 = iVar8 * (iVar9 + -1); + iVar9 = (iVar9 + -1) * 2; + if (1 < iVar8) { + iVar18 = 0; + iVar17 = 1; + do { + iVar1 = iVar18 + iVar21; + iVar18 = iVar9 * iVar11 + iVar18 * 2; + pbVar2 = (byte *)(lVar14 + iVar1); + *(byte *)(lVar12 + iVar18) = *pbVar2; + pbVar4 = (byte *)(lVar14 + 1 + (long)iVar1); + pbVar3 = (byte *)(lVar14 + (iVar1 - iVar8)); + *(char *)(lVar12 + 1 + (long)iVar18) = (char)((int)((uint)*pbVar4 + (uint)*pbVar2) >> 1); + *(char *)(lVar12 + (iVar18 + iVar11)) = + (char)((int)(uint)*pbVar3 >> 2) + (char)((int)((uint)*pbVar2 + (uint)*pbVar2 * 2) >> 2); + bVar6 = *pbVar4; + iVar20 = iVar17 + 1; + *(char *)(lVar12 + 1 + (long)(iVar18 + iVar11)) = + (char)((int)((uint)*pbVar2 + (uint)*pbVar2 * 2 + (uint)*pbVar3 + + (uint)*(byte *)(lVar14 + 1 + (long)(iVar1 - iVar8)) + + (uint)bVar6 + (uint)bVar6 * 2) >> 3); + iVar18 = iVar17; + iVar17 = iVar20; + } while (iVar8 != iVar20); + } + iVar21 = iVar8 + -1 + iVar21; + iVar19 = iVar19 + iVar9 * iVar11; + lVar14 = (long)iVar21; + lVar12 = (long)iVar19; + *(undefined1 *)(*(long *)(param_1 + 0x200) + lVar12) = + *(undefined1 *)(*(long *)(param_1 + 0x298) + lVar14); + bVar6 = *(byte *)(*(long *)(param_1 + 0x298) + lVar14); + *(char *)(*(long *)(param_1 + 0x200) + 1 + lVar12) = + (char)((int)((uint)bVar6 + (uint)bVar6 * 2 + + (uint)*(byte *)(*(long *)(param_1 + 0x298) + -1 + lVar14)) >> 2); + lVar15 = (long)(iVar11 + iVar19); + bVar6 = *(byte *)(*(long *)(param_1 + 0x298) + lVar14); + *(char *)(*(long *)(param_1 + 0x200) + lVar15) = + (char)((int)((uint)bVar6 + (uint)bVar6 * 2 + + (uint)*(byte *)(*(long *)(param_1 + 0x298) + (long)(iVar21 - iVar8))) >> 2); + lVar14 = *(long *)(param_1 + 0x200); + uVar10 = (long)(int)((uint)*(byte *)(lVar14 + lVar15) + + (uint)*(byte *)(lVar14 + lVar12) + (uint)*(byte *)(lVar14 + 1 + lVar12)) * + 0x55555556; + *(char *)(lVar14 + 1 + lVar15) = (char)(uVar10 >> 0x20); + return uVar10 & 0xffffffff; +} + + +================================================================== + +### FUNC 00110f90 (668 bytes) name=FUN_00110f90 + +void FUN_00110f90(long param_1) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + long lVar5; + int iVar6; + float fVar7; + float fVar8; + uint uVar9; + undefined1 uVar10; + ulong uVar11; + ulong uVar12; + int iVar13; + ulong uVar14; + uint uVar15; + uint uVar16; + int iVar17; + float fVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + + fVar8 = DAT_00131e4c; + fVar7 = DAT_00131e20; + uVar1 = *(uint *)(param_1 + 0x1ed0); + uVar2 = *(uint *)(param_1 + 0x1ed4); + uVar3 = *(uint *)(param_1 + 0x1ed8); + uVar4 = *(uint *)(param_1 + 0x1edc); + if (uVar3 != 0) { + uVar12 = 0; + fVar22 = (float)uVar1 - DAT_00131e20; + do { + iVar17 = (int)uVar12; + fVar21 = (float)uVar12 * ((float)uVar1 / (float)uVar3); + fVar20 = fVar22; + if (fVar21 <= fVar22) { + fVar20 = fVar21; + } + iVar13 = (int)(long)fVar20; + uVar14 = (long)fVar20 & 0xffffffff; + if (uVar4 != 0) { + uVar9 = 0; + fVar21 = (float)uVar2 - fVar7; + do { + fVar18 = (float)uVar9 * ((float)uVar2 / (float)uVar4); + fVar19 = fVar21; + if (fVar18 <= fVar21) { + fVar19 = fVar18; + } + uVar11 = (ulong)fVar19; + iVar6 = (int)uVar11; + uVar15 = iVar6 + 1; + if (iVar13 + 1U < uVar1) { + if (uVar15 < uVar2) { + lVar5 = *(long *)(param_1 + 0x298); + uVar15 = uVar1 * iVar6 + iVar13; + fVar18 = fVar20 - (float)uVar14; + fVar19 = fVar19 - (float)(uVar11 & 0xffffffff); + uVar15 = (uint)(long)(((float)*(byte *)(lVar5 + (ulong)uVar15) * (fVar7 - fVar18) + + (float)*(byte *)(lVar5 + (ulong)(uVar15 + 1)) * fVar18) * + (fVar7 - fVar19) + + ((float)*(byte *)(lVar5 + (ulong)(uVar15 + uVar1)) * + (fVar7 - fVar18) + + (float)*(byte *)(lVar5 + (ulong)(uVar15 + uVar1 + 1)) * fVar18) + * fVar19 + fVar8); + } + else { + if (uVar2 != uVar15) goto LAB_00111080; + uVar15 = iVar6 * uVar1 + iVar13; + uVar16 = (uint)*(byte *)(*(long *)(param_1 + 0x298) + (ulong)uVar15); + uVar15 = (uint)(long)((float)uVar16 + + (float)(int)(*(byte *)(*(long *)(param_1 + 0x298) + + (ulong)(uVar15 + 1)) - uVar16) * + (fVar20 - (float)uVar14) + fVar8); + } +LAB_001111bd: + uVar10 = (undefined1)uVar15; + if (0xff < uVar15) { + uVar10 = 0xff; + } + *(undefined1 *)(*(long *)(param_1 + 0x200) + uVar12) = uVar10; + } + else { + if ((uVar1 == iVar13 + 1U) && (uVar15 < uVar2)) { + uVar16 = (uint)*(byte *)(*(long *)(param_1 + 0x298) + (ulong)(uVar1 * iVar6 + iVar13)) + ; + uVar15 = (uint)(long)((float)uVar16 + + (float)(int)(*(byte *)(*(long *)(param_1 + 0x298) + + (ulong)(uVar15 * uVar1 + iVar13)) - uVar16 + ) * (fVar19 - (float)(uVar11 & 0xffffffff)) + fVar8) + ; + goto LAB_001111bd; + } +LAB_00111080: + *(undefined1 *)(*(long *)(param_1 + 0x200) + uVar12) = + *(undefined1 *)(*(long *)(param_1 + 0x298) + (ulong)(iVar6 * uVar1 + iVar13)); + } + uVar9 = uVar9 + 1; + uVar12 = (ulong)((int)uVar12 + uVar3); + } while (uVar9 != uVar4); + } + uVar9 = iVar17 + 1; + uVar12 = (ulong)uVar9; + } while (uVar9 != uVar3); + } + return; +} + + +================================================================== + +### FUNC 00111240 (464 bytes) name=FUN_00111240 + +void FUN_00111240(long param_1,int param_2) + +{ + int iVar1; + uint uVar2; + uint uVar3; + + if (param_2 == 0) { + if (*(int *)(param_1 + 0x214) == 0) { + return; + } + } + else { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x218)); + if (*(int *)(param_1 + 0x214) == 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return; + } + } + FUN_0010be80(param_1); + if (((*(int *)(param_1 + 0x1f4c) != 0) && (*(int *)(param_1 + 0x2c) != 0)) && + ((*(int *)(param_1 + 0x28) == 0 || (*(int *)(param_1 + 0x10) != 0)))) { + iVar1 = *(int *)(param_1 + 0x2c) * 8; + if (*(int *)(param_1 + 0x68) == 0) { + if (iVar1 != 0) { + FUN_0010f400(param_1); + } + } + else if (iVar1 != 0) { + FUN_0010f730(param_1); + } + } + if (*(long *)(param_1 + 0x1ed8) == *(long *)(param_1 + 0x1ed0)) { + memcpy(*(void **)(param_1 + 0x200),*(void **)(param_1 + 0x298), + (ulong)*(uint *)(param_1 + 0x77f8)); + } + else { + uVar2 = *(uint *)(param_1 + 0x1ed0); + uVar3 = *(uint *)(param_1 + 0x1ed8); + if ((uVar3 == uVar2 * 2) && (*(int *)(param_1 + 0x1edc) == *(int *)(param_1 + 0x1ed4) * 2)) { + FUN_00110b70(param_1); + } + else if ((uVar3 * 2 == uVar2 * 3) && + (*(int *)(param_1 + 0x1edc) * 2 == *(int *)(param_1 + 0x1ed4) * 3)) { + FUN_00110320(param_1); + } + else if ((uVar3 * 3 == uVar2 * 5) && + (*(int *)(param_1 + 0x1edc) * 3 == *(int *)(param_1 + 0x1ed4) * 5)) { + FUN_001105d0(param_1); + } + else if ((uVar2 < uVar3) && (*(uint *)(param_1 + 0x1ed4) < *(uint *)(param_1 + 0x1edc))) { + FUN_00110f90(param_1); + } + } + if (param_2 == 0) { + return; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x218)); + return; +} + + +================================================================== + +### FUNC 00111440 (266 bytes) name=FUN_00111440 + +void FUN_00111440(long param_1,int param_2) + +{ + int iVar1; + long lVar2; + undefined2 *puVar3; + int iVar4; + long lVar5; + undefined2 *puVar6; + undefined2 *puVar7; + int iVar8; + undefined2 *puVar9; + int iVar10; + + if (param_2 == 1) { + memcpy(*(void **)(param_1 + 0x290),*(void **)(param_1 + 0x268), + (ulong)*(uint *)(param_1 + 0x77f8) * 2); + iVar4 = *(int *)(param_1 + 0x1ed4); + iVar10 = *(int *)(param_1 + 0x1ed0); + puVar7 = *(undefined2 **)(param_1 + 0x290); + iVar1 = (iVar4 + -1) * iVar10; + puVar9 = (undefined2 *)(*(long *)(param_1 + 0x268) + (long)iVar1 * 2); + if (iVar10 != 0) { + iVar8 = iVar4 + 3; + if (-1 < iVar4) { + iVar8 = iVar4; + } + iVar1 = iVar1 + iVar10; + iVar8 = iVar8 >> 2; + lVar2 = (long)iVar10; + lVar5 = (ulong)(iVar8 - 1) + 1; + do { + puVar3 = puVar7; + puVar6 = puVar9; + iVar4 = iVar8; + if (iVar8 != 0) { + do { + *puVar6 = *puVar3; + puVar6[-lVar2] = puVar3[1]; + puVar6[lVar2 * -2] = puVar3[2]; + puVar6[lVar2 * -3] = puVar3[3]; + iVar4 = iVar4 + -1; + puVar3 = puVar3 + 4; + puVar6 = puVar6 + lVar2 * -4; + } while (iVar4 != 0); + puVar7 = puVar7 + lVar5 * 4; + puVar9 = (undefined2 *)((long)puVar9 + lVar2 * -8 * lVar5); + } + puVar9 = puVar9 + (long)iVar1 + 1; + iVar10 = iVar10 + -1; + } while (iVar10 != 0); + } + return; + } + return; +} + + +================================================================== + +### FUNC 00111560 (444 bytes) name=FUN_00111560 + +void FUN_00111560(long param_1,uint param_2) + +{ + void *__dest; + int iVar1; + uint uVar2; + size_t __n; + uint *puVar3; + uint *puVar4; + int iVar5; + uint *puVar6; + int iVar7; + void *__src; + long lVar8; + int iVar9; + long lVar10; + undefined1 local_838 [2056]; + + iVar1 = *(int *)(param_1 + 0x1ed0); + iVar7 = *(int *)(param_1 + 0x1ed4); + if (((param_2 & 2) != 0) && (0 < iVar7 / 2)) { + lVar10 = 0; + __n = (long)iVar1 * 2; + lVar8 = (long)((iVar7 + -1) * iVar1) * 2; + iVar9 = 0; + do { + iVar9 = iVar9 + 1; + __dest = (void *)(*(long *)(param_1 + 0x268) + lVar10); + __src = (void *)(*(long *)(param_1 + 0x268) + lVar8); + lVar10 = lVar10 + __n; + __memcpy_chk(local_838,__dest,__n,0x800); + memcpy(__dest,__src,__n); + memcpy(__src,local_838,__n); + lVar8 = lVar8 + (long)-iVar1 * 2; + } while (iVar9 != iVar7 / 2); + } + if (((param_2 & 1) != 0) && (iVar7 = iVar7 + -1, -1 < iVar7)) { + iVar9 = iVar1 + 3; + if (-1 < iVar1) { + iVar9 = iVar1; + } + lVar8 = (long)((iVar9 >> 2) * 2); + puVar6 = (uint *)(*(long *)(param_1 + 0x268) + -4 + ((long)(iVar1 * iVar7) + lVar8 * 2) * 2); + do { + puVar3 = puVar6 + (1 - lVar8); + puVar4 = puVar6; + for (iVar5 = iVar9 >> 2; iVar5 != 0; iVar5 = iVar5 + -1) { + uVar2 = *puVar4; + *puVar4 = *puVar3 >> 0x10 | *puVar3 << 0x10; + *puVar3 = uVar2 >> 0x10 | uVar2 << 0x10; + puVar3 = puVar3 + 1; + puVar4 = puVar4 + -1; + } + iVar7 = iVar7 + -1; + puVar6 = (uint *)((long)puVar6 + (long)-iVar1 * 2); + } while (iVar7 != -1); + } + return; +} + + +================================================================== + +### FUNC 00111720 (1221 bytes) name=FUN_00111720 + +undefined8 FUN_00111720(long param_1,void *param_2,int param_3,int param_4,int param_5,int param_6) + +{ + pthread_mutex_t *__mutex; + ushort uVar1; + uint uVar2; + undefined2 uVar3; + uint uVar4; + long lVar5; + long lVar6; + int iVar7; + ushort *puVar8; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + pthread_mutex_lock(__mutex); + lVar5 = FUN_00113bc0(); + if ((*(int *)(param_1 + 0x208) == 0) || (param_2 == (void *)0x0)) { +LAB_00111824: + pthread_mutex_unlock(__mutex); + return 0; + } + if (param_3 == 0) { + if (*(int *)(param_1 + 0x20c) == 0) goto LAB_00111824; + *(undefined4 *)(param_1 + 0x1f4c) = 0; + *(undefined4 *)(param_1 + 0x1f50) = 0; + *(undefined4 *)(param_1 + 0x1f54) = 0; + FUN_0010eab0(param_1); + if (*(int *)(param_1 + 0x1f14) != 0) goto LAB_00111855; + if ((*(int *)(param_1 + 0x1f18) == 0) || (*(int *)(param_1 + 0x1f0c) == 0)) { + FUN_0010b620(param_1); + pthread_mutex_unlock(__mutex); + return 0; + } + *(undefined4 *)(param_1 + 0x1f18) = 0; + *(undefined8 *)(param_1 + 0x268) = *(undefined8 *)(param_1 + 0x260); + } + else { + *(undefined4 *)(param_1 + 0x1f4c) = 0; + *(undefined4 *)(param_1 + 0x1f50) = 0; + *(undefined4 *)(param_1 + 0x1f54) = 0; + if (param_3 != 1) goto LAB_00111824; + memcpy(*(void **)(param_1 + 600),param_2,(ulong)*(uint *)(param_1 + 0x77f8) * 2); +LAB_00111855: + *(undefined4 *)(param_1 + 0x1f14) = 0; + *(undefined8 *)(param_1 + 0x268) = *(undefined8 *)(param_1 + 600); + } + *(undefined4 *)(param_1 + 0x4b60) = 0; + if (*(int *)(param_1 + 0x84) != 0) { + FUN_00111440(param_1); + } + if (*(int *)(param_1 + 0x80) != 0) { + FUN_00111560(param_1); + } + if ((*(int *)(param_1 + 0x58) == 0) && (param_4 == 0)) { + if (*(int *)(param_1 + 100) != 0) { + iVar7 = *(int *)(param_1 + 0x77f8); + puVar8 = *(ushort **)(param_1 + 0x268); + uVar1 = *puVar8; + uVar4 = (uint)uVar1; + if (iVar7 != 0) { + while( true ) { + if ((ushort)uVar4 < uVar1) { + uVar4 = (uint)uVar1; + } + iVar7 = iVar7 + -1; + if (iVar7 == 0) break; + uVar1 = puVar8[1]; + puVar8 = puVar8 + 1; + } + } + *(uint *)(param_1 + 0x1f20) = uVar4; + } + *(undefined4 *)(param_1 + 0x1f48) = 0; + goto LAB_001118f3; + } + if ((param_5 == 0) && (1 < *(uint *)(param_1 + 0x1ef0))) { + uVar3 = FUN_0010a4b0(param_1,30000,*(undefined4 *)(param_1 + 0x38)); + FUN_0011a140(param_1 + 0x1e50,*(undefined8 *)(param_1 + 0x268),uVar3); + *(undefined4 *)(param_1 + 0x1f48) = 1; + } + else { + *(undefined4 *)(param_1 + 0x1f48) = 0; + } + if (*(int *)(param_1 + 0x210) != 0) { + FUN_0010eda0(param_1); + } + if (param_6 != 0) { + iVar7 = *(int *)(param_1 + 0x1ef8); + if (iVar7 == 1) { + FUN_0010fa90(param_1); + } + else if (iVar7 == 2) { +LAB_00111bbf: + FUN_0010fc40(param_1); + } + else if (iVar7 == 3) { + FUN_0010fa90(param_1); + FUN_0010fc40(param_1); + } + else if (iVar7 == 4) { + FUN_0010fc40(param_1); + goto LAB_00111bbf; + } + } + FUN_001089d0(param_1,*(undefined8 *)(param_1 + 0x268)); + FUN_0010be80(param_1); + if (((*(int *)(param_1 + 0x1f4c) != 0) && (*(int *)(param_1 + 0x2c) != 0)) && + ((*(int *)(param_1 + 0x28) == 0 || (*(int *)(param_1 + 0x10) != 0)))) { + iVar7 = *(int *)(param_1 + 0x2c) * 8; + if (*(int *)(param_1 + 0x68) == 0) { + if (iVar7 != 0) { + FUN_0010f400(param_1); + } + } + else if (iVar7 != 0) { + FUN_0010f730(param_1); + } + } + if (param_4 != 0) { + if (*(long *)(param_1 + 0x1ed8) == *(long *)(param_1 + 0x1ed0)) { + memcpy(*(void **)(param_1 + 0x200),*(void **)(param_1 + 0x298), + (ulong)*(uint *)(param_1 + 0x77f8)); + } + else { + uVar4 = *(uint *)(param_1 + 0x1ed0); + uVar2 = *(uint *)(param_1 + 0x1ed8); + if ((uVar2 == uVar4 * 2) && (*(int *)(param_1 + 0x1edc) == *(int *)(param_1 + 0x1ed4) * 2)) { + FUN_00110b70(param_1); + } + else if ((uVar2 * 2 == uVar4 * 3) && + (*(int *)(param_1 + 0x1edc) * 2 == *(int *)(param_1 + 0x1ed4) * 3)) { + FUN_00110320(param_1); + } + else if ((uVar2 * 3 == uVar4 * 5) && + (*(int *)(param_1 + 0x1edc) * 3 == *(int *)(param_1 + 0x1ed4) * 5)) { + FUN_001105d0(param_1); + } + else if ((uVar4 < uVar2) && (*(uint *)(param_1 + 0x1ed4) < *(uint *)(param_1 + 0x1edc))) { + FUN_00110f90(param_1); + } + } + lVar6 = FUN_00113bc0(); + *(long *)(param_1 + 0x1f58) = lVar6 - lVar5; + FUN_0010b620(param_1); + *(undefined4 *)(param_1 + 0x214) = 1; + pthread_mutex_unlock(__mutex); + return 3; + } +LAB_001118f3: + lVar6 = FUN_00113bc0(); + *(long *)(param_1 + 0x1f58) = lVar6 - lVar5; + FUN_0010b620(param_1); + *(undefined4 *)(param_1 + 0x214) = 1; + pthread_mutex_unlock(__mutex); + return 1; +} + + +================================================================== + +### FUNC 00111c30 (1646 bytes) name=FUN_00111c30 + +/* WARNING: Type propagation algorithm not settling */ + +void FUN_00111c30(undefined8 *param_1) + +{ + int iVar1; + ulong uVar2; + uint uVar3; + ulong uVar4; + char *pcVar5; + undefined8 *puVar6; + undefined8 *puVar7; + long in_FS_OFFSET; + bool bVar8; + byte bVar9; + pthread_mutexattr_t apStack_38 [2]; + long local_30; + + bVar9 = 0; + local_30 = *(long *)(in_FS_OFFSET + 0x28); + *param_1 = &PTR_FUN_0033ecf0; + iVar1 = pthread_mutexattr_init(apStack_38); + if (iVar1 == 0) { + iVar1 = pthread_mutexattr_settype(apStack_38,1); + if (iVar1 == 0) { + iVar1 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x43),apStack_38); + if (iVar1 == 0) { + iVar1 = pthread_mutexattr_destroy(apStack_38); + if (iVar1 == 0) { + FUN_00106a00(param_1 + 0x3b8); + FUN_00106a00(param_1 + 0x3be); + FUN_00106a00(param_1 + 0x3c4); + FUN_00119e90(param_1 + 0x3ca); + FUN_00119e90(param_1 + 0x3d2); + puVar7 = param_1 + 1; + param_1[0x3da] = 0; + param_1[0x3db] = 0; + param_1[0x3dc] = 0; + param_1[0x3dd] = 0; + uVar4 = 0xac; + iVar1 = 0xac; + bVar8 = ((ulong)puVar7 & 1) != 0; + param_1[0x3de] = 0; + if (bVar8) { + puVar7 = (undefined8 *)((long)param_1 + 9); + *(undefined1 *)(param_1 + 1) = 0; + uVar4 = 0xab; + iVar1 = 0xab; + } + if (((ulong)puVar7 & 2) == 0) { + uVar3 = (uint)uVar4; + } + else { + uVar3 = iVar1 - 2; + uVar4 = (ulong)uVar3; + *(undefined2 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 2); + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar4 = (ulong)(uVar3 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar2 = uVar4 >> 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar9 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 2); + } + if (bVar8) { + *(undefined1 *)puVar7 = 0; + } + param_1[0xeff] = 0; + *(undefined4 *)(param_1 + 0xf00) = 0; + memset(param_1 + 0x3e1,0,0x2c78); + memset(param_1 + 0x970,0,0x2c78); + puVar7 = param_1 + 0x265; + uVar4 = 0x438; + iVar1 = 0x438; + bVar8 = ((ulong)puVar7 & 1) != 0; + if (bVar8) { + puVar7 = (undefined8 *)((long)param_1 + 0x1329); + *(undefined1 *)(param_1 + 0x265) = 0; + uVar4 = 0x437; + iVar1 = 0x437; + } + puVar6 = puVar7; + if (((ulong)puVar7 & 2) != 0) { + puVar6 = (undefined8 *)((long)puVar7 + 2); + uVar4 = (ulong)(iVar1 - 2); + *(undefined2 *)puVar7 = 0; + } + if (((ulong)puVar6 & 4) != 0) { + *(undefined4 *)puVar6 = 0; + uVar4 = (ulong)((int)uVar4 - 4); + puVar6 = (undefined8 *)((long)puVar6 + 4); + } + for (uVar2 = uVar4 >> 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *puVar6 = 0; + puVar6 = puVar6 + (ulong)bVar9 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar6 = 0; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)puVar6 = 0; + puVar6 = (undefined8 *)((long)puVar6 + 2); + } + if (bVar8) { + *(undefined1 *)puVar6 = 0; + } + puVar7 = param_1 + 0x2ec; + uVar4 = 0x65c; + iVar1 = 0x65c; + bVar8 = ((ulong)puVar7 & 1) != 0; + if (bVar8) { + puVar7 = (undefined8 *)((long)param_1 + 0x1761); + *(undefined1 *)(param_1 + 0x2ec) = 0; + uVar4 = 0x65b; + iVar1 = 0x65b; + } + puVar6 = puVar7; + if (((ulong)puVar7 & 2) != 0) { + puVar6 = (undefined8 *)((long)puVar7 + 2); + uVar4 = (ulong)(iVar1 - 2); + *(undefined2 *)puVar7 = 0; + } + if (((ulong)puVar6 & 4) != 0) { + *(undefined4 *)puVar6 = 0; + uVar4 = (ulong)((int)uVar4 - 4); + puVar6 = (undefined8 *)((long)puVar6 + 4); + } + for (uVar2 = uVar4 >> 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *puVar6 = 0; + puVar6 = puVar6 + (ulong)bVar9 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar6 = 0; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)puVar6 = 0; + puVar6 = (undefined8 *)((long)puVar6 + 2); + } + if (bVar8) { + *(undefined1 *)puVar6 = 0; + } + puVar7 = (undefined8 *)((long)param_1 + 0xb4); + param_1[0x3df] = 0; + *(undefined4 *)(param_1 + 0x3e0) = 0; + uVar4 = 0x2c; + iVar1 = 0x2c; + bVar8 = ((ulong)puVar7 & 1) != 0; + if (bVar8) { + puVar7 = (undefined8 *)((long)param_1 + 0xb5); + *(undefined1 *)((long)param_1 + 0xb4) = 0; + uVar4 = 0x2b; + iVar1 = 0x2b; + } + if (((ulong)puVar7 & 2) == 0) { + uVar3 = (uint)uVar4; + puVar6 = puVar7; + } + else { + puVar6 = (undefined8 *)((long)puVar7 + 2); + uVar3 = iVar1 - 2; + uVar4 = (ulong)uVar3; + *(undefined2 *)puVar7 = 0; + } + if (((ulong)puVar6 & 4) != 0) { + *(undefined4 *)puVar6 = 0; + uVar4 = (ulong)(uVar3 - 4); + puVar6 = (undefined8 *)((long)puVar6 + 4); + } + for (uVar2 = uVar4 >> 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *puVar6 = 0; + puVar6 = puVar6 + (ulong)bVar9 * -2 + 1; + } + if ((uVar4 & 4) != 0) { + *(undefined4 *)puVar6 = 0; + puVar6 = (undefined8 *)((long)puVar6 + 4); + } + if ((uVar4 & 2) != 0) { + *(undefined2 *)puVar6 = 0; + puVar6 = (undefined8 *)((long)puVar6 + 2); + } + if (bVar8) { + *(undefined1 *)puVar6 = 0; + } + *(undefined4 *)((long)param_1 + 0xb4) = 0x41200000; + *(undefined4 *)(param_1 + 0x17) = 0x3f800000; + *(undefined4 *)((long)param_1 + 0xbc) = 0x41a00000; + *(undefined4 *)(param_1 + 0x18) = 0x3ecccccd; + *(undefined4 *)((long)param_1 + 0xc4) = 0x41a00000; + *(undefined4 *)(param_1 + 0x19) = 0; + *(undefined4 *)((long)param_1 + 0xcc) = 0; + *(undefined4 *)(param_1 + 0x1a) = 0; + *(undefined4 *)((long)param_1 + 0xd4) = 0; + *(undefined4 *)(param_1 + 0x1b) = 0x3f7fa57f; + *(undefined4 *)((long)param_1 + 0xdc) = 0x3f800000; + *(undefined4 *)(param_1 + 0x41) = 0; + *(undefined4 *)((long)param_1 + 0x20c) = 0; + *(undefined4 *)((long)param_1 + 0x214) = 0; + *(undefined4 *)(param_1 + 0x42) = 0; + param_1[0x48] = 0; + param_1[0x49] = 0; + param_1[0x4a] = 0; + param_1[0x4b] = 0; + param_1[0x4c] = 0; + param_1[0x4d] = 0; + param_1[0x4e] = 0; + param_1[0x4f] = 0; + param_1[0x50] = 0; + param_1[0x53] = 0; + param_1[0x54] = 0; + param_1[0x55] = 0; + param_1[0x51] = 0; + param_1[0x52] = 0; + *(undefined4 *)((long)param_1 + 0x7804) = 8; + *(undefined4 *)(param_1 + 0xf01) = 0xffff3cb0; + *(undefined4 *)((long)param_1 + 0x780c) = 3; + *(undefined4 *)(param_1 + 0xf02) = 0; + *(undefined4 *)((long)param_1 + 0x7814) = 0; + param_1[0x40] = 0; + FUN_001079d0(param_1,0); + FUN_00109d40(param_1,0); + if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + puVar7 = (undefined8 *)__cxa_allocate_exception(8); + pcVar5 = "pthread_mutexattr_destroy failed\n"; + } + else { + puVar7 = (undefined8 *)__cxa_allocate_exception(8); + pcVar5 = "pthread_mutex_init failed\n"; + } + } + else { + puVar7 = (undefined8 *)__cxa_allocate_exception(8); + pcVar5 = "pthread_mutexattr_settype failed\n"; + } + } + else { + puVar7 = (undefined8 *)__cxa_allocate_exception(8); + pcVar5 = "pthread_mutexattr_init failed\n"; + } + *puVar7 = pcVar5; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar7,&PTR_vtable_0033ec10,0); +} + + +================================================================== + +### FUNC 00112370 (125 bytes) name=FUN_00112370 + +void FUN_00112370(undefined8 *param_1) + +{ + undefined8 *puVar1; + + *param_1 = &PTR_FUN_0033ecf0; + FUN_001071e0(); + FUN_00119e10(param_1 + 0x3d2); + puVar1 = param_1 + 0x3ca; + FUN_00119e10(puVar1); + do { + puVar1 = puVar1 + -6; + (**(code **)*puVar1)(puVar1); + } while (param_1 + 0x3be != puVar1); + FUN_00106990(param_1 + 0x3b8); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x43)); + return; +} + + +================================================================== + +### FUNC 00112460 (18 bytes) name=FUN_00112460 + +void FUN_00112460(void *param_1) + +{ + FUN_00112370(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00112480 (637 bytes) name=FUN_00112480 + +undefined8 FUN_00112480(long param_1,int param_2,long param_3) + +{ + pthread_mutex_t *__mutex; + int *piVar1; + void *__src; + void *__dest; + undefined8 uVar2; + ulong __n; + uint local_84; + long local_80; + undefined2 local_78; + int local_76; + undefined2 local_72; + undefined2 local_70; + undefined4 local_6e; + undefined2 local_68; + undefined2 local_66; + undefined2 local_62; + undefined2 local_60; + undefined2 local_5e; + undefined2 local_5c; + undefined1 local_58 [40]; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + FUN_001161f0(local_58,0x100); + pthread_mutex_lock(__mutex); + if ((*(int *)(param_1 + 0x208) == 0) || (*(int *)(param_1 + 0x214) == 0)) { + uVar2 = 0; + pthread_mutex_unlock(__mutex); + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffa; + } + else { + if (param_2 == 1) { + local_84 = *(uint *)(param_1 + 0x77fc); + __src = *(void **)(param_1 + 0x200); + local_80 = param_1 + 0xad8; + } + else if (param_2 == 2) { + local_84 = *(uint *)(param_1 + 0x7800); + __src = *(void **)(param_1 + 0x2a8); + local_80 = param_1 + 0xf00; + } + else { + if (param_2 != 0) { + uVar2 = 0; + pthread_mutex_unlock(__mutex); + piVar1 = __errno_location(); + *piVar1 = -0x1b51ffff; + goto LAB_00112515; + } + local_84 = *(uint *)(param_1 + 0x77f8); + local_80 = param_1 + 0x6b0; + __src = (void *)FUN_00108dc0(param_1); + } + if (__src == (void *)0x0) { + uVar2 = 0; + pthread_mutex_unlock(__mutex); + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffd; + } + else { + __n = (ulong)local_84; + __dest = operator_new__(__n); + if (__dest == (void *)0x0) { + uVar2 = 0; + pthread_mutex_unlock(__mutex); + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffe; + } + else { + memcpy(__dest,__src,__n); + pthread_mutex_unlock(__mutex); + if (param_3 == 0) { + FUN_00113c20(&local_68); + FUN_00116490(local_58,"%d-%d-%d %d-%d-%d.bmp",local_68,local_66,local_62,local_60,local_5e + ,local_5c); + } + else { + FUN_00116630(local_58,param_3); + } + local_78 = 0x4d42; + local_72 = 0; + local_70 = 0; + local_6e = 0x436; + local_76 = local_84 + 0x436; + uVar2 = FUN_00116550(local_58); + FUN_00106fb0(&local_68,uVar2,0); + FUN_001070c0(&local_68,&local_78,0xe,1); + FUN_001070c0(&local_68,local_80,0x428,1); + FUN_001070c0(&local_68,__dest,__n,1); + FUN_00106d80(&local_68); + uVar2 = 1; + operator_delete__(__dest); + } + } + } +LAB_00112515: + FUN_00116360(local_58); + return uVar2; +} + + +================================================================== + +### FUNC 00112770 (963 bytes) name=FUN_00112770 + +undefined8 FUN_00112770(long param_1,undefined4 param_2,long param_3) + +{ + pthread_mutex_t *__mutex; + void *__dest; + undefined8 uVar1; + void *__src; + int *piVar2; + ulong __n; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74 [3]; + undefined2 local_68; + undefined2 local_66; + undefined2 local_62; + undefined2 local_60; + undefined2 local_5e; + undefined2 local_5c; + undefined1 local_58 [40]; + + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + FUN_001161f0(local_58,0x100); + local_78 = 0; + local_74[0] = 0; + pthread_mutex_lock(__mutex); + if ((*(int *)(param_1 + 0x208) == 0) || (*(int *)(param_1 + 0x214) == 0)) { + uVar1 = 0; + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + goto LAB_00112805; + } + switch(param_2) { + case 3: + local_80 = *(undefined4 *)(param_1 + 0x1ed0); + __src = *(void **)(param_1 + 0x1dd0); + local_7c = *(undefined4 *)(param_1 + 0x1ed4); + local_78 = *(undefined4 *)(param_1 + 0x40); + local_74[0] = *(undefined4 *)(param_1 + 0x3c); + if (*(int *)(param_1 + 0x1dec) != 0) { + __n = (ulong)(uint)(*(int *)(param_1 + 0x77f8) * 2); + break; + } + goto LAB_00112981; + case 4: + __src = *(void **)(param_1 + 0x270); + __n = (ulong)(uint)(*(int *)(param_1 + 0x77f8) * 2); + local_80 = *(undefined4 *)(param_1 + 0x1ed0); + local_7c = *(undefined4 *)(param_1 + 0x1ed4); + local_78 = *(undefined4 *)(param_1 + 0x40); + local_74[0] = *(undefined4 *)(param_1 + 0x3c); + break; + case 5: + __src = *(void **)(param_1 + 0x240); + __n = (ulong)(uint)(*(int *)(param_1 + 0x77f8) * 2); + local_80 = *(undefined4 *)(param_1 + 0x1ed0); + local_7c = *(undefined4 *)(param_1 + 0x1ed4); + local_78 = *(undefined4 *)(param_1 + 0x48); + local_74[0] = *(undefined4 *)(param_1 + 0x44); + break; + case 6: + __src = *(void **)(param_1 + 0x248); + __n = (ulong)(uint)(*(int *)(param_1 + 0x77f8) * 4); + local_80 = *(undefined4 *)(param_1 + 0x1ed0); + local_7c = *(undefined4 *)(param_1 + 0x1ed4); + local_78 = *(undefined4 *)(param_1 + 0x48); + local_74[0] = *(undefined4 *)(param_1 + 0x44); + break; + case 7: + __src = *(void **)(param_1 + 0x268); + __n = (ulong)(uint)(*(int *)(param_1 + 0x77f8) * 2); + local_80 = *(undefined4 *)(param_1 + 0x1ed0); + local_7c = *(undefined4 *)(param_1 + 0x1ed4); + local_78 = *(undefined4 *)(param_1 + 0x48); + local_74[0] = *(undefined4 *)(param_1 + 0x44); + break; + case 8: + __src = (void *)(param_1 + 0x2360); + goto LAB_00112837; + case 9: + __src = (void *)(param_1 + 0x1f60); +LAB_00112837: + local_7c = 1; + local_80 = 0x100; + __n = 0x400; + goto LAB_0011283d; + case 10: + __n = (ulong)(uint)(*(int *)(param_1 + 0x77f8) * 2); + local_80 = *(undefined4 *)(param_1 + 0x1ed0); + local_7c = *(undefined4 *)(param_1 + 0x1ed4); + local_78 = *(undefined4 *)(param_1 + 0x48); + local_74[0] = *(undefined4 *)(param_1 + 0x44); + __src = (void *)FUN_0011a270(param_1 + 0x1e90); + break; + default: + uVar1 = 0; + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + goto LAB_00112805; + } + if (__src == (void *)0x0) { +LAB_00112981: + uVar1 = 0; + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffd; + } + else { +LAB_0011283d: + __dest = operator_new__(__n); + if (__dest == (void *)0x0) { + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffe; + uVar1 = 0; + } + else { + memcpy(__dest,__src,__n); + pthread_mutex_unlock(__mutex); + if (param_3 == 0) { + FUN_00113c20(&local_68); + FUN_00116490(local_58,"%d-%02d-%02d %02d-%02d-%02d.raw",local_68,local_66,local_62,local_60, + local_5e,local_5c); + } + else { + FUN_00116630(local_58,param_3); + } + uVar1 = FUN_00116550(local_58); + FUN_00106fb0(&local_68,uVar1,0); + FUN_001070c0(&local_68,&local_80,4,1); + FUN_001070c0(&local_68,&local_7c,4,1); + FUN_001070c0(&local_68,&local_78,4,1); + FUN_001070c0(&local_68,local_74,4,1); + FUN_001070c0(&local_68,__dest,__n,1); + FUN_00106d80(&local_68); + uVar1 = 1; + operator_delete__(__dest); + } + } +LAB_00112805: + FUN_00116360(local_58); + return uVar1; +} + + +================================================================== + +### FUNC 00112bc0 (3732 bytes) name=FUN_00112bc0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_00112bc0(long param_1,char *param_2) + +{ + pthread_mutex_t *__mutex; + int iVar1; + undefined *puVar2; + bool bVar3; + int iVar4; + undefined4 uVar5; + int iVar6; + uint uVar7; + int *piVar8; + int *piVar9; + long lVar10; + long lVar11; + ulong uVar12; + void *pvVar13; + int *piVar14; + ostream *poVar15; + long lVar16; + uint uVar17; + ulong uVar18; + long lVar19; + long lVar20; + ulong uVar21; + undefined4 *puVar22; + char *pcVar23; + undefined8 *puVar24; + undefined8 *puVar25; + undefined8 *puVar26; + undefined8 *puVar27; + char *pcVar28; + undefined8 *puVar29; + bool bVar30; + byte bVar31; + int local_1c8; + uint local_1c0; + int local_194; + int local_190; + uint local_18c; + undefined4 local_188; + undefined4 local_184; + undefined4 local_180; + int local_17c; + undefined1 local_178 [32]; + undefined1 local_158 [28]; + undefined4 local_13c; + + bVar31 = 0; + __mutex = (pthread_mutex_t *)(param_1 + 0x218); + local_18c = 8; + local_188 = 0xffff3cb0; + local_184 = 0; + local_180 = 0; + pthread_mutex_lock(__mutex); + if (*(void **)(param_1 + 0x1580) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x1580)); + *(undefined8 *)(param_1 + 0x1580) = 0; + } + if (*(void **)(param_1 + 0x1588) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x1588)); + *(undefined8 *)(param_1 + 0x1588) = 0; + } + if (*(void **)(param_1 + 0x1590) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x1590)); + *(undefined8 *)(param_1 + 0x1590) = 0; + } + puVar24 = (undefined8 *)(param_1 + 0x1328); + uVar21 = 0x438; + bVar30 = false; + iVar4 = 0x438; + if (((ulong)puVar24 & 1) == 0) { + bVar3 = false; + if (((ulong)puVar24 & 2) == 0) goto LAB_00112c7a; +LAB_00112f88: + bVar30 = bVar3; + uVar7 = iVar4 - 2; + uVar21 = (ulong)uVar7; + *(undefined2 *)puVar24 = 0; + puVar24 = (undefined8 *)((long)puVar24 + 2); + } + else { + puVar24 = (undefined8 *)(param_1 + 0x1329); + *(undefined1 *)(param_1 + 0x1328) = 0; + uVar21 = 0x437; + bVar30 = true; + iVar4 = 0x437; + bVar3 = true; + if (((ulong)puVar24 & 2) != 0) goto LAB_00112f88; +LAB_00112c7a: + uVar7 = (uint)uVar21; + } + if (((ulong)puVar24 & 4) != 0) { + *(undefined4 *)puVar24 = 0; + uVar21 = (ulong)(uVar7 - 4); + puVar24 = (undefined8 *)((long)puVar24 + 4); + } + for (uVar18 = uVar21 >> 3; uVar18 != 0; uVar18 = uVar18 - 1) { + *puVar24 = 0; + puVar24 = puVar24 + (ulong)bVar31 * -2 + 1; + } + if ((uVar21 & 4) != 0) { + *(undefined4 *)puVar24 = 0; + puVar24 = (undefined8 *)((long)puVar24 + 4); + } + puVar25 = puVar24; + if ((uVar21 & 2) != 0) { + puVar25 = (undefined8 *)((long)puVar24 + 2); + *(undefined2 *)puVar24 = 0; + } + if (bVar30) { + *(undefined1 *)puVar25 = 0; + } + puVar24 = (undefined8 *)(param_1 + 0xe0); + uVar21 = 0x120; + bVar3 = false; + iVar4 = 0x120; + bVar30 = false; + if (((ulong)puVar24 & 1) == 0) { + puVar25 = puVar24; + if (((ulong)puVar24 & 2) == 0) goto LAB_00112cd7; +LAB_00112fe0: + puVar26 = (undefined8 *)((long)puVar25 + 2); + uVar7 = iVar4 - 2; + uVar21 = (ulong)uVar7; + *(undefined2 *)puVar25 = 0; + } + else { + puVar25 = (undefined8 *)(param_1 + 0xe1); + *(undefined1 *)(param_1 + 0xe0) = 0; + uVar21 = 0x11f; + bVar3 = true; + iVar4 = 0x11f; + bVar30 = true; + if (((ulong)puVar25 & 2) != 0) goto LAB_00112fe0; +LAB_00112cd7: + uVar7 = (uint)uVar21; + puVar26 = puVar25; + bVar30 = bVar3; + } + if (((ulong)puVar26 & 4) != 0) { + *(undefined4 *)puVar26 = 0; + uVar21 = (ulong)(uVar7 - 4); + puVar26 = (undefined8 *)((long)puVar26 + 4); + } + for (uVar18 = uVar21 >> 3; uVar18 != 0; uVar18 = uVar18 - 1) { + *puVar26 = 0; + puVar26 = puVar26 + (ulong)bVar31 * -2 + 1; + } + if ((uVar21 & 4) != 0) { + *(undefined4 *)puVar26 = 0; + puVar26 = (undefined8 *)((long)puVar26 + 4); + } + puVar25 = puVar26; + if ((uVar21 & 2) != 0) { + puVar25 = (undefined8 *)((long)puVar26 + 2); + *(undefined2 *)puVar26 = 0; + } + if (bVar30) { + *(undefined1 *)puVar25 = 0; + } + puVar25 = (undefined8 *)(param_1 + 0x1760); + uVar21 = 0x65c; + bVar3 = false; + iVar4 = 0x65c; + bVar30 = false; + if (((ulong)puVar25 & 1) == 0) { + puVar26 = puVar25; + if (((ulong)puVar25 & 2) == 0) goto LAB_00112d36; +LAB_00113038: + puVar27 = (undefined8 *)((long)puVar26 + 2); + uVar7 = iVar4 - 2; + uVar21 = (ulong)uVar7; + *(undefined2 *)puVar26 = 0; + } + else { + puVar26 = (undefined8 *)(param_1 + 0x1761); + *(undefined1 *)(param_1 + 0x1760) = 0; + uVar21 = 0x65b; + bVar3 = true; + iVar4 = 0x65b; + bVar30 = true; + if (((ulong)puVar26 & 2) != 0) goto LAB_00113038; +LAB_00112d36: + uVar7 = (uint)uVar21; + puVar27 = puVar26; + bVar30 = bVar3; + } + if (((ulong)puVar27 & 4) != 0) { + *(undefined4 *)puVar27 = 0; + uVar21 = (ulong)(uVar7 - 4); + puVar27 = (undefined8 *)((long)puVar27 + 4); + } + for (uVar18 = uVar21 >> 3; uVar18 != 0; uVar18 = uVar18 - 1) { + *puVar27 = 0; + puVar27 = puVar27 + (ulong)bVar31 * -2 + 1; + } + if ((uVar21 & 4) != 0) { + *(undefined4 *)puVar27 = 0; + puVar27 = (undefined8 *)((long)puVar27 + 4); + } + puVar26 = puVar27; + if ((uVar21 & 2) != 0) { + puVar26 = (undefined8 *)((long)puVar27 + 2); + *(undefined2 *)puVar27 = 0; + } + if (bVar30) { + *(undefined1 *)puVar26 = 0; + } + if (((*(int *)(param_1 + 0x208) == 0) || (*param_2 == '\0')) || + (iVar4 = access(param_2,0), iVar4 != 0)) { + pthread_mutex_unlock(__mutex); + return 0; + } + FUN_00107130(local_178,param_2); + strncpy((char *)(param_1 + 0x1334),param_2,0x100); + *(undefined1 *)(param_1 + 0x1433) = 0; + local_17c = 0; + FUN_00106f60(local_178,&local_17c,4,1); + FUN_00106f60(local_178,&local_194,4,1); + FUN_00106f60(local_178,&local_190,4,1); + FUN_00106f60(local_178,param_1 + 0x1438,4,1); + FUN_00106f60(local_178,param_1 + 0x1434,4,1); + if (local_17c == 0x5aa50003) { + FUN_00106f60(local_178,&local_18c,4,1); + FUN_00106f60(local_178,&local_188,4,1); + *(undefined4 *)(param_1 + 0x7810) = 0; + iVar4 = 0x24; + } + else { + iVar4 = 0; + if (local_17c == 0x5aa50004) { + FUN_00106f60(local_178,&local_184,4,1); + FUN_00106f60(local_178,&local_180,4,1); + *(undefined4 *)(param_1 + 0x7810) = 1; + iVar4 = 0x144; + } + } + FUN_00106f60(local_178,param_1 + 0x143c,4,1); + FUN_00106f60(local_178,param_1 + 0x1440,4,1); + if (*(int *)(param_1 + 0x7810) != 0) { + FUN_00106f60(local_178,puVar24,0x120,1); + } + if ((((1 < local_17c + 0xa55afffdU) || (0x11 < *(uint *)(param_1 + 0x1438) - 2)) || + ((*(int *)(param_1 + 0x1434) == 0 || ((local_18c == 0 || ((local_18c - 1 & local_18c) != 0)))) + )) || (7 < *(uint *)(param_1 + 0x7814))) { + std::__ostream_insert> + ((ostream *)PTR_cout_0033efc8,"The calibration table data is not correct1.\n",0x2c); + goto LAB_00112f48; + } + if (*(int *)(param_1 + 0x84) == 0) { + if (*(int *)(param_1 + 0x1ed0) == local_194) { + iVar6 = *(int *)(param_1 + 0x1ed4); +joined_r0x00113139: + if (iVar6 == local_190) goto LAB_0011313f; + } + } + else { + if (*(int *)(param_1 + 0x84) != 1) { +LAB_0011313f: + FUN_00106f60(local_178,(int *)(param_1 + 0x1444),(ulong)*(uint *)(param_1 + 0x1438) * 4,1); + FUN_00106f60(local_178,param_1 + 0x1494,(ulong)*(uint *)(param_1 + 0x1438) << 2,1); + FUN_00106f60(local_178,param_1 + 0x14e4,(ulong)*(uint *)(param_1 + 0x1438) << 2,1); + piVar14 = (int *)(param_1 + 0x1534); + FUN_00106f60(local_178,piVar14,(ulong)(*(int *)(param_1 + 0x1438) - 1) << 2,1); + uVar7 = *(uint *)(param_1 + 0x1438); + iVar6 = 0; + piVar9 = (int *)(param_1 + 0x1444); +LAB_00113202: + if (iVar6 != uVar7 - 1) { + if ((uint)piVar9[0x3c] < *(uint *)(param_1 + 0x77f8)) goto code_r0x001131ef; + goto LAB_001132b0; + } + lVar19 = (ulong)*(uint *)(param_1 + 0x143c) + (ulong)*(uint *)(param_1 + 0x1440) + + (ulong)(*(uint *)(param_1 + 0x77f8) * (*(int *)(param_1 + 0x1434) * 3 + -1)) * 2; + if (iVar6 == 0) { + local_1c0 = 0; + } + else { + local_1c0 = 0; + do { + iVar6 = *piVar14; + piVar14 = piVar14 + 1; + local_1c0 = local_1c0 + iVar6 * 0x28; + } while (piVar14 != (int *)(param_1 + 0x1538 + (ulong)(uVar7 - 2) * 4)); + } + uVar21 = (ulong)local_1c0; + lVar10 = (ulong)uVar7 * lVar19 + (ulong)(uVar7 * 4 - 1) * 4 + (long)iVar4 + uVar21; + lVar11 = FUN_00106d40(local_178); + if (lVar10 <= lVar11) { + lVar11 = FUN_00106d40(); + if ((*(int *)(param_1 + 0x7810) == 0) && (0x11f < *(uint *)(param_1 + 0x143c))) { + lVar16 = FUN_00106f80(local_178); + FUN_00106f90(local_178, + lVar16 + (ulong)(uint)((*(int *)(param_1 + 0x1434) + -1) * + *(int *)(param_1 + 0x77f8)) * 2,0); + puVar26 = (undefined8 *)local_158; + puVar27 = (undefined8 *)local_158; + for (lVar20 = 0x24; lVar20 != 0; lVar20 = lVar20 + -1) { + *puVar27 = 0; + puVar27 = puVar27 + (ulong)bVar31 * -2 + 1; + } + FUN_00106f60(local_178,puVar26,0x120,1); + FUN_00106f90(local_178,lVar16,0); + if (local_158._0_4_ == 0x1000000) { + bVar30 = ((ulong)puVar24 & 1) != 0; + local_13c = 0xc; + uVar7 = 0x120; + puVar27 = puVar24; + if (bVar30) { + puVar27 = (undefined8 *)(param_1 + 0xe1 + (ulong)bVar31 * -2); + puVar26 = (undefined8 *)(local_158 + (ulong)bVar31 * -2 + 1); + *(undefined1 *)puVar24 = 0; + uVar7 = 0x11f; + } + puVar24 = puVar26; + puVar29 = puVar27; + if (((ulong)puVar27 & 2) != 0) { + uVar7 = uVar7 - 2; + puVar29 = (undefined8 *)((long)puVar27 + (ulong)bVar31 * -4 + 2); + puVar24 = (undefined8 *)((long)puVar26 + (ulong)bVar31 * -4 + 2); + *(undefined2 *)puVar27 = *(undefined2 *)puVar26; + } + puVar26 = puVar24; + puVar27 = puVar29; + if (((ulong)puVar29 & 4) != 0) { + uVar7 = uVar7 - 4; + puVar27 = (undefined8 *)((long)puVar29 + (ulong)bVar31 * -8 + 4); + puVar26 = (undefined8 *)((long)puVar24 + (ulong)bVar31 * -8 + 4); + *(undefined4 *)puVar29 = *(undefined4 *)puVar24; + } + lVar16 = 0; + for (uVar18 = (ulong)(uVar7 >> 3); uVar18 != 0; uVar18 = uVar18 - 1) { + *puVar27 = *puVar26; + puVar26 = puVar26 + (ulong)bVar31 * -2 + 1; + puVar27 = puVar27 + (ulong)bVar31 * -2 + 1; + } + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar27 = *(undefined4 *)puVar26; + lVar16 = 4; + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)((long)puVar27 + lVar16) = *(undefined2 *)((long)puVar26 + lVar16); + lVar16 = lVar16 + 2; + } + if (bVar30) { + *(undefined1 *)((long)puVar27 + lVar16) = *(undefined1 *)((long)puVar26 + lVar16); + } + } + } + if (*(int *)(param_1 + 0xfc) == 0) { + *(undefined4 *)(param_1 + 0xfc) = 0xc; + } + uVar12 = (ulong)*(uint *)(param_1 + 0x1438) * lVar19 + 3 >> 2; + uVar18 = 0xffffffffffffffff; + if (uVar12 < 0x1fc0000000000001) { + uVar18 = uVar12 * 4; + } + pvVar13 = operator_new__(uVar18); + *(void **)(param_1 + 0x1580) = pvVar13; + pvVar13 = operator_new__(lVar19 + 3U & 0xfffffffffffffffc); + *(void **)(param_1 + 0x1588) = pvVar13; + if (local_1c0 != 0) { + pvVar13 = operator_new__(uVar21); + *(void **)(param_1 + 0x1590) = pvVar13; + } + if (((*(long *)(param_1 + 0x1580) == 0) || + (lVar16 = *(long *)(param_1 + 0x1588), lVar16 == 0)) || + ((local_1c0 != 0 && (*(long *)(param_1 + 0x1590) == 0)))) { + FUN_00113aa0(local_158,4); + FUN_00116630(local_158,"Failed to allocate memory for calibration data.\n"); + FUN_00113b30(local_158); + goto LAB_00112f48; + } + *(long *)(param_1 + 0x1738) = lVar16; + *(ulong *)(param_1 + 0x1750) = + lVar16 + ((ulong)(*(uint *)(param_1 + 0x143c) >> 1) + + (ulong)(uint)((*(int *)(param_1 + 0x1434) + -1) * *(int *)(param_1 + 0x77f8))) + * 2; + uVar5 = FUN_00106f80(local_178); + uVar7 = *(uint *)(param_1 + 0x1438); + *(undefined4 *)(param_1 + 0x15e8) = uVar5; + *(undefined4 *)(param_1 + 0x1638) = 0; + local_1c8 = (int)lVar19; + if (1 < uVar7) { + piVar14 = (int *)(param_1 + 0x15e8); + do { + piVar9 = piVar14 + 1; + *piVar9 = *piVar14 + local_1c8; + piVar14[0x15] = piVar14[0x14] + local_1c8; + piVar14 = piVar9; + } while (piVar9 != (int *)(param_1 + 0x15ec + (ulong)(uVar7 - 2) * 4)); + } + *(undefined4 *)(param_1 + 0x16d4) = 0; + uVar17 = 1; + *(uint *)(param_1 + 0x1688) = local_1c8 * uVar7 + *(int *)(param_1 + 0x15e8); + piVar14 = (int *)(param_1 + 0x1688); + if (1 < uVar7 - 1) { + do { + uVar17 = uVar17 + 1; + piVar14[1] = *piVar14 + piVar14[-0x55] * 0x28; + piVar14[0x14] = piVar14[-0x55] * 0x28 + piVar14[0x13]; + piVar14 = piVar14 + 1; + } while (uVar7 - 1 != uVar17); + } + FUN_00106f60(local_178,*(undefined8 *)(param_1 + 0x1580),(ulong)uVar7 * lVar19); + if (local_1c0 != 0) { + FUN_00106f60(local_178,*(undefined8 *)(param_1 + 0x1590),uVar21); + } + iVar4 = *(int *)(param_1 + 0x1438); + if (iVar4 == 0) { + if (lVar10 < lVar11) goto LAB_0011355b; + } + else { + puVar22 = (undefined4 *)(param_1 + 0x1598); + do { + *puVar22 = 1; + puVar22 = puVar22 + 1; + } while (puVar22 != (undefined4 *)(param_1 + 0x159c + (ulong)(iVar4 - 1) * 4)); + if (lVar10 < lVar11) { +LAB_0011355b: + iVar4 = FUN_00106d40(local_178); + iVar6 = FUN_00106f80(local_178); + iVar4 = iVar4 - iVar6; + *(undefined4 *)(param_1 + 0x1764) = 0; + while ((0x43 < iVar4 && (*(uint *)(param_1 + 0x1764) < 3))) { + local_158._0_4_ = 0; + FUN_00106f60(local_178,local_158,4); + if (local_158._0_4_ != 0x6bb60001) break; + pcVar23 = (char *)(param_1 + 0x1768 + (ulong)*(uint *)(param_1 + 0x1764) * 0x21c); + FUN_00106f60(local_178,pcVar23,0x20,1); + pcVar23[0x1e] = '\0'; + pcVar23[0x1f] = '\0'; + FUN_00106f60(local_178,pcVar23 + 0x20,4,1); + FUN_00106f60(local_178,pcVar23 + 0x24,4,1); + FUN_00106f60(local_178,pcVar23 + 0x28,4,1); + FUN_00106f60(local_178,pcVar23 + 0x2c,4,1); + FUN_00106f60(local_178,pcVar23 + 0x30,4,1); + FUN_00106f60(local_178,pcVar23 + 0x38,4,1); + FUN_00106f60(local_178,pcVar23 + 0x34,4,1); + FUN_00106f60(local_178,pcVar23 + 0x3c,4); + if (0xf < *(uint *)(pcVar23 + 0x30)) break; + uVar7 = *(int *)(pcVar23 + 0x3c) - 1; + if (0x18 < uVar7) break; + if (iVar4 < 0x21c) { + iVar6 = 1; + if (*(int *)(pcVar23 + 0x3c) != 1) { + FUN_00106f60(local_178,pcVar23 + 0x40,(ulong)uVar7 << 2,1); + iVar6 = *(int *)(pcVar23 + 0x3c); + } + FUN_00106f60(local_178,pcVar23 + 0xd4,(ulong)(uint)(iVar6 * 2) << 2); + pcVar23[0x204] = '\0'; + pcVar23[0x205] = '\0'; + pcVar23[0x206] = -0x80; + pcVar23[0x207] = '?'; + iVar4 = (iVar4 - (*(int *)(pcVar23 + 0x3c) * 0xc + -4)) + -0x44; + } + else { + FUN_00106f60(local_178,pcVar23 + 0x40,0x1dc); + iVar4 = iVar4 + -0x220; + if ((*(float *)(pcVar23 + 0x204) <= 0.0) || + (DAT_00131e20 < *(float *)(pcVar23 + 0x204))) { + pcVar23[0x204] = '\0'; + pcVar23[0x205] = '\0'; + pcVar23[0x206] = -0x80; + pcVar23[0x207] = '?'; + } + } + if ((*(float *)(pcVar23 + 0x214) < DAT_00131e50) || + (_DAT_00131e54 < *(float *)(pcVar23 + 0x214))) { + pcVar23[0x214] = '\0'; + pcVar23[0x215] = '\0'; + pcVar23[0x216] = '\0'; + pcVar23[0x217] = '\0'; + } + puVar2 = PTR_cout_0033efc8; + *(undefined4 *)(pcVar23 + 0xc4) = *(undefined4 *)(param_1 + 0x7810); + *(undefined4 *)(pcVar23 + 200) = local_184; + *(undefined4 *)(pcVar23 + 0xcc) = local_180; + *(int *)(param_1 + 0x1764) = *(int *)(param_1 + 0x1764) + 1; + *(undefined4 *)(param_1 + 0x1760) = 1; + poVar15 = std::operator<<((ostream *)puVar2,"Found Lens: "); + poVar15 = std::operator<<(poVar15,pcVar23); + std::endl>(poVar15); + } + } + else if ((iVar4 == 1) || + ((iVar4 == 2 && (*(int *)(param_1 + 0x1448) - *(int *)(param_1 + 0x1444) == 50000) + ))) { + bVar30 = ((ulong)puVar25 & 1) != 0; + *(undefined4 *)(param_1 + 0x132c) = 1; + uVar21 = 0x65c; + puVar24 = puVar25; + if (bVar30) { + puVar24 = (undefined8 *)(param_1 + 0x1761 + (ulong)bVar31 * -2); + *(undefined1 *)puVar25 = 0; + uVar21 = 0x65b; + } + puVar25 = puVar24; + if (((ulong)puVar24 & 2) != 0) { + uVar21 = (ulong)((int)uVar21 - 2); + puVar25 = (undefined8 *)((long)puVar24 + (ulong)bVar31 * -4 + 2); + *(undefined2 *)puVar24 = 0; + } + puVar24 = puVar25; + if (((ulong)puVar25 & 4) != 0) { + uVar21 = (ulong)((int)uVar21 - 4); + puVar24 = (undefined8 *)((long)puVar25 + (ulong)bVar31 * -8 + 4); + *(undefined4 *)puVar25 = 0; + } + for (uVar18 = uVar21 >> 3; uVar18 != 0; uVar18 = uVar18 - 1) { + *puVar24 = 0; + puVar24 = puVar24 + (ulong)bVar31 * -2 + 1; + } + puVar25 = puVar24; + if ((uVar21 & 4) != 0) { + puVar25 = (undefined8 *)((long)puVar24 + (ulong)bVar31 * -8 + 4); + *(undefined4 *)puVar24 = 0; + } + puVar24 = puVar25; + if ((uVar21 & 2) != 0) { + puVar24 = (undefined8 *)((long)puVar25 + (ulong)bVar31 * -4 + 2); + *(undefined2 *)puVar25 = 0; + } + if (bVar30) { + *(undefined1 *)puVar24 = 0; + } + *(undefined4 *)(param_1 + 0x1760) = 1; + *(undefined4 *)(param_1 + 0x1764) = 1; + pcVar23 = "Default Lens"; + pcVar28 = (char *)(param_1 + 0x1768); + for (lVar19 = 0xd; lVar19 != 0; lVar19 = lVar19 + -1) { + *pcVar28 = *pcVar23; + pcVar23 = pcVar23 + (ulong)bVar31 * -2 + 1; + pcVar28 = pcVar28 + (ulong)bVar31 * -2 + 1; + } + *(undefined4 *)(param_1 + 0x1788) = 0x3e99999a; + *(undefined4 *)(param_1 + 0x178c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x1790) = 0x40000000; + *(undefined4 *)(param_1 + 0x1794) = 0x3fc00000; + *(undefined4 *)(param_1 + 0x17a4) = 1; + *(undefined4 *)(param_1 + 0x196c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x1970) = 0; + *(undefined4 *)(param_1 + 0x1974) = 100000; + iVar4 = (*(int *)(param_1 + 0x1448) + *(int *)(param_1 + 0x1444)) / 2; + *(int *)(param_1 + 0x179c) = iVar4; + *(int *)(param_1 + 0x17a0) = iVar4 + -500; + *(undefined4 *)(param_1 + 0x183c) = *(undefined4 *)(param_1 + 0x7804); + *(undefined4 *)(param_1 + 0x1840) = *(undefined4 *)(param_1 + 0x7808); + } + } + if (*(int *)(param_1 + 0x7810) == 0) { + iVar4 = 0; + *(undefined4 *)(param_1 + 0x7808) = local_188; + *(uint *)(param_1 + 0x7804) = local_18c; + do { + if (local_18c == 1 << ((byte)iVar4 & 0x1f)) { + *(int *)(param_1 + 0x780c) = iVar4; + break; + } + iVar4 = iVar4 + 1; + } while (iVar4 != 0x20); + } + else { + *(undefined4 *)(param_1 + 0x7814) = local_180; + } + *(undefined4 *)(param_1 + 0x1328) = 1; + pthread_mutex_unlock(__mutex); + FUN_00109d40(param_1,local_184); + uVar5 = *(undefined4 *)(param_1 + 0x1328); + goto LAB_00112f52; + } + std::operator<<((ostream *)PTR_cout_0033efc8,"The calibration table length is not correct.\n") + ; + goto LAB_00112f48; + } + if (*(int *)(param_1 + 0x1ed4) == local_194) { + iVar6 = *(int *)(param_1 + 0x1ed0); + goto joined_r0x00113139; + } + } + std::operator<<((ostream *)PTR_cout_0033efc8,"The calibration table size mismatch FPA.\n"); +LAB_00112f48: + pthread_mutex_unlock(__mutex); + uVar5 = 0; +LAB_00112f52: + FUN_00106db0(local_178); + return uVar5; +code_r0x001131ef: + piVar8 = piVar9 + 1; + iVar6 = iVar6 + 1; + iVar1 = *piVar9; + piVar9 = piVar8; + if (*piVar8 <= iVar1) goto LAB_001132b0; + goto LAB_00113202; +LAB_001132b0: + std::operator<<((ostream *)PTR_cout_0033efc8,"The calibration table data is not correct2.\n"); + goto LAB_00112f48; +} + + +================================================================== + +### FUNC 00113aa0 (122 bytes) name=FUN_00113aa0 + +void FUN_00113aa0(undefined8 param_1,int param_2) + +{ + tm *ptVar1; + time_t local_20; + + FUN_001161f0(param_1,0x400); + time(&local_20); + ptVar1 = localtime(&local_20); + FUN_00116490(param_1,"%d.%02d.%02d %02d:%02d:%02d %s",ptVar1->tm_year + 0x76c,ptVar1->tm_mon + 1, + ptVar1->tm_mday,ptVar1->tm_hour,ptVar1->tm_min,ptVar1->tm_sec, + (&PTR_s_TRACE___0033ea00)[param_2]); + return; +} + + +================================================================== + +### FUNC 00113b30 (62 bytes) name=FUN_00113b30 + +void FUN_00113b30(undefined8 param_1) + +{ + FUN_00116630(param_1,&DAT_00131fd0); + FUN_00116580(param_1,DAT_00340aa0); + fflush(DAT_00340aa0); + FUN_00116360(param_1); + return; +} + + +================================================================== + +### FUNC 00113b90 (8 bytes) name=FUN_00113b90 + +void FUN_00113b90(undefined8 param_1) + +{ + DAT_00340aa0 = param_1; + return; +} + + +================================================================== + +### FUNC 00113ba0 (21 bytes) name=FUN_00113ba0 + +void FUN_00113ba0(void) + +{ + DAT_00340aa0 = FUN_00106ef0(); + return; +} + + +================================================================== + +### FUNC 00113bc0 (69 bytes) name=FUN_00113bc0 + +long FUN_00113bc0(void) + +{ + timespec local_18; + + clock_gettime(1,&local_18); + return local_18.tv_sec * 1000 + local_18.tv_nsec / 1000000; +} + + +================================================================== + +### FUNC 00113c10 (11 bytes) name=FUN_00113c10 + +void FUN_00113c10(int param_1) + +{ + usleep(param_1 * 1000); + return; +} + + +================================================================== + +### FUNC 00113c20 (104 bytes) name=FUN_00113c20 + +void FUN_00113c20(short *param_1) + +{ + int iVar1; + tm *ptVar2; + time_t local_20 [2]; + + time(local_20); + ptVar2 = localtime(local_20); + iVar1 = ptVar2->tm_mon; + *param_1 = (short)ptVar2->tm_year + 0x76c; + param_1[1] = (short)iVar1 + 1; + param_1[2] = (short)ptVar2->tm_wday; + param_1[3] = (short)ptVar2->tm_mday; + param_1[4] = (short)ptVar2->tm_hour; + iVar1 = ptVar2->tm_sec; + param_1[5] = (short)ptVar2->tm_min; + param_1[6] = (short)iVar1; + param_1[7] = 400; + return; +} + + +================================================================== + +### FUNC 00113c90 (327 bytes) name=FUN_00113c90 + +undefined8 FUN_00113c90(uint *param_1,int *param_2,int *param_3,int param_4) + +{ + int iVar1; + long lVar2; + long lVar3; + undefined8 uVar4; + int iVar5; + long lVar6; + long lVar7; + int *piVar8; + int *piVar9; + int iVar10; + uint uVar11; + long lVar12; + uint uVar13; + uint uVar14; + + iVar1 = param_4 >> 0x1f; + iVar5 = param_4 / 3 + iVar1; + uVar11 = iVar1 - iVar5; + uVar13 = iVar5 - iVar1; + uVar14 = uVar11 - 1; + if ((int)uVar11 < (int)uVar13) { + lVar7 = 0; + lVar12 = 0x7fffffffffffffff; + iVar1 = -uVar11; + lVar2 = (long)(int)uVar11; + lVar6 = 0; + do { + piVar8 = param_2; + piVar9 = (int *)((long)param_3 + (lVar2 * 4 - lVar6)); + if ((int)uVar11 < 0) { + piVar8 = (int *)((long)param_2 + lVar6 + (long)iVar1 * 4); + piVar9 = param_3; + } + iVar5 = param_4 - (((int)uVar11 >> 0x1f ^ uVar11) - ((int)uVar11 >> 0x1f)); + if (iVar5 == 0) { + lVar3 = 0; + } + else { + lVar3 = 0; + iVar10 = iVar5; + do { + lVar3 = lVar3 + (long)(*piVar8 - *piVar9) * (long)(*piVar8 - *piVar9); + iVar10 = iVar10 + -1; + piVar8 = piVar8 + 1; + piVar9 = piVar9 + 1; + } while (iVar10 != 0); + } + lVar3 = lVar3 / (long)iVar5; + if (lVar3 < lVar12) { + lVar12 = lVar3; + uVar14 = uVar11; + } + if (lVar7 < lVar3) { + lVar7 = lVar3; + } + uVar11 = uVar11 + 1; + lVar6 = lVar6 + -4; + } while (uVar11 != uVar13); + } + else { + lVar7 = 0; + lVar12 = 0x7fffffffffffffff; + } + if (param_4 < 0) { + param_4 = param_4 + 3; + } + uVar4 = 0; + if (((-(param_4 >> 2) <= (int)uVar14) && ((int)uVar14 <= param_4 >> 2)) && (lVar12 * 2 <= lVar7)) + { + *param_1 = uVar14; + uVar4 = 1; + } + return uVar4; +} + + +================================================================== + +### FUNC 00113de0 (330 bytes) name=FUN_00113de0 + +void FUN_00113de0(void *param_1,ushort *param_2) + +{ + ushort uVar1; + size_t __n; + int iVar2; + int iVar3; + int iVar4; + long lVar5; + long lVar6; + int iVar7; + int iVar8; + int iVar9; + ushort *puVar10; + + iVar4 = DAT_00340ab4; + iVar2 = DAT_00340ab0; + lVar5 = (long)DAT_00340ab4; + __n = lVar5 * 2; + iVar7 = (DAT_00340ab0 + -2) * DAT_00340ab4; + if (iVar7 != 2) { + lVar6 = 0; + iVar3 = (uint)param_2[lVar5] + (uint)*param_2 + (uint)param_2[lVar5 * 2]; + iVar8 = (uint)param_2[1] + (uint)param_2[lVar5 + 1] + (uint)param_2[lVar5 * 2 + 1]; + do { + iVar9 = (uint)*(ushort *)((long)param_2 + lVar6 + 4) + + (uint)*(ushort *)((long)param_2 + lVar6 + __n + 4) + + (uint)*(ushort *)((long)param_2 + lVar6 + __n + __n + 4); + *(short *)((long)param_1 + lVar6 + __n + 2) = + (short)((ulong)(uint)(iVar9 + iVar8 + iVar3) / 9); + lVar6 = lVar6 + 2; + iVar3 = iVar8; + iVar8 = iVar9; + } while (lVar6 != (ulong)(iVar7 - 3) * 2 + 2); + } + memcpy(param_1,param_2,__n); + lVar6 = (long)(iVar7 + iVar4); + memcpy((void *)((long)param_1 + lVar6 * 2),param_2 + lVar6,__n); + if (2 < iVar2) { + lVar6 = (long)(iVar4 * 2); + param_2 = param_2 + lVar6 + -1; + puVar10 = (ushort *)((long)param_1 + lVar6 * 2 + -2); + iVar4 = 1; + do { + iVar4 = iVar4 + 1; + puVar10[(lVar5 - lVar6) + 1] = param_2[(lVar5 - lVar6) + 1]; + uVar1 = *param_2; + param_2 = param_2 + lVar5; + *puVar10 = uVar1; + puVar10 = (ushort *)((long)puVar10 + lVar6); + } while (iVar4 != iVar2 + -1); + } + return; +} + + +================================================================== + +### FUNC 00113f30 (294 bytes) name=FUN_00113f30 + +void FUN_00113f30(void *param_1,long param_2) + +{ + ushort *puVar1; + ushort uVar2; + size_t __n; + int iVar3; + long lVar4; + long lVar5; + undefined2 *puVar6; + undefined2 uVar7; + uint uVar8; + int iVar9; + int iVar10; + long lVar11; + ushort *puVar12; + uint uVar13; + uint uVar14; + int iVar15; + + iVar10 = DAT_00340ab4; + iVar3 = DAT_00340ab0; + lVar4 = (long)DAT_00340ab4; + __n = lVar4 * 2; + iVar15 = (DAT_00340ab0 + -2) * DAT_00340ab4; + lVar11 = (long)(DAT_00340ab4 * 2); + puVar12 = (ushort *)(param_2 + __n); + if (iVar15 != 2) { + lVar5 = 0; + do { + puVar1 = puVar12 + 2; + uVar2 = *puVar12; + puVar12 = puVar12 + 1; + uVar8 = (uint)*(ushort *)(param_2 + 2 + lVar5) - + (uint)*(ushort *)(param_2 + 2 + lVar11 * 2 + lVar5); + uVar13 = (int)uVar8 >> 0x1f; + uVar14 = (int)((uint)uVar2 - (uint)*puVar1) >> 0x1f; + iVar9 = ((uVar8 ^ uVar13) - uVar13) + (((uint)uVar2 - (uint)*puVar1 ^ uVar14) - uVar14); + uVar7 = (undefined2)iVar9; + if (0xffff < iVar9) { + uVar7 = 0xffff; + } + *(undefined2 *)((long)param_1 + lVar5 + __n + 2) = uVar7; + lVar5 = lVar5 + 2; + } while (lVar5 != (ulong)(iVar15 - 3) * 2 + 2); + } + memset(param_1,0,__n); + memset((void *)((long)param_1 + (long)(iVar10 + iVar15) * 2),0,__n); + if (2 < iVar3) { + puVar6 = (undefined2 *)((long)param_1 + lVar11 * 2 + -2); + iVar10 = 1; + do { + iVar10 = iVar10 + 1; + puVar6[(lVar4 - lVar11) + 1] = 0; + *puVar6 = 0; + puVar6 = (undefined2 *)((long)puVar6 + lVar11); + } while (iVar10 != iVar3 + -1); + } + return; +} + + +================================================================== + +### FUNC 00114060 (373 bytes) name=FUN_00114060 + +/* WARNING: Type propagation algorithm not settling */ + +undefined8 FUN_00114060(undefined8 param_1,undefined8 param_2,long param_3,long param_4) + +{ + int *piVar1; + ushort uVar2; + int iVar3; + long lVar4; + undefined8 uVar5; + long lVar6; + int *piVar7; + int *piVar8; + int iVar9; + int local_2338; + int local_2334 [479]; + int local_1bb8; + int local_1bb4 [479]; + int local_1438; + undefined1 local_1434 [2556]; + int local_a38; + undefined1 local_a34 [2564]; + + iVar3 = DAT_00340ab0; + piVar7 = &local_2338; + piVar8 = &local_1438; + for (lVar6 = 0x140; lVar6 != 0; lVar6 = lVar6 + -1) { + piVar8[0] = 0; + piVar8[1] = 0; + piVar8 = piVar8 + 2; + } + piVar8 = piVar7; + for (lVar6 = 0xf0; lVar6 != 0; lVar6 = lVar6 + -1) { + piVar8[0] = 0; + piVar8[1] = 0; + piVar8 = piVar8 + 2; + } + piVar8 = &local_a38; + for (lVar6 = 0x140; lVar6 != 0; lVar6 = lVar6 + -1) { + piVar8[0] = 0; + piVar8[1] = 0; + piVar8 = piVar8 + 2; + } + piVar8 = &local_1bb8; + for (lVar6 = 0xf0; lVar6 != 0; lVar6 = lVar6 + -1) { + piVar8[0] = 0; + piVar8[1] = 0; + piVar8 = piVar8 + 2; + } + if (0 < DAT_00340ab0) { + lVar6 = (ulong)(DAT_00340ab4 - 1) * 2 + 2; + do { + if (DAT_00340ab4 < 1) { + iVar9 = 0; + } + else { + lVar4 = 0; + iVar9 = 0; + do { + uVar2 = *(ushort *)(param_3 + lVar4); + piVar8 = (int *)((long)&local_1438 + lVar4 * 2); + *piVar8 = *piVar8 + (uint)uVar2; + lVar4 = lVar4 + 2; + iVar9 = iVar9 + (uint)uVar2; + } while (lVar4 != lVar6); + param_3 = param_3 + lVar6; + } + *piVar7 = iVar9; + piVar7 = piVar7 + 1; + } while (piVar7 != local_2334 + (DAT_00340ab0 - 1U)); + piVar7 = &local_1bb8; + piVar8 = local_1bb4; + while( true ) { + if (DAT_00340ab4 < 1) { + *piVar7 = 0; + } + else { + lVar4 = 0; + iVar9 = 0; + do { + uVar2 = *(ushort *)(param_4 + lVar4); + piVar1 = (int *)((long)&local_a38 + lVar4 * 2); + *piVar1 = *piVar1 + (uint)uVar2; + lVar4 = lVar4 + 2; + iVar9 = iVar9 + (uint)uVar2; + } while (lVar4 != lVar6); + param_4 = param_4 + lVar6; + *piVar7 = iVar9; + } + if (piVar8 == local_1bb4 + (DAT_00340ab0 - 1U)) break; + piVar7 = piVar8; + piVar8 = piVar8 + 1; + } + } + iVar9 = FUN_00113c90(param_1,local_1434,local_a34,DAT_00340ab4 + -2); + uVar5 = 0; + if (iVar9 != 0) { + uVar5 = FUN_00113c90(param_2,local_2334,local_1bb4,iVar3 + -2); + } + return uVar5; +} + + +================================================================== + +### FUNC 001141e0 (229 bytes) name=FUN_001141e0 + +bool FUN_001141e0(undefined8 param_1,undefined8 param_2) + +{ + uint uVar1; + long lVar2; + ulong uVar3; + int *piVar4; + long in_FS_OFFSET; + undefined1 auStack_3b8 [32]; + int local_398 [222]; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + piVar4 = local_398; + for (lVar2 = 0x6e; lVar2 != 0; lVar2 = lVar2 + -1) { + piVar4[0] = 0; + piVar4[1] = 0; + piVar4 = piVar4 + 2; + } + *piVar4 = 0; + FUN_00107130(auStack_3b8,param_1); + FUN_00106f60(auStack_3b8,local_398,0x374,1); + uVar3 = 0; + if ((local_398[0] == 0x374) && (local_398[2] == DAT_00340ab4)) { + if (local_398[3] == DAT_00340ab0) { + uVar1 = FUN_00106f60(auStack_3b8,param_2,(long)(DAT_00340ab0 * DAT_00340ab4) * 2,1); + uVar3 = (ulong)uVar1; + } + } + FUN_00106db0(auStack_3b8); + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar3 == (long)(DAT_00340ab4 * DAT_00340ab0) * 2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001142f0 (647 bytes) name=FUN_001142f0 + +undefined8 +FUN_001142f0(undefined8 param_1,undefined8 param_2,int param_3,int param_4,undefined4 *param_5, + undefined4 *param_6) + +{ + void *pvVar1; + void *pvVar2; + int iVar3; + int *piVar4; + undefined8 uVar5; + ulong uVar6; + void *pvVar7; + + DAT_00340ab0 = param_4; + DAT_00340ab4 = param_3; + if ((ulong)((long)(param_3 * param_4) * 2) < 0x3f80000000000001) { + uVar6 = (long)(param_3 * param_4) * 4; + DAT_00340ac8 = operator_new__(uVar6); + DAT_00340ac0 = operator_new__(uVar6); + } + else { + DAT_00340ac8 = operator_new__(0xffffffffffffffff); + DAT_00340ac0 = operator_new__(0xffffffffffffffff); + uVar6 = 0xffffffffffffffff; + } + DAT_00340ab8 = operator_new__(uVar6); + if (DAT_00340ac8 != (void *)0x0) { + if ((DAT_00340ac0 != (void *)0x0) && (DAT_00340ab8 != (void *)0x0)) { + iVar3 = FUN_001141e0(param_1); + pvVar2 = DAT_00340ac8; + pvVar7 = DAT_00340ac0; + if (iVar3 == 0) { + if (DAT_00340ac8 != (void *)0x0) { + operator_delete__(DAT_00340ac8); + DAT_00340ac8 = (void *)0x0; + } + if (DAT_00340ac0 != (void *)0x0) { + operator_delete__(DAT_00340ac0); + DAT_00340ac0 = (void *)0x0; + } + if (DAT_00340ab8 != (void *)0x0) { + operator_delete__(DAT_00340ab8); + DAT_00340ab8 = (void *)0x0; + } + piVar4 = __errno_location(); + *piVar4 = -0x1b51fff7; + uVar5 = 0; + } + else { + FUN_00113de0(DAT_00340ac0,DAT_00340ac8); + pvVar1 = DAT_00340ab8; + FUN_00113de0(DAT_00340ab8,param_2); + FUN_00113f30(pvVar2,pvVar7); + FUN_00113f30(param_2,pvVar1); + iVar3 = FUN_00114060(param_5,param_6,pvVar2,param_2); + if (iVar3 == 0) { + *param_5 = 0; + *param_6 = 0; + } + if (pvVar2 != (void *)0x0) { + operator_delete__(pvVar2); + DAT_00340ac8 = (void *)0x0; + pvVar7 = DAT_00340ac0; + } + if (pvVar7 != (void *)0x0) { + operator_delete__(pvVar7); + DAT_00340ac0 = (void *)0x0; + } + if (DAT_00340ab8 == (void *)0x0) { + uVar5 = 1; + } + else { + operator_delete__(DAT_00340ab8); + DAT_00340ab8 = (void *)0x0; + uVar5 = 1; + } + } + return uVar5; + } + operator_delete__(DAT_00340ac8); + DAT_00340ac8 = (void *)0x0; + } + if (DAT_00340ac0 != (void *)0x0) { + operator_delete__(DAT_00340ac0); + DAT_00340ac0 = (void *)0x0; + } + if (DAT_00340ab8 != (void *)0x0) { + operator_delete__(DAT_00340ab8); + DAT_00340ab8 = (void *)0x0; + } + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffe; + return 0; +} + + +================================================================== + +### FUNC 00114580 (42 bytes) name=FUN_00114580 + +void FUN_00114580(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0x67452301; + param_1[3] = 0xefcdab89; + param_1[4] = 0x98badcfe; + param_1[5] = 0x10325476; + return; +} + + +================================================================== + +### FUNC 001145b0 (89 bytes) name=FUN_001145b0 + +void FUN_001145b0(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + undefined4 *puVar2; + uint uVar3; + ulong uVar4; + + uVar3 = 0; + uVar4 = 0; + if (param_3 != 0) { + do { + puVar2 = (undefined4 *)(param_2 + uVar4 * 4); + *(char *)(param_1 + (ulong)uVar3) = (char)*puVar2; + *(char *)(param_1 + (ulong)(uVar3 + 1)) = (char)((uint)*puVar2 >> 8); + *(char *)(param_1 + (ulong)(uVar3 + 2)) = (char)((uint)*puVar2 >> 0x10); + uVar1 = uVar3 + 3; + uVar3 = uVar3 + 4; + *(char *)(param_1 + (ulong)uVar1) = (char)((uint)*puVar2 >> 0x18); + uVar4 = (ulong)((int)uVar4 + 1); + } while (uVar3 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00114610 (89 bytes) name=FUN_00114610 + +void FUN_00114610(long param_1,long param_2,uint param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + ulong uVar5; + uint uVar6; + ulong uVar7; + + uVar4 = 0; + uVar6 = 0; + if (param_3 != 0) { + do { + uVar3 = uVar4 + 1; + uVar1 = uVar4 + 2; + uVar7 = (ulong)uVar6; + uVar6 = uVar6 + 1; + uVar5 = (ulong)uVar4; + uVar2 = uVar4 + 3; + uVar4 = uVar4 + 4; + *(uint *)(param_1 + uVar7 * 4) = + (uint)*(byte *)(param_2 + (ulong)uVar3) << 8 | + (uint)*(byte *)(param_2 + (ulong)uVar1) << 0x10 | (uint)*(byte *)(param_2 + uVar5) | + (uint)*(byte *)(param_2 + (ulong)uVar2) << 0x18; + } while (uVar4 < param_3); + } + return; +} + + +================================================================== + +### FUNC 00114670 (1997 bytes) name=FUN_00114670 + +void FUN_00114670(int *param_1,undefined8 param_2) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + int local_138; + int local_134; + int local_130; + int local_12c; + int local_128; + int local_124; + int local_120; + int local_11c; + int local_118; + int local_114; + int local_110; + int local_10c; + int local_108; + int local_104; + int local_100; + int local_fc; + + uVar6 = param_1[1]; + uVar2 = param_1[2]; + uVar4 = param_1[3]; + iVar1 = *param_1; + FUN_00114610(&local_138,param_2,0x40); + uVar3 = iVar1 + -0x28955b88 + local_138 + (~uVar6 & uVar4 | uVar2 & uVar6); + uVar3 = (uVar3 >> 0x19 | uVar3 * 0x80) + uVar6; + uVar4 = uVar4 + 0xe8c7b756 + local_134 + (~uVar3 & uVar2 | uVar3 & uVar6); + uVar5 = (uVar4 >> 0x14 | uVar4 * 0x1000) + uVar3; + uVar2 = (~uVar5 & uVar6 | uVar5 & uVar3) + uVar2 + 0x242070db + local_130; + uVar2 = (uVar2 >> 0xf | uVar2 * 0x20000) + uVar5; + uVar6 = (~uVar2 & uVar3 | uVar2 & uVar5) + uVar6 + 0xc1bdceee + local_12c; + uVar7 = (uVar6 >> 10 | uVar6 * 0x400000) + uVar2; + uVar6 = (~uVar7 & uVar5 | uVar7 & uVar2) + uVar3 + 0xf57c0faf + local_128; + uVar4 = (uVar6 >> 0x19 | uVar6 * 0x80) + uVar7; + uVar6 = (~uVar4 & uVar2 | uVar4 & uVar7) + uVar5 + 0x4787c62a + local_124; + uVar3 = (uVar6 >> 0x14 | uVar6 * 0x1000) + uVar4; + uVar6 = (~uVar3 & uVar7 | uVar3 & uVar4) + uVar2 + 0xa8304613 + local_120; + uVar6 = (uVar6 >> 0xf | uVar6 * 0x20000) + uVar3; + uVar2 = (~uVar6 & uVar4 | uVar6 & uVar3) + uVar7 + 0xfd469501 + local_11c; + uVar5 = (uVar2 >> 10 | uVar2 * 0x400000) + uVar6; + uVar2 = (~uVar5 & uVar3 | uVar5 & uVar6) + uVar4 + 0x698098d8 + local_118; + uVar2 = (uVar2 >> 0x19 | uVar2 * 0x80) + uVar5; + uVar4 = (~uVar2 & uVar6 | uVar2 & uVar5) + uVar3 + 0x8b44f7af + local_114; + uVar4 = (uVar4 >> 0x14 | uVar4 * 0x1000) + uVar2; + uVar6 = (~uVar4 & uVar5 | uVar4 & uVar2) + (uVar6 - 0xa44f) + local_110; + uVar6 = (uVar6 >> 0xf | uVar6 * 0x20000) + uVar4; + uVar3 = uVar5 + 0x895cd7be + local_10c + (~uVar6 & uVar2 | uVar6 & uVar4); + uVar3 = (uVar3 >> 10 | uVar3 * 0x400000) + uVar6; + uVar2 = (~uVar3 & uVar4 | uVar3 & uVar6) + uVar2 + 0x6b901122 + local_108; + uVar2 = (uVar2 >> 0x19 | uVar2 * 0x80) + uVar3; + uVar4 = (~uVar2 & uVar6 | uVar2 & uVar3) + uVar4 + 0xfd987193 + local_104; + uVar4 = (uVar4 >> 0x14 | uVar4 * 0x1000) + uVar2; + uVar6 = (~uVar4 & uVar3 | uVar4 & uVar2) + uVar6 + 0xa679438e + local_100; + uVar6 = (uVar6 >> 0xf | uVar6 * 0x20000) + uVar4; + uVar3 = (~uVar6 & uVar2 | uVar6 & uVar4) + uVar3 + 0x49b40821 + local_fc; + uVar3 = (uVar3 >> 10 | uVar3 * 0x400000) + uVar6; + uVar2 = (uVar3 & uVar4 | ~uVar4 & uVar6) + local_134 + -0x9e1da9e + uVar2; + uVar2 = (uVar2 >> 0x1b | uVar2 * 0x20) + uVar3; + uVar4 = local_120 + -0x3fbf4cc0 + uVar4 + (uVar2 & uVar6 | ~uVar6 & uVar3); + uVar5 = (uVar4 >> 0x17 | uVar4 * 0x200) + uVar2; + uVar6 = local_10c + 0x265e5a51 + uVar6 + (uVar5 & uVar3 | ~uVar3 & uVar2); + uVar4 = (uVar6 >> 0x12 | uVar6 * 0x4000) + uVar5; + uVar6 = (uVar4 & uVar2 | ~uVar2 & uVar5) + local_138 + -0x16493856 + uVar3; + uVar6 = (uVar6 >> 0xc | uVar6 * 0x100000) + uVar4; + uVar2 = local_124 + -0x29d0efa3 + uVar2 + (uVar6 & uVar5 | ~uVar5 & uVar4); + uVar3 = (uVar2 >> 0x1b | uVar2 * 0x20) + uVar6; + uVar2 = (uVar3 & uVar4 | ~uVar4 & uVar6) + local_110 + 0x2441453 + uVar5; + uVar2 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar3; + uVar4 = (uVar2 & uVar6 | ~uVar6 & uVar3) + local_fc + -0x275e197f + uVar4; + uVar4 = (uVar4 >> 0x12 | uVar4 * 0x4000) + uVar2; + uVar6 = local_128 + -0x182c0438 + uVar6 + (uVar4 & uVar3 | ~uVar3 & uVar2); + uVar5 = (uVar6 >> 0xc | uVar6 * 0x100000) + uVar4; + uVar6 = (uVar5 & uVar2 | ~uVar2 & uVar4) + local_114 + 0x21e1cde6 + uVar3; + uVar6 = (uVar6 >> 0x1b | uVar6 * 0x20) + uVar5; + uVar2 = (uVar6 & uVar4 | ~uVar4 & uVar5) + local_100 + -0x3cc8f82a + uVar2; + uVar2 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar6; + uVar4 = local_12c + -0xb2af279 + uVar4 + (uVar2 & uVar5 | ~uVar5 & uVar6); + uVar3 = (uVar4 >> 0x12 | uVar4 * 0x4000) + uVar2; + uVar4 = (uVar3 & uVar6 | ~uVar6 & uVar2) + local_118 + 0x455a14ed + uVar5; + uVar4 = (uVar4 >> 0xc | uVar4 * 0x100000) + uVar3; + uVar6 = (uVar4 & uVar2 | ~uVar2 & uVar3) + local_104 + -0x561c16fb + uVar6; + uVar6 = (uVar6 >> 0x1b | uVar6 * 0x20) + uVar4; + uVar2 = local_130 + -0x3105c08 + uVar2 + (uVar6 & uVar3 | ~uVar3 & uVar4); + uVar5 = (uVar2 >> 0x17 | uVar2 * 0x200) + uVar6; + uVar2 = (uVar5 & uVar4 | ~uVar4 & uVar6) + local_11c + 0x676f02d9 + uVar3; + uVar2 = (uVar2 >> 0x12 | uVar2 * 0x4000) + uVar5; + uVar4 = (uVar2 & uVar6 | ~uVar6 & uVar5) + local_108 + -0x72d5b376 + uVar4; + uVar4 = (uVar4 >> 0xc | uVar4 * 0x100000) + uVar2; + uVar6 = local_124 + -0x5c6be + uVar6 + (uVar2 ^ uVar5 ^ uVar4); + uVar3 = (uVar6 >> 0x1c | uVar6 * 0x10) + uVar4; + uVar6 = local_118 + -0x788e097f + uVar5 + (uVar4 ^ uVar2 ^ uVar3); + uVar5 = (uVar6 >> 0x15 | uVar6 * 0x800) + uVar3; + uVar6 = (uVar3 ^ uVar4 ^ uVar5) + local_10c + 0x6d9d6122 + uVar2; + uVar6 = (uVar6 >> 0x10 | uVar6 * 0x10000) + uVar5; + uVar2 = local_100 + -0x21ac7f4 + uVar4 + (uVar5 ^ uVar3 ^ uVar6); + uVar2 = (uVar2 >> 9 | uVar2 * 0x800000) + uVar6; + uVar4 = local_134 + -0x5b4115bc + uVar3 + (uVar6 ^ uVar5 ^ uVar2); + uVar3 = (uVar4 >> 0x1c | uVar4 * 0x10) + uVar2; + uVar4 = (uVar2 ^ uVar6 ^ uVar3) + local_128 + 0x4bdecfa9 + uVar5; + uVar4 = (uVar4 >> 0x15 | uVar4 * 0x800) + uVar3; + uVar6 = local_11c + -0x944b4a0 + uVar6 + (uVar3 ^ uVar2 ^ uVar4); + uVar5 = (uVar6 >> 0x10 | uVar6 * 0x10000) + uVar4; + uVar6 = local_110 + -0x41404390 + uVar2 + (uVar4 ^ uVar3 ^ uVar5); + uVar2 = (uVar6 >> 9 | uVar6 * 0x800000) + uVar5; + uVar6 = (uVar5 ^ uVar4 ^ uVar2) + local_104 + 0x289b7ec6 + uVar3; + uVar6 = (uVar6 >> 0x1c | uVar6 * 0x10) + uVar2; + uVar4 = local_138 + -0x155ed806 + uVar4 + (uVar2 ^ uVar5 ^ uVar6); + uVar3 = (uVar4 >> 0x15 | uVar4 * 0x800) + uVar6; + uVar4 = local_12c + -0x2b10cf7b + uVar5 + (uVar6 ^ uVar2 ^ uVar3); + uVar5 = (uVar4 >> 0x10 | uVar4 * 0x10000) + uVar3; + uVar2 = (uVar3 ^ uVar6 ^ uVar5) + local_120 + 0x4881d05 + uVar2; + uVar4 = (uVar2 >> 9 | uVar2 * 0x800000) + uVar5; + uVar6 = local_114 + -0x262b2fc7 + uVar6 + (uVar5 ^ uVar3 ^ uVar4); + uVar2 = (uVar6 >> 0x1c | uVar6 * 0x10) + uVar4; + uVar6 = local_108 + -0x1924661b + uVar3 + (uVar4 ^ uVar5 ^ uVar2); + uVar3 = (uVar6 >> 0x15 | uVar6 * 0x800) + uVar2; + uVar6 = (uVar2 ^ uVar4 ^ uVar3) + local_fc + 0x1fa27cf8 + uVar5; + uVar6 = (uVar6 >> 0x10 | uVar6 * 0x10000) + uVar3; + uVar4 = (uVar3 ^ uVar2 ^ uVar6) + local_130 + -0x3b53a99b + uVar4; + uVar4 = (uVar4 >> 9 | uVar4 * 0x800000) + uVar6; + uVar2 = ((~uVar3 | uVar4) ^ uVar6) + local_138 + -0xbd6ddbc + uVar2; + uVar2 = (uVar2 >> 0x1a | uVar2 * 0x40) + uVar4; + uVar3 = ((~uVar6 | uVar2) ^ uVar4) + local_11c + 0x432aff97 + uVar3; + uVar3 = (uVar3 >> 0x16 | uVar3 * 0x400) + uVar2; + uVar6 = ((~uVar4 | uVar3) ^ uVar2) + local_100 + -0x546bdc59 + uVar6; + uVar6 = (uVar6 >> 0x11 | uVar6 * 0x8000) + uVar3; + uVar4 = ((~uVar2 | uVar6) ^ uVar3) + local_124 + -0x36c5fc7 + uVar4; + uVar4 = (uVar4 >> 0xb | uVar4 * 0x200000) + uVar6; + uVar2 = ((~uVar3 | uVar4) ^ uVar6) + local_108 + 0x655b59c3 + uVar2; + uVar2 = (uVar2 >> 0x1a | uVar2 * 0x40) + uVar4; + uVar3 = ((~uVar6 | uVar2) ^ uVar4) + local_12c + -0x70f3336e + uVar3; + uVar3 = (uVar3 >> 0x16 | uVar3 * 0x400) + uVar2; + uVar6 = ((~uVar4 | uVar3) ^ uVar2) + local_110 + -0x100b83 + uVar6; + uVar6 = (uVar6 >> 0x11 | uVar6 * 0x8000) + uVar3; + uVar4 = ((~uVar2 | uVar6) ^ uVar3) + local_134 + -0x7a7ba22f + uVar4; + uVar4 = (uVar4 >> 0xb | uVar4 * 0x200000) + uVar6; + uVar2 = local_118 + 0x6fa87e4f + uVar2 + ((~uVar3 | uVar4) ^ uVar6); + uVar5 = (uVar2 >> 0x1a | uVar2 * 0x40) + uVar4; + uVar2 = local_fc + -0x1d31920 + uVar3 + ((~uVar6 | uVar5) ^ uVar4); + uVar3 = (uVar2 >> 0x16 | uVar2 * 0x400) + uVar5; + uVar6 = local_120 + -0x5cfebcec + uVar6 + ((~uVar4 | uVar3) ^ uVar5); + uVar2 = (uVar6 >> 0x11 | uVar6 * 0x8000) + uVar3; + uVar6 = local_104 + 0x4e0811a1 + uVar4 + ((~uVar5 | uVar2) ^ uVar3); + uVar4 = (uVar6 >> 0xb | uVar6 * 0x200000) + uVar2; + uVar6 = ((~uVar3 | uVar4) ^ uVar2) + local_128 + -0x8ac817e + uVar5; + uVar6 = (uVar6 >> 0x1a | uVar6 * 0x40) + uVar4; + *param_1 = *param_1 + uVar6; + uVar3 = ((~uVar2 | uVar6) ^ uVar4) + local_10c + -0x42c50dcb + uVar3; + uVar3 = (uVar3 >> 0x16 | uVar3 * 0x400) + uVar6; + param_1[3] = param_1[3] + uVar3; + uVar2 = ((~uVar4 | uVar3) ^ uVar6) + local_130 + 0x2ad7d2bb + uVar2; + uVar2 = (uVar2 >> 0x11 | uVar2 * 0x8000) + uVar3; + param_1[2] = param_1[2] + uVar2; + uVar6 = ((~uVar6 | uVar2) ^ uVar3) + local_114 + -0x14792c6f + uVar4; + param_1[1] = (uVar6 >> 0xb | uVar6 * 0x200000) + param_1[1] + uVar2; + return; +} + + +================================================================== + +### FUNC 00114e40 (246 bytes) name=FUN_00114e40 + +void FUN_00114e40(uint *param_1,void *param_2,uint param_3) + +{ + uint uVar1; + ulong __n; + uint uVar2; + uint uVar3; + uint *__dest; + uint uVar4; + + uVar2 = param_3 * 8; + uVar3 = *param_1; + uVar1 = uVar3 + uVar2; + *param_1 = uVar1; + uVar4 = uVar3 >> 3 & 0x3f; + uVar3 = 0x40 - uVar4; + if (uVar2 < uVar1 || uVar2 - uVar1 == 0) { + uVar2 = param_1[1]; + } + else { + uVar2 = param_1[1] + 1; + } + param_1[1] = (param_3 >> 0x1d) + uVar2; + if (param_3 < uVar3) { + __dest = (uint *)((long)param_1 + (ulong)uVar4 + 0x18); + __n = 0; + uVar3 = 0; + } + else { + __n = (ulong)uVar3; + __dest = param_1 + 6; + memcpy((void *)((long)param_1 + (ulong)uVar4 + 0x18),param_2,__n); + FUN_00114670(param_1 + 2,__dest); + uVar2 = 0x80 - uVar4; + if (0x80 - uVar4 <= param_3) { + while( true ) { + uVar3 = uVar2; + FUN_00114670(param_1 + 2,(long)param_2 + __n); + if (param_3 < uVar3 + 0x40) break; + __n = (ulong)uVar3; + uVar2 = uVar3 + 0x40; + } + __n = (ulong)uVar3; + } + } + memcpy(__dest,(void *)(__n + (long)param_2),(ulong)(param_3 - uVar3)); + return; +} + + +================================================================== + +### FUNC 00114f50 (151 bytes) name=FUN_00114f50 + +void FUN_00114f50(uint *param_1) + +{ + uint uVar1; + int iVar2; + long in_FS_OFFSET; + undefined1 auStack_28 [8]; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + uVar1 = *param_1 >> 3 & 0x3f; + iVar2 = 0x78 - uVar1; + if (uVar1 < 0x38) { + iVar2 = 0x38 - uVar1; + } + FUN_001145b0(auStack_28,param_1,8); + FUN_00114e40(param_1,&DAT_0033f5a0,iVar2); + FUN_00114e40(param_1,auStack_28,8); + FUN_001145b0(param_1 + 0x16,param_1 + 2,0x10); + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00114ff0 (112 bytes) name=FUN_00114ff0 + +bool FUN_00114ff0(long param_1,int param_2) + +{ + if ((((((0x373 < param_2) && (0.0 < *(float *)(param_1 + 0x2c4))) && + (*(float *)(param_1 + 0x2c4) <= DAT_00131e20)) && + ((0.0 < *(float *)(param_1 + 0x2cc) && (*(float *)(param_1 + 0x2cc) <= DAT_00131e20)))) && + ((0.0 < *(float *)(param_1 + 0x2d0) && + ((*(float *)(param_1 + 0x2d0) <= DAT_00131e20 && (*(int *)(param_1 + 0x2f0) + 100U < 0xc9)))) + )) && (-0x65 < *(int *)(param_1 + 0x2f4))) { + return *(int *)(param_1 + 0x2f4) < 0x65; + } + return false; +} + + +================================================================== + +### FUNC 00115070 (114 bytes) name=FUN_00115070 + +void FUN_00115070(undefined8 *param_1) + +{ + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + *(undefined1 *)((long)param_1 + 0xc) = 0; + param_1[2] = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined1 *)((long)param_1 + 0x1c) = 0; + param_1[4] = 0; + *(undefined4 *)(param_1 + 5) = 0; + *(undefined1 *)((long)param_1 + 0x2c) = 0; + param_1[6] = 0; + *(undefined4 *)(param_1 + 7) = 0; + *(undefined1 *)((long)param_1 + 0x3c) = 0; + param_1[8] = 0; + *(undefined4 *)(param_1 + 9) = 0; + *(undefined1 *)((long)param_1 + 0x4c) = 0; + param_1[10] = 0; + *(undefined4 *)(param_1 + 0xb) = 0; + *(undefined1 *)((long)param_1 + 0x5c) = 0; + return; +} + + +================================================================== + +### FUNC 001150f0 (1116 bytes) name=FUN_001150f0 + +undefined8 FUN_001150f0(long *param_1,char *param_2) + +{ + FILE *__s; + undefined8 uVar1; + long lVar2; + uint uVar3; + undefined8 *puVar4; + int iVar5; + int iVar6; + byte bVar7; + undefined4 local_16c; + undefined4 local_168; + uint local_164; + undefined4 local_160; + int local_15c; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + + bVar7 = 0; + if ((((param_1[2] == 0) || + ((((*param_1 != 0 && (9999999 < (int)param_1[1] - 1U)) || (9999999 < (int)param_1[3] - 1U)) + || ((param_1[4] != 0 && (9999999 < (int)param_1[5] - 1U)))))) || + ((param_1[6] != 0 && (9999999 < (int)param_1[7] - 1U)))) || + ((((param_1[8] != 0 && (9999999 < (int)param_1[9] - 1U)) || + ((param_1[10] != 0 && (9999999 < (int)param_1[0xb] - 1U)))) || + (__s = fopen(param_2,"wb"), __s == (FILE *)0x0)))) { + uVar1 = 0; + } + else { + local_16c = 0; + puVar4 = (undefined8 *)&local_d8; + for (lVar2 = 0x13; lVar2 != 0; lVar2 = lVar2 + -1) { + *puVar4 = 0; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + } + local_d8 = 0x5bb5b57b; + if ((void *)*param_1 != (void *)0x0) { + iVar5 = (int)param_1[1]; + iVar6 = (iVar5 + 3U & 0xfffffffc) - iVar5; + fwrite((void *)*param_1,1,(long)iVar5,__s); + if (0 < iVar6) { + iVar5 = 0; + do { + fwrite(&local_16c,1,1,__s); + iVar5 = iVar5 + 1; + } while (iVar5 != iVar6); + } + } + if (param_1[2] != 0) { + uVar3 = (int)param_1[3] + 3U & 0xfffffffc; + iVar5 = uVar3 - (int)param_1[3]; + puVar4 = (undefined8 *)&local_168; + for (lVar2 = 0x11; lVar2 != 0; lVar2 = lVar2 + -1) { + *puVar4 = 0; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + } + local_168 = 0x5bb5b55b; + local_164 = uVar3; + lVar2 = ftell(__s); + local_d4 = (undefined4)lVar2; + fwrite(&local_168,0x88,1,__s); + fwrite((void *)param_1[2],1,(long)(int)param_1[3],__s); + iVar6 = 0; + if (0 < iVar5) { + do { + fwrite(&local_16c,1,1,__s); + iVar6 = iVar6 + 1; + } while (iVar6 != iVar5); + } + } + if (param_1[4] != 0) { + uVar3 = (int)param_1[5] + 3U & 0xfffffffc; + iVar5 = uVar3 - (int)param_1[5]; + puVar4 = (undefined8 *)&local_168; + for (lVar2 = 0x11; lVar2 != 0; lVar2 = lVar2 + -1) { + *puVar4 = 0; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + } + local_168 = 0x5bb5b55c; + local_164 = uVar3; + lVar2 = ftell(__s); + local_d0 = (undefined4)lVar2; + fwrite(&local_168,0x88,1,__s); + fwrite((void *)param_1[4],1,(long)(int)param_1[5],__s); + iVar6 = 0; + if (0 < iVar5) { + do { + fwrite(&local_16c,1,1,__s); + iVar6 = iVar6 + 1; + } while (iVar6 != iVar5); + } + } + if (param_1[6] != 0) { + puVar4 = (undefined8 *)&local_168; + for (lVar2 = 0x12; lVar2 != 0; lVar2 = lVar2 + -1) { + *puVar4 = 0; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + } + local_168 = 0x5bb5b55d; + local_15c = (int)(int3)((uint)(int)param_1[7] >> 8); + local_164 = local_15c << 8; + lVar2 = ftell(__s); + local_cc = (undefined4)lVar2; + fwrite(&local_168,0x90,1,__s); + fwrite((void *)param_1[6],1,(long)(int)local_164,__s); + } + if (param_1[8] != 0) { + uVar3 = (int)param_1[9] + 3U & 0xfffffffc; + iVar5 = uVar3 - (int)param_1[9]; + puVar4 = (undefined8 *)&local_168; + for (lVar2 = 0x11; lVar2 != 0; lVar2 = lVar2 + -1) { + *puVar4 = 0; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + } + local_168 = 0x5bb5b55e; + local_160 = 2; + local_164 = uVar3; + lVar2 = ftell(__s); + local_c8 = (undefined4)lVar2; + fwrite(&local_168,0x88,1,__s); + fwrite((void *)param_1[8],1,(long)(int)param_1[9],__s); + iVar6 = 0; + if (0 < iVar5) { + do { + fwrite(&local_16c,1,1,__s); + iVar6 = iVar6 + 1; + } while (iVar6 != iVar5); + } + } + if (param_1[10] != 0) { + uVar3 = (int)param_1[0xb] + 3U & 0xfffffffc; + iVar5 = uVar3 - (int)param_1[0xb]; + puVar4 = (undefined8 *)&local_168; + for (lVar2 = 0x11; lVar2 != 0; lVar2 = lVar2 + -1) { + *puVar4 = 0; + puVar4 = puVar4 + (ulong)bVar7 * -2 + 1; + } + local_168 = 0x5bb5b55f; + local_164 = uVar3; + lVar2 = ftell(__s); + local_c4 = (undefined4)lVar2; + fwrite(&local_168,0x88,1,__s); + fwrite((void *)param_1[10],1,(long)(int)param_1[0xb],__s); + iVar6 = 0; + if (0 < iVar5) { + do { + fwrite(&local_16c,1,1,__s); + iVar6 = iVar6 + 1; + } while (iVar6 != iVar5); + } + } + fwrite(&local_d8,0x98,1,__s); + fclose(__s); + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 00115580 (89 bytes) name=FUN_00115580 + +void FUN_00115580(undefined8 *param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *param_1; + *(undefined4 *)(param_2 + 1) = *(undefined4 *)(param_1 + 1); + param_2[2] = param_1[2]; + *(undefined4 *)(param_2 + 3) = *(undefined4 *)(param_1 + 3); + param_2[4] = param_1[4]; + *(undefined4 *)(param_2 + 5) = *(undefined4 *)(param_1 + 5); + param_2[6] = param_1[6]; + *(undefined4 *)(param_2 + 7) = *(undefined4 *)(param_1 + 7); + param_2[8] = param_1[8]; + *(undefined4 *)(param_2 + 9) = *(undefined4 *)(param_1 + 9); + param_2[10] = param_1[10]; + *(undefined4 *)(param_2 + 0xb) = *(undefined4 *)(param_1 + 0xb); + } + return; +} + + +================================================================== + +### FUNC 001155e0 (269 bytes) name=FUN_001155e0 + +void FUN_001155e0(undefined8 *param_1) + +{ + if ((void *)*param_1 != (void *)0x0) { + if (*(char *)((long)param_1 + 0xc) != '\0') { + operator_delete__((void *)*param_1); + *(undefined1 *)((long)param_1 + 0xc) = 0; + } + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + } + if ((void *)param_1[2] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x1c) != '\0') { + operator_delete__((void *)param_1[2]); + *(undefined1 *)((long)param_1 + 0x1c) = 0; + } + param_1[2] = 0; + *(undefined4 *)(param_1 + 3) = 0; + } + if ((void *)param_1[4] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x2c) != '\0') { + operator_delete__((void *)param_1[4]); + *(undefined1 *)((long)param_1 + 0x2c) = 0; + } + param_1[4] = 0; + *(undefined4 *)(param_1 + 5) = 0; + } + if ((void *)param_1[6] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x3c) != '\0') { + operator_delete__((void *)param_1[6]); + *(undefined1 *)((long)param_1 + 0x3c) = 0; + } + param_1[6] = 0; + *(undefined4 *)(param_1 + 7) = 0; + } + if ((void *)param_1[8] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x4c) != '\0') { + operator_delete__((void *)param_1[8]); + *(undefined1 *)((long)param_1 + 0x4c) = 0; + } + param_1[8] = 0; + *(undefined4 *)(param_1 + 9) = 0; + } + if ((void *)param_1[10] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x5c) != '\0') { + operator_delete__((void *)param_1[10]); + *(undefined1 *)((long)param_1 + 0x5c) = 0; + } + param_1[10] = 0; + *(undefined4 *)(param_1 + 0xb) = 0; + } + return; +} + + +================================================================== + +### FUNC 00115700 (5 bytes) name=thunk_FUN_001155e0 + +void thunk_FUN_001155e0(undefined8 *param_1) + +{ + if ((void *)*param_1 != (void *)0x0) { + if (*(char *)((long)param_1 + 0xc) != '\0') { + operator_delete__((void *)*param_1); + *(undefined1 *)((long)param_1 + 0xc) = 0; + } + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + } + if ((void *)param_1[2] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x1c) != '\0') { + operator_delete__((void *)param_1[2]); + *(undefined1 *)((long)param_1 + 0x1c) = 0; + } + param_1[2] = 0; + *(undefined4 *)(param_1 + 3) = 0; + } + if ((void *)param_1[4] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x2c) != '\0') { + operator_delete__((void *)param_1[4]); + *(undefined1 *)((long)param_1 + 0x2c) = 0; + } + param_1[4] = 0; + *(undefined4 *)(param_1 + 5) = 0; + } + if ((void *)param_1[6] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x3c) != '\0') { + operator_delete__((void *)param_1[6]); + *(undefined1 *)((long)param_1 + 0x3c) = 0; + } + param_1[6] = 0; + *(undefined4 *)(param_1 + 7) = 0; + } + if ((void *)param_1[8] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x4c) != '\0') { + operator_delete__((void *)param_1[8]); + *(undefined1 *)((long)param_1 + 0x4c) = 0; + } + param_1[8] = 0; + *(undefined4 *)(param_1 + 9) = 0; + } + if ((void *)param_1[10] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x5c) != '\0') { + operator_delete__((void *)param_1[10]); + *(undefined1 *)((long)param_1 + 0x5c) = 0; + } + param_1[10] = 0; + *(undefined4 *)(param_1 + 0xb) = 0; + } + return; +} + + +================================================================== + +### FUNC 00115710 (5 bytes) name=thunk_FUN_001155e0 + +void thunk_FUN_001155e0(undefined8 *param_1) + +{ + if ((void *)*param_1 != (void *)0x0) { + if (*(char *)((long)param_1 + 0xc) != '\0') { + operator_delete__((void *)*param_1); + *(undefined1 *)((long)param_1 + 0xc) = 0; + } + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + } + if ((void *)param_1[2] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x1c) != '\0') { + operator_delete__((void *)param_1[2]); + *(undefined1 *)((long)param_1 + 0x1c) = 0; + } + param_1[2] = 0; + *(undefined4 *)(param_1 + 3) = 0; + } + if ((void *)param_1[4] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x2c) != '\0') { + operator_delete__((void *)param_1[4]); + *(undefined1 *)((long)param_1 + 0x2c) = 0; + } + param_1[4] = 0; + *(undefined4 *)(param_1 + 5) = 0; + } + if ((void *)param_1[6] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x3c) != '\0') { + operator_delete__((void *)param_1[6]); + *(undefined1 *)((long)param_1 + 0x3c) = 0; + } + param_1[6] = 0; + *(undefined4 *)(param_1 + 7) = 0; + } + if ((void *)param_1[8] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x4c) != '\0') { + operator_delete__((void *)param_1[8]); + *(undefined1 *)((long)param_1 + 0x4c) = 0; + } + param_1[8] = 0; + *(undefined4 *)(param_1 + 9) = 0; + } + if ((void *)param_1[10] != (void *)0x0) { + if (*(char *)((long)param_1 + 0x5c) != '\0') { + operator_delete__((void *)param_1[10]); + *(undefined1 *)((long)param_1 + 0x5c) = 0; + } + param_1[10] = 0; + *(undefined4 *)(param_1 + 0xb) = 0; + } + return; +} + + +================================================================== + +### FUNC 00115720 (112 bytes) name=FUN_00115720 + +void FUN_00115720(undefined8 *param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + FUN_001155e0(); + *param_1 = *param_2; + *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1); + param_1[2] = param_2[2]; + *(undefined4 *)(param_1 + 3) = *(undefined4 *)(param_2 + 3); + param_1[4] = param_2[4]; + *(undefined4 *)(param_1 + 5) = *(undefined4 *)(param_2 + 5); + param_1[6] = param_2[6]; + *(undefined4 *)(param_1 + 7) = *(undefined4 *)(param_2 + 7); + param_1[8] = param_2[8]; + *(undefined4 *)(param_1 + 9) = *(undefined4 *)(param_2 + 9); + param_1[10] = param_2[10]; + *(undefined4 *)(param_1 + 0xb) = *(undefined4 *)(param_2 + 0xb); + } + return; +} + + +================================================================== + +### FUNC 00115790 (1547 bytes) name=FUN_00115790 + +undefined4 FUN_00115790(undefined8 *param_1,char *param_2) + +{ + int iVar1; + undefined4 uVar2; + FILE *__stream; + long lVar3; + size_t sVar4; + void *pvVar5; + int *piVar6; + byte bVar7; + int local_3a8; + int local_3a4; + int local_318; + int local_314; + int local_288; + int local_284; + int local_1f8; + int local_1f4; + int local_168; + int local_164; + int local_d8; + int local_d4; + int local_d0; + int local_cc; + int local_c8; + int local_c4; + + bVar7 = 0; + uVar2 = 0; + FUN_001155e0(); + __stream = fopen(param_2,"rb"); + if (__stream == (FILE *)0x0) { + return 0; + } + fseek(__stream,0,2); + lVar3 = ftell(__stream); + iVar1 = (int)lVar3; + if (iVar1 < 0x400) goto LAB_00115950; + piVar6 = &local_3a8; + for (lVar3 = 0x11; lVar3 != 0; lVar3 = lVar3 + -1) { + piVar6[0] = 0; + piVar6[1] = 0; + piVar6 = piVar6 + ((ulong)bVar7 * -2 + 1) * 2; + } + piVar6 = &local_318; + for (lVar3 = 0x11; lVar3 != 0; lVar3 = lVar3 + -1) { + piVar6[0] = 0; + piVar6[1] = 0; + piVar6 = piVar6 + ((ulong)bVar7 * -2 + 1) * 2; + } + piVar6 = &local_168; + for (lVar3 = 0x12; lVar3 != 0; lVar3 = lVar3 + -1) { + piVar6[0] = 0; + piVar6[1] = 0; + piVar6 = piVar6 + ((ulong)bVar7 * -2 + 1) * 2; + } + piVar6 = &local_288; + for (lVar3 = 0x11; lVar3 != 0; lVar3 = lVar3 + -1) { + piVar6[0] = 0; + piVar6[1] = 0; + piVar6 = piVar6 + ((ulong)bVar7 * -2 + 1) * 2; + } + piVar6 = &local_1f8; + for (lVar3 = 0x11; lVar3 != 0; lVar3 = lVar3 + -1) { + piVar6[0] = 0; + piVar6[1] = 0; + piVar6 = piVar6 + ((ulong)bVar7 * -2 + 1) * 2; + } + piVar6 = &local_d8; + for (lVar3 = 0x13; lVar3 != 0; lVar3 = lVar3 + -1) { + piVar6[0] = 0; + piVar6[1] = 0; + piVar6 = piVar6 + ((ulong)bVar7 * -2 + 1) * 2; + } + fseek(__stream,(long)(iVar1 + -0x98),0); + sVar4 = fread(&local_d8,1,0x98,__stream); + if (sVar4 != 0x98) goto LAB_00115950; + if (local_d8 != 0x5bb5b57b) { + fseek(__stream,0,0); + sVar4 = fread(&local_3a8,1,0x88,__stream); + if (sVar4 == 0x88) { + if (local_3a8 == 0x5bb5b55b) { + *(int *)(param_1 + 3) = local_3a4; + if (9999999 < local_3a4 - 1U) goto LAB_00115c20; + pvVar5 = operator_new__((long)local_3a4); + *(undefined1 *)((long)param_1 + 0x1c) = 1; + param_1[2] = pvVar5; + iVar1 = *(int *)(param_1 + 3); + } + else { + *(int *)(param_1 + 3) = iVar1; + if (9999999 < iVar1 - 1U) goto LAB_00115c20; + pvVar5 = operator_new__((long)iVar1); + param_1[2] = pvVar5; + *(undefined1 *)((long)param_1 + 0x1c) = 1; + fseek(__stream,0,0); + iVar1 = *(int *)(param_1 + 3); + pvVar5 = (void *)param_1[2]; + } + sVar4 = fread(pvVar5,1,(long)iVar1,__stream); + if (((long)*(int *)(param_1 + 3) != sVar4) || + (uVar2 = FUN_00114ff0(param_1[2]), (char)uVar2 == '\0')) goto LAB_00115c20; + } + goto LAB_00115950; + } + if ((((local_d4 < 0) || (local_d0 < 0)) || (local_cc < 0)) || ((local_c8 < 0 || (local_c4 < 0)))) + goto LAB_00115c20; + if (local_d4 != 0) { + *(int *)(param_1 + 1) = local_d4; + if (9999999 < local_d4 - 1U) goto LAB_00115c20; + pvVar5 = operator_new__((long)local_d4); + *param_1 = pvVar5; + *(undefined1 *)((long)param_1 + 0xc) = 1; + fseek(__stream,0,0); + sVar4 = fread((void *)*param_1,1,(long)*(int *)(param_1 + 1),__stream); + if ((long)*(int *)(param_1 + 1) != sVar4) goto LAB_00115c20; + } + fseek(__stream,(long)local_d4,0); + local_3a8 = 0; + sVar4 = fread(&local_3a8,1,0x88,__stream); + if (((sVar4 == 0x88) && (local_3a8 == 0x5bb5b55b)) && + (*(int *)(param_1 + 3) = local_3a4, local_3a4 - 1U < 10000000)) { + pvVar5 = operator_new__((long)local_3a4); + param_1[2] = pvVar5; + *(undefined1 *)((long)param_1 + 0x1c) = 1; + sVar4 = fread(pvVar5,1,(long)*(int *)(param_1 + 3),__stream); + if (((long)*(int *)(param_1 + 3) == sVar4) && + (uVar2 = FUN_00114ff0(param_1[2]), (char)uVar2 != '\0')) { + if (0 < local_d0) { + fseek(__stream,(long)local_d0,0); + sVar4 = fread(&local_318,1,0x88,__stream); + if (((sVar4 != 0x88) || (local_318 != 0x5bb5b55c)) || + (*(int *)(param_1 + 5) = local_314, 9999999 < local_314 - 1U)) goto LAB_00115c20; + pvVar5 = operator_new__((long)local_314); + param_1[4] = pvVar5; + *(undefined1 *)((long)param_1 + 0x2c) = 1; + sVar4 = fread(pvVar5,1,(long)*(int *)(param_1 + 5),__stream); + if ((long)*(int *)(param_1 + 5) != sVar4) goto LAB_00115c20; + } + if (0 < local_cc) { + fseek(__stream,(long)local_cc,0); + sVar4 = fread(&local_168,1,0x90,__stream); + if (((sVar4 != 0x90) || (local_168 != 0x5bb5b55d)) || + (*(int *)(param_1 + 7) = local_164, 9999999 < local_164 - 1U)) goto LAB_00115c20; + pvVar5 = operator_new__((long)local_164); + param_1[6] = pvVar5; + *(undefined1 *)((long)param_1 + 0x3c) = 1; + sVar4 = fread(pvVar5,1,(long)*(int *)(param_1 + 7),__stream); + if ((long)*(int *)(param_1 + 7) != sVar4) goto LAB_00115c20; + } + if (0 < local_c8) { + fseek(__stream,(long)local_c8,0); + sVar4 = fread(&local_288,1,0x88,__stream); + if (((sVar4 != 0x88) || (local_288 != 0x5bb5b55e)) || + (*(int *)(param_1 + 9) = local_284, 9999999 < local_284 - 1U)) goto LAB_00115c20; + pvVar5 = operator_new__((long)local_284); + param_1[8] = pvVar5; + *(undefined1 *)((long)param_1 + 0x4c) = 1; + sVar4 = fread(pvVar5,1,(long)*(int *)(param_1 + 9),__stream); + if ((long)*(int *)(param_1 + 9) != sVar4) goto LAB_00115c20; + } + if (local_c4 < 1) { +LAB_00115950: + fclose(__stream); + return uVar2; + } + fseek(__stream,(long)local_c4,0); + sVar4 = fread(&local_1f8,1,0x88,__stream); + if (((sVar4 == 0x88) && (local_1f8 == 0x5bb5b55f)) && + (*(int *)(param_1 + 0xb) = local_1f4, local_1f4 - 1U < 10000000)) { + pvVar5 = operator_new__((long)local_1f4); + param_1[10] = pvVar5; + *(undefined1 *)((long)param_1 + 0x5c) = 1; + sVar4 = fread(pvVar5,1,(long)*(int *)(param_1 + 0xb),__stream); + if ((long)*(int *)(param_1 + 0xb) == sVar4) goto LAB_00115950; + } + } + } +LAB_00115c20: + fclose(__stream); + FUN_001155e0(param_1); + return 0; +} + + +================================================================== + +### FUNC 00115db0 (13 bytes) name=FUN_00115db0 + +bool FUN_00115db0(undefined8 param_1,int param_2) + +{ + return param_2 - 1U < 10000000; +} + + +================================================================== + +### FUNC 00115dc0 (131 bytes) name=FUN_00115dc0 + +undefined8 FUN_00115dc0(undefined8 *param_1,void *param_2,int param_3,char param_4) + +{ + undefined8 uVar1; + void *__dest; + + uVar1 = 0; + if (param_3 - 1U < 10000000) { + if (((void *)*param_1 != (void *)0x0) && (*(char *)((long)param_1 + 0xc) != '\0')) { + operator_delete__((void *)*param_1); + } + if (param_4 == '\0') { + *param_1 = param_2; + } + else { + __dest = operator_new__((long)param_3); + *param_1 = __dest; + memcpy(__dest,param_2,(long)param_3); + } + *(char *)((long)param_1 + 0xc) = param_4; + *(int *)(param_1 + 1) = param_3; + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 00115e50 (134 bytes) name=FUN_00115e50 + +undefined8 FUN_00115e50(long param_1,void *param_2,int param_3,char param_4) + +{ + undefined8 uVar1; + void *__dest; + + uVar1 = 0; + if (param_3 - 1U < 10000000) { + if ((*(void **)(param_1 + 0x10) != (void *)0x0) && (*(char *)(param_1 + 0x1c) != '\0')) { + operator_delete__(*(void **)(param_1 + 0x10)); + } + if (param_4 == '\0') { + *(void **)(param_1 + 0x10) = param_2; + } + else { + __dest = operator_new__((long)param_3); + *(void **)(param_1 + 0x10) = __dest; + memcpy(__dest,param_2,(long)param_3); + } + *(char *)(param_1 + 0x1c) = param_4; + *(int *)(param_1 + 0x18) = param_3; + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 00115ee0 (134 bytes) name=FUN_00115ee0 + +undefined8 FUN_00115ee0(long param_1,void *param_2,int param_3,char param_4) + +{ + undefined8 uVar1; + void *__dest; + + uVar1 = 0; + if (param_3 - 1U < 10000000) { + if ((*(void **)(param_1 + 0x20) != (void *)0x0) && (*(char *)(param_1 + 0x2c) != '\0')) { + operator_delete__(*(void **)(param_1 + 0x20)); + } + if (param_4 == '\0') { + *(void **)(param_1 + 0x20) = param_2; + } + else { + __dest = operator_new__((long)param_3); + *(void **)(param_1 + 0x20) = __dest; + memcpy(__dest,param_2,(long)param_3); + } + *(char *)(param_1 + 0x2c) = param_4; + *(int *)(param_1 + 0x28) = param_3; + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 00115f70 (145 bytes) name=FUN_00115f70 + +undefined8 FUN_00115f70(long param_1,void *param_2,uint param_3,char param_4) + +{ + uint uVar1; + undefined8 uVar2; + void *__dest; + + uVar1 = param_3 + 0xff; + if (-1 < (int)param_3) { + uVar1 = param_3; + } + uVar2 = 0; + uVar1 = uVar1 & 0xffffff00; + if (uVar1 - 1 < 10000000) { + if ((*(void **)(param_1 + 0x30) != (void *)0x0) && (*(char *)(param_1 + 0x3c) != '\0')) { + operator_delete__(*(void **)(param_1 + 0x30)); + } + if (param_4 == '\0') { + *(void **)(param_1 + 0x30) = param_2; + } + else { + __dest = operator_new__((long)(int)uVar1); + *(void **)(param_1 + 0x30) = __dest; + memcpy(__dest,param_2,(long)(int)uVar1); + } + *(char *)(param_1 + 0x3c) = param_4; + *(uint *)(param_1 + 0x38) = uVar1; + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### FUNC 00116010 (134 bytes) name=FUN_00116010 + +undefined8 FUN_00116010(long param_1,void *param_2,int param_3,char param_4) + +{ + undefined8 uVar1; + void *__dest; + + uVar1 = 0; + if (param_3 - 1U < 10000000) { + if ((*(void **)(param_1 + 0x40) != (void *)0x0) && (*(char *)(param_1 + 0x4c) != '\0')) { + operator_delete__(*(void **)(param_1 + 0x40)); + } + if (param_4 == '\0') { + *(void **)(param_1 + 0x40) = param_2; + } + else { + __dest = operator_new__((long)param_3); + *(void **)(param_1 + 0x40) = __dest; + memcpy(__dest,param_2,(long)param_3); + } + *(char *)(param_1 + 0x4c) = param_4; + *(int *)(param_1 + 0x48) = param_3; + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 001160a0 (134 bytes) name=FUN_001160a0 + +undefined8 FUN_001160a0(long param_1,void *param_2,int param_3,char param_4) + +{ + undefined8 uVar1; + void *__dest; + + uVar1 = 0; + if (param_3 - 1U < 10000000) { + if ((*(void **)(param_1 + 0x50) != (void *)0x0) && (*(char *)(param_1 + 0x5c) != '\0')) { + operator_delete__(*(void **)(param_1 + 0x50)); + } + if (param_4 == '\0') { + *(void **)(param_1 + 0x50) = param_2; + } + else { + __dest = operator_new__((long)param_3); + *(void **)(param_1 + 0x50) = __dest; + memcpy(__dest,param_2,(long)param_3); + } + *(char *)(param_1 + 0x5c) = param_4; + *(int *)(param_1 + 0x58) = param_3; + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### FUNC 00116130 (21 bytes) name=FUN_00116130 + +undefined4 FUN_00116130(undefined8 *param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *param_1; + return *(undefined4 *)(param_1 + 1); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00116150 (22 bytes) name=FUN_00116150 + +undefined4 FUN_00116150(long param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 0x10); + return *(undefined4 *)(param_1 + 0x18); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00116170 (22 bytes) name=FUN_00116170 + +undefined4 FUN_00116170(long param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 0x20); + return *(undefined4 *)(param_1 + 0x28); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 00116190 (22 bytes) name=FUN_00116190 + +undefined4 FUN_00116190(long param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 0x30); + return *(undefined4 *)(param_1 + 0x38); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 001161b0 (22 bytes) name=FUN_001161b0 + +undefined4 FUN_001161b0(long param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 0x40); + return *(undefined4 *)(param_1 + 0x48); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 001161d0 (22 bytes) name=FUN_001161d0 + +undefined4 FUN_001161d0(long param_1,undefined8 *param_2) + +{ + if (param_2 != (undefined8 *)0x0) { + *param_2 = *(undefined8 *)(param_1 + 0x50); + return *(undefined4 *)(param_1 + 0x58); + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 001161f0 (83 bytes) name=FUN_001161f0 + +void FUN_001161f0(ulong *param_1,ulong param_2) + +{ + void *pvVar1; + undefined8 *puVar2; + + *param_1 = param_2; + param_1[1] = 0; + param_1[2] = 0; + if (param_2 != 0) { + pvVar1 = operator_new__(param_2); + param_1[1] = (ulong)pvVar1; + param_1[2] = (ulong)pvVar1; + return; + } + puVar2 = (undefined8 *)__cxa_allocate_exception(8); + *puVar2 = "ParamError: Invalid array size.[MStream::MStream]"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar2,&PTR_vtable_0033ec10,0); +} + + +================================================================== + +### FUNC 00116250 (84 bytes) name=FUN_00116250 + +void FUN_00116250(ulong *param_1,char *param_2,size_t param_3) + +{ + void *__dest; + + if (param_3 == 0) { + param_3 = strlen(param_2); + param_3 = param_3 + 1; + } + *param_1 = param_3 + 1; + __dest = operator_new__(param_3 + 1); + param_1[1] = (ulong)__dest; + memcpy(__dest,param_2,param_3); + *(undefined1 *)(param_1[1] + param_3) = 0; + param_1[2] = param_1[1] + *param_1; + return; +} + + +================================================================== + +### FUNC 001162b0 (84 bytes) name=FUN_001162b0 + +void FUN_001162b0(ulong *param_1,long *param_2) + +{ + void *__src; + void *__dest; + ulong uVar1; + + uVar1 = *(long *)(*param_2 + -0x18) + 1; + *param_1 = uVar1; + __dest = operator_new__(uVar1); + __src = (void *)*param_2; + param_1[1] = (ulong)__dest; + memcpy(__dest,__src,*param_1 - 1); + *(undefined1 *)((param_1[1] - 1) + *param_1) = 0; + param_1[2] = param_1[1] + *param_1; + return; +} + + +================================================================== + +### FUNC 00116310 (23 bytes) name=FUN_00116310 + +void FUN_00116310(undefined8 *param_1,undefined8 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + return; +} + + +================================================================== + +### FUNC 00116330 (45 bytes) name=FUN_00116330 + +void FUN_00116330(ulong *param_1,ulong *param_2) + +{ + void *pvVar1; + + *param_1 = *param_2; + pvVar1 = (void *)0x0; + if ((void *)param_1[1] != (void *)0x0) { + operator_delete__((void *)param_1[1]); + pvVar1 = operator_new__(*param_1); + param_1[1] = (ulong)pvVar1; + } + param_1[2] = (ulong)pvVar1; + return; +} + + +================================================================== + +### FUNC 00116360 (16 bytes) name=FUN_00116360 + +void FUN_00116360(long param_1) + +{ + if (*(void **)(param_1 + 8) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 8)); + return; + } + return; +} + + +================================================================== + +### FUNC 00116380 (253 bytes) name=FUN_00116380 + +long FUN_00116380(ulong param_1,undefined1 *param_2) + +{ + undefined1 uVar1; + undefined1 *puVar2; + undefined1 *puVar3; + undefined1 *puVar4; + undefined1 *puVar5; + undefined1 uVar6; + ulong uVar7; + long in_FS_OFFSET; + undefined8 local_30; + undefined8 local_28; + undefined8 local_20; + long local_10; + + local_10 = *(long *)(in_FS_OFFSET + 0x28); + local_30 = 0x3031323334353637; + local_28 = 0x3837363534333231; + local_20 = 0x46454443424139; + puVar4 = param_2; + do { + puVar2 = puVar4 + 1; + uVar7 = param_1 >> 4; + *puVar4 = *(undefined1 *)((long)&local_30 + (long)(int)((uint)param_1 & 0xf) + 7); + puVar4 = puVar2; + param_1 = uVar7; + } while (uVar7 != 0); + if ((ulong)((long)puVar2 - (long)param_2) < 0x10) { + puVar5 = puVar2 + (0x10 - ((long)puVar2 - (long)param_2)); + do { + puVar3 = puVar4 + 1; + *puVar4 = 0x30; + puVar4 = puVar3; + puVar2 = puVar5; + } while (puVar3 != puVar5); + } + *puVar2 = 0x78; + puVar2[1] = 0x30; + if ((param_2 != puVar2 + 2) && (param_2 < puVar2 + 1)) { + uVar6 = 0x30; + puVar4 = param_2; + puVar5 = puVar2 + 1; + while( true ) { + uVar1 = *puVar4; + puVar3 = puVar5 + -1; + *puVar4 = uVar6; + puVar4 = puVar4 + 1; + *puVar5 = uVar1; + if (puVar3 <= puVar4) break; + uVar6 = *puVar3; + puVar5 = puVar3; + } + } + if (local_10 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return (long)(puVar2 + 2) - (long)param_2; +} + + +================================================================== + +### FUNC 00116480 (12 bytes) name=FUN_00116480 + +long FUN_00116480(long *param_1) + +{ + return (param_1[1] - param_1[2]) + *param_1; +} + + +================================================================== + +### FUNC 00116490 (184 bytes) name=FUN_00116490 + +void FUN_00116490(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8, + long *param_9,undefined8 param_10,undefined8 param_11,undefined8 param_12, + undefined8 param_13,undefined8 param_14) + +{ + char in_AL; + int iVar1; + undefined4 local_d0; + undefined4 local_cc; + undefined1 *local_c8; + undefined1 *local_c0; + undefined1 local_b8 [16]; + undefined8 local_a8; + undefined8 local_a0; + undefined8 local_98; + undefined8 local_90; + undefined8 local_88; + undefined8 local_78; + undefined8 local_68; + undefined8 local_58; + undefined8 local_48; + undefined8 local_38; + undefined8 local_28; + undefined8 local_18; + + if (in_AL != '\0') { + local_88 = param_1; + local_78 = param_2; + local_68 = param_3; + local_58 = param_4; + local_48 = param_5; + local_38 = param_6; + local_28 = param_7; + local_18 = param_8; + } + local_c8 = &stack0x00000008; + local_c0 = local_b8; + local_d0 = 0x10; + local_cc = 0x30; + local_a8 = param_11; + local_a0 = param_12; + local_98 = param_13; + local_90 = param_14; + iVar1 = __vsnprintf_chk(param_9[2],(param_9[1] - param_9[2]) + *param_9,1,0xffffffffffffffff, + param_10,&local_d0); + param_9[2] = param_9[2] + (long)iVar1; + return; +} + + +================================================================== + +### FUNC 00116550 (5 bytes) name=FUN_00116550 + +undefined8 FUN_00116550(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 00116560 (5 bytes) name=FUN_00116560 + +undefined8 FUN_00116560(long param_1) + +{ + return *(undefined8 *)(param_1 + 8); +} + + +================================================================== + +### FUNC 00116570 (15 bytes) name=FUN_00116570 + +void FUN_00116570(long param_1,undefined8 param_2) + +{ + FUN_001070a0(param_2,*(undefined8 *)(param_1 + 8)); + return; +} + + +================================================================== + +### FUNC 00116580 (23 bytes) name=FUN_00116580 + +bool FUN_00116580(long param_1,FILE *param_2) + +{ + int iVar1; + + iVar1 = fputs(*(char **)(param_1 + 8),param_2); + return iVar1 == 0; +} + + +================================================================== + +### FUNC 001165a0 (62 bytes) name=FUN_001165a0 + +void FUN_001165a0(long *param_1,void *param_2,size_t param_3) + +{ + long lVar1; + + if (param_3 + 1 < (ulong)((param_1[1] - param_1[2]) + *param_1)) { + memcpy((void *)param_1[2],param_2,param_3); + lVar1 = param_1[2]; + param_1[2] = (long)(param_3 + lVar1); + *(undefined1 *)(param_3 + lVar1) = 0; + } + return; +} + + +================================================================== + +### FUNC 001165e0 (40 bytes) name=FUN_001165e0 + +void FUN_001165e0(undefined8 param_1,char *param_2) + +{ + size_t sVar1; + + sVar1 = strlen(param_2); + FUN_001165a0(param_1,param_2,(long)(int)sVar1); + return; +} + + +================================================================== + +### FUNC 00116610 (9 bytes) name=FUN_00116610 + +void FUN_00116610(long param_1) + +{ + *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_1 + 8); + return; +} + + +================================================================== + +### FUNC 00116620 (12 bytes) name=FUN_00116620 + +undefined8 FUN_00116620(long param_1) + +{ + return CONCAT71((int7)((ulong)*(long *)(param_1 + 8) >> 8), + *(long *)(param_1 + 0x10) == *(long *)(param_1 + 8)); +} + + +================================================================== + +### FUNC 00116630 (14 bytes) name=FUN_00116630 + +undefined8 FUN_00116630(undefined8 param_1) + +{ + FUN_001165e0(); + return param_1; +} + + +================================================================== + +### FUNC 00116640 (44 bytes) name=FUN_00116640 + +long * FUN_00116640(long *param_1,undefined1 param_2) + +{ + long lVar1; + + if (2 < (ulong)((param_1[1] - param_1[2]) + *param_1)) { + *(undefined1 *)param_1[2] = param_2; + lVar1 = param_1[2]; + param_1[2] = lVar1 + 1; + *(undefined1 *)(lVar1 + 1) = 0; + } + return param_1; +} + + +================================================================== + +### FUNC 00116670 (320 bytes) name=FUN_00116670 + +undefined8 * FUN_00116670(undefined8 *param_1,long param_2,char param_3) + +{ + ulong uVar1; + undefined8 *puVar2; + ulong uVar3; + ulong uVar4; + undefined8 local_58; + void *local_50; + undefined8 local_48; + + uVar4 = *(ulong *)(param_2 + 8); + uVar1 = *(ulong *)(param_2 + 0x10); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + if (uVar4 < uVar1) { + uVar1 = uVar4 + 1; + do { + while (uVar3 = uVar1, *(char *)(uVar3 - 1) == param_3) { + FUN_00116250(&local_58,uVar4,(uVar3 - 1) - uVar4); + puVar2 = (undefined8 *)param_1[1]; + if (puVar2 == (undefined8 *)param_1[2]) { + FUN_00116b80(param_1,puVar2,&local_58); + } + else { + if (puVar2 != (undefined8 *)0x0) { + *puVar2 = local_58; + puVar2[1] = local_50; + puVar2[2] = local_48; + } + param_1[1] = puVar2 + 3; + } + if (local_50 != (void *)0x0) { + operator_delete__(local_50); + } + uVar1 = uVar3 + 1; + uVar4 = uVar3; + if (*(ulong *)(param_2 + 0x10) <= uVar3) goto LAB_00116738; + } + uVar1 = uVar3 + 1; + } while (uVar3 < *(ulong *)(param_2 + 0x10)); +LAB_00116738: + if (1 < (long)(uVar3 - uVar4)) { + FUN_00116250(&local_58); + puVar2 = (undefined8 *)param_1[1]; + if (puVar2 == (undefined8 *)param_1[2]) { + FUN_00116b80(param_1,puVar2,&local_58); + } + else { + if (puVar2 != (undefined8 *)0x0) { + *puVar2 = local_58; + puVar2[1] = local_50; + puVar2[2] = local_48; + } + param_1[1] = puVar2 + 3; + } + if (local_50 != (void *)0x0) { + operator_delete__(local_50); + } + } + } + return param_1; +} + + +================================================================== + +### FUNC 001167f0 (755 bytes) name=FUN_001167f0 + +undefined8 * FUN_001167f0(undefined8 *param_1,long param_2,char *param_3) + +{ + char *pcVar1; + undefined8 *puVar2; + size_t sVar3; + long lVar4; + undefined8 *puVar5; + undefined8 uVar6; + undefined8 *puVar7; + ulong uVar8; + undefined8 *puVar9; + char *pcVar10; + char *pcVar11; + undefined8 *puVar12; + undefined8 *local_78; + undefined8 *local_70; + undefined8 *local_68; + undefined8 local_58; + void *local_50; + undefined8 local_48; + + sVar3 = strlen(param_3); + if ((int)sVar3 == 1) { + FUN_00116670(param_1,param_2,(int)*param_3); + } + else if ((int)sVar3 == 2) { + lVar4 = *(long *)(param_2 + 0x10); + pcVar10 = *(char **)(param_2 + 8); + local_78 = (undefined8 *)0x0; + local_70 = (undefined8 *)0x0; + local_68 = (undefined8 *)0x0; + pcVar1 = (char *)(lVar4 - 1); + pcVar11 = pcVar10; + if (pcVar10 < pcVar1) { + do { + while ((*param_3 != *pcVar10 || (param_3[1] != pcVar10[1]))) { + pcVar10 = pcVar10 + 1; + if (pcVar1 <= pcVar10) goto LAB_001168e8; + } + FUN_00116250(&local_58,pcVar11,(long)pcVar10 - (long)pcVar11); + if (local_70 == local_68) { + FUN_00116b80(&local_78,local_70,&local_58); + } + else { + if (local_70 != (undefined8 *)0x0) { + *local_70 = local_58; + local_70[1] = local_50; + local_70[2] = local_48; + } + local_70 = local_70 + 3; + } + pcVar10 = pcVar10 + 2; + if (local_50 != (void *)0x0) { + operator_delete__(local_50); + } + pcVar11 = pcVar10; + } while (pcVar10 < pcVar1); +LAB_001168e8: + lVar4 = *(long *)(param_2 + 0x10); + } + if (1 < lVar4 - (long)pcVar11) { + FUN_00116250(&local_58); + if (local_70 == local_68) { + FUN_00116b80(&local_78,local_70,&local_58); + } + else { + if (local_70 != (undefined8 *)0x0) { + *local_70 = local_58; + local_70[1] = local_50; + local_70[2] = local_48; + } + local_70 = local_70 + 3; + } + if (local_50 != (void *)0x0) { + operator_delete__(local_50); + } + } + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + lVar4 = (long)local_70 - (long)local_78 >> 3; + uVar8 = lVar4 * -0x5555555555555555; + if (uVar8 == 0) { + uVar8 = 0; + puVar5 = (undefined8 *)0x0; + } + else { + if (0xaaaaaaaaaaaaaaa < uVar8) { + uVar6 = std::__throw_bad_alloc(); + FUN_00116b20(&local_78); + /* WARNING: Subroutine does not return */ + _Unwind_Resume(uVar6); + } + uVar8 = lVar4 * 8; + puVar5 = operator_new(uVar8); + } + puVar2 = local_70; + *param_1 = puVar5; + param_1[1] = puVar5; + param_1[2] = uVar8 + (long)puVar5; + puVar7 = local_78; + puVar9 = puVar5; + puVar12 = local_70; + if (local_70 != local_78) { + do { + if (puVar9 != (undefined8 *)0x0) { + *puVar9 = *puVar7; + puVar9[1] = puVar7[1]; + puVar9[2] = puVar7[2]; + } + puVar7 = puVar7 + 3; + puVar9 = puVar9 + 3; + } while (puVar7 != local_70); + param_1[1] = (long)puVar5 + + ((long)local_70 - (long)(local_78 + 3) & 0xfffffffffffffff8U) + 0x18; + puVar5 = local_78 + 3; + puVar7 = local_78; + while( true ) { + puVar9 = puVar5; + if ((void *)puVar7[1] != (void *)0x0) { + operator_delete__((void *)puVar7[1]); + } + puVar12 = local_78; + if (puVar9 == puVar2) break; + puVar5 = puVar9 + 3; + puVar7 = puVar9; + } + } + if (puVar12 != (undefined8 *)0x0) { + operator_delete(puVar12); + } + } + else { + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + return param_1; +} + + +================================================================== + +### FUNC 00116b20 (75 bytes) name=FUN_00116b20 + +void FUN_00116b20(long *param_1) + +{ + void *pvVar1; + void *pvVar2; + + pvVar2 = (void *)param_1[1]; + pvVar1 = (void *)*param_1; + if (pvVar2 != pvVar1) { + do { + if (*(void **)((long)pvVar1 + 8) != (void *)0x0) { + operator_delete__(*(void **)((long)pvVar1 + 8)); + } + pvVar1 = (void *)((long)pvVar1 + 0x18); + } while (pvVar2 != pvVar1); + pvVar2 = (void *)*param_1; + } + if (pvVar2 == (void *)0x0) { + return; + } + operator_delete(pvVar2); + return; +} + + +================================================================== + +### FUNC 00116b80 (685 bytes) name=FUN_00116b80 + +void FUN_00116b80(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3) + +{ + undefined8 uVar1; + ulong uVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + long lVar6; + undefined8 *puVar7; + undefined8 *puVar8; + undefined8 *puVar9; + ulong local_68; + undefined8 local_58; + void *local_50; + undefined8 local_48; + + puVar9 = (undefined8 *)param_1[1]; + if (puVar9 != (undefined8 *)param_1[2]) { + if (puVar9 != (undefined8 *)0x0) { + *puVar9 = puVar9[-3]; + puVar9[1] = puVar9[-2]; + puVar9[2] = puVar9[-1]; + } + puVar7 = puVar9 + -3; + param_1[1] = puVar9 + 3; + local_58 = *param_3; + local_50 = (void *)param_3[1]; + local_48 = param_3[2]; + lVar6 = ((long)puVar7 - (long)param_2 >> 3) * -0x5555555555555555; + puVar9 = puVar7; + if (0 < lVar6) { + while( true ) { + puVar9 = puVar9 + -3; + FUN_00116330(puVar7,puVar9); + lVar6 = lVar6 + -1; + if (lVar6 == 0) break; + puVar7 = puVar7 + -3; + } + } + FUN_00116330(param_2,&local_58); + if (local_50 == (void *)0x0) { + return; + } + operator_delete__(local_50); + return; + } + puVar7 = (undefined8 *)*param_1; + lVar6 = (long)puVar9 - (long)puVar7 >> 3; + if (lVar6 * -0x5555555555555555 == 0) { + local_68 = 0x18; + lVar6 = ((long)param_2 - (long)puVar7 >> 3) * -0x5555555555555555; + } + else { + uVar2 = lVar6 * 0x5555555555555556; + if (((ulong)(lVar6 * -0x5555555555555555) < uVar2 || lVar6 * 0x5555555555555555 == 0) && + (uVar2 < 0xaaaaaaaaaaaaaab)) { + local_68 = lVar6 << 4; + lVar6 = ((long)param_2 - (long)puVar7 >> 3) * -0x5555555555555555; + if (uVar2 == 0) { + puVar8 = (undefined8 *)0x18; + puVar3 = (undefined8 *)0x0; + goto LAB_00116caf; + } + } + else { + local_68 = 0xfffffffffffffff0; + lVar6 = ((long)param_2 - (long)puVar7 >> 3) * -0x5555555555555555; + } + } + puVar3 = operator_new(local_68); + puVar9 = (undefined8 *)param_1[1]; + puVar7 = (undefined8 *)*param_1; + puVar8 = puVar3 + 3; +LAB_00116caf: + puVar4 = puVar3 + lVar6 * 3; + if (puVar4 != (undefined8 *)0x0) { + *puVar4 = *param_3; + uVar1 = param_3[2]; + puVar4[1] = param_3[1]; + puVar4[2] = uVar1; + } + puVar4 = puVar3; + puVar5 = puVar7; + if (param_2 != puVar7) { + do { + if (puVar4 != (undefined8 *)0x0) { + *puVar4 = *puVar5; + puVar4[1] = puVar5[1]; + puVar4[2] = puVar5[2]; + } + puVar5 = puVar5 + 3; + puVar4 = puVar4 + 3; + } while (param_2 != puVar5); + puVar8 = (undefined8 *) + ((long)puVar3 + ((long)param_2 - (long)(puVar7 + 3) & 0xfffffffffffffff8U) + 0x30); + } + puVar4 = param_2; + puVar5 = puVar8; + if (param_2 != puVar9) { + do { + if (puVar5 != (undefined8 *)0x0) { + *puVar5 = *puVar4; + puVar5[1] = puVar4[1]; + puVar5[2] = puVar4[2]; + } + puVar4 = puVar4 + 3; + puVar5 = puVar5 + 3; + } while (puVar4 != puVar9); + puVar8 = (undefined8 *) + ((long)puVar8 + ((long)puVar9 - (long)(param_2 + 3) & 0xfffffffffffffff8U) + 0x18); + } + if (puVar9 != puVar7) { + do { + if ((void *)puVar7[1] != (void *)0x0) { + operator_delete__((void *)puVar7[1]); + } + puVar7 = puVar7 + 3; + } while (puVar7 != puVar9); + puVar9 = (undefined8 *)*param_1; + } + if (puVar9 != (undefined8 *)0x0) { + operator_delete(puVar9); + } + *param_1 = puVar3; + param_1[1] = puVar8; + param_1[2] = (long)puVar3 + local_68; + return; +} + + +================================================================== + +### FUNC 00116e50 (55 bytes) name=FUN_00116e50 + +void FUN_00116e50(pthread_mutex_t *param_1) + +{ + pthread_mutex_lock(param_1); + while (*(char *)((long)param_1 + 0x58) == '\0') { + pthread_cond_wait((pthread_cond_t *)(param_1 + 1),param_1); + } + *(undefined1 *)((long)param_1 + 0x58) = 0; + pthread_mutex_unlock(param_1); + return; +} + + +================================================================== + +### FUNC 00116ea0 (229 bytes) name=FUN_00116ea0 + +undefined8 FUN_00116ea0(pthread_mutex_t *param_1,int param_2) + +{ + int iVar1; + undefined8 uVar2; + timeval local_38; + timespec local_28; + + gettimeofday(&local_38,(__timezone_ptr_t)0x0); + local_28.tv_sec = param_2 / 1000 + local_38.tv_sec; + local_28.tv_nsec = local_38.tv_usec * 1000 + (long)((param_2 % 1000) * 1000000); + if (1000000000 < local_28.tv_nsec) { + local_28.tv_sec = local_28.tv_sec + 1; + local_28.tv_nsec = local_28.tv_nsec % 1000000000; + } + pthread_mutex_lock(param_1); + do { + if (*(char *)((long)param_1 + 0x58) != '\0') { + *(undefined1 *)((long)param_1 + 0x58) = 0; + uVar2 = 0; + goto LAB_00116f6f; + } + iVar1 = pthread_cond_timedwait((pthread_cond_t *)(param_1 + 1),param_1,&local_28); + } while (iVar1 != 0x6e); + uVar2 = 1; +LAB_00116f6f: + pthread_mutex_unlock(param_1); + return uVar2; +} + + +================================================================== + +### FUNC 00116fb0 (154 bytes) name=FUN_00116fb0 + +undefined8 FUN_00116fb0(long param_1) + +{ + undefined8 uVar1; + + if (param_1 == 0) { + return 1; + } + if (*(long *)(param_1 + 0x48) == 0) { + uVar1 = 2; + } + else { + while (*(int *)(param_1 + 0x30) != 0) { + FUN_00116e50(param_1 + 0x100); + if (*(int *)(param_1 + 0x30) == 0) break; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x88)); + memcpy(*(void **)(param_1 + 0x50),*(void **)(param_1 + 0x330), + (ulong)*(uint *)(param_1 + 0x338) + 0x4c); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x88)); + if (*(code **)(param_1 + 0x48) != (code *)0x0) { + (**(code **)(param_1 + 0x48)) + (*(undefined4 *)(param_1 + 0x33c),*(undefined8 *)(param_1 + 0x50)); + } + } + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### FUNC 00117050 (59 bytes) name=FUN_00117050 + +undefined8 FUN_00117050(long param_1) + +{ + if (param_1 != 0) { + do { + if (*(int *)(param_1 + 0x2c) == 0) { + return 0; + } + FUN_00116ea0(param_1 + 0x160,2000); + } while (*(int *)(param_1 + 0x2c) != 0); + } + return 0; +} + + +================================================================== + +### FUNC 001170a0 (941 bytes) name=FUN_001170a0 + +undefined8 FUN_001170a0(long param_1) + +{ + int iVar1; + undefined4 uVar2; + uint uVar3; + bool bVar4; + int iVar5; + int *piVar6; + long lVar7; + int iVar8; + int *__src; + undefined8 *puVar9; + int *__dest; + uint uVar10; + ulong __n; + int iVar11; + size_t __n_00; + int local_8c; + undefined8 local_88; + uint local_80; + undefined4 uStack_7c; + undefined4 local_78; + int iStack_74; + undefined4 local_70; + undefined4 uStack_6c; + undefined4 local_68; + undefined4 uStack_64; + int local_60; + int iStack_5c; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + undefined4 local_40; + + if (param_1 == 0) { + return 0xffffffffffffffff; + } + local_8c = 0; + bVar4 = false; + puVar9 = &local_88; + for (lVar7 = 9; lVar7 != 0; lVar7 = lVar7 + -1) { + *puVar9 = 0; + puVar9 = puVar9 + 1; + } + iVar1 = *(int *)(param_1 + 0xb10); + uVar2 = *(undefined4 *)(param_1 + 0xb14); + *(undefined4 *)puVar9 = 0; + __dest = *(int **)(param_1 + 0x328); + piVar6 = __dest; +LAB_00117140: + iVar5 = *(int *)(param_1 + 0x28); + do { + if ((iVar5 == 0) || + (iVar5 = libusb_bulk_transfer + (*(undefined8 *)(param_1 + 0x68),0x81,piVar6, + ((int)__dest - (int)piVar6) + *(int *)(param_1 + 0x338) * 2,&local_8c,500 + ), *(int *)(param_1 + 0x28) == 0)) { + *(undefined4 *)(param_1 + 0x1ec) = 1; + return 0; + } + if (iVar5 < 0) { + FUN_00113c10(10); + __dest = *(int **)(param_1 + 0x328); + piVar6 = __dest; + goto LAB_00117140; + } + __dest = *(int **)(param_1 + 0x328); + piVar6 = (int *)((long)local_8c + (long)piVar6); + iVar5 = (int)piVar6; + uVar10 = iVar5 - (int)__dest; + __n = (ulong)(int)uVar10; + if (!bVar4) { + __src = __dest; + if (__dest < piVar6) { + if (*__dest != 0x1bb1b11b) { + do { + __src = __src + 1; + if (piVar6 <= __src) goto LAB_001171d9; + } while (*__src != 0x1bb1b11b); + uVar10 = iVar5 - (int)__src; + } + } + else { +LAB_001171d9: + piVar6 = __dest; + if (*__src != 0x1bb1b11b) goto LAB_00117140; + uVar10 = iVar5 - (int)__src; + } + __n = (ulong)(int)uVar10; + if (__dest != __src) { + memmove(__dest,__src,__n); + __dest = *(int **)(param_1 + 0x328); + } + bVar4 = true; + } + uVar3 = *(uint *)(param_1 + 0x338); + piVar6 = (int *)((long)__dest + __n); + if (__n < (ulong)uVar3 + 0x38) goto LAB_00117140; + if ((*__dest == 0x1bb1b11b) && (uVar3 == __dest[2])) { + piVar6 = (int *)((long)__dest + (ulong)uVar3 + 0x1c); + if (*piVar6 == 0x1bb1b11c) { + if ((uint)piVar6[3] < 2) { + iVar5 = __dest[1]; + if (iVar1 == 0xa0) { + iVar8 = piVar6[2]; + iVar11 = iVar8 + -500; + } + else { + iVar11 = piVar6[4]; + iVar8 = iVar11 + 500; + if (iVar1 != 0x180) { + iVar8 = piVar6[2]; + } + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x88)); + puVar9 = *(undefined8 **)(param_1 + 0x330); + uStack_7c = 1; + uStack_6c = 8; + local_68 = 0xffff3cb0; + *puVar9 = CONCAT44(iVar5,(undefined4)local_88); + puVar9[1] = CONCAT44(1,uVar3); + puVar9[2] = CONCAT44(iVar1,local_78); + puVar9[3] = CONCAT44(8,uVar2); + puVar9[4] = CONCAT44(uStack_64,0xffff3cb0); + puVar9[5] = CONCAT44(iVar8,iVar11); + puVar9[6] = local_58; + puVar9[7] = local_50; + puVar9[8] = local_48; + *(undefined4 *)(puVar9 + 9) = local_40; + local_88._4_4_ = iVar5; + local_80 = uVar3; + iStack_74 = iVar1; + local_70 = uVar2; + local_60 = iVar11; + iStack_5c = iVar8; + memcpy((void *)(*(long *)(param_1 + 0x330) + 0x4c), + (void *)(*(long *)(param_1 + 0x328) + 0x1c),(ulong)*(uint *)(param_1 + 0x338)); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x88)); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x100)); + pthread_cond_signal((pthread_cond_t *)(param_1 + 0x128)); + *(undefined1 *)(param_1 + 0x158) = 1; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x100)); + __dest = *(int **)(param_1 + 0x328); + *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1; + } + } + else { + for (piVar6 = (int *)((long)(int)(uVar10 & 0xfffffffc) + (long)__dest); __dest < piVar6; + piVar6 = piVar6 + -1) { + if (*piVar6 == 0x1bb1b11b) goto LAB_001172a9; + } + if (*piVar6 == 0x1bb1b11b) break; + } + } + bVar4 = false; + iVar5 = *(int *)(param_1 + 0x28); + piVar6 = __dest; + } while( true ); +LAB_001172a9: + __n_00 = (size_t)(int)(uVar10 + ((int)__dest - (int)piVar6)); + memmove(__dest,piVar6,__n_00); + __dest = *(int **)(param_1 + 0x328); + piVar6 = (int *)(__n_00 + (long)__dest); + goto LAB_00117140; +} + + +================================================================== + +### FUNC 00117470 (2646 bytes) name=FUN_00117470 + +/* WARNING: Type propagation algorithm not settling */ + +void FUN_00117470(undefined8 *param_1) + +{ + long lVar1; + int iVar2; + undefined8 *puVar3; + ulong uVar4; + ulong uVar5; + char *pcVar6; + undefined8 *puVar7; + long in_FS_OFFSET; + bool bVar8; + byte bVar9; + pthread_mutexattr_t local_98 [4]; + pthread_mutexattr_t local_88 [4]; + pthread_mutexattr_t local_78 [4]; + pthread_mutexattr_t local_68 [4]; + pthread_mutexattr_t local_58 [4]; + pthread_mutexattr_t local_48 [2]; + long local_40; + + bVar9 = 0; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + *param_1 = &PTR_FUN_0033ed30; + iVar2 = pthread_mutexattr_init(local_48); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_settype(local_48,1); + if (iVar2 == 0) { + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x11),local_48); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_destroy(local_48); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_init(local_98); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_settype(local_98,1); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_settype failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x16),local_98); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutex_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_destroy(local_98); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_destroy failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_init(local_88); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_settype(local_88,1); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_settype failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x1b),local_88); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutex_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_destroy(local_88); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_destroy failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_init(local_78); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_settype(local_78,1); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_settype failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x20),local_78); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutex_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_destroy(local_78); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_destroy failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + *(undefined1 *)(param_1 + 0x2b) = 0; + iVar2 = pthread_cond_init((pthread_cond_t *)(param_1 + 0x25),(pthread_condattr_t *)0x0); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_cond_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_init(local_68); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_settype(local_68,1); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_settype failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x2c),local_68); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutex_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_destroy(local_68); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_destroy failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + *(undefined1 *)(param_1 + 0x37) = 0; + iVar2 = pthread_cond_init((pthread_cond_t *)(param_1 + 0x31),(pthread_condattr_t *)0x0); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_cond_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_init(local_58); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_settype(local_58,1); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_settype failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x38),local_58); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutex_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_destroy(local_58); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_destroy failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_init(local_48); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_settype(local_48,1); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_settype failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x159),local_48); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutex_init failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + iVar2 = pthread_mutexattr_destroy(local_48); + if (iVar2 != 0) { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + *puVar3 = "pthread_mutexattr_destroy failed\n"; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); + } + puVar3 = param_1 + 0x68; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 1) = 0; + *(undefined4 *)((long)param_1 + 0x84) = 0; + *(undefined4 *)((long)param_1 + 0xc) = 0; + uVar5 = 0x780; + bVar8 = ((ulong)puVar3 & 1) != 0; + *(undefined4 *)(param_1 + 0xf) = 0; + *(undefined4 *)((long)param_1 + 0x7c) = 0; + *(undefined4 *)(param_1 + 5) = 0; + param_1[0xd] = 0; + *(undefined4 *)((long)param_1 + 0x2c) = 0; + param_1[0xe] = 0; + *(undefined4 *)(param_1 + 6) = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + *(undefined4 *)(param_1 + 0x3d) = 0; + *(undefined4 *)(param_1 + 0x3e) = 0; + *(undefined4 *)(param_1 + 0x60) = 0; + param_1[0x65] = 0; + param_1[0x66] = 0; + *(undefined4 *)(param_1 + 0x67) = 0; + *(undefined4 *)((long)param_1 + 0x33c) = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + if (bVar8) { + *(undefined1 *)(param_1 + 0x68) = 0; + puVar3 = (undefined8 *)((long)param_1 + 0x341); + uVar5 = 0x77f; + } + puVar7 = puVar3; + if (((ulong)puVar3 & 2) != 0) { + puVar7 = (undefined8 *)((long)puVar3 + 2); + uVar5 = (ulong)((int)uVar5 - 2); + *(undefined2 *)puVar3 = 0; + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar5 = (ulong)((int)uVar5 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar4 = uVar5 >> 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar9 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 2); + } + if (bVar8) { + *(undefined1 *)puVar7 = 0; + } + puVar3 = param_1 + 0x160; + *(undefined4 *)(param_1 + 0x158) = 0; + uVar5 = 0x38; + *(undefined4 *)(param_1 + 0x15e) = 0; + param_1[0x15f] = 0; + bVar8 = ((ulong)puVar3 & 1) != 0; + if (bVar8) { + *(undefined1 *)(param_1 + 0x160) = 0; + puVar3 = (undefined8 *)((long)param_1 + 0xb01); + uVar5 = 0x37; + } + puVar7 = puVar3; + if (((ulong)puVar3 & 2) != 0) { + puVar7 = (undefined8 *)((long)puVar3 + 2); + uVar5 = (ulong)((int)uVar5 - 2); + *(undefined2 *)puVar3 = 0; + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar5 = (ulong)((int)uVar5 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar4 = uVar5 >> 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar9 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 2); + } + if (bVar8) { + *(undefined1 *)puVar7 = 0; + } + puVar3 = param_1 + 0x167; + uVar5 = 0x38; + bVar8 = ((ulong)puVar3 & 1) != 0; + if (bVar8) { + *(undefined1 *)(param_1 + 0x167) = 0; + puVar3 = (undefined8 *)((long)param_1 + 0xb39); + uVar5 = 0x37; + } + puVar7 = puVar3; + if (((ulong)puVar3 & 2) != 0) { + puVar7 = (undefined8 *)((long)puVar3 + 2); + uVar5 = (ulong)((int)uVar5 - 2); + *(undefined2 *)puVar3 = 0; + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar5 = (ulong)((int)uVar5 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar4 = uVar5 >> 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar9 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 2); + } + if (bVar8) { + *(undefined1 *)puVar7 = 0; + } + lVar1 = *(long *)(in_FS_OFFSET + 0x28); + param_1[0x16e] = 0; + param_1[0x16f] = 0; + if (local_40 == lVar1) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutexattr_destroy failed\n"; + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutex_init failed\n"; + } + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutexattr_settype failed\n"; + } + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutexattr_init failed\n"; + } + *puVar3 = pcVar6; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); +} + + +================================================================== + +### FUNC 00117fc0 (403 bytes) name=FUN_00117fc0 + +undefined8 FUN_00117fc0(void *param_1) + +{ + undefined1 uVar1; + int iVar2; + int iVar3; + int *piVar4; + undefined8 uVar5; + ulong uVar6; + undefined1 *puVar7; + undefined1 *puVar8; + undefined1 uVar9; + undefined1 *puVar10; + undefined1 *puVar11; + long in_FS_OFFSET; + undefined1 auStack_58 [16]; + undefined1 *local_48; + undefined8 local_38; + undefined8 local_30; + undefined4 local_28; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + if (*(int *)((long)param_1 + 0x7c) == 0) { + iVar3 = libusb_init((long)param_1 + 0x70); + if (iVar3 < 0) { + FUN_00113aa0(auStack_58,4); + FUN_00116630(auStack_58); + uVar6 = FUN_00116480(auStack_58); + if (0x18 < uVar6) { + local_28 = 0x393837; + local_38 = 0x3233343536373839; + local_30 = 0x3635343332313031; + puVar7 = local_48; + do { + puVar10 = puVar7; + iVar2 = iVar3 / 10; + puVar7 = puVar10 + 1; + *puVar10 = *(undefined1 *)((long)&local_30 + (long)(iVar3 % 10) + 1); + iVar3 = iVar2; + } while (iVar2 != 0); + puVar10[1] = 0x2d; + if ((local_48 != puVar10 + 2) && (local_48 < puVar7)) { + uVar9 = 0x2d; + puVar11 = local_48; + while( true ) { + uVar1 = *puVar11; + puVar8 = puVar7 + -1; + *puVar11 = uVar9; + puVar11 = puVar11 + 1; + *puVar7 = uVar1; + if (puVar8 <= puVar11) break; + uVar9 = *puVar8; + puVar7 = puVar8; + } + } + local_48 = local_48 + ((int)(puVar10 + 2) - (int)local_48); + *local_48 = 0; + } + FUN_00113b30(auStack_58); + } + *(undefined4 *)((long)param_1 + 0x1e8) = 0; + *(undefined4 *)((long)param_1 + 0x1f0) = 0; + *(undefined4 *)((long)param_1 + 0x300) = 0; + *(undefined4 *)((long)param_1 + 0x2c) = 1; + pthread_create((pthread_t *)((long)param_1 + 0x18),(pthread_attr_t *)0x0,FUN_00117050,param_1); + *(undefined4 *)((long)param_1 + 0x7c) = 1; + uVar5 = 1; + } + else { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffd; + uVar5 = 0; + } + if (local_20 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar5; +} + + +================================================================== + +### FUNC 00118190 (651 bytes) name=FUN_00118190 + +undefined8 FUN_00118190(long param_1) + +{ + uint uVar1; + long lVar2; + int iVar3; + uint uVar4; + uint uVar5; + int *piVar6; + long lVar7; + void *__dest; + long local_60; + undefined1 local_58 [8]; + short local_50; + ushort local_4e; + + if (*(int *)(param_1 + 0x7c) == 0) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffc; + return 0; + } + iVar3 = libusb_get_device_list(*(undefined8 *)(param_1 + 0x70),&local_60); + if (iVar3 < 0) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51feff; + return 0; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0xac8)); + iVar3 = *(int *)(param_1 + 0xac0) + -1; + if (-1 < iVar3) { + lVar7 = (long)iVar3; + __dest = (void *)(param_1 + 0x340 + lVar7 * 0x3c); + while( true ) { + piVar6 = (int *)(param_1 + lVar7 * 0x3c + 0x378); + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + if (iVar3 + 1 < *(int *)(param_1 + 0xac0)) { + __dest = memmove(__dest,(void *)((long)__dest + 0x3c), + (ulong)(uint)((*(int *)(param_1 + 0xac0) + -1) - iVar3) * 0x3c); + } + *(int *)(param_1 + 0xac0) = *(int *)(param_1 + 0xac0) + -1; + } + __dest = (void *)((long)__dest + -0x3c); + iVar3 = iVar3 + -1; + if (iVar3 < 0) break; + lVar7 = (long)iVar3; + } + } + lVar7 = 0; + do { + lVar2 = *(long *)(local_60 + lVar7); + if (lVar2 == 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0xac8)); + libusb_free_device_list(local_60,1); + return 1; + } + iVar3 = libusb_get_device_descriptor(lVar2,local_58); + if ((iVar3 == 0) && (local_50 == -0x7cc4)) { + uVar4 = libusb_get_bus_number(lVar2); + uVar5 = libusb_get_device_address(lVar2); + iVar3 = *(int *)(param_1 + 0xac0) + -1; + if (iVar3 != -1) { + do { + lVar2 = param_1 + (long)iVar3 * 0x3c; + uVar1 = *(uint *)(lVar2 + 0x364); + if (((uVar1 >> 0x10 == (uint)local_4e) && ((uVar1 >> 8 & 0xff) == (uVar4 & 0xff))) && + ((uVar1 & 0xff) == (uVar5 & 0xff))) { + *(undefined4 *)(lVar2 + 0x378) = 5; + goto LAB_001182a0; + } + iVar3 = iVar3 + -1; + } while (iVar3 != -1); + } + if (*(uint *)(param_1 + 0xac0) < 0x20) { + lVar2 = param_1 + 0x340 + (ulong)*(uint *)(param_1 + 0xac0) * 0x3c; + *(uint *)(lVar2 + 0x24) = (uint)local_4e << 0x10 | uVar5 & 0xff | (uVar4 & 0xff) << 8; + __sprintf_chk(lVar2,1,0x20,"%04x-%02x-%02x",local_4e,uVar4 & 0xff,uVar5 & 0xff); + *(undefined8 *)(lVar2 + 0x2c) = 0; + *(undefined4 *)(lVar2 + 0x34) = 0; + iVar3 = *(int *)(param_1 + 0xac0); + *(undefined4 *)(lVar2 + 0x38) = 5; + *(int *)(param_1 + 0xac0) = iVar3 + 1; + } + } +LAB_001182a0: + lVar7 = lVar7 + 8; + } while( true ); +} + + +================================================================== + +### FUNC 00118440 (579 bytes) name=FUN_00118440 + +undefined8 FUN_00118440(long param_1,uint *param_2) + +{ + long lVar1; + byte bVar2; + byte bVar3; + int iVar4; + int *piVar5; + long lVar6; + undefined8 uVar7; + uint uVar8; + long local_60; + undefined1 local_58 [8]; + short local_50; + ushort local_4e; + + if (*(int *)(param_1 + 0x7c) == 0) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffc; + return 0; + } + if (*(int *)(param_1 + 0x80) == 0) { + uVar8 = *param_2; + lVar6 = libusb_get_device_list(*(undefined8 *)(param_1 + 0x70),&local_60); + if (lVar6 < 0) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51feff; + } + else { + for (lVar6 = 0; lVar1 = *(long *)(local_60 + lVar6), lVar1 != 0; lVar6 = lVar6 + 8) { + iVar4 = libusb_get_device_descriptor(lVar1,local_58); + if ((iVar4 == 0) && (local_50 == -0x7cc4)) { + if (uVar8 == 0) { + bVar2 = libusb_get_device_address(lVar1); + bVar3 = libusb_get_bus_number(lVar1); + uVar8 = (uint)bVar2 | (uint)local_4e << 0x10 | (uint)bVar3 << 8; +LAB_00118530: + iVar4 = libusb_open(lVar1,param_1 + 0x68); + if (iVar4 < 0) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fdfe; + libusb_free_device_list(local_60,1); + return 0; + } + libusb_free_device_list(local_60,1); + libusb_set_auto_detach_kernel_driver(*(undefined8 *)(param_1 + 0x68),1); + iVar4 = libusb_set_configuration(*(undefined8 *)(param_1 + 0x68),2); + if ((iVar4 < 0) && + (iVar4 = libusb_set_configuration(*(undefined8 *)(param_1 + 0x68),1), iVar4 < 0)) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fdfb; + } + else { + iVar4 = libusb_claim_interface(*(undefined8 *)(param_1 + 0x68),0); + if (-1 < iVar4) { + *(uint *)(param_1 + 0x78) = uVar8; + uVar7 = FUN_00113bc0(); + *(undefined8 *)(param_1 + 0xaf8) = uVar7; + *(uint *)(param_1 + 0x1e8) = uVar8; + *(undefined4 *)(param_1 + 0x80) = 1; + return 1; + } + piVar5 = __errno_location(); + *piVar5 = -0x1b51fdfa; + } + libusb_close(*(undefined8 *)(param_1 + 0x68)); + *(undefined8 *)(param_1 + 0x68) = 0; + return 0; + } + if ((((uint)local_4e == uVar8 >> 0x10) && + (bVar2 = libusb_get_bus_number(lVar1), (uint)bVar2 == (uVar8 >> 8 & 0xff))) && + (bVar2 = libusb_get_device_address(lVar1), (uint)bVar2 == (uVar8 & 0xff))) + goto LAB_00118530; + } + } + piVar5 = __errno_location(); + *piVar5 = -0x1b51ffff; + } + } + else { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffd; + } + return 0; +} + + +================================================================== + +### FUNC 001186b0 (301 bytes) name=FUN_001186b0 + +undefined4 +FUN_001186b0(long param_1,undefined4 param_2,char *param_3,undefined8 param_4,undefined4 param_5, + undefined4 param_6,char *param_7) + +{ + undefined8 *puVar1; + undefined4 uVar2; + ulong uVar3; + undefined8 *puVar4; + undefined8 *puVar5; + int iVar6; + uint uVar7; + bool bVar9; + ulong uVar8; + + uVar8 = 0x110; + iVar6 = 0x110; + puVar1 = (undefined8 *)(param_1 + 0x1f0); + bVar9 = ((ulong)puVar1 & 1) != 0; + puVar4 = puVar1; + if (bVar9) { + *(undefined1 *)(param_1 + 0x1f0) = 0; + uVar8 = 0x10f; + iVar6 = 0x10f; + puVar4 = (undefined8 *)(param_1 + 0x1f1); + } + if (((ulong)puVar4 & 2) == 0) { + uVar7 = (uint)uVar8; + } + else { + uVar7 = iVar6 - 2; + uVar8 = (ulong)uVar7; + *(undefined2 *)puVar4 = 0; + puVar4 = (undefined8 *)((long)puVar4 + 2); + } + if (((ulong)puVar4 & 4) != 0) { + *(undefined4 *)puVar4 = 0; + uVar8 = (ulong)(uVar7 - 4); + puVar4 = (undefined8 *)((long)puVar4 + 4); + } + for (uVar3 = uVar8 >> 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *puVar4 = 0; + puVar4 = puVar4 + 1; + } + if ((uVar8 & 4) != 0) { + *(undefined4 *)puVar4 = 0; + puVar4 = (undefined8 *)((long)puVar4 + 4); + } + puVar5 = puVar4; + if ((uVar8 & 2) != 0) { + puVar5 = (undefined8 *)((long)puVar4 + 2); + *(undefined2 *)puVar4 = 0; + } + if (bVar9) { + *(undefined1 *)puVar5 = 0; + } + *(undefined4 *)(param_1 + 500) = param_5; + *(undefined4 *)(param_1 + 0x1f0) = param_2; + *(undefined4 *)(param_1 + 0x1f8) = 0; + strncpy((char *)(param_1 + 0x1fc),param_3,0x40); + *(undefined4 *)(param_1 + 0x27c) = param_6; + strncpy((char *)(param_1 + 0x280),param_7,0x40); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x1c0)); + uVar2 = FUN_00118440(param_1,puVar1); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x1c0)); + return uVar2; +} + + +================================================================== + +### FUNC 001187f0 (463 bytes) name=FUN_001187f0 + +void FUN_001187f0(long param_1,int param_2,undefined8 *param_3,int param_4) + +{ + pthread_mutex_t *__mutex; + long lVar1; + uint uVar2; + + __mutex = (pthread_mutex_t *)(param_1 + 0xd8); + pthread_mutex_lock(__mutex); + if (param_2 == 0x5bb5b55c) { + if (param_4 == 0x38) { + *(undefined8 *)(param_1 + 0xb38) = *param_3; + *(undefined8 *)(param_1 + 0xb40) = param_3[1]; + *(undefined8 *)(param_1 + 0xb48) = param_3[2]; + *(undefined8 *)(param_1 + 0xb50) = param_3[3]; + *(undefined8 *)(param_1 + 0xb58) = param_3[4]; + *(undefined8 *)(param_1 + 0xb60) = param_3[5]; + *(undefined8 *)(param_1 + 0xb68) = param_3[6]; + } + } + else if (param_2 < 0x5bb5b55d) { + if ((param_2 == 0x5bb5b55b) && (param_4 == 0x38)) { + *(undefined8 *)(param_1 + 0xb00) = *param_3; + *(undefined8 *)(param_1 + 0xb08) = param_3[1]; + *(undefined8 *)(param_1 + 0xb10) = param_3[2]; + *(undefined8 *)(param_1 + 0xb18) = param_3[3]; + *(undefined8 *)(param_1 + 0xb20) = param_3[4]; + *(undefined8 *)(param_1 + 0xb28) = param_3[5]; + *(undefined8 *)(param_1 + 0xb30) = param_3[6]; + if ((*(int *)(param_1 + 0xb10) != 0) && (*(int *)(param_1 + 0xb14) != 0)) { + pthread_mutex_unlock(__mutex); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0xac8)); + if (*(int *)(param_1 + 0xac0) != 0) { + lVar1 = param_1 + 0x340; + uVar2 = 0; + do { + if (*(int *)(lVar1 + 0x24) == *(int *)(param_1 + 0x78)) { + *(undefined4 *)(lVar1 + 0x28) = *(undefined4 *)(param_1 + 0xb00); + __sprintf_chk(lVar1,1,0x20,"core-%d",*(undefined4 *)(param_1 + 0xb00)); + } + uVar2 = uVar2 + 1; + lVar1 = lVar1 + 0x3c; + } while (uVar2 < *(uint *)(param_1 + 0xac0)); + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0xac8)); + pthread_mutex_lock(__mutex); + } + } + } + else if (param_2 < 0x5bb5b55f) { + *(undefined8 *)(param_1 + 0xb70) = *param_3; + *(undefined8 *)(param_1 + 0xb78) = param_3[1]; + pthread_mutex_unlock(__mutex); + return; + } + pthread_mutex_unlock(__mutex); + return; +} + + +================================================================== + +### FUNC 001189f0 (198 bytes) name=FUN_001189f0 + +undefined8 FUN_001189f0(long param_1,undefined8 param_2,int param_3) + +{ + int iVar1; + undefined8 uVar2; + int local_102c; + undefined4 local_1028; + undefined1 local_1024 [4092]; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0xb0)); + if (*(int *)(param_1 + 0x80) != 0) { + iVar1 = libusb_bulk_transfer(*(undefined8 *)(param_1 + 0x68),3,param_2,param_3,&local_102c,500); + if ((-1 < iVar1) && (param_3 == local_102c)) { + iVar1 = libusb_bulk_transfer + (*(undefined8 *)(param_1 + 0x68),0x82,&local_1028,0x1000,&local_102c,2000); + if ((-1 < iVar1) && (3 < local_102c)) { + uVar2 = 1; + FUN_001187f0(param_1,local_1028,local_1024,local_102c + -4); + goto LAB_00118a50; + } + } + } + uVar2 = 0; +LAB_00118a50: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0xb0)); + return uVar2; +} + + +================================================================== + +### FUNC 00118ad0 (56 bytes) name=FUN_00118ad0 + +undefined8 FUN_00118ad0(long param_1,undefined4 param_2) + +{ + int *piVar1; + undefined8 uVar2; + undefined4 local_c [3]; + + local_c[0] = param_2; + if (*(int *)(param_1 + 0x80) == 0) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffb; + return 0; + } + uVar2 = FUN_001189f0(param_1,local_c,4); + return uVar2; +} + + +================================================================== + +### FUNC 00118b10 (57 bytes) name=FUN_00118b10 + +undefined8 FUN_00118b10(long param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + undefined8 uVar2; + undefined4 local_18; + undefined4 local_14; + + if (*(int *)(param_1 + 0x80) == 0) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffb; + return 0; + } + local_18 = param_2; + local_14 = param_3; + uVar2 = FUN_001189f0(param_1,&local_18,8); + return uVar2; +} + + +================================================================== + +### FUNC 00118b50 (265 bytes) name=FUN_00118b50 + +void FUN_00118b50(long param_1,int param_2) + +{ + pthread_t __th; + + if (param_2 == 0) { + *(undefined4 *)(param_1 + 0x300) = 0; + } + if (*(int *)(param_1 + 0x80) == 0) { + __th = *(pthread_t *)(param_1 + 0x10); + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + FUN_00118ad0(param_1); + __th = *(pthread_t *)(param_1 + 0x10); + *(undefined4 *)(param_1 + 0x28) = 0; + } + if (__th != 0) { + pthread_join(__th,(void **)0x0); + *(undefined8 *)(param_1 + 0x10) = 0; + } + *(undefined4 *)(param_1 + 0x30) = 0; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x100)); + pthread_cond_signal((pthread_cond_t *)(param_1 + 0x128)); + *(undefined1 *)(param_1 + 0x158) = 1; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x100)); + if (*(pthread_t *)(param_1 + 0x20) != 0) { + pthread_join(*(pthread_t *)(param_1 + 0x20),(void **)0x0); + *(undefined8 *)(param_1 + 0x20) = 0; + } + if (*(void **)(param_1 + 0x328) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x328)); + *(undefined8 *)(param_1 + 0x328) = 0; + } + if (*(void **)(param_1 + 0x330) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x330)); + *(undefined8 *)(param_1 + 0x330) = 0; + } + *(undefined4 *)(param_1 + 0x84) = 0; + return; +} + + +================================================================== + +### FUNC 00118c60 (92 bytes) name=FUN_00118c60 + +void FUN_00118c60(long param_1,undefined8 param_2,int param_3) + +{ + if (param_3 == 0) { + *(undefined4 *)(param_1 + 0x1e8) = 0; + } + if (*(int *)(param_1 + 0x84) != 0) { + FUN_00118b50(param_1,param_3); + } + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined4 *)(param_1 + 0x80) = 0; + if (*(long *)(param_1 + 0x68) != 0) { + libusb_release_interface(*(long *)(param_1 + 0x68),0); + libusb_close(*(undefined8 *)(param_1 + 0x68)); + *(undefined8 *)(param_1 + 0x68) = 0; + } + return; +} + + +================================================================== + +### FUNC 00118cc0 (66 bytes) name=FUN_00118cc0 + +void FUN_00118cc0(long param_1,undefined4 param_2,undefined4 param_3) + +{ + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x1c0)); + FUN_00118c60(param_1,param_2,param_3); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x1c0)); + return; +} + + +================================================================== + +### FUNC 00118d10 (48 bytes) name=FUN_00118d10 + +void FUN_00118d10(long param_1,undefined4 param_2) + +{ + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x1c0)); + FUN_00118b50(param_1,param_2); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x1c0)); + return; +} + + +================================================================== + +### FUNC 00118d40 (192 bytes) name=FUN_00118d40 + +void FUN_00118d40(long param_1) + +{ + int iVar1; + + *(undefined4 *)(param_1 + 0x7c) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x160)); + pthread_cond_signal((pthread_cond_t *)(param_1 + 0x188)); + *(undefined1 *)(param_1 + 0x1b8) = 1; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x160)); + if (*(pthread_t *)(param_1 + 0x18) == 0) { + iVar1 = *(int *)(param_1 + 0x84); + } + else { + pthread_join(*(pthread_t *)(param_1 + 0x18),(void **)0x0); + iVar1 = *(int *)(param_1 + 0x84); + *(undefined8 *)(param_1 + 0x18) = 0; + } + if (iVar1 == 0) { + iVar1 = *(int *)(param_1 + 0x80); + } + else { + FUN_00118d10(param_1,0); + iVar1 = *(int *)(param_1 + 0x80); + } + if (iVar1 != 0) { + FUN_00118cc0(param_1,0,0); + } + *(undefined4 *)(param_1 + 0xac0) = 0; + if (*(long *)(param_1 + 0x70) != 0) { + libusb_exit(); + *(undefined8 *)(param_1 + 0x70) = 0; + } + return; +} + + +================================================================== + +### FUNC 00118e10 (140 bytes) name=FUN_00118e10 + +void FUN_00118e10(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ed30; + FUN_00118d40(); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x159)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x38)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 0x31)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x2c)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 0x25)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x20)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x1b)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x16)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x11)); + return; +} + + +================================================================== + +### FUNC 00118f20 (18 bytes) name=FUN_00118f20 + +void FUN_00118f20(void *param_1) + +{ + FUN_00118e10(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00118f40 (567 bytes) name=FUN_00118f40 + +undefined8 FUN_00118f40(void *param_1,int *param_2) + +{ + uint uVar1; + undefined8 uVar2; + int iVar3; + void *pvVar4; + int *piVar5; + undefined1 auStack_38 [40]; + + if (*(int *)((long)param_1 + 0x80) == 0) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffb; + return 0; + } + if (*(int *)((long)param_1 + 0x84) == 0) { + if (((*param_2 == 0) || (*(long *)(param_2 + 4) == 0)) || (*(long *)(param_2 + 6) == 0)) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51ffff; + return 0; + } + uVar1 = param_2[1]; + *(uint *)((long)param_1 + 0x338) = uVar1; + if (*(void **)((long)param_1 + 0x328) != (void *)0x0) { + operator_delete__(*(void **)((long)param_1 + 0x328)); + uVar1 = *(uint *)((long)param_1 + 0x338); + *(undefined8 *)((long)param_1 + 0x328) = 0; + } + pvVar4 = operator_new__((ulong)uVar1 * 2 + 0x470); + *(void **)((long)param_1 + 0x328) = pvVar4; + if (*(void **)((long)param_1 + 0x330) != (void *)0x0) { + operator_delete__(*(void **)((long)param_1 + 0x330)); + *(undefined8 *)((long)param_1 + 0x330) = 0; + } + pvVar4 = operator_new__((ulong)*(uint *)((long)param_1 + 0x338) + 0x4c); + *(void **)((long)param_1 + 0x330) = pvVar4; + if (*(void **)((long)param_1 + 0x328) != (void *)0x0) { + if (pvVar4 != (void *)0x0) { + uVar2 = *(undefined8 *)(param_2 + 4); + *(undefined4 *)((long)param_1 + 8) = 0; + *(undefined4 *)((long)param_1 + 0xc) = 0; + *(undefined8 *)((long)param_1 + 0x50) = uVar2; + *(undefined8 *)((long)param_1 + 0x48) = *(undefined8 *)(param_2 + 6); + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + 0x100)); + *(undefined1 *)((long)param_1 + 0x158) = 0; + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + 0x100)); + *(undefined4 *)((long)param_1 + 0x30) = 1; + pthread_create((pthread_t *)((long)param_1 + 0x20),(pthread_attr_t *)0x0,FUN_00116fb0, + param_1); + *(undefined4 *)((long)param_1 + 0x1ec) = 0; + *(undefined4 *)((long)param_1 + 0x28) = 1; + pthread_create((pthread_t *)((long)param_1 + 0x10),(pthread_attr_t *)0x0,FUN_001170a0, + param_1); + usleep(50000); + iVar3 = FUN_00118ad0(param_1,0x6bb6b673); + if (iVar3 != 0) { + *(undefined4 *)((long)param_1 + 0x84) = 1; + return 1; + } + FUN_00118d10(param_1,0); + return 0; + } + operator_delete__(*(void **)((long)param_1 + 0x328)); + pvVar4 = *(void **)((long)param_1 + 0x330); + *(undefined8 *)((long)param_1 + 0x328) = 0; + } + if (pvVar4 != (void *)0x0) { + operator_delete__(pvVar4); + *(undefined8 *)((long)param_1 + 0x330) = 0; + } + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Fail to allocate memory"); + FUN_00113b30(auStack_38); + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffe; + } + else { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffd; + } + return 0; +} + + +================================================================== + +### FUNC 001191a0 (175 bytes) name=FUN_001191a0 + +int FUN_001191a0(long param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined8 param_5,undefined8 param_6,undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x1c0)); + *(undefined8 *)(param_1 + 0x308) = 0; + *(undefined4 *)(param_1 + 0x300) = param_2; + *(undefined4 *)(param_1 + 0x308) = param_4; + *(undefined4 *)(param_1 + 0x304) = param_3; + *(undefined4 *)(param_1 + 0x324) = param_8; + *(undefined8 *)(param_1 + 0x318) = param_6; + *(undefined8 *)(param_1 + 0x310) = param_5; + *(undefined4 *)(param_1 + 800) = param_7; + iVar1 = FUN_00118f40(param_1); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x300) = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x1c0)); + return iVar1; +} + + +================================================================== + +### FUNC 00119250 (44 bytes) name=FUN_00119250 + +undefined8 FUN_00119250(long param_1,undefined4 param_2) + +{ + int *piVar1; + undefined8 uVar2; + + if (*(int *)(param_1 + 0x80) == 0) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffb; + return 0; + } + uVar2 = FUN_00118b10(param_1,0x6bb6b672,param_2); + return uVar2; +} + + +================================================================== + +### FUNC 00119280 (44 bytes) name=FUN_00119280 + +undefined8 FUN_00119280(long param_1,undefined4 param_2) + +{ + int *piVar1; + undefined8 uVar2; + + if (*(int *)(param_1 + 0x80) == 0) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffb; + return 0; + } + uVar2 = FUN_00118b10(param_1,0x6bb6b676,param_2); + return uVar2; +} + + +================================================================== + +### FUNC 001192b0 (44 bytes) name=FUN_001192b0 + +undefined8 FUN_001192b0(long param_1,undefined4 param_2) + +{ + int *piVar1; + undefined8 uVar2; + + if (*(int *)(param_1 + 0x80) == 0) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffb; + return 0; + } + uVar2 = FUN_00118b10(param_1,0x6bb6b677,param_2); + return uVar2; +} + + +================================================================== + +### FUNC 001192e0 (148 bytes) name=FUN_001192e0 + +undefined8 FUN_001192e0(long param_1,undefined8 *param_2) + +{ + int iVar1; + int *piVar2; + + if (*(int *)(param_1 + 0x80) == 0) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffb; + return 0; + } + if (param_2 != (undefined8 *)0x0) { + *(undefined8 *)(param_1 + 0xb70) = 0; + *(undefined8 *)(param_1 + 0xb78) = 0; + iVar1 = FUN_00118ad0(param_1,0x6bb6b66f); + if ((iVar1 != 0) && (*(int *)(param_1 + 0xb70) != 0)) { + *param_2 = *(undefined8 *)(param_1 + 0xb70); + param_2[1] = *(undefined8 *)(param_1 + 0xb78); + return 1; + } + return 0; + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + return 0; +} + + +================================================================== + +### FUNC 00119380 (107 bytes) name=FUN_00119380 + +void FUN_00119380(long param_1,undefined8 param_2,int param_3) + +{ + __uid_t __uid; + passwd *ppVar1; + + __uid = getuid(); + ppVar1 = getpwuid(__uid); + __snprintf_chk(param_2,(long)param_3,1,0xffffffffffffffff,"%s/%s.%d.%lld",ppVar1->pw_dir, + ".magcore.cali",*(undefined4 *)(param_1 + 0xb00),*(undefined8 *)(param_1 + 0xb78)); + return; +} + + +================================================================== + +### FUNC 001193f0 (190 bytes) name=FUN_001193f0 + +bool FUN_001193f0(undefined8 param_1) + +{ + int iVar1; + FILE *__stream; + long lVar2; + long in_FS_OFFSET; + bool bVar3; + uint local_138 [4]; + char local_128 [264]; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + iVar1 = FUN_001192e0(param_1,local_138); + if (iVar1 != 0) { + bVar3 = false; + if (0x6400000 < local_138[0]) goto LAB_0011942a; + FUN_00119380(param_1,local_128,0x100); + __stream = fopen(local_128,"rb"); + if (__stream != (FILE *)0x0) { + fseek(__stream,0,2); + lVar2 = ftell(__stream); + bVar3 = local_138[0] != (uint)lVar2; + fclose(__stream); + goto LAB_0011942a; + } + } + bVar3 = true; +LAB_0011942a: + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return bVar3; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001194c0 (794 bytes) name=FUN_001194c0 + +undefined8 FUN_001194c0(long param_1,undefined8 *param_2,undefined8 *param_3,uint param_4) + +{ + int iVar1; + int iVar2; + uint uVar3; + int *piVar4; + long lVar5; + ulong uVar6; + ulong uVar7; + undefined8 *puVar8; + undefined8 *puVar9; + bool bVar10; + + if (*(int *)(param_1 + 0x80) == 0) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffb; + return 0; + } + if ((param_2 == (undefined8 *)0x0) || (param_3 == (undefined8 *)0x0)) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51ffff; + return 0; + } + puVar8 = (undefined8 *)(param_1 + 0xb00); + uVar7 = 0x38; + bVar10 = ((ulong)puVar8 & 1) != 0; + if (bVar10) { + *(undefined1 *)(param_1 + 0xb00) = 0; + puVar8 = (undefined8 *)(param_1 + 0xb01); + uVar7 = 0x37; + } + puVar9 = puVar8; + if (((ulong)puVar8 & 2) != 0) { + puVar9 = (undefined8 *)((long)puVar8 + 2); + uVar7 = (ulong)((int)uVar7 - 2); + *(undefined2 *)puVar8 = 0; + } + if (((ulong)puVar9 & 4) != 0) { + *(undefined4 *)puVar9 = 0; + uVar7 = (ulong)((int)uVar7 - 4); + puVar9 = (undefined8 *)((long)puVar9 + 4); + } + for (uVar6 = uVar7 >> 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar9 = 0; + puVar9 = puVar9 + 1; + } + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar9 = 0; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)puVar9 = 0; + puVar9 = (undefined8 *)((long)puVar9 + 2); + } + if (bVar10) { + *(undefined1 *)puVar9 = 0; + } + puVar8 = (undefined8 *)(param_1 + 0xb38); + uVar7 = 0x38; + bVar10 = ((ulong)puVar8 & 1) != 0; + if (bVar10) { + *(undefined1 *)(param_1 + 0xb38) = 0; + puVar8 = (undefined8 *)(param_1 + 0xb39); + uVar7 = 0x37; + } + puVar9 = puVar8; + if (((ulong)puVar8 & 2) != 0) { + puVar9 = (undefined8 *)((long)puVar8 + 2); + uVar7 = (ulong)((int)uVar7 - 2); + *(undefined2 *)puVar8 = 0; + } + if (((ulong)puVar9 & 4) != 0) { + *(undefined4 *)puVar9 = 0; + uVar7 = (ulong)((int)uVar7 - 4); + puVar9 = (undefined8 *)((long)puVar9 + 4); + } + for (uVar6 = uVar7 >> 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar9 = 0; + puVar9 = puVar9 + 1; + } + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar9 = 0; + puVar9 = (undefined8 *)((long)puVar9 + 4); + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)puVar9 = 0; + puVar9 = (undefined8 *)((long)puVar9 + 2); + } + if (bVar10) { + *(undefined1 *)puVar9 = 0; + } + iVar1 = FUN_00118ad0(param_1,0x6bb6b66b); + iVar2 = FUN_00118ad0(param_1,0x6bb6b66c); + if ((iVar2 != 0) && (iVar1 != 0)) { + uVar3 = FUN_00113bc0(); + do { + usleep(10000); + if ((*(int *)(param_1 + 0xb10) != 0) && (*(int *)(param_1 + 0xb38) != 0)) break; + lVar5 = FUN_00113bc0(); + } while (lVar5 - (ulong)uVar3 < (ulong)param_4); + if ((*(int *)(param_1 + 0xb10) != 0) && (*(int *)(param_1 + 0xb38) != 0)) { + *param_2 = *(undefined8 *)(param_1 + 0xb00); + param_2[1] = *(undefined8 *)(param_1 + 0xb08); + param_2[2] = *(undefined8 *)(param_1 + 0xb10); + param_2[3] = *(undefined8 *)(param_1 + 0xb18); + param_2[4] = *(undefined8 *)(param_1 + 0xb20); + param_2[5] = *(undefined8 *)(param_1 + 0xb28); + param_2[6] = *(undefined8 *)(param_1 + 0xb30); + *param_3 = *(undefined8 *)(param_1 + 0xb38); + param_3[1] = *(undefined8 *)(param_1 + 0xb40); + param_3[2] = *(undefined8 *)(param_1 + 0xb48); + param_3[3] = *(undefined8 *)(param_1 + 0xb50); + param_3[4] = *(undefined8 *)(param_1 + 0xb58); + param_3[5] = *(undefined8 *)(param_1 + 0xb60); + param_3[6] = *(undefined8 *)(param_1 + 0xb68); + return 1; + } + piVar4 = __errno_location(); + *piVar4 = -0x1b51fff8; + } + return 0; +} + + +================================================================== + +### FUNC 00119830 (337 bytes) name=FUN_00119830 + +bool FUN_00119830(long param_1,undefined8 *param_2,undefined8 *param_3) + +{ + long lVar1; + int iVar2; + int *piVar3; + ulong uVar4; + undefined1 local_95 [69]; + undefined8 uStack_50; + int local_3c; + + if (*(int *)(param_1 + 0x80) == 0) { + uStack_50 = 0x119975; + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffb; + return false; + } + if ((param_2 != (undefined8 *)0x0) && (param_3 != (undefined8 *)0x0)) { + uVar4 = (ulong)local_95 >> 2; + *(undefined4 *)(uVar4 * 4) = 0x6bb6b66d; + lVar1 = uVar4 * 4; + *(undefined8 *)(uVar4 * 4 + 4) = *param_2; + *(undefined8 *)(lVar1 + 0xc) = param_2[1]; + *(undefined8 *)(lVar1 + 0x14) = param_2[2]; + *(undefined8 *)(lVar1 + 0x1c) = param_2[3]; + *(undefined8 *)(lVar1 + 0x24) = param_2[4]; + *(undefined8 *)(lVar1 + 0x2c) = param_2[5]; + *(undefined8 *)(lVar1 + 0x34) = param_2[6]; + local_3c = FUN_001189f0(param_1,lVar1,0x3c); + *(undefined4 *)(uVar4 * 4) = 0x6bb6b66e; + *(undefined8 *)(uVar4 * 4 + 4) = *param_3; + *(undefined8 *)(lVar1 + 0xc) = param_3[1]; + *(undefined8 *)(lVar1 + 0x14) = param_3[2]; + *(undefined8 *)(lVar1 + 0x1c) = param_3[3]; + *(undefined8 *)(lVar1 + 0x24) = param_3[4]; + *(undefined8 *)(lVar1 + 0x2c) = param_3[5]; + *(undefined8 *)(lVar1 + 0x34) = param_3[6]; + iVar2 = FUN_001189f0(param_1,lVar1,0x3c); + return local_3c != 0 && iVar2 != 0; + } + uStack_50 = 0x11985c; + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + return false; +} + + +================================================================== + +### FUNC 00119990 (163 bytes) name=FUN_00119990 + +undefined8 FUN_00119990(void *param_1) + +{ + int iVar1; + undefined8 uVar2; + long in_FS_OFFSET; + pthread_t local_60; + pthread_attr_t local_58; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + uVar2 = FUN_001193f0(); + if ((int)uVar2 != 0) { + iVar1 = pthread_attr_init(&local_58); + uVar2 = 0xffffffff; + if (iVar1 == 0) { + iVar1 = pthread_attr_setdetachstate(&local_58,1); + if (iVar1 == 0) { + iVar1 = pthread_create(&local_60,&local_58,FUN_00119e00,param_1); + if (iVar1 == 0) { + pthread_attr_destroy(&local_58); + uVar2 = 1; + goto LAB_001199b2; + } + } + pthread_attr_destroy(&local_58); + uVar2 = 0xffffffff; + } + } +LAB_001199b2: + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00119a40 (697 bytes) name=FUN_00119a40 + +undefined8 FUN_00119a40(long param_1,undefined8 param_2) + +{ + int iVar1; + int iVar2; + ulong uVar3; + void *pvVar4; + ulong uVar5; + void *pvVar6; + ulong uVar7; + ulong uVar8; + int iVar9; + int local_5c; + undefined1 local_58 [40]; + + *(undefined8 *)(param_1 + 0xb70) = 0; + *(undefined8 *)(param_1 + 0xb78) = 0; + iVar1 = FUN_00118ad0(param_1,0x6bb6b670); + if (((iVar1 != 0) && (*(int *)(param_1 + 0xb70) != 0)) && (*(uint *)(param_1 + 0xb70) < 0x6400001) + ) { + iVar1 = *(int *)(param_1 + 0xb70); + uVar3 = (ulong)iVar1; + pvVar4 = operator_new__(uVar3); + if (pvVar4 != (void *)0x0) { + local_5c = 0; + FUN_00113aa0(local_58,2); + FUN_00116630(local_58,"First running on new host, it will cost some time for initializing...") + ; + FUN_00113b30(local_58); + if (*(code **)(param_1 + 0x58) != (code *)0x0) { + (**(code **)(param_1 + 0x58)) + (*(undefined4 *)(param_1 + 0x33c),0,0,*(undefined8 *)(param_1 + 0x60)); + } + iVar9 = iVar1; + if (iVar1 < 1) { + uVar8 = 0; + } + else { + uVar8 = 0; + pvVar6 = pvVar4; + do { + iVar2 = 0x80000; + if (iVar9 < 0x80001) { + iVar2 = iVar9; + } + iVar2 = libusb_bulk_transfer + (*(undefined8 *)(param_1 + 0x68),0x84,pvVar6,iVar2,&local_5c,60000); + if (iVar2 < 0) { + __printf_chk(1,&DAT_00131fca,*(undefined8 *)(param_1 + 0x68),iVar9); + operator_delete__(pvVar4); + if (*(code **)(param_1 + 0x58) != (code *)0x0) { + (**(code **)(param_1 + 0x58)) + (*(undefined4 *)(param_1 + 0x33c),0xfffffffe,uVar8, + *(undefined8 *)(param_1 + 0x60)); + return 0; + } + return 0; + } + iVar9 = iVar9 - local_5c; + pvVar6 = (void *)((long)pvVar6 + (long)local_5c); + if (*(code **)(param_1 + 0x58) != (code *)0x0) { + uVar5 = ((long)(iVar1 - iVar9) * 100) / (long)uVar3; + uVar7 = 99; + if ((long)uVar5 < 100) { + uVar7 = uVar5; + } + if ((int)uVar8 < (int)uVar7) { + (**(code **)(param_1 + 0x58)) + (*(undefined4 *)(param_1 + 0x33c),0,uVar7 & 0xffffffff, + *(undefined8 *)(param_1 + 0x60)); + uVar8 = uVar7 & 0xffffffff; + } + } + } while (0 < iVar9); + } + if (iVar9 == 0) { + FUN_00106fb0(local_58,param_2,0); + FUN_001070c0(local_58,pvVar4,uVar3,1); + FUN_00106d80(local_58); + if (*(code **)(param_1 + 0x58) != (code *)0x0) { + (**(code **)(param_1 + 0x58)) + (*(undefined4 *)(param_1 + 0x33c),0,100,*(undefined8 *)(param_1 + 0x60)); + } + operator_delete__(pvVar4); + return 1; + } + operator_delete__(pvVar4); + if (*(code **)(param_1 + 0x58) == (code *)0x0) { + return 0; + } + (**(code **)(param_1 + 0x58)) + (*(undefined4 *)(param_1 + 0x33c),0xfffffffd,uVar8,*(undefined8 *)(param_1 + 0x60)); + return 0; + } + } + if (*(code **)(param_1 + 0x58) != (code *)0x0) { + (**(code **)(param_1 + 0x58)) + (*(undefined4 *)(param_1 + 0x33c),0xffffffff,0,*(undefined8 *)(param_1 + 0x60)); + return 0; + } + return 0; +} + + +================================================================== + +### FUNC 00119d90 (109 bytes) name=FUN_00119d90 + +undefined4 FUN_00119d90(undefined8 param_1) + +{ + int iVar1; + undefined4 uVar2; + long in_FS_OFFSET; + undefined1 auStack_128 [264]; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + iVar1 = FUN_001193f0(); + uVar2 = 1; + if (iVar1 != 0) { + FUN_00119380(param_1,auStack_128,0x100); + uVar2 = FUN_00119a40(param_1,auStack_128); + } + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00119e00 (16 bytes) name=FUN_00119e00 + +undefined8 FUN_00119e00(void) + +{ + FUN_00119d90(); + return 0; +} + + +================================================================== + +### FUNC 00119e10 (90 bytes) name=FUN_00119e10 + +void FUN_00119e10(undefined8 *param_1) + +{ + *param_1 = &PTR_FUN_0033ed70; + if ((void *)param_1[1] != (void *)0x0) { + operator_delete__((void *)param_1[1]); + param_1[1] = 0; + } + param_1[2] = 0; + if ((void *)param_1[3] != (void *)0x0) { + operator_delete__((void *)param_1[3]); + param_1[3] = 0; + } + if ((void *)param_1[4] != (void *)0x0) { + operator_delete__((void *)param_1[4]); + param_1[4] = 0; + } + return; +} + + +================================================================== + +### FUNC 00119e70 (18 bytes) name=FUN_00119e70 + +void FUN_00119e70(void *param_1) + +{ + FUN_00119e10(); + operator_delete(param_1); + return; +} + + +================================================================== + +### FUNC 00119e90 (79 bytes) name=FUN_00119e90 + +void FUN_00119e90(undefined8 *param_1) + +{ + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[5] = 0; + *param_1 = &PTR_FUN_0033ed70; + param_1[4] = 0; + *(undefined4 *)(param_1 + 6) = 0; + *(undefined4 *)((long)param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 7) = 0; + *(undefined4 *)((long)param_1 + 0x3c) = 0; + return; +} + + +================================================================== + +### FUNC 00119ee0 (291 bytes) name=FUN_00119ee0 + +undefined8 FUN_00119ee0(long param_1,uint param_2,int param_3,int param_4,uint param_5) + +{ + ulong __n; + void *pvVar1; + long lVar2; + + *(undefined4 *)(param_1 + 0x3c) = 0; + if (*(void **)(param_1 + 8) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 8)); + *(undefined8 *)(param_1 + 8) = 0; + } + *(undefined8 *)(param_1 + 0x10) = 0; + if (*(void **)(param_1 + 0x18) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x18)); + *(undefined8 *)(param_1 + 0x18) = 0; + } + if (*(void **)(param_1 + 0x20) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x20)); + *(undefined8 *)(param_1 + 0x20) = 0; + } + if ((param_2 != 0) && (param_3 != 0)) { + *(int *)(param_1 + 0x38) = param_3; + *(undefined4 *)(param_1 + 0x30) = 0; + *(uint *)(param_1 + 0x34) = param_2; + pvVar1 = operator_new__((((ulong)param_5 + 1 >> 1) + (ulong)(param_3 * param_2)) * 2); + *(void **)(param_1 + 8) = pvVar1; + if (pvVar1 == (void *)0x0) { + *(undefined8 *)(param_1 + 0x10) = 0; + } + else { + __n = (ulong)param_2 * 4; + lVar2 = (long)pvVar1 + (ulong)(param_5 & 0xfffffffe); + *(long *)(param_1 + 0x10) = lVar2; + *(long *)(param_1 + 0x28) = lVar2; + pvVar1 = operator_new__(__n); + *(void **)(param_1 + 0x18) = pvVar1; + if (pvVar1 != (void *)0x0) { + memset(pvVar1,0,__n); + if (param_4 != 0) { + pvVar1 = operator_new__((ulong)param_2 * 2); + *(void **)(param_1 + 0x20) = pvVar1; + if (pvVar1 == (void *)0x0) { + return 0; + } + } + *(undefined4 *)(param_1 + 0x3c) = 1; + return 1; + } + } + } + return 0; +} + + +================================================================== + +### FUNC 0011a010 (291 bytes) name=FUN_0011a010 + +bool FUN_0011a010(long param_1,ushort *param_2) + +{ + ushort uVar1; + ushort uVar2; + uint uVar3; + ushort *__dest; + uint uVar4; + ushort *puVar5; + ushort *puVar6; + int *piVar7; + + if (*(int *)(param_1 + 0x3c) == 0) { + return false; + } + piVar7 = *(int **)(param_1 + 0x18); + if (piVar7 == (int *)0x0) { + return false; + } + uVar4 = *(int *)(param_1 + 0x30) + 1; + *(uint *)(param_1 + 0x30) = uVar4; + __dest = *(ushort **)(param_1 + 0x28); + uVar3 = *(uint *)(param_1 + 0x34); + if (*(uint *)(param_1 + 0x38) < uVar4) { + uVar4 = uVar3 >> 2; + puVar5 = __dest; + puVar6 = param_2; + if (uVar3 >> 2 == 0) goto LAB_0011a0b6; + do { + uVar1 = puVar5[1]; + *piVar7 = *piVar7 + ((uint)*puVar6 - (uint)*puVar5); + uVar2 = puVar5[2]; + piVar7[1] = piVar7[1] + ((uint)puVar6[1] - (uint)uVar1); + uVar1 = puVar5[3]; + piVar7[2] = piVar7[2] + ((uint)puVar6[2] - (uint)uVar2); + piVar7[3] = piVar7[3] + ((uint)puVar6[3] - (uint)uVar1); + uVar4 = uVar4 - 1; + puVar5 = puVar5 + 4; + puVar6 = puVar6 + 4; + piVar7 = piVar7 + 4; + } while (uVar4 != 0); + } + else { + uVar4 = uVar3 >> 2; + puVar5 = param_2; + if (uVar3 >> 2 == 0) goto LAB_0011a0b6; + do { + *piVar7 = *piVar7 + (uint)*puVar5; + piVar7[1] = piVar7[1] + (uint)puVar5[1]; + piVar7[2] = piVar7[2] + (uint)puVar5[2]; + piVar7[3] = piVar7[3] + (uint)puVar5[3]; + uVar4 = uVar4 - 1; + puVar5 = puVar5 + 4; + piVar7 = piVar7 + 4; + } while (uVar4 != 0); + } + uVar3 = *(uint *)(param_1 + 0x34); +LAB_0011a0b6: + memcpy(__dest,param_2,(ulong)uVar3 * 2); + if (*(uint *)(param_1 + 0x30) % *(uint *)(param_1 + 0x38) == 0) { + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x10); + } + else { + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + (ulong)*(uint *)(param_1 + 0x34) * 2; + } + return *(uint *)(param_1 + 0x38) <= *(uint *)(param_1 + 0x30); +} + + +================================================================== + +### FUNC 0011a140 (214 bytes) name=FUN_0011a140 + +bool FUN_0011a140(long param_1,void *param_2,int param_3) + +{ + ushort uVar1; + ushort uVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + long lVar7; + ushort *puVar8; + ushort *puVar9; + + if (*(int *)(param_1 + 0x3c) == 0) { + return false; + } + uVar4 = *(int *)(param_1 + 0x30) + 1; + *(uint *)(param_1 + 0x30) = uVar4; + if (*(uint *)(param_1 + 0x38) < uVar4) { + if (*(uint *)(param_1 + 0x38) != 1) { + return false; + } + puVar9 = *(ushort **)(param_1 + 0x10); + iVar3 = *(int *)(param_1 + 0x34); + uVar6 = 1; + if (iVar3 != 0) { + lVar7 = (long)param_2 + 2; + puVar8 = puVar9; + do { + uVar1 = *(ushort *)(lVar7 + -2); + uVar2 = *puVar8; + *puVar8 = uVar1; + iVar5 = (uint)uVar1 - (uint)uVar2; + if (((iVar5 <= param_3) && (-iVar5 <= param_3)) && (iVar5 != 0)) { + *(ushort *)(lVar7 + -2) = uVar1 - (short)(iVar5 >> 1); + } + lVar7 = lVar7 + 2; + puVar8 = puVar8 + 1; + } while (lVar7 != (long)param_2 + (ulong)(iVar3 - 1) * 2 + 4); + uVar6 = 1; + } + } + else { + memcpy(*(void **)(param_1 + 0x28),param_2,(ulong)*(uint *)(param_1 + 0x34) * 2); + uVar4 = *(uint *)(param_1 + 0x30); + uVar6 = *(uint *)(param_1 + 0x38); + if (uVar4 % uVar6 != 0) { + *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + (ulong)*(uint *)(param_1 + 0x34) * 2; + goto LAB_0011a197; + } + puVar9 = *(ushort **)(param_1 + 0x10); + } + *(ushort **)(param_1 + 0x28) = puVar9; +LAB_0011a197: + return uVar6 <= uVar4; +} + + +================================================================== + +### FUNC 0011a230 (42 bytes) name=FUN_0011a230 + +void FUN_0011a230(long param_1) + +{ + if (*(int *)(param_1 + 0x3c) == 0) { + return; + } + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x10); + memset(*(void **)(param_1 + 0x18),0,(ulong)*(uint *)(param_1 + 0x34) << 2); + return; +} + + +================================================================== + +### FUNC 0011a270 (345 bytes) name=FUN_0011a270 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void * FUN_0011a270(long param_1) + +{ + void *__s; + uint uVar1; + uint uVar2; + uint uVar3; + ulong uVar4; + void *pvVar5; + uint uVar6; + uint uVar7; + double dVar8; + double dVar9; + double dVar10; + + if ((*(int *)(param_1 + 0x3c) != 0) && (*(long *)(param_1 + 0x18) != 0)) { + __s = *(void **)(param_1 + 0x20); + if (__s != (void *)0x0) { + uVar6 = *(uint *)(param_1 + 0x38); + if (*(uint *)(param_1 + 0x30) < uVar6) { + return (void *)0x0; + } + if (uVar6 < 2) { + memset(__s,0,(ulong)*(uint *)(param_1 + 0x34) * 2); + __s = *(void **)(param_1 + 0x20); + } + else { + uVar7 = *(uint *)(param_1 + 0x34); + dVar10 = _DAT_00131fe8 / (double)((uVar6 - 1) * uVar6 * uVar6); + if (uVar7 != 0) { + uVar2 = 0; + pvVar5 = __s; + while( true ) { + dVar9 = 0.0; + if (uVar6 != 0) { + uVar1 = 0; + uVar3 = uVar2; + do { + uVar4 = (ulong)uVar3; + uVar1 = uVar1 + 1; + uVar3 = uVar3 + uVar7; + dVar8 = (double)(int)(*(ushort *)(*(long *)(param_1 + 0x10) + uVar4 * 2) * uVar6 - + *(int *)(*(long *)(param_1 + 0x18) + (ulong)uVar2 * 4)); + dVar9 = dVar9 + dVar8 * dVar8; + } while (uVar1 != uVar6); + } + uVar4 = (ulong)uVar2; + dVar9 = dVar9 * dVar10; + dVar8 = SQRT(dVar9); + __s = pvVar5; + if (NAN(dVar8)) { + dVar8 = sqrt(dVar9); + __s = *(void **)(param_1 + 0x20); + uVar7 = *(uint *)(param_1 + 0x34); + } + uVar2 = uVar2 + 1; + *(short *)((long)pvVar5 + uVar4 * 2) = (short)(int)dVar8; + if (uVar7 <= uVar2) break; + uVar6 = *(uint *)(param_1 + 0x38); + pvVar5 = __s; + } + } + } + } + return __s; + } + return (void *)0x0; +} + + +================================================================== + +### FUNC 0011a3d0 (1781 bytes) name=FUN_0011a3d0 + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +undefined4 +FUN_0011a3d0(uint param_1,uint *param_2,int *param_3,uint param_4,code *param_5,undefined8 param_6) + +{ + uint uVar1; + undefined8 uVar2; + uint uVar3; + int iVar4; + int *piVar5; + long lVar6; + ulong uVar7; + undefined4 uVar8; + int *piVar9; + undefined4 *puVar10; + int *piVar11; + long lVar12; + ulong uVar13; + long in_FS_OFFSET; + bool bVar14; + byte bVar15; + uint local_3e8; + uint local_3e4; + uint local_3e0; + uint local_3dc; + uint local_3d8; + uint local_3d4; + undefined4 local_3d0; + undefined4 local_3cc; + undefined4 local_3c8; + undefined4 local_3c4; + int local_3b8 [4]; + undefined4 local_3a8; + undefined4 local_3a4; + undefined4 local_3a0; + undefined4 local_39c; + undefined4 local_398; + undefined4 local_394; + undefined4 local_390; + undefined4 local_38c; + char local_388 [32]; + char local_368 [32]; + undefined8 local_348; + undefined4 local_340; + undefined4 local_33c; + undefined8 local_338; + undefined8 local_330; + undefined1 local_328 [556]; + undefined4 local_fc; + 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; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + int local_50; + int local_4c; + int local_48; + long local_40; + + bVar15 = 0; + uVar7 = (ulong)param_4; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + if (((((param_2 != (uint *)0x0) && (param_3 != (int *)0x0)) && + (uVar3 = *param_2, (uVar3 & 3) == 0)) && (((param_2[2] & 3) == 0 && ((param_2[4] & 3) == 0))) + ) && (uVar3 <= param_2[2])) { + uVar1 = param_2[1]; + if (((uVar1 <= param_2[3]) && (uVar1 != 0)) && + ((param_2[3] != 0 && ((param_2[5] != 0 && (0x87 < param_4)))))) { + uVar13 = (ulong)param_1; + if (*param_3 == 0x5bb5b55b) { + param_3 = param_3 + 0x22; + uVar7 = (ulong)(param_4 - 0x88); + } + else { + if (param_4 < 0x98) goto LAB_0011a500; + piVar5 = (int *)((long)param_3 + ((ulong)param_4 - 0x98)); + if (*piVar5 == 0x5bb5b57b) { + iVar4 = piVar5[1] + 0x88; + uVar7 = (ulong)(param_4 - iVar4); + param_3 = (int *)((long)param_3 + (long)iVar4); + } + } + if (0x374 < (uint)uVar7) { + if (*(int *)((&DAT_00340d10)[uVar13 * 0x95] + 0x80) != 0) { + piVar5 = __errno_location(); + uVar8 = 0; + *piVar5 = -0x1b51fffd; + goto LAB_0011a50d; + } + *(undefined8 *)(&DAT_00340d18 + uVar13 * 0x4a8) = param_6; + piVar5 = local_3b8; + piVar9 = param_3; + piVar11 = piVar5; + for (lVar6 = 0x6e; lVar6 != 0; lVar6 = lVar6 + -1) { + *(undefined8 *)piVar11 = *(undefined8 *)piVar9; + piVar9 = piVar9 + 2; + piVar11 = piVar11 + 2; + } + bVar14 = local_3b8[0] == 0x374; + *piVar11 = *piVar9; + uVar8 = 0; + if (bVar14) { + if ((uVar3 != local_3b8[2]) || (uVar1 != local_3b8[3])) { + *param_2 = local_3b8[2]; + param_2[2] = local_3b8[2]; + param_2[4] = 0x10; + param_2[1] = local_3b8[3]; + param_2[3] = local_3b8[3]; + param_2[5] = local_3b8[3]; + } + lVar6 = uVar13 * 0x4a8; + *(undefined8 *)(&DAT_00340d40 + lVar6) = *(undefined8 *)param_2; + *(undefined8 *)(&DAT_00340d48 + lVar6) = *(undefined8 *)(param_2 + 2); + *(undefined8 *)(&DAT_00340d50 + lVar6) = *(undefined8 *)(param_2 + 4); + if (local_3b8[1] - 0x10002U < 2) { + if ((DAT_00340ce0 != 0) && (DAT_00340ce0 != local_48)) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fff4; + goto LAB_0011a50d; + } + if ((ulong)(uint)(local_3b8[2] * local_3b8[3]) * 2 + 0x374 <= uVar7) { + lVar12 = uVar13 * 0x4a8; + *(undefined4 *)(&DAT_00340d58 + lVar12) = local_340; + *(int *)(&DAT_00340d5c + lVar12) = local_48; + puVar10 = (undefined4 *)(&DAT_00340d60 + lVar12); + for (lVar6 = 0x14; lVar6 != 0; lVar6 = lVar6 + -1) { + *puVar10 = 0; + puVar10 = puVar10 + 1; + } + uVar3 = param_2[2]; + *(uint *)(&DAT_00340d60 + lVar12) = *param_2; + *(uint *)(&DAT_00340d64 + lVar12) = param_2[1]; + *(uint *)(&DAT_00340da0 + lVar12) = uVar3; + *(uint *)(&DAT_00340da4 + lVar12) = param_2[3]; + *(uint *)(&DAT_00340da8 + lVar12) = param_2[4]; + *(uint *)(&DAT_00340dac + lVar12) = param_2[5]; + *(undefined4 *)(&DAT_00340d98 + lVar12) = 1; + *(undefined4 *)(&DAT_00340d9c + lVar12) = 1; + *(undefined4 *)(&DAT_00340d68 + lVar12) = local_390; + *(undefined4 *)(&DAT_00340d6c + lVar12) = local_38c; + strncpy(&DAT_00340d70 + lVar12,local_368,0x20); + (&DAT_00340d8f)[lVar12] = 0; + strncpy(&DAT_00340d90 + lVar12,local_388,8); + (&DAT_00340d97)[lVar12] = 0; + *(undefined4 *)(&DAT_00340db0 + lVar12) = local_3a0; + *(undefined4 *)(&DAT_00340db4 + lVar12) = local_39c; + *(undefined4 *)(&DAT_00340db8 + lVar12) = local_398; + *(undefined4 *)(&DAT_00340dbc + lVar12) = local_394; + *(undefined8 *)(&DAT_00340dc8 + lVar12) = local_338; + *(undefined8 *)(&DAT_00340dc0 + lVar12) = local_348; + *(undefined8 *)(&DAT_00340dd0 + lVar12) = local_330; + *(undefined4 *)(&DAT_00340dd8 + lVar12) = local_33c; + piVar9 = (int *)(&DAT_00340ddc + lVar12); + uVar3 = 0x374; + bVar14 = ((ulong)piVar9 & 4) != 0; + piVar11 = piVar9; + if (bVar14) { + piVar11 = (int *)(&DAT_00340de0 + (ulong)bVar15 * -8 + lVar12); + piVar5 = local_3b8 + (ulong)bVar15 * -2 + 1; + *piVar9 = local_3b8[0]; + uVar3 = 0x370; + } + for (uVar7 = (ulong)(uVar3 >> 3); uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined8 *)piVar11 = *(undefined8 *)piVar5; + piVar5 = piVar5 + (ulong)bVar15 * -4 + 2; + piVar11 = piVar11 + (ulong)bVar15 * -4 + 2; + } + if (!bVar14) { + *piVar11 = *piVar5; + } + local_3e8 = *param_2; + local_3d0 = 4; + local_3cc = 1; + local_3e4 = param_2[1]; + lVar12 = uVar13 * 0x4a8; + local_3c8 = 1; + local_3c4 = 5; + local_3e0 = param_2[2]; + local_3dc = param_2[3]; + local_3d8 = param_2[4]; + local_3d4 = param_2[5]; + lVar6 = *(long *)(&DAT_00340d08 + lVar12); + *(undefined4 *)(lVar6 + 0xb4) = local_e4; + *(undefined4 *)(lVar6 + 8) = 0; + *(undefined4 *)(lVar6 + 0xc) = 0; + *(undefined4 *)(lVar6 + 0x58) = 1; + *(undefined4 *)(lVar6 + 0xb8) = local_f4; + *(undefined4 *)(lVar6 + 0x70) = 1; + *(undefined4 *)(lVar6 + 0xc0) = 0; + *(undefined4 *)(lVar6 + 0xbc) = local_f0; + *(undefined4 *)(lVar6 + 0xc4) = 0; + *(undefined4 *)(lVar6 + 200) = 0; + *(undefined4 *)(lVar6 + 0xcc) = 0; + *(undefined4 *)(lVar6 + 0xd0) = 0; + *(undefined4 *)(lVar6 + 0xd8) = local_ec; + *(undefined4 *)(lVar6 + 0xd4) = 0; + uVar2 = *(undefined8 *)(&DAT_00340d08 + lVar12); + *(undefined4 *)(lVar6 + 0x10) = local_e0; + *(undefined4 *)(lVar6 + 0xdc) = local_e8; + *(undefined4 *)(lVar6 + 0x14) = local_dc; + *(undefined4 *)(lVar6 + 0x18) = local_d8; + *(undefined4 *)(lVar6 + 0x1c) = local_d4; + *(undefined4 *)(lVar6 + 0x20) = local_d0; + *(undefined4 *)(lVar6 + 0x24) = local_cc; + *(undefined4 *)(lVar6 + 0x30) = local_c8; + *(undefined4 *)(lVar6 + 0x34) = local_c4; + *(undefined4 *)(&DAT_00340d28 + lVar12) = local_fc; + FUN_001079d0(uVar2); + iVar4 = FUN_00109670(*(undefined8 *)(&DAT_00340d08 + lVar12),&local_3e8); + if (iVar4 != 0) { + lVar6 = *(long *)(&DAT_00340d08 + lVar12); + *(undefined4 *)(lVar6 + 0x4c) = local_58; + FUN_00109d40(lVar6,local_54); + lVar6 = *(long *)(&DAT_00340d08 + lVar12); + *(undefined4 *)(lVar6 + 0x8c) = local_60; + *(undefined4 *)(lVar6 + 0x88) = local_64; + iVar4 = FUN_001101e0(lVar6,local_5c,local_3a8,local_3a4); + lVar6 = *(long *)(&DAT_00340d08 + lVar12); + *(undefined4 *)(lVar6 + 0x44) = local_39c; + *(undefined4 *)(lVar6 + 0x48) = local_3a0; + if ((local_50 == 0) || (local_4c == 0)) { + *(undefined4 *)(lVar6 + 0x3c) = local_39c; + *(undefined4 *)(lVar6 + 0x40) = local_3a0; + } + else { + *(int *)(lVar6 + 0x3c) = local_50; + *(int *)(lVar6 + 0x40) = local_4c; + } + FUN_00110030(lVar6,local_328,0x21c); + if (iVar4 != 0) { + FUN_00111720(*(undefined8 *)(&DAT_00340d08 + uVar13 * 0x4a8),param_3 + 0xdd,1,1,1, + 1); + if (param_5 == (code *)0x0) { + uVar8 = 1; + } + else { + uVar8 = 1; + (*param_5)(param_1,local_3a0,2,*(undefined8 *)(&DAT_00340d18 + uVar13 * 0x4a8)); + } + } + goto LAB_0011a50d; + } + goto LAB_0011a4ee; + } + } + piVar5 = __errno_location(); + *piVar5 = -0x1b51ffff; + } + else { +LAB_0011a4ee: + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffd; + } + goto LAB_0011a50d; + } + } + } +LAB_0011a500: + piVar5 = __errno_location(); + uVar8 = 0; + *piVar5 = -0x1b51ffff; +LAB_0011a50d: + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar8; +} + + +================================================================== + +### FUNC 0011aad0 (248 bytes) name=FUN_0011aad0 + +undefined * FUN_0011aad0(void) + +{ + __uid_t __uid; + int iVar1; + tm *ptVar2; + passwd *ppVar3; + long lVar4; + char *pcVar5; + long in_FS_OFFSET; + byte bVar6; + time_t local_130; + char local_128 [264]; + long local_20; + + bVar6 = 0; + local_20 = *(long *)(in_FS_OFFSET + 0x28); + time(&local_130); + ptVar2 = localtime(&local_130); + pcVar5 = local_128; + for (lVar4 = 0x20; lVar4 != 0; lVar4 = lVar4 + -1) { + pcVar5[0] = '\0'; + pcVar5[1] = '\0'; + pcVar5[2] = '\0'; + pcVar5[3] = '\0'; + pcVar5[4] = '\0'; + pcVar5[5] = '\0'; + pcVar5[6] = '\0'; + pcVar5[7] = '\0'; + pcVar5 = pcVar5 + ((ulong)bVar6 * -2 + 1) * 8; + } + __uid = getuid(); + ppVar3 = getpwuid(__uid); + __snprintf_chk(local_128,0x100,1,0x100,"%s/.maglog",ppVar3->pw_dir); + iVar1 = access(local_128,0); + if (iVar1 != 0) { + mkdir(local_128,0x1c0); + } + __sprintf_chk(&DAT_00340be0,1,0x100,"%s/coresdk-%d-%02d-%02d.log",local_128, + ptVar2->tm_year + 0x76c,ptVar2->tm_mon + 1,ptVar2->tm_mday); + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return &DAT_00340be0; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0011abd0 (400 bytes) name=MAG_NewChannel + +undefined8 MAG_NewChannel(uint param_1) + +{ + int *piVar1; + void *pvVar2; + long lVar3; + ulong uVar4; + long *plVar5; + + if (0x80 < param_1) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51ffff; + return 0; + } + uVar4 = (ulong)param_1; + if ((((&DAT_00340d10)[uVar4 * 0x95] != 0) || (*(long *)(&DAT_00340d08 + uVar4 * 0x4a8) != 0)) || + (*(long *)(&DAT_00340d00 + uVar4 * 0x4a8) != 0)) { + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffd; + return 0; + } + plVar5 = (long *)(&DAT_00340d00 + uVar4 * 0x4a8); + for (lVar3 = 0x95; lVar3 != 0; lVar3 = lVar3 + -1) { + *plVar5 = 0; + plVar5 = plVar5 + 1; + } + pvVar2 = operator_new(0x188); + FUN_0011fa80(pvVar2); + *(void **)(&DAT_00340d00 + uVar4 * 0x4a8) = pvVar2; + pvVar2 = operator_new(0x7818); + FUN_00111c30(pvVar2); + *(void **)(&DAT_00340d08 + uVar4 * 0x4a8) = pvVar2; + pvVar2 = operator_new(0xb80); + FUN_00117470(pvVar2); + lVar3 = uVar4 * 0x4a8; + (&DAT_00340d10)[uVar4 * 0x95] = pvVar2; + if ((*(long *)(&DAT_00340d08 + lVar3) == 0) || (pvVar2 == (void *)0x0)) { + pvVar2 = *(void **)(&DAT_00340d00 + uVar4 * 0x4a8); + if (pvVar2 != (void *)0x0) { + FUN_0011fd30(pvVar2); + operator_delete(pvVar2); + *(undefined8 *)(&DAT_00340d00 + uVar4 * 0x4a8) = 0; + } + plVar5 = *(long **)(&DAT_00340d08 + uVar4 * 0x4a8); + if (plVar5 == (long *)0x0) goto LAB_0011ad32; + } + else { + if (*(long *)(&DAT_00340d00 + lVar3) != 0) { + *(uint *)((long)pvVar2 + 0x33c) = param_1; + return 1; + } + plVar5 = *(long **)(&DAT_00340d08 + lVar3); + } + (**(code **)(*plVar5 + 8))(); + *(undefined8 *)(&DAT_00340d08 + uVar4 * 0x4a8) = 0; +LAB_0011ad32: + plVar5 = (long *)(&DAT_00340d10)[uVar4 * 0x95]; + if (plVar5 != (long *)0x0) { + (**(code **)(*plVar5 + 8))(); + (&DAT_00340d10)[uVar4 * 0x95] = 0; + } + piVar1 = __errno_location(); + *piVar1 = -0x1b51fffe; + return 0; +} + + +================================================================== + +### FUNC 0011ad90 (61 bytes) name=MAG_IsChannelAvailable + +bool MAG_IsChannelAvailable(uint param_1) + +{ + long lVar1; + bool bVar2; + + bVar2 = false; + if (((param_1 < 0x81) && + (lVar1 = (ulong)param_1 * 0x4a8, (&DAT_00340d10)[(ulong)param_1 * 0x95] != 0)) && + (*(long *)(&DAT_00340d08 + lVar1) != 0)) { + bVar2 = *(long *)(&DAT_00340d00 + lVar1) != 0; + } + return bVar2; +} + + +================================================================== + +### FUNC 0011add0 (92 bytes) name=MAG_RevisedTemp2InnerTemp + +ulong MAG_RevisedTemp2InnerTemp(uint param_1,undefined4 param_2) + +{ + ushort uVar1; + int iVar2; + int *piVar3; + ulong uVar4; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 == 0) { + uVar4 = 0xffffffff; + } + else if (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffb; + uVar4 = 0xfffffffe; + } + else { + uVar1 = FUN_0010b8d0(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2); + uVar4 = (ulong)uVar1; + } + return uVar4; +} + + +================================================================== + +### FUNC 0011ae40 (92 bytes) name=MAG_RevisedTemp2Gray + +ulong MAG_RevisedTemp2Gray(uint param_1,undefined4 param_2) + +{ + ushort uVar1; + int iVar2; + int *piVar3; + ulong uVar4; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 == 0) { + uVar4 = 0xffffffff; + } + else if (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffb; + uVar4 = 0xfffffffe; + } + else { + uVar1 = FUN_0010b990(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2); + uVar4 = (ulong)uVar1; + } + return uVar4; +} + + +================================================================== + +### FUNC 0011aeb0 (300 bytes) name=MAG_GetCurrentOffset + +undefined4 MAG_GetCurrentOffset(uint param_1,long param_2,undefined4 *param_3,undefined4 *param_4) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + void *__dest; + int *piVar4; + ulong uVar5; + long lVar6; + + if (((param_2 == 0) || (param_3 == (undefined4 *)0x0)) || (param_4 == (undefined4 *)0x0)) { + piVar4 = __errno_location(); + uVar3 = 0; + *piVar4 = -0x1b51ffff; + } + else { + *param_3 = 0; + *param_4 = 0; + iVar2 = MAG_IsChannelAvailable((ulong)param_1); + uVar3 = 0; + if (iVar2 != 0) { + lVar6 = (ulong)param_1 * 0x4a8; + if (*(int *)(*(long *)(&DAT_00340d08 + lVar6) + 0x214) == 0) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffa; + uVar3 = 0; + } + else { + iVar2 = *(int *)(&DAT_00340d60 + lVar6); + iVar1 = *(int *)(&DAT_00340d64 + lVar6); + uVar5 = (ulong)(uint)(iVar2 * iVar1); + __dest = operator_new__(uVar5 << 2); + if (__dest == (void *)0x0) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffe; + } + else { + memcpy(__dest,*(void **)(*(long *)(&DAT_00340d08 + lVar6) + 0x268),uVar5 * 2); + uVar3 = FUN_001142f0(param_2,__dest,iVar2,iVar1,param_3,param_4); + operator_delete__(__dest); + } + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 0011aff0 (60 bytes) name=MAG_GetCurrentCameraInnerTemperature + +undefined4 MAG_GetCurrentCameraInnerTemperature(uint param_1) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + + iVar2 = MAG_IsChannelAvailable(param_1); + uVar3 = 0x80000000; + if (((iVar2 != 0) && (lVar1 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8), lVar1 != 0)) && + (*(int *)(lVar1 + 0x214) != 0)) { + uVar3 = *(undefined4 *)(lVar1 + 0x44); + } + return uVar3; +} + + +================================================================== + +### FUNC 0011b030 (60 bytes) name=MAG_GetCameraTemperature + +undefined4 MAG_GetCameraTemperature(uint param_1) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + + iVar2 = MAG_IsChannelAvailable(param_1); + uVar3 = 0x80000000; + if (((iVar2 != 0) && (lVar1 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8), lVar1 != 0)) && + (*(int *)(lVar1 + 0x214) != 0)) { + uVar3 = *(undefined4 *)(lVar1 + 0x48); + } + return uVar3; +} + + +================================================================== + +### FUNC 0011b070 (60 bytes) name=MAG_GetSenorTemperature + +undefined4 MAG_GetSenorTemperature(uint param_1) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + + iVar2 = MAG_IsChannelAvailable(param_1); + uVar3 = 0x80000000; + if (((iVar2 != 0) && (lVar1 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8), lVar1 != 0)) && + (*(int *)(lVar1 + 0x214) != 0)) { + uVar3 = *(undefined4 *)(lVar1 + 0x44); + } + return uVar3; +} + + +================================================================== + +### FUNC 0011b0b0 (41 bytes) name=MAG_IsInitialized + +undefined4 MAG_IsInitialized(uint param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + uVar2 = 0; + if (iVar1 != 0) { + uVar2 = *(undefined4 *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x7c); + } + return uVar2; +} + + +================================================================== + +### FUNC 0011b0e0 (18 bytes) name=MAG_GetLocalIp + +undefined8 MAG_GetLocalIp(void) + +{ + MAG_IsChannelAvailable(0); + return 0; +} + + +================================================================== + +### FUNC 0011b100 (7 bytes) name=MAG_SetFilter + +void MAG_SetFilter(undefined4 param_1) + +{ + DAT_00340ce0 = param_1; + return; +} + + +================================================================== + +### FUNC 0011b110 (10 bytes) name=MAG_EnableAutoReConnect + +void MAG_EnableAutoReConnect(undefined4 param_1) + +{ + DAT_0033f5e0 = param_1; + return; +} + + +================================================================== + +### FUNC 0011b120 (38 bytes) name=MAG_EnumCameras + +undefined8 MAG_EnumCameras(void) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(0); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_00118190(DAT_00340d10); + return uVar2; +} + + +================================================================== + +### FUNC 0011b150 (44 bytes) name=MAG_IsLinked + +undefined4 MAG_IsLinked(uint param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + uVar2 = 0; + if (iVar1 != 0) { + uVar2 = *(undefined4 *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x80); + } + return uVar2; +} + + +================================================================== + +### FUNC 0011b180 (16 bytes) name=MAG_IsListening + +undefined8 MAG_IsListening(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011b190 (16 bytes) name=MAG_ListenTo + +undefined8 MAG_ListenTo(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011b1a0 (61 bytes) name=MAG_GetRecentHeartBeat + +int MAG_GetRecentHeartBeat(uint param_1) + +{ + long lVar1; + int iVar2; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 == 0) { + return -1; + } + lVar1 = (&DAT_00340d10)[(ulong)param_1 * 0x95]; + iVar2 = FUN_00113bc0(); + return iVar2 - (int)*(undefined8 *)(lVar1 + 0xaf8); +} + + +================================================================== + +### FUNC 0011b1f0 (60 bytes) name=MAG_SetReConnectCallBack + +bool MAG_SetReConnectCallBack(uint param_1,undefined8 param_2,undefined8 param_3) + +{ + long lVar1; + int iVar2; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 != 0) { + lVar1 = (&DAT_00340d10)[(ulong)param_1 * 0x95]; + *(undefined8 *)(lVar1 + 0x40) = param_3; + *(undefined8 *)(lVar1 + 0x38) = param_2; + } + return iVar2 != 0; +} + + +================================================================== + +### FUNC 0011b230 (71 bytes) name=MAG_GetCamInfo + +void MAG_GetCamInfo(uint param_1,void *param_2,uint param_3) + +{ + int iVar1; + uint uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + uVar2 = 0x50; + if (param_3 < 0x51) { + uVar2 = param_3; + } + memcpy(param_2,&DAT_00340d60 + (ulong)param_1 * 0x4a8,(ulong)uVar2); + return; + } + return; +} + + +================================================================== + +### FUNC 0011b280 (18 bytes) name=MAG_GetMulticastState + +undefined8 MAG_GetMulticastState(void) + +{ + MAG_IsChannelAvailable(0); + return 0; +} + + +================================================================== + +### FUNC 0011b2a0 (113 bytes) name=MAG_GetTerminalList + +int MAG_GetTerminalList(void *param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + int *piVar3; + int iVar4; + + iVar4 = 0; + iVar2 = MAG_IsChannelAvailable(0); + if (iVar2 != 0) { + if (*(int *)(DAT_00340d10 + 0x7c) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffc; + return 0; + } + iVar4 = *(int *)(DAT_00340d10 + 0xac0); + if (((param_1 != (void *)0x0) && (iVar4 != 0)) && (param_2 != 0)) { + uVar1 = iVar4 * 0x3c; + if (param_2 <= (uint)(iVar4 * 0x3c)) { + uVar1 = param_2; + } + memcpy(param_1,(void *)(DAT_00340d10 + 0x340),(ulong)uVar1); + } + } + return iVar4; +} + + +================================================================== + +### FUNC 0011b320 (37 bytes) name=MAG_IsProcessingImage + +undefined4 MAG_IsProcessingImage(uint param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + uVar2 = 0; + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(&DAT_00340d20 + (ulong)param_1 * 0x4a8); + } + return uVar2; +} + + +================================================================== + +### FUNC 0011b350 (134 bytes) name=MAG_PrepareProcessImage + +undefined8 MAG_PrepareProcessImage(uint param_1,long param_2,undefined8 param_3) + +{ + long lVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 != 0) { + if (*(int *)(&DAT_00340d20 + (ulong)param_1 * 0x4a8) == 0) { + lVar1 = (&DAT_00340d10)[(ulong)param_1 * 0x95]; + if (*(int *)(lVar1 + 0x80) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffb; + } + else { + if (param_2 != 0) { + *(long *)(lVar1 + 0x58) = param_2; + *(undefined8 *)(lVar1 + 0x60) = param_3; + uVar4 = FUN_00119990(); + return uVar4; + } + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + } + } + else { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffd; + } + } + return 0xffffffff; +} + + +================================================================== + +### FUNC 0011b3f0 (62 bytes) name=MAG_WillStartImmediately + +bool MAG_WillStartImmediately(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + iVar1 = MAG_IsLinked(param_1); + if (iVar1 != 0) { + iVar1 = FUN_001193f0((&DAT_00340d10)[(ulong)param_1 * 0x95]); + return iVar1 == 0; + } + } + return false; +} + + +================================================================== + +### FUNC 0011b440 (69 bytes) name=MAG_TransferPulseImage + +undefined8 MAG_TransferPulseImage(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + *(undefined4 *)(&DAT_0034115c + (ulong)param_1 * 0x4a8) = 0; + *(undefined4 *)(&DAT_00341158 + (ulong)param_1 * 0x4a8) = 1; + } + return 0; +} + + +================================================================== + +### FUNC 0011b490 (160 bytes) name=MAG_StopProcessImage + +void MAG_StopProcessImage(uint param_1) + +{ + void *pvVar1; + int iVar2; + long lVar3; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 != 0) { + if (*(int *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x84) != 0) { + FUN_00118d10((&DAT_00340d10)[(ulong)param_1 * 0x95],0); + } + lVar3 = (ulong)param_1 * 0x4a8; + *(undefined4 *)(&DAT_00340d20 + lVar3) = 0; + *(undefined4 *)(&DAT_00340d24 + lVar3) = 0; + *(undefined8 *)(&DAT_00340d38 + lVar3) = 0; + FUN_0011fca0(*(undefined8 *)(&DAT_00340d00 + lVar3)); + FUN_001071e0(*(undefined8 *)(&DAT_00340d08 + lVar3)); + pvVar1 = *(void **)(&DAT_00340d30 + lVar3); + if (pvVar1 != (void *)0x0) { + operator_delete__(pvVar1); + *(undefined8 *)(&DAT_00340d30 + lVar3) = 0; + } + } + return; +} + + +================================================================== + +### FUNC 0011b540 (151 bytes) name=MAG_Initialize + +bool MAG_Initialize(uint param_1,undefined8 param_2) + +{ + int iVar1; + long lVar2; + bool bVar3; + + iVar1 = MAG_IsChannelAvailable(param_1); + bVar3 = false; + if (iVar1 != 0) { + lVar2 = (ulong)param_1 * 0x4a8; + *(undefined4 *)(&DAT_00340d24 + lVar2) = 0; + *(undefined4 *)(&DAT_00340d20 + lVar2) = 0; + *(undefined8 *)(&DAT_00340d30 + lVar2) = 0; + *(undefined8 *)(&DAT_00340d38 + lVar2) = 0; + *(undefined4 *)(&DAT_0034119c + lVar2) = 0xffffe0c0; + lVar2 = (&DAT_00340d10)[(ulong)param_1 * 0x95]; + if (*(int *)(lVar2 + 0x7c) != 0) { + FUN_00118d40(); + lVar2 = (&DAT_00340d10)[(ulong)param_1 * 0x95]; + } + iVar1 = FUN_00117fc0(lVar2,param_2); + bVar3 = iVar1 != 0; + } + return bVar3; +} + + +================================================================== + +### FUNC 0011b5e0 (161 bytes) name=MAG_Free + +void MAG_Free(uint param_1) + +{ + long lVar1; + int iVar2; + ulong uVar3; + + iVar2 = MAG_IsChannelAvailable(); + if (iVar2 != 0) { + uVar3 = (ulong)param_1; + if (*(int *)(&DAT_00340d20 + uVar3 * 0x4a8) != 0) { + MAG_StopProcessImage(param_1); + } + lVar1 = (&DAT_00340d10)[uVar3 * 0x95]; + if (*(int *)(lVar1 + 0x84) == 0) { + iVar2 = *(int *)(lVar1 + 0x80); + } + else { + FUN_00118d10(lVar1,0); + lVar1 = (&DAT_00340d10)[uVar3 * 0x95]; + iVar2 = *(int *)(lVar1 + 0x80); + } + if (iVar2 == 0) { + iVar2 = *(int *)(lVar1 + 0x7c); + } + else { + FUN_00118cc0(lVar1,0,0); + iVar2 = *(int *)((&DAT_00340d10)[uVar3 * 0x95] + 0x7c); + } + if (iVar2 != 0) { + FUN_00118d40(); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0011b6a0 (195 bytes) name=MAG_DelChannel + +void MAG_DelChannel(uint param_1) + +{ + void *pvVar1; + long *plVar2; + ulong uVar3; + + if (0x80 < param_1) { + return; + } + uVar3 = (ulong)param_1; + if ((&DAT_00340d10)[uVar3 * 0x95] == 0) { +LAB_0011b6eb: + pvVar1 = *(void **)(&DAT_00340d00 + uVar3 * 0x4a8); + if (pvVar1 != (void *)0x0) { + FUN_0011fd30(pvVar1); + operator_delete(pvVar1); + *(undefined8 *)(&DAT_00340d00 + uVar3 * 0x4a8) = 0; + } + plVar2 = *(long **)(&DAT_00340d08 + uVar3 * 0x4a8); + if (plVar2 == (long *)0x0) goto LAB_0011b738; + } + else { + plVar2 = *(long **)(&DAT_00340d08 + uVar3 * 0x4a8); + if (plVar2 == (long *)0x0) goto LAB_0011b6eb; + if (*(long *)(&DAT_00340d00 + uVar3 * 0x4a8) != 0) { + MAG_Free(); + goto LAB_0011b6eb; + } + } + (**(code **)(*plVar2 + 8))(plVar2); + *(undefined8 *)(&DAT_00340d08 + uVar3 * 0x4a8) = 0; +LAB_0011b738: + plVar2 = (long *)(&DAT_00340d10)[uVar3 * 0x95]; + if (plVar2 != (long *)0x0) { + (**(code **)(*plVar2 + 8))(); + (&DAT_00340d10)[uVar3 * 0x95] = 0; + } + return; +} + + +================================================================== + +### FUNC 0011b770 (92 bytes) name=MAG_DisLinkCamera + +void MAG_DisLinkCamera(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 != 0) { + if (*(int *)(&DAT_00340d20 + (ulong)param_1 * 0x4a8) != 0) { + MAG_StopProcessImage(param_1); + } + FUN_00118cc0((&DAT_00340d10)[(ulong)param_1 * 0x95],1,0); + return; + } + return; +} + + +================================================================== + +### FUNC 0011b7e0 (45 bytes) name=MAG_StopListen + +void MAG_StopListen(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(); + if ((iVar1 != 0) && (*(int *)(&DAT_00340d20 + (ulong)param_1 * 0x4a8) != 0)) { + MAG_StopProcessImage(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 0011b810 (52 bytes) name=MAG_SetFFCMode + +bool MAG_SetFFCMode(uint param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + *(undefined4 *)(&DAT_0034118c + (ulong)param_1 * 0x4a8) = param_2; + } + return iVar1 != 0; +} + + +================================================================== + +### FUNC 0011b850 (123 bytes) name=FUN_0011b850 + +undefined8 FUN_0011b850(ulong param_1,int param_2) + +{ + long lVar1; + int iVar2; + long lVar3; + + param_1 = param_1 & 0xffffffff; + if ((param_2 != 0) || (*(int *)(&DAT_0034118c + param_1 * 0x4a8) == 0)) { + lVar3 = param_1 * 0x4a8; + *(undefined4 *)(&DAT_00341190 + lVar3) = 1; + iVar2 = FUN_00119250((&DAT_00340d10)[param_1 * 0x95],0,0); + if (iVar2 != 0) { + lVar1 = *(long *)(&DAT_00340d08 + lVar3); + *(undefined4 *)(lVar1 + 0x40) = *(undefined4 *)(lVar1 + 0x48); + *(undefined4 *)(lVar1 + 0x3c) = *(undefined4 *)(lVar1 + 0x44); + *(undefined4 *)(&DAT_00341170 + lVar3) = 0; + return 1; + } + } + return 0; +} + + +================================================================== + +### FUNC 0011b8e0 (937 bytes) name=FUN_0011b8e0 + +void FUN_0011b8e0(uint param_1,long param_2) + +{ + uint *puVar1; + byte bVar2; + long lVar3; + long lVar4; + long lVar5; + ulong uVar6; + time_t tVar7; + ulong uVar8; + int iVar9; + uint uVar10; + uint uVar11; + int iVar12; + uint uVar13; + uint uVar14; + + uVar8 = (ulong)param_1; + lVar4 = uVar8 * 0x4a8; + if (*(int *)(&DAT_00340d20 + lVar4) == 0) { + return; + } + lVar3 = (&DAT_00340d10)[uVar8 * 0x95]; + uVar13 = *(int *)(&DAT_00341174 + lVar4) + 1; + bVar2 = *(byte *)(lVar3 + 0xb07); + *(uint *)(&DAT_00341174 + lVar4) = uVar13; + if (bVar2 - 1 < 2) { + if (uVar13 < 0x14) { + return; + } + } + else if ((bVar2 == 4) && (uVar13 < 8)) { + return; + } + lVar5 = uVar8 * 0x4a8; + iVar9 = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar3 + 0xb46); + iVar12 = (int)*(short *)(lVar3 + 0xb46) + *(int *)(param_2 + 0x2c); + lVar4 = *(long *)(&DAT_00340d08 + lVar5); + *(int *)(param_2 + 0x28) = iVar9; + puVar1 = (uint *)(&DAT_00341170 + lVar5); + *(int *)(param_2 + 0x2c) = iVar12; + *(int *)(lVar4 + 0x44) = iVar12; + *(int *)(lVar4 + 0x48) = iVar9; + *(int *)(&DAT_00340db0 + lVar5) = iVar9; + *(undefined4 *)(&DAT_00340db4 + lVar5) = *(undefined4 *)(param_2 + 0x2c); + uVar13 = *puVar1; + if ((int)uVar13 < 0) { + FUN_0011b850(param_1,1); + return; + } + uVar11 = *(uint *)(lVar3 + 0xb48); + uVar14 = uVar13 + 1; + *puVar1 = uVar14; + if (uVar14 <= uVar11) { + uVar10 = *(int *)(lVar3 + 0xb38) + uVar11 + *(int *)(lVar3 + 0xb4c); +LAB_0011ba18: + FUN_0010e340(lVar4,uVar13,uVar10); + return; + } + uVar10 = *(int *)(lVar3 + 0xb38) + uVar11; + if (uVar14 <= uVar10) { + if (uVar14 == uVar10) { + FUN_00119250((&DAT_00340d10)[uVar8 * 0x95],1,0); + uVar11 = *(uint *)(lVar3 + 0xb48); + uVar14 = *puVar1; + } + lVar5 = uVar8 * 0x4a8; + FUN_00107640(*(undefined8 *)(&DAT_00340d08 + lVar5),param_2 + 0x4c,uVar11 + 1 == uVar14); + uVar10 = *(int *)(lVar3 + 0xb38) + *(int *)(lVar3 + 0xb48) + *(int *)(lVar3 + 0xb4c); + lVar4 = *(long *)(&DAT_00340d08 + lVar5); + uVar13 = *(int *)(&DAT_00341170 + lVar5) - 1; + goto LAB_0011ba18; + } + uVar10 = uVar10 + *(int *)(lVar3 + 0xb4c); + if (uVar14 <= uVar10) goto LAB_0011ba18; + *(undefined4 *)(&DAT_00341190 + lVar5) = 0; + if (bVar2 < 7) { + uVar6 = 1L << (bVar2 & 0x3f); + if ((uVar6 & 0x69) == 0) { + if (((uVar6 & 0x16) == 0) || (4 < *(uint *)(&DAT_00341178 + lVar5))) goto LAB_0011bb98; + uVar13 = *puVar1; + iVar9 = 100; + if (uVar13 != 0x82 - uVar10) goto LAB_0011bba8; + *(uint *)(&DAT_00341178 + lVar5) = *(uint *)(&DAT_00341178 + lVar5) + 1; + } + else { + uVar13 = *puVar1; + iVar9 = 0x1e; + if ((*(int *)(&DAT_00341178 + lVar5) != 0) || (uVar13 != 0x4b)) goto LAB_0011bba8; + *(undefined4 *)(&DAT_00341178 + lVar5) = 1; + } + } + else { +LAB_0011bb98: + iVar9 = 100; + uVar13 = *(uint *)(&DAT_00341170 + uVar8 * 0x4a8); +LAB_0011bba8: + if ((uVar13 < *(int *)(lVar3 + 0xb50) + uVar10) && + ((uVar13 < uVar10 + iVar9 || + (uVar13 = *(int *)(*(long *)(&DAT_00340d08 + uVar8 * 0x4a8) + 0x3c) - + *(int *)(param_2 + 0x2c), uVar11 = (int)uVar13 >> 0x1f, + (uVar13 ^ uVar11) - uVar11 <= *(uint *)(lVar3 + 0xb54))))) goto LAB_0011babe; + } + FUN_0011b850(param_1,0); +LAB_0011babe: + lVar4 = uVar8 * 0x4a8; + if (*(int *)(&DAT_0034116c + lVar4) == 0) { + tVar7 = time((time_t *)0x0); + *(time_t *)(&DAT_00340dc0 + lVar4) = tVar7; + *(undefined8 *)(&DAT_00340dc8 + lVar4) = 0; + *(undefined8 *)(&DAT_00340dd0 + lVar4) = 0; + *(undefined4 *)(&DAT_00340dd8 + lVar4) = 0; + if (*(int *)(&DAT_00341190 + lVar4) != 0) { + *(uint *)(param_2 + 0x44) = *(uint *)(param_2 + 0x44) | 0x40000; + } + lVar4 = uVar8 * 0x4a8; + uVar8 = FUN_00111720(*(undefined8 *)(&DAT_00340d08 + lVar4),param_2 + 0x4c,0,1,0,1); + if ((uVar8 & 1) != 0) { + /* WARNING: Could not recover jumptable at 0x0011bc5a. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(&DAT_00340d38 + lVar4)) + (param_1,*(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_00340d18 + lVar4)); + return; + } + } + return; +} + + +================================================================== + +### FUNC 0011bcc0 (29 bytes) name=MAG_TriggerFFC + +undefined8 MAG_TriggerFFC(undefined4 param_1) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_0011b850(param_1,1); + return uVar2; +} + + +================================================================== + +### FUNC 0011bce0 (16 bytes) name=MAG_SetIoAlarmState + +undefined8 MAG_SetIoAlarmState(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011bcf0 (84 bytes) name=MAG_SetColorPalette + +void MAG_SetColorPalette(uint param_1,uint param_2) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + if (10 < param_2) { + param_2 = 0; + } + *(uint *)(&DAT_00340d28 + (ulong)param_1 * 0x4a8) = param_2; + FUN_001079d0(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2); + return; + } + return; +} + + +================================================================== + +### FUNC 0011bd60 (227 bytes) name=MAG_SetSubsectionEnlargePara + +undefined8 +MAG_SetSubsectionEnlargePara(uint param_1,int param_2,int param_3,byte param_4,byte param_5) + +{ + int iVar1; + int *piVar2; + long lVar3; + ulong uVar4; + long lVar5; + + uVar4 = (ulong)param_1; + iVar1 = MAG_IsChannelAvailable(uVar4); + if (iVar1 != 0) { + if ((param_2 < param_3) && (param_4 < param_5)) { + lVar5 = uVar4 * 0x4a8; + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar5) + 0x218)); + lVar3 = *(long *)(&DAT_00340d08 + lVar5); + *(int *)(lVar3 + 0x14) = param_2; + *(int *)(lVar3 + 0x18) = param_3; + *(uint *)(lVar3 + 0x1c) = (uint)param_4; + *(uint *)(lVar3 + 0x20) = (uint)param_5; + *(undefined4 *)(lVar3 + 0x10) = 1; + *(undefined4 *)(lVar3 + 0x28) = 0; + if ((*(int *)(lVar3 + 0x214) != 0) && (*(int *)((&DAT_00340d10)[uVar4 * 0x95] + 0x80) == 0)) { + FUN_00111240(lVar3,0); + lVar3 = *(long *)(&DAT_00340d08 + lVar5); + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar3 + 0x218)); + return 1; + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + } + return 0; +} + + +================================================================== + +### FUNC 0011be50 (217 bytes) name=MAG_SetAutoEnlargePara + +void MAG_SetAutoEnlargePara(uint param_1,uint param_2,int param_3,int param_4) + +{ + int iVar1; + long lVar2; + long lVar3; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + if (param_2 < 2) { + param_2 = 2; + } + if (param_3 < -100) { + param_3 = -100; + } + if (param_4 < -100) { + param_4 = -100; + } + lVar2 = (ulong)param_1 * 0x4a8; + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar2) + 0x218)); + lVar3 = *(long *)(&DAT_00340d08 + lVar2); + if (100 < param_3) { + param_3 = 100; + } + if (100 < param_4) { + param_4 = 100; + } + *(uint *)(lVar3 + 0x24) = param_2; + *(int *)(lVar3 + 0x30) = param_3; + *(int *)(lVar3 + 0x34) = param_4; + *(undefined4 *)(lVar3 + 0x10) = 0; + *(undefined4 *)(lVar3 + 0x28) = 0; + if ((*(int *)(lVar3 + 0x214) != 0) && + (*(int *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x80) == 0)) { + FUN_00111240(lVar3,0); + lVar3 = *(long *)(&DAT_00340d08 + lVar2); + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar3 + 0x218)); + return; + } + return; +} + + +================================================================== + +### FUNC 0011bf30 (165 bytes) name=MAG_SetIsothermalPara + +void MAG_SetIsothermalPara(uint param_1,int param_2,int param_3) + +{ + int iVar1; + long lVar2; + long lVar3; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return; + } + lVar2 = (ulong)param_1 * 0x4a8; + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar2) + 0x218)); + lVar3 = *(long *)(&DAT_00340d08 + lVar2); + *(uint *)(lVar3 + 0x28) = (uint)(param_2 <= param_3); + *(undefined4 *)(lVar3 + 0x10) = 0; + *(int *)(lVar3 + 0x14) = param_2; + *(int *)(lVar3 + 0x18) = param_3; + if ((*(int *)(lVar3 + 0x214) != 0) && + (*(int *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x80) == 0)) { + FUN_00111240(lVar3,0); + lVar3 = *(long *)(&DAT_00340d08 + lVar2); + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar3 + 0x218)); + return; +} + + +================================================================== + +### FUNC 0011bfe0 (16 bytes) name=MAG_SetUserROIs + +undefined8 MAG_SetUserROIs(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011bff0 (16 bytes) name=MAG_ResetCamera + +undefined8 MAG_ResetCamera(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011c000 (71 bytes) name=MAG_GetFilteredRaw + +undefined8 MAG_GetFilteredRaw(uint param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) != 0) { + return *(undefined8 *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x268); + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + return 0; +} + + +================================================================== + +### FUNC 0011c050 (165 bytes) name=MAG_GetOutputBMPdata + +undefined8 MAG_GetOutputBMPdata(uint param_1,undefined8 *param_2,long *param_3) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + if ((param_2 == (undefined8 *)0x0) || (param_3 == (long *)0x0)) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) != 0) { + *param_2 = *(undefined8 *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x200); + *param_3 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0xad8; + return 1; + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011c100 (319 bytes) name=MAG_GetOutputBMPdataRGB24 + +undefined8 MAG_GetOutputBMPdataRGB24(uint param_1,undefined1 *param_2,uint param_3,int param_4) + +{ + undefined1 *puVar1; + long lVar2; + int iVar3; + byte *pbVar4; + int *piVar5; + uint uVar6; + uint uVar7; + undefined1 *puVar8; + undefined1 *puVar9; + undefined8 uVar10; + + uVar10 = 0; + iVar3 = MAG_IsChannelAvailable(param_1); + if (iVar3 != 0) { + lVar2 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8); + if (*(int *)(lVar2 + 0x214) == 0) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51fffa; + return 0; + } + uVar7 = *(int *)(lVar2 + 0xadc) * *(int *)(lVar2 + 0xae0); + uVar6 = (int)uVar7 >> 0x1f; + iVar3 = (uVar7 ^ uVar6) - uVar6; + if ((param_2 == (undefined1 *)0x0) || (param_3 < (uint)(iVar3 * 3))) { + piVar5 = __errno_location(); + *piVar5 = -0x1b51ffff; + return 0; + } + if (param_4 == 0) { + if (iVar3 != 0) { + pbVar4 = *(byte **)(lVar2 + 0x200); + puVar9 = param_2; + do { + puVar8 = puVar9 + 3; + puVar1 = (undefined1 *)(lVar2 + 0xb00 + (ulong)*pbVar4 * 4); + *puVar9 = puVar1[2]; + puVar9[1] = puVar1[1]; + puVar9[2] = *puVar1; + pbVar4 = pbVar4 + 1; + puVar9 = puVar8; + } while (param_2 + (ulong)(iVar3 - 1) * 3 + 3 != puVar8); + } + } + else if (iVar3 != 0) { + pbVar4 = *(byte **)(lVar2 + 0x200); + puVar9 = param_2; + do { + puVar8 = puVar9 + 3; + puVar1 = (undefined1 *)(lVar2 + 0xb00 + (ulong)*pbVar4 * 4); + *puVar9 = *puVar1; + puVar9[1] = puVar1[1]; + puVar9[2] = puVar1[2]; + pbVar4 = pbVar4 + 1; + puVar9 = puVar8; + } while (puVar8 != param_2 + (ulong)(iVar3 - 1) * 3 + 3); + } + uVar10 = 1; + } + return uVar10; +} + + +================================================================== + +### FUNC 0011c250 (71 bytes) name=MAG_GetOutputRawData + +undefined8 MAG_GetOutputRawData(uint param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) != 0) { + return *(undefined8 *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x268); + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + return 0; +} + + +================================================================== + +### FUNC 0011c2a0 (165 bytes) name=MAG_GetOutputColorBardata + +undefined8 MAG_GetOutputColorBardata(uint param_1,undefined8 *param_2,long *param_3) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + if ((param_2 == (undefined8 *)0x0) || (param_3 == (long *)0x0)) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) != 0) { + *param_2 = *(undefined8 *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x2a8); + *param_3 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0xf00; + return 1; + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011c350 (165 bytes) name=MAG_GetOutputVideoData + +undefined8 MAG_GetOutputVideoData(uint param_1,undefined8 *param_2,long *param_3) + +{ + long lVar1; + int iVar2; + int *piVar3; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 != 0) { + if ((param_2 == (undefined8 *)0x0) || (param_3 == (long *)0x0)) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + return 0; + } + lVar1 = *(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8); + if (*(int *)(lVar1 + 0x168) != 0) { + *param_2 = *(undefined8 *)(lVar1 + 0x170); + *param_3 = *(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x138; + return 1; + } + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011c400 (70 bytes) name=MAG_GetOutputVideoYV12 + +undefined8 MAG_GetOutputVideoYV12(uint param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x168) != 0) { + return *(undefined8 *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x180); + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + return 0; +} + + +================================================================== + +### FUNC 0011c450 (57 bytes) name=MAG_GetVideoPPS + +undefined8 MAG_GetVideoPPS(uint param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if ((iVar1 != 0) && (*(int *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x168) == 0)) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011c490 (57 bytes) name=MAG_GetVideoSPS + +undefined8 MAG_GetVideoSPS(uint param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if ((iVar1 != 0) && (*(int *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x168) == 0)) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011c4d0 (57 bytes) name=MAG_GetVideoVCL + +undefined8 MAG_GetVideoVCL(uint param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if ((iVar1 != 0) && (*(int *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x168) == 0)) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011c510 (91 bytes) name=MAG_GetTemperatureData + +undefined8 +MAG_GetTemperatureData(uint param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_0010ee00(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3, + param_4,0); + return uVar2; +} + + +================================================================== + +### FUNC 0011c570 (443 bytes) name=MAG_GetTemperatureData_Raw + +undefined8 MAG_GetTemperatureData_Raw(ulong param_1,int *param_2,uint param_3,int param_4) + +{ + ushort uVar1; + ushort uVar2; + ushort *puVar3; + int iVar4; + int iVar5; + int *piVar6; + uint uVar7; + undefined8 uVar8; + uint uVar9; + long lVar10; + + uVar8 = 0; + iVar4 = MAG_IsChannelAvailable(); + if (iVar4 != 0) { + if ((param_2 == (int *)0x0) || (param_3 < 5)) { + piVar6 = __errno_location(); + uVar8 = 0; + *piVar6 = -0x1b51ffff; + } + else { + lVar10 = *(long *)(&DAT_00340d08 + (param_1 & 0xffffffff) * 0x4a8); + if (*(int *)(lVar10 + 0x214) == 0) { + piVar6 = __errno_location(); + *piVar6 = -0x1b51fffb; + } + else { + puVar3 = *(ushort **)(lVar10 + 0x268); + iVar4 = *(int *)(lVar10 + 0x4b9c); + iVar5 = *(int *)(lVar10 + 0x4b98); + uVar1 = puVar3[*(uint *)(lVar10 + 0x4bac)]; + uVar2 = puVar3[*(uint *)(lVar10 + 0x4ba8)]; + if (param_4 != 0) { + iVar4 = FUN_0010ad30(*(undefined4 *)(lVar10 + 0xb8),lVar10,iVar4); + iVar5 = FUN_0010ad30(*(undefined4 *)(lVar10 + 0xb8),lVar10,iVar5, + *(undefined4 *)(lVar10 + 0x4ba8)); + } + uVar9 = (uint)uVar1; + lVar10 = (param_1 & 0xffffffff) * 0x4a8; + uVar7 = *(int *)(&DAT_00340d64 + lVar10) * *(int *)(&DAT_00340d60 + lVar10); + if (param_3 >> 2 <= + (uint)(*(int *)(&DAT_00340d64 + lVar10) * *(int *)(&DAT_00340d60 + lVar10))) { + uVar7 = param_3 >> 2; + } + if (uVar9 < uVar2) { + for (; uVar7 != 0; uVar7 = uVar7 - 1) { + *param_2 = (int)((ulong)((long)(int)(*puVar3 - uVar9) * + ((long)((ulong)(uint)(iVar5 - iVar4) << 0x20) / + (long)(int)(uVar2 - uVar9))) >> 0x20) + iVar4; + puVar3 = puVar3 + 1; + param_2 = param_2 + 1; + } + } + else { + for (; uVar7 != 0; uVar7 = uVar7 - 1) { + *param_2 = iVar4; + param_2 = param_2 + 1; + } + } + uVar8 = 1; + } + } + } + return uVar8; +} + + +================================================================== + +### FUNC 0011c750 (142 bytes) name=MAG_GetFixPara + +undefined4 MAG_GetFixPara(uint param_1,undefined8 *param_2) + +{ + long lVar1; + int iVar2; + int *piVar3; + undefined4 uVar4; + + uVar4 = 0; + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 != 0) { + if (param_2 == (undefined8 *)0x0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + return 0; + } + lVar1 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8); + *param_2 = *(undefined8 *)(lVar1 + 0xb4); + param_2[1] = *(undefined8 *)(lVar1 + 0xbc); + param_2[2] = *(undefined8 *)(lVar1 + 0xc4); + param_2[3] = *(undefined8 *)(lVar1 + 0xcc); + param_2[4] = *(undefined8 *)(lVar1 + 0xd4); + *(undefined4 *)(param_2 + 5) = *(undefined4 *)(lVar1 + 0xdc); + uVar4 = *(undefined4 *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0xb0); + } + return uVar4; +} + + +================================================================== + +### FUNC 0011c7f0 (253 bytes) name=MAG_SetFixPara + +int * MAG_SetFixPara(uint param_1,undefined8 *param_2,undefined4 param_3) + +{ + long lVar1; + int *piVar2; + long lVar3; + + piVar2 = (int *)MAG_IsChannelAvailable(param_1); + if ((int)piVar2 != 0) { + if (param_2 == (undefined8 *)0x0) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + return piVar2; + } + lVar3 = (ulong)param_1 * 0x4a8; + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar3) + 0x218)); + lVar1 = *(long *)(&DAT_00340d08 + lVar3); + *(undefined4 *)(lVar1 + 0xb0) = param_3; + *(undefined8 *)(lVar1 + 0xb4) = *param_2; + *(undefined8 *)(lVar1 + 0xbc) = param_2[1]; + *(undefined8 *)(lVar1 + 0xc4) = param_2[2]; + *(undefined8 *)(lVar1 + 0xcc) = param_2[3]; + *(undefined8 *)(lVar1 + 0xd4) = param_2[4]; + *(undefined4 *)(lVar1 + 0xdc) = *(undefined4 *)(param_2 + 5); + FUN_00109440(*(long *)(&DAT_00340d08 + lVar3),*(long *)(&DAT_00340d08 + lVar3) + 0xb4); + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar3) + 0x218)); + piVar2 = (int *)(ulong)*(uint *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x80); + } + return piVar2; +} + + +================================================================== + +### FUNC 0011c900 (84 bytes) name=MAG_SetEXLevel + +void MAG_SetEXLevel(uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return; + } + FUN_0010f990(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 0011c960 (43 bytes) name=MAG_GetEXLevel + +undefined8 MAG_GetEXLevel(uint param_1) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_0010fa80(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8)); + return uVar2; +} + + +================================================================== + +### FUNC 0011c9a0 (61 bytes) name=MAG_SetDetailEnhancement + +void MAG_SetDetailEnhancement(uint param_1,uint param_2,undefined4 param_3) + +{ + long lVar1; + int iVar2; + uint uVar3; + + iVar2 = MAG_IsChannelAvailable(param_1); + if (iVar2 != 0) { + uVar3 = 0; + if (param_2 < 0x21) { + uVar3 = param_2; + } + lVar1 = *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8); + *(undefined4 *)(lVar1 + 0x68) = param_3; + *(uint *)(lVar1 + 0x2c) = uVar3; + } + return; +} + + +================================================================== + +### FUNC 0011c9e0 (109 bytes) name=MAG_FixTemperature + +ulong MAG_FixTemperature(undefined4 param_1,uint param_2,ulong param_3,int param_4,int param_5) + +{ + int iVar1; + ulong uVar2; + + iVar1 = MAG_IsChannelAvailable(param_2); + if (iVar1 == 0) { + return param_3 & 0xffffffff; + } + uVar2 = FUN_0010ad30(param_1,*(undefined8 *)(&DAT_00340d08 + (ulong)param_2 * 0x4a8), + param_3 & 0xffffffff, + param_5 * *(int *)(&DAT_00340d40 + (ulong)param_2 * 0x4a8) + param_4); + return uVar2; +} + + +================================================================== + +### FUNC 0011ca60 (86 bytes) name=MAG_FixTemperature2 + +ulong MAG_FixTemperature2(undefined4 param_1,uint param_2,ulong param_3,undefined4 param_4) + +{ + int iVar1; + ulong uVar2; + + iVar1 = MAG_IsChannelAvailable(param_2); + if (iVar1 == 0) { + return param_3 & 0xffffffff; + } + uVar2 = FUN_0010ad30(param_1,*(undefined8 *)(&DAT_00340d08 + (ulong)param_2 * 0x4a8), + param_3 & 0xffffffff,param_4); + return uVar2; +} + + +================================================================== + +### FUNC 0011cac0 (45 bytes) name=MAG_GetFrameStatisticalData + +long MAG_GetFrameStatisticalData(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + return *(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x4b80; + } + return 0; +} + + +================================================================== + +### FUNC 0011cb00 (42 bytes) name=MAG_GetRemoteInfo + +undefined * MAG_GetRemoteInfo(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + return &DAT_0034117c + (ulong)param_1 * 0x4a8; + } + return (undefined *)0x0; +} + + +================================================================== + +### FUNC 0011cb40 (152 bytes) name=MAG_GetTemperatureProbe + +void MAG_GetTemperatureProbe(uint param_1,int param_2,int param_3,undefined4 param_4) + +{ + int iVar1; + long lVar2; + int *piVar3; + long in_FS_OFFSET; + byte bVar4; + int local_88 [22]; + long local_30; + + bVar4 = 0; + local_30 = *(long *)(in_FS_OFFSET + 0x28); + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + piVar3 = local_88; + for (lVar2 = 10; lVar2 != 0; lVar2 = lVar2 + -1) { + *(undefined8 *)piVar3 = 0; + piVar3 = (int *)((long)piVar3 + ((ulong)bVar4 * -2 + 1) * 8); + } + MAG_GetCamInfo(param_1,local_88,0x50); + FUN_0010ded0(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8), + param_3 * local_88[0] + param_2,param_4,0); + } + if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0011cbe0 (67 bytes) name=MAG_GetTemperatureProbe2 + +undefined8 MAG_GetTemperatureProbe2(uint param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + uVar2 = FUN_0010ded0(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3,0); + return uVar2; + } + return 0x80000001; +} + + +================================================================== + +### FUNC 0011cc30 (119 bytes) name=MAG_GetLineTemperatureInfo + +void MAG_GetLineTemperatureInfo + (uint param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + FUN_0010d7e0(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3,param_4, + param_5,param_6,param_7,param_8,0); + } + return; +} + + +================================================================== + +### FUNC 0011ccb0 (139 bytes) name=MAG_GetRectTemperatureInfo + +undefined4 +MAG_GetRectTemperatureInfo + (uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, + undefined8 param_6) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + uVar2 = 0; + if ((iVar1 != 0) && (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x214) != 0)) { + uVar2 = FUN_0010c3e0(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3,param_4, + param_5,param_6,0); + } + return uVar2; +} + + +================================================================== + +### FUNC 0011cd40 (107 bytes) name=MAG_GetEllipseTemperatureInfo + +undefined4 +MAG_GetEllipseTemperatureInfo + (uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, + undefined8 param_6) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + uVar2 = 0; + if (iVar1 != 0) { + uVar2 = FUN_0010c780(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3, + param_4,param_5,param_6,0); + } + return uVar2; +} + + +================================================================== + +### FUNC 0011cdb0 (91 bytes) name=MAG_GetRgnTemperatureInfo + +undefined8 +MAG_GetRgnTemperatureInfo(uint param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_0010dc40(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3, + param_4,0); + return uVar2; +} + + +================================================================== + +### FUNC 0011ce10 (62 bytes) name=MAG_UseTemperatureMask + +undefined8 MAG_UseTemperatureMask(uint param_1,undefined4 param_2) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_0010ebe0(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2); + return uVar2; +} + + +================================================================== + +### FUNC 0011ce50 (62 bytes) name=MAG_IsUsingTemperatureMask + +bool MAG_IsUsingTemperatureMask(uint param_1) + +{ + int iVar1; + bool bVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + bVar2 = false; + if ((iVar1 != 0) && (*(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x208) != 0)) { + bVar2 = *(int *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x210) != 0; + } + return bVar2; +} + + +================================================================== + +### FUNC 0011ce90 (91 bytes) name=MAG_SaveBMP + +undefined8 MAG_SaveBMP(uint param_1,undefined4 param_2,undefined8 param_3) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0x168) == 0) { + uVar2 = FUN_00112480(*(undefined8 *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8),param_2,param_3); + return uVar2; + } + uVar2 = FUN_00120300(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8),param_3); + return uVar2; +} + + +================================================================== + +### FUNC 0011cf00 (16 bytes) name=MAG_SetPTZCmd + +undefined8 MAG_SetPTZCmd(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011cf10 (16 bytes) name=MAG_QueryPTZState + +undefined8 MAG_QueryPTZState(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011cf20 (16 bytes) name=MAG_SetSerialCmd + +undefined8 MAG_SetSerialCmd(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011cf30 (16 bytes) name=MAG_SetVideoContrast + +undefined8 MAG_SetVideoContrast(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011cf40 (22 bytes) name=MAG_SetSerialCallBack + +bool MAG_SetSerialCallBack(void) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(); + return iVar1 != 0; +} + + +================================================================== + +### FUNC 0011cf60 (16 bytes) name=MAG_SetVideoBrightness + +undefined8 MAG_SetVideoBrightness(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011cf70 (65 bytes) name=MAG_LockFrame + +void MAG_LockFrame(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return; + } + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0xb0)); + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x218)) + ; + return; +} + + +================================================================== + +### FUNC 0011cfc0 (65 bytes) name=MAG_UnLockFrame + +void MAG_UnLockFrame(uint param_1) + +{ + int iVar1; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 == 0) { + return; + } + pthread_mutex_unlock + ((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + (ulong)param_1 * 0x4a8) + 0x218)); + pthread_mutex_unlock + ((pthread_mutex_t *)(*(long *)(&DAT_00340d00 + (ulong)param_1 * 0x4a8) + 0xb0)); + return; +} + + +================================================================== + +### FUNC 0011d010 (93 bytes) name=FUN_0011d010 + +undefined8 +FUN_0011d010(undefined4 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4, + undefined8 param_5,undefined8 param_6) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 != 0) { + uVar2 = FUN_0011a3d0(param_1,param_2,param_3,param_4,param_5,param_6); + return uVar2; + } + return 0; +} + + +================================================================== + +### FUNC 0011d080 (5 bytes) name=MAG_LoadBufferedDDT + +undefined8 +MAG_LoadBufferedDDT(undefined4 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4, + undefined8 param_5,undefined8 param_6) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 != 0) { + uVar2 = FUN_0011a3d0(param_1,param_2,param_3,param_4,param_5,param_6); + return uVar2; + } + return 0; +} + + +================================================================== + +### FUNC 0011d090 (16 bytes) name=MAG_SDStorageMGT + +undefined8 MAG_SDStorageMGT(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011d0a0 (16 bytes) name=MAG_SDStorageBMP + +undefined8 MAG_SDStorageBMP(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011d0b0 (16 bytes) name=MAG_SDStorageMGSStart + +undefined8 MAG_SDStorageMGSStart(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011d0c0 (16 bytes) name=MAG_SDStorageMGSStop + +undefined8 MAG_SDStorageMGSStop(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011d0d0 (16 bytes) name=MAG_SDStorageAviStart + +undefined8 MAG_SDStorageAviStart(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011d0e0 (16 bytes) name=MAG_SDStorageAviStop + +undefined8 MAG_SDStorageAviStop(void) + +{ + MAG_IsChannelAvailable(); + return 0; +} + + +================================================================== + +### FUNC 0011d0f0 (32 bytes) name=MAG_SDCardStorage + +undefined8 MAG_SDCardStorage(undefined8 param_1,uint param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(); + if ((iVar1 != 0) && (4 < param_2)) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + } + return 0; +} + + +================================================================== + +### FUNC 0011d110 (1488 bytes) name=FUN_0011d110 + +undefined8 FUN_0011d110(uint param_1) + +{ + int *piVar1; + undefined *puVar2; + int iVar3; + undefined8 uVar4; + long lVar5; + ulong uVar6; + uint uVar7; + ulong uVar8; + long lVar9; + undefined8 *puVar10; + undefined8 *puVar11; + ulong uVar12; + long in_FS_OFFSET; + bool bVar13; + byte bVar14; + undefined *local_d8 [4]; + int local_b8; + uint local_b4; + undefined4 local_b0; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined1 local_78 [40]; + undefined4 local_50; + float local_4c; + char local_48 [8]; + long local_40; + + bVar14 = 0; + uVar12 = (ulong)param_1; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + iVar3 = FUN_001194c0((&DAT_00340d10)[uVar12 * 0x95],&local_b8,local_78,500); + if ((iVar3 == 0) && + (iVar3 = FUN_001194c0((&DAT_00340d10)[uVar12 * 0x95],&local_b8,local_78,1000), iVar3 == 0)) { + FUN_00113aa0(local_d8,4); + FUN_00116630(local_d8,"Failed to get parameters from remote camera"); + FUN_00113b30(local_d8); + uVar4 = 0; + } + else { + puVar2 = PTR__S_empty_rep_storage_0033efd0; + uVar7 = local_b4 >> 0x18; + iVar3 = local_b8; + if ((uVar7 < 2) && (1 < local_b8 + 0xf67670e7U)) { + if (local_b8 == 0x9898f1c) { + iVar3 = 0x9898f1c; + } + else if ((2 < local_b8 + 0xf67670e1U) && (iVar3 = 0x9898f2b, local_b8 != 0x9898f2b)) { + __printf_chk(1,"[SDK]unsupported device type %d\n"); + uVar4 = 0; + goto LAB_0011d523; + } + } + lVar9 = uVar12 * 0x4a8; + *(undefined4 *)(&DAT_00341180 + lVar9) = local_a0; + *(int *)(&DAT_0034117c + lVar9) = iVar3; + *(uint *)(&DAT_00341184 + lVar9) = local_b4 & 0xffffff; + *(undefined4 *)(&DAT_00341188 + lVar9) = local_b0; + *(undefined4 *)(&DAT_00341160 + lVar9) = 0; + puVar11 = (undefined8 *)(&DAT_00340d60 + lVar9); + for (lVar5 = 10; lVar5 != 0; lVar5 = lVar5 + -1) { + *puVar11 = 0; + puVar11 = puVar11 + (ulong)bVar14 * -2 + 1; + } + *(int *)(&DAT_00340d58 + lVar9) = iVar3; + *(undefined4 *)(&DAT_00340d5c + lVar9) = 0; + local_d8[0] = puVar2 + 0x18; + *(undefined4 *)(&DAT_00340d68 + lVar9) = 0; + *(undefined4 *)(&DAT_00340d6c + lVar9) = 0; + if (uVar7 < 7) { + switch(uVar7) { + case 0: + std::string::assign((char *)local_d8,0x132017); + break; + case 1: + std::string::assign((char *)local_d8,0x132036); + break; + case 2: + std::string::assign((char *)local_d8,0x132039); + break; + case 3: + std::string::assign((char *)local_d8,0x13202e); + break; + case 4: + std::string::assign((char *)local_d8,0x13203f); + break; + case 5: + std::string::assign((char *)local_d8,0x132020); + break; + case 6: + std::string::assign((char *)local_d8,0x132026); + } + } + else { + std::string::assign((char *)local_d8,0x132042); + } + lVar5 = uVar12 * 0x4a8; + __snprintf_chk(&DAT_00340d70 + lVar5,0x20,1,0x20,&DAT_0013201a,local_d8[0],local_b8); + __strcpy_chk(&DAT_00340d90 + lVar5,local_d8[0],8); + *(undefined4 *)(&DAT_00340d64 + lVar5) = local_a4; + *(undefined4 *)(&DAT_00340d60 + lVar5) = local_a8; + *(undefined4 *)(&DAT_00340da4 + lVar5) = local_a4; + *(undefined4 *)(&DAT_00340da0 + lVar5) = local_a8; + *(undefined4 *)(&DAT_00340d98 + lVar5) = local_a0; + *(undefined4 *)(&DAT_00340d9c + lVar5) = local_a0; + uVar8 = 0xac; + lVar5 = *(long *)(&DAT_00340d08 + lVar5); + puVar11 = (undefined8 *)(lVar5 + 8); + bVar13 = ((ulong)puVar11 & 1) != 0; + if (bVar13) { + *(undefined1 *)(lVar5 + 8) = 0; + puVar11 = (undefined8 *)(lVar5 + 9); + uVar8 = 0xab; + } + puVar10 = puVar11; + if (((ulong)puVar11 & 2) != 0) { + puVar10 = (undefined8 *)((long)puVar11 + 2); + uVar8 = (ulong)((int)uVar8 - 2); + *(undefined2 *)puVar11 = 0; + } + if (((ulong)puVar10 & 4) != 0) { + *(undefined4 *)puVar10 = 0; + uVar8 = (ulong)((int)uVar8 - 4); + puVar10 = (undefined8 *)((long)puVar10 + 4); + } + for (uVar6 = uVar8 >> 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *puVar10 = 0; + puVar10 = puVar10 + (ulong)bVar14 * -2 + 1; + } + if ((uVar8 & 4) != 0) { + *(undefined4 *)puVar10 = 0; + puVar10 = (undefined8 *)((long)puVar10 + 4); + } + puVar11 = puVar10; + if ((uVar8 & 2) != 0) { + puVar11 = (undefined8 *)((long)puVar10 + 2); + *(undefined2 *)puVar10 = 0; + } + if (bVar13) { + *(undefined1 *)puVar11 = 0; + } + lVar5 = *(long *)(&DAT_00340d08 + uVar12 * 0x4a8); + *(undefined4 *)(lVar5 + 0x38) = 200; + *(undefined4 *)(lVar5 + 8) = 0; + *(undefined4 *)(lVar5 + 0x10) = 0; + *(undefined4 *)(lVar5 + 0x14) = 20000; + *(undefined4 *)(lVar5 + 0x18) = 100000; + *(undefined4 *)(lVar5 + 0x1c) = 0; + *(undefined4 *)(lVar5 + 0x20) = 0xff; + *(undefined4 *)(lVar5 + 0x24) = 5; + *(undefined4 *)(lVar5 + 0x58) = 1; + *(undefined4 *)(lVar5 + 0x70) = 1; + *(undefined4 *)(lVar5 + 0x4c) = 1; + *(undefined4 *)(lVar5 + 0x54) = 1; + if (local_4c == 0.0) { + *(undefined4 *)(lVar5 + 0x8c) = 0; + *(undefined4 *)(lVar5 + 0x88) = 0; + lVar9 = 0; + do { + *(int *)(lVar5 + 0x90 + lVar9 * 4) = local_48[lVar9] * 0x32; + lVar9 = lVar9 + 1; + } while (lVar9 != 8); + } + else { + *(float *)(lVar5 + 0x8c) = local_4c; + *(undefined8 *)(lVar5 + 0x90) = 0; + *(undefined8 *)(lVar5 + 0x98) = 0; + *(undefined8 *)(lVar5 + 0xa0) = 0; + *(undefined8 *)(lVar5 + 0xa8) = 0; + *(undefined4 *)(lVar5 + 0x88) = local_50; + __printf_chk((double)*(float *)(*(long *)(&DAT_00340d08 + uVar12 * 0x4a8) + 0x8c),1, + "slope=%f, p=%d\n", + *(undefined4 *)(*(long *)(&DAT_00340d08 + uVar12 * 0x4a8) + 0x88)); + lVar5 = *(long *)(&DAT_00340d08 + uVar12 * 0x4a8); + } + *(undefined4 *)(lVar5 + 0xb4) = 0x41a00000; + *(undefined4 *)(lVar5 + 0xb8) = 0x3f800000; + *(undefined4 *)(lVar5 + 0xbc) = 0x41a00000; + *(undefined4 *)(lVar5 + 0xc0) = 0x3ecccccd; + *(undefined4 *)(lVar5 + 0xc4) = 0x41a00000; + *(undefined4 *)(lVar5 + 200) = 0; + *(undefined4 *)(lVar5 + 0xcc) = 0; + *(undefined4 *)(lVar5 + 0xd0) = 0; + *(undefined4 *)(lVar5 + 0xd4) = 0; + *(undefined4 *)(lVar5 + 0xd8) = 0x3f7f4b1f; + *(undefined4 *)(lVar5 + 0xdc) = 0x3f800000; + if ((allocator *)(local_d8[0] + -0x18) != (allocator *)puVar2) { + piVar1 = (int *)(local_d8[0] + -8); + if (PTR___pthread_key_create_0033efe0 == (undefined *)0x0) { + iVar3 = *(int *)(local_d8[0] + -8); + *(int *)(local_d8[0] + -8) = iVar3 + -1; + } + else { + LOCK(); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + } + if (iVar3 < 1) { + std::string::_Rep::_M_destroy((allocator *)(local_d8[0] + -0x18)); + } + } + uVar4 = 1; + } +LAB_0011d523: + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0011d780 (230 bytes) name=MAG_LinkCameraEx + +bool MAG_LinkCameraEx(uint param_1,undefined4 param_2,undefined2 param_3,undefined8 param_4, + undefined8 param_5,undefined4 param_6,undefined8 param_7,undefined8 param_8) + +{ + long lVar1; + int iVar2; + bool bVar3; + + iVar2 = MAG_IsChannelAvailable(); + bVar3 = false; + if (iVar2 != 0) { + lVar1 = (&DAT_00340d10)[(ulong)param_1 * 0x95]; + if (*(int *)(lVar1 + 0x80) == 0) { + iVar2 = FUN_001186b0(lVar1,param_2,param_7,param_8,param_3,param_6,param_4,param_5); + if (iVar2 != 0) { + iVar2 = FUN_0011d110(param_1,param_2); + if (iVar2 == 0) { + FUN_00118cc0((&DAT_00340d10)[(ulong)param_1 * 0x95],1,0); + } + } + bVar3 = *(int *)((&DAT_00340d10)[(ulong)param_1 * 0x95] + 0x80) != 0; + } + } + return bVar3; +} + + +================================================================== + +### FUNC 0011d880 (41 bytes) name=MAG_LinkCamera + +void MAG_LinkCamera(undefined8 param_1,undefined8 param_2) + +{ + MAG_LinkCameraEx(param_1,param_2,0x833c,&DAT_00131fd1,&DAT_00131fd1,0,&DAT_00131fd1,&DAT_00131fd1) + ; + return; +} + + +================================================================== + +### FUNC 0011d8b0 (919 bytes) name=FUN_0011d8b0 + +undefined4 FUN_0011d8b0(uint param_1,uint *param_2,long param_3,int param_4,undefined4 param_5) + +{ + uint uVar1; + uint uVar2; + int iVar3; + int *piVar4; + void *pvVar5; + undefined8 *puVar6; + long lVar7; + long lVar8; + uint *puVar9; + uint *puVar10; + ulong uVar11; + undefined4 uVar12; + undefined8 *puVar13; + long in_FS_OFFSET; + uint local_178; + uint local_174; + uint local_170; + uint local_16c; + uint local_168; + uint local_164; + undefined4 local_160; + undefined4 local_15c; + undefined4 local_158; + undefined4 local_154; + undefined1 local_148 [264]; + long local_40; + + local_40 = *(long *)(in_FS_OFFSET + 0x28); + if (((param_2 != (uint *)0x0) && (param_3 != 0)) && (param_4 == 2)) { + uVar11 = (ulong)param_1; + uVar1 = *param_2; + if ((((uVar1 == *(uint *)(&DAT_00340d60 + uVar11 * 0x4a8)) && + (uVar2 = param_2[1], uVar2 == *(uint *)(&DAT_00340d64 + uVar11 * 0x4a8))) && + (((uVar1 & 3) == 0 && (((param_2[2] & 3) == 0 && ((param_2[4] & 3) == 0)))))) && + ((uVar1 <= param_2[2] && + ((((uVar2 <= param_2[3] && (uVar2 != 0)) && (param_2[3] != 0)) && (param_2[5] != 0)))))) { + lVar8 = uVar11 * 0x4a8; + if (*(int *)(&DAT_00340d20 + lVar8) != 0) goto LAB_0011dafd; + if (*(int *)((&DAT_00340d10)[uVar11 * 0x95] + 0x80) == 0) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffb; + uVar12 = 0; + goto LAB_0011d8f7; + } + *(undefined4 *)(&DAT_00340d24 + lVar8) = 2; + *(undefined4 *)(&DAT_00341178 + lVar8) = 0; + *(undefined4 *)(&DAT_00341174 + lVar8) = 0; + puVar9 = param_2; + puVar10 = (uint *)(&DAT_00340d40 + lVar8); + for (lVar7 = 6; lVar7 != 0; lVar7 = lVar7 + -1) { + *puVar10 = *puVar9; + puVar9 = puVar9 + 1; + puVar10 = puVar10 + 1; + } + pvVar5 = *(void **)(&DAT_00340d30 + lVar8); + uVar1 = *param_2 * param_2[1] * 2; + if (pvVar5 != (void *)0x0) { + operator_delete__(pvVar5); + *(undefined8 *)(&DAT_00340d30 + lVar8) = 0; + } + lVar8 = uVar11 * 0x4a8; + pvVar5 = operator_new__((ulong)uVar1 + 0x98); + puVar13 = (undefined8 *)(&DAT_00340d30 + lVar8); + *puVar13 = pvVar5; + if (pvVar5 == (void *)0x0) { + piVar4 = __errno_location(); + uVar12 = 0; + *piVar4 = -0x1b51fffe; + goto LAB_0011d8f7; + } + local_178 = *param_2; + local_160 = 4; + local_15c = 1; + local_158 = 1; + local_154 = 5; + local_174 = param_2[1]; + local_170 = param_2[2]; + local_16c = param_2[3]; + local_168 = param_2[4]; + local_164 = param_2[5]; + puVar6 = &DAT_00340d10 + uVar11 * 0x95; + iVar3 = FUN_00119d90(*puVar6); + if (iVar3 != 0) { + iVar3 = FUN_00109670(*(undefined8 *)(&DAT_00340d08 + lVar8),&local_178); + if (iVar3 == 0) { + if ((void *)*puVar13 != (void *)0x0) { + operator_delete__((void *)*puVar13); + *puVar13 = 0; + } + } + else { + FUN_00119380(*puVar6,local_148,0x100); + iVar3 = FUN_00112bc0(*(undefined8 *)(&DAT_00340d08 + lVar8),local_148); + if (iVar3 != 0) { + *(undefined4 *)(&DAT_00341150 + lVar8) = 0xffffffff; + piVar4 = __errno_location(); + *piVar4 = -0x1b51fff9; + *(uint *)(&DAT_00340da8 + lVar8) = param_2[4]; + *(uint *)(&DAT_00340dac + lVar8) = param_2[5]; + FUN_0011b850(param_1,1); + iVar3 = FUN_001191a0(*puVar6,1,uVar1,0,*puVar13,FUN_0011b8e0,0,param_5); + if (iVar3 != 0) { + *(long *)(&DAT_00340d38 + lVar8) = param_3; + *(undefined4 *)(&DAT_00341158 + lVar8) = 0; + *(undefined4 *)(&DAT_00341154 + lVar8) = param_5; + *(undefined4 *)(&DAT_0034115c + lVar8) = 0; + uVar12 = 1; + *(undefined4 *)(&DAT_0034116c + lVar8) = 0; + *(undefined4 *)(&DAT_00341170 + lVar8) = 0xffffffff; + *(undefined4 *)(&DAT_00340d20 + lVar8) = 1; + goto LAB_0011d8f7; + } + if ((void *)*puVar13 != (void *)0x0) { + operator_delete__((void *)*puVar13); + *puVar13 = 0; + uVar12 = 0; + goto LAB_0011d8f7; + } + goto LAB_0011db08; + } + } +LAB_0011dafd: + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffd; + } +LAB_0011db08: + uVar12 = 0; + goto LAB_0011d8f7; + } + } + piVar4 = __errno_location(); + uVar12 = 0; + *piVar4 = -0x1b51ffff; +LAB_0011d8f7: + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar12; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0011dc50 (90 bytes) name=MAG_StartProcessImage + +undefined8 +MAG_StartProcessImage + (uint param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,undefined8 param_5) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 == 0) { + return 0; + } + *(undefined8 *)(&DAT_00340d18 + (ulong)param_1 * 0x4a8) = param_5; + uVar2 = FUN_0011d8b0(param_1,param_2,param_3,param_4,0); + return uVar2; +} + + +================================================================== + +### FUNC 0011dcb0 (93 bytes) name=MAG_StartProcessPulseImage + +undefined8 +MAG_StartProcessPulseImage + (uint param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,undefined8 param_5) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 == 0) { + return 0; + } + *(undefined8 *)(&DAT_00340d18 + (ulong)param_1 * 0x4a8) = param_5; + uVar2 = FUN_0011d8b0(param_1,param_2,param_3,param_4,1); + return uVar2; +} + + +================================================================== + +### FUNC 0011dd20 (2 bytes) name=FUN_0011dd20 + +void FUN_0011dd20(void) + +{ + return; +} + + +================================================================== + +### FUNC 0011dd30 (148 bytes) name=FUN_0011dd30 + +float FUN_0011dd30(float param_1,float *param_2,long param_3,int param_4) + +{ + float fVar1; + float *pfVar2; + long lVar3; + int iVar4; + long lVar5; + float fVar6; + + fVar1 = *param_2; + fVar6 = fVar1; + if ((fVar1 <= param_1) && + (fVar6 = param_2[(long)param_4 + -1], param_1 <= param_2[(long)param_4 + -1])) { + fVar6 = param_1; + } + if ((param_4 < 2) || (fVar6 < fVar1)) { + lVar5 = 0; + lVar3 = 4; + } + else { + lVar5 = 0; + pfVar2 = param_2; + while( true ) { + pfVar2 = pfVar2 + 1; + iVar4 = (int)lVar5 + 1; + if ((iVar4 == param_4 + -1) || (fVar6 < *pfVar2)) break; + lVar5 = (long)iVar4; + } + lVar5 = lVar5 * 4; + lVar3 = lVar5 + 4; + } + fVar1 = *(float *)((long)param_2 + lVar5); + if (fVar1 < *(float *)((long)param_2 + lVar3)) { + return ((fVar6 - fVar1) * (*(float *)(param_3 + lVar3) - *(float *)(param_3 + lVar5))) / + (*(float *)((long)param_2 + lVar3) - fVar1) + *(float *)(param_3 + lVar5); + } + return *(float *)(param_3 + lVar5); +} + + +================================================================== + +### FUNC 0011ddd0 (79 bytes) name=MAG_SetEstimateUnderArmTempMode + +int MAG_SetEstimateUnderArmTempMode(uint param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + if (iVar1 != 0) { + if (param_2 - 1U < 2) { + *(int *)(&DAT_00341194 + (ulong)param_1 * 0x4a8) = param_2; + return param_2; + } + piVar2 = __errno_location(); + *piVar2 = -0x1b51ffff; + } + return 0; +} + + +================================================================== + +### FUNC 0011de30 (38 bytes) name=MAG_GetEstimateUnderArmTempMode + +undefined4 MAG_GetEstimateUnderArmTempMode(uint param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = MAG_IsChannelAvailable(param_1); + uVar2 = 0; + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(&DAT_00341194 + (ulong)param_1 * 0x4a8); + } + return uVar2; +} + + +================================================================== + +### FUNC 0011de60 (34 bytes) name=MAG_GetEstimatedEnvTemp + +ulong MAG_GetEstimatedEnvTemp(uint param_1) + +{ + ulong uVar1; + + uVar1 = MAG_IsChannelAvailable(param_1); + if ((int)uVar1 != 0) { + uVar1 = (ulong)*(uint *)(&DAT_00341198 + (ulong)param_1 * 0x4a8); + } + return uVar1; +} + + +================================================================== + +### FUNC 0011de90 (58 bytes) name=MAG_SetEnvTempEstimateMode + +ulong MAG_SetEnvTempEstimateMode(uint param_1,uint param_2,undefined4 param_3) + +{ + ulong uVar1; + + uVar1 = MAG_IsChannelAvailable(param_1); + if ((int)uVar1 != 0) { + *(uint *)(&DAT_0034119c + (ulong)param_1 * 0x4a8) = param_2; + *(undefined4 *)(&DAT_003411a0 + (ulong)param_1 * 0x4a8) = param_3; + uVar1 = (ulong)param_2; + } + return uVar1; +} + + +================================================================== + +### FUNC 0011ded0 (2778 bytes) name=MAG_EstimateUnderArmTempFromForeheadRect + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulong MAG_EstimateUnderArmTempFromForeheadRect + (uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + long lVar1; + int iVar2; + undefined4 uVar3; + uint uVar4; + int iVar5; + undefined4 uVar6; + int iVar7; + int iVar8; + ulong uVar9; + int *piVar10; + long lVar11; + undefined4 *puVar12; + char *pcVar13; + undefined4 *puVar14; + char *pcVar15; + long in_FS_OFFSET; + undefined1 uVar16; + bool bVar17; + byte bVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float local_21c; + undefined8 local_218; + undefined8 local_210; + undefined4 local_208; + undefined4 local_1f8; + undefined4 local_1f4; + undefined4 local_1f0; + undefined4 local_1ec; + float 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; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1a8; + 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; + undefined4 local_170; + undefined4 local_16c; + undefined4 local_168; + undefined4 local_158; + undefined4 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_108; + 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; + undefined4 local_cc; + undefined4 local_c8; + 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; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + char local_68 [3]; + undefined1 local_65; + long local_40; + + bVar18 = 0; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + uVar9 = MAG_IsChannelAvailable(); + if ((int)uVar9 == 0) goto LAB_0011dfa0; + uVar9 = (ulong)param_1; + local_218 = 0; + lVar11 = uVar9 * 0x4a8; + local_210 = 0; + local_208 = 0; + if (*(int *)(*(long *)(&DAT_00340d08 + lVar11) + 0x214) == 0) { + if (*(int *)((&DAT_00340d10)[uVar9 * 0x95] + 0x80) == 0) { + piVar10 = __errno_location(); + *piVar10 = -0x1b51fffa; + uVar9 = 0xfffffffb; + } + else { + iVar2 = MAG_GetRectTemperatureInfo(param_1,param_2,param_3,param_4,param_5,&local_218); + if (iVar2 == 0) { + piVar10 = __errno_location(); + *piVar10 = -0x1b51fff8; + uVar9 = 0xfffffffe; + } + else { + piVar10 = __errno_location(); + *piVar10 = -0x1b51fff8; + uVar9 = 0xfffffffd; + } + } + goto LAB_0011dfa0; + } + iVar2 = FUN_0010c3e0(*(long *)(&DAT_00340d08 + lVar11),param_2,param_3,param_4,param_5,&local_218, + 0); + uVar6 = local_208; + if (iVar2 == 0) { + piVar10 = __errno_location(); + *piVar10 = -0x1b51ffff; + uVar9 = 0xffffffff; + goto LAB_0011dfa0; + } + uVar3 = FUN_0010ded0(*(undefined8 *)(&DAT_00340d08 + lVar11),local_208,3,0); + uVar4 = FUN_0010ad30(*(undefined4 *)(*(long *)(&DAT_00340d08 + lVar11) + 0xb8), + *(long *)(&DAT_00340d08 + lVar11),uVar3,uVar6); + lVar1 = *(long *)(&DAT_00340d08 + lVar11); + iVar5 = FUN_0010ad30(*(undefined4 *)(lVar1 + 0xb8),lVar1,*(undefined4 *)(lVar1 + 0x4ba0), + (*(uint *)(&DAT_00340d60 + lVar11) >> 1) + + *(uint *)(&DAT_00340d60 + lVar11) * *(int *)(&DAT_00340d64 + lVar11)); + uVar6 = FUN_0010ded0(*(long *)(&DAT_00340d08 + lVar11), + *(undefined4 *)(*(long *)(&DAT_00340d08 + lVar11) + 0x4bac),7,0); + lVar1 = *(long *)(&DAT_00340d08 + lVar11); + iVar7 = FUN_0010ad30(*(undefined4 *)(lVar1 + 0xb8),lVar1,uVar6,*(undefined4 *)(lVar1 + 0x4bac)); + iVar2 = *(int *)(&DAT_00340db0 + lVar11); + uVar16 = 1; + __sprintf_chk(local_68,1,0x20,&DAT_0013201d,*(undefined4 *)(&DAT_00340d58 + lVar11)); + local_65 = 0; + lVar11 = 4; + pcVar13 = local_68; + pcVar15 = "621"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + uVar16 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while ((bool)uVar16); + if ((bool)uVar16) { + iVar2 = iVar2 + -12000; + goto LAB_0011e115; + } + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "620"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (bVar17) { +LAB_0011e3e8: + iVar2 = iVar2 + -10000; + } + else { + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "321"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (bVar17) goto LAB_0011e3e8; + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "210"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (bVar17) goto LAB_0011e3e8; + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "150"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (bVar17) goto LAB_0011e3e8; + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "120"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (bVar17) goto LAB_0011e3e8; + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "340"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (bVar17) { +LAB_0011e9a3: + iVar2 = iVar2 + *(int *)(&DAT_0034119c + uVar9 * 0x4a8); + } + else { + lVar11 = 4; + bVar17 = false; + pcVar13 = local_68; + pcVar15 = "320"; + do { + if (lVar11 == 0) break; + lVar11 = lVar11 + -1; + bVar17 = *pcVar13 == *pcVar15; + pcVar13 = pcVar13 + (ulong)bVar18 * -2 + 1; + pcVar15 = pcVar15 + (ulong)bVar18 * -2 + 1; + } while (bVar17); + if (((((bVar17) || (iVar8 = strcmp(local_68,"211"), iVar8 == 0)) || + (iVar8 = strcmp(local_68,"140"), iVar8 == 0)) || + ((iVar8 = strcmp(local_68,"130"), iVar8 == 0 || + (iVar8 = strcmp(local_68,"160"), iVar8 == 0)))) || + (iVar8 = strcmp(local_68,"100"), iVar8 == 0)) goto LAB_0011e9a3; + iVar8 = strcmp(local_68,"330"); + if (iVar8 == 0) { + iVar2 = iVar2 + -6000; + } + else { + if (0x27f < *(uint *)(&DAT_00340d60 + uVar9 * 0x4a8)) goto LAB_0011e3e8; + iVar2 = iVar2 + -8000; + } + } + } +LAB_0011e115: + iVar8 = iVar2; + if (((*(int *)(&DAT_003411a0 + uVar9 * 0x4a8) == 0) && (iVar8 = iVar7, iVar7 <= iVar2)) && + (iVar8 = iVar2, iVar5 < iVar2)) { + iVar8 = iVar5; + } + iVar2 = 15000; + if (*(int *)(&DAT_00341194 + uVar9 * 0x4a8) == 2) { + if ((14999 < iVar8) && (iVar2 = 40000, iVar8 < 0x9c41)) { + iVar2 = iVar8; + } + } + else { + if ((14999 < iVar8) && (iVar2 = 35000, iVar8 < 0x88b9)) { + iVar2 = iVar8; + } + uVar4 = uVar4 - 500; + } + *(int *)(&DAT_00341198 + uVar9 * 0x4a8) = iVar2; + if ((uVar4 - 26000 < 0x3e81) && ((30999 < (int)uVar4 || (4999 < (int)(uVar4 - iVar2))))) { + if (*(int *)(&DAT_00341194 + uVar9 * 0x4a8) == 2) { + local_1f8 = 0x42000000; + local_21c = DAT_00132190; + local_1f4 = 0x42020000; + local_1f0 = 0x42040000; + local_1ec = 0x42060000; + local_1e8 = DAT_00132190; + local_1e4 = 0x420a0000; + local_1e0 = 0x420c0000; + local_1dc = 0x420e0000; + local_1d8 = 0x42100000; + local_1d4 = 0x42120000; + local_1d0 = 0x42140000; + local_1cc = 0x42160000; + local_1c8 = 0x42180000; + local_1c4 = 0x421a0000; + local_1c0 = 0x421c0000; + local_1bc = 0x421e0000; + local_1b8 = 0x42200000; + local_1a8 = 0x42113333; + local_1a4 = 0x42120000; + local_1a0 = 0x42126666; + local_19c = 0x4213999a; + local_198 = 0x42153333; + local_194 = 0x4216cccd; + local_190 = 0x42193333; + local_18c = 0x421c0000; + local_188 = 0x421ecccd; + local_184 = 0x42213333; + local_180 = 0x4222cccd; + local_17c = 0x4224cccd; + local_178 = 0x42266666; + local_174 = 0x42286666; + local_170 = 0x422a0000; + local_16c = 0x422c0000; + local_168 = 0x422e0000; + local_158 = 0x420ecccd; + local_154 = 0x42100000; + local_150 = 0x4210cccd; + local_14c = 0x4211999a; + local_148 = 0x42126666; + local_144 = 0x4212cccd; + local_140 = 0x42140000; + local_13c = 0x42153333; + local_138 = 0x42193333; + local_134 = 0x421b3333; + local_130 = 0x421d999a; + local_12c = 0x42206666; + local_128 = 0x4222cccd; + local_124 = 0x4225999a; + local_120 = 0x42286666; + local_11c = 0x422acccd; + local_118 = 0x422d999a; + local_108 = 0x420f999a; + local_104 = 0x42100000; + local_100 = 0x4210cccd; + local_fc = 0x42113333; + local_f8 = 0x4211999a; + local_f4 = 0x42120000; + local_f0 = 0x4212cccd; + local_ec = 0x4213999a; + local_e8 = 0x4215999a; + local_e4 = 0x42173333; + local_e0 = 0x421a0000; + local_dc = 0x421ccccd; + local_d8 = 0x421f3333; + local_d4 = 0x4221999a; + local_d0 = 0x4223999a; + local_cc = 0x42260000; + fVar19 = (float)iVar2 * DAT_00131e34; + local_c8 = 0x42280000; + local_b8 = 0x420f999a; + local_b4 = 0x42100000; + local_b0 = 0x42106666; + local_ac = 0x4210cccd; + local_a8 = 0x4211999a; + local_a4 = 0x42120000; + local_a0 = 0x42126666; + local_9c = 0x4212cccd; + local_98 = 0x4213999a; + local_94 = 0x4214cccd; + local_90 = 0x42166666; + local_8c = 0x42193333; + local_88 = 0x421c6666; + local_84 = 0x421e6666; + local_80 = 0x42206666; + local_7c = 0x42226666; + local_78 = 0x42246666; + if (fVar19 <= DAT_00132188) { + local_21c = DAT_00132188; + puVar12 = &local_158; + puVar14 = &local_1a8; + fVar22 = DAT_00132184; + } + else if (DAT_0013218c < fVar19) { + puVar12 = &local_b8; + puVar14 = &local_108; + fVar22 = DAT_0013218c; + } + else { + local_21c = DAT_0013218c; + puVar12 = &local_108; + puVar14 = &local_158; + fVar22 = DAT_00132188; + } + fVar21 = (float)(int)uVar4 * DAT_00131e34; + fVar20 = (float)FUN_0011dd30(fVar21,&local_1f8,puVar14,0x11); + fVar20 = DAT_00131e3c * fVar20; + fVar21 = (float)FUN_0011dd30(fVar21,&local_1f8,puVar12,0x11); + fVar20 = ((fVar19 - fVar22) * (fVar21 * DAT_00131e3c - fVar20)) / (local_21c - fVar22) + + fVar20; + } + else { + if ((int)uVar4 < 30000) { + fVar20 = (float)((int)((uVar4 - 20000) * 0x7c) / 1000 + 34000); + } + else if ((int)uVar4 < 0x89e4) { + fVar19 = (float)(int)uVar4; + fVar20 = ((DAT_00132194 * fVar19 * fVar19 * fVar19 - DAT_00132198 * fVar19 * fVar19) + + fVar19 * _DAT_0013219c) - _DAT_001321a0; + } + else { + fVar20 = (float)(int)(uVar4 - 0x89e4) * _DAT_001321a4 + _DAT_001321a8; + } + fVar19 = _DAT_001321ac; + if (24999 < iVar2) { + fVar19 = DAT_00131e30; + } + fVar20 = (float)(25000 - iVar2) * fVar19 + fVar20; + if (*(int *)(&DAT_00341194 + uVar9 * 0x4a8) == 3) { + if (fVar20 <= _DAT_001321b0) { + fVar20 = (fVar20 + _DAT_001321b8) * DAT_00131e4c; + } + else { + fVar20 = fVar20 - _DAT_001321b4; + } + } + else if (fVar20 < _DAT_001321bc) { + fVar20 = (fVar20 - _DAT_001321bc) * DAT_00131e4c + _DAT_001321bc; + } + } + uVar9 = (ulong)((int)fVar20 | 1); + } + else { + uVar9 = (ulong)(uVar4 & 0xfffffffe); + } +LAB_0011dfa0: + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar9; +} + + +================================================================== + +### FUNC 0011e9f0 (147 bytes) name=MAG_LoadDDT + +ulong MAG_LoadDDT(undefined4 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4, + undefined8 param_5) + +{ + undefined4 uVar1; + void *pvVar2; + ulong uVar3; + undefined1 local_58 [40]; + + pvVar2 = operator_new__(4000000); + FUN_00107130(local_58,param_3); + uVar1 = FUN_00106f60(local_58,pvVar2,1,4000000); + FUN_00106db0(local_58); + uVar3 = FUN_0011d010(param_1,param_2,pvVar2,uVar1,param_4,param_5); + if (pvVar2 != (void *)0x0) { + operator_delete__(pvVar2); + uVar3 = uVar3 & 0xffffffff; + } + return uVar3; +} + + +================================================================== + +### FUNC 0011eac0 (1632 bytes) name=FUN_0011eac0 + +undefined8 FUN_0011eac0(ulong param_1,undefined8 param_2) + +{ + undefined4 uVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + undefined8 uVar5; + char *__src; + void *pvVar6; + long lVar7; + undefined8 *puVar8; + long lVar9; + long in_FS_OFFSET; + byte bVar10; + undefined2 local_488; + undefined2 local_486; + undefined2 local_482; + undefined2 local_480; + undefined2 local_47e; + undefined2 local_47c; + undefined1 local_478 [32]; + undefined1 local_458 [32]; + tm local_438; + undefined4 local_3f8; + undefined4 local_3f4; + undefined4 local_3f0; + undefined1 local_3ec [44]; + char local_3c0 [20]; + char local_3ac [32]; + char local_38c [32]; + undefined8 local_36c; + undefined8 local_364; + undefined8 local_348; + undefined8 local_340; + undefined8 local_338; + undefined8 local_330; + undefined4 local_328; + undefined4 local_324; + undefined4 local_320; + undefined4 local_258; + undefined4 local_254; + undefined4 local_250; + 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; + undefined4 local_21c; + undefined4 local_16c; + undefined4 local_164; + undefined4 local_160; + int local_11c; + int local_118; + int local_114; + undefined4 local_10c; + int local_108; + int local_104; + long local_40; + + bVar10 = 0; + param_1 = param_1 & 0xffffffff; + lVar9 = param_1 * 0x4a8; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + if (*(int *)(*(long *)(&DAT_00340d08 + lVar9) + 0x214) == 0) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fffa; + uVar5 = 0; + } + else { + iVar2 = FUN_00112480(*(long *)(&DAT_00340d08 + lVar9),0,param_2); + if (iVar2 == 0) { + piVar4 = __errno_location(); + *piVar4 = -0x1b51fff7; + uVar5 = 0; + } + else { + puVar8 = (undefined8 *)&local_3f8; + for (lVar7 = 0x75; lVar7 != 0; lVar7 = lVar7 + -1) { + *puVar8 = 0; + puVar8 = puVar8 + (ulong)bVar10 * -2 + 1; + } + local_3f8 = 0x3ac; + local_3f4 = 0x10000; + local_3f0 = 0x198; + uVar3 = *(undefined4 *)(&DAT_00340d5c + lVar9); + uVar1 = *(undefined4 *)(&DAT_00340d58 + lVar9); + *(undefined4 *)puVar8 = 0; + local_320 = uVar3; + __sprintf_chk(local_3ec,1,0x14,"%d",uVar1); + localtime_r((time_t *)(&DAT_00340dc0 + lVar9),&local_438); + __sprintf_chk(local_3c0,1,0x14,"%4d%02d%02d%02d%02d%02d",local_438.tm_year + 0x76c, + local_438.tm_mon + 1,local_438.tm_mday,local_438.tm_hour,local_438.tm_min, + local_438.tm_sec); + FUN_00113c20(&local_488); + FUN_001161f0(local_478,0x100); + FUN_00116490(local_478,"%d-%02d-%02d %02d-%02d-%02d",local_488,local_486,local_482,local_480, + local_47e,local_47c); + __src = (char *)FUN_00116550(local_478); + lVar9 = param_1 * 0x4a8; + strncpy(local_3c0,__src,0x14); + strncpy(local_38c,&DAT_00340d70 + lVar9,0x20); + strncpy(local_3ac,&DAT_00340d90 + lVar9,0x20); + local_36c = *(undefined8 *)(&DAT_00340db0 + lVar9); + local_364 = *(undefined8 *)(&DAT_00340db8 + lVar9); + lVar9 = *(long *)(&DAT_00340d08 + lVar9); + if (*(uint *)(lVar9 + 0x78) < *(uint *)(lVar9 + 0x1764)) { + lVar7 = lVar9 + 0x1760 + (ulong)*(uint *)(lVar9 + 0x78) * 0x21c; + local_348 = *(undefined8 *)(lVar7 + 8); + local_340 = *(undefined8 *)(lVar7 + 0x10); + local_338 = *(undefined8 *)(lVar7 + 0x18); + local_330 = *(undefined8 *)(lVar7 + 0x20); + local_324 = *(undefined4 *)(lVar7 + 0x2c); + local_328 = *(undefined4 *)(lVar7 + 0x28); + } + lVar7 = param_1 * 0x4a8; + local_258 = 0xe8; + if ((*(int *)(&DAT_00340d20 + lVar7) == 0) && (0x10001 < *(int *)(&DAT_00340de0 + lVar7))) { + local_254 = *(undefined4 *)(&DAT_00341098 + lVar7); + local_24c = *(undefined4 *)(&DAT_003410a0 + lVar7); + local_250 = *(undefined4 *)(&DAT_0034109c + lVar7); + local_248 = *(undefined4 *)(&DAT_003410a4 + lVar7); + local_244 = *(undefined4 *)(&DAT_003410a8 + lVar7); + local_240 = *(undefined4 *)(&DAT_003410ac + lVar7); + local_238 = *(undefined4 *)(&DAT_003410b4 + lVar7); + local_23c = *(undefined4 *)(&DAT_003410b0 + lVar7); + local_234 = *(undefined4 *)(&DAT_003410b8 + lVar7); + local_230 = *(undefined4 *)(&DAT_003410bc + lVar7); + local_22c = *(undefined4 *)(&DAT_003410c0 + lVar7); + local_228 = *(undefined4 *)(&DAT_003410c4 + lVar7); + local_224 = *(undefined4 *)(&DAT_003410c8 + lVar7); + local_220 = *(undefined4 *)(&DAT_003410cc + lVar7); + local_21c = *(undefined4 *)(&DAT_003410d0 + lVar7); + } + else { + local_24c = *(undefined4 *)(lVar9 + 0xb8); + local_250 = 0; + local_248 = *(undefined4 *)(lVar9 + 0xbc); + local_254 = *(undefined4 *)(&DAT_00340d28 + param_1 * 0x4a8); + local_244 = *(undefined4 *)(lVar9 + 0xd8); + local_240 = *(undefined4 *)(lVar9 + 0xdc); + local_238 = *(undefined4 *)(lVar9 + 0x10); + local_23c = *(undefined4 *)(lVar9 + 0xb4); + local_234 = *(undefined4 *)(lVar9 + 0x14); + local_230 = *(undefined4 *)(lVar9 + 0x18); + local_22c = *(undefined4 *)(lVar9 + 0x1c); + local_228 = *(undefined4 *)(lVar9 + 0x20); + local_224 = *(undefined4 *)(lVar9 + 0x24); + local_220 = *(undefined4 *)(lVar9 + 0x30); + local_21c = *(undefined4 *)(lVar9 + 0x34); + } + FUN_00106fb0(local_458,param_2,1); + FUN_00106f90(local_458,0,2); + uVar3 = FUN_00106e70(local_458); + FUN_001070c0(local_458,&local_3f8,0x3ac,1); + pvVar6 = operator_new__((ulong)(uint)(*(int *)(&DAT_00340d44 + param_1 * 0x4a8) * + *(int *)(&DAT_00340d40 + param_1 * 0x4a8)) << 2); + if (pvVar6 != (void *)0x0) { + lVar9 = param_1 * 0x4a8; + iVar2 = FUN_0010ee00(*(undefined8 *)(&DAT_00340d08 + lVar9),pvVar6, + *(int *)(&DAT_00340d40 + lVar9) * *(int *)(&DAT_00340d44 + lVar9) * 4,0 + ,1); + if (iVar2 != 0) { + local_16c = FUN_00106e70(local_458); + local_11c = *(int *)(&DAT_00340d40 + param_1 * 0x4a8); + local_118 = *(int *)(&DAT_00340d44 + param_1 * 0x4a8); + local_114 = local_11c * local_118 * 4; + FUN_001070c0(local_458,pvVar6,(long)local_114,1); + } + operator_delete__(pvVar6); + } + local_164 = FUN_00106e70(local_458); + local_10c = 0x428; + FUN_001070c0(local_458,*(long *)(&DAT_00340d08 + param_1 * 0x4a8) + 0xf00,0x428,1); + local_160 = FUN_00106e70(local_458); + lVar9 = param_1 * 0x4a8; + local_108 = *(int *)(&DAT_00340d50 + lVar9); + local_104 = *(int *)(&DAT_00340d54 + lVar9); + FUN_001070c0(local_458,*(undefined8 *)(*(long *)(&DAT_00340d08 + lVar9) + 0x2a8), + (long)(local_108 * local_104),1); + FUN_00106f90(local_458,uVar3,0); + FUN_001070c0(local_458,&local_3f8,0x3ac,1); + FUN_00106d80(local_458); + FUN_00116360(local_478); + uVar5 = 1; + } + } + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0011f1b0 (299 bytes) name=MAG_SaveMGT + +undefined4 MAG_SaveMGT(uint param_1,long param_2) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined8 uVar4; + ulong uVar5; + undefined2 local_58; + undefined2 local_56; + undefined2 local_52; + undefined2 local_50; + undefined2 local_4e; + undefined2 local_4c; + undefined1 local_48 [32]; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 == 0) { + return 0; + } + uVar5 = (ulong)param_1; + if (*(int *)(*(long *)(&DAT_00340d08 + uVar5 * 0x4a8) + 0x214) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffa; + return 0; + } + FUN_001161f0(local_48,0x100); + if (param_2 == 0) { + FUN_00113c20(&local_58); + FUN_00116490(local_48,"%d-%02d-%02d %02d-%02d-%02d.mgt",local_58,local_56,local_52,local_50, + local_4e,local_4c); + } + else { + FUN_00116630(local_48,param_2); + } + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + uVar5 * 0x4a8) + 0x218)); + uVar4 = FUN_00116550(local_48); + uVar2 = FUN_0011eac0(param_1,uVar4); + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + uVar5 * 0x4a8) + 0x218)); + FUN_00116360(local_48); + return uVar2; +} + + +================================================================== + +### FUNC 0011f300 (1165 bytes) name=FUN_0011f300 + +int FUN_0011f300(uint param_1,undefined8 *param_2,undefined8 param_3) + +{ + undefined2 uVar1; + undefined4 uVar2; + int *piVar3; + long lVar4; + ulong uVar5; + long lVar6; + uint uVar7; + long lVar8; + int iVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 *puVar12; + ulong uVar13; + long in_FS_OFFSET; + bool bVar14; + byte bVar15; + undefined1 local_3d8 [32]; + undefined1 local_3b8 [4]; + int local_3b4; + int local_3b0; + int local_3ac; + undefined1 local_3a8 [4]; + undefined1 local_3a4 [4]; + undefined8 local_3a0; + undefined8 local_398; + undefined4 local_390; + undefined4 local_38c; + undefined8 local_388; + undefined1 local_369; + undefined8 local_368; + undefined8 local_360; + undefined8 local_358; + ulong local_350; + undefined8 local_348; + undefined4 local_340; + undefined4 local_33c; + undefined8 local_338; + undefined8 local_330; + undefined8 local_328 [69]; + 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; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_64; + undefined4 local_60; + undefined1 local_5c [4]; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + long local_40; + + bVar15 = 0; + uVar13 = (ulong)param_1; + lVar8 = uVar13 * 0x4a8; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + lVar6 = *(long *)(&DAT_00340d08 + lVar8); + if (*(int *)(lVar6 + 0x214) == 0) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffa; + iVar9 = 0; + } + else { + iVar9 = *(int *)(lVar6 + 0x7810); + puVar10 = (undefined8 *)local_3b8; + puVar12 = puVar10; + for (lVar4 = 0x6e; lVar4 != 0; lVar4 = lVar4 + -1) { + *puVar12 = 0; + puVar12 = puVar12 + 1; + } + local_3b4 = 0x10003 - (uint)(iVar9 == 0); + local_3b8 = (undefined1 [4])0x374; + local_48 = *(undefined4 *)(&DAT_00340d5c + lVar8); + local_340 = *(undefined4 *)(&DAT_00340d58 + lVar8); + local_348 = *(undefined8 *)(&DAT_00340dc0 + lVar8); + local_3b0 = *(int *)(&DAT_00340d40 + lVar8); + local_3ac = *(int *)(&DAT_00340d44 + lVar8); + FUN_001101b0(lVar6,local_5c,local_3a8,local_3a4); + lVar6 = *(long *)(&DAT_00340d08 + lVar8); + local_58 = *(undefined4 *)(lVar6 + 0x4c); + local_54 = *(undefined4 *)(lVar6 + 0x50); + local_60 = *(undefined4 *)(lVar6 + 0x8c); + local_64 = *(undefined4 *)(lVar6 + 0x88); + local_3a0 = *(undefined8 *)(&DAT_00340db0 + lVar8); + local_398 = *(undefined8 *)(&DAT_00340db8 + lVar8); + local_50 = *(undefined4 *)(lVar6 + 0x3c); + local_369 = 0; + local_4c = *(undefined4 *)(lVar6 + 0x40); + local_38c = *(undefined4 *)(&DAT_00340d6c + lVar8); + local_390 = *(undefined4 *)(&DAT_00340d68 + lVar8); + local_388 = *(undefined8 *)(&DAT_00340d90 + lVar8); + local_368 = *(undefined8 *)(&DAT_00340d70 + lVar8); + local_360 = *(undefined8 *)(&DAT_00340d78 + lVar8); + local_358 = *(undefined8 *)(&DAT_00340d80 + lVar8); + local_350 = *(ulong *)(&DAT_00340d88 + lVar8) & 0xffffffffffffff; + local_33c = *(undefined4 *)(&DAT_00340dd8 + lVar8); + local_338 = *(undefined8 *)(&DAT_00340dc8 + lVar8); + local_330 = *(undefined8 *)(&DAT_00340dd0 + lVar8); + if (*(uint *)(lVar6 + 0x78) < *(uint *)(lVar6 + 0x1764)) { + puVar12 = (undefined8 *)(lVar6 + 0x1768 + (ulong)*(uint *)(lVar6 + 0x78) * 0x21c); + puVar11 = local_328; + for (lVar8 = 0x43; lVar8 != 0; lVar8 = lVar8 + -1) { + *puVar11 = *puVar12; + puVar12 = puVar12 + (ulong)bVar15 * -2 + 1; + puVar11 = puVar11 + (ulong)bVar15 * -2 + 1; + } + *(undefined4 *)puVar11 = *(undefined4 *)puVar12; + } + local_f4 = *(undefined4 *)(lVar6 + 0xb8); + local_f8 = 0; + local_f0 = *(undefined4 *)(lVar6 + 0xbc); + local_ec = *(undefined4 *)(lVar6 + 0xd8); + local_fc = *(undefined4 *)(&DAT_00340d28 + uVar13 * 0x4a8); + local_e8 = *(undefined4 *)(lVar6 + 0xdc); + local_e0 = *(undefined4 *)(lVar6 + 0x10); + local_e4 = *(undefined4 *)(lVar6 + 0xb4); + local_dc = *(undefined4 *)(lVar6 + 0x14); + local_d8 = *(undefined4 *)(lVar6 + 0x18); + local_d4 = *(undefined4 *)(lVar6 + 0x1c); + local_d0 = *(undefined4 *)(lVar6 + 0x20); + local_cc = *(undefined4 *)(lVar6 + 0x24); + local_c8 = *(undefined4 *)(lVar6 + 0x30); + local_c4 = *(undefined4 *)(lVar6 + 0x34); + if (param_2 == (undefined8 *)0x0) { + FUN_00106fb0(local_3d8,param_3,0); + FUN_001070c0(local_3d8,puVar10,0x374,1); + FUN_001070c0(local_3d8,*(undefined8 *)(*(long *)(&DAT_00340d08 + uVar13 * 0x4a8) + 0x268), + (ulong)(uint)(local_3ac * local_3b0) * 2,1); + FUN_00106d80(local_3d8); + uVar7 = local_3b0 * local_3ac; + } + else { + bVar14 = ((ulong)param_2 & 1) != 0; + uVar7 = 0x374; + puVar12 = param_2; + if (bVar14) { + puVar12 = (undefined8 *)((long)param_2 + 1); + puVar10 = (undefined8 *)(local_3b8 + 1); + *(undefined1 *)param_2 = local_3b8[0]; + uVar7 = 0x373; + } + puVar11 = puVar12; + if (((ulong)puVar12 & 2) != 0) { + uVar1 = *(undefined2 *)puVar10; + puVar11 = (undefined8 *)((long)puVar12 + 2); + puVar10 = (undefined8 *)((long)puVar10 + 2); + uVar7 = uVar7 - 2; + *(undefined2 *)puVar12 = uVar1; + } + puVar12 = puVar11; + if (((ulong)puVar11 & 4) != 0) { + uVar2 = *(undefined4 *)puVar10; + puVar12 = (undefined8 *)((long)puVar11 + 4); + puVar10 = (undefined8 *)((long)puVar10 + 4); + uVar7 = uVar7 - 4; + *(undefined4 *)puVar11 = uVar2; + } + lVar6 = 0; + for (uVar5 = (ulong)(uVar7 >> 3); uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar12 = *puVar10; + puVar10 = puVar10 + (ulong)bVar15 * -2 + 1; + puVar12 = puVar12 + (ulong)bVar15 * -2 + 1; + } + if ((uVar7 & 4) != 0) { + *(undefined4 *)puVar12 = *(undefined4 *)puVar10; + lVar6 = 4; + } + if ((uVar7 & 2) != 0) { + *(undefined2 *)((long)puVar12 + lVar6) = *(undefined2 *)((long)puVar10 + lVar6); + lVar6 = lVar6 + 2; + } + if (bVar14) { + *(undefined1 *)((long)puVar12 + lVar6) = *(undefined1 *)((long)puVar10 + lVar6); + } + uVar7 = local_3ac * local_3b0; + memcpy((void *)((long)param_2 + 0x374), + *(void **)(*(long *)(&DAT_00340d08 + uVar13 * 0x4a8) + 0x268),(ulong)uVar7 * 2); + } + iVar9 = uVar7 * 2 + 0x374; + } + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar9; +} + + +================================================================== + +### FUNC 0011f830 (318 bytes) name=MAG_SaveDDT + +bool MAG_SaveDDT(uint param_1,long param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + ulong uVar4; + undefined2 local_58; + undefined2 local_56; + undefined2 local_52; + undefined2 local_50; + undefined2 local_4e; + undefined2 local_4c; + undefined1 local_48 [32]; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 == 0) { + return false; + } + uVar4 = (ulong)param_1; + if (*(int *)(*(long *)(&DAT_00340d08 + uVar4 * 0x4a8) + 0x214) == 0) { + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + return false; + } + FUN_001161f0(local_48,0x100); + if (param_2 == 0) { + FUN_00113c20(&local_58); + FUN_00116490(local_48,"%d-%02d-%02d %02d-%02d-%02d.ddt",local_58,local_56,local_52,local_50, + local_4e,local_4c); + } + else { + FUN_00116630(local_48,param_2); + } + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + uVar4 * 0x4a8) + 0x218)); + uVar3 = FUN_00116550(local_48); + iVar1 = FUN_0011f300(param_1,0,uVar3); + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + uVar4 * 0x4a8) + 0x218)); + FUN_00116360(local_48); + return 0 < iVar1; +} + + +================================================================== + +### FUNC 0011f990 (215 bytes) name=MAG_SaveDDT2Buffer + +int MAG_SaveDDT2Buffer(uint param_1,long param_2,ulong param_3) + +{ + int iVar1; + int iVar2; + int *piVar3; + long lVar4; + + iVar1 = MAG_IsChannelAvailable(); + if (iVar1 != 0) { + if ((param_2 == 0) || + (lVar4 = (ulong)param_1 * 0x4a8, + (param_3 & 0xffffffff) < + (ulong)(uint)(*(int *)(&DAT_00340d44 + lVar4) * *(int *)(&DAT_00340d40 + lVar4)) * 2 + 0x374) + ) { + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + return 0; + } + if (*(int *)(*(long *)(&DAT_00340d08 + lVar4) + 0x214) != 0) { + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar4) + 0x218)); + iVar2 = FUN_0011f300(param_1,param_2,&DAT_00131fd1); + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(&DAT_00340d08 + lVar4) + 0x218)); + iVar1 = 0; + if (-1 < iVar2) { + iVar1 = iVar2; + } + return iVar1; + } + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffa; + } + return 0; +} + + +================================================================== + +### FUNC 0011fa80 (511 bytes) name=FUN_0011fa80 + +void FUN_0011fa80(undefined8 *param_1) + +{ + long lVar1; + int iVar2; + undefined8 *puVar3; + ulong uVar4; + ulong uVar5; + char *pcVar6; + undefined8 *puVar7; + long in_FS_OFFSET; + bool bVar8; + byte bVar9; + pthread_mutexattr_t apStack_28 [2]; + long local_20; + + bVar9 = 0; + local_20 = *(long *)(in_FS_OFFSET + 0x28); + iVar2 = pthread_mutexattr_init(apStack_28); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_settype(apStack_28,1); + if (iVar2 == 0) { + iVar2 = pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x16),apStack_28); + if (iVar2 == 0) { + iVar2 = pthread_mutexattr_destroy(apStack_28); + if (iVar2 == 0) { + bVar8 = ((ulong)param_1 & 1) != 0; + param_1[0x1b] = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + uVar5 = 0xac; + puVar3 = param_1; + if (bVar8) { + *(undefined1 *)param_1 = 0; + puVar3 = (undefined8 *)((long)param_1 + 1); + uVar5 = 0xab; + } + puVar7 = puVar3; + if (((ulong)puVar3 & 2) != 0) { + puVar7 = (undefined8 *)((long)puVar3 + 2); + uVar5 = (ulong)((int)uVar5 - 2); + *(undefined2 *)puVar3 = 0; + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar5 = (ulong)((int)uVar5 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar4 = uVar5 >> 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar9 * -2 + 1; + } + if ((uVar5 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + if ((uVar5 & 2) != 0) { + *(undefined2 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 2); + } + if (bVar8) { + *(undefined1 *)puVar7 = 0; + } + lVar1 = *(long *)(in_FS_OFFSET + 0x28); + param_1[0x20] = 0; + *(undefined4 *)(param_1 + 0x21) = 0; + *(undefined4 *)((long)param_1 + 0x164) = 0; + *(undefined4 *)(param_1 + 0x2d) = 0; + param_1[0x2e] = 0; + param_1[0x2f] = 0; + param_1[0x30] = 0; + if (local_20 == lVar1) { + return; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutexattr_destroy failed\n"; + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutex_init failed\n"; + } + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutexattr_settype failed\n"; + } + } + else { + puVar3 = (undefined8 *)__cxa_allocate_exception(8); + pcVar6 = "pthread_mutexattr_init failed\n"; + } + *puVar3 = pcVar6; + /* WARNING: Subroutine does not return */ + __cxa_throw(puVar3,&PTR_vtable_0033ec10,0); +} + + +================================================================== + +### FUNC 0011fca0 (142 bytes) name=FUN_0011fca0 + +void FUN_0011fca0(long param_1) + +{ + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0xb0)); + if (*(void **)(param_1 + 0x170) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x170)); + *(undefined8 *)(param_1 + 0x170) = 0; + } + if (*(void **)(param_1 + 0x178) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x178)); + *(undefined8 *)(param_1 + 0x178) = 0; + } + if (*(void **)(param_1 + 0x180) != (void *)0x0) { + operator_delete__(*(void **)(param_1 + 0x180)); + *(undefined8 *)(param_1 + 0x180) = 0; + } + *(undefined4 *)(param_1 + 0x164) = 0; + *(undefined4 *)(param_1 + 0x168) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0xb0)); + return; +} + + +================================================================== + +### FUNC 0011fd30 (22 bytes) name=FUN_0011fd30 + +void FUN_0011fd30(long param_1) + +{ + FUN_0011fca0(); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0xb0)); + return; +} + + +================================================================== + +### FUNC 0011fd50 (859 bytes) name=FUN_0011fd50 + +undefined4 FUN_0011fd50(long param_1,undefined8 *param_2) + +{ + pthread_mutex_t *__mutex; + uint uVar1; + int iVar2; + int *piVar3; + void *pvVar4; + ulong uVar5; + ulong uVar6; + undefined8 *puVar7; + undefined8 *puVar8; + bool bVar9; + byte bVar10; + undefined1 auStack_38 [32]; + + bVar10 = 0; + __mutex = (pthread_mutex_t *)(param_1 + 0xb0); + FUN_0011fca0(); + pthread_mutex_lock(__mutex); + *(undefined8 *)(param_1 + 0xd8) = *param_2; + uVar1 = *(uint *)(param_1 + 0xd8); + *(undefined8 *)(param_1 + 0xe0) = param_2[1]; + *(undefined8 *)(param_1 + 0xe8) = param_2[2]; + *(undefined8 *)(param_1 + 0xf0) = param_2[3]; + *(undefined8 *)(param_1 + 0xf8) = param_2[4]; + if (((((uVar1 & 3) == 0) && (3 < uVar1)) && (*(int *)(param_1 + 0xdc) != 0)) && + (*(long *)(param_1 + 0xd8) == *(long *)(param_1 + 0xe0))) { + *(uint *)(param_1 + 0x100) = uVar1 * *(int *)(param_1 + 0xdc); + iVar2 = *(int *)(param_1 + 0xe4) * *(int *)(param_1 + 0xe0); + *(int *)(param_1 + 0x104) = iVar2; + pvVar4 = operator_new__((ulong)(uint)(iVar2 * 4)); + *(void **)(param_1 + 0x170) = pvVar4; + pvVar4 = operator_new__((ulong)(uint)(*(int *)(param_1 + 0x104) * 4)); + *(void **)(param_1 + 0x178) = pvVar4; + pvVar4 = operator_new__((ulong)((uint)(*(int *)(param_1 + 0x104) * 3) >> 1)); + *(void **)(param_1 + 0x180) = pvVar4; + if (((*(long *)(param_1 + 0x170) != 0) && (*(long *)(param_1 + 0x178) != 0)) && + (pvVar4 != (void *)0x0)) { + puVar8 = (undefined8 *)(param_1 + 0x10c); + uVar6 = 0x2c; + bVar9 = ((ulong)puVar8 & 1) != 0; + if (bVar9) { + *(undefined1 *)(param_1 + 0x10c) = 0; + puVar8 = (undefined8 *)(param_1 + 0x10d); + uVar6 = 0x2b; + } + puVar7 = puVar8; + if (((ulong)puVar8 & 2) != 0) { + puVar7 = (undefined8 *)((long)puVar8 + 2); + uVar6 = (ulong)((int)uVar6 - 2); + *(undefined2 *)puVar8 = 0; + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar6 = (ulong)((int)uVar6 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar5 = uVar6 >> 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar10 * -2 + 1; + } + if ((uVar6 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + puVar8 = puVar7; + if ((uVar6 & 2) != 0) { + puVar8 = (undefined8 *)((long)puVar7 + 2); + *(undefined2 *)puVar7 = 0; + } + if (bVar9) { + *(undefined1 *)puVar8 = 0; + } + *(undefined2 *)(param_1 + 0x118) = 1; + puVar8 = (undefined8 *)(param_1 + 0x138); + *(undefined4 *)(param_1 + 0x10c) = 0x28; + *(undefined2 *)(param_1 + 0x11a) = 0x18; + *(undefined4 *)(param_1 + 0x11c) = 0; + uVar6 = 0x2c; + *(undefined4 *)(param_1 + 0x110) = *(undefined4 *)(param_1 + 0xd8); + bVar9 = ((ulong)puVar8 & 1) != 0; + *(undefined4 *)(param_1 + 0x114) = *(undefined4 *)(param_1 + 0xdc); + if (bVar9) { + *(undefined1 *)(param_1 + 0x138) = 0; + puVar8 = (undefined8 *)(param_1 + 0x139); + uVar6 = 0x2b; + } + puVar7 = puVar8; + if (((ulong)puVar8 & 2) != 0) { + puVar7 = (undefined8 *)((long)puVar8 + 2); + uVar6 = (ulong)((int)uVar6 - 2); + *(undefined2 *)puVar8 = 0; + } + if (((ulong)puVar7 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + uVar6 = (ulong)((int)uVar6 - 4); + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + for (uVar5 = uVar6 >> 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *puVar7 = 0; + puVar7 = puVar7 + (ulong)bVar10 * -2 + 1; + } + if ((uVar6 & 4) != 0) { + *(undefined4 *)puVar7 = 0; + puVar7 = (undefined8 *)((long)puVar7 + 4); + } + puVar8 = puVar7; + if ((uVar6 & 2) != 0) { + puVar8 = (undefined8 *)((long)puVar7 + 2); + *(undefined2 *)puVar7 = 0; + } + if (bVar9) { + *(undefined1 *)puVar8 = 0; + } + *(undefined4 *)(param_1 + 0x138) = 0x28; + *(undefined2 *)(param_1 + 0x146) = 0x18; + *(undefined4 *)(param_1 + 0x148) = 0; + *(undefined4 *)(param_1 + 0x164) = 1; + *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(param_1 + 0xe0); + *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xe4); + *(undefined2 *)(param_1 + 0x144) = 1; + pthread_mutex_unlock(__mutex); + return *(undefined4 *)(param_1 + 0x164); + } + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to allocate memory"); + FUN_00113b30(auStack_38); + pthread_mutex_unlock(__mutex); + piVar3 = __errno_location(); + *piVar3 = -0x1b51fffe; + return 0; + } + FUN_00113aa0(auStack_38,4); + FUN_00116630(auStack_38,"Failed to configurate CFuncitons due to parameter error"); + FUN_00113b30(auStack_38); + pthread_mutex_unlock(__mutex); + piVar3 = __errno_location(); + *piVar3 = -0x1b51ffff; + return 0; +} + + +================================================================== + +### FUNC 001200e0 (539 bytes) name=FUN_001200e0 + +undefined8 FUN_001200e0(long param_1,void *param_2) + +{ + byte bVar1; + undefined1 uVar2; + pthread_mutex_t *__mutex; + ulong uVar3; + undefined1 *puVar4; + uint uVar5; + int iVar6; + long lVar7; + int iVar8; + ulong uVar9; + int iVar10; + uint uVar11; + long lVar12; + uint uVar13; + uint local_58; + + __mutex = (pthread_mutex_t *)(param_1 + 0xb0); + pthread_mutex_lock(__mutex); + if ((*(int *)(param_1 + 0x164) != 0) && (param_2 != (void *)0x0)) { + uVar11 = *(uint *)(param_1 + 0xe4); + local_58 = *(uint *)(param_1 + 0xe0); + if (*(int *)(param_1 + 0x7c) == 0) { + uVar11 = *(uint *)(param_1 + 0xe0); + local_58 = *(uint *)(param_1 + 0xe4); + } + uVar5 = local_58 * uVar11; + memcpy(*(void **)(param_1 + 0x180),param_2,(ulong)(uVar5 * 3 >> 1)); + lVar7 = (ulong)uVar5 + (long)param_2; + lVar12 = (ulong)(uVar5 >> 2) + lVar7; + if (local_58 != 0) { + uVar5 = 0; + uVar13 = (local_58 * 3 + -3) * uVar11; + do { + if (uVar11 != 0) { + uVar3 = 0; + puVar4 = (undefined1 *)((ulong)uVar13 + *(long *)(param_1 + 0x170)); + do { + bVar1 = *(byte *)((long)param_2 + uVar3); + uVar9 = uVar3 >> 1 & 0x7fffffff; + iVar6 = *(byte *)(lVar12 + uVar9) - 0x80; + iVar8 = *(byte *)(lVar7 + uVar9) - 0x80; + iVar10 = (iVar6 * 0x15e >> 8) + (uint)bVar1; + if (iVar10 < 0) { + iVar10 = 0; + } + iVar6 = (iVar8 * -0x55 + iVar6 * -0xb3 >> 8) + (uint)bVar1; + if (iVar6 < 0) { + iVar6 = 0; + } + iVar8 = (uint)bVar1 + (iVar8 * 0x1bb >> 8); + if (iVar8 < 0) { + iVar8 = 0; + } + uVar2 = (undefined1)iVar8; + if (0xff < iVar8) { + uVar2 = 0xff; + } + if (0xff < iVar6) { + iVar6 = 0xff; + } + *puVar4 = uVar2; + puVar4[1] = (char)iVar6; + if (0xff < iVar10) { + iVar10 = 0xff; + } + uVar3 = uVar3 + 1; + puVar4[2] = (char)iVar10; + puVar4 = puVar4 + 3; + } while ((uint)uVar3 < uVar11); + param_2 = (void *)((long)param_2 + (ulong)(uVar11 - 1) + 1); + } + if ((uVar5 & 1) != 0) { + lVar7 = lVar7 + (ulong)(uVar11 >> 1); + lVar12 = lVar12 + (ulong)(uVar11 >> 1); + } + uVar5 = uVar5 + 1; + uVar13 = uVar13 + uVar11 * -3; + } while (uVar5 != local_58); + } + *(undefined4 *)(param_1 + 0x168) = 1; + pthread_mutex_unlock(__mutex); + return 1; + } + pthread_mutex_unlock(__mutex); + return 0; +} + + +================================================================== + +### FUNC 00120300 (484 bytes) name=FUN_00120300 + +undefined8 FUN_00120300(long param_1,long param_2) + +{ + pthread_mutex_t *__mutex; + void *__src; + uint uVar1; + int *piVar2; + void *__dest; + undefined8 uVar3; + ulong __n; + undefined2 local_78; + int local_76; + undefined2 local_72; + undefined2 local_70; + undefined4 local_6e; + undefined2 local_68; + undefined2 local_66; + undefined2 local_62; + undefined2 local_60; + undefined2 local_5e; + undefined2 local_5c; + undefined1 local_58 [40]; + + __mutex = (pthread_mutex_t *)(param_1 + 0xb0); + pthread_mutex_lock(__mutex); + if ((*(int *)(param_1 + 0x164) == 0) || (*(int *)(param_1 + 0x168) == 0)) { + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffa; + } + else { + __src = *(void **)(param_1 + 0x170); + uVar1 = *(int *)(param_1 + 0x100) * 3; + __n = (ulong)uVar1; + __dest = operator_new__(__n); + if (__dest != (void *)0x0) { + memcpy(__dest,__src,__n); + pthread_mutex_unlock(__mutex); + FUN_001161f0(local_58,0x100); + if (param_2 == 0) { + FUN_00113c20(&local_68); + FUN_00116490(local_58,"%d-%02d-%02d %02d-%02d-%02d.bmp",local_68,local_66,local_62,local_60, + local_5e,local_5c); + } + else { + FUN_00116630(local_58,param_2); + } + local_76 = uVar1 + 0x36; + local_78 = 0x4d42; + local_72 = 0; + local_70 = 0; + local_6e = 0x36; + uVar3 = FUN_00116550(local_58); + FUN_00106fb0(&local_68,uVar3,0); + FUN_001070c0(&local_68,&local_78,0xe,1); + FUN_001070c0(&local_68,param_1 + 0x10c,0x28,1); + FUN_001070c0(&local_68,__dest,__n,1); + FUN_00106d80(&local_68); + operator_delete__(__dest); + FUN_00116360(local_58); + return 1; + } + pthread_mutex_unlock(__mutex); + piVar2 = __errno_location(); + *piVar2 = -0x1b51fffe; + } + return 0; +} + + +================================================================== + +### FUNC 00120550 (132 bytes) name=FUN_00120550 + +long FUN_00120550(byte param_1,long *param_2,char param_3) + +{ + char *pcVar1; + long lVar2; + int iVar3; + long lVar4; + long lVar5; + int iVar6; + long lVar7; + long lVar8; + + if (param_1 == 0) { + return 0; + } + lVar8 = 0; + do { + iVar3 = *(int *)(*param_2 + 8 + lVar8); + if (0 < iVar3) { + lVar7 = *(long *)(*param_2 + lVar8); + lVar2 = lVar7 + 0x28; + do { + if (*(byte *)(lVar7 + 4) != 0) { + lVar4 = *(long *)(lVar7 + 0x10); + if (*(char *)(lVar4 + 2) == param_3) { + return lVar4; + } + iVar6 = 0; + while( true ) { + lVar5 = lVar4 + 0x20; + iVar6 = iVar6 + 1; + if ((int)(uint)*(byte *)(lVar7 + 4) <= iVar6) break; + pcVar1 = (char *)(lVar4 + 0x22); + lVar4 = lVar5; + if (*pcVar1 == param_3) { + return lVar5; + } + } + } + lVar7 = lVar7 + 0x28; + } while (lVar7 != lVar2 + (ulong)(iVar3 - 1) * 0x28); + } + lVar8 = lVar8 + 0x10; + } while (lVar8 != ((ulong)(param_1 - 1) + 1) * 0x10); + return 0; +} + + +================================================================== + +### FUNC 001205e0 (5 bytes) name=libusb_get_bus_number + +undefined1 libusb_get_bus_number(long param_1) + +{ + return *(undefined1 *)(param_1 + 0x38); +} + + +================================================================== + +### FUNC 001205f0 (5 bytes) name=libusb_get_port_number + +undefined1 libusb_get_port_number(long param_1) + +{ + return *(undefined1 *)(param_1 + 0x39); +} + + +================================================================== + +### FUNC 00120600 (5 bytes) name=libusb_get_parent + +undefined8 libusb_get_parent(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x40); +} + + +================================================================== + +### FUNC 00120610 (5 bytes) name=libusb_get_device_address + +undefined1 libusb_get_device_address(long param_1) + +{ + return *(undefined1 *)(param_1 + 0x48); +} + + +================================================================== + +### FUNC 00120620 (4 bytes) name=libusb_get_device_speed + +undefined4 libusb_get_device_speed(long param_1) + +{ + return *(undefined4 *)(param_1 + 0x4c); +} + + +================================================================== + +### FUNC 00120630 (26 bytes) name=libusb_ref_device + +pthread_mutex_t * libusb_ref_device(pthread_mutex_t *param_1) + +{ + pthread_mutex_lock(param_1); + param_1[1].__data.__lock = param_1[1].__data.__lock + 1; + pthread_mutex_unlock(param_1); + return param_1; +} + + +================================================================== + +### FUNC 00120650 (113 bytes) name=FUN_00120650 + +undefined8 FUN_00120650(long param_1,long param_2) + +{ + pthread_mutex_t *__mutex; + long lVar1; + long lVar2; + undefined8 uVar3; + + __mutex = (pthread_mutex_t *)(param_1 + 0x20); + pthread_mutex_lock(__mutex); + lVar1 = *(long *)(param_1 + 0x18); + if (param_1 + 0x10 != lVar1) { + lVar2 = *(long *)(lVar1 + 0x10); + while( true ) { + if (lVar2 == param_2) { + uVar3 = libusb_ref_device(); + pthread_mutex_unlock(__mutex); + return uVar3; + } + lVar1 = *(long *)(lVar1 + 8); + if (param_1 + 0x10 == lVar1) break; + lVar2 = *(long *)(lVar1 + 0x10); + } + } + pthread_mutex_unlock(__mutex); + return 0; +} + + +================================================================== + +### FUNC 001206d0 (5 bytes) name=libusb_get_device + +undefined8 libusb_get_device(long param_1) + +{ + return *(undefined8 *)(param_1 + 0x40); +} + + +================================================================== + +### FUNC 001206e0 (35 bytes) name=libusb_dev_mem_alloc + +void * libusb_dev_mem_alloc(long param_1,size_t param_2) + +{ + void *pvVar1; + int *piVar2; + + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) != 0) { + switch(PTR_FUN_0033eb10) { + case (undefined *)0x12a3d0: + pvVar1 = mmap((void *)0x0,param_2,3,1,*(int *)(param_1 + 0x4c),0); + if (pvVar1 == (void *)0xffffffffffffffff) { + piVar2 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_dev_mem_alloc", + "alloc dev mem failed errno %d",*piVar2); + return (void *)0x0; + } + return pvVar1; + } + } + return (void *)0x0; +} + + +================================================================== + +### FUNC 00120710 (27 bytes) name=libusb_dev_mem_free + +undefined4 libusb_dev_mem_free(long param_1,void *param_2,size_t param_3) + +{ + int iVar1; + int *piVar2; + + switch(PTR_FUN_0033eb18) { + case (undefined *)0x12a380: + break; + default: + return 0xfffffff4; + } + iVar1 = munmap(param_2,param_3); + if (iVar1 != 0) { + piVar2 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_dev_mem_free", + "free dev mem failed errno %d",*piVar2); + return 0xffffff9d; + } + return 0; +} + + +================================================================== + +### FUNC 00120730 (25 bytes) name=libusb_set_auto_detach_kernel_driver + +undefined8 libusb_set_auto_detach_kernel_driver(long param_1,undefined4 param_2) + +{ + if ((DAT_0033ea68._2_1_ & 2) != 0) { + *(undefined4 *)(param_1 + 0x48) = param_2; + return 0; + } + return 0xfffffff4; +} + + +================================================================== + +### FUNC 00120750 (22 bytes) name=libusb_set_debug + +void libusb_set_debug(undefined4 *param_1,undefined4 param_2) + +{ + if (param_1 == (undefined4 *)0x0) { + param_1 = DAT_003665e8; + } + if (param_1[1] == 0) { + *param_1 = param_2; + } + return; +} + + +================================================================== + +### FUNC 00120770 (83 bytes) name=libusb_has_capability + +uint libusb_has_capability(int param_1) + +{ + uint uVar1; + + if (param_1 == 1) { + return (uint)(DAT_0033ea80 == 0); + } + uVar1 = 1; + if (param_1 != 0) { + if (param_1 == 0x100) { + return DAT_0033ea68 & 0x10000; + } + if (param_1 == 0x101) { + return DAT_0033ea68 & 0x20000; + } + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### FUNC 001207e0 (130 bytes) name=FUN_001207e0 + +void FUN_001207e0(long param_1) + +{ + long lVar1; + long lVar2; + int iVar3; + + lVar1 = *(long *)(param_1 + 0x30); + *(undefined4 *)(param_1 + 0x7c) = 1; + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x20)); + lVar2 = *(long *)(param_1 + 0x30); + *(undefined8 *)(param_1 + 0x58) = *(undefined8 *)(lVar2 + 0x18); + *(long *)(param_1 + 0x50) = lVar2 + 0x10; + **(long **)(lVar2 + 0x18) = param_1 + 0x50; + *(long *)(lVar2 + 0x18) = param_1 + 0x50; + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 0x20)); + iVar3 = libusb_has_capability(1); + if ((iVar3 != 0) && (*(long *)(*(long *)(param_1 + 0x30) + 0x1e8) != 0)) { + FUN_00124710(lVar1,param_1,1); + return; + } + return; +} + + +================================================================== + +### FUNC 00120870 (139 bytes) name=FUN_00120870 + +pthread_mutex_t * FUN_00120870(undefined8 param_1,undefined8 param_2) + +{ + int iVar1; + pthread_mutex_t *__mutex; + pthread_mutex_t *ppVar2; + + __mutex = calloc(1,DAT_0033eb78 + 0x80); + if (__mutex == (pthread_mutex_t *)0x0) { + ppVar2 = (pthread_mutex_t *)0x0; + } + else { + iVar1 = pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + if (iVar1 == 0) { + *(undefined8 *)((long)__mutex + 0x30) = param_1; + __mutex[1].__data.__lock = 1; + *(undefined8 *)((long)__mutex + 0x60) = param_2; + *(undefined4 *)((long)__mutex + 0x4c) = 0; + iVar1 = libusb_has_capability(1); + ppVar2 = __mutex; + if (iVar1 == 0) { + FUN_001207e0(__mutex); + return __mutex; + } + } + else { + ppVar2 = (pthread_mutex_t *)0x0; + free(__mutex); + } + } + return ppVar2; +} + + +================================================================== + +### FUNC 00120910 (140 bytes) name=FUN_00120910 + +void FUN_00120910(pthread_mutex_t *param_1) + +{ + pthread_mutex_t *__mutex; + long lVar1; + long *plVar2; + int iVar3; + + lVar1 = *(long *)((long)param_1 + 0x30); + pthread_mutex_lock(param_1); + __mutex = (pthread_mutex_t *)(lVar1 + 0x20); + *(undefined4 *)((long)param_1 + 0x7c) = 0; + pthread_mutex_unlock(param_1); + pthread_mutex_lock(__mutex); + plVar2 = *(long **)((long)param_1 + 0x58); + *plVar2 = param_1[2].__align; + *(long **)(param_1[2].__align + 8) = plVar2; + param_1[2].__align = 0; + *(undefined8 *)((long)param_1 + 0x58) = 0; + pthread_mutex_unlock(__mutex); + iVar3 = libusb_has_capability(1); + if ((iVar3 != 0) && (*(long *)(*(long *)((long)param_1 + 0x30) + 0x1e8) != 0)) { + FUN_00124710(lVar1,param_1,2); + return; + } + return; +} + + +================================================================== + +### FUNC 001209b0 (770 bytes) name=FUN_001209b0 + +void FUN_001209b0(int *param_1,int param_2,undefined8 param_3,undefined8 param_4,undefined8 param_5) + +{ + undefined *puVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + int iVar5; + long lVar6; + long lVar7; + char *pcVar8; + long in_FS_OFFSET; + undefined8 in_stack_fffffffffffffb88; + undefined4 uVar9; + timeval local_458; + char local_448 [1032]; + long local_40; + + uVar9 = (undefined4)((ulong)in_stack_fffffffffffffb88 >> 0x20); + local_40 = *(long *)(in_FS_OFFSET + 0x28); + if ((param_1 == (int *)0x0) && (param_1 = DAT_003665e8, DAT_003665e8 == (int *)0x0)) { + pcVar8 = getenv("LIBUSB_DEBUG"); + if (pcVar8 == (char *)0x0) goto switchD_00120af6_caseD_0; + lVar6 = strtol(pcVar8,(char **)0x0,10); + iVar4 = (int)lVar6; + } + else { + iVar4 = *param_1; + } + if ((((iVar4 != 0) && ((1 < iVar4 || (param_2 != 2)))) && ((2 < iVar4 || (param_2 != 3)))) && + ((3 < iVar4 || (param_2 != 4)))) { + gettimeofday(&local_458,(__timezone_ptr_t)0x0); + puVar1 = PTR_stderr_0033efd8; + if ((iVar4 == 4) && (DAT_003665f0 == 0)) { + DAT_003665f0 = 1; + fwrite("[timestamp] [threadID] facility level [function call] \n",1,0x40, + *(FILE **)PTR_stderr_0033efd8); + fwrite("--------------------------------------------------------------------------------\n",1, + 0x51,*(FILE **)puVar1); + } + if (local_458.tv_usec < DAT_00366608) { + local_458.tv_usec = local_458.tv_usec + 1000000; + local_458.tv_sec = local_458.tv_sec - 1; + } + local_458.tv_sec = local_458.tv_sec - DAT_00366600; + local_458.tv_usec = local_458.tv_usec - DAT_00366608; + switch(param_2) { + case 0: + goto switchD_00120af6_caseD_0; + case 1: + pcVar8 = "error"; + break; + case 2: + pcVar8 = "warning"; + break; + case 3: + pcVar8 = "info"; + break; + case 4: + pcVar8 = "debug"; + break; + default: + pcVar8 = "unknown"; + } + if (iVar4 != 4) { + uVar3 = __snprintf_chk(local_448,0x400,1,0x400,"libusb: %s [%s] ",pcVar8,param_3); + } + else { + uVar2 = FUN_00127550(); + uVar3 = __snprintf_chk(local_448,0x400,1,0x400,"[%2d.%06d] [%08x] libusb: %s [%s] ", + local_458.tv_sec & 0xffffffff,CONCAT44(uVar9,(int)local_458.tv_usec), + uVar2,pcVar8,param_3); + } + if (uVar3 < 0x400) { + lVar6 = (long)(int)uVar3; + lVar7 = 0x400 - lVar6; + pcVar8 = local_448 + lVar6; + } + else { + lVar7 = 0x400; + lVar6 = 0; + uVar3 = 0; + pcVar8 = local_448; + } + local_448[lVar6] = '\0'; + iVar4 = __vsnprintf_chk(pcVar8,lVar7,1,0xffffffffffffffff,param_4,param_5); + if ((iVar4 < 0) || (iVar5 = uVar3 + iVar4, 0x3ff < iVar5)) { + iVar4 = 0x400 - uVar3; + iVar5 = uVar3 + iVar4; + } + if (0x3ff < (long)iVar5 + 2U) { + iVar4 = (iVar4 + 0x3fe) - iVar5; + } + pcVar8 = local_448 + lVar6 + iVar4; + pcVar8[0] = '\n'; + pcVar8[1] = '\0'; + fputs(local_448,*(FILE **)PTR_stderr_0033efd8); + } +switchD_00120af6_caseD_0: + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return; +} + + +================================================================== + +### FUNC 00120cd0 (133 bytes) name=FUN_00120cd0 + +void FUN_00120cd0(void) + +{ + FUN_001209b0(); + return; +} + + +================================================================== + +### FUNC 00120d60 (113 bytes) name=FUN_00120d60 + +undefined8 FUN_00120d60(long param_1) + +{ + byte bVar1; + undefined8 uVar2; + + uVar2 = FUN_00123690(); + if (-1 < (int)uVar2) { + bVar1 = *(byte *)(param_1 + 0x79); + if (bVar1 < 9) { + if (bVar1 == 0) { + FUN_00120cd0(0,4,"usbi_sanitize_device","zero configurations, maybe an unauthorized device") + ; + } + *(byte *)(param_1 + 0x49) = bVar1; + uVar2 = 0; + } + else { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"usbi_sanitize_device", + "too many configurations"); + uVar2 = 0xffffffff; + } + } + return uVar2; +} + + +================================================================== + +### FUNC 00120de0 (145 bytes) name=libusb_get_port_numbers + +int libusb_get_port_numbers(long param_1,void *param_2,int param_3) + +{ + undefined8 uVar1; + int iVar2; + int iVar3; + char *pcVar4; + + uVar1 = *(undefined8 *)(param_1 + 0x30); + if (param_3 < 1) { + iVar3 = -2; + } + else { + pcVar4 = (char *)((long)param_2 + (long)param_3 + -1); + iVar2 = param_3; + do { + if (*(char *)(param_1 + 0x39) == '\0') break; + iVar2 = iVar2 + -1; + if (iVar2 == -1) { + FUN_00120cd0(uVar1,2,"libusb_get_port_numbers","port numbers array is too small"); + return -8; + } + *pcVar4 = *(char *)(param_1 + 0x39); + param_1 = *(long *)(param_1 + 0x40); + pcVar4 = pcVar4 + -1; + } while (param_1 != 0); + iVar3 = param_3 - iVar2; + if (iVar2 < param_3) { + memmove(param_2,(void *)((long)param_2 + (long)iVar2),(long)iVar3); + return iVar3; + } + } + return iVar3; +} + + +================================================================== + +### FUNC 00120e80 (14 bytes) name=libusb_get_port_path + +void libusb_get_port_path + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4) + +{ + libusb_get_port_numbers(param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00120e90 (115 bytes) name=libusb_get_max_packet_size + +ulong libusb_get_max_packet_size(long param_1,undefined1 param_2) + +{ + int iVar1; + long lVar2; + ulong uVar3; + long local_20 [2]; + + iVar1 = libusb_get_active_config_descriptor(param_1,local_20); + if (iVar1 < 0) { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_max_packet_size", + "could not retrieve active config descriptor"); + uVar3 = 0xffffff9d; + } + else { + uVar3 = 0xfffffffb; + lVar2 = FUN_00120550(*(undefined1 *)(local_20[0] + 4),local_20[0] + 0x10,param_2); + if (lVar2 != 0) { + uVar3 = (ulong)*(ushort *)(lVar2 + 4); + } + libusb_free_config_descriptor(local_20[0]); + } + return uVar3; +} + + +================================================================== + +### FUNC 00120f10 (144 bytes) name=libusb_get_max_iso_packet_size + +uint libusb_get_max_iso_packet_size(long param_1,undefined1 param_2) + +{ + int iVar1; + long lVar2; + uint uVar3; + long local_20 [2]; + + iVar1 = libusb_get_active_config_descriptor(param_1,local_20); + if (iVar1 < 0) { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_max_iso_packet_size", + "could not retrieve active config descriptor"); + uVar3 = 0xffffff9d; + } + else { + uVar3 = 0xfffffffb; + lVar2 = FUN_00120550(*(undefined1 *)(local_20[0] + 4),local_20[0] + 0x10,param_2); + if (lVar2 != 0) { + uVar3 = *(ushort *)(lVar2 + 4) & 0x7ff; + if ((*(byte *)(lVar2 + 3) & 1) != 0) { + uVar3 = uVar3 * ((*(ushort *)(lVar2 + 4) >> 0xb & 3) + 1); + } + } + libusb_free_config_descriptor(local_20[0]); + } + return uVar3; +} + + +================================================================== + +### FUNC 00120fb0 (164 bytes) name=libusb_unref_device + +void libusb_unref_device(pthread_mutex_t *param_1) + +{ + int iVar1; + + if (param_1 != (pthread_mutex_t *)0x0) { + pthread_mutex_lock(param_1); + iVar1 = param_1[1].__data.__lock + -1; + param_1[1].__data.__lock = iVar1; + pthread_mutex_unlock(param_1); + if (iVar1 == 0) { + FUN_00120cd0(0,4,"libusb_unref_device","destroy device %d.%d", + *(undefined1 *)((long)param_1 + 0x38),*(undefined1 *)((long)param_1 + 0x48)); + libusb_unref_device(*(undefined8 *)((long)param_1 + 0x40)); + if (PTR_FUN_0033eb38 != (undefined *)0x0) { + (*(code *)PTR_FUN_0033eb38)(param_1); + } + iVar1 = libusb_has_capability(1); + if (iVar1 == 0) { + FUN_00120910(param_1); + } + pthread_mutex_destroy(param_1); + free(param_1); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00121060 (71 bytes) name=libusb_free_device_list + +void libusb_free_device_list(long *param_1,int param_2) + +{ + long lVar1; + long *plVar2; + + if (param_1 != (long *)0x0) { + if (param_2 != 0) { + lVar1 = *param_1; + plVar2 = param_1; + while (lVar1 != 0) { + plVar2 = plVar2 + 1; + libusb_unref_device(); + lVar1 = *plVar2; + } + } + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 001210b0 (185 bytes) name=FUN_001210b0 + +ulong * FUN_001210b0(ulong *param_1,undefined8 param_2) + +{ + long lVar1; + ulong *puVar2; + ulong uVar3; + ulong uVar4; + + uVar4 = *param_1; + if (param_1[1] <= uVar4) { + FUN_00120cd0(0,4,"discovered_devs_append","need to increase capacity"); + uVar3 = param_1[1]; + puVar2 = realloc(param_1,uVar3 * 8 + 0x50); + if (puVar2 == (ulong *)0x0) { + uVar4 = 0; + if (*param_1 != 0) { + do { + lVar1 = uVar4 + 2; + uVar4 = uVar4 + 1; + libusb_unref_device(param_1[lVar1]); + } while (uVar4 < *param_1); + } + free(param_1); + puVar2 = (ulong *)0x0; + } + else { + puVar2[1] = uVar3 + 8; + uVar3 = libusb_ref_device(param_2); + puVar2[uVar4 + 2] = uVar3; + *puVar2 = *puVar2 + 1; + } + return puVar2; + } + uVar3 = libusb_ref_device(param_2); + param_1[uVar4 + 2] = uVar3; + *param_1 = *param_1 + 1; + return param_1; +} + + +================================================================== + +### FUNC 00121170 (454 bytes) name=libusb_get_device_list + +ulong libusb_get_device_list(long param_1,undefined8 *param_2) + +{ + long lVar1; + int iVar2; + void *pvVar3; + undefined8 uVar4; + ulong uVar5; + ulong *__ptr; + ulong uVar6; + ulong *local_30; + + local_30 = malloc(0x50); + if (local_30 != (ulong *)0x0) { + *local_30 = 0; + local_30[1] = 8; + } + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + FUN_00120cd0(0,4,"libusb_get_device_list",&DAT_00131fd1); + if (local_30 == (ulong *)0x0) { + return 0xfffffffffffffff5; + } + iVar2 = libusb_has_capability(1); + if (iVar2 == 0) { + iVar2 = (*DAT_0033ea80)(param_1,&local_30); + } + else { + if (PTR_thunk_FUN_0012c710_0033ea88 != (undefined *)0x0) { + (*(code *)PTR_thunk_FUN_0012c710_0033ea88)(); + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x20)); + for (lVar1 = *(long *)(param_1 + 0x18); param_1 + 0x10 != lVar1; lVar1 = *(long *)(lVar1 + 8)) { + local_30 = (ulong *)FUN_001210b0(local_30,lVar1 + -0x50); + if (local_30 == (ulong *)0x0) { + iVar2 = -0xb; + goto LAB_00121253; + } + } + iVar2 = 0; +LAB_00121253: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x20)); + } + __ptr = local_30; + if (iVar2 < 0) { + uVar6 = (ulong)iVar2; + } + else { + uVar6 = *local_30; + pvVar3 = calloc(uVar6 + 1,8); + if (pvVar3 == (void *)0x0) { + uVar6 = 0xfffffffffffffff5; + goto LAB_001212c0; + } + *(undefined8 *)((long)pvVar3 + uVar6 * 8) = 0; + if (0 < (long)uVar6) { + uVar5 = 0; + do { + uVar4 = libusb_ref_device(__ptr[uVar5 + 2]); + *(undefined8 *)((long)pvVar3 + uVar5 * 8) = uVar4; + uVar5 = uVar5 + 1; + __ptr = local_30; + } while (uVar6 != uVar5); + } + *param_2 = pvVar3; + } + if (__ptr == (ulong *)0x0) { + return uVar6; + } +LAB_001212c0: + uVar5 = 0; + if (*__ptr != 0) { + do { + lVar1 = uVar5 + 2; + uVar5 = uVar5 + 1; + libusb_unref_device(__ptr[lVar1]); + } while (uVar5 < *__ptr); + } + free(__ptr); + return uVar6; +} + + +================================================================== + +### FUNC 00121360 (83 bytes) name=FUN_00121360 + +undefined8 FUN_00121360(long param_1) + +{ + ssize_t sVar1; + undefined8 uVar2; + undefined1 local_9; + + local_9 = 1; + sVar1 = write(*(int *)(param_1 + 0xc),&local_9,1); + uVar2 = 0; + if (sVar1 != 1) { + FUN_00120cd0(param_1,2,"usbi_signal_event","internal signalling write failed"); + uVar2 = 0xffffffff; + } + return uVar2; +} + + +================================================================== + +### FUNC 001213c0 (78 bytes) name=FUN_001213c0 + +undefined8 FUN_001213c0(long param_1) + +{ + ssize_t sVar1; + undefined8 uVar2; + undefined1 local_9; + + sVar1 = read(*(int *)(param_1 + 8),&local_9,1); + uVar2 = 0; + if (sVar1 != 1) { + FUN_00120cd0(param_1,2,"usbi_clear_event","internal signalling read failed"); + uVar2 = 0xffffffff; + } + return uVar2; +} + + +================================================================== + +### FUNC 00121420 (358 bytes) name=libusb_wrap_fd + +int libusb_wrap_fd(long param_1,undefined4 param_2,undefined8 *param_3) + +{ + undefined *puVar1; + size_t __n; + int iVar2; + pthread_mutex_t *__mutex; + + __n = DAT_0033eb80; + FUN_00120cd0(0,4,"libusb_wrap_fd","wrap %d",param_2); + puVar1 = PTR_FUN_0033ea90; + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + if (PTR_FUN_0033ea90 == (undefined *)0x0) { + iVar2 = -0xc; + } + else { + __mutex = malloc(__n + 0x50); + if (__mutex == (pthread_mutex_t *)0x0) { + iVar2 = -0xb; + } + else { + iVar2 = pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + if (iVar2 == 0) { + *(undefined8 *)((long)__mutex + 0x40) = 0; + *(undefined4 *)((long)__mutex + 0x48) = 0; + __mutex[1].__align = 0; + memset((void *)((long)__mutex + 0x4c),0,__n); + iVar2 = (*(code *)puVar1)(param_1,__mutex,param_2); + if (iVar2 < 0) { + FUN_00120cd0(0,4,"libusb_wrap_fd","wrap %d returns %d",param_2,iVar2); + pthread_mutex_destroy(__mutex); + free(__mutex); + return iVar2; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x58)); + *(undefined8 *)((long)__mutex + 0x38) = *(undefined8 *)(param_1 + 0x50); + *(long *)((long)__mutex + 0x30) = param_1 + 0x48; + **(long **)(param_1 + 0x50) = (long)__mutex + 0x30; + *(long *)(param_1 + 0x50) = (long)__mutex + 0x30; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x58)); + *param_3 = __mutex; + iVar2 = 0; + } + else { + free(__mutex); + iVar2 = -99; + } + } + } + return iVar2; +} + + +================================================================== + +### FUNC 001215a0 (370 bytes) name=libusb_open + +int libusb_open(long param_1,undefined8 *param_2) + +{ + long lVar1; + size_t __n; + int iVar2; + pthread_mutex_t *__mutex; + undefined8 uVar3; + + __n = DAT_0033eb80; + lVar1 = *(long *)(param_1 + 0x30); + FUN_00120cd0(0,4,"libusb_open","open %d.%d",*(undefined1 *)(param_1 + 0x38), + *(undefined1 *)(param_1 + 0x48)); + iVar2 = -4; + if (*(int *)(param_1 + 0x7c) != 0) { + __mutex = malloc(__n + 0x50); + if (__mutex == (pthread_mutex_t *)0x0) { + iVar2 = -0xb; + } + else { + iVar2 = pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + if (iVar2 == 0) { + uVar3 = libusb_ref_device(param_1); + *(undefined8 *)((long)__mutex + 0x40) = uVar3; + *(undefined4 *)((long)__mutex + 0x48) = 0; + __mutex[1].__align = 0; + memset((void *)((long)__mutex + 0x4c),0,__n); + iVar2 = (*(code *)PTR_FUN_0033ea98)(__mutex); + if (iVar2 < 0) { + FUN_00120cd0(0,4,"libusb_open","open %d.%d returns %d",*(undefined1 *)(param_1 + 0x38), + *(undefined1 *)(param_1 + 0x48),iVar2); + libusb_unref_device(param_1); + pthread_mutex_destroy(__mutex); + free(__mutex); + return iVar2; + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x58)); + *(undefined8 *)((long)__mutex + 0x38) = *(undefined8 *)(lVar1 + 0x50); + *(long *)((long)__mutex + 0x30) = lVar1 + 0x48; + **(long **)(lVar1 + 0x50) = (long)__mutex + 0x30; + *(long *)(lVar1 + 0x50) = (long)__mutex + 0x30; + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x58)); + *param_2 = __mutex; + iVar2 = 0; + } + else { + free(__mutex); + iVar2 = -99; + } + } + } + return iVar2; +} + + +================================================================== + +### FUNC 00121730 (191 bytes) name=libusb_open_device_with_vid_pid + +undefined8 libusb_open_device_with_vid_pid(undefined8 param_1,short param_2,short param_3) + +{ + int iVar1; + long lVar2; + long lVar3; + long *local_58; + undefined8 local_50; + undefined1 local_48 [8]; + short local_40; + short local_3e; + + local_50 = 0; + lVar2 = libusb_get_device_list(param_1,&local_58); + if (lVar2 < 0) { + local_50 = 0; + } + else { + lVar2 = *local_58; + if (lVar2 != 0) { + lVar3 = 8; + while (iVar1 = libusb_get_device_descriptor(lVar2,local_48), -1 < iVar1) { + if ((local_40 == param_2) && (local_3e == param_3)) { + iVar1 = libusb_open(lVar2,&local_50); + if (iVar1 < 0) { + local_50 = 0; + } + break; + } + lVar2 = *(long *)((long)local_58 + lVar3); + lVar3 = lVar3 + 8; + if (lVar2 == 0) break; + } + } + libusb_free_device_list(local_58,1); + } + return local_50; +} + + +================================================================== + +### FUNC 00121800 (788 bytes) name=libusb_close + +void libusb_close(pthread_mutex_t *param_1) + +{ + long lVar1; + long *plVar2; + undefined8 *puVar3; + long *plVar4; + long *plVar5; + void *pvVar6; + + if (param_1 != (pthread_mutex_t *)0x0) { + FUN_00120cd0(0,4,"libusb_close",&DAT_00131fd1); + lVar1 = *(long *)(*(long *)((long)param_1 + 0x40) + 0x30); + pvVar6 = pthread_getspecific(*(pthread_key_t *)(lVar1 + 0x134)); + if (pvVar6 == (void *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + if (((*(long *)(lVar1 + 0x1b8) == 0) && (*(long *)(lVar1 + 0x1e8) == lVar1 + 0x1e0)) && + (*(long *)(lVar1 + 0x1f8) == lVar1 + 0x1f0)) { + *(int *)(lVar1 + 0x1bc) = *(int *)(lVar1 + 0x1bc) + 1; + FUN_00121360(lVar1); + } + else { + *(int *)(lVar1 + 0x1bc) = *(int *)(lVar1 + 0x1bc) + 1; + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + libusb_lock_events(lVar1); + } + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 200)); + plVar4 = (long *)(*(long **)(lVar1 + 0xc0))[1]; + plVar2 = *(long **)(lVar1 + 0xc0); + while (plVar5 = plVar4, (long *)(lVar1 + 0xb8) != plVar2) { + if (param_1 == (pthread_mutex_t *)plVar2[0xd]) { + pthread_mutex_lock((pthread_mutex_t *)(plVar2 + 8)); + if ((*(byte *)(plVar2 + 7) & 4) == 0) { + FUN_00120cd0(lVar1,1,"do_close", + "Device handle closed while transfer was still being processed, but the device is still connected as far as we know" + ); + if ((*(byte *)(plVar2 + 7) & 2) == 0) { + FUN_00120cd0(lVar1,1,"do_close", + "A cancellation hasn\'t even been scheduled on the transfer for which the device is closing" + ); + } + else { + FUN_00120cd0(lVar1,2,"do_close", + "A cancellation for an in-flight transfer hasn\'t completed but closing the device handle" + ); + } + } + pthread_mutex_unlock((pthread_mutex_t *)(plVar2 + 8)); + plVar4 = (long *)plVar2[1]; + *plVar4 = *plVar2; + *(long **)(*plVar2 + 8) = plVar4; + *plVar2 = 0; + plVar2[1] = 0; + plVar2[0xd] = 0; + FUN_00120cd0(0,4,"do_close", + "Removed transfer %p from the in-flight list because device handle %p closed", + plVar2 + 0xd,param_1); + } + plVar4 = (long *)plVar5[1]; + plVar2 = plVar5; + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 200)); + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x58)); + puVar3 = *(undefined8 **)((long)param_1 + 0x38); + *puVar3 = *(undefined8 *)((long)param_1 + 0x30); + *(undefined8 **)(*(long *)((long)param_1 + 0x30) + 8) = puVar3; + *(undefined8 *)((long)param_1 + 0x30) = 0; + *(undefined8 *)((long)param_1 + 0x38) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x58)); + (*(code *)PTR_FUN_0033eaa0)(param_1); + libusb_unref_device(*(undefined8 *)((long)param_1 + 0x40)); + pthread_mutex_destroy(param_1); + free(param_1); + if (pvVar6 == (void *)0x0) { + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + *(int *)(lVar1 + 0x1bc) = *(int *)(lVar1 + 0x1bc) + -1; + if (((*(long *)(lVar1 + 0x1b8) == 0) && (*(long *)(lVar1 + 0x1e8) == lVar1 + 0x1e0)) && + (*(long *)(lVar1 + 0x1f8) == lVar1 + 0x1f0)) { + FUN_001213c0(lVar1); + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + libusb_unlock_events(lVar1); + return; + } + } + return; +} + + +================================================================== + +### FUNC 00121b50 (316 bytes) name=libusb_get_configuration + +int libusb_get_configuration(long param_1,uint *param_2) + +{ + int iVar1; + byte local_19; + + FUN_00120cd0(0,4,"libusb_get_configuration",&DAT_00131fd1); + if ((PTR_FUN_0033eac8 == (undefined *)0x0) || + (iVar1 = (*(code *)PTR_FUN_0033eac8)(param_1,param_2), iVar1 == -0xc)) { + local_19 = 0; + FUN_00120cd0(0,4,"libusb_get_configuration","falling back to control message"); + iVar1 = libusb_control_transfer(param_1,0x80,8,0,0,&local_19,1,1000); + if (iVar1 == 0) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_configuration", + "zero bytes returned in ctrl transfer?"); + return -1; + } + if (iVar1 == 1) { + *param_2 = (uint)local_19; + goto LAB_00121c18; + } + FUN_00120cd0(0,4,"libusb_get_configuration","control failed, error %d",iVar1); + } + if (iVar1 != 0) { + return iVar1; + } +LAB_00121c18: + FUN_00120cd0(0,4,"libusb_get_configuration","active config %d",*param_2); + return 0; +} + + +================================================================== + +### FUNC 00121ca0 (66 bytes) name=libusb_set_configuration + +/* WARNING: Switch with 1 destination removed at 0x00121ce0 */ + +undefined8 libusb_set_configuration(long param_1,undefined4 param_2) + +{ + int iVar1; + long lVar2; + int iVar3; + int *piVar4; + undefined8 uVar5; + undefined8 uStack_20; + + uStack_20 = 0x121cca; + FUN_00120cd0(0,4,"libusb_set_configuration","configuration %d",param_2); + lVar2 = *(long *)(param_1 + 0x40); + uStack_20._4_4_ = param_2; + iVar3 = ioctl(*(int *)(param_1 + 0x4c),0x80045505,(long)&uStack_20 + 4); + if (iVar3 == 0) { + *(undefined4 *)(lVar2 + 0x94) = uStack_20._4_4_; + uVar5 = 0; + } + else { + piVar4 = __errno_location(); + iVar1 = *piVar4; + if (iVar1 == 0x16) { + uVar5 = 0xfffffffb; + } + else if (iVar1 == 0x10) { + uVar5 = 0xfffffffa; + } + else { + uVar5 = 0xfffffffc; + if (iVar1 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_set_configuration", + "failed, error %d errno %d",iVar3); + return 0xffffff9d; + } + } + } + return uVar5; +} + + +================================================================== + +### FUNC 00121cf0 (153 bytes) name=libusb_claim_interface + +int libusb_claim_interface(pthread_mutex_t *param_1,int param_2) + +{ + int iVar1; + ulong uVar2; + + FUN_00120cd0(0,4,"libusb_claim_interface","interface %d",param_2); + if (param_2 < 0x20) { + iVar1 = -4; + if (*(int *)(*(long *)((long)param_1 + 0x40) + 0x7c) != 0) { + iVar1 = 0; + pthread_mutex_lock(param_1); + uVar2 = (ulong)(1 << ((byte)param_2 & 0x1f)); + if ((param_1[1].__align & uVar2) == 0) { + iVar1 = (*(code *)PTR_FUN_0033ead8)(param_1,param_2); + if (iVar1 == 0) { + param_1[1].__align = param_1[1].__align | uVar2; + } + } + pthread_mutex_unlock(param_1); + } + } + else { + iVar1 = -2; + } + return iVar1; +} + + +================================================================== + +### FUNC 00121da0 (149 bytes) name=libusb_release_interface + +int libusb_release_interface(pthread_mutex_t *param_1,int param_2) + +{ + int iVar1; + uint uVar2; + + FUN_00120cd0(0,4,"libusb_release_interface","interface %d",param_2); + iVar1 = -2; + if (param_2 < 0x20) { + iVar1 = -5; + pthread_mutex_lock(param_1); + uVar2 = 1 << ((byte)param_2 & 0x1f); + if ((param_1[1].__align & (long)(int)uVar2) != 0) { + iVar1 = (*(code *)PTR_FUN_0033eae0)(param_1,param_2); + if (iVar1 == 0) { + param_1[1].__align = param_1[1].__align & (long)(int)~uVar2; + } + } + pthread_mutex_unlock(param_1); + } + return iVar1; +} + + +================================================================== + +### FUNC 00121e40 (160 bytes) name=libusb_set_interface_alt_setting + +/* WARNING: Switch with 1 destination removed at 0x00121eb9 */ + +undefined8 libusb_set_interface_alt_setting(pthread_mutex_t *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined8 uVar2; + int *piVar3; + int iStack_28; + undefined4 uStack_24; + undefined8 uStack_20; + + uStack_20 = 0x121e6e; + FUN_00120cd0(0,4,"libusb_set_interface_alt_setting","interface %d altsetting %d",param_2,param_3); + if (param_2 < 0x20) { + uStack_20 = 0x121e7b; + pthread_mutex_lock(param_1); + if (*(int *)(*(long *)((long)param_1 + 0x40) + 0x7c) == 0) { + uStack_20 = 0x121ee8; + pthread_mutex_unlock(param_1); + uVar2 = 0xfffffffc; + } + else { + if ((param_1[1].__align & (long)(1 << ((byte)param_2 & 0x1f))) != 0) { + uStack_20 = 0x121e9f; + pthread_mutex_unlock(param_1); + iStack_28 = param_2; + uStack_24 = param_3; + iVar1 = ioctl(*(int *)((long)param_1 + 0x4c),0x80085504,&iStack_28); + uVar2 = 0; + if (iVar1 != 0) { + piVar3 = __errno_location(); + if (*piVar3 == 0x16) { + uVar2 = 0xfffffffb; + } + else { + uVar2 = 0xfffffffc; + if (*piVar3 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),1, + "op_set_interface","setintf failed error %d errno %d",iVar1); + uVar2 = 0xffffff9d; + } + } + } + return uVar2; + } + uStack_20 = 0x121ed5; + pthread_mutex_unlock(param_1); + uVar2 = 0xfffffffb; + } + } + else { + uVar2 = 0xfffffffe; + } + return uVar2; +} + + +================================================================== + +### FUNC 00121ef0 (94 bytes) name=libusb_clear_halt + +/* WARNING: Switch with 1 destination removed at 0x00121f40 */ + +undefined8 libusb_clear_halt(long param_1,undefined1 param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + undefined8 uStack_20; + + uStack_20 = 0x121f1c; + FUN_00120cd0(0,4,"libusb_clear_halt","endpoint %x",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + return 0xfffffffc; + } + uStack_20 = (ulong)CONCAT14(param_2,(undefined4)uStack_20); + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x80045515,(long)&uStack_20 + 4); + uVar3 = 0; + if (iVar1 != 0) { + piVar2 = __errno_location(); + if (*piVar2 == 2) { + uVar3 = 0xfffffffb; + } + else { + uVar3 = 0xfffffffc; + if (*piVar2 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_clear_halt", + "clear_halt failed error %d errno %d",iVar1); + uVar3 = 0xffffff9d; + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00121f60 (70 bytes) name=libusb_reset_device + +/* WARNING: Switch with 1 destination removed at 0x00121f9d */ + +undefined8 libusb_reset_device(pthread_mutex_t *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + int iVar5; + ulong uVar6; + undefined8 uVar7; + + FUN_00120cd0(0,4,"libusb_reset_device",&DAT_00131fd1); + if (*(int *)(*(long *)((long)param_1 + 0x40) + 0x7c) == 0) { + return 0xfffffffc; + } + iVar1 = *(int *)((long)param_1 + 0x4c); + iVar2 = 0; + do { + while ((param_1[1].__align & 1L << ((byte)iVar2 & 0x3f)) == 0) { + iVar2 = iVar2 + 1; + if (iVar2 == 0x20) goto LAB_00129708; + } + iVar5 = iVar2 + 1; + FUN_00127c80(param_1,iVar2); + iVar2 = iVar5; + } while (iVar5 != 0x20); +LAB_00129708: + pthread_mutex_lock(param_1); + iVar1 = ioctl(iVar1,0x5514,0); + if (iVar1 == 0) { + uVar7 = 0; + iVar1 = 0; + do { + uVar6 = 1L << ((byte)iVar1 & 0x3f); + if (((param_1[1].__align & uVar6) != 0) && (iVar2 = FUN_001295a0(param_1,iVar1), iVar2 != 0)) + { + uVar7 = 0xfffffffb; + uVar4 = libusb_error_name(iVar2); + FUN_00120cd0(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),2,"op_reset_device", + "failed to re-claim interface %d after reset: %s",iVar1,uVar4); + param_1[1].__align = param_1[1].__align & ~uVar6; + } + iVar1 = iVar1 + 1; + } while (iVar1 != 0x20); + } + else { + piVar3 = __errno_location(); + uVar7 = 0xfffffffb; + if (*piVar3 != 0x13) { + uVar7 = 0xffffff9d; + FUN_00120cd0(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),1,"op_reset_device", + "reset failed error %d errno %d",iVar1); + } + } + pthread_mutex_unlock(param_1); + return uVar7; +} + + +================================================================== + +### FUNC 00121fb0 (131 bytes) name=libusb_alloc_streams + +undefined8 +libusb_alloc_streams(long param_1,undefined4 param_2,undefined8 param_3,undefined4 param_4) + +{ + undefined8 uVar1; + + FUN_00120cd0(0,4,"libusb_alloc_streams","streams %u eps %d",param_2,param_4); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + switch(PTR_FUN_0033eb00) { + case (undefined *)0x128900: + uVar1 = FUN_001287c0(param_1,0x8008551c,param_2,param_3,param_4); + return uVar1; + default: + uVar1 = 0xfffffff4; + } + } + return uVar1; +} + + +================================================================== + +### FUNC 00122040 (104 bytes) name=libusb_free_streams + +undefined8 libusb_free_streams(long param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + + FUN_00120cd0(0,4,"libusb_free_streams","eps %d",param_3); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar1 = 0xfffffffc; + } + else { + switch(PTR_FUN_0033eb08) { + case (undefined *)0x1288e0: + uVar1 = FUN_001287c0(param_1,0x8008551d,0,param_2,param_3); + return uVar1; + default: + uVar1 = 0xfffffff4; + } + } + return uVar1; +} + + +================================================================== + +### FUNC 001220c0 (104 bytes) name=libusb_kernel_driver_active + +ulong libusb_kernel_driver_active(long param_1,undefined4 param_2) + +{ + int iVar1; + ulong uVar2; + int *piVar3; + long lVar4; + char *pcVar5; + char *pcVar6; + long in_FS_OFFSET; + bool bVar7; + byte bVar8; + undefined4 uStack_128; + char acStack_124 [260]; + long lStack_20; + + bVar8 = 0; + lStack_20 = 0x1220ea; + FUN_00120cd0(0,4,"libusb_kernel_driver_active","interface %d",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar2 = 0xfffffffc; + } + else { + switch(PTR_FUN_0033eb20) { + case (undefined *)0x128040: + lStack_20 = *(long *)(in_FS_OFFSET + 0x28); + uStack_128 = param_2; + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x41045508,&uStack_128); + if (iVar1 == 0) { + lVar4 = 6; + bVar7 = true; + pcVar5 = acStack_124; + pcVar6 = "usbfs"; + do { + if (lVar4 == 0) break; + lVar4 = lVar4 + -1; + bVar7 = *pcVar5 == *pcVar6; + pcVar5 = pcVar5 + (ulong)bVar8 * -2 + 1; + pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1; + } while (bVar7); + uVar2 = (ulong)!bVar7; + } + else { + piVar3 = __errno_location(); + if (*piVar3 == 0x3d) { + uVar2 = 0; + } + else { + uVar2 = 0xfffffffc; + if (*piVar3 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1, + "op_kernel_driver_active","get driver failed error %d errno %d",iVar1); + uVar2 = 0xffffff9d; + } + } + } + if (lStack_20 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar2; + default: + uVar2 = 0xfffffff4; + } + } + return uVar2; +} + + +================================================================== + +### FUNC 00122130 (104 bytes) name=libusb_detach_kernel_driver + +undefined8 libusb_detach_kernel_driver(long param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + long lVar5; + char *pcVar6; + char *pcVar7; + long in_FS_OFFSET; + bool bVar8; + byte bVar9; + undefined4 uStack_138; + undefined4 uStack_134; + undefined8 uStack_130; + undefined4 uStack_128; + char acStack_124 [260]; + long lStack_20; + + bVar9 = 0; + lStack_20 = 0x12215a; + FUN_00120cd0(0,4,"libusb_detach_kernel_driver","interface %d",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + return 0xfffffffc; + } + switch(PTR_FUN_0033eb28) { + case (undefined *)0x127f30: + break; + default: + return 0xfffffff4; + } + iVar2 = *(int *)(param_1 + 0x4c); + lStack_20 = *(long *)(in_FS_OFFSET + 0x28); + uStack_134 = 0x5516; + uStack_130 = 0; + uStack_138 = param_2; + uStack_128 = param_2; + iVar1 = ioctl(iVar2,0x41045508,&uStack_128); + bVar8 = iVar1 == 0; + if (bVar8) { + lVar5 = 6; + pcVar6 = acStack_124; + pcVar7 = "usbfs"; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + bVar8 = *pcVar6 == *pcVar7; + pcVar6 = pcVar6 + (ulong)bVar9 * -2 + 1; + pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1; + } while (bVar8); + if (!bVar8) goto LAB_00127f9c; + } + else { +LAB_00127f9c: + iVar2 = ioctl(iVar2,0xc0105512,&uStack_138); + uVar4 = 0; + if (iVar2 == 0) goto LAB_00127fff; + piVar3 = __errno_location(); + iVar1 = *piVar3; + if (iVar1 != 0x3d) { + if (iVar1 == 0x16) { + uVar4 = 0xfffffffe; + } + else { + uVar4 = 0xfffffffc; + if (iVar1 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_detach_kernel_driver" + ,"detach failed error %d errno %d",iVar2); + uVar4 = 0xffffff9d; + } + } + goto LAB_00127fff; + } + } + uVar4 = 0xfffffffb; +LAB_00127fff: + if (lStack_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001221a0 (104 bytes) name=libusb_attach_kernel_driver + +uint libusb_attach_kernel_driver(long param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + uint uVar3; + int *piVar4; + undefined4 uStack_28; + undefined4 uStack_24; + undefined8 uStack_20; + + uStack_20 = 0x1221ca; + FUN_00120cd0(0,4,"libusb_attach_kernel_driver","interface %d",param_2); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) == 0) { + uVar3 = 0xfffffffc; + } + else { + switch(PTR_FUN_0033eb30) { + case (undefined *)0x127bc0: + uStack_24 = 0x5517; + uStack_20 = 0; + uStack_28 = param_2; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0xc0105512,&uStack_28); + if (iVar2 < 0) { + piVar4 = __errno_location(); + iVar1 = *piVar4; + if (iVar1 == 0x3d) { + uVar3 = 0xfffffffb; + } + else if (iVar1 == 0x16) { + uVar3 = 0xfffffffe; + } + else if (iVar1 == 0x13) { + uVar3 = 0xfffffffc; + } + else { + uVar3 = 0xfffffffa; + if (iVar1 != 0x10) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1, + "op_attach_kernel_driver","attach failed error %d errno %d",iVar2); + return 0xffffff9d; + } + } + } + else { + uVar3 = -(uint)(iVar2 == 0) & 0xfffffffb; + } + return uVar3; + default: + uVar3 = 0xfffffff4; + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00122210 (973 bytes) name=libusb_init + +int libusb_init(undefined8 *param_1) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + undefined8 *puVar2; + long *plVar3; + long *plVar4; + long *plVar5; + int iVar6; + char *__nptr; + int *__ptr; + long lVar7; + + __nptr = getenv("LIBUSB_DEBUG"); + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366620); + if (DAT_00366600 == 0) { + gettimeofday((timeval *)&DAT_00366600,(__timezone_ptr_t)0x0); + } + if ((param_1 == (undefined8 *)0x0) && (DAT_003665e8 != (int *)0x0)) { + FUN_00120cd0(0,4,"libusb_init","reusing default context"); + DAT_00366648 = DAT_00366648 + 1; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366620); + return 0; + } + __ptr = calloc(1,0x218); + if (__ptr == (int *)0x0) { + iVar6 = -0xb; + } + else { + if (__nptr != (char *)0x0) { + lVar7 = strtol(__nptr,(char **)0x0,10); + *__ptr = (int)lVar7; + if ((int)lVar7 != 0) { + __ptr[1] = 1; + } + } + if (DAT_003665e8 == (int *)0x0) { + DAT_00366648 = DAT_00366648 + 1; + DAT_003665e8 = __ptr; + FUN_00120cd0(0,4,"libusb_init","created default context"); + } + __mutex = (pthread_mutex_t *)(__ptr + 8); + plVar1 = (long *)(__ptr + 4); + FUN_00120cd0(0,4,"libusb_init","libusb v%u.%u.%u.%u%s",1,0,0x15,0x2b94,&DAT_00131fd1); + pthread_mutex_init(__mutex,(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(__ptr + 0x16),(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(__ptr + 0x24),(pthread_mutexattr_t *)0x0); + *(long **)(__ptr + 6) = plVar1; + *(long **)(__ptr + 4) = plVar1; + *(int **)(__ptr + 0x14) = __ptr + 0x12; + *(int **)(__ptr + 0x12) = __ptr + 0x12; + *(int **)(__ptr + 0x22) = __ptr + 0x20; + *(int **)(__ptr + 0x20) = __ptr + 0x20; + pthread_mutex_lock((pthread_mutex_t *)&DAT_003665c0); + if (DAT_0033f5e4 != 0) { + DAT_003666e8 = (int *)&DAT_003666e0; + DAT_0033f5e4 = 0; + DAT_003666e0 = &DAT_003666e0; + } + *(int **)(__ptr + 0x84) = DAT_003666e8; + *(undefined8 ***)(__ptr + 0x82) = &DAT_003666e0; + *(int **)DAT_003666e8 = __ptr + 0x82; + DAT_003666e8 = __ptr + 0x82; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003665c0); + if ((PTR_FUN_0033ea70 == (undefined *)0x0) || + (iVar6 = (*(code *)PTR_FUN_0033ea70)(__ptr), iVar6 == 0)) { + iVar6 = FUN_001269e0(__ptr); + if (-1 < iVar6) { + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366620); + if (param_1 == (undefined8 *)0x0) { + return 0; + } + *param_1 = __ptr; + return 0; + } + if (PTR_FUN_0033ea78 != (undefined *)0x0) { + (*(code *)PTR_FUN_0033ea78)(); + } + } + if (__ptr == DAT_003665e8) { + DAT_003665e8 = (int *)0x0; + DAT_00366648 = DAT_00366648 + -1; + } + pthread_mutex_lock((pthread_mutex_t *)&DAT_003665c0); + puVar2 = *(undefined8 **)(__ptr + 0x84); + *puVar2 = *(undefined8 *)(__ptr + 0x82); + *(undefined8 **)(*(long *)(__ptr + 0x82) + 8) = puVar2; + __ptr[0x82] = 0; + __ptr[0x83] = 0; + __ptr[0x84] = 0; + __ptr[0x85] = 0; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003665c0); + pthread_mutex_lock(__mutex); + plVar5 = (long *)(*(long **)(__ptr + 6))[1]; + plVar4 = *(long **)(__ptr + 6); + while (plVar3 = plVar5, plVar1 != plVar4) { + *plVar3 = *plVar4; + *(long **)(*plVar4 + 8) = plVar3; + *plVar4 = 0; + plVar4[1] = 0; + libusb_unref_device(); + plVar5 = (long *)plVar3[1]; + plVar4 = plVar3; + } + pthread_mutex_unlock(__mutex); + pthread_mutex_destroy((pthread_mutex_t *)(__ptr + 0x16)); + pthread_mutex_destroy(__mutex); + pthread_mutex_destroy((pthread_mutex_t *)(__ptr + 0x24)); + free(__ptr); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366620); + return iVar6; +} + + +================================================================== + +### FUNC 00122600 (627 bytes) name=libusb_exit + +void libusb_exit(void *param_1) + +{ + undefined8 *puVar1; + long *plVar2; + long *plVar3; + long *plVar4; + int iVar5; + undefined8 local_38; + undefined8 local_30; + + local_38 = 0; + local_30 = 0; + FUN_00120cd0(0,4,"libusb_exit",&DAT_00131fd1); + if (param_1 == (void *)0x0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366620); + if (param_1 == DAT_003665e8) { + DAT_00366648 = DAT_00366648 + -1; + if (0 < DAT_00366648) { + FUN_00120cd0(0,4,"libusb_exit","not destroying default context"); + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366620); + return; + } + FUN_00120cd0(0,4,"libusb_exit","destroying default context"); + DAT_003665e8 = (void *)0x0; + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366620); + pthread_mutex_lock((pthread_mutex_t *)&DAT_003665c0); + puVar1 = *(undefined8 **)((long)param_1 + 0x210); + *puVar1 = *(undefined8 *)((long)param_1 + 0x208); + *(undefined8 **)(*(long *)((long)param_1 + 0x208) + 8) = puVar1; + *(undefined8 *)((long)param_1 + 0x208) = 0; + *(undefined8 *)((long)param_1 + 0x210) = 0; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003665c0); + iVar5 = libusb_has_capability(1); + if (iVar5 != 0) { + FUN_00124af0(param_1); + if (*(long *)((long)param_1 + 0x50) == (long)param_1 + 0x48) { + libusb_handle_events_timeout(param_1,&local_38); + } + pthread_mutex_lock((pthread_mutex_t *)((long)param_1 + 0x20)); + plVar4 = (long *)(*(long **)((long)param_1 + 0x18))[1]; + plVar3 = *(long **)((long)param_1 + 0x18); + while (plVar2 = plVar4, (long *)((long)param_1 + 0x10) != plVar3) { + *plVar2 = *plVar3; + *(long **)(*plVar3 + 8) = plVar2; + *plVar3 = 0; + plVar3[1] = 0; + libusb_unref_device(); + plVar4 = (long *)plVar2[1]; + plVar3 = plVar2; + } + pthread_mutex_unlock((pthread_mutex_t *)((long)param_1 + 0x20)); + } + if (*(long *)((long)param_1 + 0x18) != (long)param_1 + 0x10) { + FUN_00120cd0(param_1,2,"libusb_exit","some libusb_devices were leaked"); + } + if ((long)param_1 + 0x48 != *(long *)((long)param_1 + 0x50)) { + FUN_00120cd0(param_1,2,"libusb_exit","application left some devices open"); + } + FUN_00126c20(param_1); + if (PTR_FUN_0033ea78 != (undefined *)0x0) { + (*(code *)PTR_FUN_0033ea78)(); + } + pthread_mutex_destroy((pthread_mutex_t *)((long)param_1 + 0x58)); + pthread_mutex_destroy((pthread_mutex_t *)((long)param_1 + 0x20)); + pthread_mutex_destroy((pthread_mutex_t *)((long)param_1 + 0x90)); + free(param_1); + return; +} + + +================================================================== + +### FUNC 00122890 (196 bytes) name=libusb_error_name + +char * libusb_error_name(undefined4 param_1) + +{ + switch(param_1) { + case 0: + return "LIBUSB_SUCCESS / LIBUSB_TRANSFER_COMPLETED"; + case 1: + return "LIBUSB_TRANSFER_ERROR"; + case 2: + return "LIBUSB_TRANSFER_TIMED_OUT"; + case 3: + return "LIBUSB_TRANSFER_CANCELLED"; + case 4: + return "LIBUSB_TRANSFER_STALL"; + case 5: + return "LIBUSB_TRANSFER_NO_DEVICE"; + case 6: + return "LIBUSB_TRANSFER_OVERFLOW"; + case 0xffffff9d: + return "LIBUSB_ERROR_OTHER"; + default: + return "**UNKNOWN**"; + case 0xfffffff4: + return "LIBUSB_ERROR_NOT_SUPPORTED"; + case 0xfffffff5: + return "LIBUSB_ERROR_NO_MEM"; + case 0xfffffff6: + return "LIBUSB_ERROR_INTERRUPTED"; + case 0xfffffff7: + return "LIBUSB_ERROR_PIPE"; + case 0xfffffff8: + return "LIBUSB_ERROR_OVERFLOW"; + case 0xfffffff9: + return "LIBUSB_ERROR_TIMEOUT"; + case 0xfffffffa: + return "LIBUSB_ERROR_BUSY"; + case 0xfffffffb: + return "LIBUSB_ERROR_NOT_FOUND"; + case 0xfffffffc: + return "LIBUSB_ERROR_NO_DEVICE"; + case 0xfffffffd: + return "LIBUSB_ERROR_ACCESS"; + case 0xfffffffe: + return "LIBUSB_ERROR_INVALID_PARAM"; + case 0xffffffff: + return "LIBUSB_ERROR_IO"; + } +} + + +================================================================== + +### FUNC 00122a00 (8 bytes) name=libusb_get_version + +undefined * libusb_get_version(void) + +{ + return &DAT_0033ea30; +} + + +================================================================== + +### FUNC 00122a10 (169 bytes) name=FUN_00122a10 + +void FUN_00122a10(long *param_1) + +{ + long lVar1; + int iVar2; + long lVar3; + void *__ptr; + void *__ptr_00; + int iVar4; + long lVar5; + + __ptr_00 = (void *)*param_1; + if ((__ptr_00 != (void *)0x0) && (0 < (int)param_1[1])) { + lVar5 = 0; + iVar4 = 0; + do { + free(*(void **)((long)__ptr_00 + lVar5 + 0x18)); + __ptr = *(void **)((long)__ptr_00 + lVar5 + 0x10); + if ((__ptr != (void *)0x0) && (*(char *)((long)__ptr_00 + lVar5 + 4) != '\0')) { + lVar3 = 0; + iVar2 = 0; + do { + lVar1 = lVar3 + 0x10; + iVar2 = iVar2 + 1; + lVar3 = lVar3 + 0x20; + free(*(void **)((long)__ptr + lVar1)); + __ptr = *(void **)((long)__ptr_00 + lVar5 + 0x10); + } while (iVar2 < (int)(uint)*(byte *)((long)__ptr_00 + lVar5 + 4)); + } + free(__ptr); + iVar4 = iVar4 + 1; + lVar5 = lVar5 + 0x28; + __ptr_00 = (void *)*param_1; + } while (iVar4 < (int)param_1[1]); + } + free(__ptr_00); + *param_1 = 0; + return; +} + + +================================================================== + +### FUNC 00122ac0 (81 bytes) name=FUN_00122ac0 + +void FUN_00122ac0(long param_1) + +{ + int iVar1; + long lVar2; + long lVar3; + void *__ptr; + + __ptr = *(void **)(param_1 + 0x10); + if ((__ptr != (void *)0x0) && (*(char *)(param_1 + 4) != '\0')) { + lVar2 = 0; + iVar1 = 0; + do { + lVar3 = (long)__ptr + lVar2; + iVar1 = iVar1 + 1; + lVar2 = lVar2 + 0x10; + FUN_00122a10(lVar3); + __ptr = *(void **)(param_1 + 0x10); + } while (iVar1 < (int)(uint)*(byte *)(param_1 + 4)); + } + free(__ptr); + free(*(void **)(param_1 + 0x18)); + return; +} + + +================================================================== + +### FUNC 00122b20 (262 bytes) name=FUN_00122b20 + +int FUN_00122b20(uint *param_1,char *param_2,uint *param_3,int param_4) + +{ + uint uVar1; + uint *puVar2; + byte *pbVar3; + uint *puVar4; + int iVar5; + char cVar6; + + iVar5 = (int)param_1; + cVar6 = *param_2; + if (cVar6 == '\0') { + return 0; + } + do { + if (cVar6 == 'd') { + param_3 = (uint *)((long)param_3 + (ulong)((uint)param_3 & 1)); + if (param_4 == 0) { + *param_3 = (uint)*(byte *)((long)param_1 + 3) << 0x18 | + (uint)*(byte *)((long)param_1 + 2) << 0x10 | (uint)(byte)*param_1 | + (uint)*(byte *)((long)param_1 + 1) << 8; + } + else { + *param_3 = *param_1; + } + puVar2 = param_1 + 1; + puVar4 = param_3 + 1; +LAB_00122b76: + cVar6 = param_2[1]; + param_1 = puVar2; + param_3 = puVar4; + } + else { + puVar2 = param_1; + puVar4 = param_3; + if ('d' < cVar6) { + if (cVar6 == 'u') { + puVar4 = param_3 + 4; + puVar2 = param_1 + 4; + *(undefined8 *)param_3 = *(undefined8 *)param_1; + *(undefined8 *)(param_3 + 2) = *(undefined8 *)(param_1 + 2); + } + else if (cVar6 == 'w') { + pbVar3 = (byte *)((long)param_3 + (ulong)((uint)param_3 & 1)); + if (param_4 == 0) { + *(short *)pbVar3 = (short)*param_1; + } + else { + *(short *)pbVar3 = (short)*param_1; + } + puVar2 = (uint *)((long)param_1 + 2); + puVar4 = (uint *)(pbVar3 + 2); + } + goto LAB_00122b76; + } + if (cVar6 != 'b') goto LAB_00122b76; + uVar1 = *param_1; + param_1 = (uint *)((long)param_1 + 1); + *(byte *)param_3 = (byte)uVar1; + cVar6 = param_2[1]; + param_3 = (uint *)((long)param_3 + 1); + } + param_2 = param_2 + 1; + if (cVar6 == '\0') { + return (int)param_1 - iVar5; + } + } while( true ); +} + + +================================================================== + +### FUNC 00122c40 (2570 bytes) name=FUN_00122c40 + +int FUN_00122c40(undefined8 param_1,long param_2,uint param_3,undefined4 param_4,undefined8 *param_5 + ) + +{ + byte *pbVar1; + byte bVar2; + byte *__ptr; + void *pvVar3; + void *pvVar4; + char *pcVar5; + char *pcVar6; + ulong uVar7; + void *pvVar8; + int iVar9; + uint uVar10; + uint uVar11; + void *pvVar12; + int iVar13; + int iVar14; + undefined8 *local_d8; + void *local_c8; + void *local_c0; + int local_b0; + int local_ac; + uint local_a8; + int local_a0; + int local_80; + byte local_68; + char local_67; + byte local_58; + char local_57; + byte local_48; + char local_47; + + __ptr = malloc(0x28); + if (__ptr == (byte *)0x0) { + return -0xb; + } + uVar11 = 9; + pcVar5 = "short config descriptor read %d/%d"; + uVar10 = param_3; + if (8 < (int)param_3) { + FUN_00122b20(param_2,"bbwbbbbb",__ptr,param_4,param_3,9); + uVar10 = (uint)__ptr[1]; + if (__ptr[1] == 2) { + bVar2 = *__ptr; + uVar7 = (ulong)bVar2; + if (bVar2 < 9) { + pcVar5 = "invalid config bLength (%d)"; + } + else { + uVar11 = (uint)bVar2; + if ((int)param_3 < (int)(uint)bVar2) { + pcVar5 = "short config descriptor read %d/%d"; + uVar10 = param_3; + goto LAB_0012352f; + } + bVar2 = __ptr[4]; + if (bVar2 < 0x21) { + local_d8 = calloc((ulong)bVar2,0x10); + *(undefined8 **)(__ptr + 0x10) = local_d8; + if (local_d8 == (undefined8 *)0x0) { + iVar14 = -0xb; + } + else { + pvVar8 = (void *)(uVar7 + param_2); + __ptr[0x18] = 0; + __ptr[0x19] = 0; + __ptr[0x1a] = 0; + __ptr[0x1b] = 0; + __ptr[0x1c] = 0; + __ptr[0x1d] = 0; + __ptr[0x1e] = 0; + __ptr[0x1f] = 0; + iVar14 = param_3 - uVar11; + __ptr[0x20] = 0; + __ptr[0x21] = 0; + __ptr[0x22] = 0; + __ptr[0x23] = 0; + if (bVar2 != 0) { + local_80 = 0; + do { + pvVar12 = pvVar8; + if (1 < iVar14) { + do { + FUN_00122b20(pvVar12,"bb",&local_68,0); + if (local_68 < 2) { + iVar14 = -1; + FUN_00120cd0(param_1,1,"parse_configuration", + "invalid extra config desc len (%d)"); + goto LAB_00122e2c; + } + if (iVar14 < (int)(uint)local_68) { + FUN_00120cd0(param_1,2,"parse_configuration", + "short extra config desc read %d/%d",iVar14,(uint)local_68); + __ptr[4] = (byte)local_80; + goto LAB_00123143; + } + if (((byte)(local_67 - 4U) < 2) || ((byte)(local_67 - 1U) < 2)) break; + FUN_00120cd0(0,4,"parse_configuration"); + iVar14 = iVar14 - (uint)local_68; + pvVar12 = (void *)((long)pvVar12 + (ulong)local_68); + } while (1 < iVar14); + iVar9 = (int)pvVar12 - (int)pvVar8; + if ((iVar9 != 0) && (*(int *)(__ptr + 0x20) == 0)) { + pvVar3 = malloc((long)iVar9); + *(void **)(__ptr + 0x18) = pvVar3; + if (pvVar3 == (void *)0x0) { + iVar14 = -0xb; +LAB_00122e2c: + FUN_00122ac0(__ptr); + goto LAB_00122e36; + } + memcpy(pvVar3,pvVar8,(long)iVar9); + *(int *)(__ptr + 0x20) = iVar9; + } + } + *(undefined4 *)(local_d8 + 1) = 0; + if (iVar14 < 9) { +LAB_00123617: + __ptr[4] = (byte)local_80; + break; + } + iVar9 = 0; + local_a8 = 0xffffffff; + local_ac = 0; + pvVar8 = pvVar12; + iVar13 = iVar14; +LAB_00122ef9: + pvVar3 = (void *)*local_d8; + pvVar4 = realloc(pvVar3,(long)(iVar9 + 1) * 0x28); + if (pvVar4 == (void *)0x0) { + iVar14 = -0xb; + free(pvVar3); +LAB_0012306a: + FUN_00122a10(local_d8); + goto LAB_00122e2c; + } + *local_d8 = pvVar4; + pbVar1 = (byte *)((long)pvVar4 + (long)*(int *)(local_d8 + 1) * 0x28); + FUN_00122b20(pvVar8,"bbbbbbbbb",pbVar1,0); + if (pbVar1[1] != 4) { + FUN_00120cd0(param_1,1,"parse_interface","unexpected descriptor %x (expected %x)", + pbVar1[1],4); + goto LAB_001231af; + } + bVar2 = *pbVar1; + uVar7 = (ulong)bVar2; + if (bVar2 < 9) { + pcVar5 = "invalid interface bLength (%d)"; +LAB_0012304d: + pcVar6 = "parse_interface"; +LAB_00123054: + iVar14 = -1; + FUN_00120cd0(param_1,1,pcVar6,pcVar5,uVar7); + goto LAB_0012306a; + } + if ((int)(uint)bVar2 <= iVar13) { + uVar7 = (ulong)pbVar1[4]; + if (0x20 < pbVar1[4]) { + pcVar5 = "too many endpoints (%d)"; + goto LAB_0012304d; + } + *(int *)(local_d8 + 1) = *(int *)(local_d8 + 1) + 1; + pbVar1[0x18] = 0; + pbVar1[0x19] = 0; + pbVar1[0x1a] = 0; + pbVar1[0x1b] = 0; + pbVar1[0x1c] = 0; + pbVar1[0x1d] = 0; + pbVar1[0x1e] = 0; + pbVar1[0x1f] = 0; + pbVar1[0x20] = 0; + pbVar1[0x21] = 0; + pbVar1[0x22] = 0; + pbVar1[0x23] = 0; + pbVar1[0x10] = 0; + pbVar1[0x11] = 0; + pbVar1[0x12] = 0; + pbVar1[0x13] = 0; + pbVar1[0x14] = 0; + pbVar1[0x15] = 0; + pbVar1[0x16] = 0; + pbVar1[0x17] = 0; + if (local_a8 == 0xffffffff) { + local_a8 = (uint)pbVar1[2]; + } + bVar2 = *pbVar1; + iVar13 = iVar13 - (uint)bVar2; + local_ac = local_ac + (uint)bVar2; + pvVar3 = (void *)((ulong)bVar2 + (long)pvVar8); + pvVar8 = pvVar3; + if (1 < iVar13) { + do { + FUN_00122b20(pvVar8,"bb",&local_58,0); + uVar7 = (ulong)local_58; + if (local_58 < 2) { + pcVar5 = "invalid extra intf desc len (%d)"; + goto LAB_0012304d; + } + uVar10 = (uint)local_58; + if (iVar13 < (int)uVar10) { + pcVar5 = "short extra intf desc read %d/%d"; + goto LAB_00123197; + } + if (((byte)(local_57 - 4U) < 2) || ((byte)(local_57 - 1U) < 2)) break; + iVar13 = iVar13 - uVar10; + pvVar8 = (void *)((long)pvVar8 + uVar7); + local_ac = local_ac + uVar10; + } while (1 < iVar13); + iVar9 = (int)pvVar8 - (int)pvVar3; + if (iVar9 == 0) goto LAB_001230bc; + pvVar4 = malloc((long)iVar9); + *(void **)(pbVar1 + 0x18) = pvVar4; + if (pvVar4 != (void *)0x0) { + memcpy(pvVar4,pvVar3,(long)iVar9); + *(int *)(pbVar1 + 0x20) = iVar9; + goto LAB_001230bc; + } +LAB_00123656: + iVar14 = -0xb; + goto LAB_0012306a; + } +LAB_001230bc: + if (pbVar1[4] != 0) { + local_c0 = calloc((ulong)pbVar1[4],0x20); + *(void **)(pbVar1 + 0x10) = local_c0; + if (local_c0 == (void *)0x0) goto LAB_00123656; + if (iVar13 < 2) { +LAB_00123419: + iVar14 = -1; + FUN_00120cd0(param_1,1,"parse_endpoint","short endpoint descriptor read %d/%d" + ,iVar13,2); + goto LAB_0012306a; + } + local_b0 = 0; + while( true ) { + local_c8 = (void *)((long)local_c0 + 0x20); + FUN_00122b20(pvVar8,"bb",&local_48,0); + if (local_47 != '\x05') break; + uVar10 = (uint)local_48; + if (iVar13 < (int)uVar10) { + FUN_00120cd0(param_1,2,"parse_endpoint", + "short endpoint descriptor read %d/%d",iVar13); + goto LAB_0012339a; + } + if (local_48 < 9) { + if (local_48 < 7) { + pcVar5 = "invalid endpoint bLength (%d)"; +LAB_00123364: + uVar7 = (ulong)uVar10; + pcVar6 = "parse_endpoint"; + goto LAB_00123054; + } + FUN_00122b20(pvVar8,&DAT_0013317f,local_c0,param_4); + } + else { + FUN_00122b20(pvVar8,"bbbbwbbb",local_c0,param_4); + } + uVar7 = (ulong)local_48; + uVar11 = (uint)local_48; + iVar9 = iVar13 - (uint)local_48; + pvVar4 = (void *)(uVar7 + (long)pvVar8); + pvVar3 = pvVar4; + if (iVar9 < 2) { +LAB_001233bc: + *(undefined8 *)((long)local_c0 + 0x10) = 0; + *(undefined4 *)((long)local_c0 + 0x18) = 0; + } + else { + do { + uVar11 = (uint)uVar7; + FUN_00122b20(pvVar3,"bb",&local_48,0); + uVar10 = (uint)local_48; + if (local_48 < 2) { + pcVar5 = "invalid extra ep desc len (%d)"; + goto LAB_00123364; + } + if (iVar9 < (int)uVar10) { + FUN_00120cd0(param_1,2,"parse_endpoint","short extra ep desc read %d/%d" + ,iVar9,uVar10); + goto LAB_001233d0; + } + if (((byte)(local_47 - 4U) < 2) || ((byte)(local_47 - 1U) < 2)) break; + FUN_00120cd0(0,4,"parse_endpoint"); + iVar9 = iVar9 - (uint)local_48; + uVar11 = uVar11 + local_48; + uVar7 = (ulong)uVar11; + pvVar3 = (void *)((long)pvVar3 + (ulong)local_48); + } while (1 < iVar9); + local_a0 = (int)pvVar4; + local_a0 = (int)pvVar3 - local_a0; + if (local_a0 == 0) goto LAB_001233bc; + pvVar3 = malloc((long)local_a0); + *(void **)((long)local_c0 + 0x10) = pvVar3; + if (pvVar3 == (void *)0x0) { + *(undefined4 *)((long)local_c0 + 0x18) = 0; + iVar14 = -0xb; + goto LAB_0012306a; + } + memcpy(pvVar3,pvVar4,(long)local_a0); + *(int *)((long)local_c0 + 0x18) = local_a0; + } +LAB_001233d0: + if (uVar11 == 0) goto LAB_0012339a; + local_b0 = local_b0 + 1; + local_ac = local_ac + uVar11; + pvVar8 = (void *)((long)pvVar8 + (long)(int)uVar11); + iVar13 = iVar13 - uVar11; + if ((int)(uint)pbVar1[4] <= local_b0) goto LAB_001230cd; + local_c0 = local_c8; + if (iVar13 < 2) goto LAB_00123419; + } + FUN_00120cd0(param_1,1,"parse_endpoint","unexpected descriptor %x (expected %x)" + ,local_47,5); +LAB_0012339a: + pbVar1[4] = (byte)local_b0; + } +LAB_001230cd: + if (((iVar13 < 9) || (*(char *)((long)pvVar8 + 1) != '\x04')) || + (*(byte *)((long)pvVar8 + 2) != local_a8)) goto LAB_001231af; + iVar9 = *(int *)(local_d8 + 1); + goto LAB_00122ef9; + } + uVar7 = (ulong)(uint)bVar2; + pcVar5 = "short intf descriptor read %d/%d"; +LAB_00123197: + FUN_00120cd0(param_1,2,"parse_interface",pcVar5,iVar13,uVar7); +LAB_001231af: + if (local_ac == 0) goto LAB_00123617; + local_80 = local_80 + 1; + iVar14 = iVar14 - local_ac; + pvVar8 = (void *)((long)local_ac + (long)pvVar12); + local_d8 = local_d8 + 2; + } while (local_80 < (int)(uint)__ptr[4]); + } + if (-1 < iVar14) { +LAB_00123143: + if (iVar14 != 0) { + FUN_00120cd0(param_1,2,"raw_desc_to_config","still %d bytes of descriptor data left" + ,iVar14); + } + *param_5 = __ptr; + return 0; + } + } + goto LAB_00122e36; + } + pcVar5 = "too many interfaces (%d)"; + } + iVar14 = -1; + FUN_00120cd0(param_1,1,"parse_configuration",pcVar5,bVar2); + goto LAB_00122e36; + } + pcVar5 = "unexpected descriptor %x (expected %x)"; + uVar11 = 2; + } +LAB_0012352f: + iVar14 = -1; + FUN_00120cd0(param_1,1,"parse_configuration",pcVar5,uVar10,uVar11); +LAB_00122e36: + FUN_00120cd0(param_1,1,"raw_desc_to_config","parse_configuration failed with error %d",iVar14); + free(__ptr); + return iVar14; +} + + +================================================================== + +### FUNC 00123690 (162 bytes) name=FUN_00123690 + +int FUN_00123690(long param_1) + +{ + int iVar1; + int local_c; + + local_c = 0; + iVar1 = (**(code **)(PTR_PTR_0033ed80 + 0x48))(param_1,param_1 + 0x68,&local_c); + if (-1 < iVar1) { + if (local_c == 0) { + *(undefined2 *)(param_1 + 0x6a) = *(undefined2 *)(param_1 + 0x6a); + *(undefined2 *)(param_1 + 0x70) = *(undefined2 *)(param_1 + 0x70); + *(undefined2 *)(param_1 + 0x72) = *(undefined2 *)(param_1 + 0x72); + *(undefined2 *)(param_1 + 0x74) = *(undefined2 *)(param_1 + 0x74); + } + return 0; + } + return iVar1; +} + + +================================================================== + +### FUNC 00123740 (72 bytes) name=libusb_get_device_descriptor + +undefined8 libusb_get_device_descriptor(long param_1,undefined8 *param_2) + +{ + FUN_00120cd0(0,4,"libusb_get_device_descriptor",&DAT_00131fd1); + *param_2 = *(undefined8 *)(param_1 + 0x68); + param_2[1] = *(undefined8 *)(param_1 + 0x70); + *(undefined2 *)(param_2 + 2) = *(undefined2 *)(param_1 + 0x78); + return 0; +} + + +================================================================== + +### FUNC 00123790 (291 bytes) name=libusb_get_active_config_descriptor + +ulong libusb_get_active_config_descriptor(long param_1,undefined8 param_2) + +{ + undefined *puVar1; + uint uVar2; + ulong uVar3; + void *__ptr; + long in_FS_OFFSET; + undefined4 local_8c; + undefined1 local_88 [2]; + ushort local_86; + undefined1 local_58 [24]; + long local_40; + + puVar1 = PTR_PTR_0033ed80; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + local_8c = 0; + uVar3 = (**(code **)(PTR_PTR_0033ed80 + 0x50))(param_1,local_58,9,&local_8c); + if (-1 < (int)uVar3) { + if ((int)uVar3 < 9) { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_active_config_descriptor", + "short config descriptor read %d/%d",uVar3 & 0xffffffff,9); + uVar3 = 0xffffffff; + } + else { + FUN_00122b20(local_58,&DAT_001331f6,local_88,local_8c); + __ptr = malloc((ulong)local_86); + if (__ptr == (void *)0x0) { + uVar3 = 0xfffffff5; + } + else { + uVar2 = (**(code **)(puVar1 + 0x50))(param_1,__ptr,(ulong)local_86,&local_8c); + if (-1 < (int)uVar2) { + uVar2 = FUN_00122c40(*(undefined8 *)(param_1 + 0x30),__ptr,uVar2,local_8c,param_2); + } + uVar3 = (ulong)uVar2; + free(__ptr); + } + } + } + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar3; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001238c0 (350 bytes) name=libusb_get_config_descriptor + +ulong libusb_get_config_descriptor(long param_1,byte param_2,undefined8 param_3) + +{ + undefined *puVar1; + uint uVar2; + ulong uVar3; + void *__ptr; + long in_FS_OFFSET; + undefined4 local_8c; + undefined1 local_88 [2]; + ushort local_86; + undefined1 local_58 [24]; + long local_40; + + local_40 = *(long *)(in_FS_OFFSET + 0x28); + local_8c = 0; + FUN_00120cd0(0,4,"libusb_get_config_descriptor","index %d",param_2); + puVar1 = PTR_PTR_0033ed80; + uVar3 = 0xfffffffb; + if (param_2 < *(byte *)(param_1 + 0x49)) { + uVar3 = (**(code **)(PTR_PTR_0033ed80 + 0x58))(param_1,param_2,local_58,9,&local_8c); + if (-1 < (int)uVar3) { + if ((int)uVar3 < 9) { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"libusb_get_config_descriptor", + "short config descriptor read %d/%d",uVar3 & 0xffffffff,9); + uVar3 = 0xffffffff; + } + else { + FUN_00122b20(local_58,&DAT_001331f6,local_88,local_8c); + __ptr = malloc((ulong)local_86); + if (__ptr == (void *)0x0) { + uVar3 = 0xfffffff5; + } + else { + uVar2 = (**(code **)(puVar1 + 0x58))(param_1,param_2,__ptr,(ulong)local_86,&local_8c); + if (-1 < (int)uVar2) { + uVar2 = FUN_00122c40(*(undefined8 *)(param_1 + 0x30),__ptr,uVar2,local_8c,param_3); + } + uVar3 = (ulong)uVar2; + free(__ptr); + } + } + } + } + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar3; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00123a30 (229 bytes) name=FUN_00123a30 + +undefined8 FUN_00123a30(long param_1,char param_2,uint *param_3) + +{ + undefined *puVar1; + undefined8 uVar2; + byte bVar3; + long in_FS_OFFSET; + undefined1 local_4c [4]; + undefined1 local_48 [5]; + char local_43; + long local_40; + + local_40 = *(long *)(in_FS_OFFSET + 0x28); + FUN_00120cd0(0,4,"usbi_get_config_index_by_value","value %d",param_2); + puVar1 = PTR_PTR_0033ed80; + if (*(char *)(param_1 + 0x49) != '\0') { + bVar3 = 0; + do { + uVar2 = (**(code **)(puVar1 + 0x58))(param_1,(uint)bVar3,local_48,6,local_4c); + if ((int)uVar2 < 0) { + *param_3 = 0xffffffff; + goto LAB_00123ad9; + } + if (local_43 == param_2) { + *param_3 = (uint)bVar3; + uVar2 = 0; + goto LAB_00123ad9; + } + bVar3 = bVar3 + 1; + } while (bVar3 < *(byte *)(param_1 + 0x49)); + } + *param_3 = 0xffffffff; + uVar2 = 0; +LAB_00123ad9: + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00123b20 (146 bytes) name=libusb_get_config_descriptor_by_value + +ulong libusb_get_config_descriptor_by_value(long param_1,undefined1 param_2,undefined8 param_3) + +{ + ulong uVar1; + uint local_24; + undefined8 local_20 [2]; + + local_20[0] = 0; + if (*(code **)(PTR_PTR_0033ed80 + 0x60) == (code *)0x0) { + uVar1 = FUN_00123a30(param_1,param_2,&local_24); + if (-1 < (int)uVar1) { + if (local_24 != 0xffffffff) { + uVar1 = libusb_get_config_descriptor(param_1,local_24 & 0xff,param_3); + return uVar1; + } + uVar1 = 0xfffffffb; + } + } + else { + uVar1 = (**(code **)(PTR_PTR_0033ed80 + 0x60))(param_1,param_2,local_20,&local_24); + if (-1 < (int)uVar1) { + uVar1 = FUN_00122c40(*(undefined8 *)(param_1 + 0x30),local_20[0],uVar1 & 0xffffffff,local_24, + param_3); + } + } + return uVar1; +} + + +================================================================== + +### FUNC 00123bc0 (25 bytes) name=libusb_free_config_descriptor + +void libusb_free_config_descriptor(void *param_1) + +{ + if (param_1 != (void *)0x0) { + FUN_00122ac0(); + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 00123bf0 (223 bytes) name=libusb_get_ss_endpoint_companion_descriptor + +undefined8 +libusb_get_ss_endpoint_companion_descriptor(undefined8 param_1,long param_2,undefined8 *param_3) + +{ + void *pvVar1; + char *pcVar2; + int iVar3; + long lVar4; + byte local_38; + char local_37; + + iVar3 = *(int *)(param_2 + 0x18); + lVar4 = *(long *)(param_2 + 0x10); + *param_3 = 0; + while( true ) { + if (iVar3 < 2) { + return 0xfffffffb; + } + FUN_00122b20(lVar4,"bb",&local_38,0); + if ((local_38 < 2) || (iVar3 < (int)(uint)local_38)) break; + if (local_37 == '0') { + if (5 < local_38) { + pvVar1 = malloc(6); + *param_3 = pvVar1; + if (pvVar1 != (void *)0x0) { + FUN_00122b20(lVar4,&DAT_001331f4,pvVar1,0); + return 0; + } + return 0xfffffff5; + } + pcVar2 = "invalid ss-ep-comp-desc length %d"; + goto LAB_00123ca7; + } + iVar3 = iVar3 - (uint)local_38; + lVar4 = lVar4 + (ulong)local_38; + } + pcVar2 = "invalid descriptor length %d"; +LAB_00123ca7: + FUN_00120cd0(param_1,1,"libusb_get_ss_endpoint_companion_descriptor",pcVar2); + return 0xffffffff; +} + + +================================================================== + +### FUNC 00123ce0 (5 bytes) name=libusb_free_ss_endpoint_companion_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_ss_endpoint_companion_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_0033f1e0)(); + return; +} + + +================================================================== + +### FUNC 00123cf0 (77 bytes) name=libusb_free_bos_descriptor + +void libusb_free_bos_descriptor(void *param_1) + +{ + long lVar1; + int iVar2; + + if (param_1 == (void *)0x0) { + return; + } + iVar2 = 0; + if (*(char *)((long)param_1 + 4) != '\0') { + do { + lVar1 = (long)iVar2; + iVar2 = iVar2 + 1; + free(*(void **)((long)param_1 + lVar1 * 8 + 8)); + } while (iVar2 < (int)(uint)*(byte *)((long)param_1 + 4)); + } + free(param_1); + return; +} + + +================================================================== + +### FUNC 00123d50 (1119 bytes) name=libusb_get_bos_descriptor + +uint libusb_get_bos_descriptor(long param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + uint uVar2; + void *__ptr; + void *pvVar3; + void *__dest; + char *pcVar4; + uint uVar5; + byte bVar6; + void *__src; + ulong __size; + uint uVar7; + long in_FS_OFFSET; + undefined1 local_78 [2]; + ushort local_76; + undefined1 local_74; + byte local_68; + byte local_67; + byte local_64; + byte local_58; + byte local_57; + undefined4 local_48; + undefined1 local_44; + long local_40; + + local_48 = 0; + local_44 = 0; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + uVar2 = libusb_control_transfer(param_1,0x80,6,0xf00,0,&local_48,5,1000); + if ((int)uVar2 < 0) { + if (uVar2 != 0xfffffff7) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_bos_descriptor", + "failed to read BOS (%d)",uVar2); + } + goto LAB_00123ff6; + } + if ((int)uVar2 < 5) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_bos_descriptor", + "short BOS read %d/%d",uVar2,5); + uVar2 = 0xffffffff; + goto LAB_00123ff6; + } + FUN_00122b20(&local_48,&DAT_00133181,local_78,0); + FUN_00120cd0(0,4,"libusb_get_bos_descriptor", + "found BOS descriptor: size %d bytes, %d capabilities",local_76,local_74); + __ptr = calloc((ulong)local_76,1); + if (__ptr == (void *)0x0) { + uVar2 = 0xfffffff5; + goto LAB_00123ff6; + } + uVar2 = libusb_control_transfer(param_1,0x80,6,0xf00,0,__ptr,local_76,1000); + if ((int)uVar2 < 0) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"libusb_get_bos_descriptor", + "failed to read BOS (%d)",uVar2); + } + else { + uVar1 = *(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30); + if ((int)uVar2 < 5) { + FUN_00120cd0(uVar1,1,"parse_bos","short bos descriptor read %d/%d",uVar2,5); + uVar2 = 0xffffffff; + } + else { + FUN_00122b20(__ptr,&DAT_00133181,&local_68,0); + pcVar4 = "unexpected descriptor %x (expected %x)"; + bVar6 = 0xf; + uVar5 = (uint)local_67; + if (local_67 == 0xf) { + if (local_68 < 5) { + FUN_00120cd0(uVar1,1,"parse_bos","invalid bos bLength (%d)",local_68,0xf); + uVar2 = 0xffffffff; + } + else { + if ((int)uVar2 < (int)(uint)local_68) { + pcVar4 = "short bos descriptor read %d/%d"; + bVar6 = local_68; + uVar5 = uVar2; + goto LAB_00124134; + } + pvVar3 = calloc(1,(ulong)local_64 * 8 + 8); + if (pvVar3 == (void *)0x0) { + uVar2 = 0xfffffff5; + } + else { + FUN_00122b20(__ptr,&DAT_00133181,pvVar3,0); + uVar5 = (uint)local_64; + uVar2 = uVar2 - local_68; + __src = (void *)((ulong)local_68 + (long)__ptr); + if (local_64 != 0) { + if ((int)uVar2 < 3) { + uVar5 = 0; + } + else { + uVar5 = 0; + do { + FUN_00122b20(__src,"bbb",&local_58,0); + bVar6 = local_58; + if (local_57 != 0x10) { + pcVar4 = "unexpected descriptor %x (expected %x)"; + uVar7 = 0x10; + uVar2 = (uint)local_57; + goto LAB_00123fc6; + } + if (local_58 < 3) { + FUN_00120cd0(uVar1,1,"parse_bos","invalid dev-cap bLength (%d)"); + libusb_free_bos_descriptor(pvVar3); + uVar2 = 0xffffffff; + goto LAB_00123fec; + } + uVar7 = (uint)local_58; + if ((int)uVar2 < (int)uVar7) { + pcVar4 = "short dev-cap descriptor read %d/%d"; + goto LAB_00123fc6; + } + __size = (ulong)local_58; + __dest = malloc(__size); + *(void **)((long)pvVar3 + (long)(int)uVar5 * 8 + 8) = __dest; + if (__dest == (void *)0x0) { + libusb_free_bos_descriptor(pvVar3); + uVar2 = 0xfffffff5; + goto LAB_00123fec; + } + memcpy(__dest,__src,__size); + uVar5 = uVar5 + 1; + __src = (void *)((long)__src + __size); + uVar2 = uVar2 - bVar6; + if ((int)(uint)local_64 <= (int)uVar5) goto LAB_00123fde; + } while (2 < (int)uVar2); + } + uVar7 = 3; + pcVar4 = "short dev-cap descriptor read %d/%d"; +LAB_00123fc6: + FUN_00120cd0(uVar1,2,"parse_bos",pcVar4,uVar2,uVar7); + } +LAB_00123fde: + *(char *)((long)pvVar3 + 4) = (char)uVar5; + *param_2 = pvVar3; + uVar2 = 0; + } + } + } + else { +LAB_00124134: + FUN_00120cd0(uVar1,1,"parse_bos",pcVar4,uVar5,bVar6); + uVar2 = 0xffffffff; + } + } + } +LAB_00123fec: + free(__ptr); +LAB_00123ff6: + if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001241d0 (165 bytes) name=libusb_get_usb_2_0_extension_descriptor + +undefined8 +libusb_get_usb_2_0_extension_descriptor(undefined8 param_1,byte *param_2,undefined8 *param_3) + +{ + void *pvVar1; + undefined8 uVar2; + + if (param_2[2] == 2) { + if (*param_2 < 7) { + FUN_00120cd0(param_1,1,"libusb_get_usb_2_0_extension_descriptor", + "short dev-cap descriptor read %d/%d",*param_2,7); + uVar2 = 0xffffffff; + } + else { + pvVar1 = malloc(8); + if (pvVar1 == (void *)0x0) { + uVar2 = 0xfffffff5; + } + else { + FUN_00122b20(param_2,&DAT_0013325d,pvVar1,0); + *param_3 = pvVar1; + uVar2 = 0; + } + } + } + else { + FUN_00120cd0(param_1,1,"libusb_get_usb_2_0_extension_descriptor", + "unexpected bDevCapabilityType %x (expected %x)",param_2[2],2); + uVar2 = 0xfffffffe; + } + return uVar2; +} + + +================================================================== + +### FUNC 00124290 (5 bytes) name=libusb_free_usb_2_0_extension_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_usb_2_0_extension_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_0033f1e0)(); + return; +} + + +================================================================== + +### FUNC 001242a0 (165 bytes) name=libusb_get_ss_usb_device_capability_descriptor + +undefined8 +libusb_get_ss_usb_device_capability_descriptor(undefined8 param_1,byte *param_2,undefined8 *param_3) + +{ + void *pvVar1; + undefined8 uVar2; + + if (param_2[2] == 3) { + if (*param_2 < 10) { + FUN_00120cd0(param_1,1,"libusb_get_ss_usb_device_capability_descriptor", + "short dev-cap descriptor read %d/%d",*param_2,10); + uVar2 = 0xffffffff; + } + else { + pvVar1 = malloc(10); + if (pvVar1 == (void *)0x0) { + uVar2 = 0xfffffff5; + } + else { + FUN_00122b20(param_2,"bbbbwbbw",pvVar1,0); + *param_3 = pvVar1; + uVar2 = 0; + } + } + } + else { + FUN_00120cd0(param_1,1,"libusb_get_ss_usb_device_capability_descriptor", + "unexpected bDevCapabilityType %x (expected %x)",param_2[2],3); + uVar2 = 0xfffffffe; + } + return uVar2; +} + + +================================================================== + +### FUNC 00124360 (5 bytes) name=libusb_free_ss_usb_device_capability_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_ss_usb_device_capability_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_0033f1e0)(); + return; +} + + +================================================================== + +### FUNC 00124370 (165 bytes) name=libusb_get_container_id_descriptor + +undefined8 libusb_get_container_id_descriptor(undefined8 param_1,byte *param_2,undefined8 *param_3) + +{ + void *pvVar1; + undefined8 uVar2; + + if (param_2[2] == 4) { + if (*param_2 < 0x14) { + FUN_00120cd0(param_1,1,"libusb_get_container_id_descriptor", + "short dev-cap descriptor read %d/%d",*param_2,0x14); + uVar2 = 0xffffffff; + } + else { + pvVar1 = malloc(0x14); + if (pvVar1 == (void *)0x0) { + uVar2 = 0xfffffff5; + } + else { + FUN_00122b20(param_2,"bbbbu",pvVar1,0); + *param_3 = pvVar1; + uVar2 = 0; + } + } + } + else { + FUN_00120cd0(param_1,1,"libusb_get_container_id_descriptor", + "unexpected bDevCapabilityType %x (expected %x)",param_2[2],4); + uVar2 = 0xfffffffe; + } + return uVar2; +} + + +================================================================== + +### FUNC 00124430 (5 bytes) name=libusb_free_container_id_descriptor + +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void libusb_free_container_id_descriptor(void *__ptr) + +{ + (*(code *)PTR_free_0033f1e0)(); + return; +} + + +================================================================== + +### FUNC 00124440 (367 bytes) name=libusb_get_string_descriptor_ascii + +ulong libusb_get_string_descriptor_ascii(undefined8 param_1,char param_2,long param_3,int param_4) + +{ + uint uVar1; + ulong uVar2; + ulong uVar3; + ulong uVar4; + uint uVar5; + long lVar6; + long in_FS_OFFSET; + byte local_138; + char local_137; + char local_136 [262]; + long local_30; + + local_30 = *(long *)(in_FS_OFFSET + 0x28); + uVar2 = 0xfffffffe; + if (param_2 != '\0') { + uVar2 = libusb_control_transfer(param_1,0x80,6,0x300,0,&local_138,0xff,1000); + if (-1 < (int)uVar2) { + if (3 < (int)uVar2) { + uVar2 = libusb_control_transfer + (param_1,0x80,6,CONCAT11(3,param_2),CONCAT11(local_136[1],local_136[0]), + &local_138,0xff,1000); + if ((int)uVar2 < 0) goto LAB_0012457b; + if (local_137 == '\x03') { + if ((int)(uint)local_138 <= (int)uVar2) { + if ((local_138 < 3) || (param_4 + -1 < 1)) { + lVar6 = 0; + uVar2 = 0; + } + else { + uVar4 = 0; + uVar3 = (ulong)(local_138 - 3 >> 1); + uVar1 = 1; + do { + uVar5 = uVar1; + uVar2 = (ulong)uVar5; + if ((-1 < local_136[uVar4 * 2]) && (local_136[uVar4 * 2 + 1] == '\0')) { + *(char *)(param_3 + uVar4) = local_136[uVar4 * 2]; + if (uVar4 != uVar3) goto LAB_0012454a; +LAB_00124573: + lVar6 = (long)(int)uVar5; + goto LAB_00124576; + } + *(undefined1 *)(param_3 + uVar4) = 0x3f; + if (uVar4 == uVar3) goto LAB_00124573; +LAB_0012454a: + uVar4 = uVar4 + 1; + uVar1 = uVar5 + 1; + } while ((int)uVar5 < param_4 + -1); + lVar6 = (long)(int)uVar5; + } +LAB_00124576: + *(undefined1 *)(param_3 + lVar6) = 0; + goto LAB_0012457b; + } + } + } + uVar2 = 0xffffffff; + } + } +LAB_0012457b: + if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001245c0 (93 bytes) name=FUN_001245c0 + +undefined8 FUN_001245c0(undefined8 param_1,long param_2,uint param_3,long param_4) + +{ + undefined8 uVar1; + + if (*(int *)(param_4 + 0x38) != 0) { + return 1; + } + if (((((*(uint *)(param_4 + 0x18) & param_3) != 0) && + ((*(uint *)(param_4 + 8) == 0xffffffff || + (*(uint *)(param_4 + 8) == (uint)*(ushort *)(param_2 + 0x70))))) && + ((*(uint *)(param_4 + 0xc) == 0xffffffff || + (*(uint *)(param_4 + 0xc) == (uint)*(ushort *)(param_2 + 0x72))))) && + ((*(uint *)(param_4 + 0x10) == 0xffffffff || + (*(uint *)(param_4 + 0x10) == (uint)*(byte *)(param_2 + 0x6c))))) { + /* WARNING: Could not recover jumptable at 0x0012461b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar1 = (**(code **)(param_4 + 0x20))(); + return uVar1; + } + return 0; +} + + +================================================================== + +### FUNC 00124630 (208 bytes) name=FUN_00124630 + +void FUN_00124630(long param_1,undefined8 param_2,undefined4 param_3) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + long *plVar2; + long *plVar3; + int iVar4; + + __mutex = (pthread_mutex_t *)(param_1 + 0x90); + pthread_mutex_lock(__mutex); + plVar2 = (long *)(*(long **)(param_1 + 0x88))[1]; + plVar1 = *(long **)(param_1 + 0x88); + while (plVar3 = plVar2, (long *)(param_1 + 0x80) != plVar1) { + pthread_mutex_unlock(__mutex); + iVar4 = FUN_001245c0(param_1,param_2,param_3,plVar1 + -8); + pthread_mutex_lock(__mutex); + if (iVar4 != 0) { + plVar2 = (long *)plVar1[1]; + *plVar2 = *plVar1; + *(long **)(*plVar1 + 8) = plVar2; + *plVar1 = 0; + plVar1[1] = 0; + free(plVar1 + -8); + } + plVar2 = (long *)plVar3[1]; + plVar1 = plVar3; + } + pthread_mutex_unlock(__mutex); + return; +} + + +================================================================== + +### FUNC 00124710 (261 bytes) name=FUN_00124710 + +void FUN_00124710(long param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + puVar1 = calloc(1,0x20); + if (puVar1 != (undefined4 *)0x0) { + *(undefined8 *)(puVar1 + 2) = param_2; + *puVar1 = param_3; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + if (((*(long *)(param_1 + 0x1b8) == 0) && (*(long *)(param_1 + 0x1e8) == param_1 + 0x1e0)) && + (*(long *)(param_1 + 0x1f8) == param_1 + 0x1f0)) { + *(long *)(puVar1 + 6) = *(long *)(param_1 + 0x1e8); + *(undefined8 *)(puVar1 + 4) = *(undefined8 *)(param_1 + 0x1e0); + *(undefined4 **)(*(long *)(param_1 + 0x1e0) + 8) = puVar1 + 4; + *(undefined4 **)(param_1 + 0x1e0) = puVar1 + 4; + FUN_00121360(param_1); + } + else { + *(long *)(puVar1 + 6) = param_1 + 0x1e0; + *(undefined8 *)(puVar1 + 4) = *(undefined8 *)(param_1 + 0x1e0); + *(undefined4 **)(*(long *)(param_1 + 0x1e0) + 8) = puVar1 + 4; + *(undefined4 **)(param_1 + 0x1e0) = puVar1 + 4; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + return; + } + FUN_00120cd0(param_1,1,"usbi_hotplug_notification","error allocating hotplug message"); + return; +} + + +================================================================== + +### FUNC 00124820 (150 bytes) name=libusb_hotplug_deregister_callback + +void libusb_hotplug_deregister_callback(long param_1,int param_2) + +{ + long lVar1; + long lVar2; + int iVar3; + + iVar3 = libusb_has_capability(1); + if (iVar3 == 0) { + return; + } + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x90)); + lVar1 = *(long *)(param_1 + 0x88); + while (lVar2 = lVar1, param_1 + 0x80 != lVar1) { + while (*(int *)(lVar2 + -0x18) != param_2) { + lVar2 = *(long *)(lVar2 + 8); + if (param_1 + 0x80 == lVar2) goto LAB_0012488e; + } + lVar1 = *(long *)(lVar2 + 8); + *(undefined4 *)(lVar2 + -8) = 1; + } +LAB_0012488e: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x90)); + FUN_00124710(param_1,0,0); + return; +} + + +================================================================== + +### FUNC 001248d0 (510 bytes) name=libusb_hotplug_register_callback + +undefined8 +libusb_hotplug_register_callback + (long param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,uint param_6, + long param_7,long param_8,undefined4 *param_9) + +{ + undefined8 *puVar1; + int iVar2; + long *plVar3; + undefined8 uVar4; + long lVar5; + long local_40 [2]; + + iVar2 = libusb_has_capability(1); + if (iVar2 == 0) { + uVar4 = 0xfffffff4; + } + else if ((((param_4 == 0xffffffff) || ((param_4 & 0xffff0000) == 0)) && + ((param_5 == 0xffffffff || ((param_5 & 0xffff0000) == 0)))) && + (((param_6 == 0xffffffff || ((param_6 & 0xffffff00) == 0)) && (param_7 != 0)))) { + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + plVar3 = calloc(1,0x50); + if (plVar3 == (long *)0x0) { + uVar4 = 0xfffffff5; + } + else { + *(uint *)((long)plVar3 + 0xc) = param_5; + *(uint *)((long)plVar3 + 0x14) = param_3; + *plVar3 = param_1; + *(uint *)(plVar3 + 1) = param_4; + *(uint *)(plVar3 + 2) = param_6; + *(undefined4 *)(plVar3 + 7) = 0; + *(undefined4 *)(plVar3 + 3) = param_2; + plVar3[4] = param_7; + plVar3[6] = param_8; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x90)); + *(int *)(plVar3 + 5) = DAT_0033f5e8; + DAT_0033f5e8 = DAT_0033f5e8 + 1; + plVar3[9] = *(long *)(param_1 + 0x88); + plVar3[8] = param_1 + 0x80; + **(long **)(param_1 + 0x88) = (long)(plVar3 + 8); + *(long **)(param_1 + 0x88) = plVar3 + 8; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x90)); + if ((param_3 & 1) != 0) { + uVar4 = libusb_get_device_list(param_1,local_40); + iVar2 = (int)uVar4; + if (iVar2 < 0) { + libusb_hotplug_deregister_callback(param_1,(int)plVar3[5]); + return uVar4; + } + if (iVar2 != 0) { + lVar5 = 0; + do { + puVar1 = (undefined8 *)(local_40[0] + lVar5); + lVar5 = lVar5 + 8; + FUN_001245c0(param_1,*puVar1,1,plVar3); + } while (lVar5 != (ulong)(iVar2 - 1) * 8 + 8); + } + libusb_free_device_list(local_40[0],1); + } + if (param_9 == (undefined4 *)0x0) { + uVar4 = 0; + } + else { + *param_9 = (int)plVar3[5]; + uVar4 = 0; + } + } + } + else { + uVar4 = 0xfffffffe; + } + return uVar4; +} + + +================================================================== + +### FUNC 00124af0 (120 bytes) name=FUN_00124af0 + +void FUN_00124af0(long param_1) + +{ + long *plVar1; + long *plVar2; + long *plVar3; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x90)); + plVar3 = (long *)(*(long **)(param_1 + 0x88))[1]; + plVar2 = *(long **)(param_1 + 0x88); + while (plVar1 = plVar3, (long *)(param_1 + 0x80) != plVar2) { + *plVar1 = *plVar2; + *(long **)(*plVar2 + 8) = plVar1; + *plVar2 = 0; + plVar2[1] = 0; + free(plVar2 + -8); + plVar3 = (long *)plVar1[1]; + plVar2 = plVar1; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x90)); + return; +} + + +================================================================== + +### FUNC 00124b70 (62 bytes) name=FUN_00124b70 + +void FUN_00124b70(long param_1) + +{ + if (((*(long *)(param_1 + 0x1b8) == 0) && (*(long *)(param_1 + 0x1e8) == param_1 + 0x1e0)) && + (*(long *)(param_1 + 0x1f8) == param_1 + 0x1f0)) { + *(uint *)(param_1 + 0x1b8) = *(uint *)(param_1 + 0x1b8) | 1; + FUN_00121360(); + return; + } + *(uint *)(param_1 + 0x1b8) = *(uint *)(param_1 + 0x1b8) | 1; + return; +} + + +================================================================== + +### FUNC 00124bc0 (271 bytes) name=FUN_00124bc0 + +uint FUN_00124bc0(long param_1) + +{ + long lVar1; + int iVar2; + itimerspec local_28; + + for (lVar1 = *(long *)(param_1 + 0xc0); + (param_1 + 0xb8 != lVar1 && + ((local_28.it_value.tv_sec = *(long *)(lVar1 + 0x20), local_28.it_value.tv_sec != 0 || + (*(long *)(lVar1 + 0x28) != 0)))); lVar1 = *(long *)(lVar1 + 8)) { + if ((*(byte *)(lVar1 + 0x39) & 3) == 0) { + local_28.it_interval.tv_sec = 0; + local_28.it_interval.tv_nsec = 0; + local_28.it_value.tv_nsec = *(long *)(lVar1 + 0x28) * 1000; + FUN_00120cd0(0,4,"arm_timerfd_for_next_timeout","next timeout originally %dms", + *(undefined4 *)(lVar1 + 0x74)); + iVar2 = timerfd_settime(*(int *)(param_1 + 0x200),1,&local_28,(itimerspec *)0x0); + return iVar2 >> 0x1f & 0xffffff9d; + } + } + local_28.it_interval.tv_sec = 0; + local_28.it_interval.tv_nsec = 0; + local_28.it_value.tv_sec = 0; + local_28.it_value.tv_nsec = 0; + FUN_00120cd0(0,4,"disarm_timerfd"); + iVar2 = timerfd_settime(*(int *)(param_1 + 0x200),0,&local_28,(itimerspec *)0x0); + return iVar2 >> 0x1f & 0xffffff9d; +} + + +================================================================== + +### FUNC 00124ce0 (172 bytes) name=FUN_00124ce0 + +undefined4 FUN_00124ce0(long param_1) + +{ + int iVar1; + long lVar2; + undefined8 *puVar3; + undefined4 uVar4; + + lVar2 = *(long *)(*(long *)(*(long *)(param_1 + 0x70) + 0x40) + 0x30); + pthread_mutex_lock((pthread_mutex_t *)(lVar2 + 200)); + if (((*(long *)(param_1 + 0x28) == 0) && (*(long *)(param_1 + 0x30) == 0)) || + (*(long *)(lVar2 + 0xc0) + -8 != param_1)) { + puVar3 = *(undefined8 **)(param_1 + 0x10); + *puVar3 = *(undefined8 *)(param_1 + 8); + *(undefined8 **)(*(long *)(param_1 + 8) + 8) = puVar3; + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + } + else { + puVar3 = *(undefined8 **)(param_1 + 0x10); + iVar1 = *(int *)(lVar2 + 0x200); + *puVar3 = *(undefined8 *)(param_1 + 8); + *(undefined8 **)(*(long *)(param_1 + 8) + 8) = puVar3; + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + if (-1 < iVar1) { + uVar4 = FUN_00124bc0(lVar2); + goto LAB_00124d7d; + } + } + uVar4 = 0; +LAB_00124d7d: + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 200)); + return uVar4; +} + + +================================================================== + +### FUNC 00124d90 (120 bytes) name=libusb_alloc_transfer + +int * libusb_alloc_transfer(int param_1) + +{ + int *piVar1; + int *piVar2; + + piVar1 = calloc(1,*(long *)(PTR_PTR_0033ed80 + 0x128) + 0xb0 + (long)param_1 * 0xc); + if (piVar1 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + *piVar1 = param_1; + piVar2 = piVar1 + 0x1c; + pthread_mutex_init((pthread_mutex_t *)(piVar1 + 0x12),(pthread_mutexattr_t *)0x0); + FUN_00120cd0(0,4,"libusb_alloc_transfer","transfer %p",piVar2); + } + return piVar2; +} + + +================================================================== + +### FUNC 00124e10 (84 bytes) name=libusb_free_transfer + +void libusb_free_transfer(long param_1) + +{ + if (param_1 != 0) { + FUN_00120cd0(0,4,"libusb_free_transfer","transfer %p",param_1); + if (((*(byte *)(param_1 + 8) & 2) != 0) && (*(void **)(param_1 + 0x30) != (void *)0x0)) { + free(*(void **)(param_1 + 0x30)); + } + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + -0x28)); + free((void *)(param_1 + -0x70)); + return; + } + return; +} + + +================================================================== + +### FUNC 00124e70 (1050 bytes) name=libusb_submit_transfer + +int libusb_submit_transfer(long *param_1) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + uint uVar2; + long lVar3; + long *plVar4; + bool bVar5; + int iVar6; + long lVar7; + int *piVar8; + long lVar9; + pthread_mutex_t *__mutex_00; + itimerspec local_58; + + __mutex = (pthread_mutex_t *)(param_1 + -5); + lVar3 = *(long *)(*(long *)(*param_1 + 0x40) + 0x30); + FUN_00120cd0(0,4,"libusb_submit_transfer","transfer %p",param_1); + __mutex_00 = (pthread_mutex_t *)(lVar3 + 200); + pthread_mutex_lock(__mutex_00); + pthread_mutex_lock(__mutex); + if ((*(byte *)(param_1 + -6) & 1) != 0) { + pthread_mutex_unlock(__mutex_00); + pthread_mutex_unlock(__mutex); + return -6; + } + uVar2 = *(uint *)((long)param_1 + 0xc); + *(undefined1 *)(param_1 + -6) = 0; + *(undefined1 *)((long)param_1 + -0x2f) = 0; + *(undefined4 *)(param_1 + -7) = 0; + lVar3 = *(long *)(*(long *)(*param_1 + 0x40) + 0x30); + if (uVar2 != 0) { + iVar6 = (**(code **)(PTR_PTR_0033ed80 + 0x108))(0,&local_58); + if (iVar6 < 0) { + piVar8 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(*param_1 + 0x40) + 0x30),1,"calculate_timeout", + "failed to read monotonic clock, errno=%d",*piVar8); + goto LAB_001250d4; + } + local_58.it_interval.tv_sec = (ulong)uVar2 / 1000 + local_58.it_interval.tv_sec; + local_58.it_interval.tv_nsec = + (ulong)((uVar2 + (int)((ulong)uVar2 / 1000) * -1000) * 1000000) + + local_58.it_interval.tv_nsec; + lVar7 = local_58.it_interval.tv_sec; + for (lVar9 = local_58.it_interval.tv_nsec; 999999999 < lVar9; lVar9 = lVar9 + -1000000000) { + lVar7 = lVar7 + 1; + } + param_1[-9] = lVar7; + param_1[-8] = lVar9 / 1000; + } + plVar4 = *(long **)(lVar3 + 0xc0); + plVar1 = (long *)(lVar3 + 0xb8); + if (plVar4 == plVar1) { + param_1[-0xc] = (long)plVar4; + plVar1 = *(long **)(lVar3 + 0xc0); + param_1[-0xd] = (long)plVar4; + *plVar1 = (long)(param_1 + -0xd); + *(long **)(lVar3 + 0xc0) = param_1 + -0xd; + } + else { + lVar7 = param_1[-9]; + if ((lVar7 == 0) && (param_1[-8] == 0)) { + lVar7 = *(long *)(lVar3 + 0xb8); + param_1[-0xc] = (long)plVar1; + param_1[-0xd] = lVar7; + *(long **)(*(long *)(lVar3 + 0xb8) + 8) = param_1 + -0xd; + *(long **)(lVar3 + 0xb8) = param_1 + -0xd; + } + else { + bVar5 = true; + for (; plVar1 != plVar4; plVar4 = (long *)plVar4[1]) { + lVar9 = plVar4[4]; + if ((((lVar9 == 0) && (plVar4[5] == 0)) || (lVar7 < lVar9)) || + ((lVar7 == lVar9 && (param_1[-8] < plVar4[5])))) { + param_1[-0xc] = (long)plVar4; + param_1[-0xd] = *plVar4; + *(long **)(*plVar4 + 8) = param_1 + -0xd; + *plVar4 = (long)(param_1 + -0xd); + goto LAB_00124f9c; + } + bVar5 = false; + } + lVar7 = *(long *)(lVar3 + 0xb8); + param_1[-0xc] = (long)plVar1; + param_1[-0xd] = lVar7; + *(long **)(*(long *)(lVar3 + 0xb8) + 8) = param_1 + -0xd; + *(long **)(lVar3 + 0xb8) = param_1 + -0xd; +LAB_00124f9c: + if (!bVar5) goto LAB_00124fa1; + } + } + if (-1 < *(int *)(lVar3 + 0x200)) { + if ((param_1[-9] != 0) || (param_1[-8] != 0)) { + local_58.it_value.tv_nsec = param_1[-8] * 1000; + local_58.it_interval.tv_sec = 0; + local_58.it_interval.tv_nsec = 0; + local_58.it_value.tv_sec = param_1[-9]; + FUN_00120cd0(0,4,"add_to_flying_list","arm timerfd for timeout in %dms (first in line)", + *(undefined4 *)((long)param_1 + 0xc)); + iVar6 = timerfd_settime(*(int *)(lVar3 + 0x200),1,&local_58,(itimerspec *)0x0); + if (iVar6 < 0) { + piVar8 = __errno_location(); + FUN_00120cd0(lVar3,2,"add_to_flying_list","failed to arm first timerfd (errno %d)",*piVar8); + iVar6 = -99; + } + else if (iVar6 == 0) goto LAB_00124fa1; + plVar1 = (long *)param_1[-0xc]; + *plVar1 = param_1[-0xd]; + *(long **)(param_1[-0xd] + 8) = plVar1; + param_1[-0xd] = 0; + param_1[-0xc] = 0; +LAB_001250d4: + pthread_mutex_unlock(__mutex_00); + pthread_mutex_unlock(__mutex); + return iVar6; + } + } +LAB_00124fa1: + pthread_mutex_unlock(__mutex_00); + iVar6 = (**(code **)(PTR_PTR_0033ed80 + 0xe0))(param_1 + -0xe); + if (iVar6 != 0) { + pthread_mutex_unlock(__mutex); + FUN_00124ce0(param_1 + -0xe); + return iVar6; + } + *(byte *)(param_1 + -6) = *(byte *)(param_1 + -6) | 1; + libusb_ref_device(*(undefined8 *)(*param_1 + 0x40)); + pthread_mutex_unlock(__mutex); + return 0; +} + + +================================================================== + +### FUNC 001252b0 (227 bytes) name=libusb_cancel_transfer + +int libusb_cancel_transfer(long *param_1) + +{ + byte bVar1; + int iVar2; + + iVar2 = -5; + FUN_00120cd0(0,4,"libusb_cancel_transfer","transfer %p",param_1); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + -5)); + if ((*(byte *)(param_1 + -6) & 3) == 1) { + iVar2 = (**(code **)(PTR_PTR_0033ed80 + 0xe8))(param_1 + -0xe); + if (iVar2 < 0) { + if (iVar2 + 5U < 2) { + FUN_00120cd0(0,4,"libusb_cancel_transfer","cancel transfer failed error %d",iVar2); + } + else { + FUN_00120cd0(*(undefined8 *)(*(long *)(*param_1 + 0x40) + 0x30),1,"libusb_cancel_transfer", + "cancel transfer failed error %d",iVar2); + } + bVar1 = *(byte *)(param_1 + -6); + if (iVar2 == -4) { + bVar1 = bVar1 | 4; + } + } + else { + bVar1 = *(byte *)(param_1 + -6); + } + *(byte *)(param_1 + -6) = bVar1 | 2; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + -5)); + return iVar2; +} + + +================================================================== + +### FUNC 001253b0 (283 bytes) name=FUN_001253b0 + +undefined8 FUN_001253b0(long param_1) + +{ + long lVar1; + long lVar2; + long lVar3; + int iVar4; + undefined8 uVar5; + int *piVar6; + long local_38; + long local_30; + + lVar1 = param_1 + 0xb8; + if (*(long *)(param_1 + 0xc0) != lVar1) { + uVar5 = (**(code **)(PTR_PTR_0033ed80 + 0x108))(0,&local_38); + if ((int)uVar5 < 0) { + return uVar5; + } + for (lVar2 = *(long *)(param_1 + 0xc0); lVar1 != lVar2; lVar2 = *(long *)(lVar2 + 8)) { + while( true ) { + lVar3 = *(long *)(lVar2 + 0x20); + if ((lVar3 == 0) && (*(long *)(lVar2 + 0x28) == 0)) { + return 0; + } + if ((*(byte *)(lVar2 + 0x39) & 3) != 0) goto LAB_00125434; + if (local_38 < lVar3) { + return 0; + } + if ((local_38 == lVar3) && (local_30 / 1000 < *(long *)(lVar2 + 0x28))) { + return 0; + } + *(byte *)(lVar2 + 0x39) = *(byte *)(lVar2 + 0x39) | 2; + iVar4 = libusb_cancel_transfer(lVar2 + 0x68); + if (iVar4 == 0) break; + piVar6 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(lVar2 + 0x68) + 0x40) + 0x30),2, + "handle_timeout","async cancel failed %d errno=%d",iVar4,*piVar6); + lVar2 = *(long *)(lVar2 + 8); + if (lVar1 == lVar2) { + return 0; + } + } + *(byte *)(lVar2 + 0x39) = *(byte *)(lVar2 + 0x39) | 4; +LAB_00125434: + } + } + return 0; +} + + +================================================================== + +### FUNC 001254d0 (68 bytes) name=FUN_001254d0 + +undefined4 FUN_001254d0(long param_1) + +{ + undefined4 uVar1; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 200)); + uVar1 = FUN_001253b0(param_1); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 200)); + return uVar1; +} + + +================================================================== + +### FUNC 00125520 (1684 bytes) name=FUN_00125520 + +int FUN_00125520(void *param_1,int *param_2) + +{ + pthread_mutex_t *__mutex; + pthread_mutex_t *__mutex_00; + int iVar1; + long lVar2; + long *plVar3; + long *plVar4; + pollfd *ppVar5; + undefined *puVar6; + int iVar7; + uint uVar8; + int *piVar9; + ulong uVar10; + int iVar11; + long *__ptr; + bool bVar12; + pollfd *local_78; + nfds_t local_60; + + __mutex = (pthread_mutex_t *)((long)param_1 + 400); + pthread_setspecific(*(pthread_key_t *)((long)param_1 + 0x134),param_1); + iVar11 = *(int *)((long)param_1 + 0x200); + pthread_mutex_lock(__mutex); + uVar10 = ((long)iVar11 >> 0x3f) + 2; + if ((*(byte *)((long)param_1 + 0x1b8) & 1) == 0) { +LAB_00125660: + local_78 = *(pollfd **)((long)param_1 + 0x1d0); + local_60 = *(nfds_t *)((long)param_1 + 0x1d8); + } + else { + FUN_00120cd0(0,4,"handle_events","poll fds modified, reallocating"); + if (*(void **)((long)param_1 + 0x1d0) != (void *)0x0) { + free(*(void **)((long)param_1 + 0x1d0)); + *(undefined8 *)((long)param_1 + 0x1d0) = 0; + } + local_60 = *(ulong *)((long)param_1 + 0x1d8); + if (local_60 < uVar10) { + /* WARNING: Subroutine does not return */ + __assert_fail("ctx->pollfds_cnt >= internal_nfds","io.c",0x843,"handle_events"); + } + local_78 = calloc(local_60,8); + *(pollfd **)((long)param_1 + 0x1d0) = local_78; + if (local_78 == (pollfd *)0x0) { + iVar11 = -0xb; + pthread_mutex_unlock(__mutex); + goto LAB_001259f0; + } + ppVar5 = local_78; + for (lVar2 = *(long *)((long)param_1 + 0x1c8); (long)param_1 + 0x1c0 != lVar2; + lVar2 = *(long *)(lVar2 + 8)) { + ppVar5->fd = *(int *)(lVar2 + -8); + ppVar5->events = *(short *)(lVar2 + -4); + ppVar5 = ppVar5 + 1; + } + *(uint *)((long)param_1 + 0x1b8) = *(uint *)((long)param_1 + 0x1b8) & 0xfffffffe; + if (((*(long *)((long)param_1 + 0x1b8) == 0) && + (*(long *)((long)param_1 + 0x1e8) == (long)param_1 + 0x1e0)) && + (*(long *)((long)param_1 + 0x1f8) == (long)param_1 + 0x1f0)) { + FUN_001213c0(param_1); + goto LAB_00125660; + } + } + pthread_mutex_unlock(__mutex); + iVar11 = (*param_2 * 1000 + (int)(*(long *)(param_2 + 2) / 1000) + 1) - + (uint)(*(long *)(param_2 + 2) % 1000 == 0); + __mutex_00 = (pthread_mutex_t *)((long)param_1 + 200); + lVar2 = (long)param_1 + 0x1e0; + while( true ) { + FUN_00120cd0(0,4,"handle_events","poll() %d fds with timeout in %dms",local_60,iVar11); + iVar7 = poll(local_78,local_60,iVar11); + FUN_00120cd0(0,4,"handle_events","poll() returned %d",iVar7); + if (iVar7 == 0) break; + if (iVar7 == -1) { + piVar9 = __errno_location(); + iVar1 = *piVar9; + if (iVar1 == 4) { + iVar11 = -10; + } + else { +LAB_001259c2: + iVar11 = -1; + FUN_00120cd0(param_1,1,"handle_events","poll failed %d err=%d",iVar7,iVar1); + } + goto LAB_001259f0; + } + if (iVar7 < 0) { + piVar9 = __errno_location(); + iVar1 = *piVar9; + goto LAB_001259c2; + } + bVar12 = false; + if (local_78->revents == 0) { +LAB_00125708: + if ((*(int *)((long)param_1 + 0x200) < 0) || (local_78[1].revents == 0)) { +LAB_00125721: + iVar11 = (**(code **)(PTR_PTR_0033ed80 + 0xf8)) + (param_1,local_78 + uVar10,local_60 - uVar10,iVar7); + if (iVar11 == 0) goto LAB_0012574b; + FUN_00120cd0(param_1,1,"handle_events","backend handle_events failed with error %d",iVar11); + goto LAB_001259f0; + } + FUN_00120cd0(0,4,"handle_events","timerfd triggered"); + pthread_mutex_lock(__mutex_00); + iVar11 = FUN_001253b0(param_1); + if (iVar11 < 0) { + pthread_mutex_unlock(__mutex_00); + goto LAB_001259f0; + } + iVar11 = FUN_00124bc0(param_1); + pthread_mutex_unlock(__mutex_00); + if (iVar11 < 0) goto LAB_001259f0; + iVar7 = iVar7 + -1; + if (iVar7 != 0) { + bVar12 = true; + goto LAB_00125721; + } + } + else { + FUN_00120cd0(0,4,"handle_events","caught a fish on the event pipe"); + pthread_mutex_lock(__mutex); + uVar8 = *(uint *)((long)param_1 + 0x1b8); + if ((uVar8 & 1) != 0) { + FUN_00120cd0(0,4,"handle_events","someone updated the poll fds"); + uVar8 = *(uint *)((long)param_1 + 0x1b8); + } + if ((uVar8 & 2) == 0) { + iVar11 = *(int *)((long)param_1 + 0x1bc); + } + else { + FUN_00120cd0(0,4,"handle_events","someone purposely interrupted"); + iVar11 = *(int *)((long)param_1 + 0x1bc); + *(uint *)((long)param_1 + 0x1b8) = *(uint *)((long)param_1 + 0x1b8) & 0xfffffffd; + } + if (iVar11 != 0) { + FUN_00120cd0(0,4,"handle_events","someone is closing a device"); + } + bVar12 = *(long *)((long)param_1 + 0x1e8) == lVar2; + if (bVar12) { + __ptr = (long *)0x0; + } + else { + FUN_00120cd0(0,4,"handle_events","hotplug message received"); + plVar3 = *(long **)((long)param_1 + 0x1e8); + __ptr = plVar3 + -2; + plVar4 = (long *)plVar3[1]; + *plVar4 = *plVar3; + *(long **)(*plVar3 + 8) = plVar4; + *plVar3 = 0; + plVar3[1] = 0; + } + puVar6 = PTR_PTR_0033ed80; + bVar12 = !bVar12; + plVar3 = *(long **)((long)param_1 + 0x1f8); + while (plVar3 != (long *)((long)param_1 + 0x1f0)) { + plVar4 = (long *)plVar3[1]; + *plVar4 = *plVar3; + *(long **)(*plVar3 + 8) = plVar4; + *plVar3 = 0; + plVar3[1] = 0; + pthread_mutex_unlock(__mutex); + iVar11 = (**(code **)(puVar6 + 0x100))(plVar3 + -3); + if (iVar11 != 0) { + FUN_00120cd0(param_1,1,"handle_events", + "backend handle_transfer_completion failed with error %d",iVar11); + pthread_mutex_lock(__mutex); + goto LAB_00125910; + } + pthread_mutex_lock(__mutex); + plVar3 = *(long **)((long)param_1 + 0x1f8); + } + iVar11 = 0; +LAB_00125910: + if (((*(long *)((long)param_1 + 0x1b8) == 0) && (lVar2 == *(long *)((long)param_1 + 0x1e8))) + && (*(long **)((long)param_1 + 0x1f8) == (long *)((long)param_1 + 0x1f0))) { + FUN_001213c0(param_1); + } + pthread_mutex_unlock(__mutex); + if (__ptr != (long *)0x0) { + FUN_00124630(param_1,__ptr[1],(int)*__ptr); + if ((int)*__ptr == 2) { + libusb_unref_device(__ptr[1]); + } + free(__ptr); + } + if (iVar11 != 0) goto LAB_001259f0; + iVar7 = iVar7 + -1; + if (iVar7 != 0) goto LAB_00125708; +LAB_0012574b: + if (!bVar12) { + iVar11 = 0; + goto LAB_001259f0; + } + } + iVar11 = 0; + } + iVar11 = FUN_001254d0(param_1); +LAB_001259f0: + pthread_setspecific(*(pthread_key_t *)((long)param_1 + 0x134),(void *)0x0); + return iVar11; +} + + +================================================================== + +### FUNC 00125bf0 (4 bytes) name=libusb_transfer_set_stream_id + +void libusb_transfer_set_stream_id(long param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + -0x34) = param_2; + return; +} + + +================================================================== + +### FUNC 00125c00 (4 bytes) name=libusb_transfer_get_stream_id + +undefined4 libusb_transfer_get_stream_id(long param_1) + +{ + return *(undefined4 *)(param_1 + -0x34); +} + + +================================================================== + +### FUNC 00125c10 (317 bytes) name=FUN_00125c10 + +int FUN_00125c10(long param_1,int param_2) + +{ + long lVar1; + long lVar2; + int iVar3; + int iVar4; + int iVar5; + int *piVar6; + byte bVar7; + + lVar1 = param_1 + 0x70; + lVar2 = *(long *)(param_1 + 0x70); + iVar4 = FUN_00124ce0(); + if (iVar4 < 0) { + piVar6 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x70) + 0x40) + 0x30),1, + "usbi_handle_transfer_completion","failed to set timer for next timeout, errno=%d", + *piVar6); + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x48)); + *(byte *)(param_1 + 0x40) = *(byte *)(param_1 + 0x40) & 0xfe; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x48)); + bVar7 = *(byte *)(param_1 + 0x78); + if ((param_2 == 0) && ((bVar7 & 1) != 0)) { + iVar3 = *(int *)(param_1 + 0x84); + if (*(char *)(param_1 + 0x7a) == '\0') { + iVar3 = *(int *)(param_1 + 0x84) + -8; + } + iVar5 = *(int *)(param_1 + 0x38); + if (iVar5 != iVar3) { + param_2 = 1; + FUN_00120cd0(0,4,"usbi_handle_transfer_completion","interpreting short transfer as error"); + bVar7 = *(byte *)(param_1 + 0x78); + iVar5 = *(int *)(param_1 + 0x38); + } + } + else { + iVar5 = *(int *)(param_1 + 0x38); + } + *(int *)(param_1 + 0x88) = iVar5; + *(int *)(param_1 + 0x80) = param_2; + FUN_00120cd0(0,4,"usbi_handle_transfer_completion","transfer %p has callback %p",lVar1, + *(undefined8 *)(param_1 + 0x90)); + if (*(code **)(param_1 + 0x90) != (code *)0x0) { + (**(code **)(param_1 + 0x90))(lVar1); + } + if ((bVar7 & 4) != 0) { + libusb_free_transfer(lVar1); + } + libusb_unref_device(*(undefined8 *)(lVar2 + 0x40)); + return iVar4; +} + + +================================================================== + +### FUNC 00125d60 (104 bytes) name=FUN_00125d60 + +void FUN_00125d60(long param_1) + +{ + byte bVar1; + undefined8 uVar2; + pthread_mutex_t *__mutex; + + __mutex = (pthread_mutex_t *)(*(long *)(*(long *)(*(long *)(param_1 + 0x70) + 0x40) + 0x30) + 200) + ; + pthread_mutex_lock(__mutex); + bVar1 = *(byte *)(param_1 + 0x41); + pthread_mutex_unlock(__mutex); + uVar2 = 3; + if ((bVar1 & 4) != 0) { + FUN_00120cd0(0,4,"usbi_handle_transfer_cancellation","detected timeout cancellation"); + uVar2 = 2; + } + FUN_00125c10(param_1,uVar2); + return; +} + + +================================================================== + +### FUNC 00125dd0 (182 bytes) name=FUN_00125dd0 + +void FUN_00125dd0(long param_1) + +{ + long lVar1; + + lVar1 = *(long *)(*(long *)(*(long *)(param_1 + 0x70) + 0x40) + 0x30); + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 400)); + if (((*(long *)(lVar1 + 0x1b8) == 0) && (*(long *)(lVar1 + 0x1e8) == lVar1 + 0x1e0)) && + (*(long *)(lVar1 + 0x1f8) == lVar1 + 0x1f0)) { + *(long *)(param_1 + 0x20) = *(long *)(lVar1 + 0x1f8); + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(lVar1 + 0x1f0); + *(long *)(*(long *)(lVar1 + 0x1f0) + 8) = param_1 + 0x18; + *(long *)(lVar1 + 0x1f0) = param_1 + 0x18; + FUN_00121360(lVar1); + } + else { + *(long *)(param_1 + 0x20) = lVar1 + 0x1f0; + *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(lVar1 + 0x1f0); + *(long *)(*(long *)(lVar1 + 0x1f0) + 8) = param_1 + 0x18; + *(long *)(lVar1 + 0x1f0) = param_1 + 0x18; + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 400)); + return; +} + + +================================================================== + +### FUNC 00125e90 (146 bytes) name=libusb_try_lock_events + +bool libusb_try_lock_events(long param_1) + +{ + int iVar1; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + iVar1 = *(int *)(param_1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + if (iVar1 == 0) { + iVar1 = pthread_mutex_trylock((pthread_mutex_t *)(param_1 + 0x108)); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x130) = 1; + } + return iVar1 != 0; + } + FUN_00120cd0(0,4,"libusb_try_lock_events","someone else is closing a device"); + return true; +} + + +================================================================== + +### FUNC 00125f30 (45 bytes) name=libusb_lock_events + +void libusb_lock_events(long param_1) + +{ + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x108)); + *(undefined4 *)(param_1 + 0x130) = 1; + return; +} + + +================================================================== + +### FUNC 00125f70 (89 bytes) name=libusb_unlock_events + +void libusb_unlock_events(long param_1) + +{ + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + *(undefined4 *)(param_1 + 0x130) = 0; + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x108)); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x138)); + pthread_cond_broadcast((pthread_cond_t *)(param_1 + 0x160)); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x138)); + return; +} + + +================================================================== + +### FUNC 00125fd0 (101 bytes) name=libusb_event_handling_ok + +bool libusb_event_handling_ok(long param_1) + +{ + int iVar1; + bool bVar2; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + iVar1 = *(int *)(param_1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + bVar2 = iVar1 == 0; + if (!bVar2) { + FUN_00120cd0(0,4,"libusb_event_handling_ok","someone else is closing a device"); + } + return bVar2; +} + + +================================================================== + +### FUNC 00126040 (108 bytes) name=libusb_event_handler_active + +undefined4 libusb_event_handler_active(long param_1) + +{ + int iVar1; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + iVar1 = *(int *)(param_1 + 0x1bc); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + if (iVar1 == 0) { + return *(undefined4 *)(param_1 + 0x130); + } + FUN_00120cd0(0,4,"libusb_event_handler_active","someone else is closing a device"); + return 1; +} + + +================================================================== + +### FUNC 001260c0 (149 bytes) name=libusb_interrupt_event_handler + +void libusb_interrupt_event_handler(long param_1) + +{ + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + FUN_00120cd0(0,4,"libusb_interrupt_event_handler",&DAT_00131fd1); + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + if (((*(long *)(param_1 + 0x1b8) == 0) && (*(long *)(param_1 + 0x1e8) == param_1 + 0x1e0)) && + (*(long *)(param_1 + 0x1f8) == param_1 + 0x1f0)) { + *(uint *)(param_1 + 0x1b8) = *(uint *)(param_1 + 0x1b8) | 2; + FUN_00121360(param_1); + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + return; +} + + +================================================================== + +### FUNC 00126160 (39 bytes) name=libusb_lock_event_waiters + +void libusb_lock_event_waiters(long param_1) + +{ + if (param_1 != 0) { + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x138)); + return; + } + pthread_mutex_lock((pthread_mutex_t *)(DAT_003665e8 + 0x138)); + return; +} + + +================================================================== + +### FUNC 00126190 (39 bytes) name=libusb_unlock_event_waiters + +void libusb_unlock_event_waiters(long param_1) + +{ + if (param_1 != 0) { + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x138)); + return; + } + pthread_mutex_unlock((pthread_mutex_t *)(DAT_003665e8 + 0x138)); + return; +} + + +================================================================== + +### FUNC 001261c0 (78 bytes) name=libusb_wait_for_event + +ulong libusb_wait_for_event(long param_1,long param_2) + +{ + ulong uVar1; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + if (param_2 != 0) { + uVar1 = FUN_001274b0(); + if (-1 < (int)uVar1) { + uVar1 = (ulong)((int)uVar1 == 0x6e); + } + return uVar1; + } + pthread_cond_wait((pthread_cond_t *)(param_1 + 0x160),(pthread_mutex_t *)(param_1 + 0x138)); + return 0; +} + + +================================================================== + +### FUNC 00126220 (39 bytes) name=libusb_pollfds_handle_timeouts + +uint libusb_pollfds_handle_timeouts(long param_1) + +{ + if (param_1 != 0) { + return ~*(uint *)(param_1 + 0x200) >> 0x1f; + } + return ~*(uint *)(DAT_003665e8 + 0x200) >> 0x1f; +} + + +================================================================== + +### FUNC 00126250 (567 bytes) name=libusb_get_next_timeout + +undefined8 libusb_get_next_timeout(long param_1,long *param_2) + +{ + pthread_mutex_t *__mutex; + long lVar1; + byte bVar2; + bool bVar3; + int iVar4; + int *piVar5; + long lVar6; + long local_38; + long local_30; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + if (*(int *)(param_1 + 0x200) < 0) { + __mutex = (pthread_mutex_t *)(param_1 + 200); + pthread_mutex_lock(__mutex); + lVar6 = *(long *)(param_1 + 0xc0); + lVar1 = param_1 + 0xb8; + if (lVar6 == lVar1) { + pthread_mutex_unlock(__mutex); + FUN_00120cd0(0,4,"libusb_get_next_timeout","no URBs, no timeout!"); + } + else { + if (lVar1 != lVar6) { + bVar2 = *(byte *)(lVar6 + 0x39); + while ((bVar2 & 3) != 0) { + lVar6 = *(long *)(lVar6 + 8); + if (lVar1 == lVar6) goto LAB_001263b0; + bVar2 = *(byte *)(lVar6 + 0x39); + } + lVar1 = *(long *)(lVar6 + 0x20); + lVar6 = *(long *)(lVar6 + 0x28); + if ((lVar1 != 0) || (lVar6 != 0)) { + pthread_mutex_unlock(__mutex); + iVar4 = (**(code **)(PTR_PTR_0033ed80 + 0x108))(0,&local_38); + if (iVar4 < 0) { + piVar5 = __errno_location(); + FUN_00120cd0(param_1,1,"libusb_get_next_timeout", + "failed to read monotonic clock, errno=%d",*piVar5); + return 0; + } + bVar3 = lVar1 <= local_38; + if (lVar1 == local_38) { + bVar3 = lVar6 <= local_30 / 1000; + } + if (bVar3) { + FUN_00120cd0(0,4,"libusb_get_next_timeout","first timeout already expired"); + param_2[1] = 0; + *param_2 = 0; + return 1; + } + lVar6 = lVar6 - local_30 / 1000; + *param_2 = lVar1 - local_38; + param_2[1] = lVar6; + if (lVar6 < 0) { + *param_2 = (lVar1 - local_38) + -1; + param_2[1] = lVar6 + 1000000; + } + FUN_00120cd0(0,4,"libusb_get_next_timeout","next timeout in %d.%06ds"); + return 1; + } + } +LAB_001263b0: + pthread_mutex_unlock(__mutex); + FUN_00120cd0(0,4,"libusb_get_next_timeout", + "no URB with timeout or all handled by OS; no timeout!"); + } + } + return 0; +} + + +================================================================== + +### FUNC 001264b0 (142 bytes) name=FUN_001264b0 + +undefined8 FUN_001264b0(undefined8 param_1,long *param_2,long *param_3) + +{ + long lVar1; + bool bVar2; + int iVar3; + long local_28; + long local_20; + + iVar3 = libusb_get_next_timeout(param_1,&local_28); + if (iVar3 == 0) goto LAB_00126500; + if (local_28 == 0) { + if (local_20 == 0) { + return 1; + } + bVar2 = 0 < *param_2; + if (*param_2 == 0) goto LAB_0012653b; + } + else { + bVar2 = local_28 < *param_2; + if (local_28 == *param_2) { +LAB_0012653b: + bVar2 = local_20 < param_2[1]; + } + } + if (bVar2) { + *param_3 = local_28; + param_3[1] = local_20; + return 0; + } +LAB_00126500: + lVar1 = param_2[1]; + *param_3 = *param_2; + param_3[1] = lVar1; + return 0; +} + + +================================================================== + +### FUNC 00126550 (351 bytes) name=libusb_handle_events_timeout_completed + +ulong libusb_handle_events_timeout_completed(long param_1,undefined8 param_2,int *param_3) + +{ + int iVar1; + uint uVar2; + void *pvVar3; + ulong uVar4; + undefined1 auStack_38 [24]; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + iVar1 = FUN_001264b0(param_1,param_2,auStack_38); + if (iVar1 == 0) { + while( true ) { + iVar1 = libusb_try_lock_events(param_1); + if (iVar1 == 0) { + if ((param_3 == (int *)0x0) || (uVar4 = 0, *param_3 == 0)) { + uVar4 = 0xfffffffa; + FUN_00120cd0(0,4,"libusb_handle_events_timeout_completed","doing our own event handling"); + pvVar3 = pthread_getspecific(*(pthread_key_t *)(param_1 + 0x134)); + if (pvVar3 == (void *)0x0) { + uVar2 = FUN_00125520(param_1,auStack_38); + uVar4 = (ulong)uVar2; + } + } + libusb_unlock_events(param_1); + return uVar4; + } + libusb_lock_event_waiters(param_1); + if ((param_3 != (int *)0x0) && (*param_3 != 0)) { + libusb_unlock_event_waiters(param_1); + return 0; + } + iVar1 = libusb_event_handler_active(); + if (iVar1 != 0) break; + libusb_unlock_event_waiters(param_1); + FUN_00120cd0(0,4,"libusb_handle_events_timeout_completed", + "event handler was active but went away, retrying"); + } + FUN_00120cd0(0,4,"libusb_handle_events_timeout_completed", + "another thread is doing event handling"); + uVar2 = libusb_wait_for_event(param_1,auStack_38); + libusb_unlock_event_waiters(param_1); + if ((int)uVar2 < 0) { + return (ulong)uVar2; + } + if (uVar2 != 1) { + return 0; + } + } + uVar4 = FUN_001254d0(param_1); + return uVar4; +} + + +================================================================== + +### FUNC 001266d0 (7 bytes) name=libusb_handle_events_timeout + +void libusb_handle_events_timeout(undefined8 param_1,undefined8 param_2) + +{ + libusb_handle_events_timeout_completed(param_1,param_2,0); + return; +} + + +================================================================== + +### FUNC 001266e0 (36 bytes) name=libusb_handle_events + +void libusb_handle_events(undefined8 param_1) + +{ + undefined8 local_18; + undefined8 local_10; + + local_18 = 0x3c; + local_10 = 0; + libusb_handle_events_timeout_completed(param_1,&local_18,0); + return; +} + + +================================================================== + +### FUNC 00126710 (37 bytes) name=libusb_handle_events_completed + +void libusb_handle_events_completed(undefined8 param_1,undefined8 param_2) + +{ + undefined8 local_18; + undefined8 local_10; + + local_18 = 0x3c; + local_10 = 0; + libusb_handle_events_timeout_completed(param_1,&local_18,param_2); + return; +} + + +================================================================== + +### FUNC 00126740 (98 bytes) name=libusb_handle_events_locked + +undefined8 libusb_handle_events_locked(long param_1,undefined8 param_2) + +{ + int iVar1; + void *pvVar2; + undefined8 uVar3; + undefined1 auStack_28 [24]; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + iVar1 = FUN_001264b0(param_1,param_2,auStack_28); + if (iVar1 == 0) { + pvVar2 = pthread_getspecific(*(pthread_key_t *)(param_1 + 0x134)); + uVar3 = 0xfffffffa; + if (pvVar2 == (void *)0x0) { + uVar3 = FUN_00125520(param_1,auStack_28); + } + return uVar3; + } + uVar3 = FUN_001254d0(param_1); + return uVar3; +} + + +================================================================== + +### FUNC 001267b0 (39 bytes) name=libusb_set_pollfd_notifiers + +void libusb_set_pollfd_notifiers + (long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + *(undefined8 *)(param_1 + 0xf0) = param_2; + *(undefined8 *)(param_1 + 0xf8) = param_3; + *(undefined8 *)(param_1 + 0x100) = param_4; + return; +} + + +================================================================== + +### FUNC 001267e0 (216 bytes) name=FUN_001267e0 + +undefined8 FUN_001267e0(long param_1,undefined4 param_2,short param_3) + +{ + undefined4 *puVar1; + undefined8 uVar2; + + puVar1 = malloc(0x18); + if (puVar1 == (undefined4 *)0x0) { + uVar2 = 0xfffffff5; + } + else { + FUN_00120cd0(0,4,"usbi_add_pollfd","add fd %d events %d",param_2,(int)param_3); + *(short *)(puVar1 + 1) = param_3; + *puVar1 = param_2; + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + *(long *)(puVar1 + 4) = param_1 + 0x1c0; + *(undefined8 *)(puVar1 + 2) = *(undefined8 *)(param_1 + 0x1c0); + uVar2 = 0; + *(undefined4 **)(*(long *)(param_1 + 0x1c0) + 8) = puVar1 + 2; + *(long *)(param_1 + 0x1d8) = *(long *)(param_1 + 0x1d8) + 1; + *(undefined4 **)(param_1 + 0x1c0) = puVar1 + 2; + FUN_00124b70(param_1); + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + if (*(code **)(param_1 + 0xf0) != (code *)0x0) { + (**(code **)(param_1 + 0xf0))(param_2,(int)param_3,*(undefined8 *)(param_1 + 0x100)); + } + } + return uVar2; +} + + +================================================================== + +### FUNC 001268c0 (266 bytes) name=FUN_001268c0 + +void FUN_001268c0(long param_1,int param_2) + +{ + pthread_mutex_t *__mutex; + long *plVar1; + long *plVar2; + + __mutex = (pthread_mutex_t *)(param_1 + 400); + FUN_00120cd0(0,4,"usbi_remove_pollfd","remove fd %d",param_2); + pthread_mutex_lock(__mutex); + plVar1 = *(long **)(param_1 + 0x1c8); + do { + plVar2 = plVar1; + if ((long *)(param_1 + 0x1c0) == plVar2) { + FUN_00120cd0(0,4,"usbi_remove_pollfd","couldn\'t find fd %d to remove",param_2); + pthread_mutex_unlock(__mutex); + return; + } + plVar1 = (long *)plVar2[1]; + } while ((int)plVar2[-1] != param_2); + *plVar1 = *plVar2; + *(long **)(*plVar2 + 8) = plVar1; + *plVar2 = 0; + plVar2[1] = 0; + *(long *)(param_1 + 0x1d8) = *(long *)(param_1 + 0x1d8) + -1; + FUN_00124b70(param_1); + pthread_mutex_unlock(__mutex); + free(plVar2 + -1); + if (*(code **)(param_1 + 0xf8) == (code *)0x0) { + return; + } + /* WARNING: Could not recover jumptable at 0x00126993. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(param_1 + 0xf8))(param_2,*(undefined8 *)(param_1 + 0x100)); + return; +} + + +================================================================== + +### FUNC 001269e0 (550 bytes) name=FUN_001269e0 + +int FUN_001269e0(long param_1) + +{ + int iVar1; + clockid_t __clock_id; + int *piVar2; + + pthread_mutex_init((pthread_mutex_t *)(param_1 + 200),(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x108),(pthread_mutexattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(param_1 + 0x138),(pthread_mutexattr_t *)0x0); + pthread_cond_init((pthread_cond_t *)(param_1 + 0x160),(pthread_condattr_t *)0x0); + pthread_mutex_init((pthread_mutex_t *)(param_1 + 400),(pthread_mutexattr_t *)0x0); + pthread_key_create((pthread_key_t *)(param_1 + 0x134),(__destr_function *)0x0); + *(long *)(param_1 + 0xc0) = param_1 + 0xb8; + *(long *)(param_1 + 0xb8) = param_1 + 0xb8; + *(long *)(param_1 + 0x1c8) = param_1 + 0x1c0; + *(long *)(param_1 + 0x1c0) = param_1 + 0x1c0; + *(long *)(param_1 + 0x1e8) = param_1 + 0x1e0; + *(long *)(param_1 + 0x1e0) = param_1 + 0x1e0; + *(long *)(param_1 + 0x1f8) = param_1 + 0x1f0; + *(long *)(param_1 + 0x1f0) = param_1 + 0x1f0; + iVar1 = FUN_00127400(param_1 + 8); + if (iVar1 < 0) { + iVar1 = -99; + } + else { + iVar1 = FUN_001267e0(param_1,*(undefined4 *)(param_1 + 8),1); + if (-1 < iVar1) { + __clock_id = (**(code **)(PTR_PTR_0033ed80 + 0x110))(); + iVar1 = timerfd_create(__clock_id,0x800); + *(int *)(param_1 + 0x200) = iVar1; + if (iVar1 < 0) { + piVar2 = __errno_location(); + FUN_00120cd0(0,4,"usbi_io_init","timerfd not available (code %d error %d)",iVar1,*piVar2); + *(undefined4 *)(param_1 + 0x200) = 0xffffffff; + return 0; + } + FUN_00120cd0(0,4,"usbi_io_init","using timerfd for timeouts"); + iVar1 = FUN_001267e0(param_1,*(undefined4 *)(param_1 + 0x200),1); + if (-1 < iVar1) { + return 0; + } + close(*(int *)(param_1 + 0x200)); + FUN_001268c0(param_1,*(undefined4 *)(param_1 + 8)); + } + close(*(int *)(param_1 + 8)); + close(*(int *)(param_1 + 0xc)); + } + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 200)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x108)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x138)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 0x160)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 400)); + pthread_key_delete(*(pthread_key_t *)(param_1 + 0x134)); + return iVar1; +} + + +================================================================== + +### FUNC 00126c20 (148 bytes) name=FUN_00126c20 + +void FUN_00126c20(long param_1) + +{ + FUN_001268c0(param_1,*(undefined4 *)(param_1 + 8)); + close(*(int *)(param_1 + 8)); + close(*(int *)(param_1 + 0xc)); + if (-1 < *(int *)(param_1 + 0x200)) { + FUN_001268c0(param_1); + close(*(int *)(param_1 + 0x200)); + } + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 200)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x108)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 0x138)); + pthread_cond_destroy((pthread_cond_t *)(param_1 + 0x160)); + pthread_mutex_destroy((pthread_mutex_t *)(param_1 + 400)); + pthread_key_delete(*(pthread_key_t *)(param_1 + 0x134)); + if (*(void **)(param_1 + 0x1d0) != (void *)0x0) { + free(*(void **)(param_1 + 0x1d0)); + return; + } + return; +} + + +================================================================== + +### FUNC 00126cc0 (162 bytes) name=libusb_get_pollfds + +long * libusb_get_pollfds(long param_1) + +{ + long lVar1; + long lVar2; + long *plVar3; + long *plVar4; + + if (param_1 == 0) { + param_1 = DAT_003665e8; + } + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 400)); + lVar1 = *(long *)(param_1 + 0x1d8); + plVar3 = calloc(lVar1 + 1,8); + if (plVar3 != (long *)0x0) { + plVar4 = plVar3; + for (lVar2 = *(long *)(param_1 + 0x1c8); param_1 + 0x1c0 != lVar2; lVar2 = *(long *)(lVar2 + 8)) + { + *plVar4 = lVar2 + -8; + plVar4 = plVar4 + 1; + } + plVar3[lVar1] = 0; + } + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 400)); + return plVar3; +} + + +================================================================== + +### FUNC 00126d70 (12 bytes) name=libusb_free_pollfds + +void libusb_free_pollfds(void *param_1) + +{ + if (param_1 != (void *)0x0) { + free(param_1); + return; + } + return; +} + + +================================================================== + +### FUNC 00126d90 (314 bytes) name=FUN_00126d90 + +void FUN_00126d90(long param_1) + +{ + pthread_mutex_t *__mutex; + long lVar1; + long lVar2; + long lVar3; + + FUN_00120cd0(0,4,"usbi_handle_disconnect","device %d.%d", + *(undefined1 *)(*(long *)(param_1 + 0x40) + 0x38), + *(undefined1 *)(*(long *)(param_1 + 0x40) + 0x48)); +LAB_00126dc8: + pthread_mutex_lock((pthread_mutex_t *)(*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 200)); + lVar3 = *(long *)(param_1 + 0x40); + lVar2 = *(long *)(lVar3 + 0x30); + lVar1 = *(long *)(lVar2 + 0xc0); + if (lVar1 == lVar2 + 0xb8) { +LAB_00126eb0: + pthread_mutex_unlock((pthread_mutex_t *)(lVar2 + 200)); + return; + } + do { + if (*(long *)(lVar1 + 0x68) == param_1) { + __mutex = (pthread_mutex_t *)(lVar1 + 0x40); + pthread_mutex_lock(__mutex); + if ((*(byte *)(lVar1 + 0x38) & 1) != 0) break; + pthread_mutex_unlock(__mutex); + lVar3 = *(long *)(param_1 + 0x40); + } + lVar2 = *(long *)(lVar3 + 0x30); + lVar1 = *(long *)(lVar1 + 8); + if (lVar1 == lVar2 + 0xb8) goto LAB_00126eb0; + } while( true ); + pthread_mutex_unlock(__mutex); + pthread_mutex_unlock((pthread_mutex_t *)(*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 200)); + FUN_00120cd0(0,4,"usbi_handle_disconnect","cancelling transfer %p from disconnect",lVar1 + 0x68); + pthread_mutex_lock(__mutex); + (**(code **)(PTR_PTR_0033ed80 + 0xf0))(lVar1 + -8); + pthread_mutex_unlock(__mutex); + FUN_00125c10(lVar1 + -8,5); + goto LAB_00126dc8; +} + + +================================================================== + +### FUNC 00126ee0 (42 bytes) name=FUN_00126ee0 + +void FUN_00126ee0(long param_1) + +{ + **(undefined4 **)(param_1 + 0x28) = 1; + FUN_00120cd0(0,4,"sync_transfer_cb","actual_length=%d",*(undefined4 *)(param_1 + 0x18)); + return; +} + + +================================================================== + +### FUNC 00126f10 (117 bytes) name=FUN_00126f10 + +void FUN_00126f10(long *param_1) + +{ + int *piVar1; + undefined8 uVar2; + int iVar3; + undefined8 uVar4; + + piVar1 = (int *)param_1[5]; + uVar2 = *(undefined8 *)(*(long *)(*param_1 + 0x40) + 0x30); + do { + if (*piVar1 != 0) { + return; + } + while ((iVar3 = libusb_handle_events_completed(uVar2,piVar1), iVar3 < 0 && (iVar3 != -10))) { + uVar4 = libusb_error_name(iVar3); + FUN_00120cd0(uVar2,1,"sync_transfer_wait_for_completion", + "libusb_handle_events failed: %s, cancelling transfer and retrying",uVar4); + libusb_cancel_transfer(param_1); + if (*piVar1 != 0) { + return; + } + } + } while( true ); +} + + +================================================================== + +### FUNC 00126f90 (360 bytes) name=FUN_00126f90 + +int FUN_00126f90(long param_1,undefined1 param_2,long param_3,undefined4 param_4,undefined4 *param_5 + ,undefined4 param_6,undefined1 param_7) + +{ + int iVar1; + void *pvVar2; + long *plVar3; + undefined4 local_3c [3]; + + local_3c[0] = 0; + pvVar2 = pthread_getspecific(*(pthread_key_t *) + (*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 0x134)); + iVar1 = -6; + if (pvVar2 == (void *)0x0) { + plVar3 = (long *)libusb_alloc_transfer(0); + if (plVar3 == (long *)0x0) { + iVar1 = -0xb; + } + else { + *plVar3 = param_1; + *(undefined1 *)((long)plVar3 + 9) = param_2; + *(undefined4 *)((long)plVar3 + 0xc) = param_6; + plVar3[6] = param_3; + *(undefined4 *)((long)plVar3 + 0x14) = param_4; + plVar3[4] = (long)FUN_00126ee0; + plVar3[5] = (long)local_3c; + *(undefined1 *)((long)plVar3 + 10) = param_7; + iVar1 = libusb_submit_transfer(plVar3); + if (iVar1 < 0) { + libusb_free_transfer(plVar3); + } + else { + FUN_00126f10(plVar3); + if (param_5 != (undefined4 *)0x0) { + *param_5 = (int)plVar3[3]; + } + switch((int)plVar3[2]) { + case 0: + iVar1 = 0; + break; + case 1: + case 3: + iVar1 = -1; + break; + case 2: + iVar1 = -7; + break; + case 4: + iVar1 = -9; + break; + case 5: + iVar1 = -4; + break; + case 6: + iVar1 = -8; + break; + default: + iVar1 = -99; + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),2,"do_sync_bulk_transfer", + "unrecognised status code %d"); + } + libusb_free_transfer(plVar3); + } + } + } + return iVar1; +} + + +================================================================== + +### FUNC 00127130 (594 bytes) name=libusb_control_transfer + +int libusb_control_transfer + (long param_1,char param_2,char param_3,undefined2 param_4,undefined2 param_5, + void *param_6,ushort param_7,undefined4 param_8) + +{ + ushort uVar1; + int iVar2; + void *pvVar3; + long *plVar4; + char *pcVar5; + undefined4 local_3c [3]; + + local_3c[0] = 0; + pvVar3 = pthread_getspecific(*(pthread_key_t *) + (*(long *)(*(long *)(param_1 + 0x40) + 0x30) + 0x134)); + iVar2 = -6; + if (pvVar3 == (void *)0x0) { + plVar4 = (long *)libusb_alloc_transfer(0); + if (plVar4 == (long *)0x0) { + iVar2 = -0xb; + } + else { + pcVar5 = malloc((ulong)param_7 + 8); + if (pcVar5 == (char *)0x0) { + libusb_free_transfer(plVar4); + iVar2 = -0xb; + } + else { + pcVar5[1] = param_3; + *pcVar5 = param_2; + *(undefined2 *)(pcVar5 + 2) = param_4; + *(undefined2 *)(pcVar5 + 4) = param_5; + *(ushort *)(pcVar5 + 6) = param_7; + if (-1 < param_2) { + memcpy(pcVar5 + 8,param_6,(ulong)param_7); + } + *(undefined1 *)((long)plVar4 + 9) = 0; + *(undefined1 *)((long)plVar4 + 10) = 0; + uVar1 = *(ushort *)(pcVar5 + 6); + plVar4[6] = (long)pcVar5; + *plVar4 = param_1; + *(undefined1 *)(plVar4 + 1) = 2; + *(undefined4 *)((long)plVar4 + 0xc) = param_8; + *(uint *)((long)plVar4 + 0x14) = uVar1 + 8; + plVar4[5] = (long)local_3c; + plVar4[4] = (long)FUN_00126ee0; + iVar2 = libusb_submit_transfer(plVar4); + if (iVar2 < 0) { + libusb_free_transfer(plVar4); + } + else { + FUN_00126f10(plVar4); + if (param_2 < '\0') { + memcpy(param_6,(void *)(plVar4[6] + 8),(long)(int)plVar4[3]); + } + switch((int)plVar4[2]) { + case 0: + iVar2 = (int)plVar4[3]; + break; + case 1: + case 3: + iVar2 = -1; + break; + case 2: + iVar2 = -7; + break; + case 4: + iVar2 = -9; + break; + case 5: + iVar2 = -4; + break; + case 6: + iVar2 = -8; + break; + default: + iVar2 = -99; + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),2, + "libusb_control_transfer","unrecognised status code %d"); + } + libusb_free_transfer(plVar4); + } + } + } + } + return iVar2; +} + + +================================================================== + +### FUNC 001273c0 (25 bytes) name=libusb_bulk_transfer + +void libusb_bulk_transfer(undefined8 param_1,undefined1 param_2) + +{ + FUN_00126f90(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 001273e0 (25 bytes) name=libusb_interrupt_transfer + +void libusb_interrupt_transfer(undefined8 param_1,undefined1 param_2) + +{ + FUN_00126f90(param_1,param_2); + return; +} + + +================================================================== + +### FUNC 00127400 (153 bytes) name=FUN_00127400 + +int FUN_00127400(int *param_1) + +{ + int iVar1; + uint uVar2; + int iVar3; + int *piVar4; + char *pcVar5; + + iVar1 = pipe(param_1); + if (iVar1 != 0) { + return iVar1; + } + uVar2 = fcntl(param_1[1],3); + if (uVar2 == 0xffffffff) { + piVar4 = __errno_location(); + pcVar5 = "Failed to get pipe fd flags: %d"; + iVar1 = *piVar4; + iVar3 = -1; + } + else { + iVar3 = fcntl(param_1[1],4,(ulong)uVar2 | 0x800); + if (iVar3 == 0) { + return 0; + } + piVar4 = __errno_location(); + iVar1 = *piVar4; + pcVar5 = "Failed to set non-blocking on new pipe: %d"; + } + FUN_00120cd0(0,4,"usbi_pipe",pcVar5,iVar1); + close(*param_1); + close(param_1[1]); + return iVar3; +} + + +================================================================== + +### FUNC 001274b0 (151 bytes) name=FUN_001274b0 + +void FUN_001274b0(pthread_cond_t *param_1,pthread_mutex_t *param_2,long *param_3) + +{ + int iVar1; + timespec local_38; + + iVar1 = (**(code **)(PTR_PTR_0033ed80 + 0x108))(1,&local_38); + if (-1 < iVar1) { + local_38.tv_sec = local_38.tv_sec + *param_3; + for (local_38.tv_nsec = param_3[1] * 1000 + local_38.tv_nsec; 999999999 < local_38.tv_nsec; + local_38.tv_nsec = local_38.tv_nsec + -1000000000) { + local_38.tv_sec = local_38.tv_sec + 1; + } + pthread_cond_timedwait(param_1,param_2,&local_38); + } + return; +} + + +================================================================== + +### FUNC 00127550 (21 bytes) name=FUN_00127550 + +void FUN_00127550(void) + +{ + syscall(0xba); + return; +} + + +================================================================== + +### FUNC 00127570 (7 bytes) name=FUN_00127570 + +undefined4 FUN_00127570(void) + +{ + return DAT_0033f5f4; +} + + +================================================================== + +### FUNC 00127580 (364 bytes) name=FUN_00127580 + +int FUN_00127580(undefined8 param_1,undefined8 param_2,undefined8 param_3) + +{ + int iVar1; + FILE *__stream; + int *piVar2; + long in_FS_OFFSET; + int local_103c; + char local_1038 [4104]; + long local_30; + + local_30 = *(long *)(in_FS_OFFSET + 0x28); + __snprintf_chk(local_1038,0x1000,1,0x1000,"%s/%s/%s","/sys/bus/usb/devices",param_2,param_3); + __stream = fopen(local_1038,"r"); + if (__stream == (FILE *)0x0) { + piVar2 = __errno_location(); + local_103c = -4; + if (*piVar2 != 2) { + FUN_00120cd0(param_1,1,"__read_sysfs_attr","open %s failed errno=%d",local_1038); + local_103c = -1; + } + } + else { + iVar1 = fscanf(__stream,"%d",&local_103c); + fclose(__stream); + if (iVar1 == 1) { + if (local_103c < 0) { + FUN_00120cd0(param_1,1,"__read_sysfs_attr","%s contains a negative value",local_1038); + local_103c = -1; + } + } + else { + piVar2 = __errno_location(); + FUN_00120cd0(param_1,1,"__read_sysfs_attr","fscanf %s returned %d, errno=%d",param_3,iVar1, + *piVar2); + local_103c = -4; + } + } + if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) { + return local_103c; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00127700 (203 bytes) name=FUN_00127700 + +int FUN_00127700(long param_1,undefined8 param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + long in_FS_OFFSET; + char local_1028 [4104]; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + __snprintf_chk(local_1028,0x1000,1,0x1000,"%s/%s/%s","/sys/bus/usb/devices", + *(undefined8 *)(param_1 + 0x80),param_2); + iVar1 = open(local_1028,0); + iVar3 = iVar1; + if (iVar1 < 0) { + piVar2 = __errno_location(); + iVar3 = -1; + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"_open_sysfs_attr", + "open %s failed ret=%d errno=%d",local_1028,iVar1,*piVar2); + } + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return iVar3; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001277d0 (41 bytes) name=FUN_001277d0 + +void FUN_001277d0(long param_1) + +{ + if (*(void **)(param_1 + 0x88) != (void *)0x0) { + free(*(void **)(param_1 + 0x88)); + } + if (*(void **)(param_1 + 0x80) != (void *)0x0) { + free(*(void **)(param_1 + 0x80)); + return; + } + return; +} + + +================================================================== + +### FUNC 00127810 (447 bytes) name=FUN_00127810 + +int FUN_00127810(long param_1,int param_2,int param_3) + +{ + undefined8 uVar1; + int iVar2; + int iVar3; + int *piVar4; + int __errnum; + char *pcVar5; + long in_FS_OFFSET; + timespec local_1058; + undefined1 local_1048 [4104]; + long local_40; + + uVar1 = *(undefined8 *)(param_1 + 0x30); + local_40 = *(long *)(in_FS_OFFSET + 0x28); + if (DAT_003666cc == 0) { + pcVar5 = "%s/%03d/%03d"; + } + else { + pcVar5 = "%s/usbdev%d.%d"; + } + __snprintf_chk(local_1048,0x1000,1,0x1000,pcVar5,DAT_003666d0,*(undefined1 *)(param_1 + 0x38), + *(undefined1 *)(param_1 + 0x48)); + iVar2 = __open_2(local_1048); + iVar3 = iVar2; + if (iVar2 != -1) goto LAB_00127895; + piVar4 = __errno_location(); + __errnum = *piVar4; + if (__errnum == 2) { + if (param_3 == 0) { + FUN_00120cd0(uVar1,1,"_get_usbfs_fd","File doesn\'t exist, wait %d ms and try again",10); + } + local_1058.tv_sec = 0; + local_1058.tv_nsec = 10000000; + nanosleep(&local_1058,(timespec *)0x0); + iVar3 = __open_2(local_1048,param_2); + if (iVar3 != -1) goto LAB_00127895; + __errnum = *piVar4; + } + if (param_3 == 0) { + pcVar5 = strerror(__errnum); + FUN_00120cd0(uVar1,1,"_get_usbfs_fd","libusb couldn\'t open USB device %s: %s",local_1048,pcVar5 + ); + __errnum = *piVar4; + if (__errnum == 0xd) { + if (param_2 == 2) { + FUN_00120cd0(uVar1,1,"_get_usbfs_fd","libusb requires write access to USB device nodes."); + __errnum = *piVar4; + goto LAB_001278e4; + } + goto LAB_0012797a; + } + } + else { +LAB_001278e4: + if (__errnum == 0xd) { +LAB_0012797a: + iVar3 = -3; + goto LAB_00127895; + } + } + iVar3 = iVar2; + if (__errnum == 2) { + iVar3 = -4; + } +LAB_00127895: + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar3; +} + + +================================================================== + +### FUNC 001279f0 (332 bytes) name=FUN_001279f0 + +undefined4 FUN_001279f0(int *param_1,int param_2,int param_3) + +{ + int iVar1; + long lVar2; + undefined4 uVar3; + int iVar4; + int *piVar5; + long lVar6; + int iVar7; + long lVar8; + long lVar9; + undefined4 local_40; + + iVar1 = *param_1; + lVar2 = *(long *)(param_1 + 0x1c); + param_3 = param_3 + -1; + if (param_3 < param_2) { + local_40 = 0; + } + else { + local_40 = 0; + lVar9 = (long)param_3 * 8; + lVar8 = (long)param_3 * 0x38; + iVar7 = param_3; + do { + if (*(char *)((long)param_1 + 0x7a) == '\x01') { + lVar6 = *(long *)(*(long *)(param_1 + (long)iVar1 * 3 + 0x2c) + lVar9); + } + else { + lVar6 = lVar8 + *(long *)(param_1 + (long)iVar1 * 3 + 0x2c); + } + iVar4 = ioctl(*(int *)(lVar2 + 0x4c),0x550b,lVar6); + uVar3 = local_40; + if (iVar4 != 0) { + piVar5 = __errno_location(); + if (*piVar5 == 0x16) { + FUN_00120cd0(0,4,"discard_urbs","URB not found --> assuming ready to be reaped"); + uVar3 = 0xfffffffb; + if (iVar7 != param_3) { + uVar3 = local_40; + } + } + else if (*piVar5 == 0x13) { + FUN_00120cd0(0,4,"discard_urbs","Device not found for URB --> assuming ready to be reaped" + ); + local_40 = 0xfffffffc; + uVar3 = local_40; + } + else { + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),2, + "discard_urbs","unrecognised discard errno %d"); + local_40 = 0xffffff9d; + uVar3 = local_40; + } + } + local_40 = uVar3; + iVar7 = iVar7 + -1; + lVar9 = lVar9 + -8; + lVar8 = lVar8 + -0x38; + } while (param_2 <= iVar7); + } + return local_40; +} + + +================================================================== + +### FUNC 00127b50 (90 bytes) name=FUN_00127b50 + +undefined8 FUN_00127b50(int *param_1) + +{ + long *plVar1; + undefined8 uVar2; + + plVar1 = (long *)(param_1 + (long)*param_1 * 3 + 0x2c); + if (*plVar1 == 0) { + uVar2 = 0xfffffffb; + } + else { + uVar2 = FUN_001279f0(param_1,0,*(int *)((long)plVar1 + 0xc)); + if ((int)uVar2 == 0) { + if (((*(char *)((long)param_1 + 0x7a) == '\x02') || + (*(char *)((long)param_1 + 0x7a) == '\x04')) && ((int)plVar1[1] == 4)) { + uVar2 = 0; + } + else { + *(int *)(plVar1 + 1) = 2; + uVar2 = 0; + } + } + } + return uVar2; +} + + +================================================================== + +### FUNC 00127bc0 (175 bytes) name=FUN_00127bc0 + +uint FUN_00127bc0(long param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + uint uVar3; + int *piVar4; + undefined4 local_28; + undefined4 local_24; + undefined8 local_20; + + local_24 = 0x5517; + local_20 = 0; + local_28 = param_2; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0xc0105512,&local_28); + if (iVar2 < 0) { + piVar4 = __errno_location(); + iVar1 = *piVar4; + if (iVar1 == 0x3d) { + uVar3 = 0xfffffffb; + } + else if (iVar1 == 0x16) { + uVar3 = 0xfffffffe; + } + else if (iVar1 == 0x13) { + uVar3 = 0xfffffffc; + } + else { + uVar3 = 0xfffffffa; + if (iVar1 != 0x10) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_attach_kernel_driver", + "attach failed error %d errno %d",iVar2); + return 0xffffff9d; + } + } + } + else { + uVar3 = -(uint)(iVar2 == 0) & 0xfffffffb; + } + return uVar3; +} + + +================================================================== + +### FUNC 00127c80 (109 bytes) name=FUN_00127c80 + +undefined8 FUN_00127c80(long param_1,undefined4 param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + undefined4 local_1c [3]; + + local_1c[0] = param_2; + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x80045510,local_1c); + uVar3 = 0; + if (iVar1 != 0) { + piVar2 = __errno_location(); + uVar3 = 0xfffffffc; + if (*piVar2 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"release_interface", + "release interface failed, error %d errno %d",iVar1); + uVar3 = 0xffffff9d; + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00127cf0 (135 bytes) name=FUN_00127cf0 + +undefined8 FUN_00127cf0(long param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + undefined4 local_1c [3]; + + local_1c[0] = param_2; + iVar2 = ioctl(*(int *)(param_1 + 0x4c),0x8004550f,local_1c); + uVar4 = 0; + if (iVar2 != 0) { + piVar3 = __errno_location(); + iVar1 = *piVar3; + if (iVar1 == 2) { + uVar4 = 0xfffffffb; + } + else if (iVar1 == 0x10) { + uVar4 = 0xfffffffa; + } + else { + uVar4 = 0xfffffffc; + if (iVar1 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"claim_interface", + "claim interface failed, error %d errno %d",iVar2); + uVar4 = 0xffffff9d; + } + } + } + return uVar4; +} + + +================================================================== + +### FUNC 00127d80 (126 bytes) name=FUN_00127d80 + +undefined8 FUN_00127d80(long param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + uint local_1c [3]; + + local_1c[0] = (uint)param_2; + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x80045515,local_1c); + uVar3 = 0; + if (iVar1 != 0) { + piVar2 = __errno_location(); + if (*piVar2 == 2) { + uVar3 = 0xfffffffb; + } + else { + uVar3 = 0xfffffffc; + if (*piVar2 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_clear_halt", + "clear_halt failed error %d errno %d",iVar1); + uVar3 = 0xffffff9d; + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00127e00 (123 bytes) name=FUN_00127e00 + +undefined8 FUN_00127e00(long param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + undefined4 local_28; + undefined4 local_24; + + local_28 = param_2; + local_24 = param_3; + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x80085504,&local_28); + uVar3 = 0; + if (iVar1 != 0) { + piVar2 = __errno_location(); + if (*piVar2 == 0x16) { + uVar3 = 0xfffffffb; + } + else { + uVar3 = 0xfffffffc; + if (*piVar2 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_set_interface", + "setintf failed error %d errno %d",iVar1); + uVar3 = 0xffffff9d; + } + } + } + return uVar3; +} + + +================================================================== + +### FUNC 00127e80 (164 bytes) name=FUN_00127e80 + +undefined8 FUN_00127e80(long param_1,undefined4 param_2) + +{ + int iVar1; + long lVar2; + int iVar3; + int *piVar4; + undefined8 uVar5; + undefined4 local_1c; + + lVar2 = *(long *)(param_1 + 0x40); + local_1c = param_2; + iVar3 = ioctl(*(int *)(param_1 + 0x4c),0x80045505,&local_1c); + if (iVar3 == 0) { + *(undefined4 *)(lVar2 + 0x94) = local_1c; + uVar5 = 0; + } + else { + piVar4 = __errno_location(); + iVar1 = *piVar4; + if (iVar1 == 0x16) { + uVar5 = 0xfffffffb; + } + else if (iVar1 == 0x10) { + uVar5 = 0xfffffffa; + } + else { + uVar5 = 0xfffffffc; + if (iVar1 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_set_configuration", + "failed, error %d errno %d",iVar3); + return 0xffffff9d; + } + } + } + return uVar5; +} + + +================================================================== + +### FUNC 00127f30 (257 bytes) name=FUN_00127f30 + +undefined8 FUN_00127f30(long param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + long lVar5; + char *pcVar6; + char *pcVar7; + long in_FS_OFFSET; + bool bVar8; + byte bVar9; + undefined4 local_138; + undefined4 local_134; + undefined8 local_130; + undefined4 local_128; + char local_124 [260]; + long local_20; + + bVar9 = 0; + iVar2 = *(int *)(param_1 + 0x4c); + local_20 = *(long *)(in_FS_OFFSET + 0x28); + local_134 = 0x5516; + local_130 = 0; + local_138 = param_2; + local_128 = param_2; + iVar1 = ioctl(iVar2,0x41045508,&local_128); + bVar8 = iVar1 == 0; + if (bVar8) { + lVar5 = 6; + pcVar6 = local_124; + pcVar7 = "usbfs"; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + bVar8 = *pcVar6 == *pcVar7; + pcVar6 = pcVar6 + (ulong)bVar9 * -2 + 1; + pcVar7 = pcVar7 + (ulong)bVar9 * -2 + 1; + } while (bVar8); + if (!bVar8) goto LAB_00127f9c; + } + else { +LAB_00127f9c: + iVar2 = ioctl(iVar2,0xc0105512,&local_138); + uVar4 = 0; + if (iVar2 == 0) goto LAB_00127fff; + piVar3 = __errno_location(); + iVar1 = *piVar3; + if (iVar1 != 0x3d) { + if (iVar1 == 0x16) { + uVar4 = 0xfffffffe; + } + else { + uVar4 = 0xfffffffc; + if (iVar1 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_detach_kernel_driver" + ,"detach failed error %d errno %d",iVar2); + uVar4 = 0xffffff9d; + } + } + goto LAB_00127fff; + } + } + uVar4 = 0xfffffffb; +LAB_00127fff: + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar4; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00128040 (193 bytes) name=FUN_00128040 + +ulong FUN_00128040(long param_1,undefined4 param_2) + +{ + int iVar1; + int *piVar2; + ulong uVar3; + long lVar4; + char *pcVar5; + char *pcVar6; + long in_FS_OFFSET; + bool bVar7; + byte bVar8; + undefined4 local_128; + char local_124 [260]; + long local_20; + + bVar8 = 0; + local_20 = *(long *)(in_FS_OFFSET + 0x28); + local_128 = param_2; + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x41045508,&local_128); + if (iVar1 == 0) { + lVar4 = 6; + bVar7 = true; + pcVar5 = local_124; + pcVar6 = "usbfs"; + do { + if (lVar4 == 0) break; + lVar4 = lVar4 + -1; + bVar7 = *pcVar5 == *pcVar6; + pcVar5 = pcVar5 + (ulong)bVar8 * -2 + 1; + pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1; + } while (bVar7); + uVar3 = (ulong)!bVar7; + } + else { + piVar2 = __errno_location(); + if (*piVar2 == 0x3d) { + uVar3 = 0; + } + else { + uVar3 = 0xfffffffc; + if (*piVar2 != 0x13) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_kernel_driver_active", + "get driver failed error %d errno %d",iVar1); + uVar3 = 0xffffff9d; + } + } + } + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar3; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 00128110 (399 bytes) name=FUN_00128110 + +int FUN_00128110(long param_1,undefined4 *param_2) + +{ + int __fd; + ssize_t sVar1; + long lVar2; + int *piVar3; + char *pcVar4; + undefined8 uVar5; + long in_FS_OFFSET; + char *local_40; + char local_38 [8]; + long local_30; + + local_30 = *(long *)(in_FS_OFFSET + 0x28); + local_38[0] = '\0'; + local_38[1] = 0; + local_38[2] = 0; + local_38[3] = 0; + local_38[4] = '\0'; + __fd = FUN_00127700(param_1,"bConfigurationValue"); + if (-1 < __fd) { + sVar1 = read(__fd,local_38,5); + close(__fd); + if (sVar1 < 0) { + piVar3 = __errno_location(); + __fd = -1; + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"sysfs_get_active_config", + "read bConfigurationValue failed ret=%d errno=%d",sVar1,*piVar3); + } + else if (sVar1 == 0) { + __fd = 0; + FUN_00120cd0(0,4,"sysfs_get_active_config","device unconfigured"); + *param_2 = 0xffffffff; + } + else { + if (local_38[4] == '\0') { + if (local_38[0] != '\0') { + lVar2 = strtol(local_38,&local_40,10); + if (local_40 == local_38) { + __fd = -1; + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),1,"sysfs_get_active_config", + "error converting \'%s\' to integer",local_38); + } + else { + *param_2 = (int)lVar2; + __fd = 0; + } + goto LAB_001281bb; + } + uVar5 = *(undefined8 *)(param_1 + 0x30); + pcVar4 = "no configuration value?"; + } + else { + uVar5 = *(undefined8 *)(param_1 + 0x30); + pcVar4 = "not null-terminated?"; + } + __fd = -1; + FUN_00120cd0(uVar5,1,"sysfs_get_active_config",pcVar4); + } + } +LAB_001281bb: + if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) { + return __fd; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001282b0 (47 bytes) name=FUN_001282b0 + +void FUN_001282b0(long param_1) + +{ + if (*(int *)(param_1 + 0x50) == 0) { + FUN_001268c0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),*(undefined4 *)(param_1 + 0x4c)); + } + if (*(int *)(param_1 + 0x54) != 0) { + return; + } + close(*(int *)(param_1 + 0x4c)); + return; +} + + +================================================================== + +### FUNC 001282f0 (1114 bytes) name=FUN_001282f0 + +undefined8 FUN_001282f0(int *param_1) + +{ + int *piVar1; + char cVar2; + long lVar3; + bool bVar4; + uint uVar5; + int iVar6; + undefined1 *__ptr; + int *piVar7; + undefined1 *puVar8; + size_t __nmemb; + int iVar9; + long lVar10; + byte bVar11; + undefined8 uVar12; + byte bVar13; + int iVar14; + int local_64; + int local_60; + + lVar3 = *(long *)(param_1 + 0x1c); + bVar13 = -((char)~*(byte *)((long)param_1 + 0x79) >> 7); + piVar1 = param_1 + (long)*param_1 * 3 + 0x2c; + if (bVar13 == 0) { + uVar5 = *(uint *)(lVar3 + 0x58); + } + else { + uVar5 = *(uint *)(lVar3 + 0x58); + if (((*(byte *)(param_1 + 0x1e) & 8) != 0) && ((uVar5 & 1) == 0)) { + return 0xfffffff4; + } + } + if ((uVar5 & 8) == 0) { + if ((uVar5 & 2) == 0) { + if ((uVar5 & 4) != 0) goto LAB_0012834d; + bVar11 = 0; + } + else { + bVar11 = 1; + } + iVar9 = param_1[0x21]; + if (iVar9 == 0) { + __nmemb = 1; + local_60 = 0x4000; + bVar4 = false; + local_64 = 1; + goto LAB_00128382; + } + local_60 = 0x4000; + local_64 = iVar9 + 0x3fff; + if (-1 < iVar9) { + local_64 = iVar9; + } + iVar14 = iVar9 % 0x4000; + local_64 = local_64 >> 0xe; + } + else { +LAB_0012834d: + iVar9 = param_1[0x21]; + if (iVar9 == 0) { + __nmemb = 1; + iVar9 = 0; + bVar11 = 0; + local_60 = 1; + bVar4 = false; + local_64 = 1; + goto LAB_00128382; + } + bVar11 = 0; + local_64 = iVar9 / iVar9; + iVar14 = iVar9 % iVar9; + local_60 = iVar9; + } + if (iVar14 < 1) { + __nmemb = (size_t)local_64; + bVar4 = false; + } + else { + local_64 = local_64 + 1; + bVar4 = true; + __nmemb = (size_t)local_64; + } +LAB_00128382: + FUN_00120cd0(0,4,"submit_bulk_transfer","need %d urbs for new transfer with length %d",local_64, + iVar9); + __ptr = calloc(__nmemb,0x38); + if (__ptr == (undefined1 *)0x0) { + uVar12 = 0xfffffff5; + } + else { + *(undefined1 **)piVar1 = __ptr; + piVar1[3] = local_64; + piVar1[4] = 0; + piVar1[2] = 0; + piVar1[5] = 0; + if (0 < local_64) { + iVar14 = 0; + lVar10 = 0; + iVar9 = local_64 + -1; + puVar8 = __ptr; + do { + *(int **)(puVar8 + 0x30) = param_1; + cVar2 = *(char *)((long)param_1 + 0x7a); + if (cVar2 == '\x03') { + *puVar8 = 1; + } + else if (cVar2 == '\x04') { + *puVar8 = 3; + *(int *)(puVar8 + 0x24) = param_1[0xf]; + } + else if (cVar2 == '\x02') { + *puVar8 = 3; + *(undefined4 *)(puVar8 + 0x24) = 0; + } + puVar8[1] = *(undefined1 *)((long)param_1 + 0x79); + *(long *)(puVar8 + 0x10) = lVar10 + *(long *)(param_1 + 0x28); + if ((((bVar13 ^ 1) & bVar11) != 0) && (iVar14 < iVar9)) { + *(undefined4 *)(puVar8 + 8) = 1; + } + if ((iVar14 == iVar9) && (bVar4)) { + *(int *)(puVar8 + 0x18) = param_1[0x21] % local_60; + } + else { + iVar6 = 0; + if (param_1[0x21] != 0) { + iVar6 = local_60; + } + *(int *)(puVar8 + 0x18) = iVar6; + } + if ((0 < iVar14) && (bVar11 != 0)) { + *(uint *)(puVar8 + 8) = *(uint *)(puVar8 + 8) | 4; + } + if (((bVar13 != 0) && (iVar14 == iVar9)) && ((*(byte *)(param_1 + 0x1e) & 8) != 0)) { + *(uint *)(puVar8 + 8) = *(uint *)(puVar8 + 8) | 0x40; + } + iVar6 = ioctl(*(int *)(lVar3 + 0x4c),0x8038550a,puVar8); + if (iVar6 < 0) { + piVar7 = __errno_location(); + uVar12 = 0xfffffffc; + if (*piVar7 != 0x13) { + uVar12 = 0xffffffff; + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "submit_bulk_transfer","submiturb failed error %d errno=%d",iVar6); + } + if (iVar14 == 0) { + FUN_00120cd0(0,4,"submit_bulk_transfer","first URB failed, easy peasy"); + free(__ptr); + piVar1[0] = 0; + piVar1[1] = 0; + return uVar12; + } + if (*piVar7 != 0x79) { + piVar1[4] = piVar1[4] + (local_64 - iVar14); + piVar1[2] = 1; + FUN_001279f0(param_1,0,iVar14); + FUN_00120cd0(0,4,"submit_bulk_transfer", + "reporting successful submission but waiting for %d discards before reporting error" + ,iVar14); + return 0; + } + piVar1[4] = piVar1[4] + (local_64 - iVar14); + piVar1[2] = 3; + break; + } + iVar14 = iVar14 + 1; + puVar8 = puVar8 + 0x38; + lVar10 = lVar10 + local_60; + } while (iVar14 != local_64); + } + uVar12 = 0; + } + return uVar12; +} + + +================================================================== + +### FUNC 00128770 (64 bytes) name=FUN_00128770 + +undefined8 FUN_00128770(long param_1,undefined8 *param_2,uint *param_3) + +{ + undefined8 *puVar1; + uint uVar2; + + if (*(long *)(param_1 + 0x80) == 0) { + uVar2 = 1; + } + else { + uVar2 = (uint)(DAT_0033f5ec == 0); + } + *param_3 = uVar2; + puVar1 = *(undefined8 **)(param_1 + 0x88); + *param_2 = *puVar1; + param_2[1] = puVar1[1]; + *(undefined2 *)(param_2 + 2) = *(undefined2 *)(puVar1 + 2); + return 0; +} + + +================================================================== + +### FUNC 001287c0 (262 bytes) name=FUN_001287c0 + +int FUN_001287c0(long param_1,ulong param_2,undefined4 param_3,void *param_4,int param_5) + +{ + int iVar1; + int iVar2; + undefined4 *__ptr; + int *piVar3; + + iVar2 = *(int *)(param_1 + 0x4c); + if (param_5 < 0x1f) { + __ptr = malloc((long)param_5 + 8); + if (__ptr == (undefined4 *)0x0) { + return -0xb; + } + __ptr[1] = param_5; + *__ptr = param_3; + memcpy(__ptr + 2,param_4,(long)param_5); + iVar2 = ioctl(iVar2,param_2,__ptr); + free(__ptr); + if (-1 < iVar2) { + return iVar2; + } + piVar3 = __errno_location(); + iVar1 = *piVar3; + if (iVar1 == 0x19) { + return -0xc; + } + if (iVar1 != 0x16) { + if (iVar1 == 0x13) { + return -4; + } + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"do_streams_ioctl", + "streams-ioctl failed error %d errno %d",iVar2); + return -99; + } + } + return -2; +} + + +================================================================== + +### FUNC 001288e0 (18 bytes) name=FUN_001288e0 + +void FUN_001288e0(undefined8 param_1,undefined8 param_2,undefined4 param_3) + +{ + FUN_001287c0(param_1,0x8008551d,0,param_2,param_3); + return; +} + + +================================================================== + +### FUNC 00128900 (18 bytes) name=FUN_00128900 + +void FUN_00128900(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined4 param_4) + +{ + FUN_001287c0(param_1,0x8008551c,param_2,param_3,param_4); + return; +} + + +================================================================== + +### FUNC 00128920 (171 bytes) name=FUN_00128920 + +void FUN_00128920(long param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + *(int *)(param_1 + 0x4c) = param_2; + iVar1 = ioctl(param_2,0x8004551a,param_1 + 0x58); + if (iVar1 < 0) { + piVar2 = __errno_location(); + if (*piVar2 == 0x19) { + FUN_00120cd0(0,4,"initialize_handle","getcap not available"); + } + else { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"initialize_handle", + "getcap failed (%d)"); + } + iVar1 = DAT_0033f5f8; + *(undefined4 *)(param_1 + 0x58) = 0; + if (iVar1 != 0) { + *(undefined4 *)(param_1 + 0x58) = 1; + } + if (DAT_0033f5fc != 0) { + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) | 2; + } + } + FUN_001267e0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),*(undefined4 *)(param_1 + 0x4c),4); + return; +} + + +================================================================== + +### FUNC 001289e0 (5 bytes) name=thunk_FUN_0012c710 + +void thunk_FUN_0012c710(void) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366660); + do { + iVar1 = FUN_0012bd00(); + } while (iVar1 == 0); + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366660); + return; +} + + +================================================================== + +### FUNC 001289f0 (73 bytes) name=FUN_001289f0 + +undefined8 FUN_001289f0(char *param_1) + +{ + DIR *__dirp; + dirent *pdVar1; + undefined8 uVar2; + + __dirp = opendir(param_1); + if (__dirp == (DIR *)0x0) { + return 0; + } + do { + pdVar1 = readdir(__dirp); + if (pdVar1 == (dirent *)0x0) { + uVar2 = 0; + goto LAB_00128a1b; + } + } while (pdVar1->d_name[0] == '.'); + uVar2 = 1; +LAB_00128a1b: + closedir(__dirp); + return uVar2; +} + + +================================================================== + +### FUNC 00128a50 (100 bytes) name=FUN_00128a50 + +void FUN_00128a50(undefined8 *param_1,int *param_2) + +{ + void *__ptr; + int iVar1; + long lVar2; + long *__ptr_00; + + __ptr_00 = (long *)*param_1; + if ((0 < *param_2) && (__ptr = (void *)*__ptr_00, __ptr != (void *)0x0)) { + lVar2 = 8; + iVar1 = 0; + do { + iVar1 = iVar1 + 1; + free(__ptr); + __ptr_00 = (long *)*param_1; + if (*param_2 <= iVar1) break; + __ptr = *(void **)((long)__ptr_00 + lVar2); + lVar2 = lVar2 + 8; + } while (__ptr != (void *)0x0); + } + free(__ptr_00); + *param_1 = 0; + return; +} + + +================================================================== + +### FUNC 00128ac0 (123 bytes) name=FUN_00128ac0 + +void FUN_00128ac0(int *param_1) + +{ + long *plVar1; + byte bVar2; + + bVar2 = *(byte *)((long)param_1 + 0x7a); + plVar1 = (long *)(param_1 + (long)*param_1 * 3 + 0x2c); + if (bVar2 == 1) { + if (*plVar1 != 0) { + FUN_00128a50(plVar1,(int *)((long)plVar1 + 0xc)); + *plVar1 = 0; + return; + } + } + else { + if ((bVar2 != 0) && (4 < bVar2)) { + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "op_clear_transfer_priv","unknown endpoint type %d"); + return; + } + if ((void *)*plVar1 != (void *)0x0) { + free((void *)*plVar1); + *plVar1 = 0; + } + } + return; +} + + +================================================================== + +### FUNC 00128b50 (1252 bytes) name=FUN_00128b50 + +undefined8 FUN_00128b50(int *param_1) + +{ + undefined1 uVar1; + long lVar2; + undefined8 uVar3; + uint uVar4; + undefined8 uVar5; + void *pvVar6; + undefined1 *puVar7; + int *piVar8; + int *piVar9; + uint uVar10; + int iVar11; + int iVar12; + ulong uVar13; + int iVar14; + undefined1 *puVar15; + long lVar16; + long lVar17; + long lVar18; + size_t sVar19; + int iVar20; + long lVar21; + + switch(*(undefined1 *)((long)param_1 + 0x7a)) { + case 0: + lVar2 = *(long *)(param_1 + 0x1c); + piVar8 = param_1 + (long)*param_1 * 3 + 0x2c; + if (0x1000 < (long)param_1[0x21] - 8U) { + return 0xfffffffe; + } + puVar7 = calloc(1,0x38); + if (puVar7 != (undefined1 *)0x0) { + *(undefined1 **)piVar8 = puVar7; + piVar8[3] = 1; + piVar8[2] = 0; + *puVar7 = 2; + *(int **)(puVar7 + 0x30) = param_1; + puVar7[1] = *(undefined1 *)((long)param_1 + 0x79); + iVar12 = *(int *)(lVar2 + 0x4c); + *(undefined8 *)(puVar7 + 0x10) = *(undefined8 *)(param_1 + 0x28); + *(int *)(puVar7 + 0x18) = param_1[0x21]; + iVar12 = ioctl(iVar12,0x8038550a,puVar7); + if (-1 < iVar12) { + return 0; + } + free(puVar7); + piVar8[0] = 0; + piVar8[1] = 0; + piVar8 = __errno_location(); + if (*piVar8 == 0x13) { + return 0xfffffffc; + } + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "submit_control_transfer","submiturb failed error %d errno=%d",iVar12); + return 0xffffffff; + } + break; + case 1: + lVar2 = *(long *)(param_1 + 0x1c); + iVar12 = *param_1; + lVar18 = *(long *)(param_1 + 0x28); + if (param_1[0x2a] < 1) { + sVar19 = 1; + iVar14 = 1; + } + else { + iVar14 = 1; + piVar8 = param_1 + 0x1c; + uVar10 = 0; + do { + while (uVar4 = *(uint *)((long)piVar8 + (-0x34 - (long)param_1) + (long)(param_1 + 0x1c)), + uVar4 <= 0x600000 - uVar10) { + piVar8 = piVar8 + 3; + uVar10 = uVar10 + uVar4; + if (piVar8 == param_1 + (ulong)(param_1[0x2a] - 1) * 3 + 0x1f) goto LAB_00128c18; + } + iVar14 = iVar14 + 1; + if (0x600000 < (int)uVar4) { + return 0xfffffffe; + } + piVar8 = piVar8 + 3; + uVar10 = uVar4; + } while (piVar8 != param_1 + (ulong)(param_1[0x2a] - 1) * 3 + 0x1f); +LAB_00128c18: + sVar19 = (size_t)iVar14; + } + FUN_00120cd0(0,4,"submit_iso_transfer","need %d %dk URBs for transfer",iVar14,0x1800); + pvVar6 = calloc(sVar19,8); + if (pvVar6 != (void *)0x0) { + lVar21 = 0; + iVar20 = 0; + piVar8 = param_1 + (long)iVar12 * 3 + 0x2c; + *(void **)piVar8 = pvVar6; + piVar8[3] = iVar14; + piVar8[4] = 0; + piVar8[2] = 0; + piVar8[6] = 0; + do { + lVar17 = lVar18; + if ((iVar20 < param_1[0x2a]) && + (uVar10 = param_1[(long)iVar20 * 3 + 0x2b], uVar10 < 0x600001)) { + iVar12 = 0; + uVar4 = 0x600000; + do { + iVar12 = iVar12 + 1; + uVar4 = uVar4 - uVar10; + lVar17 = lVar17 + (ulong)uVar10; + if (iVar12 == param_1[0x2a] - iVar20) break; + uVar10 = param_1[(long)(iVar20 + iVar12) * 3 + 0x2b]; + } while (uVar10 <= uVar4); + sVar19 = (long)iVar12 * 0xc + 0x38; + iVar20 = iVar20 + iVar12; + } + else { + sVar19 = 0x38; + iVar12 = 0; + } + puVar7 = calloc(1,sVar19); + if (puVar7 == (undefined1 *)0x0) { + FUN_00128a50(piVar8,piVar8 + 3); + return 0xfffffff5; + } + *(undefined1 **)((long)pvVar6 + lVar21 * 8) = puVar7; + iVar11 = iVar20 - iVar12; + puVar15 = puVar7; + if (iVar11 < iVar20) { + do { + lVar16 = (long)iVar11; + iVar11 = iVar11 + 1; + *(int *)(puVar15 + 0x38) = param_1[lVar16 * 3 + 0x2b]; + puVar15 = puVar15 + 0xc; + } while (iVar11 != iVar20); + } + *(int **)(puVar7 + 0x30) = param_1; + *puVar7 = 0; + lVar21 = lVar21 + 1; + *(undefined4 *)(puVar7 + 8) = 2; + uVar1 = *(undefined1 *)((long)param_1 + 0x79); + *(int *)(puVar7 + 0x24) = iVar12; + *(long *)(puVar7 + 0x10) = lVar18; + puVar7[1] = uVar1; + lVar18 = lVar17; + if (iVar14 <= (int)lVar21) { + uVar13 = 0; + while (iVar12 = ioctl(*(int *)(lVar2 + 0x4c),0x8038550a, + *(undefined8 *)((long)pvVar6 + uVar13 * 8)), -1 < iVar12) { + uVar13 = uVar13 + 1; + if (iVar14 <= (int)uVar13) { + return 0; + } + } + uVar5 = 0xfffffffc; + piVar9 = __errno_location(); + if (*piVar9 != 0x13) { + uVar3 = *(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30); + if (*piVar9 == 0x16) { + uVar5 = 0xfffffffe; + FUN_00120cd0(uVar3,2,"submit_iso_transfer","submiturb failed, transfer too large", + iVar12); + } + else { + uVar5 = 0xffffffff; + FUN_00120cd0(uVar3,1,"submit_iso_transfer","submiturb failed error %d errno=%d",iVar12 + ); + } + } + if ((int)uVar13 == 0) { + FUN_00120cd0(0,4,"submit_iso_transfer","first URB failed, easy peasy"); + FUN_00128a50(piVar8,piVar8 + 3); + return uVar5; + } + piVar8[2] = 1; + piVar8[4] = iVar14 - (int)uVar13; + FUN_001279f0(param_1,0,uVar13 & 0xffffffff); + FUN_00120cd0(0,4,"submit_iso_transfer", + "reporting successful submission but waiting for %d discards before reporting error" + ,uVar13 & 0xffffffff); + return 0; + } + } while( true ); + } + break; + case 2: + case 3: + case 4: + uVar5 = FUN_001282f0(); + return uVar5; + default: + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(param_1 + 0x1c) + 0x40) + 0x30),1, + "op_submit_transfer","unknown endpoint type %d"); + return 0xfffffffe; + } + return 0xfffffff5; +} + + +================================================================== + +### FUNC 00129050 (240 bytes) name=FUN_00129050 + +undefined8 FUN_00129050(long param_1,int param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + byte local_39 [17]; + byte *local_28; + + local_39[3] = 0; + local_39[4] = 0; + local_28 = local_39; + local_39[5] = 0; + local_39[6] = 0; + local_39[0] = 0; + local_39[1] = 0x80; + local_39[2] = 8; + local_39[7] = 1; + local_39[8] = 0; + local_39[9] = 0xe8; + local_39[10] = 3; + local_39[0xb] = 0; + local_39[0xc] = 0; + iVar1 = ioctl(param_2,0xc0185500,local_39 + 1); + if (iVar1 < 0) { + piVar2 = __errno_location(); + if (*piVar2 != 0x13) { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),2,"usbfs_get_active_config", + "get_configuration failed ret=%d errno=%d",iVar1); + *(undefined4 *)(param_1 + 0x94) = 0xffffffff; + return 0; + } + uVar3 = 0xfffffffc; + } + else { + if (local_39[0] == 0) { + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),2,"usbfs_get_active_config", + "active cfg 0? assuming unconfigured device"); + *(undefined4 *)(param_1 + 0x94) = 0xffffffff; + return 0; + } + *(uint *)(param_1 + 0x94) = (uint)local_39[0]; + uVar3 = 0; + } + return uVar3; +} + + +================================================================== + +### FUNC 00129160 (974 bytes) name=FUN_00129160 + +/* WARNING: Type propagation algorithm not settling */ + +int FUN_00129160(long param_1,undefined1 param_2,undefined1 param_3,long param_4,int param_5) + +{ + undefined8 uVar1; + void *__ptr; + int iVar2; + int iVar3; + long lVar4; + __off_t _Var5; + ssize_t sVar6; + void *pvVar7; + int *piVar8; + int iVar9; + undefined1 local_68 [5]; + byte local_63; + + uVar1 = *(undefined8 *)(param_1 + 0x30); + *(undefined1 *)(param_1 + 0x38) = param_2; + *(undefined1 *)(param_1 + 0x48) = param_3; + if (param_4 == 0) { +LAB_001291f7: + if (-1 < param_5) { + _Var5 = lseek(param_5,0,0); + iVar3 = param_5; + if (_Var5 < 0) { + piVar8 = __errno_location(); + FUN_00120cd0(uVar1,1,"initialize_device","seek failed ret=%d errno=%d",_Var5,*piVar8); + return -1; + } + goto LAB_0012921b; + } + iVar3 = FUN_00127810(param_1,0); + } + else { + lVar4 = __strdup(param_4); + *(long *)(param_1 + 0x80) = lVar4; + if (lVar4 == 0) { + return -0xb; + } + iVar2 = FUN_00127580(*(undefined8 *)(param_1 + 0x30),param_4,"speed"); + iVar3 = DAT_0033f5ec; + if (-1 < iVar2) { + if (iVar2 == 0xc) { + *(undefined4 *)(param_1 + 0x4c) = 2; + } + else if (iVar2 < 0xd) { + if (iVar2 == 1) { + *(undefined4 *)(param_1 + 0x4c) = 1; + } + else { +LAB_00129420: + FUN_00120cd0(*(undefined8 *)(param_1 + 0x30),2,"initialize_device", + "Unknown device speed: %d Mbps",iVar2); + iVar3 = DAT_0033f5ec; + } + } + else if (iVar2 == 0x1e0) { + *(undefined4 *)(param_1 + 0x4c) = 3; + } + else { + if (iVar2 != 5000) goto LAB_00129420; + *(undefined4 *)(param_1 + 0x4c) = 4; + iVar3 = DAT_0033f5ec; + } + } + if (iVar3 == 0) goto LAB_001291f7; + iVar3 = FUN_00127700(param_1,"descriptors"); + } + if (iVar3 < 0) { + return iVar3; + } +LAB_0012921b: + iVar2 = 0x200; + while( true ) { + __ptr = *(void **)(param_1 + 0x88); + iVar2 = iVar2 * 2; + pvVar7 = realloc(__ptr,(long)iVar2); + if (pvVar7 == (void *)0x0) { + free(__ptr); + *(undefined8 *)(param_1 + 0x88) = 0; + if (iVar3 != param_5) { + close(iVar3); + } + return -0xb; + } + *(void **)(param_1 + 0x88) = pvVar7; + if ((param_4 == 0) || (DAT_0033f5ec == 0)) { + memset((void *)((long)*(int *)(param_1 + 0x90) + (long)pvVar7),0, + (long)(iVar2 - *(int *)(param_1 + 0x90))); + pvVar7 = *(void **)(param_1 + 0x88); + } + sVar6 = read(iVar3,(void *)((long)pvVar7 + (long)*(int *)(param_1 + 0x90)), + (long)(iVar2 - *(int *)(param_1 + 0x90))); + if (sVar6 < 0) break; + iVar9 = *(int *)(param_1 + 0x90) + (int)sVar6; + *(int *)(param_1 + 0x90) = iVar9; + if (iVar2 != iVar9) { + if (iVar3 != param_5) { + close(iVar3); + iVar9 = *(int *)(param_1 + 0x90); + } + if (iVar9 < 0x12) { + iVar3 = -1; + FUN_00120cd0(uVar1,1,"initialize_device","short descriptor read (%d)"); + } + else if ((param_4 == 0) || (iVar3 = 0, DAT_0033f5f0 == 0)) { + if (param_5 < 0) { + iVar2 = FUN_00127810(param_1,2,1); + if (iVar2 < 0) { + FUN_00120cd0(uVar1,2,"initialize_device", + "Missing rw usbfs access; cannot determine active configuration descriptor" + ); + if (*(int *)(param_1 + 0x90) < 0x1b) { + *(undefined4 *)(param_1 + 0x94) = 0xffffffff; + iVar3 = 0; + } + else { + iVar3 = 0; + FUN_00122b20(*(long *)(param_1 + 0x88) + 0x12,"bbwbbbbb",local_68,0); + *(uint *)(param_1 + 0x94) = (uint)local_63; + } + } + else { + iVar3 = FUN_00129050(param_1,iVar2); + close(iVar2); + } + } + else { + iVar3 = FUN_00129050(param_1,param_5); + } + } + return iVar3; + } + } + piVar8 = __errno_location(); + FUN_00120cd0(uVar1,1,"initialize_device","read descriptor failed ret=%d errno=%d",iVar3,*piVar8); + if (iVar3 != param_5) { + close(iVar3); + return -1; + } + return -1; +} + + +================================================================== + +### FUNC 00129560 (53 bytes) name=FUN_00129560 + +ulong FUN_00129560(long param_1,undefined4 param_2) + +{ + ulong uVar1; + + uVar1 = FUN_00127c80(); + if (((int)uVar1 == 0) && + (uVar1 = (ulong)*(uint *)(param_1 + 0x48), *(uint *)(param_1 + 0x48) != 0)) { + FUN_00127bc0(param_1,param_2); + return 0; + } + return uVar1; +} + + +================================================================== + +### FUNC 001295a0 (239 bytes) name=FUN_001295a0 + +int FUN_001295a0(long param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + int *piVar3; + long in_FS_OFFSET; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + undefined2 local_11c; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + local_120 = 0x66627375; + local_11c = 0x73; + local_124 = 2; + local_128 = param_2; + iVar1 = ioctl(*(int *)(param_1 + 0x4c),0x8108551b,&local_128); + iVar2 = 0; + if (iVar1 != 0) { + piVar3 = __errno_location(); + iVar1 = *piVar3; + if (iVar1 == 0x19) { + iVar2 = FUN_00127f30(param_1,param_2); + if ((iVar2 == -5) || (iVar2 == 0)) { + iVar2 = FUN_00127cf0(param_1,param_2); + } + } + else { + iVar2 = -4; + if (((iVar1 != 0x13) && (iVar2 = -2, iVar1 != 0x16)) && (iVar2 = -6, iVar1 != 0x10)) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1, + "detach_kernel_driver_and_claim","disconnect-and-claim failed errno %d"); + iVar2 = -99; + } + } + } + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return iVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 001296a0 (17 bytes) name=FUN_001296a0 + +void FUN_001296a0(long param_1) + +{ + if (*(int *)(param_1 + 0x48) == 0) { + FUN_00127cf0(); + return; + } + FUN_001295a0(); + return; +} + + +================================================================== + +### FUNC 001296c0 (287 bytes) name=FUN_001296c0 + +undefined8 FUN_001296c0(pthread_mutex_t *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + int iVar5; + ulong uVar6; + undefined8 uVar7; + + iVar1 = *(int *)((long)param_1 + 0x4c); + iVar2 = 0; + do { + while ((param_1[1].__align & 1L << ((byte)iVar2 & 0x3f)) != 0) { + iVar5 = iVar2 + 1; + FUN_00127c80(param_1,iVar2); + iVar2 = iVar5; + if (iVar5 == 0x20) goto LAB_00129708; + } + iVar2 = iVar2 + 1; + } while (iVar2 != 0x20); +LAB_00129708: + pthread_mutex_lock(param_1); + iVar1 = ioctl(iVar1,0x5514,0); + if (iVar1 == 0) { + uVar7 = 0; + iVar1 = 0; + do { + uVar6 = 1L << ((byte)iVar1 & 0x3f); + if ((param_1[1].__align & uVar6) != 0) { + iVar2 = FUN_001295a0(param_1,iVar1); + if (iVar2 != 0) { + uVar7 = 0xfffffffb; + uVar4 = libusb_error_name(iVar2); + FUN_00120cd0(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),2,"op_reset_device", + "failed to re-claim interface %d after reset: %s",iVar1,uVar4); + param_1[1].__align = param_1[1].__align & ~uVar6; + } + } + iVar1 = iVar1 + 1; + } while (iVar1 != 0x20); + } + else { + piVar3 = __errno_location(); + uVar7 = 0xfffffffb; + if (*piVar3 != 0x13) { + uVar7 = 0xffffff9d; + FUN_00120cd0(*(undefined8 *)(*(long *)((long)param_1 + 0x40) + 0x30),1,"op_reset_device", + "reset failed error %d errno %d",iVar1); + } + } + pthread_mutex_unlock(param_1); + return uVar7; +} + + +================================================================== + +### FUNC 00129800 (147 bytes) name=FUN_00129800 + +int FUN_00129800(long param_1,int *param_2) + +{ + long lVar1; + int iVar2; + + lVar1 = *(long *)(param_1 + 0x40); + if ((*(long *)(lVar1 + 0x80) == 0) || (DAT_0033f5f0 == 0)) { + iVar2 = FUN_00129050(lVar1,*(undefined4 *)(param_1 + 0x4c)); + if (iVar2 == 0) { + iVar2 = *(int *)(lVar1 + 0x94); + *param_2 = iVar2; + goto joined_r0x00129867; + } + } + else { + iVar2 = FUN_00128110(lVar1); + } + if (iVar2 < 0) { + return iVar2; + } + iVar2 = *param_2; +joined_r0x00129867: + if (iVar2 != -1) { + return 0; + } + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_get_configuration", + "device unconfigured"); + *param_2 = 0; + return 0; +} + + +================================================================== + +### FUNC 001298a0 (33 bytes) name=FUN_001298a0 + +int FUN_001298a0(int param_1,timespec *param_2) + +{ + int iVar1; + + if (param_1 == 0) { + iVar1 = clock_gettime(DAT_0033f5f4,param_2); + return iVar1; + } + if (param_1 == 1) { + iVar1 = clock_gettime(0,param_2); + return iVar1; + } + return -2; +} + + +================================================================== + +### FUNC 001298d0 (2646 bytes) name=FUN_001298d0 + +undefined8 FUN_001298d0(long param_1) + +{ + int *piVar1; + pthread_mutex_t *ppVar2; + long *plVar3; + int *piVar4; + byte bVar5; + int iVar6; + uint uVar7; + int iVar8; + int iVar9; + int *piVar10; + long lVar11; + undefined8 uVar12; + undefined8 *puVar13; + undefined4 uVar14; + undefined1 *puVar15; + void *__dest; + int iVar16; + int local_4c; + undefined1 *local_40 [2]; + + iVar8 = ioctl(*(int *)(param_1 + 0x4c),0x4008550d,local_40); + if (iVar8 == -1) { + piVar10 = __errno_location(); + iVar9 = *piVar10; + if (iVar9 == 0xb) { + return 1; + } +LAB_00129a08: + if (iVar9 == 0x13) { + return 0xfffffffc; + } + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"reap_for_handle", + "reap failed error %d errno=%d",iVar8); + return 0xffffffff; + } + if (iVar8 < 0) { + piVar10 = __errno_location(); + iVar9 = *piVar10; + goto LAB_00129a08; + } + piVar10 = *(int **)(local_40[0] + 0x30); + FUN_00120cd0(0,4,"reap_for_handle","urb type=%d status=%d transferred=%d",*local_40[0], + *(undefined4 *)(local_40[0] + 4),*(undefined4 *)(local_40[0] + 0x1c)); + bVar5 = *(byte *)((long)piVar10 + 0x7a); + if (bVar5 == 1) { + piVar4 = piVar10 + (long)*piVar10 * 3 + 0x2c; + iVar8 = piVar4[3]; + ppVar2 = (pthread_mutex_t *)(piVar10 + 0x12); + pthread_mutex_lock(ppVar2); + if (iVar8 < 1) { +LAB_00129b79: + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(piVar10 + 0x1c) + 0x40) + 0x30),1, + "handle_iso_completion","could not locate urb!"); + pthread_mutex_unlock(ppVar2); + return 0xfffffffb; + } + puVar13 = *(undefined8 **)piVar4; + if (local_40[0] == (undefined1 *)*puVar13) { + local_4c = 1; + } + else { + iVar9 = 0; + do { + local_4c = iVar9; + puVar13 = puVar13 + 1; + iVar9 = local_4c + 1; + if (iVar9 == iVar8) goto LAB_00129b79; + } while (local_40[0] != (undefined1 *)*puVar13); + local_4c = local_4c + 2; + } + FUN_00120cd0(0,4,"handle_iso_completion","handling completion status %d of iso urb %d/%d", + *(undefined4 *)(local_40[0] + 4),local_4c,iVar8); + if (0 < *(int *)(local_40[0] + 0x24)) { + iVar9 = 0; + puVar15 = local_40[0]; + do { + lVar11 = (long)piVar4[6]; + uVar7 = *(uint *)(puVar15 + 0x40); + piVar4[6] = piVar4[6] + 1; + piVar10[lVar11 * 3 + 0x2d] = 0; + if (uVar7 < 0xffffffbb) { + if (0xffffffb8 < uVar7) goto LAB_00129d8d; + if (uVar7 != 0xffffff98) { + if (uVar7 < 0xffffff99) { + if (uVar7 != 0) { + if (uVar7 == 0xffffff94) goto LAB_00129d1f; +LAB_00129cd2: + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(piVar10 + 0x1c) + 0x40) + 0x30),2, + "handle_iso_completion","unrecognised urb status %d"); + piVar10[lVar11 * 3 + 0x2d] = 1; + } + } + else { + if (uVar7 == 0xffffffac) goto LAB_00129d8d; + if (uVar7 != 0xffffffb5) goto LAB_00129cd2; + FUN_00120cd0(0,4,"handle_iso_completion","overflow error"); + piVar10[lVar11 * 3 + 0x2d] = 6; + } + } + } + else if (uVar7 == 0xffffffe0) { + FUN_00120cd0(0,4,"handle_iso_completion","detected endpoint stall"); + piVar10[lVar11 * 3 + 0x2d] = 4; + } + else { + if (uVar7 < 0xffffffe1) { + if (1 < uVar7 + 0x3f) goto LAB_00129cd2; + } + else if (uVar7 != 0xffffffee) { + if (uVar7 != 0xfffffffe) { + if (uVar7 != 0xffffffed) goto LAB_00129cd2; +LAB_00129d1f: + FUN_00120cd0(0,4,"handle_iso_completion","device removed"); + piVar10[lVar11 * 3 + 0x2d] = 5; + } + goto LAB_00129c68; + } +LAB_00129d8d: + FUN_00120cd0(0,4,"handle_iso_completion","low-level USB error %d"); + piVar10[lVar11 * 3 + 0x2d] = 1; + } +LAB_00129c68: + piVar1 = (int *)(puVar15 + 0x3c); + iVar9 = iVar9 + 1; + puVar15 = puVar15 + 0xc; + piVar10[lVar11 * 3 + 0x2c] = *piVar1; + } while (iVar9 < *(int *)(local_40[0] + 0x24)); + } + piVar4[4] = piVar4[4] + 1; + if (piVar4[2] == 0) { + iVar9 = *(int *)(local_40[0] + 4); + if (iVar9 == -0x68) { +LAB_0012a2c0: + uVar14 = 0; + } + else { + if (iVar9 < -0x67) { + if (iVar9 == -0x6c) { + uVar14 = 5; + FUN_00120cd0(0,4,"handle_iso_completion","device removed"); + goto LAB_00129e09; + } + } + else if ((iVar9 == -2) || (iVar9 == 0)) goto LAB_0012a2c0; + uVar14 = 1; + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(piVar10 + 0x1c) + 0x40) + 0x30),2, + "handle_iso_completion","unrecognised urb status %d"); + } +LAB_00129e09: + if (iVar8 == local_4c) { + FUN_00120cd0(0,4,"handle_iso_completion","last URB in transfer --> complete!"); + FUN_00128a50(piVar4,piVar4 + 3); + pthread_mutex_unlock(ppVar2); + uVar12 = FUN_00125c10(piVar10,uVar14); + return uVar12; + } +LAB_00129e17: + pthread_mutex_unlock(ppVar2); + return 0; + } + FUN_00120cd0(0,4,"handle_iso_completion","CANCEL: urb status %d", + *(undefined4 *)(local_40[0] + 4)); + if (iVar8 != piVar4[4]) goto LAB_00129e17; + FUN_00120cd0(0,4,"handle_iso_completion","CANCEL: last URB handled, reporting"); + FUN_00128a50(piVar4,piVar4 + 3); + if (piVar4[2] != 2) { + pthread_mutex_unlock(ppVar2); + uVar12 = FUN_00125c10(piVar10,1); + return uVar12; + } +LAB_0012a13e: + pthread_mutex_unlock((pthread_mutex_t *)(piVar10 + 0x12)); + goto LAB_0012a143; + } + if (bVar5 == 0) { + piVar4 = piVar10 + (long)*piVar10 * 3 + 0x2c; + pthread_mutex_lock((pthread_mutex_t *)(piVar10 + 0x12)); + FUN_00120cd0(0,4,"handle_control_completion","handling completion status %d", + *(undefined4 *)(local_40[0] + 4)); + piVar10[0xe] = piVar10[0xe] + *(int *)(local_40[0] + 0x1c); + iVar8 = *(int *)(local_40[0] + 4); + if (piVar4[2] != 2) { + switch(iVar8) { + case 0: + uVar14 = 0; + break; + case -0x6c: + case -0x13: + uVar14 = 5; + FUN_00120cd0(0,4,"handle_control_completion","device removed"); + break; + default: + uVar14 = 1; + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(piVar10 + 0x1c) + 0x40) + 0x30),2, + "handle_control_completion","unrecognised urb status %d"); + break; + case -0x54: + case -0x47: + case -0x46: + case -0x3f: + case -0x3e: + uVar14 = 1; + FUN_00120cd0(0,4,"handle_control_completion","low-level bus error occurred"); + break; + case -0x4b: + uVar14 = 6; + FUN_00120cd0(0,4,"handle_control_completion","control overflow error"); + break; + case -0x20: + uVar14 = 4; + FUN_00120cd0(0,4,"handle_control_completion","unsupported control request"); + break; + case -2: + uVar14 = 3; + } + free(*(void **)piVar4); + piVar4[0] = 0; + piVar4[1] = 0; + pthread_mutex_unlock((pthread_mutex_t *)(piVar10 + 0x12)); + uVar12 = FUN_00125c10(piVar10,uVar14); + return uVar12; + } + if ((iVar8 != -2) && (iVar8 != 0)) { + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(piVar10 + 0x1c) + 0x40) + 0x30),2, + "handle_control_completion","cancel: unrecognised urb status %d"); + } + free(*(void **)piVar4); + piVar4[0] = 0; + piVar4[1] = 0; + goto LAB_0012a13e; + } + if (4 < bVar5) { + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"reap_for_handle", + "unrecognised endpoint type %x"); + return 0xffffff9d; + } + ppVar2 = (pthread_mutex_t *)(piVar10 + 0x12); + plVar3 = (long *)(piVar10 + (long)*piVar10 * 3 + 0x2c); + iVar9 = (int)((long)local_40[0] - *plVar3 >> 3) * -0x49249249; + pthread_mutex_lock(ppVar2); + iVar8 = *(int *)((long)plVar3 + 0xc); + iVar16 = iVar9 + 1; + FUN_00120cd0(0,4,"handle_bulk_completion","handling completion status %d of bulk urb %d/%d", + *(undefined4 *)(local_40[0] + 4),iVar16,iVar8); + *(int *)(plVar3 + 2) = (int)plVar3[2] + 1; + if ((int)plVar3[1] != 0) { + FUN_00120cd0(0,4,"handle_bulk_completion","abnormal reap: urb status %d", + *(undefined4 *)(local_40[0] + 4)); + if (0 < *(int *)(local_40[0] + 0x1c)) { + __dest = (void *)((long)piVar10[0xe] + *(long *)(piVar10 + 0x28)); + FUN_00120cd0(0,4,"handle_bulk_completion","received %d bytes of surplus data"); + if (__dest != *(void **)(local_40[0] + 0x10)) { + FUN_00120cd0(0,4,"handle_bulk_completion","moving surplus data from offset %d to offset %d", + (long)*(void **)(local_40[0] + 0x10) - *(long *)(piVar10 + 0x28), + (long)__dest - *(long *)(piVar10 + 0x28),iVar8); + memmove(__dest,*(void **)(local_40[0] + 0x10),(long)*(int *)(local_40[0] + 0x1c)); + } + piVar10[0xe] = piVar10[0xe] + *(int *)(local_40[0] + 0x1c); + } + if ((int)plVar3[2] == *(int *)((long)plVar3 + 0xc)) { + FUN_00120cd0(0,4,"handle_bulk_completion","abnormal reap: last URB handled, reporting"); + if (((int)plVar3[1] != 3) && (*(int *)((long)plVar3 + 0x14) == 0)) { + *(int *)((long)plVar3 + 0x14) = 1; + } + goto LAB_00129eb0; + } + goto LAB_00129f2b; + } + uVar14 = *(undefined4 *)(local_40[0] + 4); + iVar6 = *(int *)(local_40[0] + 0x1c); + piVar10[0xe] = piVar10[0xe] + iVar6; + switch(uVar14) { + case 0xffffff87: + case 0xffffff98: + case 0xfffffffe: + case 0: + if (iVar9 == *(int *)((long)plVar3 + 0xc) + -1) { + FUN_00120cd0(0,4,"handle_bulk_completion","last URB in transfer --> complete!"); + goto LAB_00129eb0; + } + if (*(int *)(local_40[0] + 0x18) <= iVar6) goto LAB_00129f2b; + FUN_00120cd0(0,4,"handle_bulk_completion","short transfer %d/%d --> complete!",iVar6, + *(int *)(local_40[0] + 0x18),iVar8); + iVar8 = (int)plVar3[1]; + if (iVar8 != 0) goto LAB_00129f60; + *(int *)(plVar3 + 1) = 3; + goto LAB_00129f18; + default: + FUN_00120cd0(*(undefined8 *)(*(long *)(*(long *)(piVar10 + 0x1c) + 0x40) + 0x30),2, + "handle_bulk_completion","unrecognised urb status %d"); + *(int *)(plVar3 + 1) = 4; + break; + case 0xffffff94: + case 0xffffffed: + FUN_00120cd0(0,4,"handle_bulk_completion","device removed"); + iVar8 = (int)plVar3[1]; + *(int *)((long)plVar3 + 0x14) = 5; + goto LAB_00129f60; + case 0xffffffac: + case 0xffffffb9: + case 0xffffffba: + case 0xffffffc1: + case 0xffffffc2: + FUN_00120cd0(0,4,"handle_bulk_completion","low level error %d"); + *(int *)(plVar3 + 1) = 4; + break; + case 0xffffffb5: + FUN_00120cd0(0,4,"handle_bulk_completion","overflow, actual_length=%d",iVar6); + if (*(int *)((long)plVar3 + 0x14) == 0) { + *(int *)((long)plVar3 + 0x14) = 6; + } + goto LAB_00129eb0; + case 0xffffffe0: + FUN_00120cd0(0,4,"handle_bulk_completion","detected endpoint stall"); + if (*(int *)((long)plVar3 + 0x14) == 0) { + *(int *)((long)plVar3 + 0x14) = 4; + iVar8 = (int)plVar3[1]; + } + else { + iVar8 = (int)plVar3[1]; + } +LAB_00129f60: + if (iVar8 == 4) break; + goto LAB_00129f18; + } + if (*(int *)((long)plVar3 + 0x14) == 0) { + *(int *)((long)plVar3 + 0x14) = 1; + } +LAB_00129f18: + if ((int)plVar3[2] == *(int *)((long)plVar3 + 0xc)) { +LAB_00129eb0: + free((void *)*plVar3); + *plVar3 = 0; + pthread_mutex_unlock(ppVar2); + if ((int)plVar3[1] == 2) { +LAB_0012a143: + uVar12 = FUN_00125d60(piVar10); + } + else { + uVar12 = FUN_00125c10(piVar10,*(int *)((long)plVar3 + 0x14)); + } + } + else { + FUN_001279f0(piVar10,iVar16); +LAB_00129f2b: + pthread_mutex_unlock(ppVar2); + uVar12 = 0; + } + return uVar12; +} + + +================================================================== + +### FUNC 0012a380 (70 bytes) name=FUN_0012a380 + +undefined4 FUN_0012a380(long param_1,void *param_2,size_t param_3) + +{ + int iVar1; + int *piVar2; + + iVar1 = munmap(param_2,param_3); + if (iVar1 == 0) { + return 0; + } + piVar2 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_dev_mem_free", + "free dev mem failed errno %d",*piVar2); + return 0xffffff9d; +} + + +================================================================== + +### FUNC 0012a3d0 (82 bytes) name=FUN_0012a3d0 + +void * FUN_0012a3d0(long param_1,size_t param_2) + +{ + void *pvVar1; + int *piVar2; + + pvVar1 = mmap((void *)0x0,param_2,3,1,*(int *)(param_1 + 0x4c),0); + if (pvVar1 != (void *)0xffffffffffffffff) { + return pvVar1; + } + piVar2 = __errno_location(); + FUN_00120cd0(*(undefined8 *)(*(long *)(param_1 + 0x40) + 0x30),1,"op_dev_mem_alloc", + "alloc dev mem failed errno %d",*piVar2); + return (void *)0x0; +} + + +================================================================== + +### FUNC 0012a430 (91 bytes) name=FUN_0012a430 + +void FUN_0012a430(void) + +{ + pthread_mutex_lock((pthread_mutex_t *)&DAT_003666a0); + if (DAT_003666c8 != 0) { + DAT_003666c8 = DAT_003666c8 + -1; + if (DAT_003666c8 == 0) { + FUN_0012c640(); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003666a0); + return; + } + /* WARNING: Subroutine does not return */ + __assert_fail("init_count != 0","os/linux_usbfs.c",0x1d8,"op_exit"); +} + + +================================================================== + +### FUNC 0012a490 (481 bytes) name=FUN_0012a490 + +uint FUN_0012a490(long param_1,long param_2,uint param_3) + +{ + undefined8 uVar1; + uint uVar2; + char *pcVar3; + uint uVar4; + int iVar5; + uint uVar6; + byte local_78; + char local_77; + undefined1 local_68; + char local_67; + ushort local_66; + + uVar1 = *(undefined8 *)(param_1 + 0x30); + if (param_3 == 0) { + uVar4 = 0xfffffffb; + } + else if ((int)param_3 < 9) { + FUN_00120cd0(uVar1,1,"seek_to_next_config","short descriptor read %d/%d",param_3,9); + uVar4 = 0xffffffff; + } + else { + FUN_00122b20(param_2,"bbwbbbbb",&local_68,0); + pcVar3 = "descriptor is not a config desc (type 0x%02x)"; + if (local_67 != '\x02') { +LAB_0012a636: + FUN_00120cd0(uVar1,1,"seek_to_next_config",pcVar3); + return 0xffffffff; + } + if ((*(long *)(param_1 + 0x80) == 0) || (DAT_0033f5ec == 0)) { + if (local_66 < 9) { + pcVar3 = "invalid wTotalLength %d"; + goto LAB_0012a636; + } + uVar4 = (uint)local_66; + if ((int)param_3 < (int)(uint)local_66) { + pcVar3 = "short descriptor read %d/%d"; + uVar6 = param_3; + uVar4 = (uint)local_66; + goto LAB_0012a535; + } + } + else { + uVar6 = 0; + FUN_00122b20(param_2,"bb",&local_78,0); + uVar4 = param_3; + do { + uVar6 = uVar6 + local_78; + uVar4 = uVar4 - local_78; + if ((int)uVar4 < 0) { + iVar5 = -uVar4; + pcVar3 = "bLength overflow by %d bytes"; +LAB_0012a5ec: + FUN_00120cd0(uVar1,1,"seek_to_next_descriptor",pcVar3,iVar5); + return 0xffffffff; + } + uVar2 = param_3; + if (uVar4 == 0) break; + if (uVar4 == 1) { + iVar5 = 1; + pcVar3 = "short descriptor read %d/2"; + goto LAB_0012a5ec; + } + FUN_00122b20((int)uVar6 + param_2,"bb",&local_78,0); + } while ((uVar6 == 0) || (uVar2 = uVar6, local_77 != '\x02')); + param_3 = uVar2; + uVar4 = (uint)local_66; + uVar6 = (uint)local_66; + if (uVar6 != param_3) { + pcVar3 = "config length mismatch wTotalLength %d real %d"; + uVar4 = param_3; +LAB_0012a535: + FUN_00120cd0(uVar1,2,"seek_to_next_config",pcVar3,uVar6,uVar4); + return param_3; + } + } + } + return uVar4; +} + + +================================================================== + +### FUNC 0012a690 (103 bytes) name=FUN_0012a690 + +void FUN_0012a690(long param_1,char param_2,long *param_3,undefined4 *param_4) + +{ + int iVar1; + long lVar2; + int iVar3; + + lVar2 = *(long *)(param_1 + 0x88); + iVar3 = *(int *)(param_1 + 0x90); + *param_3 = 0; + *param_4 = 0; + lVar2 = lVar2 + 0x12; + iVar3 = iVar3 + -0x12; + while( true ) { + iVar1 = FUN_0012a490(param_1,lVar2,iVar3); + if (iVar1 < 0) { + return; + } + if (*(char *)(lVar2 + 5) == param_2) break; + iVar3 = iVar3 - iVar1; + lVar2 = lVar2 + iVar1; + } + *param_3 = lVar2; + return; +} + + +================================================================== + +### FUNC 0012a700 (150 bytes) name=FUN_0012a700 + +ulong FUN_0012a700(long param_1,void *param_2,ulong param_3,undefined8 param_4) + +{ + int iVar1; + ulong uVar2; + uint local_24; + void *local_20; + + if ((*(long *)(param_1 + 0x80) == 0) || (DAT_0033f5f0 == 0)) { + local_24 = *(uint *)(param_1 + 0x94); + } + else { + uVar2 = FUN_00128110(param_1,&local_24); + if ((int)uVar2 < 0) { + return uVar2; + } + } + if (local_24 == 0xffffffff) { + uVar2 = 0xfffffffb; + } + else { + uVar2 = FUN_0012a690(param_1,local_24 & 0xff,&local_20,param_4); + iVar1 = (int)uVar2; + if (-1 < iVar1) { + if ((ulong)(long)iVar1 <= param_3) { + param_3 = (long)iVar1; + } + memcpy(param_2,local_20,param_3); + uVar2 = param_3 & 0xffffffff; + } + } + return uVar2; +} + + +================================================================== + +### FUNC 0012a7a0 (156 bytes) name=FUN_0012a7a0 + +ulong FUN_0012a7a0(long param_1,byte param_2,void *param_3,ulong param_4,undefined4 *param_5) + +{ + long lVar1; + int iVar2; + ulong uVar3; + void *__src; + uint uVar4; + int iVar5; + + uVar4 = 0; + lVar1 = *(long *)(param_1 + 0x88); + iVar5 = *(int *)(param_1 + 0x90); + *param_5 = 0; + __src = (void *)(lVar1 + 0x12); + iVar5 = iVar5 + -0x12; + while( true ) { + uVar3 = FUN_0012a490(param_1,__src,iVar5); + iVar2 = (int)uVar3; + if (iVar2 < 0) { + return uVar3; + } + if (param_2 == uVar4) break; + iVar5 = iVar5 - iVar2; + uVar4 = uVar4 + 1; + __src = (void *)((long)__src + (long)iVar2); + } + if ((ulong)(long)iVar2 <= param_4) { + param_4 = (long)iVar2; + } + memcpy(param_3,__src,param_4); + return param_4 & 0xffffffff; +} + + +================================================================== + +### FUNC 0012a850 (196 bytes) name=FUN_0012a850 + +ulong FUN_0012a850(int param_1) + +{ + int iVar1; + ulong uVar2; + long in_FS_OFFSET; + int local_1b4; + int local_1b0; + int local_1ac; + utsname local_1a8; + long local_20; + + local_20 = *(long *)(in_FS_OFFSET + 0x28); + iVar1 = uname(&local_1a8); + if (-1 < iVar1) { + iVar1 = sscanf(local_1a8.release,"%d.%d.%d",&local_1b4,&local_1b0,&local_1ac); + if (0 < iVar1) { + uVar2 = 1; + if (((local_1b4 < 3) && (uVar2 = 0, local_1b4 == 2)) && (iVar1 != 1)) { + uVar2 = 1; + if ((local_1b0 < 7) && (uVar2 = 0, local_1b0 == 6)) { + if (iVar1 == 2) { + uVar2 = (ulong)(param_1 == 0); + } + else { + uVar2 = (ulong)(param_1 <= local_1ac); + } + } + } + goto LAB_0012a8e0; + } + } + uVar2 = 0xffffffff; +LAB_0012a8e0: + if (local_20 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar2; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0012a920 (541 bytes) name=FUN_0012a920 + +int FUN_0012a920(undefined8 param_1,int param_2,undefined1 *param_3,undefined1 *param_4, + byte *param_5,long param_6,int param_7) + +{ + int iVar1; + ssize_t sVar2; + long lVar3; + byte *pbVar4; + byte *pbVar5; + long in_FS_OFFSET; + bool bVar6; + bool bVar7; + bool bVar8; + byte bVar9; + char acStack_2048 [4096]; + byte local_1048 [4104]; + long local_40; + + bVar9 = 0; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + FUN_00120cd0(0,4,"linux_get_device_address","getting address for device: %s detached: %d",param_6, + param_2); + if (((DAT_0033f5f0 != 0) && (param_2 == 0)) && (param_6 != 0)) { + FUN_00120cd0(0,4,"linux_get_device_address","scan %s",param_6); + iVar1 = FUN_00127580(param_1,param_6,"busnum"); + if (iVar1 < 0) goto LAB_0012a9eb; + if (iVar1 < 0x100) { + *param_3 = (char)iVar1; + iVar1 = FUN_00127580(param_1,param_6,"devnum"); + if (iVar1 < 0) goto LAB_0012a9eb; + if (iVar1 < 0x100) { + *param_4 = (char)iVar1; + FUN_00120cd0(0,4,"linux_get_device_address","bus=%d dev=%d",*param_3,iVar1); + iVar1 = 0; + goto LAB_0012a9eb; + } + } + iVar1 = -2; + goto LAB_0012a9eb; + } + bVar8 = false; + if (param_5 == (byte *)0x0) { + if (-1 < param_7) { + param_5 = local_1048; + __snprintf_chk(acStack_2048,0x1000,1,0x1000,"/proc/self/fd/%d",param_7); + sVar2 = readlink(acStack_2048,(char *)param_5,0x1000); + bVar8 = sVar2 == 0; + if (0 < sVar2) goto LAB_0012a990; + } + } + else { +LAB_0012a990: + bVar6 = false; + lVar3 = 0xc; + pbVar4 = param_5; + pbVar5 = (byte *)"/dev/bus/usb"; + do { + if (lVar3 == 0) break; + lVar3 = lVar3 + -1; + bVar6 = *pbVar4 < *pbVar5; + bVar8 = *pbVar4 == *pbVar5; + pbVar4 = pbVar4 + (ulong)bVar9 * -2 + 1; + pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1; + } while (bVar8); + bVar7 = false; + if ((!bVar6 && !bVar8) == bVar6) { + sscanf((char *)param_5,"/dev/bus/usb/%hhu/%hhu",param_3,param_4); + iVar1 = 0; + goto LAB_0012a9eb; + } + lVar3 = 0xd; + bVar8 = false; + pbVar4 = param_5; + pbVar5 = (byte *)"/proc/bus/usb"; + do { + if (lVar3 == 0) break; + lVar3 = lVar3 + -1; + bVar7 = *pbVar4 < *pbVar5; + bVar8 = *pbVar4 == *pbVar5; + pbVar4 = pbVar4 + (ulong)bVar9 * -2 + 1; + pbVar5 = pbVar5 + (ulong)bVar9 * -2 + 1; + } while (bVar8); + if ((!bVar7 && !bVar8) == bVar7) { + sscanf((char *)param_5,"/proc/bus/usb/%hhu/%hhu",param_3,param_4); + iVar1 = 0; + goto LAB_0012a9eb; + } + } + iVar1 = -99; +LAB_0012a9eb: + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return iVar1; +} + + +================================================================== + +### FUNC 0012ab60 (309 bytes) name=FUN_0012ab60 + +ulong FUN_0012ab60(undefined8 param_1,long param_2,int param_3) + +{ + int iVar1; + long lVar2; + ulong uVar3; + int *piVar4; + undefined1 local_2a; + undefined1 local_29; + undefined1 local_28 [16]; + + iVar1 = FUN_0012a920(param_1,1,&local_2a,&local_29,0,0,param_3); + if (iVar1 < 0) { + iVar1 = ioctl(param_3,0x40085511,local_28); + if (iVar1 < 0) { + piVar4 = __errno_location(); + FUN_00120cd0(param_1,1,"op_wrap_fd","connectinfo failed (%d)",*piVar4); + return 0xffffffff; + } + local_2a = 0; + local_29 = local_28[0]; + } + FUN_00120cd0(0,4,"op_wrap_fd","allocating new device for fd %d",param_3); + lVar2 = FUN_00120870(param_1,0); + if (lVar2 == 0) { + return 0xfffffff5; + } + uVar3 = FUN_00129160(lVar2,local_2a,local_29,0,param_3); + if ((-1 < (int)uVar3) && (uVar3 = FUN_00120d60(lVar2), -1 < (int)uVar3)) { + *(undefined4 *)(lVar2 + 0x7c) = 1; + *(long *)(param_2 + 0x40) = lVar2; + uVar3 = FUN_00128920(param_2,param_3); + *(undefined4 *)(param_2 + 0x54) = 1; + if (-1 < (int)uVar3) { + return uVar3; + } + } + libusb_unref_device(lVar2); + return uVar3 & 0xffffffff; +} + + +================================================================== + +### FUNC 0012acb0 (814 bytes) name=FUN_0012acb0 + +int FUN_0012acb0(undefined8 param_1,undefined1 param_2,undefined1 param_3,char *param_4) + +{ + long lVar1; + undefined2 uVar2; + int iVar3; + long lVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + long lVar8; + bool bVar9; + byte bVar10; + char *local_40 [2]; + + bVar10 = 0; + uVar2 = CONCAT11(param_2,param_3); + FUN_00120cd0(0,4,"linux_enumerate_device","busnum %d devaddr %d session_id %ld",param_2,param_3, + uVar2); + lVar4 = FUN_00120650(param_1,uVar2); + if (lVar4 != 0) { + FUN_00120cd0(0,4,"linux_enumerate_device","session_id %ld already exists",uVar2); + libusb_unref_device(lVar4); + return 0; + } + FUN_00120cd0(0,4,"linux_enumerate_device","allocating new device for %d/%d (session %ld)",param_2, + param_3,uVar2); + lVar4 = FUN_00120870(param_1,uVar2); + if (lVar4 == 0) { + return -0xb; + } + iVar3 = FUN_00129160(lVar4,param_2,param_3,param_4,0xffffffff); + if ((iVar3 < 0) || (iVar3 = FUN_00120d60(lVar4), iVar3 < 0)) { +LAB_0012ae18: + libusb_unref_device(lVar4); + return iVar3; + } + bVar9 = param_4 == (char *)0x0; + lVar1 = *(long *)(lVar4 + 0x30); + if (!bVar9) { + lVar8 = 3; + pcVar5 = param_4; + pcVar6 = "usb"; + do { + if (lVar8 == 0) break; + lVar8 = lVar8 + -1; + bVar9 = *pcVar5 == *pcVar6; + pcVar5 = pcVar5 + (ulong)bVar10 * -2 + 1; + pcVar6 = pcVar6 + (ulong)bVar10 * -2 + 1; + } while (bVar9); + if (!bVar9) { + pcVar5 = (char *)__strdup(param_4); + local_40[0] = pcVar5; + if (pcVar5 != (char *)0x0) { + pcVar6 = strrchr(pcVar5,0x2e); + if ((pcVar6 == (char *)0x0) && (pcVar6 = strrchr(pcVar5,0x2d), pcVar6 == (char *)0x0)) { + FUN_00120cd0(lVar1,2,"linux_get_parent_info","Can not parse sysfs_dir: %s, no parent info" + ,pcVar5); + free(local_40[0]); + goto LAB_0012add0; + } + lVar8 = strtol(pcVar6 + 1,(char **)0x0,10); + pcVar5 = local_40[0]; + *(char *)(lVar4 + 0x39) = (char)lVar8; + *pcVar6 = '\0'; + pcVar6 = strchr(local_40[0],0x2d); + if (pcVar6 != (char *)0x0) { +LAB_0012ae92: + bVar9 = true; + do { + pthread_mutex_lock((pthread_mutex_t *)(lVar1 + 0x20)); + pcVar5 = local_40[0]; + for (lVar8 = *(long *)(lVar1 + 0x18); lVar1 + 0x10 != lVar8; + lVar8 = *(long *)(lVar8 + 8)) { + if ((*(char **)(lVar8 + 0x30) != (char *)0x0) && + (iVar3 = strcmp(*(char **)(lVar8 + 0x30),pcVar5), iVar3 == 0)) { + uVar7 = libusb_ref_device(lVar8 + -0x50); + *(undefined8 *)(lVar4 + 0x40) = uVar7; + break; + } + } + pthread_mutex_unlock((pthread_mutex_t *)(lVar1 + 0x20)); + if ((*(long *)(lVar4 + 0x40) != 0) || (!bVar9)) goto LAB_0012af00; + FUN_00120cd0(0,4,"linux_get_parent_info", + "parent_dev %s not enumerated yet, enumerating now",local_40[0]); + FUN_0012aff0(lVar1,local_40[0]); + bVar9 = false; + } while( true ); + } + iVar3 = __asprintf_chk(local_40,1,"usb%s",pcVar5); + free(pcVar5); + if (-1 < iVar3) goto LAB_0012ae92; + } + iVar3 = -0xb; + goto LAB_0012ae18; + } + } +LAB_0012add0: + FUN_001207e0(lVar4); + return 0; +LAB_0012af00: + FUN_00120cd0(0,4,"linux_get_parent_info","Dev %p (%s) has parent %p (%s) port %d",lVar4,param_4, + *(long *)(lVar4 + 0x40),local_40[0],*(undefined1 *)(lVar4 + 0x39)); + free(local_40[0]); + goto LAB_0012add0; +} + + +================================================================== + +### FUNC 0012aff0 (74 bytes) name=FUN_0012aff0 + +void FUN_0012aff0(undefined8 param_1,undefined8 param_2) + +{ + int iVar1; + undefined1 local_1a; + undefined1 local_19 [9]; + + iVar1 = FUN_0012a920(param_1,0,&local_1a,local_19,0,param_2,0xffffffff); + if (iVar1 == 0) { + FUN_0012acb0(param_1,local_1a,local_19[0],param_2); + } + return; +} + + +================================================================== + +### FUNC 0012b040 (398 bytes) name=FUN_0012b040 + +undefined8 FUN_0012b040(undefined8 param_1,undefined1 param_2) + +{ + char *__nptr; + int iVar1; + DIR *__dirp; + dirent *pdVar2; + ulong uVar3; + int *piVar4; + undefined8 uVar5; + long in_FS_OFFSET; + char local_1038 [4104]; + long local_30; + + local_30 = *(long *)(in_FS_OFFSET + 0x28); + __snprintf_chk(local_1038,0x1000,1,0x1000,"%s/%03d",DAT_003666d0,param_2); + FUN_00120cd0(0,4,"usbfs_scan_busdir","%s",local_1038); + __dirp = opendir(local_1038); + if (__dirp == (DIR *)0x0) { + piVar4 = __errno_location(); + uVar5 = 0xffffffff; + FUN_00120cd0(param_1,1,"usbfs_scan_busdir","opendir \'%s\' failed, errno=%d",local_1038,*piVar4) + ; + } + else { + uVar5 = 0xffffffff; +LAB_0012b0d0: + pdVar2 = readdir(__dirp); + if (pdVar2 != (dirent *)0x0) { + while (pdVar2->d_name[0] != '.') { + __nptr = pdVar2->d_name; + uVar3 = strtol(__nptr,(char **)0x0,10); + if ((int)uVar3 != 0) { + iVar1 = FUN_0012acb0(param_1,param_2,uVar3 & 0xff,0); + if (iVar1 == 0) { + uVar5 = 0; + } + else { + FUN_00120cd0(0,4,"usbfs_scan_busdir","failed to enumerate dir entry %s",__nptr); + } + break; + } + FUN_00120cd0(0,4,"usbfs_scan_busdir","unknown dir entry %s",__nptr); + pdVar2 = readdir(__dirp); + if (pdVar2 == (dirent *)0x0) goto LAB_0012b124; + } + goto LAB_0012b0d0; + } +LAB_0012b124: + closedir(__dirp); + } + if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) { + return uVar5; + } + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); +} + + +================================================================== + +### FUNC 0012b1e0 (1686 bytes) name=FUN_0012b1e0 + +int FUN_0012b1e0(undefined8 param_1) + +{ + int iVar1; + int iVar2; + DIR *pDVar3; + dirent *pdVar4; + long lVar5; + ushort **ppuVar6; + int *piVar7; + char *pcVar8; + char *pcVar9; + char *pcVar10; + bool bVar11; + byte bVar12; + undefined1 local_d0 [4]; + undefined1 local_cc [4]; + stat local_c8; + + bVar12 = 0; + pcVar9 = "/dev/bus/usb"; + iVar1 = FUN_001289f0("/dev/bus/usb"); + if (iVar1 == 0) { + iVar1 = FUN_001289f0("/proc/bus/usb"); + if (iVar1 == 0) { + pDVar3 = opendir("/dev"); + if (pDVar3 == (DIR *)0x0) { +LAB_0012b761: + pcVar9 = "could not find usbfs"; + DAT_003666d0 = (char *)0x0; + goto LAB_0012b773; + } + do { + pdVar4 = readdir(pDVar3); + if (pdVar4 == (dirent *)0x0) { + closedir(pDVar3); + goto LAB_0012b761; + } + iVar1 = sscanf(pdVar4->d_name,"usbdev%d.%d",local_cc,&local_c8); + } while (iVar1 != 2); + FUN_00120cd0(0,4,"_is_usbdev_entry","found: %s",pdVar4->d_name); + DAT_003666cc = 1; + pcVar9 = "/dev"; + closedir(pDVar3); + } + else { + pcVar9 = "/proc/bus/usb"; + } + } + FUN_00120cd0(0,4,"find_usbfs_path","found usbfs at %s",pcVar9); + DAT_003666d0 = pcVar9; + if (DAT_0033f5f4 == 0xffffffff) { + iVar1 = clock_gettime(1,(timespec *)&local_c8); + if (iVar1 != 0) { + piVar7 = __errno_location(); + FUN_00120cd0(0,4,"find_monotonic_clock","monotonic clock doesn\'t work, errno %d",*piVar7); + } + DAT_0033f5f4 = (uint)(iVar1 == 0); + } + if ((DAT_0033f5fc == -1) && (DAT_0033f5fc = FUN_0012a850(0x20), DAT_0033f5fc == -1)) { + pcVar9 = "error checking for bulk continuation support"; +LAB_0012b773: + FUN_00120cd0(param_1,1,"op_init",pcVar9); + return -99; + } + if (DAT_0033f5fc != 0) { + FUN_00120cd0(0,4,"op_init","bulk continuation flag supported"); + } + if ((DAT_0033f5f8 == -1) && (DAT_0033f5f8 = FUN_0012a850(0x1f), DAT_0033f5f8 == -1)) { + pcVar9 = "error checking for zero length packet support"; + goto LAB_0012b773; + } + if (DAT_0033f5f8 != 0) { + FUN_00120cd0(0,4,"op_init","zero length packet flag supported"); + } + if ((DAT_0033f5ec == -1) && (DAT_0033f5ec = FUN_0012a850(0x1a), DAT_0033f5ec == -1)) { + pcVar9 = "error checking for sysfs descriptors"; + goto LAB_0012b773; + } + if ((DAT_0033f5f0 == -1) && (DAT_0033f5f0 = FUN_0012a850(0x16), DAT_0033f5f0 == -1)) { + pcVar9 = "error checking for sysfs busnum"; + DAT_0033f5f0 = -1; + goto LAB_0012b773; + } + iVar1 = DAT_0033f5f0; + if ((DAT_0033f5f0 != 0) || (DAT_0033f5ec != 0)) { + iVar2 = __xstat(1,"/sys/bus/usb/devices",&local_c8); + if ((iVar2 == 0) && ((local_c8.st_mode & 0xf000) == 0x4000)) { + if (iVar1 != 0) { + FUN_00120cd0(0,4,"op_init","sysfs can relate devices"); + } + } + else { + FUN_00120cd0(param_1,2,"op_init","sysfs not mounted"); + DAT_0033f5f0 = 0; + DAT_0033f5ec = 0; + } + if (DAT_0033f5ec != 0) { + FUN_00120cd0(0,4,"op_init","sysfs has complete descriptors"); + } + } + pthread_mutex_lock((pthread_mutex_t *)&DAT_003666a0); + if ((DAT_003666c8 == 0) && (iVar1 = FUN_0012c330(), iVar1 != 0)) { + FUN_00120cd0(param_1,1,"op_init","error starting hotplug event monitor"); + goto LAB_0012b4ac; + } + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366660); + if (DAT_0033f5f0 == 0) { + pDVar3 = opendir(DAT_003666d0); + if (pDVar3 == (DIR *)0x0) { + piVar7 = __errno_location(); + iVar1 = *piVar7; + pcVar9 = "opendir buses failed errno=%d"; + pcVar8 = "usbfs_get_device_list"; +LAB_0012b882: + FUN_00120cd0(param_1,1,pcVar8,pcVar9,iVar1); + iVar1 = -1; + } + else { + iVar1 = 0; +LAB_0012b300: + do { + pdVar4 = readdir(pDVar3); + while( true ) { + if (pdVar4 == (dirent *)0x0) goto LAB_0012b488; + if (pdVar4->d_name[0] == '.') goto LAB_0012b300; + pcVar9 = pdVar4->d_name; + if (DAT_003666cc != 0) { + iVar2 = sscanf(pcVar9,"usbdev%d.%d",local_d0,local_cc); + if (iVar2 == 2) { + FUN_00120cd0(0,4,"_is_usbdev_entry","found: %s",pcVar9); + iVar1 = FUN_0012acb0(param_1,local_d0[0],local_cc[0],0); + if (iVar1 < 0) { + FUN_00120cd0(0,4,"usbfs_get_device_list","failed to enumerate dir entry %s",pcVar9); + } + } + goto LAB_0012b300; + } + lVar5 = strtol(pcVar9,(char **)0x0,10); + if ((int)lVar5 != 0) break; + FUN_00120cd0(0,4,"usbfs_get_device_list","unknown dir entry %s",pcVar9); + pdVar4 = readdir(pDVar3); + } + iVar1 = FUN_0012b040(param_1); + } while (-1 < iVar1); +LAB_0012b488: + closedir(pDVar3); + } + } + else { + pDVar3 = opendir("/sys/bus/usb/devices"); + if (pDVar3 == (DIR *)0x0) { + piVar7 = __errno_location(); + pcVar9 = "opendir devices failed errno=%d"; + iVar1 = *piVar7; + pcVar8 = "sysfs_get_device_list"; + goto LAB_0012b882; + } + iVar1 = -1; +LAB_0012b6b8: + pdVar4 = readdir(pDVar3); + if (pdVar4 != (dirent *)0x0) { + ppuVar6 = __ctype_b_loc(); + pcVar9 = pdVar4->d_name; + if ((*(byte *)((long)*ppuVar6 + (long)pdVar4->d_name[0] * 2 + 1) & 8) == 0) + goto code_r0x0012b6e4; + goto LAB_0012b6f5; + } + closedir(pDVar3); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366660); + if (iVar1 == 0) { + DAT_003666c8 = DAT_003666c8 + 1; + } + else if (DAT_003666c8 == 0) { + FUN_0012c640(); + } +LAB_0012b4ac: + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003666a0); + return iVar1; +code_r0x0012b6e4: + lVar5 = 3; + bVar11 = true; + pcVar8 = pcVar9; + pcVar10 = "usb"; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + bVar11 = *pcVar8 == *pcVar10; + pcVar8 = pcVar8 + (ulong)bVar12 * -2 + 1; + pcVar10 = pcVar10 + (ulong)bVar12 * -2 + 1; + } while (bVar11); + if (bVar11) { +LAB_0012b6f5: + pcVar8 = strchr(pcVar9,0x3a); + if (pcVar8 == (char *)0x0) { + iVar2 = FUN_0012aff0(param_1,pcVar9); + if (iVar2 == 0) { + iVar1 = 0; + } + else { + FUN_00120cd0(0,4,"sysfs_get_device_list","failed to enumerate dir entry %s",pcVar9); + } + } + } + goto LAB_0012b6b8; +} + + +================================================================== + +### FUNC 0012b8c0 (130 bytes) name=FUN_0012b8c0 + +void FUN_0012b8c0(undefined1 param_1,undefined1 param_2,undefined8 param_3) + +{ + undefined8 *puVar1; + + pthread_mutex_lock((pthread_mutex_t *)&DAT_003665c0); + for (puVar1 = DAT_003666e8; puVar1 != &DAT_003666e0; puVar1 = (undefined8 *)puVar1[1]) { + FUN_0012acb0(puVar1 + -0x41,param_1,param_2,param_3); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003665c0); + return; +} + + +================================================================== + +### FUNC 0012b950 (170 bytes) name=FUN_0012b950 + +void FUN_0012b950(undefined1 param_1,undefined1 param_2) + +{ + undefined8 *puVar1; + long lVar2; + + pthread_mutex_lock((pthread_mutex_t *)&DAT_003665c0); + puVar1 = DAT_003666e8; + if (DAT_003666e8 != &DAT_003666e0) { + do { + lVar2 = FUN_00120650(puVar1 + -0x41,CONCAT11(param_1,param_2)); + if (lVar2 == 0) { + FUN_00120cd0(0,4,"linux_device_disconnected","device not found for session %x", + CONCAT11(param_1,param_2)); + } + else { + FUN_00120910(lVar2); + libusb_unref_device(lVar2); + } + puVar1 = (undefined8 *)puVar1[1]; + } while (puVar1 != &DAT_003666e0); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_003665c0); + return; +} + + +================================================================== + +### FUNC 0012ba00 (435 bytes) name=FUN_0012ba00 + +int FUN_0012ba00(long param_1,long param_2,ulong param_3,int param_4) + +{ + int *piVar1; + int iVar2; + long lVar3; + int *piVar4; + int iVar5; + ulong uVar6; + uint uVar7; + long lVar8; + + pthread_mutex_lock((pthread_mutex_t *)(param_1 + 0x58)); + if ((param_3 == 0) || (param_4 < 1)) { +LAB_0012bade: + iVar5 = 0; +LAB_0012bae0: + pthread_mutex_unlock((pthread_mutex_t *)(param_1 + 0x58)); + return iVar5; + } + uVar6 = 0; + uVar7 = 0; +LAB_0012ba50: + piVar1 = (int *)(param_2 + uVar6 * 8); + if (*(ushort *)((long)piVar1 + 6) != 0) { + lVar3 = *(long *)(param_1 + 0x50); + param_4 = param_4 + -1; + lVar8 = lVar3 + -0x30; + if (param_1 + 0x48 == lVar3) { + iVar5 = *piVar1; + } + else { + iVar5 = *piVar1; + iVar2 = *(int *)(lVar3 + 0x1c); + while (piVar4 = (int *)(lVar3 + 0x1c), iVar2 != iVar5) { + lVar3 = *(long *)(lVar8 + 0x38); + lVar8 = lVar3 + -0x30; + if (param_1 + 0x48 == lVar3) break; + iVar2 = *(int *)(lVar3 + 0x1c); + } + if ((piVar4 != (int *)0x0) && (*piVar4 == iVar5)) { + if ((*(ushort *)((long)piVar1 + 6) & 8) == 0) { + do { + iVar5 = FUN_001298d0(lVar8); + } while (iVar5 == 0); + if ((iVar5 == -4) || (-1 < iVar5)) goto LAB_0012baca; + goto LAB_0012bae0; + } + FUN_001268c0(*(undefined8 *)(*(long *)(lVar8 + 0x40) + 0x30),iVar5); + piVar4[1] = 1; + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366660); + lVar3 = *(long *)(lVar8 + 0x40); + if (*(int *)(lVar3 + 0x7c) != 0) { + FUN_0012b950(*(undefined1 *)(lVar3 + 0x38),*(undefined1 *)(lVar3 + 0x48)); + } + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366660); + if ((*(byte *)(piVar4 + 3) & 0x10) != 0) { + do { + iVar5 = FUN_001298d0(lVar8); + } while (iVar5 == 0); + } + FUN_00126d90(lVar8); + goto LAB_0012baca; + } + } + FUN_00120cd0(param_1,1,"op_handle_events","cannot find handle for fd %d",iVar5); + } +LAB_0012baca: + uVar7 = uVar7 + 1; + uVar6 = (ulong)uVar7; + if ((param_3 <= uVar6) || (param_4 < 1)) goto LAB_0012bade; + goto LAB_0012ba50; +} + + +================================================================== + +### FUNC 0012bbd0 (159 bytes) name=FUN_0012bbd0 + +int FUN_0012bbd0(long param_1) + +{ + int __fd; + int iVar1; + + __fd = FUN_00127810(*(undefined8 *)(param_1 + 0x40),2,0); + if (__fd < 0) { + iVar1 = __fd; + if (__fd == -4) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366660); + if (*(int *)(*(long *)(param_1 + 0x40) + 0x7c) != 0) { + FUN_00120cd0(0,4,"op_open","open failed with no device, but device still attached"); + FUN_0012b950(*(undefined1 *)(*(long *)(param_1 + 0x40) + 0x38), + *(undefined1 *)(*(long *)(param_1 + 0x40) + 0x48)); + } + iVar1 = -4; + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366660); + } + } + else { + iVar1 = FUN_00128920(param_1,__fd); + if (iVar1 < 0) { + close(__fd); + } + } + return iVar1; +} + + +================================================================== + +### FUNC 0012bc80 (114 bytes) name=FUN_0012bc80 + +char * FUN_0012bc80(char *param_1,long param_2,char *param_3) + +{ + char *pcVar1; + int iVar2; + size_t __n; + size_t sVar3; + + pcVar1 = param_1 + param_2; + __n = strlen(param_3); + while( true ) { + if ((pcVar1 <= param_1) || (*param_1 == '\0')) { + return (char *)0x0; + } + iVar2 = strncmp(param_1,param_3,__n); + if ((iVar2 == 0) && (param_1[__n] == '=')) break; + sVar3 = strlen(param_1); + param_1 = param_1 + sVar3 + 1; + } + return param_1 + __n + 1; +} + + +================================================================== + +### FUNC 0012bd00 (1235 bytes) name=FUN_0012bd00 + +undefined4 FUN_0012bd00(void) + +{ + ssize_t sVar1; + int *piVar2; + char *pcVar3; + ulong uVar4; + ulong uVar5; + long lVar6; + char *pcVar7; + msghdr *pmVar8; + char *pcVar9; + undefined4 uVar10; + long in_FS_OFFSET; + bool bVar11; + bool bVar12; + byte bVar13; + undefined1 local_8c9; + undefined1 local_8c8 [4]; + int local_8c4; + int local_8c0; + iovec local_8b8; + msghdr local_8a8; + undefined1 local_868 [32]; + undefined1 local_848 [2056]; + long local_40; + + bVar13 = 0; + local_40 = *(long *)(in_FS_OFFSET + 0x28); + local_8b8.iov_len = 0x800; + pmVar8 = &local_8a8; + for (lVar6 = 7; lVar6 != 0; lVar6 = lVar6 + -1) { + pmVar8->msg_name = (void *)0x0; + pmVar8 = (msghdr *)&pmVar8->msg_namelen; + } + local_8a8.msg_name = local_8c8; + local_8a8.msg_namelen = 0xc; + local_8a8.msg_iovlen = 1; + local_8a8.msg_iov = &local_8b8; + local_8a8.msg_controllen = 0x20; + local_8a8.msg_control = local_868; + local_8b8.iov_base = local_848; + sVar1 = recvmsg(DAT_0033f608,&local_8a8,0); + if (sVar1 == -1) { + piVar2 = __errno_location(); + if ((*piVar2 != 4) && (*piVar2 != 0xb)) { + FUN_00120cd0(0,1,"linux_netlink_read_message","error receiving message from netlink (%d)"); + uVar10 = 0xffffffff; + goto LAB_0012be7e; + } + goto LAB_0012be78; + } + if ((sVar1 < 0x20) || ((local_8a8.msg_flags & 0x20U) != 0)) { + uVar10 = 0xffffffff; + FUN_00120cd0(0,1,"linux_netlink_read_message","invalid netlink message length"); + goto LAB_0012be7e; + } + if ((local_8c0 != 1) || (local_8c4 != 0)) { + uVar10 = 0xffffffff; + FUN_00120cd0(0,4,"linux_netlink_read_message", + "ignoring netlink message from unknown group/PID (%u/%u)"); + goto LAB_0012be7e; + } + if (((local_8a8.msg_controllen < 0x10) || (local_8a8.msg_control == (undefined1 *)0x0)) || + (*(int *)((long)local_8a8.msg_control + 0xc) != 2)) { + uVar10 = 0xffffffff; + FUN_00120cd0(0,4,"linux_netlink_read_message", + "ignoring netlink message with no sender credentials"); + goto LAB_0012be7e; + } + if (*(int *)((long)local_8a8.msg_control + 0x14) != 0) { + uVar10 = 0xffffffff; + FUN_00120cd0(0,4,"linux_netlink_read_message", + "ignoring netlink message with non-zero sender UID %u"); + goto LAB_0012be7e; + } + piVar2 = __errno_location(); + *piVar2 = 0; + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"ACTION"); + bVar11 = pcVar3 == (char *)0x0; + if (!bVar11) { + lVar6 = 7; + pcVar7 = pcVar3; + pcVar9 = "remove"; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + bVar11 = *pcVar7 == *pcVar9; + pcVar7 = pcVar7 + (ulong)bVar13 * -2 + 1; + pcVar9 = pcVar9 + (ulong)bVar13 * -2 + 1; + } while (bVar11); + if (bVar11) { + bVar11 = true; + } + else { + if (((*pcVar3 != 'a') || (pcVar3[1] != 'd')) || ((pcVar3[2] != 'd' || (pcVar3[3] != '\0')))) { + FUN_00120cd0(0,4,"linux_netlink_parse","unknown device action %s",pcVar3); + goto LAB_0012be78; + } + bVar11 = false; + } + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"SUBSYSTEM"); + if (((pcVar3 != (char *)0x0) && (*pcVar3 == 'u')) && + ((pcVar3[1] == 's' && ((pcVar3[2] == 'b' && (pcVar3[3] == '\0')))))) { + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"DEVTYPE"); + bVar12 = pcVar3 == (char *)0x0; + if (!bVar12) { + lVar6 = 0xb; + pcVar7 = "usb_device"; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + bVar12 = *pcVar3 == *pcVar7; + pcVar3 = pcVar3 + (ulong)bVar13 * -2 + 1; + pcVar7 = pcVar7 + (ulong)bVar13 * -2 + 1; + } while (bVar12); + if (bVar12) { + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"BUSNUM"); + if (pcVar3 == (char *)0x0) { + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"DEVICE"); + if ((pcVar3 != (char *)0x0) && (pcVar3 = strrchr(pcVar3,0x2f), pcVar3 != (char *)0x0)) { + uVar4 = strtoul(pcVar3 + -3,(char **)0x0,10); + uVar4 = uVar4 & 0xff; + if (*piVar2 == 0) { + pcVar7 = (char *)0x0; + uVar5 = strtoul(pcVar3 + 1,(char **)0x0,10); + local_8c9 = (undefined1)uVar5; + if (*piVar2 == 0) { +LAB_0012c00b: + uVar10 = 0; + if (bVar11) { + FUN_00120cd0(0,4,"linux_netlink_read_message", + "netlink hotplug found device busnum: %hhu, devaddr: %hhu, sys_name: %s, removed: %s" + ,uVar4,local_8c9,pcVar7,&DAT_00135ac3); + FUN_0012b950(uVar4,local_8c9); + } + else { + FUN_00120cd0(0,4,"linux_netlink_read_message", + "netlink hotplug found device busnum: %hhu, devaddr: %hhu, sys_name: %s, removed: %s" + ,uVar4,local_8c9,pcVar7,&DAT_00135ac7); + FUN_0012b8c0(uVar4,local_8c9,pcVar7); + } + goto LAB_0012be7e; + } + } + goto LAB_0012c150; + } + } + else { + uVar4 = strtoul(pcVar3,(char **)0x0,10); + uVar4 = uVar4 & 0xff; + if (*piVar2 == 0) { + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"DEVNUM"); + if (pcVar3 != (char *)0x0) { + uVar5 = strtoul(pcVar3,(char **)0x0,10); + local_8c9 = (undefined1)uVar5; + if (*piVar2 != 0) goto LAB_0012c150; + pcVar3 = (char *)FUN_0012bc80(local_848,sVar1,"DEVPATH"); + if (pcVar3 != (char *)0x0) { + pcVar3 = strrchr(pcVar3,0x2f); + pcVar7 = (char *)0x0; + if (pcVar3 != (char *)0x0) { + pcVar7 = pcVar3 + 1; + } + goto LAB_0012c00b; + } + } + } + else { +LAB_0012c150: + *piVar2 = 0; + } + } + } + } + } + } +LAB_0012be78: + uVar10 = 0xffffffff; +LAB_0012be7e: + if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) { + /* WARNING: Subroutine does not return */ + __stack_chk_fail(); + } + return uVar10; +} + + +================================================================== + +### FUNC 0012c210 (261 bytes) name=FUN_0012c210 + +undefined8 FUN_0012c210(void) + +{ + int iVar1; + ssize_t sVar2; + undefined1 local_29; + pollfd local_28; + ulong local_20; + + local_28.events = 1; + local_28.fd = DAT_0033f600; + local_28.revents = 0; + local_20 = (ulong)CONCAT24(1,DAT_0033f608); + FUN_00120cd0(0,4,"linux_netlink_event_thread_main","netlink event thread entering"); + do { + iVar1 = poll(&local_28,2,-1); + if (iVar1 < 0) { +LAB_0012c29c: + FUN_00120cd0(0,4,"linux_netlink_event_thread_main","netlink event thread exiting"); + return 0; + } + if (((ulong)local_28 & 0x1000000000000) != 0) { + sVar2 = read(DAT_0033f600,&local_29,1); + if (sVar2 < 1) { + FUN_00120cd0(0,2,"linux_netlink_event_thread_main","netlink control pipe read failed"); + } + goto LAB_0012c29c; + } + if ((local_20 & 0x1000000000000) != 0) { + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366660); + FUN_0012bd00(); + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366660); + } + } while( true ); +} + + +================================================================== + +### FUNC 0012c330 (756 bytes) name=FUN_0012c330 + +undefined8 FUN_0012c330(void) + +{ + int iVar1; + uint uVar2; + int iVar3; + int *piVar4; + char *pcVar5; + undefined4 local_2c; + sockaddr local_28; + + local_28.sa_data[6] = '\x01'; + local_28.sa_data[7] = '\0'; + local_28.sa_data[8] = '\0'; + local_28.sa_data[9] = '\0'; + local_28.sa_family = 0x10; + local_28.sa_data[0] = '\0'; + local_28.sa_data[1] = '\0'; + local_28.sa_data[2] = '\0'; + local_28.sa_data[3] = '\0'; + local_28.sa_data[4] = '\0'; + local_28.sa_data[5] = '\0'; + local_2c = 1; + iVar1 = socket(0x10,0x80803,0xf); + if (iVar1 == -1) { + DAT_0033f608 = iVar1; + piVar4 = __errno_location(); + iVar1 = *piVar4; + if (iVar1 != 0x16) { +LAB_0012c4e1: + FUN_00120cd0(0,1,"linux_netlink_start_event_monitor","failed to create netlink socket (%d)", + iVar1); + return 0xffffff9d; + } + FUN_00120cd0(0,4,"linux_netlink_start_event_monitor", + "failed to create netlink socket of type %d, attempting SOCK_RAW",0x80803); + iVar1 = socket(0x10,3,0xf); + if (iVar1 == -1) { + iVar1 = *piVar4; + DAT_0033f608 = -1; + goto LAB_0012c4e1; + } + } + DAT_0033f608 = iVar1; + uVar2 = fcntl(iVar1,1); + if (uVar2 == 0xffffffff) { + piVar4 = __errno_location(); + pcVar5 = "failed to get netlink fd flags (%d)"; + iVar1 = *piVar4; + } + else if (((uVar2 & 1) == 0) && (iVar3 = fcntl(iVar1,2,(ulong)(uVar2 | 1)), iVar3 == -1)) { + piVar4 = __errno_location(); + iVar1 = *piVar4; + pcVar5 = "failed to set netlink fd flags (%d)"; + } + else { + uVar2 = fcntl(iVar1,3); + if (uVar2 == 0xffffffff) { + piVar4 = __errno_location(); + pcVar5 = "failed to get netlink fd status flags (%d)"; + iVar1 = *piVar4; + } + else { + if (((uVar2 & 0x800) != 0) || (iVar1 = fcntl(iVar1,4,(ulong)(uVar2 | 0x800)), iVar1 != -1)) { + iVar1 = DAT_0033f608; + iVar3 = bind(DAT_0033f608,&local_28,0xc); + if (iVar3 == -1) { + piVar4 = __errno_location(); + iVar1 = *piVar4; + pcVar5 = "failed to bind netlink socket (%d)"; + } + else { + iVar1 = setsockopt(iVar1,1,0x10,&local_2c,4); + if (iVar1 != -1) { + iVar1 = FUN_00127400(&DAT_0033f600); + if (iVar1 == 0) { + iVar1 = pthread_create(&DAT_003666d8,(pthread_attr_t *)0x0,FUN_0012c210,(void *)0x0); + if (iVar1 == 0) { + return 0; + } + FUN_00120cd0(0,1,"linux_netlink_start_event_monitor", + "failed to create netlink event thread (%d)",iVar1); + close(DAT_0033f600); + close(DAT_0033f604); + DAT_0033f600 = -1; + DAT_0033f604 = -1; + } + else { + FUN_00120cd0(0,1,"linux_netlink_start_event_monitor", + "failed to create netlink control pipe"); + } + goto LAB_0012c480; + } + piVar4 = __errno_location(); + pcVar5 = "failed to set netlink socket SO_PASSCRED option (%d)"; + iVar1 = *piVar4; + } + FUN_00120cd0(0,1,"linux_netlink_start_event_monitor",pcVar5,iVar1); + goto LAB_0012c480; + } + piVar4 = __errno_location(); + pcVar5 = "failed to set netlink fd status flags (%d)"; + iVar1 = *piVar4; + } + } + FUN_00120cd0(0,1,"set_fd_cloexec_nb",pcVar5,iVar1); +LAB_0012c480: + close(DAT_0033f608); + DAT_0033f608 = 0xffffffff; + return 0xffffff9d; +} + + +================================================================== + +### FUNC 0012c640 (193 bytes) name=FUN_0012c640 + +undefined8 FUN_0012c640(void) + +{ + ssize_t sVar1; + undefined1 local_9 [9]; + + local_9[0] = 1; + if (DAT_0033f608 != -1) { + sVar1 = write(DAT_0033f604,local_9,1); + if (sVar1 < 1) { + FUN_00120cd0(0,2,"linux_netlink_stop_event_monitor","netlink control pipe signal failed"); + } + pthread_join(DAT_003666d8,(void **)0x0); + close(DAT_0033f608); + DAT_0033f608 = 0xffffffff; + close(DAT_0033f600); + close(DAT_0033f604); + DAT_0033f600 = 0xffffffff; + DAT_0033f604 = 0xffffffff; + return 0; + } + /* WARNING: Subroutine does not return */ + __assert_fail("linux_netlink_socket != -1","os/linux_netlink.c",0xa1, + "linux_netlink_stop_event_monitor"); +} + + +================================================================== + +### FUNC 0012c710 (34 bytes) name=FUN_0012c710 + +void FUN_0012c710(void) + +{ + int iVar1; + + pthread_mutex_lock((pthread_mutex_t *)&DAT_00366660); + do { + iVar1 = FUN_0012bd00(); + } while (iVar1 == 0); + pthread_mutex_unlock((pthread_mutex_t *)&DAT_00366660); + return; +} + + +================================================================== + +### FUNC 0012c734 (9 bytes) name=_fini + +void _fini(void) + +{ + return; +} + + +================================================================== + +### FUNC 00367000 (1 bytes) name=exp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double exp(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367008 (1 bytes) name=pthread_getspecific + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * pthread_getspecific(pthread_key_t __key) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367010 (1 bytes) name=pthread_cond_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_destroy(pthread_cond_t *__cond) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367018 (1 bytes) name=memset + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memset(void *__s,int __c,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367020 (1 bytes) name=ftell + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long ftell(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367028 (1 bytes) name=close + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int close(int __fd) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367030 (1 bytes) name=ioctl + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int ioctl(int __fd,ulong __request,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367038 (1 bytes) name=pthread_setspecific + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_setspecific(pthread_key_t __key,void *__pointer) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367040 (1 bytes) name=__gmon_start__ + +/* WARNING: Control flow encountered bad instruction data */ + +void __gmon_start__(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367048 (1 bytes) name=_Jv_RegisterClasses + +/* WARNING: Control flow encountered bad instruction data */ + +void _Jv_RegisterClasses(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367050 (1 bytes) name=recvmsg + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t recvmsg(int __fd,msghdr *__message,int __flags) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367058 (1 bytes) name=operator.new[] + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * operator_new__(ulong param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367060 (1 bytes) name=uname + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int uname(utsname *__name) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367068 (1 bytes) name=fseek + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fseek(FILE *__stream,long __off,int __whence) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367070 (1 bytes) name=pthread_cond_signal + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_signal(pthread_cond_t *__cond) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367078 (1 bytes) name=operator.delete + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void operator_delete(void *param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367080 (1 bytes) name=_M_dispose + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::string::_Rep::_M_dispose(allocator *param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367088 (1 bytes) name=pthread_mutexattr_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367090 (1 bytes) name=__assert_fail + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void __assert_fail(char *__assertion,char *__file,uint __line,char *__function) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367098 (1 bytes) name=__printf_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __printf_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670a0 (1 bytes) name=gettimeofday + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int gettimeofday(timeval *__tv,__timezone_ptr_t __tz) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670a8 (1 bytes) name=Init + +/* WARNING: Control flow encountered bad instruction data */ + +void __thiscall std::ios_base::Init::Init(Init *this) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670b0 (1 bytes) name=read + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t read(int __fd,void *__buf,size_t __nbytes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670b8 (1 bytes) name=strncmp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strncmp(char *__s1,char *__s2,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670c0 (1 bytes) name=malloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * malloc(size_t __size) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670c8 (1 bytes) name=fopen + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +FILE * fopen(char *__filename,char *__modes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670d0 (1 bytes) name=pthread_cond_timedwait + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_timedwait(pthread_cond_t *__cond,pthread_mutex_t *__mutex,timespec *__abstime) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670d8 (1 bytes) name=__memcpy_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __memcpy_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670e0 (1 bytes) name=__cxa_atexit + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_atexit(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670e8 (1 bytes) name=setsockopt + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int setsockopt(int __fd,int __level,int __optname,void *__optval,socklen_t __optlen) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670f0 (1 bytes) name=pthread_mutex_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_init(pthread_mutex_t *__mutex,pthread_mutexattr_t *__mutexattr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003670f8 (1 bytes) name=fgets + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * fgets(char *__s,int __n,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367100 (1 bytes) name=__vsnprintf_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __vsnprintf_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367108 (1 bytes) name=~Init + +/* WARNING: Control flow encountered bad instruction data */ + +void __thiscall std::ios_base::Init::~Init(Init *this) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367110 (1 bytes) name=pthread_attr_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_destroy(pthread_attr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367118 (1 bytes) name=getpwuid + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +passwd * getpwuid(__uid_t __uid) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367120 (1 bytes) name=_ITM_deregisterTMCloneTable + +/* WARNING: Control flow encountered bad instruction data */ + +void _ITM_deregisterTMCloneTable(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367128 (1 bytes) name=operator<< + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ostream * std::operator<<(ostream *param_1,char *param_2) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367130 (1 bytes) name=__strdup + +/* WARNING: Control flow encountered bad instruction data */ + +void __strdup(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367138 (1 bytes) name=free + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void free(void *__ptr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367140 (1 bytes) name=strlen + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t strlen(char *__s) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367148 (1 bytes) name=_ITM_registerTMCloneTable + +/* WARNING: Control flow encountered bad instruction data */ + +void _ITM_registerTMCloneTable(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367150 (1 bytes) name=_M_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::string::_Rep::_M_destroy(allocator *param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367158 (1 bytes) name=__asprintf_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __asprintf_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367160 (1 bytes) name=pthread_create + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_create(pthread_t *__newthread,pthread_attr_t *__attr,__start_routine *__start_routine, + void *__arg) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367168 (1 bytes) name=opendir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +DIR * opendir(char *__name) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367170 (1 bytes) name=__xstat + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int __xstat(int __ver,char *__filename,stat *__stat_buf) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367178 (1 bytes) name=pthread_cond_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_init(pthread_cond_t *__cond,pthread_condattr_t *__cond_attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367180 (1 bytes) name=__ctype_b_loc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ushort ** __ctype_b_loc(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367188 (1 bytes) name=__cxa_finalize + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_finalize(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367190 (1 bytes) name=pthread_key_delete + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_delete(pthread_key_t __key) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671a0 (1 bytes) name=readdir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +dirent * readdir(DIR *__dirp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671a8 (1 bytes) name=strrchr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strrchr(char *__s,int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671b0 (1 bytes) name=syscall + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long syscall(long __sysno,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671b8 (1 bytes) name=sscanf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int sscanf(char *__s,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671c0 (1 bytes) name=pipe + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pipe(int *__pipedes) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671c8 (1 bytes) name=pthread_join + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_join(pthread_t __th,void **__thread_return) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671d0 (1 bytes) name=poll + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int poll(pollfd *__fds,nfds_t __nfds,int __timeout) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671d8 (1 bytes) name=pthread_mutex_trylock + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_trylock(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671e0 (1 bytes) name=pow + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double pow(double __x,double __y) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671e8 (1 bytes) name=usleep + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int usleep(__useconds_t __useconds) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003671f0 (1 bytes) name=strerror + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strerror(int __errnum) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367200 (1 bytes) name=fputs + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fputs(char *__s,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367208 (1 bytes) name=lseek + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +__off_t lseek(int __fd,__off_t __offset,int __whence) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367210 (1 bytes) name=strtol + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +long strtol(char *__nptr,char **__endptr,int __base) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367218 (1 bytes) name=readlink + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t readlink(char *__path,char *__buf,size_t __len) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367220 (1 bytes) name=__cxa_pure_virtual + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_pure_virtual(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367228 (1 bytes) name=__strcpy_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __strcpy_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367230 (1 bytes) name=__ostream_insert> + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ostream * std::__ostream_insert> + (ostream *param_1,char *param_2,long param_3) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367238 (1 bytes) name=memmove + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memmove(void *__dest,void *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367240 (1 bytes) name=strchr + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strchr(char *__s,int __c) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367248 (1 bytes) name=socket + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int socket(int __domain,int __type,int __protocol) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367250 (1 bytes) name=fread + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fread(void *__ptr,size_t __size,size_t __n,FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367258 (1 bytes) name=getenv + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * getenv(char *__name) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367260 (1 bytes) name=__errno_location + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int * __errno_location(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367270 (1 bytes) name=pthread_mutexattr_settype + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_settype(pthread_mutexattr_t *__attr,int __kind) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367278 (1 bytes) name=__stack_chk_fail + +/* WARNING: Control flow encountered bad instruction data */ + +void __stack_chk_fail(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367280 (1 bytes) name=strcmp + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int strcmp(char *__s1,char *__s2) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367288 (1 bytes) name=__cxa_allocate_exception + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_allocate_exception(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367290 (1 bytes) name=assign + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::string::assign(char *param_1,ulong param_2) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367298 (1 bytes) name=nanosleep + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int nanosleep(timespec *__requested_time,timespec *__remaining) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672a0 (1 bytes) name=getuid + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +__uid_t getuid(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672a8 (1 bytes) name=pthread_cond_wait + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_wait(pthread_cond_t *__cond,pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672b0 (1 bytes) name=operator.delete[] + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void operator_delete__(void *param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672b8 (1 bytes) name=calloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * calloc(size_t __nmemb,size_t __size) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672c0 (1 bytes) name=munmap + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int munmap(void *__addr,size_t __len) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672c8 (1 bytes) name=feof + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int feof(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672d0 (1 bytes) name=__cxa_throw + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_throw(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672d8 (1 bytes) name=fclose + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fclose(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672e0 (1 bytes) name=strncpy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +char * strncpy(char *__dest,char *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672e8 (1 bytes) name=pthread_attr_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_init(pthread_attr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672f0 (1 bytes) name=localtime_r + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime_r(time_t *__timer,tm *__tp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003672f8 (1 bytes) name=__cxa_end_catch + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_end_catch(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367300 (1 bytes) name=__throw_bad_alloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void std::__throw_bad_alloc(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367310 (1 bytes) name=fscanf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fscanf(FILE *__stream,char *__format,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367318 (1 bytes) name=closedir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int closedir(DIR *__dirp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367320 (1 bytes) name=__sprintf_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __sprintf_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367330 (1 bytes) name=__snprintf_chk + +/* WARNING: Control flow encountered bad instruction data */ + +void __snprintf_chk(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367338 (1 bytes) name=access + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int access(char *__name,int __type) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367340 (1 bytes) name=endl> + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ostream * std::endl>(ostream *param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367348 (1 bytes) name=__pthread_key_create + +/* WARNING: Control flow encountered bad instruction data */ + +void __pthread_key_create(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367350 (1 bytes) name=__cxa_begin_catch + +/* WARNING: Control flow encountered bad instruction data */ + +void __cxa_begin_catch(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367358 (1 bytes) name=bind + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int bind(int __fd,sockaddr *__addr,socklen_t __len) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367360 (1 bytes) name=fwrite + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +size_t fwrite(void *__ptr,size_t __size,size_t __n,FILE *__s) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367368 (1 bytes) name=pthread_mutex_lock + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_lock(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367370 (1 bytes) name=realloc + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * realloc(void *__ptr,size_t __size) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367378 (1 bytes) name=timerfd_create + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int timerfd_create(clockid_t __clock_id,int __flags) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367380 (1 bytes) name=pthread_mutexattr_init + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutexattr_init(pthread_mutexattr_t *__attr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367388 (1 bytes) name=pthread_key_create + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_key_create(pthread_key_t *__key,__destr_function *__destr_function) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367390 (1 bytes) name=__gxx_personality_v0 + +/* WARNING: Control flow encountered bad instruction data */ + +void __gxx_personality_v0(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367398 (1 bytes) name=timerfd_settime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int timerfd_settime(int __ufd,int __flags,itimerspec *__utmr,itimerspec *__otmr) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673a0 (1 bytes) name=localtime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +tm * localtime(time_t *__timer) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673a8 (1 bytes) name=pthread_mutex_destroy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_destroy(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673b0 (1 bytes) name=write + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ssize_t write(int __fd,void *__buf,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673b8 (1 bytes) name=operator.new + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * operator_new(ulong param_1) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673c0 (1 bytes) name=_Unwind_Resume + +/* WARNING: Control flow encountered bad instruction data */ + +void _Unwind_Resume(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673c8 (1 bytes) name=pthread_cond_broadcast + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_cond_broadcast(pthread_cond_t *__cond) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673d0 (1 bytes) name=clock_gettime + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int clock_gettime(clockid_t __clock_id,timespec *__tp) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673d8 (1 bytes) name=sqrt + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +double sqrt(double __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673e0 (1 bytes) name=strtoul + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +ulong strtoul(char *__nptr,char **__endptr,int __base) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673e8 (1 bytes) name=pthread_mutex_unlock + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_mutex_unlock(pthread_mutex_t *__mutex) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673f0 (1 bytes) name=memcpy + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * memcpy(void *__dest,void *__src,size_t __n) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 003673f8 (1 bytes) name=fcntl + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fcntl(int __fd,int __cmd,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367400 (1 bytes) name=open + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int open(char *__file,int __oflag,...) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367408 (1 bytes) name=__open_2 + +/* WARNING: Control flow encountered bad instruction data */ + +void __open_2(void) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367410 (1 bytes) name=mmap + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +void * mmap(void *__addr,size_t __len,int __prot,int __flags,int __fd,__off_t __offset) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367420 (1 bytes) name=mkdir + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int mkdir(char *__path,__mode_t __mode) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367428 (1 bytes) name=time + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +time_t time(time_t *__timer) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367430 (1 bytes) name=fflush + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int fflush(FILE *__stream) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367438 (1 bytes) name=sqrtf + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +float sqrtf(float __x) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + +### FUNC 00367440 (1 bytes) name=pthread_attr_setdetachstate + +/* WARNING: Control flow encountered bad instruction data */ +/* WARNING: Unknown calling convention -- yet parameter storage is locked */ + +int pthread_attr_setdetachstate(pthread_attr_t *__attr,int __detachstate) + +{ + /* WARNING: Bad instruction - Truncating control flow here */ + halt_baddata(); +} + + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/all_functions_libcoresdk_arm64.so_00100000.txt b/analysis/ida/export/ghidra_dump/all_functions_libcoresdk_arm64.so_00100000.txt new file mode 100644 index 0000000..4d60fcc --- /dev/null +++ b/analysis/ida/export/ghidra_dump/all_functions_libcoresdk_arm64.so_00100000.txt @@ -0,0 +1,7118 @@ +000000000015cc10 000000000015cc23 FUN_0015cc10 +000000000015cc30 000000000015cc3f cvCvtSeqToArray +000000000015cc40 000000000015cc4f transpose +000000000015cc50 000000000015cc5f strerror +000000000015cc60 000000000015cc6f memcpy +000000000015cc70 000000000015cc7f cvTypeOf +000000000015cc80 000000000015cc8f GetRgnTemperatureInfo +000000000015cc90 000000000015cc9f ~Device +000000000015cca0 000000000015ccaf putText +000000000015ccb0 000000000015ccbf GetRaw +000000000015ccc0 000000000015cccf fopen +000000000015ccd0 000000000015ccdf LoadDDT +000000000015cce0 000000000015ccef gettimeofday +000000000015ccf0 000000000015ccff ApplyNewEffect +000000000015cd00 000000000015cd0f filter2D +000000000015cd10 000000000015cd1f _M_emplace_back_aux +000000000015cd20 000000000015cd2f MapTemperature +000000000015cd30 000000000015cd3f ~MatOp +000000000015cd40 000000000015cd4f cos +000000000015cd50 000000000015cd5f create +000000000015cd60 000000000015cd6f writev +000000000015cd70 000000000015cd7f _Unwind_GetRegionStart +000000000015cd80 000000000015cd8f cvReleaseSparseMat +000000000015cd90 000000000015cd9f cvGetRootFileNode +000000000015cda0 000000000015cdaf memchr +000000000015cdb0 000000000015cdbf get_unexpected +000000000015cdc0 000000000015cdcf pow +000000000015cdd0 000000000015cddf Read +000000000015cde0 000000000015cdef MAG_IsProcessingImage +000000000015cdf0 000000000015cdff libusb_handle_events_completed +000000000015ce00 000000000015ce0f gzclose +000000000015ce10 000000000015ce1f empty +000000000015ce20 000000000015ce2f cvCreateData +000000000015ce30 000000000015ce3f __uninit_copy +000000000015ce40 000000000015ce4f cvCreateSet +000000000015ce50 000000000015ce5f Logging +000000000015ce60 000000000015ce6f asprintf +000000000015ce70 000000000015ce7f SaveDDT2Buffer +000000000015ce80 000000000015ce8f opendir +000000000015ce90 000000000015ce9f GetLocalTime +000000000015cea0 000000000015ceaf GetTemperatureData_Raw +000000000015ceb0 000000000015cebf libusb_lock_events +000000000015cec0 000000000015cecf Restart +000000000015ced0 000000000015cedf zeros +000000000015cee0 000000000015ceef cvRelease +000000000015cef0 000000000015ceff __ctype_get_mb_cur_max +000000000015cf00 000000000015cf0f sepFilter2D +000000000015cf10 000000000015cf1f cvTreeToNodeSeq +000000000015cf20 000000000015cf2f ~PlatformInfo +000000000015cf30 000000000015cf3f sin +000000000015cf40 000000000015cf4f logf +000000000015cf50 000000000015cf5f dot +000000000015cf60 000000000015cf6f ~OFStream +000000000015cf70 000000000015cf7f create +000000000015cf80 000000000015cf8f fitEllipse +000000000015cf90 000000000015cf9f swap +000000000015cfa0 000000000015cfaf cvCreateStructuringElementEx +000000000015cfb0 000000000015cfbf strncpy +000000000015cfc0 000000000015cfcf MAG_Free +000000000015cfd0 000000000015cfdf usbi_handle_transfer_completion +000000000015cfe0 000000000015cfef MAG_GetTemperatureProbe2 +000000000015cff0 000000000015cfff fixedType +000000000015d000 000000000015d00f cvGetSeqElem +000000000015d010 000000000015d01f Exception +000000000015d020 000000000015d02f _Unwind_RaiseException +000000000015d030 000000000015d03f SetEXLevel +000000000015d040 000000000015d04f libusb_open +000000000015d050 000000000015d05f usleep +000000000015d060 000000000015d06f ~Logging +000000000015d070 000000000015d07f cvSetImageCOI +000000000015d080 000000000015d08f compilerAvailable +000000000015d090 000000000015d09f towlower +000000000015d0a0 000000000015d0af cvSetImageROI +000000000015d0b0 000000000015d0bf PushFrame +000000000015d0c0 000000000015d0cf setVisible +000000000015d0d0 000000000015d0df subtract +000000000015d0e0 000000000015d0ef ~TLSDataContainer +000000000015d0f0 000000000015d0ff mbrtowc +000000000015d100 000000000015d10f GetJstring +000000000015d110 000000000015d11f reshape +000000000015d120 000000000015d12f getOGlBuffer +000000000015d130 000000000015d13f _Unwind_SetIP +000000000015d140 000000000015d14f copySize +000000000015d150 000000000015d15f dims +000000000015d160 000000000015d16f operator.delete +000000000015d170 000000000015d17f btowc +000000000015d180 000000000015d18f cvFindGraphEdgeByPtr +000000000015d190 000000000015d19f getMat +000000000015d1a0 000000000015d1af patchNaNs +000000000015d1b0 000000000015d1bf getMat_ +000000000015d1c0 000000000015d1cf operator= +000000000015d1d0 000000000015d1df removeNode +000000000015d1e0 000000000015d1ef cvGetFileNode +000000000015d1f0 000000000015d1ff ~MatExpr +000000000015d200 000000000015d20f getwc +000000000015d210 000000000015d21f LinkCamera +000000000015d220 000000000015d22f GetTemperatureProbe +000000000015d230 000000000015d23f pthread_mutex_destroy +000000000015d240 000000000015d24f _Unwind_GetLanguageSpecificData +000000000015d250 000000000015d25f ResizeBMP_2X +000000000015d260 000000000015d26f resetColorArray +000000000015d270 000000000015d27f CvMatND +000000000015d280 000000000015d28f getUMat +000000000015d290 000000000015d29f GetEXLevel +000000000015d2a0 000000000015d2af swap +000000000015d2b0 000000000015d2bf MAG_SetDetectParameter +000000000015d2c0 000000000015d2cf erode +000000000015d2d0 000000000015d2df close +000000000015d2e0 000000000015d2ef SetAutoEnlargePara +000000000015d2f0 000000000015d2ff split +000000000015d300 000000000015d30f MAG_DelChannel +000000000015d310 000000000015d31f operator.new[] +000000000015d320 000000000015d32f DoSomething +000000000015d330 000000000015d33f CalTaoAtm +000000000015d340 000000000015d34f cvDrawContours +000000000015d350 000000000015d35f MAG_NewChannel +000000000015d360 000000000015d36f setJpg +000000000015d370 000000000015d37f PlatformInfo +000000000015d380 000000000015d38f create +000000000015d390 000000000015d39f vconcat +000000000015d3a0 000000000015d3af getProg +000000000015d3b0 000000000015d3bf morphologyEx +000000000015d3c0 000000000015d3cf pthread_mutexattr_settype +000000000015d3d0 000000000015d3df wmemmove +000000000015d3e0 000000000015d3ef SetSubsectionEnlargePara +000000000015d3f0 000000000015d3ff unlock +000000000015d400 000000000015d40f set +000000000015d410 000000000015d41f subtract +000000000015d420 000000000015d42f reshape +000000000015d430 000000000015d43f getenv +000000000015d440 000000000015d44f GetFrameStatisticalData +000000000015d450 000000000015d45f polarToCart +000000000015d460 000000000015d46f getVisible +000000000015d470 000000000015d47f TLSDataContainer +000000000015d480 000000000015d48f strftime +000000000015d490 000000000015d49f gzgets +000000000015d4a0 000000000015d4af exp +000000000015d4b0 000000000015d4bf pthread_join +000000000015d4c0 000000000015d4cf usbi_parse_descriptor +000000000015d4d0 000000000015d4df set +000000000015d4e0 000000000015d4ef create +000000000015d4f0 000000000015d4ff Mat +000000000015d500 000000000015d50f cvPow +000000000015d510 000000000015d51f Write +000000000015d520 000000000015d52f min +000000000015d530 000000000015d53f __cxa_end_catch +000000000015d540 000000000015d54f MAG_FixTemperature2 +000000000015d550 000000000015d55f multiply +000000000015d560 000000000015d56f writeScalar +000000000015d570 000000000015d57f operator+= +000000000015d580 000000000015d58f GetTickCount +000000000015d590 000000000015d59f newOutputObjects +000000000015d5a0 000000000015d5af usbi_handle_transfer_cancellation +000000000015d5b0 000000000015d5bf release +000000000015d5c0 000000000015d5cf fcntl +000000000015d5d0 000000000015d5df cvSeqPop +000000000015d5e0 000000000015d5ef Init +000000000015d5f0 000000000015d5ff mulTransposed +000000000015d600 000000000015d60f __cxa_allocate_exception +000000000015d610 000000000015d61f MAG_SetDetectMaskPoints +000000000015d620 000000000015d62f Mat +000000000015d630 000000000015d63f ~Exception +000000000015d640 000000000015d64f exception_ptr +000000000015d650 000000000015d65f operator++ +000000000015d660 000000000015d66f pthread_mutex_trylock +000000000015d670 000000000015d67f wcslen +000000000015d680 000000000015d68f setText +000000000015d690 000000000015d69f push_back +000000000015d6a0 000000000015d6af size +000000000015d6b0 000000000015d6bf adaptiveThreshold +000000000015d6c0 000000000015d6cf seek +000000000015d6d0 000000000015d6df integral +000000000015d6e0 000000000015d6ef get_new_handler +000000000015d6f0 000000000015d6ff __android_log_write +000000000015d700 000000000015d70f CAccumulator +000000000015d710 000000000015d71f GetChannelIndex +000000000015d720 000000000015d72f Device +000000000015d730 000000000015d73f waitForMsecs +000000000015d740 000000000015d74f operator== +000000000015d750 000000000015d75f usbi_clear_event +000000000015d760 000000000015d76f _M_emplace_back_aux +000000000015d770 000000000015d77f cvInitSparseMatIterator +000000000015d780 000000000015d78f cvCreateMemStorage +000000000015d790 000000000015d79f ~bad_alloc +000000000015d7a0 000000000015d7af PushFrame +000000000015d7b0 000000000015d7bf cvSetAdd +000000000015d7c0 000000000015d7cf cvGetElemType +000000000015d7d0 000000000015d7df CVideoFunctions +000000000015d7e0 000000000015d7ef Program +000000000015d7f0 000000000015d7ff libusb_wrap_fd +000000000015d800 000000000015d80f backProject +000000000015d810 000000000015d81f Program +000000000015d820 000000000015d82f toJString +000000000015d830 000000000015d83f open +000000000015d840 000000000015d84f cvMemStorageAllocString +000000000015d850 000000000015d85f preferredVectorWidthFloat +000000000015d860 000000000015d86f cvRawDataToScalar +000000000015d870 000000000015d87f cvSeqSlice +000000000015d880 000000000015d88f InterpolateShort +000000000015d890 000000000015d89f clock_gettime +000000000015d8a0 000000000015d8af checkRange +000000000015d8b0 000000000015d8bf ~MDTHelper +000000000015d8c0 000000000015d8cf cvSeqPopFront +000000000015d8d0 000000000015d8df readlink +000000000015d8e0 000000000015d8ef GetLineTemperatureInfo +000000000015d8f0 000000000015d8ff sscanf +000000000015d900 000000000015d90f calcCovarMatrix +000000000015d910 000000000015d91f free +000000000015d920 000000000015d92f points +000000000015d930 000000000015d93f sqrt +000000000015d940 000000000015d94f cross +000000000015d950 000000000015d95f usbi_hotplug_deregister_all +000000000015d960 000000000015d96f fread +000000000015d970 000000000015d97f completeSymm +000000000015d980 000000000015d98f resizeHashTab +000000000015d990 000000000015d99f ~CSmoother +000000000015d9a0 000000000015d9af strchr +000000000015d9b0 000000000015d9bf cvSliceLength +000000000015d9c0 000000000015d9cf kind +000000000015d9d0 000000000015d9df setLabel +000000000015d9e0 000000000015d9ef usbi_add_pollfd +000000000015d9f0 000000000015d9ff operator= +000000000015da00 000000000015da0f StopReceiveImg_UnProtected +000000000015da10 000000000015da1f strtold +000000000015da20 000000000015da2f cvErrorStr +000000000015da30 000000000015da3f calloc +000000000015da40 000000000015da4f pthread_key_delete +000000000015da50 000000000015da5f mkdir +000000000015da60 000000000015da6f getDefault +000000000015da70 000000000015da7f ~MatOp +000000000015da80 000000000015da8f strcmp +000000000015da90 000000000015da9f CMagDevice +000000000015daa0 000000000015daaf UMat +000000000015dab0 000000000015dabf CorrectTemperature +000000000015dac0 000000000015dacf AndroidBitmap_lockPixels +000000000015dad0 000000000015dadf cvFindNextContour +000000000015dae0 000000000015daef malloc +000000000015daf0 000000000015daff copyFrom +000000000015db00 000000000015db0f cvWriteRawData +000000000015db10 000000000015db1f ~ParallelLoopBody +000000000015db20 000000000015db2f read +000000000015db30 000000000015db3f fastMalloc +000000000015db40 000000000015db4f read +000000000015db50 000000000015db5f cvStartWriteStruct +000000000015db60 000000000015db6f strxfrm +000000000015db70 000000000015db7f contourArea +000000000015db80 000000000015db8f MatExpr +000000000015db90 000000000015db9f setTo +000000000015dba0 000000000015dbaf cvFindType +000000000015dbb0 000000000015dbbf wmemset +000000000015dbc0 000000000015dbcf nanosleep +000000000015dbd0 000000000015dbdf Queue +000000000015dbe0 000000000015dbef FindStrayRadius +000000000015dbf0 000000000015dbff cvMakeSeqHeaderForArray +000000000015dc00 000000000015dc0f _Unwind_GetTextRelBase +000000000015dc10 000000000015dc1f MAG_IsChannelAvailable +000000000015dc20 000000000015dc2f IsothermalPalette +000000000015dc30 000000000015dc3f getGpuMatRef +000000000015dc40 000000000015dc4f _M_get +000000000015dc50 000000000015dc5f haveOpenCL +000000000015dc60 000000000015dc6f pthread_cond_destroy +000000000015dc70 000000000015dc7f isxdigit +000000000015dc80 000000000015dc8f convertTo +000000000015dc90 000000000015dc9f operator() +000000000015dca0 000000000015dcaf ~PCA +000000000015dcb0 000000000015dcbf phase +000000000015dcc0 000000000015dccf sprintf +000000000015dcd0 000000000015dcdf cvSeqSort +000000000015dce0 000000000015dcef driverVersion +000000000015dcf0 000000000015dcff libusb_release_interface +000000000015dd00 000000000015dd0f preferredVectorWidthShort +000000000015dd10 000000000015dd1f format +000000000015dd20 000000000015dd2f usbi_io_exit +000000000015dd30 000000000015dd3f resetMatMaskPoints +000000000015dd40 000000000015dd4f hconcat +000000000015dd50 000000000015dd5f ~bad_exception +000000000015dd60 000000000015dd6f log10 +000000000015dd70 000000000015dd7f ~Program +000000000015dd80 000000000015dd8f FileNodeIterator +000000000015dd90 000000000015dd9f minMaxLoc +000000000015dda0 000000000015ddaf checkOptimalVectorWidth +000000000015ddb0 000000000015ddbf release +000000000015ddc0 000000000015ddcf cvGraphAddEdgeByPtr +000000000015ddd0 000000000015dddf MStream +000000000015dde0 000000000015ddef GaussianBlur +000000000015ddf0 000000000015ddff MAG_SaveDDT +000000000015de00 000000000015de0f SaveMGT +000000000015de10 000000000015de1f Mat +000000000015de20 000000000015de2f LoadDDT +000000000015de30 000000000015de3f HistDeRedundance +000000000015de40 000000000015de4f cvCreateMatHeader +000000000015de50 000000000015de5f usbi_alloc_device +000000000015de60 000000000015de6f isOpened +000000000015de70 000000000015de7f _M_insert_aux +000000000015de80 000000000015de8f cvReadRawData +000000000015de90 000000000015de9f Hdr +000000000015dea0 000000000015deaf __deregister_frame_info_bases +000000000015deb0 000000000015debf ReadPara +000000000015dec0 000000000015decf _Unwind_Resume_or_Rethrow +000000000015ded0 000000000015dedf toChars +000000000015dee0 000000000015deef pthread_setspecific +000000000015def0 000000000015deff GetOutputBMPdata +000000000015df00 000000000015df0f meanStdDev +000000000015df10 000000000015df1f mulSpectrums +000000000015df20 000000000015df2f cvRestoreMemStoragePos +000000000015df30 000000000015df3f ~__foreign_exception +000000000015df40 000000000015df4f __cxa_get_globals_fast +000000000015df50 000000000015df5f integral +000000000015df60 000000000015df6f libusb_get_active_config_descriptor +000000000015df70 000000000015df7f create +000000000015df80 000000000015df8f copyTo +000000000015df90 000000000015df9f __cxa_guard_release +000000000015dfa0 000000000015dfaf libusb_close +000000000015dfb0 000000000015dfbf read +000000000015dfc0 000000000015dfcf discovered_devs_append +000000000015dfd0 000000000015dfdf memmove +000000000015dfe0 000000000015dfef edgeImage +000000000015dff0 000000000015dfff cvAlloc +000000000015e000 000000000015e00f setTo +000000000015e010 000000000015e01f ptr +000000000015e020 000000000015e02f get_terminate +000000000015e030 000000000015e03f sort +000000000015e040 000000000015e04f MAG_LoadDDT +000000000015e050 000000000015e05f create +000000000015e060 000000000015e06f pthread_once +000000000015e070 000000000015e07f createMorphologyFilter +000000000015e080 000000000015e08f SetImageTransform +000000000015e090 000000000015e09f __google_potentially_blocking_region_end +000000000015e0a0 000000000015e0af ~bad_array_length +000000000015e0b0 000000000015e0bf usbi_pipe +000000000015e0c0 000000000015e0cf PushBaselineRaw +000000000015e0d0 000000000015e0df FilterE2X +000000000015e0e0 000000000015e0ef NAryMatIterator +000000000015e0f0 000000000015e0ff cvClearSet +000000000015e100 000000000015e10f cvPtr2D +000000000015e110 000000000015e11f exception_ptr +000000000015e120 000000000015e12f medianBlur +000000000015e130 000000000015e13f cvGetFileNodeByName +000000000015e140 000000000015e14f feof +000000000015e150 000000000015e15f ~bad_typeid +000000000015e160 000000000015e16f strlen +000000000015e170 000000000015e17f addWeighted +000000000015e180 000000000015e18f wcscoll +000000000015e190 000000000015e19f MAG_IsPause +000000000015e1a0 000000000015e1af MAG_LockFrame +000000000015e1b0 000000000015e1bf ~UMatData +000000000015e1c0 000000000015e1cf cvBoundingRect +000000000015e1d0 000000000015e1df deviceVersionMajor +000000000015e1e0 000000000015e1ef atan2 +000000000015e1f0 000000000015e1ff access +000000000015e200 000000000015e20f _M_fill_insert +000000000015e210 000000000015e21f cvReleaseFileStorage +000000000015e220 000000000015e22f ptr +000000000015e230 000000000015e23f getTickCount +000000000015e240 000000000015e24f gettid +000000000015e250 000000000015e25f total +000000000015e260 000000000015e26f norm +000000000015e270 000000000015e27f operator/ +000000000015e280 000000000015e28f SetEX +000000000015e290 000000000015e29f ~MStream +000000000015e2a0 000000000015e2af MAG_LinkCamera +000000000015e2b0 000000000015e2bf usbi_get_tid +000000000015e2c0 000000000015e2cf cartToPolar +000000000015e2d0 000000000015e2df strstr +000000000015e2e0 000000000015e2ef Mutex +000000000015e2f0 000000000015e2ff libusb_set_auto_detach_kernel_driver +000000000015e300 000000000015e30f reduce +000000000015e310 000000000015e31f pthread_mutexattr_destroy +000000000015e320 000000000015e32f BlindCompensation +000000000015e330 000000000015e33f ResizeBMP +000000000015e340 000000000015e34f usbi_log +000000000015e350 000000000015e35f Sleep +000000000015e360 000000000015e36f MAG_SetAutoEnlargePara +000000000015e370 000000000015e37f FilterDetailEnhancement +000000000015e380 000000000015e38f fclose +000000000015e390 000000000015e39f SetIsothermalPara +000000000015e3a0 000000000015e3af vendorID +000000000015e3b0 000000000015e3bf Seek +000000000015e3c0 000000000015e3cf GetJfloat +000000000015e3d0 000000000015e3df _M_addref +000000000015e3e0 000000000015e3ef _Unwind_GetCFA +000000000015e3f0 000000000015e3ff ~bad_cast +000000000015e400 000000000015e40f realloc +000000000015e410 000000000015e41f libusb_free_config_descriptor +000000000015e420 000000000015e42f release +000000000015e430 000000000015e43f lock +000000000015e440 000000000015e44f SearchInnerTemp +000000000015e450 000000000015e45f cvFindContours +000000000015e460 000000000015e46f max +000000000015e470 000000000015e47f ReviseTemperature +000000000015e480 000000000015e48f resetTexCoordArray +000000000015e490 000000000015e49f copyTo +000000000015e4a0 000000000015e4af setTo +000000000015e4b0 000000000015e4bf project +000000000015e4c0 000000000015e4cf iswctype +000000000015e4d0 000000000015e4df ~vector +000000000015e4e0 000000000015e4ef gzeof +000000000015e4f0 000000000015e4ff sortIdx +000000000015e500 000000000015e50f MAG_IsLinked +000000000015e510 000000000015e51f strtod +000000000015e520 000000000015e52f scalarToRawData +000000000015e530 000000000015e53f next +000000000015e540 000000000015e54f libusb_get_config_descriptor +000000000015e550 000000000015e55f TransferCaliFile +000000000015e560 000000000015e56f MAG_PrepareProcessImage +000000000015e570 000000000015e57f cvGraphAddVtx +000000000015e580 000000000015e58f cvEndFindContours +000000000015e590 000000000015e59f imageSupport +000000000015e5a0 000000000015e5af usbi_remove_pollfd +000000000015e5b0 000000000015e5bf Sobel +000000000015e5c0 000000000015e5cf mul +000000000015e5d0 000000000015e5df cvReleaseMemStorage +000000000015e5e0 000000000015e5ef wcsftime +000000000015e5f0 000000000015e5ff cvSeqPushFront +000000000015e600 000000000015e60f operator.cast.to.double +000000000015e610 000000000015e61f dilate +000000000015e620 000000000015e62f writeScalar +000000000015e630 000000000015e63f cvGetSize +000000000015e640 000000000015e64f CopyState +000000000015e650 000000000015e65f SaveRGB24 +000000000015e660 000000000015e66f __register_frame_info_table_bases +000000000015e670 000000000015e67f GetCamInfo +000000000015e680 000000000015e68f GetTemperature +000000000015e690 000000000015e69f EnumCameras +000000000015e6a0 000000000015e6af cvGetFileNodeName +000000000015e6b0 000000000015e6bf DoPrepareInBackground +000000000015e6c0 000000000015e6cf Fmt +000000000015e6d0 000000000015e6df cvReleaseStructuringElement +000000000015e6e0 000000000015e6ef save +000000000015e6f0 000000000015e6ff GetLength +000000000015e700 000000000015e70f Condition +000000000015e710 000000000015e71f getStdAllocator +000000000015e720 000000000015e72f munmap +000000000015e730 000000000015e73f fprintf +000000000015e740 000000000015e74f __cxa_free_dependent_exception +000000000015e750 000000000015e75f wctype +000000000015e760 000000000015e76f ~CAccumulator +000000000015e770 000000000015e77f MAG_LoadBufferedDDT +000000000015e780 000000000015e78f getDefault +000000000015e790 000000000015e79f MAG_Resume +000000000015e7a0 000000000015e7af getMatVector +000000000015e7b0 000000000015e7bf __sfp_handle_exceptions +000000000015e7c0 000000000015e7cf GetOutputColorBardata +000000000015e7d0 000000000015e7df release +000000000015e7e0 000000000015e7ef _M_fill_insert +000000000015e7f0 000000000015e7ff putc +000000000015e800 000000000015e80f Device +000000000015e810 000000000015e81f operator() +000000000015e820 000000000015e82f pow +000000000015e830 000000000015e83f GetCaliFileName +000000000015e840 000000000015e84f strncmp +000000000015e850 000000000015e85f error +000000000015e860 000000000015e86f fputc +000000000015e870 000000000015e87f lrintf +000000000015e880 000000000015e88f Write +000000000015e890 000000000015e89f ~ParallelLoopBody +000000000015e8a0 000000000015e8af cvFree_ +000000000015e8b0 000000000015e8bf ptr +000000000015e8c0 000000000015e8cf SaveDDT +000000000015e8d0 000000000015e8df cvFlushSeqWriter +000000000015e8e0 000000000015e8ef cvSeqInsertSlice +000000000015e8f0 000000000015e8ff __getf2 +000000000015e900 000000000015e90f InterpolateUShort +000000000015e910 000000000015e91f free +000000000015e920 000000000015e92f StopReceiveImg +000000000015e930 000000000015e93f setUseOpenCL +000000000015e940 000000000015e94f wmemcpy +000000000015e950 000000000015e95f bilateralFilter +000000000015e960 000000000015e96f log +000000000015e970 000000000015e97f __cxa_bad_cast +000000000015e980 000000000015e98f MAG_SetFixPara +000000000015e990 000000000015e99f MAG_FindDetectTarget +000000000015e9a0 000000000015e9af getPrefix +000000000015e9b0 000000000015e9bf MAG_RevisedTemp2Gray +000000000015e9c0 000000000015e9cf exp +000000000015e9d0 000000000015e9df operator= +000000000015e9e0 000000000015e9ef snprintf +000000000015e9f0 000000000015e9ff source +000000000015ea00 000000000015ea0f mixChannels +000000000015ea10 000000000015ea1f ~CVideoFunctions +000000000015ea20 000000000015ea2f cvSeqPopMulti +000000000015ea30 000000000015ea3f GetLength +000000000015ea40 000000000015ea4f getc +000000000015ea50 000000000015ea5f cvSetData +000000000015ea60 000000000015ea6f _Unwind_GetIPInfo +000000000015ea70 000000000015ea7f MatExpr +000000000015ea80 000000000015ea8f cvCloneGraph +000000000015ea90 000000000015ea9f Resume +000000000015eaa0 000000000015eaaf MAG_GetRectTemperatureInfo +000000000015eab0 000000000015eabf type +000000000015eac0 000000000015eacf cvStartReadSeq +000000000015ead0 000000000015eadf Reset +000000000015eae0 000000000015eaef GrayEnlarge +000000000015eaf0 000000000015eaff setAutoRelease +000000000015eb00 000000000015eb0f ReadRemoteData +000000000015eb10 000000000015eb1f PrepareProcessImage +000000000015eb20 000000000015eb2f cvChangeSeqBlock +000000000015eb30 000000000015eb3f getMatRef +000000000015eb40 000000000015eb4f pthread_attr_setdetachstate +000000000015eb50 000000000015eb5f strtol +000000000015eb60 000000000015eb6f ellipse +000000000015eb70 000000000015eb7f NewObject +000000000015eb80 000000000015eb8f boxFilter +000000000015eb90 000000000015eb9f Null +000000000015eba0 000000000015ebaf ~__vmi_class_type_info +000000000015ebb0 000000000015ebbf LoadBufferedDDT +000000000015ebc0 000000000015ebcf cvReleaseImage +000000000015ebd0 000000000015ebdf deallocate +000000000015ebe0 000000000015ebef cvCopy +000000000015ebf0 000000000015ebff GetRectTemperatureInfo +000000000015ec00 000000000015ec0f ~bad_alloc +000000000015ec10 000000000015ec1f getData +000000000015ec20 000000000015ec2f cvCreateMatNDHeader +000000000015ec30 000000000015ec3f FileNodeIterator +000000000015ec40 000000000015ec4f unlock +000000000015ec50 000000000015ec5f ~__class_type_info +000000000015ec60 000000000015ec6f cvCreateSeq +000000000015ec70 000000000015ec7f __android_log_print +000000000015ec80 000000000015ec8f ~Condition +000000000015ec90 000000000015ec9f Image2D +000000000015eca0 000000000015ecaf MAG_SetColorPalette +000000000015ecb0 000000000015ecbf Get +000000000015ecc0 000000000015eccf ftell +000000000015ecd0 000000000015ecdf getUMat +000000000015ece0 000000000015ecef GetJint +000000000015ecf0 000000000015ecff remove +000000000015ed00 000000000015ed0f load +000000000015ed10 000000000015ed1f SendCmd +000000000015ed20 000000000015ed2f fill +000000000015ed30 000000000015ed3f diag +000000000015ed40 000000000015ed4f towupper +000000000015ed50 000000000015ed5f GetTemperaturemC +000000000015ed60 000000000015ed6f cvGetHashedKey +000000000015ed70 000000000015ed7f pthread_mutex_unlock +000000000015ed80 000000000015ed8f Platform +000000000015ed90 000000000015ed9f libusb_has_capability +000000000015eda0 000000000015edaf MAG_SetImageTransform +000000000015edb0 000000000015edbf Mahalanobis +000000000015edc0 000000000015edcf needed +000000000015edd0 000000000015eddf locateROI +000000000015ede0 000000000015edef __dynamic_cast +000000000015edf0 000000000015edff sum +000000000015ee00 000000000015ee0f cvInitTreeNodeIterator +000000000015ee10 000000000015ee1f MAG_GetLineTemperatureInfo +000000000015ee20 000000000015ee2f operator= +000000000015ee30 000000000015ee3f noArray +000000000015ee40 000000000015ee4f dlsym +000000000015ee50 000000000015ee5f strcoll +000000000015ee60 000000000015ee6f IFStream +000000000015ee70 000000000015ee7f linux_get_device_address +000000000015ee80 000000000015ee8f ndoffset +000000000015ee90 000000000015ee9f Write +000000000015eea0 000000000015eeaf setTo +000000000015eeb0 000000000015eebf create +000000000015eec0 000000000015eecf libusb_get_bus_number +000000000015eed0 000000000015eedf MAG_GetCamInfo +000000000015eee0 000000000015eeef ~OFStream +000000000015eef0 000000000015eeff clear +000000000015ef00 000000000015ef0f __cxa_get_globals +000000000015ef10 000000000015ef1f operator<< +000000000015ef20 000000000015ef2f cvCreateImage +000000000015ef30 000000000015ef3f GetTemperatureProbe +000000000015ef40 000000000015ef4f pthread_cond_wait +000000000015ef50 000000000015ef5f MAG_SaveDDT2Buffer +000000000015ef60 000000000015ef6f createGpuMatHeader +000000000015ef70 000000000015ef7f size +000000000015ef80 000000000015ef8f operator() +000000000015ef90 000000000015ef9f backProject +000000000015efa0 000000000015efaf determinant +000000000015efb0 000000000015efbf fillPoly +000000000015efc0 000000000015efcf IsLinked +000000000015efd0 000000000015efdf _M_insert_aux +000000000015efe0 000000000015efef ~Queue +000000000015eff0 000000000015efff PlatformInfo +000000000015f000 000000000015f00f deviceVersionMinor +000000000015f010 000000000015f01f putwc +000000000015f020 000000000015f02f size +000000000015f030 000000000015f03f StartProcessImage +000000000015f040 000000000015f04f max +000000000015f050 000000000015f05f cvCreateMatND +000000000015f060 000000000015f06f MAG_ProbeDDT +000000000015f070 000000000015f07f absdiff +000000000015f080 000000000015f08f cvCreateGraph +000000000015f090 000000000015f09f convertTo +000000000015f0a0 000000000015f0af t +000000000015f0b0 000000000015f0bf getTickFrequency +000000000015f0c0 000000000015f0cf handle +000000000015f0d0 000000000015f0df create +000000000015f0e0 000000000015f0ef GetOffset +000000000015f0f0 000000000015f0ff repeat +000000000015f100 000000000015f10f gzputs +000000000015f110 000000000015f11f libusb_get_device_list +000000000015f120 000000000015f12f wctob +000000000015f130 000000000015f13f dct +000000000015f140 000000000015f14f diag +000000000015f150 000000000015f15f minMaxIdx +000000000015f160 000000000015f16f UMat +000000000015f170 000000000015f17f circle +000000000015f180 000000000015f18f cvGraphRemoveEdgeByPtr +000000000015f190 000000000015f19f setUseOptimized +000000000015f1a0 000000000015f1af cvCreateChildMemStorage +000000000015f1b0 000000000015f1bf eye +000000000015f1c0 000000000015f1cf transform +000000000015f1d0 000000000015f1df ndevices +000000000015f1e0 000000000015f1ef poll +000000000015f1f0 000000000015f1ff pthread_cond_timedwait +000000000015f200 000000000015f20f cvWriteReal +000000000015f210 000000000015f21f clipLine +000000000015f220 000000000015f22f MD5Transform +000000000015f230 000000000015f23f mixChannels +000000000015f240 000000000015f24f pthread_create +000000000015f250 000000000015f25f log +000000000015f260 000000000015f26f ResizeBMP_2to3 +000000000015f270 000000000015f27f cvNextTreeNode +000000000015f280 000000000015f28f add +000000000015f290 000000000015f29f ~MatExpr +000000000015f2a0 000000000015f2af imageFromBufferSupport +000000000015f2b0 000000000015f2bf cvScalarToRawData +000000000015f2c0 000000000015f2cf operator* +000000000015f2d0 000000000015f2df pthread_cond_broadcast +000000000015f2e0 000000000015f2ef fwrite +000000000015f2f0 000000000015f2ff cvCreateMat +000000000015f300 000000000015f30f MatExpr +000000000015f310 000000000015f31f defaultAllocator +000000000015f320 000000000015f32f _M_fill_insert +000000000015f330 000000000015f33f ~SVD +000000000015f340 000000000015f34f SaveBMP +000000000015f350 000000000015f35f CallObjectMethod +000000000015f360 000000000015f36f cvEndWriteStruct +000000000015f370 000000000015f37f EstimateUnderArmTempFromForeheadRect +000000000015f380 000000000015f38f available +000000000015f390 000000000015f39f cvOpenFileStorage +000000000015f3a0 000000000015f3af GenerateVolatileLens +000000000015f3b0 000000000015f3bf GetSTDFrame +000000000015f3c0 000000000015f3cf mmap +000000000015f3d0 000000000015f3df line +000000000015f3e0 000000000015f3ef reshape +000000000015f3f0 000000000015f3ff libusb_alloc_transfer +000000000015f400 000000000015f40f LocalMap7x7_Simple +000000000015f410 000000000015f41f strcpy +000000000015f420 000000000015f42f fileno +000000000015f430 000000000015f43f newBitmap +000000000015f440 000000000015f44f findTarget +000000000015f450 000000000015f45f operator= +000000000015f460 000000000015f46f GetRemoteInfo +000000000015f470 000000000015f47f vsnprintf +000000000015f480 000000000015f48f Program +000000000015f490 000000000015f49f operator.delete[] +000000000015f4a0 000000000015f4af _M_insert_aux +000000000015f4b0 000000000015f4bf Mirror +000000000015f4c0 000000000015f4cf newNode +000000000015f4d0 000000000015f4df libusb_error_name +000000000015f4e0 000000000015f4ef normalize +000000000015f4f0 000000000015f4ff cvCreateSeqBlock +000000000015f500 000000000015f50f libusb_bulk_transfer +000000000015f510 000000000015f51f _S_select>const,void> +000000000015f520 000000000015f52f MAG_TriggerFFC +000000000015f530 000000000015f53f ProgramSource +000000000015f540 000000000015f54f clear +000000000015f550 000000000015f55f operator() +000000000015f560 000000000015f56f lrint +000000000015f570 000000000015f57f ~CFunctions +000000000015f580 000000000015f58f wmemcmp +000000000015f590 000000000015f59f FixTemperature +000000000015f5a0 000000000015f5af MAG_SetStorageDir +000000000015f5b0 000000000015f5bf countNonZero +000000000015f5c0 000000000015f5cf operator++ +000000000015f5d0 000000000015f5df cvUnregisterType +000000000015f5e0 000000000015f5ef fixedSize +000000000015f5f0 000000000015f5ff UseMask +000000000015f600 000000000015f60f reshape +000000000015f610 000000000015f61f getDDT +000000000015f620 000000000015f62f SetFixPara +000000000015f630 000000000015f63f Split +000000000015f640 000000000015f64f copyToSparseMat +000000000015f650 000000000015f65f LinkCamera +000000000015f660 000000000015f66f resetVertexArray +000000000015f670 000000000015f67f _Unwind_Find_FDE +000000000015f680 000000000015f68f drawContours +000000000015f690 000000000015f69f compute +000000000015f6a0 000000000015f6af borderInterpolate +000000000015f6b0 000000000015f6bf LoadCalibrationTable +000000000015f6c0 000000000015f6cf setFilterPara +000000000015f6d0 000000000015f6df syscall +000000000015f6e0 000000000015f6ef memset +000000000015f6f0 000000000015f6ff MAG_GetRgnTemperatureInfo +000000000015f700 000000000015f70f pthread_mutex_init +000000000015f710 000000000015f71f fdopen +000000000015f720 000000000015f72f setIdentity +000000000015f730 000000000015f73f divide +000000000015f740 000000000015f74f __register_frame_info_table +000000000015f750 000000000015f75f cvGetSeqReaderPos +000000000015f760 000000000015f76f usbi_log_v +000000000015f770 000000000015f77f dlopen +000000000015f780 000000000015f78f getStructuringElement +000000000015f790 000000000015f79f merge +000000000015f7a0 000000000015f7af solvePoly +000000000015f7b0 000000000015f7bf pthread_cond_signal +000000000015f7c0 000000000015f7cf MAG_GetOutputColorBardata +000000000015f7d0 000000000015f7df name +000000000015f7e0 000000000015f7ef operator= +000000000015f7f0 000000000015f7ff MAG_GetTemperatureData +000000000015f800 000000000015f80f cvWriteString +000000000015f810 000000000015f81f compare +000000000015f820 000000000015f82f write +000000000015f830 000000000015f83f SearchSeparateLine +000000000015f840 000000000015f84f cvClearMemStorage +000000000015f850 000000000015f85f GetYUV420 +000000000015f860 000000000015f86f cvError +000000000015f870 000000000015f87f __google_potentially_blocking_region_begin +000000000015f880 000000000015f88f gzrewind +000000000015f890 000000000015f89f ptr +000000000015f8a0 000000000015f8af batchDistance +000000000015f8b0 000000000015f8bf operator<< +000000000015f8c0 000000000015f8cf canCreateAlias +000000000015f8d0 000000000015f8df __deregister_frame_info +000000000015f8e0 000000000015f8ef operator= +000000000015f8f0 000000000015f8ff __lttf2 +000000000015f900 000000000015f90f Calibration +000000000015f910 000000000015f91f stat +000000000015f920 000000000015f92f ReleaseMemory +000000000015f930 000000000015f93f CFunctions +000000000015f940 000000000015f94f integral +000000000015f950 000000000015f95f MutexLock +000000000015f960 000000000015f96f ~Mutex +000000000015f970 000000000015f97f pthread_getspecific +000000000015f980 000000000015f98f LineIterator +000000000015f990 000000000015f99f wmemchr +000000000015f9a0 000000000015f9af libusb_set_configuration +000000000015f9b0 000000000015f9bf error +000000000015f9c0 000000000015f9cf getThreadNum +000000000015f9d0 000000000015f9df cvSetSeqBlockSize +000000000015f9e0 000000000015f9ef __register_frame_info +000000000015f9f0 000000000015f9ff divide +000000000015fa00 000000000015fa0f bitwise_or +000000000015fa10 000000000015fa1f ReleaseMemory +000000000015fa20 000000000015fa2f exception_ptr +000000000015fa30 000000000015fa3f cvRegisterType +000000000015fa40 000000000015fa4f channels +000000000015fa50 000000000015fa5f split +000000000015fa60 000000000015fa6f ~bad_array_new_length +000000000015fa70 000000000015fa7f MAG_Pause +000000000015fa80 000000000015fa8f cvPtr1D +000000000015fa90 000000000015fa9f acos +000000000015faa0 000000000015faaf cvCreateSparseMat +000000000015fab0 000000000015fabf wait +000000000015fac0 000000000015facf usbi_handle_disconnect +000000000015fad0 000000000015fadf cvStartReadChainPoints +000000000015fae0 000000000015faef PushFrameAve +000000000015faf0 000000000015faff __cxa_begin_catch +000000000015fb00 000000000015fb0f randShuffle +000000000015fb10 000000000015fb1f OFStream +000000000015fb20 000000000015fb2f getStdAllocator +000000000015fb30 000000000015fb3f cvInitImageHeader +000000000015fb40 000000000015fb4f DecodeCmd +000000000015fb50 000000000015fb5f __cxa_rethrow +000000000015fb60 000000000015fb6f ioctl +000000000015fb70 000000000015fb7f eigen +000000000015fb80 000000000015fb8f GetRgnTemperatureInfo +000000000015fb90 000000000015fb9f boundingRect +000000000015fba0 000000000015fbaf ~CMagDevice +000000000015fbb0 000000000015fbbf MAG_GetTemperatureProbe +000000000015fbc0 000000000015fbcf _M_insert_aux +000000000015fbd0 000000000015fbdf abort +000000000015fbe0 000000000015fbef WriteStructContext +000000000015fbf0 000000000015fbff __cxa_throw +000000000015fc00 000000000015fc0f DisLink +000000000015fc10 000000000015fc1f solve +000000000015fc20 000000000015fc2f checkHardwareSupport +000000000015fc30 000000000015fc3f type +000000000015fc40 000000000015fc4f lock +000000000015fc50 000000000015fc5f operator() +000000000015fc60 000000000015fc6f __cxa_atexit +000000000015fc70 000000000015fc7f merge +000000000015fc80 000000000015fc8f Reset +000000000015fc90 000000000015fc9f usbi_disconnect_device +000000000015fca0 000000000015fcaf __register_frame_info_bases +000000000015fcb0 000000000015fcbf theRNG +000000000015fcc0 000000000015fccf copyTo +000000000015fcd0 000000000015fcdf getDerivKernels +000000000015fce0 000000000015fcef MAG_SaveBMP +000000000015fcf0 000000000015fcff read +000000000015fd00 000000000015fd0f cvReshape +000000000015fd10 000000000015fd1f formatMessage +000000000015fd20 000000000015fd2f libusb_handle_events_timeout +000000000015fd30 000000000015fd3f ~__si_class_type_info +000000000015fd40 000000000015fd4f redirectError +000000000015fd50 000000000015fd5f KernelArg +000000000015fd60 000000000015fd6f atoi +000000000015fd70 000000000015fd7f SetInnertempUnit +000000000015fd80 000000000015fd8f preferredVectorWidthDouble +000000000015fd90 000000000015fd9f _M_release +000000000015fda0 000000000015fdaf hostUnifiedMemory +000000000015fdb0 000000000015fdbf kmeans +000000000015fdc0 000000000015fdcf LUT +000000000015fdd0 000000000015fddf ~CNetComm +000000000015fde0 000000000015fdef project +000000000015fdf0 000000000015fdff MAG_GetRemoteInfo +000000000015fe00 000000000015fe0f __terminate +000000000015fe10 000000000015fe1f usbi_connect_device +000000000015fe20 000000000015fe2f trace +000000000015fe30 000000000015fe3f LocalMap7x7 +000000000015fe40 000000000015fe4f Restart +000000000015fe50 000000000015fe5f predictOptimalVectorWidth +000000000015fe60 000000000015fe6f fseek +000000000015fe70 000000000015fe7f MAG_EstimateUnderArmTempFromForeheadRect +000000000015fe80 000000000015fe8f raw8bitToMat +000000000015fe90 000000000015fe9f dEnerge2dTemp +000000000015fea0 000000000015feaf usbi_hotplug_match +000000000015feb0 000000000015febf getNumThreads +000000000015fec0 000000000015fecf cubeRoot +000000000015fed0 000000000015fedf Laplacian +000000000015fee0 000000000015feef _Unwind_Resume +000000000015fef0 000000000015feff MAG_GetEXLevel +000000000015ff00 000000000015ff0f type +000000000015ff10 000000000015ff1f sqrtf +000000000015ff20 000000000015ff2f __cxa_current_exception_type +000000000015ff30 000000000015ff3f setvbuf +000000000015ff40 000000000015ff4f GetLineTemperatureInfo3 +000000000015ff50 000000000015ff5f getDefault +000000000015ff60 000000000015ff6f ~UMat +000000000015ff70 000000000015ff7f libusb_get_device +000000000015ff80 000000000015ff8f resetNormalArray +000000000015ff90 000000000015ff9f read +000000000015ffa0 000000000015ffaf ~FileStorage +000000000015ffb0 000000000015ffbf linux_device_disconnected +000000000015ffc0 000000000015ffcf cvInsertNodeIntoTree +000000000015ffd0 000000000015ffdf transpose +000000000015ffe0 000000000015ffef RefreshCaliFileNeeded +000000000015fff0 000000000015ffff StartProcessImage +0000000000160000 000000000016000f operator-- +0000000000160010 000000000016001f __convert_to_v +0000000000160020 000000000016002f gzopen +0000000000160030 000000000016003f libusb_exit +0000000000160040 000000000016004f printf +0000000000160050 000000000016005f AndroidBitmap_unlockPixels +0000000000160060 000000000016006f ~__forced_unwind +0000000000160070 000000000016007f _M_fill_insert +0000000000160080 000000000016008f create +0000000000160090 000000000016009f add +00000000001600a0 00000000001600af divide +00000000001600b0 00000000001600bf Mat +00000000001600c0 00000000001600cf fastFree +00000000001600d0 00000000001600df libusb_free_transfer +00000000001600e0 00000000001600ef useOpenCL +00000000001600f0 00000000001600ff lpos +0000000000160100 000000000016010f IsProcessingImage +0000000000160110 000000000016011f MAG_StartProcessImage +0000000000160120 000000000016012f memcmp +0000000000160130 000000000016013f write +0000000000160140 000000000016014f libusb_init +0000000000160150 000000000016015f MAG_Initialize +0000000000160160 000000000016016f cvReleaseMat +0000000000160170 000000000016017f MAG_GetFrameStatisticalData +0000000000160180 000000000016018f getLabel +0000000000160190 000000000016019f cvRead +00000000001601a0 00000000001601af libusb_get_device_descriptor +00000000001601b0 00000000001601bf typeToStr +00000000001601c0 00000000001601cf __errno +00000000001601d0 00000000001601df SearchInnerGray +00000000001601e0 00000000001601ef cvClearSeq +00000000001601f0 00000000001601ff ~TLSDataContainer +0000000000160200 000000000016020f ~exception +0000000000160210 000000000016021f init +0000000000160220 000000000016022f cvStartFindContours +0000000000160230 000000000016023f GetCurrentCameraInnerTemperature +0000000000160240 000000000016024f cvReleaseData +0000000000160250 000000000016025f _M_erase +0000000000160260 000000000016026f preferredVectorWidthInt +0000000000160270 000000000016027f device +0000000000160280 000000000016028f tolower +0000000000160290 000000000016029f preferredVectorWidthChar +00000000001602a0 00000000001602af calcCovarMatrix +00000000001602b0 00000000001602bf libusb_free_device_list +00000000001602c0 00000000001602cf cvGetErrStatus +00000000001602d0 00000000001602df norm +00000000001602e0 00000000001602ef StartReceiveImg +00000000001602f0 00000000001602ff convertTo +0000000000160300 000000000016030f MAG_ProbeBufferedDDT +0000000000160310 000000000016031f GetEllipseTemperatureInfo +0000000000160320 000000000016032f pthread_mutexattr_init +0000000000160330 000000000016033f seed +0000000000160340 000000000016034f libusb_claim_interface +0000000000160350 000000000016035f wcrtomb +0000000000160360 000000000016036f getHostMemRef +0000000000160370 000000000016037f SetColorPalette +0000000000160380 000000000016038f create +0000000000160390 000000000016039f fastAtan2 +00000000001603a0 00000000001603af ungetc +00000000001603b0 00000000001603bf sqrt +00000000001603c0 00000000001603cf cvInitMatNDHeader +00000000001603d0 00000000001603df cvCreateSparseMat +00000000001603e0 00000000001603ef usbi_hotplug_notification +00000000001603f0 00000000001603ff create +0000000000160400 000000000016040f Available +0000000000160410 000000000016041f CSmoother +0000000000160420 000000000016042f ~recursive_init_error +0000000000160430 000000000016043f pthread_mutex_lock +0000000000160440 000000000016044f __do_upcast +0000000000160450 000000000016045f step +0000000000160460 000000000016046f scaleAdd +0000000000160470 000000000016047f CvType +0000000000160480 000000000016048f polylines +0000000000160490 000000000016049f toupper +00000000001604a0 00000000001604af cvSetSeqReaderPos +00000000001604b0 00000000001604bf MAG_FixTemperature +00000000001604c0 00000000001604cf cvStartAppendToSeq +00000000001604d0 00000000001604df fillConvexPoly +00000000001604e0 00000000001604ef operator.new +00000000001604f0 00000000001604ff pthread_attr_destroy +0000000000160500 000000000016050f create +0000000000160510 000000000016051f MAG_GetCurrentCameraInnerTemperature +0000000000160520 000000000016052f cvReleaseImageHeader +0000000000160530 000000000016053f repeat +0000000000160540 000000000016054f MAG_SetSubsectionEnlargePara +0000000000160550 000000000016055f magnitude +0000000000160560 000000000016056f MAG_UnLockFrame +0000000000160570 000000000016057f readdir +0000000000160580 000000000016058f isContinuous +0000000000160590 000000000016059f GetEX +00000000001605a0 00000000001605af ptr +00000000001605b0 00000000001605bf _Unwind_SetGR +00000000001605c0 00000000001605cf cvSaveMemStoragePos +00000000001605d0 00000000001605df imagePitchAlignment +00000000001605e0 00000000001605ef GetFixPara +00000000001605f0 00000000001605ff finish +0000000000160600 000000000016060f usbi_cond_timedwait +0000000000160610 000000000016061f release +0000000000160620 000000000016062f locateROI +0000000000160630 000000000016063f usbi_device_cache_descriptor +0000000000160640 000000000016064f rectangle +0000000000160650 000000000016065f ~exception_ptr +0000000000160660 000000000016066f flip +0000000000160670 000000000016067f deallocate +0000000000160680 000000000016068f minEnclosingCircle +0000000000160690 000000000016069f push_back +00000000001606a0 00000000001606af __cxa_finalize +00000000001606b0 00000000001606bf cvarrToMat +00000000001606c0 00000000001606cf min +00000000001606d0 00000000001606df write +00000000001606e0 00000000001606ef libusb_unlock_events +00000000001606f0 00000000001606ff SetColorPalette +0000000000160700 000000000016070f SparseMatConstIterator +0000000000160710 000000000016071f __unexpected +0000000000160720 000000000016072f threshold +0000000000160730 000000000016073f __cxa_allocate_dependent_exception +0000000000160740 000000000016074f SelectCaliCurve +0000000000160750 000000000016075f operator.cast.to.float +0000000000160760 000000000016076f sizend +0000000000160770 000000000016077f ConvertResponse2Temperature +0000000000160780 000000000016078f findContours +0000000000160790 000000000016079f ~exception +00000000001607a0 00000000001607af ~WriteStructContext +00000000001607b0 00000000001607bf multiply +00000000001607c0 00000000001607cf copyTo +00000000001607d0 00000000001607df localtime +00000000001607e0 00000000001607ef fflush +00000000001607f0 00000000001607ff libusb_control_transfer +0000000000160800 000000000016080f cvPtrND +0000000000160810 000000000016081f FilterDetailEnhancement_Simple +0000000000160820 000000000016082f SaveBMP +0000000000160830 000000000016083f GetEllipseTemperatureInfo +0000000000160840 000000000016084f cvSeqRemoveSlice +0000000000160850 000000000016085f __cxa_guard_abort +0000000000160860 000000000016086f pthread_key_create +0000000000160870 000000000016087f copySize +0000000000160880 000000000016088f CNetComm +0000000000160890 000000000016089f PCA +00000000001608a0 00000000001608af getOptimalDFTSize +00000000001608b0 00000000001608bf operator[] +00000000001608c0 00000000001608cf MAG_DisLinkCamera +00000000001608d0 00000000001608df MAG_WillStartImmediately +00000000001608e0 00000000001608ef cvInitNArrayIterator +00000000001608f0 00000000001608ff Context +0000000000160900 000000000016090f GetRectTemperatureInfo +0000000000160910 000000000016091f linux_enumerate_device +0000000000160920 000000000016092f ResizeBMP_3to5 +0000000000160930 000000000016093f abs +0000000000160940 000000000016094f LinkCamera_UnProtected +0000000000160950 000000000016095f setUseIPP +0000000000160960 000000000016096f getDefaultObjectName +0000000000160970 000000000016097f operator() +0000000000160980 000000000016098f setNumThreads +0000000000160990 000000000016099f cvThreshold +00000000001609a0 00000000001609af setAudio +00000000001609b0 00000000001609bf Stream +00000000001609c0 00000000001609cf pipe +00000000001609d0 00000000001609df usbi_io_init +00000000001609e0 00000000001609ef libusb_submit_transfer +00000000001609f0 00000000001609ff operator++ +0000000000160a00 0000000000160a0f CallStaticObjectMethod +0000000000160a10 0000000000160a1f checkVector +0000000000160a20 0000000000160a2f adjustROI +0000000000160a30 0000000000160a3f lseek +0000000000160a40 0000000000160a4f MAG_GetDetectSuggestedParameter +0000000000160a50 0000000000160a5f Unlock +0000000000160a60 0000000000160a6f usbi_get_device_by_session_id +0000000000160a70 0000000000160a7f atan +0000000000160a80 0000000000160a8f Device +0000000000160a90 0000000000160a9f clear +0000000000160aa0 0000000000160aaf DeInit +0000000000160ab0 0000000000160abf time +0000000000160ac0 0000000000160acf gemm +0000000000160ad0 0000000000160adf MAG_GetFixPara +0000000000160ae0 0000000000160aef pthread_attr_init +0000000000160af0 0000000000160aff MAG_GetTemperatureData_Raw +0000000000160b00 0000000000160b0f uname +0000000000160b10 0000000000160b1f reserve +0000000000160b20 0000000000160b2f _M_fill_insert +0000000000160b30 0000000000160b3f __stack_chk_fail +0000000000160b40 0000000000160b4f ~ProgramSource +0000000000160b50 0000000000160b5f wcsxfrm +0000000000160b60 0000000000160b6f bitwise_xor +0000000000160b70 0000000000160b7f cvInitMatHeader +0000000000160b80 0000000000160b8f SubSectionEnlarge +0000000000160b90 0000000000160b9f FilterE4X +0000000000160ba0 0000000000160baf unexpected +0000000000160bb0 0000000000160bbf operator== +0000000000160bc0 0000000000160bcf getJpg +0000000000160bd0 0000000000160bdf matmul +0000000000160be0 0000000000160bef IsPause +0000000000160bf0 0000000000160bff getDefault +0000000000160c00 0000000000160c0f _M_fill_insert +0000000000160c10 0000000000160c1f _M_insert_aux +0000000000160c20 0000000000160c2f cvMemStorageAlloc +0000000000160c30 0000000000160c3f strtof +0000000000160c40 0000000000160c4f GetCurrentPos +0000000000160c50 0000000000160c5f Reset +0000000000160c60 0000000000160c6f GetCaliFile +0000000000160c70 0000000000160c7f perspectiveTransform +0000000000160c80 0000000000160c8f bitwise_and +0000000000160c90 0000000000160c9f Lock +0000000000160ca0 0000000000160caf getAudio +0000000000160cb0 0000000000160cbf fputs +0000000000160cc0 0000000000160ccf cvCreateImageHeader +0000000000160cd0 0000000000160cdf SetShutterState +0000000000160ce0 0000000000160cef cvStartWriteSeq +0000000000160cf0 0000000000160cff copyTo +0000000000160d00 0000000000160d0f MAG_StopProcessImage +0000000000160d10 0000000000160d1f __cxa_demangle +0000000000160d20 0000000000160d2f rewind +0000000000160d30 0000000000160d3f cvAttrValue +0000000000160d40 0000000000160d4f create +0000000000160d50 0000000000160d5f fgets +0000000000160d60 0000000000160d6f MAG_SetDetailEnhancement +0000000000160d70 0000000000160d7f libusb_handle_events_timeout_completed +0000000000160d80 0000000000160d8f MAG_SetEXLevel +0000000000160d90 0000000000160d9f TriggerFFC +0000000000160da0 0000000000160daf ungetwc +0000000000160db0 0000000000160dbf bitwise_not +0000000000160dc0 0000000000160dcf depth +0000000000160dd0 0000000000160ddf SetDetailEnhancement +0000000000160de0 0000000000160def set +0000000000160df0 0000000000160dff cvGetImageCOI +0000000000160e00 0000000000160e0f matchTemplate +0000000000160e10 0000000000160e1f pthread_cond_init +0000000000160e20 0000000000160e2f cvGetMat +0000000000160e30 0000000000160e3f MatOp +0000000000160e40 0000000000160e4f cvPtr3D +0000000000160e50 0000000000160e5f StopProcessImage +0000000000160e60 0000000000160e6f sameSize +0000000000160e70 0000000000160e7f MAG_GetOutputBMPdata +0000000000160e80 0000000000160e8f libusb_ref_device +0000000000160e90 0000000000160e9f setDDT +0000000000160ea0 0000000000160eaf libusb_unref_device +0000000000160eb0 0000000000160ebf MAG_SetIsothermalPara +0000000000160ec0 0000000000160ecf extractImageCOI +0000000000160ed0 0000000000160edf invert +0000000000160ee0 0000000000160eef MAG_IsInitialized +0000000000160ef0 0000000000160eff NAryMatIterator +0000000000160f00 0000000000160f0f Buffer +0000000000160f10 0000000000160f1f delGlobalObject +0000000000160f20 0000000000160f2f Canny +0000000000160f30 0000000000160f3f Pause +0000000000160f40 0000000000160f4f SetLensParameter +0000000000160f50 0000000000160f5f copyTo +0000000000160f60 0000000000160f6f terminate +0000000000160f70 0000000000160f7f deallocate +0000000000160f80 0000000000160f8f mean +0000000000160f90 0000000000160f9f mkstemp +0000000000160fa0 0000000000160faf _M_fill_insert +0000000000160fb0 0000000000160fbf usbi_sanitize_device +0000000000160fc0 0000000000160fcf AndroidBitmap_getInfo +0000000000160fd0 0000000000160fdf ~MutexLock +0000000000160fe0 0000000000160fef StartReceiveImg_UnProtected +0000000000160ff0 0000000000160fff ~Image2D +0000000000161000 000000000016100f setlocale +0000000000161010 000000000016101f SaveDDT +0000000000161020 000000000016102f cvWrite +0000000000161030 000000000016103f cvSeqPushMulti +0000000000161040 000000000016104f cvEndWriteSeq +0000000000161050 000000000016105f CallVoidMethod +0000000000161060 000000000016106f cvSeqRemove +0000000000161070 000000000016107f ptr +0000000000161080 000000000016108f create +0000000000161090 000000000016109f createSameSize +00000000001610a0 00000000001610af ~__class_type_info +00000000001610b0 00000000001610bf __convert_to_v +00000000001610c0 00000000001610cf parallel_for_ +00000000001610d0 00000000001610df FixTemperature +00000000001610e0 00000000001610ef rectangle +00000000001610f0 00000000001610ff libusb_get_next_timeout +0000000000161100 000000000016110f dl_iterate_phdr +0000000000161110 000000000016111f cvWriteInt +0000000000161120 000000000016112f uncaught_exception +0000000000161130 000000000016113f operator- +0000000000161140 000000000016114f cvStartReadRawData +0000000000161150 000000000016115f backSubst +0000000000161160 000000000016116f __cxa_call_unexpected +0000000000161170 000000000016117f getText +0000000000161180 000000000016118f libusb_get_device_address +0000000000161190 000000000016119f MDTHelper +00000000001611a0 00000000001611af ones +00000000001611b0 00000000001611bf cvPointSeqFromMat +00000000001611c0 00000000001611cf vsprintf +00000000001611d0 00000000001611df newGlobalObject +00000000001611e0 00000000001611ef GetTemperatureData +00000000001611f0 00000000001611ff FileStorage +0000000000161200 000000000016120f UMatData +0000000000161210 000000000016121f solveCubic +0000000000161220 000000000016122f ~vector +0000000000161230 000000000016123f open +0000000000161240 000000000016124f cvWriteComment +0000000000161250 000000000016125f locateROI +0000000000161260 000000000016126f cvNextNArraySlice +0000000000161270 000000000016127f cvReadRawDataSlice +0000000000161280 000000000016128f cvSeqPush +0000000000161290 000000000016129f inRange +00000000001612a0 00000000001612af ptr +00000000001612b0 00000000001612bf Mat +00000000001612c0 00000000001612cf hash +00000000001612d0 00000000001612df ellipse2Poly +00000000001612e0 00000000001612ef fscanf +00000000001612f0 00000000001612ff threshold_ +0000000000161300 000000000016130f strdup +0000000000161310 000000000016131f ~vector +0000000000161320 000000000016132f __convert_to_v +0000000000161330 000000000016133f __cxa_free_exception +0000000000161340 000000000016134f resize +0000000000161350 000000000016135f MAG_GetEllipseTemperatureInfo +0000000000161360 000000000016136f strrchr +0000000000161370 000000000016137f localtime_r +0000000000161380 000000000016138f libusb_cancel_transfer +0000000000161390 000000000016139f closedir +00000000001613a0 00000000001613af _Unwind_DeleteException +00000000001613b0 00000000001613bf cvGetDims +00000000001613c0 00000000001613cf MAG_GetOutputRawData +00000000001613d0 00000000001613df getGaussianKernel +00000000001613e0 00000000001613ef usbi_signal_event +00000000001613f0 00000000001613ff convertScaleAbs +0000000000161400 000000000016140f fstat +0000000000161410 000000000016141f __cxa_guard_acquire +0000000000161420 000000000016142f norm +0000000000161430 000000000016143f allocate +0000000000161440 000000000016144f _Unwind_GetDataRelBase +0000000000161450 000000000016145f dft +0000000000161460 000000000016146f getTextSize +0000000000161470 000000000016147f copyMakeBorder +0000000000161480 000000000016148f offset +0000000000161490 00000000001614af entry +00000000001614b0 00000000001614cf FUN_001614b0 +00000000001614d0 000000000016157b FUN_001614d0 +000000000016157c 00000000001615f7 FUN_0016157c +00000000001615f8 0000000000161617 FUN_001615f8 +0000000000161618 0000000000161657 FUN_00161618 +0000000000161658 0000000000161697 FUN_00161658 +0000000000161698 00000000001616d7 FUN_00161698 +00000000001616d8 00000000001616e3 _FINI_0 +00000000001616e4 000000000016171f _INIT_0 +0000000000161720 000000000016175b _INIT_1 +000000000016175c 0000000000161797 _INIT_2 +0000000000161798 00000000001617d3 _INIT_3 +00000000001617d4 000000000016180f _INIT_4 +0000000000161810 000000000016184b _INIT_5 +000000000016184c 0000000000161a57 _INIT_6 +0000000000161a60 0000000000161aa3 _INIT_7 +0000000000161af0 0000000000161ccb _INIT_8 +0000000000161ccc 0000000000161cff _INIT_9 +0000000000161d00 0000000000161d3b _INIT_10 +0000000000161d3c 0000000000161d5b _INIT_11 +0000000000161d5c 0000000000161fc3 _INIT_12 +0000000000161fc4 000000000016204b _INIT_13 +000000000016204c 00000000001620a7 _INIT_14 +00000000001620e0 00000000001620f7 _INIT_15 +00000000001620f8 0000000000162157 _INIT_16 +0000000000162158 000000000016224b _INIT_17 +000000000016224c 000000000016233f _INIT_18 +0000000000162340 000000000016238b _INIT_19 +000000000016238c 00000000001623a3 FUN_0016238c +00000000001623bc 00000000001623df CAccumulator +00000000001623e0 000000000016242f ~CAccumulator +0000000000162430 000000000016247f ~CAccumulator +0000000000162480 0000000000162547 Reset +0000000000162548 0000000000162923 PushFrame +0000000000162924 0000000000162933 Restart +0000000000162934 0000000000162947 FStream +0000000000162948 000000000016296b ~OFStream +000000000016296c 000000000016296f ~FStream +0000000000162970 0000000000162977 GetRaw +0000000000162978 0000000000162997 IsEof +0000000000162998 00000000001629ef ReadLine +00000000001629f0 0000000000162a27 Read +0000000000162a28 0000000000162a2f GetCurrentPos +0000000000162a30 0000000000162a4f Seek +0000000000162a50 0000000000162b03 OFStream +0000000000162b2c 0000000000162b67 ~OFStream +0000000000162b68 0000000000162b87 Flush +0000000000162b88 0000000000162baf Write +0000000000162bb0 0000000000162bdf Write +0000000000162be0 0000000000162c2f WriteLine +0000000000162c30 0000000000162cb7 GetLength +0000000000162cb8 0000000000162d4f IFStream +0000000000162d78 0000000000162db3 ~IFStream +0000000000162db4 0000000000162dbb GetLength +0000000000162dbc 00000000001633f3 CFunctions +00000000001643e8 00000000001644c3 MutexLock +00000000001644c4 0000000000167c73 SetColorPalette +0000000000168c60 0000000000168c73 ~MutexLock +0000000000168c78 0000000000168cf7 ~CFunctions +0000000000168d50 0000000000168f1b ReleaseMemory +0000000000168f1c 0000000000168f27 FUN_00168f1c +0000000000168f28 0000000000168f4b ~CFunctions +0000000000168f4c 0000000000168fff ChangeBMPSize +0000000000169000 00000000001694a3 Reset +00000000001694f4 000000000016967b CalTaoAtm +000000000016967c 000000000016976f PushBaselineRaw +0000000000169770 00000000001699db SelectCaliCurve +00000000001699dc 0000000000169bbf DoSomething +0000000000169bc0 0000000000169e8f GenerateVolatileLens +0000000000169e90 000000000016a117 InterpolateShort +000000000016a118 000000000016a397 InterpolateUShort +000000000016a398 000000000016a41b Raw2Temperature +000000000016a41c 000000000016a4e3 Calibration +000000000016a4e4 000000000016ac43 PushFrame +000000000016ac44 000000000016adfb CopyState +000000000016adfc 000000000016aef7 Rotate +000000000016aef8 000000000016b06f Mirror +000000000016b070 000000000016b10f FindMaxTemperature +000000000016b110 000000000016b12b ConvertDeltamC2InnerTemp +000000000016b12c 000000000016b247 SubMask +000000000016b248 000000000016b3b7 FilterE2X +000000000016b3b8 000000000016b6f7 FilterE4X +000000000016b6f8 000000000016b7fb TempRangeStat +000000000016b7fc 000000000016bacb GrayEnlarge +000000000016bacc 000000000016bca7 FilterDetailEnhancement_Simple +000000000016bca8 000000000016be97 FilterDetailEnhancement +000000000016be98 000000000016c22b ResizeBMP_2X +000000000016c22c 000000000016c5ef ResizeBMP_2to3 +000000000016c5f0 000000000016cbe3 ResizeBMP_3to5 +000000000016cbe4 000000000016cda3 ResizeBMP +000000000016cda4 000000000016cdb7 ConvertDeltaInnerTemp2mC +000000000016cdb8 000000000016d6af ReviseTemperature +000000000016d6b0 000000000016d907 CorrectTemperature +000000000016d908 000000000016d933 ConvertmC2InnerTemp +000000000016d934 000000000016da1f CalContrastOffsetedAutoEnlargeRange +000000000016da20 000000000016dfa7 SubSectionEnlarge +000000000016dfa8 000000000016e51b SearchSeparateLine +000000000016e51c 000000000016ed0b HistDeRedundance +000000000016ed0c 000000000016efb7 IsothermalPalette +000000000016efb8 000000000016f19f MapTemperature +000000000016f1a0 000000000016f257 SearchInnerTemp +000000000016f258 000000000016f363 SearchInnerGray +000000000016f364 000000000016f3ab GetOriginalBMPDataPointer +000000000016f3ac 000000000016f4bf CalResponse +000000000016f4c0 000000000016f6b7 CalResponse +000000000016f6b8 000000000016f953 SaveBMP +000000000016f9ac 000000000017089f LoadCalibrationTable +00000000001708c8 0000000000170c5f SaveRaw +0000000000170cb4 0000000000170f4f GetRectTemperatureInfo +0000000000170f50 00000000001716fb GetEllipseTemperatureInfo +00000000001716fc 00000000001719c7 GetLineTemperatureInfo +00000000001719c8 0000000000171e23 GetLineTemperatureInfo2 +0000000000171e24 0000000000172337 GetLineTemperatureInfo3 +0000000000172338 000000000017252b GetRgnTemperatureInfo +000000000017252c 00000000001726af GetTemperature +00000000001726b0 000000000017271b Temp2Energe +000000000017271c 0000000000172813 dTemp2dEnerge +0000000000172814 0000000000172917 dEnerge2dTemp +0000000000172918 000000000017297f Energe2Temp +0000000000172980 00000000001729b3 Radius2StrayEnery +00000000001729b4 0000000000172e4f FindStrayRadius +0000000000172e50 0000000000172e6f ConvertInnerTemp2mC +0000000000172e70 0000000000172e77 GetEX +0000000000172e78 0000000000172f2f CalibrationMain_RTV +0000000000172f30 0000000000173123 BlindCompensation +0000000000173124 0000000000173453 ConvertResponse2Temperature +0000000000173468 00000000001735bb EvaluateNetdt +00000000001735bc 00000000001736f7 UseMask +000000000017370c 000000000017381b GetTemperaturemC +000000000017381c 0000000000173a6b GetCenterTemperatureSharpness +0000000000173a6c 0000000000173cbb CalcSD +0000000000173cbc 000000000017405b LocalMap7x7 +000000000017405c 0000000000174297 LocalMap7x7_Simple +0000000000174298 0000000000174413 ApplyNewEffect +0000000000174414 00000000001744d3 SetEX +00000000001744d4 000000000017456b SetLensParameter +000000000017456c 000000000017487b SetInnertempUnit +000000000017487c 00000000001748ef isDDTValid +00000000001748f0 000000000017493b MDTHelper +000000000017493c 000000000017493f ~MDTHelper +0000000000174940 0000000000174a1b free +0000000000174a1c 0000000000175097 load +0000000000175098 00000000001750af isSizeValid +00000000001750b0 00000000001754cf save +00000000001754d0 00000000001754d3 unload +00000000001754d4 000000000017555f set +0000000000175560 00000000001755c7 get +00000000001755c8 000000000017566b setJpg +000000000017566c 000000000017570f setDDT +0000000000175710 00000000001757b3 setVisible +00000000001757b4 0000000000175867 setLabel +0000000000175868 000000000017590b setText +000000000017590c 00000000001759af setAudio +00000000001759b0 00000000001759cb getJpg +00000000001759cc 00000000001759e7 getDDT +00000000001759e8 0000000000175a03 getVisible +0000000000175a04 0000000000175a1f getLabel +0000000000175a20 0000000000175a3b getText +0000000000175a3c 0000000000175a57 getAudio +0000000000175a58 0000000000175aaf MStream +0000000000175ab0 0000000000175b23 MStream +0000000000175b24 0000000000175b87 MStream +0000000000175b88 0000000000175b9b MStream +0000000000175b9c 0000000000175bdb operator= +0000000000175bdc 0000000000175beb ~MStream +0000000000175bec 0000000000175db3 Split +0000000000175e2c 000000000017604f Split +00000000001760e0 00000000001761a3 hex2str +00000000001761a4 00000000001761b7 Available +00000000001761b8 000000000017627f Fmt +0000000000176280 0000000000176287 Get +0000000000176288 000000000017628f Get +0000000000176290 000000000017629f Write +00000000001762a0 00000000001762bf Write +00000000001762c0 0000000000176313 Puts +0000000000176314 0000000000176383 Puts +0000000000176384 000000000017638f Reset +0000000000176390 000000000017639f Empty +00000000001763a0 0000000000176413 operator<< +0000000000176414 0000000000176443 operator<< +0000000000176444 0000000000176663 _M_emplace_back_aux +0000000000176664 00000000001766d7 GetTickCount +00000000001766d8 00000000001766e3 Sleep +00000000001766e4 000000000017677f GetLocalTime +0000000000176780 0000000000177437 GetOffset +0000000000177438 000000000017763f FUN_00177438 +0000000000177640 000000000017774f CNetComm +0000000000177810 0000000000177867 Condition +0000000000177880 00000000001778ab ~Condition +00000000001778c4 0000000000177943 ~CNetComm +00000000001779bc 0000000000177aab DeInit +0000000000177ac8 0000000000177aeb ~CNetComm +0000000000177aec 0000000000177c8f Init +0000000000177ca4 0000000000177ce7 ThreadMonitor +0000000000177ce8 0000000000177d2b StopReceiveImg +0000000000177d2c 0000000000177daf DisLink +0000000000177db0 0000000000177e23 SendEmptyCmd +0000000000177e24 0000000000177f2f SendCmd +0000000000177f50 0000000000177fc3 SendCmdWith1Para +0000000000177fc4 000000000017813f DecodeCmd +0000000000178140 00000000001781a7 DisLink_UnProtected +00000000001781a8 00000000001782b3 StopReceiveImg_UnProtected +00000000001782d0 0000000000178533 EnumCameras +0000000000178534 00000000001785e7 LinkCamera +00000000001785e8 000000000017875f LinkCamera_UnProtected +0000000000178760 0000000000178a7f ThreadReceiveImg +0000000000178a9c 0000000000178b4b StartReceiveImg +0000000000178b4c 0000000000178d83 StartReceiveImg_UnProtected +0000000000178d9c 0000000000178e3f ThreadOutputImg +0000000000178e40 0000000000178ec3 SetShutterState +0000000000178ec4 0000000000178f47 SetLaserState +0000000000178f48 0000000000178fcb AutoPowerSave +0000000000178fcc 00000000001790ab ReadCaliInfo +00000000001790ac 000000000017935f GetCaliFile +00000000001793d8 0000000000179543 RefreshCaliFileNeeded +0000000000179544 00000000001795cf GetCaliFileName +00000000001795d0 000000000017969b TransferCaliFile +000000000017969c 000000000017986b ReadPara +000000000017986c 00000000001799af SetPara +00000000001799b0 00000000001799c7 ThreadPrepare +00000000001799c8 0000000000179a7f DoPrepareInBackground +0000000000179a80 0000000000179aa7 CSmoother +0000000000179aa8 0000000000179b07 ~CSmoother +0000000000179b08 0000000000179b67 ~CSmoother +0000000000179b68 0000000000179c4f Reset +0000000000179c50 0000000000179e57 PushFrameSum +0000000000179e58 000000000017a12b PushFrameAve +000000000017a12c 000000000017a157 Restart +000000000017a158 000000000017a2a3 GetSTDFrame +000000000017a2a4 000000000017a377 GetLogFileName +000000000017a378 000000000017a427 MAG_RevisedTemp2InnerTemp +000000000017a428 000000000017a47b MAG_IsChannelAvailable +000000000017a47c 000000000017a52b MAG_RevisedTemp2Gray +000000000017a52c 000000000017a643 MAG_GetCurrentOffset +000000000017a644 000000000017a68f MAG_SetStorageDir +000000000017a690 000000000017a70b MAG_GetCurrentCameraInnerTemperature +000000000017a70c 000000000017a873 MAG_NewChannel +000000000017a890 000000000017a94f MAG_DelChannel +000000000017a950 000000000017aa0b MAG_Free +000000000017aa0c 000000000017aa77 MAG_IsInitialized +000000000017aa78 000000000017ab13 MAG_Initialize +000000000017ab14 000000000017abbf MAG_StopProcessImage +000000000017abc0 000000000017abc7 MAG_GetLocalIp +000000000017abc8 000000000017abd3 MAG_SetFilter +000000000017abd4 000000000017abe3 MAG_EnableAutoReConnect +000000000017abe4 000000000017ac0f MAG_EnumCameras +000000000017ac10 000000000017ac7b MAG_IsLinked +000000000017ac7c 000000000017ac83 MAG_IsListening +000000000017ac84 000000000017ad43 MAG_LinkCamera +000000000017ad44 000000000017ae03 MAG_LinkCameraEx +000000000017ae04 000000000017b243 ReadRemoteData +000000000017b2c4 000000000017b2cb MAG_ListenTo +000000000017b2cc 000000000017b35b MAG_DisLinkCamera +000000000017b35c 000000000017b3cb MAG_GetRecentHeartBeat +000000000017b3cc 000000000017b427 MAG_StopListen +000000000017b428 000000000017b497 MAG_SetReConnectCallBack +000000000017b498 000000000017b503 MAG_GetCamInfo +000000000017b504 000000000017b50b MAG_GetMulticastState +000000000017b50c 000000000017b513 MAG_GetCameraTemperature +000000000017b514 000000000017b59f MAG_GetTerminalList +000000000017b5a0 000000000017b613 MAG_IsProcessingImage +000000000017b614 000000000017b6cf MAG_PrepareProcessImage +000000000017b6d0 000000000017b72f MAG_StartProcessImage +000000000017b730 000000000017ba5f StartProcessImage +000000000017ba60 000000000017bac3 MAG_StartProcessPulseImage +000000000017bac4 000000000017bb4f MAG_WillStartImmediately +000000000017bb50 000000000017bbb7 MAG_TransferPulseImage +000000000017bbb8 000000000017bc27 MAG_Pause +000000000017bc28 000000000017bc3f MAG_Resume +000000000017bc40 000000000017bc57 MAG_IsPause +000000000017bc58 000000000017bcb7 FFC +000000000017bcb8 000000000017bd53 MAG_TriggerFFC +000000000017bd54 000000000017bd5b MAG_SetIoAlarmState +000000000017bd5c 000000000017bdbb MAG_SetColorPalette +000000000017bdbc 000000000017beb7 MAG_SetSubsectionEnlargePara +000000000017beb8 000000000017bfff MAG_SetImageTransform +000000000017c000 000000000017c0ef MAG_SetAutoEnlargePara +000000000017c0f0 000000000017c1af MAG_SetIsothermalPara +000000000017c1b0 000000000017c1b7 MAG_SetUserROIs +000000000017c1b8 000000000017c1bf MAG_ResetCamera +000000000017c1c0 000000000017c25b MAG_GetFilteredRaw +000000000017c25c 000000000017c31b MAG_GetOutputBMPdata +000000000017c31c 000000000017c3b7 MAG_GetOutputRawData +000000000017c3b8 000000000017c477 MAG_GetOutputColorBardata +000000000017c478 000000000017c537 MAG_GetOutputVideoData +000000000017c538 000000000017c5d3 MAG_GetOutputVideoYV12 +000000000017c5d4 000000000017c64b MAG_GetVideoPPS +000000000017c64c 000000000017c6c3 MAG_GetVideoSPS +000000000017c6c4 000000000017c73b MAG_GetVideoVCL +000000000017c73c 000000000017c78f MAG_GetTemperatureData +000000000017c790 000000000017caab MAG_GetTemperatureData_Raw +000000000017caac 000000000017cb2f MAG_GetFixPara +000000000017cb30 000000000017cc07 MAG_SetFixPara +000000000017cc08 000000000017cc53 MAG_SetEXLevel +000000000017cc54 000000000017cca3 MAG_GetEXLevel +000000000017cca4 000000000017ccfb MAG_SetDetailEnhancement +000000000017ccfc 000000000017cd5b MAG_FixTemperature +000000000017cd5c 000000000017cdab MAG_FixTemperature2 +000000000017cdac 000000000017ce1f MAG_GetFrameStatisticalData +000000000017ce20 000000000017ce77 MAG_GetRemoteInfo +000000000017ce78 000000000017cedf MAG_GetTemperatureProbe +000000000017cee0 000000000017cf33 MAG_GetTemperatureProbe2 +000000000017cf34 000000000017cf9f MAG_GetLineTemperatureInfo +000000000017cfa0 000000000017cfff MAG_GetRectTemperatureInfo +000000000017d000 000000000017d053 MAG_GetEllipseTemperatureInfo +000000000017d054 000000000017d0a7 MAG_GetRgnTemperatureInfo +000000000017d0a8 000000000017d0f7 MAG_UseTemperatureMask +000000000017d0f8 000000000017d17b MAG_IsUsingTemperatureMask +000000000017d17c 000000000017d1df MAG_SaveBMP +000000000017d1e0 000000000017d1e7 MAG_SetPTZCmd +000000000017d1e8 000000000017d1ef MAG_QueryPTZState +000000000017d1f0 000000000017d1f7 MAG_SetSerialCmd +000000000017d1f8 000000000017d1ff MAG_SetVideoContrast +000000000017d200 000000000017d253 MAG_SetSerialCallBack +000000000017d254 000000000017d25b MAG_SetVideoBrightness +000000000017d25c 000000000017d2d3 MAG_LockFrame +000000000017d2d4 000000000017d34b MAG_UnLockFrame +000000000017d34c 000000000017d493 MAG_SaveMGT +000000000017d4b0 000000000017d90b SaveMGT +000000000017d9a8 000000000017dafb MAG_SaveDDT +000000000017db18 000000000017dd97 SaveDDT +000000000017de1c 000000000017df1f MAG_SaveDDT2Buffer +000000000017df20 000000000017e3eb LoadDDT +000000000017e3ec 000000000017e4c3 MAG_LoadDDT +000000000017e4f4 000000000017e4f7 MAG_LoadBufferedDDT +000000000017e4f8 000000000017e65b MAG_ProbeDDT +000000000017e68c 000000000017e75b MAG_ProbeBufferedDDT +000000000017e75c 000000000017e763 MAG_SDStorageMGT +000000000017e764 000000000017e76b MAG_SDStorageBMP +000000000017e76c 000000000017e773 MAG_SDStorageMGSStart +000000000017e774 000000000017e77b MAG_SDStorageMGSStop +000000000017e77c 000000000017e783 MAG_SDStorageAviStart +000000000017e784 000000000017e78b MAG_SDStorageAviStop +000000000017e78c 000000000017e7fb MAG_SDCardStorage +000000000017e7fc 000000000017eb0f FUN_0017e7fc +000000000017eb10 000000000017eb13 ShiftNotify +000000000017eb14 000000000017f09f MAG_EstimateUnderArmTempFromForeheadRect +000000000017f0a0 000000000017f0f7 CVideoFunctions +000000000017f0f8 000000000017f167 ~CVideoFunctions +000000000017f180 000000000017f1e3 ReleaseMemory +000000000017f1e4 000000000017f3c3 Reset +000000000017f3d8 000000000017f787 PushYUV +000000000017f788 000000000017f87f Rotate +000000000017f880 000000000017f9ef Mirror +000000000017f9f0 000000000017fb9b SaveRGB24 +000000000017fbf4 000000000017fc8f Logging +000000000017fca8 000000000017fceb ~Logging +000000000017fd00 000000000017fd0b Setfp +000000000017fd0c 000000000017fd27 Setfp +000000000017fd28 000000000017fd4b MD5Init +000000000017fd4c 000000000017fe1b MD5Update +000000000017fe1c 0000000000180b3f MD5Transform +0000000000180b40 0000000000180d8f MD5Final +0000000000180d90 0000000000180de3 MD5Encode +0000000000180de4 0000000000180e2f MD5Decode +0000000000180e30 0000000000180e77 wait +0000000000180e94 0000000000180f9f waitForMsecs +0000000000180fbc 0000000000181037 CMagDevice +0000000000181038 00000000001810c7 Initialize +00000000001810c8 000000000018113f ~CMagDevice +0000000000181144 000000000018114b DisLinkCamera +000000000018114c 0000000000181153 GetCamInfo +0000000000181154 000000000018115b IsLinked +000000000018115c 0000000000181197 LinkCamera +0000000000181198 000000000018119f TriggerFFC +00000000001811a0 00000000001811a7 IsProcessingImage +00000000001811a8 00000000001811af PrepareProcessImage +00000000001811b0 0000000000181257 StartProcessImage +0000000000181258 000000000018125f WillStartImmediately +0000000000181260 0000000000181267 StopProcessImage +0000000000181268 000000000018126f Pause +0000000000181270 0000000000181277 Resume +0000000000181278 000000000018127f IsPause +0000000000181280 0000000000181287 SetColorPalette +0000000000181288 000000000018128f SetSubsectionEnlargePara +0000000000181290 0000000000181297 SetIsothermalPara +0000000000181298 000000000018129f SetAutoEnlargePara +00000000001812a0 00000000001812a7 SetEXLevel +00000000001812a8 00000000001812af GetEXLevel +00000000001812b0 00000000001812b7 SetDetailEnhancement +00000000001812b8 00000000001812bf GetFixPara +00000000001812c0 00000000001812cb SetFixPara +00000000001812cc 00000000001812d3 GetChannelIndex +00000000001812d4 00000000001812db GetOutputBMPdata +00000000001812dc 00000000001812e3 GetOutputColorBardata +00000000001812e4 00000000001812eb GetOutputRawData +00000000001812ec 00000000001812f3 GetFrameStatisticalData +00000000001812f4 00000000001812fb GetRemoteInfo +00000000001812fc 0000000000181303 FixTemperature +0000000000181304 000000000018130b FixTemperature +000000000018130c 0000000000181313 GetTemperatureData +0000000000181314 000000000018131b GetTemperatureData_Raw +000000000018131c 0000000000181323 GetTemperatureProbe +0000000000181324 000000000018132b GetTemperatureProbe +000000000018132c 0000000000181333 GetLineTemperatureInfo +0000000000181334 000000000018133b GetRectTemperatureInfo +000000000018133c 0000000000181343 GetEllipseTemperatureInfo +0000000000181344 000000000018134b GetRgnTemperatureInfo +000000000018134c 0000000000181353 SaveDDT2Buffer +0000000000181354 00000000001813db LoadBufferedDDT +00000000001813dc 00000000001813e3 SaveBMP +00000000001813e4 00000000001813eb SaveDDT +00000000001813ec 000000000018146b LoadDDT +000000000018146c 00000000001814ab SetImageTransform +00000000001814ac 00000000001814b3 Lock +00000000001814b4 00000000001814bb Unlock +00000000001814bc 00000000001814c3 GetCurrentCameraInnerTemperature +00000000001814c4 00000000001814cb EstimateUnderArmTempFromForeheadRect +00000000001814cc 00000000001814ef ConvertPos2XY +00000000001814f0 00000000001814fb ConvertXY2Pos +00000000001814fc 00000000001815f7 newOutputObjects +00000000001815f8 000000000018163f delOutputObjects +0000000000181640 000000000018171b callNewFrameMethod +000000000018171c 00000000001817bb CallVoidMethod +00000000001817bc 0000000000181923 NewFrameCallBack +0000000000181924 0000000000181a8b NewFrameForDDTCallBack +0000000000181a8c 0000000000181b67 callPrepareTransferMethod +0000000000181b68 0000000000181cf7 PrepareCallback +0000000000181cf8 0000000000181d53 JNI_OnLoad +0000000000181d54 0000000000181e7b JNI_OnUnload +0000000000181e7c 0000000000181edb Java_cn_com_magnity_coresdk_MagDevice_Init +0000000000181edc 0000000000181f7b Java_cn_com_magnity_coresdk_MagDevice_LinkCamera +0000000000181f90 0000000000182013 Java_cn_com_magnity_coresdk_MagDevice_DislinkCamera +0000000000182014 000000000018203f Java_cn_com_magnity_coresdk_MagDevice_IsLinked +0000000000182040 00000000001820ef Java_cn_com_magnity_coresdk_MagDevice_PrepareProcessImage +00000000001820f0 000000000018220f Java_cn_com_magnity_coresdk_MagDevice_StartProcessImage +0000000000182210 000000000018227b Java_cn_com_magnity_coresdk_MagDevice_StopProcessImage +000000000018227c 00000000001822a7 Java_cn_com_magnity_coresdk_MagDevice_IsProcessingImage +00000000001822a8 00000000001822c7 Java_cn_com_magnity_coresdk_MagDevice_Pause +00000000001822c8 00000000001822e7 Java_cn_com_magnity_coresdk_MagDevice_Resume +00000000001822e8 0000000000182313 Java_cn_com_magnity_coresdk_MagDevice_IsPause +0000000000182314 00000000001825f7 Java_cn_com_magnity_coresdk_MagDevice_GetCameraInfo +00000000001825f8 0000000000182623 Java_cn_com_magnity_coresdk_MagDevice_TriggerFFC +0000000000182624 0000000000182647 Java_cn_com_magnity_coresdk_MagDevice_SetColorPalette +0000000000182648 0000000000182683 Java_cn_com_magnity_coresdk_MagDevice_SetSubsectionEnlargePara +0000000000182684 00000000001826af Java_cn_com_magnity_coresdk_MagDevice_SetAutoEnlargePara +00000000001826b0 00000000001826d7 Java_cn_com_magnity_coresdk_MagDevice_SetIsothermalPara +00000000001826d8 000000000018270b Java_cn_com_magnity_coresdk_MagDevice_SetImageTransform +000000000018270c 0000000000182737 Java_cn_com_magnity_coresdk_MagDevice_SetEXLevel +0000000000182738 0000000000182757 Java_cn_com_magnity_coresdk_MagDevice_GetEXLevel +0000000000182758 000000000018277f Java_cn_com_magnity_coresdk_MagDevice_SetDetailEnhancement +0000000000182780 0000000000182ad3 Java_cn_com_magnity_coresdk_MagDevice_GetFixPara +0000000000182ad4 0000000000182c5b Java_cn_com_magnity_coresdk_MagDevice_SetFixPara +0000000000182c5c 0000000000182e03 Java_cn_com_magnity_coresdk_MagDevice_GetOutputRGBAData +0000000000182e04 0000000000182f1f Java_cn_com_magnity_coresdk_MagDevice_GetOutputGrayData +0000000000182f20 000000000018305f Java_cn_com_magnity_coresdk_MagDevice_GetOutputYUVData +0000000000183060 0000000000183207 Java_cn_com_magnity_coresdk_MagDevice_GetOutputColorBarRGBAData +0000000000183208 000000000018336f Java_cn_com_magnity_coresdk_MagDevice_GetOutputImage +0000000000183370 00000000001837cf Java_cn_com_magnity_coresdk_MagDevice_GetOutputImage2 +00000000001837d0 0000000000183937 Java_cn_com_magnity_coresdk_MagDevice_GetOutputColorBarImage +0000000000183938 0000000000183b3b Java_cn_com_magnity_coresdk_MagDevice_GetFrameStatisticalData +0000000000183b3c 0000000000183cc7 Java_cn_com_magnity_coresdk_MagDevice_GetRemoteInfo +0000000000183cc8 0000000000183cf7 Java_cn_com_magnity_coresdk_MagDevice_FixTemperature__IIFII +0000000000183cf8 0000000000183d23 Java_cn_com_magnity_coresdk_MagDevice_FixTemperature__IIFI +0000000000183d24 0000000000183e77 Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureData +0000000000183e78 0000000000183ea7 Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureProbe__IIII +0000000000183ea8 0000000000183ed3 Java_cn_com_magnity_coresdk_MagDevice_GetTemperatureProbe__III +0000000000183ed4 000000000018400b Java_cn_com_magnity_coresdk_MagDevice_GetLineTemperatureInfo +000000000018400c 000000000018412f Java_cn_com_magnity_coresdk_MagDevice_GetRectTemperatureInfo +0000000000184130 0000000000184253 Java_cn_com_magnity_coresdk_MagDevice_GetEllipseTemperatureInfo +0000000000184254 00000000001843af Java_cn_com_magnity_coresdk_MagDevice_GetRgnTemperatureInfo +00000000001843b0 000000000018444f Java_cn_com_magnity_coresdk_MagDevice_SaveBMP +0000000000184450 00000000001844e3 Java_cn_com_magnity_coresdk_MagDevice_SaveDDT +00000000001844e4 00000000001845d3 Java_cn_com_magnity_coresdk_MagDevice_SaveDDT2Buffer +00000000001845d4 0000000000184edf Java_cn_com_magnity_coresdk_MagDevice_LoadBufferedDDT +0000000000184ef4 000000000018577b Java_cn_com_magnity_coresdk_MagDevice_LoadDDT +0000000000185790 0000000000185813 Java_cn_com_magnity_coresdk_MagDevice_UnloadDDT +0000000000185814 00000000001858f7 getMDTObject +00000000001858f8 000000000018632b Java_cn_com_magnity_coresdk_MagDevice_nativeSaveMDT +0000000000186340 0000000000186ff3 Java_cn_com_magnity_coresdk_MagDevice_nativeLoadMDT +0000000000187080 000000000018711f NewObject +0000000000187120 000000000018713f Java_cn_com_magnity_coresdk_MagDevice_Lock +0000000000187140 000000000018715f Java_cn_com_magnity_coresdk_MagDevice_Unlock +0000000000187160 0000000000187187 Java_cn_com_magnity_coresdk_MagDevice_GetCurrentCameraInnerTemperature +0000000000187188 00000000001872c7 Java_cn_com_magnity_coresdk_MagDevice_nativeCopyBitmap +00000000001872c8 0000000000187513 Java_cn_com_magnity_coresdk_MagDevice_nativeBlendBitmap +0000000000187514 000000000018751b Java_cn_com_magnity_coresdk_MagDevice_StartStitching +000000000018751c 0000000000187523 Java_cn_com_magnity_coresdk_MagDevice_TriggerStitching +0000000000187524 0000000000187527 Java_cn_com_magnity_coresdk_MagDevice_StopStitching +0000000000187528 000000000018752f Java_cn_com_magnity_coresdk_MagDevice_isStitching +0000000000187530 00000000001876a7 Java_cn_com_magnity_coresdk_MagDevice_SetDetectParameter +00000000001876a8 0000000000187a07 Java_cn_com_magnity_coresdk_MagDevice_GetDetectSuggestedParameter +0000000000187a08 0000000000187acb Java_cn_com_magnity_coresdk_MagDevice_SetDetectMaskPoints +0000000000187acc 0000000000187cfb Java_cn_com_magnity_coresdk_MagDevice_FindDetectTarget +0000000000187cfc 0000000000187d2b Java_cn_com_magnity_coresdk_MagDevice_EstimateUnderArmTempFromForeheadRect +0000000000187d2c 0000000000187e97 toJString +0000000000187e98 000000000018809f toChars +00000000001880a0 000000000018813f CallObjectMethod +0000000000188140 00000000001881cb GetJint +00000000001881cc 0000000000188257 GetJbool +0000000000188258 00000000001882e3 GetJfloat +00000000001882e4 00000000001883c3 GetJstring +00000000001883c4 000000000018847f createJObject +0000000000188480 0000000000188597 createBitmap +0000000000188598 0000000000188637 CallStaticObjectMethod +0000000000188638 000000000018864f newGlobalObject +0000000000188650 0000000000188687 delGlobalObject +0000000000188688 0000000000188803 newBitmap +0000000000188804 00000000001888d7 GenerateQuickPalette +00000000001888d8 0000000000188afb GetYUV420 +0000000000188afc 0000000000188bef bufferToMat +0000000000188bf0 0000000000188ce3 matToBuffer +0000000000188ce4 0000000000188d8f matMaxMin +0000000000188d90 00000000001894bb edgeImage +000000000018982c 0000000000189997 ~MatExpr +00000000001899a4 000000000018a2f7 labelImage +000000000018a7b8 000000000018a7bb labelImageRect +000000000018a7bc 000000000018a7d7 ImageProc +000000000018a7d8 000000000018a7f3 setFilterPara +000000000018a7f4 000000000018b5cf findTarget +000000000018bb1c 000000000018bca3 raw8bitToMat +000000000018bcb8 000000000018c023 threshold_ +000000000018c038 000000000018c2cb resetMatMaskPoints +000000000018c2cc 000000000018c367 calcRectMinHorDistance +000000000018c368 000000000018c403 calcRectMinVerDistance +000000000018c404 000000000018c5a3 raw32bitToMat +000000000018c5b8 000000000018c637 putValue +000000000018c638 000000000018c72f calcImageProportion +000000000018c730 000000000018c733 showImage +000000000018c734 000000000018c75f _S_select>const,void> +000000000018c760 000000000018c857 _M_emplace_back_aux +000000000018c858 000000000018c89b MAG_SetDetectParameter +000000000018c89c 000000000018c99b MAG_GetDetectSuggestedParameter +000000000018c99c 000000000018c9eb MAG_SetDetectMaskPoints +000000000018c9ec 000000000018cb0b MAG_FindDetectTarget +000000000018cb0c 000000000018cc2b discovered_devs_append +000000000018cc2c 000000000018cc63 libusb_ref_device +000000000018cc64 000000000018ccf7 usbi_log +000000000018ccf8 000000000018cdb7 usbi_alloc_device +000000000018cdb8 000000000018ce2b libusb_has_capability +000000000018ce2c 000000000018cebb usbi_connect_device +000000000018cebc 000000000018cf53 usbi_disconnect_device +000000000018cf54 000000000018cfcf usbi_sanitize_device +000000000018cfd0 000000000018d063 usbi_get_device_by_session_id +000000000018d064 000000000018d2b7 libusb_get_device_list +000000000018d2b8 000000000018d303 libusb_free_device_list +000000000018d304 000000000018d3af libusb_unref_device +000000000018d3b0 000000000018d3b7 libusb_get_bus_number +000000000018d3b8 000000000018d3bf libusb_get_port_number +000000000018d3c0 000000000018d473 libusb_get_port_numbers +000000000018d474 000000000018d523 libusb_get_port_path +000000000018d524 000000000018d52b libusb_get_parent +000000000018d52c 000000000018d533 libusb_get_device_address +000000000018d534 000000000018d53b libusb_get_device_speed +000000000018d53c 000000000018d65f libusb_get_max_packet_size +000000000018d660 000000000018d7a7 libusb_get_max_iso_packet_size +000000000018d7a8 000000000018d833 usbi_signal_event +000000000018d834 000000000018d8b7 usbi_clear_event +000000000018d8b8 000000000018da1f libusb_wrap_fd +000000000018da20 000000000018db9b libusb_open +000000000018db9c 000000000018dc8b libusb_open_device_with_vid_pid +000000000018dc8c 000000000018de4b libusb_close +000000000018de4c 000000000018dfe7 FUN_0018de4c +000000000018dfe8 000000000018dfef libusb_get_device +000000000018dff0 000000000018e15f libusb_get_configuration +000000000018e160 000000000018e1b3 libusb_set_configuration +000000000018e1b4 000000000018e27f libusb_claim_interface +000000000018e280 000000000018e33f libusb_release_interface +000000000018e340 000000000018e40f libusb_set_interface_alt_setting +000000000018e410 000000000018e47f libusb_clear_halt +000000000018e480 000000000018e4e3 libusb_reset_device +000000000018e4e4 000000000018e57f libusb_alloc_streams +000000000018e580 000000000018e60f libusb_free_streams +000000000018e610 000000000018e637 libusb_dev_mem_alloc +000000000018e638 000000000018e653 libusb_dev_mem_free +000000000018e654 000000000018e6cf libusb_kernel_driver_active +000000000018e6d0 000000000018e74b libusb_detach_kernel_driver +000000000018e74c 000000000018e7c7 libusb_attach_kernel_driver +000000000018e7c8 000000000018e7ef libusb_set_auto_detach_kernel_driver +000000000018e7f0 000000000018e817 libusb_set_debug +000000000018e818 000000000018eb67 libusb_init +000000000018eb68 000000000018edcf libusb_exit +000000000018edd0 000000000018f0a3 usbi_log_v +000000000018f0a4 000000000018f1bb libusb_error_name +000000000018f1bc 000000000018f1c7 libusb_get_version +000000000018f1c8 000000000018f277 usbi_parse_descriptor +000000000018f278 000000000018f2db usbi_device_cache_descriptor +000000000018f2dc 000000000018f32b libusb_get_device_descriptor +000000000018f32c 000000000018f4fb libusb_get_active_config_descriptor +000000000018f4fc 000000000019038f FUN_0018f4fc +0000000000190390 00000000001905af libusb_get_config_descriptor +00000000001905b0 00000000001906a3 usbi_get_config_index_by_value +00000000001906a4 00000000001907df libusb_get_config_descriptor_by_value +00000000001907e0 0000000000190873 libusb_free_config_descriptor +0000000000190874 0000000000190a27 libusb_get_ss_endpoint_companion_descriptor +0000000000190a28 0000000000190a2b libusb_free_ss_endpoint_companion_descriptor +0000000000190a2c 000000000019109b libusb_get_bos_descriptor +000000000019109c 00000000001910ff libusb_free_bos_descriptor +0000000000191100 000000000019122f libusb_get_usb_2_0_extension_descriptor +0000000000191230 0000000000191233 libusb_free_usb_2_0_extension_descriptor +0000000000191234 0000000000191363 libusb_get_ss_usb_device_capability_descriptor +0000000000191364 0000000000191367 libusb_free_ss_usb_device_capability_descriptor +0000000000191368 0000000000191497 libusb_get_container_id_descriptor +0000000000191498 000000000019149b libusb_free_container_id_descriptor +000000000019149c 0000000000191603 libusb_get_string_descriptor_ascii +0000000000191604 00000000001916e3 FUN_00191604 +00000000001916e4 000000000019182f usbi_hotplug_match +0000000000191830 0000000000191937 usbi_hotplug_notification +0000000000191938 0000000000191bd7 libusb_hotplug_register_callback +0000000000191bd8 0000000000191c87 libusb_hotplug_deregister_callback +0000000000191c88 0000000000191d03 usbi_hotplug_deregister_all +0000000000191d04 0000000000191e2f usbi_io_init +0000000000191e30 0000000000191f53 usbi_add_pollfd +0000000000191f54 0000000000191fcb usbi_io_exit +0000000000191fcc 000000000019212b usbi_remove_pollfd +000000000019212c 00000000001921b3 libusb_alloc_transfer +00000000001921b4 0000000000192223 libusb_free_transfer +0000000000192224 000000000019255b libusb_submit_transfer +000000000019255c 0000000000192663 libusb_cancel_transfer +0000000000192664 000000000019266b libusb_transfer_set_stream_id +000000000019266c 0000000000192673 libusb_transfer_get_stream_id +0000000000192674 00000000001927e7 usbi_handle_transfer_completion +00000000001927e8 0000000000192867 usbi_handle_transfer_cancellation +0000000000192868 000000000019291f usbi_signal_transfer_completion +0000000000192920 00000000001929af libusb_try_lock_events +00000000001929b0 00000000001929eb libusb_lock_events +00000000001929ec 0000000000192a3b libusb_unlock_events +0000000000192a3c 0000000000192aab libusb_event_handling_ok +0000000000192aac 0000000000192b23 libusb_event_handler_active +0000000000192b24 0000000000192bbb libusb_interrupt_event_handler +0000000000192bbc 0000000000192bd7 libusb_lock_event_waiters +0000000000192bd8 0000000000192bf3 libusb_unlock_event_waiters +0000000000192bf4 0000000000192c4b libusb_wait_for_event +0000000000192c4c 0000000000192f0b libusb_handle_events_timeout_completed +0000000000192f0c 00000000001930ab FUN_00192f0c +00000000001930ac 00000000001935bf FUN_001930ac +00000000001935c0 00000000001935c7 libusb_handle_events_timeout +00000000001935c8 000000000019361f libusb_handle_events +0000000000193620 000000000019367b libusb_handle_events_completed +000000000019367c 000000000019373f libusb_handle_events_locked +0000000000193740 0000000000193747 libusb_pollfds_handle_timeouts +0000000000193748 0000000000193943 libusb_get_next_timeout +0000000000193944 0000000000193963 libusb_set_pollfd_notifiers +0000000000193964 00000000001939f7 libusb_get_pollfds +00000000001939f8 0000000000193a03 libusb_free_pollfds +0000000000193a04 0000000000193b67 usbi_handle_disconnect +0000000000193b68 0000000000193db3 libusb_control_transfer +0000000000193db4 0000000000193ddf FUN_00193db4 +0000000000193de0 0000000000193de7 libusb_bulk_transfer +0000000000193de8 0000000000193f93 FUN_00193de8 +0000000000193f94 0000000000193f9b libusb_interrupt_transfer +0000000000193f9c 000000000019419b linux_get_device_address +000000000019419c 000000000019430b FUN_0019419c +000000000019430c 000000000019465b linux_enumerate_device +000000000019465c 0000000000194a47 FUN_0019465c +0000000000194a48 0000000000194acb linux_hotplug_enumerate +0000000000194acc 0000000000194b8f linux_device_disconnected +0000000000194b90 00000000001951e7 FUN_00194b90 +00000000001951e8 0000000000195223 FUN_001951e8 +0000000000195224 0000000000195227 FUN_00195224 +0000000000195228 000000000019538f FUN_00195228 +0000000000195390 0000000000195447 FUN_00195390 +0000000000195448 000000000019549b FUN_00195448 +000000000019549c 00000000001954db FUN_0019549c +00000000001954dc 00000000001955f3 FUN_001954dc +00000000001955f4 00000000001956af FUN_001955f4 +00000000001956b0 000000000019572b FUN_001956b0 +000000000019572c 00000000001957db FUN_0019572c +00000000001957dc 00000000001958b7 FUN_001957dc +00000000001958b8 0000000000195997 FUN_001958b8 +0000000000195998 0000000000195acf FUN_00195998 +0000000000195ad0 0000000000195b8b FUN_00195ad0 +0000000000195b8c 0000000000195c4b FUN_00195b8c +0000000000195c4c 0000000000195e1b FUN_00195c4c +0000000000195e1c 0000000000195e3f FUN_00195e1c +0000000000195e40 0000000000195e5f FUN_00195e40 +0000000000195e60 0000000000195ecb FUN_00195e60 +0000000000195ecc 0000000000195f27 FUN_00195ecc +0000000000195f28 000000000019600b FUN_00195f28 +000000000019600c 000000000019611f FUN_0019600c +0000000000196120 000000000019621b FUN_00196120 +000000000019621c 0000000000196257 FUN_0019621c +0000000000196258 00000000001967bf FUN_00196258 +00000000001967c0 0000000000196843 FUN_001967c0 +0000000000196844 0000000000196913 FUN_00196844 +0000000000196914 0000000000196ac7 FUN_00196914 +0000000000196ac8 0000000000196aef FUN_00196ac8 +0000000000196af0 0000000000196c87 FUN_00196af0 +0000000000196c88 0000000000196d7f FUN_00196c88 +0000000000196d80 0000000000196e47 FUN_00196d80 +0000000000196e48 0000000000197047 FUN_00196e48 +0000000000197048 000000000019727f FUN_00197048 +0000000000197280 00000000001973ff FUN_00197280 +0000000000197400 0000000000197503 FUN_00197400 +0000000000197504 00000000001978af FUN_00197504 +00000000001978b0 0000000000197a03 FUN_001978b0 +0000000000197a04 0000000000198407 FUN_00197a04 +0000000000198408 00000000001984c3 usbi_pipe +00000000001984c4 00000000001985bb usbi_cond_timedwait +00000000001985bc 00000000001985bf usbi_get_tid +00000000001985c0 000000000019863f release +0000000000198640 000000000019a1df Canny +000000000019a210 000000000019a4eb cvCanny +000000000019a54c 000000000019a54f FUN_0019a54c +000000000019a550 000000000019a5e3 FUN_0019a550 +000000000019a5e4 000000000019aafb FUN_0019a5e4 +000000000019aafc 000000000019aeef FUN_0019aafc +000000000019aef0 000000000019af23 FUN_0019aef0 +000000000019af24 000000000019af27 operator.delete +000000000019af28 000000000019b04f cvStartReadChainPoints +000000000019b078 000000000019b15b cvReadChainPoint +000000000019b170 000000000019b8d7 cvStartFindContours +000000000019b928 000000000019b9b7 cvSubstituteContour +000000000019b9cc 000000000019cd23 cvFindNextContour +000000000019cd38 000000000019ce57 cvEndFindContours +000000000019ce6c 000000000019dbcf cvFindContours +000000000019dbe0 000000000019e727 findContours +000000000019e728 000000000019e78b findContours +000000000019e790 000000000019ed67 FUN_0019e790 +000000000019ee10 000000000019f7e3 FUN_0019ee10 +000000000019f7e4 000000000019f7ff getDerivKernels +000000000019f800 000000000019fa6f FUN_0019f800 +000000000019fad0 000000000019fe3b Sobel +000000000019fe8c 00000000001a01ef Scharr +00000000001a0240 00000000001a0ff7 Laplacian +00000000001a11e0 00000000001a14d3 cvSobel +00000000001a1534 00000000001a17ab cvLaplace +00000000001a1810 00000000001a1837 FUN_001a1810 +00000000001a1838 00000000001a334f FUN_001a1838 +00000000001a3350 00000000001a3543 FUN_001a3350 +00000000001a3544 00000000001a36ef FUN_001a3544 +00000000001a36f0 00000000001a3963 FUN_001a36f0 +00000000001a398c 00000000001a3bb7 clipLine +00000000001a3bb8 00000000001a4adf FUN_001a3bb8 +00000000001a4ae0 00000000001a4b8f clipLine +00000000001a4b90 00000000001a4e77 LineIterator +00000000001a4e8c 00000000001a508f FUN_001a4e8c +00000000001a5090 00000000001a63a3 FUN_001a5090 +00000000001a63a4 00000000001a6deb FUN_001a63a4 +00000000001a6dec 00000000001a7467 FUN_001a6dec +00000000001a7468 00000000001a797f ellipse2Poly +00000000001a7980 00000000001a7aab fillConvexPoly +00000000001a7ac0 00000000001a7e5f getTextSize +00000000001a7e74 00000000001a8233 fillConvexPoly +00000000001a8298 00000000001a8347 cvClipLine +00000000001a835c 00000000001a83e3 cvEllipse2Poly +00000000001a8400 00000000001a8573 cvColorToScalar +00000000001a8588 00000000001a873f cvInitLineIterator +00000000001a877c 00000000001a889b cvFillConvexPoly +00000000001a88c4 00000000001a8b1b cvInitFont +00000000001a8b44 00000000001a8c77 cvGetTextSize +00000000001a8ca0 00000000001a8e0b FUN_001a8ca0 +00000000001a8e0c 00000000001a9193 FUN_001a8e0c +00000000001a9194 00000000001a95a3 FUN_001a9194 +00000000001a95a4 00000000001a9f3f FUN_001a95a4 +00000000001a9f40 00000000001aaaef FUN_001a9f40 +00000000001aaaf0 00000000001ab5c3 FUN_001aaaf0 +00000000001ab5d8 00000000001ab907 line +00000000001ab950 00000000001abb53 arrowedLine +00000000001abb60 00000000001abcb3 cvLine +00000000001abcdc 00000000001abff3 polylines +00000000001ac01c 00000000001ac763 polylines +00000000001ac764 00000000001ac8a7 cvPolyLine +00000000001ac8d0 00000000001acd03 rectangle +00000000001acd64 00000000001ace9f rectangle +00000000001aceb4 00000000001acfeb cvRectangleR +00000000001ad014 00000000001ad167 cvRectangle +00000000001ad190 00000000001ad9df putText +00000000001ad9e8 00000000001adc4f cvPutText +00000000001adc98 00000000001afc7f circle +00000000001afcbc 00000000001afe03 cvCircle +00000000001afe2c 00000000001b012b ellipse +00000000001b0164 00000000001b02cf cvEllipse +00000000001b02f8 00000000001b0613 ellipse +00000000001b0658 00000000001b10c3 FUN_001b0658 +00000000001b10d8 00000000001b142b fillPoly +00000000001b145c 00000000001b1987 fillPoly +00000000001b19e0 00000000001b1b13 cvFillPoly +00000000001b1b40 00000000001b2fc7 cvDrawContours +00000000001b2fd8 00000000001b3383 FUN_001b2fd8 +00000000001b3384 00000000001b3663 FUN_001b3384 +00000000001b3664 00000000001b41b7 drawContours +00000000001b4284 00000000001b4287 FUN_001b4284 +00000000001b4288 00000000001b428b FUN_001b4288 +00000000001b428c 00000000001b428f FUN_001b428c +00000000001b4290 00000000001b4293 FUN_001b4290 +00000000001b4294 00000000001b4297 FUN_001b4294 +00000000001b4298 00000000001b429b FUN_001b4298 +00000000001b429c 00000000001b429f FUN_001b429c +00000000001b42a0 00000000001b42a3 FUN_001b42a0 +00000000001b42a4 00000000001b42a7 FUN_001b42a4 +00000000001b42a8 00000000001b42ab FUN_001b42a8 +00000000001b42ac 00000000001b42af FUN_001b42ac +00000000001b42b0 00000000001b42b3 FUN_001b42b0 +00000000001b42b4 00000000001b42b7 FUN_001b42b4 +00000000001b42b8 00000000001b42bb FUN_001b42b8 +00000000001b42bc 00000000001b42bf FUN_001b42bc +00000000001b42c0 00000000001b42c3 FUN_001b42c0 +00000000001b42c4 00000000001b42c7 FUN_001b42c4 +00000000001b42c8 00000000001b42cb FUN_001b42c8 +00000000001b42cc 00000000001b42cf FUN_001b42cc +00000000001b42d0 00000000001b42d3 FUN_001b42d0 +00000000001b42d4 00000000001b42d7 FUN_001b42d4 +00000000001b42d8 00000000001b42db FUN_001b42d8 +00000000001b42dc 00000000001b42df FUN_001b42dc +00000000001b42e0 00000000001b42e3 FUN_001b42e0 +00000000001b42e4 00000000001b42e7 FUN_001b42e4 +00000000001b42e8 00000000001b42eb FUN_001b42e8 +00000000001b42ec 00000000001b42ef FUN_001b42ec +00000000001b42f0 00000000001b42f3 FUN_001b42f0 +00000000001b42f4 00000000001b42f7 FUN_001b42f4 +00000000001b42f8 00000000001b42fb FUN_001b42f8 +00000000001b42fc 00000000001b42ff FUN_001b42fc +00000000001b4300 00000000001b4303 FUN_001b4300 +00000000001b4304 00000000001b4307 FUN_001b4304 +00000000001b4308 00000000001b430b FUN_001b4308 +00000000001b430c 00000000001b430f FUN_001b430c +00000000001b4310 00000000001b4313 FUN_001b4310 +00000000001b4314 00000000001b4317 FUN_001b4314 +00000000001b4318 00000000001b431b FUN_001b4318 +00000000001b431c 00000000001b431f FUN_001b431c +00000000001b4320 00000000001b4323 FUN_001b4320 +00000000001b4324 00000000001b4327 FUN_001b4324 +00000000001b4328 00000000001b432b FUN_001b4328 +00000000001b432c 00000000001b432f FUN_001b432c +00000000001b4330 00000000001b4333 FUN_001b4330 +00000000001b4334 00000000001b4337 FUN_001b4334 +00000000001b4338 00000000001b433b FUN_001b4338 +00000000001b433c 00000000001b433f FUN_001b433c +00000000001b4340 00000000001b4343 FUN_001b4340 +00000000001b4344 00000000001b4347 FUN_001b4344 +00000000001b4348 00000000001b434b FUN_001b4348 +00000000001b434c 00000000001b4387 FUN_001b434c +00000000001b4388 00000000001b43c3 FUN_001b4388 +00000000001b43c4 00000000001b43ff FUN_001b43c4 +00000000001b4400 00000000001b443b FUN_001b4400 +00000000001b443c 00000000001b4477 FUN_001b443c +00000000001b4478 00000000001b44b3 FUN_001b4478 +00000000001b44b4 00000000001b44ef FUN_001b44b4 +00000000001b44f0 00000000001b452b FUN_001b44f0 +00000000001b452c 00000000001b4567 FUN_001b452c +00000000001b4568 00000000001b45a3 FUN_001b4568 +00000000001b45a4 00000000001b45df FUN_001b45a4 +00000000001b45e0 00000000001b461b FUN_001b45e0 +00000000001b461c 00000000001b4657 FUN_001b461c +00000000001b4658 00000000001b4693 FUN_001b4658 +00000000001b4694 00000000001b46cf FUN_001b4694 +00000000001b46d0 00000000001b470b FUN_001b46d0 +00000000001b470c 00000000001b4747 FUN_001b470c +00000000001b4748 00000000001b4783 FUN_001b4748 +00000000001b4784 00000000001b47bf FUN_001b4784 +00000000001b47c0 00000000001b47fb FUN_001b47c0 +00000000001b47fc 00000000001b4837 FUN_001b47fc +00000000001b4838 00000000001b4873 FUN_001b4838 +00000000001b4874 00000000001b48af FUN_001b4874 +00000000001b48b0 00000000001b48eb FUN_001b48b0 +00000000001b48ec 00000000001b4927 FUN_001b48ec +00000000001b4928 00000000001b4963 FUN_001b4928 +00000000001b4964 00000000001b499f FUN_001b4964 +00000000001b49a0 00000000001b49db FUN_001b49a0 +00000000001b49dc 00000000001b4a17 FUN_001b49dc +00000000001b4a18 00000000001b4a53 FUN_001b4a18 +00000000001b4a54 00000000001b4a8f FUN_001b4a54 +00000000001b4a90 00000000001b4acb FUN_001b4a90 +00000000001b4acc 00000000001b4b07 FUN_001b4acc +00000000001b4b08 00000000001b4b43 FUN_001b4b08 +00000000001b4b44 00000000001b4b7f FUN_001b4b44 +00000000001b4b80 00000000001b4bbb FUN_001b4b80 +00000000001b4bbc 00000000001b4bf7 FUN_001b4bbc +00000000001b4bf8 00000000001b4c33 FUN_001b4bf8 +00000000001b4c34 00000000001b4c6f FUN_001b4c34 +00000000001b4c70 00000000001b4cab FUN_001b4c70 +00000000001b4cac 00000000001b4ce7 FUN_001b4cac +00000000001b4ce8 00000000001b4d23 FUN_001b4ce8 +00000000001b4d24 00000000001b4d5f FUN_001b4d24 +00000000001b4d60 00000000001b4d9b FUN_001b4d60 +00000000001b4d9c 00000000001b4dd7 FUN_001b4d9c +00000000001b4dd8 00000000001b4e13 FUN_001b4dd8 +00000000001b4e14 00000000001b4e4f FUN_001b4e14 +00000000001b4e50 00000000001b501f FUN_001b4e50 +00000000001b5020 00000000001b51d3 FUN_001b5020 +00000000001b51d4 00000000001b53cb FUN_001b51d4 +00000000001b53cc 00000000001b55a7 FUN_001b53cc +00000000001b55a8 00000000001b579f FUN_001b55a8 +00000000001b57a0 00000000001b597b FUN_001b57a0 +00000000001b597c 00000000001b5b57 FUN_001b597c +00000000001b5b58 00000000001b5d17 FUN_001b5b58 +00000000001b5d18 00000000001b6137 FUN_001b5d18 +00000000001b6138 00000000001b652b FUN_001b6138 +00000000001b652c 00000000001b6ab3 FUN_001b652c +00000000001b6ab4 00000000001b6cfb FUN_001b6ab4 +00000000001b6cfc 00000000001b806f FUN_001b6cfc +00000000001b8070 00000000001b8463 FUN_001b8070 +00000000001b8464 00000000001b85f3 FUN_001b8464 +00000000001b85f4 00000000001b87b3 FUN_001b85f4 +00000000001b87b4 00000000001b8943 FUN_001b87b4 +00000000001b8944 00000000001b8b87 FUN_001b8944 +00000000001b8b88 00000000001b8d0b FUN_001b8b88 +00000000001b8d0c 00000000001b8eaf FUN_001b8d0c +00000000001b8eb0 00000000001b901b FUN_001b8eb0 +00000000001b901c 00000000001b91c7 FUN_001b901c +00000000001b91c8 00000000001b935f FUN_001b91c8 +00000000001b9360 00000000001b950b FUN_001b9360 +00000000001b950c 00000000001b96a3 FUN_001b950c +00000000001b96a4 00000000001b985b FUN_001b96a4 +00000000001b985c 00000000001b99ff FUN_001b985c +00000000001b9a00 00000000001bb28b FUN_001b9a00 +00000000001bb28c 00000000001bb28f operator.delete +00000000001bb290 00000000001bb293 operator.delete +00000000001bb294 00000000001bb297 operator.delete +00000000001bb298 00000000001bb29b operator.delete +00000000001bb29c 00000000001bb29f operator.delete +00000000001bb2a0 00000000001bb2a3 operator.delete +00000000001bb2a4 00000000001bb2a7 operator.delete +00000000001bb2a8 00000000001bb2ab operator.delete +00000000001bb2ac 00000000001bb2af operator.delete +00000000001bb2b0 00000000001bb2b3 operator.delete +00000000001bb2b4 00000000001bb2b7 operator.delete +00000000001bb2b8 00000000001bb2bb operator.delete +00000000001bb2bc 00000000001bb2bf operator.delete +00000000001bb2c0 00000000001bb2c3 operator.delete +00000000001bb2c4 00000000001bb2c7 operator.delete +00000000001bb2c8 00000000001bb2cb operator.delete +00000000001bb2cc 00000000001bb2cf operator.delete +00000000001bb2d0 00000000001bb2d3 operator.delete +00000000001bb2d4 00000000001bb2d7 operator.delete +00000000001bb2d8 00000000001bb2db operator.delete +00000000001bb2dc 00000000001bb2df operator.delete +00000000001bb2e0 00000000001bb2e3 operator.delete +00000000001bb2e4 00000000001bb2e7 operator.delete +00000000001bb2e8 00000000001bb2eb operator.delete +00000000001bb2ec 00000000001bb2ef operator.delete +00000000001bb2f0 00000000001bb2f3 operator.delete +00000000001bb2f4 00000000001bb2f7 operator.delete +00000000001bb2f8 00000000001bb2fb operator.delete +00000000001bb2fc 00000000001bb2ff operator.delete +00000000001bb300 00000000001bb303 operator.delete +00000000001bb304 00000000001bb307 operator.delete +00000000001bb308 00000000001bb30b operator.delete +00000000001bb30c 00000000001bb30f operator.delete +00000000001bb310 00000000001bb313 operator.delete +00000000001bb314 00000000001bb317 operator.delete +00000000001bb318 00000000001bb31b operator.delete +00000000001bb31c 00000000001bb31f operator.delete +00000000001bb320 00000000001bb323 operator.delete +00000000001bb324 00000000001bb327 operator.delete +00000000001bb328 00000000001bb32b operator.delete +00000000001bb32c 00000000001bb32f operator.delete +00000000001bb330 00000000001bb333 operator.delete +00000000001bb334 00000000001bb337 operator.delete +00000000001bb338 00000000001bb33b operator.delete +00000000001bb33c 00000000001bb33f operator.delete +00000000001bb340 00000000001bb343 operator.delete +00000000001bb344 00000000001bb347 operator.delete +00000000001bb348 00000000001bb34b operator.delete +00000000001bb34c 00000000001bb39b FUN_001bb34c +00000000001bb39c 00000000001bb3eb FUN_001bb39c +00000000001bb3ec 00000000001bb43b FUN_001bb3ec +00000000001bb43c 00000000001bb48b FUN_001bb43c +00000000001bb48c 00000000001bb4db FUN_001bb48c +00000000001bb4dc 00000000001bb52b FUN_001bb4dc +00000000001bb52c 00000000001bb57b FUN_001bb52c +00000000001bb57c 00000000001bb5cb FUN_001bb57c +00000000001bb5cc 00000000001bb61b FUN_001bb5cc +00000000001bb61c 00000000001bb66b FUN_001bb61c +00000000001bb66c 00000000001bb6bb FUN_001bb66c +00000000001bb6bc 00000000001bb70b FUN_001bb6bc +00000000001bb70c 00000000001bb75b FUN_001bb70c +00000000001bb75c 00000000001bba87 FUN_001bb75c +00000000001bba88 00000000001bbd8b FUN_001bba88 +00000000001bbd8c 00000000001bc077 FUN_001bbd8c +00000000001bc078 00000000001bc347 FUN_001bc078 +00000000001bc348 00000000001bc613 FUN_001bc348 +00000000001bc614 00000000001bcbc7 FUN_001bc614 +00000000001bcbc8 00000000001bce63 FUN_001bcbc8 +00000000001bce64 00000000001bd3f7 FUN_001bce64 +00000000001bd3f8 00000000001bd687 FUN_001bd3f8 +00000000001bd688 00000000001bd957 FUN_001bd688 +00000000001bd958 00000000001bdf6f FUN_001bd958 +00000000001bdf70 00000000001be25b FUN_001bdf70 +00000000001be25c 00000000001be803 FUN_001be25c +00000000001be804 00000000001beac3 FUN_001be804 +00000000001beac4 00000000001bf047 FUN_001beac4 +00000000001bf048 00000000001bf2f3 FUN_001bf048 +00000000001bf2f4 00000000001bf593 FUN_001bf2f4 +00000000001bf5bc 00000000001bfde7 FUN_001bf5bc +00000000001bfe38 00000000001bfffb FUN_001bfe38 +00000000001c0010 00000000001c002f FUN_001c0010 +00000000001c0030 00000000001c0293 FUN_001c0030 +00000000001c0294 00000000001c0997 FUN_001c0294 +00000000001c0998 00000000001c0cab FUN_001c0998 +00000000001c0cac 00000000001c0f5f FUN_001c0cac +00000000001c0f60 00000000001c196f FUN_001c0f60 +00000000001c1970 00000000001c1fc3 FUN_001c1970 +00000000001c1fc4 00000000001c228f FUN_001c1fc4 +00000000001c2290 00000000001c245f FUN_001c2290 +00000000001c2460 00000000001c4a87 FUN_001c2460 +00000000001c4a88 00000000001c4c5f FUN_001c4a88 +00000000001c4c60 00000000001c4f77 FUN_001c4c60 +00000000001c4f78 00000000001c5987 FUN_001c4f78 +00000000001c5988 00000000001c601b FUN_001c5988 +00000000001c601c 00000000001c62e7 FUN_001c601c +00000000001c62e8 00000000001c6333 FUN_001c62e8 +00000000001c6334 00000000001c637f FUN_001c6334 +00000000001c6380 00000000001c63cb FUN_001c6380 +00000000001c63cc 00000000001c6417 FUN_001c63cc +00000000001c6418 00000000001c6463 FUN_001c6418 +00000000001c6464 00000000001c64af FUN_001c6464 +00000000001c64b0 00000000001c64fb FUN_001c64b0 +00000000001c64fc 00000000001c6547 FUN_001c64fc +00000000001c6548 00000000001c6593 FUN_001c6548 +00000000001c6594 00000000001c65df FUN_001c6594 +00000000001c65e0 00000000001c662b FUN_001c65e0 +00000000001c662c 00000000001c6677 FUN_001c662c +00000000001c6678 00000000001c66c3 FUN_001c6678 +00000000001c66c4 00000000001c6837 FUN_001c66c4 +00000000001c6838 00000000001c6953 FUN_001c6838 +00000000001c6a0c 00000000001c6a2b FUN_001c6a0c +00000000001c6a2c 00000000001c6aaf FUN_001c6a2c +00000000001c6ab0 00000000001c6b8f operator= +00000000001c6b90 00000000001c6bdb FUN_001c6b90 +00000000001c6bdc 00000000001c6c2b FUN_001c6bdc +00000000001c6c2c 00000000001c6c77 FUN_001c6c2c +00000000001c6c78 00000000001c6cc7 FUN_001c6c78 +00000000001c6cc8 00000000001c6d13 FUN_001c6cc8 +00000000001c6d14 00000000001c6d63 FUN_001c6d14 +00000000001c6d64 00000000001c6daf FUN_001c6d64 +00000000001c6db0 00000000001c6dff FUN_001c6db0 +00000000001c6e00 00000000001c6e4b FUN_001c6e00 +00000000001c6e4c 00000000001c6e9b FUN_001c6e4c +00000000001c6e9c 00000000001c6ee7 FUN_001c6e9c +00000000001c6ee8 00000000001c6f37 FUN_001c6ee8 +00000000001c6f38 00000000001c6f83 FUN_001c6f38 +00000000001c6f84 00000000001c6fd3 FUN_001c6f84 +00000000001c6fd4 00000000001c701f FUN_001c6fd4 +00000000001c7020 00000000001c706f FUN_001c7020 +00000000001c7070 00000000001c70bb FUN_001c7070 +00000000001c70bc 00000000001c710b FUN_001c70bc +00000000001c710c 00000000001c7157 FUN_001c710c +00000000001c7158 00000000001c71a7 FUN_001c7158 +00000000001c71a8 00000000001c71f3 FUN_001c71a8 +00000000001c71f4 00000000001c7243 FUN_001c71f4 +00000000001c7244 00000000001c728f FUN_001c7244 +00000000001c7290 00000000001c72df FUN_001c7290 +00000000001c72e0 00000000001c732b FUN_001c72e0 +00000000001c732c 00000000001c737b FUN_001c732c +00000000001c737c 00000000001c73c7 FUN_001c737c +00000000001c73c8 00000000001c7417 FUN_001c73c8 +00000000001c7418 00000000001c7463 FUN_001c7418 +00000000001c7464 00000000001c74b3 FUN_001c7464 +00000000001c74b4 00000000001c74ff FUN_001c74b4 +00000000001c7500 00000000001c754f FUN_001c7500 +00000000001c7550 00000000001c759b FUN_001c7550 +00000000001c759c 00000000001c75eb FUN_001c759c +00000000001c75ec 00000000001c7637 FUN_001c75ec +00000000001c7638 00000000001c7687 FUN_001c7638 +00000000001c7688 00000000001c76d3 FUN_001c7688 +00000000001c76d4 00000000001c7723 FUN_001c76d4 +00000000001c7724 00000000001c776f FUN_001c7724 +00000000001c7770 00000000001c77bf FUN_001c7770 +00000000001c77c0 00000000001c780b FUN_001c77c0 +00000000001c780c 00000000001c785b FUN_001c780c +00000000001c785c 00000000001c78a7 FUN_001c785c +00000000001c78a8 00000000001c78f7 FUN_001c78a8 +00000000001c78f8 00000000001c7943 FUN_001c78f8 +00000000001c7944 00000000001c7993 FUN_001c7944 +00000000001c7994 00000000001c79df FUN_001c7994 +00000000001c79e0 00000000001c7a2f FUN_001c79e0 +00000000001c7a30 00000000001c7a7b FUN_001c7a30 +00000000001c7a7c 00000000001c7acb FUN_001c7a7c +00000000001c7acc 00000000001c7b17 FUN_001c7acc +00000000001c7b18 00000000001c7b67 FUN_001c7b18 +00000000001c7b68 00000000001c7bb3 FUN_001c7b68 +00000000001c7bb4 00000000001c7c03 FUN_001c7bb4 +00000000001c7c04 00000000001c7c4f FUN_001c7c04 +00000000001c7c50 00000000001c7c9f FUN_001c7c50 +00000000001c7ca0 00000000001c7ceb FUN_001c7ca0 +00000000001c7cec 00000000001c7d3b FUN_001c7cec +00000000001c7d3c 00000000001c7d87 FUN_001c7d3c +00000000001c7d88 00000000001c7dd7 FUN_001c7d88 +00000000001c7dd8 00000000001c7e23 FUN_001c7dd8 +00000000001c7e24 00000000001c7e73 FUN_001c7e24 +00000000001c7e74 00000000001c7edf FUN_001c7e74 +00000000001c7f0c 00000000001c7f77 FUN_001c7f0c +00000000001c7fa4 00000000001c800f FUN_001c7fa4 +00000000001c803c 00000000001c80a7 FUN_001c803c +00000000001c80d4 00000000001c813f FUN_001c80d4 +00000000001c816c 00000000001c81d7 FUN_001c816c +00000000001c8204 00000000001c826f FUN_001c8204 +00000000001c829c 00000000001c8307 FUN_001c829c +00000000001c8334 00000000001c83a3 FUN_001c8334 +00000000001c83d0 00000000001c843f FUN_001c83d0 +00000000001c846c 00000000001c84db FUN_001c846c +00000000001c8508 00000000001c8577 FUN_001c8508 +00000000001c85a4 00000000001c8613 FUN_001c85a4 +00000000001c8640 00000000001c86af FUN_001c8640 +00000000001c86dc 00000000001c8747 FUN_001c86dc +00000000001c8774 00000000001c87df FUN_001c8774 +00000000001c880c 00000000001c8877 FUN_001c880c +00000000001c88a4 00000000001c890f FUN_001c88a4 +00000000001c893c 00000000001c89ab FUN_001c893c +00000000001c89d8 00000000001c8a47 FUN_001c89d8 +00000000001c8a74 00000000001c8ae3 FUN_001c8a74 +00000000001c8b10 00000000001c8b7f FUN_001c8b10 +00000000001c8bac 00000000001c8c1b FUN_001c8bac +00000000001c8c48 00000000001c8cb7 FUN_001c8c48 +00000000001c8ce4 00000000001c8cff FUN_001c8ce4 +00000000001c8d00 00000000001c8d03 FUN_001c8d00 +00000000001c8d04 00000000001c8d07 operator.delete +00000000001c8d08 00000000001c8d23 FUN_001c8d08 +00000000001c8d24 00000000001c8d27 FUN_001c8d24 +00000000001c8d28 00000000001c8d2b operator.delete +00000000001c8d2c 00000000001c8d43 FUN_001c8d2c +00000000001c8d44 00000000001c8d47 FUN_001c8d44 +00000000001c8d48 00000000001c8d4b operator.delete +00000000001c8d4c 00000000001c8e1f FUN_001c8d4c +00000000001c8e20 00000000001c8e37 FUN_001c8e20 +00000000001c8e38 00000000001c8e47 FUN_001c8e38 +00000000001c8e50 00000000001c919f FUN_001c8e50 +00000000001c9220 00000000001c96db FUN_001c9220 +00000000001c9700 00000000001cceb3 FUN_001c9700 +00000000001cceb4 00000000001ce803 FUN_001cceb4 +00000000001ce804 00000000001ceabb FUN_001ce804 +00000000001ceb38 00000000001cecd7 FUN_001ceb38 +00000000001ced14 00000000001ceeb3 FUN_001ced14 +00000000001ceef0 00000000001cf08f FUN_001ceef0 +00000000001cf0cc 00000000001cf26b FUN_001cf0cc +00000000001cf2b0 00000000001d060b FUN_001cf2b0 +00000000001d08a0 00000000001d0a4f FUN_001d08a0 +00000000001d0a8c 00000000001d0c47 FUN_001d0a8c +00000000001d0c84 00000000001d0fbf FUN_001d0c84 +00000000001d1068 00000000001d1327 FUN_001d1068 +00000000001d13dc 00000000001d1633 FUN_001d13dc +00000000001d16ac 00000000001d18f7 FUN_001d16ac +00000000001d1970 00000000001d1bbb FUN_001d1970 +00000000001d1c34 00000000001d1e8b FUN_001d1c34 +00000000001d1f04 00000000001d214f FUN_001d1f04 +00000000001d21c8 00000000001d251b FUN_001d21c8 +00000000001d258c 00000000001d4813 FUN_001d258c +00000000001d4d10 00000000001d535f _M_fill_insert +00000000001d5360 00000000001d554b _M_fill_insert +00000000001d554c 00000000001d5a53 FUN_001d554c +00000000001d5aa4 00000000001d5b6f FUN_001d5aa4 +00000000001d5c50 00000000001d6427 FUN_001d5c50 +00000000001d65a0 00000000001d6b4f sepFilter2D +00000000001d6c20 00000000001d771b FUN_001d6c20 +00000000001d7740 00000000001d7cfb _M_fill_insert +00000000001d7cfc 00000000001d7f9f FUN_001d7cfc +00000000001d7fb4 00000000001d827b FUN_001d7fb4 +00000000001d82c4 00000000001d858b FUN_001d82c4 +00000000001d85d4 00000000001d889f FUN_001d85d4 +00000000001d88e8 00000000001d8bb3 FUN_001d88e8 +00000000001d8bfc 00000000001d8ec3 FUN_001d8bfc +00000000001d8f0c 00000000001d91d7 FUN_001d8f0c +00000000001d9220 00000000001da463 FUN_001d9220 +00000000001da5b0 00000000001da9d3 FUN_001da5b0 +00000000001daae0 00000000001db33f filter2D +00000000001db430 00000000001db647 cvFilter2D +00000000001db6cc 00000000001db6cf FUN_001db6cc +00000000001db6d0 00000000001db6d3 FUN_001db6d0 +00000000001db6d4 00000000001db6d7 FUN_001db6d4 +00000000001db6d8 00000000001db6db FUN_001db6d8 +00000000001db6dc 00000000001db6df FUN_001db6dc +00000000001db6e0 00000000001db6e3 FUN_001db6e0 +00000000001db6e4 00000000001db6e7 FUN_001db6e4 +00000000001db6e8 00000000001db6eb FUN_001db6e8 +00000000001db6ec 00000000001db6ef FUN_001db6ec +00000000001db6f0 00000000001db6f3 FUN_001db6f0 +00000000001db6f4 00000000001db6f7 FUN_001db6f4 +00000000001db6f8 00000000001db6fb FUN_001db6f8 +00000000001db6fc 00000000001db6ff FUN_001db6fc +00000000001db700 00000000001db703 FUN_001db700 +00000000001db704 00000000001db707 FUN_001db704 +00000000001db708 00000000001db70b FUN_001db708 +00000000001db70c 00000000001db70f FUN_001db70c +00000000001db710 00000000001db713 FUN_001db710 +00000000001db714 00000000001db717 FUN_001db714 +00000000001db718 00000000001db71b FUN_001db718 +00000000001db71c 00000000001db71f FUN_001db71c +00000000001db720 00000000001db723 FUN_001db720 +00000000001db724 00000000001db727 FUN_001db724 +00000000001db728 00000000001db72b FUN_001db728 +00000000001db72c 00000000001db72f FUN_001db72c +00000000001db730 00000000001db733 FUN_001db730 +00000000001db734 00000000001db737 FUN_001db734 +00000000001db738 00000000001db73b FUN_001db738 +00000000001db73c 00000000001db73f FUN_001db73c +00000000001db740 00000000001db743 FUN_001db740 +00000000001db744 00000000001db77f FUN_001db744 +00000000001db780 00000000001db7bb FUN_001db780 +00000000001db7bc 00000000001db7f7 FUN_001db7bc +00000000001db7f8 00000000001db833 FUN_001db7f8 +00000000001db834 00000000001db86f FUN_001db834 +00000000001db870 00000000001db8ab FUN_001db870 +00000000001db8ac 00000000001db8e7 FUN_001db8ac +00000000001db8e8 00000000001db923 FUN_001db8e8 +00000000001db924 00000000001db95f FUN_001db924 +00000000001db960 00000000001db99b FUN_001db960 +00000000001db99c 00000000001db9d7 FUN_001db99c +00000000001db9d8 00000000001dba13 FUN_001db9d8 +00000000001dba14 00000000001dba4f FUN_001dba14 +00000000001dba50 00000000001dba8b FUN_001dba50 +00000000001dba8c 00000000001dbac7 FUN_001dba8c +00000000001dbac8 00000000001dbb03 FUN_001dbac8 +00000000001dbb04 00000000001dbb3f FUN_001dbb04 +00000000001dbb40 00000000001dbb7b FUN_001dbb40 +00000000001dbb7c 00000000001dbbb7 FUN_001dbb7c +00000000001dbbb8 00000000001dbbf3 FUN_001dbbb8 +00000000001dbbf4 00000000001dbc2f FUN_001dbbf4 +00000000001dbc30 00000000001dbc6b FUN_001dbc30 +00000000001dbc6c 00000000001dbca7 FUN_001dbc6c +00000000001dbca8 00000000001dbce3 FUN_001dbca8 +00000000001dbce4 00000000001dbd1f FUN_001dbce4 +00000000001dbd20 00000000001dbd5b FUN_001dbd20 +00000000001dbd5c 00000000001dbd97 FUN_001dbd5c +00000000001dbd98 00000000001dbdd3 FUN_001dbd98 +00000000001dbdd4 00000000001dbe0f FUN_001dbdd4 +00000000001dbe10 00000000001dbe4b FUN_001dbe10 +00000000001dbe4c 00000000001dc05b FUN_001dbe4c +00000000001dc05c 00000000001dc24f FUN_001dc05c +00000000001dc250 00000000001dc43b FUN_001dc250 +00000000001dc43c 00000000001dc627 FUN_001dc43c +00000000001dc628 00000000001dc82f FUN_001dc628 +00000000001dc830 00000000001dca3f FUN_001dc830 +00000000001dca40 00000000001dcc33 FUN_001dca40 +00000000001dcc34 00000000001dce1f FUN_001dcc34 +00000000001dce20 00000000001dd00b FUN_001dce20 +00000000001dd00c 00000000001dd213 FUN_001dd00c +00000000001dd214 00000000001dd66b FUN_001dd214 +00000000001dd66c 00000000001ddaaf FUN_001dd66c +00000000001ddab0 00000000001ddec3 FUN_001ddab0 +00000000001ddec4 00000000001de2c7 FUN_001ddec4 +00000000001de2c8 00000000001de767 FUN_001de2c8 +00000000001de768 00000000001debbf FUN_001de768 +00000000001debc0 00000000001df003 FUN_001debc0 +00000000001df004 00000000001df417 FUN_001df004 +00000000001df418 00000000001df81b FUN_001df418 +00000000001df81c 00000000001dfcbb FUN_001df81c +00000000001dfcbc 00000000001dfcbf operator.delete +00000000001dfcc0 00000000001dfcc3 operator.delete +00000000001dfcc4 00000000001dfcc7 operator.delete +00000000001dfcc8 00000000001dfccb operator.delete +00000000001dfccc 00000000001dfccf operator.delete +00000000001dfcd0 00000000001dfcd3 operator.delete +00000000001dfcd4 00000000001dfcd7 operator.delete +00000000001dfcd8 00000000001dfcdb operator.delete +00000000001dfcdc 00000000001dfcdf operator.delete +00000000001dfce0 00000000001dfce3 operator.delete +00000000001dfce4 00000000001dfce7 operator.delete +00000000001dfce8 00000000001dfceb operator.delete +00000000001dfcec 00000000001dfcef operator.delete +00000000001dfcf0 00000000001dfcf3 operator.delete +00000000001dfcf4 00000000001dfcf7 operator.delete +00000000001dfcf8 00000000001dfcfb operator.delete +00000000001dfcfc 00000000001dfcff operator.delete +00000000001dfd00 00000000001dfd03 operator.delete +00000000001dfd04 00000000001dfd07 operator.delete +00000000001dfd08 00000000001dfd0b operator.delete +00000000001dfd0c 00000000001dfd0f operator.delete +00000000001dfd10 00000000001dfd13 operator.delete +00000000001dfd14 00000000001dfd17 operator.delete +00000000001dfd18 00000000001dfd1b operator.delete +00000000001dfd1c 00000000001dfd1f operator.delete +00000000001dfd20 00000000001dfd23 operator.delete +00000000001dfd24 00000000001dfd27 operator.delete +00000000001dfd28 00000000001dfd2b operator.delete +00000000001dfd2c 00000000001dfd2f operator.delete +00000000001dfd30 00000000001dfd33 operator.delete +00000000001dfd34 00000000001dfd43 FUN_001dfd34 +00000000001dfd44 00000000001dfd6f FUN_001dfd44 +00000000001dfd70 00000000001dfd7f FUN_001dfd70 +00000000001dfd80 00000000001dfdab FUN_001dfd80 +00000000001dfdac 00000000001dfdbb FUN_001dfdac +00000000001dfdbc 00000000001dfde7 FUN_001dfdbc +00000000001dfde8 00000000001dfdf7 FUN_001dfde8 +00000000001dfdf8 00000000001dfe23 FUN_001dfdf8 +00000000001dfe24 00000000001dfe33 FUN_001dfe24 +00000000001dfe34 00000000001dfe5f FUN_001dfe34 +00000000001dfe60 00000000001dfe6f FUN_001dfe60 +00000000001dfe70 00000000001dfe9b FUN_001dfe70 +00000000001dfe9c 00000000001dfeab FUN_001dfe9c +00000000001dfeac 00000000001dfed7 FUN_001dfeac +00000000001dfed8 00000000001dfee7 FUN_001dfed8 +00000000001dfee8 00000000001dff13 FUN_001dfee8 +00000000001dff14 00000000001dff23 FUN_001dff14 +00000000001dff24 00000000001dff4f FUN_001dff24 +00000000001dff50 00000000001dff5f FUN_001dff50 +00000000001dff60 00000000001dff8b FUN_001dff60 +00000000001dff8c 00000000001dffcb FUN_001dff8c +00000000001dffcc 00000000001e0013 FUN_001dffcc +00000000001e0014 00000000001e0053 FUN_001e0014 +00000000001e0054 00000000001e009b FUN_001e0054 +00000000001e009c 00000000001e00db FUN_001e009c +00000000001e00dc 00000000001e0123 FUN_001e00dc +00000000001e0124 00000000001e0163 FUN_001e0124 +00000000001e0164 00000000001e01ab FUN_001e0164 +00000000001e01ac 00000000001e01eb FUN_001e01ac +00000000001e01ec 00000000001e0233 FUN_001e01ec +00000000001e0234 00000000001e0273 FUN_001e0234 +00000000001e0274 00000000001e02bb FUN_001e0274 +00000000001e02bc 00000000001e02fb FUN_001e02bc +00000000001e02fc 00000000001e0343 FUN_001e02fc +00000000001e0344 00000000001e0383 FUN_001e0344 +00000000001e0384 00000000001e03cb FUN_001e0384 +00000000001e03cc 00000000001e040b FUN_001e03cc +00000000001e040c 00000000001e0453 FUN_001e040c +00000000001e0454 00000000001e0493 FUN_001e0454 +00000000001e0494 00000000001e04db FUN_001e0494 +00000000001e04dc 00000000001e04eb FUN_001e04dc +00000000001e04ec 00000000001e0517 FUN_001e04ec +00000000001e0518 00000000001e0527 FUN_001e0518 +00000000001e0528 00000000001e0553 FUN_001e0528 +00000000001e0554 00000000001e0563 FUN_001e0554 +00000000001e0564 00000000001e058f FUN_001e0564 +00000000001e0590 00000000001e059f FUN_001e0590 +00000000001e05a0 00000000001e05cb FUN_001e05a0 +00000000001e05cc 00000000001e05db FUN_001e05cc +00000000001e05dc 00000000001e0607 FUN_001e05dc +00000000001e0608 00000000001e0617 FUN_001e0608 +00000000001e0618 00000000001e0643 FUN_001e0618 +00000000001e0644 00000000001e0653 FUN_001e0644 +00000000001e0654 00000000001e067f FUN_001e0654 +00000000001e0680 00000000001e068f FUN_001e0680 +00000000001e0690 00000000001e06bb FUN_001e0690 +00000000001e06bc 00000000001e06cb FUN_001e06bc +00000000001e06cc 00000000001e06f7 FUN_001e06cc +00000000001e06f8 00000000001e0707 FUN_001e06f8 +00000000001e0708 00000000001e0733 FUN_001e0708 +00000000001e0734 00000000001e0753 FUN_001e0734 +00000000001e0754 00000000001e0bff FUN_001e0754 +00000000001e0c00 00000000001e10ab FUN_001e0c00 +00000000001e10ac 00000000001e12d3 FUN_001e10ac +00000000001e12d4 00000000001e155b FUN_001e12d4 +00000000001e155c 00000000001e18a7 FUN_001e155c +00000000001e18a8 00000000001e1beb FUN_001e18a8 +00000000001e1bec 00000000001e1e13 FUN_001e1bec +00000000001e1e14 00000000001e209b FUN_001e1e14 +00000000001e209c 00000000001e23e7 FUN_001e209c +00000000001e23e8 00000000001e272b FUN_001e23e8 +00000000001e272c 00000000001e28e7 FUN_001e272c +00000000001e294c 00000000001e2b0f FUN_001e294c +00000000001e2b74 00000000001e318b FUN_001e2b74 +00000000001e31ec 00000000001e37fb FUN_001e31ec +00000000001e3860 00000000001e3c63 getStructuringElement +00000000001e3cb0 00000000001e4e97 FUN_001e3cb0 +00000000001e5098 00000000001e50eb erode +00000000001e50ec 00000000001e513f dilate +00000000001e5140 00000000001e52f7 ~MatExpr +00000000001e5350 00000000001e6223 morphologyEx +00000000001e6320 00000000001e68eb cvCreateStructuringElementEx +00000000001e6900 00000000001e698b cvReleaseStructuringElement +00000000001e69a0 00000000001e6ddb cvErode +00000000001e6e80 00000000001e72bb cvDilate +00000000001e7360 00000000001e77f3 cvMorphologyEx +00000000001e7890 00000000001e7b4b FUN_001e7890 +00000000001e7bb0 00000000001e7e6b FUN_001e7bb0 +00000000001e7ed0 00000000001e92df FUN_001e7ed0 +00000000001e9530 00000000001e9c93 createMorphologyFilter +00000000001e9e60 00000000001ea157 FUN_001e9e60 +00000000001ea1e0 00000000001eaac7 FUN_001ea1e0 +00000000001eab50 00000000001eb3df minEnclosingCircle +00000000001eb3e4 00000000001eb9f3 arcLength +00000000001eba58 00000000001ebd8b contourArea +00000000001ebdd0 00000000001edd03 fitEllipse +00000000001eddc0 00000000001ee82f boundingRect +00000000001ee878 00000000001ee9d3 cvMinEnclosingCircle +00000000001eea20 00000000001ef3ab cvContourArea +00000000001ef480 00000000001ef80b cvArcLength +00000000001ef80c 00000000001ef957 cvFitEllipse2 +00000000001ef9a4 00000000001f068b cvBoundingRect +00000000001f06f8 00000000001f06ff FUN_001f06f8 +00000000001f0700 00000000001f0707 FUN_001f0700 +00000000001f0708 00000000001f070f FUN_001f0708 +00000000001f0710 00000000001f0717 FUN_001f0710 +00000000001f0718 00000000001f071f FUN_001f0718 +00000000001f0720 00000000001f0723 FUN_001f0720 +00000000001f0724 00000000001f0727 FUN_001f0724 +00000000001f0728 00000000001f072b FUN_001f0728 +00000000001f072c 00000000001f072f FUN_001f072c +00000000001f0730 00000000001f0733 FUN_001f0730 +00000000001f0734 00000000001f0737 FUN_001f0734 +00000000001f0738 00000000001f073b FUN_001f0738 +00000000001f073c 00000000001f073f FUN_001f073c +00000000001f0740 00000000001f0743 FUN_001f0740 +00000000001f0744 00000000001f0747 FUN_001f0744 +00000000001f0748 00000000001f074b FUN_001f0748 +00000000001f074c 00000000001f074f FUN_001f074c +00000000001f0750 00000000001f0753 FUN_001f0750 +00000000001f0754 00000000001f0757 FUN_001f0754 +00000000001f0758 00000000001f075b FUN_001f0758 +00000000001f075c 00000000001f075f FUN_001f075c +00000000001f0760 00000000001f0763 FUN_001f0760 +00000000001f0764 00000000001f0767 FUN_001f0764 +00000000001f0768 00000000001f076b FUN_001f0768 +00000000001f076c 00000000001f076f FUN_001f076c +00000000001f0770 00000000001f0773 FUN_001f0770 +00000000001f0774 00000000001f0777 FUN_001f0774 +00000000001f0778 00000000001f077b FUN_001f0778 +00000000001f077c 00000000001f077f FUN_001f077c +00000000001f0780 00000000001f0783 FUN_001f0780 +00000000001f0784 00000000001f0787 FUN_001f0784 +00000000001f0788 00000000001f07c3 FUN_001f0788 +00000000001f07c4 00000000001f07ff FUN_001f07c4 +00000000001f0800 00000000001f083b FUN_001f0800 +00000000001f083c 00000000001f0877 FUN_001f083c +00000000001f0878 00000000001f08b3 FUN_001f0878 +00000000001f08b4 00000000001f08ef FUN_001f08b4 +00000000001f08f0 00000000001f092b FUN_001f08f0 +00000000001f092c 00000000001f0967 FUN_001f092c +00000000001f0968 00000000001f09a3 FUN_001f0968 +00000000001f09a4 00000000001f09df FUN_001f09a4 +00000000001f09e0 00000000001f0a1b FUN_001f09e0 +00000000001f0a1c 00000000001f0a57 FUN_001f0a1c +00000000001f0a58 00000000001f0a93 FUN_001f0a58 +00000000001f0a94 00000000001f0acf FUN_001f0a94 +00000000001f0ad0 00000000001f0b0b FUN_001f0ad0 +00000000001f0b0c 00000000001f0b47 FUN_001f0b0c +00000000001f0b48 00000000001f0b83 FUN_001f0b48 +00000000001f0b84 00000000001f0bbf FUN_001f0b84 +00000000001f0bc0 00000000001f0bfb FUN_001f0bc0 +00000000001f0bfc 00000000001f0c37 FUN_001f0bfc +00000000001f0c38 00000000001f0c73 FUN_001f0c38 +00000000001f0c74 00000000001f0caf FUN_001f0c74 +00000000001f0cb0 00000000001f0ceb FUN_001f0cb0 +00000000001f0cec 00000000001f0d27 FUN_001f0cec +00000000001f0d28 00000000001f0d63 FUN_001f0d28 +00000000001f0d64 00000000001f0d9f FUN_001f0d64 +00000000001f0da0 00000000001f0e5f FUN_001f0da0 +00000000001f0e60 00000000001f0f33 FUN_001f0e60 +00000000001f0f34 00000000001f1007 FUN_001f0f34 +00000000001f1008 00000000001f10db FUN_001f1008 +00000000001f10dc 00000000001f11a3 FUN_001f10dc +00000000001f11a4 00000000001f1257 FUN_001f11a4 +00000000001f1258 00000000001f125f FUN_001f1258 +00000000001f1260 00000000001f1267 FUN_001f1260 +00000000001f1268 00000000001f126f FUN_001f1268 +00000000001f1270 00000000001f1277 FUN_001f1270 +00000000001f1278 00000000001f127f FUN_001f1278 +00000000001f1280 00000000001f1287 FUN_001f1280 +00000000001f1288 00000000001f1343 FUN_001f1288 +00000000001f1344 00000000001f140f FUN_001f1344 +00000000001f1410 00000000001f14db FUN_001f1410 +00000000001f14dc 00000000001f158f FUN_001f14dc +00000000001f1590 00000000001f164b FUN_001f1590 +00000000001f164c 00000000001f1717 FUN_001f164c +00000000001f1718 00000000001f17d3 FUN_001f1718 +00000000001f17d4 00000000001f1893 FUN_001f17d4 +00000000001f1894 00000000001f1943 FUN_001f1894 +00000000001f1944 00000000001f1947 operator.delete +00000000001f1948 00000000001f194b operator.delete +00000000001f194c 00000000001f194f operator.delete +00000000001f1950 00000000001f1953 operator.delete +00000000001f1954 00000000001f1957 operator.delete +00000000001f1958 00000000001f195b operator.delete +00000000001f195c 00000000001f195f operator.delete +00000000001f1960 00000000001f1963 operator.delete +00000000001f1964 00000000001f1967 operator.delete +00000000001f1968 00000000001f196b operator.delete +00000000001f196c 00000000001f196f operator.delete +00000000001f1970 00000000001f1973 operator.delete +00000000001f1974 00000000001f1977 operator.delete +00000000001f1978 00000000001f197b operator.delete +00000000001f197c 00000000001f197f operator.delete +00000000001f1980 00000000001f1983 operator.delete +00000000001f1984 00000000001f1987 operator.delete +00000000001f1988 00000000001f198b operator.delete +00000000001f198c 00000000001f198f operator.delete +00000000001f1990 00000000001f1993 operator.delete +00000000001f1994 00000000001f1997 operator.delete +00000000001f1998 00000000001f199b operator.delete +00000000001f199c 00000000001f199f operator.delete +00000000001f19a0 00000000001f19a3 operator.delete +00000000001f19a4 00000000001f19a7 operator.delete +00000000001f19a8 00000000001f19ab operator.delete +00000000001f19ac 00000000001f19bb FUN_001f19ac +00000000001f19bc 00000000001f19e7 FUN_001f19bc +00000000001f19e8 00000000001f19f7 FUN_001f19e8 +00000000001f19f8 00000000001f1a23 FUN_001f19f8 +00000000001f1a24 00000000001f1a33 FUN_001f1a24 +00000000001f1a34 00000000001f1a5f FUN_001f1a34 +00000000001f1a60 00000000001f1a6f FUN_001f1a60 +00000000001f1a70 00000000001f1a9b FUN_001f1a70 +00000000001f1a9c 00000000001f1aab FUN_001f1a9c +00000000001f1aac 00000000001f1ad7 FUN_001f1aac +00000000001f1ad8 00000000001f1ae7 FUN_001f1ad8 +00000000001f1ae8 00000000001f1b13 FUN_001f1ae8 +00000000001f1b14 00000000001f1b23 FUN_001f1b14 +00000000001f1b24 00000000001f1b4f FUN_001f1b24 +00000000001f1b50 00000000001f1b5f FUN_001f1b50 +00000000001f1b60 00000000001f1b8b FUN_001f1b60 +00000000001f1b8c 00000000001f1b9b FUN_001f1b8c +00000000001f1b9c 00000000001f1bc7 FUN_001f1b9c +00000000001f1bc8 00000000001f1bd7 FUN_001f1bc8 +00000000001f1bd8 00000000001f1c03 FUN_001f1bd8 +00000000001f1c04 00000000001f1c13 FUN_001f1c04 +00000000001f1c14 00000000001f1c3f FUN_001f1c14 +00000000001f1c40 00000000001f1c4f FUN_001f1c40 +00000000001f1c50 00000000001f1c7b FUN_001f1c50 +00000000001f1c7c 00000000001f1c8b FUN_001f1c7c +00000000001f1c8c 00000000001f1cb7 FUN_001f1c8c +00000000001f1cb8 00000000001f1cc7 FUN_001f1cb8 +00000000001f1cc8 00000000001f1cf3 FUN_001f1cc8 +00000000001f1cf4 00000000001f1d03 FUN_001f1cf4 +00000000001f1d04 00000000001f1d2f FUN_001f1d04 +00000000001f1d30 00000000001f1d63 FUN_001f1d30 +00000000001f1d64 00000000001f1d9f FUN_001f1d64 +00000000001f1da0 00000000001f1dd3 FUN_001f1da0 +00000000001f1dd4 00000000001f1e0f FUN_001f1dd4 +00000000001f1e10 00000000001f1e43 FUN_001f1e10 +00000000001f1e44 00000000001f1e7f FUN_001f1e44 +00000000001f1e80 00000000001f1eb3 FUN_001f1e80 +00000000001f1eb4 00000000001f1eef FUN_001f1eb4 +00000000001f1ef0 00000000001f1f23 FUN_001f1ef0 +00000000001f1f24 00000000001f1f5f FUN_001f1f24 +00000000001f1f60 00000000001f1f93 FUN_001f1f60 +00000000001f1f94 00000000001f1fcf FUN_001f1f94 +00000000001f1fd0 00000000001f2003 FUN_001f1fd0 +00000000001f2004 00000000001f203f FUN_001f2004 +00000000001f2040 00000000001f2073 FUN_001f2040 +00000000001f2074 00000000001f20af FUN_001f2074 +00000000001f20b0 00000000001f20e3 FUN_001f20b0 +00000000001f20e4 00000000001f211f FUN_001f20e4 +00000000001f2120 00000000001f2153 FUN_001f2120 +00000000001f2154 00000000001f218f FUN_001f2154 +00000000001f2190 00000000001f21c3 FUN_001f2190 +00000000001f21c4 00000000001f21ff FUN_001f21c4 +00000000001f2200 00000000001f2acb FUN_001f2200 +00000000001f2acc 00000000001f2e37 FUN_001f2acc +00000000001f2e4c 00000000001f4c0f FUN_001f2e4c +00000000001f4c10 00000000001fbfbf FUN_001f4c10 +00000000001fbfc0 000000000020337b FUN_001fbfc0 +000000000020337c 000000000020367b FUN_0020337c +000000000020367c 000000000020368b FUN_0020367c +000000000020368c 00000000002036b7 FUN_0020368c +00000000002036b8 00000000002036c7 FUN_002036b8 +00000000002036c8 00000000002036f3 FUN_002036c8 +00000000002036f4 0000000000203fd3 FUN_002036f4 +0000000000203fe8 0000000000205fbf FUN_00203fe8 +0000000000205fd0 0000000000206a5f FUN_00205fd0 +0000000000206a74 00000000002077c3 FUN_00206a74 +00000000002077d8 000000000020875b FUN_002077d8 +0000000000208770 00000000002094af FUN_00208770 +00000000002094c4 000000000020a0fb FUN_002094c4 +000000000020a110 000000000020b35f FUN_0020a110 +000000000020b374 000000000020bc1f FUN_0020b374 +000000000020bc34 000000000020c4db FUN_0020bc34 +000000000020c4f0 000000000020cec7 FUN_0020c4f0 +000000000020cedc 000000000020d8af FUN_0020cedc +000000000020d8c4 000000000020ded3 FUN_0020d8c4 +000000000020df30 000000000020e747 FUN_0020df30 +000000000020e7ac 000000000020ea6f FUN_0020e7ac +000000000020eb14 000000000020ef7b boxFilter +000000000020f000 000000000020f043 blur +000000000020f044 000000000020fa2f sqrBoxFilter +000000000020fbc0 00000000002100af getGaussianKernel +00000000002100f0 000000000021078b FUN_002100f0 +0000000000210800 0000000000210a4f FUN_00210800 +0000000000210ab0 0000000000210d8b GaussianBlur +0000000000210df0 0000000000212f8b medianBlur +0000000000212fb0 0000000000213e23 bilateralFilter +0000000000213fe0 0000000000214563 cvSmooth +0000000000214600 0000000000216fd7 FUN_00214600 +0000000000217050 0000000000219507 FUN_00217050 +0000000000219720 000000000021ad47 matchTemplate +000000000021adf0 000000000021b11b cvMatchTemplate +000000000021b1a8 000000000021b2df FUN_0021b1a8 +000000000021b320 000000000021e46f FUN_0021b320 +000000000021ea00 000000000021eb3f FUN_0021ea00 +000000000021eb80 000000000021ff5b threshold +0000000000220050 0000000000220abb adaptiveThreshold +0000000000220b80 0000000000220fd7 cvThreshold +0000000000221064 000000000022133b cvAdaptiveThreshold +000000000022139c 0000000000221667 cvPointSeqFromMat +00000000002216b8 0000000000221947 cvCopyMakeBorder +00000000002219a8 00000000002221c3 FUN_002219a8 +00000000002221c4 00000000002229eb FUN_002221c4 +00000000002229f0 00000000002233f7 FUN_002229f0 +0000000000223448 000000000022366b cvApproxChains +00000000002236a8 0000000000223c9f approxPolyDP +0000000000223d48 0000000000224653 cvApproxPoly +0000000000224740 00000000002253fb integral +0000000000225510 0000000000225557 integral +0000000000225558 00000000002255a7 integral +00000000002255b0 00000000002263c3 cvIntegral +0000000000226460 0000000000226e03 FUN_00226460 +0000000000226e04 0000000000226e37 FUN_00226e04 +0000000000226e38 00000000002277b7 FUN_00226e38 +00000000002277b8 00000000002277eb FUN_002277b8 +00000000002277ec 000000000022817b FUN_002277ec +000000000022817c 00000000002281af FUN_0022817c +00000000002281b0 0000000000228ac3 FUN_002281b0 +0000000000228ac4 0000000000228af7 FUN_00228ac4 +0000000000228af8 0000000000229443 FUN_00228af8 +0000000000229444 0000000000229477 FUN_00229444 +0000000000229478 0000000000229da3 FUN_00229478 +0000000000229da4 0000000000229dd7 FUN_00229da4 +0000000000229dd8 000000000022a6ef FUN_00229dd8 +000000000022a6f0 000000000022a723 FUN_0022a6f0 +000000000022a724 000000000022b05b FUN_0022a724 +000000000022b05c 000000000022b08f FUN_0022b05c +000000000022b090 000000000022b937 FUN_0022b090 +000000000022b938 000000000022b96b FUN_0022b938 +000000000022b96c 000000000022c2ef FUN_0022b96c +000000000022c2f0 000000000022c323 FUN_0022c2f0 +000000000022c324 000000000022cc37 FUN_0022c324 +000000000022cc38 000000000022cc6b FUN_0022cc38 +000000000022cc6c 000000000022d513 FUN_0022cc6c +000000000022d514 000000000022d547 FUN_0022d514 +000000000022d548 000000000022d5cf fastMalloc +000000000022d5e4 000000000022d5f3 fastFree +000000000022d5f4 000000000022d5f7 cvAlloc +000000000022d5f8 000000000022d5fb cvFree_ +000000000022d5fc 000000000022d8cb FUN_0022d5fc +000000000022d8cc 000000000022db9b FUN_0022d8cc +000000000022db9c 000000000022deb7 FUN_0022db9c +000000000022deb8 000000000022e1d3 FUN_0022deb8 +000000000022e1d4 000000000022e4a3 FUN_0022e1d4 +000000000022e4a4 000000000022ea7f FUN_0022e4a4 +000000000022ea80 000000000022eaff FUN_0022ea80 +000000000022eb00 000000000022efc3 FUN_0022eb00 +000000000022efc4 000000000022f313 FUN_0022efc4 +000000000022f320 0000000000230a13 FUN_0022f320 +0000000000230a30 0000000000230bf3 FUN_00230a30 +0000000000230bf4 0000000000230e0b FUN_00230bf4 +0000000000230e0c 00000000002318bf FUN_00230e0c +00000000002318c0 00000000002320b7 FUN_002318c0 +00000000002320b8 00000000002328af FUN_002320b8 +00000000002328b0 00000000002330a7 FUN_002328b0 +00000000002330a8 0000000000233757 FUN_002330a8 +0000000000233758 0000000000233b1b FUN_00233758 +0000000000233b1c 0000000000233edf FUN_00233b1c +0000000000233ee0 0000000000234323 FUN_00233ee0 +0000000000234324 00000000002346e7 FUN_00234324 +00000000002346e8 0000000000234aab FUN_002346e8 +0000000000234aac 0000000000234e6f FUN_00234aac +0000000000234e70 000000000023525f FUN_00234e70 +0000000000235260 00000000002356a7 FUN_00235260 +00000000002356a8 0000000000235d47 FUN_002356a8 +0000000000235d48 0000000000236363 FUN_00235d48 +0000000000236364 000000000023692b FUN_00236364 +000000000023692c 000000000023729b FUN_0023692c +000000000023729c 0000000000237483 FUN_0023729c +0000000000237484 00000000002378c7 FUN_00237484 +00000000002378c8 0000000000237cb7 FUN_002378c8 +0000000000237cb8 00000000002382d3 FUN_00237cb8 +00000000002382d4 000000000023889b FUN_002382d4 +000000000023889c 000000000023920b FUN_0023889c +000000000023920c 00000000002393f3 FUN_0023920c +00000000002393f4 0000000000239627 FUN_002393f4 +0000000000239628 0000000000239c8f FUN_00239628 +0000000000239c90 0000000000239ea7 FUN_00239c90 +0000000000239ea8 000000000023a07b FUN_00239ea8 +000000000023a07c 000000000023a5d3 FUN_0023a07c +000000000023a5d4 000000000023a807 FUN_0023a5d4 +000000000023a808 000000000023aa3b FUN_0023a808 +000000000023aa3c 000000000023ac0f FUN_0023aa3c +000000000023ac10 000000000023ae27 FUN_0023ac10 +000000000023ae28 000000000023affb FUN_0023ae28 +000000000023affc 000000000023b227 FUN_0023affc +000000000023b228 000000000023b443 FUN_0023b228 +000000000023b444 000000000023b5f3 FUN_0023b444 +000000000023b5f4 000000000023b8af FUN_0023b5f4 +000000000023b8b0 000000000023baeb FUN_0023b8b0 +000000000023baec 000000000023bd03 FUN_0023baec +000000000023bd04 000000000023be73 FUN_0023bd04 +000000000023be74 000000000023c0ff FUN_0023be74 +000000000023c100 000000000023c38b FUN_0023c100 +000000000023c38c 000000000023c61b FUN_0023c38c +000000000023c61c 000000000023c89f FUN_0023c61c +000000000023c8a0 000000000023c90b FUN_0023c8a0 +000000000023c90c 000000000023e047 FUN_0023c90c +000000000023e05c 000000000023f6af FUN_0023e05c +000000000023f6c4 0000000000240ed7 FUN_0023f6c4 +0000000000240eec 00000000002425cb FUN_00240eec +00000000002425e0 0000000000242a5b FUN_002425e0 +0000000000242a5c 000000000024323b FUN_00242a5c +000000000024323c 0000000000243627 FUN_0024323c +0000000000243628 0000000000243adf FUN_00243628 +0000000000243ae0 0000000000243eef FUN_00243ae0 +0000000000243ef0 000000000024433f FUN_00243ef0 +0000000000244340 00000000002447ff FUN_00244340 +0000000000244800 0000000000244cd3 FUN_00244800 +0000000000244cd4 00000000002451f7 FUN_00244cd4 +00000000002451f8 000000000024557f FUN_002451f8 +0000000000245580 0000000000245917 FUN_00245580 +0000000000245918 0000000000245c93 FUN_00245918 +0000000000245c94 0000000000246027 FUN_00245c94 +0000000000246028 0000000000246063 FUN_00246028 +0000000000246064 0000000000246473 FUN_00246064 +0000000000246474 00000000002467eb FUN_00246474 +00000000002467ec 0000000000246bcb FUN_002467ec +0000000000246bcc 0000000000246fc7 FUN_00246bcc +0000000000246fc8 00000000002473b3 FUN_00246fc8 +00000000002473b4 00000000002477a3 FUN_002473b4 +00000000002477a4 0000000000248383 FUN_002477a4 +0000000000248384 0000000000249297 FUN_00248384 +0000000000249298 000000000024b277 FUN_00249298 +000000000024b2e8 000000000024b387 operator== +000000000024b388 000000000024b4c3 FUN_0024b388 +000000000024b4c4 000000000024bc9f FUN_0024b4c4 +000000000024bcb4 000000000024deab FUN_0024bcb4 +000000000024deac 000000000024dedb bitwise_and +000000000024dedc 000000000024df0b bitwise_or +000000000024df0c 000000000024df3b bitwise_xor +000000000024df3c 000000000024df7b bitwise_not +000000000024df7c 000000000024dfbf max +000000000024dfc0 000000000024e003 min +000000000024e004 000000000024e077 max +000000000024e078 000000000024e0eb min +000000000024e0ec 000000000024e15f max +000000000024e160 000000000024e1d3 min +000000000024e1d4 000000000024e1e7 add +000000000024e1e8 000000000024e1fb subtract +000000000024e1fc 000000000024e243 absdiff +000000000024e244 000000000024e2a7 multiply +000000000024e2a8 000000000024e30b divide +000000000024e30c 000000000024e373 divide +000000000024e374 000000000024e3d3 addWeighted +000000000024e3e0 000000000025014b compare +00000000002502a0 0000000000251eaf inRange +0000000000251eb0 000000000025214b cvNot +00000000002521b0 00000000002527c7 cvAnd +00000000002528a8 0000000000252ebf cvOr +0000000000252fa0 00000000002535b7 cvXor +0000000000253698 0000000000253c43 cvAndS +0000000000253cf8 00000000002542a3 cvOrS +0000000000254358 0000000000254903 cvXorS +00000000002549b8 0000000000254fe7 cvAdd +00000000002550c8 00000000002556f7 cvSub +00000000002557d8 0000000000255da3 cvAddS +0000000000255e58 0000000000256423 cvSubRS +00000000002564d8 0000000000256867 cvMul +00000000002568f8 0000000000256da7 cvDiv +0000000000256e60 0000000000257207 cvAddWeighted +0000000000257294 00000000002575ff cvAbsDiff +0000000000257688 0000000000257987 cvAbsDiffS +00000000002579e8 0000000000257e17 cvInRange +0000000000257ec8 000000000025820f cvInRangeS +0000000000258270 00000000002585df cvCmp +0000000000258668 0000000000258937 cvCmpS +000000000025899c 0000000000258cbf cvMin +0000000000258d48 000000000025906b cvMax +00000000002590f4 00000000002593c7 cvMinS +0000000000259428 00000000002596fb cvMaxS +000000000025975c 0000000000259867 cvSetIPLAllocators +000000000025987c 0000000000259a03 cvCreateMatHeader +0000000000259a2c 0000000000259c3b cvInitMatHeader +0000000000259c78 0000000000259dd7 cvReleaseMat +0000000000259e00 000000000025a12f cvInitMatNDHeader +000000000025a194 000000000025a26f cvCreateMatNDHeader +000000000025a284 000000000025a58b cvNextNArraySlice +000000000025a58c 000000000025a8af cvCreateSparseMat +000000000025a900 000000000025a9ef cvReleaseSparseMat +000000000025aa18 000000000025aae3 cvCloneSparseMat +000000000025aaf8 000000000025ac7b cvInitSparseMatIterator +000000000025aca4 000000000025b0a3 FUN_0025aca4 +000000000025b0b8 000000000025b447 cvCreateData +000000000025b498 000000000025b4bb cvCreateMat +000000000025b4bc 000000000025b593 cvCloneMat +000000000025b5a8 000000000025b5cb cvCreateMatND +000000000025b5cc 000000000025ba7b cvCloneMatND +000000000025bb08 000000000025bc3f cvReleaseData +000000000025bc54 000000000025c0eb cvSetData +000000000025c150 000000000025c277 cvGetElemType +000000000025c28c 000000000025c53f cvGetDims +000000000025c554 000000000025c86b cvGetDimSize +000000000025c8d0 000000000025c9e7 cvGetSize +000000000025c9fc 000000000025cdb3 cvScalarToRawData +000000000025cddc 000000000025d09f cvRawDataToScalar +000000000025d0c8 000000000025d5d3 cvPtr2D +000000000025d64c 000000000025da4b cvPtr1D +000000000025da88 000000000025de0f cvGetRawData +000000000025de38 000000000025e02f cvPtr3D +000000000025e058 000000000025e303 cvPtrND +000000000025e340 000000000025e64f cvGet1D +000000000025e678 000000000025e9bf cvGet2D +000000000025e9e8 000000000025ec47 cvGet3D +000000000025ec5c 000000000025eeb3 cvGetND +000000000025eec8 000000000025f35b cvGetReal1D +000000000025f398 000000000025f877 cvGetReal2D +000000000025f8b4 000000000025fcab cvGetReal3D +000000000025fcd4 00000000002600c3 cvGetRealND +00000000002600ec 00000000002605a3 cvSet1D +00000000002605cc 0000000000260aa3 cvSet2D +0000000000260acc 0000000000260ebb cvSet3D +0000000000260ed0 00000000002612b7 cvSetND +00000000002612cc 00000000002618fb cvSetReal1D +0000000000261938 0000000000261f6b cvSetReal2D +0000000000261fa8 00000000002624f3 cvSetReal3D +000000000026251c 0000000000262a5f cvSetRealND +0000000000262a88 0000000000262d0f cvClearND +0000000000262d24 000000000026350b cvGetMat +00000000002635c0 00000000002637cb cvGetSubRect +0000000000263808 00000000002639db cvGetRows +0000000000263a04 0000000000263ba7 cvGetCols +0000000000263bd0 0000000000263e13 cvGetDiag +0000000000263e50 0000000000264bb7 cvInitNArrayIterator +0000000000264bcc 0000000000265e2b cvReshapeMatND +0000000000265f08 0000000000266353 cvReshape +00000000002663e0 000000000026676f cvInitImageHeader +00000000002667d4 000000000026699b cvGetImage +00000000002669d8 0000000000266aaf cvCreateImageHeader +0000000000266ab0 0000000000266ad3 cvCreateImage +0000000000266ad4 0000000000266b77 cvReleaseImageHeader +0000000000266b8c 0000000000266c17 cvReleaseImage +0000000000266c2c 0000000000266e27 cvSetImageROI +0000000000266e50 0000000000266ee7 cvResetImageROI +0000000000266efc 0000000000266fd3 cvGetImageROI +0000000000266fe8 0000000000267113 cvSetImageCOI +000000000026713c 00000000002671af cvGetImageCOI +00000000002671c4 000000000026733b cvCloneImage +0000000000267350 000000000026758b cvCheckTermCriteria +00000000002675dc 00000000002675fb operator() +00000000002675fc 000000000026761b operator() +000000000026761c 000000000026763b operator() +000000000026763c 000000000026765b operator() +000000000026765c 000000000026767b operator() +000000000026767c 000000000026769b operator() +000000000026769c 00000000002677ab FUN_0026769c +00000000002677ac 00000000002678bb FUN_002677ac +00000000002678bc 00000000002679cb FUN_002678bc +00000000002679cc 0000000000267adb FUN_002679cc +0000000000267adc 0000000000267d83 FUN_00267adc +0000000000267d84 000000000026807f FUN_00267d84 +0000000000268080 000000000026893b FUN_00268080 +000000000026893c 00000000002691f7 FUN_0026893c +00000000002691f8 00000000002697c3 FUN_002691f8 +00000000002697c4 0000000000269d8f FUN_002697c4 +0000000000269d90 000000000026a0a3 FUN_00269d90 +000000000026a0a4 000000000026a3a7 FUN_0026a0a4 +000000000026a3a8 000000000026a613 FUN_0026a3a8 +000000000026a614 000000000026a877 FUN_0026a614 +000000000026a878 000000000026b013 FUN_0026a878 +000000000026b014 000000000026b7af FUN_0026b014 +000000000026b7b0 000000000026bcf3 FUN_0026b7b0 +000000000026bcf4 000000000026c237 FUN_0026bcf4 +000000000026c238 000000000026c4ab FUN_0026c238 +000000000026c4ac 000000000026c70f FUN_0026c4ac +000000000026c710 000000000026c797 FUN_0026c710 +000000000026c798 000000000026c81f FUN_0026c798 +000000000026c820 000000000026c8a7 FUN_0026c820 +000000000026c8a8 000000000026c92f FUN_0026c8a8 +000000000026c930 000000000026c9b7 FUN_0026c930 +000000000026c9b8 000000000026ca3f FUN_0026c9b8 +000000000026ca40 000000000026cac7 FUN_0026ca40 +000000000026cac8 000000000026cacb FUN_0026cac8 +000000000026cacc 000000000026cb07 FUN_0026cacc +000000000026cb08 000000000026cb7b FUN_0026cb08 +000000000026cb7c 000000000026cbef FUN_0026cb7c +000000000026cbf0 000000000026cc63 FUN_0026cbf0 +000000000026cc64 000000000026cccb FUN_0026cc64 +000000000026cccc 000000000026cf9b FUN_0026cccc +000000000026cf9c 000000000026d37f FUN_0026cf9c +000000000026d380 000000000026d763 FUN_0026d380 +000000000026d764 000000000026db3b FUN_0026d764 +000000000026db3c 000000000026db3f operator.delete +000000000026db40 000000000026df0b FUN_0026db40 +000000000026dfa0 000000000026e3db FUN_0026dfa0 +000000000026e470 000000000026e8ab FUN_0026e470 +000000000026e940 000000000026edab FUN_0026e940 +000000000026ee40 000000000026f04b FUN_0026ee40 +000000000026f04c 000000000026f5b7 FUN_0026f04c +000000000026f5b8 000000000026fb23 FUN_0026f5b8 +000000000026fb24 000000000026fd4b FUN_0026fb24 +000000000026fd4c 000000000026ff5f FUN_0026fd4c +000000000026ff60 000000000027019f FUN_0026ff60 +00000000002701a0 00000000002703c3 FUN_002701a0 +00000000002703c4 0000000000270617 FUN_002703c4 +0000000000270618 00000000002707bf FUN_00270618 +00000000002707c0 000000000027095f FUN_002707c0 +0000000000270960 0000000000270b33 FUN_00270960 +0000000000270b34 0000000000270d3b FUN_00270b34 +0000000000270d3c 0000000000270f2b FUN_00270d3c +0000000000270f2c 000000000027114b FUN_00270f2c +000000000027114c 00000000002712c7 FUN_0027114c +00000000002712c8 000000000027151b FUN_002712c8 +000000000027151c 0000000000271a87 FUN_0027151c +0000000000271a88 0000000000271c5f FUN_00271a88 +0000000000271c60 000000000027242f FUN_00271c60 +0000000000272430 0000000000272b53 FUN_00272430 +0000000000272b54 0000000000272cf3 FUN_00272b54 +0000000000272cf4 00000000002734bf FUN_00272cf4 +00000000002734c0 00000000002734cf FUN_002734c0 +00000000002734d0 00000000002734fb FUN_002734d0 +00000000002734fc 0000000000273c03 FUN_002734fc +0000000000273c04 000000000027430b FUN_00273c04 +000000000027430c 00000000002747a3 FUN_0027430c +00000000002747a4 0000000000274c3b FUN_002747a4 +0000000000274c3c 0000000000275197 FUN_00274c3c +0000000000275198 00000000002757a7 FUN_00275198 +00000000002757a8 0000000000275ecf FUN_002757a8 +0000000000275ed0 000000000027642b FUN_00275ed0 +000000000027642c 0000000000276a3b FUN_0027642c +0000000000276a3c 0000000000277197 FUN_00276a3c +0000000000277198 00000000002776b3 FUN_00277198 +00000000002776b4 0000000000277a47 FUN_002776b4 +0000000000277a48 0000000000277e3f FUN_00277a48 +0000000000277e40 000000000027834f FUN_00277e40 +0000000000278350 00000000002786e3 FUN_00278350 +00000000002786e4 0000000000278adb FUN_002786e4 +0000000000278adc 0000000000278cab FUN_00278adc +0000000000278cac 0000000000278eb3 FUN_00278cac +0000000000278eb4 0000000000279077 FUN_00278eb4 +0000000000279078 000000000027926b FUN_00279078 +000000000027926c 00000000002795b7 FUN_0027926c +00000000002795b8 0000000000279943 FUN_002795b8 +0000000000279944 0000000000279ccb FUN_00279944 +0000000000279ccc 000000000027a053 FUN_00279ccc +000000000027a054 000000000027a3f3 FUN_0027a054 +000000000027a3f4 000000000027a79b FUN_0027a3f4 +000000000027a79c 000000000027ab1b FUN_0027a79c +000000000027ab1c 000000000027aed3 FUN_0027ab1c +000000000027aed4 000000000027b28b FUN_0027aed4 +000000000027b28c 000000000027b633 FUN_0027b28c +000000000027b634 000000000027b9f7 FUN_0027b634 +000000000027b9f8 000000000027bdbb FUN_0027b9f8 +000000000027bdbc 000000000027c163 FUN_0027bdbc +000000000027c164 000000000027c51f FUN_0027c164 +000000000027c520 000000000027c8bb FUN_0027c520 +000000000027c8bc 000000000027cc67 FUN_0027c8bc +000000000027cc68 000000000027d013 FUN_0027cc68 +000000000027d014 000000000027d40b FUN_0027d014 +000000000027d40c 000000000027d88f FUN_0027d40c +000000000027d890 000000000027dd13 FUN_0027d890 +000000000027dd14 000000000027dfc7 FUN_0027dd14 +000000000027dfc8 000000000027e2ab FUN_0027dfc8 +000000000027e2ac 000000000027e5ab FUN_0027e2ac +000000000027e5ac 000000000027e77b FUN_0027e5ac +000000000027e77c 000000000027e993 FUN_0027e77c +000000000027e994 000000000027ed3f FUN_0027e994 +000000000027ed40 000000000027f0eb FUN_0027ed40 +000000000027f0ec 000000000027f497 FUN_0027f0ec +000000000027f498 000000000027f89f FUN_0027f498 +000000000027f8a0 000000000027fcc3 FUN_0027f8a0 +000000000027fcc4 00000000002800e7 FUN_0027fcc4 +00000000002800e8 000000000028050b FUN_002800e8 +000000000028050c 000000000028092f FUN_0028050c +0000000000280930 0000000000280d77 FUN_00280930 +0000000000280d78 00000000002811bb FUN_00280d78 +00000000002811bc 00000000002815ff FUN_002811bc +0000000000281600 0000000000281a23 FUN_00281600 +0000000000281a24 0000000000281e47 FUN_00281a24 +0000000000281e48 0000000000282287 FUN_00281e48 +0000000000282288 0000000000282787 FUN_00282288 +0000000000282788 00000000002829bb FUN_00282788 +0000000000282a08 0000000000282e47 split +0000000000282e5c 0000000000283503 mixChannels +0000000000283560 0000000000283fbb merge +0000000000283fe0 0000000000283ffb FUN_00283fe0 +0000000000283ffc 00000000002844bf convertScaleAbs +0000000000284520 0000000000284c0f convertTo +0000000000284c98 00000000002858df LUT +0000000000285a00 000000000028602b normalize +00000000002860d0 000000000028638f cvConvertScaleAbs +00000000002863f4 00000000002866a7 cvConvertScale +000000000028670c 0000000000286a33 cvLUT +0000000000286ac0 0000000000286ff3 cvNormalize +00000000002870b0 0000000000287187 ~vector +00000000002871a4 0000000000287613 split +0000000000287678 0000000000287783 merge +00000000002877c0 0000000000288127 cvSplit +00000000002882b0 0000000000288b1b cvMerge +0000000000288c70 0000000000288df7 FUN_00288c70 +0000000000288e34 00000000002898cf mixChannels +00000000002899c8 000000000028a0eb cvMixChannels +000000000028a1c0 000000000028ac1b mixChannels +000000000028ad10 000000000028ad6f ~vector +000000000028ad8c 000000000028b44f extractChannel +000000000028b55c 000000000028bc9f insertChannel +000000000028bdc0 000000000028c12f FUN_0028bdc0 +000000000028c130 000000000028c28b FUN_0028c130 +000000000028c28c 000000000028c38f FUN_0028c28c +000000000028c390 000000000028c4f3 FUN_0028c390 +000000000028c4f4 000000000028c603 FUN_0028c4f4 +000000000028c604 000000000028c767 FUN_0028c604 +000000000028c768 000000000028c89f FUN_0028c768 +000000000028c8a0 000000000028ca1b FUN_0028c8a0 +000000000028ca1c 000000000028cb7b FUN_0028ca1c +000000000028cb7c 000000000028cc57 FUN_0028cb7c +000000000028cc58 000000000028cd17 FUN_0028cc58 +000000000028cd18 000000000028cd3f FUN_0028cd18 +000000000028cd40 000000000028d64f copyTo +000000000028d6a0 000000000028d843 operator= +000000000028d844 000000000028e0c3 copyTo +000000000028e134 000000000028ea23 setTo +000000000028eac0 000000000028fecf flip +000000000028ff50 000000000029048b repeat +00000000002904e0 000000000029077f repeat +00000000002907c0 0000000000290987 borderInterpolate +00000000002909b0 0000000000291e73 copyMakeBorder +0000000000291f40 0000000000292787 cvCopy +0000000000292844 0000000000292a8f cvSet +0000000000292ae0 0000000000292bfb cvSetZero +0000000000292c24 000000000029318b cvFlip +0000000000293214 0000000000293477 cvRepeat +00000000002934dc 0000000000293583 cvCreateMemStorage +0000000000293598 0000000000293623 cvCreateChildMemStorage +0000000000293638 0000000000293743 cvReleaseMemStorage +0000000000293758 000000000029387b cvClearMemStorage +0000000000293890 000000000029392b cvSaveMemStoragePos +0000000000293940 0000000000293a57 cvRestoreMemStoragePos +0000000000293a80 0000000000293c5f FUN_00293a80 +0000000000293c74 0000000000294207 cvMemStorageAlloc +0000000000294244 00000000002942ab cvMemStorageAllocString +00000000002942ac 000000000029444b cvSetSeqBlockSize +0000000000294488 0000000000294637 cvCreateSeq +0000000000294674 0000000000294a77 FUN_00294674 +0000000000294aa0 0000000000294b53 cvGetSeqElem +0000000000294b54 0000000000294c6b cvSeqElemIdx +0000000000294c80 0000000000294ccb cvSliceLength +0000000000294ccc 0000000000294eb7 cvMakeSeqHeaderForArray +0000000000294ef4 0000000000294f9b cvStartAppendToSeq +0000000000294fb0 0000000000295057 cvStartWriteSeq +000000000029506c 000000000029511f cvFlushSeqWriter +0000000000295134 00000000002951f3 cvEndWriteSeq +0000000000295208 000000000029567b cvCreateSeqBlock +00000000002956b8 00000000002957f7 cvStartReadSeq +000000000029580c 00000000002958d3 cvChangeSeqBlock +00000000002958e8 00000000002959b3 cvGetSeqReaderPos +00000000002959c8 0000000000295c6f cvSetSeqReaderPos +0000000000295cac 0000000000295df7 cvCvtSeqToArray +0000000000295e0c 0000000000296297 cvSeqPush +0000000000296298 0000000000296433 cvSeqPop +000000000029645c 00000000002968bf cvSeqPushFront +00000000002968c0 0000000000296a9b cvSeqPopFront +0000000000296ac4 00000000002971a3 cvSeqInsert +00000000002971a4 00000000002975a3 cvSeqRemove +00000000002975cc 0000000000298323 cvSeqPushMulti +0000000000298324 000000000029869f cvSeqPopMulti +00000000002986c8 0000000000298743 cvClearSeq +0000000000298758 0000000000298aa7 cvSeqSlice +0000000000298ae4 0000000000298e9f cvSeqRemoveSlice +0000000000298ec8 00000000002994cb cvSeqInsertSlice +0000000000299530 000000000029a853 cvSeqSort +000000000029a87c 000000000029acff cvSeqSearch +000000000029ad14 000000000029ae17 cvSeqInvert +000000000029ae18 000000000029b3cb cvSeqPartition +000000000029b408 000000000029b4f7 cvCreateSet +000000000029b520 000000000029b673 cvSetAdd +000000000029b688 000000000029b723 cvSetRemove +000000000029b738 000000000029b75b cvClearSet +000000000029b75c 000000000029b833 cvCreateGraph +000000000029b848 000000000029b8db cvClearGraph +000000000029b8f0 000000000029b9e3 cvGraphAddVtx +000000000029b9f8 000000000029bb0b cvFindGraphEdgeByPtr +000000000029bb20 000000000029bc43 cvFindGraphEdge +000000000029bc58 000000000029bed3 cvGraphAddEdgeByPtr +000000000029befc 000000000029bff7 cvGraphAddEdge +000000000029c00c 000000000029c207 cvGraphRemoveEdgeByPtr +000000000029c21c 000000000029c373 cvGraphRemoveVtxByPtr +000000000029c39c 000000000029c503 cvGraphRemoveVtx +000000000029c52c 000000000029c62b cvGraphRemoveEdge +000000000029c640 000000000029c6db cvGraphVtxDegreeByPtr +000000000029c6f0 000000000029c7f3 cvGraphVtxDegree +000000000029c81c 000000000029cae3 cvCreateGraphScanner +000000000029cb0c 000000000029cbbb cvReleaseGraphScanner +000000000029cbd0 000000000029cf8f cvNextGraphItem +000000000029cfb8 000000000029d38b cvCloneGraph +000000000029d3b4 000000000029d44f cvInsertNodeIntoTree +000000000029d464 000000000029d597 cvRemoveNodeFromTree +000000000029d5c0 000000000029d6ab cvInitTreeNodeIterator +000000000029d6d4 000000000029d7f3 cvNextTreeNode +000000000029d808 000000000029d8f3 cvTreeToNodeSeq +000000000029d908 000000000029d9ff cvPrevTreeNode +000000000029da14 000000000029da17 seqPush +000000000029da18 000000000029da1b seqPushFront +000000000029da1c 000000000029da1f seqPop +000000000029da20 000000000029da23 seqPopFront +000000000029da24 000000000029da27 seqRemove +000000000029da28 000000000029da2b clearSeq +000000000029da2c 000000000029da2f getSeqElem +000000000029da30 000000000029da33 seqRemoveSlice +000000000029da34 000000000029da37 seqInsertSlice +000000000029da38 000000000029e293 FUN_0029da38 +000000000029e2a0 000000000029f333 FUN_0029e2a0 +000000000029f354 000000000029f367 FUN_0029f354 +000000000029f368 000000000029fa3f FUN_0029f368 +000000000029fa40 000000000029fa53 FUN_0029fa40 +000000000029fa54 000000000029fc47 FUN_0029fa54 +000000000029fc4c 000000000029ff6b FUN_0029fc4c +000000000029ff6c 000000000029ff7f FUN_0029ff6c +000000000029ff80 00000000002a0167 FUN_0029ff80 +00000000002a0170 00000000002a11c7 FUN_002a0170 +00000000002a1208 00000000002a121b FUN_002a1208 +00000000002a121c 00000000002a17f7 FUN_002a121c +00000000002a17f8 00000000002a180b FUN_002a17f8 +00000000002a1810 00000000002a1a03 FUN_002a1810 +00000000002a1a10 00000000002a1d33 FUN_002a1a10 +00000000002a1d34 00000000002a1d47 FUN_002a1d34 +00000000002a1d48 00000000002a1f2f FUN_002a1d48 +00000000002a1f40 00000000002a4cb3 dft +00000000002a4cd0 00000000002a4cd7 idft +00000000002a4cd8 00000000002a614f mulSpectrums +00000000002a61c0 00000000002a722b dct +00000000002a7250 00000000002a7257 idct +00000000002a7258 00000000002a72d3 getOptimalDFTSize +00000000002a72d4 00000000002a775b cvDFT +00000000002a77f0 00000000002a7b63 cvMulSpectrums +00000000002a7bec 00000000002a7e97 cvDCT +00000000002a7ef8 00000000002a7efb cvGetOptimalDFTSize +00000000002a7f00 00000000002a88ef FUN_002a7f00 +00000000002a88f8 00000000002a958b FUN_002a88f8 +00000000002a9598 00000000002a974b ~SVD +00000000002a979c 00000000002a979f LU +00000000002a97a0 00000000002a97a3 LU +00000000002a97a4 00000000002a97a7 Cholesky +00000000002a97a8 00000000002a97ab Cholesky +00000000002a97ac 00000000002a9f77 determinant +00000000002aa030 00000000002aac3f backSubst +00000000002aad5c 00000000002aadc7 backSubst +00000000002aadc8 00000000002aadcb SVBackSubst +00000000002aadcc 00000000002ab0d7 cvDet +00000000002ab120 00000000002abccb cvSVBkSb +00000000002abe40 00000000002acdff FUN_002abe40 +00000000002ace08 00000000002adb3f FUN_002ace08 +00000000002adb50 00000000002ae5f3 eigen +00000000002ae720 00000000002af0a3 cvEigenVV +00000000002af238 00000000002b0683 FUN_002af238 +00000000002b0688 00000000002b175b FUN_002b0688 +00000000002b1770 00000000002b3bd3 solve +00000000002b3d20 00000000002b409b cvSolve +00000000002b4128 00000000002b50c3 FUN_002b4128 +00000000002b5230 00000000002b5233 compute +00000000002b5240 00000000002b675b invert +00000000002b69b0 00000000002b6c33 cvInvert +00000000002b6c94 00000000002b6c97 SVDecomp +00000000002b6c98 00000000002b6cdb compute +00000000002b6cdc 00000000002b6d4b operator() +00000000002b6d50 00000000002b80bb cvSVD +00000000002b8290 00000000002b83a3 FUN_002b8290 +00000000002b83a4 00000000002b84b3 FUN_002b83a4 +00000000002b84b4 00000000002b853f FUN_002b84b4 +00000000002b8540 00000000002b8543 thunk_FUN_003caaf0 +00000000002b8544 00000000002b8547 thunk_FUN_003ca9b0 +00000000002b8548 00000000002b854b thunk_FUN_003ca92c +00000000002b854c 00000000002b854f thunk_FUN_003ca80c +00000000002b8550 00000000002b873f FUN_002b8550 +00000000002b8740 00000000002b8933 FUN_002b8740 +00000000002b8934 00000000002b8b13 FUN_002b8934 +00000000002b8b14 00000000002b8cab FUN_002b8b14 +00000000002b8cac 00000000002b8e7b FUN_002b8cac +00000000002b8e7c 00000000002b9077 FUN_002b8e7c +00000000002b9078 00000000002b9263 FUN_002b9078 +00000000002b9264 00000000002b9453 FUN_002b9264 +00000000002b9454 00000000002b9633 FUN_002b9454 +00000000002b9634 00000000002b96e3 fastAtan2 +00000000002b9708 00000000002b97c7 cubeRoot +00000000002b9810 00000000002b9e17 magnitude +00000000002b9ea8 00000000002bb43b polarToCart +00000000002bb468 00000000002bb8b7 exp +00000000002bb918 00000000002bbd67 log +00000000002bbdc8 00000000002bcae3 pow +00000000002bcb08 00000000002bcb0f sqrt +00000000002bcb10 00000000002bd2bf checkRange +00000000002bd360 00000000002bd653 patchNaNs +00000000002bd6a0 00000000002bd6a3 cvCbrt +00000000002bd6a4 00000000002bd6a7 cvFastArctan +00000000002bd6b0 00000000002be187 cvPolarToCart +00000000002be2d0 00000000002be56b cvExp +00000000002be5d0 00000000002be86b cvLog +00000000002be8d0 00000000002beb7b cvPow +00000000002bebe0 00000000002bece3 cvCheckArr +00000000002bed20 00000000002bf8a7 solveCubic +00000000002bf8f0 00000000002c04cf solvePoly +00000000002c04e0 00000000002c082f cvSolveCubic +00000000002c08bc 00000000002c0c03 cvSolvePoly +00000000002c0c90 00000000002c0d1b FUN_002c0c90 +00000000002c0d1c 00000000002c18f3 phase +00000000002c1900 00000000002c274b cartToPolar +00000000002c2750 00000000002c304f cvCartToPolar +00000000002c3160 00000000002c33c7 FUN_002c3160 +00000000002c33c8 00000000002c3803 FUN_002c33c8 +00000000002c3804 00000000002c3bfb FUN_002c3804 +00000000002c3bfc 00000000002c3fc3 FUN_002c3bfc +00000000002c3fc4 00000000002c43f3 FUN_002c3fc4 +00000000002c43f4 00000000002c52ff FUN_002c43f4 +00000000002c5300 00000000002c5e83 FUN_002c5300 +00000000002c5e88 00000000002c62e3 FUN_002c5e88 +00000000002c62f0 00000000002c6707 FUN_002c62f0 +00000000002c6710 00000000002c67fb FUN_002c6710 +00000000002c67fc 00000000002c68e7 FUN_002c67fc +00000000002c68e8 00000000002c69d3 FUN_002c68e8 +00000000002c69d4 00000000002c6a9b FUN_002c69d4 +00000000002c6a9c 00000000002c6ed7 FUN_002c6a9c +00000000002c6ed8 00000000002c747b FUN_002c6ed8 +00000000002c747c 00000000002c79cb FUN_002c747c +00000000002c79cc 00000000002c7f53 FUN_002c79cc +00000000002c7f54 00000000002c846f FUN_002c7f54 +00000000002c8470 00000000002c8693 FUN_002c8470 +00000000002c8694 00000000002c8837 FUN_002c8694 +00000000002c8838 00000000002c8a83 FUN_002c8838 +00000000002c8a84 00000000002c8ccf FUN_002c8a84 +00000000002c8cd0 00000000002c956f FUN_002c8cd0 +00000000002c9570 00000000002c9ca3 FUN_002c9570 +00000000002c9ca4 00000000002c9f57 FUN_002c9ca4 +00000000002c9f58 00000000002ca32b FUN_002c9f58 +00000000002ca32c 00000000002ca6cf FUN_002ca32c +00000000002ca6d0 00000000002caa93 FUN_002ca6d0 +00000000002caa94 00000000002cae17 FUN_002caa94 +00000000002cae18 00000000002cb2df FUN_002cae18 +00000000002cb304 00000000002cb343 FUN_002cb304 +00000000002cb344 00000000002cb957 FUN_002cb344 +00000000002cb978 00000000002cbf57 FUN_002cb978 +00000000002cbf78 00000000002cc7c7 FUN_002cbf78 +00000000002cc7e8 00000000002ccf9f FUN_002cc7e8 +00000000002ccfa0 00000000002cd623 FUN_002ccfa0 +00000000002cd624 00000000002cdc3b FUN_002cd624 +00000000002cdc5c 00000000002ce2fb FUN_002cdc5c +00000000002ce320 00000000002ce35f FUN_002ce320 +00000000002ce360 00000000002ce943 FUN_002ce360 +00000000002ce964 00000000002cf367 FUN_002ce964 +00000000002cf388 00000000002cfd5b FUN_002cf388 +00000000002cfd7c 00000000002d04b7 FUN_002cfd7c +00000000002d04b8 00000000002d0ebb FUN_002d04b8 +00000000002d0edc 00000000002d18af FUN_002d0edc +00000000002d18d0 00000000002d25e7 FUN_002d18d0 +00000000002d25e8 00000000002d32b3 FUN_002d25e8 +00000000002d32b4 00000000002d3be7 FUN_002d32b4 +00000000002d3be8 00000000002d451b FUN_002d3be8 +00000000002d451c 00000000002d4e9b FUN_002d451c +00000000002d4e9c 00000000002d581b FUN_002d4e9c +00000000002d581c 00000000002d5ca3 FUN_002d581c +00000000002d5cc8 00000000002d5d07 FUN_002d5cc8 +00000000002d5d08 00000000002d631b FUN_002d5d08 +00000000002d6340 00000000002d637f FUN_002d6340 +00000000002d6380 00000000002d73eb FUN_002d6380 +00000000002d742c 00000000002d7473 FUN_002d742c +00000000002d7474 00000000002d843f FUN_002d7474 +00000000002d845c 00000000002d84a3 FUN_002d845c +00000000002d84a4 00000000002d9717 FUN_002d84a4 +00000000002d975c 00000000002d97a3 FUN_002d975c +00000000002d97a4 00000000002dacdf FUN_002d97a4 +00000000002dacfc 00000000002dad43 FUN_002dacfc +00000000002dad48 00000000002dbb27 transform +00000000002dbc30 00000000002dc54b perspectiveTransform +00000000002dc618 00000000002dcf17 scaleAdd +00000000002dcfac 00000000002ddc27 Mahalanobis +00000000002ddc30 00000000002de003 dot +00000000002de040 00000000002de877 cvTransform +00000000002de9f0 00000000002decf3 cvPerspectiveTransform +00000000002ded80 00000000002df117 cvScaleAdd +00000000002df1a0 00000000002df417 cvMahalanobis +00000000002df490 00000000002df61b cvDotProduct +00000000002df66c 00000000002df81f ~PCA +00000000002df870 00000000002e0f43 cvCalcPCA +00000000002e11c0 00000000002e1e5f cvProjectPCA +00000000002e2024 00000000002e2b0f cvBackProjectPCA +00000000002e2cac 00000000002e2d3b FUN_002e2cac +00000000002e2d40 00000000002e59c7 gemm +00000000002e5a00 00000000002e660f mulTransposed +00000000002e6720 00000000002e6cfb cvMulTransposed +00000000002e6dd0 00000000002e73a3 cvGEMM +00000000002e7490 00000000002e9253 calcCovarMatrix +00000000002e94e0 00000000002ea0cb calcCovarMatrix +00000000002ea200 00000000002eaf93 cvCalcCovarMatrix +00000000002eb170 00000000002eb177 FUN_002eb170 +00000000002eb178 00000000002eb17f FUN_002eb178 +00000000002eb180 00000000002eb187 FUN_002eb180 +00000000002eb188 00000000002eb18f FUN_002eb188 +00000000002eb190 00000000002eb197 FUN_002eb190 +00000000002eb198 00000000002eb19f FUN_002eb198 +00000000002eb1a0 00000000002eb1a7 FUN_002eb1a0 +00000000002eb1a8 00000000002eb1af FUN_002eb1a8 +00000000002eb1b0 00000000002eb1b7 FUN_002eb1b0 +00000000002eb1b8 00000000002eb223 FUN_002eb1b8 +00000000002eb224 00000000002eb22b elementWise +00000000002eb22c 00000000002eb437 FUN_002eb22c +00000000002eb44c 00000000002eb52b size +00000000002eb52c 00000000002eb5e3 type +00000000002eb5e4 00000000002eb6f3 FUN_002eb5e4 +00000000002eb708 00000000002eb7f7 augAssignAdd +00000000002eb828 00000000002eb917 augAssignSubtract +00000000002eb950 00000000002ebab7 augAssignMultiply +00000000002ebb20 00000000002ebc0b augAssignDivide +00000000002ebc40 00000000002ebd2b augAssignAnd +00000000002ebd60 00000000002ebe4b augAssignOr +00000000002ebe80 00000000002ebf6b augAssignXor +00000000002ebfa0 00000000002ec0db FUN_002ebfa0 +00000000002ec120 00000000002ec27f FUN_002ec120 +00000000002ec2c0 00000000002ec3e7 FUN_002ec2c0 +00000000002ec420 00000000002ec55f FUN_002ec420 +00000000002ec5a0 00000000002ec727 FUN_002ec5a0 +00000000002ec760 00000000002ece23 FUN_002ec760 +00000000002ece70 00000000002ed4bb FUN_002ece70 +00000000002ed500 00000000002ed733 FUN_002ed500 +00000000002ed734 00000000002ed9e7 FUN_002ed734 +00000000002ed9e8 00000000002edc9b FUN_002ed9e8 +00000000002edc9c 00000000002edf53 FUN_002edc9c +00000000002edf54 00000000002ee18f FUN_002edf54 +00000000002ee190 00000000002ee477 FUN_002ee190 +00000000002ee478 00000000002ee75f FUN_002ee478 +00000000002ee760 00000000002ee843 MatExpr +00000000002ee844 00000000002eeadb MatExpr +00000000002eeb20 00000000002eeb33 MatOp +00000000002eeb34 00000000002eebbb FUN_002eeb34 +00000000002eebd0 00000000002eebd3 ~MatOp +00000000002eebd4 00000000002eebe3 FUN_002eebd4 +00000000002eebe4 00000000002eec0f FUN_002eebe4 +00000000002eec10 00000000002eec1f FUN_002eec10 +00000000002eec20 00000000002eec4b FUN_002eec20 +00000000002eec4c 00000000002eec5b FUN_002eec4c +00000000002eec5c 00000000002eec87 FUN_002eec5c +00000000002eec88 00000000002eec97 FUN_002eec88 +00000000002eec98 00000000002eecc3 FUN_002eec98 +00000000002eecc4 00000000002eecd3 FUN_002eecc4 +00000000002eecd4 00000000002eecff FUN_002eecd4 +00000000002eed00 00000000002eed0f FUN_002eed00 +00000000002eed10 00000000002eed3b FUN_002eed10 +00000000002eed3c 00000000002eed4b FUN_002eed3c +00000000002eed4c 00000000002eed77 FUN_002eed4c +00000000002eed78 00000000002eed87 FUN_002eed78 +00000000002eed88 00000000002eedb3 FUN_002eed88 +00000000002eedb4 00000000002eedc3 FUN_002eedb4 +00000000002eedc4 00000000002eedef FUN_002eedc4 +00000000002eedf0 00000000002eee0f ~MatOp +00000000002eee10 00000000002ef19b matmul +00000000002ef240 00000000002ef447 invert +00000000002ef4f0 00000000002ef797 operator= +00000000002ef7a0 00000000002efc83 roi +00000000002efe50 00000000002f02a7 diag +00000000002f0470 00000000002f05ef MatExpr +00000000002f0600 00000000002f0673 row +00000000002f0688 00000000002f06fb col +00000000002f0710 00000000002f083b diag +00000000002f0850 00000000002f0983 operator() +00000000002f0998 00000000002f0a17 operator() +00000000002f0a30 00000000002f0b03 cross +00000000002f0b58 00000000002f0c2b dot +00000000002f0c80 00000000002f0da7 t +00000000002f0dc0 00000000002f101f inv +00000000002f10e0 00000000002f120b mul +00000000002f1220 00000000002f12a3 mul +00000000002f12cc 00000000002f133f operator+ +00000000002f1368 00000000002f13db operator+ +00000000002f1404 00000000002f152f operator+ +00000000002f1544 00000000002f166b operator+ +00000000002f1680 00000000002f17ab operator+ +00000000002f17c0 00000000002f1833 operator- +00000000002f185c 00000000002f18cf operator- +00000000002f18f8 00000000002f197b operator- +00000000002f1990 00000000002f1abf operator- +00000000002f1ad4 00000000002f1bff operator- +00000000002f1c14 00000000002f1c77 operator- +00000000002f1c8c 00000000002f1dd7 operator* +00000000002f1e24 00000000002f1e97 operator* +00000000002f1ec0 00000000002f1f33 operator* +00000000002f1f5c 00000000002f2083 operator* +00000000002f2098 00000000002f21bf operator* +00000000002f21d4 00000000002f22ff operator* +00000000002f2314 00000000002f238b operator/ +00000000002f23b4 00000000002f242b operator/ +00000000002f2454 00000000002f24af operator/ +00000000002f24c4 00000000002f25eb operator/ +00000000002f2600 00000000002f272f operator/ +00000000002f2744 00000000002f286b abs +00000000002f2880 00000000002f2adf size +00000000002f2af4 00000000002f2cc3 type +00000000002f2ce0 00000000002f2e9b FUN_002f2ce0 +00000000002f2ef0 00000000002f300f add +00000000002f3080 00000000002f31a3 subtract +00000000002f3210 00000000002f3463 add +00000000002f34c0 00000000002f3713 subtract +00000000002f3770 00000000002f389f multiply +00000000002f3910 00000000002f3b37 FUN_002f3910 +00000000002f3b38 00000000002f3beb operator+ +00000000002f3c28 00000000002f3cdb operator+ +00000000002f3d18 00000000002f3dcb operator- +00000000002f3e08 00000000002f3e6b operator+ +00000000002f3e80 00000000002f3ee3 operator- +00000000002f3ef8 00000000002f3fbb operator- +00000000002f3ff8 00000000002f40bf operator* +00000000002f40fc 00000000002f41c3 operator* +00000000002f4200 00000000002f42cf operator/ +00000000002f4310 00000000002f4523 FUN_002f4310 +00000000002f45c0 00000000002f46a3 operator- +00000000002f46e0 00000000002f4817 FUN_002f46e0 +00000000002f4860 00000000002f4b17 multiply +00000000002f4b80 00000000002f4e9b divide +00000000002f4f00 00000000002f501b divide +00000000002f5090 00000000002f516b FUN_002f5090 +00000000002f51b0 00000000002f52bf abs +00000000002f5330 00000000002f5437 FUN_002f5330 +00000000002f5470 00000000002f558b operator/ +00000000002f55a0 00000000002f564f operator/ +00000000002f568c 00000000002f57a7 min +00000000002f57bc 00000000002f58d7 max +00000000002f58ec 00000000002f5a07 operator& +00000000002f5a1c 00000000002f5b37 operator| +00000000002f5b4c 00000000002f5c67 operator^ +00000000002f5c80 00000000002f5df7 FUN_002f5c80 +00000000002f5e70 00000000002f5f87 operator& +00000000002f5f9c 00000000002f60b3 operator& +00000000002f60c8 00000000002f61df operator| +00000000002f61f4 00000000002f630b operator| +00000000002f6320 00000000002f6437 operator^ +00000000002f644c 00000000002f6563 operator^ +00000000002f6578 00000000002f65cf operator~ +00000000002f65e4 00000000002f663b abs +00000000002f6650 00000000002f673b FUN_002f6650 +00000000002f673c 00000000002f679b min +00000000002f67b0 00000000002f680f min +00000000002f6824 00000000002f6883 max +00000000002f6898 00000000002f68f7 max +00000000002f6910 00000000002f6a3f FUN_002f6910 +00000000002f6a90 00000000002f6ba7 operator< +00000000002f6bbc 00000000002f6cd3 operator<= +00000000002f6ce8 00000000002f6dff operator== +00000000002f6e14 00000000002f6f2b operator!= +00000000002f6f40 00000000002f7057 operator>= +00000000002f706c 00000000002f7183 operator> +00000000002f71a0 00000000002f731f FUN_002f71a0 +00000000002f7390 00000000002f74a3 operator< +00000000002f74b8 00000000002f75cb operator< +00000000002f75e0 00000000002f76f3 operator<= +00000000002f7708 00000000002f781b operator<= +00000000002f7830 00000000002f7943 operator== +00000000002f7958 00000000002f7a6b operator== +00000000002f7a80 00000000002f7b93 operator!= +00000000002f7ba8 00000000002f7cbb operator!= +00000000002f7cd0 00000000002f7de3 operator>= +00000000002f7df8 00000000002f7f0b operator>= +00000000002f7f20 00000000002f8033 operator> +00000000002f8048 00000000002f815b operator> +00000000002f8170 00000000002f82eb FUN_002f8170 +00000000002f8360 00000000002f840b transpose +00000000002f8440 00000000002f84ab FUN_002f8440 +00000000002f84ac 00000000002f86c3 FUN_002f84ac +00000000002f86d8 00000000002f8927 FUN_002f86d8 +00000000002f8928 00000000002f8b77 FUN_002f8928 +00000000002f8b80 00000000002f8d03 FUN_002f8b80 +00000000002f8d80 00000000002f8eaf FUN_002f8d80 +00000000002f8f00 00000000002f8f93 FUN_002f8f00 +00000000002f8f94 00000000002f91ef FUN_002f8f94 +00000000002f9278 00000000002f947b FUN_002f9278 +00000000002f9504 00000000002f9617 t +00000000002f962c 00000000002f973b inv +00000000002f9750 00000000002f992b mul +00000000002f997c 00000000002f9a9f zeros +00000000002f9ab4 00000000002f9be3 zeros +00000000002f9bf8 00000000002f9d1b zeros +00000000002f9d30 00000000002f9e53 ones +00000000002f9e68 00000000002f9f97 ones +00000000002f9fac 00000000002fa0cf ones +00000000002fa0e4 00000000002fa207 eye +00000000002fa21c 00000000002fa34b eye +00000000002fa360 00000000002fa363 FUN_002fa360 +00000000002fa364 00000000002fa36b FUN_002fa364 +00000000002fa36c 00000000002fa373 FUN_002fa36c +00000000002fa374 00000000002fa377 FUN_002fa374 +00000000002fa378 00000000002fa37b FUN_002fa378 +00000000002fa37c 00000000002fa37f map +00000000002fa380 00000000002fa38b FUN_002fa380 +00000000002fa38c 00000000002fa38f ~_InputOutputArray +00000000002fa390 00000000002fa677 FUN_002fa390 +00000000002fa678 00000000002fa6df FUN_002fa678 +00000000002fa6e0 00000000002faa03 FUN_002fa6e0 +00000000002faa04 00000000002faa7b FUN_002faa04 +00000000002faa7c 00000000002fae57 FUN_002faa7c +00000000002fae58 00000000002faeef FUN_002fae58 +00000000002faef0 00000000002fb217 FUN_002faef0 +00000000002fb218 00000000002fb28f FUN_002fb218 +00000000002fb290 00000000002fb683 FUN_002fb290 +00000000002fb684 00000000002fb71b FUN_002fb684 +00000000002fb71c 00000000002fba17 FUN_002fb71c +00000000002fba18 00000000002fba97 FUN_002fba18 +00000000002fba98 00000000002fbe8b FUN_002fba98 +00000000002fbe8c 00000000002fbf23 FUN_002fbe8c +00000000002fbf24 00000000002fc24b FUN_002fbf24 +00000000002fc24c 00000000002fc2db FUN_002fc24c +00000000002fc2dc 00000000002fc80f FUN_002fc2dc +00000000002fc810 00000000002fc8cf FUN_002fc810 +00000000002fc8d0 00000000002fccc3 FUN_002fc8d0 +00000000002fccc4 00000000002fcd97 FUN_002fccc4 +00000000002fcd98 00000000002fd227 FUN_002fcd98 +00000000002fd228 00000000002fd717 FUN_002fd228 +00000000002fd718 00000000002fdc37 FUN_002fd718 +00000000002fdc38 00000000002fe01b FUN_002fdc38 +00000000002fe01c 00000000002fe41f FUN_002fe01c +00000000002fe420 00000000002fe803 FUN_002fe420 +00000000002fe804 00000000002fec07 FUN_002fe804 +00000000002fec08 00000000002feeef FUN_002fec08 +00000000002feef0 00000000002ff1f3 FUN_002feef0 +00000000002ff1f4 00000000002ff477 FUN_002ff1f4 +00000000002ff478 00000000002ff937 FUN_002ff478 +00000000002ff938 00000000002ffd1f FUN_002ff938 +00000000002ffd20 000000000030010f FUN_002ffd20 +0000000000300110 000000000030042b FUN_00300110 +000000000030042c 00000000003006e3 FUN_0030042c +00000000003006e4 0000000000300ba3 FUN_003006e4 +0000000000300ba4 0000000000300f8b FUN_00300ba4 +0000000000300f8c 000000000030137b FUN_00300f8c +000000000030137c 0000000000301697 FUN_0030137c +0000000000301698 000000000030194f FUN_00301698 +0000000000301950 0000000000301c7b FUN_00301950 +0000000000301c7c 0000000000301f43 FUN_00301c7c +0000000000301f44 000000000030220b FUN_00301f44 +000000000030220c 000000000030249b FUN_0030220c +000000000030249c 000000000030278b FUN_0030249c +000000000030278c 0000000000302a93 FUN_0030278c +0000000000302a94 0000000000302dbf FUN_00302a94 +0000000000302dc0 0000000000303087 FUN_00302dc0 +0000000000303088 0000000000303317 FUN_00303088 +0000000000303318 0000000000303607 FUN_00303318 +0000000000303608 000000000030390f FUN_00303608 +0000000000303910 0000000000303aef FUN_00303910 +0000000000303af0 0000000000303cdb FUN_00303af0 +0000000000303cdc 0000000000303f0f FUN_00303cdc +0000000000303f10 0000000000304163 FUN_00303f10 +0000000000304164 0000000000304343 FUN_00304164 +0000000000304344 000000000030452f FUN_00304344 +0000000000304530 0000000000304763 FUN_00304530 +0000000000304764 00000000003049b7 FUN_00304764 +00000000003049b8 0000000000304aef FUN_003049b8 +0000000000304af0 0000000000304c4b FUN_00304af0 +0000000000304c4c 0000000000304db7 FUN_00304c4c +0000000000304db8 0000000000304eef FUN_00304db8 +0000000000304ef0 0000000000305053 FUN_00304ef0 +0000000000305054 00000000003051b7 FUN_00305054 +00000000003051b8 000000000030528f FUN_003051b8 +0000000000305290 00000000003056c3 FUN_00305290 +00000000003056c4 0000000000305a67 FUN_003056c4 +0000000000305a68 0000000000305e9b FUN_00305a68 +0000000000305e9c 000000000030623f FUN_00305e9c +0000000000306240 000000000030654f FUN_00306240 +0000000000306550 000000000030680f FUN_00306550 +0000000000306810 0000000000306b1f FUN_00306810 +0000000000306b20 0000000000306ddf FUN_00306b20 +0000000000306de0 0000000000306fab FUN_00306de0 +0000000000306fac 000000000030716b FUN_00306fac +000000000030716c 000000000030732b FUN_0030716c +000000000030732c 00000000003074e3 FUN_0030732c +00000000003074e4 0000000000307697 FUN_003074e4 +0000000000307698 000000000030778f FUN_00307698 +0000000000307790 0000000000307793 FUN_00307790 +0000000000307794 0000000000307797 operator.delete +0000000000307798 000000000030779b operator.delete +000000000030779c 000000000030796b FUN_0030779c +0000000000307994 00000000003079fb FUN_00307994 +00000000003079fc 0000000000307a73 FUN_003079fc +0000000000307a74 0000000000307adb FUN_00307a74 +0000000000307adc 0000000000307b53 FUN_00307adc +0000000000307b54 0000000000307bc3 FUN_00307b54 +0000000000307bc4 0000000000307c43 FUN_00307bc4 +0000000000307c44 0000000000307cef FUN_00307c44 +0000000000307cf0 0000000000307db7 FUN_00307cf0 +0000000000307db8 0000000000307e87 FUN_00307db8 +0000000000307e88 0000000000307f57 FUN_00307e88 +0000000000307f58 0000000000308027 FUN_00307f58 +0000000000308028 00000000003080f7 FUN_00308028 +00000000003080f8 00000000003081c7 FUN_003080f8 +00000000003081c8 0000000000308297 FUN_003081c8 +0000000000308298 0000000000308363 FUN_00308298 +0000000000308364 000000000030844b FUN_00308364 +000000000030844c 000000000030853b FUN_0030844c +000000000030853c 000000000030862b FUN_0030853c +000000000030862c 000000000030871b FUN_0030862c +000000000030871c 000000000030880b FUN_0030871c +000000000030880c 00000000003088fb FUN_0030880c +00000000003088fc 00000000003089eb FUN_003088fc +00000000003089ec 0000000000308a9f FUN_003089ec +0000000000308aa0 0000000000308b6f FUN_00308aa0 +0000000000308b70 0000000000308c47 FUN_00308b70 +0000000000308c48 0000000000308d1f FUN_00308c48 +0000000000308d20 0000000000308df7 FUN_00308d20 +0000000000308df8 0000000000308ecf FUN_00308df8 +0000000000308ed0 0000000000308fa7 FUN_00308ed0 +0000000000308fa8 000000000030907f FUN_00308fa8 +0000000000309080 0000000000309153 FUN_00309080 +0000000000309154 0000000000309243 FUN_00309154 +0000000000309244 000000000030933b FUN_00309244 +000000000030933c 0000000000309433 FUN_0030933c +0000000000309434 000000000030952b FUN_00309434 +000000000030952c 0000000000309623 FUN_0030952c +0000000000309624 000000000030971b FUN_00309624 +000000000030971c 0000000000309813 FUN_0030971c +0000000000309814 0000000000309883 FUN_00309814 +0000000000309884 000000000030990b FUN_00309884 +000000000030990c 000000000030999b FUN_0030990c +000000000030999c 0000000000309a2b FUN_0030999c +0000000000309a2c 0000000000309abb FUN_00309a2c +0000000000309abc 0000000000309b4b FUN_00309abc +0000000000309b4c 0000000000309bdb FUN_00309b4c +0000000000309bdc 0000000000309c6b FUN_00309bdc +0000000000309c6c 0000000000309cdb FUN_00309c6c +0000000000309cdc 0000000000309daf FUN_00309cdc +0000000000309db0 0000000000309e63 FUN_00309db0 +0000000000309e64 0000000000309f2f FUN_00309e64 +0000000000309f30 0000000000309fdb FUN_00309f30 +0000000000309fdc 000000000030a0f3 FUN_00309fdc +000000000030a11c 000000000030a1a3 getBufferPoolController +000000000030a1a4 000000000030a42f FUN_0030a1a4 +000000000030a430 000000000030a7eb FUN_0030a430 +000000000030a7ec 000000000030ac5b FUN_0030a7ec +000000000030ac5c 000000000030b02f FUN_0030ac5c +000000000030b030 000000000030b403 FUN_0030b030 +000000000030b404 000000000030b6a3 FUN_0030b404 +000000000030b6a4 000000000030bb2b FUN_0030b6a4 +000000000030bb2c 000000000030bc7b unmap +000000000030bca4 000000000030cfab FUN_0030bca4 +000000000030cfac 000000000030e2b3 FUN_0030cfac +000000000030e2b4 000000000030ee0f FUN_0030e2b4 +000000000030ee10 000000000030f9c7 FUN_0030ee10 +000000000030f9c8 0000000000310523 FUN_0030f9c8 +0000000000310524 00000000003110db FUN_00310524 +00000000003110dc 000000000031177b FUN_003110dc +000000000031177c 0000000000312187 FUN_0031177c +0000000000312188 0000000000312b93 FUN_00312188 +0000000000312b94 0000000000313097 FUN_00312b94 +0000000000313098 00000000003137b3 FUN_00313098 +00000000003137b4 0000000000313ecf FUN_003137b4 +0000000000313ed0 000000000031446b FUN_00313ed0 +000000000031446c 0000000000314e7b FUN_0031446c +0000000000314e7c 000000000031588b FUN_00314e7c +000000000031588c 0000000000315dfb FUN_0031588c +0000000000315dfc 000000000031636b FUN_00315dfc +000000000031636c 0000000000317103 FUN_0031636c +0000000000317104 0000000000317eb3 FUN_00317104 +0000000000317eb4 0000000000318c5b FUN_00317eb4 +0000000000318c5c 0000000000318fa3 FUN_00318c5c +0000000000318fb0 00000000003198f7 FUN_00318fb0 +0000000000319930 0000000000319c77 FUN_00319930 +0000000000319c80 000000000031a5c7 FUN_00319c80 +000000000031a600 000000000031a95f FUN_0031a600 +000000000031a960 000000000031b0b3 FUN_0031a960 +000000000031b0f0 000000000031b467 FUN_0031b0f0 +000000000031b470 000000000031ba63 FUN_0031b470 +000000000031baa0 000000000031be17 FUN_0031baa0 +000000000031be20 000000000031c35b FUN_0031be20 +000000000031c390 000000000031c6ef FUN_0031c390 +000000000031c6f0 000000000031ce43 FUN_0031c6f0 +000000000031ce80 000000000031d1e7 FUN_0031ce80 +000000000031d1f0 000000000031d7f3 FUN_0031d1f0 +000000000031d830 000000000031d8b7 getStdAllocator +000000000031d8b8 000000000031d9db swap +000000000031d9dc 000000000031db27 copySize +000000000031db3c 000000000031dcf7 deallocate +000000000031dd20 000000000031e56b create +000000000031e6b0 000000000031e9cf Mat +000000000031e9f8 000000000031ef3b Mat +000000000031ef78 000000000031f40b Mat +000000000031f440 000000000031fc1b Mat +000000000031fcb0 000000000031ff03 diag +000000000031ff18 00000000003201c7 pop_back +0000000000320210 0000000000320653 reserve +00000000003206d0 00000000003207cb push_back_ +00000000003207cc 00000000003208bb resize +00000000003208d0 00000000003209e7 resize +0000000000320a10 000000000032107f push_back +0000000000321150 0000000000322927 cvarrToMat +0000000000322af0 0000000000322c63 locateROI +0000000000322c78 0000000000322e7b adjustROI +0000000000322e90 000000000032331b reshape +0000000000323390 00000000003234ab checkVector +00000000003234ac 00000000003245cf scalarToRawData +00000000003245f8 0000000000324603 kind +0000000000324604 00000000003247c7 getGpuMat +00000000003247f0 00000000003248c3 getOGlBuffer +00000000003248d8 0000000000325143 size +0000000000325248 0000000000325267 rows +0000000000325268 0000000000325287 cols +0000000000325288 00000000003258e7 sizend +0000000000325938 0000000000325f2f dims +0000000000326020 000000000032631b sameSize +000000000032631c 00000000003266bb total +000000000032670c 0000000000326a8b type +0000000000326af0 0000000000327a67 getMat_ +0000000000327c00 00000000003280bb getUMat +000000000032811c 000000000032851f insertImageCOI +0000000000328590 00000000003285ab depth +00000000003285ac 00000000003285cb channels +00000000003285cc 00000000003287f7 empty +000000000032880c 0000000000328a67 isContinuous +0000000000328aa4 0000000000328ce7 isSubmatrix +0000000000328d24 000000000032908f offset +0000000000329108 000000000032945b step +00000000003294d4 00000000003294df fixedSize +00000000003294e0 00000000003294eb fixedType +00000000003294ec 000000000032950b needed +000000000032950c 00000000003296a3 getMatRef +00000000003296e0 000000000032987b getUMatRef +00000000003298b8 0000000000329943 getGpuMatRef +0000000000329958 00000000003299e3 getOGlBufferRef +00000000003299f8 0000000000329a83 getHostMemRef +0000000000329a98 0000000000329f7f setTo +0000000000329fec 000000000032a33b assign +000000000032a374 000000000032a6d7 assign +000000000032a710 000000000032a71b noArray +000000000032a71c 000000000032ab53 setIdentity +000000000032abb8 000000000032af6b trace +000000000032afc8 000000000032b317 completeSymm +000000000032b360 000000000032b79f cross +000000000032b7f0 000000000032b8f7 cvSetIdentity +000000000032b920 000000000032ba23 cvTrace +000000000032ba4c 000000000032bb2b cvCompleteSymm +000000000032bb54 000000000032bee3 cvCrossProduct +000000000032bf98 000000000032c39f cvRange +000000000032c3c0 000000000032ce93 cvKMeans2 +000000000032cff0 000000000032d0c7 reshape +000000000032d0dc 000000000032d0ff NAryMatIterator +000000000032d100 000000000032db83 init +000000000032dc60 000000000032dc8b NAryMatIterator +000000000032dc8c 000000000032dcbf NAryMatIterator +000000000032dcc0 000000000032de6f operator++ +000000000032de70 000000000032e207 download +000000000032e268 000000000032e5ff upload +000000000032e660 000000000032e987 copy +000000000032e9e8 000000000032ea2b operator++ +000000000032ea2c 000000000032ea83 pos +000000000032ea84 000000000032eb63 pos +000000000032eb78 000000000032ec23 lpos +000000000032ec24 000000000032ee53 seek +000000000032ee54 000000000032eecb seek +000000000032eecc 000000000032f0bf clear +000000000032f0c0 000000000032f2fb Hdr +000000000032f324 000000000032f333 clear +000000000032f334 000000000032f59f create +000000000032f5e0 000000000032f8a7 resizeHashTab +000000000032f8c8 000000000032fd83 newNode +000000000032fd84 000000000033031b SparseMat +000000000033031c 000000000033046f ptr +0000000000330484 00000000003305f3 ptr +0000000000330608 000000000033079b ptr +00000000003307b0 0000000000330963 ptr +0000000000330978 00000000003309d7 removeNode +00000000003309d8 0000000000330b0f erase +0000000000330b24 0000000000330c83 erase +0000000000330c98 0000000000330e17 erase +0000000000330e2c 0000000000330e9f SparseMatConstIterator +0000000000330ea0 0000000000330f37 operator++ +0000000000330f38 000000000033144b copyTo +0000000000331460 00000000003317b3 convertTo +00000000003317f0 0000000000331caf copyTo +0000000000331cb0 00000000003320cf convertTo +0000000000332164 000000000033247f norm +00000000003324a8 000000000033298f minMaxLoc +00000000003329c0 0000000000332aab normalize +0000000000332ac8 0000000000332d47 RotatedRect +0000000000332d78 0000000000332e5b points +0000000000332e70 0000000000332fd3 boundingRect +0000000000332fd4 000000000033305b CvMatND +000000000033305c 0000000000333177 _IplImage +000000000033318c 00000000003335e7 cvCreateSparseMat +00000000003335e8 0000000000333abf copyToSparseMat +0000000000333ac0 0000000000334797 _M_fill_insert +00000000003349c0 0000000000336af7 getMatVector +0000000000336b30 00000000003376e3 _M_fill_insert +0000000000337800 00000000003380ff getUMatVector +00000000003381a0 0000000000338c33 _M_fill_insert +0000000000338cb4 00000000003391cb FUN_00338cb4 +00000000003391cc 0000000000339557 FUN_003391cc +0000000000339558 0000000000339bf3 FUN_00339558 +0000000000339bf4 0000000000339f9b FUN_00339bf4 +0000000000339f9c 000000000033a51b FUN_00339f9c +000000000033a51c 000000000033a88f FUN_0033a51c +000000000033a890 000000000033ad23 FUN_0033a890 +000000000033ad24 000000000033b193 FUN_0033ad24 +000000000033b194 000000000033b6ef FUN_0033b194 +000000000033b6f0 000000000033bcc7 FUN_0033b6f0 +000000000033bcc8 000000000033c323 FUN_0033bcc8 +000000000033c324 000000000033cdf3 FUN_0033c324 +000000000033cdf4 000000000033dd53 FUN_0033cdf4 +000000000033dd54 000000000033e61f FUN_0033dd54 +000000000033e620 0000000000340c13 create +0000000000340e88 00000000003411ef extractImageCOI +0000000000341264 0000000000341b17 create +0000000000341be0 0000000000341f7b release +0000000000341fa8 000000000034230b copyTo +0000000000342398 00000000003425eb copyTo +0000000000342624 00000000003426db clear +00000000003426f0 0000000000342abf sort +0000000000342b24 000000000034319b sortIdx +0000000000343228 000000000034399f cvSort +0000000000343a98 0000000000344313 create +00000000003443dc 00000000003447b7 hconcat +000000000034481c 0000000000344aa7 hconcat +0000000000344b14 0000000000344c1f hconcat +0000000000344c50 000000000034502b vconcat +0000000000345090 000000000034531b vconcat +0000000000345388 0000000000345493 vconcat +00000000003454c4 0000000000345c7f transpose +0000000000345d24 0000000000345f67 diag +0000000000345fc8 000000000034620b cvTranspose +0000000000346270 0000000000346fc7 reduce +0000000000346fc8 000000000034736b cvReduce +00000000003473e8 0000000000347443 createSameSize +0000000000347444 000000000034780b FUN_00347444 +0000000000347810 0000000000348163 FUN_00347810 +00000000003481e0 00000000003485a7 FUN_003481e0 +00000000003485b0 0000000000348f03 FUN_003485b0 +0000000000348f80 0000000000349323 FUN_00348f80 +0000000000349330 0000000000349c67 FUN_00349330 +0000000000349ce0 000000000034a083 FUN_00349ce0 +000000000034a090 000000000034a9c7 FUN_0034a090 +000000000034aa40 000000000034ae07 FUN_0034aa40 +000000000034ae10 000000000034b74f FUN_0034ae10 +000000000034b7c0 000000000034bb73 FUN_0034b7c0 +000000000034bb80 000000000034c4b3 FUN_0034bb80 +000000000034c530 000000000034c8e3 FUN_0034c530 +000000000034c8f0 000000000034d227 FUN_0034c8f0 +000000000034d2a0 000000000034d2a7 FUN_0034d2a0 +000000000034d2a8 000000000034d2af FUN_0034d2a8 +000000000034d2b0 000000000034d2b7 FUN_0034d2b0 +000000000034d2b8 000000000034d2bb ~String +000000000034d2bc 000000000034d38b FUN_0034d2bc +000000000034d38c 000000000034d3ef FUN_0034d38c +000000000034d3f0 000000000034d463 FUN_0034d3f0 +000000000034d464 000000000034d4d7 FUN_0034d464 +000000000034d4d8 000000000034d52b FUN_0034d4d8 +000000000034d52c 000000000034d57f FUN_0034d52c +000000000034d580 000000000034d5eb FUN_0034d580 +000000000034d5ec 000000000034d63f FUN_0034d5ec +000000000034d640 000000000034d663 FUN_0034d640 +000000000034d664 000000000034d6bf ~Platform +000000000034d6c0 000000000034d71b ~ProgramSource +000000000034d71c 000000000034d79b ~Device +000000000034d7d0 000000000034d8bb FUN_0034d7d0 +000000000034d8bc 000000000034da7b FUN_0034d8bc +000000000034dab0 000000000034ddcf FUN_0034dab0 +000000000034de14 000000000034e0ab FUN_0034de14 +000000000034e158 000000000034e177 FUN_0034e158 +000000000034e178 000000000034e193 FUN_0034e178 +000000000034e194 000000000034e1f7 FUN_0034e194 +000000000034e220 000000000034e257 FUN_0034e220 +000000000034e258 000000000034e2bf FUN_0034e258 +000000000034e2e8 000000000034e3d3 FUN_0034e2e8 +000000000034e3d4 000000000034e537 FUN_0034e3d4 +000000000034e558 000000000034e837 FUN_0034e558 +000000000034e87c 000000000034ec5f FUN_0034e87c +000000000034ecd0 000000000034ecd7 FUN_0034ecd0 +000000000034ecd8 000000000034ef6f FUN_0034ecd8 +000000000034ef84 000000000034f21b FUN_0034ef84 +000000000034f230 000000000034f4ab FUN_0034f230 +000000000034f4c0 000000000034f75f FUN_0034f4c0 +000000000034f774 000000000034fa23 FUN_0034f774 +000000000034fa38 000000000034fd0f FUN_0034fa38 +000000000034fd24 000000000034fffb FUN_0034fd24 +0000000000350010 00000000003501ff FUN_00350010 +0000000000350224 0000000000350277 FUN_00350224 +0000000000350278 000000000035032b FUN_00350278 +0000000000350340 0000000000350347 haveOpenCL +0000000000350348 000000000035034f haveAmdBlas +0000000000350350 0000000000350357 haveAmdFft +0000000000350358 000000000035035f haveSVM +0000000000350360 00000000003505ef FUN_00350360 +0000000000350618 000000000035061f Platform +0000000000350620 000000000035063f Platform +0000000000350640 00000000003506d7 operator= +00000000003506d8 00000000003506e7 ptr +00000000003506e8 0000000000350793 getDefault +00000000003507a8 0000000000350fc3 FUN_003507a8 +0000000000350fc8 0000000000350fcf Device +0000000000350fd0 0000000000350fef Device +0000000000350ff0 000000000035109f operator= +00000000003510d4 000000000035116b set +00000000003511b4 00000000003511bb Device +00000000003511bc 00000000003511cb ptr +00000000003511cc 000000000035120f name +0000000000351210 0000000000351257 extensions +0000000000351258 000000000035129b version +000000000035129c 00000000003512df vendorName +00000000003512e0 00000000003512ef vendorID +00000000003512f0 0000000000351337 OpenCL_C_Version +0000000000351338 000000000035137f OpenCLVersion +0000000000351380 000000000035138f deviceVersionMajor +0000000000351390 000000000035139f deviceVersionMinor +00000000003513a0 00000000003513e3 driverVersion +00000000003513e4 00000000003513f3 type +00000000003513f4 000000000035148b addressBits +000000000035148c 000000000035153b available +000000000035153c 00000000003515eb compilerAvailable +00000000003515ec 000000000035169b linkerAvailable +000000000035169c 00000000003516ab doubleFPConfig +00000000003516ac 0000000000351743 singleFPConfig +0000000000351744 00000000003517db halfFPConfig +00000000003517dc 000000000035188b endianLittle +000000000035188c 000000000035193b errorCorrectionSupport +000000000035193c 00000000003519d3 executionCapabilities +00000000003519d4 0000000000351a6b globalMemCacheSize +0000000000351a6c 0000000000351b03 globalMemCacheType +0000000000351b04 0000000000351b9b globalMemCacheLineSize +0000000000351b9c 0000000000351c33 globalMemSize +0000000000351c34 0000000000351ccb localMemSize +0000000000351ccc 0000000000351d63 localMemType +0000000000351d64 0000000000351d73 hostUnifiedMemory +0000000000351d74 0000000000351e23 imageSupport +0000000000351e24 0000000000351f17 imageFromBufferSupport +0000000000351f18 0000000000351faf imagePitchAlignment +0000000000351fb0 0000000000352047 imageBaseAddressAlignment +0000000000352048 00000000003520df image2DMaxWidth +00000000003520e0 0000000000352177 image2DMaxHeight +0000000000352178 000000000035220f image3DMaxWidth +0000000000352210 00000000003522a7 image3DMaxHeight +00000000003522a8 000000000035233f image3DMaxDepth +0000000000352340 00000000003523d7 imageMaxBufferSize +00000000003523d8 000000000035246f imageMaxArraySize +0000000000352470 0000000000352507 maxClockFrequency +0000000000352508 0000000000352517 maxComputeUnits +0000000000352518 00000000003525af maxConstantArgs +00000000003525b0 0000000000352647 maxConstantBufferSize +0000000000352648 00000000003526df maxMemAllocSize +00000000003526e0 0000000000352777 maxParameterSize +0000000000352778 000000000035280f maxReadImageArgs +0000000000352810 00000000003528a7 maxWriteImageArgs +00000000003528a8 000000000035293f maxSamplers +0000000000352940 000000000035294f maxWorkGroupSize +0000000000352950 00000000003529e7 maxWorkItemDims +00000000003529e8 0000000000352b5f maxWorkItemSizes +0000000000352b74 0000000000352c0b memBaseAddrAlign +0000000000352c0c 0000000000352ca3 nativeVectorWidthChar +0000000000352ca4 0000000000352d3b nativeVectorWidthShort +0000000000352d3c 0000000000352dd3 nativeVectorWidthInt +0000000000352dd4 0000000000352e6b nativeVectorWidthLong +0000000000352e6c 0000000000352f03 nativeVectorWidthFloat +0000000000352f04 0000000000352f9b nativeVectorWidthDouble +0000000000352f9c 0000000000353033 nativeVectorWidthHalf +0000000000353034 00000000003530cb preferredVectorWidthChar +00000000003530cc 0000000000353163 preferredVectorWidthShort +0000000000353164 00000000003531fb preferredVectorWidthInt +00000000003531fc 0000000000353293 preferredVectorWidthLong +0000000000353294 000000000035332b preferredVectorWidthFloat +000000000035332c 00000000003533c3 preferredVectorWidthDouble +00000000003533c4 000000000035345b preferredVectorWidthHalf +000000000035345c 00000000003534f3 printfBufferSize +00000000003534f4 000000000035358b profilingTimerResolution +000000000035358c 0000000000353593 Context +0000000000353594 00000000003535b3 Context +00000000003535b4 00000000003535c3 ptr +00000000003535c4 00000000003535df ndevices +00000000003535e0 000000000035368f device +00000000003536a4 00000000003536ab useSVM +00000000003536ac 000000000035372f setUseSVM +0000000000353744 000000000035374b Queue +000000000035374c 000000000035376b Queue +000000000035376c 0000000000353873 operator= +0000000000353874 000000000035393f ~Queue +0000000000353940 0000000000353a8f finish +0000000000353aa4 0000000000353ab3 ptr +0000000000353ab4 0000000000353ad3 KernelArg +0000000000353ad4 0000000000353aef KernelArg +0000000000353af0 0000000000353bef Constant +0000000000353c04 0000000000353c0b Kernel +0000000000353c0c 0000000000353c2b Kernel +0000000000353c2c 0000000000353c3b ptr +0000000000353c3c 0000000000353c5b empty +0000000000353c5c 0000000000353e67 set +0000000000353e7c 0000000000353e83 Program +0000000000353e84 0000000000353ea3 Program +0000000000353ea4 0000000000353f8b operator= +0000000000353fb0 000000000035405b ~Program +0000000000354080 000000000035408f ptr +0000000000354090 0000000000354097 ProgramSource +0000000000354098 0000000000354123 source +0000000000354138 0000000000354397 ProgramSource +00000000003543cc 000000000035463b ProgramSource +0000000000354658 0000000000354677 ProgramSource +0000000000354678 000000000035470f operator= +0000000000354710 00000000003547ab source +00000000003547ac 00000000003547bb hash +00000000003547bc 00000000003547c3 PlatformInfo +00000000003547c4 0000000000354bab PlatformInfo +0000000000354bf4 0000000000354c53 ~PlatformInfo +0000000000354c54 0000000000354c77 PlatformInfo +0000000000354c78 0000000000354d1f operator= +0000000000354d20 0000000000354d3b deviceNumber +0000000000354d3c 0000000000354e1b getDevice +0000000000354e30 0000000000354e77 name +0000000000354e78 0000000000354ebf vendor +0000000000354ec0 0000000000354f07 version +0000000000354f08 0000000000354f3f typeToStr +0000000000354f40 0000000000354f77 memopTypeToStr +0000000000354f78 0000000000354faf vecopTypeToStr +0000000000354fb0 00000000003550a7 convertTypeStr +00000000003550a8 00000000003553ff kernelToStr +00000000003554b4 0000000000355727 buildOptionsAddMatrixDescription +0000000000355784 000000000035578b Image2D +000000000035578c 00000000003557ab Image2D +00000000003557ac 000000000035588f operator= +0000000000355890 0000000000355927 ~Image2D +0000000000355928 0000000000355a03 FUN_00355928 +0000000000355a38 0000000000355b0b ~Kernel +0000000000355b40 0000000000355c4f operator= +0000000000355c84 0000000000355ebf create +0000000000355f4c 0000000000355f53 Kernel +0000000000355f54 00000000003560f7 FUN_00355f54 +0000000000356130 0000000000356cbb set +0000000000356df4 0000000000356e47 set +0000000000356e48 0000000000356e57 ptr +0000000000356e58 0000000000356ed3 set +0000000000356ef4 0000000000356f47 isPerformanceCheckBypassed +0000000000356f48 0000000000356f8b isCLBuffer +0000000000356f8c 00000000003572cf FUN_00356f8c +00000000003572d0 000000000035732f ~vector +000000000035734c 000000000035738f FUN_0035734c +0000000000357390 00000000003576a7 _M_insert_aux +0000000000357728 0000000000357777 push_back +0000000000357778 0000000000357a9f FUN_00357778 +0000000000357b6c 0000000000357d2f _M_erase +0000000000357d30 0000000000357e3b FUN_00357d30 +0000000000357ea8 0000000000357fe7 ~Context +0000000000358054 00000000003581c3 create +000000000035822c 00000000003583a7 operator= +0000000000358414 00000000003586cf _M_insert_aux +00000000003586dc 0000000000358847 _M_insert_aux +0000000000358848 00000000003589b3 _M_insert_aux +00000000003589b4 000000000035a07f checkOptimalVectorWidth +000000000035a0c4 000000000035a67f FUN_0035a0c4 +000000000035a680 000000000035a8f7 getPlatfomsInfo +000000000035a940 000000000035aefb FUN_0035a940 +000000000035aefc 000000000035c413 FUN_0035aefc +000000000035c558 000000000035c9ff _M_fill_insert +000000000035ca38 000000000035d023 FUN_0035ca38 +000000000035d0e8 000000000035d277 create +000000000035d2f8 000000000035d2ff Context +000000000035d300 000000000035d4e7 FUN_0035d300 +000000000035d510 000000000035d7f7 FUN_0035d510 +000000000035d834 000000000035d92b getDefault +000000000035d954 000000000035d983 getDefault +000000000035d984 000000000035d9ff useOpenCL +000000000035da18 000000000035da83 setUseOpenCL +000000000035da84 000000000035db2f workGroupSize +000000000035db30 000000000035dbdb preferedWorkGroupSizeMultiple +000000000035dbdc 000000000035dca7 compileWorkGroupSize +000000000035dca8 000000000035dd53 localMemSize +000000000035dd54 000000000035de73 predictOptimalVectorWidth +000000000035de74 000000000035de9b predictOptimalVectorWidthMax +000000000035de9c 000000000035df83 canCreateAlias +000000000035df84 000000000035e68b getOpenCLAllocator +000000000035e788 000000000035eda7 FUN_0035e788 +000000000035ee6c 000000000035effb create +000000000035f058 000000000035f05f Program +000000000035f060 000000000035f12f getPrefix +000000000035f154 000000000035f56f getProg +000000000035f5d0 000000000035f7bf FUN_0035f5d0 +000000000035f7f0 000000000035f86b write +000000000035f880 000000000035f8c3 getPrefix +000000000035f8c4 000000000035fa0f create +000000000035fa6c 000000000035fa73 Kernel +000000000035fa74 000000000035fd43 FUN_0035fa74 +000000000035fd94 000000000035fe7b read +000000000035feb4 00000000003600d7 FUN_0035feb4 +00000000003600fc 00000000003603e7 FUN_003600fc +000000000036041c 0000000000360423 FUN_0036041c +0000000000360424 000000000036064f FUN_00360424 +0000000000360678 00000000003608ef FUN_00360678 +0000000000360934 000000000036099b isFormatSupported +000000000036099c 0000000000360be7 create +0000000000360c10 0000000000360c17 Queue +0000000000360c18 0000000000360c9b getDefault +0000000000360cb0 0000000000360cc7 finish +0000000000360cc8 0000000000361403 FUN_00360cc8 +00000000003614b4 0000000000361c63 FUN_003614b4 +0000000000361ce4 000000000036232f FUN_00361ce4 +00000000003623b4 0000000000362917 FUN_003623b4 +0000000000362988 0000000000362d7f FUN_00362988 +0000000000362e00 00000000003630e7 FUN_00362e00 +0000000000363134 0000000000363e47 FUN_00363134 +0000000000363f88 0000000000363fe7 Image2D +0000000000363ffc 000000000036437b runTask +00000000003643a4 00000000003649cf run +0000000000364a20 0000000000364a3f FUN_00364a20 +0000000000364a40 0000000000364acf setGlDevice +0000000000364ae4 0000000000364b8b Buffer +0000000000364bd4 0000000000364c7b Buffer +0000000000364cc4 0000000000364d6b Buffer +0000000000364db4 0000000000364e5b Buffer +0000000000364ea4 0000000000364f33 create +0000000000364f48 0000000000364f4b release +0000000000364f4c 0000000000364fdb setAutoRelease +0000000000364ff0 000000000036507f copyFrom +0000000000365094 0000000000365123 copyFrom +0000000000365138 00000000003651c7 copyTo +00000000003651dc 000000000036526b copyTo +0000000000365280 000000000036531f clone +0000000000365334 00000000003653c3 bind +00000000003653d8 0000000000365467 unbind +000000000036547c 0000000000365557 mapHost +000000000036556c 00000000003655fb unmapHost +0000000000365610 00000000003656cf mapDevice +00000000003656e4 0000000000365773 unmapDevice +0000000000365788 0000000000365847 mapDevice +000000000036585c 00000000003658eb unmapDevice +0000000000365900 0000000000365993 bufId +00000000003659a8 0000000000365a4f Texture2D +0000000000365a98 0000000000365b3f Texture2D +0000000000365b88 0000000000365c2f Texture2D +0000000000365c78 0000000000365d1f Texture2D +0000000000365d68 0000000000365df7 create +0000000000365e0c 0000000000365e0f release +0000000000365e10 0000000000365e9f setAutoRelease +0000000000365eb4 0000000000365f43 copyFrom +0000000000365f58 0000000000365fe7 copyTo +0000000000365ffc 000000000036608b bind +00000000003660a0 0000000000366133 texId +0000000000366148 0000000000366387 setVertexArray +00000000003663e8 000000000036640b resetVertexArray +000000000036640c 000000000036657b setColorArray +00000000003665c8 00000000003665cf resetColorArray +00000000003665d0 00000000003667c3 setNormalArray +0000000000366824 000000000036682b resetNormalArray +000000000036682c 0000000000366a3b setTexCoordArray +0000000000366a9c 0000000000366aa3 resetTexCoordArray +0000000000366aa4 0000000000366ad3 release +0000000000366ad4 0000000000366b23 setAutoRelease +0000000000366b24 0000000000366bb3 bind +0000000000366bc8 0000000000366c57 render +0000000000366c6c 0000000000366cfb render +0000000000366d10 0000000000366d9f render +0000000000366db4 0000000000366eef FUN_00366db4 +0000000000366ef0 0000000000366ef3 ~ParallelLoopBody +0000000000366ef4 0000000000366f13 ~ParallelLoopBody +0000000000366f14 0000000000366fd7 parallel_for_ +0000000000366fd8 0000000000366fff getNumThreads +0000000000367000 000000000036700b setNumThreads +000000000036700c 0000000000367013 getThreadNum +0000000000367014 000000000036707f getNumberOfCPUs +0000000000367094 000000000036709f currentParallelFramework +00000000003670a0 00000000003670a3 cvSetNumThreads +00000000003670a4 00000000003670a7 cvGetNumThreads +00000000003670a8 00000000003670ab cvGetThreadNum +00000000003670ac 00000000003670b3 FUN_003670ac +00000000003670b4 00000000003670d3 FUN_003670b4 +00000000003670d4 00000000003670e3 FUN_003670d4 +00000000003670e4 000000000036710f FUN_003670e4 +0000000000367110 00000000003672b3 FUN_00367110 +00000000003672b4 0000000000367347 FUN_003672b4 +0000000000367348 00000000003673b3 FUN_00367348 +00000000003673b4 0000000000367433 FUN_003673b4 +0000000000367434 0000000000367473 FUN_00367434 +0000000000367474 0000000000367527 FUN_00367474 +0000000000367528 00000000003676c7 FUN_00367528 +00000000003676c8 000000000036771b FUN_003676c8 +000000000036771c 000000000036778f FUN_0036771c +0000000000367790 0000000000367797 FUN_00367790 +0000000000367798 00000000003677f7 FUN_00367798 +00000000003677f8 00000000003678e3 FUN_003677f8 +0000000000367900 0000000000367c0f FUN_00367900 +0000000000367c44 0000000000367e5f FUN_00367c44 +0000000000367e60 000000000036812b FUN_00367e60 +0000000000368158 000000000036846b FUN_00368158 +00000000003684a0 0000000000368993 FUN_003684a0 +0000000000368994 0000000000368e7b FUN_00368994 +0000000000368e7c 0000000000369813 FUN_00368e7c +0000000000369814 0000000000369c6f FUN_00369814 +0000000000369c70 0000000000369e8f FUN_00369c70 +0000000000369ef8 000000000036a0d3 FUN_00369ef8 +000000000036a0d4 000000000036a59f FUN_0036a0d4 +000000000036a5d8 000000000036a6a3 PCA +000000000036a6b0 000000000036bc4b operator() +000000000036be90 000000000036bf93 PCA +000000000036bff0 000000000036c443 write +000000000036c500 000000000036c903 read +000000000036c9c0 000000000036e367 operator() +000000000036e5b0 000000000036e6b3 PCA +000000000036e710 000000000036efb3 project +000000000036f0a0 000000000036f11b project +000000000036f150 000000000036f9e7 backProject +000000000036fad0 000000000036fb4b backProject +000000000036fb80 000000000036fd73 PCACompute +000000000036fdd0 000000000036ffbf PCACompute +000000000037001c 00000000003706fb PCAProject +00000000003707a4 0000000000370e83 PCABackProject +0000000000370f2c 0000000000370f77 FUN_00370f2c +0000000000370f78 0000000000370f93 FUN_00370f78 +0000000000370f94 0000000000370faf FUN_00370f94 +0000000000370fb0 0000000000371007 FUN_00370fb0 +0000000000371008 000000000037101b FUN_00371008 +000000000037101c 0000000000371037 FUN_0037101c +0000000000371038 000000000037105b FUN_00371038 +000000000037105c 000000000037106b isOpened +000000000037106c 000000000037106f FUN_0037106c +0000000000371070 0000000000371073 FUN_00371070 +0000000000371074 0000000000371113 FUN_00371074 +0000000000371128 00000000003711c7 FUN_00371128 +00000000003711dc 00000000003711df operator.delete +00000000003711e0 00000000003711e3 operator.delete +00000000003711e4 0000000000371217 FUN_003711e4 +0000000000371218 000000000037124b FUN_00371218 +000000000037124c 000000000037124f cvReleaseMat +0000000000371250 0000000000371257 FUN_00371250 +0000000000371258 000000000037127b FUN_00371258 +000000000037127c 000000000037151f FUN_0037127c +0000000000371534 000000000037181b FUN_00371534 +0000000000371858 00000000003718c7 FUN_00371858 +00000000003718c8 00000000003719e7 FUN_003718c8 +00000000003719e8 0000000000371a63 release +0000000000371a64 00000000003720bf FUN_00371a64 +0000000000372124 00000000003721f7 FUN_00372124 +000000000037220c 0000000000372563 FUN_0037220c +0000000000372578 0000000000372977 FUN_00372578 +000000000037298c 0000000000372b8f FUN_0037298c +0000000000372ba4 0000000000372d7b FUN_00372ba4 +0000000000372d90 00000000003730df FUN_00372d90 +00000000003730f4 0000000000373517 FUN_003730f4 +000000000037352c 0000000000373783 FUN_0037352c +0000000000373784 00000000003738c3 FUN_00373784 +00000000003738c4 0000000000373f3b FUN_003738c4 +0000000000373f78 0000000000374553 FUN_00373f78 +000000000037457c 00000000003748f3 FUN_0037457c +0000000000374908 0000000000374f4b FUN_00374908 +0000000000374f88 0000000000375677 FUN_00374f88 +00000000003756dc 0000000000375aa3 FUN_003756dc +0000000000375acc 0000000000375c1f FUN_00375acc +0000000000375c20 0000000000375c8b FUN_00375c20 +0000000000375c8c 0000000000375e6f FUN_00375c8c +0000000000375e84 00000000003761e3 FUN_00375e84 +0000000000376234 00000000003764ff getDefaultObjectName +0000000000376530 00000000003765af cvAttrValue +00000000003765b0 000000000037676f cvGetHashedKey +0000000000376770 0000000000376aef cvGetFileNode +0000000000376b2c 0000000000376e2b cvGetFileNodeByName +0000000000376e68 0000000000376f5f cvGetRootFileNode +0000000000376f74 00000000003770d3 cvStartWriteStruct +00000000003770fc 0000000000377233 cvEndWriteStruct +000000000037725c 000000000037730b ~FileStorage +0000000000377360 000000000037737f ~FileStorage +0000000000377380 000000000037763b releaseAndGetString +0000000000377660 00000000003778a3 cvReleaseFileStorage +00000000003778b8 0000000000377a07 cvWriteInt +0000000000377a30 0000000000377b87 cvWriteReal +0000000000377bb0 0000000000377d0f cvWriteString +0000000000377d38 0000000000377e87 cvWriteComment +0000000000377eb0 0000000000377fe7 cvStartNextStream +0000000000378010 0000000000378ccf cvWriteRawData +0000000000378d5c 0000000000378ef7 FUN_00378d5c +0000000000378ef8 0000000000379063 FUN_00378ef8 +0000000000379064 000000000037939f FUN_00379064 +00000000003793b4 00000000003796ff FUN_003793b4 +0000000000379700 000000000037a77b FUN_00379700 +000000000037a7a4 000000000037af23 FUN_0037a7a4 +000000000037af60 000000000037b0b7 FUN_0037af60 +000000000037b0b8 000000000037b2ef cvStartReadRawData +000000000037b32c 000000000037bc63 cvReadRawDataSlice +000000000037bd04 000000000037c74f FUN_0037bd04 +000000000037c7f0 000000000037c8e3 cvReadRawData +000000000037c8f8 000000000037d17b FUN_0037c8f8 +000000000037d1b8 000000000037d537 FUN_0037d1b8 +000000000037d574 000000000037db83 FUN_0037d574 +000000000037dbfc 000000000037f0ab FUN_0037dbfc +000000000037f0ac 000000000037fe9b FUN_0037f0ac +000000000037ff20 000000000038016f cvWriteFileNode +0000000000380198 00000000003801b7 cvGetFileNodeName +00000000003801b8 0000000000380503 cvRegisterType +0000000000380554 00000000003805af CvType +00000000003805b0 00000000003805bf cvFirstType +00000000003805c0 000000000038061b cvFindType +0000000000380620 0000000000382307 FUN_00380620 +0000000000382310 00000000003823b7 cvUnregisterType +00000000003823b8 00000000003823c3 ~CvType +00000000003823c4 0000000000382edf FUN_003823c4 +0000000000382ee0 00000000003833ef FUN_00382ee0 +00000000003833f0 0000000000384377 FUN_003833f0 +0000000000384380 0000000000385fcb cvOpenFileStorage +0000000000385fe0 000000000038619b open +000000000038619c 0000000000386207 cvTypeOf +0000000000386208 0000000000386387 cvRelease +00000000003863c4 000000000038655f cvClone +000000000038659c 0000000000386717 cvRead +0000000000386740 0000000000386a17 FUN_00386740 +0000000000386a40 0000000000386d0f cvWrite +0000000000386d74 0000000000386f73 cvSave +0000000000386fd8 000000000038700f FileStorage +0000000000387010 000000000038706b FileStorage +00000000003870bc 00000000003871bf FileStorage +0000000000387210 00000000003874d3 cvLoad +0000000000387510 00000000003875a3 root +00000000003875a4 000000000038776f writeRaw +0000000000387784 000000000038781f writeObj +0000000000387820 000000000038786b operator[] +000000000038786c 00000000003878a7 operator[] +00000000003878a8 00000000003878f3 operator[] +00000000003878f4 000000000038792f operator[] +0000000000387930 00000000003879af name +00000000003879b0 00000000003879d3 readObj +00000000003879d4 00000000003879e7 FileNodeIterator +00000000003879e8 0000000000387a23 FileNodeIterator +0000000000387a24 0000000000387a87 operator++ +0000000000387a88 0000000000387abf operator++ +0000000000387ac0 0000000000387ce3 readRaw +0000000000387cf8 0000000000387d23 write +0000000000387d24 0000000000387d53 write +0000000000387d54 0000000000387d7f write +0000000000387d80 0000000000387dc7 write +0000000000387dc8 0000000000387dd7 writeScalar +0000000000387dd8 0000000000387de7 writeScalar +0000000000387de8 0000000000387df3 writeScalar +0000000000387df4 0000000000387e1f writeScalar +0000000000387e20 0000000000387efb write +0000000000387efc 0000000000387fd7 write +000000000038800c 00000000003880cb ~WriteStructContext +00000000003880e0 000000000038835f read +00000000003883bc 0000000000388507 read +000000000038854c 000000000038855f type +0000000000388560 00000000003885df operator[] +00000000003885e0 00000000003885f3 isNamed +00000000003885f4 000000000038865f size +0000000000388660 00000000003886e3 operator-- +00000000003886e4 000000000038871b operator-- +000000000038871c 000000000038879f operator+= +00000000003887a0 00000000003887a7 operator-= +00000000003887a8 0000000000388867 FileNodeIterator +0000000000388868 00000000003888df read +00000000003888e0 000000000038892b read +0000000000388930 0000000000388c4b read +0000000000388c50 0000000000388c97 read +0000000000388ca0 0000000000388d8f read +0000000000388da4 0000000000388eff _M_insert_aux +0000000000388f00 00000000003893bf operator<< +000000000038944c 0000000000389693 WriteStructContext +00000000003896a8 00000000003897c3 write +0000000000389800 00000000003898df write +000000000038991c 0000000000389e2f _M_fill_insert +0000000000389e30 0000000000389ec7 __uninit_copy +0000000000389ec8 000000000038a28f read +000000000038a290 000000000038a95b FUN_0038a290 +000000000038a95c 000000000038b017 FUN_0038a95c +000000000038b018 000000000038b65f FUN_0038b018 +000000000038b660 000000000038ba47 FUN_0038b660 +000000000038ba60 000000000038d9a7 FUN_0038ba60 +000000000038d9a8 000000000038f8ef FUN_0038d9a8 +000000000038f8f0 000000000039014f FUN_0038f8f0 +0000000000390150 0000000000390927 FUN_00390150 +0000000000390928 0000000000390f53 FUN_00390928 +0000000000390f54 0000000000391577 FUN_00390f54 +0000000000391578 0000000000391aaf FUN_00391578 +0000000000391ab0 0000000000391b97 FUN_00391ab0 +0000000000391b98 0000000000391c7f FUN_00391b98 +0000000000391c80 0000000000391d57 FUN_00391c80 +0000000000391d58 0000000000391e2f FUN_00391d58 +0000000000391e30 0000000000391f07 FUN_00391e30 +0000000000391f08 0000000000391ff3 FUN_00391f08 +0000000000391ff4 00000000003920df FUN_00391ff4 +00000000003920e0 000000000039282b FUN_003920e0 +000000000039282c 0000000000392c8b FUN_0039282c +0000000000392c8c 0000000000392ff3 FUN_00392c8c +0000000000392ff4 00000000003930a3 FUN_00392ff4 +00000000003930a4 0000000000393d63 FUN_003930a4 +0000000000393d64 000000000039480b FUN_00393d64 +000000000039480c 0000000000395697 FUN_0039480c +0000000000395698 0000000000395ea3 FUN_00395698 +0000000000395ea4 00000000003969d7 FUN_00395ea4 +00000000003969d8 000000000039756b FUN_003969d8 +000000000039756c 000000000039822b FUN_0039756c +000000000039822c 0000000000399113 FUN_0039822c +0000000000399114 0000000000399f9f FUN_00399114 +0000000000399fa0 000000000039a7ab FUN_00399fa0 +000000000039a7ac 000000000039b2df FUN_0039a7ac +000000000039b2e0 000000000039b9c3 FUN_0039b2e0 +000000000039b9c4 000000000039bff3 FUN_0039b9c4 +000000000039bff4 000000000039cb97 FUN_0039bff4 +000000000039cb98 000000000039ccbb FUN_0039cb98 +000000000039ccbc 000000000039ce1f FUN_0039ccbc +000000000039ce20 000000000039d4a7 FUN_0039ce20 +000000000039d4a8 000000000039db8b FUN_0039d4a8 +000000000039db8c 000000000039e67b FUN_0039db8c +000000000039e67c 000000000039f21f FUN_0039e67c +000000000039f220 000000000039f33f FUN_0039f220 +000000000039f340 000000000039f4a3 FUN_0039f340 +000000000039f4a4 000000000039f8ef FUN_0039f4a4 +000000000039f8f0 000000000039fa3b FUN_0039f8f0 +000000000039fa3c 000000000039fbbb FUN_0039fa3c +000000000039fbbc 000000000039fcdb FUN_0039fbbc +000000000039fcdc 000000000039fe3f FUN_0039fcdc +000000000039fe40 000000000039fefb FUN_0039fe40 +000000000039fefc 00000000003a001b FUN_0039fefc +00000000003a001c 00000000003a0167 FUN_003a001c +00000000003a0168 00000000003a0273 FUN_003a0168 +00000000003a0274 00000000003a03c3 FUN_003a0274 +00000000003a03c4 00000000003a0823 FUN_003a03c4 +00000000003a0824 00000000003a0e23 FUN_003a0824 +00000000003a0e24 00000000003a1463 FUN_003a0e24 +00000000003a1464 00000000003a187f FUN_003a1464 +00000000003a1880 00000000003a188f FUN_003a1880 +00000000003a1890 00000000003a18bb FUN_003a1890 +00000000003a18bc 00000000003a19b7 FUN_003a18bc +00000000003a19b8 00000000003a1abb FUN_003a19b8 +00000000003a1abc 00000000003a43a3 FUN_003a1abc +00000000003a43a4 00000000003a6ccb FUN_003a43a4 +00000000003a6ccc 00000000003a8457 FUN_003a6ccc +00000000003a8458 00000000003a9bd7 FUN_003a8458 +00000000003a9bd8 00000000003a9d3b FUN_003a9bd8 +00000000003a9d3c 00000000003a9eaf FUN_003a9d3c +00000000003a9eb0 00000000003a9fe3 FUN_003a9eb0 +00000000003a9fe4 00000000003aa103 FUN_003a9fe4 +00000000003aa104 00000000003aa1bf FUN_003aa104 +00000000003aa1c0 00000000003aa42f FUN_003aa1c0 +00000000003aa434 00000000003aa643 FUN_003aa434 +00000000003aa648 00000000003aa8af FUN_003aa648 +00000000003aa8d0 00000000003aab1f FUN_003aa8d0 +00000000003aab24 00000000003aad3b FUN_003aab24 +00000000003aad40 00000000003abb63 FUN_003aad40 +00000000003abb64 00000000003acd43 FUN_003abb64 +00000000003acd44 00000000003ad023 FUN_003acd44 +00000000003ad028 00000000003ad0d7 FUN_003ad028 +00000000003ad0d8 00000000003ad39f FUN_003ad0d8 +00000000003ad3a4 00000000003ad88b sum +00000000003ad8e8 00000000003adbcf countNonZero +00000000003adc20 00000000003ae54f mean +00000000003ae5e4 00000000003af83b meanStdDev +00000000003af858 00000000003b0023 minMaxIdx +00000000003b00b8 00000000003b019f minMaxLoc +00000000003b01b4 00000000003b01c3 operator() +00000000003b01d0 00000000003b1937 batchDistance +00000000003b1b00 00000000003b202f findNonZero +00000000003b20a4 00000000003b2273 cvSum +00000000003b22ac 00000000003b23bf cvCountNonZero +00000000003b23e8 00000000003b26cf cvAvg +00000000003b2750 00000000003b2c43 cvAvgSdv +00000000003b2ce0 00000000003b30bb cvMinMaxLoc +00000000003b3150 00000000003b326f FUN_003b3150 +00000000003b3270 00000000003b40ef norm +00000000003b4130 00000000003b4293 FUN_003b4130 +00000000003b42a0 00000000003b545f norm +00000000003b5480 00000000003b5593 PSNR +00000000003b55c0 00000000003b5d7f cvNorm +00000000003b5e70 00000000003b5eb7 allocate +00000000003b5eb8 00000000003b5eeb deallocate +00000000003b5eec 00000000003b5f03 what +00000000003b5f04 00000000003b5f53 ~Exception +00000000003b5fbc 00000000003b5fdb ~Exception +00000000003b5fdc 00000000003b6027 FUN_003b5fdc +00000000003b603c 00000000003b606f FUN_003b603c +00000000003b6070 00000000003b60af Exception +00000000003b60b0 00000000003b60c3 checkHardwareSupport +00000000003b60c4 00000000003b60cf useOptimized +00000000003b60d0 00000000003b6103 getTickCount +00000000003b6108 00000000003b610f getTickFrequency +00000000003b6118 00000000003b611b getCPUTickCount +00000000003b611c 00000000003b61b7 getBuildInformation +00000000003b61cc 00000000003b63f7 format +00000000003b6418 00000000003b654f formatMessage +00000000003b6578 00000000003b6657 Exception +00000000003b668c 00000000003b6a3f tempfile +00000000003b6ad4 00000000003b6ae7 setBreakOnError +00000000003b6ae8 00000000003b6b0f redirectError +00000000003b6b10 00000000003b6b23 cvCheckHardwareSupport +00000000003b6b24 00000000003b6b27 cvGetTickCount +00000000003b6b28 00000000003b6b47 cvGetTickFrequency +00000000003b6b50 00000000003b6b53 cvRedirectError +00000000003b6b54 00000000003b6b5b cvNulDevReport +00000000003b6b5c 00000000003b6b63 cvStdErrReport +00000000003b6b64 00000000003b6b6b cvGuiBoxReport +00000000003b6b6c 00000000003b6b73 cvGetErrInfo +00000000003b6b74 00000000003b6d63 cvErrorStr +00000000003b6d64 00000000003b6f93 error +00000000003b6f94 00000000003b707f error +00000000003b70b8 00000000003b7157 FUN_003b70b8 +00000000003b716c 00000000003b7173 cvGetErrMode +00000000003b7174 00000000003b717b cvSetErrMode +00000000003b717c 00000000003b7183 cvGetErrStatus +00000000003b7184 00000000003b7187 cvSetErrStatus +00000000003b7188 00000000003b72af cvError +00000000003b72f8 00000000003b7317 cvErrorFromIppStatus +00000000003b7318 00000000003b737b Mutex +00000000003b7390 00000000003b73e3 ~Mutex +00000000003b73e4 00000000003b7403 Mutex +00000000003b7404 00000000003b74a3 operator= +00000000003b74a4 00000000003b74ab lock +00000000003b74ac 00000000003b74b3 unlock +00000000003b74b4 00000000003b763f FUN_003b74b4 +00000000003b7698 00000000003b76bb trylock +00000000003b76bc 00000000003b7887 TLSDataContainer +00000000003b78c4 00000000003b7a0f ~TLSDataContainer +00000000003b7a58 00000000003b7a67 FUN_003b7a58 +00000000003b7a68 00000000003b7a93 FUN_003b7a68 +00000000003b7a94 00000000003b7ab3 ~TLSDataContainer +00000000003b7ab4 00000000003b7dd3 getData +00000000003b7e20 00000000003b7f9f FUN_003b7e20 +00000000003b7ff8 00000000003b8073 FUN_003b7ff8 +00000000003b809c 00000000003b80bf setIppStatus +00000000003b80c0 00000000003b80cb getIppStatus +00000000003b80cc 00000000003b815b getIppErrorLocation +00000000003b815c 00000000003b8163 useIPP +00000000003b8164 00000000003b81ef setUseIPP +00000000003b8218 00000000003b826f setUseOptimized +00000000003b8270 00000000003b829f cvUseOptimized +00000000003b82a0 00000000003b82df FUN_003b82a0 +00000000003b82e0 00000000003b830f UMatData +00000000003b8310 00000000003b8313 ~UMatData +00000000003b8314 00000000003b834f lock +00000000003b8350 00000000003b838b unlock +00000000003b838c 00000000003b838f getStdAllocator +00000000003b8390 00000000003b8483 swap +00000000003b8484 00000000003b85cf copySize +00000000003b85e4 00000000003b861b deallocate +00000000003b861c 00000000003b86a7 ~UMat +00000000003b86b0 00000000003b8bd7 getUMat +00000000003b8c20 00000000003b92eb create +00000000003b941c 00000000003b971b UMat +00000000003b9748 00000000003b9bc3 UMat +00000000003b9c00 00000000003ba323 UMat +00000000003ba3b0 00000000003ba5f3 diag +00000000003ba608 00000000003ba76b locateROI +00000000003ba780 00000000003ba97b adjustROI +00000000003ba990 00000000003bae0f reshape +00000000003bae74 00000000003baf8f checkVector +00000000003baf90 00000000003bb05f reshape +00000000003bb080 00000000003bb32f getMat +00000000003bb380 00000000003bb44f handle +00000000003bb464 00000000003bb49b ndoffset +00000000003bb4a0 00000000003bb63b convertTo +00000000003bb670 00000000003bbc9b copyTo +00000000003bbcec 00000000003bbdeb copyTo +00000000003bbe14 00000000003bbefb setTo +00000000003bbf24 00000000003bbf73 operator= +00000000003bbf74 00000000003bc12f diag +00000000003bc170 00000000003bc1fb t +00000000003bc220 00000000003bc2af inv +00000000003bc2e0 00000000003bc36f mul +00000000003bc3a0 00000000003bc52b dot +00000000003bc570 00000000003bc607 zeros +00000000003bc620 00000000003bc6bf zeros +00000000003bc6c0 00000000003bc753 zeros +00000000003bc770 00000000003bc813 ones +00000000003bc814 00000000003bc843 ones +00000000003bc850 00000000003bc8eb ones +00000000003bc910 00000000003bc9d7 eye +00000000003bc9ec 00000000003bca1b eye +00000000003bca1c 00000000003bcd6b FUN_003bca1c +00000000003bcd6c 00000000003bcfeb GpuMat +00000000003bd014 00000000003bd193 GpuMat +00000000003bd1a8 00000000003bd263 locateROI +00000000003bd264 00000000003bd397 adjustROI +00000000003bd398 00000000003bd41f syncOutput +00000000003bd434 00000000003bd43b defaultAllocator +00000000003bd43c 00000000003bd517 GpuMat +00000000003bd518 00000000003bd5fb GpuMat +00000000003bd5fc 00000000003bd683 setDefaultAllocator +00000000003bd698 00000000003bd71f create +00000000003bd734 00000000003bdaf7 ensureSizeIsEnough +00000000003bdaf8 00000000003bdafb release +00000000003bdafc 00000000003bde0b reshape +00000000003bde60 00000000003bdf17 getInputMat +00000000003bdf40 00000000003bdff7 getOutputMat +00000000003be020 00000000003be3cb createContinuous +00000000003be3f4 00000000003be47b upload +00000000003be490 00000000003be517 upload +00000000003be52c 00000000003be5b3 download +00000000003be5c8 00000000003be64f download +00000000003be664 00000000003be6eb copyTo +00000000003be700 00000000003be787 copyTo +00000000003be79c 00000000003be823 copyTo +00000000003be838 00000000003be8c7 setTo +00000000003be8dc 00000000003be96b setTo +00000000003be980 00000000003bea07 convertTo +00000000003bea1c 00000000003beaa3 convertTo +00000000003beab8 00000000003beb43 getAllocator +00000000003beb58 00000000003bebdf create +00000000003bebf4 00000000003bebf7 release +00000000003bebf8 00000000003bef07 reshape +00000000003bef5c 00000000003bf013 createGpuMatHeader +00000000003bf028 00000000003bf0af registerPageLocked +00000000003bf0c4 00000000003bf0c7 unregisterPageLocked +00000000003bf0c8 00000000003bf117 ~Stream +00000000003bf118 00000000003bf1ab Stream +00000000003bf1fc 00000000003bf287 queryIfComplete +00000000003bf29c 00000000003bf323 waitForCompletion +00000000003bf338 00000000003bf3bf waitEvent +00000000003bf3d4 00000000003bf45b enqueueHostCallback +00000000003bf470 00000000003bf553 Null +00000000003bf57c 00000000003bf587 operator.cast.to.function.pointer +00000000003bf588 00000000003bf60f setBufferPoolUsage +00000000003bf624 00000000003bf6ab setBufferPoolConfig +00000000003bf6c0 00000000003bf753 Event +00000000003bf7a4 00000000003bf82b record +00000000003bf840 00000000003bf8cb queryIfComplete +00000000003bf8e0 00000000003bf967 waitForCompletion +00000000003bf97c 00000000003bfa07 elapsedTime +00000000003bfa1c 00000000003bfacb FUN_003bfa1c +00000000003bfad0 00000000003bfbdf FUN_003bfad0 +00000000003bfbe8 00000000003bfbf7 FUN_003bfbe8 +00000000003bfbf8 00000000003bfc23 FUN_003bfbf8 +00000000003bfc24 00000000003bfc33 FUN_003bfc24 +00000000003bfc34 00000000003bfc5f FUN_003bfc34 +00000000003bfc60 00000000003c28f3 kmeans +00000000003c2930 00000000003c2a7b FUN_003c2930 +00000000003c2a7c 00000000003c2be3 FUN_003c2a7c +00000000003c2be4 00000000003c2e6f FUN_003c2be4 +00000000003c2e70 00000000003c30eb FUN_003c2e70 +00000000003c30ec 00000000003c33d7 FUN_003c30ec +00000000003c33d8 00000000003c3693 FUN_003c33d8 +00000000003c3694 00000000003c393f FUN_003c3694 +00000000003c3940 00000000003c3bdb FUN_003c3940 +00000000003c3bdc 00000000003c3ee3 FUN_003c3bdc +00000000003c3ee4 00000000003c41bb FUN_003c3ee4 +00000000003c41bc 00000000003c43b7 FUN_003c41bc +00000000003c43b8 00000000003c45f7 FUN_003c43b8 +00000000003c45f8 00000000003c4a03 FUN_003c45f8 +00000000003c4a04 00000000003c4e6f FUN_003c4a04 +00000000003c4e70 00000000003c4ff3 FUN_003c4e70 +00000000003c4ff4 00000000003c522b FUN_003c4ff4 +00000000003c522c 00000000003c542f FUN_003c522c +00000000003c5430 00000000003c5643 FUN_003c5430 +00000000003c5644 00000000003c581f FUN_003c5644 +00000000003c5820 00000000003c59e7 FUN_003c5820 +00000000003c59fc 00000000003c5bd7 FUN_003c59fc +00000000003c5bec 00000000003c5dc7 FUN_003c5bec +00000000003c5ddc 00000000003c6007 FUN_003c5ddc +00000000003c601c 00000000003c624f FUN_003c601c +00000000003c6264 00000000003c646b FUN_003c6264 +00000000003c6480 00000000003c66b3 FUN_003c6480 +00000000003c66c8 00000000003c68f3 FUN_003c66c8 +00000000003c6908 00000000003c6b73 FUN_003c6908 +00000000003c6b88 00000000003c6e13 FUN_003c6b88 +00000000003c6e28 00000000003c7003 Mat +00000000003c7018 00000000003c72c3 gaussian +00000000003c7310 00000000003c9937 fill +00000000003c9a10 00000000003c9a2b theRNG +00000000003c9a2c 00000000003c9a63 randu +00000000003c9a64 00000000003c9a9b randn +00000000003c9a9c 00000000003c9d87 randShuffle +00000000003c9dd4 00000000003c9f77 cvRandArr +00000000003c9fa0 00000000003ca09b cvRandShuffle +00000000003ca0c4 00000000003ca0fb seed +00000000003ca0fc 00000000003ca0ff RNG_MT19937 +00000000003ca100 00000000003ca107 RNG_MT19937 +00000000003ca108 00000000003ca207 next +00000000003ca208 00000000003ca20b operator.cast.to.unsigned_int +00000000003ca20c 00000000003ca20f operator.cast.to.int +00000000003ca210 00000000003ca233 operator.cast.to.float +00000000003ca238 00000000003ca287 operator.cast.to.double +00000000003ca298 00000000003ca2cf uniform +00000000003ca2d0 00000000003ca303 uniform +00000000003ca304 00000000003ca337 uniform +00000000003ca338 00000000003ca35f operator() +00000000003ca360 00000000003ca363 operator() +00000000003ca370 00000000003ca57b FUN_003ca370 +00000000003ca620 00000000003ca77b FUN_003ca620 +00000000003ca790 00000000003ca80b FUN_003ca790 +00000000003ca80c 00000000003ca92b FUN_003ca80c +00000000003ca92c 00000000003ca9a7 FUN_003ca92c +00000000003ca9b0 00000000003caad7 FUN_003ca9b0 +00000000003caaf0 00000000003cab5b FUN_003caaf0 +00000000003cab60 00000000003cb017 FUN_003cab60 +00000000003cb060 00000000003cb523 FUN_003cb060 +00000000003cb580 00000000003cb867 FUN_003cb580 +00000000003cb880 00000000003cbc17 FUN_003cb880 +00000000003cbc40 00000000003cc7fb FUN_003cbc40 +00000000003cc800 00000000003cd0df FUN_003cc800 +00000000003cd0e8 00000000003cd447 FUN_003cd0e8 +00000000003cd450 00000000003cd757 FUN_003cd450 +00000000003cd760 00000000003cd883 FUN_003cd760 +00000000003cd884 00000000003cd9f3 FUN_003cd884 +00000000003cd9f4 00000000003cdbff FUN_003cd9f4 +00000000003cdc00 00000000003cde9f FUN_003cdc00 +00000000003cdea0 00000000003cdf77 FUN_003cdea0 +00000000003cdf78 00000000003ce03b FUN_003cdf78 +00000000003ce03c 00000000003ce967 FUN_003ce03c +00000000003ce968 00000000003ce9cb __do_upcast +00000000003ce9cc 00000000003ce9db __do_find_public_src +00000000003ce9dc 00000000003ce9ef ~__class_type_info +00000000003ce9f0 00000000003cea13 ~__class_type_info +00000000003cea14 00000000003cea7b __do_upcast +00000000003cea7c 00000000003ceb33 __do_catch +00000000003ceb34 00000000003cec2b __do_dyncast +00000000003cec2c 00000000003cec2f operator.delete +00000000003cec30 00000000003cec33 operator.delete[] +00000000003cec34 00000000003cec3f FUN_003cec34 +00000000003cec40 00000000003cec4b FUN_003cec40 +00000000003cec4c 00000000003cec5b FUN_003cec4c +00000000003cec5c 00000000003cec6b FUN_003cec5c +00000000003cec6c 00000000003cec9b FUN_003cec6c +00000000003cec9c 00000000003ceccb FUN_003cec9c +00000000003ceccc 00000000003cecfb FUN_003ceccc +00000000003cecfc 00000000003ced2b FUN_003cecfc +00000000003ced2c 00000000003cee1f __cxa_allocate_exception +00000000003cee24 00000000003ceeef __cxa_free_exception +00000000003ceef0 00000000003cefd7 __cxa_allocate_dependent_exception +00000000003cefd8 00000000003cf0b7 __cxa_free_dependent_exception +00000000003cf0b8 00000000003cf0bf __cxa_get_exception_ptr +00000000003cf0c0 00000000003cf15f __cxa_begin_catch +00000000003cf160 00000000003cf1fb __cxa_end_catch +00000000003cf1fc 00000000003cf21b uncaught_exception +00000000003cf21c 00000000003cf21f ~exception +00000000003cf220 00000000003cf233 ~bad_exception +00000000003cf234 00000000003cf23f what +00000000003cf240 00000000003cf24b what +00000000003cf24c 00000000003cf26f ~exception +00000000003cf270 00000000003cf293 ~bad_exception +00000000003cf294 00000000003cf297 ~__forced_unwind +00000000003cf298 00000000003cf2bb ~__forced_unwind +00000000003cf2bc 00000000003cf2bf ~__foreign_exception +00000000003cf2c0 00000000003cf2e3 ~__foreign_exception +00000000003cf2e4 00000000003cf2ff FUN_003cf2e4 +00000000003cf300 00000000003cf34b FUN_003cf300 +00000000003cf34c 00000000003cf383 __cxa_get_globals_fast +00000000003cf394 00000000003cf407 __cxa_get_globals +00000000003cf418 00000000003cf457 FUN_003cf418 +00000000003cf458 00000000003cf567 FUN_003cf458 +00000000003cf568 00000000003cf5e3 FUN_003cf568 +00000000003cf5e4 00000000003cf6ef FUN_003cf5e4 +00000000003cf6f0 00000000003cf82f FUN_003cf6f0 +00000000003cf830 00000000003cfd6b __gxx_personality_v0 +00000000003cfd6c 00000000003cfe5b __cxa_call_unexpected +00000000003cfe5c 00000000003cfe6b __terminate +00000000003cfe98 00000000003cfeb3 set_terminate +00000000003cfeb4 00000000003cfec3 get_terminate +00000000003cfec4 00000000003cfed3 terminate +00000000003cfed4 00000000003cfee3 __unexpected +00000000003cfee4 00000000003cfeff set_unexpected +00000000003cff00 00000000003cff0f get_unexpected +00000000003cff10 00000000003cff1f unexpected +00000000003cff20 00000000003cff83 FUN_003cff20 +00000000003cff84 00000000003d000f __cxa_throw +00000000003d0010 00000000003d007f __cxa_rethrow +00000000003d0080 00000000003d01f7 __cxa_guard_acquire +00000000003d01f8 00000000003d025b __cxa_guard_abort +00000000003d026c 00000000003d02db __cxa_guard_release +00000000003d02ec 00000000003d02ff ~recursive_init_error +00000000003d0300 00000000003d0323 ~recursive_init_error +00000000003d0324 00000000003d0393 operator.new +00000000003d0394 00000000003d03a7 operator.new[] +00000000003d03b8 00000000003d03d7 __cxa_pure_virtual +00000000003d03d8 00000000003d03f7 __cxa_deleted_virtual +00000000003d03f8 00000000003d040b ~__si_class_type_info +00000000003d040c 00000000003d042f ~__si_class_type_info +00000000003d0430 00000000003d0587 __do_dyncast +00000000003d0588 00000000003d061b __do_find_public_src +00000000003d061c 00000000003d067b __do_upcast +00000000003d067c 00000000003d067f FUN_003d067c +00000000003d0680 00000000003d0687 FUN_003d0680 +00000000003d0688 00000000003d068f FUN_003d0688 +00000000003d0690 00000000003d0697 FUN_003d0690 +00000000003d0698 00000000003d069b operator.delete +00000000003d069c 00000000003d06eb FUN_003d069c +00000000003d06ec 00000000003d06ff ~__vmi_class_type_info +00000000003d0700 00000000003d0723 ~__vmi_class_type_info +00000000003d0724 00000000003d082f __do_find_public_src +00000000003d0830 00000000003d0de7 __do_dyncast +00000000003d0de8 00000000003d1027 __do_upcast +00000000003d1028 00000000003d102f FUN_003d1028 +00000000003d1030 00000000003d1073 FUN_003d1030 +00000000003d1088 00000000003d10c7 FUN_003d1088 +00000000003d10ec 00000000003d1117 FUN_003d10ec +00000000003d1118 00000000003d1143 FUN_003d1118 +00000000003d1144 00000000003d1183 FUN_003d1144 +00000000003d11a8 00000000003d11f3 FUN_003d11a8 +00000000003d1208 00000000003d124f FUN_003d1208 +00000000003d1274 00000000003d12bb FUN_003d1274 +00000000003d12e0 00000000003d1443 FUN_003d12e0 +00000000003d14e0 00000000003d15ff FUN_003d14e0 +00000000003d1690 00000000003d16d3 FUN_003d1690 +00000000003d16f8 00000000003d174b FUN_003d16f8 +00000000003d174c 00000000003d1803 FUN_003d174c +00000000003d183c 00000000003d184f FUN_003d183c +00000000003d1850 00000000003d18e7 FUN_003d1850 +00000000003d18e8 00000000003d197f FUN_003d18e8 +00000000003d1980 00000000003d19a3 FUN_003d1980 +00000000003d19a4 00000000003d19fb FUN_003d19a4 +00000000003d19fc 00000000003d1a1f FUN_003d19fc +00000000003d1a20 00000000003d1a77 FUN_003d1a20 +00000000003d1a78 00000000003d1a87 FUN_003d1a78 +00000000003d1a88 00000000003d1ab7 FUN_003d1a88 +00000000003d1ab8 00000000003d1b4f FUN_003d1ab8 +00000000003d1b64 00000000003d1c57 FUN_003d1b64 +00000000003d1c58 00000000003d1c5f FUN_003d1c58 +00000000003d1c60 00000000003d1cc7 FUN_003d1c60 +00000000003d1cc8 00000000003d1ccf FUN_003d1cc8 +00000000003d1cd0 00000000003d1d37 FUN_003d1cd0 +00000000003d1d38 00000000003d1dbf FUN_003d1d38 +00000000003d1dc0 00000000003d1e77 FUN_003d1dc0 +00000000003d1e78 00000000003d1ef3 FUN_003d1e78 +00000000003d1ef4 00000000003d1f6f FUN_003d1ef4 +00000000003d1f70 00000000003d1f7b FUN_003d1f70 +00000000003d1f7c 00000000003d1faf FUN_003d1f7c +00000000003d1fb0 00000000003d2003 FUN_003d1fb0 +00000000003d2004 00000000003d20eb FUN_003d2004 +00000000003d20ec 00000000003d21a3 FUN_003d20ec +00000000003d21a4 00000000003d21b3 FUN_003d21a4 +00000000003d21b4 00000000003d21c3 FUN_003d21b4 +00000000003d21c4 00000000003d21f3 FUN_003d21c4 +00000000003d21f4 00000000003d2223 FUN_003d21f4 +00000000003d2224 00000000003d2237 FUN_003d2224 +00000000003d2238 00000000003d224b FUN_003d2238 +00000000003d224c 00000000003d2253 FUN_003d224c +00000000003d2254 00000000003d228f FUN_003d2254 +00000000003d2290 00000000003d22d3 FUN_003d2290 +00000000003d22d4 00000000003d22ff FUN_003d22d4 +00000000003d2300 00000000003d230f FUN_003d2300 +00000000003d2310 00000000003d231b FUN_003d2310 +00000000003d231c 00000000003d232f FUN_003d231c +00000000003d2330 00000000003d233b FUN_003d2330 +00000000003d233c 00000000003d2343 FUN_003d233c +00000000003d2344 00000000003d2383 FUN_003d2344 +00000000003d2384 00000000003d2487 FUN_003d2384 +00000000003d249c 00000000003d24a3 FUN_003d249c +00000000003d24a4 00000000003d24b3 FUN_003d24a4 +00000000003d24b4 00000000003d24bb FUN_003d24b4 +00000000003d24bc 00000000003d24fb FUN_003d24bc +00000000003d24fc 00000000003d2577 FUN_003d24fc +00000000003d2578 00000000003d2607 FUN_003d2578 +00000000003d2608 00000000003d267b FUN_003d2608 +00000000003d267c 00000000003d26df FUN_003d267c +00000000003d26e0 00000000003d2727 FUN_003d26e0 +00000000003d2728 00000000003d27fb FUN_003d2728 +00000000003d27fc 00000000003d28a7 FUN_003d27fc +00000000003d28a8 00000000003d2953 FUN_003d28a8 +00000000003d2978 00000000003d2bcf FUN_003d2978 +00000000003d2bd0 00000000003d2be3 FUN_003d2bd0 +00000000003d2be4 00000000003d2bf7 FUN_003d2be4 +00000000003d2bf8 00000000003d2bff FUN_003d2bf8 +00000000003d2c00 00000000003d2c3b FUN_003d2c00 +00000000003d2c3c 00000000003d2c7f FUN_003d2c3c +00000000003d2c80 00000000003d2cab FUN_003d2c80 +00000000003d2cac 00000000003d2cbb FUN_003d2cac +00000000003d2cbc 00000000003d2cc7 FUN_003d2cbc +00000000003d2cc8 00000000003d2cdb FUN_003d2cc8 +00000000003d2cdc 00000000003d2ce7 FUN_003d2cdc +00000000003d2ce8 00000000003d2cef FUN_003d2ce8 +00000000003d2cf0 00000000003d2d2f FUN_003d2cf0 +00000000003d2d30 00000000003d2e33 FUN_003d2d30 +00000000003d2e48 00000000003d2e4f FUN_003d2e48 +00000000003d2e50 00000000003d2e5f FUN_003d2e50 +00000000003d2e60 00000000003d2e67 FUN_003d2e60 +00000000003d2e68 00000000003d2ea7 FUN_003d2e68 +00000000003d2ea8 00000000003d2f03 FUN_003d2ea8 +00000000003d2f04 00000000003d2f67 FUN_003d2f04 +00000000003d2f68 00000000003d2f93 FUN_003d2f68 +00000000003d2f94 00000000003d2fbf FUN_003d2f94 +00000000003d2fc0 00000000003d3007 FUN_003d2fc0 +00000000003d3008 00000000003d30db FUN_003d3008 +00000000003d30dc 00000000003d3187 FUN_003d30dc +00000000003d3188 00000000003d3233 FUN_003d3188 +00000000003d3258 00000000003d347b FUN_003d3258 +00000000003d347c 00000000003d3503 FUN_003d347c +00000000003d3504 00000000003d3543 FUN_003d3504 +00000000003d3544 00000000003d358f FUN_003d3544 +00000000003d3590 00000000003d36c7 FUN_003d3590 +00000000003d3730 00000000003d377b FUN_003d3730 +00000000003d3798 00000000003d381b FUN_003d3798 +00000000003d381c 00000000003d3873 FUN_003d381c +00000000003d3874 00000000003d38d3 FUN_003d3874 +00000000003d38d4 00000000003d3e63 FUN_003d38d4 +00000000003d3fac 00000000003d404b FUN_003d3fac +00000000003d4058 00000000003d4287 FUN_003d4058 +00000000003d429c 00000000003d42eb FUN_003d429c +00000000003d42ec 00000000003d4347 FUN_003d42ec +00000000003d4348 00000000003d4373 FUN_003d4348 +00000000003d4374 00000000003d4383 FUN_003d4374 +00000000003d4384 00000000003d43cb FUN_003d4384 +00000000003d43cc 00000000003d43db FUN_003d43cc +00000000003d43dc 00000000003d4407 FUN_003d43dc +00000000003d4408 00000000003d4417 FUN_003d4408 +00000000003d4418 00000000003d445f FUN_003d4418 +00000000003d4460 00000000003d446f FUN_003d4460 +00000000003d4470 00000000003d449b FUN_003d4470 +00000000003d449c 00000000003d4513 FUN_003d449c +00000000003d4538 00000000003d454f FUN_003d4538 +00000000003d4550 00000000003d4563 FUN_003d4550 +00000000003d4564 00000000003d4593 FUN_003d4564 +00000000003d4594 00000000003d45c3 FUN_003d4594 +00000000003d45c4 00000000003d45cb FUN_003d45c4 +00000000003d45cc 00000000003d465f FUN_003d45cc +00000000003d4660 00000000003d468b FUN_003d4660 +00000000003d468c 00000000003d46ff FUN_003d468c +00000000003d4724 00000000003d48bf FUN_003d4724 +00000000003d48c0 00000000003d49bb FUN_003d48c0 +00000000003d4a48 00000000003d4b2b FUN_003d4a48 +00000000003d4bb8 00000000003d4c73 FUN_003d4bb8 +00000000003d4cf8 00000000003d4df3 FUN_003d4cf8 +00000000003d4e4c 00000000003d4f17 FUN_003d4e4c +00000000003d4f9c 00000000003d5123 FUN_003d4f9c +00000000003d51ac 00000000003d523f FUN_003d51ac +00000000003d5240 00000000003d5463 FUN_003d5240 +00000000003d54bc 00000000003d5547 FUN_003d54bc +00000000003d5548 00000000003d55f3 FUN_003d5548 +00000000003d5678 00000000003d574b FUN_003d5678 +00000000003d57a4 00000000003d5853 FUN_003d57a4 +00000000003d58d8 00000000003d59df FUN_003d58d8 +00000000003d5a68 00000000003d5b43 FUN_003d5a68 +00000000003d5bc8 00000000003d5c93 FUN_003d5bc8 +00000000003d5d18 00000000003d5db7 FUN_003d5d18 +00000000003d5e40 00000000003d5f1b FUN_003d5e40 +00000000003d5fa0 00000000003d6077 FUN_003d5fa0 +00000000003d60fc 00000000003d61d3 FUN_003d60fc +00000000003d6258 00000000003d625f FUN_003d6258 +00000000003d6260 00000000003d6377 FUN_003d6260 +00000000003d638c 00000000003d6437 FUN_003d638c +00000000003d64bc 00000000003d64bf thunk_FUN_003d638c +00000000003d64c0 00000000003d64c3 thunk_FUN_003d638c +00000000003d64c4 00000000003d64c7 thunk_FUN_003daacc +00000000003d64c8 00000000003d64cb thunk_FUN_003daacc +00000000003d64cc 00000000003d655f FUN_003d64cc +00000000003d6560 00000000003d657b FUN_003d6560 +00000000003d657c 00000000003d6597 FUN_003d657c +00000000003d6598 00000000003d660f FUN_003d6598 +00000000003d6610 00000000003d6627 FUN_003d6610 +00000000003d6628 00000000003d663f FUN_003d6628 +00000000003d6640 00000000003d66ef FUN_003d6640 +00000000003d6774 00000000003d6777 thunk_FUN_003d6640 +00000000003d6778 00000000003d6827 FUN_003d6778 +00000000003d68ac 00000000003d68af thunk_FUN_003d6778 +00000000003d68b0 00000000003d695f FUN_003d68b0 +00000000003d69e4 00000000003d69e7 thunk_FUN_003d68b0 +00000000003d69e8 00000000003d6a97 FUN_003d69e8 +00000000003d6b1c 00000000003d6b1f thunk_FUN_003d69e8 +00000000003d6b20 00000000003d6bcf FUN_003d6b20 +00000000003d6c54 00000000003d6c57 thunk_FUN_003d6b20 +00000000003d6c58 00000000003d6d07 FUN_003d6c58 +00000000003d6d8c 00000000003d6d8f thunk_FUN_003d6c58 +00000000003d6d90 00000000003d6e3f FUN_003d6d90 +00000000003d6ec4 00000000003d6ec7 thunk_FUN_003d6d90 +00000000003d6ec8 00000000003d6f77 FUN_003d6ec8 +00000000003d6ffc 00000000003d6fff thunk_FUN_003d6ec8 +00000000003d7000 00000000003d70af FUN_003d7000 +00000000003d7134 00000000003d7137 thunk_FUN_003d7000 +00000000003d7138 00000000003d71e7 FUN_003d7138 +00000000003d726c 00000000003d726f thunk_FUN_003d7138 +00000000003d7270 00000000003d731f FUN_003d7270 +00000000003d73a4 00000000003d73a7 thunk_FUN_003d7270 +00000000003d73a8 00000000003d73d3 FUN_003d73a8 +00000000003d73d4 00000000003d744b FUN_003d73d4 +00000000003d7470 00000000003d7487 FUN_003d7470 +00000000003d7488 00000000003d749b FUN_003d7488 +00000000003d749c 00000000003d74cb FUN_003d749c +00000000003d74cc 00000000003d74fb FUN_003d74cc +00000000003d74fc 00000000003d7503 FUN_003d74fc +00000000003d7504 00000000003d755f FUN_003d7504 +00000000003d7560 00000000003d758b FUN_003d7560 +00000000003d758c 00000000003d75ff FUN_003d758c +00000000003d7624 00000000003d77bb FUN_003d7624 +00000000003d77bc 00000000003d78b7 FUN_003d77bc +00000000003d7944 00000000003d7a27 FUN_003d7944 +00000000003d7ab4 00000000003d7b6f FUN_003d7ab4 +00000000003d7bf4 00000000003d7cd7 FUN_003d7bf4 +00000000003d7d5c 00000000003d7e57 FUN_003d7d5c +00000000003d7ee0 00000000003d808b FUN_003d7ee0 +00000000003d80e4 00000000003d813f FUN_003d80e4 +00000000003d8140 00000000003d82a7 FUN_003d8140 +00000000003d832c 00000000003d837f FUN_003d832c +00000000003d8380 00000000003d8433 FUN_003d8380 +00000000003d84b8 00000000003d8563 FUN_003d84b8 +00000000003d85ec 00000000003d869b FUN_003d85ec +00000000003d8720 00000000003d882b FUN_003d8720 +00000000003d88b4 00000000003d899b FUN_003d88b4 +00000000003d8a20 00000000003d8af7 FUN_003d8a20 +00000000003d8b7c 00000000003d8c1b FUN_003d8b7c +00000000003d8ca4 00000000003d8d7f FUN_003d8ca4 +00000000003d8e04 00000000003d8edb FUN_003d8e04 +00000000003d8f60 00000000003d9037 FUN_003d8f60 +00000000003d90bc 00000000003d90c3 FUN_003d90bc +00000000003d90c4 00000000003d91f3 FUN_003d90c4 +00000000003d9208 00000000003d92b7 FUN_003d9208 +00000000003d933c 00000000003d954f FUN_003d933c +00000000003d95d0 00000000003d964f FUN_003d95d0 +00000000003d9650 00000000003d966b FUN_003d9650 +00000000003d966c 00000000003d9687 FUN_003d966c +00000000003d9688 00000000003d96ff FUN_003d9688 +00000000003d9700 00000000003d9717 FUN_003d9700 +00000000003d9718 00000000003d972f FUN_003d9718 +00000000003d9730 00000000003d97df FUN_003d9730 +00000000003d9864 00000000003d9867 thunk_FUN_003d9730 +00000000003d9868 00000000003d9917 FUN_003d9868 +00000000003d999c 00000000003d999f thunk_FUN_003d9868 +00000000003d99a0 00000000003d9a4f FUN_003d99a0 +00000000003d9ad4 00000000003d9ad7 thunk_FUN_003d99a0 +00000000003d9ad8 00000000003d9b87 FUN_003d9ad8 +00000000003d9c0c 00000000003d9c0f thunk_FUN_003d9ad8 +00000000003d9c10 00000000003d9cbf FUN_003d9c10 +00000000003d9d44 00000000003d9d47 thunk_FUN_003d9c10 +00000000003d9d48 00000000003d9df7 FUN_003d9d48 +00000000003d9e7c 00000000003d9e7f thunk_FUN_003d9d48 +00000000003d9e80 00000000003d9f2f FUN_003d9e80 +00000000003d9fb4 00000000003d9fb7 thunk_FUN_003d9e80 +00000000003d9fb8 00000000003da067 FUN_003d9fb8 +00000000003da0ec 00000000003da0ef thunk_FUN_003d9fb8 +00000000003da0f0 00000000003da19f FUN_003da0f0 +00000000003da224 00000000003da227 thunk_FUN_003da0f0 +00000000003da228 00000000003da2d7 FUN_003da228 +00000000003da35c 00000000003da35f thunk_FUN_003da228 +00000000003da360 00000000003da40f FUN_003da360 +00000000003da494 00000000003da497 thunk_FUN_003da360 +00000000003da498 00000000003da74f FUN_003da498 +00000000003da7b4 00000000003daa47 FUN_003da7b4 +00000000003daacc 00000000003dad8b FUN_003daacc +00000000003dae0c 00000000003db14b FUN_003dae0c +00000000003db200 00000000003db4bf FUN_003db200 +00000000003db554 00000000003db813 FUN_003db554 +00000000003db878 00000000003dbb0f FUN_003db878 +00000000003dbb94 00000000003dbe5f FUN_003dbb94 +00000000003dbef4 00000000003dbf93 FUN_003dbef4 +00000000003dbf94 00000000003dbfc7 FUN_003dbf94 +00000000003dbfc8 00000000003dbfeb FUN_003dbfc8 +00000000003dbfec 00000000003dc007 FUN_003dbfec +00000000003dc008 00000000003dc01b FUN_003dc008 +00000000003dc01c 00000000003dc027 FUN_003dc01c +00000000003dc028 00000000003dc033 FUN_003dc028 +00000000003dc034 00000000003dc03f FUN_003dc034 +00000000003dc040 00000000003dc04b FUN_003dc040 +00000000003dc04c 00000000003dc057 FUN_003dc04c +00000000003dc058 00000000003dc063 FUN_003dc058 +00000000003dc064 00000000003dc06f FUN_003dc064 +00000000003dc070 00000000003dc07b FUN_003dc070 +00000000003dc07c 00000000003dc087 FUN_003dc07c +00000000003dc088 00000000003dc093 FUN_003dc088 +00000000003dc094 00000000003dc0a3 FUN_003dc094 +00000000003dc0a4 00000000003dc0b3 FUN_003dc0a4 +00000000003dc0b4 00000000003dc0bf FUN_003dc0b4 +00000000003dc0c0 00000000003dc0cb FUN_003dc0c0 +00000000003dc0cc 00000000003dc0db FUN_003dc0cc +00000000003dc0dc 00000000003dc0e3 FUN_003dc0dc +00000000003dc0e4 00000000003dc0eb FUN_003dc0e4 +00000000003dc0ec 00000000003dc0ef FUN_003dc0ec +00000000003dc0f0 00000000003dc113 FUN_003dc0f0 +00000000003dc114 00000000003dc123 FUN_003dc114 +00000000003dc124 00000000003dc133 FUN_003dc124 +00000000003dc134 00000000003dc143 FUN_003dc134 +00000000003dc144 00000000003dc153 FUN_003dc144 +00000000003dc154 00000000003dc163 FUN_003dc154 +00000000003dc164 00000000003dc173 FUN_003dc164 +00000000003dc174 00000000003dc183 FUN_003dc174 +00000000003dc184 00000000003dc193 FUN_003dc184 +00000000003dc194 00000000003dc1a3 FUN_003dc194 +00000000003dc1a4 00000000003dc1d3 FUN_003dc1a4 +00000000003dc1d4 00000000003dc203 FUN_003dc1d4 +00000000003dc204 00000000003dc233 FUN_003dc204 +00000000003dc234 00000000003dc263 FUN_003dc234 +00000000003dc264 00000000003dc293 FUN_003dc264 +00000000003dc294 00000000003dc2c3 FUN_003dc294 +00000000003dc2c4 00000000003dc2f3 FUN_003dc2c4 +00000000003dc2f4 00000000003dc323 FUN_003dc2f4 +00000000003dc324 00000000003dc353 FUN_003dc324 +00000000003dc354 00000000003dc383 FUN_003dc354 +00000000003dc384 00000000003dc3b3 FUN_003dc384 +00000000003dc3b4 00000000003dc417 FUN_003dc3b4 +00000000003dc418 00000000003dc47b FUN_003dc418 +00000000003dc47c 00000000003dc4d3 FUN_003dc47c +00000000003dc4d4 00000000003dc4f7 FUN_003dc4d4 +00000000003dc4f8 00000000003dc51b FUN_003dc4f8 +00000000003dc51c 00000000003dc54b FUN_003dc51c +00000000003dc54c 00000000003dc57b FUN_003dc54c +00000000003dc57c 00000000003dc5ab FUN_003dc57c +00000000003dc5ac 00000000003dc5db FUN_003dc5ac +00000000003dc5dc 00000000003dc5ff FUN_003dc5dc +00000000003dc600 00000000003dc62f FUN_003dc600 +00000000003dc630 00000000003dc65f FUN_003dc630 +00000000003dc660 00000000003dc68f FUN_003dc660 +00000000003dc690 00000000003dc6bf FUN_003dc690 +00000000003dc6c0 00000000003dc6ef FUN_003dc6c0 +00000000003dc6f0 00000000003dc71f FUN_003dc6f0 +00000000003dc720 00000000003dc74f FUN_003dc720 +00000000003dc750 00000000003dc77f FUN_003dc750 +00000000003dc780 00000000003dc7af FUN_003dc780 +00000000003dc7c4 00000000003dc7fb FUN_003dc7c4 +00000000003dc810 00000000003dc83f FUN_003dc810 +00000000003dc854 00000000003dc88b FUN_003dc854 +00000000003dc8a0 00000000003dc8cf FUN_003dc8a0 +00000000003dc8e4 00000000003dc91b FUN_003dc8e4 +00000000003dc930 00000000003dc95f FUN_003dc930 +00000000003dc974 00000000003dc9ab FUN_003dc974 +00000000003dc9c0 00000000003dca23 FUN_003dc9c0 +00000000003dca38 00000000003dca5b FUN_003dca38 +00000000003dca5c 00000000003dca6b FUN_003dca5c +00000000003dca6c 00000000003dca9b FUN_003dca6c +00000000003dca9c 00000000003dcadf FUN_003dca9c +00000000003dcae0 00000000003dcafb FUN_003dcae0 +00000000003dcafc 00000000003dcb33 FUN_003dcafc +00000000003dcb34 00000000003dcd97 FUN_003dcb34 +00000000003dcdc0 00000000003dcfcb FUN_003dcdc0 +00000000003dd040 00000000003dd1bf FUN_003dd040 +00000000003dd1c0 00000000003dd203 FUN_003dd1c0 +00000000003dd218 00000000003dd25b FUN_003dd218 +00000000003dd270 00000000003dd2ab FUN_003dd270 +00000000003dd2c0 00000000003dd2db FUN_003dd2c0 +00000000003dd2dc 00000000003dd2f7 FUN_003dd2dc +00000000003dd2f8 00000000003dd323 FUN_003dd2f8 +00000000003dd324 00000000003dd34f FUN_003dd324 +00000000003dd350 00000000003dd37b FUN_003dd350 +00000000003dd37c 00000000003dd3a7 FUN_003dd37c +00000000003dd3a8 00000000003dd3c3 FUN_003dd3a8 +00000000003dd3c4 00000000003dd3df FUN_003dd3c4 +00000000003dd3e0 00000000003dd3fb FUN_003dd3e0 +00000000003dd3fc 00000000003dd43f FUN_003dd3fc +00000000003dd454 00000000003dd497 FUN_003dd454 +00000000003dd4ac 00000000003dd4e7 FUN_003dd4ac +00000000003dd4fc 00000000003dd517 FUN_003dd4fc +00000000003dd518 00000000003dd533 FUN_003dd518 +00000000003dd534 00000000003dd55f FUN_003dd534 +00000000003dd560 00000000003dd58b FUN_003dd560 +00000000003dd58c 00000000003dd5b7 FUN_003dd58c +00000000003dd5b8 00000000003dd5e3 FUN_003dd5b8 +00000000003dd5e4 00000000003dd5ff FUN_003dd5e4 +00000000003dd600 00000000003dd61b FUN_003dd600 +00000000003dd61c 00000000003dd637 FUN_003dd61c +00000000003dd638 00000000003dd6a7 FUN_003dd638 +00000000003dd6a8 00000000003dd717 FUN_003dd6a8 +00000000003dd718 00000000003dd7d7 FUN_003dd718 +00000000003dd800 00000000003dd8bf FUN_003dd800 +00000000003dd8e8 00000000003dd903 FUN_003dd8e8 +00000000003dd904 00000000003dd933 FUN_003dd904 +00000000003dd934 00000000003dd963 FUN_003dd934 +00000000003dd964 00000000003dd97f FUN_003dd964 +00000000003dd980 00000000003dd99b FUN_003dd980 +00000000003dd99c 00000000003dd9b7 FUN_003dd99c +00000000003dd9b8 00000000003dd9f7 FUN_003dd9b8 +00000000003dda0c 00000000003dda4b FUN_003dda0c +00000000003dda60 00000000003dda9b FUN_003dda60 +00000000003ddab0 00000000003ddacb FUN_003ddab0 +00000000003ddacc 00000000003ddae7 FUN_003ddacc +00000000003ddae8 00000000003ddb13 FUN_003ddae8 +00000000003ddb14 00000000003ddb3f FUN_003ddb14 +00000000003ddb40 00000000003ddb6b FUN_003ddb40 +00000000003ddb6c 00000000003ddbaf FUN_003ddb6c +00000000003ddbb0 00000000003ddc67 FUN_003ddbb0 +00000000003ddc90 00000000003ddcab FUN_003ddc90 +00000000003ddcac 00000000003ddcc7 FUN_003ddcac +00000000003ddcc8 00000000003ddce3 FUN_003ddcc8 +00000000003ddce4 00000000003ddcff FUN_003ddce4 +00000000003ddd00 00000000003ddd1b FUN_003ddd00 +00000000003ddd1c 00000000003ddd37 FUN_003ddd1c +00000000003ddd38 00000000003ddd53 FUN_003ddd38 +00000000003ddd54 00000000003ddd6f FUN_003ddd54 +00000000003ddd70 00000000003ddd8b FUN_003ddd70 +00000000003ddd8c 00000000003ddda7 FUN_003ddd8c +00000000003ddda8 00000000003dddc3 FUN_003ddda8 +00000000003dddc4 00000000003ddddf FUN_003dddc4 +00000000003ddde0 00000000003dddfb FUN_003ddde0 +00000000003dddfc 00000000003dde17 FUN_003dddfc +00000000003dde18 00000000003dde33 FUN_003dde18 +00000000003dde34 00000000003dde4f FUN_003dde34 +00000000003dde50 00000000003dde6b FUN_003dde50 +00000000003dde6c 00000000003dde87 FUN_003dde6c +00000000003dde88 00000000003ddea3 FUN_003dde88 +00000000003ddea4 00000000003ddebf FUN_003ddea4 +00000000003ddec0 00000000003ddedb FUN_003ddec0 +00000000003ddedc 00000000003ddf27 FUN_003ddedc +00000000003ddf3c 00000000003ddf87 FUN_003ddf3c +00000000003ddf9c 00000000003de03b FUN_003ddf9c +00000000003de080 00000000003de09b FUN_003de080 +00000000003de09c 00000000003de0b7 FUN_003de09c +00000000003de0b8 00000000003de0d3 FUN_003de0b8 +00000000003de0d4 00000000003de0d7 FUN_003de0d4 +00000000003de0d8 00000000003de0f3 FUN_003de0d8 +00000000003de0f4 00000000003de14b FUN_003de0f4 +00000000003de14c 00000000003de1a3 FUN_003de14c +00000000003de1a4 00000000003de237 FUN_003de1a4 +00000000003de238 00000000003de2cb FUN_003de238 +00000000003de2cc 00000000003de3a7 FUN_003de2cc +00000000003de3a8 00000000003de3c3 FUN_003de3a8 +00000000003de3c4 00000000003de3df FUN_003de3c4 +00000000003de3e0 00000000003de3fb FUN_003de3e0 +00000000003de3fc 00000000003de417 FUN_003de3fc +00000000003de418 00000000003de433 FUN_003de418 +00000000003de434 00000000003de44f FUN_003de434 +00000000003de450 00000000003de46b FUN_003de450 +00000000003de46c 00000000003de487 FUN_003de46c +00000000003de488 00000000003de4a3 FUN_003de488 +00000000003de4a4 00000000003de4bf FUN_003de4a4 +00000000003de4c0 00000000003de4db FUN_003de4c0 +00000000003de4dc 00000000003de517 FUN_003de4dc +00000000003de52c 00000000003de567 FUN_003de52c +00000000003de57c 00000000003de597 FUN_003de57c +00000000003de598 00000000003de5b3 FUN_003de598 +00000000003de5b4 00000000003de5df FUN_003de5b4 +00000000003de5e0 00000000003de5fb FUN_003de5e0 +00000000003de5fc 00000000003de603 FUN_003de5fc +00000000003de604 00000000003de61b FUN_003de604 +00000000003de61c 00000000003de6c3 FUN_003de61c +00000000003de708 00000000003de797 FUN_003de708 +00000000003de7ac 00000000003de7e7 FUN_003de7ac +00000000003de7fc 00000000003de843 FUN_003de7fc +00000000003de844 00000000003de85f FUN_003de844 +00000000003de860 00000000003de88b FUN_003de860 +00000000003de88c 00000000003de8a7 FUN_003de88c +00000000003de8a8 00000000003de94f FUN_003de8a8 +00000000003de994 00000000003de9fb FUN_003de994 +00000000003de9fc 00000000003dec13 FUN_003de9fc +00000000003dec14 00000000003def47 FUN_003dec14 +00000000003def48 00000000003df0f7 FUN_003def48 +00000000003df0f8 00000000003df15f FUN_003df0f8 +00000000003df160 00000000003df1c7 FUN_003df160 +00000000003df1c8 00000000003df22f FUN_003df1c8 +00000000003df230 00000000003df6df FUN_003df230 +00000000003df7c4 00000000003df82b FUN_003df7c4 +00000000003df82c 00000000003df893 FUN_003df82c +00000000003df894 00000000003df8fb FUN_003df894 +00000000003df8fc 00000000003dfcf3 FUN_003df8fc +00000000003dfe2c 00000000003dfe93 FUN_003dfe2c +00000000003dfe94 00000000003e024b FUN_003dfe94 +00000000003e0384 00000000003e03eb FUN_003e0384 +00000000003e03ec 00000000003e0453 FUN_003e03ec +00000000003e0454 00000000003e04bb FUN_003e0454 +00000000003e04bc 00000000003e05c7 FUN_003e04bc +00000000003e05c8 00000000003e062f FUN_003e05c8 +00000000003e0630 00000000003e0697 FUN_003e0630 +00000000003e0698 00000000003e06ff FUN_003e0698 +00000000003e0700 00000000003e076b FUN_003e0700 +00000000003e076c 00000000003e07d7 FUN_003e076c +00000000003e07d8 00000000003e0843 FUN_003e07d8 +00000000003e0844 00000000003e08af FUN_003e0844 +00000000003e08b0 00000000003e091b FUN_003e08b0 +00000000003e091c 00000000003e0987 FUN_003e091c +00000000003e0988 00000000003e09f3 FUN_003e0988 +00000000003e09f4 00000000003e0a5f FUN_003e09f4 +00000000003e0a60 00000000003e0acb FUN_003e0a60 +00000000003e0acc 00000000003e0b37 FUN_003e0acc +00000000003e0b38 00000000003e0ba3 FUN_003e0b38 +00000000003e0ba4 00000000003e0c0f FUN_003e0ba4 +00000000003e0c10 00000000003e0c7b FUN_003e0c10 +00000000003e0c7c 00000000003e149b FUN_003e0c7c +00000000003e149c 00000000003e154b FUN_003e149c +00000000003e154c 00000000003e159f FUN_003e154c +00000000003e15a0 00000000003e1b33 FUN_003e15a0 +00000000003e1b44 00000000003e20d7 FUN_003e1b44 +00000000003e20e8 00000000003e22ef FUN_003e20e8 +00000000003e232c 00000000003e236f FUN_003e232c +00000000003e2370 00000000003e2567 FUN_003e2370 +00000000003e2568 00000000003e25a7 FUN_003e2568 +00000000003e25a8 00000000003e290f FUN_003e25a8 +00000000003e2940 00000000003e2957 FUN_003e2940 +00000000003e2958 00000000003e2cab FUN_003e2958 +00000000003e2cdc 00000000003e2cf3 FUN_003e2cdc +00000000003e2cf4 00000000003e2d9b FUN_003e2cf4 +00000000003e2d9c 00000000003e300b FUN_003e2d9c +00000000003e303c 00000000003e3257 FUN_003e303c +00000000003e3288 00000000003e329b FUN_003e3288 +00000000003e329c 00000000003e34cf FUN_003e329c +00000000003e3500 00000000003e3513 FUN_003e3500 +00000000003e3514 00000000003e356f FUN_003e3514 +00000000003e3570 00000000003e3617 FUN_003e3570 +00000000003e3618 00000000003e3887 FUN_003e3618 +00000000003e38b8 00000000003e38cb FUN_003e38b8 +00000000003e38cc 00000000003e3aff FUN_003e38cc +00000000003e3b30 00000000003e3b43 FUN_003e3b30 +00000000003e3b44 00000000003e3c23 FUN_003e3b44 +00000000003e3c54 00000000003e3d33 FUN_003e3c54 +00000000003e3d64 00000000003e3e17 FUN_003e3d64 +00000000003e3e48 00000000003e3ecf FUN_003e3e48 +00000000003e3ed0 00000000003e4243 FUN_003e3ed0 +00000000003e4244 00000000003e466f FUN_003e4244 +00000000003e4670 00000000003e48b7 FUN_003e4670 +00000000003e48b8 00000000003e4b77 FUN_003e48b8 +00000000003e4b78 00000000003e5b57 FUN_003e4b78 +00000000003e5b58 00000000003e5cc3 FUN_003e5b58 +00000000003e5cc4 00000000003e5e2f FUN_003e5cc4 +00000000003e5e30 00000000003e6b67 FUN_003e5e30 +00000000003e6bbc 00000000003e78eb FUN_003e6bbc +00000000003e7940 00000000003e7a3f FUN_003e7940 +00000000003e7a68 00000000003e7c2f FUN_003e7a68 +00000000003e7c58 00000000003e88bb FUN_003e7c58 +00000000003e88e4 00000000003e8b03 FUN_003e88e4 +00000000003e8b2c 00000000003e8d4b FUN_003e8b2c +00000000003e8d74 00000000003e8f93 FUN_003e8d74 +00000000003e8fbc 00000000003e992b FUN_003e8fbc +00000000003e9958 00000000003e996b FUN_003e9958 +00000000003e996c 00000000003e9d53 FUN_003e996c +00000000003e9d54 00000000003ea6ef FUN_003e9d54 +00000000003ea71c 00000000003ea72f FUN_003ea71c +00000000003ea730 00000000003eb07f FUN_003ea730 +00000000003eb0ac 00000000003eb0bf FUN_003eb0ac +00000000003eb0c0 00000000003eba0f FUN_003eb0c0 +00000000003eba3c 00000000003eba4f FUN_003eba3c +00000000003eba50 00000000003ebabb FUN_003eba50 +00000000003ebabc 00000000003ec42b FUN_003ebabc +00000000003ec458 00000000003ec46b FUN_003ec458 +00000000003ec46c 00000000003ecdbb FUN_003ec46c +00000000003ecde8 00000000003ecdfb FUN_003ecde8 +00000000003ecdfc 00000000003ecdff FUN_003ecdfc +00000000003ece00 00000000003ece03 operator.delete +00000000003ece04 00000000003ece1b FUN_003ece04 +00000000003ece1c 00000000003ece53 FUN_003ece1c +00000000003ece54 00000000003ece5b FUN_003ece54 +00000000003ece5c 00000000003ed123 FUN_003ece5c +00000000003ed188 00000000003ed343 FUN_003ed188 +00000000003ed3c4 00000000003ed427 FUN_003ed3c4 +00000000003ed450 00000000003ed4bb FUN_003ed450 +00000000003ed4bc 00000000003ed4c7 FUN_003ed4bc +00000000003ed4c8 00000000003ed63b FUN_003ed4c8 +00000000003ed668 00000000003ed707 FUN_003ed668 +00000000003ed708 00000000003ed773 FUN_003ed708 +00000000003ed774 00000000003ed95f FUN_003ed774 +00000000003ed980 00000000003edb07 FUN_003ed980 +00000000003edb10 00000000003edb5f FUN_003edb10 +00000000003edb60 00000000003ede6b FUN_003edb60 +00000000003edeb4 00000000003edf3f FUN_003edeb4 +00000000003edf40 00000000003ee003 FUN_003edf40 +00000000003ee004 00000000003ee0cb FUN_003ee004 +00000000003ee0cc 00000000003ee15f FUN_003ee0cc +00000000003ee160 00000000003eecc3 FUN_003ee160 +00000000003eedb4 00000000003eedf7 FUN_003eedb4 +00000000003eedf8 00000000003eee6f FUN_003eedf8 +00000000003eee70 00000000003ef0c3 FUN_003eee70 +00000000003ef0c4 00000000003ef167 FUN_003ef0c4 +00000000003ef168 00000000003ef31b FUN_003ef168 +00000000003ef31c 00000000003ef343 FUN_003ef31c +00000000003ef344 00000000003ef36b FUN_003ef344 +00000000003ef36c 00000000003ef38b FUN_003ef36c +00000000003ef38c 00000000003ef3ab FUN_003ef38c +00000000003ef3ac 00000000003ef3bf FUN_003ef3ac +00000000003ef3c0 00000000003ef3d3 FUN_003ef3c0 +00000000003ef3d4 00000000003ef407 FUN_003ef3d4 +00000000003ef408 00000000003ef43b FUN_003ef408 +00000000003ef43c 00000000003ef463 FUN_003ef43c +00000000003ef464 00000000003ef48b FUN_003ef464 +00000000003ef48c 00000000003ef4ef FUN_003ef48c +00000000003ef4f0 00000000003ef4f7 FUN_003ef4f0 +00000000003ef4f8 00000000003ef4ff FUN_003ef4f8 +00000000003ef500 00000000003ef557 FUN_003ef500 +00000000003ef558 00000000003ef5af FUN_003ef558 +00000000003ef5b0 00000000003ef5d7 FUN_003ef5b0 +00000000003ef5d8 00000000003ef64b FUN_003ef5d8 +00000000003ef64c 00000000003ef673 FUN_003ef64c +00000000003ef674 00000000003ef6df FUN_003ef674 +00000000003ef6e0 00000000003ef743 FUN_003ef6e0 +00000000003ef744 00000000003ef753 FUN_003ef744 +00000000003ef754 00000000003ef7ab FUN_003ef754 +00000000003ef7ac 00000000003ef7e7 FUN_003ef7ac +00000000003ef7e8 00000000003ef823 FUN_003ef7e8 +00000000003ef824 00000000003ef82f FUN_003ef824 +00000000003ef830 00000000003ef8bb FUN_003ef830 +00000000003ef8bc 00000000003efb37 FUN_003ef8bc +00000000003efbec 00000000003efbf7 FUN_003efbec +00000000003efbf8 00000000003efc4b FUN_003efbf8 +00000000003efc4c 00000000003efcb7 FUN_003efc4c +00000000003efcb8 00000000003efcbf FUN_003efcb8 +00000000003efcc0 00000000003efd2b FUN_003efcc0 +00000000003efd2c 00000000003efd33 FUN_003efd2c +00000000003efd34 00000000003efd43 FUN_003efd34 +00000000003efd44 00000000003efecf FUN_003efd44 +00000000003efed0 00000000003f005b FUN_003efed0 +00000000003f005c 00000000003f009f FUN_003f005c +00000000003f00b4 00000000003f00ff FUN_003f00b4 +00000000003f0114 00000000003f0157 FUN_003f0114 +00000000003f016c 00000000003f01b7 FUN_003f016c +00000000003f01cc 00000000003f032f FUN_003f01cc +00000000003f0330 00000000003f0493 FUN_003f0330 +00000000003f0494 00000000003f04d7 FUN_003f0494 +00000000003f04ec 00000000003f0537 FUN_003f04ec +00000000003f054c 00000000003f058f FUN_003f054c +00000000003f05a4 00000000003f05ef FUN_003f05a4 +00000000003f0604 00000000003f0723 FUN_003f0604 +00000000003f0724 00000000003f0767 FUN_003f0724 +00000000003f077c 00000000003f07c7 FUN_003f077c +00000000003f07dc 00000000003f0a3f FUN_003f07dc +00000000003f0a40 00000000003f0a83 FUN_003f0a40 +00000000003f0a98 00000000003f0ae3 FUN_003f0a98 +00000000003f0af8 00000000003f0b1b FUN_003f0af8 +00000000003f0b1c 00000000003f0b2b FUN_003f0b1c +00000000003f0b2c 00000000003f0b6b FUN_003f0b2c +00000000003f0b6c 00000000003f0b7b FUN_003f0b6c +00000000003f0b7c 00000000003f0b9f FUN_003f0b7c +00000000003f0ba0 00000000003f0baf FUN_003f0ba0 +00000000003f0bb0 00000000003f0bef FUN_003f0bb0 +00000000003f0bf0 00000000003f0bff FUN_003f0bf0 +00000000003f0c00 00000000003f0c27 FUN_003f0c00 +00000000003f0c28 00000000003f0c9b FUN_003f0c28 +00000000003f0cc0 00000000003f0cd7 FUN_003f0cc0 +00000000003f0cd8 00000000003f0ceb FUN_003f0cd8 +00000000003f0cec 00000000003f0d1b FUN_003f0cec +00000000003f0d1c 00000000003f0d4b FUN_003f0d1c +00000000003f0d4c 00000000003f0db7 FUN_003f0d4c +00000000003f0db8 00000000003f0e1b FUN_003f0db8 +00000000003f0ea0 00000000003f0f63 FUN_003f0ea0 +00000000003f0fe8 00000000003f106f FUN_003f0fe8 +00000000003f10f4 00000000003f117b FUN_003f10f4 +00000000003f1200 00000000003f1227 FUN_003f1200 +00000000003f1228 00000000003f1297 FUN_003f1228 +00000000003f12bc 00000000003f1337 FUN_003f12bc +00000000003f1338 00000000003f13bb FUN_003f1338 +00000000003f13bc 00000000003f14c3 FUN_003f13bc +00000000003f1564 00000000003f1683 FUN_003f1564 +00000000003f1724 00000000003f182b FUN_003f1724 +00000000003f18cc 00000000003f18d3 FUN_003f18cc +00000000003f18d4 00000000003f194f FUN_003f18d4 +00000000003f1950 00000000003f1957 FUN_003f1950 +00000000003f1958 00000000003f195b thunk_FUN_003f0db8 +00000000003f195c 00000000003f19ef FUN_003f195c +00000000003f19f0 00000000003f1a0b FUN_003f19f0 +00000000003f1a0c 00000000003f1a27 FUN_003f1a0c +00000000003f1a28 00000000003f1a9f FUN_003f1a28 +00000000003f1aa0 00000000003f1ab7 FUN_003f1aa0 +00000000003f1ab8 00000000003f1acf FUN_003f1ab8 +00000000003f1ad0 00000000003f1ea7 FUN_003f1ad0 +00000000003f1f18 00000000003f1f3b FUN_003f1f18 +00000000003f1f3c 00000000003f1f5f FUN_003f1f3c +00000000003f1f60 00000000003f1f83 FUN_003f1f60 +00000000003f1f84 00000000003f1fef FUN_003f1f84 +00000000003f1ff0 00000000003f205b FUN_003f1ff0 +00000000003f205c 00000000003f20c7 FUN_003f205c +00000000003f20c8 00000000003f2287 FUN_003f20c8 +00000000003f22f8 00000000003f22fb thunk_FUN_003f20c8 +00000000003f22fc 00000000003f233f FUN_003f22fc +00000000003f2340 00000000003f237f FUN_003f2340 +00000000003f2380 00000000003f253f FUN_003f2380 +00000000003f25b0 00000000003f25b3 thunk_FUN_003f2380 +00000000003f25b4 00000000003f25bb FUN_003f25b4 +00000000003f25bc 00000000003f25c3 FUN_003f25bc +00000000003f25c4 00000000003f2783 FUN_003f25c4 +00000000003f27f4 00000000003f27f7 thunk_FUN_003f25c4 +00000000003f27f8 00000000003f29b7 FUN_003f27f8 +00000000003f2a28 00000000003f2a2b thunk_FUN_003f27f8 +00000000003f2a2c 00000000003f2beb FUN_003f2a2c +00000000003f2c5c 00000000003f2c5f thunk_FUN_003f2a2c +00000000003f2c60 00000000003f2e2b FUN_003f2c60 +00000000003f2e9c 00000000003f2e9f thunk_FUN_003f2c60 +00000000003f2ea0 00000000003f2ea7 FUN_003f2ea0 +00000000003f2ea8 00000000003f307b FUN_003f2ea8 +00000000003f30ec 00000000003f30ef thunk_FUN_003f2ea8 +00000000003f30f0 00000000003f32af FUN_003f30f0 +00000000003f3320 00000000003f3323 thunk_FUN_003f30f0 +00000000003f3324 00000000003f334b FUN_003f3324 +00000000003f334c 00000000003f33bf FUN_003f334c +00000000003f33e4 00000000003f33fb FUN_003f33e4 +00000000003f33fc 00000000003f340f FUN_003f33fc +00000000003f3410 00000000003f343f FUN_003f3410 +00000000003f3440 00000000003f346f FUN_003f3440 +00000000003f3470 00000000003f34db FUN_003f3470 +00000000003f34dc 00000000003f353f FUN_003f34dc +00000000003f35c4 00000000003f3687 FUN_003f35c4 +00000000003f370c 00000000003f3793 FUN_003f370c +00000000003f3818 00000000003f389f FUN_003f3818 +00000000003f3924 00000000003f394b FUN_003f3924 +00000000003f394c 00000000003f39bb FUN_003f394c +00000000003f39e0 00000000003f3a5b FUN_003f39e0 +00000000003f3a5c 00000000003f3adf FUN_003f3a5c +00000000003f3ae0 00000000003f3be7 FUN_003f3ae0 +00000000003f3c88 00000000003f3da7 FUN_003f3c88 +00000000003f3e48 00000000003f3f4f FUN_003f3e48 +00000000003f3ff0 00000000003f3ff7 FUN_003f3ff0 +00000000003f3ff8 00000000003f4047 FUN_003f3ff8 +00000000003f4048 00000000003f404f FUN_003f4048 +00000000003f4050 00000000003f4053 thunk_FUN_003f34dc +00000000003f4054 00000000003f40d3 FUN_003f4054 +00000000003f40d4 00000000003f40ef FUN_003f40d4 +00000000003f40f0 00000000003f410b FUN_003f40f0 +00000000003f410c 00000000003f4183 FUN_003f410c +00000000003f4184 00000000003f419b FUN_003f4184 +00000000003f419c 00000000003f41b3 FUN_003f419c +00000000003f41b4 00000000003f4563 FUN_003f41b4 +00000000003f45d4 00000000003f45f7 FUN_003f45d4 +00000000003f45f8 00000000003f464f FUN_003f45f8 +00000000003f4650 00000000003f46bb FUN_003f4650 +00000000003f46bc 00000000003f47b3 FUN_003f46bc +00000000003f4854 00000000003f49f7 FUN_003f4854 +00000000003f4a68 00000000003f4a6b thunk_FUN_003f4854 +00000000003f4a6c 00000000003f4aaf FUN_003f4a6c +00000000003f4ab0 00000000003f4aef FUN_003f4ab0 +00000000003f4af0 00000000003f4c93 FUN_003f4af0 +00000000003f4d04 00000000003f4d07 thunk_FUN_003f4af0 +00000000003f4d08 00000000003f4d0f FUN_003f4d08 +00000000003f4d10 00000000003f4d17 FUN_003f4d10 +00000000003f4d18 00000000003f4ebb FUN_003f4d18 +00000000003f4f2c 00000000003f4f2f thunk_FUN_003f4d18 +00000000003f4f30 00000000003f50d3 FUN_003f4f30 +00000000003f5144 00000000003f5147 thunk_FUN_003f4f30 +00000000003f5148 00000000003f52eb FUN_003f5148 +00000000003f535c 00000000003f535f thunk_FUN_003f5148 +00000000003f5360 00000000003f5503 FUN_003f5360 +00000000003f5574 00000000003f5577 thunk_FUN_003f5360 +00000000003f5578 00000000003f557f FUN_003f5578 +00000000003f5580 00000000003f572b FUN_003f5580 +00000000003f579c 00000000003f579f thunk_FUN_003f5580 +00000000003f57a0 00000000003f5943 FUN_003f57a0 +00000000003f59b4 00000000003f59b7 thunk_FUN_003f57a0 +00000000003f59b8 00000000003f59ef FUN_003f59b8 +00000000003f59f0 00000000003f5a33 FUN_003f59f0 +00000000003f5a34 00000000003f5a9b FUN_003f5a34 +00000000003f5a9c 00000000003f5c23 FUN_003f5a9c +00000000003f5c24 00000000003f5d57 FUN_003f5c24 +00000000003f5d58 00000000003f5d93 FUN_003f5d58 +00000000003f5d94 00000000003f5df3 FUN_003f5d94 +00000000003f5df4 00000000003f5f6b FUN_003f5df4 +00000000003f5f6c 00000000003f60b7 FUN_003f5f6c +00000000003f60b8 00000000003f60f7 FUN_003f60b8 +00000000003f60f8 00000000003f619f FUN_003f60f8 +00000000003f61a0 00000000003f6253 FUN_003f61a0 +00000000003f6254 00000000003f62ef FUN_003f6254 +00000000003f62f0 00000000003f638b FUN_003f62f0 +00000000003f638c 00000000003f642f FUN_003f638c +00000000003f6430 00000000003f64d3 FUN_003f6430 +00000000003f64d4 00000000003f659f FUN_003f64d4 +00000000003f65a0 00000000003f65af FUN_003f65a0 +00000000003f65b0 00000000003f667b FUN_003f65b0 +00000000003f667c 00000000003f668b FUN_003f667c +00000000003f668c 00000000003f6757 FUN_003f668c +00000000003f6758 00000000003f6767 FUN_003f6758 +00000000003f6768 00000000003f6833 FUN_003f6768 +00000000003f6834 00000000003f6843 FUN_003f6834 +00000000003f6844 00000000003f6917 FUN_003f6844 +00000000003f6918 00000000003f6927 FUN_003f6918 +00000000003f6928 00000000003f69fb FUN_003f6928 +00000000003f69fc 00000000003f6a0b FUN_003f69fc +00000000003f6a0c 00000000003f6adf FUN_003f6a0c +00000000003f6ae0 00000000003f6aef FUN_003f6ae0 +00000000003f6af0 00000000003f6bc3 FUN_003f6af0 +00000000003f6bc4 00000000003f6bd3 FUN_003f6bc4 +00000000003f6bd4 00000000003f6cab FUN_003f6bd4 +00000000003f6cac 00000000003f6cb3 FUN_003f6cac +00000000003f6cb4 00000000003f6cc3 FUN_003f6cb4 +00000000003f6cc4 00000000003f6d9b FUN_003f6cc4 +00000000003f6d9c 00000000003f6da3 FUN_003f6d9c +00000000003f6da4 00000000003f6db3 FUN_003f6da4 +00000000003f6db4 00000000003f6e93 FUN_003f6db4 +00000000003f6e94 00000000003f6e9b FUN_003f6e94 +00000000003f6e9c 00000000003f6eab FUN_003f6e9c +00000000003f6eac 00000000003f6f8b FUN_003f6eac +00000000003f6f8c 00000000003f6f93 FUN_003f6f8c +00000000003f6f94 00000000003f6fa3 FUN_003f6f94 +00000000003f6fa4 00000000003f7023 FUN_003f6fa4 +00000000003f8018 00000000003f81a3 FUN_003f8018 +00000000003f81cc 00000000003f8273 FUN_003f81cc +00000000003f8274 00000000003f8293 FUN_003f8274 +00000000003f8294 00000000003f82df FUN_003f8294 +00000000003f82e0 00000000003f8343 FUN_003f82e0 +00000000003f8344 00000000003f83ef FUN_003f8344 +00000000003f8410 00000000003f860b FUN_003f8410 +00000000003f8634 00000000003f865f FUN_003f8634 +00000000003f8660 00000000003f86ab FUN_003f8660 +00000000003f86ac 00000000003f8797 FUN_003f86ac +00000000003f87f0 00000000003f88fb FUN_003f87f0 +00000000003f8960 00000000003f8a83 FUN_003f8960 +00000000003f8b00 00000000003f8c3f FUN_003f8b00 +00000000003f8cc8 00000000003f8d8f FUN_003f8cc8 +00000000003f8d90 00000000003f8d97 FUN_003f8d90 +00000000003f8d98 00000000003f8f23 FUN_003f8d98 +00000000003f8f4c 00000000003f8f9b FUN_003f8f4c +00000000003f8f9c 00000000003f907f FUN_003f8f9c +00000000003f90d8 00000000003f91df FUN_003f90d8 +00000000003f9244 00000000003f935f FUN_003f9244 +00000000003f93dc 00000000003f9517 FUN_003f93dc +00000000003f95a0 00000000003f9667 FUN_003f95a0 +00000000003f9668 00000000003f966f FUN_003f9668 +00000000003f9670 00000000003f97fb FUN_003f9670 +00000000003f9824 00000000003f9873 FUN_003f9824 +00000000003f9874 00000000003f999f FUN_003f9874 +00000000003f9a08 00000000003f9b3f FUN_003f9a08 +00000000003f9bb4 00000000003f9d17 FUN_003f9bb4 +00000000003f9da4 00000000003f9f0f FUN_003f9da4 +00000000003f9fac 00000000003fa0af FUN_003f9fac +00000000003fa0b0 00000000003fa0b7 FUN_003fa0b0 +00000000003fa0b8 00000000003fa243 FUN_003fa0b8 +00000000003fa26c 00000000003fa2bb FUN_003fa26c +00000000003fa2bc 00000000003fa32f FUN_003fa2bc +00000000003fa330 00000000003fa4bb FUN_003fa330 +00000000003fa4e4 00000000003fa58f FUN_003fa4e4 +00000000003fa590 00000000003fa5af FUN_003fa590 +00000000003fa5b0 00000000003fa5fb FUN_003fa5b0 +00000000003fa5fc 00000000003fa65f FUN_003fa5fc +00000000003fa660 00000000003fa70b FUN_003fa660 +00000000003fa72c 00000000003fa923 FUN_003fa72c +00000000003fa94c 00000000003fa977 FUN_003fa94c +00000000003fa978 00000000003fa9b7 FUN_003fa978 +00000000003fa9b8 00000000003faaa3 FUN_003fa9b8 +00000000003faafc 00000000003fac07 FUN_003faafc +00000000003fac6c 00000000003fad8f FUN_003fac6c +00000000003fae0c 00000000003faf4b FUN_003fae0c +00000000003fafd4 00000000003fb09b FUN_003fafd4 +00000000003fb09c 00000000003fb0a3 FUN_003fb09c +00000000003fb0a4 00000000003fb22f FUN_003fb0a4 +00000000003fb258 00000000003fb2a7 FUN_003fb258 +00000000003fb2a8 00000000003fb38b FUN_003fb2a8 +00000000003fb3e4 00000000003fb4eb FUN_003fb3e4 +00000000003fb550 00000000003fb66b FUN_003fb550 +00000000003fb6e8 00000000003fb823 FUN_003fb6e8 +00000000003fb8ac 00000000003fb973 FUN_003fb8ac +00000000003fb974 00000000003fb97b FUN_003fb974 +00000000003fb97c 00000000003fbb07 FUN_003fb97c +00000000003fbb30 00000000003fbb7f FUN_003fbb30 +00000000003fbb80 00000000003fbcab FUN_003fbb80 +00000000003fbd14 00000000003fbe4b FUN_003fbd14 +00000000003fbec0 00000000003fc023 FUN_003fbec0 +00000000003fc0b0 00000000003fc21b FUN_003fc0b0 +00000000003fc2b8 00000000003fc3bb FUN_003fc2b8 +00000000003fc3bc 00000000003fc3c3 FUN_003fc3bc +00000000003fc3c4 00000000003fc54f FUN_003fc3c4 +00000000003fc578 00000000003fc5c7 FUN_003fc578 +00000000003fc5c8 00000000003fc5cb FUN_003fc5c8 +00000000003fc5cc 00000000003fc5cf FUN_003fc5cc +00000000003fc5d0 00000000003fc5db FUN_003fc5d0 +00000000003fc5dc 00000000003fc5e7 FUN_003fc5dc +00000000003fc5e8 00000000003fc5ef FUN_003fc5e8 +00000000003fc5f0 00000000003fc5f7 FUN_003fc5f0 +00000000003fc5f8 00000000003fc5ff FUN_003fc5f8 +00000000003fc600 00000000003fc63b FUN_003fc600 +00000000003fc63c 00000000003fc643 FUN_003fc63c +00000000003fc644 00000000003fc64b FUN_003fc644 +00000000003fc64c 00000000003fc64f FUN_003fc64c +00000000003fc650 00000000003fc653 FUN_003fc650 +00000000003fc654 00000000003fc65f FUN_003fc654 +00000000003fc660 00000000003fc66b FUN_003fc660 +00000000003fc66c 00000000003fc673 FUN_003fc66c +00000000003fc674 00000000003fc67b FUN_003fc674 +00000000003fc67c 00000000003fc683 FUN_003fc67c +00000000003fc684 00000000003fc68b FUN_003fc684 +00000000003fc68c 00000000003fc693 FUN_003fc68c +00000000003fc694 00000000003fc6a3 FUN_003fc694 +00000000003fc6a4 00000000003fc6b3 FUN_003fc6a4 +00000000003fc6b4 00000000003fc6e3 FUN_003fc6b4 +00000000003fc6e4 00000000003fc713 FUN_003fc6e4 +00000000003fc714 00000000003fc7ef FUN_003fc714 +00000000003fc7f0 00000000003fc8c7 FUN_003fc7f0 +00000000003fc8c8 00000000003fc993 FUN_003fc8c8 +00000000003fc994 00000000003fca5b FUN_003fc994 +00000000003fca5c 00000000003fca9b FUN_003fca5c +00000000003fca9c 00000000003fcafb FUN_003fca9c +00000000003fcb10 00000000003fcb37 FUN_003fcb10 +00000000003fcb38 00000000003fcb53 FUN_003fcb38 +00000000003fcb54 00000000003fcb6f FUN_003fcb54 +00000000003fcb70 00000000003fcb8b FUN_003fcb70 +00000000003fcb8c 00000000003fcba7 FUN_003fcb8c +00000000003fcba8 00000000003fcbdb FUN_003fcba8 +00000000003fcbdc 00000000003fcc53 FUN_003fcbdc +00000000003fcc54 00000000003fcc93 FUN_003fcc54 +00000000003fcc94 00000000003fcccb FUN_003fcc94 +00000000003fcccc 00000000003fcce7 FUN_003fcccc +00000000003fcce8 00000000003fcd37 FUN_003fcce8 +00000000003fcd38 00000000003fcd7f FUN_003fcd38 +00000000003fcd80 00000000003fcdcf FUN_003fcd80 +00000000003fcdd0 00000000003fcdeb FUN_003fcdd0 +00000000003fcdec 00000000003fce1b FUN_003fcdec +00000000003fce1c 00000000003fce23 FUN_003fce1c +00000000003fce24 00000000003fce2b FUN_003fce24 +00000000003fce2c 00000000003fce33 FUN_003fce2c +00000000003fce34 00000000003fce43 FUN_003fce34 +00000000003fce44 00000000003fce53 FUN_003fce44 +00000000003fce54 00000000003fce5b FUN_003fce54 +00000000003fce5c 00000000003fce63 FUN_003fce5c +00000000003fce64 00000000003fce6b FUN_003fce64 +00000000003fce6c 00000000003fce7b FUN_003fce6c +00000000003fce7c 00000000003fce8b FUN_003fce7c +00000000003fce8c 00000000003fcec7 FUN_003fce8c +00000000003fcec8 00000000003fced7 FUN_003fcec8 +00000000003fced8 00000000003fcee7 FUN_003fced8 +00000000003fcee8 00000000003fcf37 FUN_003fcee8 +00000000003fcf38 00000000003fcf3b FUN_003fcf38 +00000000003fcf3c 00000000003fcf53 FUN_003fcf3c +00000000003fcf54 00000000003fcfb3 FUN_003fcf54 +00000000003fcfc8 00000000003fcfef FUN_003fcfc8 +00000000003fcff0 00000000003fd00b FUN_003fcff0 +00000000003fd00c 00000000003fd027 FUN_003fd00c +00000000003fd028 00000000003fd043 FUN_003fd028 +00000000003fd044 00000000003fd05f FUN_003fd044 +00000000003fd060 00000000003fd097 FUN_003fd060 +00000000003fd098 00000000003fd10b FUN_003fd098 +00000000003fd10c 00000000003fd14b FUN_003fd10c +00000000003fd14c 00000000003fd183 FUN_003fd14c +00000000003fd184 00000000003fd19f FUN_003fd184 +00000000003fd1a0 00000000003fd1ef FUN_003fd1a0 +00000000003fd1f0 00000000003fd237 FUN_003fd1f0 +00000000003fd238 00000000003fd28b FUN_003fd238 +00000000003fd28c 00000000003fd2a7 FUN_003fd28c +00000000003fd2a8 00000000003fd2d7 FUN_003fd2a8 +00000000003fd2d8 00000000003fd2df FUN_003fd2d8 +00000000003fd2e0 00000000003fd2e7 FUN_003fd2e0 +00000000003fd2e8 00000000003fd2ef FUN_003fd2e8 +00000000003fd2f0 00000000003fd2ff FUN_003fd2f0 +00000000003fd300 00000000003fd30f FUN_003fd300 +00000000003fd310 00000000003fd317 FUN_003fd310 +00000000003fd318 00000000003fd31f FUN_003fd318 +00000000003fd320 00000000003fd327 FUN_003fd320 +00000000003fd328 00000000003fd337 FUN_003fd328 +00000000003fd338 00000000003fd347 FUN_003fd338 +00000000003fd348 00000000003fd383 FUN_003fd348 +00000000003fd384 00000000003fd393 FUN_003fd384 +00000000003fd394 00000000003fd3a3 FUN_003fd394 +00000000003fd3a4 00000000003fd3f3 FUN_003fd3a4 +00000000003fd3f4 00000000003fd3f7 FUN_003fd3f4 +00000000003fd3f8 00000000003fd40f FUN_003fd3f8 +00000000003fd410 00000000003fd5a7 FUN_003fd410 +00000000003fd5a8 00000000003fd707 FUN_003fd5a8 +00000000003fd708 00000000003fd7cb FUN_003fd708 +00000000003fd7dc 00000000003fdaf3 FUN_003fd7dc +00000000003fdaf4 00000000003fdbd3 FUN_003fdaf4 +00000000003fdbe4 00000000003fdefb FUN_003fdbe4 +00000000003fdefc 00000000003fdf5b FUN_003fdefc +00000000003fdf5c 00000000003fdfbb FUN_003fdf5c +00000000003fdfbc 00000000003fe01b FUN_003fdfbc +00000000003fe01c 00000000003fe07b FUN_003fe01c +00000000003fe07c 00000000003fe0eb FUN_003fe07c +00000000003fe0ec 00000000003fe15b FUN_003fe0ec +00000000003fe15c 00000000003fe1bb FUN_003fe15c +00000000003fe1bc 00000000003fe21b FUN_003fe1bc +00000000003fe21c 00000000003fe3db FUN_003fe21c +00000000003fe3dc 00000000003fe78b FUN_003fe3dc +00000000003fe78c 00000000003fe7bf FUN_003fe78c +00000000003fe7c0 00000000003fe7cb FUN_003fe7c0 +00000000003fe7cc 00000000003fe7d7 FUN_003fe7cc +00000000003fe7d8 00000000003fe7e3 FUN_003fe7d8 +00000000003fe7e4 00000000003fe7ef FUN_003fe7e4 +00000000003fe7f0 00000000003fe7fb FUN_003fe7f0 +00000000003fe7fc 00000000003fe807 FUN_003fe7fc +00000000003fe808 00000000003fe813 FUN_003fe808 +00000000003fe814 00000000003fe81f FUN_003fe814 +00000000003fe820 00000000003fe82b FUN_003fe820 +00000000003fe82c 00000000003fe837 FUN_003fe82c +00000000003fe838 00000000003fe847 FUN_003fe838 +00000000003fe848 00000000003fe857 FUN_003fe848 +00000000003fe858 00000000003fe863 FUN_003fe858 +00000000003fe864 00000000003fe86f FUN_003fe864 +00000000003fe870 00000000003fe87f FUN_003fe870 +00000000003fe880 00000000003fe887 FUN_003fe880 +00000000003fe888 00000000003fe88f FUN_003fe888 +00000000003fe890 00000000003fe893 FUN_003fe890 +00000000003fe894 00000000003fe8b7 FUN_003fe894 +00000000003fe8b8 00000000003fe8c7 FUN_003fe8b8 +00000000003fe8c8 00000000003fe8d7 FUN_003fe8c8 +00000000003fe8d8 00000000003fe8e7 FUN_003fe8d8 +00000000003fe8e8 00000000003fe8f7 FUN_003fe8e8 +00000000003fe8f8 00000000003fe907 FUN_003fe8f8 +00000000003fe908 00000000003fe917 FUN_003fe908 +00000000003fe918 00000000003fe927 FUN_003fe918 +00000000003fe928 00000000003fe937 FUN_003fe928 +00000000003fe938 00000000003fe947 FUN_003fe938 +00000000003fe948 00000000003fe977 FUN_003fe948 +00000000003fe978 00000000003fe9a7 FUN_003fe978 +00000000003fe9a8 00000000003fe9d7 FUN_003fe9a8 +00000000003fe9d8 00000000003fea07 FUN_003fe9d8 +00000000003fea08 00000000003fea37 FUN_003fea08 +00000000003fea38 00000000003fea67 FUN_003fea38 +00000000003fea68 00000000003fea97 FUN_003fea68 +00000000003fea98 00000000003feac7 FUN_003fea98 +00000000003feac8 00000000003feaf7 FUN_003feac8 +00000000003feaf8 00000000003feb27 FUN_003feaf8 +00000000003feb28 00000000003feb57 FUN_003feb28 +00000000003feb58 00000000003febbb FUN_003feb58 +00000000003febbc 00000000003fec1f FUN_003febbc +00000000003fec20 00000000003fec77 FUN_003fec20 +00000000003fec78 00000000003fec9b FUN_003fec78 +00000000003fec9c 00000000003fecbf FUN_003fec9c +00000000003fecc0 00000000003fecef FUN_003fecc0 +00000000003fecf0 00000000003fed1f FUN_003fecf0 +00000000003fed20 00000000003fed4f FUN_003fed20 +00000000003fed50 00000000003fed7f FUN_003fed50 +00000000003fed80 00000000003feda3 FUN_003fed80 +00000000003feda4 00000000003fedd3 FUN_003feda4 +00000000003fedd4 00000000003fee03 FUN_003fedd4 +00000000003fee04 00000000003fee33 FUN_003fee04 +00000000003fee34 00000000003fee63 FUN_003fee34 +00000000003fee64 00000000003fee93 FUN_003fee64 +00000000003fee94 00000000003feec3 FUN_003fee94 +00000000003feec4 00000000003feef3 FUN_003feec4 +00000000003feef4 00000000003fef23 FUN_003feef4 +00000000003fef24 00000000003fef53 FUN_003fef24 +00000000003fef68 00000000003fef9f FUN_003fef68 +00000000003fefb4 00000000003fefe3 FUN_003fefb4 +00000000003feff8 00000000003ff02f FUN_003feff8 +00000000003ff044 00000000003ff073 FUN_003ff044 +00000000003ff088 00000000003ff0bf FUN_003ff088 +00000000003ff0d4 00000000003ff103 FUN_003ff0d4 +00000000003ff118 00000000003ff14f FUN_003ff118 +00000000003ff164 00000000003ff1c7 FUN_003ff164 +00000000003ff1dc 00000000003ff1ff FUN_003ff1dc +00000000003ff200 00000000003ff20f FUN_003ff200 +00000000003ff210 00000000003ff23f FUN_003ff210 +00000000003ff240 00000000003ff25b FUN_003ff240 +00000000003ff25c 00000000003ff29f FUN_003ff25c +00000000003ff2a0 00000000003ff57f FUN_003ff2a0 +00000000003ff580 00000000003ff807 FUN_003ff580 +00000000003ff854 00000000003ff897 FUN_003ff854 +00000000003ff8ac 00000000003ff8ef FUN_003ff8ac +00000000003ff904 00000000003ff93f FUN_003ff904 +00000000003ff954 00000000003ff96f FUN_003ff954 +00000000003ff970 00000000003ff98b FUN_003ff970 +00000000003ff98c 00000000003ff9b7 FUN_003ff98c +00000000003ff9b8 00000000003ff9e3 FUN_003ff9b8 +00000000003ff9e4 00000000003ffa0f FUN_003ff9e4 +00000000003ffa10 00000000003ffa3b FUN_003ffa10 +00000000003ffa3c 00000000003ffa57 FUN_003ffa3c +00000000003ffa58 00000000003ffa73 FUN_003ffa58 +00000000003ffa74 00000000003ffa8f FUN_003ffa74 +00000000003ffa90 00000000003ffad3 FUN_003ffa90 +00000000003ffae8 00000000003ffb2b FUN_003ffae8 +00000000003ffb40 00000000003ffb7b FUN_003ffb40 +00000000003ffb90 00000000003ffbab FUN_003ffb90 +00000000003ffbac 00000000003ffbc7 FUN_003ffbac +00000000003ffbc8 00000000003ffbf3 FUN_003ffbc8 +00000000003ffbf4 00000000003ffc1f FUN_003ffbf4 +00000000003ffc20 00000000003ffc4b FUN_003ffc20 +00000000003ffc4c 00000000003ffc77 FUN_003ffc4c +00000000003ffc78 00000000003ffc93 FUN_003ffc78 +00000000003ffc94 00000000003ffcaf FUN_003ffc94 +00000000003ffcb0 00000000003ffccb FUN_003ffcb0 +00000000003ffccc 00000000003ffd3b FUN_003ffccc +00000000003ffd3c 00000000003ffdab FUN_003ffd3c +00000000003ffdac 00000000003ffe6b FUN_003ffdac +00000000003ffe94 00000000003fff53 FUN_003ffe94 +00000000003fff7c 00000000003fff97 FUN_003fff7c +00000000003fff98 00000000003fffc7 FUN_003fff98 +00000000003fffc8 00000000003ffff7 FUN_003fffc8 +00000000003ffff8 0000000000400013 FUN_003ffff8 +0000000000400014 000000000040002f FUN_00400014 +0000000000400030 000000000040004b FUN_00400030 +000000000040004c 000000000040008b FUN_0040004c +00000000004000a0 00000000004000df FUN_004000a0 +00000000004000f4 000000000040012f FUN_004000f4 +0000000000400144 000000000040015f FUN_00400144 +0000000000400160 000000000040017b FUN_00400160 +000000000040017c 00000000004001a7 FUN_0040017c +00000000004001a8 00000000004001d3 FUN_004001a8 +00000000004001d4 00000000004001ff FUN_004001d4 +0000000000400200 0000000000400243 FUN_00400200 +0000000000400244 00000000004002fb FUN_00400244 +0000000000400324 000000000040033f FUN_00400324 +0000000000400340 000000000040035b FUN_00400340 +000000000040035c 0000000000400377 FUN_0040035c +0000000000400378 0000000000400393 FUN_00400378 +0000000000400394 00000000004003af FUN_00400394 +00000000004003b0 00000000004003cb FUN_004003b0 +00000000004003cc 00000000004003e7 FUN_004003cc +00000000004003e8 0000000000400403 FUN_004003e8 +0000000000400404 000000000040041f FUN_00400404 +0000000000400420 000000000040043b FUN_00400420 +000000000040043c 0000000000400457 FUN_0040043c +0000000000400458 0000000000400473 FUN_00400458 +0000000000400474 000000000040048f FUN_00400474 +0000000000400490 00000000004004ab FUN_00400490 +00000000004004ac 00000000004004c7 FUN_004004ac +00000000004004c8 00000000004004e3 FUN_004004c8 +00000000004004e4 00000000004004ff FUN_004004e4 +0000000000400500 000000000040051b FUN_00400500 +000000000040051c 0000000000400537 FUN_0040051c +0000000000400538 0000000000400553 FUN_00400538 +0000000000400554 000000000040056f FUN_00400554 +0000000000400570 00000000004005bb FUN_00400570 +00000000004005d0 000000000040061b FUN_004005d0 +0000000000400630 00000000004006cf FUN_00400630 +0000000000400714 000000000040072f FUN_00400714 +0000000000400730 000000000040074b FUN_00400730 +000000000040074c 0000000000400767 FUN_0040074c +0000000000400768 000000000040076b FUN_00400768 +000000000040076c 0000000000400787 FUN_0040076c +0000000000400788 00000000004007df FUN_00400788 +00000000004007e0 0000000000400837 FUN_004007e0 +0000000000400838 00000000004008cb FUN_00400838 +00000000004008cc 000000000040095f FUN_004008cc +0000000000400960 0000000000400a3b FUN_00400960 +0000000000400a3c 0000000000400a57 FUN_00400a3c +0000000000400a58 0000000000400a73 FUN_00400a58 +0000000000400a74 0000000000400a8f FUN_00400a74 +0000000000400a90 0000000000400aab FUN_00400a90 +0000000000400aac 0000000000400ac7 FUN_00400aac +0000000000400ac8 0000000000400ae3 FUN_00400ac8 +0000000000400ae4 0000000000400aff FUN_00400ae4 +0000000000400b00 0000000000400b1b FUN_00400b00 +0000000000400b1c 0000000000400b37 FUN_00400b1c +0000000000400b38 0000000000400b53 FUN_00400b38 +0000000000400b54 0000000000400b6f FUN_00400b54 +0000000000400b70 0000000000400bab FUN_00400b70 +0000000000400bc0 0000000000400bfb FUN_00400bc0 +0000000000400c10 0000000000400c2b FUN_00400c10 +0000000000400c2c 0000000000400c47 FUN_00400c2c +0000000000400c48 0000000000400c73 FUN_00400c48 +0000000000400c74 0000000000400c8f FUN_00400c74 +0000000000400c90 0000000000400c97 FUN_00400c90 +0000000000400c98 0000000000400caf FUN_00400c98 +0000000000400cb0 0000000000400d57 FUN_00400cb0 +0000000000400d9c 0000000000400e2b FUN_00400d9c +0000000000400e40 0000000000400e7b FUN_00400e40 +0000000000400e90 0000000000400ed7 FUN_00400e90 +0000000000400ed8 0000000000400ef3 FUN_00400ed8 +0000000000400ef4 0000000000400f1f FUN_00400ef4 +0000000000400f20 0000000000400f3b FUN_00400f20 +0000000000400f3c 0000000000400fe3 FUN_00400f3c +0000000000401028 000000000040108f FUN_00401028 +0000000000401090 0000000000401247 FUN_00401090 +0000000000401248 000000000040152b FUN_00401248 +000000000040152c 00000000004016db FUN_0040152c +00000000004016dc 0000000000401743 FUN_004016dc +0000000000401744 00000000004017ab FUN_00401744 +00000000004017ac 0000000000401813 FUN_004017ac +0000000000401814 0000000000401c57 FUN_00401814 +0000000000401d3c 0000000000401da3 FUN_00401d3c +0000000000401da4 0000000000401e0b FUN_00401da4 +0000000000401e0c 0000000000401e73 FUN_00401e0c +0000000000401e74 00000000004023eb FUN_00401e74 +000000000040252c 0000000000402593 FUN_0040252c +0000000000402594 0000000000402b0b FUN_00402594 +0000000000402c4c 0000000000402cb3 FUN_00402c4c +0000000000402cb4 0000000000402d1b FUN_00402cb4 +0000000000402d1c 0000000000402d83 FUN_00402d1c +0000000000402d84 0000000000402e77 FUN_00402d84 +0000000000402e78 0000000000402edf FUN_00402e78 +0000000000402ee0 0000000000402f47 FUN_00402ee0 +0000000000402f48 0000000000402faf FUN_00402f48 +0000000000402fb0 000000000040301b FUN_00402fb0 +000000000040301c 0000000000403087 FUN_0040301c +0000000000403088 00000000004030f3 FUN_00403088 +00000000004030f4 000000000040315f FUN_004030f4 +0000000000403160 00000000004031cb FUN_00403160 +00000000004031cc 0000000000403237 FUN_004031cc +0000000000403238 00000000004032a3 FUN_00403238 +00000000004032a4 000000000040330f FUN_004032a4 +0000000000403310 000000000040337b FUN_00403310 +000000000040337c 00000000004033e7 FUN_0040337c +00000000004033e8 0000000000403453 FUN_004033e8 +0000000000403454 00000000004034bf FUN_00403454 +00000000004034c0 000000000040352b FUN_004034c0 +000000000040352c 0000000000403883 FUN_0040352c +0000000000403884 000000000040393f FUN_00403884 +0000000000403940 0000000000403997 FUN_00403940 +0000000000403998 000000000040404f FUN_00403998 +00000000004040b4 000000000040476b FUN_004040b4 +00000000004047d0 00000000004049a3 FUN_004047d0 +00000000004049e0 0000000000404a1f FUN_004049e0 +0000000000404a20 0000000000404bfb FUN_00404a20 +0000000000404bfc 0000000000404c3b FUN_00404bfc +0000000000404c3c 0000000000404f63 FUN_00404c3c +0000000000404f94 0000000000404fab FUN_00404f94 +0000000000404fac 00000000004052bf FUN_00404fac +00000000004052f0 0000000000405307 FUN_004052f0 +0000000000405308 00000000004053b3 FUN_00405308 +00000000004053b4 000000000040562b FUN_004053b4 +000000000040565c 0000000000405877 FUN_0040565c +00000000004058a8 00000000004058bb FUN_004058a8 +00000000004058bc 0000000000405af7 FUN_004058bc +0000000000405b28 0000000000405b3b FUN_00405b28 +0000000000405b3c 0000000000405b97 FUN_00405b3c +0000000000405b98 0000000000405c43 FUN_00405b98 +0000000000405c44 0000000000405ebb FUN_00405c44 +0000000000405eec 0000000000405eff FUN_00405eec +0000000000405f00 000000000040613b FUN_00405f00 +000000000040616c 000000000040617f FUN_0040616c +0000000000406180 000000000040625f FUN_00406180 +0000000000406290 000000000040636f FUN_00406290 +00000000004063a0 0000000000406453 FUN_004063a0 +0000000000406484 0000000000406517 FUN_00406484 +0000000000406518 0000000000406893 FUN_00406518 +0000000000406894 0000000000406ca3 FUN_00406894 +0000000000406ca4 0000000000406eeb FUN_00406ca4 +0000000000406eec 00000000004071ab FUN_00406eec +00000000004071ac 0000000000408057 FUN_004071ac +0000000000408058 00000000004081df FUN_00408058 +00000000004081e0 0000000000408367 FUN_004081e0 +0000000000408368 00000000004090df FUN_00408368 +0000000000409134 00000000004094ef FUN_00409134 +0000000000409650 0000000000409ea3 __bss_start__ +0000000000409ef8 0000000000409ff7 FUN_00409ef8 +000000000040a020 000000000040a1a7 FUN_0040a020 +000000000040a1d0 000000000040ad87 FUN_0040a1d0 +000000000040adb0 000000000040afe3 FUN_0040adb0 +000000000040b00c 000000000040b23f FUN_0040b00c +000000000040b268 000000000040b49b FUN_0040b268 +000000000040b4c4 000000000040bdb3 FUN_0040b4c4 +000000000040bde0 000000000040bdf3 FUN_0040bde0 +000000000040bdf4 000000000040c1eb FUN_0040bdf4 +000000000040c1ec 000000000040cadb FUN_0040c1ec +000000000040cb08 000000000040cb1b FUN_0040cb08 +000000000040cb1c 000000000040d3f7 FUN_0040cb1c +000000000040d424 000000000040d437 FUN_0040d424 +000000000040d438 000000000040dd13 FUN_0040d438 +000000000040dd40 000000000040dd53 FUN_0040dd40 +000000000040dd54 000000000040ddbf FUN_0040dd54 +000000000040ddc0 000000000040e713 FUN_0040ddc0 +000000000040e740 000000000040e753 FUN_0040e740 +000000000040e754 000000000040f02f FUN_0040e754 +000000000040f05c 000000000040f06f FUN_0040f05c +000000000040f070 000000000040f0af FUN_0040f070 +000000000040f0b0 000000000040f0e3 FUN_0040f0b0 +000000000040f0e4 000000000040f117 FUN_0040f0e4 +000000000040f118 000000000040f14b FUN_0040f118 +000000000040f14c 000000000040f17f FUN_0040f14c +000000000040f180 000000000040f1f7 FUN_0040f180 +000000000040f234 000000000040f2ab FUN_0040f234 +000000000040f2e8 000000000040f35f FUN_0040f2e8 +000000000040f39c 000000000040f413 FUN_0040f39c +000000000040f450 000000000040f4c7 FUN_0040f450 +000000000040f504 000000000040f61b FUN_0040f504 +000000000040f658 000000000040f6cf FUN_0040f658 +000000000040f70c 000000000040f783 FUN_0040f70c +000000000040f7c0 000000000040f837 FUN_0040f7c0 +000000000040f874 000000000040f8eb FUN_0040f874 +000000000040f928 000000000040f99f FUN_0040f928 +000000000040f9b4 000000000040fa53 FUN_0040f9b4 +000000000040fa90 000000000040fb2f FUN_0040fa90 +000000000040fb6c 000000000040fb9f FUN_0040fb6c +000000000040fba0 000000000040fbdf FUN_0040fba0 +000000000040fbf4 000000000040fbff FUN_0040fbf4 +000000000040fc00 000000000040fc0f FUN_0040fc00 +000000000040fc10 000000000040fc3f FUN_0040fc10 +000000000040fc40 000000000040fc4b FUN_0040fc40 +000000000040fc4c 000000000040fc5f FUN_0040fc4c +000000000040fc60 000000000040fc93 FUN_0040fc60 +000000000040fc94 000000000040fca3 FUN_0040fc94 +000000000040fca4 000000000040fcd3 FUN_0040fca4 +000000000040fcd4 000000000040fdcb FUN_0040fcd4 +000000000040fe30 000000000040fec3 FUN_0040fe30 +000000000040fec4 000000000040ff33 FUN_0040fec4 +000000000040ff34 000000000040ff43 FUN_0040ff34 +000000000040ff44 000000000040ff53 FUN_0040ff44 +000000000040ff54 000000000040ff83 FUN_0040ff54 +000000000040ff84 000000000040ff93 FUN_0040ff84 +000000000040ff94 000000000040ffc3 FUN_0040ff94 +000000000040ffc4 000000000041007b FUN_0040ffc4 +00000000004100e4 000000000041015b FUN_004100e4 +000000000041015c 00000000004101ef FUN_0041015c +00000000004101f0 000000000041037f FUN_004101f0 +0000000000410380 00000000004103c3 FUN_00410380 +00000000004103c4 00000000004103cb FUN_004103c4 +00000000004103cc 00000000004103d7 FUN_004103cc +00000000004103d8 00000000004103e3 FUN_004103d8 +00000000004103e4 00000000004103eb FUN_004103e4 +00000000004103ec 00000000004103fb FUN_004103ec +00000000004103fc 0000000000410433 FUN_004103fc +0000000000410434 000000000041046b FUN_00410434 +000000000041046c 0000000000410483 FUN_0041046c +0000000000410484 00000000004104a7 FUN_00410484 +00000000004104a8 00000000004104c3 FUN_004104a8 +00000000004104c4 00000000004104df FUN_004104c4 +00000000004104e0 00000000004104ff FUN_004104e0 +0000000000410500 000000000041051f FUN_00410500 +0000000000410520 000000000041053f FUN_00410520 +0000000000410540 000000000041055f FUN_00410540 +0000000000410560 000000000041057f FUN_00410560 +0000000000410580 00000000004105a7 FUN_00410580 +00000000004105a8 00000000004105b3 FUN_004105a8 +00000000004105b4 00000000004105c3 FUN_004105b4 +00000000004105c4 00000000004105d3 FUN_004105c4 +00000000004105d4 000000000041074f FUN_004105d4 +0000000000410750 00000000004108cb FUN_00410750 +00000000004108cc 0000000000410a07 FUN_004108cc +0000000000410a08 0000000000410b47 FUN_00410a08 +0000000000410b48 0000000000410c4b FUN_00410b48 +0000000000410c4c 0000000000410c63 FUN_00410c4c +0000000000410c64 0000000000410d9f FUN_00410c64 +0000000000410da0 0000000000410df7 FUN_00410da0 +0000000000410df8 0000000000410e27 FUN_00410df8 +0000000000410e28 0000000000410e2f FUN_00410e28 +0000000000410e30 0000000000410e3f FUN_00410e30 +0000000000410e40 0000000000410e57 FUN_00410e40 +0000000000410e58 0000000000410e67 FUN_00410e58 +0000000000410e68 0000000000410e6f FUN_00410e68 +0000000000410e70 0000000000410e7f FUN_00410e70 +0000000000410e80 0000000000410e97 FUN_00410e80 +0000000000410e98 0000000000410ea7 FUN_00410e98 +0000000000410ea8 0000000000410eb3 FUN_00410ea8 +0000000000410eb4 0000000000410ebf FUN_00410eb4 +0000000000410ec0 0000000000410ecb FUN_00410ec0 +0000000000410ecc 0000000000410ed7 FUN_00410ecc +0000000000410ed8 0000000000411063 FUN_00410ed8 +0000000000411064 0000000000411097 FUN_00411064 +00000000004110a4 00000000004111eb FUN_004110a4 +00000000004111ec 00000000004112ef FUN_004111ec +00000000004112f0 0000000000411303 FUN_004112f0 +0000000000411304 000000000041130f FUN_00411304 +0000000000411310 000000000041133f FUN_00411310 +0000000000411340 0000000000411347 FUN_00411340 +0000000000411348 000000000041135b FUN_00411348 +000000000041135c 000000000041139b FUN_0041135c +000000000041139c 000000000041143b FUN_0041139c +000000000041143c 0000000000411463 FUN_0041143c +0000000000411464 0000000000411523 FUN_00411464 +0000000000411524 0000000000411527 thunk_FUN_00411464 +0000000000411528 0000000000411623 FUN_00411528 +0000000000411624 000000000041164b FUN_00411624 +000000000041164c 000000000041168b FUN_0041164c +000000000041168c 00000000004116b7 FUN_0041168c +00000000004116b8 00000000004116df FUN_004116b8 +00000000004116e0 0000000000411777 FUN_004116e0 +0000000000411778 00000000004117a7 FUN_00411778 +00000000004117a8 000000000041189f FUN_004117a8 +00000000004118a0 0000000000411997 FUN_004118a0 +0000000000411998 0000000000411a23 FUN_00411998 +0000000000411a24 0000000000411a53 FUN_00411a24 +0000000000411a54 0000000000411a5b FUN_00411a54 +0000000000411a5c 0000000000411a63 FUN_00411a5c +0000000000411a64 0000000000411a6b FUN_00411a64 +0000000000411a6c 0000000000411b27 FUN_00411a6c +0000000000411b28 0000000000411beb FUN_00411b28 +0000000000411bec 0000000000411cc3 FUN_00411bec +0000000000411cc4 0000000000411d17 FUN_00411cc4 +0000000000411d18 0000000000411dab FUN_00411d18 +0000000000411dac 0000000000411e3f FUN_00411dac +0000000000411e40 0000000000411ee7 FUN_00411e40 +0000000000411ee8 0000000000411f2f FUN_00411ee8 +0000000000411f30 0000000000411fbb FUN_00411f30 +0000000000411fbc 0000000000411fc7 FUN_00411fbc +0000000000411fc8 0000000000412003 FUN_00411fc8 +0000000000412004 0000000000412057 FUN_00412004 +0000000000412058 00000000004120d7 FUN_00412058 +00000000004120d8 0000000000412157 FUN_004120d8 +0000000000412158 00000000004121eb FUN_00412158 +00000000004121ec 0000000000412233 FUN_004121ec +0000000000412234 00000000004122b7 FUN_00412234 +00000000004122b8 000000000041233b FUN_004122b8 +000000000041233c 00000000004123cb FUN_0041233c +00000000004123cc 0000000000412417 FUN_004123cc +0000000000412418 0000000000412493 FUN_00412418 +0000000000412494 0000000000412523 FUN_00412494 +0000000000412524 00000000004125b3 FUN_00412524 +00000000004125b4 00000000004125ff FUN_004125b4 +0000000000412600 0000000000412663 FUN_00412600 +0000000000412664 00000000004126cb FUN_00412664 +00000000004126cc 0000000000412767 FUN_004126cc +0000000000412768 000000000041282f FUN_00412768 +0000000000412830 00000000004128ab FUN_00412830 +00000000004128ac 000000000041295f FUN_004128ac +0000000000412960 00000000004129fb FUN_00412960 +00000000004129fc 0000000000412a03 FUN_004129fc +0000000000412a04 0000000000412a0f FUN_00412a04 +0000000000412a10 0000000000412a1b FUN_00412a10 +0000000000412a1c 0000000000412a2b FUN_00412a1c +0000000000412a2c 0000000000412a37 FUN_00412a2c +0000000000412a38 0000000000412a3f FUN_00412a38 +0000000000412a40 0000000000412a67 FUN_00412a40 +0000000000412a68 0000000000412a6f FUN_00412a68 +0000000000412a70 0000000000412b07 FUN_00412a70 +0000000000412b08 0000000000412cf7 FUN_00412b08 +0000000000412cf8 0000000000412d53 FUN_00412cf8 +0000000000412d54 0000000000412daf FUN_00412d54 +0000000000412db0 0000000000412dc3 FUN_00412db0 +0000000000412dc4 0000000000412e23 FUN_00412dc4 +0000000000412e24 0000000000412e67 FUN_00412e24 +0000000000412e68 0000000000412ec3 FUN_00412e68 +0000000000412ec4 0000000000412f5f FUN_00412ec4 +0000000000412f60 0000000000412fdb FUN_00412f60 +0000000000412fdc 0000000000413103 FUN_00412fdc +0000000000413104 0000000000413127 FUN_00413104 +0000000000413128 0000000000413173 FUN_00413128 +0000000000413174 00000000004131a7 FUN_00413174 +00000000004131a8 00000000004131db FUN_004131a8 +00000000004131dc 00000000004131df thunk_FUN_00412fdc +00000000004131e0 00000000004133bb FUN_004131e0 +00000000004133bc 00000000004133c7 FUN_004133bc +00000000004133c8 0000000000413413 FUN_004133c8 +0000000000413414 000000000041344f FUN_00413414 +0000000000413450 000000000041345b FUN_00413450 +000000000041345c 000000000041349f FUN_0041345c +00000000004134a0 0000000000413503 FUN_004134a0 +0000000000413504 000000000041350b FUN_00413504 +000000000041350c 000000000041356b FUN_0041350c +000000000041356c 00000000004135cb FUN_0041356c +00000000004135cc 000000000041362f FUN_004135cc +0000000000413630 000000000041369b FUN_00413630 +000000000041369c 00000000004136ff FUN_0041369c +0000000000413700 0000000000413773 FUN_00413700 +0000000000413774 00000000004137db FUN_00413774 +00000000004137dc 0000000000413857 FUN_004137dc +0000000000413858 0000000000413897 FUN_00413858 +0000000000413898 000000000041390f FUN_00413898 +0000000000413910 00000000004139a3 FUN_00413910 +00000000004139a4 0000000000413a63 FUN_004139a4 +0000000000413a64 0000000000413b07 FUN_00413a64 +0000000000413b08 0000000000413bd3 FUN_00413b08 +0000000000413bd4 0000000000413c6b FUN_00413bd4 +0000000000413c6c 0000000000413f2f FUN_00413c6c +0000000000413f54 0000000000413f5f FUN_00413f54 +0000000000413f60 0000000000413fab FUN_00413f60 +0000000000413fac 0000000000413fef FUN_00413fac +0000000000413ff0 0000000000413fff FUN_00413ff0 +0000000000414000 0000000000414017 FUN_00414000 +0000000000414018 0000000000414067 FUN_00414018 +0000000000414068 000000000041407b FUN_00414068 +000000000041407c 000000000041408f FUN_0041407c +0000000000414090 000000000041409f FUN_00414090 +00000000004140a0 00000000004140b3 FUN_004140a0 +00000000004140b4 00000000004140c7 FUN_004140b4 +00000000004140c8 00000000004141a3 FUN_004140c8 +00000000004141a4 00000000004141f3 FUN_004141a4 +00000000004141f4 00000000004141f7 operator.delete +00000000004141f8 0000000000414243 FUN_004141f8 +0000000000414244 0000000000414377 FUN_00414244 +0000000000414378 0000000000414407 FUN_00414378 +0000000000414408 00000000004144f7 FUN_00414408 +00000000004144f8 00000000004145e7 FUN_004144f8 +00000000004145e8 000000000041465f FUN_004145e8 +0000000000414688 00000000004146f3 FUN_00414688 +000000000041471c 00000000004147b3 FUN_0041471c +00000000004147dc 000000000041490f FUN_004147dc +0000000000414910 0000000000414a43 FUN_00414910 +0000000000414a44 0000000000414b63 FUN_00414a44 +0000000000414b64 0000000000414c7b FUN_00414b64 +0000000000414c7c 0000000000414dab FUN_00414c7c +0000000000414dac 0000000000414edb FUN_00414dac +0000000000414edc 0000000000414eef FUN_00414edc +0000000000414ef0 0000000000414f03 FUN_00414ef0 +0000000000414f04 0000000000414f0f FUN_00414f04 +0000000000414f10 0000000000414f1b FUN_00414f10 +0000000000414f1c 0000000000414f2b FUN_00414f1c +0000000000414f2c 0000000000414f7b FUN_00414f2c +0000000000414f7c 0000000000414fa7 FUN_00414f7c +0000000000414fa8 0000000000414fab FUN_00414fa8 +0000000000414fac 0000000000414faf FUN_00414fac +0000000000414fb0 0000000000414fb3 operator.delete +0000000000414fb4 0000000000414fb7 operator.delete +0000000000414fb8 0000000000414fef FUN_00414fb8 +0000000000414ff0 0000000000415027 FUN_00414ff0 +0000000000415028 0000000000415037 FUN_00415028 +0000000000415038 0000000000415067 FUN_00415038 +0000000000415068 000000000041506b FUN_00415068 +000000000041506c 000000000041506f operator.delete +0000000000415070 000000000041507b FUN_00415070 +000000000041507c 0000000000415087 FUN_0041507c +0000000000415088 00000000004150af FUN_00415088 +00000000004150b0 00000000004150f3 FUN_004150b0 +00000000004150f4 00000000004150fb FUN_004150f4 +00000000004150fc 0000000000415107 FUN_004150fc +0000000000415108 0000000000415113 FUN_00415108 +0000000000415114 000000000041511b FUN_00415114 +000000000041511c 000000000041512b FUN_0041511c +000000000041512c 0000000000415163 FUN_0041512c +0000000000415164 0000000000415197 FUN_00415164 +0000000000415198 00000000004151af FUN_00415198 +00000000004151b0 00000000004151d3 FUN_004151b0 +00000000004151d4 00000000004151ef FUN_004151d4 +00000000004151f0 000000000041520b FUN_004151f0 +000000000041520c 000000000041522b FUN_0041520c +000000000041522c 000000000041524f FUN_0041522c +0000000000415250 0000000000415273 FUN_00415250 +0000000000415274 0000000000415297 FUN_00415274 +0000000000415298 00000000004152bb FUN_00415298 +00000000004152bc 00000000004152e3 FUN_004152bc +00000000004152e4 00000000004152ef FUN_004152e4 +00000000004152f0 00000000004152ff FUN_004152f0 +0000000000415300 000000000041530f FUN_00415300 +0000000000415310 0000000000415327 FUN_00415310 +0000000000415328 000000000041537f FUN_00415328 +0000000000415380 00000000004153af FUN_00415380 +00000000004153b0 00000000004153b7 FUN_004153b0 +00000000004153b8 00000000004153c7 FUN_004153b8 +00000000004153c8 00000000004153df FUN_004153c8 +00000000004153e0 00000000004153ef FUN_004153e0 +00000000004153f0 00000000004153f7 FUN_004153f0 +00000000004153f8 0000000000415407 FUN_004153f8 +0000000000415408 000000000041541f FUN_00415408 +0000000000415420 000000000041542f FUN_00415420 +0000000000415430 000000000041543b FUN_00415430 +000000000041543c 0000000000415447 FUN_0041543c +0000000000415448 000000000041544f FUN_00415448 +0000000000415450 000000000041545b FUN_00415450 +000000000041545c 000000000041546f FUN_0041545c +0000000000415470 000000000041547b FUN_00415470 +000000000041547c 00000000004154ab FUN_0041547c +00000000004154ac 00000000004154b3 FUN_004154ac +00000000004154b4 00000000004154c7 FUN_004154b4 +00000000004154c8 00000000004154f7 FUN_004154c8 +00000000004154f8 0000000000415583 FUN_004154f8 +0000000000415584 00000000004155b3 FUN_00415584 +00000000004155b4 00000000004155bb FUN_004155b4 +00000000004155bc 00000000004155c3 FUN_004155bc +00000000004155c4 00000000004155cb FUN_004155c4 +00000000004155cc 000000000041569f FUN_004155cc +00000000004156a0 00000000004156ab FUN_004156a0 +00000000004156ac 00000000004156e7 FUN_004156ac +00000000004156e8 0000000000415737 FUN_004156e8 +0000000000415738 00000000004157bf FUN_00415738 +00000000004157c0 0000000000415847 FUN_004157c0 +0000000000415848 00000000004158e3 FUN_00415848 +00000000004158e4 0000000000415927 FUN_004158e4 +0000000000415928 00000000004159bf FUN_00415928 +00000000004159c0 00000000004159cb FUN_004159c0 +00000000004159cc 0000000000415a07 FUN_004159cc +0000000000415a08 0000000000415a57 FUN_00415a08 +0000000000415a58 0000000000415af3 FUN_00415a58 +0000000000415af4 0000000000415b7b FUN_00415af4 +0000000000415b7c 0000000000415c27 FUN_00415b7c +0000000000415c28 0000000000415c6b FUN_00415c28 +0000000000415c6c 0000000000415d03 FUN_00415c6c +0000000000415d04 0000000000415d9b FUN_00415d04 +0000000000415d9c 0000000000415e3b FUN_00415d9c +0000000000415e3c 0000000000415e83 FUN_00415e3c +0000000000415e84 0000000000415f1b FUN_00415e84 +0000000000415f1c 0000000000415f9f FUN_00415f1c +0000000000415fa0 0000000000416047 FUN_00415fa0 +0000000000416048 000000000041608f FUN_00416048 +0000000000416090 00000000004160f7 FUN_00416090 +00000000004160f8 0000000000416193 FUN_004160f8 +0000000000416194 000000000041625b FUN_00416194 +000000000041625c 00000000004162db FUN_0041625c +00000000004162dc 0000000000416397 FUN_004162dc +0000000000416398 0000000000416433 FUN_00416398 +0000000000416434 000000000041643b FUN_00416434 +000000000041643c 0000000000416447 FUN_0041643c +0000000000416448 0000000000416453 FUN_00416448 +0000000000416454 0000000000416463 FUN_00416454 +0000000000416464 000000000041646f FUN_00416464 +0000000000416470 0000000000416477 FUN_00416470 +0000000000416478 000000000041649f FUN_00416478 +00000000004164a0 00000000004164a7 FUN_004164a0 +00000000004164a8 000000000041653f FUN_004164a8 +0000000000416540 000000000041673b FUN_00416540 +000000000041673c 0000000000416797 FUN_0041673c +0000000000416798 00000000004167f3 FUN_00416798 +00000000004167f4 0000000000416807 FUN_004167f4 +0000000000416808 0000000000416867 FUN_00416808 +0000000000416868 00000000004168ab FUN_00416868 +00000000004168ac 000000000041690b FUN_004168ac +000000000041690c 00000000004169a7 FUN_0041690c +00000000004169a8 0000000000416a23 FUN_004169a8 +0000000000416a24 0000000000416b43 FUN_00416a24 +0000000000416b44 0000000000416b67 FUN_00416b44 +0000000000416b68 0000000000416bb3 FUN_00416b68 +0000000000416bb4 0000000000416be7 FUN_00416bb4 +0000000000416be8 0000000000416c1b FUN_00416be8 +0000000000416c1c 0000000000416c1f thunk_FUN_00416a24 +0000000000416c20 0000000000416e0b FUN_00416c20 +0000000000416e0c 0000000000416e1b FUN_00416e0c +0000000000416e1c 0000000000416e67 FUN_00416e1c +0000000000416e68 0000000000416ea3 FUN_00416e68 +0000000000416ea4 0000000000416eaf FUN_00416ea4 +0000000000416eb0 0000000000416ef3 FUN_00416eb0 +0000000000416ef4 0000000000416f53 FUN_00416ef4 +0000000000416f54 0000000000416fbf FUN_00416f54 +0000000000416fc0 000000000041701f FUN_00416fc0 +0000000000417020 0000000000417083 FUN_00417020 +0000000000417084 00000000004170e7 FUN_00417084 +00000000004170e8 000000000041715b FUN_004170e8 +000000000041715c 00000000004171c3 FUN_0041715c +00000000004171c4 000000000041723f FUN_004171c4 +0000000000417240 000000000041727f FUN_00417240 +0000000000417280 00000000004172ef FUN_00417280 +00000000004172f0 000000000041737f FUN_004172f0 +0000000000417380 000000000041743b FUN_00417380 +000000000041743c 00000000004174e3 FUN_0041743c +00000000004174e4 00000000004175af FUN_004174e4 +00000000004175b0 0000000000417643 FUN_004175b0 +0000000000417644 00000000004176e3 FUN_00417644 +00000000004176e4 0000000000417807 FUN_004176e4 +0000000000417808 000000000041786b FUN_00417808 +000000000041786c 0000000000417947 FUN_0041786c +0000000000417948 0000000000417c27 FUN_00417948 +0000000000417c4c 0000000000417c57 FUN_00417c4c +0000000000417c58 0000000000417ca3 FUN_00417c58 +0000000000417ca4 0000000000417ce7 FUN_00417ca4 +0000000000417ce8 0000000000417cff FUN_00417ce8 +0000000000417d00 0000000000417d1f FUN_00417d00 +0000000000417d20 0000000000417d77 FUN_00417d20 +0000000000417d78 0000000000417d97 FUN_00417d78 +0000000000417d98 0000000000417db7 FUN_00417d98 +0000000000417db8 0000000000417dd3 FUN_00417db8 +0000000000417dd4 0000000000417df3 FUN_00417dd4 +0000000000417df4 0000000000417e13 FUN_00417df4 +0000000000417e14 0000000000417eef FUN_00417e14 +0000000000417ef0 0000000000417fcb FUN_00417ef0 +0000000000417fcc 00000000004180ef FUN_00417fcc +00000000004180f0 000000000041817b FUN_004180f0 +000000000041817c 0000000000418207 FUN_0041817c +0000000000418208 0000000000418323 FUN_00418208 +0000000000418324 0000000000418357 FUN_00418324 +0000000000418364 0000000000418423 FUN_00418364 +0000000000418424 0000000000418427 thunk_FUN_00418364 +0000000000418428 0000000000418523 FUN_00418428 +0000000000418524 0000000000418663 FUN_00418524 +0000000000418664 000000000041868b FUN_00418664 +000000000041868c 00000000004186b3 FUN_0041868c +00000000004186b4 00000000004186f3 FUN_004186b4 +00000000004186f4 0000000000418733 FUN_004186f4 +0000000000418734 000000000041875b FUN_00418734 +000000000041875c 000000000041885b FUN_0041875c +000000000041885c 0000000000418883 FUN_0041885c +0000000000418884 00000000004188df FUN_00418884 +00000000004188e0 00000000004188e7 FUN_004188e0 +00000000004188e8 000000000041897b FUN_004188e8 +000000000041897c 0000000000418a17 FUN_0041897c +0000000000418a18 0000000000418afb FUN_00418a18 +0000000000418afc 0000000000418b4b FUN_00418afc +0000000000418b4c 0000000000418b4f operator.delete +0000000000418b50 0000000000418b9b FUN_00418b50 +0000000000418b9c 0000000000418c53 FUN_00418b9c +0000000000418c54 0000000000418ce3 FUN_00418c54 +0000000000418ce4 0000000000418dd3 FUN_00418ce4 +0000000000418dd4 0000000000418ec3 FUN_00418dd4 +0000000000418ec4 0000000000418f3b FUN_00418ec4 +0000000000418f64 0000000000418fcf FUN_00418f64 +0000000000418ff8 000000000041908f FUN_00418ff8 +00000000004190b8 000000000041918f FUN_004190b8 +0000000000419190 0000000000419267 FUN_00419190 +0000000000419268 000000000041932b FUN_00419268 +000000000041932c 00000000004193e7 FUN_0041932c +00000000004193e8 00000000004194bb FUN_004193e8 +00000000004194bc 000000000041958f FUN_004194bc +0000000000419590 00000000004195a3 FUN_00419590 +00000000004195a4 00000000004195b7 FUN_004195a4 +00000000004195b8 00000000004197cb FUN_004195b8 +0000000000419824 0000000000419a3b FUN_00419824 +0000000000419a94 0000000000419a9f what +0000000000419aa0 0000000000419ab3 ~bad_alloc +0000000000419ab4 0000000000419ad7 ~bad_alloc +0000000000419ad8 0000000000419ae3 what +0000000000419ae4 0000000000419af7 ~bad_cast +0000000000419af8 0000000000419b1b ~bad_cast +0000000000419b1c 0000000000419b27 what +0000000000419b28 0000000000419b3b ~bad_typeid +0000000000419b3c 0000000000419b5f ~bad_typeid +0000000000419b60 0000000000419c8f __dynamic_cast +0000000000419c90 0000000000419cc3 __cxa_bad_cast +0000000000419cc4 0000000000419cf7 __cxa_bad_typeid +0000000000419cf8 0000000000419d2b __cxa_throw_bad_array_new_length +0000000000419d2c 0000000000419d5f __cxa_throw_bad_array_length +0000000000419d60 0000000000419da3 FUN_00419d60 +0000000000419da4 0000000000419da7 _M_safe_bool_dummy +0000000000419da8 0000000000419e13 FUN_00419da8 +0000000000419e14 0000000000419e1b exception_ptr +0000000000419e1c 0000000000419e23 exception_ptr +0000000000419e24 0000000000419e43 _M_addref +0000000000419e44 0000000000419e4b exception_ptr +0000000000419e4c 0000000000419e57 exception_ptr +0000000000419e58 0000000000419eaf _M_release +0000000000419eb0 0000000000419eb3 ~exception_ptr +0000000000419eb4 0000000000419ebb _M_get +0000000000419ebc 0000000000419ecf swap +0000000000419ed0 0000000000419f0f operator= +0000000000419f10 0000000000419f1f operator! +0000000000419f20 0000000000419f43 operator.cast.to.function.pointer +0000000000419f44 0000000000419f4f __cxa_exception_type +0000000000419f50 0000000000419f63 operator== +0000000000419f64 0000000000419f7f operator!= +0000000000419f80 0000000000419ffb current_exception +0000000000419ffc 000000000041a077 rethrow_exception +000000000041a078 000000000041a093 set_new_handler +000000000041a094 000000000041a0a3 get_new_handler +000000000041a0a4 000000000041a233 __verbose_terminate_handler +000000000041a234 000000000041a337 __convert_to_v +000000000041a350 000000000041a453 __convert_to_v +000000000041a480 000000000041a5b3 __convert_to_v +000000000041a600 000000000041a633 FUN_0041a600 +000000000041a634 000000000041a63b FUN_0041a634 +000000000041a63c 000000000041a643 FUN_0041a63c +000000000041a644 000000000041a64b FUN_0041a644 +000000000041a64c 000000000041a65b FUN_0041a64c +000000000041a65c 000000000041a667 FUN_0041a65c +000000000041a668 000000000041a677 FUN_0041a668 +000000000041a678 000000000041a67f FUN_0041a678 +000000000041a680 000000000041a687 FUN_0041a680 +000000000041a688 000000000041a697 FUN_0041a688 +000000000041a698 000000000041a69f FUN_0041a698 +000000000041a6a0 000000000041a6ab FUN_0041a6a0 +000000000041a6ac 000000000041a6b3 FUN_0041a6ac +000000000041a6b4 000000000041a6f3 FUN_0041a6b4 +000000000041a718 000000000041a757 FUN_0041a718 +000000000041a77c 000000000041a7c3 FUN_0041a77c +000000000041a7e8 000000000041a82f FUN_0041a7e8 +000000000041a854 000000000041a88f FUN_0041a854 +000000000041a8b4 000000000041a8fb FUN_0041a8b4 +000000000041a8fc 000000000041a937 FUN_0041a8fc +000000000041a95c 000000000041a9a3 FUN_0041a95c +000000000041a9a4 000000000041aaf7 FUN_0041a9a4 +000000000041aaf8 000000000041abeb FUN_0041aaf8 +000000000041abec 000000000041ac07 FUN_0041abec +000000000041ac18 000000000041ac2b FUN_0041ac18 +000000000041ac3c 000000000041ad03 FUN_0041ac3c +000000000041ad04 000000000041ad2b FUN_0041ad04 +000000000041ad2c 000000000041ad3b FUN_0041ad2c +000000000041ad3c 000000000041ad63 FUN_0041ad3c +000000000041ad64 000000000041ad73 FUN_0041ad64 +000000000041ad74 000000000041adbf FUN_0041ad74 +000000000041adf4 000000000041ae3f FUN_0041adf4 +000000000041ae74 000000000041aec7 FUN_0041ae74 +000000000041aefc 000000000041af4f FUN_0041aefc +000000000041af84 000000000041b01f FUN_0041af84 +000000000041b020 000000000041b04b FUN_0041b020 +000000000041b04c 000000000041b0f7 FUN_0041b04c +000000000041b10c 000000000041b1b3 FUN_0041b10c +000000000041b1c8 000000000041b1cf FUN_0041b1c8 +000000000041b1d0 000000000041b1d7 FUN_0041b1d0 +000000000041b1d8 000000000041b273 FUN_0041b1d8 +000000000041b274 000000000041b29f FUN_0041b274 +000000000041b2a0 000000000041b34b FUN_0041b2a0 +000000000041b360 000000000041b407 FUN_0041b360 +000000000041b41c 000000000041b423 FUN_0041b41c +000000000041b424 000000000041b42b FUN_0041b424 +000000000041b42c 000000000041b433 FUN_0041b42c +000000000041b434 000000000041b4bf FUN_0041b434 +000000000041b4c0 000000000041b553 FUN_0041b4c0 +000000000041b554 000000000041b57f FUN_0041b554 +000000000041b5a8 000000000041b5c3 FUN_0041b5a8 +000000000041b5c4 000000000041b5cb FUN_0041b5c4 +000000000041b5cc 000000000041b5db FUN_0041b5cc +000000000041b5dc 000000000041b613 FUN_0041b5dc +000000000041b614 000000000041b61b FUN_0041b614 +000000000041b61c 000000000041b62b FUN_0041b61c +000000000041b62c 000000000041b647 FUN_0041b62c +000000000041b648 000000000041b64f FUN_0041b648 +000000000041b650 000000000041b65f FUN_0041b650 +000000000041b660 000000000041b697 FUN_0041b660 +000000000041b698 000000000041b69f FUN_0041b698 +000000000041b6a0 000000000041b6af FUN_0041b6a0 +000000000041b6b0 000000000041b6b3 FUN_0041b6b0 +000000000041b6b4 000000000041b743 FUN_0041b6b4 +000000000041b75c 000000000041b81b FUN_0041b75c +000000000041b840 000000000041b88b FUN_0041b840 +000000000041b88c 000000000041b913 FUN_0041b88c +000000000041b92c 000000000041b9e7 FUN_0041b92c +000000000041ba0c 000000000041ba0f FUN_0041ba0c +000000000041ba10 000000000041ba9f FUN_0041ba10 +000000000041bab8 000000000041bb77 FUN_0041bab8 +000000000041bb9c 000000000041bbe7 FUN_0041bb9c +000000000041bbe8 000000000041bc6f FUN_0041bbe8 +000000000041bc88 000000000041bd43 FUN_0041bc88 +000000000041bd68 000000000041bd6f FUN_0041bd68 +000000000041bd70 000000000041bd77 FUN_0041bd70 +000000000041bd78 000000000041be03 FUN_0041bd78 +000000000041be04 000000000041be8f FUN_0041be04 +000000000041be90 000000000041bf1b FUN_0041be90 +000000000041bf1c 000000000041bfa7 FUN_0041bf1c +000000000041bfa8 000000000041c033 FUN_0041bfa8 +000000000041c034 000000000041c0bf FUN_0041c034 +000000000041c0c0 000000000041c14b FUN_0041c0c0 +000000000041c14c 000000000041c1d7 FUN_0041c14c +000000000041c1d8 000000000041c263 FUN_0041c1d8 +000000000041c264 000000000041c2f7 FUN_0041c264 +000000000041c2f8 000000000041c38b FUN_0041c2f8 +000000000041c38c 000000000041c41f FUN_0041c38c +000000000041c420 000000000041c4b3 FUN_0041c420 +000000000041c4b4 000000000041c547 FUN_0041c4b4 +000000000041c548 000000000041c5db FUN_0041c548 +000000000041c5dc 000000000041c66f FUN_0041c5dc +000000000041c670 000000000041c703 FUN_0041c670 +000000000041c704 000000000041c797 FUN_0041c704 +000000000041c798 000000000041c7c3 FUN_0041c798 +000000000041c7d8 000000000041c80f FUN_0041c7d8 +000000000041c824 000000000041c85b FUN_0041c824 +000000000041c870 000000000041c8a7 FUN_0041c870 +000000000041c8bc 000000000041c8f3 FUN_0041c8bc +000000000041c908 000000000041c933 FUN_0041c908 +000000000041c948 000000000041c97f FUN_0041c948 +000000000041c994 000000000041c9cb FUN_0041c994 +000000000041c9e0 000000000041ca17 FUN_0041c9e0 +000000000041ca2c 000000000041ca9f FUN_0041ca2c +000000000041caa0 000000000041cb13 FUN_0041caa0 +000000000041cb14 000000000041cbc3 FUN_0041cb14 +000000000041cbc4 000000000041cc77 FUN_0041cbc4 +000000000041cc78 000000000041ccb7 FUN_0041cc78 +000000000041ccb8 000000000041ccf7 FUN_0041ccb8 +000000000041ccf8 000000000041ce63 FUN_0041ccf8 +000000000041ce64 000000000041cfcf FUN_0041ce64 +000000000041cfd0 000000000041d12f FUN_0041cfd0 +000000000041d130 000000000041d297 FUN_0041d130 +000000000041d298 000000000041d70f FUN_0041d298 +000000000041d710 000000000041db93 FUN_0041d710 +000000000041db94 000000000041de17 FUN_0041db94 +000000000041de18 000000000041e0af FUN_0041de18 +000000000041e0b0 000000000041e0e7 FUN_0041e0b0 +000000000041e0e8 000000000041e123 FUN_0041e0e8 +000000000041e124 000000000041e27f FUN_0041e124 +000000000041e2a8 000000000041e2af FUN_0041e2a8 +000000000041e2b0 000000000041e2f3 FUN_0041e2b0 +000000000041e2f4 000000000041e347 FUN_0041e2f4 +000000000041e348 000000000041e4cb FUN_0041e348 +000000000041e4cc 000000000041e55b FUN_0041e4cc +000000000041e55c 000000000041e6c7 FUN_0041e55c +000000000041e6c8 000000000041e7ab FUN_0041e6c8 +000000000041e864 000000000041e8af FUN_0041e864 +000000000041e8b0 000000000041e903 FUN_0041e8b0 +000000000041e904 000000000041e983 FUN_0041e904 +000000000041e984 000000000041e993 FUN_0041e984 +000000000041e994 000000000041ea1b FUN_0041e994 +000000000041ea1c 000000000041ea2b FUN_0041ea1c +000000000041ea2c 000000000041eaab FUN_0041ea2c +000000000041eaac 000000000041eabb FUN_0041eaac +000000000041eabc 000000000041eb43 FUN_0041eabc +000000000041eb44 000000000041eb53 FUN_0041eb44 +000000000041eb54 000000000041ebdf FUN_0041eb54 +000000000041ebe0 000000000041ebe7 FUN_0041ebe0 +000000000041ebe8 000000000041ebf7 FUN_0041ebe8 +000000000041ebf8 000000000041ecff FUN_0041ebf8 +000000000041ed00 000000000041ed07 FUN_0041ed00 +000000000041ed08 000000000041ed9b FUN_0041ed08 +000000000041ed9c 000000000041eda3 FUN_0041ed9c +000000000041eda4 000000000041edb3 FUN_0041eda4 +000000000041edb4 000000000041eec3 FUN_0041edb4 +000000000041eec4 000000000041f0eb FUN_0041eec4 +000000000041f0ec 000000000041f2c3 FUN_0041f0ec +000000000041f2c4 000000000041f3b3 FUN_0041f2c4 +000000000041f3b4 000000000041f597 FUN_0041f3b4 +000000000041f598 000000000041f617 FUN_0041f598 +000000000041f618 000000000041f69b FUN_0041f618 +000000000041f6f4 000000000041f797 FUN_0041f6f4 +000000000041f7f8 000000000041f8e3 FUN_0041f7f8 +000000000041f93c 000000000041fa47 FUN_0041f93c +000000000041faa8 000000000041fb93 FUN_0041faa8 +000000000041fbec 000000000041fcf7 FUN_0041fbec +000000000041fd58 000000000041fdd7 FUN_0041fd58 +000000000041fdd8 000000000041fddf FUN_0041fdd8 +000000000041fde0 000000000041fde7 FUN_0041fde0 +000000000041fde8 000000000041fdef FUN_0041fde8 +000000000041fdf0 000000000041fe4f FUN_0041fdf0 +000000000041fe50 000000000041feb3 FUN_0041fe50 +000000000041feb4 000000000041feff FUN_0041feb4 +000000000041ff00 000000000041ff7b FUN_0041ff00 +000000000041ffd4 0000000000420073 FUN_0041ffd4 +00000000004200d4 00000000004201b7 FUN_004200d4 +0000000000420210 0000000000420317 FUN_00420210 +0000000000420378 000000000042045b FUN_00420378 +00000000004204b4 00000000004205bb FUN_004204b4 +000000000042061c 000000000042069b FUN_0042061c +000000000042069c 00000000004206a3 FUN_0042069c +00000000004206a4 00000000004206ab FUN_004206a4 +00000000004206ac 00000000004206b3 FUN_004206ac +00000000004206b4 0000000000420713 FUN_004206b4 +0000000000420714 0000000000420777 FUN_00420714 +0000000000420778 00000000004207c3 FUN_00420778 +00000000004207c4 000000000042088f FUN_004207c4 +00000000004208fc 00000000004209cf FUN_004208fc +0000000000420a4c 0000000000420b7f FUN_00420a4c +0000000000420bec 0000000000420d27 FUN_00420bec +0000000000420da0 0000000000420ed3 FUN_00420da0 +0000000000420f40 000000000042107b FUN_00420f40 +00000000004210f4 00000000004211af FUN_004210f4 +00000000004211b0 00000000004211b7 FUN_004211b0 +00000000004211b8 00000000004211bf FUN_004211b8 +00000000004211c0 00000000004211c7 FUN_004211c0 +00000000004211c8 0000000000421223 FUN_004211c8 +0000000000421224 0000000000421283 FUN_00421224 +0000000000421284 00000000004212cf FUN_00421284 +00000000004212d0 0000000000421307 FUN_004212d0 +0000000000421308 0000000000421347 FUN_00421308 +0000000000421348 00000000004214a3 FUN_00421348 +00000000004214cc 00000000004214d3 FUN_004214cc +00000000004214d4 000000000042152f FUN_004214d4 +0000000000421530 0000000000421583 FUN_00421530 +0000000000421584 0000000000421707 FUN_00421584 +0000000000421708 000000000042179f FUN_00421708 +00000000004217a0 000000000042190b FUN_004217a0 +000000000042190c 0000000000421a1b FUN_0042190c +0000000000421a1c 0000000000421c27 FUN_00421a1c +0000000000421c28 0000000000421e07 FUN_00421c28 +0000000000421e08 0000000000421efb FUN_00421e08 +0000000000421efc 00000000004220e3 FUN_00421efc +00000000004220e4 0000000000422163 FUN_004220e4 +0000000000422164 000000000042216b FUN_00422164 +000000000042216c 0000000000422173 FUN_0042216c +0000000000422174 000000000042217b FUN_00422174 +000000000042217c 0000000000422183 FUN_0042217c +0000000000422184 000000000042218b FUN_00422184 +000000000042218c 0000000000422193 FUN_0042218c +0000000000422194 000000000042219b FUN_00422194 +000000000042219c 00000000004221a3 FUN_0042219c +00000000004221a4 00000000004221ab FUN_004221a4 +00000000004221ac 0000000000422247 FUN_004221ac +0000000000422248 0000000000422337 FUN_00422248 +0000000000422388 00000000004223d3 FUN_00422388 +00000000004223d4 0000000000422427 FUN_004223d4 +0000000000422428 00000000004224ab FUN_00422428 +0000000000422504 00000000004225a7 FUN_00422504 +0000000000422608 0000000000422687 FUN_00422608 +0000000000422688 0000000000422707 FUN_00422688 +0000000000422708 0000000000422717 FUN_00422708 +0000000000422718 000000000042279f FUN_00422718 +00000000004227a0 00000000004227af FUN_004227a0 +00000000004227b0 000000000042282b FUN_004227b0 +0000000000422884 0000000000422923 FUN_00422884 +0000000000422984 0000000000422a03 FUN_00422984 +0000000000422a04 0000000000422a83 FUN_00422a04 +0000000000422a84 0000000000422a93 FUN_00422a84 +0000000000422a94 0000000000422b1b FUN_00422a94 +0000000000422b1c 0000000000422b2b FUN_00422b1c +0000000000422b2c 0000000000422bf7 FUN_00422b2c +0000000000422c64 0000000000422d37 FUN_00422c64 +0000000000422db4 0000000000422e6f FUN_00422db4 +0000000000422e70 0000000000422efb FUN_00422e70 +0000000000422efc 0000000000422f03 FUN_00422efc +0000000000422f04 0000000000422f13 FUN_00422f04 +0000000000422f14 000000000042302b FUN_00422f14 +000000000042302c 0000000000423033 FUN_0042302c +0000000000423034 0000000000423097 FUN_00423034 +0000000000423098 00000000004230fb FUN_00423098 +00000000004230fc 000000000042315b FUN_004230fc +000000000042315c 00000000004231bb FUN_0042315c +00000000004231bc 000000000042321b FUN_004231bc +000000000042321c 0000000000423277 FUN_0042321c +0000000000423278 0000000000423363 FUN_00423278 +00000000004233bc 00000000004234c7 FUN_004233bc +0000000000423528 000000000042360b FUN_00423528 +0000000000423664 000000000042376b FUN_00423664 +00000000004237cc 00000000004238ff FUN_004237cc +000000000042396c 0000000000423aa7 FUN_0042396c +0000000000423b20 0000000000423c0b FUN_00423b20 +0000000000423c64 0000000000423d6f FUN_00423c64 +0000000000423dd0 0000000000423eb3 FUN_00423dd0 +0000000000423f0c 0000000000424013 FUN_00423f0c +0000000000424074 00000000004241a7 FUN_00424074 +0000000000424214 000000000042434f FUN_00424214 +00000000004243c8 0000000000424413 FUN_004243c8 +0000000000424414 000000000042445f FUN_00424414 +0000000000424460 00000000004244ab FUN_00424460 +00000000004244ac 000000000042453f FUN_004244ac +0000000000424540 0000000000424547 FUN_00424540 +0000000000424548 0000000000424557 FUN_00424548 +0000000000424558 0000000000424563 what +0000000000424564 0000000000424577 ~bad_array_length +0000000000424578 000000000042459b ~bad_array_length +000000000042459c 00000000004245a7 what +00000000004245a8 00000000004245bb ~bad_array_new_length +00000000004245bc 00000000004245df ~bad_array_new_length +00000000004245e0 000000000042467f FUN_004245e0 +0000000000424680 00000000004246df FUN_00424680 +00000000004246e0 000000000042488f FUN_004246e0 +0000000000424890 0000000000424b4f FUN_00424890 +0000000000424b50 0000000000424c1b FUN_00424b50 +0000000000424c1c 0000000000424c93 FUN_00424c1c +0000000000424c94 0000000000424d1b FUN_00424c94 +0000000000424d1c 0000000000424d97 FUN_00424d1c +0000000000424d98 0000000000424e2f FUN_00424d98 +0000000000424e30 0000000000424f1f FUN_00424e30 +0000000000424f20 0000000000424fd3 FUN_00424f20 +0000000000424fd4 0000000000425127 FUN_00424fd4 +0000000000425128 00000000004251f3 FUN_00425128 +00000000004251f4 000000000042529b FUN_004251f4 +000000000042529c 0000000000425327 FUN_0042529c +0000000000425328 00000000004253cb FUN_00425328 +00000000004253cc 00000000004254b7 FUN_004253cc +00000000004254b8 00000000004255a3 FUN_004254b8 +00000000004255a4 0000000000426a8f FUN_004255a4 +0000000000426a90 00000000004271e3 FUN_00426a90 +00000000004271e4 000000000042888b FUN_004271e4 +000000000042888c 000000000042899b FUN_0042888c +000000000042899c 0000000000428b8f FUN_0042899c +0000000000428b90 0000000000429113 FUN_00428b90 +0000000000429114 00000000004296bf FUN_00429114 +00000000004296c0 0000000000429d83 FUN_004296c0 +0000000000429d84 0000000000429efb FUN_00429d84 +0000000000429efc 000000000042a563 FUN_00429efc +000000000042a564 000000000042a693 FUN_0042a564 +000000000042a694 000000000042cdc7 FUN_0042a694 +000000000042cdc8 00000000004307d3 FUN_0042cdc8 +00000000004307d4 0000000000431053 FUN_004307d4 +0000000000431054 0000000000431367 FUN_00431054 +0000000000431368 000000000043162f FUN_00431368 +0000000000431630 00000000004318df FUN_00431630 +00000000004318e0 00000000004319b3 FUN_004318e0 +00000000004319b4 0000000000431abb FUN_004319b4 +0000000000431abc 0000000000431eff FUN_00431abc +0000000000431f00 000000000043205b __cxa_demangle +000000000043205c 000000000043208b __gcclibcxx_demangle_callback +000000000043208c 00000000004320c7 __cxa_current_exception_type +00000000004320c8 000000000043218b FUN_004320c8 +000000000043218c 0000000000432207 FUN_0043218c +0000000000432208 0000000000432213 FUN_00432208 +0000000000432214 000000000043227b FUN_00432214 +000000000043227c 00000000004322fb FUN_0043227c +00000000004322fc 0000000000432383 FUN_004322fc +0000000000432394 00000000004323ff FUN_00432394 +0000000000432400 000000000043240f FUN_00432400 +0000000000432410 0000000000432427 FUN_00432410 +0000000000432438 000000000043243f FUN_00432438 +0000000000432440 00000000004324bf FUN_00432440 +00000000004324c0 0000000000432533 FUN_004324c0 +0000000000432544 0000000000432573 FUN_00432544 +0000000000432584 000000000043265f FUN_00432584 +0000000000432660 0000000000432693 FUN_00432660 +00000000004326a8 00000000004326af FUN_004326a8 +00000000004326b0 0000000000432777 FUN_004326b0 +0000000000432788 00000000004328c3 __getf2 +00000000004328c4 00000000004329ff __lttf2 +0000000000432a00 0000000000432a27 FUN_00432a00 +0000000000432a28 0000000000432a67 FUN_00432a28 +0000000000432a68 0000000000432b57 FUN_00432a68 +0000000000432b58 0000000000432c6b FUN_00432b58 +0000000000432c6c 0000000000432ca7 FUN_00432c6c +0000000000432ca8 0000000000432cff _Unwind_GetGR +0000000000432d00 0000000000432e0b FUN_00432d00 +0000000000432e0c 0000000000432e13 _Unwind_GetCFA +0000000000432e14 0000000000432e6b _Unwind_SetGR +0000000000432e6c 0000000000432e73 _Unwind_GetIP +0000000000432e74 0000000000432e87 _Unwind_GetIPInfo +0000000000432e88 0000000000432e8f _Unwind_SetIP +0000000000432e90 0000000000432e97 _Unwind_GetLanguageSpecificData +0000000000432e98 0000000000432e9f _Unwind_GetRegionStart +0000000000432ea0 0000000000432ec7 _Unwind_FindEnclosingFunction +0000000000432ec8 0000000000432ecf _Unwind_GetDataRelBase +0000000000432ed0 0000000000432ed7 _Unwind_GetTextRelBase +0000000000432ed8 0000000000432f4f FUN_00432ed8 +0000000000432f50 0000000000433447 FUN_00432f50 +0000000000433448 000000000043386b FUN_00433448 +000000000043386c 0000000000433e1f FUN_0043386c +0000000000433e20 000000000043402b FUN_00433e20 +000000000043402c 0000000000434107 FUN_0043402c +0000000000434108 0000000000434153 FUN_00434108 +0000000000434154 0000000000434213 FUN_00434154 +0000000000434214 00000000004342ff FUN_00434214 +0000000000434300 00000000004343f3 __frame_state_for +00000000004343f4 00000000004343f7 FUN_004343f4 +00000000004343f8 000000000043456f _Unwind_RaiseException +0000000000434570 0000000000434663 _Unwind_ForcedUnwind +0000000000434664 000000000043475f _Unwind_Resume +0000000000434760 0000000000434857 _Unwind_Resume_or_Rethrow +0000000000434858 000000000043487b _Unwind_DeleteException +000000000043487c 000000000043494b _Unwind_Backtrace +000000000043494c 0000000000434973 FUN_0043494c +0000000000434974 00000000004349b3 FUN_00434974 +00000000004349b4 00000000004349cf FUN_004349b4 +00000000004349d0 0000000000434a8f FUN_004349d0 +0000000000434a90 0000000000434b43 FUN_00434a90 +0000000000434b44 0000000000434ba3 FUN_00434b44 +0000000000434ba4 0000000000434c03 FUN_00434ba4 +0000000000434c04 0000000000434c63 FUN_00434c04 +0000000000434c64 0000000000434d53 FUN_00434c64 +0000000000434d54 0000000000434de3 FUN_00434d54 +0000000000434de4 0000000000434edf FUN_00434de4 +0000000000434ee0 000000000043503f FUN_00434ee0 +0000000000435040 000000000043504f FUN_00435040 +0000000000435050 000000000043546b FUN_00435050 +000000000043546c 0000000000435507 FUN_0043546c +0000000000435508 0000000000435667 FUN_00435508 +0000000000435668 000000000043579b FUN_00435668 +000000000043579c 0000000000435d0b FUN_0043579c +0000000000435d0c 0000000000435da7 __register_frame_info_bases +0000000000435da8 0000000000435db3 __register_frame_info +0000000000435db4 0000000000435df3 __register_frame +0000000000435df4 0000000000435e87 __register_frame_info_table_bases +0000000000435e88 0000000000435e93 __register_frame_info_table +0000000000435e94 0000000000435ebf __register_frame_table +0000000000435ec0 0000000000435fbf __deregister_frame_info_bases +0000000000435fc0 0000000000435fc3 __deregister_frame_info +0000000000435fc4 0000000000435fe7 __deregister_frame +0000000000435fe8 00000000004361ab _Unwind_Find_FDE +00000000004361ac 000000000043620b __sfp_handle_exceptions +0000000000548000 0000000000548000 strerror +0000000000548008 0000000000548008 memcpy +0000000000548010 0000000000548010 fopen +0000000000548018 0000000000548018 gettimeofday +0000000000548020 0000000000548020 cos +0000000000548028 0000000000548028 writev +0000000000548030 0000000000548030 memchr +0000000000548038 0000000000548038 gzclose +0000000000548040 0000000000548040 asprintf +0000000000548048 0000000000548048 opendir +0000000000548050 0000000000548050 __ctype_get_mb_cur_max +0000000000548058 0000000000548058 sin +0000000000548060 0000000000548060 logf +0000000000548068 0000000000548068 strncpy +0000000000548070 0000000000548070 usleep +0000000000548078 0000000000548078 towlower +0000000000548080 0000000000548080 mbrtowc +0000000000548088 0000000000548088 btowc +0000000000548090 0000000000548090 getwc +0000000000548098 0000000000548098 pthread_mutex_destroy +00000000005480a0 00000000005480a0 close +00000000005480a8 00000000005480a8 pthread_mutexattr_settype +00000000005480b0 00000000005480b0 wmemmove +00000000005480b8 00000000005480b8 getenv +00000000005480c0 00000000005480c0 strftime +00000000005480c8 00000000005480c8 gzgets +00000000005480d0 00000000005480d0 pthread_join +00000000005480d8 00000000005480d8 fcntl +00000000005480e0 00000000005480e0 pthread_mutex_trylock +00000000005480e8 00000000005480e8 wcslen +00000000005480f0 00000000005480f0 __android_log_write +00000000005480f8 00000000005480f8 clock_gettime +0000000000548100 0000000000548100 readlink +0000000000548108 0000000000548108 sscanf +0000000000548110 0000000000548110 free +0000000000548118 0000000000548118 sqrt +0000000000548120 0000000000548120 fread +0000000000548128 0000000000548128 strchr +0000000000548130 0000000000548130 strtold +0000000000548138 0000000000548138 calloc +0000000000548140 0000000000548140 pthread_key_delete +0000000000548148 0000000000548148 mkdir +0000000000548150 0000000000548150 strcmp +0000000000548158 0000000000548158 AndroidBitmap_lockPixels +0000000000548160 0000000000548160 malloc +0000000000548168 0000000000548168 strxfrm +0000000000548170 0000000000548170 wmemset +0000000000548178 0000000000548178 nanosleep +0000000000548180 0000000000548180 pthread_cond_destroy +0000000000548188 0000000000548188 isxdigit +0000000000548190 0000000000548190 sprintf +0000000000548198 0000000000548198 log10 +00000000005481a8 00000000005481a8 pthread_setspecific +00000000005481b0 00000000005481b0 read +00000000005481b8 00000000005481b8 memmove +00000000005481c0 00000000005481c0 pthread_once +00000000005481c8 00000000005481c8 __google_potentially_blocking_region_end +00000000005481d0 00000000005481d0 feof +00000000005481d8 00000000005481d8 strlen +00000000005481e0 00000000005481e0 wcscoll +00000000005481e8 00000000005481e8 atan2 +00000000005481f0 00000000005481f0 access +00000000005481f8 00000000005481f8 gettid +0000000000548200 0000000000548200 strstr +0000000000548208 0000000000548208 pthread_mutexattr_destroy +0000000000548210 0000000000548210 fclose +0000000000548218 0000000000548218 realloc +0000000000548220 0000000000548220 iswctype +0000000000548228 0000000000548228 gzeof +0000000000548230 0000000000548230 strtod +0000000000548238 0000000000548238 wcsftime +0000000000548240 0000000000548240 munmap +0000000000548248 0000000000548248 fprintf +0000000000548250 0000000000548250 wctype +0000000000548258 0000000000548258 putc +0000000000548260 0000000000548260 pow +0000000000548268 0000000000548268 strncmp +0000000000548270 0000000000548270 fputc +0000000000548278 0000000000548278 lrintf +0000000000548280 0000000000548280 wmemcpy +0000000000548288 0000000000548288 log +0000000000548290 0000000000548290 exp +0000000000548298 0000000000548298 snprintf +00000000005482a0 00000000005482a0 getc +00000000005482a8 00000000005482a8 pthread_attr_setdetachstate +00000000005482b0 00000000005482b0 strtol +00000000005482b8 00000000005482b8 __android_log_print +00000000005482c0 00000000005482c0 ftell +00000000005482c8 00000000005482c8 remove +00000000005482d0 00000000005482d0 towupper +00000000005482d8 00000000005482d8 pthread_mutex_unlock +00000000005482e0 00000000005482e0 dlsym +00000000005482e8 00000000005482e8 strcoll +00000000005482f0 00000000005482f0 pthread_cond_wait +00000000005482f8 00000000005482f8 putwc +0000000000548300 0000000000548300 gzputs +0000000000548308 0000000000548308 wctob +0000000000548310 0000000000548310 poll +0000000000548318 0000000000548318 pthread_cond_timedwait +0000000000548320 0000000000548320 pthread_create +0000000000548328 0000000000548328 pthread_cond_broadcast +0000000000548330 0000000000548330 fwrite +0000000000548338 0000000000548338 mmap +0000000000548340 0000000000548340 strcpy +0000000000548348 0000000000548348 fileno +0000000000548350 0000000000548350 vsnprintf +0000000000548358 0000000000548358 lrint +0000000000548360 0000000000548360 wmemcmp +0000000000548368 0000000000548368 syscall +0000000000548370 0000000000548370 memset +0000000000548378 0000000000548378 pthread_mutex_init +0000000000548380 0000000000548380 fdopen +0000000000548388 0000000000548388 dlopen +0000000000548390 0000000000548390 pthread_cond_signal +0000000000548398 0000000000548398 __google_potentially_blocking_region_begin +00000000005483a0 00000000005483a0 gzrewind +00000000005483a8 00000000005483a8 stat +00000000005483b0 00000000005483b0 pthread_getspecific +00000000005483b8 00000000005483b8 wmemchr +00000000005483c0 00000000005483c0 acos +00000000005483c8 00000000005483c8 ioctl +00000000005483d0 00000000005483d0 abort +00000000005483d8 00000000005483d8 __cxa_atexit +00000000005483e0 00000000005483e0 atoi +00000000005483e8 00000000005483e8 fseek +00000000005483f0 00000000005483f0 sqrtf +00000000005483f8 00000000005483f8 setvbuf +0000000000548400 0000000000548400 gzopen +0000000000548408 0000000000548408 printf +0000000000548410 0000000000548410 AndroidBitmap_unlockPixels +0000000000548418 0000000000548418 memcmp +0000000000548420 0000000000548420 write +0000000000548428 0000000000548428 __errno +0000000000548438 0000000000548438 tolower +0000000000548440 0000000000548440 pthread_mutexattr_init +0000000000548448 0000000000548448 wcrtomb +0000000000548450 0000000000548450 ungetc +0000000000548458 0000000000548458 pthread_mutex_lock +0000000000548460 0000000000548460 toupper +0000000000548468 0000000000548468 pthread_attr_destroy +0000000000548470 0000000000548470 readdir +0000000000548478 0000000000548478 __cxa_finalize +0000000000548480 0000000000548480 localtime +0000000000548488 0000000000548488 fflush +0000000000548490 0000000000548490 pthread_key_create +0000000000548498 0000000000548498 pipe +00000000005484a0 00000000005484a0 lseek +00000000005484a8 00000000005484a8 atan +00000000005484b0 00000000005484b0 time +00000000005484b8 00000000005484b8 pthread_attr_init +00000000005484c0 00000000005484c0 uname +00000000005484c8 00000000005484c8 __stack_chk_fail +00000000005484d0 00000000005484d0 wcsxfrm +00000000005484d8 00000000005484d8 strtof +00000000005484e0 00000000005484e0 fputs +00000000005484e8 00000000005484e8 rewind +00000000005484f0 00000000005484f0 fgets +00000000005484f8 00000000005484f8 ungetwc +0000000000548500 0000000000548500 pthread_cond_init +0000000000548508 0000000000548508 mkstemp +0000000000548510 0000000000548510 AndroidBitmap_getInfo +0000000000548518 0000000000548518 setlocale +0000000000548520 0000000000548520 dl_iterate_phdr +0000000000548528 0000000000548528 vsprintf +0000000000548530 0000000000548530 open +0000000000548538 0000000000548538 fscanf +0000000000548540 0000000000548540 strdup +0000000000548548 0000000000548548 strrchr +0000000000548550 0000000000548550 localtime_r +0000000000548558 0000000000548558 closedir +0000000000548560 0000000000548560 fstat +TOTAL 7117 diff --git a/analysis/ida/export/ghidra_dump/all_functions_libmagcore.so_00100000.txt b/analysis/ida/export/ghidra_dump/all_functions_libmagcore.so_00100000.txt new file mode 100644 index 0000000..acb7a5e --- /dev/null +++ b/analysis/ida/export/ghidra_dump/all_functions_libmagcore.so_00100000.txt @@ -0,0 +1,842 @@ +0000000000105cb8 0000000000105cd1 _init +0000000000105ce0 0000000000105ceb FUN_00105ce0 +0000000000105cf0 0000000000105cf5 exp +0000000000105d00 0000000000105d05 pthread_getspecific +0000000000105d10 0000000000105d15 pthread_cond_destroy +0000000000105d20 0000000000105d25 libusb_cancel_transfer +0000000000105d30 0000000000105d35 libusb_get_device_address +0000000000105d40 0000000000105d45 memset +0000000000105d50 0000000000105d55 ftell +0000000000105d60 0000000000105d65 libusb_close +0000000000105d70 0000000000105d75 libusb_get_active_config_descriptor +0000000000105d80 0000000000105d85 libusb_unref_device +0000000000105d90 0000000000105d95 close +0000000000105da0 0000000000105da5 libusb_unlock_event_waiters +0000000000105db0 0000000000105db5 libusb_open +0000000000105dc0 0000000000105dc5 MAG_Free +0000000000105dd0 0000000000105dd5 ioctl +0000000000105de0 0000000000105de5 libusb_claim_interface +0000000000105df0 0000000000105df5 pthread_setspecific +0000000000105e00 0000000000105e05 libusb_alloc_transfer +0000000000105e10 0000000000105e15 libusb_set_configuration +0000000000105e20 0000000000105e25 __gmon_start__ +0000000000105e30 0000000000105e35 recvmsg +0000000000105e40 0000000000105e45 operator.new[] +0000000000105e50 0000000000105e55 uname +0000000000105e60 0000000000105e65 fseek +0000000000105e70 0000000000105e75 pthread_cond_signal +0000000000105e80 0000000000105e85 operator.delete +0000000000105e90 0000000000105e95 _M_dispose +0000000000105ea0 0000000000105ea5 pthread_mutexattr_destroy +0000000000105eb0 0000000000105eb5 libusb_free_device_list +0000000000105ec0 0000000000105ec5 __assert_fail +0000000000105ed0 0000000000105ed5 __printf_chk +0000000000105ee0 0000000000105ee5 gettimeofday +0000000000105ef0 0000000000105ef5 MAG_GetRectTemperatureInfo +0000000000105f00 0000000000105f05 libusb_get_device_list +0000000000105f10 0000000000105f15 Init +0000000000105f20 0000000000105f25 MAG_GetCamInfo +0000000000105f30 0000000000105f35 read +0000000000105f40 0000000000105f45 strncmp +0000000000105f50 0000000000105f55 malloc +0000000000105f60 0000000000105f65 fopen +0000000000105f70 0000000000105f75 libusb_control_transfer +0000000000105f80 0000000000105f85 pthread_cond_timedwait +0000000000105f90 0000000000105f95 __memcpy_chk +0000000000105fa0 0000000000105fa5 libusb_get_config_descriptor +0000000000105fb0 0000000000105fb5 __cxa_atexit +0000000000105fc0 0000000000105fc5 libusb_try_lock_events +0000000000105fd0 0000000000105fd5 setsockopt +0000000000105fe0 0000000000105fe5 MAG_StopProcessImage +0000000000105ff0 0000000000105ff5 pthread_mutex_init +0000000000106000 0000000000106005 fgets +0000000000106010 0000000000106015 __vsnprintf_chk +0000000000106020 0000000000106025 libusb_handle_events_timeout_completed +0000000000106030 0000000000106035 pthread_attr_destroy +0000000000106040 0000000000106045 libusb_has_capability +0000000000106050 0000000000106055 getpwuid +0000000000106060 0000000000106065 operator<< +0000000000106070 0000000000106075 __strdup +0000000000106080 0000000000106085 free +0000000000106090 0000000000106095 libusb_get_bus_number +00000000001060a0 00000000001060a5 strlen +00000000001060b0 00000000001060b5 libusb_free_config_descriptor +00000000001060c0 00000000001060c5 _M_destroy +00000000001060d0 00000000001060d5 __asprintf_chk +00000000001060e0 00000000001060e5 pthread_create +00000000001060f0 00000000001060f5 opendir +0000000000106100 0000000000106105 __xstat +0000000000106110 0000000000106115 pthread_cond_init +0000000000106120 0000000000106125 libusb_submit_transfer +0000000000106130 0000000000106135 __ctype_b_loc +0000000000106140 0000000000106145 __cxa_finalize +0000000000106150 0000000000106155 libusb_event_handler_active +0000000000106160 0000000000106165 pthread_key_delete +0000000000106170 0000000000106175 readdir +0000000000106180 0000000000106185 libusb_ref_device +0000000000106190 0000000000106195 libusb_handle_events_timeout +00000000001061a0 00000000001061a5 libusb_exit +00000000001061b0 00000000001061b5 strrchr +00000000001061c0 00000000001061c5 syscall +00000000001061d0 00000000001061d5 libusb_free_bos_descriptor +00000000001061e0 00000000001061e5 sscanf +00000000001061f0 00000000001061f5 libusb_wait_for_event +0000000000106200 0000000000106205 libusb_init +0000000000106210 0000000000106215 pipe +0000000000106220 0000000000106225 libusb_free_transfer +0000000000106230 0000000000106235 pthread_join +0000000000106240 0000000000106245 poll +0000000000106250 0000000000106255 pthread_mutex_trylock +0000000000106260 0000000000106265 libusb_unlock_events +0000000000106270 0000000000106275 pow +0000000000106280 0000000000106285 libusb_set_auto_detach_kernel_driver +0000000000106290 0000000000106295 usleep +00000000001062a0 00000000001062a5 strerror +00000000001062b0 00000000001062b5 MAG_IsLinked +00000000001062c0 00000000001062c5 fputs +00000000001062d0 00000000001062d5 lseek +00000000001062e0 00000000001062e5 strtol +00000000001062f0 00000000001062f5 readlink +0000000000106300 0000000000106305 libusb_hotplug_deregister_callback +0000000000106310 0000000000106315 __strcpy_chk +0000000000106320 0000000000106325 __ostream_insert> +0000000000106330 0000000000106335 memmove +0000000000106340 0000000000106345 strchr +0000000000106350 0000000000106355 socket +0000000000106360 0000000000106365 fread +0000000000106370 0000000000106375 getenv +0000000000106380 0000000000106385 libusb_get_next_timeout +0000000000106390 0000000000106395 __errno_location +00000000001063a0 00000000001063a5 pthread_mutexattr_settype +00000000001063b0 00000000001063b5 __stack_chk_fail +00000000001063c0 00000000001063c5 strcmp +00000000001063d0 00000000001063d5 __cxa_allocate_exception +00000000001063e0 00000000001063e5 libusb_error_name +00000000001063f0 00000000001063f5 assign +0000000000106400 0000000000106405 MAG_IsChannelAvailable +0000000000106410 0000000000106415 nanosleep +0000000000106420 0000000000106425 getuid +0000000000106430 0000000000106435 pthread_cond_wait +0000000000106440 0000000000106445 operator.delete[] +0000000000106450 0000000000106455 libusb_get_device_descriptor +0000000000106460 0000000000106465 calloc +0000000000106470 0000000000106475 munmap +0000000000106480 0000000000106485 feof +0000000000106490 0000000000106495 __cxa_throw +00000000001064a0 00000000001064a5 fclose +00000000001064b0 00000000001064b5 libusb_handle_events_completed +00000000001064c0 00000000001064c5 strncpy +00000000001064d0 00000000001064d5 pthread_attr_init +00000000001064e0 00000000001064e5 localtime_r +00000000001064f0 00000000001064f5 __cxa_end_catch +0000000000106500 0000000000106505 __throw_bad_alloc +0000000000106510 0000000000106515 fscanf +0000000000106520 0000000000106525 closedir +0000000000106530 0000000000106535 __sprintf_chk +0000000000106540 0000000000106545 libusb_get_port_numbers +0000000000106550 0000000000106555 MAG_LinkCameraEx +0000000000106560 0000000000106565 __snprintf_chk +0000000000106570 0000000000106575 access +0000000000106580 0000000000106585 endl> +0000000000106590 0000000000106595 __cxa_begin_catch +00000000001065a0 00000000001065a5 bind +00000000001065b0 00000000001065b5 libusb_bulk_transfer +00000000001065c0 00000000001065c5 fwrite +00000000001065d0 00000000001065d5 pthread_mutex_lock +00000000001065e0 00000000001065e5 realloc +00000000001065f0 00000000001065f5 timerfd_create +0000000000106600 0000000000106605 pthread_mutexattr_init +0000000000106610 0000000000106615 pthread_key_create +0000000000106620 0000000000106625 libusb_lock_events +0000000000106630 0000000000106635 timerfd_settime +0000000000106640 0000000000106645 localtime +0000000000106650 0000000000106655 pthread_mutex_destroy +0000000000106660 0000000000106665 write +0000000000106670 0000000000106675 operator.new +0000000000106680 0000000000106685 _Unwind_Resume +0000000000106690 0000000000106695 pthread_cond_broadcast +00000000001066a0 00000000001066a5 clock_gettime +00000000001066b0 00000000001066b5 sqrt +00000000001066c0 00000000001066c5 strtoul +00000000001066d0 00000000001066d5 pthread_mutex_unlock +00000000001066e0 00000000001066e5 memcpy +00000000001066f0 00000000001066f5 fcntl +0000000000106700 0000000000106705 libusb_release_interface +0000000000106710 0000000000106715 open +0000000000106720 0000000000106725 __open_2 +0000000000106730 0000000000106735 mmap +0000000000106740 0000000000106745 libusb_lock_event_waiters +0000000000106750 0000000000106755 mkdir +0000000000106760 0000000000106765 time +0000000000106770 0000000000106775 fflush +0000000000106780 0000000000106785 sqrtf +0000000000106790 0000000000106795 pthread_attr_setdetachstate +00000000001067a0 00000000001067cd entry +00000000001067d0 000000000010680f _INIT_2 +0000000000106810 000000000010683d _INIT_3 +0000000000106840 000000000010686d _INIT_4 +0000000000106870 000000000010689d _INIT_5 +00000000001068a0 00000000001068cb FUN_001068a0 +00000000001068d0 000000000010690b FUN_001068d0 +0000000000106910 0000000000106941 _FINI_0 +0000000000106950 0000000000106984 _INIT_0 +0000000000106990 00000000001069d3 FUN_00106990 +00000000001069e0 00000000001069f1 FUN_001069e0 +0000000000106a00 0000000000106a3e FUN_00106a00 +0000000000106a40 0000000000106b3c FUN_00106a40 +0000000000106b40 0000000000106d2a FUN_00106b40 +0000000000106d30 0000000000106d3f FUN_00106d30 +0000000000106d40 0000000000106d44 FUN_00106d40 +0000000000106d50 0000000000106d71 FUN_00106d50 +0000000000106d80 0000000000106da1 FUN_00106d80 +0000000000106db0 0000000000106dd1 FUN_00106db0 +0000000000106de0 0000000000106e04 FUN_00106de0 +0000000000106e10 0000000000106e34 FUN_00106e10 +0000000000106e40 0000000000106e64 FUN_00106e40 +0000000000106e70 0000000000106ed8 FUN_00106e70 +0000000000106ee0 0000000000106eea FUN_00106ee0 +0000000000106ef0 0000000000106ef4 FUN_00106ef0 +0000000000106f00 0000000000106f16 FUN_00106f00 +0000000000106f20 0000000000106f57 FUN_00106f20 +0000000000106f60 0000000000106f7e FUN_00106f60 +0000000000106f80 0000000000106f88 FUN_00106f80 +0000000000106f90 0000000000106fa6 FUN_00106f90 +0000000000106fb0 000000000010704e FUN_00106fb0 +0000000000107080 0000000000107096 FUN_00107080 +00000000001070a0 00000000001070bc FUN_001070a0 +00000000001070c0 00000000001070e3 FUN_001070c0 +00000000001070f0 0000000000107123 FUN_001070f0 +0000000000107130 00000000001071b6 FUN_00107130 +00000000001071e0 0000000000107521 FUN_001071e0 +0000000000107530 000000000010762b FUN_00107530 +0000000000107640 0000000000107754 FUN_00107640 +0000000000107760 00000000001079c7 FUN_00107760 +00000000001079d0 0000000000108981 FUN_001079d0 +0000000000108990 00000000001089c9 FUN_00108990 +00000000001089d0 0000000000108add FUN_001089d0 +0000000000108ae0 0000000000108dbf FUN_00108ae0 +0000000000108dc0 0000000000108e03 FUN_00108dc0 +0000000000108e10 000000000010915d FUN_00108e10 +0000000000109160 00000000001092a2 FUN_00109160 +00000000001092b0 000000000010943a FUN_001092b0 +0000000000109440 0000000000109662 FUN_00109440 +0000000000109670 0000000000109ce0 FUN_00109670 +0000000000109d40 0000000000109e6f FUN_00109d40 +0000000000109e70 0000000000109ecb FUN_00109e70 +0000000000109ed0 0000000000109f13 FUN_00109ed0 +0000000000109f20 000000000010a0c4 FUN_00109f20 +000000000010a0d0 000000000010a14d FUN_0010a0d0 +000000000010a150 000000000010a181 FUN_0010a150 +000000000010a190 000000000010a1a3 FUN_0010a190 +000000000010a1b0 000000000010a1d1 FUN_0010a1b0 +000000000010a1e0 000000000010a1f3 FUN_0010a1e0 +000000000010a200 000000000010a221 FUN_0010a200 +000000000010a230 000000000010a3b3 FUN_0010a230 +000000000010a3c0 000000000010a4a6 FUN_0010a3c0 +000000000010a4b0 000000000010a4f7 FUN_0010a4b0 +000000000010a500 000000000010a60d FUN_0010a500 +000000000010a610 000000000010ac24 FUN_0010a610 +000000000010ac30 000000000010ace3 FUN_0010ac30 +000000000010acf0 000000000010ad24 FUN_0010acf0 +000000000010ad30 000000000010ad42 FUN_0010ad30 +000000000010ad50 000000000010ad80 FUN_0010ad50 +000000000010ad90 000000000010b09a FUN_0010ad90 +000000000010b0a0 000000000010b61d FUN_0010b0a0 +000000000010b620 000000000010b8c7 FUN_0010b620 +000000000010b8d0 000000000010b985 FUN_0010b8d0 +000000000010b990 000000000010b9e2 FUN_0010b990 +000000000010b9f0 000000000010bd0a FUN_0010b9f0 +000000000010bd10 000000000010be7b FUN_0010bd10 +000000000010be80 000000000010c3d6 FUN_0010be80 +000000000010c3e0 000000000010c77e FUN_0010c3e0 +000000000010c780 000000000010d01d FUN_0010c780 +000000000010d020 000000000010d390 FUN_0010d020 +000000000010d3a0 000000000010d7d5 FUN_0010d3a0 +000000000010d7e0 000000000010dc3d FUN_0010d7e0 +000000000010dc40 000000000010dec6 FUN_0010dc40 +000000000010ded0 000000000010e0b1 FUN_0010ded0 +000000000010e0c0 000000000010e1f8 FUN_0010e0c0 +000000000010e200 000000000010e332 FUN_0010e200 +000000000010e340 000000000010e51b FUN_0010e340 +000000000010e520 000000000010e728 FUN_0010e520 +000000000010e730 000000000010e84f FUN_0010e730 +000000000010e850 000000000010ea63 FUN_0010e850 +000000000010ea70 000000000010eaa4 FUN_0010ea70 +000000000010eab0 000000000010eb31 FUN_0010eab0 +000000000010eb40 000000000010ebd6 FUN_0010eb40 +000000000010ebe0 000000000010ed77 FUN_0010ebe0 +000000000010eda0 000000000010edfe FUN_0010eda0 +000000000010ee00 000000000010ef53 FUN_0010ee00 +000000000010ef60 000000000010f0f4 FUN_0010ef60 +000000000010f100 000000000010f2a0 FUN_0010f100 +000000000010f2b0 000000000010f3fa FUN_0010f2b0 +000000000010f400 000000000010f610 FUN_0010f400 +000000000010f620 000000000010f72e FUN_0010f620 +000000000010f730 000000000010f94a FUN_0010f730 +000000000010f950 000000000010f964 FUN_0010f950 +000000000010f970 000000000010f981 FUN_0010f970 +000000000010f990 000000000010fa7d FUN_0010f990 +000000000010fa80 000000000010fa86 FUN_0010fa80 +000000000010fa90 000000000010fc36 FUN_0010fa90 +000000000010fc40 000000000011002d FUN_0010fc40 +0000000000110030 00000000001101a7 FUN_00110030 +00000000001101b0 00000000001101d6 FUN_001101b0 +00000000001101e0 0000000000110319 FUN_001101e0 +0000000000110320 00000000001105c3 FUN_00110320 +00000000001105d0 0000000000110b6e FUN_001105d0 +0000000000110b70 0000000000110f86 FUN_00110b70 +0000000000110f90 0000000000111236 FUN_00110f90 +0000000000111240 000000000011143c FUN_00111240 +0000000000111440 0000000000111552 FUN_00111440 +0000000000111560 000000000011171b FUN_00111560 +0000000000111720 0000000000111c2b FUN_00111720 +0000000000111c30 00000000001122f4 FUN_00111c30 +0000000000112370 00000000001123ec FUN_00112370 +0000000000112460 0000000000112471 FUN_00112460 +0000000000112480 0000000000112719 FUN_00112480 +0000000000112770 0000000000112b67 FUN_00112770 +0000000000112bc0 0000000000113a9f FUN_00112bc0 +0000000000113aa0 0000000000113b19 FUN_00113aa0 +0000000000113b30 0000000000113b6d FUN_00113b30 +0000000000113b90 0000000000113b97 FUN_00113b90 +0000000000113ba0 0000000000113bb4 FUN_00113ba0 +0000000000113bc0 0000000000113c04 FUN_00113bc0 +0000000000113c10 0000000000113c1a FUN_00113c10 +0000000000113c20 0000000000113c87 FUN_00113c20 +0000000000113c90 0000000000113ddc FUN_00113c90 +0000000000113de0 0000000000113f2f FUN_00113de0 +0000000000113f30 0000000000114055 FUN_00113f30 +0000000000114060 00000000001141d4 FUN_00114060 +00000000001141e0 00000000001142c9 FUN_001141e0 +00000000001142f0 000000000011457e FUN_001142f0 +0000000000114580 00000000001145a9 FUN_00114580 +00000000001145b0 0000000000114608 FUN_001145b0 +0000000000114610 0000000000114668 FUN_00114610 +0000000000114670 0000000000114e3c FUN_00114670 +0000000000114e40 0000000000114f41 FUN_00114e40 +0000000000114f50 0000000000114fe6 FUN_00114f50 +0000000000114ff0 0000000000115066 FUN_00114ff0 +0000000000115070 00000000001150e1 FUN_00115070 +00000000001150f0 0000000000115554 FUN_001150f0 +0000000000115580 00000000001155d8 FUN_00115580 +00000000001155e0 00000000001156fd FUN_001155e0 +0000000000115700 0000000000115704 thunk_FUN_001155e0 +0000000000115710 0000000000115714 thunk_FUN_001155e0 +0000000000115720 000000000011578f FUN_00115720 +0000000000115790 0000000000115da7 FUN_00115790 +0000000000115db0 0000000000115dbc FUN_00115db0 +0000000000115dc0 0000000000115e4a FUN_00115dc0 +0000000000115e50 0000000000115edb FUN_00115e50 +0000000000115ee0 0000000000115f6b FUN_00115ee0 +0000000000115f70 0000000000116003 FUN_00115f70 +0000000000116010 000000000011609b FUN_00116010 +00000000001160a0 000000000011612b FUN_001160a0 +0000000000116130 0000000000116144 FUN_00116130 +0000000000116150 0000000000116165 FUN_00116150 +0000000000116170 0000000000116185 FUN_00116170 +0000000000116190 00000000001161a5 FUN_00116190 +00000000001161b0 00000000001161c5 FUN_001161b0 +00000000001161d0 00000000001161e5 FUN_001161d0 +00000000001161f0 0000000000116242 FUN_001161f0 +0000000000116250 00000000001162a3 FUN_00116250 +00000000001162b0 0000000000116303 FUN_001162b0 +0000000000116310 0000000000116326 FUN_00116310 +0000000000116330 000000000011635c FUN_00116330 +0000000000116360 0000000000116371 FUN_00116360 +0000000000116380 000000000011647c FUN_00116380 +0000000000116480 000000000011648b FUN_00116480 +0000000000116490 0000000000116547 FUN_00116490 +0000000000116550 0000000000116554 FUN_00116550 +0000000000116560 0000000000116564 FUN_00116560 +0000000000116570 000000000011657e FUN_00116570 +0000000000116580 0000000000116596 FUN_00116580 +00000000001165a0 00000000001165dd FUN_001165a0 +00000000001165e0 0000000000116607 FUN_001165e0 +0000000000116610 0000000000116618 FUN_00116610 +0000000000116620 000000000011662b FUN_00116620 +0000000000116630 000000000011663d FUN_00116630 +0000000000116640 000000000011666b FUN_00116640 +0000000000116670 00000000001167b9 FUN_00116670 +00000000001167f0 0000000000116b13 FUN_001167f0 +0000000000116b20 0000000000116b71 FUN_00116b20 +0000000000116b80 0000000000116e4f FUN_00116b80 +0000000000116e50 0000000000116e8a FUN_00116e50 +0000000000116ea0 0000000000116f8e FUN_00116ea0 +0000000000116fb0 000000000011704e FUN_00116fb0 +0000000000117050 0000000000117093 FUN_00117050 +00000000001170a0 000000000011746a FUN_001170a0 +0000000000117470 0000000000117fbc FUN_00117470 +0000000000117fc0 000000000011816d FUN_00117fc0 +0000000000118190 0000000000118436 FUN_00118190 +0000000000118440 00000000001186a1 FUN_00118440 +00000000001186b0 00000000001187e2 FUN_001186b0 +00000000001187f0 00000000001189e4 FUN_001187f0 +00000000001189f0 0000000000118abb FUN_001189f0 +0000000000118ad0 0000000000118b0b FUN_00118ad0 +0000000000118b10 0000000000118b48 FUN_00118b10 +0000000000118b50 0000000000118c5b FUN_00118b50 +0000000000118c60 0000000000118cbb FUN_00118c60 +0000000000118cc0 0000000000118d01 FUN_00118cc0 +0000000000118d10 0000000000118d3f FUN_00118d10 +0000000000118d40 0000000000118e02 FUN_00118d40 +0000000000118e10 0000000000118e9b FUN_00118e10 +0000000000118f20 0000000000118f31 FUN_00118f20 +0000000000118f40 0000000000119188 FUN_00118f40 +00000000001191a0 000000000011924e FUN_001191a0 +0000000000119250 000000000011927b FUN_00119250 +0000000000119280 00000000001192ab FUN_00119280 +00000000001192b0 00000000001192db FUN_001192b0 +00000000001192e0 000000000011937f FUN_001192e0 +0000000000119380 00000000001193ea FUN_00119380 +00000000001193f0 00000000001194be FUN_001193f0 +00000000001194c0 0000000000119821 FUN_001194c0 +0000000000119830 000000000011998b FUN_00119830 +0000000000119990 0000000000119a3e FUN_00119990 +0000000000119a40 0000000000119d12 FUN_00119a40 +0000000000119d90 0000000000119dfc FUN_00119d90 +0000000000119e00 0000000000119e0f FUN_00119e00 +0000000000119e10 0000000000119e69 FUN_00119e10 +0000000000119e70 0000000000119e81 FUN_00119e70 +0000000000119e90 0000000000119ede FUN_00119e90 +0000000000119ee0 000000000011a00a FUN_00119ee0 +000000000011a010 000000000011a13e FUN_0011a010 +000000000011a140 000000000011a220 FUN_0011a140 +000000000011a230 000000000011a260 FUN_0011a230 +000000000011a270 000000000011a3c8 FUN_0011a270 +000000000011a3d0 000000000011aac9 FUN_0011a3d0 +000000000011aad0 000000000011abc7 FUN_0011aad0 +000000000011abd0 000000000011ad6a MAG_NewChannel +000000000011ad90 000000000011adcc MAG_IsChannelAvailable +000000000011add0 000000000011ae36 MAG_RevisedTemp2InnerTemp +000000000011ae40 000000000011aea6 MAG_RevisedTemp2Gray +000000000011aeb0 000000000011afec MAG_GetCurrentOffset +000000000011aff0 000000000011b02b MAG_GetCurrentCameraInnerTemperature +000000000011b030 000000000011b06b MAG_GetCameraTemperature +000000000011b070 000000000011b0ab MAG_GetSenorTemperature +000000000011b0b0 000000000011b0d8 MAG_IsInitialized +000000000011b0e0 000000000011b0f1 MAG_GetLocalIp +000000000011b100 000000000011b106 MAG_SetFilter +000000000011b110 000000000011b119 MAG_EnableAutoReConnect +000000000011b120 000000000011b14f MAG_EnumCameras +000000000011b150 000000000011b17b MAG_IsLinked +000000000011b180 000000000011b18f MAG_IsListening +000000000011b190 000000000011b19f MAG_ListenTo +000000000011b1a0 000000000011b1e5 MAG_GetRecentHeartBeat +000000000011b1f0 000000000011b22b MAG_SetReConnectCallBack +000000000011b230 000000000011b27c MAG_GetCamInfo +000000000011b280 000000000011b291 MAG_GetMulticastState +000000000011b2a0 000000000011b311 MAG_GetTerminalList +000000000011b320 000000000011b344 MAG_IsProcessingImage +000000000011b350 000000000011b3e9 MAG_PrepareProcessImage +000000000011b3f0 000000000011b433 MAG_WillStartImmediately +000000000011b440 000000000011b484 MAG_TransferPulseImage +000000000011b490 000000000011b538 MAG_StopProcessImage +000000000011b540 000000000011b5d9 MAG_Initialize +000000000011b5e0 000000000011b696 MAG_Free +000000000011b6a0 000000000011b762 MAG_DelChannel +000000000011b770 000000000011b7d8 MAG_DisLinkCamera +000000000011b7e0 000000000011b80f MAG_StopListen +000000000011b810 000000000011b843 MAG_SetFFCMode +000000000011b850 000000000011b8d3 FUN_0011b850 +000000000011b8e0 000000000011bcb2 FUN_0011b8e0 +000000000011bcc0 000000000011bcdc MAG_TriggerFFC +000000000011bce0 000000000011bcef MAG_SetIoAlarmState +000000000011bcf0 000000000011bd56 MAG_SetColorPalette +000000000011bd60 000000000011be47 MAG_SetSubsectionEnlargePara +000000000011be50 000000000011bf28 MAG_SetAutoEnlargePara +000000000011bf30 000000000011bfdd MAG_SetIsothermalPara +000000000011bfe0 000000000011bfef MAG_SetUserROIs +000000000011bff0 000000000011bfff MAG_ResetCamera +000000000011c000 000000000011c04e MAG_GetFilteredRaw +000000000011c050 000000000011c0fa MAG_GetOutputBMPdata +000000000011c100 000000000011c249 MAG_GetOutputBMPdataRGB24 +000000000011c250 000000000011c29e MAG_GetOutputRawData +000000000011c2a0 000000000011c34a MAG_GetOutputColorBardata +000000000011c350 000000000011c3fa MAG_GetOutputVideoData +000000000011c400 000000000011c44e MAG_GetOutputVideoYV12 +000000000011c450 000000000011c488 MAG_GetVideoPPS +000000000011c490 000000000011c4c8 MAG_GetVideoSPS +000000000011c4d0 000000000011c508 MAG_GetVideoVCL +000000000011c510 000000000011c56d MAG_GetTemperatureData +000000000011c570 000000000011c747 MAG_GetTemperatureData_Raw +000000000011c750 000000000011c7e2 MAG_GetFixPara +000000000011c7f0 000000000011c8f0 MAG_SetFixPara +000000000011c900 000000000011c959 MAG_SetEXLevel +000000000011c960 000000000011c990 MAG_GetEXLevel +000000000011c9a0 000000000011c9dc MAG_SetDetailEnhancement +000000000011c9e0 000000000011ca52 MAG_FixTemperature +000000000011ca60 000000000011caba MAG_FixTemperature2 +000000000011cac0 000000000011caf3 MAG_GetFrameStatisticalData +000000000011cb00 000000000011cb33 MAG_GetRemoteInfo +000000000011cb40 000000000011cbd7 MAG_GetTemperatureProbe +000000000011cbe0 000000000011cc29 MAG_GetTemperatureProbe2 +000000000011cc30 000000000011cca6 MAG_GetLineTemperatureInfo +000000000011ccb0 000000000011cd3e MAG_GetRectTemperatureInfo +000000000011cd40 000000000011cdaa MAG_GetEllipseTemperatureInfo +000000000011cdb0 000000000011ce0d MAG_GetRgnTemperatureInfo +000000000011ce10 000000000011ce4f MAG_UseTemperatureMask +000000000011ce50 000000000011ce8d MAG_IsUsingTemperatureMask +000000000011ce90 000000000011cef6 MAG_SaveBMP +000000000011cf00 000000000011cf0f MAG_SetPTZCmd +000000000011cf10 000000000011cf1f MAG_QueryPTZState +000000000011cf20 000000000011cf2f MAG_SetSerialCmd +000000000011cf30 000000000011cf3f MAG_SetVideoContrast +000000000011cf40 000000000011cf55 MAG_SetSerialCallBack +000000000011cf60 000000000011cf6f MAG_SetVideoBrightness +000000000011cf70 000000000011cfb0 MAG_LockFrame +000000000011cfc0 000000000011d000 MAG_UnLockFrame +000000000011d010 000000000011d070 FUN_0011d010 +000000000011d080 000000000011d084 MAG_LoadBufferedDDT +000000000011d090 000000000011d09f MAG_SDStorageMGT +000000000011d0a0 000000000011d0af MAG_SDStorageBMP +000000000011d0b0 000000000011d0bf MAG_SDStorageMGSStart +000000000011d0c0 000000000011d0cf MAG_SDStorageMGSStop +000000000011d0d0 000000000011d0df MAG_SDStorageAviStart +000000000011d0e0 000000000011d0ef MAG_SDStorageAviStop +000000000011d0f0 000000000011d10f MAG_SDCardStorage +000000000011d110 000000000011d77f FUN_0011d110 +000000000011d780 000000000011d872 MAG_LinkCameraEx +000000000011d880 000000000011d8a8 MAG_LinkCamera +000000000011d8b0 000000000011dc4b FUN_0011d8b0 +000000000011dc50 000000000011dcaf MAG_StartProcessImage +000000000011dcb0 000000000011dd12 MAG_StartProcessPulseImage +000000000011dd20 000000000011dd21 FUN_0011dd20 +000000000011dd30 000000000011ddce FUN_0011dd30 +000000000011ddd0 000000000011de24 MAG_SetEstimateUnderArmTempMode +000000000011de30 000000000011de55 MAG_GetEstimateUnderArmTempMode +000000000011de60 000000000011de81 MAG_GetEstimatedEnvTemp +000000000011de90 000000000011dec9 MAG_SetEnvTempEstimateMode +000000000011ded0 000000000011e9e5 MAG_EstimateUnderArmTempFromForeheadRect +000000000011e9f0 000000000011ea82 MAG_LoadDDT +000000000011eac0 000000000011f12c FUN_0011eac0 +000000000011f1b0 000000000011f2e6 MAG_SaveMGT +000000000011f300 000000000011f7b9 FUN_0011f300 +000000000011f830 000000000011f976 MAG_SaveDDT +000000000011f990 000000000011fa72 MAG_SaveDDT2Buffer +000000000011fa80 000000000011fc94 FUN_0011fa80 +000000000011fca0 000000000011fd2d FUN_0011fca0 +000000000011fd30 000000000011fd45 FUN_0011fd30 +000000000011fd50 00000000001200ad FUN_0011fd50 +00000000001200e0 00000000001202fa FUN_001200e0 +0000000000120300 00000000001204f9 FUN_00120300 +0000000000120550 00000000001205d4 FUN_00120550 +00000000001205e0 00000000001205e4 libusb_get_bus_number +00000000001205f0 00000000001205f4 libusb_get_port_number +0000000000120600 0000000000120604 libusb_get_parent +0000000000120610 0000000000120614 libusb_get_device_address +0000000000120620 0000000000120623 libusb_get_device_speed +0000000000120630 0000000000120649 libusb_ref_device +0000000000120650 00000000001206c7 FUN_00120650 +00000000001206d0 00000000001206d4 libusb_get_device +00000000001206e0 0000000000120702 libusb_dev_mem_alloc +0000000000120710 000000000012072d libusb_dev_mem_free +0000000000120730 000000000012074d libusb_set_auto_detach_kernel_driver +0000000000120750 0000000000120765 libusb_set_debug +0000000000120770 00000000001207d2 libusb_has_capability +00000000001207e0 0000000000120866 FUN_001207e0 +0000000000120870 0000000000120903 FUN_00120870 +0000000000120910 00000000001209a4 FUN_00120910 +00000000001209b0 0000000000120ccc FUN_001209b0 +0000000000120cd0 0000000000120d54 FUN_00120cd0 +0000000000120d60 0000000000120dd4 FUN_00120d60 +0000000000120de0 0000000000120e7c libusb_get_port_numbers +0000000000120e80 0000000000120e8d libusb_get_port_path +0000000000120e90 0000000000120f02 libusb_get_max_packet_size +0000000000120f10 0000000000120fa3 libusb_get_max_iso_packet_size +0000000000120fb0 0000000000121059 libusb_unref_device +0000000000121060 00000000001210a6 libusb_free_device_list +00000000001210b0 000000000012116e FUN_001210b0 +0000000000121170 0000000000121354 libusb_get_device_list +0000000000121360 00000000001213b3 FUN_00121360 +00000000001213c0 0000000000121413 FUN_001213c0 +0000000000121420 0000000000121599 libusb_wrap_fd +00000000001215a0 0000000000121729 libusb_open +0000000000121730 00000000001217f2 libusb_open_device_with_vid_pid +0000000000121800 0000000000121b49 libusb_close +0000000000121b50 0000000000121c9c libusb_get_configuration +0000000000121ca0 0000000000121ce1 libusb_set_configuration +0000000000121cf0 0000000000121d96 libusb_claim_interface +0000000000121da0 0000000000121e34 libusb_release_interface +0000000000121e40 0000000000121eee libusb_set_interface_alt_setting +0000000000121ef0 0000000000121f53 libusb_clear_halt +0000000000121f60 0000000000121fa6 libusb_reset_device +0000000000121fb0 0000000000122036 libusb_alloc_streams +0000000000122040 00000000001220b6 libusb_free_streams +00000000001220c0 000000000012212e libusb_kernel_driver_active +0000000000122130 000000000012219e libusb_detach_kernel_driver +00000000001221a0 000000000012220e libusb_attach_kernel_driver +0000000000122210 00000000001225f0 libusb_init +0000000000122600 000000000012288b libusb_exit +0000000000122890 00000000001229f7 libusb_error_name +0000000000122a00 0000000000122a07 libusb_get_version +0000000000122a10 0000000000122ab8 FUN_00122a10 +0000000000122ac0 0000000000122b10 FUN_00122ac0 +0000000000122b20 0000000000122c3a FUN_00122b20 +0000000000122c40 000000000012368e FUN_00122c40 +0000000000123690 0000000000123739 FUN_00123690 +0000000000123740 0000000000123787 libusb_get_device_descriptor +0000000000123790 00000000001238b9 libusb_get_active_config_descriptor +00000000001238c0 0000000000123a21 libusb_get_config_descriptor +0000000000123a30 0000000000123b1f FUN_00123a30 +0000000000123b20 0000000000123bb7 libusb_get_config_descriptor_by_value +0000000000123bc0 0000000000123be1 libusb_free_config_descriptor +0000000000123bf0 0000000000123cdf libusb_get_ss_endpoint_companion_descriptor +0000000000123ce0 0000000000123ce4 libusb_free_ss_endpoint_companion_descriptor +0000000000123cf0 0000000000123d46 libusb_free_bos_descriptor +0000000000123d50 00000000001241cc libusb_get_bos_descriptor +00000000001241d0 0000000000124286 libusb_get_usb_2_0_extension_descriptor +0000000000124290 0000000000124294 libusb_free_usb_2_0_extension_descriptor +00000000001242a0 0000000000124356 libusb_get_ss_usb_device_capability_descriptor +0000000000124360 0000000000124364 libusb_free_ss_usb_device_capability_descriptor +0000000000124370 0000000000124426 libusb_get_container_id_descriptor +0000000000124430 0000000000124434 libusb_free_container_id_descriptor +0000000000124440 00000000001245b9 libusb_get_string_descriptor_ascii +00000000001245c0 0000000000124625 FUN_001245c0 +0000000000124630 0000000000124705 FUN_00124630 +0000000000124710 000000000012481e FUN_00124710 +0000000000124820 00000000001248c6 libusb_hotplug_deregister_callback +00000000001248d0 0000000000124aee libusb_hotplug_register_callback +0000000000124af0 0000000000124b6e FUN_00124af0 +0000000000124b70 0000000000124bb3 FUN_00124b70 +0000000000124bc0 0000000000124cdc FUN_00124bc0 +0000000000124ce0 0000000000124d8b FUN_00124ce0 +0000000000124d90 0000000000124e0b libusb_alloc_transfer +0000000000124e10 0000000000124e69 libusb_free_transfer +0000000000124e70 00000000001252a7 libusb_submit_transfer +00000000001252b0 00000000001253a0 libusb_cancel_transfer +00000000001253b0 00000000001254ce FUN_001253b0 +00000000001254d0 000000000012551b FUN_001254d0 +0000000000125520 0000000000125be1 FUN_00125520 +0000000000125bf0 0000000000125bf3 libusb_transfer_set_stream_id +0000000000125c00 0000000000125c03 libusb_transfer_get_stream_id +0000000000125c10 0000000000125d5a FUN_00125c10 +0000000000125d60 0000000000125dc7 FUN_00125d60 +0000000000125dd0 0000000000125e89 FUN_00125dd0 +0000000000125e90 0000000000125f2e libusb_try_lock_events +0000000000125f30 0000000000125f63 libusb_lock_events +0000000000125f70 0000000000125fcb libusb_unlock_events +0000000000125fd0 000000000012603b libusb_event_handling_ok +0000000000126040 00000000001260bb libusb_event_handler_active +00000000001260c0 000000000012615e libusb_interrupt_event_handler +0000000000126160 000000000012618d libusb_lock_event_waiters +0000000000126190 00000000001261bd libusb_unlock_event_waiters +00000000001261c0 000000000012621b libusb_wait_for_event +0000000000126220 000000000012624d libusb_pollfds_handle_timeouts +0000000000126250 00000000001264ab libusb_get_next_timeout +00000000001264b0 0000000000126548 FUN_001264b0 +0000000000126550 00000000001266c6 libusb_handle_events_timeout_completed +00000000001266d0 00000000001266d6 libusb_handle_events_timeout +00000000001266e0 0000000000126703 libusb_handle_events +0000000000126710 0000000000126734 libusb_handle_events_completed +0000000000126740 00000000001267ab libusb_handle_events_locked +00000000001267b0 00000000001267db libusb_set_pollfd_notifiers +00000000001267e0 00000000001268be FUN_001267e0 +00000000001268c0 00000000001269d3 FUN_001268c0 +00000000001269e0 0000000000126c1b FUN_001269e0 +0000000000126c20 0000000000126cb9 FUN_00126c20 +0000000000126cc0 0000000000126d66 libusb_get_pollfds +0000000000126d70 0000000000126d81 libusb_free_pollfds +0000000000126d90 0000000000126ed0 FUN_00126d90 +0000000000126ee0 0000000000126f09 FUN_00126ee0 +0000000000126f10 0000000000126f84 FUN_00126f10 +0000000000126f90 0000000000127129 FUN_00126f90 +0000000000127130 00000000001273bb libusb_control_transfer +00000000001273c0 00000000001273d8 libusb_bulk_transfer +00000000001273e0 00000000001273f8 libusb_interrupt_transfer +0000000000127400 00000000001274a8 FUN_00127400 +00000000001274b0 0000000000127546 FUN_001274b0 +0000000000127550 0000000000127564 FUN_00127550 +0000000000127570 0000000000127576 FUN_00127570 +0000000000127580 00000000001276f5 FUN_00127580 +0000000000127700 00000000001277ca FUN_00127700 +00000000001277d0 0000000000127801 FUN_001277d0 +0000000000127810 00000000001279e1 FUN_00127810 +00000000001279f0 0000000000127b4a FUN_001279f0 +0000000000127b50 0000000000127bb6 FUN_00127b50 +0000000000127bc0 0000000000127c72 FUN_00127bc0 +0000000000127c80 0000000000127cec FUN_00127c80 +0000000000127cf0 0000000000127d76 FUN_00127cf0 +0000000000127d80 0000000000127dfd FUN_00127d80 +0000000000127e00 0000000000127e7a FUN_00127e00 +0000000000127e80 0000000000127f24 FUN_00127e80 +0000000000127f30 0000000000128032 FUN_00127f30 +0000000000128040 0000000000128108 FUN_00128040 +0000000000128110 00000000001282a0 FUN_00128110 +00000000001282b0 00000000001282e9 FUN_001282b0 +00000000001282f0 0000000000128766 FUN_001282f0 +0000000000128770 00000000001287b6 FUN_00128770 +00000000001287c0 00000000001288d3 FUN_001287c0 +00000000001288e0 00000000001288f1 FUN_001288e0 +0000000000128900 0000000000128911 FUN_00128900 +0000000000128920 00000000001289dd FUN_00128920 +00000000001289e0 00000000001289e4 thunk_FUN_0012c710 +00000000001289f0 0000000000128a43 FUN_001289f0 +0000000000128a50 0000000000128ab9 FUN_00128a50 +0000000000128ac0 0000000000128b4a FUN_00128ac0 +0000000000128b50 0000000000129042 FUN_00128b50 +0000000000129050 0000000000129151 FUN_00129050 +0000000000129160 0000000000129550 FUN_00129160 +0000000000129560 000000000012959a FUN_00129560 +00000000001295a0 0000000000129697 FUN_001295a0 +00000000001296a0 00000000001296b4 FUN_001296a0 +00000000001296c0 00000000001297f1 FUN_001296c0 +0000000000129800 0000000000129899 FUN_00129800 +00000000001298a0 00000000001298ca FUN_001298a0 +00000000001298d0 000000000012a378 FUN_001298d0 +000000000012a380 000000000012a3c8 FUN_0012a380 +000000000012a3d0 000000000012a421 FUN_0012a3d0 +000000000012a430 000000000012a48a FUN_0012a430 +000000000012a490 000000000012a68f FUN_0012a490 +000000000012a690 000000000012a6fb FUN_0012a690 +000000000012a700 000000000012a796 FUN_0012a700 +000000000012a7a0 000000000012a842 FUN_0012a7a0 +000000000012a850 000000000012a91d FUN_0012a850 +000000000012a920 000000000012ab59 FUN_0012a920 +000000000012ab60 000000000012aca5 FUN_0012ab60 +000000000012acb0 000000000012afe9 FUN_0012acb0 +000000000012aff0 000000000012b039 FUN_0012aff0 +000000000012b040 000000000012b1db FUN_0012b040 +000000000012b1e0 000000000012b8b3 FUN_0012b1e0 +000000000012b8c0 000000000012b941 FUN_0012b8c0 +000000000012b950 000000000012b9ff FUN_0012b950 +000000000012ba00 000000000012bbc4 FUN_0012ba00 +000000000012bbd0 000000000012bc7f FUN_0012bbd0 +000000000012bc80 000000000012bcff FUN_0012bc80 +000000000012bd00 000000000012c20b FUN_0012bd00 +000000000012c210 000000000012c320 FUN_0012c210 +000000000012c330 000000000012c639 FUN_0012c330 +000000000012c640 000000000012c704 FUN_0012c640 +000000000012c710 000000000012c731 FUN_0012c710 +000000000012c734 000000000012c73c _fini +0000000000367000 0000000000367000 exp +0000000000367008 0000000000367008 pthread_getspecific +0000000000367010 0000000000367010 pthread_cond_destroy +0000000000367018 0000000000367018 memset +0000000000367020 0000000000367020 ftell +0000000000367028 0000000000367028 close +0000000000367030 0000000000367030 ioctl +0000000000367038 0000000000367038 pthread_setspecific +0000000000367040 0000000000367040 __gmon_start__ +0000000000367048 0000000000367048 _Jv_RegisterClasses +0000000000367050 0000000000367050 recvmsg +0000000000367058 0000000000367058 operator.new[] +0000000000367060 0000000000367060 uname +0000000000367068 0000000000367068 fseek +0000000000367070 0000000000367070 pthread_cond_signal +0000000000367078 0000000000367078 operator.delete +0000000000367080 0000000000367080 _M_dispose +0000000000367088 0000000000367088 pthread_mutexattr_destroy +0000000000367090 0000000000367090 __assert_fail +0000000000367098 0000000000367098 __printf_chk +00000000003670a0 00000000003670a0 gettimeofday +00000000003670a8 00000000003670a8 Init +00000000003670b0 00000000003670b0 read +00000000003670b8 00000000003670b8 strncmp +00000000003670c0 00000000003670c0 malloc +00000000003670c8 00000000003670c8 fopen +00000000003670d0 00000000003670d0 pthread_cond_timedwait +00000000003670d8 00000000003670d8 __memcpy_chk +00000000003670e0 00000000003670e0 __cxa_atexit +00000000003670e8 00000000003670e8 setsockopt +00000000003670f0 00000000003670f0 pthread_mutex_init +00000000003670f8 00000000003670f8 fgets +0000000000367100 0000000000367100 __vsnprintf_chk +0000000000367108 0000000000367108 ~Init +0000000000367110 0000000000367110 pthread_attr_destroy +0000000000367118 0000000000367118 getpwuid +0000000000367120 0000000000367120 _ITM_deregisterTMCloneTable +0000000000367128 0000000000367128 operator<< +0000000000367130 0000000000367130 __strdup +0000000000367138 0000000000367138 free +0000000000367140 0000000000367140 strlen +0000000000367148 0000000000367148 _ITM_registerTMCloneTable +0000000000367150 0000000000367150 _M_destroy +0000000000367158 0000000000367158 __asprintf_chk +0000000000367160 0000000000367160 pthread_create +0000000000367168 0000000000367168 opendir +0000000000367170 0000000000367170 __xstat +0000000000367178 0000000000367178 pthread_cond_init +0000000000367180 0000000000367180 __ctype_b_loc +0000000000367188 0000000000367188 __cxa_finalize +0000000000367190 0000000000367190 pthread_key_delete +00000000003671a0 00000000003671a0 readdir +00000000003671a8 00000000003671a8 strrchr +00000000003671b0 00000000003671b0 syscall +00000000003671b8 00000000003671b8 sscanf +00000000003671c0 00000000003671c0 pipe +00000000003671c8 00000000003671c8 pthread_join +00000000003671d0 00000000003671d0 poll +00000000003671d8 00000000003671d8 pthread_mutex_trylock +00000000003671e0 00000000003671e0 pow +00000000003671e8 00000000003671e8 usleep +00000000003671f0 00000000003671f0 strerror +0000000000367200 0000000000367200 fputs +0000000000367208 0000000000367208 lseek +0000000000367210 0000000000367210 strtol +0000000000367218 0000000000367218 readlink +0000000000367220 0000000000367220 __cxa_pure_virtual +0000000000367228 0000000000367228 __strcpy_chk +0000000000367230 0000000000367230 __ostream_insert> +0000000000367238 0000000000367238 memmove +0000000000367240 0000000000367240 strchr +0000000000367248 0000000000367248 socket +0000000000367250 0000000000367250 fread +0000000000367258 0000000000367258 getenv +0000000000367260 0000000000367260 __errno_location +0000000000367270 0000000000367270 pthread_mutexattr_settype +0000000000367278 0000000000367278 __stack_chk_fail +0000000000367280 0000000000367280 strcmp +0000000000367288 0000000000367288 __cxa_allocate_exception +0000000000367290 0000000000367290 assign +0000000000367298 0000000000367298 nanosleep +00000000003672a0 00000000003672a0 getuid +00000000003672a8 00000000003672a8 pthread_cond_wait +00000000003672b0 00000000003672b0 operator.delete[] +00000000003672b8 00000000003672b8 calloc +00000000003672c0 00000000003672c0 munmap +00000000003672c8 00000000003672c8 feof +00000000003672d0 00000000003672d0 __cxa_throw +00000000003672d8 00000000003672d8 fclose +00000000003672e0 00000000003672e0 strncpy +00000000003672e8 00000000003672e8 pthread_attr_init +00000000003672f0 00000000003672f0 localtime_r +00000000003672f8 00000000003672f8 __cxa_end_catch +0000000000367300 0000000000367300 __throw_bad_alloc +0000000000367310 0000000000367310 fscanf +0000000000367318 0000000000367318 closedir +0000000000367320 0000000000367320 __sprintf_chk +0000000000367330 0000000000367330 __snprintf_chk +0000000000367338 0000000000367338 access +0000000000367340 0000000000367340 endl> +0000000000367348 0000000000367348 __pthread_key_create +0000000000367350 0000000000367350 __cxa_begin_catch +0000000000367358 0000000000367358 bind +0000000000367360 0000000000367360 fwrite +0000000000367368 0000000000367368 pthread_mutex_lock +0000000000367370 0000000000367370 realloc +0000000000367378 0000000000367378 timerfd_create +0000000000367380 0000000000367380 pthread_mutexattr_init +0000000000367388 0000000000367388 pthread_key_create +0000000000367390 0000000000367390 __gxx_personality_v0 +0000000000367398 0000000000367398 timerfd_settime +00000000003673a0 00000000003673a0 localtime +00000000003673a8 00000000003673a8 pthread_mutex_destroy +00000000003673b0 00000000003673b0 write +00000000003673b8 00000000003673b8 operator.new +00000000003673c0 00000000003673c0 _Unwind_Resume +00000000003673c8 00000000003673c8 pthread_cond_broadcast +00000000003673d0 00000000003673d0 clock_gettime +00000000003673d8 00000000003673d8 sqrt +00000000003673e0 00000000003673e0 strtoul +00000000003673e8 00000000003673e8 pthread_mutex_unlock +00000000003673f0 00000000003673f0 memcpy +00000000003673f8 00000000003673f8 fcntl +0000000000367400 0000000000367400 open +0000000000367408 0000000000367408 __open_2 +0000000000367410 0000000000367410 mmap +0000000000367420 0000000000367420 mkdir +0000000000367428 0000000000367428 time +0000000000367430 0000000000367430 fflush +0000000000367438 0000000000367438 sqrtf +0000000000367440 0000000000367440 pthread_attr_setdetachstate +TOTAL 841 diff --git a/analysis/ida/export/ghidra_dump/callers_decomp_CoreSDKLib.dll.txt b/analysis/ida/export/ghidra_dump/callers_decomp_CoreSDKLib.dll.txt new file mode 100644 index 0000000..c468739 --- /dev/null +++ b/analysis/ida/export/ghidra_dump/callers_decomp_CoreSDKLib.dll.txt @@ -0,0 +1,5604 @@ +########## TARGET 180017200 ########## +callers (1): + 18000c950 FUN_18000c950 + +### CALLER FUNC 18000c950 (221 bytes) name=FUN_18000c950 + +void FUN_18000c950(longlong param_1,ushort *param_2) + +{ + undefined8 uVar1; + ushort *puVar2; + + if (*(int *)(param_1 + 0x41fdc) == 1) { + FUN_1800011a0(param_1 + 0x41f10,param_2); + if (*(int *)(param_1 + 0x41f3c) == 0) { + puVar2 = (ushort *)0x0; + } + else { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + *(ushort **)(param_1 + 0x44c58) = puVar2; + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + else { + uVar1 = FUN_1800011a0(param_1 + 0x41f10,param_2); + *(int *)(param_1 + 0x41ffc) = (int)uVar1; + if ((int)uVar1 == 0) { + return; + } + puVar2 = (ushort *)0x0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + if (*(int *)(param_1 + 0x41f3c) != 0) { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + FUN_180017040(param_1,puVar2); +LAB_18000ca18: + *(undefined4 *)(param_1 + 0x42004) = 1; + return; +} + + +================================================================== + +########## TARGET 180017330 ########## +callers (1): + 18000c950 FUN_18000c950 + +### CALLER FUNC 18000c950 (221 bytes) name=FUN_18000c950 + +void FUN_18000c950(longlong param_1,ushort *param_2) + +{ + undefined8 uVar1; + ushort *puVar2; + + if (*(int *)(param_1 + 0x41fdc) == 1) { + FUN_1800011a0(param_1 + 0x41f10,param_2); + if (*(int *)(param_1 + 0x41f3c) == 0) { + puVar2 = (ushort *)0x0; + } + else { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + *(ushort **)(param_1 + 0x44c58) = puVar2; + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + else { + uVar1 = FUN_1800011a0(param_1 + 0x41f10,param_2); + *(int *)(param_1 + 0x41ffc) = (int)uVar1; + if ((int)uVar1 == 0) { + return; + } + puVar2 = (ushort *)0x0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + if (*(int *)(param_1 + 0x41f3c) != 0) { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + FUN_180017040(param_1,puVar2); +LAB_18000ca18: + *(undefined4 *)(param_1 + 0x42004) = 1; + return; +} + + +================================================================== + +########## TARGET 18000c760 ########## +callers (1): + 180009ee0 FUN_180009ee0 + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +########## TARGET 18000c620 ########## +callers (1): + 180009ee0 FUN_180009ee0 + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +########## TARGET 1800011a0 ########## +callers (2): + 18000c620 FUN_18000c620 + 18000c950 FUN_18000c950 + +### CALLER FUNC 18000c620 (309 bytes) name=FUN_18000c620 + +ulonglong FUN_18000c620(longlong param_1,ushort *param_2,int param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if (*(int *)(param_1 + 0x228) == 0) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + uVar1 = 0; + } + else { + if (param_3 != 0) { + *(undefined4 *)(param_1 + 0x22c) = 0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (*(int *)(param_1 + 0x41f0c) != 0) { + *(undefined4 *)(param_1 + 0x41f00) = 0; + } + if (*(int *)(param_1 + 0x41f3c) != 0) { + *(undefined4 *)(param_1 + 0x41f30) = 0; + } + if ((1 < *(uint *)(param_1 + 0x41fe0)) && (*(int *)(param_1 + 0x41f7c) != 0)) { + *(undefined4 *)(param_1 + 0x41f70) = 0; + *(undefined8 *)(param_1 + 0x41f68) = *(undefined8 *)(param_1 + 0x41f50); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x41f58),0, + (ulonglong)*(uint *)(param_1 + 0x41f74) << 2); + } + if (*(int *)(param_1 + 0x41fbc) != 0) { + *(undefined4 *)(param_1 + 0x41fb0) = 0; + *(undefined8 *)(param_1 + 0x41fa8) = *(undefined8 *)(param_1 + 0x41f90); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x41f98),0, + (ulonglong)*(uint *)(param_1 + 0x41fb4) << 2); + } + } + uVar2 = FUN_1800011a0(param_1 + 0x41ee0,param_2); + uVar1 = uVar2 & 0xffffffff; + if ((int)uVar2 != 0) { + *(undefined4 *)(param_1 + 0x22c) = 1; + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + } + return uVar1; +} + + +================================================================== + +### CALLER FUNC 18000c950 (221 bytes) name=FUN_18000c950 + +void FUN_18000c950(longlong param_1,ushort *param_2) + +{ + undefined8 uVar1; + ushort *puVar2; + + if (*(int *)(param_1 + 0x41fdc) == 1) { + FUN_1800011a0(param_1 + 0x41f10,param_2); + if (*(int *)(param_1 + 0x41f3c) == 0) { + puVar2 = (ushort *)0x0; + } + else { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + *(ushort **)(param_1 + 0x44c58) = puVar2; + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + else { + uVar1 = FUN_1800011a0(param_1 + 0x41f10,param_2); + *(int *)(param_1 + 0x41ffc) = (int)uVar1; + if ((int)uVar1 == 0) { + return; + } + puVar2 = (ushort *)0x0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + if (*(int *)(param_1 + 0x41f3c) != 0) { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + FUN_180017040(param_1,puVar2); +LAB_18000ca18: + *(undefined4 *)(param_1 + 0x42004) = 1; + return; +} + + +================================================================== + +########## TARGET 18001e920 ########## +callers (1): + 18000ca30 FUN_18000ca30 + +### CALLER FUNC 18000ca30 (1760 bytes) name=FUN_18000ca30 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_18000ca30(longlong param_1,undefined8 param_2,int param_3,undefined8 param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + int *piVar4; + ushort uVar5; + byte *_Dst; + undefined1 uVar6; + DWORD DVar7; + uint uVar8; + uint uVar9; + int iVar10; + DWORD DVar11; + undefined1 *puVar12; + longlong lVar13; + int iVar14; + ushort *in_RDX; + ulonglong uVar15; + int iVar16; + uint uVar17; + int iVar18; + ushort *puVar19; + byte *pbVar20; + undefined1 auStack_3518 [32]; + DWORD local_34f8; + int local_34e8; + ulonglong local_34e4 [63]; + int aiStack_32e8 [384]; + undefined1 local_2ce8 [11424]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_3518; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + DVar7 = GetTickCount(); + local_34f8 = DVar7; + if (((*(int *)(param_1 + 0x228) == 0) || (in_RDX == (ushort *)0x0)) || + ((param_3 == 0 && (*(int *)(param_1 + 0x22c) == 0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x4203c) = 0; + *(undefined4 *)(param_1 + 0x42040) = 0; + *(undefined4 *)(param_1 + 0x42044) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (param_3 == 0) { + FUN_18000c950(param_1,in_RDX); + } + else { + if (param_3 != 1) goto LAB_18000cb0b; + memcpy(*(void **)(param_1 + 0x270),in_RDX,(ulonglong)*(uint *)(param_1 + 0x47938) * 2); + *(undefined4 *)(param_1 + 0x42004) = 1; + } + if (*(int *)(param_1 + 0x42004) == 0) { + FUN_18000d2a0(param_1); +LAB_18000cb0b: + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x44c4c) = 0; + *(undefined4 *)(param_1 + 0x42038) = 0; + if ((param_5 == 0) && (1 < *(uint *)(param_1 + 0x41fe0))) { + uVar8 = FUN_180015680(param_1,30000,*(uint *)(param_1 + 0x50)); + FUN_18001e920(param_1 + 0x41f40,*(ushort **)(param_1 + 0x270),uVar8 & 0xffff); + *(undefined4 *)(param_1 + 0x42038) = 1; + } + if (*(int *)(param_1 + 0x230) != 0) { + FUN_1800175a0(param_1); + } + iVar10 = *(int *)(param_1 + 0x41fe8); + if (iVar10 == 1) { + FUN_1800184f0(param_1); + } + else if (iVar10 == 2) { + FUN_180018660(param_1); + } + else if (iVar10 == 3) { + FUN_1800184f0(param_1); + FUN_180018660(param_1); + } + else if (iVar10 == 4) { + FUN_180018660(param_1); + FUN_180018660(param_1); + } + FUN_180010780(param_1,*(ushort **)(param_1 + 0x270)); + FUN_1800109c0(param_1); + uVar8 = *(uint *)(param_1 + 0x30); + if (uVar8 < 5) { + if ((int)uVar8 < 1) goto LAB_18000cf9a; + } + else { + uVar8 = 4; + } + if ((((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x28) == 0)) && + (*(int *)(param_1 + 0x10) == 0)) && + ((*(int *)(param_1 + 0x88) == 0 && (*(int *)(param_1 + 0x44) == 0)))) { + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017770(param_1,param_2); + memcpy(local_2ce8,(void *)(param_1 + 0x41ff8),0x2ca0); + FUN_180010780(param_1,*(ushort **)(param_1 + 0x288)); + if (*(int *)(param_1 + 0x42014) < *(int *)(param_1 + 0x42010)) { + iVar10 = *(int *)(param_1 + 0x42018); + uVar17 = *(int *)(param_1 + 0x42010) - iVar10; + uVar8 = iVar10 - *(int *)(param_1 + 0x42014); + uVar9 = FUN_180015680(param_1,30000,(uint)(*(int *)(param_1 + 0x24) * 1000) >> 1); + puVar19 = *(ushort **)(param_1 + 0x288); + if (uVar8 < uVar17) { + uVar8 = uVar17; + } + uVar17 = uVar9 & 0xffff; + if ((uVar9 & 0xffff) < uVar8) { + uVar17 = uVar8; + } + puVar12 = *(undefined1 **)(param_1 + 0x280); + uVar8 = 0; + if (*(int *)(param_1 + 0x47938) != 0) { + do { + uVar5 = *puVar19; + puVar19 = puVar19 + 1; + uVar9 = ((uint)uVar5 - (iVar10 - uVar17)) * (int)(0x3fc00000 / (ulonglong)(uVar17 * 2)) + >> 0x16; + if (uVar9 < 0xc0) { + uVar6 = (undefined1)uVar9; + if (uVar9 < 0x3f) { + uVar6 = 0x3f; + } + } + else { + uVar6 = 0xbf; + } + *puVar12 = uVar6; + uVar8 = uVar8 + 1; + puVar12 = puVar12 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + local_34e8 = 0; + FUN_1800357d0(local_34e4,0,0x7fc); + _Dst = *(byte **)(param_1 + 0x290); + memcpy(_Dst,*(void **)(param_1 + 0x280),(ulonglong)*(uint *)(param_1 + 0x47938)); + uVar15 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + puVar12 = (undefined1 *)(uVar15 + 1 + *(longlong *)(param_1 + 0x280)); + pbVar1 = _Dst + 1; + pbVar2 = pbVar1 + uVar15; + pbVar3 = pbVar2 + uVar15; + iVar10 = (*(int *)(param_1 + 0x41fc4) + -2) * *(uint *)(param_1 + 0x41fc0) + -2; + if (0 < iVar10) { + pbVar20 = pbVar3 + 1; + iVar18 = (uint)pbVar2[uVar15 - 1] + (uint)pbVar1[uVar15 - 1] * 2 + (uint)*_Dst; + iVar16 = (uint)*pbVar3 + (uint)*pbVar2 * 2 + (uint)*pbVar1; + do { + iVar14 = (uint)pbVar20[(longlong)pbVar1 - (longlong)pbVar3] + + (uint)pbVar20[(longlong)pbVar2 - (longlong)pbVar3] * 2 + (uint)*pbVar20; + uVar8 = (uint)(iVar14 + iVar16 * 2 + iVar18) >> 4; + *puVar12 = (char)uVar8; + if (0x7f < uVar8) { + piVar4 = (int *)((longlong)local_34e4 + + (longlong) + (int)(pbVar20[*(longlong *)(param_1 + 0x2a0) + (-1 - (longlong)pbVar3) + ] + uVar8) * 4 + -4); + *piVar4 = *piVar4 + 1; + } + pbVar20 = pbVar20 + 1; + puVar12 = puVar12 + 1; + iVar18 = iVar16; + iVar16 = iVar14; + } while ((longlong)(pbVar20 + (-1 - (longlong)pbVar3)) < (longlong)iVar10); + } + uVar8 = 0; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar9 = *(int *)(param_1 + 0x41fc0) * uVar8; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + uVar8 = uVar8 + 1; + uVar9 = uVar8 * *(int *)(param_1 + 0x41fc0) - 1; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + } while (uVar8 < *(uint *)(param_1 + 0x41fc4)); + } + iVar18 = 0x1ff; + iVar10 = 0; + lVar13 = 0x1ff; + do { + iVar10 = iVar10 + *(int *)((longlong)local_34e4 + lVar13 * 4 + -4); + if (*(uint *)(param_1 + 0x47938) < (uint)(iVar10 * 0x800)) break; + lVar13 = lVar13 + -1; + iVar18 = iVar18 + -1; + } while (0x17d < lVar13); + iVar10 = 0x1000; + if (0x17e < iVar18) { + iVar10 = (int)(0xff000 / (longlong)(iVar18 + -0x7f)); + } + uVar8 = 0; + lVar13 = 0; + if (*(uint *)(param_1 + 0x47938) != 0) { + do { + iVar18 = ((*(byte *)(lVar13 + *(longlong *)(param_1 + 0x280)) - 0x7f) + + (uint)*(byte *)(*(longlong *)(param_1 + 0x2a0) + lVar13)) * iVar10; + iVar18 = (int)(iVar18 + (iVar18 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar18 < 0) { + iVar18 = 0; + } + else if (0xff < iVar18) { + iVar18 = 0xff; + } + *(char *)(*(longlong *)(param_1 + 0x2a0) + lVar13) = (char)iVar18; + uVar8 = uVar8 + 1; + lVar13 = lVar13 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + } + memcpy((void *)(param_1 + 0x41ff8),local_2ce8,0x2ca0); + DVar7 = local_34f8; + } + else { + FUN_180017c40(param_1,uVar8 << 3); + } + } +LAB_18000cf9a: + uVar8 = *(uint *)(param_1 + 0x41fc8); + uVar9 = *(uint *)(param_1 + 0x41fc0); + if ((uVar8 == uVar9) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + } + else if ((uVar8 == uVar9 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) + { + FUN_180019740(param_1); + } + else if ((uVar8 == uVar9 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2) + ) { + FUN_180019b30(param_1); + } + else if ((uVar8 == uVar9 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3) + ) { + FUN_180019e60(param_1); + } + else if ((uVar8 * 2 == uVar9 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + } + else if ((uVar8 * 3 == uVar9 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + } + else if ((uVar9 < uVar8) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + DVar11 = GetTickCount(); + *(DWORD *)(param_1 + 0x42048) = DVar11 - DVar7; + FUN_18000d2a0(param_1); + *(undefined4 *)(param_1 + 0x234) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 3; +} + + +================================================================== + +########## TARGET 180010780 ########## +callers (1): + 18000ca30 FUN_18000ca30 + +### CALLER FUNC 18000ca30 (1760 bytes) name=FUN_18000ca30 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_18000ca30(longlong param_1,undefined8 param_2,int param_3,undefined8 param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + int *piVar4; + ushort uVar5; + byte *_Dst; + undefined1 uVar6; + DWORD DVar7; + uint uVar8; + uint uVar9; + int iVar10; + DWORD DVar11; + undefined1 *puVar12; + longlong lVar13; + int iVar14; + ushort *in_RDX; + ulonglong uVar15; + int iVar16; + uint uVar17; + int iVar18; + ushort *puVar19; + byte *pbVar20; + undefined1 auStack_3518 [32]; + DWORD local_34f8; + int local_34e8; + ulonglong local_34e4 [63]; + int aiStack_32e8 [384]; + undefined1 local_2ce8 [11424]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_3518; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + DVar7 = GetTickCount(); + local_34f8 = DVar7; + if (((*(int *)(param_1 + 0x228) == 0) || (in_RDX == (ushort *)0x0)) || + ((param_3 == 0 && (*(int *)(param_1 + 0x22c) == 0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x4203c) = 0; + *(undefined4 *)(param_1 + 0x42040) = 0; + *(undefined4 *)(param_1 + 0x42044) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (param_3 == 0) { + FUN_18000c950(param_1,in_RDX); + } + else { + if (param_3 != 1) goto LAB_18000cb0b; + memcpy(*(void **)(param_1 + 0x270),in_RDX,(ulonglong)*(uint *)(param_1 + 0x47938) * 2); + *(undefined4 *)(param_1 + 0x42004) = 1; + } + if (*(int *)(param_1 + 0x42004) == 0) { + FUN_18000d2a0(param_1); +LAB_18000cb0b: + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x44c4c) = 0; + *(undefined4 *)(param_1 + 0x42038) = 0; + if ((param_5 == 0) && (1 < *(uint *)(param_1 + 0x41fe0))) { + uVar8 = FUN_180015680(param_1,30000,*(uint *)(param_1 + 0x50)); + FUN_18001e920(param_1 + 0x41f40,*(ushort **)(param_1 + 0x270),uVar8 & 0xffff); + *(undefined4 *)(param_1 + 0x42038) = 1; + } + if (*(int *)(param_1 + 0x230) != 0) { + FUN_1800175a0(param_1); + } + iVar10 = *(int *)(param_1 + 0x41fe8); + if (iVar10 == 1) { + FUN_1800184f0(param_1); + } + else if (iVar10 == 2) { + FUN_180018660(param_1); + } + else if (iVar10 == 3) { + FUN_1800184f0(param_1); + FUN_180018660(param_1); + } + else if (iVar10 == 4) { + FUN_180018660(param_1); + FUN_180018660(param_1); + } + FUN_180010780(param_1,*(ushort **)(param_1 + 0x270)); + FUN_1800109c0(param_1); + uVar8 = *(uint *)(param_1 + 0x30); + if (uVar8 < 5) { + if ((int)uVar8 < 1) goto LAB_18000cf9a; + } + else { + uVar8 = 4; + } + if ((((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x28) == 0)) && + (*(int *)(param_1 + 0x10) == 0)) && + ((*(int *)(param_1 + 0x88) == 0 && (*(int *)(param_1 + 0x44) == 0)))) { + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017770(param_1,param_2); + memcpy(local_2ce8,(void *)(param_1 + 0x41ff8),0x2ca0); + FUN_180010780(param_1,*(ushort **)(param_1 + 0x288)); + if (*(int *)(param_1 + 0x42014) < *(int *)(param_1 + 0x42010)) { + iVar10 = *(int *)(param_1 + 0x42018); + uVar17 = *(int *)(param_1 + 0x42010) - iVar10; + uVar8 = iVar10 - *(int *)(param_1 + 0x42014); + uVar9 = FUN_180015680(param_1,30000,(uint)(*(int *)(param_1 + 0x24) * 1000) >> 1); + puVar19 = *(ushort **)(param_1 + 0x288); + if (uVar8 < uVar17) { + uVar8 = uVar17; + } + uVar17 = uVar9 & 0xffff; + if ((uVar9 & 0xffff) < uVar8) { + uVar17 = uVar8; + } + puVar12 = *(undefined1 **)(param_1 + 0x280); + uVar8 = 0; + if (*(int *)(param_1 + 0x47938) != 0) { + do { + uVar5 = *puVar19; + puVar19 = puVar19 + 1; + uVar9 = ((uint)uVar5 - (iVar10 - uVar17)) * (int)(0x3fc00000 / (ulonglong)(uVar17 * 2)) + >> 0x16; + if (uVar9 < 0xc0) { + uVar6 = (undefined1)uVar9; + if (uVar9 < 0x3f) { + uVar6 = 0x3f; + } + } + else { + uVar6 = 0xbf; + } + *puVar12 = uVar6; + uVar8 = uVar8 + 1; + puVar12 = puVar12 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + local_34e8 = 0; + FUN_1800357d0(local_34e4,0,0x7fc); + _Dst = *(byte **)(param_1 + 0x290); + memcpy(_Dst,*(void **)(param_1 + 0x280),(ulonglong)*(uint *)(param_1 + 0x47938)); + uVar15 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + puVar12 = (undefined1 *)(uVar15 + 1 + *(longlong *)(param_1 + 0x280)); + pbVar1 = _Dst + 1; + pbVar2 = pbVar1 + uVar15; + pbVar3 = pbVar2 + uVar15; + iVar10 = (*(int *)(param_1 + 0x41fc4) + -2) * *(uint *)(param_1 + 0x41fc0) + -2; + if (0 < iVar10) { + pbVar20 = pbVar3 + 1; + iVar18 = (uint)pbVar2[uVar15 - 1] + (uint)pbVar1[uVar15 - 1] * 2 + (uint)*_Dst; + iVar16 = (uint)*pbVar3 + (uint)*pbVar2 * 2 + (uint)*pbVar1; + do { + iVar14 = (uint)pbVar20[(longlong)pbVar1 - (longlong)pbVar3] + + (uint)pbVar20[(longlong)pbVar2 - (longlong)pbVar3] * 2 + (uint)*pbVar20; + uVar8 = (uint)(iVar14 + iVar16 * 2 + iVar18) >> 4; + *puVar12 = (char)uVar8; + if (0x7f < uVar8) { + piVar4 = (int *)((longlong)local_34e4 + + (longlong) + (int)(pbVar20[*(longlong *)(param_1 + 0x2a0) + (-1 - (longlong)pbVar3) + ] + uVar8) * 4 + -4); + *piVar4 = *piVar4 + 1; + } + pbVar20 = pbVar20 + 1; + puVar12 = puVar12 + 1; + iVar18 = iVar16; + iVar16 = iVar14; + } while ((longlong)(pbVar20 + (-1 - (longlong)pbVar3)) < (longlong)iVar10); + } + uVar8 = 0; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar9 = *(int *)(param_1 + 0x41fc0) * uVar8; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + uVar8 = uVar8 + 1; + uVar9 = uVar8 * *(int *)(param_1 + 0x41fc0) - 1; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + } while (uVar8 < *(uint *)(param_1 + 0x41fc4)); + } + iVar18 = 0x1ff; + iVar10 = 0; + lVar13 = 0x1ff; + do { + iVar10 = iVar10 + *(int *)((longlong)local_34e4 + lVar13 * 4 + -4); + if (*(uint *)(param_1 + 0x47938) < (uint)(iVar10 * 0x800)) break; + lVar13 = lVar13 + -1; + iVar18 = iVar18 + -1; + } while (0x17d < lVar13); + iVar10 = 0x1000; + if (0x17e < iVar18) { + iVar10 = (int)(0xff000 / (longlong)(iVar18 + -0x7f)); + } + uVar8 = 0; + lVar13 = 0; + if (*(uint *)(param_1 + 0x47938) != 0) { + do { + iVar18 = ((*(byte *)(lVar13 + *(longlong *)(param_1 + 0x280)) - 0x7f) + + (uint)*(byte *)(*(longlong *)(param_1 + 0x2a0) + lVar13)) * iVar10; + iVar18 = (int)(iVar18 + (iVar18 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar18 < 0) { + iVar18 = 0; + } + else if (0xff < iVar18) { + iVar18 = 0xff; + } + *(char *)(*(longlong *)(param_1 + 0x2a0) + lVar13) = (char)iVar18; + uVar8 = uVar8 + 1; + lVar13 = lVar13 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + } + memcpy((void *)(param_1 + 0x41ff8),local_2ce8,0x2ca0); + DVar7 = local_34f8; + } + else { + FUN_180017c40(param_1,uVar8 << 3); + } + } +LAB_18000cf9a: + uVar8 = *(uint *)(param_1 + 0x41fc8); + uVar9 = *(uint *)(param_1 + 0x41fc0); + if ((uVar8 == uVar9) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + } + else if ((uVar8 == uVar9 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) + { + FUN_180019740(param_1); + } + else if ((uVar8 == uVar9 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2) + ) { + FUN_180019b30(param_1); + } + else if ((uVar8 == uVar9 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3) + ) { + FUN_180019e60(param_1); + } + else if ((uVar8 * 2 == uVar9 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + } + else if ((uVar8 * 3 == uVar9 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + } + else if ((uVar9 < uVar8) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + DVar11 = GetTickCount(); + *(DWORD *)(param_1 + 0x42048) = DVar11 - DVar7; + FUN_18000d2a0(param_1); + *(undefined4 *)(param_1 + 0x234) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 3; +} + + +================================================================== + +########## TARGET 180018e90 ########## +callers (2): + 18000ca30 FUN_18000ca30 + 18000d110 FUN_18000d110 + +### CALLER FUNC 18000ca30 (1760 bytes) name=FUN_18000ca30 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_18000ca30(longlong param_1,undefined8 param_2,int param_3,undefined8 param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + int *piVar4; + ushort uVar5; + byte *_Dst; + undefined1 uVar6; + DWORD DVar7; + uint uVar8; + uint uVar9; + int iVar10; + DWORD DVar11; + undefined1 *puVar12; + longlong lVar13; + int iVar14; + ushort *in_RDX; + ulonglong uVar15; + int iVar16; + uint uVar17; + int iVar18; + ushort *puVar19; + byte *pbVar20; + undefined1 auStack_3518 [32]; + DWORD local_34f8; + int local_34e8; + ulonglong local_34e4 [63]; + int aiStack_32e8 [384]; + undefined1 local_2ce8 [11424]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_3518; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + DVar7 = GetTickCount(); + local_34f8 = DVar7; + if (((*(int *)(param_1 + 0x228) == 0) || (in_RDX == (ushort *)0x0)) || + ((param_3 == 0 && (*(int *)(param_1 + 0x22c) == 0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x4203c) = 0; + *(undefined4 *)(param_1 + 0x42040) = 0; + *(undefined4 *)(param_1 + 0x42044) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (param_3 == 0) { + FUN_18000c950(param_1,in_RDX); + } + else { + if (param_3 != 1) goto LAB_18000cb0b; + memcpy(*(void **)(param_1 + 0x270),in_RDX,(ulonglong)*(uint *)(param_1 + 0x47938) * 2); + *(undefined4 *)(param_1 + 0x42004) = 1; + } + if (*(int *)(param_1 + 0x42004) == 0) { + FUN_18000d2a0(param_1); +LAB_18000cb0b: + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x44c4c) = 0; + *(undefined4 *)(param_1 + 0x42038) = 0; + if ((param_5 == 0) && (1 < *(uint *)(param_1 + 0x41fe0))) { + uVar8 = FUN_180015680(param_1,30000,*(uint *)(param_1 + 0x50)); + FUN_18001e920(param_1 + 0x41f40,*(ushort **)(param_1 + 0x270),uVar8 & 0xffff); + *(undefined4 *)(param_1 + 0x42038) = 1; + } + if (*(int *)(param_1 + 0x230) != 0) { + FUN_1800175a0(param_1); + } + iVar10 = *(int *)(param_1 + 0x41fe8); + if (iVar10 == 1) { + FUN_1800184f0(param_1); + } + else if (iVar10 == 2) { + FUN_180018660(param_1); + } + else if (iVar10 == 3) { + FUN_1800184f0(param_1); + FUN_180018660(param_1); + } + else if (iVar10 == 4) { + FUN_180018660(param_1); + FUN_180018660(param_1); + } + FUN_180010780(param_1,*(ushort **)(param_1 + 0x270)); + FUN_1800109c0(param_1); + uVar8 = *(uint *)(param_1 + 0x30); + if (uVar8 < 5) { + if ((int)uVar8 < 1) goto LAB_18000cf9a; + } + else { + uVar8 = 4; + } + if ((((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x28) == 0)) && + (*(int *)(param_1 + 0x10) == 0)) && + ((*(int *)(param_1 + 0x88) == 0 && (*(int *)(param_1 + 0x44) == 0)))) { + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017770(param_1,param_2); + memcpy(local_2ce8,(void *)(param_1 + 0x41ff8),0x2ca0); + FUN_180010780(param_1,*(ushort **)(param_1 + 0x288)); + if (*(int *)(param_1 + 0x42014) < *(int *)(param_1 + 0x42010)) { + iVar10 = *(int *)(param_1 + 0x42018); + uVar17 = *(int *)(param_1 + 0x42010) - iVar10; + uVar8 = iVar10 - *(int *)(param_1 + 0x42014); + uVar9 = FUN_180015680(param_1,30000,(uint)(*(int *)(param_1 + 0x24) * 1000) >> 1); + puVar19 = *(ushort **)(param_1 + 0x288); + if (uVar8 < uVar17) { + uVar8 = uVar17; + } + uVar17 = uVar9 & 0xffff; + if ((uVar9 & 0xffff) < uVar8) { + uVar17 = uVar8; + } + puVar12 = *(undefined1 **)(param_1 + 0x280); + uVar8 = 0; + if (*(int *)(param_1 + 0x47938) != 0) { + do { + uVar5 = *puVar19; + puVar19 = puVar19 + 1; + uVar9 = ((uint)uVar5 - (iVar10 - uVar17)) * (int)(0x3fc00000 / (ulonglong)(uVar17 * 2)) + >> 0x16; + if (uVar9 < 0xc0) { + uVar6 = (undefined1)uVar9; + if (uVar9 < 0x3f) { + uVar6 = 0x3f; + } + } + else { + uVar6 = 0xbf; + } + *puVar12 = uVar6; + uVar8 = uVar8 + 1; + puVar12 = puVar12 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + local_34e8 = 0; + FUN_1800357d0(local_34e4,0,0x7fc); + _Dst = *(byte **)(param_1 + 0x290); + memcpy(_Dst,*(void **)(param_1 + 0x280),(ulonglong)*(uint *)(param_1 + 0x47938)); + uVar15 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + puVar12 = (undefined1 *)(uVar15 + 1 + *(longlong *)(param_1 + 0x280)); + pbVar1 = _Dst + 1; + pbVar2 = pbVar1 + uVar15; + pbVar3 = pbVar2 + uVar15; + iVar10 = (*(int *)(param_1 + 0x41fc4) + -2) * *(uint *)(param_1 + 0x41fc0) + -2; + if (0 < iVar10) { + pbVar20 = pbVar3 + 1; + iVar18 = (uint)pbVar2[uVar15 - 1] + (uint)pbVar1[uVar15 - 1] * 2 + (uint)*_Dst; + iVar16 = (uint)*pbVar3 + (uint)*pbVar2 * 2 + (uint)*pbVar1; + do { + iVar14 = (uint)pbVar20[(longlong)pbVar1 - (longlong)pbVar3] + + (uint)pbVar20[(longlong)pbVar2 - (longlong)pbVar3] * 2 + (uint)*pbVar20; + uVar8 = (uint)(iVar14 + iVar16 * 2 + iVar18) >> 4; + *puVar12 = (char)uVar8; + if (0x7f < uVar8) { + piVar4 = (int *)((longlong)local_34e4 + + (longlong) + (int)(pbVar20[*(longlong *)(param_1 + 0x2a0) + (-1 - (longlong)pbVar3) + ] + uVar8) * 4 + -4); + *piVar4 = *piVar4 + 1; + } + pbVar20 = pbVar20 + 1; + puVar12 = puVar12 + 1; + iVar18 = iVar16; + iVar16 = iVar14; + } while ((longlong)(pbVar20 + (-1 - (longlong)pbVar3)) < (longlong)iVar10); + } + uVar8 = 0; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar9 = *(int *)(param_1 + 0x41fc0) * uVar8; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + uVar8 = uVar8 + 1; + uVar9 = uVar8 * *(int *)(param_1 + 0x41fc0) - 1; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + } while (uVar8 < *(uint *)(param_1 + 0x41fc4)); + } + iVar18 = 0x1ff; + iVar10 = 0; + lVar13 = 0x1ff; + do { + iVar10 = iVar10 + *(int *)((longlong)local_34e4 + lVar13 * 4 + -4); + if (*(uint *)(param_1 + 0x47938) < (uint)(iVar10 * 0x800)) break; + lVar13 = lVar13 + -1; + iVar18 = iVar18 + -1; + } while (0x17d < lVar13); + iVar10 = 0x1000; + if (0x17e < iVar18) { + iVar10 = (int)(0xff000 / (longlong)(iVar18 + -0x7f)); + } + uVar8 = 0; + lVar13 = 0; + if (*(uint *)(param_1 + 0x47938) != 0) { + do { + iVar18 = ((*(byte *)(lVar13 + *(longlong *)(param_1 + 0x280)) - 0x7f) + + (uint)*(byte *)(*(longlong *)(param_1 + 0x2a0) + lVar13)) * iVar10; + iVar18 = (int)(iVar18 + (iVar18 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar18 < 0) { + iVar18 = 0; + } + else if (0xff < iVar18) { + iVar18 = 0xff; + } + *(char *)(*(longlong *)(param_1 + 0x2a0) + lVar13) = (char)iVar18; + uVar8 = uVar8 + 1; + lVar13 = lVar13 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + } + memcpy((void *)(param_1 + 0x41ff8),local_2ce8,0x2ca0); + DVar7 = local_34f8; + } + else { + FUN_180017c40(param_1,uVar8 << 3); + } + } +LAB_18000cf9a: + uVar8 = *(uint *)(param_1 + 0x41fc8); + uVar9 = *(uint *)(param_1 + 0x41fc0); + if ((uVar8 == uVar9) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + } + else if ((uVar8 == uVar9 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) + { + FUN_180019740(param_1); + } + else if ((uVar8 == uVar9 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2) + ) { + FUN_180019b30(param_1); + } + else if ((uVar8 == uVar9 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3) + ) { + FUN_180019e60(param_1); + } + else if ((uVar8 * 2 == uVar9 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + } + else if ((uVar8 * 3 == uVar9 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + } + else if ((uVar9 < uVar8) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + DVar11 = GetTickCount(); + *(DWORD *)(param_1 + 0x42048) = DVar11 - DVar7; + FUN_18000d2a0(param_1); + *(undefined4 *)(param_1 + 0x234) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 3; +} + + +================================================================== + +### CALLER FUNC 18000d110 (396 bytes) name=FUN_18000d110 + +void FUN_18000d110(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + + if (*(int *)(param_1 + 0x234) != 0) { + FUN_1800109c0(param_1); + if (((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x30) != 0)) && + ((*(int *)(param_1 + 0x28) == 0 || (*(int *)(param_1 + 0x10) != 0)))) { + iVar3 = *(int *)(param_1 + 0x30) << 3; + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017c40(param_1,iVar3); + } + else { + FUN_180017fd0(param_1,iVar3); + } + } + uVar1 = *(uint *)(param_1 + 0x41fc8); + uVar2 = *(uint *)(param_1 + 0x41fc0); + if ((uVar1 == uVar2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + return; + } + if ((uVar1 == uVar2 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) { + FUN_180019740(param_1); + return; + } + if ((uVar1 == uVar2 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2)) { + FUN_180019b30(param_1); + return; + } + if ((uVar1 == uVar2 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3)) { + FUN_180019e60(param_1); + return; + } + if ((uVar1 * 2 == uVar2 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + return; + } + if ((uVar1 * 3 == uVar2 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + return; + } + if ((uVar2 < uVar1) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + } + return; +} + + +================================================================== + +########## TARGET 180009ee0 ########## +callers (0): + +########## TARGET 180002f50 ########## +callers (2): + 180009b50 FUN_180009b50 + 180009ee0 FUN_180009ee0 + +### CALLER FUNC 180009b50 (875 bytes) name=FUN_180009b50 + +undefined8 FUN_180009b50(uint param_1,uint *param_2,longlong param_3,int param_4) + +{ + LPCWSTR pWVar1; + uint uVar2; + uint uVar3; + int iVar4; + LPVOID pvVar5; + ulonglong uVar6; + undefined8 uVar7; + longlong lVar8; + ulonglong uVar9; + LPCWSTR local_res10; + uint local_50; + uint local_4c; + uint local_48; + uint local_44; + uint local_40; + uint local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + + uVar9 = (ulonglong)param_1; + if (((param_2 != (uint *)0x0) && (param_3 != 0)) && (param_4 == 2)) { + lVar8 = uVar9 * 0x4a8; + uVar2 = *param_2; + if ((((uVar2 == (&DAT_1800737b8)[uVar9 * 0x12a]) && + (uVar3 = param_2[1], uVar3 == *(uint *)(&DAT_1800737bc + lVar8))) && + (((uVar2 & 3) == 0 && (((param_2[2] & 3) == 0 && ((param_2[4] & 3) == 0)))))) && + ((uVar2 <= param_2[2] && + ((((uVar3 <= param_2[3] && (uVar3 != 0)) && (param_2[3] != 0)) && (param_2[5] != 0)))))) { + if (*(int *)(&DAT_180073778 + lVar8) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (*(int *)((&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + *(undefined4 *)(&DAT_18007377c + lVar8) = 2; + *(undefined4 *)(&DAT_180073bf4 + lVar8) = 0; + *(undefined4 *)(&DAT_180073bf0 + lVar8) = 0; + *(uint *)(&DAT_180073798 + lVar8) = *param_2; + *(uint *)(&DAT_18007379c + lVar8) = param_2[1]; + *(uint *)(&DAT_1800737a0 + lVar8) = param_2[2]; + *(uint *)(&DAT_1800737a4 + lVar8) = param_2[3]; + *(uint *)(&DAT_1800737a8 + lVar8) = param_2[4]; + *(uint *)(&DAT_1800737ac + lVar8) = param_2[5]; + uVar2 = *param_2 * param_2[1] * 2; + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + pvVar5 = thunk_FUN_18001eb74((ulonglong)uVar2 + 0x98); + *(LPVOID *)(&DAT_180073788 + lVar8) = pvVar5; + if (pvVar5 == (LPVOID)0x0) { + SetLastError(0xe4ae0002); + return 0; + } + local_50 = *param_2; + local_4c = param_2[1]; + local_48 = param_2[2]; + local_44 = param_2[3]; + local_40 = param_2[4]; + local_3c = param_2[5]; + local_38 = 4; + local_34 = 1; + local_30 = 1; + local_2c = 5; + uVar6 = FUN_18001e4c0((&DAT_180073758)[uVar9 * 0x95]); + if ((int)uVar6 == 0) { + SetLastError(0xe4ae0008); + return 0; + } + iVar4 = FUN_18000bce0((&DAT_180073750)[uVar9 * 0x95],&local_50); + if (iVar4 == 0) { + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0003); + return 0; + } + FUN_18001e3c0((&DAT_180073758)[uVar9 * 0x95],(longlong *)&local_res10); + iVar4 = FUN_18000f130((&DAT_180073750)[uVar9 * 0x95],local_res10); + if (iVar4 == 0) { + SetLastError(0xe4ae0009); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + FUN_180002f50(param_1); + if (*(int *)((longlong)(&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar7 = FUN_18001d2d0((void *)(&DAT_180073758)[uVar9 * 0x95],uVar2, + *(longlong *)(&DAT_180073788 + lVar8)); + if ((int)uVar7 != 0) { + *(longlong *)(&DAT_180073790 + lVar8) = param_3; + *(undefined4 *)(&DAT_180073bec + lVar8) = 0xffffffff; + *(undefined4 *)(&DAT_180073778 + lVar8) = 1; + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 1; + } + } + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0008); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +########## TARGET 180016ae0 ########## +callers (1): + 18000c760 FUN_18000c760 + +### CALLER FUNC 18000c760 (488 bytes) name=FUN_18000c760 + +void FUN_18000c760(longlong param_1,int param_2,uint param_3) + +{ + int iVar1; + int iVar2; + uint uVar3; + longlong lVar4; + int iVar5; + uint uVar6; + int iVar7; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if ((*(int *)(param_1 + 0x228) != 0) && (*(int *)(param_1 + 0x41340) != 0)) { + if (param_2 == 0) { + FUN_180016ae0(param_1); + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41344) != 0)) { + FUN_18000ffb0(param_1); + } + } + else { + uVar6 = 0; + if (param_2 == 1) { + if (1 < param_3) { + DAT_18009a43c = 0; + DAT_18009a438 = 0; + DAT_18009a440 = (*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938); + DAT_18009a444 = *(int *)(param_1 + 0x47938) * *(int *)(param_1 + 0x41554) * 2; + DAT_18009a448 = + (DAT_18009a444 + DAT_18009a440 + -2 + param_3) / (param_3 - 1) + 7 & 0xfffffff8; + } + } + else if (param_2 < 1) goto LAB_18000c92d; + uVar3 = DAT_18009a448; + iVar2 = DAT_18009a444; + iVar1 = DAT_18009a43c; + iVar5 = DAT_18009a438; + if (DAT_18009a438 < DAT_18009a440) { + lVar4 = (longlong)DAT_18009a438; + uVar6 = DAT_18009a440 - DAT_18009a438; + if ((int)DAT_18009a448 < DAT_18009a440 - DAT_18009a438) { + uVar6 = DAT_18009a448; + } + FUN_180016dd0(param_1,(short *)(*(longlong *)(param_1 + 0x41848) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41850) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41858) + lVar4 * 2),uVar6); + DAT_18009a438 = iVar5 + uVar6; + } + if (((int)uVar6 < (int)uVar3) && (iVar1 < iVar2)) { + lVar4 = (longlong)iVar1; + iVar7 = uVar3 - uVar6; + iVar5 = iVar2 - iVar1; + if (iVar7 < iVar2 - iVar1) { + iVar5 = iVar7; + } + FUN_180016f10(param_1,(ushort *)(*(longlong *)(param_1 + 0x41860) + lVar4 * 2), + (ushort *)(*(longlong *)(param_1 + 0x41868) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41870) + lVar4 * 2),iVar5); + DAT_18009a43c = iVar1 + iVar5; + if (DAT_18009a43c == iVar2) { + *(undefined4 *)(param_1 + 0x41348) = 1; + } + } + } + } +LAB_18000c92d: + /* WARNING: Could not recover jumptable at 0x00018000c941. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return; +} + + +================================================================== + +########## TARGET 18000ffb0 ########## +callers (1): + 18000c760 FUN_18000c760 + +### CALLER FUNC 18000c760 (488 bytes) name=FUN_18000c760 + +void FUN_18000c760(longlong param_1,int param_2,uint param_3) + +{ + int iVar1; + int iVar2; + uint uVar3; + longlong lVar4; + int iVar5; + uint uVar6; + int iVar7; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if ((*(int *)(param_1 + 0x228) != 0) && (*(int *)(param_1 + 0x41340) != 0)) { + if (param_2 == 0) { + FUN_180016ae0(param_1); + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41344) != 0)) { + FUN_18000ffb0(param_1); + } + } + else { + uVar6 = 0; + if (param_2 == 1) { + if (1 < param_3) { + DAT_18009a43c = 0; + DAT_18009a438 = 0; + DAT_18009a440 = (*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938); + DAT_18009a444 = *(int *)(param_1 + 0x47938) * *(int *)(param_1 + 0x41554) * 2; + DAT_18009a448 = + (DAT_18009a444 + DAT_18009a440 + -2 + param_3) / (param_3 - 1) + 7 & 0xfffffff8; + } + } + else if (param_2 < 1) goto LAB_18000c92d; + uVar3 = DAT_18009a448; + iVar2 = DAT_18009a444; + iVar1 = DAT_18009a43c; + iVar5 = DAT_18009a438; + if (DAT_18009a438 < DAT_18009a440) { + lVar4 = (longlong)DAT_18009a438; + uVar6 = DAT_18009a440 - DAT_18009a438; + if ((int)DAT_18009a448 < DAT_18009a440 - DAT_18009a438) { + uVar6 = DAT_18009a448; + } + FUN_180016dd0(param_1,(short *)(*(longlong *)(param_1 + 0x41848) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41850) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41858) + lVar4 * 2),uVar6); + DAT_18009a438 = iVar5 + uVar6; + } + if (((int)uVar6 < (int)uVar3) && (iVar1 < iVar2)) { + lVar4 = (longlong)iVar1; + iVar7 = uVar3 - uVar6; + iVar5 = iVar2 - iVar1; + if (iVar7 < iVar2 - iVar1) { + iVar5 = iVar7; + } + FUN_180016f10(param_1,(ushort *)(*(longlong *)(param_1 + 0x41860) + lVar4 * 2), + (ushort *)(*(longlong *)(param_1 + 0x41868) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41870) + lVar4 * 2),iVar5); + DAT_18009a43c = iVar1 + iVar5; + if (DAT_18009a43c == iVar2) { + *(undefined4 *)(param_1 + 0x41348) = 1; + } + } + } + } +LAB_18000c92d: + /* WARNING: Could not recover jumptable at 0x00018000c941. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return; +} + + +================================================================== + +########## TARGET 18001d930 ########## +callers (0): + +########## TARGET 18001d6e0 ########## +callers (1): + 180008bd0 FUN_180008bd0 + +### CALLER FUNC 180008bd0 (3886 bytes) name=FUN_180008bd0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_180008bd0(uint param_1) + +{ + int *piVar1; + ulonglong *puVar2; + char cVar3; + longlong *plVar4; + undefined8 uVar5; + undefined **ppuVar6; + undefined8 *puVar7; + int iVar8; + uint uVar9; + longlong lVar10; + ulonglong *_Source; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + char *pcVar14; + ulonglong uVar15; + longlong lVar16; + undefined1 auStack_d8 [32]; + ulonglong *local_b8; + uint local_b0; + uint local_ac; + uint local_a0; + uint local_9c; + undefined4 local_98; + undefined8 local_78; + undefined8 local_70 [5]; + undefined4 local_48; + float local_44; + char local_40; + char local_3f; + char local_3e; + char local_3d; + char local_3c; + char local_3b; + char local_3a; + char local_39; + ulonglong local_38; + + local_78 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + lVar16 = (longlong)(int)param_1; + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); +LAB_180008c52: + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar5 = FUN_18001d6e0((&DAT_180073758)[uVar11 * 0x95],(undefined8 *)&local_b0,local_70,1000); + if ((int)uVar5 != 0) goto LAB_180008c98; + } + SetLastError(0xe4ae0008); + uVar5 = 0; + } + else { + uVar5 = FUN_18001d6e0((&DAT_180073758)[uVar11 * 0x95],(undefined8 *)&local_b0,local_70,500); + if ((int)uVar5 == 0) goto LAB_180008c52; +LAB_180008c98: + uVar9 = local_b0; + uVar13 = local_ac >> 0x18; + if ((((((uVar13 == 0) || (uVar13 == 1)) && (local_b0 != 0x9898f19)) && + ((local_b0 != 0x9898f1a && (local_b0 != 0x9898f1c)))) && + ((local_b0 != 0x9898f1f && ((local_b0 != 0x9898f20 && (local_b0 != 0x9898f21)))))) && + (local_b0 != 0x9898f2b)) { + SetLastError(0xe4ae000b); + uVar5 = 0; + } + else { + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar11 * 0x12a),0,0x48); + *(undefined4 *)(&DAT_180073bac + lVar12) = 0; + *(undefined4 *)(&DAT_180073bb0 + lVar12) = 0; + FUN_1800357d0((ulonglong *)(&DAT_180073bb4 + lVar12),0,0x38); + FUN_1800357d0((ulonglong *)((&DAT_180073750)[uVar11 * 0x95] + 8),0,200); + (&DAT_1800737b0)[uVar11 * 0x12a] = uVar9; + *(undefined4 *)(&DAT_1800737b4 + lVar12) = 0; + *(undefined4 *)(&DAT_1800737c0 + lVar12) = 0; + *(undefined4 *)(&DAT_1800737c4 + lVar12) = 0; + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + puVar7 = (undefined8 *)(**(code **)(*ppuVar6 + 0x18))(ppuVar6); + _Source = puVar7 + 3; + local_b8 = _Source; + switch(uVar13) { + case 0: + lVar10 = -1; + pcVar14 = "C1"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590e0 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590e0,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 1: + lVar10 = -1; + pcVar14 = "M3"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059100 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059100,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 2: + lVar10 = -1; + pcVar14 = "M3Pro"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059104 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059104,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 3: + lVar10 = -1; + pcVar14 = "160Core"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590f8 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590f8,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 4: + lVar10 = -1; + pcVar14 = "M6"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_18005910c - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_18005910c,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 5: + lVar10 = -1; + pcVar14 = "C1Pro"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590e4 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590e4,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 6: + lVar10 = -1; + pcVar14 = "C1ProLt"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590f0 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590f0,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + default: + lVar10 = -1; + pcVar14 = "Mx"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059110 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059110,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + } + strncpy(&DAT_1800737e8 + lVar12,(char *)_Source,8); + (&DAT_1800737ef)[lVar12] = 0; + FUN_180032bb0(&DAT_1800737c8 + lVar12,(byte *)"%s-%u",_Source,(ulonglong)uVar9); + (&DAT_1800737e7)[lVar12] = 0; + (&DAT_1800737b8)[uVar11 * 0x12a] = local_a0; + *(uint *)(&DAT_1800737bc + lVar12) = local_9c; + *(uint *)(&DAT_1800737f8 + lVar12) = local_a0; + *(uint *)(&DAT_1800737fc + lVar12) = local_9c; + if ((local_a0 < 0x51) && (local_9c < 0x51)) { + *(uint *)(&DAT_1800737f8 + lVar12) = local_a0 * 4; + *(uint *)(&DAT_1800737fc + lVar12) = local_9c * 4; + } + if ((local_a0 < 0xa1) && (local_9c < 0xa1)) { + *(int *)(&DAT_1800737f8 + lVar12) = *(int *)(&DAT_1800737f8 + lVar12) * 2; + *(int *)(&DAT_1800737fc + lVar12) = *(int *)(&DAT_1800737fc + lVar12) * 2; + } + *(undefined4 *)(&DAT_1800737f0 + lVar12) = local_98; + *(undefined4 *)(&DAT_1800737f4 + lVar12) = local_98; + *(undefined4 *)(&DAT_180073780 + lVar12) = 2; + FUN_18000d5f0((&DAT_180073750)[uVar11 * 0x95],2); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 100) = 1; + lVar12 = (&DAT_180073750)[uVar11 * 0x95]; + EnterCriticalSection((LPCRITICAL_SECTION)(lVar12 + 0x238)); + memcpy(&DAT_180099000,&DAT_18005cde0,0xa1c); + lVar10 = 0; + do { + uVar9 = *(int *)((longlong)&DAT_180099004 + lVar10) - + *(int *)((longlong)&DAT_180099000 + lVar10); + *(uint *)((longlong)&DAT_180099a20 + lVar10) = ((uVar9 >> 1) + 0x1000000) / uVar9; + uVar9 = *(int *)((longlong)&DAT_180099008 + lVar10) - + *(int *)((longlong)&DAT_180099004 + lVar10); + *(uint *)((longlong)&DAT_180099a24 + lVar10) = ((uVar9 >> 1) + 0x1000000) / uVar9; + lVar10 = lVar10 + 8; + } while (lVar10 < 0xa18); + DAT_180073748 = (undefined4)(0x7fffffff / (longlong)DAT_18009a434); + *(undefined4 *)(lVar12 + 0x68) = 7; + LeaveCriticalSection((LPCRITICAL_SECTION)(lVar12 + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x50) = 200; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x10) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x14) = 20000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x18) = 100000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x1c) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x20) = 0xff; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x24) = 5; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x6c) = 1; + if (local_44 == _DAT_180057598) { + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa8) = 0; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xac) = local_40 * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb0) = local_3f * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb4) = local_3e * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb8) = local_3d * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xbc) = local_3c * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xc0) = local_3b * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xc4) = local_3a * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 200) = local_39 * 0x32; + } + else { + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa4) = local_48; + *(float *)((&DAT_180073750)[uVar11 * 0x95] + 0xa8) = local_44; + lVar12 = (&DAT_180073750)[uVar11 * 0x95]; + *(undefined4 *)(lVar12 + 0xac) = 0; + *(undefined4 *)(lVar12 + 0xb0) = 0; + *(undefined4 *)(lVar12 + 0xb4) = 0; + *(undefined4 *)(lVar12 + 0xb8) = 0; + *(undefined4 *)(lVar12 + 0xbc) = 0; + *(undefined4 *)(lVar12 + 0xc0) = 0; + *(undefined4 *)(lVar12 + 0xc4) = 0; + *(undefined4 *)(lVar12 + 200) = 0; + } + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xcc) = 2; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd0) = 0x41200000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd4) = 0x3f800000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd8) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xdc) = 0x3ecccccd; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf0) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf4) = 0x3f7fa57f; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf8) = 0x3f800000; + LOCK(); + puVar2 = _Source + -1; + uVar11 = *puVar2; + *(int *)puVar2 = (int)*puVar2 + -1; + UNLOCK(); + if ((int)uVar11 + -1 < 1) { + (**(code **)(*(longlong *)_Source[-3] + 8))(); + } + uVar5 = 1; + } + } + return uVar5; +} + + +================================================================== + +########## TARGET 18001d2d0 ########## +callers (1): + 180009b50 FUN_180009b50 + +### CALLER FUNC 180009b50 (875 bytes) name=FUN_180009b50 + +undefined8 FUN_180009b50(uint param_1,uint *param_2,longlong param_3,int param_4) + +{ + LPCWSTR pWVar1; + uint uVar2; + uint uVar3; + int iVar4; + LPVOID pvVar5; + ulonglong uVar6; + undefined8 uVar7; + longlong lVar8; + ulonglong uVar9; + LPCWSTR local_res10; + uint local_50; + uint local_4c; + uint local_48; + uint local_44; + uint local_40; + uint local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + + uVar9 = (ulonglong)param_1; + if (((param_2 != (uint *)0x0) && (param_3 != 0)) && (param_4 == 2)) { + lVar8 = uVar9 * 0x4a8; + uVar2 = *param_2; + if ((((uVar2 == (&DAT_1800737b8)[uVar9 * 0x12a]) && + (uVar3 = param_2[1], uVar3 == *(uint *)(&DAT_1800737bc + lVar8))) && + (((uVar2 & 3) == 0 && (((param_2[2] & 3) == 0 && ((param_2[4] & 3) == 0)))))) && + ((uVar2 <= param_2[2] && + ((((uVar3 <= param_2[3] && (uVar3 != 0)) && (param_2[3] != 0)) && (param_2[5] != 0)))))) { + if (*(int *)(&DAT_180073778 + lVar8) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (*(int *)((&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + *(undefined4 *)(&DAT_18007377c + lVar8) = 2; + *(undefined4 *)(&DAT_180073bf4 + lVar8) = 0; + *(undefined4 *)(&DAT_180073bf0 + lVar8) = 0; + *(uint *)(&DAT_180073798 + lVar8) = *param_2; + *(uint *)(&DAT_18007379c + lVar8) = param_2[1]; + *(uint *)(&DAT_1800737a0 + lVar8) = param_2[2]; + *(uint *)(&DAT_1800737a4 + lVar8) = param_2[3]; + *(uint *)(&DAT_1800737a8 + lVar8) = param_2[4]; + *(uint *)(&DAT_1800737ac + lVar8) = param_2[5]; + uVar2 = *param_2 * param_2[1] * 2; + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + pvVar5 = thunk_FUN_18001eb74((ulonglong)uVar2 + 0x98); + *(LPVOID *)(&DAT_180073788 + lVar8) = pvVar5; + if (pvVar5 == (LPVOID)0x0) { + SetLastError(0xe4ae0002); + return 0; + } + local_50 = *param_2; + local_4c = param_2[1]; + local_48 = param_2[2]; + local_44 = param_2[3]; + local_40 = param_2[4]; + local_3c = param_2[5]; + local_38 = 4; + local_34 = 1; + local_30 = 1; + local_2c = 5; + uVar6 = FUN_18001e4c0((&DAT_180073758)[uVar9 * 0x95]); + if ((int)uVar6 == 0) { + SetLastError(0xe4ae0008); + return 0; + } + iVar4 = FUN_18000bce0((&DAT_180073750)[uVar9 * 0x95],&local_50); + if (iVar4 == 0) { + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0003); + return 0; + } + FUN_18001e3c0((&DAT_180073758)[uVar9 * 0x95],(longlong *)&local_res10); + iVar4 = FUN_18000f130((&DAT_180073750)[uVar9 * 0x95],local_res10); + if (iVar4 == 0) { + SetLastError(0xe4ae0009); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + FUN_180002f50(param_1); + if (*(int *)((longlong)(&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar7 = FUN_18001d2d0((void *)(&DAT_180073758)[uVar9 * 0x95],uVar2, + *(longlong *)(&DAT_180073788 + lVar8)); + if ((int)uVar7 != 0) { + *(longlong *)(&DAT_180073790 + lVar8) = param_3; + *(undefined4 *)(&DAT_180073bec + lVar8) = 0xffffffff; + *(undefined4 *)(&DAT_180073778 + lVar8) = 1; + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 1; + } + } + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0008); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +########## TARGET 18001d520 ########## +callers (7): + 1800023f0 MAG_Free + 180002790 MAG_DisLinkCamera + 180002d40 MAG_StopProcessImage + 18001c400 FUN_18001c400 + 18001c590 FUN_18001c590 + 18001c840 FUN_18001c840 + 18001d2d0 FUN_18001d2d0 + +### CALLER FUNC 1800023f0 (410 bytes) name=MAG_Free + +void MAG_Free(uint param_1) + +{ + int *piVar1; + ulonglong uVar2; + longlong lVar3; + uint uVar4; + + /* 0x23f0 8 MAG_Free */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x000180002405. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar2 = (ulonglong)param_1; + lVar3 = uVar2 * 0x4a8; + if (((((&DAT_180073758)[uVar2 * 0x95] == 0) || ((&DAT_180073750)[uVar2 * 0x95] == 0)) || + ((&DAT_180073760)[uVar2 * 0x95] == 0)) || ((&DAT_180073768)[uVar2 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + } + else { + if (*(int *)(&DAT_180073778 + lVar3) != 0) { + MAG_StopProcessImage(param_1); + } + uVar4 = 0; + if (*(LPVOID *)(&DAT_180073788 + lVar3) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar3)); + *(undefined8 *)(&DAT_180073788 + lVar3) = 0; + } + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x18) != 0) { + FUN_18001d520((&DAT_180073758)[uVar2 * 0x95]); + } + lVar3 = (&DAT_180073758)[uVar2 * 0x95]; + if (*(int *)(lVar3 + 0x14) != 0) { + if (*(int *)(lVar3 + 0x18) != 0) { + FUN_18001d520(lVar3); + } + FUN_180001470(lVar3 + 0x80); + if (*(int *)(lVar3 + 0x2cf0) != 0) { + piVar1 = (int *)(lVar3 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar4 = uVar4 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar4 < *(uint *)(lVar3 + 0x2cf0)); + } + (**(code **)(*(longlong *)(lVar3 + 0x80) + 0x28))(lVar3 + 0x80); + if (*(HWND *)(lVar3 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(lVar3 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(lVar3 + 0x38) != 0) { + usb_release_interface(*(longlong *)(lVar3 + 0x38),0); + usb_close(*(undefined8 *)(lVar3 + 0x38)); + *(undefined8 *)(lVar3 + 0x38) = 0; + } + *(undefined8 *)(lVar3 + 0x30) = 0; + *(undefined4 *)(lVar3 + 0x14) = 0; + } + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x10) != 0) { + FUN_18001c590((&DAT_180073758)[uVar2 * 0x95]); + return; + } + } + return; +} + + +================================================================== + +### CALLER FUNC 180002790 (325 bytes) name=MAG_DisLinkCamera + +void MAG_DisLinkCamera(uint param_1) + +{ + longlong lVar1; + int *piVar2; + uint uVar3; + ulonglong uVar4; + + /* 0x2790 4 MAG_DisLinkCamera */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x0001800027a5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar4 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar4 * 0x95] != 0) && ((&DAT_180073750)[uVar4 * 0x95] != 0)) && + ((&DAT_180073760)[uVar4 * 0x95] != 0)) && ((&DAT_180073768)[uVar4 * 0x95] != 0)) { + if (*(int *)(&DAT_180073778 + uVar4 * 0x4a8) != 0) { + MAG_StopProcessImage(param_1); + } + lVar1 = (&DAT_180073758)[uVar4 * 0x95]; + if (*(int *)(lVar1 + 0x18) != 0) { + FUN_18001d520(lVar1); + } + FUN_180001470(lVar1 + 0x80); + uVar3 = 0; + if (*(int *)(lVar1 + 0x2cf0) != 0) { + piVar2 = (int *)(lVar1 + 0x13c); + do { + if (*piVar2 != 0) { + *piVar2 = 0; + } + uVar3 = uVar3 + 1; + piVar2 = piVar2 + 0x16; + } while (uVar3 < *(uint *)(lVar1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(lVar1 + 0x80) + 0x28))(lVar1 + 0x80); + if (*(HWND *)(lVar1 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(lVar1 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(lVar1 + 0x38) != 0) { + usb_release_interface(*(longlong *)(lVar1 + 0x38),0); + usb_close(*(undefined8 *)(lVar1 + 0x38)); + *(undefined8 *)(lVar1 + 0x38) = 0; + } + *(undefined8 *)(lVar1 + 0x30) = 0; + *(undefined4 *)(lVar1 + 0x14) = 0; + return; + } + /* WARNING: Could not recover jumptable at 0x0001800028ce. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### CALLER FUNC 180002d40 (514 bytes) name=MAG_StopProcessImage + +void MAG_StopProcessImage(uint param_1) + +{ + longlong lVar1; + longlong *plVar2; + ulonglong uVar3; + longlong lVar4; + + /* 0x2d40 63 MAG_StopProcessImage */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x000180002d55. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar3 = (ulonglong)param_1; + lVar4 = uVar3 * 0x4a8; + if (((((&DAT_180073758)[uVar3 * 0x95] != 0) && ((&DAT_180073750)[uVar3 * 0x95] != 0)) && + ((&DAT_180073760)[uVar3 * 0x95] != 0)) && ((&DAT_180073768)[uVar3 * 0x95] != 0)) { + if ((*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x48) != 0) || + (*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x44) != 0)) { + lVar1 = (&DAT_180073768)[uVar3 * 0x95]; + FUN_180001470(lVar1 + 8); + if (*(int *)(lVar1 + 0x48) != 0) { + *(undefined4 *)(lVar1 + 0x4d8) = 0; + SetEvent(*(HANDLE *)(lVar1 + 0x4e8)); + if (*(longlong *)(lVar1 + 0x4e0) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(lVar1 + 0x4e0) + 0x58),0xffffffff); + plVar2 = *(longlong **)(lVar1 + 0x4e0); + if (plVar2 != (longlong *)0x0) { + (**(code **)(*plVar2 + 8))(plVar2,1); + } + *(undefined8 *)(lVar1 + 0x4e0) = 0; + } + CloseHandle(*(HANDLE *)(lVar1 + 0x4e8)); + *(undefined4 *)(lVar1 + 0x48) = 0; + } + if (*(int *)(lVar1 + 0x44) != 0) { + *(undefined4 *)(lVar1 + 0x44) = 0; + } + (**(code **)(*(longlong *)(lVar1 + 0x50) + 0x98))(lVar1 + 0x50); + *(undefined4 *)(lVar1 + 0x40) = 0; + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8); + } + lVar1 = (&DAT_180073760)[uVar3 * 0x95]; + if (*(int *)(lVar1 + 0x44) != 0) { + FUN_180001470(lVar1 + 8); + *(undefined4 *)(lVar1 + 0x40) = 0; + *(undefined4 *)(lVar1 + 0x44) = 0; + if (*(longlong *)(lVar1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(lVar1 + 0x50) = 0; + } + if (*(longlong *)(lVar1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(lVar1 + 0x48) = 0; + } + if (*(longlong *)(lVar1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(lVar1 + 0x58) = 0; + } + AVIFileExit(); + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8); + } + if (*(int *)((&DAT_180073758)[uVar3 * 0x95] + 0x18) != 0) { + FUN_18001d520((&DAT_180073758)[uVar3 * 0x95]); + } + lVar1 = (&DAT_180073750)[uVar3 * 0x95]; + *(undefined4 *)(&DAT_180073778 + lVar4) = 0; + *(undefined4 *)(&DAT_18007377c + lVar4) = 0; + *(undefined8 *)(&DAT_180073790 + lVar4) = 0; + FUN_18000c2b0(lVar1); + if (*(LPVOID *)(&DAT_180073788 + lVar4) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar4)); + *(undefined8 *)(&DAT_180073788 + lVar4) = 0; + } + return; + } + /* WARNING: Could not recover jumptable at 0x000180002f3b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### CALLER FUNC 18001c400 (325 bytes) name=FUN_18001c400 + +void FUN_18001c400(undefined8 *param_1) + +{ + int *piVar1; + uint uVar2; + + *param_1 = CNetComm::vftable; + uVar2 = 0; + *(undefined4 *)(param_1 + 2) = 0; + if (*(int *)(param_1 + 3) != 0) { + FUN_18001d520((longlong)param_1); + } + if (*(int *)((longlong)param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 3) != 0) { + FUN_18001d520((longlong)param_1); + } + FUN_180001470((longlong)(param_1 + 0x10)); + if (*(int *)(param_1 + 0x59e) != 0) { + piVar1 = (int *)((longlong)param_1 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar2 = uVar2 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar2 < *(uint *)(param_1 + 0x59e)); + } + (**(code **)(param_1[0x10] + 0x28))(param_1 + 0x10); + if ((HWND)param_1[4] != (HWND)0x0) { + PostMessageW((HWND)param_1[4],0x111,0x83e9,0); + } + if (param_1[7] != 0) { + usb_release_interface(param_1[7],0); + usb_close(param_1[7]); + param_1[7] = 0; + } + param_1[6] = 0; + *(undefined4 *)((longlong)param_1 + 0x14) = 0; + } + *(undefined4 *)(param_1 + 0x59e) = 0; + CloseHandle((HANDLE)param_1[0x5a2]); + param_1[0x17] = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x19)); + CSyncObject::~CSyncObject((CSyncObject *)(param_1 + 0x17)); + param_1[0x10] = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x12)); + CSyncObject::~CSyncObject((CSyncObject *)(param_1 + 0x10)); + return; +} + + +================================================================== + +### CALLER FUNC 18001c590 (223 bytes) name=FUN_18001c590 + +void FUN_18001c590(longlong param_1) + +{ + int *piVar1; + uint uVar2; + + uVar2 = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + if (*(int *)(param_1 + 0x18) != 0) { + FUN_18001d520(param_1); + } + if (*(int *)(param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 0x18) != 0) { + FUN_18001d520(param_1); + } + FUN_180001470(param_1 + 0x80); + if (*(int *)(param_1 + 0x2cf0) != 0) { + piVar1 = (int *)(param_1 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar2 = uVar2 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar2 < *(uint *)(param_1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + if (*(HWND *)(param_1 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(param_1 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(param_1 + 0x38) != 0) { + usb_release_interface(*(longlong *)(param_1 + 0x38),0); + usb_close(*(undefined8 *)(param_1 + 0x38)); + *(undefined8 *)(param_1 + 0x38) = 0; + } + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + } + *(undefined4 *)(param_1 + 0x2cf0) = 0; + return; +} + + +================================================================== + +### CALLER FUNC 18001c840 (183 bytes) name=FUN_18001c840 + +void FUN_18001c840(longlong param_1) + +{ + int *piVar1; + uint uVar2; + + if (*(int *)(param_1 + 0x18) != 0) { + FUN_18001d520(param_1); + } + FUN_180001470(param_1 + 0x80); + uVar2 = 0; + if (*(int *)(param_1 + 0x2cf0) != 0) { + piVar1 = (int *)(param_1 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar2 = uVar2 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar2 < *(uint *)(param_1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + if (*(HWND *)(param_1 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(param_1 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(param_1 + 0x38) != 0) { + usb_release_interface(*(longlong *)(param_1 + 0x38),0); + usb_close(*(undefined8 *)(param_1 + 0x38)); + *(undefined8 *)(param_1 + 0x38) = 0; + } + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + return; +} + + +================================================================== + +### CALLER FUNC 18001d2d0 (578 bytes) name=FUN_18001d2d0 + +undefined8 FUN_18001d2d0(void *param_1,undefined4 param_2,longlong param_3) + +{ + LPVOID pvVar1; + LPVOID pvVar2; + CWinThread *pCVar3; + undefined8 uVar4; + uint local_res8 [2]; + + if (*(int *)((longlong)param_1 + 0x18) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (param_3 != 0) { + *(undefined4 *)((longlong)param_1 + 0x2d18) = param_2; + *(undefined4 *)((longlong)param_1 + 8) = 0; + *(undefined4 *)((longlong)param_1 + 0xc) = 0; + if (*(LPVOID *)((longlong)param_1 + 0x2d20) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d20)); + *(undefined8 *)((longlong)param_1 + 0x2d20) = 0; + } + pvVar1 = thunk_FUN_18001eb74((ulonglong)*(uint *)((longlong)param_1 + 0x2d18) * 2 + 0xb0); + *(LPVOID *)((longlong)param_1 + 0x2d20) = pvVar1; + if (*(LPVOID *)((longlong)param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d28)); + *(undefined8 *)((longlong)param_1 + 0x2d28) = 0; + } + pvVar2 = thunk_FUN_18001eb74((ulonglong)*(uint *)((longlong)param_1 + 0x2d18) + 0x4c); + pvVar1 = *(LPVOID *)((longlong)param_1 + 0x2d20); + *(LPVOID *)((longlong)param_1 + 0x2d28) = pvVar2; + if ((pvVar1 == (LPVOID)0x0) || (pvVar2 == (LPVOID)0x0)) { + if (pvVar1 != (LPVOID)0x0) { + thunk_FUN_180034a70(pvVar1); + *(undefined8 *)((longlong)param_1 + 0x2d20) = 0; + } + if (*(LPVOID *)((longlong)param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d28)); + *(undefined8 *)((longlong)param_1 + 0x2d28) = 0; + } + SetLastError(0xe4ae0002); + } + else { + *(longlong *)((longlong)param_1 + 0x2d30) = param_3; + *(code **)((longlong)param_1 + 0x2d38) = FUN_180009ee0; + ResetEvent(*(HANDLE *)((longlong)param_1 + 0x2d10)); + *(undefined4 *)((longlong)param_1 + 0x2d0c) = 1; + pCVar3 = AfxBeginThread(FUN_18001d610,param_1,-1,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x2d00) = pCVar3; + *(undefined4 *)(pCVar3 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x2d00) + 0x58)); + *(undefined4 *)((longlong)param_1 + 0x2d08) = 1; + pCVar3 = AfxBeginThread(FUN_18001d930,param_1,0,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x2cf8) = pCVar3; + *(undefined4 *)(pCVar3 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x2cf8) + 0x58)); + Sleep(0x32); + local_res8[0] = 0x6bb6b673; + if (*(int *)((longlong)param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar4 = FUN_18001c670((longlong)param_1,local_res8,4); + if ((int)uVar4 != 0) { + *(undefined4 *)((longlong)param_1 + 0x18) = 1; + return 1; + } + } + FUN_18001d520((longlong)param_1); + } + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +########## TARGET 18000ca30 ########## +callers (4): + 180005cd0 MAG_LoadBufferedDDT + 1800078d0 MAG_LoadFIR + 180009ee0 FUN_180009ee0 + 18000a410 FUN_18000a410 + +### CALLER FUNC 180005cd0 (1660 bytes) name=MAG_LoadBufferedDDT + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +MAG_LoadBufferedDDT(uint param_1,ulonglong param_2,void *param_3,ulonglong param_4, + undefined *param_5,undefined8 param_6) + +{ + uint uVar1; + longlong lVar2; + int iVar3; + DWORD dwErrCode; + uint *in_RDX; + ulonglong uVar4; + ulonglong uVar5; + longlong lVar6; + undefined8 uVar7; + undefined1 auStackY_428 [32]; + uint local_3f8; + uint local_3f4; + uint local_3f0; + uint local_3ec; + uint local_3e8; + uint local_3e4; + undefined4 local_3e0; + undefined4 local_3dc; + undefined4 local_3d8; + undefined4 local_3d4; + int local_3c8; + int iStack_3c4; + uint local_3c0; + uint uStack_3bc; + uint local_3b8; + undefined4 local_3b4; + int local_3b0; + undefined4 local_3ac; + undefined4 local_3a8; + undefined4 local_3a4; + undefined4 local_3a0; + undefined4 local_39c; + char local_398 [32]; + char local_378 [32]; + undefined8 local_358; + undefined4 local_350; + undefined4 local_34c; + undefined8 local_348; + undefined8 local_340; + CHAR local_338 [556]; + undefined4 local_10c; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc; + uint 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_74; + undefined4 local_70; + int local_6c; + undefined4 local_68; + int local_64; + int local_60; + int local_5c; + int local_58; + ulonglong local_48; + + /* 0x5cd0 36 MAG_LoadBufferedDDT */ + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_428; + uVar4 = param_4 & 0xffffffff; + uVar5 = (ulonglong)param_1; + if (param_1 < 0x81) { + lVar6 = uVar5 * 0x4a8; + if (((((((&DAT_180073758)[uVar5 * 0x95] != 0) && ((&DAT_180073750)[uVar5 * 0x95] != 0)) && + ((&DAT_180073760)[uVar5 * 0x95] != 0)) && + (((&DAT_180073768)[uVar5 * 0x95] != 0 && (in_RDX != (uint *)0x0)))) && ((*in_RDX & 3) == 0) + ) && ((((in_RDX[2] & 3) == 0 && ((in_RDX[4] & 3) == 0)) && (*in_RDX <= in_RDX[2])))) { + if (((((in_RDX[1] <= in_RDX[3]) && (in_RDX[1] != 0)) && (in_RDX[3] != 0)) && + ((in_RDX[5] != 0 && (param_3 != (void *)0x0)))) && (0x374 < (uint)param_4)) { + if (*(int *)((&DAT_180073758)[uVar5 * 0x95] + 0x14) == 0) { + *(undefined8 *)(&DAT_180073770 + lVar6) = param_6; + memcpy(&local_3c8,param_3,0x374); + if (local_3c8 == 0x374) { + if ((local_3c0 != *in_RDX) || (uStack_3bc != in_RDX[1])) { + *in_RDX = local_3c0; + in_RDX[2] = local_3c0; + in_RDX[4] = 0x10; + in_RDX[1] = uStack_3bc; + in_RDX[3] = uStack_3bc; + in_RDX[5] = uStack_3bc; + } + *(uint *)(&DAT_180073798 + lVar6) = *in_RDX; + *(uint *)(&DAT_18007379c + lVar6) = in_RDX[1]; + *(uint *)(&DAT_1800737a0 + lVar6) = in_RDX[2]; + *(uint *)(&DAT_1800737a4 + lVar6) = in_RDX[3]; + *(uint *)(&DAT_1800737a8 + lVar6) = in_RDX[4]; + *(uint *)(&DAT_1800737ac + lVar6) = in_RDX[5]; + if ((((iStack_3c4 == 0x10003) || (iStack_3c4 == 0x10002)) || (iStack_3c4 == 0x10000)) || + (iStack_3c4 == 0x10001)) { + if ((DAT_180073744 != 0) && (local_58 != DAT_180073744)) { + dwErrCode = 0xe4ae000c; + goto LAB_180006322; + } + if ((ulonglong)(uStack_3bc * local_3c0) * 2 + 0x374 <= uVar4) { + *(int *)(&DAT_1800737b4 + lVar6) = local_58; + (&DAT_1800737b0)[uVar5 * 0x12a] = local_350; + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar5 * 0x12a),0,0x48); + (&DAT_1800737b8)[uVar5 * 0x12a] = *in_RDX; + *(uint *)(&DAT_1800737bc + lVar6) = in_RDX[1]; + *(uint *)(&DAT_1800737f8 + lVar6) = in_RDX[2]; + uVar1 = in_RDX[3]; + *(undefined4 *)(&DAT_1800737f0 + lVar6) = 1; + *(uint *)(&DAT_1800737fc + lVar6) = uVar1; + *(undefined4 *)(&DAT_1800737f4 + lVar6) = 1; + *(undefined4 *)(&DAT_1800737c0 + lVar6) = local_3a0; + *(undefined4 *)(&DAT_1800737c4 + lVar6) = local_39c; + strncpy(&DAT_1800737c8 + lVar6,local_378,0x20); + (&DAT_1800737e7)[lVar6] = 0; + strncpy(&DAT_1800737e8 + lVar6,local_398,8); + *(undefined8 *)(&DAT_180073818 + lVar6) = local_348; + *(int *)(&DAT_180073800 + lVar6) = local_3b0; + *(undefined8 *)(&DAT_180073820 + lVar6) = local_340; + *(undefined4 *)(&DAT_180073828 + lVar6) = local_34c; + *(undefined4 *)(&DAT_180073804 + lVar6) = local_3ac; + uVar7 = 0x374; + *(undefined4 *)(&DAT_180073808 + lVar6) = local_3a8; + (&DAT_1800737ef)[lVar6] = 0; + *(undefined4 *)(&DAT_18007380c + lVar6) = local_3a4; + *(undefined8 *)(&DAT_180073810 + lVar6) = local_358; + memcpy((void *)(lVar6 + 0x18007382c),&local_3c8,0x374); + local_3f4 = in_RDX[1]; + local_3f8 = *in_RDX; + local_3f0 = in_RDX[2]; + local_3ec = in_RDX[3]; + local_3e8 = in_RDX[4]; + local_3e4 = in_RDX[5]; + local_3e0 = 4; + local_3dc = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 8) = 0; + local_3d8 = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xc) = 0; + local_3d4 = 5; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x6c) = 1; + if (0x10001 < iStack_3c4) { + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x24) = local_dc; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x48) = local_d8; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x4c) = local_d4; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x10) = local_f0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x14) = local_ec; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x18) = local_e8; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x1c) = local_e4; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x20) = local_e0; + lVar2 = (&DAT_180073750)[uVar5 * 0x95]; + *(undefined4 *)(&DAT_180073780 + lVar6) = local_10c; + FUN_18000d5f0(lVar2,local_10c); + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xd4) = local_104; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xd8) = local_100; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xf4) = local_fc; + param_2 = (ulonglong)local_f8; + *(uint *)((&DAT_180073750)[uVar5 * 0x95] + 0xf8) = local_f8; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xd0) = local_f4; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xdc) = 0x3ecccccd; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xf0) = 0; + } + FUN_180014fe0((&DAT_180073750)[uVar5 * 0x95], + (float *)((&DAT_180073750)[uVar5 * 0x95] + 0xd0)); + iVar3 = FUN_18000bce0((&DAT_180073750)[uVar5 * 0x95],&local_3f8); + if (iVar3 != 0) { + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 100) = local_68; + FUN_180015500((&DAT_180073750)[uVar5 * 0x95],local_64); + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xa4) = local_74; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xa8) = local_70; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x5c) = local_3ac; + *(int *)((&DAT_180073750)[uVar5 * 0x95] + 0x60) = local_3b0; + if ((local_60 == 0) || (local_5c == 0)) { + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x54) = local_3ac; + local_5c = local_3b0; + } + else { + *(int *)((&DAT_180073750)[uVar5 * 0x95] + 0x54) = local_60; + } + *(int *)((&DAT_180073750)[uVar5 * 0x95] + 0x58) = local_5c; + FUN_180018a20((&DAT_180073750)[uVar5 * 0x95],local_338,uVar7,param_4); + uVar7 = FUN_180018d50((&DAT_180073750)[uVar5 * 0x95],local_6c,local_3b8,local_3b4) + ; + if ((int)uVar7 != 0) { + FUN_18000ca30((&DAT_180073750)[uVar5 * 0x95],param_2,1,1,1); + if (param_5 != (undefined *)0x0) { + (*(code *)param_5)(uVar5,local_3b0,0,0); + } + return 1; + } + } + goto LAB_180005dc9; + } + } + goto LAB_18000631d; + } + } +LAB_180005dc9: + dwErrCode = 0xe4ae0003; + goto LAB_180006322; + } + } + } +LAB_18000631d: + dwErrCode = 0xe4ae0001; +LAB_180006322: + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### CALLER FUNC 1800078d0 (2145 bytes) name=MAG_LoadFIR + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +MAG_LoadFIR(uint param_1,uint *param_2,LPCWSTR param_3,undefined *param_4,undefined8 param_5) + +{ + void *_Src; + int iVar1; + undefined8 uVar2; + __uint64 _Var3; + LPVOID pvVar4; + __time64_t _Var5; + uint uVar6; + uint uVar7; + size_t sVar8; + ulonglong uVar9; + ulonglong uVar10; + longlong lVar11; + uint uVar12; + ulonglong uVar13; + undefined4 uVar14; + undefined4 uVar15; + undefined1 auStackY_138 [32]; + CFile local_100 [32]; + uint local_e0; + uint local_dc; + uint local_d8; + uint local_d4; + uint local_d0; + uint local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc; + code *local_b8; + size_t local_b0; + undefined8 local_a0 [2]; + undefined8 local_90; + undefined1 local_88 [4]; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + ulonglong local_70; + ulonglong local_48; + + /* 0x78d0 38 MAG_LoadFIR */ + local_90 = 0xfffffffffffffffe; + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_138; + uVar13 = (ulonglong)param_1; + local_b8 = (code *)param_4; + if (param_1 < 0x81) { + lVar11 = uVar13 * 0x4a8; + if (((((&DAT_180073758)[uVar13 * 0x95] != 0) && ((&DAT_180073750)[uVar13 * 0x95] != 0)) && + ((&DAT_180073760)[uVar13 * 0x95] != 0)) && ((&DAT_180073768)[uVar13 * 0x95] != 0)) { + if (*(int *)((&DAT_180073758)[uVar13 * 0x95] + 0x14) != 0) { + SetLastError(0xe4ae0003); + return 0; + } + if (((param_2 != (uint *)0x0) && ((*param_2 & 3) == 0)) && + (((param_2[2] & 3) == 0 && (((param_2[4] & 3) == 0 && (*param_2 <= param_2[2])))))) { + if ((param_2[1] <= param_2[3]) && + (((param_2[1] != 0 && (param_2[3] != 0)) && (param_2[5] != 0)))) { + FUN_180020138((undefined8 *)local_100); + uVar2 = FUN_180020a6c((longlong)local_100,param_3,0x30,0); + if ((int)uVar2 == 0) { + SetLastError(0xe4ae0009); + FUN_1800203a4(local_100); + return 0; + } + _Var3 = CFile::GetLength(local_100); + sVar8 = _Var3 & 0xffffffff; + if (0x600040 < (uint)_Var3) { + sVar8 = 0x600040; + } + if (*(LPVOID *)(&DAT_180073788 + lVar11) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar11)); + *(undefined8 *)(&DAT_180073788 + lVar11) = 0; + } + uVar9 = 0; + local_b0 = sVar8; + pvVar4 = thunk_FUN_18001eb74(sVar8); + *(LPVOID *)(&DAT_180073788 + lVar11) = pvVar4; + if (pvVar4 == (LPVOID)0x0) { + CFile::Close(local_100); + SetLastError(0xe4ae0002); + FUN_1800203a4(local_100); + return 0; + } + FUN_18001ef2c(local_a0); + FUN_18001fd6c((longlong)local_100,*(LPVOID *)(&DAT_180073788 + lVar11),(DWORD)sVar8); + FUN_18001ef94(); + CFile::Close(local_100); + _Src = *(void **)(&DAT_180073788 + lVar11); + *(undefined8 *)(&DAT_180073770 + lVar11) = param_5; + memcpy(local_88,_Src,0x40); + uVar6 = (uint)local_70 & 0xffff; + uVar10 = local_70 >> 0x10 & 0xffff; + uVar12 = (uint)uVar10; + if (local_b0 < (longlong)(int)(uVar12 * uVar6) * 2 + 0x40U) { + SetLastError(0xe4ae0009); + FUN_1800203a4(local_100); + return 0; + } + if ((uVar6 != *param_2) || (uVar12 != param_2[1])) { + *param_2 = uVar6; + param_2[1] = uVar12; + param_2[2] = uVar6; + param_2[3] = uVar12; + param_2[4] = 0x10; + param_2[5] = uVar12; + } + *(uint *)(&DAT_180073798 + lVar11) = *param_2; + *(uint *)(&DAT_18007379c + lVar11) = param_2[1]; + *(uint *)(&DAT_1800737a0 + lVar11) = param_2[2]; + *(uint *)(&DAT_1800737a4 + lVar11) = param_2[3]; + *(uint *)(&DAT_1800737a8 + lVar11) = param_2[4]; + *(uint *)(&DAT_1800737ac + lVar11) = param_2[5]; + (&DAT_1800737b0)[uVar13 * 0x12a] = 0; + *(undefined4 *)(&DAT_1800737b4 + lVar11) = 0; + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar13 * 0x12a),0,0x48); + (&DAT_1800737b8)[uVar13 * 0x12a] = *param_2; + *(uint *)(&DAT_1800737bc + lVar11) = param_2[1]; + *(uint *)(&DAT_1800737f8 + lVar11) = param_2[2]; + *(uint *)(&DAT_1800737fc + lVar11) = param_2[3]; + *(undefined4 *)(&DAT_1800737f0 + lVar11) = 1; + *(undefined4 *)(&DAT_1800737f4 + lVar11) = 1; + *(undefined4 *)(&DAT_1800737c0 + lVar11) = 0; + *(undefined4 *)(&DAT_1800737c4 + lVar11) = 0; + FUN_180032bb0(&DAT_1800737c8 + lVar11,(byte *)"FIR-%d*%d",(ulonglong)uVar6,uVar10); + strncpy(&DAT_1800737e8 + lVar11,"FIR",8); + *(undefined4 *)(&DAT_180073800 + lVar11) = 20000; + *(undefined4 *)(&DAT_180073804 + lVar11) = 0x5014; + *(undefined4 *)(&DAT_180073808 + lVar11) = 0; + *(undefined4 *)(&DAT_18007380c + lVar11) = 0; + _Var5 = _time64((__time64_t *)0x0); + *(__time64_t *)(&DAT_180073810 + lVar11) = _Var5; + *(undefined8 *)(&DAT_180073818 + lVar11) = 0; + *(undefined8 *)(&DAT_180073820 + lVar11) = 0; + *(undefined4 *)(&DAT_180073828 + lVar11) = 0; + local_e0 = *param_2; + local_dc = param_2[1]; + local_d8 = param_2[2]; + local_d4 = param_2[3]; + local_d0 = param_2[4]; + local_cc = param_2[5]; + local_c8 = 4; + local_c4 = 1; + local_c0 = 1; + local_bc = 5; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xc) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x6c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x24) = 5; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x48) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x4c) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x10) = 0; + *(undefined4 *)(&DAT_180073780 + lVar11) = 2; + FUN_18000d5f0((&DAT_180073750)[uVar13 * 0x95],2); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xd4) = local_80; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xd8) = local_78; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xf8) = local_84; + uVar15 = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xd0) = local_7c; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xdc) = local_74; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xf0) = 0; + FUN_180014fe0((&DAT_180073750)[uVar13 * 0x95], + (float *)((&DAT_180073750)[uVar13 * 0x95] + 0xd0)); + iVar1 = FUN_18000bce0((&DAT_180073750)[uVar13 * 0x95],&local_e0); + if (iVar1 == 0) { + SetLastError(0xe4ae0003); + FUN_1800203a4(local_100); + return 0; + } + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 100) = 0; + lVar11 = (&DAT_180073750)[uVar13 * 0x95]; + EnterCriticalSection((LPCRITICAL_SECTION)(lVar11 + 0x238)); + memcpy(&DAT_180099000,&DAT_18005cde0,0xa1c); + uVar10 = uVar9; + do { + uVar7 = (&DAT_180099004)[uVar10] - (&DAT_180099000)[uVar10]; + (&DAT_180099a20)[uVar10] = ((uVar7 >> 1) + 0x1000000) / uVar7; + uVar7 = (&DAT_180099008)[uVar10] - (&DAT_180099004)[uVar10]; + (&DAT_180099a24)[uVar10] = ((uVar7 >> 1) + 0x1000000) / uVar7; + uVar10 = uVar10 + 2; + } while ((longlong)uVar10 < 0x286); + DAT_180073748 = (undefined4)(0x7fffffff / (longlong)DAT_18009a434); + *(undefined4 *)(lVar11 + 0x68) = 7; + LeaveCriticalSection((LPCRITICAL_SECTION)(lVar11 + 0x238)); + lVar11 = uVar13 * 0x4a8; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xa4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xa8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x5c) = + *(undefined4 *)(&DAT_180073804 + lVar11); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x60) = + *(undefined4 *)(&DAT_180073800 + lVar11); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x54) = + *(undefined4 *)(&DAT_180073804 + lVar11); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x58) = + *(undefined4 *)(&DAT_180073800 + lVar11); + uVar2 = FUN_180018d50((&DAT_180073750)[uVar13 * 0x95],4,8,0xffff3cb0); + if ((int)uVar2 != 0) { + uVar10 = uVar9; + uVar14 = local_7c; + if (0 < (int)(uVar12 * uVar6)) { + do { + iVar1 = FUN_180001e40((&DAT_180073750)[(longlong)(int)param_1 * 0x95], + *(short *)((longlong)_Src + uVar9 * 2 + 0x40) * 10); + *(short *)((longlong)_Src + uVar9 * 2 + 0x40) = (short)iVar1; + uVar7 = (int)uVar10 + 1; + uVar9 = uVar9 + 1; + uVar10 = (ulonglong)uVar7; + } while ((int)uVar7 < (int)(uVar12 * uVar6)); + } + FUN_18000ca30((&DAT_180073750)[uVar13 * 0x95],CONCAT44(uVar15,uVar14),1,1,1); + if (local_b8 != (code *)0x0) { + (*local_b8)(param_1,*(undefined4 *)(&DAT_180073800 + uVar13 * 0x4a8),0,0); + } + FUN_1800203a4(local_100); + return 1; + } + SetLastError(0xe4ae0003); + FUN_1800203a4(local_100); + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; + } + SetLastError(0xe4ae0001); + } + else { + SetLastError(0xe4ae0001); + } + return 0; +} + + +================================================================== + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +### CALLER FUNC 18000a410 (496 bytes) name=FUN_18000a410 + +void FUN_18000a410(uint param_1,undefined8 param_2,longlong param_3) + +{ + undefined4 uVar1; + longlong lVar2; + bool bVar3; + int iVar4; + undefined8 uVar5; + undefined7 extraout_var; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + byte *pbVar9; + + uVar1 = *(undefined4 *)(param_3 + 8); + uVar7 = (ulonglong)param_1; + lVar8 = uVar7 * 0x4a8; + *(undefined4 *)(&DAT_180073800 + lVar8) = uVar1; + *(undefined4 *)(&DAT_180073804 + lVar8) = *(undefined4 *)(param_3 + 0xc); + *(undefined4 *)(&DAT_180073808 + lVar8) = *(undefined4 *)(param_3 + 0x10); + *(undefined4 *)(&DAT_18007380c + lVar8) = *(undefined4 *)(param_3 + 0x14); + *(undefined8 *)(&DAT_180073810 + lVar8) = *(undefined8 *)(param_3 + 0x18); + *(undefined8 *)(&DAT_180073818 + lVar8) = *(undefined8 *)(param_3 + 0x28); + *(undefined8 *)(&DAT_180073820 + lVar8) = *(undefined8 *)(param_3 + 0x30); + *(undefined4 *)(&DAT_180073828 + lVar8) = *(undefined4 *)(param_3 + 0x38); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60) = uVar1; + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c) = *(undefined4 *)(&DAT_180073804 + lVar8); + if (*(int *)(&DAT_180073ba0 + lVar8) < *(int *)(param_3 + 0x24)) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + pbVar9 = (byte *)0x0; + *(undefined4 *)(&DAT_180073ba0 + lVar8) = *(undefined4 *)(param_3 + 0x24); + uVar5 = FUN_18000ca30(lVar2,param_2,1,1,0); + if ((int)uVar5 != 0) { + if (*(int *)((&DAT_180073760)[uVar7 * 0x95] + 0x44) != 0) { + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((*(int *)(lVar2 + 0x228) != 0) && (*(int *)(lVar2 + 0x234) != 0)) { + if (*(int *)(lVar2 + 0x4203c) == 0) { + FUN_180010e80(lVar2); + } + pbVar9 = *(byte **)(lVar2 + 0x2a0); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) { + iVar4 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * *(int *)(lVar2 + 0x6cc) + ; + iVar4 = iVar4 + (iVar4 >> 0x1f & 7U); + uVar6 = iVar4 >> 0x1f; + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar7 * 0x95],pbVar9,(iVar4 >> 3 ^ uVar6) - uVar6, + lVar2 + 0x6c8); + if ((int)CONCAT71(extraout_var,bVar3) == 0) { + FUN_180001c50((&DAT_180073760)[uVar7 * 0x95]); + } + } + } + if (*(code **)(&DAT_180073790 + lVar8) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar8)) + (param_1,*(undefined4 *)(param_3 + 8),*(undefined4 *)(param_3 + 0x24),0,2, + *(undefined8 *)(&DAT_180073770 + lVar8)); + } + } + return; +} + + +================================================================== + +########## TARGET 1800110a0 ########## +callers (1): + 180009ee0 FUN_180009ee0 + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +########## TARGET 18001b1b0 ########## +callers (1): + 180009ee0 FUN_180009ee0 + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +########## TARGET 180001cd0 ########## +callers (2): + 180009ee0 FUN_180009ee0 + 18000a410 FUN_18000a410 + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +### CALLER FUNC 18000a410 (496 bytes) name=FUN_18000a410 + +void FUN_18000a410(uint param_1,undefined8 param_2,longlong param_3) + +{ + undefined4 uVar1; + longlong lVar2; + bool bVar3; + int iVar4; + undefined8 uVar5; + undefined7 extraout_var; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + byte *pbVar9; + + uVar1 = *(undefined4 *)(param_3 + 8); + uVar7 = (ulonglong)param_1; + lVar8 = uVar7 * 0x4a8; + *(undefined4 *)(&DAT_180073800 + lVar8) = uVar1; + *(undefined4 *)(&DAT_180073804 + lVar8) = *(undefined4 *)(param_3 + 0xc); + *(undefined4 *)(&DAT_180073808 + lVar8) = *(undefined4 *)(param_3 + 0x10); + *(undefined4 *)(&DAT_18007380c + lVar8) = *(undefined4 *)(param_3 + 0x14); + *(undefined8 *)(&DAT_180073810 + lVar8) = *(undefined8 *)(param_3 + 0x18); + *(undefined8 *)(&DAT_180073818 + lVar8) = *(undefined8 *)(param_3 + 0x28); + *(undefined8 *)(&DAT_180073820 + lVar8) = *(undefined8 *)(param_3 + 0x30); + *(undefined4 *)(&DAT_180073828 + lVar8) = *(undefined4 *)(param_3 + 0x38); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60) = uVar1; + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c) = *(undefined4 *)(&DAT_180073804 + lVar8); + if (*(int *)(&DAT_180073ba0 + lVar8) < *(int *)(param_3 + 0x24)) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + pbVar9 = (byte *)0x0; + *(undefined4 *)(&DAT_180073ba0 + lVar8) = *(undefined4 *)(param_3 + 0x24); + uVar5 = FUN_18000ca30(lVar2,param_2,1,1,0); + if ((int)uVar5 != 0) { + if (*(int *)((&DAT_180073760)[uVar7 * 0x95] + 0x44) != 0) { + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((*(int *)(lVar2 + 0x228) != 0) && (*(int *)(lVar2 + 0x234) != 0)) { + if (*(int *)(lVar2 + 0x4203c) == 0) { + FUN_180010e80(lVar2); + } + pbVar9 = *(byte **)(lVar2 + 0x2a0); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) { + iVar4 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * *(int *)(lVar2 + 0x6cc) + ; + iVar4 = iVar4 + (iVar4 >> 0x1f & 7U); + uVar6 = iVar4 >> 0x1f; + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar7 * 0x95],pbVar9,(iVar4 >> 3 ^ uVar6) - uVar6, + lVar2 + 0x6c8); + if ((int)CONCAT71(extraout_var,bVar3) == 0) { + FUN_180001c50((&DAT_180073760)[uVar7 * 0x95]); + } + } + } + if (*(code **)(&DAT_180073790 + lVar8) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar8)) + (param_1,*(undefined4 *)(param_3 + 8),*(undefined4 *)(param_3 + 0x24),0,2, + *(undefined8 *)(&DAT_180073770 + lVar8)); + } + } + return; +} + + +================================================================== + +########## TARGET 180001c50 ########## +callers (2): + 180009ee0 FUN_180009ee0 + 18000a410 FUN_18000a410 + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +### CALLER FUNC 18000a410 (496 bytes) name=FUN_18000a410 + +void FUN_18000a410(uint param_1,undefined8 param_2,longlong param_3) + +{ + undefined4 uVar1; + longlong lVar2; + bool bVar3; + int iVar4; + undefined8 uVar5; + undefined7 extraout_var; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + byte *pbVar9; + + uVar1 = *(undefined4 *)(param_3 + 8); + uVar7 = (ulonglong)param_1; + lVar8 = uVar7 * 0x4a8; + *(undefined4 *)(&DAT_180073800 + lVar8) = uVar1; + *(undefined4 *)(&DAT_180073804 + lVar8) = *(undefined4 *)(param_3 + 0xc); + *(undefined4 *)(&DAT_180073808 + lVar8) = *(undefined4 *)(param_3 + 0x10); + *(undefined4 *)(&DAT_18007380c + lVar8) = *(undefined4 *)(param_3 + 0x14); + *(undefined8 *)(&DAT_180073810 + lVar8) = *(undefined8 *)(param_3 + 0x18); + *(undefined8 *)(&DAT_180073818 + lVar8) = *(undefined8 *)(param_3 + 0x28); + *(undefined8 *)(&DAT_180073820 + lVar8) = *(undefined8 *)(param_3 + 0x30); + *(undefined4 *)(&DAT_180073828 + lVar8) = *(undefined4 *)(param_3 + 0x38); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60) = uVar1; + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c) = *(undefined4 *)(&DAT_180073804 + lVar8); + if (*(int *)(&DAT_180073ba0 + lVar8) < *(int *)(param_3 + 0x24)) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + pbVar9 = (byte *)0x0; + *(undefined4 *)(&DAT_180073ba0 + lVar8) = *(undefined4 *)(param_3 + 0x24); + uVar5 = FUN_18000ca30(lVar2,param_2,1,1,0); + if ((int)uVar5 != 0) { + if (*(int *)((&DAT_180073760)[uVar7 * 0x95] + 0x44) != 0) { + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((*(int *)(lVar2 + 0x228) != 0) && (*(int *)(lVar2 + 0x234) != 0)) { + if (*(int *)(lVar2 + 0x4203c) == 0) { + FUN_180010e80(lVar2); + } + pbVar9 = *(byte **)(lVar2 + 0x2a0); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) { + iVar4 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * *(int *)(lVar2 + 0x6cc) + ; + iVar4 = iVar4 + (iVar4 >> 0x1f & 7U); + uVar6 = iVar4 >> 0x1f; + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar7 * 0x95],pbVar9,(iVar4 >> 3 ^ uVar6) - uVar6, + lVar2 + 0x6c8); + if ((int)CONCAT71(extraout_var,bVar3) == 0) { + FUN_180001c50((&DAT_180073760)[uVar7 * 0x95]); + } + } + } + if (*(code **)(&DAT_180073790 + lVar8) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar8)) + (param_1,*(undefined4 *)(param_3 + 8),*(undefined4 *)(param_3 + 0x24),0,2, + *(undefined8 *)(&DAT_180073770 + lVar8)); + } + } + return; +} + + +================================================================== + +########## TARGET 18001c670 ########## +callers (8): + 180002f50 FUN_180002f50 + 180002ff0 MAG_TriggerFFC + 180009ee0 FUN_180009ee0 + 18001d2d0 FUN_18001d2d0 + 18001d520 FUN_18001d520 + 18001d6e0 FUN_18001d6e0 + 18001df10 FUN_18001df10 + 18001e100 FUN_18001e100 + +### CALLER FUNC 180002f50 (155 bytes) name=FUN_180002f50 + +undefined8 FUN_180002f50(uint param_1) + +{ + undefined8 uVar1; + ulonglong uVar2; + uint local_res10 [6]; + + uVar2 = (ulonglong)param_1; + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + local_res10[0] = 0x6bb6b672; + local_res10[1] = 0; + uVar1 = FUN_18001c670((&DAT_180073758)[uVar2 * 0x95],local_res10,8); + if ((int)uVar1 == 0) { + return uVar1; + } + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x5c); + *(undefined4 *)(&DAT_180073bec + uVar2 * 0x4a8) = 0; + return 1; +} + + +================================================================== + +### CALLER FUNC 180002ff0 (230 bytes) name=MAG_TriggerFFC + +bool MAG_TriggerFFC(uint param_1) + +{ + longlong lVar1; + undefined8 uVar2; + ulonglong uVar3; + bool bVar4; + uint local_res10 [2]; + + /* 0x2ff0 64 MAG_TriggerFFC */ + if (param_1 < 0x81) { + uVar3 = (ulonglong)param_1; + lVar1 = (&DAT_180073758)[uVar3 * 0x95]; + if ((((lVar1 != 0) && ((&DAT_180073750)[uVar3 * 0x95] != 0)) && + ((&DAT_180073760)[uVar3 * 0x95] != 0)) && ((&DAT_180073768)[uVar3 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + return false; + } + local_res10[0] = 0x6bb6b672; + local_res10[1] = 0; + uVar2 = FUN_18001c670(lVar1,local_res10,8); + bVar4 = (int)uVar2 != 0; + if (bVar4) { + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x5c); + *(undefined4 *)(&DAT_180073bec + uVar3 * 0x4a8) = 0; + } + return bVar4; + } + } + SetLastError(0xe4ae0001); + return false; +} + + +================================================================== + +### CALLER FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +### CALLER FUNC 18001d2d0 (578 bytes) name=FUN_18001d2d0 + +undefined8 FUN_18001d2d0(void *param_1,undefined4 param_2,longlong param_3) + +{ + LPVOID pvVar1; + LPVOID pvVar2; + CWinThread *pCVar3; + undefined8 uVar4; + uint local_res8 [2]; + + if (*(int *)((longlong)param_1 + 0x18) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (param_3 != 0) { + *(undefined4 *)((longlong)param_1 + 0x2d18) = param_2; + *(undefined4 *)((longlong)param_1 + 8) = 0; + *(undefined4 *)((longlong)param_1 + 0xc) = 0; + if (*(LPVOID *)((longlong)param_1 + 0x2d20) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d20)); + *(undefined8 *)((longlong)param_1 + 0x2d20) = 0; + } + pvVar1 = thunk_FUN_18001eb74((ulonglong)*(uint *)((longlong)param_1 + 0x2d18) * 2 + 0xb0); + *(LPVOID *)((longlong)param_1 + 0x2d20) = pvVar1; + if (*(LPVOID *)((longlong)param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d28)); + *(undefined8 *)((longlong)param_1 + 0x2d28) = 0; + } + pvVar2 = thunk_FUN_18001eb74((ulonglong)*(uint *)((longlong)param_1 + 0x2d18) + 0x4c); + pvVar1 = *(LPVOID *)((longlong)param_1 + 0x2d20); + *(LPVOID *)((longlong)param_1 + 0x2d28) = pvVar2; + if ((pvVar1 == (LPVOID)0x0) || (pvVar2 == (LPVOID)0x0)) { + if (pvVar1 != (LPVOID)0x0) { + thunk_FUN_180034a70(pvVar1); + *(undefined8 *)((longlong)param_1 + 0x2d20) = 0; + } + if (*(LPVOID *)((longlong)param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d28)); + *(undefined8 *)((longlong)param_1 + 0x2d28) = 0; + } + SetLastError(0xe4ae0002); + } + else { + *(longlong *)((longlong)param_1 + 0x2d30) = param_3; + *(code **)((longlong)param_1 + 0x2d38) = FUN_180009ee0; + ResetEvent(*(HANDLE *)((longlong)param_1 + 0x2d10)); + *(undefined4 *)((longlong)param_1 + 0x2d0c) = 1; + pCVar3 = AfxBeginThread(FUN_18001d610,param_1,-1,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x2d00) = pCVar3; + *(undefined4 *)(pCVar3 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x2d00) + 0x58)); + *(undefined4 *)((longlong)param_1 + 0x2d08) = 1; + pCVar3 = AfxBeginThread(FUN_18001d930,param_1,0,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x2cf8) = pCVar3; + *(undefined4 *)(pCVar3 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x2cf8) + 0x58)); + Sleep(0x32); + local_res8[0] = 0x6bb6b673; + if (*(int *)((longlong)param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar4 = FUN_18001c670((longlong)param_1,local_res8,4); + if ((int)uVar4 != 0) { + *(undefined4 *)((longlong)param_1 + 0x18) = 1; + return 1; + } + } + FUN_18001d520((longlong)param_1); + } + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### CALLER FUNC 18001d520 (240 bytes) name=FUN_18001d520 + +void FUN_18001d520(longlong param_1) + +{ + longlong *plVar1; + uint local_res8 [2]; + + if (*(int *)(param_1 + 0x14) != 0) { + local_res8[0] = 0x6bb6b674; + FUN_18001c670(param_1,local_res8,4); + } + *(undefined4 *)(param_1 + 0x2d08) = 0; + if (*(longlong *)(param_1 + 0x2cf8) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(param_1 + 0x2cf8) + 0x58),0xffffffff); + plVar1 = *(longlong **)(param_1 + 0x2cf8); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + *(undefined8 *)(param_1 + 0x2cf8) = 0; + } + *(undefined4 *)(param_1 + 0x2d0c) = 0; + SetEvent(*(HANDLE *)(param_1 + 0x2d10)); + if (*(longlong *)(param_1 + 0x2d00) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(param_1 + 0x2d00) + 0x58),0xffffffff); + plVar1 = *(longlong **)(param_1 + 0x2d00); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + *(undefined8 *)(param_1 + 0x2d00) = 0; + } + if (*(LPVOID *)(param_1 + 0x2d20) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2d20)); + *(undefined8 *)(param_1 + 0x2d20) = 0; + } + if (*(LPVOID *)(param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2d28)); + *(undefined8 *)(param_1 + 0x2d28) = 0; + } + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### CALLER FUNC 18001d6e0 (589 bytes) name=FUN_18001d6e0 + +undefined8 FUN_18001d6e0(longlong param_1,undefined8 *param_2,undefined8 *param_3,uint param_4) + +{ + DWORD DVar1; + DWORD DVar2; + undefined8 uVar3; + int iVar4; + int iVar5; + uint local_res10 [2]; + + if ((param_2 == (undefined8 *)0x0) || (param_3 == (undefined8 *)0x0)) { + SetLastError(0xe4ae0001); + return 0; + } + *(undefined8 *)(param_1 + 0x2d40) = 0; + *(undefined8 *)(param_1 + 0x2d48) = 0; + *(undefined8 *)(param_1 + 0x2d50) = 0; + *(undefined8 *)(param_1 + 0x2d58) = 0; + *(undefined8 *)(param_1 + 0x2d60) = 0; + *(undefined8 *)(param_1 + 0x2d68) = 0; + *(undefined8 *)(param_1 + 0x2d70) = 0; + *(undefined8 *)(param_1 + 0x2d78) = 0; + *(undefined8 *)(param_1 + 0x2d80) = 0; + *(undefined8 *)(param_1 + 0x2d88) = 0; + *(undefined8 *)(param_1 + 0x2d90) = 0; + *(undefined8 *)(param_1 + 0x2d98) = 0; + *(undefined8 *)(param_1 + 0x2da0) = 0; + iVar5 = 0; + *(undefined8 *)(param_1 + 0x2da8) = 0; + local_res10[0] = 0x6bb6b66b; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + iVar4 = 0; + } + else { + uVar3 = FUN_18001c670(param_1,local_res10,4); + iVar4 = (int)uVar3; + } + local_res10[0] = 0x6bb6b66c; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar3 = FUN_18001c670(param_1,local_res10,4); + iVar5 = (int)uVar3; + } + if ((iVar4 != 0) && (iVar5 != 0)) { + DVar1 = GetTickCount(); + do { + Sleep(10); + if ((*(int *)(param_1 + 0x2d50) != 0) && (*(int *)(param_1 + 0x2d78) != 0)) break; + DVar2 = GetTickCount(); + } while (DVar2 - DVar1 < param_4); + if ((*(int *)(param_1 + 0x2d50) != 0) && (*(int *)(param_1 + 0x2d78) != 0)) { + *param_2 = *(undefined8 *)(param_1 + 0x2d40); + param_2[1] = *(undefined8 *)(param_1 + 0x2d48); + param_2[2] = *(undefined8 *)(param_1 + 0x2d50); + param_2[3] = *(undefined8 *)(param_1 + 0x2d58); + param_2[4] = *(undefined8 *)(param_1 + 0x2d60); + param_2[5] = *(undefined8 *)(param_1 + 0x2d68); + param_2[6] = *(undefined8 *)(param_1 + 0x2d70); + *param_3 = *(undefined8 *)(param_1 + 0x2d78); + param_3[1] = *(undefined8 *)(param_1 + 0x2d80); + param_3[2] = *(undefined8 *)(param_1 + 0x2d88); + param_3[3] = *(undefined8 *)(param_1 + 0x2d90); + param_3[4] = *(undefined8 *)(param_1 + 0x2d98); + param_3[5] = *(undefined8 *)(param_1 + 0x2da0); + param_3[6] = *(undefined8 *)(param_1 + 0x2da8); + return 1; + } + SetLastError(0xe4ae0008); + } + return 0; +} + + +================================================================== + +### CALLER FUNC 18001df10 (427 bytes) name=FUN_18001df10 + +bool FUN_18001df10(longlong param_1,longlong *param_2) + +{ + int *piVar1; + int iVar2; + ulonglong uVar3; + longlong lVar4; + undefined8 uVar5; + __uint64 _Var6; + bool bVar7; + uint local_res8 [2]; + longlong *local_res10; + uint local_40; + CFile local_30 [40]; + + local_res10 = param_2; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + *(undefined8 *)(param_1 + 0x2db0) = 0; + *(undefined8 *)(param_1 + 0x2db8) = 0; + local_res8[0] = 0x6bb6b66f; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar5 = FUN_18001c670(param_1,local_res8,4); + if (((int)uVar5 != 0) && (*(int *)(param_1 + 0x2db0) != 0)) { + uVar3 = *(ulonglong *)(param_1 + 0x2db0); + local_40 = (uint)uVar3; + if (0x3f00000 < local_40) { + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + return false; + } + FUN_180020138((undefined8 *)local_30); + uVar5 = FUN_180020a6c((longlong)local_30,(LPCWSTR)*param_2,0x40,0); + if ((int)uVar5 == 0) { + FUN_1800203a4(local_30); + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + return true; + } + _Var6 = CFile::GetLength(local_30); + bVar7 = _Var6 != (uVar3 & 0xffffffff); + CFile::Close(local_30); + FUN_1800203a4(local_30); + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (0 < iVar2 + -1) { + return bVar7; + } + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + return bVar7; + } + } + } + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + return true; +} + + +================================================================== + +### CALLER FUNC 18001e100 (533 bytes) name=FUN_18001e100 + +bool FUN_18001e100(longlong param_1,longlong *param_2) + +{ + int *piVar1; + uint uVar2; + longlong lVar3; + uint uVar4; + LPVOID pvVar5; + int iVar6; + undefined8 uVar7; + LPVOID pvVar8; + bool bVar9; + uint local_res18 [2]; + LPVOID local_res20; + undefined8 local_68 [2]; + CFile local_58 [40]; + + *(undefined8 *)(param_1 + 0x2db0) = 0; + *(undefined8 *)(param_1 + 0x2db8) = 0; + local_res18[0] = 0x6bb6b670; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar7 = FUN_18001c670(param_1,local_res18,4); + if ((((int)uVar7 != 0) && (*(int *)(param_1 + 0x2db0) != 0)) && + (*(uint *)(param_1 + 0x2db0) < 0x3f00001)) { + uVar2 = *(uint *)(param_1 + 0x2db0); + pvVar8 = thunk_FUN_18001eb74((longlong)(int)uVar2); + uVar4 = uVar2; + pvVar5 = pvVar8; + local_res20 = pvVar8; + if (pvVar8 == (LPVOID)0x0) { + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return false; + } + while ((0 < (int)uVar4 && + (iVar6 = usb_bulk_read(*(undefined8 *)(param_1 + 0x38),0x84,pvVar5,uVar4,20000), + 0 < iVar6))) { + uVar4 = uVar4 - iVar6; + pvVar5 = (LPVOID)((longlong)pvVar5 + (longlong)iVar6); + } + if (uVar4 != 0) { + thunk_FUN_180034a70(pvVar8); + usb_strerror(); + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return false; + } + FUN_180020138((undefined8 *)local_58); + uVar7 = FUN_180020a6c((longlong)local_58,(LPCWSTR)*param_2,0x1021,0); + bVar9 = (int)uVar7 != 0; + if (bVar9) { + FUN_18001ef2c(local_68); + CFile::Write(local_58,pvVar8,uVar2); + FUN_18001ef94(); + CFile::Close(local_58); + } + thunk_FUN_180034a70(pvVar8); + FUN_1800203a4(local_58); + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (0 < iVar6 + -1) { + return bVar9; + } + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + return bVar9; + } + } + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return false; +} + + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/exports_decomp_CoreSDKLib.dll.txt b/analysis/ida/export/ghidra_dump/exports_decomp_CoreSDKLib.dll.txt new file mode 100644 index 0000000..cd227ae --- /dev/null +++ b/analysis/ida/export/ghidra_dump/exports_decomp_CoreSDKLib.dll.txt @@ -0,0 +1,70083 @@ +### EXPORT FUNC 180001000 (105 bytes) name=FUN_180001000 + +undefined8 * FUN_180001000(undefined8 *param_1,uint param_2) + +{ + *param_1 = CAccumulator::vftable; + if ((LPVOID)param_1[1] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[1]); + param_1[1] = 0; + } + param_1[2] = 0; + if ((LPVOID)param_1[3] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[3]); + param_1[3] = 0; + } + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180001070 (77 bytes) name=FUN_180001070 + +void FUN_180001070(undefined8 *param_1) + +{ + *param_1 = CAccumulator::vftable; + if ((LPVOID)param_1[1] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[1]); + param_1[1] = 0; + } + param_1[2] = 0; + if ((LPVOID)param_1[3] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[3]); + param_1[3] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800010c0 (221 bytes) name=FUN_1800010c0 + +undefined8 FUN_1800010c0(longlong param_1,uint param_2,uint param_3) + +{ + undefined1 auVar1 [16]; + size_t sVar2; + LPVOID pvVar3; + + *(undefined4 *)(param_1 + 0x2c) = 0; + if (*(LPVOID *)(param_1 + 8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 8)); + *(undefined8 *)(param_1 + 8) = 0; + } + *(undefined8 *)(param_1 + 0x10) = 0; + if (*(LPVOID *)(param_1 + 0x18) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x18)); + *(undefined8 *)(param_1 + 0x18) = 0; + } + if (((param_2 != 0) && (param_3 < 0x41)) && ((param_3 & param_3 - 1) == 0)) { + *(undefined4 *)(param_1 + 0x20) = 0; + *(uint *)(param_1 + 0x24) = param_2; + *(uint *)(param_1 + 0x28) = param_3; + auVar1 = ZEXT816(4) * ZEXT416(param_2 >> 1); + sVar2 = auVar1._0_8_; + if (auVar1._8_8_ != 0) { + sVar2 = 0xffffffffffffffff; + } + pvVar3 = thunk_FUN_18001eb74(sVar2); + *(LPVOID *)(param_1 + 8) = pvVar3; + *(LPVOID *)(param_1 + 0x10) = pvVar3; + if (pvVar3 != (LPVOID)0x0) { + *(LPVOID *)(param_1 + 0x10) = pvVar3; + if (2 < param_3) { + sVar2 = SUB168(ZEXT816(4) * ZEXT416(param_2),0); + if (SUB168(ZEXT816(4) * ZEXT416(param_2),8) != 0) { + sVar2 = 0xffffffffffffffff; + } + pvVar3 = thunk_FUN_18001eb74(sVar2); + *(LPVOID *)(param_1 + 0x18) = pvVar3; + if (pvVar3 == (LPVOID)0x0) { + return 0; + } + } + *(undefined4 *)(param_1 + 0x2c) = 1; + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800011a0 (489 bytes) name=FUN_1800011a0 + +undefined8 FUN_1800011a0(longlong param_1,ushort *param_2) + +{ + ushort uVar1; + int iVar2; + uint *puVar3; + undefined2 *puVar4; + ushort *puVar5; + sbyte sVar6; + uint uVar7; + int iVar8; + + if (*(int *)(param_1 + 0x2c) == 0) { + return 0; + } + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1; + iVar8 = *(int *)(param_1 + 0x28); + iVar2 = *(int *)(param_1 + 0x20); + if (iVar8 != 1) { + if (iVar8 != 2) { + puVar3 = *(uint **)(param_1 + 0x18); + if (iVar2 == 1) { + for (uVar7 = *(uint *)(param_1 + 0x24) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *puVar3 = (uint)*param_2; + puVar3[1] = (uint)param_2[1]; + puVar3[2] = (uint)param_2[2]; + puVar3[3] = (uint)param_2[3]; + puVar3 = puVar3 + 4; + param_2 = param_2 + 4; + } + } + else if (iVar2 == iVar8) { + if (iVar8 == 4) { + sVar6 = 2; + } + else if (iVar8 == 8) { + sVar6 = 3; + } + else if (iVar8 == 0x10) { + sVar6 = 4; + } + else if (iVar8 == 0x20) { + sVar6 = 5; + } + else { + sVar6 = 0; + if (iVar8 == 0x40) { + sVar6 = 6; + } + } + puVar4 = *(undefined2 **)(param_1 + 0x10); + for (iVar8 = *(int *)(param_1 + 0x24); iVar8 != 0; iVar8 = iVar8 + -1) { + uVar1 = *param_2; + param_2 = param_2 + 1; + uVar7 = *puVar3; + *puVar4 = (short)(uVar1 + uVar7 >> sVar6); + *puVar3 = uVar1 + uVar7; + puVar3 = puVar3 + 1; + puVar4 = puVar4 + 1; + } + } + else { + for (uVar7 = *(uint *)(param_1 + 0x24) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *puVar3 = *puVar3 + (uint)*param_2; + puVar3[1] = puVar3[1] + (uint)param_2[1]; + puVar3[2] = puVar3[2] + (uint)param_2[2]; + puVar3[3] = puVar3[3] + (uint)param_2[3]; + puVar3 = puVar3 + 4; + param_2 = param_2 + 4; + } + } + goto LAB_180001367; + } + if (iVar2 != 1) { + puVar5 = *(ushort **)(param_1 + 0x10); + for (uVar7 = *(uint *)(param_1 + 0x24) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *puVar5 = (ushort)((int)((uint)*param_2 + (uint)*puVar5) >> 1); + puVar5[1] = (ushort)((int)((uint)param_2[1] + (uint)puVar5[1]) >> 1); + puVar5[2] = (ushort)((int)((uint)param_2[2] + (uint)puVar5[2]) >> 1); + puVar5[3] = (ushort)((int)((uint)param_2[3] + (uint)puVar5[3]) >> 1); + puVar5 = puVar5 + 4; + param_2 = param_2 + 4; + } + goto LAB_180001367; + } + } + memcpy(*(void **)(param_1 + 0x10),param_2,(ulonglong)*(uint *)(param_1 + 0x24) * 2); +LAB_180001367: + if (*(int *)(param_1 + 0x20) != *(int *)(param_1 + 0x28)) { + return 0; + } + *(undefined4 *)(param_1 + 0x20) = 0; + return 1; +} + + +================================================================== + +### EXPORT FUNC 180001390 (6 bytes) name=FUN_180001390 + +undefined8 FUN_180001390(void) + +{ + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800013a0 (27 bytes) name=FUN_1800013a0 + +undefined8 FUN_1800013a0(longlong param_1) + +{ + InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x10)); + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800013c0 (33 bytes) name=FUN_1800013c0 + +bool FUN_1800013c0(undefined8 *param_1) + +{ + return *(int *)*param_1 == -0x3fffffe9; +} + + +================================================================== + +### EXPORT FUNC 1800013f0 (71 bytes) name=FUN_1800013f0 + +CSyncObject * FUN_1800013f0(CSyncObject *param_1,uint param_2) + +{ + *(undefined ***)param_1 = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x10)); + CSyncObject::~CSyncObject(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180001440 (43 bytes) name=FUN_180001440 + +void FUN_180001440(CSyncObject *param_1) + +{ + *(undefined ***)param_1 = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x10)); + CSyncObject::~CSyncObject(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180001470 (27 bytes) name=FUN_180001470 + +undefined8 FUN_180001470(longlong param_1) + +{ + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x10)); + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800014a0 (33 bytes) name=FUN_1800014a0 + +bool FUN_1800014a0(undefined8 *param_1) + +{ + return *(int *)*param_1 == -0x3fffffe9; +} + + +================================================================== + +### EXPORT FUNC 1800014d0 (5 bytes) name=thunk_FUN_180001470 + +undefined8 thunk_FUN_180001470(longlong param_1) + +{ + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x10)); + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800014e0 (24 bytes) name=FUN_1800014e0 + +undefined8 FUN_1800014e0(longlong param_1) + +{ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x10)); + return 1; +} + + +================================================================== + +### EXPORT FUNC 180001500 (260 bytes) name=FUN_180001500 + +undefined8 * FUN_180001500(undefined8 *param_1) + +{ + undefined8 *puVar1; + LSTATUS LVar2; + undefined8 uVar3; + undefined8 *local_res8; + DWORD local_res10 [2]; + HKEY local_res18; + + *param_1 = CBmp2Avi::vftable; + puVar1 = param_1 + 1; + local_res8 = puVar1; + FUN_18001ec00(puVar1); + *puVar1 = CCriticalSection::vftable; + uVar3 = FUN_1800013a0((longlong)puVar1); + if ((int)uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)((longlong)param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)((longlong)param_1 + 100) = 0; + param_1[9] = 0; + param_1[0xb] = 0; + param_1[10] = 0; + LVar2 = RegCreateKeyExW((HKEY)0xffffffff80000001,L"Software\\GNU\\Xvid",0,(LPWSTR)0x0,0,0xf003f, + (LPSECURITY_ATTRIBUTES)0x0,&local_res18,local_res10); + if (LVar2 == 0) { + local_res8 = (undefined8 *)((ulonglong)local_res8 & 0xffffffff00000000); + RegSetValueExW(local_res18,L"display_status",0,4,(BYTE *)&local_res8,4); + RegCloseKey(local_res18); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180001610 (24 bytes) name=Unwind@180001610 + +void Unwind_180001610(undefined8 param_1,longlong param_2) + +{ + CSyncObject::~CSyncObject(*(CSyncObject **)(param_2 + 0x70)); + return; +} + + +================================================================== + +### EXPORT FUNC 180001630 (217 bytes) name=FUN_180001630 + +undefined8 * FUN_180001630(undefined8 *param_1,uint param_2) + +{ + *param_1 = CBmp2Avi::vftable; + if (*(int *)((longlong)param_1 + 0x44) != 0) { + FUN_180001470((longlong)(param_1 + 1)); + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)((longlong)param_1 + 0x44) = 0; + if (param_1[10] != 0) { + AVIStreamRelease(); + param_1[10] = 0; + } + if (param_1[9] != 0) { + AVIStreamRelease(); + param_1[9] = 0; + } + if (param_1[0xb] != 0) { + AVIFileRelease(); + param_1[0xb] = 0; + } + AVIFileExit(); + (**(code **)(param_1[1] + 0x28))(param_1 + 1); + } + param_1[1] = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 3)); + CSyncObject::~CSyncObject((CSyncObject *)(param_1 + 1)); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180001710 (28 bytes) name=Unwind@180001710 + +void Unwind_180001710(undefined8 param_1,longlong param_2) + +{ + FUN_180001440((CSyncObject *)(*(longlong *)(param_2 + 0x40) + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 180001730 (1311 bytes) name=FUN_180001730 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_180001730(longlong param_1,undefined8 param_2,uint param_3,undefined4 param_4,void *param_5) + +{ + short sVar1; + int yBottom; + int iVar2; + longlong lVar3; + undefined8 uVar4; + ulonglong uVar5; + ulonglong uVar6; + char *pcVar7; + char *pcVar8; + undefined1 uVar9; + undefined1 auStackY_508 [32]; + uint local_4d8; + undefined4 local_4d0; + undefined4 uStack_4cc; + ulonglong local_4c8; + undefined8 local_4c0; + undefined8 local_4b8; + undefined8 local_4b0; + undefined8 local_4a8; + undefined8 local_4a0; + void *local_498; + undefined1 local_490 [14]; + short sStack_482; + undefined8 local_458; + undefined4 local_444; + uint local_440; + int local_430; + tagRECT local_424; + short asStack_40c [66]; + undefined1 local_388 [4]; + undefined4 local_384; + undefined4 local_380; + WCHAR local_370 [276]; + CHAR local_148 [256]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_508; + *(undefined4 *)(param_1 + 0x60) = param_4; + if (param_3 == 0) { + param_3 = 1; + } + local_498 = param_5; + FUN_180001470(param_1 + 8); + AVIFileInit(); + iVar2 = AVIFileOpenW(param_1 + 0x58,param_2,0x1001,0); + if (iVar2 == 0) { + FUN_1800357d0(&local_458,0,0xcc); + iVar2 = *(int *)((longlong)param_5 + 4); + yBottom = *(int *)((longlong)param_5 + 8); + uVar6 = 0; + local_458._0_4_ = 0x73646976; + local_444 = 1; + local_430 = iVar2 * yBottom; + local_458._4_4_ = 0; + uVar5 = uVar6; + do { + sVar1 = *(short *)((longlong)L"Magnity Thermal Video" + uVar5); + *(short *)((longlong)asStack_40c + uVar5) = sVar1; + uVar5 = uVar5 + 2; + } while (sVar1 != 0); + local_440 = param_3; + SetRect(&local_424,0,0,iVar2,yBottom); + iVar2 = AVIFileCreateStreamW(*(undefined8 *)(param_1 + 0x58),param_1 + 0x48,&local_458); + if (iVar2 == 0) { + local_4d8 = 0; + iVar2 = ICInfo(0x63646976,0,local_388); + while (iVar2 != 0) { + lVar3 = ICOpen(local_384,local_380); + if (lVar3 == 0) { + ICClose(0); + local_4d8 = (uint)uVar6; + } + else { + uVar9 = 1; + ICSendMessage(lVar3,0x5000,0,0); + ICGetInfo(lVar3,local_388,0x238); + FUN_180032a60(local_148,local_370,0x100); + lVar3 = 8; + pcVar7 = local_148; + pcVar8 = "x264vfw"; + do { + if (lVar3 == 0) break; + lVar3 = lVar3 + -1; + uVar9 = *pcVar7 == *pcVar8; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } while ((bool)uVar9); + if ((bool)uVar9) { + ICClose(); + goto LAB_180001a3e; + } + ICClose(); + } + local_4d8 = local_4d8 + 1; + uVar6 = (ulonglong)local_4d8; + iVar2 = ICInfo(0x63646976,uVar6,local_388); + } + local_384 = 0; + local_380 = 0x20424944; +LAB_180001a3e: + local_4c8 = (ulonglong)param_3; + _local_4d0 = CONCAT44(local_380,local_384); + local_4c0 = 0x400000000; + local_4b8 = 0; + local_4b0 = 0; + local_4a8 = 0; + local_4a0 = 0; + iVar2 = AVIMakeCompressedStream(param_1 + 0x50,*(undefined8 *)(param_1 + 0x48),&local_4d0,0); + if (iVar2 == 0) { + memcpy(local_490,local_498,0x2c); + if (sStack_482 == 8) { + sStack_482 = 0x18; + } + iVar2 = AVIStreamSetFormat(*(undefined8 *)(param_1 + 0x50),0,local_490,0x28); + if (iVar2 == 0) { + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 1; + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(); + uVar4 = 1; + } + else { + FUN_180001470(param_1 + 8); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + if (*(longlong *)(param_1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x50) = 0; + } + if (*(longlong *)(param_1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x48) = 0; + } + if (*(longlong *)(param_1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(param_1 + 0x58) = 0; + } + AVIFileExit(); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar4 = 0; + } + } + else { + FUN_180001470(param_1 + 8); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + if (*(longlong *)(param_1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x50) = 0; + } + if (*(longlong *)(param_1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x48) = 0; + } + if (*(longlong *)(param_1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(param_1 + 0x58) = 0; + } + AVIFileExit(); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar4 = 0; + } + } + else { + FUN_180001470(param_1 + 8); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + if (*(longlong *)(param_1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x50) = 0; + } + if (*(longlong *)(param_1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x48) = 0; + } + if (*(longlong *)(param_1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(param_1 + 0x58) = 0; + } + AVIFileExit(); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar4 = 0; + } + } + else { + if (*(longlong *)(param_1 + 0x58) != 0) { + FUN_180001470(param_1 + 8); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + if (*(longlong *)(param_1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x50) = 0; + } + if (*(longlong *)(param_1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x48) = 0; + } + if (*(longlong *)(param_1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(param_1 + 0x58) = 0; + } + AVIFileExit(); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + } + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar4 = 0; + } + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 180001c50 (121 bytes) name=FUN_180001c50 + +void FUN_180001c50(longlong param_1) + +{ + FUN_180001470(param_1 + 8); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + if (*(longlong *)(param_1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x50) = 0; + } + if (*(longlong *)(param_1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x48) = 0; + } + if (*(longlong *)(param_1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(param_1 + 0x58) = 0; + } + AVIFileExit(); + /* WARNING: Could not recover jumptable at 0x000180001cc5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + return; +} + + +================================================================== + +### EXPORT FUNC 180001cd0 (329 bytes) name=FUN_180001cd0 + +bool FUN_180001cd0(longlong param_1,byte *param_2,int param_3,longlong param_4) + +{ + byte *pbVar1; + uint uVar2; + byte *pbVar3; + ulonglong uVar4; + uint uVar5; + int iVar6; + byte *pbVar7; + bool bVar8; + + *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + 1; + if (*(uint *)(param_1 + 100) < *(uint *)(param_1 + 0x60)) { + return true; + } + *(undefined4 *)(param_1 + 100) = 0; + FUN_180001470(param_1 + 8); + if (*(int *)(param_1 + 0x44) == 0) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + bVar8 = false; + } + else { + pbVar3 = param_2; + pbVar7 = (byte *)0x0; + if (*(short *)(param_4 + 0xe) == 8) { + param_3 = param_3 * 3; + pbVar3 = thunk_FUN_18001eb74((longlong)param_3); + uVar2 = *(int *)(param_4 + 8) * *(int *)(param_4 + 4); + uVar5 = (int)uVar2 >> 0x1f; + pbVar1 = pbVar3; + for (iVar6 = (uVar2 ^ uVar5) - uVar5; pbVar7 = pbVar3, iVar6 != 0; iVar6 = iVar6 + -1) { + uVar4 = (ulonglong)*param_2; + param_2 = param_2 + 1; + *pbVar1 = *(byte *)(param_4 + 0x28 + uVar4 * 4); + pbVar1[1] = *(byte *)(param_4 + 0x29 + uVar4 * 4); + pbVar1[2] = *(byte *)(param_4 + 0x2a + uVar4 * 4); + pbVar1 = pbVar1 + 3; + } + } + iVar6 = 1; + if (*(longlong *)(param_1 + 0x50) != 0) { + iVar6 = AVIStreamWrite(*(longlong *)(param_1 + 0x50),*(undefined4 *)(param_1 + 0x40),1,pbVar3, + param_3,0x10,0,0); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + } + if (pbVar7 != (byte *)0x0) { + thunk_FUN_180034a70(pbVar7); + } + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + bVar8 = iVar6 == 0; + } + return bVar8; +} + + +================================================================== + +### EXPORT FUNC 180001e20 (3 bytes) name=FUN_180001e20 + +void FUN_180001e20(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 180001e30 (5 bytes) name=thunk_FUN_180034a70 + +void thunk_FUN_180034a70(LPVOID param_1) + +{ + BOOL BVar1; + DWORD DVar2; + DWORD *pDVar3; + + if (param_1 != (LPVOID)0x0) { + BVar1 = HeapFree(DAT_180072ed8,0,param_1); + if (BVar1 == 0) { + pDVar3 = FUN_180035b40(); + DVar2 = GetLastError(); + DVar2 = FUN_180035af0(DVar2); + *pDVar3 = DVar2; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180001e40 (148 bytes) name=FUN_180001e40 + +int FUN_180001e40(longlong param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (*(int *)(param_1 + 0x47950) != 0) { + iVar2 = param_2 + 150000; + iVar1 = (int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar1 < 0) { + iVar1 = 0; + } + else if (0x285 < iVar1) { + iVar1 = 0x285; + } + iVar2 = (iVar2 + iVar1 * -0x1000) * ((&DAT_180099004)[iVar1] - (&DAT_180099000)[iVar1]); + iVar1 = ((int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar1]; + if (iVar1 < 0) { + iVar1 = 0; + } + return iVar1 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar1 = param_2 - *(int *)(param_1 + 0x47948) >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f) + ; + if (iVar1 < 0) { + iVar1 = 0; + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180001ee0 (463 bytes) name=MAG_NewChannel + +undefined8 MAG_NewChannel(uint param_1) + +{ + ulonglong *puVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + ulonglong uVar5; + + /* 0x1ee0 47 MAG_NewChannel */ + uVar5 = (ulonglong)param_1; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + if (((((&DAT_180073758)[uVar5 * 0x95] == 0) && + (puVar1 = &DAT_180073750 + uVar5 * 0x95, (&DAT_180073750)[uVar5 * 0x95] == 0)) && + ((&DAT_180073760)[uVar5 * 0x95] == 0)) && ((&DAT_180073768)[uVar5 * 0x95] == 0)) { + FUN_1800357d0(puVar1,0,0x4a8); + puVar2 = FUN_18001eb74(0x47958); + puVar4 = (undefined8 *)0x0; + puVar3 = puVar4; + if (puVar2 != (undefined8 *)0x0) { + puVar3 = FUN_18000b6f0(puVar2); + } + *puVar1 = (ulonglong)puVar3; + puVar2 = FUN_18001eb74(0x2dc0); + puVar3 = puVar4; + if (puVar2 != (undefined8 *)0x0) { + puVar3 = FUN_18001c220(puVar2); + } + (&DAT_180073758)[uVar5 * 0x95] = puVar3; + puVar2 = FUN_18001eb74(0x68); + puVar3 = puVar4; + if (puVar2 != (undefined8 *)0x0) { + puVar3 = FUN_180001500(puVar2); + } + (&DAT_180073760)[uVar5 * 0x95] = puVar3; + puVar3 = FUN_18001eb74(0x4f0); + if (puVar3 != (undefined8 *)0x0) { + puVar4 = FUN_18001ae70(puVar3); + } + (&DAT_180073768)[uVar5 * 0x95] = puVar4; + if (((*puVar1 == 0) || ((&DAT_180073758)[uVar5 * 0x95] == 0)) || + ((&DAT_180073760)[uVar5 * 0x95] == 0)) { + if (puVar4 != (undefined8 *)0x0) { + (**(code **)*puVar4)(puVar4,1); + (&DAT_180073768)[uVar5 * 0x95] = 0; + } + } + else if (puVar4 != (undefined8 *)0x0) { + *(uint *)((&DAT_180073758)[uVar5 * 0x95] + 0x28) = param_1; + return 1; + } + puVar3 = (undefined8 *)(&DAT_180073760)[uVar5 * 0x95]; + if (puVar3 != (undefined8 *)0x0) { + (**(code **)*puVar3)(puVar3,1); + (&DAT_180073760)[uVar5 * 0x95] = 0; + } + puVar3 = (undefined8 *)*puVar1; + if (puVar3 != (undefined8 *)0x0) { + (**(code **)*puVar3)(puVar3,1); + *puVar1 = 0; + } + puVar3 = (undefined8 *)(&DAT_180073758)[uVar5 * 0x95]; + if (puVar3 != (undefined8 *)0x0) { + (**(code **)*puVar3)(puVar3,1); + (&DAT_180073758)[uVar5 * 0x95] = 0; + } + SetLastError(0xe4ae0002); + } + else { + SetLastError(0xe4ae000a); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800020b0 (324 bytes) name=MAG_DelChannel + +void MAG_DelChannel(uint param_1) + +{ + undefined8 *puVar1; + ulonglong uVar2; + + /* 0x20b0 3 MAG_DelChannel */ + if (param_1 < 0x81) { + uVar2 = (ulonglong)param_1; + if ((((&DAT_180073758)[uVar2 * 0x95] != 0) && ((&DAT_180073750)[uVar2 * 0x95] != 0)) && + ((&DAT_180073768)[uVar2 * 0x95] != 0)) { + MAG_Free(param_1); + } + if ((((&DAT_180073758)[uVar2 * 0x95] == 0) || ((&DAT_180073750)[uVar2 * 0x95] == 0)) || + (((&DAT_180073760)[uVar2 * 0x95] == 0 || ((&DAT_180073768)[uVar2 * 0x95] == 0)))) { + SetLastError(0xe4ae0001); + } + else { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar2 * 0x95] + 0x238)); + } + puVar1 = (undefined8 *)(&DAT_180073768)[uVar2 * 0x95]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + (&DAT_180073768)[uVar2 * 0x95] = 0; + } + puVar1 = (undefined8 *)(&DAT_180073760)[uVar2 * 0x95]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + (&DAT_180073760)[uVar2 * 0x95] = 0; + } + puVar1 = (undefined8 *)(&DAT_180073750)[uVar2 * 0x95]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + (&DAT_180073750)[uVar2 * 0x95] = 0; + } + puVar1 = (undefined8 *)(&DAT_180073758)[uVar2 * 0x95]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + (&DAT_180073758)[uVar2 * 0x95] = 0; + } + if ((((&DAT_180073758)[uVar2 * 0x95] != 0) && ((&DAT_180073750)[uVar2 * 0x95] != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) { + /* WARNING: Could not recover jumptable at 0x0001800021d3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar2 * 0x95] + 0x238)); + return; + } + SetLastError(0xe4ae0001); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180002200 (87 bytes) name=MAG_IsChannelAvailable + +undefined8 MAG_IsChannelAvailable(uint param_1) + +{ + ulonglong uVar1; + + /* 0x2200 31 MAG_IsChannelAvailable */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + return 1; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180002260 (87 bytes) name=MAG_IsInitialized + +undefined4 MAG_IsInitialized(uint param_1) + +{ + ulonglong uVar1; + + /* 0x2260 32 MAG_IsInitialized */ + if (param_1 < 0x81) { + uVar1 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar1 * 0x95] != 0) && ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((&DAT_180073760)[uVar1 * 0x95] != 0)) && ((&DAT_180073768)[uVar1 * 0x95] != 0)) { + return *(undefined4 *)((&DAT_180073758)[uVar1 * 0x95] + 0x10); + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800022c0 (296 bytes) name=MAG_Initialize + +undefined8 MAG_Initialize(uint param_1,HWND param_2) + +{ + longlong lVar1; + BOOL BVar2; + undefined8 uVar3; + ulonglong uVar4; + longlong lVar5; + HWND pHVar6; + + /* 0x22c0 30 MAG_Initialize */ + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + uVar4 = (ulonglong)param_1; + lVar5 = uVar4 * 0x4a8; + lVar1 = (&DAT_180073758)[uVar4 * 0x95]; + if ((((lVar1 != 0) && ((&DAT_180073750)[uVar4 * 0x95] != 0)) && + ((&DAT_180073760)[uVar4 * 0x95] != 0)) && ((&DAT_180073768)[uVar4 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x10) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + *(undefined4 *)(&DAT_18007377c + lVar5) = 0; + *(undefined4 *)(&DAT_180073778 + lVar5) = 0; + *(undefined8 *)(&DAT_180073788 + lVar5) = 0; + *(undefined8 *)(&DAT_180073790 + lVar5) = 0; + if (*(int *)(lVar1 + 0x10) != 0) { + FUN_18001c590(lVar1); + } + lVar1 = (&DAT_180073758)[uVar4 * 0x95]; + if (*(int *)(lVar1 + 0x10) == 0) { + BVar2 = IsWindow(param_2); + *(undefined4 *)(lVar1 + 0x10) = 1; + uVar3 = 1; + pHVar6 = (HWND)0x0; + if (BVar2 != 0) { + pHVar6 = param_2; + } + *(HWND *)(lVar1 + 0x20) = pHVar6; + } + else { + SetLastError(0xe4ae000a); + uVar3 = 0; + } + return uVar3; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800023f0 (410 bytes) name=MAG_Free + +void MAG_Free(uint param_1) + +{ + int *piVar1; + ulonglong uVar2; + longlong lVar3; + uint uVar4; + + /* 0x23f0 8 MAG_Free */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x000180002405. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar2 = (ulonglong)param_1; + lVar3 = uVar2 * 0x4a8; + if (((((&DAT_180073758)[uVar2 * 0x95] == 0) || ((&DAT_180073750)[uVar2 * 0x95] == 0)) || + ((&DAT_180073760)[uVar2 * 0x95] == 0)) || ((&DAT_180073768)[uVar2 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + } + else { + if (*(int *)(&DAT_180073778 + lVar3) != 0) { + MAG_StopProcessImage(param_1); + } + uVar4 = 0; + if (*(LPVOID *)(&DAT_180073788 + lVar3) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar3)); + *(undefined8 *)(&DAT_180073788 + lVar3) = 0; + } + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x18) != 0) { + FUN_18001d520((&DAT_180073758)[uVar2 * 0x95]); + } + lVar3 = (&DAT_180073758)[uVar2 * 0x95]; + if (*(int *)(lVar3 + 0x14) != 0) { + if (*(int *)(lVar3 + 0x18) != 0) { + FUN_18001d520(lVar3); + } + FUN_180001470(lVar3 + 0x80); + if (*(int *)(lVar3 + 0x2cf0) != 0) { + piVar1 = (int *)(lVar3 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar4 = uVar4 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar4 < *(uint *)(lVar3 + 0x2cf0)); + } + (**(code **)(*(longlong *)(lVar3 + 0x80) + 0x28))(lVar3 + 0x80); + if (*(HWND *)(lVar3 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(lVar3 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(lVar3 + 0x38) != 0) { + usb_release_interface(*(longlong *)(lVar3 + 0x38),0); + usb_close(*(undefined8 *)(lVar3 + 0x38)); + *(undefined8 *)(lVar3 + 0x38) = 0; + } + *(undefined8 *)(lVar3 + 0x30) = 0; + *(undefined4 *)(lVar3 + 0x14) = 0; + } + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x10) != 0) { + FUN_18001c590((&DAT_180073758)[uVar2 * 0x95]); + return; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180002590 (88 bytes) name=MAG_EnumCameras + +undefined8 MAG_EnumCameras(uint param_1) + +{ + ulonglong uVar1; + undefined8 uVar2; + + /* 0x2590 5 MAG_EnumCameras */ + if (param_1 < 0x81) { + uVar1 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar1 * 0x95] != 0) && ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((&DAT_180073760)[uVar1 * 0x95] != 0)) && ((&DAT_180073768)[uVar1 * 0x95] != 0)) { + uVar2 = FUN_18001c900((&DAT_180073758)[uVar1 * 0x95]); + return uVar2; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800025f0 (87 bytes) name=MAG_IsLinked + +undefined4 MAG_IsLinked(uint param_1) + +{ + ulonglong uVar1; + + /* 0x25f0 33 MAG_IsLinked */ + if (param_1 < 0x81) { + uVar1 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar1 * 0x95] != 0) && ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((&DAT_180073760)[uVar1 * 0x95] != 0)) && ((&DAT_180073768)[uVar1 * 0x95] != 0)) { + return *(undefined4 *)((&DAT_180073758)[uVar1 * 0x95] + 0x14); + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180002650 (308 bytes) name=MAG_LinkCamera + +undefined8 MAG_LinkCamera(uint param_1,uint param_2) + +{ + longlong lVar1; + uint *puVar2; + undefined8 uVar3; + DWORD DVar4; + uint uVar5; + ulonglong uVar6; + + /* 0x2650 35 MAG_LinkCamera */ + uVar6 = (ulonglong)param_1; + if (param_1 < 0x81) { + lVar1 = (&DAT_180073758)[uVar6 * 0x95]; + if ((((lVar1 != 0) && ((&DAT_180073750)[uVar6 * 0x95] != 0)) && + ((&DAT_180073760)[uVar6 * 0x95] != 0)) && ((&DAT_180073768)[uVar6 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x14) != 0) { + DVar4 = 0xe4ae000a; + goto LAB_18000276c; + } + uVar5 = param_2; + if (param_2 < 0x100) { +LAB_1800026ca: + if (*(int *)(lVar1 + 0x10) == 0) { + DVar4 = 0xe4ae0004; + goto LAB_180002706; + } + FUN_18001cce0(lVar1,uVar5); + } + else { + uVar5 = 0; + if (*(uint *)(lVar1 + 0x2cf0) != 0) { + puVar2 = (uint *)(lVar1 + 0xf8); + do { + if (*puVar2 == param_2) goto LAB_1800026ca; + uVar5 = uVar5 + 1; + puVar2 = puVar2 + 0x16; + } while (uVar5 < *(uint *)(lVar1 + 0x2cf0)); + } + DVar4 = 0xe4ae0001; +LAB_180002706: + SetLastError(DVar4); + } + if (*(int *)((&DAT_180073758)[uVar6 * 0x95] + 0x14) != 0) { + uVar3 = FUN_180008bd0(param_1); + if ((int)uVar3 == 0) { + FUN_18001c840((&DAT_180073758)[uVar6 * 0x95]); + return 0; + } + return 1; + } + DVar4 = 0xe4ae0007; + goto LAB_18000276c; + } + } + DVar4 = 0xe4ae0001; +LAB_18000276c: + SetLastError(DVar4); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180002790 (325 bytes) name=MAG_DisLinkCamera + +void MAG_DisLinkCamera(uint param_1) + +{ + longlong lVar1; + int *piVar2; + uint uVar3; + ulonglong uVar4; + + /* 0x2790 4 MAG_DisLinkCamera */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x0001800027a5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar4 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar4 * 0x95] != 0) && ((&DAT_180073750)[uVar4 * 0x95] != 0)) && + ((&DAT_180073760)[uVar4 * 0x95] != 0)) && ((&DAT_180073768)[uVar4 * 0x95] != 0)) { + if (*(int *)(&DAT_180073778 + uVar4 * 0x4a8) != 0) { + MAG_StopProcessImage(param_1); + } + lVar1 = (&DAT_180073758)[uVar4 * 0x95]; + if (*(int *)(lVar1 + 0x18) != 0) { + FUN_18001d520(lVar1); + } + FUN_180001470(lVar1 + 0x80); + uVar3 = 0; + if (*(int *)(lVar1 + 0x2cf0) != 0) { + piVar2 = (int *)(lVar1 + 0x13c); + do { + if (*piVar2 != 0) { + *piVar2 = 0; + } + uVar3 = uVar3 + 1; + piVar2 = piVar2 + 0x16; + } while (uVar3 < *(uint *)(lVar1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(lVar1 + 0x80) + 0x28))(lVar1 + 0x80); + if (*(HWND *)(lVar1 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(lVar1 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(lVar1 + 0x38) != 0) { + usb_release_interface(*(longlong *)(lVar1 + 0x38),0); + usb_close(*(undefined8 *)(lVar1 + 0x38)); + *(undefined8 *)(lVar1 + 0x38) = 0; + } + *(undefined8 *)(lVar1 + 0x30) = 0; + *(undefined4 *)(lVar1 + 0x14) = 0; + return; + } + /* WARNING: Could not recover jumptable at 0x0001800028ce. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 1800028e0 (92 bytes) name=MAG_GetCamInfo + +void MAG_GetCamInfo(uint param_1,void *param_2,uint param_3) + +{ + ulonglong uVar1; + + /* 0x28e0 10 MAG_GetCamInfo */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)) && + (0x47 < param_3)))) { + memcpy(param_2,&DAT_1800737b8 + uVar1 * 0x12a,0x48); + return; + } + /* WARNING: Could not recover jumptable at 0x000180002935. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 180002940 (632 bytes) name=MAG_GetCamInfoEx + +void MAG_GetCamInfoEx(uint param_1,ulonglong *param_2,uint param_3) + +{ + undefined8 *puVar1; + undefined4 uVar2; + longlong lVar3; + ulonglong uVar4; + longlong lVar5; + + /* 0x2940 11 MAG_GetCamInfoEx */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x00018000295b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar4 = (ulonglong)param_1; + lVar5 = uVar4 * 0x4a8; + if (((((&DAT_180073758)[uVar4 * 0x95] != 0) && ((&DAT_180073750)[uVar4 * 0x95] != 0)) && + ((&DAT_180073760)[uVar4 * 0x95] != 0)) && + (((&DAT_180073768)[uVar4 * 0x95] != 0 && (0x187 < param_3)))) { + FUN_1800357d0(param_2,0,0x188); + memcpy(param_2,&DAT_1800737b8 + uVar4 * 0x12a,0x48); + *(undefined4 *)(param_2 + 9) = (&DAT_1800737b0)[uVar4 * 0x12a]; + *(undefined4 *)((longlong)param_2 + 0x4c) = *(undefined4 *)(&DAT_180073800 + lVar5); + *(undefined4 *)(param_2 + 10) = *(undefined4 *)(&DAT_180073804 + lVar5); + *(undefined4 *)((longlong)param_2 + 0x54) = *(undefined4 *)(&DAT_180073808 + lVar5); + *(undefined4 *)(param_2 + 0xb) = *(undefined4 *)(&DAT_18007380c + lVar5); + lVar3 = (&DAT_180073750)[uVar4 * 0x95]; + if ((*(uint *)(lVar3 + 0x98) < *(uint *)(lVar3 + 0x41884)) && + (puVar1 = (undefined8 *)((ulonglong)*(uint *)(lVar3 + 0x98) * 0x21c + 0x41888 + lVar3), + puVar1 != (undefined8 *)0x0)) { + *(undefined8 *)((longlong)param_2 + 0x5c) = *puVar1; + *(undefined8 *)((longlong)param_2 + 100) = puVar1[1]; + *(undefined8 *)((longlong)param_2 + 0x6c) = puVar1[2]; + *(undefined8 *)((longlong)param_2 + 0x74) = puVar1[3]; + *(undefined4 *)((longlong)param_2 + 0x7c) = *(undefined4 *)(puVar1 + 4); + *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(puVar1 + 0x41); + *(undefined4 *)((longlong)param_2 + 0x84) = *(undefined4 *)((longlong)puVar1 + 0x20c); + } + param_2[0x16] = *(ulonglong *)(&DAT_180073810 + lVar5); + param_2[0x17] = *(ulonglong *)(&DAT_180073818 + lVar5); + param_2[0x18] = *(ulonglong *)(&DAT_180073820 + lVar5); + *(undefined4 *)(param_2 + 0x19) = *(undefined4 *)(&DAT_180073828 + lVar5); + uVar2 = *(undefined4 *)(&DAT_180073780 + lVar5); + *(undefined4 *)(param_2 + 0x1a) = 0; + *(undefined4 *)((longlong)param_2 + 0xcc) = uVar2; + *(undefined4 *)((longlong)param_2 + 0xd4) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0xd4); + *(undefined4 *)(param_2 + 0x1b) = *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0xd8); + *(undefined4 *)((longlong)param_2 + 0xdc) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0xf4); + *(undefined4 *)(param_2 + 0x1c) = *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0xf8); + *(undefined4 *)((longlong)param_2 + 0xe4) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0xd0); + *(undefined4 *)(param_2 + 0x1d) = *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x10); + *(undefined4 *)((longlong)param_2 + 0xec) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x14); + *(undefined4 *)(param_2 + 0x1e) = *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x18); + *(undefined4 *)((longlong)param_2 + 0xf4) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x1c); + *(undefined4 *)(param_2 + 0x1f) = *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x20); + *(undefined4 *)((longlong)param_2 + 0xfc) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x24); + *(undefined4 *)(param_2 + 0x20) = *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x48); + *(undefined4 *)((longlong)param_2 + 0x104) = + *(undefined4 *)((&DAT_180073750)[uVar4 * 0x95] + 0x4c); + *(undefined4 *)(param_2 + 0x25) = *(undefined4 *)(&DAT_180073bac + lVar5); + *(undefined4 *)((longlong)param_2 + 300) = *(undefined4 *)(&DAT_180073bb0 + lVar5); + return; + } + /* WARNING: Could not recover jumptable at 0x000180002bb1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 180002bc0 (161 bytes) name=MAG_GetTerminalList + +ulonglong MAG_GetTerminalList(void *param_1,uint param_2) + +{ + uint uVar1; + ulonglong uVar2; + ulonglong _Size; + + /* 0x2bc0 29 MAG_GetTerminalList */ + if ((((DAT_180073758 != 0) && (DAT_180073750 != 0)) && (DAT_180073760 != 0)) && + (DAT_180073768 != 0)) { + if (*(int *)(DAT_180073758 + 0x10) == 0) { + SetLastError(0xe4ae0004); + return 0; + } + uVar1 = *(uint *)(DAT_180073758 + 0x2cf0); + if (((param_1 != (void *)0x0) && (uVar1 != 0)) && (param_2 != 0)) { + uVar2 = (ulonglong)uVar1 * 0x58; + _Size = (ulonglong)param_2; + if (uVar2 < param_2) { + _Size = uVar2; + } + memcpy(param_1,(void *)(DAT_180073758 + 0xf0),_Size); + } + return (ulonglong)uVar1; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180002c70 (86 bytes) name=MAG_IsProcessingImage + +undefined4 MAG_IsProcessingImage(uint param_1) + +{ + ulonglong uVar1; + + /* 0x2c70 34 MAG_IsProcessingImage */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + return *(undefined4 *)(&DAT_180073778 + uVar1 * 0x4a8); + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180002cd0 (112 bytes) name=MAG_StartProcessImage + +undefined8 +MAG_StartProcessImage(uint param_1,uint *param_2,longlong param_3,int param_4,undefined8 param_5) + +{ + undefined8 uVar1; + ulonglong uVar2; + + /* 0x2cd0 62 MAG_StartProcessImage */ + uVar2 = (ulonglong)param_1; + if ((((param_1 < 0x81) && ((&DAT_180073758)[uVar2 * 0x95] != 0)) && + ((&DAT_180073750)[uVar2 * 0x95] != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) { + *(undefined8 *)(&DAT_180073770 + uVar2 * 0x4a8) = param_5; + uVar1 = FUN_180009b50(param_1,param_2,param_3,param_4); + return uVar1; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180002d40 (514 bytes) name=MAG_StopProcessImage + +void MAG_StopProcessImage(uint param_1) + +{ + longlong lVar1; + longlong *plVar2; + ulonglong uVar3; + longlong lVar4; + + /* 0x2d40 63 MAG_StopProcessImage */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x000180002d55. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar3 = (ulonglong)param_1; + lVar4 = uVar3 * 0x4a8; + if (((((&DAT_180073758)[uVar3 * 0x95] != 0) && ((&DAT_180073750)[uVar3 * 0x95] != 0)) && + ((&DAT_180073760)[uVar3 * 0x95] != 0)) && ((&DAT_180073768)[uVar3 * 0x95] != 0)) { + if ((*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x48) != 0) || + (*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x44) != 0)) { + lVar1 = (&DAT_180073768)[uVar3 * 0x95]; + FUN_180001470(lVar1 + 8); + if (*(int *)(lVar1 + 0x48) != 0) { + *(undefined4 *)(lVar1 + 0x4d8) = 0; + SetEvent(*(HANDLE *)(lVar1 + 0x4e8)); + if (*(longlong *)(lVar1 + 0x4e0) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(lVar1 + 0x4e0) + 0x58),0xffffffff); + plVar2 = *(longlong **)(lVar1 + 0x4e0); + if (plVar2 != (longlong *)0x0) { + (**(code **)(*plVar2 + 8))(plVar2,1); + } + *(undefined8 *)(lVar1 + 0x4e0) = 0; + } + CloseHandle(*(HANDLE *)(lVar1 + 0x4e8)); + *(undefined4 *)(lVar1 + 0x48) = 0; + } + if (*(int *)(lVar1 + 0x44) != 0) { + *(undefined4 *)(lVar1 + 0x44) = 0; + } + (**(code **)(*(longlong *)(lVar1 + 0x50) + 0x98))(lVar1 + 0x50); + *(undefined4 *)(lVar1 + 0x40) = 0; + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8); + } + lVar1 = (&DAT_180073760)[uVar3 * 0x95]; + if (*(int *)(lVar1 + 0x44) != 0) { + FUN_180001470(lVar1 + 8); + *(undefined4 *)(lVar1 + 0x40) = 0; + *(undefined4 *)(lVar1 + 0x44) = 0; + if (*(longlong *)(lVar1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(lVar1 + 0x50) = 0; + } + if (*(longlong *)(lVar1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(lVar1 + 0x48) = 0; + } + if (*(longlong *)(lVar1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(lVar1 + 0x58) = 0; + } + AVIFileExit(); + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8); + } + if (*(int *)((&DAT_180073758)[uVar3 * 0x95] + 0x18) != 0) { + FUN_18001d520((&DAT_180073758)[uVar3 * 0x95]); + } + lVar1 = (&DAT_180073750)[uVar3 * 0x95]; + *(undefined4 *)(&DAT_180073778 + lVar4) = 0; + *(undefined4 *)(&DAT_18007377c + lVar4) = 0; + *(undefined8 *)(&DAT_180073790 + lVar4) = 0; + FUN_18000c2b0(lVar1); + if (*(LPVOID *)(&DAT_180073788 + lVar4) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar4)); + *(undefined8 *)(&DAT_180073788 + lVar4) = 0; + } + return; + } + /* WARNING: Could not recover jumptable at 0x000180002f3b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 180002f50 (155 bytes) name=FUN_180002f50 + +undefined8 FUN_180002f50(uint param_1) + +{ + undefined8 uVar1; + ulonglong uVar2; + uint local_res10 [6]; + + uVar2 = (ulonglong)param_1; + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + local_res10[0] = 0x6bb6b672; + local_res10[1] = 0; + uVar1 = FUN_18001c670((&DAT_180073758)[uVar2 * 0x95],local_res10,8); + if ((int)uVar1 == 0) { + return uVar1; + } + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x5c); + *(undefined4 *)(&DAT_180073bec + uVar2 * 0x4a8) = 0; + return 1; +} + + +================================================================== + +### EXPORT FUNC 180002ff0 (230 bytes) name=MAG_TriggerFFC + +bool MAG_TriggerFFC(uint param_1) + +{ + longlong lVar1; + undefined8 uVar2; + ulonglong uVar3; + bool bVar4; + uint local_res10 [2]; + + /* 0x2ff0 64 MAG_TriggerFFC */ + if (param_1 < 0x81) { + uVar3 = (ulonglong)param_1; + lVar1 = (&DAT_180073758)[uVar3 * 0x95]; + if ((((lVar1 != 0) && ((&DAT_180073750)[uVar3 * 0x95] != 0)) && + ((&DAT_180073760)[uVar3 * 0x95] != 0)) && ((&DAT_180073768)[uVar3 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + return false; + } + local_res10[0] = 0x6bb6b672; + local_res10[1] = 0; + uVar2 = FUN_18001c670(lVar1,local_res10,8); + bVar4 = (int)uVar2 != 0; + if (bVar4) { + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar3 * 0x95] + 0x5c); + *(undefined4 *)(&DAT_180073bec + uVar3 * 0x4a8) = 0; + } + return bVar4; + } + } + SetLastError(0xe4ae0001); + return false; +} + + +================================================================== + +### EXPORT FUNC 1800030e0 (90 bytes) name=MAG_SetColorPalette + +void MAG_SetColorPalette(uint param_1,int param_2) + +{ + longlong lVar1; + ulonglong uVar2; + + /* 0x30e0 53 MAG_SetColorPalette */ + if ((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar2 * 0x95], lVar1 != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) { + if ((param_2 < 0) || (0xb < param_2)) { + param_2 = 0; + } + *(int *)(&DAT_180073780 + uVar2 * 0x4a8) = param_2; + FUN_18000d5f0(lVar1,param_2); + return; + } + /* WARNING: Could not recover jumptable at 0x000180003133. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 180003140 (23 bytes) name=MAG_SetSubsectionEnlargePara + +void MAG_SetSubsectionEnlargePara(uint param_1,int param_2,int param_3,byte param_4,byte param_5) + +{ + /* 0x3140 61 MAG_SetSubsectionEnlargePara */ + MAG_SetFixedEnlargePara(param_1,param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### EXPORT FUNC 180003160 (300 bytes) name=MAG_SetFixedEnlargePara + +undefined8 MAG_SetFixedEnlargePara(uint param_1,int param_2,int param_3,byte param_4,byte param_5) + +{ + undefined8 uVar1; + ulonglong uVar2; + + /* 0x3160 58 MAG_SetFixedEnlargePara */ + if (((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + ((&DAT_180073750)[uVar2 * 0x95] != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) && + ((param_2 < param_3 && (param_4 < param_5)))) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar2 * 0x95] + 0x238)); + *(int *)((&DAT_180073750)[uVar2 * 0x95] + 0x14) = param_2; + *(int *)((&DAT_180073750)[uVar2 * 0x95] + 0x18) = param_3; + *(uint *)((&DAT_180073750)[uVar2 * 0x95] + 0x1c) = (uint)param_4; + *(uint *)((&DAT_180073750)[uVar2 * 0x95] + 0x20) = (uint)param_5; + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x10) = 1; + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x28) = 0; + if ((*(int *)((&DAT_180073750)[uVar2 * 0x95] + 0x234) != 0) && + (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x14) == 0)) { + FUN_18000d110((&DAT_180073750)[uVar2 * 0x95]); + } + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar2 * 0x95] + 0x238)); + uVar1 = 1; + } + else { + SetLastError(0xe4ae0001); + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180003290 (312 bytes) name=MAG_SetAutoEnlargePara + +void MAG_SetAutoEnlargePara(uint param_1,uint param_2,int param_3,int param_4) + +{ + ulonglong uVar1; + int iVar2; + int iVar3; + + /* 0x3290 52 MAG_SetAutoEnlargePara */ + if (param_1 < 0x81) { + uVar1 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar1 * 0x95] == 0) || ((&DAT_180073750)[uVar1 * 0x95] == 0)) || + ((&DAT_180073760)[uVar1 * 0x95] == 0)) || ((&DAT_180073768)[uVar1 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + } + else { + if (param_2 < 2) { + param_2 = 2; + } + iVar2 = 100; + if ((param_3 < 0x65) && (iVar2 = param_3, param_3 < -100)) { + iVar2 = -100; + } + iVar3 = 100; + if ((param_4 < 0x65) && (iVar3 = param_4, param_4 < -100)) { + iVar3 = -100; + } + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x24) = param_2; + *(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x48) = iVar2; + *(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x4c) = iVar3; + *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0x10) = 0; + *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0x28) = 0; + if ((*(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x234) != 0) && + (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0)) { + FUN_18000d110((&DAT_180073750)[uVar1 * 0x95]); + } + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + } + return; + } + /* WARNING: Could not recover jumptable at 0x0001800032b6. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 1800033d0 (27 bytes) name=MAG_SetIsothermalPara + +void MAG_SetIsothermalPara(uint param_1,int param_2,int param_3) + +{ + /* 0x33d0 59 MAG_SetIsothermalPara */ + MAG_SetIsothermalParaEx(param_1,param_2,param_3,0,0xff,0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800033f0 (310 bytes) name=MAG_SetIsothermalParaEx + +void MAG_SetIsothermalParaEx + (uint param_1,int param_2,int param_3,undefined1 param_4,undefined1 param_5, + undefined1 param_6) + +{ + ulonglong uVar1; + + /* 0x33f0 60 MAG_SetIsothermalParaEx */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x000180003424. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar1 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar1 * 0x95] == 0) || ((&DAT_180073750)[uVar1 * 0x95] == 0)) || + ((&DAT_180073760)[uVar1 * 0x95] == 0)) || ((&DAT_180073768)[uVar1 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + } + else { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0x10) = 0; + *(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x14) = param_2; + *(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x18) = param_3; + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x28) = (uint)(param_2 <= param_3); + *(undefined1 *)((&DAT_180073750)[uVar1 * 0x95] + 0x2c) = param_6; + *(undefined1 *)((&DAT_180073750)[uVar1 * 0x95] + 0x2d) = param_5; + *(undefined1 *)((&DAT_180073750)[uVar1 * 0x95] + 0x2e) = param_4; + *(undefined1 *)((&DAT_180073750)[uVar1 * 0x95] + 0x2f) = 0; + if ((*(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x234) != 0) && + (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0)) { + FUN_18000d110((&DAT_180073750)[uVar1 * 0x95]); + } + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180003530 (502 bytes) name=MAG_SetEnhancedROI + +void MAG_SetEnhancedROI(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5, + uint param_6) + +{ + ulonglong uVar1; + uint uVar2; + int iVar3; + uint uVar4; + + /* 0x3530 56 MAG_SetEnhancedROI */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x000180003556. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar1 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar1 * 0x95] != 0) && ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((&DAT_180073760)[uVar1 * 0x95] != 0)) && ((&DAT_180073768)[uVar1 * 0x95] != 0)) { + if (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0) { + /* WARNING: Could not recover jumptable at 0x0001800035c7. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0005); + return; + } + if (((param_5 < param_3) || ((uint)(&DAT_1800737b8)[uVar1 * 0x12a] <= param_5)) || + ((param_6 < param_4 || (*(uint *)(&DAT_1800737bc + uVar1 * 0x4a8) <= param_6)))) { + SetLastError(0xe4ae0001); + } + else { + if (0x1000 < param_2) { + param_2 = 0x1000; + } + iVar3 = *(uint *)(&DAT_1800737bc + uVar1 * 0x4a8) * (&DAT_1800737b8)[uVar1 * 0x12a]; + uVar4 = ((param_5 - param_3) + 1) * ((param_6 - param_4) + 1); + if ((iVar3 * 4) / 5 < (int)uVar4) { + uVar2 = 0; + } + else { + uVar2 = (iVar3 * param_2) / uVar4; + } + uVar4 = (0x7fffffff - iVar3) / (int)uVar4; + if ((int)uVar4 < (int)uVar2) { + uVar2 = uVar4; + } + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x34) = param_3; + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x38) = param_5; + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x3c) = param_4; + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x40) = param_6; + *(uint *)((&DAT_180073750)[uVar1 * 0x95] + 0x44) = uVar2; + if ((*(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x234) != 0) && + (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0)) { + FUN_18000d110((&DAT_180073750)[uVar1 * 0x95]); + } + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + } + return; + } + /* WARNING: Could not recover jumptable at 0x00018000371f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 180003730 (723 bytes) name=MAG_GetApproximateGray2TemperatureLUT + +undefined8 MAG_GetApproximateGray2TemperatureLUT(uint param_1,longlong param_2,uint param_3) + +{ + byte bVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + longlong lVar7; + longlong lVar8; + ulonglong uVar9; + int iVar10; + uint uVar11; + ulonglong uVar12; + int *piVar13; + int iVar14; + ulonglong uVar15; + byte *pbVar16; + int iVar17; + + /* 0x3730 9 MAG_GetApproximateGray2TemperatureLUT */ + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + uVar9 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar9 * 0x95] != 0) && + (lVar7 = (&DAT_180073750)[uVar9 * 0x95], lVar7 != 0)) && + ((&DAT_180073760)[uVar9 * 0x95] != 0)) && ((&DAT_180073768)[uVar9 * 0x95] != 0)) { + if ((param_2 == 0) || (lVar8 = 0x400, param_3 < 0x400)) { + SetLastError(0xe4ae0001); + } + else if (*(int *)(lVar7 + 0x234) != 0) { + EnterCriticalSection((LPCRITICAL_SECTION)(lVar7 + 0x238)); + lVar7 = (&DAT_180073750)[uVar9 * 0x95]; + iVar2 = *(int *)(lVar7 + 0x44ccc); + iVar3 = *(int *)(lVar7 + 0x44cd0); + if (*(int *)(lVar7 + 0x10) == 0) { + uVar11 = 0; + pbVar16 = (byte *)(lVar7 + 0x454ec); + iVar14 = 0; + do { + bVar1 = *pbVar16; + uVar15 = (ulonglong)(int)uVar11; + if (uVar15 <= bVar1) { + piVar13 = (int *)(param_2 + uVar15 * 4); + for (lVar7 = (bVar1 - uVar15) + 1; lVar7 != 0; lVar7 = lVar7 + -1) { + *piVar13 = iVar14 / 0x3ff + iVar3; + piVar13 = piVar13 + 1; + } + } + iVar14 = iVar14 + (iVar2 - iVar3); + pbVar16 = pbVar16 + 1; + lVar8 = lVar8 + -1; + uVar11 = bVar1 + 1; + } while (lVar8 != 0); + if ((uVar11 < 0x100) && (uVar15 = (ulonglong)(int)uVar11, uVar15 < 0x100)) { + piVar13 = (int *)(param_2 + uVar15 * 4); + for (lVar7 = 0x100 - uVar15; lVar7 != 0; lVar7 = lVar7 + -1) { + *piVar13 = iVar2; + piVar13 = piVar13 + 1; + } + } + } + else { + iVar14 = *(int *)(lVar7 + 0x18); + iVar4 = *(int *)(lVar7 + 0x14); + iVar5 = *(int *)(lVar7 + 0x1c); + iVar6 = *(int *)(lVar7 + 0x20); + uVar12 = 0; + iVar17 = -iVar6; + uVar15 = uVar12; + do { + iVar10 = (int)uVar12; + if (iVar10 < iVar5) { + if (iVar3 < iVar4) { + *(int *)(param_2 + uVar15 * 4) = ((iVar4 - iVar3) * iVar10) / iVar5 + iVar3; + } + else { + *(int *)(param_2 + uVar15 * 4) = iVar4; + } + } + else if ((longlong)iVar6 < (longlong)uVar15) { + if (iVar14 < iVar2) { + *(int *)(param_2 + uVar15 * 4) = ((iVar2 - iVar14) * iVar17) / (0xff - iVar6) + iVar14 + ; + } + else { + *(int *)(param_2 + uVar15 * 4) = iVar14; + } + } + else { + *(int *)(param_2 + uVar15 * 4) = + ((iVar17 + (iVar6 - iVar5)) * (iVar14 - iVar4)) / (iVar6 - iVar5) + iVar4; + } + uVar12 = (ulonglong)(iVar10 + 1U); + iVar17 = iVar17 + 1; + uVar15 = uVar15 + 1; + } while ((int)(iVar10 + 1U) < 0x100); + } + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar9 * 0x95] + 0x238)); + return 1; + } + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003a10 (118 bytes) name=MAG_GetFilteredRaw + +undefined8 MAG_GetFilteredRaw(uint param_1) + +{ + longlong lVar1; + ulonglong uVar2; + + /* 0x3a10 14 MAG_GetFilteredRaw */ + if ((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar2 * 0x95], lVar1 != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) { + if (*(int *)(lVar1 + 0x234) != 0) { + return *(undefined8 *)(lVar1 + 0x270); + } + SetLastError(0xe4ae0006); + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003a90 (149 bytes) name=MAG_GetOutputBMPdata + +undefined8 MAG_GetOutputBMPdata(uint param_1,undefined8 *param_2,longlong *param_3) + +{ + longlong lVar1; + ulonglong uVar2; + + /* 0x3a90 19 MAG_GetOutputBMPdata */ + if ((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar2 * 0x95], lVar1 != 0)) && + ((((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)) && + ((param_2 != (undefined8 *)0x0 && (param_3 != (longlong *)0x0)))))) { + if (*(int *)(lVar1 + 0x234) != 0) { + *param_2 = *(undefined8 *)(lVar1 + 0x220); + *param_3 = (&DAT_180073750)[uVar2 * 0x95] + 0xaf0; + return 1; + } + SetLastError(0xe4ae0006); + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003b30 (315 bytes) name=MAG_GetOutputBMPdata_copy + +undefined8 MAG_GetOutputBMPdata_copy(uint param_1,void *param_2,uint param_3) + +{ + longlong lVar1; + uint uVar2; + undefined8 uVar3; + uint uVar4; + ulonglong uVar5; + + /* 0x3b30 21 MAG_GetOutputBMPdata_copy */ + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + uVar5 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar5 * 0x95] != 0) && + (lVar1 = (&DAT_180073750)[uVar5 * 0x95], lVar1 != 0)) && + ((&DAT_180073760)[uVar5 * 0x95] != 0)) && ((&DAT_180073768)[uVar5 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x234) == 0) { + SetLastError(0xe4ae0006); + return 0; + } + uVar2 = *(int *)(lVar1 + 0xaf8) * *(int *)(lVar1 + 0xaf4); + uVar4 = (int)uVar2 >> 0x1f; + uVar4 = (uVar2 ^ uVar4) - uVar4; + if ((param_2 == (void *)0x0) || (param_3 < uVar4 + 0x428)) { + SetLastError(0xe4ae0001); + uVar3 = 0; + } + else { + memcpy(param_2,(void *)(lVar1 + 0xaf0),0x428); + memcpy((void *)((longlong)param_2 + 0x428),*(void **)((&DAT_180073750)[uVar5 * 0x95] + 0x220), + (ulonglong)uVar4); + uVar3 = 1; + } + return uVar3; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003c70 (362 bytes) name=MAG_GetOutputBMPdataRGB24 + +undefined8 MAG_GetOutputBMPdataRGB24(uint param_1,undefined1 *param_2,uint param_3,int param_4) + +{ + longlong lVar1; + uint uVar2; + ulonglong uVar3; + uint uVar4; + ulonglong uVar5; + byte *pbVar6; + + /* 0x3c70 20 MAG_GetOutputBMPdataRGB24 */ + if ((((param_1 < 0x81) && (uVar5 = (ulonglong)param_1, (&DAT_180073758)[uVar5 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar5 * 0x95], lVar1 != 0)) && + (((&DAT_180073760)[uVar5 * 0x95] != 0 && ((&DAT_180073768)[uVar5 * 0x95] != 0)))) { + if (*(int *)(lVar1 + 0x234) == 0) { + SetLastError(0xe4ae0006); + return 0; + } + pbVar6 = *(byte **)(lVar1 + 0x220); + uVar2 = *(int *)(lVar1 + 0xaf8) * *(int *)(lVar1 + 0xaf4); + uVar4 = (int)uVar2 >> 0x1f; + uVar4 = (uVar2 ^ uVar4) - uVar4; + if ((param_2 != (undefined1 *)0x0) && (uVar4 * 3 <= param_3)) { + if (param_4 == 0) { + if (uVar4 != 0) { + uVar5 = (ulonglong)uVar4; + do { + uVar3 = (ulonglong)*pbVar6; + pbVar6 = pbVar6 + 1; + uVar5 = uVar5 - 1; + *param_2 = *(undefined1 *)(lVar1 + 0xb1a + uVar3 * 4); + param_2[1] = *(undefined1 *)(lVar1 + 0xb19 + uVar3 * 4); + param_2[2] = *(undefined1 *)(lVar1 + 0xb18 + uVar3 * 4); + param_2 = param_2 + 3; + } while (uVar5 != 0); + } + } + else if (uVar4 != 0) { + uVar5 = (ulonglong)uVar4; + do { + uVar3 = (ulonglong)*pbVar6; + pbVar6 = pbVar6 + 1; + uVar5 = uVar5 - 1; + *param_2 = *(undefined1 *)(lVar1 + 0xb18 + uVar3 * 4); + param_2[1] = *(undefined1 *)(lVar1 + 0xb19 + uVar3 * 4); + param_2[2] = *(undefined1 *)(lVar1 + 0xb1a + uVar3 * 4); + param_2 = param_2 + 3; + } while (uVar5 != 0); + return 1; + } + return 1; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003de0 (149 bytes) name=MAG_GetOutputColorBardata + +undefined8 MAG_GetOutputColorBardata(uint param_1,undefined8 *param_2,longlong *param_3) + +{ + longlong lVar1; + ulonglong uVar2; + + /* 0x3de0 22 MAG_GetOutputColorBardata */ + if ((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar2 * 0x95], lVar1 != 0)) && + ((((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)) && + ((param_2 != (undefined8 *)0x0 && (param_3 != (longlong *)0x0)))))) { + if (*(int *)(lVar1 + 0x234) != 0) { + *param_2 = *(undefined8 *)(lVar1 + 0x2b0); + *param_3 = (&DAT_180073750)[uVar2 * 0x95] + 0xf18; + return 1; + } + SetLastError(0xe4ae0006); + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003e80 (315 bytes) name=MAG_GetOutputColorBardata_copy + +undefined8 MAG_GetOutputColorBardata_copy(uint param_1,void *param_2,uint param_3) + +{ + longlong lVar1; + uint uVar2; + undefined8 uVar3; + uint uVar4; + ulonglong uVar5; + + /* 0x3e80 23 MAG_GetOutputColorBardata_copy */ + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + uVar5 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar5 * 0x95] != 0) && + (lVar1 = (&DAT_180073750)[uVar5 * 0x95], lVar1 != 0)) && + ((&DAT_180073760)[uVar5 * 0x95] != 0)) && ((&DAT_180073768)[uVar5 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x234) == 0) { + SetLastError(0xe4ae0006); + return 0; + } + uVar2 = *(int *)(lVar1 + 0xf20) * *(int *)(lVar1 + 0xf1c); + uVar4 = (int)uVar2 >> 0x1f; + uVar4 = (uVar2 ^ uVar4) - uVar4; + if ((param_2 == (void *)0x0) || (param_3 < uVar4 + 0x428)) { + SetLastError(0xe4ae0001); + uVar3 = 0; + } + else { + memcpy(param_2,(void *)(lVar1 + 0xf18),0x428); + memcpy((void *)((longlong)param_2 + 0x428),*(void **)((&DAT_180073750)[uVar5 * 0x95] + 0x2b0), + (ulonglong)uVar4); + uVar3 = 1; + } + return uVar3; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180003fc0 (97 bytes) name=MAG_GetTemperatureData + +undefined8 MAG_GetTemperatureData(uint param_1,int *param_2,ulonglong param_3,int param_4) + +{ + ulonglong uVar1; + undefined8 uVar2; + + /* 0x3fc0 26 MAG_GetTemperatureData */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + uVar2 = FUN_180017670((&DAT_180073750)[uVar1 * 0x95],param_2,param_3,param_4); + return uVar2; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180004030 (431 bytes) name=MAG_GetTemperatureData_Raw + +undefined8 MAG_GetTemperatureData_Raw(uint param_1,int *param_2,ulonglong param_3,int param_4) + +{ + ushort uVar1; + ushort uVar2; + ushort uVar3; + longlong lVar4; + int iVar5; + int iVar6; + DWORD dwErrCode; + ulonglong uVar7; + ushort *puVar8; + ulonglong uVar9; + uint uVar10; + ulonglong uVar11; + + /* 0x4030 27 MAG_GetTemperatureData_Raw */ + if ((((param_1 < 0x81) && (uVar9 = (ulonglong)param_1, (&DAT_180073758)[uVar9 * 0x95] != 0)) && + (lVar4 = (&DAT_180073750)[uVar9 * 0x95], lVar4 != 0)) && + ((((&DAT_180073760)[uVar9 * 0x95] != 0 && ((&DAT_180073768)[uVar9 * 0x95] != 0)) && + ((param_2 != (int *)0x0 && (4 < (uint)param_3)))))) { + if (*(int *)(lVar4 + 0x234) != 0) { + puVar8 = *(ushort **)(lVar4 + 0x270); + iVar5 = *(int *)(lVar4 + 0x44cb4); + uVar1 = puVar8[*(uint *)(lVar4 + 0x44cc4)]; + uVar2 = puVar8[*(uint *)(lVar4 + 0x44cc0)]; + iVar6 = *(int *)(lVar4 + 0x44cb0); + if (param_4 != 0) { + iVar5 = FUN_180015b90(lVar4,iVar5,*(float *)(lVar4 + 0xd4)); + iVar6 = FUN_180015b90(lVar4,iVar6,*(float *)(lVar4 + 0xd4)); + } + uVar11 = param_3 >> 2 & 0x3fffffff; + uVar7 = (ulonglong) + (uint)(*(int *)(&DAT_1800737bc + uVar9 * 0x4a8) * (&DAT_1800737b8)[uVar9 * 0x12a]); + if ((uint)uVar11 < + (uint)(*(int *)(&DAT_1800737bc + uVar9 * 0x4a8) * (&DAT_1800737b8)[uVar9 * 0x12a])) { + uVar7 = uVar11; + } + uVar10 = (uint)uVar7; + if ((uint)uVar1 < (uint)uVar2) { + while (uVar10 != 0) { + uVar3 = *puVar8; + puVar8 = puVar8 + 1; + uVar10 = (int)uVar7 - 1; + uVar7 = (ulonglong)uVar10; + *param_2 = (int)((ulonglong) + ((longlong)(int)((uint)uVar3 - (uint)uVar1) * + (((longlong)(iVar6 - iVar5) << 0x20) / + (longlong)(int)((uint)uVar2 - (uint)uVar1))) >> 0x20) + iVar5; + param_2 = param_2 + 1; + } + } + else if (uVar10 != 0) { + for (; uVar7 != 0; uVar7 = uVar7 - 1) { + *param_2 = iVar5; + param_2 = param_2 + 1; + } + } + return 1; + } + dwErrCode = 0xe4ae0005; + } + else { + dwErrCode = 0xe4ae0001; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800041e0 (139 bytes) name=MAG_GetFixPara + +undefined4 MAG_GetFixPara(uint param_1,void *param_2) + +{ + ulonglong uVar1; + + /* 0x41e0 15 MAG_GetFixPara */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)) && + (param_2 != (void *)0x0)))) { + memcpy(param_2,(void *)((&DAT_180073750)[uVar1 * 0x95] + 0xd0),0x2c); + return *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0xcc); + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180004270 (231 bytes) name=MAG_SetFixPara + +ulonglong MAG_SetFixPara(uint param_1,void *param_2,undefined4 param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + + /* 0x4270 57 MAG_SetFixPara */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)) && + (param_2 != (void *)0x0)))) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0xcc) = param_3; + memcpy((void *)((&DAT_180073750)[uVar1 * 0x95] + 0xd0),param_2,0x2c); + uVar2 = FUN_180014fe0((&DAT_180073750)[uVar1 * 0x95], + (float *)((&DAT_180073750)[uVar1 * 0x95] + 0xd0)); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + } + else { + SetLastError(0xe4ae0001); + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180004360 (74 bytes) name=MAG_SetEXLevel + +void MAG_SetEXLevel(uint param_1,int param_2,int param_3,int param_4) + +{ + ulonglong uVar1; + + /* 0x4360 55 MAG_SetEXLevel */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + FUN_1800183f0((&DAT_180073750)[uVar1 * 0x95],param_2,param_3,param_4); + return; + } + /* WARNING: Could not recover jumptable at 0x0001800043a3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 1800043b0 (90 bytes) name=MAG_GetEXLevel + +undefined4 MAG_GetEXLevel(uint param_1) + +{ + ulonglong uVar1; + + /* 0x43b0 12 MAG_GetEXLevel */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + return *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0x41fe8); + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180004410 (144 bytes) name=MAG_SetDetailEnhancement + +void MAG_SetDetailEnhancement(uint param_1,int param_2,undefined4 param_3) + +{ + ulonglong uVar1; + + /* 0x4410 54 MAG_SetDetailEnhancement */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + if ((param_2 < 0) || (0x20 < param_2)) { + param_2 = 0; + } + *(undefined4 *)((&DAT_180073750)[uVar1 * 0x95] + 0x84) = param_3; + *(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x30) = param_2; + if ((*(int *)((&DAT_180073750)[uVar1 * 0x95] + 0x234) != 0) && + (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0)) { + FUN_18000d110((&DAT_180073750)[uVar1 * 0x95]); + return; + } + } + else { + SetLastError(0xe4ae0001); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800044a0 (155 bytes) name=MAG_FixTemperature + +int MAG_FixTemperature(uint param_1,int param_2,float param_3,uint param_4,uint param_5) + +{ + longlong lVar1; + int iVar2; + ulonglong uVar3; + + /* 0x44a0 7 MAG_FixTemperature */ + if ((((param_1 < 0x81) && (uVar3 = (ulonglong)param_1, (&DAT_180073758)[uVar3 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar3 * 0x95], lVar1 != 0)) && + ((((&DAT_180073760)[uVar3 * 0x95] != 0 && ((&DAT_180073768)[uVar3 * 0x95] != 0)) && + ((param_4 < *(uint *)(&DAT_180073798 + uVar3 * 0x4a8) && + (param_5 < *(uint *)(&DAT_18007379c + uVar3 * 0x4a8))))))) { + if (*(int *)(lVar1 + 0x234) == 0) { + SetLastError(0xe4ae0006); + return param_2; + } + iVar2 = FUN_180015b90(lVar1,param_2,param_3); + return iVar2; + } + SetLastError(0xe4ae0001); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180004540 (91 bytes) name=MAG_GetFrameStatisticalData + +longlong MAG_GetFrameStatisticalData(uint param_1) + +{ + ulonglong uVar1; + + /* 0x4540 16 MAG_GetFrameStatisticalData */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + return (&DAT_180073750)[uVar1 * 0x95] + 0x44c98; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800045a0 (114 bytes) name=MAG_GetTemperatureProbe + +int MAG_GetTemperatureProbe(uint param_1,int param_2,int param_3,int param_4) + +{ + int iVar1; + ulonglong uVar2; + + /* 0x45a0 28 MAG_GetTemperatureProbe */ + if ((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + ((&DAT_180073750)[uVar2 * 0x95] != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) { + iVar1 = FUN_180014e70((&DAT_180073750)[uVar2 * 0x95], + *(int *)(&DAT_180073798 + uVar2 * 0x4a8) * param_3 + param_2,param_4); + return iVar1; + } + SetLastError(0xe4ae0001); + return -0x80000000; +} + + +================================================================== + +### EXPORT FUNC 180004620 (141 bytes) name=MAG_GetLineTemperatureInfo + +ulonglong MAG_GetLineTemperatureInfo + (uint param_1,uint *param_2,ulonglong param_3,int *param_4,uint param_5, + uint param_6,uint param_7,uint param_8) + +{ + ulonglong uVar1; + + /* 0x4620 17 MAG_GetLineTemperatureInfo */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + uVar1 = FUN_1800144c0((&DAT_180073750)[uVar1 * 0x95],param_2,param_3,param_4,param_5,param_6, + param_7,param_8); + return uVar1; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800046b0 (115 bytes) name=MAG_GetLineTemperatureInfo2 + +undefined8 +MAG_GetLineTemperatureInfo2 + (uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + ulonglong uVar1; + undefined8 uVar2; + + /* 0x46b0 18 MAG_GetLineTemperatureInfo2 */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + uVar2 = FUN_180014880((&DAT_180073750)[uVar1 * 0x95],param_2,param_3,param_4,param_5,param_6); + return uVar2; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180004730 (156 bytes) name=MAG_GetRectTemperatureInfo + +undefined8 +MAG_GetRectTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + longlong lVar1; + ulonglong uVar2; + undefined8 uVar3; + + /* 0x4730 24 MAG_GetRectTemperatureInfo */ + if (param_1 < 0x81) { + uVar2 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar2 * 0x95] != 0) && + (lVar1 = (&DAT_180073750)[uVar2 * 0x95], lVar1 != 0)) && + ((&DAT_180073760)[uVar2 * 0x95] != 0)) && ((&DAT_180073768)[uVar2 * 0x95] != 0)) { + if (*(int *)(lVar1 + 0x234) != 0) { + uVar3 = FUN_180013220(lVar1,param_2,param_3,param_4,param_5,param_6); + return uVar3; + } + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x14) != 0) { + return 0; + } + SetLastError(0xe4ae0006); + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800047d0 (1674 bytes) name=MAG_EstimateUnderArmTempFromForeheadRect + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int MAG_EstimateUnderArmTempFromForeheadRect + (uint param_1,uint param_2,uint param_3,ulonglong param_4,uint param_5) + +{ + bool bVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + undefined8 uVar6; + longlong lVar7; + int *piVar8; + int iVar9; + char *pcVar10; + char *pcVar11; + ulonglong uVar12; + bool bVar13; + undefined1 uVar14; + float fVar15; + float fVar16; + undefined1 auStackY_d8 [32]; + int local_98; + int local_90 [6]; + char local_78 [31]; + undefined1 local_59; + ulonglong local_58; + + /* 0x47d0 6 MAG_EstimateUnderArmTempFromForeheadRect */ + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_d8; + bVar13 = param_3 != 0x3c42f5; + uVar12 = (ulonglong)param_1; + iVar9 = (int)param_4; + bVar1 = false; + local_98 = 0; + uVar3 = param_2; + if (bVar13) { + uVar3 = 0; + } + if (param_1 < 0x81) { + if (((((&DAT_180073758)[uVar12 * 0x95] == 0) || ((&DAT_180073750)[uVar12 * 0x95] == 0)) || + ((&DAT_180073760)[uVar12 * 0x95] == 0)) || ((&DAT_180073768)[uVar12 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + goto LAB_180004871; + } + } + else { + SetLastError(0xe4ae0001); +LAB_180004871: + bVar1 = true; + local_98 = 1; + if (bVar13) { + return 0; + } + param_4 = param_4 & 0xffffffff; + uVar12 = 0; + } + local_90[1] = 0; + local_90[2] = 0; + local_90[3] = 0; + local_90[4] = 0; + local_90[0] = 0; + uVar14 = 0; + iVar4 = local_98; + iVar2 = local_98; + iVar5 = local_98; + if (!bVar1) { + if (*(int *)((&DAT_180073750)[uVar12 * 0x95] + 0x234) == 0) { + SetLastError(0xe4ae0006); + return -5; + } + if (bVar13) { + uVar6 = FUN_180013220((&DAT_180073750)[uVar12 * 0x95],param_2,param_3,(uint)param_4,param_5, + local_90); + if ((int)uVar6 == 0) { + SetLastError(0xe4ae0001); + return -1; + } + iVar2 = FUN_180014e70((&DAT_180073750)[uVar12 * 0x95],local_90[4],3); + uVar3 = FUN_180015b90((&DAT_180073750)[uVar12 * 0x95],iVar2, + *(float *)((&DAT_180073750)[uVar12 * 0x95] + 0xd4)); + } + lVar7 = (&DAT_180073750)[uVar12 * 0x95]; + iVar4 = FUN_180015b90(lVar7,*(int *)(lVar7 + 0x44cb8),*(float *)(lVar7 + 0xd4)); + uVar14 = 1; + iVar2 = FUN_180014e70((&DAT_180073750)[uVar12 * 0x95], + *(uint *)((&DAT_180073750)[uVar12 * 0x95] + 0x44cc4),7); + lVar7 = (&DAT_180073750)[uVar12 * 0x95]; + param_4 = (ulonglong)*(uint *)(lVar7 + 0x44cc4); + iVar5 = FUN_180015b90(lVar7,iVar2,*(float *)(lVar7 + 0xd4)); + iVar2 = *(int *)(&DAT_180073800 + uVar12 * 0x4a8); + } + FUN_180032bb0(local_78,&DAT_180058f9c,(ulonglong)(uint)(&DAT_1800737b0)[uVar12 * 0x12a],param_4); + lVar7 = 4; + local_59 = 0; + pcVar10 = local_78; + pcVar11 = "621"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if ((bool)uVar14) { + iVar2 = iVar2 + -12000; + } + else { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "620"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "321"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "210"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "150"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "143"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "170"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "120"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "340"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "320"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "211"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "140"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "130"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "160"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "100"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if (!(bool)uVar14) { + lVar7 = 4; + pcVar10 = local_78; + pcVar11 = "330"; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar14 = *pcVar10 == *pcVar11; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } while ((bool)uVar14); + if ((bool)uVar14) { + iVar2 = iVar2 + -6000; + } + else if ((uint)(&DAT_1800737b8)[uVar12 * 0x12a] < 0x280) { + iVar2 = iVar2 + -8000; + } + else { + iVar2 = iVar2 + -10000; + } + goto LAB_180004bbd; + } + } + } + } + } + } + } + iVar2 = iVar2 + -8000; + goto LAB_180004bbd; + } + } + } + } + } + } + } + iVar2 = iVar2 + -10000; + } +LAB_180004bbd: + if ((iVar5 <= iVar2) && (iVar5 = iVar2, iVar4 < iVar2)) { + iVar5 = iVar4; + } + iVar2 = 15000; + if ((14999 < iVar5) && (iVar2 = iVar5, 40000 < iVar5)) { + iVar2 = 40000; + } + if ((!bVar13) && (iVar9 != 0)) { + piVar8 = (int *)CONCAT44(param_5,iVar9); + if (local_98 == 0) { + *piVar8 = iVar2; + } + else { + iVar2 = *piVar8; + } + } + iVar9 = uVar3 - 500; + if ((uVar3 - 0x6784 < 0x3e81) && ((30999 < iVar9 || (4999 < iVar9 - iVar2)))) { + if (iVar9 < 30000) { + fVar16 = (float)((int)((uVar3 - 0x5014) * 0x7c) / 1000 + 34000); + } + else if (iVar9 < 0x89e4) { + fVar16 = (float)iVar9; + fVar16 = ((fVar16 * _DAT_18005eabc * fVar16 * fVar16 - fVar16 * _DAT_18005eab8 * fVar16) + + fVar16 * _DAT_18005eab4) - _DAT_18005eab0; + } + else { + fVar16 = (float)(int)(uVar3 - 0x8bd8) * _DAT_18005eaac + _DAT_18005eaa8; + } + if (iVar2 < 25000) { + fVar15 = (float)(25000 - iVar2) * _DAT_18005eaa4; + } + else { + fVar15 = (float)(25000 - iVar2) * DAT_18005e728; + } + fVar16 = fVar16 + fVar15; + if (fVar16 <= _DAT_18005eaa0) { + if (fVar16 <= _DAT_18005ea94) { + if (fVar16 <= _DAT_18005ea8c) { + if (fVar16 <= _DAT_18005ea84) { + if (fVar16 <= _DAT_18005ea7c) { + if (fVar16 <= _DAT_18005ea74) { + if (fVar16 <= _DAT_18005ea6c) { + if (fVar16 <= _DAT_18005ea64) { + if (fVar16 <= _DAT_18005ea5c) { + if (DAT_18005ea98 < fVar16) { + fVar16 = fVar16 + (0.0 - DAT_18005e9e8); + } + } + else { + fVar16 = fVar16 + (0.0 - DAT_18005ea9c); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea60); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea68); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea70); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea78); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea80); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea88); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005ea90); + } + } + else { + fVar16 = fVar16 + (0.0 - _DAT_18005e820); + } + fVar16 = fVar16 + (0.0 - DAT_18005ea9c); + if (fVar16 < DAT_18005ea98) { + fVar16 = (fVar16 - DAT_18005ea98) * DAT_18005e704 + DAT_18005ea98; + } + iVar9 = (int)fVar16; + } + return iVar9; +} + + +================================================================== + +### EXPORT FUNC 180004e60 (559 bytes) name=MAG_ConvertIrCorr2VisCorr + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +MAG_ConvertIrCorr2VisCorr + (uint param_1,int param_2,int param_3,float param_4,int *param_5,int *param_6) + +{ + ulonglong uVar1; + longlong lVar2; + float fVar3; + float fVar4; + float fVar5; + + /* 0x4e60 1 MAG_ConvertIrCorr2VisCorr */ + if (param_1 < 0x81) { + uVar1 = (ulonglong)param_1; + lVar2 = uVar1 * 0x4a8; + if (((((&DAT_180073758)[uVar1 * 0x95] != 0) && ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((&DAT_180073760)[uVar1 * 0x95] != 0)) && ((&DAT_180073768)[uVar1 * 0x95] != 0)) { + if (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + if (((param_5 != (int *)0x0) && (param_6 != (int *)0x0)) && (0.0 <= param_4)) { + if (((*(uint *)(&DAT_180073bac + lVar2) != 0) && (*(uint *)(&DAT_180073bb0 + lVar2) != 0)) + && ((DAT_18005e9e0 <= *(float *)(&DAT_180073bbc + lVar2) && + (*(float *)(&DAT_180073bbc + lVar2) <= _DAT_18005e9ec)))) { + fVar4 = (float)param_2 - (float)(uint)(&DAT_1800737b8)[uVar1 * 0x12a] * DAT_18005e704; + fVar5 = (float)param_3 - (float)*(uint *)(&DAT_1800737bc + lVar2) * DAT_18005e704; + if (0.0 < param_4) { + fVar3 = *(float *)(&DAT_180073bd0 + lVar2); + if (DAT_18005e9e4 < fVar3) { + if (param_4 < DAT_18005e9e4) { + param_4 = DAT_18005e9e4; + } + fVar3 = (param_4 - fVar3) / (fVar3 * param_4); + fVar4 = fVar4 + fVar3 * *(float *)(&DAT_180073bd4 + lVar2); + fVar5 = fVar5 + fVar3 * *(float *)(&DAT_180073bd8 + lVar2); + } + } + fVar5 = fVar5 / *(float *)(&DAT_180073bbc + lVar2); + fVar4 = fVar4 / *(float *)(&DAT_180073bbc + lVar2); + fVar3 = ((fVar5 - *(float *)(&DAT_180073bc8 + lVar2) * fVar4) - + (float)*(int *)(&DAT_180073bb8 + lVar2)) + + (float)(*(uint *)(&DAT_180073bb0 + lVar2) >> 1) + DAT_18005ea58; + *param_5 = (int)(((*(float *)(&DAT_180073bc8 + lVar2) * fVar5 + fVar4) - + (float)*(int *)(&DAT_180073bb4 + lVar2)) + + (float)(*(uint *)(&DAT_180073bac + lVar2) >> 1) + DAT_18005ea58); + *param_6 = (int)fVar3; + return 1; + } + SetLastError(0xe4ae000b); + return 0; + } + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180005090 (566 bytes) name=MAG_ConvertVisCorr2IrCorr + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +MAG_ConvertVisCorr2IrCorr + (uint param_1,int param_2,int param_3,float param_4,int *param_5,int *param_6) + +{ + ulonglong uVar1; + longlong lVar2; + float fVar3; + float fVar4; + float fVar5; + + /* 0x5090 2 MAG_ConvertVisCorr2IrCorr */ + if (param_1 < 0x81) { + uVar1 = (ulonglong)param_1; + lVar2 = uVar1 * 0x4a8; + if (((((&DAT_180073758)[uVar1 * 0x95] != 0) && ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + ((&DAT_180073760)[uVar1 * 0x95] != 0)) && ((&DAT_180073768)[uVar1 * 0x95] != 0)) { + if (*(int *)((&DAT_180073758)[uVar1 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + if (((*(uint *)(&DAT_180073bac + lVar2) == 0) || (*(uint *)(&DAT_180073bb0 + lVar2) == 0)) || + ((*(float *)(&DAT_180073bbc + lVar2) < DAT_18005e9e0 || + (_DAT_18005e9ec < *(float *)(&DAT_180073bbc + lVar2))))) { + SetLastError(0xe4ae000b); + return 0; + } + if (((param_5 != (int *)0x0) && (param_6 != (int *)0x0)) && (0.0 <= param_4)) { + fVar4 = ((float)param_2 - (float)*(uint *)(&DAT_180073bac + lVar2) * DAT_18005e704) + + (float)*(int *)(&DAT_180073bb4 + lVar2); + fVar3 = ((float)param_3 - (float)*(uint *)(&DAT_180073bb0 + lVar2) * DAT_18005e704) + + (float)*(int *)(&DAT_180073bb8 + lVar2); + fVar5 = (*(float *)(&DAT_180073bc8 + lVar2) * fVar4 + fVar3) * + *(float *)(&DAT_180073bbc + lVar2); + fVar3 = (fVar4 - *(float *)(&DAT_180073bc8 + lVar2) * fVar3) * + *(float *)(&DAT_180073bbc + lVar2); + if (0.0 < param_4) { + fVar4 = *(float *)(&DAT_180073bd0 + lVar2); + if (DAT_18005e9e4 < fVar4) { + if (param_4 < DAT_18005e9e4) { + param_4 = DAT_18005e9e4; + } + fVar4 = (param_4 - fVar4) / (fVar4 * param_4); + fVar3 = fVar3 + (0.0 - fVar4 * *(float *)(&DAT_180073bd4 + lVar2)); + fVar5 = fVar5 + (0.0 - fVar4 * *(float *)(&DAT_180073bd8 + lVar2)); + } + } + fVar4 = (float)(*(uint *)(&DAT_1800737bc + lVar2) >> 1) + fVar5 + DAT_18005ea58; + *param_5 = (int)((float)((uint)(&DAT_1800737b8)[uVar1 * 0x12a] >> 1) + fVar3 + DAT_18005ea58 + ); + *param_6 = (int)fVar4; + return 1; + } + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800052d0 (115 bytes) name=MAG_GetEllipseTemperatureInfo + +undefined8 +MAG_GetEllipseTemperatureInfo + (uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + ulonglong uVar1; + undefined8 uVar2; + + /* 0x52d0 13 MAG_GetEllipseTemperatureInfo */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + uVar2 = FUN_180013510((&DAT_180073750)[uVar1 * 0x95],param_2,param_3,param_4,param_5,param_6); + return uVar2; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180005350 (97 bytes) name=MAG_GetRgnTemperatureInfo + +undefined8 MAG_GetRgnTemperatureInfo(uint param_1,uint *param_2,uint param_3,int *param_4) + +{ + ulonglong uVar1; + undefined8 uVar2; + + /* 0x5350 25 MAG_GetRgnTemperatureInfo */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + uVar2 = FUN_180014c50((&DAT_180073750)[uVar1 * 0x95],param_2,param_3,param_4); + return uVar2; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800053c0 (88 bytes) name=MAG_SaveBMP + +undefined8 MAG_SaveBMP(uint param_1,int param_2,short *param_3) + +{ + ulonglong uVar1; + undefined8 uVar2; + + /* 0x53c0 48 MAG_SaveBMP */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + uVar2 = FUN_180012b30((&DAT_180073750)[uVar1 * 0x95],param_2,param_3); + return uVar2; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180005420 (83 bytes) name=MAG_LockFrame + +void MAG_LockFrame(uint param_1) + +{ + ulonglong uVar1; + + /* 0x5420 46 MAG_LockFrame */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + /* WARNING: Could not recover jumptable at 0x000180005460. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + return; + } + /* WARNING: Could not recover jumptable at 0x00018000546c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 180005480 (83 bytes) name=MAG_UnLockFrame + +void MAG_UnLockFrame(uint param_1) + +{ + ulonglong uVar1; + + /* 0x5480 65 MAG_UnLockFrame */ + if ((((param_1 < 0x81) && (uVar1 = (ulonglong)param_1, (&DAT_180073758)[uVar1 * 0x95] != 0)) && + ((&DAT_180073750)[uVar1 * 0x95] != 0)) && + (((&DAT_180073760)[uVar1 * 0x95] != 0 && ((&DAT_180073768)[uVar1 * 0x95] != 0)))) { + /* WARNING: Could not recover jumptable at 0x0001800054c0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar1 * 0x95] + 0x238)); + return; + } + /* WARNING: Could not recover jumptable at 0x0001800054cc. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; +} + + +================================================================== + +### EXPORT FUNC 1800054e0 (940 bytes) name=MAG_SaveDDT + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +bool MAG_SaveDDT(uint param_1,short *param_2) + +{ + int *piVar1; + short sVar2; + ulonglong uVar3; + int iVar4; + undefined **ppuVar5; + longlong lVar6; + HMODULE pHVar7; + longlong *plVar8; + undefined8 *puVar9; + longlong *plVar10; + int iVar11; + short *psVar12; + short *psVar13; + void *pvVar14; + ulonglong uVar15; + undefined1 uVar16; + undefined1 auStackY_438 [32]; + void *local_3f8; + longlong local_3f0; + longlong local_3e8; + longlong *local_3e0; + longlong local_3d8 [2]; + CDialog local_3c8 [912]; + ulonglong local_38; + + /* 0x54e0 49 MAG_SaveDDT */ + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_438; + uVar15 = (ulonglong)param_1; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return false; + } + if (((((&DAT_180073758)[uVar15 * 0x95] == 0) || ((&DAT_180073750)[uVar15 * 0x95] == 0)) || + ((&DAT_180073760)[uVar15 * 0x95] == 0)) || ((&DAT_180073768)[uVar15 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + return false; + } + if (*(int *)((&DAT_180073750)[uVar15 * 0x95] + 0x234) == 0) { + SetLastError(0xe4ae0006); + return false; + } + ppuVar5 = FUN_18001fcc0(); + if (ppuVar5 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar6 = (**(code **)(*ppuVar5 + 0x18))(ppuVar5); + pvVar14 = (void *)(lVar6 + 0x18); + iVar11 = 0; + local_3f8 = pvVar14; + if (param_2 != (short *)0x0) { + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar7 = (HMODULE)FUN_18001fcac(); + if (pHVar7 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_3f8,pHVar7,(uint)param_2 & 0xffff); + pvVar14 = local_3f8; + } + goto LAB_180005623; + } + lVar6 = -1; + psVar12 = param_2; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + sVar2 = *psVar12; + psVar12 = psVar12 + 1; + } while (sVar2 != 0); + iVar11 = ~(uint)lVar6 - 1; + } + FUN_18000b480((longlong *)&local_3f8,param_2,iVar11); + pvVar14 = local_3f8; +LAB_180005623: + if (*(int *)((longlong)pvVar14 + -0x10) == 0) { + FUN_18001f670(local_3c8,0,&DAT_18006e870,(short *)0x0,6, + u_Magnity_Device_Dependent_Tempera_18006e880,(CWnd *)0x0,0); + lVar6 = FUN_18001f450(local_3c8); + if (lVar6 != 1) { + SetLastError(0xe4ae0003); + FUN_18001f5c8((CWnd *)local_3c8); + LOCK(); + piVar1 = (int *)((longlong)pvVar14 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)pvVar14 + -0x18) + 8))(); + } + return false; + } + plVar8 = FUN_18001f980((longlong)local_3c8,local_3d8); + FUN_18000b390((longlong *)&local_3f8,plVar8); + LOCK(); + piVar1 = (int *)(local_3d8[0] + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + uVar16 = iVar11 == 1; + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)(local_3d8[0] + -0x18) + 8))(); + } + plVar8 = FUN_18000a7c0((longlong *)&local_3f8,&local_3e8,4); + plVar8 = FUN_18000a950(plVar8,&local_3f0,1); + lVar6 = 2; + psVar12 = (short *)*plVar8; + psVar13 = &DAT_180058fe0; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + uVar16 = *psVar12 == *psVar13; + psVar12 = psVar12 + 1; + psVar13 = psVar13 + 1; + } while ((bool)uVar16); + LOCK(); + piVar1 = (int *)(local_3f0 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)(local_3f0 + -0x18) + 8))(); + } + LOCK(); + piVar1 = (int *)(local_3e8 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)(local_3e8 + -0x18) + 8))(); + } + if (!(bool)uVar16) { + FUN_18000a600((longlong *)&local_3f8,".ddt"); + } + FUN_18001f5c8((CWnd *)local_3c8); + pvVar14 = local_3f8; + } + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar15 * 0x95] + 0x238)); + plVar8 = (longlong *)((longlong)pvVar14 + -0x18); + puVar9 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar14 + -0x18) + 0x20))(); + if ((*(int *)((longlong)pvVar14 + -8) < 0) || (puVar9 != (undefined8 *)*plVar8)) { + plVar10 = (longlong *)(**(code **)*puVar9)(puVar9,*(undefined4 *)((longlong)pvVar14 + -0x10),2); + if (plVar10 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(plVar10 + 1) = *(undefined4 *)((longlong)pvVar14 + -0x10); + uVar3 = (longlong)(*(int *)((longlong)pvVar14 + -0x10) + 1) * 2; + FUN_180032c60((ulonglong *)(plVar10 + 3),uVar3,pvVar14,uVar3); + } + else { + LOCK(); + *(int *)((longlong)pvVar14 + -8) = *(int *)((longlong)pvVar14 + -8) + 1; + UNLOCK(); + plVar10 = plVar8; + } + local_3e0 = plVar10 + 3; + iVar4 = FUN_1800081d0(param_1,(void *)0x0,(longlong *)&local_3e0); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar15 * 0x95] + 0x238)); + LOCK(); + piVar1 = (int *)((longlong)pvVar14 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(*(longlong *)*plVar8 + 8))((longlong *)*plVar8,plVar8); + } + return 0 < iVar4; +} + + +================================================================== + +### EXPORT FUNC 180005890 (246 bytes) name=MAG_SaveDDT2Buffer + +int MAG_SaveDDT2Buffer(uint param_1,void *param_2,ulonglong param_3) + +{ + longlong lVar1; + int iVar2; + longlong *plVar3; + DWORD dwErrCode; + ulonglong uVar4; + longlong local_res20; + + /* 0x5890 50 MAG_SaveDDT2Buffer */ + uVar4 = (ulonglong)param_1; + if ((((param_1 < 0x81) && ((&DAT_180073758)[uVar4 * 0x95] != 0)) && + (lVar1 = (&DAT_180073750)[uVar4 * 0x95], lVar1 != 0)) && + ((((&DAT_180073760)[uVar4 * 0x95] != 0 && ((&DAT_180073768)[uVar4 * 0x95] != 0)) && + ((param_2 != (void *)0x0 && + ((ulonglong) + (uint)(*(int *)(&DAT_18007379c + uVar4 * 0x4a8) * *(int *)(&DAT_180073798 + uVar4 * 0x4a8)) + * 2 + 0x40c <= (param_3 & 0xffffffff))))))) { + if (*(int *)(lVar1 + 0x234) != 0) { + EnterCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x238)); + plVar3 = FUN_18000b610(&local_res20,(short *)&DAT_18005911c); + iVar2 = FUN_1800081d0(param_1,param_2,plVar3); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar4 * 0x95] + 0x238)); + if (iVar2 < 1) { + return 0; + } + return iVar2; + } + dwErrCode = 0xe4ae0006; + } + else { + dwErrCode = 0xe4ae0001; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180005990 (675 bytes) name=MAG_LoadDDT + +ulonglong MAG_LoadDDT(uint param_1,undefined8 param_2,LPCWSTR param_3,undefined *param_4, + undefined8 param_5) + +{ + DWORD DVar1; + undefined8 uVar2; + __uint64 _Var3; + LPVOID pvVar4; + ulonglong uVar5; + longlong lVar6; + size_t sVar7; + longlong local_188 [4]; + undefined8 local_168 [3]; + undefined8 local_150; + int local_148; + DWORD local_144 [35]; + int local_b8; + int local_b4 [39]; + + /* 0x5990 37 MAG_LoadDDT */ + local_150 = 0xfffffffffffffffe; + uVar5 = (ulonglong)param_1; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + lVar6 = uVar5 * 0x4a8; + if (((((&DAT_180073758)[uVar5 * 0x95] == 0) || ((&DAT_180073750)[uVar5 * 0x95] == 0)) || + ((&DAT_180073760)[uVar5 * 0x95] == 0)) || ((&DAT_180073768)[uVar5 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + return 0; + } + if (*(int *)((&DAT_180073758)[uVar5 * 0x95] + 0x14) != 0) { + SetLastError(0xe4ae0003); + return 0; + } + FUN_180020138(local_188); + uVar2 = FUN_180020a6c((longlong)local_188,param_3,0x30,0); + if ((int)uVar2 == 0) { + SetLastError(0xe4ae0009); + FUN_1800203a4((CFile *)local_188); + return 0; + } + _Var3 = CFile::GetLength((CFile *)local_188); + sVar7 = _Var3 & 0xffffffff; + if (0x600374 < (uint)_Var3) { + sVar7 = 0x600374; + } + if (*(LPVOID *)(&DAT_180073788 + lVar6) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar6)); + *(undefined8 *)(&DAT_180073788 + lVar6) = 0; + } + pvVar4 = thunk_FUN_18001eb74(sVar7); + *(LPVOID *)(&DAT_180073788 + lVar6) = pvVar4; + if (pvVar4 == (LPVOID)0x0) { + CFile::Close((CFile *)local_188); + SetLastError(0xe4ae0002); + FUN_1800203a4((CFile *)local_188); + return 0; + } + FUN_18001ef2c(local_168); + _Var3 = CFile::GetLength((CFile *)local_188); + CFile::Seek((CFile *)local_188,_Var3 - 0x98,0); + local_b8 = 0; + FUN_1800357d0((ulonglong *)local_b4,0,0x94); + FUN_18001fd6c((longlong)local_188,&local_b8,0x98); + if (local_b8 == 0x5bb5b57b) { + CFile::Seek((CFile *)local_188,(longlong)local_b4[0],0); + local_148 = 0; + FUN_1800357d0((ulonglong *)local_144,0,0x84); + FUN_18001fd6c((longlong)local_188,&local_148,0x88); + if (local_148 == 0x5bb5b55b) goto LAB_180005bac; + } + (**(code **)(local_188[0] + 0x50))(local_188,0,0); + local_144[0] = (DWORD)sVar7; +LAB_180005bac: + DVar1 = FUN_18001fd6c((longlong)local_188,*(LPVOID *)(&DAT_180073788 + lVar6),local_144[0]); + FUN_18001ef94(); + CFile::Close((CFile *)local_188); + uVar5 = MAG_LoadBufferedDDT(param_1,param_2,*(void **)(&DAT_180073788 + lVar6),(ulonglong)DVar1, + param_4,param_5); + FUN_1800203a4((CFile *)local_188); + return uVar5 & 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180005c50 (24 bytes) name=Unwind@180005c50 + +void Unwind_180005c50(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180005c70 (24 bytes) name=Unwind@180005c70 + +void Unwind_180005c70(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 180005c90 (57 bytes) name=Catch@180005c90 + +undefined * Catch_180005c90(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0x58) = *(undefined8 *)(param_2 + 0x60); + CFile::Close((CFile *)(param_2 + 0x30)); + SetLastError(0xe4ae0009); + return &DAT_180005c04; +} + + +================================================================== + +### EXPORT FUNC 180005cd0 (1660 bytes) name=MAG_LoadBufferedDDT + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +MAG_LoadBufferedDDT(uint param_1,ulonglong param_2,void *param_3,ulonglong param_4, + undefined *param_5,undefined8 param_6) + +{ + uint uVar1; + longlong lVar2; + int iVar3; + DWORD dwErrCode; + uint *in_RDX; + ulonglong uVar4; + ulonglong uVar5; + longlong lVar6; + undefined8 uVar7; + undefined1 auStackY_428 [32]; + uint local_3f8; + uint local_3f4; + uint local_3f0; + uint local_3ec; + uint local_3e8; + uint local_3e4; + undefined4 local_3e0; + undefined4 local_3dc; + undefined4 local_3d8; + undefined4 local_3d4; + int local_3c8; + int iStack_3c4; + uint local_3c0; + uint uStack_3bc; + uint local_3b8; + undefined4 local_3b4; + int local_3b0; + undefined4 local_3ac; + undefined4 local_3a8; + undefined4 local_3a4; + undefined4 local_3a0; + undefined4 local_39c; + char local_398 [32]; + char local_378 [32]; + undefined8 local_358; + undefined4 local_350; + undefined4 local_34c; + undefined8 local_348; + undefined8 local_340; + CHAR local_338 [556]; + undefined4 local_10c; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc; + uint 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_74; + undefined4 local_70; + int local_6c; + undefined4 local_68; + int local_64; + int local_60; + int local_5c; + int local_58; + ulonglong local_48; + + /* 0x5cd0 36 MAG_LoadBufferedDDT */ + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_428; + uVar4 = param_4 & 0xffffffff; + uVar5 = (ulonglong)param_1; + if (param_1 < 0x81) { + lVar6 = uVar5 * 0x4a8; + if (((((((&DAT_180073758)[uVar5 * 0x95] != 0) && ((&DAT_180073750)[uVar5 * 0x95] != 0)) && + ((&DAT_180073760)[uVar5 * 0x95] != 0)) && + (((&DAT_180073768)[uVar5 * 0x95] != 0 && (in_RDX != (uint *)0x0)))) && ((*in_RDX & 3) == 0) + ) && ((((in_RDX[2] & 3) == 0 && ((in_RDX[4] & 3) == 0)) && (*in_RDX <= in_RDX[2])))) { + if (((((in_RDX[1] <= in_RDX[3]) && (in_RDX[1] != 0)) && (in_RDX[3] != 0)) && + ((in_RDX[5] != 0 && (param_3 != (void *)0x0)))) && (0x374 < (uint)param_4)) { + if (*(int *)((&DAT_180073758)[uVar5 * 0x95] + 0x14) == 0) { + *(undefined8 *)(&DAT_180073770 + lVar6) = param_6; + memcpy(&local_3c8,param_3,0x374); + if (local_3c8 == 0x374) { + if ((local_3c0 != *in_RDX) || (uStack_3bc != in_RDX[1])) { + *in_RDX = local_3c0; + in_RDX[2] = local_3c0; + in_RDX[4] = 0x10; + in_RDX[1] = uStack_3bc; + in_RDX[3] = uStack_3bc; + in_RDX[5] = uStack_3bc; + } + *(uint *)(&DAT_180073798 + lVar6) = *in_RDX; + *(uint *)(&DAT_18007379c + lVar6) = in_RDX[1]; + *(uint *)(&DAT_1800737a0 + lVar6) = in_RDX[2]; + *(uint *)(&DAT_1800737a4 + lVar6) = in_RDX[3]; + *(uint *)(&DAT_1800737a8 + lVar6) = in_RDX[4]; + *(uint *)(&DAT_1800737ac + lVar6) = in_RDX[5]; + if ((((iStack_3c4 == 0x10003) || (iStack_3c4 == 0x10002)) || (iStack_3c4 == 0x10000)) || + (iStack_3c4 == 0x10001)) { + if ((DAT_180073744 != 0) && (local_58 != DAT_180073744)) { + dwErrCode = 0xe4ae000c; + goto LAB_180006322; + } + if ((ulonglong)(uStack_3bc * local_3c0) * 2 + 0x374 <= uVar4) { + *(int *)(&DAT_1800737b4 + lVar6) = local_58; + (&DAT_1800737b0)[uVar5 * 0x12a] = local_350; + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar5 * 0x12a),0,0x48); + (&DAT_1800737b8)[uVar5 * 0x12a] = *in_RDX; + *(uint *)(&DAT_1800737bc + lVar6) = in_RDX[1]; + *(uint *)(&DAT_1800737f8 + lVar6) = in_RDX[2]; + uVar1 = in_RDX[3]; + *(undefined4 *)(&DAT_1800737f0 + lVar6) = 1; + *(uint *)(&DAT_1800737fc + lVar6) = uVar1; + *(undefined4 *)(&DAT_1800737f4 + lVar6) = 1; + *(undefined4 *)(&DAT_1800737c0 + lVar6) = local_3a0; + *(undefined4 *)(&DAT_1800737c4 + lVar6) = local_39c; + strncpy(&DAT_1800737c8 + lVar6,local_378,0x20); + (&DAT_1800737e7)[lVar6] = 0; + strncpy(&DAT_1800737e8 + lVar6,local_398,8); + *(undefined8 *)(&DAT_180073818 + lVar6) = local_348; + *(int *)(&DAT_180073800 + lVar6) = local_3b0; + *(undefined8 *)(&DAT_180073820 + lVar6) = local_340; + *(undefined4 *)(&DAT_180073828 + lVar6) = local_34c; + *(undefined4 *)(&DAT_180073804 + lVar6) = local_3ac; + uVar7 = 0x374; + *(undefined4 *)(&DAT_180073808 + lVar6) = local_3a8; + (&DAT_1800737ef)[lVar6] = 0; + *(undefined4 *)(&DAT_18007380c + lVar6) = local_3a4; + *(undefined8 *)(&DAT_180073810 + lVar6) = local_358; + memcpy((void *)(lVar6 + 0x18007382c),&local_3c8,0x374); + local_3f4 = in_RDX[1]; + local_3f8 = *in_RDX; + local_3f0 = in_RDX[2]; + local_3ec = in_RDX[3]; + local_3e8 = in_RDX[4]; + local_3e4 = in_RDX[5]; + local_3e0 = 4; + local_3dc = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 8) = 0; + local_3d8 = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xc) = 0; + local_3d4 = 5; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x6c) = 1; + if (0x10001 < iStack_3c4) { + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x24) = local_dc; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x48) = local_d8; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x4c) = local_d4; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x10) = local_f0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x14) = local_ec; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x18) = local_e8; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x1c) = local_e4; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x20) = local_e0; + lVar2 = (&DAT_180073750)[uVar5 * 0x95]; + *(undefined4 *)(&DAT_180073780 + lVar6) = local_10c; + FUN_18000d5f0(lVar2,local_10c); + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xd4) = local_104; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xd8) = local_100; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xf4) = local_fc; + param_2 = (ulonglong)local_f8; + *(uint *)((&DAT_180073750)[uVar5 * 0x95] + 0xf8) = local_f8; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xd0) = local_f4; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xdc) = 0x3ecccccd; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xf0) = 0; + } + FUN_180014fe0((&DAT_180073750)[uVar5 * 0x95], + (float *)((&DAT_180073750)[uVar5 * 0x95] + 0xd0)); + iVar3 = FUN_18000bce0((&DAT_180073750)[uVar5 * 0x95],&local_3f8); + if (iVar3 != 0) { + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 100) = local_68; + FUN_180015500((&DAT_180073750)[uVar5 * 0x95],local_64); + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xa4) = local_74; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0xa8) = local_70; + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x5c) = local_3ac; + *(int *)((&DAT_180073750)[uVar5 * 0x95] + 0x60) = local_3b0; + if ((local_60 == 0) || (local_5c == 0)) { + *(undefined4 *)((&DAT_180073750)[uVar5 * 0x95] + 0x54) = local_3ac; + local_5c = local_3b0; + } + else { + *(int *)((&DAT_180073750)[uVar5 * 0x95] + 0x54) = local_60; + } + *(int *)((&DAT_180073750)[uVar5 * 0x95] + 0x58) = local_5c; + FUN_180018a20((&DAT_180073750)[uVar5 * 0x95],local_338,uVar7,param_4); + uVar7 = FUN_180018d50((&DAT_180073750)[uVar5 * 0x95],local_6c,local_3b8,local_3b4) + ; + if ((int)uVar7 != 0) { + FUN_18000ca30((&DAT_180073750)[uVar5 * 0x95],param_2,1,1,1); + if (param_5 != (undefined *)0x0) { + (*(code *)param_5)(uVar5,local_3b0,0,0); + } + return 1; + } + } + goto LAB_180005dc9; + } + } + goto LAB_18000631d; + } + } +LAB_180005dc9: + dwErrCode = 0xe4ae0003; + goto LAB_180006322; + } + } + } +LAB_18000631d: + dwErrCode = 0xe4ae0001; +LAB_180006322: + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180006350 (877 bytes) name=MAG_LocalStorageAviStart + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 MAG_LocalStorageAviStart(uint param_1,short *param_2,uint param_3) + +{ + int *piVar1; + short sVar2; + undefined4 uVar3; + undefined **ppuVar4; + longlong lVar5; + HMODULE pHVar6; + longlong lVar7; + longlong *plVar8; + int iVar9; + ulonglong uVar10; + longlong lVar11; + short *psVar12; + short *psVar13; + ulonglong uVar14; + undefined1 uVar15; + undefined1 auStackY_438 [32]; + longlong local_3f8; + longlong local_3f0; + longlong local_3e8; + longlong local_3e0; + CDialog local_3d8 [912]; + ulonglong local_48; + + /* 0x6350 39 MAG_LocalStorageAviStart */ + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_438; + uVar14 = (ulonglong)param_3; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + uVar10 = (ulonglong)param_1; + lVar11 = uVar10 * 0x4a8; + if (((((&DAT_180073758)[uVar10 * 0x95] == 0) || ((&DAT_180073750)[uVar10 * 0x95] == 0)) || + ((&DAT_180073760)[uVar10 * 0x95] == 0)) || ((&DAT_180073768)[uVar10 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + return 0; + } + if (*(int *)(&DAT_180073778 + lVar11) == 0) { + SetLastError(0xe4ae0006); + return 0; + } + if (*(int *)((&DAT_180073760)[uVar10 * 0x95] + 0x44) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(); + lVar5 = lVar5 + 0x18; + local_3f8 = lVar5; + if (param_2 == (short *)0x0) { + iVar9 = 0; + } + else { + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar6 = (HMODULE)FUN_18001fcac(); + if (pHVar6 != (HMODULE)0x0) { + FUN_18000af50(&local_3f8,pHVar6,(uint)param_2 & 0xffff); + lVar5 = local_3f8; + } + goto LAB_1800064a6; + } + lVar5 = -1; + psVar12 = param_2; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + sVar2 = *psVar12; + psVar12 = psVar12 + 1; + } while (sVar2 != 0); + iVar9 = ~(uint)lVar5 - 1; + } + FUN_18000b480(&local_3f8,param_2,iVar9); + lVar5 = local_3f8; +LAB_1800064a6: + if (*(int *)(lVar5 + -0x10) == 0) { + FUN_18001f670(local_3d8,0,&DAT_180059048,(short *)0x0,6, + L"AVI Files(*.avi)|*.avi|All Files(*.*)|*.*||",(CWnd *)0x0,0); + lVar7 = FUN_18001f450(local_3d8); + if (lVar7 != 1) { + SetLastError(0xe4ae0003); + FUN_18001f5c8((CWnd *)local_3d8); + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar9 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar9 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + return 0; + } + plVar8 = FUN_18001f980((longlong)local_3d8,&local_3e0); + FUN_18000b390(&local_3f8,plVar8); + LOCK(); + piVar1 = (int *)(local_3e0 + -8); + iVar9 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + uVar15 = iVar9 == 1; + if (iVar9 + -1 < 1) { + (**(code **)(**(longlong **)(local_3e0 + -0x18) + 8))(); + } + plVar8 = FUN_18000a7c0(&local_3f8,&local_3e8,4); + plVar8 = FUN_18000a950(plVar8,&local_3f0,1); + lVar5 = 2; + psVar12 = (short *)*plVar8; + psVar13 = &DAT_180058fe0; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + uVar15 = *psVar12 == *psVar13; + psVar12 = psVar12 + 1; + psVar13 = psVar13 + 1; + } while ((bool)uVar15); + LOCK(); + piVar1 = (int *)(local_3f0 + -8); + iVar9 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar9 + -1 < 1) { + (**(code **)(**(longlong **)(local_3f0 + -0x18) + 8))(); + } + LOCK(); + piVar1 = (int *)(local_3e8 + -8); + iVar9 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar9 + -1 < 1) { + (**(code **)(**(longlong **)(local_3e8 + -0x18) + 8))(); + } + if (!(bool)uVar15) { + FUN_18000a600(&local_3f8,".avi"); + } + FUN_18001f5c8((CWnd *)local_3d8); + lVar5 = local_3f8; + } + if (param_3 == 0) { + uVar14 = 1; + } + if ((*(int *)(&DAT_18007377c + lVar11) == 2) && + ((void *)((&DAT_180073750)[uVar10 * 0x95] + 0x6c8) != (void *)0x0)) { + FUN_180001730((&DAT_180073760)[uVar10 * 0x95],lVar5, + (uint)(*(uint *)(&DAT_1800737f4 + lVar11) / uVar14),(int)uVar14, + (void *)((&DAT_180073750)[uVar10 * 0x95] + 0x6c8)); + } + uVar3 = *(undefined4 *)((&DAT_180073760)[uVar10 * 0x95] + 0x44); + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar9 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar9 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 1800066c0 (242 bytes) name=MAG_LocalStorageAviStop + +void MAG_LocalStorageAviStop(uint param_1) + +{ + longlong lVar1; + ulonglong uVar2; + + /* 0x66c0 40 MAG_LocalStorageAviStop */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x0001800066d5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar2 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar2 * 0x95] == 0) || ((&DAT_180073750)[uVar2 * 0x95] == 0)) || + (lVar1 = (&DAT_180073760)[uVar2 * 0x95], lVar1 == 0)) || ((&DAT_180073768)[uVar2 * 0x95] == 0) + ) { + SetLastError(0xe4ae0001); + } + else if (*(int *)(lVar1 + 0x44) != 0) { + FUN_180001470(lVar1 + 8); + *(undefined4 *)(lVar1 + 0x40) = 0; + *(undefined4 *)(lVar1 + 0x44) = 0; + if (*(longlong *)(lVar1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(lVar1 + 0x50) = 0; + } + if (*(longlong *)(lVar1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(lVar1 + 0x48) = 0; + } + if (*(longlong *)(lVar1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(lVar1 + 0x58) = 0; + } + AVIFileExit(); + /* WARNING: Could not recover jumptable at 0x000180006799. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8); + return; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800067c0 (1384 bytes) name=MAG_LocalStorageMgsRecord + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 MAG_LocalStorageMgsRecord(uint param_1,short *param_2,uint param_3) + +{ + int *piVar1; + void *_Src; + undefined4 uVar2; + int iVar3; + longlong lVar4; + longlong *plVar5; + ulonglong uVar6; + longlong lVar7; + uint uVar8; + short *psVar9; + ulonglong uVar10; + short *psVar11; + undefined1 uVar12; + undefined1 auStackY_858 [32]; + short *local_818; + longlong local_810; + longlong local_808; + longlong local_800; + undefined4 local_7f8; + undefined4 local_7f4; + __time64_t local_7f0; + char local_7e8 [32]; + char local_7c8 [32]; + undefined4 local_7a8; + int local_7a4; + undefined4 local_7a0; + int local_79c; + int local_798; + undefined4 local_794; + undefined4 local_790; + uint local_78c; + undefined4 local_788; + undefined4 local_784; + undefined4 local_780; + undefined4 local_77c; + undefined4 local_778; + undefined4 local_774; + undefined4 local_770; + undefined4 local_740; + undefined4 local_73c; + undefined4 local_738; + undefined4 local_734; + undefined4 local_730; + undefined4 local_72c; + undefined4 local_728; + undefined4 local_724; + undefined4 local_720; + undefined1 local_718 [84]; + undefined1 local_6c4 [748]; + CDialog local_3d8 [912]; + ulonglong local_48; + + /* 0x67c0 43 MAG_LocalStorageMgsRecord */ + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_858; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + uVar6 = (ulonglong)param_1; + lVar7 = uVar6 * 0x4a8; + if (((((&DAT_180073758)[uVar6 * 0x95] == 0) || ((&DAT_180073750)[uVar6 * 0x95] == 0)) || + ((&DAT_180073760)[uVar6 * 0x95] == 0)) || ((&DAT_180073768)[uVar6 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + return 0; + } + if ((*(int *)(&DAT_180073778 + lVar7) == 0) || (((&DAT_18007377c)[lVar7] & 2) == 0)) { + SetLastError(0xe4ae0006); + return 0; + } + if ((*(int *)((&DAT_180073768)[uVar6 * 0x95] + 0x48) != 0) || + (*(int *)((&DAT_180073768)[uVar6 * 0x95] + 0x44) != 0)) { + SetLastError(0xe4ae000a); + return 0; + } + FUN_18000b610((longlong *)&local_818,param_2); + if (*(int *)(local_818 + -8) == 0) { + FUN_18001f670(local_3d8,0,&DAT_1800590b8,(short *)0x0,6, + L"MGS Files(*.mgs)|*.mgs|All Files(*.*)|*.*||",(CWnd *)0x0,0); + lVar4 = FUN_18001f450(local_3d8); + if (lVar4 != 1) { + SetLastError(0xe4ae0003); + FUN_18001f5c8((CWnd *)local_3d8); + goto LAB_180006c75; + } + plVar5 = FUN_18001f980((longlong)local_3d8,&local_800); + FUN_18000b390((longlong *)&local_818,plVar5); + LOCK(); + piVar1 = (int *)(local_800 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + uVar12 = iVar3 == 1; + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_800 + -0x18) + 8))(); + } + plVar5 = FUN_18000a7c0((longlong *)&local_818,&local_808,4); + plVar5 = FUN_18000a950(plVar5,&local_810,1); + lVar4 = 2; + psVar9 = (short *)*plVar5; + psVar11 = &DAT_180058fe0; + do { + if (lVar4 == 0) break; + lVar4 = lVar4 + -1; + uVar12 = *psVar9 == *psVar11; + psVar9 = psVar9 + 1; + psVar11 = psVar11 + 1; + } while ((bool)uVar12); + LOCK(); + piVar1 = (int *)(local_810 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_810 + -0x18) + 8))(); + } + LOCK(); + piVar1 = (int *)(local_808 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_808 + -0x18) + 8))(); + } + if (!(bool)uVar12) { + FUN_18000a600((longlong *)&local_818,".mgs"); + } + FUN_18001f5c8((CWnd *)local_3d8); + } + *(undefined4 *)(&DAT_180073ba4 + lVar7) = 0; + if (param_3 == 0) { + param_3 = 1; + } + *(uint *)(&DAT_180073ba8 + lVar7) = param_3; + uVar10 = (ulonglong)((float)*(uint *)(&DAT_1800737f4 + lVar7) / (float)param_3 + DAT_18005e704); + uVar8 = (uint)uVar10; + if (*(int *)(&DAT_18007377c + lVar7) == 6) { + uVar8 = (uint)(uVar10 >> 4) & 0xfffffff; + } + if (uVar8 == 0) { + uVar8 = 1; + } + FUN_1800357d0((ulonglong *)&local_7f8,0,0x418); + local_7f8 = 0x418; + local_7f4 = 0x10100; + if (*(int *)((&DAT_180073750)[uVar6 * 0x95] + 0x47950) != 0) { + local_7f4 = 0x10200; + } + local_7f0 = _time64((__time64_t *)0x0); + strcpy_s(local_7e8,0x20,&DAT_1800737e8 + lVar7); + strcpy_s(local_7c8,0x20,&DAT_1800737c8 + lVar7); + local_79c = (&DAT_1800737b8)[uVar6 * 0x12a]; + lVar4 = (&DAT_180073750)[uVar6 * 0x95]; + local_7a8 = local_7f8; + local_798 = *(int *)(&DAT_1800737bc + lVar7); + local_7a0 = 0; + local_7a4 = local_79c * local_798 * 2 + 0x40; + if (*(int *)(lVar4 + 0x47950) == 0) { + local_778 = 0; + } + else { + local_778 = *(undefined4 *)(lVar4 + 0x47954); + } + local_794 = *(undefined4 *)(lVar4 + 0x47944); + local_790 = *(undefined4 *)(lVar4 + 0x47948); + local_788 = *(undefined4 *)(&DAT_1800737c0 + lVar7); + local_784 = *(undefined4 *)(&DAT_1800737c4 + lVar7); + local_780 = *(undefined4 *)(lVar4 + 100); + local_77c = *(undefined4 *)(lVar4 + 0x68); + local_774 = *(undefined4 *)(lVar4 + 0xa4); + local_740 = *(undefined4 *)(&DAT_180073780 + lVar7); + local_770 = *(undefined4 *)(lVar4 + 0xa8); + local_73c = *(undefined4 *)(lVar4 + 0x10); + local_738 = *(undefined4 *)(lVar4 + 0x14); + local_734 = *(undefined4 *)(lVar4 + 0x18); + local_730 = *(undefined4 *)(lVar4 + 0x1c); + local_72c = *(undefined4 *)(lVar4 + 0x20); + local_728 = *(undefined4 *)(lVar4 + 0x24); + local_724 = *(undefined4 *)(lVar4 + 0x48); + local_720 = *(undefined4 *)(lVar4 + 0x4c); + local_78c = uVar8; + memcpy(local_718,(void *)(lVar4 + 0xd0),0x2c); + if ((*(uint *)(lVar4 + 0x98) < *(uint *)(lVar4 + 0x41884)) && + (_Src = (void *)((ulonglong)*(uint *)(lVar4 + 0x98) * 0x21c + 0x41888 + lVar4), + _Src != (void *)0x0)) { + memcpy(local_6c4,_Src,0x21c); + } + iVar3 = FUN_18001b3a0((&DAT_180073768)[uVar6 * 0x95],local_818,(longlong)&local_7f8); + if (iVar3 != 0) { + uVar2 = *(undefined4 *)((&DAT_180073768)[uVar6 * 0x95] + 0x44); + LOCK(); + piVar1 = (int *)(local_818 + -4); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (0 < iVar3 + -1) { + return uVar2; + } + (**(code **)(**(longlong **)(local_818 + -0xc) + 8))(); + return uVar2; + } + SetLastError(0xe4ae0009); +LAB_180006c75: + LOCK(); + piVar1 = (int *)(local_818 + -4); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_818 + -0xc) + 8))(); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180006d30 (1340 bytes) name=MAG_LocalStorageMgsPlay + +undefined4 +MAG_LocalStorageMgsPlay(uint param_1,short *param_2,undefined8 param_3,undefined8 param_4) + +{ + ulonglong *puVar1; + uint uVar2; + longlong lVar3; + longlong lVar4; + int iVar5; + undefined4 uVar6; + longlong *plVar7; + LPVOID pvVar8; + longlong lVar9; + ulonglong uVar10; + undefined8 uVar11; + ulonglong uVar12; + longlong local_48; + uint local_40; + undefined4 local_3c; + undefined4 local_38; + uint local_34; + undefined4 local_30; + uint local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + + /* 0x6d30 41 MAG_LocalStorageMgsPlay */ + uVar10 = (ulonglong)param_1; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return 0; + } + lVar9 = uVar10 * 0x4a8; + if (((((&DAT_180073758)[uVar10 * 0x95] == 0) || ((&DAT_180073750)[uVar10 * 0x95] == 0)) || + ((&DAT_180073760)[uVar10 * 0x95] == 0)) || + (((&DAT_180073768)[uVar10 * 0x95] == 0 || (param_2 == (short *)0x0)))) { + SetLastError(0xe4ae0001); + return 0; + } + if (((*(int *)(&DAT_180073778 + lVar9) != 0) || + (*(int *)((&DAT_180073758)[uVar10 * 0x95] + 0x14) != 0)) || + ((*(int *)((&DAT_180073768)[uVar10 * 0x95] + 0x48) != 0 || + (*(int *)((&DAT_180073768)[uVar10 * 0x95] + 0x44) != 0)))) { + SetLastError(0xe4ae000a); + return 0; + } + *(undefined8 *)(&DAT_180073790 + lVar9) = param_3; + *(undefined8 *)(&DAT_180073770 + lVar9) = param_4; + *(undefined4 *)(&DAT_18007377c + lVar9) = 2; + *(undefined4 *)(&DAT_180073ba0 + lVar9) = 0xffffffff; + plVar7 = FUN_18000b610(&local_48,param_2); + iVar5 = FUN_18001b870((&DAT_180073768)[uVar10 * 0x95],plVar7); + if (iVar5 == 0) { + SetLastError(0xe4ae0009); + return 0; + } + lVar3 = (&DAT_180073768)[uVar10 * 0x95]; + uVar2 = *(uint *)(lVar3 + 0xcc); + if ((((0x4f < (int)uVar2) && ((int)uVar2 < 0x501)) && (0x3b < *(int *)(lVar3 + 0xd0))) && + ((*(int *)(lVar3 + 0xd0) < 0x401 && ((uVar2 & 3) == 0)))) { + puVar1 = (ulonglong *)(&DAT_1800737b8 + uVar10 * 0x12a); + FUN_1800357d0(puVar1,0,0x48); + *(undefined4 *)(&DAT_1800737c0 + lVar9) = *(undefined4 *)(lVar3 + 0xe0); + *(undefined4 *)(&DAT_1800737c4 + lVar9) = *(undefined4 *)(lVar3 + 0xe4); + *(undefined8 *)(&DAT_1800737c8 + lVar9) = *(undefined8 *)(lVar3 + 0xa0); + *(undefined8 *)(&DAT_1800737d0 + lVar9) = *(undefined8 *)(lVar3 + 0xa8); + *(undefined8 *)(&DAT_1800737d8 + lVar9) = *(undefined8 *)(lVar3 + 0xb0); + *(undefined8 *)(&DAT_1800737e0 + lVar9) = *(undefined8 *)(lVar3 + 0xb8); + (&DAT_1800737e7)[lVar9] = 0; + *(undefined8 *)(&DAT_1800737e8 + lVar9) = *(undefined8 *)(lVar3 + 0x80); + (&DAT_1800737ef)[lVar9] = 0; + local_40 = *(uint *)(lVar3 + 0xcc); + uVar12 = (ulonglong)local_40; + *(uint *)puVar1 = local_40; + uVar2 = *(uint *)(lVar3 + 0xd0); + *(uint *)(&DAT_1800737bc + lVar9) = uVar2; + if ((local_40 < 0x51) && (uVar2 < 0x3d)) { + *(uint *)(&DAT_1800737f8 + lVar9) = local_40 * 4; + *(uint *)(&DAT_1800737fc + lVar9) = uVar2 << 2; + } + else if ((local_40 < 0x140) && (uVar2 < 0xf0)) { + *(uint *)(&DAT_1800737f8 + lVar9) = local_40 * 2; + *(uint *)(&DAT_1800737fc + lVar9) = uVar2 * 2; + } + else { + *(uint *)(&DAT_1800737f8 + lVar9) = local_40; + *(uint *)(&DAT_1800737fc + lVar9) = uVar2; + } + uVar6 = *(undefined4 *)(lVar3 + 0xdc); + local_34 = *(uint *)(&DAT_1800737fc + lVar9); + local_38 = *(undefined4 *)(&DAT_1800737f8 + lVar9); + *(uint *)(&DAT_1800737a4 + lVar9) = local_34; + local_2c = local_34 >> 1; + *(undefined4 *)(&DAT_1800737f0 + lVar9) = uVar6; + *(undefined4 *)(&DAT_1800737f4 + lVar9) = uVar6; + local_3c = *(undefined4 *)(&DAT_1800737bc + lVar9); + *(undefined4 *)(&DAT_1800737a0 + lVar9) = local_38; + lVar4 = (&DAT_180073750)[uVar10 * 0x95]; + *(uint *)(&DAT_180073798 + lVar9) = local_40; + *(undefined4 *)(&DAT_18007379c + lVar9) = local_3c; + local_30 = 0x10; + local_28 = 4; + local_24 = 1; + local_20 = 1; + local_1c = 5; + iVar5 = FUN_18000bce0(lVar4,&local_40); + if (iVar5 == 0) { + FUN_18001b2e0((&DAT_180073768)[uVar10 * 0x95]); + SetLastError(0xe4ae0003); + uVar6 = 0; + } + else { + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 100) = *(undefined4 *)(lVar3 + 0xe8); + FUN_180015500((&DAT_180073750)[uVar10 * 0x95],*(int *)(lVar3 + 0xec)); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0xa4) = *(undefined4 *)(lVar3 + 0xf4); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0xa8) = *(undefined4 *)(lVar3 + 0xf8); + uVar11 = 0x2c; + memcpy((void *)((&DAT_180073750)[uVar10 * 0x95] + 0xd0),(void *)(lVar3 + 0x150),0x2c); + FUN_180018a20((&DAT_180073750)[uVar10 * 0x95],(LPCSTR)(lVar3 + 0x1a4),uVar11,uVar12); + FUN_180018d50((&DAT_180073750)[uVar10 * 0x95],*(int *)(lVar3 + 0xf0),*(uint *)(lVar3 + 0xd4), + *(undefined4 *)(lVar3 + 0xd8)); + uVar6 = *(undefined4 *)(lVar3 + 0x128); + lVar4 = (&DAT_180073750)[uVar10 * 0x95]; + *(undefined4 *)(&DAT_180073780 + lVar9) = uVar6; + FUN_18000d5f0(lVar4,uVar6); + if (*(int *)(lVar3 + 300) == 0) { + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x10) = 0; + if (*(int *)(lVar3 + 0x140) == 0) { + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x24) = 5; + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x48) = 0; + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x4c) = 0; + } + else { + *(int *)((&DAT_180073750)[uVar10 * 0x95] + 0x24) = *(int *)(lVar3 + 0x140); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x48) = *(undefined4 *)(lVar3 + 0x144); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x4c) = *(undefined4 *)(lVar3 + 0x148); + } + } + else { + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x10) = 1; + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x14) = *(undefined4 *)(lVar3 + 0x130); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x18) = *(undefined4 *)(lVar3 + 0x134); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x1c) = *(undefined4 *)(lVar3 + 0x138); + *(undefined4 *)((&DAT_180073750)[uVar10 * 0x95] + 0x20) = *(undefined4 *)(lVar3 + 0x13c); + } + uVar2 = *(int *)(&DAT_1800737bc + lVar9) * (int)*puVar1 * 2; + if (*(LPVOID *)(&DAT_180073788 + lVar9) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar9)); + *(undefined8 *)(&DAT_180073788 + lVar9) = 0; + } + pvVar8 = thunk_FUN_18001eb74((ulonglong)uVar2 + 0x4c); + *(LPVOID *)(&DAT_180073788 + lVar9) = pvVar8; + if (pvVar8 == (LPVOID)0x0) { + FUN_18001b2e0((&DAT_180073768)[uVar10 * 0x95]); + SetLastError(0xe4ae0002); + uVar6 = 0; + } + else { + uVar11 = FUN_18001bc90((void *)(&DAT_180073768)[uVar10 * 0x95],param_1,(ulonglong)uVar2, + (longlong)pvVar8); + if ((int)uVar11 == 0) { + FUN_18001b2e0((&DAT_180073768)[uVar10 * 0x95]); + if (*(LPVOID *)(&DAT_180073788 + lVar9) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar9)); + *(undefined8 *)(&DAT_180073788 + lVar9) = 0; + } + SetLastError(0xe4ae0003); + uVar6 = 0; + } + else { + lVar3 = (&DAT_180073768)[uVar10 * 0x95]; + *(undefined4 *)(&DAT_180073778 + lVar9) = 1; + uVar6 = *(undefined4 *)(lVar3 + 200); + } + } + } + return uVar6; + } + FUN_18001b2e0(lVar3); + SetLastError(0xe4ae0009); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180007270 (118 bytes) name=MAG_LocalStorageMgsSeekFrame + +undefined4 MAG_LocalStorageMgsSeekFrame(uint param_1,int param_2) + +{ + undefined4 uVar1; + ulonglong uVar2; + + /* 0x7270 44 MAG_LocalStorageMgsSeekFrame */ + if ((((param_1 < 0x81) && (uVar2 = (ulonglong)param_1, (&DAT_180073758)[uVar2 * 0x95] != 0)) && + ((&DAT_180073750)[uVar2 * 0x95] != 0)) && + (((&DAT_180073760)[uVar2 * 0x95] != 0 && ((&DAT_180073768)[uVar2 * 0x95] != 0)))) { + if (*(int *)((&DAT_180073768)[uVar2 * 0x95] + 0x48) == 0) { + SetLastError(0xe4ae0006); + return 0; + } + uVar1 = FUN_18001bff0((&DAT_180073768)[uVar2 * 0x95],param_2); + return uVar1; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800072f0 (169 bytes) name=MAG_LocalStorageMgsPopFrame + +BOOL MAG_LocalStorageMgsPopFrame(uint param_1) + +{ + longlong lVar1; + BOOL BVar2; + ulonglong uVar3; + + /* 0x72f0 42 MAG_LocalStorageMgsPopFrame */ + if ((((param_1 < 0x81) && (uVar3 = (ulonglong)param_1, (&DAT_180073758)[uVar3 * 0x95] != 0)) && + ((&DAT_180073750)[uVar3 * 0x95] != 0)) && + (((&DAT_180073760)[uVar3 * 0x95] != 0 && ((&DAT_180073768)[uVar3 * 0x95] != 0)))) { + if (*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x48) == 0) { + SetLastError(0xe4ae0006); + return 0; + } + lVar1 = (&DAT_180073768)[uVar3 * 0x95]; + if ((*(int *)(lVar1 + 0x48) != 0) && (*(int *)(lVar1 + 0x40) < *(int *)(lVar1 + 200))) { + if (*(int *)(lVar1 + 0x4bc) != 0) { + *(undefined4 *)(lVar1 + 0x4c0) = 1; + } + /* WARNING: Could not recover jumptable at 0x000180007380. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar2 = SetEvent(*(HANDLE *)(lVar1 + 0x4e8)); + return BVar2; + } + } + else { + SetLastError(0xe4ae0001); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800073a0 (382 bytes) name=MAG_LocalStorageMgsStop + +void MAG_LocalStorageMgsStop(uint param_1) + +{ + longlong lVar1; + longlong *plVar2; + ulonglong uVar3; + + /* 0x73a0 45 MAG_LocalStorageMgsStop */ + if (0x80 < param_1) { + /* WARNING: Could not recover jumptable at 0x0001800073b5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SetLastError(0xe4ae0001); + return; + } + uVar3 = (ulonglong)param_1; + if (((((&DAT_180073758)[uVar3 * 0x95] == 0) || ((&DAT_180073750)[uVar3 * 0x95] == 0)) || + ((&DAT_180073760)[uVar3 * 0x95] == 0)) || ((&DAT_180073768)[uVar3 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + } + else { + if (*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x48) != 0) { + lVar1 = (&DAT_180073768)[uVar3 * 0x95]; + FUN_180001470(lVar1 + 8); + if (*(int *)(lVar1 + 0x48) != 0) { + *(undefined4 *)(lVar1 + 0x4d8) = 0; + SetEvent(*(HANDLE *)(lVar1 + 0x4e8)); + if (*(longlong *)(lVar1 + 0x4e0) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(lVar1 + 0x4e0) + 0x58),0xffffffff); + plVar2 = *(longlong **)(lVar1 + 0x4e0); + if (plVar2 != (longlong *)0x0) { + (**(code **)(*plVar2 + 8))(plVar2,1); + } + *(undefined8 *)(lVar1 + 0x4e0) = 0; + } + CloseHandle(*(HANDLE *)(lVar1 + 0x4e8)); + *(undefined4 *)(lVar1 + 0x48) = 0; + } + if (*(int *)(lVar1 + 0x44) != 0) { + *(undefined4 *)(lVar1 + 0x44) = 0; + } + (**(code **)(*(longlong *)(lVar1 + 0x50) + 0x98))(lVar1 + 0x50); + *(undefined4 *)(lVar1 + 0x40) = 0; + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8); + *(undefined4 *)(&DAT_180073778 + uVar3 * 0x4a8) = 0; + return; + } + if (*(int *)((&DAT_180073768)[uVar3 * 0x95] + 0x44) != 0) { + FUN_18001b2e0((&DAT_180073768)[uVar3 * 0x95]); + return; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180007520 (940 bytes) name=MAG_SaveFIR + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +bool MAG_SaveFIR(uint param_1,short *param_2) + +{ + int *piVar1; + short sVar2; + ulonglong uVar3; + int iVar4; + undefined **ppuVar5; + longlong lVar6; + HMODULE pHVar7; + longlong *plVar8; + undefined8 *puVar9; + longlong *plVar10; + int iVar11; + short *psVar12; + short *psVar13; + void *pvVar14; + ulonglong uVar15; + undefined1 uVar16; + undefined1 auStackY_438 [32]; + void *local_3f8; + longlong local_3f0; + longlong local_3e8; + longlong *local_3e0; + longlong local_3d8 [2]; + CDialog local_3c8 [912]; + ulonglong local_38; + + /* 0x7520 51 MAG_SaveFIR */ + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_438; + uVar15 = (ulonglong)param_1; + if (0x80 < param_1) { + SetLastError(0xe4ae0001); + return false; + } + if (((((&DAT_180073758)[uVar15 * 0x95] == 0) || ((&DAT_180073750)[uVar15 * 0x95] == 0)) || + ((&DAT_180073760)[uVar15 * 0x95] == 0)) || ((&DAT_180073768)[uVar15 * 0x95] == 0)) { + SetLastError(0xe4ae0001); + return false; + } + if (*(int *)((&DAT_180073750)[uVar15 * 0x95] + 0x234) == 0) { + SetLastError(0xe4ae0006); + return false; + } + ppuVar5 = FUN_18001fcc0(); + if (ppuVar5 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar6 = (**(code **)(*ppuVar5 + 0x18))(ppuVar5); + pvVar14 = (void *)(lVar6 + 0x18); + iVar11 = 0; + local_3f8 = pvVar14; + if (param_2 != (short *)0x0) { + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar7 = (HMODULE)FUN_18001fcac(); + if (pHVar7 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_3f8,pHVar7,(uint)param_2 & 0xffff); + pvVar14 = local_3f8; + } + goto LAB_180007663; + } + lVar6 = -1; + psVar12 = param_2; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + sVar2 = *psVar12; + psVar12 = psVar12 + 1; + } while (sVar2 != 0); + iVar11 = ~(uint)lVar6 - 1; + } + FUN_18000b480((longlong *)&local_3f8,param_2,iVar11); + pvVar14 = local_3f8; +LAB_180007663: + if (*(int *)((longlong)pvVar14 + -0x10) == 0) { + FUN_18001f670(local_3c8,0,&DAT_18006e948,(short *)0x0,6, + u_FIR_Files___fir____fir_All_Files_18006e950,(CWnd *)0x0,0); + lVar6 = FUN_18001f450(local_3c8); + if (lVar6 != 1) { + SetLastError(0xe4ae0003); + FUN_18001f5c8((CWnd *)local_3c8); + LOCK(); + piVar1 = (int *)((longlong)pvVar14 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)pvVar14 + -0x18) + 8))(); + } + return false; + } + plVar8 = FUN_18001f980((longlong)local_3c8,local_3d8); + FUN_18000b390((longlong *)&local_3f8,plVar8); + LOCK(); + piVar1 = (int *)(local_3d8[0] + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + uVar16 = iVar11 == 1; + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)(local_3d8[0] + -0x18) + 8))(); + } + plVar8 = FUN_18000a7c0((longlong *)&local_3f8,&local_3e8,4); + plVar8 = FUN_18000a950(plVar8,&local_3f0,1); + lVar6 = 2; + psVar12 = (short *)*plVar8; + psVar13 = &DAT_180058fe0; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + uVar16 = *psVar12 == *psVar13; + psVar12 = psVar12 + 1; + psVar13 = psVar13 + 1; + } while ((bool)uVar16); + LOCK(); + piVar1 = (int *)(local_3f0 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)(local_3f0 + -0x18) + 8))(); + } + LOCK(); + piVar1 = (int *)(local_3e8 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(**(longlong **)(local_3e8 + -0x18) + 8))(); + } + if (!(bool)uVar16) { + FUN_18000a600((longlong *)&local_3f8,".fir"); + } + FUN_18001f5c8((CWnd *)local_3c8); + pvVar14 = local_3f8; + } + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar15 * 0x95] + 0x238)); + plVar8 = (longlong *)((longlong)pvVar14 + -0x18); + puVar9 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar14 + -0x18) + 0x20))(); + if ((*(int *)((longlong)pvVar14 + -8) < 0) || (puVar9 != (undefined8 *)*plVar8)) { + plVar10 = (longlong *)(**(code **)*puVar9)(puVar9,*(undefined4 *)((longlong)pvVar14 + -0x10),2); + if (plVar10 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(plVar10 + 1) = *(undefined4 *)((longlong)pvVar14 + -0x10); + uVar3 = (longlong)(*(int *)((longlong)pvVar14 + -0x10) + 1) * 2; + FUN_180032c60((ulonglong *)(plVar10 + 3),uVar3,pvVar14,uVar3); + } + else { + LOCK(); + *(int *)((longlong)pvVar14 + -8) = *(int *)((longlong)pvVar14 + -8) + 1; + UNLOCK(); + plVar10 = plVar8; + } + local_3e0 = plVar10 + 3; + iVar4 = FUN_180008740(param_1,0,(longlong *)&local_3e0); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar15 * 0x95] + 0x238)); + LOCK(); + piVar1 = (int *)((longlong)pvVar14 + -8); + iVar11 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar11 + -1 < 1) { + (**(code **)(*(longlong *)*plVar8 + 8))((longlong *)*plVar8,plVar8); + } + return 0 < iVar4; +} + + +================================================================== + +### EXPORT FUNC 1800078d0 (2145 bytes) name=MAG_LoadFIR + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +MAG_LoadFIR(uint param_1,uint *param_2,LPCWSTR param_3,undefined *param_4,undefined8 param_5) + +{ + void *_Src; + int iVar1; + undefined8 uVar2; + __uint64 _Var3; + LPVOID pvVar4; + __time64_t _Var5; + uint uVar6; + uint uVar7; + size_t sVar8; + ulonglong uVar9; + ulonglong uVar10; + longlong lVar11; + uint uVar12; + ulonglong uVar13; + undefined4 uVar14; + undefined4 uVar15; + undefined1 auStackY_138 [32]; + CFile local_100 [32]; + uint local_e0; + uint local_dc; + uint local_d8; + uint local_d4; + uint local_d0; + uint local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc; + code *local_b8; + size_t local_b0; + undefined8 local_a0 [2]; + undefined8 local_90; + undefined1 local_88 [4]; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + ulonglong local_70; + ulonglong local_48; + + /* 0x78d0 38 MAG_LoadFIR */ + local_90 = 0xfffffffffffffffe; + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_138; + uVar13 = (ulonglong)param_1; + local_b8 = (code *)param_4; + if (param_1 < 0x81) { + lVar11 = uVar13 * 0x4a8; + if (((((&DAT_180073758)[uVar13 * 0x95] != 0) && ((&DAT_180073750)[uVar13 * 0x95] != 0)) && + ((&DAT_180073760)[uVar13 * 0x95] != 0)) && ((&DAT_180073768)[uVar13 * 0x95] != 0)) { + if (*(int *)((&DAT_180073758)[uVar13 * 0x95] + 0x14) != 0) { + SetLastError(0xe4ae0003); + return 0; + } + if (((param_2 != (uint *)0x0) && ((*param_2 & 3) == 0)) && + (((param_2[2] & 3) == 0 && (((param_2[4] & 3) == 0 && (*param_2 <= param_2[2])))))) { + if ((param_2[1] <= param_2[3]) && + (((param_2[1] != 0 && (param_2[3] != 0)) && (param_2[5] != 0)))) { + FUN_180020138((undefined8 *)local_100); + uVar2 = FUN_180020a6c((longlong)local_100,param_3,0x30,0); + if ((int)uVar2 == 0) { + SetLastError(0xe4ae0009); + FUN_1800203a4(local_100); + return 0; + } + _Var3 = CFile::GetLength(local_100); + sVar8 = _Var3 & 0xffffffff; + if (0x600040 < (uint)_Var3) { + sVar8 = 0x600040; + } + if (*(LPVOID *)(&DAT_180073788 + lVar11) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar11)); + *(undefined8 *)(&DAT_180073788 + lVar11) = 0; + } + uVar9 = 0; + local_b0 = sVar8; + pvVar4 = thunk_FUN_18001eb74(sVar8); + *(LPVOID *)(&DAT_180073788 + lVar11) = pvVar4; + if (pvVar4 == (LPVOID)0x0) { + CFile::Close(local_100); + SetLastError(0xe4ae0002); + FUN_1800203a4(local_100); + return 0; + } + FUN_18001ef2c(local_a0); + FUN_18001fd6c((longlong)local_100,*(LPVOID *)(&DAT_180073788 + lVar11),(DWORD)sVar8); + FUN_18001ef94(); + CFile::Close(local_100); + _Src = *(void **)(&DAT_180073788 + lVar11); + *(undefined8 *)(&DAT_180073770 + lVar11) = param_5; + memcpy(local_88,_Src,0x40); + uVar6 = (uint)local_70 & 0xffff; + uVar10 = local_70 >> 0x10 & 0xffff; + uVar12 = (uint)uVar10; + if (local_b0 < (longlong)(int)(uVar12 * uVar6) * 2 + 0x40U) { + SetLastError(0xe4ae0009); + FUN_1800203a4(local_100); + return 0; + } + if ((uVar6 != *param_2) || (uVar12 != param_2[1])) { + *param_2 = uVar6; + param_2[1] = uVar12; + param_2[2] = uVar6; + param_2[3] = uVar12; + param_2[4] = 0x10; + param_2[5] = uVar12; + } + *(uint *)(&DAT_180073798 + lVar11) = *param_2; + *(uint *)(&DAT_18007379c + lVar11) = param_2[1]; + *(uint *)(&DAT_1800737a0 + lVar11) = param_2[2]; + *(uint *)(&DAT_1800737a4 + lVar11) = param_2[3]; + *(uint *)(&DAT_1800737a8 + lVar11) = param_2[4]; + *(uint *)(&DAT_1800737ac + lVar11) = param_2[5]; + (&DAT_1800737b0)[uVar13 * 0x12a] = 0; + *(undefined4 *)(&DAT_1800737b4 + lVar11) = 0; + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar13 * 0x12a),0,0x48); + (&DAT_1800737b8)[uVar13 * 0x12a] = *param_2; + *(uint *)(&DAT_1800737bc + lVar11) = param_2[1]; + *(uint *)(&DAT_1800737f8 + lVar11) = param_2[2]; + *(uint *)(&DAT_1800737fc + lVar11) = param_2[3]; + *(undefined4 *)(&DAT_1800737f0 + lVar11) = 1; + *(undefined4 *)(&DAT_1800737f4 + lVar11) = 1; + *(undefined4 *)(&DAT_1800737c0 + lVar11) = 0; + *(undefined4 *)(&DAT_1800737c4 + lVar11) = 0; + FUN_180032bb0(&DAT_1800737c8 + lVar11,(byte *)"FIR-%d*%d",(ulonglong)uVar6,uVar10); + strncpy(&DAT_1800737e8 + lVar11,"FIR",8); + *(undefined4 *)(&DAT_180073800 + lVar11) = 20000; + *(undefined4 *)(&DAT_180073804 + lVar11) = 0x5014; + *(undefined4 *)(&DAT_180073808 + lVar11) = 0; + *(undefined4 *)(&DAT_18007380c + lVar11) = 0; + _Var5 = _time64((__time64_t *)0x0); + *(__time64_t *)(&DAT_180073810 + lVar11) = _Var5; + *(undefined8 *)(&DAT_180073818 + lVar11) = 0; + *(undefined8 *)(&DAT_180073820 + lVar11) = 0; + *(undefined4 *)(&DAT_180073828 + lVar11) = 0; + local_e0 = *param_2; + local_dc = param_2[1]; + local_d8 = param_2[2]; + local_d4 = param_2[3]; + local_d0 = param_2[4]; + local_cc = param_2[5]; + local_c8 = 4; + local_c4 = 1; + local_c0 = 1; + local_bc = 5; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xc) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x6c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x24) = 5; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x48) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x4c) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x10) = 0; + *(undefined4 *)(&DAT_180073780 + lVar11) = 2; + FUN_18000d5f0((&DAT_180073750)[uVar13 * 0x95],2); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xd4) = local_80; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xd8) = local_78; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xf8) = local_84; + uVar15 = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xd0) = local_7c; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xdc) = local_74; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xf0) = 0; + FUN_180014fe0((&DAT_180073750)[uVar13 * 0x95], + (float *)((&DAT_180073750)[uVar13 * 0x95] + 0xd0)); + iVar1 = FUN_18000bce0((&DAT_180073750)[uVar13 * 0x95],&local_e0); + if (iVar1 == 0) { + SetLastError(0xe4ae0003); + FUN_1800203a4(local_100); + return 0; + } + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 100) = 0; + lVar11 = (&DAT_180073750)[uVar13 * 0x95]; + EnterCriticalSection((LPCRITICAL_SECTION)(lVar11 + 0x238)); + memcpy(&DAT_180099000,&DAT_18005cde0,0xa1c); + uVar10 = uVar9; + do { + uVar7 = (&DAT_180099004)[uVar10] - (&DAT_180099000)[uVar10]; + (&DAT_180099a20)[uVar10] = ((uVar7 >> 1) + 0x1000000) / uVar7; + uVar7 = (&DAT_180099008)[uVar10] - (&DAT_180099004)[uVar10]; + (&DAT_180099a24)[uVar10] = ((uVar7 >> 1) + 0x1000000) / uVar7; + uVar10 = uVar10 + 2; + } while ((longlong)uVar10 < 0x286); + DAT_180073748 = (undefined4)(0x7fffffff / (longlong)DAT_18009a434); + *(undefined4 *)(lVar11 + 0x68) = 7; + LeaveCriticalSection((LPCRITICAL_SECTION)(lVar11 + 0x238)); + lVar11 = uVar13 * 0x4a8; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xa4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0xa8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x5c) = + *(undefined4 *)(&DAT_180073804 + lVar11); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x60) = + *(undefined4 *)(&DAT_180073800 + lVar11); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x54) = + *(undefined4 *)(&DAT_180073804 + lVar11); + *(undefined4 *)((&DAT_180073750)[uVar13 * 0x95] + 0x58) = + *(undefined4 *)(&DAT_180073800 + lVar11); + uVar2 = FUN_180018d50((&DAT_180073750)[uVar13 * 0x95],4,8,0xffff3cb0); + if ((int)uVar2 != 0) { + uVar10 = uVar9; + uVar14 = local_7c; + if (0 < (int)(uVar12 * uVar6)) { + do { + iVar1 = FUN_180001e40((&DAT_180073750)[(longlong)(int)param_1 * 0x95], + *(short *)((longlong)_Src + uVar9 * 2 + 0x40) * 10); + *(short *)((longlong)_Src + uVar9 * 2 + 0x40) = (short)iVar1; + uVar7 = (int)uVar10 + 1; + uVar9 = uVar9 + 1; + uVar10 = (ulonglong)uVar7; + } while ((int)uVar7 < (int)(uVar12 * uVar6)); + } + FUN_18000ca30((&DAT_180073750)[uVar13 * 0x95],CONCAT44(uVar15,uVar14),1,1,1); + if (local_b8 != (code *)0x0) { + (*local_b8)(param_1,*(undefined4 *)(&DAT_180073800 + uVar13 * 0x4a8),0,0); + } + FUN_1800203a4(local_100); + return 1; + } + SetLastError(0xe4ae0003); + FUN_1800203a4(local_100); + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; + } + SetLastError(0xe4ae0001); + } + else { + SetLastError(0xe4ae0001); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180008150 (24 bytes) name=Unwind@180008150 + +void Unwind_180008150(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x38)); + return; +} + + +================================================================== + +### EXPORT FUNC 180008170 (27 bytes) name=Unwind@180008170 + +void Unwind_180008170(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 180008190 (63 bytes) name=Catch@180008190 + +undefined * Catch_180008190(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0xa0) = *(undefined8 *)(param_2 + 0x90); + CFile::Close((CFile *)(param_2 + 0x38)); + SetLastError(0xe4ae0009); + return &DAT_1800080f2; +} + + +================================================================== + +### EXPORT FUNC 1800081d0 (1173 bytes) name=FUN_1800081d0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +int FUN_1800081d0(uint param_1,void *param_2,longlong *param_3) + +{ + int *piVar1; + void *_Src; + longlong lVar2; + undefined8 uVar3; + int iVar4; + int iVar5; + ulonglong uVar6; + longlong lVar7; + undefined1 auStack_428 [32]; + CFile local_408 [32]; + longlong *local_3e8; + undefined8 local_3d8; + undefined8 local_3d0 [3]; + undefined4 local_3b8; + int local_3b4; + int local_3b0; + int local_3ac; + undefined4 local_3a8; + undefined4 local_3a4; + undefined4 local_3a0; + undefined4 local_39c; + undefined4 local_398; + undefined4 local_394; + undefined4 local_390; + undefined4 local_38c; + undefined8 local_388; + undefined1 local_369; + undefined8 local_368; + undefined8 local_360; + undefined8 local_358; + ulonglong local_350; + undefined8 local_348; + undefined4 local_340; + undefined4 local_33c; + undefined8 local_338; + undefined8 local_330; + undefined1 local_328 [556]; + 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; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + ulonglong local_38; + + local_3d8 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStack_428; + uVar6 = (ulonglong)param_1; + lVar7 = uVar6 * 0x4a8; + lVar2 = (&DAT_180073750)[uVar6 * 0x95]; + local_3e8 = param_3; + if (*(int *)(lVar2 + 0x234) == 0) { + SetLastError(0xe4ae0006); + lVar2 = *param_3; + LOCK(); + piVar1 = (int *)(lVar2 + -8); + iVar5 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar5 + -1 < 1) { + (**(code **)(**(longlong **)(lVar2 + -0x18) + 8))(); + } + iVar5 = -1; + } + else { + FUN_1800357d0((ulonglong *)&local_3b8,0,0x374); + local_3b8 = 0x374; + local_3b4 = (*(int *)(lVar2 + 0x47950) != 0) + 0x10002; + local_48 = *(undefined4 *)(&DAT_1800737b4 + lVar7); + local_340 = (&DAT_1800737b0)[uVar6 * 0x12a]; + local_348 = *(undefined8 *)(&DAT_180073810 + lVar7); + local_3b0 = *(int *)(&DAT_180073798 + lVar7); + local_3ac = *(int *)(&DAT_18007379c + lVar7); + if (*(int *)(lVar2 + 0x47950) == 0) { + local_5c = 0; + } + else { + local_5c = *(undefined4 *)(lVar2 + 0x47954); + } + local_3a8 = *(undefined4 *)(lVar2 + 0x47944); + local_3a4 = *(undefined4 *)(lVar2 + 0x47948); + local_58 = *(undefined4 *)(lVar2 + 100); + local_54 = *(undefined4 *)(lVar2 + 0x68); + local_64 = *(undefined4 *)(lVar2 + 0xa4); + local_60 = *(undefined4 *)(lVar2 + 0xa8); + local_3a0 = *(undefined4 *)(&DAT_180073800 + lVar7); + local_39c = *(undefined4 *)(&DAT_180073804 + lVar7); + local_398 = *(undefined4 *)(&DAT_180073808 + lVar7); + local_394 = *(undefined4 *)(&DAT_18007380c + lVar7); + local_50 = *(undefined4 *)(lVar2 + 0x54); + local_4c = *(undefined4 *)(lVar2 + 0x58); + local_390 = *(undefined4 *)(&DAT_1800737c0 + lVar7); + local_38c = *(undefined4 *)(&DAT_1800737c4 + lVar7); + local_388 = *(undefined8 *)(&DAT_1800737e8 + lVar7); + local_369 = 0; + local_368 = *(undefined8 *)(&DAT_1800737c8 + lVar7); + local_360 = *(undefined8 *)(&DAT_1800737d0 + lVar7); + local_358 = *(undefined8 *)(&DAT_1800737d8 + lVar7); + local_350 = *(ulonglong *)(&DAT_1800737e0 + lVar7) & 0xffffffffffffff; + local_33c = *(undefined4 *)(&DAT_180073828 + lVar7); + local_338 = *(undefined8 *)(&DAT_180073818 + lVar7); + local_330 = *(undefined8 *)(&DAT_180073820 + lVar7); + if ((*(uint *)(lVar2 + 0x98) < *(uint *)(lVar2 + 0x41884)) && + (_Src = (void *)((ulonglong)*(uint *)(lVar2 + 0x98) * 0x21c + 0x41888 + lVar2), + _Src != (void *)0x0)) { + memcpy(local_328,_Src,0x21c); + } + local_fc = *(undefined4 *)(&DAT_180073780 + lVar7); + local_f8 = 0; + local_f4 = *(undefined4 *)(lVar2 + 0xd4); + local_f0 = *(undefined4 *)(lVar2 + 0xd8); + local_ec = *(undefined4 *)(lVar2 + 0xf4); + local_e8 = *(undefined4 *)(lVar2 + 0xf8); + local_e4 = *(undefined4 *)(lVar2 + 0xd0); + local_e0 = *(undefined4 *)(lVar2 + 0x10); + local_dc = *(undefined4 *)(lVar2 + 0x14); + local_d8 = *(undefined4 *)(lVar2 + 0x18); + local_d4 = *(undefined4 *)(lVar2 + 0x1c); + local_d0 = *(undefined4 *)(lVar2 + 0x20); + local_cc = *(undefined4 *)(lVar2 + 0x24); + local_c8 = *(undefined4 *)(lVar2 + 0x48); + local_c4 = *(undefined4 *)(lVar2 + 0x4c); + if (param_2 == (void *)0x0) { + FUN_180020138((undefined8 *)local_408); + uVar3 = FUN_180020a6c((longlong)local_408,(LPCWSTR)*param_3,0x1021,0); + if ((int)uVar3 == 0) { + SetLastError(0xe4ae0009); + FUN_1800203a4(local_408); + lVar2 = *param_3; + LOCK(); + piVar1 = (int *)(lVar2 + -8); + iVar5 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar5 + -1 < 1) { + (**(code **)(**(longlong **)(lVar2 + -0x18) + 8))(); + } + return 0; + } + FUN_18001ef2c(local_3d0); + CFile::Write(local_408,&local_3b8,0x374); + CFile::Write(local_408,*(void **)((&DAT_180073750)[uVar6 * 0x95] + 0x270), + local_3ac * local_3b0 * 2); + FUN_18001ef94(); + CFile::Close(local_408); + FUN_1800203a4(local_408); + iVar4 = local_3ac; + iVar5 = local_3b0; + } + else { + memcpy(param_2,&local_3b8,0x374); + iVar4 = local_3ac; + iVar5 = local_3b0; + memcpy((void *)((longlong)param_2 + 0x374),*(void **)((&DAT_180073750)[uVar6 * 0x95] + 0x270), + (ulonglong)(uint)(local_3ac * local_3b0) * 2); + } + iVar5 = iVar4 * iVar5 * 2 + 0x374; + lVar2 = *param_3; + LOCK(); + piVar1 = (int *)(lVar2 + -8); + iVar4 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(lVar2 + -0x18) + 8))(); + } + } + return iVar5; +} + + +================================================================== + +### EXPORT FUNC 180008690 (24 bytes) name=Unwind@180008690 + +void Unwind_180008690(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800086b0 (24 bytes) name=Unwind@1800086b0 + +void Unwind_1800086b0(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800086d0 (24 bytes) name=Unwind@1800086d0 + +void Unwind_1800086d0(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800086f0 (67 bytes) name=Catch@1800086f0 + +undefined * Catch_1800086f0(undefined8 param_1,longlong param_2) + +{ + longlong *plVar1; + + plVar1 = *(longlong **)(param_2 + 0x48); + *(longlong **)(param_2 + 0x60) = plVar1; + CFile::Close((CFile *)(param_2 + 0x20)); + FUN_18001ec74(plVar1); + SetLastError(0xe4ae0009); + return &DAT_180008646; +} + + +================================================================== + +### EXPORT FUNC 180008740 (956 bytes) name=FUN_180008740 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +int FUN_180008740(uint param_1,undefined8 param_2,longlong *param_3) + +{ + float fVar1; + int iVar2; + longlong lVar3; + undefined1 auVar4 [16]; + uint uVar5; + int iVar6; + size_t sVar7; + int *piVar8; + undefined8 uVar9; + undefined2 uVar10; + uint uVar11; + int *piVar12; + ulonglong uVar13; + ushort *puVar14; + undefined1 auStack_108 [32]; + int *local_e8; + uint local_e0; + CFile local_d8 [32]; + longlong *local_b8; + undefined8 local_b0; + undefined8 local_a0 [3]; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined2 local_70; + undefined2 local_6e; + ulonglong local_48; + + local_b0 = 0xfffffffffffffffe; + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_108; + uVar13 = (ulonglong)param_1; + lVar3 = (&DAT_180073750)[uVar13 * 0x95]; + local_b8 = param_3; + if (*(int *)(lVar3 + 0x234) == 0) { + SetLastError(0xe4ae0006); + lVar3 = *param_3; + LOCK(); + piVar8 = (int *)(lVar3 + -8); + iVar6 = *piVar8; + *piVar8 = *piVar8 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + iVar6 = -1; + } + else { + iVar6 = (&DAT_1800737b8)[uVar13 * 0x12a]; + iVar2 = *(int *)(&DAT_1800737bc + uVar13 * 0x4a8); + FUN_1800357d0((ulonglong *)&local_88,0,0x40); + local_88 = 0x524946; + local_84 = *(undefined4 *)(lVar3 + 0xf8); + local_80 = *(undefined4 *)(lVar3 + 0xd4); + local_7c = *(undefined4 *)(lVar3 + 0xd0); + local_78 = *(undefined4 *)(lVar3 + 0xd8); + local_74 = *(undefined4 *)(lVar3 + 0xdc); + local_70 = (undefined2)iVar6; + local_6e = (undefined2)iVar2; + uVar11 = iVar2 * iVar6; + auVar4._8_8_ = 0; + auVar4._0_8_ = (longlong)(int)uVar11; + sVar7 = SUB168(ZEXT816(4) * auVar4,0); + if (SUB168(ZEXT816(4) * auVar4,8) != 0) { + sVar7 = 0xffffffffffffffff; + } + local_e0 = uVar11; + piVar8 = thunk_FUN_18001eb74(sVar7); + local_e8 = piVar8; + if (piVar8 == (int *)0x0) { + SetLastError(0xe4ae0002); + lVar3 = *param_3; + LOCK(); + piVar8 = (int *)(lVar3 + -8); + iVar6 = *piVar8; + *piVar8 = *piVar8 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + iVar6 = -2; + } + else { + lVar3 = (&DAT_180073750)[uVar13 * 0x95]; + if (*(int *)(lVar3 + 0x234) == 0) { + SetLastError(0xe4ae0005); + thunk_FUN_180034a70(local_e8); + lVar3 = *param_3; + LOCK(); + piVar8 = (int *)(lVar3 + -8); + iVar6 = *piVar8; + *piVar8 = *piVar8 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + iVar6 = -3; + } + else { + uVar5 = *(uint *)(lVar3 + 0x47938); + if ((uVar11 & 0x3fffffff) < *(uint *)(lVar3 + 0x47938)) { + uVar5 = uVar11 & 0x3fffffff; + } + puVar14 = *(ushort **)(lVar3 + 0x270); + fVar1 = *(float *)(lVar3 + 0xd4); + uVar11 = 0; + if (uVar5 != 0) { + do { + iVar6 = FUN_180016290(lVar3,(uint)*puVar14,uVar11,1); + puVar14 = puVar14 + 1; + if (*(int *)(lVar3 + 0x78) != 0) { + iVar6 = FUN_180015b90(lVar3,iVar6,fVar1); + } + *piVar8 = iVar6; + piVar8 = piVar8 + 1; + uVar11 = uVar11 + 1; + } while (uVar11 < uVar5); + } + uVar11 = local_e0; + uVar13 = (ulonglong)local_e0; + piVar8 = local_e8; + piVar12 = local_e8; + if (0 < (int)local_e0) { + do { + iVar6 = *piVar12 / 10; + if (iVar6 < 0x8bb8) { + uVar10 = (undefined2)iVar6; + if (iVar6 < -8000) { + uVar10 = 0xe0c0; + } + } + else { + uVar10 = 0x7fff; + } + *(undefined2 *)piVar8 = uVar10; + uVar13 = uVar13 - 1; + piVar8 = (int *)((longlong)piVar8 + 2); + piVar12 = piVar12 + 1; + } while (uVar13 != 0); + } + FUN_180020138((undefined8 *)local_d8); + uVar9 = FUN_180020a6c((longlong)local_d8,(LPCWSTR)*param_3,0x1021,0); + if ((int)uVar9 == 0) { + thunk_FUN_180034a70(local_e8); + SetLastError(0xe4ae0009); + FUN_1800203a4(local_d8); + lVar3 = *param_3; + LOCK(); + piVar8 = (int *)(lVar3 + -8); + iVar6 = *piVar8; + *piVar8 = *piVar8 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + iVar6 = 0; + } + else { + FUN_18001ef2c(local_a0); + CFile::Write(local_d8,&local_88,0x40); + piVar8 = local_e8; + CFile::Write(local_d8,local_e8,uVar11 * 2); + FUN_18001ef94(); + CFile::Close(local_d8); + FUN_1800203a4(local_d8); + thunk_FUN_180034a70(piVar8); + iVar6 = uVar11 * 2 + 0x40; + lVar3 = *param_3; + LOCK(); + piVar8 = (int *)(lVar3 + -8); + iVar2 = *piVar8; + *piVar8 = *piVar8 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + } + } + } + } + return iVar6; +} + + +================================================================== + +### EXPORT FUNC 180008b20 (24 bytes) name=Unwind@180008b20 + +void Unwind_180008b20(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 180008b40 (24 bytes) name=Unwind@180008b40 + +void Unwind_180008b40(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180008b60 (24 bytes) name=Unwind@180008b60 + +void Unwind_180008b60(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 180008b80 (76 bytes) name=Catch@180008b80 + +undefined * Catch_180008b80(undefined8 param_1,longlong param_2) + +{ + longlong *plVar1; + + plVar1 = *(longlong **)(param_2 + 0x60); + *(longlong **)(param_2 + 0x70) = plVar1; + CFile::Close((CFile *)(param_2 + 0x30)); + FUN_18001ec74(plVar1); + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x20)); + SetLastError(0xe4ae0009); + return &DAT_180008a93; +} + + +================================================================== + +### EXPORT FUNC 180008bd0 (3886 bytes) name=FUN_180008bd0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_180008bd0(uint param_1) + +{ + int *piVar1; + ulonglong *puVar2; + char cVar3; + longlong *plVar4; + undefined8 uVar5; + undefined **ppuVar6; + undefined8 *puVar7; + int iVar8; + uint uVar9; + longlong lVar10; + ulonglong *_Source; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + char *pcVar14; + ulonglong uVar15; + longlong lVar16; + undefined1 auStack_d8 [32]; + ulonglong *local_b8; + uint local_b0; + uint local_ac; + uint local_a0; + uint local_9c; + undefined4 local_98; + undefined8 local_78; + undefined8 local_70 [5]; + undefined4 local_48; + float local_44; + char local_40; + char local_3f; + char local_3e; + char local_3d; + char local_3c; + char local_3b; + char local_3a; + char local_39; + ulonglong local_38; + + local_78 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + lVar16 = (longlong)(int)param_1; + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); +LAB_180008c52: + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar5 = FUN_18001d6e0((&DAT_180073758)[uVar11 * 0x95],(undefined8 *)&local_b0,local_70,1000); + if ((int)uVar5 != 0) goto LAB_180008c98; + } + SetLastError(0xe4ae0008); + uVar5 = 0; + } + else { + uVar5 = FUN_18001d6e0((&DAT_180073758)[uVar11 * 0x95],(undefined8 *)&local_b0,local_70,500); + if ((int)uVar5 == 0) goto LAB_180008c52; +LAB_180008c98: + uVar9 = local_b0; + uVar13 = local_ac >> 0x18; + if ((((((uVar13 == 0) || (uVar13 == 1)) && (local_b0 != 0x9898f19)) && + ((local_b0 != 0x9898f1a && (local_b0 != 0x9898f1c)))) && + ((local_b0 != 0x9898f1f && ((local_b0 != 0x9898f20 && (local_b0 != 0x9898f21)))))) && + (local_b0 != 0x9898f2b)) { + SetLastError(0xe4ae000b); + uVar5 = 0; + } + else { + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar11 * 0x12a),0,0x48); + *(undefined4 *)(&DAT_180073bac + lVar12) = 0; + *(undefined4 *)(&DAT_180073bb0 + lVar12) = 0; + FUN_1800357d0((ulonglong *)(&DAT_180073bb4 + lVar12),0,0x38); + FUN_1800357d0((ulonglong *)((&DAT_180073750)[uVar11 * 0x95] + 8),0,200); + (&DAT_1800737b0)[uVar11 * 0x12a] = uVar9; + *(undefined4 *)(&DAT_1800737b4 + lVar12) = 0; + *(undefined4 *)(&DAT_1800737c0 + lVar12) = 0; + *(undefined4 *)(&DAT_1800737c4 + lVar12) = 0; + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + puVar7 = (undefined8 *)(**(code **)(*ppuVar6 + 0x18))(ppuVar6); + _Source = puVar7 + 3; + local_b8 = _Source; + switch(uVar13) { + case 0: + lVar10 = -1; + pcVar14 = "C1"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590e0 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590e0,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 1: + lVar10 = -1; + pcVar14 = "M3"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059100 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059100,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 2: + lVar10 = -1; + pcVar14 = "M3Pro"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059104 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059104,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 3: + lVar10 = -1; + pcVar14 = "160Core"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590f8 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590f8,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 4: + lVar10 = -1; + pcVar14 = "M6"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_18005910c - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_18005910c,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 5: + lVar10 = -1; + pcVar14 = "C1Pro"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590e4 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590e4,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 6: + lVar10 = -1; + pcVar14 = "C1ProLt"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590f0 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590f0,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + default: + lVar10 = -1; + pcVar14 = "Mx"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059110 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059110,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + } + strncpy(&DAT_1800737e8 + lVar12,(char *)_Source,8); + (&DAT_1800737ef)[lVar12] = 0; + FUN_180032bb0(&DAT_1800737c8 + lVar12,(byte *)"%s-%u",_Source,(ulonglong)uVar9); + (&DAT_1800737e7)[lVar12] = 0; + (&DAT_1800737b8)[uVar11 * 0x12a] = local_a0; + *(uint *)(&DAT_1800737bc + lVar12) = local_9c; + *(uint *)(&DAT_1800737f8 + lVar12) = local_a0; + *(uint *)(&DAT_1800737fc + lVar12) = local_9c; + if ((local_a0 < 0x51) && (local_9c < 0x51)) { + *(uint *)(&DAT_1800737f8 + lVar12) = local_a0 * 4; + *(uint *)(&DAT_1800737fc + lVar12) = local_9c * 4; + } + if ((local_a0 < 0xa1) && (local_9c < 0xa1)) { + *(int *)(&DAT_1800737f8 + lVar12) = *(int *)(&DAT_1800737f8 + lVar12) * 2; + *(int *)(&DAT_1800737fc + lVar12) = *(int *)(&DAT_1800737fc + lVar12) * 2; + } + *(undefined4 *)(&DAT_1800737f0 + lVar12) = local_98; + *(undefined4 *)(&DAT_1800737f4 + lVar12) = local_98; + *(undefined4 *)(&DAT_180073780 + lVar12) = 2; + FUN_18000d5f0((&DAT_180073750)[uVar11 * 0x95],2); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 100) = 1; + lVar12 = (&DAT_180073750)[uVar11 * 0x95]; + EnterCriticalSection((LPCRITICAL_SECTION)(lVar12 + 0x238)); + memcpy(&DAT_180099000,&DAT_18005cde0,0xa1c); + lVar10 = 0; + do { + uVar9 = *(int *)((longlong)&DAT_180099004 + lVar10) - + *(int *)((longlong)&DAT_180099000 + lVar10); + *(uint *)((longlong)&DAT_180099a20 + lVar10) = ((uVar9 >> 1) + 0x1000000) / uVar9; + uVar9 = *(int *)((longlong)&DAT_180099008 + lVar10) - + *(int *)((longlong)&DAT_180099004 + lVar10); + *(uint *)((longlong)&DAT_180099a24 + lVar10) = ((uVar9 >> 1) + 0x1000000) / uVar9; + lVar10 = lVar10 + 8; + } while (lVar10 < 0xa18); + DAT_180073748 = (undefined4)(0x7fffffff / (longlong)DAT_18009a434); + *(undefined4 *)(lVar12 + 0x68) = 7; + LeaveCriticalSection((LPCRITICAL_SECTION)(lVar12 + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x50) = 200; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x10) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x14) = 20000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x18) = 100000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x1c) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x20) = 0xff; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x24) = 5; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x6c) = 1; + if (local_44 == _DAT_180057598) { + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa8) = 0; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xac) = local_40 * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb0) = local_3f * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb4) = local_3e * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb8) = local_3d * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xbc) = local_3c * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xc0) = local_3b * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xc4) = local_3a * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 200) = local_39 * 0x32; + } + else { + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa4) = local_48; + *(float *)((&DAT_180073750)[uVar11 * 0x95] + 0xa8) = local_44; + lVar12 = (&DAT_180073750)[uVar11 * 0x95]; + *(undefined4 *)(lVar12 + 0xac) = 0; + *(undefined4 *)(lVar12 + 0xb0) = 0; + *(undefined4 *)(lVar12 + 0xb4) = 0; + *(undefined4 *)(lVar12 + 0xb8) = 0; + *(undefined4 *)(lVar12 + 0xbc) = 0; + *(undefined4 *)(lVar12 + 0xc0) = 0; + *(undefined4 *)(lVar12 + 0xc4) = 0; + *(undefined4 *)(lVar12 + 200) = 0; + } + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xcc) = 2; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd0) = 0x41200000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd4) = 0x3f800000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd8) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xdc) = 0x3ecccccd; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf0) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf4) = 0x3f7fa57f; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf8) = 0x3f800000; + LOCK(); + puVar2 = _Source + -1; + uVar11 = *puVar2; + *(int *)puVar2 = (int)*puVar2 + -1; + UNLOCK(); + if ((int)uVar11 + -1 < 1) { + (**(code **)(*(longlong *)_Source[-3] + 8))(); + } + uVar5 = 1; + } + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180009b30 (24 bytes) name=Unwind@180009b30 + +void Unwind_180009b30(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 180009b50 (875 bytes) name=FUN_180009b50 + +undefined8 FUN_180009b50(uint param_1,uint *param_2,longlong param_3,int param_4) + +{ + LPCWSTR pWVar1; + uint uVar2; + uint uVar3; + int iVar4; + LPVOID pvVar5; + ulonglong uVar6; + undefined8 uVar7; + longlong lVar8; + ulonglong uVar9; + LPCWSTR local_res10; + uint local_50; + uint local_4c; + uint local_48; + uint local_44; + uint local_40; + uint local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + + uVar9 = (ulonglong)param_1; + if (((param_2 != (uint *)0x0) && (param_3 != 0)) && (param_4 == 2)) { + lVar8 = uVar9 * 0x4a8; + uVar2 = *param_2; + if ((((uVar2 == (&DAT_1800737b8)[uVar9 * 0x12a]) && + (uVar3 = param_2[1], uVar3 == *(uint *)(&DAT_1800737bc + lVar8))) && + (((uVar2 & 3) == 0 && (((param_2[2] & 3) == 0 && ((param_2[4] & 3) == 0)))))) && + ((uVar2 <= param_2[2] && + ((((uVar3 <= param_2[3] && (uVar3 != 0)) && (param_2[3] != 0)) && (param_2[5] != 0)))))) { + if (*(int *)(&DAT_180073778 + lVar8) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (*(int *)((&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + *(undefined4 *)(&DAT_18007377c + lVar8) = 2; + *(undefined4 *)(&DAT_180073bf4 + lVar8) = 0; + *(undefined4 *)(&DAT_180073bf0 + lVar8) = 0; + *(uint *)(&DAT_180073798 + lVar8) = *param_2; + *(uint *)(&DAT_18007379c + lVar8) = param_2[1]; + *(uint *)(&DAT_1800737a0 + lVar8) = param_2[2]; + *(uint *)(&DAT_1800737a4 + lVar8) = param_2[3]; + *(uint *)(&DAT_1800737a8 + lVar8) = param_2[4]; + *(uint *)(&DAT_1800737ac + lVar8) = param_2[5]; + uVar2 = *param_2 * param_2[1] * 2; + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + pvVar5 = thunk_FUN_18001eb74((ulonglong)uVar2 + 0x98); + *(LPVOID *)(&DAT_180073788 + lVar8) = pvVar5; + if (pvVar5 == (LPVOID)0x0) { + SetLastError(0xe4ae0002); + return 0; + } + local_50 = *param_2; + local_4c = param_2[1]; + local_48 = param_2[2]; + local_44 = param_2[3]; + local_40 = param_2[4]; + local_3c = param_2[5]; + local_38 = 4; + local_34 = 1; + local_30 = 1; + local_2c = 5; + uVar6 = FUN_18001e4c0((&DAT_180073758)[uVar9 * 0x95]); + if ((int)uVar6 == 0) { + SetLastError(0xe4ae0008); + return 0; + } + iVar4 = FUN_18000bce0((&DAT_180073750)[uVar9 * 0x95],&local_50); + if (iVar4 == 0) { + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0003); + return 0; + } + FUN_18001e3c0((&DAT_180073758)[uVar9 * 0x95],(longlong *)&local_res10); + iVar4 = FUN_18000f130((&DAT_180073750)[uVar9 * 0x95],local_res10); + if (iVar4 == 0) { + SetLastError(0xe4ae0009); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + FUN_180002f50(param_1); + if (*(int *)((longlong)(&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar7 = FUN_18001d2d0((void *)(&DAT_180073758)[uVar9 * 0x95],uVar2, + *(longlong *)(&DAT_180073788 + lVar8)); + if ((int)uVar7 != 0) { + *(longlong *)(&DAT_180073790 + lVar8) = param_3; + *(undefined4 *)(&DAT_180073bec + lVar8) = 0xffffffff; + *(undefined4 *)(&DAT_180073778 + lVar8) = 1; + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 1; + } + } + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0008); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180009ec0 (27 bytes) name=Unwind@180009ec0 + +void Unwind_180009ec0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x88)); + return; +} + + +================================================================== + +### EXPORT FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000a410 (496 bytes) name=FUN_18000a410 + +void FUN_18000a410(uint param_1,undefined8 param_2,longlong param_3) + +{ + undefined4 uVar1; + longlong lVar2; + bool bVar3; + int iVar4; + undefined8 uVar5; + undefined7 extraout_var; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + byte *pbVar9; + + uVar1 = *(undefined4 *)(param_3 + 8); + uVar7 = (ulonglong)param_1; + lVar8 = uVar7 * 0x4a8; + *(undefined4 *)(&DAT_180073800 + lVar8) = uVar1; + *(undefined4 *)(&DAT_180073804 + lVar8) = *(undefined4 *)(param_3 + 0xc); + *(undefined4 *)(&DAT_180073808 + lVar8) = *(undefined4 *)(param_3 + 0x10); + *(undefined4 *)(&DAT_18007380c + lVar8) = *(undefined4 *)(param_3 + 0x14); + *(undefined8 *)(&DAT_180073810 + lVar8) = *(undefined8 *)(param_3 + 0x18); + *(undefined8 *)(&DAT_180073818 + lVar8) = *(undefined8 *)(param_3 + 0x28); + *(undefined8 *)(&DAT_180073820 + lVar8) = *(undefined8 *)(param_3 + 0x30); + *(undefined4 *)(&DAT_180073828 + lVar8) = *(undefined4 *)(param_3 + 0x38); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60) = uVar1; + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c) = *(undefined4 *)(&DAT_180073804 + lVar8); + if (*(int *)(&DAT_180073ba0 + lVar8) < *(int *)(param_3 + 0x24)) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + pbVar9 = (byte *)0x0; + *(undefined4 *)(&DAT_180073ba0 + lVar8) = *(undefined4 *)(param_3 + 0x24); + uVar5 = FUN_18000ca30(lVar2,param_2,1,1,0); + if ((int)uVar5 != 0) { + if (*(int *)((&DAT_180073760)[uVar7 * 0x95] + 0x44) != 0) { + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((*(int *)(lVar2 + 0x228) != 0) && (*(int *)(lVar2 + 0x234) != 0)) { + if (*(int *)(lVar2 + 0x4203c) == 0) { + FUN_180010e80(lVar2); + } + pbVar9 = *(byte **)(lVar2 + 0x2a0); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) { + iVar4 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * *(int *)(lVar2 + 0x6cc) + ; + iVar4 = iVar4 + (iVar4 >> 0x1f & 7U); + uVar6 = iVar4 >> 0x1f; + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar7 * 0x95],pbVar9,(iVar4 >> 3 ^ uVar6) - uVar6, + lVar2 + 0x6c8); + if ((int)CONCAT71(extraout_var,bVar3) == 0) { + FUN_180001c50((&DAT_180073760)[uVar7 * 0x95]); + } + } + } + if (*(code **)(&DAT_180073790 + lVar8) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar8)) + (param_1,*(undefined4 *)(param_3 + 8),*(undefined4 *)(param_3 + 0x24),0,2, + *(undefined8 *)(&DAT_180073770 + lVar8)); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000a600 (372 bytes) name=FUN_18000a600 + +longlong * FUN_18000a600(longlong *param_1,LPCSTR param_2) + +{ + int *piVar1; + int iVar2; + uint uVar3; + longlong *plVar4; + undefined **ppuVar5; + longlong lVar6; + HMODULE pHVar7; + void *pvVar8; + ulonglong uVar9; + int iVar10; + void *pvVar11; + void *local_res8; + + if (*(longlong **)(*param_1 + -0x18) != (longlong *)0x0) { + plVar4 = (longlong *)(**(code **)(**(longlong **)(*param_1 + -0x18) + 0x20))(); + if (plVar4 != (longlong *)0x0) goto LAB_18000a651; + } + ppuVar5 = FUN_18001fcc0(); + plVar4 = (longlong *)(**(code **)(*ppuVar5 + 0x20))(ppuVar5); +LAB_18000a651: + if (plVar4 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar6 = (**(code **)(*plVar4 + 0x18))(plVar4); + pvVar8 = (void *)(lVar6 + 0x18); + local_res8 = pvVar8; + if ((param_2 == (LPCSTR)0x0) || (((ulonglong)param_2 & 0xffffffffffff0000) != 0)) { + FUN_18000ad80((longlong *)&local_res8,param_2); + pvVar8 = local_res8; + } + else { + pHVar7 = (HMODULE)FUN_18001fcac(); + if (pHVar7 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_res8,pHVar7,(uint)param_2 & 0xffff); + pvVar8 = local_res8; + } + } + iVar2 = *(int *)((longlong)pvVar8 + -0x10); + lVar6 = *param_1; + uVar9 = (longlong)pvVar8 - lVar6 >> 1; + uVar3 = *(uint *)(lVar6 + -0x10); + iVar10 = uVar3 + iVar2; + if ((int)(*(int *)(lVar6 + -0xc) - iVar10 | 1U - *(int *)(lVar6 + -8)) < 0) { + FUN_18000b190(param_1,iVar10); + } + pvVar11 = pvVar8; + if (uVar9 <= uVar3) { + pvVar11 = (void *)(*param_1 + uVar9 * 2); + } + uVar9 = (longlong)iVar2 * 2; + FUN_180032c60((ulonglong *)(*param_1 + (ulonglong)uVar3 * 2),uVar9,pvVar11,uVar9); + if ((-1 < iVar10) && (iVar10 <= *(int *)(*param_1 + -0xc))) { + *(int *)(*param_1 + -0x10) = iVar10; + *(undefined2 *)(*param_1 + (longlong)iVar10 * 2) = 0; + LOCK(); + piVar1 = (int *)((longlong)pvVar8 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)pvVar8 + -0x18) + 8))(); + } + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18000a780 (24 bytes) name=Unwind@18000a780 + +void Unwind_18000a780(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x60)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000a7a0 (24 bytes) name=Unwind@18000a7a0 + +void Unwind_18000a7a0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x60)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000a7c0 (395 bytes) name=FUN_18000a7c0 + +longlong * FUN_18000a7c0(longlong *param_1,longlong *param_2,int param_3) + +{ + int iVar1; + void *pvVar2; + ulonglong uVar3; + undefined8 *puVar4; + longlong lVar5; + undefined **ppuVar6; + + pvVar2 = (void *)*param_1; + iVar1 = *(int *)((longlong)pvVar2 + -0x10); + if (param_3 < 0) { + param_3 = 0; + } + if (iVar1 <= param_3) { + puVar4 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar2 + -0x18) + 0x20))(); + if ((-1 < *(int *)((longlong)pvVar2 + -8)) && + (puVar4 == *(undefined8 **)((longlong)pvVar2 + -0x18))) { + LOCK(); + *(int *)((longlong)pvVar2 + -8) = *(int *)((longlong)pvVar2 + -8) + 1; + UNLOCK(); + *param_2 = (longlong)pvVar2; + return param_2; + } + lVar5 = (**(code **)*puVar4)(puVar4,*(undefined4 *)((longlong)pvVar2 + -0x10),2); + if (lVar5 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(lVar5 + 8) = *(undefined4 *)((longlong)pvVar2 + -0x10); + uVar3 = (longlong)(*(int *)((longlong)pvVar2 + -0x10) + 1) * 2; + FUN_180032c60((ulonglong *)(lVar5 + 0x18),uVar3,pvVar2,uVar3); + *param_2 = lVar5 + 0x18; + return param_2; + } + if (*(longlong **)((longlong)pvVar2 + -0x18) != (longlong *)0x0) { + puVar4 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar2 + -0x18) + 0x20))(); + if (puVar4 != (undefined8 *)0x0) goto LAB_18000a8b1; + } + ppuVar6 = FUN_18001fcc0(); + puVar4 = (undefined8 *)(**(code **)(*ppuVar6 + 0x20))(ppuVar6); +LAB_18000a8b1: + pvVar2 = (void *)(*param_1 + ((longlong)iVar1 - (longlong)param_3) * 2); + if (puVar4 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if ((pvVar2 == (void *)0x0) && (param_3 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + lVar5 = (**(code **)*puVar4)(puVar4,param_3,2); + if (lVar5 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *param_2 = lVar5 + 0x18; + if ((-1 < param_3) && (param_3 <= *(int *)(lVar5 + 0xc))) { + *(int *)(lVar5 + 8) = param_3; + uVar3 = (longlong)param_3 * 2; + *(undefined2 *)(uVar3 + *param_2) = 0; + FUN_180032c60((ulonglong *)*param_2,uVar3,pvVar2,uVar3); + return param_2; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18000a950 (347 bytes) name=FUN_18000a950 + +longlong * FUN_18000a950(undefined8 *param_1,longlong *param_2,int param_3) + +{ + void *pvVar1; + ulonglong uVar2; + undefined8 *puVar3; + longlong *plVar4; + undefined **ppuVar5; + longlong lVar6; + + pvVar1 = (void *)*param_1; + if (param_3 < 0) { + param_3 = 0; + } + if (*(int *)((longlong)pvVar1 + -0x10) <= param_3) { + plVar4 = (longlong *)((longlong)pvVar1 + -0x18); + puVar3 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar1 + -0x18) + 0x20))(); + if ((*(int *)((longlong)pvVar1 + -8) < 0) || (puVar3 != (undefined8 *)*plVar4)) { + plVar4 = (longlong *)(**(code **)*puVar3)(puVar3,*(undefined4 *)((longlong)pvVar1 + -0x10),2); + if (plVar4 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(plVar4 + 1) = *(undefined4 *)((longlong)pvVar1 + -0x10); + uVar2 = (longlong)(*(int *)((longlong)pvVar1 + -0x10) + 1) * 2; + FUN_180032c60((ulonglong *)(plVar4 + 3),uVar2,pvVar1,uVar2); + } + else { + LOCK(); + *(int *)((longlong)pvVar1 + -8) = *(int *)((longlong)pvVar1 + -8) + 1; + UNLOCK(); + } + *param_2 = (longlong)(plVar4 + 3); + return param_2; + } + if (*(longlong **)((longlong)pvVar1 + -0x18) != (longlong *)0x0) { + puVar3 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar1 + -0x18) + 0x20))(); + if (puVar3 != (undefined8 *)0x0) goto LAB_18000aa22; + } + ppuVar5 = FUN_18001fcc0(); + puVar3 = (undefined8 *)(**(code **)(*ppuVar5 + 0x20))(ppuVar5); +LAB_18000aa22: + pvVar1 = (void *)*param_1; + if (puVar3 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if ((pvVar1 == (void *)0x0) && (param_3 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + lVar6 = (**(code **)*puVar3)(puVar3,param_3,2); + if (lVar6 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *param_2 = lVar6 + 0x18; + if ((-1 < param_3) && (param_3 <= *(int *)(lVar6 + 0xc))) { + *(int *)(lVar6 + 8) = param_3; + uVar2 = (longlong)param_3 * 2; + *(undefined2 *)(uVar2 + *param_2) = 0; + FUN_180032c60((ulonglong *)*param_2,uVar2,pvVar1,uVar2); + return param_2; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18000aab0 (175 bytes) name=FUN_18000aab0 + +void FUN_18000aab0(longlong *param_1,void *param_2,int param_3) + +{ + uint uVar1; + longlong lVar2; + int iVar3; + ulonglong uVar4; + + lVar2 = *param_1; + uVar1 = *(uint *)(lVar2 + -0x10); + uVar4 = (longlong)param_2 - lVar2 >> 1; + iVar3 = uVar1 + param_3; + if ((int)(1U - *(int *)(lVar2 + -8) | *(int *)(lVar2 + -0xc) - iVar3) < 0) { + FUN_18000b190(param_1,iVar3); + } + if (uVar4 <= uVar1) { + param_2 = (void *)(*param_1 + uVar4 * 2); + } + FUN_180032c60((ulonglong *)(*param_1 + (ulonglong)uVar1 * 2),(longlong)param_3 * 2,param_2, + (longlong)param_3 * 2); + if ((-1 < iVar3) && (iVar3 <= *(int *)(*param_1 + -0xc))) { + *(int *)(*param_1 + -0x10) = iVar3; + *(undefined2 *)(*param_1 + (longlong)iVar3 * 2) = 0; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18000ab60 (95 bytes) name=FUN_18000ab60 + +void FUN_18000ab60(longlong *param_1,int param_2) + +{ + int iVar1; + longlong lVar2; + int iVar3; + + lVar2 = *param_1; + if (param_2 < *(int *)(lVar2 + -0x10)) { + param_2 = *(int *)(lVar2 + -0x10); + } + if (1 < *(int *)(lVar2 + -8)) { + FUN_18000abc0(param_1,param_2); + return; + } + iVar1 = *(int *)(lVar2 + -0xc); + if (iVar1 < param_2) { + if (0x400 < iVar1) { + iVar3 = iVar1 + 0x400; + if (iVar1 + 0x400 < param_2) { + iVar3 = param_2; + } + FUN_18000ac70(param_1,iVar3); + return; + } + iVar3 = iVar1 * 2; + if (iVar1 * 2 < param_2) { + iVar3 = param_2; + } + FUN_18000ac70(param_1,iVar3); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000abc0 (170 bytes) name=FUN_18000abc0 + +void FUN_18000abc0(undefined8 *param_1,int param_2) + +{ + int *piVar1; + int iVar2; + void *pvVar3; + undefined8 *puVar4; + longlong lVar5; + + pvVar3 = (void *)*param_1; + iVar2 = *(int *)((longlong)pvVar3 + -0x10); + puVar4 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar3 + -0x18) + 0x20))(); + lVar5 = (**(code **)*puVar4)(puVar4,param_2,1); + if (lVar5 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + if (iVar2 < param_2) { + param_2 = iVar2; + } + FUN_180032c60((ulonglong *)(lVar5 + 0x18),(longlong)(param_2 + 1),pvVar3,(longlong)(param_2 + 1)); + *(int *)(lVar5 + 8) = iVar2; + LOCK(); + piVar1 = (int *)((longlong)pvVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)pvVar3 + -0x18) + 8)) + (*(longlong **)((longlong)pvVar3 + -0x18),(longlong)pvVar3 + -0x18); + } + *param_1 = (ulonglong *)(lVar5 + 0x18); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ac70 (74 bytes) name=FUN_18000ac70 + +void FUN_18000ac70(longlong *param_1,int param_2) + +{ + longlong lVar1; + + if ((*(int *)(*param_1 + -0xc) < param_2) && (0 < param_2)) { + lVar1 = (**(code **)(**(longlong **)(*param_1 + -0x18) + 0x10))(); + if (lVar1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *param_1 = lVar1 + 0x18; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); +} + + +================================================================== + +### EXPORT FUNC 18000acc0 (160 bytes) name=FUN_18000acc0 + +longlong * FUN_18000acc0(longlong *param_1,void *param_2,int param_3,undefined8 *param_4) + +{ + ulonglong uVar1; + longlong lVar2; + + if (param_4 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if ((param_2 == (void *)0x0) && (param_3 != 0)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + lVar2 = (**(code **)*param_4)(param_4,param_3,2); + if (lVar2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *param_1 = lVar2 + 0x18; + if ((-1 < param_3) && (param_3 <= *(int *)(lVar2 + 0xc))) { + *(int *)(lVar2 + 8) = param_3; + uVar1 = (longlong)param_3 * 2; + *(undefined2 *)(uVar1 + *param_1) = 0; + FUN_180032c60((ulonglong *)*param_1,uVar1,param_2,uVar1); + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18000ad70 (14 bytes) name=FUN_18000ad70 + +void FUN_18000ad70(void) + +{ + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8fff2); +} + + +================================================================== + +### EXPORT FUNC 18000ad80 (314 bytes) name=FUN_18000ad80 + +longlong * FUN_18000ad80(longlong *param_1,LPCSTR param_2) + +{ + int *piVar1; + LPWSTR lpWideCharStr; + longlong *plVar2; + UINT UVar3; + int iVar4; + longlong lVar5; + + if (param_2 != (LPCSTR)0x0) { + UVar3 = (*(code *)PTR__AtlGetThreadACPThunk_18006e7b0)(); + iVar4 = MultiByteToWideChar(UVar3,0,param_2,-1,(LPWSTR)0x0,0); + iVar4 = iVar4 + -1; + if (0 < iVar4) { + if ((int)(1U - *(int *)(*param_1 + -8) | *(int *)(*param_1 + -0xc) - iVar4) < 0) { + FUN_18000b190(param_1,iVar4); + } + lpWideCharStr = (LPWSTR)*param_1; + UVar3 = (*(code *)PTR__AtlGetThreadACPThunk_18006e7b0)(); + MultiByteToWideChar(UVar3,0,param_2,-1,lpWideCharStr,iVar4); + if (iVar4 <= *(int *)(*param_1 + -0xc)) { + *(int *)(*param_1 + -0x10) = iVar4; + *(undefined2 *)(*param_1 + (longlong)iVar4 * 2) = 0; + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + } + lVar5 = *param_1; + plVar2 = *(longlong **)(lVar5 + -0x18); + if (*(int *)(lVar5 + -0x10) != 0) { + if (*(int *)(lVar5 + -8) < 0) { + if (*(int *)(lVar5 + -0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(lVar5 + -0x10) = 0; + *(undefined2 *)*param_1 = 0; + } + else { + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar4 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + lVar5 = (**(code **)(*plVar2 + 0x18))(plVar2); + *param_1 = lVar5 + 0x18; + } + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000aec0 (129 bytes) name=FUN_18000aec0 + +void FUN_18000aec0(longlong *param_1) + +{ + int *piVar1; + int iVar2; + longlong *plVar3; + longlong lVar4; + + lVar4 = *param_1; + plVar3 = *(longlong **)(lVar4 + -0x18); + if (*(int *)(lVar4 + -0x10) != 0) { + if (*(int *)(lVar4 + -8) < 0) { + if (*(int *)(lVar4 + -0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(lVar4 + -0x10) = 0; + *(undefined2 *)*param_1 = 0; + return; + } + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + lVar4 = (**(code **)(*plVar3 + 0x18))(plVar3); + *param_1 = lVar4 + 0x18; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000af50 (379 bytes) name=FUN_18000af50 + +undefined8 FUN_18000af50(longlong *param_1,HMODULE param_2,uint param_3) + +{ + ushort uVar1; + ushort uVar2; + DWORD DVar3; + int iVar4; + HRSRC hResInfo; + HGLOBAL hResData; + ushort *puVar5; + undefined8 uVar6; + longlong lVar7; + uint uVar8; + ushort *puVar9; + + hResInfo = FindResourceW(param_2,(LPCWSTR)(ulonglong)(ushort)((short)(param_3 >> 4) + 1), + (LPCWSTR)0x6); + if (((hResInfo != (HRSRC)0x0) && + (hResData = LoadResource(param_2,hResInfo), hResData != (HGLOBAL)0x0)) && + (puVar5 = LockResource(hResData), puVar5 != (ushort *)0x0)) { + DVar3 = SizeofResource(param_2,hResInfo); + puVar9 = (ushort *)((ulonglong)DVar3 + (longlong)puVar5); + for (uVar8 = param_3 & 0xf; uVar8 != 0; uVar8 = uVar8 - 1) { + if (puVar9 <= puVar5) { + return 0; + } + puVar5 = puVar5 + (ulonglong)*puVar5 + 1; + } + if ((puVar5 < puVar9) && (uVar2 = *puVar5, uVar2 != 0)) { + if ((int)(1U - *(int *)(*param_1 + -8) | *(int *)(*param_1 + -0xc) - (uint)uVar2) < 0) { + FUN_18000b190(param_1,(uint)uVar2); + } + uVar8 = (uint)*puVar5; + if (*puVar5 == 0xffffffff) { + lVar7 = -1; + puVar9 = puVar5 + 1; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + uVar1 = *puVar9; + puVar9 = puVar9 + 1; + } while (uVar1 != 0); + uVar8 = ~(uint)lVar7; + } + uVar6 = FUN_180032c60((ulonglong *)*param_1,(ulonglong)uVar2 * 2,puVar5 + 1, + (longlong)(int)uVar8 * 2); + iVar4 = (int)uVar6; + if (iVar4 != 0) { + if (iVar4 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar4 == 0x16) || (iVar4 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar4 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + if (*(int *)(*param_1 + -0xc) < (int)(uint)uVar2) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(uint *)(*param_1 + -0x10) = (uint)uVar2; + *(undefined2 *)((ulonglong)uVar2 * 2 + *param_1) = 0; + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000b0d0 (156 bytes) name=FUN_18000b0d0 + +ushort * FUN_18000b0d0(HMODULE param_1,HRSRC param_2,uint param_3) + +{ + DWORD DVar1; + HGLOBAL hResData; + ushort *puVar2; + uint uVar3; + ushort *puVar4; + + hResData = LoadResource(param_1,param_2); + if (hResData == (HGLOBAL)0x0) { + return (ushort *)0x0; + } + puVar2 = LockResource(hResData); + if (puVar2 != (ushort *)0x0) { + DVar1 = SizeofResource(param_1,param_2); + puVar4 = (ushort *)((ulonglong)DVar1 + (longlong)puVar2); + for (uVar3 = param_3 & 0xf; uVar3 != 0; uVar3 = uVar3 - 1) { + if (puVar4 <= puVar2) { + return (ushort *)0x0; + } + puVar2 = puVar2 + (ulonglong)*puVar2 + 1; + } + if (puVar2 < puVar4) { + if (*puVar2 == 0) { + return (ushort *)0x0; + } + return puVar2; + } + } + return (ushort *)0x0; +} + + +================================================================== + +### EXPORT FUNC 18000b170 (23 bytes) name=FUN_18000b170 + +void FUN_18000b170(int param_1) + +{ + code *pcVar1; + + if (param_1 == -0x7ff8fff2) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + FUN_180020c68(param_1); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000b190 (95 bytes) name=FUN_18000b190 + +void FUN_18000b190(longlong *param_1,int param_2) + +{ + int iVar1; + longlong lVar2; + int iVar3; + + lVar2 = *param_1; + if (param_2 < *(int *)(lVar2 + -0x10)) { + param_2 = *(int *)(lVar2 + -0x10); + } + if (1 < *(int *)(lVar2 + -8)) { + FUN_18000b1f0(param_1,param_2); + return; + } + iVar1 = *(int *)(lVar2 + -0xc); + if (iVar1 < param_2) { + if (0x400 < iVar1) { + iVar3 = iVar1 + 0x400; + if (iVar1 + 0x400 < param_2) { + iVar3 = param_2; + } + FUN_18000b2a0(param_1,iVar3); + return; + } + iVar3 = iVar1 * 2; + if (iVar1 * 2 < param_2) { + iVar3 = param_2; + } + FUN_18000b2a0(param_1,iVar3); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b1f0 (173 bytes) name=FUN_18000b1f0 + +void FUN_18000b1f0(undefined8 *param_1,int param_2) + +{ + int *piVar1; + int iVar2; + void *pvVar3; + ulonglong uVar4; + undefined8 *puVar5; + longlong lVar6; + + pvVar3 = (void *)*param_1; + iVar2 = *(int *)((longlong)pvVar3 + -0x10); + puVar5 = (undefined8 *)(**(code **)(**(longlong **)((longlong)pvVar3 + -0x18) + 0x20))(); + lVar6 = (**(code **)*puVar5)(puVar5,param_2,2); + if (lVar6 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + if (iVar2 < param_2) { + param_2 = iVar2; + } + uVar4 = (longlong)(param_2 + 1) * 2; + FUN_180032c60((ulonglong *)(lVar6 + 0x18),uVar4,pvVar3,uVar4); + *(int *)(lVar6 + 8) = iVar2; + LOCK(); + piVar1 = (int *)((longlong)pvVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)pvVar3 + -0x18) + 8)) + (*(longlong **)((longlong)pvVar3 + -0x18),(longlong)pvVar3 + -0x18); + } + *param_1 = (ulonglong *)(lVar6 + 0x18); + return; +} + + +================================================================== + +### EXPORT FUNC 18000b2a0 (74 bytes) name=FUN_18000b2a0 + +void FUN_18000b2a0(longlong *param_1,int param_2) + +{ + longlong lVar1; + + if ((*(int *)(*param_1 + -0xc) < param_2) && (0 < param_2)) { + lVar1 = (**(code **)(**(longlong **)(*param_1 + -0x18) + 0x10))(); + if (lVar1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *param_1 = lVar1 + 0x18; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); +} + + +================================================================== + +### EXPORT FUNC 18000b2f0 (5 bytes) name=thunk_FUN_18001ef94 + +void thunk_FUN_18001ef94(void) + +{ + undefined8 *puVar1; + longlong *plVar2; + DWORD dwErrCode; + void *pvVar3; + + dwErrCode = GetLastError(); + pvVar3 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar3 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + SetLastError(dwErrCode); + puVar1 = *(undefined8 **)((longlong)pvVar3 + 0x20); + if (puVar1 != (undefined8 *)0x0) { + plVar2 = (longlong *)puVar1[1]; + if ((plVar2 != (longlong *)0x0) && (0 < (int)plVar2[1])) { + (**(code **)(*plVar2 + 8))(plVar2,1); + } + *(undefined8 *)((longlong)pvVar3 + 0x20) = *puVar1; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b300 (133 bytes) name=FUN_18000b300 + +longlong * FUN_18000b300(longlong *param_1) + +{ + ulonglong uVar1; + undefined8 *puVar2; + longlong *plVar3; + + puVar2 = (undefined8 *)(**(code **)(*(longlong *)*param_1 + 0x20))(); + if ((-1 < (int)param_1[2]) && (puVar2 == (undefined8 *)*param_1)) { + LOCK(); + *(int *)(param_1 + 2) = (int)param_1[2] + 1; + UNLOCK(); + return param_1; + } + plVar3 = (longlong *)(**(code **)*puVar2)(puVar2,(int)param_1[1],2); + if (plVar3 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(int *)(plVar3 + 1) = (int)param_1[1]; + uVar1 = (longlong)((int)param_1[1] + 1) * 2; + FUN_180032c60((ulonglong *)(plVar3 + 3),uVar1,param_1 + 3,uVar1); + return plVar3; +} + + +================================================================== + +### EXPORT FUNC 18000b390 (231 bytes) name=FUN_18000b390 + +longlong * FUN_18000b390(longlong *param_1,undefined8 *param_2) + +{ + int *piVar1; + int iVar2; + void *pvVar3; + longlong lVar4; + ulonglong uVar5; + undefined8 *puVar6; + longlong *plVar7; + longlong *plVar8; + + pvVar3 = (void *)*param_2; + lVar4 = *param_1; + plVar7 = (longlong *)((longlong)pvVar3 + -0x18); + plVar8 = (longlong *)(lVar4 + -0x18); + if (plVar7 != plVar8) { + if ((*(int *)(lVar4 + -8) < 0) || ((longlong *)*plVar7 != (longlong *)*plVar8)) { + FUN_18000b480(param_1,pvVar3,*(int *)((longlong)pvVar3 + -0x10)); + } + else { + puVar6 = (undefined8 *)(**(code **)(*(longlong *)*plVar7 + 0x20))(); + if ((*(int *)((longlong)pvVar3 + -8) < 0) || (puVar6 != (undefined8 *)*plVar7)) { + plVar7 = (longlong *) + (**(code **)*puVar6)(puVar6,*(undefined4 *)((longlong)pvVar3 + -0x10),2); + if (plVar7 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(plVar7 + 1) = *(undefined4 *)((longlong)pvVar3 + -0x10); + uVar5 = (longlong)(*(int *)((longlong)pvVar3 + -0x10) + 1) * 2; + FUN_180032c60((ulonglong *)(plVar7 + 3),uVar5,pvVar3,uVar5); + } + else { + LOCK(); + *(int *)((longlong)pvVar3 + -8) = *(int *)((longlong)pvVar3 + -8) + 1; + UNLOCK(); + } + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(*(longlong *)*plVar8 + 8))((longlong *)*plVar8,plVar8); + } + *param_1 = (longlong)(plVar7 + 3); + } + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000b480 (337 bytes) name=FUN_18000b480 + +void FUN_18000b480(longlong *param_1,void *param_2,int param_3) + +{ + int *piVar1; + int iVar2; + uint uVar3; + longlong *plVar4; + longlong lVar5; + ulonglong *_Dst; + longlong lVar6; + ulonglong uVar7; + + lVar6 = (longlong)param_3; + if (param_3 == 0) { + lVar6 = *param_1; + plVar4 = *(longlong **)(lVar6 + -0x18); + if (*(int *)(lVar6 + -0x10) != 0) { + if (-1 < *(int *)(lVar6 + -8)) { + LOCK(); + piVar1 = (int *)(lVar6 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar6 + -0x18) + 8))(); + } + lVar6 = (**(code **)(*plVar4 + 0x18))(plVar4); + *param_1 = lVar6 + 0x18; + return; + } + if (*(int *)(lVar6 + -0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(lVar6 + -0x10) = 0; + *(undefined2 *)*param_1 = 0; + return; + } + } + else { + if (param_2 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + lVar5 = *param_1; + uVar3 = *(uint *)(lVar5 + -0x10); + uVar7 = (longlong)param_2 - lVar5 >> 1; + if ((int)(1U - *(int *)(lVar5 + -8) | *(int *)(lVar5 + -0xc) - param_3) < 0) { + FUN_18000b190(param_1,param_3); + } + _Dst = (ulonglong *)*param_1; + if (uVar3 < uVar7) { + FUN_180032c60(_Dst,lVar6 * 2,param_2,lVar6 * 2); + } + else { + memmove_s(_Dst,lVar6 * 2,(void *)((longlong)_Dst + uVar7 * 2),lVar6 * 2); + } + if ((param_3 < 0) || (*(int *)(*param_1 + -0xc) < param_3)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(*param_1 + -0x10) = param_3; + *(undefined2 *)(lVar6 * 2 + *param_1) = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b5e0 (40 bytes) name=FUN_18000b5e0 + +void FUN_18000b5e0(longlong *param_1) + +{ + int *piVar1; + int iVar2; + longlong lVar3; + + lVar3 = *param_1; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b610 (180 bytes) name=FUN_18000b610 + +longlong * FUN_18000b610(longlong *param_1,short *param_2) + +{ + short sVar1; + undefined **ppuVar2; + longlong lVar3; + HMODULE pHVar4; + int iVar5; + short *psVar6; + + ppuVar2 = FUN_18001fcc0(); + if (ppuVar2 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar3 = (**(code **)(*ppuVar2 + 0x18))(); + *param_1 = lVar3 + 0x18; + if (param_2 == (short *)0x0) { + iVar5 = 0; + } + else { + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar4 = (HMODULE)FUN_18001fcac(); + if (pHVar4 == (HMODULE)0x0) { + return param_1; + } + FUN_18000af50(param_1,pHVar4,(uint)param_2 & 0xffff); + return param_1; + } + lVar3 = -1; + psVar6 = param_2; + do { + if (lVar3 == 0) break; + lVar3 = lVar3 + -1; + sVar1 = *psVar6; + psVar6 = psVar6 + 1; + } while (sVar1 != 0); + iVar5 = ~(uint)lVar3 - 1; + } + FUN_18000b480(param_1,param_2,iVar5); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000b6d0 (24 bytes) name=Unwind@18000b6d0 + +void Unwind_18000b6d0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000b6f0 (929 bytes) name=FUN_18000b6f0 + +undefined8 * FUN_18000b6f0(undefined8 *param_1) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + + *param_1 = CFunctions::vftable; + param_1[0x83dd] = 0; + param_1[0x83de] = 0; + param_1[0x83df] = 0; + *(undefined4 *)(param_1 + 0x83e0) = 0; + *(undefined4 *)((longlong)param_1 + 0x41f04) = 0; + *(undefined4 *)(param_1 + 0x83e1) = 0; + *(undefined4 *)((longlong)param_1 + 0x41f0c) = 0; + param_1[0x83dc] = CAccumulator::vftable; + param_1[0x83e2] = CAccumulator::vftable; + param_1[0x83e3] = 0; + param_1[0x83e4] = 0; + param_1[0x83e5] = 0; + *(undefined4 *)(param_1 + 0x83e6) = 0; + *(undefined4 *)((longlong)param_1 + 0x41f34) = 0; + *(undefined4 *)(param_1 + 0x83e7) = 0; + *(undefined4 *)((longlong)param_1 + 0x41f3c) = 0; + param_1[0x83e9] = 0; + param_1[0x83ea] = 0; + param_1[0x83eb] = 0; + param_1[0x83ed] = 0; + param_1[0x83ec] = 0; + *(undefined4 *)(param_1 + 0x83ee) = 0; + *(undefined4 *)((longlong)param_1 + 0x41f74) = 0; + *(undefined4 *)(param_1 + 0x83ef) = 0; + *(undefined4 *)((longlong)param_1 + 0x41f7c) = 0; + param_1[0x83e8] = CSmoother::vftable; + param_1[0x83f0] = CSmoother::vftable; + param_1[0x83f1] = 0; + param_1[0x83f2] = 0; + param_1[0x83f3] = 0; + param_1[0x83f5] = 0; + param_1[0x83f4] = 0; + *(undefined4 *)(param_1 + 0x83f6) = 0; + *(undefined4 *)((longlong)param_1 + 0x41fb4) = 0; + *(undefined4 *)(param_1 + 0x83f7) = 0; + *(undefined4 *)((longlong)param_1 + 0x41fbc) = 0; + InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x47)); + FUN_1800357d0(param_1 + 0x83f8,0,0x28); + FUN_1800357d0(param_1 + 1,0,200); + *(undefined1 *)((longlong)param_1 + 0x2d) = 0xff; + *(undefined4 *)(param_1 + 0x8f27) = 0; + *(undefined4 *)((longlong)param_1 + 0x4793c) = 0; + *(undefined4 *)(param_1 + 0x8f28) = 0; + FUN_1800357d0(param_1 + 0x83ff,0,0x2ca0); + FUN_1800357d0(param_1 + 0x8993,0,0x2ca0); + FUN_1800357d0(param_1 + 0x8268,0,0x540); + FUN_1800357d0(param_1 + 0x8310,0,0x65c); + *(undefined4 *)(param_1 + 0x83fd) = 0; + *(undefined4 *)((longlong)param_1 + 0x41fec) = 0; + *(undefined4 *)(param_1 + 0x83fe) = 0; + FUN_1800357d0(param_1 + 0x1a,0,0x2c); + *(undefined4 *)(param_1 + 0x1a) = 0x41200000; + *(undefined4 *)((longlong)param_1 + 0xd4) = 0x3f800000; + *(undefined4 *)(param_1 + 0x1b) = 0x41a00000; + *(undefined4 *)((longlong)param_1 + 0xdc) = 0x3ecccccd; + *(undefined4 *)(param_1 + 0x1c) = 0x41a00000; + *(undefined4 *)((longlong)param_1 + 0xe4) = 0; + *(undefined4 *)(param_1 + 0x1d) = 0; + *(undefined4 *)((longlong)param_1 + 0xec) = 0; + *(undefined4 *)(param_1 + 0x1e) = 0; + *(undefined4 *)((longlong)param_1 + 0xf4) = 0x3f7fa57f; + *(undefined4 *)(param_1 + 0x1f) = 0x3f800000; + *(undefined4 *)((longlong)param_1 + 0xfc) = 0; + *(undefined4 *)(param_1 + 0x45) = 0; + *(undefined4 *)((longlong)param_1 + 0x22c) = 0; + *(undefined4 *)((longlong)param_1 + 0x234) = 0; + *(undefined4 *)(param_1 + 0x46) = 0; + param_1[0x4c] = 0; + param_1[0x4d] = 0; + param_1[0x4e] = 0; + param_1[0x4f] = 0; + param_1[0x54] = 0; + param_1[0x55] = 0; + param_1[0x56] = 0; + param_1[0x50] = 0; + param_1[0x51] = 0; + param_1[0x52] = 0; + param_1[0x53] = 0; + param_1[0x57] = 0; + param_1[0x58] = 0; + *(undefined4 *)((longlong)param_1 + 0x47944) = 8; + *(undefined4 *)(param_1 + 0x8f29) = 0xffff3cb0; + *(undefined4 *)((longlong)param_1 + 0x4794c) = 3; + *(undefined4 *)(param_1 + 0x8f2a) = 0; + *(undefined4 *)((longlong)param_1 + 0x47954) = 0; + param_1[0x44] = 0; + FUN_18000d5f0((longlong)param_1,0); + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x47)); + memcpy(&DAT_180099000,&DAT_18005cde0,0xa1c); + lVar2 = 0; + do { + lVar3 = lVar2 + 8; + uVar1 = *(int *)((longlong)&DAT_180099004 + lVar2) - *(int *)((longlong)&DAT_180099000 + lVar2); + *(uint *)((longlong)&DAT_180099a20 + lVar2) = ((uVar1 >> 1) + 0x1000000) / uVar1; + uVar1 = *(int *)((longlong)&DAT_180099008 + lVar2) - *(int *)((longlong)&DAT_180099004 + lVar2); + *(uint *)((longlong)&DAT_180099a24 + lVar2) = ((uVar1 >> 1) + 0x1000000) / uVar1; + lVar2 = lVar3; + } while (lVar3 < 0xa18); + lVar2 = (longlong)DAT_18009a434; + *(undefined4 *)(param_1 + 0xd) = 7; + DAT_180073748 = (undefined4)(0x7fffffff / lVar2); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x47)); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000baa0 (47 bytes) name=FUN_18000baa0 + +undefined8 * FUN_18000baa0(undefined8 *param_1,uint param_2) + +{ + FUN_18000bad0(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000bad0 (389 bytes) name=FUN_18000bad0 + +void FUN_18000bad0(undefined8 *param_1) + +{ + *param_1 = CFunctions::vftable; + FUN_18000c2b0((longlong)param_1); + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x47)); + param_1[0x83f0] = CSmoother::vftable; + if ((LPVOID)param_1[0x83f1] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83f1]); + param_1[0x83f1] = 0; + } + param_1[0x83f2] = 0; + if ((LPVOID)param_1[0x83f3] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83f3]); + param_1[0x83f3] = 0; + } + if ((LPVOID)param_1[0x83f4] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83f4]); + param_1[0x83f4] = 0; + } + param_1[0x83e8] = CSmoother::vftable; + if ((LPVOID)param_1[0x83e9] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83e9]); + param_1[0x83e9] = 0; + } + param_1[0x83ea] = 0; + if ((LPVOID)param_1[0x83eb] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83eb]); + param_1[0x83eb] = 0; + } + if ((LPVOID)param_1[0x83ec] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83ec]); + param_1[0x83ec] = 0; + } + param_1[0x83e2] = CAccumulator::vftable; + if ((LPVOID)param_1[0x83e3] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83e3]); + param_1[0x83e3] = 0; + } + param_1[0x83e4] = 0; + if ((LPVOID)param_1[0x83e5] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83e5]); + param_1[0x83e5] = 0; + } + param_1[0x83dc] = CAccumulator::vftable; + if ((LPVOID)param_1[0x83dd] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83dd]); + param_1[0x83dd] = 0; + } + param_1[0x83de] = 0; + if ((LPVOID)param_1[0x83df] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[0x83df]); + param_1[0x83df] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000bc60 (31 bytes) name=Unwind@18000bc60 + +void Unwind_18000bc60(undefined8 param_1,longlong param_2) + +{ + FUN_180001070((undefined8 *)(*(longlong *)(param_2 + 0x40) + 0x41ee0)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000bc80 (31 bytes) name=Unwind@18000bc80 + +void Unwind_18000bc80(undefined8 param_1,longlong param_2) + +{ + FUN_180001070((undefined8 *)(*(longlong *)(param_2 + 0x40) + 0x41f10)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000bca0 (31 bytes) name=Unwind@18000bca0 + +void Unwind_18000bca0(undefined8 param_1,longlong param_2) + +{ + FUN_18001e790((undefined8 *)(*(longlong *)(param_2 + 0x40) + 0x41f40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000bcc0 (31 bytes) name=Unwind@18000bcc0 + +void Unwind_18000bcc0(undefined8 param_1,longlong param_2) + +{ + FUN_18001e790((undefined8 *)(*(longlong *)(param_2 + 0x40) + 0x41f80)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000bce0 (1477 bytes) name=FUN_18000bce0 + +undefined4 FUN_18000bce0(longlong param_1,void *param_2) + +{ + uint uVar1; + uint uVar2; + undefined1 auVar3 [16]; + size_t sVar4; + LPVOID pvVar5; + undefined8 uVar6; + uint uVar7; + DWORD dwErrCode; + + FUN_18000c2b0(param_1); + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + *(undefined4 *)(param_1 + 0x47944) = 8; + *(undefined4 *)(param_1 + 0x47948) = 0xffff3cb0; + *(undefined4 *)(param_1 + 0x4794c) = 3; + *(undefined4 *)(param_1 + 0x47950) = 0; + *(undefined4 *)(param_1 + 0x47954) = 0; + memcpy((void *)(param_1 + 0x41fc0),param_2,0x28); + uVar7 = *(uint *)(param_1 + 0x41fd8); + if (((((((uVar7 < 4) || (0x40 < uVar7)) || ((uVar7 & uVar7 - 1) != 0)) || + ((uVar7 = *(uint *)(param_1 + 0x41fdc), uVar7 == 0 || (0x40 < uVar7)))) || + (((uVar7 & uVar7 - 1) != 0 || + ((*(uint *)(param_1 + 0x41fe0) == 0 || (2 < *(uint *)(param_1 + 0x41fe0))))))) || + (*(int *)(param_1 + 0x41fe4) == 0)) || + (((((uVar7 = *(uint *)(param_1 + 0x41fc0), (uVar7 & 3) != 0 || (uVar7 < 4)) || + (*(int *)(param_1 + 0x41fc4) == 0)) || + (((uVar1 = *(uint *)(param_1 + 0x41fc8), (uVar1 & 3) != 0 || (uVar1 < 4)) || + ((*(int *)(param_1 + 0x41fcc) == 0 || + ((uVar2 = *(uint *)(param_1 + 0x41fd0), (uVar2 & 3) != 0 || (uVar2 < 4)))))))) || + (*(int *)(param_1 + 0x41fd4) == 0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + dwErrCode = 0xe4ae0001; + } + else { + uVar7 = *(int *)(param_1 + 0x41fc4) * uVar7; + *(uint *)(param_1 + 0x47938) = uVar7; + *(uint *)(param_1 + 0x4793c) = *(int *)(param_1 + 0x41fcc) * uVar1; + *(uint *)(param_1 + 0x47940) = *(int *)(param_1 + 0x41fd4) * uVar2; + auVar3 = ZEXT816(2) * ZEXT416(uVar7); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x270) = pvVar5; + auVar3 = ZEXT816(2) * ZEXT416(*(uint *)(param_1 + 0x47938)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x288) = pvVar5; + auVar3 = ZEXT816(2) * + ZEXT416((uint)((*(int *)(param_1 + 0x41fc0) + 8) * (*(int *)(param_1 + 0x41fc4) + 8))); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x290) = pvVar5; + pvVar5 = thunk_FUN_18001eb74((ulonglong)*(uint *)(param_1 + 0x47938)); + *(LPVOID *)(param_1 + 0x2a0) = pvVar5; + auVar3 = ZEXT816(4) * ZEXT416(*(uint *)(param_1 + 0x47938)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x2a8) = pvVar5; + pvVar5 = thunk_FUN_18001eb74((ulonglong)*(uint *)(param_1 + 0x47938)); + *(LPVOID *)(param_1 + 0x280) = pvVar5; + pvVar5 = thunk_FUN_18001eb74((ulonglong)*(uint *)(param_1 + 0x47940)); + *(LPVOID *)(param_1 + 0x2b0) = pvVar5; + auVar3 = ZEXT816(4) * ZEXT416(*(uint *)(param_1 + 0x47938)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x298) = pvVar5; + auVar3 = ZEXT816(2) * ZEXT416(*(uint *)(param_1 + 0x47938)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x260) = pvVar5; + auVar3 = ZEXT816(4) * ZEXT416(*(uint *)(param_1 + 0x47938)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x268) = pvVar5; + pvVar5 = thunk_FUN_18001eb74((ulonglong) + (uint)(*(int *)(param_1 + 0x41fc8) * 3 + + *(int *)(param_1 + 0x4793c))); + *(LPVOID *)(param_1 + 0x220) = pvVar5; + auVar3 = ZEXT816(4) * ZEXT416((uint)(*(int *)(param_1 + 0x41fc4) << 6)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x2b8) = pvVar5; + auVar3 = ZEXT816(4) * ZEXT416((uint)(*(int *)(param_1 + 0x41fc0) << 6)); + sVar4 = auVar3._0_8_; + if (auVar3._8_8_ != 0) { + sVar4 = 0xffffffffffffffff; + } + pvVar5 = thunk_FUN_18001eb74(sVar4); + *(LPVOID *)(param_1 + 0x2c0) = pvVar5; + if (((((*(longlong *)(param_1 + 0x270) == 0) || (*(longlong *)(param_1 + 0x288) == 0)) || + (*(longlong *)(param_1 + 0x290) == 0)) || + (((*(longlong *)(param_1 + 0x2a0) == 0 || (*(longlong *)(param_1 + 0x2b0) == 0)) || + (((*(longlong *)(param_1 + 0x280) == 0 || + ((*(longlong *)(param_1 + 0x220) == 0 || (*(longlong *)(param_1 + 0x260) == 0)))) || + (*(longlong *)(param_1 + 0x268) == 0)))))) || + ((((*(longlong *)(param_1 + 0x2a8) == 0 || (*(longlong *)(param_1 + 0x298) == 0)) || + (*(longlong *)(param_1 + 0x2b8) == 0)) || (pvVar5 == (LPVOID)0x0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + dwErrCode = 0xe4ae0002; + } + else { + uVar6 = FUN_1800010c0(param_1 + 0x41ee0,*(uint *)(param_1 + 0x47938), + *(uint *)(param_1 + 0x41fd8)); + if (((((int)uVar6 != 0) && + (uVar6 = FUN_1800010c0(param_1 + 0x41f10,*(uint *)(param_1 + 0x47938), + *(uint *)(param_1 + 0x41fdc)), (int)uVar6 != 0)) && + ((*(uint *)(param_1 + 0x41fe0) < 2 || + (uVar6 = FUN_18001e7f0(param_1 + 0x41f40,*(uint *)(param_1 + 0x47938), + *(uint *)(param_1 + 0x41fe0) - 1,0), (int)uVar6 != 0)))) && + ((*(uint *)(param_1 + 0x41fe4) < 2 || + (uVar6 = FUN_18001e7f0(param_1 + 0x41f80,*(uint *)(param_1 + 0x47938), + *(uint *)(param_1 + 0x41fe4),1), (int)uVar6 != 0)))) { + FUN_1800357d0((ulonglong *)(param_1 + 0x6c8),0,0x28); + *(undefined4 *)(param_1 + 0x6c8) = 0x28; + *(undefined4 *)(param_1 + 0x6cc) = *(undefined4 *)(param_1 + 0x41fc0); + *(undefined2 *)(param_1 + 0x6d4) = 1; + *(undefined4 *)(param_1 + 0x6d0) = *(undefined4 *)(param_1 + 0x41fc4); + *(undefined2 *)(param_1 + 0x6d6) = 8; + *(undefined4 *)(param_1 + 0x6d8) = 0; + FUN_1800357d0((ulonglong *)(param_1 + 0xaf0),0,0x28); + *(undefined4 *)(param_1 + 0xaf0) = 0x28; + *(undefined4 *)(param_1 + 0xaf4) = *(undefined4 *)(param_1 + 0x41fc8); + *(undefined2 *)(param_1 + 0xafc) = 1; + *(undefined4 *)(param_1 + 0xaf8) = *(undefined4 *)(param_1 + 0x41fcc); + *(undefined2 *)(param_1 + 0xafe) = 8; + *(undefined4 *)(param_1 + 0xb00) = 0; + FUN_1800357d0((ulonglong *)(param_1 + 0xf18),0,0x28); + *(undefined4 *)(param_1 + 0xf18) = 0x28; + *(undefined4 *)(param_1 + 0xf1c) = *(undefined4 *)(param_1 + 0x41fd0); + *(undefined2 *)(param_1 + 0xf24) = 1; + *(undefined2 *)(param_1 + 0xf26) = 8; + *(undefined4 *)(param_1 + 0xf20) = *(undefined4 *)(param_1 + 0x41fd4); + *(undefined4 *)(param_1 + 0xf28) = 0; + FUN_180014fe0(param_1,(float *)(param_1 + 0xd0)); + *(undefined4 *)(param_1 + 0x228) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return *(undefined4 *)(param_1 + 0x228); + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + dwErrCode = 0xe4ae0003; + } + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000c2b0 (877 bytes) name=FUN_18000c2b0 + +void FUN_18000c2b0(longlong param_1) + +{ + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + *(undefined4 *)(param_1 + 0x41fe8) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x228) = 0; + *(undefined4 *)(param_1 + 0x22c) = 0; + *(undefined4 *)(param_1 + 0x234) = 0; + *(undefined4 *)(param_1 + 0x230) = 0; + *(undefined4 *)(param_1 + 0x41340) = 0; + *(undefined4 *)(param_1 + 0x41880) = 0; + if (*(LPVOID *)(param_1 + 0x260) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x260)); + *(undefined8 *)(param_1 + 0x260) = 0; + } + if (*(LPVOID *)(param_1 + 0x268) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x268)); + *(undefined8 *)(param_1 + 0x268) = 0; + } + if (*(LPVOID *)(param_1 + 0x270) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x270)); + *(undefined8 *)(param_1 + 0x270) = 0; + } + if (*(LPVOID *)(param_1 + 0x278) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x278)); + *(undefined8 *)(param_1 + 0x278) = 0; + } + if (*(LPVOID *)(param_1 + 0x2a0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2a0)); + *(undefined8 *)(param_1 + 0x2a0) = 0; + } + if (*(LPVOID *)(param_1 + 0x2a8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2a8)); + *(undefined8 *)(param_1 + 0x2a8) = 0; + } + if (*(LPVOID *)(param_1 + 0x220) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x220)); + *(undefined8 *)(param_1 + 0x220) = 0; + } + if (*(LPVOID *)(param_1 + 0x2b0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2b0)); + *(undefined8 *)(param_1 + 0x2b0) = 0; + } + if (*(LPVOID *)(param_1 + 0x280) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x280)); + *(undefined8 *)(param_1 + 0x280) = 0; + } + if (*(LPVOID *)(param_1 + 0x288) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x288)); + *(undefined8 *)(param_1 + 0x288) = 0; + } + if (*(LPVOID *)(param_1 + 0x290) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x290)); + *(undefined8 *)(param_1 + 0x290) = 0; + } + if (*(LPVOID *)(param_1 + 0x298) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x298)); + *(undefined8 *)(param_1 + 0x298) = 0; + } + if (*(LPVOID *)(param_1 + 0x2b8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2b8)); + *(undefined8 *)(param_1 + 0x2b8) = 0; + } + if (*(LPVOID *)(param_1 + 0x2c0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2c0)); + *(undefined8 *)(param_1 + 0x2c0) = 0; + } + if (*(LPVOID *)(param_1 + 0x416a0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x416a0)); + *(undefined8 *)(param_1 + 0x416a0) = 0; + } + if (*(LPVOID *)(param_1 + 0x416a8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x416a8)); + *(undefined8 *)(param_1 + 0x416a8) = 0; + } + if (*(LPVOID *)(param_1 + 0x416b0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x416b0)); + *(undefined8 *)(param_1 + 0x416b0) = 0; + } + FUN_1800357d0((ulonglong *)(param_1 + 0x41340),0,0x540); + *(undefined4 *)(param_1 + 0x41f0c) = 0; + if (*(LPVOID *)(param_1 + 0x41ee8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41ee8)); + *(undefined8 *)(param_1 + 0x41ee8) = 0; + } + *(undefined8 *)(param_1 + 0x41ef0) = 0; + if (*(LPVOID *)(param_1 + 0x41ef8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41ef8)); + *(undefined8 *)(param_1 + 0x41ef8) = 0; + } + *(undefined4 *)(param_1 + 0x41f3c) = 0; + if (*(LPVOID *)(param_1 + 0x41f18) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f18)); + *(undefined8 *)(param_1 + 0x41f18) = 0; + } + *(undefined8 *)(param_1 + 0x41f20) = 0; + if (*(LPVOID *)(param_1 + 0x41f28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f28)); + *(undefined8 *)(param_1 + 0x41f28) = 0; + } + *(undefined4 *)(param_1 + 0x41f7c) = 0; + if (*(LPVOID *)(param_1 + 0x41f48) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f48)); + *(undefined8 *)(param_1 + 0x41f48) = 0; + } + *(undefined8 *)(param_1 + 0x41f50) = 0; + if (*(LPVOID *)(param_1 + 0x41f58) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f58)); + *(undefined8 *)(param_1 + 0x41f58) = 0; + } + if (*(LPVOID *)(param_1 + 0x41f60) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f60)); + *(undefined8 *)(param_1 + 0x41f60) = 0; + } + *(undefined4 *)(param_1 + 0x41fbc) = 0; + if (*(LPVOID *)(param_1 + 0x41f88) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f88)); + *(undefined8 *)(param_1 + 0x41f88) = 0; + } + *(undefined8 *)(param_1 + 0x41f90) = 0; + if (*(LPVOID *)(param_1 + 0x41f98) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41f98)); + *(undefined8 *)(param_1 + 0x41f98) = 0; + } + if (*(LPVOID *)(param_1 + 0x41fa0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x41fa0)); + *(undefined8 *)(param_1 + 0x41fa0) = 0; + } + FUN_1800357d0((ulonglong *)(param_1 + 0x41ff8),0,0x2ca0); + FUN_1800357d0((ulonglong *)(param_1 + 0x44c98),0,0x2ca0); + /* WARNING: Could not recover jumptable at 0x00018000c616. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c620 (309 bytes) name=FUN_18000c620 + +ulonglong FUN_18000c620(longlong param_1,ushort *param_2,int param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if (*(int *)(param_1 + 0x228) == 0) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + uVar1 = 0; + } + else { + if (param_3 != 0) { + *(undefined4 *)(param_1 + 0x22c) = 0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (*(int *)(param_1 + 0x41f0c) != 0) { + *(undefined4 *)(param_1 + 0x41f00) = 0; + } + if (*(int *)(param_1 + 0x41f3c) != 0) { + *(undefined4 *)(param_1 + 0x41f30) = 0; + } + if ((1 < *(uint *)(param_1 + 0x41fe0)) && (*(int *)(param_1 + 0x41f7c) != 0)) { + *(undefined4 *)(param_1 + 0x41f70) = 0; + *(undefined8 *)(param_1 + 0x41f68) = *(undefined8 *)(param_1 + 0x41f50); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x41f58),0, + (ulonglong)*(uint *)(param_1 + 0x41f74) << 2); + } + if (*(int *)(param_1 + 0x41fbc) != 0) { + *(undefined4 *)(param_1 + 0x41fb0) = 0; + *(undefined8 *)(param_1 + 0x41fa8) = *(undefined8 *)(param_1 + 0x41f90); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x41f98),0, + (ulonglong)*(uint *)(param_1 + 0x41fb4) << 2); + } + } + uVar2 = FUN_1800011a0(param_1 + 0x41ee0,param_2); + uVar1 = uVar2 & 0xffffffff; + if ((int)uVar2 != 0) { + *(undefined4 *)(param_1 + 0x22c) = 1; + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18000c760 (488 bytes) name=FUN_18000c760 + +void FUN_18000c760(longlong param_1,int param_2,uint param_3) + +{ + int iVar1; + int iVar2; + uint uVar3; + longlong lVar4; + int iVar5; + uint uVar6; + int iVar7; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if ((*(int *)(param_1 + 0x228) != 0) && (*(int *)(param_1 + 0x41340) != 0)) { + if (param_2 == 0) { + FUN_180016ae0(param_1); + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41344) != 0)) { + FUN_18000ffb0(param_1); + } + } + else { + uVar6 = 0; + if (param_2 == 1) { + if (1 < param_3) { + DAT_18009a43c = 0; + DAT_18009a438 = 0; + DAT_18009a440 = (*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938); + DAT_18009a444 = *(int *)(param_1 + 0x47938) * *(int *)(param_1 + 0x41554) * 2; + DAT_18009a448 = + (DAT_18009a444 + DAT_18009a440 + -2 + param_3) / (param_3 - 1) + 7 & 0xfffffff8; + } + } + else if (param_2 < 1) goto LAB_18000c92d; + uVar3 = DAT_18009a448; + iVar2 = DAT_18009a444; + iVar1 = DAT_18009a43c; + iVar5 = DAT_18009a438; + if (DAT_18009a438 < DAT_18009a440) { + lVar4 = (longlong)DAT_18009a438; + uVar6 = DAT_18009a440 - DAT_18009a438; + if ((int)DAT_18009a448 < DAT_18009a440 - DAT_18009a438) { + uVar6 = DAT_18009a448; + } + FUN_180016dd0(param_1,(short *)(*(longlong *)(param_1 + 0x41848) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41850) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41858) + lVar4 * 2),uVar6); + DAT_18009a438 = iVar5 + uVar6; + } + if (((int)uVar6 < (int)uVar3) && (iVar1 < iVar2)) { + lVar4 = (longlong)iVar1; + iVar7 = uVar3 - uVar6; + iVar5 = iVar2 - iVar1; + if (iVar7 < iVar2 - iVar1) { + iVar5 = iVar7; + } + FUN_180016f10(param_1,(ushort *)(*(longlong *)(param_1 + 0x41860) + lVar4 * 2), + (ushort *)(*(longlong *)(param_1 + 0x41868) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41870) + lVar4 * 2),iVar5); + DAT_18009a43c = iVar1 + iVar5; + if (DAT_18009a43c == iVar2) { + *(undefined4 *)(param_1 + 0x41348) = 1; + } + } + } + } +LAB_18000c92d: + /* WARNING: Could not recover jumptable at 0x00018000c941. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c950 (221 bytes) name=FUN_18000c950 + +void FUN_18000c950(longlong param_1,ushort *param_2) + +{ + undefined8 uVar1; + ushort *puVar2; + + if (*(int *)(param_1 + 0x41fdc) == 1) { + FUN_1800011a0(param_1 + 0x41f10,param_2); + if (*(int *)(param_1 + 0x41f3c) == 0) { + puVar2 = (ushort *)0x0; + } + else { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + *(ushort **)(param_1 + 0x44c58) = puVar2; + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + else { + uVar1 = FUN_1800011a0(param_1 + 0x41f10,param_2); + *(int *)(param_1 + 0x41ffc) = (int)uVar1; + if ((int)uVar1 == 0) { + return; + } + puVar2 = (ushort *)0x0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + if (*(int *)(param_1 + 0x41f3c) != 0) { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + FUN_180017040(param_1,puVar2); +LAB_18000ca18: + *(undefined4 *)(param_1 + 0x42004) = 1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000ca30 (1760 bytes) name=FUN_18000ca30 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_18000ca30(longlong param_1,undefined8 param_2,int param_3,undefined8 param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + int *piVar4; + ushort uVar5; + byte *_Dst; + undefined1 uVar6; + DWORD DVar7; + uint uVar8; + uint uVar9; + int iVar10; + DWORD DVar11; + undefined1 *puVar12; + longlong lVar13; + int iVar14; + ushort *in_RDX; + ulonglong uVar15; + int iVar16; + uint uVar17; + int iVar18; + ushort *puVar19; + byte *pbVar20; + undefined1 auStack_3518 [32]; + DWORD local_34f8; + int local_34e8; + ulonglong local_34e4 [63]; + int aiStack_32e8 [384]; + undefined1 local_2ce8 [11424]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_3518; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + DVar7 = GetTickCount(); + local_34f8 = DVar7; + if (((*(int *)(param_1 + 0x228) == 0) || (in_RDX == (ushort *)0x0)) || + ((param_3 == 0 && (*(int *)(param_1 + 0x22c) == 0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x4203c) = 0; + *(undefined4 *)(param_1 + 0x42040) = 0; + *(undefined4 *)(param_1 + 0x42044) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (param_3 == 0) { + FUN_18000c950(param_1,in_RDX); + } + else { + if (param_3 != 1) goto LAB_18000cb0b; + memcpy(*(void **)(param_1 + 0x270),in_RDX,(ulonglong)*(uint *)(param_1 + 0x47938) * 2); + *(undefined4 *)(param_1 + 0x42004) = 1; + } + if (*(int *)(param_1 + 0x42004) == 0) { + FUN_18000d2a0(param_1); +LAB_18000cb0b: + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x44c4c) = 0; + *(undefined4 *)(param_1 + 0x42038) = 0; + if ((param_5 == 0) && (1 < *(uint *)(param_1 + 0x41fe0))) { + uVar8 = FUN_180015680(param_1,30000,*(uint *)(param_1 + 0x50)); + FUN_18001e920(param_1 + 0x41f40,*(ushort **)(param_1 + 0x270),uVar8 & 0xffff); + *(undefined4 *)(param_1 + 0x42038) = 1; + } + if (*(int *)(param_1 + 0x230) != 0) { + FUN_1800175a0(param_1); + } + iVar10 = *(int *)(param_1 + 0x41fe8); + if (iVar10 == 1) { + FUN_1800184f0(param_1); + } + else if (iVar10 == 2) { + FUN_180018660(param_1); + } + else if (iVar10 == 3) { + FUN_1800184f0(param_1); + FUN_180018660(param_1); + } + else if (iVar10 == 4) { + FUN_180018660(param_1); + FUN_180018660(param_1); + } + FUN_180010780(param_1,*(ushort **)(param_1 + 0x270)); + FUN_1800109c0(param_1); + uVar8 = *(uint *)(param_1 + 0x30); + if (uVar8 < 5) { + if ((int)uVar8 < 1) goto LAB_18000cf9a; + } + else { + uVar8 = 4; + } + if ((((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x28) == 0)) && + (*(int *)(param_1 + 0x10) == 0)) && + ((*(int *)(param_1 + 0x88) == 0 && (*(int *)(param_1 + 0x44) == 0)))) { + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017770(param_1,param_2); + memcpy(local_2ce8,(void *)(param_1 + 0x41ff8),0x2ca0); + FUN_180010780(param_1,*(ushort **)(param_1 + 0x288)); + if (*(int *)(param_1 + 0x42014) < *(int *)(param_1 + 0x42010)) { + iVar10 = *(int *)(param_1 + 0x42018); + uVar17 = *(int *)(param_1 + 0x42010) - iVar10; + uVar8 = iVar10 - *(int *)(param_1 + 0x42014); + uVar9 = FUN_180015680(param_1,30000,(uint)(*(int *)(param_1 + 0x24) * 1000) >> 1); + puVar19 = *(ushort **)(param_1 + 0x288); + if (uVar8 < uVar17) { + uVar8 = uVar17; + } + uVar17 = uVar9 & 0xffff; + if ((uVar9 & 0xffff) < uVar8) { + uVar17 = uVar8; + } + puVar12 = *(undefined1 **)(param_1 + 0x280); + uVar8 = 0; + if (*(int *)(param_1 + 0x47938) != 0) { + do { + uVar5 = *puVar19; + puVar19 = puVar19 + 1; + uVar9 = ((uint)uVar5 - (iVar10 - uVar17)) * (int)(0x3fc00000 / (ulonglong)(uVar17 * 2)) + >> 0x16; + if (uVar9 < 0xc0) { + uVar6 = (undefined1)uVar9; + if (uVar9 < 0x3f) { + uVar6 = 0x3f; + } + } + else { + uVar6 = 0xbf; + } + *puVar12 = uVar6; + uVar8 = uVar8 + 1; + puVar12 = puVar12 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + local_34e8 = 0; + FUN_1800357d0(local_34e4,0,0x7fc); + _Dst = *(byte **)(param_1 + 0x290); + memcpy(_Dst,*(void **)(param_1 + 0x280),(ulonglong)*(uint *)(param_1 + 0x47938)); + uVar15 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + puVar12 = (undefined1 *)(uVar15 + 1 + *(longlong *)(param_1 + 0x280)); + pbVar1 = _Dst + 1; + pbVar2 = pbVar1 + uVar15; + pbVar3 = pbVar2 + uVar15; + iVar10 = (*(int *)(param_1 + 0x41fc4) + -2) * *(uint *)(param_1 + 0x41fc0) + -2; + if (0 < iVar10) { + pbVar20 = pbVar3 + 1; + iVar18 = (uint)pbVar2[uVar15 - 1] + (uint)pbVar1[uVar15 - 1] * 2 + (uint)*_Dst; + iVar16 = (uint)*pbVar3 + (uint)*pbVar2 * 2 + (uint)*pbVar1; + do { + iVar14 = (uint)pbVar20[(longlong)pbVar1 - (longlong)pbVar3] + + (uint)pbVar20[(longlong)pbVar2 - (longlong)pbVar3] * 2 + (uint)*pbVar20; + uVar8 = (uint)(iVar14 + iVar16 * 2 + iVar18) >> 4; + *puVar12 = (char)uVar8; + if (0x7f < uVar8) { + piVar4 = (int *)((longlong)local_34e4 + + (longlong) + (int)(pbVar20[*(longlong *)(param_1 + 0x2a0) + (-1 - (longlong)pbVar3) + ] + uVar8) * 4 + -4); + *piVar4 = *piVar4 + 1; + } + pbVar20 = pbVar20 + 1; + puVar12 = puVar12 + 1; + iVar18 = iVar16; + iVar16 = iVar14; + } while ((longlong)(pbVar20 + (-1 - (longlong)pbVar3)) < (longlong)iVar10); + } + uVar8 = 0; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar9 = *(int *)(param_1 + 0x41fc0) * uVar8; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + uVar8 = uVar8 + 1; + uVar9 = uVar8 * *(int *)(param_1 + 0x41fc0) - 1; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + } while (uVar8 < *(uint *)(param_1 + 0x41fc4)); + } + iVar18 = 0x1ff; + iVar10 = 0; + lVar13 = 0x1ff; + do { + iVar10 = iVar10 + *(int *)((longlong)local_34e4 + lVar13 * 4 + -4); + if (*(uint *)(param_1 + 0x47938) < (uint)(iVar10 * 0x800)) break; + lVar13 = lVar13 + -1; + iVar18 = iVar18 + -1; + } while (0x17d < lVar13); + iVar10 = 0x1000; + if (0x17e < iVar18) { + iVar10 = (int)(0xff000 / (longlong)(iVar18 + -0x7f)); + } + uVar8 = 0; + lVar13 = 0; + if (*(uint *)(param_1 + 0x47938) != 0) { + do { + iVar18 = ((*(byte *)(lVar13 + *(longlong *)(param_1 + 0x280)) - 0x7f) + + (uint)*(byte *)(*(longlong *)(param_1 + 0x2a0) + lVar13)) * iVar10; + iVar18 = (int)(iVar18 + (iVar18 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar18 < 0) { + iVar18 = 0; + } + else if (0xff < iVar18) { + iVar18 = 0xff; + } + *(char *)(*(longlong *)(param_1 + 0x2a0) + lVar13) = (char)iVar18; + uVar8 = uVar8 + 1; + lVar13 = lVar13 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + } + memcpy((void *)(param_1 + 0x41ff8),local_2ce8,0x2ca0); + DVar7 = local_34f8; + } + else { + FUN_180017c40(param_1,uVar8 << 3); + } + } +LAB_18000cf9a: + uVar8 = *(uint *)(param_1 + 0x41fc8); + uVar9 = *(uint *)(param_1 + 0x41fc0); + if ((uVar8 == uVar9) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + } + else if ((uVar8 == uVar9 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) + { + FUN_180019740(param_1); + } + else if ((uVar8 == uVar9 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2) + ) { + FUN_180019b30(param_1); + } + else if ((uVar8 == uVar9 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3) + ) { + FUN_180019e60(param_1); + } + else if ((uVar8 * 2 == uVar9 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + } + else if ((uVar8 * 3 == uVar9 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + } + else if ((uVar9 < uVar8) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + DVar11 = GetTickCount(); + *(DWORD *)(param_1 + 0x42048) = DVar11 - DVar7; + FUN_18000d2a0(param_1); + *(undefined4 *)(param_1 + 0x234) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 3; +} + + +================================================================== + +### EXPORT FUNC 18000d110 (396 bytes) name=FUN_18000d110 + +void FUN_18000d110(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + + if (*(int *)(param_1 + 0x234) != 0) { + FUN_1800109c0(param_1); + if (((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x30) != 0)) && + ((*(int *)(param_1 + 0x28) == 0 || (*(int *)(param_1 + 0x10) != 0)))) { + iVar3 = *(int *)(param_1 + 0x30) << 3; + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017c40(param_1,iVar3); + } + else { + FUN_180017fd0(param_1,iVar3); + } + } + uVar1 = *(uint *)(param_1 + 0x41fc8); + uVar2 = *(uint *)(param_1 + 0x41fc0); + if ((uVar1 == uVar2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + return; + } + if ((uVar1 == uVar2 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) { + FUN_180019740(param_1); + return; + } + if ((uVar1 == uVar2 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2)) { + FUN_180019b30(param_1); + return; + } + if ((uVar1 == uVar2 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3)) { + FUN_180019e60(param_1); + return; + } + if ((uVar1 * 2 == uVar2 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + return; + } + if ((uVar1 * 3 == uVar2 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + return; + } + if ((uVar2 < uVar1) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d2a0 (839 bytes) name=FUN_18000d2a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000d2a0(longlong param_1) + +{ + int iVar1; + int iVar2; + uint uVar3; + float fVar4; + float fVar5; + + memcpy((void *)(param_1 + 0x44c98),(void *)(param_1 + 0x41ff8),0x2ca0); + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42018), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44cb8) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x4202c), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44ccc) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42010),*(uint *)(param_1 + 0x44cc0),1) + ; + *(int *)(param_1 + 0x44cb0) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42030), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44cd0) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42014),*(uint *)(param_1 + 0x44cc4),1) + ; + *(int *)(param_1 + 0x44cb4) = iVar1; + if (*(int *)(param_1 + 0xcc) == 2) { + iVar1 = *(int *)(param_1 + 0x44cb8); + } + else { + if (*(int *)(param_1 + 0xcc) != 3) goto LAB_18000d3c5; + iVar1 = *(int *)(param_1 + 0x60); + } + *(float *)(param_1 + 0xd8) = (float)iVar1 * _DAT_18005e9f0; +LAB_18000d3c5: + iVar1 = *(int *)(param_1 + 0x47950); + if (iVar1 == 0) { + iVar2 = (uint)*(ushort *)(param_1 + 0x4201c) << + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar2 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uint)*(ushort *)(param_1 + 0x4201c) << + (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f)); + } + *(int *)(param_1 + 0x44cbc) = iVar2; + uVar3 = (uint)(longlong)(*(float *)(param_1 + 0x42034) * _DAT_18005e9ec); + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + fVar5 = DAT_18005e9e8; + fVar4 = *(float *)(param_1 + 0x44c8c) * DAT_18005e9e8; + *(float *)(param_1 + 0x44cd4) = (float)uVar3 * DAT_18005e9e4; + uVar3 = (uint)(longlong)fVar4; + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + fVar4 = DAT_18005e9e0; + *(float *)(param_1 + 0x4792c) = (float)uVar3 * DAT_18005e9e0; + uVar3 = (uint)(longlong)(*(float *)(param_1 + 0x44c90) * fVar5); + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + *(float *)(param_1 + 0x47930) = (float)uVar3 * fVar4; + if (*(int *)(param_1 + 0x78) != 0) { + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb8),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb8) = iVar1; + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb4),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb4) = iVar1; + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb0),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb0) = iVar1; + } + iVar1 = *(int *)(param_1 + 0x44cb4); + if (*(int *)(param_1 + 0x44cb0) < iVar1) { + *(int *)(param_1 + 0x44cb0) = iVar1; + } + if (*(int *)(param_1 + 0x44cb0) < *(int *)(param_1 + 0x44cb8)) { + *(int *)(param_1 + 0x44cb8) = *(int *)(param_1 + 0x44cb0); + } + if (*(int *)(param_1 + 0x44cb8) < iVar1) { + *(int *)(param_1 + 0x44cb8) = iVar1; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d5f0 (6915 bytes) name=FUN_18000d5f0 + +void FUN_18000d5f0(longlong param_1,undefined4 param_2) + +{ + LPCRITICAL_SECTION lpCriticalSection; + void *_Src; + int iVar1; + char cVar2; + char cVar3; + char *pcVar4; + undefined1 *puVar5; + longlong lVar6; + undefined1 uVar7; + int iVar8; + undefined1 *puVar9; + int iVar10; + int iVar11; + undefined4 *puVar12; + int iVar13; + undefined4 local_418; + undefined4 local_414; + undefined4 local_410; + undefined4 local_40c; + undefined4 local_408; + undefined4 local_404; + undefined4 local_400; + undefined4 local_3fc; + undefined4 local_3f8; + undefined4 local_3f4; + undefined4 local_3f0; + undefined4 local_3ec; + undefined4 local_3e8; + undefined4 local_3e4; + undefined4 local_3e0; + undefined4 local_3dc; + undefined4 local_3d8; + undefined4 local_3d4; + undefined4 local_3d0; + undefined4 local_3cc; + undefined4 local_3c8; + undefined4 local_3c4; + undefined4 local_3c0; + undefined4 local_3bc; + undefined4 local_3b8; + undefined4 local_3b4; + undefined4 local_3b0; + undefined4 local_3ac; + undefined4 local_3a8; + undefined4 local_3a4; + undefined4 local_3a0; + undefined4 local_39c; + undefined4 local_398; + undefined4 local_394; + undefined4 local_390; + undefined4 local_38c; + undefined4 local_388; + undefined4 local_384; + undefined4 local_380; + undefined4 local_37c; + undefined4 local_378; + undefined4 local_374; + undefined4 local_370; + undefined4 local_36c; + undefined4 local_368; + undefined4 local_364; + undefined4 local_360; + undefined4 local_35c; + undefined4 local_358; + undefined4 local_354; + undefined4 local_350; + undefined4 local_34c; + undefined4 local_348; + undefined4 local_344; + undefined4 local_340; + undefined4 local_33c; + undefined4 local_338; + undefined4 local_334; + undefined4 local_330; + undefined4 local_32c; + undefined4 local_328; + undefined4 local_324; + undefined4 local_320; + undefined4 local_31c; + undefined4 local_318; + undefined4 local_314; + undefined4 local_310; + undefined4 local_30c; + undefined4 local_308; + undefined4 local_304; + undefined4 local_300; + undefined4 local_2fc; + undefined4 local_2f8; + undefined4 local_2f4; + undefined4 local_2f0; + undefined4 local_2ec; + undefined4 local_2e8; + undefined4 local_2e4; + undefined4 local_2e0; + undefined4 local_2dc; + undefined4 local_2d8; + undefined4 local_2d4; + undefined4 local_2d0; + undefined4 local_2cc; + undefined4 local_2c8; + undefined4 local_2c4; + undefined4 local_2c0; + undefined4 local_2bc; + undefined4 local_2b8; + undefined4 local_2b4; + undefined4 local_2b0; + undefined4 local_2ac; + undefined4 local_2a8; + undefined4 local_2a4; + undefined4 local_2a0; + undefined4 local_29c; + undefined4 local_298; + undefined4 local_294; + undefined4 local_290; + undefined4 local_28c; + undefined4 local_288; + undefined4 local_284; + undefined4 local_280; + undefined4 local_27c; + undefined4 local_278; + undefined4 local_274; + undefined4 local_270; + undefined4 local_26c; + undefined4 local_268; + undefined4 local_264; + undefined4 local_260; + undefined4 local_25c; + undefined4 local_258; + undefined4 local_254; + undefined4 local_250; + 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; + undefined4 local_21c; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210; + undefined4 local_20c; + undefined4 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; + undefined4 local_1d8; + undefined4 local_1d4; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8; + undefined4 local_1c4; + undefined4 local_1c0; + undefined4 local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0; + undefined4 local_1ac; + undefined4 local_1a8; + 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; + undefined4 local_170; + undefined4 local_16c; + undefined4 local_168; + undefined4 local_164; + undefined4 local_160; + undefined4 local_15c; + undefined4 local_158; + undefined4 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; + 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; + 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; + 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; + + lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x238); + EnterCriticalSection(lpCriticalSection); + _Src = (void *)(param_1 + 0x2c8); + switch(param_2) { + case 0: + iVar8 = 0; + puVar5 = (undefined1 *)(param_1 + 0x2c9); + do { + uVar7 = (undefined1)iVar8; + puVar5[1] = uVar7; + *puVar5 = uVar7; + puVar5[-1] = uVar7; + iVar8 = iVar8 + 1; + puVar5[2] = 0; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x100); + break; + case 1: + iVar8 = 0; + pcVar4 = (char *)(param_1 + 0x2c9); + do { + pcVar4[2] = '\0'; + cVar2 = -1 - (char)iVar8; + iVar8 = iVar8 + 1; + pcVar4[1] = cVar2; + *pcVar4 = cVar2; + pcVar4[-1] = cVar2; + pcVar4 = pcVar4 + 4; + } while (iVar8 < 0x100); + break; + case 2: + iVar8 = 0; + puVar5 = (undefined1 *)(param_1 + 0x2c9); + do { + puVar5[1] = 0; + *puVar5 = 0; + puVar5[2] = 0; + lVar6 = (longlong)iVar8; + iVar10 = iVar8 / 0x16; + iVar13 = iVar8 >> 0x1f; + iVar8 = iVar8 + 0x75; + puVar5[-1] = ((char)iVar10 + (char)iVar13) - (char)(lVar6 * 0x2e8ba2e9 >> 0x3f); + puVar5 = puVar5 + 4; + } while (iVar8 < 0xa0e); + puVar5 = (undefined1 *)(param_1 + 0x321); + iVar8 = 0; + iVar10 = 0; + do { + *puVar5 = 0; + puVar5[2] = 0; + iVar13 = iVar10 + 0xbc; + puVar5[1] = (char)(iVar10 / 0x47) - (char)(iVar10 / -0x72000000); + puVar5[-1] = ((char)(iVar8 / 0x47) - (char)(iVar8 / -0x72000000)) + 'u'; + puVar5 = puVar5 + 4; + iVar8 = iVar8 + 0x25; + iVar10 = iVar13; + } while (iVar13 < 0x3424); + pcVar4 = (char *)(param_1 + 0x43d); + iVar8 = 0; + iVar10 = 0; + iVar13 = 0; + do { + pcVar4[2] = '\0'; + pcVar4[1] = (((char)(iVar13 / 0x1d) + (char)(iVar13 >> 0x1f)) - + (char)((longlong)iVar13 * 0x8d3dcb09 >> 0x3f)) + -0x44; + *pcVar4 = (char)(iVar8 / 0x94) - (char)(iVar8 / -0x6c000000); + iVar11 = iVar10 + -0x3b; + pcVar4[-1] = (((char)(iVar10 / 0x1d) + (char)(iVar10 >> 0x1f)) - + (char)((longlong)iVar10 * 0x8d3dcb09 >> 0x3f)) + -0x66; + pcVar4 = pcVar4 + 4; + iVar8 = iVar8 + 0xff; + iVar10 = iVar11; + iVar13 = iVar13 + 0x27; + } while (-0x6af < iVar11); + iVar13 = 0; + pcVar4 = (char *)(param_1 + 0x4b1); + iVar8 = 0x1ce3; + iVar10 = 0; + do { + pcVar4[2] = '\0'; + pcVar4[1] = (((char)(iVar10 / 0x1e) + (char)(iVar10 >> 0x1f)) - + (char)((longlong)iVar10 * 0x88888889 >> 0x3f)) + -0x1d; + *pcVar4 = (char)(iVar8 / 0x94) - (char)(iVar8 / -0x6c000000); + lVar6 = (longlong)iVar13; + iVar11 = iVar13 / 0x12; + iVar1 = iVar13 >> 0x1f; + iVar13 = iVar13 + -0x50; + pcVar4[-1] = (((char)iVar11 + (char)iVar1) - (char)(lVar6 * 0x38e38e39 >> 0x3f)) + '_'; + pcVar4 = pcVar4 + 4; + iVar8 = iVar8 + 0xff; + iVar10 = iVar10 + 0x1c; + } while (-0x5a0 < iVar13); + pcVar4 = (char *)(param_1 + 0x4f9); + iVar8 = 0x1f8; + iVar10 = 0x2ed1; + do { + pcVar4[-1] = '\x0f'; + pcVar4[2] = '\0'; + iVar13 = iVar8 + 0x1c; + pcVar4[1] = (((char)(iVar8 / 0x1e) + (char)(iVar8 >> 0x1f)) - + (char)((longlong)iVar8 * 0x88888889 >> 0x3f)) + -0x1d; + *pcVar4 = (char)(iVar10 / 0x94) - (char)(iVar10 / -0x6c000000); + pcVar4 = pcVar4 + 4; + iVar8 = iVar13; + iVar10 = iVar10 + 0xff; + } while (iVar13 < 0x348); + pcVar4 = (char *)(param_1 + 0x529); + iVar8 = 0x3ac5; + do { + pcVar4[1] = -1; + pcVar4[-1] = '\x0f'; + pcVar4[2] = '\0'; + iVar10 = iVar8 + 0xff; + *pcVar4 = (char)(iVar8 / 0x94) - (char)(iVar8 / -0x6c000000); + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x817e); + pcVar4 = (char *)(param_1 + 0x645); + iVar8 = 0; + iVar10 = 0x817e; + do { + pcVar4[1] = -1; + pcVar4[2] = '\0'; + iVar13 = iVar10 + 0xff; + *pcVar4 = (char)(iVar10 / 0x94) - (char)(iVar10 / -0x6c000000); + pcVar4[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x1fU)) >> 5) + '\x0f'; + pcVar4 = pcVar4 + 4; + iVar8 = iVar8 + 0xf0; + iVar10 = iVar13; + } while (iVar13 < 0x936c); + puVar5 = (undefined1 *)(param_1 + 0x68d); + iVar8 = 0x10e0; + do { + iVar10 = iVar8 + 0xf0; + puVar5[1] = 0xff; + *puVar5 = 0xff; + puVar5[2] = 0; + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x1fU)) >> 5) + '\x0f'; + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x1ef0); + break; + case 3: + puVar5 = (undefined1 *)(param_1 + 0x2c9); + iVar8 = 0; + iVar10 = 0; + do { + iVar13 = iVar10 + 0xff; + puVar5[1] = 0; + puVar5[2] = 0; + *puVar5 = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x7fU)) >> 7); + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6) + '2'; + puVar5 = puVar5 + 4; + iVar8 = iVar8 + 0xcd; + iVar10 = iVar13; + } while (iVar13 < 0x3fc0); + puVar5 = (undefined1 *)(param_1 + 0x3c9); + iVar8 = 0x3fc0; + iVar10 = 0; + do { + puVar5[2] = 0; + puVar5[1] = (char)((int)(iVar8 + -0x3fc0 + (iVar8 + -0x3fc0 >> 0x1f & 0x3fU)) >> 6); + *puVar5 = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x7fU)) >> 7); + iVar13 = iVar10 + -0xff; + puVar5[-1] = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x3fU)) >> 6) + -1; + puVar5 = puVar5 + 4; + iVar8 = iVar8 + 0xff; + iVar10 = iVar13; + } while (-0x3fc0 < iVar13); + pcVar4 = (char *)(param_1 + 0x4c9); + iVar8 = 0; + iVar10 = 0; + do { + iVar13 = iVar10 + -0xff; + pcVar4[1] = -1; + pcVar4[2] = '\0'; + *pcVar4 = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x3fU)) >> 6) + -1; + pcVar4[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x7fU)) >> 7); + pcVar4 = pcVar4 + 4; + iVar8 = iVar8 + 0xff; + iVar10 = iVar13; + } while (-0x3fc0 < iVar13); + puVar5 = (undefined1 *)(param_1 + 0x5c9); + iVar8 = 0x3fc0; + do { + puVar5[1] = 0xff; + puVar5[2] = 0; + *puVar5 = (char)((int)(iVar8 + -0x3fc0 + (iVar8 + -0x3fc0 >> 0x1f & 0x3fU)) >> 6); + iVar10 = iVar8 + 0xff; + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x7fU)) >> 7); + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x7f80); + break; + case 4: + iVar10 = 0; + puVar5 = (undefined1 *)(param_1 + 0x2c9); + iVar8 = 0; + do { + *puVar5 = (char)iVar8; + iVar8 = iVar8 + 1; + puVar5[1] = 0x32; + puVar5[-1] = 0; + puVar5[2] = 0; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x32); + cVar2 = '2'; + pcVar4 = (char *)(param_1 + 0x391); + do { + *pcVar4 = cVar2; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + cVar2 = cVar2 + '\x01'; + lVar6 = (longlong)iVar10; + iVar8 = iVar10 / 0x96; + iVar13 = iVar10 >> 0x1f; + iVar10 = iVar10 + 0xcd; + pcVar4[1] = (((char)iVar8 + (char)iVar13) - (char)(lVar6 * 0x1b4e81b5 >> 0x3f)) + '2'; + pcVar4 = pcVar4 + 4; + } while (iVar10 < 0x781e); + iVar8 = 200; + puVar5 = (undefined1 *)(param_1 + 0x5e9); + do { + *puVar5 = (char)iVar8; + iVar8 = iVar8 + 1; + puVar5[1] = 0xff; + puVar5[-1] = 0; + puVar5[2] = 0; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x100); + break; + case 5: + puVar5 = (undefined1 *)(param_1 + 0x2c9); + iVar8 = 0; + iVar10 = 0; + iVar13 = 0; + do { + iVar11 = iVar13 + 0xcb; + puVar5[2] = 0; + puVar5[1] = (char)((int)(iVar13 + (iVar13 >> 0x1f & 0x3fU)) >> 6); + *puVar5 = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x3fU)) >> 6); + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6); + puVar5 = puVar5 + 4; + iVar8 = iVar8 + 0x24; + iVar10 = iVar10 + 0x16; + iVar13 = iVar11; + } while (iVar11 < 0x32c0); + pcVar4 = (char *)(param_1 + 0x3c9); + iVar8 = 0; + iVar10 = 0; + iVar13 = 0; + do { + pcVar4[2] = '\0'; + pcVar4[1] = (char)((int)(iVar13 + (iVar13 >> 0x1f & 0x3fU)) >> 6) + -0x35; + *pcVar4 = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6) + '\x16'; + iVar11 = iVar10 + -0x24; + pcVar4[-1] = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x3fU)) >> 6) + '$'; + pcVar4 = pcVar4 + 4; + iVar8 = iVar8 + 0x44; + iVar10 = iVar11; + iVar13 = iVar13 + 0x34; + } while (-0x900 < iVar11); + pcVar4 = (char *)(param_1 + 0x4c9); + iVar8 = 0; + do { + iVar10 = iVar8 + 0x7c; + pcVar4[1] = -1; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + *pcVar4 = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6) + 'Z'; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x1f00); + pcVar4 = (char *)(param_1 + 0x5c9); + iVar8 = 0; + iVar10 = 0; + do { + iVar13 = iVar10 + 0x29; + pcVar4[1] = -1; + pcVar4[2] = '\0'; + *pcVar4 = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x3fU)) >> 6) + -0x2a; + pcVar4[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6); + pcVar4 = pcVar4 + 4; + iVar8 = iVar8 + 0xff; + iVar10 = iVar13; + } while (iVar13 < 0xa40); + break; + case 6: + cVar2 = '\0'; + iVar8 = 0; + pcVar4 = (char *)(param_1 + 0x2c9); + do { + pcVar4[2] = '\0'; + lVar6 = (longlong)iVar8; + iVar10 = iVar8 / 100; + iVar13 = iVar8 >> 0x1f; + iVar8 = iVar8 + 0xff; + pcVar4[1] = -1 - (((char)iVar10 + (char)iVar13) - (char)(lVar6 * 0x51eb851f >> 0x3f)); + cVar3 = -1 - cVar2; + cVar2 = cVar2 + '\x01'; + *pcVar4 = cVar3; + pcVar4[-1] = cVar3; + pcVar4 = pcVar4 + 4; + } while (iVar8 < 0x639c); + cVar2 = 'd'; + pcVar4 = (char *)(param_1 + 0x459); + iVar8 = 0; + do { + pcVar4[2] = '\0'; + iVar10 = iVar8 + 0xff; + cVar3 = -1 - cVar2; + pcVar4[1] = ((char)(iVar8 / 0x69) + (char)(iVar8 >> 0x1f)) - + (char)((longlong)iVar8 * 0x9c09c09d >> 0x3f); + cVar2 = cVar2 + '\x01'; + *pcVar4 = cVar3; + pcVar4[-1] = cVar3; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x6897); + iVar8 = 0xcd; + pcVar4 = (char *)(param_1 + 0x5fd); + do { + pcVar4[1] = -1; + pcVar4[2] = '\0'; + cVar2 = -1 - (char)iVar8; + iVar8 = iVar8 + 1; + *pcVar4 = cVar2; + pcVar4[-1] = cVar2; + pcVar4 = pcVar4 + 4; + } while (iVar8 < 0x100); + break; + case 7: + puVar5 = (undefined1 *)(param_1 + 0x2c9); + iVar8 = 0; + do { + iVar10 = iVar8 + 1; + *puVar5 = 0; + puVar5[-1] = 0; + puVar5[2] = 0; + puVar5[1] = (char)iVar8 * '\x02'; + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x80); + pcVar4 = (char *)(param_1 + 0x4c9); + iVar8 = 0; + do { + pcVar4[1] = -1; + pcVar4[2] = '\0'; + iVar10 = iVar8 + 0xff; + cVar2 = ((char)(iVar8 / 0x7f) + (char)(iVar8 >> 0x1f)) - + (char)((longlong)iVar8 * 0x81020409 >> 0x3f); + *pcVar4 = cVar2; + pcVar4[-1] = cVar2; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x7f80); + break; + case 8: + puVar5 = (undefined1 *)(param_1 + 0x2c9); + iVar8 = 0; + do { + iVar10 = iVar8 + 0x80; + puVar5[1] = 0; + *puVar5 = 0; + puVar5[2] = 0; + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x1fU)) >> 5) + '\x7f'; + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x1000); + puVar5 = (undefined1 *)(param_1 + 0x349); + iVar8 = 0; + do { + iVar10 = iVar8 + 0xff; + puVar5[1] = 0; + puVar5[-1] = 0xff; + puVar5[2] = 0; + *puVar5 = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6); + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (iVar10 < 0x3fc0); + puVar5 = (undefined1 *)(param_1 + 0x449); + iVar8 = 0; + iVar10 = 0; + do { + *puVar5 = 0xff; + puVar5[2] = 0; + puVar5[1] = (char)((int)(iVar10 + (iVar10 >> 0x1f & 0x3fU)) >> 6); + iVar13 = iVar8 + -0xff; + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6) + -1; + puVar5 = puVar5 + 4; + iVar8 = iVar13; + iVar10 = iVar10 + 0xff; + } while (-0x3fc0 < iVar13); + pcVar4 = (char *)(param_1 + 0x549); + iVar8 = 0; + do { + iVar10 = iVar8 + -0xff; + pcVar4[1] = -1; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + *pcVar4 = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x3fU)) >> 6) + -1; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (-0x3fc0 < iVar10); + puVar5 = (undefined1 *)(param_1 + 0x649); + iVar8 = 0; + do { + iVar10 = iVar8 + -0x80; + *puVar5 = 0; + puVar5[-1] = 0; + puVar5[2] = 0; + puVar5[1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 0x1fU)) >> 5) + -1; + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (-0x1000 < iVar10); + break; + case 9: + iVar8 = 0; + iVar10 = 0x9867; + iVar13 = 0; + pcVar4 = (char *)(param_1 + 0x2c9); + do { + pcVar4[2] = '\0'; + lVar6 = (longlong)iVar13; + iVar11 = iVar13 / 200; + iVar1 = iVar13 >> 0x1f; + iVar13 = iVar13 + 0xff; + cVar2 = ((char)iVar11 + (char)iVar1) - (char)(lVar6 * 0x51eb851f >> 0x3f); + pcVar4[1] = cVar2; + *pcVar4 = cVar2; + pcVar4[-1] = cVar2; + pcVar4 = pcVar4 + 4; + } while (iVar13 < 0x9867); + puVar5 = (undefined1 *)(param_1 + 0x52d); + do { + *puVar5 = 0xc3; + puVar5[-1] = 0xc3; + puVar5[2] = 0; + lVar6 = (longlong)iVar10; + iVar13 = iVar10 / 200; + iVar11 = iVar10 >> 0x1f; + iVar10 = iVar10 + 0xff; + puVar5[1] = ((char)iVar13 + (char)iVar11) - (char)(lVar6 * 0x51eb851f >> 0x3f); + puVar5 = puVar5 + 4; + } while (iVar10 < 51000); + pcVar4 = (char *)(param_1 + 0x5e9); + do { + pcVar4[1] = -1; + pcVar4[2] = '\0'; + lVar6 = (longlong)iVar8; + iVar10 = iVar8 / 0x37; + iVar13 = iVar8 >> 0x1f; + iVar8 = iVar8 + -0xc3; + cVar2 = (((char)iVar10 + (char)iVar13) - (char)(lVar6 * 0x94f2095 >> 0x3f)) + -0x3d; + *pcVar4 = cVar2; + pcVar4[-1] = cVar2; + pcVar4 = pcVar4 + 4; + } while (-0x2aa8 < iVar8); + break; + case 10: + iVar8 = 0; + puVar5 = (undefined1 *)(param_1 + 0x2c9); + do { + *puVar5 = 0; + puVar5[2] = 0; + cVar2 = (char)iVar8 * '\a'; + iVar8 = iVar8 + 1; + puVar5[1] = cVar2; + puVar5[-1] = cVar2; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x24); + cVar2 = '$'; + puVar5 = (undefined1 *)(param_1 + 0x359); + iVar8 = 0; + do { + cVar3 = cVar2 + -0x24; + *puVar5 = 0; + puVar5[2] = 0; + cVar2 = cVar2 + '\x01'; + iVar10 = iVar8 + -7; + puVar5[1] = cVar3 * -7 + -4; + puVar5[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 3U)) >> 2) + -4; + puVar5 = puVar5 + 4; + iVar8 = iVar10; + } while (-0x103 < iVar10); + cVar2 = 'I'; + pcVar4 = (char *)(param_1 + 0x3ed); + iVar8 = -0xf5; + do { + cVar3 = cVar2 + -0x48; + pcVar4[1] = '\0'; + pcVar4[2] = '\0'; + cVar2 = cVar2 + '\x01'; + *pcVar4 = cVar3 * '\a'; + iVar10 = iVar8 + 7; + pcVar4[-1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 3U)) >> 2) + -4; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 7); + cVar2 = 'm'; + pcVar4 = (char *)(param_1 + 0x47d); + iVar8 = 0; + do { + iVar10 = iVar8 + -7; + cVar3 = -0x6f - cVar2; + pcVar4[1] = '\0'; + pcVar4[2] = '\0'; + cVar2 = cVar2 + '\x01'; + *pcVar4 = (char)(iVar8 / 2) + -4; + pcVar4[-1] = cVar3 * '\a'; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (-0x103 < iVar10); + cVar2 = -0x6e; + pcVar4 = (char *)(param_1 + 0x511); + iVar8 = -0xf5; + do { + cVar3 = cVar2 + 'K'; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + cVar2 = cVar2 + '\x01'; + pcVar4[1] = cVar3 * '\a' + -4; + iVar10 = iVar8 + 7; + *pcVar4 = (char)(iVar8 / 2) + -4; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 7); + cVar2 = -0x4a; + pcVar4 = (char *)(param_1 + 0x5a1); + iVar8 = 0; + do { + cVar3 = cVar2 + 'J'; + iVar10 = iVar8 + -7; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + cVar2 = cVar2 + '\x01'; + pcVar4[1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 3U)) >> 2) + -4; + *pcVar4 = cVar3 * -7 + -4; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (-0x103 < iVar10); + cVar2 = -0x25; + pcVar4 = (char *)(param_1 + 0x635); + iVar8 = -0xfc; + do { + iVar10 = iVar8 + 7; + pcVar4[2] = '\0'; + pcVar4[1] = (char)((int)(iVar8 + (iVar8 >> 0x1f & 3U)) >> 2) + -4; + cVar3 = cVar2 * '\a' + '\x03'; + cVar2 = cVar2 + '\x01'; + *pcVar4 = cVar3; + pcVar4[-1] = cVar3; + pcVar4 = pcVar4 + 4; + iVar8 = iVar10; + } while (iVar10 < 7); + break; + case 0xb: + local_414 = 0x20202; + local_410 = 0x60606; + local_40c = 0xa0a0a; + local_408 = 0x101010; + local_404 = 0x131313; + local_418 = 0; + local_400 = 0x171717; + local_3fc = 0x1b1b1b; + local_3f8 = 0x1e1e1e; + local_3f4 = 0x222222; + local_3f0 = 0x262626; + local_3ec = 0x2a2a2a; + local_3e8 = 0x2f2f2f; + local_3e4 = 0x333333; + local_3e0 = 0x373737; + local_3dc = 0x3a3a3a; + local_3d8 = 0x3e3e3e; + local_3d4 = 0x424242; + local_3d0 = 0x464646; + local_3cc = 0x4b4b4b; + local_3c8 = 0x4f4f4f; + local_3c4 = 0x535353; + local_3c0 = 0x564e4e; + local_3bc = 0x5a4949; + local_3b8 = 0x5e4545; + local_3b4 = 0x614242; + local_3b0 = 0x653e3e; + local_3ac = 0x6b3838; + local_3a8 = 0x6f3434; + local_3a4 = 0x723131; + local_3a0 = 0x762d2d; + local_39c = 0x7a2929; + local_398 = 0x7d2626; + local_394 = 0x812222; + local_390 = 0x871c1c; + local_38c = 0x8b1818; + local_388 = 0x8e1515; + local_384 = 0x921111; + local_380 = 0x960d0d; + local_37c = 0x9a0909; + local_378 = 0x9d0606; + local_374 = 0xa30202; + local_370 = 0xa80000; + local_36c = 0xaa0202; + local_368 = 0xae0606; + local_364 = 0xb20a0a; + local_360 = 0xb60e0e; + local_35c = 0xb91111; + local_358 = 0xbd1515; + local_354 = 0xc31b1b; + local_350 = 0xc61e1e; + local_34c = 0xca2222; + local_348 = 0xce2626; + local_344 = 0xd22a2a; + local_340 = 0xd52d2d; + local_33c = 0xd93131; + local_338 = 0xdd3535; + local_334 = 0xe33b3b; + local_330 = 0xe63e3e; + local_32c = 0xea4242; + local_328 = 0xee4646; + local_324 = 0xf14949; + local_320 = 0xf54d4d; + local_31c = 0xf95151; + local_318 = 0xfc5454; + local_314 = 0xfc5351; + local_310 = 0xf9564d; + local_30c = 0xf55a49; + local_308 = 0xf35c47; + local_304 = 0xf25d46; + local_300 = 0xee6142; + local_2fc = 0xeb643f; + local_2f8 = 0xe9663d; + local_2f4 = 0xe56a39; + local_2f0 = 0xe46b38; + local_2ec = 0xe26d36; + local_2e8 = 0xde7132; + local_2e4 = 0xdb742f; + local_2e0 = 0xdb742f; + local_2dc = 0xd6792a; + local_2d8 = 0xd47b28; + local_2d4 = 0xd27d26; + local_2d0 = 0xcd8221; + local_2cc = 0xcb841f; + local_2c8 = 0xca851e; + local_2c4 = 0xc6891a; + local_2c0 = 0xc48b18; + local_2bc = 0xc18e15; + local_2b8 = 0xbd9211; + local_2b4 = 0xbc940f; + local_2b0 = 0xba950e; + local_2ac = 0xb6990a; + local_2a8 = 0xb39c07; + local_2a4 = 0xb39c07; + local_2a0 = 0xafa003; + local_29c = 0xa9a600; + local_298 = 0xa7a800; + local_294 = 0xa7a700; + local_290 = 0xa9a901; + local_28c = 0xadad05; + local_288 = 0xb0b008; + local_284 = 0xb0b008; + local_280 = 0xb6b60e; + local_27c = 0xb8b810; + local_278 = 0xb9b911; + local_274 = 0xbdbd15; + local_270 = 0xc0c018; + local_26c = 0xc0c018; + local_268 = 0xc4c41c; + local_264 = 0xc7c71f; + local_260 = 0xc9c921; + local_25c = 0xcece26; + local_258 = 0xd0d028; + local_254 = 0xd0d028; + local_250 = 0xd5d52d; + local_24c = 0xd8d830; + local_248 = 0xd8d82f; + local_244 = 0xdede36; + local_240 = 0xe0e038; + local_23c = 0xe1e139; + local_238 = 0xe5e53d; + local_234 = 0xe8e840; + local_230 = 0xe8e840; + local_22c = 0xecec44; + local_228 = 0xefef47; + local_224 = 0xf1f149; + local_220 = 0xf5f54d; + local_21c = 0xf9f951; + local_218 = 0xfcfc54; + local_214 = 0xf9fb53; + local_210 = 0xe9f74f; + local_20c = 0xdcf34b; + local_208 = 0xc6eb43; + local_204 = 0xb3e43c; + local_200 = 0xa2de36; + local_1fc = 0x93db33; + local_1f8 = 0x85d62e; + local_1f4 = 0x76cf27; + local_1f0 = 0x66cb23; + local_1ec = 0x55c41c; + local_1e8 = 0x3fbf17; + local_1e4 = 0x2db911; + local_1e0 = 0x20b20a; + local_1dc = 0xfae06; + local_1d8 = 0xa700; + local_1d4 = 0xa800; + local_1d0 = 0x3ab03; + local_1cc = 0xab20a; + local_1c8 = 0x11b911; + local_1c4 = 0x16be16; + local_1c0 = 0x1dc51d; + local_1bc = 0x20c820; + local_1b8 = 0x24cc24; + local_1b4 = 0x2bd32b; + local_1b0 = 0x2fd72f; + local_1ac = 0x38e038; + local_1a8 = 0x3de53d; + local_1a4 = 0x41e941; + local_1a0 = 0x48f048; + local_19c = 0x4cf44c; + local_198 = 0x53fb53; + local_194 = 0x54fc53; + local_190 = 0x53fb5e; + local_18c = 0x54fc6b; + local_188 = 0x54fc76; + local_184 = 0x53fb81; + local_180 = 0x54fc8c; + local_17c = 0x54fc94; + local_178 = 0x54fc9f; + local_174 = 0x54fca9; + local_170 = 0x54fcb9; + local_16c = 0x54fcc6; + local_168 = 0x54fccd; + local_164 = 0x54fcd9; + local_160 = 0x54fce4; + local_15c = 0x53fbef; + local_158 = 0x54fcfa; + local_154 = 0x52fafb; + local_150 = 0x4ff1f7; + local_14c = 0x4ae6f2; + local_148 = 0x43daeb; + local_144 = 0x3fcfe7; + local_140 = 0x38c4e0; + local_13c = 0x34bcdc; + local_138 = 0x31b3d9; + local_134 = 0x29a4d1; + local_130 = 0x2295ca; + local_12c = 0x1b8bc3; + local_128 = 0x1783bf; + local_124 = 0x1478bc; + local_120 = 0xc6db4; + local_11c = 0x962b0; + local_118 = 0x156a9; + local_114 = 0x153a8; + local_110 = 0x1154ac; + local_10c = 0x2054b0; + local_108 = 0x2f54b7; + local_104 = 0x3e54bb; + local_100 = 0x5053c2; + local_fc = 0x5f54c6; + local_f8 = 0x7254cc; + local_f4 = 0x8654d4; + local_f0 = 0x9454d8; + local_ec = 0xa754df; + local_e8 = 0xb654e3; + local_e4 = 0xc554e7; + local_e0 = 0xd454ee; + local_dc = 0xe253f2; + local_d8 = 0xf554f9; + local_d4 = 0xfd53fc; + local_d0 = 0xf750f7; + local_cc = 0xf44cf4; + local_c8 = 0xed45ed; + local_c4 = 0xe840e8; + local_c0 = 0xe23ae2; + local_bc = 0xdc34dc; + local_b8 = 0xd72fd7; + local_b4 = 0xd028d0; + local_b0 = 0xcc24cc; + local_ac = 0xc51dc5; + local_a8 = 0xc018c0; + local_a4 = 0xbd15bd; + local_a0 = 0xb70fb7; + local_9c = 0xb008b0; + local_98 = 0xa800a8; + local_94 = 0xa800a7; + local_90 = 0xa403ab; + local_8c = 0xa106ae; + local_88 = 0x9a0db5; + local_84 = 0x9512ba; + local_80 = 0x8e19c1; + local_7c = 0x8720c8; + local_78 = 0x8423cb; + local_74 = 0x7c2bd3; + local_70 = 0x782fd7; + local_6c = 0x7235dd; + local_68 = 0x6d3ae2; + local_64 = 0x6a3de5; + local_60 = 0x6344ec; + local_5c = 0x5b4cf4; + local_58 = 0x5452fa; + local_54 = 0x5454fc; + local_50 = 0x4e4efb; + local_4c = 0x4949fc; + local_48 = 0x4343fc; + local_44 = 0x3d3dfc; + local_40 = 0x3838fc; + local_3c = 0x3030fc; + local_38 = 0x2c2cfc; + local_34 = 0x2626fc; + local_30 = 0x2121fb; + local_2c = 0x1d1dfc; + local_28 = 0x1717fc; + local_24 = 0x1111fc; + local_20 = 0x808fc; + local_1c = 0x404fc; + puVar12 = &local_418; + lVar6 = 0x100; + puVar5 = (undefined1 *)(param_1 + 0x2c9); + do { + uVar7 = *(undefined1 *)puVar12; + puVar5[2] = 0; + puVar9 = puVar5 + 4; + puVar5[1] = uVar7; + puVar12 = puVar12 + 1; + lVar6 = lVar6 + -1; + *puVar5 = puVar9[(longlong)(&stack0xfffffffffffffbe4 + -(longlong)_Src)]; + puVar5[-1] = puVar9[(longlong)(&stack0xfffffffffffffbe5 + -(longlong)_Src)]; + puVar5 = puVar9; + } while (lVar6 != 0); + break; + case 0xc: + iVar8 = 0; + puVar5 = (undefined1 *)(param_1 + 0x2c9); + do { + puVar5[1] = 0; + *puVar5 = 0; + puVar5[2] = 0; + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + puVar5[-1] = cVar2 * '\a'; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x24); + iVar8 = 0x24; + pcVar4 = (char *)(param_1 + 0x359); + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + pcVar4[1] = '\0'; + pcVar4[-1] = -1; + pcVar4[2] = '\0'; + *pcVar4 = (cVar2 + -0x24) * '\a'; + pcVar4 = pcVar4 + 4; + } while (iVar8 < 0x49); + iVar8 = 0x49; + puVar5 = (undefined1 *)(param_1 + 0x3ed); + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + puVar5[1] = 0; + *puVar5 = 0xff; + puVar5[2] = 0; + puVar5[-1] = (cVar2 + -0x49) * -7 + -0xb; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x6d); + iVar8 = 0x6d; + puVar5 = (undefined1 *)(param_1 + 0x47d); + iVar10 = 0x92; + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + *puVar5 = 0xff; + puVar5[-1] = 0; + puVar5[2] = 0; + puVar5[1] = (cVar2 + -0x6d) * '\a'; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x92); + iVar8 = 0xb6; + pcVar4 = (char *)(param_1 + 0x511); + do { + cVar2 = (char)iVar10; + iVar10 = iVar10 + 1; + pcVar4[1] = -1; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + *pcVar4 = (cVar2 + 'n') * -7 + -0xb; + pcVar4 = pcVar4 + 4; + } while (iVar10 < 0xb6); + puVar5 = (undefined1 *)(param_1 + 0x5a1); + iVar10 = 0xdb; + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + puVar5[1] = 0xff; + *puVar5 = 0; + puVar5[2] = 0; + puVar5[-1] = (cVar2 + 'J') * '\a'; + puVar5 = puVar5 + 4; + } while (iVar8 < 0xdb); + pcVar4 = (char *)(param_1 + 0x635); + do { + cVar2 = (char)iVar10; + iVar10 = iVar10 + 1; + pcVar4[1] = -1; + pcVar4[-1] = -1; + pcVar4[2] = '\0'; + *pcVar4 = (cVar2 + '%') * '\a'; + pcVar4 = pcVar4 + 4; + } while (iVar10 < 0x100); + break; + case 0xd: + iVar8 = 0; + pcVar4 = (char *)(param_1 + 0x2c9); + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + pcVar4[1] = '\0'; + pcVar4[-1] = -1; + pcVar4[2] = '\0'; + *pcVar4 = cVar2 << 2; + pcVar4 = pcVar4 + 4; + } while (iVar8 < 0x40); + iVar8 = 0x40; + iVar10 = 0x80; + puVar5 = (undefined1 *)(param_1 + 0x3c9); + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + puVar5[1] = 0; + *puVar5 = 0xff; + puVar5[2] = 0; + puVar5[-1] = cVar2 * -4 + -4; + puVar5 = puVar5 + 4; + } while (iVar8 < 0x80); + puVar5 = (undefined1 *)(param_1 + 0x4c9); + iVar8 = 0xc0; + do { + cVar2 = (char)iVar10; + iVar10 = iVar10 + 1; + *puVar5 = 0xff; + puVar5[-1] = 0; + puVar5[2] = 0; + puVar5[1] = cVar2 << 2; + puVar5 = puVar5 + 4; + } while (iVar10 < 0xc0); + pcVar4 = (char *)(param_1 + 0x5c9); + do { + cVar2 = (char)iVar8; + iVar8 = iVar8 + 1; + pcVar4[1] = -1; + pcVar4[-1] = '\0'; + pcVar4[2] = '\0'; + *pcVar4 = cVar2 * -4 + -4; + pcVar4 = pcVar4 + 4; + } while (iVar8 < 0x100); + break; + default: + LeaveCriticalSection(lpCriticalSection); + SetLastError(0xe4ae0001); + return; + } + memcpy((void *)(param_1 + 0x6f0),_Src,0x400); + memcpy((void *)(param_1 + 0xb18),_Src,0x400); + memcpy((void *)(param_1 + 0xf40),_Src,0x400); + LeaveCriticalSection(lpCriticalSection); + return; +} + + +================================================================== + +### EXPORT FUNC 18000f130 (3439 bytes) name=FUN_18000f130 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 FUN_18000f130(longlong param_1,LPCWSTR param_2) + +{ + int *piVar1; + LPCSTR lpMultiByteStr; + WCHAR WVar2; + undefined4 uVar3; + undefined1 auVar4 [16]; + undefined1 auVar5 [16]; + undefined1 auVar6 [16]; + float fVar7; + float fVar8; + float fVar9; + uint uVar10; + undefined8 uVar11; + __uint64 _Var12; + __int64 _Var13; + size_t sVar14; + LPVOID pvVar15; + wchar_t *pwVar16; + longlong *plVar17; + undefined **ppuVar18; + longlong lVar19; + int iVar20; + ulonglong uVar21; + LPCWSTR pWVar22; + uint uVar23; + ulonglong uVar24; + ulonglong uVar25; + uint uVar26; + int iVar27; + undefined1 auStackY_298 [32]; + CFile local_268 [32]; + wchar_t *local_248; + int local_240; + undefined4 local_23c; + uint local_238; + int local_234; + undefined4 local_230; + int local_22c; + float local_228; + int local_224; + int local_220 [2]; + longlong local_218; + longlong local_210; + longlong local_208; + undefined8 local_200 [3]; + undefined8 local_1e8; + int local_1d8; + ulonglong local_1d4 [3]; + undefined4 local_1bc; + WCHAR local_b8 [32]; + ulonglong local_78; + + local_1e8 = 0xfffffffffffffffe; + local_78 = DAT_18006cea0 ^ (ulonglong)auStackY_298; + local_208 = param_1; + FUN_180020138((undefined8 *)local_268); + local_238 = 8; + local_230 = 0xffff3cb0; + uVar25 = 0; + iVar20 = 0; + local_240 = 0; + local_23c = 0; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if (*(LPVOID *)(param_1 + 0x416a0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x416a0)); + *(undefined8 *)(param_1 + 0x416a0) = 0; + } + if (*(LPVOID *)(param_1 + 0x416a8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x416a8)); + *(undefined8 *)(param_1 + 0x416a8) = 0; + } + if (*(LPVOID *)(param_1 + 0x416b0) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x416b0)); + *(undefined8 *)(param_1 + 0x416b0) = 0; + } + FUN_1800357d0((ulonglong *)(param_1 + 0x41340),0,0x540); + FUN_1800357d0((ulonglong *)(param_1 + 0x100),0,0x120); + FUN_1800357d0((ulonglong *)(param_1 + 0x41880),0,0x65c); + if (*(int *)(param_1 + 0x228) != 0) { + lVar19 = -1; + pWVar22 = param_2; + do { + if (lVar19 == 0) break; + lVar19 = lVar19 + -1; + WVar2 = *pWVar22; + pWVar22 = pWVar22 + 1; + } while (WVar2 != L'\0'); + if (lVar19 != -2) { + uVar11 = FUN_180020a6c((longlong)local_268,param_2,0x40,0); + if ((int)uVar11 == 0) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_1800203a4(local_268); + return 0; + } + wcscpy_s((wchar_t *)(param_1 + 0x4134c),0x104,param_2); + *(undefined2 *)(param_1 + 0x41552) = 0; + local_234 = 0; + FUN_18001ef2c(local_200); + FUN_18001fd6c((longlong)local_268,&local_234,4); + FUN_18001fd6c((longlong)local_268,local_220,4); + FUN_18001fd6c((longlong)local_268,&local_224,4); + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x41558),4); + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x41554),4); + if (local_234 == 0x5aa50003) { + FUN_18001fd6c((longlong)local_268,&local_238,4); + FUN_18001fd6c((longlong)local_268,&local_230,4); + iVar20 = 0x24; + *(undefined4 *)(param_1 + 0x47950) = 0; + } + else if (local_234 == 0x5aa50004) { + FUN_18001fd6c((longlong)local_268,&local_240,4); + FUN_18001fd6c((longlong)local_268,&local_23c,4); + iVar20 = 0x144; + *(undefined4 *)(param_1 + 0x47950) = 1; + } + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x4155c),4); + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x41560),4); + if (*(int *)(param_1 + 0x47950) != 0) { + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x100),0x120); + } + if (((((local_234 != 0x5aa50003) && (local_234 != 0x5aa50004)) || + (uVar26 = *(uint *)(param_1 + 0x41558), uVar26 < 2)) || + ((0x13 < uVar26 || (*(int *)(param_1 + 0x41554) == 0)))) || + ((local_238 == 0 || + (((local_238 & local_238 - 1) != 0 || (7 < *(uint *)(param_1 + 0x47954))))))) { + CFile::Close(local_268); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_18001ef94(); + FUN_1800203a4(local_268); + return 0; + } + if ((local_220[0] != *(int *)(param_1 + 0x41fc0)) || + (local_224 != *(int *)(param_1 + 0x41fc4))) { + CFile::Close(local_268); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_18001ef94(); + FUN_1800203a4(local_268); + return 0; + } + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x41564),uVar26 << 2); + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x415b4),*(int *)(param_1 + 0x41558) << 2 + ); + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x41604),*(int *)(param_1 + 0x41558) << 2 + ); + FUN_18001fd6c((longlong)local_268,(LPVOID)(param_1 + 0x41654), + *(int *)(param_1 + 0x41558) * 4 - 4); + uVar21 = uVar25; + while ((uint)uVar21 < *(int *)(param_1 + 0x41558) - 1U) { + if ((*(uint *)(param_1 + 0x47938) <= *(uint *)(param_1 + 0x41654 + uVar21 * 4)) || + (uVar24 = (ulonglong)((uint)uVar21 + 1), lVar19 = uVar21 * 4, uVar21 = uVar24, + *(int *)(param_1 + 0x41564 + uVar24 * 4) <= *(int *)(param_1 + 0x41564 + lVar19))) { + CFile::Close(local_268); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_18001ef94(); + FUN_1800203a4(local_268); + return 0; + } + } + uVar26 = *(int *)(param_1 + 0x41560) + + (*(int *)(param_1 + 0x41554) * 3 + -1) * *(int *)(param_1 + 0x47938) * 2 + + *(int *)(param_1 + 0x4155c); + uVar21 = uVar25; + uVar24 = uVar25; + while( true ) { + iVar27 = (int)uVar24; + if (*(int *)(param_1 + 0x41558) - 1U <= (uint)uVar21) break; + uVar24 = (ulonglong)(uint)(iVar27 + *(int *)(param_1 + 0x41654 + uVar21 * 4) * 0x28); + uVar21 = (ulonglong)((uint)uVar21 + 1); + } + uVar21 = (ulonglong) + (*(int *)(param_1 + 0x41558) * uVar26 + iVar27 + -4 + + *(int *)(param_1 + 0x41558) * 0x10 + iVar20); + _Var12 = CFile::GetLength(local_268); + if (_Var12 < uVar21) { + CFile::Close(local_268); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_18001ef94(); + FUN_1800203a4(local_268); + return 0; + } + _Var12 = CFile::GetLength(local_268); + if ((*(int *)(param_1 + 0x47950) == 0) && (0x11f < *(uint *)(param_1 + 0x4155c))) { + _Var13 = FUN_18001fe78((longlong)local_268); + CFile::Seek(local_268, + (ulonglong) + (uint)((*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938)) * 2,1); + local_1d8 = 0; + FUN_1800357d0(local_1d4,0,0x11c); + FUN_18001fd6c((longlong)local_268,&local_1d8,0x120); + CFile::Seek(local_268,_Var13,0); + if (local_1d8 == 0x1000000) { + local_1bc = 0xc; + memcpy((void *)(param_1 + 0x100),&local_1d8,0x120); + } + } + if (*(int *)(param_1 + 0x11c) == 0) { + *(undefined4 *)(param_1 + 0x11c) = 0xc; + } + auVar4._8_8_ = 0; + auVar4._0_8_ = (ulonglong)(*(int *)(param_1 + 0x41558) * uVar26) + 3 >> 2; + sVar14 = SUB168(ZEXT816(4) * auVar4,0); + if (SUB168(ZEXT816(4) * auVar4,8) != 0) { + sVar14 = 0xffffffffffffffff; + } + pvVar15 = thunk_FUN_18001eb74(sVar14); + *(LPVOID *)(param_1 + 0x416a0) = pvVar15; + auVar5._8_8_ = 0; + auVar5._0_8_ = (ulonglong)uVar26 + 3 >> 2; + sVar14 = SUB168(ZEXT816(4) * auVar5,0); + if (SUB168(ZEXT816(4) * auVar5,8) != 0) { + sVar14 = 0xffffffffffffffff; + } + pvVar15 = thunk_FUN_18001eb74(sVar14); + *(LPVOID *)(param_1 + 0x416a8) = pvVar15; + if (iVar27 != 0) { + auVar6._8_8_ = 0; + auVar6._0_8_ = uVar24 + 3 >> 2; + sVar14 = SUB168(ZEXT816(4) * auVar6,0); + if (SUB168(ZEXT816(4) * auVar6,8) != 0) { + sVar14 = 0xffffffffffffffff; + } + pvVar15 = thunk_FUN_18001eb74(sVar14); + *(LPVOID *)(param_1 + 0x416b0) = pvVar15; + } + if (((*(longlong *)(param_1 + 0x416a0) == 0) || + (lVar19 = *(longlong *)(param_1 + 0x416a8), lVar19 == 0)) || + ((iVar27 != 0 && (*(longlong *)(param_1 + 0x416b0) == 0)))) { + CFile::Close(local_268); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_18001ef94(); + FUN_1800203a4(local_268); + return 0; + } + *(longlong *)(param_1 + 0x41858) = lVar19; + *(ulonglong *)(param_1 + 0x41870) = + lVar19 + ((ulonglong) + (uint)((*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938)) + + (ulonglong)(*(uint *)(param_1 + 0x4155c) >> 1)) * 2; + uVar11 = FUN_18001fe78((longlong)local_268); + *(int *)(param_1 + 0x41708) = (int)uVar11; + *(undefined4 *)(param_1 + 0x41758) = 0; + for (uVar23 = 1; uVar23 < *(uint *)(param_1 + 0x41558); uVar23 = uVar23 + 1) { + *(uint *)(param_1 + 0x41708 + (ulonglong)uVar23 * 4) = + uVar26 + *(int *)(param_1 + 0x41708 + (ulonglong)(uVar23 - 1) * 4); + *(uint *)(param_1 + 0x41758 + (ulonglong)uVar23 * 4) = + uVar26 + *(int *)(param_1 + 0x41758 + (ulonglong)(uVar23 - 1) * 4); + } + *(uint *)(param_1 + 0x417a8) = + *(int *)(param_1 + 0x41558) * uVar26 + *(int *)(param_1 + 0x41708); + *(undefined4 *)(param_1 + 0x417f4) = 0; + uVar24 = 1; + while (uVar23 = (uint)uVar24, uVar23 < *(int *)(param_1 + 0x41558) - 1U) { + uVar10 = uVar23 - 1; + iVar20 = *(int *)(param_1 + 0x41654 + (ulonglong)uVar10 * 4) * 0x28; + *(int *)(param_1 + 0x417a8 + uVar24 * 4) = + iVar20 + *(int *)(param_1 + 0x417a8 + (ulonglong)uVar10 * 4); + *(int *)(param_1 + 0x417f4 + uVar24 * 4) = + iVar20 + *(int *)(param_1 + 0x417f4 + (ulonglong)uVar10 * 4); + uVar24 = (ulonglong)(uVar23 + 1); + } + if (uVar21 < _Var12) { + CFile::Seek(local_268,(ulonglong)(*(int *)(param_1 + 0x41558) * uVar26 + iVar27),1); + _Var12 = CFile::GetLength(local_268); + uVar11 = FUN_18001fe78((longlong)local_268); + uVar26 = (int)_Var12 - (int)uVar11; + *(undefined4 *)(param_1 + 0x41884) = 0; + fVar9 = DAT_18005ebdc; + fVar8 = DAT_18005ebd8; + fVar7 = DAT_18005e700; + while ((0x43 < (int)uVar26 && (*(uint *)(param_1 + 0x41884) < 3))) { + local_22c = 0; + FUN_18001fd6c((longlong)local_268,&local_22c,4); + if (local_22c != 0x6bb60001) break; + lpMultiByteStr = + (LPCSTR)((ulonglong)*(uint *)(param_1 + 0x41884) * 0x21c + 0x41888 + param_1); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr,0x20); + lpMultiByteStr[0x1e] = '\0'; + lpMultiByteStr[0x1f] = '\0'; + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x20,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x24,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x28,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x2c,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x30,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x38,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x34,4); + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x3c,4); + if (((0xf < *(uint *)(lpMultiByteStr + 0x30)) || + (uVar23 = *(uint *)(lpMultiByteStr + 0x3c), uVar23 == 0)) || (0x19 < uVar23)) break; + if (uVar26 < 0x21c) { + if (1 < uVar23) { + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x40,uVar23 * 4 - 4); + } + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0xd4, + *(int *)(lpMultiByteStr + 0x3c) << 3); + uVar26 = uVar26 + *(int *)(lpMultiByteStr + 0x3c) * -0xc + -0x40; + local_228 = fVar7; + FUN_18001adb0((longlong *)&local_248,lpMultiByteStr); + iVar20 = *(int *)(local_248 + -8); + if ((int)(*(int *)(local_248 + -6) - iVar20 | 1U - *(int *)(local_248 + -4)) < 0) { + FUN_18000b190((longlong *)&local_248,iVar20); + } + FUN_180034160(local_248,(longlong)(iVar20 + 1)); + if ((iVar20 < 0) || (*(int *)(local_248 + -6) < iVar20)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(local_248 + -8) = iVar20; + local_248[iVar20] = L'\0'; + if (((-1 < *(int *)(local_248 + -8)) && + (pwVar16 = wcsstr(local_248,L"FILT"), pwVar16 != (wchar_t *)0x0)) && + (iVar20 = (int)((longlong)pwVar16 - (longlong)local_248 >> 1), -1 < iVar20)) { + plVar17 = FUN_18000a7c0((longlong *)&local_248,&local_210, + (*(int *)(local_248 + -8) - iVar20) + -4); + FUN_18000b390((longlong *)&local_248,plVar17); + LOCK(); + piVar1 = (int *)(local_210 + -8); + iVar20 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar20 + -1 < 1) { + (**(code **)(**(longlong **)(local_210 + -0x18) + 8))(); + } + FUN_180033340(local_248,L"%f",&local_228,uVar24); + } + *(float *)(lpMultiByteStr + 0x204) = local_228; + LOCK(); + pwVar16 = local_248 + -4; + iVar20 = *(int *)pwVar16; + *(int *)pwVar16 = *(int *)pwVar16 + -1; + UNLOCK(); + if (iVar20 + -1 < 1) { + (**(code **)(**(longlong **)(local_248 + -0xc) + 8))(); + } + } + else { + FUN_18001fd6c((longlong)local_268,lpMultiByteStr + 0x40,0x1dc); + uVar26 = uVar26 - 0x220; + } + if ((*(float *)(lpMultiByteStr + 0x204) <= 0.0) || + (fVar7 < *(float *)(lpMultiByteStr + 0x204))) { + lpMultiByteStr[0x204] = '\0'; + lpMultiByteStr[0x205] = '\0'; + lpMultiByteStr[0x206] = -0x80; + lpMultiByteStr[0x207] = '?'; + } + if ((*(float *)(lpMultiByteStr + 0x214) < fVar9) || + (fVar8 < *(float *)(lpMultiByteStr + 0x214))) { + lpMultiByteStr[0x214] = '\0'; + lpMultiByteStr[0x215] = '\0'; + lpMultiByteStr[0x216] = '\0'; + lpMultiByteStr[0x217] = '\0'; + } + *(undefined4 *)(lpMultiByteStr + 0xc4) = *(undefined4 *)(param_1 + 0x47950); + *(int *)(lpMultiByteStr + 200) = local_240; + *(undefined4 *)(lpMultiByteStr + 0xcc) = local_23c; + *(int *)(param_1 + 0x41884) = *(int *)(param_1 + 0x41884) + 1; + *(undefined4 *)(param_1 + 0x41880) = 1; + ppuVar18 = FUN_18001fcc0(); + if (ppuVar18 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_218 = (**(code **)(*ppuVar18 + 0x18))(ppuVar18); + local_218 = local_218 + 0x18; + uVar24 = 0xffffffff; + MultiByteToWideChar(0,0,lpMultiByteStr,-1,local_b8,0x20); + FUN_18001ad00(&local_218,L"Found Lens: %s.",local_b8,uVar24); + LOCK(); + piVar1 = (int *)(local_218 + -8); + iVar20 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar20 + -1 < 1) { + (**(code **)(**(longlong **)(local_218 + -0x18) + 8))(); + } + } + } + FUN_18001ef94(); + CFile::Close(local_268); + if (*(int *)(param_1 + 0x47950) == 0) { + *(uint *)(param_1 + 0x47944) = local_238; + *(undefined4 *)(param_1 + 0x47948) = local_230; + do { + if (1 << ((byte)uVar25 & 0x1f) == *(int *)(param_1 + 0x47944)) { + *(int *)(param_1 + 0x4794c) = (int)uVar25; + break; + } + uVar26 = (int)uVar25 + 1; + uVar25 = (ulonglong)uVar26; + } while (uVar26 < 0x20); + } + else { + *(undefined4 *)(param_1 + 0x47954) = local_23c; + } + *(undefined4 *)(param_1 + 0x41340) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_180015500(param_1,local_240); + uVar3 = *(undefined4 *)(param_1 + 0x41340); + FUN_1800203a4(local_268); + return uVar3; + } + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + FUN_1800203a4(local_268); + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000fec0 (24 bytes) name=Unwind@18000fec0 + +void Unwind_18000fec0(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000fee0 (27 bytes) name=Unwind@18000fee0 + +void Unwind_18000fee0(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ff00 (24 bytes) name=Unwind@18000ff00 + +void Unwind_18000ff00(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ff20 (27 bytes) name=Unwind@18000ff20 + +void Unwind_18000ff20(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x88)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ff40 (27 bytes) name=Unwind@18000ff40 + +void Unwind_18000ff40(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x80)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ff60 (72 bytes) name=Catch@18000ff60 + +undefined * Catch_18000ff60(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0xa0) = *(undefined8 *)(param_2 + 0xa8); + CFile::Close((CFile *)(param_2 + 0x30)); + LeaveCriticalSection((LPCRITICAL_SECTION)(*(longlong *)(param_2 + 0x90) + 0x238)); + return &DAT_18000fe46; +} + + +================================================================== + +### EXPORT FUNC 18000ffb0 (1995 bytes) name=FUN_18000ffb0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000ffb0(longlong param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + longlong lVar10; + int *piVar11; + int *piVar12; + int iVar13; + longlong lVar14; + float fVar15; + int local_78 [12]; + int local_48 [12]; + + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41344) != 0)) { + iVar2 = (*(int *)(param_1 + 0x41568) + *(int *)(param_1 + 0x41564)) / 2; + if (*(float *)(param_1 + 0x9c) == _DAT_180057598) { + *(undefined4 *)(param_1 + 0x418c4) = 1; + *(undefined4 *)(param_1 + 0x4195c) = *(undefined4 *)(param_1 + 0x47944); + *(int *)(param_1 + 0x41960) = (*(int *)(param_1 + 0x47948) + *(int *)(param_1 + 0x54)) - iVar2 + ; + return; + } + iVar6 = *(int *)(param_1 + 0x54); + fVar15 = ((float)(iVar6 - iVar2) * *(float *)(param_1 + 0x9c)) / _DAT_18005e820 + DAT_18005e700; + if (fVar15 < DAT_18005e824) { + fVar15 = DAT_18005e824; + } + iVar1 = *(int *)(param_1 + 0x47950); + *(undefined4 *)(param_1 + 0x418c4) = 10; + iVar13 = 0; + local_48[0] = 0; + iVar9 = iVar2 - (int)((float)iVar6 * fVar15); + iVar3 = 0; + if (iVar1 == 0) { + local_78[0] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[0] < 0) { + local_78[0] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)((iVar9 >> 0x1f & 0xfffU) + iVar9) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[0] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[1] = 10000; + iVar9 = (int)((float)(10000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[1] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[1] < 0) { + local_78[1] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[1] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[2] = 20000; + iVar9 = (int)((float)(20000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[2] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[2] < 0) { + local_78[2] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[2] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[3] = 30000; + iVar9 = (int)((float)(30000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[3] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[3] < 0) { + local_78[3] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[3] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[4] = 40000; + iVar9 = (int)((float)(40000 - iVar6) * fVar15) + iVar2; + iVar7 = 0; + if (iVar1 == 0) { + local_78[4] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[4] < 0) { + local_78[4] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar5 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar7; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar9 = (iVar9 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[4] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[5] = 50000; + iVar9 = (int)((float)(50000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[5] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[5] < 0) { + local_78[5] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar5 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar7; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar9 = (iVar9 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[5] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[6] = 60000; + iVar9 = (int)((float)(60000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[6] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[6] < 0) { + local_78[6] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar5 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar7; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar9 = (iVar9 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[6] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[7] = 70000; + iVar6 = (int)((float)(70000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[7] = iVar6 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[7] < 0) { + local_78[7] = iVar13; + } + } + else { + iVar6 = iVar6 + 150000; + iVar9 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc; + if ((-1 < iVar9) && (iVar7 = iVar9, 0x285 < iVar9)) { + iVar7 = 0x285; + } + iVar6 = (iVar6 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar6 = ((int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar6 < 0) { + iVar6 = iVar13; + } + local_78[7] = iVar6 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar9 = 80000; + lVar10 = 0x20; + iVar6 = 80000 - *(int *)(param_1 + 0x54); + do { + *(int *)((longlong)local_48 + lVar10) = iVar9; + iVar7 = (int)((float)iVar6 * fVar15) + iVar2; + if (iVar1 == 0) { + iVar7 = iVar7 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (iVar7 < 0) { + iVar7 = iVar13; + } + } + else { + iVar7 = iVar7 + 150000; + iVar5 = (int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar3; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar7 = (iVar7 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar7 = ((int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar7 < 0) { + iVar7 = iVar13; + } + iVar7 = iVar7 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar9 = iVar9 + 10000; + *(int *)((longlong)local_78 + lVar10) = iVar7; + lVar10 = lVar10 + 4; + iVar6 = iVar6 + 10000; + } while (iVar9 < 110000); + piVar11 = (int *)(param_1 + 0x418cc); + piVar12 = (int *)(param_1 + 0x41960); + lVar10 = 0; + do { + iVar2 = *(int *)((longlong)local_78 + lVar10 + 4); + iVar6 = *(int *)((longlong)local_48 + lVar10 + 4); + iVar9 = *(int *)((longlong)local_78 + lVar10); + iVar1 = *(int *)((longlong)local_48 + lVar10); + iVar3 = *(int *)((longlong)local_78 + lVar10 + 0xc); + piVar11[-1] = iVar2; + lVar14 = lVar10 + 0x14; + uVar8 = iVar2 - iVar9; + uVar8 = (((uVar8 >> 1) - iVar1) + iVar6) / uVar8; + piVar12[-1] = uVar8; + iVar13 = *(int *)((longlong)local_78 + lVar10 + 8); + *piVar12 = iVar1 - iVar9 * uVar8; + iVar9 = *(int *)((longlong)local_48 + lVar10 + 8); + *piVar11 = iVar13; + uVar8 = ((((uint)(iVar13 - iVar2) >> 1) - iVar6) + iVar9) / (uint)(iVar13 - iVar2); + piVar12[1] = uVar8; + iVar1 = *(int *)((longlong)local_78 + lVar10 + 0x10); + piVar12[2] = iVar6 - iVar2 * uVar8; + iVar2 = *(int *)((longlong)local_48 + lVar10 + 0xc); + piVar11[1] = iVar3; + uVar8 = ((((uint)(iVar3 - iVar13) >> 1) - iVar9) + iVar2) / (uint)(iVar3 - iVar13); + piVar12[3] = uVar8; + iVar6 = *(int *)((longlong)local_48 + lVar10 + 0x10); + piVar12[4] = iVar9 - iVar13 * uVar8; + iVar9 = *(int *)((longlong)local_78 + lVar10 + 0x14); + piVar11[2] = iVar1; + uVar8 = ((((uint)(iVar1 - iVar3) >> 1) - iVar2) + iVar6) / (uint)(iVar1 - iVar3); + piVar12[5] = uVar8; + iVar13 = *(int *)((longlong)local_48 + lVar10 + 0x14); + piVar12[6] = iVar2 - iVar3 * uVar8; + piVar11[3] = iVar9; + uVar8 = iVar9 - iVar1; + uVar8 = ((iVar13 + (uVar8 >> 1)) - iVar6) / uVar8; + piVar12[7] = uVar8; + piVar12[8] = iVar6 - iVar1 * uVar8; + piVar11 = piVar11 + 5; + piVar12 = piVar12 + 10; + lVar10 = lVar14; + } while (lVar14 < 0x28); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180010780 (273 bytes) name=FUN_180010780 + +void FUN_180010780(longlong param_1,ushort *param_2) + +{ + ushort uVar1; + uint uVar2; + ulonglong uVar3; + ulonglong uVar4; + ulonglong uVar5; + uint uVar6; + ushort uVar8; + uint uVar9; + undefined4 uVar10; + undefined4 uVar11; + double dVar13; + ulonglong uVar7; + ulonglong uVar12; + + uVar2 = *(uint *)(param_1 + 0x47938); + uVar8 = *param_2; + uVar3 = 0; + uVar10 = 0; + uVar9 = (uint)uVar8; + uVar5 = uVar3; + uVar11 = uVar10; + if (uVar2 != 0) { + uVar4 = uVar3; + uVar7 = uVar3; + uVar12 = uVar3; + do { + uVar1 = *param_2; + param_2 = param_2 + 1; + uVar3 = uVar3 + uVar1; + uVar5 = uVar5 + (uint)uVar1 * (uint)uVar1; + if ((ushort)uVar9 < uVar1) { + uVar9 = (uint)uVar1; + uVar4 = uVar7; + } + else if (uVar1 < uVar8) { + uVar12 = uVar7; + uVar8 = uVar1; + } + uVar11 = (undefined4)uVar12; + uVar10 = (undefined4)uVar4; + uVar6 = (int)uVar7 + 1; + uVar7 = (ulonglong)uVar6; + } while (uVar6 < *(uint *)(param_1 + 0x47938)); + } + *(uint *)(param_1 + 0x42010) = uVar9; + *(uint *)(param_1 + 0x42014) = (uint)uVar8; + *(undefined4 *)(param_1 + 0x42020) = uVar10; + *(undefined4 *)(param_1 + 0x42024) = uVar11; + *(int *)(param_1 + 0x42018) = (int)((longlong)uVar3 / (longlong)(ulonglong)uVar2); + dVar13 = FUN_1800513c0(((double)(longlong)uVar5 - + ((double)(longlong)uVar3 * (double)(longlong)uVar3) / (double)uVar2) / + (double)(uVar2 - 1)); + *(int *)(param_1 + 0x4201c) = (int)dVar13; + return; +} + + +================================================================== + +### EXPORT FUNC 1800108a0 (284 bytes) name=FUN_1800108a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_1800108a0(longlong param_1) + +{ + ushort uVar1; + uint uVar2; + int iVar3; + int iVar4; + + iVar4 = *(int *)(param_1 + 0x4c); + uVar2 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar2 = uVar2 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar1 = (ushort)uVar2; + if (0xffff < uVar2) { + uVar1 = 0xffff; + } + } + else { + iVar3 = FUN_180015940(param_1,30000,uVar2); + iVar3 = iVar3 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < iVar3) { + iVar3 = 0xffff; + } + uVar1 = (ushort)iVar3; + } + if (iVar4 < 0) { + if (iVar4 < -100) { + iVar4 = -100; + } + iVar3 = -0x51eb851f; + } + else { + if (100 < iVar4) { + iVar4 = 100; + } + iVar3 = -0x1b4e81b5; + } + iVar4 = (int)((ulonglong)((longlong)iVar3 * (longlong)(int)((uint)uVar1 * iVar4)) >> 0x20); + iVar4 = (uint)uVar1 + ((iVar4 >> 4) - (iVar4 >> 0x1f)); + if (((*(int *)(param_1 + 0x41340) != 0) && (_DAT_180057598 < *(float *)(param_1 + 0x9c))) && + ((*(int *)(param_1 + 0x41558) == 1 || + ((*(int *)(param_1 + 0x41558) == 2 && + (*(int *)(param_1 + 0x41568) - *(int *)(param_1 + 0x41564) == 50000)))))) { + iVar4 = iVar4 + (int)(((float)((*(int *)(param_1 + 0x54) - + (*(int *)(param_1 + 0x41568) + *(int *)(param_1 + 0x41564)) / 2) + * iVar4) * *(float *)(param_1 + 0x9c)) / _DAT_18005e820); + } + iVar3 = 0x80; + if (0x80 < iVar4) { + iVar3 = iVar4; + } + return iVar3; +} + + +================================================================== + +### EXPORT FUNC 1800109c0 (640 bytes) name=FUN_1800109c0 + +void FUN_1800109c0(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + + if (*(int *)(param_1 + 0x42014) == *(int *)(param_1 + 0x42010)) { + *(int *)(param_1 + 0x4202c) = *(int *)(param_1 + 0x42010); + *(int *)(param_1 + 0x42030) = *(int *)(param_1 + 0x42014); + FUN_1800357d0((ulonglong *)(param_1 + 0x4284c),0x80,0x400); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x2a0),0x80,(ulonglong)*(uint *)(param_1 + 0x47938)); + FUN_1800357d0((ulonglong *)(param_1 + 0x4204c),0,0x400); + *(undefined4 *)(param_1 + 0x4224c) = *(undefined4 *)(param_1 + 0x47938); + FUN_1800357d0((ulonglong *)(param_1 + 0x42c4c),0,0x1000); + *(undefined4 *)(param_1 + 0x4344c) = *(undefined4 *)(param_1 + 0x47938); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x2b0),0x80,(ulonglong)*(uint *)(param_1 + 0x47940)); + *(undefined4 *)(param_1 + 0x4203c) = 1; + return; + } + if (*(int *)(param_1 + 0x10) == 0) { + iVar3 = *(int *)(param_1 + 0x42018); + if (*(int *)(param_1 + 0x88) != 0) { + FUN_180011380(param_1); + iVar3 = *(int *)(param_1 + 0x44c64); + } + uVar1 = FUN_1800108a0(param_1); + uVar2 = iVar3 - (uVar1 >> 1); + if (*(uint *)(param_1 + 0x42014) < uVar2) { + uVar2 = *(uint *)(param_1 + 0x42014); + } + uVar1 = (uVar1 >> 1) + iVar3; + *(uint *)(param_1 + 0x42030) = uVar2; + if (uVar1 < *(uint *)(param_1 + 0x42010)) { + uVar1 = *(uint *)(param_1 + 0x42010); + } + *(uint *)(param_1 + 0x4202c) = uVar1; + if ((int)uVar2 < 0) { + *(undefined4 *)(param_1 + 0x42030) = 0; + } + if (0xffff < (int)uVar1) { + *(undefined4 *)(param_1 + 0x4202c) = 0xffff; + } + if (*(int *)(param_1 + 0x90) == 0) { + FUN_180011ee0(param_1,*(ushort **)(param_1 + 0x270)); + } + else { + FUN_180011cc0(param_1); + } + if (*(int *)(param_1 + 0x28) == 0) { + if (*(int *)(param_1 + 0x44c50) != 0) { + memcpy((void *)(param_1 + 0x6f0),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xb18),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xf40),(void *)(param_1 + 0x2c8),0x400); + *(undefined4 *)(param_1 + 0x44c50) = 0; + } + } + else { + FUN_180010c40(param_1); + *(undefined4 *)(param_1 + 0x44c50) = 1; + } + } + else { + FUN_1800110e0(param_1); + if (*(int *)(param_1 + 0x44c50) != 0) { + memcpy((void *)(param_1 + 0x6f0),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xb18),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xf40),(void *)(param_1 + 0x2c8),0x400); + *(undefined4 *)(param_1 + 0x44c50) = 0; + } + } + FUN_180010e80(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180010c40 (574 bytes) name=FUN_180010c40 + +void FUN_180010c40(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + undefined4 *puVar9; + uint uVar10; + uint uVar11; + ulonglong uVar12; + uint uVar13; + + uVar1 = *(uint *)(param_1 + 0x4202c); + uVar10 = *(uint *)(param_1 + 0x47938); + uVar2 = *(uint *)(param_1 + 0x42030); + iVar3 = *(int *)(param_1 + 0x18); + uVar5 = 0; + uVar8 = *(uint *)(param_1 + 0x41fc0); + uVar13 = 0xffff; + uVar7 = 0xffff; + *(undefined4 *)(param_1 + 0x74) = 1; + do { + uVar11 = uVar7 + uVar5 >> 1; + iVar6 = FUN_180016290(param_1,uVar11,(uVar10 >> 1) + (uVar8 >> 1),0); + if ((*(int *)(param_1 + 0x74) != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar6 = FUN_180015b90(param_1,iVar6,*(float *)(param_1 + 0xd4)); + } + uVar4 = uVar11; + if (iVar6 <= iVar3) { + uVar4 = uVar7; + uVar5 = uVar11; + } + uVar7 = uVar4; + } while (uVar5 + 1 < uVar7); + iVar3 = *(int *)(param_1 + 0x14); + uVar10 = *(uint *)(param_1 + 0x47938); + uVar7 = uVar7 + uVar5 >> 1; + uVar5 = 0; + uVar8 = *(uint *)(param_1 + 0x41fc0); + *(undefined4 *)(param_1 + 0x74) = 1; + do { + uVar11 = uVar13 + uVar5 >> 1; + iVar6 = FUN_180016290(param_1,uVar11,(uVar10 >> 1) + (uVar8 >> 1),0); + if ((*(int *)(param_1 + 0x74) != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar6 = FUN_180015b90(param_1,iVar6,*(float *)(param_1 + 0xd4)); + } + uVar4 = uVar11; + if (iVar6 <= iVar3) { + uVar4 = uVar13; + uVar5 = uVar11; + } + uVar13 = uVar4; + } while (uVar5 + 1 < uVar13); + uVar8 = uVar13 + uVar5 >> 1; + uVar10 = 0x100; + if (uVar1 < uVar7) { + uVar5 = 0x100; + } + else if (uVar7 < uVar2) { + uVar5 = 0xffffffff; + } + else { + uVar5 = (uint)*(byte *)((ulonglong)((uVar7 - uVar2) * 0x3ff) / (ulonglong)(uVar1 - uVar2) + + 0x4284c + param_1); + } + if (uVar8 <= uVar1) { + if (uVar8 < uVar2) { + uVar10 = 0xffffffff; + } + else { + uVar10 = (uint)*(byte *)((ulonglong)((uVar8 - uVar2) * 0x3ff) / (ulonglong)(uVar1 - uVar2) + + 0x4284c + param_1); + } + } + memcpy((void *)(param_1 + 0x6f0),(void *)(param_1 + 0x2c8),0x400); + if ((int)uVar10 < 0) { + uVar10 = 0; + } + if (0xff < (int)uVar5) { + uVar5 = 0xff; + } + if ((int)uVar10 <= (int)uVar5) { + uVar12 = (ulonglong)((uVar5 - uVar10) + 1); + puVar9 = (undefined4 *)(param_1 + 0x6f0 + (longlong)(int)uVar10 * 4); + do { + uVar12 = uVar12 - 1; + *puVar9 = *(undefined4 *)(param_1 + 0x2c); + puVar9 = puVar9 + 1; + } while (uVar12 != 0); + } + memcpy((void *)(param_1 + 0xb18),(void *)(param_1 + 0x6f0),0x400); + memcpy((void *)(param_1 + 0xf40),(void *)(param_1 + 0x6f0),0x400); + return; +} + + +================================================================== + +### EXPORT FUNC 180010e80 (538 bytes) name=FUN_180010e80 + +void FUN_180010e80(longlong param_1) + +{ + int *piVar1; + ushort uVar2; + int iVar3; + undefined1 *puVar4; + longlong lVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + int iVar10; + uint uVar11; + ushort *puVar12; + uint uVar13; + int iVar14; + + iVar7 = *(int *)(param_1 + 0x4202c); + puVar4 = *(undefined1 **)(param_1 + 0x2a0); + puVar12 = *(ushort **)(param_1 + 0x270); + iVar14 = *(int *)(param_1 + 0x42030); + FUN_1800357d0((ulonglong *)(param_1 + 0x4204c),0,0x400); + iVar3 = *(int *)(param_1 + 0x42030); + for (iVar10 = *(int *)(param_1 + 0x47938); iVar10 != 0; iVar10 = iVar10 + -1) { + uVar2 = *puVar12; + puVar12 = puVar12 + 1; + uVar6 = ((uint)uVar2 - iVar3) * (int)(0xffc00000 / (ulonglong)(uint)(iVar7 - iVar14)); + *puVar4 = *(undefined1 *)((ulonglong)(uVar6 >> 0x16) + 0x4284c + param_1); + piVar1 = (int *)(param_1 + 0x4204c + (ulonglong)(uVar6 >> 0x18) * 4); + *piVar1 = *piVar1 + 1; + puVar4 = puVar4 + 1; + } + uVar6 = *(uint *)(param_1 + 0x41fd0); + lVar5 = *(longlong *)(param_1 + 0x2b0); + *(undefined4 *)(param_1 + 0x4203c) = 1; + if (*(int *)(param_1 + 0x94) == 0) { + uVar8 = *(uint *)(param_1 + 0x41fd4); + if (uVar8 < 2) { + iVar7 = 0; + } + else { + iVar7 = (int)(0xff0000 / (ulonglong)(uVar8 - 1)); + } + iVar14 = uVar8 - 1; + if (-1 < iVar14) { + uVar11 = uVar6 * iVar14; + uVar8 = iVar7 * iVar14; + do { + FUN_1800357d0((ulonglong *)((ulonglong)uVar11 + lVar5),(ulonglong)(uVar8 >> 0x10 & 0xff), + (ulonglong)uVar6); + uVar8 = uVar8 - iVar7; + uVar11 = uVar11 - uVar6; + iVar14 = iVar14 + -1; + } while (-1 < iVar14); + } + } + else { + iVar7 = *(int *)(param_1 + 0x42030); + uVar8 = 0; + if ((*(int *)(param_1 + 0x42014) == iVar7) || (*(int *)(param_1 + 0x4202c) == iVar7)) { + iVar14 = 0; + } + else { + iVar14 = ((*(int *)(param_1 + 0x42014) - iVar7) * 0x3ff) / + (*(int *)(param_1 + 0x4202c) - iVar7); + } + if ((*(int *)(param_1 + 0x42010) == iVar7) || (*(int *)(param_1 + 0x4202c) == iVar7)) { + iVar7 = 0x3ff; + } + else { + iVar7 = ((*(int *)(param_1 + 0x42010) - iVar7) * 0x3ff) / + (*(int *)(param_1 + 0x4202c) - iVar7); + } + uVar11 = *(uint *)(param_1 + 0x41fd4); + if (1 < uVar11) { + uVar8 = (uint)((iVar7 - iVar14) * 0x10000) / (uVar11 - 1); + } + iVar7 = uVar11 - 1; + if (-1 < iVar7) { + uVar11 = uVar6 * iVar7; + uVar13 = uVar8 * iVar7; + do { + uVar9 = (uVar13 >> 0x10) + iVar14; + if (0x3ff < uVar9) { + uVar9 = 0x3ff; + } + FUN_1800357d0((ulonglong *)((ulonglong)uVar11 + lVar5), + (ulonglong)*(byte *)((ulonglong)uVar9 + 0x4284c + param_1),(ulonglong)uVar6); + uVar13 = uVar13 - uVar8; + uVar11 = uVar11 - uVar6; + iVar7 = iVar7 + -1; + } while (-1 < iVar7); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800110a0 (64 bytes) name=FUN_1800110a0 + +undefined8 FUN_1800110a0(longlong param_1) + +{ + if ((*(int *)(param_1 + 0x228) != 0) && (*(int *)(param_1 + 0x234) != 0)) { + if (*(int *)(param_1 + 0x4203c) == 0) { + FUN_180010e80(param_1); + } + return *(undefined8 *)(param_1 + 0x2a0); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800110e0 (658 bytes) name=FUN_1800110e0 + +void FUN_1800110e0(longlong param_1) + +{ + int iVar1; + ulonglong uVar2; + uint uVar3; + int iVar4; + uint uVar5; + uint uVar6; + uint uVar7; + undefined1 *puVar8; + int iVar9; + uint uVar10; + uint uVar11; + uint uVar12; + int iVar13; + uint uVar14; + + if ((*(uint *)(param_1 + 0x1c) < *(uint *)(param_1 + 0x20)) && + (iVar1 = *(int *)(param_1 + 0x14), iVar1 < *(int *)(param_1 + 0x18))) { + uVar14 = *(uint *)(param_1 + 0x41fc0); + uVar6 = *(uint *)(param_1 + 0x47938); + uVar10 = 0; + uVar7 = 0xffff; + uVar12 = 0; + *(undefined4 *)(param_1 + 0x74) = 1; + uVar5 = 0xffff; + do { + uVar11 = uVar5 + uVar12 >> 1; + iVar4 = FUN_180016290(param_1,uVar11,(uVar6 >> 1) + (uVar14 >> 1),0); + if ((*(int *)(param_1 + 0x74) != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar4 = FUN_180015b90(param_1,iVar4,*(float *)(param_1 + 0xd4)); + } + uVar3 = uVar11; + if (iVar4 <= iVar1) { + uVar3 = uVar5; + uVar12 = uVar11; + } + uVar5 = uVar3; + } while (uVar12 + 1 < uVar5); + iVar1 = *(int *)(param_1 + 0x18); + uVar14 = *(uint *)(param_1 + 0x47938); + uVar5 = uVar5 + uVar12 >> 1; + uVar12 = 0; + uVar6 = *(uint *)(param_1 + 0x41fc0); + *(undefined4 *)(param_1 + 0x74) = 1; + do { + uVar11 = uVar7 + uVar12 >> 1; + iVar4 = FUN_180016290(param_1,uVar11,(uVar14 >> 1) + (uVar6 >> 1),0); + if ((*(int *)(param_1 + 0x74) != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar4 = FUN_180015b90(param_1,iVar4,*(float *)(param_1 + 0xd4)); + } + uVar3 = uVar11; + if (iVar4 <= iVar1) { + uVar3 = uVar7; + uVar12 = uVar11; + } + uVar7 = uVar3; + } while (uVar12 + 1 < uVar7); + iVar1 = *(int *)(param_1 + 0x1c); + uVar6 = uVar7 + uVar12 >> 1; + uVar14 = uVar6; + if ((int)uVar6 < (int)*(uint *)(param_1 + 0x42010)) { + uVar14 = *(uint *)(param_1 + 0x42010); + } + uVar12 = uVar5; + if ((int)*(uint *)(param_1 + 0x42014) < (int)uVar5) { + uVar12 = *(uint *)(param_1 + 0x42014); + } + *(uint *)(param_1 + 0x4202c) = uVar14; + iVar4 = *(int *)(param_1 + 0x20) * 4; + *(uint *)(param_1 + 0x42030) = uVar12; + uVar2 = (ulonglong)((uVar5 - uVar12) * 0x3ff) / (ulonglong)(uVar14 - uVar12); + uVar14 = ((uVar6 - uVar12) * 0x3ff) / (uVar14 - uVar12); + uVar6 = (uint)uVar2; + if (uVar6 == 0) { + iVar9 = 0; + } + else { + iVar9 = (int)((uint)(iVar1 << 0x18) / uVar2); + } + if (uVar6 < uVar14) { + uVar12 = (uint)((iVar4 + iVar1 * -4) * 0x400000) / (uVar14 - uVar6); + } + else { + uVar12 = 0; + } + if (uVar14 < 0x3ff) { + uVar5 = (uint)((*(int *)(param_1 + 0x20) * -4 + -1) * 0x400000) / (0x3ff - uVar14); + } + else { + uVar5 = 0; + } + puVar8 = (undefined1 *)(param_1 + 0x4284c); + iVar13 = 0; + uVar7 = -(uVar12 * uVar6); + uVar11 = -(uVar5 * uVar14); + do { + if (uVar6 < uVar10) { + if (uVar10 < uVar14) { + *puVar8 = (char)((uVar7 >> 0x16) + iVar1 * 4 >> 2); + } + else { + *puVar8 = (char)((uVar11 >> 0x16) + iVar4 >> 2); + } + } + else { + *puVar8 = (char)((uint)iVar13 >> 0x18); + } + uVar10 = uVar10 + 1; + uVar11 = uVar11 + uVar5; + uVar7 = uVar7 + uVar12; + iVar13 = iVar13 + iVar9; + puVar8 = puVar8 + 1; + } while (uVar10 < 0x400); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180011380 (1476 bytes) name=FUN_180011380 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +void FUN_180011380(longlong param_1) + +{ + uint *puVar1; + longlong lVar2; + float *pfVar3; + ulonglong uVar4; + ulonglong uVar5; + uint uVar6; + int iVar7; + ulonglong uVar8; + ulonglong uVar9; + uint uVar10; + uint uVar11; + ulonglong uVar12; + uint uVar13; + uint uVar14; + ushort *puVar15; + uint uVar16; + uint uVar17; + uint uVar18; + uint uVar19; + int iVar20; + float fVar21; + float fVar22; + float fVar23; + uint local_2828 [1279]; + float afStack_142c [1281]; + + uVar17 = *(uint *)(param_1 + 0x41fc4); + puVar15 = *(ushort **)(param_1 + 0x270); + uVar4 = 0; + uVar10 = 0; + if (uVar17 != 0) { + uVar18 = *(uint *)(param_1 + 0x41fc0); + uVar12 = (ulonglong)*(uint *)(param_1 + 0x41fc4); + puVar1 = local_2828; + do { + uVar9 = uVar4; + for (uVar6 = uVar18 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + uVar9 = (ulonglong) + ((int)uVar9 + (uint)*puVar15 + (uint)puVar15[1] + (uint)puVar15[2] + + (uint)puVar15[3]); + puVar15 = puVar15 + 4; + } + uVar12 = uVar12 - 1; + *puVar1 = (int)(uVar9 / uVar18); + puVar1 = puVar1 + 1; + } while (uVar12 != 0); + } + uVar11 = uVar17 >> 2; + uVar18 = 0; + uVar13 = uVar17 * 7 >> 3; + uVar12 = uVar4; + uVar6 = uVar18; + uVar16 = uVar10; + if (1 < uVar11) { + uVar6 = (uVar11 - 2 >> 1) + 1; + uVar8 = (ulonglong)uVar6; + uVar6 = uVar6 * 2; + uVar9 = uVar4; + uVar5 = uVar4; + do { + uVar16 = (int)uVar5 + local_2828[uVar12]; + uVar5 = (ulonglong)uVar16; + uVar10 = (int)uVar9 + local_2828[uVar12 + 1]; + uVar9 = (ulonglong)uVar10; + uVar12 = uVar12 + 2; + uVar8 = uVar8 - 1; + } while (uVar8 != 0); + } + if (uVar6 < uVar11) { + uVar18 = local_2828[uVar12]; + } + uVar12 = (ulonglong)uVar11; + uVar18 = uVar18 + uVar10 + uVar16; + if (uVar11 < uVar17) { + puVar1 = local_2828 + uVar11; + uVar9 = (ulonglong)(*(int *)(param_1 + 0x41fc4) - uVar11); + do { + uVar4 = (ulonglong)((int)uVar4 + *puVar1); + puVar1 = puVar1 + 1; + uVar9 = uVar9 - 1; + } while (uVar9 != 0); + } + iVar20 = (uVar13 - uVar11) + 1; + uVar9 = uVar12; + uVar10 = uVar11; + if (3 < iVar20) { + fVar23 = (float)uVar17; + uVar6 = uVar11 + 2; + do { + uVar18 = uVar18 + local_2828[uVar9]; + uVar16 = (int)uVar4 - local_2828[uVar9]; + iVar7 = uVar17 - uVar10; + fVar22 = (float)(uVar6 - 1) / fVar23; + fVar21 = (float)uVar18 / (float)(uVar6 - 1) - (float)uVar16 / (float)(iVar7 - 1); + uVar18 = uVar18 + local_2828[uVar9 + 1]; + uVar16 = uVar16 - local_2828[uVar9 + 1]; + afStack_142c[uVar9 + 1] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + fVar22 = (float)uVar6 / fVar23; + uVar19 = uVar18 + local_2828[uVar9 + 2]; + uVar14 = uVar16 - local_2828[uVar9 + 2]; + fVar21 = (float)uVar18 / (float)uVar6 - (float)uVar16 / (float)(iVar7 - 2); + afStack_142c[uVar9 + 2] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + uVar18 = uVar19 + local_2828[uVar9 + 3]; + uVar4 = (ulonglong)(uVar14 - local_2828[uVar9 + 3]); + fVar22 = (float)(uVar6 + 1) / fVar23; + uVar16 = uVar6 + 2; + fVar21 = (float)uVar19 / (float)(uVar6 + 1) - (float)uVar14 / (float)(iVar7 - 3); + afStack_142c[uVar9 + 3] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + fVar22 = (float)uVar16 / fVar23; + uVar10 = uVar10 + 4; + uVar9 = uVar9 + 4; + uVar6 = uVar6 + 4; + fVar21 = (float)uVar18 / (float)uVar16 - (float)uVar4 / (float)(iVar7 - 4); + afStack_142c[uVar9] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + } while (uVar10 <= uVar13 - 3); + } + uVar5 = 0; + if (uVar10 <= uVar13) { + uVar6 = *(uint *)(param_1 + 0x41fc4); + lVar2 = uVar9 * 4; + uVar16 = uVar10; + do { + uVar16 = uVar16 + 1; + uVar18 = uVar18 + *(int *)((longlong)local_2828 + lVar2); + uVar4 = (ulonglong)(uint)((int)uVar4 - *(int *)((longlong)local_2828 + lVar2)); + fVar21 = (float)uVar16 / (float)uVar6; + iVar7 = uVar6 - uVar10; + uVar10 = uVar10 + 1; + fVar23 = (float)uVar18 / (float)uVar16 - (float)uVar4 / (float)(iVar7 - 1); + *(float *)((longlong)afStack_142c + lVar2 + 4) = + (DAT_18005e700 - fVar21) * fVar21 * fVar23 * fVar23; + lVar2 = lVar2 + 4; + } while (uVar10 <= uVar13); + } + fVar23 = afStack_142c[(ulonglong)uVar11 + 1]; + uVar10 = uVar11; + uVar18 = uVar11; + if (3 < iVar20) { + uVar6 = uVar11 + 2; + do { + if (fVar23 <= afStack_142c[uVar12 + 1]) { + fVar23 = afStack_142c[uVar12 + 1]; + uVar10 = uVar18; + } + if (fVar23 <= afStack_142c[uVar12 + 2]) { + uVar10 = uVar6 - 1; + fVar23 = afStack_142c[uVar12 + 2]; + } + if (fVar23 <= afStack_142c[uVar12 + 3]) { + fVar23 = afStack_142c[uVar12 + 3]; + uVar10 = uVar6; + } + if (fVar23 <= afStack_142c[uVar12 + 4]) { + uVar10 = uVar6 + 1; + fVar23 = afStack_142c[uVar12 + 4]; + } + uVar18 = uVar18 + 4; + uVar12 = uVar12 + 4; + uVar6 = uVar6 + 4; + } while (uVar18 <= uVar13 - 3); + } + if (uVar18 <= uVar13) { + pfVar3 = afStack_142c + uVar12 + 1; + do { + if (fVar23 <= *pfVar3) { + fVar23 = *pfVar3; + uVar10 = uVar18; + } + uVar18 = uVar18 + 1; + pfVar3 = pfVar3 + 1; + } while (uVar18 <= uVar13); + } + uVar18 = 0; + if ((uVar10 != uVar11) && (uVar10 != uVar13)) { + uVar6 = uVar10 + 1; + uVar4 = uVar5; + uVar12 = uVar5; + uVar9 = uVar5; + if ((int)uVar6 < 2) { +LAB_1800117f6: + uVar14 = (uint)uVar9; + uVar13 = (uint)uVar12; + uVar19 = local_2828[uVar4]; + } + else { + uVar16 = uVar10 + 1 >> 1; + uVar8 = (ulonglong)uVar16; + do { + uVar14 = (int)uVar9 + local_2828[uVar4]; + uVar9 = (ulonglong)uVar14; + uVar13 = (int)uVar12 + local_2828[uVar4 + 1]; + uVar12 = (ulonglong)uVar13; + uVar4 = uVar4 + 2; + uVar8 = uVar8 - 1; + } while (uVar8 != 0); + uVar19 = uVar18; + if (uVar16 * 2 <= uVar10) goto LAB_1800117f6; + } + uVar4 = uVar5; + if (uVar6 < uVar17) { + puVar1 = local_2828 + (int)uVar6; + uVar12 = (ulonglong)(uVar17 - uVar6); + do { + uVar4 = (ulonglong)((int)uVar4 + *puVar1); + puVar1 = puVar1 + 1; + uVar12 = uVar12 - 1; + } while (uVar12 != 0); + } + uVar6 = (uVar19 + uVar13 + uVar14) / uVar6; + iVar20 = (int)(uVar4 / ((uVar17 - uVar10) - 1)); + uVar16 = (int)(uVar6 - iVar20) >> 0x1f; + if (((int)(iVar20 + uVar6) <= (int)(((uVar6 - iVar20 ^ uVar16) - uVar16) * 0x80)) && + (iVar20 <= (int)uVar6)) { + uVar6 = *(uint *)(param_1 + 0x44c60); + *(uint *)(param_1 + 0x44c68) = local_2828[uVar10]; + if ((uVar11 < uVar6) && (uVar6 <= uVar17 - 1)) { + uVar17 = uVar17 >> 7; + uVar16 = uVar17; + if (uVar17 == 0) { + uVar16 = 1; + } + if (uVar16 + uVar6 <= uVar10) { + uVar10 = uVar17; + if (uVar17 == 0) { + uVar10 = 1; + } + uVar10 = uVar10 + uVar6; + } + uVar16 = uVar17; + if (uVar17 == 0) { + uVar16 = 1; + } + if (uVar10 <= uVar6 - uVar16) { + if (uVar17 == 0) { + uVar17 = 1; + } + uVar10 = uVar6 - uVar17; + } + } + uVar4 = uVar5; + uVar12 = uVar5; + if ((int)(uVar10 + 1) < 2) { +LAB_1800118f9: + uVar16 = (uint)uVar12; + uVar6 = (uint)uVar4; + uVar18 = local_2828[uVar5]; + } + else { + uVar17 = uVar10 + 1 >> 1; + uVar9 = (ulonglong)uVar17; + do { + uVar16 = (int)uVar12 + local_2828[uVar5]; + uVar12 = (ulonglong)uVar16; + uVar6 = (int)uVar4 + local_2828[uVar5 + 1]; + uVar4 = (ulonglong)uVar6; + uVar5 = uVar5 + 2; + uVar9 = uVar9 - 1; + } while (uVar9 != 0); + if (uVar17 * 2 <= uVar10) goto LAB_1800118f9; + } + *(uint *)(param_1 + 0x44c60) = uVar10; + uVar17 = (uVar6 + uVar16 + uVar18) / (uVar10 + 1); + goto LAB_180011928; + } + } + *(undefined4 *)(param_1 + 0x44c68) = 0; + *(uint *)(param_1 + 0x44c60) = uVar17 - 1; + uVar17 = *(uint *)(param_1 + 0x42018); +LAB_180011928: + *(uint *)(param_1 + 0x44c64) = uVar17; + return; +} + + +================================================================== + +### EXPORT FUNC 180011950 (879 bytes) name=FUN_180011950 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +int FUN_180011950(longlong param_1,ushort *param_2,ulonglong *param_3) + +{ + int *piVar1; + ushort uVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + ulonglong *puVar7; + uint uVar8; + int iVar9; + int iVar10; + uint uVar11; + ushort *puVar13; + ulonglong uVar14; + int iVar15; + uint uVar16; + uint uVar17; + uint uVar18; + ulonglong uVar19; + longlong lVar20; + ulonglong uVar21; + ulonglong uVar22; + uint uVar23; + int aiStack_1034 [3]; + undefined8 local_1028; + undefined8 uStack_30; + ulonglong uVar12; + + uStack_30 = 0x180011972; + iVar15 = *(int *)(param_1 + 0x47938); + if ((*(int *)(param_1 + 0x88) != 0) && (*(int *)(param_1 + 0x10) == 0)) { + iVar15 = (*(int *)(param_1 + 0x44c60) + 1) * *(int *)(param_1 + 0x41fc0); + } + iVar10 = *(int *)(param_1 + 0x42030); + uVar23 = *(int *)(param_1 + 0x4202c) - iVar10; + iVar6 = (int)(0xffc00000 / (ulonglong)uVar23); + FUN_1800357d0(param_3,0,0x1000); + for (; iVar15 != 0; iVar15 = iVar15 + -1) { + uVar2 = *param_2; + param_2 = param_2 + 1; + piVar1 = (int *)((longlong)param_3 + (ulonglong)(((uint)uVar2 - iVar10) * iVar6 >> 0x16) * 4); + *piVar1 = *piVar1 + 1; + } + uVar14 = 0; + uVar5 = 0; + puVar7 = param_3 + 1; + lVar20 = 0x100; + uVar18 = 0; + uVar22 = uVar14; + uVar12 = uVar14; + uVar21 = uVar14; + uVar19 = uVar14; + do { + uVar16 = (int)uVar21 + (int)puVar7[-1]; + uVar21 = (ulonglong)uVar16; + uVar17 = (int)uVar19 + *(int *)((longlong)puVar7 + -4); + uVar19 = (ulonglong)uVar17; + uVar11 = (int)uVar12 + (int)*puVar7; + uVar12 = (ulonglong)uVar11; + uVar8 = (int)uVar22 + *(int *)((longlong)puVar7 + 4); + uVar22 = (ulonglong)uVar8; + puVar7 = puVar7 + 2; + lVar20 = lVar20 + -1; + } while (lVar20 != 0); + iVar15 = uVar16 + uVar17 + uVar11 + uVar8; + if (((*(int *)(param_1 + 0x88) != 0) && (*(int *)(param_1 + 0x10) == 0)) && + (*(uint *)(param_1 + 0x44c60) < *(int *)(param_1 + 0x41fc4) - 1U)) { + iVar3 = *(int *)(param_1 + 0x44c68); + if (iVar3 << 5 < *(int *)(param_1 + 0x44c64) * 0x1f) { + uVar22 = (ulonglong)(uint)((iVar3 - iVar10) * 0x3ff) / (ulonglong)uVar23; + uVar23 = (uint)uVar22; + lVar20 = (longlong)(int)uVar23; + if (uVar23 != 0) { + FUN_1800357d0(param_3,0,uVar22 << 2); + } + uVar8 = uVar18; + if (1 < (int)(0x400 - uVar23)) { + uVar5 = (0x3fe - uVar23 >> 1) + 1; + uVar21 = (ulonglong)uVar5; + uVar23 = uVar23 + uVar5 * 2; + uVar22 = uVar14; + uVar12 = uVar14; + do { + uVar5 = (int)uVar22 + *(int *)((longlong)param_3 + lVar20 * 4); + uVar22 = (ulonglong)uVar5; + uVar8 = (int)uVar12 + *(int *)((longlong)param_3 + lVar20 * 4 + 4); + uVar12 = (ulonglong)uVar8; + lVar20 = lVar20 + 2; + uVar21 = uVar21 - 1; + } while (uVar21 != 0); + } + if (uVar23 < 0x400) { + uVar18 = *(uint *)((longlong)param_3 + lVar20 * 4); + } + iVar15 = uVar18 + uVar5 + uVar8; + } + else if (*(int *)(param_1 + 0x44c64) * 0x21 < iVar3 << 5) { + uVar5 = 0; + uVar23 = (uint)((iVar3 - iVar10) * 0x3ff) / uVar23; + uVar22 = uVar14; + uVar8 = uVar5; + uVar11 = uVar5; + if (1 < (int)uVar23) { + uVar8 = (uVar23 - 2 >> 1) + 1; + uVar19 = (ulonglong)uVar8; + uVar8 = uVar8 * 2; + uVar12 = uVar14; + uVar21 = uVar14; + do { + uVar18 = (int)uVar12 + *(int *)((longlong)param_3 + uVar22 * 4); + uVar12 = (ulonglong)uVar18; + uVar11 = (int)uVar21 + *(int *)((longlong)param_3 + uVar22 * 4 + 4); + uVar21 = (ulonglong)uVar11; + uVar22 = uVar22 + 2; + uVar19 = uVar19 - 1; + } while (uVar19 != 0); + } + if (uVar8 < uVar23) { + uVar5 = *(uint *)((longlong)param_3 + uVar22 * 4); + } + iVar15 = uVar5 + uVar11 + uVar18; + if (uVar23 < 0x400) { + FUN_1800357d0((ulonglong *)((longlong)param_3 + (longlong)(int)uVar23 * 4),0, + (ulonglong)(0x400 - uVar23) << 2); + } + } + } + if (*(int *)(param_1 + 0x44) != 0) { + FUN_1800357d0(&local_1028,0,0x1000); + uVar23 = *(uint *)(param_1 + 0x3c); + if (uVar23 <= *(uint *)(param_1 + 0x40)) { + uVar18 = *(uint *)(param_1 + 0x34); + iVar3 = *(int *)(param_1 + 0x38); + iVar4 = *(int *)(param_1 + 0x41fc0); + lVar20 = *(longlong *)(param_1 + 0x270); + uVar5 = iVar4 * uVar23; + uVar22 = (ulonglong)((*(uint *)(param_1 + 0x40) - uVar23) + 1); + do { + puVar13 = (ushort *)(lVar20 + ((ulonglong)uVar5 + (ulonglong)uVar18) * 2); + for (iVar9 = (iVar3 - uVar18) + 1; iVar9 != 0; iVar9 = iVar9 + -1) { + uVar2 = *puVar13; + puVar13 = puVar13 + 1; + piVar1 = (int *)((longlong)&local_1028 + + (ulonglong)(((uint)uVar2 - iVar10) * iVar6 >> 0x16) * 4); + *piVar1 = *piVar1 + 1; + } + uVar5 = uVar5 + iVar4; + uVar22 = uVar22 - 1; + } while (uVar22 != 0); + } + uVar22 = uVar14; + uVar12 = uVar14; + uVar21 = uVar14; + puVar7 = param_3 + 1; + do { + lVar20 = uVar21 * 4; + iVar10 = *(int *)((longlong)&local_1028 + (4 - (longlong)param_3) + (longlong)puVar7); + uVar21 = uVar21 + 4; + iVar6 = *(int *)((longlong)&local_1028 + lVar20) * *(int *)(param_1 + 0x44); + *(int *)(puVar7 + -1) = (int)puVar7[-1] + iVar6; + iVar15 = iVar15 + iVar6; + iVar6 = aiStack_1034[uVar21] * *(int *)(param_1 + 0x44); + *(int *)((longlong)puVar7 + -4) = *(int *)((longlong)puVar7 + -4) + iVar6; + uVar5 = (int)uVar12 + iVar6; + uVar12 = (ulonglong)uVar5; + iVar6 = *(int *)(&stack0xffffffffffffefc8 + -(longlong)param_3 + (longlong)(puVar7 + 2)) * + *(int *)(param_1 + 0x44); + *(int *)puVar7 = (int)*puVar7 + iVar6; + uVar18 = (int)uVar22 + iVar6; + uVar22 = (ulonglong)uVar18; + iVar10 = iVar10 * *(int *)(param_1 + 0x44); + *(int *)((longlong)puVar7 + 4) = *(int *)((longlong)puVar7 + 4) + iVar10; + uVar23 = (int)uVar14 + iVar10; + uVar14 = (ulonglong)uVar23; + puVar7 = puVar7 + 2; + } while ((longlong)uVar21 < 0x400); + iVar15 = uVar23 + uVar18 + uVar5 + iVar15; + } + return iVar15; +} + + +================================================================== + +### EXPORT FUNC 180011cc0 (537 bytes) name=FUN_180011cc0 + +void FUN_180011cc0(longlong param_1) + +{ + ulonglong *puVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + longlong lVar8; + longlong lVar9; + ulonglong uVar10; + uint uVar11; + int iVar12; + int iVar13; + longlong lVar14; + int iVar15; + int *piVar16; + + uVar3 = FUN_180011950(param_1,*(ushort **)(param_1 + 0x270),(ulonglong *)(param_1 + 0x42c4c)); + if (*(int *)(param_1 + 0x88) == 0) { + iVar13 = *(int *)(param_1 + 0x42018); + } + else { + iVar13 = *(int *)(param_1 + 0x44c64); + } + iVar6 = 100; + if (*(int *)(param_1 + 0x48) < 100) { + iVar6 = *(int *)(param_1 + 0x48); + } + iVar4 = FUN_1800108a0(param_1); + iVar7 = *(int *)(param_1 + 0x4202c); + puVar1 = (ulonglong *)(param_1 + 0x4284c); + iVar12 = 0x3ff; + uVar5 = (uint)((iVar13 - *(int *)(param_1 + 0x42030)) * 0x3ff) / + (uint)(iVar7 - *(int *)(param_1 + 0x42030)); + iVar15 = -100; + if (-100 < iVar6) { + iVar15 = iVar6; + } + iVar6 = (iVar7 - iVar13) * 0xff; + uVar11 = (iVar15 * 0xff) / 200 + 0xffU >> 2; + uVar10 = (longlong)iVar6 % (longlong)iVar4 & 0xffffffff; + piVar16 = (int *)(param_1 + 0x43c48); + iVar15 = *piVar16; + iVar6 = iVar6 / iVar4 + uVar11; + if (0xff < iVar6) { + iVar6 = 0xff; + } + if (iVar6 == 0xff) { + for (; ((iVar15 < (int)(uVar3 >> 8) && ((int)(uVar5 + 1) < iVar12)) && + (uVar2 = (int)((0xff - uVar11) * iVar4) / 0xff, uVar10 = (ulonglong)uVar2, + (int)uVar2 < iVar7 - iVar13)); iVar7 = iVar7 / 0x3ff + *(int *)(param_1 + 0x42030)) { + iVar15 = iVar15 + piVar16[-1]; + iVar12 = iVar12 + -1; + piVar16 = piVar16 + -1; + iVar7 = (*(int *)(param_1 + 0x4202c) - *(int *)(param_1 + 0x42030)) * iVar12; + uVar10 = (ulonglong)((longlong)iVar7 * -0x7fdff7fd) >> 0x20; + } + } + lVar14 = (longlong)iVar12; + if ((int)uVar5 < lVar14) { + lVar8 = (longlong)(int)uVar5; + iVar13 = 0; + do { + lVar9 = lVar8 + 1; + uVar10 = (longlong)iVar13 % (longlong)(int)(iVar12 - uVar5) & 0xffffffff; + *(char *)(lVar8 + (longlong)puVar1) = (char)(iVar13 / (int)(iVar12 - uVar5)) + (char)uVar11; + lVar8 = lVar9; + iVar13 = iVar13 + (iVar6 - uVar11); + } while (lVar9 < lVar14); + } + if (lVar14 < 0x400) { + FUN_1800357d0((ulonglong *)(lVar14 + (longlong)puVar1),CONCAT71((int7)(uVar10 >> 8),0xff), + 0x400 - lVar14); + } + iVar13 = iVar12 + -1; + lVar14 = (longlong)iVar13; + if (-1 < iVar13) { + iVar7 = (iVar6 - uVar11) * (iVar13 - uVar5); + do { + iVar15 = iVar7 / (int)(iVar12 - uVar5) + uVar11; + if (iVar15 < 1) { + FUN_1800357d0(puVar1,0,(longlong)(iVar13 + 1)); + return; + } + *(char *)(lVar14 + (longlong)puVar1) = (char)iVar15; + iVar13 = iVar13 + -1; + iVar7 = iVar7 + (uVar11 - iVar6); + lVar14 = lVar14 + -1; + } while (-1 < lVar14); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180011ee0 (3137 bytes) name=FUN_180011ee0 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180011ee0(longlong param_1,ushort *param_2) + +{ + ulonglong *puVar1; + uint *puVar2; + bool bVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + DWORD DVar8; + int iVar9; + int iVar10; + ulonglong uVar11; + uint uVar12; + uint *puVar14; + ulonglong uVar15; + ushort uVar16; + uint uVar17; + int iVar18; + ulonglong uVar19; + longlong lVar20; + uint uVar21; + int iVar22; + int iVar23; + longlong lVar24; + longlong lVar25; + int iVar26; + uint local_res8; + uint local_1038 [1024]; + ulonglong uVar13; + + local_1038[0x3fe] = 0x80011efa; + local_1038[0x3ff] = 1; + puVar1 = (ulonglong *)(param_1 + 0x42c4c); + puVar2 = (uint *)(param_1 + 0x43c4c); + uVar5 = FUN_180011950(param_1,param_2,puVar1); + bVar3 = true; + lVar24 = 0x155; + uVar21 = uVar5 >> 0xc; + puVar14 = (uint *)(param_1 + 0x42c50); + if (uVar21 == 0) { + uVar21 = 1; + } + do { + puVar14[-1] = *puVar14 + puVar14[-1] >> 1; + *puVar14 = puVar14[1] + *puVar14 >> 1; + lVar24 = lVar24 + -1; + puVar14[1] = puVar14[2] + puVar14[1] >> 1; + puVar14 = puVar14 + 3; + } while (lVar24 != 0); + *(undefined4 *)(param_1 + 0x43c48) = *(undefined4 *)(param_1 + 0x43c44); + if (*(int *)(param_1 + 0x88) == 0) { + iVar18 = *(int *)(param_1 + 0x42018); + } + else { + iVar18 = *(int *)(param_1 + 0x44c64); + } + uVar15 = 0; + local_res8 = (uint)((iVar18 - *(int *)(param_1 + 0x42030)) * 0x3ff) / + (uint)(*(int *)(param_1 + 0x4202c) - *(int *)(param_1 + 0x42030)); + iVar18 = 0; + if (*(int *)(param_1 + 0x8c) != 0) { + uVar11 = uVar15; + uVar13 = uVar15; + uVar19 = uVar15; + do { + uVar12 = (int)uVar13 + *(int *)((longlong)puVar1 + uVar11 * 4); + uVar13 = (ulonglong)uVar12; + uVar17 = (uint)uVar19; + if (uVar5 * 3 >> 2 <= uVar12) { + if ((int)local_res8 < (int)uVar17) { + local_res8 = uVar17; + } + break; + } + uVar11 = uVar11 + 1; + uVar19 = (ulonglong)(uVar17 + 1); + } while ((longlong)uVar11 < 0x400); + } + lVar24 = (longlong)(int)local_res8; + if (-1 < (int)local_res8) { + uVar11 = uVar15; + puVar14 = puVar2 + lVar24; + lVar20 = lVar24; + uVar13 = uVar15; + do { + uVar5 = (int)uVar11 + *(int *)((longlong)puVar14 + ((longlong)puVar1 - (longlong)puVar2)); + uVar11 = (ulonglong)uVar5; + if (uVar21 <= uVar5) { + uVar13 = (ulonglong)((int)uVar13 + 0x100); + uVar11 = uVar15; + } + lVar20 = lVar20 + -1; + *puVar14 = ((0x10000 / uVar21) * (int)uVar11 >> 8) + (int)uVar13; + puVar14 = puVar14 + -1; + } while (-1 < lVar20); + } + lVar20 = (longlong)(int)(local_res8 + 1); + if (lVar20 < 0x400) { + lVar25 = 0x400 - lVar20; + uVar11 = uVar15; + uVar13 = uVar15; + puVar14 = puVar2 + lVar20; + do { + uVar5 = (int)uVar11 + *(int *)((longlong)puVar14 + ((longlong)puVar1 - (longlong)puVar2)); + uVar11 = (ulonglong)uVar5; + if (uVar5 < uVar21 * 8) { + if (uVar21 <= uVar5) { + uVar5 = (int)uVar13 + 0x100; + goto LAB_18001209a; + } + } + else { + uVar5 = (int)uVar13 + 0x200; +LAB_18001209a: + uVar13 = (ulonglong)uVar5; + uVar11 = uVar15; + } + lVar25 = lVar25 + -1; + *puVar14 = ((0x10000 / uVar21) * (int)uVar11 >> 8) + (int)uVar13; + puVar14 = puVar14 + 1; + } while (lVar25 != 0); + } + iVar23 = *(int *)(param_1 + 0x4c); + uVar5 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar5 = uVar5 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar16 = (ushort)uVar5; + if (0xffff < uVar5) { + uVar16 = 0xffff; + } + uVar5 = (uint)uVar16; + goto LAB_1800121bd; + } + iVar7 = uVar5 + 180000; + iVar6 = (int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc; + iVar10 = iVar18; + if (iVar6 < 0) { +LAB_1800120f5: + iVar6 = (iVar7 + iVar10 * -0x1000) * ((&DAT_180099004)[iVar10] - (&DAT_180099000)[iVar10]); + iVar7 = (DAT_1800990ac - DAT_1800990b0) * 0xf20; + iVar7 = ((((int)((iVar6 >> 0x1f & 0xfffU) + iVar6) >> 0xc) + + ((int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc)) - DAT_1800990ac) + + (&DAT_180099000)[iVar10]; + } + else { + if (0x285 < iVar6) { + iVar10 = 0x285; + goto LAB_1800120f5; + } + iVar10 = iVar6; + if (iVar6 != 0x2b) goto LAB_1800120f5; + iVar7 = (DAT_1800990b0 - DAT_1800990ac) * uVar5; + iVar7 = (int)((iVar7 >> 0x1f & 0xfffU) + iVar7) >> 0xc; + } + uVar5 = iVar7 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < (int)uVar5) { + uVar5 = 0xffff; + } +LAB_1800121bd: + if (iVar23 < 0) { + iVar7 = -0x51eb851f; + if (iVar23 < -100) { + iVar23 = -100; + } + } + else { + iVar7 = -0x1b4e81b5; + if (100 < iVar23) { + iVar23 = 100; + } + } + iVar23 = (int)((ulonglong)((longlong)iVar7 * (longlong)(int)((uVar5 & 0xffff) * iVar23)) >> 0x20); + uVar5 = (uVar5 & 0xffff) + ((iVar23 >> 4) - (iVar23 >> 0x1f)); + if (((*(int *)(param_1 + 0x41340) != 0) && (_DAT_180057598 < *(float *)(param_1 + 0x9c))) && + ((*(int *)(param_1 + 0x41558) == 1 || + ((*(int *)(param_1 + 0x41558) == 2 && + (*(int *)(param_1 + 0x41568) - *(int *)(param_1 + 0x41564) == 50000)))))) { + uVar5 = uVar5 + (int)(((float)(int)((*(int *)(param_1 + 0x54) - + (*(int *)(param_1 + 0x41568) + *(int *)(param_1 + 0x41564)) + / 2) * uVar5) * *(float *)(param_1 + 0x9c)) / _DAT_18005e820 + ); + } + iVar23 = *(int *)(param_1 + 0x42030); + uVar12 = *(int *)(param_1 + 0x4202c) - iVar23; + uVar21 = 0x80; + if (0x80 < (int)uVar5) { + uVar21 = uVar5; + } + uVar21 = (uVar12 * 0x10) / uVar21; + if (uVar21 == 0) { + uVar21 = 1; + } + else if (0x200 < uVar21) { + uVar21 = 0x200; + } + uVar5 = uVar21 * 0x1800; + uVar11 = uVar15; + do { + uVar17 = 1; + if (uVar5 >> 0xd != 0) { + uVar17 = uVar5 >> 0xd; + } + uVar5 = uVar5 + uVar21 * 4; + local_1038[uVar11] = uVar17; + uVar11 = uVar11 + 1; + } while ((longlong)uVar11 < 0x400); + iVar10 = 0x332; + iVar7 = 100; + if (*(int *)(param_1 + 0x48) < 100) { + iVar7 = *(int *)(param_1 + 0x48); + } + iVar6 = -100; + if (-100 < iVar7) { + iVar6 = iVar7; + } + iVar6 = (iVar6 * 0x155) / 200; + iVar7 = iVar6 + 0x155; + iVar26 = iVar7; + if (0x331 < iVar6 + 0x156) { + iVar26 = 0x330; + } + iVar6 = *(int *)(param_1 + 0x42014); + iVar22 = (int)(0xffc00000 / (ulonglong)uVar12); + iVar9 = *(int *)(param_1 + 0x42010); + if (iVar26 + 1 < 0x332) { + do { + iVar7 = (iVar10 + iVar26) / 2; + if (bVar3) { + bVar3 = false; + iVar7 = iVar26; + } + uVar5 = *puVar2; + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10 + 0x10; + for (lVar20 = lVar24; -1 < lVar20; lVar20 = lVar20 + -1) { + uVar12 = (iVar7 * 0x10 + 0x10) - + (puVar2[lVar20] * ((iVar7 * 0x40000 + 0x40000U) / uVar5) >> 0xe); + if (local_1038[lVar20] < uVar21 - uVar12) { + uVar12 = uVar21 - local_1038[lVar20]; + } + *(char *)(lVar20 + 0x4284c + param_1) = (char)(uVar12 >> 6); + uVar21 = uVar12; + } + } + uVar5 = *(uint *)(param_1 + 0x44c48); + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10; + lVar20 = lVar24; + while (lVar25 = lVar20 + 1, lVar25 < 0x400) { + uVar12 = (puVar2[lVar25] * ((iVar7 * -0x40000 + 0xffc0000U) / uVar5) >> 0xe) + + iVar7 * 0x10; + if (local_1038[lVar25] < uVar12 - uVar21) { + uVar12 = local_1038[lVar25] + uVar21; + } + *(char *)(lVar20 + 0x4284d + param_1) = (char)(uVar12 >> 6); + uVar21 = uVar12; + lVar20 = lVar25; + } + } + iVar4 = iVar7; + if ((*(char *)((ulonglong)((uint)((iVar6 - iVar23) * iVar22) >> 0x16) + 0x4284c + param_1) == + '\0') && + (*(char *)((ulonglong)((uint)((iVar9 - iVar23) * iVar22) >> 0x16) + 0x4284c + param_1) != + -1)) { + iVar4 = iVar10; + iVar26 = iVar7; + } + iVar10 = iVar4; + } while (iVar26 + 1 < iVar10); + } + DVar8 = GetTickCount(); + if ((((DVar8 - *(int *)(param_1 + 0x44c6c) < 0x78) && + (*(int *)(param_1 + 0x44c70) == *(int *)(param_1 + 0x4c))) && + (*(int *)(param_1 + 0x44c74) == *(int *)(param_1 + 0x48))) && + ((uVar5 = *(int *)(param_1 + 0x44c78) - local_res8, uVar21 = (int)uVar5 >> 0x1f, + (int)((uVar5 ^ uVar21) - uVar21) < 0xb && + (uVar5 = *(int *)(param_1 + 0x44c7c) - iVar7, uVar21 = (int)uVar5 >> 0x1f, + 1 < (int)((uVar5 ^ uVar21) - uVar21))))) { + iVar23 = *(int *)(param_1 + 0x47928); + uVar5 = *(int *)(param_1 + 0x42018) - *(int *)(param_1 + 0x44c88); + uVar21 = (int)uVar5 >> 0x1f; + uVar21 = (uVar5 ^ uVar21) - uVar21; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar23 = (uVar21 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar10 = iVar23 + 150000; + uVar5 = (uVar21 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + iVar6 = (int)(iVar10 + (iVar10 >> 0x1f & 0xfffU)) >> 0xc; + if ((-1 < iVar6) && (iVar18 = iVar6, 0x285 < iVar6)) { + iVar18 = 0x285; + } + iVar6 = (&DAT_180099000)[iVar18]; + iVar26 = (&DAT_180099004)[iVar18] - iVar6; + if ((iVar26 < (int)(((uVar5 ^ (int)uVar5 >> 0x1f) - ((int)uVar5 >> 0x1f)) * 2)) && + ((iVar26 = (iVar10 + iVar18 * -0x1000) * iVar26, + iVar10 = iVar6 + ((int)(iVar26 + (iVar26 >> 0x1f & 0xfffU)) >> 0xc) + uVar5, + iVar10 < iVar6 || ((int)(&DAT_180099004)[iVar18] < iVar10)))) { + uVar5 = 0x286; + uVar11 = uVar15; + do { + uVar21 = (int)(uVar5 + (int)uVar11) >> 1; + if ((int)(&DAT_180099000)[(int)uVar21] <= iVar10) { + uVar11 = (ulonglong)uVar21; + uVar21 = uVar5; + } + uVar5 = uVar21; + iVar18 = (int)uVar11; + } while (iVar18 + 1U < uVar5); + iVar10 = iVar10 - (&DAT_180099000)[iVar18]; + if (DAT_180073748 < iVar10) { + iVar23 = ((int)((longlong)(int)(&DAT_180099a20)[iVar18] * (longlong)iVar10 >> 0xc) + + -150000 + iVar18 * 0x1000) - iVar23; + } + else { + iVar23 = (((&DAT_180099a20)[iVar18] * iVar10 >> 0xc) + -150000 + iVar18 * 0x1000) - iVar23 + ; + } + } + else { + iVar23 = (int)((&DAT_180099a20)[iVar18] * uVar5) >> 0xc; + } + } + iVar18 = *(int *)(param_1 + 0x47920); + uVar5 = *(int *)(param_1 + 0x42010) - *(int *)(param_1 + 0x44c80); + uVar21 = (int)uVar5 >> 0x1f; + uVar21 = (uVar5 ^ uVar21) - uVar21; + iVar10 = 0; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar18 = (uVar21 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar6 = iVar18 + 150000; + uVar5 = (uVar21 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + iVar9 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc; + iVar26 = iVar10; + if ((-1 < iVar9) && (iVar26 = iVar9, 0x285 < iVar9)) { + iVar26 = 0x285; + } + iVar9 = (&DAT_180099000)[iVar26]; + iVar22 = (&DAT_180099004)[iVar26] - iVar9; + if ((iVar22 < (int)(((uVar5 ^ (int)uVar5 >> 0x1f) - ((int)uVar5 >> 0x1f)) * 2)) && + ((iVar22 = (iVar6 + iVar26 * -0x1000) * iVar22, + iVar6 = iVar9 + ((int)(iVar22 + (iVar22 >> 0x1f & 0xfffU)) >> 0xc) + uVar5, iVar6 < iVar9 + || ((int)(&DAT_180099004)[iVar26] < iVar6)))) { + uVar5 = 0x286; + uVar11 = uVar15; + do { + uVar21 = (int)(uVar5 + (int)uVar11) >> 1; + if ((int)(&DAT_180099000)[(int)uVar21] <= iVar6) { + uVar11 = (ulonglong)uVar21; + uVar21 = uVar5; + } + uVar5 = uVar21; + iVar26 = (int)uVar11; + } while (iVar26 + 1U < uVar5); + iVar6 = iVar6 - (&DAT_180099000)[iVar26]; + if (DAT_180073748 < iVar6) { + iVar18 = ((int)((longlong)(int)(&DAT_180099a20)[iVar26] * (longlong)iVar6 >> 0xc) + + -150000 + iVar26 * 0x1000) - iVar18; + } + else { + iVar18 = (((&DAT_180099a20)[iVar26] * iVar6 >> 0xc) + -150000 + iVar26 * 0x1000) - iVar18; + } + } + else { + iVar18 = (int)((&DAT_180099a20)[iVar26] * uVar5) >> 0xc; + } + } + uVar5 = *(int *)(param_1 + 0x42014) - *(int *)(param_1 + 0x44c84); + uVar21 = (int)uVar5 >> 0x1f; + uVar21 = (uVar5 ^ uVar21) - uVar21; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar10 = (uVar21 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar6 = *(int *)(param_1 + 0x47924) + 150000; + uVar5 = (uVar21 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + iVar26 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc; + if ((-1 < iVar26) && (iVar10 = iVar26, 0x285 < iVar26)) { + iVar10 = 0x285; + } + iVar26 = (&DAT_180099000)[iVar10]; + iVar9 = (&DAT_180099004)[iVar10] - iVar26; + if ((iVar9 < (int)(((uVar5 ^ (int)uVar5 >> 0x1f) - ((int)uVar5 >> 0x1f)) * 2)) && + ((iVar9 = (iVar6 + iVar10 * -0x1000) * iVar9, + iVar6 = iVar26 + ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + uVar5, iVar6 < iVar26 + || ((int)(&DAT_180099004)[iVar10] < iVar6)))) { + uVar5 = 0x286; + do { + uVar21 = (int)(uVar5 + (int)uVar15) >> 1; + if ((int)(&DAT_180099000)[(int)uVar21] <= iVar6) { + uVar15 = (ulonglong)uVar21; + uVar21 = uVar5; + } + uVar5 = uVar21; + iVar10 = (int)uVar15; + } while (iVar10 + 1U < uVar5); + iVar6 = iVar6 - (&DAT_180099000)[iVar10]; + if (DAT_180073748 < iVar6) { + iVar10 = ((int)((longlong)(int)(&DAT_180099a20)[iVar10] * (longlong)iVar6 >> 0xc) + + -150000 + iVar10 * 0x1000) - *(int *)(param_1 + 0x47924); + } + else { + iVar10 = (((&DAT_180099a20)[iVar10] * iVar6 >> 0xc) + -150000 + iVar10 * 0x1000) - + *(int *)(param_1 + 0x47924); + } + } + else { + iVar10 = (int)((&DAT_180099a20)[iVar10] * uVar5) >> 0xc; + } + } + iVar18 = iVar10 + iVar23 * 2 + iVar18; + if (iVar18 < 0x9c4) { + if (iVar18 < 100) { + iVar18 = 100; + } + puVar2 = (uint *)(param_1 + 0x43c4c); + iVar7 = (iVar18 * iVar7 + *(int *)(param_1 + 0x44c7c) * 500) / (iVar18 + 500); + uVar5 = *puVar2; + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10 + 0x10; + lVar24 = (longlong)(int)local_res8; + if (-1 < (int)local_res8) { + do { + uVar12 = (iVar7 * 0x10 + 0x10) - + (puVar2[lVar24] * ((iVar7 * 0x40000 + 0x40000U) / uVar5) >> 0xe); + if (local_1038[lVar24] < uVar21 - uVar12) { + uVar12 = uVar21 - local_1038[lVar24]; + } + lVar20 = lVar24 + -1; + *(char *)(lVar24 + 0x4284c + param_1) = (char)(uVar12 >> 6); + lVar24 = lVar20; + uVar21 = uVar12; + } while (-1 < lVar20); + } + } + uVar5 = *(uint *)(param_1 + 0x44c48); + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10; + for (lVar24 = (longlong)(int)(local_res8 + 1); lVar24 < 0x400; lVar24 = lVar24 + 1) { + uVar12 = (puVar2[lVar24] * ((iVar7 * -0x40000 + 0xffc0000U) / uVar5) >> 0xe) + + iVar7 * 0x10; + if (local_1038[lVar24] < uVar12 - uVar21) { + uVar12 = local_1038[lVar24] + uVar21; + } + *(char *)(lVar24 + 0x4284c + param_1) = (char)(uVar12 >> 6); + uVar21 = uVar12; + } + } + } + } + *(int *)(param_1 + 0x44c7c) = iVar7; + *(DWORD *)(param_1 + 0x44c6c) = DVar8; + *(undefined4 *)(param_1 + 0x44c70) = *(undefined4 *)(param_1 + 0x4c); + *(undefined4 *)(param_1 + 0x44c74) = *(undefined4 *)(param_1 + 0x48); + *(uint *)(param_1 + 0x44c78) = local_res8; + *(undefined4 *)(param_1 + 0x44c80) = *(undefined4 *)(param_1 + 0x42010); + *(undefined4 *)(param_1 + 0x44c84) = *(undefined4 *)(param_1 + 0x42014); + *(undefined4 *)(param_1 + 0x44c88) = *(undefined4 *)(param_1 + 0x42018); + return; +} + + +================================================================== + +### EXPORT FUNC 180012b30 (1415 bytes) name=FUN_180012b30 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 FUN_180012b30(longlong param_1,int param_2,short *param_3) + +{ + LPCWSTR pWVar1; + int *piVar2; + LPCRITICAL_SECTION lpCriticalSection; + short sVar3; + undefined **ppuVar4; + longlong lVar5; + HMODULE pHVar6; + LPVOID _Dst; + longlong *plVar7; + wchar_t *pwVar8; + undefined8 uVar9; + int iVar10; + short *psVar11; + LPCWSTR pWVar12; + void *_Src; + uint uVar13; + void *pvVar14; + undefined1 auStackY_488 [32]; + LPCWSTR local_448; + short *local_440; + CFile local_438 [32]; + undefined2 local_418; + int local_416; + undefined2 local_412; + undefined2 local_410; + undefined4 local_40e; + longlong local_408; + __time64_t local_400; + LPVOID local_3f8; + undefined8 local_3f0; + undefined8 local_3e0 [3]; + CDialog local_3c8 [912]; + ulonglong local_38; + + local_3f0 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_488; + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(); + pWVar12 = (LPCWSTR)(lVar5 + 0x18); + local_448 = pWVar12; + if (param_3 == (short *)0x0) { + iVar10 = 0; + } + else { + if (((ulonglong)param_3 & 0xffffffffffff0000) == 0) { + pHVar6 = (HMODULE)FUN_18001fcac(); + if (pHVar6 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_448,pHVar6,(uint)param_3 & 0xffff); + pWVar12 = local_448; + } + goto LAB_180012c12; + } + lVar5 = -1; + psVar11 = param_3; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + sVar3 = *psVar11; + psVar11 = psVar11 + 1; + } while (sVar3 != 0); + iVar10 = ~(uint)lVar5 - 1; + } + FUN_18000b480((longlong *)&local_448,param_3,iVar10); + pWVar12 = local_448; +LAB_180012c12: + FUN_180020138((undefined8 *)local_438); + lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x238); + EnterCriticalSection(lpCriticalSection); + if ((*(int *)(param_1 + 0x228) == 0) || (*(int *)(param_1 + 0x234) == 0)) { + LeaveCriticalSection(lpCriticalSection); + SetLastError(0xe4ae0006); + FUN_1800203a4(local_438); + LOCK(); + pWVar1 = pWVar12 + -4; + iVar10 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(pWVar12 + -0xc) + 8))(); + } + uVar9 = 0; + } + else { + if (param_2 == 0) { + uVar13 = *(uint *)(param_1 + 0x47938); + pvVar14 = (void *)(param_1 + 0x6c8); + if (*(int *)(param_1 + 0x4203c) == 0) { + FUN_180010e80(param_1); + } + _Src = *(void **)(param_1 + 0x2a0); + } + else if (param_2 == 1) { + uVar13 = *(uint *)(param_1 + 0x4793c); + pvVar14 = (void *)(param_1 + 0xaf0); + _Src = *(void **)(param_1 + 0x220); + } + else { + if (param_2 != 2) { + LeaveCriticalSection(lpCriticalSection); + SetLastError(0xe4ae0001); + FUN_1800203a4(local_438); + LOCK(); + pWVar1 = pWVar12 + -4; + iVar10 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(pWVar12 + -0xc) + 8))(); + } + return 0; + } + uVar13 = *(uint *)(param_1 + 0x47940); + pvVar14 = (void *)(param_1 + 0xf18); + _Src = *(void **)(param_1 + 0x2b0); + } + if (_Src == (void *)0x0) { + LeaveCriticalSection(lpCriticalSection); + SetLastError(0xe4ae0003); + FUN_1800203a4(local_438); + LOCK(); + pWVar1 = pWVar12 + -4; + iVar10 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(pWVar12 + -0xc) + 8))(); + } + uVar9 = 0; + } + else { + _Dst = thunk_FUN_18001eb74((ulonglong)uVar13); + local_3f8 = _Dst; + if (_Dst == (LPVOID)0x0) { + LeaveCriticalSection(lpCriticalSection); + SetLastError(0xe4ae0002); + FUN_1800203a4(local_438); + LOCK(); + pWVar1 = pWVar12 + -4; + iVar10 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(pWVar12 + -0xc) + 8))(); + } + uVar9 = 0; + } + else { + memcpy(_Dst,_Src,(ulonglong)uVar13); + LeaveCriticalSection(lpCriticalSection); + if (*(int *)(pWVar12 + -8) == 0) { + local_400 = _time64((__time64_t *)0x0); + FUN_18001ab70(&local_400,(longlong *)&local_440,L"%Y-%m-%d %H-%M-%S"); + FUN_18001f670(local_3c8,0,&DAT_18006e9f8,local_440,6, + u_Bitmap_Files___bmp____bmp_All_Fi_18006ea00,(CWnd *)0x0,0); + lVar5 = FUN_18001f450(local_3c8); + if (lVar5 != 1) { + thunk_FUN_180034a70(_Dst); + FUN_18001f5c8((CWnd *)local_3c8); + LOCK(); + piVar2 = (int *)(local_440 + -4); + iVar10 = *piVar2; + *piVar2 = *piVar2 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(local_440 + -0xc) + 8))(); + } + FUN_1800203a4(local_438); + LOCK(); + pWVar12 = local_448 + -4; + iVar10 = *(int *)pWVar12; + *(int *)pWVar12 = *(int *)pWVar12 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(local_448 + -0xc) + 8))(); + } + return 0; + } + plVar7 = FUN_18001f980((longlong)local_3c8,&local_408); + FUN_18000b390((longlong *)&local_448,plVar7); + LOCK(); + piVar2 = (int *)(local_408 + -8); + iVar10 = *piVar2; + *piVar2 = *piVar2 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(local_408 + -0x18) + 8))(); + } + pWVar12 = local_448; + if (((*(int *)(local_448 + -8) < 1) || + (pwVar8 = wcschr(local_448,L'.'), pwVar8 == (wchar_t *)0x0)) || + ((int)((longlong)pwVar8 - (longlong)pWVar12 >> 1) == -1)) { + FUN_18001aaa0((longlong *)&local_448,L".bmp"); + } + FUN_18001f5c8((CWnd *)local_3c8); + LOCK(); + piVar2 = (int *)(local_440 + -4); + iVar10 = *piVar2; + *piVar2 = *piVar2 + -1; + UNLOCK(); + pWVar12 = local_448; + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(local_440 + -0xc) + 8))(); + pWVar12 = local_448; + } + } + uVar9 = FUN_180020a6c((longlong)local_438,pWVar12,0x1021,0); + if ((int)uVar9 == 0) { + thunk_FUN_180034a70(_Dst); + SetLastError(0xe4ae0009); + FUN_1800203a4(local_438); + LOCK(); + pWVar1 = pWVar12 + -4; + iVar10 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(pWVar12 + -0xc) + 8))(); + } + uVar9 = 0; + } + else { + local_418 = 0x4d42; + local_416 = uVar13 + 0x436; + local_412 = 0; + local_410 = 0; + local_40e = 0x436; + FUN_18001ef2c(local_3e0); + CFile::Write(local_438,&local_418,0xe); + CFile::Write(local_438,pvVar14,0x428); + CFile::Write(local_438,_Dst,uVar13); + FUN_18001ef94(); + CFile::Close(local_438); + thunk_FUN_180034a70(_Dst); + FUN_1800203a4(local_438); + LOCK(); + pWVar1 = pWVar12 + -4; + iVar10 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar10 + -1 < 1) { + (**(code **)(**(longlong **)(pWVar12 + -0xc) + 8))(); + } + uVar9 = 1; + } + } + } + } + return uVar9; +} + + +================================================================== + +### EXPORT FUNC 1800130f0 (24 bytes) name=Unwind@1800130f0 + +void Unwind_1800130f0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180013110 (24 bytes) name=Unwind@180013110 + +void Unwind_180013110(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180013130 (24 bytes) name=Unwind@180013130 + +void Unwind_180013130(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 180013150 (24 bytes) name=Unwind@180013150 + +void Unwind_180013150(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 180013170 (27 bytes) name=Unwind@180013170 + +void Unwind_180013170(undefined8 param_1,longlong param_2) + +{ + FUN_18001f5c8((CWnd *)(param_2 + 0xc0)); + return; +} + + +================================================================== + +### EXPORT FUNC 180013190 (27 bytes) name=Unwind@180013190 + +void Unwind_180013190(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x80)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800131b0 (27 bytes) name=Unwind@1800131b0 + +void Unwind_1800131b0(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800131d0 (75 bytes) name=Catch@1800131d0 + +undefined * Catch_1800131d0(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0xb0) = *(undefined8 *)(param_2 + 0xa0); + CFile::Close((CFile *)(param_2 + 0x50)); + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x90)); + SetLastError(0xe4ae0009); + return &DAT_180013050; +} + + +================================================================== + +### EXPORT FUNC 180013220 (738 bytes) name=FUN_180013220 + +undefined8 +FUN_180013220(longlong param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + ushort uVar1; + int iVar2; + uint uVar3; + DWORD dwErrCode; + uint uVar4; + longlong lVar5; + uint uVar6; + ulonglong uVar7; + uint uVar8; + ulonglong uVar9; + ulonglong uVar10; + ulonglong uVar11; + ushort *puVar12; + ulonglong uVar13; + uint uVar14; + uint uVar15; + ulonglong uVar16; + + if (((((*(int *)(param_1 + 0x234) != 0) && (param_2 <= param_4)) && + (uVar15 = *(uint *)(param_1 + 0x41fc0), param_4 < uVar15)) && + ((param_3 <= param_5 && (param_5 < *(uint *)(param_1 + 0x41fc4))))) && (param_6 != (int *)0x0) + ) { + uVar7 = 0; + uVar14 = 0xffffffff; + if (((param_2 == 0) && (param_3 == 0)) && + ((param_4 == uVar15 - 1 && (param_5 == *(uint *)(param_1 + 0x41fc4) - 1)))) { + uVar14 = *(uint *)(param_1 + 0x42014); + uVar11 = (ulonglong)*(uint *)(param_1 + 0x47938) * (longlong)*(int *)(param_1 + 0x42018); + uVar6 = *(uint *)(param_1 + 0x42010); + uVar3 = *(uint *)(param_1 + 0x42024); + uVar8 = *(uint *)(param_1 + 0x42020); + } + else { + lVar5 = *(longlong *)(param_1 + 0x270); + uVar15 = *(int *)(param_1 + 0x41fc0) * param_3; + uVar16 = (ulonglong)((param_5 - param_3) + 1); + uVar9 = uVar7; + uVar10 = uVar7; + uVar11 = uVar7; + do { + puVar12 = (ushort *)(lVar5 + ((ulonglong)uVar15 + (ulonglong)param_2) * 2); + uVar4 = uVar15 + param_2; + uVar13 = (ulonglong)((param_4 - param_2) + 1); + do { + uVar1 = *puVar12; + puVar12 = puVar12 + 1; + uVar11 = uVar11 + uVar1; + uVar3 = (uint)uVar1; + if ((uint)uVar7 < (uint)uVar1) { + uVar7 = (ulonglong)uVar3; + uVar9 = (ulonglong)uVar4; + } + uVar6 = (uint)uVar7; + uVar8 = (uint)uVar9; + if (uVar3 < uVar14) { + uVar10 = (ulonglong)uVar4; + uVar14 = uVar3; + } + uVar3 = (uint)uVar10; + uVar4 = uVar4 + 1; + uVar13 = uVar13 - 1; + } while (uVar13 != 0); + lVar5 = *(longlong *)(param_1 + 0x270); + uVar15 = uVar15 + *(int *)(param_1 + 0x41fc0); + uVar16 = uVar16 - 1; + } while (uVar16 != 0); + uVar15 = *(uint *)(param_1 + 0x41fc0); + } + iVar2 = FUN_180016290(param_1,uVar14 & 0xffff,uVar3,1); + *param_6 = iVar2; + iVar2 = FUN_180016290(param_1,uVar6 & 0xffff,uVar8,1); + param_6[1] = iVar2; + iVar2 = FUN_180016290(param_1,(uint)((longlong)uVar11 / + (longlong) + (ulonglong) + (((param_4 - param_2) + 1) * ((param_5 - param_3) + 1))), + ((param_3 + param_5) * uVar15 >> 1) + (param_2 + param_4 >> 1),1); + param_6[2] = iVar2; + param_6[3] = uVar3; + param_6[4] = uVar8; + if (*(int *)(param_1 + 0x78) != 0) { + iVar2 = FUN_180015b90(param_1,*param_6,*(float *)(param_1 + 0xd4)); + *param_6 = iVar2; + iVar2 = FUN_180015b90(param_1,param_6[1],*(float *)(param_1 + 0xd4)); + param_6[1] = iVar2; + iVar2 = FUN_180015b90(param_1,param_6[2],*(float *)(param_1 + 0xd4)); + param_6[2] = iVar2; + } + iVar2 = *param_6; + if (param_6[1] < iVar2) { + param_6[1] = iVar2; + } + if (param_6[1] < param_6[2]) { + param_6[2] = param_6[1]; + } + if (param_6[2] < iVar2) { + param_6[2] = iVar2; + } + return 1; + } + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180013510 (4003 bytes) name=FUN_180013510 + +undefined8 +FUN_180013510(longlong param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + int iVar1; + ushort uVar2; + longlong lVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + DWORD dwErrCode; + uint uVar9; + uint uVar10; + int iVar11; + uint uVar12; + uint uVar13; + uint uVar14; + ushort *puVar15; + uint uVar16; + int iVar17; + uint uVar18; + longlong lVar19; + uint uVar20; + uint uVar21; + ulonglong uVar22; + ulonglong uVar23; + ulonglong uVar24; + uint uStack0000000000000038; + uint local_c4; + uint local_c0; + uint local_bc; + uint local_b8; + uint local_b4; + int local_ac; + longlong local_a8; + int local_a0; + int local_84; + int local_80; + ulonglong local_68; + + if ((((*(int *)(param_1 + 0x234) == 0) || (param_4 <= param_2)) || + (*(uint *)(param_1 + 0x41fc0) <= param_4)) || + (((param_5 <= param_3 || (*(uint *)(param_1 + 0x41fc4) <= param_5)) || (param_6 == (int *)0x0)) + )) { + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + return 0; + } + local_b4 = 0; + uVar8 = 0; + lVar19 = 0; + uVar20 = 0; + uVar16 = param_4 - param_2; + uVar10 = param_5 - param_3; + uVar21 = 0xffffffff; + local_c4 = 0; + local_a8 = 0; + uStack0000000000000038 = 0; + local_b8 = 0; + if (uVar16 < uVar10) { + uVar23 = FUN_1800512c0((float)(int)(uVar10 * uVar10 - uVar16 * uVar16)); + lVar19 = *(longlong *)(param_1 + 0x270); + uVar22 = (ulonglong)(uVar10 + 1); + iVar4 = (int)((float)(param_3 + param_5) - (float)uVar23) / 2; + iVar5 = param_3 - iVar4; + uVar8 = *(int *)(param_1 + 0x41fc0) * param_3; + uVar20 = uVar8 + 2 + param_2; + iVar4 = iVar4 - (int)((float)uVar23 + (float)(param_3 + param_5)) / 2; + do { + iVar6 = 0; + puVar15 = (ushort *)(lVar19 + ((ulonglong)uVar8 + (ulonglong)param_2) * 2); + local_bc = param_2; + if (3 < (int)(uVar16 + 1)) { + uVar13 = param_2 * 2; + uVar14 = (param_2 - param_4) + 4; + uVar12 = local_c4; + uVar18 = uVar20; + do { + uVar9 = uVar14 - 4; + iVar7 = (uVar9 ^ (int)uVar9 >> 0x1f) - ((int)uVar9 >> 0x1f); + iVar17 = iVar6; + if (iVar6 < iVar7) { + uVar23 = FUN_1800512c0((float)(uVar9 * uVar9 + iVar5 * iVar5 * 4)); + uVar24 = FUN_1800512c0((float)(uVar9 * uVar9 + (iVar4 + iVar5) * (iVar4 + iVar5) * 4)); + iVar17 = iVar7; + if ((int)((float)uVar23 + (float)uVar24) <= (int)(uVar10 * 2)) goto LAB_180013ffc; + if (param_2 + param_4 <= uVar13) goto LAB_180013e49; + } + else { +LAB_180013ffc: + iVar6 = iVar17; + uVar2 = *puVar15; + uStack0000000000000038 = uStack0000000000000038 + 1; + local_a8 = local_a8 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar12 < uVar2) { + local_b8 = uVar18 - 2; + uVar12 = uVar9; + local_c4 = uVar9; + } + if (uVar9 < uVar21) { + local_b4 = uVar18 - 2; + uVar21 = uVar9; + } + } + uVar9 = uVar14 - 2; + iVar7 = (uVar9 ^ (int)uVar9 >> 0x1f) - ((int)uVar9 >> 0x1f); + iVar17 = iVar6; + if (iVar6 < iVar7) { + uVar23 = FUN_1800512c0((float)(uVar9 * uVar9 + iVar5 * iVar5 * 4)); + uVar24 = FUN_1800512c0((float)(uVar9 * uVar9 + (iVar4 + iVar5) * (iVar4 + iVar5) * 4)); + iVar17 = iVar7; + if ((int)((float)uVar23 + (float)uVar24) <= (int)(uVar10 * 2)) goto LAB_1800140e6; + if (param_2 + param_4 <= uVar13 + 2) goto LAB_180013e49; + } + else { +LAB_1800140e6: + iVar6 = iVar17; + uVar2 = puVar15[1]; + uStack0000000000000038 = uStack0000000000000038 + 1; + local_a8 = local_a8 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar12 < uVar2) { + local_b8 = uVar18 - 1; + uVar12 = uVar9; + local_c4 = uVar9; + } + if (uVar9 < uVar21) { + local_b4 = uVar18 - 1; + uVar21 = uVar9; + } + } + iVar7 = (uVar14 ^ (int)uVar14 >> 0x1f) - ((int)uVar14 >> 0x1f); + iVar17 = iVar6; + if (iVar6 < iVar7) { + uVar23 = FUN_1800512c0((float)(uVar14 * uVar14 + iVar5 * iVar5 * 4)); + uVar24 = FUN_1800512c0((float)(uVar14 * uVar14 + (iVar4 + iVar5) * (iVar4 + iVar5) * 4)) + ; + iVar17 = iVar7; + if ((int)((float)uVar23 + (float)uVar24) <= (int)(uVar10 * 2)) goto LAB_1800141cd; + if (param_2 + param_4 <= uVar13 + 4) goto LAB_180013e49; + } + else { +LAB_1800141cd: + iVar6 = iVar17; + uVar2 = puVar15[2]; + uStack0000000000000038 = uStack0000000000000038 + 1; + local_a8 = local_a8 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar12 < uVar2) { + uVar12 = uVar9; + local_c4 = uVar9; + local_b8 = uVar18; + } + if (uVar9 < uVar21) { + uVar21 = uVar9; + local_b4 = uVar18; + } + } + uVar9 = uVar14 + 2; + iVar7 = (uVar9 ^ (int)uVar9 >> 0x1f) - ((int)uVar9 >> 0x1f); + iVar17 = iVar6; + if (iVar6 < iVar7) { + uVar23 = FUN_1800512c0((float)(uVar9 * uVar9 + iVar5 * iVar5 * 4)); + uVar24 = FUN_1800512c0((float)(uVar9 * uVar9 + (iVar4 + iVar5) * (iVar4 + iVar5) * 4)); + iVar17 = iVar7; + if ((int)((float)uVar23 + (float)uVar24) <= (int)(uVar10 * 2)) goto LAB_1800142af; + if (param_2 + param_4 <= uVar13 + 6) goto LAB_180013e49; + } + else { +LAB_1800142af: + iVar6 = iVar17; + uVar2 = puVar15[3]; + uStack0000000000000038 = uStack0000000000000038 + 1; + local_a8 = local_a8 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar12 < uVar2) { + local_b8 = uVar18 + 1; + uVar12 = uVar9; + local_c4 = uVar9; + } + if (uVar9 < uVar21) { + local_b4 = uVar18 + 1; + uVar21 = uVar9; + } + } + puVar15 = puVar15 + 4; + local_bc = local_bc + 4; + uVar13 = uVar13 + 8; + uVar14 = uVar14 + 8; + uVar18 = uVar18 + 4; + } while (local_bc <= param_4 - 3); + } + if (local_bc <= param_4) { + uVar13 = local_bc * 2; + uVar12 = uVar8 + local_bc; + uVar18 = (uVar13 - param_2) - param_4; + do { + iVar7 = (uVar18 ^ (int)uVar18 >> 0x1f) - ((int)uVar18 >> 0x1f); + iVar17 = iVar6; + if (iVar6 < iVar7) { + uVar23 = FUN_1800512c0((float)(uVar18 * uVar18 + iVar5 * iVar5 * 4)); + uVar24 = FUN_1800512c0((float)(uVar18 * uVar18 + (iVar4 + iVar5) * (iVar4 + iVar5) * 4)) + ; + iVar17 = iVar7; + if ((int)((float)uVar23 + (float)uVar24) <= (int)(uVar10 * 2)) goto LAB_18001440b; + if (param_2 + param_4 <= uVar13) break; + } + else { +LAB_18001440b: + iVar6 = iVar17; + uVar2 = *puVar15; + uStack0000000000000038 = uStack0000000000000038 + 1; + local_a8 = local_a8 + (ulonglong)uVar2; + uVar14 = (uint)uVar2; + if (local_c4 < uVar2) { + local_c4 = uVar14; + local_b8 = uVar12; + } + if (uVar14 < uVar21) { + uVar21 = uVar14; + local_b4 = uVar12; + } + } + puVar15 = puVar15 + 1; + local_bc = local_bc + 1; + uVar13 = uVar13 + 2; + uVar18 = uVar18 + 2; + uVar12 = uVar12 + 1; + } while (local_bc <= param_4); + } +LAB_180013e49: + iVar17 = *(int *)(param_1 + 0x41fc0); + uVar8 = uVar8 + iVar17; + uVar20 = uVar20 + iVar17; + iVar5 = iVar5 + 1; + uVar22 = uVar22 - 1; + } while (uVar22 != 0); + } + else { + uVar22 = FUN_1800512c0((float)(int)(uVar16 * uVar16 - uVar10 * uVar10)); + local_68 = (ulonglong)(uVar10 + 1); + iVar4 = (int)((float)(param_2 + param_4) - (float)uVar22) / 2; + lVar3 = *(longlong *)(param_1 + 0x270); + iVar5 = (int)((float)uVar22 + (float)(param_2 + param_4)) / 2; + uVar10 = *(int *)(param_1 + 0x41fc0) * param_3; + iVar6 = param_3 - param_5; + uVar13 = uVar10 + 2 + param_2; + do { + local_ac = 0; + puVar15 = (ushort *)(lVar3 + ((ulonglong)uVar10 + (ulonglong)param_2) * 2); + iVar17 = iVar6 * iVar6; + local_c0 = param_2; + if (3 < (int)(uVar16 + 1)) { + local_84 = param_2 - iVar5; + uVar18 = param_2 * 2; + iVar7 = (param_2 - iVar4) + 2; + local_a0 = (param_2 - iVar4) * 4 + 4; + local_80 = local_84 * 4 + 4; + uVar14 = (param_2 - param_4) + 4; + uVar12 = uVar13; + do { + uVar9 = (int)(uVar14 - 4) >> 0x1f; + iVar11 = (uVar14 - 4 ^ uVar9) - uVar9; + iVar1 = local_ac; + if (local_ac < iVar11) { + uVar22 = FUN_1800512c0((float)(uint)(iVar17 + (iVar7 + -2) * (iVar7 + -2) * 4)); + uVar23 = FUN_1800512c0((float)(uint)(iVar17 + local_84 * local_84 * 4)); + iVar1 = iVar11; + if ((int)((float)uVar22 + (float)uVar23) <= (int)(uVar16 * 2)) goto LAB_180013821; + if (param_2 + param_4 <= uVar18) goto LAB_1800137be; + } + else { +LAB_180013821: + local_ac = iVar1; + uVar2 = *puVar15; + uVar20 = uVar20 + 1; + lVar19 = lVar19 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar8 < uVar2) { + local_b8 = uVar12 - 2; + uVar8 = uVar9; + local_c4 = uVar9; + } + uStack0000000000000038 = uVar20; + local_a8 = lVar19; + if (uVar9 < uVar21) { + local_b4 = uVar12 - 2; + uVar21 = uVar9; + } + } + uVar9 = (int)(uVar14 - 2) >> 0x1f; + iVar11 = (uVar14 - 2 ^ uVar9) - uVar9; + iVar1 = local_ac; + if (local_ac < iVar11) { + uVar22 = FUN_1800512c0((float)(uint)(((iVar4 - iVar5) + iVar7 + -1) * local_80 + iVar17) + ); + uVar23 = FUN_1800512c0((float)(uint)((iVar7 + -1) * local_a0 + iVar17)); + iVar1 = iVar11; + if ((int)((float)uVar22 + (float)uVar23) <= (int)(uVar16 * 2)) goto LAB_180013902; + if (param_2 + param_4 <= uVar18 + 2) goto LAB_1800137be; + } + else { +LAB_180013902: + local_ac = iVar1; + uVar2 = puVar15[1]; + uVar20 = uVar20 + 1; + lVar19 = lVar19 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar8 < uVar2) { + local_b8 = uVar12 - 1; + uVar8 = uVar9; + local_c4 = uVar9; + } + uStack0000000000000038 = uVar20; + local_a8 = lVar19; + if (uVar9 < uVar21) { + local_b4 = uVar12 - 1; + uVar21 = uVar9; + } + } + iVar11 = (uVar14 ^ (int)uVar14 >> 0x1f) - ((int)uVar14 >> 0x1f); + iVar1 = local_ac; + if (local_ac < iVar11) { + iVar1 = iVar7 + (iVar4 - iVar5); + uVar22 = FUN_1800512c0((float)(uint)(iVar17 + iVar7 * iVar7 * 4)); + uVar23 = FUN_1800512c0((float)(uint)(iVar17 + iVar1 * iVar1 * 4)); + iVar1 = iVar11; + if ((int)((float)uVar22 + (float)uVar23) <= (int)(uVar16 * 2)) goto LAB_1800139e4; + if (param_2 + param_4 <= uVar18 + 4) goto LAB_1800137be; + } + else { +LAB_1800139e4: + local_ac = iVar1; + uVar2 = puVar15[2]; + uVar20 = uVar20 + 1; + lVar19 = lVar19 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar8 < uVar2) { + uVar8 = uVar9; + local_c4 = uVar9; + local_b8 = uVar12; + } + uStack0000000000000038 = uVar20; + local_a8 = lVar19; + if (uVar9 < uVar21) { + uVar21 = uVar9; + local_b4 = uVar12; + } + } + uVar9 = (int)(uVar14 + 2) >> 0x1f; + iVar11 = (uVar14 + 2 ^ uVar9) - uVar9; + iVar1 = local_ac; + if (local_ac < iVar11) { + uVar22 = FUN_1800512c0((float)(uint)(iVar17 + (iVar7 + 1) * (iVar7 + 1) * 4)); + uVar23 = FUN_1800512c0((float)(uint)(iVar17 + (local_84 + 3) * (local_84 + 3) * 4)); + iVar1 = iVar11; + if ((int)((float)uVar22 + (float)uVar23) <= (int)(uVar16 * 2)) goto LAB_180013ac4; + if (param_2 + param_4 <= uVar18 + 6) goto LAB_1800137be; + } + else { +LAB_180013ac4: + local_ac = iVar1; + uVar2 = puVar15[3]; + uVar20 = uVar20 + 1; + lVar19 = lVar19 + (ulonglong)uVar2; + uVar9 = (uint)uVar2; + if (uVar8 < uVar2) { + local_b8 = uVar12 + 1; + uVar8 = uVar9; + local_c4 = uVar9; + } + uStack0000000000000038 = uVar20; + local_a8 = lVar19; + if (uVar9 < uVar21) { + local_b4 = uVar12 + 1; + uVar21 = uVar9; + } + } + puVar15 = puVar15 + 4; + local_80 = local_80 + 0x10; + local_a0 = local_a0 + 0x10; + local_84 = local_84 + 4; + local_c0 = local_c0 + 4; + uVar18 = uVar18 + 8; + uVar14 = uVar14 + 8; + iVar7 = iVar7 + 4; + uVar12 = uVar12 + 4; + } while (local_c0 <= param_4 - 3); + } + if (local_c0 <= param_4) { + uVar18 = local_c0 * 2; + iVar7 = local_c0 - iVar4; + uVar14 = uVar10 + local_c0; + uVar12 = (uVar18 - param_2) - param_4; + do { + iVar11 = (uVar12 ^ (int)uVar12 >> 0x1f) - ((int)uVar12 >> 0x1f); + iVar1 = local_ac; + if (local_ac < iVar11) { + iVar1 = iVar7 + (iVar4 - iVar5); + uVar22 = FUN_1800512c0((float)(uint)(iVar17 + iVar1 * iVar1 * 4)); + uVar23 = FUN_1800512c0((float)(uint)(iVar17 + iVar7 * iVar7 * 4)); + iVar1 = iVar11; + if ((int)((float)uVar22 + (float)uVar23) <= (int)(uVar16 * 2)) goto LAB_180013c3b; + lVar19 = local_a8; + uVar20 = uStack0000000000000038; + local_c4 = uVar8; + if (param_2 + param_4 <= uVar18) break; + } + else { +LAB_180013c3b: + local_ac = iVar1; + uVar2 = *puVar15; + uStack0000000000000038 = uStack0000000000000038 + 1; + local_a8 = local_a8 + (ulonglong)uVar2; + uVar20 = (uint)uVar2; + if (uVar8 < uVar2) { + uVar8 = uVar20; + local_b8 = uVar14; + } + if (uVar20 < uVar21) { + uVar21 = uVar20; + local_b4 = uVar14; + } + } + puVar15 = puVar15 + 1; + local_c0 = local_c0 + 1; + iVar7 = iVar7 + 1; + uVar18 = uVar18 + 2; + uVar12 = uVar12 + 2; + uVar14 = uVar14 + 1; + lVar19 = local_a8; + uVar20 = uStack0000000000000038; + local_c4 = uVar8; + } while (local_c0 <= param_4); + } +LAB_1800137be: + iVar17 = *(int *)(param_1 + 0x41fc0); + uVar10 = uVar10 + iVar17; + uVar13 = uVar13 + iVar17; + iVar6 = iVar6 + 2; + local_68 = local_68 - 1; + } while (local_68 != 0); + } + iVar4 = FUN_180016290(param_1,uVar21 & 0xffff,local_b4,1); + *param_6 = iVar4; + iVar4 = FUN_180016290(param_1,local_c4,local_b8,1); + param_6[1] = iVar4; + iVar4 = FUN_180016290(param_1,(uint)(local_a8 / (longlong)(ulonglong)uStack0000000000000038), + ((param_3 + param_5) * iVar17 >> 1) + (param_2 + param_4 >> 1),1); + param_6[2] = iVar4; + param_6[3] = local_b4; + param_6[4] = local_b8; + if (*(int *)(param_1 + 0x78) != 0) { + iVar4 = FUN_180015b90(param_1,*param_6,*(float *)(param_1 + 0xd4)); + *param_6 = iVar4; + iVar4 = FUN_180015b90(param_1,param_6[1],*(float *)(param_1 + 0xd4)); + param_6[1] = iVar4; + iVar4 = FUN_180015b90(param_1,param_6[2],*(float *)(param_1 + 0xd4)); + param_6[2] = iVar4; + } + iVar4 = *param_6; + if (param_6[1] < iVar4) { + param_6[1] = iVar4; + } + if (param_6[1] < param_6[2]) { + param_6[2] = param_6[1]; + } + if (param_6[2] < iVar4) { + param_6[2] = iVar4; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800144c0 (959 bytes) name=FUN_1800144c0 + +ulonglong FUN_1800144c0(longlong param_1,uint *param_2,ulonglong param_3,int *param_4,uint param_5, + uint param_6,uint param_7,uint param_8) + +{ + bool bVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + uint uVar6; + DWORD dwErrCode; + uint uVar7; + uint uVar8; + ulonglong uVar10; + uint uVar11; + ulonglong uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + ulonglong uVar17; + uint *puVar18; + ulonglong uVar9; + + if ((((((*(int *)(param_1 + 0x234) != 0) && (param_5 < *(uint *)(param_1 + 0x41fc0))) && + (param_7 < *(uint *)(param_1 + 0x41fc0))) && + ((param_6 < *(uint *)(param_1 + 0x41fc4) && (param_8 < *(uint *)(param_1 + 0x41fc4))))) && + ((param_5 != param_7 || (param_6 != param_8)))) && + (((param_4 != (int *)0x0 && (param_2 != (uint *)0x0)) && (3 < (uint)param_3)))) { + uVar12 = 0; + uVar4 = 0; + uVar7 = (int)(param_5 - param_7) >> 0x1f; + iVar5 = (param_5 - param_7 ^ uVar7) - uVar7; + uVar7 = (int)(param_6 - param_8) >> 0x1f; + iVar2 = (param_6 - param_8 ^ uVar7) - uVar7; + bVar1 = iVar5 < iVar2; + iVar3 = iVar2; + if (!bVar1) { + iVar3 = iVar5; + } + uVar10 = param_3 >> 2 & 0x3fffffff; + if (iVar3 + 1 <= (int)uVar10) { + if (bVar1) { + uVar10 = (ulonglong)(iVar2 + 1); + } + else { + uVar10 = (ulonglong)(iVar5 + 1); + } + } + uVar7 = param_5; + uVar8 = param_6; + uVar15 = param_7; + uVar14 = param_8; + if (param_5 <= param_7) { + uVar7 = param_7; + uVar8 = param_8; + uVar15 = param_5; + uVar14 = param_6; + } + uVar11 = (uint)uVar10; + if (bVar1) { + if ((int)uVar14 < (int)uVar8) { + uVar16 = (uVar14 - 1) + uVar11; + uVar9 = uVar12; + puVar18 = param_2; + uVar13 = uVar14; + while( true ) { + uVar6 = uVar16; + if ((int)uVar8 < (int)uVar16) { + uVar6 = uVar8; + } + if ((int)uVar6 < (int)uVar13) break; + iVar2 = (int)uVar9; + uVar9 = (ulonglong)(iVar2 + 1); + iVar3 = *(int *)(param_1 + 0x41fc0) * uVar13; + uVar13 = uVar13 + 1; + *puVar18 = (uint)*(ushort *) + (*(longlong *)(param_1 + 0x270) + + (ulonglong) + (iVar3 + (int)((uVar7 - uVar15) * iVar2) / (int)(uVar8 - uVar14) + + uVar15) * 2); + puVar18 = puVar18 + 1; + } + } + else { + uVar16 = (uVar14 - uVar11) + 1; + uVar9 = uVar12; + puVar18 = param_2; + uVar13 = uVar14; + while( true ) { + uVar6 = uVar16; + if ((int)uVar16 < (int)uVar8) { + uVar6 = uVar8; + } + if ((int)uVar13 < (int)uVar6) break; + iVar2 = (int)uVar9; + uVar9 = (ulonglong)(iVar2 - 1); + iVar3 = *(int *)(param_1 + 0x41fc0) * uVar13; + uVar13 = uVar13 - 1; + *puVar18 = (uint)*(ushort *) + (*(longlong *)(param_1 + 0x270) + + (ulonglong) + (iVar3 + (int)((uVar7 - uVar15) * iVar2) / (int)(uVar8 - uVar14) + + uVar15) * 2); + puVar18 = puVar18 + 1; + } + } + } + else { + uVar16 = (uVar15 - 1) + uVar11; + uVar9 = uVar12; + puVar18 = param_2; + uVar13 = uVar15; + while( true ) { + uVar6 = uVar16; + if ((int)uVar7 < (int)uVar16) { + uVar6 = uVar7; + } + if ((int)uVar6 < (int)uVar13) break; + iVar3 = (int)uVar9; + uVar9 = (ulonglong)(iVar3 + 1); + uVar6 = (uVar14 + (int)((uVar8 - uVar14) * iVar3) / (int)(uVar7 - uVar15)) * + *(int *)(param_1 + 0x41fc0) + uVar13; + uVar13 = uVar13 + 1; + *puVar18 = (uint)*(ushort *)(*(longlong *)(param_1 + 0x270) + (ulonglong)uVar6 * 2); + puVar18 = puVar18 + 1; + } + } + uVar7 = 0xffffffff; + puVar18 = param_2; + uVar9 = uVar10; + uVar17 = uVar12; + uVar8 = uVar11; + while (uVar8 != 0) { + uVar8 = *puVar18; + puVar18 = puVar18 + 1; + uVar17 = (ulonglong)((int)uVar17 + uVar8); + if ((uint)uVar12 < uVar8) { + uVar12 = (ulonglong)uVar8; + } + uVar4 = (uint)uVar12; + if (uVar8 < uVar7) { + uVar7 = uVar8; + } + uVar8 = (int)uVar9 - 1; + uVar9 = (ulonglong)uVar8; + } + uVar8 = ((param_6 + param_8) * *(int *)(param_1 + 0x41fc0) >> 1) + (param_5 + param_7 >> 1); + iVar3 = FUN_180016290(param_1,uVar7 & 0xffff,uVar8,0); + *param_4 = iVar3; + iVar3 = FUN_180016290(param_1,uVar4 & 0xffff,uVar8,0); + param_4[1] = iVar3; + iVar3 = FUN_180016290(param_1,(uint)(uVar17 / uVar10),uVar8,0); + param_4[2] = iVar3; + uVar12 = uVar10; + if (*(int *)(param_1 + 0x78) != 0) { + iVar3 = FUN_180015b90(param_1,*param_4,*(float *)(param_1 + 0xd4)); + *param_4 = iVar3; + iVar3 = FUN_180015b90(param_1,param_4[1],*(float *)(param_1 + 0xd4)); + param_4[1] = iVar3; + iVar3 = FUN_180015b90(param_1,param_4[2],*(float *)(param_1 + 0xd4)); + param_4[2] = iVar3; + } + while (uVar11 != 0) { + uVar4 = FUN_180016290(param_1,(uint)(ushort)*param_2,uVar8,0); + *param_2 = uVar4; + if (*(int *)(param_1 + 0x78) != 0) { + uVar4 = FUN_180015b90(param_1,uVar4,*(float *)(param_1 + 0xd4)); + *param_2 = uVar4; + } + param_2 = param_2 + 1; + uVar11 = (int)uVar12 - 1; + uVar12 = (ulonglong)uVar11; + } + return uVar10; + } + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180014880 (961 bytes) name=FUN_180014880 + +undefined8 +FUN_180014880(longlong param_1,uint param_2,uint param_3,uint param_4,uint param_5,int *param_6) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + DWORD dwErrCode; + uint uVar5; + uint uVar6; + uint uVar7; + int iVar8; + uint uStack0000000000000038; + uint local_68; + uint local_64; + int local_60; + longlong local_58; + + if ((((*(int *)(param_1 + 0x234) != 0) && (param_2 < *(uint *)(param_1 + 0x41fc0))) && + (param_4 < *(uint *)(param_1 + 0x41fc0))) && + ((((param_3 < *(uint *)(param_1 + 0x41fc4) && (param_5 < *(uint *)(param_1 + 0x41fc4))) && + ((param_2 != param_4 || (param_3 != param_5)))) && (param_6 != (int *)0x0)))) { + iVar1 = 0; + local_58 = 0; + uStack0000000000000038 = 0; + local_64 = 0; + uVar5 = (int)(param_2 - param_4) >> 0x1f; + iVar8 = 0x7fffffff; + iVar3 = -0x7fffffff; + uVar6 = (int)(param_3 - param_5) >> 0x1f; + if ((int)((param_2 - param_4 ^ uVar5) - uVar5) < (int)((param_3 - param_5 ^ uVar6) - uVar6)) { + uVar5 = param_2; + uVar6 = param_5; + local_68 = param_4; + if (param_3 <= param_5) { + uVar5 = param_4; + uVar6 = param_3; + param_3 = param_5; + local_68 = param_2; + } + iVar4 = param_3 - uVar6; + local_60 = iVar4 + 1; + if ((int)param_3 < (int)uVar6) { + local_58 = 0; + } + else { + do { + uVar7 = iVar1 / iVar4 + local_68 + *(int *)(param_1 + 0x41fc0) * uVar6; + iVar2 = FUN_180016290(param_1,(uint)*(ushort *) + (*(longlong *)(param_1 + 0x270) + + (longlong)(int)uVar7 * 2),uVar7,1); + local_58 = local_58 + iVar2; + if (iVar3 < iVar2) { + iVar3 = iVar2; + local_64 = uVar7; + } + if (iVar2 < iVar8) { + iVar8 = iVar2; + uStack0000000000000038 = uVar7; + } + uVar6 = uVar6 + 1; + iVar1 = iVar1 + (uVar5 - local_68); + } while ((int)uVar6 <= (int)param_3); + } + } + else { + uVar5 = param_4; + uVar6 = param_5; + if (param_2 <= param_4) { + uVar5 = param_2; + param_2 = param_4; + uVar6 = param_3; + param_3 = param_5; + } + iVar4 = param_2 - uVar5; + local_60 = iVar4 + 1; + if ((int)param_2 < (int)uVar5) { + local_58 = 0; + } + else { + do { + uVar7 = (uVar6 + iVar1 / iVar4) * *(int *)(param_1 + 0x41fc0) + uVar5; + iVar2 = FUN_180016290(param_1,(uint)*(ushort *) + (*(longlong *)(param_1 + 0x270) + + (longlong)(int)uVar7 * 2),uVar7,1); + local_58 = local_58 + iVar2; + if (iVar3 < iVar2) { + iVar3 = iVar2; + local_64 = uVar7; + } + if (iVar2 < iVar8) { + iVar8 = iVar2; + uStack0000000000000038 = uVar7; + } + uVar5 = uVar5 + 1; + iVar1 = iVar1 + (param_3 - uVar6); + } while ((int)uVar5 <= (int)param_2); + } + } + param_6[1] = iVar3; + *param_6 = iVar8; + param_6[3] = uStack0000000000000038; + param_6[4] = local_64; + param_6[2] = (int)(local_58 / (longlong)local_60); + if (*(int *)(param_1 + 0x78) != 0) { + iVar3 = FUN_180015b90(param_1,iVar8,*(float *)(param_1 + 0xd4)); + *param_6 = iVar3; + iVar3 = FUN_180015b90(param_1,param_6[1],*(float *)(param_1 + 0xd4)); + param_6[1] = iVar3; + iVar3 = FUN_180015b90(param_1,param_6[2],*(float *)(param_1 + 0xd4)); + param_6[2] = iVar3; + } + return 1; + } + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180014c50 (537 bytes) name=FUN_180014c50 + +undefined8 FUN_180014c50(longlong param_1,uint *param_2,uint param_3,int *param_4) + +{ + ushort uVar1; + uint uVar2; + int iVar3; + DWORD dwErrCode; + uint uVar4; + ulonglong uVar5; + uint uVar6; + uint uVar8; + ulonglong uVar9; + uint uVar10; + ulonglong uVar12; + uint uStack0000000000000028; + ulonglong uVar7; + ulonglong uVar11; + + if ((((*(int *)(param_1 + 0x234) != 0) && (param_4 != (int *)0x0)) && (param_2 != (uint *)0x0)) && + (param_3 != 0)) { + uVar5 = 0; + uVar2 = *(uint *)(param_1 + 0x41fc0); + uVar8 = 0xffffffff; + uStack0000000000000028 = 0; + uVar7 = uVar5; + uVar9 = uVar5; + uVar11 = uVar5; + uVar12 = uVar5; + uVar4 = param_3; + do { + uVar6 = *param_2; + param_2 = param_2 + 1; + uVar1 = *(ushort *)(*(longlong *)(param_1 + 0x270) + (ulonglong)uVar6 * 2); + uVar9 = uVar9 + uVar1; + uVar10 = (uint)uVar1; + if ((uint)uVar5 < (uint)uVar1) { + uVar5 = (ulonglong)uVar10; + uStack0000000000000028 = uVar6; + } + if (uVar10 < uVar8) { + uVar12 = (ulonglong)uVar6; + uVar8 = uVar10; + } + uVar10 = (int)uVar11 + uVar6 / uVar2; + uVar11 = (ulonglong)uVar10; + uVar6 = (int)uVar7 + (uVar6 - uVar2 * (uVar6 / uVar2)); + uVar7 = (ulonglong)uVar6; + uVar4 = uVar4 - 1; + } while (uVar4 != 0); + iVar3 = FUN_180016290(param_1,uVar8 & 0xffff,(uint)uVar12,1); + uVar4 = uStack0000000000000028; + *param_4 = iVar3; + iVar3 = FUN_180016290(param_1,(uint)uVar5,uStack0000000000000028,1); + param_4[1] = iVar3; + iVar3 = FUN_180016290(param_1,(uint)((longlong)uVar9 / (longlong)(ulonglong)param_3), + (uVar10 / param_3) * uVar2 + uVar6 / param_3,1); + param_4[2] = iVar3; + param_4[3] = (uint)uVar12; + param_4[4] = uVar4; + if (*(int *)(param_1 + 0x78) != 0) { + iVar3 = FUN_180015b90(param_1,*param_4,*(float *)(param_1 + 0xd4)); + *param_4 = iVar3; + iVar3 = FUN_180015b90(param_1,param_4[1],*(float *)(param_1 + 0xd4)); + param_4[1] = iVar3; + iVar3 = FUN_180015b90(param_1,param_4[2],*(float *)(param_1 + 0xd4)); + param_4[2] = iVar3; + } + iVar3 = *param_4; + if (param_4[1] < iVar3) { + param_4[1] = iVar3; + } + if (param_4[1] < param_4[2]) { + param_4[2] = param_4[1]; + } + if (param_4[2] < iVar3) { + param_4[2] = iVar3; + } + return 1; + } + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180014e70 (358 bytes) name=FUN_180014e70 + +int FUN_180014e70(longlong param_1,uint param_2,int param_3) + +{ + int iVar1; + uint uVar2; + DWORD dwErrCode; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + + if ((*(int *)(param_1 + 0x234) == 0) || (*(uint *)(param_1 + 0x47938) <= param_2)) { + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + iVar7 = -0x7fffffff; + } + else { + iVar7 = 0; + if (param_3 == 1) { + iVar6 = 0; + } + else if (param_3 == 3) { + iVar6 = 1; + } + else { + iVar6 = (param_3 != 5) + 2; + } + uVar2 = param_2 / *(uint *)(param_1 + 0x41fc0); + iVar5 = 0; + iVar3 = param_2 - *(uint *)(param_1 + 0x41fc0) * uVar2; + for (iVar9 = iVar3 - iVar6; iVar9 <= iVar3 + iVar6; iVar9 = iVar9 + 1) { + if ((-1 < iVar9) && (iVar1 = *(int *)(param_1 + 0x41fc0), iVar9 < iVar1)) { + iVar4 = uVar2 - iVar6; + if (iVar4 <= (int)(uVar2 + iVar6)) { + uVar8 = iVar1 * iVar4 + iVar9; + do { + if ((-1 < iVar4) && (iVar4 < *(int *)(param_1 + 0x41fc4))) { + iVar5 = iVar5 + (uint)*(ushort *) + (*(longlong *)(param_1 + 0x270) + (ulonglong)uVar8 * 2); + iVar7 = iVar7 + 1; + } + iVar4 = iVar4 + 1; + uVar8 = uVar8 + iVar1; + } while (iVar4 <= (int)(uVar2 + iVar6)); + } + } + } + iVar7 = FUN_180016290(param_1,iVar5 / iVar7,param_2,1); + if (*(int *)(param_1 + 0x78) != 0) { + iVar7 = FUN_180015b90(param_1,iVar7,*(float *)(param_1 + 0xd4)); + return iVar7; + } + } + return iVar7; +} + + +================================================================== + +### EXPORT FUNC 180014fe0 (1301 bytes) name=FUN_180014fe0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_180014fe0(undefined8 param_1,float *param_2) + +{ + int iVar1; + ulonglong uVar2; + float fVar3; + undefined4 uVar4; + float fVar5; + float fVar6; + float fVar7; + float local_e4 [4]; + 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; + 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; + + local_e4[0] = DAT_18005e7b8; + local_e4[1] = (float)DAT_18005e7b4; + local_e4[2] = (float)DAT_18005e7b0; + local_e4[3] = (float)DAT_18005e7ac; + local_d4 = DAT_18005e7a8; + local_d0 = DAT_18005e7a4; + local_cc = DAT_18005e7a0; + local_c8 = DAT_18005e79c; + local_c4 = DAT_18005e798; + local_c0 = DAT_18005e794; + local_bc = DAT_18005e790; + local_b8 = DAT_18005e78c; + local_b4 = DAT_18005e788; + local_b0 = DAT_18005e784; + local_ac = DAT_18005e780; + local_a8 = DAT_18005e77c; + local_a4 = DAT_18005e778; + local_a0 = DAT_18005e774; + local_98 = DAT_18005e76c; + local_9c = DAT_18005e770; + local_90 = DAT_18005e768; + local_94 = DAT_18005e764; + local_88 = DAT_18005e760; + local_8c = DAT_18005e75c; + local_80 = DAT_18005e758; + local_84 = DAT_18005e754; + local_78 = DAT_18005e750; + local_7c = DAT_18005e74c; + local_70 = DAT_18005e748; + local_74 = DAT_18005e744; + local_68 = DAT_18005e740; + local_6c = DAT_18005e73c; + local_60 = DAT_18005e738; + local_64 = DAT_18005e734; + local_58 = DAT_18005e730; + local_5c = DAT_18005e72c; + if (param_2 == (float *)0x0) { + SetLastError(0xe4ae0001); + return 0; + } + fVar3 = 0.0; + uVar4 = 0; + if ((((0.0 < *param_2) && (0.0 < param_2[4])) && (fVar5 = param_2[3], 0.0 <= fVar5)) && + (fVar5 <= DAT_18005e700)) { + iVar1 = (int)param_2[2]; + if (iVar1 < -0x19) { + iVar1 = -0x19; + } + else if (0x23 < iVar1) { + iVar1 = 0x23; + } + uVar2 = FUN_1800512c0(fVar5 * local_e4[iVar1]); + fVar5 = DAT_18005e728 / param_2[4]; + fVar6 = (float)uVar2 * _DAT_18005e724 + _DAT_18005e720; + if (param_2[5] <= 0.0) { + fVar7 = 0.0; + } + else { + uVar2 = FUN_180050940((ulonglong)(uint)param_2[5],DAT_18005e71c); + fVar7 = (float)uVar2 * DAT_18005e71c; + } + if (0.0 < param_2[6]) { + uVar2 = FUN_180050940((ulonglong)(uint)param_2[6],DAT_18005e718); + uVar4 = (undefined4)(uVar2 >> 0x20); + fVar3 = (float)uVar2 * _DAT_18005e714; + } + uVar2 = FUN_180050fc0(CONCAT44(uVar4,(fVar3 + fVar7 + fVar5 + fVar6) * *param_2 * _DAT_18005e710 + )); + param_2[9] = (float)uVar2; + return uVar2; + } + param_2[9] = 1.0; + SetLastError(0xe4ae0001); + return (ulonglong)(uint)param_2[9]; +} + + +================================================================== + +### EXPORT FUNC 180015500 (350 bytes) name=FUN_180015500 + +undefined8 FUN_180015500(longlong param_1,int param_2) + +{ + uint uVar1; + undefined *_Src; + longlong lVar2; + longlong lVar3; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if (param_2 == 0) { + param_2 = 7; + } + switch(param_2) { + case 1: + _Src = &DAT_180059120; + break; + case 2: + _Src = &DAT_180059b40; + break; + case 3: + _Src = &DAT_18005a560; + break; + case 4: + _Src = &DAT_18005af80; + break; + case 5: + _Src = &DAT_18005b9a0; + break; + case 6: + _Src = &DAT_18005c3c0; + break; + case 7: + _Src = &DAT_18005cde0; + break; + case 8: + _Src = &DAT_18005d800; + break; + default: + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + memcpy(&DAT_180099000,_Src,0xa1c); + lVar2 = 0; + do { + lVar3 = lVar2 + 8; + uVar1 = *(int *)((longlong)&DAT_180099004 + lVar2) - *(int *)((longlong)&DAT_180099000 + lVar2); + *(uint *)((longlong)&DAT_180099a20 + lVar2) = ((uVar1 >> 1) + 0x1000000) / uVar1; + uVar1 = *(int *)((longlong)&DAT_180099008 + lVar2) - *(int *)((longlong)&DAT_180099004 + lVar2); + *(uint *)((longlong)&DAT_180099a24 + lVar2) = ((uVar1 >> 1) + 0x1000000) / uVar1; + lVar2 = lVar3; + } while (lVar3 < 0xa18); + lVar2 = (longlong)DAT_18009a434; + *(int *)(param_1 + 0x68) = param_2; + DAT_180073748 = (undefined4)(0x7fffffff / lVar2); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 1; +} + + +================================================================== + +### EXPORT FUNC 180015680 (88 bytes) name=FUN_180015680 + +uint FUN_180015680(longlong param_1,undefined8 param_2,uint param_3) + +{ + int iVar1; + uint uVar2; + undefined8 in_RAX; + undefined2 uVar3; + + if (*(int *)(param_1 + 0x47950) != 0) { + iVar1 = FUN_180015940(param_1,30000,param_3); + uVar2 = iVar1 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < (int)uVar2) { + uVar2 = 0xffff; + } + return uVar2; + } + uVar2 = param_3 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar3 = (undefined2)uVar2; + if (0xffff < uVar2) { + uVar3 = 0xffff; + } + return (uint)CONCAT62((int6)((ulonglong)in_RAX >> 0x10),uVar3); +} + + +================================================================== + +### EXPORT FUNC 1800156e0 (143 bytes) name=FUN_1800156e0 + +int FUN_1800156e0(longlong param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (*(int *)(param_1 + 0x47950) != 0) { + return param_2 << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar2 = (param_2 << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f)) + + *(int *)(param_1 + 0x47948) + 150000; + iVar1 = (int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar1 < 0) { + iVar1 = 0; + } + else if (0x285 < iVar1) { + iVar1 = 0x285; + } + iVar2 = (iVar2 + iVar1 * -0x1000) * ((&DAT_180099004)[iVar1] - (&DAT_180099000)[iVar1]); + iVar2 = ((int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar1]; + if (iVar2 < 0) { + iVar2 = 0; + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 180015770 (204 bytes) name=FUN_180015770 + +int FUN_180015770(longlong param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + + if (*(int *)(param_1 + 0x47950) == 0) { + uVar3 = 0x286; + uVar2 = 0; + do { + uVar1 = (int)(uVar3 + uVar2) >> 1; + if (param_2 < (int)(&DAT_180099000)[(int)uVar1]) { + uVar3 = uVar1; + uVar1 = uVar2; + } + uVar2 = uVar1; + } while (uVar2 + 1 < uVar3); + iVar4 = param_2 - (&DAT_180099000)[(int)uVar2]; + if (DAT_180073748 < iVar4) { + iVar4 = (int)((longlong)(int)(&DAT_180099a20)[(int)uVar2] * (longlong)iVar4 >> 0xc) + -150000 + + uVar2 * 0x1000; + } + else { + iVar4 = ((&DAT_180099a20)[(int)uVar2] * iVar4 >> 0xc) + -150000 + uVar2 * 0x1000; + } + iVar4 = iVar4 - *(int *)(param_1 + 0x47948) >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f) + ; + if (iVar4 < 0) { + iVar4 = 0; + } + return iVar4; + } + return param_2 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); +} + + +================================================================== + +### EXPORT FUNC 180015840 (103 bytes) name=FUN_180015840 + +int FUN_180015840(undefined8 param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar3 = param_2 + 150000; + iVar2 = (int)((iVar3 >> 0x1f & 0xfffU) + iVar3) >> 0xc; + iVar1 = 0; + if ((-1 < iVar2) && (iVar1 = iVar2, 0x285 < iVar2)) { + iVar1 = 0x285; + } + iVar2 = (iVar3 + iVar1 * -0x1000) * ((&DAT_180099004)[iVar1] - (&DAT_180099000)[iVar1]); + iVar1 = ((int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar1]; + if (iVar1 < 0) { + iVar1 = 0; + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 1800158b0 (130 bytes) name=FUN_1800158b0 + +int FUN_1800158b0(undefined8 param_1,int param_2) + +{ + uint uVar1; + int iVar2; + uint uVar3; + uint uVar4; + + uVar3 = 0; + uVar4 = 0x286; + do { + uVar1 = (int)(uVar4 + uVar3) >> 1; + if (param_2 < (int)(&DAT_180099000)[(int)uVar1]) { + uVar4 = uVar1; + uVar1 = uVar3; + } + uVar3 = uVar1; + } while (uVar3 + 1 < uVar4); + iVar2 = param_2 - (&DAT_180099000)[(int)uVar3]; + if (DAT_180073748 < iVar2) { + return (int)((longlong)(int)(&DAT_180099a20)[(int)uVar3] * (longlong)iVar2 >> 0xc) + -150000 + + uVar3 * 0x1000; + } + return ((&DAT_180099a20)[(int)uVar3] * iVar2 >> 0xc) + -150000 + uVar3 * 0x1000; +} + + +================================================================== + +### EXPORT FUNC 180015940 (251 bytes) name=FUN_180015940 + +int FUN_180015940(undefined8 param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + + iVar4 = param_2 + 150000; + iVar1 = (int)(iVar4 + (iVar4 >> 0x1f & 0xfffU)) >> 0xc; + iVar3 = 0; + if ((-1 < iVar1) && (iVar3 = iVar1, 0x285 < iVar1)) { + iVar3 = 0x285; + } + iVar1 = iVar4 + param_3; + iVar2 = (int)(iVar1 + (iVar1 >> 0x1f & 0xfffU)) >> 0xc; + iVar5 = 0; + if ((-1 < iVar2) && (iVar5 = iVar2, 0x285 < iVar2)) { + iVar5 = 0x285; + } + if (iVar3 != iVar5) { + iVar1 = (iVar1 + iVar5 * -0x1000) * ((&DAT_180099004)[iVar5] - (&DAT_180099000)[iVar5]); + iVar4 = (iVar4 + iVar3 * -0x1000) * ((&DAT_180099004)[iVar3] - (&DAT_180099000)[iVar3]); + return (&DAT_180099000)[iVar5] + + ((((int)((iVar1 >> 0x1f & 0xfffU) + iVar1) >> 0xc) - + ((int)(iVar4 + (iVar4 >> 0x1f & 0xfffU)) >> 0xc)) - (&DAT_180099000)[iVar3]); + } + iVar3 = ((&DAT_180099004)[iVar3] - (&DAT_180099000)[iVar3]) * param_3; + return (int)(iVar3 + (iVar3 >> 0x1f & 0xfffU)) >> 0xc; +} + + +================================================================== + +### EXPORT FUNC 180015a40 (336 bytes) name=FUN_180015a40 + +int FUN_180015a40(undefined8 param_1,int param_2,uint param_3) + +{ + int iVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + + iVar3 = param_2 + 150000; + uVar5 = 0x286; + iVar6 = (int)((iVar3 >> 0x1f & 0xfffU) + iVar3) >> 0xc; + if (iVar6 < 0) { + iVar6 = 0; + } + else if (0x285 < iVar6) { + iVar6 = 0x285; + } + iVar1 = (&DAT_180099000)[iVar6]; + if (((&DAT_180099004)[iVar6] - iVar1 < + (int)(((param_3 ^ (int)param_3 >> 0x1f) - ((int)param_3 >> 0x1f)) * 2)) && + ((iVar3 = (iVar3 + iVar6 * -0x1000) * ((&DAT_180099004)[iVar6] - iVar1), + iVar3 = iVar1 + ((int)(iVar3 + (iVar3 >> 0x1f & 0xfffU)) >> 0xc) + param_3, uVar4 = 0, + iVar3 < iVar1 || (uVar4 = 0, (int)(&DAT_180099004)[iVar6] < iVar3)))) { + do { + uVar2 = (int)(uVar5 + uVar4) >> 1; + if (iVar3 < (int)(&DAT_180099000)[(int)uVar2]) { + uVar5 = uVar2; + uVar2 = uVar4; + } + uVar4 = uVar2; + } while (uVar4 + 1 < uVar5); + iVar3 = iVar3 - (&DAT_180099000)[(int)uVar4]; + if (DAT_180073748 < iVar3) { + iVar3 = (int)((longlong)(int)(&DAT_180099a20)[(int)uVar4] * (longlong)iVar3 >> 0xc) + -150000 + + uVar4 * 0x1000; + } + else { + iVar3 = ((&DAT_180099a20)[(int)uVar4] * iVar3 >> 0xc) + -150000 + uVar4 * 0x1000; + } + iVar3 = iVar3 - param_2; + } + else { + iVar3 = (int)((&DAT_180099a20)[iVar6] * param_3) >> 0xc; + } + return iVar3; +} + + +================================================================== + +### EXPORT FUNC 180015b90 (392 bytes) name=FUN_180015b90 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_180015b90(longlong param_1,int param_2,float param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + + if (*(int *)(param_1 + 0xcc) == 0) { + return param_2; + } + fVar5 = *(float *)(param_1 + 0xf4); + if ((((0.0 < fVar5) && (fVar5 <= DAT_18005e700)) && (0.0 < param_3)) && + (((param_3 <= DAT_18005e700 && (fVar4 = *(float *)(param_1 + 0xf8), 0.0 < fVar4)) && + (fVar4 <= DAT_18005e700)))) { + fVar6 = fVar4 * fVar5 * param_3; + fVar5 = DAT_18005e700; + iVar2 = FUN_180015840(param_1,param_2); + fVar4 = (float)iVar2; + iVar2 = FUN_180015840(param_1,(int)(*(float *)(param_1 + 0xd8) * _DAT_18005e820)); + iVar2 = FUN_1800158b0(param_1,(int)((fVar4 - (float)iVar2 * (fVar5 - fVar6)) / fVar6)); + if (iVar2 < -0x42afe) { + iVar2 = -0x42afe; + } + iVar3 = (*(int *)(param_1 + 0x5c) + -15000) / 5000; + if (iVar3 < 0) { + iVar3 = 0; + } + else if (6 < iVar3) { + iVar3 = 6; + } + iVar1 = *(int *)(param_1 + 0xac + (longlong)iVar3 * 4); + iVar2 = iVar2 + ((*(int *)(param_1 + 0x5c) + (iVar3 + 3) * -5000) * + (*(int *)(param_1 + 0xb0 + (longlong)iVar3 * 4) - iVar1)) / 5000 + iVar1; + if (*(int *)(param_1 + 0x6c) != 0) { + iVar2 = iVar2 + ((int)((float)iVar2 * *(float *)(param_1 + 0xec)) - + (int)(*(float *)(param_1 + 0xf0) * _DAT_18005e91c)); + } + return iVar2; + } + SetLastError(0xe4ae0001); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180015d20 (1389 bytes) name=FUN_180015d20 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_180015d20(longlong param_1,uint param_2,float param_3,float *param_4,uint *param_5) + +{ + longlong lVar1; + ushort uVar2; + longlong lVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + ushort *puVar8; + ulonglong uVar9; + int iVar10; + int iVar11; + longlong lVar12; + ulonglong uVar13; + ulonglong uVar14; + int iVar15; + uint uVar16; + uint uVar17; + ulonglong uVar18; + int iVar19; + int iVar20; + ulonglong uVar21; + uint uVar22; + uint uVar23; + ulonglong uVar24; + uint uVar25; + float fVar26; + uint local_60; + int local_5c; + + uVar17 = 0; + if (*(int *)(param_1 + 0x44c4c) == 0) { + iVar11 = *(int *)(param_1 + 0x42010); + uVar5 = 0x286; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar19 = (iVar11 << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f)) + + *(int *)(param_1 + 0x47948); + } + else { + uVar7 = 0x286; + iVar19 = iVar11 << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + uVar25 = uVar17; + do { + uVar6 = (int)(uVar7 + uVar25) >> 1; + if (iVar19 < (int)(&DAT_180099000)[(int)uVar6]) { + uVar7 = uVar6; + uVar6 = uVar25; + } + uVar25 = uVar6; + } while (uVar25 + 1 < uVar7); + iVar19 = iVar19 - (&DAT_180099000)[(int)uVar25]; + if (DAT_180073748 < iVar19) { + iVar19 = (int)((longlong)(int)(&DAT_180099a20)[(int)uVar25] * (longlong)iVar19 >> 0xc) + + -150000 + uVar25 * 0x1000; + } + else { + iVar19 = ((&DAT_180099a20)[(int)uVar25] * iVar19 >> 0xc) + -150000 + uVar25 * 0x1000; + } + } + iVar20 = *(int *)(param_1 + 0x42018); + if (*(int *)(param_1 + 0x47950) == 0) { + iVar15 = (iVar20 << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f)) + + *(int *)(param_1 + 0x47948); + } + else { + iVar15 = iVar20 << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + do { + uVar7 = (int)(uVar5 + uVar17) >> 1; + if (iVar15 < (int)(&DAT_180099000)[(int)uVar7]) { + uVar5 = uVar7; + uVar7 = uVar17; + } + uVar17 = uVar7; + } while (uVar17 + 1 < uVar5); + iVar15 = iVar15 - (&DAT_180099000)[(int)uVar17]; + if (DAT_180073748 < iVar15) { + iVar15 = (int)((longlong)(int)(&DAT_180099a20)[(int)uVar17] * (longlong)iVar15 >> 0xc) + + -150000 + uVar17 * 0x1000; + } + else { + iVar15 = ((&DAT_180099a20)[(int)uVar17] * iVar15 >> 0xc) + -150000 + uVar17 * 0x1000; + } + } + if (iVar19 - iVar15 < 2000) { + *(undefined4 *)(param_1 + 0x44c4c) = 0xffff; + } + else { + iVar11 = iVar11 - iVar20; + *(int *)(param_1 + 0x44c4c) = + iVar11 / 3 + (iVar11 >> 0x1f) + + (int)(((longlong)iVar11 / 3 + ((longlong)iVar11 >> 0x3f) & 0xffffffffU) >> 0x1f) + iVar20 + ; + } + } + lVar3 = *(longlong *)(param_1 + 0x270); + uVar17 = *(uint *)(param_1 + 0x44c4c); + uVar2 = *(ushort *)(lVar3 + (ulonglong)param_2 * 2); + if (uVar17 < uVar2) { + iVar11 = *(int *)(param_1 + 0x41fe8); + if (iVar11 != 0) { + param_3 = param_3 * (float)(1 << ((byte)iVar11 & 0x1f)); + } + uVar7 = *(uint *)(param_1 + 0x41fc0); + uVar6 = param_2 / uVar7; + iVar19 = *(int *)(param_1 + 0x41fc4) - uVar6; + uVar23 = param_2 - uVar7 * uVar6; + uVar16 = iVar19 - 1; + local_5c = 0; + uVar5 = (uVar7 - uVar23) - 1; + uVar25 = uVar16; + if (uVar5 < uVar16) { + uVar25 = uVar5; + } + uVar22 = uVar6; + if ((int)uVar23 < (int)uVar6) { + uVar22 = uVar23; + } + if ((int)uVar25 <= (int)uVar22) { + iVar20 = uVar7 - uVar23; + if (uVar16 <= uVar5) { + iVar20 = iVar19; + } + uVar22 = iVar20 - 1; + } + lVar12 = lVar3; + iVar19 = 1; + local_60 = (uint)uVar2; + if (0 < (int)uVar22) { + do { + iVar20 = iVar19; + uVar21 = 0; + uVar17 = *(uint *)(param_1 + 0x41fc0); + uVar16 = 0; + lVar12 = lVar12 + (((ulonglong)((uVar6 - iVar20) * uVar17) - (longlong)iVar20) + + (longlong)(int)uVar23) * 2; + iVar19 = iVar20 * 2; + uVar9 = uVar21; + uVar14 = uVar21; + uVar5 = uVar16; + uVar25 = uVar16; + if (1 < iVar19 + 1) { + uVar17 = uVar17 * iVar20 * 2; + uVar5 = iVar19 + 1U >> 1; + uVar13 = (ulonglong)uVar5; + uVar5 = uVar5 * 2; + uVar24 = uVar21; + do { + uVar18 = (ulonglong)uVar17; + lVar1 = uVar9 * 2; + uVar9 = uVar9 + 2; + uVar4 = uVar17 + 1; + uVar17 = uVar17 + 2; + uVar25 = (int)uVar24 + (uint)*(ushort *)(lVar12 + lVar1) + + (uint)*(ushort *)(lVar12 + uVar18 * 2); + uVar24 = (ulonglong)uVar25; + uVar14 = (ulonglong) + ((int)uVar14 + (uint)*(ushort *)(lVar12 + -2 + uVar9 * 2) + + (uint)*(ushort *)(lVar12 + (ulonglong)uVar4 * 2)); + uVar13 = uVar13 - 1; + } while (uVar13 != 0); + uVar17 = *(uint *)(param_1 + 0x41fc0); + } + uVar4 = uVar16; + if ((int)uVar5 <= iVar19) { + uVar4 = (uint)*(ushort *) + (lVar12 + (ulonglong)(uVar5 + iVar20 * *(int *)(param_1 + 0x41fc0) * 2) * 2 + ) + (uint)*(ushort *)(lVar12 + uVar9 * 2); + } + iVar15 = 1; + iVar10 = uVar4 + uVar25 + (int)uVar14; + uVar9 = uVar21; + if (1 < iVar19 + -1) { + uVar5 = uVar17 * 2; + uVar25 = (iVar19 - 3U >> 1) + 1; + uVar14 = (ulonglong)uVar25; + iVar15 = uVar25 * 2 + 1; + uVar25 = uVar5; + do { + uVar13 = (ulonglong)uVar25; + uVar24 = (ulonglong)uVar17; + uVar16 = iVar19 + uVar17; + uVar17 = uVar17 + uVar5; + uVar4 = iVar19 + uVar25; + uVar9 = (ulonglong) + ((int)uVar9 + (uint)*(ushort *)(lVar12 + uVar24 * 2) + + (uint)*(ushort *)(lVar12 + (ulonglong)uVar16 * 2)); + uVar25 = uVar25 + uVar5; + uVar16 = (int)uVar21 + (uint)*(ushort *)(lVar12 + uVar13 * 2) + + (uint)*(ushort *)(lVar12 + (ulonglong)uVar4 * 2); + uVar21 = (ulonglong)uVar16; + uVar14 = uVar14 - 1; + } while (uVar14 != 0); + } + if (iVar15 < iVar19) { + uVar17 = iVar15 * *(int *)(param_1 + 0x41fc0); + iVar10 = iVar10 + (uint)*(ushort *)(lVar12 + (ulonglong)uVar17 * 2) + + (uint)*(ushort *)(lVar12 + (ulonglong)(iVar19 + uVar17) * 2); + } + uVar17 = *(uint *)(param_1 + 0x44c4c); + uVar5 = (uVar16 + (int)uVar9 + iVar10) / (uint)(iVar20 * 8); + if ((int)uVar5 <= (int)uVar17) { + fVar26 = (float)(int)((uVar17 - local_60) * (iVar20 - local_5c)) / + (float)(int)(uVar5 - local_60) + (float)local_5c; + if (fVar26 != _DAT_180057598) goto LAB_1800161d1; + break; + } + if (param_3 < (float)iVar20) { + iVar19 = (int)(iVar20 * 9 + (iVar20 * 9 >> 0x1f & 7U)) >> 3; + if (iVar19 < iVar20 + 1) { + iVar19 = iVar20 + 1; + } + } + else { + iVar19 = iVar20 + 1; + } + lVar12 = *(longlong *)(param_1 + 0x270); + local_60 = uVar5; + local_5c = iVar20; + } while (iVar19 <= (int)uVar22); + } + fVar26 = (float)(int)uVar22; + if (param_3 < fVar26) { +LAB_1800161d1: + uVar5 = 0; + if ((int)(fVar26 + _DAT_18005e918) < (int)uVar22) { + uVar22 = (int)(fVar26 + _DAT_18005e918); + } + iVar19 = uVar22 * 2; + if (-1 < iVar19) { + uVar9 = (ulonglong)(iVar19 + 1); + uVar6 = (uVar6 - uVar22) * uVar7; + uVar25 = uVar5; + do { + puVar8 = (ushort *) + (lVar3 + (((ulonglong)uVar6 - (longlong)(int)uVar22) + (longlong)(int)uVar23) * 2 + ); + if (-1 < iVar19) { + uVar14 = (ulonglong)(iVar19 + 1); + do { + uVar2 = *puVar8; + puVar8 = puVar8 + 1; + if (uVar2 <= uVar17) { + uVar25 = uVar25 + uVar2; + uVar5 = uVar5 + 1; + } + uVar14 = uVar14 - 1; + } while (uVar14 != 0); + } + uVar6 = uVar6 + uVar7; + uVar9 = uVar9 - 1; + } while (uVar9 != 0); + if (uVar5 != 0) { + if (iVar11 != 0) { + fVar26 = fVar26 / (float)(1 << ((byte)iVar11 & 0x1f)); + } + *param_4 = fVar26; + *param_5 = uVar25 / uVar5; + return 1; + } + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180016290 (2127 bytes) name=FUN_180016290 + +int FUN_180016290(longlong param_1,uint param_2,uint param_3,int param_4) + +{ + longlong lVar1; + uint uVar2; + uint uVar3; + undefined8 uVar4; + int *piVar5; + uint uVar6; + uint uVar7; + int iVar8; + ulonglong uVar9; + int iVar10; + int iVar11; + uint uVar12; + int iVar13; + float extraout_XMM0_Da; + ulonglong uVar14; + float fVar15; + float fVar16; + float fVar17; + float local_res8 [2]; + uint local_58; + uint local_54; + + iVar8 = DAT_180073748; + if (*(int *)(param_1 + 0x41880) == 0) { + if (*(int *)(param_1 + 0x47950) == 0) { + return ((param_2 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f)) + + *(int *)(param_1 + 0x47948); + } + uVar7 = 0x286; + iVar8 = (param_2 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + uVar12 = 0; + do { + uVar6 = (int)(uVar7 + uVar12) >> 1; + if (iVar8 < (int)(&DAT_180099000)[(int)uVar6]) { + uVar7 = uVar6; + uVar6 = uVar12; + } + uVar12 = uVar6; + } while (uVar12 + 1 < uVar7); + iVar8 = iVar8 - (&DAT_180099000)[(int)uVar12]; + if (DAT_180073748 < iVar8) { + return (int)((longlong)(int)(&DAT_180099a20)[(int)uVar12] * (longlong)iVar8 >> 0xc) + -150000 + + uVar12 * 0x1000; + } + return ((&DAT_180099a20)[(int)uVar12] * iVar8 >> 0xc) + -150000 + uVar12 * 0x1000; + } + fVar17 = 0.0; + uVar9 = 0; + uVar14 = (ulonglong)*(uint *)(param_1 + 0x98); + if (*(uint *)(param_1 + 0x41884) <= *(uint *)(param_1 + 0x98)) { + uVar14 = uVar9; + } + uVar7 = param_2 & 0xffff; + fVar16 = *(float *)(uVar14 * 0x21c + 0x41a8c + param_1); + lVar1 = uVar14 * 0x21c + 0x41888 + param_1; + uVar12 = 0; + local_54 = param_3; + if ((fVar16 <= DAT_18005e9e0) || (DAT_18005e9dc <= fVar16)) { + if ((param_4 != 0) && + ((((DAT_18005e700 <= *(float *)(lVar1 + 0xac) && (DAT_18005e700 <= *(float *)(lVar1 + 0xb0))) + && (0.0 < *(float *)(lVar1 + 0xb4))) && + ((0.0 < *(float *)(lVar1 + 0xbc) && + (fVar16 = DAT_18005e700, + uVar4 = FUN_180015d20(param_1,param_3,*(float *)(lVar1 + 0xb0),local_res8,&local_58), + (int)uVar4 != 0)))))) { + fVar15 = *(float *)(lVar1 + 0xac); + if (*(float *)(lVar1 + 0xb0) < fVar15) { + fVar15 = fVar15 * *(float *)(lVar1 + 0xbc) + *(float *)(lVar1 + 0xc0); + } + else { + fVar15 = fVar15 * *(float *)(lVar1 + 0xb4) + *(float *)(lVar1 + 0xb8); + } + iVar10 = FUN_1800156e0(param_1,uVar7); + iVar13 = FUN_1800156e0(param_1,local_58); + uVar7 = FUN_180015770(param_1,(int)((float)(iVar10 - iVar13) * + (fVar16 - extraout_XMM0_Da / fVar15) + (float)iVar10)); + } + } + else { + if (*(int *)(param_1 + 0x47950) == 0) { + iVar10 = (uVar7 << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f)) + + *(int *)(param_1 + 0x47948); + } + else { + uVar6 = 0x286; + iVar10 = uVar7 << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + uVar14 = uVar9; + do { + uVar7 = (int)(uVar6 + (int)uVar14) >> 1; + if ((int)(&DAT_180099000)[(int)uVar7] <= iVar10) { + uVar14 = (ulonglong)uVar7; + uVar7 = uVar6; + } + uVar6 = uVar7; + iVar13 = (int)uVar14; + } while (iVar13 + 1U < uVar6); + iVar10 = iVar10 - (&DAT_180099000)[iVar13]; + if (DAT_180073748 < iVar10) { + iVar10 = (int)((longlong)(int)(&DAT_180099a20)[iVar13] * (longlong)iVar10 >> 0xc) + -150000 + + iVar13 * 0x1000; + } + else { + iVar10 = ((&DAT_180099a20)[iVar13] * iVar10 >> 0xc) + -150000 + iVar13 * 0x1000; + } + } + iVar10 = iVar10 + 150000; + uVar6 = (int)(iVar10 + (iVar10 >> 0x1f & 0xfffU)) >> 0xc; + uVar7 = uVar12; + if ((-1 < (int)uVar6) && (uVar7 = uVar6, 0x285 < (int)uVar6)) { + uVar7 = 0x285; + } + iVar10 = (iVar10 + uVar7 * -0x1000) * + ((&DAT_180099004)[(int)uVar7] - (&DAT_180099000)[(int)uVar7]); + uVar7 = ((int)((iVar10 >> 0x1f & 0xfffU) + iVar10) >> 0xc) + (&DAT_180099000)[(int)uVar7]; + if ((int)uVar7 < 0) { + uVar7 = uVar12; + } + iVar10 = *(int *)(param_1 + 0x5c) + 150000; + uVar2 = (int)(iVar10 + (iVar10 >> 0x1f & 0xfffU)) >> 0xc; + uVar6 = uVar12; + if ((-1 < (int)uVar2) && (uVar6 = uVar2, 0x285 < (int)uVar2)) { + uVar6 = 0x285; + } + iVar10 = (iVar10 + uVar6 * -0x1000) * + ((&DAT_180099004)[(int)uVar6] - (&DAT_180099000)[(int)uVar6]); + uVar6 = ((int)(iVar10 + (iVar10 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[(int)uVar6]; + if ((int)uVar6 < 0) { + uVar6 = uVar12; + } + iVar10 = (int)(((float)(int)uVar7 - (DAT_18005e700 - fVar16) * (float)(int)uVar6) / fVar16); + if (iVar10 < DAT_18009907c) { + iVar10 = DAT_18009907c; + } + uVar7 = FUN_180015770(param_1,iVar10); + } + if (*(int *)(param_1 + 0x47950) != 0) { + uVar6 = 0x286; + iVar10 = uVar7 << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + uVar14 = uVar9; + do { + uVar7 = (int)(uVar6 + (int)uVar14) >> 1; + if ((int)(&DAT_180099000)[(int)uVar7] <= iVar10) { + uVar14 = (ulonglong)uVar7; + uVar7 = uVar6; + } + uVar6 = uVar7; + iVar13 = (int)uVar14; + } while (iVar13 + 1U < uVar6); + iVar10 = iVar10 - (&DAT_180099000)[iVar13]; + if (iVar8 < iVar10) { + uVar7 = (int)((longlong)(int)(&DAT_180099a20)[iVar13] * (longlong)iVar10 >> 0xc) + -150000 + + iVar13 * 0x1000; + } + else { + uVar7 = ((&DAT_180099a20)[iVar13] * iVar10 >> 0xc) + -150000 + iVar13 * 0x1000; + } + } + uVar6 = uVar12; + if (*(int *)(lVar1 + 0x3c) != 1) { + piVar5 = (int *)(lVar1 + 0x40); + do { + uVar6 = (uint)uVar9; + if ((int)uVar7 <= *piVar5) break; + uVar6 = uVar6 + 1; + uVar9 = (ulonglong)uVar6; + piVar5 = piVar5 + 1; + } while (uVar6 < *(int *)(lVar1 + 0x3c) - 1U); + } + iVar8 = (*(int *)(lVar1 + 0x38) - *(int *)(lVar1 + 0x34)) + *(int *)(param_1 + 0x54); + iVar10 = (int)((longlong)*(int *)(lVar1 + 0xd4 + (ulonglong)(uVar6 * 2) * 4) * + (longlong)(int)uVar7 >> (*(byte *)(lVar1 + 0x30) & 0x3f)) + + *(int *)(lVar1 + 0xd4 + (ulonglong)(uVar6 * 2 + 1) * 4); + if (*(int *)(param_1 + 100) == 0) { + iVar8 = *(int *)(param_1 + 0x58) - iVar8; + if (iVar8 < 0x3e9) { + if (iVar8 < -1000) { + iVar8 = -1000; + } + } + else { + iVar8 = 1000; + } + } + else { + iVar8 = iVar8 - *(int *)(param_1 + 0x58); + if (iVar8 < 0x3e9) { + if (iVar8 < -5000) { + iVar8 = -5000; + } + } + else { + iVar8 = 1000; + } + } + iVar13 = *(int *)(param_1 + 0x58) + 150000; + iVar8 = iVar8 + ((*(int *)(param_1 + 0x5c) - *(int *)(param_1 + 0x54)) * 2 - + *(int *)(param_1 + 0x60)) + *(int *)(param_1 + 0x58); + uVar6 = (int)(iVar13 + (iVar13 >> 0x1f & 0xfffU)) >> 0xc; + uVar7 = uVar12; + if ((-1 < (int)uVar6) && (uVar7 = uVar6, 0x285 < (int)uVar6)) { + uVar7 = 0x285; + } + iVar11 = iVar13 + iVar8; + uVar2 = (int)(iVar11 + (iVar11 >> 0x1f & 0xfffU)) >> 0xc; + uVar6 = uVar12; + if ((-1 < (int)uVar2) && (uVar6 = uVar2, 0x285 < (int)uVar2)) { + uVar6 = 0x285; + } + if (uVar7 == uVar6) { + iVar8 = ((&DAT_180099004)[(int)uVar7] - (&DAT_180099000)[(int)uVar7]) * iVar8; + uVar7 = (int)((iVar8 >> 0x1f & 0xfffU) + iVar8) >> 0xc; + } + else { + iVar8 = (iVar11 + uVar6 * -0x1000) * + ((&DAT_180099004)[(int)uVar6] - (&DAT_180099000)[(int)uVar6]); + iVar13 = (iVar13 + uVar7 * -0x1000) * + ((&DAT_180099004)[(int)uVar7] - (&DAT_180099000)[(int)uVar7]); + uVar7 = ((((int)((iVar8 >> 0x1f & 0xfffU) + iVar8) >> 0xc) - + ((int)(iVar13 + (iVar13 >> 0x1f & 0xfffU)) >> 0xc)) - (&DAT_180099000)[(int)uVar7]) + + (&DAT_180099000)[(int)uVar6]; + } + if (param_4 != 0) { + if (*(float *)(param_1 + 0xa8) != fVar17) { + iVar8 = *(int *)(param_1 + 0x44cb8); + if (*(int *)(lVar1 + 0x20c) - *(int *)(lVar1 + 0x208) < 0xc351) { + if (40000 < iVar8) { + iVar8 = 40000; + } + if (iVar8 < 5000) { + iVar8 = 5000; + } + } + else { + if (80000 < iVar8) { + iVar8 = 80000; + } + if (iVar8 < -80000) { + iVar8 = -80000; + } + } + iVar8 = FUN_180015940(param_1,35000, + (int)((float)(iVar8 - *(int *)(param_1 + 0xa4)) * + *(float *)(param_1 + 0xa8))); + uVar7 = uVar7 + iVar8; + } + fVar16 = *(float *)(lVar1 + 0x214); + if (fVar16 != fVar17) { + uVar6 = *(uint *)(param_1 + 0x41fc0); + iVar13 = (local_54 - uVar6 * (local_54 / uVar6)) - (uVar6 >> 1); + iVar8 = local_54 / uVar6 - (*(uint *)(param_1 + 0x41fc4) >> 1); + uVar14 = FUN_1800512c0((float)(iVar13 * iVar13 + iVar8 * iVar8)); + iVar8 = iVar10 + 150000; + uVar2 = (int)(iVar8 + (iVar8 >> 0x1f & 0xfffU)) >> 0xc; + uVar6 = uVar12; + if ((-1 < (int)uVar2) && (uVar6 = uVar2, 0x285 < (int)uVar2)) { + uVar6 = 0x285; + } + iVar8 = (iVar8 + uVar6 * -0x1000) * + ((&DAT_180099004)[(int)uVar6] - (&DAT_180099000)[(int)uVar6]); + uVar6 = ((int)((iVar8 >> 0x1f & 0xfffU) + iVar8) >> 0xc) + (&DAT_180099000)[(int)uVar6]; + if ((int)uVar6 < 0) { + uVar6 = uVar12; + } + iVar8 = *(int *)(param_1 + 0x60) + 150000; + uVar3 = (int)(iVar8 + (iVar8 >> 0x1f & 0xfffU)) >> 0xc; + uVar2 = uVar12; + if ((-1 < (int)uVar3) && (uVar2 = uVar3, 0x285 < (int)uVar3)) { + uVar2 = 0x285; + } + iVar8 = (iVar8 + uVar2 * -0x1000) * + ((&DAT_180099004)[(int)uVar2] - (&DAT_180099000)[(int)uVar2]); + uVar2 = ((int)(iVar8 + (iVar8 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[(int)uVar2]; + if ((int)uVar2 < 0) { + uVar2 = uVar12; + } + uVar7 = uVar7 + (int)((float)(int)(uVar6 - uVar2) * (DAT_18005e9d8 - (float)uVar14 * fVar16)); + } + } + iVar8 = FUN_180015a40(param_1,iVar10,uVar7); + return iVar8 + iVar10; +} + + +================================================================== + +### EXPORT FUNC 180016ae0 (617 bytes) name=FUN_180016ae0 + +void FUN_180016ae0(longlong param_1) + +{ + DWORD DVar1; + undefined8 uVar2; + int *piVar3; + longlong lVar4; + longlong lVar5; + ulonglong uVar6; + uint uVar7; + DWORD DVar8; + bool bVar9; + undefined8 local_48 [2]; + CFile local_38 [32]; + + *(undefined4 *)(param_1 + 0x41348) = 0; + uVar7 = 0; + if (*(int *)(param_1 + 0x41558) != 2) { + piVar3 = (int *)(param_1 + 0x41568); + do { + if (*(int *)(param_1 + 0x54) <= *piVar3) break; + uVar7 = uVar7 + 1; + piVar3 = piVar3 + 1; + } while (uVar7 < *(int *)(param_1 + 0x41558) - 2U); + } + *(uint *)(param_1 + 0x41840) = uVar7; + DVar8 = *(int *)(param_1 + 0x41560) + + (*(int *)(param_1 + 0x41554) * 3 + -1) * *(int *)(param_1 + 0x47938) * 2 + + *(int *)(param_1 + 0x4155c); + do { + if (*(int *)(param_1 + 0x41840) + 1U < uVar7) { + uVar7 = *(uint *)(param_1 + 0x41840); + lVar4 = (ulonglong)*(uint *)(param_1 + 0x41758 + (ulonglong)uVar7 * 4) + + *(longlong *)(param_1 + 0x416a0); + *(longlong *)(param_1 + 0x41848) = lVar4; + lVar5 = (ulonglong)(uint)((*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938)) + + (ulonglong)(*(uint *)(param_1 + 0x4155c) >> 1); + *(longlong *)(param_1 + 0x41860) = lVar4 + lVar5 * 2; + lVar4 = (ulonglong)*(uint *)(param_1 + 0x41758 + (ulonglong)(uVar7 + 1) * 4) + + *(longlong *)(param_1 + 0x416a0); + *(longlong *)(param_1 + 0x41850) = lVar4; + *(longlong *)(param_1 + 0x41868) = lVar4 + lVar5 * 2; + *(ulonglong *)(param_1 + 0x41878) = + (ulonglong)*(uint *)(param_1 + 0x417f4 + (ulonglong)uVar7 * 4) + + *(longlong *)(param_1 + 0x416b0); + return; + } + uVar6 = (ulonglong)uVar7; + if (*(int *)(param_1 + 0x416b8 + uVar6 * 4) == 0) { + FUN_180020138((undefined8 *)local_38); + uVar2 = FUN_180020a6c((longlong)local_38,(LPCWSTR)(param_1 + 0x4134c),0x40,0); + if ((int)uVar2 == 0) { + FUN_1800203a4(local_38); + return; + } + FUN_18001ef2c(local_48); + CFile::Seek(local_38,(ulonglong)*(uint *)(param_1 + 0x41708 + uVar6 * 4),0); + DVar1 = FUN_18001fd6c((longlong)local_38, + (LPVOID)((ulonglong)*(uint *)(param_1 + 0x41758 + uVar6 * 4) + + *(longlong *)(param_1 + 0x416a0)),DVar8); + bVar9 = DVar1 == DVar8; + if ((*(int *)(param_1 + 0x41654 + uVar6 * 4) != 0) && + (uVar7 <= *(int *)(param_1 + 0x41558) - 2U)) { + CFile::Seek(local_38,(ulonglong)*(uint *)(param_1 + 0x417a8 + uVar6 * 4),0); + DVar1 = FUN_18001fd6c((longlong)local_38, + (LPVOID)((ulonglong)*(uint *)(param_1 + 0x417f4 + uVar6 * 4) + + *(longlong *)(param_1 + 0x416b0)), + *(int *)(param_1 + 0x41654 + uVar6 * 4) * 0x28); + if ((ulonglong)DVar1 != (ulonglong)(uint)(*(int *)(param_1 + 0x41654 + uVar6 * 4) * 10) << 2 + ) { + bVar9 = false; + } + } + FUN_18001ef94(); + CFile::Close(local_38); + if (!bVar9) { + FUN_1800203a4(local_38); + return; + } + *(undefined4 *)(param_1 + 0x416b8 + uVar6 * 4) = 1; + FUN_1800203a4(local_38); + } + uVar7 = uVar7 + 1; + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 180016d60 (24 bytes) name=Unwind@180016d60 + +void Unwind_180016d60(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180016d80 (24 bytes) name=Unwind@180016d80 + +void Unwind_180016d80(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 180016da0 (46 bytes) name=Catch@180016da0 + +undefined * Catch_180016da0(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0x38) = *(undefined8 *)(param_2 + 0x28); + CFile::Close((CFile *)(param_2 + 0x40)); + return &DAT_180016ca9; +} + + +================================================================== + +### EXPORT FUNC 180016dd0 (316 bytes) name=FUN_180016dd0 + +void FUN_180016dd0(longlong param_1,short *param_2,short *param_3,short *param_4,int param_5) + +{ + short sVar1; + bool bVar2; + int iVar3; + short sVar4; + int iVar5; + + iVar3 = *(int *)(param_1 + 0x54); + bVar2 = false; + if ((iVar3 < *(int *)(param_1 + 0x41564)) || + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(int *)(param_1 + 0x41558) - 1) * 4) < iVar3)) { + bVar2 = true; + } + iVar5 = *(int *)(param_1 + 0x41564 + (ulonglong)*(uint *)(param_1 + 0x41840) * 4); + iVar3 = ((iVar3 - iVar5) * 0x1000) / + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(uint *)(param_1 + 0x41840) + 1) * 4) - iVar5); + if (iVar3 < 0x4000) { + if (iVar3 < -0x3fff) { + iVar3 = -0x3fff; + } + } + else { + iVar3 = 0x3fff; + } + if (bVar2) { + for (; param_5 != 0; param_5 = param_5 + -1) { + sVar4 = *param_2; + sVar1 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + iVar5 = (((int)sVar1 - (int)sVar4) * iVar3 >> 0xc) + (int)sVar4; + if (iVar5 < 0x8000) { + sVar4 = (short)iVar5; + if (iVar5 < -0x8000) { + sVar4 = -0x8000; + } + } + else { + sVar4 = 0x7fff; + } + *param_4 = sVar4; + param_4 = param_4 + 1; + } + } + else if (param_5 != 0) { + do { + sVar4 = *param_2; + sVar1 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + param_5 = param_5 + -1; + *param_4 = (short)(((int)sVar1 - (int)sVar4) * iVar3 >> 0xc) + sVar4; + param_4 = param_4 + 1; + } while (param_5 != 0); + return; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180016f10 (289 bytes) name=FUN_180016f10 + +void FUN_180016f10(longlong param_1,ushort *param_2,ushort *param_3,short *param_4,int param_5) + +{ + ushort uVar1; + ushort uVar2; + bool bVar3; + int iVar4; + short sVar5; + int iVar6; + + iVar4 = *(int *)(param_1 + 0x54); + bVar3 = false; + if ((iVar4 < *(int *)(param_1 + 0x41564)) || + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(int *)(param_1 + 0x41558) - 1) * 4) < iVar4)) { + bVar3 = true; + } + iVar6 = *(int *)(param_1 + 0x41564 + (ulonglong)*(uint *)(param_1 + 0x41840) * 4); + iVar4 = ((iVar4 - iVar6) * 0x1000) / + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(uint *)(param_1 + 0x41840) + 1) * 4) - iVar6); + if (iVar4 < 0x4000) { + if (iVar4 < -0x3fff) { + iVar4 = -0x3fff; + } + } + else { + iVar4 = 0x3fff; + } + if (bVar3) { + for (; param_5 != 0; param_5 = param_5 + -1) { + uVar1 = *param_2; + uVar2 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + iVar6 = ((int)(((uint)uVar2 - (uint)uVar1) * iVar4) >> 0xc) + (uint)uVar1; + if (iVar6 < 0x10000) { + sVar5 = (short)iVar6; + if (iVar6 < 0) { + sVar5 = 0; + } + } + else { + sVar5 = -1; + } + *param_4 = sVar5; + param_4 = param_4 + 1; + } + } + else { + for (; param_5 != 0; param_5 = param_5 + -1) { + uVar1 = *param_2; + uVar2 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + *param_4 = (short)((int)(((uint)uVar2 - (uint)uVar1) * iVar4) >> 0xc) + uVar1; + param_4 = param_4 + 1; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180017040 (413 bytes) name=FUN_180017040 + +void FUN_180017040(longlong param_1,ushort *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined **ppuVar4; + int iVar5; + int iVar6; + ushort *puVar7; + int iVar8; + undefined2 *puVar9; + uint uVar10; + ulonglong uVar11; + ushort *puVar12; + longlong local_res8; + + iVar2 = DAT_18006ea60; + puVar7 = (ushort *)0x0; + iVar8 = 0; + puVar12 = puVar7; + if (*(int *)(param_1 + 0x41f0c) != 0) { + puVar12 = *(ushort **)(param_1 + 0x41ef0); + } + puVar9 = *(undefined2 **)(param_1 + 0x270); + if (*(int *)(param_1 + 0x47950) == 0) { + iVar3 = 50000 - *(int *)(param_1 + 0x47948) >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f) + ; + if (iVar3 < 0) { + iVar3 = iVar8; + } + } + else { + iVar3 = (DAT_1800990c4 - DAT_1800990c0) * 0xd40; + iVar3 = ((int)((iVar3 >> 0x1f & 0xfffU) + iVar3) >> 0xc) + DAT_1800990c0; + if (iVar3 < 0) { + iVar3 = iVar8; + } + iVar3 = iVar3 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar6 = iVar8; + for (uVar10 = *(uint *)(param_1 + 0x47938); uVar11 = (ulonglong)uVar10, uVar10 != 0; + uVar10 = uVar10 - 1) { + iVar5 = ((uint)*param_2 - (uint)*puVar12) * iVar2 + iVar3; + puVar12 = puVar12 + 1; + param_2 = param_2 + 1; + if (iVar5 < 0x10000) { + if (iVar5 < 0) { + puVar7 = (ushort *)(ulonglong)((int)puVar7 + 1); + iVar5 = iVar8; + } + } + else { + puVar7 = (ushort *)(ulonglong)((int)puVar7 + 1); + iVar5 = 0xffff; + } + iVar6 = (int)puVar7; + *puVar9 = (short)iVar5; + puVar9 = puVar9 + 1; + } + if (((*(int *)(param_1 + 0xfc) != 0) && (0x100 < iVar6)) && (1 < iVar2)) { + DAT_18006ea60 = iVar2 + -1; + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res8 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res8 = local_res8 + 0x18; + FUN_18001ad00(&local_res8,L"Converstation ratio adjusted to %dmK/LSB.", + (ulonglong)(uint)(*(int *)(param_1 + 0x47944) * DAT_18006ea60),uVar11); + LOCK(); + piVar1 = (int *)(local_res8 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res8 + -0x18) + 8))(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800171e0 (24 bytes) name=Unwind@1800171e0 + +void Unwind_1800171e0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180017200 (297 bytes) name=FUN_180017200 + +void FUN_180017200(longlong param_1,ushort *param_2) + +{ + longlong lVar1; + ushort *puVar2; + ushort uVar3; + ushort uVar4; + undefined4 uVar5; + int iVar6; + uint uVar7; + short *psVar8; + uint uVar9; + ushort *puVar10; + ulonglong uVar11; + int iVar12; + short *psVar13; + int iVar14; + undefined2 uVar15; + uint uVar16; + undefined2 *puVar17; + longlong lVar18; + + psVar13 = *(short **)(param_1 + 0x41858); + puVar10 = (ushort *)0x0; + if (*(int *)(param_1 + 0x41f0c) != 0) { + puVar10 = *(ushort **)(param_1 + 0x41ef0); + } + iVar12 = *(int *)(param_1 + 0x47938); + lVar18 = *(longlong *)(param_1 + 0x41870); + uVar5 = *(undefined4 *)(param_1 + 0x11c); + puVar17 = *(undefined2 **)(param_1 + 0x270); + uVar16 = *(int *)(param_1 + 0x41554) - 1; + iVar6 = iVar12 * 2; + if (iVar12 != 0) { + do { + uVar9 = 0; + uVar3 = *puVar10; + uVar4 = *param_2; + puVar10 = puVar10 + 1; + param_2 = param_2 + 1; + iVar14 = (int)((uint)uVar4 - (uint)uVar3) >> 1; + psVar8 = psVar13; + uVar7 = 0; + if (uVar16 != 0) { + do { + uVar9 = uVar7; + if (iVar14 <= *psVar8) break; + uVar9 = uVar9 + 1; + psVar8 = psVar8 + 1; + uVar7 = uVar9; + } while (uVar9 < uVar16); + } + uVar11 = (ulonglong)(uVar9 * iVar6); + psVar13 = psVar13 + uVar16; + puVar2 = (ushort *)(lVar18 + uVar11 * 2); + lVar1 = lVar18 + 2; + lVar18 = lVar18 + 4; + iVar14 = ((int)((uint)*puVar2 * iVar14) >> ((byte)uVar5 & 0x1f)) + + (uint)*(ushort *)(lVar1 + uVar11 * 2); + if (iVar14 < 0x10000) { + uVar15 = (undefined2)iVar14; + if (iVar14 < 0) { + uVar15 = 0; + } + } + else { + uVar15 = 0xffff; + } + *puVar17 = uVar15; + puVar17 = puVar17 + 1; + iVar12 = iVar12 + -1; + } while (iVar12 != 0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180017330 (595 bytes) name=FUN_180017330 + +void FUN_180017330(longlong param_1,longlong param_2) + +{ + uint uVar1; + uint *puVar2; + uint uVar3; + + puVar2 = *(uint **)(param_1 + 0x41878); + uVar3 = 0; + uVar1 = *(uint *)(param_1 + 0x41654 + (ulonglong)*(uint *)(param_1 + 0x41840) * 4); + if (uVar1 != 0) { + do { + switch(puVar2[1]) { + case 3: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((ulonglong) + ((longlong) + (int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) * 0x55555556) >> + 0x20); + break; + case 4: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) >> 2); + break; + case 5: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)(((uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) / 5); + break; + case 6: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((ulonglong) + ((longlong) + (int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[7] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) * 0x2aaaaaab) >> + 0x20); + break; + case 7: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)(((uint)*(ushort *)(param_2 + (ulonglong)puVar2[8] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[7] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) / 7); + break; + case 8: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[8] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[7] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[9] * 2)) >> 3); + break; + default: + goto switchD_18001737a_default; + } + uVar3 = uVar3 + 1; + puVar2 = puVar2 + 10; + } while (uVar3 < uVar1); + } +switchD_18001737a_default: + return; +} + + +================================================================== + +### EXPORT FUNC 1800175a0 (194 bytes) name=FUN_1800175a0 + +void FUN_1800175a0(longlong param_1) + +{ + ushort uVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + ushort *puVar6; + ushort *puVar7; + + if (*(int *)(param_1 + 0x47950) == 0) { + uVar3 = -*(int *)(param_1 + 0x47948) >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if ((int)uVar3 < 0) { + uVar3 = 0; + } + } + else { + iVar2 = (DAT_180099094 - DAT_180099090) * 0x9f0; + iVar2 = ((int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc) + DAT_180099090; + if (iVar2 < 0) { + iVar2 = 0; + } + uVar3 = iVar2 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar2 = *(int *)(param_1 + 0x47938); + puVar7 = *(ushort **)(param_1 + 0x278); + puVar6 = *(ushort **)(param_1 + 0x270); + if (iVar2 != 0) { + do { + uVar1 = *puVar7; + puVar7 = puVar7 + 1; + iVar4 = ((uint)*puVar6 - (uint)uVar1) + (uVar3 & 0xffff); + iVar5 = 0; + if ((-1 < iVar4) && (iVar5 = iVar4, 0xfffe < iVar4)) { + iVar5 = 0xffff; + } + *puVar6 = (ushort)iVar5; + puVar6 = puVar6 + 1; + iVar2 = iVar2 + -1; + } while (iVar2 != 0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180017670 (249 bytes) name=FUN_180017670 + +undefined8 FUN_180017670(longlong param_1,int *param_2,ulonglong param_3,int param_4) + +{ + float fVar1; + int iVar2; + DWORD dwErrCode; + uint uVar3; + uint uVar4; + ushort *puVar5; + + if ((*(int *)(param_1 + 0x234) != 0) && (param_2 != (int *)0x0)) { + uVar4 = *(uint *)(param_1 + 0x47938); + if (((uint)(param_3 >> 2) & 0x3fffffff) < uVar4) { + uVar4 = (uint)(param_3 >> 2) & 0x3fffffff; + } + puVar5 = *(ushort **)(param_1 + 0x270); + fVar1 = *(float *)(param_1 + 0xd4); + uVar3 = 0; + if (uVar4 != 0) { + do { + iVar2 = FUN_180016290(param_1,(uint)*puVar5,uVar3,1); + puVar5 = puVar5 + 1; + if ((param_4 != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar2 = FUN_180015b90(param_1,iVar2,fVar1); + } + uVar3 = uVar3 + 1; + *param_2 = iVar2; + param_2 = param_2 + 1; + } while (uVar3 < uVar4); + } + return 1; + } + dwErrCode = 0xe4ae0001; + if (*(int *)(param_1 + 0x234) == 0) { + dwErrCode = 0xe4ae0005; + } + SetLastError(dwErrCode); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180017770 (1228 bytes) name=FUN_180017770 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +void FUN_180017770(longlong param_1,undefined8 param_2) + +{ + undefined2 *puVar1; + longlong lVar2; + ushort uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + undefined2 *puVar19; + undefined2 *puVar20; + undefined4 *puVar21; + longlong lVar22; + longlong lVar23; + undefined2 uVar24; + uint uVar25; + int iVar26; + ulonglong uVar27; + float *pfVar28; + int iVar29; + ulonglong uVar30; + longlong lVar31; + ulonglong uVar32; + ulonglong uVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + undefined4 uVar39; + float fVar40; + float afStack_40068 [4]; + float afStack_40058 [65548]; + + uVar39 = (undefined4)((ulonglong)param_2 >> 0x20); + puVar20 = *(undefined2 **)(param_1 + 0x270); + uVar30 = 0; + puVar19 = (undefined2 *)(*(longlong *)(param_1 + 0x290) + 2); + uVar18 = 0; + uVar32 = uVar30; + if (*(int *)(param_1 + 0x41fc4) != -6) { + do { + uVar24 = *puVar20; + puVar19[2] = uVar24; + puVar19[1] = uVar24; + *puVar19 = uVar24; + memcpy(puVar19 + 3,puVar20,(ulonglong)*(uint *)(param_1 + 0x41fc0) * 2); + puVar1 = puVar19 + (ulonglong)*(uint *)(param_1 + 0x41fc0) + 3; + uVar24 = puVar20[*(uint *)(param_1 + 0x41fc0) - 1]; + puVar19 = puVar1 + 3; + uVar17 = (uint)uVar32; + puVar1[2] = uVar24; + puVar1[1] = uVar24; + *puVar1 = uVar24; + if ((2 < (int)uVar17) && (uVar17 <= *(int *)(param_1 + 0x41fc4) + 1U)) { + puVar20 = puVar20 + *(uint *)(param_1 + 0x41fc0); + } + uVar32 = (ulonglong)(uVar17 + 1); + } while (uVar17 + 1 < *(int *)(param_1 + 0x41fc4) + 6U); + } + fVar34 = DAT_18005e70c; + uVar32 = 0; + if (DAT_18009a450 == 0.0) { + uVar33 = uVar30; + puVar21 = &DAT_18009a450; + do { + uVar32 = FUN_180050fc0(CONCAT44((int)(uVar32 >> 0x20),(float)(int)uVar33 / fVar34)); + uVar17 = (int)uVar33 - 1; + uVar33 = (ulonglong)uVar17; + *puVar21 = (int)uVar32; + fVar40 = DAT_18005e708; + puVar21 = puVar21 + 1; + } while (-0x13 < (int)uVar17); + uVar32 = uVar30; + puVar21 = &DAT_18009a4a0; + do { + fVar34 = (float)(int)uVar32; + uVar33 = FUN_180050fc0(CONCAT44(uVar39,fVar34 * fVar40 * fVar34)); + uVar17 = (int)uVar32 + 1; + uVar32 = (ulonglong)uVar17; + *puVar21 = (int)uVar33; + puVar21 = puVar21 + 1; + } while ((int)uVar17 < 0x10001); + } + uVar17 = *(int *)(param_1 + 0x42010) - *(int *)(param_1 + 0x42014); + uVar32 = uVar30; + if (3 < (int)(uVar17 + 1)) { + uVar25 = 0x20000; + uVar18 = uVar17 + 1 >> 2; + uVar27 = (ulonglong)uVar18; + uVar18 = uVar18 * 4; + uVar33 = uVar30; + do { + uVar32 = uVar33 + 4; + afStack_40068[uVar32] = + (float)(&DAT_18009a4a0)[(ulonglong)(uVar25 - 0x20000) / (ulonglong)uVar17]; + afStack_40068[uVar33 + 5] = + (float)(&DAT_18009a4a0)[(ulonglong)(uVar25 - 0x10000) / (ulonglong)uVar17]; + afStack_40068[uVar33 + 6] = (float)(&DAT_18009a4a0)[(ulonglong)uVar25 / (ulonglong)uVar17]; + uVar4 = uVar25 + 0x10000; + uVar25 = uVar25 + 0x40000; + uVar27 = uVar27 - 1; + afStack_40068[uVar33 + 7] = (float)(&DAT_18009a4a0)[(ulonglong)uVar4 / (ulonglong)uVar17]; + uVar33 = uVar32; + } while (uVar27 != 0); + if (uVar17 < uVar18) goto LAB_1800179bd; + } + uVar25 = uVar18 << 0x10; + uVar33 = (ulonglong)((uVar17 - uVar18) + 1); + pfVar28 = afStack_40068 + uVar32 + 4; + do { + uVar32 = (ulonglong)uVar25; + uVar25 = uVar25 + 0x10000; + uVar33 = uVar33 - 1; + *pfVar28 = (float)(&DAT_18009a4a0)[uVar32 / uVar17]; + pfVar28 = pfVar28 + 1; + } while (uVar33 != 0); +LAB_1800179bd: + uVar18 = *(uint *)(param_1 + 0x41fc0); + puVar20 = *(undefined2 **)(param_1 + 0x288); + lVar2 = *(longlong *)(param_1 + 0x290) + 8 + (ulonglong)(uVar18 * 3 + 0x12) * 2; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar17 = 0; + iVar29 = (int)uVar30; + if (uVar18 != 0) { + do { + iVar26 = uVar18 + 6; + fVar34 = 0.0; + fVar40 = 0.0; + lVar31 = -3; + uVar18 = iVar26 * (iVar29 + -3); + uVar3 = *(ushort *)(lVar2 + (ulonglong)(iVar26 * iVar29 + uVar17) * 2); + uVar25 = (uint)uVar3; + do { + lVar23 = (ulonglong)uVar18 + (longlong)(int)uVar17; + lVar22 = lVar31 * lVar31; + uVar7 = (uint)*(ushort *)(lVar2 + -6 + lVar23 * 2); + uVar4 = uVar25 - uVar7; + uVar10 = (int)uVar4 >> 0x1f; + uVar8 = (uint)*(ushort *)(lVar2 + -4 + lVar23 * 2); + uVar5 = uVar3 - uVar8; + uVar11 = (int)uVar5 >> 0x1f; + uVar9 = (uint)*(ushort *)(lVar2 + -2 + lVar23 * 2); + uVar6 = uVar25 - uVar9; + uVar12 = (int)uVar6 >> 0x1f; + fVar35 = afStack_40068[(longlong)(int)((uVar5 ^ uVar11) - uVar11) + 4] * + *(float *)(lVar22 * 4 + 0x18009a460); + fVar36 = afStack_40068[(longlong)(int)((uVar6 ^ uVar12) - uVar12) + 4] * + *(float *)(lVar22 * 4 + 0x18009a454); + uVar11 = (uint)*(ushort *)(lVar2 + lVar23 * 2); + uVar5 = uVar25 - uVar11; + uVar13 = (int)uVar5 >> 0x1f; + uVar12 = (uint)*(ushort *)(lVar2 + 2 + lVar23 * 2); + uVar6 = uVar25 - uVar12; + uVar14 = (int)uVar6 >> 0x1f; + fVar37 = afStack_40068[(longlong)(int)((uVar6 ^ uVar14) - uVar14) + 4] * + *(float *)(lVar22 * 4 + 0x18009a454); + uVar14 = (uint)*(ushort *)(lVar2 + 4 + lVar23 * 2); + uVar6 = uVar25 - uVar14; + uVar15 = (int)uVar6 >> 0x1f; + fVar38 = afStack_40068[(longlong)(int)((uVar6 ^ uVar15) - uVar15) + 4] * + *(float *)(lVar22 * 4 + 0x18009a460); + uVar15 = (uint)*(ushort *)(lVar2 + 6 + lVar23 * 2); + uVar6 = uVar25 - uVar15; + lVar31 = lVar31 + 1; + uVar16 = (int)uVar6 >> 0x1f; + uVar18 = uVar18 + iVar26; + fVar40 = fVar40 + afStack_40068[(longlong)(int)((uVar4 ^ uVar10) - uVar10) + 4] * + (float)(&DAT_18009a474)[lVar22] + fVar35 + fVar36 + + afStack_40068[(longlong)(int)((uVar5 ^ uVar13) - uVar13) + 4] * + (&DAT_18009a450)[lVar22] + fVar37 + fVar38 + + afStack_40068[(longlong)(int)((uVar6 ^ uVar16) - uVar16) + 4] * + (float)(&DAT_18009a474)[lVar22]; + fVar34 = fVar34 + (float)uVar7 * + afStack_40068[(longlong)(int)((uVar4 ^ uVar10) - uVar10) + 4] * + (float)(&DAT_18009a474)[lVar22] + (float)uVar8 * fVar35 + + (float)uVar9 * fVar36 + + (float)uVar11 * + afStack_40068[(longlong)(int)((uVar5 ^ uVar13) - uVar13) + 4] * + (&DAT_18009a450)[lVar22] + (float)uVar12 * fVar37 + (float)uVar14 * fVar38 + + (float)uVar15 * + afStack_40068[(longlong)(int)((uVar6 ^ uVar16) - uVar16) + 4] * + (float)(&DAT_18009a474)[lVar22]; + } while (lVar31 < 4); + iVar26 = (uVar25 - (int)(fVar34 / fVar40)) + 0x8000; + if (iVar26 < 0x10000) { + uVar24 = (undefined2)iVar26; + if (iVar26 < 0) { + uVar24 = 0; + } + } + else { + uVar24 = 0; + } + *puVar20 = uVar24; + uVar17 = uVar17 + 1; + uVar18 = *(uint *)(param_1 + 0x41fc0); + puVar20 = puVar20 + 1; + } while (uVar17 < uVar18); + } + uVar30 = (ulonglong)(iVar29 + 1U); + } while (iVar29 + 1U < *(uint *)(param_1 + 0x41fc4)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180017c40 (905 bytes) name=FUN_180017c40 + +void FUN_180017c40(longlong param_1,int param_2) + +{ + ushort uVar1; + ushort uVar2; + ushort uVar3; + byte bVar4; + int iVar5; + uint uVar6; + ulonglong uVar7; + int iVar8; + ushort *puVar9; + int iVar10; + uint uVar11; + int iVar12; + uint uVar13; + uint uVar14; + uint uVar15; + int *piVar16; + byte *pbVar17; + ushort uVar18; + uint uVar19; + ushort *puVar20; + int *piVar21; + longlong lVar22; + uint local_res18; + + if (param_2 != 0) { + FUN_1800357d0(*(ulonglong **)(param_1 + 0x2a8),0,(ulonglong)*(uint *)(param_1 + 0x47938) << 2); + uVar19 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar19 = uVar19 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar18 = (ushort)uVar19; + if (0xffff < uVar19) { + uVar18 = 0xffff; + } + } + else { + iVar5 = FUN_180015940(param_1,30000,uVar19); + iVar5 = iVar5 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < iVar5) { + iVar5 = 0xffff; + } + uVar18 = (ushort)iVar5; + } + local_res18 = 0; + uVar19 = ((uint)uVar18 * param_2 & 0x7fffffff) >> 7; + if (*(int *)(param_1 + 0x41fc4) != 6) { + do { + iVar5 = *(int *)(param_1 + 0x41fc0) + -6; + iVar12 = *(int *)(param_1 + 0x41fc0) * local_res18; + if (iVar5 != 0) { + lVar22 = (longlong)iVar12 * 2; + do { + uVar11 = (uint)*(ushort *)(lVar22 + 2 + *(longlong *)(param_1 + 0x270)); + puVar20 = (ushort *)(lVar22 + *(longlong *)(param_1 + 0x270)); + piVar16 = (int *)(*(longlong *)(param_1 + 0x2a8) + (longlong)iVar12 * 4); + uVar15 = (uint)*puVar20; + puVar9 = puVar20; + uVar13 = 0; + iVar10 = 4; + do { + iVar8 = iVar10; + uVar18 = *puVar9; + uVar6 = (uint)uVar18; + uVar14 = uVar6; + if ((uVar18 < uVar11 || uVar6 == uVar11) && (uVar14 = uVar11, uVar6 < uVar15)) { + uVar15 = uVar6; + } + uVar1 = puVar9[2]; + uVar6 = (uint)uVar1; + uVar11 = uVar6; + if ((uVar1 < uVar14 || uVar6 == uVar14) && (uVar11 = uVar14, uVar6 < uVar15)) { + uVar15 = uVar6; + } + uVar2 = puVar9[4]; + uVar6 = (uint)uVar2; + uVar14 = uVar6; + if ((uVar2 < uVar11 || uVar6 == uVar11) && (uVar14 = uVar11, uVar6 < uVar15)) { + uVar15 = uVar6; + } + uVar3 = puVar9[6]; + uVar13 = uVar13 + uVar18 + (uint)uVar1 + (uint)uVar2 + (uint)uVar3; + uVar6 = (uint)uVar3; + uVar11 = uVar6; + if ((uVar3 < uVar14 || uVar6 == uVar14) && (uVar11 = uVar14, uVar6 < uVar15)) { + uVar15 = uVar6; + } + puVar9 = puVar9 + (ulonglong)(*(int *)(param_1 + 0x41fc0) * 2 - 8) + 8; + iVar10 = iVar8 + -1; + } while (iVar10 != 0); + if (uVar19 <= (uVar11 - uVar15) * 0x20) { + uVar13 = uVar13 >> 4; + uVar14 = uVar19; + if (uVar19 < uVar11 - uVar13) { + uVar14 = uVar11 - uVar13; + } + if (uVar14 < uVar13 - uVar15) { + uVar14 = uVar13 - uVar15; + } + iVar8 = iVar8 + 3; + do { + iVar10 = (int)(0x8000 / (ulonglong)uVar14); + *piVar16 = *piVar16 + (*puVar20 - uVar13) * iVar10; + piVar16[2] = piVar16[2] + (puVar20[2] - uVar13) * iVar10; + piVar16[4] = piVar16[4] + (puVar20[4] - uVar13) * iVar10; + piVar16[6] = piVar16[6] + (puVar20[6] - uVar13) * iVar10; + iVar8 = iVar8 + -1; + uVar7 = (ulonglong)(*(int *)(param_1 + 0x41fc0) * 2 - 8); + puVar20 = puVar20 + uVar7 + 8; + piVar16 = piVar16 + uVar7 + 8; + } while (iVar8 != 0); + } + iVar12 = iVar12 + 1; + lVar22 = lVar22 + 2; + iVar5 = iVar5 + -1; + } while (iVar5 != 0); + } + local_res18 = local_res18 + 1; + } while (local_res18 < *(int *)(param_1 + 0x41fc4) - 6U); + } + uVar19 = *(uint *)(param_1 + 0x41fc4); + pbVar17 = *(byte **)(param_1 + 0x2a0); + piVar16 = *(int **)(param_1 + 0x2a8); + uVar7 = 0; + if (uVar19 != 0) { + uVar13 = *(uint *)(param_1 + 0x41fc0); + do { + uVar11 = (uint)uVar7; + uVar15 = 4; + if (uVar11 < 6) { + uVar15 = (int)(uVar7 >> 1) + 1; + } + else if (uVar19 < uVar11 + 7) { + uVar15 = (uVar19 - uVar11) + 1 >> 1; + } + uVar7 = 0; + piVar21 = piVar16; + if (uVar13 != 0) { + do { + uVar14 = (uint)uVar7; + uVar19 = 4; + if (uVar14 < 6) { + uVar19 = (int)(uVar7 >> 1) + 1; + } + else if (uVar13 < uVar14 + 7) { + uVar19 = (uVar13 - uVar14) + 1 >> 1; + } + piVar16 = piVar21 + 1; + iVar5 = param_2 * *piVar21; + if (uVar19 * uVar15 == 0x10) { + iVar5 = (int)((iVar5 >> 0x1f & 0x7ffffU) + iVar5) >> 0x13; + } + else { + iVar5 = iVar5 / (int)(uVar19 * uVar15 * 0x8000); + } + iVar5 = (uint)*pbVar17 + iVar5; + if (iVar5 < 0x100) { + bVar4 = (byte)iVar5; + if (iVar5 < 0) { + bVar4 = 0; + } + } + else { + bVar4 = 0xff; + } + *pbVar17 = bVar4; + uVar13 = *(uint *)(param_1 + 0x41fc0); + uVar7 = (ulonglong)(uVar14 + 1); + pbVar17 = pbVar17 + 1; + piVar21 = piVar16; + } while (uVar14 + 1 < uVar13); + } + uVar19 = *(uint *)(param_1 + 0x41fc4); + uVar7 = (ulonglong)(uVar11 + 1); + } while (uVar11 + 1 < uVar19); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180017fd0 (1054 bytes) name=FUN_180017fd0 + +void FUN_180017fd0(longlong param_1,int param_2) + +{ + ushort uVar1; + ushort uVar2; + ushort uVar3; + ushort uVar4; + byte bVar5; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + ulonglong uVar10; + ushort *puVar11; + int *piVar12; + ushort *puVar13; + uint uVar14; + uint uVar15; + byte *pbVar16; + int iVar17; + uint uVar18; + uint local_res18; + + if (param_2 != 0) { + uVar6 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar6 = uVar6 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (0xffff < uVar6) { + uVar6 = 0xffff; + } + } + else { + iVar7 = FUN_180015940(param_1,30000,uVar6); + uVar6 = iVar7 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < (int)uVar6) { + uVar6 = 0xffff; + } + } + uVar6 = ((uVar6 & 0xffff) * param_2 & 0x7fffffff) >> 7; + local_res18 = 0; + do { + iVar17 = *(int *)(param_1 + 0x41fc0); + piVar12 = (int *)(*(longlong *)(param_1 + 0x2a8) + 0xc + + (ulonglong)((local_res18 + 3) * iVar17) * 4); + iVar7 = iVar17 + -6; + puVar13 = (ushort *)(*(longlong *)(param_1 + 0x270) + (ulonglong)(iVar17 * local_res18) * 2); + if (iVar7 != 0) { + do { + uVar9 = (uint)*puVar13; + uVar14 = (uint)puVar13[1]; + iVar17 = 4; + puVar11 = puVar13; + uVar18 = 0; + do { + uVar1 = *puVar11; + uVar8 = (uint)uVar1; + uVar15 = uVar8; + if ((uVar1 < uVar14 || uVar8 == uVar14) && (uVar15 = uVar14, uVar8 < uVar9)) { + uVar9 = uVar8; + } + uVar2 = puVar11[2]; + uVar8 = (uint)uVar2; + uVar14 = uVar8; + if ((uVar2 < uVar15 || uVar8 == uVar15) && (uVar14 = uVar15, uVar8 < uVar9)) { + uVar9 = uVar8; + } + uVar3 = puVar11[4]; + uVar8 = (uint)uVar3; + uVar15 = uVar8; + if ((uVar3 < uVar14 || uVar8 == uVar14) && (uVar15 = uVar14, uVar8 < uVar9)) { + uVar9 = uVar8; + } + uVar4 = puVar11[6]; + uVar18 = uVar18 + uVar1 + (uint)uVar2 + (uint)uVar3 + (uint)uVar4; + uVar8 = (uint)uVar4; + uVar14 = uVar8; + if ((uVar4 < uVar15 || uVar8 == uVar15) && (uVar14 = uVar15, uVar8 < uVar9)) { + uVar9 = uVar8; + } + puVar11 = puVar11 + (ulonglong)(*(int *)(param_1 + 0x41fc0) * 2 - 8) + 8; + iVar17 = iVar17 + -1; + } while (iVar17 != 0); + if ((uVar14 - uVar9) * 0x20 < uVar6) { + *piVar12 = 0; + } + else { + uVar18 = uVar18 >> 4; + uVar15 = uVar6; + if (uVar6 < uVar14 - uVar18) { + uVar15 = uVar14 - uVar18; + } + if (uVar15 < uVar18 - uVar9) { + uVar15 = uVar18 - uVar9; + } + *piVar12 = (puVar13[(ulonglong)(uint)(*(int *)(param_1 + 0x41fc0) * 3) + 3] - uVar18) * + (int)(0x8000 / (ulonglong)uVar15); + } + piVar12 = piVar12 + 1; + puVar13 = puVar13 + 1; + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + } + local_res18 = local_res18 + 2; + } while (local_res18 <= *(int *)(param_1 + 0x41fc4) - 7U); + local_res18 = 1; + if (*(int *)(param_1 + 0x41fc4) != 7) { + do { + iVar17 = *(int *)(param_1 + 0x41fc0); + piVar12 = (int *)(*(longlong *)(param_1 + 0x2a8) + 0xc + + (ulonglong)((local_res18 + 3) * iVar17) * 4); + iVar7 = iVar17 + -6; + puVar13 = (ushort *)(*(longlong *)(param_1 + 0x270) + (ulonglong)(iVar17 * local_res18) * 2) + ; + if (iVar7 != 0) { + do { + uVar9 = (uint)*puVar13; + uVar14 = (uint)puVar13[1]; + iVar17 = 4; + puVar11 = puVar13; + uVar18 = 0; + do { + uVar1 = *puVar11; + uVar8 = (uint)uVar1; + uVar15 = uVar8; + if ((uVar1 < uVar14 || uVar8 == uVar14) && (uVar15 = uVar14, uVar8 < uVar9)) { + uVar9 = uVar8; + } + uVar2 = puVar11[2]; + uVar8 = (uint)uVar2; + uVar14 = uVar8; + if ((uVar2 < uVar15 || uVar8 == uVar15) && (uVar14 = uVar15, uVar8 < uVar9)) { + uVar9 = uVar8; + } + uVar3 = puVar11[4]; + uVar8 = (uint)uVar3; + uVar15 = uVar8; + if ((uVar3 < uVar14 || uVar8 == uVar14) && (uVar15 = uVar14, uVar8 < uVar9)) { + uVar9 = uVar8; + } + uVar4 = puVar11[6]; + uVar18 = uVar18 + uVar1 + (uint)uVar2 + (uint)uVar3 + (uint)uVar4; + uVar8 = (uint)uVar4; + uVar14 = uVar8; + if ((uVar4 < uVar15 || uVar8 == uVar15) && (uVar14 = uVar15, uVar8 < uVar9)) { + uVar9 = uVar8; + } + puVar11 = puVar11 + (ulonglong)(*(int *)(param_1 + 0x41fc0) * 2 - 8) + 8; + iVar17 = iVar17 + -1; + } while (iVar17 != 0); + if ((uVar14 - uVar9) * 0x20 < uVar6) { + *piVar12 = 0; + } + else { + uVar18 = uVar18 >> 4; + uVar15 = uVar6; + if (uVar6 < uVar14 - uVar18) { + uVar15 = uVar14 - uVar18; + } + if (uVar15 < uVar18 - uVar9) { + uVar15 = uVar18 - uVar9; + } + *piVar12 = (puVar13[(ulonglong)(uint)(*(int *)(param_1 + 0x41fc0) * 3) + 3] - uVar18) + * (int)(0x8000 / (ulonglong)uVar15); + } + piVar12 = piVar12 + 1; + puVar13 = puVar13 + 1; + iVar7 = iVar7 + -1; + } while (iVar7 != 0); + } + local_res18 = local_res18 + 2; + } while (local_res18 <= *(int *)(param_1 + 0x41fc4) - 7U); + } + uVar6 = 3; + if (3 < *(int *)(param_1 + 0x41fc4) - 3U) { + do { + uVar10 = (ulonglong)(*(int *)(param_1 + 0x41fc0) * uVar6); + piVar12 = (int *)(*(longlong *)(param_1 + 0x2a8) + 0xc + uVar10 * 4); + pbVar16 = (byte *)(uVar10 + 3 + *(longlong *)(param_1 + 0x2a0)); + for (iVar7 = *(int *)(param_1 + 0x41fc0) + -6; iVar7 != 0; iVar7 = iVar7 + -1) { + iVar17 = *piVar12; + piVar12 = piVar12 + 1; + iVar17 = ((int)(iVar17 * param_2 + (iVar17 * param_2 >> 0x1f & 0x7fffU)) >> 0xf) + + (uint)*pbVar16; + if (iVar17 < 0x100) { + bVar5 = (byte)iVar17; + if (iVar17 < 0) { + bVar5 = 0; + } + } + else { + bVar5 = 0xff; + } + *pbVar16 = bVar5; + pbVar16 = pbVar16 + 1; + } + uVar6 = uVar6 + 1; + } while (uVar6 < *(int *)(param_1 + 0x41fc4) - 3U); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800183f0 (254 bytes) name=FUN_1800183f0 + +void FUN_1800183f0(longlong param_1,int param_2,int param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if ((param_2 < 1) || (4 < param_2)) { + *(undefined4 *)(param_1 + 0x41fe8) = 0; + *(undefined4 *)(param_1 + 0x41fec) = 0; + *(undefined4 *)(param_1 + 0x41ff0) = 0; + } + else { + uVar2 = *(uint *)(param_1 + 0x41fc0); + uVar1 = *(uint *)(param_1 + 0x41fc4); + uVar4 = 1 << ((byte)param_2 & 0x1f); + *(int *)(param_1 + 0x41fe8) = param_2; + uVar3 = param_3 - uVar2 / (uVar4 * 2); + if ((int)uVar3 < 0) { + uVar3 = 0; + } + uVar5 = param_4 - uVar1 / (uVar4 * 2); + if ((int)uVar5 < 0) { + uVar5 = 0; + } + uVar2 = (uVar2 - uVar2 / uVar4) - 2; + if (uVar3 < uVar2) { + uVar2 = uVar3; + } + *(uint *)(param_1 + 0x41fec) = uVar2 & 0xfffffffe; + uVar2 = (uVar1 - uVar1 / uVar4) - 1; + if (uVar5 < uVar2) { + uVar2 = uVar5; + } + *(uint *)(param_1 + 0x41ff0) = uVar2; + } + /* WARNING: Could not recover jumptable at 0x0001800184e7. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800184f0 (364 bytes) name=FUN_1800184f0 + +void FUN_1800184f0(longlong param_1) + +{ + ushort *puVar1; + void *_Src; + ushort uVar2; + ushort uVar3; + void *_Dst; + uint *puVar4; + ushort *puVar5; + ushort *puVar6; + int iVar7; + uint uVar8; + uint uVar9; + + _Dst = *(void **)(param_1 + 0x288); + _Src = (void *)(*(longlong *)(param_1 + 0x270) + + ((ulonglong)(uint)(*(int *)(param_1 + 0x41ff0) * *(int *)(param_1 + 0x41fc0)) + + (ulonglong)*(uint *)(param_1 + 0x41fec)) * 2); + for (iVar7 = (*(uint *)(param_1 + 0x41fc4) >> 1) + 1; iVar7 != 0; iVar7 = iVar7 + -1) { + memcpy(_Dst,_Src,(ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 1) + 2) * 2); + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0) * 2); + _Dst = (void *)((longlong)_Dst + (ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 1) + 2) * 2); + } + puVar6 = *(ushort **)(param_1 + 0x288); + puVar4 = *(uint **)(param_1 + 0x270); + for (uVar8 = *(uint *)(param_1 + 0x41fc4) >> 1; uVar8 != 0; uVar8 = uVar8 - 1) { + for (uVar9 = *(uint *)(param_1 + 0x41fc0) >> 1; uVar9 != 0; uVar9 = uVar9 - 1) { + *puVar4 = ((int)((uint)puVar6[1] + (uint)*puVar6) >> 1) << 0x10 | (uint)*puVar6; + puVar6 = puVar6 + 1; + puVar4 = puVar4 + 1; + } + puVar5 = puVar6 + 2; + puVar6 = puVar6 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 1); + for (uVar9 = *(uint *)(param_1 + 0x41fc0) >> 1; uVar9 != 0; uVar9 = uVar9 - 1) { + uVar2 = *puVar6; + uVar3 = *puVar5; + puVar1 = puVar5 + 1; + puVar6 = puVar6 + 1; + puVar5 = puVar5 + 1; + *puVar4 = ((int)((uint)*puVar1 + (uint)*puVar6 + (uint)uVar3 + (uint)uVar2) >> 2) << 0x10 | + (int)((uint)uVar3 + (uint)uVar2) >> 1; + puVar4 = puVar4 + 1; + } + puVar6 = puVar6 + 2; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180018660 (956 bytes) name=FUN_180018660 + +void FUN_180018660(longlong param_1) + +{ + ushort *puVar1; + void *_Src; + ushort uVar2; + ushort uVar3; + void *_Dst; + uint *puVar4; + ushort *puVar5; + int iVar6; + ushort *puVar7; + uint uVar8; + uint uVar9; + + _Dst = *(void **)(param_1 + 0x288); + _Src = (void *)(*(longlong *)(param_1 + 0x270) + + ((ulonglong)(uint)(*(int *)(param_1 + 0x41ff0) * *(int *)(param_1 + 0x41fc0)) + + (ulonglong)*(uint *)(param_1 + 0x41fec)) * 2); + for (iVar6 = (*(uint *)(param_1 + 0x41fc4) >> 2) + 1; iVar6 != 0; iVar6 = iVar6 + -1) { + memcpy(_Dst,_Src,(ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 2) + 2) * 2); + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0) * 2); + _Dst = (void *)((longlong)_Dst + (ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 2) + 2) * 2); + } + puVar7 = *(ushort **)(param_1 + 0x288); + puVar4 = *(uint **)(param_1 + 0x270); + for (uVar9 = *(uint *)(param_1 + 0x41fc4) >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + uVar2 = *puVar7; + *puVar4 = ((int)((uint)uVar2 + (uint)uVar2 * 2 + (uint)puVar7[1]) >> 2) << 0x10 | (uint)uVar2; + uVar2 = puVar7[1]; + puVar4[1] = ((int)((uint)*puVar7 + (uint)uVar2 * 2 + (uint)uVar2) >> 2) << 0x10 | + (int)((uint)uVar2 + (uint)*puVar7) >> 1; + puVar7 = puVar7 + 1; + puVar4 = puVar4 + 2; + } + puVar5 = puVar7 + 2; + puVar7 = puVar7 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 2); + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + iVar6 = (uint)*puVar7 + (uint)*puVar7 * 2; + *puVar4 = ((int)(((uint)puVar7[1] + (uint)*puVar5 + iVar6) * 3 + (uint)puVar5[1]) >> 4) << + 0x10 | (int)((uint)*puVar5 + iVar6) >> 2; + uVar2 = puVar7[1]; + uVar3 = puVar5[1]; + puVar4[1] = ((int)((uint)*puVar5 + + ((uint)uVar3 + (uint)uVar2 * 2 + (uint)uVar2 + (uint)*puVar7) * 3) >> 4) << + 0x10 | (int)((uint)uVar3 + ((uint)uVar2 + (uint)*puVar7) * 3 + (uint)*puVar5) >> 3 + ; + puVar5 = puVar5 + 1; + puVar7 = puVar7 + 1; + puVar4 = puVar4 + 2; + } + puVar5 = puVar7 + 2; + puVar7 = puVar7 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 2); + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + puVar1 = puVar7 + 1; + *puVar4 = ((int)(((uint)*puVar7 + (uint)*puVar5) * 3 + (uint)puVar5[1] + (uint)*puVar1) >> 3) + << 0x10 | (int)((uint)*puVar7 + (uint)*puVar5) >> 1; + iVar6 = (uint)puVar5[1] + (uint)*puVar1; + puVar4[1] = ((int)((uint)*puVar5 + iVar6 * 3 + (uint)*puVar7) >> 3) << 0x10 | + (int)(iVar6 + (uint)*puVar5 + (uint)*puVar7) >> 2; + puVar5 = puVar5 + 1; + puVar7 = puVar1; + puVar4 = puVar4 + 2; + } + puVar5 = puVar7 + 2; + puVar7 = puVar7 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 2); + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + iVar6 = (uint)*puVar5 + (uint)*puVar5 * 2; + *puVar4 = ((int)(((uint)puVar5[1] + iVar6 + (uint)*puVar7) * 3 + (uint)puVar7[1]) >> 4) << + 0x10 | (int)(iVar6 + (uint)*puVar7) >> 2; + uVar2 = puVar5[1]; + uVar3 = puVar7[1]; + puVar4[1] = ((int)((uint)*puVar7 + + ((uint)uVar3 + (uint)uVar2 * 2 + (uint)uVar2 + (uint)*puVar5) * 3) >> 4) << + 0x10 | (int)((uint)uVar3 + ((uint)uVar2 + (uint)*puVar5) * 3 + (uint)*puVar7) >> 3 + ; + puVar5 = puVar5 + 1; + puVar7 = puVar7 + 1; + puVar4 = puVar4 + 2; + } + puVar7 = puVar7 + 2; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180018a20 (704 bytes) name=FUN_180018a20 + +undefined4 FUN_180018a20(longlong param_1,LPCSTR param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + float fVar2; + int iVar3; + undefined **ppuVar4; + longlong lVar5; + HMODULE pHVar6; + wchar_t *pwVar7; + longlong *plVar8; + wchar_t *_Str; + float local_res8 [2]; + wchar_t *local_res10; + longlong local_res18; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if ((*(uint *)(param_2 + 0x3c) != 0) && (*(uint *)(param_2 + 0x3c) < 0x1a)) { + memcpy((void *)(param_1 + 0x41888),param_2,0x21c); + fVar2 = DAT_18005e700; + if ((*(float *)(param_2 + 0x204) <= 0.0) || (DAT_18005e700 < *(float *)(param_2 + 0x204))) { + memcpy((void *)(param_1 + 0x4195c),param_2 + 0xdc, + (ulonglong)(uint)(*(int *)(param_2 + 0x3c) * 2) << 2); + local_res8[0] = fVar2; + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + _Str = (wchar_t *)(lVar5 + 0x18); + local_res10 = _Str; + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar6 = (HMODULE)FUN_18001fcac(); + if (pHVar6 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_res10,pHVar6,(uint)param_2 & 0xffff); + _Str = local_res10; + } + } + else { + FUN_18000ad80((longlong *)&local_res10,param_2); + _Str = local_res10; + } + iVar3 = *(int *)(_Str + -8); + if ((int)(*(int *)(_Str + -6) - iVar3 | 1U - *(int *)(_Str + -4)) < 0) { + FUN_18000b190((longlong *)&local_res10,iVar3); + _Str = local_res10; + } + FUN_180034160(_Str,(longlong)(iVar3 + 1)); + if ((iVar3 < 0) || (*(int *)(_Str + -6) < iVar3)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Str + -8) = iVar3; + _Str[iVar3] = L'\0'; + if (-1 < *(int *)(_Str + -8)) { + pwVar7 = wcsstr(_Str,L"FILT"); + if ((pwVar7 != (wchar_t *)0x0) && + (iVar3 = (int)((longlong)pwVar7 - (longlong)_Str >> 1), -1 < iVar3)) { + plVar8 = FUN_18000a7c0((longlong *)&local_res10,&local_res18, + (*(int *)(_Str + -8) - iVar3) + -4); + FUN_18000b390((longlong *)&local_res10,plVar8); + LOCK(); + piVar1 = (int *)(local_res18 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res18 + -0x18) + 8))(); + } + _Str = local_res10; + FUN_180033340(local_res10,L"%f",local_res8,param_4); + } + } + if ((local_res8[0] <= 0.0) || (fVar2 < local_res8[0])) { + local_res8[0] = fVar2; + } + *(float *)(param_1 + 0x41a8c) = local_res8[0]; + *(undefined4 *)(param_1 + 0x41a9c) = 0; + LOCK(); + pwVar7 = _Str + -4; + iVar3 = *(int *)pwVar7; + *(int *)pwVar7 = *(int *)pwVar7 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(_Str + -0xc) + 8))(); + } + } + *(undefined4 *)(param_1 + 0x41884) = 1; + *(undefined4 *)(param_1 + 0x41880) = 1; + *(undefined4 *)(param_1 + 0x98) = 0; + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if (*(int *)(param_1 + 0x41880) != 0) { + *(undefined4 *)(param_1 + 0x47950) = *(undefined4 *)(param_1 + 0x4194c); + *(undefined4 *)(param_1 + 0x47954) = *(undefined4 *)(param_1 + 0x41954); + FUN_180015500(param_1,*(int *)(param_1 + 0x41950)); + } + return *(undefined4 *)(param_1 + 0x41880); +} + + +================================================================== + +### EXPORT FUNC 180018cf0 (24 bytes) name=Unwind@180018cf0 + +void Unwind_180018cf0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x78)); + return; +} + + +================================================================== + +### EXPORT FUNC 180018d10 (24 bytes) name=Unwind@180018d10 + +void Unwind_180018d10(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x78)); + return; +} + + +================================================================== + +### EXPORT FUNC 180018d30 (27 bytes) name=Unwind@180018d30 + +void Unwind_180018d30(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x80)); + return; +} + + +================================================================== + +### EXPORT FUNC 180018d50 (306 bytes) name=FUN_180018d50 + +undefined8 FUN_180018d50(longlong param_1,int param_2,uint param_3,undefined4 param_4) + +{ + undefined8 uVar1; + longlong lVar2; + uint uVar3; + char *pcVar4; + undefined4 uVar5; + char *pcVar6; + bool bVar7; + + bVar7 = *(int *)(param_1 + 0x41880) == 0; + if (!bVar7) { + lVar2 = 0x14; + pcVar4 = (char *)(param_1 + 0x41888); + pcVar6 = "Shutterless Default"; + do { + if (lVar2 == 0) break; + lVar2 = lVar2 + -1; + bVar7 = *pcVar4 == *pcVar6; + pcVar4 = pcVar4 + 1; + pcVar6 = pcVar6 + 1; + } while (bVar7); + if (bVar7) { + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + *(undefined4 *)(param_1 + 0x47950) = 0; + *(uint *)(param_1 + 0x4195c) = param_3; + *(undefined4 *)(param_1 + 0x41960) = param_4; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 1; + } + } + uVar3 = 0; + if (((param_2 - 1U < 7) && + ((uVar5 = 1, *(int *)(param_1 + 0x41880) == 0 || + (*(int *)((ulonglong)*(uint *)(param_1 + 0x98) * 0x21c + 0x4194c + param_1) != 0)))) || + ((uVar5 = 0, param_3 != 0 && ((param_3 & param_3 - 1) == 0)))) { + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + *(undefined4 *)(param_1 + 0x47950) = uVar5; + *(int *)(param_1 + 0x47954) = param_2; + *(uint *)(param_1 + 0x47944) = param_3; + *(undefined4 *)(param_1 + 0x47948) = param_4; + do { + if (1 << ((byte)uVar3 & 0x1f) == param_3) { + *(uint *)(param_1 + 0x4794c) = uVar3; + break; + } + uVar3 = uVar3 + 1; + } while (uVar3 < 0x20); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180018e90 (798 bytes) name=FUN_180018e90 + +void FUN_180018e90(longlong param_1) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + byte bVar4; + int iVar5; + ulonglong uVar6; + undefined1 uVar7; + int iVar8; + undefined1 *puVar9; + undefined1 *_Dst; + uint uVar10; + uint uVar11; + void *_Src; + byte *pbVar12; + uint uVar13; + byte *pbVar14; + byte *pbVar15; + uint local_res8; + uint local_res10; + + _Src = *(void **)(param_1 + 0x2a0); + local_res8 = 0; + uVar10 = 0; + puVar9 = (undefined1 *) + (((ulonglong)(uint)((*(int *)(param_1 + 0x41fcc) + 3) * *(int *)(param_1 + 0x41fc8)) - + (ulonglong)(uint)((*(int *)(param_1 + 0x41fc0) + 8) * (*(int *)(param_1 + 0x41fc4) + 1)) + ) + *(longlong *)(param_1 + 0x220)); + _Dst = puVar9; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + memcpy(_Dst,_Src,(ulonglong)*(uint *)(param_1 + 0x41fc0)); + iVar8 = (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 1) + (longlong)_Src) * 2 - + (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 2) + (longlong)_Src); + if (iVar8 < 0x100) { + uVar7 = (undefined1)iVar8; + if (iVar8 < 0) { + uVar7 = 0; + } + } + else { + uVar7 = 0xff; + } + uVar10 = uVar10 + 1; + _Dst[*(uint *)(param_1 + 0x41fc0)] = uVar7; + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0)); + _Dst = _Dst + (*(uint *)(param_1 + 0x41fc0) + 8); + } while (uVar10 < *(uint *)(param_1 + 0x41fc4)); + } + uVar6 = (ulonglong)(*(int *)(param_1 + 0x41fc0) + 8); + pbVar12 = _Dst + -uVar6; + pbVar14 = pbVar12 + -uVar6; + for (iVar8 = *(int *)(param_1 + 0x41fc0) + 1; iVar8 != 0; iVar8 = iVar8 + -1) { + bVar1 = *pbVar12; + bVar2 = *pbVar14; + pbVar14 = pbVar14 + 1; + pbVar12 = pbVar12 + 1; + iVar5 = (uint)bVar1 * 2 - (uint)bVar2; + if (iVar5 < 0x100) { + uVar7 = (undefined1)iVar5; + if (iVar5 < 0) { + uVar7 = 0; + } + } + else { + uVar7 = 0xff; + } + *_Dst = uVar7; + _Dst = _Dst + 1; + } + if (*(int *)(param_1 + 0x41fc4) != 0) { + uVar6 = 0; + local_res10 = 0; + do { + pbVar12 = (byte *)((ulonglong)(uint)((int)(uVar6 >> 1) * *(int *)(param_1 + 0x41fc8)) + + *(longlong *)(param_1 + 0x220)); + pbVar14 = puVar9 + (*(uint *)(param_1 + 0x41fc0) + 8) * local_res8; + for (uVar10 = *(uint *)(param_1 + 0x41fc0) >> 1; uVar10 != 0; uVar10 = uVar10 - 1) { + uVar13 = (uint)*pbVar14; + bVar1 = pbVar14[1]; + uVar6 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + uVar11 = (uint)pbVar14[uVar6 + 8]; + bVar2 = pbVar14[uVar6 + 10]; + bVar3 = pbVar14[2]; + iVar8 = (uint)pbVar14[uVar6 + 9] + (uint)pbVar14[uVar6 + 9]; + pbVar15 = pbVar12 + 3; + *pbVar12 = *pbVar14 / 1; + pbVar12[1] = (byte)(((uint)bVar1 + (uint)bVar1 + uVar13) * 0xab >> 9); + pbVar12[2] = (byte)(((uint)bVar1 + (uint)bVar1 + (uint)bVar3) * 0xab >> 9); + uVar6 = (ulonglong)*(uint *)(param_1 + 0x41fc8); + pbVar15[uVar6 - 3] = (byte)((uVar11 * 2 + uVar13) * 0xab >> 9); + pbVar15[uVar6 - 2] = (byte)((uVar13 + (iVar8 + uVar11 + (uint)bVar1) * 2) * 0x39 >> 9); + pbVar15[uVar6 - 1] = + (byte)(((uint)bVar3 + (iVar8 + (uint)bVar2 + (uint)bVar1) * 2) * 0x39 >> 9); + pbVar12 = pbVar14 + (*(int *)(param_1 + 0x41fc0) * 2 + 0x10); + uVar6 = (ulonglong)(uint)(*(int *)(param_1 + 0x41fc8) * 2); + bVar1 = pbVar12[1]; + bVar3 = *pbVar12; + bVar4 = pbVar12[2]; + pbVar15[uVar6 - 3] = (byte)((uVar11 * 2 + (uint)bVar3) * 0xab >> 9); + pbVar15[uVar6 - 2] = (byte)(((uint)bVar3 + ((uint)bVar1 + iVar8 + uVar11) * 2) * 0x39 >> 9); + pbVar15[uVar6 - 1] = + (byte)(((uint)bVar4 + ((uint)bVar1 + iVar8 + (uint)bVar2) * 2) * 0x39 >> 9); + pbVar12 = pbVar15; + pbVar14 = pbVar14 + 2; + } + local_res8 = local_res8 + 2; + local_res10 = local_res10 + 6; + uVar6 = (ulonglong)local_res10; + } while (local_res8 < *(uint *)(param_1 + 0x41fc4)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800191b0 (1423 bytes) name=FUN_1800191b0 + +/* WARNING: Type propagation algorithm not settling */ + +byte * FUN_1800191b0(longlong param_1) + +{ + int iVar1; + byte bVar2; + byte bVar3; + byte bVar4; + byte bVar5; + byte bVar6; + byte bVar7; + uint uVar8; + byte *pbVar9; + ulonglong uVar10; + undefined1 uVar11; + int iVar12; + int iVar13; + undefined1 *puVar14; + undefined1 *_Dst; + uint uVar15; + uint uVar16; + uint uVar17; + byte *pbVar18; + int iVar19; + byte *pbVar20; + int iVar21; + byte *pbVar22; + byte *pbVar23; + uint uVar24; + uint uVar25; + uint uVar26; + uint uVar27; + uint local_res10; + uint local_res18; + uint local_res20; + + pbVar18 = *(byte **)(param_1 + 0x2a0); + uVar8 = *(int *)(param_1 + 0x41fc0) + 8; + pbVar9 = (byte *)(ulonglong)uVar8; + local_res18 = 0; + uVar15 = 0; + puVar14 = (undefined1 *) + (((ulonglong)(uint)((*(int *)(param_1 + 0x41fcc) + 3) * *(int *)(param_1 + 0x41fc8)) - + (ulonglong)((*(int *)(param_1 + 0x41fc4) + 1) * uVar8)) + + *(longlong *)(param_1 + 0x220)); + _Dst = puVar14; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + memcpy(_Dst,pbVar18,(ulonglong)*(uint *)(param_1 + 0x41fc0)); + iVar12 = (uint)pbVar18[*(int *)(param_1 + 0x41fc0) - 1] * 2 - + (uint)pbVar18[*(int *)(param_1 + 0x41fc0) - 2]; + if (iVar12 < 0x100) { + uVar11 = (undefined1)iVar12; + if (iVar12 < 0) { + uVar11 = 0; + } + } + else { + uVar11 = 0xff; + } + uVar15 = uVar15 + 1; + _Dst[*(uint *)(param_1 + 0x41fc0)] = uVar11; + pbVar9 = (byte *)(ulonglong)*(uint *)(param_1 + 0x41fc0); + pbVar18 = pbVar18 + (longlong)pbVar9; + _Dst = _Dst + (*(uint *)(param_1 + 0x41fc0) + 8); + } while (uVar15 < *(uint *)(param_1 + 0x41fc4)); + } + uVar10 = (ulonglong)(*(int *)(param_1 + 0x41fc0) + 8); + pbVar18 = _Dst + -uVar10; + pbVar20 = pbVar18 + -uVar10; + for (iVar12 = *(int *)(param_1 + 0x41fc0) + 1; iVar12 != 0; iVar12 = iVar12 + -1) { + bVar2 = *pbVar18; + bVar3 = *pbVar20; + pbVar20 = pbVar20 + 1; + pbVar18 = pbVar18 + 1; + uVar8 = (uint)bVar2 * 2 - (uint)bVar3; + if ((int)uVar8 < 0x100) { + pbVar9 = (byte *)(ulonglong)uVar8; + if ((int)uVar8 < 0) { + pbVar9 = (byte *)0x0; + } + } + else { + pbVar9 = (byte *)0xff; + } + *_Dst = (char)pbVar9; + _Dst = _Dst + 1; + } + if (*(int *)(param_1 + 0x41fc4) != 0) { + uVar10 = 0; + local_res20 = 0; + do { + local_res10 = *(uint *)(param_1 + 0x41fc0); + pbVar20 = puVar14 + (local_res10 + 8) * local_res18; + pbVar9 = (byte *)((ulonglong)local_res10 * 0xaaaaaaab & 0xffffffff); + pbVar18 = (byte *)((ulonglong)(uint)((int)(uVar10 / 3) * *(int *)(param_1 + 0x41fc8)) + + *(longlong *)(param_1 + 0x220)); + local_res10 = local_res10 / 3; + if (local_res10 != 0) { + pbVar9 = pbVar20 + 2; + pbVar23 = pbVar18 + 3; + do { + bVar2 = pbVar9[-1]; + bVar3 = *pbVar9; + bVar4 = pbVar9[1]; + bVar5 = *pbVar20; + uVar10 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + iVar19 = (uint)bVar3 + (uint)bVar2 * 4; + bVar6 = pbVar20[uVar10 + 10]; + bVar7 = pbVar20[uVar10 + 9]; + uVar27 = (uint)bVar7; + uVar26 = (uint)pbVar20[uVar10 + 8]; + iVar13 = (uint)bVar5 * 0x19a; + uVar8 = (uint)pbVar20[uVar10 + 0xb]; + iVar21 = (uint)bVar2 + (uint)bVar3 * 4; + *pbVar18 = bVar5 / 1; + uVar15 = (uint)bVar6; + pbVar23[-2] = (byte)((uint)bVar2 * 0x267 + iVar13 >> 10); + pbVar23[-1] = (byte)((uint)(iVar19 * 0xcd) >> 10); + *pbVar23 = (byte)((uint)(iVar21 * 0xcd) >> 10); + pbVar23[1] = (byte)((uint)bVar3 * 0x267 + (uint)bVar4 * 0x19a >> 10); + pbVar22 = pbVar18 + *(uint *)(param_1 + 0x41fc8); + iVar12 = (uint)bVar7 * 4; + *pbVar22 = (byte)(uVar26 * 0x267 + iVar13 >> 10); + iVar1 = (uint)bVar6 * 4; + pbVar22[1] = (byte)((uVar26 + bVar2) * 0xf6 + uVar27 * 0x171 + (uint)bVar5 * 0xa4 >> 10); + pbVar22[2] = (byte)((iVar12 + (uint)bVar6) * 0x7b + iVar19 * 0x52 >> 10); + pbVar22[3] = (byte)((iVar1 + uVar27) * 0x7b + iVar21 * 0x52 >> 10); + pbVar22[4] = (byte)((uVar8 + bVar3) * 0xf6 + uVar15 * 0x171 + (uint)bVar4 * 0xa4 >> 10); + pbVar22 = pbVar20 + (*(int *)(param_1 + 0x41fc0) * 2 + 0x10); + uVar25 = (uint)pbVar22[2]; + uVar17 = (uint)*pbVar22; + uVar16 = (uint)pbVar22[1]; + uVar24 = (uint)pbVar22[3]; + iVar12 = iVar12 + uVar16; + pbVar22 = pbVar18 + (uint)(*(int *)(param_1 + 0x41fc8) * 2); + iVar13 = uVar17 + uVar26 * 4; + *pbVar22 = (byte)((uint)(iVar13 * 0xcd) >> 10); + iVar1 = iVar1 + uVar25; + pbVar22[1] = (byte)((uint)(iVar12 * 0x7b + iVar13 * 0x52) >> 10); + pbVar22[2] = (byte)((uVar25 + (iVar12 + uVar15) * 4) * 0x29 >> 10); + iVar12 = uVar26 + uVar17 * 4; + pbVar22[3] = (byte)((uVar16 + (iVar1 + uVar27) * 4) * 0x29 >> 10); + pbVar22[4] = (byte)((uVar24 + uVar8 * 4) * 0x52 + iVar1 * 0x7b >> 10); + iVar13 = uVar16 * 4 + uVar25; + pbVar22 = pbVar18 + (uint)(*(int *)(param_1 + 0x41fc8) * 3); + *pbVar22 = (byte)((uint)(iVar12 * 0xcd) >> 10); + iVar1 = uVar25 * 4 + uVar16; + pbVar22[1] = (byte)((uVar16 * 4 + uVar27) * 0x7b + iVar12 * 0x52 >> 10); + pbVar22[2] = (byte)((uVar15 + (iVar13 + uVar27) * 4) * 0x29 >> 10); + pbVar22[3] = (byte)((uVar27 + (iVar1 + uVar15) * 4) * 0x29 >> 10); + pbVar22[4] = (byte)((uVar8 + uVar24 * 4) * 0x52 + (uVar25 * 4 + uVar15) * 0x7b >> 10); + pbVar22 = pbVar20 + (*(int *)(param_1 + 0x41fc0) * 3 + 0x18); + bVar2 = *pbVar22; + uVar8 = (uint)pbVar22[1]; + uVar15 = (uint)pbVar22[2]; + bVar3 = pbVar22[3]; + pbVar20 = pbVar20 + 3; + pbVar22 = pbVar18 + (uint)(*(int *)(param_1 + 0x41fc8) << 2); + *pbVar22 = (byte)((uint)bVar2 * 0x19a + uVar17 * 0x267 >> 10); + pbVar22[1] = (byte)((uVar8 + uVar17) * 0xf6 + uVar16 * 0x171 + (uint)bVar2 * 0xa4 >> 10); + pbVar22[2] = (byte)((uVar15 + uVar8 * 4) * 0x52 + iVar13 * 0x7b >> 10); + pbVar22[3] = (byte)((uVar8 + uVar15 * 4) * 0x52 + iVar1 * 0x7b >> 10); + pbVar18 = pbVar18 + 5; + pbVar22[4] = (byte)((uVar15 + uVar24) * 0xf6 + uVar25 * 0x171 + (uint)bVar3 * 0xa4 >> 10); + pbVar9 = pbVar9 + 3; + pbVar23 = pbVar23 + 5; + local_res10 = local_res10 - 1; + } while (local_res10 != 0); + } + local_res18 = local_res18 + 3; + local_res20 = local_res20 + 0xf; + uVar10 = (ulonglong)local_res20; + } while (local_res18 < *(uint *)(param_1 + 0x41fc4)); + } + return pbVar9; +} + + +================================================================== + +### EXPORT FUNC 180019740 (1000 bytes) name=FUN_180019740 + +void FUN_180019740(longlong param_1) + +{ + byte *pbVar1; + byte bVar2; + byte bVar3; + int iVar4; + int iVar5; + int iVar6; + longlong lVar7; + longlong lVar8; + longlong lVar9; + longlong lVar10; + longlong lVar11; + longlong lVar12; + int iVar13; + longlong lVar14; + int iVar15; + int iVar16; + int local_res10; + int local_res18; + + iVar4 = *(int *)(param_1 + 0x41fc4); + iVar5 = *(int *)(param_1 + 0x41fc0); + lVar7 = (longlong)iVar5; + lVar9 = *(longlong *)(param_1 + 0x2a0); + lVar10 = *(longlong *)(param_1 + 0x220); + if (1 < iVar4) { + local_res18 = 1; + iVar15 = 0; + local_res10 = 0; + do { + if (2 < iVar5) { + iVar13 = 0; + iVar16 = iVar15; + do { + lVar11 = (longlong)iVar16; + bVar2 = *(byte *)(lVar11 + 1 + lVar9); + iVar16 = iVar16 + 2; + lVar14 = (longlong)(iVar13 / 2 + iVar15); + lVar8 = lVar7 + lVar11; + *(uint *)(lVar10 + lVar14 * 4) = + ((((int)((uint)*(byte *)(lVar11 + 2 + lVar9) + (uint)bVar2) >> 1) * 0x100 + + (uint)bVar2) * 0x100 + ((int)((uint)*(byte *)(lVar11 + lVar9) + (uint)bVar2) >> 1)) + * 0x100 + (uint)*(byte *)(lVar11 + lVar9); + bVar2 = *(byte *)(lVar8 + 1 + lVar9); + bVar3 = *(byte *)(lVar11 + 1 + lVar9); + *(int *)(lVar10 + (lVar14 + iVar5 / 2) * 4) = + ((((int)((uint)*(byte *)(lVar11 + 2 + lVar9) + + (uint)*(byte *)(lVar8 + 2 + lVar9) + (uint)bVar2 + (uint)bVar3) >> 2) * + 0x100 + ((int)((uint)bVar2 + (uint)bVar3) >> 1)) * 0x100 + + ((int)((uint)*(byte *)(lVar8 + lVar9) + (uint)bVar2 + (uint)*(byte *)(lVar11 + lVar9) + + (uint)bVar3) >> 2)) * 0x100 + + ((int)((uint)*(byte *)(lVar8 + lVar9) + (uint)*(byte *)(lVar11 + lVar9)) >> 1); + iVar6 = iVar13 + 4; + iVar13 = iVar13 + 2; + } while (iVar6 < iVar5); + } + iVar16 = iVar15 + iVar5 + -2; + iVar15 = iVar15 + iVar5; + lVar8 = (longlong)iVar16; + lVar11 = (longlong)(local_res10 + iVar5 + -2); + *(ushort *)(lVar10 + lVar11 * 2) = + (short)((int)((uint)*(byte *)(lVar8 + 1 + lVar9) + (uint)*(byte *)(lVar8 + lVar9)) >> 1) + * 0x100 + (ushort)*(byte *)(lVar8 + lVar9); + bVar2 = *(byte *)(lVar8 + lVar7 + lVar9); + local_res10 = local_res10 + iVar5 * 2; + *(short *)(lVar10 + (lVar11 + lVar7) * 2) = + (short)((int)((uint)*(byte *)(lVar8 + 1 + lVar9) + + (uint)*(byte *)(lVar8 + lVar7 + 1 + lVar9) + (uint)bVar2 + + (uint)*(byte *)(lVar8 + lVar9)) >> 2) * 0x100 + + (short)((int)((uint)bVar2 + (uint)*(byte *)(lVar8 + lVar9)) >> 1); + local_res18 = local_res18 + 1; + } while (local_res18 < iVar4); + } + lVar8 = (longlong)(iVar5 * 2); + if (1 < iVar4) { + iVar16 = iVar5 + -1; + iVar15 = 0; + do { + lVar12 = (longlong)iVar16; + lVar11 = lVar12 + lVar7; + iVar16 = iVar16 + iVar5; + lVar14 = (longlong)(iVar15 * 2 * iVar5 * 2 + iVar5 * 2 + -2); + *(undefined1 *)(lVar14 + lVar10) = *(undefined1 *)(lVar12 + lVar9); + *(byte *)(lVar14 + 1 + lVar10) = + (char)((int)((uint)*(byte *)(lVar12 + lVar9) + (uint)*(byte *)(lVar12 + lVar9) * 2) >> 2) + + (*(byte *)(lVar12 + -1 + lVar9) >> 2); + *(char *)(lVar14 + lVar8 + lVar10) = + (char)((int)((uint)*(byte *)(lVar11 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) >> 1); + iVar13 = iVar15 + 2; + *(char *)(lVar14 + lVar8 + 1 + lVar10) = + (char)((int)(((uint)*(byte *)(lVar11 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) * 3 + + (uint)*(byte *)(lVar11 + -1 + lVar9) + (uint)*(byte *)(lVar12 + -1 + lVar9)) + >> 3); + iVar15 = iVar15 + 1; + } while (iVar13 < iVar4); + } + iVar15 = 1; + if (1 < iVar5) { + lVar11 = lVar9 - lVar7; + iVar13 = (iVar4 + -1) * iVar5; + iVar16 = (iVar4 * 2 + -2) * iVar5 * 2; + do { + lVar12 = (longlong)iVar13; + lVar14 = (longlong)iVar16; + iVar15 = iVar15 + 1; + iVar13 = iVar13 + 1; + *(undefined1 *)(lVar14 + lVar10) = *(undefined1 *)(lVar12 + lVar9); + iVar16 = iVar16 + 2; + *(char *)(lVar14 + 1 + lVar10) = + (char)((int)((uint)*(byte *)(lVar12 + 1 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) >> 1) + ; + *(byte *)(lVar14 + lVar8 + lVar10) = + (char)((int)((uint)*(byte *)(lVar12 + lVar9) + (uint)*(byte *)(lVar12 + lVar9) * 2) >> 2) + + (*(byte *)(lVar12 + lVar11) >> 2); + *(char *)(lVar14 + lVar8 + 1 + lVar10) = + (char)((int)(((uint)*(byte *)(lVar12 + 1 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) * 3 + + (uint)*(byte *)(lVar12 + 1 + lVar11) + (uint)*(byte *)(lVar12 + lVar11)) + >> 3); + } while (iVar15 < iVar5); + } + lVar9 = (longlong)((iVar4 + -1) * iVar5 + iVar5 + -1); + lVar10 = (longlong)((iVar4 * 2 + -2) * iVar5 * 2 + (iVar5 + -1) * 2); + *(undefined1 *)(lVar10 + *(longlong *)(param_1 + 0x220)) = + *(undefined1 *)(lVar9 + *(longlong *)(param_1 + 0x2a0)); + bVar2 = *(byte *)(lVar9 + *(longlong *)(param_1 + 0x2a0)); + *(char *)(lVar10 + 1 + *(longlong *)(param_1 + 0x220)) = + (char)((int)((uint)bVar2 + (uint)bVar2 * 2 + + (uint)*(byte *)(lVar9 + -1 + *(longlong *)(param_1 + 0x2a0))) >> 2); + bVar2 = *(byte *)(lVar9 + *(longlong *)(param_1 + 0x2a0)); + *(char *)(lVar10 + *(longlong *)(param_1 + 0x220) + lVar8) = + (char)((int)((uint)*(byte *)((lVar9 - lVar7) + *(longlong *)(param_1 + 0x2a0)) + + (uint)bVar2 + (uint)bVar2 * 2) >> 2); + pbVar1 = (byte *)(lVar10 + *(longlong *)(param_1 + 0x220)); + pbVar1[lVar8 + 1] = + (byte)((ulonglong) + ((longlong) + (int)((uint)*(byte *)(lVar10 + 1 + *(longlong *)(param_1 + 0x220)) + + (uint)pbVar1[lVar8] + (uint)*pbVar1) * 0x55555556) >> 0x20); + return; +} + + +================================================================== + +### EXPORT FUNC 180019b30 (816 bytes) name=FUN_180019b30 + +void FUN_180019b30(longlong param_1) + +{ + byte bVar1; + byte bVar2; + int iVar3; + ulonglong uVar4; + undefined1 uVar5; + int iVar6; + uint uVar7; + undefined1 *puVar8; + undefined1 *_Dst; + uint uVar9; + uint uVar10; + uint uVar11; + void *_Src; + byte *pbVar12; + byte *pbVar13; + byte *pbVar14; + uint uVar15; + byte *pbVar16; + uint local_res8; + + _Src = *(void **)(param_1 + 0x2a0); + local_res8 = 0; + uVar9 = 0; + puVar8 = (undefined1 *) + (((ulonglong)(uint)((*(int *)(param_1 + 0x41fcc) + 3) * *(int *)(param_1 + 0x41fc8)) - + (ulonglong)(uint)((*(int *)(param_1 + 0x41fc0) + 8) * (*(int *)(param_1 + 0x41fc4) + 1)) + ) + *(longlong *)(param_1 + 0x220)); + _Dst = puVar8; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + memcpy(_Dst,_Src,(ulonglong)*(uint *)(param_1 + 0x41fc0)); + iVar6 = (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 1) + (longlong)_Src) * 2 - + (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 2) + (longlong)_Src); + if (iVar6 < 0x100) { + uVar5 = (undefined1)iVar6; + if (iVar6 < 0) { + uVar5 = 0; + } + } + else { + uVar5 = 0xff; + } + uVar9 = uVar9 + 1; + _Dst[*(uint *)(param_1 + 0x41fc0)] = uVar5; + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0)); + _Dst = _Dst + (*(uint *)(param_1 + 0x41fc0) + 8); + } while (uVar9 < *(uint *)(param_1 + 0x41fc4)); + } + uVar4 = (ulonglong)(*(int *)(param_1 + 0x41fc0) + 8); + pbVar12 = _Dst + -uVar4; + pbVar13 = pbVar12 + -uVar4; + for (iVar6 = *(int *)(param_1 + 0x41fc0) + 1; iVar6 != 0; iVar6 = iVar6 + -1) { + bVar1 = *pbVar12; + bVar2 = *pbVar13; + pbVar13 = pbVar13 + 1; + pbVar12 = pbVar12 + 1; + iVar3 = (uint)bVar1 * 2 - (uint)bVar2; + if (iVar3 < 0x100) { + uVar5 = (undefined1)iVar3; + if (iVar3 < 0) { + uVar5 = 0; + } + } + else { + uVar5 = 0xff; + } + *_Dst = uVar5; + _Dst = _Dst + 1; + } + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + iVar6 = *(int *)(param_1 + 0x41fc0); + pbVar13 = (byte *)((ulonglong)(*(int *)(param_1 + 0x41fc8) * local_res8 * 4) + + *(longlong *)(param_1 + 0x220)); + pbVar12 = puVar8 + (iVar6 + 8) * local_res8; + if (iVar6 != 0) { + pbVar16 = pbVar13 + 2; + do { + bVar1 = *pbVar12; + uVar10 = (uint)bVar1; + uVar7 = (uint)pbVar12[1]; + uVar15 = (uint)pbVar12[(ulonglong)*(uint *)(param_1 + 0x41fc0) + 8]; + uVar11 = (uint)pbVar12[(ulonglong)*(uint *)(param_1 + 0x41fc0) + 9]; + pbVar12 = pbVar12 + 1; + *pbVar13 = bVar1; + uVar9 = uVar10 * 3 + uVar15; + pbVar16[-1] = (byte)(uVar10 * 3 + uVar7 >> 2); + *pbVar16 = (byte)(uVar7 + uVar10 >> 1); + pbVar16[1] = (byte)(uVar7 * 3 + uVar10 >> 2); + pbVar14 = pbVar13 + *(uint *)(param_1 + 0x41fc8); + *pbVar14 = (byte)(uVar9 >> 2); + pbVar14[1] = (byte)(uVar11 + (uVar9 + uVar7) * 3 >> 4); + pbVar14[2] = (byte)(uVar11 + (uVar7 + uVar10) * 3 + uVar15 >> 3); + pbVar14[3] = (byte)(uVar15 + (uVar7 * 3 + uVar11 + uVar10) * 3 >> 4); + pbVar14 = pbVar13 + (uint)(*(int *)(param_1 + 0x41fc8) * 2); + *pbVar14 = (byte)(uVar15 + uVar10 >> 1); + pbVar14[1] = (byte)(uVar11 + (uVar15 + uVar10) * 3 + uVar7 >> 3); + pbVar14[2] = (byte)(uVar11 + uVar15 + uVar7 + uVar10 >> 2); + pbVar14[3] = (byte)(uVar15 + (uVar11 + uVar7) * 3 + uVar10 >> 3); + pbVar14 = pbVar13 + (uint)(*(int *)(param_1 + 0x41fc8) * 3); + *pbVar14 = (byte)(uVar15 * 3 + uVar10 >> 2); + pbVar13 = pbVar13 + 4; + pbVar16 = pbVar16 + 4; + pbVar14[1] = (byte)(uVar7 + (uVar15 * 3 + uVar11 + uVar10) * 3 >> 4); + pbVar14[2] = (byte)(uVar7 + (uVar11 + uVar15) * 3 + uVar10 >> 3); + iVar6 = iVar6 + -1; + pbVar14[3] = (byte)(uVar10 + (uVar15 + uVar11 * 3 + uVar7) * 3 >> 4); + } while (iVar6 != 0); + } + local_res8 = local_res8 + 1; + } while (local_res8 < *(uint *)(param_1 + 0x41fc4)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180019e60 (2276 bytes) name=FUN_180019e60 + +void FUN_180019e60(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + byte bVar6; + byte bVar7; + int iVar8; + ulonglong uVar9; + undefined1 uVar10; + int iVar11; + int iVar12; + int iVar13; + uint uVar14; + undefined1 *puVar15; + undefined1 *_Dst; + void *_Src; + uint uVar16; + uint uVar17; + uint uVar18; + uint uVar19; + byte *pbVar20; + byte *pbVar21; + int iVar22; + byte *pbVar23; + byte *pbVar24; + int iVar25; + int iVar26; + uint uVar27; + int iVar28; + uint uVar29; + int iVar30; + int local_90; + uint local_8c; + + _Src = *(void **)(param_1 + 0x2a0); + local_8c = 0; + uVar16 = 0; + puVar15 = (undefined1 *) + (((ulonglong)(uint)((*(int *)(param_1 + 0x41fcc) + 3) * *(int *)(param_1 + 0x41fc8)) - + (ulonglong) + (uint)((*(int *)(param_1 + 0x41fc0) + 8) * (*(int *)(param_1 + 0x41fc4) + 1))) + + *(longlong *)(param_1 + 0x220)); + _Dst = puVar15; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + memcpy(_Dst,_Src,(ulonglong)*(uint *)(param_1 + 0x41fc0)); + iVar11 = (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 1) + (longlong)_Src) * 2 - + (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 2) + (longlong)_Src); + if (iVar11 < 0x100) { + uVar10 = (undefined1)iVar11; + if (iVar11 < 0) { + uVar10 = 0; + } + } + else { + uVar10 = 0xff; + } + uVar16 = uVar16 + 1; + _Dst[*(uint *)(param_1 + 0x41fc0)] = uVar10; + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0)); + _Dst = _Dst + (*(uint *)(param_1 + 0x41fc0) + 8); + } while (uVar16 < *(uint *)(param_1 + 0x41fc4)); + } + uVar9 = (ulonglong)(*(int *)(param_1 + 0x41fc0) + 8); + pbVar20 = _Dst + -uVar9; + pbVar23 = pbVar20 + -uVar9; + for (iVar11 = *(int *)(param_1 + 0x41fc0) + 1; iVar11 != 0; iVar11 = iVar11 + -1) { + bVar6 = *pbVar20; + bVar7 = *pbVar23; + pbVar23 = pbVar23 + 1; + pbVar20 = pbVar20 + 1; + iVar8 = (uint)bVar6 * 2 - (uint)bVar7; + if (iVar8 < 0x100) { + uVar10 = (undefined1)iVar8; + if (iVar8 < 0) { + uVar10 = 0; + } + } + else { + uVar10 = 0xff; + } + *_Dst = uVar10; + _Dst = _Dst + 1; + } + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + local_90 = *(int *)(param_1 + 0x41fc0); + pbVar20 = (byte *)((ulonglong)(*(int *)(param_1 + 0x41fc8) * local_8c * 8) + + *(longlong *)(param_1 + 0x220)); + if (local_90 != 0) { + pbVar23 = pbVar20 + 6; + pbVar24 = puVar15 + (local_90 + 8) * local_8c; + do { + uVar14 = (uint)pbVar24[1]; + uVar18 = (uint)*pbVar24; + uVar27 = (uint)pbVar24[(ulonglong)*(uint *)(param_1 + 0x41fc0) + 8]; + uVar29 = (uint)pbVar24[(ulonglong)*(uint *)(param_1 + 0x41fc0) + 9]; + uVar16 = uVar18 * 7 + uVar14; + iVar8 = uVar18 * 3; + uVar19 = uVar14 + uVar18; + uVar4 = iVar8 + uVar14; + *pbVar20 = *pbVar24; + pbVar23[-5] = (byte)(uVar16 >> 3); + pbVar23[-4] = (byte)(uVar4 >> 2); + pbVar23[-3] = (byte)(uVar18 * 0x28 + uVar14 * 0x18 >> 6); + pbVar23[-2] = (byte)(uVar19 >> 1); + pbVar23[-1] = (byte)(uVar18 * 0x18 + uVar14 * 0x28 >> 6); + uVar17 = uVar14 * 3 + uVar18; + *pbVar23 = (byte)(uVar17 >> 2); + uVar1 = uVar14 * 7 + uVar18; + pbVar23[1] = (byte)(uVar1 >> 3); + uVar2 = uVar18 * 7 + uVar27; + pbVar21 = pbVar20 + *(uint *)(param_1 + 0x41fc8); + iVar3 = uVar27 * 3; + *pbVar21 = (byte)(uVar2 >> 3); + pbVar21[1] = (byte)((uVar2 + uVar14) * 7 + uVar29 >> 6); + iVar11 = uVar14 * 7 + uVar29; + pbVar21[2] = (byte)(uVar4 * 7 + iVar3 + uVar29 >> 5); + iVar13 = uVar29 * 3; + pbVar21[3] = (byte)(iVar11 * 3 + uVar2 * 5 >> 6); + pbVar21[4] = (byte)(uVar19 * 7 + uVar29 + uVar27 >> 4); + uVar5 = iVar8 + uVar27; + pbVar21[5] = (byte)(iVar11 * 5 + uVar2 * 3 >> 6); + pbVar21[6] = (byte)(uVar17 * 7 + iVar13 + uVar27 >> 5); + pbVar21[7] = (byte)((uVar18 + iVar11) * 7 + uVar27 >> 6); + pbVar21 = pbVar20 + (uint)(*(int *)(param_1 + 0x41fc8) * 2); + *pbVar21 = (byte)(uVar5 >> 2); + iVar11 = uVar14 * 3 + uVar29; + pbVar21[1] = (byte)(uVar5 * 7 + uVar14 * 3 + uVar29 >> 5); + pbVar21[2] = (byte)(uVar29 + (uVar14 + uVar5) * 3 >> 4); + pbVar21[3] = (byte)(uVar5 * 10 + iVar11 * 6 >> 6); + pbVar21[4] = (byte)(uVar29 + uVar19 * 3 + uVar27 >> 3); + pbVar21[5] = (byte)(uVar5 * 6 + iVar11 * 10 >> 6); + pbVar21[6] = (byte)(uVar27 + (iVar11 + uVar18) * 3 >> 4); + pbVar21[7] = (byte)(iVar11 * 7 + iVar8 + uVar27 >> 5); + pbVar21 = pbVar20 + (uint)(*(int *)(param_1 + 0x41fc8) * 3); + iVar11 = uVar27 * 7 + uVar29; + *pbVar21 = (byte)(uVar18 * 0x28 + uVar27 * 0x18 >> 6); + iVar22 = (uVar29 + uVar18) * 0xf; + iVar30 = uVar29 + iVar3; + pbVar21[1] = (byte)(iVar11 * 3 + uVar16 * 5 >> 6); + iVar28 = uVar27 + uVar29; + iVar25 = (uVar27 + uVar14) * 0xf; + pbVar21[2] = (byte)(uVar4 * 10 + iVar30 * 6 >> 6); + iVar26 = iVar13 + uVar27; + pbVar21[3] = (byte)(uVar18 * 0x19 + iVar25 + uVar29 * 9 >> 6); + pbVar21[4] = (byte)(uVar19 * 0x14 + iVar28 * 0xc >> 6); + iVar8 = uVar29 * 7 + uVar27; + pbVar21[5] = (byte)(uVar27 * 9 + uVar14 * 0x19 + iVar22 >> 6); + pbVar21[6] = (byte)((uVar14 * 3 + uVar18) * 10 + iVar26 * 6 >> 6); + pbVar21[7] = (byte)(iVar8 * 3 + uVar1 * 5 >> 6); + pbVar21 = pbVar20 + (uint)(*(int *)(param_1 + 0x41fc8) << 2); + uVar19 = uVar27 + uVar18; + *pbVar21 = (byte)(uVar19 >> 1); + pbVar21[1] = (byte)(uVar19 * 7 + uVar29 + uVar14 >> 4); + iVar12 = uVar29 + uVar14; + pbVar21[2] = (byte)(uVar29 + uVar19 * 3 + uVar14 >> 3); + pbVar21[3] = (byte)(uVar19 * 0x14 + iVar12 * 0xc >> 6); + pbVar21[4] = (byte)(iVar28 + uVar14 + uVar18 >> 2); + pbVar21[5] = (byte)(uVar19 * 0xc + iVar12 * 0x14 >> 6); + pbVar21[6] = (byte)(uVar27 + iVar12 * 3 + uVar18 >> 3); + pbVar21[7] = (byte)(iVar12 * 7 + uVar27 + uVar18 >> 4); + pbVar21 = pbVar20 + (uint)(*(int *)(param_1 + 0x41fc8) * 5); + *pbVar21 = (byte)(uVar18 * 0x18 + uVar27 * 0x28 >> 6); + pbVar21[1] = (byte)(iVar11 * 5 + uVar16 * 3 >> 6); + pbVar21[2] = (byte)((uVar18 * 3 + uVar14) * 6 + iVar30 * 10 >> 6); + uVar16 = uVar18 + iVar3; + pbVar21[3] = (byte)(uVar14 * 9 + iVar22 + uVar27 * 0x19 >> 6); + pbVar21[4] = (byte)((uVar14 + uVar18) * 0xc + iVar28 * 0x14 >> 6); + pbVar21[5] = (byte)(uVar18 * 9 + uVar29 * 0x19 + iVar25 >> 6); + pbVar21[6] = (byte)((uVar14 * 3 + uVar18) * 6 + iVar26 * 10 >> 6); + pbVar21[7] = (byte)(iVar8 * 5 + uVar1 * 3 >> 6); + pbVar21 = pbVar20 + (uint)(*(int *)(param_1 + 0x41fc8) * 6); + *pbVar21 = (byte)(uVar16 >> 2); + pbVar21[1] = (byte)(uVar16 * 7 + iVar13 + uVar14 >> 5); + iVar13 = iVar13 + uVar14; + pbVar21[2] = (byte)(uVar14 + (iVar30 + uVar18) * 3 >> 4); + pbVar21[3] = (byte)(uVar16 * 10 + iVar13 * 6 >> 6); + pbVar21[4] = (byte)(uVar14 + iVar28 * 3 + uVar18 >> 3); + pbVar21[5] = (byte)(uVar16 * 6 + iVar13 * 10 >> 6); + pbVar21[6] = (byte)(uVar18 + (iVar26 + uVar14) * 3 >> 4); + pbVar21[7] = (byte)(iVar13 * 7 + iVar3 + uVar18 >> 5); + iVar3 = uVar29 * 7 + uVar14; + pbVar21 = pbVar20 + (uint)(*(int *)(param_1 + 0x41fc8) * 7); + uVar16 = uVar18 + uVar27 * 7; + *pbVar21 = (byte)(uVar16 >> 3); + pbVar21[1] = (byte)((iVar11 + uVar18) * 7 + uVar14 >> 6); + pbVar21[2] = (byte)(iVar30 * 7 + uVar18 * 3 + uVar14 >> 5); + pbVar21[3] = (byte)(iVar3 * 3 + uVar16 * 5 >> 6); + pbVar21[4] = (byte)(iVar28 * 7 + uVar14 + uVar18 >> 4); + pbVar21[5] = (byte)(iVar3 * 5 + uVar16 * 3 >> 6); + pbVar20 = pbVar20 + 8; + pbVar23 = pbVar23 + 8; + local_90 = local_90 + -1; + pbVar21[6] = (byte)(iVar26 * 7 + uVar14 * 3 + uVar18 >> 5); + pbVar21[7] = (byte)((iVar8 + uVar14) * 7 + uVar18 >> 6); + pbVar24 = pbVar24 + 1; + } while (local_90 != 0); + } + local_8c = local_8c + 1; + } while (local_8c < *(uint *)(param_1 + 0x41fc4)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001a750 (841 bytes) name=FUN_18001a750 + +void FUN_18001a750(longlong param_1) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int iVar5; + float fVar6; + float fVar7; + undefined1 uVar8; + uint uVar9; + longlong lVar10; + uint uVar11; + uint uVar12; + ulonglong uVar13; + uint uVar14; + int iVar15; + ulonglong uVar16; + ulonglong uVar17; + int iVar18; + float fVar19; + float fVar20; + float fVar21; + float fVar22; + float fVar23; + + fVar7 = DAT_18005e704; + fVar6 = DAT_18005e700; + uVar1 = *(uint *)(param_1 + 0x41fc8); + uVar2 = *(uint *)(param_1 + 0x41fc0); + uVar3 = *(uint *)(param_1 + 0x41fc4); + uVar4 = *(uint *)(param_1 + 0x41fcc); + uVar17 = 0; + if (uVar1 != 0) { + fVar23 = (float)uVar2 - DAT_18005e700; + do { + iVar18 = (int)uVar17; + fVar22 = (float)uVar17 * ((float)uVar2 / (float)uVar1); + if (fVar23 < fVar22) { + fVar22 = fVar23; + } + uVar11 = 0; + uVar13 = (ulonglong)fVar22; + if (uVar4 != 0) { + iVar5 = (int)uVar13; + uVar12 = iVar5 + 1; + fVar21 = (float)uVar3 - fVar6; + do { + fVar20 = (float)uVar11 * ((float)uVar3 / (float)uVar4); + if (fVar21 < fVar20) { + fVar20 = fVar21; + } + uVar16 = (ulonglong)fVar20; + iVar15 = (int)uVar16; + if ((uVar12 < uVar2) && (iVar15 + 1U < uVar3)) { + lVar10 = *(longlong *)(param_1 + 0x2a0); + uVar14 = iVar15 * uVar2 + iVar5; + fVar19 = fVar22 - (float)(uVar13 & 0xffffffff); + fVar20 = fVar20 - (float)(uVar16 & 0xffffffff); + lVar10 = (longlong) + (((float)*(byte *)((ulonglong)(uVar14 + uVar2) + lVar10) * (fVar6 - fVar19) + + (float)*(byte *)((ulonglong)(uVar14 + 1 + uVar2) + lVar10) * fVar19) * fVar20 + + ((float)*(byte *)((ulonglong)(uVar14 + 1) + lVar10) * fVar19 + + (float)*(byte *)((ulonglong)uVar14 + lVar10) * (fVar6 - fVar19)) * + (fVar6 - fVar20) + fVar7); + uVar8 = (undefined1)lVar10; + if (0xff < (uint)lVar10) { + uVar8 = 0xff; + } + *(undefined1 *)(uVar17 + *(longlong *)(param_1 + 0x220)) = uVar8; + } + else { + uVar14 = iVar15 + 1; + if ((uVar14 == uVar3) && (uVar12 < uVar2)) { + uVar14 = iVar15 * uVar2 + iVar5; + uVar9 = (uint)*(byte *)((ulonglong)uVar14 + *(longlong *)(param_1 + 0x2a0)); + lVar10 = (longlong) + ((float)(int)(*(byte *)((ulonglong)(uVar14 + 1) + + *(longlong *)(param_1 + 0x2a0)) - uVar9) * + (fVar22 - (float)(uVar13 & 0xffffffff)) + (float)uVar9 + fVar7); + uVar8 = (undefined1)lVar10; + if (0xff < (uint)lVar10) { + uVar8 = 0xff; + } + *(undefined1 *)(uVar17 + *(longlong *)(param_1 + 0x220)) = uVar8; + } + else if ((uVar12 == uVar2) && (uVar14 < uVar3)) { + uVar9 = (uint)*(byte *)((ulonglong)(iVar15 * uVar2 + iVar5) + + *(longlong *)(param_1 + 0x2a0)); + lVar10 = (longlong) + ((float)(int)(*(byte *)((ulonglong)(uVar14 * uVar2 + iVar5) + + *(longlong *)(param_1 + 0x2a0)) - uVar9) * + (fVar20 - (float)(uVar16 & 0xffffffff)) + (float)uVar9 + fVar7); + uVar8 = (undefined1)lVar10; + if (0xff < (uint)lVar10) { + uVar8 = 0xff; + } + *(undefined1 *)(uVar17 + *(longlong *)(param_1 + 0x220)) = uVar8; + } + else { + *(undefined1 *)(uVar17 + *(longlong *)(param_1 + 0x220)) = + *(undefined1 *) + ((ulonglong)(iVar15 * uVar2 + iVar5) + *(longlong *)(param_1 + 0x2a0)); + } + } + uVar11 = uVar11 + 1; + uVar17 = (ulonglong)((int)uVar17 + uVar1); + } while (uVar11 < uVar4); + } + uVar11 = iVar18 + 1; + uVar17 = (ulonglong)uVar11; + } while (uVar11 < uVar1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001aaa0 (204 bytes) name=FUN_18001aaa0 + +longlong * FUN_18001aaa0(longlong *param_1,short *param_2) + +{ + short sVar1; + uint uVar2; + longlong lVar3; + int iVar4; + int iVar5; + short *psVar6; + ulonglong uVar7; + + if (param_2 == (short *)0x0) { + iVar4 = 0; + } + else { + lVar3 = -1; + psVar6 = param_2; + do { + if (lVar3 == 0) break; + lVar3 = lVar3 + -1; + sVar1 = *psVar6; + psVar6 = psVar6 + 1; + } while (sVar1 != 0); + iVar4 = ~(uint)lVar3 - 1; + } + lVar3 = *param_1; + uVar2 = *(uint *)(lVar3 + -0x10); + iVar5 = uVar2 + iVar4; + uVar7 = (longlong)param_2 - lVar3 >> 1; + if ((int)(1U - *(int *)(lVar3 + -8) | *(int *)(lVar3 + -0xc) - iVar5) < 0) { + FUN_18000b190(param_1,iVar5); + } + if (uVar7 <= uVar2) { + param_2 = (short *)(*param_1 + uVar7 * 2); + } + FUN_180032c60((ulonglong *)(*param_1 + (ulonglong)uVar2 * 2),(longlong)iVar4 * 2,param_2, + (longlong)iVar4 * 2); + if ((-1 < iVar5) && (iVar5 <= *(int *)(*param_1 + -0xc))) { + *(int *)(*param_1 + -0x10) = iVar5; + *(undefined2 *)(*param_1 + (longlong)iVar5 * 2) = 0; + return param_1; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18001ab70 (330 bytes) name=FUN_18001ab70 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +longlong * FUN_18001ab70(longlong *param_1,longlong *param_2,LPCWSTR param_3) + +{ + WCHAR WVar1; + undefined **ppuVar2; + longlong lVar3; + undefined8 uVar4; + HMODULE pHVar5; + WCHAR *pWVar6; + undefined1 auStack_188 [32]; + undefined4 local_168; + longlong *local_160; + undefined8 local_158; + int local_150 [10]; + WCHAR local_128 [128]; + ulonglong local_28; + + local_158 = 0xfffffffffffffffe; + local_28 = DAT_18006cea0 ^ (ulonglong)auStack_188; + local_168 = 0; + local_160 = param_2; + if (param_3 == (LPCWSTR)0x0) { + ppuVar2 = FUN_18001fcc0(); + if (ppuVar2 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar3 = (**(code **)(*ppuVar2 + 0x18))(ppuVar2); + *param_2 = lVar3 + 0x18; + FUN_18000b480(param_2,(void *)0x0,0); + } + else { + uVar4 = FUN_180033b30(local_150,param_1); + if (((int)uVar4 != 0) || (lVar3 = FUN_180033a30(local_128,0x80,param_3,local_150), lVar3 == 0)) + { + local_128[0] = L'\0'; + } + ppuVar2 = FUN_18001fcc0(); + if (ppuVar2 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar3 = (**(code **)(*ppuVar2 + 0x18))(ppuVar2); + *param_2 = lVar3 + 0x18; + if (((ulonglong)local_128 & 0xffffffffffff0000) == 0) { + pHVar5 = (HMODULE)FUN_18001fcac(); + if (pHVar5 != (HMODULE)0x0) { + FUN_18000af50(param_2,pHVar5,(uint)local_128 & 0xffff); + } + } + else { + lVar3 = -1; + pWVar6 = local_128; + do { + if (lVar3 == 0) break; + lVar3 = lVar3 + -1; + WVar1 = *pWVar6; + pWVar6 = pWVar6 + 1; + } while (WVar1 != L'\0'); + FUN_18000b480(param_2,local_128,~(uint)lVar3 - 1); + } + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18001acc0 (24 bytes) name=Unwind@18001acc0 + +void Unwind_18001acc0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ace0 (24 bytes) name=Unwind@18001ace0 + +void Unwind_18001ace0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ad00 (164 bytes) name=FUN_18001ad00 + +void FUN_18001ad00(longlong *param_1,WCHAR *param_2,undefined8 param_3,undefined8 param_4) + +{ + int iVar1; + ulonglong uVar2; + undefined8 local_res18; + undefined8 local_res20; + + local_res18 = param_3; + local_res20 = param_4; + if (param_2 == (WCHAR *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + uVar2 = FUN_180033040(param_2,(WCHAR *)&local_res18); + iVar1 = (int)uVar2; + if ((int)(1U - *(int *)(*param_1 + -8) | *(int *)(*param_1 + -0xc) - iVar1) < 0) { + FUN_18000b190(param_1,iVar1); + } + FUN_180033200((char *)*param_1,(longlong)(iVar1 + 1),(longlong)param_2,&local_res18); + if ((-1 < iVar1) && (iVar1 <= *(int *)(*param_1 + -0xc))) { + *(int *)(*param_1 + -0x10) = iVar1; + *(undefined2 *)(*param_1 + (longlong)iVar1 * 2) = 0; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18001adb0 (147 bytes) name=FUN_18001adb0 + +longlong * FUN_18001adb0(longlong *param_1,LPCSTR param_2) + +{ + undefined **ppuVar1; + longlong lVar2; + HMODULE pHVar3; + + ppuVar1 = FUN_18001fcc0(); + if (ppuVar1 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*ppuVar1 + 0x18))(ppuVar1); + *param_1 = lVar2 + 0x18; + if ((param_2 == (LPCSTR)0x0) || (((ulonglong)param_2 & 0xffffffffffff0000) != 0)) { + FUN_18000ad80(param_1,param_2); + } + else { + pHVar3 = (HMODULE)FUN_18001fcac(); + if (pHVar3 != (HMODULE)0x0) { + FUN_18000af50(param_1,pHVar3,(uint)param_2 & 0xffff); + } + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ae50 (24 bytes) name=Unwind@18001ae50 + +void Unwind_18001ae50(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ae70 (383 bytes) name=FUN_18001ae70 + +undefined8 * FUN_18001ae70(undefined8 *param_1) + +{ + undefined8 *puVar1; + LSTATUS LVar2; + undefined8 uVar3; + undefined8 *local_res8; + undefined8 *local_res10; + HKEY local_res18; + + *param_1 = CMgtStream::vftable; + puVar1 = param_1 + 1; + local_res8 = param_1; + local_res10 = puVar1; + FUN_18001ec00(puVar1); + *puVar1 = CCriticalSection::vftable; + uVar3 = FUN_1800013a0((longlong)puVar1); + if ((int)uVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + FUN_180020138(param_1 + 10); + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)((longlong)param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 9) = 0; + *(undefined4 *)((longlong)param_1 + 0x4c) = 0; + param_1[0x91] = 0; + *(undefined4 *)(param_1 + 0x92) = 0; + param_1[0x93] = 0; + param_1[0x94] = 0; + *(undefined4 *)(param_1 + 0x95) = 0; + *(undefined4 *)((longlong)param_1 + 0x4ac) = 0; + *(undefined4 *)(param_1 + 0x96) = 4; + *(undefined4 *)((longlong)param_1 + 0x4b4) = 0; + *(undefined4 *)(param_1 + 0x97) = 0x14; + *(undefined4 *)((longlong)param_1 + 0x4bc) = 1; + *(undefined4 *)(param_1 + 0x98) = 0; + *(undefined4 *)((longlong)param_1 + 0x4c4) = 0; + param_1[0x99] = 0; + param_1[0x9a] = 0; + *(undefined4 *)(param_1 + 0x9b) = 0; + param_1[0x9c] = 0; + param_1[0x9d] = 0; + LVar2 = RegCreateKeyExW((HKEY)0xffffffff80000001,L"Software\\GNU\\Xvid",0,(LPWSTR)0x0,0,0xf003f, + (LPSECURITY_ATTRIBUTES)0x0,&local_res18,(LPDWORD)&local_res10); + if (LVar2 == 0) { + local_res8 = (undefined8 *)((ulonglong)local_res8 & 0xffffffff00000000); + RegSetValueExW(local_res18,L"display_status",0,4,(BYTE *)&local_res8,4); + RegCloseKey(local_res18); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001aff0 (24 bytes) name=Unwind@18001aff0 + +void Unwind_18001aff0(undefined8 param_1,longlong param_2) + +{ + CSyncObject::~CSyncObject(*(CSyncObject **)(param_2 + 0x78)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b010 (28 bytes) name=Unwind@18001b010 + +void Unwind_18001b010(undefined8 param_1,longlong param_2) + +{ + FUN_180001440((CSyncObject *)(*(longlong *)(param_2 + 0x70) + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b030 (47 bytes) name=FUN_18001b030 + +undefined8 * +FUN_18001b030(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4) + +{ + FUN_18001b060(param_1,param_2,param_3,param_4); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001b060 (259 bytes) name=FUN_18001b060 + +void FUN_18001b060(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + longlong *plVar1; + + *param_1 = CMgtStream::vftable; + if ((*(int *)((longlong)param_1 + 0x44) != 0) || (*(int *)(param_1 + 9) != 0)) { + FUN_180001470((longlong)(param_1 + 1)); + if (*(int *)(param_1 + 9) != 0) { + *(undefined4 *)(param_1 + 0x9b) = 0; + SetEvent((HANDLE)param_1[0x9d]); + if (param_1[0x9c] != 0) { + WaitForSingleObject(*(HANDLE *)(param_1[0x9c] + 0x58),0xffffffff); + plVar1 = (longlong *)param_1[0x9c]; + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + param_1[0x9c] = 0; + } + CloseHandle((HANDLE)param_1[0x9d]); + *(undefined4 *)(param_1 + 9) = 0; + } + if (*(int *)((longlong)param_1 + 0x44) != 0) { + *(undefined4 *)((longlong)param_1 + 0x44) = 0; + } + (**(code **)(param_1[10] + 0x98))(); + *(undefined4 *)(param_1 + 8) = 0; + (**(code **)(param_1[1] + 0x28))(param_1 + 1); + } + FUN_1800203a4((CFile *)(param_1 + 10)); + param_1[1] = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 3)); + CSyncObject::~CSyncObject((CSyncObject *)(param_1 + 1)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b170 (28 bytes) name=Unwind@18001b170 + +void Unwind_18001b170(undefined8 param_1,longlong param_2) + +{ + FUN_180001440((CSyncObject *)(*(longlong *)(param_2 + 0x40) + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b190 (28 bytes) name=Unwind@18001b190 + +void Unwind_18001b190(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(*(longlong *)(param_2 + 0x40) + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b1b0 (190 bytes) name=FUN_18001b1b0 + +undefined8 +FUN_18001b1b0(longlong param_1,longlong param_2,undefined8 param_3,longlong param_4,int param_5) + +{ + undefined8 uVar1; + undefined8 local_18 [2]; + + FUN_180001470(param_1 + 8); + if (*(int *)(param_1 + 0x44) == 0) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar1 = 0; + } + else { + FUN_18001ef2c(local_18); + if (param_2 != 0) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x70))((longlong *)(param_1 + 0x50),param_2,0x40) + ; + } + if ((param_4 != 0) && (param_5 != 0)) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x70))((longlong *)(param_1 + 0x50),param_4); + } + FUN_18001ef94(); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18001b280 (24 bytes) name=Unwind@18001b280 + +void Unwind_18001b280(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b2a0 (61 bytes) name=Catch@18001b2a0 + +undefined * Catch_18001b2a0(undefined8 param_1,longlong param_2) + +{ + longlong lVar1; + + *(undefined8 *)(param_2 + 0x38) = *(undefined8 *)(param_2 + 0x28); + lVar1 = *(longlong *)(param_2 + 0x50); + FUN_18001b2e0(lVar1); + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(); + return &DAT_18001b258; +} + + +================================================================== + +### EXPORT FUNC 18001b2e0 (178 bytes) name=FUN_18001b2e0 + +void FUN_18001b2e0(longlong param_1) + +{ + longlong *plVar1; + + FUN_180001470(param_1 + 8); + if (*(int *)(param_1 + 0x48) != 0) { + *(undefined4 *)(param_1 + 0x4d8) = 0; + SetEvent(*(HANDLE *)(param_1 + 0x4e8)); + if (*(longlong *)(param_1 + 0x4e0) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(param_1 + 0x4e0) + 0x58),0xffffffff); + plVar1 = *(longlong **)(param_1 + 0x4e0); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + *(undefined8 *)(param_1 + 0x4e0) = 0; + } + CloseHandle(*(HANDLE *)(param_1 + 0x4e8)); + *(undefined4 *)(param_1 + 0x48) = 0; + } + if (*(int *)(param_1 + 0x44) != 0) { + *(undefined4 *)(param_1 + 0x44) = 0; + } + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x98))(param_1 + 0x50); + *(undefined4 *)(param_1 + 0x40) = 0; + /* WARNING: Could not recover jumptable at 0x00018001b38e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b3a0 (913 bytes) name=FUN_18001b3a0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 FUN_18001b3a0(longlong param_1,short *param_2,longlong param_3) + +{ + wchar_t *pwVar1; + int *piVar2; + short sVar3; + int iVar4; + undefined4 uVar5; + undefined **ppuVar6; + longlong lVar7; + HMODULE pHVar8; + longlong *plVar9; + wchar_t *pwVar10; + short *psVar11; + undefined1 auStackY_458 [32]; + wchar_t *local_418; + short *local_410; + longlong local_408; + longlong local_400; + __time64_t local_3f8 [6]; + CDialog local_3c8 [912]; + ulonglong local_38; + + local_3f8[1] = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_458; + local_408 = param_1; + FUN_180001470(param_1 + 8); + if ((*(int *)(param_1 + 0x44) != 0) || (*(int *)(param_1 + 0x48) != 0)) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + return 0; + } + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar7 = (**(code **)(*ppuVar6 + 0x18))(); + local_418 = (wchar_t *)(lVar7 + 0x18); + if (param_2 == (short *)0x0) { + iVar4 = 0; + } + else { + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar8 = (HMODULE)FUN_18001fcac(); + if (pHVar8 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_418,pHVar8,(uint)param_2 & 0xffff); + } + goto LAB_18001b49c; + } + lVar7 = -1; + psVar11 = param_2; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + sVar3 = *psVar11; + psVar11 = psVar11 + 1; + } while (sVar3 != 0); + iVar4 = ~(uint)lVar7 - 1; + } + FUN_18000b480((longlong *)&local_418,param_2,iVar4); +LAB_18001b49c: + if (*(int *)(local_418 + -8) == 0) { + local_3f8[0] = _time64((__time64_t *)0x0); + FUN_18001ab70(local_3f8,(longlong *)&local_410,L"%Y-%m-%d %H-%M-%S"); + FUN_18001f670(local_3c8,0,&DAT_18006ea90,local_410,6, + u_Magnity_Temperature_Stream_Files_18006eaa0,(CWnd *)0x0,0); + lVar7 = FUN_18001f450(local_3c8); + if (lVar7 != 1) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + FUN_18001f5c8((CWnd *)local_3c8); + LOCK(); + piVar2 = (int *)(local_410 + -4); + iVar4 = *piVar2; + *piVar2 = *piVar2 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_410 + -0xc) + 8))(); + } + LOCK(); + pwVar1 = local_418 + -4; + iVar4 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_418 + -0xc) + 8))(); + } + return 0; + } + plVar9 = FUN_18001f980((longlong)local_3c8,&local_400); + FUN_18000b390((longlong *)&local_418,plVar9); + LOCK(); + piVar2 = (int *)(local_400 + -8); + iVar4 = *piVar2; + *piVar2 = *piVar2 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_400 + -0x18) + 8))(); + } + pwVar1 = local_418; + if (((*(int *)(local_418 + -8) < 1) || + (pwVar10 = wcschr(local_418,L'.'), pwVar10 == (wchar_t *)0x0)) || + ((int)((longlong)pwVar10 - (longlong)pwVar1 >> 1) == -1)) { + FUN_18001aaa0((longlong *)&local_418,L".mgs"); + } + FUN_18001f5c8((CWnd *)local_3c8); + LOCK(); + piVar2 = (int *)(local_410 + -4); + iVar4 = *piVar2; + *piVar2 = *piVar2 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_410 + -0xc) + 8))(); + } + } + pwVar1 = local_418; + iVar4 = (**(code **)(*(longlong *)(param_1 + 0x50) + 0x40))(param_1 + 0x50,local_418,0x1021,0); + if (iVar4 == 0) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + MessageBoxW((HWND)0x0,L"Failed to open file.",L"Error",0x10); + LOCK(); + pwVar10 = pwVar1 + -4; + iVar4 = *(int *)pwVar10; + *(int *)pwVar10 = *(int *)pwVar10 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar1 + -0xc) + 8))(); + } + uVar5 = 0; + } + else { + FUN_18001ef2c(local_3f8 + 2); + if (param_3 != 0) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x70))(param_1 + 0x50,param_3,0x418); + } + FUN_18001ef94(); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 1; + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar5 = *(undefined4 *)(param_1 + 0x44); + LOCK(); + pwVar1 = local_418 + -4; + iVar4 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_418 + -0xc) + 8))(); + } + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 18001b760 (24 bytes) name=Unwind@18001b760 + +void Unwind_18001b760(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b780 (24 bytes) name=Unwind@18001b780 + +void Unwind_18001b780(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b7a0 (24 bytes) name=Unwind@18001b7a0 + +void Unwind_18001b7a0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b7c0 (27 bytes) name=Unwind@18001b7c0 + +void Unwind_18001b7c0(undefined8 param_1,longlong param_2) + +{ + FUN_18001f5c8((CWnd *)(param_2 + 0x90)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b7e0 (24 bytes) name=Unwind@18001b7e0 + +void Unwind_18001b7e0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b800 (24 bytes) name=Unwind@18001b800 + +void Unwind_18001b800(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001b820 (69 bytes) name=Catch@18001b820 + +undefined * Catch_18001b820(undefined8 param_1,longlong param_2) + +{ + longlong lVar1; + + *(undefined8 *)(param_2 + 0x78) = *(undefined8 *)(param_2 + 0x80); + lVar1 = *(longlong *)(param_2 + 0x50); + (**(code **)(*(longlong *)(lVar1 + 0x50) + 0x98))(); + (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(); + return &DAT_18001b6fd; +} + + +================================================================== + +### EXPORT FUNC 18001b870 (838 bytes) name=FUN_18001b870 + +undefined4 FUN_18001b870(longlong param_1,longlong *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + longlong lVar5; + undefined **ppuVar6; + longlong *plVar7; + longlong local_res18; + longlong local_res20; + longlong local_98 [3]; + undefined8 local_80 [3]; + undefined1 local_68 [24]; + undefined8 local_50; + undefined4 local_48; + + local_98[1] = 0xfffffffffffffffe; + if (((*(int *)(param_1 + 0x44) == 0) && (*(int *)(param_1 + 0x48) == 0)) && + (*(int *)(*param_2 + -0x10) != 0)) { + iVar3 = (**(code **)(*(longlong *)(param_1 + 0x50) + 0x40))(param_1 + 0x50,*param_2,0x30); + if (iVar3 == 0) { + lVar5 = *param_2; + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + uVar4 = 0; + } + else { + FUN_18001ef2c(local_80); + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x68))(param_1 + 0x50,param_1 + 0x70,0x418); + FUN_18001ef94(); + if ((((*(int *)(param_1 + 0x70) == 0x418) && + ((*(int *)(param_1 + 0x74) == 0x10200 || (*(int *)(param_1 + 0x74) == 0x10100)))) && + (iVar3 = *(int *)(param_1 + 0xcc), 0x4f < iVar3)) && + ((((iVar3 < 0x501 && (iVar2 = *(int *)(param_1 + 0xd0), 0x3b < iVar2)) && + ((iVar2 < 0x401 && + ((((0x417 < *(uint *)(param_1 + 0xc0) && + ((longlong)*(int *)(param_1 + 0xc4) == (longlong)(iVar2 * iVar3) * 2 + 0x40)) && + (-1 < *(int *)(param_1 + 200))) && + ((*(int *)(param_1 + 0xd4) != 0 && (0 < *(int *)(param_1 + 0xdc))))))))) && + (*(int *)(param_1 + 0xdc) < 0x3e9)))) { + if (*(int *)(param_1 + 200) == 0) { + lVar5 = (**(code **)(*(longlong *)(param_1 + 0x50) + 0x60))(param_1 + 0x50); + *(int *)(param_1 + 200) = + (int)((lVar5 - 0x418U) / (ulonglong)(longlong)*(int *)(param_1 + 0xc4)); + } + if (0 < *(int *)(param_1 + 200)) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x68))(param_1 + 0x50,local_68,0x40); + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x50))(param_1 + 0x50,0xffffffffffffffc0,1); + *(undefined8 *)(param_1 + 0x488) = local_50; + *(undefined4 *)(param_1 + 0x490) = local_48; + *(undefined4 *)(param_1 + 0x4ac) = local_48; + *(undefined4 *)(param_1 + 0x48) = 1; + local_res20 = *(longlong *)(param_1 + 0x78); + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res18 = (**(code **)(*ppuVar6 + 0x18))(ppuVar6); + local_res18 = local_res18 + 0x18; + plVar7 = FUN_18001ab70(&local_res20,local_98,L"%Y-%m-%d %H:%M:%S"); + FUN_18001ad00(&local_res18, + L"Open stream file %s, create time %s, recorded as %dfps, total play time %ds (50fps)" + ,*param_2,*plVar7); + LOCK(); + piVar1 = (int *)(local_98[0] + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_98[0] + -0x18) + 8))(); + } + LOCK(); + piVar1 = (int *)(local_res18 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res18 + -0x18) + 8))(); + } + } + } + if (*(int *)(param_1 + 0x48) == 0) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x98))(param_1 + 0x50); + } + *(undefined4 *)(param_1 + 0x40) = 0; + FUN_18001c190(param_1); + uVar4 = *(undefined4 *)(param_1 + 0x48); + lVar5 = *param_2; + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + } + } + else { + lVar5 = *param_2; + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + uVar4 = 0; + } + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 18001bbd0 (27 bytes) name=Unwind@18001bbd0 + +void Unwind_18001bbd0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0xd8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001bbf0 (24 bytes) name=Unwind@18001bbf0 + +void Unwind_18001bbf0(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001bc10 (57 bytes) name=Catch@18001bc10 + +undefined * Catch_18001bc10(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0x50) = *(undefined8 *)(param_2 + 0x40); + (**(code **)(*(longlong *)(*(longlong *)(param_2 + 0xd0) + 0x50) + 0x98))(); + return &DAT_18001bb88; +} + + +================================================================== + +### EXPORT FUNC 18001bc50 (27 bytes) name=Unwind@18001bc50 + +void Unwind_18001bc50(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0xe0)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001bc70 (24 bytes) name=Unwind@18001bc70 + +void Unwind_18001bc70(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001bc90 (200 bytes) name=FUN_18001bc90 + +undefined8 FUN_18001bc90(void *param_1,undefined4 param_2,undefined8 param_3,longlong param_4) + +{ + HANDLE pvVar1; + CWinThread *pCVar2; + + if (((*(int *)((longlong)param_1 + 0x48) != 0) && (*(longlong *)((longlong)param_1 + 0x4e0) == 0)) + && (param_4 != 0)) { + *(undefined4 *)((longlong)param_1 + 0x4c4) = param_2; + *(longlong *)((longlong)param_1 + 0x4d0) = param_4; + *(code **)((longlong)param_1 + 0x4c8) = FUN_18000a410; + pvVar1 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,0,0,(LPCWSTR)0x0); + *(HANDLE *)((longlong)param_1 + 0x4e8) = pvVar1; + *(undefined4 *)((longlong)param_1 + 0x4d8) = 1; + pCVar2 = AfxBeginThread(FUN_18001bd60,param_1,0,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x4e0) = pCVar2; + *(undefined4 *)(pCVar2 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x4e0) + 0x58)); + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18001bd60 (547 bytes) name=FUN_18001bd60 + +undefined4 FUN_18001bd60(longlong param_1) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + undefined8 local_78 [2]; + int local_68; + int local_64; + undefined8 local_50; + undefined4 local_48; + undefined8 local_40; + undefined8 local_38; + undefined4 local_30; + + if (param_1 == 0) { + uVar1 = 1; + } + else if (*(longlong *)(param_1 + 0x4c8) == 0) { + uVar1 = 2; + } + else { + iVar5 = *(int *)(param_1 + 0xc4) + -0x40; +LAB_18001bdc0: + if ((*(int *)(param_1 + 0x4d8) != 0) && (*(int *)(param_1 + 0x48) != 0)) { + WaitForSingleObject(*(HANDLE *)(param_1 + 0x4e8),*(DWORD *)(param_1 + 0x4b8)); + if (*(int *)(param_1 + 0x4d8) != 0) { + if (*(int *)(param_1 + 0x4c0) == 0) goto LAB_18001be12; + *(undefined4 *)(param_1 + 0x4c0) = 0; + goto LAB_18001be1c; + } + } +LAB_18001bf69: + uVar1 = 0; + } + return uVar1; +LAB_18001be12: + if (*(int *)(param_1 + 0x4bc) == 0) { +LAB_18001be1c: + FUN_180001470(param_1 + 8); + if (*(int *)(param_1 + 200) <= *(int *)(param_1 + 0x40)) { + if (*(int *)(param_1 + 0x4c) == 0) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + goto LAB_18001bdc0; + } + FUN_18001bff0(param_1,0); + } + FUN_18001ef2c(local_78); + iVar2 = (**(code **)(*(longlong *)(param_1 + 0x50) + 0x68))(param_1 + 0x50,&local_68,0x40); + iVar3 = (**(code **)(*(longlong *)(param_1 + 0x50) + 0x68)) + (param_1 + 0x50,*(undefined8 *)(param_1 + 0x4d0),iVar5); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + iVar4 = *(int *)(param_1 + 0x4b4); + if (*(int *)(param_1 + 200) - *(int *)(param_1 + 0x40) <= iVar4) { + iVar4 = *(int *)(param_1 + 200) - *(int *)(param_1 + 0x40); + } + if (0 < iVar4) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x50)) + (param_1 + 0x50,(longlong)*(int *)(param_1 + 0xc4) * (longlong)iVar4,1); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + iVar4; + } + FUN_18001ef94(); + *(undefined8 *)(param_1 + 0x488) = local_50; + *(undefined4 *)(param_1 + 0x490) = local_48; + *(undefined8 *)(param_1 + 0x498) = local_40; + *(undefined8 *)(param_1 + 0x4a0) = local_38; + *(undefined4 *)(param_1 + 0x4a8) = local_30; + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + if ((((iVar2 != 0x40) || (iVar3 != iVar5)) || (local_68 != 0x40)) || (local_64 != 0x10100)) + goto LAB_18001bf69; + (**(code **)(param_1 + 0x4c8)) + (*(undefined4 *)(param_1 + 0x4c4),*(undefined8 *)(param_1 + 0x4d0),&local_68); + } + goto LAB_18001bdc0; +} + + +================================================================== + +### EXPORT FUNC 18001bf90 (24 bytes) name=Unwind@18001bf90 + +void Unwind_18001bf90(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001bfb0 (54 bytes) name=Catch@18001bfb0 + +undefined * Catch_18001bfb0(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0x38) = *(undefined8 *)(param_2 + 0x28); + (**(code **)(*(longlong *)(*(longlong *)(param_2 + 0xb0) + 8) + 0x28))(); + return &DAT_18001bf64; +} + + +================================================================== + +### EXPORT FUNC 18001bff0 (315 bytes) name=FUN_18001bff0 + +undefined4 FUN_18001bff0(longlong param_1,int param_2) + +{ + longlong lVar1; + int iVar2; + undefined4 uVar3; + longlong *plVar4; + undefined8 uVar5; + undefined8 local_58 [2]; + undefined1 local_48 [24]; + undefined8 local_30; + undefined4 local_28; + + uVar5 = 0xfffffffffffffffe; + uVar3 = 0; + if (*(int *)(param_1 + 0x48) != 0) { + FUN_180001470(param_1 + 8); + FUN_18001ef2c(local_58); + if (param_2 < 1) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x50))((longlong *)(param_1 + 0x50),0x418,0); + *(undefined4 *)(param_1 + 0x40) = 0; + } + else { + iVar2 = *(int *)(param_1 + 200) + -1; + if (iVar2 <= param_2) { + param_2 = iVar2; + } + lVar1 = *(longlong *)(param_1 + 0x50); + (**(code **)(lVar1 + 0x50)) + ((longlong *)(param_1 + 0x50), + (longlong)*(int *)(param_1 + 0xc4) * (longlong)param_2 + 0x418,0,lVar1,uVar5); + *(int *)(param_1 + 0x40) = param_2; + } + plVar4 = (longlong *)(param_1 + 0x50); + (**(code **)(*plVar4 + 0x68))(plVar4,local_48,0x40); + (**(code **)(*plVar4 + 0x50))(plVar4,0xffffffffffffffc0,1); + *(undefined8 *)(param_1 + 0x488) = local_30; + *(undefined4 *)(param_1 + 0x490) = local_28; + FUN_18001ef94(); + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(); + if ((*(int *)(param_1 + 0x48) != 0) && (*(int *)(param_1 + 0x40) < *(int *)(param_1 + 200))) { + if (*(int *)(param_1 + 0x4bc) != 0) { + *(undefined4 *)(param_1 + 0x4c0) = 1; + } + SetEvent(*(HANDLE *)(param_1 + 0x4e8)); + } + uVar3 = 1; + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18001c140 (24 bytes) name=Unwind@18001c140 + +void Unwind_18001c140(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c160 (36 bytes) name=Catch@18001c160 + +undefined * Catch_18001c160(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0x38) = *(undefined8 *)(param_2 + 0x28); + return &DAT_18001c0cd; +} + + +================================================================== + +### EXPORT FUNC 18001c190 (137 bytes) name=FUN_18001c190 + +void FUN_18001c190(longlong param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + + if (*(int *)(param_1 + 0x48) != 0) { + *(undefined4 *)(param_1 + 0x4b0) = 4; + iVar2 = (int)(float)*(int *)(param_1 + 0xdc); + iVar3 = 1; + if ((iVar2 < 1) || (iVar3 = iVar2, 0 < iVar2)) { + iVar1 = (int)(1000 / (longlong)iVar3); + iVar2 = iVar3; + if (iVar1 < 1) { + iVar1 = 1; + } + } + else { + iVar1 = 1000; + } + *(undefined4 *)(param_1 + 0x4b4) = 0; + if (iVar1 < 10) { + *(int *)(param_1 + 0x4b4) = (iVar1 + 9) / iVar1 + -1; + } + *(int *)(param_1 + 0x4b8) = ((*(int *)(param_1 + 0x4b4) + 1) * 1000) / iVar2; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001c220 (322 bytes) name=FUN_18001c220 + +undefined8 * FUN_18001c220(undefined8 *param_1) + +{ + undefined8 *puVar1; + undefined8 uVar2; + HANDLE pvVar3; + + *param_1 = CNetComm::vftable; + puVar1 = param_1 + 0x10; + FUN_18001ec00(puVar1); + *puVar1 = CCriticalSection::vftable; + uVar2 = FUN_1800013a0((longlong)puVar1); + if ((int)uVar2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + puVar1 = param_1 + 0x17; + FUN_18001ec00(puVar1); + *puVar1 = CCriticalSection::vftable; + uVar2 = FUN_1800013a0((longlong)puVar1); + if ((int)uVar2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + *(undefined4 *)(param_1 + 1) = 0; + *(undefined4 *)((longlong)param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 2) = 0; + *(undefined4 *)((longlong)param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 3) = 0; + *(undefined4 *)((longlong)param_1 + 0x1c) = 0; + param_1[4] = 0; + *(undefined4 *)(param_1 + 5) = 0; + param_1[6] = 0; + param_1[7] = 0; + FUN_1800357d0(param_1 + 8,0,0x38); + *(undefined4 *)(param_1 + 0xf) = 0; + param_1[0x59f] = 0; + param_1[0x5a0] = 0; + *(undefined4 *)(param_1 + 0x5a1) = 0; + *(undefined4 *)((longlong)param_1 + 0x2d0c) = 0; + pvVar3 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,0,0,(LPCWSTR)0x0); + param_1[0x5a2] = pvVar3; + FUN_1800357d0(param_1 + 0x1e,0,0x2c00); + *(undefined4 *)(param_1 + 0x59e) = 0; + *(undefined4 *)(param_1 + 0x5a3) = 0; + param_1[0x5a4] = 0; + param_1[0x5a5] = 0; + param_1[0x5a6] = 0; + param_1[0x5a7] = 0; + usb_init(); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001c370 (24 bytes) name=Unwind@18001c370 + +void Unwind_18001c370(undefined8 param_1,longlong param_2) + +{ + CSyncObject::~CSyncObject(*(CSyncObject **)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c390 (31 bytes) name=Unwind@18001c390 + +void Unwind_18001c390(undefined8 param_1,longlong param_2) + +{ + FUN_180001440((CSyncObject *)(*(longlong *)(param_2 + 0x40) + 0x80)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c3b0 (24 bytes) name=Unwind@18001c3b0 + +void Unwind_18001c3b0(undefined8 param_1,longlong param_2) + +{ + CSyncObject::~CSyncObject(*(CSyncObject **)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c3d0 (47 bytes) name=FUN_18001c3d0 + +undefined8 * FUN_18001c3d0(undefined8 *param_1,uint param_2) + +{ + FUN_18001c400(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001c400 (325 bytes) name=FUN_18001c400 + +void FUN_18001c400(undefined8 *param_1) + +{ + int *piVar1; + uint uVar2; + + *param_1 = CNetComm::vftable; + uVar2 = 0; + *(undefined4 *)(param_1 + 2) = 0; + if (*(int *)(param_1 + 3) != 0) { + FUN_18001d520((longlong)param_1); + } + if (*(int *)((longlong)param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 3) != 0) { + FUN_18001d520((longlong)param_1); + } + FUN_180001470((longlong)(param_1 + 0x10)); + if (*(int *)(param_1 + 0x59e) != 0) { + piVar1 = (int *)((longlong)param_1 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar2 = uVar2 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar2 < *(uint *)(param_1 + 0x59e)); + } + (**(code **)(param_1[0x10] + 0x28))(param_1 + 0x10); + if ((HWND)param_1[4] != (HWND)0x0) { + PostMessageW((HWND)param_1[4],0x111,0x83e9,0); + } + if (param_1[7] != 0) { + usb_release_interface(param_1[7],0); + usb_close(param_1[7]); + param_1[7] = 0; + } + param_1[6] = 0; + *(undefined4 *)((longlong)param_1 + 0x14) = 0; + } + *(undefined4 *)(param_1 + 0x59e) = 0; + CloseHandle((HANDLE)param_1[0x5a2]); + param_1[0x17] = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x19)); + CSyncObject::~CSyncObject((CSyncObject *)(param_1 + 0x17)); + param_1[0x10] = CCriticalSection::vftable; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x12)); + CSyncObject::~CSyncObject((CSyncObject *)(param_1 + 0x10)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c550 (31 bytes) name=Unwind@18001c550 + +void Unwind_18001c550(undefined8 param_1,longlong param_2) + +{ + FUN_180001440((CSyncObject *)(*(longlong *)(param_2 + 0x40) + 0x80)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c570 (31 bytes) name=Unwind@18001c570 + +void Unwind_18001c570(undefined8 param_1,longlong param_2) + +{ + FUN_180001440((CSyncObject *)(*(longlong *)(param_2 + 0x40) + 0xb8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c590 (223 bytes) name=FUN_18001c590 + +void FUN_18001c590(longlong param_1) + +{ + int *piVar1; + uint uVar2; + + uVar2 = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + if (*(int *)(param_1 + 0x18) != 0) { + FUN_18001d520(param_1); + } + if (*(int *)(param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 0x18) != 0) { + FUN_18001d520(param_1); + } + FUN_180001470(param_1 + 0x80); + if (*(int *)(param_1 + 0x2cf0) != 0) { + piVar1 = (int *)(param_1 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar2 = uVar2 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar2 < *(uint *)(param_1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + if (*(HWND *)(param_1 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(param_1 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(param_1 + 0x38) != 0) { + usb_release_interface(*(longlong *)(param_1 + 0x38),0); + usb_close(*(undefined8 *)(param_1 + 0x38)); + *(undefined8 *)(param_1 + 0x38) = 0; + } + *(undefined8 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + } + *(undefined4 *)(param_1 + 0x2cf0) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18001c670 (398 bytes) name=FUN_18001c670 + +undefined8 FUN_18001c670(longlong param_1,uint *param_2,uint param_3) + +{ + int *piVar1; + uint uVar2; + int iVar3; + undefined **ppuVar4; + undefined4 uVar5; + ulonglong uVar6; + undefined8 uVar7; + longlong local_res8; + longlong local_res20; + uint local_118; + undefined8 local_114 [31]; + + uVar5 = 2000; + uVar6 = (ulonglong)param_3; + uVar2 = usb_bulk_write(*(undefined8 *)(param_1 + 0x38),3,param_2,uVar6,2000); + if (uVar2 == param_3) { + if (*param_2 == 0x6bb6b671) { + uVar5 = 120000; + } + uVar7 = 0x100; + iVar3 = usb_bulk_read(*(undefined8 *)(param_1 + 0x38),0x82,&local_118,0x100,uVar5); + if (iVar3 < 4) { + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res20 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res20 = local_res20 + 0x18; + FUN_18001ad00(&local_res20,L"cmd=0X%X, ack time out.",(ulonglong)*param_2,uVar7); + LOCK(); + piVar1 = (int *)(local_res20 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res20 + -0x18) + 8))(); + } + uVar7 = 0; + } + else { + FUN_18001cf20(param_1,local_118,local_114,(ulonglong)(iVar3 - 4)); + uVar7 = 1; + } + } + else { + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res8 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res8 = local_res8 + 0x18; + FUN_18001ad00(&local_res8,L"usb_bulk_write() fail, cmd=0X%X.",(ulonglong)*param_2,uVar6); + LOCK(); + piVar1 = (int *)(local_res8 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res8 + -0x18) + 8))(); + } + uVar7 = 0; + } + return uVar7; +} + + +================================================================== + +### EXPORT FUNC 18001c800 (27 bytes) name=Unwind@18001c800 + +void Unwind_18001c800(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x160)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c820 (27 bytes) name=Unwind@18001c820 + +void Unwind_18001c820(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x178)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001c840 (183 bytes) name=FUN_18001c840 + +void FUN_18001c840(longlong param_1) + +{ + int *piVar1; + uint uVar2; + + if (*(int *)(param_1 + 0x18) != 0) { + FUN_18001d520(param_1); + } + FUN_180001470(param_1 + 0x80); + uVar2 = 0; + if (*(int *)(param_1 + 0x2cf0) != 0) { + piVar1 = (int *)(param_1 + 0x13c); + do { + if (*piVar1 != 0) { + *piVar1 = 0; + } + uVar2 = uVar2 + 1; + piVar1 = piVar1 + 0x16; + } while (uVar2 < *(uint *)(param_1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + if (*(HWND *)(param_1 + 0x20) != (HWND)0x0) { + PostMessageW(*(HWND *)(param_1 + 0x20),0x111,0x83e9,0); + } + if (*(longlong *)(param_1 + 0x38) != 0) { + usb_release_interface(*(longlong *)(param_1 + 0x38),0); + usb_close(*(undefined8 *)(param_1 + 0x38)); + *(undefined8 *)(param_1 + 0x38) = 0; + } + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined8 *)(param_1 + 0x30) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18001c900 (912 bytes) name=FUN_18001c900 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 FUN_18001c900(longlong param_1) + +{ + int *piVar1; + char *_Dst; + int iVar2; + uint uVar3; + undefined8 *puVar4; + bool bVar5; + undefined **ppuVar6; + undefined8 *puVar7; + undefined8 uVar8; + longlong lVar9; + longlong *plVar10; + int iVar11; + int iVar12; + int *piVar13; + undefined1 auStackY_188 [32]; + longlong local_158; + longlong local_150; + undefined8 local_148; + WCHAR local_138 [64]; + WCHAR local_b8 [64]; + ulonglong local_38; + + local_148 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_188; + if (*(int *)(param_1 + 0x10) == 0) { + SetLastError(0xe4ae0004); + uVar8 = 0; + } + else if (*(int *)(param_1 + 0x1c) == 0) { + bVar5 = false; + FUN_180001470(param_1 + 0x80); + iVar12 = *(int *)(param_1 + 0x2cf0); + iVar11 = iVar12 + -1; + if (-1 < iVar11) { + piVar13 = (int *)((longlong)iVar11 * 0x58 + 0x140 + param_1); + do { + *piVar13 = *piVar13 + -1; + if (*piVar13 == 0) { + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_158 = (**(code **)(*ppuVar6 + 0x18))(); + local_158 = local_158 + 0x18; + uVar8 = 0xffffffff; + MultiByteToWideChar(0,0,(LPCSTR)((longlong)iVar11 * 0x58 + 0xfc + param_1),-1,local_138, + 0x40); + FUN_18001ad00(&local_158,L"%s leaved.",local_138,uVar8); + if (iVar12 < *(int *)(param_1 + 0x2cf0)) { + memcpy((void *)((longlong)iVar11 * 0x58 + 0xf0 + param_1), + (void *)((longlong)iVar12 * 0x58 + 0xf0 + param_1), + (ulonglong)((*(int *)(param_1 + 0x2cf0) - iVar11) - 1) * 0x58); + } + *(int *)(param_1 + 0x2cf0) = *(int *)(param_1 + 0x2cf0) + -1; + bVar5 = true; + LOCK(); + piVar1 = (int *)(local_158 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_158 + -0x18) + 8))(); + } + } + iVar12 = iVar12 + -1; + piVar13 = piVar13 + -0x16; + iVar11 = iVar11 + -1; + } while (-1 < iVar11); + } + usb_find_busses(); + usb_find_devices(); + for (puVar7 = (undefined8 *)usb_get_busses(); puVar7 != (undefined8 *)0x0; + puVar7 = (undefined8 *)*puVar7) { + for (puVar4 = (undefined8 *)puVar7[0x42]; puVar4 != (undefined8 *)0x0; + puVar4 = (undefined8 *)*puVar4) { + if ((*(short *)(puVar4 + 0x44) == -0x7cc4) && (*(short *)((longlong)puVar4 + 0x222) == 1)) { + uVar3 = *(uint *)(param_1 + 0x2cf0); + iVar12 = uVar3 - 1; + lVar9 = (longlong)iVar12; + if (-1 < iVar12) { + plVar10 = (longlong *)(lVar9 * 0x58 + 0xf0 + param_1); + do { + if ((undefined8 *)*plVar10 == puVar4) { + *(undefined4 *)((longlong)iVar12 * 0x58 + 0x140 + param_1) = 5; + goto LAB_18001cc04; + } + iVar12 = iVar12 + -1; + plVar10 = plVar10 + -0xb; + lVar9 = lVar9 + -1; + } while (-1 < lVar9); + } + if (uVar3 < 0x80) { + lVar9 = (ulonglong)uVar3 * 0x58; + *(undefined8 **)(lVar9 + 0xf0 + param_1) = puVar4; + *(undefined4 *)(lVar9 + 0xf8 + param_1) = 0xffffffff; + _Dst = (char *)(lVar9 + 0xfc + param_1); + strcpy_s(_Dst,0x40,(char *)(puVar4 + 2)); + *(undefined4 *)(lVar9 + 0x13c + param_1) = 0; + *(undefined4 *)(lVar9 + 0x140 + param_1) = 5; + *(int *)(param_1 + 0x2cf0) = *(int *)(param_1 + 0x2cf0) + 1; + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_150 = (**(code **)(*ppuVar6 + 0x18))(); + local_150 = local_150 + 0x18; + uVar8 = 0xffffffff; + MultiByteToWideChar(0,0,_Dst,-1,local_b8,0x40); + FUN_18001ad00(&local_150,L"Found camera %s.",local_b8,uVar8); + bVar5 = true; + LOCK(); + piVar13 = (int *)(local_150 + -8); + iVar12 = *piVar13; + *piVar13 = *piVar13 + -1; + UNLOCK(); + if (iVar12 + -1 < 1) { + (**(code **)(**(longlong **)(local_150 + -0x18) + 8))(); + } + } + } +LAB_18001cc04: + } + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + if ((bVar5) && (*(HWND *)(param_1 + 0x20) != (HWND)0x0)) { + PostMessageW(*(HWND *)(param_1 + 0x20),0x111,0x83ea,0); + } + uVar8 = 1; + } + else { + uVar8 = 0; + } + return uVar8; +} + + +================================================================== + +### EXPORT FUNC 18001cca0 (24 bytes) name=Unwind@18001cca0 + +void Unwind_18001cca0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ccc0 (24 bytes) name=Unwind@18001ccc0 + +void Unwind_18001ccc0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x38)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001cce0 (536 bytes) name=FUN_18001cce0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 FUN_18001cce0(longlong param_1,uint param_2) + +{ + int *piVar1; + int iVar2; + DWORD DVar3; + undefined4 uVar4; + longlong lVar5; + undefined **ppuVar6; + longlong lVar7; + undefined8 uVar8; + undefined1 auStackY_268 [32]; + longlong local_238 [2]; + WCHAR local_228 [264]; + ulonglong local_18; + + local_238[1] = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStackY_268; + if (*(int *)(param_1 + 0x14) == 0) { + FUN_180001470(param_1 + 0x80); + if (param_2 < *(uint *)(param_1 + 0x2cf0)) { + lVar7 = (ulonglong)param_2 * 0x58; + lVar5 = usb_open(*(undefined8 *)(lVar7 + 0xf0 + param_1)); + *(longlong *)(param_1 + 0x38) = lVar5; + if (lVar5 != 0) { + *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(lVar7 + 0xf0 + param_1); + iVar2 = usb_set_configuration(lVar5,2); + if ((iVar2 < 0) && + (iVar2 = usb_set_configuration(*(undefined8 *)(param_1 + 0x38),1), iVar2 < 0)) { + usb_close(*(undefined8 *)(param_1 + 0x38)); + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + SetLastError(0xe4ae0007); + return 0; + } + iVar2 = usb_claim_interface(*(undefined8 *)(param_1 + 0x38),0); + if (iVar2 < 0) { + usb_close(*(undefined8 *)(param_1 + 0x38)); + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + SetLastError(0xe4ae0007); + return 0; + } + *(undefined4 *)(lVar7 + 0x13c + param_1) = 1; + DVar3 = GetTickCount(); + *(DWORD *)(param_1 + 0x78) = DVar3; + *(undefined4 *)(param_1 + 0x14) = 1; + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_238[0] = (**(code **)(*ppuVar6 + 0x18))(ppuVar6); + local_238[0] = local_238[0] + 0x18; + uVar8 = 0xffffffff; + MultiByteToWideChar(0,0,(LPCSTR)(lVar7 + 0xfc + param_1),-1,local_228,0x104); + FUN_18001ad00(local_238,L"Connected to %s.",local_228,uVar8); + LOCK(); + piVar1 = (int *)(local_238[0] + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_238[0] + -0x18) + 8))(); + } + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + uVar4 = *(undefined4 *)(param_1 + 0x14); + } + else { + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + SetLastError(0xe4ae0001); + uVar4 = 0; + } + } + else { + SetLastError(0xe4ae000a); + uVar4 = 0; + } + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 18001cf00 (24 bytes) name=Unwind@18001cf00 + +void Unwind_18001cf00(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001cf20 (877 bytes) name=FUN_18001cf20 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18001cf20(longlong param_1,uint param_2,undefined8 *param_3,ulonglong param_4) + +{ + int *piVar1; + longlong *plVar2; + undefined **ppuVar3; + longlong lVar4; + uint uVar5; + uint *_Src; + uint uVar6; + uint *puVar7; + int iVar8; + bool bVar9; + undefined1 auStack_d8 [32]; + longlong local_b8 [2]; + undefined1 local_a8 [96]; + ulonglong local_48; + + local_b8[1] = 0xfffffffffffffffe; + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + uVar6 = (uint)param_4; + switch(param_2) { + case 0x5bb5b55b: + if ((param_3 != (undefined8 *)0x0) && (0x37 < uVar6)) { + *(undefined8 *)(param_1 + 0x2d40) = *param_3; + *(undefined8 *)(param_1 + 0x2d48) = param_3[1]; + *(undefined8 *)(param_1 + 0x2d50) = param_3[2]; + *(undefined8 *)(param_1 + 0x2d58) = param_3[3]; + *(undefined8 *)(param_1 + 0x2d60) = param_3[4]; + *(undefined8 *)(param_1 + 0x2d68) = param_3[5]; + *(undefined8 *)(param_1 + 0x2d70) = param_3[6]; + if ((*(int *)(param_1 + 0x2d50) != 0) && (*(int *)(param_1 + 0x2d54) != 0)) { + memcpy((void *)(param_1 + 0x40),param_3,0x38); + FUN_180001470(param_1 + 0x80); + uVar6 = 0; + iVar8 = 0; + if (*(int *)(param_1 + 0x2cf0) != 0) { + plVar2 = (longlong *)(param_1 + 0xf0); + do { + if (*plVar2 == *(longlong *)(param_1 + 0x30)) { + lVar4 = (ulonglong)uVar6 * 0x58; + *(undefined4 *)(lVar4 + 0xf8 + param_1) = *(undefined4 *)(param_1 + 0x40); + FUN_180032bb0((char *)(lVar4 + 0xfc + param_1),(byte *)"Cube-%d", + (ulonglong)*(uint *)(param_1 + 0x40),param_4); + iVar8 = *(int *)(lVar4 + 0xf8 + param_1); + if ((iVar8 != 0) && (*(int *)(param_1 + 0x2cf0) != 1)) { + puVar7 = (uint *)(param_1 + 0xf8); + uVar6 = 1; + do { + if (uVar6 < *(uint *)(param_1 + 0x2cf0)) { + _Src = puVar7 + 0x14; + uVar5 = uVar6; + do { + if (_Src[2] < *puVar7) { + memcpy(local_a8,puVar7 + -2,0x58); + memcpy(puVar7 + -2,_Src,0x58); + memcpy(_Src,local_a8,0x58); + } + uVar5 = uVar5 + 1; + _Src = _Src + 0x16; + } while (uVar5 < *(uint *)(param_1 + 0x2cf0)); + } + puVar7 = puVar7 + 0x16; + bVar9 = uVar6 < *(int *)(param_1 + 0x2cf0) - 1U; + uVar6 = uVar6 + 1; + } while (bVar9); + } + break; + } + uVar6 = uVar6 + 1; + plVar2 = plVar2 + 0xb; + iVar8 = 0; + } while (uVar6 < *(uint *)(param_1 + 0x2cf0)); + } + (**(code **)(*(longlong *)(param_1 + 0x80) + 0x28))(param_1 + 0x80); + if ((iVar8 != 0) && (*(HWND *)(param_1 + 0x20) != (HWND)0x0)) { + PostMessageW(*(HWND *)(param_1 + 0x20),0x111,0x83ea,0); + } + } + } + break; + case 0x5bb5b55c: + if ((param_3 != (undefined8 *)0x0) && (0x37 < uVar6)) { + *(undefined8 *)(param_1 + 0x2d78) = *param_3; + *(undefined8 *)(param_1 + 0x2d80) = param_3[1]; + *(undefined8 *)(param_1 + 0x2d88) = param_3[2]; + *(undefined8 *)(param_1 + 0x2d90) = param_3[3]; + *(undefined8 *)(param_1 + 0x2d98) = param_3[4]; + *(undefined8 *)(param_1 + 0x2da0) = param_3[5]; + *(undefined8 *)(param_1 + 0x2da8) = param_3[6]; + } + break; + case 0x5bb5b55d: + case 0x5bb5b55e: + if ((param_3 != (undefined8 *)0x0) && (0xf < uVar6)) { + *(undefined8 *)(param_1 + 0x2db0) = *param_3; + *(undefined8 *)(param_1 + 0x2db8) = param_3[1]; + } + break; + case 0x5bb5b55f: + case 0x5bb5b560: + break; + default: + ppuVar3 = FUN_18001fcc0(); + if (ppuVar3 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_b8[0] = (**(code **)(*ppuVar3 + 0x18))(ppuVar3); + local_b8[0] = local_b8[0] + 0x18; + FUN_18001ad00(local_b8,L"Unkown cmd received: cmd=0X%X len=%d.",(ulonglong)param_2, + param_4 & 0xffffffff); + LOCK(); + piVar1 = (int *)(local_b8[0] + -8); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(**(longlong **)(local_b8[0] + -0x18) + 8))(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001d2b0 (24 bytes) name=Unwind@18001d2b0 + +void Unwind_18001d2b0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001d2d0 (578 bytes) name=FUN_18001d2d0 + +undefined8 FUN_18001d2d0(void *param_1,undefined4 param_2,longlong param_3) + +{ + LPVOID pvVar1; + LPVOID pvVar2; + CWinThread *pCVar3; + undefined8 uVar4; + uint local_res8 [2]; + + if (*(int *)((longlong)param_1 + 0x18) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (param_3 != 0) { + *(undefined4 *)((longlong)param_1 + 0x2d18) = param_2; + *(undefined4 *)((longlong)param_1 + 8) = 0; + *(undefined4 *)((longlong)param_1 + 0xc) = 0; + if (*(LPVOID *)((longlong)param_1 + 0x2d20) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d20)); + *(undefined8 *)((longlong)param_1 + 0x2d20) = 0; + } + pvVar1 = thunk_FUN_18001eb74((ulonglong)*(uint *)((longlong)param_1 + 0x2d18) * 2 + 0xb0); + *(LPVOID *)((longlong)param_1 + 0x2d20) = pvVar1; + if (*(LPVOID *)((longlong)param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d28)); + *(undefined8 *)((longlong)param_1 + 0x2d28) = 0; + } + pvVar2 = thunk_FUN_18001eb74((ulonglong)*(uint *)((longlong)param_1 + 0x2d18) + 0x4c); + pvVar1 = *(LPVOID *)((longlong)param_1 + 0x2d20); + *(LPVOID *)((longlong)param_1 + 0x2d28) = pvVar2; + if ((pvVar1 == (LPVOID)0x0) || (pvVar2 == (LPVOID)0x0)) { + if (pvVar1 != (LPVOID)0x0) { + thunk_FUN_180034a70(pvVar1); + *(undefined8 *)((longlong)param_1 + 0x2d20) = 0; + } + if (*(LPVOID *)((longlong)param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x2d28)); + *(undefined8 *)((longlong)param_1 + 0x2d28) = 0; + } + SetLastError(0xe4ae0002); + } + else { + *(longlong *)((longlong)param_1 + 0x2d30) = param_3; + *(code **)((longlong)param_1 + 0x2d38) = FUN_180009ee0; + ResetEvent(*(HANDLE *)((longlong)param_1 + 0x2d10)); + *(undefined4 *)((longlong)param_1 + 0x2d0c) = 1; + pCVar3 = AfxBeginThread(FUN_18001d610,param_1,-1,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x2d00) = pCVar3; + *(undefined4 *)(pCVar3 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x2d00) + 0x58)); + *(undefined4 *)((longlong)param_1 + 0x2d08) = 1; + pCVar3 = AfxBeginThread(FUN_18001d930,param_1,0,0,4,(_SECURITY_ATTRIBUTES *)0x0); + *(CWinThread **)((longlong)param_1 + 0x2cf8) = pCVar3; + *(undefined4 *)(pCVar3 + 0x50) = 0; + ResumeThread(*(HANDLE *)(*(longlong *)((longlong)param_1 + 0x2cf8) + 0x58)); + Sleep(0x32); + local_res8[0] = 0x6bb6b673; + if (*(int *)((longlong)param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar4 = FUN_18001c670((longlong)param_1,local_res8,4); + if ((int)uVar4 != 0) { + *(undefined4 *)((longlong)param_1 + 0x18) = 1; + return 1; + } + } + FUN_18001d520((longlong)param_1); + } + return 0; + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### EXPORT FUNC 18001d520 (240 bytes) name=FUN_18001d520 + +void FUN_18001d520(longlong param_1) + +{ + longlong *plVar1; + uint local_res8 [2]; + + if (*(int *)(param_1 + 0x14) != 0) { + local_res8[0] = 0x6bb6b674; + FUN_18001c670(param_1,local_res8,4); + } + *(undefined4 *)(param_1 + 0x2d08) = 0; + if (*(longlong *)(param_1 + 0x2cf8) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(param_1 + 0x2cf8) + 0x58),0xffffffff); + plVar1 = *(longlong **)(param_1 + 0x2cf8); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + *(undefined8 *)(param_1 + 0x2cf8) = 0; + } + *(undefined4 *)(param_1 + 0x2d0c) = 0; + SetEvent(*(HANDLE *)(param_1 + 0x2d10)); + if (*(longlong *)(param_1 + 0x2d00) != 0) { + WaitForSingleObject(*(HANDLE *)(*(longlong *)(param_1 + 0x2d00) + 0x58),0xffffffff); + plVar1 = *(longlong **)(param_1 + 0x2d00); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + *(undefined8 *)(param_1 + 0x2d00) = 0; + } + if (*(LPVOID *)(param_1 + 0x2d20) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2d20)); + *(undefined8 *)(param_1 + 0x2d20) = 0; + } + if (*(LPVOID *)(param_1 + 0x2d28) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x2d28)); + *(undefined8 *)(param_1 + 0x2d28) = 0; + } + *(undefined4 *)(param_1 + 0x18) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18001d610 (200 bytes) name=FUN_18001d610 + +undefined4 FUN_18001d610(longlong param_1) + +{ + int iVar1; + + if (param_1 == 0) { + return 1; + } + if (*(longlong *)(param_1 + 0x2d38) != 0) { + iVar1 = *(int *)(param_1 + 0x2d0c); + while ((iVar1 != 0 && + (WaitForSingleObject(*(HANDLE *)(param_1 + 0x2d10),0xffffffff), + *(int *)(param_1 + 0x2d0c) != 0))) { + FUN_180001470(param_1 + 0xb8); + memcpy(*(void **)(param_1 + 0x2d30),*(void **)(param_1 + 0x2d28), + (ulonglong)*(uint *)(param_1 + 0x2d18) + 0x4c); + (**(code **)(*(longlong *)(param_1 + 0xb8) + 0x28))(param_1 + 0xb8); + if (*(code **)(param_1 + 0x2d38) != (code *)0x0) { + (**(code **)(param_1 + 0x2d38))(*(undefined4 *)(param_1 + 0x28)); + } + iVar1 = *(int *)(param_1 + 0x2d0c); + } + return 0; + } + return 2; +} + + +================================================================== + +### EXPORT FUNC 18001d6e0 (589 bytes) name=FUN_18001d6e0 + +undefined8 FUN_18001d6e0(longlong param_1,undefined8 *param_2,undefined8 *param_3,uint param_4) + +{ + DWORD DVar1; + DWORD DVar2; + undefined8 uVar3; + int iVar4; + int iVar5; + uint local_res10 [2]; + + if ((param_2 == (undefined8 *)0x0) || (param_3 == (undefined8 *)0x0)) { + SetLastError(0xe4ae0001); + return 0; + } + *(undefined8 *)(param_1 + 0x2d40) = 0; + *(undefined8 *)(param_1 + 0x2d48) = 0; + *(undefined8 *)(param_1 + 0x2d50) = 0; + *(undefined8 *)(param_1 + 0x2d58) = 0; + *(undefined8 *)(param_1 + 0x2d60) = 0; + *(undefined8 *)(param_1 + 0x2d68) = 0; + *(undefined8 *)(param_1 + 0x2d70) = 0; + *(undefined8 *)(param_1 + 0x2d78) = 0; + *(undefined8 *)(param_1 + 0x2d80) = 0; + *(undefined8 *)(param_1 + 0x2d88) = 0; + *(undefined8 *)(param_1 + 0x2d90) = 0; + *(undefined8 *)(param_1 + 0x2d98) = 0; + *(undefined8 *)(param_1 + 0x2da0) = 0; + iVar5 = 0; + *(undefined8 *)(param_1 + 0x2da8) = 0; + local_res10[0] = 0x6bb6b66b; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + iVar4 = 0; + } + else { + uVar3 = FUN_18001c670(param_1,local_res10,4); + iVar4 = (int)uVar3; + } + local_res10[0] = 0x6bb6b66c; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar3 = FUN_18001c670(param_1,local_res10,4); + iVar5 = (int)uVar3; + } + if ((iVar4 != 0) && (iVar5 != 0)) { + DVar1 = GetTickCount(); + do { + Sleep(10); + if ((*(int *)(param_1 + 0x2d50) != 0) && (*(int *)(param_1 + 0x2d78) != 0)) break; + DVar2 = GetTickCount(); + } while (DVar2 - DVar1 < param_4); + if ((*(int *)(param_1 + 0x2d50) != 0) && (*(int *)(param_1 + 0x2d78) != 0)) { + *param_2 = *(undefined8 *)(param_1 + 0x2d40); + param_2[1] = *(undefined8 *)(param_1 + 0x2d48); + param_2[2] = *(undefined8 *)(param_1 + 0x2d50); + param_2[3] = *(undefined8 *)(param_1 + 0x2d58); + param_2[4] = *(undefined8 *)(param_1 + 0x2d60); + param_2[5] = *(undefined8 *)(param_1 + 0x2d68); + param_2[6] = *(undefined8 *)(param_1 + 0x2d70); + *param_3 = *(undefined8 *)(param_1 + 0x2d78); + param_3[1] = *(undefined8 *)(param_1 + 0x2d80); + param_3[2] = *(undefined8 *)(param_1 + 0x2d88); + param_3[3] = *(undefined8 *)(param_1 + 0x2d90); + param_3[4] = *(undefined8 *)(param_1 + 0x2d98); + param_3[5] = *(undefined8 *)(param_1 + 0x2da0); + param_3[6] = *(undefined8 *)(param_1 + 0x2da8); + return 1; + } + SetLastError(0xe4ae0008); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18001d930 (1392 bytes) name=FUN_18001d930 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 FUN_18001d930(longlong param_1) + +{ + int *piVar1; + uint uVar2; + uint *_Dst; + undefined8 *puVar3; + bool bVar4; + LPCSTR pCVar5; + undefined4 uVar6; + uint uVar7; + undefined **ppuVar8; + longlong lVar9; + undefined8 uVar10; + int *_Src; + ulonglong uVar11; + uint *_Src_00; + uint uVar12; + size_t _Size; + ulonglong uVar13; + int iVar14; + int *piVar15; + undefined1 auStackY_2e8 [32]; + longlong local_2a8; + LPCSTR local_2a0; + longlong local_298 [2]; + undefined4 local_288; + uint uStack_284; + uint local_280; + undefined4 uStack_27c; + undefined4 local_278; + int iStack_274; + undefined4 local_270; + undefined4 uStack_26c; + undefined4 local_268; + undefined4 uStack_264; + int local_260; + int iStack_25c; + undefined8 local_258; + undefined8 local_250; + undefined4 local_248; + uint uStack_244; + undefined4 local_240; + undefined8 local_238; + WCHAR local_228 [256]; + ulonglong local_28; + + local_238 = 0xfffffffffffffffe; + local_28 = DAT_18006cea0 ^ (ulonglong)auStackY_2e8; + if (param_1 == 0) { + uVar6 = 1; + } + else { + local_288 = 0; + FUN_1800357d0((ulonglong *)&uStack_284,0,0x48); + uStack_27c = 1; + local_278 = 0; + iStack_274 = *(int *)(param_1 + 0x50); + local_270 = *(undefined4 *)(param_1 + 0x54); + uStack_26c = 8; + local_268 = 0xffff3cb0; + bVar4 = false; + piVar15 = *(int **)(param_1 + 0x2d20); + if (*(int *)(param_1 + 0x2d08) != 0) { + while( true ) { + iVar14 = (int)piVar15; + uVar7 = usb_bulk_read(*(undefined8 *)(param_1 + 0x38),0x81,piVar15, + (*(int *)(param_1 + 0x2d18) * 2 - iVar14) + *(int *)(param_1 + 0x2d20) + ); + if (*(int *)(param_1 + 0x2d08) == 0) break; + if ((int)uVar7 < 0) { + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar9 = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_2a0 = (LPCSTR)(lVar9 + 0x18); + uVar10 = usb_strerror(); + FUN_18001e660((longlong *)&local_2a0,(byte *)"usb error: usb_bulk_read=%d, %s", + (ulonglong)uVar7,uVar10); + pCVar5 = local_2a0; + MultiByteToWideChar(0,0,local_2a0,-1,local_228,0x100); + Sleep(10); + if (uVar7 == 0xfffffffb) { + usb_clear_halt(*(undefined8 *)(param_1 + 0x38),0x81); + LOCK(); + piVar15 = (int *)(pCVar5 + -8); + iVar14 = *piVar15; + *piVar15 = *piVar15 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(pCVar5 + -0x18) + 8))(); + } + break; + } + piVar15 = *(int **)(param_1 + 0x2d20); + LOCK(); + piVar1 = (int *)(pCVar5 + -8); + iVar14 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(pCVar5 + -0x18) + 8))(); + } + } + else { + uVar12 = (iVar14 - *(int *)(param_1 + 0x2d20)) + uVar7; + if (!bVar4) { + piVar1 = (int *)((longlong)piVar15 + (longlong)(int)uVar7); + piVar15 = *(int **)(param_1 + 0x2d20); + for (_Src = piVar15; _Src < piVar1; _Src = _Src + 1) { + if (*_Src == 0x1bb1b11b) goto LAB_18001db0e; + } + if (*_Src != 0x1bb1b11b) goto LAB_18001de17; +LAB_18001db0e: + uVar12 = (iVar14 - (int)_Src) + uVar7; + if (_Src != piVar15) { + memcpy(piVar15,_Src,(longlong)(int)uVar12); + } + bVar4 = true; + } + uVar7 = *(uint *)(param_1 + 0x2d18); + uVar13 = (ulonglong)uVar7; + uVar11 = (ulonglong)(int)uVar12; + if (uVar11 < uVar13 + 0x38) { + piVar15 = (int *)(uVar11 + *(longlong *)(param_1 + 0x2d20)); + } + else { + _Dst = *(uint **)(param_1 + 0x2d20); + if (*_Dst == 0x1bb1b11b) { + uVar2 = _Dst[2]; + if (((uVar2 == uVar7) && (*(int *)(uVar13 + 0x1c + (longlong)_Dst) == 0x1bb1b11c)) && + ((iVar14 = *(int *)(uVar13 + 0x28 + (longlong)_Dst), iVar14 == 0 || (iVar14 == 1))) + ) { + uStack_284 = _Dst[1]; + uStack_244 = _Dst[3]; + if (iStack_274 == 0xa0) { + iStack_25c = *(int *)(uVar13 + 0x24 + (longlong)_Dst); + local_260 = iStack_25c + -500; + } + else if (iStack_274 == 0x180) { + local_260 = *(int *)(uVar13 + 0x2c + (longlong)_Dst); + iStack_25c = local_260 + 500; + } + else if (iStack_274 == 0x280) { + local_260 = *(int *)(uVar13 + 0x2c + (longlong)_Dst); + iStack_25c = *(int *)(uVar13 + 0x24 + (longlong)_Dst); + } + local_280 = uVar2; + FUN_180001470(param_1 + 0xb8); + puVar3 = *(undefined8 **)(param_1 + 0x2d28); + *puVar3 = CONCAT44(uStack_284,local_288); + puVar3[1] = CONCAT44(uStack_27c,local_280); + puVar3[2] = CONCAT44(iStack_274,local_278); + puVar3[3] = CONCAT44(uStack_26c,local_270); + puVar3[4] = CONCAT44(uStack_264,local_268); + puVar3[5] = CONCAT44(iStack_25c,local_260); + puVar3[6] = local_258; + puVar3[7] = local_250; + puVar3[8] = CONCAT44(uStack_244,local_248); + *(undefined4 *)(puVar3 + 9) = local_240; + memcpy((void *)(*(longlong *)(param_1 + 0x2d28) + 0x4c), + (void *)(*(longlong *)(param_1 + 0x2d20) + 0x1c), + (ulonglong)*(uint *)(param_1 + 0x2d18)); + (**(code **)(*(longlong *)(param_1 + 0xb8) + 0x28))(param_1 + 0xb8); + SetEvent(*(HANDLE *)(param_1 + 0x2d10)); + *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1; + } + else { + if ((uVar2 != uVar7) || (*(int *)(uVar13 + 0x1c + (longlong)_Dst) == 0x1bb1b11c)) + goto LAB_18001dd96; + for (_Src_00 = (uint *)((uVar11 & 0xfffffffffffffffc) + (longlong)_Dst); + _Dst < _Src_00; _Src_00 = _Src_00 + -1) { + if (*_Src_00 == 0x1bb1b11b) goto LAB_18001dcf0; + } + if (*_Src_00 == 0x1bb1b11b) { +LAB_18001dcf0: + if (_Dst < _Src_00) { + _Size = (size_t)(int)(uVar12 + ((int)_Dst - (int)_Src_00)); + memcpy(_Dst,_Src_00,_Size); + piVar15 = (int *)(_Size + *(longlong *)(param_1 + 0x2d20)); + goto LAB_18001de17; + } + } + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_298[0] = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_298[0] = local_298[0] + 0x18; + FUN_18001ad00(local_298, + L"drop1, lentgh=%d, startcode=%X, sendbyte=%d, endcode=%X, intDrop=%d" + ,(ulonglong)uVar12,(ulonglong)*_Dst); + LOCK(); + piVar15 = (int *)(local_298[0] + -8); + iVar14 = *piVar15; + *piVar15 = *piVar15 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(local_298[0] + -0x18) + 8))(); + } + } + } + else { +LAB_18001dd96: + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_2a8 = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_2a8 = local_2a8 + 0x18; + FUN_18001ad00(&local_2a8, + L"drop2, lentgh=%d, startcode=%X, sendbyte=%d, endcode=%X, intDrop=%d", + (ulonglong)uVar12,(ulonglong)*_Dst); + LOCK(); + piVar15 = (int *)(local_2a8 + -8); + iVar14 = *piVar15; + *piVar15 = *piVar15 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(local_2a8 + -0x18) + 8))(); + } + } + bVar4 = false; + piVar15 = *(int **)(param_1 + 0x2d20); + } + } +LAB_18001de17: + if (*(int *)(param_1 + 0x2d08) == 0) break; + } + } + uVar6 = 0; + } + return uVar6; +} + + +================================================================== + +### EXPORT FUNC 18001deb0 (24 bytes) name=Unwind@18001deb0 + +void Unwind_18001deb0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ded0 (24 bytes) name=Unwind@18001ded0 + +void Unwind_18001ded0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001def0 (24 bytes) name=Unwind@18001def0 + +void Unwind_18001def0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001df10 (427 bytes) name=FUN_18001df10 + +bool FUN_18001df10(longlong param_1,longlong *param_2) + +{ + int *piVar1; + int iVar2; + ulonglong uVar3; + longlong lVar4; + undefined8 uVar5; + __uint64 _Var6; + bool bVar7; + uint local_res8 [2]; + longlong *local_res10; + uint local_40; + CFile local_30 [40]; + + local_res10 = param_2; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + *(undefined8 *)(param_1 + 0x2db0) = 0; + *(undefined8 *)(param_1 + 0x2db8) = 0; + local_res8[0] = 0x6bb6b66f; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar5 = FUN_18001c670(param_1,local_res8,4); + if (((int)uVar5 != 0) && (*(int *)(param_1 + 0x2db0) != 0)) { + uVar3 = *(ulonglong *)(param_1 + 0x2db0); + local_40 = (uint)uVar3; + if (0x3f00000 < local_40) { + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + return false; + } + FUN_180020138((undefined8 *)local_30); + uVar5 = FUN_180020a6c((longlong)local_30,(LPCWSTR)*param_2,0x40,0); + if ((int)uVar5 == 0) { + FUN_1800203a4(local_30); + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + return true; + } + _Var6 = CFile::GetLength(local_30); + bVar7 = _Var6 != (uVar3 & 0xffffffff); + CFile::Close(local_30); + FUN_1800203a4(local_30); + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (0 < iVar2 + -1) { + return bVar7; + } + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + return bVar7; + } + } + } + lVar4 = *param_2; + LOCK(); + piVar1 = (int *)(lVar4 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar4 + -0x18) + 8))(); + } + return true; +} + + +================================================================== + +### EXPORT FUNC 18001e0c0 (24 bytes) name=Unwind@18001e0c0 + +void Unwind_18001e0c0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x78)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001e0e0 (24 bytes) name=Unwind@18001e0e0 + +void Unwind_18001e0e0(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x38)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001e100 (533 bytes) name=FUN_18001e100 + +bool FUN_18001e100(longlong param_1,longlong *param_2) + +{ + int *piVar1; + uint uVar2; + longlong lVar3; + uint uVar4; + LPVOID pvVar5; + int iVar6; + undefined8 uVar7; + LPVOID pvVar8; + bool bVar9; + uint local_res18 [2]; + LPVOID local_res20; + undefined8 local_68 [2]; + CFile local_58 [40]; + + *(undefined8 *)(param_1 + 0x2db0) = 0; + *(undefined8 *)(param_1 + 0x2db8) = 0; + local_res18[0] = 0x6bb6b670; + if (*(int *)(param_1 + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar7 = FUN_18001c670(param_1,local_res18,4); + if ((((int)uVar7 != 0) && (*(int *)(param_1 + 0x2db0) != 0)) && + (*(uint *)(param_1 + 0x2db0) < 0x3f00001)) { + uVar2 = *(uint *)(param_1 + 0x2db0); + pvVar8 = thunk_FUN_18001eb74((longlong)(int)uVar2); + uVar4 = uVar2; + pvVar5 = pvVar8; + local_res20 = pvVar8; + if (pvVar8 == (LPVOID)0x0) { + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return false; + } + while ((0 < (int)uVar4 && + (iVar6 = usb_bulk_read(*(undefined8 *)(param_1 + 0x38),0x84,pvVar5,uVar4,20000), + 0 < iVar6))) { + uVar4 = uVar4 - iVar6; + pvVar5 = (LPVOID)((longlong)pvVar5 + (longlong)iVar6); + } + if (uVar4 != 0) { + thunk_FUN_180034a70(pvVar8); + usb_strerror(); + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return false; + } + FUN_180020138((undefined8 *)local_58); + uVar7 = FUN_180020a6c((longlong)local_58,(LPCWSTR)*param_2,0x1021,0); + bVar9 = (int)uVar7 != 0; + if (bVar9) { + FUN_18001ef2c(local_68); + CFile::Write(local_58,pvVar8,uVar2); + FUN_18001ef94(); + CFile::Close(local_58); + } + thunk_FUN_180034a70(pvVar8); + FUN_1800203a4(local_58); + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (0 < iVar6 + -1) { + return bVar9; + } + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + return bVar9; + } + } + lVar3 = *param_2; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar6 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar6 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return false; +} + + +================================================================== + +### EXPORT FUNC 18001e330 (27 bytes) name=Unwind@18001e330 + +void Unwind_18001e330(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0xb8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001e350 (24 bytes) name=Unwind@18001e350 + +void Unwind_18001e350(undefined8 param_1,longlong param_2) + +{ + FUN_1800203a4((CFile *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001e370 (24 bytes) name=Unwind@18001e370 + +void Unwind_18001e370(void) + +{ + thunk_FUN_18001ef94(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001e390 (36 bytes) name=Catch@18001e390 + +undefined * Catch_18001e390(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(param_2 + 0x48) = *(undefined8 *)(param_2 + 0x38); + return &DAT_18001e29d; +} + + +================================================================== + +### EXPORT FUNC 18001e3c0 (192 bytes) name=FUN_18001e3c0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +longlong * FUN_18001e3c0(longlong param_1,longlong *param_2) + +{ + undefined **ppuVar1; + longlong lVar2; + undefined1 auStack_268 [32]; + undefined4 local_248; + undefined8 local_240; + longlong *local_238; + WCHAR local_228 [264]; + ulonglong local_18; + + local_240 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_268; + local_248 = 0; + local_238 = param_2; + GetTempPathW(0x104,local_228); + ppuVar1 = FUN_18001fcc0(); + if (ppuVar1 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*ppuVar1 + 0x18))(ppuVar1); + *param_2 = lVar2 + 0x18; + local_248 = 1; + FUN_18001ad00(param_2,L"%sCore%d",local_228,(ulonglong)*(uint *)(param_1 + 0x40)); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18001e490 (38 bytes) name=Unwind@18001e490 + +void Unwind_18001e490(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 1) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; + FUN_18000b5e0(*(longlong **)(param_2 + 0x30)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001e4c0 (372 bytes) name=FUN_18001e4c0 + +ulonglong FUN_18001e4c0(longlong param_1) + +{ + int *piVar1; + int iVar2; + void *pvVar3; + bool bVar4; + undefined8 *puVar5; + undefined7 extraout_var; + ulonglong uVar6; + longlong lVar7; + undefined7 extraout_var_00; + longlong lVar8; + void *local_res10; + longlong local_res18; + longlong local_res20; + + FUN_18001e3c0(param_1,(longlong *)&local_res10); + pvVar3 = local_res10; + puVar5 = (undefined8 *)(**(code **)(**(longlong **)((longlong)local_res10 + -0x18) + 0x20))(); + if ((*(int *)((longlong)pvVar3 + -8) < 0) || + (puVar5 != *(undefined8 **)((longlong)pvVar3 + -0x18))) { + lVar7 = (**(code **)*puVar5)(puVar5,*(undefined4 *)((longlong)pvVar3 + -0x10),2); + if (lVar7 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(lVar7 + 8) = *(undefined4 *)((longlong)pvVar3 + -0x10); + lVar8 = (longlong)(*(int *)((longlong)pvVar3 + -0x10) + 1); + FUN_180032c60((ulonglong *)(lVar7 + 0x18),lVar8 * 2,pvVar3,lVar8 * 2); + } + else { + lVar7 = (longlong)pvVar3 + -0x18; + LOCK(); + *(int *)((longlong)pvVar3 + -8) = *(int *)((longlong)pvVar3 + -8) + 1; + UNLOCK(); + } + local_res18 = lVar7 + 0x18; + bVar4 = FUN_18001df10(param_1,&local_res18); + pvVar3 = local_res10; + if ((int)CONCAT71(extraout_var,bVar4) == 0) { + LOCK(); + piVar1 = (int *)((longlong)local_res10 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)local_res10 + -0x18) + 8))(); + } + uVar6 = 1; + } + else { + puVar5 = (undefined8 *)(**(code **)(**(longlong **)((longlong)local_res10 + -0x18) + 0x20))(); + if ((*(int *)((longlong)pvVar3 + -8) < 0) || + (puVar5 != *(undefined8 **)((longlong)pvVar3 + -0x18))) { + lVar7 = (**(code **)*puVar5)(puVar5,*(undefined4 *)((longlong)pvVar3 + -0x10),2); + if (lVar7 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18000ad70(); + } + *(undefined4 *)(lVar7 + 8) = *(undefined4 *)((longlong)pvVar3 + -0x10); + lVar8 = (longlong)(*(int *)((longlong)pvVar3 + -0x10) + 1); + FUN_180032c60((ulonglong *)(lVar7 + 0x18),lVar8 * 2,pvVar3,lVar8 * 2); + } + else { + lVar7 = (longlong)pvVar3 + -0x18; + LOCK(); + *(int *)((longlong)pvVar3 + -8) = *(int *)((longlong)pvVar3 + -8) + 1; + UNLOCK(); + } + local_res20 = lVar7 + 0x18; + bVar4 = FUN_18001e100(param_1,&local_res20); + uVar6 = CONCAT71(extraout_var_00,bVar4) & 0xffffffff; + LOCK(); + piVar1 = (int *)((longlong)local_res10 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)((longlong)local_res10 + -0x18) + 8))(); + } + } + return uVar6; +} + + +================================================================== + +### EXPORT FUNC 18001e640 (24 bytes) name=Unwind@18001e640 + +void Unwind_18001e640(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001e660 (162 bytes) name=FUN_18001e660 + +void FUN_18001e660(longlong *param_1,byte *param_2,undefined8 param_3,undefined8 param_4) + +{ + uint uVar1; + undefined8 local_res18; + undefined8 local_res20; + + local_res18 = param_3; + local_res20 = param_4; + if (param_2 == (byte *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + uVar1 = FUN_180034240(param_2,(WCHAR *)&local_res18); + if ((int)(1U - *(int *)(*param_1 + -8) | *(int *)(*param_1 + -0xc) - uVar1) < 0) { + FUN_18000ab60(param_1,uVar1); + } + FUN_1800343c0((char *)*param_1,(longlong)(int)(uVar1 + 1),(longlong)param_2,&local_res18); + if ((-1 < (int)uVar1) && ((int)uVar1 <= *(int *)(*param_1 + -0xc))) { + *(uint *)(*param_1 + -0x10) = uVar1; + *(undefined1 *)((longlong)(int)uVar1 + *param_1) = 0; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18001e710 (123 bytes) name=FUN_18001e710 + +undefined8 * FUN_18001e710(undefined8 *param_1,uint param_2) + +{ + *param_1 = CSmoother::vftable; + if ((LPVOID)param_1[1] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[1]); + param_1[1] = 0; + } + param_1[2] = 0; + if ((LPVOID)param_1[3] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[3]); + param_1[3] = 0; + } + if ((LPVOID)param_1[4] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[4]); + param_1[4] = 0; + } + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001e790 (94 bytes) name=FUN_18001e790 + +void FUN_18001e790(undefined8 *param_1) + +{ + *param_1 = CSmoother::vftable; + if ((LPVOID)param_1[1] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[1]); + param_1[1] = 0; + } + param_1[2] = 0; + if ((LPVOID)param_1[3] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[3]); + param_1[3] = 0; + } + if ((LPVOID)param_1[4] != (LPVOID)0x0) { + thunk_FUN_180034a70((LPVOID)param_1[4]); + param_1[4] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001e7f0 (304 bytes) name=FUN_18001e7f0 + +undefined8 FUN_18001e7f0(longlong param_1,uint param_2,int param_3,int param_4) + +{ + undefined1 auVar1 [16]; + undefined1 auVar2 [16]; + size_t sVar3; + LPVOID pvVar4; + ulonglong *puVar5; + ulonglong uVar6; + + *(undefined4 *)(param_1 + 0x3c) = 0; + uVar6 = CONCAT44(0,param_2); + if (*(LPVOID *)(param_1 + 8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 8)); + *(undefined8 *)(param_1 + 8) = 0; + } + *(undefined8 *)(param_1 + 0x10) = 0; + if (*(LPVOID *)(param_1 + 0x18) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x18)); + *(undefined8 *)(param_1 + 0x18) = 0; + } + if (*(LPVOID *)(param_1 + 0x20) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 0x20)); + *(undefined8 *)(param_1 + 0x20) = 0; + } + if ((param_2 != 0) && (param_3 != 0)) { + *(int *)(param_1 + 0x38) = param_3; + *(undefined4 *)(param_1 + 0x30) = 0; + *(uint *)(param_1 + 0x34) = param_2; + auVar2 = ZEXT816(2) * ZEXT416(param_2 * param_3); + sVar3 = auVar2._0_8_; + if (auVar2._8_8_ != 0) { + sVar3 = 0xffffffffffffffff; + } + pvVar4 = thunk_FUN_18001eb74(sVar3); + *(LPVOID *)(param_1 + 8) = pvVar4; + *(LPVOID *)(param_1 + 0x10) = pvVar4; + if (pvVar4 != (LPVOID)0x0) { + *(LPVOID *)(param_1 + 0x10) = pvVar4; + *(LPVOID *)(param_1 + 0x28) = pvVar4; + auVar2._8_8_ = 0; + auVar2._0_8_ = uVar6; + sVar3 = SUB168(ZEXT816(4) * auVar2,0); + if (SUB168(ZEXT816(4) * auVar2,8) != 0) { + sVar3 = 0xffffffffffffffff; + } + puVar5 = thunk_FUN_18001eb74(sVar3); + *(ulonglong **)(param_1 + 0x18) = puVar5; + if (puVar5 != (ulonglong *)0x0) { + FUN_1800357d0(puVar5,0,uVar6 * 4); + if (param_4 != 0) { + auVar1._8_8_ = 0; + auVar1._0_8_ = uVar6; + sVar3 = SUB168(ZEXT816(2) * auVar1,0); + if (SUB168(ZEXT816(2) * auVar1,8) != 0) { + sVar3 = 0xffffffffffffffff; + } + pvVar4 = thunk_FUN_18001eb74(sVar3); + *(LPVOID *)(param_1 + 0x20) = pvVar4; + if (pvVar4 == (LPVOID)0x0) { + return 0; + } + } + *(undefined4 *)(param_1 + 0x3c) = 1; + return 1; + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18001e920 (206 bytes) name=FUN_18001e920 + +bool FUN_18001e920(longlong param_1,ushort *param_2,int param_3) + +{ + ushort uVar1; + ushort uVar2; + uint uVar3; + uint uVar4; + ushort *puVar5; + int iVar6; + int iVar7; + + if (*(int *)(param_1 + 0x3c) == 0) { + return false; + } + *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + 1; + if (*(uint *)(param_1 + 0x38) < *(uint *)(param_1 + 0x30)) { + if (*(uint *)(param_1 + 0x38) != 1) { + return false; + } + puVar5 = *(ushort **)(param_1 + 0x10); + for (iVar7 = *(int *)(param_1 + 0x34); iVar7 != 0; iVar7 = iVar7 + -1) { + uVar1 = *puVar5; + uVar2 = *param_2; + *puVar5 = uVar2; + iVar6 = (uint)uVar2 - (uint)uVar1; + if (((iVar6 <= param_3) && (-iVar6 <= param_3)) && (iVar6 != 0)) { + *param_2 = uVar2 - (short)(iVar6 >> 1); + } + param_2 = param_2 + 1; + puVar5 = puVar5 + 1; + } + } + else { + memcpy(*(void **)(param_1 + 0x28),param_2,(ulonglong)*(uint *)(param_1 + 0x34) * 2); + } + uVar3 = *(uint *)(param_1 + 0x30); + uVar4 = *(uint *)(param_1 + 0x38); + if (uVar3 % uVar4 != 0) { + *(longlong *)(param_1 + 0x28) = + *(longlong *)(param_1 + 0x28) + (ulonglong)*(uint *)(param_1 + 0x34) * 2; + return uVar4 <= uVar3; + } + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x10); + return uVar4 <= uVar3; +} + + +================================================================== + +### EXPORT FUNC 18001e9f0 (6 bytes) name=FUN_18001e9f0 + +undefined8 FUN_18001e9f0(void) + +{ + return 1; +} + + +================================================================== + +### EXPORT FUNC 18001e9f8 (30 bytes) name=FUN_18001e9f8 + +void FUN_18001e9f8(void) + +{ + FUN_18002362c(0,1); + FUN_18002372c(); + AfxTlsRelease(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ea18 (263 bytes) name=FUN_18001ea18 + +undefined8 +FUN_18001ea18(HINSTANCE__ *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 uVar1; + longlong *plVar2; + int iVar3; + longlong lVar4; + undefined8 uVar5; + longlong lVar6; + undefined8 uVar7; + + uVar7 = 0; + iVar3 = (int)param_2; + if (iVar3 != 1) { + if (iVar3 == 0) { + lVar4 = FUN_180022bb4(); + if (*(longlong **)(lVar4 + 8) != (longlong *)0x0) { + (**(code **)(**(longlong **)(lVar4 + 8) + 0xd0))(); + } + FUN_180023860(); + FUN_180023c24(-1,param_2,param_3,param_4); + AfxWinTerm(); + FUN_18002362c((longlong)param_1,1); + } + else if (iVar3 == 3) { + FUN_180023860(); + FUN_180023c24(-1,param_2,param_3,param_4); + AfxTermThread(param_1); + } + return 1; + } + lVar4 = FUN_1800222f4(); + uVar1 = *(undefined8 *)(lVar4 + 0x10); + uVar5 = AfxWinInit(param_1,0,&DAT_18005911c,0); + if ((int)uVar5 != 0) { + lVar6 = FUN_180022bb4(); + plVar2 = *(longlong **)(lVar6 + 8); + if ((plVar2 == (longlong *)0x0) || (iVar3 = (**(code **)(*plVar2 + 0xa0))(plVar2), iVar3 != 0)) + { + *(undefined8 *)(lVar4 + 0x10) = uVar1; + AfxInitLocalData(param_1); + uVar7 = 1; + goto LAB_18001eaa1; + } + (**(code **)(*plVar2 + 0xd0))(plVar2); + } + AfxWinTerm(); +LAB_18001eaa1: + *(undefined8 *)(lVar4 + 0x10) = uVar1; + return uVar7; +} + + +================================================================== + +### EXPORT FUNC 18001eb20 (54 bytes) name=DllMain + +/* Library Function - Single Match + DllMain + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +undefined8 DllMain(HINSTANCE__ *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + longlong lVar1; + undefined8 uVar2; + + if (DAT_18006eda4 == 0) { +LAB_18001eb4b: + uVar2 = FUN_18001ea18(param_1,param_2,param_3,param_4); + } + else { + if ((int)param_2 == 1) { + lVar1 = FUN_180022bb4(); + *(HINSTANCE__ **)(lVar1 + 0x10) = param_1; + } + else if ((int)param_2 != 0) goto LAB_18001eb4b; + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18001eb58 (9 bytes) name=FUN_18001eb58 + +void FUN_18001eb58(void) + +{ + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); +} + + +================================================================== + +### EXPORT FUNC 18001eb64 (15 bytes) name=FUN_18001eb64 + +undefined * FUN_18001eb64(undefined *param_1) + +{ + undefined *puVar1; + + puVar1 = PTR_FUN_18006c000; + PTR_FUN_18006c000 = param_1; + return puVar1; +} + + +================================================================== + +### EXPORT FUNC 18001eb74 (66 bytes) name=FUN_18001eb74 + +LPVOID FUN_18001eb74(size_t param_1) + +{ + int iVar1; + LPVOID pvVar2; + + while( true ) { + pvVar2 = FUN_1800349a0(param_1); + if (pvVar2 != (LPVOID)0x0) { + return pvVar2; + } + if (PTR_FUN_18006c000 == (undefined *)0x0) break; + iVar1 = (*(code *)PTR_FUN_18006c000)(param_1); + if (iVar1 == 0) { + return (LPVOID)0x0; + } + } + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 18001ebb8 (5 bytes) name=thunk_FUN_180034a70 + +void thunk_FUN_180034a70(LPVOID param_1) + +{ + BOOL BVar1; + DWORD DVar2; + DWORD *pDVar3; + + if (param_1 != (LPVOID)0x0) { + BVar1 = HeapFree(DAT_180072ed8,0,param_1); + if (BVar1 == 0) { + pDVar3 = FUN_180035b40(); + DVar2 = GetLastError(); + DVar2 = FUN_180035af0(DVar2); + *pDVar3 = DVar2; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ebc0 (5 bytes) name=thunk_FUN_18001eb74 + +LPVOID thunk_FUN_18001eb74(size_t param_1) + +{ + int iVar1; + LPVOID pvVar2; + + while( true ) { + pvVar2 = FUN_1800349a0(param_1); + if (pvVar2 != (LPVOID)0x0) { + return pvVar2; + } + if (PTR_FUN_18006c000 == (undefined *)0x0) break; + iVar1 = (*(code *)PTR_FUN_18006c000)(param_1); + if (iVar1 == 0) { + return (LPVOID)0x0; + } + } + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 18001ebc8 (39 bytes) name=FUN_18001ebc8 + +undefined8 FUN_18001ebc8(longlong param_1,DWORD param_2) + +{ + DWORD DVar1; + undefined8 uVar2; + + DVar1 = WaitForSingleObject(*(HANDLE *)(param_1 + 8),param_2); + if ((DVar1 == 0) || (DVar1 == 0x80)) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18001ebf0 (8 bytes) name=FUN_18001ebf0 + +undefined ** FUN_18001ebf0(void) + +{ + return &PTR_s_CCriticalSection_180053b50; +} + + +================================================================== + +### EXPORT FUNC 18001ebf8 (8 bytes) name=FUN_18001ebf8 + +undefined ** FUN_18001ebf8(void) + +{ + return &PTR_s_CSyncObject_180053af8; +} + + +================================================================== + +### EXPORT FUNC 18001ec00 (19 bytes) name=FUN_18001ec00 + +undefined8 * FUN_18001ec00(undefined8 *param_1) + +{ + param_1[1] = 0; + *param_1 = CSyncObject::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ec14 (45 bytes) name=~CSyncObject + +/* Library Function - Single Match + public: virtual __cdecl CSyncObject::~CSyncObject(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CSyncObject::~CSyncObject(CSyncObject *this) + +{ + *(undefined ***)this = vftable; + if (*(HANDLE *)(this + 8) != (HANDLE)0x0) { + CloseHandle(*(HANDLE *)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ec44 (47 bytes) name=FUN_18001ec44 + +CSyncObject * FUN_18001ec44(CSyncObject *param_1,uint param_2) + +{ + CSyncObject::~CSyncObject(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ec74 (26 bytes) name=FUN_18001ec74 + +void FUN_18001ec74(longlong *param_1) + +{ + if (0 < (int)param_1[1]) { + (**(code **)(*param_1 + 8))(param_1,1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ec90 (7 bytes) name=FUN_18001ec90 + +void FUN_18001ec90(longlong *param_1) + +{ + /* WARNING: Could not recover jumptable at 0x00018001ec93. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*param_1 + 0x20))(); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ec98 (131 bytes) name=ReportError + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + public: virtual int __cdecl CException::ReportError(unsigned int,unsigned int) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CException::ReportError(CException *this,uint param_1,uint param_2) + +{ + int iVar1; + undefined1 auStack_448 [32]; + uint local_428 [4]; + wchar_t local_418 [512]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_448; + iVar1 = (**(code **)(*(longlong *)this + 0x18))(this,local_418,0x200,local_428); + if (iVar1 == 0) { + if (param_2 == 0) { + param_2 = 0xf020; + } + iVar1 = FUN_180024b20(param_2,param_1,local_428[0]); + } + else { + iVar1 = AfxMessageBox(local_418,param_1,local_428[0]); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18001ed1c (8 bytes) name=FUN_18001ed1c + +undefined ** FUN_18001ed1c(void) + +{ + return &PTR_s_CMemoryException_180053c40; +} + + +================================================================== + +### EXPORT FUNC 18001ed24 (8 bytes) name=FUN_18001ed24 + +undefined ** FUN_18001ed24(void) + +{ + return &PTR_s_CNotSupportedException_180053c70; +} + + +================================================================== + +### EXPORT FUNC 18001ed2c (8 bytes) name=FUN_18001ed2c + +undefined ** FUN_18001ed2c(void) + +{ + return &PTR_s_CInvalidArgException_180053ca0; +} + + +================================================================== + +### EXPORT FUNC 18001ed34 (53 bytes) name=InitString + +/* Library Function - Single Match + public: void __cdecl CSimpleException::InitString(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __thiscall CSimpleException::InitString(CSimpleException *this) + +{ + uint uVar1; + + *(undefined4 *)(this + 0x14) = 1; + uVar1 = FUN_18001fbc8(*(uint *)(this + 0x11c),(ulonglong *)(this + 0x1c),0x80); + *(uint *)(this + 0x18) = (uint)(uVar1 != 0); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ed6c (33 bytes) name=FUN_18001ed6c + +void FUN_18001ed6c(void) + +{ + undefined **local_res8 [4]; + + local_res8[0] = &PTR_vftable_18006c1a0; + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_res8,(ThrowInfo *)&DAT_1800685f8); +} + + +================================================================== + +### EXPORT FUNC 18001ed90 (33 bytes) name=FUN_18001ed90 + +void FUN_18001ed90(void) + +{ + undefined **local_res8 [4]; + + local_res8[0] = &PTR_vftable_18006c3e0; + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_res8,(ThrowInfo *)&DAT_180068710); +} + + +================================================================== + +### EXPORT FUNC 18001edb4 (49 bytes) name=CreateObject + +/* Library Function - Single Match + public: static class CNoTrackObject * __ptr64 __cdecl CThreadLocal::CreateObject(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +CNoTrackObject * __cdecl CThreadLocal<_AFX_THREAD_STATE>::CreateObject(void) + +{ + _AFX_THREAD_STATE *this; + CNoTrackObject *pCVar1; + + this = (_AFX_THREAD_STATE *)FUN_180022c84(0x1e0); + pCVar1 = (CNoTrackObject *)0x0; + if (this != (_AFX_THREAD_STATE *)0x0) { + pCVar1 = (CNoTrackObject *)_AFX_THREAD_STATE::_AFX_THREAD_STATE(this); + } + return pCVar1; +} + + +================================================================== + +### EXPORT FUNC 18001edf4 (24 bytes) name=Unwind@18001edf4 + +void Unwind_18001edf4(undefined8 param_1,longlong param_2) + +{ + FUN_180022ca8(*(HLOCAL *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001ee0c (11 bytes) name=FUN_18001ee0c + +longlong FUN_18001ee0c(longlong param_1) + +{ + *(undefined4 *)(param_1 + 8) = 1; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ee18 (7 bytes) name=FUN_18001ee18 + +longlong FUN_18001ee18(longlong param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 8) = param_2; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ee20 (145 bytes) name=FUN_18001ee20 + +undefined4 FUN_18001ee20(CSimpleException *param_1,short *param_2,uint param_3,undefined4 *param_4) + +{ + int iVar1; + undefined4 uVar2; + + if ((param_2 == (short *)0x0) || (param_3 == 0)) { + uVar2 = 0; + } + else { + if (param_4 != (undefined4 *)0x0) { + *param_4 = 0; + } + if (*(int *)(param_1 + 0x14) == 0) { + CSimpleException::InitString(param_1); + } + if (*(int *)(param_1 + 0x18) == 0) { + *param_2 = 0; + } + else { + iVar1 = FUN_1800354c0(param_2,(ulonglong)param_3,(short *)(param_1 + 0x1c),-1); + if (iVar1 != 0) { + if (iVar1 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar1 == 0x16) || (iVar1 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar1 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + } + uVar2 = *(undefined4 *)(param_1 + 0x18); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18001eeb4 (38 bytes) name=FUN_18001eeb4 + +undefined8 * FUN_18001eeb4(undefined8 *param_1,byte param_2) + +{ + *param_1 = CMemoryException::vftable; + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001eedc (38 bytes) name=FUN_18001eedc + +undefined8 * FUN_18001eedc(undefined8 *param_1,byte param_2) + +{ + *param_1 = CNotSupportedException::vftable; + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ef04 (38 bytes) name=FUN_18001ef04 + +undefined8 * FUN_18001ef04(undefined8 *param_1,byte param_2) + +{ + *param_1 = CInvalidArgException::vftable; + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ef2c (101 bytes) name=FUN_18001ef2c + +undefined8 * FUN_18001ef2c(undefined8 *param_1) + +{ + DWORD dwErrCode; + void *pvVar1; + + param_1[1] = 0; + dwErrCode = GetLastError(); + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + SetLastError(dwErrCode); + *param_1 = *(undefined8 *)((longlong)pvVar1 + 0x20); + *(undefined8 **)((longlong)pvVar1 + 0x20) = param_1; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001ef94 (111 bytes) name=FUN_18001ef94 + +void FUN_18001ef94(void) + +{ + undefined8 *puVar1; + longlong *plVar2; + DWORD dwErrCode; + void *pvVar3; + + dwErrCode = GetLastError(); + pvVar3 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar3 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + SetLastError(dwErrCode); + puVar1 = *(undefined8 **)((longlong)pvVar3 + 0x20); + if (puVar1 != (undefined8 *)0x0) { + plVar2 = (longlong *)puVar1[1]; + if ((plVar2 != (longlong *)0x0) && (0 < (int)plVar2[1])) { + (**(code **)(*plVar2 + 8))(plVar2,1); + } + *(undefined8 *)((longlong)pvVar3 + 0x20) = *puVar1; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001f004 (8 bytes) name=FUN_18001f004 + +undefined8 FUN_18001f004(longlong param_1) + +{ + return *(undefined8 *)(param_1 + 0xe8); +} + + +================================================================== + +### EXPORT FUNC 18001f00c (8 bytes) name=FUN_18001f00c + +undefined ** FUN_18001f00c(void) + +{ + return &PTR_s_CFileDialog_180053db0; +} + + +================================================================== + +### EXPORT FUNC 18001f014 (5 bytes) name=thunk_FUN_180024c40 + +void thunk_FUN_180024c40(CWnd *param_1) + +{ + *(undefined ***)param_1 = CDialog::vftable; + if (*(longlong *)(param_1 + 0x40) != 0) { + FUN_180029920((longlong)param_1); + } + CWnd::~CWnd(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f01c (36 bytes) name=FUN_18001f01c + +void FUN_18001f01c(longlong param_1) + +{ + HWND pHVar1; + CWnd *pCVar2; + + pHVar1 = GetParent(*(HWND *)(param_1 + 0x40)); + pCVar2 = CWnd::FromHandle(pHVar1); + FUN_180028ce8(pCVar2,0); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f040 (278 bytes) name=OnNotify + +/* Library Function - Single Match + protected: virtual int __cdecl CFileDialog::OnNotify(unsigned __int64,__int64,__int64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +int __thiscall +CFileDialog::OnNotify(CFileDialog *this,__uint64 param_1,__int64 param_2,__int64 *param_3) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + LRESULT LVar4; + + uVar3 = FUN_18002aedc((longlong *)this,param_1,(undefined8 *)param_2,param_3); + if ((int)uVar3 == 0) { + iVar2 = *(int *)(param_2 + 0x10); + if (iVar2 == -0x25f) { + (**(code **)(*(longlong *)this + 0x2e8))(this); + } + else if (iVar2 == -0x25e) { + iVar2 = (**(code **)(*(longlong *)this + 0x2c0))(this); + *param_3 = (longlong)iVar2; + } + else if (iVar2 == -0x25d) { + LVar4 = SendMessageW(*(HWND *)(this + 0x40),0x111,0xe146,0); + if (LVar4 == 0) { + SendMessageW(*(HWND *)(this + 0x40),0x365,0,0); + } + } + else if (iVar2 == -0x25c) { + uVar1 = (**(code **)(*(longlong *)this + 0x2b8))(this,*(undefined8 *)(param_2 + 0x20)); + *param_3 = (ulonglong)uVar1; + } + else if (iVar2 == -0x25b) { + (**(code **)(*(longlong *)this + 0x2e0))(this); + } + else if (iVar2 == -0x25a) { + (**(code **)(*(longlong *)this + 0x2d8))(this); + } + else { + if (iVar2 != -0x259) { + return 0; + } + (**(code **)(*(longlong *)this + 0x2d0))(this); + } + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18001f158 (114 bytes) name=FUN_18001f158 + +undefined8 * FUN_18001f158(longlong param_1,undefined8 *param_2) + +{ + HMODULE pHVar1; + FARPROC pFVar2; + + if (*(longlong *)(param_1 + 0x28) == 0) { + if (*(longlong *)(param_1 + 8) == 0) { + pHVar1 = GetModuleHandleW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + if (pHVar1 == (HMODULE)0x0) { + pHVar1 = LoadLibraryW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + *(bool *)(param_1 + 0x10) = pHVar1 != (HMODULE)0x0; + } + } + pFVar2 = GetProcAddress(*(HMODULE *)(param_1 + 8),"GetOpenFileNameW"); + *(FARPROC *)(param_1 + 0x28) = pFVar2; + } + *param_2 = *(undefined8 *)(param_1 + 0x28); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18001f1cc (180 bytes) name=FID_conflict:_InitCommonControlsEx + +/* Library Function - Multiple Matches With Different Base Names + public: int __cdecl CCommDlgWrapper::_GetOpenFileNameW(struct tagOFNW * __ptr64) __ptr64 + public: int __cdecl CComCtlWrapper::_InitCommonControlsEx(struct tagINITCOMMONCONTROLSEX * + __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +BOOL __stdcall FID_conflict__InitCommonControlsEx(INITCOMMONCONTROLSEX *picce) + +{ + undefined1 uVar1; + int iVar2; + int iVar3; + DWORD dwErrCode; + longlong lVar4; + undefined7 extraout_var; + undefined8 local_res20; + undefined8 local_10; + + local_res20 = 0; + lVar4 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar4 + 0xd8),(longlong)&local_res20); + iVar2 = (int)CONCAT71(extraout_var,uVar1); + iVar3 = 0; + if (iVar2 != 0) { + FUN_18001f158((longlong)picce,&local_10); + if (picce[5] == (INITCOMMONCONTROLSEX)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + iVar3 = (*(code *)picce[5])(); + if (iVar2 != 2) { + if (iVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (iVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return iVar3; +} + + +================================================================== + +### EXPORT FUNC 18001f28c (72 bytes) name=FUN_18001f28c + +void FUN_18001f28c(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x50) != 2) { + bVar1 = *(int *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001f2d4 (114 bytes) name=FUN_18001f2d4 + +undefined8 * FUN_18001f2d4(longlong param_1,undefined8 *param_2) + +{ + HMODULE pHVar1; + FARPROC pFVar2; + + if (*(longlong *)(param_1 + 0x38) == 0) { + if (*(longlong *)(param_1 + 8) == 0) { + pHVar1 = GetModuleHandleW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + if (pHVar1 == (HMODULE)0x0) { + pHVar1 = LoadLibraryW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + *(bool *)(param_1 + 0x10) = pHVar1 != (HMODULE)0x0; + } + } + pFVar2 = GetProcAddress(*(HMODULE *)(param_1 + 8),"GetSaveFileNameW"); + *(FARPROC *)(param_1 + 0x38) = pFVar2; + } + *param_2 = *(undefined8 *)(param_1 + 0x38); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18001f348 (180 bytes) name=FID_conflict:_GetSaveFileNameW + +/* Library Function - Multiple Matches With Different Base Names + public: int __cdecl CCommDlgWrapper::_GetSaveFileNameW(struct tagOFNW * __ptr64) __ptr64 + public: int __cdecl CComCtlWrapper::_ImageList_Destroy(struct _IMAGELIST * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +BOOL __stdcall FID_conflict__GetSaveFileNameW(LPOPENFILENAMEW param_1) + +{ + undefined1 uVar1; + int iVar2; + int iVar3; + DWORD dwErrCode; + longlong lVar4; + undefined7 extraout_var; + undefined8 local_res20; + undefined8 local_10; + + local_res20 = 0; + lVar4 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar4 + 0xd8),(longlong)&local_res20); + iVar2 = (int)CONCAT71(extraout_var,uVar1); + iVar3 = 0; + if (iVar2 != 0) { + FUN_18001f2d4((longlong)param_1,&local_10); + if (*(code **)¶m_1->nMaxFile == (code *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + iVar3 = (**(code **)¶m_1->nMaxFile)(); + if (iVar2 != 2) { + if (iVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (iVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return iVar3; +} + + +================================================================== + +### EXPORT FUNC 18001f408 (72 bytes) name=FUN_18001f408 + +void FUN_18001f408(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x50) != 2) { + bVar1 = *(int *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001f450 (375 bytes) name=FUN_18001f450 + +longlong FUN_18001f450(CDialog *param_1) + +{ + bool bVar1; + int iVar2; + BOOL BVar3; + HWND hWnd; + HWND__ *pHVar4; + longlong lVar5; + longlong lVar6; + + iVar2 = lstrlenW(*(LPCWSTR *)(*(longlong *)(param_1 + 0xe8) + 0x30)); + FUN_1800357d0((ulonglong *) + (*(longlong *)(*(longlong *)(param_1 + 0xe8) + 0x30) + (ulonglong)(iVar2 + 1U) * 2), + 0,(ulonglong)(*(int *)(*(longlong *)(param_1 + 0xe8) + 0x38) - (iVar2 + 1U)) * 2); + hWnd = GetFocus(); + lVar5 = *(longlong *)(param_1 + 0xe8); + bVar1 = false; + pHVar4 = CDialog::PreModal(param_1); + *(HWND__ **)(lVar5 + 8) = pHVar4; + FUN_1800296fc(); + if (*(longlong *)(*(longlong *)(param_1 + 0xe8) + 8) != 0) { + BVar3 = IsWindowEnabled(*(HWND *)(*(longlong *)(param_1 + 0xe8) + 8)); + if (BVar3 != 0) { + bVar1 = true; + EnableWindow(*(HWND *)(*(longlong *)(param_1 + 0xe8) + 8),0); + } + } + lVar5 = FUN_1800222f4(); + if ((*(uint *)(*(longlong *)(param_1 + 0xe8) + 0x60) >> 0x13 & 1) == 0) { + FUN_18002b980((longlong)param_1); + } + else { + *(CDialog **)(lVar5 + 0x30) = param_1; + } + if (*(int *)(param_1 + 0xf0) == 0) { + lVar6 = FUN_180022bb4(); + iVar2 = FID_conflict__GetSaveFileNameW(*(LPOPENFILENAMEW *)(*(longlong *)(lVar6 + 200) + 8)); + } + else { + lVar6 = FUN_180022bb4(); + iVar2 = FID_conflict__InitCommonControlsEx + (*(INITCOMMONCONTROLSEX **)(*(longlong *)(lVar6 + 200) + 8)); + } + *(undefined8 *)(lVar5 + 0x30) = 0; + if (bVar1) { + EnableWindow(*(HWND *)(*(longlong *)(param_1 + 0xe8) + 8),1); + } + BVar3 = IsWindow(hWnd); + if (BVar3 != 0) { + SetFocus(hWnd); + } + CDialog::PostModal(param_1); + lVar5 = 2; + if ((longlong)iVar2 != 0) { + lVar5 = (longlong)iVar2; + } + return lVar5; +} + + +================================================================== + +### EXPORT FUNC 18001f5c8 (79 bytes) name=FUN_18001f5c8 + +void FUN_18001f5c8(CWnd *param_1) + +{ + int *piVar1; + int iVar2; + longlong lVar3; + + *(undefined ***)param_1 = CFileDialog::vftable; + FUN_180034a70(*(LPVOID *)(param_1 + 0xe8)); + lVar3 = *(longlong *)(param_1 + 0xf8); + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + FUN_180024c40(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f618 (13 bytes) name=FUN_18001f618 + +void FUN_18001f618(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x00018001f61e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnableWindow(*(HWND *)(param_1 + 0x40),0); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f628 (16 bytes) name=FUN_18001f628 + +void FUN_18001f628(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x00018001f631. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnableWindow(*(HWND *)(param_1 + 0x40),1); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f638 (8 bytes) name=FUN_18001f638 + +void FUN_18001f638(CDialog *param_1,ushort param_2,CWnd *param_3) + +{ + FUN_180025adc(param_1,(LPCWSTR)(ulonglong)param_2,param_3); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f640 (47 bytes) name=FUN_18001f640 + +CWnd * FUN_18001f640(CWnd *param_1,uint param_2) + +{ + FUN_18001f5c8(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001f670 (705 bytes) name=FUN_18001f670 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +CDialog * FUN_18001f670(CDialog *param_1,int param_2,undefined8 param_3,short *param_4,uint param_5, + short *param_6,CWnd *param_7,uint param_8) + +{ + CDialog *pCVar1; + int iVar2; + undefined **ppuVar3; + longlong lVar4; + ulonglong *puVar5; + wchar_t *pwVar6; + undefined1 auStack_198 [32]; + CDialog *local_178; + undefined8 local_170; + _OSVERSIONINFOW local_168; + ulonglong local_48; + + local_170 = 0xfffffffffffffffe; + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_198; + local_178 = param_1; + CDialog::CDialog(param_1,0,param_7); + *(undefined ***)param_1 = CFileDialog::vftable; + ppuVar3 = FUN_18001fcc0(); + if (ppuVar3 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar4 = (**(code **)(*ppuVar3 + 0x18))(); + *(longlong *)(param_1 + 0xf8) = lVar4 + 0x18; + if (param_8 == 0) { + FUN_1800357d0((ulonglong *)&local_168,0,0x114); + local_168.dwOSVersionInfoSize = 0x114; + GetVersionExW(&local_168); + if ((local_168.dwPlatformId == 2) && (4 < local_168.dwMajorVersion)) { + param_8 = 0x98; + } + else { + param_8 = 0x88; + } + } + puVar5 = FUN_1800349a0((ulonglong)param_8); + *(ulonglong **)(param_1 + 0xe8) = puVar5; + if (puVar5 == (ulonglong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + FUN_1800357d0(puVar5,0,(ulonglong)param_8); + pCVar1 = param_1 + 0x180; + *(short *)pCVar1 = 0; + *(undefined2 *)(param_1 + 0x100) = 0; + *(undefined8 *)(param_1 + 0x388) = 0; + *(int *)(param_1 + 0xf0) = param_2; + *(uint *)(param_1 + 0xa8) = 0x7005 - (uint)(param_2 != 0); + **(uint **)(param_1 + 0xe8) = param_8; + *(CDialog **)(*(longlong *)(param_1 + 0xe8) + 0x30) = pCVar1; + *(undefined4 *)(*(longlong *)(param_1 + 0xe8) + 0x38) = 0x104; + *(undefined8 *)(*(longlong *)(param_1 + 0xe8) + 0x68) = param_3; + *(CDialog **)(*(longlong *)(param_1 + 0xe8) + 0x40) = param_1 + 0x100; + *(undefined4 *)(*(longlong *)(param_1 + 0xe8) + 0x48) = 0x40; + *(uint *)(*(longlong *)(param_1 + 0xe8) + 0x60) = + *(uint *)(*(longlong *)(param_1 + 0xe8) + 0x60) | param_5 | 0x80020; + if ((param_5 & 0x40) != 0) { + *(uint *)(*(longlong *)(param_1 + 0xe8) + 0x60) = + *(uint *)(*(longlong *)(param_1 + 0xe8) + 0x60) & 0xff7fffff; + } + lVar4 = FUN_180022bb4(); + *(undefined8 *)(*(longlong *)(param_1 + 0xe8) + 0x10) = *(undefined8 *)(lVar4 + 0x18); + *(code **)(*(longlong *)(param_1 + 0xe8) + 0x78) = FUN_18002df0c; + if ((param_4 != (short *)0x0) && + (iVar2 = FUN_1800354c0((short *)pCVar1,0x104,param_4,-1), iVar2 != 0)) { + if (iVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar2 == 0x16) || (iVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + if (param_6 != (short *)0x0) { + lVar4 = FUN_1800355e0(param_6); + FUN_18000b480((longlong *)(param_1 + 0xf8),param_6,(int)lVar4); + if ((int)(*(uint *)(*(longlong *)(param_1 + 0xf8) + -0xc) | + 1U - *(int *)(*(longlong *)(param_1 + 0xf8) + -8)) < 0) { + FUN_18000b190((longlong *)(param_1 + 0xf8),0); + } + for (pwVar6 = wcschr(*(wchar_t **)(param_1 + 0xf8),L'|'); pwVar6 != (wchar_t *)0x0; + pwVar6 = wcschr(pwVar6 + 1,L'|')) { + *pwVar6 = L'\0'; + } + *(undefined8 *)(*(longlong *)(param_1 + 0xe8) + 0x18) = *(undefined8 *)(param_1 + 0xf8); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001f940 (24 bytes) name=Unwind@18001f940 + +void Unwind_18001f940(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180024c40(*(CWnd **)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f960 (31 bytes) name=Unwind@18001f960 + +void Unwind_18001f960(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(*(longlong *)(param_2 + 0x20) + 0xf8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001f980 (544 bytes) name=FUN_18001f980 + +longlong * FUN_18001f980(longlong param_1,longlong *param_2) + +{ + int *piVar1; + int iVar2; + undefined **ppuVar3; + longlong lVar4; + HWND pHVar5; + CWnd *pCVar6; + LRESULT LVar7; + longlong *plVar8; + short *lParam; + short *local_res8; + + local_res8 = (short *)((ulonglong)local_res8 & 0xffffffff00000000); + if (((*(uint *)(*(longlong *)(param_1 + 0xe8) + 0x60) >> 0x13 & 1) != 0) && + (*(longlong *)(param_1 + 0x40) != 0)) { + ppuVar3 = FUN_18001fcc0(); + if (ppuVar3 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar4 = (**(code **)(*ppuVar3 + 0x18))(ppuVar3); + local_res8 = (short *)(lVar4 + 0x18); + if ((int)(*(int *)(lVar4 + 0xc) - 0x104U | 1U - *(int *)(lVar4 + 0x10)) < 0) { + FUN_18000b190((longlong *)&local_res8,0x104); + } + lParam = local_res8; + pHVar5 = GetParent(*(HWND *)(param_1 + 0x40)); + pCVar6 = CWnd::FromHandle(pHVar5); + LVar7 = SendMessageW(*(HWND *)(pCVar6 + 0x40),0x464,0x104,(LPARAM)lParam); + if (LVar7 < 0) { + FUN_18000aec0((longlong *)&local_res8); + lParam = local_res8; + } + else { + if (lParam == (short *)0x0) { + iVar2 = 0; + } + else { + lVar4 = FUN_1800355e0(lParam); + iVar2 = (int)lVar4; + if (iVar2 < 0) goto LAB_18001fb6f; + } + if (*(int *)(lParam + -6) < iVar2) { +LAB_18001fb6f: + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(lParam + -8) = iVar2; + lParam[iVar2] = 0; + } + if (*(int *)(lParam + -8) != 0) { + if ((int)(*(int *)(lParam + -6) - 0x104U | 1U - *(int *)(lParam + -4)) < 0) { + FUN_18000b190((longlong *)&local_res8,0x104); + lParam = local_res8; + } + pHVar5 = GetParent(*(HWND *)(param_1 + 0x40)); + pCVar6 = CWnd::FromHandle(pHVar5); + LVar7 = SendMessageW(*(HWND *)(pCVar6 + 0x40),0x465,0x104,(LPARAM)lParam); + if (-1 < LVar7) { + if (lParam == (short *)0x0) { + iVar2 = 0; + } + else { + lVar4 = FUN_1800355e0(lParam); + iVar2 = (int)lVar4; + if (iVar2 < 0) goto LAB_18001fb46; + } + if (iVar2 <= *(int *)(lParam + -6)) { + *(int *)(lParam + -8) = iVar2; + lParam[iVar2] = 0; + plVar8 = FUN_18000b300((longlong *)(lParam + -0xc)); + *param_2 = (longlong)(plVar8 + 3); + LOCK(); + piVar1 = (int *)(lParam + -4); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (0 < iVar2 + -1) { + return param_2; + } + (**(code **)(**(longlong **)(lParam + -0xc) + 8)) + (*(longlong **)(lParam + -0xc),lParam + -0xc); + return param_2; + } +LAB_18001fb46: + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + FUN_18000aec0((longlong *)&local_res8); + lParam = local_res8; + } + LOCK(); + piVar1 = (int *)(lParam + -4); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lParam + -0xc) + 8))(); + } + } + FUN_18000b610(param_2,*(short **)(*(longlong *)(param_1 + 0xe8) + 0x30)); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18001fbb0 (24 bytes) name=Unwind@18001fbb0 + +void Unwind_18001fbb0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18001fbc8 (222 bytes) name=FUN_18001fbc8 + +uint FUN_18001fbc8(uint param_1,ulonglong *param_2,int param_3) + +{ + HMODULE hModule; + int iVar1; + longlong lVar2; + HRSRC pHVar3; + ushort *puVar4; + undefined8 uVar5; + uint uVar6; + uint uVar7; + + if ((param_2 == (ulonglong *)0x0) || (param_3 == 0)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + lVar2 = FUN_180022bb4(); + hModule = *(HMODULE *)(lVar2 + 0x18); + pHVar3 = FindResourceW(hModule,(LPCWSTR)(ulonglong)(ushort)((short)(param_1 >> 4) + 1), + (LPCWSTR)0x6); + if ((pHVar3 != (HRSRC)0x0) && + (puVar4 = FUN_18000b0d0(hModule,pHVar3,param_1), puVar4 != (ushort *)0x0)) { + uVar6 = param_3 - 1; + uVar7 = (uint)*puVar4; + if (uVar6 < *puVar4) { + uVar7 = uVar6; + } + uVar5 = FUN_180032c60(param_2,(ulonglong)uVar6 * 2,puVar4 + 1,(longlong)(int)uVar7 * 2); + iVar1 = (int)uVar5; + if (iVar1 != 0) { + if (iVar1 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar1 == 0x16) || (iVar1 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar1 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + *(undefined2 *)((longlong)(int)uVar7 * 2 + (longlong)param_2) = 0; + return uVar7; + } + *(undefined2 *)param_2 = 0; + return 0; +} + + +================================================================== + +### EXPORT FUNC 18001fcac (18 bytes) name=FUN_18001fcac + +undefined8 FUN_18001fcac(void) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + return *(undefined8 *)(lVar1 + 0x18); +} + + +================================================================== + +### EXPORT FUNC 18001fcc0 (8 bytes) name=FUN_18001fcc0 + +undefined ** FUN_18001fcc0(void) + +{ + return &PTR_vftable_18006c608; +} + + +================================================================== + +### EXPORT FUNC 18001fcc8 (75 bytes) name=FUN_18001fcc8 + +undefined8 * FUN_18001fcc8(undefined8 param_1,int param_2,int param_3) + +{ + undefined8 *puVar1; + + if ((-1 < param_2) && + (puVar1 = FUN_1800349a0((longlong)((param_2 + 1) * param_3) + 0x18), + puVar1 != (undefined8 *)0x0)) { + *(undefined4 *)(puVar1 + 1) = 0; + *puVar1 = param_1; + *(undefined4 *)(puVar1 + 2) = 1; + *(int *)((longlong)puVar1 + 0xc) = param_2; + return puVar1; + } + return (undefined8 *)0x0; +} + + +================================================================== + +### EXPORT FUNC 18001fd14 (8 bytes) name=FUN_18001fd14 + +void FUN_18001fd14(undefined8 param_1,LPVOID param_2) + +{ + FUN_180034a70(param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 18001fd1c (56 bytes) name=Reallocate + +/* Library Function - Single Match + public: virtual struct ATL::CStringData * __ptr64 __cdecl CAfxStringMgr::Reallocate(struct + ATL::CStringData * __ptr64,int,int) __ptr64 + + Library: Visual Studio */ + +CStringData * __thiscall +CAfxStringMgr::Reallocate(CAfxStringMgr *this,CStringData *param_1,int param_2,int param_3) + +{ + CStringData *pCVar1; + + if ((-1 < param_2) && + (pCVar1 = FUN_180035950(param_1,(longlong)((param_2 + 1) * param_3) + 0x18), + pCVar1 != (CStringData *)0x0)) { + *(int *)(pCVar1 + 0xc) = param_2; + return pCVar1; + } + return (CStringData *)0x0; +} + + +================================================================== + +### EXPORT FUNC 18001fd54 (4 bytes) name=FUN_18001fd54 + +undefined8 FUN_18001fd54(undefined8 param_1) + +{ + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18001fd58 (10 bytes) name=FUN_18001fd58 + +longlong FUN_18001fd58(longlong param_1) + +{ + LOCK(); + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1; + UNLOCK(); + return param_1 + 8; +} + + +================================================================== + +### EXPORT FUNC 18001fd64 (8 bytes) name=FUN_18001fd64 + +undefined ** FUN_18001fd64(void) + +{ + return &PTR_s_CFile_180054198; +} + + +================================================================== + +### EXPORT FUNC 18001fd6c (73 bytes) name=FUN_18001fd6c + +DWORD FUN_18001fd6c(longlong param_1,LPVOID param_2,DWORD param_3) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + DWORD local_res18 [4]; + + if (param_3 == 0) { + local_res18[0] = 0; + } + else { + BVar2 = ReadFile(*(HANDLE *)(param_1 + 8),param_2,param_3,local_res18,(LPOVERLAPPED)0x0); + if (BVar2 == 0) { + psVar1 = *(short **)(param_1 + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + } + return local_res18[0]; +} + + +================================================================== + +### EXPORT FUNC 18001fdb8 (108 bytes) name=Write + +/* Library Function - Single Match + public: virtual void __cdecl CFile::Write(void const * __ptr64,unsigned int) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall CFile::Write(CFile *this,void *param_1,uint param_2) + +{ + short *psVar1; + code *pcVar2; + BOOL BVar3; + DWORD DVar4; + uint local_res18 [4]; + + if (param_2 != 0) { + BVar3 = WriteFile(*(HANDLE *)(this + 8),param_1,param_2,local_res18,(LPOVERLAPPED)0x0); + if (BVar3 == 0) { + psVar1 = *(short **)(this + 0x18); + DVar4 = GetLastError(); + ThrowOsError(DVar4,psVar1); + } + if (local_res18[0] != param_2) { + FUN_18002f3ac(0xd,0xffffffff,*(short **)(this + 0x18)); + pcVar2 = (code *)swi(3); + (*pcVar2)(); + return; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001fe24 (82 bytes) name=Seek + +/* Library Function - Single Match + public: virtual unsigned __int64 __cdecl CFile::Seek(__int64,unsigned int) __ptr64 + + Library: Visual Studio 2005 Release */ + +__uint64 __thiscall CFile::Seek(CFile *this,__int64 param_1,uint param_2) + +{ + short *psVar1; + DWORD DVar2; + undefined8 local_res8; + + local_res8 = param_1; + DVar2 = SetFilePointer(*(HANDLE *)(this + 8),(LONG)param_1,(PLONG)((longlong)&local_res8 + 4), + param_2); + local_res8 = CONCAT44(local_res8._4_4_,DVar2); + if (DVar2 == 0xffffffff) { + DVar2 = GetLastError(); + if (DVar2 != 0) { + psVar1 = *(short **)(this + 0x18); + DVar2 = GetLastError(); + ThrowOsError(DVar2,psVar1); + } + } + return local_res8; +} + + +================================================================== + +### EXPORT FUNC 18001fe78 (88 bytes) name=FUN_18001fe78 + +undefined8 FUN_18001fe78(longlong param_1) + +{ + short *psVar1; + DWORD DVar2; + undefined8 local_res8; + + local_res8 = 0; + DVar2 = SetFilePointer(*(HANDLE *)(param_1 + 8),0,(PLONG)((longlong)&local_res8 + 4),1); + local_res8 = CONCAT44(local_res8._4_4_,DVar2); + if (DVar2 == 0xffffffff) { + DVar2 = GetLastError(); + if (DVar2 != 0) { + psVar1 = *(short **)(param_1 + 0x18); + DVar2 = GetLastError(); + ThrowOsError(DVar2,psVar1); + } + } + return local_res8; +} + + +================================================================== + +### EXPORT FUNC 18001fed0 (55 bytes) name=Flush + +/* Library Function - Single Match + public: virtual void __cdecl CFile::Flush(void) __ptr64 + + Library: Visual Studio 2005 Release */ + +void __thiscall CFile::Flush(CFile *this) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + + if (*(HANDLE *)(this + 8) != (HANDLE)0xffffffffffffffff) { + BVar2 = FlushFileBuffers(*(HANDLE *)(this + 8)); + if (BVar2 == 0) { + psVar1 = *(short **)(this + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ff08 (70 bytes) name=FID_conflict:UnlockRange + +/* Library Function - Multiple Matches With Different Base Names + public: virtual void __cdecl CFile::LockRange(unsigned __int64,unsigned __int64) __ptr64 + public: virtual void __cdecl CFile::UnlockRange(unsigned __int64,unsigned __int64) __ptr64 + + Library: Visual Studio 2005 Release */ + +void FID_conflict_UnlockRange(longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + + BVar2 = LockFile(*(HANDLE *)(param_1 + 8),(DWORD)param_2,(DWORD)((ulonglong)param_2 >> 0x20), + (DWORD)param_3,(DWORD)((ulonglong)param_3 >> 0x20)); + if (BVar2 == 0) { + psVar1 = *(short **)(param_1 + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ff50 (70 bytes) name=FID_conflict:UnlockRange + +/* Library Function - Multiple Matches With Different Base Names + public: virtual void __cdecl CFile::LockRange(unsigned __int64,unsigned __int64) __ptr64 + public: virtual void __cdecl CFile::UnlockRange(unsigned __int64,unsigned __int64) __ptr64 + + Library: Visual Studio 2005 Release */ + +void FID_conflict_UnlockRange(longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + + BVar2 = UnlockFile(*(HANDLE *)(param_1 + 8),(DWORD)param_2,(DWORD)((ulonglong)param_2 >> 0x20), + (DWORD)param_3,(DWORD)((ulonglong)param_3 >> 0x20)); + if (BVar2 == 0) { + psVar1 = *(short **)(param_1 + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ff98 (58 bytes) name=SetLength + +/* Library Function - Single Match + public: virtual void __cdecl CFile::SetLength(unsigned __int64) __ptr64 + + Library: Visual Studio 2005 Release */ + +void __thiscall CFile::SetLength(CFile *this,__uint64 param_1) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + + (**(code **)(*(longlong *)this + 0x50))(this,param_1,0); + BVar2 = SetEndOfFile(*(HANDLE *)(this + 8)); + if (BVar2 == 0) { + psVar1 = *(short **)(this + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18001ffd4 (74 bytes) name=GetLength + +/* Library Function - Single Match + public: virtual unsigned __int64 __cdecl CFile::GetLength(void)const __ptr64 + + Library: Visual Studio 2005 Release */ + +__uint64 __thiscall CFile::GetLength(CFile *this) + +{ + short *psVar1; + DWORD DVar2; + DWORD DVar3; + DWORD aDStackX_c [7]; + + DVar2 = GetFileSize(*(HANDLE *)(this + 8),aDStackX_c); + if (DVar2 == 0xffffffff) { + DVar3 = GetLastError(); + if (DVar3 != 0) { + psVar1 = *(short **)(this + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + } + return CONCAT44(aDStackX_c[0],DVar2); +} + + +================================================================== + +### EXPORT FUNC 180020020 (144 bytes) name=AfxGetFileTitle + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + unsigned int __cdecl AfxGetFileTitle(wchar_t const * __ptr64,wchar_t * __ptr64,unsigned int) + + Library: Visual Studio 2005 Release */ + +uint __cdecl AfxGetFileTitle(wchar_t *param_1,wchar_t *param_2,uint param_3) + +{ + short sVar1; + uint uVar2; + int iVar3; + WCHAR *Buf; + undefined1 auStack_268 [32]; + WCHAR local_248 [264]; + ulonglong local_38; + + local_38 = DAT_18006cea0 ^ (ulonglong)auStack_268; + uVar2 = 0; + Buf = param_2; + if (param_2 == (wchar_t *)0x0) { + Buf = local_248; + param_3 = 0x104; + } + sVar1 = GetFileTitleW(param_1,Buf,(WORD)param_3); + if (sVar1 == 0) { + if (param_2 == (wchar_t *)0x0) { + iVar3 = lstrlenW(Buf); + uVar2 = iVar3 + 1; + } + } + else { + uVar2 = FUN_180024240(param_1,param_2,(ulonglong)param_3); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 1800200b0 (90 bytes) name=Close + +/* Library Function - Single Match + public: virtual void __cdecl CFile::Close(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall CFile::Close(CFile *this) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + bool bVar4; + + bVar4 = false; + if (*(HANDLE *)(this + 8) != (HANDLE)0xffffffffffffffff) { + BVar2 = CloseHandle(*(HANDLE *)(this + 8)); + bVar4 = BVar2 == 0; + } + *(undefined8 *)(this + 8) = 0xffffffffffffffff; + *(undefined4 *)(this + 0x10) = 0; + FUN_18000aec0((longlong *)(this + 0x18)); + if (bVar4) { + psVar1 = *(short **)(this + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002010c (44 bytes) name=Abort + +/* Library Function - Single Match + public: virtual void __cdecl CFile::Abort(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release, + Visual Studio 2015 Release */ + +void __thiscall CFile::Abort(CFile *this) + +{ + if (*(HANDLE *)(this + 8) != (HANDLE)0xffffffffffffffff) { + CloseHandle(*(HANDLE *)(this + 8)); + *(undefined8 *)(this + 8) = 0xffffffffffffffff; + } + FUN_18000aec0((longlong *)(this + 0x18)); + return; +} + + +================================================================== + +### EXPORT FUNC 180020138 (74 bytes) name=FUN_180020138 + +undefined8 * FUN_180020138(undefined8 *param_1) + +{ + undefined **ppuVar1; + longlong lVar2; + + *param_1 = CFile::vftable; + ppuVar1 = FUN_18001fcc0(); + if (ppuVar1 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*ppuVar1 + 0x18))(ppuVar1); + param_1[3] = lVar2 + 0x18; + param_1[1] = 0xffffffffffffffff; + *(undefined4 *)(param_1 + 2) = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180020184 (194 bytes) name=Duplicate + +/* Library Function - Single Match + public: virtual class CFile * __ptr64 __cdecl CFile::Duplicate(void)const __ptr64 + + Library: Visual Studio 2008 Release */ + +CFile * __thiscall CFile::Duplicate(CFile *this) + +{ + short *psVar1; + BOOL BVar2; + DWORD DVar3; + CFile *pCVar4; + HANDLE hTargetProcessHandle; + HANDLE hSourceProcessHandle; + HANDLE local_res8; + undefined8 *local_res10; + + local_res10 = FUN_18001eb74(0x20); + if (local_res10 == (undefined8 *)0x0) { + pCVar4 = (CFile *)0x0; + } + else { + pCVar4 = (CFile *)FUN_180020138(local_res10); + } + hTargetProcessHandle = GetCurrentProcess(); + hSourceProcessHandle = GetCurrentProcess(); + BVar2 = DuplicateHandle(hSourceProcessHandle,*(HANDLE *)(this + 8),hTargetProcessHandle, + &local_res8,0,0,2); + if (BVar2 == 0) { + if (pCVar4 != (CFile *)0x0) { + (**(code **)(*(longlong *)pCVar4 + 8))(pCVar4,1); + } + psVar1 = *(short **)(this + 0x18); + DVar3 = GetLastError(); + ThrowOsError(DVar3,psVar1); + } + *(HANDLE *)(pCVar4 + 8) = local_res8; + *(undefined4 *)(pCVar4 + 0x10) = *(undefined4 *)(this + 0x10); + return pCVar4; +} + + +================================================================== + +### EXPORT FUNC 180020254 (24 bytes) name=Unwind@180020254 + +void Unwind_180020254(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x68)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002026c (220 bytes) name=FUN_18002026c + +void FUN_18002026c(short *param_1,longlong *param_2) + +{ + LPWSTR pszPath; + int iVar1; + longlong lVar2; + + if ((int)(1U - *(int *)(*param_2 + -8) | *(int *)(*param_2 + -0xc) - 0x104U) < 0) { + FUN_18000b190(param_2,0x104); + } + pszPath = (LPWSTR)*param_2; + FUN_1800357d0((ulonglong *)pszPath,0,0x104); + iVar1 = FUN_1800354c0(pszPath,0x104,param_1,-1); + if (iVar1 != 0) { + if (iVar1 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar1 == 0x16) || (iVar1 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar1 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + PathStripToRootW(pszPath); + if ((short *)*param_2 == (short *)0x0) { + iVar1 = 0; + } + else { + lVar2 = FUN_1800355e0((short *)*param_2); + iVar1 = (int)lVar2; + if (iVar1 < 0) goto LAB_180020341; + } + if (iVar1 <= *(int *)(*param_2 + -0xc)) { + *(int *)(*param_2 + -0x10) = iVar1; + *(undefined2 *)(*param_2 + (longlong)iVar1 * 2) = 0; + return; + } +LAB_180020341: + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18002034c (85 bytes) name=FUN_18002034c + +undefined8 * FUN_18002034c(undefined8 *param_1,uint param_2) + +{ + int *piVar1; + int iVar2; + longlong lVar3; + + lVar3 = param_1[3]; + *param_1 = CFileException::vftable; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800203a4 (132 bytes) name=FUN_1800203a4 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1800203a4(CFile *param_1) + +{ + int *piVar1; + int iVar2; + longlong lVar3; + undefined1 auStack_468 [56]; + CFile *local_430; + undefined8 local_420; + ulonglong local_18; + + local_420 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_468; + *(undefined ***)param_1 = CFile::vftable; + local_430 = param_1; + if ((*(longlong *)(param_1 + 8) != -1) && (*(int *)(param_1 + 0x10) != 0)) { + CFile::Close(param_1); + } + lVar3 = *(longlong *)(param_1 + 0x18); + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180020434 (28 bytes) name=Unwind@180020434 + +void Unwind_180020434(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(*(longlong *)(param_2 + 0x38) + 0x18)); + return; +} + + +================================================================== + +### EXPORT FUNC 180020454 (253 bytes) name=Catch@180020454 + +undefined * Catch_180020454(undefined8 param_1,longlong param_2) + +{ + wchar_t *pwVar1; + wchar_t *pwVar2; + int iVar3; + undefined **ppuVar4; + longlong lVar5; + + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + *(longlong *)(param_2 + 0x30) = lVar5 + 0x18; + iVar3 = (**(code **)(**(longlong **)(param_2 + 0x40) + 0x18)) + (*(longlong **)(param_2 + 0x40),param_2 + 0x50,0x200,0); + if (iVar3 == 0) { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\src\\mfc\\filecore.cpp"); + } + else { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)\n%s","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\src\\mfc\\filecore.cpp"); + } + pwVar2 = *(wchar_t **)(param_2 + 0x30); + AfxMessageBox(pwVar2,0,0); + LOCK(); + pwVar1 = pwVar2 + -4; + iVar3 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar2 + -0xc) + 8))(); + } + (**(code **)(**(longlong **)(param_2 + 0x40) + 8))(*(longlong **)(param_2 + 0x40),1); + return &DAT_1800203ef; +} + + +================================================================== + +### EXPORT FUNC 180020554 (24 bytes) name=Unwind@180020554 + +void Unwind_180020554(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002056c (47 bytes) name=FUN_18002056c + +CFile * FUN_18002056c(CFile *param_1,uint param_2) + +{ + FUN_1800203a4(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002059c (93 bytes) name=FUN_18002059c + +void FUN_18002059c(longlong param_1,short *param_2) + +{ + DWORD DVar1; + int iVar2; + longlong lVar3; + int iVar4; + + iVar4 = 0; + if (param_1 != 0) { + DVar1 = GetLastError(); + *(DWORD *)(param_1 + 0x14) = DVar1; + iVar2 = CFileException::OsErrorToException(DVar1); + *(int *)(param_1 + 0x10) = iVar2; + if (param_2 != (short *)0x0) { + lVar3 = FUN_1800355e0(param_2); + iVar4 = (int)lVar3; + } + FUN_18000b480((longlong *)(param_1 + 0x18),param_2,iVar4); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800205fc (810 bytes) name=FUN_1800205fc + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 FUN_1800205fc(LPWSTR param_1,LPCWSTR param_2,longlong param_3) + +{ + LPCWSTR pWVar1; + LPCWSTR lpRootPathName; + DWORD DVar2; + int iVar3; + BOOL BVar4; + int iVar5; + errno_t eVar6; + longlong lVar7; + undefined **ppuVar8; + HANDLE hFindFile; + undefined8 uVar9; + int iVar10; + undefined1 auStackY_2f8 [32]; + uint local_2b8 [2]; + LPWSTR local_2b0; + LPCWSTR local_2a8; + DWORD local_2a0 [2]; + undefined8 local_298; + _WIN32_FIND_DATAW local_288; + ulonglong local_38; + + local_298 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_2f8; + iVar5 = 0; + iVar3 = 0; + if (param_1 == (LPWSTR)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_2 == (LPCWSTR)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + DVar2 = GetFullPathNameW(param_2,0x104,param_1,&local_2b0); + if (DVar2 == 0) { + iVar3 = FUN_1800354c0(param_1,0x104,param_2,-1); + if (iVar3 != 0) { + if (iVar3 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar3 == 0x16) || (iVar3 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar3 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + FUN_18002059c(param_3,param_2); + uVar9 = 0; + } + else if (DVar2 < 0x104) { + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar7 = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_2a8 = (LPCWSTR)(lVar7 + 0x18); + FUN_18002026c(param_1,(longlong *)&local_2a8); + lpRootPathName = local_2a8; + BVar4 = PathIsUNCW(local_2a8); + if (BVar4 == 0) { + BVar4 = GetVolumeInformationW + (lpRootPathName,(LPWSTR)0x0,0,(LPDWORD)0x0,local_2a0,local_2b8,(LPWSTR)0x0,0 + ); + if (BVar4 == 0) { + FUN_18002059c(param_3,param_2); + LOCK(); + pWVar1 = lpRootPathName + -4; + iVar3 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lpRootPathName + -0xc) + 8))(); + } + return 0; + } + if ((local_2b8[0] & 2) == 0) { + CharUpperW(param_1); + } + if (((local_2b8[0] & 4) == 0) && + (hFindFile = FindFirstFileW(param_2,&local_288), hFindFile != (HANDLE)0xffffffffffffffff)) + { + FindClose(hFindFile); + if ((local_2b0 == (LPWSTR)0x0) || (local_2b0 <= param_1)) { + FUN_18002059c(param_3,param_2); + LOCK(); + pWVar1 = lpRootPathName + -4; + iVar3 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lpRootPathName + -0xc) + 8))(); + } + return 0; + } + iVar5 = lstrlenW(local_288.cFileName); + iVar10 = (int)((longlong)local_2b0 - (longlong)param_1 >> 1); + if (0x103 < iVar5 + iVar10) { + if (param_3 != 0) { + *(undefined4 *)(param_3 + 0x10) = 3; + if (param_2 != (LPCWSTR)0x0) { + lVar7 = FUN_1800355e0(param_2); + iVar3 = (int)lVar7; + } + FUN_18000b480((longlong *)(param_3 + 0x18),param_2,iVar3); + } + LOCK(); + pWVar1 = lpRootPathName + -4; + iVar3 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lpRootPathName + -0xc) + 8))(); + } + return 0; + } + eVar6 = wcscpy_s(local_2b0,(longlong)(0x104 - iVar10),local_288.cFileName); + if (eVar6 != 0) { + if (eVar6 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar6 == 0x16) || (eVar6 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar6 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + } + } + LOCK(); + pWVar1 = lpRootPathName + -4; + iVar3 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(lpRootPathName + -0xc) + 8))(); + } + uVar9 = 1; + } + else { + if (param_3 != 0) { + *(undefined4 *)(param_3 + 0x10) = 3; + if (param_2 != (LPCWSTR)0x0) { + lVar7 = FUN_1800355e0(param_2); + iVar5 = (int)lVar7; + } + FUN_18000b480((longlong *)(param_3 + 0x18),param_2,iVar5); + } + uVar9 = 0; + } + return uVar9; +} + + +================================================================== + +### EXPORT FUNC 18002093c (24 bytes) name=Unwind@18002093c + +void Unwind_18002093c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 180020954 (180 bytes) name=FUN_180020954 + +undefined8 * FUN_180020954(undefined8 *param_1,undefined4 param_2,undefined4 param_3,short *param_4) + +{ + undefined **ppuVar1; + longlong lVar2; + int iVar3; + + FUN_18001ee0c((longlong)param_1); + *param_1 = CFileException::vftable; + ppuVar1 = FUN_18001fcc0(); + iVar3 = 0; + if (ppuVar1 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*ppuVar1 + 0x18))(ppuVar1); + param_1[3] = lVar2 + 0x18; + *(undefined4 *)(param_1 + 2) = param_2; + *(undefined4 *)((longlong)param_1 + 0x14) = param_3; + if (param_4 != (short *)0x0) { + lVar2 = FUN_1800355e0(param_4); + iVar3 = (int)lVar2; + } + FUN_18000b480(param_1 + 3,param_4,iVar3); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180020a14 (28 bytes) name=Unwind@180020a14 + +void Unwind_180020a14(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(*(longlong *)(param_2 + 0x50) + 0x18)); + return; +} + + +================================================================== + +### EXPORT FUNC 180020a30 (59 bytes) name=FUN_180020a30 + +void FUN_180020a30(longlong param_1,short *param_2) + +{ + longlong lVar1; + + if (param_2 != (short *)0x0) { + lVar1 = FUN_1800355e0(param_2); + FUN_18000b480((longlong *)(param_1 + 0x18),param_2,(int)lVar1); + return; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 180020a6c (500 bytes) name=FUN_180020a6c + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 FUN_180020a6c(longlong param_1,LPCWSTR param_2,uint param_3,longlong param_4) + +{ + uint uVar1; + DWORD dwFlagsAndAttributes; + LPCWSTR pWVar2; + undefined8 uVar3; + HANDLE pvVar4; + DWORD dwCreationDisposition; + longlong lVar5; + DWORD dwDesiredAccess; + DWORD dwShareMode; + int iVar6; + undefined1 auStackY_2b8 [32]; + _SECURITY_ATTRIBUTES local_278; + WCHAR local_258 [264]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_2b8; + *(undefined8 *)(param_1 + 8) = 0xffffffffffffffff; + dwShareMode = 0; + iVar6 = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + FUN_18000aec0((longlong *)(param_1 + 0x18)); + if (param_2 != (LPCWSTR)0x0) { + lVar5 = 0x104; + pWVar2 = param_2; + do { + if (*pWVar2 == L'\0') break; + pWVar2 = pWVar2 + 1; + lVar5 = lVar5 + -1; + } while (lVar5 != 0); + if (lVar5 != 0) { + uVar3 = FUN_1800205fc(local_258,param_2,param_4); + if ((int)uVar3 == 0) { + return 0; + } + lVar5 = FUN_1800355e0(local_258); + FUN_18000b480((longlong *)(param_1 + 0x18),local_258,(int)lVar5); + dwCreationDisposition = 3; + uVar1 = param_3 & 3; + if (uVar1 == 0) { + dwDesiredAccess = 0x80000000; + } + else if (uVar1 == 1) { + dwDesiredAccess = 0x40000000; + } + else { + dwDesiredAccess = dwShareMode; + if (uVar1 == 2) { + dwDesiredAccess = 0xc0000000; + } + } + uVar1 = param_3 & 0x70; + if ((uVar1 != 0) && (uVar1 != 0x10)) { + if (uVar1 == 0x20) { + dwShareMode = 1; + } + else if (uVar1 == 0x30) { + dwShareMode = 2; + } + else if (uVar1 == 0x40) { + dwShareMode = 3; + } + } + local_278.nLength = 0x18; + local_278.lpSecurityDescriptor = (LPVOID)0x0; + local_278.bInheritHandle = ~((param_3 & 0xffff7fff) >> 7) & 1; + if (((param_3 & 0xffff7fff) >> 0xc & 1) != 0) { + dwCreationDisposition = (-(uint)((param_3 & 0x2000) != 0) & 2) + 2; + } + dwFlagsAndAttributes = 0x80; + if ((param_3 >> 0x10 & 1) != 0) { + dwFlagsAndAttributes = 0x20000080; + } + if ((param_3 >> 0x11 & 1) != 0) { + dwFlagsAndAttributes = dwFlagsAndAttributes | 0x80000000; + } + if ((param_3 >> 0x12 & 1) != 0) { + dwFlagsAndAttributes = dwFlagsAndAttributes | 0x10000000; + } + if ((param_3 >> 0x13 & 1) != 0) { + dwFlagsAndAttributes = dwFlagsAndAttributes | 0x8000000; + } + pvVar4 = CreateFileW(param_2,dwDesiredAccess,dwShareMode,&local_278,dwCreationDisposition, + dwFlagsAndAttributes,(HANDLE)0x0); + if (pvVar4 == (HANDLE)0xffffffffffffffff) { + FUN_18002059c(param_4,param_2); + return 0; + } + *(HANDLE *)(param_1 + 8) = pvVar4; + *(undefined4 *)(param_1 + 0x10) = 1; + return 1; + } + } + if (param_4 != 0) { + *(undefined4 *)(param_4 + 0x10) = 3; + if (param_2 != (LPCWSTR)0x0) { + lVar5 = FUN_1800355e0(param_2); + iVar6 = (int)lVar5; + } + FUN_18000b480((longlong *)(param_4 + 0x18),param_2,iVar6); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180020c60 (8 bytes) name=FUN_180020c60 + +undefined ** FUN_180020c60(void) + +{ + return &PTR_s_COleException_1800543f8; +} + + +================================================================== + +### EXPORT FUNC 180020c68 (96 bytes) name=FUN_180020c68 + +void FUN_180020c68(undefined4 param_1) + +{ + undefined8 *puVar1; + undefined8 *local_res10 [3]; + + puVar1 = FUN_18001eb74(0x18); + if (puVar1 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)0x0; + } + else { + local_res10[0] = puVar1; + FUN_18001ee0c((longlong)puVar1); + *puVar1 = COleException::vftable; + *(undefined4 *)(puVar1 + 2) = 0; + } + *(undefined4 *)(puVar1 + 2) = param_1; + local_res10[0] = puVar1; + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_res10,(ThrowInfo *)&DAT_180068788); +} + + +================================================================== + +### EXPORT FUNC 180020cd8 (24 bytes) name=Unwind@180020cd8 + +void Unwind_180020cd8(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 180020cf0 (164 bytes) name=FUN_180020cf0 + +undefined4 FUN_180020cf0(longlong param_1,short *param_2,ulonglong param_3,undefined4 *param_4) + +{ + DWORD DVar1; + int iVar2; + undefined4 uVar3; + short *local_res8; + + if (param_4 != (undefined4 *)0x0) { + *param_4 = 0; + } + DVar1 = FormatMessageW(0x1100,(LPCVOID)0x0,*(DWORD *)(param_1 + 0x10),0x800,(LPWSTR)&local_res8,0, + (va_list *)0x0); + if (DVar1 == 0) { + *param_2 = 0; + uVar3 = 0; + } + else { + iVar2 = FUN_1800354c0(param_2,param_3 & 0xffffffff,local_res8,-1); + if (iVar2 != 0) { + if (iVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar2 == 0x16) || (iVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + LocalFree(local_res8); + uVar3 = 1; + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 180020d98 (38 bytes) name=FUN_180020d98 + +undefined8 * FUN_180020d98(undefined8 *param_1,byte param_2) + +{ + *param_1 = COleException::vftable; + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180020dc0 (126 bytes) name=FUN_180020dc0 + +void FUN_180020dc0(longlong *param_1,undefined2 param_2) + +{ + uint uVar1; + longlong lVar2; + int iVar3; + + lVar2 = *param_1; + uVar1 = *(uint *)(lVar2 + -0x10); + iVar3 = uVar1 + 1; + if ((int)(1U - *(int *)(lVar2 + -8) | *(int *)(lVar2 + -0xc) - iVar3) < 0) { + FUN_18000b190(param_1,iVar3); + } + *(undefined2 *)(*param_1 + (ulonglong)uVar1 * 2) = param_2; + if ((-1 < iVar3) && (iVar3 <= *(int *)(*param_1 + -0xc))) { + *(int *)(*param_1 + -0x10) = iVar3; + *(undefined2 *)(*param_1 + (longlong)iVar3 * 2) = 0; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 180020e40 (18 bytes) name=FUN_180020e40 + +undefined8 FUN_180020e40(void) + +{ + longlong lVar1; + + lVar1 = FUN_180022c04(); + return *(undefined8 *)(lVar1 + 8); +} + + +================================================================== + +### EXPORT FUNC 180020e54 (18 bytes) name=FUN_180020e54 + +longlong FUN_180020e54(void) + +{ + longlong lVar1; + + lVar1 = FUN_1800222f4(); + return lVar1 + 0x58; +} + + +================================================================== + +### EXPORT FUNC 180020e68 (43 bytes) name=AfxInternalProcessWndProcException + +/* Library Function - Single Match + __int64 __cdecl AfxInternalProcessWndProcException(class CException * __ptr64,struct tagMSG + const * __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +__int64 __cdecl AfxInternalProcessWndProcException(CException *param_1,tagMSG *param_2) + +{ + __int64 _Var1; + + if (param_2->message == 1) { + _Var1 = -1; + } + else { + if (param_2->message == 0xf) { + ValidateRect(param_2->hwnd,(RECT *)0x0); + } + _Var1 = 0; + } + return _Var1; +} + + +================================================================== + +### EXPORT FUNC 180020e94 (69 bytes) name=AfxProcessWndProcException + +/* Library Function - Single Match + __int64 __cdecl AfxProcessWndProcException(class CException * __ptr64,struct tagMSG const * + __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +__int64 __cdecl AfxProcessWndProcException(CException *param_1,tagMSG *param_2) + +{ + longlong *plVar1; + longlong lVar2; + __int64 _Var3; + + lVar2 = FUN_180022c04(); + plVar1 = *(longlong **)(lVar2 + 8); + if (plVar1 == (longlong *)0x0) { + _Var3 = AfxInternalProcessWndProcException(param_1,param_2); + } + else { + _Var3 = (**(code **)(*plVar1 + 0xd8))(plVar1,param_1,param_2); + } + return _Var3; +} + + +================================================================== + +### EXPORT FUNC 180020edc (139 bytes) name=AfxTermThread + +/* Library Function - Single Match + void __cdecl AfxTermThread(struct HINSTANCE__ * __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __cdecl AfxTermThread(HINSTANCE__ *param_1) + +{ + longlong *plVar1; + longlong lVar2; + undefined8 in_RDX; + undefined8 in_R8; + undefined8 in_R9; + + FUN_180023860(); + FUN_180023c24(-1,in_RDX,in_R8,in_R9); + if (param_1 == (HINSTANCE__ *)0x0) { + lVar2 = FUN_180022c04(); + if ((lVar2 != 0) && (*(longlong **)(lVar2 + 0x78) != (longlong *)0x0)) { + (**(code **)(**(longlong **)(lVar2 + 0x78) + 0xc0))(); + plVar1 = *(longlong **)(lVar2 + 0x78); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + *(undefined8 *)(lVar2 + 0x78) = 0; + } + } + if (DAT_18006edf0 != (DWORD *)0x0) { + FUN_180023498(DAT_18006edf0,(longlong)param_1,0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180020f7c (38 bytes) name=Catch@180020f7c + +undefined * Catch_180020f7c(undefined8 param_1,longlong param_2) + +{ + FUN_18001ec74(*(longlong **)(param_2 + 0x28)); + return &DAT_180020f07; +} + + +================================================================== + +### EXPORT FUNC 180020fac (38 bytes) name=Catch@180020fac + +undefined * Catch_180020fac(undefined8 param_1,longlong param_2) + +{ + FUN_18001ec74(*(longlong **)(param_2 + 0x30)); + return &DAT_180020f49; +} + + +================================================================== + +### EXPORT FUNC 180020fdc (38 bytes) name=Catch@180020fdc + +undefined8 Catch_180020fdc(undefined8 param_1,longlong param_2) + +{ + FUN_18001ec74(*(longlong **)(param_2 + 0x38)); + return 0x180020f66; +} + + +================================================================== + +### EXPORT FUNC 180021004 (83 bytes) name=CommonConstruct + +/* Library Function - Single Match + public: void __cdecl CWinThread::CommonConstruct(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall CWinThread::CommonConstruct(CWinThread *this) + +{ + longlong lVar1; + + *(undefined8 *)(this + 0x40) = 0; + *(undefined8 *)(this + 0x48) = 0; + *(undefined8 *)(this + 0x58) = 0; + *(undefined4 *)(this + 0x60) = 0; + lVar1 = FUN_1800222f4(); + *(undefined4 *)(lVar1 + 0x60) = 0; + *(undefined4 *)(lVar1 + 0x90) = 0; + GetCursorPos((LPPOINT)(lVar1 + 0x88)); + *(undefined8 *)(this + 0x80) = 0; + *(undefined8 *)(this + 0x78) = 0; + *(undefined4 *)(this + 0x50) = 1; + return; +} + + +================================================================== + +### EXPORT FUNC 180021058 (76 bytes) name=~CWinThread + +/* Library Function - Single Match + public: virtual __cdecl CWinThread::~CWinThread(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall CWinThread::~CWinThread(CWinThread *this) + +{ + longlong lVar1; + + *(undefined ***)this = vftable; + if (*(HANDLE *)(this + 0x58) != (HANDLE)0x0) { + CloseHandle(*(HANDLE *)(this + 0x58)); + } + lVar1 = FUN_180022c04(); + if (*(CWinThread **)(lVar1 + 8) == this) { + *(undefined8 *)(lVar1 + 8) = 0; + } + CCmdTarget::~CCmdTarget((CCmdTarget *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 1800210a8 (24 bytes) name=Unwind@1800210a8 + +void Unwind_1800210a8(undefined8 param_1,longlong param_2) + +{ + CCmdTarget::~CCmdTarget(*(CCmdTarget **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800210c0 (26 bytes) name=FUN_1800210c0 + +void FUN_1800210c0(longlong *param_1) + +{ + if ((int)param_1[10] != 0) { + (**(code **)(*param_1 + 8))(param_1,1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800210dc (207 bytes) name=FUN_1800210dc + +void FUN_1800210dc(longlong *param_1) + +{ + bool bVar1; + int iVar2; + BOOL BVar3; + longlong lVar4; + + lVar4 = FUN_1800222f4(); + bVar1 = true; + do { + while ((bVar1 && (BVar3 = PeekMessageW((LPMSG)(lVar4 + 0x58),(HWND)0x0,0,0,0), BVar3 == 0))) { + iVar2 = (**(code **)(*param_1 + 0xc0))(param_1); + if (iVar2 == 0) { + bVar1 = false; + } + } + do { + iVar2 = (**(code **)(*param_1 + 0xb8))(param_1); + if (iVar2 == 0) { + /* WARNING: Could not recover jumptable at 0x0001800211a4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*param_1 + 0xd0))(param_1); + return; + } + iVar2 = (**(code **)(*param_1 + 200))(); + if (iVar2 != 0) { + bVar1 = true; + } + BVar3 = PeekMessageW((LPMSG)(lVar4 + 0x58),(HWND)0x0,0,0,0); + } while (BVar3 != 0); + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 1800211ac (17 bytes) name=FUN_1800211ac + +undefined4 FUN_1800211ac(void) + +{ + longlong lVar1; + + lVar1 = FUN_1800222f4(); + return *(undefined4 *)(lVar1 + 0x68); +} + + +================================================================== + +### EXPORT FUNC 1800211c0 (153 bytes) name=FUN_1800211c0 + +undefined8 FUN_1800211c0(longlong *param_1,longlong param_2) + +{ + longlong *plVar1; + AFX_MSGMAP_ENTRY *pAVar2; + + plVar1 = (longlong *)(**(code **)(*param_1 + 0x50))(); + do { + if (*plVar1 == 0) { + return 0; + } + pAVar2 = (AFX_MSGMAP_ENTRY *)plVar1[1]; + if (*(uint *)(param_2 + 8) < 0xc000) { + pAVar2 = AfxFindMessageEntry(pAVar2,*(uint *)(param_2 + 8),0,0); + if (pAVar2 != (AFX_MSGMAP_ENTRY *)0x0) { +LAB_180021206: + (**(code **)(pAVar2 + 0x18)) + (param_1,*(undefined8 *)(param_2 + 0x10),*(undefined8 *)(param_2 + 0x18)); + return 1; + } + } + else { + while (pAVar2 = AfxFindMessageEntry(pAVar2,0xc000,0,0), pAVar2 != (AFX_MSGMAP_ENTRY *)0x0) { + if (**(int **)(pAVar2 + 0x10) == *(int *)(param_2 + 8)) goto LAB_180021206; + pAVar2 = pAVar2 + 0x20; + } + } + plVar1 = (longlong *)(*(code *)*plVar1)(); + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 18002125c (11 bytes) name=FUN_18002125c + +void FUN_18002125c(undefined8 param_1,CException *param_2,tagMSG *param_3) + +{ + AfxInternalProcessWndProcException(param_2,param_3); + return; +} + + +================================================================== + +### EXPORT FUNC 180021268 (8 bytes) name=FUN_180021268 + +undefined ** FUN_180021268(void) + +{ + return &PTR_s_CWinThread_180054498; +} + + +================================================================== + +### EXPORT FUNC 180021270 (49 bytes) name=CreateObject + +/* Library Function - Single Match + public: static class CNoTrackObject * __ptr64 __cdecl CThreadLocal::CreateObject(void) + + Library: Visual Studio 2008 Release */ + +CNoTrackObject * __cdecl CThreadLocal::CreateObject(void) + +{ + AFX_MODULE_THREAD_STATE *this; + CNoTrackObject *pCVar1; + + this = (AFX_MODULE_THREAD_STATE *)FUN_180022c84(0xa8); + pCVar1 = (CNoTrackObject *)0x0; + if (this != (AFX_MODULE_THREAD_STATE *)0x0) { + pCVar1 = (CNoTrackObject *)AFX_MODULE_THREAD_STATE::AFX_MODULE_THREAD_STATE(this); + } + return pCVar1; +} + + +================================================================== + +### EXPORT FUNC 1800212b0 (24 bytes) name=Unwind@1800212b0 + +void Unwind_1800212b0(undefined8 param_1,longlong param_2) + +{ + FUN_180022ca8(*(HLOCAL *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800212c8 (163 bytes) name=AfxInternalPreTranslateMessage + +/* Library Function - Single Match + int __cdecl AfxInternalPreTranslateMessage(struct tagMSG * __ptr64) + + Library: Visual Studio 2008 Release */ + +int __cdecl AfxInternalPreTranslateMessage(tagMSG *param_1) + +{ + int iVar1; + longlong lVar2; + undefined8 uVar3; + CWnd *pCVar4; + CWnd *pCVar5; + HWND__ *pHVar6; + + lVar2 = FUN_180022c04(); + if (((*(longlong **)(lVar2 + 8) == (longlong *)0x0) || (param_1->hwnd != (HWND)0x0)) || + (uVar3 = FUN_1800211c0(*(longlong **)(lVar2 + 8),(longlong)param_1), (int)uVar3 == 0)) { + lVar2 = FUN_180022c04(); + if (*(longlong **)(lVar2 + 8) == (longlong *)0x0) { + pCVar4 = (CWnd *)0x0; + } + else { + pCVar4 = (CWnd *)(**(code **)(**(longlong **)(lVar2 + 8) + 0xe8))(); + } + if (pCVar4 == (CWnd *)0x0) { + pHVar6 = (HWND__ *)0x0; + } + else { + pHVar6 = *(HWND__ **)(pCVar4 + 0x40); + } + iVar1 = CWnd::WalkPreTranslateTree(pHVar6,param_1); + if (iVar1 == 0) { + if (pCVar4 != (CWnd *)0x0) { + pCVar5 = CWnd::FromHandle(param_1->hwnd); + pCVar5 = CWnd::GetTopLevelParent(pCVar5); + if (pCVar5 != pCVar4) { + iVar1 = (**(code **)(*(longlong *)pCVar4 + 0x200))(pCVar4,param_1); + return iVar1; + } + } + return 0; + } + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18002136c (51 bytes) name=AfxPreTranslateMessage + +/* Library Function - Single Match + int __cdecl AfxPreTranslateMessage(struct tagMSG * __ptr64) + + Library: Visual Studio 2008 Release */ + +int __cdecl AfxPreTranslateMessage(tagMSG *param_1) + +{ + longlong *plVar1; + int iVar2; + longlong lVar3; + + lVar3 = FUN_180022c04(); + plVar1 = *(longlong **)(lVar3 + 8); + if (plVar1 == (longlong *)0x0) { + iVar2 = AfxInternalPreTranslateMessage(param_1); + } + else { + iVar2 = (**(code **)(*plVar1 + 0xb0))(plVar1,param_1); + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 1800213a0 (118 bytes) name=AfxInternalIsIdleMessage + +/* Library Function - Single Match + int __cdecl AfxInternalIsIdleMessage(struct tagMSG * __ptr64) + + Library: Visual Studio 2005 Release */ + +int __cdecl AfxInternalIsIdleMessage(tagMSG *param_1) + +{ + UINT UVar1; + POINT PVar2; + longlong lVar3; + + UVar1 = param_1->message; + if ((UVar1 == 0x200) || (UVar1 == 0xa0)) { + lVar3 = FUN_1800222f4(); + PVar2 = param_1->pt; + if ((*(int *)(lVar3 + 0x88) == PVar2.x) && + ((*(int *)(lVar3 + 0x8c) == PVar2.y && (param_1->message == *(UINT *)(lVar3 + 0x90))))) { + return 0; + } + *(POINT *)(lVar3 + 0x88) = PVar2; + *(UINT *)(lVar3 + 0x90) = param_1->message; + } + else if ((UVar1 == 0xf) || (UVar1 == 0x118)) { + return 0; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 180021418 (51 bytes) name=AfxIsIdleMessage + +/* Library Function - Single Match + int __cdecl AfxIsIdleMessage(struct tagMSG * __ptr64) + + Library: Visual Studio 2005 Release */ + +int __cdecl AfxIsIdleMessage(tagMSG *param_1) + +{ + longlong *plVar1; + int iVar2; + longlong lVar3; + + lVar3 = FUN_180022c04(); + plVar1 = *(longlong **)(lVar3 + 8); + if (plVar1 == (longlong *)0x0) { + iVar2 = AfxInternalIsIdleMessage(param_1); + } + else { + iVar2 = (**(code **)(*plVar1 + 200))(plVar1,param_1); + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 18002144c (113 bytes) name=AfxEndThread + +/* Library Function - Single Match + void __cdecl AfxEndThread(unsigned int,int) + + Library: Visual Studio 2008 Release */ + +void __cdecl AfxEndThread(uint param_1,int param_2) + +{ + longlong *plVar1; + longlong lVar2; + + lVar2 = FUN_180022c04(); + plVar1 = *(longlong **)(lVar2 + 8); + if (plVar1 != (longlong *)0x0) { + if ((code *)plVar1[0xf] != (code *)0x0) { + (*(code *)plVar1[0xf])(); + } + if (param_2 != 0) { + (**(code **)(*plVar1 + 0xf0))(); + } + *(undefined8 *)(lVar2 + 8) = 0; + } + AfxTermThread((HINSTANCE__ *)0x0); + _endthreadex(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 1800214c0 (90 bytes) name=CWinThread + +/* Library Function - Single Match + public: __cdecl CWinThread::CWinThread(unsigned int (__cdecl*)(void * __ptr64),void * __ptr64) + __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +CWinThread * __thiscall +CWinThread::CWinThread(CWinThread *this,_func_uint_void_ptr *param_1,void *param_2) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)this); + *(undefined ***)this = vftable; + *(_func_uint_void_ptr **)(this + 0x70) = param_1; + *(void **)(this + 0x68) = param_2; + CommonConstruct(this); + return this; +} + + +================================================================== + +### EXPORT FUNC 180021520 (24 bytes) name=Unwind@180021520 + +void Unwind_180021520(undefined8 param_1,longlong param_2) + +{ + CCmdTarget::~CCmdTarget(*(CCmdTarget **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180021538 (47 bytes) name=FUN_180021538 + +CWinThread * FUN_180021538(CWinThread *param_1,uint param_2) + +{ + CWinThread::~CWinThread(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180021568 (8 bytes) name=FUN_180021568 + +void FUN_180021568(undefined8 param_1,tagMSG *param_2) + +{ + AfxInternalIsIdleMessage(param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 180021570 (8 bytes) name=FUN_180021570 + +void FUN_180021570(undefined8 param_1,tagMSG *param_2) + +{ + AfxInternalPreTranslateMessage(param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 180021578 (41 bytes) name=FUN_180021578 + +void FUN_180021578(longlong param_1) + +{ + HWND pHVar1; + + if ((*(longlong *)(param_1 + 0x48) == 0) && (*(longlong *)(param_1 + 0x40) == 0)) { + pHVar1 = GetActiveWindow(); + CWnd::FromHandle(pHVar1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800215a4 (98 bytes) name=AfxInternalPumpMessage + +/* Library Function - Single Match + int __cdecl AfxInternalPumpMessage(void) + + Library: Visual Studio 2008 Release */ + +int __cdecl AfxInternalPumpMessage(void) + +{ + BOOL BVar1; + int iVar2; + longlong lVar3; + + lVar3 = FUN_1800222f4(); + BVar1 = GetMessageW((LPMSG)(lVar3 + 0x58),(HWND)0x0,0,0); + iVar2 = 0; + if (BVar1 != 0) { + if (*(int *)(lVar3 + 0x60) != 0x36a) { + iVar2 = AfxPreTranslateMessage((tagMSG *)(lVar3 + 0x58)); + if (iVar2 == 0) { + TranslateMessage((MSG *)(lVar3 + 0x58)); + DispatchMessageW((MSG *)(lVar3 + 0x58)); + } + } + iVar2 = 1; + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 180021608 (39 bytes) name=AfxPumpMessage + +/* Library Function - Single Match + int __cdecl AfxPumpMessage(void) + + Library: Visual Studio 2008 Release */ + +int __cdecl AfxPumpMessage(void) + +{ + int iVar1; + longlong lVar2; + + lVar2 = FUN_180022c04(); + if (*(longlong **)(lVar2 + 8) == (longlong *)0x0) { + iVar1 = AfxInternalPumpMessage(); + } + else { + iVar1 = (**(code **)(**(longlong **)(lVar2 + 8) + 0xb8))(); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180021630 (141 bytes) name=FUN_180021630 + +LRESULT FUN_180021630(int param_1,WPARAM param_2,LPARAM param_3) + +{ + longlong *plVar1; + int iVar2; + longlong lVar3; + void *pvVar4; + LRESULT LVar5; + + lVar3 = FUN_180022bb4(); + if ((*(char *)(lVar3 + 0x28) == '\0') && ((-1 < param_1 || (param_1 == 0x8001)))) { + lVar3 = FUN_180022c04(); + plVar1 = *(longlong **)(lVar3 + 8); + if (plVar1 != (longlong *)0x0) { + iVar2 = (**(code **)(*plVar1 + 0xe0))(plVar1,param_1,param_3); + return (longlong)iVar2; + } + } + pvVar4 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar4 != (void *)0x0) { + LVar5 = CallNextHookEx(*(HHOOK *)((longlong)pvVar4 + 0x50),param_1,param_2,param_3); + return LVar5; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 1800216c0 (412 bytes) name=FUN_1800216c0 + +undefined8 FUN_1800216c0(longlong *param_1,int param_2,undefined8 *param_3) + +{ + int iVar1; + CWnd *this; + CFrameWnd *pCVar2; + undefined8 uVar3; + longlong lVar4; + void *pvVar5; + undefined1 local_38 [48]; + + if (param_3 != (undefined8 *)0x0) { + if (param_2 != 0) { + if (param_2 != 2) { + return 0; + } + this = CWnd::FromHandle((HWND__ *)*param_3); + if ((((this != (CWnd *)0x0) && + (pCVar2 = CWnd::GetTopLevelFrame(this), pCVar2 != (CFrameWnd *)0x0)) && + (uVar3 = FUN_180027034((longlong)pCVar2), (int)uVar3 != 0)) && + (*(int *)(pCVar2 + 0xc4) != 0)) { + lVar4 = FUN_180022c04(); + if (*(longlong **)(lVar4 + 8) == (longlong *)0x0) { + lVar4 = 0; + } + else { + lVar4 = (**(code **)(**(longlong **)(lVar4 + 8) + 0xe8))(); + } + if ((param_1[8] != 0) && + (((*(int *)(param_3 + 1) == 0x100 && (param_3[2] == 0xd)) || + (*(int *)(param_3 + 1) == 0x202)))) { + SendMessageW(*(HWND *)(lVar4 + 0x40),0x111,0xe146,0); + return 1; + } + } + } + lVar4 = FUN_180022c04(); + if (*(longlong **)(lVar4 + 8) != (longlong *)0x0) { + (**(code **)(**(longlong **)(lVar4 + 8) + 0xe8))(); + } + if (((param_2 == 0) && (param_1[9] != 0)) && + ((0xff < *(uint *)(param_3 + 1) && (*(uint *)(param_3 + 1) < 0x10a)))) { + pvVar5 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar5 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(int *)((longlong)pvVar5 + 0x1a0) == 0) { + *(undefined4 *)((longlong)pvVar5 + 0x1a0) = 1; + memcpy(local_38,param_3,0x30); + iVar1 = CWnd::IsWindowEnabled((CWnd *)param_1[9]); + if ((iVar1 != 0) && (iVar1 = (**(code **)(*param_1 + 0xb0))(param_1,local_38), iVar1 != 0)) + { + *(undefined4 *)((longlong)pvVar5 + 0x1a0) = 0; + return 1; + } + *(undefined4 *)((longlong)pvVar5 + 0x1a0) = 0; + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180021860 (5 bytes) name=AfxInternalPumpMessage + +int __cdecl AfxInternalPumpMessage(void) + +{ + BOOL BVar1; + int iVar2; + longlong lVar3; + + lVar3 = FUN_1800222f4(); + BVar1 = GetMessageW((LPMSG)(lVar3 + 0x58),(HWND)0x0,0,0); + iVar2 = 0; + if (BVar1 != 0) { + if (*(int *)(lVar3 + 0x60) != 0x36a) { + iVar2 = AfxPreTranslateMessage((tagMSG *)(lVar3 + 0x58)); + if (iVar2 == 0) { + TranslateMessage((MSG *)(lVar3 + 0x58)); + DispatchMessageW((MSG *)(lVar3 + 0x58)); + } + } + iVar2 = 1; + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 180021868 (63 bytes) name=AfxInitThread + +/* Library Function - Single Match + void __cdecl AfxInitThread(void) + + Library: Visual Studio 2008 Release */ + +void __cdecl AfxInitThread(void) + +{ + longlong lVar1; + DWORD dwThreadId; + HHOOK pHVar2; + + lVar1 = FUN_180022bb4(); + if (*(char *)(lVar1 + 0x28) == '\0') { + lVar1 = FUN_1800222f4(); + dwThreadId = GetCurrentThreadId(); + pHVar2 = SetWindowsHookExW(-1,FUN_180021630,(HINSTANCE)0x0,dwThreadId); + *(HHOOK *)(lVar1 + 0x50) = pHVar2; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800218a8 (403 bytes) name=FUN_1800218a8 + +bool FUN_1800218a8(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4) + +{ + CWnd *pCVar1; + BOOL BVar2; + longlong lVar3; + void *pvVar4; + code *pcVar5; + CWnd *pCVar6; + + if (param_2 < 1) { + pCVar1 = *(CWnd **)(param_1 + 0x40); + if (((pCVar1 != (CWnd *)0x0) && (*(HWND *)(pCVar1 + 0x40) != (HWND)0x0)) && + (BVar2 = IsWindowVisible(*(HWND *)(pCVar1 + 0x40)), BVar2 != 0)) { + FUN_180029ea4(pCVar1,*(undefined8 *)(pCVar1 + 0x40),0x363,1,0); + FUN_18002a320(*(HWND *)(pCVar1 + 0x40),0x363,1,0,1,1); + } + lVar3 = FUN_180022bb4(); + pvVar4 = FUN_180023520((int *)(lVar3 + 0xc0),CThreadLocal::CreateObject + ); + if (pvVar4 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + for (pCVar6 = *(CWnd **)((longlong)pvVar4 + 0x10); pCVar6 != (CWnd *)0x0; + pCVar6 = *(CWnd **)(pCVar6 + 200)) { + if ((*(longlong *)(pCVar6 + 0x40) != 0) && (pCVar6 != pCVar1)) { + if (*(int *)(pCVar6 + 0x120) == 0) { + FUN_18002e260((longlong)pCVar6,0); + } + BVar2 = IsWindowVisible(*(HWND *)(pCVar6 + 0x40)); + if ((BVar2 != 0) || (-1 < *(int *)(pCVar6 + 0x120))) { + FUN_180029ea4(pCVar6,*(undefined8 *)(pCVar6 + 0x40),0x363,1,0); + FUN_18002a320(*(HWND *)(pCVar6 + 0x40),0x363,1,0,1,1); + } + if (0 < *(int *)(pCVar6 + 0x120)) { + FUN_18002e260((longlong)pCVar6,*(int *)(pCVar6 + 0x120)); + } + *(undefined4 *)(pCVar6 + 0x120) = 0xffffffff; + } + } + } + else { + lVar3 = FUN_180022bb4(); + pcVar5 = CThreadLocal::CreateObject; + pvVar4 = FUN_180023520((int *)(lVar3 + 0xc0),CThreadLocal::CreateObject + ); + if (pvVar4 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(int *)((longlong)pvVar4 + 0x20) == 0) { + FUN_180023860(); + FUN_180023c24(1,pcVar5,param_3,param_4); + } + } + return param_2 < 0; +} + + +================================================================== + +### EXPORT FUNC 180021a40 (347 bytes) name=_AfxThreadEntry + +/* Library Function - Single Match + unsigned int __cdecl _AfxThreadEntry(void * __ptr64) + + Library: Visual Studio 2008 Release */ + +uint __cdecl _AfxThreadEntry(void *param_1) + +{ + longlong *plVar1; + HANDLE hHandle; + uint uVar2; + int iVar3; + longlong lVar4; + void *pvVar5; + CWnd local_c8 [192]; + + plVar1 = *(longlong **)((longlong)param_1 + 8); + CWnd::CWnd(local_c8); + lVar4 = FUN_1800222f4(); + *(undefined8 *)(lVar4 + 8) = *(undefined8 *)(*(longlong *)param_1 + 8); + lVar4 = FUN_180022bb4(); + plVar1[7] = lVar4; + pvVar5 = FUN_180023520((int *)(lVar4 + 0xc0),CThreadLocal::CreateObject); + if (pvVar5 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *(longlong **)((longlong)pvVar5 + 8) = plVar1; + AfxInitThread(); + lVar4 = FUN_180022bb4(); + if ((((*(longlong *)(lVar4 + 8) != 0) && (plVar1[8] == 0)) && + (lVar4 = *(longlong *)(*(longlong *)(lVar4 + 8) + 0x40), lVar4 != 0)) && + (*(longlong *)(lVar4 + 0x40) != 0)) { + FUN_180029650(local_c8,*(ulonglong *)(lVar4 + 0x40)); + plVar1[8] = (longlong)local_c8; + } + hHandle = *(HANDLE *)((longlong)param_1 + 0x28); + SetEvent(*(HANDLE *)((longlong)param_1 + 0x20)); + WaitForSingleObject(hHandle,0xffffffff); + CloseHandle(hHandle); + if ((code *)plVar1[0xe] == (code *)0x0) { + iVar3 = (**(code **)(*plVar1 + 0xa0))(plVar1); + if (iVar3 == 0) { + uVar2 = (**(code **)(*plVar1 + 0xd0))(plVar1); + } + else { + uVar2 = (**(code **)(*plVar1 + 0xa8))(plVar1); + } + } + else { + uVar2 = (*(code *)plVar1[0xe])(plVar1[0xd]); + } + CWnd::Detach(local_c8); + AfxEndThread(uVar2,1); + CWnd::~CWnd(local_c8); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180021bb0 (24 bytes) name=Unwind@180021bb0 + +void Unwind_180021bb0(undefined8 param_1,longlong param_2) + +{ + CWnd::~CWnd((CWnd *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180021bd0 (72 bytes) name=Catch@180021bd0 + +/* Library Function - Single Match + int `unsigned int __cdecl _AfxThreadEntry(void * __ptr64)'::`1'::catch$0 + + Library: Visual Studio 2008 Release */ + +undefined * Catch_180021bd0(undefined8 param_1,longlong param_2) + +{ + longlong lVar1; + + CWnd::Detach((CWnd *)(param_2 + 0x30)); + lVar1 = *(longlong *)(param_2 + 0x100); + *(undefined4 *)(lVar1 + 0x30) = 1; + SetEvent(*(HANDLE *)(lVar1 + 0x20)); + AfxEndThread(0xffffffff,0); + return &DAT_180021afe; +} + + +================================================================== + +### EXPORT FUNC 180021c1c (360 bytes) name=FUN_180021c1c + +undefined8 FUN_180021c1c(longlong param_1,uint param_2,uint param_3,LPSECURITY_ATTRIBUTES param_4) + +{ + HANDLE hThread; + ulonglong local_48; + longlong local_40; + uint local_38; + HANDLE local_28; + HANDLE local_20; + int local_18; + + if (*(longlong *)(param_1 + 0x58) != 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + FUN_1800357d0(&local_48,0,0x38); + local_48 = FUN_1800222f4(); + local_40 = param_1; + local_28 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,1,0,(LPCWSTR)0x0); + local_20 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,1,0,(LPCWSTR)0x0); + local_38 = param_2; + if (local_28 != (HANDLE)0x0) { + if (local_20 != (HANDLE)0x0) { + hThread = FUN_180035d70(param_4,(ulonglong)param_3,0x180021a40,&local_48,param_2 | 4, + (LPDWORD)(param_1 + 0x60)); + *(HANDLE *)(param_1 + 0x58) = hThread; + if (hThread == (HANDLE)0x0) { + return 0; + } + ResumeThread(hThread); + WaitForSingleObject(local_28,0xffffffff); + CloseHandle(local_28); + if ((param_2 & 4) != 0) { + SuspendThread(*(HANDLE *)(param_1 + 0x58)); + } + if (local_18 == 0) { + SetEvent(local_20); + return 1; + } + WaitForSingleObject(*(HANDLE *)(param_1 + 0x58),0xffffffff); + CloseHandle(*(HANDLE *)(param_1 + 0x58)); + *(undefined8 *)(param_1 + 0x58) = 0; + goto LAB_180021d67; + } + CloseHandle(local_28); + } + if (local_20 == (HANDLE)0x0) { + return 0; + } +LAB_180021d67: + CloseHandle(local_20); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180021d88 (179 bytes) name=AfxBeginThread + +/* Library Function - Single Match + class CWinThread * __ptr64 __cdecl AfxBeginThread(unsigned int (__cdecl*)(void * __ptr64),void * + __ptr64,int,unsigned int,unsigned long,struct _SECURITY_ATTRIBUTES * __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +CWinThread * __cdecl +AfxBeginThread(_func_uint_void_ptr *param_1,void *param_2,int param_3,uint param_4,ulong param_5, + _SECURITY_ATTRIBUTES *param_6) + +{ + CWinThread *pCVar1; + undefined8 uVar2; + + pCVar1 = FUN_18001eb74(0x88); + if (pCVar1 == (CWinThread *)0x0) { + pCVar1 = (CWinThread *)0x0; + } + else { + pCVar1 = (CWinThread *)CWinThread::CWinThread(pCVar1,param_1,param_2); + } + uVar2 = FUN_180021c1c((longlong)pCVar1,param_5 | 4,param_4,param_6); + if ((int)uVar2 == 0) { + (**(code **)(*(longlong *)pCVar1 + 0xf0))(pCVar1); + pCVar1 = (CWinThread *)0x0; + } + else { + SetThreadPriority(*(HANDLE *)(pCVar1 + 0x58),param_3); + if ((param_5 & 4) == 0) { + ResumeThread(*(HANDLE *)(pCVar1 + 0x58)); + } + } + return pCVar1; +} + + +================================================================== + +### EXPORT FUNC 180021e48 (24 bytes) name=Unwind@180021e48 + +void Unwind_180021e48(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 180021e60 (5 bytes) name=~CThreadLocalObject + +void __thiscall CThreadLocalObject::~CThreadLocalObject(CThreadLocalObject *this) + +{ + if ((*(int *)this != 0) && (DAT_18006edf0 != 0)) { + FUN_180023128(DAT_18006edf0,*(int *)this); + } + *(undefined4 *)this = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 180021e68 (157 bytes) name=FUN_180021e68 + +void FUN_180021e68(void) + +{ + if (DAT_18006edd0 == (HMODULE)0x0) { + DAT_18006edd0 = GetModuleHandleW(L"KERNEL32"); + if (DAT_18006edd0 == (HMODULE)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + DAT_18006edb0 = GetProcAddress(DAT_18006edd0,"CreateActCtxW"); + DAT_18006edb8 = GetProcAddress(DAT_18006edd0,"ReleaseActCtx"); + DAT_18006edc0 = GetProcAddress(DAT_18006edd0,"ActivateActCtx"); + DAT_18006edc8 = GetProcAddress(DAT_18006edd0,"DeactivateActCtx"); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180021f08 (26 bytes) name=FUN_180021f08 + +void FUN_180021f08(void) + +{ + if (DAT_18006edc8 != (code *)0x0) { + (*DAT_18006edc8)(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180021f24 (52 bytes) name=FUN_180021f24 + +undefined1 FUN_180021f24(undefined8 param_1,longlong param_2) + +{ + int iVar1; + undefined1 uVar2; + + if (param_2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (DAT_18006edc0 == (code *)0x0) { + uVar2 = 2; + } + else { + iVar1 = (*DAT_18006edc0)(); + uVar2 = iVar1 != 0; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180021f5c (331 bytes) name=FUN_180021f5c + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180021f5c(longlong param_1) + +{ + HMODULE hModule; + DWORD DVar1; + longlong lVar2; + undefined8 uVar3; + undefined1 auStack_288 [32]; + undefined4 local_268; + undefined4 local_264; + WCHAR *local_260; + undefined8 local_248; + HMODULE local_238; + WCHAR local_228 [260]; + short local_20; + undefined2 local_1e; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_288; + FUN_180021e68(); + hModule = *(HMODULE *)(param_1 + 0x10); + local_1e = 0; + local_20 = 0; + DVar1 = GetModuleFileNameW(hModule,local_228,0x105); + if (DVar1 != 0) { + if (local_20 == 0) { + local_260 = local_228; + local_268 = 0x38; + local_264 = 0x88; + local_248 = 2; + local_238 = hModule; + if (DAT_18006edb0 == (code *)0x0) { + lVar2 = -1; + } + else { + lVar2 = (*DAT_18006edb0)(&local_268); + } + *(longlong *)(param_1 + 0xd8) = lVar2; + if (lVar2 == -1) { + local_248 = 3; + if (DAT_18006edb0 == (code *)0x0) { + uVar3 = 0xffffffffffffffff; + } + else { + uVar3 = (*DAT_18006edb0)(&local_268); + } + *(undefined8 *)(param_1 + 0xd8) = uVar3; + } + if (*(longlong *)(param_1 + 0xd8) == -1) { + local_248 = 1; + if (DAT_18006edb0 == (code *)0x0) { + lVar2 = -1; + } + else { + lVar2 = (*DAT_18006edb0)(&local_268); + } + *(longlong *)(param_1 + 0xd8) = lVar2; + if (lVar2 == -1) { + *(undefined8 *)(param_1 + 0xd8) = 0; + } + } + } + else { + SetLastError(0x6f); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800220a8 (62 bytes) name=Unlock + +/* Library Function - Single Match + public: void __cdecl CTypeLibCache::Unlock(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CTypeLibCache::Unlock(CTypeLibCache *this) + +{ + CTypeLibCache *pCVar1; + + LOCK(); + pCVar1 = this + 0x30; + *(int *)pCVar1 = *(int *)pCVar1 + -1; + UNLOCK(); + if (*(int *)pCVar1 == 0) { + if (*(longlong **)(this + 0x28) != (longlong *)0x0) { + (**(code **)(**(longlong **)(this + 0x28) + 0x10))(); + *(undefined8 *)(this + 0x28) = 0; + } + if (*(longlong **)(this + 0x10) != (longlong *)0x0) { + (**(code **)(**(longlong **)(this + 0x10) + 0x10))(); + *(undefined8 *)(this + 0x10) = 0; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800220e8 (45 bytes) name=_AFX_THREAD_STATE + +/* Library Function - Single Match + public: __cdecl _AFX_THREAD_STATE::_AFX_THREAD_STATE(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +_AFX_THREAD_STATE * __thiscall _AFX_THREAD_STATE::_AFX_THREAD_STATE(_AFX_THREAD_STATE *this) + +{ + *(undefined ***)this = vftable; + *(undefined4 *)(this + 0x60) = 0; + *(undefined4 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x88) = 0; + return this; +} + + +================================================================== + +### EXPORT FUNC 180022118 (69 bytes) name=~_AFX_THREAD_STATE + +/* Library Function - Single Match + public: virtual __cdecl _AFX_THREAD_STATE::~_AFX_THREAD_STATE(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall _AFX_THREAD_STATE::~_AFX_THREAD_STATE(_AFX_THREAD_STATE *this) + +{ + *(undefined ***)this = vftable; + if (*(HHOOK *)(this + 0x50) != (HHOOK)0x0) { + UnhookWindowsHookEx(*(HHOOK *)(this + 0x50)); + } + if (*(HHOOK *)(this + 0x48) != (HHOOK)0x0) { + UnhookWindowsHookEx(*(HHOOK *)(this + 0x48)); + } + if (*(LPVOID *)(this + 0x18) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)(this + 0x18)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022160 (244 bytes) name=~AFX_MODULE_THREAD_STATE + +/* Library Function - Single Match + public: virtual __cdecl AFX_MODULE_THREAD_STATE::~AFX_MODULE_THREAD_STATE(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall AFX_MODULE_THREAD_STATE::~AFX_MODULE_THREAD_STATE(AFX_MODULE_THREAD_STATE *this) + +{ + undefined8 *puVar1; + longlong lVar2; + longlong *plVar3; + LPVOID pvVar4; + + *(undefined ***)this = vftable; + if (*(longlong **)(this + 0x78) != (longlong *)0x0) { + (**(code **)(**(longlong **)(this + 0x78) + 0x278))(); + } + thunk_FUN_180034a70(*(LPVOID *)(this + 0x90)); + puVar1 = *(undefined8 **)(this + 0x28); + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + puVar1 = *(undefined8 **)(this + 0x30); + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + puVar1 = *(undefined8 **)(this + 0x38); + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + puVar1 = *(undefined8 **)(this + 0x40); + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + puVar1 = *(undefined8 **)(this + 0x48); + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + if (*(longlong *)(this + 0x70) != 0) { + lVar2 = *(longlong *)(*(longlong *)(this + 0x70) + 0x18); + while (lVar2 != 0) { + pvVar4 = (LPVOID)FUN_180030448(*(longlong *)(this + 0x70)); + thunk_FUN_180034a70(pvVar4); + lVar2 = *(longlong *)(*(longlong *)(this + 0x70) + 0x18); + } + } + plVar3 = *(longlong **)(this + 0x60); + if (plVar3 != (longlong *)0x0) { + (**(code **)(*plVar3 + 8))(plVar3,1); + } + plVar3 = *(longlong **)(this + 0x68); + if (plVar3 != (longlong *)0x0) { + (**(code **)(*plVar3 + 8))(plVar3,1); + } + plVar3 = *(longlong **)(this + 0x70); + if (plVar3 != (longlong *)0x0) { + (**(code **)(*plVar3 + 8))(plVar3,1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022254 (47 bytes) name=FUN_180022254 + +_AFX_THREAD_STATE * FUN_180022254(_AFX_THREAD_STATE *param_1,uint param_2) + +{ + _AFX_THREAD_STATE::~_AFX_THREAD_STATE(param_1); + if ((param_2 & 1) != 0) { + FUN_180022ca8(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180022284 (64 bytes) name=AFX_MODULE_THREAD_STATE + +/* Library Function - Single Match + public: __cdecl AFX_MODULE_THREAD_STATE::AFX_MODULE_THREAD_STATE(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +AFX_MODULE_THREAD_STATE * __thiscall +AFX_MODULE_THREAD_STATE::AFX_MODULE_THREAD_STATE(AFX_MODULE_THREAD_STATE *this) + +{ + *(undefined ***)this = vftable; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x88) = 0xffffffffffffffff; + *(undefined8 *)(this + 0x98) = 0xffffffffffffffff; + *(code **)(this + 0x50) = FUN_18001eb58; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x18) = 200; + return this; +} + + +================================================================== + +### EXPORT FUNC 1800222c4 (47 bytes) name=FUN_1800222c4 + +AFX_MODULE_THREAD_STATE * FUN_1800222c4(AFX_MODULE_THREAD_STATE *param_1,uint param_2) + +{ + AFX_MODULE_THREAD_STATE::~AFX_MODULE_THREAD_STATE(param_1); + if ((param_2 & 1) != 0) { + FUN_180022ca8(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800222f4 (38 bytes) name=FUN_1800222f4 + +void FUN_1800222f4(void) + +{ + void *pvVar1; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002231c (234 bytes) name=FUN_18002231c + +void FUN_18002231c(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + int iVar2; + longlong *plVar3; + undefined8 *puVar4; + longlong lVar5; + + *param_1 = AFX_MODULE_STATE::vftable; + plVar3 = (longlong *)param_1[0x17]; + if (plVar3 != (longlong *)0x0) { + (**(code **)(*plVar3 + 0x18))(plVar3,param_1 + 0x10,param_3,param_4,0xfffffffffffffffe); + plVar3 = (longlong *)param_1[0x17]; + if (plVar3 != (longlong *)0x0) { + (**(code **)(*plVar3 + 8))(plVar3,1); + } + } + puVar4 = *(undefined8 **)param_1[0x19]; + if (puVar4 != (undefined8 *)0x0) { + (**(code **)*puVar4)(puVar4,1); + } + puVar4 = *(undefined8 **)(param_1[0x19] + 8); + if (puVar4 != (undefined8 *)0x0) { + (**(code **)*puVar4)(puVar4,1); + } + thunk_FUN_180034a70((LPVOID)param_1[0x19]); + if ((param_1[0x1b] != 0) && (param_1[0x1b] != -1)) { + if (DAT_18006edb8 != (code *)0x0) { + (*DAT_18006edb8)(); + } + param_1[0x1b] = 0xffffffffffffffff; + } + CThreadLocalObject::~CThreadLocalObject((CThreadLocalObject *)(param_1 + 0x18)); + lVar5 = param_1[0xb]; + LOCK(); + piVar1 = (int *)(lVar5 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar5 + -0x18) + 8))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002240c (28 bytes) name=Unwind@18002240c + +void Unwind_18002240c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(*(longlong *)(param_2 + 0x40) + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002242c (31 bytes) name=Unwind@18002242c + +void Unwind_18002242c(undefined8 param_1,longlong param_2) + +{ + CThreadLocalObject::~CThreadLocalObject + ((CThreadLocalObject *)(*(longlong *)(param_2 + 0x40) + 0xc0)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002244c (47 bytes) name=FUN_18002244c + +undefined8 * +FUN_18002244c(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4) + +{ + FUN_18002231c(param_1,param_2,param_3,param_4); + if ((param_2 & 1) != 0) { + FUN_180022ca8(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002247c (762 bytes) name=FUN_18002247c + +undefined8 * FUN_18002247c(undefined8 *param_1) + +{ + int *piVar1; + int iVar2; + longlong *plVar3; + longlong local_res8; + + FUN_18000b610(&local_res8,L"comctl32.dll"); + *param_1 = CDllIsolationWrapperBase::vftable; + plVar3 = FUN_18000b300((longlong *)(local_res8 + -0x18)); + param_1[3] = plVar3 + 3; + param_1[1] = 0; + *(undefined1 *)(param_1 + 2) = 0; + LOCK(); + piVar1 = (int *)(local_res8 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res8 + -0x18) + 8))(); + } + *param_1 = CComCtlWrapper::vftable; + 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; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x18] = 0; + param_1[0x19] = 0; + param_1[0x1a] = 0; + param_1[0x1b] = 0; + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + param_1[0x23] = 0; + param_1[0x24] = 0; + param_1[0x25] = 0; + param_1[0x26] = 0; + param_1[0x27] = 0; + param_1[0x28] = 0; + param_1[0x29] = 0; + param_1[0x2a] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + param_1[0x2e] = 0; + param_1[0x2f] = 0; + param_1[0x30] = 0; + param_1[0x31] = 0; + 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[0x38] = 0; + param_1[0x39] = 0; + param_1[0x3a] = 0; + param_1[0x3b] = 0; + param_1[0x3c] = 0; + param_1[0x3d] = 0; + param_1[0x3e] = 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] = 0; + param_1[0x47] = 0; + param_1[0x48] = 0; + param_1[0x49] = 0; + param_1[0x4a] = 0; + param_1[0x4b] = 0; + param_1[0x4c] = 0; + param_1[0x4d] = 0; + param_1[0x4e] = 0; + param_1[0x4f] = 0; + param_1[0x50] = 0; + param_1[0x51] = 0; + param_1[0x52] = 0; + param_1[0x53] = 0; + param_1[0x54] = 0; + param_1[0x55] = 0; + param_1[0x56] = 0; + param_1[0x57] = 0; + param_1[0x58] = 0; + param_1[0x59] = 0; + param_1[0x5a] = 0; + param_1[0x5b] = 0; + param_1[0x5c] = 0; + param_1[0x5d] = 0; + param_1[0x5e] = 0; + param_1[0x5f] = 0; + param_1[0x60] = 0; + param_1[0x61] = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002277c (24 bytes) name=Unwind@18002277c + +void Unwind_18002277c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022794 (251 bytes) name=FUN_180022794 + +undefined8 * FUN_180022794(undefined8 *param_1) + +{ + int *piVar1; + int iVar2; + longlong *plVar3; + longlong local_res8; + + FUN_18000b610(&local_res8,L"comdlg32.dll"); + *param_1 = CDllIsolationWrapperBase::vftable; + plVar3 = FUN_18000b300((longlong *)(local_res8 + -0x18)); + param_1[3] = plVar3 + 3; + param_1[1] = 0; + *(undefined1 *)(param_1 + 2) = 0; + LOCK(); + piVar1 = (int *)(local_res8 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res8 + -0x18) + 8))(); + } + *param_1 = CCommDlgWrapper::vftable; + 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; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x14] = 0; + param_1[0x15] = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + param_1[0x18] = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180022894 (24 bytes) name=Unwind@180022894 + +void Unwind_180022894(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800228ac (101 bytes) name=FUN_1800228ac + +undefined8 * FUN_1800228ac(undefined8 *param_1,ulonglong param_2) + +{ + int *piVar1; + int iVar2; + longlong lVar3; + + *param_1 = CDllIsolationWrapperBase::vftable; + if (*(char *)(param_1 + 2) != '\0') { + FreeLibrary((HMODULE)param_1[1]); + } + lVar3 = param_1[3]; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + if ((param_2 & 1) != 0) { + FUN_180022ca8(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180022914 (381 bytes) name=FUN_180022914 + +undefined8 * FUN_180022914(undefined8 *param_1,undefined1 param_2) + +{ + undefined **ppuVar1; + longlong lVar2; + LPVOID pvVar3; + undefined8 *puVar4; + + *param_1 = AFX_MODULE_STATE::vftable; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + ppuVar1 = FUN_18001fcc0(); + if (ppuVar1 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*ppuVar1 + 0x18))(ppuVar1); + param_1[0xb] = lVar2 + 0x18; + param_1[0xe] = 0; + param_1[0xf] = 0; + *(undefined4 *)(param_1 + 0x11) = 0xffffffff; + param_1[0x12] = 0; + param_1[0x15] = 0; + *(undefined4 *)(param_1 + 0x16) = 0; + param_1[9] = 0x40; + param_1[7] = 0x20; + *(undefined4 *)((longlong)param_1 + 0x2c) = 0; + *(undefined1 *)(param_1 + 5) = param_2; + if ((int)(*(int *)(param_1[0xb] + -0xc) - 0x1000U | 1U - *(int *)(param_1[0xb] + -8)) < 0) { + FUN_18000b190(param_1 + 0xb,0x1000); + } + *(undefined4 *)((longlong)param_1 + 0x54) = 1; + param_1[0xf] = 0x20; + pvVar3 = FUN_18001eb74(0x10); + param_1[0x19] = pvVar3; + puVar4 = (undefined8 *)FUN_180022c84(0x310); + if (puVar4 == (undefined8 *)0x0) { + puVar4 = (undefined8 *)0x0; + } + else { + puVar4 = FUN_18002247c(puVar4); + } + *(undefined8 **)param_1[0x19] = puVar4; + puVar4 = (undefined8 *)FUN_180022c84(200); + if (puVar4 == (undefined8 *)0x0) { + puVar4 = (undefined8 *)0x0; + } + else { + puVar4 = FUN_180022794(puVar4); + } + *(undefined8 **)(param_1[0x19] + 8) = puVar4; + *(undefined4 *)(param_1 + 0x1a) = 1; + param_1[0x1b] = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180022aa4 (28 bytes) name=Unwind@180022aa4 + +void Unwind_180022aa4(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(*(longlong *)(param_2 + 0x40) + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022ac4 (31 bytes) name=Unwind@180022ac4 + +void Unwind_180022ac4(undefined8 param_1,longlong param_2) + +{ + CThreadLocalObject::~CThreadLocalObject + ((CThreadLocalObject *)(*(longlong *)(param_2 + 0x40) + 0xc0)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022ae4 (43 bytes) name=Catch@180022ae4 + +undefined * Catch_180022ae4(undefined8 param_1,longlong param_2) + +{ + if (*(longlong **)(param_2 + 0x28) != (longlong *)0x0) { + FUN_18001ec74(*(longlong **)(param_2 + 0x28)); + } + return &DAT_1800229ef; +} + + +================================================================== + +### EXPORT FUNC 180022b14 (24 bytes) name=Unwind@180022b14 + +void Unwind_180022b14(undefined8 param_1,longlong param_2) + +{ + FUN_180022ca8(*(HLOCAL *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022b34 (24 bytes) name=Unwind@180022b34 + +void Unwind_180022b34(undefined8 param_1,longlong param_2) + +{ + FUN_180022ca8(*(HLOCAL *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022b4c (74 bytes) name=CreateObject + +/* Library Function - Single Match + public: static class CNoTrackObject * __ptr64 __cdecl CProcessLocal::CreateObject(void) + + Library: Visual Studio 2005 Release */ + +CNoTrackObject * __cdecl CProcessLocal<_AFX_BASE_MODULE_STATE>::CreateObject(void) + +{ + CNoTrackObject *pCVar1; + + pCVar1 = (CNoTrackObject *)FUN_180022c84(0xe0); + if (pCVar1 == (CNoTrackObject *)0x0) { + pCVar1 = (CNoTrackObject *)0x0; + } + else { + FUN_180022914((undefined8 *)pCVar1,1); + *(undefined ***)pCVar1 = _AFX_BASE_MODULE_STATE::vftable; + } + return pCVar1; +} + + +================================================================== + +### EXPORT FUNC 180022b9c (24 bytes) name=Unwind@180022b9c + +void Unwind_180022b9c(undefined8 param_1,longlong param_2) + +{ + FUN_180022ca8(*(HLOCAL *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022bb4 (76 bytes) name=FUN_180022bb4 + +void FUN_180022bb4(void) + +{ + void *pvVar1; + CNoTrackObject *pCVar2; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(longlong *)((longlong)pvVar1 + 8) == 0) { + pCVar2 = CProcessLocalObject::GetData + ((CProcessLocalObject *)&DAT_18006edd8, + CProcessLocal<_AFX_BASE_MODULE_STATE>::CreateObject); + if (pCVar2 == (CNoTrackObject *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022c04 (43 bytes) name=FUN_180022c04 + +void FUN_180022c04(void) + +{ + longlong lVar1; + void *pvVar2; + + lVar1 = FUN_180022bb4(); + pvVar2 = FUN_180023520((int *)(lVar1 + 0xc0),CThreadLocal::CreateObject); + if (pvVar2 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022c30 (84 bytes) name=AFX_MAINTAIN_STATE2 + +/* Library Function - Single Match + public: __cdecl AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(class AFX_MODULE_STATE * __ptr64) + __ptr64 + + Library: Visual Studio 2008 Release */ + +AFX_MAINTAIN_STATE2 * __thiscall +AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(AFX_MAINTAIN_STATE2 *this,AFX_MODULE_STATE *param_1) + +{ + undefined4 uVar1; + longlong lVar2; + + lVar2 = FUN_180022bb4(); + uVar1 = 0; + if (((*(int *)(lVar2 + 0xd0) != 0) && (*(longlong *)(param_1 + 0xd8) != -1)) && + (DAT_18006edc0 != (code *)0x0)) { + uVar1 = (*DAT_18006edc0)(*(longlong *)(param_1 + 0xd8),this); + } + *(undefined4 *)(this + 8) = uVar1; + return this; +} + + +================================================================== + +### EXPORT FUNC 180022c84 (33 bytes) name=FUN_180022c84 + +void FUN_180022c84(SIZE_T param_1) + +{ + HLOCAL pvVar1; + + pvVar1 = LocalAlloc(0x40,param_1); + if (pvVar1 == (HLOCAL)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022ca8 (20 bytes) name=FUN_180022ca8 + +void FUN_180022ca8(HLOCAL param_1) + +{ + if (param_1 != (HLOCAL)0x0) { + LocalFree(param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022cbc (109 bytes) name=GetThreadValue + +/* Library Function - Single Match + public: void * __ptr64 __cdecl CThreadSlotData::GetThreadValue(int) __ptr64 + + Library: Visual Studio 2008 Release */ + +void * __thiscall CThreadSlotData::GetThreadValue(CThreadSlotData *this,int param_1) + +{ + void *pvVar1; + LPVOID pvVar2; + + EnterCriticalSection((LPCRITICAL_SECTION)(this + 0x28)); + if ((((0 < param_1) && (param_1 < *(int *)(this + 0xc))) && + (pvVar2 = TlsGetValue(*(DWORD *)this), pvVar2 != (LPVOID)0x0)) && + (param_1 < *(int *)((longlong)pvVar2 + 0x10))) { + pvVar1 = *(void **)(*(longlong *)((longlong)pvVar2 + 0x18) + (longlong)param_1 * 8); + LeaveCriticalSection((LPCRITICAL_SECTION)(this + 0x28)); + return pvVar1; + } + LeaveCriticalSection((LPCRITICAL_SECTION)(this + 0x28)); + return (void *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180022d2c (112 bytes) name=AssignInstance + +/* Library Function - Single Match + public: void __cdecl CThreadSlotData::AssignInstance(struct HINSTANCE__ * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CThreadSlotData::AssignInstance(CThreadSlotData *this,HINSTANCE__ *param_1) + +{ + longlong lVar1; + longlong lVar2; + int iVar3; + + EnterCriticalSection((LPCRITICAL_SECTION)(this + 0x28)); + iVar3 = 1; + if (1 < *(int *)(this + 0xc)) { + lVar2 = 0x10; + do { + lVar1 = *(longlong *)(this + 0x10); + if ((*(longlong *)(lVar1 + 8 + lVar2) == 0) && ((*(byte *)(lVar1 + lVar2) & 1) != 0)) { + *(HINSTANCE__ **)(lVar1 + 8 + lVar2) = param_1; + } + iVar3 = iVar3 + 1; + lVar2 = lVar2 + 0x10; + } while (iVar3 < *(int *)(this + 0xc)); + } + /* WARNING: Could not recover jumptable at 0x000180022d95. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(this + 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 180022d9c (36 bytes) name=GetDataNA + +/* Library Function - Single Match + public: class CNoTrackObject * __ptr64 __cdecl CThreadLocalObject::GetDataNA(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +CNoTrackObject * __thiscall CThreadLocalObject::GetDataNA(CThreadLocalObject *this) + +{ + CNoTrackObject *pCVar1; + + if ((*(int *)this == 0) || (DAT_18006edf0 == (CThreadSlotData *)0x0)) { + pCVar1 = (CNoTrackObject *)0x0; + } + else { + pCVar1 = CThreadSlotData::GetThreadValue(DAT_18006edf0,*(int *)this); + } + return pCVar1; +} + + +================================================================== + +### EXPORT FUNC 180022dc0 (80 bytes) name=GetData + +/* Library Function - Single Match + public: class CNoTrackObject * __ptr64 __cdecl CProcessLocalObject::GetData(class CNoTrackObject + * __ptr64 (__cdecl*)(void)) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +CNoTrackObject * __thiscall +CProcessLocalObject::GetData(CProcessLocalObject *this,_func_CNoTrackObject_ptr *param_1) + +{ + CNoTrackObject *pCVar1; + + if (*(longlong *)this == 0) { + FUN_1800237a0(0x10); + if (*(longlong *)this == 0) { + pCVar1 = (*param_1)(); + *(CNoTrackObject **)this = pCVar1; + } + FUN_180023834(0x10); + } + return *(CNoTrackObject **)this; +} + + +================================================================== + +### EXPORT FUNC 180022e10 (32 bytes) name=Catch@180022e10 + +void Catch_180022e10(void) + +{ + FUN_180023834(0x10); + /* WARNING: Subroutine does not return */ + _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); +} + + +================================================================== + +### EXPORT FUNC 180022e38 (60 bytes) name=~CProcessLocalObject + +/* Library Function - Single Match + public: __cdecl CProcessLocalObject::~CProcessLocalObject(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +void __thiscall CProcessLocalObject::~CProcessLocalObject(CProcessLocalObject *this) + +{ + undefined8 *puVar1; + + if (*(longlong *)this != 0) { + puVar1 = *(undefined8 **)this; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022e74 (29 bytes) name=AfxInitLocalData + +/* Library Function - Single Match + void __cdecl AfxInitLocalData(struct HINSTANCE__ * __ptr64) + + Library: Visual Studio 2008 Release */ + +void __cdecl AfxInitLocalData(HINSTANCE__ *param_1) + +{ + if (DAT_18006edf0 != (CThreadSlotData *)0x0) { + CThreadSlotData::AssignInstance(DAT_18006edf0,param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180022e94 (8 bytes) name=FUN_180022e94 + +void FUN_180022e94(void) + +{ + DAT_18006ee50 = DAT_18006ee50 + 1; + return; +} + + +================================================================== + +### EXPORT FUNC 180022e9c (36 bytes) name=FUN_180022e9c + +void FUN_180022e9c(longlong *param_1,longlong param_2) + +{ + if (param_2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *(longlong *)(param_2 + param_1[1]) = *param_1; + *param_1 = param_2; + return; +} + + +================================================================== + +### EXPORT FUNC 180022ec4 (118 bytes) name=FUN_180022ec4 + +undefined8 FUN_180022ec4(longlong *param_1,longlong param_2) + +{ + longlong lVar1; + undefined8 uVar2; + longlong lVar3; + + lVar3 = *param_1; + uVar2 = 0; + if (lVar3 == 0) { + uVar2 = 0; + } + else if (lVar3 == param_2) { + if (param_2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *param_1 = *(longlong *)(param_2 + param_1[1]); +LAB_180022f2c: + uVar2 = 1; + } + else { + if (lVar3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + do { + lVar1 = param_1[1]; + if (*(longlong *)(lVar1 + lVar3) == param_2) { + if (param_2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *(undefined8 *)(lVar1 + lVar3) = *(undefined8 *)(lVar1 + param_2); + goto LAB_180022f2c; + } + lVar3 = *(longlong *)(lVar1 + lVar3); + } while (lVar3 != 0); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180022f40 (77 bytes) name=FUN_180022f40 + +DWORD * FUN_180022f40(DWORD *param_1) + +{ + DWORD DVar1; + + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 8; + param_1[9] = 0; + param_1[1] = 0; + param_1[2] = 1; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + DVar1 = TlsAlloc(); + *param_1 = DVar1; + if (DVar1 == 0xffffffff) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180022f90 (403 bytes) name=FUN_180022f90 + +int FUN_180022f90(longlong param_1) + +{ + uint *puVar1; + int iVar2; + byte *pbVar3; + HGLOBAL pvVar4; + LPVOID pvVar5; + longlong lVar6; + int iVar7; + uint uVar8; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28)); + iVar2 = *(int *)(param_1 + 4); + iVar7 = *(int *)(param_1 + 8); + if ((iVar2 <= iVar7) || + ((*(byte *)(*(longlong *)(param_1 + 0x10) + (longlong)iVar7 * 0x10) & 1) != 0)) { + iVar7 = 1; + lVar6 = 1; + if (1 < (longlong)iVar2) { + pbVar3 = *(byte **)(param_1 + 0x10); + do { + pbVar3 = pbVar3 + 0x10; + if ((*pbVar3 & 1) == 0) break; + lVar6 = lVar6 + 1; + iVar7 = iVar7 + 1; + } while (lVar6 < iVar2); + } + if (iVar2 <= iVar7) { + uVar8 = iVar2 + 0x20; + if (*(LPCVOID *)(param_1 + 0x10) == (LPCVOID)0x0) { + if (0xffffffff < (ulonglong)uVar8 << 4) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + pvVar4 = GlobalAlloc(2,(ulonglong)uVar8 << 4 & 0xffffffff); + } + else { + pvVar4 = GlobalHandle(*(LPCVOID *)(param_1 + 0x10)); + GlobalUnlock(pvVar4); + if (0xffffffff < (ulonglong)uVar8 << 4) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + pvVar4 = GlobalReAlloc(pvVar4,(ulonglong)uVar8 << 4 & 0xffffffff,0x2002); + } + if (pvVar4 == (HGLOBAL)0x0) { + if (*(LPCVOID *)(param_1 + 0x10) != (LPCVOID)0x0) { + pvVar4 = GlobalHandle(*(LPCVOID *)(param_1 + 0x10)); + GlobalLock(pvVar4); + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28)); + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + pvVar5 = GlobalLock(pvVar4); + FUN_1800357d0((ulonglong *)((longlong)*(int *)(param_1 + 4) * 0x10 + (longlong)pvVar5),0, + (longlong)(int)(uVar8 - *(int *)(param_1 + 4)) << 4); + *(uint *)(param_1 + 4) = uVar8; + *(LPVOID *)(param_1 + 0x10) = pvVar5; + } + } + if (*(int *)(param_1 + 0xc) <= iVar7) { + *(int *)(param_1 + 0xc) = iVar7 + 1; + } + puVar1 = (uint *)(*(longlong *)(param_1 + 0x10) + (longlong)iVar7 * 0x10); + *puVar1 = *puVar1 | 1; + *(int *)(param_1 + 8) = iVar7 + 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28)); + return iVar7; +} + + +================================================================== + +### EXPORT FUNC 180023128 (153 bytes) name=FUN_180023128 + +void FUN_180023128(longlong param_1,int param_2) + +{ + uint *puVar1; + undefined8 *puVar2; + longlong lVar3; + longlong lVar4; + + lVar4 = (longlong)param_2; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28)); + if ((0 < param_2) && (param_2 < *(int *)(param_1 + 0xc))) { + for (lVar3 = *(longlong *)(param_1 + 0x18); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 8)) { + if (param_2 < *(int *)(lVar3 + 0x10)) { + puVar2 = *(undefined8 **)(*(longlong *)(lVar3 + 0x18) + lVar4 * 8); + if (puVar2 != (undefined8 *)0x0) { + (**(code **)*puVar2)(puVar2,1); + } + *(undefined8 *)(*(longlong *)(lVar3 + 0x18) + lVar4 * 8) = 0; + } + } + puVar1 = (uint *)(*(longlong *)(param_1 + 0x10) + lVar4 * 0x10); + *puVar1 = *puVar1 & 0xfffffffe; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800231c4 (390 bytes) name=FUN_1800231c4 + +void FUN_1800231c4(DWORD *param_1,int param_2,longlong param_3) + +{ + undefined8 *lpTlsValue; + HLOCAL pvVar1; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + if ((param_2 < 1) || ((int)param_1[3] <= param_2)) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + return; + } + lpTlsValue = TlsGetValue(*param_1); + if (lpTlsValue == (undefined8 *)0x0) { + lpTlsValue = (undefined8 *)FUN_180022c84(0x20); + if (lpTlsValue == (undefined8 *)0x0) { + lpTlsValue = (undefined8 *)0x0; + } + else { + *lpTlsValue = CThreadData::vftable; + } + *(undefined4 *)(lpTlsValue + 2) = 0; + lpTlsValue[3] = 0; + *(undefined8 *)((longlong)lpTlsValue + *(longlong *)(param_1 + 8)) = + *(undefined8 *)(param_1 + 6); + *(undefined8 **)(param_1 + 6) = lpTlsValue; + } + else if ((param_2 < *(int *)(lpTlsValue + 2)) || (param_3 == 0)) goto LAB_180023311; + if (lpTlsValue[3] == 0) { + if (0xffffffff < (ulonglong)param_1[3] << 3) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + pvVar1 = LocalAlloc(0,(ulonglong)param_1[3] << 3 & 0xffffffff); + } + else { + if (0xffffffff < (ulonglong)param_1[3] << 3) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + pvVar1 = LocalReAlloc((HLOCAL)lpTlsValue[3],(ulonglong)param_1[3] << 3 & 0xffffffff,2); + } + if (pvVar1 == (HLOCAL)0x0) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + lpTlsValue[3] = pvVar1; + FUN_1800357d0((ulonglong *)((longlong)pvVar1 + (longlong)*(int *)(lpTlsValue + 2) * 8),0, + (longlong)(int)(param_1[3] - *(int *)(lpTlsValue + 2)) << 3); + *(DWORD *)(lpTlsValue + 2) = param_1[3]; + TlsSetValue(*param_1,lpTlsValue); +LAB_180023311: + if ((lpTlsValue[3] != 0) && (param_2 < *(int *)(lpTlsValue + 2))) { + *(longlong *)(lpTlsValue[3] + (longlong)param_2 * 8) = param_3; + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023354 (36 bytes) name=Catch@180023354 + +void Catch_180023354(undefined8 param_1,longlong param_2) + +{ + LeaveCriticalSection((LPCRITICAL_SECTION)(*(longlong *)(param_2 + 0x50) + 0x28)); + /* WARNING: Subroutine does not return */ + _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); +} + + +================================================================== + +### EXPORT FUNC 180023380 (34 bytes) name=FUN_180023380 + +HLOCAL FUN_180023380(HLOCAL param_1,byte param_2) + +{ + if (((param_2 & 1) != 0) && (param_1 != (HLOCAL)0x0)) { + LocalFree(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800233a4 (243 bytes) name=FUN_1800233a4 + +void FUN_1800233a4(DWORD *param_1,undefined8 *param_2,longlong param_3) + +{ + undefined8 *puVar1; + bool bVar2; + longlong lVar3; + int iVar4; + longlong lVar5; + + bVar2 = true; + iVar4 = 1; + if (1 < *(int *)(param_2 + 2)) { + lVar3 = 8; + lVar5 = 0x10; + do { + if ((param_3 == 0) || (*(longlong *)(*(longlong *)(param_1 + 4) + 8 + lVar5) == param_3)) { + puVar1 = *(undefined8 **)(lVar3 + param_2[3]); + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + *(undefined8 *)(lVar3 + param_2[3]) = 0; + } + else if (*(longlong *)(lVar3 + param_2[3]) != 0) { + bVar2 = false; + } + iVar4 = iVar4 + 1; + lVar5 = lVar5 + 0x10; + lVar3 = lVar3 + 8; + } while (iVar4 < *(int *)(param_2 + 2)); + if (!bVar2) { + return; + } + } + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + FUN_180022ec4((longlong *)(param_1 + 6),(longlong)param_2); + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + LocalFree((HLOCAL)param_2[3]); + (**(code **)*param_2)(param_2,1); + TlsSetValue(*param_1,(LPVOID)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180023498 (135 bytes) name=FUN_180023498 + +void FUN_180023498(DWORD *param_1,longlong param_2,int param_3) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + if (param_3 == 0) { + puVar2 = TlsGetValue(*param_1); + if (puVar2 != (undefined8 *)0x0) { + FUN_1800233a4(param_1,puVar2,param_2); + } + } + else { + puVar2 = *(undefined8 **)(param_1 + 6); + while (puVar2 != (undefined8 *)0x0) { + puVar1 = (undefined8 *)puVar2[1]; + FUN_1800233a4(param_1,puVar2,param_2); + puVar2 = puVar1; + } + } + /* WARNING: Could not recover jumptable at 0x000180023518. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023520 (182 bytes) name=FUN_180023520 + +void * FUN_180023520(int *param_1,undefined *param_2) + +{ + int iVar1; + void *pvVar2; + + if (param_2 == (undefined *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*param_1 == 0) { + if (DAT_18006edf0 == (CThreadSlotData *)0x0) { + DAT_18006edf0 = (CThreadSlotData *)FUN_180022f40((DWORD *)&DAT_18006ee00); + if (DAT_18006edf0 == (CThreadSlotData *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + iVar1 = FUN_180022f90((longlong)DAT_18006edf0); + *param_1 = iVar1; + if (iVar1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + pvVar2 = CThreadSlotData::GetThreadValue(DAT_18006edf0,*param_1); + if (pvVar2 == (void *)0x0) { + pvVar2 = (void *)(*(code *)param_2)(); + FUN_1800231c4((DWORD *)DAT_18006edf0,*param_1,(longlong)pvVar2); + } + return pvVar2; +} + + +================================================================== + +### EXPORT FUNC 1800235e0 (31 bytes) name=Unwind@1800235e0 + +void Unwind_1800235e0(void) + +{ + FUN_180026b64(); + return; +} + + +================================================================== + +### EXPORT FUNC 180023600 (41 bytes) name=~CThreadLocalObject + +/* Library Function - Single Match + public: __cdecl CThreadLocalObject::~CThreadLocalObject(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release, + Visual Studio 2015 Release */ + +void __thiscall CThreadLocalObject::~CThreadLocalObject(CThreadLocalObject *this) + +{ + if ((*(int *)this != 0) && (DAT_18006edf0 != 0)) { + FUN_180023128(DAT_18006edf0,*(int *)this); + } + *(undefined4 *)this = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18002362c (35 bytes) name=FUN_18002362c + +void FUN_18002362c(longlong param_1,int param_2) + +{ + if (DAT_18006edf0 != (DWORD *)0x0) { + FUN_180023498(DAT_18006edf0,param_1,param_2); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180023650 (115 bytes) name=FUN_180023650 + +void FUN_180023650(DWORD *param_1) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + HGLOBAL hMem; + + puVar2 = *(undefined8 **)(param_1 + 6); + while (puVar2 != (undefined8 *)0x0) { + puVar1 = (undefined8 *)puVar2[1]; + FUN_1800233a4(param_1,puVar2,0); + puVar2 = puVar1; + } + if (*param_1 != 0xffffffff) { + TlsFree(*param_1); + } + if (*(LPCVOID *)(param_1 + 4) != (LPCVOID)0x0) { + hMem = GlobalHandle(*(LPCVOID *)(param_1 + 4)); + GlobalUnlock(hMem); + GlobalFree(hMem); + } + /* WARNING: Could not recover jumptable at 0x0001800236bc. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 10)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800236c4 (55 bytes) name=AfxTlsRelease + +/* Library Function - Single Match + void __cdecl AfxTlsRelease(void) + + Libraries: Visual Studio 2008 Release, Visual Studio 2015 Release */ + +void __cdecl AfxTlsRelease(void) + +{ + if (((DAT_18006ee50 == 0) || (DAT_18006ee50 = DAT_18006ee50 + -1, DAT_18006ee50 == 0)) && + (DAT_18006edf0 != (DWORD *)0x0)) { + FUN_180023650(DAT_18006edf0); + DAT_18006edf0 = (DWORD *)0x0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800236fc (48 bytes) name=FUN_1800236fc + +int FUN_1800236fc(void) + +{ + if (DAT_18006ee54 == 0) { + DAT_18006ee54 = 1; + InitializeCriticalSection((LPCRITICAL_SECTION)&DAT_18006f108); + } + return DAT_18006ee54; +} + + +================================================================== + +### EXPORT FUNC 18002372c (113 bytes) name=FUN_18002372c + +void FUN_18002372c(void) + +{ + int *piVar1; + longlong lVar2; + LPCRITICAL_SECTION lpCriticalSection; + + if (DAT_18006ee54 != 0) { + DAT_18006ee54 = DAT_18006ee54 + -1; + DeleteCriticalSection((LPCRITICAL_SECTION)&DAT_18006f108); + piVar1 = &DAT_18006f130; + lpCriticalSection = (LPCRITICAL_SECTION)&DAT_18006ee60; + lVar2 = 0x11; + do { + if (*piVar1 != 0) { + DeleteCriticalSection(lpCriticalSection); + *piVar1 = *piVar1 + -1; + } + lpCriticalSection = lpCriticalSection + 1; + piVar1 = piVar1 + 1; + lVar2 = lVar2 + -1; + } while (lVar2 != 0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800237a0 (145 bytes) name=FUN_1800237a0 + +void FUN_1800237a0(uint param_1) + +{ + longlong lVar1; + + lVar1 = (longlong)(int)param_1; + if (0x10 < param_1) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (DAT_18006ee54 == 0) { + FUN_1800236fc(); + } + if ((&DAT_18006f130)[lVar1] == 0) { + EnterCriticalSection((LPCRITICAL_SECTION)&DAT_18006f108); + if ((&DAT_18006f130)[lVar1] == 0) { + InitializeCriticalSection((LPCRITICAL_SECTION)(&DAT_18006ee60 + lVar1 * 0x28)); + (&DAT_18006f130)[lVar1] = (&DAT_18006f130)[lVar1] + 1; + } + LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_18006f108); + } + /* WARNING: Could not recover jumptable at 0x00018002382b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnterCriticalSection((LPCRITICAL_SECTION)(&DAT_18006ee60 + lVar1 * 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023834 (43 bytes) name=FUN_180023834 + +void FUN_180023834(uint param_1) + +{ + if (0x10 < param_1) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + /* WARNING: Could not recover jumptable at 0x000180023859. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(&DAT_18006ee60 + (longlong)(int)param_1 * 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023860 (18 bytes) name=FUN_180023860 + +void FUN_180023860(void) + +{ + longlong lVar1; + + lVar1 = FUN_180022c04(); + *(int *)(lVar1 + 0x20) = *(int *)(lVar1 + 0x20) + 1; + return; +} + + +================================================================== + +### EXPORT FUNC 180023874 (212 bytes) name=FUN_180023874 + +undefined8 * +FUN_180023874(undefined8 *param_1,longlong param_2,longlong param_3,longlong param_4, + undefined8 param_5,undefined4 param_6) + +{ + *param_1 = CHandleMap::vftable; + CFixedAllocNoSync::CFixedAllocNoSync + ((CFixedAllocNoSync *)(param_1 + 1),*(uint *)(param_2 + 8),0x40); + FUN_180030288(param_1 + 6,10); + FUN_180030288(param_1 + 0xd,4); + if (param_3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_4 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + InitHashTable((longlong)(param_1 + 0xd),7,0); + param_1[0x14] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + param_1[0x15] = param_5; + *(undefined4 *)(param_1 + 0x16) = param_6; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180023954 (28 bytes) name=Unwind@180023954 + +void Unwind_180023954(undefined8 param_1,longlong param_2) + +{ + CFixedAllocNoSync::FreeAll((CFixedAllocNoSync *)(*(longlong *)(param_2 + 0x50) + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023974 (28 bytes) name=Unwind@180023974 + +void Unwind_180023974(undefined8 param_1,longlong param_2) + +{ + FUN_1800302c0((CMapPtrToPtr *)(*(longlong *)(param_2 + 0x50) + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023994 (28 bytes) name=Unwind@180023994 + +void Unwind_180023994(undefined8 param_1,longlong param_2) + +{ + FUN_1800302c0((CMapPtrToPtr *)(*(longlong *)(param_2 + 0x50) + 0x68)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800239b0 (228 bytes) name=FromHandle + +/* Library Function - Single Match + public: class CObject * __ptr64 __cdecl CHandleMap::FromHandle(void * __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +CObject * __thiscall CHandleMap::FromHandle(CHandleMap *this,void *param_1) + +{ + longlong lVar1; + CObject *pCVar2; + undefined *puVar3; + undefined8 *puVar4; + + if (param_1 == (void *)0x0) { + pCVar2 = (CObject *)0x0; + } + else { + pCVar2 = (CObject *)FUN_180030118((longlong)(this + 0x30),(ulonglong)param_1); + if (pCVar2 == (CObject *)0x0) { + pCVar2 = (CObject *)FUN_180030118((longlong)(this + 0x68),(ulonglong)param_1); + if (pCVar2 == (CObject *)0x0) { + puVar3 = FUN_18001eb64(FUN_18003067c); + pCVar2 = CFixedAllocNoSync::Alloc((CFixedAllocNoSync *)(this + 8)); + if (pCVar2 == (CObject *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + (**(code **)(this + 0x20))(pCVar2); + puVar4 = FUN_18003033c((longlong)(this + 0x68),(ulonglong)param_1); + *puVar4 = pCVar2; + FUN_18001eb64(puVar3); + lVar1 = *(longlong *)(this + 0xa8); + *(void **)(pCVar2 + lVar1) = param_1; + if (*(int *)(this + 0xb0) == 2) { + *(void **)(pCVar2 + lVar1 + 8) = param_1; + } + } + else { + lVar1 = *(longlong *)(this + 0xa8); + *(void **)(pCVar2 + lVar1) = param_1; + if (*(int *)(this + 0xb0) == 2) { + *(void **)(pCVar2 + lVar1 + 8) = param_1; + } + } + } + } + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 180023aa0 (31 bytes) name=Catch@180023aa0 + +void Catch_180023aa0(undefined8 param_1,longlong param_2) + +{ + FUN_18001eb64(*(undefined **)(param_2 + 0x58)); + /* WARNING: Subroutine does not return */ + _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); +} + + +================================================================== + +### EXPORT FUNC 180023ac8 (143 bytes) name=DeleteTemp + +/* Library Function - Single Match + public: void __cdecl CHandleMap::DeleteTemp(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall CHandleMap::DeleteTemp(CHandleMap *this) + +{ + longlong lVar1; + longlong local_res8; + longlong local_res10; + longlong local_res18; + + if (this != (CHandleMap *)0x0) { + local_res10 = -(ulonglong)(*(longlong *)(this + 0x80) != 0); + while (local_res10 != 0) { + FUN_1800301c8((longlong)(this + 0x68),&local_res10,&local_res18,&local_res8); + lVar1 = *(longlong *)(this + 0xa8); + *(undefined8 *)(local_res8 + lVar1) = 0; + if (*(int *)(this + 0xb0) == 2) { + *(undefined8 *)(local_res8 + 8 + lVar1) = 0; + } + (**(code **)(this + 0x28))(local_res8); + } + CMapPtrToPtr::RemoveAll((CMapPtrToPtr *)(this + 0x68)); + CFixedAllocNoSync::FreeAll((CFixedAllocNoSync *)(this + 8)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180023b58 (101 bytes) name=`scalar_deleting_destructor' + +/* Library Function - Single Match + public: virtual void * __ptr64 __cdecl CHandleMap::`scalar deleting destructor'(unsigned int) + __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void * __thiscall CHandleMap::_scalar_deleting_destructor_(CHandleMap *this,uint param_1) + +{ + *(undefined ***)this = vftable; + DeleteTemp(this); + FUN_1800302c0((CMapPtrToPtr *)(this + 0x68)); + FUN_1800302c0((CMapPtrToPtr *)(this + 0x30)); + CFixedAllocNoSync::FreeAll((CFixedAllocNoSync *)(this + 8)); + if ((param_1 & 1) != 0) { + thunk_FUN_180034a70(this); + } + return this; +} + + +================================================================== + +### EXPORT FUNC 180023bc8 (28 bytes) name=Unwind@180023bc8 + +void Unwind_180023bc8(undefined8 param_1,longlong param_2) + +{ + CFixedAllocNoSync::FreeAll((CFixedAllocNoSync *)(*(longlong *)(param_2 + 0x40) + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023be8 (28 bytes) name=Unwind@180023be8 + +void Unwind_180023be8(undefined8 param_1,longlong param_2) + +{ + FUN_1800302c0((CMapPtrToPtr *)(*(longlong *)(param_2 + 0x40) + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023c08 (28 bytes) name=Unwind@180023c08 + +void Unwind_180023c08(undefined8 param_1,longlong param_2) + +{ + FUN_1800302c0((CMapPtrToPtr *)(*(longlong *)(param_2 + 0x40) + 0x68)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023c24 (323 bytes) name=FUN_180023c24 + +bool FUN_180023c24(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + longlong lVar1; + longlong lVar2; + CNoTrackObject *pCVar3; + SIZE_T SVar4; + SIZE_T SVar5; + LPVOID pvVar6; + int iVar7; + + lVar1 = FUN_180022c04(); + SVar5 = 0; + if ((*(int *)(lVar1 + 0x20) != 0) && + (iVar7 = *(int *)(lVar1 + 0x20) + -1, *(int *)(lVar1 + 0x20) = iVar7, iVar7 == 0)) { + if (param_1 != 0) { + if (param_1 != -1) { + lVar2 = FUN_180020e40(); + if ((lVar2 != 0) && (*(code **)(lVar2 + 0x78) != (code *)0x0)) { + (**(code **)(lVar2 + 0x78))(0,0); + } + } + CHandleMap::DeleteTemp(*(CHandleMap **)(lVar1 + 0x40)); + CHandleMap::DeleteTemp(*(CHandleMap **)(lVar1 + 0x38)); + CHandleMap::DeleteTemp(*(CHandleMap **)(lVar1 + 0x30)); + CHandleMap::DeleteTemp(*(CHandleMap **)(lVar1 + 0x28)); + CHandleMap::DeleteTemp(*(CHandleMap **)(lVar1 + 0x48)); + } + lVar2 = FUN_180022bb4(); + lVar2 = *(longlong *)(lVar2 + 8); + pCVar3 = CThreadLocalObject::GetDataNA((CThreadLocalObject *)&DAT_18006ede0); + if ((pCVar3 != (CNoTrackObject *)0x0) && (lVar2 != 0)) { + if (*(LPCVOID *)(pCVar3 + 0x18) != (LPCVOID)0x0) { + SVar4 = FUN_180035e80(*(LPCVOID *)(pCVar3 + 0x18)); + if (*(ulonglong *)(lVar2 + 0x128) <= SVar4) goto LAB_180023d44; + } + if (*(longlong *)(lVar2 + 0x128) != 0) { + if (*(LPCVOID *)(pCVar3 + 0x18) != (LPCVOID)0x0) { + SVar5 = FUN_180035e80(*(LPCVOID *)(pCVar3 + 0x18)); + FUN_180034a70(*(LPVOID *)(pCVar3 + 0x18)); + } + pvVar6 = FUN_1800349a0(*(size_t *)(lVar2 + 0x128)); + *(LPVOID *)(pCVar3 + 0x18) = pvVar6; + if ((pvVar6 == (LPVOID)0x0) && (SVar5 != 0)) { + pvVar6 = FUN_1800349a0(SVar5); + *(LPVOID *)(pCVar3 + 0x18) = pvVar6; + } + } + } + } +LAB_180023d44: + return *(int *)(lVar1 + 0x20) != 0; +} + + +================================================================== + +### EXPORT FUNC 180023d74 (22 bytes) name=Catch@180023d74 + +void Catch_180023d74(void) + +{ + /* WARNING: Subroutine does not return */ + _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); +} + + +================================================================== + +### EXPORT FUNC 180023d94 (213 bytes) name=FUN_180023d94 + +longlong * FUN_180023d94(longlong *param_1,longlong *param_2,int param_3,int param_4) + +{ + int iVar1; + longlong lVar2; + longlong *plVar3; + undefined8 *puVar4; + undefined **ppuVar5; + + puVar4 = (undefined8 *)0x0; + if (param_3 < 0) { + param_3 = 0; + } + if (param_4 < 0) { + param_4 = 0; + } + if (0x7fffffff - param_3 < param_4) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + lVar2 = *param_1; + iVar1 = *(int *)(lVar2 + -0x10); + if (iVar1 < param_3 + param_4) { + param_4 = iVar1 - param_3; + } + if (iVar1 < param_3) { + param_4 = 0; + } + if ((param_3 == 0) && (param_4 == iVar1)) { + plVar3 = FUN_18000b300((longlong *)(lVar2 + -0x18)); + *param_2 = (longlong)(plVar3 + 3); + } + else { + if (*(longlong **)(lVar2 + -0x18) != (longlong *)0x0) { + puVar4 = (undefined8 *)(**(code **)(**(longlong **)(lVar2 + -0x18) + 0x20))(); + } + if (puVar4 == (undefined8 *)0x0) { + ppuVar5 = FUN_18001fcc0(); + puVar4 = (undefined8 *)(**(code **)(*ppuVar5 + 0x20))(ppuVar5); + } + FUN_18000acc0(param_2,(void *)(*param_1 + (longlong)param_3 * 2),param_4,puVar4); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180023e6c (154 bytes) name=FUN_180023e6c + +longlong * FUN_180023e6c(longlong *param_1,short *param_2,longlong *param_3) + +{ + int iVar1; + longlong lVar2; + HMODULE pHVar3; + + if (param_3 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*param_3 + 0x18))(param_3); + *param_1 = lVar2 + 0x18; + if (param_2 == (short *)0x0) { + iVar1 = 0; + } + else { + if (((ulonglong)param_2 & 0xffffffffffff0000) == 0) { + pHVar3 = (HMODULE)FUN_18001fcac(); + if (pHVar3 == (HMODULE)0x0) { + return param_1; + } + FUN_18000af50(param_1,pHVar3,(uint)param_2 & 0xffff); + return param_1; + } + lVar2 = FUN_1800355e0(param_2); + iVar1 = (int)lVar2; + } + FUN_18000b480(param_1,param_2,iVar1); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180023f0c (24 bytes) name=Unwind@180023f0c + +void Unwind_180023f0c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0(*(longlong **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180023f24 (335 bytes) name=FUN_180023f24 + +longlong * FUN_180023f24(longlong *param_1,longlong *param_2,wchar_t *param_3,int *param_4) + +{ + wchar_t *_Str; + wchar_t *pwVar1; + size_t sVar2; + size_t sVar3; + longlong *plVar4; + undefined **ppuVar5; + longlong lVar6; + int iVar7; + + iVar7 = *param_4; + if (iVar7 < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + if ((param_3 == (wchar_t *)0x0) || (*param_3 == L'\0')) { + if (iVar7 < *(int *)(*param_1 + -0x10)) { + plVar4 = *(longlong **)(*param_1 + -0x18); + if (plVar4 == (longlong *)0x0) { + plVar4 = (longlong *)0x0; + } + else { + plVar4 = (longlong *)(**(code **)(*plVar4 + 0x20))(); + } + if (plVar4 == (longlong *)0x0) { + ppuVar5 = FUN_18001fcc0(); + plVar4 = (longlong *)(**(code **)(*ppuVar5 + 0x20))(ppuVar5); + } + FUN_180023e6c(param_2,(short *)(*param_1 + (longlong)*param_4 * 2),plVar4); + return param_2; + } + } + else { + lVar6 = *param_1; + _Str = (wchar_t *)(lVar6 + (longlong)iVar7 * 2); + pwVar1 = (wchar_t *)(lVar6 + (longlong)*(int *)(lVar6 + -0x10) * 2); + if (_Str < pwVar1) { + sVar2 = wcsspn(_Str,param_3); + if (_Str + (int)sVar2 < pwVar1) { + sVar3 = wcscspn(_Str + (int)sVar2,param_3); + iVar7 = (int)sVar2 + *param_4; + *param_4 = iVar7 + 1 + (int)sVar3; + FUN_180023d94(param_1,param_2,iVar7,(int)sVar3); + return param_2; + } + } + } + *param_4 = -1; + if (*(longlong **)(*param_1 + -0x18) == (longlong *)0x0) { + plVar4 = (longlong *)0x0; + } + else { + plVar4 = (longlong *)(**(code **)(**(longlong **)(*param_1 + -0x18) + 0x20))(); + } + if (plVar4 == (longlong *)0x0) { + ppuVar5 = FUN_18001fcc0(); + plVar4 = (longlong *)(**(code **)(*ppuVar5 + 0x20))(ppuVar5); + if (plVar4 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + } + lVar6 = (**(code **)(*plVar4 + 0x18))(); + *param_2 = lVar6 + 0x18; + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180024078 (241 bytes) name=FUN_180024078 + +void FUN_180024078(void) + +{ + int *piVar1; + LPCWSTR pWVar2; + int iVar3; + longlong lVar4; + longlong *plVar5; + longlong *plVar6; + int local_res8 [2]; + LPCWSTR local_res10; + longlong local_res18 [2]; + + lVar4 = FUN_180022bb4(); + FUN_1800237a0(1); + local_res8[0] = 0; + plVar6 = (longlong *)(lVar4 + 0x58); + FUN_180023f24(plVar6,(longlong *)&local_res10,L"\n",local_res8); + iVar3 = *(int *)(local_res10 + -8); + while (iVar3 != 0) { + lVar4 = FUN_180022bb4(); + UnregisterClassW(local_res10,*(HINSTANCE *)(lVar4 + 0x10)); + plVar5 = FUN_180023f24(plVar6,local_res18,L"\n",local_res8); + FUN_18000b390((longlong *)&local_res10,plVar5); + LOCK(); + piVar1 = (int *)(local_res18[0] + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res18[0] + -0x18) + 8))(); + } + iVar3 = *(int *)(local_res10 + -8); + } + FUN_18000aec0(plVar6); + FUN_180023834(1); + LOCK(); + pWVar2 = local_res10 + -4; + iVar3 = *(int *)pWVar2; + *(int *)pWVar2 = *(int *)pWVar2 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024178 (24 bytes) name=Unwind@180024178 + +void Unwind_180024178(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 180024198 (24 bytes) name=Unwind@180024198 + +void Unwind_180024198(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800241b0 (141 bytes) name=AfxWinTerm + +/* Library Function - Single Match + void __cdecl AfxWinTerm(void) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __cdecl AfxWinTerm(void) + +{ + code *pcVar1; + int iVar2; + longlong lVar3; + longlong lVar4; + + FUN_180024078(); + lVar3 = FUN_180022bb4(); + if ((*(longlong *)(lVar3 + 8) != 0) && + (pcVar1 = *(code **)(*(longlong *)(lVar3 + 8) + 0x78), pcVar1 != (code *)0x0)) { + (*pcVar1)(1); + } + lVar3 = FUN_180022c04(); + if (*(longlong **)(lVar3 + 0x78) != (longlong *)0x0) { + iVar2 = (**(code **)(**(longlong **)(lVar3 + 0x78) + 0x278))(); + if (iVar2 != 0) { + *(undefined8 *)(lVar3 + 0x78) = 0; + } + } + lVar3 = FUN_1800222f4(); + lVar4 = FUN_180022bb4(); + if (*(char *)(lVar4 + 0x28) == '\0') { + if (*(HHOOK *)(lVar3 + 0x50) != (HHOOK)0x0) { + UnhookWindowsHookEx(*(HHOOK *)(lVar3 + 0x50)); + *(undefined8 *)(lVar3 + 0x50) = 0; + } + if (*(HHOOK *)(lVar3 + 0x48) != (HHOOK)0x0) { + UnhookWindowsHookEx(*(HHOOK *)(lVar3 + 0x48)); + *(undefined8 *)(lVar3 + 0x48) = 0; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024240 (121 bytes) name=FUN_180024240 + +int FUN_180024240(LPCWSTR param_1,short *param_2,ulonglong param_3) + +{ + int iVar1; + LPWSTR lpString; + + if (param_1 == (LPCWSTR)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + lpString = PathFindFileNameW(param_1); + if (param_2 == (short *)0x0) { + iVar1 = lstrlenW(lpString); + iVar1 = iVar1 + 1; + } + else { + iVar1 = FUN_1800354c0(param_2,param_3 & 0xffffffff,lpString,-1); + if (iVar1 != 0) { + if (iVar1 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar1 == 0x16) || (iVar1 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar1 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + iVar1 = 0; + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 1800242c0 (618 bytes) name=FUN_1800242c0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1800242c0(longlong param_1) + +{ + DWORD DVar1; + int iVar2; + uint uVar3; + errno_t eVar4; + longlong lVar5; + LPWSTR _Dst; + wchar_t *pwVar6; + rsize_t _SizeInWords; + undefined1 auStack_658 [32]; + WCHAR local_638 [264]; + wchar_t local_428 [264]; + wchar_t local_218 [256]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_658; + lVar5 = FUN_180022bb4(); + *(undefined8 *)(lVar5 + 0x10) = *(undefined8 *)(param_1 + 0x88); + *(undefined8 *)(lVar5 + 0x18) = *(undefined8 *)(param_1 + 0x88); + DVar1 = GetModuleFileNameW(*(HMODULE *)(param_1 + 0x88),local_638,0x104); + if ((DVar1 == 0) || (DVar1 == 0x104)) { + FUN_1800309ac(); + } + _Dst = PathFindExtensionW(local_638); + if (_Dst == (LPWSTR)0x0) { + FUN_1800309ac(); + } + *_Dst = L'\0'; + iVar2 = FUN_180024240(local_638,local_428,0x104); + if (iVar2 != 0) { + FUN_1800309ac(); + } + if (*(longlong *)(param_1 + 0xc0) == 0) { + pwVar6 = FUN_180036040(local_428); + *(wchar_t **)(param_1 + 0xc0) = pwVar6; + if (pwVar6 == (wchar_t *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + } + pwVar6 = *(wchar_t **)(param_1 + 0xa0); + if (pwVar6 == (wchar_t *)0x0) { + uVar3 = FUN_18001fbc8(0xe000,(ulonglong *)local_218,0x100); + pwVar6 = local_218; + if (uVar3 == 0) { + pwVar6 = *(wchar_t **)(param_1 + 0xc0); + } + pwVar6 = FUN_180036040(pwVar6); + *(wchar_t **)(param_1 + 0xa0) = pwVar6; + if (pwVar6 == (wchar_t *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + } + *(wchar_t **)(lVar5 + 0x20) = pwVar6; + if (*(longlong *)(param_1 + 200) == 0) { + _SizeInWords = 0x104 - ((longlong)_Dst - (longlong)local_638 >> 1); + if (*(int *)(param_1 + 0xd8) == 1) { + eVar4 = wcscpy_s(_Dst,_SizeInWords,L".CHM"); + if (eVar4 != 0) { + if (eVar4 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar4 == 0x16) || (eVar4 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar4 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + } + else { + eVar4 = wcscpy_s(_Dst,_SizeInWords,L".HLP"); + if (eVar4 != 0) { + if (eVar4 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar4 == 0x16) || (eVar4 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar4 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + } + pwVar6 = FUN_180036040(local_638); + *(wchar_t **)(param_1 + 200) = pwVar6; + if (pwVar6 == (wchar_t *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + *_Dst = L'\0'; + } + if (*(longlong *)(param_1 + 0xd0) == 0) { + eVar4 = wcscat_s(local_428,0x104,L".INI"); + if (eVar4 != 0) { + if (eVar4 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar4 == 0x16) || (eVar4 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar4 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + pwVar6 = FUN_180036040(local_428); + *(wchar_t **)(param_1 + 0xd0) = pwVar6; + if (pwVar6 == (wchar_t *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024538 (183 bytes) name=AfxWinInit + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Multiple Matches With Same Base Name + int __cdecl AfxWinInit(struct HINSTANCE__ * __ptr64,struct HINSTANCE__ * __ptr64,char * + __ptr64,int) + int __cdecl AfxWinInit(struct HINSTANCE__ * __ptr64,struct HINSTANCE__ * __ptr64,wchar_t * + __ptr64,int) + + Library: Visual Studio 2008 Release */ + +undefined8 AfxWinInit(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4) + +{ + UINT UVar1; + longlong lVar2; + HMODULE hModule; + + UVar1 = SetErrorMode(0); + SetErrorMode(UVar1 | 0x8001); + lVar2 = FUN_180022bb4(); + *(undefined8 *)(lVar2 + 0x10) = param_1; + *(undefined8 *)(lVar2 + 0x18) = param_1; + FUN_180021f5c(lVar2); + lVar2 = FUN_180022bb4(); + lVar2 = *(longlong *)(lVar2 + 8); + if (lVar2 != 0) { + *(undefined8 *)(lVar2 + 0x88) = param_1; + *(undefined8 *)(lVar2 + 0x90) = param_3; + *(undefined4 *)(lVar2 + 0x98) = param_4; + FUN_1800242c0(lVar2); + } + lVar2 = FUN_180022bb4(); + if (*(char *)(lVar2 + 0x28) == '\0') { + AfxInitThread(); + } + hModule = GetModuleHandleW(L"user32.dll"); + if (hModule != (HMODULE)0x0) { + _DAT_1800721d0 = GetProcAddress(hModule,"NotifyWinEvent"); + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800245f0 (52 bytes) name=FUN_1800245f0 + +undefined8 FUN_1800245f0(longlong param_1,longlong param_2) + +{ + if (param_1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_2 != 0) { + do { + if (param_1 == param_2) { + return 1; + } + param_1 = *(longlong *)(param_1 + 0x18); + } while (param_1 != 0); + return 0; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 180024628 (50 bytes) name=FUN_180024628 + +void FUN_180024628(undefined8 *param_1,longlong param_2) + +{ + longlong lVar1; + + if (param_1 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + lVar1 = (**(code **)*param_1)(); + if (lVar1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + FUN_1800245f0(lVar1,param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 18002465c (42 bytes) name=AfxDynamicDownCast + +/* Library Function - Single Match + class CObject * __ptr64 __cdecl AfxDynamicDownCast(struct CRuntimeClass * __ptr64,class CObject + * __ptr64) + + Library: Visual Studio 2005 Release */ + +CObject * __cdecl AfxDynamicDownCast(CRuntimeClass *param_1,CObject *param_2) + +{ + int iVar1; + + if ((param_2 == (CObject *)0x0) || + (iVar1 = FUN_180024628((undefined8 *)param_2,(longlong)param_1), iVar1 == 0)) { + param_2 = (CObject *)0x0; + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180024688 (57 bytes) name=AfxClassInit + +/* Library Function - Single Match + void __cdecl AfxClassInit(struct CRuntimeClass * __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release, + Visual Studio 2015 Release */ + +void __cdecl AfxClassInit(CRuntimeClass *param_1) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + FUN_1800237a0(0); + FUN_180022e9c((longlong *)(lVar1 + 0x30),(longlong)param_1); + FUN_180023834(0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800246c4 (184 bytes) name=FID_conflict:AfxCtxMessageBoxA + +/* Library Function - Multiple Matches With Different Base Names + int __cdecl AfxCtxMessageBoxA(struct HWND__ * __ptr64,char const * __ptr64,char const * + __ptr64,unsigned int) + int __cdecl AfxCtxMessageBoxW(struct HWND__ * __ptr64,wchar_t const * __ptr64,wchar_t const * + __ptr64,unsigned int) + + Library: Visual Studio 2008 Release */ + +ulonglong FID_conflict_AfxCtxMessageBoxA(HWND param_1,LPCWSTR param_2,LPCWSTR param_3,UINT param_4) + +{ + undefined1 uVar1; + int iVar2; + uint uVar3; + DWORD dwErrCode; + longlong lVar4; + undefined7 extraout_var; + undefined8 local_10; + ulonglong uVar5; + + local_10 = 0; + lVar4 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar4 + 0xd8),(longlong)&local_10); + uVar5 = CONCAT71(extraout_var,uVar1); + iVar2 = (int)uVar5; + if (iVar2 != 0) { + uVar3 = MessageBoxW(param_1,param_2,param_3,param_4); + uVar5 = (ulonglong)uVar3; + if (iVar2 != 2) { + if (uVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (uVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180024784 (72 bytes) name=FUN_180024784 + +void FUN_180024784(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x24) != 2) { + bVar1 = *(int *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800247cc (101 bytes) name=DoEnableModeless + +/* Library Function - Single Match + public: static void __cdecl CWinApp::DoEnableModeless(int) + + Library: Visual Studio 2008 Release */ + +void __cdecl CWinApp::DoEnableModeless(int param_1) + +{ + int iVar1; + longlong *plVar2; + + plVar2 = (longlong *)FUN_180020e40(); + if (plVar2 == (longlong *)0x0) { + plVar2 = (longlong *)0x0; + } + else { + plVar2 = (longlong *)(**(code **)(*plVar2 + 0xe8))(plVar2); + } + if (plVar2 != (longlong *)0x0) { + iVar1 = (**(code **)(*plVar2 + 0x240))(plVar2); + if ((iVar1 != 0) && (plVar2[0x1c] != 0)) { + (**(code **)(*(longlong *)plVar2[0x1c] + 200))((longlong *)plVar2[0x1c],param_1); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024834 (260 bytes) name=FUN_180024834 + +HWND FUN_180024834(HWND param_1,undefined8 *param_2) + +{ + HWND hWnd; + uint uVar1; + BOOL BVar2; + longlong lVar3; + longlong *plVar4; + HWND hWnd_00; + HWND pHVar5; + HWND hWnd_01; + + hWnd_00 = param_1; + if (param_1 != (HWND)0x0) goto LAB_180024899; + lVar3 = FUN_1800222f4(); + if (*(longlong *)(lVar3 + 0x1b8) == 0) { + plVar4 = (longlong *)FUN_180020e40(); + if (plVar4 == (longlong *)0x0) { + lVar3 = 0; + } + else { + lVar3 = (**(code **)(*plVar4 + 0xe8))(plVar4); + } + if (lVar3 == 0) { + hWnd_00 = (HWND)0x0; + pHVar5 = hWnd_00; + hWnd_01 = hWnd_00; + goto joined_r0x0001800248c7; + } + hWnd_00 = *(HWND *)(lVar3 + 0x40); + } + else { + hWnd_00 = *(HWND *)(*(longlong *)(lVar3 + 0x1b8) + 0x40); + } + for (; pHVar5 = hWnd_00, hWnd_01 = hWnd_00, hWnd_00 != (HWND)0x0; hWnd_00 = GetParent(hWnd_00)) { +LAB_180024899: + uVar1 = GetWindowLongW(hWnd_00,-0x10); + pHVar5 = hWnd_00; + hWnd_01 = hWnd_00; + if ((uVar1 >> 0x1e & 1) == 0) break; + } +joined_r0x0001800248c7: + while (hWnd = pHVar5, hWnd != (HWND)0x0) { + pHVar5 = GetParent(hWnd); + hWnd_00 = hWnd; + } + if ((param_1 == (HWND)0x0) && (hWnd_01 != (HWND)0x0)) { + hWnd_01 = GetLastActivePopup(hWnd_01); + } + if (param_2 != (undefined8 *)0x0) { + if (((hWnd_00 == (HWND)0x0) || (BVar2 = IsWindowEnabled(hWnd_00), BVar2 == 0)) || + (hWnd_00 == hWnd_01)) { + *param_2 = 0; + } + else { + *param_2 = hWnd_00; + EnableWindow(hWnd_00,0); + } + } + return hWnd_01; +} + + +================================================================== + +### EXPORT FUNC 180024938 (7 bytes) name=FUN_180024938 + +void FUN_180024938(undefined8 param_1,int param_2) + +{ + CWinApp::DoEnableModeless(param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 180024940 (400 bytes) name=ShowAppMessageBox + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + public: static int __cdecl CWinApp::ShowAppMessageBox(class CWinApp * __ptr64,wchar_t const * + __ptr64,unsigned int,unsigned int) + + Library: Visual Studio 2005 Release */ + +int __cdecl CWinApp::ShowAppMessageBox(CWinApp *param_1,wchar_t *param_2,uint param_3,uint param_4) + +{ + DWORD DVar1; + HWND hWnd; + CWinApp *pCVar2; + ulonglong uVar3; + int iVar4; + WCHAR *pWVar5; + undefined1 auStack_288 [32]; + DWORD local_268 [2]; + HWND local_260; + WCHAR local_258 [259]; + undefined2 local_52; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_288; + DoEnableModeless(0); + hWnd = FUN_180024834((HWND)0x0,&local_260); + if (hWnd != local_260) { + EnableWindow(hWnd,1); + } + iVar4 = 0; + local_268[0] = 0; + GetWindowThreadProcessId(hWnd,local_268); + if ((((hWnd == (HWND)0x0) || (DVar1 = GetCurrentProcessId(), local_268[0] != DVar1)) || + (pCVar2 = (CWinApp *)SendMessageW(hWnd,0x376,0,0), pCVar2 == (CWinApp *)0x0)) && + (pCVar2 = (CWinApp *)0x0, param_1 != (CWinApp *)0x0)) { + pCVar2 = param_1 + 0xf0; + } + if ((pCVar2 != (CWinApp *)0x0) && (iVar4 = *(int *)pCVar2, param_4 != 0)) { + *(uint *)pCVar2 = param_4 + 0x30000; + } + if ((param_3 & 0xf0) == 0) { + if ((param_3 & 0xf) < 2) { + param_3 = param_3 | 0x30; + } + else if ((param_3 & 0xf) - 3 < 2) { + param_3 = param_3 | 0x20; + } + } + local_258[0] = L'\0'; + if (param_1 == (CWinApp *)0x0) { + pWVar5 = local_258; + DVar1 = GetModuleFileNameW((HMODULE)0x0,local_258,0x104); + if (DVar1 == 0x104) { + local_52 = 0; + } + } + else { + pWVar5 = *(WCHAR **)(param_1 + 0xa0); + } + uVar3 = FID_conflict_AfxCtxMessageBoxA(hWnd,param_2,pWVar5,param_3); + if (pCVar2 != (CWinApp *)0x0) { + *(int *)pCVar2 = iVar4; + } + if (local_260 != (HWND)0x0) { + EnableWindow(local_260,1); + } + DoEnableModeless(1); + return (int)uVar3; +} + + +================================================================== + +### EXPORT FUNC 180024ad0 (80 bytes) name=AfxMessageBox + +/* Library Function - Multiple Matches With Same Base Name + int __cdecl AfxMessageBox(char const * __ptr64,unsigned int,unsigned int) + int __cdecl AfxMessageBox(wchar_t const * __ptr64,unsigned int,unsigned int) + + Library: Visual Studio 2008 Release */ + +void AfxMessageBox(wchar_t *param_1,uint param_2,uint param_3) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + if (*(longlong **)(lVar1 + 8) == (longlong *)0x0) { + CWinApp::ShowAppMessageBox((CWinApp *)0x0,param_1,param_2,param_3); + } + else { + (**(code **)(**(longlong **)(lVar1 + 8) + 0x130))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024b20 (191 bytes) name=FUN_180024b20 + +undefined4 FUN_180024b20(uint param_1,uint param_2,uint param_3) + +{ + wchar_t *pwVar1; + int iVar2; + undefined4 uVar3; + undefined **ppuVar4; + longlong lVar5; + HMODULE pHVar6; + wchar_t *pwVar7; + wchar_t *local_res20; + + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res20 = (wchar_t *)(lVar5 + 0x18); + pHVar6 = (HMODULE)FUN_18001fcac(); + pwVar7 = (wchar_t *)(lVar5 + 0x18); + if (pHVar6 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_res20,pHVar6,param_1); + pwVar7 = local_res20; + } + if (param_3 == 0xffffffff) { + param_3 = param_1; + } + uVar3 = AfxMessageBox(pwVar7,param_2,param_3); + LOCK(); + pwVar1 = pwVar7 + -4; + iVar2 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar7 + -0xc) + 8))(); + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 180024be0 (24 bytes) name=Unwind@180024be0 + +void Unwind_180024be0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 180024bf8 (72 bytes) name=AfxDlgProc + +/* Library Function - Single Match + __int64 __cdecl AfxDlgProc(struct HWND__ * __ptr64,unsigned int,unsigned __int64,__int64) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +__int64 __cdecl AfxDlgProc(HWND__ *param_1,uint param_2,__uint64 param_3,__int64 param_4) + +{ + int iVar1; + CWnd *pCVar2; + CObject *pCVar3; + __int64 _Var4; + + if (param_2 == 0x110) { + pCVar2 = CWnd::FromHandlePermanent(param_1); + pCVar3 = AfxDynamicDownCast((CRuntimeClass *)&PTR_s_CDialog_180054b80,(CObject *)pCVar2); + if (pCVar3 == (CObject *)0x0) { + _Var4 = 1; + } + else { + iVar1 = (**(code **)(*(longlong *)pCVar3 + 0x290))(pCVar3); + _Var4 = (__int64)iVar1; + } + } + else { + _Var4 = 0; + } + return _Var4; +} + + +================================================================== + +### EXPORT FUNC 180024c40 (58 bytes) name=FUN_180024c40 + +void FUN_180024c40(CWnd *param_1) + +{ + *(undefined ***)param_1 = CDialog::vftable; + if (*(longlong *)(param_1 + 0x40) != 0) { + FUN_180029920((longlong)param_1); + } + CWnd::~CWnd(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180024c80 (24 bytes) name=Unwind@180024c80 + +void Unwind_180024c80(undefined8 param_1,longlong param_2) + +{ + CWnd::~CWnd(*(CWnd **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180024c98 (126 bytes) name=OnPaint + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + protected: void __cdecl CDialog::OnPaint(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CDialog::OnPaint(CDialog *this) + +{ + int iVar1; + undefined1 auStack_b8 [32]; + undefined8 local_98; + CPaintDC local_88 [112]; + ulonglong local_18; + + local_98 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_b8; + CPaintDC::CPaintDC(local_88,(CWnd *)this); + iVar1 = CWnd::PaintWindowlessControls((CWnd *)this,(CDC *)local_88); + if (iVar1 == 0) { + FUN_1800294c4((longlong *)this); + CPaintDC::~CPaintDC(local_88); + } + else { + CPaintDC::~CPaintDC(local_88); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024d18 (24 bytes) name=Unwind@180024d18 + +void Unwind_180024d18(undefined8 param_1,longlong param_2) + +{ + CPaintDC::~CPaintDC((CPaintDC *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180024d30 (13 bytes) name=FUN_180024d30 + +undefined8 FUN_180024d30(longlong param_1,undefined8 param_2) + +{ + *(undefined8 *)(param_1 + 0xe0) = param_2; + return 1; +} + + +================================================================== + +### EXPORT FUNC 180024d40 (8 bytes) name=FUN_180024d40 + +undefined8 FUN_180024d40(longlong param_1) + +{ + return *(undefined8 *)(param_1 + 0xe0); +} + + +================================================================== + +### EXPORT FUNC 180024d48 (109 bytes) name=CDialog + +/* Library Function - Single Match + public: __cdecl CDialog::CDialog(unsigned int,class CWnd * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +CDialog * __thiscall CDialog::CDialog(CDialog *this,uint param_1,CWnd *param_2) + +{ + CWnd::CWnd((CWnd *)this); + *(undefined ***)this = vftable; + FUN_1800357d0((ulonglong *)(this + 0xa8),0,0x40); + *(ulonglong *)(this + 0xb0) = (ulonglong)(param_1 & 0xffff); + *(uint *)(this + 0xa8) = param_1; + *(CWnd **)(this + 0xd0) = param_2; + return this; +} + + +================================================================== + +### EXPORT FUNC 180024db8 (57 bytes) name=EndDialog + +/* Library Function - Single Match + public: void __cdecl CDialog::EndDialog(int) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CDialog::EndDialog(CDialog *this,int param_1) + +{ + if (((byte)this[0x78] & 0x18) != 0) { + (**(code **)(*(longlong *)this + 0x108))(this,param_1); + } + /* WARNING: Could not recover jumptable at 0x000180024dea. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ::EndDialog(*(undefined8 *)(this + 0x40),(longlong)param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180024df4 (42 bytes) name=OnOK + +/* Library Function - Single Match + protected: virtual void __cdecl CDialog::OnOK(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CDialog::OnOK(CDialog *this) + +{ + int iVar1; + + iVar1 = CWnd::UpdateData((CWnd *)this,1); + if (iVar1 != 0) { + EndDialog(this,1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180024e20 (10 bytes) name=FUN_180024e20 + +void FUN_180024e20(CDialog *param_1) + +{ + CDialog::EndDialog(param_1,2); + return; +} + + +================================================================== + +### EXPORT FUNC 180024e40 (8 bytes) name=FUN_180024e40 + +undefined ** FUN_180024e40(void) + +{ + return &PTR_s_CDialog_180054b80; +} + + +================================================================== + +### EXPORT FUNC 180024e60 (206 bytes) name=PreTranslateMessage + +/* Library Function - Single Match + public: virtual int __cdecl CDialog::PreTranslateMessage(struct tagMSG * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CDialog::PreTranslateMessage(CDialog *this,tagMSG *param_1) + +{ + int iVar1; + uint uVar2; + BOOL BVar3; + CFrameWnd *pCVar4; + HWND hWnd; + + iVar1 = CWnd::PreTranslateMessage((CWnd *)this,param_1); + if (iVar1 == 0) { + pCVar4 = CWnd::GetTopLevelFrame((CWnd *)this); + if ((pCVar4 != (CFrameWnd *)0x0) && (*(int *)(pCVar4 + 0xc4) != 0)) { + return 0; + } + if ((((param_1->message != 0x100) || + (((param_1->wParam != 0x1b && (param_1->wParam != 3)) || + (uVar2 = GetWindowLongW(param_1->hwnd,-0x10), (uVar2 & 4) == 0)))) || + (iVar1 = _AfxCompareClassName(param_1->hwnd,L"Edit"), iVar1 == 0)) || + ((hWnd = GetDlgItem(*(HWND *)(this + 0x40),2), hWnd != (HWND)0x0 && + (BVar3 = IsWindowEnabled(hWnd), BVar3 == 0)))) { + iVar1 = CWnd::PreTranslateInput((CWnd *)this,param_1); + return iVar1; + } + SendMessageW(*(HWND *)(this + 0x40),0x111,2,0); + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 180024f30 (200 bytes) name=OnCmdMsg + +/* Library Function - Single Match + public: virtual int __cdecl CDialog::OnCmdMsg(unsigned int,int,void * __ptr64,struct + AFX_CMDHANDLERINFO * __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +int __thiscall +CDialog::OnCmdMsg(CDialog *this,uint param_1,int param_2,void *param_3,AFX_CMDHANDLERINFO *param_4) + +{ + uint uVar1; + int iVar2; + HWND pHVar3; + CWnd *pCVar4; + longlong *plVar5; + undefined4 in_register_00000084; + + uVar1 = FUN_18002d834((longlong *)this,param_1,CONCAT44(in_register_00000084,param_2),param_3, + (longlong *)param_4); + if (uVar1 == 0) { + if ((((param_2 == 0) || (param_2 == -1)) && ((param_1 >> 0xf & 1) != 0)) && (param_1 < 0xf000)) + { + pHVar3 = GetParent(*(HWND *)(this + 0x40)); + pCVar4 = CWnd::FromHandle(pHVar3); + if (pCVar4 != (CWnd *)0x0) { + iVar2 = (**(code **)(*(longlong *)pCVar4 + 0x18))(pCVar4,param_1,param_2,param_3,param_4); + if (iVar2 != 0) goto LAB_180024f66; + } + plVar5 = (longlong *)FUN_180020e40(); + if (plVar5 != (longlong *)0x0) { + iVar2 = (**(code **)(*plVar5 + 0x18))(plVar5,param_1,param_2,param_3,param_4); + if (iVar2 != 0) goto LAB_180024f66; + } + } + iVar2 = 0; + } + else { +LAB_180024f66: + iVar2 = 1; + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 180024ff8 (47 bytes) name=FUN_180024ff8 + +CWnd * FUN_180024ff8(CWnd *param_1,uint param_2) + +{ + FUN_180024c40(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180025028 (92 bytes) name=PreModal + +/* Library Function - Single Match + protected: struct HWND__ * __ptr64 __cdecl CDialog::PreModal(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +HWND__ * __thiscall CDialog::PreModal(CDialog *this) + +{ + longlong lVar1; + HWND pHVar2; + + lVar1 = FUN_180022bb4(); + pHVar2 = (HWND)0x0; + if (*(longlong *)(lVar1 + 8) != 0) { + FUN_180024938(*(longlong *)(lVar1 + 8),0); + } + if (*(longlong *)(this + 0xd0) != 0) { + pHVar2 = *(HWND *)(*(longlong *)(this + 0xd0) + 0x40); + } + pHVar2 = FUN_180024834(pHVar2,(undefined8 *)(this + 0xd8)); + FUN_18002b980((longlong)this); + return pHVar2; +} + + +================================================================== + +### EXPORT FUNC 180025084 (95 bytes) name=PostModal + +/* Library Function - Single Match + protected: void __cdecl CDialog::PostModal(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CDialog::PostModal(CDialog *this) + +{ + BOOL BVar1; + longlong lVar2; + + FUN_1800296fc(); + CWnd::Detach((CWnd *)this); + BVar1 = IsWindow(*(HWND *)(this + 0xd8)); + if (BVar1 != 0) { + EnableWindow(*(HWND *)(this + 0xd8),1); + } + *(undefined8 *)(this + 0xd8) = 0; + lVar2 = FUN_180022bb4(); + if (*(longlong *)(lVar2 + 8) != 0) { + FUN_180024938(*(longlong *)(lVar2 + 8),1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800250e4 (46 bytes) name=HandleSetFont + +/* Library Function - Single Match + protected: __int64 __cdecl CDialog::HandleSetFont(unsigned __int64,__int64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +__int64 __thiscall CDialog::HandleSetFont(CDialog *this,__uint64 param_1,__int64 param_2) + +{ + CGdiObject *pCVar1; + __int64 _Var2; + + pCVar1 = CGdiObject::FromHandle((void *)param_1); + (**(code **)(*(longlong *)this + 0x298))(this,pCVar1); + _Var2 = FUN_1800294c4((longlong *)this); + return _Var2; +} + + +================================================================== + +### EXPORT FUNC 180025114 (175 bytes) name=FUN_180025114 + +longlong FUN_180025114(CDialog *param_1) + +{ + longlong *plVar1; + int iVar2; + longlong lVar3; + HWND pHVar4; + CWnd *pCVar5; + + (**(code **)(*(longlong *)param_1 + 0x2b0))(); + lVar3 = FUN_180022bb4(); + plVar1 = *(longlong **)(lVar3 + 0x68); + if ((plVar1 != (longlong *)0x0) && (*(longlong *)(param_1 + 0xe0) != 0)) { + if (*(longlong *)(param_1 + 200) == 0) { + iVar2 = (**(code **)(*plVar1 + 0x48))(plVar1,param_1,*(undefined8 *)(param_1 + 0xb0)); + } + else { + iVar2 = (**(code **)(*plVar1 + 0x40))(); + } + if (iVar2 == 0) { + CDialog::EndDialog(param_1,-1); + return 0; + } + } + lVar3 = FUN_1800294c4((longlong *)param_1); + if ((lVar3 != 0) && ((*(uint *)(param_1 + 0x78) >> 8 & 1) != 0)) { + pHVar4 = GetNextDlgTabItem(*(HWND *)(param_1 + 0x40),(HWND)0x0,0); + pCVar5 = CWnd::FromHandle(pHVar4); + if (pCVar5 != (CWnd *)0x0) { + FUN_18002e2f0((longlong)pCVar5); + lVar3 = 0; + } + } + return lVar3; +} + + +================================================================== + +### EXPORT FUNC 1800251c4 (133 bytes) name=AfxHelpEnabled + +/* Library Function - Single Match + int __cdecl AfxHelpEnabled(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +int __cdecl AfxHelpEnabled(void) + +{ + int iVar1; + longlong lVar2; + longlong *plVar3; + undefined1 local_18 [24]; + + lVar2 = FUN_180022bb4(); + if (*(longlong *)(lVar2 + 8) == 0) { + iVar1 = 0; + } + else { + plVar3 = (longlong *)FUN_180020e40(); + if (plVar3 == (longlong *)0x0) { + plVar3 = (longlong *)0x0; + } + else { + plVar3 = (longlong *)(**(code **)(*plVar3 + 0xe8))(plVar3); + } + if ((plVar3 != (longlong *)0x0) && + (iVar1 = (**(code **)(*plVar3 + 0x18))(plVar3,0xe146,0,0,local_18), iVar1 != 0)) { + return 1; + } + lVar2 = FUN_180022bb4(); + iVar1 = (**(code **)(**(longlong **)(lVar2 + 8) + 0x18)) + (*(longlong **)(lVar2 + 8),0xe146,0,0,local_18); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18002524c (122 bytes) name=FUN_18002524c + +undefined8 FUN_18002524c(CWnd *param_1) + +{ + int iVar1; + CWnd *pCVar2; + + if (*(ushort **)(param_1 + 200) == (ushort *)0x0) { + iVar1 = FUN_18002d608((longlong)param_1,*(LPCWSTR *)(param_1 + 0xb0)); + } + else { + iVar1 = FUN_18002d064((longlong)param_1,*(ushort **)(param_1 + 200)); + } + if ((iVar1 != 0) && (iVar1 = CWnd::UpdateData(param_1,0), iVar1 != 0)) { + pCVar2 = CWnd::GetDlgItem(param_1,0xe146); + if (pCVar2 != (CWnd *)0x0) { + iVar1 = AfxHelpEnabled(); + FUN_18002e260((longlong)pCVar2,-(uint)(iVar1 != 0) & 5); + } + return 1; + } + CDialog::EndDialog((CDialog *)param_1,-1); + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800252c8 (213 bytes) name=FUN_1800252c8 + +undefined8 FUN_1800252c8(longlong param_1) + +{ + HMODULE hModule; + short sVar1; + longlong lVar2; + HRSRC hResInfo; + HGLOBAL hResData; + uint *puVar3; + uint uVar4; + short sVar5; + undefined8 uVar6; + + puVar3 = *(uint **)(param_1 + 0xc0); + hResData = *(HGLOBAL *)(param_1 + 0xb8); + if (*(longlong *)(param_1 + 0xb0) != 0) { + lVar2 = FUN_180022bb4(); + hModule = *(HMODULE *)(lVar2 + 0x18); + hResInfo = FindResourceW(hModule,*(LPCWSTR *)(param_1 + 0xb0),(LPCWSTR)0x5); + hResData = LoadResource(hModule,hResInfo); + } + if (hResData != (HGLOBAL)0x0) { + puVar3 = LockResource(hResData); + } + uVar6 = 1; + if (puVar3 != (uint *)0x0) { + uVar4 = *puVar3; + if (*(short *)((longlong)puVar3 + 2) == -1) { + uVar4 = puVar3[3]; + sVar5 = *(short *)((longlong)puVar3 + 0x12); + sVar1 = (short)puVar3[5]; + } + else { + sVar5 = *(short *)((longlong)puVar3 + 10); + sVar1 = (short)puVar3[3]; + } + if ((((uVar4 & 0x1801) != 0) || (sVar5 != 0)) || (sVar1 != 0)) { + uVar6 = 0; + } + } + if (*(longlong *)(param_1 + 0xb0) != 0) { + FreeResource(hResData); + } + return uVar6; +} + + +================================================================== + +### EXPORT FUNC 1800253a0 (86 bytes) name=OnCommandHelp + +/* Library Function - Single Match + protected: __int64 __cdecl CDialog::OnCommandHelp(unsigned __int64,__int64) __ptr64 + + Library: Visual Studio 2005 Release */ + +__int64 __thiscall CDialog::OnCommandHelp(CDialog *this,__uint64 param_1,__int64 param_2) + +{ + longlong *plVar1; + uint uVar2; + longlong lVar3; + __int64 _Var4; + + if ((param_2 == 0) && + ((*(int *)(this + 0xa8) == 0 || + (uVar2 = *(int *)(this + 0xa8) + 0x20000, param_2 = (__int64)uVar2, uVar2 == 0)))) { + _Var4 = 0; + } + else { + lVar3 = FUN_180022bb4(); + plVar1 = *(longlong **)(lVar3 + 8); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 0x158))(plVar1,param_2,1); + } + _Var4 = 1; + } + return _Var4; +} + + +================================================================== + +### EXPORT FUNC 1800253f8 (8 bytes) name=FUN_1800253f8 + +undefined ** FUN_1800253f8(void) + +{ + return &PTR_FUN_180054ed0; +} + + +================================================================== + +### EXPORT FUNC 180025400 (676 bytes) name=FUN_180025400 + +bool FUN_180025400(longlong *param_1,LPCDLGTEMPLATEW param_2,longlong param_3,HINSTANCE param_4) + +{ + ushort *puVar1; + longlong *plVar2; + int iVar3; + longlong lVar4; + undefined **ppuVar5; + undefined8 uVar6; + HWND hMem; + HWND pHVar7; + undefined7 extraout_var; + bool bVar8; + short local_res20 [4]; + ushort *local_88; + HWND local_80; + HWND local_78; + longlong *local_70; + undefined8 local_68 [3]; + undefined8 local_50; + undefined1 local_48 [32]; + + local_50 = 0xfffffffffffffffe; + pHVar7 = (HWND)0x0; + if (param_4 == (HINSTANCE)0x0) { + lVar4 = FUN_180022bb4(); + param_4 = *(HINSTANCE *)(lVar4 + 0x18); + } + lVar4 = FUN_180022bb4(); + plVar2 = *(longlong **)(lVar4 + 0x68); + local_80 = (HWND)0x0; + local_78 = (HWND)0x0; + local_70 = plVar2; + FUN_18002d230(0x10); + FUN_18002d230(0x7c000); + if (plVar2 != (longlong *)0x0) { + iVar3 = (**(code **)(*param_1 + 600))(param_1,local_48); + if (iVar3 == 0) { + return false; + } + param_2 = (LPCDLGTEMPLATEW)(**(code **)(*plVar2 + 0x28))(plVar2,local_48,param_2); + } + if (param_2 == (LPCDLGTEMPLATEW)0x0) { + return false; + } + ppuVar5 = FUN_18001fcc0(); + if (ppuVar5 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar4 = (**(code **)(*ppuVar5 + 0x18))(ppuVar5); + local_88 = (ushort *)(lVar4 + 0x18); + local_res20[0] = 0; + uVar6 = FUN_180031adc(¶m_2->style,(longlong *)&local_88,local_res20); + bVar8 = (int)uVar6 == 0; + if (DAT_180072538 == 0) { +LAB_18002555e: + hMem = (HWND)0x0; + if (!bVar8) goto LAB_1800255af; + } + else if (!bVar8) { + iVar3 = GetSystemMetrics(0x2a); + hMem = pHVar7; + if ((iVar3 == 0) || (iVar3 = FUN_1800360e0(local_88,(ushort *)L"MS Shell Dlg"), iVar3 != 0)) + goto LAB_1800255af; + if (local_res20[0] == 8) { + local_res20[0] = 0; + } + bVar8 = true; + goto LAB_18002555e; + } + FUN_180031a90(local_68,¶m_2->style); + FUN_180031998(local_68,local_res20[0]); + hMem = (HWND)FUN_1800315dc(local_68); + local_80 = hMem; + FUN_1800315c4(local_68); + if (hMem != (HWND)0x0) { + param_2 = GlobalLock(hMem); + } +LAB_1800255af: + *(undefined4 *)(param_1 + 0x11) = 0xffffffff; + *(uint *)(param_1 + 0xf) = *(uint *)(param_1 + 0xf) | 0x10; + FUN_18002b980((longlong)param_1); + if (param_3 != 0) { + pHVar7 = *(HWND *)(param_3 + 0x40); + } + pHVar7 = CreateDialogIndirectParamW(param_4,param_2,pHVar7,AfxDlgProc,0); + LOCK(); + puVar1 = local_88 + -4; + iVar3 = *(int *)puVar1; + *(int *)puVar1 = *(int *)puVar1 + -1; + UNLOCK(); + local_78 = pHVar7; + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_88 + -0xc) + 8))(); + } + if ((plVar2 != (longlong *)0x0) && (pHVar7 != (HWND)0x0)) { + (**(code **)(*plVar2 + 0x30))(plVar2,local_48); + (**(code **)(*param_1 + 600))(param_1,0); + } + bVar8 = FUN_1800296fc(); + if ((int)CONCAT71(extraout_var,bVar8) == 0) { + (**(code **)(*param_1 + 0x228))(param_1); + } + if ((pHVar7 != (HWND)0x0) && ((*(byte *)(param_1 + 0xf) & 0x10) == 0)) { + DestroyWindow(pHVar7); + pHVar7 = (HWND)0x0; + } + if (hMem != (HWND)0x0) { + GlobalUnlock(hMem); + GlobalFree(hMem); + } + return pHVar7 != (HWND)0x0; +} + + +================================================================== + +### EXPORT FUNC 1800256c0 (24 bytes) name=Unwind@1800256c0 + +void Unwind_1800256c0(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800256e0 (24 bytes) name=Unwind@1800256e0 + +void Unwind_1800256e0(undefined8 param_1,longlong param_2) + +{ + FUN_1800315c4((undefined8 *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 180025700 (60 bytes) name=Catch@180025700 + +/* Library Function - Single Match + int `protected: int __cdecl CWnd::CreateDlgIndirect(struct DLGTEMPLATE const * __ptr64,class + CreateDlgIndirect * __ptr64,struct HINSTANCE__ * __ptr64) __ptr64'::`1'::catch$0 + + Library: Visual Studio 2008 Release */ + +undefined * Catch_180025700(undefined8 param_1,longlong param_2) + +{ + if (*(longlong **)(param_2 + 0x60) != (longlong *)0x0) { + FUN_18001ec74(*(longlong **)(param_2 + 0x60)); + } + *(undefined4 *)(*(longlong *)(param_2 + 0xc0) + 0x88) = 0xffffffff; + return &DAT_180025615; +} + + +================================================================== + +### EXPORT FUNC 180025740 (623 bytes) name=DoModal + +/* Library Function - Single Match + public: virtual __int64 __cdecl CDialog::DoModal(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +__int64 __thiscall CDialog::DoModal(CDialog *this) + +{ + bool bVar1; + bool bVar2; + bool bVar3; + BOOL BVar4; + int iVar5; + ulong uVar6; + longlong lVar7; + HRSRC hResInfo; + HGLOBAL hResData; + LPCDLGTEMPLATEW pDVar8; + __int64 _Var9; + HWND__ *hWnd; + HWND pHVar10; + longlong *plVar11; + CWnd *this_00; + CWnd *pCVar12; + undefined7 extraout_var; + uint uVar13; + HINSTANCE local_68; + + pDVar8 = *(LPCDLGTEMPLATEW *)(this + 0xc0); + hResData = *(HGLOBAL *)(this + 0xb8); + lVar7 = FUN_180022bb4(); + local_68 = *(HINSTANCE *)(lVar7 + 0x18); + if (*(longlong *)(this + 0xb0) != 0) { + lVar7 = FUN_180022bb4(); + local_68 = *(HINSTANCE *)(lVar7 + 0x18); + hResInfo = FindResourceW(local_68,*(LPCWSTR *)(this + 0xb0),(LPCWSTR)0x5); + hResData = LoadResource(local_68,hResInfo); + } + if (hResData != (HGLOBAL)0x0) { + pDVar8 = LockResource(hResData); + } + if (pDVar8 == (LPCDLGTEMPLATEW)0x0) { + _Var9 = -1; + } + else { + hWnd = PreModal(this); + FUN_1800296fc(); + this_00 = (CWnd *)0x0; + bVar3 = false; + bVar1 = false; + bVar2 = false; + if (((hWnd != (HWND__ *)0x0) && + (pHVar10 = GetDesktopWindow(), bVar1 = bVar3, bVar2 = false, hWnd != pHVar10)) && + (BVar4 = IsWindowEnabled(hWnd), BVar4 != 0)) { + EnableWindow(hWnd,0); + bVar2 = true; + plVar11 = (longlong *)FUN_180020e40(); + if (plVar11 != (longlong *)0x0) { + this_00 = (CWnd *)(**(code **)(*plVar11 + 0xe8))(plVar11); + } + if (((this_00 != (CWnd *)0x0) && + (iVar5 = (**(code **)(*(longlong *)this_00 + 0x240))(this_00), iVar5 != 0)) && + (iVar5 = CWnd::IsWindowEnabled(this_00), iVar5 != 0)) { + CWnd::EnableWindow(this_00,0); + bVar1 = bVar2; + } + } + FUN_18002b980((longlong)this); + pCVar12 = CWnd::FromHandle(hWnd); + bVar3 = FUN_180025400((longlong *)this,pDVar8,(longlong)pCVar12,local_68); + if ((int)CONCAT71(extraout_var,bVar3) != 0) { + if (((byte)this[0x78] & 0x10) != 0) { + uVar6 = CWnd::GetStyle((CWnd *)this); + uVar13 = 4; + if ((uVar6 >> 8 & 1) != 0) { + uVar13 = 5; + } + FUN_180028f44((CWnd *)this,(ulonglong)uVar13); + } + if (*(longlong *)(this + 0x40) != 0) { + CWnd::SetWindowPos((CWnd *)this,(CWnd *)0x0,0,0,0,0,0x97); + } + } + if (bVar1) { + CWnd::EnableWindow(this_00,1); + } + if (bVar2) { + EnableWindow(hWnd,1); + } + if ((hWnd != (HWND__ *)0x0) && (pHVar10 = GetActiveWindow(), pHVar10 == *(HWND *)(this + 0x40))) + { + SetActiveWindow(hWnd); + } + (**(code **)(*(longlong *)this + 0xc0))(this); + PostModal(this); + if (*(longlong *)(this + 0xb0) != 0) { + FreeResource(hResData); + } + _Var9 = (__int64)*(int *)(this + 0x88); + } + return _Var9; +} + + +================================================================== + +### EXPORT FUNC 1800259e0 (56 bytes) name=Catch@1800259e0 + +undefined * Catch_1800259e0(undefined8 param_1,longlong param_2) + +{ + if (*(longlong **)(param_2 + 0x60) != (longlong *)0x0) { + FUN_18001ec74(*(longlong **)(param_2 + 0x60)); + } + *(undefined4 *)(*(longlong *)(param_2 + 0xb0) + 0x88) = 0xffffffff; + return &DAT_180025932; +} + + +================================================================== + +### EXPORT FUNC 180025a1c (100 bytes) name=FUN_180025a1c + +void FUN_180025a1c(longlong *param_1,LPCDLGTEMPLATEW param_2,longlong param_3,longlong param_4, + HINSTANCE param_5) + +{ + longlong *plVar1; + + if (param_3 == 0) { + plVar1 = (longlong *)FUN_180020e40(); + if (plVar1 == (longlong *)0x0) { + param_3 = 0; + } + else { + param_3 = (**(code **)(*plVar1 + 0xe8))(plVar1); + } + } + param_1[0x19] = param_4; + FUN_180025400(param_1,param_2,param_3,param_5); + return; +} + + +================================================================== + +### EXPORT FUNC 180025a80 (71 bytes) name=CreateIndirect + +/* Library Function - Single Match + protected: int __cdecl CDialog::CreateIndirect(void * __ptr64,class CWnd * __ptr64,struct + HINSTANCE__ * __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +int __thiscall +CDialog::CreateIndirect(CDialog *this,void *param_1,CWnd *param_2,HINSTANCE__ *param_3) + +{ + int iVar1; + LPCDLGTEMPLATEW pDVar2; + + pDVar2 = LockResource(param_1); + iVar1 = FUN_180025a1c((longlong *)this,pDVar2,(longlong)param_2,0,param_3); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180025ac8 (20 bytes) name=FUN_180025ac8 + +void FUN_180025ac8(longlong *param_1,LPCDLGTEMPLATEW param_2,longlong param_3,longlong param_4) + +{ + FUN_180025a1c(param_1,param_2,param_3,param_4,(HINSTANCE)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180025adc (156 bytes) name=FUN_180025adc + +int FUN_180025adc(CDialog *param_1,LPCWSTR param_2,CWnd *param_3) + +{ + HINSTANCE__ *hModule; + int iVar1; + longlong lVar2; + HRSRC hResInfo; + HGLOBAL hResData; + + *(LPCWSTR *)(param_1 + 0xb0) = param_2; + if ((((ulonglong)param_2 & 0xffffffffffff0000) == 0) && (*(int *)(param_1 + 0xa8) == 0)) { + *(uint *)(param_1 + 0xa8) = (uint)param_2 & 0xffff; + } + lVar2 = FUN_180022bb4(); + hModule = *(HINSTANCE__ **)(lVar2 + 0x18); + hResInfo = FindResourceW(hModule,param_2,(LPCWSTR)0x5); + hResData = LoadResource(hModule,hResInfo); + iVar1 = CDialog::CreateIndirect(param_1,hResData,param_3,hModule); + FreeResource(hResData); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180025b78 (8 bytes) name=FUN_180025b78 + +void FUN_180025b78(CDialog *param_1,void *param_2,CWnd *param_3) + +{ + CDialog::CreateIndirect(param_1,param_2,param_3,(HINSTANCE__ *)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180025b80 (96 bytes) name=IsPlatformNT + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + IsPlatformNT + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +bool IsPlatformNT(void) + +{ + undefined1 auStack_d8 [32]; + _OSVERSIONINFOA local_b8; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + FUN_1800357d0((ulonglong *)&local_b8.dwMajorVersion,0,0x90); + local_b8.dwOSVersionInfoSize = 0x94; + GetVersionExA(&local_b8); + return local_b8.dwPlatformId == 2; +} + + +================================================================== + +### EXPORT FUNC 180025be0 (373 bytes) name=FUN_180025be0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool FUN_180025be0(void) + +{ + bool bVar1; + undefined7 extraout_var; + HMODULE hModule; + char *lpProcName; + + if (DAT_1800721c8 != 0) { + return DAT_1800721b0 != (FARPROC)0x0; + } + bVar1 = IsPlatformNT(); + DAT_1800721cc = (int)CONCAT71(extraout_var,bVar1); + hModule = GetModuleHandleW(L"USER32"); + if ((((hModule != (HMODULE)0x0) && + (_DAT_180072190 = GetProcAddress(hModule,"GetSystemMetrics"), _DAT_180072190 != (FARPROC)0x0) + ) && (DAT_180072198 = GetProcAddress(hModule,"MonitorFromWindow"), + DAT_180072198 != (FARPROC)0x0)) && + (((DAT_1800721a0 = GetProcAddress(hModule,"MonitorFromRect"), DAT_1800721a0 != (FARPROC)0x0 && + (_DAT_1800721a8 = GetProcAddress(hModule,"MonitorFromPoint"), _DAT_1800721a8 != (FARPROC)0x0) + ) && ((_DAT_1800721b8 = GetProcAddress(hModule,"EnumDisplayMonitors"), + _DAT_1800721b8 != (FARPROC)0x0 && + (_DAT_1800721c0 = GetProcAddress(hModule,"EnumDisplayDevicesW"), + _DAT_1800721c0 != (FARPROC)0x0)))))) { + lpProcName = "GetMonitorInfoW"; + if (DAT_1800721cc == 0) { + lpProcName = "GetMonitorInfoA"; + } + DAT_1800721b0 = GetProcAddress(hModule,lpProcName); + if (DAT_1800721b0 != (FARPROC)0x0) { + DAT_1800721c8 = 1; + return true; + } + } + DAT_1800721c8 = 1; + _DAT_1800721c0 = (FARPROC)0x0; + _DAT_1800721b8 = (FARPROC)0x0; + DAT_1800721b0 = (FARPROC)0x0; + _DAT_1800721a8 = (FARPROC)0x0; + DAT_1800721a0 = (FARPROC)0x0; + DAT_180072198 = (FARPROC)0x0; + _DAT_180072190 = (FARPROC)0x0; + return false; +} + + +================================================================== + +### EXPORT FUNC 180025d58 (108 bytes) name=xMonitorFromRect + +/* Library Function - Single Match + xMonitorFromRect + + Library: Visual Studio 2008 Release */ + +undefined8 xMonitorFromRect(int *param_1,uint param_2) + +{ + bool bVar1; + int iVar2; + undefined7 extraout_var; + undefined8 uVar3; + + bVar1 = FUN_180025be0(); + if ((int)CONCAT71(extraout_var,bVar1) == 0) { + if (((param_2 & 3) == 0) && + ((((param_1[2] < 1 || (param_1[3] < 1)) || (iVar2 = GetSystemMetrics(0), iVar2 <= *param_1)) + || (iVar2 = GetSystemMetrics(1), iVar2 <= param_1[1])))) { + uVar3 = 0; + } + else { + uVar3 = 0x12340042; + } + return uVar3; + } + uVar3 = (*DAT_1800721a0)(param_1,param_2); + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 180025dc4 (125 bytes) name=xMonitorFromWindow + +/* Library Function - Single Match + xMonitorFromWindow + + Library: Visual Studio 2008 Release */ + +undefined8 xMonitorFromWindow(HWND param_1,uint param_2) + +{ + bool bVar1; + BOOL BVar2; + int iVar3; + undefined7 extraout_var; + undefined8 uVar4; + WINDOWPLACEMENT local_38; + + bVar1 = FUN_180025be0(); + if ((int)CONCAT71(extraout_var,bVar1) == 0) { + if ((param_2 & 3) == 0) { + BVar2 = IsIconic(param_1); + if (BVar2 == 0) { + iVar3 = GetWindowRect(param_1,&local_38.rcNormalPosition); + } + else { + iVar3 = GetWindowPlacement(param_1,&local_38); + } + if (iVar3 == 0) { + uVar4 = 0; + } + else { + uVar4 = xMonitorFromRect(&local_38.rcNormalPosition.left,param_2); + } + } + else { + uVar4 = 0x12340042; + } + } + else { + uVar4 = (*DAT_180072198)(param_1,param_2); + } + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 180025e44 (230 bytes) name=FUN_180025e44 + +int FUN_180025e44(longlong param_1,uint *param_2) + +{ + bool bVar1; + int iVar2; + BOOL BVar3; + uint uVar4; + undefined7 extraout_var; + char *lpMultiByteStr; + undefined8 local_18; + undefined8 uStack_10; + + bVar1 = FUN_180025be0(); + if ((int)CONCAT71(extraout_var,bVar1) == 0) { + if ((((param_1 != 0x12340042) || (param_2 == (uint *)0x0)) || (*param_2 < 0x28)) || + (BVar3 = SystemParametersInfoA(0x30,0,&local_18,0), BVar3 == 0)) { + return 0; + } + param_2[1] = 0; + param_2[2] = 0; + uVar4 = GetSystemMetrics(0); + iVar2 = 1; + param_2[3] = uVar4; + uVar4 = GetSystemMetrics(1); + param_2[9] = 1; + *(undefined8 *)(param_2 + 5) = local_18; + *(undefined8 *)(param_2 + 7) = uStack_10; + param_2[4] = uVar4; + if (*param_2 < 0x68) { + return 1; + } + lpMultiByteStr = "DISPLAY"; + } + else { + iVar2 = (*DAT_1800721b0)(param_1,param_2); + if (iVar2 == 0) { + return 0; + } + if (DAT_1800721cc != 0) { + return iVar2; + } + if (*param_2 < 0x68) { + return iVar2; + } + lpMultiByteStr = (char *)(param_2 + 10); + } + MultiByteToWideChar(0,0,lpMultiByteStr,-1,(LPWSTR)(param_2 + 10),0x20); + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 180025f2c (2168 bytes) name=FUN_180025f2c + +HRESULT FUN_180025f2c(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4, + ushort param_5,longlong *param_6,undefined2 *param_7,undefined8 param_8, + undefined4 *param_9) + +{ + uint uVar1; + uint uVar2; + undefined4 uVar3; + int iVar4; + VARIANTARG *pVVar5; + ULONGLONG UVar6; + undefined1 *puVar7; + undefined2 *puVar8; + uint uVar9; + uint uVar10; + ulonglong uVar11; + ulonglong uVar12; + uint *puVar13; + undefined4 *puVar14; + undefined4 local_res8 [2]; + ULONGLONG local_c8; + _union_1719 local_c0; + ULONGLONG local_b8; + VARIANTARG *local_a8 [4]; + ULONGLONG *local_88; + VARIANTARG local_80; + ULONGLONG local_68; + _union_1719 local_60; + ULONGLONG local_58; + undefined8 local_50; + undefined2 local_48 [16]; + + local_48[0] = 0; + if (param_1 == (longlong *)0x0) { + return -0x7ff8ffa9; + } + if (param_6 == (longlong *)0x0) { + return -0x7ffdfff8; + } + uVar1 = *(uint *)(param_6 + 2); + if (5 < uVar1) { + return -0x7ffdfff2; + } + uVar11 = 0; + if (*(int *)((longlong)param_6 + 0x14) != 0) { + puVar13 = (uint *)param_6[1]; + uVar12 = uVar11; + do { + if (uVar1 <= *puVar13) { + return -0x7ffdfff2; + } + uVar9 = (int)uVar12 + 1; + uVar11 = (ulonglong)uVar9; + uVar2 = *puVar13; + puVar13 = puVar13 + 1; + uVar10 = *(uint *)((longlong)param_6 + 0x14); + local_a8[(int)uVar2] = (VARIANTARG *)(*param_6 + uVar12 * 0x18); + uVar12 = uVar11; + } while (uVar9 < uVar10); + } + if ((uint)uVar11 < uVar1) { + pVVar5 = (VARIANTARG *)(*param_6 + uVar11 * 0x18); + do { + iVar4 = (int)uVar11; + uVar10 = iVar4 + 1; + uVar11 = (ulonglong)uVar10; + local_a8[(uVar1 - iVar4) - 1] = pVVar5; + pVVar5 = pVVar5 + 1; + } while (uVar10 < uVar1); + } + iVar4 = -0x7ffdfffd; + puVar14 = local_res8; + if (param_9 != (undefined4 *)0x0) { + puVar14 = param_9; + } + puVar8 = local_48; + if (param_7 != (undefined2 *)0x0) { + puVar8 = param_7; + } + VariantInit(&local_80); + switch(param_2) { + case 0xffffec66: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 200))(param_1,&local_c8); + goto switchD_180026056_default; + } + break; + case 0xffffec67: + if ((int)param_6[2] == 2) { + if ((local_a8[0]->n1).n2.vt != 3) { + iVar4 = VariantChangeType(&local_80,local_a8[0],0,3); + if (iVar4 < 0) goto LAB_180026385; + local_a8[0] = &local_80; + } + uVar3 = *(undefined4 *)((longlong)&local_a8[0]->n1 + 8); + if ((local_a8[1]->n1).n2.vt != 3) { + iVar4 = VariantChangeType(&local_80,local_a8[1],0,3); + if (iVar4 < 0) { +LAB_1800266b4: + *puVar14 = 1; + goto switchD_180026056_default; + } + local_a8[1] = &local_80; + } + iVar4 = (**(code **)(*param_1 + 0xc0)) + (param_1,uVar3,*(undefined4 *)((longlong)&local_a8[1]->n1 + 8),puVar8); + goto switchD_180026056_default; + } + break; + case 0xffffec68: + if ((int)param_6[2] == 2) { + if ((local_a8[0]->n1).n2.vt != 3) { + iVar4 = VariantChangeType(&local_80,local_a8[0],0,3); + if (iVar4 < 0) goto LAB_180026385; + local_a8[0] = &local_80; + } + local_c8 = *(ULONGLONG *)&local_a8[1]->n1; + local_c0 = (local_a8[1]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[1]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0xb8)) + (param_1,*(undefined4 *)((longlong)&local_a8[0]->n1 + 8),&local_c8,puVar8); + goto switchD_180026056_default; + } + break; + case 0xffffec69: + UVar6 = local_68; + if ((int)param_6[2] == 5) { + while ((((local_a8[0]->n1).n2.vt >> 0xe & 1) != 0 && ((*(byte *)&local_a8[0]->n1 & 0xf) != 0)) + ) { + if ((*(byte *)&local_a8[0]->n1 & 0xc) == 0) { + UVar6 = (local_a8[0]->n1).decVal.u2.Lo64; + } + else { + VariantClear((VARIANTARG *)(local_a8[0]->n1).decVal.u2); + **(undefined2 **)((longlong)&local_a8[0]->n1 + 8) = 3; + UVar6 = (local_a8[0]->n1).decVal.u2.Lo64 + 8; + } + } + *puVar14 = 0; + local_c8 = *local_88; + local_c0 = *(_union_1719 *)(local_88 + 1); + local_b8 = local_88[2]; + iVar4 = (**(code **)(*param_1 + 0xb0)) + (param_1,UVar6,local_60.Lo64,local_58,local_50,&local_c8); + goto switchD_180026056_default; + } + break; + case 0xffffec6a: + if ((int)param_6[2] == 2) { + if ((local_a8[0]->n1).n2.vt != 3) { + iVar4 = VariantChangeType(&local_80,local_a8[0],0,3); + if (iVar4 < 0) goto LAB_180026385; + local_a8[0] = &local_80; + } + local_c8 = *(ULONGLONG *)&local_a8[1]->n1; + local_c0 = (local_a8[1]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[1]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0xa8)) + (param_1,*(undefined4 *)((longlong)&local_a8[0]->n1 + 8),&local_c8); + goto switchD_180026056_default; + } + break; + case 0xffffec6b: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0xa0))(param_1,&local_c8,puVar8 + 4); +LAB_180026644: + if (-1 < iVar4) { + *puVar8 = 8; + } + goto switchD_180026056_default; + } + break; + case 0xffffec6c: + iVar4 = (**(code **)(*param_1 + 0x98))(param_1,puVar8); + goto switchD_180026056_default; + case 0xffffec6d: + iVar4 = (**(code **)(*param_1 + 0x90))(param_1,puVar8); + goto switchD_180026056_default; + case 0xffffec6e: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x88))(param_1,&local_c8,puVar8 + 4); + goto LAB_180026644; + } + break; + case 0xffffec6f: + if ((int)param_6[2] == 2) { + if ((((local_a8[0]->n1).n2.vt >> 0xe & 1) != 0) && ((*(byte *)&local_a8[0]->n1 & 0xc) == 0)) { + iVar4 = -0x7ffdfffb; +LAB_180026385: + *puVar14 = 0; + goto switchD_180026056_default; + } + if ((local_a8[0]->n1).n2.vt == 0x400c) { + VariantClear((VARIANTARG *)(local_a8[0]->n1).decVal.u2); + **(undefined2 **)((longlong)&local_a8[0]->n1 + 8) = 8; + puVar7 = (undefined1 *)((local_a8[0]->n1).decVal.u2.Lo64 + 8); + } + else if ((local_a8[0]->n1).n2.vt == 0x4008) { + puVar7 = (undefined1 *)(local_a8[0]->n1).decVal.u2.Lo64; + } + else { + VariantClear(local_a8[0]); + puVar7 = (undefined1 *)((longlong)&local_a8[0]->n1 + 8); + (local_a8[0]->n1).n2.vt = 8; + } + local_c8 = *(ULONGLONG *)&local_a8[1]->n1; + local_c0 = (local_a8[1]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[1]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x80))(param_1,puVar7,&local_c8,puVar8 + 4); + goto LAB_180026755; + } + break; + case 0xffffec70: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x78))(param_1,&local_c8,puVar8 + 4); + goto LAB_180026644; + } + break; + case 0xffffec71: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x70))(param_1,&local_c8,puVar8); + goto switchD_180026056_default; + } + break; + case 0xffffec72: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x68))(param_1,&local_c8,puVar8); + goto switchD_180026056_default; + } + break; + case 0xffffec73: + if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x60))(param_1,&local_c8,puVar8 + 4); + goto LAB_180026644; + } + break; + case 0xffffec74: + if ((param_5 & 2) == 0) { + if ((param_5 & 4) == 0) goto switchD_180026056_caseD_ffffec75; + if ((int)param_6[2] == 2) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + if ((local_a8[1]->n1).n2.vt != 8) { + iVar4 = VariantChangeType(&local_80,local_a8[1],0,3); + if (iVar4 < 0) goto LAB_1800266b4; + local_a8[1] = &local_80; + } + local_68 = local_c8; + local_60 = local_c0; + local_58 = local_b8; + iVar4 = (**(code **)(*param_1 + 0xd8))(param_1,&local_68,(local_a8[1]->n1).decVal.u2.Lo64); + goto switchD_180026056_default; + } + } + else if ((int)param_6[2] == 1) { + local_c8 = *(ULONGLONG *)&local_a8[0]->n1; + local_c0 = (local_a8[0]->n1).decVal.u2; + local_b8 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x58))(param_1,&local_c8,puVar8 + 4); + goto LAB_180026644; + } + break; + case 0xffffec75: +switchD_180026056_caseD_ffffec75: + if ((param_5 & 2) == 0) { + if ((param_5 & 4) == 0) goto switchD_180026056_caseD_ffffec76; + if ((int)param_6[2] == 2) { + local_68 = *(ULONGLONG *)&local_a8[0]->n1; + local_60 = (local_a8[0]->n1).decVal.u2; + local_58 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + if ((local_a8[1]->n1).n2.vt != 8) { + iVar4 = VariantChangeType(&local_80,local_a8[1],0,3); + if (iVar4 < 0) goto LAB_1800266b4; + local_a8[1] = &local_80; + } + local_c8 = local_68; + local_c0 = local_60; + local_b8 = local_58; + iVar4 = (**(code **)(*param_1 + 0xd0))(param_1,&local_c8,(local_a8[1]->n1).decVal.u2.Lo64); + goto switchD_180026056_default; + } + } + else if ((int)param_6[2] == 1) { + local_68 = *(ULONGLONG *)&local_a8[0]->n1; + local_60 = (local_a8[0]->n1).decVal.u2; + local_58 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x50))(param_1,&local_68,puVar8 + 4); + goto LAB_180026644; + } + break; + case 0xffffec76: +switchD_180026056_caseD_ffffec76: + if ((int)param_6[2] == 1) { + local_68 = *(ULONGLONG *)&local_a8[0]->n1; + local_60 = (local_a8[0]->n1).decVal.u2; + local_58 = *(ULONGLONG *)((longlong)&local_a8[0]->n1 + 0x10); + iVar4 = (**(code **)(*param_1 + 0x48))(param_1,&local_68,puVar8 + 4); + goto LAB_180026770; + } + break; + case 0xffffec77: + iVar4 = (**(code **)(*param_1 + 0x40))(param_1,puVar8 + 4); +LAB_180026755: + if (-1 < iVar4) { + *puVar8 = 3; + } + goto switchD_180026056_default; + case 0xffffec78: + iVar4 = (**(code **)(*param_1 + 0x38))(param_1,puVar8 + 4); +LAB_180026770: + if (-1 < iVar4) { + *puVar8 = 9; + } + default: + goto switchD_180026056_default; + } + iVar4 = -0x7ffdfff2; +switchD_180026056_default: + VariantClear(&local_80); + return iVar4; +} + + +================================================================== + +### EXPORT FUNC 1800267f0 (167 bytes) name=FUN_1800267f0 + +undefined8 +FUN_1800267f0(undefined8 param_1,undefined8 *param_2,uint param_3,undefined8 param_4, + undefined4 *param_5) + +{ + bool bVar1; + int iVar2; + uint uVar3; + undefined4 *puVar4; + undefined **ppuVar5; + longlong lVar6; + + uVar3 = 0; + if (param_3 != 0) { + do { + bVar1 = false; + puVar4 = &DAT_18006c940; + ppuVar5 = &PTR_u_accParent_18006c8a0; + lVar6 = 0x13; + do { + iVar2 = lstrcmpW((LPCWSTR)*param_2,(LPCWSTR)*ppuVar5); + if (iVar2 == 0) { + bVar1 = true; + *param_5 = *puVar4; + } + ppuVar5 = ppuVar5 + 1; + puVar4 = puVar4 + 1; + lVar6 = lVar6 + -1; + } while (lVar6 != 0); + if (!bVar1) { + return 0x80020006; + } + uVar3 = uVar3 + 1; + param_2 = param_2 + 1; + param_5 = param_5 + 1; + } while (uVar3 < param_3); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180026898 (121 bytes) name=CWnd + +/* Library Function - Single Match + private: __cdecl CWnd::CWnd(struct HWND__ * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +CWnd * __thiscall CWnd::CWnd(CWnd *this,HWND__ *param_1) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)this); + *(undefined ***)this = vftable; + *(undefined ***)(this + 0x60) = XAccessible::vftable; + *(undefined ***)(this + 0x68) = XAccessibleServer::vftable; + *(HWND__ **)(this + 0x40) = param_1; + this[0x48] = (CWnd)0x0; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined4 *)(this + 0x78) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined4 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0xa0) = 0; + return this; +} + + +================================================================== + +### EXPORT FUNC 180026914 (33 bytes) name=FUN_180026914 + +void FUN_180026914(longlong *param_1) + +{ + if (param_1[8] == 0) { + (**(code **)(*param_1 + 0x228))(); + } + else { + (**(code **)(*param_1 + 0xc0))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180026938 (137 bytes) name=FUN_180026938 + +void FUN_180026938(longlong *param_1,UINT param_2,WPARAM param_3,LPARAM param_4) + +{ + longlong *plVar1; + WNDPROC lpPrevWndFunc; + + lpPrevWndFunc = (WNDPROC)param_1[0x10]; + if (lpPrevWndFunc == (WNDPROC)0x0) { + plVar1 = (longlong *)(**(code **)(*param_1 + 0x1e0))(param_1); + lpPrevWndFunc = (WNDPROC)*plVar1; + if (lpPrevWndFunc == (WNDPROC)0x0) { + DefWindowProcW((HWND)param_1[8],param_2,param_3,param_4); + return; + } + } + CallWindowProcW(lpPrevWndFunc,(HWND)param_1[8],param_2,param_3,param_4); + return; +} + + +================================================================== + +### EXPORT FUNC 1800269c4 (8 bytes) name=FUN_1800269c4 + +longlong FUN_1800269c4(longlong param_1) + +{ + return param_1 + 0x80; +} + + +================================================================== + +### EXPORT FUNC 1800269cc (52 bytes) name=PreTranslateMessage + +/* Library Function - Single Match + public: virtual int __cdecl CWnd::PreTranslateMessage(struct tagMSG * __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +int __thiscall CWnd::PreTranslateMessage(CWnd *this,tagMSG *param_1) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + if (*(code **)(lVar1 + 0x60) != (code *)0x0) { + (**(code **)(lVar1 + 0x60))(param_1,this); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180026a00 (150 bytes) name=FUN_180026a00 + +ulonglong FUN_180026a00(longlong param_1,tagPOINT param_2,uint *param_3) + +{ + undefined8 uVar1; + int iVar2; + HWND__ *hWnd; + ulonglong uVar3; + ulonglong uVar4; + + hWnd = _AfxChildWindowFromPoint(*(HWND__ **)(param_1 + 0x40),param_2); + if (hWnd == (HWND__ *)0x0) { + uVar4 = 0xffffffffffffffff; + } + else { + iVar2 = GetDlgCtrlID(hWnd); + uVar4 = (ulonglong)(ushort)iVar2; + if ((param_3 != (uint *)0x0) && (0x37 < *param_3)) { + uVar1 = *(undefined8 *)(param_1 + 0x40); + param_3[1] = param_3[1] | 1; + param_3[0xc] = 0xffffffff; + param_3[0xd] = 0xffffffff; + *(undefined8 *)(param_3 + 2) = uVar1; + *(HWND__ **)(param_3 + 4) = hWnd; + uVar3 = SendMessageW(hWnd,0x87,0,0); + if ((uVar3 >> 0xd & 1) == 0) { + param_3[1] = param_3[1] | 0x80000002; + } + } + } + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 180026a98 (44 bytes) name=AfxFindMessageEntry + +/* Library Function - Single Match + struct AFX_MSGMAP_ENTRY const * __ptr64 __cdecl AfxFindMessageEntry(struct AFX_MSGMAP_ENTRY + const * __ptr64,unsigned int,unsigned int,unsigned int) + + Library: Visual Studio */ + +AFX_MSGMAP_ENTRY * __cdecl +AfxFindMessageEntry(AFX_MSGMAP_ENTRY *param_1,uint param_2,uint param_3,uint param_4) + +{ + while( true ) { + if (*(longlong *)(param_1 + 0x10) == 0) { + return (AFX_MSGMAP_ENTRY *)0x0; + } + if ((((*(uint *)param_1 == param_2) && (*(uint *)(param_1 + 4) == param_3)) && + (*(uint *)(param_1 + 8) <= param_4)) && (param_4 <= *(uint *)(param_1 + 0xc))) break; + param_1 = param_1 + 0x20; + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180026ac4 (108 bytes) name=WindowProc + +/* Library Function - Single Match + protected: virtual __int64 __cdecl CWnd::WindowProc(unsigned int,unsigned __int64,__int64) + __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +__int64 __thiscall CWnd::WindowProc(CWnd *this,uint param_1,__uint64 param_2,__int64 param_3) + +{ + int iVar1; + __int64 local_res8; + __int64 *p_Var2; + + local_res8 = 0; + p_Var2 = &local_res8; + iVar1 = (**(code **)(*(longlong *)this + 0x218))(this); + if (iVar1 == 0) { + local_res8 = (**(code **)(*(longlong *)this + 0x220))(this,param_1,param_2,param_3,p_Var2); + } + return local_res8; +} + + +================================================================== + +### EXPORT FUNC 180026b30 (40 bytes) name=CTestCmdUI + +/* Library Function - Single Match + public: __cdecl CTestCmdUI::CTestCmdUI(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +CTestCmdUI * __thiscall CTestCmdUI::CTestCmdUI(CTestCmdUI *this) + +{ + CCmdUI::CCmdUI((CCmdUI *)this); + *(undefined4 *)(this + 0x40) = 1; + *(undefined ***)this = vftable; + return this; +} + + +================================================================== + +### EXPORT FUNC 180026b58 (11 bytes) name=FUN_180026b58 + +void FUN_180026b58(longlong param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x40) = param_2; + *(undefined4 *)(param_1 + 0x28) = 1; + return; +} + + +================================================================== + +### EXPORT FUNC 180026b64 (3 bytes) name=FUN_180026b64 + +void FUN_180026b64(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 180026b68 (90 bytes) name=FUN_180026b68 + +void FUN_180026b68(CWnd *param_1,undefined8 param_2,int param_3) + +{ + ulong uVar1; + ulong uVar2; + + uVar1 = CWnd::GetExStyle(param_1); + if (param_3 == 0) { + uVar1 = uVar1 & 0xfffffdff; + } + uVar2 = CWnd::GetStyle(param_1); + /* WARNING: Could not recover jumptable at 0x000180026bbb. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AdjustWindowRectEx(param_2,uVar2,0,uVar1); + return; +} + + +================================================================== + +### EXPORT FUNC 180026bc4 (8 bytes) name=FUN_180026bc4 + +undefined ** FUN_180026bc4(void) + +{ + return &PTR_DAT_180055140; +} + + +================================================================== + +### EXPORT FUNC 180026bcc (47 bytes) name=GetIDsOfNames + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::GetIDsOfNames(struct _GUID const & + __ptr64,wchar_t * __ptr64 * __ptr64,unsigned int,unsigned long,long * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release */ + +long __thiscall +CWnd::XAccessible::GetIDsOfNames + (XAccessible *this,_GUID *param_1,wchar_t **param_2,uint param_3,ulong param_4, + long *param_5) + +{ + undefined8 uVar1; + + uVar1 = FUN_1800267f0(param_1,param_2,param_3,(ulonglong)param_4,param_5); + return (long)uVar1; +} + + +================================================================== + +### EXPORT FUNC 180026bfc (20 bytes) name=FUN_180026bfc + +undefined8 FUN_180026bfc(undefined8 param_1,undefined4 *param_2) + +{ + if (param_2 == (undefined4 *)0x0) { + return 0x80004003; + } + *param_2 = 1; + return 0; +} + + +================================================================== + +### EXPORT FUNC 180026c10 (21 bytes) name=FUN_180026c10 + +undefined8 FUN_180026c10(undefined8 param_1,undefined8 *param_2) + +{ + if (param_2 == (undefined8 *)0x0) { + return 0x80004003; + } + *param_2 = 0; + return 0x80004001; +} + + +================================================================== + +### EXPORT FUNC 180026c28 (46 bytes) name=EnsureStdObj + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::EnsureStdObj(void) __ptr64 + + Library: Visual Studio */ + +long __thiscall CWnd::EnsureStdObj(CWnd *this) + +{ + HRESULT HVar1; + + if ((*(void **)(this + 0x50) == (void *)0x0) && + (HVar1 = CreateStdAccessibleObject + (*(HWND *)(this + 0x40),-4,(IID *)&DAT_1800557f8,(void **)(this + 0x50)), + HVar1 < 0)) { + return HVar1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180026c58 (11 bytes) name=FUN_180026c58 + +void FUN_180026c58(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180026c5f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x50) + 0x38))(); + return; +} + + +================================================================== + +### EXPORT FUNC 180026c64 (5 bytes) name=thunk_FUN_180034a70 + +void thunk_FUN_180034a70(LPVOID param_1) + +{ + BOOL BVar1; + DWORD DVar2; + DWORD *pDVar3; + + if (param_1 != (LPVOID)0x0) { + BVar1 = HeapFree(DAT_180072ed8,0,param_1); + if (BVar1 == 0) { + pDVar3 = FUN_180035b40(); + DVar2 = GetLastError(); + DVar2 = FUN_180035af0(DVar2); + *pDVar3 = DVar2; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180026c6c (11 bytes) name=FUN_180026c6c + +void FUN_180026c6c(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180026c73. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x50) + 0x40))(); + return; +} + + +================================================================== + +### EXPORT FUNC 180026c78 (51 bytes) name=get_accChild + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accChild(struct tagVARIANT,struct IDispatch * __ptr64 * + __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accChild(CWnd *this,tagVARIANT *param_1,IDispatch **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x48))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026cac (51 bytes) name=get_accName + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accName(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accName(CWnd *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x50))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026ce0 (51 bytes) name=get_accValue + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accValue(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accValue(CWnd *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x58))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026d14 (51 bytes) name=get_accDescription + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accDescription(struct tagVARIANT,wchar_t * __ptr64 * + __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accDescription(CWnd *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x60))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026d48 (51 bytes) name=get_accRole + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accRole(struct tagVARIANT,struct tagVARIANT * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accRole(CWnd *this,tagVARIANT *param_1,tagVARIANT *param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x68))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026d7c (51 bytes) name=get_accState + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accState(struct tagVARIANT,struct tagVARIANT * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accState(CWnd *this,tagVARIANT *param_1,tagVARIANT *param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x70))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026db0 (51 bytes) name=get_accHelp + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accHelp(CWnd *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x78))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026de4 (54 bytes) name=get_accHelpTopic + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accHelpTopic(wchar_t * __ptr64 * __ptr64,struct + tagVARIANT,long * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +CWnd::get_accHelpTopic(CWnd *this,wchar_t **param_1,tagVARIANT *param_2,long *param_3) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x80)) + (*(longlong **)(this + 0x50),param_1,&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026e1c (54 bytes) name=get_accKeyboardShortcut + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accKeyboardShortcut(struct tagVARIANT,wchar_t * __ptr64 * + __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accKeyboardShortcut(CWnd *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0x88))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026e54 (14 bytes) name=FUN_180026e54 + +void FUN_180026e54(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180026e5b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x50) + 0x90))(); + return; +} + + +================================================================== + +### EXPORT FUNC 180026e64 (14 bytes) name=FUN_180026e64 + +void FUN_180026e64(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180026e6b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x50) + 0x98))(); + return; +} + + +================================================================== + +### EXPORT FUNC 180026e74 (54 bytes) name=get_accDefaultAction + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::get_accDefaultAction(struct tagVARIANT,wchar_t * __ptr64 * + __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::get_accDefaultAction(CWnd *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0xa0))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026eac (54 bytes) name=accSelect + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::accSelect(long,struct tagVARIANT) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::accSelect(CWnd *this,long param_1,tagVARIANT *param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0xa8)) + (*(longlong **)(this + 0x50),param_1,&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026ee4 (81 bytes) name=accLocation + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::accLocation(long * __ptr64,long * __ptr64,long * __ptr64,long + * __ptr64,struct tagVARIANT) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +CWnd::accLocation(CWnd *this,long *param_1,long *param_2,long *param_3,long *param_4, + tagVARIANT *param_5) + +{ + long lVar1; + + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0xb0))(); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026f38 (54 bytes) name=accNavigate + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::accNavigate(long,struct tagVARIANT,struct tagVARIANT * + __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::accNavigate(CWnd *this,long param_1,tagVARIANT *param_2,tagVARIANT *param_3) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 0xb8)) + (*(longlong **)(this + 0x50),param_1,&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026f70 (14 bytes) name=FUN_180026f70 + +void FUN_180026f70(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180026f77. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x50) + 0xc0))(); + return; +} + + +================================================================== + +### EXPORT FUNC 180026f80 (54 bytes) name=accDoDefaultAction + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::accDoDefaultAction(struct tagVARIANT) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall CWnd::accDoDefaultAction(CWnd *this,tagVARIANT *param_1) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x50) + 200))(*(longlong **)(this + 0x50),&local_28); + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180026fb8 (54 bytes) name=FUN_180026fb8 + +void FUN_180026fb8(longlong param_1,undefined8 *param_2) + +{ + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + (**(code **)(**(longlong **)(param_1 + 0x50) + 0xd0))(*(longlong **)(param_1 + 0x50),&local_28); + return; +} + + +================================================================== + +### EXPORT FUNC 180026ff0 (7 bytes) name=FUN_180026ff0 + +undefined8 FUN_180026ff0(longlong param_1,undefined8 param_2) + +{ + *(undefined8 *)(param_1 + 0x58) = param_2; + return 0; +} + + +================================================================== + +### EXPORT FUNC 180026ff8 (49 bytes) name=PreTranslateInput + +/* Library Function - Single Match + public: int __cdecl CWnd::PreTranslateInput(struct tagMSG * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CWnd::PreTranslateInput(CWnd *this,tagMSG *param_1) + +{ + uint uVar1; + BOOL BVar2; + + uVar1 = param_1->message; + if (((uVar1 < 0x100) || (0x109 < uVar1)) && ((uVar1 < 0x200 || (0x209 < uVar1)))) { + BVar2 = 0; + } + else { + BVar2 = FID_conflict_IsDialogMessageW((HWND)this,param_1); + } + return BVar2; +} + + +================================================================== + +### EXPORT FUNC 18002702c (7 bytes) name=FUN_18002702c + +uint FUN_18002702c(longlong param_1) + +{ + return *(uint *)(param_1 + 0x78) & 0x10; +} + + +================================================================== + +### EXPORT FUNC 180027034 (34 bytes) name=FUN_180027034 + +undefined8 FUN_180027034(longlong param_1) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = *(int *)(param_1 + 0x128); + uVar2 = 0; + if (((iVar1 != 0) && (iVar1 != 0xe002)) && (iVar1 != 0xe001)) { + uVar2 = 1; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180027058 (28 bytes) name=FUN_180027058 + +undefined8 FUN_180027058(undefined8 param_1,undefined8 *param_2) + +{ + if (param_2 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *param_2 = 0; + return 1; +} + + +================================================================== + +### EXPORT FUNC 180027078 (28 bytes) name=FUN_180027078 + +undefined8 FUN_180027078(undefined8 param_1,undefined8 param_2,undefined8 *param_3) + +{ + if (param_3 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *param_3 = 0; + return 1; +} + + +================================================================== + +### EXPORT FUNC 180027098 (8 bytes) name=FUN_180027098 + +undefined ** FUN_180027098(void) + +{ + return &PTR_DAT_180055150; +} + + +================================================================== + +### EXPORT FUNC 1800270ac (151 bytes) name=FUN_1800270ac + +undefined1 FUN_1800270ac(WNDCLASSW *param_1) + +{ + undefined2 uVar1; + undefined1 extraout_AL; + undefined1 uVar2; + undefined1 extraout_AL_00; + undefined1 extraout_AH; + undefined1 extraout_AH_00; + undefined2 extraout_var; + undefined2 extraout_var_00; + DWORD dwErrCode; + undefined4 extraout_var_01; + undefined8 local_res18; + ATOM AVar3; + + local_res18 = 0; + FUN_180022bb4(); + uVar2 = FUN_180021f24(*(undefined8 *) + (CONCAT44(extraout_var_01, + CONCAT22(extraout_var,CONCAT11(extraout_AH,extraout_AL))) + 0xd8) + ,(longlong)&local_res18); + uVar1 = CONCAT11(extraout_AH_00,uVar2); + if ((CONCAT22(extraout_var_00,CONCAT11(extraout_AH_00,uVar2)) & + CONCAT22(extraout_var_00,CONCAT11(extraout_AH_00,uVar2))) != 0) { + AVar3 = RegisterClassW(param_1); + extraout_AL_00 = (undefined1)AVar3; + uVar2 = extraout_AL_00; + if (CONCAT22(extraout_var_00,uVar1) != 2) { + if (AVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (AVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18002714c (73 bytes) name=FUN_18002714c + +void FUN_18002714c(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x48) != 2) { + bVar1 = *(short *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180027198 (169 bytes) name=FID_conflict:AfxCtxGetClassInfoW + +/* Library Function - Multiple Matches With Different Base Names + int __cdecl AfxCtxGetClassInfoA(struct HINSTANCE__ * __ptr64,char const * __ptr64,struct + tagWNDCLASSA * __ptr64) + int __cdecl AfxCtxGetClassInfoExA(struct HINSTANCE__ * __ptr64,char const * __ptr64,struct + tagWNDCLASSEXA * __ptr64) + int __cdecl AfxCtxGetClassInfoExW(struct HINSTANCE__ * __ptr64,wchar_t const * __ptr64,struct + tagWNDCLASSEXW * __ptr64) + int __cdecl AfxCtxGetClassInfoW(struct HINSTANCE__ * __ptr64,wchar_t const * __ptr64,struct + tagWNDCLASSW * __ptr64) + + Library: Visual Studio 2008 Release */ + +ulonglong FID_conflict_AfxCtxGetClassInfoW(HINSTANCE param_1,LPCWSTR param_2,LPWNDCLASSW param_3) + +{ + undefined1 uVar1; + int iVar2; + uint uVar3; + DWORD dwErrCode; + longlong lVar4; + undefined7 extraout_var; + undefined8 local_10; + ulonglong uVar5; + + local_10 = 0; + lVar4 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar4 + 0xd8),(longlong)&local_10); + uVar5 = CONCAT71(extraout_var,uVar1); + iVar2 = (int)uVar5; + if (iVar2 != 0) { + uVar3 = GetClassInfoW(param_1,param_2,param_3); + uVar5 = (ulonglong)uVar3; + if (iVar2 != 2) { + if (uVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (uVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180027248 (72 bytes) name=FUN_180027248 + +void FUN_180027248(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x58) != 2) { + bVar1 = *(int *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180027290 (169 bytes) name=FID_conflict:AfxCtxGetClassInfoW + +/* Library Function - Multiple Matches With Different Base Names + int __cdecl AfxCtxGetClassInfoA(struct HINSTANCE__ * __ptr64,char const * __ptr64,struct + tagWNDCLASSA * __ptr64) + int __cdecl AfxCtxGetClassInfoExA(struct HINSTANCE__ * __ptr64,char const * __ptr64,struct + tagWNDCLASSEXA * __ptr64) + int __cdecl AfxCtxGetClassInfoExW(struct HINSTANCE__ * __ptr64,wchar_t const * __ptr64,struct + tagWNDCLASSEXW * __ptr64) + int __cdecl AfxCtxGetClassInfoW(struct HINSTANCE__ * __ptr64,wchar_t const * __ptr64,struct + tagWNDCLASSW * __ptr64) + + Library: Visual Studio 2008 Release */ + +ulonglong FID_conflict_AfxCtxGetClassInfoW(HINSTANCE param_1,LPCWSTR param_2,LPWNDCLASSEXW param_3) + +{ + undefined1 uVar1; + int iVar2; + uint uVar3; + DWORD dwErrCode; + longlong lVar4; + undefined7 extraout_var; + undefined8 local_10; + ulonglong uVar5; + + local_10 = 0; + lVar4 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar4 + 0xd8),(longlong)&local_10); + uVar5 = CONCAT71(extraout_var,uVar1); + iVar2 = (int)uVar5; + if (iVar2 != 0) { + uVar3 = GetClassInfoExW(param_1,param_2,param_3); + uVar5 = (ulonglong)uVar3; + if (iVar2 != 2) { + if (uVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (uVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180027340 (72 bytes) name=FUN_180027340 + +void FUN_180027340(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x58) != 2) { + bVar1 = *(int *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180027388 (298 bytes) name=FID_conflict:AfxCtxCreateWindowExA + +/* Library Function - Multiple Matches With Different Base Names + struct HWND__ * __ptr64 __cdecl AfxCtxCreateWindowExA(unsigned long,char const * __ptr64,char + const * __ptr64,unsigned long,int,int,int,int,struct HWND__ * __ptr64,struct HMENU__ * + __ptr64,struct HINSTANCE__ * __ptr64,void * __ptr64) + struct HWND__ * __ptr64 __cdecl AfxCtxCreateWindowExW(unsigned long,wchar_t const * + __ptr64,wchar_t const * __ptr64,unsigned long,int,int,int,int,struct HWND__ * __ptr64,struct + HMENU__ * __ptr64,struct HINSTANCE__ * __ptr64,void * __ptr64) + + Library: Visual Studio 2008 Release */ + +HWND FID_conflict_AfxCtxCreateWindowExA + (DWORD param_1,LPCWSTR param_2,LPCWSTR param_3,DWORD param_4,int param_5,int param_6, + int param_7,int param_8,HWND param_9,HMENU param_10,HINSTANCE param_11, + LPVOID param_12) + +{ + undefined1 uVar1; + int iVar2; + DWORD dwErrCode; + longlong lVar3; + undefined7 extraout_var; + HWND pHVar4; + undefined8 local_20; + HWND local_18; + + local_20 = 0; + lVar3 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar3 + 0xd8),(longlong)&local_20); + iVar2 = (int)CONCAT71(extraout_var,uVar1); + local_18 = (HWND)0x0; + if (iVar2 == 0) { + pHVar4 = (HWND)0x0; + } + else { + pHVar4 = CreateWindowExW(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9 + ,param_10,param_11,param_12); + if (iVar2 != 2) { + local_18 = pHVar4; + if (pHVar4 != (HWND)0x0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (pHVar4 == (HWND)0x0) { + SetLastError(dwErrCode); + } + } + } + return pHVar4; +} + + +================================================================== + +### EXPORT FUNC 1800274b8 (73 bytes) name=FUN_1800274b8 + +void FUN_1800274b8(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x60) != 2) { + bVar1 = *(longlong *)(param_2 + 0x70) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180027504 (155 bytes) name=FID_conflict:AfxCtxLoadLibraryA + +/* Library Function - Multiple Matches With Different Base Names + struct HINSTANCE__ * __ptr64 __cdecl AfxCtxLoadLibraryA(char const * __ptr64) + struct HINSTANCE__ * __ptr64 __cdecl AfxCtxLoadLibraryW(wchar_t const * __ptr64) + + Library: Visual Studio 2008 Release */ + +HMODULE FID_conflict_AfxCtxLoadLibraryA(LPCSTR param_1) + +{ + undefined1 uVar1; + int iVar2; + DWORD dwErrCode; + longlong lVar3; + undefined7 extraout_var; + HMODULE pHVar4; + undefined8 local_res18; + + local_res18 = 0; + lVar3 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar3 + 0xd8),(longlong)&local_res18); + iVar2 = (int)CONCAT71(extraout_var,uVar1); + if (iVar2 == 0) { + pHVar4 = (HMODULE)0x0; + } + else { + pHVar4 = LoadLibraryA(param_1); + if (iVar2 != 2) { + if (pHVar4 != (HMODULE)0x0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (pHVar4 == (HMODULE)0x0) { + SetLastError(dwErrCode); + } + } + } + return pHVar4; +} + + +================================================================== + +### EXPORT FUNC 1800275a4 (73 bytes) name=FUN_1800275a4 + +void FUN_1800275a4(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x48) != 2) { + bVar1 = *(longlong *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800275f0 (25 bytes) name=FUN_1800275f0 + +void FUN_1800275f0(longlong param_1) + +{ + if (*(int *)(param_1 + 8) != 0) { + FUN_180021f08(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002760c (113 bytes) name=CWnd + +/* Library Function - Single Match + public: __cdecl CWnd::CWnd(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +CWnd * __thiscall CWnd::CWnd(CWnd *this) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)this); + *(undefined ***)this = vftable; + *(undefined ***)(this + 0x60) = XAccessible::vftable; + *(undefined ***)(this + 0x68) = XAccessibleServer::vftable; + *(undefined8 *)(this + 0x40) = 0; + this[0x48] = (CWnd)0x0; + *(undefined8 *)(this + 0x58) = 0; + *(undefined8 *)(this + 0x50) = 0; + *(undefined8 *)(this + 0x70) = 0; + *(undefined4 *)(this + 0x78) = 0; + *(undefined8 *)(this + 0x80) = 0; + *(undefined4 *)(this + 0x88) = 0; + *(undefined8 *)(this + 0x90) = 0; + *(undefined8 *)(this + 0x98) = 0; + *(undefined8 *)(this + 0xa0) = 0; + return this; +} + + +================================================================== + +### EXPORT FUNC 180027680 (47 bytes) name=_AfxPreInitDialog + +/* Library Function - Single Match + void __cdecl _AfxPreInitDialog(class CWnd * __ptr64,struct tagRECT * __ptr64,unsigned long * + __ptr64) + + Library: Visual Studio 2008 Release */ + +void __cdecl _AfxPreInitDialog(CWnd *param_1,tagRECT *param_2,ulong *param_3) + +{ + ulong uVar1; + + GetWindowRect(*(HWND *)(param_1 + 0x40),param_2); + uVar1 = CWnd::GetStyle(param_1); + *param_3 = uVar1; + return; +} + + +================================================================== + +### EXPORT FUNC 1800276b0 (193 bytes) name=FUN_1800276b0 + +void FUN_1800276b0(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4, + undefined4 param_5,int *param_6,longlong param_7,undefined4 param_8, + undefined8 param_9) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (param_7 != 0) { + uVar1 = *(undefined8 *)(param_7 + 0x40); + } + (**(code **)(*param_1 + 0xb8)) + (param_1,param_2,param_3,param_4,param_5,*param_6,param_6[1],param_6[2] - *param_6, + param_6[3] - param_6[1],uVar1,param_8,param_9); + return; +} + + +================================================================== + +### EXPORT FUNC 180027774 (189 bytes) name=FUN_180027774 + +void FUN_180027774(longlong *param_1,undefined8 param_2,undefined8 param_3,uint param_4,int *param_5 + ,longlong param_6,undefined4 param_7,undefined8 param_8) + +{ + undefined8 uVar1; + + uVar1 = 0; + if (param_6 != 0) { + uVar1 = *(undefined8 *)(param_6 + 0x40); + } + (**(code **)(*param_1 + 0xb8)) + (param_1,0,param_2,param_3,param_4 | 0x40000000,*param_5,param_5[1], + param_5[2] - *param_5,param_5[3] - param_5[1],uVar1,param_7,param_8); + return; +} + + +================================================================== + +### EXPORT FUNC 180027834 (114 bytes) name=FUN_180027834 + +void FUN_180027834(int param_1) + +{ + HWND hWnd; + longlong *plVar1; + SHORT SVar2; + longlong lVar3; + + lVar3 = FUN_180022c04(); + if ((*(longlong *)(lVar3 + 0x78) != 0) && + (hWnd = *(HWND *)(*(longlong *)(lVar3 + 0x78) + 0x40), hWnd != (HWND)0x0)) { + SendMessageW(hWnd,0x401,0,0); + } + plVar1 = *(longlong **)(lVar3 + 0xa0); + if ((param_1 != 0) && (plVar1 != (longlong *)0x0)) { + SVar2 = GetKeyState(1); + if (-1 < SVar2) { + (**(code **)(*plVar1 + 0x2d0))(plVar1,0xffffffffffffffff); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800278a8 (158 bytes) name=FUN_1800278a8 + +CMenu * FUN_1800278a8(longlong param_1,uint param_2) + +{ + int iVar1; + UINT UVar2; + HMENU pHVar3; + longlong lVar4; + CMenu *pCVar5; + int nPos; + + if (param_1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + iVar1 = GetMenuItemCount(*(HMENU *)(param_1 + 8)); + nPos = 0; + if (0 < iVar1) { + do { + pHVar3 = GetSubMenu(*(HMENU *)(param_1 + 8),nPos); + lVar4 = FromHandle(pHVar3); + if (lVar4 == 0) { + UVar2 = GetMenuItemID(*(HMENU *)(param_1 + 8),nPos); + if (UVar2 == param_2) goto LAB_18002793c; + } + else { + if (*(ulonglong *)(lVar4 + 8) == (ulonglong)param_2) { +LAB_18002793c: + pCVar5 = CMenu::FromHandlePermanent(*(HMENU__ **)(param_1 + 8)); + return pCVar5; + } + pCVar5 = FUN_1800278a8(lVar4,param_2); + if (pCVar5 != (CMenu *)0x0) { + return pCVar5; + } + } + nPos = nPos + 1; + } while (nPos < iVar1); + } + return (CMenu *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180027948 (34 bytes) name=FUN_180027948 + +void FUN_180027948(undefined8 *param_1) + +{ + *param_1 = _AFX_HTMLHELP_STATE::vftable; + if ((HMODULE)param_1[1] != (HMODULE)0x0) { + FreeLibrary((HMODULE)param_1[1]); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002796c (47 bytes) name=FUN_18002796c + +undefined8 * FUN_18002796c(undefined8 *param_1,uint param_2) + +{ + FUN_180027948(param_1); + if ((param_2 & 1) != 0) { + FUN_180022ca8(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002799c (129 bytes) name=WinHelpInternal + +/* Library Function - Single Match + public: virtual void __cdecl CWnd::WinHelpInternal(unsigned __int64,unsigned int) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall CWnd::WinHelpInternal(CWnd *this,__uint64 param_1,uint param_2) + +{ + longlong lVar1; + uint uVar2; + + lVar1 = FUN_180022bb4(); + if (*(int *)(*(longlong *)(lVar1 + 8) + 0xd8) == 1) { + if (param_2 == 1) { + uVar2 = 0xf; + } + else { + uVar2 = 1; + if ((param_2 != 3) && (uVar2 = param_2, param_2 == 0xb)) { + uVar2 = 0; + } + } + (**(code **)(*(longlong *)this + 0xf0))(this,param_1,uVar2); + } + else { + (**(code **)(*(longlong *)this + 0xe8))(this,param_1,param_2); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180027a20 (50 bytes) name=OnActivateTopLevel + +/* Library Function - Single Match + protected: __int64 __cdecl CWnd::OnActivateTopLevel(unsigned __int64,__int64) __ptr64 + + Library: Visual Studio 2005 Release */ + +__int64 __thiscall CWnd::OnActivateTopLevel(CWnd *this,__uint64 param_1,__int64 param_2) + +{ + longlong lVar1; + + if ((short)param_1 == 0) { + lVar1 = FUN_180022c04(); + if ((*(longlong *)(lVar1 + 0x90) != 0) && + ((*(uint *)(*(longlong *)(lVar1 + 0x90) + 4) >> 0x1e & 1) == 0)) { + FUN_180027834(1); + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180027a54 (71 bytes) name=AddRef + +/* Library Function - Single Match + public: virtual unsigned long __cdecl CWnd::XAccessible::AddRef(void) __ptr64 + + Library: Visual Studio 2005 Release */ + +ulong __thiscall CWnd::XAccessible::AddRef(XAccessible *this) + +{ + ulong uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x28)); + uVar1 = CCmdTarget::ExternalAddRef((CCmdTarget *)(this + -0x60)); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027aa4 (24 bytes) name=Unwind@180027aa4 + +void Unwind_180027aa4(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027abc (71 bytes) name=Release + +/* Library Function - Single Match + public: virtual unsigned long __cdecl CWnd::XAccessible::Release(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +ulong __thiscall CWnd::XAccessible::Release(XAccessible *this) + +{ + ulong uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x28)); + uVar1 = CCmdTarget::ExternalRelease((CCmdTarget *)(this + -0x60)); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027b0c (24 bytes) name=Unwind@180027b0c + +void Unwind_180027b0c(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027b24 (103 bytes) name=QueryInterface + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::QueryInterface(struct _GUID const & __ptr64,void + * __ptr64 * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall CWnd::XAccessible::QueryInterface(XAccessible *this,_GUID *param_1,void **param_2) + +{ + ulong uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x28)); + uVar1 = CCmdTarget::ExternalQueryInterface((CCmdTarget *)(this + -0x60),param_1,param_2); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027b94 (24 bytes) name=Unwind@180027b94 + +void Unwind_180027b94(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027bac (180 bytes) name=Invoke + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::Invoke(long,struct _GUID const & + __ptr64,unsigned long,unsigned short,struct tagDISPPARAMS * __ptr64,struct tagVARIANT * + __ptr64,struct tagEXCEPINFO * __ptr64,unsigned int * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::XAccessible::Invoke + (XAccessible *this,long param_1,_GUID *param_2,ulong param_3,ushort param_4, + tagDISPPARAMS *param_5,tagVARIANT *param_6,tagEXCEPINFO *param_7,uint *param_8) + +{ + HRESULT HVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x28)); + HVar1 = FUN_180025f2c((longlong *)this,param_1,param_2,(ulonglong)param_3,param_4, + (longlong *)param_5,(undefined2 *)param_6,param_7,param_8); + if (local_18 != 0) { + FUN_180021f08(); + } + return HVar1; +} + + +================================================================== + +### EXPORT FUNC 180027c6c (24 bytes) name=Unwind@180027c6c + +void Unwind_180027c6c(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x58); + return; +} + + +================================================================== + +### EXPORT FUNC 180027c84 (91 bytes) name=FUN_180027c84 + +undefined4 FUN_180027c84(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x118)) + ((longlong *)(param_1 + -0x60),param_2); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027ce4 (24 bytes) name=Unwind@180027ce4 + +void Unwind_180027ce4(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027cfc (91 bytes) name=FUN_180027cfc + +undefined4 FUN_180027cfc(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x120)) + ((longlong *)(param_1 + -0x60),param_2); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027d5c (24 bytes) name=Unwind@180027d5c + +void Unwind_180027d5c(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027d74 (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x128)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027e04 (24 bytes) name=Unwind@180027e04 + +void Unwind_180027e04(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027e1c (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x130)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027eac (24 bytes) name=Unwind@180027eac + +void Unwind_180027eac(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027ec4 (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x138)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027f54 (24 bytes) name=Unwind@180027f54 + +void Unwind_180027f54(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180027f6c (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x140)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180027ffc (24 bytes) name=Unwind@180027ffc + +void Unwind_180027ffc(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028014 (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x148)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800280a4 (24 bytes) name=Unwind@1800280a4 + +void Unwind_1800280a4(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 1800280bc (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x150)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002814c (24 bytes) name=Unwind@18002814c + +void Unwind_18002814c(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028164 (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x158)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800281f4 (24 bytes) name=Unwind@1800281f4 + +void Unwind_1800281f4(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 18002820c (151 bytes) name=get_accHelpTopic + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::get_accHelpTopic(wchar_t * __ptr64 * + __ptr64,struct tagVARIANT,long * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::XAccessible::get_accHelpTopic + (XAccessible *this,wchar_t **param_1,tagVARIANT *param_2,long *param_3) + +{ + long lVar1; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(this + -0x28)); + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(*(longlong *)(this + -0x60) + 0x160)) + (this + -0x60,param_1,&local_28,param_3,uVar2); + if (local_38 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 1800282ac (24 bytes) name=Unwind@1800282ac + +void Unwind_1800282ac(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 1800282c4 (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x168)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180028354 (24 bytes) name=Unwind@180028354 + +void Unwind_180028354(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 18002836c (91 bytes) name=FUN_18002836c + +undefined4 FUN_18002836c(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x170)) + ((longlong *)(param_1 + -0x60),param_2); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800283cc (24 bytes) name=Unwind@1800283cc + +void Unwind_1800283cc(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 1800283e4 (91 bytes) name=FUN_1800283e4 + +undefined4 FUN_1800283e4(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x178)) + ((longlong *)(param_1 + -0x60),param_2); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180028444 (24 bytes) name=Unwind@180028444 + +void Unwind_180028444(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 18002845c (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x180)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800284ec (24 bytes) name=Unwind@1800284ec + +void Unwind_1800284ec(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028504 (134 bytes) name=accSelect + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::accSelect(long,struct tagVARIANT) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall CWnd::XAccessible::accSelect(XAccessible *this,long param_1,tagVARIANT *param_2) + +{ + long lVar1; + undefined8 in_R9; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(this + -0x28)); + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(*(longlong *)(this + -0x60) + 0x188)) + (this + -0x60,param_1,&local_28,in_R9,uVar2); + if (local_38 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180028594 (24 bytes) name=Unwind@180028594 + +void Unwind_180028594(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 1800285ac (181 bytes) name=accLocation + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::accLocation(long * __ptr64,long * __ptr64,long * + __ptr64,long * __ptr64,struct tagVARIANT) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::XAccessible::accLocation + (XAccessible *this,long *param_1,long *param_2,long *param_3,long *param_4, + tagVARIANT *param_5) + +{ + long lVar1; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(this + -0x28)); + local_28 = *(undefined8 *)¶m_5->n1; + local_20 = (param_5->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_5->n1 + 0x10); + lVar1 = (**(code **)(*(longlong *)(this + -0x60) + 400)) + (this + -0x60,param_1,param_2,param_3,param_4,&local_28,uVar2); + if (local_38 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002866c (24 bytes) name=Unwind@18002866c + +void Unwind_18002866c(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x38); + return; +} + + +================================================================== + +### EXPORT FUNC 180028684 (149 bytes) name=accNavigate + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::accNavigate(long,struct tagVARIANT,struct + tagVARIANT * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::XAccessible::accNavigate + (XAccessible *this,long param_1,tagVARIANT *param_2,tagVARIANT *param_3) + +{ + long lVar1; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(this + -0x28)); + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(*(longlong *)(this + -0x60) + 0x198)) + (this + -0x60,param_1,&local_28,param_3,uVar2); + if (local_38 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180028724 (24 bytes) name=Unwind@180028724 + +void Unwind_180028724(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 18002873c (119 bytes) name=accHitTest + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::accHitTest(long,long,struct tagVARIANT * + __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::XAccessible::accHitTest(XAccessible *this,long param_1,long param_2,tagVARIANT *param_3) + +{ + long lVar1; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x28)); + lVar1 = (**(code **)(*(longlong *)(this + -0x60) + 0x1a0)) + (this + -0x60,param_1,param_2,param_3,uVar2); + if (local_18 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 1800287bc (24 bytes) name=Unwind@1800287bc + +void Unwind_1800287bc(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 1800287d4 (120 bytes) name=accDoDefaultAction + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessible::accDoDefaultAction(struct tagVARIANT) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall CWnd::XAccessible::accDoDefaultAction(XAccessible *this,tagVARIANT *param_1) + +{ + long lVar1; + undefined8 in_R8; + undefined8 in_R9; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(this + -0x28)); + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(*(longlong *)(this + -0x60) + 0x1a8)) + (this + -0x60,&local_28,in_R8,in_R9,uVar2); + if (local_38 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180028854 (24 bytes) name=Unwind@180028854 + +void Unwind_180028854(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 18002886c (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x1b0)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800288fc (24 bytes) name=Unwind@1800288fc + +void Unwind_1800288fc(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028914 (136 bytes) name=FID_conflict:put_accValue + +/* Library Function - Multiple Matches With Different Base Names + public: virtual long __cdecl CWnd::XAccessible::get_accChild(struct tagVARIANT,struct IDispatch + * __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDefaultAction(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accDescription(struct tagVARIANT,wchar_t * + __ptr64 * __ptr64) __ptr64 + public: virtual long __cdecl CWnd::XAccessible::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 + * __ptr64) __ptr64 + 11 names - too many to list + + Library: Visual Studio 2008 Release */ + +undefined4 +FID_conflict_put_accValue + (longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined4 uVar1; + AFX_MAINTAIN_STATE2 local_40 [8]; + int local_38; + undefined8 local_28; + undefined8 local_20; + undefined8 local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_40,*(AFX_MODULE_STATE **)(param_1 + -0x28)); + local_28 = *param_2; + local_20 = param_2[1]; + local_18 = param_2[2]; + uVar1 = (**(code **)(*(longlong *)(param_1 + -0x60) + 0x1b8)) + ((longlong *)(param_1 + -0x60),&local_28,param_3); + if (local_38 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800289a4 (24 bytes) name=Unwind@1800289a4 + +void Unwind_1800289a4(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 1800289bc (71 bytes) name=AddRef + +/* Library Function - Single Match + public: virtual unsigned long __cdecl CWnd::XAccessibleServer::AddRef(void) __ptr64 + + Library: Visual Studio 2005 Release */ + +ulong __thiscall CWnd::XAccessibleServer::AddRef(XAccessibleServer *this) + +{ + ulong uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x30)); + uVar1 = CCmdTarget::ExternalAddRef((CCmdTarget *)(this + -0x68)); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180028a0c (24 bytes) name=Unwind@180028a0c + +void Unwind_180028a0c(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028a24 (71 bytes) name=Release + +/* Library Function - Single Match + public: virtual unsigned long __cdecl CWnd::XAccessibleServer::Release(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +ulong __thiscall CWnd::XAccessibleServer::Release(XAccessibleServer *this) + +{ + ulong uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x30)); + uVar1 = CCmdTarget::ExternalRelease((CCmdTarget *)(this + -0x68)); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180028a74 (24 bytes) name=Unwind@180028a74 + +void Unwind_180028a74(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028a8c (103 bytes) name=QueryInterface + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessibleServer::QueryInterface(struct _GUID const & + __ptr64,void * __ptr64 * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::XAccessibleServer::QueryInterface(XAccessibleServer *this,_GUID *param_1,void **param_2) + +{ + ulong uVar1; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x30)); + uVar1 = CCmdTarget::ExternalQueryInterface((CCmdTarget *)(this + -0x68),param_1,param_2); + if (local_18 != 0) { + FUN_180021f08(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180028afc (24 bytes) name=Unwind@180028afc + +void Unwind_180028afc(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028b14 (91 bytes) name=SetProxy + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::XAccessibleServer::SetProxy(struct IAccessibleProxy * + __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall CWnd::XAccessibleServer::SetProxy(XAccessibleServer *this,IAccessibleProxy *param_1) + +{ + long lVar1; + undefined8 in_R8; + undefined8 in_R9; + undefined8 uVar2; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + uVar2 = 0xfffffffffffffffe; + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + -0x30)); + lVar1 = (**(code **)(*(longlong *)(this + -0x68) + 0x1c0))(this + -0x68,param_1,in_R8,in_R9,uVar2) + ; + if (local_18 != 0) { + FUN_180021f08(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 180028b74 (24 bytes) name=Unwind@180028b74 + +void Unwind_180028b74(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180028b8c (81 bytes) name=FUN_180028b8c + +undefined8 FUN_180028b8c(longlong param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + AFX_MAINTAIN_STATE2 local_18 [8]; + int local_10; + + if (param_2 == (undefined8 *)0x0) { + uVar1 = 0x80004003; + } + else { + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_18,*(AFX_MODULE_STATE **)(param_1 + -0x30)); + *param_2 = *(undefined8 *)(param_1 + -0x28); + if (local_10 != 0) { + FUN_180021f08(); + } + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180028be0 (23 bytes) name=FUN_180028be0 + +void FUN_180028be0(longlong *param_1) + +{ + if ((longlong *)*param_1 != (longlong *)0x0) { + (**(code **)(*(longlong *)*param_1 + 0x10))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180028bf8 (131 bytes) name=UpdateData + +/* Library Function - Single Match + public: int __cdecl CWnd::UpdateData(int) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +int __thiscall CWnd::UpdateData(CWnd *this,int param_1) + +{ + undefined8 uVar1; + longlong lVar2; + undefined8 in_R9; + undefined8 uVar3; + int local_28 [2]; + CWnd *local_20; + undefined4 local_18; + + uVar3 = 0xfffffffffffffffe; + local_18 = 0; + local_28[0] = param_1; + local_20 = this; + lVar2 = FUN_1800222f4(); + uVar1 = *(undefined8 *)(lVar2 + 0x198); + *(undefined8 *)(lVar2 + 0x198) = *(undefined8 *)(this + 0x40); + (**(code **)(*(longlong *)this + 0x1e8))(this,local_28,*(longlong *)this,in_R9,uVar3); + *(undefined8 *)(lVar2 + 0x198) = uVar1; + return 1; +} + + +================================================================== + +### EXPORT FUNC 180028c88 (28 bytes) name=Catch@180028c88 + +undefined * Catch_180028c88(void) + +{ + return &DAT_180028c60; +} + + +================================================================== + +### EXPORT FUNC 180028ca8 (63 bytes) name=Catch@180028ca8 + +/* Library Function - Single Match + int `public: int __cdecl CWnd::UpdateData(int) __ptr64'::`1'::catch$1 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +undefined * Catch_180028ca8(undefined8 param_1,longlong param_2) + +{ + longlong *plVar1; + + plVar1 = *(longlong **)(param_2 + 0x28); + (**(code **)(*plVar1 + 0x28))(plVar1,0x30,0xf108); + FUN_18001ec74(plVar1); + return &DAT_180028c67; +} + + +================================================================== + +### EXPORT FUNC 180028ce8 (603 bytes) name=FUN_180028ce8 + +void FUN_180028ce8(CWnd *param_1,longlong param_2) + +{ + ulong uVar1; + uint uVar2; + HWND pHVar3; + longlong *plVar4; + HWND pHVar5; + longlong lVar6; + HWND pHVar7; + int iVar8; + int iVar9; + tagRECT local_68; + tagRECT local_58; + tagRECT local_48; + uint local_38 [5]; + RECT local_24; + + uVar1 = CWnd::GetStyle(param_1); + pHVar7 = (HWND)0x0; + if (param_2 == 0) { + if ((uVar1 >> 0x1e & 1) == 0) { + pHVar5 = GetWindow(*(HWND *)(param_1 + 0x40),4); + } + else { + pHVar5 = GetParent(*(HWND *)(param_1 + 0x40)); + } + if ((pHVar5 != (HWND)0x0) && + (pHVar3 = (HWND)SendMessageW(pHVar5,0x36b,0,0), pHVar3 != (HWND)0x0)) { + pHVar5 = pHVar3; + } + } + else { + pHVar5 = *(HWND *)(param_2 + 0x40); + } + GetWindowRect(*(HWND *)(param_1 + 0x40),&local_58); + if ((uVar1 >> 0x1e & 1) == 0) { + if ((pHVar5 != (HWND)0x0) && + ((uVar2 = GetWindowLongW(pHVar5,-0x10), (uVar2 >> 0x1c & 1) == 0 || + ((uVar2 >> 0x1d & 1) != 0)))) { + pHVar5 = pHVar7; + } + local_38[0] = 0x28; + if (pHVar5 == (HWND)0x0) { + plVar4 = (longlong *)FUN_180020e40(); + pHVar5 = pHVar7; + if (plVar4 != (longlong *)0x0) { + pHVar5 = (HWND)(**(code **)(*plVar4 + 0xe8))(plVar4); + } + if (pHVar5 != (HWND)0x0) { + pHVar7 = *(HWND *)(pHVar5 + 0x10); + } + lVar6 = xMonitorFromWindow(pHVar7,1); + FUN_180025e44(lVar6,local_38); + CopyRect(&local_48,&local_24); + } + else { + GetWindowRect(pHVar5,&local_48); + lVar6 = xMonitorFromWindow(pHVar5,2); + FUN_180025e44(lVar6,local_38); + } + CopyRect(&local_68,&local_24); + } + else { + pHVar7 = GetParent(*(HWND *)(param_1 + 0x40)); + GetClientRect(pHVar7,&local_68); + GetClientRect(pHVar5,&local_48); + MapWindowPoints(pHVar5,pHVar7,(LPPOINT)&local_48,2); + } + iVar8 = (local_48.right + local_48.left) / 2 - (local_58.right - local_58.left) / 2; + iVar9 = (local_48.bottom + local_48.top) / 2 - (local_58.bottom - local_58.top) / 2; + if ((local_68.left <= iVar8) && + (local_68.left = iVar8, local_68.right < (local_58.right - local_58.left) + iVar8)) { + local_68.left = (local_58.left - local_58.right) + local_68.right; + } + if ((local_68.top <= iVar9) && + (local_68.top = iVar9, local_68.bottom < (local_58.bottom - local_58.top) + iVar9)) { + local_68.top = (local_58.top - local_58.bottom) + local_68.bottom; + } + CWnd::SetWindowPos(param_1,(CWnd *)0x0,local_68.left,local_68.top,-1,-1,0x15); + return; +} + + +================================================================== + +### EXPORT FUNC 180028f44 (398 bytes) name=FUN_180028f44 + +undefined4 FUN_180028f44(CWnd *param_1,ulonglong param_2) + +{ + bool bVar1; + bool bVar2; + ulong uVar3; + int iVar4; + BOOL BVar5; + HWND hWnd; + tagMSG *lpMsg; + LRESULT LVar6; + int iVar7; + + iVar7 = 0; + bVar1 = true; + bVar2 = true; + if (((param_2 & 4) == 0) || (uVar3 = CWnd::GetStyle(param_1), (uVar3 >> 0x1c & 1) != 0)) { + bVar1 = false; + } + hWnd = GetParent(*(HWND *)(param_1 + 0x40)); + *(uint *)(param_1 + 0x78) = *(uint *)(param_1 + 0x78) | 0x18; + lpMsg = (tagMSG *)FUN_180020e54(); +LAB_180029021: + while ((!bVar2 || (BVar5 = PeekMessageW(lpMsg,(HWND)0x0,0,0,0), BVar5 != 0))) { + do { + iVar4 = AfxPumpMessage(); + if (iVar4 == 0) { + AfxPostQuitMessage(0); + return 0xffffffff; + } + if ((bVar1) && ((lpMsg->message == 0x118 || (lpMsg->message == 0x104)))) { + FUN_18002e260((longlong)param_1,1); + UpdateWindow(*(HWND *)(param_1 + 0x40)); + bVar1 = false; + } + iVar4 = (**(code **)(*(longlong *)param_1 + 0x100))(param_1); + if (iVar4 == 0) { + *(uint *)(param_1 + 0x78) = *(uint *)(param_1 + 0x78) & 0xffffffe7; + return *(undefined4 *)(param_1 + 0x88); + } + iVar4 = AfxIsIdleMessage(lpMsg); + if (iVar4 != 0) { + iVar7 = 0; + bVar2 = true; + } + BVar5 = PeekMessageW(lpMsg,(HWND)0x0,0,0,0); + } while (BVar5 != 0); + } + if (bVar1) { + FUN_18002e260((longlong)param_1,1); + UpdateWindow(*(HWND *)(param_1 + 0x40)); + bVar1 = false; + } + if ((((param_2 & 1) == 0) && (hWnd != (HWND)0x0)) && (iVar7 == 0)) { + SendMessageW(hWnd,0x121,0,*(LPARAM *)(param_1 + 0x40)); + } + if ((param_2 & 2) == 0) goto code_r0x000180029002; + goto LAB_18002901f; +code_r0x000180029002: + LVar6 = SendMessageW(*(HWND *)(param_1 + 0x40),0x36a,0,(longlong)iVar7); + iVar7 = iVar7 + 1; + if (LVar6 == 0) { +LAB_18002901f: + bVar2 = false; + } + goto LAB_180029021; +} + + +================================================================== + +### EXPORT FUNC 1800290d4 (46 bytes) name=EndModalLoop + +/* Library Function - Single Match + public: virtual void __cdecl CWnd::EndModalLoop(int) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __thiscall CWnd::EndModalLoop(CWnd *this,int param_1) + +{ + *(int *)(this + 0x88) = param_1; + if ((*(uint *)(this + 0x78) & 0x10) != 0) { + *(uint *)(this + 0x78) = *(uint *)(this + 0x78) & 0xffffffef; + PostMessageW(*(HWND *)(this + 0x40),0,0,0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180029104 (49 bytes) name=CreateObject + +/* Library Function - Single Match + public: static class CObject * __ptr64 __cdecl CWnd::CreateObject(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +CObject * __cdecl CWnd::CreateObject(void) + +{ + CWnd *this; + CObject *pCVar1; + + this = FUN_18001eb74(0xa8); + pCVar1 = (CObject *)0x0; + if (this != (CWnd *)0x0) { + pCVar1 = (CObject *)CWnd(this); + } + return pCVar1; +} + + +================================================================== + +### EXPORT FUNC 180029144 (24 bytes) name=Unwind@180029144 + +void Unwind_180029144(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002915c (39 bytes) name=Construct + +/* Library Function - Single Match + public: static void __cdecl ConstructDestruct::Construct(class CObject * __ptr64) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl ConstructDestruct::Construct(CObject *param_1) + +{ + if (param_1 != (CObject *)0x0) { + CWnd::CWnd((CWnd *)param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002918c (28 bytes) name=Unwind@18002918c + +void Unwind_18002918c(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800291a8 (114 bytes) name=FUN_1800291a8 + +undefined8 * FUN_1800291a8(longlong param_1,undefined8 *param_2) + +{ + HMODULE pHVar1; + FARPROC pFVar2; + + if (*(longlong *)(param_1 + 0x20) == 0) { + if (*(longlong *)(param_1 + 8) == 0) { + pHVar1 = GetModuleHandleW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + if (pHVar1 == (HMODULE)0x0) { + pHVar1 = LoadLibraryW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + *(bool *)(param_1 + 0x10) = pHVar1 != (HMODULE)0x0; + } + } + pFVar2 = GetProcAddress(*(HMODULE *)(param_1 + 8),"InitCommonControls"); + *(FARPROC *)(param_1 + 0x20) = pFVar2; + } + *param_2 = *(undefined8 *)(param_1 + 0x20); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18002921c (117 bytes) name=_InitCommonControls + +/* Library Function - Single Match + public: void __cdecl CComCtlWrapper::_InitCommonControls(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CComCtlWrapper::_InitCommonControls(CComCtlWrapper *this) + +{ + undefined1 uVar1; + int iVar2; + longlong lVar3; + undefined7 extraout_var; + undefined8 local_res18; + undefined8 local_res20; + + local_res18 = 0; + lVar3 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar3 + 0xd8),(longlong)&local_res18); + iVar2 = (int)CONCAT71(extraout_var,uVar1); + if (iVar2 != 0) { + FUN_1800291a8((longlong)this,&local_res20); + if (*(code **)(this + 0x20) == (code *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + (**(code **)(this + 0x20))(); + if (iVar2 != 2) { + FUN_180021f08(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002929c (32 bytes) name=FUN_18002929c + +void FUN_18002929c(undefined8 param_1,longlong param_2) + +{ + if (*(int *)(param_2 + 0x38) != 2) { + FUN_180021f08(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800292bc (114 bytes) name=FUN_1800292bc + +undefined8 * FUN_1800292bc(longlong param_1,undefined8 *param_2) + +{ + HMODULE pHVar1; + FARPROC pFVar2; + + if (*(longlong *)(param_1 + 0x28) == 0) { + if (*(longlong *)(param_1 + 8) == 0) { + pHVar1 = GetModuleHandleW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + if (pHVar1 == (HMODULE)0x0) { + pHVar1 = LoadLibraryW(*(LPCWSTR *)(param_1 + 0x18)); + *(HMODULE *)(param_1 + 8) = pHVar1; + *(bool *)(param_1 + 0x10) = pHVar1 != (HMODULE)0x0; + } + } + pFVar2 = GetProcAddress(*(HMODULE *)(param_1 + 8),"InitCommonControlsEx"); + *(FARPROC *)(param_1 + 0x28) = pFVar2; + } + *param_2 = *(undefined8 *)(param_1 + 0x28); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180029330 (180 bytes) name=_InitCommonControlsEx + +/* Library Function - Single Match + public: int __cdecl CComCtlWrapper::_InitCommonControlsEx(struct tagINITCOMMONCONTROLSEX * + __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall +CComCtlWrapper::_InitCommonControlsEx(CComCtlWrapper *this,tagINITCOMMONCONTROLSEX *param_1) + +{ + undefined1 uVar1; + int iVar2; + int iVar3; + DWORD dwErrCode; + longlong lVar4; + undefined7 extraout_var; + undefined8 local_res20; + undefined8 local_10; + + local_res20 = 0; + lVar4 = FUN_180022bb4(); + uVar1 = FUN_180021f24(*(undefined8 *)(lVar4 + 0xd8),(longlong)&local_res20); + iVar2 = (int)CONCAT71(extraout_var,uVar1); + iVar3 = 0; + if (iVar2 != 0) { + FUN_1800292bc((longlong)this,&local_10); + if (*(code **)(this + 0x28) == (code *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + iVar3 = (**(code **)(this + 0x28))(param_1); + if (iVar2 != 2) { + if (iVar3 != 0) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (iVar3 == 0) { + SetLastError(dwErrCode); + } + } + } + return iVar3; +} + + +================================================================== + +### EXPORT FUNC 1800293f0 (72 bytes) name=FUN_1800293f0 + +void FUN_1800293f0(undefined8 param_1,longlong param_2) + +{ + DWORD dwErrCode; + bool bVar1; + + if (*(int *)(param_2 + 0x50) != 2) { + bVar1 = *(int *)(param_2 + 0x20) != 0; + if (bVar1) { + dwErrCode = 0; + } + else { + dwErrCode = GetLastError(); + } + FUN_180021f08(); + if (!bVar1) { + SetLastError(dwErrCode); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180029438 (36 bytes) name=~CInternalGlobalLock + +/* Library Function - Single Match + public: __cdecl CInternalGlobalLock::~CInternalGlobalLock(void) __ptr64 + + Library: Visual Studio 2005 Release */ + +void __thiscall CInternalGlobalLock::~CInternalGlobalLock(CInternalGlobalLock *this) + +{ + if (*(int *)this != 0x7fffffff) { + FUN_180023834(*(uint *)this); + *(undefined4 *)this = 0x7fffffff; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002945c (101 bytes) name=FUN_18002945c + +longlong FUN_18002945c(void) + +{ + LONG LVar1; + DWORD DVar2; + void *pvVar3; + + pvVar3 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar3 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + LVar1 = GetMessageTime(); + *(LONG *)((longlong)pvVar3 + 0xb8) = LVar1; + DVar2 = GetMessagePos(); + *(ulonglong *)((longlong)pvVar3 + 0xbc) = CONCAT44((int)(short)(DVar2 >> 0x10),(int)(short)DVar2); + return (longlong)pvVar3 + 0x98; +} + + +================================================================== + +### EXPORT FUNC 1800294c4 (80 bytes) name=FUN_1800294c4 + +void FUN_1800294c4(longlong *param_1) + +{ + void *pvVar1; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + /* WARNING: Could not recover jumptable at 0x00018002950e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*param_1 + 0x220)) + (param_1,*(undefined4 *)((longlong)pvVar1 + 0xa0), + *(undefined8 *)((longlong)pvVar1 + 0xa8),*(undefined8 *)((longlong)pvVar1 + 0xb0)); + return; +} + + +================================================================== + +### EXPORT FUNC 180029518 (163 bytes) name=afxMapHWND + +/* Library Function - Single Match + class CHandleMap * __ptr64 __cdecl afxMapHWND(int) + + Library: Visual Studio 2008 Release */ + +CHandleMap * __cdecl afxMapHWND(int param_1) + +{ + longlong lVar1; + undefined *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + + lVar1 = FUN_180022c04(); + puVar4 = (undefined8 *)0x0; + if ((*(longlong *)(lVar1 + 0x28) == 0) && (param_1 != 0)) { + puVar2 = FUN_18001eb64(FUN_18003067c); + puVar3 = FUN_18001eb74(0xb8); + if (puVar3 != (undefined8 *)0x0) { + puVar4 = FUN_180023874(puVar3,0x180055150,0x18002915c,0x1800270a0,0x40,1); + } + *(undefined8 **)(lVar1 + 0x28) = puVar4; + FUN_18001eb64(puVar2); + } + return *(CHandleMap **)(lVar1 + 0x28); +} + + +================================================================== + +### EXPORT FUNC 1800295c8 (24 bytes) name=Unwind@1800295c8 + +void Unwind_1800295c8(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800295e0 (65 bytes) name=FromHandle + +/* Library Function - Single Match + public: static class CWnd * __ptr64 __cdecl CWnd::FromHandle(struct HWND__ * __ptr64) + + Library: Visual Studio 2008 Release */ + +CWnd * __cdecl CWnd::FromHandle(HWND__ *param_1) + +{ + CHandleMap *this; + CObject *this_00; + + this = afxMapHWND(1); + this_00 = CHandleMap::FromHandle(this,param_1); + AttachControlSite((CWnd *)this_00,this); + return (CWnd *)this_00; +} + + +================================================================== + +### EXPORT FUNC 180029624 (43 bytes) name=FromHandlePermanent + +/* Library Function - Single Match + public: static class CWnd * __ptr64 __cdecl CWnd::FromHandlePermanent(struct HWND__ * __ptr64) + + Library: Visual Studio 2008 Release */ + +CWnd * __cdecl CWnd::FromHandlePermanent(HWND__ *param_1) + +{ + longlong lVar1; + CWnd *pCVar2; + + lVar1 = FUN_180022c04(); + pCVar2 = (CWnd *)0x0; + if (*(longlong *)(lVar1 + 0x28) != 0) { + pCVar2 = (CWnd *)FUN_180030118(*(longlong *)(lVar1 + 0x28) + 0x30,(ulonglong)param_1); + } + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 180029650 (94 bytes) name=FUN_180029650 + +bool FUN_180029650(CWnd *param_1,ulonglong param_2) + +{ + CHandleMap *pCVar1; + undefined8 *puVar2; + + if (param_2 != 0) { + pCVar1 = afxMapHWND(1); + *(ulonglong *)(param_1 + 0x40) = param_2; + puVar2 = FUN_18003033c((longlong)(pCVar1 + 0x30),param_2); + *puVar2 = param_1; + CWnd::AttachControlSite(param_1,pCVar1); + } + return param_2 != 0; +} + + +================================================================== + +### EXPORT FUNC 1800296b0 (76 bytes) name=Detach + +/* Library Function - Single Match + public: struct HWND__ * __ptr64 __cdecl CWnd::Detach(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +HWND__ * __thiscall CWnd::Detach(CWnd *this) + +{ + HWND__ *pHVar1; + longlong lVar2; + + pHVar1 = *(HWND__ **)(this + 0x40); + if (pHVar1 != (HWND__ *)0x0) { + lVar2 = FUN_180022c04(); + if (*(longlong *)(lVar2 + 0x28) != 0) { + CMapPtrToPtr::RemoveKey + ((CMapPtrToPtr *)(*(longlong *)(lVar2 + 0x28) + 0x30),*(void **)(this + 0x40)); + } + *(undefined8 *)(this + 0x40) = 0; + } + *(undefined8 *)(this + 0xa0) = 0; + return pHVar1; +} + + +================================================================== + +### EXPORT FUNC 1800296fc (96 bytes) name=FUN_1800296fc + +bool FUN_1800296fc(void) + +{ + void *pvVar1; + longlong lVar2; + bool bVar3; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 != (void *)0x0) { + lVar2 = FUN_180022bb4(); + if ((*(char *)(lVar2 + 0x28) != '\0') && (*(HHOOK *)((longlong)pvVar1 + 0x48) != (HHOOK)0x0)) { + UnhookWindowsHookEx(*(HHOOK *)((longlong)pvVar1 + 0x48)); + *(undefined8 *)((longlong)pvVar1 + 0x48) = 0; + } + bVar3 = *(longlong *)((longlong)pvVar1 + 0x28) == 0; + if (!bVar3) { + *(undefined8 *)((longlong)pvVar1 + 0x28) = 0; + } + return bVar3; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 180029760 (88 bytes) name=OnDestroy + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnDestroy(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWnd::OnDestroy(CWnd *this) + +{ + longlong *plVar1; + + plVar1 = *(longlong **)(this + 0x98); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1); + } + plVar1 = *(longlong **)(this + 0x58); + *(undefined8 *)(this + 0x98) = 0; + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 0x18))(plVar1,0,0); + } + if (*(longlong **)(this + 0x50) != (longlong *)0x0) { + (**(code **)(**(longlong **)(this + 0x50) + 0x10))(); + } + FUN_1800294c4((longlong *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 1800297b8 (357 bytes) name=FUN_1800297b8 + +void FUN_1800297b8(CWnd *param_1) + +{ + bool bVar1; + longlong lVar2; + longlong lVar3; + undefined7 extraout_var; + LONG_PTR LVar4; + LONG_PTR LVar5; + longlong *plVar6; + undefined4 local_58; + undefined4 local_54; + undefined8 local_50; + undefined8 local_48; + + lVar2 = FUN_180020e40(); + if (lVar2 == 0) goto LAB_18002980e; + if (*(CWnd **)(lVar2 + 0x40) == param_1) { + lVar3 = FUN_180022bb4(); + if (*(char *)(lVar3 + 0x28) == '\0') { + lVar3 = FUN_180022bb4(); + if (lVar2 == *(longlong *)(lVar3 + 8)) { + bVar1 = FUN_180031e90(); + if ((int)CONCAT71(extraout_var,bVar1) == 0) goto LAB_1800297fe; + } + AfxPostQuitMessage(0); + } +LAB_1800297fe: + *(undefined8 *)(lVar2 + 0x40) = 0; + } + if (*(CWnd **)(lVar2 + 0x48) == param_1) { + *(undefined8 *)(lVar2 + 0x48) = 0; + } +LAB_18002980e: + if (*(longlong **)(param_1 + 0x90) != (longlong *)0x0) { + (**(code **)(**(longlong **)(param_1 + 0x90) + 0xa0))(); + *(undefined8 *)(param_1 + 0x90) = 0; + } + if (*(longlong **)(param_1 + 0x98) != (longlong *)0x0) { + (**(code **)(**(longlong **)(param_1 + 0x98) + 8))(); + } + *(undefined8 *)(param_1 + 0x98) = 0; + if (((byte)param_1[0x78] & 1) != 0) { + lVar2 = FUN_180022c04(); + lVar2 = *(longlong *)(lVar2 + 0x78); + if ((lVar2 != 0) && (*(longlong *)(lVar2 + 0x40) != 0)) { + FUN_1800357d0((ulonglong *)&local_58,0,0x48); + local_50 = *(undefined8 *)(param_1 + 0x40); + local_58 = 0x38; + local_54 = 1; + local_48 = local_50; + SendMessageW(*(HWND *)(lVar2 + 0x40),0x433,0,(LPARAM)&local_58); + } + } + LVar4 = GetWindowLongPtrW(*(HWND *)(param_1 + 0x40),-4); + FUN_1800294c4((longlong *)param_1); + LVar5 = GetWindowLongPtrW(*(HWND *)(param_1 + 0x40),-4); + if (LVar5 == LVar4) { + plVar6 = (longlong *)(**(code **)(*(longlong *)param_1 + 0x1e0))(param_1); + if (*plVar6 != 0) { + SetWindowLongPtrW(*(HWND *)(param_1 + 0x40),-4,*plVar6); + } + } + CWnd::Detach(param_1); + /* WARNING: Could not recover jumptable at 0x000180029916. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)param_1 + 0x228))(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180029920 (138 bytes) name=FUN_180029920 + +BOOL FUN_180029920(longlong param_1) + +{ + BOOL BVar1; + longlong lVar2; + + BVar1 = 0; + if (*(longlong *)(param_1 + 0x40) == 0) { + if (*(longlong *)(param_1 + 0xa0) == 0) { + return 0; + } + if (*(longlong *)(param_1 + 0x40) == 0) goto LAB_180029969; + } + lVar2 = FUN_180022c04(); + if (*(longlong *)(lVar2 + 0x28) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + FUN_180030118(*(longlong *)(lVar2 + 0x28) + 0x30,*(ulonglong *)(param_1 + 0x40)); +LAB_180029969: + if ((*(HWND *)(param_1 + 0x40) != (HWND)0x0) || (*(longlong *)(param_1 + 0xa0) != 0)) { + if (*(longlong *)(param_1 + 0xa0) == 0) { + BVar1 = DestroyWindow(*(HWND *)(param_1 + 0x40)); + } + else { + BVar1 = (**(code **)(**(longlong **)(param_1 + 0xa0) + 0xb0))(); + } + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 1800299ac (93 bytes) name=FUN_1800299ac + +void FUN_1800299ac(longlong *param_1,undefined8 param_2,undefined8 param_3) + +{ + void *pvVar1; + undefined8 local_28; + undefined8 local_20; + int local_18; + + local_28 = param_3; + local_20 = param_2; + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + local_18 = *(int *)((longlong)pvVar1 + 0xa0) + -0x132; + (**(code **)(*param_1 + 0x210))(param_1,0x19,0,&local_28); + return; +} + + +================================================================== + +### EXPORT FUNC 180029a0c (170 bytes) name=FUN_180029a0c + +CWnd * FUN_180029a0c(HWND param_1,int param_2,int param_3) + +{ + HWND pHVar1; + HWND pHVar2; + CWnd *pCVar3; + + pHVar1 = GetDlgItem(param_1,param_2); + if (pHVar1 != (HWND)0x0) { + pHVar2 = GetTopWindow(pHVar1); + if ((pHVar2 != (HWND)0x0) && + (pCVar3 = FUN_180029a0c(pHVar1,param_2,param_3), pCVar3 != (CWnd *)0x0)) { + return pCVar3; + } + if (param_3 == 0) { + pCVar3 = CWnd::FromHandle(pHVar1); + return pCVar3; + } + pCVar3 = CWnd::FromHandlePermanent(pHVar1); + if (pCVar3 != (CWnd *)0x0) { + return pCVar3; + } + } + pHVar1 = GetTopWindow(param_1); + while( true ) { + if (pHVar1 == (HWND)0x0) { + return (CWnd *)0x0; + } + pCVar3 = FUN_180029a0c(pHVar1,param_2,param_3); + if (pCVar3 != (CWnd *)0x0) break; + pHVar1 = GetWindow(pHVar1,2); + } + return pCVar3; +} + + +================================================================== + +### EXPORT FUNC 180029ab8 (109 bytes) name=WalkPreTranslateTree + +/* Library Function - Single Match + public: static int __cdecl CWnd::WalkPreTranslateTree(struct HWND__ * __ptr64,struct tagMSG * + __ptr64) + + Library: Visual Studio 2008 Release */ + +int __cdecl CWnd::WalkPreTranslateTree(HWND__ *param_1,tagMSG *param_2) + +{ + int iVar1; + CWnd *pCVar2; + HWND hWnd; + + hWnd = param_2->hwnd; + while( true ) { + if (hWnd == (HWND__ *)0x0) { + return 0; + } + pCVar2 = FromHandlePermanent(hWnd); + if ((pCVar2 != (CWnd *)0x0) && + (iVar1 = (**(code **)(*(longlong *)pCVar2 + 0x200))(pCVar2,param_2), iVar1 != 0)) break; + if (hWnd == param_1) { + return 0; + } + hWnd = GetParent(hWnd); + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 180029b28 (97 bytes) name=FUN_180029b28 + +void FUN_180029b28(longlong *param_1,undefined8 param_2) + +{ + void *pvVar1; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + (**(code **)(*param_1 + 0x230)) + (param_1,*(undefined4 *)((longlong)pvVar1 + 0xa0), + *(undefined8 *)((longlong)pvVar1 + 0xa8),*(undefined8 *)((longlong)pvVar1 + 0xb0), + param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 180029b8c (53 bytes) name=OnSetFocus + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnSetFocus(class CWnd * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __thiscall CWnd::OnSetFocus(CWnd *this,CWnd *param_1) + +{ + int iVar1; + + if ((*(longlong *)(this + 0x98) != 0) && + (iVar1 = (**(code **)(**(longlong **)(this + 0x98) + 0x120))(), iVar1 != 0)) { + return; + } + FUN_1800294c4((longlong *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 180029bc4 (177 bytes) name=OnHelpInfo + +/* Library Function - Single Match + protected: int __cdecl CWnd::OnHelpInfo(struct tagHELPINFO * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CWnd::OnHelpInfo(CWnd *this,tagHELPINFO *param_1) + +{ + SHORT SVar1; + ulong uVar2; + longlong *plVar3; + longlong lVar4; + + uVar2 = GetStyle(this); + lVar4 = 0; + if ((uVar2 >> 0x1e & 1) == 0) { + plVar3 = (longlong *)FUN_180020e40(); + if (plVar3 != (longlong *)0x0) { + lVar4 = (**(code **)(*plVar3 + 0xe8))(plVar3); + } + if ((((lVar4 != 0) && (SVar1 = GetKeyState(0x10), -1 < SVar1)) && + (SVar1 = GetKeyState(0x11), -1 < SVar1)) && (SVar1 = GetKeyState(0x12), -1 < SVar1)) { + SendMessageW(*(HWND *)(lVar4 + 0x40),0x111,0xe146,0); + return 1; + } + } + lVar4 = FUN_1800294c4((longlong *)this); + return (uint)(lVar4 != 0); +} + + +================================================================== + +### EXPORT FUNC 180029c78 (62 bytes) name=OnGetObject + +/* Library Function - Single Match + protected: __int64 __cdecl CWnd::OnGetObject(unsigned __int64,__int64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +__int64 __thiscall CWnd::OnGetObject(CWnd *this,__uint64 param_1,__int64 param_2) + +{ + int iVar1; + __int64 _Var2; + + if ((this[0x48] == (CWnd)0x0) || (iVar1 = (**(code **)(*(longlong *)this + 0x1c8))(), iVar1 < 0)) + { + _Var2 = FUN_1800294c4((longlong *)this); + } + else { + _Var2 = 0; + } + return _Var2; +} + + +================================================================== + +### EXPORT FUNC 180029cb8 (42 bytes) name=FUN_180029cb8 + +void FUN_180029cb8(longlong *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4) + +{ + int iVar1; + + if ((param_4 != (longlong *)0x0) && (iVar1 = FUN_180029b28(param_4,0), iVar1 != 0)) { + return; + } + FUN_1800294c4(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180029ce4 (69 bytes) name=OnEnterIdle + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnEnterIdle(unsigned int,class CWnd * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +void __thiscall CWnd::OnEnterIdle(CWnd *this,uint param_1,CWnd *param_2) + +{ + BOOL BVar1; + MSG local_38; + + while( true ) { + BVar1 = PeekMessageW(&local_38,(HWND)0x0,0x121,0x121,1); + if (BVar1 == 0) break; + DispatchMessageW(&local_38); + } + FUN_1800294c4((longlong *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 180029d2c (47 bytes) name=OnCtlColor + +/* Library Function - Single Match + protected: struct HBRUSH__ * __ptr64 __cdecl CWnd::OnCtlColor(class CDC * __ptr64,class CWnd * + __ptr64,unsigned int) __ptr64 + + Library: Visual Studio */ + +HBRUSH__ * __thiscall CWnd::OnCtlColor(CWnd *this,CDC *param_1,CWnd *param_2,uint param_3) + +{ + int iVar1; + HBRUSH__ *local_18 [2]; + + iVar1 = FUN_180029b28((longlong *)param_2,local_18); + if (iVar1 == 0) { + local_18[0] = (HBRUSH__ *)FUN_1800294c4((longlong *)this); + } + return local_18[0]; +} + + +================================================================== + +### EXPORT FUNC 180029d5c (136 bytes) name=_AfxInitCommonControls + +/* Library Function - Single Match + long __cdecl _AfxInitCommonControls(struct tagINITCOMMONCONTROLSEX * __ptr64,long) + + Library: Visual Studio 2008 Release */ + +long __cdecl _AfxInitCommonControls(tagINITCOMMONCONTROLSEX *param_1,long param_2) + +{ + int iVar1; + longlong lVar2; + longlong *plVar3; + long lVar4; + undefined8 local_res18 [2]; + + lVar4 = 0; + lVar2 = FUN_180022bb4(); + plVar3 = FUN_1800292bc(**(longlong **)(lVar2 + 200),local_res18); + if (*plVar3 == 0) { + if ((param_2 & 0x3fc0U) == param_2) { + lVar2 = FUN_180022bb4(); + CComCtlWrapper::_InitCommonControls((CComCtlWrapper *)**(undefined8 **)(lVar2 + 200)); + lVar4 = 0x3fc0; + } + } + else { + lVar2 = FUN_180022bb4(); + iVar1 = CComCtlWrapper::_InitCommonControlsEx + ((CComCtlWrapper *)**(undefined8 **)(lVar2 + 200),param_1); + if (iVar1 != 0) { + lVar4 = param_2; + } + } + return lVar4; +} + + +================================================================== + +### EXPORT FUNC 180029de4 (38 bytes) name=FUN_180029de4 + +undefined8 * FUN_180029de4(void) + +{ + undefined8 *puVar1; + + puVar1 = (undefined8 *)FUN_180022c84(0x18); + if (puVar1 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)0x0; + } + else { + *puVar1 = _AFX_HTMLHELP_STATE::vftable; + } + return puVar1; +} + + +================================================================== + +### EXPORT FUNC 180029e0c (150 bytes) name=_AfxPostInitDialog + +/* Library Function - Single Match + void __cdecl _AfxPostInitDialog(class CWnd * __ptr64,struct tagRECT const & __ptr64,unsigned + long) + + Library: Visual Studio 2008 Release */ + +void __cdecl _AfxPostInitDialog(CWnd *param_1,tagRECT *param_2,ulong param_3) + +{ + ulong uVar1; + int iVar2; + HWND pHVar3; + CWnd *this; + tagRECT local_18; + + if (((((param_3 >> 0x1c & 1) == 0) && (uVar1 = CWnd::GetStyle(param_1), (uVar1 & 0x50000000) == 0) + ) && (GetWindowRect(*(HWND *)(param_1 + 0x40),&local_18), param_2->left == local_18.left)) && + (param_2->top == local_18.top)) { + pHVar3 = GetWindow(*(HWND *)(param_1 + 0x40),4); + this = CWnd::FromHandle(pHVar3); + if (((this == (CWnd *)0x0) || (iVar2 = CWnd::IsWindowEnabled(this), iVar2 == 0)) && + (iVar2 = (**(code **)(*(longlong *)param_1 + 0x238))(param_1), iVar2 != 0)) { + FUN_180028ce8(param_1,0); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180029ea4 (340 bytes) name=FUN_180029ea4 + +undefined8 +FUN_180029ea4(CWnd *param_1,undefined8 param_2,int param_3,undefined8 param_4,undefined8 param_5) + +{ + ulong uVar1; + void *pvVar2; + undefined8 uVar3; + ulong local_78 [2]; + void *local_70; + undefined8 local_68; + tagRECT local_60; + undefined1 local_48 [48]; + + local_68 = 0xfffffffffffffffe; + pvVar2 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + local_70 = pvVar2; + if (pvVar2 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + memcpy(local_48,(void *)((longlong)pvVar2 + 0x98),0x30); + *(undefined8 *)((longlong)pvVar2 + 0x98) = param_2; + *(int *)((longlong)pvVar2 + 0xa0) = param_3; + *(undefined8 *)((longlong)pvVar2 + 0xa8) = param_4; + *(undefined8 *)((longlong)pvVar2 + 0xb0) = param_5; + if ((param_3 == 2) && (*(longlong *)(param_1 + 0x98) != 0)) { + (**(code **)(**(longlong **)(param_1 + 0x98) + 0xc0))(*(longlong **)(param_1 + 0x98),0); + } + local_78[0] = 0; + if (param_3 == 0x110) { + _AfxPreInitDialog(param_1,&local_60,local_78); + } + uVar1 = local_78[0]; + uVar3 = (**(code **)(*(longlong *)param_1 + 0x210))(param_1,param_3,param_4,param_5); + if (param_3 == 0x110) { + _AfxPostInitDialog(param_1,&local_60,uVar1); + } + memcpy((void *)((longlong)pvVar2 + 0x98),local_48,0x30); + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18002a004 (75 bytes) name=Catch@18002a004 + +undefined * Catch_18002a004(undefined8 param_1,longlong param_2) + +{ + CException *pCVar1; + __int64 _Var2; + + pCVar1 = *(CException **)(param_2 + 0x48); + _Var2 = AfxProcessWndProcException(pCVar1,(tagMSG *)(*(longlong *)(param_2 + 0x28) + 0x98)); + *(__int64 *)(param_2 + 0x20) = _Var2; + if (pCVar1 != (CException *)0x0) { + FUN_18001ec74((longlong *)pCVar1); + } + return &DAT_180029fbd; +} + + +================================================================== + +### EXPORT FUNC 18002a050 (129 bytes) name=FUN_18002a050 + +LRESULT FUN_18002a050(HWND__ *param_1,UINT param_2,WPARAM param_3,LPARAM param_4) + +{ + LRESULT LVar1; + CWnd *pCVar2; + + if (param_2 == 0x360) { + LVar1 = 1; + } + else { + pCVar2 = CWnd::FromHandlePermanent(param_1); + if ((pCVar2 == (CWnd *)0x0) || (*(HWND__ **)(pCVar2 + 0x40) != param_1)) { + LVar1 = DefWindowProcW(param_1,param_2,param_3,param_4); + } + else { + LVar1 = FUN_180029ea4(pCVar2,param_1,param_2,param_3,param_4); + } + } + return LVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a0d4 (151 bytes) name=~CWnd + +/* Library Function - Single Match + public: virtual __cdecl CWnd::~CWnd(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWnd::~CWnd(CWnd *this) + +{ + longlong *plVar1; + longlong lVar2; + undefined8 in_R8; + undefined8 in_R9; + undefined8 uVar3; + + uVar3 = 0xfffffffffffffffe; + *(undefined ***)this = vftable; + if ((((*(longlong *)(this + 0x40) != 0) && (this != (CWnd *)&DAT_1800721e0)) && + (this != (CWnd *)&DAT_180072290)) && + ((this != (CWnd *)&DAT_180072340 && (this != (CWnd *)&DAT_1800723f0)))) { + FUN_180029920((longlong)this); + } + plVar1 = *(longlong **)(this + 0x98); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,1,in_R8,in_R9,uVar3); + } + lVar2 = *(longlong *)(this + 0xa0); + if ((lVar2 != 0) && (*(CWnd **)(lVar2 + 0x50) == this)) { + *(undefined8 *)(lVar2 + 0x50) = 0; + } + CCmdTarget::~CCmdTarget((CCmdTarget *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 18002a174 (24 bytes) name=Unwind@18002a174 + +void Unwind_18002a174(undefined8 param_1,longlong param_2) + +{ + CCmdTarget::~CCmdTarget(*(CCmdTarget **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002a18c (51 bytes) name=FUN_18002a18c + +ulonglong FUN_18002a18c(longlong *param_1,undefined8 param_2,longlong *param_3) + +{ + int iVar1; + ulonglong uVar2; + uint local_res18 [4]; + + if ((param_3 != (longlong *)0x0) && (iVar1 = FUN_180029b28(param_3,local_res18), iVar1 != 0)) { + return (ulonglong)local_res18[0]; + } + uVar2 = FUN_1800294c4(param_1); + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18002a1c0 (183 bytes) name=FUN_18002a1c0 + +void FUN_18002a1c0(longlong *param_1,undefined8 param_2,int *param_3) + +{ + int iVar1; + void *pvVar2; + HMENU pHVar3; + longlong lVar4; + CMenu *pCVar5; + CWnd *pCVar6; + + if (*param_3 == 1) { + pvVar2 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar2 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(HWND *)((longlong)pvVar2 + 200) == (HWND)param_1[8]) { + pHVar3 = *(HMENU *)((longlong)pvVar2 + 0xd0); + } + else { + pHVar3 = GetMenu((HWND)param_1[8]); + } + lVar4 = FromHandle(pHVar3); + if (lVar4 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + pCVar5 = FUN_1800278a8(lVar4,param_3[2]); + if (pCVar5 != (CMenu *)0x0) { + (**(code **)(*(longlong *)pCVar5 + 0x20))(pCVar5,param_3); + } + } + else { + pCVar6 = FUN_180029a0c((HWND)param_1[8],param_3[1],1); + if ((pCVar6 != (CWnd *)0x0) && (iVar1 = FUN_180029b28((longlong *)pCVar6,0), iVar1 != 0)) { + return; + } + } + FUN_1800294c4(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18002a27c (77 bytes) name=GetParentFrame + +/* Library Function - Single Match + public: class CFrameWnd * __ptr64 __cdecl CWnd::GetParentFrame(void)const __ptr64 + + Library: Visual Studio 2005 Release */ + +CFrameWnd * __thiscall CWnd::GetParentFrame(CWnd *this) + +{ + int iVar1; + HWND pHVar2; + CWnd *pCVar3; + + if ((this != (CWnd *)0x0) && (pHVar2 = *(HWND *)(this + 0x40), pHVar2 != (HWND)0x0)) { + while( true ) { + pHVar2 = GetParent(pHVar2); + pCVar3 = FromHandle(pHVar2); + if (pCVar3 == (CWnd *)0x0) break; + iVar1 = (**(code **)(*(longlong *)pCVar3 + 0x240))(pCVar3); + if (iVar1 != 0) { + return (CFrameWnd *)pCVar3; + } + pHVar2 = *(HWND *)(pCVar3 + 0x40); + } + } + return (CFrameWnd *)0x0; +} + + +================================================================== + +### EXPORT FUNC 18002a2cc (84 bytes) name=GetTopLevelFrame + +/* Library Function - Single Match + public: class CFrameWnd * __ptr64 __cdecl CWnd::GetTopLevelFrame(void)const __ptr64 + + Library: Visual Studio 2005 Release */ + +CFrameWnd * __thiscall CWnd::GetTopLevelFrame(CWnd *this) + +{ + CWnd *this_00; + int iVar1; + CFrameWnd *pCVar2; + + if ((this == (CWnd *)0x0) || (*(longlong *)(this + 0x40) == 0)) { + this = (CWnd *)0x0; + } + else { + iVar1 = (**(code **)(*(longlong *)this + 0x240))(); + pCVar2 = (CFrameWnd *)this; + if (iVar1 == 0) { + this = (CWnd *)GetParentFrame(this); + pCVar2 = (CFrameWnd *)this; + } + while (this_00 = (CWnd *)pCVar2, this_00 != (CWnd *)0x0) { + pCVar2 = GetParentFrame(this_00); + this = this_00; + } + } + return (CFrameWnd *)this; +} + + +================================================================== + +### EXPORT FUNC 18002a320 (199 bytes) name=FUN_18002a320 + +void FUN_18002a320(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4,int param_5,int param_6) + +{ + HWND__ *hWnd; + CWnd *pCVar1; + HWND pHVar2; + + for (hWnd = GetTopWindow(param_1); hWnd != (HWND__ *)0x0; hWnd = GetWindow(hWnd,2)) { + if (param_6 == 0) { + SendMessageW(hWnd,param_2,param_3,param_4); + } + else { + pCVar1 = CWnd::FromHandlePermanent(hWnd); + if (pCVar1 != (CWnd *)0x0) { + FUN_180029ea4(pCVar1,*(undefined8 *)(pCVar1 + 0x40),param_2,param_3,param_4); + } + } + if ((param_5 != 0) && (pHVar2 = GetTopWindow(hWnd), pHVar2 != (HWND)0x0)) { + FUN_18002a320(hWnd,param_2,param_3,param_4,param_5,param_6); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002a3e8 (241 bytes) name=ReflectLastMsg + +/* Library Function - Single Match + protected: static int __cdecl CWnd::ReflectLastMsg(struct HWND__ * __ptr64,__int64 * __ptr64) + + Library: Visual Studio 2008 Release */ + +int __cdecl CWnd::ReflectLastMsg(HWND__ *param_1,__int64 *param_2) + +{ + int iVar1; + longlong lVar2; + longlong *plVar3; + HWND pHVar4; + CWnd local_b8 [64]; + undefined8 local_78; + longlong local_18; + + lVar2 = FUN_180022c04(); + if (*(longlong *)(lVar2 + 0x28) == 0) { + iVar1 = 0; + } + else { + lVar2 = *(longlong *)(lVar2 + 0x28) + 0x30; + plVar3 = (longlong *)FUN_180030118(lVar2,(ulonglong)param_1); + if (plVar3 == (longlong *)0x0) { + pHVar4 = GetParent(param_1); + lVar2 = FUN_180030118(lVar2,(ulonglong)pHVar4); + if (((lVar2 != 0) && (*(longlong *)(lVar2 + 0x98) != 0)) && + (local_18 = FUN_180030118(*(longlong *)(lVar2 + 0x98) + 0x48,(ulonglong)param_1), + local_18 != 0)) { + CWnd(local_b8,param_1); + iVar1 = FUN_180029b28((longlong *)local_b8,param_2); + local_78 = 0; + ~CWnd(local_b8); + return (uint)(iVar1 != 0); + } + iVar1 = 0; + } + else { + iVar1 = FUN_180029b28(plVar3,param_2); + } + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a4e8 (24 bytes) name=Unwind@18002a4e8 + +void Unwind_18002a4e8(undefined8 param_1,longlong param_2) + +{ + CWnd::~CWnd((CWnd *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002a500 (49 bytes) name=OnParentNotify + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnParentNotify(unsigned int,__int64) __ptr64 + + Library: Visual Studio 2005 Release */ + +void __thiscall CWnd::OnParentNotify(CWnd *this,uint param_1,__int64 param_2) + +{ + int iVar1; + + if ((((short)param_1 == 1) || ((short)param_1 == 2)) && + (iVar1 = ReflectLastMsg((HWND__ *)param_2,(__int64 *)0x0), iVar1 != 0)) { + return; + } + FUN_1800294c4((longlong *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 18002a534 (50 bytes) name=OnDragList + +/* Library Function - Single Match + protected: __int64 __cdecl CWnd::OnDragList(unsigned __int64,__int64) __ptr64 + + Library: Visual Studio 2008 Release */ + +__int64 __thiscall CWnd::OnDragList(CWnd *this,__uint64 param_1,__int64 param_2) + +{ + int iVar1; + int local_res18 [4]; + + iVar1 = ReflectLastMsg(*(HWND__ **)(param_2 + 8),(__int64 *)local_res18); + if (iVar1 == 0) { + local_res18[0] = FUN_1800294c4((longlong *)this); + } + return (longlong)local_res18[0]; +} + + +================================================================== + +### EXPORT FUNC 18002a568 (99 bytes) name=SubclassWindow + +/* Library Function - Single Match + public: int __cdecl CWnd::SubclassWindow(struct HWND__ * __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +int __thiscall CWnd::SubclassWindow(CWnd *this,HWND__ *param_1) + +{ + bool bVar1; + int iVar2; + undefined7 extraout_var; + longlong *plVar3; + LONG_PTR LVar4; + + bVar1 = FUN_180029650(this,(ulonglong)param_1); + iVar2 = 0; + if ((int)CONCAT71(extraout_var,bVar1) != 0) { + (**(code **)(*(longlong *)this + 0xa0))(this); + plVar3 = (longlong *)(**(code **)(*(longlong *)this + 0x1e0))(this); + LVar4 = SetWindowLongPtrW(param_1,-4,0x18002a050); + if (*plVar3 == 0) { + *plVar3 = LVar4; + } + iVar2 = 1; + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 18002a5cc (45 bytes) name=get_accParent + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accParent(struct IDispatch * __ptr64 * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accParent + (IAccessibleProxyImpl *this,IDispatch **param_1) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_1 == (IDispatch **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x38))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a5fc (45 bytes) name=get_accChildCount + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accChildCount(long * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accChildCount + (IAccessibleProxyImpl *this,long *param_1) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_1 == (long *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x40))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a62c (77 bytes) name=get_accChild + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accChild(struct tagVARIANT,struct IDispatch * __ptr64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accChild + (IAccessibleProxyImpl *this,tagVARIANT *param_1,IDispatch **param_2 + ) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (IDispatch **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x48)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a67c (77 bytes) name=get_accName + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accName(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accName + (IAccessibleProxyImpl *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (wchar_t **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x50)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a6cc (77 bytes) name=get_accValue + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accValue(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accValue + (IAccessibleProxyImpl *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (wchar_t **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x58)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a71c (77 bytes) name=get_accDescription + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accDescription(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accDescription + (IAccessibleProxyImpl *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (wchar_t **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x60)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a76c (77 bytes) name=get_accRole + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accRole(struct tagVARIANT,struct tagVARIANT * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accRole + (IAccessibleProxyImpl *this,tagVARIANT *param_1,tagVARIANT *param_2 + ) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (tagVARIANT *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x68)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a7bc (77 bytes) name=get_accState + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accState(struct tagVARIANT,struct tagVARIANT * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accState + (IAccessibleProxyImpl *this,tagVARIANT *param_1,tagVARIANT *param_2 + ) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (tagVARIANT *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x70)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a80c (77 bytes) name=get_accHelp + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accHelp(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accHelp + (IAccessibleProxyImpl *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (wchar_t **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x78)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a85c (85 bytes) name=get_accHelpTopic + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accHelpTopic(wchar_t * __ptr64 * __ptr64,struct tagVARIANT,long * + __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accHelpTopic + (IAccessibleProxyImpl *this,wchar_t **param_1,tagVARIANT *param_2, + long *param_3) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if ((param_1 == (wchar_t **)0x0) || (param_3 == (long *)0x0)) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x80)) + (*(longlong **)(this + 0x10),param_1,&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a8b4 (80 bytes) name=get_accKeyboardShortcut + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accKeyboardShortcut(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accKeyboardShortcut + (IAccessibleProxyImpl *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (wchar_t **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x88)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a904 (48 bytes) name=get_accFocus + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accFocus(struct tagVARIANT * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accFocus + (IAccessibleProxyImpl *this,tagVARIANT *param_1) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_1 == (tagVARIANT *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x90))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a934 (48 bytes) name=get_accSelection + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accSelection(struct tagVARIANT * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accSelection + (IAccessibleProxyImpl *this,tagVARIANT *param_1) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_1 == (tagVARIANT *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x98))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a964 (80 bytes) name=get_accDefaultAction + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::get_accDefaultAction(struct tagVARIANT,wchar_t * __ptr64 * __ptr64) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::get_accDefaultAction + (IAccessibleProxyImpl *this,tagVARIANT *param_1,wchar_t **param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_2 == (wchar_t **)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0xa0)) + (*(longlong **)(this + 0x10),&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a9b4 (68 bytes) name=accSelect + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::accSelect(long,struct tagVARIANT) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::accSelect + (IAccessibleProxyImpl *this,long param_1,tagVARIANT *param_2) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else { + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0xa8)) + (*(longlong **)(this + 0x10),param_1,&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002a9f8 (133 bytes) name=accLocation + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::accLocation(long * __ptr64,long * __ptr64,long * __ptr64,long * + __ptr64,struct tagVARIANT) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::accLocation + (IAccessibleProxyImpl *this,long *param_1,long *param_2, + long *param_3,long *param_4,tagVARIANT *param_5) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if ((((param_1 == (long *)0x0) || (param_2 == (long *)0x0)) || (param_3 == (long *)0x0)) || + (param_4 == (long *)0x0)) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_5->n1; + local_20 = (param_5->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_5->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0xb0)) + (*(longlong **)(this + 0x10),param_1,param_2,param_3,param_4,&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002aa80 (80 bytes) name=accNavigate + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::accNavigate(long,struct tagVARIANT,struct tagVARIANT * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::accNavigate + (IAccessibleProxyImpl *this,long param_1,tagVARIANT *param_2, + tagVARIANT *param_3) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_3 == (tagVARIANT *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + local_28 = *(undefined8 *)¶m_2->n1; + local_20 = (param_2->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_2->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0xb8)) + (*(longlong **)(this + 0x10),param_1,&local_28); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002aad0 (48 bytes) name=accHitTest + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::accHitTest(long,long,struct tagVARIANT * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::accHitTest + (IAccessibleProxyImpl *this,long param_1,long param_2, + tagVARIANT *param_3) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else if (param_3 == (tagVARIANT *)0x0) { + lVar1 = -0x7fffbffd; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0xc0))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002ab00 (68 bytes) name=accDoDefaultAction + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::accDoDefaultAction(struct tagVARIANT) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::accDoDefaultAction + (IAccessibleProxyImpl *this,tagVARIANT *param_1) + +{ + long lVar1; + undefined8 local_28; + _union_1719 local_20; + undefined8 local_18; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else { + local_28 = *(undefined8 *)¶m_1->n1; + local_20 = (param_1->n1).decVal.u2; + local_18 = *(undefined8 *)((longlong)¶m_1->n1 + 0x10); + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 200))(*(longlong **)(this + 0x10),&local_28) + ; + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002ab44 (20 bytes) name=FUN_18002ab44 + +int FUN_18002ab44(longlong param_1) + +{ + return (-(uint)(*(longlong *)(param_1 + 0x10) != 0) & 0xffff3ef9) + 0x80010108; +} + + +================================================================== + +### EXPORT FUNC 18002ab58 (11 bytes) name=FUN_18002ab58 + +undefined8 FUN_18002ab58(longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + *(undefined8 *)(param_1 + 8) = param_2; + *(undefined8 *)(param_1 + 0x10) = param_3; + return 0; +} + + +================================================================== + +### EXPORT FUNC 18002ab64 (99 bytes) name=Invoke + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::Invoke(long,struct _GUID const & __ptr64,unsigned long,unsigned + short,struct tagDISPPARAMS * __ptr64,struct tagVARIANT * __ptr64,struct tagEXCEPINFO * + __ptr64,unsigned int * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::Invoke + (IAccessibleProxyImpl *this,long param_1,_GUID *param_2, + ulong param_3,ushort param_4,tagDISPPARAMS *param_5,tagVARIANT *param_6, + tagEXCEPINFO *param_7,uint *param_8) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x30))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002abc8 (52 bytes) name=GetIDsOfNames + +/* Library Function - Single Match + public: virtual long __cdecl ATL::IAccessibleProxyImpl::GetIDsOfNames(struct _GUID const & __ptr64,wchar_t * __ptr64 * + __ptr64,unsigned int,unsigned long,long * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release */ + +long __thiscall +ATL::IAccessibleProxyImpl::GetIDsOfNames + (IAccessibleProxyImpl *this,_GUID *param_1,wchar_t **param_2, + uint param_3,ulong param_4,long *param_5) + +{ + long lVar1; + + if (*(longlong *)(this + 0x10) == 0) { + lVar1 = -0x7ffefef8; + } + else { + lVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x28))(); + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 18002abfc (33 bytes) name=FUN_18002abfc + +undefined8 FUN_18002abfc(longlong param_1) + +{ + undefined8 uVar1; + + if (*(longlong *)(param_1 + 0x10) == 0) { + uVar1 = 0x80010108; + } + else { + uVar1 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x18))(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002ac20 (33 bytes) name=FUN_18002ac20 + +undefined8 FUN_18002ac20(longlong param_1) + +{ + undefined8 uVar1; + + if (*(longlong *)(param_1 + 0x10) == 0) { + uVar1 = 0x80010108; + } + else { + uVar1 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x20))(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002ac44 (47 bytes) name=FUN_18002ac44 + +CWnd * FUN_18002ac44(CWnd *param_1,uint param_2) + +{ + CWnd::~CWnd(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002ac74 (85 bytes) name=OnDrawItem + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnDrawItem(int,struct tagDRAWITEMSTRUCT * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWnd::OnDrawItem(CWnd *this,int param_1,tagDRAWITEMSTRUCT *param_2) + +{ + int iVar1; + CMenu *pCVar2; + + if ((*(int *)param_2 == 1) && + (pCVar2 = CMenu::FromHandlePermanent(*(HMENU__ **)(param_2 + 0x18)), pCVar2 != (CMenu *)0x0)) { + (**(code **)(*(longlong *)pCVar2 + 0x18))(pCVar2,param_2); + return; + } + iVar1 = ReflectLastMsg(*(HWND__ **)(param_2 + 0x18),(__int64 *)0x0); + if (iVar1 == 0) { + FUN_1800294c4((longlong *)this); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002accc (47 bytes) name=OnCompareItem + +/* Library Function - Single Match + protected: int __cdecl CWnd::OnCompareItem(int,struct tagCOMPAREITEMSTRUCT * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CWnd::OnCompareItem(CWnd *this,int param_1,tagCOMPAREITEMSTRUCT *param_2) + +{ + int iVar1; + int local_res18 [4]; + + iVar1 = ReflectLastMsg(*(HWND__ **)(param_2 + 8),(__int64 *)local_res18); + if (iVar1 == 0) { + local_res18[0] = FUN_1800294c4((longlong *)this); + } + return local_res18[0]; +} + + +================================================================== + +### EXPORT FUNC 18002acfc (38 bytes) name=OnDeleteItem + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnDeleteItem(int,struct tagDELETEITEMSTRUCT * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWnd::OnDeleteItem(CWnd *this,int param_1,tagDELETEITEMSTRUCT *param_2) + +{ + int iVar1; + + iVar1 = ReflectLastMsg(*(HWND__ **)(param_2 + 0x10),(__int64 *)0x0); + if (iVar1 == 0) { + FUN_1800294c4((longlong *)this); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002ad24 (205 bytes) name=FUN_18002ad24 + +undefined8 +FUN_18002ad24(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4) + +{ + CNoTrackObject *pCVar1; + HMODULE hModule; + FARPROC pFVar2; + undefined8 uVar3; + + FUN_1800237a0(0xc); + pCVar1 = CProcessLocalObject::GetData((CProcessLocalObject *)&DAT_1800724a0,FUN_180029de4); + if (pCVar1 == (CNoTrackObject *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(longlong *)(pCVar1 + 0x10) == 0) { + hModule = FID_conflict_AfxCtxLoadLibraryA("hhctrl.ocx"); + *(HMODULE *)(pCVar1 + 8) = hModule; + if (hModule != (HMODULE)0x0) { + pFVar2 = GetProcAddress(hModule,"HtmlHelpW"); + *(FARPROC *)(pCVar1 + 0x10) = pFVar2; + if (pFVar2 != (FARPROC)0x0) goto LAB_18002adbe; + FreeLibrary(*(HMODULE *)(pCVar1 + 8)); + *(undefined8 *)(pCVar1 + 8) = 0; + } + uVar3 = 0; + } + else { +LAB_18002adbe: + FUN_180023834(0xc); + uVar3 = (**(code **)(pCVar1 + 0x10))(param_1,param_2,param_3,param_4); + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18002adf4 (228 bytes) name=FUN_18002adf4 + +undefined8 FUN_18002adf4(longlong *param_1,ulonglong param_2,HWND__ *param_3) + +{ + int iVar1; + void *pvVar2; + undefined8 uVar3; + int iVar4; + ulonglong uVar5; + uint uVar6; + CTestCmdUI local_58 [8]; + int local_50; + int local_18; + + uVar5 = param_2 & 0xffff; + uVar6 = (uint)(param_2 >> 0x10) & 0xffff; + iVar4 = (int)uVar5; + if (param_3 == (HWND__ *)0x0) { + if (iVar4 == 0) { + return 0; + } + CTestCmdUI::CTestCmdUI(local_58); + local_50 = iVar4; + (**(code **)(*param_1 + 0x18))(param_1,uVar5,0xffffffff,local_58,0); + if (local_18 != 0) { + uVar6 = 0; +LAB_18002aea9: + uVar3 = (**(code **)(*param_1 + 0x18))(param_1,uVar5,uVar6,0,0); + return uVar3; + } + } + else { + pvVar2 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar2 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if ((*(longlong *)((longlong)pvVar2 + 0x198) != param_1[8]) && + (iVar1 = CWnd::ReflectLastMsg(param_3,(__int64 *)0x0), iVar1 == 0)) { + if (iVar4 == 0) { + return 0; + } + goto LAB_18002aea9; + } + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18002aedc (189 bytes) name=FUN_18002aedc + +undefined8 FUN_18002aedc(longlong *param_1,undefined8 param_2,undefined8 *param_3,__int64 *param_4) + +{ + uint uVar1; + HWND__ *hWnd; + int iVar2; + int iVar3; + void *pvVar4; + undefined8 uVar5; + __int64 *local_28; + undefined8 *local_20; + + hWnd = (HWND__ *)*param_3; + iVar2 = GetDlgCtrlID(hWnd); + uVar1 = *(uint *)(param_3 + 2); + pvVar4 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar4 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if ((*(longlong *)((longlong)pvVar4 + 0x198) != param_1[8]) && + (iVar3 = CWnd::ReflectLastMsg(hWnd,param_4), iVar3 == 0)) { + local_28 = param_4; + local_20 = param_3; + uVar5 = (**(code **)(*param_1 + 0x18)) + (param_1,(short)iVar2,uVar1 & 0xffff | 0x4e0000,&local_28,0); + return uVar5; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18002af9c (119 bytes) name=AfxGetParentOwner + +/* Library Function - Single Match + struct HWND__ * __ptr64 __cdecl AfxGetParentOwner(struct HWND__ * __ptr64) + + Library: Visual Studio 2008 Release */ + +HWND__ * __cdecl AfxGetParentOwner(HWND__ *param_1) + +{ + uint uVar1; + CWnd *pCVar2; + HWND__ *pHVar3; + HWND__ *pHVar4; + + pCVar2 = CWnd::FromHandlePermanent(param_1); + pHVar4 = (HWND__ *)0x0; + if (pCVar2 == (CWnd *)0x0) { + uVar1 = GetWindowLongW(param_1,-0x10); + if ((uVar1 >> 0x1e & 1) == 0) { + pHVar4 = GetWindow(param_1,4); + } + else { + pHVar4 = GetParent(param_1); + } + } + else { + pHVar3 = *(HWND__ **)(pCVar2 + 0x70); + if (pHVar3 == (HWND__ *)0x0) { + pHVar3 = GetParent(*(HWND *)(pCVar2 + 0x40)); + } + pCVar2 = CWnd::FromHandle(pHVar3); + if (pCVar2 != (CWnd *)0x0) { + pHVar4 = *(HWND__ **)(pCVar2 + 0x40); + } + } + return pHVar4; +} + + +================================================================== + +### EXPORT FUNC 18002b014 (59 bytes) name=GetTopLevelParent + +/* Library Function - Single Match + public: class CWnd * __ptr64 __cdecl CWnd::GetTopLevelParent(void)const __ptr64 + + Library: Visual Studio 2008 Release */ + +CWnd * __thiscall CWnd::GetTopLevelParent(CWnd *this) + +{ + HWND__ *pHVar1; + CWnd *pCVar2; + HWND__ *pHVar3; + + if ((this == (CWnd *)0x0) || + (pHVar1 = *(HWND__ **)(this + 0x40), *(HWND__ **)(this + 0x40) == (HWND__ *)0x0)) { + pCVar2 = (CWnd *)0x0; + } + else { + do { + pHVar3 = pHVar1; + pHVar1 = AfxGetParentOwner(pHVar3); + } while (pHVar1 != (HWND__ *)0x0); + pCVar2 = FromHandle(pHVar3); + } + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 18002b050 (99 bytes) name=OnSysColorChange + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnSysColorChange(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +void __thiscall CWnd::OnSysColorChange(CWnd *this) + +{ + ulong uVar1; + longlong lVar2; + + lVar2 = FUN_180022bb4(); + if ((*(longlong *)(lVar2 + 8) != 0) && (*(CWnd **)(*(longlong *)(lVar2 + 8) + 0x40) == this)) { + AUX_DATA::UpdateSysColors((AUX_DATA *)&DAT_1800724c0); + } + uVar1 = GetStyle(this); + if ((uVar1 >> 0x1e & 1) == 0) { + FUN_18002a320(*(HWND *)(this + 0x40),0x15,0,0,1,1); + } + FUN_1800294c4((longlong *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b0b4 (107 bytes) name=OnDevModeChange + +/* Library Function - Single Match + protected: void __cdecl CWnd::OnDevModeChange(wchar_t * __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall CWnd::OnDevModeChange(CWnd *this,wchar_t *param_1) + +{ + CWinApp *this_00; + ulong uVar1; + longlong lVar2; + + lVar2 = FUN_180022bb4(); + this_00 = *(CWinApp **)(lVar2 + 8); + if ((this_00 != (CWinApp *)0x0) && (*(CWnd **)(this_00 + 0x40) == this)) { + CWinApp::DevModeChange(this_00,param_1); + } + uVar1 = GetStyle(this); + if ((uVar1 >> 0x1e & 1) == 0) { + lVar2 = FUN_18002945c(); + FUN_18002a320(*(HWND *)(this + 0x40),*(UINT *)(lVar2 + 8),*(WPARAM *)(lVar2 + 0x10), + *(LPARAM *)(lVar2 + 0x18),1,1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002b120 (115 bytes) name=OnDisplayChange + +/* Library Function - Single Match + protected: __int64 __cdecl CWnd::OnDisplayChange(unsigned __int64,__int64) __ptr64 + + Library: Visual Studio 2008 Release */ + +__int64 __thiscall CWnd::OnDisplayChange(CWnd *this,__uint64 param_1,__int64 param_2) + +{ + ulong uVar1; + longlong *plVar2; + CWnd *pCVar3; + longlong lVar4; + __int64 _Var5; + + plVar2 = (longlong *)FUN_180020e40(); + pCVar3 = (CWnd *)0x0; + if (plVar2 != (longlong *)0x0) { + pCVar3 = (CWnd *)(**(code **)(*plVar2 + 0xe8))(); + } + if (pCVar3 == this) { + FUN_18002fdbc(0x1800724c0); + } + uVar1 = GetStyle(this); + if ((uVar1 >> 0x1e & 1) == 0) { + lVar4 = FUN_18002945c(); + FUN_18002a320(*(HWND *)(this + 0x40),*(UINT *)(lVar4 + 8),*(WPARAM *)(lVar4 + 0x10), + *(LPARAM *)(lVar4 + 0x18),1,1); + } + _Var5 = FUN_1800294c4((longlong *)this); + return _Var5; +} + + +================================================================== + +### EXPORT FUNC 18002b194 (6 bytes) name=FUN_18002b194 + +undefined8 FUN_18002b194(void) + +{ + return 0x80004001; +} + + +================================================================== + +### EXPORT FUNC 18002b19c (282 bytes) name=FUN_18002b19c + +undefined8 FUN_18002b19c(longlong param_1,undefined8 *param_2,int *param_3,undefined8 *param_4) + +{ + undefined8 *puVar1; + longlong lVar2; + int *piVar3; + undefined8 uVar4; + longlong *plVar5; + code *pcVar6; + + if ((param_1 == 0) || (param_2 == (undefined8 *)0x0)) { + uVar4 = 0x80070057; + } + else if (param_4 == (undefined8 *)0x0) { + uVar4 = 0x80004003; + } + else { + *param_4 = 0; + if ((((*param_3 == 0) && (param_3[1] == 0)) && (param_3[2] == 0xc0)) && + (param_3[3] == 0x46000000)) { + lVar2 = param_2[1]; +LAB_18002b20f: + plVar5 = (longlong *)(param_1 + lVar2); + (**(code **)(*plVar5 + 8))(plVar5); + *param_4 = plVar5; + uVar4 = 0; + } + else { + pcVar6 = (code *)param_2[2]; + while (pcVar6 != (code *)0x0) { + piVar3 = (int *)*param_2; + if ((piVar3 == (int *)0x0) || + (((*piVar3 == *param_3 && (piVar3[1] == param_3[1])) && + ((piVar3[2] == param_3[2] && (piVar3[3] == param_3[3])))))) { + if (pcVar6 == (code *)0x1) { + lVar2 = param_2[1]; + goto LAB_18002b20f; + } + uVar4 = (*pcVar6)(param_1,param_3,param_4,param_2[1]); + if ((int)uVar4 == 0) { + return uVar4; + } + if ((piVar3 != (int *)0x0) && ((int)uVar4 < 0)) { + return uVar4; + } + } + puVar1 = param_2 + 5; + param_2 = param_2 + 3; + pcVar6 = (code *)*puVar1; + } + uVar4 = 0x80004002; + } + } + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 18002b2b8 (8 bytes) name=FUN_18002b2b8 + +undefined4 FUN_18002b2b8(longlong param_1) + +{ + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1; + return *(undefined4 *)(param_1 + 0x28); +} + + +================================================================== + +### EXPORT FUNC 18002b2c0 (43 bytes) name=Release + +/* Library Function - Single Match + public: virtual unsigned long __cdecl CMFCComObject::Release(void) + __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +ulong __thiscall +CMFCComObject::Release(CMFCComObject *this) + +{ + CMFCComObject *pCVar1; + ulong uVar2; + + pCVar1 = this + 0x28; + *(int *)pCVar1 = *(int *)pCVar1 + -1; + uVar2 = *(ulong *)(this + 0x28); + if ((*(int *)pCVar1 == 0) && (this != (CMFCComObject *)0x0)) { + (**(code **)(*(longlong *)this + 0xe0))(this,1); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18002b2ec (18 bytes) name=FUN_18002b2ec + +void FUN_18002b2ec(longlong param_1,int *param_2,undefined8 *param_3) + +{ + FUN_18002b19c(param_1,&PTR_DAT_180055f60,param_2,param_3); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b300 (104 bytes) name=`scalar_deleting_destructor' + +/* Library Function - Single Match + public: virtual void * __ptr64 __cdecl CMFCComObject::`scalar + deleting destructor'(unsigned int) __ptr64 + + Library: Visual Studio 2008 Release */ + +void * __thiscall +CMFCComObject::_scalar_deleting_destructor_ + (CMFCComObject *this,uint param_1) + +{ + longlong *plVar1; + + *(undefined4 *)(this + 0x28) = 0xc0000001; + *(undefined ***)this = vftable; + *(undefined ***)(this + 8) = vftable; + *(undefined ***)(this + 0x20) = vftable; + plVar1 = *(longlong **)(this + 0x18); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 0x18))(plVar1,0); + } + AfxOleUnlockApp(); + if ((param_1 & 1) != 0) { + thunk_FUN_180034a70(this); + } + return this; +} + + +================================================================== + +### EXPORT FUNC 18002b368 (9 bytes) name=FUN_18002b368 + +void FUN_18002b368(longlong param_1) + +{ + CMFCComObject::Release + ((CMFCComObject *)(param_1 + -8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b374 (9 bytes) name=FUN_18002b374 + +void FUN_18002b374(longlong param_1) + +{ + FUN_18002b2b8(param_1 + -8); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b380 (9 bytes) name=FUN_18002b380 + +void FUN_18002b380(longlong param_1,int *param_2,undefined8 *param_3) + +{ + FUN_18002b2ec(param_1 + -0x20,param_2,param_3); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b38c (9 bytes) name=FUN_18002b38c + +void FUN_18002b38c(longlong param_1,int *param_2,undefined8 *param_3) + +{ + FUN_18002b2ec(param_1 + -8,param_2,param_3); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b398 (9 bytes) name=FUN_18002b398 + +void FUN_18002b398(longlong param_1) + +{ + CMFCComObject::Release + ((CMFCComObject *)(param_1 + -0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b3a4 (9 bytes) name=FUN_18002b3a4 + +void FUN_18002b3a4(longlong param_1) + +{ + FUN_18002b2b8(param_1 + -0x20); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b3b0 (162 bytes) name=FUN_18002b3b0 + +void FUN_18002b3b0(CWnd *param_1,WPARAM param_2,CWnd *param_3) + +{ + ulong uVar1; + BOOL BVar2; + CWnd *pCVar3; + CWnd *pCVar4; + undefined8 local_18; + undefined8 local_10; + + uVar1 = CWnd::GetStyle(param_1); + if (((uVar1 >> 0x1e & 1) == 0) && + (pCVar3 = CWnd::GetTopLevelParent(param_1), pCVar3 != (CWnd *)0x0)) { + if ((param_3 != (CWnd *)0x0) && + ((BVar2 = IsWindow(*(HWND *)(param_3 + 0x40)), BVar2 != 0 && + (pCVar4 = CWnd::GetTopLevelParent(param_3), pCVar3 == pCVar4)))) { + return; + } + local_18 = *(undefined8 *)(param_1 + 0x40); + if (param_3 == (CWnd *)0x0) { + local_10 = 0; + } + else { + local_10 = *(undefined8 *)(param_3 + 0x40); + } + SendMessageW(*(HWND *)(pCVar3 + 0x40),0x36e,param_2,(LPARAM)&local_18); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002b454 (130 bytes) name=_AfxHandleSetCursor + +/* Library Function - Single Match + int __cdecl _AfxHandleSetCursor(class CWnd * __ptr64,unsigned int,unsigned int) + + Library: Visual Studio 2005 Release */ + +int __cdecl _AfxHandleSetCursor(CWnd *param_1,uint param_2,uint param_3) + +{ + int iVar1; + CWnd *pCVar2; + HWND pHVar3; + CWnd *pCVar4; + + if (((param_2 == 0xfffffffe) && (((param_3 == 0x201 || (param_3 == 0x207)) || (param_3 == 0x204))) + ) && (pCVar2 = CWnd::GetTopLevelParent(param_1), pCVar2 != (CWnd *)0x0)) { + pHVar3 = GetLastActivePopup(*(HWND *)(pCVar2 + 0x40)); + pCVar2 = CWnd::FromHandle(pHVar3); + if (pCVar2 != (CWnd *)0x0) { + pHVar3 = GetForegroundWindow(); + pCVar4 = CWnd::FromHandle(pHVar3); + if ((pCVar2 != pCVar4) && (iVar1 = CWnd::IsWindowEnabled(pCVar2), iVar1 != 0)) { + SetForegroundWindow(*(HWND *)(pCVar2 + 0x40)); + return 1; + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18002b4d8 (392 bytes) name=_AfxActivationWndProc + +/* Library Function - Single Match + __int64 __cdecl _AfxActivationWndProc(struct HWND__ * __ptr64,unsigned int,unsigned + __int64,__int64) + + Library: Visual Studio 2008 Release */ + +__int64 __cdecl _AfxActivationWndProc(HWND__ *param_1,uint param_2,__uint64 param_3,__int64 param_4) + +{ + ATOM nAtom; + int iVar1; + WNDPROC lpPrevWndFunc; + CWnd *pCVar2; + LRESULT LVar3; + CWnd *pCVar4; + bool bVar5; + WNDPROC local_98; + undefined8 local_90; + tagRECT local_80 [4]; + + local_90 = 0xfffffffffffffffe; + lpPrevWndFunc = GetPropW(param_1,L"AfxOldWndProc423"); + bVar5 = true; + local_98 = lpPrevWndFunc; + if (param_2 == 6) { + pCVar2 = CWnd::FromHandle((HWND__ *)param_4); + pCVar4 = CWnd::FromHandle(param_1); + FUN_18002b3b0(pCVar4,param_3,pCVar2); + lpPrevWndFunc = local_98; + } + else { + if (param_2 != 0x20) { + if (param_2 == 0x82) { + SetWindowLongPtrW(param_1,-4,(LONG_PTR)lpPrevWndFunc); + RemovePropW(param_1,L"AfxOldWndProc423"); + nAtom = GlobalFindAtomW(L"AfxOldWndProc423"); + GlobalDeleteAtom(nAtom); + } + else if (param_2 == 0x110) { + pCVar2 = CWnd::FromHandle(param_1); + _AfxPreInitDialog(pCVar2,local_80,(ulong *)&local_98); + LVar3 = CallWindowProcW(lpPrevWndFunc,param_1,0x110,param_3,param_4); + _AfxPostInitDialog(pCVar2,local_80,(ulong)local_98); + return LVar3; + } + goto LAB_18002b62e; + } + pCVar2 = CWnd::FromHandle(param_1); + iVar1 = _AfxHandleSetCursor(pCVar2,(int)(short)param_4, + (uint)((ulonglong)param_4 >> 0x10) & 0xffff); + bVar5 = iVar1 == 0; + } + if (!bVar5) { + return 0; + } +LAB_18002b62e: + LVar3 = CallWindowProcW(lpPrevWndFunc,param_1,param_2,param_3,param_4); + return LVar3; +} + + +================================================================== + +### EXPORT FUNC 18002b668 (110 bytes) name=Catch@18002b668 + +undefined * Catch_18002b668(undefined8 param_1,longlong param_2) + +{ + CException *pCVar1; + __int64 _Var2; + + *(undefined8 *)(param_2 + 0x58) = *(undefined8 *)(param_2 + 0xd0); + *(undefined4 *)(param_2 + 0x60) = *(undefined4 *)(param_2 + 0xd8); + *(undefined8 *)(param_2 + 0x68) = *(undefined8 *)(param_2 + 0xe0); + *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_2 + 0xe8); + pCVar1 = *(CException **)(param_2 + 0x40); + _Var2 = AfxProcessWndProcException(pCVar1,(tagMSG *)(param_2 + 0x58)); + *(__int64 *)(param_2 + 0x30) = _Var2; + if (pCVar1 != (CException *)0x0) { + FUN_18001ec74((longlong *)pCVar1); + } + return &DAT_18002b64a; +} + + +================================================================== + +### EXPORT FUNC 18002b6d8 (646 bytes) name=FUN_18002b6d8 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +LRESULT FUN_18002b6d8(int param_1,HWND param_2,longlong *param_3) + +{ + char cVar1; + longlong lVar2; + CWnd *pCVar3; + int iVar4; + void *pvVar5; + LRESULT LVar6; + longlong lVar7; + ulonglong uVar8; + ULONG_PTR UVar9; + HANDLE hData; + HANDLE pvVar10; + undefined8 *puVar11; + code *pcVar12; + undefined1 auStack_2c8 [32]; + AFX_MAINTAIN_STATE2 local_2a8 [8]; + int local_2a0; + undefined8 local_298; + tagWNDCLASSEXW local_288; + WCHAR local_238 [255]; + undefined2 local_3a; + ulonglong local_38; + + local_298 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStack_2c8; + pvVar5 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar5 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_1 != 3) { + LVar6 = CallNextHookEx(*(HHOOK *)((longlong)pvVar5 + 0x48),param_1,(WPARAM)param_2, + (LPARAM)param_3); + return LVar6; + } + lVar2 = *param_3; + pCVar3 = *(CWnd **)((longlong)pvVar5 + 0x28); + lVar7 = FUN_180022bb4(); + cVar1 = *(char *)(lVar7 + 0x28); + if (pCVar3 != (CWnd *)0x0) { + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_2a8,*(AFX_MODULE_STATE **)(pCVar3 + 0x38)); + FUN_180029650(pCVar3,(ulonglong)param_2); + (**(code **)(*(longlong *)pCVar3 + 0xa0))(pCVar3); + puVar11 = (undefined8 *)(**(code **)(*(longlong *)pCVar3 + 0x1e0))(pCVar3); + pcVar12 = (code *)SetWindowLongPtrW(param_2,-4,0x18002a050); + if (pcVar12 != FUN_18002a050) { + *puVar11 = pcVar12; + } + *(undefined8 *)((longlong)pvVar5 + 0x28) = 0; + if (local_2a0 != 0) { + FUN_180021f08(); + } + goto LAB_18002b909; + } + if (((*(uint *)(lVar2 + 0x30) >> 0x1e & 1) != 0) || (cVar1 != '\0')) goto LAB_18002b909; + if (DAT_180072498 == 0) { + FUN_1800357d0((ulonglong *)&local_288,0,0x50); + local_288.cbSize = 0x50; + uVar8 = FID_conflict_AfxCtxGetClassInfoW((HINSTANCE)0x0,L"#32768",&local_288); + DAT_180072498 = (short)uVar8; + if (DAT_180072498 != 0) goto LAB_18002b805; + iVar4 = GetClassNameW(param_2,local_238,0x100); + if (iVar4 != 0) { + local_3a = 0; + iVar4 = FUN_1800360e0((ushort *)local_238,(ushort *)L"#32768"); + if (iVar4 == 0) goto LAB_18002b909; + } + } + else { +LAB_18002b805: + UVar9 = GetClassLongPtrW(param_2,-0x20); + if ((short)UVar9 == DAT_180072498) goto LAB_18002b909; + } + hData = (HANDLE)GetWindowLongPtrW(param_2,-4); + if ((hData != (HANDLE)0x0) && + (pvVar10 = GetPropW(param_2,L"AfxOldWndProc423"), pvVar10 == (HANDLE)0x0)) { + SetPropW(param_2,L"AfxOldWndProc423",hData); + pvVar10 = GetPropW(param_2,L"AfxOldWndProc423"); + if (pvVar10 == hData) { + GlobalAddAtomW(L"AfxOldWndProc423"); + SetWindowLongPtrW(param_2,-4,0x18002b4d8); + } + } +LAB_18002b909: + LVar6 = CallNextHookEx(*(HHOOK *)((longlong)pvVar5 + 0x48),3,(WPARAM)param_2,(LPARAM)param_3); + if (cVar1 != '\0') { + UnhookWindowsHookEx(*(HHOOK *)((longlong)pvVar5 + 0x48)); + *(undefined8 *)((longlong)pvVar5 + 0x48) = 0; + } + return LVar6; +} + + +================================================================== + +### EXPORT FUNC 18002b968 (24 bytes) name=Unwind@18002b968 + +void Unwind_18002b968(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x20); + return; +} + + +================================================================== + +### EXPORT FUNC 18002b980 (116 bytes) name=FUN_18002b980 + +void FUN_18002b980(longlong param_1) + +{ + DWORD dwThreadId; + void *pvVar1; + HHOOK pHVar2; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(longlong *)((longlong)pvVar1 + 0x28) != param_1) { + if (*(longlong *)((longlong)pvVar1 + 0x48) == 0) { + dwThreadId = GetCurrentThreadId(); + pHVar2 = SetWindowsHookExW(5,FUN_18002b6d8,(HINSTANCE)0x0,dwThreadId); + *(HHOOK *)((longlong)pvVar1 + 0x48) = pHVar2; + if (pHVar2 == (HHOOK)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + } + *(longlong *)((longlong)pvVar1 + 0x28) = param_1; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002b9f8 (441 bytes) name=FUN_18002b9f8 + +bool FUN_18002b9f8(longlong *param_1,DWORD param_2,LPCWSTR param_3,LPCWSTR param_4,DWORD param_5, + int param_6,int param_7,int param_8,int param_9,HWND param_10,HMENU param_11, + LPVOID param_12) + +{ + bool bVar1; + int iVar2; + undefined7 extraout_var; + longlong lVar3; + HWND pHVar4; + undefined7 extraout_var_00; + LPVOID local_58; + HINSTANCE local_50; + HMENU local_48; + HWND local_40; + int local_38; + int local_34; + int local_30; + int local_2c; + DWORD local_28; + LPCWSTR local_20; + LPCWSTR local_18; + DWORD local_10; + + if (param_4 != (LPCWSTR)0x0) { + bVar1 = FUN_18002e408((longlong)param_4); + if ((int)CONCAT71(extraout_var,bVar1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + local_28 = param_5; + local_2c = param_6; + local_30 = param_7; + local_34 = param_8; + local_38 = param_9; + local_40 = param_10; + local_48 = param_11; + local_20 = param_4; + local_18 = param_3; + local_10 = param_2; + lVar3 = FUN_180022bb4(); + local_50 = *(HINSTANCE *)(lVar3 + 0x10); + local_58 = param_12; + iVar2 = (**(code **)(*param_1 + 200))(param_1,&local_58); + if (iVar2 == 0) { + (**(code **)(*param_1 + 0x228))(); + bVar1 = false; + } + else { + FUN_18002b980((longlong)param_1); + pHVar4 = FID_conflict_AfxCtxCreateWindowExA + (local_10,local_18,local_20,local_28,local_2c,local_30,local_34,local_38, + local_40,local_48,local_50,local_58); + bVar1 = FUN_1800296fc(); + if ((int)CONCAT71(extraout_var_00,bVar1) == 0) { + (**(code **)(*param_1 + 0x228))(param_1); + } + bVar1 = pHVar4 != (HWND)0x0; + } + return bVar1; +} + + +================================================================== + +### EXPORT FUNC 18002bbb4 (204 bytes) name=FUN_18002bbb4 + +void FUN_18002bbb4(CWnd *param_1) + +{ + int iVar1; + CWnd *pCVar2; + HWND hWnd; + + iVar1 = (**(code **)(*(longlong *)param_1 + 0x240))(); + if (iVar1 != 0) { + (**(code **)(*(longlong *)param_1 + 0x2e0))(param_1); + } + SendMessageW(*(HWND *)(param_1 + 0x40),0x1f,0,0); + FUN_18002a320(*(HWND *)(param_1 + 0x40),0x1f,0,0,1,1); + pCVar2 = CWnd::GetTopLevelParent(param_1); + if (pCVar2 == (CWnd *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + SendMessageW(*(HWND *)(pCVar2 + 0x40),0x1f,0,0); + FUN_18002a320(*(HWND *)(pCVar2 + 0x40),0x1f,0,0,1,1); + hWnd = GetCapture(); + if (hWnd != (HWND)0x0) { + SendMessageW(hWnd,0x1f,0,0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002bc84 (2964 bytes) name=FUN_18002bc84 + +undefined8 +FUN_18002bc84(CWnd *param_1,uint param_2,HWND__ *param_3,HWND__ *param_4,ulonglong *param_5) + +{ + code *pcVar1; + short sVar2; + int iVar3; + uint uVar4; + CWnd *pCVar5; + undefined8 *puVar6; + undefined8 uVar7; + longlong lVar8; + CWnd *pCVar9; + ulonglong uVar10; + short sVar11; + uint *puVar12; + uint *puVar13; + ulonglong local_108; + int local_100; + int iStack_fc; + undefined4 local_f8; + CDC local_f0 [8]; + undefined8 local_e8; + undefined8 local_d0; + CWnd local_c8 [64]; + HWND__ *local_88; + longlong local_28; + + local_d0 = 0xfffffffffffffffe; + local_108 = 0; + local_f8 = 0x7fffffff; + if (param_2 == 0x111) { + iVar3 = (**(code **)(*(longlong *)param_1 + 0x1d0))(param_1,param_3,param_4); + if (iVar3 == 0) { + return 0; + } + local_108 = 1; + } + else if (param_2 == 0x4e) { + if ((*(longlong *)param_4 == 0) || + (iVar3 = (**(code **)(*(longlong *)param_1 + 0x1d8))(param_1,param_3,param_4,&local_108), + iVar3 == 0)) { + return 0; + } + } + else { + if (param_2 == 6) { + pCVar5 = CWnd::FromHandle(param_4); + FUN_18002b3b0(param_1,(WPARAM)param_3,pCVar5); + } + sVar11 = (short)param_4; + if ((param_2 == 0x20) && + (iVar3 = _AfxHandleSetCursor(param_1,(int)sVar11,(uint)((ulonglong)param_4 >> 0x10) & 0xffff) + , iVar3 != 0)) { + local_108 = 1; + } + else if ((((*(longlong *)(param_1 + 0x98) == 0) || + (*(int *)(*(longlong *)(param_1 + 0x98) + 0xe0) < 1)) || + ((((param_2 < 0x200 || (0x209 < param_2)) && ((param_2 < 0x100 || (0x10f < param_2)))) + && (0x10 < param_2 - 0x281)))) || + (iVar3 = (**(code **)(**(longlong **)(param_1 + 0x98) + 0x128)) + (*(longlong **)(param_1 + 0x98),param_2,param_3,param_4,&local_108), + iVar3 == 0)) { + puVar6 = (undefined8 *)(**(code **)(*(longlong *)param_1 + 0x50))(param_1); + uVar10 = (ulonglong)(((uint)puVar6 ^ param_2) & 0x1ff); + local_f8 = 7; + FUN_1800237a0(7); + if ((param_2 != *(uint *)(&DAT_18006f190 + uVar10 * 0x18)) || + (puVar6 != *(undefined8 **)(&DAT_18006f1a0 + uVar10 * 0x18))) { + *(uint *)(&DAT_18006f190 + uVar10 * 0x18) = param_2; + *(undefined8 **)(&DAT_18006f1a0 + uVar10 * 0x18) = puVar6; + pcVar1 = (code *)*puVar6; + do { + if (pcVar1 == (code *)0x0) { + *(undefined8 *)(&DAT_18006f198 + uVar10 * 0x18) = 0; + FUN_180023834(7); + return 0; + } + if (param_2 < 0xc000) { + puVar12 = (uint *)puVar6[1]; + lVar8 = *(longlong *)(puVar12 + 4); + for (; (puVar13 = (uint *)0x0, lVar8 != 0 && + (((*puVar12 != param_2 || (puVar12[1] != 0)) || + (puVar13 = puVar12, puVar12[2] != 0)))); puVar12 = puVar12 + 8) { + lVar8 = *(longlong *)(puVar12 + 0xc); + } + if (puVar13 != (uint *)0x0) { + *(uint **)(&DAT_18006f198 + uVar10 * 0x18) = puVar13; + FUN_180023834(7); + goto LAB_18002bf17; + } + } + else { + puVar12 = (uint *)puVar6[1]; + while( true ) { + lVar8 = *(longlong *)(puVar12 + 4); + for (; (puVar13 = (uint *)0x0, lVar8 != 0 && + (((*puVar12 != 0xc000 || (puVar12[1] != 0)) || + (puVar13 = puVar12, puVar12[2] != 0)))); puVar12 = puVar12 + 8) { + lVar8 = *(longlong *)(puVar12 + 0xc); + } + if (puVar13 == (uint *)0x0) break; + if (**(uint **)(puVar13 + 4) == param_2) { + *(uint **)(&DAT_18006f198 + uVar10 * 0x18) = puVar13; + FUN_180023834(7); + goto LAB_18002c7ae; + } + puVar12 = puVar13 + 8; + } + } + puVar6 = (undefined8 *)(*pcVar1)(); + pcVar1 = (code *)*puVar6; + } while( true ); + } + puVar13 = *(uint **)(&DAT_18006f198 + uVar10 * 0x18); + FUN_180023834(7); + if (puVar13 == (uint *)0x0) { + return 0; + } + if (param_2 < 0xc000) { +LAB_18002bf17: + local_f8 = 0x7fffffff; + pcVar1 = *(code **)(puVar13 + 6); + uVar10 = *(ulonglong *)(puVar13 + 4); + sVar2 = (short)((ulonglong)param_4 >> 0x10); + if (uVar10 < 0x1e) { + if (uVar10 == 0x1d) { + iVar3 = (*pcVar1)(param_1); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 < 0x10) { + if (uVar10 == 0xf) { + uVar7 = FromHandle(param_4); + local_108 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff, + (ulonglong)param_3 >> 0x10 & 0xffff,uVar7); + } + else if (uVar10 < 9) { + if (uVar10 == 8) { + FUN_1800309d0((undefined8 *)local_f0); + local_e8 = *(undefined8 *)(param_4 + 2); + CWnd::CWnd(local_c8); + local_88 = *(HWND__ **)param_4; + iVar3 = param_4[4].unused; + pCVar5 = CWnd::FromHandlePermanent(local_88); + if (pCVar5 == (CWnd *)0x0) { + if ((*(longlong *)(param_1 + 0x98) != 0) && + (lVar8 = FUN_180030118(*(longlong *)(param_1 + 0x98) + 0x48,(ulonglong)local_88 + ), lVar8 != 0)) { + local_28 = lVar8; + } + pCVar5 = local_c8; + } + local_108 = (*pcVar1)(param_1,local_f0,pCVar5,iVar3); + local_e8 = 0; + local_88 = (HWND__ *)0x0; + CWnd::~CWnd(local_c8); + CDC::~CDC(local_f0); + } + else if (uVar10 == 1) { + uVar7 = FromHandle(param_3); + iVar3 = (*pcVar1)(param_1,uVar7); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 2) { + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 3) { + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 4) { + iVar3 = (*pcVar1)(param_1,param_3); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 5) { + pCVar5 = CWnd::FromHandle(param_3); + iVar3 = (*pcVar1)(param_1,pCVar5,(ulonglong)param_4 & 0xffff, + (ulonglong)param_4 >> 0x10 & 0xffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 6) { + pCVar5 = CWnd::FromHandle(param_3); + iVar3 = (*pcVar1)(param_1,pCVar5,param_4); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 7) { + iVar3 = (*pcVar1)(param_1,param_4); + local_108 = (ulonglong)iVar3; + } + } + else if (uVar10 == 9) { + FUN_1800309d0((undefined8 *)local_f0); + local_e8 = *(undefined8 *)(param_4 + 2); + local_108 = (*pcVar1)(param_1,local_f0,param_4[4].unused); + local_e8 = 0; + CDC::~CDC(local_f0); + } + else if (uVar10 == 10) { + pCVar5 = CWnd::FromHandle(param_4); + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff,pCVar5, + (ulonglong)param_3 >> 0x10 & 0xffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 0xb) { + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff, + (ulonglong)param_3 >> 0x10 & 0xffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 0xc) { + pCVar5 = CWnd::FromHandle(param_3); + iVar3 = (*pcVar1)(param_1,pCVar5,(ulonglong)param_4 & 0xffff, + (ulonglong)param_4 >> 0x10 & 0xffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 0xd) { + iVar3 = (*pcVar1)(param_1,param_4); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 0xe) { + local_108 = (*pcVar1)(param_1,param_3,param_4); + } + } + else if (uVar10 < 0x17) { + if (uVar10 == 0x16) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff,(ulonglong)param_3 >> 0x10 & 0xffff); + } + else if (uVar10 == 0x10) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,param_4); + } + else if (uVar10 == 0x11) { + (*pcVar1)(param_1,param_3); + } + else if (uVar10 == 0x12) { + (*pcVar1)(param_1,param_3,param_4); + } + else if (uVar10 == 0x13) { + (*pcVar1)(param_1); + } + else if (uVar10 == 0x14) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff); + } + else if (uVar10 == 0x15) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,(ulonglong)param_4 & 0xffffffff); + } + } + else if (uVar10 == 0x17) { + (*pcVar1)(param_1,(int)sVar11,(int)sVar2); + } + else if (uVar10 == 0x18) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,(ulonglong)param_4 & 0xffff, + (ulonglong)param_4 >> 0x10 & 0xffff); + } + else if (uVar10 == 0x19) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,(ulonglong)param_4 & 0xffff, + (ulonglong)param_4 >> 0x10 & 0xffff); + } + else if (uVar10 == 0x1a) { + pCVar5 = CWnd::FromHandle(param_4); + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,pCVar5); + } + else if (uVar10 == 0x1b) { + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 0x1c) { + uVar4 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff); + local_108 = (ulonglong)uVar4; + } + } + else if (uVar10 < 0x2d) { + if (uVar10 == 0x2c) { + (*pcVar1)(param_1,param_4); + } + else if (uVar10 < 0x25) { + if (uVar10 == 0x24) { + pCVar5 = CWnd::FromHandle(param_4); + (*pcVar1)(param_1,pCVar5); + } + else if (uVar10 == 0x1e) { + (*pcVar1)(param_1,param_3,param_4); + } + else if (uVar10 == 0x1f) { + pCVar5 = CWnd::FromHandle(param_3); + pCVar9 = CWnd::FromHandle(param_4); + (*pcVar1)(param_1,*(HWND__ **)(param_1 + 0x40) == param_4,pCVar9,pCVar5); + } + else if (uVar10 == 0x20) { + uVar7 = FromHandle(param_3); + (*pcVar1)(param_1,uVar7); + } + else if (uVar10 == 0x21) { + uVar7 = FromHandle(param_3); + (*pcVar1)(param_1,uVar7); + } + else if (uVar10 == 0x22) { + uVar7 = FromHandle(param_3); + (*pcVar1)(param_1,uVar7,(int)sVar11,(int)sVar2); + } + else if (uVar10 == 0x23) { + pCVar5 = CWnd::FromHandle(param_3); + (*pcVar1)(param_1,pCVar5); + } + } + else if (uVar10 == 0x25) { + pCVar5 = CWnd::FromHandle(param_3); + (*pcVar1)(param_1,pCVar5,(ulonglong)param_4 & 0xffff,(ulonglong)param_4 >> 0x10 & 0xffff + ); + } + else if (uVar10 == 0x26) { + local_100 = (int)sVar11; + iStack_fc = (int)sVar2; + pCVar5 = CWnd::FromHandle(param_3); + (*pcVar1)(param_1,pCVar5,CONCAT44(iStack_fc,local_100)); + } + else if (uVar10 == 0x27) { + pCVar5 = CWnd::FromHandle(param_3); + (*pcVar1)(param_1,pCVar5,param_4); + } + else if (uVar10 == 0x28) { + local_108 = (*pcVar1)(param_1); + } + else if (uVar10 == 0x29) { + pCVar5 = CWnd::FromHandle(param_4); + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff,pCVar5,(ulonglong)param_3 >> 0x10 & 0xffff + ); + } + else if (uVar10 == 0x2a || uVar10 == 0x2b) { + iVar3 = (int)(short)((ulonglong)param_3 >> 0x10); + if (uVar10 == 0x2a) { + pCVar5 = CWnd::FromHandle(param_4); + (*pcVar1)(param_1,(int)(short)param_3,iVar3,pCVar5); + } + else { + (*pcVar1)(param_1,(int)(short)param_3,iVar3); + } + } + } + else if (uVar10 < 0x34) { + if (uVar10 == 0x33) { + (*pcVar1)(param_1,param_4); + } + else if (uVar10 == 0x2d) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,param_4); + } + else if (uVar10 == 0x2e) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,param_4); + local_108 = 1; + } + else if (uVar10 == 0x2f) { + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,param_4); + local_108 = (ulonglong)iVar3; + } + else if (uVar10 == 0x30) { + local_100 = (int)sVar11; + iStack_fc = (int)sVar2; + uVar4 = (*pcVar1)(param_1,CONCAT44(iStack_fc,local_100)); + local_108 = (ulonglong)uVar4; + } + else if (uVar10 == 0x31) { + uVar4 = (*pcVar1)(param_1); + local_108 = (ulonglong)uVar4; + } + else if (uVar10 == 0x32) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,param_4); + } + } + else if (uVar10 == 0x34) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff,(ulonglong)param_3 >> 0x10 & 0xffff,param_4) + ; + } + else if (uVar10 == 0x35) { + local_100 = (int)sVar11; + iStack_fc = (int)sVar2; + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,CONCAT44(iStack_fc,local_100)); + } + else if (uVar10 == 0x36) { + (*pcVar1)(param_1,(ulonglong)param_3 & 0xffffffff,param_4); + local_108 = 1; + } + else if (uVar10 == 0x37) { + local_100 = (int)sVar11; + iStack_fc = (int)sVar2; + iVar3 = (*pcVar1)(param_1,(ulonglong)param_3 & 0xffff,(ulonglong)param_3 >> 0x10, + CONCAT44(iStack_fc,local_100)); + local_108 = (ulonglong)iVar3; + if (local_108 == 0) { + return 0; + } + } + else if (uVar10 == 0x44) { + local_108 = (*pcVar1)(param_1); + if (local_108 != 0) { + return 0; + } + } + else if (uVar10 == 0x45) { + local_100 = (int)sVar11; + iStack_fc = (int)sVar2; + local_108 = (*pcVar1)(param_1,CONCAT44(iStack_fc,local_100)); + } + } + else { +LAB_18002c7ae: + local_f8 = 0x7fffffff; + local_108 = (**(code **)(puVar13 + 6))(param_1,param_3,param_4); + } + } + } + if (param_5 != (ulonglong *)0x0) { + *param_5 = local_108; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18002c824 (24 bytes) name=Unwind@18002c824 + +void Unwind_18002c824(undefined8 param_1,longlong param_2) + +{ + CInternalGlobalLock::~CInternalGlobalLock((CInternalGlobalLock *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002c844 (24 bytes) name=Unwind@18002c844 + +void Unwind_18002c844(undefined8 param_1,longlong param_2) + +{ + CDC::~CDC((CDC *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002c864 (24 bytes) name=Unwind@18002c864 + +void Unwind_18002c864(undefined8 param_1,longlong param_2) + +{ + CWnd::~CWnd((CWnd *)(param_2 + 0x70)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002c884 (24 bytes) name=Unwind@18002c884 + +void Unwind_18002c884(undefined8 param_1,longlong param_2) + +{ + CDC::~CDC((CDC *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002c89c (300 bytes) name=ReflectChildNotify + +/* Library Function - Single Match + protected: int __cdecl CWnd::ReflectChildNotify(unsigned int,unsigned __int64,__int64,__int64 * + __ptr64) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +int __thiscall +CWnd::ReflectChildNotify(CWnd *this,uint param_1,__uint64 param_2,__int64 param_3,__int64 *param_4) + +{ + uint uVar1; + int iVar2; + undefined8 uVar3; + __int64 *local_28; + __uint64 local_20; + int local_18; + + if (param_1 < 0x2b) { +LAB_18002c8ea: + if (param_1 - 0x132 < 7) { + local_18 = param_1 - 0x132; + local_20 = param_2; + uVar3 = FUN_18002bc84(this,0xbc19,(HWND__ *)0x0,(HWND__ *)&local_28,(ulonglong *)param_4); + return -(uint)(*param_4 != 0) & (uint)uVar3; + } +LAB_18002c9c0: + iVar2 = 0; + } + else { + if ((0x2f < param_1) && (param_1 != 0x39)) { + if (param_1 == 0x4e) { + local_28 = param_4; + local_20 = param_3; + uVar1 = FUN_18002d834((longlong *)this,0, + (ulonglong)(*(ushort *)(param_3 + 0x10) | 0xbc4e0000),&local_28, + (longlong *)0x0); + return uVar1; + } + if (param_1 == 0x111) { + uVar1 = FUN_18002d834((longlong *)this,0,(ulonglong)((ushort)(param_2 >> 0x10) | 0xbd110000) + ,(undefined8 *)0x0,(longlong *)0x0); + if (uVar1 != 0) { + if (param_4 == (__int64 *)0x0) { + return 1; + } + *param_4 = 1; + return 1; + } + goto LAB_18002c9c0; + } + if ((param_1 < 0x114) || ((0x115 < param_1 && (param_1 != 0x210)))) goto LAB_18002c8ea; + } + uVar3 = FUN_18002bc84(this,param_1 + 0xbc00,(HWND__ *)param_2,(HWND__ *)param_3, + (ulonglong *)param_4); + iVar2 = (int)uVar3; + } + return iVar2; +} + + +================================================================== + +### EXPORT FUNC 18002c9c8 (65 bytes) name=OnSettingChange + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Multiple Matches With Same Base Name + protected: void __cdecl CWnd::OnSettingChange(unsigned int,char const * __ptr64) __ptr64 + protected: void __cdecl CWnd::OnSettingChange(unsigned int,wchar_t const * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +void OnSettingChange(CWnd *param_1) + +{ + _DAT_18006f180 = 0; + if (*(longlong *)(param_1 + 0x98) != 0) { + (**(code **)(**(longlong **)(param_1 + 0x98) + 0xa0))(); + } + CWnd::OnDisplayChange(param_1,0,0); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ca0c (168 bytes) name=CreateInstance + +/* Library Function - Single Match + public: static long __cdecl CMFCComObject::CreateInstance(class + CMFCComObject * __ptr64 * __ptr64) + + Library: Visual Studio 2008 Release */ + +long __cdecl +CMFCComObject::CreateInstance + (CMFCComObject **param_1) + +{ + CMFCComObject *pCVar1; + CMFCComObject *pCVar2; + long lVar3; + + pCVar2 = (CMFCComObject *)0x0; + if (param_1 == (CMFCComObject **)0x0) { + lVar3 = -0x7fffbffd; + } + else { + *param_1 = (CMFCComObject *)0x0; + pCVar1 = FUN_18001eb74(0x30); + if (pCVar1 != (CMFCComObject *)0x0) { + *(undefined4 *)(pCVar1 + 0x28) = 0; + *(undefined8 *)(pCVar1 + 0x10) = 0; + *(undefined8 *)(pCVar1 + 0x18) = 0; + *(undefined ***)pCVar1 = vftable; + *(undefined ***)(pCVar1 + 8) = vftable; + *(undefined ***)(pCVar1 + 0x20) = vftable; + AfxOleLockApp(); + pCVar2 = pCVar1; + } + lVar3 = -0x7ff8fff2; + if (pCVar2 != (CMFCComObject *)0x0) { + lVar3 = 0; + } + *param_1 = pCVar2; + } + return lVar3; +} + + +================================================================== + +### EXPORT FUNC 18002cacc (24 bytes) name=Unwind@18002cacc + +void Unwind_18002cacc(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x78)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002caec (38 bytes) name=Catch@18002caec + +undefined * Catch_18002caec(undefined8 param_1,longlong param_2) + +{ + FUN_18001ec74(*(longlong **)(param_2 + 0x28)); + return &DAT_18002ca9d; +} + + +================================================================== + +### EXPORT FUNC 18002cb14 (73 bytes) name=~CWaitCursor + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + public: __cdecl CWaitCursor::~CWaitCursor(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWaitCursor::~CWaitCursor(CWaitCursor *this) + +{ + longlong lVar1; + undefined1 auStack_468 [64]; + undefined8 local_428; + ulonglong local_18; + + local_428 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_468; + lVar1 = FUN_180022bb4(); + CCmdTarget::EndWaitCursor(*(CCmdTarget **)(lVar1 + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002cb64 (253 bytes) name=Catch@18002cb64 + +undefined8 Catch_18002cb64(undefined8 param_1,longlong param_2) + +{ + wchar_t *pwVar1; + wchar_t *pwVar2; + int iVar3; + undefined **ppuVar4; + longlong lVar5; + + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + *(longlong *)(param_2 + 0x30) = lVar5 + 0x18; + iVar3 = (**(code **)(**(longlong **)(param_2 + 0x38) + 0x18)) + (*(longlong **)(param_2 + 0x38),param_2 + 0x50,0x200,0); + if (iVar3 == 0) { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\include\\afxwin2.inl"); + } + else { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)\n%s","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\include\\afxwin2.inl"); + } + pwVar2 = *(wchar_t **)(param_2 + 0x30); + AfxMessageBox(pwVar2,0,0); + LOCK(); + pwVar1 = pwVar2 + -4; + iVar3 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar2 + -0xc) + 8))(); + } + (**(code **)(**(longlong **)(param_2 + 0x38) + 8))(*(longlong **)(param_2 + 0x38),1); + return 0x18002cb45; +} + + +================================================================== + +### EXPORT FUNC 18002cc64 (24 bytes) name=Unwind@18002cc64 + +void Unwind_18002cc64(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002cc7c (163 bytes) name=FUN_18002cc7c + +void FUN_18002cc7c(CWnd *param_1,ULONG_PTR param_2,UINT param_3) + +{ + BOOL BVar1; + longlong lVar2; + CWnd *pCVar3; + CWaitCursor local_res20 [8]; + + lVar2 = FUN_180022bb4(); + lVar2 = *(longlong *)(lVar2 + 8); + FUN_180022bb4(); + FUN_18002dac8(); + FUN_18002bbb4(param_1); + pCVar3 = CWnd::GetTopLevelParent(param_1); + if (pCVar3 == (CWnd *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + BVar1 = WinHelpW(*(HWND *)(pCVar3 + 0x40),*(LPCWSTR *)(lVar2 + 200),param_3,param_2); + if (BVar1 == 0) { + FUN_180024b20(0xf107,0,0xffffffff); + } + CWaitCursor::~CWaitCursor(local_res20); + return; +} + + +================================================================== + +### EXPORT FUNC 18002cd2c (24 bytes) name=Unwind@18002cd2c + +void Unwind_18002cd2c(undefined8 param_1,longlong param_2) + +{ + CWaitCursor::~CWaitCursor((CWaitCursor *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002cd44 (163 bytes) name=FUN_18002cd44 + +void FUN_18002cd44(CWnd *param_1,undefined8 param_2,undefined4 param_3) + +{ + longlong lVar1; + CWnd *pCVar2; + CWaitCursor local_res20 [8]; + + lVar1 = FUN_180022bb4(); + lVar1 = *(longlong *)(lVar1 + 8); + FUN_180022bb4(); + FUN_18002dac8(); + FUN_18002bbb4(param_1); + pCVar2 = CWnd::GetTopLevelParent(param_1); + if (pCVar2 == (CWnd *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + lVar1 = FUN_18002ad24(*(undefined8 *)(pCVar2 + 0x40),*(undefined8 *)(lVar1 + 200),param_3,param_2) + ; + if (lVar1 == 0) { + FUN_180024b20(0xf107,0,0xffffffff); + } + CWaitCursor::~CWaitCursor(local_res20); + return; +} + + +================================================================== + +### EXPORT FUNC 18002cdf4 (24 bytes) name=Unwind@18002cdf4 + +void Unwind_18002cdf4(undefined8 param_1,longlong param_2) + +{ + CWaitCursor::~CWaitCursor((CWaitCursor *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ce0c (8 bytes) name=FUN_18002ce0c + +undefined ** FUN_18002ce0c(void) + +{ + return &PTR_FUN_180056158; +} + + +================================================================== + +### EXPORT FUNC 18002ce14 (94 bytes) name=OnChildNotify + +/* Library Function - Single Match + protected: virtual int __cdecl CWnd::OnChildNotify(unsigned int,unsigned __int64,__int64,__int64 + * __ptr64) __ptr64 + + Library: Visual Studio 2005 Release */ + +int __thiscall +CWnd::OnChildNotify(CWnd *this,uint param_1,__uint64 param_2,__int64 param_3,__int64 *param_4) + +{ + int iVar1; + LRESULT LVar2; + + if (*(longlong *)(this + 0xa0) == 0) { + iVar1 = ReflectChildNotify(this,param_1,param_2,param_3,param_4); + } + else { + LVar2 = SendMessageW(*(HWND *)(this + 0x40),param_1 + 0x2000,param_2,param_3); + if ((6 < param_1 - 0x132) || (iVar1 = 0, LVar2 != 0)) { + if (param_4 != (__int64 *)0x0) { + *param_4 = LVar2; + } + iVar1 = 1; + } + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18002ce74 (238 bytes) name=CreateAccessibleProxy + +/* Library Function - Single Match + public: virtual long __cdecl CWnd::CreateAccessibleProxy(unsigned __int64,__int64,__int64 * + __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +long __thiscall +CWnd::CreateAccessibleProxy(CWnd *this,__uint64 param_1,__int64 param_2,__int64 *param_3) + +{ + int iVar1; + LRESULT LVar2; + longlong *local_res18; + CMFCComObject *local_18; + undefined8 local_10; + + local_10 = 0xfffffffffffffffe; + iVar1 = -0x7fffbffb; + if ((int)param_2 == -4) { + iVar1 = (**(code **)(*(longlong *)this + 0x110))(); + if (-1 < iVar1) { + if (*(LPUNKNOWN *)(this + 0x58) == (LPUNKNOWN)0x0) { + iVar1 = CMFCComObject::CreateInstance(&local_18); + if (-1 < iVar1) { + local_res18 = (longlong *)0x0; + iVar1 = (*(code *)**(undefined8 **)local_18)(local_18,&DAT_180055808,&local_res18); + if (-1 < iVar1) { + *(longlong **)(this + 0x58) = local_res18; + (**(code **)(*local_res18 + 0x18))(local_res18,this + 0x60,this + 0x68); + LVar2 = LresultFromObject((IID *)&DAT_1800557f8,param_1,*(LPUNKNOWN *)(this + 0x58)); + *param_3 = LVar2; + } + iVar1 = 0; + if (local_res18 != (longlong *)0x0) { + (**(code **)(*local_res18 + 0x10))(); + iVar1 = 0; + } + } + } + else { + LVar2 = LresultFromObject((IID *)&DAT_1800557f8,param_1,*(LPUNKNOWN *)(this + 0x58)); + *param_3 = LVar2; + iVar1 = 0; + } + } + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18002cf64 (24 bytes) name=Unwind@18002cf64 + +void Unwind_18002cf64(undefined8 param_1,longlong param_2) + +{ + FUN_180028be0((longlong *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002cf7c (188 bytes) name=FUN_18002cf7c + +undefined8 FUN_18002cf7c(WNDCLASSW *param_1) + +{ + LPCWSTR pWVar1; + undefined1 uVar2; + ulonglong uVar3; + undefined7 extraout_var; + longlong lVar4; + longlong lVar5; + undefined8 uVar6; + int iVar7; + tagWNDCLASSW local_68; + + uVar3 = FID_conflict_AfxCtxGetClassInfoW(param_1->hInstance,param_1->lpszClassName,&local_68); + iVar7 = 0; + if ((int)uVar3 == 0) { + uVar2 = FUN_1800270ac(param_1); + if ((short)CONCAT71(extraout_var,uVar2) == 0) { + uVar6 = 0; + } + else { + lVar4 = FUN_180022bb4(); + if (*(char *)(lVar4 + 0x28) != '\0') { + FUN_1800237a0(1); + lVar4 = FUN_180022bb4(); + pWVar1 = param_1->lpszClassName; + if (pWVar1 != (LPCWSTR)0x0) { + lVar5 = FUN_1800355e0(pWVar1); + iVar7 = (int)lVar5; + } + FUN_18000aab0((longlong *)(lVar4 + 0x58),pWVar1,iVar7); + FUN_180020dc0((longlong *)(lVar4 + 0x58),10); + FUN_180023834(1); + } + uVar6 = 1; + } + } + else { + uVar6 = 1; + } + return uVar6; +} + + +================================================================== + +### EXPORT FUNC 18002d03c (32 bytes) name=Catch@18002d03c + +void Catch_18002d03c(void) + +{ + FUN_180023834(1); + /* WARNING: Subroutine does not return */ + _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); +} + + +================================================================== + +### EXPORT FUNC 18002d064 (376 bytes) name=FUN_18002d064 + +int FUN_18002d064(longlong param_1,ushort *param_2) + +{ + int *piVar1; + int iVar2; + ushort uVar3; + uint uVar4; + ushort uVar5; + LRESULT LVar6; + ushort *lParam; + int iVar7; + longlong local_res10; + undefined4 local_68 [2]; + ulonglong local_60; + longlong local_58; + + iVar7 = 1; + if (param_2 != (ushort *)0x0) { + do { + uVar3 = *param_2; + if (uVar3 == 0) break; + uVar5 = param_2[1]; + uVar4 = *(uint *)(param_2 + 2); + lParam = param_2 + 4; + if (uVar5 == 0x1234) { +LAB_18002d107: + FUN_1800357d0(&local_60,0,0x30); + local_60 = 0xffffffffffffffff; + local_68[0] = 1; + FUN_18000b610(&local_res10,(short *)lParam); + local_58 = local_res10; + LVar6 = SendDlgItemMessageW(*(HWND *)(param_1 + 0x40),(uint)uVar3,0x40b,0,(LPARAM)local_68); + if (LVar6 == -1) { + iVar7 = 0; + } + LOCK(); + piVar1 = (int *)(local_res10 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0x18) + 8))(); + } + } + else if (uVar5 == 0x401) { + uVar5 = 0x180; +LAB_18002d0e1: + LVar6 = SendDlgItemMessageA(*(HWND *)(param_1 + 0x40),(uint)uVar3,(uint)uVar5,0, + (LPARAM)lParam); + if (LVar6 == -1) { + iVar7 = 0; + } + } + else { + if (uVar5 == 0x403) { + uVar5 = 0x143; + } + if (uVar5 == 0x40b) goto LAB_18002d107; + if ((uVar5 == 0x180) || (uVar5 == 0x143)) goto LAB_18002d0e1; + } + param_2 = (ushort *)((longlong)lParam + (ulonglong)uVar4); + } while (iVar7 != 0); + if (iVar7 == 0) { + return 0; + } + } + FUN_18002a320(*(HWND *)(param_1 + 0x40),0x364,0,0,0,0); + return iVar7; +} + + +================================================================== + +### EXPORT FUNC 18002d1dc (82 bytes) name=FUN_18002d1dc + +void FUN_18002d1dc(WNDCLASSW *param_1,LPCWSTR param_2,uint param_3) + +{ + longlong lVar1; + HICON pHVar2; + + param_1->lpszClassName = param_2; + lVar1 = FUN_180022bb4(); + pHVar2 = LoadIconW(*(HINSTANCE *)(lVar1 + 0x18),(LPCWSTR)(ulonglong)(param_3 & 0xffff)); + param_1->hIcon = pHVar2; + if (pHVar2 == (HICON)0x0) { + pHVar2 = LoadIconW((HINSTANCE)0x0,(LPCWSTR)0x7f00); + param_1->hIcon = pHVar2; + } + FUN_18002cf7c(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18002d230 (936 bytes) name=FUN_18002d230 + +bool FUN_18002d230(uint param_1) + +{ + int iVar1; + uint uVar2; + longlong lVar3; + longlong lVar4; + undefined8 uVar5; + uint uVar6; + uint uVar7; + bool bVar8; + tagINITCOMMONCONTROLSEX local_res10; + WNDCLASSW local_68; + + lVar3 = FUN_180022bb4(); + uVar7 = param_1 & ~*(uint *)(lVar3 + 0x2c); + if (uVar7 == 0) { + bVar8 = true; + } + else { + FUN_1800357d0((ulonglong *)&local_68,0,0x48); + local_68.lpfnWndProc = DefWindowProcW_exref; + lVar4 = FUN_180022bb4(); + local_68.hInstance = *(HINSTANCE *)(lVar4 + 0x10); + local_68.hCursor = DAT_180072510; + local_res10.dwSize = 8; + uVar6 = 0; + if ((uVar7 & 1) != 0) { + local_68.style = 0xb; + local_68.lpszClassName = L"AfxWnd80su"; + uVar5 = FUN_18002cf7c(&local_68); + uVar6 = 0; + if ((int)uVar5 != 0) { + uVar6 = 1; + } + } + if ((uVar7 & 0x20) != 0) { + local_68.style = local_68.style | 0x8b; + local_68.lpszClassName = L"AfxOleControl80su"; + uVar5 = FUN_18002cf7c(&local_68); + if ((int)uVar5 != 0) { + uVar6 = uVar6 | 0x20; + } + } + if ((uVar7 & 2) != 0) { + local_68.style = 0; + local_68.lpszClassName = L"AfxControlBar80su"; + local_68.hbrBackground = (HBRUSH)0x10; + uVar5 = FUN_18002cf7c(&local_68); + if ((int)uVar5 != 0) { + uVar6 = uVar6 | 2; + } + } + if ((uVar7 & 4) != 0) { + local_68.style = 8; + local_68.hbrBackground = (HBRUSH)0x0; + iVar1 = FUN_18002d1dc(&local_68,L"AfxMDIFrame80su",0x7a01); + if (iVar1 != 0) { + uVar6 = uVar6 | 4; + } + } + if ((uVar7 & 8) != 0) { + local_68.style = 0xb; + local_68.hbrBackground = (HBRUSH)0x6; + iVar1 = FUN_18002d1dc(&local_68,L"AfxFrameOrView80su",0x7a02); + if (iVar1 != 0) { + uVar6 = uVar6 | 8; + } + } + if ((uVar7 & 0x10) != 0) { + local_res10.dwICC = 0xff; + uVar2 = _AfxInitCommonControls(&local_res10,0x3fc0); + uVar6 = uVar6 | uVar2; + uVar7 = uVar7 & 0xffffc03f; + } + if ((uVar7 & 0x40) != 0) { + local_res10.dwICC = 0x10; + uVar2 = _AfxInitCommonControls(&local_res10,0x40); + uVar6 = uVar6 | uVar2; + } + if ((char)uVar7 < '\0') { + local_res10.dwICC = 2; + uVar2 = _AfxInitCommonControls(&local_res10,0x80); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 8 & 1) != 0) { + local_res10.dwICC = 8; + uVar2 = _AfxInitCommonControls(&local_res10,0x100); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 9 & 1) != 0) { + local_res10.dwICC = 0x20; + uVar2 = _AfxInitCommonControls(&local_res10,0x200); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 10 & 1) != 0) { + local_res10.dwICC = 1; + uVar2 = _AfxInitCommonControls(&local_res10,0x400); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0xb & 1) != 0) { + local_res10.dwICC = 0x40; + uVar2 = _AfxInitCommonControls(&local_res10,0x800); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0xc & 1) != 0) { + local_res10.dwICC = 4; + uVar2 = _AfxInitCommonControls(&local_res10,0x1000); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0xd & 1) != 0) { + local_res10.dwICC = 0x80; + uVar2 = _AfxInitCommonControls(&local_res10,0x2000); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0xe & 1) != 0) { + local_res10.dwICC = 0x800; + uVar2 = _AfxInitCommonControls(&local_res10,0x4000); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0xf & 1) != 0) { + local_res10.dwICC = 0x400; + uVar2 = _AfxInitCommonControls(&local_res10,0x8000); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0x10 & 1) != 0) { + local_res10.dwICC = 0x200; + uVar2 = _AfxInitCommonControls(&local_res10,0x10000); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0x11 & 1) != 0) { + local_res10.dwICC = 0x100; + uVar2 = _AfxInitCommonControls(&local_res10,0x20000); + uVar6 = uVar6 | uVar2; + } + if ((uVar7 >> 0x12 & 1) != 0) { + local_res10.dwICC = 0x8000; + uVar2 = _AfxInitCommonControls(&local_res10,0x40000); + uVar6 = uVar6 | uVar2; + } + *(uint *)(lVar3 + 0x2c) = *(uint *)(lVar3 + 0x2c) | uVar6; + if ((*(uint *)(lVar3 + 0x2c) & 0x3fc0) == 0x3fc0) { + uVar6 = uVar6 | 0x10; + *(uint *)(lVar3 + 0x2c) = *(uint *)(lVar3 + 0x2c) | 0x10; + } + bVar8 = (uVar6 & uVar7) == uVar7; + } + return bVar8; +} + + +================================================================== + +### EXPORT FUNC 18002d5d8 (48 bytes) name=PreCreateWindow + +/* Library Function - Multiple Matches With Same Base Name + public: virtual int __cdecl CWnd::PreCreateWindow(struct tagCREATESTRUCTA & __ptr64) __ptr64 + public: virtual int __cdecl CWnd::PreCreateWindow(struct tagCREATESTRUCTW & __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +undefined8 PreCreateWindow(undefined8 param_1,longlong param_2) + +{ + if (*(longlong *)(param_2 + 0x40) == 0) { + FUN_18002d230(1); + *(wchar_t **)(param_2 + 0x40) = L"AfxWnd80su"; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18002d608 (165 bytes) name=FUN_18002d608 + +int FUN_18002d608(longlong param_1,LPCWSTR param_2) + +{ + HMODULE hModule; + int iVar1; + longlong lVar2; + HRSRC hResInfo; + HGLOBAL hResData; + ushort *puVar3; + + puVar3 = (ushort *)0x0; + hResData = (HGLOBAL)0x0; + if (param_2 != (LPCWSTR)0x0) { + lVar2 = FUN_180022bb4(); + hModule = *(HMODULE *)(lVar2 + 0x18); + hResInfo = FindResourceW(hModule,param_2,(LPCWSTR)0xf0); + if (hResInfo != (HRSRC)0x0) { + hResData = LoadResource(hModule,hResInfo); + if (hResData == (HGLOBAL)0x0) { + return 0; + } + puVar3 = LockResource(hResData); + } + } + iVar1 = FUN_18002d064(param_1,puVar3); + if ((puVar3 != (ushort *)0x0) && (hResData != (HGLOBAL)0x0)) { + FreeResource(hResData); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18002d6b0 (379 bytes) name=FUN_18002d6b0 + +uint FUN_18002d6b0(longlong param_1,ulonglong param_2,undefined8 param_3,undefined *param_4, + undefined8 *param_5,ulonglong param_6,longlong *param_7) + +{ + uint uVar1; + + if (param_1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_7 != (longlong *)0x0) { + *param_7 = param_1; + param_7[1] = (longlong)param_4; + return 1; + } + if (param_6 < 0x3f) { + if (param_6 == 0x3e) { + if (param_5 != (undefined8 *)0x0) { + (*(code *)param_4)(param_1,param_2,param_5[1],*param_5); + return 1; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_6 == 0x38) { + (*(code *)param_4)(); + return 1; + } + if (param_6 == 0x39) { + uVar1 = (*(code *)param_4)(); + return uVar1; + } + if (param_6 == 0x3a) { + (*(code *)param_4)(); + return 1; + } + if (param_6 == 0x3b) { + uVar1 = (*(code *)param_4)(); + return uVar1; + } + if (param_6 == 0x3c) { + if (param_5 != (undefined8 *)0x0) { + (*(code *)param_4)(param_1,param_5[1],*param_5); + return 1; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_6 == 0x3d) { + if (param_5 != (undefined8 *)0x0) { + uVar1 = (*(code *)param_4)(param_1,param_5[1],*param_5); + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } +LAB_18002d7b2: + uVar1 = 0; + } + else { + if (param_6 == 0x3f) { + if (param_5 != (undefined8 *)0x0) { + uVar1 = (*(code *)param_4)(param_1,param_2,param_5[1],*param_5); + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_6 == 0x40) { + if (param_5 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + (*(code *)param_4)(param_1,param_5); + } + else { + if (param_6 != 0x41) { + if (param_6 == 0x42) { + (*(code *)param_4)(param_1,param_5); + return 1; + } + if (param_6 == 0x43) { + uVar1 = (*(code *)param_4)(param_1,param_5); + return uVar1; + } + goto LAB_18002d7b2; + } + if (param_5 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + (*(code *)param_4)(param_1,param_5,param_2 & 0xffffffff); + } + uVar1 = (uint)(*(int *)((longlong)param_5 + 0x2c) == 0); + *(undefined4 *)((longlong)param_5 + 0x2c) = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002d834 (384 bytes) name=FUN_18002d834 + +uint FUN_18002d834(longlong *param_1,uint param_2,ulonglong param_3,undefined8 *param_4, + longlong *param_5) + +{ + void *_Buf1; + uint uVar1; + int iVar2; + longlong lVar3; + undefined8 *puVar4; + longlong *plVar5; + AFX_MSGMAP_ENTRY *pAVar6; + uint uVar7; + + uVar1 = (uint)param_3; + if (uVar1 == 0xfffffffe) { + lVar3 = FUN_180022bb4(); + if (*(longlong *)(lVar3 + 0x68) != 0) { + lVar3 = FUN_180022bb4(); + uVar1 = (**(code **)(**(longlong **)(lVar3 + 0x68) + 8)) + (*(longlong **)(lVar3 + 0x68),param_1,param_2,param_4,param_5); + return uVar1; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (uVar1 == 0xfffffffd) { + uVar1 = 0; + if (param_4 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + _Buf1 = (void *)param_4[10]; + puVar4 = (undefined8 *)(**(code **)(*param_1 + 0x58))(); + do { + if (puVar4 == (undefined8 *)0x0) { + return uVar1; + } + if (uVar1 != 0) { + return uVar1; + } + plVar5 = (longlong *)puVar4[1]; + while (((*(uint *)(plVar5 + 1) != 0 && (*(int *)((longlong)plVar5 + 0xc) != 0)) && + (uVar1 == 0))) { + if (param_2 == *(uint *)(plVar5 + 1)) { + if (_Buf1 == (void *)0x0) { + if (*plVar5 == 0) { +LAB_18002d902: + uVar1 = 1; + *(undefined4 *)(param_4 + 1) = *(undefined4 *)((longlong)plVar5 + 0xc); + } + } + else if (((void *)*plVar5 != (void *)0x0) && + (iVar2 = memcmp(_Buf1,(void *)*plVar5,0x10), iVar2 == 0)) goto LAB_18002d902; + } + plVar5 = plVar5 + 2; + } + puVar4 = (undefined8 *)*puVar4; + } while( true ); + } + if (uVar1 != 0xffffffff) { + uVar1 = uVar1 & 0xffff; + uVar7 = (uint)(param_3 >> 0x10) & 0xffff; + if ((param_3 & 0xffff0000) != 0) goto LAB_18002d940; + } + uVar7 = 0x111; +LAB_18002d940: + plVar5 = (longlong *)(**(code **)(*param_1 + 0x50))(); + while( true ) { + if (*plVar5 == 0) { + return 0; + } + pAVar6 = AfxFindMessageEntry((AFX_MSGMAP_ENTRY *)plVar5[1],uVar7,uVar1,param_2); + if (pAVar6 != (AFX_MSGMAP_ENTRY *)0x0) break; + plVar5 = (longlong *)(*(code *)*plVar5)(); + } + uVar1 = FUN_18002d6b0((longlong)param_1,(ulonglong)param_2,(ulonglong)uVar1, + *(undefined **)(pAVar6 + 0x18),param_4,*(ulonglong *)(pAVar6 + 0x10),param_5 + ); + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002d9b8 (3 bytes) name=FUN_18002d9b8 + +undefined8 FUN_18002d9b8(void) + +{ + return 0; +} + + +================================================================== + +### EXPORT FUNC 18002d9bc (6 bytes) name=FUN_18002d9bc + +undefined8 FUN_18002d9bc(void) + +{ + return 0x80029c4a; +} + + +================================================================== + +### EXPORT FUNC 18002d9c4 (8 bytes) name=FUN_18002d9c4 + +undefined * FUN_18002d9c4(void) + +{ + return &DAT_180056728; +} + + +================================================================== + +### EXPORT FUNC 18002d9cc (8 bytes) name=FUN_18002d9cc + +undefined * FUN_18002d9cc(void) + +{ + return &DAT_180056600; +} + + +================================================================== + +### EXPORT FUNC 18002d9d4 (8 bytes) name=FUN_18002d9d4 + +undefined * FUN_18002d9d4(void) + +{ + return &DAT_180056668; +} + + +================================================================== + +### EXPORT FUNC 18002d9dc (8 bytes) name=FUN_18002d9dc + +undefined * FUN_18002d9dc(void) + +{ + return &DAT_1800566a0; +} + + +================================================================== + +### EXPORT FUNC 18002d9e4 (72 bytes) name=OnFinalRelease + +/* Library Function - Single Match + public: virtual void __cdecl CCmdTarget::OnFinalRelease(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CCmdTarget::OnFinalRelease(CCmdTarget *this) + +{ + CTypeLibCache *this_00; + + FUN_1800237a0(0xd); + this_00 = (CTypeLibCache *)(**(code **)(*(longlong *)this + 0x40))(this); + if (this_00 != (CTypeLibCache *)0x0) { + CTypeLibCache::Unlock(this_00); + } + FUN_180023834(0xd); + /* WARNING: Could not recover jumptable at 0x00018002da28. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)this + 8))(this,1); + return; +} + + +================================================================== + +### EXPORT FUNC 18002da2c (8 bytes) name=FUN_18002da2c + +undefined * FUN_18002da2c(void) + +{ + return &DAT_1800566c0; +} + + +================================================================== + +### EXPORT FUNC 18002da34 (8 bytes) name=FUN_18002da34 + +undefined * FUN_18002da34(void) + +{ + return &DAT_1800566e0; +} + + +================================================================== + +### EXPORT FUNC 18002da3c (47 bytes) name=CCmdUI + +/* Library Function - Single Match + public: __cdecl CCmdUI::CCmdUI(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +CCmdUI * __thiscall CCmdUI::CCmdUI(CCmdUI *this) + +{ + *(undefined ***)this = vftable; + *(undefined4 *)(this + 0x30) = 0; + *(undefined4 *)(this + 0xc) = 0; + *(undefined4 *)(this + 8) = 0; + *(undefined8 *)(this + 0x38) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined4 *)(this + 0x2c) = 0; + *(undefined4 *)(this + 0x28) = 0; + return this; +} + + +================================================================== + +### EXPORT FUNC 18002da6c (56 bytes) name=CCmdTarget + +/* Library Function - Single Match + public: __cdecl CCmdTarget::CCmdTarget(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +CCmdTarget * __thiscall CCmdTarget::CCmdTarget(CCmdTarget *this) + +{ + undefined8 uVar1; + + uVar1 = FUN_180022bb4(); + *(undefined8 *)(this + 0x38) = uVar1; + *(undefined4 *)(this + 8) = 1; + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + *(undefined8 *)(this + 0x30) = 0; + *(undefined4 *)(this + 0x28) = 1; + return this; +} + + +================================================================== + +### EXPORT FUNC 18002daa4 (35 bytes) name=~CCmdTarget + +/* Library Function - Single Match + public: virtual __cdecl CCmdTarget::~CCmdTarget(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CCmdTarget::~CCmdTarget(CCmdTarget *this) + +{ + if (*(longlong *)(this + 0x20) != 0) { + (**(code **)(*(longlong *)(this + 0x20) + 0x38))(); + } + *(undefined8 *)(this + 0x38) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18002dac8 (32 bytes) name=FUN_18002dac8 + +void FUN_18002dac8(void) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + /* WARNING: Could not recover jumptable at 0x00018002dae1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(lVar1 + 8) + 0x138))(*(longlong **)(lVar1 + 8),1); + return; +} + + +================================================================== + +### EXPORT FUNC 18002dae8 (30 bytes) name=EndWaitCursor + +/* Library Function - Single Match + public: void __cdecl CCmdTarget::EndWaitCursor(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall CCmdTarget::EndWaitCursor(CCmdTarget *this) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + /* WARNING: Could not recover jumptable at 0x00018002daff. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(lVar1 + 8) + 0x138))(*(longlong **)(lVar1 + 8),0xffffffff); + return; +} + + +================================================================== + +### EXPORT FUNC 18002db08 (186 bytes) name=FUN_18002db08 + +void FUN_18002db08(longlong param_1,int param_2) + +{ + longlong lVar1; + HWND pHVar2; + CWnd *pCVar3; + + if (*(longlong *)(param_1 + 0x10) == 0) { + if (*(longlong *)(param_1 + 0x20) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_2 == 0) { + lVar1 = *(longlong *)(param_1 + 0x20); + pHVar2 = GetFocus(); + if (pHVar2 == *(HWND *)(lVar1 + 0x40)) { + pHVar2 = GetParent(*(HWND *)(lVar1 + 0x40)); + pCVar3 = CWnd::FromHandle(pHVar2); + SendMessageW(*(HWND *)(pCVar3 + 0x40),0x28,0,0); + } + } + CWnd::EnableWindow(*(CWnd **)(param_1 + 0x20),param_2); + } + else { + if (*(longlong *)(param_1 + 0x18) != 0) { + return; + } + if (*(uint *)(param_1 + 0x30) <= *(uint *)(param_1 + 0xc)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + EnableMenuItem(*(HMENU *)(*(longlong *)(param_1 + 0x10) + 8),*(uint *)(param_1 + 0xc), + ~-(uint)(param_2 != 0) & 3 | 0x400); + } + *(undefined4 *)(param_1 + 0x28) = 1; + return; +} + + +================================================================== + +### EXPORT FUNC 18002dbc4 (149 bytes) name=FUN_18002dbc4 + +void FUN_18002dbc4(longlong param_1,int param_2) + +{ + ulonglong uVar1; + + if (*(longlong *)(param_1 + 0x10) == 0) { + if (*(longlong *)(param_1 + 0x20) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + uVar1 = SendMessageW(*(HWND *)(*(longlong *)(param_1 + 0x20) + 0x40),0x87,0,0); + if ((uVar1 >> 0xd & 1) != 0) { + SendMessageW(*(HWND *)(*(longlong *)(param_1 + 0x20) + 0x40),0xf1,(longlong)param_2,0); + } + } + else if (*(longlong *)(param_1 + 0x18) == 0) { + if (*(uint *)(param_1 + 0x30) <= *(uint *)(param_1 + 0xc)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + CheckMenuItem(*(HMENU *)(*(longlong *)(param_1 + 0x10) + 8),*(uint *)(param_1 + 0xc), + -(uint)(param_2 != 0) & 8 | 0x400); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002dc5c (145 bytes) name=FUN_18002dc5c + +void FUN_18002dc5c(longlong param_1,LPCWSTR param_2) + +{ + UINT UVar1; + + if (param_2 == (LPCWSTR)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(longlong *)(param_1 + 0x10) == 0) { + if (*(longlong *)(param_1 + 0x20) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + FUN_180030548(*(HWND *)(*(longlong *)(param_1 + 0x20) + 0x40),param_2); + } + else if (*(longlong *)(param_1 + 0x18) == 0) { + UVar1 = GetMenuState(*(HMENU *)(*(longlong *)(param_1 + 0x10) + 8),*(UINT *)(param_1 + 0xc), + 0x400); + if (*(uint *)(param_1 + 0x30) <= *(uint *)(param_1 + 0xc)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + ModifyMenuW(*(HMENU *)(*(longlong *)(param_1 + 0x10) + 8),*(uint *)(param_1 + 0xc), + UVar1 & 0xfffff6fb | 0x400,(ulonglong)*(uint *)(param_1 + 8),param_2); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002dcf0 (339 bytes) name=FUN_18002dcf0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18002dcf0(void) + +{ + byte bVar1; + LONG LVar2; + undefined1 *puVar3; + int iVar4; + int nWidth; + int nHeight; + longlong lVar5; + ushort uVar6; + byte *pbVar7; + int iVar8; + undefined1 auStackY_c8 [32]; + ulonglong local_98 [16]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStackY_c8; + LVar2 = GetMenuCheckMarkDimensions(); + nWidth = (int)(short)LVar2; + nHeight = (int)(short)((uint)LVar2 >> 0x10); + if ((4 < nWidth) && (lVar5 = 5, 5 < nHeight)) { + if (0x20 < nWidth) { + nWidth = 0x20; + } + iVar4 = nWidth + 0xf >> 4; + iVar8 = (iVar4 * 0x10 + (nWidth + -4) / 2) - nWidth; + if (0xc < iVar8) { + iVar8 = 0xc; + } + if (0x20 < nHeight) { + nHeight = 0x20; + } + FUN_1800357d0(local_98,0xff,0x80); + pbVar7 = &DAT_1800566f0; + puVar3 = (undefined1 *) + ((longlong)local_98 + (longlong)(nHeight + -6 >> 1) * (longlong)iVar4 * 2); + do { + bVar1 = *pbVar7; + pbVar7 = pbVar7 + 1; + uVar6 = ~((ushort)bVar1 << ((byte)iVar8 & 0x1f)); + puVar3[1] = (char)uVar6; + *puVar3 = (char)(uVar6 >> 8); + puVar3 = puVar3 + (longlong)iVar4 * 2; + lVar5 = lVar5 + -1; + } while (lVar5 != 0); + DAT_180072530 = CreateBitmap(nWidth,nHeight,1,1,local_98); + if (DAT_180072530 == (HBITMAP)0x0) { + DAT_180072530 = LoadBitmapW((HINSTANCE)0x0,(LPCWSTR)0x7fe3); + } + return; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 18002de44 (118 bytes) name=FUN_18002de44 + +void FUN_18002de44(longlong *param_1,int param_2) + +{ + (**(code **)(*param_1 + 8))(param_1,param_2 != 0); + if ((param_1[2] != 0) && (param_1[3] == 0)) { + if (*(uint *)(param_1 + 6) <= *(uint *)((longlong)param_1 + 0xc)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if ((DAT_180072530 == (HBITMAP)0x0) && (FUN_18002dcf0(), DAT_180072530 == (HBITMAP)0x0)) { + return; + } + SetMenuItemBitmaps(*(HMENU *)(param_1[2] + 8),*(UINT *)((longlong)param_1 + 0xc),0x400, + (HBITMAP)0x0,DAT_180072530); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002debc (37 bytes) name=OnOK + +/* Library Function - Single Match + protected: virtual void __cdecl CCommonDialog::OnOK(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall CCommonDialog::OnOK(CCommonDialog *this) + +{ + int iVar1; + + iVar1 = CWnd::UpdateData((CWnd *)this,1); + if (iVar1 != 0) { + FUN_1800294c4((longlong *)this); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002dee4 (5 bytes) name=thunk_FUN_1800294c4 + +void thunk_FUN_1800294c4(longlong *param_1) + +{ + void *pvVar1; + + pvVar1 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar1 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + /* WARNING: Could not recover jumptable at 0x00018002950e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*param_1 + 0x220)) + (param_1,*(undefined4 *)((longlong)pvVar1 + 0xa0), + *(undefined8 *)((longlong)pvVar1 + 0xa8),*(undefined8 *)((longlong)pvVar1 + 0xb0)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002deec (24 bytes) name=FUN_18002deec + +bool FUN_18002deec(longlong *param_1) + +{ + longlong lVar1; + + lVar1 = FUN_1800294c4(param_1); + return lVar1 != 0; +} + + +================================================================== + +### EXPORT FUNC 18002df04 (8 bytes) name=FUN_18002df04 + +undefined8 FUN_18002df04(void) + +{ + return 0x180056780; +} + + +================================================================== + +### EXPORT FUNC 18002df0c (562 bytes) name=FUN_18002df0c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_18002df0c(HWND__ *param_1,uint param_2,ulonglong param_3,ulonglong param_4) + +{ + int iVar1; + uint uVar2; + void *pvVar3; + CWnd *pCVar4; + __int64 _Var5; + longlong lVar6; + + if (param_1 != (HWND__ *)0x0) { + pvVar3 = FUN_180023520((int *)&DAT_18006ede0,CThreadLocal<_AFX_THREAD_STATE>::CreateObject); + if (pvVar3 == (void *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if ((*(longlong *)((longlong)pvVar3 + 0x30) != 0) && + (pCVar4 = CWnd::FromHandlePermanent(param_1), pCVar4 == (CWnd *)0x0)) { + CWnd::SubclassWindow(*(CWnd **)((longlong)pvVar3 + 0x30),param_1); + *(undefined8 *)((longlong)pvVar3 + 0x30) = 0; + } + if (param_2 == 0x110) { + DAT_1800724a8 = RegisterWindowMessageW(L"commdlg_LBSelChangedNotify"); + DAT_1800724ac = RegisterWindowMessageW(L"commdlg_ShareViolation"); + DAT_1800724b0 = RegisterWindowMessageW(L"commdlg_FileNameOK"); + DAT_1800724b4 = RegisterWindowMessageW(L"commdlg_ColorOK"); + DAT_1800724b8 = RegisterWindowMessageW(L"commdlg_help"); + _DAT_1800724bc = RegisterWindowMessageW(L"commdlg_SetRGBColor"); + _Var5 = AfxDlgProc(param_1,0x110,param_3,param_4); + uVar2 = (uint)_Var5; +LAB_18002e011: + return (ulonglong)uVar2; + } + if ((param_2 == DAT_1800724b8) || ((param_2 == 0x111 && ((short)param_3 == 0x40e)))) { + SendMessageW(param_1,0x111,0xe146,0); + return 1; + } + if (((0xbfff < param_2) && (pCVar4 = CWnd::FromHandlePermanent(param_1), pCVar4 != (CWnd *)0x0)) + && ((iVar1 = FUN_180024628((undefined8 *)pCVar4,0x180053db0), iVar1 == 0 || + (lVar6 = FUN_18001f004((longlong)pCVar4), (*(uint *)(lVar6 + 0x60) >> 0x13 & 1) == 0)))) + { + if (param_2 == DAT_1800724ac) { + uVar2 = (**(code **)(*(longlong *)pCVar4 + 0x2b8))(pCVar4,param_4); + goto LAB_18002e011; + } + if (param_2 == DAT_1800724b0) { + *(ulonglong *)(pCVar4 + 0x388) = param_4; + iVar1 = (**(code **)(*(longlong *)pCVar4 + 0x2c0))(pCVar4); + *(undefined8 *)(pCVar4 + 0x388) = 0; +LAB_18002e0be: + return (longlong)iVar1; + } + if (param_2 == DAT_1800724a8) { + (**(code **)(*(longlong *)pCVar4 + 0x2c8)) + (pCVar4,param_3 & 0xffffffff,param_4 & 0xffff,param_4 >> 0x10 & 0xffff); + } + else if (param_2 == DAT_1800724b4) { + iVar1 = (**(code **)(*(longlong *)pCVar4 + 0x2b8))(pCVar4); + goto LAB_18002e0be; + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18002e140 (17 bytes) name=FUN_18002e140 + +void FUN_18002e140(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x00018002e14a. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x98) + 0xb0))(); + return; +} + + +================================================================== + +### EXPORT FUNC 18002e154 (39 bytes) name=PaintWindowlessControls + +/* Library Function - Single Match + public: int __cdecl CWnd::PaintWindowlessControls(class CDC * __ptr64) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +int __thiscall CWnd::PaintWindowlessControls(CWnd *this,CDC *param_1) + +{ + int iVar1; + + if (*(longlong *)(this + 0x98) == 0) { + iVar1 = 0; + } + else { + iVar1 = (**(code **)(**(longlong **)(this + 0x98) + 0x130))(); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e17c (55 bytes) name=GetDlgItem + +/* Library Function - Single Match + public: class CWnd * __ptr64 __cdecl CWnd::GetDlgItem(int)const __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +CWnd * __thiscall CWnd::GetDlgItem(CWnd *this,int param_1) + +{ + HWND pHVar1; + CWnd *pCVar2; + + if (*(longlong *)(this + 0x98) == 0) { + pHVar1 = ::GetDlgItem(*(HWND *)(this + 0x40),param_1); + pCVar2 = FromHandle(pHVar1); + } + else { + pCVar2 = (CWnd *)(**(code **)(**(longlong **)(this + 0x98) + 0xe8))(); + } + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 18002e1b4 (67 bytes) name=FID_conflict:IsDialogMessageW + +/* Library Function - Multiple Matches With Different Base Names + public: int __cdecl CWnd::IsDialogMessageA(struct tagMSG * __ptr64) __ptr64 + public: int __cdecl CWnd::IsDialogMessageW(struct tagMSG * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +BOOL __stdcall FID_conflict_IsDialogMessageW(HWND hDlg,LPMSG lpMsg) + +{ + BOOL BVar1; + longlong lVar2; + + if (((uint)hDlg[0x1e].unused >> 8 & 1) == 0) { + BVar1 = IsDialogMessageW(*(HWND *)(hDlg + 0x10),lpMsg); + } + else { + lVar2 = FUN_180022bb4(); + BVar1 = (**(code **)(**(longlong **)(lVar2 + 0x68) + 0x50)) + (*(longlong **)(lVar2 + 0x68),hDlg,lpMsg); + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e1f8 (52 bytes) name=GetStyle + +/* Library Function - Single Match + public: unsigned long __cdecl CWnd::GetStyle(void)const __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +ulong __thiscall CWnd::GetStyle(CWnd *this) + +{ + ulong uVar1; + + if (*(longlong *)(this + 0xa0) == 0) { + uVar1 = GetWindowLongW(*(HWND *)(this + 0x40),-0x10); + } + else { + uVar1 = (**(code **)(**(longlong **)(this + 0xa0) + 0xf0))(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e22c (52 bytes) name=GetExStyle + +/* Library Function - Single Match + public: unsigned long __cdecl CWnd::GetExStyle(void)const __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +ulong __thiscall CWnd::GetExStyle(CWnd *this) + +{ + ulong uVar1; + + if (*(longlong *)(this + 0xa0) == 0) { + uVar1 = GetWindowLongW(*(HWND *)(this + 0x40),-0x14); + } + else { + uVar1 = (**(code **)(**(longlong **)(this + 0xa0) + 0xf8))(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e260 (47 bytes) name=FUN_18002e260 + +void FUN_18002e260(longlong param_1,int param_2) + +{ + if (*(longlong *)(param_1 + 0xa0) == 0) { + ShowWindow(*(HWND *)(param_1 + 0x40),param_2); + } + else { + (**(code **)(**(longlong **)(param_1 + 0xa0) + 0x140))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002e290 (47 bytes) name=IsWindowEnabled + +/* Library Function - Single Match + public: int __cdecl CWnd::IsWindowEnabled(void)const __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CWnd::IsWindowEnabled(CWnd *this) + +{ + BOOL BVar1; + + if (*(longlong *)(this + 0xa0) == 0) { + BVar1 = ::IsWindowEnabled(*(HWND *)(this + 0x40)); + } + else { + BVar1 = (**(code **)(**(longlong **)(this + 0xa0) + 0x148))(); + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e2c0 (47 bytes) name=EnableWindow + +/* Library Function - Multiple Matches With Different Base Names + public: int __cdecl CWnd::EnableWindow(int) __ptr64 + public: int __cdecl CWnd::IsWindowEnabled(void)const __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CWnd::EnableWindow(CWnd *this,int param_1) + +{ + BOOL BVar1; + + if (*(longlong *)(this + 0xa0) == 0) { + BVar1 = ::EnableWindow(*(HWND *)(this + 0x40),param_1); + } + else { + BVar1 = (**(code **)(**(longlong **)(this + 0xa0) + 0x150))(); + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e2f0 (55 bytes) name=FUN_18002e2f0 + +void FUN_18002e2f0(longlong param_1) + +{ + HWND pHVar1; + + if (*(longlong *)(param_1 + 0xa0) == 0) { + pHVar1 = SetFocus(*(HWND *)(param_1 + 0x40)); + CWnd::FromHandle(pHVar1); + } + else { + (**(code **)(**(longlong **)(param_1 + 0xa0) + 0x160))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002e328 (118 bytes) name=SetWindowPos + +/* Library Function - Single Match + public: int __cdecl CWnd::SetWindowPos(class CWnd const * __ptr64,int,int,int,int,unsigned int) + __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall +CWnd::SetWindowPos(CWnd *this,CWnd *param_1,int param_2,int param_3,int param_4,int param_5, + uint param_6) + +{ + BOOL BVar1; + HWND hWndInsertAfter; + + hWndInsertAfter = (HWND)0x0; + if (*(longlong *)(this + 0xa0) == 0) { + if (param_1 != (CWnd *)0x0) { + hWndInsertAfter = *(HWND *)(param_1 + 0x40); + } + BVar1 = ::SetWindowPos(*(HWND *)(this + 0x40),hWndInsertAfter,param_2,param_3,param_4,param_5, + param_6); + } + else { + BVar1 = (**(code **)(**(longlong **)(this + 0xa0) + 0x138)) + (*(longlong **)(this + 0xa0),param_1,param_2,param_3,param_4,param_5,param_6); + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 18002e3a0 (101 bytes) name=AttachControlSite + +/* Library Function - Single Match + protected: void __cdecl CWnd::AttachControlSite(class CHandleMap * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWnd::AttachControlSite(CWnd *this,CHandleMap *param_1) + +{ + HWND pHVar1; + longlong lVar2; + + if ((this != (CWnd *)0x0) && (*(longlong *)(this + 0xa0) == 0)) { + pHVar1 = GetParent(*(HWND *)(this + 0x40)); + lVar2 = FUN_180030118((longlong)(param_1 + 0x30),(ulonglong)pHVar1); + if ((lVar2 != 0) && (*(longlong *)(lVar2 + 0x98) != 0)) { + (**(code **)(**(longlong **)(lVar2 + 0x98) + 0x138))(*(longlong **)(lVar2 + 0x98),this,0); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002e408 (9 bytes) name=FUN_18002e408 + +bool FUN_18002e408(longlong param_1) + +{ + return param_1 != 0; +} + + +================================================================== + +### EXPORT FUNC 18002e414 (466 bytes) name=FUN_18002e414 + +int FUN_18002e414(longlong param_1,ulonglong *param_2,uint param_3) + +{ + longlong *plVar1; + uint uVar2; + uint uVar3; + undefined8 uVar4; + int iVar5; + void *pvVar6; + uint uVar7; + int iVar8; + uint uVar9; + ulonglong uVar10; + ulonglong *puVar11; + int iVar12; + longlong lVar13; + + if ((param_3 == 0) || (param_2 == (ulonglong *)0x0)) { + iVar12 = 0; + } + else { + if ((*(byte *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(4,*(short **)(param_1 + 0x18)); + } + plVar1 = (longlong *)(param_1 + 0x40); + uVar7 = *(int *)plVar1 - *(int *)(param_1 + 0x38); + uVar10 = (ulonglong)uVar7; + if (param_3 < uVar7) { + uVar10 = (ulonglong)param_3; + } + uVar4 = FUN_180032c60(param_2,(ulonglong)param_3,*(void **)(param_1 + 0x38),uVar10); + iVar12 = (int)uVar4; + if (iVar12 != 0) { + if (iVar12 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar12 == 0x16) || (iVar12 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar12 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + uVar10; + puVar11 = (ulonglong *)((longlong)param_2 + uVar10); + uVar7 = param_3 - (int)uVar10; + if (uVar7 != 0) { + iVar8 = uVar7 - uVar7 % *(uint *)(param_1 + 0x28); + iVar5 = 0; + iVar12 = iVar8; + do { + uVar2 = (**(code **)(**(longlong **)(param_1 + 0x30) + 0x68)) + (*(longlong **)(param_1 + 0x30),puVar11,iVar12); + iVar5 = iVar5 + uVar2; + iVar12 = iVar12 - uVar2; + puVar11 = (ulonglong *)((longlong)puVar11 + (ulonglong)uVar2); + if (uVar2 == 0) break; + } while (iVar12 != 0); + uVar7 = uVar7 - iVar5; + if ((uVar7 != 0) && (iVar5 == iVar8)) { + if (*(int *)(param_1 + 0xc) == 0) { + uVar2 = uVar7; + if ((*(int *)(param_1 + 0x10) == 0) && + (uVar2 = *(uint *)(param_1 + 0x28), *(uint *)(param_1 + 0x28) < uVar7)) { + uVar2 = uVar7; + } + lVar13 = *(longlong *)(param_1 + 0x48); + uVar9 = 0; + do { + uVar3 = (**(code **)(**(longlong **)(param_1 + 0x30) + 0x68)) + (*(longlong **)(param_1 + 0x30),lVar13,uVar2); + uVar9 = uVar9 + uVar3; + uVar2 = uVar2 - uVar3; + lVar13 = lVar13 + (ulonglong)uVar3; + if ((uVar3 == 0) || (uVar2 == 0)) break; + } while (uVar9 < uVar7); + pvVar6 = *(void **)(param_1 + 0x48); + *plVar1 = (ulonglong)uVar9 + (longlong)pvVar6; + } + else { + (**(code **)(**(longlong **)(param_1 + 0x30) + 0xa0)) + (*(longlong **)(param_1 + 0x30),0,*(undefined4 *)(param_1 + 0x28),param_1 + 0x48 + ,plVar1); + pvVar6 = *(void **)(param_1 + 0x48); + } + uVar2 = *(int *)plVar1 - (int)pvVar6; + *(void **)(param_1 + 0x38) = pvVar6; + if (uVar7 < uVar2) { + uVar2 = uVar7; + } + uVar4 = FUN_180032c60(puVar11,(ulonglong)uVar7,pvVar6,(ulonglong)uVar2); + iVar12 = (int)uVar4; + if (iVar12 != 0) { + if (iVar12 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar12 == 0x16) || (iVar12 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar12 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + (ulonglong)uVar2; + uVar7 = uVar7 - uVar2; + } + } + iVar12 = param_3 - uVar7; + } + return iVar12; +} + + +================================================================== + +### EXPORT FUNC 18002e5f0 (191 bytes) name=Flush + +/* Library Function - Single Match + public: void __cdecl CArchive::Flush(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CArchive::Flush(CArchive *this) + +{ + CArchive *pCVar1; + longlong lVar2; + + if (((byte)this[0x20] & 1) == 0) { + pCVar1 = this + 0x48; + if (*(int *)(this + 0xc) == 0) { + lVar2 = *(longlong *)pCVar1; + if (*(longlong *)(this + 0x38) != lVar2) { + (**(code **)(**(longlong **)(this + 0x30) + 0x70)) + (*(longlong **)(this + 0x30),lVar2,*(int *)(this + 0x38) - (int)lVar2); + } + } + else { + if (*(longlong *)(this + 0x38) != *(longlong *)pCVar1) { + (**(code **)(**(longlong **)(this + 0x30) + 0xa0)) + (*(longlong **)(this + 0x30),2,*(int *)(this + 0x38) - *(int *)pCVar1,0,0); + } + (**(code **)(**(longlong **)(this + 0x30) + 0xa0)) + (*(longlong **)(this + 0x30),1,*(undefined4 *)(this + 0x28),pCVar1,this + 0x40); + } + lVar2 = *(longlong *)pCVar1; + } + else { + if (*(longlong *)(this + 0x40) != *(longlong *)(this + 0x38)) { + (**(code **)(**(longlong **)(this + 0x30) + 0x50)) + (*(longlong **)(this + 0x30), + (longlong)((int)*(longlong *)(this + 0x38) - *(int *)(this + 0x40)),1); + } + lVar2 = *(longlong *)(this + 0x40); + } + *(longlong *)(this + 0x38) = lVar2; + return; +} + + +================================================================== + +### EXPORT FUNC 18002e6b0 (344 bytes) name=FUN_18002e6b0 + +void FUN_18002e6b0(longlong param_1,int param_2) + +{ + longlong *plVar1; + errno_t eVar2; + void *_Dst; + uint uVar3; + uint uVar4; + int iVar5; + longlong lVar6; + uint uVar7; + ulonglong _MaxCount; + + if ((*(byte *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(4,*(short **)(param_1 + 0x18)); + } + plVar1 = (longlong *)(param_1 + 0x40); + uVar3 = *(int *)plVar1 - *(int *)(param_1 + 0x38); + _MaxCount = (ulonglong)uVar3; + uVar7 = uVar3 + param_2; + if (*(int *)(param_1 + 0xc) == 0) { + _Dst = *(void **)(param_1 + 0x48); + if (_Dst < *(void **)(param_1 + 0x38)) { + if (0 < (int)uVar3) { + eVar2 = memmove_s(_Dst,*plVar1 - (longlong)_Dst,*(void **)(param_1 + 0x38),_MaxCount); + if (eVar2 != 0) { + if (eVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar2 == 0x16) || (eVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + _Dst = *(void **)(param_1 + 0x48); + *(void **)(param_1 + 0x38) = _Dst; + *plVar1 = _MaxCount + (longlong)_Dst; + } + if (*(int *)(param_1 + 0x10) == 0) { + param_2 = *(int *)(param_1 + 0x28); + } + iVar5 = param_2 - uVar3; + lVar6 = _MaxCount + (longlong)_Dst; + do { + uVar3 = (**(code **)(**(longlong **)(param_1 + 0x30) + 0x68)) + (*(longlong **)(param_1 + 0x30),lVar6,iVar5); + uVar4 = (int)_MaxCount + uVar3; + _MaxCount = (ulonglong)uVar4; + iVar5 = iVar5 - uVar3; + lVar6 = lVar6 + (ulonglong)uVar3; + if ((uVar3 == 0) || (iVar5 == 0)) break; + } while (uVar4 < uVar7); + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x48); + *plVar1 = _MaxCount + *(longlong *)(param_1 + 0x48); + } + } + else { + if (uVar3 != 0) { + (**(code **)(**(longlong **)(param_1 + 0x30) + 0x50))(); + } + (**(code **)(**(longlong **)(param_1 + 0x30) + 0xa0)) + (*(longlong **)(param_1 + 0x30),0,*(undefined4 *)(param_1 + 0x28),param_1 + 0x48, + plVar1); + *(undefined8 *)(param_1 + 0x38) = *(undefined8 *)(param_1 + 0x48); + } + if ((uint)(*(int *)plVar1 - *(int *)(param_1 + 0x38)) < uVar7) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(3,(short *)0x0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002e810 (369 bytes) name=FUN_18002e810 + +void FUN_18002e810(CArchive *param_1,void *param_2,uint param_3) + +{ + CArchive *pCVar1; + int iVar2; + undefined8 uVar3; + uint uVar4; + longlong lVar5; + uint uVar6; + + if ((param_3 != 0) && (param_2 != (void *)0x0)) { + if ((~*(uint *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(2,*(short **)(param_1 + 0x18)); + } + pCVar1 = param_1 + 0x40; + uVar6 = *(int *)pCVar1 - *(int *)(param_1 + 0x38); + if (param_3 < (uint)(*(int *)pCVar1 - *(int *)(param_1 + 0x38))) { + uVar6 = param_3; + } + uVar3 = FUN_180032c60(*(ulonglong **)(param_1 + 0x38), + *(longlong *)pCVar1 - (longlong)*(ulonglong **)(param_1 + 0x38),param_2, + (ulonglong)uVar6); + iVar2 = (int)uVar3; + if (iVar2 != 0) { + if (iVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar2 == 0x16) || (iVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + *(ulonglong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + (ulonglong)uVar6; + lVar5 = (longlong)param_2 + (ulonglong)uVar6; + uVar6 = param_3 - uVar6; + if (uVar6 != 0) { + CArchive::Flush(param_1); + uVar4 = uVar6 - uVar6 % *(uint *)(param_1 + 0x28); + (**(code **)(**(longlong **)(param_1 + 0x30) + 0x70)) + (*(longlong **)(param_1 + 0x30),lVar5,uVar4); + uVar6 = uVar6 - uVar4; + if (*(int *)(param_1 + 0xc) != 0) { + (**(code **)(**(longlong **)(param_1 + 0x30) + 0xa0)) + (*(longlong **)(param_1 + 0x30),1,*(undefined4 *)(param_1 + 0x28),param_1 + 0x48, + pCVar1); + *(undefined8 *)(param_1 + 0x38) = *(undefined8 *)(param_1 + 0x48); + } + if (*(uint *)(param_1 + 0x28) <= uVar6) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(ulonglong **)(param_1 + 0x38) != *(ulonglong **)(param_1 + 0x48)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + uVar3 = FUN_180032c60(*(ulonglong **)(param_1 + 0x38),(ulonglong)uVar6, + (void *)(lVar5 + (ulonglong)uVar4),(ulonglong)uVar6); + iVar2 = (int)uVar3; + if (iVar2 != 0) { + if (iVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar2 == 0x16) || (iVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + *(ulonglong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + (ulonglong)uVar6; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002e98c (328 bytes) name=FUN_18002e98c + +void FUN_18002e98c(CArchive *param_1,ulonglong param_2) + +{ + if (param_2 < 0xffff) { + if ((~*(uint *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(2,*(short **)(param_1 + 0x18)); + } + if (*(ulonglong *)(param_1 + 0x40) < *(longlong *)(param_1 + 0x38) + 2U) { + CArchive::Flush(param_1); + } + **(undefined2 **)(param_1 + 0x38) = (short)param_2; + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 2; + } + else { + if ((~*(uint *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(2,*(short **)(param_1 + 0x18)); + } + if (*(ulonglong *)(param_1 + 0x40) < *(longlong *)(param_1 + 0x38) + 2U) { + CArchive::Flush(param_1); + } + **(undefined2 **)(param_1 + 0x38) = 0xffff; + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 2; + if (param_2 < 0xffffffff) { + if ((~*(uint *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(2,*(short **)(param_1 + 0x18)); + } + if (*(ulonglong *)(param_1 + 0x40) < *(longlong *)(param_1 + 0x38) + 4U) { + CArchive::Flush(param_1); + } + **(undefined4 **)(param_1 + 0x38) = (int)param_2; + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 4; + } + else { + if ((~*(uint *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(2,*(short **)(param_1 + 0x18)); + } + if (*(ulonglong *)(param_1 + 0x40) < *(longlong *)(param_1 + 0x38) + 4U) { + CArchive::Flush(param_1); + } + **(undefined4 **)(param_1 + 0x38) = 0xffffffff; + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 4; + if ((~*(uint *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(2,*(short **)(param_1 + 0x18)); + } + if (*(ulonglong *)(param_1 + 0x40) < *(longlong *)(param_1 + 0x38) + 8U) { + CArchive::Flush(param_1); + } + **(ulonglong **)(param_1 + 0x38) = param_2; + *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 8; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002eadc (226 bytes) name=FUN_18002eadc + +ulonglong FUN_18002eadc(longlong param_1) + +{ + ushort uVar1; + uint uVar2; + ushort *puVar3; + uint *puVar4; + ulonglong uVar5; + + if ((*(byte *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(4,*(short **)(param_1 + 0x18)); + } + if (*(ulonglong *)(param_1 + 0x40) < *(longlong *)(param_1 + 0x38) + 2U) { + FUN_18002e6b0(param_1,(*(int *)(param_1 + 0x38) - *(int *)(param_1 + 0x40)) + 2); + } + puVar3 = *(ushort **)(param_1 + 0x38); + uVar1 = *puVar3; + *(ushort **)(param_1 + 0x38) = puVar3 + 1; + if (uVar1 == 0xffff) { + if ((*(byte *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(4,*(short **)(param_1 + 0x18)); + } + if (*(ushort **)(param_1 + 0x40) < puVar3 + 3) { + FUN_18002e6b0(param_1,(*(int *)(param_1 + 0x38) - *(int *)(param_1 + 0x40)) + 4); + } + puVar4 = *(uint **)(param_1 + 0x38); + uVar2 = *puVar4; + uVar5 = (ulonglong)uVar2; + *(uint **)(param_1 + 0x38) = puVar4 + 1; + if (uVar2 == 0xffffffff) { + if ((*(byte *)(param_1 + 0x20) & 1) == 0) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(4,*(short **)(param_1 + 0x18)); + } + if (*(uint **)(param_1 + 0x40) < puVar4 + 3) { + FUN_18002e6b0(param_1,(*(int *)(param_1 + 0x38) - *(int *)(param_1 + 0x40)) + 8); + } + uVar5 = **(ulonglong **)(param_1 + 0x38); + *(ulonglong **)(param_1 + 0x38) = *(ulonglong **)(param_1 + 0x38) + 1; + } + } + else { + uVar5 = (ulonglong)uVar1; + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 18002ebc4 (8 bytes) name=FUN_18002ebc4 + +undefined ** FUN_18002ebc4(void) + +{ + return &PTR_s_CArchiveException_180056900; +} + + +================================================================== + +### EXPORT FUNC 18002ebcc (354 bytes) name=FUN_18002ebcc + +undefined8 FUN_18002ebcc(longlong param_1,short *param_2,uint param_3,int *param_4) + +{ + int *piVar1; + int iVar2; + undefined **ppuVar3; + longlong lVar4; + longlong *plVar5; + HMODULE pHVar6; + undefined8 uVar7; + longlong *plVar8; + short *local_res10; + longlong *local_28; + undefined8 local_20; + + local_20 = 0xfffffffffffffffe; + if (param_2 == (short *)0x0) { + uVar7 = 0; + } + else { + if (param_4 != (int *)0x0) { + *param_4 = *(int *)(param_1 + 0x10) + 0xf1b0; + } + ppuVar3 = FUN_18001fcc0(); + if (ppuVar3 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar4 = (**(code **)(*ppuVar3 + 0x18))(ppuVar3); + local_res10 = (short *)(lVar4 + 0x18); + plVar5 = FUN_18000b300((longlong *)(*(longlong *)(param_1 + 0x18) + -0x18)); + plVar8 = plVar5 + 3; + local_28 = plVar8; + if ((int)plVar5[1] == 0) { + pHVar6 = (HMODULE)FUN_18001fcac(); + if (pHVar6 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_28,pHVar6,0xf006); + plVar8 = local_28; + } + } + FUN_18003253c((longlong *)&local_res10,*(int *)(param_1 + 0x10) + 0xf1b0,plVar8); + iVar2 = FUN_1800354c0(param_2,(ulonglong)param_3,local_res10,-1); + if (iVar2 != 0) { + if (iVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar2 == 0x16) || (iVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + LOCK(); + plVar5 = plVar8 + -1; + lVar4 = *plVar5; + *(int *)plVar5 = (int)*plVar5 + -1; + UNLOCK(); + if ((int)lVar4 + -1 < 1) { + (**(code **)(*(longlong *)plVar8[-3] + 8))(); + } + LOCK(); + piVar1 = (int *)(local_res10 + -4); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + uVar7 = 1; + } + return uVar7; +} + + +================================================================== + +### EXPORT FUNC 18002ed3c (24 bytes) name=Unwind@18002ed3c + +void Unwind_18002ed3c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ed5c (24 bytes) name=Unwind@18002ed5c + +void Unwind_18002ed5c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ed7c (28 bytes) name=Catch@18002ed7c + +undefined * Catch_18002ed7c(void) + +{ + return &DAT_18002ed1a; +} + + +================================================================== + +### EXPORT FUNC 18002ed9c (162 bytes) name=FUN_18002ed9c + +undefined8 * FUN_18002ed9c(undefined8 *param_1,undefined4 param_2,short *param_3) + +{ + undefined **ppuVar1; + longlong lVar2; + int iVar3; + + FUN_18001ee0c((longlong)param_1); + *param_1 = CArchiveException::vftable; + ppuVar1 = FUN_18001fcc0(); + iVar3 = 0; + if (ppuVar1 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar2 = (**(code **)(*ppuVar1 + 0x18))(ppuVar1); + param_1[3] = lVar2 + 0x18; + *(undefined4 *)(param_1 + 2) = param_2; + if (param_3 != (short *)0x0) { + lVar2 = FUN_1800355e0(param_3); + iVar3 = (int)lVar2; + } + FUN_18000b480(param_1 + 3,param_3,iVar3); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002ee4c (28 bytes) name=Unwind@18002ee4c + +void Unwind_18002ee4c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(*(longlong *)(param_2 + 0x50) + 0x18)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ee68 (85 bytes) name=FUN_18002ee68 + +undefined8 * FUN_18002ee68(undefined8 *param_1,uint param_2) + +{ + int *piVar1; + int iVar2; + longlong lVar3; + + lVar3 = param_1[3]; + *param_1 = CArchiveException::vftable; + LOCK(); + piVar1 = (int *)(lVar3 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(lVar3 + -0x18) + 8))(); + } + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002eec0 (83 bytes) name=FUN_18002eec0 + +void FUN_18002eec0(undefined4 param_1,short *param_2) + +{ + undefined8 *local_res18; + undefined8 *local_res20; + + local_res20 = FUN_18001eb74(0x20); + local_res18 = (undefined8 *)0x0; + if (local_res20 != (undefined8 *)0x0) { + local_res18 = FUN_18002ed9c(local_res20,param_1,param_2); + } + /* WARNING: Subroutine does not return */ + _CxxThrowException(&local_res18,(ThrowInfo *)&DAT_1800687f8); +} + + +================================================================== + +### EXPORT FUNC 18002ef20 (24 bytes) name=Unwind@18002ef20 + +void Unwind_18002ef20(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ef38 (708 bytes) name=OsErrorToException + +/* Library Function - Single Match + public: static int __cdecl CFileException::OsErrorToException(long) + + Library: Visual Studio 2005 Release */ + +int __cdecl CFileException::OsErrorToException(long param_1) + +{ + int iVar1; + bool bVar2; + + if ((uint)param_1 < 0x10c) { + if (param_1 == 0x10b) { + return 3; + } + if (0x3e < (uint)param_1) { + if ((uint)param_1 < 0x6c) { + if (param_1 == 0x6b) { + return 2; + } + if (0x47 < (uint)param_1) { + if (param_1 == 0x50) { + return 5; + } + if (param_1 == 0x52) { + return 5; + } + if (param_1 == 0x55) { + return 3; + } + if (param_1 != 0x56) { + if (param_1 == 0x58) { + return 10; + } + return 1; + } + return 5; + } + if (param_1 == 0x47) { + return 5; + } + if (param_1 == 0x40) { + return 5; + } + if (param_1 == 0x41) { + return 5; + } + if (param_1 == 0x42) { + return 6; + } + if (param_1 == 0x43) { + return 3; + } + iVar1 = param_1 + -0x44; + if (iVar1 == 0) { + return 4; + } + } + else { + if ((uint)param_1 < 0x91) { + if (param_1 == 0x90) { + return 3; + } + if ((uint)param_1 < 0x76) { + if (param_1 == 0x75) { + return 10; + } + if (param_1 == 0x6c) { + return 0xc; + } + if (param_1 == 0x6f) { + return 3; + } + if (param_1 == 0x70) { + return 0xd; + } + iVar1 = param_1 + -0x71; + if (iVar1 == 0) { + return 4; + } + goto LAB_18002f137; + } + if (param_1 == 0x7b) { + return 3; + } + if (param_1 == 0x7c) { + return 3; + } + if (param_1 == 0x7d) { + return 3; + } + iVar1 = param_1 + -0x83; + if (iVar1 == 0) { + return 9; + } +LAB_18002eff0: + if (iVar1 == 1) { + return 9; + } + return 1; + } + if ((uint)param_1 < 0xb7) { + if (param_1 == 0xb6) { + return 6; + } + if (param_1 == 0x91) { + return 7; + } + if (param_1 == 0x9a) { + return 3; + } + if (param_1 == 0xa1) { + return 3; + } + if (param_1 == 0xa7) { + return 0xc; + } + bVar2 = param_1 == 0xaa; + goto LAB_18002f1a4; + } + if (param_1 == 0xb7) { + return 5; + } + if (param_1 == 0xbf) { + return 6; + } + if (param_1 == 0xc1) { + return 6; + } + iVar1 = param_1 + -0xce; + if (iVar1 == 0) { + return 3; + } + } + bVar2 = iVar1 == 2; +LAB_18002ef96: + if (bVar2) { + return 3; + } + return 1; + } + if (param_1 == 0x3e) { + return 8; + } + if ((uint)param_1 < 0x1a) { + if (param_1 == 0x19) { + return 9; + } + if ((uint)param_1 < 0x11) { + if (param_1 == 0x10) { + return 7; + } + if (param_1 == 0) { + return 0; + } + if (param_1 == 2) { + return 2; + } + if (param_1 == 3) { + return 3; + } + if (param_1 == 4) { + return 4; + } + if (param_1 == 5) { + return 5; + } + if (param_1 == 6) { + return 2; + } + if (param_1 == 0xb) { + return 6; + } + if (param_1 == 0xc) { + return 5; + } + bVar2 = param_1 == 0xf; + goto LAB_18002ef96; + } + if (param_1 == 0x11) { + return 3; + } + if (param_1 == 0x12) { + return 2; + } + if (param_1 == 0x13) { + return 5; + } + if (((param_1 != 0x14) && (param_1 != 0x15)) && + ((param_1 != 0x16 && (iVar1 = param_1 + -0x17, iVar1 != 0)))) goto LAB_18002eff0; + } + else { + if ((uint)param_1 < 0x28) { + if (param_1 == 0x27) { + return 0xd; + } + if (param_1 == 0x1a) { + return 6; + } + if (param_1 == 0x1b) { + return 9; + } + if (param_1 == 0x1d) { + return 5; + } + if (param_1 == 0x1e) { + return 9; + } + if (param_1 == 0x20) { + return 0xb; + } + if (param_1 == 0x21) { + return 0xc; + } + if (param_1 != 0x22) { + if (param_1 == 0x24) { + return 4; + } + if (param_1 == 0x26) { + return 0xe; + } + return 1; + } + return 3; + } + if (param_1 == 0x34) { + return 3; + } + if (param_1 == 0x35) { + return 3; + } + if (param_1 == 0x36) { + return 5; + } + if (param_1 == 0x37) { + return 3; + } + if (param_1 != 0x39) { + if (param_1 == 0x3a) { + return 5; + } + iVar1 = param_1 + -0x3b; + if (iVar1 != 0) { +LAB_18002f137: + if (iVar1 == 1) { + return 6; + } + return 1; + } + } + } + } + else if (((param_1 != 0x3e3) && (param_1 != 0x3e4)) && (param_1 != 0x3e5)) { + bVar2 = param_1 == 999; +LAB_18002f1a4: + if (bVar2) { + return 5; + } + return 1; + } + return 10; +} + + +================================================================== + +### EXPORT FUNC 18002f1fc (8 bytes) name=FUN_18002f1fc + +undefined ** FUN_18002f1fc(void) + +{ + return &PTR_s_CFileException_1800569f0; +} + + +================================================================== + +### EXPORT FUNC 18002f204 (360 bytes) name=FUN_18002f204 + +undefined8 FUN_18002f204(longlong param_1,short *param_2,uint param_3,int *param_4) + +{ + int *piVar1; + int iVar2; + undefined **ppuVar3; + longlong lVar4; + longlong *plVar5; + HMODULE pHVar6; + undefined8 uVar7; + longlong *plVar8; + short *local_res10; + longlong *local_18; + undefined8 local_10; + + local_10 = 0xfffffffffffffffe; + if ((param_2 == (short *)0x0) || (param_3 == 0)) { + uVar7 = 0; + } + else { + if (param_4 != (int *)0x0) { + *param_4 = *(int *)(param_1 + 0x10) + 0xf1a0; + } + ppuVar3 = FUN_18001fcc0(); + if (ppuVar3 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar4 = (**(code **)(*ppuVar3 + 0x18))(ppuVar3); + local_res10 = (short *)(lVar4 + 0x18); + plVar5 = FUN_18000b300((longlong *)(*(longlong *)(param_1 + 0x18) + -0x18)); + plVar8 = plVar5 + 3; + local_18 = plVar8; + if ((int)plVar5[1] == 0) { + pHVar6 = (HMODULE)FUN_18001fcac(); + if (pHVar6 != (HMODULE)0x0) { + FUN_18000af50((longlong *)&local_18,pHVar6,0xf006); + plVar8 = local_18; + } + } + FUN_18003253c((longlong *)&local_res10,*(int *)(param_1 + 0x10) + 0xf1a0,plVar8); + iVar2 = FUN_1800354c0(param_2,(ulonglong)param_3,local_res10,-1); + if (iVar2 != 0) { + if (iVar2 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar2 == 0x16) || (iVar2 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar2 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + LOCK(); + plVar5 = plVar8 + -1; + lVar4 = *plVar5; + *(int *)plVar5 = (int)*plVar5 + -1; + UNLOCK(); + if ((int)lVar4 + -1 < 1) { + (**(code **)(*(longlong *)plVar8[-3] + 8))(); + } + LOCK(); + piVar1 = (int *)(local_res10 + -4); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + uVar7 = 1; + } + return uVar7; +} + + +================================================================== + +### EXPORT FUNC 18002f374 (24 bytes) name=Unwind@18002f374 + +void Unwind_18002f374(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002f394 (24 bytes) name=Unwind@18002f394 + +void Unwind_18002f394(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002f3ac (93 bytes) name=FUN_18002f3ac + +void FUN_18002f3ac(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 *puVar1; + undefined8 *local_res20; + + puVar1 = FUN_18001eb74(0x20); + local_res20 = (undefined8 *)0x0; + if (puVar1 != (undefined8 *)0x0) { + local_res20 = FUN_180020954(puVar1,param_1,param_2,param_3); + } + /* WARNING: Subroutine does not return */ + _CxxThrowException(&local_res20,(ThrowInfo *)&DAT_180068868); +} + + +================================================================== + +### EXPORT FUNC 18002f40c (24 bytes) name=Unwind@18002f40c + +void Unwind_18002f40c(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002f424 (35 bytes) name=ThrowOsError + +/* Library Function - Multiple Matches With Same Base Name + public: static void __cdecl CFileException::ThrowOsError(long,char const * __ptr64) + public: static void __cdecl CFileException::ThrowOsError(long,wchar_t const * __ptr64) + + Library: Visual Studio 2005 Release */ + +void ThrowOsError(long param_1,short *param_2) + +{ + code *pcVar1; + int iVar2; + + if (param_1 != 0) { + iVar2 = CFileException::OsErrorToException(param_1); + FUN_18002f3ac(iVar2,param_1,param_2); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002f448 (219 bytes) name=FUN_18002f448 + +longlong * +FUN_18002f448(longlong *param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6, + uint param_7,undefined4 param_8) + +{ + longlong lVar1; + uint local_38; + uint local_34; + uint local_30; + int local_2c; + int local_28; + int local_24; + undefined4 local_18; + + if (param_2 < 0x76c) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if (0xb < param_3 - 1U) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if (0x1e < param_4 - 1U) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if (0x17 < param_5) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if (0x3b < param_6) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + if (0x3b < param_7) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_30 = param_5; + local_28 = param_3 + -1; + local_34 = param_6; + local_24 = param_2 + -0x76c; + local_38 = param_7; + local_18 = param_8; + local_2c = param_4; + lVar1 = FUN_1800365a0((int *)&local_38); + *param_1 = lVar1; + if (lVar1 == -1) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002f52c (189 bytes) name=FUN_18002f52c + +longlong * FUN_18002f52c(longlong *param_1,FILETIME *param_2,undefined4 param_3) + +{ + BOOL BVar1; + longlong lVar2; + _FILETIME local_res20; + longlong local_28; + _SYSTEMTIME local_20; + + BVar1 = FileTimeToLocalFileTime(param_2,&local_res20); + if (BVar1 == 0) { + *param_1 = 0; + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + BVar1 = FileTimeToSystemTime(&local_res20,&local_20); + if (BVar1 == 0) { + *param_1 = 0; + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + lVar2 = 0; + if (0x76b < local_20.wYear) { + FUN_18002f448(&local_28,(uint)local_20.wYear,(uint)local_20.wMonth,(uint)local_20.wDay, + (uint)local_20.wHour,(uint)local_20.wMinute,(uint)local_20.wSecond,param_3); + lVar2 = local_28; + } + *param_1 = lVar2; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002f5ec (458 bytes) name=FUN_18002f5ec + +undefined8 FUN_18002f5ec(longlong param_1,ulonglong *param_2) + +{ + int iVar1; + BOOL BVar2; + DWORD DVar3; + ulonglong *puVar4; + undefined8 uVar5; + undefined1 uVar6; + _FILETIME local_res8; + _FILETIME local_res10; + _FILETIME local_res18; + _FILETIME local_res20; + _SYSTEMTIME local_38; + + FUN_1800357d0(param_2,0,0x230); + iVar1 = FUN_1800354c0((short *)((longlong)param_2 + 0x22),0x104,*(short **)(param_1 + 0x18),-1); + if (iVar1 != 0) { + if (iVar1 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar1 == 0x16) || (iVar1 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar1 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + if (*(HANDLE *)(param_1 + 8) == DAT_180054190) { +LAB_18002f7ab: + uVar5 = 1; + } + else { + BVar2 = GetFileTime(*(HANDLE *)(param_1 + 8),&local_res8,&local_res10,&local_res18); + if (BVar2 != 0) { + DVar3 = GetFileSize(*(HANDLE *)(param_1 + 8),(LPDWORD)0x0); + param_2[3] = (ulonglong)DVar3; + if ((ulonglong)DVar3 != 0xffffffff) { + if (*(int *)(*(LPCWSTR *)(param_1 + 0x18) + -8) == 0) { + *(undefined1 *)(param_2 + 4) = 0; + } + else { + DVar3 = GetFileAttributesW(*(LPCWSTR *)(param_1 + 0x18)); + uVar6 = (char)DVar3; + if (DVar3 == 0xffffffff) { + uVar6 = 0; + } + *(undefined1 *)(param_2 + 4) = uVar6; + } + BVar2 = FileTimeToLocalFileTime(&local_res8,&local_res20); + if (BVar2 == 0) { +LAB_18002f6fe: + *param_2 = 0; + } + else { + BVar2 = FileTimeToSystemTime(&local_res20,&local_38); + if (BVar2 == 0) goto LAB_18002f6fe; + puVar4 = (ulonglong *)FUN_18002f52c((longlong *)&local_res20,&local_res8,0xffffffff); + *param_2 = *puVar4; + } + BVar2 = FileTimeToLocalFileTime(&local_res10,&local_res20); + if (BVar2 == 0) { +LAB_18002f745: + param_2[2] = 0; + } + else { + BVar2 = FileTimeToSystemTime(&local_res20,&local_38); + if (BVar2 == 0) goto LAB_18002f745; + puVar4 = (ulonglong *)FUN_18002f52c((longlong *)&local_res20,&local_res10,0xffffffff); + param_2[2] = *puVar4; + } + BVar2 = FileTimeToLocalFileTime(&local_res18,&local_res20); + if (BVar2 == 0) { +LAB_18002f78d: + param_2[1] = 0; + } + else { + BVar2 = FileTimeToSystemTime(&local_res20,&local_38); + if (BVar2 == 0) goto LAB_18002f78d; + puVar4 = (ulonglong *)FUN_18002f52c((longlong *)&local_res20,&local_res18,0xffffffff); + param_2[1] = *puVar4; + } + if (*param_2 == 0) { + *param_2 = param_2[1]; + } + if (param_2[2] == 0) { + param_2[2] = param_2[1]; + } + goto LAB_18002f7ab; + } + } + uVar5 = 0; + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 18002f7bc (259 bytes) name=FUN_18002f7bc + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +longlong * FUN_18002f7bc(longlong param_1,longlong *param_2) + +{ + int iVar1; + undefined **ppuVar2; + longlong lVar3; + undefined1 auStack_288 [32]; + undefined4 local_268; + undefined8 local_260; + longlong *local_258; + ulonglong local_248 [4]; + WCHAR local_226 [263]; + ulonglong local_18; + + local_260 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_288; + local_268 = 0; + local_248[0] = 0; + local_248[1] = 0; + local_248[2] = 0; + local_258 = param_2; + FUN_18002f5ec(param_1,local_248); + ppuVar2 = FUN_18001fcc0(); + if (ppuVar2 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar3 = (**(code **)(*ppuVar2 + 0x18))(); + *param_2 = lVar3 + 0x18; + local_268 = 1; + if ((int)(*(int *)(lVar3 + 0xc) - 0x100U | 1U - *(int *)(lVar3 + 0x10)) < 0) { + FUN_18000b190(param_2,0x100); + } + FUN_180024240(local_226,(short *)*param_2,0x100); + if ((short *)*param_2 == (short *)0x0) { + iVar1 = 0; + } + else { + lVar3 = FUN_1800355e0((short *)*param_2); + iVar1 = (int)lVar3; + if (iVar1 < 0) goto LAB_18002f89d; + } + if (iVar1 <= *(int *)(*param_2 + -0xc)) { + *(int *)(*param_2 + -0x10) = iVar1; + *(undefined2 *)(*param_2 + (longlong)iVar1 * 2) = 0; + return param_2; + } +LAB_18002f89d: + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18002f8cc (38 bytes) name=Unwind@18002f8cc + +void Unwind_18002f8cc(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 1) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; + FUN_18000b5e0(*(longlong **)(param_2 + 0x30)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002f8f4 (259 bytes) name=FUN_18002f8f4 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +longlong * FUN_18002f8f4(longlong param_1,longlong *param_2) + +{ + int iVar1; + undefined **ppuVar2; + longlong lVar3; + undefined1 auStack_288 [32]; + undefined4 local_268; + undefined8 local_260; + longlong *local_258; + ulonglong local_248 [4]; + wchar_t local_226 [263]; + ulonglong local_18; + + local_260 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_288; + local_268 = 0; + local_248[0] = 0; + local_248[1] = 0; + local_248[2] = 0; + local_258 = param_2; + FUN_18002f5ec(param_1,local_248); + ppuVar2 = FUN_18001fcc0(); + if (ppuVar2 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar3 = (**(code **)(*ppuVar2 + 0x18))(); + *param_2 = lVar3 + 0x18; + local_268 = 1; + if ((int)(*(int *)(lVar3 + 0xc) - 0x100U | 1U - *(int *)(lVar3 + 0x10)) < 0) { + FUN_18000b190(param_2,0x100); + } + AfxGetFileTitle(local_226,(wchar_t *)*param_2,0x100); + if ((short *)*param_2 == (short *)0x0) { + iVar1 = 0; + } + else { + lVar3 = FUN_1800355e0((short *)*param_2); + iVar1 = (int)lVar3; + if (iVar1 < 0) goto LAB_18002f9d5; + } + if (iVar1 <= *(int *)(*param_2 + -0xc)) { + *(int *)(*param_2 + -0x10) = iVar1; + *(undefined2 *)(*param_2 + (longlong)iVar1 * 2) = 0; + return param_2; + } +LAB_18002f9d5: + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 18002fa04 (38 bytes) name=Unwind@18002fa04 + +void Unwind_18002fa04(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 1) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; + FUN_18000b5e0(*(longlong **)(param_2 + 0x30)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18002fa2c (102 bytes) name=GetFilePath + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + public: virtual class ATL::CStringT > > __cdecl CFile::GetFilePath(void)const __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall CFile::GetFilePath(CFile *this) + +{ + longlong *in_RDX; + undefined1 auStack_278 [32]; + undefined4 local_258; + ulonglong local_248 [4]; + short local_226 [263]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_278; + local_258 = 0; + local_248[0] = 0; + local_248[1] = 0; + local_248[2] = 0; + FUN_18002f5ec((longlong)this,local_248); + FUN_18000b610(in_RDX,local_226); + return; +} + + +================================================================== + +### EXPORT FUNC 18002fa94 (209 bytes) name=GetInterface + +/* Library Function - Single Match + public: struct IUnknown * __ptr64 __cdecl CCmdTarget::GetInterface(void const * __ptr64) __ptr64 + + Library: Visual Studio 2010 Release */ + +IUnknown * __thiscall CCmdTarget::GetInterface(CCmdTarget *this,void *param_1) + +{ + int *piVar1; + IUnknown *pIVar2; + longlong *plVar3; + longlong *plVar4; + undefined8 *puVar5; + + pIVar2 = (IUnknown *)(**(code **)(*(longlong *)this + 0x88))(); + if (pIVar2 == (IUnknown *)0x0) { + plVar3 = (longlong *)(**(code **)(*(longlong *)this + 0x70))(this); + if ((((DAT_180058e68 == *(int *)param_1) && (*(int *)((longlong)param_1 + 4) == DAT_180058e6c)) + && (*(int *)((longlong)param_1 + 8) == DAT_180058e70)) && + (*(int *)((longlong)param_1 + 0xc) == DAT_180058e74)) { + do { + for (plVar4 = (longlong *)plVar3[1]; *plVar4 != 0; plVar4 = plVar4 + 2) { + if (*(int *)(this + plVar4[1]) != 0) { + return (IUnknown *)(this + plVar4[1]); + } + } + plVar3 = (longlong *)*plVar3; + } while (plVar3 != (longlong *)0x0); + } + else { + do { + for (puVar5 = (undefined8 *)plVar3[1]; piVar1 = (int *)*puVar5, piVar1 != (int *)0x0; + puVar5 = puVar5 + 2) { + if (((*piVar1 == *(int *)param_1) && (piVar1[1] == *(int *)((longlong)param_1 + 4))) && + ((piVar1[2] == *(int *)((longlong)param_1 + 8) && + ((piVar1[3] == *(int *)((longlong)param_1 + 0xc) && (*(int *)(this + puVar5[1]) != 0)) + )))) { + return (IUnknown *)(this + puVar5[1]); + } + } + plVar3 = (longlong *)*plVar3; + } while (plVar3 != (longlong *)0x0); + } + pIVar2 = (IUnknown *)0x0; + } + return pIVar2; +} + + +================================================================== + +### EXPORT FUNC 18002fb68 (143 bytes) name=QueryAggregates + +/* Library Function - Single Match + public: struct IUnknown * __ptr64 __cdecl CCmdTarget::QueryAggregates(void const * __ptr64) + __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +IUnknown * __thiscall CCmdTarget::QueryAggregates(CCmdTarget *this,void *param_1) + +{ + undefined8 *puVar1; + int iVar2; + longlong *plVar3; + longlong *plVar4; + IUnknown *local_res8; + + plVar3 = (longlong *)(**(code **)(*(longlong *)this + 0x70))(); + do { + for (plVar4 = (longlong *)plVar3[1]; *plVar4 != 0; plVar4 = plVar4 + 2) { + } + for (plVar4 = plVar4 + 1; *plVar4 != -1; plVar4 = plVar4 + 2) { + puVar1 = *(undefined8 **)(this + *plVar4); + if (puVar1 != (undefined8 *)0x0) { + local_res8 = (IUnknown *)0x0; + iVar2 = (**(code **)*puVar1)(puVar1,param_1,&local_res8); + if ((iVar2 == 0) && (local_res8 != (IUnknown *)0x0)) { + return local_res8; + } + } + } + plVar3 = (longlong *)*plVar3; + if (plVar3 == (longlong *)0x0) { + return (IUnknown *)0x0; + } + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 18002fbf8 (41 bytes) name=ExternalAddRef + +/* Library Function - Single Match + public: unsigned long __cdecl CCmdTarget::ExternalAddRef(void) __ptr64 + + Library: Visual Studio 2005 Release */ + +ulong __thiscall CCmdTarget::ExternalAddRef(CCmdTarget *this) + +{ + CCmdTarget *pCVar1; + int iVar2; + ulong uVar3; + + if (*(longlong *)(this + 0x10) == 0) { + LOCK(); + pCVar1 = this + 8; + iVar2 = *(int *)pCVar1; + *(int *)pCVar1 = *(int *)pCVar1 + 1; + UNLOCK(); + uVar3 = iVar2 + 1; + } + else { + uVar3 = (**(code **)(**(longlong **)(this + 0x10) + 8))(); + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18002fc24 (102 bytes) name=InternalRelease + +/* Library Function - Single Match + public: unsigned long __cdecl CCmdTarget::InternalRelease(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +ulong __thiscall CCmdTarget::InternalRelease(CCmdTarget *this) + +{ + CCmdTarget *pCVar1; + int iVar2; + ulong uVar3; + AFX_MAINTAIN_STATE2 local_20 [8]; + int local_18; + + if (*(int *)(this + 8) == 0) { + uVar3 = 0; + } + else { + LOCK(); + pCVar1 = this + 8; + iVar2 = *(int *)pCVar1; + *(int *)pCVar1 = *(int *)pCVar1 + -1; + UNLOCK(); + uVar3 = iVar2 - 1; + if (uVar3 == 0) { + AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(local_20,*(AFX_MODULE_STATE **)(this + 0x38)); + (**(code **)(*(longlong *)this + 0x20))(this); + if (local_18 != 0) { + FUN_180021f08(); + } + } + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18002fc94 (24 bytes) name=Unwind@18002fc94 + +void Unwind_18002fc94(undefined8 param_1,longlong param_2) + +{ + FUN_1800275f0(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 18002fcac (33 bytes) name=ExternalRelease + +/* Library Function - Single Match + public: unsigned long __cdecl CCmdTarget::ExternalRelease(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +ulong __thiscall CCmdTarget::ExternalRelease(CCmdTarget *this) + +{ + ulong uVar1; + + if (*(longlong *)(this + 0x10) == 0) { + uVar1 = InternalRelease(this); + } + else { + uVar1 = (**(code **)(**(longlong **)(this + 0x10) + 0x10))(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002fcd0 (88 bytes) name=FUN_18002fcd0 + +uint FUN_18002fcd0(CCmdTarget *param_1,void *param_2,undefined8 *param_3) + +{ + uint uVar1; + IUnknown *pIVar2; + + pIVar2 = CCmdTarget::GetInterface(param_1,param_2); + *param_3 = pIVar2; + if (pIVar2 == (IUnknown *)0x0) { + pIVar2 = CCmdTarget::QueryAggregates(param_1,param_2); + *param_3 = pIVar2; + uVar1 = ~-(uint)(pIVar2 != (IUnknown *)0x0) & 0x80004002; + } + else { + CCmdTarget::ExternalAddRef(param_1); + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002fd28 (32 bytes) name=ExternalQueryInterface + +/* Library Function - Single Match + public: unsigned long __cdecl CCmdTarget::ExternalQueryInterface(void const * __ptr64,void * + __ptr64 * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +ulong __thiscall CCmdTarget::ExternalQueryInterface(CCmdTarget *this,void *param_1,void **param_2) + +{ + uint uVar1; + + if (*(longlong *)(this + 0x10) == 0) { + uVar1 = FUN_18002fcd0(this,param_1,param_2); + } + else { + uVar1 = (**(code **)**(undefined8 **)(this + 0x10))(); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18002fd48 (115 bytes) name=UpdateSysColors + +/* Library Function - Single Match + public: void __cdecl AUX_DATA::UpdateSysColors(void) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +void __thiscall AUX_DATA::UpdateSysColors(AUX_DATA *this) + +{ + DWORD DVar1; + HBRUSH pHVar2; + + DVar1 = GetSysColor(0xf); + *(DWORD *)(this + 0x30) = DVar1; + DVar1 = GetSysColor(0x10); + *(DWORD *)(this + 0x34) = DVar1; + DVar1 = GetSysColor(0x14); + *(DWORD *)(this + 0x38) = DVar1; + DVar1 = GetSysColor(0x12); + *(DWORD *)(this + 0x3c) = DVar1; + DVar1 = GetSysColor(6); + *(DWORD *)(this + 0x40) = DVar1; + pHVar2 = GetSysColorBrush(0xf); + *(HBRUSH *)(this + 0x28) = pHVar2; + pHVar2 = GetSysColorBrush(6); + *(HBRUSH *)(this + 0x20) = pHVar2; + return; +} + + +================================================================== + +### EXPORT FUNC 18002fdbc (148 bytes) name=FUN_18002fdbc + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18002fdbc(longlong param_1) + +{ + int iVar1; + HDC hdc; + + iVar1 = GetSystemMetrics(0xb); + *(int *)(param_1 + 8) = iVar1; + iVar1 = GetSystemMetrics(0xc); + *(int *)(param_1 + 0xc) = iVar1; + _DAT_1800724c0 = GetSystemMetrics(2); + _DAT_1800724c0 = _DAT_1800724c0 + 1; + _DAT_1800724c4 = GetSystemMetrics(3); + _DAT_1800724c4 = _DAT_1800724c4 + 1; + hdc = GetDC((HWND)0x0); + iVar1 = GetDeviceCaps(hdc,0x58); + *(int *)(param_1 + 0x18) = iVar1; + iVar1 = GetDeviceCaps(hdc,0x5a); + *(int *)(param_1 + 0x1c) = iVar1; + /* WARNING: Could not recover jumptable at 0x00018002fe49. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ReleaseDC((HWND)0x0,hdc); + return; +} + + +================================================================== + +### EXPORT FUNC 18002fe50 (106 bytes) name=FUN_18002fe50 + +AUX_DATA * FUN_18002fe50(AUX_DATA *param_1) + +{ + DWORD DVar1; + HCURSOR pHVar2; + + DVar1 = GetVersion(); + *(DWORD *)(param_1 + 0x78) = DVar1 >> 0x1f; + FUN_18002fdbc((longlong)param_1); + *(undefined8 *)(param_1 + 0x28) = 0; + AUX_DATA::UpdateSysColors(param_1); + pHVar2 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f02); + *(HCURSOR *)(param_1 + 0x48) = pHVar2; + pHVar2 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00); + *(undefined8 *)(param_1 + 0x70) = 0; + *(undefined8 *)(param_1 + 0x58) = 0; + *(HCURSOR *)(param_1 + 0x50) = pHVar2; + *(undefined4 *)(param_1 + 0x10) = 2; + *(undefined4 *)(param_1 + 0x14) = 2; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18002febc (68 bytes) name=FUN_18002febc + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18002febc(longlong param_1) + +{ + undefined1 auStack_468 [64]; + undefined8 local_428; + ulonglong local_18; + + local_428 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_468; + FUN_18003060c((undefined8 *)(param_1 + 0x70)); + return; +} + + +================================================================== + +### EXPORT FUNC 18002ff0c (253 bytes) name=Catch@18002ff0c + +undefined8 Catch_18002ff0c(undefined8 param_1,longlong param_2) + +{ + wchar_t *pwVar1; + wchar_t *pwVar2; + int iVar3; + undefined **ppuVar4; + longlong lVar5; + + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + *(longlong *)(param_2 + 0x30) = lVar5 + 0x18; + iVar3 = (**(code **)(**(longlong **)(param_2 + 0x38) + 0x18)) + (*(longlong **)(param_2 + 0x38),param_2 + 0x50,0x200,0); + if (iVar3 == 0) { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\src\\mfc\\auxdata.cpp"); + } + else { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)\n%s","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\src\\mfc\\auxdata.cpp"); + } + pwVar2 = *(wchar_t **)(param_2 + 0x30); + AfxMessageBox(pwVar2,0,0); + LOCK(); + pwVar1 = pwVar2 + -4; + iVar3 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar2 + -0xc) + 8))(); + } + (**(code **)(**(longlong **)(param_2 + 0x38) + 8))(*(longlong **)(param_2 + 0x38),1); + return 0x18002fee8; +} + + +================================================================== + +### EXPORT FUNC 18003000c (24 bytes) name=Unwind@18003000c + +void Unwind_18003000c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180030024 (125 bytes) name=InitHashTable + +/* Library Function - Multiple Matches With Same Base Name + public: void __cdecl CMapPtrToPtr::InitHashTable(unsigned int,int) __ptr64 + public: void __cdecl CMapPtrToWord::InitHashTable(unsigned int,int) __ptr64 + public: void __cdecl CMapStringToOb::InitHashTable(unsigned int,int) __ptr64 + public: void __cdecl CMapStringToPtr::InitHashTable(unsigned int,int) __ptr64 + 7 names - too many to list + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void InitHashTable(longlong param_1,uint param_2,int param_3) + +{ + size_t sVar1; + ulonglong *puVar2; + + if (param_2 == 0) { + param_2 = 0x11; + } + if (*(LPVOID *)(param_1 + 8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 8)); + *(undefined8 *)(param_1 + 8) = 0; + } + if (param_3 != 0) { + sVar1 = SUB168(ZEXT816(8) * ZEXT416(param_2),0); + if (SUB168(ZEXT816(8) * ZEXT416(param_2),8) != 0) { + sVar1 = 0xffffffffffffffff; + } + puVar2 = FUN_18001eb74(sVar1); + *(ulonglong **)(param_1 + 8) = puVar2; + FUN_1800357d0(puVar2,0,(ulonglong)param_2 << 3); + } + *(uint *)(param_1 + 0x10) = param_2; + return; +} + + +================================================================== + +### EXPORT FUNC 1800300a4 (58 bytes) name=RemoveAll + +/* Library Function - Single Match + public: void __cdecl CMapPtrToPtr::RemoveAll(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CMapPtrToPtr::RemoveAll(CMapPtrToPtr *this) + +{ + if (*(LPVOID *)(this + 8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(this + 8)); + *(undefined8 *)(this + 8) = 0; + } + *(undefined8 *)(this + 0x18) = 0; + *(undefined8 *)(this + 0x20) = 0; + FUN_180032594(*(undefined8 **)(this + 0x28)); + *(undefined8 *)(this + 0x28) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800300e0 (53 bytes) name=GetAssocAt + +/* Library Function - Multiple Matches With Same Base Name + protected: struct CMapPtrToPtr::CAssoc * __ptr64 __cdecl CMapPtrToPtr::GetAssocAt(void * + __ptr64,unsigned int & __ptr64,unsigned int & __ptr64)const __ptr64 + protected: struct CMapPtrToWord::CAssoc * __ptr64 __cdecl CMapPtrToWord::GetAssocAt(void * + __ptr64,unsigned int & __ptr64,unsigned int & __ptr64)const __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +undefined8 * GetAssocAt(longlong param_1,ulonglong param_2,undefined4 *param_3,undefined4 *param_4) + +{ + ulonglong uVar1; + undefined8 *puVar2; + + *param_4 = (int)(param_2 >> 4); + uVar1 = (param_2 >> 4 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x10); + *param_3 = (int)uVar1; + if (*(longlong *)(param_1 + 8) != 0) { + for (puVar2 = *(undefined8 **)(*(longlong *)(param_1 + 8) + uVar1 * 8); + puVar2 != (undefined8 *)0x0; puVar2 = (undefined8 *)*puVar2) { + if (puVar2[1] == param_2) { + return puVar2; + } + } + } + return (undefined8 *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180030118 (71 bytes) name=FUN_180030118 + +undefined8 FUN_180030118(longlong param_1,ulonglong param_2) + +{ + undefined8 *puVar1; + + if (param_1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (*(longlong *)(param_1 + 8) != 0) { + for (puVar1 = *(undefined8 **) + (*(longlong *)(param_1 + 8) + + ((param_2 >> 4 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x10)) * 8); + puVar1 != (undefined8 *)0x0; puVar1 = (undefined8 *)*puVar1) { + if (puVar1[1] == param_2) { + return puVar1[2]; + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180030160 (103 bytes) name=RemoveKey + +/* Library Function - Single Match + public: int __cdecl CMapPtrToPtr::RemoveKey(void * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CMapPtrToPtr::RemoveKey(CMapPtrToPtr *this,void *param_1) + +{ + CMapPtrToPtr *pCVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + + if (*(longlong *)(this + 8) != 0) { + puVar4 = (undefined8 *) + (*(longlong *)(this + 8) + + (((ulonglong)param_1 >> 4 & 0xffffffff) % (ulonglong)*(uint *)(this + 0x10)) * 8); + puVar2 = (undefined8 *)*puVar4; + while (puVar3 = puVar2, puVar3 != (undefined8 *)0x0) { + if ((void *)puVar3[1] == param_1) { + *puVar4 = *puVar3; + *puVar3 = *(undefined8 *)(this + 0x20); + pCVar1 = this + 0x18; + *(longlong *)pCVar1 = *(longlong *)pCVar1 + -1; + *(undefined8 **)(this + 0x20) = puVar3; + if (*(longlong *)pCVar1 == 0) { + RemoveAll(this); + } + return 1; + } + puVar4 = puVar3; + puVar2 = (undefined8 *)*puVar3; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800301c8 (182 bytes) name=FUN_1800301c8 + +void FUN_1800301c8(longlong param_1,longlong *param_2,longlong *param_3,longlong *param_4) + +{ + longlong *plVar1; + longlong lVar2; + uint uVar3; + uint uVar4; + longlong *plVar5; + + plVar5 = (longlong *)*param_2; + if (plVar5 != (longlong *)0x0) { + if ((plVar5 == (longlong *)0xffffffffffffffff) && (uVar4 = 0, *(int *)(param_1 + 0x10) != 0)) { + plVar1 = *(longlong **)(param_1 + 8); + while (plVar5 = (longlong *)*plVar1, plVar5 == (longlong *)0x0) { + uVar4 = uVar4 + 1; + plVar1 = plVar1 + 1; + if (*(uint *)(param_1 + 0x10) <= uVar4) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + } + lVar2 = *plVar5; + if (lVar2 == 0) { + uVar4 = *(uint *)(param_1 + 0x10); + uVar3 = (int)(((ulonglong)plVar5[1] >> 4 & 0xffffffff) % (ulonglong)uVar4) + 1; + if (uVar3 < uVar4) { + plVar1 = (longlong *)(*(longlong *)(param_1 + 8) + (longlong)(int)uVar3 * 8); + do { + lVar2 = *plVar1; + if (lVar2 != 0) break; + uVar3 = uVar3 + 1; + plVar1 = plVar1 + 1; + } while (uVar3 < uVar4); + } + } + *param_2 = lVar2; + *param_3 = plVar5[1]; + *param_4 = plVar5[2]; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180030280 (8 bytes) name=FUN_180030280 + +undefined ** FUN_180030280(void) + +{ + return &PTR_s_CMapPtrToPtr_180056b58; +} + + +================================================================== + +### EXPORT FUNC 180030288 (56 bytes) name=FUN_180030288 + +undefined8 * FUN_180030288(undefined8 *param_1,longlong param_2) + +{ + *(undefined4 *)(param_1 + 2) = 0x11; + *param_1 = CMapPtrToPtr::vftable; + if (param_2 < 1) { + param_2 = 10; + } + param_1[1] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = param_2; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800302c0 (15 bytes) name=FUN_1800302c0 + +void FUN_1800302c0(CMapPtrToPtr *param_1) + +{ + *(undefined ***)param_1 = CMapPtrToPtr::vftable; + CMapPtrToPtr::RemoveAll(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 1800302d0 (107 bytes) name=FUN_1800302d0 + +void FUN_1800302d0(longlong param_1) + +{ + longlong lVar1; + undefined8 uVar2; + longlong lVar3; + undefined8 *puVar4; + + if (*(longlong *)(param_1 + 0x20) == 0) { + lVar3 = FUN_18003255c((undefined8 *)(param_1 + 0x28),*(longlong *)(param_1 + 0x30),0x18); + lVar1 = *(longlong *)(param_1 + 0x30); + puVar4 = (undefined8 *)(lVar3 + -0x10 + lVar1 * 0x18); + while (lVar1 = lVar1 + -1, -1 < lVar1) { + *puVar4 = *(undefined8 *)(param_1 + 0x20); + *(undefined8 **)(param_1 + 0x20) = puVar4; + puVar4 = puVar4 + -3; + } + } + puVar4 = *(undefined8 **)(param_1 + 0x20); + uVar2 = *puVar4; + *(longlong *)(param_1 + 0x18) = *(longlong *)(param_1 + 0x18) + 1; + *(undefined8 *)(param_1 + 0x20) = uVar2; + puVar4[1] = 0; + puVar4[2] = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18003033c (110 bytes) name=FUN_18003033c + +undefined8 * FUN_18003033c(longlong param_1,ulonglong param_2) + +{ + undefined8 *puVar1; + longlong lVar2; + uint local_res18 [2]; + undefined4 local_res20 [2]; + + lVar2 = param_1; + puVar1 = GetAssocAt(param_1,param_2,local_res18,local_res20); + if (puVar1 == (undefined8 *)0x0) { + if (*(longlong *)(lVar2 + 8) == 0) { + InitHashTable(lVar2,*(uint *)(lVar2 + 0x10),1); + } + puVar1 = (undefined8 *)FUN_1800302d0(param_1); + puVar1[1] = param_2; + *puVar1 = *(undefined8 *)(*(longlong *)(param_1 + 8) + (ulonglong)local_res18[0] * 8); + *(undefined8 **)(*(longlong *)(param_1 + 8) + (ulonglong)local_res18[0] * 8) = puVar1; + } + return puVar1 + 2; +} + + +================================================================== + +### EXPORT FUNC 1800303ac (57 bytes) name=FUN_1800303ac + +CMapPtrToPtr * FUN_1800303ac(CMapPtrToPtr *param_1,uint param_2) + +{ + *(undefined ***)param_1 = CMapPtrToPtr::vftable; + CMapPtrToPtr::RemoveAll(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800303e8 (49 bytes) name=RemoveAll + +/* Library Function - Multiple Matches With Same Base Name + public: void __cdecl CObList::RemoveAll(void) __ptr64 + public: void __cdecl CPtrList::RemoveAll(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void RemoveAll(longlong param_1) + +{ + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x20) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined8 *)(param_1 + 8) = 0; + FUN_180032594(*(undefined8 **)(param_1 + 0x28)); + *(undefined8 *)(param_1 + 0x28) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18003041c (42 bytes) name=FUN_18003041c + +void FUN_18003041c(longlong param_1,undefined8 *param_2) + +{ + longlong *plVar1; + + if (param_2 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + *param_2 = *(undefined8 *)(param_1 + 0x20); + plVar1 = (longlong *)(param_1 + 0x18); + *plVar1 = *plVar1 + -1; + *(undefined8 **)(param_1 + 0x20) = param_2; + if (*plVar1 == 0) { + RemoveAll(param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180030448 (72 bytes) name=FUN_180030448 + +longlong FUN_180030448(longlong param_1) + +{ + longlong *plVar1; + longlong lVar2; + longlong lVar3; + + if (param_1 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + plVar1 = *(longlong **)(param_1 + 8); + if (plVar1 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + lVar2 = *plVar1; + lVar3 = plVar1[2]; + *(longlong *)(param_1 + 8) = lVar2; + if (lVar2 == 0) { + *(undefined8 *)(param_1 + 0x10) = 0; + } + else { + *(undefined8 *)(lVar2 + 8) = 0; + } + FUN_18003041c(param_1,plVar1); + return lVar3; +} + + +================================================================== + +### EXPORT FUNC 180030494 (43 bytes) name=CFixedAllocNoSync + +/* Library Function - Single Match + public: __cdecl CFixedAllocNoSync::CFixedAllocNoSync(unsigned int,unsigned int) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +CFixedAllocNoSync * __thiscall +CFixedAllocNoSync::CFixedAllocNoSync(CFixedAllocNoSync *this,uint param_1,uint param_2) + +{ + if (param_1 < 8) { + param_1 = 8; + } + if (param_2 < 2) { + param_2 = 0x40; + } + *(undefined8 *)(this + 0x10) = 0; + *(undefined8 *)(this + 8) = 0; + *(uint *)(this + 4) = param_2; + *(uint *)this = param_1; + return this; +} + + +================================================================== + +### EXPORT FUNC 1800304c0 (34 bytes) name=FreeAll + +/* Library Function - Single Match + public: void __cdecl CFixedAllocNoSync::FreeAll(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +void __thiscall CFixedAllocNoSync::FreeAll(CFixedAllocNoSync *this) + +{ + FUN_180032594(*(undefined8 **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800304e4 (5 bytes) name=FreeAll + +void __thiscall CFixedAllocNoSync::FreeAll(CFixedAllocNoSync *this) + +{ + FUN_180032594(*(undefined8 **)(this + 8)); + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800304ec (90 bytes) name=Alloc + +/* Library Function - Single Match + public: void * __ptr64 __cdecl CFixedAllocNoSync::Alloc(void) __ptr64 + + Library: Visual Studio 2005 Release */ + +void * __thiscall CFixedAllocNoSync::Alloc(CFixedAllocNoSync *this) + +{ + int iVar1; + longlong lVar2; + undefined8 *puVar3; + + if (*(longlong *)(this + 0x10) == 0) { + lVar2 = FUN_18003255c((undefined8 *)(this + 8),(ulonglong)*(uint *)(this + 4), + (ulonglong)*(uint *)this); + iVar1 = *(int *)(this + 4); + puVar3 = (undefined8 *)(lVar2 + 8 + (ulonglong)(uint)((iVar1 + -1) * *(int *)this)); + while (iVar1 = iVar1 + -1, -1 < iVar1) { + *puVar3 = *(undefined8 *)(this + 0x10); + *(undefined8 **)(this + 0x10) = puVar3; + puVar3 = (undefined8 *)((longlong)puVar3 - (ulonglong)*(uint *)this); + } + } + puVar3 = *(undefined8 **)(this + 0x10); + *(undefined8 *)(this + 0x10) = *puVar3; + return puVar3; +} + + +================================================================== + +### EXPORT FUNC 180030548 (193 bytes) name=FUN_180030548 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180030548(HWND param_1,LPCWSTR param_2) + +{ + uint uVar1; + uint uVar2; + int iVar3; + undefined1 auStack_238 [32]; + WCHAR local_218; + ulonglong local_216 [63]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_238; + if (param_1 == (HWND)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_2 != (LPCWSTR)0x0) { + uVar1 = lstrlenW(param_2); + local_218 = L'\0'; + FUN_1800357d0(local_216,0,0x1fe); + if (((uVar1 < 0x101) && (uVar2 = GetWindowTextW(param_1,&local_218,0x100), uVar2 == uVar1)) && + (iVar3 = lstrcmpW(&local_218,param_2), iVar3 == 0)) { + return; + } + SetWindowTextW(param_1,param_2); + return; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 18003060c (43 bytes) name=FUN_18003060c + +void FUN_18003060c(undefined8 *param_1) + +{ + if (param_1 == (undefined8 *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if ((HGDIOBJ)*param_1 != (HGDIOBJ)0x0) { + DeleteObject((HGDIOBJ)*param_1); + *param_1 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180030638 (65 bytes) name=FUN_180030638 + +void FUN_180030638(HGLOBAL param_1) + +{ + UINT UVar1; + uint uVar2; + + if (param_1 != (HGLOBAL)0x0) { + UVar1 = GlobalFlags(param_1); + uVar2 = UVar1 & 0xff; + if ((char)UVar1 != '\0') { + do { + GlobalUnlock(param_1); + uVar2 = uVar2 - 1; + } while (uVar2 != 0); + } + GlobalFree(param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18003067c (98 bytes) name=FUN_18003067c + +undefined8 FUN_18003067c(longlong param_1) + +{ + longlong lVar1; + SIZE_T SVar2; + + lVar1 = FUN_1800222f4(); + if ((lVar1 != 0) && (*(LPCVOID *)(lVar1 + 0x18) != (LPCVOID)0x0)) { + SVar2 = FUN_180035e80(*(LPCVOID *)(lVar1 + 0x18)); + if (param_1 + 4U < SVar2) { + FUN_1800365b0(*(LPVOID *)(lVar1 + 0x18),(SVar2 - param_1) - 4); + } + else { + FUN_180034a70(*(LPVOID *)(lVar1 + 0x18)); + *(undefined8 *)(lVar1 + 0x18) = 0; + } + return 1; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); +} + + +================================================================== + +### EXPORT FUNC 1800306e0 (111 bytes) name=_AfxCompareClassName + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + int __cdecl _AfxCompareClassName(struct HWND__ * __ptr64,wchar_t const * __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +int __cdecl _AfxCompareClassName(HWND__ *param_1,wchar_t *param_2) + +{ + int iVar1; + undefined1 auStackY_88 [32]; + WCHAR local_58 [32]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStackY_88; + GetClassNameW(param_1,local_58,0x20); + iVar1 = CompareStringW(0x409,1,local_58,-1,param_2,-1); + return (int)(iVar1 == 2); +} + + +================================================================== + +### EXPORT FUNC 180030750 (134 bytes) name=_AfxChildWindowFromPoint + +/* Library Function - Single Match + struct HWND__ * __ptr64 __cdecl _AfxChildWindowFromPoint(struct HWND__ * __ptr64,struct + tagPOINT) + + Library: Visual Studio 2005 Release */ + +HWND__ * __cdecl _AfxChildWindowFromPoint(HWND__ *param_1,tagPOINT param_2) + +{ + int iVar1; + uint uVar2; + BOOL BVar3; + UINT uCmd; + tagPOINT local_res10 [3]; + tagRECT local_18; + + local_res10[0] = param_2; + ClientToScreen(param_1,local_res10); + uCmd = 5; + do { + param_1 = GetWindow(param_1,uCmd); + if (param_1 == (HWND)0x0) { + return (HWND__ *)0x0; + } + iVar1 = GetDlgCtrlID(param_1); + if (((short)iVar1 != 0) && (uVar2 = GetWindowLongW(param_1,-0x10), (uVar2 >> 0x1c & 1) != 0)) { + GetWindowRect(param_1,&local_18); + BVar3 = PtInRect(&local_18,local_res10[0]); + if (BVar3 != 0) { + return param_1; + } + } + uCmd = 2; + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 1800307d8 (5 bytes) name=FUN_1800307d8 + +void FUN_1800307d8(longlong param_1,undefined8 param_2) + +{ + *(undefined8 *)(param_1 + 0x10) = param_2; + return; +} + + +================================================================== + +### EXPORT FUNC 1800307e0 (5 bytes) name=FUN_1800307e0 + +void FUN_1800307e0(longlong param_1,undefined8 param_2) + +{ + *(undefined8 *)(param_1 + 8) = param_2; + return; +} + + +================================================================== + +### EXPORT FUNC 1800307e8 (6 bytes) name=FUN_1800307e8 + +void FUN_1800307e8(longlong param_1) + +{ + *(undefined8 *)(param_1 + 0x10) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800307f0 (6 bytes) name=FUN_1800307f0 + +void FUN_1800307f0(longlong param_1) + +{ + *(undefined8 *)(param_1 + 8) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800307f8 (69 bytes) name=SaveDC + +/* Library Function - Single Match + public: virtual int __cdecl CDC::SaveDC(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +int __thiscall CDC::SaveDC(CDC *this) + +{ + int iVar1; + int iVar2; + + iVar1 = 0; + if (*(HDC *)(this + 0x10) != (HDC)0x0) { + iVar1 = ::SaveDC(*(HDC *)(this + 0x10)); + } + if (*(HDC *)(this + 8) != *(HDC *)(this + 0x10)) { + iVar2 = ::SaveDC(*(HDC *)(this + 8)); + if (iVar2 != 0) { + iVar1 = -1; + } + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180030840 (81 bytes) name=FUN_180030840 + +int FUN_180030840(longlong param_1,int param_2) + +{ + int iVar1; + BOOL BVar2; + + iVar1 = 1; + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + iVar1 = RestoreDC(*(HDC *)(param_1 + 8),param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + if ((iVar1 != 0) && (BVar2 = RestoreDC(*(HDC *)(param_1 + 0x10),param_2), BVar2 != 0)) { + return 1; + } + iVar1 = 0; + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180030894 (62 bytes) name=FUN_180030894 + +COLORREF FUN_180030894(longlong param_1,COLORREF param_2) + +{ + COLORREF CVar1; + + CVar1 = 0xffffffff; + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + CVar1 = SetBkColor(*(HDC *)(param_1 + 8),param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + CVar1 = SetBkColor(*(HDC *)(param_1 + 0x10),param_2); + } + return CVar1; +} + + +================================================================== + +### EXPORT FUNC 1800308d4 (62 bytes) name=FUN_1800308d4 + +COLORREF FUN_1800308d4(longlong param_1,COLORREF param_2) + +{ + COLORREF CVar1; + + CVar1 = 0xffffffff; + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + CVar1 = SetTextColor(*(HDC *)(param_1 + 8),param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + CVar1 = SetTextColor(*(HDC *)(param_1 + 0x10),param_2); + } + return CVar1; +} + + +================================================================== + +### EXPORT FUNC 180030914 (61 bytes) name=FUN_180030914 + +int FUN_180030914(longlong param_1,int param_2) + +{ + int iVar1; + + iVar1 = 0; + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + iVar1 = SetMapMode(*(HDC *)(param_1 + 8),param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + iVar1 = SetMapMode(*(HDC *)(param_1 + 0x10),param_2); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180030954 (11 bytes) name=FUN_180030954 + +void FUN_180030954(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180030958. Too many branches */ + /* WARNING: Treating indirect jump as call */ + GetClipBox(*(undefined8 *)(param_1 + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 180030960 (8 bytes) name=FUN_180030960 + +undefined ** FUN_180030960(void) + +{ + return &PTR_s_CResourceException_180056bf0; +} + + +================================================================== + +### EXPORT FUNC 180030968 (8 bytes) name=FUN_180030968 + +undefined ** FUN_180030968(void) + +{ + return &PTR_s_CUserException_180056c20; +} + + +================================================================== + +### EXPORT FUNC 180030970 (8 bytes) name=FUN_180030970 + +undefined ** FUN_180030970(void) + +{ + return &PTR_DAT_180056c50; +} + + +================================================================== + +### EXPORT FUNC 180030978 (8 bytes) name=FUN_180030978 + +undefined ** FUN_180030978(void) + +{ + return &PTR_s_CPaintDC_180056c80; +} + + +================================================================== + +### EXPORT FUNC 180030980 (8 bytes) name=FUN_180030980 + +undefined ** FUN_180030980(void) + +{ + return &PTR_s_CGdiObject_180056cb0; +} + + +================================================================== + +### EXPORT FUNC 180030988 (33 bytes) name=FUN_180030988 + +void FUN_180030988(void) + +{ + undefined *local_res8 [4]; + + local_res8[0] = &DAT_180072540; + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_res8,(ThrowInfo *)&DAT_1800688d8); +} + + +================================================================== + +### EXPORT FUNC 1800309ac (33 bytes) name=FUN_1800309ac + +void FUN_1800309ac(void) + +{ + undefined *local_res8 [4]; + + local_res8[0] = &DAT_180072660; + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_res8,(ThrowInfo *)&DAT_180068950); +} + + +================================================================== + +### EXPORT FUNC 1800309d0 (27 bytes) name=FUN_1800309d0 + +undefined8 * FUN_1800309d0(undefined8 *param_1) + +{ + *param_1 = CDC::vftable; + param_1[1] = 0; + param_1[2] = 0; + *(undefined4 *)(param_1 + 3) = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800309ec (11 bytes) name=FUN_1800309ec + +void FUN_1800309ec(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x0001800309f0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + PtVisible(*(undefined8 *)(param_1 + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800309f8 (11 bytes) name=FUN_1800309f8 + +void FUN_1800309f8(longlong param_1) + +{ + /* WARNING: Could not recover jumptable at 0x0001800309fc. Too many branches */ + /* WARNING: Treating indirect jump as call */ + RectVisible(*(undefined8 *)(param_1 + 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 180030a04 (27 bytes) name=FUN_180030a04 + +void FUN_180030a04(longlong param_1,int param_2,int param_3,LPCWSTR param_4,int param_5) + +{ + TextOutW(*(HDC *)(param_1 + 8),param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### EXPORT FUNC 180030a20 (63 bytes) name=FUN_180030a20 + +void FUN_180030a20(longlong param_1,int param_2,int param_3,UINT param_4,RECT *param_5, + LPCWSTR param_6,UINT param_7,INT *param_8) + +{ + ExtTextOutW(*(HDC *)(param_1 + 8),param_2,param_3,param_4,param_5,param_6,param_7,param_8); + return; +} + + +================================================================== + +### EXPORT FUNC 180030a60 (100 bytes) name=FID_conflict:TabbedTextOutA + +/* Library Function - Multiple Matches With Different Base Names + public: virtual class CSize __cdecl CDC::TabbedTextOutA(int,int,char const * __ptr64,int,int,int + * __ptr64,int) __ptr64 + public: virtual class CSize __cdecl CDC::TabbedTextOutW(int,int,wchar_t const * + __ptr64,int,int,int * __ptr64,int) __ptr64 + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +LONG __stdcall +FID_conflict_TabbedTextOutA + (HDC hdc,int x,int y,LPCSTR lpString,int chCount,int nTabPositions, + INT *lpnTabStopPositions,int nTabOrigin) + +{ + LONG LVar1; + undefined4 in_register_00000014; + undefined4 in_stack_0000002c; + undefined4 in_stack_00000044; + int in_stack_00000048; + + LVar1 = TabbedTextOutW(*(HDC *)(hdc + 2),y,(int)lpString, + (LPCWSTR)CONCAT44(in_stack_0000002c,chCount),nTabPositions, + (int)lpnTabStopPositions,(INT *)CONCAT44(in_stack_00000044,nTabOrigin), + in_stack_00000048); + *(int *)CONCAT44(in_register_00000014,x) = (int)(short)LVar1; + ((int *)CONCAT44(in_register_00000014,x))[1] = (int)(short)((uint)LVar1 >> 0x10); + return x; +} + + +================================================================== + +### EXPORT FUNC 180030ac4 (27 bytes) name=FUN_180030ac4 + +void FUN_180030ac4(longlong param_1,LPCWSTR param_2,int param_3,LPRECT param_4,UINT param_5) + +{ + DrawTextW(*(HDC *)(param_1 + 8),param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### EXPORT FUNC 180030ae0 (37 bytes) name=FUN_180030ae0 + +void FUN_180030ae0(longlong param_1,LPWSTR param_2,int param_3,LPRECT param_4,UINT param_5, + LPDRAWTEXTPARAMS param_6) + +{ + DrawTextExW(*(HDC *)(param_1 + 8),param_2,param_3,param_4,param_5,param_6); + return; +} + + +================================================================== + +### EXPORT FUNC 180030b08 (88 bytes) name=FUN_180030b08 + +void FUN_180030b08(longlong param_1,longlong param_2,GRAYSTRINGPROC param_3,LPARAM param_4, + int param_5,int param_6,int param_7,int param_8,int param_9) + +{ + HBRUSH hBrush; + + hBrush = (HBRUSH)0x0; + if (param_2 != 0) { + hBrush = *(HBRUSH *)(param_2 + 8); + } + GrayStringW(*(HDC *)(param_1 + 8),hBrush,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + return; +} + + +================================================================== + +### EXPORT FUNC 180030b60 (29 bytes) name=FUN_180030b60 + +void FUN_180030b60(longlong param_1,int param_2,int param_3,LPCSTR param_4,LPVOID param_5) + +{ + Escape(*(HDC *)(param_1 + 8),param_2,param_3,param_4,param_5); + return; +} + + +================================================================== + +### EXPORT FUNC 180030b80 (103 bytes) name=FUN_180030b80 + +LPPOINT FUN_180030b80(longlong param_1,LPPOINT param_2,int param_3,int param_4) + +{ + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + SetViewportOrgEx(*(HDC *)(param_1 + 8),param_3,param_4,param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + SetViewportOrgEx(*(HDC *)(param_1 + 0x10),param_3,param_4,param_2); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180030be8 (103 bytes) name=FUN_180030be8 + +LPPOINT FUN_180030be8(longlong param_1,LPPOINT param_2,int param_3,int param_4) + +{ + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + OffsetViewportOrgEx(*(HDC *)(param_1 + 8),param_3,param_4,param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + OffsetViewportOrgEx(*(HDC *)(param_1 + 0x10),param_3,param_4,param_2); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180030c50 (103 bytes) name=FUN_180030c50 + +LPSIZE FUN_180030c50(longlong param_1,LPSIZE param_2,int param_3,int param_4) + +{ + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + SetViewportExtEx(*(HDC *)(param_1 + 8),param_3,param_4,param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + SetViewportExtEx(*(HDC *)(param_1 + 0x10),param_3,param_4,param_2); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180030cb8 (141 bytes) name=FUN_180030cb8 + +LPSIZE FUN_180030cb8(longlong param_1,LPSIZE param_2,int param_3,int param_4,int param_5,int param_6 + ) + +{ + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + ScaleViewportExtEx(*(HDC *)(param_1 + 8),param_3,param_4,param_5,param_6,param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + ScaleViewportExtEx(*(HDC *)(param_1 + 0x10),param_3,param_4,param_5,param_6,param_2); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180030d48 (103 bytes) name=FUN_180030d48 + +LPSIZE FUN_180030d48(longlong param_1,LPSIZE param_2,int param_3,int param_4) + +{ + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + SetWindowExtEx(*(HDC *)(param_1 + 8),param_3,param_4,param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + SetWindowExtEx(*(HDC *)(param_1 + 0x10),param_3,param_4,param_2); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180030db0 (141 bytes) name=FUN_180030db0 + +LPSIZE FUN_180030db0(longlong param_1,LPSIZE param_2,int param_3,int param_4,int param_5,int param_6 + ) + +{ + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + ScaleWindowExtEx(*(HDC *)(param_1 + 8),param_3,param_4,param_5,param_6,param_2); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + ScaleWindowExtEx(*(HDC *)(param_1 + 0x10),param_3,param_4,param_5,param_6,param_2); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180030e40 (52 bytes) name=CreateObject + +/* Library Function - Single Match + public: static class CObject * __ptr64 __cdecl CDC::CreateObject(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +CObject * __cdecl CDC::CreateObject(void) + +{ + CObject *pCVar1; + CObject *pCVar2; + + pCVar1 = FUN_18001eb74(0x20); + pCVar2 = (CObject *)0x0; + if (pCVar1 != (CObject *)0x0) { + *(undefined8 *)(pCVar1 + 8) = 0; + *(undefined8 *)(pCVar1 + 0x10) = 0; + *(undefined ***)pCVar1 = vftable; + *(undefined4 *)(pCVar1 + 0x18) = 0; + pCVar2 = pCVar1; + } + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 180030e74 (43 bytes) name=FUN_180030e74 + +undefined8 * FUN_180030e74(void) + +{ + undefined8 *puVar1; + + puVar1 = FUN_18001eb74(0x10); + if (puVar1 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)0x0; + } + else { + puVar1[1] = 0; + *puVar1 = CGdiObject::vftable; + } + return puVar1; +} + + +================================================================== + +### EXPORT FUNC 180030ed8 (38 bytes) name=FUN_180030ed8 + +undefined8 * FUN_180030ed8(undefined8 *param_1,byte param_2) + +{ + *param_1 = CResourceException::vftable; + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180030f00 (38 bytes) name=FUN_180030f00 + +undefined8 * FUN_180030f00(undefined8 *param_1,byte param_2) + +{ + *param_1 = CUserException::vftable; + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180030f28 (163 bytes) name=afxMapHDC + +/* Library Function - Single Match + class CHandleMap * __ptr64 __cdecl afxMapHDC(int) + + Library: Visual Studio 2008 Release */ + +CHandleMap * __cdecl afxMapHDC(int param_1) + +{ + longlong lVar1; + undefined *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + + lVar1 = FUN_180022c04(); + puVar4 = (undefined8 *)0x0; + if ((*(longlong *)(lVar1 + 0x38) == 0) && (param_1 != 0)) { + puVar2 = FUN_18001eb64(FUN_18003067c); + puVar3 = FUN_18001eb74(0xb8); + if (puVar3 != (undefined8 *)0x0) { + puVar4 = FUN_180023874(puVar3,0x180056c50,0x180030ea0,0x1800270a0,8,2); + } + *(undefined8 **)(lVar1 + 0x38) = puVar4; + FUN_18001eb64(puVar2); + } + return *(CHandleMap **)(lVar1 + 0x38); +} + + +================================================================== + +### EXPORT FUNC 180030fd8 (24 bytes) name=Unwind@180030fd8 + +void Unwind_180030fd8(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 180030ff0 (35 bytes) name=FromHandle + +/* Library Function - Multiple Matches With Same Base Name + public: static class CDC * __ptr64 __cdecl CDC::FromHandle(struct HDC__ * __ptr64) + public: static class CGdiObject * __ptr64 __cdecl CGdiObject::FromHandle(void * __ptr64) + public: static class CImageList * __ptr64 __cdecl CImageList::FromHandle(struct _IMAGELIST * + __ptr64) + public: static class CMenu * __ptr64 __cdecl CMenu::FromHandle(struct HMENU__ * __ptr64) + + Library: Visual Studio 2008 Release */ + +void FromHandle(void *param_1) + +{ + CHandleMap *this; + + this = afxMapHDC(1); + CHandleMap::FromHandle(this,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180031014 (73 bytes) name=Attach + +/* Library Function - Single Match + public: int __cdecl CDC::Attach(struct HDC__ * __ptr64) __ptr64 + + Library: Visual Studio 2005 Release */ + +int __thiscall CDC::Attach(CDC *this,HDC__ *param_1) + +{ + CHandleMap *pCVar1; + undefined8 *puVar2; + + if (param_1 != (HDC__ *)0x0) { + *(HDC__ **)(this + 8) = param_1; + pCVar1 = afxMapHDC(1); + puVar2 = FUN_18003033c((longlong)(pCVar1 + 0x30),*(ulonglong *)(this + 8)); + *puVar2 = this; + (**(code **)(*(longlong *)this + 0x18))(this,*(undefined8 *)(this + 8)); + } + return (uint)(param_1 != (HDC__ *)0x0); +} + + +================================================================== + +### EXPORT FUNC 180031060 (77 bytes) name=Detach + +/* Library Function - Single Match + public: struct HDC__ * __ptr64 __cdecl CDC::Detach(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +HDC__ * __thiscall CDC::Detach(CDC *this) + +{ + HDC__ *pHVar1; + longlong lVar2; + + pHVar1 = *(HDC__ **)(this + 8); + if (pHVar1 != (HDC__ *)0x0) { + lVar2 = FUN_180022c04(); + if (*(longlong *)(lVar2 + 0x38) != 0) { + CMapPtrToPtr::RemoveKey + ((CMapPtrToPtr *)(*(longlong *)(lVar2 + 0x38) + 0x30),*(void **)(this + 8)); + } + } + (**(code **)(*(longlong *)this + 0x28))(this); + *(undefined8 *)(this + 8) = 0; + return pHVar1; +} + + +================================================================== + +### EXPORT FUNC 1800310b0 (40 bytes) name=~CDC + +/* Library Function - Single Match + public: virtual __cdecl CDC::~CDC(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CDC::~CDC(CDC *this) + +{ + HDC__ *hdc; + + *(undefined ***)this = vftable; + if (*(longlong *)(this + 8) != 0) { + hdc = Detach(this); + DeleteDC(hdc); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800310d8 (94 bytes) name=CPaintDC + +/* Library Function - Single Match + public: __cdecl CPaintDC::CPaintDC(class CWnd * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +CPaintDC * __thiscall CPaintDC::CPaintDC(CPaintDC *this,CWnd *param_1) + +{ + HWND hWnd; + int iVar1; + HDC pHVar2; + + *(undefined8 *)(this + 8) = 0; + *(undefined8 *)(this + 0x10) = 0; + *(undefined4 *)(this + 0x18) = 0; + *(undefined ***)this = vftable; + hWnd = *(HWND *)(param_1 + 0x40); + *(HWND *)(this + 0x20) = hWnd; + pHVar2 = BeginPaint(hWnd,(LPPAINTSTRUCT)(this + 0x28)); + iVar1 = CDC::Attach((CDC *)this,pHVar2); + if (iVar1 == 0) { + FUN_180030988(); + } + return this; +} + + +================================================================== + +### EXPORT FUNC 180031138 (24 bytes) name=Unwind@180031138 + +void Unwind_180031138(undefined8 param_1,longlong param_2) + +{ + CDC::~CDC(*(CDC **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180031150 (68 bytes) name=~CPaintDC + +/* Library Function - Single Match + public: virtual __cdecl CPaintDC::~CPaintDC(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CPaintDC::~CPaintDC(CPaintDC *this) + +{ + *(undefined ***)this = vftable; + EndPaint(*(HWND *)(this + 0x20),(PAINTSTRUCT *)(this + 0x28)); + CDC::Detach((CDC *)this); + CDC::~CDC((CDC *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 1800311a0 (24 bytes) name=Unwind@1800311a0 + +void Unwind_1800311a0(undefined8 param_1,longlong param_2) + +{ + CDC::~CDC(*(CDC **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800311b8 (163 bytes) name=afxMapHGDIOBJ + +/* Library Function - Single Match + class CHandleMap * __ptr64 __cdecl afxMapHGDIOBJ(int) + + Library: Visual Studio 2008 Release */ + +CHandleMap * __cdecl afxMapHGDIOBJ(int param_1) + +{ + longlong lVar1; + undefined *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + + lVar1 = FUN_180022c04(); + puVar4 = (undefined8 *)0x0; + if ((*(longlong *)(lVar1 + 0x40) == 0) && (param_1 != 0)) { + puVar2 = FUN_18001eb64(FUN_18003067c); + puVar3 = FUN_18001eb74(0xb8); + if (puVar3 != (undefined8 *)0x0) { + puVar4 = FUN_180023874(puVar3,0x180056cb0,0x180030ec0,0x1800270a0,8,1); + } + *(undefined8 **)(lVar1 + 0x40) = puVar4; + FUN_18001eb64(puVar2); + } + return *(CHandleMap **)(lVar1 + 0x40); +} + + +================================================================== + +### EXPORT FUNC 180031268 (24 bytes) name=Unwind@180031268 + +void Unwind_180031268(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 180031280 (35 bytes) name=FromHandle + +/* Library Function - Single Match + public: static class CGdiObject * __ptr64 __cdecl CGdiObject::FromHandle(void * __ptr64) + + Library: Visual Studio 2008 Release */ + +CGdiObject * __cdecl CGdiObject::FromHandle(void *param_1) + +{ + CHandleMap *this; + CObject *pCVar1; + + this = afxMapHGDIOBJ(1); + pCVar1 = CHandleMap::FromHandle(this,param_1); + return (CGdiObject *)pCVar1; +} + + +================================================================== + +### EXPORT FUNC 1800312a4 (68 bytes) name=Detach + +/* Library Function - Single Match + public: void * __ptr64 __cdecl CGdiObject::Detach(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +void * __thiscall CGdiObject::Detach(CGdiObject *this) + +{ + void *pvVar1; + longlong lVar2; + + pvVar1 = *(void **)(this + 8); + if (pvVar1 != (void *)0x0) { + lVar2 = FUN_180022c04(); + if (*(longlong *)(lVar2 + 0x40) != 0) { + CMapPtrToPtr::RemoveKey + ((CMapPtrToPtr *)(*(longlong *)(lVar2 + 0x40) + 0x30),*(void **)(this + 8)); + } + } + *(undefined8 *)(this + 8) = 0; + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 1800312e8 (34 bytes) name=DeleteObject + +/* Library Function - Single Match + public: int __cdecl CGdiObject::DeleteObject(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CGdiObject::DeleteObject(CGdiObject *this) + +{ + BOOL BVar1; + void *ho; + + if (*(longlong *)(this + 8) == 0) { + BVar1 = 0; + } + else { + ho = Detach(this); + BVar1 = ::DeleteObject(ho); + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 18003130c (47 bytes) name=FUN_18003130c + +CDC * FUN_18003130c(CDC *param_1,uint param_2) + +{ + CDC::~CDC(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18003133c (81 bytes) name=SelectStockObject + +/* Library Function - Single Match + public: virtual class CGdiObject * __ptr64 __cdecl CDC::SelectStockObject(int) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ + +CGdiObject * __thiscall CDC::SelectStockObject(CDC *this,int param_1) + +{ + HGDIOBJ h; + void *pvVar1; + CGdiObject *pCVar2; + + h = GetStockObject(param_1); + pvVar1 = (HGDIOBJ)0x0; + if (*(HDC *)(this + 8) != *(HDC *)(this + 0x10)) { + pvVar1 = SelectObject(*(HDC *)(this + 8),h); + } + if (*(HDC *)(this + 0x10) != (HDC)0x0) { + pvVar1 = SelectObject(*(HDC *)(this + 0x10),h); + } + pCVar2 = CGdiObject::FromHandle(pvVar1); + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 180031390 (106 bytes) name=FUN_180031390 + +void FUN_180031390(longlong param_1,longlong param_2) + +{ + HGDIOBJ pvVar1; + HGDIOBJ h; + + h = (HGDIOBJ)0x0; + pvVar1 = h; + if (*(HDC *)(param_1 + 8) != *(HDC *)(param_1 + 0x10)) { + if (param_2 != 0) { + pvVar1 = *(HGDIOBJ *)(param_2 + 8); + } + pvVar1 = SelectObject(*(HDC *)(param_1 + 8),pvVar1); + } + if (*(HDC *)(param_1 + 0x10) != (HDC)0x0) { + if (param_2 != 0) { + h = *(HGDIOBJ *)(param_2 + 8); + } + pvVar1 = SelectObject(*(HDC *)(param_1 + 0x10),h); + } + CGdiObject::FromHandle(pvVar1); + return; +} + + +================================================================== + +### EXPORT FUNC 1800313fc (47 bytes) name=FUN_1800313fc + +CPaintDC * FUN_1800313fc(CPaintDC *param_1,uint param_2) + +{ + CPaintDC::~CPaintDC(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18003142c (74 bytes) name=~CImageList + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + public: virtual __cdecl CImageList::~CImageList(void) __ptr64 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __thiscall CImageList::~CImageList(CImageList *this) + +{ + undefined1 auStack_468 [64]; + undefined8 local_428; + ulonglong local_18; + + local_428 = 0xfffffffffffffffe; + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_468; + *(undefined ***)this = CGdiObject::vftable; + CGdiObject::DeleteObject((CGdiObject *)this); + return; +} + + +================================================================== + +### EXPORT FUNC 18003147c (253 bytes) name=Catch@18003147c + +undefined8 Catch_18003147c(undefined8 param_1,longlong param_2) + +{ + wchar_t *pwVar1; + wchar_t *pwVar2; + int iVar3; + undefined **ppuVar4; + longlong lVar5; + + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar5 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + *(longlong *)(param_2 + 0x30) = lVar5 + 0x18; + iVar3 = (**(code **)(**(longlong **)(param_2 + 0x38) + 0x18)) + (*(longlong **)(param_2 + 0x38),param_2 + 0x50,0x200,0); + if (iVar3 == 0) { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\include\\afxwin1.inl"); + } + else { + FUN_18001ad00((longlong *)(param_2 + 0x30),L"%s (%s:%d)\n%s","Exception thrown in destructor", + "f:\\sp\\vctools\\vc7libs\\ship\\atlmfc\\include\\afxwin1.inl"); + } + pwVar2 = *(wchar_t **)(param_2 + 0x30); + AfxMessageBox(pwVar2,0,0); + LOCK(); + pwVar1 = pwVar2 + -4; + iVar3 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar2 + -0xc) + 8))(); + } + (**(code **)(**(longlong **)(param_2 + 0x38) + 8))(*(longlong **)(param_2 + 0x38),1); + return 0x18003145e; +} + + +================================================================== + +### EXPORT FUNC 18003157c (24 bytes) name=Unwind@18003157c + +void Unwind_18003157c(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180031594 (47 bytes) name=FUN_180031594 + +CImageList * FUN_180031594(CImageList *param_1,uint param_2) + +{ + CImageList::~CImageList(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800315c4 (23 bytes) name=FUN_1800315c4 + +void FUN_1800315c4(undefined8 *param_1) + +{ + if ((HGLOBAL)*param_1 != (HGLOBAL)0x0) { + GlobalFree((HGLOBAL)*param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800315dc (8 bytes) name=FUN_1800315dc + +undefined8 FUN_1800315dc(undefined8 *param_1) + +{ + undefined8 uVar1; + + uVar1 = *param_1; + *param_1 = 0; + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800315e4 (85 bytes) name=FUN_1800315e4 + +short * FUN_1800315e4(longlong param_1) + +{ + short sVar1; + short *psVar2; + + psVar2 = (short *)(param_1 + 0x1a); + if (*(short *)(param_1 + 2) != -1) { + psVar2 = (short *)(param_1 + 0x12); + } + if (*psVar2 == -1) { + psVar2 = psVar2 + 2; + } + else { + do { + sVar1 = *psVar2; + psVar2 = psVar2 + 1; + } while (sVar1 != 0); + } + if (*psVar2 == -1) { + psVar2 = psVar2 + 2; + } + else { + do { + sVar1 = *psVar2; + psVar2 = psVar2 + 1; + } while (sVar1 != 0); + } + do { + sVar1 = *psVar2; + psVar2 = psVar2 + 1; + } while (sVar1 != 0); + return psVar2; +} + + +================================================================== + +### EXPORT FUNC 18003163c (239 bytes) name=FUN_18003163c + +ulonglong FUN_18003163c(uint *param_1) + +{ + ushort uVar1; + uint uVar2; + short *psVar3; + longlong lVar4; + ushort *puVar5; + short sVar6; + bool bVar7; + + bVar7 = *(short *)((longlong)param_1 + 2) == -1; + psVar3 = FUN_1800315e4((longlong)param_1); + if (*(short *)((longlong)param_1 + 2) == -1) { + uVar2 = param_1[3]; + } + else { + uVar2 = *param_1; + } + if ((uVar2 & 0x40) != 0) { + psVar3 = (short *)((longlong)psVar3 + (longlong)(int)(((-(uint)bVar7 & 2) + 1) * 2)); + lVar4 = FUN_1800355e0(psVar3); + psVar3 = psVar3 + lVar4 + 1; + } + if (bVar7) { + sVar6 = (short)param_1[4]; + } + else { + sVar6 = (short)param_1[2]; + } + if (sVar6 != 0) { + do { + puVar5 = (ushort *) + (((longlong)psVar3 + 3U & 0xfffffffffffffffc) + (ulonglong)(-(uint)bVar7 & 6) + 0x12) + ; + if (*puVar5 == 0xffff) { + puVar5 = puVar5 + 2; + } + else { + do { + uVar1 = *puVar5; + puVar5 = puVar5 + 1; + } while (uVar1 != 0); + } + if (*puVar5 == 0xffff) { + puVar5 = puVar5 + 2; + } + else { + do { + uVar1 = *puVar5; + puVar5 = puVar5 + 1; + } while (uVar1 != 0); + } + uVar1 = *puVar5; + if ((uVar1 != 0) && (!bVar7)) { + uVar1 = uVar1 - 2; + } + sVar6 = sVar6 + -1; + psVar3 = (short *)((longlong)puVar5 + (ulonglong)uVar1 + 2); + } while (sVar6 != 0); + } + return (longlong)psVar3 - (longlong)param_1 & 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18003172c (187 bytes) name=FUN_18003172c + +undefined8 FUN_18003172c(undefined8 *param_1,void *param_2,ulonglong param_3) + +{ + int iVar1; + uint uVar2; + HGLOBAL hMem; + ulonglong *puVar3; + undefined8 uVar4; + ulonglong dwBytes; + + dwBytes = (ulonglong)((int)param_3 + 0x40); + *(int *)(param_1 + 1) = (int)param_3; + if ((param_3 & 0xffffffff) <= dwBytes) { + hMem = GlobalAlloc(0x40,dwBytes); + *param_1 = hMem; + if (hMem != (HGLOBAL)0x0) { + puVar3 = GlobalLock(hMem); + uVar4 = FUN_180032c60(puVar3,(ulonglong)*(uint *)(param_1 + 1),param_2, + (ulonglong)*(uint *)(param_1 + 1)); + iVar1 = (int)uVar4; + if (iVar1 != 0) { + if (iVar1 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar1 == 0x16) || (iVar1 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar1 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + if (*(short *)((longlong)puVar3 + 2) == -1) { + uVar2 = *(uint *)((longlong)puVar3 + 0xc); + } + else { + uVar2 = (uint)*puVar3; + } + *(uint *)((longlong)param_1 + 0xc) = ~(uVar2 >> 6) & 1; + GlobalUnlock((HGLOBAL)*param_1); + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800317ec (422 bytes) name=FUN_1800317ec + +undefined8 FUN_1800317ec(undefined8 *param_1,LPCWSTR param_2,short param_3) + +{ + int iVar1; + short sVar2; + int iVar3; + errno_t eVar4; + uint *puVar5; + short *psVar6; + longlong lVar7; + int iVar8; + rsize_t rVar9; + uint uVar10; + void *_Dst; + int iVar11; + void *_Src; + bool bVar12; + + if (*(int *)(param_1 + 1) != 0) { + puVar5 = GlobalLock((HGLOBAL)*param_1); + bVar12 = *(short *)((longlong)puVar5 + 2) == -1; + if (*(short *)((longlong)puVar5 + 2) == -1) { + uVar10 = puVar5[3]; + } + else { + uVar10 = *puVar5; + } + iVar11 = (-(uint)bVar12 & 2) + 1; + iVar1 = iVar11 * 2; + if (bVar12) { + puVar5[3] = puVar5[3] | 0x40; + } + else { + *puVar5 = *puVar5 | 0x40; + } + iVar3 = lstrlenW(param_2); + if ((iVar3 < 0x20) && (iVar3 = iVar1 + 2 + iVar3 * 2, iVar1 <= iVar3)) { + psVar6 = FUN_1800315e4((longlong)puVar5); + if ((uVar10 & 0x40) == 0) { + iVar8 = 0; + } + else { + lVar7 = FUN_1800355e0((short *)((longlong)iVar1 + (longlong)psVar6)); + iVar8 = iVar1 + 2 + (int)lVar7 * 2; + } + _Src = (void *)((longlong)iVar8 + 3 + (longlong)psVar6 & 0xfffffffffffffffc); + _Dst = (void *)((longlong)iVar3 + 3 + (longlong)psVar6 & 0xfffffffffffffffc); + if (bVar12) { + sVar2 = (short)puVar5[4]; + } + else { + sVar2 = (short)puVar5[2]; + } + if ((iVar3 != iVar8) && (sVar2 != 0)) { + rVar9 = ((ulonglong)*(uint *)(param_1 + 1) - (longlong)_Src) + (longlong)puVar5; + if (*(uint *)(param_1 + 1) < rVar9) { + return 0; + } + eVar4 = memmove_s(_Dst,rVar9,_Src,rVar9); + if (eVar4 != 0) { + if (eVar4 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar4 == 0x16) || (eVar4 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar4 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + } + rVar9 = (rsize_t)(iVar3 + iVar11 * -2); + *psVar6 = param_3; + eVar4 = memmove_s((void *)((longlong)iVar1 + (longlong)psVar6),rVar9,param_2,rVar9); + if (eVar4 != 0) { + if (eVar4 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar4 == 0x16) || (eVar4 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar4 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + ((int)_Dst - (int)_Src); + GlobalUnlock((HGLOBAL)*param_1); + *(undefined4 *)((longlong)param_1 + 0xc) = 0; + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180031998 (246 bytes) name=FUN_180031998 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180031998(undefined8 *param_1,short param_2) + +{ + int iVar1; + HANDLE h; + HDC hdc; + short sVar2; + wchar_t *pwVar3; + undefined1 auStack_a8 [32]; + int local_88 [7]; + WCHAR local_6c [34]; + ulonglong local_28; + + local_28 = DAT_18006cea0 ^ (ulonglong)auStack_a8; + pwVar3 = L"System"; + sVar2 = 10; + h = GetStockObject(0x11); + if (h == (HGDIOBJ)0x0) { + h = GetStockObject(0xd); + if (h == (HGDIOBJ)0x0) goto LAB_180031a50; + } + iVar1 = GetObjectW(h,0x5c,local_88); + if (iVar1 != 0) { + pwVar3 = local_6c; + hdc = GetDC((HWND)0x0); + if (local_88[0] < 0) { + local_88[0] = -local_88[0]; + } + iVar1 = GetDeviceCaps(hdc,0x5a); + iVar1 = MulDiv(local_88[0],0x48,iVar1); + sVar2 = (short)iVar1; + ReleaseDC((HWND)0x0,hdc); + } +LAB_180031a50: + if (param_2 == 0) { + param_2 = sVar2; + } + FUN_1800317ec(param_1,pwVar3,param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 180031a90 (75 bytes) name=FUN_180031a90 + +undefined8 * FUN_180031a90(undefined8 *param_1,uint *param_2) + +{ + ulonglong uVar1; + undefined8 uVar2; + + if (param_2 == (uint *)0x0) { + *param_1 = 0; + *(undefined4 *)(param_1 + 1) = 0; + *(undefined4 *)((longlong)param_1 + 0xc) = 0; + } + else { + uVar1 = FUN_18003163c(param_2); + uVar2 = FUN_18003172c(param_1,param_2,uVar1 & 0xffffffff); + if ((int)uVar2 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180031adc (130 bytes) name=FUN_180031adc + +undefined8 FUN_180031adc(uint *param_1,longlong *param_2,short *param_3) + +{ + uint uVar1; + int iVar2; + short *psVar3; + longlong lVar4; + undefined8 uVar5; + short sVar6; + + sVar6 = -1; + if (*(short *)((longlong)param_1 + 2) == -1) { + uVar1 = param_1[3]; + } + else { + uVar1 = *param_1; + } + if ((uVar1 & 0x40) == 0) { + uVar5 = 0; + } + else { + psVar3 = FUN_1800315e4((longlong)param_1); + *param_3 = *psVar3; + iVar2 = 1; + if (*(short *)((longlong)param_1 + 2) == sVar6) { + iVar2 = 3; + } + psVar3 = (short *)((longlong)psVar3 + (longlong)(iVar2 * 2)); + if (psVar3 == (short *)0x0) { + iVar2 = 0; + } + else { + lVar4 = FUN_1800355e0(psVar3); + iVar2 = (int)lVar4; + } + FUN_18000b480(param_2,psVar3,iVar2); + uVar5 = 1; + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180031b60 (8 bytes) name=FUN_180031b60 + +undefined ** FUN_180031b60(void) + +{ + return &PTR_s_CMenu_180057080; +} + + +================================================================== + +### EXPORT FUNC 180031b68 (43 bytes) name=FUN_180031b68 + +undefined8 * FUN_180031b68(void) + +{ + undefined8 *puVar1; + + puVar1 = FUN_18001eb74(0x10); + if (puVar1 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)0x0; + } + else { + puVar1[1] = 0; + *puVar1 = CMenu::vftable; + } + return puVar1; +} + + +================================================================== + +### EXPORT FUNC 180031bac (163 bytes) name=afxMapHMENU + +/* Library Function - Single Match + class CHandleMap * __ptr64 __cdecl afxMapHMENU(int) + + Library: Visual Studio 2008 Release */ + +CHandleMap * __cdecl afxMapHMENU(int param_1) + +{ + longlong lVar1; + undefined *puVar2; + undefined8 *puVar3; + undefined8 *puVar4; + + lVar1 = FUN_180022c04(); + puVar4 = (undefined8 *)0x0; + if ((*(longlong *)(lVar1 + 0x30) == 0) && (param_1 != 0)) { + puVar2 = FUN_18001eb64(FUN_18003067c); + puVar3 = FUN_18001eb74(0xb8); + if (puVar3 != (undefined8 *)0x0) { + puVar4 = FUN_180023874(puVar3,0x180057080,0x180031b94,0x1800270a0,8,1); + } + *(undefined8 **)(lVar1 + 0x30) = puVar4; + FUN_18001eb64(puVar2); + } + return *(CHandleMap **)(lVar1 + 0x30); +} + + +================================================================== + +### EXPORT FUNC 180031c5c (24 bytes) name=Unwind@180031c5c + +void Unwind_180031c5c(undefined8 param_1,longlong param_2) + +{ + thunk_FUN_180034a70(*(LPVOID *)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 180031c74 (35 bytes) name=FromHandle + +/* Library Function - Multiple Matches With Same Base Name + public: static class CDC * __ptr64 __cdecl CDC::FromHandle(struct HDC__ * __ptr64) + public: static class CGdiObject * __ptr64 __cdecl CGdiObject::FromHandle(void * __ptr64) + public: static class CImageList * __ptr64 __cdecl CImageList::FromHandle(struct _IMAGELIST * + __ptr64) + public: static class CMenu * __ptr64 __cdecl CMenu::FromHandle(struct HMENU__ * __ptr64) + + Library: Visual Studio 2008 Release */ + +void FromHandle(void *param_1) + +{ + CHandleMap *this; + + this = afxMapHMENU(1); + CHandleMap::FromHandle(this,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180031c98 (43 bytes) name=FromHandlePermanent + +/* Library Function - Single Match + public: static class CMenu * __ptr64 __cdecl CMenu::FromHandlePermanent(struct HMENU__ * + __ptr64) + + Library: Visual Studio 2008 Release */ + +CMenu * __cdecl CMenu::FromHandlePermanent(HMENU__ *param_1) + +{ + longlong lVar1; + CMenu *pCVar2; + + lVar1 = FUN_180022c04(); + pCVar2 = (CMenu *)0x0; + if (*(longlong *)(lVar1 + 0x30) != 0) { + pCVar2 = (CMenu *)FUN_180030118(*(longlong *)(lVar1 + 0x30) + 0x30,(ulonglong)param_1); + } + return pCVar2; +} + + +================================================================== + +### EXPORT FUNC 180031cc4 (68 bytes) name=Detach + +/* Library Function - Single Match + public: struct HMENU__ * __ptr64 __cdecl CMenu::Detach(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +HMENU__ * __thiscall CMenu::Detach(CMenu *this) + +{ + HMENU__ *pHVar1; + longlong lVar2; + + pHVar1 = *(HMENU__ **)(this + 8); + if (pHVar1 != (HMENU__ *)0x0) { + lVar2 = FUN_180022c04(); + if (*(longlong *)(lVar2 + 0x30) != 0) { + CMapPtrToPtr::RemoveKey + ((CMapPtrToPtr *)(*(longlong *)(lVar2 + 0x30) + 0x30),*(void **)(this + 8)); + } + } + *(undefined8 *)(this + 8) = 0; + return pHVar1; +} + + +================================================================== + +### EXPORT FUNC 180031d08 (34 bytes) name=DestroyMenu + +/* Library Function - Single Match + public: int __cdecl CMenu::DestroyMenu(void) __ptr64 + + Library: Visual Studio 2008 Release */ + +int __thiscall CMenu::DestroyMenu(CMenu *this) + +{ + BOOL BVar1; + HMENU__ *hMenu; + + if (*(longlong *)(this + 8) == 0) { + BVar1 = 0; + } + else { + hMenu = Detach(this); + BVar1 = ::DestroyMenu(hMenu); + } + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 180031d2c (57 bytes) name=FUN_180031d2c + +CMenu * FUN_180031d2c(CMenu *param_1,uint param_2) + +{ + *(undefined ***)param_1 = CMenu::vftable; + CMenu::DestroyMenu(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180031d68 (50 bytes) name=AfxPostQuitMessage + +/* Library Function - Single Match + void __cdecl AfxPostQuitMessage(int) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl AfxPostQuitMessage(int param_1) + +{ + longlong lVar1; + + lVar1 = FUN_180020e40(); + if ((lVar1 != 0) && (*(code **)(lVar1 + 0x78) != (code *)0x0)) { + (**(code **)(lVar1 + 0x78))(1,1); + } + /* WARNING: Could not recover jumptable at 0x000180031d93. Too many branches */ + /* WARNING: Treating indirect jump as call */ + PostQuitMessage(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180031d9c (242 bytes) name=DevModeChange + +/* Library Function - Single Match + public: void __cdecl CWinApp::DevModeChange(wchar_t * __ptr64) __ptr64 + + Library: Visual Studio 2008 Release */ + +void __thiscall CWinApp::DevModeChange(CWinApp *this,wchar_t *param_1) + +{ + int iVar1; + BOOL BVar2; + LONG LVar3; + LPVOID pvVar4; + HGLOBAL hMem; + PDEVMODEW pDevModeOutput; + HANDLE local_res8; + + if (*(HGLOBAL *)(this + 0xe8) != (HGLOBAL)0x0) { + pvVar4 = GlobalLock(*(HGLOBAL *)(this + 0xe8)); + iVar1 = lstrcmpW((LPCWSTR)((longlong)pvVar4 + (ulonglong)*(ushort *)((longlong)pvVar4 + 2) * 2), + param_1); + if (iVar1 == 0) { + BVar2 = OpenPrinterW(param_1,&local_res8,(LPPRINTER_DEFAULTSW)0x0); + if (BVar2 != 0) { + if (*(HGLOBAL *)(this + 0xe0) != (HGLOBAL)0x0) { + FUN_180030638(*(HGLOBAL *)(this + 0xe0)); + } + LVar3 = DocumentPropertiesW((HWND)0x0,local_res8,param_1,(PDEVMODEW)0x0,(PDEVMODEW)0x0,0); + hMem = GlobalAlloc(0x42,(longlong)LVar3); + *(HGLOBAL *)(this + 0xe0) = hMem; + pDevModeOutput = GlobalLock(hMem); + LVar3 = DocumentPropertiesW((HWND)0x0,local_res8,param_1,pDevModeOutput,(PDEVMODEW)0x0,2); + if (LVar3 != 1) { + FUN_180030638(*(HGLOBAL *)(this + 0xe0)); + *(undefined8 *)(this + 0xe0) = 0; + } + ClosePrinter(local_res8); + } + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180031e90 (24 bytes) name=FUN_180031e90 + +bool FUN_180031e90(void) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + return *(int *)(lVar1 + 0x50) == 0; +} + + +================================================================== + +### EXPORT FUNC 180031ea8 (19 bytes) name=AfxOleLockApp + +/* Library Function - Single Match + void __cdecl AfxOleLockApp(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl AfxOleLockApp(void) + +{ + longlong lVar1; + + lVar1 = FUN_180022bb4(); + LOCK(); + *(int *)(lVar1 + 0x50) = *(int *)(lVar1 + 0x50) + 1; + UNLOCK(); + return; +} + + +================================================================== + +### EXPORT FUNC 180031ebc (100 bytes) name=AfxOleOnReleaseAllObjects + +/* Library Function - Single Match + void __cdecl AfxOleOnReleaseAllObjects(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl AfxOleOnReleaseAllObjects(void) + +{ + int iVar1; + longlong lVar2; + + lVar2 = FUN_180022bb4(); + if (*(int *)(lVar2 + 0x54) == 0) { + lVar2 = FUN_180022bb4(); + *(undefined4 *)(lVar2 + 0x54) = 1; + lVar2 = FUN_180022bb4(); + lVar2 = *(longlong *)(lVar2 + 8); + if ((lVar2 == 0) || (*(CWnd **)(lVar2 + 0x40) == (CWnd *)0x0)) { + lVar2 = FUN_180022bb4(); + if (*(char *)(lVar2 + 0x28) == '\0') { + AfxPostQuitMessage(0); + } + } + else { + iVar1 = CWnd::IsWindowEnabled(*(CWnd **)(lVar2 + 0x40)); + if (iVar1 != 0) { + (**(code **)(**(longlong **)(lVar2 + 0x40) + 0xc0))(); + } + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180031f20 (26 bytes) name=AfxOleUnlockApp + +/* Library Function - Single Match + void __cdecl AfxOleUnlockApp(void) + + Library: Visual Studio 2008 Release */ + +void __cdecl AfxOleUnlockApp(void) + +{ + int *piVar1; + longlong lVar2; + + lVar2 = FUN_180022bb4(); + LOCK(); + piVar1 = (int *)(lVar2 + 0x50); + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (*piVar1 == 0) { + AfxOleOnReleaseAllObjects(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180031f3c (8 bytes) name=FUN_180031f3c + +undefined ** FUN_180031f3c(void) + +{ + return &PTR_s_CByteArray_18006ce20; +} + + +================================================================== + +### EXPORT FUNC 180031f44 (389 bytes) name=FUN_180031f44 + +void FUN_180031f44(longlong param_1,ulonglong param_2,longlong param_3) + +{ + LPVOID pvVar1; + longlong lVar2; + int iVar3; + ulonglong *puVar4; + longlong lVar5; + longlong lVar6; + undefined8 uVar7; + ulonglong uVar8; + + if ((longlong)param_2 < 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (-1 < param_3) { + *(longlong *)(param_1 + 0x20) = param_3; + } + pvVar1 = *(LPVOID *)(param_1 + 8); + if (param_2 == 0) { + thunk_FUN_180034a70(pvVar1); + *(undefined8 *)(param_1 + 8) = 0; + *(undefined8 *)(param_1 + 0x18) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + } + else { + if (pvVar1 == (LPVOID)0x0) { + if (0xffffffff < param_2) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + puVar4 = FUN_18001eb74(param_2); + *(ulonglong **)(param_1 + 8) = puVar4; + FUN_1800357d0(puVar4,0,param_2); + *(ulonglong *)(param_1 + 0x18) = param_2; + } + else { + lVar2 = *(longlong *)(param_1 + 0x18); + if (lVar2 < (longlong)param_2) { + lVar6 = *(longlong *)(param_1 + 0x20); + if ((*(longlong *)(param_1 + 0x20) == 0) && + (((lVar5 = (longlong) + (*(longlong *)(param_1 + 0x10) + + (ulonglong)((uint)(*(longlong *)(param_1 + 0x10) >> 0x3f) & 7)) >> 3, + lVar5 < 4 || (lVar6 = 0x400, lVar5 < 0x401)) && (lVar6 = lVar5, lVar5 < 4)))) { + lVar6 = 4; + } + uVar8 = param_2; + if ((longlong)param_2 < lVar6 + lVar2) { + uVar8 = lVar6 + lVar2; + } + if ((longlong)uVar8 < lVar2) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + puVar4 = FUN_18001eb74(uVar8); + uVar7 = FUN_180032c60(puVar4,uVar8,*(void **)(param_1 + 8),*(ulonglong *)(param_1 + 0x10)); + iVar3 = (int)uVar7; + if (iVar3 != 0) { + if (iVar3 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((iVar3 == 0x16) || (iVar3 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (iVar3 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + FUN_1800357d0((ulonglong *)(*(longlong *)(param_1 + 0x10) + (longlong)puVar4),0, + param_2 - *(longlong *)(param_1 + 0x10)); + thunk_FUN_180034a70(*(LPVOID *)(param_1 + 8)); + *(ulonglong **)(param_1 + 8) = puVar4; + *(ulonglong *)(param_1 + 0x18) = uVar8; + } + else { + lVar2 = *(longlong *)(param_1 + 0x10); + if (lVar2 < (longlong)param_2) { + FUN_1800357d0((ulonglong *)((longlong)pvVar1 + lVar2),0,param_2 - lVar2); + } + } + } + *(ulonglong *)(param_1 + 0x10) = param_2; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800320d0 (210 bytes) name=FUN_1800320d0 + +void FUN_1800320d0(longlong param_1,CArchive *param_2) + +{ + uint uVar1; + ulonglong *puVar2; + ulonglong uVar3; + void *pvVar4; + ulonglong uVar5; + + if ((~*(uint *)(param_2 + 0x20) & 1) == 0) { + uVar3 = FUN_18002eadc((longlong)param_2); + FUN_180031f44(param_1,uVar3,-1); + puVar2 = *(ulonglong **)(param_1 + 8); + for (uVar3 = *(ulonglong *)(param_1 + 0x10); uVar3 != 0; uVar3 = uVar3 - uVar5) { + uVar5 = 0x7fffffff; + if (uVar3 < 0x7fffffff) { + uVar5 = uVar3 & 0xffffffff; + } + uVar1 = FUN_18002e414((longlong)param_2,puVar2,(uint)uVar5); + if (uVar1 != (uint)uVar5) { + /* WARNING: Subroutine does not return */ + FUN_18002eec0(3,(short *)0x0); + } + puVar2 = (ulonglong *)((longlong)puVar2 + uVar5); + } + } + else { + FUN_18002e98c(param_2,*(ulonglong *)(param_1 + 0x10)); + pvVar4 = *(void **)(param_1 + 8); + for (uVar3 = *(ulonglong *)(param_1 + 0x10); uVar3 != 0; uVar3 = uVar3 - uVar1) { + uVar1 = 0x7fffffff; + if (uVar3 < 0x7fffffff) { + uVar1 = (uint)uVar3; + } + FUN_18002e810(param_2,pvVar4,uVar1); + pvVar4 = (void *)((longlong)pvVar4 + (ulonglong)uVar1); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800321a4 (57 bytes) name=CreateObject + +/* Library Function - Multiple Matches With Same Base Name + public: static class CObject * __ptr64 __cdecl CByteArray::CreateObject(void) + public: static class CObject * __ptr64 __cdecl CDWordArray::CreateObject(void) + public: static class CObject * __ptr64 __cdecl CObArray::CreateObject(void) + public: static class CObject * __ptr64 __cdecl CStringArray::CreateObject(void) + 5 names - too many to list + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +undefined8 * CreateObject(void) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + + puVar1 = FUN_18001eb74(0x28); + puVar2 = (undefined8 *)0x0; + if (puVar1 != (undefined8 *)0x0) { + puVar1[1] = 0; + puVar1[4] = 0; + puVar1[3] = 0; + puVar1[2] = 0; + *puVar1 = CByteArray::vftable; + puVar2 = puVar1; + } + return puVar2; +} + + +================================================================== + +### EXPORT FUNC 1800321e0 (61 bytes) name=FUN_1800321e0 + +undefined8 * FUN_1800321e0(undefined8 *param_1,uint param_2) + +{ + *param_1 = CByteArray::vftable; + thunk_FUN_180034a70((LPVOID)param_1[1]); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180032220 (510 bytes) name=FUN_180032220 + +void FUN_180032220(longlong *param_1,wchar_t *param_2,longlong param_3,int param_4) + +{ + wchar_t wVar1; + LPCWSTR pWVar2; + short *psVar3; + int iVar4; + errno_t eVar5; + longlong lVar6; + int iVar7; + wchar_t *pwVar8; + int iVar9; + + iVar9 = 0; + if (param_2 == (wchar_t *)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (param_3 == 0) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + wVar1 = *param_2; + pwVar8 = param_2; + while (wVar1 != L'\0') { + if (*pwVar8 == L'%') { + wVar1 = pwVar8[1]; + if (((ushort)wVar1 < 0x31) || (0x39 < (ushort)wVar1)) { + if (((ushort)wVar1 < 0x41) || (0x5a < (ushort)wVar1)) goto LAB_1800322c2; + if ((ushort)wVar1 < 0x3a) goto LAB_18003229d; + iVar7 = (ushort)wVar1 - 0x38; + } + else { +LAB_18003229d: + iVar7 = (ushort)wVar1 - 0x31; + } + pwVar8 = pwVar8 + 2; + if (param_4 <= iVar7) goto LAB_1800322c6; + pWVar2 = *(LPCWSTR *)(param_3 + (longlong)iVar7 * 8); + if (pWVar2 != (LPCWSTR)0x0) { + iVar7 = lstrlenW(pWVar2); + iVar9 = iVar9 + iVar7; + } + } + else { +LAB_1800322c2: + pwVar8 = pwVar8 + 1; +LAB_1800322c6: + iVar9 = iVar9 + 1; + } + wVar1 = *pwVar8; + } + if ((int)(1U - *(int *)(*param_1 + -8) | *(int *)(*param_1 + -0xc) - iVar9) < 0) { + FUN_18000b190(param_1,iVar9); + } + pwVar8 = (wchar_t *)*param_1; + while (*param_2 != L'\0') { + if (*param_2 == L'%') { + wVar1 = param_2[1]; + if (((ushort)wVar1 < 0x31) || (0x39 < (ushort)wVar1)) { + if (((ushort)wVar1 < 0x41) || (0x5a < (ushort)wVar1)) goto LAB_18003239a; + if ((ushort)wVar1 < 0x3a) goto LAB_180032333; + iVar7 = (ushort)wVar1 - 0x38; + } + else { +LAB_180032333: + iVar7 = (ushort)wVar1 - 0x31; + } + param_2 = param_2 + 2; + if (param_4 <= iVar7) { + *pwVar8 = L'?'; + goto LAB_1800323a1; + } + pWVar2 = *(LPCWSTR *)(param_3 + (longlong)iVar7 * 8); + if (pWVar2 != (LPCWSTR)0x0) { + iVar4 = lstrlenW(pWVar2); + eVar5 = wcscpy_s(pwVar8,(longlong)(iVar9 + 1),*(wchar_t **)(param_3 + (longlong)iVar7 * 8)); + if (eVar5 != 0) { + if (eVar5 == 0xc) { + /* WARNING: Subroutine does not return */ + FUN_18001ed6c(); + } + if ((eVar5 == 0x16) || (eVar5 == 0x22)) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + if (eVar5 != 0x50) { + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); + } + } + iVar9 = iVar9 - iVar4; + pwVar8 = pwVar8 + iVar4; + } + } + else { +LAB_18003239a: + *pwVar8 = *param_2; + param_2 = param_2 + 1; +LAB_1800323a1: + pwVar8 = pwVar8 + 1; + iVar9 = iVar9 + -1; + } + } + psVar3 = (short *)*param_1; + iVar9 = (int)((longlong)pwVar8 - (longlong)psVar3 >> 1); + iVar7 = 0; + if (iVar9 == -1) { + if (psVar3 != (short *)0x0) { + lVar6 = FUN_1800355e0(psVar3); + iVar9 = (int)lVar6; + goto LAB_1800323df; + } + } + else { +LAB_1800323df: + iVar7 = iVar9; + if (iVar7 < 0) goto LAB_180032419; + } + if (iVar7 <= *(int *)(*param_1 + -0xc)) { + *(int *)(*param_1 + -0x10) = iVar7; + *(undefined2 *)(*param_1 + (longlong)iVar7 * 2) = 0; + return; + } +LAB_180032419: + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); +} + + +================================================================== + +### EXPORT FUNC 180032424 (240 bytes) name=FUN_180032424 + +void FUN_180032424(longlong *param_1,uint param_2,longlong param_3,int param_4) + +{ + wchar_t *pwVar1; + int iVar2; + undefined **ppuVar3; + longlong lVar4; + HMODULE pHVar5; + undefined8 uVar6; + wchar_t *pwVar7; + wchar_t *local_18; + undefined8 local_10; + + local_10 = 0xfffffffffffffffe; + ppuVar3 = FUN_18001fcc0(); + if (ppuVar3 != (undefined **)0x0) { + lVar4 = (**(code **)(*ppuVar3 + 0x18))(ppuVar3); + local_18 = (wchar_t *)(lVar4 + 0x18); + pHVar5 = (HMODULE)FUN_18001fcac(); + pwVar7 = (wchar_t *)(lVar4 + 0x18); + if ((pHVar5 == (HMODULE)0x0) || + (uVar6 = FUN_18000af50((longlong *)&local_18,pHVar5,param_2), pwVar7 = local_18, + (int)uVar6 == 0)) { + LOCK(); + pwVar1 = pwVar7 + -4; + iVar2 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar7 + -0xc) + 8))(); + } + } + else { + FUN_180032220(param_1,local_18,param_3,param_4); + LOCK(); + pwVar1 = pwVar7 + -4; + iVar2 = *(int *)pwVar1; + *(int *)pwVar1 = *(int *)pwVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(pwVar7 + -0xc) + 8))(); + } + } + return; + } + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); +} + + +================================================================== + +### EXPORT FUNC 180032524 (24 bytes) name=Unwind@180032524 + +void Unwind_180032524(undefined8 param_1,longlong param_2) + +{ + FUN_18000b5e0((longlong *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18003253c (30 bytes) name=FUN_18003253c + +void FUN_18003253c(longlong *param_1,uint param_2,undefined8 param_3) + +{ + undefined8 local_res18 [2]; + + local_res18[0] = param_3; + FUN_180032424(param_1,param_2,(longlong)local_res18,1); + return; +} + + +================================================================== + +### EXPORT FUNC 18003255c (52 bytes) name=FUN_18003255c + +void FUN_18003255c(undefined8 *param_1,longlong param_2,longlong param_3) + +{ + undefined8 *puVar1; + + if ((param_2 != 0) && (param_3 != 0)) { + puVar1 = FUN_18001eb74(param_2 * param_3 + 8); + *puVar1 = *param_1; + *param_1 = puVar1; + return; + } + /* WARNING: Subroutine does not return */ + FUN_18001ed90(); +} + + +================================================================== + +### EXPORT FUNC 180032594 (32 bytes) name=FUN_180032594 + +void FUN_180032594(undefined8 *param_1) + +{ + undefined8 *puVar1; + + while (param_1 != (undefined8 *)0x0) { + puVar1 = (undefined8 *)*param_1; + thunk_FUN_180034a70(param_1); + param_1 = puVar1; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800325c0 (57 bytes) name=FUN_1800325c0 + +undefined8 * FUN_1800325c0(undefined8 *param_1,uint param_2) + +{ + *param_1 = type_info::vftable; + FID_conflict__Type_info_dtor((longlong)param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180032600 (42 bytes) name=operator== + +/* Library Function - Single Match + public: bool __cdecl type_info::operator==(class type_info const & __ptr64)const __ptr64 + + Library: Visual Studio 2005 Release */ + +bool __thiscall type_info::operator==(type_info *this,type_info *param_1) + +{ + type_info tVar1; + type_info tVar2; + longlong lVar3; + type_info *ptVar4; + + ptVar4 = param_1 + 0x11; + lVar3 = 0x11 - (longlong)ptVar4; + do { + tVar1 = *ptVar4; + tVar2 = ptVar4[(longlong)(this + lVar3)]; + if (tVar1 != tVar2) break; + ptVar4 = ptVar4 + 1; + } while (tVar2 != (type_info)0x0); + return tVar1 == tVar2; +} + + +================================================================== + +### EXPORT FUNC 180032640 (31 bytes) name=__security_check_cookie + +/* WARNING: This is an inlined function */ +/* Library Function - Single Match + __security_check_cookie + + Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2010 Debug, Visual + Studio 2010 Release */ + +void __cdecl __security_check_cookie(uintptr_t _StackCookie) + +{ + if ((_StackCookie == DAT_18006cea0) && ((short)(_StackCookie >> 0x30) == 0)) { + return; + } + /* WARNING: Subroutine does not return */ + __report_gsfailure(_StackCookie); +} + + +================================================================== + +### EXPORT FUNC 180032660 (1010 bytes) name=FUN_180032660 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_180032660(LPSTR param_1,LPCWSTR param_2,ulonglong param_3,undefined8 *param_4) + +{ + WCHAR WVar1; + char cVar2; + undefined *puVar3; + bool bVar4; + LPCWSTR pWVar5; + int iVar6; + DWORD DVar7; + uint uVar8; + DWORD *pDVar9; + pthreadlocinfo ptVar10; + DWORD *pDVar11; + ulonglong uVar12; + longlong lVar13; + ulonglong uVar14; + ulonglong uVar15; + undefined1 auStackY_c8 [32]; + BOOL local_88 [2]; + pthreadlocinfo local_80; + undefined8 local_78; + DWORD *local_70; + undefined1 local_68; + CHAR local_60 [8]; + ulonglong local_58; + + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_c8; + uVar14 = 0; + local_88[0] = 0; + if ((param_1 != (LPSTR)0x0) && (param_3 == 0)) { + return 0; + } + if ((param_2 == (LPCWSTR)0x0) || (0x7fffffff < param_3)) { + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffffffffffff; + } + bVar4 = false; + local_68 = 0; + if (param_4 == (undefined8 *)0x0) { + pDVar9 = FUN_1800380a0(); + ptVar10 = *(pthreadlocinfo *)(pDVar9 + 0x30); + puVar3 = *(undefined **)(pDVar9 + 0x2e); + if ((ptVar10 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar9[0x32]) == 0)) { + ptVar10 = __updatetlocinfo(); + } + if ((puVar3 != PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar9[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((pDVar9[0x32] & 2) == 0) { + bVar4 = true; + pDVar9[0x32] = pDVar9[0x32] | 2; + } + } + else { + ptVar10 = (pthreadlocinfo)*param_4; + local_78 = param_4[1]; + bVar4 = false; + pDVar9 = local_70; + local_80 = ptVar10; + } + if (param_1 == (LPSTR)0x0) { + if (*(int *)((longlong)&ptVar10->lc_category[0].locale + 4) == 0) { + uVar14 = 0xffffffffffffffff; + do { + if (uVar14 == 0) break; + uVar14 = uVar14 - 1; + WVar1 = *param_2; + param_2 = param_2 + 1; + } while (WVar1 != L'\0'); + if (bVar4) { + pDVar9[0x32] = pDVar9[0x32] & 0xfffffffd; + } + return ~uVar14 - 1; + } + iVar6 = WideCharToMultiByte(ptVar10->lc_codepage,0,param_2,-1,(LPSTR)0x0,0,(LPCSTR)0x0,local_88) + ; + if (((longlong)iVar6 != 0) && (local_88[0] == 0)) { + uVar14 = (longlong)iVar6 - 1; +LAB_1800329ee: + if (!bVar4) { + return uVar14; + } + pDVar9[0x32] = pDVar9[0x32] & 0xfffffffd; + return uVar14; + } + pDVar11 = FUN_180035b40(); + *pDVar11 = 0x2a; + } + else { + if (*(int *)((longlong)&ptVar10->lc_category[0].locale + 4) == 0) { + if (param_3 != 0) { + do { + if (0xff < (ushort)*param_2) goto LAB_18003297b; + param_1[uVar14] = (CHAR)*param_2; + } while ((*param_2 != L'\0') && + (uVar14 = uVar14 + 1, param_2 = param_2 + 1, uVar14 < param_3)); + } + if (!bVar4) { + return uVar14; + } + pDVar9[0x32] = pDVar9[0x32] & 0xfffffffd; + return uVar14; + } + pWVar5 = param_2; + uVar15 = param_3; + if (*(int *)((longlong)&ptVar10->pctype + 4) == 1) { + for (; uVar15 != 0; uVar15 = uVar15 - 1) { + if (*pWVar5 == L'\0') { + if ((uVar15 != 0) && (*pWVar5 == L'\0')) { + param_3 = ((longlong)pWVar5 - (longlong)param_2 >> 1) + 1; + } + break; + } + pWVar5 = pWVar5 + 1; + } + iVar6 = WideCharToMultiByte(ptVar10->lc_codepage,0,param_2,(int)param_3,param_1,(int)param_3, + (LPCSTR)0x0,local_88); + uVar14 = (ulonglong)iVar6; + if ((uVar14 != 0) && (local_88[0] == 0)) { + if (param_1[uVar14 - 1] == '\0') { + uVar14 = uVar14 - 1; + } + goto LAB_1800329ee; + } + } + else { + iVar6 = WideCharToMultiByte(ptVar10->lc_codepage,0,param_2,-1,param_1,(int)param_3,(LPCSTR)0x0 + ,local_88); + if (iVar6 == 0) { + if ((local_88[0] == 0) && (DVar7 = GetLastError(), DVar7 == 0x7a)) { + uVar15 = 0; + if (param_3 != 0) { + do { + uVar8 = WideCharToMultiByte(ptVar10->lc_codepage,0,param_2,1,local_60, + *(int *)((longlong)&ptVar10->pctype + 4),(LPCSTR)0x0, + local_88); + if ((((uVar8 == 0) || (local_88[0] != 0)) || ((int)uVar8 < 0)) || (5 < uVar8)) + goto LAB_18003297b; + lVar13 = (longlong)(int)uVar8; + if (param_3 < lVar13 + uVar15) break; + uVar12 = uVar14; + if (0 < lVar13) { + do { + cVar2 = local_60[uVar12]; + param_1[uVar15] = cVar2; + if (cVar2 == '\0') goto LAB_180032967; + uVar12 = uVar12 + 1; + uVar15 = uVar15 + 1; + } while ((longlong)uVar12 < lVar13); + } + param_2 = param_2 + 1; + } while (uVar15 < param_3); + } +LAB_180032967: + if (!bVar4) { + return uVar15; + } + pDVar9[0x32] = pDVar9[0x32] & 0xfffffffd; + return uVar15; + } + } + else if (local_88[0] == 0) { + uVar14 = (longlong)iVar6 - 1; + goto LAB_1800329ee; + } + } +LAB_18003297b: + pDVar11 = FUN_180035b40(); + *pDVar11 = 0x2a; + } + if (bVar4) { + pDVar9[0x32] = pDVar9[0x32] & 0xfffffffd; + } + return 0xffffffffffffffff; +} + + +================================================================== + +### EXPORT FUNC 180032a60 (8 bytes) name=FUN_180032a60 + +void FUN_180032a60(LPSTR param_1,LPCWSTR param_2,ulonglong param_3) + +{ + FUN_180032660(param_1,param_2,param_3,(undefined8 *)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180032a70 (265 bytes) name=FUN_180032a70 + +DWORD FUN_180032a70(ulonglong *param_1,LPSTR param_2,ulonglong param_3,LPCWSTR param_4, + ulonglong param_5,undefined8 *param_6) + +{ + DWORD DVar1; + ulonglong uVar2; + DWORD *pDVar3; + + DVar1 = 0; + if (param_2 == (LPSTR)0x0) { + if (param_3 != 0) goto LAB_180032ae2; + } + else { + if (param_3 == 0) { +LAB_180032ae2: + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + *param_2 = '\0'; + } + if (param_1 != (ulonglong *)0x0) { + *param_1 = 0; + } + uVar2 = param_5; + if (param_3 < param_5) { + uVar2 = param_3; + } + uVar2 = FUN_180032660(param_2,param_4,uVar2,param_6); + if (uVar2 == 0xffffffffffffffff) { + if (param_2 != (LPSTR)0x0) { + *param_2 = '\0'; + } + pDVar3 = FUN_180035b40(); + DVar1 = *pDVar3; + } + else { + uVar2 = uVar2 + 1; + if (param_2 != (LPSTR)0x0) { + DVar1 = 0; + if (param_3 < uVar2) { + if ((param_5 != 0xffffffffffffffff) && (*param_2 = '\0', param_3 <= uVar2)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + DVar1 = 0x50; + uVar2 = param_3; + } + param_2[uVar2 - 1] = '\0'; + } + if (param_1 != (ulonglong *)0x0) { + *param_1 = uVar2; + } + } + return DVar1; +} + + +================================================================== + +### EXPORT FUNC 180032b80 (33 bytes) name=FUN_180032b80 + +void FUN_180032b80(ulonglong *param_1,LPSTR param_2,ulonglong param_3,LPCWSTR param_4, + ulonglong param_5) + +{ + FUN_180032a70(param_1,param_2,param_3,param_4,param_5,(undefined8 *)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180032bb0 (175 bytes) name=FUN_180032bb0 + +uint FUN_180032bb0(char *param_1,byte *param_2,undefined8 param_3,undefined8 param_4) + +{ + uint uVar1; + DWORD *pDVar2; + undefined8 local_res18; + undefined8 local_res20; + FILE local_38; + + local_res18 = param_3; + local_res20 = param_4; + if ((param_2 != (byte *)0x0) && (param_1 != (char *)0x0)) { + local_38._cnt = 0x7fffffff; + local_38._flag = 0x42; + local_38._ptr = param_1; + local_38._base = param_1; + uVar1 = FUN_180038850(&local_38,param_2,(longlong *)0x0,(WCHAR *)&local_res18); + local_38._cnt = local_38._cnt + -1; + if (-1 < local_38._cnt) { + *local_38._ptr = '\0'; + return uVar1; + } + FUN_1800385f0(0,&local_38); + return uVar1; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180032c60 (205 bytes) name=FUN_180032c60 + +undefined8 FUN_180032c60(ulonglong *param_1,ulonglong param_2,void *param_3,ulonglong param_4) + +{ + DWORD *pDVar1; + + if (param_4 == 0) { + return 0; + } + if (param_1 != (ulonglong *)0x0) { + if ((param_3 != (void *)0x0) && (param_4 <= param_2)) { + memcpy(param_1,param_3,param_4); + return 0; + } + FUN_1800357d0(param_1,0,param_2); + if (param_3 != (void *)0x0) { + if (param_4 <= param_2) { + return 0x16; + } + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + } + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180032d30 (135 bytes) name=memmove_s + +/* Library Function - Single Match + memmove_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl memmove_s(void *_Dst,rsize_t _DstSize,void *_Src,rsize_t _MaxCount) + +{ + DWORD *pDVar1; + + if (_MaxCount != 0) { + if ((_Dst == (void *)0x0) || (_Src == (void *)0x0)) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + if (_DstSize < _MaxCount) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + memcpy(_Dst,_Src,_MaxCount); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180032dd0 (354 bytes) name=strncpy + +/* Library Function - Single Match + strncpy + + Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2019 */ + +char * __cdecl strncpy(char *_Dest,char *_Source,size_t _Count) + +{ + ulonglong uVar1; + char cVar2; + longlong lVar3; + char *pcVar4; + ulonglong *puVar5; + size_t sVar6; + bool bVar7; + + if (_Count != 0) { + lVar3 = (longlong)_Dest - (longlong)_Source; + do { + if (((ulonglong)_Source & 7) == 0) goto LAB_180032e08; + uVar1 = *(ulonglong *)_Source; + *(char *)(lVar3 + (longlong)_Source) = (char)uVar1; + puVar5 = (ulonglong *)_Source; + sVar6 = _Count; + if ((char)uVar1 == '\0') goto LAB_180032ed0; + _Source = (char *)((longlong)_Source + 1); + _Count = _Count - 1; + } while (_Count != 0); + } + return _Dest; +LAB_180032e08: + while( true ) { + uVar1 = *(ulonglong *)_Source; + if ((_Count < 8) || + (((uVar1 ^ 0xffffffffffffffff ^ uVar1 + 0x7efefefefefefeff) & 0x8101010101010100) != 0)) + break; + *(ulonglong *)(lVar3 + (longlong)_Source) = uVar1; + _Source = (char *)((longlong)_Source + 8); + _Count = _Count - 8; + } + if (_Count == 0) { + return _Dest; + } + *(char *)(lVar3 + (longlong)_Source) = (char)uVar1; + puVar5 = (ulonglong *)_Source; + sVar6 = _Count; + if ((char)uVar1 == '\0') { +LAB_180032ed0: + pcVar4 = (char *)(lVar3 + (longlong)puVar5); + if (0xf < sVar6) { + while (((ulonglong)pcVar4 & 7) != 0) { + pcVar4 = pcVar4 + 1; + *pcVar4 = '\0'; + sVar6 = sVar6 - 1; + } + while (0x1f < sVar6) { + pcVar4[0] = '\0'; + pcVar4[1] = '\0'; + pcVar4[2] = '\0'; + pcVar4[3] = '\0'; + pcVar4[4] = '\0'; + pcVar4[5] = '\0'; + pcVar4[6] = '\0'; + pcVar4[7] = '\0'; + pcVar4[8] = '\0'; + pcVar4[9] = '\0'; + pcVar4[10] = '\0'; + pcVar4[0xb] = '\0'; + pcVar4[0xc] = '\0'; + pcVar4[0xd] = '\0'; + pcVar4[0xe] = '\0'; + pcVar4[0xf] = '\0'; + pcVar4[0x10] = '\0'; + pcVar4[0x11] = '\0'; + pcVar4[0x12] = '\0'; + pcVar4[0x13] = '\0'; + pcVar4[0x14] = '\0'; + pcVar4[0x15] = '\0'; + pcVar4[0x16] = '\0'; + pcVar4[0x17] = '\0'; + pcVar4[0x18] = '\0'; + pcVar4[0x19] = '\0'; + pcVar4[0x1a] = '\0'; + pcVar4[0x1b] = '\0'; + pcVar4[0x1c] = '\0'; + pcVar4[0x1d] = '\0'; + pcVar4[0x1e] = '\0'; + pcVar4[0x1f] = '\0'; + pcVar4 = pcVar4 + 0x20; + sVar6 = sVar6 - 0x20; + } + while (7 < sVar6) { + pcVar4[0] = '\0'; + pcVar4[1] = '\0'; + pcVar4[2] = '\0'; + pcVar4[3] = '\0'; + pcVar4[4] = '\0'; + pcVar4[5] = '\0'; + pcVar4[6] = '\0'; + pcVar4[7] = '\0'; + pcVar4 = pcVar4 + 8; + sVar6 = sVar6 - 8; + } + } + while (bVar7 = sVar6 != 0, sVar6 = sVar6 - 1, bVar7) { + *pcVar4 = '\0'; + pcVar4 = pcVar4 + 1; + } + return _Dest; + } + puVar5 = (ulonglong *)((longlong)_Source + 1); + sVar6 = _Count - 1; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 8); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + puVar5 = (ulonglong *)((longlong)_Source + 2); + sVar6 = _Count - 2; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 0x10); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + puVar5 = (ulonglong *)((longlong)_Source + 3); + sVar6 = _Count - 3; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 0x18); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + puVar5 = (ulonglong *)((longlong)_Source + 4); + sVar6 = _Count - 4; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 0x20); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + puVar5 = (ulonglong *)((longlong)_Source + 5); + sVar6 = _Count - 5; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 0x28); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + puVar5 = (ulonglong *)((longlong)_Source + 6); + sVar6 = _Count - 6; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 0x30); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + puVar5 = (ulonglong *)((longlong)_Source + 7); + sVar6 = _Count - 7; + if (sVar6 == 0) { + return _Dest; + } + cVar2 = (char)(uVar1 >> 0x38); + *(char *)(lVar3 + (longlong)puVar5) = cVar2; + if (cVar2 == '\0') goto LAB_180032ed0; + _Source = (char *)((longlong)_Source + 8); + _Count = _Count - 8; + if (_Count == 0) { + return _Dest; + } + goto LAB_180032e08; +} + + +================================================================== + +### EXPORT FUNC 180032f40 (72 bytes) name=_time64 + +/* Library Function - Single Match + _time64 + + Library: Visual Studio 2005 Release */ + +__time64_t __cdecl _time64(__time64_t *_Time) + +{ + ulonglong uVar1; + _FILETIME local_res8 [4]; + + GetSystemTimeAsFileTime(local_res8); + uVar1 = ((longlong)local_res8[0] + 0xfe624e212ac18000U) / 10000000; + if (_Time != (__time64_t *)0x0) { + *_Time = uVar1; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180032f90 (155 bytes) name=strcpy_s + +/* Library Function - Single Match + strcpy_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl strcpy_s(char *_Dst,rsize_t _SizeInBytes,char *_Src) + +{ + char cVar1; + DWORD *pDVar2; + char *pcVar3; + + if ((_Dst != (char *)0x0) && (_SizeInBytes != 0)) { + pcVar3 = _Dst; + if (_Src != (char *)0x0) { + do { + cVar1 = *_Src; + _Src = _Src + 1; + *pcVar3 = cVar1; + if (cVar1 == '\0') break; + _SizeInBytes = _SizeInBytes - 1; + pcVar3 = pcVar3 + 1; + } while (_SizeInBytes != 0); + if (_SizeInBytes == 0) { + *_Dst = '\0'; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + return 0; + } + *_Dst = '\0'; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180033040 (102 bytes) name=FUN_180033040 + +ulonglong FUN_180033040(WCHAR *param_1,WCHAR *param_2) + +{ + DWORD *pDVar1; + ulonglong uVar2; + FILE local_38; + + if (param_1 == (WCHAR *)0x0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + local_38._cnt = 0x7fffffff; + local_38._flag = 0x42; + local_38._base = (char *)0x0; + local_38._ptr = (char *)0x0; + uVar2 = FUN_1800398f0(&local_38,param_1,(longlong *)0x0,param_2); + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 1800330b0 (327 bytes) name=FUN_1800330b0 + +ulonglong FUN_1800330b0(undefined *param_1,char *param_2,ulonglong param_3,longlong param_4, + undefined8 param_5,undefined8 param_6) + +{ + DWORD *pDVar1; + ulonglong uVar2; + ulonglong uVar3; + FILE local_38; + + if ((param_4 == 0) || ((param_3 != 0 && (param_2 == (char *)0x0)))) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + local_38._flag = 0x42; + if (param_3 < 0x40000000) { + local_38._cnt = (int)param_3 * 2; + } + else { + local_38._cnt = 0x7fffffff; + } + local_38._ptr = param_2; + local_38._base = param_2; + uVar2 = (*(code *)param_1)(&local_38,param_4,param_5,param_6); + if (param_2 == (char *)0x0) { + return uVar2; + } + if (-1 < (int)uVar2) { + local_38._cnt = local_38._cnt + -1; + if (local_38._cnt < 0) { + uVar3 = FUN_1800385f0(0,&local_38); + if ((int)uVar3 == -1) goto LAB_1800331d4; + } + else { + *local_38._ptr = '\0'; + local_38._ptr = local_38._ptr + 1; + } + local_38._cnt = local_38._cnt + -1; + if (-1 < local_38._cnt) { + *local_38._ptr = '\0'; + return uVar2 & 0xffffffff; + } + uVar3 = FUN_1800385f0(0,&local_38); + if ((int)uVar3 != -1) { + return uVar2 & 0xffffffff; + } + } +LAB_1800331d4: + (param_2 + param_3 * 2 + -2)[0] = '\0'; + (param_2 + param_3 * 2 + -2)[1] = '\0'; + return (ulonglong)((-1 < local_38._cnt) - 2); +} + + +================================================================== + +### EXPORT FUNC 180033200 (130 bytes) name=FUN_180033200 + +ulonglong FUN_180033200(char *param_1,ulonglong param_2,longlong param_3,undefined8 param_4) + +{ + ulonglong uVar1; + DWORD *pDVar2; + + if (((param_3 == 0) || (param_1 == (char *)0x0)) || (param_2 == 0)) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + } + else { + uVar1 = FUN_1800330b0(FUN_18003a830,param_1,param_2,param_3,0,param_4); + if ((int)uVar1 < 0) { + param_1[0] = '\0'; + param_1[1] = '\0'; + } + if ((int)uVar1 != -2) { + return uVar1; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + } + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180033290 (159 bytes) name=wcscpy_s + +/* Library Function - Single Match + wcscpy_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl wcscpy_s(wchar_t *_Dst,rsize_t _SizeInWords,wchar_t *_Src) + +{ + wchar_t wVar1; + DWORD *pDVar2; + wchar_t *pwVar3; + + if ((_Dst != (wchar_t *)0x0) && (_SizeInWords != 0)) { + pwVar3 = _Dst; + if (_Src != (wchar_t *)0x0) { + do { + wVar1 = *_Src; + _Src = _Src + 1; + *pwVar3 = wVar1; + if (wVar1 == L'\0') break; + _SizeInWords = _SizeInWords - 1; + pwVar3 = pwVar3 + 1; + } while (_SizeInWords != 0); + if (_SizeInWords == 0) { + *_Dst = L'\0'; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + return 0; + } + *_Dst = L'\0'; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180033340 (180 bytes) name=FUN_180033340 + +undefined8 FUN_180033340(short *param_1,WCHAR *param_2,undefined8 param_3,undefined8 param_4) + +{ + short sVar1; + DWORD *pDVar2; + undefined8 extraout_RAX; + undefined8 extraout_RAX_00; + ulonglong uVar3; + short *psVar4; + undefined8 local_res18; + undefined8 local_res20; + FILE local_38; + + uVar3 = 0xffffffffffffffff; + psVar4 = param_1; + do { + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + sVar1 = *psVar4; + psVar4 = psVar4 + 1; + } while (sVar1 != 0); + local_res18 = param_3; + local_res20 = param_4; + if ((param_1 != (short *)0x0) && (param_2 != (WCHAR *)0x0)) { + local_38._flag = 0x49; + local_38._ptr = (char *)param_1; + local_38._base = (char *)param_1; + if (0x3fffffff < ~uVar3 - 1) { + local_38._cnt = 0x7fffffff; + FUN_18003b840(&local_38,param_2,(longlong *)0x0,&local_res18); + return extraout_RAX; + } + local_38._cnt = (int)(~uVar3 - 1) * 2; + FUN_18003b840(&local_38,param_2,(longlong *)0x0,&local_res18); + return extraout_RAX_00; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180033410 (720 bytes) name=memcpy + +/* Library Function - Single Match + memcpy + + Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010 */ + +void * __cdecl memcpy(void *_Dst,void *_Src,size_t _Size) + +{ + undefined8 uVar1; + int iVar2; + undefined8 *puVar3; + undefined8 *puVar4; + ulonglong uVar5; + ulonglong uVar6; + + uVar5 = (longlong)_Src - (longlong)_Dst; + if (_Src < _Dst) { + puVar4 = (undefined8 *)((longlong)_Dst + _Size); + puVar3 = puVar4; + if (_Size < 8) goto LAB_180033624; + if (((ulonglong)puVar4 & 7) != 0) { + if (((ulonglong)puVar4 & 1) != 0) { + puVar4 = (undefined8 *)((longlong)puVar4 + -1); + _Size = _Size - 1; + *(undefined1 *)puVar4 = *(undefined1 *)(uVar5 + (longlong)puVar4); + } + if (((ulonglong)puVar4 & 2) != 0) { + puVar4 = (undefined8 *)((longlong)puVar4 + -2); + _Size = _Size - 2; + *(undefined2 *)puVar4 = *(undefined2 *)(uVar5 + (longlong)puVar4); + } + if (((ulonglong)puVar4 & 4) != 0) { + puVar4 = (undefined8 *)((longlong)puVar4 + -4); + _Size = _Size - 4; + *(undefined4 *)puVar4 = *(undefined4 *)(uVar5 + (longlong)puVar4); + } + } + while (uVar6 = _Size >> 5, puVar3 = puVar4, uVar6 != 0) { + if ((uVar6 < 0x2000) || (0xfffffffffffff000 < uVar5)) goto LAB_180033660; + do { + iVar2 = 0x20; + do { + puVar3 = puVar4; + iVar2 = iVar2 + -1; + puVar4 = puVar3 + -0x10; + } while (iVar2 != 0); + iVar2 = 0x40; + puVar3 = puVar3 + 0x1f0; + do { + uVar1 = *(undefined8 *)((uVar5 - 0x10) + (longlong)puVar3); + puVar3[-1] = *(undefined8 *)((uVar5 - 8) + (longlong)puVar3); + puVar3[-2] = uVar1; + uVar1 = *(undefined8 *)((uVar5 - 0x20) + (longlong)puVar3); + puVar3[-3] = *(undefined8 *)((uVar5 - 0x18) + (longlong)puVar3); + puVar3[-4] = uVar1; + uVar1 = *(undefined8 *)((uVar5 - 0x30) + (longlong)puVar3); + puVar4 = puVar3 + -8; + puVar3[-5] = *(undefined8 *)((uVar5 - 0x28) + (longlong)puVar3); + puVar3[-6] = uVar1; + uVar1 = *(undefined8 *)(uVar5 + (longlong)puVar4); + iVar2 = iVar2 + -1; + puVar3[-7] = *(undefined8 *)(uVar5 + 8 + (longlong)puVar4); + *puVar4 = uVar1; + puVar3 = puVar4; + } while (iVar2 != 0); + _Size = _Size - 0x1000; + } while (0xfff < _Size); + LOCK(); + UNLOCK(); + } + goto LAB_180033607; + } + puVar4 = _Dst; + if (_Size < 8) goto LAB_180033483; + puVar3 = _Dst; + if (((ulonglong)_Dst & 7) != 0) { + if (((ulonglong)_Dst & 1) != 0) { + _Size = _Size - 1; + *(undefined1 *)_Dst = *(undefined1 *)(uVar5 + (longlong)_Dst); + puVar3 = (undefined8 *)((longlong)_Dst + 1); + } + if (((ulonglong)puVar3 & 2) != 0) { + _Size = _Size - 2; + *(undefined2 *)puVar3 = *(undefined2 *)(uVar5 + (longlong)puVar3); + puVar3 = (undefined8 *)((longlong)puVar3 + 2); + } + if (((ulonglong)puVar3 & 4) != 0) { + _Size = _Size - 4; + *(undefined4 *)puVar3 = *(undefined4 *)(uVar5 + (longlong)puVar3); + puVar3 = (undefined8 *)((longlong)puVar3 + 4); + } + } + while (uVar6 = _Size >> 5, puVar4 = puVar3, uVar6 != 0) { + if ((uVar6 < 0x2000) || (uVar5 < 0x1000)) goto LAB_1800334c0; + do { + iVar2 = 0x20; + do { + puVar4 = puVar3; + iVar2 = iVar2 + -1; + puVar3 = puVar4 + 0x10; + } while (iVar2 != 0); + iVar2 = 0x40; + puVar4 = puVar4 + -0x1f0; + do { + uVar1 = *(undefined8 *)(uVar5 + 8 + (longlong)puVar4); + *puVar4 = *(undefined8 *)(uVar5 + (longlong)puVar4); + puVar4[1] = uVar1; + uVar1 = *(undefined8 *)(uVar5 + 0x18 + (longlong)puVar4); + puVar4[2] = *(undefined8 *)(uVar5 + 0x10 + (longlong)puVar4); + puVar4[3] = uVar1; + uVar1 = *(undefined8 *)(uVar5 + 0x28 + (longlong)puVar4); + puVar3 = puVar4 + 8; + puVar4[4] = *(undefined8 *)(uVar5 + 0x20 + (longlong)puVar4); + puVar4[5] = uVar1; + uVar1 = *(undefined8 *)((uVar5 - 8) + (longlong)puVar3); + iVar2 = iVar2 + -1; + puVar4[6] = *(undefined8 *)((uVar5 - 0x10) + (longlong)puVar3); + puVar4[7] = uVar1; + puVar4 = puVar3; + } while (iVar2 != 0); + _Size = _Size - 0x1000; + } while (0xfff < _Size); + LOCK(); + UNLOCK(); + } + goto LAB_180033466; +LAB_180033660: + do { + uVar1 = *(undefined8 *)((uVar5 - 0x10) + (longlong)puVar4); + puVar3 = puVar4 + -4; + puVar4[-1] = *(undefined8 *)((uVar5 - 8) + (longlong)puVar4); + puVar4[-2] = uVar1; + uVar1 = *(undefined8 *)(uVar5 + (longlong)puVar3); + uVar6 = uVar6 - 1; + puVar4[-3] = *(undefined8 *)(uVar5 + 8 + (longlong)puVar3); + *puVar3 = uVar1; + puVar4 = puVar3; + } while (uVar6 != 0); + _Size = _Size & 0x1f; +LAB_180033607: + uVar6 = _Size >> 3; + if (uVar6 != 0) { + do { + puVar3 = puVar3 + -1; + uVar6 = uVar6 - 1; + *puVar3 = *(undefined8 *)(uVar5 + (longlong)puVar3); + } while (uVar6 != 0); + _Size = _Size & 7; + } +LAB_180033624: + if (_Size == 0) { + return _Dst; + } + do { + puVar3 = (undefined8 *)((longlong)puVar3 + -1); + _Size = _Size - 1; + *(undefined1 *)puVar3 = *(undefined1 *)(uVar5 + (longlong)puVar3); + } while (_Size != 0); + return _Dst; +LAB_1800334c0: + do { + uVar1 = *(undefined8 *)(uVar5 + 8 + (longlong)puVar3); + puVar4 = puVar3 + 4; + *puVar3 = *(undefined8 *)(uVar5 + (longlong)puVar3); + puVar3[1] = uVar1; + uVar1 = *(undefined8 *)((uVar5 - 8) + (longlong)puVar4); + uVar6 = uVar6 - 1; + puVar3[2] = *(undefined8 *)((uVar5 - 0x10) + (longlong)puVar4); + puVar3[3] = uVar1; + puVar3 = puVar4; + } while (uVar6 != 0); + _Size = _Size & 0x1f; +LAB_180033466: + uVar6 = _Size >> 3; + if (uVar6 != 0) { + do { + *puVar4 = *(undefined8 *)(uVar5 + (longlong)puVar4); + puVar4 = puVar4 + 1; + uVar6 = uVar6 - 1; + } while (uVar6 != 0); + _Size = _Size & 7; + } +LAB_180033483: + if (_Size == 0) { + return _Dst; + } + do { + *(undefined1 *)puVar4 = *(undefined1 *)(uVar5 + (longlong)puVar4); + puVar4 = (undefined8 *)((longlong)puVar4 + 1); + _Size = _Size - 1; + } while (_Size != 0); + return _Dst; +} + + +================================================================== + +### EXPORT FUNC 180033750 (38 bytes) name=wcschr + +/* Library Function - Single Match + wcschr + + Library: Visual Studio 2005 Release */ + +wchar_t * __cdecl wcschr(wchar_t *_Str,wchar_t _Ch) + +{ + wchar_t *pwVar1; + wchar_t wVar2; + + wVar2 = *_Str; + while (wVar2 != L'\0') { + if (wVar2 == _Ch) { + return _Str; + } + pwVar1 = _Str + 1; + _Str = _Str + 1; + wVar2 = *pwVar1; + } + if (*_Str == _Ch) { + return _Str; + } + return (wchar_t *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180033780 (679 bytes) name=FUN_180033780 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +ulonglong FUN_180033780(LPWSTR param_1,ulonglong param_2,LPCWSTR param_3,int *param_4, + undefined8 param_5) + +{ + ulonglong uVar1; + ulonglong uVar2; + WCHAR WVar3; + DWORD DVar4; + DWORD *pDVar5; + ulonglong uVar6; + byte *pbVar7; + undefined4 *puVar8; + longlong lVar9; + ulonglong uVar10; + undefined1 *puVar11; + undefined1 *puVar12; + LPCWSTR pWVar13; + LPSTR pCVar14; + undefined1 auStackY_68 [32]; + ulonglong local_38; + ulonglong local_30; + + local_30 = DAT_18006cea0 ^ (ulonglong)&local_38; + local_38 = 0; + if (((param_1 == (LPWSTR)0x0) || (param_2 == 0)) || (*param_1 = L'\0', param_3 == (LPCWSTR)0x0)) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + FUN_1800384e0(0,0,0,0,0); + puVar12 = auStackY_68; + } + else { + uVar10 = 0xffffffffffffffff; + pWVar13 = param_3; + do { + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + WVar3 = *pWVar13; + pWVar13 = pWVar13 + 1; + } while (WVar3 != L'\0'); + uVar10 = ~uVar10; + uVar1 = uVar10 - 1; + puVar12 = auStackY_68; + if (param_2 - 1 < 0x7ffffffffffffff0) { + uVar2 = param_2 * 2 + 0x10; + if (uVar2 < 0x401) { + uVar6 = param_2 * 2 + 0x1f; + if (uVar6 <= uVar2) { + uVar6 = 0xffffffffffffff0; + } + lVar9 = -(uVar6 & 0xfffffffffffffff0); + puVar12 = auStackY_68 + lVar9; + if ((undefined4 *)((longlong)&local_38 + lVar9) == (undefined4 *)0x0) goto LAB_1800337e3; + *(undefined4 *)((longlong)&local_38 + lVar9) = 0xcccc; + pbVar7 = &stack0xffffffffffffffd8 + lVar9; + puVar11 = auStackY_68 + lVar9; + } + else { + pbVar7 = FUN_1800349a0(uVar2); + puVar11 = auStackY_68; + if (pbVar7 != (byte *)0x0) { + pbVar7[0] = 0xdd; + pbVar7[1] = 0xdd; + pbVar7[2] = 0; + pbVar7[3] = 0; + pbVar7 = pbVar7 + 0x10; + puVar11 = auStackY_68; + } + } + puVar12 = puVar11; + if (pbVar7 != (byte *)0x0) { + if (uVar1 < 0x7ffffffffffffff0) { + uVar2 = uVar10 + 0x11 + uVar1; + if (uVar2 < 0x401) { + uVar6 = uVar2 + 0xf; + if (uVar6 <= uVar2) { + uVar6 = 0xffffffffffffff0; + } + *(undefined8 *)(puVar11 + -8) = 0x1800338de; + lVar9 = -(uVar6 & 0xfffffffffffffff0); + puVar12 = puVar11 + lVar9; + puVar8 = (undefined4 *)(puVar11 + lVar9 + 0x30); + if (puVar8 == (undefined4 *)0x0) goto LAB_1800339f3; + *puVar8 = 0xcccc; + puVar11 = puVar11 + lVar9; +LAB_18003390a: + pCVar14 = (LPSTR)(puVar8 + 4); + puVar12 = puVar11; + } + else { + *(undefined8 *)(puVar11 + -8) = 0x1800338fc; + puVar8 = FUN_1800349a0(uVar2); + pCVar14 = (LPSTR)0x0; + if (puVar8 != (undefined4 *)0x0) { + *puVar8 = 0xdddd; + goto LAB_18003390a; + } + } + if (pCVar14 != (LPSTR)0x0) { + uVar1 = uVar10 + 1 + uVar1; + *(undefined8 *)(puVar12 + 0x28) = param_5; + *(ulonglong *)(puVar12 + 0x20) = uVar1 - 1; + *(undefined8 *)(puVar12 + -8) = 0x18003393b; + DVar4 = FUN_180032a70((ulonglong *)0x0,pCVar14,uVar1,param_3, + *(ulonglong *)(puVar12 + 0x20),*(undefined8 **)(puVar12 + 0x28)); + if (DVar4 == 0) { + *(undefined8 *)(puVar12 + 0x28) = param_5; + *(undefined8 *)(puVar12 + 0x20) = 0; + *(undefined8 *)(puVar12 + -8) = 0x180033985; + lVar9 = FUN_18003e1d0((char *)pbVar7,param_2 * 2,pCVar14,param_4, + *(longlong *)(puVar12 + 0x20),*(undefined8 **)(puVar12 + 0x28)); + if (lVar9 != 0) { + *(undefined8 *)(puVar12 + 0x28) = param_5; + *(undefined8 *)(puVar12 + 0x20) = 0xffffffffffffffff; + *(undefined8 *)(puVar12 + -8) = 0x1800339aa; + DVar4 = FUN_18003d240(&local_38,param_1,param_2,pbVar7, + *(ulonglong *)(puVar12 + 0x20),*(longlong **)(puVar12 + 0x28)) + ; + if (DVar4 == 0) { + if (local_38 != 0) { + local_38 = local_38 - 1; + } + goto LAB_1800339e1; + } + if ((DVar4 == 0x16) || (DVar4 == 0x22)) { + *(undefined8 *)(puVar12 + 0x20) = 0; + /* WARNING: Subroutine does not return */ + *(undefined8 *)(puVar12 + -8) = 0x1800339cc; + FID_conflict__invoke_watson + ((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0, + *(uintptr_t *)(puVar12 + 0x20)); + } + if (param_2 <= local_38) { + *(undefined8 *)(puVar12 + -8) = 0x1800339d7; + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x22; + } + } + local_38 = 0; + } + else if ((DVar4 == 0x16) || (DVar4 == 0x22)) { + *(undefined8 *)(puVar12 + 0x20) = 0; + /* WARNING: Subroutine does not return */ + *(undefined **)(puVar12 + -8) = &UNK_180033964; + FID_conflict__invoke_watson + ((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0, + *(uintptr_t *)(puVar12 + 0x20)); + } +LAB_1800339e1: + if (*(int *)(pCVar14 + -0x10) == 0xdddd) { + *(undefined8 *)(puVar12 + -8) = 0x1800339f3; + FUN_180034a70(pCVar14 + -0x10); + } + } + } +LAB_1800339f3: + if (*(int *)(pbVar7 + -0x10) == 0xdddd) { + *(undefined8 *)(puVar12 + -8) = 0x180033a05; + FUN_180034a70(pbVar7 + -0x10); + } + uVar10 = local_38; + if (local_38 == 0) { + *param_1 = L'\0'; + } + goto LAB_1800337e5; + } + } + } +LAB_1800337e3: + uVar10 = 0; +LAB_1800337e5: + *(undefined8 *)(puVar12 + -8) = 0x1800337f1; + return uVar10; +} + + +================================================================== + +### EXPORT FUNC 180033a30 (248 bytes) name=FUN_180033a30 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180033a30(LPWSTR param_1,ulonglong param_2,LPCWSTR param_3,int *param_4) + +{ + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + FUN_180033780(param_1,param_2,param_3,param_4,&local_28); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180033b30 (885 bytes) name=FUN_180033b30 + +undefined8 FUN_180033b30(int *param_1,longlong *param_2) + +{ + int iVar1; + DWORD *pDVar2; + undefined8 uVar3; + ulonglong uVar4; + longlong lVar5; + longlong lVar6; + int local_res8 [4]; + int local_res18 [2]; + int local_res20 [2]; + longlong local_28 [2]; + + local_res18[0] = 0; + local_res20[0] = 0; + local_res8[0] = 0; + if (param_1 != (int *)0x0) { + *param_1 = -1; + param_1[1] = -1; + param_1[2] = -1; + param_1[3] = -1; + param_1[4] = -1; + param_1[5] = -1; + param_1[6] = -1; + param_1[7] = -1; + param_1[8] = -1; + if (param_2 != (longlong *)0x0) { + if (*param_2 < 0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + return 0x16; + } + if (*param_2 < 0x793407000) { + __tzset(); + uVar3 = FUN_18003f680(local_res18); + if ((int)uVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + uVar3 = FUN_18003f6d0(local_res20); + if ((int)uVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + uVar3 = FUN_18003f720(local_res8); + if ((int)uVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + if (*param_2 < 0x3f481) { + uVar3 = FUN_18003f350(param_1,param_2); + if ((int)uVar3 != 0) { + return uVar3; + } + if ((local_res18[0] != 0) && (uVar4 = FUN_18003f300(param_1), (int)uVar4 != 0)) { + param_1[8] = 1; + local_res8[0] = local_res8[0] + local_res20[0]; + } + lVar5 = (longlong)*param_1 - (longlong)local_res8[0]; + lVar6 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar5),8) + lVar5; + iVar1 = (int)lVar5 + ((int)(lVar6 >> 5) - (int)(lVar6 >> 0x3f)) * -0x3c; + *param_1 = iVar1; + if (iVar1 < 0) { + lVar5 = lVar5 + -0x3c; + *param_1 = iVar1 + 0x3c; + } + lVar5 = lVar5 + SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar5),8); + lVar5 = ((lVar5 >> 5) - (lVar5 >> 0x3f)) + (longlong)param_1[1]; + lVar6 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar5),8) + lVar5; + iVar1 = (int)lVar5 + ((int)(lVar6 >> 5) - (int)(lVar6 >> 0x3f)) * -0x3c; + param_1[1] = iVar1; + if (iVar1 < 0) { + lVar5 = lVar5 + -0x3c; + param_1[1] = iVar1 + 0x3c; + } + lVar5 = lVar5 + SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar5),8); + lVar5 = ((lVar5 >> 5) - (lVar5 >> 0x3f)) + (longlong)param_1[2]; + iVar1 = (int)lVar5 + (int)(lVar5 / 0x18) * -0x18; + param_1[2] = iVar1; + if (iVar1 < 0) { + lVar5 = lVar5 + -0x18; + param_1[2] = iVar1 + 0x18; + } + lVar5 = lVar5 / 6 + (lVar5 >> 0x3f); + lVar5 = (lVar5 >> 2) - (lVar5 >> 0x3f); + iVar1 = (int)lVar5; + if (lVar5 < 1) { + if (-1 < lVar5) { + return 0; + } + param_1[3] = param_1[3] + iVar1; + param_1[6] = (iVar1 + 7 + param_1[6]) % 7; + if (param_1[3] < 1) { + param_1[5] = param_1[5] + -1; + param_1[4] = 0xb; + param_1[3] = param_1[3] + 0x1f; + param_1[7] = param_1[7] + iVar1 + 0x16d; + return 0; + } + } + else { + param_1[3] = param_1[3] + iVar1; + param_1[6] = (iVar1 + param_1[6]) % 7; + } + param_1[7] = param_1[7] + iVar1; + } + else { + local_28[0] = *param_2 - (longlong)local_res8[0]; + uVar3 = FUN_18003f350(param_1,local_28); + if ((int)uVar3 != 0) { + return uVar3; + } + if ((local_res18[0] != 0) && (uVar4 = FUN_18003f300(param_1), (int)uVar4 != 0)) { + local_28[0] = local_28[0] - local_res20[0]; + uVar3 = FUN_18003f350(param_1,local_28); + if ((int)uVar3 == 0) { + param_1[8] = 1; + return uVar3; + } + return uVar3; + } + } + return 0; + } + } + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180033eb0 (103 bytes) name=wcsstr + +/* Library Function - Single Match + wcsstr + + Library: Visual Studio 2005 Release */ + +wchar_t * __cdecl wcsstr(wchar_t *_Str,wchar_t *_SubStr) + +{ + wchar_t wVar1; + wchar_t *pwVar2; + longlong lVar3; + + if (*_SubStr == L'\0') { + return _Str; + } + wVar1 = *_Str; + if (wVar1 != L'\0') { + lVar3 = (longlong)_Str - (longlong)_SubStr; + pwVar2 = _SubStr; +joined_r0x000180033ed6: + do { + if (wVar1 != L'\0') { + if (*pwVar2 == L'\0') { + return _Str; + } + if (*(wchar_t *)(lVar3 + (longlong)pwVar2) == *pwVar2) { + wVar1 = *(wchar_t *)(lVar3 + (longlong)(pwVar2 + 1)); + pwVar2 = pwVar2 + 1; + goto joined_r0x000180033ed6; + } + } + if (*pwVar2 == L'\0') { + return _Str; + } + wVar1 = _Str[1]; + _Str = _Str + 1; + lVar3 = lVar3 + 2; + pwVar2 = _SubStr; + } while (wVar1 != L'\0'); + } + return (wchar_t *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180033f20 (568 bytes) name=FUN_180033f20 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +DWORD FUN_180033f20(wchar_t *param_1,size_t param_2,longlong *param_3) + +{ + ulonglong uVar1; + wchar_t wVar2; + LCID LVar3; + undefined1 auVar4 [16]; + longlong lVar5; + DWORD DVar6; + int iVar7; + size_t sVar8; + DWORD *pDVar9; + undefined4 *puVar10; + undefined1 *puVar11; + undefined1 *puVar12; + wchar_t *_Src; + ulonglong uVar13; + undefined1 auStackY_68 [32]; + ulonglong local_28 [2]; + + puVar11 = auStackY_68; + puVar12 = auStackY_68; + local_28[0] = DAT_18006cea0 ^ (ulonglong)local_28; + if (param_1 != (wchar_t *)0x0) { + sVar8 = wcsnlen(param_1,param_2); + if (sVar8 < param_2) { + LVar3 = *(LCID *)(*param_3 + 0x14); + if (LVar3 == 0) { + wVar2 = *param_1; + while (wVar2 != L'\0') { + wVar2 = *param_1; + if ((0x60 < (ushort)wVar2) && ((ushort)wVar2 < 0x7b)) { + *param_1 = wVar2 + L'¢'; + } + param_1 = param_1 + 1; + wVar2 = *param_1; + } + DVar6 = 0; + puVar12 = auStackY_68; + goto LAB_180034136; + } + iVar7 = FUN_18003fb70(param_3,LVar3,0x200,param_1,-1,(LPWSTR)0x0,0,*(UINT *)(*param_3 + 4)); + uVar13 = (ulonglong)iVar7; + if (iVar7 == 0) { + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x2a; + puVar12 = auStackY_68; + } + else { + if (param_2 < uVar13) { + *param_1 = L'\0'; + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x22; + FUN_1800384e0(0,0,0,0,0); + DVar6 = 0x22; + goto LAB_180034136; + } + puVar12 = auStackY_68; + if ((0 < iVar7) && + (auVar4._8_8_ = 0, auVar4._0_8_ = uVar13, puVar12 = auStackY_68, + 1 < SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar4,0))) { + uVar1 = uVar13 * 2 + 0x10; + if (uVar1 < 0x401) { + uVar13 = uVar13 * 2 + 0x1f; + if (uVar13 <= uVar1) { + uVar13 = 0xffffffffffffff0; + } + lVar5 = -(uVar13 & 0xfffffffffffffff0); + puVar12 = auStackY_68 + lVar5; + puVar11 = auStackY_68 + lVar5; + puVar10 = (undefined4 *)((longlong)local_28 + lVar5); + if (puVar10 == (undefined4 *)0x0) goto LAB_180034124; + *puVar10 = 0xcccc; +LAB_1800340b2: + _Src = (wchar_t *)(puVar10 + 4); + puVar12 = puVar11; + } + else { + puVar10 = FUN_1800349a0(uVar1); + _Src = (wchar_t *)0x0; + puVar12 = auStackY_68; + if (puVar10 != (undefined4 *)0x0) { + *puVar10 = 0xdddd; + goto LAB_1800340b2; + } + } + if (_Src != (wchar_t *)0x0) { + LVar3 = *(LCID *)(*param_3 + 0x14); + *(undefined4 *)(puVar12 + 0x38) = *(undefined4 *)(*param_3 + 4); + *(int *)(puVar12 + 0x30) = iVar7; + *(wchar_t **)(puVar12 + 0x28) = _Src; + *(undefined4 *)(puVar12 + 0x20) = 0xffffffff; + *(undefined8 *)(puVar12 + -8) = 0x1800340ec; + iVar7 = FUN_18003fb70(param_3,LVar3,0x200,param_1,*(int *)(puVar12 + 0x20), + *(LPWSTR *)(puVar12 + 0x28),*(int *)(puVar12 + 0x30), + *(UINT *)(puVar12 + 0x38)); + if (iVar7 == 0) { + *(undefined8 *)(puVar12 + -8) = 0x180034107; + pDVar9 = FUN_180035b40(); + DVar6 = 0x2a; + *pDVar9 = 0x2a; + } + else { + *(undefined8 *)(puVar12 + -8) = 0x1800340fe; + DVar6 = wcscpy_s(param_1,param_2,_Src); + } + if (*(int *)(_Src + -8) == 0xdddd) { + *(undefined8 *)(puVar12 + -8) = 0x180034120; + FUN_180034a70(_Src + -8); + } + goto LAB_180034136; + } + } +LAB_180034124: + *(undefined8 *)(puVar12 + -8) = 0x180034129; + pDVar9 = FUN_180035b40(); + *pDVar9 = 0xc; + } + *(undefined8 *)(puVar12 + -8) = 0x180034134; + pDVar9 = FUN_180035b40(); + DVar6 = *pDVar9; + goto LAB_180034136; + } + *param_1 = L'\0'; + } + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x16; + FUN_1800384e0(0,0,0,0,0); + DVar6 = 0x16; + puVar12 = auStackY_68; +LAB_180034136: + *(undefined8 *)(puVar12 + -8) = 0x180034142; + return DVar6; +} + + +================================================================== + +### EXPORT FUNC 180034160 (211 bytes) name=FUN_180034160 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180034160(wchar_t *param_1,size_t param_2) + +{ + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + FUN_180033f20(param_1,param_2,(longlong *)&local_28); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180034240 (102 bytes) name=FUN_180034240 + +uint FUN_180034240(byte *param_1,WCHAR *param_2) + +{ + uint uVar1; + DWORD *pDVar2; + FILE local_38; + + if (param_1 == (byte *)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + local_38._cnt = 0x7fffffff; + local_38._flag = 0x42; + local_38._base = (char *)0x0; + local_38._ptr = (char *)0x0; + uVar1 = FUN_180038850(&local_38,param_1,(longlong *)0x0,param_2); + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800342b0 (264 bytes) name=FUN_1800342b0 + +ulonglong FUN_1800342b0(undefined *param_1,char *param_2,ulonglong param_3,longlong param_4, + undefined8 param_5,undefined8 param_6) + +{ + DWORD *pDVar1; + ulonglong uVar2; + ulonglong uVar3; + FILE local_38; + + if ((param_4 == 0) || ((param_3 != 0 && (param_2 == (char *)0x0)))) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + local_38._cnt = (int)param_3; + if (0x7fffffff < param_3) { + local_38._cnt = 0x7fffffff; + } + local_38._flag = 0x42; + local_38._ptr = param_2; + local_38._base = param_2; + uVar2 = (*(code *)param_1)(&local_38,param_4,param_5,param_6); + if (param_2 != (char *)0x0) { + if (-1 < (int)uVar2) { + local_38._cnt = local_38._cnt + -1; + if (-1 < local_38._cnt) { + *local_38._ptr = '\0'; + return uVar2 & 0xffffffff; + } + uVar3 = FUN_1800385f0(0,&local_38); + if ((int)uVar3 != -1) { + return uVar2 & 0xffffffff; + } + } + param_2[param_3 - 1] = '\0'; + uVar2 = (ulonglong)((-1 < local_38._cnt) - 2); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 1800343c0 (128 bytes) name=FUN_1800343c0 + +ulonglong FUN_1800343c0(char *param_1,ulonglong param_2,longlong param_3,undefined8 param_4) + +{ + ulonglong uVar1; + DWORD *pDVar2; + + if (((param_3 == 0) || (param_1 == (char *)0x0)) || (param_2 == 0)) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + } + else { + uVar1 = FUN_1800342b0(FUN_18003fdd0,param_1,param_2,param_3,0,param_4); + if ((int)uVar1 < 0) { + *param_1 = '\0'; + } + if ((int)uVar1 != -2) { + return uVar1; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + } + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180034440 (564 bytes) name=FUN_180034440 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_180034440(undefined8 param_1,int param_2,longlong param_3) + +{ + DWORD DVar1; + DWORD DVar2; + BOOL BVar3; + int iVar4; + DWORD DVar5; + HANDLE pvVar6; + LPOSVERSIONINFOA lpVersionInformation; + undefined8 uVar7; + DWORD *lpFlsData; + uint uVar8; + + if (param_2 == 1) { + pvVar6 = GetProcessHeap(); + lpVersionInformation = HeapAlloc(pvVar6,0,0x94); + if (lpVersionInformation != (LPOSVERSIONINFOA)0x0) { + lpVersionInformation->dwOSVersionInfoSize = 0x94; + BVar3 = GetVersionExA(lpVersionInformation); + if (BVar3 == 0) { + pvVar6 = GetProcessHeap(); + HeapFree(pvVar6,0,lpVersionInformation); + } + else { + DVar5 = lpVersionInformation->dwMinorVersion; + DVar1 = lpVersionInformation->dwMajorVersion; + DVar2 = lpVersionInformation->dwPlatformId; + uVar8 = lpVersionInformation->dwBuildNumber & 0x7fff; + pvVar6 = GetProcessHeap(); + HeapFree(pvVar6,0,lpVersionInformation); + if (DVar2 != 2) { + uVar8 = uVar8 | 0x8000; + } + _DAT_1800727e4 = DVar1 * 0x100 + DVar5; + DAT_1800727dc = DVar2; + _DAT_1800727e0 = uVar8; + DAT_1800727e8 = DVar1; + _DAT_1800727ec = DVar5; + iVar4 = _heap_init(); + if (iVar4 != 0) { + uVar7 = FUN_180038310(); + if ((int)uVar7 != 0) { + FUN_180041ad0(); + DAT_1800db708 = GetCommandLineA(); + DAT_1800727c0 = FUN_180041900(); + uVar7 = FUN_1800410a0(); + if (-1 < (int)uVar7) { + uVar7 = FUN_1800417f0(); + if (((-1 < (int)uVar7) && (uVar7 = FUN_180041460(), -1 < (int)uVar7)) && + (uVar7 = FUN_180036810(), (int)uVar7 == 0)) { + DAT_1800727b8 = DAT_1800727b8 + 1; + return 1; + } + FUN_1800413d0(); + } + FUN_180037e30(); + } + FUN_180041070(); + return 0; + } + } + } + } + else if (param_2 == 0) { + if (0 < DAT_1800727b8) { + DAT_1800727b8 = DAT_1800727b8 + -1; + if (DAT_180072838 == 0) { + FUN_180036a30(); + } + if (param_3 != 0) { + return 1; + } + FUN_1800413d0(); + FUN_180037e30(); + FUN_180041070(); + return 1; + } + } + else { + if (param_2 != 2) { + if (param_2 != 3) { + return 1; + } + _freeptd((_ptiddata)0x0); + return 1; + } + FUN_180037e10(); + lpFlsData = FUN_180040e50(1,0x2d8); + if (lpFlsData != (DWORD *)0x0) { + BVar3 = FlsSetValue(DAT_18006d710,lpFlsData); + if (BVar3 == 0) { + FUN_180034a70(lpFlsData); + return 0; + } + FUN_180037e80((longlong)lpFlsData,0); + DVar5 = GetCurrentThreadId(); + lpFlsData[2] = 0xffffffff; + lpFlsData[3] = 0xffffffff; + *lpFlsData = DVar5; + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180034680 (280 bytes) name=FUN_180034680 + +ulonglong FUN_180034680(HINSTANCE__ *param_1,uint param_2,longlong param_3,undefined *param_4) + +{ + undefined4 uVar1; + int iVar2; + uint uVar3; + ulonglong uVar4; + ulonglong uVar5; + undefined4 extraout_var; + + uVar4 = 1; + if ((param_2 == 0) && (DAT_1800727b8 == 0)) { + uVar5 = 0; + } + else { + if ((param_2 == 1) || (param_2 == 2)) { + param_4 = PTR_180057180; + if (PTR_180057180 != (undefined *)0x0) { + uVar4 = (*(code *)PTR_180057180)(); + } + if ((int)uVar4 != 0) { + uVar1 = FUN_180034440(param_1,param_2,param_3); + uVar4 = CONCAT44(extraout_var,uVar1); + } + if ((int)uVar4 == 0) { + return uVar4; + } + } + uVar4 = DllMain(param_1,(ulonglong)param_2,param_3,param_4); + uVar5 = uVar4 & 0xffffffff; + if ((param_2 == 1) && ((int)uVar4 == 0)) { + DllMain(param_1,0,param_3,param_4); + FUN_180034440(param_1,0,param_3); + if (PTR_180057180 != (undefined *)0x0) { + (*(code *)PTR_180057180)(param_1,0,param_3); + } + } + if ((param_2 == 0) || (param_2 == 3)) { + iVar2 = FUN_180034440(param_1,param_2,param_3); + if (iVar2 == 0) { + uVar5 = 0; + } + else if (((int)uVar4 != 0) && (PTR_180057180 != (undefined *)0x0)) { + uVar3 = (*(code *)PTR_180057180)(param_1,param_2,param_3); + uVar5 = (ulonglong)uVar3; + } + } + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 1800347a0 (28 bytes) name=FUN_1800347a0 + +void FUN_1800347a0(undefined8 *param_1) + +{ + FUN_180041d60(*(int *)*param_1,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 1800347c0 (61 bytes) name=entry + +void entry(HINSTANCE__ *param_1,uint param_2,longlong param_3,undefined *param_4) + +{ + if (param_2 == 1) { + FUN_180041d70(); + } + FUN_180034680(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### EXPORT FUNC 180034800 (73 bytes) name=__onexitinit + +/* Library Function - Single Match + __onexitinit + + Library: Visual Studio 2005 Release */ + +undefined4 __onexitinit(void) + +{ + undefined8 *puVar1; + + puVar1 = FUN_180040e50(0x20,8); + DAT_1800db6e8 = FUN_180037b60((INT_PTR)puVar1); + DAT_1800db6f0 = DAT_1800db6e8; + if (puVar1 == (undefined8 *)0x0) { + return 0x18; + } + *puVar1 = 0; + return 0; +} + + +================================================================== + +### EXPORT FUNC 180034850 (259 bytes) name=FUN_180034850 + +INT_PTR FUN_180034850(INT_PTR param_1) + +{ + ulonglong uVar1; + INT_PTR *pIVar2; + INT_PTR *pIVar3; + SIZE_T SVar4; + LPVOID pvVar5; + INT_PTR IVar6; + SIZE_T SVar7; + + FUN_180036710(); + pIVar2 = (INT_PTR *)FUN_180037d20(DAT_1800db6f0); + pIVar3 = (INT_PTR *)FUN_180037d20(DAT_1800db6e8); + if (pIVar2 <= pIVar3) { + uVar1 = ((longlong)pIVar3 - (longlong)pIVar2) + 8; + if (7 < uVar1) { + SVar4 = FUN_180035e80(pIVar2); + if (SVar4 < uVar1) { + SVar7 = 0x1000; + if (SVar4 < 0x1000) { + SVar7 = SVar4; + } + if (SVar7 + SVar4 < SVar4) { +LAB_1800348de: + if (SVar4 <= SVar4 + 0x20) { + pvVar5 = FUN_180040ee0(pIVar2,SVar4 + 0x20); + if (pvVar5 != (LPVOID)0x0) goto LAB_1800348f5; + } + param_1 = 0; + goto LAB_180034931; + } + pvVar5 = FUN_180040ee0(pIVar2,SVar7 + SVar4); + if (pvVar5 == (LPVOID)0x0) goto LAB_1800348de; +LAB_1800348f5: + pIVar3 = (INT_PTR *)((longlong)pvVar5 + ((longlong)pIVar3 - (longlong)pIVar2 >> 3) * 8); + DAT_1800db6f0 = FUN_180037b60((INT_PTR)pvVar5); + } + IVar6 = FUN_180037b60(param_1); + *pIVar3 = IVar6; + DAT_1800db6e8 = FUN_180037b60((INT_PTR)(pIVar3 + 1)); + goto LAB_180034931; + } + } + param_1 = 0; +LAB_180034931: + FUN_180036720(); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180034960 (20 bytes) name=FUN_180034960 + +void FUN_180034960(void) + +{ + FUN_180036720(); + return; +} + + +================================================================== + +### EXPORT FUNC 180034980 (24 bytes) name=FUN_180034980 + +int FUN_180034980(INT_PTR param_1) + +{ + INT_PTR IVar1; + + IVar1 = FUN_180034850(param_1); + return (IVar1 != 0) - 1; +} + + +================================================================== + +### EXPORT FUNC 1800349a0 (198 bytes) name=FUN_1800349a0 + +LPVOID FUN_1800349a0(size_t param_1) + +{ + int iVar1; + LPVOID pvVar2; + DWORD *pDVar3; + SIZE_T dwBytes; + + if (0xffffffffffffffe0 < param_1) { + _callnewh(param_1); + pDVar3 = FUN_180035b40(); + *pDVar3 = 0xc; + return (LPVOID)0x0; + } + dwBytes = 1; + if (param_1 != 0) { + dwBytes = param_1; + } + while( true ) { + if (DAT_180072ed8 == (HANDLE)0x0) { + FUN_180042070(); + FUN_180041e30(0x1e); + FUN_1800366d0(0xff); + } + pvVar2 = HeapAlloc(DAT_180072ed8,0,dwBytes); + if (pvVar2 != (LPVOID)0x0) { + return pvVar2; + } + if (DAT_180073310 == 0) break; + iVar1 = _callnewh(param_1); + if (iVar1 == 0) { +LAB_180034a30: + pDVar3 = FUN_180035b40(); + *pDVar3 = 0xc; + return (LPVOID)0x0; + } + } + pDVar3 = FUN_180035b40(); + *pDVar3 = 0xc; + goto LAB_180034a30; +} + + +================================================================== + +### EXPORT FUNC 180034a70 (69 bytes) name=FUN_180034a70 + +void FUN_180034a70(LPVOID param_1) + +{ + BOOL BVar1; + DWORD DVar2; + DWORD *pDVar3; + + if (param_1 != (LPVOID)0x0) { + BVar1 = HeapFree(DAT_180072ed8,0,param_1); + if (BVar1 == 0) { + pDVar3 = FUN_180035b40(); + DVar2 = GetLastError(); + DVar2 = FUN_180035af0(DVar2); + *pDVar3 = DVar2; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180034ac0 (54 bytes) name=_purecall + +/* Library Function - Single Match + _purecall + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void _purecall(void) + +{ + code *pcVar1; + + pcVar1 = (code *)FUN_180037d20(DAT_180073320); + if (pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + FUN_180041e30(0x19); + _set_abort_behavior(0,1); + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### EXPORT FUNC 180034b00 (101 bytes) name=__GSHandlerCheckCommon + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + __GSHandlerCheckCommon + + Library: Visual Studio 2005 Release */ + +byte __GSHandlerCheckCommon(undefined8 param_1,longlong param_2) + +{ + byte bVar1; + + bVar1 = *(byte *)((ulonglong)*(uint *)(*(longlong *)(param_2 + 0x10) + 8) + + *(longlong *)(param_2 + 8) + 3); + if ((bVar1 & 0xf) != 0) { + bVar1 = bVar1 & 0xf0; + } + return bVar1; +} + + +================================================================== + +### EXPORT FUNC 180034b70 (103 bytes) name=__GSHandlerCheck + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + __GSHandlerCheck + + Library: Visual Studio 2005 Release */ + +undefined8 __GSHandlerCheck(void) + +{ + return 1; +} + + +================================================================== + +### EXPORT FUNC 180034be0 (202 bytes) name=_CxxThrowException + +/* Library Function - Single Match + _CxxThrowException + + Library: Visual Studio 2005 Release */ + +void __stdcall _CxxThrowException(void *pExceptionObject,ThrowInfo *pThrowInfo) + +{ + undefined8 uVar1; + undefined8 uVar2; + PVOID local_res8 [4]; + DWORD local_48; + DWORD DStack_44; + DWORD local_30; + ULONG_PTR local_28; + void *local_20; + ThrowInfo *local_18; + PVOID local_10; + + uVar2 = DAT_1800571a8; + uVar1 = DAT_180057190; + local_28 = DAT_1800571b0; + local_10 = (PVOID)DAT_1800571c8; + local_20 = pExceptionObject; + local_18 = pThrowInfo; + local_res8[0] = RtlPcToFileHeader(pThrowInfo,local_res8); + if (pThrowInfo != (ThrowInfo *)0x0) { + if ((pThrowInfo->attributes & 8) == 0) { + if (local_res8[0] == (PVOID)0x0) { + local_28._0_4_ = 0x1994000; + } + } + else { + local_28 = CONCAT44(local_28._4_4_,0x1994000); + } + } + local_30 = (DWORD)uVar2; + DStack_44 = (DWORD)((ulonglong)uVar1 >> 0x20); + local_48 = (DWORD)uVar1; + local_10 = local_res8[0]; + RaiseException(local_48,DStack_44,local_30,&local_28); + return; +} + + +================================================================== + +### EXPORT FUNC 180034cb0 (271 bytes) name=FUN_180034cb0 + +longlong * FUN_180034cb0(longlong *param_1,DWORD64 *param_2,longlong param_3,longlong *param_4) + +{ + int iVar1; + int iVar2; + PRUNTIME_FUNCTION p_Var3; + int *piVar4; + uint uVar5; + ulonglong uVar6; + longlong lVar7; + longlong lVar8; + uint uVar9; + ulonglong uVar10; + ulonglong local_res8; + + iVar1 = *(int *)(param_3 + 0xc); + uVar10 = (ulonglong)iVar1; + iVar2 = FUN_180042320(param_3,(longlong *)param_2); + *param_4 = *param_1; + if (iVar1 == 0) { + return param_4; + } + lVar8 = uVar10 * 0x14; + do { + lVar8 = lVar8 + -0x14; + lVar7 = (longlong)*(int *)(param_3 + 0x10) + param_2[1] + lVar8; + if ((*(int *)(lVar7 + 4) < iVar2) && (iVar2 <= *(int *)(lVar7 + 8))) { + p_Var3 = RtlLookupFunctionEntry(*param_2,&local_res8,(PUNWIND_HISTORY_TABLE)0x0); + uVar9 = *(uint *)(lVar7 + 0xc); + lVar7 = (longlong)*(int *)(lVar7 + 0x10) + local_res8; + uVar6 = 0; + if (uVar9 != 0) { + piVar4 = (int *)(lVar7 + 0xc); + do { + if ((longlong)*piVar4 == (ulonglong)p_Var3->BeginAddress) break; + uVar5 = (int)uVar6 + 1; + uVar6 = (ulonglong)uVar5; + piVar4 = piVar4 + 5; + } while (uVar5 < uVar9); + } + if ((uint)uVar6 < uVar9) { + *param_4 = *(longlong *)((longlong)*(int *)(lVar7 + 0x10 + uVar6 * 0x14) + *param_1); + return param_4; + } + } + uVar9 = (int)uVar10 - 1; + uVar10 = (ulonglong)uVar9; + if (uVar9 == 0) { + return param_4; + } + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 180034dc0 (21 bytes) name=FUN_180034dc0 + +undefined8 FUN_180034dc0(void) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + return *(undefined8 *)(pDVar1 + 0x4a); +} + + +================================================================== + +### EXPORT FUNC 180034de0 (21 bytes) name=FUN_180034de0 + +undefined8 FUN_180034de0(void) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + return *(undefined8 *)(pDVar1 + 0x4c); +} + + +================================================================== + +### EXPORT FUNC 180034e00 (27 bytes) name=FUN_180034e00 + +void FUN_180034e00(undefined8 param_1) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + *(undefined8 *)(pDVar1 + 0x4a) = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 180034e20 (27 bytes) name=FUN_180034e20 + +void FUN_180034e20(undefined8 param_1) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + *(undefined8 *)(pDVar1 + 0x4c) = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 180034e40 (330 bytes) name=FUN_180034e40 + +void FUN_180034e40(longlong *param_1,DWORD64 *param_2,longlong param_3) + +{ + int iVar1; + int iVar2; + PRUNTIME_FUNCTION p_Var3; + DWORD *pDVar4; + int *piVar5; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + longlong lVar9; + uint uVar10; + ulonglong uVar11; + longlong local_res8; + ulonglong local_res18; + + iVar2 = *(int *)(param_3 + 0xc); + uVar11 = (ulonglong)iVar2; + iVar1 = FUN_180042320(param_3,(longlong *)param_2); + local_res8 = *param_1; + if (iVar2 != 0) { + lVar9 = uVar11 * 0x14; + do { + lVar9 = lVar9 + -0x14; + lVar8 = (longlong)*(int *)(param_3 + 0x10) + param_2[1] + lVar9; + if ((*(int *)(lVar8 + 4) < iVar1) && (iVar1 <= *(int *)(lVar8 + 8))) { + p_Var3 = RtlLookupFunctionEntry(*param_2,&local_res18,(PUNWIND_HISTORY_TABLE)0x0); + uVar10 = *(uint *)(lVar8 + 0xc); + lVar8 = (longlong)*(int *)(lVar8 + 0x10) + local_res18; + uVar7 = 0; + if (uVar10 != 0) { + piVar5 = (int *)(lVar8 + 0xc); + do { + if ((longlong)*piVar5 == (ulonglong)p_Var3->BeginAddress) break; + uVar6 = (int)uVar7 + 1; + uVar7 = (ulonglong)uVar6; + piVar5 = piVar5 + 5; + } while (uVar6 < uVar10); + } + if ((uint)uVar7 < uVar10) { + local_res8 = *(longlong *)((longlong)*(int *)(lVar8 + 0x10 + uVar7 * 0x14) + *param_1); + break; + } + } + uVar10 = (int)uVar11 - 1; + uVar11 = (ulonglong)uVar10; + } while (uVar10 != 0); + } + iVar2 = FUN_180042320(param_3,(longlong *)param_2); + uVar11 = (ulonglong)*(int *)(param_3 + 0xc); + if (*(int *)(param_3 + 0xc) != 0) { + lVar9 = uVar11 * 0x14; + do { + lVar9 = lVar9 + -0x14; + pDVar4 = FUN_1800380a0(); + lVar8 = *(longlong *)(pDVar4 + 0x4a) + (longlong)*(int *)(param_3 + 0x10); + if ((*(int *)(lVar8 + 4 + lVar9) < iVar2) && (iVar2 <= *(int *)(lVar8 + 8 + lVar9))) { + iVar2 = *(int *)(lVar8 + 4 + lVar9); + goto LAB_180034f5c; + } + uVar10 = (int)uVar11 - 1; + uVar11 = (ulonglong)uVar10; + } while (uVar10 != 0); + } + iVar2 = -1; +LAB_180034f5c: + FUN_180042570(&local_res8,(longlong *)param_2,param_3,iVar2); + return; +} + + +================================================================== + +### EXPORT FUNC 180034f90 (135 bytes) name=FID_conflict:__CxxFrameHandler + +/* Library Function - Multiple Matches With Different Base Names + __CxxFrameHandler + __CxxFrameHandler3 + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void FID_conflict___CxxFrameHandler + (int *param_1,__uint64 param_2,ULONG_PTR param_3,_xDISPATCHER_CONTEXT *param_4) + +{ + DWORD *pDVar1; + __uint64 local_res8; + + local_res8 = param_2; + pDVar1 = FUN_1800380a0(); + *(undefined8 *)(pDVar1 + 0x4a) = *(undefined8 *)(param_4 + 8); + pDVar1 = FUN_1800380a0(); + *(undefined8 *)(pDVar1 + 0x4c) = *(undefined8 *)(param_1 + 0xe); + pDVar1 = FUN_1800380a0(); + FUN_180043a70(param_1,&local_res8,param_3,param_4, + (_s_FuncInfo *) + ((ulonglong)**(uint **)(param_4 + 0x38) + *(longlong *)(pDVar1 + 0x4a)),0,0,0); + return; +} + + +================================================================== + +### EXPORT FUNC 180035020 (161 bytes) name=__SehTransFilter + +/* Library Function - Single Match + int __cdecl __SehTransFilter(struct _EXCEPTION_POINTERS * __ptr64,struct EHExceptionRecord * + __ptr64,unsigned __int64 * __ptr64,struct _CONTEXT * __ptr64,struct _xDISPATCHER_CONTEXT * + __ptr64,struct _s_FuncInfo const * __ptr64,int * __ptr64) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +int __cdecl +__SehTransFilter(_EXCEPTION_POINTERS *param_1,EHExceptionRecord *param_2,__uint64 *param_3, + _CONTEXT *param_4,_xDISPATCHER_CONTEXT *param_5,_s_FuncInfo *param_6,int *param_7) + +{ + PEXCEPTION_RECORD pEVar1; + DWORD *pDVar2; + + pDVar2 = FUN_1800380a0(); + *(EHExceptionRecord **)(pDVar2 + 0x4e) = param_2; + pEVar1 = param_1->ExceptionRecord; + pDVar2 = FUN_1800380a0(); + *(ULONG_PTR *)(pDVar2 + 0x4c) = pEVar1->ExceptionInformation[3]; + FUN_180043a70((int *)param_1->ExceptionRecord,param_3,(ULONG_PTR)param_4,param_5,param_6,0,0,1); + pDVar2 = FUN_1800380a0(); + pDVar2[0x4e] = 0; + pDVar2[0x4f] = 0; + *param_7 = 1; + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800350d0 (84 bytes) name=FUN_1800350d0 + +undefined4 FUN_1800350d0(undefined4 *param_1,undefined8 param_2,undefined8 param_3) + +{ + DWORD *pDVar1; + undefined4 *local_20; + undefined8 local_18; + + local_20 = param_1; + local_18 = param_3; + pDVar1 = FUN_1800380a0(); + (**(code **)(pDVar1 + 0x38))(*param_1,&local_20); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180035130 (68 bytes) name=_CallSETranslator$filt$0 + +/* Library Function - Single Match + _CallSETranslator$filt$0 + + Library: Visual Studio 2005 Release */ + +void _CallSETranslator_filt_0(_EXCEPTION_POINTERS *param_1,longlong param_2) + +{ + __SehTransFilter(param_1,*(EHExceptionRecord **)(param_2 + 0x70),*(__uint64 **)(param_2 + 0x78), + *(_CONTEXT **)(param_2 + 0x80),*(_xDISPATCHER_CONTEXT **)(param_2 + 0x88), + *(_s_FuncInfo **)(param_2 + 0x90),(int *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 180035180 (311 bytes) name=FUN_180035180 + +longlong FUN_180035180(undefined8 param_1,longlong param_2,undefined8 param_3,int param_4, + uint *param_5,int *param_6,longlong *param_7) + +{ + uint uVar1; + int iVar2; + int *piVar3; + longlong lVar4; + uint uVar5; + longlong lVar6; + + uVar1 = *(uint *)(param_2 + 0xc); + lVar4 = 0; + iVar2 = FUN_180042320(param_2,param_7); + if (uVar1 == 0) { + FUN_180043cc0(); + } + *param_6 = -1; + *param_5 = 0xffffffff; + uVar5 = uVar1; + if (uVar1 != 0) { + piVar3 = (int *)((longlong)*(int *)(param_2 + 0x10) + (longlong)(int)uVar1 * 0x14 + -0xc + + param_7[1]); + do { + if ((piVar3[-1] < iVar2) && (iVar2 <= *piVar3)) break; + piVar3 = piVar3 + -5; + uVar5 = uVar5 - 1; + } while (uVar5 != 0); + } + if (uVar5 != 0) { + lVar4 = (longlong)*(int *)(param_2 + 0x10) + (ulonglong)(uVar5 - 1) * 0x14 + param_7[1]; + } + uVar5 = 0; + if (uVar1 != 0) { + lVar6 = 0; + do { + piVar3 = (int *)((longlong)*(int *)(param_2 + 0x10) + param_7[1] + lVar6); + if ((((lVar4 == 0) || ((*(int *)(lVar4 + 4) < *piVar3 && (piVar3[1] <= *(int *)(lVar4 + 8))))) + && (*piVar3 <= param_4)) && (param_4 <= piVar3[1])) { + if (*param_5 == 0xffffffff) { + *param_5 = uVar5; + } + *param_6 = uVar5 + 1; + } + uVar5 = uVar5 + 1; + lVar6 = lVar6 + 0x14; + } while (uVar5 < uVar1); + if (*param_5 != 0xffffffff) { + return (longlong)*(int *)(param_2 + 0x10) + (ulonglong)*param_5 * 0x14 + param_7[1]; + } + } + *param_5 = 0; + *param_6 = 0; + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800352c0 (67 bytes) name=_CreateFrameInfo + +/* Library Function - Single Match + _CreateFrameInfo + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release, + Visual Studio 2012 Release */ + +undefined8 * _CreateFrameInfo(undefined8 *param_1,undefined8 param_2) + +{ + DWORD *pDVar1; + undefined8 uVar2; + + *param_1 = param_2; + pDVar1 = FUN_1800380a0(); + if (param_1 < *(undefined8 **)(pDVar1 + 0x48)) { + pDVar1 = FUN_1800380a0(); + uVar2 = *(undefined8 *)(pDVar1 + 0x48); + } + else { + uVar2 = 0; + } + param_1[1] = uVar2; + pDVar1 = FUN_1800380a0(); + *(undefined8 **)(pDVar1 + 0x48) = param_1; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180035310 (65 bytes) name=_IsExceptionObjectToBeDestroyed + +/* Library Function - Single Match + _IsExceptionObjectToBeDestroyed + + Library: Visual Studio 2005 Release */ + +undefined8 _IsExceptionObjectToBeDestroyed(longlong param_1) + +{ + longlong *plVar1; + DWORD *pDVar2; + + pDVar2 = FUN_1800380a0(); + plVar1 = *(longlong **)(pDVar2 + 0x48); + while( true ) { + if (plVar1 == (longlong *)0x0) { + return 1; + } + if (*plVar1 == param_1) break; + plVar1 = (longlong *)plVar1[1]; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180035360 (105 bytes) name=FUN_180035360 + +void FUN_180035360(longlong param_1) + +{ + longlong lVar1; + DWORD *pDVar2; + + pDVar2 = FUN_1800380a0(); + if (param_1 != *(longlong *)(pDVar2 + 0x48)) { + FUN_180043cc0(); + } + pDVar2 = FUN_1800380a0(); + lVar1 = *(longlong *)(pDVar2 + 0x48); + while( true ) { + if (lVar1 == 0) { + FUN_180043cc0(); + return; + } + if (param_1 == lVar1) break; + lVar1 = *(longlong *)(lVar1 + 8); + } + pDVar2 = FUN_1800380a0(); + *(undefined8 *)(pDVar2 + 0x48) = *(undefined8 *)(lVar1 + 8); + return; +} + + +================================================================== + +### EXPORT FUNC 1800353d0 (230 bytes) name=_UnwindNestedFrames + +/* Library Function - Single Match + _UnwindNestedFrames + + Library: Visual Studio 2008 Release */ + +void _UnwindNestedFrames(undefined8 *param_1,ULONG_PTR param_2,ULONG_PTR param_3,ULONG_PTR param_4, + ULONG_PTR param_5,int param_6,ULONG_PTR param_7,undefined8 *param_8, + byte param_9) + +{ + EXCEPTION_RECORD local_578; + _CONTEXT local_4d8; + + memcpy(&local_578,&DAT_1800571d0,0x98); + local_578.ExceptionInformation[2] = param_5; + local_578.ExceptionInformation[3] = (ULONG_PTR)param_6; + local_578.ExceptionInformation[5] = param_7; + local_578.ExceptionInformation[7] = (ULONG_PTR)param_9; + local_578.ExceptionInformation[0] = (ULONG_PTR)FUN_180042b90; + local_578.ExceptionInformation[8] = 0x19930520; + local_578.ExceptionInformation[1] = param_4; + local_578.ExceptionInformation[4] = param_3; + local_578.ExceptionInformation[6] = param_2; + RtlUnwindEx((PVOID)*param_1,(PVOID)*param_8,&local_578,(PVOID)0x0,&local_4d8, + (PUNWIND_HISTORY_TABLE)param_8[8]); + return; +} + + +================================================================== + +### EXPORT FUNC 1800354c0 (279 bytes) name=FUN_1800354c0 + +undefined4 FUN_1800354c0(short *param_1,longlong param_2,short *param_3,longlong param_4) + +{ + short sVar1; + DWORD *pDVar2; + longlong lVar3; + short *psVar4; + short *psVar5; + + if (param_4 == 0) { + if (param_1 == (short *)0x0) { + if (param_2 == 0) { + return 0; + } + goto LAB_180035503; + } + } + else if (param_1 == (short *)0x0) goto LAB_180035503; + if (param_2 != 0) { + if (param_4 == 0) { + *param_1 = 0; + return 0; + } + if (param_3 != (short *)0x0) { + lVar3 = param_2; + psVar4 = param_1; + if (param_4 == -1) { + do { + sVar1 = *param_3; + param_3 = param_3 + 1; + *psVar4 = sVar1; + if (sVar1 == 0) break; + lVar3 = lVar3 + -1; + psVar4 = psVar4 + 1; + } while (lVar3 != 0); + } + else { + do { + sVar1 = *param_3; + psVar5 = psVar4 + 1; + param_3 = param_3 + 1; + *psVar4 = sVar1; + if ((sVar1 == 0) || (lVar3 = lVar3 + -1, lVar3 == 0)) break; + param_4 = param_4 + -1; + psVar4 = psVar5; + } while (param_4 != 0); + if (param_4 == 0) { + *psVar5 = 0; + } + } + if (lVar3 != 0) { + return 0; + } + if (param_4 == -1) { + param_1[param_2 + -1] = 0; + return 0x50; + } + *param_1 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + *param_1 = 0; + } +LAB_180035503: + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 1800355e0 (26 bytes) name=FUN_1800355e0 + +longlong FUN_1800355e0(short *param_1) + +{ + short sVar1; + short *psVar2; + + psVar2 = param_1; + do { + sVar1 = *psVar2; + psVar2 = psVar2 + 1; + } while (sVar1 != 0); + return ((longlong)psVar2 - (longlong)param_1 >> 1) + -1; +} + + +================================================================== + +### EXPORT FUNC 180035600 (438 bytes) name=FUN_180035600 + +undefined8 +FUN_180035600(PEXCEPTION_RECORD param_1,PVOID param_2,undefined8 param_3,longlong *param_4) + +{ + uint uVar1; + longlong lVar2; + uint *puVar3; + int iVar4; + BOOL BVar5; + ulonglong uVar6; + uint *puVar7; + ulonglong uVar8; + ulonglong uVar9; + uint uVar10; + PEXCEPTION_RECORD local_38; + undefined8 local_30; + + lVar2 = param_4[1]; + puVar3 = (uint *)param_4[7]; + uVar8 = *param_4 - lVar2; + uVar10 = 0; + if ((param_1->ExceptionFlags & 0x66) == 0) { + if (*puVar3 != 0) { + puVar7 = puVar3 + 3; + local_38 = param_1; + local_30 = param_3; + do { + if (((puVar7[-2] <= uVar8) && (uVar8 < puVar7[-1])) && (puVar7[1] != 0)) { + if (*puVar7 != 1) { + iVar4 = (*(code *)((ulonglong)*puVar7 + lVar2))(&local_38,param_2); + if (iVar4 < 0) { + return 0; + } + if (iVar4 < 1) goto LAB_180035713; + } + if (((param_1->ExceptionCode == 0xe06d7363) && + (PTR___DestructExceptionObject_180057bf0 != (undefined *)0x0)) && + (BVar5 = _IsNonwritableInCurrentImage((PBYTE)&PTR___DestructExceptionObject_180057bf0), + BVar5 != 0)) { + (*(code *)PTR___DestructExceptionObject_180057bf0)(param_1,1); + } + FUN_180043d50(); + RtlUnwindEx(param_2,(PVOID)((ulonglong)puVar7[1] + lVar2),param_1, + (PVOID)(longlong)(int)param_1->ExceptionCode,(PCONTEXT)param_4[5], + (PUNWIND_HISTORY_TABLE)param_4[8]); + FUN_180043d80(); + } +LAB_180035713: + uVar10 = uVar10 + 1; + puVar7 = puVar7 + 4; + } while (uVar10 < *puVar3); + } + } + else { + uVar9 = param_4[4] - lVar2; + puVar7 = puVar3; + if (*puVar3 != 0) { + do { + if ((puVar7[1] <= uVar8) && (uVar6 = (ulonglong)puVar7[2], uVar8 < uVar6)) { + if ((puVar7[1] <= uVar9) && ((uVar9 <= uVar6 && ((param_1->ExceptionFlags & 0x20) != 0)))) + { + return 1; + } + uVar1 = puVar7[4]; + if (uVar1 == 0) { + *param_4 = uVar6 + lVar2; + (*(code *)((ulonglong)puVar7[3] + lVar2))(1,param_2); + } + else if (uVar9 == uVar1) { + return 1; + } + } + uVar10 = uVar10 + 1; + puVar7 = puVar7 + 4; + } while (uVar10 < *puVar3); + } + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800357d0 (217 bytes) name=FUN_1800357d0 + +void FUN_1800357d0(ulonglong *param_1,ulonglong param_2,ulonglong param_3) + +{ + uint uVar1; + ulonglong *puVar2; + ulonglong uVar3; + ulonglong uVar4; + + uVar3 = param_3; + if (7 < param_3) { + param_2 = (param_2 & 0xff) * 0x101010101010101; + if (0x3f < param_3) { + uVar1 = -(int)param_1 & 7; + if (uVar1 != 0) { + uVar3 = param_3 - uVar1; + *param_1 = param_2; + } + param_1 = (ulonglong *)((ulonglong)uVar1 + (longlong)param_1); + param_3 = uVar3 & 0x3f; + uVar3 = uVar3 >> 6; + if (uVar3 != 0) { + puVar2 = param_1; + if (uVar3 < 0x1c00) { + do { + *puVar2 = param_2; + puVar2[1] = param_2; + puVar2[2] = param_2; + param_1 = puVar2 + 8; + puVar2[3] = param_2; + puVar2[4] = param_2; + uVar3 = uVar3 - 1; + puVar2[5] = param_2; + puVar2[6] = param_2; + puVar2[7] = param_2; + puVar2 = param_1; + } while (uVar3 != 0); + } + else { + do { + *puVar2 = param_2; + puVar2[1] = param_2; + puVar2[2] = param_2; + param_1 = puVar2 + 8; + puVar2[3] = param_2; + puVar2[4] = param_2; + uVar3 = uVar3 - 1; + puVar2[5] = param_2; + puVar2[6] = param_2; + puVar2[7] = param_2; + puVar2 = param_1; + } while (uVar3 != 0); + LOCK(); + UNLOCK(); + } + } + } + uVar3 = param_3 & 7; + for (uVar4 = param_3 >> 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *param_1 = param_2; + param_1 = param_1 + 1; + } + } + for (; uVar3 != 0; uVar3 = uVar3 - 1) { + *(char *)param_1 = (char)param_2; + param_1 = (ulonglong *)((longlong)param_1 + 1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800358c0 (133 bytes) name=FUN_1800358c0 + +undefined8 +FUN_1800358c0(int *param_1,__uint64 param_2,ULONG_PTR param_3,_xDISPATCHER_CONTEXT *param_4) + +{ + longlong lVar1; + undefined8 uVar2; + uint uVar3; + + lVar1 = *(longlong *)(param_4 + 0x38); + __GSHandlerCheckCommon(param_2,(longlong)param_4); + if ((*(byte *)(param_1 + 1) & 0x66) == 0) { + uVar3 = *(uint *)(lVar1 + 4) & 1; + } + else { + uVar3 = *(uint *)(lVar1 + 4) & 2; + } + if (uVar3 == 0) { + uVar2 = 1; + } + else { + uVar2 = FID_conflict___CxxFrameHandler(param_1,param_2,param_3,param_4); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180035950 (240 bytes) name=FUN_180035950 + +LPVOID FUN_180035950(LPVOID param_1,ulonglong param_2) + +{ + int iVar1; + DWORD DVar2; + LPVOID pvVar3; + DWORD *pDVar4; + + if (param_1 == (LPVOID)0x0) { + pvVar3 = FUN_1800349a0(param_2); + return pvVar3; + } + if (param_2 == 0) { + FUN_180034a70(param_1); + return (LPVOID)0x0; + } + do { + if (0xffffffffffffffe0 < param_2) { + _callnewh(param_2); + pDVar4 = FUN_180035b40(); + *pDVar4 = 0xc; + return (LPVOID)0x0; + } + if (param_2 == 0) { + param_2 = 1; + } + pvVar3 = HeapReAlloc(DAT_180072ed8,0,param_1,param_2); + if (pvVar3 != (LPVOID)0x0) { + return pvVar3; + } + if (DAT_180073310 == 0) { + pDVar4 = FUN_180035b40(); + DVar2 = GetLastError(); + DVar2 = FUN_180035af0(DVar2); + *pDVar4 = DVar2; + return (LPVOID)0x0; + } + iVar1 = _callnewh(param_2); + } while (iVar1 != 0); + pDVar4 = FUN_180035b40(); + DVar2 = GetLastError(); + DVar2 = FUN_180035af0(DVar2); + *pDVar4 = DVar2; + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 180035a40 (171 bytes) name=FUN_180035a40 + +LPVOID FUN_180035a40(LPCVOID param_1,ulonglong param_2,ulonglong param_3) + +{ + undefined1 auVar1 [16]; + DWORD *pDVar2; + SIZE_T SVar3; + LPVOID pvVar4; + ulonglong uVar5; + + SVar3 = 0; + if ((param_2 != 0) && + (auVar1._8_8_ = 0, auVar1._0_8_ = param_2, + SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar1,0) < param_3)) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0xc; + FUN_1800384e0(0,0,0,0,0); + return (LPVOID)0x0; + } + uVar5 = param_2 * param_3; + if (param_1 != (LPCVOID)0x0) { + SVar3 = FUN_180035e80(param_1); + } + pvVar4 = FUN_180035950(param_1,uVar5); + if ((pvVar4 != (LPVOID)0x0) && (SVar3 < uVar5)) { + FUN_1800357d0((ulonglong *)(SVar3 + (longlong)pvVar4),0,uVar5 - SVar3); + } + return pvVar4; +} + + +================================================================== + +### EXPORT FUNC 180035af0 (78 bytes) name=FUN_180035af0 + +undefined4 FUN_180035af0(int param_1) + +{ + undefined4 uVar1; + int *piVar2; + uint uVar3; + + uVar3 = 0; + piVar2 = &DAT_18006ceb0; + do { + if (param_1 == *piVar2) { + return *(undefined4 *)(&DAT_18006ceb4 + (longlong)(int)uVar3 * 8); + } + uVar3 = uVar3 + 1; + piVar2 = piVar2 + 2; + } while (uVar3 < 0x2d); + if (param_1 - 0x13U < 0x12) { + return 0xd; + } + uVar1 = 0x16; + if (param_1 - 0xbcU < 0xf) { + uVar1 = 8; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180035b40 (35 bytes) name=FUN_180035b40 + +DWORD * FUN_180035b40(void) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_180038010(); + if (pDVar1 == (DWORD *)0x0) { + return (DWORD *)&DAT_18006d018; + } + return pDVar1 + 4; +} + + +================================================================== + +### EXPORT FUNC 180035b70 (35 bytes) name=FUN_180035b70 + +DWORD * FUN_180035b70(void) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_180038010(); + if (pDVar1 == (DWORD *)0x0) { + return &DAT_18006d01c; + } + return pDVar1 + 5; +} + + +================================================================== + +### EXPORT FUNC 180035ba0 (141 bytes) name=_dosmaperr + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + _dosmaperr + + Library: Visual Studio 2005 Release */ + +void __cdecl _dosmaperr(ulong param_1) + +{ + DWORD *pDVar1; + ulong *puVar2; + uint uVar3; + DWORD DVar4; + + pDVar1 = FUN_180038010(); + if (pDVar1 == (DWORD *)0x0) { + pDVar1 = &DAT_18006d01c; + } + else { + pDVar1 = pDVar1 + 5; + } + *pDVar1 = param_1; + uVar3 = 0; + puVar2 = &DAT_18006ceb0; + do { + if (param_1 == *puVar2) { + DVar4 = *(DWORD *)(&DAT_18006ceb4 + (longlong)(int)uVar3 * 8); + goto LAB_180035c0e; + } + uVar3 = uVar3 + 1; + puVar2 = puVar2 + 2; + } while (uVar3 < 0x2d); + if (param_1 - 0x13 < 0x12) { + DVar4 = 0xd; + } + else { + DVar4 = 0x16; + if (param_1 - 0xbc < 0xf) { + DVar4 = 8; + } + } +LAB_180035c0e: + pDVar1 = FUN_180038010(); + if (pDVar1 != (DWORD *)0x0) { + pDVar1[4] = DVar4; + return; + } + _DAT_18006d018 = DVar4; + return; +} + + +================================================================== + +### EXPORT FUNC 180035c30 (66 bytes) name=_endthreadex + +/* Library Function - Single Match + _endthreadex + + Library: Visual Studio 2005 Release */ + +void __cdecl _endthreadex(uint _Retval) + +{ + BOOL BVar1; + _ptiddata _Ptd; + + if (PTR_FUN_180057278 != (undefined *)0x0) { + BVar1 = _IsNonwritableInCurrentImage((PBYTE)&PTR_FUN_180057278); + if (BVar1 != 0) { + (*(code *)PTR_FUN_180057278)(); + } + } + _Ptd = (_ptiddata)FUN_180038010(); + if (_Ptd != (_ptiddata)0x0) { + _freeptd(_Ptd); + } + /* WARNING: Subroutine does not return */ + ExitThread(_Retval); +} + + +================================================================== + +### EXPORT FUNC 180035c80 (44 bytes) name=_callthreadstartex + +/* Library Function - Single Match + _callthreadstartex + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void _callthreadstartex(void) + +{ + uint _Retval; + uint extraout_EAX; + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + _Retval = (**(code **)(pDVar1 + 0x24))(*(undefined8 *)(pDVar1 + 0x26)); + _endthreadex(_Retval); + FUN_180036a20(extraout_EAX); + return; +} + + +================================================================== + +### EXPORT FUNC 180035cb0 (28 bytes) name=FUN_180035cb0 + +void FUN_180035cb0(undefined8 *param_1) + +{ + FUN_180041b50(*(int *)*param_1,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180035cd0 (159 bytes) name=FUN_180035cd0 + +void FUN_180035cd0(DWORD *param_1) + +{ + code *pcVar1; + DWORD DVar2; + BOOL BVar3; + PVOID pvVar4; + + FUN_180037e10(); + DVar2 = FUN_180037e00(); + pvVar4 = FlsGetValue(DVar2); + if (pvVar4 == (PVOID)0x0) { + DVar2 = FUN_180037e00(); + BVar3 = FlsSetValue(DVar2,param_1); + if (BVar3 == 0) { + DVar2 = GetLastError(); + /* WARNING: Subroutine does not return */ + ExitThread(DVar2); + } + DVar2 = GetCurrentThreadId(); + *param_1 = DVar2; + } + else { + *(undefined8 *)((longlong)pvVar4 + 0x90) = *(undefined8 *)(param_1 + 0x24); + *(undefined8 *)((longlong)pvVar4 + 0x98) = *(undefined8 *)(param_1 + 0x26); + *(undefined8 *)((longlong)pvVar4 + 8) = *(undefined8 *)(param_1 + 2); + FUN_180038140(param_1); + } + if (PTR_FUN_180057270 != (undefined *)0x0) { + BVar3 = _IsNonwritableInCurrentImage((PBYTE)&PTR_FUN_180057270); + if (BVar3 != 0) { + (*(code *)PTR_FUN_180057270)(); + } + } + _callthreadstartex(); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180035d70 (262 bytes) name=FUN_180035d70 + +HANDLE FUN_180035d70(LPSECURITY_ATTRIBUTES param_1,ulonglong param_2,longlong param_3, + undefined8 param_4,DWORD param_5,LPDWORD param_6) + +{ + DWORD DVar1; + DWORD *pDVar2; + LPVOID lpParameter; + HANDLE pvVar3; + DWORD local_res18 [2]; + + DVar1 = 0; + if (param_3 == 0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + } + else { + FUN_180037e10(); + lpParameter = FUN_180040e50(1,0x2d8); + if (lpParameter != (LPVOID)0x0) { + pDVar2 = FUN_1800380a0(); + FUN_180037e80((longlong)lpParameter,*(longlong *)(pDVar2 + 0x30)); + pDVar2 = local_res18; + if (param_6 != (LPDWORD)0x0) { + pDVar2 = param_6; + } + *(longlong *)((longlong)lpParameter + 0x90) = param_3; + *(undefined8 *)((longlong)lpParameter + 0x98) = param_4; + *(undefined8 *)((longlong)lpParameter + 8) = 0xffffffffffffffff; + pvVar3 = CreateThread(param_1,param_2 & 0xffffffff,FUN_180035cd0,lpParameter,param_5,pDVar2); + if (pvVar3 != (HANDLE)0x0) { + return pvVar3; + } + DVar1 = GetLastError(); + } + FUN_180034a70(lpParameter); + if (DVar1 != 0) { + _dosmaperr(DVar1); + } + } + return (HANDLE)0x0; +} + + +================================================================== + +### EXPORT FUNC 180035e80 (76 bytes) name=FUN_180035e80 + +SIZE_T FUN_180035e80(LPCVOID param_1) + +{ + DWORD *pDVar1; + SIZE_T SVar2; + + if (param_1 == (LPCVOID)0x0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffffffffffff; + } + /* WARNING: Could not recover jumptable at 0x000180035ec5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + SVar2 = HeapSize(DAT_180072ed8,0,param_1); + return SVar2; +} + + +================================================================== + +### EXPORT FUNC 180035ed0 (77 bytes) name=wcsspn + +/* Library Function - Single Match + wcsspn + + Library: Visual Studio 2005 Release */ + +size_t __cdecl wcsspn(wchar_t *_Str,wchar_t *_Control) + +{ + wchar_t wVar1; + wchar_t *pwVar2; + wchar_t *pwVar3; + wchar_t wVar4; + + wVar4 = *_Str; + pwVar3 = _Str; + if (wVar4 != L'\0') { + wVar1 = *_Control; + pwVar2 = _Control; + do { + while (wVar1 != wVar4) { + if (wVar1 == L'\0') goto LAB_180035f13; + wVar1 = pwVar2[1]; + pwVar2 = pwVar2 + 1; + } + wVar4 = pwVar3[1]; + pwVar3 = pwVar3 + 1; + wVar1 = *_Control; + pwVar2 = _Control; + } while (wVar4 != L'\0'); + } +LAB_180035f13: + return (longlong)pwVar3 - (longlong)_Str >> 1; +} + + +================================================================== + +### EXPORT FUNC 180035f20 (71 bytes) name=wcscspn + +/* Library Function - Single Match + wcscspn + + Library: Visual Studio 2005 Release */ + +size_t __cdecl wcscspn(wchar_t *_Str,wchar_t *_Control) + +{ + wchar_t *pwVar1; + wchar_t wVar2; + wchar_t *pwVar3; + + pwVar1 = _Str; + if (*_Str != L'\0') { + do { + if (*_Control != L'\0') { + pwVar3 = _Control; + wVar2 = *_Control; + do { + if (wVar2 == *pwVar1) goto LAB_180035f60; + wVar2 = pwVar3[1]; + pwVar3 = pwVar3 + 1; + } while (wVar2 != L'\0'); + } + pwVar1 = pwVar1 + 1; + } while (*pwVar1 != L'\0'); + } +LAB_180035f60: + return (longlong)pwVar1 - (longlong)_Str >> 1; +} + + +================================================================== + +### EXPORT FUNC 180035f70 (186 bytes) name=wcscat_s + +/* Library Function - Single Match + wcscat_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl wcscat_s(wchar_t *_Dst,rsize_t _SizeInWords,wchar_t *_Src) + +{ + wchar_t wVar1; + DWORD *pDVar2; + wchar_t *pwVar3; + + if ((_Dst != (wchar_t *)0x0) && (_SizeInWords != 0)) { + pwVar3 = _Dst; + if (_Src == (wchar_t *)0x0) { + *_Dst = L'\0'; + } + else { + do { + if (*pwVar3 == L'\0') break; + pwVar3 = pwVar3 + 1; + _SizeInWords = _SizeInWords - 1; + } while (_SizeInWords != 0); + if (_SizeInWords != 0) { + do { + wVar1 = *_Src; + _Src = _Src + 1; + *pwVar3 = wVar1; + if (wVar1 == L'\0') break; + _SizeInWords = _SizeInWords - 1; + pwVar3 = pwVar3 + 1; + } while (_SizeInWords != 0); + if (_SizeInWords == 0) { + *_Dst = L'\0'; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + return 0; + } + *_Dst = L'\0'; + } + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180036040 (147 bytes) name=FUN_180036040 + +wchar_t * FUN_180036040(wchar_t *param_1) + +{ + wchar_t wVar1; + errno_t eVar2; + wchar_t *pwVar3; + ulonglong uVar4; + + if (param_1 == (wchar_t *)0x0) { + return (wchar_t *)0x0; + } + uVar4 = 0xffffffffffffffff; + pwVar3 = param_1; + do { + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + wVar1 = *pwVar3; + pwVar3 = pwVar3 + 1; + } while (wVar1 != L'\0'); + pwVar3 = FUN_180043f50(~uVar4,2); + if (pwVar3 == (wchar_t *)0x0) { + return (wchar_t *)0x0; + } + eVar2 = wcscpy_s(pwVar3,~uVar4,param_1); + if (eVar2 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + return pwVar3; +} + + +================================================================== + +### EXPORT FUNC 1800360e0 (63 bytes) name=FUN_1800360e0 + +int FUN_1800360e0(ushort *param_1,ushort *param_2) + +{ + ushort *puVar1; + ushort uVar2; + int iVar3; + + uVar2 = *param_2; + iVar3 = (uint)*param_1 - (uint)uVar2; + while ((iVar3 == 0 && (uVar2 != 0))) { + uVar2 = param_2[1]; + puVar1 = param_1 + 1; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + iVar3 = (uint)*puVar1 - (uint)uVar2; + } + if (-1 < iVar3) { + if (0 < iVar3) { + iVar3 = 1; + } + return iVar3; + } + return -1; +} + + +================================================================== + +### EXPORT FUNC 180036130 (198 bytes) name=memcmp + +/* Library Function - Single Match + memcmp + + Library: Visual Studio */ + +int __cdecl memcmp(void *_Buf1,void *_Buf2,size_t _Size) + +{ + uint uVar1; + ulonglong uVar2; + longlong lVar3; + ulonglong uVar4; + bool bVar5; + + lVar3 = (longlong)_Buf2 - (longlong)_Buf1; + if (7 < _Size) { + for (; ((ulonglong)_Buf1 & 7) != 0; _Buf1 = (void *)((longlong)_Buf1 + 1)) { + bVar5 = (byte)*(ulonglong *)_Buf1 < *(byte *)(lVar3 + (longlong)_Buf1); + if ((byte)*(ulonglong *)_Buf1 != *(byte *)(lVar3 + (longlong)_Buf1)) goto LAB_180036173; + _Size = _Size - 1; + } + if (_Size >> 3 != 0) { + uVar4 = _Size >> 5; + if (uVar4 != 0) { + do { + uVar2 = *(ulonglong *)_Buf1; + if (uVar2 != *(ulonglong *)(lVar3 + (longlong)_Buf1)) goto LAB_1800361e4; + uVar2 = *(ulonglong *)((longlong)_Buf1 + 8); + if (uVar2 != *(ulonglong *)(lVar3 + 8 + (longlong)_Buf1)) { +LAB_1800361e0: + _Buf1 = (void *)((longlong)_Buf1 + 8); + goto LAB_1800361e4; + } + uVar2 = *(ulonglong *)((longlong)_Buf1 + 0x10); + if (uVar2 != *(ulonglong *)(lVar3 + 0x10 + (longlong)_Buf1)) { +LAB_1800361dc: + _Buf1 = (void *)((longlong)_Buf1 + 8); + goto LAB_1800361e0; + } + uVar2 = *(ulonglong *)((longlong)_Buf1 + 0x18); + if (uVar2 != *(ulonglong *)(lVar3 + 0x18 + (longlong)_Buf1)) { + _Buf1 = (void *)((longlong)_Buf1 + 8); + goto LAB_1800361dc; + } + _Buf1 = (void *)((longlong)_Buf1 + 0x20); + uVar4 = uVar4 - 1; + } while (uVar4 != 0); + _Size = _Size & 0x1f; + } + uVar4 = _Size >> 3; + if (uVar4 != 0) { + do { + uVar2 = *(ulonglong *)_Buf1; + if (uVar2 != *(ulonglong *)(lVar3 + (longlong)_Buf1)) { +LAB_1800361e4: + uVar4 = *(ulonglong *)((longlong)_Buf1 + lVar3); + uVar1 = (uint)((uVar2 >> 0x38 | (uVar2 & 0xff000000000000) >> 0x28 | + (uVar2 & 0xff0000000000) >> 0x18 | (uVar2 & 0xff00000000) >> 8 | + (uVar2 & 0xff000000) << 8 | (uVar2 & 0xff0000) << 0x18 | + (uVar2 & 0xff00) << 0x28 | uVar2 << 0x38) < + (uVar4 >> 0x38 | (uVar4 & 0xff000000000000) >> 0x28 | + (uVar4 & 0xff0000000000) >> 0x18 | (uVar4 & 0xff00000000) >> 8 | + (uVar4 & 0xff000000) << 8 | (uVar4 & 0xff0000) << 0x18 | + (uVar4 & 0xff00) << 0x28 | uVar4 << 0x38)); + return (1 - uVar1) - (uint)(uVar1 != 0); + } + _Buf1 = (void *)((longlong)_Buf1 + 8); + uVar4 = uVar4 - 1; + } while (uVar4 != 0); + _Size = _Size & 7; + } + } + } + while( true ) { + if (_Size == 0) { + return 0; + } + bVar5 = (byte)*(ulonglong *)_Buf1 < *(byte *)(lVar3 + (longlong)_Buf1); + if ((byte)*(ulonglong *)_Buf1 != *(byte *)(lVar3 + (longlong)_Buf1)) break; + _Buf1 = (void *)((longlong)_Buf1 + 1); + _Size = _Size - 1; + } +LAB_180036173: + return (1 - (uint)bVar5) - (uint)(bVar5 != 0); +} + + +================================================================== + +### EXPORT FUNC 180036200 (134 bytes) name=FUN_180036200 + +void FUN_180036200(void) + +{ + PTR_LAB_18006dc48 = &LAB_1800443c0; + PTR_LAB_18006dc40 = _cfltcvt; + PTR_LAB_18006dc50 = _fassign; + PTR_LAB_18006dc68 = _cfltcvt; + PTR_LAB_18006dc58 = &LAB_1800443b0; + PTR_LAB_18006dc60 = &LAB_1800442f0; + PTR_LAB_18006dc70 = _cfltcvt_l; + PTR_LAB_18006dc78 = _fassign_l; + PTR_LAB_18006dc80 = FUN_180044180; + DAT_18006dc88 = FUN_180044040; + return; +} + + +================================================================== + +### EXPORT FUNC 180036290 (780 bytes) name=FUN_180036290 + +longlong FUN_180036290(int *param_1,int param_2) + +{ + int iVar1; + DWORD *pDVar2; + undefined8 uVar3; + int iVar4; + uint uVar5; + longlong lVar6; + longlong lVar7; + longlong lVar8; + longlong lVar9; + int local_res8 [2]; + int local_res18 [2]; + longlong local_res20; + 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; + + local_res18[0] = 0; + local_res8[0] = 0; + if (param_1 == (int *)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return -1; + } + local_res20 = (longlong)param_1[5]; + if (local_res20 - 0x45U < 0x409) { + iVar1 = param_1[4]; + if ((iVar1 < 0) || (0xb < iVar1)) { + iVar4 = iVar1 % 0xc; + local_res20 = local_res20 + iVar1 / 0xc; + param_1[4] = iVar4; + if (iVar4 < 0) { + local_res20 = local_res20 + -1; + param_1[4] = iVar4 + 0xc; + } + if (0x408 < local_res20 - 0x45U) goto LAB_180036526; + } + lVar9 = (longlong)*(int *)(&DAT_18006dcc8 + (longlong)param_1[4] * 4); + uVar5 = (uint)(local_res20 >> 0x3f) & 3; + if ((((((int)local_res20 + uVar5 & 3) == uVar5) && + (lVar6 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(local_res20),8) + local_res20, + local_res20 != ((lVar6 >> 6) - (lVar6 >> 0x3f)) * 100)) || + (lVar6 = local_res20 + 0x76c, + lVar7 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(lVar6),8) + lVar6, + lVar6 == ((lVar7 >> 8) - (lVar7 >> 0x3f)) * 400)) && (1 < param_1[4])) { + lVar9 = lVar9 + 1; + } + lVar6 = local_res20 + -1; + lVar7 = local_res20 + 299 + SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(local_res20 + 299),8); + lVar8 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(lVar6),8) + lVar6; + local_res20 = (longlong)*param_1 + + ((longlong)param_1[1] + + ((longlong)param_1[2] + + (local_res20 * 0x16d + -0x63df + + ((longlong)(lVar6 + (ulonglong)((uint)(lVar6 >> 0x3f) & 3)) >> 2) + lVar9 + + ((((lVar7 >> 8) - (lVar7 >> 0x3f)) + (longlong)param_1[3]) - + ((lVar8 >> 6) - (lVar8 >> 0x3f)))) * 0x18) * 0x3c) * 0x3c; + if (param_2 == 0) { + uVar3 = FUN_18003f350(&local_48,&local_res20); + if ((int)uVar3 == 0) goto LAB_180036553; + } + else { + __tzset(); + uVar3 = FUN_18003f6d0(local_res18); + if ((int)uVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + uVar3 = FUN_18003f720(local_res8); + if ((int)uVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + local_res20 = local_res20 + local_res8[0]; + uVar3 = FUN_180033b30(&local_48,&local_res20); + if ((int)uVar3 == 0) { + if ((0 < param_1[8]) || ((param_1[8] < 0 && (0 < local_28)))) { + local_res20 = local_res20 + local_res18[0]; + uVar3 = FUN_180033b30(&local_48,&local_res20); + if ((int)uVar3 != 0) goto LAB_180036526; + } +LAB_180036553: + *param_1 = local_48; + param_1[1] = local_44; + param_1[2] = local_40; + param_1[3] = local_3c; + param_1[4] = local_38; + param_1[5] = local_34; + param_1[6] = local_30; + param_1[7] = local_2c; + param_1[8] = local_28; + return local_res20; + } + } + } +LAB_180036526: + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + return -1; +} + + +================================================================== + +### EXPORT FUNC 1800365a0 (10 bytes) name=FUN_1800365a0 + +void FUN_1800365a0(int *param_1) + +{ + FUN_180036290(param_1,1); + return; +} + + +================================================================== + +### EXPORT FUNC 1800365b0 (233 bytes) name=FUN_1800365b0 + +LPVOID FUN_1800365b0(LPCVOID param_1,ulonglong param_2) + +{ + DWORD DVar1; + DWORD *pDVar2; + SIZE_T SVar3; + LPVOID pvVar4; + LPVOID pvVar5; + + if (param_1 == (LPCVOID)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return (LPVOID)0x0; + } + if (param_2 < 0xffffffffffffffe1) { + if (param_2 == 0) { + param_2 = 1; + } + SVar3 = HeapSize(DAT_180072ed8,0,param_1); + pvVar4 = HeapReAlloc(DAT_180072ed8,0x10,param_1,param_2); + pvVar5 = pvVar4; + if ((pvVar4 == (LPVOID)0x0) && + ((SVar3 == 0xffffffffffffffff || (pvVar5 = param_1, SVar3 < param_2)))) { + pDVar2 = FUN_180035b40(); + DVar1 = GetLastError(); + DVar1 = FUN_180035af0(DVar1); + *pDVar2 = DVar1; + pvVar5 = pvVar4; + } + return pvVar5; + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0xc; + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 1800366a0 (45 bytes) name=_amsg_exit + +/* Library Function - Single Match + _amsg_exit + + Library: Visual Studio 2008 Release */ + +void __cdecl _amsg_exit(int param_1) + +{ + code *UNRECOVERED_JUMPTABLE; + + FUN_180042070(); + FUN_180041e30(param_1); + UNRECOVERED_JUMPTABLE = (code *)FUN_180037d20((INT_PTR)PTR_FUN_18006d028); + /* WARNING: Could not recover jumptable at 0x0001800366ca. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*UNRECOVERED_JUMPTABLE)(0xff); + return; +} + + +================================================================== + +### EXPORT FUNC 1800366d0 (59 bytes) name=FUN_1800366d0 + +void FUN_1800366d0(uint param_1) + +{ + HMODULE hModule; + FARPROC pFVar1; + + hModule = GetModuleHandleA("mscoree.dll"); + if (hModule != (HMODULE)0x0) { + pFVar1 = GetProcAddress(hModule,"CorExitProcess"); + if (pFVar1 != (FARPROC)0x0) { + (*pFVar1)((ulonglong)param_1); + } + } + /* WARNING: Subroutine does not return */ + ExitProcess(param_1); +} + + +================================================================== + +### EXPORT FUNC 180036710 (10 bytes) name=FUN_180036710 + +void FUN_180036710(void) + +{ + _lock(8); + return; +} + + +================================================================== + +### EXPORT FUNC 180036720 (10 bytes) name=FUN_180036720 + +void FUN_180036720(void) + +{ + FUN_180045470(8); + return; +} + + +================================================================== + +### EXPORT FUNC 180036730 (53 bytes) name=FUN_180036730 + +void FUN_180036730(undefined8 *param_1,undefined8 *param_2) + +{ + for (; param_1 < param_2; param_1 = param_1 + 1) { + if ((code *)*param_1 != (code *)0x0) { + (*(code *)*param_1)(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180036770 (73 bytes) name=_get_osplatform + +/* Library Function - Single Match + _get_osplatform + + Library: Visual Studio 2005 Release */ + +undefined8 _get_osplatform(int *param_1) + +{ + DWORD *pDVar1; + + if ((param_1 != (int *)0x0) && (DAT_1800727dc != 0)) { + *param_1 = DAT_1800727dc; + return 0; + } + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 1800367c0 (78 bytes) name=FUN_1800367c0 + +undefined8 FUN_1800367c0(undefined4 *param_1) + +{ + DWORD *pDVar1; + + if ((param_1 != (undefined4 *)0x0) && (DAT_1800727dc != 0)) { + *param_1 = DAT_1800727e8; + return 0; + } + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180036810 (203 bytes) name=FUN_180036810 + +undefined8 FUN_180036810(void) + +{ + BOOL BVar1; + undefined8 uVar2; + undefined4 in_ECX; + undefined8 *puVar3; + + if ((PTR_FUN_180057268 != (undefined *)0x0) && + (BVar1 = _IsNonwritableInCurrentImage((PBYTE)&PTR_FUN_180057268), BVar1 != 0)) { + (*(code *)PTR_FUN_180057268)(in_ECX); + } + FUN_1800452f0(); + puVar3 = &DAT_180053a78; + uVar2 = 0; + do { + if ((int)uVar2 != 0) { + return uVar2; + } + if ((code *)*puVar3 != (code *)0x0) { + uVar2 = (*(code *)*puVar3)(); + } + puVar3 = puVar3 + 1; + } while (puVar3 < &DAT_180053a98); + if ((int)uVar2 == 0) { + FUN_180034980(0x180041b10); + puVar3 = &DAT_1800539d8; + do { + if ((code *)*puVar3 != (code *)0x0) { + (*(code *)*puVar3)(); + } + puVar3 = puVar3 + 1; + } while (puVar3 < &DAT_180053a70); + if ((DAT_1800db700 != (code *)0x0) && + (BVar1 = _IsNonwritableInCurrentImage((PBYTE)&DAT_1800db700), BVar1 != 0)) { + (*DAT_1800db700)(0,2); + } + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 1800368e0 (281 bytes) name=FUN_1800368e0 + +void FUN_1800368e0(uint param_1,int param_2,int param_3) + +{ + longlong lVar1; + longlong *plVar2; + longlong *plVar3; + INT_PTR IVar4; + code *pcVar5; + + _lock(8); + if (DAT_18007283c != 1) { + DAT_180072838 = 1; + DAT_1800727f4 = (undefined1)param_3; + if (param_2 == 0) { + plVar2 = (longlong *)FUN_180037d20(DAT_1800db6f0); + plVar3 = (longlong *)FUN_180037d20(DAT_1800db6e8); + if (plVar2 != (longlong *)0x0) { + while (plVar3 = plVar3 + -1, plVar2 <= plVar3) { + if (*plVar3 != 0) { + lVar1 = *plVar3; + IVar4 = FUN_180037c30(); + if (lVar1 != IVar4) { + pcVar5 = (code *)FUN_180037d20(lVar1); + (*pcVar5)(); + } + } + } + } + FUN_180036730((undefined8 *)&DAT_180053aa0,(undefined8 *)&DAT_180053ab8); + } + FUN_180036730((undefined8 *)&DAT_180053ac0,(undefined8 *)&DAT_180053ac8); + } + if (param_3 != 0) { + FUN_180045470(8); + return; + } + DAT_18007283c = 1; + FUN_180045470(8); + FUN_1800366d0(param_1); + pcVar5 = (code *)swi(3); + (*pcVar5)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180036a00 (31 bytes) name=FUN_180036a00 + +void FUN_180036a00(undefined8 param_1,longlong param_2) + +{ + if (*(int *)(param_2 + 0x60) != 0) { + FUN_180045470(8); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180036a20 (12 bytes) name=FUN_180036a20 + +void FUN_180036a20(uint param_1) + +{ + FUN_1800368e0(param_1,1,0); + return; +} + + +================================================================== + +### EXPORT FUNC 180036a30 (13 bytes) name=FUN_180036a30 + +void FUN_180036a30(void) + +{ + FUN_1800368e0(0,0,1); + return; +} + + +================================================================== + +### EXPORT FUNC 180036a40 (103 bytes) name=_init_pointers + +/* Library Function - Single Match + _init_pointers + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl _init_pointers(void) + +{ + INT_PTR IVar1; + + IVar1 = FUN_180037c30(); + FUN_180042160(IVar1); + FUN_1800458e0(IVar1); + FUN_180038430(IVar1); + FUN_180042280(IVar1); + FUN_1800458d0(IVar1); + _initp_misc_winsig(IVar1); + FUN_180001e20(); + _initp_eh_hooks(); + PTR_FUN_18006d028 = (undefined *)FUN_180037b60(0x180036a20); + return; +} + + +================================================================== + +### EXPORT FUNC 180036ab0 (116 bytes) name=FID_conflict:_Type_info_dtor + +/* Library Function - Multiple Matches With Different Base Names + private: static void __cdecl type_info::_Type_info_dtor(class type_info * __ptr64) + private: static void __cdecl type_info::_Type_info_dtor_internal(class type_info * __ptr64) + + Library: Visual Studio 2005 Release */ + +void FID_conflict__Type_info_dtor(longlong param_1) + +{ + longlong *plVar1; + longlong *plVar2; + longlong *plVar3; + + _lock(0xe); + plVar1 = DAT_180072848; + if (*(longlong *)(param_1 + 8) != 0) { + plVar2 = (longlong *)&DAT_180072840; + do { + plVar3 = plVar2; + if (DAT_180072848 == (longlong *)0x0) goto LAB_180036b03; + plVar2 = DAT_180072848; + } while (*DAT_180072848 != *(longlong *)(param_1 + 8)); + plVar3[1] = DAT_180072848[1]; + FUN_180034a70(plVar1); +LAB_180036b03: + FUN_180034a70(*(LPVOID *)(param_1 + 8)); + *(undefined8 *)(param_1 + 8) = 0; + } + FUN_180045470(0xe); + return; +} + + +================================================================== + +### EXPORT FUNC 180036b30 (25 bytes) name=FUN_180036b30 + +void FUN_180036b30(void) + +{ + FUN_180045470(0xe); + return; +} + + +================================================================== + +### EXPORT FUNC 180036b50 (330 bytes) name=__report_gsfailure + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + __report_gsfailure + + Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2010 Debug, Visual + Studio 2010 Release */ + +void __cdecl __report_gsfailure(uintptr_t _StackCookie) + +{ + HANDLE hProcess; + DWORD64 unaff_retaddr; + uintptr_t local_res8 [4]; + PVOID local_48; + ulonglong local_40; + PRUNTIME_FUNCTION local_38; + DWORD64 local_30; + DWORD64 local_28; + undefined8 local_20; + undefined8 local_18; + + local_res8[0] = _StackCookie; + RtlCaptureContext(&DAT_1800728f0); + local_30 = DAT_1800729e8; + local_38 = RtlLookupFunctionEntry(DAT_1800729e8,&local_28,(PUNWIND_HISTORY_TABLE)0x0); + if (local_38 == (PRUNTIME_FUNCTION)0x0) { + _DAT_180072988 = local_res8; + DAT_1800729e8 = unaff_retaddr; + } + else { + RtlVirtualUnwind(0,local_28,local_30,local_38,(PCONTEXT)&DAT_1800728f0,&local_48,&local_40, + (PKNONVOLATILE_CONTEXT_POINTERS)0x0); + } + _DAT_180072860 = DAT_1800729e8; + _DAT_180072970 = local_res8[0]; + _DAT_180072850 = 0xc0000409; + _DAT_180072854 = 1; + local_20 = DAT_18006cea0; + local_18 = DAT_18006cea8; + DAT_1800728e8 = IsDebuggerPresent(); + FUN_180045a30(); + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); + UnhandledExceptionFilter((_EXCEPTION_POINTERS *)&PTR_DAT_1800572a0); + if (DAT_1800728e8 == 0) { + FUN_180045a30(); + } + hProcess = GetCurrentProcess(); + TerminateProcess(hProcess,0xc0000409); + return; +} + + +================================================================== + +### EXPORT FUNC 180036ca0 (171 bytes) name=FUN_180036ca0 + +void FUN_180036ca0(longlong param_1) + +{ + undefined1 *puVar1; + ulonglong *puVar2; + longlong lVar3; + + lVar3 = 0x101; + FUN_1800357d0((ulonglong *)(param_1 + 0x1c),0,0x101); + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + puVar2 = (ulonglong *)(param_1 + 0x1c); + do { + lVar3 = lVar3 + -1; + *(undefined1 *)puVar2 = *(undefined1 *)(((longlong)&DAT_18006d040 - param_1) + (longlong)puVar2) + ; + puVar2 = (ulonglong *)((longlong)puVar2 + 1); + } while (lVar3 != 0); + lVar3 = 0x80; + puVar1 = (undefined1 *)(param_1 + 0x11d); + do { + lVar3 = lVar3 + -1; + *puVar1 = puVar1[(longlong)&DAT_18006d040 - param_1]; + puVar1[1] = (puVar1 + 2)[0x18006d03f - param_1]; + puVar1 = puVar1 + 2; + } while (lVar3 != 0); + return; +} + + +================================================================== + +### EXPORT FUNC 180036d50 (531 bytes) name=FUN_180036d50 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180036d50(longlong param_1) + +{ + BYTE *pBVar1; + byte bVar2; + BOOL BVar3; + uint uVar4; + byte *pbVar6; + int iVar7; + ulonglong *puVar8; + ulonglong uVar9; + BYTE *pBVar10; + longlong lVar11; + ushort *puVar12; + undefined1 auStackY_588 [32]; + _cpinfo local_538; + ulonglong local_518 [32]; + byte local_418 [256]; + byte local_318 [256]; + WORD local_218 [256]; + ulonglong local_18; + ulonglong uVar5; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStackY_588; + BVar3 = GetCPInfo(*(UINT *)(param_1 + 4),&local_538); + if (BVar3 == 0) { + uVar4 = 0; + pbVar6 = (byte *)(param_1 + 0x1d); + do { + if (uVar4 - 0x41 < 0x1a) { + *pbVar6 = *pbVar6 | 0x10; + pbVar6[0x100] = (char)uVar4 + 0x20; + } + else if (uVar4 - 0x61 < 0x1a) { + *pbVar6 = *pbVar6 | 0x20; + pbVar6[0x100] = (char)uVar4 - 0x20; + } + else { + pbVar6[0x100] = 0; + } + uVar4 = uVar4 + 1; + pbVar6 = pbVar6 + 1; + } while (uVar4 < 0x100); + } + else { + uVar9 = 0; + puVar8 = local_518; + lVar11 = 0x100; + uVar5 = uVar9; + do { + *(char *)puVar8 = (char)uVar5; + uVar4 = (int)uVar5 + 1; + uVar5 = (ulonglong)uVar4; + puVar8 = (ulonglong *)((longlong)puVar8 + 1); + } while (uVar4 < 0x100); + local_518[0]._0_1_ = 0x20; + pBVar10 = local_538.LeadByte; + while (local_538.LeadByte[0] != 0) { + if ((uint)local_538.LeadByte[0] <= (uint)pBVar10[1]) { + iVar7 = (uint)pBVar10[1] - (uint)local_538.LeadByte[0]; + FUN_1800357d0((ulonglong *)((longlong)local_518 + (ulonglong)local_538.LeadByte[0]), + CONCAT71((uint7)(uint3)((uint)iVar7 >> 8),0x20),(ulonglong)(iVar7 + 1)); + } + pBVar1 = pBVar10 + 2; + pBVar10 = pBVar10 + 2; + local_538.LeadByte[0] = *pBVar1; + } + FUN_180046340((longlong *)0x0,1,(LPCSTR)local_518,0x100,local_218,*(UINT *)(param_1 + 4), + *(LCID *)(param_1 + 0xc),0); + FUN_180045f80((longlong *)0x0,*(LCID *)(param_1 + 0xc),0x100,(LPCSTR)local_518,0x100, + (LPSTR)local_418,0x100,*(UINT *)(param_1 + 4),0); + FUN_180045f80((longlong *)0x0,*(LCID *)(param_1 + 0xc),0x200,(LPCSTR)local_518,0x100, + (LPSTR)local_318,0x100,*(UINT *)(param_1 + 4),0); + puVar12 = local_218; + pbVar6 = (byte *)(param_1 + 0x1d); + do { + if ((*puVar12 & 1) == 0) { + if ((*puVar12 & 2) == 0) { + pbVar6[0x100] = 0; + } + else { + bVar2 = local_318[uVar9]; + *pbVar6 = *pbVar6 | 0x20; + pbVar6[0x100] = bVar2; + } + } + else { + bVar2 = local_418[uVar9]; + *pbVar6 = *pbVar6 | 0x10; + pbVar6[0x100] = bVar2; + } + pbVar6 = pbVar6 + 1; + uVar9 = uVar9 + 1; + puVar12 = puVar12 + 1; + lVar11 = lVar11 + -1; + } while (lVar11 != 0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180036f70 (188 bytes) name=__updatetmbcinfo + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + __updatetmbcinfo + + Library: Visual Studio 2008 Release */ + +pthreadmbcinfo __cdecl __updatetmbcinfo(void) + +{ + DWORD *pDVar1; + pthreadmbcinfo ptVar2; + + pDVar1 = FUN_1800380a0(); + if (((_DAT_18006d578 & pDVar1[0x32]) == 0) || (*(longlong *)(pDVar1 + 0x30) == 0)) { + _lock(0xd); + ptVar2 = *(pthreadmbcinfo *)(pDVar1 + 0x2e); + if (ptVar2 != (pthreadmbcinfo)PTR_DAT_18006d470) { + if (ptVar2 != (pthreadmbcinfo)0x0) { + LOCK(); + ptVar2->refcount = ptVar2->refcount + -1; + UNLOCK(); + if ((ptVar2->refcount == 0) && (ptVar2 != (pthreadmbcinfo)&DAT_18006d040)) { + FUN_180034a70(ptVar2); + } + } + *(undefined **)(pDVar1 + 0x2e) = PTR_DAT_18006d470; + ptVar2 = (pthreadmbcinfo)PTR_DAT_18006d470; + LOCK(); + *(int *)PTR_DAT_18006d470 = *(int *)PTR_DAT_18006d470 + 1; + UNLOCK(); + } + FUN_180045470(0xd); + } + else { + ptVar2 = *(pthreadmbcinfo *)(pDVar1 + 0x2e); + } + if (ptVar2 == (pthreadmbcinfo)0x0) { + _amsg_exit(0x20); + } + return ptVar2; +} + + +================================================================== + +### EXPORT FUNC 180037030 (25 bytes) name=FUN_180037030 + +void FUN_180037030(void) + +{ + FUN_180045470(0xd); + return; +} + + +================================================================== + +### EXPORT FUNC 180037050 (266 bytes) name=FUN_180037050 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +UINT FUN_180037050(UINT param_1) + +{ + undefined *puVar1; + UINT UVar2; + DWORD *pDVar3; + pthreadlocinfo ptVar4; + bool bVar5; + + pDVar3 = FUN_1800380a0(); + ptVar4 = *(pthreadlocinfo *)(pDVar3 + 0x30); + puVar1 = *(undefined **)(pDVar3 + 0x2e); + if ((ptVar4 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + ptVar4 = __updatetlocinfo(); + } + if ((puVar1 != PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + __updatetmbcinfo(); + } + bVar5 = (pDVar3[0x32] & 2) == 0; + if (bVar5) { + pDVar3[0x32] = pDVar3[0x32] | 2; + } + DAT_180072dc0 = 0; + if (param_1 == 0xfffffffe) { + DAT_180072dc0 = 1; + UVar2 = GetOEMCP(); + } + else if (param_1 == 0xfffffffd) { + DAT_180072dc0 = 1; + UVar2 = GetACP(); + } + else { + if (param_1 != 0xfffffffc) { + if (!bVar5) { + DAT_180072dc0 = 0; + return param_1; + } + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + return param_1; + } + UVar2 = ptVar4->lc_codepage; + DAT_180072dc0 = 1; + } + if (bVar5) { + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + } + return UVar2; +} + + +================================================================== + +### EXPORT FUNC 180037160 (956 bytes) name=FUN_180037160 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 FUN_180037160(UINT param_1,longlong param_2) + +{ + byte bVar1; + byte bVar2; + int iVar3; + UINT CodePage; + BOOL BVar4; + UINT *pUVar5; + byte *pbVar6; + undefined8 uVar7; + uint uVar8; + undefined1 *puVar9; + byte *pbVar11; + BYTE *pBVar12; + undefined4 uVar13; + longlong lVar14; + ulonglong *puVar15; + byte *pbVar16; + byte *pbVar17; + ulonglong uVar18; + undefined1 auStack_68 [32]; + _cpinfo local_48; + ulonglong local_30; + ulonglong uVar10; + + local_30 = DAT_18006cea0 ^ (ulonglong)auStack_68; + CodePage = FUN_180037050(param_1); + if (CodePage == 0) { + lVar14 = 0x101; + FUN_1800357d0((ulonglong *)(param_2 + 0x1c),0,0x101); + *(undefined4 *)(param_2 + 4) = 0; + *(undefined4 *)(param_2 + 8) = 0; + *(undefined4 *)(param_2 + 0xc) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + puVar15 = (ulonglong *)(param_2 + 0x1c); + do { + lVar14 = lVar14 + -1; + *(undefined1 *)puVar15 = + *(undefined1 *)(((longlong)&DAT_18006d040 - param_2) + (longlong)puVar15); + puVar15 = (ulonglong *)((longlong)puVar15 + 1); + } while (lVar14 != 0); + lVar14 = 0x80; + puVar9 = (undefined1 *)(param_2 + 0x11d); + do { + lVar14 = lVar14 + -1; + *puVar9 = puVar9[(longlong)&DAT_18006d040 - param_2]; + puVar9[1] = (puVar9 + 2)[0x18006d03f - param_2]; + puVar9 = puVar9 + 2; + } while (lVar14 != 0); + return 0; + } + uVar10 = 0; + uVar13 = 0; + pUVar5 = &DAT_18006d480; + uVar18 = uVar10; +LAB_180037230: + if (*pUVar5 != CodePage) goto code_r0x000180037238; + FUN_1800357d0((ulonglong *)(param_2 + 0x1c),0,0x101); + pbVar17 = &DAT_18006d478; + lVar14 = 4; + pbVar6 = &DAT_18006d490 + uVar18 * 0x30; + do { + bVar1 = *pbVar6; + pbVar16 = pbVar6; + while ((bVar1 != 0 && (pbVar16[1] != 0))) { + uVar10 = (ulonglong)*pbVar16; + if (*pbVar16 <= pbVar16[1]) { + pbVar11 = (byte *)(uVar10 + 0x1d + param_2); + do { + uVar8 = (int)uVar10 + 1; + uVar10 = (ulonglong)uVar8; + *pbVar11 = *pbVar11 | *pbVar17; + pbVar11 = pbVar11 + 1; + } while (uVar8 <= pbVar16[1]); + } + pbVar16 = pbVar16 + 2; + bVar1 = *pbVar16; + } + pbVar6 = pbVar6 + 8; + pbVar17 = pbVar17 + 1; + lVar14 = lVar14 + -1; + } while (lVar14 != 0); + *(UINT *)(param_2 + 4) = CodePage; + *(undefined4 *)(param_2 + 8) = 1; + if (CodePage == 0x3a4) { + uVar13 = 0x411; + } + else if (CodePage == 0x3a8) { + uVar13 = 0x804; + } + else if (CodePage == 0x3b5) { + uVar13 = 0x412; + } + else if (CodePage == 0x3b6) { + uVar13 = 0x404; + } + *(undefined4 *)(param_2 + 0xc) = uVar13; + *(undefined2 *)(param_2 + 0x10) = *(undefined2 *)(uVar18 * 0x30 + 0x18006d484); + *(undefined2 *)(param_2 + 0x12) = *(undefined2 *)(uVar18 * 0x30 + 0x18006d486); + *(undefined2 *)(param_2 + 0x14) = *(undefined2 *)(uVar18 * 0x30 + 0x18006d488); + *(undefined2 *)(param_2 + 0x16) = *(undefined2 *)(uVar18 * 0x30 + 0x18006d48a); + *(undefined2 *)(param_2 + 0x18) = *(undefined2 *)(uVar18 * 0x30 + 0x18006d48c); + *(undefined2 *)(param_2 + 0x1a) = *(undefined2 *)(uVar18 * 0x30 + 0x18006d48e); + goto LAB_1800374ef; +code_r0x000180037238: + uVar8 = (int)uVar10 + 1; + uVar10 = (ulonglong)uVar8; + uVar18 = uVar18 + 1; + pUVar5 = pUVar5 + 0xc; + if (4 < uVar8) goto code_r0x000180037248; + goto LAB_180037230; +code_r0x000180037248: + if (((CodePage == 65000) || (CodePage == 0xfde9)) || + (BVar4 = IsValidCodePage(CodePage & 0xffff), BVar4 == 0)) { +LAB_1800373d3: + uVar7 = 0xffffffff; + } + else { + BVar4 = GetCPInfo(CodePage,&local_48); + if (BVar4 == 0) { + if (DAT_180072dc0 == 0) goto LAB_1800373d3; + FUN_180036ca0(param_2); + } + else { + FUN_1800357d0((ulonglong *)(param_2 + 0x1c),0,0x101); + *(UINT *)(param_2 + 4) = CodePage; + *(undefined4 *)(param_2 + 0xc) = 0; + if (local_48.MaxCharSize < 2) { + *(undefined4 *)(param_2 + 8) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + } + else { + pBVar12 = local_48.LeadByte; + while ((local_48.LeadByte[0] != 0 && (bVar1 = pBVar12[1], bVar1 != 0))) { + bVar2 = *pBVar12; + if ((uint)bVar2 <= (uint)bVar1) { + pbVar6 = (byte *)((ulonglong)bVar2 + 0x1d + param_2); + uVar18 = (ulonglong)(((uint)bVar1 - (uint)bVar2) + 1); + do { + *pbVar6 = *pbVar6 | 4; + pbVar6 = pbVar6 + 1; + uVar18 = uVar18 - 1; + } while (uVar18 != 0); + } + pBVar12 = pBVar12 + 2; + local_48.LeadByte[0] = *pBVar12; + } + pbVar6 = (byte *)(param_2 + 0x1f); + lVar14 = 0x7f; + do { + pbVar6[-1] = pbVar6[-1] | 8; + *pbVar6 = *pbVar6 | 8; + pbVar6 = pbVar6 + 2; + lVar14 = lVar14 + -1; + } while (lVar14 != 0); + iVar3 = *(int *)(param_2 + 4); + if (iVar3 == 0x3a4) { + *(undefined4 *)(param_2 + 8) = 1; + *(undefined4 *)(param_2 + 0xc) = 0x411; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + } + else if (iVar3 == 0x3a8) { + *(undefined4 *)(param_2 + 8) = 1; + *(undefined4 *)(param_2 + 0xc) = 0x804; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + } + else if (iVar3 == 0x3b5) { + *(undefined4 *)(param_2 + 8) = 1; + *(undefined4 *)(param_2 + 0xc) = 0x412; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + } + else if (iVar3 == 0x3b6) { + *(undefined4 *)(param_2 + 8) = 1; + *(undefined4 *)(param_2 + 0xc) = 0x404; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + } + else { + *(undefined4 *)(param_2 + 8) = 1; + *(undefined4 *)(param_2 + 0xc) = 0; + *(undefined8 *)(param_2 + 0x10) = 0; + *(undefined4 *)(param_2 + 0x18) = 0; + } + } +LAB_1800374ef: + FUN_180036d50(param_2); + } + uVar7 = 0; + } + return uVar7; +} + + +================================================================== + +### EXPORT FUNC 180037520 (513 bytes) name=FUN_180037520 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_180037520(UINT param_1) + +{ + longlong lVar1; + int *piVar2; + undefined *puVar3; + UINT UVar4; + DWORD *pDVar5; + int *_Dst; + ulonglong uVar6; + int iVar7; + int iVar8; + ulonglong uVar9; + + uVar9 = 0xffffffff; + pDVar5 = FUN_1800380a0(); + __updatetmbcinfo(); + lVar1 = *(longlong *)(pDVar5 + 0x2e); + UVar4 = FUN_180037050(param_1); + if (UVar4 == *(UINT *)(lVar1 + 4)) { + uVar9 = 0; + } + else { + _Dst = (int *)FUN_180040de0(0x220); + if (_Dst != (int *)0x0) { + memcpy(_Dst,*(void **)(pDVar5 + 0x2e),0x220); + iVar8 = 0; + *_Dst = 0; + uVar6 = FUN_180037160(UVar4,(longlong)_Dst); + uVar9 = uVar6 & 0xffffffff; + if ((int)uVar6 == 0) { + piVar2 = *(int **)(pDVar5 + 0x2e); + LOCK(); + *piVar2 = *piVar2 + -1; + UNLOCK(); + if ((*piVar2 == 0) && (*(undefined4 **)(pDVar5 + 0x2e) != &DAT_18006d040)) { + FUN_180034a70(*(undefined4 **)(pDVar5 + 0x2e)); + } + *(int **)(pDVar5 + 0x2e) = _Dst; + LOCK(); + *_Dst = *_Dst + 1; + UNLOCK(); + if (((pDVar5[0x32] & 2) == 0) && ((DAT_18006d578 & 1) == 0)) { + _lock(0xd); + _DAT_180072dd4 = _Dst[1]; + _DAT_180072dd8 = _Dst[2]; + _DAT_180072ddc = _Dst[3]; + for (iVar7 = 0; iVar7 < 5; iVar7 = iVar7 + 1) { + *(undefined2 *)(&DAT_180072dc8 + (longlong)iVar7 * 2) = + *(undefined2 *)((longlong)_Dst + (longlong)iVar7 * 2 + 0x10); + } + for (iVar7 = 0; iVar7 < 0x101; iVar7 = iVar7 + 1) { + (&DAT_18006d260)[iVar7] = *(undefined1 *)((longlong)iVar7 + 0x1c + (longlong)_Dst); + } + for (; puVar3 = PTR_DAT_18006d470, iVar8 < 0x100; iVar8 = iVar8 + 1) { + (&DAT_18006d370)[iVar8] = *(undefined1 *)((longlong)iVar8 + 0x11d + (longlong)_Dst); + } + LOCK(); + *(int *)PTR_DAT_18006d470 = *(int *)PTR_DAT_18006d470 + -1; + UNLOCK(); + if ((*(int *)puVar3 == 0) && ((undefined4 *)PTR_DAT_18006d470 != &DAT_18006d040)) { + FUN_180034a70(PTR_DAT_18006d470); + } + LOCK(); + PTR_DAT_18006d470 = (undefined *)_Dst; + *_Dst = *_Dst + 1; + UNLOCK(); + FUN_180045470(0xd); + } + } + else if ((int)uVar6 == -1) { + if (_Dst != &DAT_18006d040) { + FUN_180034a70(_Dst); + } + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + } + } + } + return uVar9; +} + + +================================================================== + +### EXPORT FUNC 180037730 (25 bytes) name=FUN_180037730 + +void FUN_180037730(void) + +{ + FUN_180045470(0xd); + return; +} + + +================================================================== + +### EXPORT FUNC 180037750 (40 bytes) name=FUN_180037750 + +undefined8 FUN_180037750(void) + +{ + if (DAT_1800db6f8 == 0) { + FUN_180037520(0xfffffffd); + DAT_1800db6f8 = 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180037780 (392 bytes) name=FUN_180037780 + +void FUN_180037780(LPVOID param_1) + +{ + int *piVar1; + undefined **ppuVar2; + undefined8 *puVar3; + longlong lVar4; + + if ((((*(undefined ***)((longlong)param_1 + 0x128) != (undefined **)0x0) && + (*(undefined ***)((longlong)param_1 + 0x128) != &PTR_DAT_18006df60)) && + (*(int **)((longlong)param_1 + 0x110) != (int *)0x0)) && + (**(int **)((longlong)param_1 + 0x110) == 0)) { + piVar1 = *(int **)((longlong)param_1 + 0x120); + if ((piVar1 != (int *)0x0) && (*piVar1 == 0)) { + FUN_180034a70(piVar1); + __free_lconv_mon(*(longlong *)((longlong)param_1 + 0x128)); + } + piVar1 = *(int **)((longlong)param_1 + 0x118); + if ((piVar1 != (int *)0x0) && (*piVar1 == 0)) { + FUN_180034a70(piVar1); + __free_lconv_num(*(undefined8 **)((longlong)param_1 + 0x128)); + } + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x110)); + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x128)); + } + if ((*(int **)((longlong)param_1 + 0x130) != (int *)0x0) && + (**(int **)((longlong)param_1 + 0x130) == 0)) { + FUN_180034a70((LPVOID)(*(longlong *)((longlong)param_1 + 0x138) + -0xfe)); + FUN_180034a70((LPVOID)(*(longlong *)((longlong)param_1 + 0x148) + -0x80)); + FUN_180034a70((LPVOID)(*(longlong *)((longlong)param_1 + 0x150) + -0x80)); + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x130)); + } + ppuVar2 = *(undefined ***)((longlong)param_1 + 0x158); + if ((ppuVar2 != &PTR_DAT_18006d730) && (*(int *)(ppuVar2 + 0x2c) == 0)) { + __free_lc_time(ppuVar2); + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x158)); + } + puVar3 = (undefined8 *)((longlong)param_1 + 0x58); + lVar4 = 6; + do { + if ((((undefined *)puVar3[-2] != &DAT_18006d580) && + (piVar1 = (int *)*puVar3, piVar1 != (int *)0x0)) && (*piVar1 == 0)) { + FUN_180034a70(piVar1); + } + if (((puVar3[-1] != 0) && (piVar1 = (int *)puVar3[1], piVar1 != (int *)0x0)) && (*piVar1 == 0)) + { + FUN_180034a70(piVar1); + } + puVar3 = puVar3 + 4; + lVar4 = lVar4 + -1; + } while (lVar4 != 0); + FUN_180034a70(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180037910 (152 bytes) name=__addlocaleref + +/* Library Function - Single Match + __addlocaleref + + Library: Visual Studio 2005 Release */ + +void __addlocaleref(int *param_1) + +{ + int *piVar1; + int *piVar2; + longlong lVar3; + + LOCK(); + *param_1 = *param_1 + 1; + UNLOCK(); + piVar2 = *(int **)(param_1 + 0x44); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + 1; + UNLOCK(); + } + piVar2 = *(int **)(param_1 + 0x48); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + 1; + UNLOCK(); + } + piVar2 = *(int **)(param_1 + 0x46); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + 1; + UNLOCK(); + } + piVar2 = *(int **)(param_1 + 0x4c); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + 1; + UNLOCK(); + } + piVar2 = param_1 + 0x16; + lVar3 = 6; + do { + if ((*(undefined **)(piVar2 + -4) != &DAT_18006d580) && + (piVar1 = *(int **)piVar2, piVar1 != (int *)0x0)) { + LOCK(); + *piVar1 = *piVar1 + 1; + UNLOCK(); + } + if ((*(longlong *)(piVar2 + -2) != 0) && (piVar1 = *(int **)(piVar2 + 2), piVar1 != (int *)0x0)) + { + LOCK(); + *piVar1 = *piVar1 + 1; + UNLOCK(); + } + piVar2 = piVar2 + 8; + lVar3 = lVar3 + -1; + } while (lVar3 != 0); + LOCK(); + *(int *)(*(longlong *)(param_1 + 0x56) + 0x160) = + *(int *)(*(longlong *)(param_1 + 0x56) + 0x160) + 1; + UNLOCK(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800379b0 (163 bytes) name=__removelocaleref + +/* Library Function - Single Match + __removelocaleref + + Library: Visual Studio 2005 Release */ + +int * __removelocaleref(int *param_1) + +{ + int *piVar1; + int *piVar2; + longlong lVar3; + + if (param_1 != (int *)0x0) { + LOCK(); + *param_1 = *param_1 + -1; + UNLOCK(); + piVar2 = *(int **)(param_1 + 0x44); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + -1; + UNLOCK(); + } + piVar2 = *(int **)(param_1 + 0x48); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + -1; + UNLOCK(); + } + piVar2 = *(int **)(param_1 + 0x46); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + -1; + UNLOCK(); + } + piVar2 = *(int **)(param_1 + 0x4c); + if (piVar2 != (int *)0x0) { + LOCK(); + *piVar2 = *piVar2 + -1; + UNLOCK(); + } + piVar2 = param_1 + 0x16; + lVar3 = 6; + do { + if ((*(undefined **)(piVar2 + -4) != &DAT_18006d580) && + (piVar1 = *(int **)piVar2, piVar1 != (int *)0x0)) { + LOCK(); + *piVar1 = *piVar1 + -1; + UNLOCK(); + } + if ((*(longlong *)(piVar2 + -2) != 0) && + (piVar1 = *(int **)(piVar2 + 2), piVar1 != (int *)0x0)) { + LOCK(); + *piVar1 = *piVar1 + -1; + UNLOCK(); + } + piVar2 = piVar2 + 8; + lVar3 = lVar3 + -1; + } while (lVar3 != 0); + LOCK(); + *(int *)(*(longlong *)(param_1 + 0x56) + 0x160) = + *(int *)(*(longlong *)(param_1 + 0x56) + 0x160) + -1; + UNLOCK(); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180037a60 (91 bytes) name=_updatetlocinfoEx_nolock + +/* Library Function - Single Match + _updatetlocinfoEx_nolock + + Library: Visual Studio 2005 Release */ + +int * _updatetlocinfoEx_nolock(longlong *param_1,int *param_2) + +{ + int *piVar1; + int *piVar2; + + if ((param_2 != (int *)0x0) && (param_1 != (longlong *)0x0)) { + piVar1 = (int *)*param_1; + if (piVar1 != param_2) { + *param_1 = (longlong)param_2; + __addlocaleref(param_2); + if (piVar1 != (int *)0x0) { + piVar2 = piVar1; + __removelocaleref(piVar1); + if ((*piVar2 == 0) && (piVar2 != (int *)&DAT_18006d590)) { + FUN_180037780(piVar1); + } + } + } + return param_2; + } + return (int *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180037ac0 (117 bytes) name=__updatetlocinfo + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + __updatetlocinfo + + Library: Visual Studio 2005 Release */ + +pthreadlocinfo __cdecl __updatetlocinfo(void) + +{ + DWORD *pDVar1; + pthreadlocinfo ptVar2; + + pDVar1 = FUN_1800380a0(); + if (((_DAT_18006d578 & pDVar1[0x32]) == 0) || (*(longlong *)(pDVar1 + 0x30) == 0)) { + _lock(0xc); + ptVar2 = (pthreadlocinfo) + _updatetlocinfoEx_nolock((longlong *)(pDVar1 + 0x30),(int *)PTR_DAT_18006d6f0); + FUN_180045470(0xc); + } + else { + pDVar1 = FUN_1800380a0(); + ptVar2 = *(pthreadlocinfo *)(pDVar1 + 0x30); + } + if (ptVar2 == (pthreadlocinfo)0x0) { + _amsg_exit(0x20); + } + return ptVar2; +} + + +================================================================== + +### EXPORT FUNC 180037b40 (25 bytes) name=FUN_180037b40 + +void FUN_180037b40(void) + +{ + FUN_180045470(0xc); + return; +} + + +================================================================== + +### EXPORT FUNC 180037b60 (208 bytes) name=FUN_180037b60 + +INT_PTR FUN_180037b60(INT_PTR param_1) + +{ + ushort uVar1; + int iVar2; + PVOID pvVar3; + HMODULE hModule; + HMODULE pHVar4; + FARPROC pFVar5; + longlong lVar6; + char *pcVar7; + uint uVar8; + char *pcVar9; + char *pcVar10; + bool bVar11; + int local_res8 [2]; + + if ((DAT_18006d710 == 0xffffffff) || (pvVar3 = FlsGetValue(DAT_18006d710), pvVar3 == (PVOID)0x0)) + { + hModule = GetModuleHandleA("KERNEL32.DLL"); + if (hModule == (HMODULE)0x0) { + return param_1; + } + uVar8 = 0; + local_res8[0] = 0; + FUN_1800367c0(local_res8); + if (local_res8[0] < 6) { + pHVar4 = GetModuleHandleA((LPCSTR)0x0); + iVar2 = pHVar4[0xf].unused; + pcVar7 = (char *)((longlong)&pHVar4[6].unused + + (longlong)iVar2 + + (ulonglong)*(ushort *)((longlong)&pHVar4[5].unused + (longlong)iVar2)); + uVar1 = *(ushort *)((longlong)&pHVar4[1].unused + (longlong)iVar2 + 2); + bVar11 = uVar1 == 0; + if (!bVar11) { + do { + lVar6 = 8; + pcVar9 = ".mixcrt"; + pcVar10 = pcVar7; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + bVar11 = *pcVar9 == *pcVar10; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } while (bVar11); + if (bVar11) { + return param_1; + } + uVar8 = uVar8 + 1; + pcVar7 = pcVar7 + 0x28; + bVar11 = uVar8 == uVar1; + } while (uVar8 < uVar1); + } + } + pFVar5 = GetProcAddress(hModule,"EncodePointer"); + } + else { + pFVar5 = *(FARPROC *)((longlong)pvVar3 + 0x2a8); + } + if (pFVar5 != (FARPROC)0x0) { + param_1 = (*pFVar5)(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180037c30 (233 bytes) name=FUN_180037c30 + +INT_PTR FUN_180037c30(void) + +{ + ushort uVar1; + int iVar2; + PVOID pvVar3; + HMODULE hModule; + HMODULE pHVar4; + FARPROC pFVar5; + INT_PTR IVar6; + longlong lVar7; + uint uVar8; + char *pcVar9; + char *pcVar10; + char *pcVar11; + bool bVar12; + int local_res8 [2]; + + if ((DAT_18006d710 == 0xffffffff) || (pvVar3 = FlsGetValue(DAT_18006d710), pvVar3 == (PVOID)0x0)) + { + hModule = GetModuleHandleA("KERNEL32.DLL"); + if (hModule == (HMODULE)0x0) { + return 0; + } + local_res8[0] = 0; + FUN_1800367c0(local_res8); + if (local_res8[0] < 6) { + pHVar4 = GetModuleHandleA((LPCSTR)0x0); + uVar8 = 0; + iVar2 = pHVar4[0xf].unused; + pcVar11 = (char *)((longlong)&pHVar4[6].unused + + (longlong)iVar2 + + (ulonglong)*(ushort *)((longlong)&pHVar4[5].unused + (longlong)iVar2)); + uVar1 = *(ushort *)((longlong)&pHVar4[1].unused + (longlong)iVar2 + 2); + bVar12 = uVar1 == 0; + if (!bVar12) { + do { + lVar7 = 8; + pcVar9 = ".mixcrt"; + pcVar10 = pcVar11; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + bVar12 = *pcVar9 == *pcVar10; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } while (bVar12); + if (bVar12) { + return 0; + } + uVar8 = uVar8 + 1; + pcVar11 = pcVar11 + 0x28; + bVar12 = uVar8 == uVar1; + } while (uVar8 < uVar1); + } + } + pFVar5 = GetProcAddress(hModule,"EncodePointer"); + } + else { + pFVar5 = *(FARPROC *)((longlong)pvVar3 + 0x2a8); + } + if (pFVar5 == (FARPROC)0x0) { + return 0; + } + IVar6 = (*pFVar5)(0); + return IVar6; +} + + +================================================================== + +### EXPORT FUNC 180037d20 (208 bytes) name=FUN_180037d20 + +INT_PTR FUN_180037d20(INT_PTR param_1) + +{ + ushort uVar1; + int iVar2; + PVOID pvVar3; + HMODULE hModule; + HMODULE pHVar4; + FARPROC pFVar5; + longlong lVar6; + char *pcVar7; + uint uVar8; + char *pcVar9; + char *pcVar10; + bool bVar11; + int local_res8 [2]; + + if ((DAT_18006d710 == 0xffffffff) || (pvVar3 = FlsGetValue(DAT_18006d710), pvVar3 == (PVOID)0x0)) + { + hModule = GetModuleHandleA("KERNEL32.DLL"); + if (hModule == (HMODULE)0x0) { + return param_1; + } + uVar8 = 0; + local_res8[0] = 0; + FUN_1800367c0(local_res8); + if (local_res8[0] < 6) { + pHVar4 = GetModuleHandleA((LPCSTR)0x0); + iVar2 = pHVar4[0xf].unused; + pcVar7 = (char *)((longlong)&pHVar4[6].unused + + (longlong)iVar2 + + (ulonglong)*(ushort *)((longlong)&pHVar4[5].unused + (longlong)iVar2)); + uVar1 = *(ushort *)((longlong)&pHVar4[1].unused + (longlong)iVar2 + 2); + bVar11 = uVar1 == 0; + if (!bVar11) { + do { + lVar6 = 8; + pcVar9 = ".mixcrt"; + pcVar10 = pcVar7; + do { + if (lVar6 == 0) break; + lVar6 = lVar6 + -1; + bVar11 = *pcVar9 == *pcVar10; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } while (bVar11); + if (bVar11) { + return param_1; + } + uVar8 = uVar8 + 1; + pcVar7 = pcVar7 + 0x28; + bVar11 = uVar8 == uVar1; + } while (uVar8 < uVar1); + } + } + pFVar5 = GetProcAddress(hModule,"DecodePointer"); + } + else { + pFVar5 = *(FARPROC *)((longlong)pvVar3 + 0x2b0); + } + if (pFVar5 != (FARPROC)0x0) { + param_1 = (*pFVar5)(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180037df0 (7 bytes) name=FlsGetValue + +PVOID __stdcall FlsGetValue(DWORD dwFlsIndex) + +{ + PVOID pvVar1; + + /* WARNING: Could not recover jumptable at 0x000180037df0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = FlsGetValue(dwFlsIndex); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 180037e00 (7 bytes) name=FUN_180037e00 + +undefined4 FUN_180037e00(void) + +{ + return DAT_18006d710; +} + + +================================================================== + +### EXPORT FUNC 180037e10 (3 bytes) name=FUN_180037e10 + +undefined8 FUN_180037e10(void) + +{ + return 0; +} + + +================================================================== + +### EXPORT FUNC 180037e20 (7 bytes) name=FlsSetValue + +BOOL __stdcall FlsSetValue(DWORD dwFlsIndex,PVOID lpFlsData) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x000180037e20. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = FlsSetValue(dwFlsIndex,lpFlsData); + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 180037e30 (67 bytes) name=FUN_180037e30 + +void FUN_180037e30(void) + +{ + if (DAT_18006d710 != 0xffffffff) { + FlsFree(DAT_18006d710); + DAT_18006d710 = 0xffffffff; + } + if (DAT_18006d714 != 0xffffffff) { + TlsFree(DAT_18006d714); + DAT_18006d714 = 0xffffffff; + } + FUN_1800453d0(); + return; +} + + +================================================================== + +### EXPORT FUNC 180037e80 (364 bytes) name=FUN_180037e80 + +void FUN_180037e80(longlong param_1,longlong param_2) + +{ + ushort uVar1; + int iVar2; + HMODULE hModule; + HMODULE pHVar3; + FARPROC pFVar4; + longlong lVar5; + char *pcVar6; + uint uVar7; + char *pcVar8; + char *pcVar9; + bool bVar10; + int local_res8 [2]; + + hModule = GetModuleHandleA("KERNEL32.DLL"); + *(undefined **)(param_1 + 0xa0) = &DAT_18006d9c0; + *(undefined4 *)(param_1 + 0x1c) = 1; + if (hModule != (HMODULE)0x0) { + uVar7 = 0; + local_res8[0] = 0; + FUN_1800367c0(local_res8); + if (local_res8[0] < 6) { + pHVar3 = GetModuleHandleA((LPCSTR)0x0); + iVar2 = pHVar3[0xf].unused; + pcVar6 = (char *)((longlong)&pHVar3[6].unused + + (longlong)iVar2 + + (ulonglong)*(ushort *)((longlong)&pHVar3[5].unused + (longlong)iVar2)); + uVar1 = *(ushort *)((longlong)&pHVar3[1].unused + (longlong)iVar2 + 2); + bVar10 = uVar1 == 0; + if (!bVar10) { + do { + lVar5 = 8; + pcVar8 = ".mixcrt"; + pcVar9 = pcVar6; + do { + if (lVar5 == 0) break; + lVar5 = lVar5 + -1; + bVar10 = *pcVar8 == *pcVar9; + pcVar8 = pcVar8 + 1; + pcVar9 = pcVar9 + 1; + } while (bVar10); + if (bVar10) goto LAB_180037f5e; + uVar7 = uVar7 + 1; + pcVar6 = pcVar6 + 0x28; + bVar10 = uVar7 == uVar1; + } while (uVar7 < uVar1); + } + } + pFVar4 = GetProcAddress(hModule,"EncodePointer"); + *(FARPROC *)(param_1 + 0x2a8) = pFVar4; + pFVar4 = GetProcAddress(hModule,"DecodePointer"); + *(FARPROC *)(param_1 + 0x2b0) = pFVar4; + } +LAB_180037f5e: + *(undefined4 *)(param_1 + 200) = 1; + *(undefined1 *)(param_1 + 0x174) = 0x43; + *(undefined1 *)(param_1 + 0x1f7) = 0x43; + *(int **)(param_1 + 0xb8) = &DAT_18006d040; + LOCK(); + DAT_18006d040 = DAT_18006d040 + 1; + UNLOCK(); + _lock(0xc); + *(longlong *)(param_1 + 0xc0) = param_2; + if (param_2 == 0) { + *(undefined **)(param_1 + 0xc0) = PTR_DAT_18006d6f0; + } + __addlocaleref(*(int **)(param_1 + 0xc0)); + FUN_180045470(0xc); + return; +} + + +================================================================== + +### EXPORT FUNC 180037ff0 (25 bytes) name=FUN_180037ff0 + +void FUN_180037ff0(void) + +{ + FUN_180045470(0xc); + return; +} + + +================================================================== + +### EXPORT FUNC 180038010 (135 bytes) name=FUN_180038010 + +DWORD * FUN_180038010(void) + +{ + DWORD dwErrCode; + BOOL BVar1; + DWORD DVar2; + DWORD *lpFlsData; + + dwErrCode = GetLastError(); + lpFlsData = FlsGetValue(DAT_18006d710); + if (lpFlsData == (DWORD *)0x0) { + lpFlsData = FUN_180040e50(1,0x2d8); + if (lpFlsData != (DWORD *)0x0) { + BVar1 = FlsSetValue(DAT_18006d710,lpFlsData); + if (BVar1 == 0) { + FUN_180034a70(lpFlsData); + lpFlsData = (DWORD *)0x0; + } + else { + FUN_180037e80((longlong)lpFlsData,0); + DVar2 = GetCurrentThreadId(); + lpFlsData[2] = 0xffffffff; + lpFlsData[3] = 0xffffffff; + *lpFlsData = DVar2; + } + } + } + SetLastError(dwErrCode); + return lpFlsData; +} + + +================================================================== + +### EXPORT FUNC 1800380a0 (148 bytes) name=FUN_1800380a0 + +DWORD * FUN_1800380a0(void) + +{ + DWORD dwErrCode; + BOOL BVar1; + DWORD DVar2; + DWORD *lpFlsData; + + dwErrCode = GetLastError(); + lpFlsData = FlsGetValue(DAT_18006d710); + if (lpFlsData == (DWORD *)0x0) { + lpFlsData = FUN_180040e50(1,0x2d8); + if (lpFlsData != (DWORD *)0x0) { + BVar1 = FlsSetValue(DAT_18006d710,lpFlsData); + if (BVar1 == 0) { + FUN_180034a70(lpFlsData); + lpFlsData = (DWORD *)0x0; + } + else { + FUN_180037e80((longlong)lpFlsData,0); + DVar2 = GetCurrentThreadId(); + lpFlsData[2] = 0xffffffff; + lpFlsData[3] = 0xffffffff; + *lpFlsData = DVar2; + } + } + } + SetLastError(dwErrCode); + if (lpFlsData == (DWORD *)0x0) { + _amsg_exit(0x10); + } + return lpFlsData; +} + + +================================================================== + +### EXPORT FUNC 180038140 (297 bytes) name=FUN_180038140 + +void FUN_180038140(LPVOID param_1) + +{ + int *piVar1; + + if (param_1 != (LPVOID)0x0) { + if (*(LPVOID *)((longlong)param_1 + 0x38) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x38)); + } + if (*(LPVOID *)((longlong)param_1 + 0x48) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x48)); + } + if (*(LPVOID *)((longlong)param_1 + 0x58) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x58)); + } + if (*(LPVOID *)((longlong)param_1 + 0x68) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x68)); + } + if (*(LPVOID *)((longlong)param_1 + 0x78) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x78)); + } + if (*(LPVOID *)((longlong)param_1 + 0x80) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)((longlong)param_1 + 0x80)); + } + if (*(undefined **)((longlong)param_1 + 0xa0) != &DAT_18006d9c0) { + FUN_180034a70(*(undefined **)((longlong)param_1 + 0xa0)); + } + _lock(0xd); + piVar1 = *(int **)((longlong)param_1 + 0xb8); + if (piVar1 != (int *)0x0) { + LOCK(); + *piVar1 = *piVar1 + -1; + UNLOCK(); + if ((*piVar1 == 0) && (piVar1 != &DAT_18006d040)) { + FUN_180034a70(piVar1); + } + } + FUN_180045470(0xd); + _lock(0xc); + piVar1 = *(int **)((longlong)param_1 + 0xc0); + if (piVar1 != (int *)0x0) { + __removelocaleref(piVar1); + if (((piVar1 != (int *)PTR_DAT_18006d6f0) && (piVar1 != (int *)&DAT_18006d590)) && + (*piVar1 == 0)) { + FUN_180037780(piVar1); + } + } + FUN_180045470(0xc); + FUN_180034a70(param_1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180038270 (25 bytes) name=FUN_180038270 + +void FUN_180038270(void) + +{ + FUN_180045470(0xd); + return; +} + + +================================================================== + +### EXPORT FUNC 180038290 (25 bytes) name=FUN_180038290 + +void FUN_180038290(void) + +{ + FUN_180045470(0xc); + return; +} + + +================================================================== + +### EXPORT FUNC 1800382b0 (81 bytes) name=_freeptd + +/* Library Function - Single Match + _freeptd + + Library: Visual Studio 2005 Release */ + +void __cdecl _freeptd(_ptiddata _Ptd) + +{ + if (DAT_18006d710 != 0xffffffff) { + if (_Ptd == (_ptiddata)0x0) { + _Ptd = FlsGetValue(DAT_18006d710); + } + FlsSetValue(DAT_18006d710,(PVOID)0x0); + FUN_180038140(_Ptd); + } + if (DAT_18006d714 != 0xffffffff) { + TlsSetValue(DAT_18006d714,(LPVOID)0x0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180038310 (279 bytes) name=FUN_180038310 + +undefined8 FUN_180038310(void) + +{ + BOOL BVar1; + DWORD DVar2; + undefined8 uVar3; + DWORD *lpFlsData; + + _init_pointers(); + uVar3 = FUN_180045330(); + if ((int)uVar3 == 0) { + if (DAT_18006d710 != 0xffffffff) { + FlsFree(DAT_18006d710); + DAT_18006d710 = 0xffffffff; + } + } + else { + DAT_18006d710 = FlsAlloc(FUN_180038140); + if (DAT_18006d710 != 0xffffffff) { + lpFlsData = FUN_180040e50(1,0x2d8); + if ((lpFlsData != (DWORD *)0x0) && (BVar1 = FlsSetValue(DAT_18006d710,lpFlsData), BVar1 != 0)) + { + FUN_180037e80((longlong)lpFlsData,0); + DVar2 = GetCurrentThreadId(); + lpFlsData[2] = 0xffffffff; + lpFlsData[3] = 0xffffffff; + *lpFlsData = DVar2; + return 1; + } + if (DAT_18006d710 != 0xffffffff) { + FlsFree(DAT_18006d710); + DAT_18006d710 = 0xffffffff; + } + if (DAT_18006d714 != 0xffffffff) { + TlsFree(DAT_18006d714); + DAT_18006d714 = 0xffffffff; + } + FUN_1800453d0(); + return 0; + } + DAT_18006d710 = 0xffffffff; + } + if (DAT_18006d714 != 0xffffffff) { + TlsFree(DAT_18006d714); + DAT_18006d714 = 0xffffffff; + } + FUN_1800453d0(); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180038430 (8 bytes) name=FUN_180038430 + +void FUN_180038430(undefined8 param_1) + +{ + DAT_180072e08 = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 180038440 (157 bytes) name=FID_conflict:_invoke_watson + +/* Library Function - Multiple Matches With Different Base Names + void __cdecl _invoke_watson(unsigned short const * __ptr64,unsigned short const * + __ptr64,unsigned short const * __ptr64,unsigned int,unsigned __int64) + _invoke_watson + + Library: Visual Studio 2005 Release */ + +void __cdecl +FID_conflict__invoke_watson + (wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,uint param_4,uintptr_t param_5) + +{ + BOOL BVar1; + LONG LVar2; + HANDLE hProcess; + _EXCEPTION_POINTERS local_588; + EXCEPTION_RECORD local_578; + _CONTEXT local_4d8; + + RtlCaptureContext(&local_4d8); + FUN_1800357d0((ulonglong *)&local_578,0,0x98); + local_578.ExceptionCode = 0xc000000d; + local_588.ExceptionRecord = &local_578; + local_588.ContextRecord = &local_4d8; + BVar1 = IsDebuggerPresent(); + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); + LVar2 = UnhandledExceptionFilter(&local_588); + if ((LVar2 == 0) && (BVar1 == 0)) { + FUN_180045a30(); + } + hProcess = GetCurrentProcess(); + TerminateProcess(hProcess,0xc000000d); + return; +} + + +================================================================== + +### EXPORT FUNC 1800384e0 (258 bytes) name=FUN_1800384e0 + +void FUN_1800384e0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4, + undefined8 param_5) + +{ + BOOL BVar1; + LONG LVar2; + code *pcVar3; + HANDLE hProcess; + _EXCEPTION_POINTERS local_588; + EXCEPTION_RECORD local_578; + _CONTEXT local_4d8; + + pcVar3 = (code *)FUN_180037d20(DAT_180072e08); + if (pcVar3 == (code *)0x0) { + FUN_180045a30(); + RtlCaptureContext(&local_4d8); + FUN_1800357d0((ulonglong *)&local_578,0,0x98); + local_578.ExceptionCode = 0xc000000d; + local_588.ExceptionRecord = &local_578; + local_588.ContextRecord = &local_4d8; + BVar1 = IsDebuggerPresent(); + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); + LVar2 = UnhandledExceptionFilter(&local_588); + if ((LVar2 == 0) && (BVar1 == 0)) { + FUN_180045a30(); + } + hProcess = GetCurrentProcess(); + TerminateProcess(hProcess,0xc000000d); + } + else { + (*pcVar3)(param_1,param_2,param_3,param_4,param_5); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800385f0 (454 bytes) name=FUN_1800385f0 + +ulonglong FUN_1800385f0(undefined4 param_1,FILE *param_2) + +{ + byte bVar1; + uint uVar2; + uint uVar3; + DWORD *pDVar4; + undefined **ppuVar5; + undefined7 extraout_var; + longlong lVar6; + undefined *puVar7; + uint uVar8; + undefined4 local_res8 [2]; + + local_res8[0] = param_1; + uVar2 = FUN_180047880((longlong)param_2); + uVar8 = param_2->_flag; + if ((uVar8 & 0x82) == 0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 9; + param_2->_flag = param_2->_flag | 0x20; + return 0xffffffff; + } + if ((uVar8 & 0x40) != 0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x22; + param_2->_flag = param_2->_flag | 0x20; + return 0xffffffff; + } + uVar3 = 0; + if ((uVar8 & 1) != 0) { + param_2->_cnt = 0; + if ((uVar8 & 0x10) == 0) { + param_2->_flag = uVar8 | 0x20; + return 0xffffffff; + } + param_2->_ptr = param_2->_base; + param_2->_flag = uVar8 & 0xfffffffe; + } + uVar8 = param_2->_flag; + param_2->_cnt = 0; + param_2->_flag = uVar8 & 0xffffffef | 2; + if (((uVar8 & 0x10c) == 0) && + (((ppuVar5 = FUN_180047620(), param_2 != (FILE *)(ppuVar5 + 6) && + (ppuVar5 = FUN_180047620(), param_2 != (FILE *)(ppuVar5 + 0xc))) || + (bVar1 = FUN_1800475a0(uVar2), (int)CONCAT71(extraout_var,bVar1) == 0)))) { + _getbuf(param_2); + } + if ((param_2->_flag & 0x108U) == 0) { + uVar8 = 1; + uVar3 = FUN_1800473f0(uVar2,(WCHAR *)local_res8,1); + } + else { + uVar8 = *(int *)¶m_2->_ptr - *(int *)¶m_2->_base; + param_2->_ptr = (char *)((longlong)param_2->_base + 1); + param_2->_cnt = param_2->_bufsiz + -1; + if ((int)uVar8 < 1) { + if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) { + puVar7 = &DAT_18006d970; + } + else { + puVar7 = (undefined *) + ((ulonglong)(uVar2 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)(int)uVar2 >> 5]); + } + if (((puVar7[8] & 0x20) != 0) && (lVar6 = FUN_180046b10(uVar2,0,2), lVar6 == -1)) + goto LAB_180038793; + *param_2->_base = (byte)local_res8[0]; + } + else { + uVar3 = FUN_1800473f0(uVar2,(WCHAR *)param_2->_base,uVar8); + *param_2->_base = (byte)local_res8[0]; + } + } + if (uVar3 == uVar8) { + return (ulonglong)(byte)local_res8[0]; + } +LAB_180038793: + param_2->_flag = param_2->_flag | 0x20; + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 1800387c0 (139 bytes) name=FUN_1800387c0 + +void FUN_1800387c0(byte param_1,int param_2,FILE *param_3,int *param_4) + +{ + int *piVar1; + uint uVar2; + ulonglong uVar3; + + do { + if (param_2 < 1) { + return; + } + param_2 = param_2 + -1; + if (((param_3->_flag & 0x40) == 0) || (param_3->_base != (char *)0x0)) { + piVar1 = ¶m_3->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar3 = FUN_1800385f0((int)(char)param_1,param_3); + uVar2 = (uint)uVar3; + } + else { + *param_3->_ptr = param_1; + param_3->_ptr = param_3->_ptr + 1; + uVar2 = (uint)param_1; + } + if (uVar2 == 0xffffffff) { + *param_4 = -1; + return; + } + } + *param_4 = *param_4 + 1; + if (*param_4 == -1) { + return; + } + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 180038850 (3911 bytes) name=FUN_180038850 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint FUN_180038850(FILE *param_1,byte *param_2,longlong *param_3,WCHAR *param_4) + +{ + int *piVar1; + byte bVar2; + short *psVar3; + uint *puVar4; + WCHAR WVar5; + char cVar6; + ushort uVar7; + int iVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + DWORD *pDVar13; + undefined *puVar14; + undefined6 extraout_var_00; + undefined7 extraout_var; + code *pcVar15; + ulonglong uVar16; + longlong lVar17; + undefined *puVar18; + WCHAR *pWVar19; + WCHAR *pWVar20; + uint uVar21; + byte *pbVar22; + byte bVar23; + int iVar24; + bool bVar25; + undefined1 auStackY_318 [32]; + uint local_2d8; + uint local_2d4; + uint local_2d0; + int local_2cc; + int local_2c8; + uint local_2c4; + byte local_2c0; + char local_2bf; + WCHAR *local_2b8; + int local_2b0; + int local_2ac; + int local_2a8; + undefined4 local_2a4; + pthreadlocinfo local_2a0; + pthreadmbcinfo local_298; + DWORD *local_290; + char local_288; + undefined4 local_280; + WCHAR *local_278; + int local_270 [2]; + WCHAR *local_268; + byte *local_260; + ulonglong local_258 [63]; + undefined1 auStack_59 [9]; + ulonglong local_50; + + local_50 = DAT_18006cea0 ^ (ulonglong)auStackY_318; + uVar11 = 0; + uVar21 = 0; + local_2a4 = 0; + local_2d8 = 0; + local_2b0 = 0; + local_2d0 = 0; + local_2c4 = 0; + local_2a8 = 0; + local_2cc = 0; + local_288 = '\0'; + local_2b8 = param_4; + if (param_3 == (longlong *)0x0) { + local_290 = FUN_1800380a0(); + local_2a0 = *(pthreadlocinfo *)(local_290 + 0x30); + local_298 = *(pthreadmbcinfo *)(local_290 + 0x2e); + if ((local_2a0 != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_290[0x32]) == 0)) { + local_2a0 = __updatetlocinfo(); + } + if ((local_298 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_290[0x32]) == 0)) { + local_298 = __updatetmbcinfo(); + } + if ((local_290[0x32] & 2) == 0) { + local_290[0x32] = local_290[0x32] | 2; + local_288 = '\x01'; + } + } + else { + local_2a0 = (pthreadlocinfo)*param_3; + local_298 = (pthreadmbcinfo)param_3[1]; + } + if (param_1 == (FILE *)0x0) { + pDVar13 = FUN_180035b40(); + *pDVar13 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_288 != '\0') { + local_290[0x32] = local_290[0x32] & 0xfffffffd; + } + return 0xffffffff; + } + if ((param_1->_flag & 0x40) == 0) { + iVar8 = FUN_180047880((longlong)param_1); + puVar18 = &DAT_18006d970; + if ((iVar8 == -1) || (iVar8 = FUN_180047880((longlong)param_1), iVar8 == -2)) { + puVar14 = &DAT_18006d970; + } + else { + iVar8 = FUN_180047880((longlong)param_1); + lVar17 = (&DAT_1800db4e0)[(longlong)iVar8 >> 5]; + uVar9 = FUN_180047880((longlong)param_1); + puVar14 = (undefined *)((ulonglong)(uVar9 & 0x1f) * 0x50 + lVar17); + } + if ((puVar14[0x38] & 0x7f) == 0) { + iVar8 = FUN_180047880((longlong)param_1); + if ((iVar8 != -1) && (iVar8 = FUN_180047880((longlong)param_1), iVar8 != -2)) { + iVar8 = FUN_180047880((longlong)param_1); + lVar17 = (&DAT_1800db4e0)[(longlong)iVar8 >> 5]; + uVar9 = FUN_180047880((longlong)param_1); + puVar18 = (undefined *)((ulonglong)(uVar9 & 0x1f) * 0x50 + lVar17); + } + param_4 = local_2b8; + if ((puVar18[0x38] & 0x80) == 0) goto LAB_180038ab3; + } + pDVar13 = FUN_180035b40(); + *pDVar13 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar25 = local_288 == '\0'; + } + else { +LAB_180038ab3: + if (param_2 != (byte *)0x0) { + bVar23 = *param_2; + local_2ac = 0; + local_2d4 = 0; + local_2c8 = 0; + local_278 = (WCHAR *)0x0; + pWVar20 = local_268; + uVar9 = uVar11; + while (bVar23 != 0) { + pbVar22 = param_2 + 1; + if ((int)uVar21 < 0) break; + uVar10 = 0; + if ((byte)(bVar23 - 0x20) < 0x59) { + uVar10 = *(byte *)((longlong)&DAT_180057370 + (longlong)(char)bVar23) & 0xf; + } + local_2ac = (int)(char)(&DAT_180057390)[(longlong)local_2ac + (longlong)(int)uVar10 * 8] >> + 4; + local_260 = pbVar22; + switch(local_2ac) { + case 0: +switchD_180038bb4_caseD_0: + uVar10 = (uint)bVar23; + local_2cc = 0; + uVar7 = FUN_180047bb0((uint)bVar23,&local_2a0); + if ((int)CONCAT62(extraout_var_00,uVar7) != 0) { + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar16 = FUN_1800385f0((int)(char)bVar23,param_1); + uVar10 = (uint)uVar16; + } + else { + *param_1->_ptr = bVar23; + param_1->_ptr = param_1->_ptr + 1; + } + if (uVar10 == 0xffffffff) { + uVar21 = 0xffffffff; + } + else { + uVar21 = uVar21 + 1; + } + } + else { + uVar21 = uVar21 + 1; + } + bVar23 = *pbVar22; + pbVar22 = param_2 + 2; + if (bVar23 == 0) { +LAB_18003970a: + pDVar13 = FUN_180035b40(); + *pDVar13 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar25 = local_288 == '\0'; + goto LAB_180039735; + } + } + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar16 = FUN_1800385f0((int)(char)bVar23,param_1); + uVar10 = (uint)uVar16; + } + else { + *param_1->_ptr = bVar23; + param_1->_ptr = param_1->_ptr + 1; + uVar10 = (uint)bVar23; + } + if (uVar10 == 0xffffffff) { + local_2d4 = 0xffffffff; + local_260 = pbVar22; + uVar21 = 0xffffffff; + } + else { + local_2d4 = uVar21 + 1; + local_260 = pbVar22; + uVar21 = local_2d4; + } + } + else { + local_2d4 = uVar21 + 1; + local_260 = pbVar22; + uVar21 = local_2d4; + } + break; + case 1: + uVar11 = 0xffffffff; + local_280 = 0; + local_2a8 = 0; + local_2b0 = 0; + local_2c4 = 0; + local_2d0 = 0xffffffff; + local_2d8 = 0; + local_2cc = 0; + uVar9 = 0; + break; + case 2: + if (bVar23 == 0x20) { + local_2d8 = uVar9 | 2; + uVar9 = local_2d8; + } + else if (bVar23 == 0x23) { + local_2d8 = uVar9 | 0x80; + uVar9 = local_2d8; + } + else if (bVar23 == 0x2b) { + local_2d8 = uVar9 | 1; + uVar9 = local_2d8; + } + else if (bVar23 == 0x2d) { + local_2d8 = uVar9 | 4; + uVar9 = local_2d8; + } + else if (bVar23 == 0x30) { + local_2d8 = uVar9 | 8; + uVar9 = local_2d8; + } + break; + case 3: + if (bVar23 == 0x2a) { + local_2b0 = *(int *)param_4; + local_2b8 = param_4 + 4; + if (local_2b0 < 0) { + local_2d8 = uVar9 | 4; + local_2b0 = -local_2b0; + uVar9 = local_2d8; + } + } + else { + local_2b0 = (char)bVar23 + -0x30 + local_2b0 * 10; + } + break; + case 4: + local_2d0 = 0; + uVar11 = 0; + break; + case 5: + if (bVar23 == 0x2a) { + local_2d0 = *(uint *)param_4; + local_2b8 = param_4 + 4; + uVar11 = local_2d0; + if ((int)local_2d0 < 0) { + local_2d0 = 0xffffffff; + uVar11 = 0xffffffff; + } + } + else { + local_2d0 = (char)bVar23 + -0x30 + uVar11 * 10; + uVar11 = local_2d0; + } + break; + case 6: + if (bVar23 == 0x49) { + bVar2 = *pbVar22; + local_2d8 = uVar9 | 0x8000; + if ((bVar2 == 0x36) && (param_2[2] == 0x34)) { + local_2d8 = uVar9 | 0x8000; + local_260 = param_2 + 3; + uVar9 = local_2d8; + } + else if ((bVar2 == 0x33) && (param_2[2] == 0x32)) { + local_2d8 = uVar9 & 0xffff7fff; + local_260 = param_2 + 3; + uVar9 = local_2d8; + } + else { + uVar9 = local_2d8; + if (((((bVar2 != 100) && (bVar2 != 0x69)) && (bVar2 != 0x6f)) && + ((bVar2 != 0x75 && (bVar2 != 0x78)))) && (bVar2 != 0x58)) { + local_2ac = 0; + goto switchD_180038bb4_caseD_0; + } + } + } + else if (bVar23 == 0x68) { + local_2d8 = uVar9 | 0x20; + uVar9 = local_2d8; + } + else if (bVar23 == 0x6c) { + if (*pbVar22 == 0x6c) { + local_2d8 = uVar9 | 0x1000; + local_260 = param_2 + 2; + uVar9 = local_2d8; + } + else { + local_2d8 = uVar9 | 0x10; + uVar9 = local_2d8; + } + } + else if (bVar23 == 0x77) { + local_2d8 = uVar9 | 0x800; + uVar9 = local_2d8; + } + break; + case 7: + switch(bVar23) { + case 0x41: + case 0x45: + case 0x47: + local_280 = 1; + bVar23 = bVar23 + 0x20; + case 0x61: + case 0x65: + case 0x66: + case 0x67: + local_2d8 = uVar9 | 0x40; + iVar8 = 0x200; + pWVar20 = (WCHAR *)local_258; + if ((int)uVar11 < 0) { + uVar11 = 6; + local_2d0 = 6; + iVar24 = 0x200; + } + else { + iVar24 = iVar8; + if (uVar11 == 0) { + if (bVar23 == 0x67) { + uVar11 = 1; + local_2d0 = 1; + } + } + else { + if ((int)uVar11 < 0x201) { + if ((int)uVar11 < 0xa4) goto LAB_180039171; + } + else { + uVar11 = 0x200; + local_2d0 = 0x200; + } + iVar24 = uVar11 + 0x15d; + local_278 = (WCHAR *)FUN_180040de0((longlong)iVar24); + pWVar20 = local_278; + if (local_278 == (WCHAR *)0x0) { + uVar11 = 0xa3; + local_2d0 = 0xa3; + pWVar20 = (WCHAR *)local_258; + iVar24 = iVar8; + } + } + } +LAB_180039171: + local_268 = *(WCHAR **)local_2b8; + local_2b8 = local_2b8 + 4; + pcVar15 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc70); + (*pcVar15)(&local_268,pWVar20,(longlong)iVar24); + if (((uVar9 & 0x80) != 0) && (uVar11 == 0)) { + pcVar15 = (code *)FUN_180037d20(DAT_18006dc88); + (*pcVar15)(pWVar20,&local_2a0); + } + if ((bVar23 == 0x67) && ((uVar9 & 0x80) == 0)) { + pcVar15 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc80); + (*pcVar15)(pWVar20,&local_2a0); + } + if ((char)*pWVar20 == '-') { + local_2d8 = uVar9 | 0x140; + pWVar20 = (WCHAR *)((longlong)pWVar20 + 1); + } + lVar17 = -1; + pWVar19 = pWVar20; + do { + if (lVar17 == 0) break; + lVar17 = lVar17 + -1; + WVar5 = *pWVar19; + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1); + } while ((char)WVar5 != '\0'); + local_2c8 = ~(uint)lVar17 - 1; + uVar9 = local_2d8; + break; + case 0x42: + case 0x44: + case 0x46: + case 0x48: + case 0x49: + case 0x4a: + case 0x4b: + case 0x4c: + case 0x4d: + case 0x4e: + case 0x4f: + case 0x50: + case 0x51: + case 0x52: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x59: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x5e: + case 0x5f: + case 0x60: + case 0x62: + case 0x68: + case 0x6a: + case 0x6b: + case 0x6c: + case 0x6d: + case 0x71: + case 0x72: + case 0x74: + case 0x76: + case 0x77: + break; + case 0x43: + if ((uVar9 & 0x830) == 0) { + local_2d8 = uVar9 | 0x800; + uVar9 = local_2d8; + } + case 99: + if ((uVar9 & 0x810) == 0) { + local_2b8 = param_4 + 4; + local_2c8 = 1; + local_258[0]._0_1_ = (char)*param_4; + } + else { + local_2b8 = param_4 + 4; + iVar8 = FUN_180047b90(&local_2c8,local_258,0x200,*param_4); + if (iVar8 != 0) { + local_2a8 = 1; + pWVar20 = (WCHAR *)local_258; + break; + } + } + pWVar20 = (WCHAR *)local_258; + break; + case 0x53: + if ((uVar9 & 0x830) == 0) { + local_2d8 = uVar9 | 0x800; + uVar9 = local_2d8; + } + case 0x73: + pWVar19 = *(WCHAR **)param_4; + uVar10 = uVar11; + if (uVar11 == 0xffffffff) { + uVar10 = 0x7fffffff; + } + local_2b8 = param_4 + 4; + if ((uVar9 & 0x810) == 0) { + pWVar20 = pWVar19; + if (pWVar19 == (WCHAR *)0x0) { + pWVar19 = (WCHAR *)PTR_DAT_18006d718; + pWVar20 = (WCHAR *)PTR_DAT_18006d718; + } + for (; (uVar10 != 0 && (uVar10 = uVar10 - 1, (char)*pWVar19 != '\0')); + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1)) { + } + local_2c8 = (int)pWVar19 - (int)pWVar20; + } + else { + if (pWVar19 == (WCHAR *)0x0) { + pWVar19 = (WCHAR *)PTR_DAT_18006d720; + } + local_2cc = 1; + for (pWVar20 = pWVar19; (uVar10 != 0 && (uVar10 = uVar10 - 1, *pWVar20 != L'\0')); + pWVar20 = pWVar20 + 1) { + } + local_2c8 = (int)((longlong)pWVar20 - (longlong)pWVar19 >> 1); + pWVar20 = pWVar19; + } + break; + case 0x58: + goto switchD_180038ef8_caseD_58; + case 0x5a: + psVar3 = *(short **)param_4; + local_2b8 = param_4 + 4; + if ((psVar3 == (short *)0x0) || + (pWVar20 = *(WCHAR **)(psVar3 + 4), pWVar20 == (WCHAR *)0x0)) { + lVar17 = -1; + pWVar20 = (WCHAR *)PTR_DAT_18006d718; + do { + if (lVar17 == 0) break; + lVar17 = lVar17 + -1; + WVar5 = *pWVar20; + pWVar20 = (WCHAR *)((longlong)pWVar20 + 1); + } while ((char)WVar5 != '\0'); + local_2c8 = ~(uint)lVar17 - 1; + pWVar20 = (WCHAR *)PTR_DAT_18006d718; + } + else if ((uVar9 >> 0xb & 1) == 0) { + local_2c8 = (int)*psVar3; + local_2cc = 0; + } + else { + local_2cc = 1; + local_2c8 = (int)*psVar3 / 2; + } + break; + case 100: + case 0x69: + local_2d8 = uVar9 | 0x40; + iVar8 = 10; + uVar9 = local_2d8; + goto LAB_1800392c9; + case 0x6e: + local_2b8 = param_4 + 4; + puVar4 = *(uint **)param_4; + bVar25 = FUN_1800478c0(); + if ((int)CONCAT71(extraout_var,bVar25) == 0) goto LAB_18003970a; + if ((uVar9 & 0x20) == 0) { + *puVar4 = uVar21; + local_2a8 = 1; + } + else { + *(short *)puVar4 = (short)uVar21; + local_2a8 = 1; + } + goto LAB_180039695; + case 0x6f: + iVar8 = 8; + if ((char)uVar9 < '\0') { + local_2d8 = uVar9 | 0x200; + uVar9 = local_2d8; + } + goto LAB_1800392c9; + case 0x70: + local_2d8 = uVar9 | 0x8000; + uVar11 = 0x10; + uVar9 = local_2d8; +switchD_180038ef8_caseD_58: + cVar6 = '\a'; + local_2a4 = 7; +LAB_180039288: + iVar8 = 0x10; + if ((char)uVar9 < '\0') { + local_2bf = cVar6 + 'Q'; + local_2c0 = 0x30; + local_2c4 = 2; + } + goto LAB_1800392c9; + case 0x75: + iVar8 = 10; +LAB_1800392c9: + if (uVar9 >> 0xf == 0) { + if ((uVar9 >> 0xc & 1) == 0) { + if ((uVar9 & 0x20) == 0) { + if ((uVar9 & 0x40) == 0) { + uVar16 = (ulonglong)*(uint *)param_4; + } + else { + uVar16 = (ulonglong)*(int *)param_4; + } + } + else if ((uVar9 & 0x40) == 0) { + uVar16 = (ulonglong)(ushort)*param_4; + } + else { + uVar16 = (ulonglong)*param_4; + } + } + else { + uVar16 = *(ulonglong *)param_4; + } + } + else { + uVar16 = *(ulonglong *)param_4; + } + local_2b8 = param_4 + 4; + if (((uVar9 & 0x40) != 0) && ((longlong)uVar16 < 0)) { + uVar16 = -uVar16; + uVar9 = uVar9 | 0x100; + local_2d8 = uVar9; + } + if ((uVar9 >> 0xf == 0) && ((uVar9 >> 0xc & 1) == 0)) { + uVar16 = uVar16 & 0xffffffff; + } + if ((int)uVar11 < 0) { + uVar11 = 1; + } + else { + local_2d8 = uVar9 & 0xfffffff7; + if (0x200 < (int)uVar11) { + uVar11 = 0x200; + } + } + pWVar19 = (WCHAR *)auStack_59; + if (uVar16 == 0) { + local_2c4 = 0; + } + while ((local_2d0 = uVar11 - 1, 0 < (int)uVar11 || (uVar16 != 0))) { + uVar11 = (int)(uVar16 % (ulonglong)(longlong)iVar8) + 0x30; + cVar6 = (char)uVar11; + if (0x39 < uVar11) { + cVar6 = cVar6 + (char)local_2a4; + } + *(char *)pWVar19 = cVar6; + pWVar19 = (WCHAR *)((longlong)pWVar19 + -1); + uVar16 = uVar16 / (ulonglong)(longlong)iVar8; + uVar11 = local_2d0; + } + local_2c8 = (int)auStack_59 - (int)pWVar19; + pWVar20 = (WCHAR *)((longlong)pWVar19 + 1); + uVar11 = local_2d0; + uVar9 = local_2d8; + if (((local_2d8 >> 9 & 1) != 0) && ((local_2c8 == 0 || (*(char *)pWVar20 != '0')))) { + local_2c8 = local_2c8 + 1; + *(undefined1 *)pWVar19 = 0x30; + pWVar20 = pWVar19; + } + break; + case 0x78: + cVar6 = '\''; + local_2a4 = 0x27; + goto LAB_180039288; + } + iVar8 = local_2cc; + if (local_2a8 == 0) { + if ((uVar9 & 0x40) != 0) { + if ((uVar9 >> 8 & 1) == 0) { + if ((uVar9 & 1) == 0) { + if ((uVar9 & 2) != 0) { + local_2c0 = 0x20; + local_2c4 = 1; + } + } + else { + local_2c0 = 0x2b; + local_2c4 = 1; + } + } + else { + local_2c0 = 0x2d; + local_2c4 = 1; + } + } + uVar21 = local_2c4; + iVar24 = (local_2b0 - local_2c8) - local_2c4; + if ((uVar9 & 0xc) == 0) { + FUN_1800387c0(0x20,iVar24,param_1,(int *)&local_2d4); + } + FUN_18003fce0(&local_2c0,uVar21,param_1,(int *)&local_2d4); + if (((uVar9 & 8) != 0) && ((uVar9 & 4) == 0)) { + FUN_1800387c0(0x30,iVar24,param_1,(int *)&local_2d4); + } + if ((iVar8 == 0) || + (pWVar19 = pWVar20, iVar8 = local_2c8, uVar21 = local_2d4, local_2c8 < 1)) { + FUN_18003fce0((byte *)pWVar20,local_2c8,param_1,(int *)&local_2d4); + uVar21 = local_2d4; + } + else { + do { + iVar8 = iVar8 + -1; + iVar12 = FUN_180047b90(local_270,(ulonglong *)(auStack_59 + 1),6,*pWVar19); + if ((iVar12 != 0) || (local_270[0] == 0)) { + uVar21 = 0xffffffff; + local_2d4 = 0xffffffff; + uVar11 = local_2d0; + goto LAB_180039695; + } + pbVar22 = auStack_59 + 1; + iVar12 = local_270[0]; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { +joined_r0x000180039563: + do { + if (iVar12 < 1) goto LAB_180039613; + bVar23 = *pbVar22; + iVar12 = iVar12 + -1; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar16 = FUN_1800385f0((int)(char)bVar23,param_1); + uVar11 = (uint)uVar16; + } + else { + *param_1->_ptr = bVar23; + param_1->_ptr = param_1->_ptr + 1; + uVar11 = (uint)bVar23; + } + if (uVar11 == 0xffffffff) { + local_2d4 = 0xffffffff; + } + else { + local_2d4 = uVar21 + 1; + } + } + else { + local_2d4 = uVar21 + 1; + } + uVar21 = local_2d4; + pbVar22 = pbVar22 + 1; + if (local_2d4 == 0xffffffff) { + pDVar13 = FUN_180035b40(); + if (*pDVar13 != 0x2a) goto LAB_180039613; + if (((param_1->_flag & 0x40) != 0) && (param_1->_base == (char *)0x0)) { + local_2d4 = 0; + uVar21 = local_2d4; + goto joined_r0x000180039563; + } + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar16 = FUN_1800385f0(0x3f,param_1); + if ((int)uVar16 == -1) { + local_2d4 = 0xffffffff; + uVar21 = local_2d4; + goto joined_r0x000180039563; + } + } + else { + *param_1->_ptr = '?'; + param_1->_ptr = param_1->_ptr + 1; + } + local_2d4 = 0; + uVar21 = local_2d4; + } + } while( true ); + } + local_2d4 = uVar21 + local_270[0]; + uVar21 = local_2d4; +LAB_180039613: + pWVar19 = pWVar19 + 1; + uVar9 = local_2d8; + } while (iVar8 != 0); + } + uVar11 = local_2d0; + if ((-1 < (int)uVar21) && ((uVar9 & 4) != 0)) { + FUN_1800387c0(0x20,iVar24,param_1,(int *)&local_2d4); + uVar11 = local_2d0; + uVar21 = local_2d4; + } + } +LAB_180039695: + uVar9 = local_2d8; + if (local_278 != (WCHAR *)0x0) { + FUN_180034a70(local_278); + local_278 = (WCHAR *)0x0; + } + } + param_2 = local_260; + param_4 = local_2b8; + bVar23 = *local_260; + } + if (local_288 == '\0') { + return uVar21; + } + local_290[0x32] = local_290[0x32] & 0xfffffffd; + return uVar21; + } + pDVar13 = FUN_180035b40(); + *pDVar13 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar25 = local_288 == '\0'; + } +LAB_180039735: + if (!bVar25) { + local_290[0x32] = local_290[0x32] & 0xfffffffd; + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180039830 (185 bytes) name=FUN_180039830 + +void FUN_180039830(WCHAR *param_1,int param_2,FILE *param_3,int *param_4) + +{ + WCHAR WVar1; + DWORD *pDVar2; + + if (((param_3->_flag & 0x40) == 0) || (param_3->_base != (char *)0x0)) { + while (0 < param_2) { + param_2 = param_2 + -1; + if ((((param_3->_flag & 0x40) == 0) || (param_3->_base != (char *)0x0)) && + (WVar1 = FUN_180047d70(*param_1,param_3), WVar1 == L'\xffff')) { + *param_4 = -1; + } + else { + *param_4 = *param_4 + 1; + } + param_1 = param_1 + 1; + if (*param_4 == -1) { + pDVar2 = FUN_180035b40(); + if (*pDVar2 != 0x2a) { + return; + } + if ((((param_3->_flag & 0x40) == 0) || (param_3->_base != (char *)0x0)) && + (WVar1 = FUN_180047d70(L'?',param_3), WVar1 == L'\xffff')) { + *param_4 = -1; + } + else { + *param_4 = *param_4 + 1; + } + } + } + } + else { + *param_4 = *param_4 + param_2; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800398f0 (3749 bytes) name=FUN_1800398f0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_1800398f0(FILE *param_1,WCHAR *param_2,longlong *param_3,WCHAR *param_4) + +{ + WCHAR WVar1; + short *psVar2; + int *piVar3; + bool bVar4; + char cVar5; + ushort uVar6; + short sVar7; + WCHAR WVar8; + int iVar9; + DWORD *pDVar10; + undefined6 extraout_var_00; + undefined7 extraout_var; + code *pcVar11; + uint uVar12; + longlong lVar13; + WCHAR *pWVar14; + ulonglong uVar15; + uint uVar16; + int iVar17; + char *pcVar18; + WCHAR *pWVar19; + ulonglong uVar20; + ulonglong uVar21; + ulonglong uVar22; + ulonglong uVar23; + uint uVar24; + int iVar25; + ulonglong uVar26; + uint uVar27; + ulonglong uVar28; + undefined1 auStackY_518 [32]; + uint local_4d8; + uint local_4d4; + uint local_4d0; + uint local_4cc; + uint local_4c8; + WCHAR *local_4c0; + int local_4b8; + WCHAR local_4b4; + short local_4b2; + WCHAR local_4b0 [2]; + byte local_4ac [4]; + int local_4a8; + undefined4 local_4a4; + pthreadlocinfo local_4a0; + pthreadmbcinfo local_498; + DWORD *local_490; + char local_488; + uint local_480; + undefined4 local_47c; + WCHAR *local_478; + WCHAR *local_470; + WCHAR *local_468 [2]; + WCHAR local_458 [255]; + undefined2 local_259; + ulonglong local_58; + + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_518; + uVar15 = 0; + local_4a4 = 0; + local_4d8 = 0; + local_4c8 = 0; + local_4d0 = 0; + local_4cc = 0; + local_4a8 = 0; + local_4b8 = 0; + local_488 = '\0'; + local_4c0 = param_4; + if (param_3 == (longlong *)0x0) { + local_490 = FUN_1800380a0(); + local_4a0 = *(pthreadlocinfo *)(local_490 + 0x30); + local_498 = *(pthreadmbcinfo *)(local_490 + 0x2e); + if ((*(pthreadlocinfo *)(local_490 + 0x30) != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_490[0x32]) == 0)) { + local_4a0 = __updatetlocinfo(); + } + if ((local_498 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_490[0x32]) == 0)) { + local_498 = __updatetmbcinfo(); + } + if ((local_490[0x32] & 2) == 0) { + local_490[0x32] = local_490[0x32] | 2; + local_488 = '\x01'; + } + } + else { + local_4a0 = (pthreadlocinfo)*param_3; + local_498 = (pthreadmbcinfo)param_3[1]; + } + if ((param_1 == (FILE *)0x0) || (param_2 == (WCHAR *)0x0)) { + pDVar10 = FUN_180035b40(); + *pDVar10 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_488 != '\0') { + local_490[0x32] = local_490[0x32] & 0xfffffffd; + } + uVar15 = 0xffffffff; + } + else { + WVar8 = *param_2; + local_4d4 = 0; + local_478 = (WCHAR *)0x0; + pWVar14 = local_468[0]; + uVar20 = uVar15; + uVar21 = uVar15; + uVar22 = uVar15; + uVar23 = uVar15; + uVar26 = uVar15; + uVar28 = uVar15; + if (WVar8 != L'\0') { + while( true ) { + uVar27 = (uint)uVar22; + uVar16 = (uint)uVar21; + pWVar19 = param_2 + 1; + iVar25 = (int)uVar15; + local_470 = pWVar19; + if (iVar25 < 0) break; + if ((ushort)(WVar8 + L'¢') < 0x59) { + uVar12 = *(byte *)((longlong)&DAT_180057370 + (ulonglong)(ushort)WVar8) & 0xf; + } + else { + uVar12 = 0; + } + local_480 = (int)(char)(&DAT_180057390)[(longlong)(int)uVar20 + (longlong)(int)uVar12 * 8] + >> 4; + uVar24 = (uint)uVar26; + switch((int)(char)(&DAT_180057390)[(longlong)(int)uVar20 + (longlong)(int)uVar12 * 8] >> 4) + { + case 0: +switchD_180039b42_caseD_0: + local_4b8 = 1; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(WVar8,param_1); + if (WVar8 == L'\xffff') { + uVar21 = (ulonglong)local_4d0; + uVar22 = (ulonglong)local_4cc; + uVar23 = (ulonglong)local_4c8; + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + } + else { + uVar21 = (ulonglong)local_4d0; + uVar22 = (ulonglong)local_4cc; + uVar23 = (ulonglong)local_4c8; + local_4d4 = iVar25 + 1; + uVar15 = (ulonglong)local_4d4; + } + } + else { + local_4d4 = iVar25 + 1; + uVar15 = (ulonglong)local_4d4; + } + break; + case 1: + uVar21 = 0xffffffff; + local_4d0 = 0xffffffff; + local_47c = 0; + local_4a8 = 0; + uVar23 = 0; + local_4c8 = 0; + uVar22 = 0; + local_4cc = 0; + uVar26 = 0; + local_4d8 = 0; + local_4b8 = 0; + break; + case 2: + if (WVar8 == L' ') { + local_4d8 = uVar24 | 2; + uVar26 = (ulonglong)local_4d8; + } + else if (WVar8 == L'#') { + local_4d8 = uVar24 | 0x80; + uVar26 = (ulonglong)local_4d8; + } + else if (WVar8 == L'+') { + local_4d8 = uVar24 | 1; + uVar26 = (ulonglong)local_4d8; + } + else if (WVar8 == L'-') { + local_4d8 = uVar24 | 4; + uVar26 = (ulonglong)local_4d8; + } + else if (WVar8 == L'0') { + local_4d8 = uVar24 | 8; + uVar26 = (ulonglong)local_4d8; + } + break; + case 3: + if (WVar8 == L'*') { + local_4c8 = *(uint *)param_4; + uVar23 = (ulonglong)local_4c8; + param_4 = param_4 + 4; + local_4c0 = param_4; + if ((int)local_4c8 < 0) { + local_4d8 = uVar24 | 4; + uVar26 = (ulonglong)local_4d8; + local_4c8 = -local_4c8; + uVar23 = (ulonglong)local_4c8; + } + } + else { + local_4c8 = ((ushort)WVar8 - 0x30) + (int)uVar23 * 10; + uVar23 = (ulonglong)local_4c8; + } + break; + case 4: + uVar21 = 0; + local_4d0 = 0; + break; + case 5: + if (WVar8 == L'*') { + local_4d0 = *(uint *)param_4; + uVar21 = (ulonglong)local_4d0; + param_4 = param_4 + 4; + local_4c0 = param_4; + if ((int)local_4d0 < 0) { + uVar21 = 0xffffffff; + local_4d0 = 0xffffffff; + } + } + else { + local_4d0 = ((ushort)WVar8 - 0x30) + uVar16 * 10; + uVar21 = (ulonglong)local_4d0; + } + break; + case 6: + if (WVar8 == L'I') { + WVar1 = *pWVar19; + local_4d8 = uVar24 | 0x8000; + uVar26 = (ulonglong)local_4d8; + if ((WVar1 == L'6') && (param_2[2] == L'4')) { + pWVar19 = param_2 + 3; + local_4d8 = uVar24 | 0x8000; + uVar26 = (ulonglong)local_4d8; + } + else if ((WVar1 == L'3') && (param_2[2] == L'2')) { + pWVar19 = param_2 + 3; + local_4d8 = uVar24 & 0xffff7fff; + uVar26 = (ulonglong)local_4d8; + } + else if ((((WVar1 != L'd') && (WVar1 != L'i')) && (WVar1 != L'o')) && + (((WVar1 != L'u' && (WVar1 != L'x')) && (WVar1 != L'X')))) { + local_480 = 0; + goto switchD_180039b42_caseD_0; + } + } + else if (WVar8 == L'h') { + local_4d8 = uVar24 | 0x20; + uVar26 = (ulonglong)local_4d8; + } + else if (WVar8 == L'l') { + if (*pWVar19 == L'l') { + pWVar19 = param_2 + 2; + local_4d8 = uVar24 | 0x1000; + uVar26 = (ulonglong)local_4d8; + } + else { + local_4d8 = uVar24 | 0x10; + uVar26 = (ulonglong)local_4d8; + } + } + else if (WVar8 == L'w') { + local_4d8 = uVar24 | 0x800; + uVar26 = (ulonglong)local_4d8; + } + break; + case 7: + switch(WVar8) { + case L'A': + case L'E': + case L'G': + local_47c = 1; + WVar8 = WVar8 + L' '; + case L'a': + case L'e': + case L'f': + case L'g': + local_4d8 = uVar24 | 0x40; + iVar25 = 0x200; + pWVar14 = local_458; + if ((int)uVar16 < 0) { + local_4d0 = 6; + iVar9 = 0x200; + } + else { + iVar9 = iVar25; + if (uVar16 == 0) { + if (WVar8 == L'g') { + local_4d0 = 1; + } + } + else { + if ((int)uVar16 < 0x201) { + if ((int)uVar16 < 0xa4) goto LAB_18003a0c3; + } + else { + uVar16 = 0x200; + local_4d0 = 0x200; + } + local_478 = (WCHAR *)FUN_180040de0((longlong)(int)(uVar16 + 0x15d)); + pWVar14 = local_478; + param_4 = local_4c0; + iVar9 = uVar16 + 0x15d; + if (local_478 == (WCHAR *)0x0) { + local_4d0 = 0xa3; + pWVar14 = local_458; + iVar9 = iVar25; + } + } + } +LAB_18003a0c3: + uVar16 = local_4d0; + local_468[0] = *(WCHAR **)param_4; + local_4c0 = param_4 + 4; + pcVar11 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc70); + (*pcVar11)(local_468,pWVar14,(longlong)iVar9,(int)(char)WVar8); + if (((uVar26 & 0x80) != 0) && (uVar16 == 0)) { + pcVar11 = (code *)FUN_180037d20(DAT_18006dc88); + (*pcVar11)(pWVar14,&local_4a0); + } + if ((WVar8 == L'g') && ((uVar26 & 0x80) == 0)) { + pcVar11 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc80); + (*pcVar11)(pWVar14,&local_4a0); + } + if ((char)*pWVar14 == '-') { + local_4d8 = uVar24 | 0x140; + pWVar14 = (WCHAR *)((longlong)pWVar14 + 1); + } + uVar26 = (ulonglong)local_4d8; + lVar13 = -1; + pWVar19 = pWVar14; + do { + if (lVar13 == 0) break; + lVar13 = lVar13 + -1; + WVar8 = *pWVar19; + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1); + } while ((char)WVar8 != '\0'); + uVar28 = (ulonglong)(~(uint)lVar13 - 1); + break; + case L'C': + if ((uVar26 & 0x830) == 0) { + local_4d8 = uVar24 | 0x20; + uVar26 = (ulonglong)local_4d8; + } + case L'c': + local_4b0[0] = *param_4; + local_4c0 = param_4 + 4; + local_4b8 = 1; + if ((uVar26 & 0x20) == 0) { + local_458[0] = local_4b0[0]; + } + else { + local_4ac[0] = (byte)local_4b0[0]; + local_4ac[1] = 0; + iVar25 = FUN_180047ff0(local_458,local_4ac, + (longlong)*(int *)((longlong)&local_4a0->pctype + 4),&local_4a0 + ); + if (iVar25 < 0) { + local_4a8 = 1; + uVar28 = 1; + pWVar14 = local_458; + break; + } + } + uVar28 = 1; + pWVar14 = local_458; + break; + case L'S': + if ((uVar26 & 0x830) == 0) { + local_4d8 = uVar24 | 0x20; + uVar26 = (ulonglong)local_4d8; + } + case L's': + pWVar19 = *(WCHAR **)param_4; + if (uVar16 == 0xffffffff) { + uVar21 = 0x7fffffff; + } + local_4c0 = param_4 + 4; + uVar16 = (uint)uVar21; + pWVar14 = pWVar19; + if ((uVar26 & 0x20) == 0) { + local_4b8 = 1; + if (pWVar19 == (WCHAR *)0x0) { + pWVar19 = (WCHAR *)PTR_DAT_18006d720; + pWVar14 = (WCHAR *)PTR_DAT_18006d720; + } + while (uVar16 != 0) { + uVar16 = (int)uVar21 - 1; + uVar21 = (ulonglong)uVar16; + if (*pWVar19 == L'\0') break; + pWVar19 = pWVar19 + 1; + } + uVar28 = (longlong)pWVar19 - (longlong)pWVar14 >> 1 & 0xffffffff; + } + else { + if (pWVar19 == (WCHAR *)0x0) { + pWVar14 = (WCHAR *)PTR_DAT_18006d718; + } + uVar28 = 0; + pWVar19 = pWVar14; + if (0 < (int)uVar16) { + do { + if ((byte)*pWVar19 == 0) break; + uVar6 = FUN_180047bb0((uint)(byte)*pWVar19,&local_4a0); + if ((int)CONCAT62(extraout_var_00,uVar6) != 0) { + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1); + } + uVar27 = (int)uVar28 + 1; + uVar28 = (ulonglong)uVar27; + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1); + } while ((int)uVar27 < (int)uVar16); + } + } + break; + case L'X': + goto switchD_180039e10_caseD_58; + case L'Z': + psVar2 = *(short **)param_4; + local_4c0 = param_4 + 4; + if ((psVar2 == (short *)0x0) || + (pWVar14 = *(WCHAR **)(psVar2 + 4), pWVar14 == (WCHAR *)0x0)) { + uVar21 = 0xffffffffffffffff; + pcVar18 = PTR_DAT_18006d718; + do { + if (uVar21 == 0) break; + uVar21 = uVar21 - 1; + cVar5 = *pcVar18; + pcVar18 = pcVar18 + 1; + } while (cVar5 != '\0'); + uVar28 = ~uVar21 - 1; + pWVar14 = (WCHAR *)PTR_DAT_18006d718; + } + else if ((uVar24 >> 0xb & 1) == 0) { + uVar28 = (ulonglong)(uint)(int)*psVar2; + local_4b8 = 0; + } + else { + local_4b8 = 1; + uVar28 = (ulonglong)(uint)((int)*psVar2 / 2); + } + break; + case L'd': + case L'i': + local_4d8 = uVar24 | 0x40; + uVar26 = (ulonglong)local_4d8; + iVar25 = 10; + goto LAB_18003a1fe; + case L'n': + local_4c0 = param_4 + 4; + piVar3 = *(int **)param_4; + bVar4 = FUN_1800478c0(); + if ((int)CONCAT71(extraout_var,bVar4) == 0) { + pDVar10 = FUN_180035b40(); + *pDVar10 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_488 != '\0') { + local_490[0x32] = local_490[0x32] & 0xfffffffd; + } + return 0xffffffff; + } + if ((uVar26 & 0x20) == 0) { + *piVar3 = iVar25; + local_4a8 = 1; + } + else { + *(short *)piVar3 = (short)uVar15; + local_4a8 = 1; + } + goto LAB_18003a653; + case L'o': + iVar25 = 8; + if ((char)uVar26 < '\0') { + local_4d8 = uVar24 | 0x200; + uVar26 = (ulonglong)local_4d8; + } + goto LAB_18003a1fe; + case L'p': + local_4d8 = uVar24 | 0x8000; + uVar26 = (ulonglong)local_4d8; + uVar16 = 0x10; +switchD_180039e10_caseD_58: + sVar7 = 7; + local_4a4 = 7; +LAB_18003a1c8: + iVar25 = 0x10; + if ((char)uVar26 < '\0') { + local_4b4 = L'0'; + uVar27 = 2; + local_4b2 = sVar7 + 0x51; + } + goto LAB_18003a1fe; + case L'u': + iVar25 = 10; +LAB_18003a1fe: + uVar12 = (uint)uVar26; + if (uVar12 >> 0xf == 0) { + if ((uVar12 >> 0xc & 1) == 0) { + if ((uVar26 & 0x20) == 0) { + if ((uVar26 & 0x40) == 0) { + uVar21 = (ulonglong)*(uint *)param_4; + } + else { + uVar21 = (ulonglong)(int)*(uint *)param_4; + } + } + else if ((uVar26 & 0x40) == 0) { + uVar21 = (ulonglong)(ushort)*param_4; + } + else { + uVar21 = (ulonglong)*param_4; + } + } + else { + uVar21 = *(ulonglong *)param_4; + } + } + else { + uVar21 = *(ulonglong *)param_4; + } + local_4c0 = param_4 + 4; + if (((uVar26 & 0x40) != 0) && ((longlong)uVar21 < 0)) { + uVar21 = -uVar21; + uVar12 = uVar12 | 0x100; + local_4d8 = uVar12; + } + if ((uVar12 >> 0xf == 0) && ((uVar12 >> 0xc & 1) == 0)) { + uVar21 = uVar21 & 0xffffffff; + } + if ((int)uVar16 < 0) { + uVar16 = 1; + } + else { + local_4d8 = uVar12 & 0xfffffff7; + if (0x200 < (int)uVar16) { + uVar16 = 0x200; + } + } + if (uVar21 == 0) { + uVar27 = 0; + } + pWVar19 = &local_259; + while ((local_4d0 = uVar16 - 1, 0 < (int)uVar16 || (uVar21 != 0))) { + uVar16 = (int)(uVar21 % (ulonglong)(longlong)iVar25) + 0x30; + cVar5 = (char)uVar16; + if (0x39 < uVar16) { + cVar5 = cVar5 + (char)local_4a4; + } + *(char *)pWVar19 = cVar5; + pWVar19 = (WCHAR *)((longlong)pWVar19 + -1); + uVar21 = uVar21 / (ulonglong)(longlong)iVar25; + uVar16 = local_4d0; + } + uVar26 = (ulonglong)local_4d8; + uVar16 = (int)&local_259 - (int)pWVar19; + pWVar14 = (WCHAR *)((longlong)pWVar19 + 1); + uVar28 = (ulonglong)uVar16; + local_4cc = uVar27; + if (((local_4d8 >> 9 & 1) != 0) && ((uVar16 == 0 || (*(char *)pWVar14 != '0')))) { + uVar28 = (ulonglong)(uVar16 + 1); + *(char *)pWVar19 = '0'; + pWVar14 = pWVar19; + } + break; + case L'x': + sVar7 = 0x27; + local_4a4 = 0x27; + goto LAB_18003a1c8; + } + if (local_4a8 == 0) { + if ((uVar26 & 0x40) != 0) { + if (((uint)uVar26 >> 8 & 1) == 0) { + if ((uVar26 & 1) == 0) { + if ((uVar26 & 2) != 0) { + local_4b4 = L' '; + local_4cc = 1; + } + } + else { + local_4b4 = L'+'; + local_4cc = 1; + } + } + else { + local_4b4 = L'-'; + local_4cc = 1; + } + } + iVar9 = (int)uVar28; + iVar25 = (local_4c8 - iVar9) - local_4cc; + if (((local_4d8 & 0xc) == 0) && (iVar17 = iVar25, 0 < iVar25)) { + while( true ) { + iVar17 = iVar17 + -1; + if ((((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) && + (WVar8 = FUN_180047d70(L' ',param_1), WVar8 == L'\xffff')) break; + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + if ((local_4d4 == 0xffffffff) || (iVar17 < 1)) goto LAB_18003a41d; + } + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + } +LAB_18003a41d: + pWVar19 = &local_4b4; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + if (0 < (int)local_4cc) { + uVar16 = local_4cc; + do { + uVar16 = uVar16 - 1; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(*pWVar19,param_1); + if (WVar8 == L'\xffff') { + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + } + else { + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + } + } + else { + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + } + pWVar19 = pWVar19 + 1; + if ((int)uVar15 == -1) { + pDVar10 = FUN_180035b40(); + if (*pDVar10 != 0x2a) break; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(L'?',param_1); + local_4d4 = (WVar8 != L'\xffff') - 1; + uVar15 = (ulonglong)local_4d4; + } + else { + local_4d4 = 0; + uVar15 = 0; + } + } + } while (0 < (int)uVar16); + } + } + else { + local_4d4 = (int)uVar15 + local_4cc; + uVar15 = (ulonglong)local_4d4; + } + if ((((local_4d8 & 8) != 0) && ((local_4d8 & 4) == 0)) && (iVar17 = iVar25, 0 < iVar25)) + { + while( true ) { + iVar17 = iVar17 + -1; + if ((((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) && + (WVar8 = FUN_180047d70(L'0',param_1), WVar8 == L'\xffff')) break; + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + if ((local_4d4 == 0xffffffff) || (iVar17 < 1)) goto LAB_18003a538; + } + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + } +LAB_18003a538: + if ((local_4b8 == 0) && (0 < iVar9)) { + uVar21 = uVar28 & 0xffffffff; + pWVar19 = pWVar14; + do { + uVar16 = (int)uVar21 - 1; + uVar21 = (ulonglong)uVar16; + iVar9 = FUN_180047ff0(local_4b0,(byte *)pWVar19, + (longlong)*(int *)((longlong)&local_4a0->pctype + 4), + &local_4a0); + if (iVar9 < 1) { + uVar26 = (ulonglong)local_4d8; + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + goto LAB_18003a653; + } + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(local_4b0[0],param_1); + if (WVar8 == L'\xffff') { + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + } + else { + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + } + } + else { + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + } + pWVar19 = (WCHAR *)((longlong)pWVar19 + (longlong)iVar9); + } while (0 < (int)uVar16); + } + else { + FUN_180039830(pWVar14,iVar9,param_1,(int *)&local_4d4); + uVar15 = (ulonglong)local_4d4; + } + if ((int)uVar15 < 0) { + uVar26 = (ulonglong)local_4d8; + } + else if ((local_4d8 & 4) == 0) { + uVar26 = (ulonglong)local_4d8; + } + else if (iVar25 < 1) { + uVar26 = (ulonglong)local_4d8; + } + else { + do { + iVar25 = iVar25 + -1; + if ((((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) && + (WVar8 = FUN_180047d70(L' ',param_1), WVar8 == L'\xffff')) { + uVar26 = (ulonglong)local_4d8; + uVar15 = 0xffffffff; + local_4d4 = 0xffffffff; + goto LAB_18003a653; + } + local_4d4 = (int)uVar15 + 1; + uVar15 = (ulonglong)local_4d4; + if (local_4d4 == 0xffffffff) { + uVar26 = (ulonglong)local_4d8; + goto LAB_18003a653; + } + } while (0 < iVar25); + uVar26 = (ulonglong)local_4d8; + } + } +LAB_18003a653: + if (local_478 == (WCHAR *)0x0) { + uVar21 = (ulonglong)local_4d0; + uVar22 = (ulonglong)local_4cc; + uVar23 = (ulonglong)local_4c8; + pWVar19 = local_470; + param_4 = local_4c0; + } + else { + FUN_180034a70(local_478); + uVar21 = (ulonglong)local_4d0; + uVar22 = (ulonglong)local_4cc; + uVar23 = (ulonglong)local_4c8; + local_478 = (WCHAR *)0x0; + pWVar19 = local_470; + param_4 = local_4c0; + } + } + WVar8 = *pWVar19; + if (WVar8 == L'\0') break; + param_2 = pWVar19; + uVar20 = (ulonglong)local_480; + } + } + if (local_488 != '\0') { + local_490[0x32] = local_490[0x32] & 0xfffffffd; + } + } + return uVar15; +} + + +================================================================== + +### EXPORT FUNC 18003a830 (3880 bytes) name=FUN_18003a830 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_18003a830(FILE *param_1,WCHAR *param_2,longlong *param_3,WCHAR *param_4) + +{ + WCHAR WVar1; + short *psVar2; + int *piVar3; + bool bVar4; + char cVar5; + ushort uVar6; + short sVar7; + WCHAR WVar8; + int iVar9; + DWORD *pDVar10; + ulonglong uVar11; + undefined6 extraout_var_00; + undefined7 extraout_var; + code *pcVar12; + uint uVar13; + longlong lVar14; + WCHAR *pWVar15; + ulonglong uVar16; + uint uVar17; + int iVar18; + char *pcVar19; + ulonglong uVar20; + WCHAR *pWVar21; + ulonglong uVar22; + uint uVar23; + uint uVar24; + int iVar25; + uint uVar26; + undefined1 auStackY_518 [32]; + uint local_4d8; + uint local_4d4; + uint local_4d0; + uint local_4cc; + uint local_4c8; + uint local_4c4; + WCHAR *local_4c0; + int local_4b8; + WCHAR local_4b4; + short local_4b2; + WCHAR local_4b0 [2]; + byte local_4ac [4]; + int local_4a8; + pthreadlocinfo local_4a0; + pthreadmbcinfo local_498; + DWORD *local_490; + char local_488; + undefined4 local_480; + undefined4 local_47c; + WCHAR *local_478; + WCHAR *local_470; + WCHAR *local_468 [2]; + WCHAR local_458 [255]; + undefined2 local_259; + ulonglong local_58; + + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_518; + uVar17 = 0; + local_480 = 0; + local_4d4 = 0; + local_4c4 = 0; + local_4cc = 0; + local_4c8 = 0; + local_4a8 = 0; + local_4b8 = 0; + local_488 = '\0'; + local_4c0 = param_4; + if (param_3 == (longlong *)0x0) { + local_490 = FUN_1800380a0(); + local_4a0 = *(pthreadlocinfo *)(local_490 + 0x30); + local_498 = *(pthreadmbcinfo *)(local_490 + 0x2e); + if ((*(pthreadlocinfo *)(local_490 + 0x30) != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_490[0x32]) == 0)) { + local_4a0 = __updatetlocinfo(); + } + if ((local_498 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_490[0x32]) == 0)) { + local_498 = __updatetmbcinfo(); + } + if ((local_490[0x32] & 2) == 0) { + local_490[0x32] = local_490[0x32] | 2; + local_488 = '\x01'; + } + } + else { + local_4a0 = (pthreadlocinfo)*param_3; + local_498 = (pthreadmbcinfo)param_3[1]; + } + if ((param_1 == (FILE *)0x0) || (param_2 == (WCHAR *)0x0)) { + pDVar10 = FUN_180035b40(); + *pDVar10 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_488 != '\0') { + local_490[0x32] = local_490[0x32] & 0xfffffffd; + } + uVar16 = 0xffffffff; + } + else { + uVar11 = 0; + WVar8 = *param_2; + local_4d0 = 0; + local_4d8 = 0; + local_478 = (WCHAR *)0x0; + pWVar15 = local_468[0]; + uVar16 = uVar11; + uVar20 = uVar11; + uVar26 = uVar17; + uVar23 = uVar17; + uVar24 = uVar17; + if (WVar8 != L'\0') { + do { + uVar22 = 0; + iVar25 = (int)uVar11; + pWVar21 = param_2 + 1; + iVar9 = (int)uVar16; + local_470 = pWVar21; + if (iVar9 < 0) break; + uVar13 = 0; + if ((ushort)(WVar8 + L'¢') < 0x59) { + uVar13 = (byte)"JanFebMarAprMayJunJulAugSepOctNovDec"[(ulonglong)(ushort)WVar8 + 0x10] & + 0xf; + } + local_4d8 = (uint)((byte)(&DAT_1800575a0) + [(longlong)(int)uVar13 * 9 + (longlong)(int)local_4d8] >> 4); + uVar11 = (ulonglong)local_4d8; + if (local_4d8 == 8) goto LAB_18003b6c7; + switch(uVar11) { + case 0: +switchD_18003aa8c_caseD_0: + local_4b8 = 1; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(WVar8,param_1); + uVar17 = local_4cc; + uVar26 = local_4c8; + uVar23 = local_4c4; + if (WVar8 == L'\xffff') { + uVar11 = (ulonglong)local_4d8; + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + } + else { + uVar11 = (ulonglong)local_4d8; + local_4d0 = iVar9 + 1; + uVar16 = (ulonglong)local_4d0; + } + } + else { + local_4d0 = iVar9 + 1; + uVar16 = (ulonglong)local_4d0; + } + break; + case 1: + uVar17 = 0xffffffff; + local_47c = 0; + local_4a8 = 0; + uVar23 = 0; + local_4c4 = 0; + uVar26 = 0; + local_4cc = 0xffffffff; + local_4c8 = 0; + uVar24 = 0; + local_4d4 = 0; + local_4b8 = 0; + break; + case 2: + if (WVar8 == L' ') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 2; + uVar24 = local_4d4; + } + else if (WVar8 == L'#') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 0x80; + uVar24 = local_4d4; + } + else if (WVar8 == L'+') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 1; + uVar24 = local_4d4; + } + else if (WVar8 == L'-') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 4; + uVar24 = local_4d4; + } + else if (WVar8 == L'0') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 8; + uVar24 = local_4d4; + } + else { + uVar11 = (ulonglong)local_4d8; + } + break; + case 3: + if (WVar8 == L'*') { + local_4c4 = *(uint *)param_4; + param_4 = param_4 + 4; + local_4c0 = param_4; + uVar23 = local_4c4; + if ((int)local_4c4 < 0) { + local_4d4 = uVar24 | 4; + local_4c4 = -local_4c4; + uVar24 = local_4d4; + uVar23 = local_4c4; + } + } + else { + local_4c4 = ((ushort)WVar8 - 0x30) + uVar23 * 10; + uVar11 = (ulonglong)local_4d8; + uVar23 = local_4c4; + } + break; + case 4: + uVar17 = 0; + local_4cc = 0; + break; + case 5: + if (WVar8 == L'*') { + local_4cc = *(uint *)param_4; + param_4 = param_4 + 4; + local_4c0 = param_4; + uVar17 = local_4cc; + if ((int)local_4cc < 0) { + local_4cc = 0xffffffff; + uVar17 = 0xffffffff; + } + } + else { + local_4cc = ((ushort)WVar8 - 0x30) + uVar17 * 10; + uVar11 = (ulonglong)local_4d8; + uVar17 = local_4cc; + } + break; + case 6: + if (WVar8 == L'I') { + WVar1 = *pWVar21; + local_4d4 = uVar24 | 0x8000; + if ((WVar1 == L'6') && (param_2[2] == L'4')) { + uVar11 = (ulonglong)local_4d8; + pWVar21 = param_2 + 3; + local_4d4 = uVar24 | 0x8000; + uVar24 = local_4d4; + } + else if ((WVar1 == L'3') && (param_2[2] == L'2')) { + uVar11 = (ulonglong)local_4d8; + pWVar21 = param_2 + 3; + local_4d4 = uVar24 & 0xffff7fff; + uVar24 = local_4d4; + } + else { + uVar24 = local_4d4; + if (WVar1 == L'd') { + uVar11 = (ulonglong)local_4d8; + } + else if (WVar1 == L'i') { + uVar11 = (ulonglong)local_4d8; + } + else if (WVar1 == L'o') { + uVar11 = (ulonglong)local_4d8; + } + else if (WVar1 == L'u') { + uVar11 = (ulonglong)local_4d8; + } + else if (WVar1 == L'x') { + uVar11 = (ulonglong)local_4d8; + } + else { + if (WVar1 != L'X') { + local_4d8 = 0; + uVar11 = uVar22; + goto switchD_18003aa8c_caseD_0; + } + uVar11 = (ulonglong)local_4d8; + } + } + } + else if (WVar8 == L'h') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 0x20; + uVar24 = local_4d4; + } + else if (WVar8 == L'l') { + if (*pWVar21 == L'l') { + uVar11 = (ulonglong)local_4d8; + pWVar21 = param_2 + 2; + local_4d4 = uVar24 | 0x1000; + uVar24 = local_4d4; + } + else { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 0x10; + uVar24 = local_4d4; + } + } + else if (WVar8 == L'w') { + uVar11 = (ulonglong)local_4d8; + local_4d4 = uVar24 | 0x800; + uVar24 = local_4d4; + } + else { + uVar11 = (ulonglong)local_4d8; + } + break; + case 7: + switch(WVar8) { + case L'A': + case L'E': + case L'G': + local_47c = 1; + WVar8 = WVar8 + L' '; + case L'a': + case L'e': + case L'f': + case L'g': + local_4d4 = uVar24 | 0x40; + iVar25 = 0x200; + pWVar15 = local_458; + if ((int)uVar17 < 0) { + local_4cc = 6; + iVar9 = 0x200; + } + else { + iVar9 = iVar25; + if (uVar17 == 0) { + if (WVar8 == L'g') { + local_4cc = 1; + } + } + else { + if ((int)uVar17 < 0x201) { + if ((int)uVar17 < 0xa4) goto LAB_18003b053; + } + else { + uVar17 = 0x200; + local_4cc = 0x200; + } + local_478 = (WCHAR *)FUN_180040de0((longlong)(int)(uVar17 + 0x15d)); + pWVar15 = local_478; + param_4 = local_4c0; + iVar9 = uVar17 + 0x15d; + if (local_478 == (WCHAR *)0x0) { + local_4cc = 0xa3; + pWVar15 = local_458; + iVar9 = iVar25; + } + } + } +LAB_18003b053: + uVar17 = local_4cc; + local_468[0] = *(WCHAR **)param_4; + local_4c0 = param_4 + 4; + pcVar12 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc70); + (*pcVar12)(local_468,pWVar15,(longlong)iVar9,(int)(char)WVar8); + if (((uVar24 & 0x80) != 0) && (uVar17 == 0)) { + pcVar12 = (code *)FUN_180037d20(DAT_18006dc88); + (*pcVar12)(pWVar15,&local_4a0); + } + if ((WVar8 == L'g') && ((uVar24 & 0x80) == 0)) { + pcVar12 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc80); + (*pcVar12)(pWVar15,&local_4a0); + } + if ((char)*pWVar15 == '-') { + local_4d4 = uVar24 | 0x140; + pWVar15 = (WCHAR *)((longlong)pWVar15 + 1); + } + lVar14 = -1; + pWVar21 = pWVar15; + do { + if (lVar14 == 0) break; + lVar14 = lVar14 + -1; + WVar8 = *pWVar21; + pWVar21 = (WCHAR *)((longlong)pWVar21 + 1); + } while ((char)WVar8 != '\0'); + uVar20 = (ulonglong)(~(uint)lVar14 - 1); + uVar24 = local_4d4; + break; + case L'C': + if ((uVar24 & 0x830) == 0) { + local_4d4 = uVar24 | 0x20; + uVar24 = local_4d4; + } + case L'c': + local_4b0[0] = *param_4; + local_4c0 = param_4 + 4; + local_4b8 = 1; + if ((uVar24 & 0x20) == 0) { + local_458[0] = local_4b0[0]; + } + else { + local_4ac[0] = (byte)local_4b0[0]; + local_4ac[1] = 0; + iVar25 = FUN_180047ff0(local_458,local_4ac, + (longlong)*(int *)((longlong)&local_4a0->pctype + 4),&local_4a0 + ); + if (iVar25 < 0) { + local_4a8 = 1; + uVar20 = 1; + pWVar15 = local_458; + break; + } + } + uVar20 = 1; + pWVar15 = local_458; + break; + case L'S': + if ((uVar24 & 0x830) == 0) { + local_4d4 = uVar24 | 0x20; + uVar24 = local_4d4; + } + case L's': + pWVar21 = *(WCHAR **)param_4; + if (uVar17 == 0xffffffff) { + uVar17 = 0x7fffffff; + } + local_4c0 = param_4 + 4; + pWVar15 = pWVar21; + if ((uVar24 & 0x20) == 0) { + local_4b8 = 1; + if (pWVar21 == (WCHAR *)0x0) { + pWVar21 = (WCHAR *)PTR_DAT_18006d720; + pWVar15 = (WCHAR *)PTR_DAT_18006d720; + } + for (; (uVar17 != 0 && (uVar17 = uVar17 - 1, *pWVar21 != L'\0')); + pWVar21 = pWVar21 + 1) { + } + uVar20 = (longlong)pWVar21 - (longlong)pWVar15 >> 1 & 0xffffffff; + } + else { + if (pWVar21 == (WCHAR *)0x0) { + pWVar15 = (WCHAR *)PTR_DAT_18006d718; + } + pWVar21 = pWVar15; + uVar20 = uVar22; + if (0 < (int)uVar17) { + do { + if ((byte)*pWVar21 == 0) break; + uVar6 = FUN_180047bb0((uint)(byte)*pWVar21,&local_4a0); + if ((int)CONCAT62(extraout_var_00,uVar6) != 0) { + pWVar21 = (WCHAR *)((longlong)pWVar21 + 1); + } + uVar26 = (int)uVar20 + 1; + uVar20 = (ulonglong)uVar26; + pWVar21 = (WCHAR *)((longlong)pWVar21 + 1); + } while ((int)uVar26 < (int)uVar17); + } + } + break; + case L'X': + goto switchD_18003ad9d_caseD_58; + case L'Z': + psVar2 = *(short **)param_4; + local_4c0 = param_4 + 4; + if ((psVar2 == (short *)0x0) || + (pWVar15 = *(WCHAR **)(psVar2 + 4), pWVar15 == (WCHAR *)0x0)) { + uVar20 = 0xffffffffffffffff; + pcVar19 = PTR_DAT_18006d718; + do { + if (uVar20 == 0) break; + uVar20 = uVar20 - 1; + cVar5 = *pcVar19; + pcVar19 = pcVar19 + 1; + } while (cVar5 != '\0'); + uVar20 = ~uVar20 - 1; + pWVar15 = (WCHAR *)PTR_DAT_18006d718; + } + else if ((uVar24 >> 0xb & 1) == 0) { + uVar20 = (ulonglong)(uint)(int)*psVar2; + local_4b8 = 0; + } + else { + local_4b8 = 1; + uVar20 = (ulonglong)(uint)((int)*psVar2 / 2); + } + break; + case L'd': + case L'i': + local_4d4 = uVar24 | 0x40; + iVar25 = 10; + uVar24 = local_4d4; + goto LAB_18003b191; + case L'n': + local_4c0 = param_4 + 4; + piVar3 = *(int **)param_4; + bVar4 = FUN_1800478c0(); + if ((int)CONCAT71(extraout_var,bVar4) != 0) { + if ((uVar24 & 0x20) == 0) { + *piVar3 = iVar9; + local_4a8 = 1; + } + else { + *(short *)piVar3 = (short)uVar16; + local_4a8 = 1; + } + goto LAB_18003b5e3; + } + goto LAB_18003b6c7; + case L'o': + iVar25 = 8; + if ((char)uVar24 < '\0') { + local_4d4 = uVar24 | 0x200; + uVar24 = local_4d4; + } + goto LAB_18003b191; + case L'p': + local_4d4 = uVar24 | 0x8000; + uVar17 = 0x10; + uVar24 = local_4d4; +switchD_18003ad9d_caseD_58: + sVar7 = 7; + local_480 = 7; +LAB_18003b15b: + iVar25 = 0x10; + if ((char)uVar24 < '\0') { + local_4b4 = L'0'; + uVar26 = 2; + local_4b2 = sVar7 + 0x51; + } + goto LAB_18003b191; + case L'u': + iVar25 = 10; +LAB_18003b191: + if (uVar24 >> 0xf == 0) { + if ((uVar24 >> 0xc & 1) == 0) { + if ((uVar24 & 0x20) == 0) { + if ((uVar24 & 0x40) == 0) { + uVar20 = (ulonglong)*(uint *)param_4; + } + else { + uVar20 = (ulonglong)(int)*(uint *)param_4; + } + } + else if ((uVar24 & 0x40) == 0) { + uVar20 = (ulonglong)(ushort)*param_4; + } + else { + uVar20 = (ulonglong)*param_4; + } + } + else { + uVar20 = *(ulonglong *)param_4; + } + } + else { + uVar20 = *(ulonglong *)param_4; + } + local_4c0 = param_4 + 4; + if (((uVar24 & 0x40) != 0) && ((longlong)uVar20 < 0)) { + uVar20 = -uVar20; + uVar24 = uVar24 | 0x100; + local_4d4 = uVar24; + } + if ((uVar24 >> 0xf == 0) && ((uVar24 >> 0xc & 1) == 0)) { + uVar20 = uVar20 & 0xffffffff; + } + if ((int)uVar17 < 0) { + uVar17 = 1; + } + else { + local_4d4 = uVar24 & 0xfffffff7; + if (0x200 < (int)uVar17) { + uVar17 = 0x200; + } + } + if (uVar20 == 0) { + uVar26 = 0; + } + pWVar21 = &local_259; + while ((local_4cc = uVar17 - 1, 0 < (int)uVar17 || (uVar20 != 0))) { + uVar17 = (int)(uVar20 % (ulonglong)(longlong)iVar25) + 0x30; + cVar5 = (char)uVar17; + if (0x39 < uVar17) { + cVar5 = cVar5 + (char)local_480; + } + *(char *)pWVar21 = cVar5; + pWVar21 = (WCHAR *)((longlong)pWVar21 + -1); + uVar20 = uVar20 / (ulonglong)(longlong)iVar25; + uVar17 = local_4cc; + } + uVar17 = (int)&local_259 - (int)pWVar21; + pWVar15 = (WCHAR *)((longlong)pWVar21 + 1); + uVar20 = (ulonglong)uVar17; + local_4c8 = uVar26; + uVar24 = local_4d4; + if (((local_4d4 >> 9 & 1) != 0) && ((uVar17 == 0 || (*(char *)pWVar15 != '0')))) { + *(char *)pWVar21 = '0'; + pWVar15 = pWVar21; + uVar20 = (ulonglong)(uVar17 + 1); + } + break; + case L'x': + sVar7 = 0x27; + local_480 = 0x27; + goto LAB_18003b15b; + } + if (local_4a8 == 0) { + if ((uVar24 & 0x40) != 0) { + if ((uVar24 >> 8 & 1) == 0) { + if ((uVar24 & 1) == 0) { + if ((uVar24 & 2) != 0) { + local_4b4 = L' '; + local_4c8 = 1; + } + } + else { + local_4b4 = L'+'; + local_4c8 = 1; + } + } + else { + local_4b4 = L'-'; + local_4c8 = 1; + } + } + iVar9 = (int)uVar20; + iVar25 = (local_4c4 - iVar9) - local_4c8; + if (((local_4d4 & 0xc) == 0) && (iVar18 = iVar25, 0 < iVar25)) { + while( true ) { + iVar18 = iVar18 + -1; + if ((((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) && + (WVar8 = FUN_180047d70(L' ',param_1), WVar8 == L'\xffff')) break; + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + if ((local_4d0 == 0xffffffff) || (iVar18 < 1)) goto LAB_18003b3ad; + } + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + } +LAB_18003b3ad: + pWVar21 = &local_4b4; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + if (0 < (int)local_4c8) { + uVar17 = local_4c8; + do { + uVar17 = uVar17 - 1; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(*pWVar21,param_1); + if (WVar8 == L'\xffff') { + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + } + else { + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + } + } + else { + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + } + pWVar21 = pWVar21 + 1; + if ((int)uVar16 == -1) { + pDVar10 = FUN_180035b40(); + if (*pDVar10 != 0x2a) break; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(L'?',param_1); + local_4d0 = (WVar8 != L'\xffff') - 1; + uVar16 = (ulonglong)local_4d0; + } + else { + local_4d0 = 0; + uVar16 = 0; + } + } + } while (0 < (int)uVar17); + } + } + else { + local_4d0 = (int)uVar16 + local_4c8; + uVar16 = (ulonglong)local_4d0; + } + if ((((local_4d4 & 8) != 0) && ((local_4d4 & 4) == 0)) && (iVar18 = iVar25, 0 < iVar25)) + { + while( true ) { + iVar18 = iVar18 + -1; + if ((((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) && + (WVar8 = FUN_180047d70(L'0',param_1), WVar8 == L'\xffff')) break; + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + if ((local_4d0 == 0xffffffff) || (iVar18 < 1)) goto LAB_18003b4c8; + } + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + } +LAB_18003b4c8: + uVar24 = local_4d4; + if ((local_4b8 == 0) && (0 < iVar9)) { + uVar11 = uVar20 & 0xffffffff; + pWVar21 = pWVar15; + do { + uVar17 = (int)uVar11 - 1; + uVar11 = (ulonglong)uVar17; + iVar9 = FUN_180047ff0(local_4b0,(byte *)pWVar21, + (longlong)*(int *)((longlong)&local_4a0->pctype + 4), + &local_4a0); + if (iVar9 < 1) { + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + goto LAB_18003b5e3; + } + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + WVar8 = FUN_180047d70(local_4b0[0],param_1); + if (WVar8 == L'\xffff') { + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + } + else { + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + } + } + else { + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + } + pWVar21 = (WCHAR *)((longlong)pWVar21 + (longlong)iVar9); + } while (0 < (int)uVar17); + } + else { + FUN_180039830(pWVar15,iVar9,param_1,(int *)&local_4d0); + uVar16 = (ulonglong)local_4d0; + } + if (((-1 < (int)uVar16) && ((local_4d4 & 4) != 0)) && (0 < iVar25)) { + while( true ) { + iVar25 = iVar25 + -1; + if ((((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) && + (WVar8 = FUN_180047d70(L' ',param_1), WVar8 == L'\xffff')) break; + local_4d0 = (int)uVar16 + 1; + uVar16 = (ulonglong)local_4d0; + if ((local_4d0 == 0xffffffff) || (iVar25 < 1)) goto LAB_18003b5e3; + } + uVar16 = 0xffffffff; + local_4d0 = 0xffffffff; + } + } +LAB_18003b5e3: + if (local_478 == (WCHAR *)0x0) { + uVar11 = (ulonglong)local_4d8; + pWVar21 = local_470; + param_4 = local_4c0; + uVar17 = local_4cc; + uVar23 = local_4c4; + uVar26 = local_4c8; + } + else { + FUN_180034a70(local_478); + uVar11 = (ulonglong)local_4d8; + local_478 = (WCHAR *)0x0; + pWVar21 = local_470; + param_4 = local_4c0; + uVar17 = local_4cc; + uVar23 = local_4c4; + uVar26 = local_4c8; + } + } + iVar25 = (int)uVar11; + WVar8 = *pWVar21; + param_2 = pWVar21; + } while (WVar8 != L'\0'); + if ((iVar25 != 0) && (iVar25 != 7)) { +LAB_18003b6c7: + pDVar10 = FUN_180035b40(); + *pDVar10 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_488 != '\0') { + local_490[0x32] = local_490[0x32] & 0xfffffffd; + } + return 0xffffffff; + } + } + if (local_488 != '\0') { + local_490[0x32] = local_490[0x32] & 0xfffffffd; + } + } + return uVar16; +} + + +================================================================== + +### EXPORT FUNC 18003b7f0 (70 bytes) name=FUN_18003b7f0 + +ulonglong FUN_18003b7f0(ushort param_1) + +{ + int iVar1; + undefined4 extraout_var; + + if ((param_1 & 0xff00) == 0) { + iVar1 = isdigit((uint)(byte)param_1); + if (iVar1 != 0) { + return CONCAT62((int6)(CONCAT44(extraout_var,iVar1) >> 0x10),param_1); + } + } + return (ulonglong)((param_1 & 0xffffffdf) - 7); +} + + +================================================================== + +### EXPORT FUNC 18003b840 (5621 bytes) name=FUN_18003b840 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_18003b840(FILE *param_1,WCHAR *param_2,longlong *param_3,undefined8 *param_4) + +{ + byte *pbVar1; + WCHAR WVar2; + FILE *pFVar3; + WCHAR WVar4; + WCHAR WVar5; + int iVar6; + int iVar7; + DWORD *pDVar8; + ulonglong uVar9; + WCHAR *pWVar10; + WCHAR *pWVar11; + WCHAR *pWVar12; + LPSTR pCVar13; + code *pcVar14; + char cVar15; + uint uVar16; + byte bVar17; + WCHAR WVar18; + ulonglong uVar19; + ulonglong uVar20; + char cVar21; + uint uVar22; + uint uVar23; + size_t _Size; + int iVar24; + int iVar25; + bool bVar26; + undefined1 auStackY_3e8 [32]; + char local_3b8; + int local_3b4; + char local_3ac; + byte local_3aa; + WCHAR *local_3a8; + int local_3a0; + char local_39c; + ulonglong *local_398; + int local_390; + int local_38c; + FILE *local_388; + WCHAR *local_380; + int local_378; + longlong local_370; + WCHAR local_368 [2]; + WCHAR local_364; + WCHAR *local_360; + uint local_358; + uint local_354; + int local_350; + undefined8 *local_348; + pthreadlocinfo local_340; + pthreadmbcinfo local_338; + DWORD *local_330; + char local_328; + undefined8 *local_320; + WCHAR local_318 [352]; + ulonglong local_58; + + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_3e8; + pWVar10 = local_318; + uVar9 = 0; + _Size = 0x15e; + local_378 = 0; + local_398 = (ulonglong *)0x0; + local_350 = 0; + local_388 = param_1; + local_380 = param_2; + local_348 = param_4; + if ((param_2 == (WCHAR *)0x0) || (param_1 == (FILE *)0x0)) { + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x16; + FUN_1800384e0(0,0,0,0,0); + } + else { + local_328 = '\0'; + if (param_3 == (longlong *)0x0) { + local_330 = FUN_1800380a0(); + local_340 = *(pthreadlocinfo *)(local_330 + 0x30); + local_338 = *(pthreadmbcinfo *)(local_330 + 0x2e); + if ((local_340 != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_330[0x32]) == 0)) { + local_340 = __updatetlocinfo(); + } + if ((local_338 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_330[0x32]) == 0)) { + local_338 = __updatetmbcinfo(); + } + if ((local_330[0x32] & 2) == 0) { + local_330[0x32] = local_330[0x32] | 2; + local_328 = '\x01'; + } + } + else { + local_340 = (pthreadlocinfo)*param_3; + local_338 = (pthreadmbcinfo)param_3[1]; + } + local_3b4 = 0; + WVar4 = *param_2; + local_3a8 = pWVar10; + if (WVar4 != L'\0') { +LAB_18003b9e4: + iVar6 = iswctype(WVar4,8); + if (iVar6 != 0) { + local_3b4 = local_3b4 + -1; + do { + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(param_1); + if (WVar4 == L'\xffff') goto LAB_18003ba40; + iVar6 = iswctype(WVar4,8); + } while (iVar6 != 0); + FUN_1800486b0(WVar4,param_1); +LAB_18003ba40: + do { + pWVar12 = param_2 + 1; + param_2 = param_2 + 1; + iVar6 = iswctype(*pWVar12,8); + } while (iVar6 != 0); + goto LAB_18003cb87; + } + if (*local_380 != L'%') { + local_3b4 = local_3b4 + 1; + WVar5 = FUN_180048480(param_1); + uVar9 = (ulonglong)(ushort)WVar5; + WVar4 = *local_380; + local_380 = local_380 + 1; + if (WVar4 == WVar5) goto LAB_18003cb6b; + if (WVar5 != L'\xffff') { + FUN_1800486b0(WVar5,param_1); + } + goto LAB_18003cd8d; + } + iVar24 = 0; + iVar6 = 0; + cVar15 = '\0'; + cVar21 = '\0'; + local_358 = 0; + local_364 = L'\0'; + local_390 = 0; + local_3ac = '\x01'; + local_38c = 0; + local_3a0 = 0; + local_3aa = 0; + local_39c = '\0'; + local_3b8 = '\0'; + local_354 = local_354 & 0xffffff00; + iVar25 = 0; + do { + WVar4 = local_380[1]; + local_380 = local_380 + 1; + if (((WVar4 & 0xff00U) == 0) && + (iVar7 = isdigit((ushort)WVar4 & 0xff), iVar6 = local_38c, iVar24 = local_3a0, iVar7 != 0 + )) { + local_38c = local_38c + 1; + local_3a0 = ((ushort)WVar4 - 0x30) + local_3a0 * 10; + pWVar10 = local_380; + iVar6 = local_38c; + iVar24 = local_3a0; + } + else { + pWVar10 = local_380; + switch(WVar4) { + case L'*': + local_3b8 = local_3b8 + '\x01'; + break; + default: +switchD_18003bb3c_caseD_2b: + cVar15 = cVar15 + '\x01'; + pWVar10 = local_380; + break; + case L'F': + case L'N': + break; + case L'I': + WVar4 = local_380[1]; + if ((WVar4 == L'6') && (local_380[2] == L'4')) { + iVar25 = iVar25 + 1; + local_370 = 0; + pWVar10 = local_380 + 2; + } + else if ((WVar4 != L'3') || (pWVar10 = local_380 + 2, local_380[2] != L'2')) { + if ((((WVar4 != L'd') && (WVar4 != L'i')) && (WVar4 != L'o')) && + ((WVar4 != L'x' && (WVar4 != L'X')))) { + iVar25 = iVar25 + 1; + local_370 = 0; + goto switchD_18003bb3c_caseD_2b; + } + iVar25 = iVar25 + 1; + local_370 = 0; + pWVar10 = local_380; + } + break; + case L'L': + local_3ac = local_3ac + '\x01'; + break; + case L'h': + local_3ac = local_3ac + -1; + cVar21 = cVar21 + -1; + break; + case L'l': + if (local_380[1] != L'l') { + local_3ac = local_3ac + '\x01'; + goto switchD_18003bb3c_caseD_77; + } + iVar25 = iVar25 + 1; + local_370 = 0; + pWVar10 = local_380 + 1; + break; + case L'w': +switchD_18003bb3c_caseD_77: + cVar21 = cVar21 + '\x01'; + } + } + local_380 = pWVar10; + uVar23 = local_358; + WVar4 = local_364; + pFVar3 = local_388; + } while (cVar15 == '\0'); + if (local_3b8 == '\0') { + local_320 = local_348; + local_360 = (WCHAR *)*local_348; + local_348 = local_348 + 1; + } + else { + local_360 = (WCHAR *)0x0; + } + cVar15 = '\0'; + local_364 = local_364 & 0xff00; + if (cVar21 == '\0') { + if ((*local_380 == L'S') || (*local_380 == L'C')) { + cVar21 = -1; + } + else { + cVar21 = '\x01'; + } + } + uVar16 = (ushort)*local_380 | 0x20; + local_358 = uVar16; + pWVar10 = local_3a8; + if (uVar16 == 0x6e) { +LAB_18003bd46: + pFVar3 = local_388; + WVar5 = (WCHAR)uVar9; + if ((iVar6 != 0) && (iVar24 == 0)) { + if (WVar5 != L'\xffff') { + FUN_1800486b0(WVar5,local_388); + } + goto LAB_18003cd8d; + } + uVar22 = local_354; + switch(uVar16) { + case 99: + if (iVar6 == 0) { + local_3a0 = iVar24 + 1; + local_38c = 1; + } + if (cVar21 < '\x01') { + local_3aa = 0; + } + else { + local_3aa = 0; + uVar22 = 1; + } + goto LAB_18003bf22; + case 100: + case 0x6f: + case 0x75: + goto switchD_18003bd73_caseD_64; + case 0x65: + case 0x66: + case 0x67: + uVar20 = 0; + if (WVar5 == L'-') { + uVar20 = 1; + *local_3a8 = L'-'; +LAB_18003c4da: + local_3a0 = local_3a0 + -1; + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + iVar6 = local_38c; + } + else if (WVar5 == L'+') goto LAB_18003c4da; + if (iVar6 == 0) { + local_3a0 = -1; + } + iVar6 = local_3a0; + if ((uVar9 & 0xff00) == 0) { + do { + WVar5 = (WCHAR)uVar9; + iVar24 = isdigit((uint)uVar9 & 0xff); + local_3a0 = iVar6; + if ((iVar24 == 0) || (local_3a0 = iVar6 + -1, iVar6 == 0)) break; + local_390 = local_390 + 1; + local_3a8[uVar20] = (short)(char)uVar9; + uVar20 = uVar20 + 1; + if (uVar20 == _Size) { + if (local_3a8 == local_318) { + pWVar10 = FUN_180040e50(_Size,4); + if (pWVar10 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_378 = 1; + memcpy(pWVar10,local_318,_Size); + local_3a8 = pWVar10; + } + else { + pWVar12 = FUN_180040f70(local_3a8,_Size,4); + pWVar10 = local_3a8; + if (pWVar12 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_3a8 = pWVar12; + } + } + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(pFVar3); + uVar9 = (ulonglong)(ushort)WVar4; + iVar6 = local_3a0; + } while ((WVar4 & 0xff00U) == 0); + } + local_368[0] = L'.'; + FUN_180047ff0(local_368,*(byte **)local_340->locale_name[0], + (longlong)*(int *)((longlong)&local_340->pctype + 4),&local_340); + iVar6 = local_3a0; + if (((uint)(ushort)local_368[0] == (int)(char)uVar9) && + (iVar24 = local_3a0 + -1, iVar6 = iVar24, local_3a0 != 0)) { + WVar5 = FUN_180048480(pFVar3); + uVar9 = uVar20 + 1; + local_3a8[uVar20] = local_368[0]; + uVar20 = uVar9; + pWVar12 = local_3a8; + if (uVar9 == _Size) { + if (local_3a8 == local_318) { + pWVar10 = FUN_180040e50(_Size,4); + if (pWVar10 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_378 = 1; + memcpy(pWVar10,local_318,_Size); + pWVar12 = pWVar10; + local_3a8 = pWVar10; + } + else { + pWVar12 = FUN_180040f70(local_3a8,_Size,4); + pWVar10 = local_3a8; + if (pWVar12 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_3a8 = pWVar12; + } + } + while( true ) { + uVar9 = (ulonglong)(ushort)WVar5; + local_3b4 = local_3b4 + 1; + iVar6 = iVar24; + if ((((WVar5 & 0xff00U) != 0) || (iVar25 = isdigit((ushort)WVar5 & 0xff), iVar25 == 0) + ) || (iVar6 = iVar24 + -1, iVar24 == 0)) break; + local_390 = local_390 + 1; + pWVar12[uVar20] = WVar5; + pWVar11 = pWVar12; + if (uVar20 + 1 == _Size) { + if (pWVar12 == local_318) { + pWVar11 = FUN_180040e50(_Size,4); + pWVar10 = pWVar11; + if (pWVar11 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_378 = 1; + memcpy(pWVar11,local_318,_Size); + local_3a8 = pWVar11; + } + else { + pWVar11 = FUN_180040f70(pWVar12,_Size,4); + pWVar10 = pWVar12; + if (pWVar11 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_3a8 = pWVar11; + } + } + WVar5 = FUN_180048480(pFVar3); + iVar24 = iVar6; + uVar20 = uVar20 + 1; + pWVar12 = pWVar11; + } + } + iVar24 = local_390; + WVar5 = (WCHAR)uVar9; + if (((local_390 != 0) && ((WVar5 == L'e' || (WVar5 == L'E')))) && + (iVar25 = iVar6 + -1, iVar6 != 0)) { + uVar19 = uVar20 + 1; + local_3a8[uVar20] = L'e'; + if (uVar19 == _Size) { + if (local_3a8 == local_318) { + pWVar10 = FUN_180040e50(_Size,4); + if (pWVar10 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_378 = 1; + memcpy(pWVar10,local_318,_Size); + local_3a8 = pWVar10; + } + else { + pWVar12 = FUN_180040f70(local_3a8,_Size,4); + pWVar10 = local_3a8; + if (pWVar12 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_3a8 = pWVar12; + } + } + WVar4 = FUN_180048480(pFVar3); + uVar9 = (ulonglong)(ushort)WVar4; + iVar7 = local_3b4 + 1; + if (WVar4 == L'-') { + local_3a8[uVar19] = L'-'; + uVar19 = uVar20 + 2; + if (uVar19 == _Size) { + WVar5 = L'-'; + if (local_3a8 == local_318) { + pWVar10 = FUN_180040e50(_Size,4); + if (pWVar10 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_378 = 1; + memcpy(pWVar10,local_318,_Size); + local_3a8 = pWVar10; + } + else { + pWVar12 = FUN_180040f70(local_3a8,_Size,4); + pWVar10 = local_3a8; + if (pWVar12 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_3a8 = pWVar12; + } + } +LAB_18003c903: + if (iVar25 == 0) { + iVar25 = 0; + } + else { + WVar4 = FUN_180048480(pFVar3); + uVar9 = (ulonglong)(ushort)WVar4; + iVar7 = local_3b4 + 2; + iVar25 = iVar6 + -2; + } + } + else if (WVar4 == L'+') goto LAB_18003c903; + local_3b4 = iVar7; + uVar20 = uVar19; + if ((uVar9 & 0xff00) == 0) { + do { + WVar5 = (WCHAR)uVar9; + iVar6 = isdigit((uint)uVar9 & 0xff); + uVar20 = uVar19; + if ((iVar6 == 0) || (iVar25 == 0)) break; + uVar20 = uVar19 + 1; + iVar24 = iVar24 + 1; + local_3a8[uVar19] = WVar5; + if (uVar20 == _Size) { + if (local_3a8 == local_318) { + pWVar10 = FUN_180040e50(_Size,4); + if (pWVar10 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_378 = 1; + memcpy(pWVar10,local_318,_Size); + local_3a8 = pWVar10; + } + else { + pWVar12 = FUN_180040f70(local_3a8,_Size,4); + pWVar10 = local_3a8; + if (pWVar12 == (WCHAR *)0x0) goto LAB_18003cd8d; + _Size = _Size * 2; + local_3a8 = pWVar12; + } + } + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(pFVar3); + uVar9 = (ulonglong)(ushort)WVar4; + uVar19 = uVar20; + iVar25 = iVar25 + -1; + } while ((WVar4 & 0xff00U) == 0); + } + } + local_3b4 = local_3b4 + -1; + WVar5 = (WCHAR)uVar9; + if (WVar5 != L'\xffff') { + FUN_1800486b0(WVar5,pFVar3); + } + pWVar10 = local_3a8; + if (iVar24 == 0) goto LAB_18003cd8d; + if (local_3b8 == '\0') { + local_3a8[uVar20] = L'\0'; + uVar20 = _Size * 2 + 2; + pCVar13 = (LPSTR)FUN_180040de0(uVar20); + if (pCVar13 == (LPSTR)0x0) goto LAB_18003cd8d; + iVar6 = FUN_180032b80((ulonglong *)0x0,pCVar13,uVar20,local_3a8,_Size * 2 + 1); + if ((iVar6 != 0) && ((iVar6 == 0x16 || (iVar6 == 0x22)))) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + pcVar14 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc78); + (*pcVar14)(local_3ac + -1,local_360,pCVar13,&local_340); + FUN_180034a70(pCVar13); + } + break; + default: + if (*local_380 != WVar5) { + if (WVar5 != L'\xffff') { + FUN_1800486b0(WVar5,local_388); + } + goto LAB_18003cd8d; + } + if (local_3b8 == '\0') { + local_348 = local_320; + } + break; + case 0x69: + uVar16 = 100; + case 0x78: + if (WVar5 == L'-') { + local_39c = '\x01'; +LAB_18003c0fd: + local_3a0 = iVar24 + -1; + if ((local_3a0 == 0) && (iVar6 != 0)) { + cVar15 = '\x01'; + } + else { + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + } + } + else if (WVar5 == L'+') goto LAB_18003c0fd; + iVar7 = local_390; + if ((short)uVar9 == 0x30) { + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + if ((WVar4 == L'x') || (WVar4 == L'X')) { + local_3b4 = local_3b4 + 2; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + if ((local_38c != 0) && (local_3a0 = local_3a0 + -2, local_3a0 < 1)) { + cVar15 = cVar15 + '\x01'; + } + uVar16 = 0x78; + iVar7 = local_390; + } + else if (uVar16 == 0x78) { + if (WVar4 != L'\xffff') { + FUN_1800486b0(WVar4,local_388); + } + uVar9 = 0x30; + iVar7 = 1; + } + else { + if ((local_38c != 0) && (local_3a0 = local_3a0 + -1, local_3a0 == 0)) { + cVar15 = cVar15 + '\x01'; + } + uVar16 = 0x6f; + iVar7 = 1; + local_3b4 = local_3b4 + 1; + } + } + goto LAB_18003c255; + case 0x6e: + uVar23 = local_3b4; + if (local_3b8 != '\0') break; + goto LAB_18003c45d; + case 0x70: + local_3ac = '\x01'; + iVar25 = iVar25 + 1; + local_370 = 0; +switchD_18003bd73_caseD_64: + iVar7 = local_390; + if (WVar5 == L'-') { + local_39c = '\x01'; +LAB_18003c214: + local_3a0 = iVar24 + -1; + if ((local_3a0 == 0) && (iVar6 != 0)) { + cVar15 = '\x01'; + } + else { + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + iVar7 = local_390; + } + } + else { + if (WVar5 == L'+') goto LAB_18003c214; + local_39c = (char)local_390; + } +LAB_18003c255: + if (iVar25 == 0) { + if (cVar15 == '\0') { + while( true ) { + WVar4 = (WCHAR)uVar9; + if ((uVar16 == 0x78) || (uVar16 == 0x70)) break; + if (((uVar9 & 0xff00) != 0) || (iVar6 = isdigit((uint)uVar9 & 0xff), iVar6 == 0)) + goto LAB_18003c405; + if (uVar16 == 0x6f) { + if (0x37 < (ushort)WVar4) goto LAB_18003c405; + iVar6 = uVar23 << 3; + } + else { + iVar6 = uVar23 * 10; + } +LAB_18003c3d3: + iVar7 = iVar7 + 1; + uVar23 = iVar6 + -0x30 + (uint)(ushort)uVar9; + if ((local_38c != 0) && (local_3a0 = local_3a0 + -1, local_3a0 == 0)) + goto LAB_18003c420; + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + } + if (((uVar9 & 0xff00) == 0) && (iVar6 = isxdigit((uint)uVar9 & 0xff), iVar6 != 0)) { + iVar6 = uVar23 << 4; + uVar9 = FUN_18003b7f0(WVar4); + uVar9 = uVar9 & 0xffff; + goto LAB_18003c3d3; + } +LAB_18003c405: + local_3b4 = local_3b4 + -1; + if (WVar4 != L'\xffff') { + FUN_1800486b0(WVar4,local_388); + } + } +LAB_18003c420: + if (local_39c != '\0') { + uVar23 = -uVar23; + } + } + else { + if (cVar15 == '\0') { + while( true ) { + WVar4 = (WCHAR)uVar9; + if ((uVar16 == 0x78) || (uVar16 == 0x70)) break; + if (((uVar9 & 0xff00) != 0) || (iVar6 = isdigit((uint)uVar9 & 0xff), iVar6 == 0)) + goto LAB_18003c322; + if (uVar16 == 0x6f) { + if (0x37 < (ushort)WVar4) goto LAB_18003c322; + local_370 = local_370 << 3; + } + else { + local_370 = local_370 * 10; + } +LAB_18003c2e8: + iVar7 = iVar7 + 1; + local_370 = local_370 + ((int)uVar9 + -0x30); + if ((local_38c != 0) && (local_3a0 = local_3a0 + -1, local_3a0 == 0)) + goto LAB_18003c350; + local_3b4 = local_3b4 + 1; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + } + if (((uVar9 & 0xff00) == 0) && (iVar6 = isxdigit((uint)uVar9 & 0xff), iVar6 != 0)) { + local_370 = local_370 << 4; + uVar9 = FUN_18003b7f0(WVar4); + uVar9 = uVar9 & 0xffff; + goto LAB_18003c2e8; + } +LAB_18003c322: + local_3b4 = local_3b4 + -1; + if (WVar4 != L'\xffff') { + FUN_1800486b0(WVar4,local_388); + } + } +LAB_18003c350: + if (local_39c != '\0') { + local_370 = -local_370; + } + } + WVar5 = (WCHAR)uVar9; + if ((uVar16 == 0x46) || (iVar7 == 0)) goto LAB_18003cd8d; + if (local_3b8 == '\0') { +LAB_18003c45d: + if (iVar25 == 0) { + if (local_3ac == '\0') { + *local_360 = (WCHAR)uVar23; + } + else { + *(uint *)local_360 = uVar23; + } + } + else { + *(longlong *)local_360 = local_370; + } + } + break; + case 0x73: + if (cVar21 < '\x01') { + local_3aa = 0; + } + else { + uVar22 = 1; + } + goto LAB_18003bf22; + case 0x7b: + uVar22 = local_354 & 0xff; + if ('\0' < cVar21) { + uVar22 = 1; + } + pWVar11 = local_380 + 1; + pWVar12 = pWVar11; + if (*pWVar11 == L'^') { + local_3aa = 0xff; + pWVar12 = local_380 + 2; + } + local_380 = pWVar11; + if (local_398 == (ulonglong *)0x0) { + local_398 = (ulonglong *)FUN_180040de0(0x2000); + if (local_398 == (ulonglong *)0x0) goto LAB_18003cd8d; + local_350 = 1; + } + FUN_1800357d0(local_398,0,0x2000); + if ((uVar16 == 0x7b) && (*pWVar12 == L']')) { + WVar4 = L']'; + pWVar12 = pWVar12 + 1; + *(undefined1 *)((longlong)local_398 + 0xb) = 0x20; + } + WVar2 = *pWVar12; + while (WVar18 = WVar2, WVar18 != L']') { + pWVar11 = pWVar12 + 1; + if (((WVar18 == L'-') && (WVar4 != L'\0')) && (WVar2 = *pWVar11, WVar2 != L']')) { + pWVar11 = pWVar12 + 2; + WVar18 = WVar2; + if ((ushort)WVar4 < (ushort)WVar2) { + WVar18 = WVar4; + WVar4 = WVar2; + } + if ((ushort)WVar18 <= (ushort)WVar4) { + uVar20 = (ulonglong)(ushort)WVar18; + do { + bVar17 = (byte)WVar18; + uVar19 = uVar20 >> 3; + WVar18 = WVar18 + L'\x01'; + uVar20 = uVar20 + 1; + pbVar1 = (byte *)(uVar19 + (longlong)local_398); + *pbVar1 = *pbVar1 | '\x01' << (bVar17 & 7); + } while ((ushort)WVar18 <= (ushort)WVar4); + } + WVar18 = L'\0'; + } + else { + pbVar1 = (byte *)((ulonglong)((ushort)WVar18 >> 3) + (longlong)local_398); + *pbVar1 = *pbVar1 | '\x01' << ((byte)WVar18 & 7); + } + pWVar12 = pWVar11; + WVar4 = WVar18; + WVar2 = *pWVar11; + } + if (*pWVar12 == L'\0') goto LAB_18003cd8d; + if (uVar16 == 0x7b) { + local_380 = pWVar12; + } +LAB_18003bf22: + pWVar12 = local_360; + local_3b4 = local_3b4 + -1; + iVar6 = local_38c; + if (WVar5 != L'\xffff') { + FUN_1800486b0(WVar5,local_388); + iVar6 = local_38c; + } + while( true ) { + if ((iVar6 != 0) && (bVar26 = local_3a0 == 0, local_3a0 = local_3a0 + -1, bVar26)) + goto LAB_18003bfc2; + iVar24 = local_3b4 + 1; + WVar4 = FUN_180048480(local_388); + uVar9 = (ulonglong)(ushort)WVar4; + if (WVar4 == L'\xffff') break; + if (uVar16 != 99) { + if (uVar16 == 0x73) { + if (((8 < (ushort)WVar4) && ((ushort)WVar4 < 0xe)) || (WVar4 == L' ')) break; + } + else if ((uVar16 != 0x7b) || + (((uint)(int)(char)(*(byte *)((ulonglong)((ushort)WVar4 >> 3) + + (longlong)local_398) ^ local_3aa) >> + ((ushort)WVar4 & 7) & 1) == 0)) break; + } + local_3b4 = iVar24; + if (local_3b8 == '\0') { + if ((char)uVar22 == '\0') { + local_390 = 0; + iVar24 = FUN_180047b90(&local_390,(ulonglong *)local_360,5,WVar4); + if (iVar24 == 0) { + local_360 = (WCHAR *)((longlong)local_360 + (longlong)local_390); + } + else if ((iVar24 == 0x16) || (iVar24 == 0x22)) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + } + else { + *local_360 = WVar4; + local_360 = local_360 + 1; + } + } + else { + pWVar12 = pWVar12 + 1; + } + } + if (WVar4 != L'\xffff') { + FUN_1800486b0(WVar4,local_388); + } +LAB_18003bfc2: + WVar5 = (WCHAR)uVar9; + if (pWVar12 == local_360) goto LAB_18003cd8d; + if ((local_3b8 == '\0') && (uVar16 != 99)) { + if ((char)uVar22 == '\0') { + *(undefined1 *)local_360 = 0; + } + else { + *local_360 = L'\0'; + } + } + } + local_380 = local_380 + 1; + pWVar10 = local_3a8; + param_1 = local_388; +LAB_18003cb6b: + param_2 = local_380; + if (((short)uVar9 == -1) && + ((WVar5 = L'\xffff', *local_380 != L'%' || (local_380[1] != L'n')))) goto LAB_18003cd8d; +LAB_18003cb87: + local_380 = param_2; + WVar5 = (WCHAR)uVar9; + WVar4 = *local_380; + param_2 = local_380; + if (WVar4 == L'\0') goto LAB_18003cd8d; + goto LAB_18003b9e4; + } + if ((uVar16 == 99) || (uVar16 == 0x7b)) { + local_3b4 = local_3b4 + 1; + WVar5 = FUN_180048480(local_388); + } + else { + do { + local_3b4 = local_3b4 + 1; + WVar5 = FUN_180048480(pFVar3); + if (WVar5 == L'\xffff') break; + iVar6 = iswctype(WVar5,8); + } while (iVar6 != 0); + uVar16 = local_358; + cVar15 = (char)local_364; + } + uVar9 = (ulonglong)(ushort)WVar5; + iVar6 = local_38c; + iVar24 = local_3a0; + if (WVar5 != L'\xffff') goto LAB_18003bd46; + WVar5 = L'\xffff'; +LAB_18003cd8d: + if (local_350 == 1) { + FUN_180034a70(local_398); + } + if (local_378 == 1) { + FUN_180034a70(pWVar10); + } + if (WVar5 == L'\xffff') { + if (local_328 != '\0') { + local_330[0x32] = local_330[0x32] & 0xfffffffd; + } + goto LAB_18003ce1a; + } + } + if (local_328 != '\0') { + local_330[0x32] = local_330[0x32] & 0xfffffffd; + } + } +LAB_18003ce1a: + return (uint)local_58 ^ (uint)auStackY_3e8; +} + + +================================================================== + +### EXPORT FUNC 18003cf10 (812 bytes) name=FUN_18003cf10 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_18003cf10(LPWSTR param_1,byte *param_2,ulonglong param_3,undefined8 *param_4) + +{ + byte bVar1; + ushort uVar2; + int iVar3; + DWORD DVar4; + DWORD *pDVar5; + longlong lVar6; + undefined6 extraout_var; + uint cchWideChar; + uint uVar7; + ulonglong uVar8; + byte *pbVar9; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + uVar8 = 0; + if (param_1 != (LPWSTR)0x0) { + if (param_3 == 0) { + return 0; + } + if (param_3 != 0) { + *param_1 = L'\0'; + } + } + if ((param_2 == (byte *)0x0) || (0x7fffffff < param_3)) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffffffffffff; + } + local_10 = '\0'; + if (param_4 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_4; + local_20 = (pthreadmbcinfo)param_4[1]; + } + if (param_1 == (LPWSTR)0x0) { + if (*(int *)((longlong)&local_28->lc_category[0].locale + 4) == 0) { + uVar8 = 0xffffffffffffffff; + do { + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + bVar1 = *param_2; + param_2 = param_2 + 1; + } while (bVar1 != 0); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return ~uVar8 - 1; + } + iVar3 = MultiByteToWideChar(local_28->lc_codepage,9,(LPCSTR)param_2,-1,(LPWSTR)0x0,0); + lVar6 = (longlong)iVar3; + if (lVar6 == 0) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x2a; + goto LAB_18003d0fd; + } + } + else { + if (*(int *)((longlong)&local_28->lc_category[0].locale + 4) == 0) { + if (param_3 != 0) { + do { + *param_1 = (ushort)param_2[uVar8]; + if (param_2[uVar8] == 0) break; + uVar8 = uVar8 + 1; + param_1 = param_1 + 1; + } while (uVar8 < param_3); + } + if (local_10 == '\0') { + return uVar8; + } + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return uVar8; + } + cchWideChar = (uint)param_3; + iVar3 = MultiByteToWideChar(local_28->lc_codepage,9,(LPCSTR)param_2,-1,param_1,cchWideChar); + lVar6 = (longlong)iVar3; + if (lVar6 == 0) { + DVar4 = GetLastError(); + if (DVar4 == 0x7a) { + uVar8 = param_3 & 0xffffffff; + pbVar9 = param_2; + uVar7 = cchWideChar; + while (uVar7 != 0) { + uVar7 = (int)uVar8 - 1; + uVar8 = (ulonglong)uVar7; + if (*pbVar9 == 0) break; + uVar2 = FUN_180047bb0((uint)*pbVar9,&local_28); + if (((int)CONCAT62(extraout_var,uVar2) != 0) && (pbVar9 = pbVar9 + 1, *pbVar9 == 0)) + goto LAB_18003d188; + pbVar9 = pbVar9 + 1; + } + iVar3 = MultiByteToWideChar(local_28->lc_codepage,1,(LPCSTR)param_2, + (int)pbVar9 - (int)param_2,param_1,cchWideChar); + uVar8 = (ulonglong)iVar3; + if (uVar8 != 0) { + if (local_10 == '\0') { + return uVar8; + } + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return uVar8; + } +LAB_18003d188: + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x2a; + *param_1 = L'\0'; + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0xffffffffffffffff; + } + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x2a; + *param_1 = L'\0'; +LAB_18003d0fd: + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0xffffffffffffffff; + } + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return lVar6 - 1; +} + + +================================================================== + +### EXPORT FUNC 18003d240 (528 bytes) name=FUN_18003d240 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +DWORD FUN_18003d240(ulonglong *param_1,LPWSTR param_2,ulonglong param_3,byte *param_4, + ulonglong param_5,longlong *param_6) + +{ + pthreadmbcinfo ptVar1; + bool bVar2; + DWORD DVar3; + DWORD *pDVar4; + ulonglong uVar5; + DWORD *pDVar6; + pthreadlocinfo local_48; + pthreadmbcinfo local_40; + DWORD *local_38; + undefined1 local_30; + + DVar3 = 0; + if (param_2 == (LPWSTR)0x0) { + if (param_3 != 0) { +LAB_18003d26c: + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + } + else { + if (param_3 == 0) goto LAB_18003d26c; + *param_2 = L'\0'; + } + if (param_1 != (ulonglong *)0x0) { + *param_1 = 0; + } + bVar2 = false; + local_30 = 0; + if (param_6 == (longlong *)0x0) { + pDVar4 = FUN_1800380a0(); + local_48 = *(pthreadlocinfo *)(pDVar4 + 0x30); + ptVar1 = *(pthreadmbcinfo *)(pDVar4 + 0x2e); + local_40 = ptVar1; + local_38 = pDVar4; + if ((local_48 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar4[0x32]) == 0)) { + local_48 = __updatetlocinfo(); + } + if ((ptVar1 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar4[0x32]) == 0)) { + local_40 = __updatetmbcinfo(); + } + if ((pDVar4[0x32] & 2) == 0) { + pDVar4[0x32] = pDVar4[0x32] | 2; + bVar2 = true; + local_30 = 1; + } + } + else { + local_48 = (pthreadlocinfo)*param_6; + local_40 = (pthreadmbcinfo)param_6[1]; + bVar2 = false; + pDVar4 = local_38; + } + uVar5 = param_5; + if (param_3 < param_5) { + uVar5 = param_3; + } + uVar5 = FUN_18003cf10(param_2,param_4,uVar5,&local_48); + if (uVar5 == 0xffffffffffffffff) { + if (param_2 != (LPWSTR)0x0) { + *param_2 = L'\0'; + } + pDVar6 = FUN_180035b40(); + DVar3 = *pDVar6; + if (bVar2) { + pDVar4[0x32] = pDVar4[0x32] & 0xfffffffd; + } + } + else { + uVar5 = uVar5 + 1; + if (param_2 != (LPWSTR)0x0) { + DVar3 = 0; + if (param_3 < uVar5) { + if (param_5 != 0xffffffffffffffff) { + *param_2 = L'\0'; + pDVar6 = FUN_180035b40(); + *pDVar6 = 0x22; + FUN_1800384e0(0,0,0,0,0); + if (bVar2) { + pDVar4[0x32] = pDVar4[0x32] & 0xfffffffd; + } + return 0x22; + } + DVar3 = 0x50; + uVar5 = param_3; + } + param_2[uVar5 - 1] = L'\0'; + } + if (param_1 != (ulonglong *)0x0) { + *param_1 = uVar5; + } + if (bVar2) { + pDVar4[0x32] = pDVar4[0x32] & 0xfffffffd; + } + } + return DVar3; +} + + +================================================================== + +### EXPORT FUNC 18003d450 (267 bytes) name=FUN_18003d450 + +void FUN_18003d450(int param_1,int param_2,longlong *param_3,ulonglong *param_4,int param_5) + +{ + char cVar1; + ulonglong uVar2; + longlong lVar3; + char *pcVar4; + char *pcVar5; + int iVar6; + char *pcVar7; + + iVar6 = 0; + if (param_5 == 0) { + if (*param_4 <= (ulonglong)(longlong)param_2) { + *param_4 = 0; + return; + } + lVar3 = (longlong)(param_2 + -1); + for (; param_2 != 0; param_2 = param_2 + -1) { + iVar6 = iVar6 + 1; + *(char *)(lVar3 + *param_3) = (char)param_1 + (char)(param_1 / 10) * -10 + '0'; + lVar3 = lVar3 + -1; + param_1 = param_1 / 10; + } + *param_3 = *param_3 + (longlong)iVar6; + *param_4 = *param_4 - (longlong)iVar6; + return; + } + uVar2 = *param_4; + pcVar4 = (char *)*param_3; + while (pcVar7 = pcVar4, 1 < uVar2) { + pcVar7 = pcVar4 + 1; + iVar6 = param_1 / 10; + *pcVar4 = (char)param_1 + (char)iVar6 * -10 + '0'; + *param_4 = *param_4 - 1; + if (iVar6 < 1) break; + pcVar4 = pcVar7; + param_1 = iVar6; + uVar2 = *param_4; + } + pcVar4 = (char *)*param_3; + *param_3 = (longlong)pcVar7; + pcVar7 = pcVar7 + -1; + do { + cVar1 = *pcVar7; + pcVar5 = pcVar4 + 1; + *pcVar7 = *pcVar4; + *pcVar4 = cVar1; + pcVar7 = pcVar7 + -1; + pcVar4 = pcVar5; + } while (pcVar5 < pcVar7); + return; +} + + +================================================================== + +### EXPORT FUNC 18003d560 (1512 bytes) name=FUN_18003d560 + +undefined8 +FUN_18003d560(undefined8 *param_1,undefined1 param_2,int *param_3,longlong *param_4, + ulonglong *param_5,longlong param_6,int param_7) + +{ + char cVar1; + int iVar2; + undefined8 uVar3; + DWORD *pDVar4; + undefined **ppuVar5; + int iVar6; + char *pcVar7; + int iVar8; + + switch(param_2) { + case 4: + case 0xd: + return 1; + default: + goto LAB_18003d798; + case 0x25: + *(undefined1 *)*param_4 = 0x25; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + return 1; + case 0x41: + iVar6 = param_3[6]; + if ((-1 < iVar6) && (iVar6 < 7)) { + pcVar7 = *(char **)(param_6 + 0x38 + (longlong)iVar6 * 8); + if (*param_5 == 0) { + return 1; + } + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + } + break; + case 0x42: + iVar6 = param_3[4]; + if ((-1 < iVar6) && (iVar6 < 0xc)) { + pcVar7 = *(char **)(param_6 + 0xd0 + (longlong)iVar6 * 8); + if (*param_5 == 0) { + return 1; + } + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + } + break; + case 0x48: + iVar6 = param_3[2]; + if ((iVar6 < 0) || (0x17 < iVar6)) break; + goto LAB_18003d81b; + case 0x49: + iVar6 = param_3[2]; + if ((-1 < iVar6) && (iVar6 < 0x18)) { + iVar6 = iVar6 % 0xc; + if (iVar6 == 0) { + iVar6 = 0xc; + } + goto LAB_18003d81b; + } + break; + case 0x4d: + iVar6 = param_3[1]; + goto LAB_18003d89c; + case 0x53: + iVar6 = *param_3; +LAB_18003d89c: + if ((-1 < iVar6) && (iVar6 < 0x3c)) { +LAB_18003d81b: + iVar8 = 2; +LAB_18003d820: + FUN_18003d450(iVar6,iVar8,param_4,param_5,param_7); + return 1; + } + break; + case 0x55: + iVar8 = param_3[6]; + if ((-1 < iVar8) && (iVar8 < 7)) { +LAB_18003d9d1: + iVar2 = param_3[7]; + if ((-1 < iVar2) && (iVar2 < 0x16e)) { + if (iVar2 < iVar8) { + iVar6 = 0; + } + else { + iVar6 = iVar2 / 7; + if (iVar8 <= iVar2 % 7) { + iVar6 = iVar6 + 1; + } + } + goto LAB_18003d81b; + } + } + break; + case 0x57: + iVar8 = param_3[6]; + if ((-1 < iVar8) && (iVar8 < 7)) { + if (iVar8 == 0) { + iVar8 = 6; + } + else { + iVar8 = iVar8 + -1; + } + goto LAB_18003d9d1; + } + break; + case 0x58: + goto LAB_18003d781; + case 0x59: + iVar6 = param_3[5]; + if ((-0x76d < iVar6) && (iVar6 < 0x1fa4)) { + iVar8 = 4; + iVar6 = iVar6 + 0x76c; + goto LAB_18003d820; + } + break; + case 0x5a: + case 0x7a: + __tzset(); + ppuVar5 = FUN_18003f7a0(); + pcVar7 = ppuVar5[param_3[8] != 0]; + if (*param_5 == 0) { + return 1; + } + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + case 0x61: + iVar6 = param_3[6]; + if ((-1 < iVar6) && (iVar6 < 7)) { + pcVar7 = *(char **)(param_6 + (longlong)iVar6 * 8); + if (*param_5 == 0) { + return 1; + } + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + } + break; + case 0x62: + iVar6 = param_3[4]; + if ((-1 < iVar6) && (iVar6 < 0xc)) { + pcVar7 = *(char **)(param_6 + 0x70 + (longlong)iVar6 * 8); + if (*param_5 == 0) { + return 1; + } + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + } + break; + case 99: + uVar3 = FUN_18003dc20(param_1,(uint)(param_7 != 0),(undefined2 *)param_3,param_4,param_5,param_6 + ); + if ((int)uVar3 == 0) { + return 0; + } + if (*param_5 == 0) { + return 0; + } + *(undefined1 *)*param_4 = 0x20; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; +LAB_18003d781: + iVar6 = 2; +LAB_18003d789: + uVar3 = FUN_18003dc20(param_1,iVar6,(undefined2 *)param_3,param_4,param_5,param_6); + if ((int)uVar3 != 0) { + return 1; + } + return 0; + case 100: + iVar6 = param_3[3]; + if ((0 < iVar6) && (iVar6 < 0x20)) goto LAB_18003d81b; + break; + case 0x6a: + iVar6 = param_3[7]; + if ((-1 < iVar6) && (iVar6 < 0x16e)) { + FUN_18003d450(iVar6 + 1,3,param_4,param_5,param_7); + return 1; + } + break; + case 0x6d: + iVar6 = param_3[4]; + if ((-1 < iVar6) && (iVar6 < 0xc)) { + iVar6 = iVar6 + 1; + goto LAB_18003d81b; + } + break; + case 0x70: + iVar6 = param_3[2]; + if ((-1 < iVar6) && (iVar6 < 0x18)) { + if (0xb < iVar6) { + pcVar7 = *(char **)(param_6 + 0x138); + if (*param_5 == 0) { + return 1; + } + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + } + pcVar7 = *(char **)(param_6 + 0x130); + if (*param_5 != 0) { + do { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + return 1; + } + pcVar7 = pcVar7 + 1; + *(char *)*param_4 = cVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } while (*param_5 != 0); + return 1; + } + return 1; + } + break; + case 0x77: + iVar6 = param_3[6]; + if ((-1 < iVar6) && (iVar6 < 7)) { + iVar8 = 1; + goto LAB_18003d820; + } + break; + case 0x78: + if (param_7 == 0) { + iVar6 = 0; + } + else { + iVar6 = 1; + } + goto LAB_18003d789; + case 0x79: + if (-1 < param_3[5]) { + iVar6 = param_3[5] % 100; + goto LAB_18003d81b; + } + } + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x16; + FUN_1800384e0(0,0,0,0,0); +LAB_18003d798: + return 0; +} + + +================================================================== + +### EXPORT FUNC 18003dc20 (1323 bytes) name=FUN_18003dc20 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_18003dc20(undefined8 *param_1,int param_2,undefined2 *param_3,longlong *param_4, + ulonglong *param_5,longlong param_6) + +{ + byte bVar1; + char cVar2; + int *piVar3; + undefined1 *puVar4; + ushort uVar5; + int iVar6; + ulonglong uVar7; + undefined8 uVar8; + undefined6 extraout_var; + undefined6 extraout_var_00; + undefined6 extraout_var_01; + undefined6 extraout_var_02; + size_t sVar9; + undefined1 uVar10; + uint uVar11; + uint uVar12; + undefined4 *puVar13; + undefined1 *puVar14; + undefined1 *puVar15; + byte *pbVar16; + char *pcVar17; + longlong lVar18; + undefined4 *puVar19; + byte *pbVar20; + undefined4 uVar21; + undefined4 uVar23; + code *pcVar24; + undefined1 auStack_88 [32]; + undefined8 local_68; + undefined4 local_60; + short local_48; + short sStack_46; + undefined2 local_42; + undefined2 local_40; + undefined2 local_3e; + undefined2 local_3c; + undefined2 local_3a; + int *local_38; + ulonglong local_30; + undefined4 uVar22; + + puVar14 = auStack_88; + puVar15 = auStack_88; + local_30 = DAT_18006cea0 ^ (ulonglong)&local_48; + local_38 = (int *)param_3; + if (param_2 == 0) { + pbVar16 = *(byte **)(param_6 + 0x140); + } + else if (param_2 == 1) { + pbVar16 = *(byte **)(param_6 + 0x148); + } + else { + pbVar16 = *(byte **)(param_6 + 0x150); + } + puVar4 = auStack_88; + if (*(int *)(param_6 + 0x15c) != 1) { + local_60 = 0; + pcVar24 = GetTimeFormatA_exref; + if (param_2 != 2) { + pcVar24 = GetDateFormatA_exref; + } + local_48 = param_3[10] + 0x76c; + local_3a = 0; + sStack_46 = param_3[8] + 1; + local_68 = 0; + local_42 = param_3[6]; + local_40 = param_3[4]; + local_3e = param_3[2]; + local_3c = *param_3; + iVar6 = (*pcVar24)(*(undefined4 *)(param_6 + 0x158),0,&local_48,pbVar16); + puVar4 = auStack_88; + if (iVar6 != 0) { + sVar9 = (size_t)(iVar6 + 0x10); + if (iVar6 + 0x10 < 0x401) { + uVar7 = sVar9 + 0xf; + if (uVar7 <= sVar9) { + uVar7 = 0xffffffffffffff0; + } + lVar18 = -(uVar7 & 0xfffffffffffffff0); + puVar14 = auStack_88 + lVar18; + puVar13 = (undefined4 *)((longlong)&local_48 + lVar18); + puVar4 = auStack_88 + lVar18; + if (puVar13 == (undefined4 *)0x0) goto LAB_18003de07; + *puVar13 = 0xcccc; +LAB_18003dd67: + puVar19 = puVar13 + 4; + puVar15 = puVar14; + } + else { + puVar13 = FUN_1800349a0(sVar9); + puVar19 = (undefined4 *)0x0; + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = 0xdddd; + goto LAB_18003dd67; + } + } + puVar4 = puVar15; + if (puVar19 != (undefined4 *)0x0) { + uVar22 = *(undefined4 *)(param_6 + 0x158); + *(int *)(puVar15 + 0x28) = iVar6; + *(undefined4 **)(puVar15 + 0x20) = puVar19; + *(undefined8 *)(puVar15 + -8) = 0x18003dd97; + iVar6 = (*pcVar24)(uVar22,0,&local_48,pbVar16); + puVar13 = puVar19; + while ((iVar6 = iVar6 + -1, 0 < iVar6 && (*param_5 != 0))) { + *(undefined1 *)*param_4 = *(undefined1 *)puVar13; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + puVar13 = (undefined4 *)((longlong)puVar13 + 1); + } + if (puVar19[-4] == 0xdddd) { + *(undefined8 *)(puVar15 + -8) = 0x18003ddd8; + FUN_180034a70(puVar19 + -4); + } + goto LAB_18003ddd8; + } + } + } +LAB_18003de07: + puVar15 = puVar4; + piVar3 = local_38; + bVar1 = *pbVar16; + while ((bVar1 != 0 && (*param_5 != 0))) { + uVar23 = 0; + uVar21 = 0; + uVar22 = 0; + lVar18 = 0; + pbVar20 = pbVar16; + uVar12 = 0; + do { + uVar11 = uVar12; + pbVar20 = pbVar20 + 1; + uVar12 = uVar11 + 1; + lVar18 = lVar18 + 1; + } while (*pbVar20 == bVar1); + switch((int)(char)bVar1) { + case 0x27: + if ((uVar12 & 1) == 0) { + pbVar20 = pbVar16 + (int)uVar12; + } + else { + pbVar20 = pbVar16 + lVar18; + while( true ) { + bVar1 = *pbVar20; + if (bVar1 == 0) goto LAB_18003ddd8; + if (*param_5 == 0) goto LAB_18003df36; + if (bVar1 == 0x27) break; + *(undefined8 *)(puVar15 + -8) = 0x18003e0f6; + uVar5 = FUN_180047bb0((int)(char)bVar1,param_1); + if (((int)CONCAT62(extraout_var_02,uVar5) != 0) && (1 < *param_5)) { + if (pbVar20[1] == 0) goto LAB_18003e144; + bVar1 = *pbVar20; + pbVar20 = pbVar20 + 1; + *(byte *)*param_4 = bVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } + bVar1 = *pbVar20; + pbVar20 = pbVar20 + 1; + *(byte *)*param_4 = bVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } + pbVar20 = pbVar20 + 1; + } + goto LAB_18003df36; + default: +switchD_18003de6d_caseD_28: + *(undefined8 *)(puVar15 + -8) = 0x18003defa; + uVar5 = FUN_180047bb0((int)(char)bVar1,param_1); + if (((int)CONCAT62(extraout_var,uVar5) == 0) || (*param_5 < 2)) { +LAB_18003df22: + pbVar20 = pbVar16 + 1; + *(byte *)*param_4 = *pbVar16; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + goto LAB_18003df36; + } + if (pbVar16[1] != 0) { + bVar1 = *pbVar16; + pbVar16 = pbVar16 + 1; + *(byte *)*param_4 = bVar1; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + goto LAB_18003df22; + } + goto LAB_18003e144; + case 0x41: + case 0x61: + *(undefined8 *)(puVar15 + -8) = 0x18003dfaa; + iVar6 = FUN_180048b00(pbVar16,(byte *)"am/pm"); + if (iVar6 == 0) { + pbVar20 = pbVar16 + 5; + } + else { + *(undefined8 *)(puVar15 + -8) = 0x18003dfc3; + iVar6 = FUN_180048b00(pbVar16,&DAT_180057544); + if (iVar6 == 0) { + pbVar20 = pbVar16 + 3; + } + } + uVar10 = 0x70; + break; + case 0x48: + if (uVar11 == 0) { + uVar22 = 1; + } + else { + uVar22 = uVar23; + if (uVar11 != 1) goto switchD_18003de6d_caseD_28; + } + uVar10 = 0x48; + break; + case 0x4d: + if (uVar11 == 0) { + uVar23 = 1; + } + else if (uVar11 != 1) { + if (uVar11 == 2) { + uVar10 = 0x62; + } + else { + if (uVar11 != 3) goto switchD_18003de6d_caseD_28; + uVar10 = 0x42; + } + break; + } + uVar22 = uVar23; + uVar10 = 0x6d; + break; + case 100: + if (uVar11 == 0) { + uVar23 = 1; + } + else if (uVar11 != 1) { + if (uVar11 == 2) { + uVar10 = 0x61; + } + else { + if (uVar11 != 3) goto switchD_18003de6d_caseD_28; + uVar10 = 0x41; + uVar22 = uVar21; + } + break; + } + uVar22 = uVar23; + uVar10 = 100; + break; + case 0x68: + if (uVar11 == 0) { + uVar23 = 1; + } + else if (uVar11 != 1) goto switchD_18003de6d_caseD_28; + uVar10 = 0x49; + uVar22 = uVar23; + break; + case 0x6d: + if (uVar11 == 0) { + uVar23 = 1; + } + else if (uVar11 != 1) goto switchD_18003de6d_caseD_28; + uVar10 = 0x4d; + uVar22 = uVar23; + break; + case 0x73: + if (uVar11 == 0) { + uVar23 = 1; + } + else if (uVar11 != 1) goto switchD_18003de6d_caseD_28; + uVar10 = 0x53; + uVar22 = uVar23; + break; + case 0x74: + if (piVar3[2] < 0xc) { + pcVar17 = *(char **)(param_6 + 0x130); + } + else { + pcVar17 = *(char **)(param_6 + 0x138); + } + if ((uVar12 == 1) && (*param_5 != 0)) { + cVar2 = *pcVar17; + *(undefined8 *)(puVar15 + -8) = 0x18003e02a; + uVar5 = FUN_180047bb0((int)cVar2,param_1); + if (((int)CONCAT62(extraout_var_00,uVar5) != 0) && (1 < *param_5)) { + if (pcVar17[1] == '\0') goto LAB_18003e144; + cVar2 = *pcVar17; + pcVar17 = pcVar17 + 1; + *(char *)*param_4 = cVar2; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } + *(char *)*param_4 = *pcVar17; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } + else { + cVar2 = *pcVar17; + while ((cVar2 != '\0' && (*param_5 != 0))) { + *(undefined8 *)(puVar15 + -8) = 0x18003e081; + uVar5 = FUN_180047bb0((int)cVar2,param_1); + if (((int)CONCAT62(extraout_var_01,uVar5) != 0) && (1 < *param_5)) { + if (pcVar17[1] == '\0') goto LAB_18003e144; + cVar2 = *pcVar17; + pcVar17 = pcVar17 + 1; + *(char *)*param_4 = cVar2; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + } + cVar2 = *pcVar17; + pcVar17 = pcVar17 + 1; + *(char *)*param_4 = cVar2; + *param_4 = *param_4 + 1; + *param_5 = *param_5 - 1; + cVar2 = *pcVar17; + } + } + goto LAB_18003df36; + case 0x79: + if (uVar12 == 2) { + uVar10 = 0x79; + uVar22 = uVar21; + } + else { + if (uVar12 != 4) goto switchD_18003de6d_caseD_28; + uVar10 = 0x59; + uVar22 = uVar21; + } + } + *(undefined4 *)(puVar15 + 0x30) = uVar22; + *(longlong *)(puVar15 + 0x28) = param_6; + *(ulonglong **)(puVar15 + 0x20) = param_5; + *(undefined8 *)(puVar15 + -8) = 0x18003dfee; + uVar8 = FUN_18003d560(param_1,uVar10,piVar3,param_4,*(ulonglong **)(puVar15 + 0x20), + *(longlong *)(puVar15 + 0x28),*(int *)(puVar15 + 0x30)); + if ((int)uVar8 == 0) { +LAB_18003e144: + uVar8 = 0; + goto LAB_18003dddd; + } +LAB_18003df36: + bVar1 = *pbVar20; + pbVar16 = pbVar20; + } +LAB_18003ddd8: + uVar8 = 1; +LAB_18003dddd: + *(undefined8 *)(puVar15 + -8) = 0x18003dde9; + return uVar8; +} + + +================================================================== + +### EXPORT FUNC 18003e1d0 (856 bytes) name=FUN_18003e1d0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +longlong FUN_18003e1d0(char *param_1,ulonglong param_2,char *param_3,int *param_4,longlong param_5, + undefined8 *param_6) + +{ + char cVar1; + ushort uVar2; + DWORD *pDVar3; + undefined6 extraout_var; + undefined8 uVar4; + char *pcVar5; + bool bVar6; + char *local_res8; + pthreadlocinfo local_48; + pthreadmbcinfo local_40; + DWORD *local_38; + char local_30; + + local_30 = '\0'; + local_res8 = param_1; + if (param_6 == (undefined8 *)0x0) { + local_38 = FUN_1800380a0(); + local_48 = *(pthreadlocinfo *)(local_38 + 0x30); + local_40 = *(pthreadmbcinfo *)(local_38 + 0x2e); + if ((local_48 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + local_48 = __updatetlocinfo(); + } + if ((local_40 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + local_40 = __updatetmbcinfo(); + } + if ((local_38[0x32] & 2) == 0) { + local_38[0x32] = local_38[0x32] | 2; + local_30 = '\x01'; + } + } + else { + local_48 = (pthreadlocinfo)*param_6; + local_40 = (pthreadmbcinfo)param_6[1]; + } + if (((local_res8 == (char *)0x0) || (param_2 == 0)) || + (*local_res8 = '\0', param_3 == (char *)0x0)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + } + else { + param_6 = (undefined8 *)param_2; + if (param_5 == 0) { + param_5._0_4_ = local_48[1].refcount; + param_5._4_4_ = local_48[1].lc_codepage; + } + while (bVar6 = false, param_6 != (undefined8 *)0x0) { + cVar1 = *param_3; + bVar6 = false; + if (cVar1 == '\0') { + if (param_6 != (undefined8 *)0x0) { + *local_res8 = '\0'; + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + return param_2 - (longlong)param_6; + } + return param_2 - (longlong)param_6; + } + break; + } + if (cVar1 == '%') { + if (param_4 == (int *)0x0) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + bVar6 = local_30 == '\0'; + goto LAB_18003e4fb; + } + pcVar5 = param_3 + 1; + cVar1 = *pcVar5; + if (cVar1 == '#') { + pcVar5 = param_3 + 2; + } + uVar4 = FUN_18003d560(&local_48,*pcVar5,param_4,(longlong *)&local_res8, + (ulonglong *)¶m_6,param_5,(uint)(cVar1 == '#')); + if ((int)uVar4 == 0) { + if (param_6 != (undefined8 *)0x0) { + bVar6 = true; + } + break; + } + } + else { + uVar2 = FUN_180047bb0((int)cVar1,&local_48); + if (((int)CONCAT62(extraout_var,uVar2) != 0) && ((undefined8 *)0x1 < param_6)) { + if (param_3[1] == '\0') { + bVar6 = true; + break; + } + *local_res8 = *param_3; + local_res8 = local_res8 + 1; + param_6 = (undefined8 *)((longlong)param_6 + -1); + param_3 = param_3 + 1; + } + *local_res8 = *param_3; + local_res8 = local_res8 + 1; + param_6 = (undefined8 *)((longlong)param_6 + -1); + pcVar5 = param_3; + } + param_3 = pcVar5 + 1; + } + *param_1 = '\0'; + if ((bVar6) || (param_6 != (undefined8 *)0x0)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar6 = local_30 == '\0'; + } + else { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x22; + bVar6 = local_30 == '\0'; + } +LAB_18003e4fb: + if (!bVar6) { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18003e530 (1167 bytes) name=FUN_18003e530 + +void FUN_18003e530(void) + +{ + char cVar1; + char cVar2; + byte bVar3; + byte bVar4; + bool bVar5; + int iVar6; + UINT CodePage; + DWORD DVar7; + errno_t eVar8; + int iVar9; + undefined **ppuVar10; + undefined8 uVar11; + char *_Src; + char *pcVar12; + int *piVar13; + ulonglong uVar14; + byte *_Src_00; + int local_res8 [2]; + int local_res10 [2]; + int local_res18 [2]; + int local_res20 [2]; + + bVar5 = false; + local_res8[0] = 0; + local_res10[0] = 0; + local_res18[0] = 0; + _lock(7); + ppuVar10 = FUN_18003f7a0(); + uVar11 = FUN_18003f720(local_res8); + if ((int)uVar11 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + uVar11 = FUN_18003f680(local_res10); + if ((int)uVar11 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + uVar11 = FUN_18003f6d0(local_res18); + if ((int)uVar11 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + CodePage = ___lc_codepage_func(); + DAT_180072ebc = 0; + DAT_18006d8b0 = 0xffffffff; + DAT_18006d8a0 = 0xffffffff; + _Src = (char *)FUN_180048b60(&DAT_180057550); + if ((_Src == (char *)0x0) || (*_Src == '\0')) { + if (DAT_180072ec0 != (char *)0x0) { + FUN_180034a70(DAT_180072ec0); + DAT_180072ec0 = (char *)0x0; + } + DVar7 = GetTimeZoneInformation((LPTIME_ZONE_INFORMATION)&DAT_180072e10); + if (DVar7 != 0xffffffff) { + DAT_180072ebc = 1; + local_res8[0] = DAT_180072e10 * 0x3c; + if (DAT_180072e56 != 0) { + local_res8[0] = local_res8[0] + DAT_180072e64 * 0x3c; + } + if ((DAT_180072eaa == 0) || (DAT_180072eb8 == 0)) { + local_res10[0] = 0; + local_res18[0] = 0; + } + else { + local_res10[0] = 1; + local_res18[0] = (DAT_180072eb8 - DAT_180072e64) * 0x3c; + } + iVar9 = WideCharToMultiByte(CodePage,0,(LPCWSTR)&DAT_180072e14,-1,*ppuVar10,0x3f,(LPCSTR)0x0, + local_res20); + if ((iVar9 == 0) || (local_res20[0] != 0)) { + **ppuVar10 = 0; + } + else { + (*ppuVar10)[0x3f] = 0; + } + iVar9 = WideCharToMultiByte(CodePage,0,(LPCWSTR)&DAT_180072e68,-1,ppuVar10[1],0x3f,(LPCSTR)0x0 + ,local_res20); + if ((iVar9 == 0) || (local_res20[0] != 0)) { + *ppuVar10[1] = 0; + } + else { + ppuVar10[1][0x3f] = 0; + } + } + bVar5 = true; + } + else { + if (DAT_180072ec0 != (char *)0x0) { + pcVar12 = _Src; + do { + cVar1 = *pcVar12; + cVar2 = pcVar12[(longlong)DAT_180072ec0 - (longlong)_Src]; + if (cVar1 != cVar2) break; + pcVar12 = pcVar12 + 1; + } while (cVar2 != '\0'); + if (cVar1 == cVar2) { + bVar5 = true; + goto LAB_18003e821; + } + } + if (DAT_180072ec0 != (char *)0x0) { + FUN_180034a70(DAT_180072ec0); + } + uVar14 = 0xffffffffffffffff; + pcVar12 = _Src; + do { + if (uVar14 == 0) break; + uVar14 = uVar14 - 1; + cVar1 = *pcVar12; + pcVar12 = pcVar12 + 1; + } while (cVar1 != '\0'); + DAT_180072ec0 = (char *)FUN_180040de0(~uVar14); + if (DAT_180072ec0 == (char *)0x0) { + bVar5 = true; + } + else { + uVar14 = 0xffffffffffffffff; + pcVar12 = _Src; + do { + if (uVar14 == 0) break; + uVar14 = uVar14 - 1; + cVar1 = *pcVar12; + pcVar12 = pcVar12 + 1; + } while (cVar1 != '\0'); + eVar8 = strcpy_s(DAT_180072ec0,~uVar14,_Src); + if (eVar8 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + } + } +LAB_18003e821: + iVar9 = local_res8[0]; + piVar13 = FUN_18003f790(); + iVar6 = local_res10[0]; + *piVar13 = iVar9; + piVar13 = FUN_18003f770(); + iVar9 = local_res18[0]; + *piVar13 = iVar6; + piVar13 = FUN_18003f780(); + *piVar13 = iVar9; + FUN_180045470(7); + if (!bVar5) { + eVar8 = strncpy_s(*ppuVar10,0x40,_Src,3); + if (eVar8 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + _Src_00 = (byte *)(_Src + 3); + bVar3 = *_Src_00; + if (bVar3 == 0x2d) { + _Src_00 = (byte *)(_Src + 4); + } + local_res8[0] = FUN_180048b50(_Src_00); + local_res8[0] = local_res8[0] * 0xe10; + for (; (bVar4 = *_Src_00, bVar4 == 0x2b || (('/' < (char)bVar4 && ((char)bVar4 < ':')))); + _Src_00 = _Src_00 + 1) { + } + if (*_Src_00 == 0x3a) { + _Src_00 = _Src_00 + 1; + iVar9 = FUN_180048b50(_Src_00); + local_res8[0] = local_res8[0] + iVar9 * 0x3c; + bVar4 = *_Src_00; + while (('/' < (char)bVar4 && ((char)bVar4 < ':'))) { + _Src_00 = _Src_00 + 1; + bVar4 = *_Src_00; + } + if (*_Src_00 == 0x3a) { + _Src_00 = _Src_00 + 1; + iVar9 = FUN_180048b50(_Src_00); + local_res8[0] = local_res8[0] + iVar9; + bVar4 = *_Src_00; + while (('/' < (char)bVar4 && ((char)bVar4 < ':'))) { + _Src_00 = _Src_00 + 1; + bVar4 = *_Src_00; + } + } + } + if (bVar3 == 0x2d) { + local_res8[0] = -local_res8[0]; + } + local_res10[0] = (int)(char)*_Src_00; + if (*_Src_00 == 0) { + *ppuVar10[1] = 0; + } + else { + eVar8 = strncpy_s(ppuVar10[1],0x40,(char *)_Src_00,3); + if (eVar8 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + } + iVar9 = local_res8[0]; + piVar13 = FUN_18003f790(); + iVar6 = local_res10[0]; + *piVar13 = iVar9; + piVar13 = FUN_18003f770(); + *piVar13 = iVar6; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18003e9d0 (25 bytes) name=FUN_18003e9d0 + +void FUN_18003e9d0(void) + +{ + FUN_180045470(7); + return; +} + + +================================================================== + +### EXPORT FUNC 18003e9f0 (803 bytes) name=FUN_18003e9f0 + +void FUN_18003e9f0(int param_1,int param_2,int 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) + +{ + undefined8 uVar1; + uint uVar2; + uint uVar3; + int iVar4; + int iVar5; + int local_res8 [2]; + + local_res8[0] = 0; + if (param_2 == 1) { + uVar2 = param_3 >> 0x1f & 3; + uVar3 = uVar2 + param_3 & 3; + if (((uVar3 == uVar2) && (param_3 != (param_3 / 100) * 100)) || + (param_3 + 0x76c == ((param_3 + 0x76c) / 400) * 400)) { + iVar5 = *(int *)((longlong)&DAT_18006dc88 + (longlong)param_4 * 4 + 4); + } + else { + iVar5 = *(int *)(&DAT_18006dcc4 + (longlong)param_4 * 4); + } + iVar4 = param_3 + -1; + iVar4 = (param_3 * 0x16d + -0x63db + + iVar5 + 1 + ((int)(iVar4 + (iVar4 >> 0x1f & 3U)) >> 2) + + ((param_3 + 299) / 400 - iVar4 / 100)) % 7; + if (param_6 < iVar4) { + iVar5 = iVar5 + 1 + (param_5 * 7 - iVar4) + param_6; + } + else { + iVar5 = iVar5 + -6 + (param_5 * 7 - iVar4) + param_6; + } + if (param_5 == 5) { + if (((uVar3 == uVar2) && (param_3 != (param_3 / 100) * 100)) || + (param_3 + 0x76c == ((param_3 + 0x76c) / 400) * 400)) { + iVar4 = (&DAT_18006dc90)[param_4]; + } + else { + iVar4 = *(int *)(&DAT_18006dcc8 + (longlong)param_4 * 4); + } + if (iVar4 < iVar5) { + iVar5 = iVar5 + -7; + } + } + } + else { + uVar2 = param_3 >> 0x1f & 3; + if ((((param_3 + uVar2 & 3) == uVar2) && (param_3 != (param_3 / 100) * 100)) || + (param_3 + 0x76c == ((param_3 + 0x76c) / 400) * 400)) { + iVar5 = *(int *)((longlong)&DAT_18006dc88 + (longlong)param_4 * 4 + 4); + } + else { + iVar5 = *(int *)(&DAT_18006dcc4 + (longlong)param_4 * 4); + } + iVar5 = iVar5 + param_7; + } + if (param_1 == 1) { + DAT_18006d8a4 = iVar5; + DAT_18006d8a0 = param_3; + DAT_18006d8a8 = ((param_8 * 0x3c + param_9) * 0x3c + param_10) * 1000 + param_11; + return; + } + DAT_18006d8b8 = ((param_8 * 0x3c + param_9) * 0x3c + param_10) * 1000 + param_11; + DAT_18006d8b4 = iVar5; + uVar1 = FUN_18003f6d0(local_res8); + if ((int)uVar1 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + DAT_18006d8b8 = DAT_18006d8b8 + local_res8[0] * 1000; + if (DAT_18006d8b8 < 0) { + DAT_18006d8b4 = DAT_18006d8b4 + -1; + DAT_18006d8b0 = param_3; + DAT_18006d8b8 = DAT_18006d8b8 + 86400000; + return; + } + if (86399999 < DAT_18006d8b8) { + DAT_18006d8b8 = DAT_18006d8b8 + -86400000; + DAT_18006d8b4 = DAT_18006d8b4 + 1; + } + DAT_18006d8b0 = param_3; + return; +} + + +================================================================== + +### EXPORT FUNC 18003ed20 (1408 bytes) name=FUN_18003ed20 + +bool FUN_18003ed20(int *param_1) + +{ + int iVar1; + undefined8 uVar2; + uint uVar3; + int iVar4; + int iVar5; + int local_res10 [2]; + int local_res18 [4]; + + local_res10[0] = 0; + uVar2 = FUN_18003f680(local_res10); + if ((int)uVar2 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + if (local_res10[0] != 0) { + iVar4 = param_1[5]; + if ((iVar4 != DAT_18006d8a0) || (iVar4 != DAT_18006d8b0)) { + if (DAT_180072ebc == 0) { + uVar3 = iVar4 >> 0x1f & 3; + iVar1 = DAT_18006dc9c; + if ((((iVar4 + uVar3 & 3) != uVar3) || (iVar4 == (iVar4 / 100) * 100)) && + (iVar4 + 0x76c != ((iVar4 + 0x76c) / 400) * 400)) { + iVar1 = DAT_18006dcd4; + } + iVar5 = iVar4 + -1; + iVar5 = (iVar4 * 0x16d + -0x63db + + iVar1 + 1 + ((int)(iVar5 + (iVar5 >> 0x1f & 3U)) >> 2) + + ((iVar4 + 299) / 400 - iVar5 / 100)) % 7; + if (iVar5 < 1) { + iVar5 = -iVar5; + } + else { + iVar5 = 7 - iVar5; + } + DAT_18006d8a4 = iVar1 + 1 + iVar5; + DAT_18006d8a8 = 7200000; + DAT_18006d8a0 = iVar4; + FUN_18003e9f0(0,1,iVar4,10,5,0,0,2,0,0,0); + } + else { + if (DAT_180072ea8 == 0) { + FUN_18003e9f0(1,1,iVar4,(uint)DAT_180072eaa,(uint)DAT_180072eae,(uint)DAT_180072eac,0, + (uint)DAT_180072eb0,(uint)DAT_180072eb2,(uint)DAT_180072eb4, + (uint)DAT_180072eb6); + } + else { + uVar3 = iVar4 >> 0x1f & 3; + if ((((iVar4 + uVar3 & 3) == uVar3) && (iVar4 != (iVar4 / 100) * 100)) || + (iVar4 + 0x76c == ((iVar4 + 0x76c) / 400) * 400)) { + iVar1 = *(int *)((longlong)&DAT_18006dc88 + (ulonglong)(uint)DAT_180072eaa * 4 + 4); + } + else { + iVar1 = *(int *)(&DAT_18006dcc4 + (longlong)(int)(uint)DAT_180072eaa * 4); + } + DAT_18006d8a4 = iVar1 + (uint)DAT_180072eae; + DAT_18006d8a8 = + (((uint)DAT_180072eb0 * 0x3c + (uint)DAT_180072eb2) * 0x3c + (uint)DAT_180072eb4) * + 1000 + (uint)DAT_180072eb6; + DAT_18006d8a0 = iVar4; + } + if (DAT_180072e54 == 0) { + FUN_18003e9f0(0,1,param_1[5],(uint)DAT_180072e56,(uint)DAT_180072e5a,(uint)DAT_180072e58,0 + ,(uint)DAT_180072e5c,(uint)DAT_180072e5e,(uint)DAT_180072e60, + (uint)DAT_180072e62); + } + else { + iVar4 = param_1[5]; + local_res18[0] = 0; + uVar3 = iVar4 >> 0x1f & 3; + if ((((iVar4 + uVar3 & 3) == uVar3) && (iVar4 != (iVar4 / 100) * 100)) || + (iVar4 + 0x76c == ((iVar4 + 0x76c) / 400) * 400)) { + iVar1 = *(int *)((longlong)&DAT_18006dc88 + (ulonglong)(uint)DAT_180072e56 * 4 + 4); + } + else { + iVar1 = *(int *)(&DAT_18006dcc4 + (longlong)(int)(uint)DAT_180072e56 * 4); + } + DAT_18006d8b4 = iVar1 + (uint)DAT_180072e5a; + DAT_18006d8b8 = + (((uint)DAT_180072e5c * 0x3c + (uint)DAT_180072e5e) * 0x3c + (uint)DAT_180072e60) * + 1000 + (uint)DAT_180072e62; + uVar2 = FUN_18003f6d0(local_res18); + if ((int)uVar2 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + DAT_18006d8b8 = DAT_18006d8b8 + local_res18[0] * 1000; + DAT_18006d8b0 = iVar4; + if (DAT_18006d8b8 < 0) { + DAT_18006d8b8 = DAT_18006d8b8 + 86400000; + DAT_18006d8b4 = DAT_18006d8b4 + -1; + } + else if (86399999 < DAT_18006d8b8) { + DAT_18006d8b8 = DAT_18006d8b8 + -86400000; + DAT_18006d8b4 = DAT_18006d8b4 + 1; + } + } + } + } + if (DAT_18006d8a4 < DAT_18006d8b4) { + iVar4 = param_1[7]; + if ((DAT_18006d8a4 <= iVar4) && (iVar4 <= DAT_18006d8b4)) { + if ((DAT_18006d8a4 < iVar4) && (iVar4 < DAT_18006d8b4)) { + return true; + } +LAB_18003f267: + iVar1 = ((param_1[2] * 0x3c + param_1[1]) * 0x3c + *param_1) * 1000; + if (iVar4 == DAT_18006d8a4) { + return DAT_18006d8a8 <= iVar1; + } + return iVar1 < DAT_18006d8b8; + } + } + else { + iVar4 = param_1[7]; + if (iVar4 < DAT_18006d8b4) { + return true; + } + if (DAT_18006d8a4 < iVar4) { + return true; + } + if ((iVar4 <= DAT_18006d8b4) || (DAT_18006d8a4 <= iVar4)) goto LAB_18003f267; + } + } + return false; +} + + +================================================================== + +### EXPORT FUNC 18003f2a0 (60 bytes) name=__tzset + +/* Library Function - Single Match + __tzset + + Library: Visual Studio 2005 Release */ + +void __cdecl __tzset(void) + +{ + if (DAT_180072ec8 == 0) { + _lock(6); + if (DAT_180072ec8 == 0) { + FUN_18003e530(); + DAT_180072ec8 = DAT_180072ec8 + 1; + } + FUN_180045470(6); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18003f2e0 (25 bytes) name=FUN_18003f2e0 + +void FUN_18003f2e0(void) + +{ + FUN_180045470(6); + return; +} + + +================================================================== + +### EXPORT FUNC 18003f300 (48 bytes) name=FUN_18003f300 + +ulonglong FUN_18003f300(int *param_1) + +{ + bool bVar1; + undefined7 extraout_var; + + _lock(6); + bVar1 = FUN_18003ed20(param_1); + FUN_180045470(6); + return CONCAT71(extraout_var,bVar1) & 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18003f330 (25 bytes) name=FUN_18003f330 + +void FUN_18003f330(void) + +{ + FUN_180045470(6); + return; +} + + +================================================================== + +### EXPORT FUNC 18003f350 (807 bytes) name=FUN_18003f350 + +undefined8 FUN_18003f350(int *param_1,longlong *param_2) + +{ + bool bVar1; + DWORD *pDVar2; + int *piVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + undefined4 *puVar8; + int iVar9; + longlong lVar10; + longlong lVar11; + + bVar1 = false; + if (param_1 != (int *)0x0) { + *param_1 = -1; + param_1[1] = -1; + param_1[2] = -1; + param_1[3] = -1; + param_1[4] = -1; + param_1[5] = -1; + param_1[6] = -1; + param_1[7] = -1; + param_1[8] = -1; + if (param_2 != (longlong *)0x0) { + lVar10 = *param_2; + if (lVar10 < 0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + return 0x16; + } + if (lVar10 < 0x793407000) { + iVar9 = 1; + lVar11 = lVar10 + SUB168(SEXT816(-0x77ceb70a34ed8f47) * SEXT816(lVar10),8); + iVar6 = (int)((ulonglong)lVar11 >> 0x18) - ((int)(char)((ulonglong)lVar11 >> 0x38) >> 0x1f); + iVar7 = iVar6 + 0x46; + iVar5 = iVar6 + 0x45; + lVar10 = lVar10 + ((longlong)iVar6 * -0x16d - + (longlong) + (((iVar6 + 0x171) / 400 - iVar5 / 100) + -0x11 + + ((int)(iVar5 + (iVar5 >> 0x1f & 3U)) >> 2))) * 0x15180; + if (lVar10 < 0) { + uVar4 = iVar5 >> 0x1f & 3; + iVar7 = iVar5; + if ((((iVar5 + uVar4 & 3) == uVar4) && (iVar5 != (iVar5 / 100) * 100)) || + (lVar11 = lVar10 + 0x1e13380, bVar1 = false, + iVar6 + 0x7b1 == ((iVar6 + 0x7b1) / 400) * 400)) { + bVar1 = true; + lVar11 = lVar10 + 0x1e28500; + } + } + else { + uVar4 = iVar7 >> 0x1f & 3; + lVar11 = lVar10; + if ((((iVar7 + uVar4 & 3) == uVar4) && (iVar7 != (iVar7 / 100) * 100)) || + (iVar6 + 0x7b2 == ((iVar6 + 0x7b2) / 400) * 400)) { + bVar1 = true; + } + } + param_1[5] = iVar7; + puVar8 = &DAT_18006dc90; + iVar5 = (int)(lVar11 / 0x15180); + param_1[7] = iVar5; + lVar11 = lVar11 + (longlong)iVar5 * -0x15180; + if (!bVar1) { + puVar8 = (undefined4 *)&DAT_18006dcc8; + } + piVar3 = puVar8 + 1; + iVar7 = puVar8[1]; + while (iVar7 < iVar5) { + piVar3 = piVar3 + 1; + iVar9 = iVar9 + 1; + iVar7 = *piVar3; + } + param_1[4] = iVar9 + -1; + param_1[3] = iVar5 - puVar8[iVar9 + -1]; + lVar10 = *param_2; + param_1[8] = 0; + param_1[6] = ((int)(lVar10 / 0x15180) + 4) % 7; + iVar5 = (int)(lVar11 / 0xe10); + param_1[2] = iVar5; + lVar11 = lVar11 + (longlong)iVar5 * -0xe10; + lVar10 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar11),8) + lVar11; + iVar5 = (int)(lVar10 >> 5) - (int)(lVar10 >> 0x3f); + param_1[1] = iVar5; + *param_1 = (int)lVar11 + iVar5 * -0x3c; + return 0; + } + } + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 18003f680 (69 bytes) name=FUN_18003f680 + +undefined8 FUN_18003f680(undefined4 *param_1) + +{ + DWORD *pDVar1; + + if (param_1 == (undefined4 *)0x0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + *param_1 = DAT_18006d8c4; + return 0; +} + + +================================================================== + +### EXPORT FUNC 18003f6d0 (69 bytes) name=FUN_18003f6d0 + +undefined8 FUN_18003f6d0(undefined4 *param_1) + +{ + DWORD *pDVar1; + + if (param_1 == (undefined4 *)0x0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + *param_1 = DAT_18006d8c8; + return 0; +} + + +================================================================== + +### EXPORT FUNC 18003f720 (69 bytes) name=FUN_18003f720 + +undefined8 FUN_18003f720(undefined4 *param_1) + +{ + DWORD *pDVar1; + + if (param_1 == (undefined4 *)0x0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + *param_1 = DAT_18006d8c0; + return 0; +} + + +================================================================== + +### EXPORT FUNC 18003f770 (8 bytes) name=FUN_18003f770 + +undefined4 * FUN_18003f770(void) + +{ + return &DAT_18006d8c4; +} + + +================================================================== + +### EXPORT FUNC 18003f780 (8 bytes) name=FUN_18003f780 + +undefined4 * FUN_18003f780(void) + +{ + return &DAT_18006d8c8; +} + + +================================================================== + +### EXPORT FUNC 18003f790 (8 bytes) name=FUN_18003f790 + +undefined4 * FUN_18003f790(void) + +{ + return &DAT_18006d8c0; +} + + +================================================================== + +### EXPORT FUNC 18003f7a0 (8 bytes) name=FUN_18003f7a0 + +undefined ** FUN_18003f7a0(void) + +{ + return &PTR_DAT_18006d950; +} + + +================================================================== + +### EXPORT FUNC 18003f7b0 (947 bytes) name=FUN_18003f7b0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +int FUN_18003f7b0(longlong *param_1,LCID param_2,DWORD param_3,LPCWSTR param_4,int param_5, + LPWSTR param_6,int param_7,UINT param_8) + +{ + undefined1 auVar1 [16]; + undefined1 auVar2 [16]; + longlong lVar3; + int iVar4; + DWORD DVar5; + UINT UVar6; + int cchSrc; + int iVar7; + int iVar8; + errno_t eVar9; + undefined8 uVar10; + undefined4 *puVar11; + LPCWSTR pWVar12; + size_t sVar13; + char *lpMultiByteStr; + undefined1 *puVar14; + undefined1 *puVar15; + undefined1 *puVar16; + LPCSTR lpSrcStr; + ulonglong uVar17; + undefined1 auStackY_88 [32]; + DWORD local_48 [2]; + LPCWSTR local_40; + ulonglong local_38; + + puVar14 = auStackY_88; + puVar15 = auStackY_88; + puVar16 = auStackY_88; + local_38 = DAT_18006cea0 ^ (ulonglong)local_48; + local_48[0] = param_3; + local_40 = param_4; + if (DAT_180072ecc == 0) { + iVar4 = LCMapStringW(0,0x100,L"",1,(LPWSTR)0x0,0); + if (iVar4 == 0) { + DVar5 = GetLastError(); + if (DVar5 == 0x78) { + DAT_180072ecc = 2; + } + } + else { + DAT_180072ecc = 1; + } + } + pWVar12 = param_4; + iVar4 = param_5; + if (0 < param_5) { + do { + iVar4 = iVar4 + -1; + iVar8 = iVar4; + if (*pWVar12 == L'\0') break; + pWVar12 = pWVar12 + 1; + iVar8 = -1; + } while (iVar4 != 0); + param_5 = param_5 + (-1 - iVar8); + } + if (DAT_180072ecc == 1) { + iVar4 = LCMapStringW(param_2,local_48[0],param_4,param_5,param_6,param_7); + goto LAB_18003fb3f; + } + if ((DAT_180072ecc == 2) || (puVar16 = auStackY_88, DAT_180072ecc == 0)) { + iVar8 = 0; + if (param_2 == 0) { + param_2 = *(LCID *)(*param_1 + 0x14); + } + if (param_8 == 0) { + param_8 = *(UINT *)(*param_1 + 4); + } + uVar10 = FUN_180048c40(param_2); + UVar6 = (UINT)uVar10; + if ((param_8 != UVar6) && (UVar6 != 0xffffffff)) { + param_8 = UVar6; + } + cchSrc = WideCharToMultiByte(param_8,0,param_4,param_5,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0); + uVar17 = (ulonglong)cchSrc; + puVar16 = auStackY_88; + if (((cchSrc != 0) && (puVar16 = auStackY_88, 0 < cchSrc)) && + (auVar1._8_8_ = 0, auVar1._0_8_ = uVar17, puVar16 = auStackY_88, + SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar1,0) != 0)) { + sVar13 = uVar17 + 0x10; + if (sVar13 < 0x401) { + uVar17 = uVar17 + 0x1f; + if (uVar17 <= sVar13) { + uVar17 = 0xffffffffffffff0; + } + lVar3 = -(uVar17 & 0xfffffffffffffff0); + puVar14 = auStackY_88 + lVar3; + puVar11 = (undefined4 *)((longlong)local_48 + lVar3); + puVar16 = auStackY_88 + lVar3; + if (puVar11 == (undefined4 *)0x0) goto LAB_18003fb3d; + *puVar11 = 0xcccc; +LAB_18003f992: + lpSrcStr = (LPCSTR)(puVar11 + 4); + puVar15 = puVar14; + } + else { + puVar11 = FUN_1800349a0(sVar13); + lpSrcStr = (LPCSTR)0x0; + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = 0xdddd; + goto LAB_18003f992; + } + } + pWVar12 = local_40; + puVar16 = puVar15; + if (lpSrcStr != (LPCSTR)0x0) { + *(undefined8 *)(puVar15 + 0x38) = 0; + *(undefined8 *)(puVar15 + 0x30) = 0; + *(int *)(puVar15 + 0x28) = cchSrc; + *(LPCSTR *)(puVar15 + 0x20) = lpSrcStr; + *(undefined8 *)(puVar15 + -8) = 0x18003f9c6; + iVar7 = WideCharToMultiByte(param_8,0,pWVar12,param_5,*(LPSTR *)(puVar15 + 0x20), + *(int *)(puVar15 + 0x28),*(LPCSTR *)(puVar15 + 0x30), + *(LPBOOL *)(puVar15 + 0x38)); + DVar5 = local_48[0]; + iVar4 = 0; + if (iVar7 != 0) { + *(undefined4 *)(puVar15 + 0x28) = 0; + *(undefined8 *)(puVar15 + 0x20) = 0; + *(undefined8 *)(puVar15 + -8) = 0x18003f9e9; + iVar7 = LCMapStringA(param_2,DVar5,lpSrcStr,cchSrc,*(LPSTR *)(puVar15 + 0x20), + *(int *)(puVar15 + 0x28)); + uVar17 = (ulonglong)iVar7; + iVar4 = iVar8; + if ((0 < iVar7) && + (auVar2._8_8_ = 0, auVar2._0_8_ = uVar17, + SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar2,0) != 0)) { + sVar13 = uVar17 + 0x10; + if (sVar13 < 0x401) { + uVar17 = uVar17 + 0x1f; + if (uVar17 <= sVar13) { + uVar17 = 0xffffffffffffff0; + } + *(undefined8 *)(puVar15 + -8) = 0x18003fa36; + lVar3 = -(uVar17 & 0xfffffffffffffff0); + puVar16 = puVar15 + lVar3; + puVar11 = (undefined4 *)(puVar15 + lVar3 + 0x40); + if (puVar11 == (undefined4 *)0x0) goto LAB_18003fb23; + *puVar11 = 0xcccc; + puVar15 = puVar15 + lVar3; +LAB_18003fa62: + lpMultiByteStr = (char *)(puVar11 + 4); + puVar16 = puVar15; + } + else { + *(undefined8 *)(puVar15 + -8) = 0x18003fa54; + puVar11 = FUN_1800349a0(sVar13); + lpMultiByteStr = (char *)0x0; + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = 0xdddd; + goto LAB_18003fa62; + } + } + DVar5 = local_48[0]; + if (lpMultiByteStr != (char *)0x0) { + *(int *)(puVar16 + 0x28) = iVar7; + *(char **)(puVar16 + 0x20) = lpMultiByteStr; + *(undefined8 *)(puVar16 + -8) = 0x18003fa8e; + iVar8 = LCMapStringA(param_2,DVar5,lpSrcStr,cchSrc,*(LPSTR *)(puVar16 + 0x20), + *(int *)(puVar16 + 0x28)); + iVar4 = 0; + if (iVar8 != 0) { + if ((DVar5 >> 10 & 1) == 0) { + if (param_7 == 0) { + param_6 = (LPWSTR)0x0; + *(undefined4 *)(puVar16 + 0x28) = 0; + } + else { + *(int *)(puVar16 + 0x28) = param_7; + } + *(LPWSTR *)(puVar16 + 0x20) = param_6; + *(undefined8 *)(puVar16 + -8) = 0x18003fb0e; + iVar4 = MultiByteToWideChar(param_8,1,lpMultiByteStr,iVar7, + *(LPWSTR *)(puVar16 + 0x20),*(int *)(puVar16 + 0x28)); + } + else { + iVar4 = iVar7; + if (param_7 != 0) { + if (param_7 <= iVar7) { + iVar7 = param_7 + -1; + } + *(undefined8 *)(puVar16 + -8) = 0x18003fac0; + eVar9 = strncpy_s((char *)param_6,(longlong)param_7,lpMultiByteStr, + (longlong)iVar7); + if (eVar9 != 0) { + *(undefined8 *)(puVar16 + 0x20) = 0; + /* WARNING: Subroutine does not return */ + *(undefined **)(puVar16 + -8) = &UNK_18003fada; + FID_conflict__invoke_watson + ((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0, + *(uintptr_t *)(puVar16 + 0x20)); + } + } + } + } + if (*(int *)(lpMultiByteStr + -0x10) == 0xdddd) { + *(undefined8 *)(puVar16 + -8) = 0x18003fb23; + FUN_180034a70(lpMultiByteStr + -0x10); + } + } + } + } +LAB_18003fb23: + if (*(int *)(lpSrcStr + -0x10) == 0xdddd) { + *(undefined8 *)(puVar16 + -8) = 0x18003fb38; + FUN_180034a70(lpSrcStr + -0x10); + } + goto LAB_18003fb3f; + } + } + } +LAB_18003fb3d: + iVar4 = 0; +LAB_18003fb3f: + *(undefined8 *)(puVar16 + -8) = 0x18003fb4b; + return iVar4; +} + + +================================================================== + +### EXPORT FUNC 18003fb70 (328 bytes) name=FUN_18003fb70 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18003fb70(longlong *param_1,LCID param_2,DWORD param_3,LPCWSTR param_4,int param_5, + LPWSTR param_6,int param_7,UINT param_8) + +{ + pthreadmbcinfo ptVar1; + bool bVar2; + DWORD *pDVar3; + pthreadlocinfo local_38; + pthreadmbcinfo local_30; + DWORD *local_28; + undefined1 local_20; + + bVar2 = false; + local_20 = 0; + if (param_1 == (longlong *)0x0) { + pDVar3 = FUN_1800380a0(); + local_38 = *(pthreadlocinfo *)(pDVar3 + 0x30); + ptVar1 = *(pthreadmbcinfo *)(pDVar3 + 0x2e); + local_30 = ptVar1; + local_28 = pDVar3; + if ((local_38 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_38 = __updatetlocinfo(); + } + if ((ptVar1 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_30 = __updatetmbcinfo(); + } + if ((pDVar3[0x32] & 2) == 0) { + pDVar3[0x32] = pDVar3[0x32] | 2; + bVar2 = true; + local_20 = 1; + } + } + else { + local_38 = (pthreadlocinfo)*param_1; + local_30 = (pthreadmbcinfo)param_1[1]; + bVar2 = false; + pDVar3 = local_28; + } + FUN_18003f7b0((longlong *)&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (bVar2) { + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18003fcc0 (29 bytes) name=wcsnlen + +/* Library Function - Single Match + wcsnlen + + Library: Visual Studio 2005 Release */ + +size_t __cdecl wcsnlen(wchar_t *_Src,size_t _MaxCount) + +{ + size_t sVar1; + + sVar1 = 0; + if (_MaxCount != 0) { + do { + if (*_Src == L'\0') { + return sVar1; + } + sVar1 = sVar1 + 1; + _Src = _Src + 1; + } while (sVar1 < _MaxCount); + } + return sVar1; +} + + +================================================================== + +### EXPORT FUNC 18003fce0 (225 bytes) name=FUN_18003fce0 + +void FUN_18003fce0(byte *param_1,int param_2,FILE *param_3,int *param_4) + +{ + int *piVar1; + byte bVar2; + uint uVar3; + DWORD *pDVar4; + ulonglong uVar5; + + if (((param_3->_flag & 0x40) != 0) && (param_3->_base == (char *)0x0)) { + *param_4 = *param_4 + param_2; + return; + } +joined_r0x00018003fd17: + do { + if (param_2 < 1) { + return; + } + bVar2 = *param_1; + param_2 = param_2 + -1; + if (((param_3->_flag & 0x40) == 0) || (param_3->_base != (char *)0x0)) { + piVar1 = ¶m_3->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar5 = FUN_1800385f0((int)(char)bVar2,param_3); + uVar3 = (uint)uVar5; + } + else { + *param_3->_ptr = bVar2; + param_3->_ptr = param_3->_ptr + 1; + uVar3 = (uint)bVar2; + } + if (uVar3 != 0xffffffff) goto LAB_18003fd5c; + *param_4 = -1; + } + else { +LAB_18003fd5c: + *param_4 = *param_4 + 1; + } + param_1 = param_1 + 1; + } while (*param_4 != -1); + pDVar4 = FUN_180035b40(); + if (*pDVar4 != 0x2a) { + return; + } + if (((param_3->_flag & 0x40) == 0) || (param_3->_base != (char *)0x0)) { + piVar1 = ¶m_3->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar5 = FUN_1800385f0(0x3f,param_3); + if ((int)uVar5 == -1) { + *param_4 = -1; + goto joined_r0x00018003fd17; + } + } + else { + *param_3->_ptr = '?'; + param_3->_ptr = param_3->_ptr + 1; + } + } + *param_4 = *param_4 + 1; + goto joined_r0x00018003fd17; +} + + +================================================================== + +### EXPORT FUNC 18003fdd0 (3964 bytes) name=FUN_18003fdd0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint FUN_18003fdd0(FILE *param_1,byte *param_2,longlong *param_3,WCHAR *param_4) + +{ + int *piVar1; + byte bVar2; + short *psVar3; + uint *puVar4; + WCHAR WVar5; + char cVar6; + ushort uVar7; + int iVar8; + uint uVar9; + uint uVar10; + int iVar11; + DWORD *pDVar12; + undefined *puVar13; + undefined6 extraout_var_00; + undefined7 extraout_var; + code *pcVar14; + ulonglong uVar15; + uint uVar16; + longlong lVar17; + undefined *puVar18; + WCHAR *pWVar19; + WCHAR *pWVar20; + uint uVar21; + byte *pbVar22; + char *pcVar23; + byte bVar24; + uint uVar25; + int iVar26; + bool bVar27; + undefined1 auStackY_318 [32]; + uint local_2d8; + uint local_2d4; + uint local_2d0; + int local_2cc; + int local_2c8; + uint local_2c4; + byte local_2c0; + char local_2bf; + WCHAR *local_2b8; + int local_2b0; + uint local_2ac; + int local_2a8; + pthreadlocinfo local_2a0; + pthreadmbcinfo local_298; + DWORD *local_290; + char local_288; + undefined4 local_280; + undefined4 local_27c; + WCHAR *local_278; + int local_270 [2]; + WCHAR *local_268; + byte *local_260; + ulonglong local_258 [63]; + undefined1 auStack_59 [9]; + ulonglong local_50; + + local_50 = DAT_18006cea0 ^ (ulonglong)auStackY_318; + uVar10 = 0; + uVar21 = 0; + local_280 = 0; + local_2d8 = 0; + local_2b0 = 0; + local_2d0 = 0; + local_2c4 = 0; + local_2a8 = 0; + local_2cc = 0; + local_288 = '\0'; + local_2b8 = param_4; + if (param_3 == (longlong *)0x0) { + local_290 = FUN_1800380a0(); + local_2a0 = *(pthreadlocinfo *)(local_290 + 0x30); + local_298 = *(pthreadmbcinfo *)(local_290 + 0x2e); + if ((local_2a0 != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_290[0x32]) == 0)) { + local_2a0 = __updatetlocinfo(); + } + if ((local_298 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_290[0x32]) == 0)) { + local_298 = __updatetmbcinfo(); + } + if ((local_290[0x32] & 2) == 0) { + local_290[0x32] = local_290[0x32] | 2; + local_288 = '\x01'; + } + } + else { + local_2a0 = (pthreadlocinfo)*param_3; + local_298 = (pthreadmbcinfo)param_3[1]; + } + if (param_1 == (FILE *)0x0) { + pDVar12 = FUN_180035b40(); + *pDVar12 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_288 != '\0') { + local_290[0x32] = local_290[0x32] & 0xfffffffd; + } + return 0xffffffff; + } + if ((param_1->_flag & 0x40) == 0) { + iVar8 = FUN_180047880((longlong)param_1); + puVar18 = &DAT_18006d970; + if ((iVar8 == -1) || (iVar8 = FUN_180047880((longlong)param_1), iVar8 == -2)) { + puVar13 = &DAT_18006d970; + } + else { + iVar8 = FUN_180047880((longlong)param_1); + lVar17 = (&DAT_1800db4e0)[(longlong)iVar8 >> 5]; + uVar9 = FUN_180047880((longlong)param_1); + puVar13 = (undefined *)((ulonglong)(uVar9 & 0x1f) * 0x50 + lVar17); + } + if ((puVar13[0x38] & 0x7f) == 0) { + iVar8 = FUN_180047880((longlong)param_1); + if ((iVar8 != -1) && (iVar8 = FUN_180047880((longlong)param_1), iVar8 != -2)) { + iVar8 = FUN_180047880((longlong)param_1); + lVar17 = (&DAT_1800db4e0)[(longlong)iVar8 >> 5]; + uVar9 = FUN_180047880((longlong)param_1); + puVar18 = (undefined *)((ulonglong)(uVar9 & 0x1f) * 0x50 + lVar17); + } + param_4 = local_2b8; + if ((puVar18[0x38] & 0x80) == 0) goto LAB_180040036; + } + pDVar12 = FUN_180035b40(); + *pDVar12 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar27 = local_288 == '\0'; + } + else { +LAB_180040036: + if (param_2 != (byte *)0x0) { + bVar24 = *param_2; + local_2d4 = 0; + local_2c8 = 0; + local_278 = (WCHAR *)0x0; + pWVar20 = local_268; + uVar16 = uVar10; + uVar25 = uVar10; + uVar9 = 0; + if (bVar24 != 0) { + do { + uVar21 = uVar16; + pbVar22 = param_2 + 1; + local_260 = pbVar22; + if ((int)uVar21 < 0) break; + uVar16 = 0; + if ((byte)(bVar24 - 0x20) < 0x59) { + uVar16 = (byte)"JanFebMarAprMayJunJulAugSepOctNovDec"[(longlong)(char)bVar24 + 0x10] & + 0xf; + } + local_2ac = (uint)((byte)(&DAT_1800575a0) + [(longlong)(int)uVar16 * 9 + (longlong)(int)uVar9] >> 4); + if (local_2ac == 8) goto LAB_180040cbf; + switch(local_2ac) { + case 0: +switchD_180040141_caseD_0: + uVar9 = (uint)bVar24; + local_2cc = 0; + uVar7 = FUN_180047bb0((uint)bVar24,&local_2a0); + if ((int)CONCAT62(extraout_var_00,uVar7) != 0) { + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar15 = FUN_1800385f0((int)(char)bVar24,param_1); + uVar9 = (uint)uVar15; + } + else { + *param_1->_ptr = bVar24; + param_1->_ptr = param_1->_ptr + 1; + } + if (uVar9 == 0xffffffff) { + uVar21 = 0xffffffff; + } + else { + uVar21 = uVar21 + 1; + } + } + else { + uVar21 = uVar21 + 1; + } + bVar24 = *pbVar22; + pbVar22 = param_2 + 2; + if (bVar24 == 0) goto LAB_180040cbf; + } + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar15 = FUN_1800385f0((int)(char)bVar24,param_1); + uVar9 = (uint)uVar15; + } + else { + *param_1->_ptr = bVar24; + param_1->_ptr = param_1->_ptr + 1; + uVar9 = (uint)bVar24; + } + if (uVar9 == 0xffffffff) { + local_2d4 = 0xffffffff; + uVar21 = 0xffffffff; + } + else { + local_2d4 = uVar21 + 1; + uVar21 = local_2d4; + } + } + else { + local_2d4 = uVar21 + 1; + uVar21 = local_2d4; + } + break; + case 1: + uVar10 = 0xffffffff; + local_27c = 0; + local_2a8 = 0; + local_2b0 = 0; + local_2c4 = 0; + local_2d0 = 0xffffffff; + local_2d8 = 0; + local_2cc = 0; + uVar25 = 0; + break; + case 2: + if (bVar24 == 0x20) { + local_2d8 = uVar25 | 2; + uVar25 = local_2d8; + } + else if (bVar24 == 0x23) { + local_2d8 = uVar25 | 0x80; + uVar25 = local_2d8; + } + else if (bVar24 == 0x2b) { + local_2d8 = uVar25 | 1; + uVar25 = local_2d8; + } + else if (bVar24 == 0x2d) { + local_2d8 = uVar25 | 4; + uVar25 = local_2d8; + } + else if (bVar24 == 0x30) { + local_2d8 = uVar25 | 8; + uVar25 = local_2d8; + } + break; + case 3: + if (bVar24 == 0x2a) { + local_2b0 = *(int *)param_4; + local_2b8 = param_4 + 4; + if (local_2b0 < 0) { + local_2d8 = uVar25 | 4; + local_2b0 = -local_2b0; + uVar25 = local_2d8; + } + } + else { + local_2b0 = (char)bVar24 + -0x30 + local_2b0 * 10; + } + break; + case 4: + local_2d0 = 0; + uVar10 = 0; + break; + case 5: + if (bVar24 == 0x2a) { + local_2d0 = *(uint *)param_4; + local_2b8 = param_4 + 4; + uVar10 = local_2d0; + if ((int)local_2d0 < 0) { + local_2d0 = 0xffffffff; + uVar10 = 0xffffffff; + } + } + else { + local_2d0 = (char)bVar24 + -0x30 + uVar10 * 10; + uVar10 = local_2d0; + } + break; + case 6: + if (bVar24 == 0x49) { + bVar2 = *pbVar22; + local_2d8 = uVar25 | 0x8000; + if ((bVar2 == 0x36) && (param_2[2] == 0x34)) { + local_2d8 = uVar25 | 0x8000; + pbVar22 = param_2 + 3; + uVar25 = local_2d8; + } + else if ((bVar2 == 0x33) && (param_2[2] == 0x32)) { + local_2d8 = uVar25 & 0xffff7fff; + pbVar22 = param_2 + 3; + uVar25 = local_2d8; + } + else { + uVar25 = local_2d8; + if (((((bVar2 != 100) && (bVar2 != 0x69)) && (bVar2 != 0x6f)) && + ((bVar2 != 0x75 && (bVar2 != 0x78)))) && (bVar2 != 0x58)) { + local_2ac = 0; + goto switchD_180040141_caseD_0; + } + } + } + else if (bVar24 == 0x68) { + local_2d8 = uVar25 | 0x20; + uVar25 = local_2d8; + } + else if (bVar24 == 0x6c) { + if (*pbVar22 == 0x6c) { + local_2d8 = uVar25 | 0x1000; + pbVar22 = param_2 + 2; + uVar25 = local_2d8; + } + else { + local_2d8 = uVar25 | 0x10; + uVar25 = local_2d8; + } + } + else if (bVar24 == 0x77) { + local_2d8 = uVar25 | 0x800; + uVar25 = local_2d8; + } + break; + case 7: + switch(bVar24) { + case 0x41: + case 0x45: + case 0x47: + local_27c = 1; + bVar24 = bVar24 + 0x20; + case 0x61: + case 0x65: + case 0x66: + case 0x67: + local_2d8 = uVar25 | 0x40; + iVar8 = 0x200; + pWVar20 = (WCHAR *)local_258; + if ((int)uVar10 < 0) { + uVar10 = 6; + local_2d0 = 6; + iVar26 = 0x200; + } + else { + iVar26 = iVar8; + if (uVar10 == 0) { + if (bVar24 == 0x67) { + uVar10 = 1; + local_2d0 = 1; + } + } + else { + if ((int)uVar10 < 0x201) { + if ((int)uVar10 < 0xa4) goto LAB_180040700; + } + else { + uVar10 = 0x200; + local_2d0 = 0x200; + } + iVar26 = uVar10 + 0x15d; + local_278 = (WCHAR *)FUN_180040de0((longlong)iVar26); + pWVar20 = local_278; + if (local_278 == (WCHAR *)0x0) { + uVar10 = 0xa3; + local_2d0 = 0xa3; + pWVar20 = (WCHAR *)local_258; + iVar26 = iVar8; + } + } + } +LAB_180040700: + local_268 = *(WCHAR **)local_2b8; + local_2b8 = local_2b8 + 4; + pcVar14 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc70); + (*pcVar14)(&local_268,pWVar20,(longlong)iVar26); + if (((uVar25 & 0x80) != 0) && (uVar10 == 0)) { + pcVar14 = (code *)FUN_180037d20(DAT_18006dc88); + (*pcVar14)(pWVar20,&local_2a0); + } + if ((bVar24 == 0x67) && ((uVar25 & 0x80) == 0)) { + pcVar14 = (code *)FUN_180037d20((INT_PTR)PTR_LAB_18006dc80); + (*pcVar14)(pWVar20,&local_2a0); + } + if ((char)*pWVar20 == '-') { + local_2d8 = uVar25 | 0x140; + pWVar20 = (WCHAR *)((longlong)pWVar20 + 1); + } + lVar17 = -1; + pWVar19 = pWVar20; + do { + if (lVar17 == 0) break; + lVar17 = lVar17 + -1; + WVar5 = *pWVar19; + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1); + } while ((char)WVar5 != '\0'); + local_2c8 = ~(uint)lVar17 - 1; + uVar25 = local_2d8; + break; + case 0x42: + case 0x44: + case 0x46: + case 0x48: + case 0x49: + case 0x4a: + case 0x4b: + case 0x4c: + case 0x4d: + case 0x4e: + case 0x4f: + case 0x50: + case 0x51: + case 0x52: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x59: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x5e: + case 0x5f: + case 0x60: + case 0x62: + case 0x68: + case 0x6a: + case 0x6b: + case 0x6c: + case 0x6d: + case 0x71: + case 0x72: + case 0x74: + case 0x76: + case 0x77: + break; + case 0x43: + if ((uVar25 & 0x830) == 0) { + local_2d8 = uVar25 | 0x800; + uVar25 = local_2d8; + } + case 99: + if ((uVar25 & 0x810) == 0) { + local_2b8 = param_4 + 4; + local_2c8 = 1; + local_258[0]._0_1_ = (char)*param_4; + } + else { + local_2b8 = param_4 + 4; + iVar8 = FUN_180047b90(&local_2c8,local_258,0x200,*param_4); + if (iVar8 != 0) { + local_2a8 = 1; + pWVar20 = (WCHAR *)local_258; + break; + } + } + pWVar20 = (WCHAR *)local_258; + break; + case 0x53: + if ((uVar25 & 0x830) == 0) { + local_2d8 = uVar25 | 0x800; + uVar25 = local_2d8; + } + case 0x73: + pWVar19 = *(WCHAR **)param_4; + uVar9 = uVar10; + if (uVar10 == 0xffffffff) { + uVar9 = 0x7fffffff; + } + local_2b8 = param_4 + 4; + if ((uVar25 & 0x810) == 0) { + pWVar20 = pWVar19; + if (pWVar19 == (WCHAR *)0x0) { + pWVar19 = (WCHAR *)PTR_DAT_18006d718; + pWVar20 = (WCHAR *)PTR_DAT_18006d718; + } + for (; (uVar9 != 0 && (uVar9 = uVar9 - 1, (char)*pWVar19 != '\0')); + pWVar19 = (WCHAR *)((longlong)pWVar19 + 1)) { + } + local_2c8 = (int)pWVar19 - (int)pWVar20; + } + else { + if (pWVar19 == (WCHAR *)0x0) { + pWVar19 = (WCHAR *)PTR_DAT_18006d720; + } + local_2cc = 1; + for (pWVar20 = pWVar19; (uVar9 != 0 && (uVar9 = uVar9 - 1, *pWVar20 != L'\0')); + pWVar20 = pWVar20 + 1) { + } + local_2c8 = (int)((longlong)pWVar20 - (longlong)pWVar19 >> 1); + pWVar20 = pWVar19; + } + break; + case 0x58: + goto switchD_180040494_caseD_58; + case 0x5a: + psVar3 = *(short **)param_4; + local_2b8 = param_4 + 4; + if ((psVar3 == (short *)0x0) || + (pWVar20 = *(WCHAR **)(psVar3 + 4), pWVar20 == (WCHAR *)0x0)) { + lVar17 = -1; + pcVar23 = PTR_DAT_18006d718; + do { + if (lVar17 == 0) break; + lVar17 = lVar17 + -1; + cVar6 = *pcVar23; + pcVar23 = pcVar23 + 1; + } while (cVar6 != '\0'); + local_2c8 = ~(uint)lVar17 - 1; + pWVar20 = (WCHAR *)PTR_DAT_18006d718; + } + else if ((uVar25 >> 0xb & 1) == 0) { + local_2c8 = (int)*psVar3; + local_2cc = 0; + } + else { + local_2cc = 1; + local_2c8 = (int)*psVar3 / 2; + } + break; + case 100: + case 0x69: + local_2d8 = uVar25 | 0x40; + iVar8 = 10; + uVar25 = local_2d8; + goto LAB_180040861; + case 0x6e: + local_2b8 = param_4 + 4; + puVar4 = *(uint **)param_4; + bVar27 = FUN_1800478c0(); + if ((int)CONCAT71(extraout_var,bVar27) != 0) { + if ((uVar25 & 0x20) == 0) { + *puVar4 = uVar21; + local_2a8 = 1; + } + else { + *(short *)puVar4 = (short)uVar21; + local_2a8 = 1; + } + goto LAB_180040c35; + } + goto LAB_180040cbf; + case 0x6f: + iVar8 = 8; + if ((char)uVar25 < '\0') { + local_2d8 = uVar25 | 0x200; + uVar25 = local_2d8; + } + goto LAB_180040861; + case 0x70: + local_2d8 = uVar25 | 0x8000; + uVar10 = 0x10; + uVar25 = local_2d8; +switchD_180040494_caseD_58: + cVar6 = '\a'; + local_280 = 7; +LAB_180040820: + iVar8 = 0x10; + if ((char)uVar25 < '\0') { + local_2bf = cVar6 + 'Q'; + local_2c0 = 0x30; + local_2c4 = 2; + } + goto LAB_180040861; + case 0x75: + iVar8 = 10; +LAB_180040861: + if (uVar25 >> 0xf == 0) { + if ((uVar25 >> 0xc & 1) == 0) { + if ((uVar25 & 0x20) == 0) { + if ((uVar25 & 0x40) == 0) { + uVar15 = (ulonglong)*(uint *)param_4; + } + else { + uVar15 = (ulonglong)*(int *)param_4; + } + } + else if ((uVar25 & 0x40) == 0) { + uVar15 = (ulonglong)(ushort)*param_4; + } + else { + uVar15 = (ulonglong)*param_4; + } + } + else { + uVar15 = *(ulonglong *)param_4; + } + } + else { + uVar15 = *(ulonglong *)param_4; + } + local_2b8 = param_4 + 4; + if (((uVar25 & 0x40) != 0) && ((longlong)uVar15 < 0)) { + uVar15 = -uVar15; + uVar25 = uVar25 | 0x100; + local_2d8 = uVar25; + } + if ((uVar25 >> 0xf == 0) && ((uVar25 >> 0xc & 1) == 0)) { + uVar15 = uVar15 & 0xffffffff; + } + if ((int)uVar10 < 0) { + uVar10 = 1; + } + else { + local_2d8 = uVar25 & 0xfffffff7; + if (0x200 < (int)uVar10) { + uVar10 = 0x200; + } + } + pWVar19 = (WCHAR *)auStack_59; + if (uVar15 == 0) { + local_2c4 = 0; + } + while ((local_2d0 = uVar10 - 1, 0 < (int)uVar10 || (uVar15 != 0))) { + uVar10 = (int)(uVar15 % (ulonglong)(longlong)iVar8) + 0x30; + cVar6 = (char)uVar10; + if (0x39 < uVar10) { + cVar6 = cVar6 + (char)local_280; + } + *(char *)pWVar19 = cVar6; + pWVar19 = (WCHAR *)((longlong)pWVar19 + -1); + uVar15 = uVar15 / (ulonglong)(longlong)iVar8; + uVar10 = local_2d0; + } + local_2c8 = (int)auStack_59 - (int)pWVar19; + pWVar20 = (WCHAR *)((longlong)pWVar19 + 1); + uVar10 = local_2d0; + uVar25 = local_2d8; + if (((local_2d8 >> 9 & 1) != 0) && ((local_2c8 == 0 || (*(char *)pWVar20 != '0')))) { + local_2c8 = local_2c8 + 1; + *(undefined1 *)pWVar19 = 0x30; + pWVar20 = pWVar19; + } + break; + case 0x78: + cVar6 = '\''; + local_280 = 0x27; + goto LAB_180040820; + } + iVar8 = local_2cc; + if (local_2a8 == 0) { + if ((uVar25 & 0x40) != 0) { + if ((uVar25 >> 8 & 1) == 0) { + if ((uVar25 & 1) == 0) { + if ((uVar25 & 2) != 0) { + local_2c0 = 0x20; + local_2c4 = 1; + } + } + else { + local_2c0 = 0x2b; + local_2c4 = 1; + } + } + else { + local_2c0 = 0x2d; + local_2c4 = 1; + } + } + uVar21 = local_2c4; + iVar26 = (local_2b0 - local_2c8) - local_2c4; + if ((uVar25 & 0xc) == 0) { + FUN_1800387c0(0x20,iVar26,param_1,(int *)&local_2d4); + } + FUN_18003fce0(&local_2c0,uVar21,param_1,(int *)&local_2d4); + if (((uVar25 & 8) != 0) && ((uVar25 & 4) == 0)) { + FUN_1800387c0(0x30,iVar26,param_1,(int *)&local_2d4); + } + if ((iVar8 == 0) || + (pWVar19 = pWVar20, iVar8 = local_2c8, uVar21 = local_2d4, local_2c8 < 1)) { + FUN_18003fce0((byte *)pWVar20,local_2c8,param_1,(int *)&local_2d4); + uVar21 = local_2d4; + } + else { + do { + iVar8 = iVar8 + -1; + iVar11 = FUN_180047b90(local_270,(ulonglong *)(auStack_59 + 1),6,*pWVar19); + if ((iVar11 != 0) || (local_270[0] == 0)) { + uVar21 = 0xffffffff; + local_2d4 = 0xffffffff; + uVar10 = local_2d0; + goto LAB_180040c35; + } + pbVar22 = auStack_59 + 1; + iVar11 = local_270[0]; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { +joined_r0x000180040b03: + do { + if (iVar11 < 1) goto LAB_180040bb3; + bVar24 = *pbVar22; + iVar11 = iVar11 + -1; + if (((param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar15 = FUN_1800385f0((int)(char)bVar24,param_1); + uVar10 = (uint)uVar15; + } + else { + *param_1->_ptr = bVar24; + param_1->_ptr = param_1->_ptr + 1; + uVar10 = (uint)bVar24; + } + if (uVar10 == 0xffffffff) { + local_2d4 = 0xffffffff; + } + else { + local_2d4 = uVar21 + 1; + } + } + else { + local_2d4 = uVar21 + 1; + } + uVar21 = local_2d4; + pbVar22 = pbVar22 + 1; + if (local_2d4 == 0xffffffff) { + pDVar12 = FUN_180035b40(); + if (*pDVar12 != 0x2a) goto LAB_180040bb3; + if (((param_1->_flag & 0x40) != 0) && (param_1->_base == (char *)0x0)) { + local_2d4 = 0; + uVar21 = local_2d4; + goto joined_r0x000180040b03; + } + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar15 = FUN_1800385f0(0x3f,param_1); + if ((int)uVar15 == -1) { + local_2d4 = 0xffffffff; + uVar21 = local_2d4; + goto joined_r0x000180040b03; + } + } + else { + *param_1->_ptr = '?'; + param_1->_ptr = param_1->_ptr + 1; + } + local_2d4 = 0; + uVar21 = local_2d4; + } + } while( true ); + } + local_2d4 = uVar21 + local_270[0]; + uVar21 = local_2d4; +LAB_180040bb3: + pWVar19 = pWVar19 + 1; + uVar25 = local_2d8; + } while (iVar8 != 0); + } + uVar10 = local_2d0; + if ((-1 < (int)uVar21) && ((uVar25 & 4) != 0)) { + FUN_1800387c0(0x20,iVar26,param_1,(int *)&local_2d4); + uVar10 = local_2d0; + uVar21 = local_2d4; + } + } +LAB_180040c35: + pbVar22 = local_260; + uVar25 = local_2d8; + if (local_278 != (WCHAR *)0x0) { + FUN_180034a70(local_278); + local_278 = (WCHAR *)0x0; + pbVar22 = local_260; + } + } + bVar24 = *pbVar22; + param_2 = pbVar22; + param_4 = local_2b8; + uVar9 = local_2ac; + uVar16 = uVar21; + } while (bVar24 != 0); + if ((uVar9 != 0) && (uVar9 != 7)) { +LAB_180040cbf: + pDVar12 = FUN_180035b40(); + *pDVar12 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar27 = local_288 == '\0'; + goto LAB_180040cea; + } + } + if (local_288 == '\0') { + return uVar21; + } + local_290[0x32] = local_290[0x32] & 0xfffffffd; + return uVar21; + } + pDVar12 = FUN_180035b40(); + *pDVar12 = 0x16; + FUN_1800384e0(0,0,0,0,0); + bVar27 = local_288 == '\0'; + } +LAB_180040cea: + if (!bVar27) { + local_290[0x32] = local_290[0x32] & 0xfffffffd; + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180040de0 (112 bytes) name=FUN_180040de0 + +longlong FUN_180040de0(size_t param_1) + +{ + LPVOID pvVar1; + DWORD dwMilliseconds; + + dwMilliseconds = 0; + while( true ) { + pvVar1 = FUN_1800349a0(param_1); + if (pvVar1 != (LPVOID)0x0) { + return (longlong)pvVar1; + } + if (DAT_180072ed0 == 0) break; + Sleep(dwMilliseconds); + dwMilliseconds = dwMilliseconds + 1000; + if (DAT_180072ed0 < dwMilliseconds) { + dwMilliseconds = 0xffffffff; + } + if (dwMilliseconds == 0xffffffff) { + return 0; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180040e50 (142 bytes) name=FUN_180040e50 + +LPVOID FUN_180040e50(ulonglong param_1,ulonglong param_2) + +{ + LPVOID pvVar1; + uint dwMilliseconds; + + dwMilliseconds = 0; + while( true ) { + pvVar1 = FUN_180043e80(param_1,param_2,(undefined4 *)0x0); + if (pvVar1 != (LPVOID)0x0) { + return pvVar1; + } + if (DAT_180072ed0 == 0) break; + Sleep(dwMilliseconds); + dwMilliseconds = dwMilliseconds + 1000; + if (DAT_180072ed0 < dwMilliseconds) { + dwMilliseconds = 0xffffffff; + } + if (dwMilliseconds == 0xffffffff) { + return (LPVOID)0x0; + } + } + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 180040ee0 (144 bytes) name=FUN_180040ee0 + +LPVOID FUN_180040ee0(LPVOID param_1,ulonglong param_2) + +{ + LPVOID pvVar1; + uint dwMilliseconds; + + dwMilliseconds = 0; + do { + pvVar1 = FUN_180035950(param_1,param_2); + if (pvVar1 != (LPVOID)0x0) { + return pvVar1; + } + if (param_2 == 0) { + return (LPVOID)0x0; + } + if (DAT_180072ed0 == 0) { + return (LPVOID)0x0; + } + Sleep(dwMilliseconds); + dwMilliseconds = dwMilliseconds + 1000; + if (DAT_180072ed0 < dwMilliseconds) { + dwMilliseconds = 0xffffffff; + } + } while (dwMilliseconds != 0xffffffff); + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 180040f70 (145 bytes) name=FUN_180040f70 + +LPVOID FUN_180040f70(LPCVOID param_1,ulonglong param_2,ulonglong param_3) + +{ + LPVOID pvVar1; + uint dwMilliseconds; + + dwMilliseconds = 0; + do { + pvVar1 = FUN_180035a40(param_1,param_2,param_3); + if (pvVar1 != (LPVOID)0x0) { + return pvVar1; + } + if (param_3 == 0) { + return (LPVOID)0x0; + } + if (DAT_180072ed0 == 0) { + return (LPVOID)0x0; + } + Sleep(dwMilliseconds); + dwMilliseconds = dwMilliseconds + 1000; + if (DAT_180072ed0 < dwMilliseconds) { + dwMilliseconds = 0xffffffff; + } + } while (dwMilliseconds != 0xffffffff); + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 180041010 (81 bytes) name=_heap_init + +/* Library Function - Single Match + _heap_init + + Library: Visual Studio 2005 Release */ + +int __cdecl _heap_init(void) + +{ + undefined4 local_res8 [8]; + + DAT_180072ed8 = HeapCreate(0,0x1000,0); + if (DAT_180072ed8 == (HANDLE)0x0) { + return 0; + } + local_res8[0] = 2; + HeapSetInformation(DAT_180072ed8,HeapCompatibilityInformation,local_res8,4); + return 1; +} + + +================================================================== + +### EXPORT FUNC 180041070 (33 bytes) name=FUN_180041070 + +void FUN_180041070(void) + +{ + HeapDestroy(DAT_180072ed8); + DAT_180072ed8 = (HANDLE)0x0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800410a0 (779 bytes) name=FUN_1800410a0 + +undefined8 FUN_1800410a0(void) + +{ + DWORD DVar1; + undefined8 *puVar2; + undefined8 uVar3; + ulonglong uVar4; + HANDLE pvVar5; + uint uVar6; + longlong lVar7; + longlong *plVar8; + ulonglong uVar9; + byte *pbVar10; + ulonglong uVar11; + UINT *pUVar12; + UINT UVar13; + UINT UVar14; + _STARTUPINFOA local_88; + + GetStartupInfoA(&local_88); + puVar2 = FUN_180040e50(0x20,0x50); + if (puVar2 == (undefined8 *)0x0) { + uVar3 = 0xffffffff; + } + else { + DAT_1800db4c8 = 0x20; + DAT_1800db4e0 = puVar2; + if (puVar2 < puVar2 + 0x140) { + do { + *(undefined1 *)(puVar2 + 1) = 0; + *puVar2 = 0xffffffffffffffff; + *(undefined1 *)((longlong)puVar2 + 9) = 10; + *(undefined4 *)((longlong)puVar2 + 0xc) = 0; + *(undefined1 *)(puVar2 + 7) = 0; + *(undefined1 *)((longlong)puVar2 + 0x39) = 10; + *(undefined1 *)((longlong)puVar2 + 0x3a) = 10; + puVar2 = puVar2 + 10; + } while (puVar2 < DAT_1800db4e0 + 0x140); + } + uVar9 = 0; + uVar11 = uVar9; + if ((local_88.cbReserved2 != 0) && ((UINT *)local_88.lpReserved2 != (UINT *)0x0)) { + UVar14 = *(UINT *)local_88.lpReserved2; + pUVar12 = (UINT *)((longlong)local_88.lpReserved2 + 4); + pbVar10 = (byte *)((longlong)pUVar12 + (longlong)(int)UVar14); + UVar13 = 0x800; + if ((int)UVar14 < 0x800) { + UVar13 = UVar14; + } + lVar7 = 1; + while ((UVar14 = UVar13, (int)DAT_1800db4c8 < (int)UVar13 && + (puVar2 = FUN_180040e50(0x20,0x50), UVar14 = DAT_1800db4c8, puVar2 != (undefined8 *)0x0 + ))) { + (&DAT_1800db4e0)[lVar7] = puVar2; + DAT_1800db4c8 = DAT_1800db4c8 + 0x20; + if (puVar2 < puVar2 + 0x140) { + do { + *(undefined1 *)(puVar2 + 1) = 0; + *puVar2 = 0xffffffffffffffff; + *(undefined1 *)((longlong)puVar2 + 9) = 10; + *(undefined4 *)((longlong)puVar2 + 0xc) = 0; + *(byte *)(puVar2 + 7) = *(byte *)(puVar2 + 7) & 0x80; + *(undefined1 *)((longlong)puVar2 + 0x39) = 10; + *(undefined1 *)((longlong)puVar2 + 0x3a) = 10; + puVar2 = puVar2 + 10; + } while (puVar2 < (undefined8 *)((longlong)(&DAT_1800db4e0)[lVar7] + 0xa00)); + } + lVar7 = lVar7 + 1; + } + uVar4 = uVar9; + if (0 < (int)UVar14) { + do { + pvVar5 = *(HANDLE *)pbVar10; + uVar6 = (uint)uVar4; + if ((((pvVar5 != (HANDLE)0xffffffffffffffff) && (pvVar5 != (HANDLE)0xfffffffffffffffe)) && + ((*pUVar12 & 1) != 0)) && + (((*pUVar12 & 8) != 0 || (DVar1 = GetFileType(pvVar5), DVar1 != 0)))) { + puVar2 = (undefined8 *) + ((ulonglong)(uVar6 & 0x1f) * 0x50 + + (longlong)(&DAT_1800db4e0)[(longlong)(int)uVar6 >> 5]); + *puVar2 = *(undefined8 *)pbVar10; + *(byte *)(puVar2 + 1) = (byte)*pUVar12; + uVar4 = FUN_180045910(puVar2 + 2,4000); + if ((int)uVar4 == 0) { + return 0xffffffff; + } + *(int *)((longlong)puVar2 + 0xc) = *(int *)((longlong)puVar2 + 0xc) + 1; + } + uVar4 = (ulonglong)(uVar6 + 1); + pUVar12 = (UINT *)((longlong)pUVar12 + 1); + pbVar10 = pbVar10 + 8; + } while ((int)(uVar6 + 1) < (int)UVar14); + } + } + do { + plVar8 = DAT_1800db4e0 + uVar9 * 10; + if ((*plVar8 == -1) || (*plVar8 == -2)) { + *(undefined1 *)(plVar8 + 1) = 0x81; + if (uVar9 == 0) { + DVar1 = 0xfffffff6; + } + else { + DVar1 = ((int)uVar11 == 1) - 0xc; + } + pvVar5 = GetStdHandle(DVar1); + if (((pvVar5 == (HANDLE)0xffffffffffffffff) || (pvVar5 == (HANDLE)0x0)) || + (DVar1 = GetFileType(pvVar5), DVar1 == 0)) { + *(byte *)(plVar8 + 1) = *(byte *)(plVar8 + 1) | 0x40; + *plVar8 = -2; + } + else { + *plVar8 = (longlong)pvVar5; + if ((DVar1 & 0xff) == 2) { + *(byte *)(plVar8 + 1) = *(byte *)(plVar8 + 1) | 0x40; + } + else if ((DVar1 & 0xff) == 3) { + *(byte *)(plVar8 + 1) = *(byte *)(plVar8 + 1) | 8; + } + uVar4 = FUN_180045910(plVar8 + 2,4000); + if ((int)uVar4 == 0) { + return 0xffffffff; + } + *(int *)((longlong)plVar8 + 0xc) = *(int *)((longlong)plVar8 + 0xc) + 1; + } + } + else { + *(byte *)(plVar8 + 1) = *(byte *)(plVar8 + 1) | 0x80; + } + uVar9 = uVar9 + 1; + uVar11 = (ulonglong)((int)uVar11 + 1); + } while ((longlong)uVar9 < 3); + SetHandleCount(DAT_1800db4c8); + uVar3 = 0; + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 1800413b0 (26 bytes) name=FUN_1800413b0 + +undefined8 FUN_1800413b0(void) + +{ + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800413d0 (130 bytes) name=FUN_1800413d0 + +void FUN_1800413d0(void) + +{ + ulonglong uVar1; + ulonglong *puVar2; + + puVar2 = &DAT_1800db4e0; + do { + uVar1 = *puVar2; + if (uVar1 != 0) { + if (uVar1 < uVar1 + 0xa00) { + do { + if (*(int *)(uVar1 + 0xc) != 0) { + DeleteCriticalSection((LPCRITICAL_SECTION)(uVar1 + 0x10)); + } + uVar1 = uVar1 + 0x50; + } while (uVar1 < *puVar2 + 0xa00); + } + FUN_180034a70((LPVOID)*puVar2); + *puVar2 = 0; + } + puVar2 = puVar2 + 1; + } while ((longlong)puVar2 < 0x1800db6e0); + return; +} + + +================================================================== + +### EXPORT FUNC 180041460 (359 bytes) name=FUN_180041460 + +undefined8 FUN_180041460(void) + +{ + char cVar1; + char cVar2; + errno_t eVar3; + undefined8 *puVar4; + char *pcVar5; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + char *pcVar9; + int iVar10; + + if (DAT_1800db6f8 == 0) { + FUN_180037750(); + } + iVar10 = 0; + if (DAT_1800727c0 == (char *)0x0) { + return 0xffffffff; + } + cVar2 = *DAT_1800727c0; + pcVar9 = DAT_1800727c0; + while (cVar2 != '\0') { + if (cVar2 != '=') { + iVar10 = iVar10 + 1; + } + uVar7 = 0xffffffffffffffff; + pcVar5 = pcVar9; + do { + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + cVar2 = *pcVar5; + pcVar5 = pcVar5 + 1; + } while (cVar2 != '\0'); + pcVar9 = pcVar9 + ~uVar7; + cVar2 = *pcVar9; + } + puVar4 = FUN_180040e50((longlong)(iVar10 + 1),8); + DAT_180072808 = puVar4; + if (puVar4 == (undefined8 *)0x0) { + return 0xffffffff; + } + cVar2 = *DAT_1800727c0; + pcVar9 = DAT_1800727c0; + do { + if (cVar2 == '\0') { + FUN_180034a70(DAT_1800727c0); + DAT_1800727c0 = (char *)0x0; + *puVar4 = 0; + DAT_1800db6e0 = 1; + return 0; + } + lVar8 = -1; + pcVar5 = pcVar9; + do { + if (lVar8 == 0) break; + lVar8 = lVar8 + -1; + cVar1 = *pcVar5; + pcVar5 = pcVar5 + 1; + } while (cVar1 != '\0'); + uVar6 = ~(uint)lVar8; + if (cVar2 != '=') { + pcVar5 = FUN_180040e50((longlong)(int)uVar6,1); + *puVar4 = pcVar5; + if (pcVar5 == (char *)0x0) { + FUN_180034a70(DAT_180072808); + DAT_180072808 = (undefined8 *)0x0; + return 0xffffffff; + } + eVar3 = strcpy_s(pcVar5,(longlong)(int)uVar6,pcVar9); + if (eVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + puVar4 = puVar4 + 1; + } + pcVar9 = pcVar9 + (int)uVar6; + cVar2 = *pcVar9; + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 1800415d0 (541 bytes) name=FUN_1800415d0 + +void FUN_1800415d0(byte *param_1,undefined8 *param_2,byte *param_3,int *param_4,int *param_5) + +{ + bool bVar1; + bool bVar2; + byte bVar3; + byte bVar4; + int iVar5; + undefined7 extraout_var; + undefined7 extraout_var_00; + uint uVar6; + ulonglong uVar7; + byte *pbVar8; + byte *pbVar9; + + *param_5 = 0; + *param_4 = 1; + if (param_2 != (undefined8 *)0x0) { + *param_2 = param_3; + param_2 = param_2 + 1; + } + bVar2 = false; + do { + if (*param_1 == 0x22) { + bVar2 = !bVar2; + bVar4 = 0x22; + pbVar8 = param_1 + 1; + } + else { + *param_5 = *param_5 + 1; + pbVar9 = param_3; + if (param_3 != (byte *)0x0) { + pbVar9 = param_3 + 1; + *param_3 = *param_1; + } + bVar4 = *param_1; + pbVar8 = param_1 + 1; + bVar3 = FUN_180049310((uint)bVar4); + param_3 = pbVar9; + if ((int)CONCAT71(extraout_var,bVar3) != 0) { + *param_5 = *param_5 + 1; + if (pbVar9 != (byte *)0x0) { + param_3 = pbVar9 + 1; + *pbVar9 = *pbVar8; + } + pbVar8 = param_1 + 2; + } + if (bVar4 == 0) { + pbVar8 = pbVar8 + -1; + goto LAB_18004169a; + } + } + param_1 = pbVar8; + } while ((bVar2) || ((bVar4 != 0x20 && (bVar4 != 9)))); + if (param_3 != (byte *)0x0) { + param_3[-1] = 0; + } +LAB_18004169a: + bVar2 = false; + while (*pbVar8 != 0) { + for (; (*pbVar8 == 0x20 || (*pbVar8 == 9)); pbVar8 = pbVar8 + 1) { + } + if (*pbVar8 == 0) break; + if (param_2 != (undefined8 *)0x0) { + *param_2 = param_3; + param_2 = param_2 + 1; + } + *param_4 = *param_4 + 1; + while( true ) { + uVar7 = 0; + bVar1 = true; + bVar4 = *pbVar8; + pbVar9 = pbVar8; + while (bVar4 == 0x5c) { + pbVar9 = pbVar9 + 1; + uVar7 = (ulonglong)((int)uVar7 + 1); + bVar4 = *pbVar9; + } + pbVar8 = pbVar9; + if (*pbVar9 == 0x22) { + if (((uVar7 & 1) == 0) && ((!bVar2 || (pbVar8 = pbVar9 + 1, pbVar9[1] != 0x22)))) { + bVar1 = false; + bVar2 = !bVar2; + pbVar8 = pbVar9; + } + uVar7 = uVar7 >> 1; + } + uVar6 = (uint)uVar7; + while (uVar6 != 0) { + uVar6 = (int)uVar7 - 1; + uVar7 = (ulonglong)uVar6; + if (param_3 != (byte *)0x0) { + *param_3 = 0x5c; + param_3 = param_3 + 1; + } + *param_5 = *param_5 + 1; + } + bVar4 = *pbVar8; + if ((bVar4 == 0) || ((!bVar2 && ((bVar4 == 0x20 || (bVar4 == 9)))))) break; + if (bVar1) { + bVar4 = FUN_180049310((int)(char)bVar4); + iVar5 = (int)CONCAT71(extraout_var_00,bVar4); + if (param_3 == (byte *)0x0) { + if (iVar5 != 0) { + pbVar8 = pbVar8 + 1; + *param_5 = *param_5 + 1; + } + *param_5 = *param_5 + 1; + goto LAB_18004179f; + } + pbVar9 = param_3; + if (iVar5 != 0) { + bVar4 = *pbVar8; + pbVar9 = param_3 + 1; + pbVar8 = pbVar8 + 1; + *param_3 = bVar4; + *param_5 = *param_5 + 1; + } + param_3 = pbVar9 + 1; + *pbVar9 = *pbVar8; + *param_5 = *param_5 + 1; + pbVar8 = pbVar8 + 1; + } + else { +LAB_18004179f: + pbVar8 = pbVar8 + 1; + } + } + if (param_3 != (byte *)0x0) { + *param_3 = 0; + param_3 = param_3 + 1; + } + *param_5 = *param_5 + 1; + } + if (param_2 != (undefined8 *)0x0) { + *param_2 = 0; + } + *param_4 = *param_4 + 1; + return; +} + + +================================================================== + +### EXPORT FUNC 1800417f0 (258 bytes) name=FUN_1800417f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_1800417f0(void) + +{ + ulonglong uVar1; + ulonglong uVar2; + undefined8 *puVar3; + byte *pbVar4; + ulonglong uVar5; + int local_res8 [2]; + int local_res10 [2]; + + if (DAT_1800db6f8 == 0) { + FUN_180037750(); + } + DAT_180072fe4 = 0; + GetModuleFileNameA((HMODULE)0x0,&DAT_180072ee0,0x104); + _DAT_180072828 = &DAT_180072ee0; + if ((DAT_1800db708 == (byte *)0x0) || (pbVar4 = DAT_1800db708, *DAT_1800db708 == 0)) { + pbVar4 = &DAT_180072ee0; + } + FUN_1800415d0(pbVar4,(undefined8 *)0x0,(byte *)0x0,local_res8,local_res10); + uVar5 = (ulonglong)local_res8[0]; + if (((uVar5 < 0x1fffffffffffffff) && + (uVar2 = (ulonglong)local_res10[0], uVar2 != 0xffffffffffffffff)) && + (uVar1 = uVar2 + uVar5 * 8, uVar2 <= uVar1)) { + puVar3 = (undefined8 *)FUN_180040de0(uVar1); + if (puVar3 != (undefined8 *)0x0) { + FUN_1800415d0(pbVar4,puVar3,(byte *)(puVar3 + uVar5),local_res8,local_res10); + _DAT_1800727f8 = puVar3; + _DAT_1800727f0 = local_res8[0] + -1; + return 0; + } + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180041900 (463 bytes) name=FUN_180041900 + +LPSTR FUN_180041900(void) + +{ + char cVar1; + WCHAR WVar2; + DWORD DVar3; + int cbMultiByte; + int iVar4; + LPWCH lpWideCharStr; + LPSTR pCVar5; + LPCH _Src; + char *pcVar6; + WCHAR *pWVar8; + size_t _Size; + char *pcVar7; + WCHAR *pWVar9; + + if (DAT_180072fe8 == 0) { + lpWideCharStr = GetEnvironmentStringsW(); + if (lpWideCharStr != (LPWCH)0x0) { + DAT_180072fe8 = 1; + goto LAB_18004196e; + } + DVar3 = GetLastError(); + if (DVar3 == 0x78) { + DAT_180072fe8 = 2; + goto LAB_180041a49; + } + } + if (DAT_180072fe8 != 1) { + if ((DAT_180072fe8 != 2) && (DAT_180072fe8 != 0)) { + return (LPSTR)0x0; + } +LAB_180041a49: + _Src = GetEnvironmentStrings(); + if (_Src != (LPCH)0x0) { + cVar1 = *_Src; + pcVar6 = _Src; + while (cVar1 != '\0') { + do { + pcVar7 = pcVar6; + pcVar6 = pcVar7 + 1; + } while (*pcVar6 != '\0'); + pcVar6 = pcVar7 + 2; + cVar1 = *pcVar6; + } + _Size = (size_t)(((int)pcVar6 - (int)_Src) + 1); + pCVar5 = (LPSTR)FUN_180040de0(_Size); + if (pCVar5 != (LPSTR)0x0) { + memcpy(pCVar5,_Src,_Size); + FreeEnvironmentStringsA(_Src); + return pCVar5; + } + FreeEnvironmentStringsA(_Src); + } + return (LPSTR)0x0; + } + lpWideCharStr = GetEnvironmentStringsW(); + if (lpWideCharStr == (LPWCH)0x0) { + return (LPSTR)0x0; + } +LAB_18004196e: + WVar2 = *lpWideCharStr; + pWVar8 = lpWideCharStr; + while (WVar2 != L'\0') { + do { + pWVar9 = pWVar8; + pWVar8 = pWVar9 + 1; + } while (*pWVar8 != L'\0'); + pWVar8 = pWVar9 + 2; + WVar2 = *pWVar8; + } + iVar4 = (int)((longlong)pWVar8 - (longlong)lpWideCharStr >> 1); + cbMultiByte = WideCharToMultiByte(0,0,lpWideCharStr,iVar4 + 1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 + ); + if ((cbMultiByte == 0) || + (pCVar5 = (LPSTR)FUN_180040de0((longlong)cbMultiByte), pCVar5 == (LPSTR)0x0)) { + FreeEnvironmentStringsW(lpWideCharStr); + pCVar5 = (LPSTR)0x0; + } + else { + iVar4 = WideCharToMultiByte(0,0,lpWideCharStr,iVar4 + 1,pCVar5,cbMultiByte,(LPCSTR)0x0, + (LPBOOL)0x0); + if (iVar4 == 0) { + FUN_180034a70(pCVar5); + pCVar5 = (LPSTR)0x0; + } + FreeEnvironmentStringsW(lpWideCharStr); + } + return pCVar5; +} + + +================================================================== + +### EXPORT FUNC 180041ad0 (62 bytes) name=FUN_180041ad0 + +/* WARNING: Removing unreachable block (ram,0x000180041af0) */ +/* WARNING: Removing unreachable block (ram,0x000180041af8) */ +/* WARNING: Removing unreachable block (ram,0x000180041afa) */ + +void FUN_180041ad0(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 180041b10 (62 bytes) name=FUN_180041b10 + +/* WARNING: Removing unreachable block (ram,0x000180041b30) */ +/* WARNING: Removing unreachable block (ram,0x000180041b38) */ +/* WARNING: Removing unreachable block (ram,0x000180041b3a) */ + +void FUN_180041b10(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 180041b50 (528 bytes) name=FUN_180041b50 + +undefined4 FUN_180041b50(int param_1,undefined8 param_2) + +{ + int iVar1; + DWORD DVar2; + int *piVar3; + code *pcVar4; + undefined8 uVar5; + DWORD *pDVar6; + int *piVar7; + uint uVar8; + ulonglong uVar9; + longlong lVar10; + + pDVar6 = FUN_180038010(); + if (pDVar6 != (DWORD *)0x0) { + piVar3 = *(int **)(pDVar6 + 0x28); + piVar7 = piVar3; + do { + if (*piVar7 == param_1) break; + piVar7 = piVar7 + 4; + } while (piVar7 < piVar3 + (longlong)DAT_18006da6c * 4); + if (((piVar7 < piVar3 + (longlong)DAT_18006da6c * 4) && (*piVar7 == param_1)) && + (pcVar4 = *(code **)(piVar7 + 2), pcVar4 != (code *)0x0)) { + if (pcVar4 == (code *)0x5) { + piVar7[2] = 0; + piVar7[3] = 0; + return 1; + } + if (pcVar4 == (code *)0x1) { + return 0xffffffff; + } + uVar5 = *(undefined8 *)(pDVar6 + 0x2a); + *(undefined8 *)(pDVar6 + 0x2a) = param_2; + if (piVar7[1] == 8) { + uVar9 = (ulonglong)DAT_18006da60; + if (DAT_18006da60 < DAT_18006da64 + DAT_18006da60) { + lVar10 = uVar9 << 4; + do { + uVar8 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar8; + *(undefined8 *)(lVar10 + 8 + *(longlong *)(pDVar6 + 0x28)) = 0; + lVar10 = lVar10 + 0x10; + } while ((int)uVar8 < DAT_18006da64 + DAT_18006da60); + } + iVar1 = *piVar7; + DVar2 = pDVar6[0x2c]; + if (iVar1 == -0x3fffff72) { + pDVar6[0x2c] = 0x83; + } + else if (iVar1 == -0x3fffff70) { + pDVar6[0x2c] = 0x81; + } + else if (iVar1 == -0x3fffff6f) { + pDVar6[0x2c] = 0x84; + } + else if (iVar1 == -0x3fffff6d) { + pDVar6[0x2c] = 0x85; + } + else if (iVar1 == -0x3fffff73) { + pDVar6[0x2c] = 0x82; + } + else if (iVar1 == -0x3fffff71) { + pDVar6[0x2c] = 0x86; + } + else if (iVar1 == -0x3fffff6e) { + pDVar6[0x2c] = 0x8a; + } + (*pcVar4)(8,pDVar6[0x2c]); + *(undefined8 *)(pDVar6 + 0x2a) = uVar5; + pDVar6[0x2c] = DVar2; + return 0xffffffff; + } + piVar7[2] = 0; + piVar7[3] = 0; + (*pcVar4)(); + *(undefined8 *)(pDVar6 + 0x2a) = uVar5; + return 0xffffffff; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180041d60 (16 bytes) name=FUN_180041d60 + +undefined4 FUN_180041d60(int param_1,undefined8 param_2) + +{ + undefined4 uVar1; + + if (param_1 == -0x1f928c9d) { + uVar1 = FUN_180041b50(-0x1f928c9d,param_2); + return uVar1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180041d70 (187 bytes) name=FUN_180041d70 + +void FUN_180041d70(void) + +{ + _FILETIME _Var1; + DWORD DVar2; + DWORD DVar3; + DWORD DVar4; + _FILETIME local_res8; + LARGE_INTEGER local_res10; + + local_res8.dwLowDateTime = 0; + local_res8.dwHighDateTime = 0; + if (DAT_18006cea0 != 0x2b992ddfa232) { + DAT_18006cea8 = ~DAT_18006cea0; + return; + } + GetSystemTimeAsFileTime(&local_res8); + _Var1 = local_res8; + DVar2 = GetCurrentProcessId(); + DVar3 = GetCurrentThreadId(); + DVar4 = GetTickCount(); + QueryPerformanceCounter(&local_res10); + DAT_18006cea0 = + (local_res10.QuadPart ^ + (ulonglong)_Var1 ^ (ulonglong)DVar2 ^ (ulonglong)DVar3 ^ (ulonglong)DVar4) & 0xffffffffffff; + if (DAT_18006cea0 == 0x2b992ddfa232) { + DAT_18006cea0 = 0x2b992ddfa233; + } + DAT_18006cea8 = ~DAT_18006cea0; + return; +} + + +================================================================== + +### EXPORT FUNC 180041e30 (563 bytes) name=FUN_180041e30 + +void FUN_180041e30(int param_1) + +{ + char cVar1; + int iVar2; + errno_t eVar3; + DWORD DVar4; + int *piVar5; + HANDLE hFile; + ulonglong uVar6; + longlong lVar7; + uint uVar8; + char *pcVar9; + DWORD local_res10 [2]; + + uVar8 = 0; + piVar5 = &DAT_18006da70; + while (param_1 != *piVar5) { + uVar8 = uVar8 + 1; + piVar5 = piVar5 + 4; + if (0x16 < uVar8) { + return; + } + } + if (uVar8 < 0x17) { + iVar2 = FUN_180049630(3); + if ((iVar2 != 1) && ((iVar2 = FUN_180049630(3), iVar2 != 0 || (DAT_1800727d0 != 1)))) { + if (param_1 == 0xfc) { + return; + } + eVar3 = strcpy_s(&DAT_180072ff0,0x314,"Runtime Error!\n\nProgram: "); + if (eVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + DAT_18007310d = 0; + DVar4 = GetModuleFileNameA((HMODULE)0x0,&DAT_180073009,0x104); + if ((DVar4 == 0) && + (eVar3 = strcpy_s(&DAT_180073009,0x2fb,""), eVar3 != 0)) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + uVar6 = 0xffffffffffffffff; + pcVar9 = &DAT_180073009; + do { + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + cVar1 = *pcVar9; + pcVar9 = pcVar9 + 1; + } while (cVar1 != '\0'); + if ((0x3c < ~uVar6) && + (pcVar9 = (char *)(~uVar6 + 0x180072fcd), + eVar3 = strncpy_s(pcVar9,(longlong)&DAT_180073304 - (longlong)pcVar9,"...",3), eVar3 != 0)) + { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + eVar3 = strcat_s(&DAT_180072ff0,0x314,"\n\n"); + if (eVar3 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + eVar3 = strcat_s(&DAT_180072ff0,0x314, + (&PTR_s_R6002___floating_point_support_n_18006da78)[(longlong)(int)uVar8 * 2] + ); + if (eVar3 == 0) { + FUN_1800493d0(&DAT_180072ff0,"Microsoft Visual C++ Runtime Library",0x12010); + return; + } + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + hFile = GetStdHandle(0xfffffff4); + if ((hFile != (HANDLE)0x0) && (hFile != (HANDLE)0xffffffffffffffff)) { + lVar7 = -1; + pcVar9 = (&PTR_s_R6002___floating_point_support_n_18006da78)[(longlong)(int)uVar8 * 2]; + do { + if (lVar7 == 0) break; + lVar7 = lVar7 + -1; + cVar1 = *pcVar9; + pcVar9 = pcVar9 + 1; + } while (cVar1 != '\0'); + WriteFile(hFile,(&PTR_s_R6002___floating_point_support_n_18006da78)[(longlong)(int)uVar8 * 2], + ~(uint)lVar7 - 1,local_res10,(LPOVERLAPPED)0x0); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180042070 (235 bytes) name=FUN_180042070 + +void FUN_180042070(void) + +{ + char cVar1; + int iVar2; + int *piVar3; + HANDLE hFile; + longlong lVar4; + uint uVar5; + char *pcVar6; + DWORD local_res8 [2]; + + iVar2 = FUN_180049630(3); + if (iVar2 != 1) { + iVar2 = FUN_180049630(3); + if (iVar2 != 0) { + return; + } + if (DAT_1800727d0 != 1) { + return; + } + } + piVar3 = &DAT_18006da70; + uVar5 = 0; + do { + if (*piVar3 == 0xfc) { + if (((uVar5 < 0x17) && + (((iVar2 = FUN_180049630(3), iVar2 == 1 || + ((iVar2 = FUN_180049630(3), iVar2 == 0 && (DAT_1800727d0 == 1)))) && + (hFile = GetStdHandle(0xfffffff4), hFile != (HANDLE)0x0)))) && + (hFile != (HANDLE)0xffffffffffffffff)) { + lVar4 = -1; + pcVar6 = (&PTR_s_R6002___floating_point_support_n_18006da78)[(longlong)(int)uVar5 * 2]; + goto code_r0x000180042130; + } + break; + } + uVar5 = uVar5 + 1; + piVar3 = piVar3 + 4; + } while (uVar5 < 0x17); + goto LAB_180042142; + while( true ) { + lVar4 = lVar4 + -1; + cVar1 = *pcVar6; + pcVar6 = pcVar6 + 1; + if (cVar1 == '\0') break; +code_r0x000180042130: + if (lVar4 == 0) break; + } + WriteFile(hFile,(&PTR_s_R6002___floating_point_support_n_18006da78)[(longlong)(int)uVar5 * 2], + ~(uint)lVar4 - 1,local_res8,(LPOVERLAPPED)0x0); +LAB_180042142: + FUN_180041e30(0xff); + return; +} + + +================================================================== + +### EXPORT FUNC 180042160 (8 bytes) name=FUN_180042160 + +void FUN_180042160(undefined8 param_1) + +{ + DAT_180073308 = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 180042170 (54 bytes) name=_callnewh + +/* Library Function - Single Match + _callnewh + + Library: Visual Studio 2005 Release */ + +int __cdecl _callnewh(size_t _Size) + +{ + int iVar1; + code *pcVar2; + + pcVar2 = (code *)FUN_180037d20(DAT_180073308); + if (pcVar2 != (code *)0x0) { + iVar1 = (*pcVar2)(_Size); + if (iVar1 != 0) { + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 1800421b0 (161 bytes) name=abort + +/* Library Function - Single Match + abort + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl abort(void) + +{ + code *pcVar1; + longlong lVar2; + _EXCEPTION_POINTERS local_588; + EXCEPTION_RECORD local_578; + _CONTEXT local_4d8; + + if (((byte)DAT_18006dbe0 & 1) != 0) { + FUN_180041e30(10); + } + lVar2 = FUN_180045610(); + if (lVar2 != 0) { + FUN_180045620(0x16); + } + if (((byte)DAT_18006dbe0 & 2) != 0) { + RtlCaptureContext(&local_4d8); + FUN_1800357d0((ulonglong *)&local_578,0,0x98); + local_588.ExceptionRecord = &local_578; + local_578.ExceptionCode = 0x40000015; + local_588.ContextRecord = &local_4d8; + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); + UnhandledExceptionFilter(&local_588); + } + FUN_180036a20(3); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180042260 (28 bytes) name=_set_abort_behavior + +/* Library Function - Single Match + _set_abort_behavior + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +uint __cdecl _set_abort_behavior(uint _Flags,uint _Mask) + +{ + uint uVar1; + + uVar1 = DAT_18006dbe0; + DAT_18006dbe0 = ~_Mask & DAT_18006dbe0 | _Flags & _Mask; + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180042280 (8 bytes) name=FUN_180042280 + +void FUN_180042280(undefined8 param_1) + +{ + DAT_180073320 = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 180042290 (144 bytes) name=FUN_180042290 + +undefined4 FUN_180042290(longlong param_1,longlong param_2,longlong param_3) + +{ + uint uVar1; + longlong lVar2; + uint uVar3; + int *piVar4; + + if (param_1 == 0) { + FUN_180043cc0(); + } + uVar1 = *(uint *)(param_1 + 0x14); + if ((longlong)*(int *)(param_1 + 0x18) + *(longlong *)(param_2 + 8) == 0) { + FUN_180043cc0(); + } + uVar3 = 0; + if (uVar1 != 0) { + lVar2 = *(longlong *)(param_2 + 8); + piVar4 = (int *)(lVar2 + *(int *)(param_1 + 0x18)); + do { + if (param_3 < *piVar4 + lVar2) break; + uVar3 = uVar3 + 1; + piVar4 = piVar4 + 2; + } while (uVar3 < uVar1); + if (uVar3 != 0) { + return *(undefined4 *) + ((longlong)*(int *)(param_1 + 0x18) + (ulonglong)(uVar3 - 1) * 8 + 4 + lVar2); + } + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180042320 (144 bytes) name=FUN_180042320 + +undefined4 FUN_180042320(longlong param_1,longlong *param_2) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + uint uVar4; + int *piVar5; + + lVar2 = *param_2; + if (param_1 == 0) { + FUN_180043cc0(); + } + uVar1 = *(uint *)(param_1 + 0x14); + if ((longlong)*(int *)(param_1 + 0x18) + param_2[1] == 0) { + FUN_180043cc0(); + } + uVar4 = 0; + if (uVar1 != 0) { + lVar3 = param_2[1]; + piVar5 = (int *)(lVar3 + *(int *)(param_1 + 0x18)); + do { + if (lVar2 < *piVar5 + lVar3) break; + uVar4 = uVar4 + 1; + piVar5 = piVar5 + 2; + } while (uVar4 < uVar1); + if (uVar4 != 0) { + return *(undefined4 *) + (lVar3 + (ulonglong)(uVar4 - 1) * 8 + 4 + (longlong)*(int *)(param_1 + 0x18)); + } + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 1800423b0 (146 bytes) name=FUN_1800423b0 + +int FUN_1800423b0(longlong *param_1,longlong *param_2,longlong param_3) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + int iVar4; + uint uVar5; + int *piVar6; + + iVar4 = *(int *)((longlong)*(int *)(param_3 + 0x1c) + *param_1); + if (iVar4 == -2) { + uVar1 = *(uint *)(param_3 + 0x14); + lVar2 = *param_2; + if ((longlong)*(int *)(param_3 + 0x18) + param_2[1] == 0) { + FUN_180043cc0(); + } + uVar5 = 0; + if (uVar1 != 0) { + lVar3 = param_2[1]; + piVar6 = (int *)(lVar3 + *(int *)(param_3 + 0x18)); + do { + if (lVar2 < *piVar6 + lVar3) break; + uVar5 = uVar5 + 1; + piVar6 = piVar6 + 2; + } while (uVar5 < uVar1); + if (uVar5 != 0) { + return *(int *)((longlong)*(int *)(param_3 + 0x18) + (ulonglong)(uVar5 - 1) * 8 + 4 + lVar3) + ; + } + } + iVar4 = -1; + } + return iVar4; +} + + +================================================================== + +### EXPORT FUNC 180042450 (12 bytes) name=FUN_180042450 + +void FUN_180042450(longlong *param_1,undefined8 param_2,longlong param_3,undefined4 param_4) + +{ + *(undefined4 *)((longlong)*(int *)(param_3 + 0x1c) + *param_1) = param_4; + return; +} + + +================================================================== + +### EXPORT FUNC 180042460 (59 bytes) name=__SetUnwindTryBlock + +/* Library Function - Single Match + void __cdecl __SetUnwindTryBlock(unsigned __int64 * __ptr64,struct _xDISPATCHER_CONTEXT * + __ptr64,struct _s_FuncInfo const * __ptr64,int) + + Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release */ + +void __cdecl +__SetUnwindTryBlock(__uint64 *param_1,_xDISPATCHER_CONTEXT *param_2,_s_FuncInfo *param_3,int param_4 + ) + +{ + longlong *plVar1; + longlong local_res18 [2]; + + plVar1 = FUN_180034cb0((longlong *)param_1,(DWORD64 *)param_2,(longlong)param_3,local_res18); + if (*(int *)((longlong)param_3->dispUnwindHelp + 4 + *plVar1) < param_4) { + *(int *)((longlong)param_3->dispUnwindHelp + 4 + *plVar1) = param_4; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800424a0 (41 bytes) name=GetUnwindTryBlock + +/* Library Function - Multiple Matches With Same Base Name + public: static int __cdecl __FrameHandler3::GetUnwindTryBlock(unsigned __int64 * __ptr64,struct + _xDISPATCHER_CONTEXT * __ptr64,struct _s_FuncInfo const * __ptr64) + int __cdecl __GetUnwindTryBlock(unsigned __int64 * __ptr64,struct _xDISPATCHER_CONTEXT * + __ptr64,struct _s_FuncInfo const * __ptr64) + + Library: Visual Studio */ + +undefined4 GetUnwindTryBlock(longlong *param_1,DWORD64 *param_2,longlong param_3) + +{ + longlong *plVar1; + longlong local_res18 [2]; + + plVar1 = FUN_180034cb0(param_1,param_2,param_3,local_res18); + return *(undefined4 *)((longlong)*(int *)(param_3 + 0x1c) + 4 + *plVar1); +} + + +================================================================== + +### EXPORT FUNC 1800424e0 (57 bytes) name=FUN_1800424e0 + +undefined8 * FUN_1800424e0(undefined8 *param_1,uint param_2) + +{ + *param_1 = std::bad_exception::vftable; + FUN_1800497d0(param_1); + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180042520 (78 bytes) name=FUN_180042520 + +undefined8 FUN_180042520(undefined8 *param_1) + +{ + DWORD *pDVar1; + + if (*(int *)*param_1 == -0x1fbcb0b3) { + pDVar1 = FUN_1800380a0(); + if (0 < (int)pDVar1[0x40]) { + pDVar1 = FUN_1800380a0(); + pDVar1[0x40] = pDVar1[0x40] - 1; + } + } + else if (*(int *)*param_1 == -0x1f928c9d) { + pDVar1 = FUN_1800380a0(); + pDVar1[0x40] = 0; + /* WARNING: Subroutine does not return */ + terminate(); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180042570 (372 bytes) name=FUN_180042570 + +void FUN_180042570(longlong *param_1,longlong *param_2,longlong param_3,int param_4) + +{ + int iVar1; + int iVar2; + undefined8 uVar3; + DWORD *pDVar4; + longlong lVar5; + longlong lVar6; + + iVar2 = FUN_1800423b0(param_1,param_2,param_3); + uVar3 = FUN_180034dc0(); + pDVar4 = FUN_1800380a0(); + pDVar4[0x40] = pDVar4[0x40] + 1; + while ((iVar2 != -1 && (param_4 < iVar2))) { + if ((iVar2 < 0) || (*(int *)(param_3 + 4) <= iVar2)) { + FUN_180043cc0(); + } + lVar6 = (longlong)iVar2; + lVar5 = FUN_180034dc0(); + iVar2 = *(int *)((longlong)*(int *)(param_3 + 8) + lVar5 + lVar6 * 8); + lVar5 = FUN_180034dc0(); + if (*(int *)((longlong)*(int *)(param_3 + 8) + 4 + lVar5 + lVar6 * 8) != 0) { + lVar5 = FUN_180034dc0(); + iVar1 = *(int *)((longlong)*(int *)(param_3 + 8) + 4 + lVar5 + lVar6 * 8); + lVar5 = FUN_180034dc0(); + if (lVar5 + iVar1 != 0) { + FUN_180042450(param_1,param_2,param_3,iVar2); + lVar5 = FUN_180034dc0(); + if (*(int *)((longlong)*(int *)(param_3 + 8) + 4 + lVar5 + lVar6 * 8) != 0) { + FUN_180034dc0(); + FUN_180034dc0(); + } + _CallSettingFrame(); + FUN_180034e00(uVar3); + } + } + } + pDVar4 = FUN_1800380a0(); + if (0 < (int)pDVar4[0x40]) { + pDVar4 = FUN_1800380a0(); + pDVar4[0x40] = pDVar4[0x40] - 1; + } + if ((iVar2 != -1) && (param_4 < iVar2)) { + FUN_180043cc0(); + } + FUN_180042450(param_1,param_2,param_3,iVar2); + return; +} + + +================================================================== + +### EXPORT FUNC 180042710 (20 bytes) name=FUN_180042710 + +void FUN_180042710(undefined8 *param_1) + +{ + FUN_180042520(param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180042730 (41 bytes) name=FUN_180042730 + +void FUN_180042730(void) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + if (0 < (int)pDVar1[0x40]) { + pDVar1 = FUN_1800380a0(); + pDVar1[0x40] = pDVar1[0x40] - 1; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180042760 (172 bytes) name=ExFilterRethrow + +/* Library Function - Single Match + int __cdecl ExFilterRethrow(struct _EXCEPTION_POINTERS * __ptr64,struct EHExceptionRecord * + __ptr64,int * __ptr64) + + Library: Visual Studio 2005 Release */ + +int __cdecl ExFilterRethrow(_EXCEPTION_POINTERS *param_1,EHExceptionRecord *param_2,int *param_3) + +{ + int iVar1; + PEXCEPTION_RECORD pEVar2; + DWORD *pDVar3; + + pEVar2 = param_1->ExceptionRecord; + *param_3 = 0; + if (pEVar2->ExceptionCode == 0xe06d7363) { + if ((pEVar2->NumberParameters == 4) && + ((((iVar1 = (int)pEVar2->ExceptionInformation[0], iVar1 == 0x19930520 || + (iVar1 == 0x19930521)) || (iVar1 == 0x19930522)) && + (pEVar2->ExceptionInformation[1] == *(ULONG_PTR *)(param_2 + 0x28))))) { + *param_3 = 1; + } + if ((((pEVar2->ExceptionCode == 0xe06d7363) && (pEVar2->NumberParameters == 4)) && + ((iVar1 = (int)pEVar2->ExceptionInformation[0], iVar1 == 0x19930520 || + ((iVar1 == 0x19930521 || (iVar1 == 0x19930522)))))) && + (pEVar2->ExceptionInformation[2] == 0)) { + pDVar3 = FUN_1800380a0(); + pDVar3[0xb4] = 1; + *param_3 = 1; + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180042810 (63 bytes) name=__DestructExceptionObject + +/* Library Function - Single Match + __DestructExceptionObject + + Library: Visual Studio 2005 Release */ + +void __DestructExceptionObject(int *param_1) + +{ + int iVar1; + + if ((((param_1 != (int *)0x0) && (*param_1 == -0x1f928c9d)) && (*(longlong *)(param_1 + 0xc) != 0) + ) && (iVar1 = *(int *)(*(longlong *)(param_1 + 0xc) + 4), iVar1 != 0)) { + (*(code *)(*(longlong *)(param_1 + 0xe) + (longlong)iVar1))(*(undefined8 *)(param_1 + 10)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180042860 (23 bytes) name=FUN_180042860 + +bool FUN_180042860(undefined8 param_1,longlong param_2) + +{ + return *(char *)(param_2 + 0x38) != '\0'; +} + + +================================================================== + +### EXPORT FUNC 180042880 (37 bytes) name=__AdjustPointer + +/* Library Function - Single Match + __AdjustPointer + + Library: Visual Studio 2005 Release */ + +longlong __AdjustPointer(longlong param_1,int *param_2) + +{ + longlong lVar1; + + lVar1 = *param_2 + param_1; + if (-1 < param_2[1]) { + lVar1 = lVar1 + (longlong)*(int *)((longlong)param_2[2] + *(longlong *)(param_2[1] + param_1)) + + (longlong)param_2[1]; + } + return lVar1; +} + + +================================================================== + +### EXPORT FUNC 1800428b0 (579 bytes) name=FUN_1800428b0 + +undefined1 FUN_1800428b0(longlong param_1,int *param_2) + +{ + char cVar1; + char cVar2; + uint uVar3; + uint *puVar4; + longlong lVar5; + longlong lVar6; + char *pcVar7; + int iVar8; + undefined1 uVar9; + byte *pbVar10; + int iVar11; + byte *pbVar12; + int *piVar13; + int iVar14; + longlong lVar15; + undefined1 local_res18; + + if (param_2 == (int *)0x0) { + FUN_180043cc0(); + /* WARNING: Subroutine does not return */ + terminate(); + } + uVar9 = 0; + iVar14 = 0; + local_res18 = 0; + if (0 < *param_2) { + lVar15 = 0; + do { + lVar5 = FUN_180034de0(); + piVar13 = (int *)(lVar5 + 4 + (longlong)*(int *)(*(longlong *)(param_1 + 0x30) + 0xc)); + lVar5 = FUN_180034de0(); + for (iVar11 = *(int *)(lVar5 + *(int *)(*(longlong *)(param_1 + 0x30) + 0xc)); 0 < iVar11; + iVar11 = iVar11 + -1) { + lVar5 = FUN_180034de0(); + puVar4 = *(uint **)(param_1 + 0x30); + pbVar10 = (byte *)(lVar5 + *piVar13); + lVar5 = FUN_180034dc0(); + pbVar12 = (byte *)((longlong)param_2[1] + lVar5 + lVar15); + if (*(int *)(pbVar12 + 4) == 0) { +LAB_180042a9d: + uVar9 = 1; + local_res18 = 1; + break; + } + iVar8 = *(int *)(pbVar12 + 4); + lVar5 = FUN_180034dc0(); + if (lVar5 + iVar8 == 0) { + uVar9 = 1; + local_res18 = 1; + break; + } + if (iVar8 == 0) { + lVar5 = 0; + iVar8 = 0; + } + else { + iVar8 = *(int *)(pbVar12 + 4); + lVar5 = FUN_180034dc0(); + lVar5 = iVar8 + lVar5; + } + if (*(char *)(lVar5 + 0x10) == '\0') { + uVar9 = 1; + local_res18 = 1; + break; + } + if (iVar8 == 0) { + lVar5 = 0; + } + else { + lVar5 = FUN_180034dc0(); + lVar5 = lVar5 + *(int *)(pbVar12 + 4); + } + lVar6 = FUN_180034de0(); + if (lVar5 == lVar6 + *(int *)(pbVar10 + 4)) { +LAB_180042a18: + if (((((*pbVar10 & 2) == 0) || ((*pbVar12 & 8) != 0)) && + ((uVar3 = *puVar4, (uVar3 & 1) == 0 || ((*pbVar12 & 1) != 0)))) && + (((uVar3 & 4) == 0 || ((*pbVar12 & 4) != 0)))) { + if ((uVar3 & 2) == 0) goto LAB_180042a9d; + if ((*pbVar12 & 2) != 0) { + uVar9 = 1; + local_res18 = 1; + break; + } + } + } + else { + if (*(int *)(pbVar12 + 4) == 0) { + lVar5 = 0; + } + else { + lVar5 = FUN_180034dc0(); + lVar5 = lVar5 + *(int *)(pbVar12 + 4); + } + lVar6 = FUN_180034de0(); + pcVar7 = (char *)(lVar5 + 0x10); + lVar5 = (lVar6 + 0x10 + (longlong)*(int *)(pbVar10 + 4)) - (longlong)pcVar7; + do { + cVar1 = *pcVar7; + cVar2 = pcVar7[lVar5]; + if (cVar1 != cVar2) break; + pcVar7 = pcVar7 + 1; + } while (cVar2 != '\0'); + if (cVar1 == cVar2) goto LAB_180042a18; + } + piVar13 = piVar13 + 1; + uVar9 = local_res18; + } + iVar14 = iVar14 + 1; + lVar15 = lVar15 + 0x14; + } while (iVar14 < *param_2); + } + return uVar9; +} + + +================================================================== + +### EXPORT FUNC 180042b00 (138 bytes) name=FUN_180042b00 + +ulonglong FUN_180042b00(int *param_1) + +{ + int iVar1; + bool bVar2; + ulonglong in_RAX; + longlong lVar3; + type_info *this; + undefined7 extraout_var; + longlong lVar4; + int iVar5; + + iVar5 = 0; + if (0 < *param_1) { + lVar4 = 0; + do { + lVar3 = FUN_180034dc0(); + if (*(int *)((longlong)param_1[1] + 4 + lVar3 + lVar4) == 0) { + this = (type_info *)0x0; + } + else { + lVar3 = FUN_180034dc0(); + iVar1 = *(int *)((longlong)param_1[1] + 4 + lVar3 + lVar4); + lVar3 = FUN_180034dc0(); + this = (type_info *)(lVar3 + iVar1); + } + bVar2 = type_info::operator==(this,(type_info *)&std::bad_exception::RTTI_Type_Descriptor); + in_RAX = CONCAT71(extraout_var,bVar2); + if (bVar2) { + return CONCAT71(extraout_var,1); + } + iVar5 = iVar5 + 1; + lVar4 = lVar4 + 0x14; + } while (iVar5 < *param_1); + } + return in_RAX & 0xffffffffffffff00; +} + + +================================================================== + +### EXPORT FUNC 180042b90 (413 bytes) name=FUN_180042b90 + +undefined8 FUN_180042b90(longlong param_1) + +{ + int iVar1; + undefined8 uVar2; + undefined8 uVar3; + int *piVar4; + longlong lVar5; + longlong *plVar6; + DWORD *pDVar7; + undefined8 *puVar8; + undefined8 uVar9; + undefined8 uVar10; + undefined8 local_48 [2]; + + pDVar7 = FUN_1800380a0(); + uVar2 = *(undefined8 *)(pDVar7 + 0x3e); + pDVar7 = FUN_1800380a0(); + uVar3 = *(undefined8 *)(pDVar7 + 0x3c); + piVar4 = *(int **)(param_1 + 0x50); + lVar5 = *(longlong *)(param_1 + 0x48); + uVar9 = *(undefined8 *)(param_1 + 0x40); + plVar6 = *(longlong **)(param_1 + 0x28); + pDVar7 = FUN_1800380a0(); + *(int **)(pDVar7 + 0x3c) = piVar4; + pDVar7 = FUN_1800380a0(); + *(undefined8 *)(pDVar7 + 0x3e) = uVar9; + pDVar7 = FUN_1800380a0(); + puVar8 = _CreateFrameInfo(local_48,*(undefined8 *)(*(longlong *)(pDVar7 + 0x3c) + 0x28)); + if (*(longlong *)(param_1 + 0x58) != 0) { + pDVar7 = FUN_1800380a0(); + uVar9 = *(undefined8 *)(pDVar7 + 0x4e); + pDVar7 = FUN_1800380a0(); + *(undefined8 *)(pDVar7 + 0x3c) = uVar9; + } + uVar9 = _CallSettingFrame(); + FUN_180035360((longlong)puVar8); + if ((((*piVar4 == -0x1f928c9d) && (piVar4[6] == 4)) && + ((iVar1 = piVar4[8], iVar1 == 0x19930520 || ((iVar1 == 0x19930521 || (iVar1 == 0x19930522))))) + ) && (uVar10 = _IsExceptionObjectToBeDestroyed(*(longlong *)(piVar4 + 10)), (int)uVar10 != 0)) + { + __DestructExceptionObject(piVar4); + } + pDVar7 = FUN_1800380a0(); + *(undefined8 *)(pDVar7 + 0x3c) = uVar3; + pDVar7 = FUN_1800380a0(); + *(undefined8 *)(pDVar7 + 0x3e) = uVar2; + *(undefined8 *)((longlong)*(int *)(lVar5 + 0x1c) + *plVar6) = 0xfffffffffffffffe; + return uVar9; +} + + +================================================================== + +### EXPORT FUNC 180042dc0 (35 bytes) name=FUN_180042dc0 + +void FUN_180042dc0(_EXCEPTION_POINTERS *param_1,longlong param_2) + +{ + *(_EXCEPTION_POINTERS **)(param_2 + 0x58) = param_1; + ExFilterRethrow(param_1,*(EHExceptionRecord **)(param_2 + 0xb8),(int *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 180042df0 (135 bytes) name=FUN_180042df0 + +void FUN_180042df0(undefined8 param_1,longlong param_2) + +{ + int iVar1; + int *piVar2; + undefined8 uVar3; + DWORD *pDVar4; + + FUN_180035360(*(longlong *)(param_2 + 0x30)); + if ((((*(int *)(param_2 + 0x20) == 0) && + (piVar2 = *(int **)(param_2 + 0xb8), *piVar2 == -0x1f928c9d)) && (piVar2[6] == 4)) && + (((iVar1 = piVar2[8], iVar1 == 0x19930520 || (iVar1 == 0x19930521)) || (iVar1 == 0x19930522)))) + { + uVar3 = _IsExceptionObjectToBeDestroyed(*(longlong *)(piVar2 + 10)); + if ((int)uVar3 != 0) { + __DestructExceptionObject(piVar2); + } + } + pDVar4 = FUN_1800380a0(); + *(undefined8 *)(pDVar4 + 0x3c) = *(undefined8 *)(param_2 + 0xc0); + pDVar4 = FUN_1800380a0(); + *(undefined8 *)(pDVar4 + 0x3e) = *(undefined8 *)(param_2 + 0x28); + return; +} + + +================================================================== + +### EXPORT FUNC 180042e80 (545 bytes) name=FUN_180042e80 + +char FUN_180042e80(longlong param_1,longlong *param_2,uint *param_3,byte *param_4) + +{ + uint uVar1; + bool bVar2; + longlong lVar3; + undefined7 extraout_var; + undefined7 extraout_var_00; + undefined7 extraout_var_01; + undefined7 extraout_var_02; + undefined7 extraout_var_03; + undefined7 extraout_var_04; + undefined7 extraout_var_05; + undefined7 extraout_var_06; + undefined7 extraout_var_07; + void *_Src; + ulonglong uVar4; + ulonglong uVar5; + size_t _Size; + ulonglong uVar6; + + uVar4 = 0; + uVar5 = 0; + if (param_3[1] != 0) { + uVar1 = param_3[1]; + lVar3 = FUN_180034dc0(); + if ((int)uVar1 + lVar3 != 0) { + uVar6 = uVar4; + if (uVar1 != 0) { + lVar3 = FUN_180034dc0(); + uVar6 = lVar3 + (int)param_3[1]; + } + if ((*(char *)(uVar6 + 0x10) != '\0') && ((param_3[2] != 0 || ((int)*param_3 < 0)))) { + if (-1 < (int)*param_3) { + param_2 = (longlong *)((longlong)(int)param_3[2] + *param_2); + } + if ((*param_3 & 8) == 0) { + if ((*param_4 & 1) == 0) { + if ((*(int *)(param_4 + 0x18) == 0) || + (lVar3 = FUN_180034de0(), lVar3 + *(int *)(param_4 + 0x18) == 0)) { + bVar2 = FUN_180049880(*(longlong *)(param_1 + 0x28)); + if (((int)CONCAT71(extraout_var_06,bVar2) == 0) || + (bVar2 = FUN_180049880((longlong)param_2), + (int)CONCAT71(extraout_var_07,bVar2) == 0)) { + FUN_180043cc0(); + uVar4 = uVar5; + } + else { + _Size = (size_t)*(int *)(param_4 + 0x14); + _Src = (void *)__AdjustPointer(*(longlong *)(param_1 + 0x28),(int *)(param_4 + 8)); + memcpy(param_2,_Src,_Size); + uVar4 = uVar5; + } + } + else { + bVar2 = FUN_180049880(*(longlong *)(param_1 + 0x28)); + if (((int)CONCAT71(extraout_var_03,bVar2) != 0) && + (bVar2 = FUN_180049880((longlong)param_2), + (int)CONCAT71(extraout_var_04,bVar2) != 0)) { + if (*(int *)(param_4 + 0x18) != 0) { + lVar3 = FUN_180034de0(); + uVar4 = lVar3 + *(int *)(param_4 + 0x18); + } + bVar2 = FUN_180049880(uVar4); + if ((int)CONCAT71(extraout_var_05,bVar2) != 0) { + uVar4 = (ulonglong)(((*param_4 & 4) != 0) + 1); + goto LAB_180043081; + } + } + FUN_180043cc0(); + uVar4 = uVar5; + } + } + else { + bVar2 = FUN_180049880(*(longlong *)(param_1 + 0x28)); + if (((int)CONCAT71(extraout_var_01,bVar2) == 0) || + (bVar2 = FUN_180049880((longlong)param_2), (int)CONCAT71(extraout_var_02,bVar2) == 0) + ) { + FUN_180043cc0(); + uVar4 = uVar5; + } + else { + memcpy(param_2,*(void **)(param_1 + 0x28),(longlong)*(int *)(param_4 + 0x14)); + if ((*(int *)(param_4 + 0x14) == 8) && (uVar4 = uVar5, *param_2 != 0)) { + lVar3 = __AdjustPointer(*param_2,(int *)(param_4 + 8)); + *param_2 = lVar3; + } + } + } + } + else { + bVar2 = FUN_180049880(*(longlong *)(param_1 + 0x28)); + if (((int)CONCAT71(extraout_var,bVar2) == 0) || + (bVar2 = FUN_180049880((longlong)param_2), (int)CONCAT71(extraout_var_00,bVar2) == 0)) + { + FUN_180043cc0(); + } + else { + lVar3 = *(longlong *)(param_1 + 0x28); + *param_2 = lVar3; + lVar3 = __AdjustPointer(lVar3,(int *)(param_4 + 8)); + *param_2 = lVar3; + } + } +LAB_180043081: + return (char)uVar4; + } + } + } + return '\0'; +} + + +================================================================== + +### EXPORT FUNC 1800430b0 (174 bytes) name=FUN_1800430b0 + +void FUN_1800430b0(longlong param_1,longlong *param_2,uint *param_3,byte *param_4) + +{ + char cVar1; + int iVar2; + undefined7 extraout_var; + longlong lVar3; + longlong *plVar4; + code *pcVar5; + + plVar4 = param_2; + if (-1 < (int)*param_3) { + plVar4 = (longlong *)((longlong)(int)param_3[2] + *param_2); + } + cVar1 = FUN_180042e80(param_1,param_2,param_3,param_4); + iVar2 = (int)CONCAT71(extraout_var,cVar1); + if (iVar2 == 1) { + if (*(int *)(param_4 + 0x18) == 0) { + pcVar5 = (code *)0x0; + } + else { + lVar3 = FUN_180034de0(); + pcVar5 = (code *)(*(int *)(param_4 + 0x18) + lVar3); + } + lVar3 = __AdjustPointer(*(longlong *)(param_1 + 0x28),(int *)(param_4 + 8)); + (*pcVar5)(plVar4,lVar3); + } + else if (iVar2 == 2) { + if (*(int *)(param_4 + 0x18) == 0) { + pcVar5 = (code *)0x0; + } + else { + lVar3 = FUN_180034de0(); + pcVar5 = (code *)(lVar3 + *(int *)(param_4 + 0x18)); + } + lVar3 = __AdjustPointer(*(longlong *)(param_1 + 0x28),(int *)(param_4 + 8)); + (*pcVar5)(plVar4,lVar3,1); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180043170 (631 bytes) name=FUN_180043170 + +void FUN_180043170(int *param_1,longlong *param_2,ULONG_PTR param_3,DWORD64 *param_4, + ULONG_PTR param_5,int param_6,uint param_7) + +{ + int iVar1; + int iVar2; + DWORD *pDVar3; + INT_PTR IVar4; + int *piVar5; + longlong lVar6; + longlong *plVar7; + longlong lVar8; + uint local_res8 [2]; + uint local_48 [2]; + longlong local_40; + + if (*param_1 != -0x7ffffffd) { + pDVar3 = FUN_1800380a0(); + if (*(longlong *)(pDVar3 + 0x38) != 0) { + pDVar3 = FUN_1800380a0(); + IVar4 = FUN_180037c30(); + if (((*(longlong *)(pDVar3 + 0x38) != IVar4) && (*param_1 != -0x1fbcb0b3)) && + (iVar2 = FUN_1800350d0(param_1,param_2,param_3), iVar2 != 0)) { + return; + } + } + if (*(int *)(param_5 + 0xc) == 0) { + FUN_180043cc0(); + } + piVar5 = (int *)FUN_180035180(param_2,param_5,(ulonglong)param_7,param_6,local_res8, + (int *)local_48,(longlong *)param_4); + if (local_res8[0] < local_48[0]) { + do { + if ((*piVar5 <= param_6) && (param_6 <= piVar5[1])) { + lVar6 = FUN_180034dc0(); + if (*(int *)(lVar6 + -0x10 + (longlong)piVar5[4] + (longlong)piVar5[3] * 0x14) != 0) { + lVar6 = FUN_180034dc0(); + iVar2 = *(int *)(lVar6 + -0x10 + (longlong)piVar5[4] + (longlong)piVar5[3] * 0x14); + lVar6 = FUN_180034dc0(); + if (lVar6 + iVar2 != 0) { + lVar6 = FUN_180034dc0(); + if (*(int *)(lVar6 + -0x10 + (longlong)piVar5[4] + (longlong)piVar5[3] * 0x14) == 0) { + lVar6 = 0; + } + else { + lVar6 = FUN_180034dc0(); + iVar2 = *(int *)(lVar6 + -0x10 + (longlong)piVar5[4] + (longlong)piVar5[3] * 0x14); + lVar6 = FUN_180034dc0(); + lVar6 = lVar6 + iVar2; + } + if (*(char *)(lVar6 + 0x10) != '\0') goto LAB_1800433ac; + } + } + lVar6 = FUN_180034dc0(); + if ((*(byte *)(lVar6 + -0x14 + (longlong)piVar5[4] + (longlong)piVar5[3] * 0x14) & 0x40) + == 0) { + lVar6 = FUN_180034dc0(); + iVar2 = piVar5[3]; + iVar1 = piVar5[4]; + plVar7 = FUN_180034cb0(param_2,param_4,param_5,&local_40); + lVar8 = FUN_180034dc0(); + _UnwindNestedFrames(param_2,(ULONG_PTR)param_1,param_3,(ULONG_PTR)plVar7, + lVar8 + *(int *)(lVar6 + (longlong)(iVar2 + -1) * 0x14 + + (longlong)iVar1 + 0xc),*piVar5,param_5,param_4,0); + } + } +LAB_1800433ac: + local_res8[0] = local_res8[0] + 1; + piVar5 = piVar5 + 5; + } while (local_res8[0] < local_48[0]); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800433f0 (1600 bytes) name=FUN_1800433f0 + +void FUN_1800433f0(int *param_1,__uint64 *param_2,ULONG_PTR param_3,_xDISPATCHER_CONTEXT *param_4, + _s_FuncInfo *param_5,byte param_6,uint param_7) + +{ + uint *puVar1; + bool bVar2; + char cVar3; + char cVar4; + int iVar5; + int iVar6; + DWORD *pDVar7; + undefined7 extraout_var; + undefined8 uVar8; + int *piVar9; + longlong lVar10; + longlong lVar11; + longlong *plVar12; + char *pcVar13; + uint uVar14; + byte *pbVar15; + uint *puVar16; + char *local_res8; + __uint64 *local_res10; + ULONG_PTR local_res18; + _xDISPATCHER_CONTEXT *local_res20; + uint local_558; + uint local_554; + int local_550; + int *local_548; + longlong local_540; + longlong local_538; + undefined **local_530 [3]; + undefined1 local_518 [1240]; + + cVar4 = '\0'; + local_res8 = (char *)((ulonglong)local_res8 & 0xffffffffffffff00); + local_res10 = param_2; + local_res18 = param_3; + local_res20 = param_4; + iVar5 = FUN_180042320((longlong)param_5,(longlong *)param_4); + local_550 = iVar5; + FUN_180034cb0((longlong *)param_2,(DWORD64 *)param_4,(longlong)param_5,&local_540); + iVar6 = GetUnwindTryBlock((longlong *)param_2,(DWORD64 *)param_4,(longlong)param_5); + if (iVar6 < iVar5) { + FUN_180042450(&local_540,param_4,(longlong)param_5,iVar5); + __SetUnwindTryBlock(param_2,param_4,param_5,iVar5); + } + else { + iVar5 = GetUnwindTryBlock((longlong *)param_2,(DWORD64 *)param_4,(longlong)param_5); + local_550 = iVar5; + } + if ((iVar5 < -1) || (param_5->maxState <= iVar5)) { + FUN_180043cc0(); + } + if ((((*param_1 == -0x1f928c9d) && (param_1[6] == 4)) && + ((iVar6 = param_1[8], iVar6 == 0x19930520 || ((iVar6 == 0x19930521 || (iVar6 == 0x19930522)))) + )) && (*(longlong *)(param_1 + 0xc) == 0)) { + pDVar7 = FUN_1800380a0(); + if (*(longlong *)(pDVar7 + 0x3c) == 0) { + return; + } + pDVar7 = FUN_1800380a0(); + param_1 = *(int **)(pDVar7 + 0x3c); + pDVar7 = FUN_1800380a0(); + param_3 = *(ULONG_PTR *)(pDVar7 + 0x3e); + local_res18 = param_3; + FUN_180034e20(*(undefined8 *)(param_1 + 0xe)); + bVar2 = FUN_180049880((longlong)param_1); + if ((int)CONCAT71(extraout_var,bVar2) == 0) { + FUN_180043cc0(); + } + if (((*param_1 == -0x1f928c9d) && (param_1[6] == 4)) && + (((iVar6 = param_1[8], iVar6 == 0x19930520 || + ((iVar6 == 0x19930521 || (iVar6 == 0x19930522)))) && (*(longlong *)(param_1 + 0xc) == 0)))) + { + FUN_180043cc0(); + } + pDVar7 = FUN_1800380a0(); + if (*(longlong *)(pDVar7 + 0x42) != 0) { + pDVar7 = FUN_1800380a0(); + piVar9 = *(int **)(pDVar7 + 0x42); + pDVar7 = FUN_1800380a0(); + pDVar7[0x42] = 0; + pDVar7[0x43] = 0; + cVar3 = FUN_1800428b0((longlong)param_1,piVar9); + param_3 = local_res18; + if (cVar3 == '\0') { + uVar8 = FUN_180042b00(piVar9); + if ((char)uVar8 == '\0') { + /* WARNING: Subroutine does not return */ + terminate(); + } + __DestructExceptionObject(param_1); + local_res8 = "bad exception"; + FUN_180049690(local_530,&local_res8); + local_530[0] = std::bad_exception::vftable; + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_530,(ThrowInfo *)&DAT_1800689c8); + } + } + } + if (((*param_1 == -0x1f928c9d) && (param_1[6] == 4)) && + ((iVar6 = param_1[8], iVar6 == 0x19930520 || ((iVar6 == 0x19930521 || (iVar6 == 0x19930522))))) + ) { + if ((param_5->nTryBlocks != 0) && + (piVar9 = (int *)FUN_180035180(param_2,(longlong)param_5,(ulonglong)param_7,iVar5,&local_558, + (int *)&local_554,(longlong *)param_4), uVar14 = local_554, + local_548 = piVar9, local_558 < local_554)) { + do { + if ((*piVar9 <= iVar5) && (iVar5 <= piVar9[1])) { + local_548 = piVar9; + lVar10 = FUN_180034dc0(); + iVar5 = piVar9[3]; + puVar16 = (uint *)(piVar9[4] + lVar10); + if (iVar5 < 1) { + cVar4 = (char)local_res8; + iVar5 = local_550; + uVar14 = local_554; + } + else { + do { + lVar10 = FUN_180034de0(); + piVar9 = (int *)(lVar10 + 4 + (longlong)*(int *)(*(longlong *)(param_1 + 0xc) + 0xc)); + lVar10 = FUN_180034de0(); + param_2 = local_res10; + param_4 = local_res20; + for (iVar6 = *(int *)(lVar10 + *(int *)(*(longlong *)(param_1 + 0xc) + 0xc)); + local_res10 = param_2, local_res20 = param_4, 0 < iVar6; iVar6 = iVar6 + -1) { + lVar10 = FUN_180034de0(); + puVar1 = *(uint **)(param_1 + 0xc); + pbVar15 = (byte *)(lVar10 + *piVar9); + if (puVar16[1] == 0) { +LAB_18004382c: + param_4 = local_res20; + param_2 = local_res10; + local_res8 = (char *)CONCAT71(local_res8._1_7_,1); + plVar12 = FUN_180034cb0((longlong *)local_res10,(DWORD64 *)local_res20, + (longlong)param_5,&local_538); + if (pbVar15 != (byte *)0x0) { + FUN_1800430b0((longlong)param_1,plVar12,puVar16,pbVar15); + } + lVar10 = FUN_180034dc0(); + _UnwindNestedFrames(param_2,(ULONG_PTR)param_1,local_res18,(ULONG_PTR)plVar12, + lVar10 + (int)puVar16[3],*local_548,(ULONG_PTR)param_5, + (undefined8 *)param_4,param_6); + piVar9 = local_548; + cVar4 = '\x01'; + iVar5 = local_550; + uVar14 = local_554; + goto LAB_1800438de; + } + uVar14 = puVar16[1]; + lVar10 = FUN_180034dc0(); + if (lVar10 + (int)uVar14 == 0) goto LAB_18004382c; + if (uVar14 == 0) { + lVar10 = 0; + uVar14 = 0; + } + else { + uVar14 = puVar16[1]; + lVar10 = FUN_180034dc0(); + lVar10 = lVar10 + (int)uVar14; + } + if (*(char *)(lVar10 + 0x10) == '\0') goto LAB_18004382c; + if (uVar14 == 0) { + lVar10 = 0; + } + else { + lVar10 = FUN_180034dc0(); + lVar10 = (int)puVar16[1] + lVar10; + } + lVar11 = FUN_180034de0(); + if (lVar10 == lVar11 + *(int *)(pbVar15 + 4)) { +LAB_1800437b8: + if ((((((*pbVar15 & 2) == 0) || ((*puVar16 & 8) != 0)) && + ((uVar14 = *puVar1, (uVar14 & 1) == 0 || ((*puVar16 & 1) != 0)))) && + (((uVar14 & 4) == 0 || ((*puVar16 & 4) != 0)))) && + (((uVar14 & 2) == 0 || ((*puVar16 & 2) != 0)))) goto LAB_18004382c; + } + else { + if (puVar16[1] == 0) { + lVar10 = 0; + } + else { + lVar10 = FUN_180034dc0(); + lVar10 = (int)puVar16[1] + lVar10; + } + lVar11 = FUN_180034de0(); + pcVar13 = (char *)(lVar10 + 0x10); + lVar10 = (lVar11 + 0x10 + (longlong)*(int *)(pbVar15 + 4)) - (longlong)pcVar13; + do { + cVar4 = *pcVar13; + cVar3 = pcVar13[lVar10]; + if (cVar4 != cVar3) break; + pcVar13 = pcVar13 + 1; + } while (cVar3 != '\0'); + if (cVar4 == cVar3) goto LAB_1800437b8; + } + piVar9 = piVar9 + 1; + param_2 = local_res10; + param_4 = local_res20; + } + iVar5 = iVar5 + -1; + puVar16 = puVar16 + 5; + } while (0 < iVar5); + piVar9 = local_548; + cVar4 = (char)local_res8; + iVar5 = local_550; + uVar14 = local_554; + } + } +LAB_1800438de: + local_558 = local_558 + 1; + piVar9 = piVar9 + 5; + } while (local_558 < uVar14); + local_548 = piVar9; + if (cVar4 != '\0') goto LAB_1800439c2; + } + if ((0x19930520 < (param_5->magicNumber_and_bbtFlags & 0x1fffffff)) && + (param_5->dispESTypeList != 0)) { + iVar5 = param_5->dispESTypeList; + lVar10 = FUN_180034dc0(); + if (lVar10 + iVar5 != 0) { + if (iVar5 == 0) { + piVar9 = (int *)0x0; + } + else { + lVar10 = FUN_180034dc0(); + piVar9 = (int *)(lVar10 + (int)param_5->dispESTypeList); + } + cVar4 = FUN_1800428b0((longlong)param_1,piVar9); + if (cVar4 == '\0') { + plVar12 = FUN_180034cb0((longlong *)param_2,(DWORD64 *)param_4,(longlong)param_5, + (longlong *)&local_res8); + pDVar7 = FUN_1800380a0(); + *(undefined1 **)(pDVar7 + 0x44) = local_518; + _UnwindNestedFrames(param_2,(ULONG_PTR)param_1,local_res18,(ULONG_PTR)plVar12,0,-1, + (ULONG_PTR)param_5,(undefined8 *)param_4,param_6); + } + } + } + } + else if (param_5->nTryBlocks != 0) { + if (param_6 != 0) { + /* WARNING: Subroutine does not return */ + terminate(); + } + FUN_180043170(param_1,(longlong *)param_2,param_3,(DWORD64 *)param_4,(ULONG_PTR)param_5,iVar5, + param_7); + } +LAB_1800439c2: + pDVar7 = FUN_1800380a0(); + if (*(longlong *)(pDVar7 + 0x42) != 0) { + FUN_180043cc0(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180043a40 (33 bytes) name=FUN_180043a40 + +undefined8 * FUN_180043a40(undefined8 *param_1,longlong param_2) + +{ + FUN_180049720(param_1,param_2); + *param_1 = std::bad_exception::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180043a70 (539 bytes) name=FUN_180043a70 + +undefined8 +FUN_180043a70(int *param_1,__uint64 *param_2,ULONG_PTR param_3,_xDISPATCHER_CONTEXT *param_4, + _s_FuncInfo *param_5,uint param_6,undefined8 param_7,byte param_8) + +{ + uint uVar1; + int iVar2; + DWORD *pDVar3; + longlong lVar4; + code *pcVar5; + undefined8 uVar6; + undefined8 in_stack_fffffffffffffff0; + undefined4 uVar7; + + uVar7 = (undefined4)((ulonglong)in_stack_fffffffffffffff0 >> 0x20); + pDVar3 = FUN_1800380a0(); + if (((((pDVar3[0xb4] != 0) || (iVar2 = *param_1, iVar2 == -0x1f928c9d)) || + ((iVar2 == -0x7fffffd7 && + ((param_1[6] == 0xf && (*(longlong *)(param_1 + 0x18) == 0x19930520)))))) || + (iVar2 == -0x7fffffda)) || + (((param_5->magicNumber_and_bbtFlags & 0x1fffffff) < 0x19930522 || + ((param_5->EHFlags & 1) == 0)))) { + if ((param_1[1] & 0x66U) == 0) { + if ((param_5->nTryBlocks != 0) || + (((0x19930520 < (param_5->magicNumber_and_bbtFlags & 0x1fffffff) && + (param_5->dispESTypeList != 0)) && + (lVar4 = FUN_180034dc0(), lVar4 + (int)param_5->dispESTypeList != 0)))) { + if ((((*param_1 == -0x1f928c9d) && (2 < (uint)param_1[6])) && + (0x19930522 < (uint)param_1[8])) && (*(int *)(*(longlong *)(param_1 + 0xc) + 8) != 0)) { + lVar4 = FUN_180034de0(); + pcVar5 = (code *)(lVar4 + *(int *)(*(longlong *)(param_1 + 0xc) + 8)); + if (pcVar5 != (code *)0x0) { + uVar6 = (*pcVar5)(param_1,param_2,param_3,param_4,param_5,param_6,param_7, + CONCAT44(uVar7,(uint)param_8)); + return uVar6; + } + } + FUN_1800433f0(param_1,param_2,param_3,param_4,param_5,param_8,param_6); + } + } + else if ((param_5->maxState != 0) && (param_6 == 0)) { + uVar1 = param_1[1] & 0x20; + if ((uVar1 == 0) || (*param_1 != -0x7fffffda)) { + if ((uVar1 == 0) || (*param_1 != -0x7fffffd7)) { + FUN_180034e40((longlong *)param_2,(DWORD64 *)param_4,(longlong)param_5); + } + else { + iVar2 = param_1[0xe]; + if ((iVar2 < -1) || (param_5->maxState <= iVar2)) { + FUN_180043cc0(); + } + FUN_180042570(*(longlong **)(param_1 + 10),(longlong *)param_4,(longlong)param_5,iVar2); + } + } + else { + iVar2 = FUN_180042290((longlong)param_5,(longlong)param_4,*(longlong *)(param_3 + 0xf8)); + if ((iVar2 < -1) || (param_5->maxState <= iVar2)) { + FUN_180043cc0(); + } + FUN_180042570((longlong *)param_2,(longlong *)param_4,(longlong)param_5,iVar2); + } + } + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 180043c90 (30 bytes) name=terminate + +/* Library Function - Single Match + void __cdecl terminate(void) + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __cdecl terminate(void) + +{ + DWORD *pDVar1; + + pDVar1 = FUN_1800380a0(); + if (*(code **)(pDVar1 + 0x34) != (code *)0x0) { + (**(code **)(pDVar1 + 0x34))(); + } + /* WARNING: Subroutine does not return */ + abort(); +} + + +================================================================== + +### EXPORT FUNC 180043cc0 (30 bytes) name=FUN_180043cc0 + +void FUN_180043cc0(void) + +{ + code *pcVar1; + + pcVar1 = (code *)FUN_180037d20(DAT_180073328); + if (pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + /* WARNING: Subroutine does not return */ + terminate(); +} + + +================================================================== + +### EXPORT FUNC 180043cf0 (28 bytes) name=_initp_eh_hooks + +/* Library Function - Single Match + _initp_eh_hooks + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void _initp_eh_hooks(void) + +{ + DAT_180073328 = FUN_180037b60(0x180043c90); + return; +} + + +================================================================== + +### EXPORT FUNC 180043d20 (36 bytes) name=FUN_180043d20 + +void FUN_180043d20(PVOID param_1,PVOID param_2) + +{ + RtlUnwindEx(param_1,param_2,(PEXCEPTION_RECORD)0x0,(PVOID)0x0,(PCONTEXT)&stack0xfffffffffffffb28, + (PUNWIND_HISTORY_TABLE)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180043d50 (25 bytes) name=FUN_180043d50 + +void FUN_180043d50(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 180043d80 (1 bytes) name=FUN_180043d80 + +void FUN_180043d80(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 180043d90 (35 bytes) name=_ValidateImageBase + +/* Library Function - Single Match + _ValidateImageBase + + Library: Visual Studio 2005 Release */ + +BOOL __cdecl _ValidateImageBase(PBYTE pImageBase) + +{ + uint uVar1; + + uVar1 = 0; + if ((*(short *)pImageBase == 0x5a4d) && + (*(int *)(pImageBase + *(int *)(pImageBase + 0x3c)) == 0x4550)) { + uVar1 = (uint)(*(short *)(pImageBase + (longlong)*(int *)(pImageBase + 0x3c) + 0x18) == 0x20b); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180043dc0 (71 bytes) name=_FindPESection + +/* Library Function - Single Match + _FindPESection + + Library: Visual Studio 2005 Release */ + +PIMAGE_SECTION_HEADER __cdecl _FindPESection(PBYTE pImageBase,DWORD_PTR rva) + +{ + int iVar1; + PIMAGE_SECTION_HEADER p_Var2; + uint uVar3; + + iVar1 = *(int *)(pImageBase + 0x3c); + uVar3 = 0; + p_Var2 = (PIMAGE_SECTION_HEADER) + (pImageBase + + (ulonglong)*(ushort *)(pImageBase + (longlong)iVar1 + 0x14) + 0x18 + (longlong)iVar1); + if (*(ushort *)(pImageBase + (longlong)iVar1 + 6) != 0) { + do { + if ((p_Var2->VirtualAddress <= rva) && + (rva < (p_Var2->Misc).PhysicalAddress + p_Var2->VirtualAddress)) { + return p_Var2; + } + uVar3 = uVar3 + 1; + p_Var2 = p_Var2 + 1; + } while (uVar3 < *(ushort *)(pImageBase + (longlong)iVar1 + 6)); + } + return (PIMAGE_SECTION_HEADER)0x0; +} + + +================================================================== + +### EXPORT FUNC 180043e10 (57 bytes) name=_IsNonwritableInCurrentImage + +/* Library Function - Single Match + _IsNonwritableInCurrentImage + + Library: Visual Studio 2005 Release */ + +BOOL __cdecl _IsNonwritableInCurrentImage(PBYTE pTarget) + +{ + BOOL BVar1; + uint uVar2; + PIMAGE_SECTION_HEADER p_Var3; + IMAGE_DOS_HEADER *pImageBase; + + pImageBase = &IMAGE_DOS_HEADER_180000000; + BVar1 = _ValidateImageBase((PBYTE)&IMAGE_DOS_HEADER_180000000); + uVar2 = 0; + if (BVar1 != 0) { + p_Var3 = _FindPESection((PBYTE)pImageBase,(longlong)pTarget - (longlong)pImageBase); + uVar2 = 0; + if (p_Var3 != (PIMAGE_SECTION_HEADER)0x0) { + uVar2 = ~(p_Var3->Characteristics >> 0x1f) & 1; + } + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180043e50 (33 bytes) name=FUN_180043e50 + +bool FUN_180043e50(undefined8 *param_1) + +{ + return *(int *)*param_1 == -0x3ffffffb; +} + + +================================================================== + +### EXPORT FUNC 180043e80 (201 bytes) name=FUN_180043e80 + +LPVOID FUN_180043e80(ulonglong param_1,ulonglong param_2,undefined4 *param_3) + +{ + undefined1 auVar1 [16]; + int iVar2; + DWORD *pDVar3; + LPVOID pvVar4; + ulonglong dwBytes; + + if ((param_1 != 0) && + (auVar1._8_8_ = 0, auVar1._0_8_ = param_1, + SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar1,0) < param_2)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0xc; + FUN_1800384e0(0,0,0,0,0); + return (LPVOID)0x0; + } + dwBytes = param_2 * param_1; + if (dwBytes == 0) { + dwBytes = 1; + } + do { + if ((dwBytes < 0xffffffffffffffe1) && + (pvVar4 = HeapAlloc(DAT_180072ed8,8,dwBytes), pvVar4 != (LPVOID)0x0)) { + return pvVar4; + } + if (DAT_180073310 == 0) { + if (param_3 != (undefined4 *)0x0) { + *param_3 = 0xc; + } + return (LPVOID)0x0; + } + iVar2 = _callnewh(dwBytes); + } while (iVar2 != 0); + if (param_3 != (undefined4 *)0x0) { + *param_3 = 0xc; + } + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 180043f50 (227 bytes) name=FUN_180043f50 + +LPVOID FUN_180043f50(ulonglong param_1,ulonglong param_2) + +{ + undefined1 auVar1 [16]; + int iVar2; + DWORD *pDVar3; + LPVOID pvVar4; + DWORD DVar5; + ulonglong dwBytes; + + DVar5 = 0; + if ((param_1 != 0) && + (auVar1._8_8_ = 0, auVar1._0_8_ = param_1, + SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar1,0) < param_2)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0xc; + FUN_1800384e0(0,0,0,0,0); + return (LPVOID)0x0; + } + dwBytes = param_1 * param_2; + if (dwBytes == 0) { + dwBytes = 1; + } + do { + pvVar4 = (LPVOID)0x0; + if ((dwBytes < 0xffffffffffffffe1) && + (pvVar4 = HeapAlloc(DAT_180072ed8,8,dwBytes), pvVar4 != (LPVOID)0x0)) { +LAB_180044003: + if (pvVar4 != (LPVOID)0x0) { + return pvVar4; + } + if (DVar5 == 0) { + return (LPVOID)0x0; + } + goto LAB_18004400f; + } + if (DAT_180073310 == 0) { + DVar5 = 0xc; + goto LAB_180044003; + } + iVar2 = _callnewh(dwBytes); + } while (iVar2 != 0); + DVar5 = 0xc; +LAB_18004400f: + pDVar3 = FUN_180035b40(); + if (pDVar3 != (DWORD *)0x0) { + pDVar3 = FUN_180035b40(); + *pDVar3 = DVar5; + } + return (LPVOID)0x0; +} + + +================================================================== + +### EXPORT FUNC 180044040 (319 bytes) name=FUN_180044040 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180044040(char *param_1,undefined8 *param_2) + +{ + byte *pbVar1; + char cVar2; + undefined *puVar3; + bool bVar4; + uint uVar5; + int iVar6; + pthreadlocinfo ptVar7; + char cVar8; + DWORD *local_18; + + bVar4 = false; + if (param_2 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + ptVar7 = *(pthreadlocinfo *)(local_18 + 0x30); + puVar3 = *(undefined **)(local_18 + 0x2e); + if ((ptVar7 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + ptVar7 = __updatetlocinfo(); + } + if ((puVar3 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + bVar4 = true; + local_18[0x32] = local_18[0x32] | 2; + } + } + else { + ptVar7 = (pthreadlocinfo)*param_2; + bVar4 = false; + } + uVar5 = FUN_180049b30((int)*param_1); + if (uVar5 != 0x65) { + do { + pbVar1 = (byte *)(param_1 + 1); + param_1 = param_1 + 1; + iVar6 = isdigit((uint)*pbVar1); + } while (iVar6 != 0); + } + uVar5 = FUN_180049b30((int)*param_1); + if (uVar5 == 0x78) { + param_1 = param_1 + 2; + } + cVar8 = *param_1; + *param_1 = **(char **)ptVar7->locale_name[0]; + do { + param_1 = param_1 + 1; + cVar2 = *param_1; + *param_1 = cVar8; + cVar8 = cVar2; + } while (*param_1 != '\0'); + if (bVar4) { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180044180 (354 bytes) name=FUN_180044180 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180044180(char *param_1,undefined8 *param_2) + +{ + undefined *puVar1; + bool bVar2; + pthreadlocinfo ptVar3; + char cVar4; + char *pcVar5; + char *pcVar6; + DWORD *local_18; + + bVar2 = false; + if (param_2 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + ptVar3 = *(pthreadlocinfo *)(local_18 + 0x30); + puVar1 = *(undefined **)(local_18 + 0x2e); + if ((ptVar3 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + ptVar3 = __updatetlocinfo(); + } + if ((puVar1 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + bVar2 = true; + local_18[0x32] = local_18[0x32] | 2; + } + } + else { + ptVar3 = (pthreadlocinfo)*param_2; + bVar2 = false; + } + cVar4 = *param_1; + if (cVar4 != '\0') { + do { + if (cVar4 == **(char **)ptVar3->locale_name[0]) break; + cVar4 = param_1[1]; + param_1 = param_1 + 1; + } while (cVar4 != '\0'); + } + pcVar5 = param_1 + 1; + if (*param_1 != '\0') { + cVar4 = *pcVar5; + while (((cVar4 != '\0' && (cVar4 != 'e')) && (cVar4 != 'E'))) { + pcVar6 = pcVar5 + 1; + pcVar5 = pcVar5 + 1; + cVar4 = *pcVar6; + } + pcVar6 = pcVar5 + -1; + cVar4 = *pcVar6; + while (cVar4 == '0') { + pcVar6 = pcVar6 + -1; + cVar4 = *pcVar6; + } + if (*pcVar6 == **(char **)ptVar3->locale_name[0]) { + pcVar6 = pcVar6 + -1; + } + do { + cVar4 = *pcVar5; + pcVar6 = pcVar6 + 1; + pcVar5 = pcVar5 + 1; + *pcVar6 = cVar4; + } while (cVar4 != '\0'); + } + if (bVar2) { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180044310 (70 bytes) name=_fassign_l + +/* Library Function - Single Match + _fassign_l + + Library: Visual Studio 2005 Release */ + +void __cdecl _fassign_l(int flag,char *argument,char *number,_locale_t param_4) + +{ + uint local_res8 [8]; + undefined8 local_18 [2]; + + if (flag != 0) { + FUN_180049b50((uint *)local_18,number,(longlong *)param_4); + *(undefined8 *)argument = local_18[0]; + return; + } + FUN_180049ce0(local_res8,number,(longlong *)param_4); + *(uint *)argument = local_res8[0]; + return; +} + + +================================================================== + +### EXPORT FUNC 180044360 (70 bytes) name=_fassign + +/* Library Function - Single Match + _fassign + + Library: Visual Studio 2005 Release */ + +void __cdecl _fassign(int flag,char *argument,char *number) + +{ + uint local_res8 [6]; + undefined8 local_res20; + + if (flag != 0) { + FUN_180049b50((uint *)&local_res20,number,(longlong *)0x0); + *(undefined8 *)argument = local_res20; + return; + } + FUN_180049ce0(local_res8,number,(longlong *)0x0); + *(uint *)argument = local_res8[0]; + return; +} + + +================================================================== + +### EXPORT FUNC 1800443d0 (832 bytes) name=FUN_1800443d0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +FUN_1800443d0(undefined1 *param_1,ulonglong param_2,int param_3,int param_4,int *param_5, + char param_6,pthreadlocinfo param_7) + +{ + char cVar1; + undefined *puVar2; + bool bVar3; + errno_t eVar4; + DWORD *pDVar5; + ulonglong uVar6; + char *pcVar7; + undefined1 *puVar8; + undefined1 *puVar9; + undefined1 *_SizeInBytes; + char *pcVar10; + int iVar11; + DWORD *local_48; + + bVar3 = false; + if (param_7 == (pthreadlocinfo)0x0) { + local_48 = FUN_1800380a0(); + param_7 = *(pthreadlocinfo *)(local_48 + 0x30); + puVar2 = *(undefined **)(local_48 + 0x2e); + if ((param_7 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_48[0x32]) == 0)) + { + param_7 = __updatetlocinfo(); + } + if ((puVar2 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_48[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_48[0x32] & 2) == 0) { + bVar3 = true; + local_48[0x32] = local_48[0x32] | 2; + } + } + else { + param_7 = *(pthreadlocinfo *)param_7; + bVar3 = false; + } + if ((param_1 == (undefined1 *)0x0) || (param_2 == 0)) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (bVar3) { + local_48[0x32] = local_48[0x32] & 0xfffffffd; + } + return 0x16; + } + iVar11 = 0; + if (0 < param_3) { + iVar11 = param_3; + } + if (param_2 <= (ulonglong)(longlong)(iVar11 + 9)) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x22; + FUN_1800384e0(0,0,0,0,0); + if (bVar3) { + local_48[0x32] = local_48[0x32] & 0xfffffffd; + } + return 0x22; + } + _SizeInBytes = (undefined1 *)0xffffffffffffffff; + if (param_6 != '\0') { + pcVar7 = param_1 + (*param_5 == 0x2d); + if (0 < param_3 != 0) { + uVar6 = 0xffffffffffffffff; + pcVar10 = pcVar7; + do { + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + cVar1 = *pcVar10; + pcVar10 = pcVar10 + 1; + } while (cVar1 != '\0'); + memcpy(pcVar7 + (int)(uint)(0 < param_3),pcVar7,~uVar6); + } + } + puVar8 = param_1; + if (*param_5 == 0x2d) { + *param_1 = 0x2d; + puVar8 = param_1 + 1; + } + puVar9 = puVar8; + if (0 < param_3) { + puVar9 = puVar8 + 1; + *puVar8 = puVar8[1]; + *puVar9 = **(undefined1 **)param_7->locale_name[0]; + } + pcVar7 = puVar9 + (ulonglong)(param_6 == '\0') + (longlong)param_3; + if (param_2 != 0xffffffffffffffff) { + _SizeInBytes = param_1 + (param_2 - (longlong)pcVar7); + } + eVar4 = strcpy_s(pcVar7,(rsize_t)_SizeInBytes,"e+000"); + if (eVar4 == 0) { + if (param_4 != 0) { + *pcVar7 = 'E'; + } + if (**(char **)(param_5 + 4) != '0') { + iVar11 = param_5[1] + -1; + if (iVar11 < 0) { + iVar11 = -iVar11; + pcVar7[1] = '-'; + } + if (99 < iVar11) { + pcVar7[2] = pcVar7[2] + (char)(iVar11 / 100); + iVar11 = iVar11 % 100; + } + if (9 < iVar11) { + pcVar7[3] = pcVar7[3] + (char)(iVar11 / 10); + iVar11 = iVar11 % 10; + } + pcVar7[4] = pcVar7[4] + (char)iVar11; + } + if (((DAT_180073648 & 1) != 0) && (pcVar7[2] == '0')) { + memcpy(pcVar7 + 2,pcVar7 + 3,3); + } + if (bVar3) { + local_48[0x32] = local_48[0x32] & 0xfffffffd; + } + return 0; + } + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); +} + + +================================================================== + +### EXPORT FUNC 180044710 (275 bytes) name=FUN_180044710 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_180044710(ulonglong *param_1,undefined1 *param_2,ulonglong param_3,int param_4,int param_5, + pthreadlocinfo param_6) + +{ + DWORD *pDVar1; + undefined8 uVar2; + ulonglong uVar3; + undefined1 auStackY_a8 [32]; + int local_68 [6]; + char local_50 [24]; + ulonglong local_38; + + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_a8; + FUN_180049f90(*param_1,local_68,local_50,0x16); + if ((param_2 == (undefined1 *)0x0) || (param_3 == 0)) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + uVar2 = 0x16; + } + else { + if (param_3 == 0xffffffffffffffff) { + uVar3 = 0xffffffffffffffff; + } + else { + uVar3 = (param_3 - (local_68[0] == 0x2d)) - (ulonglong)(0 < param_4); + } + uVar2 = FUN_180049e70(param_2 + (ulonglong)(0 < param_4) + (ulonglong)(local_68[0] == 0x2d), + uVar3,param_4 + 1,(longlong)local_68); + if ((int)uVar2 == 0) { + uVar2 = FUN_1800443d0(param_2,param_3,param_4,param_5,local_68,'\0',param_6); + } + else { + *param_2 = 0; + } + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180044830 (1216 bytes) name=FUN_180044830 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +FUN_180044830(ulonglong *param_1,undefined1 *param_2,ulonglong param_3,uint param_4,uint param_5, + undefined8 *param_6) + +{ + undefined *puVar1; + int iVar2; + ulonglong *puVar3; + bool bVar4; + undefined1 uVar5; + ushort uVar6; + pthreadlocinfo ptVar7; + DWORD *pDVar8; + undefined8 uVar9; + char *pcVar10; + ulonglong *puVar11; + char cVar12; + longlong lVar13; + ulonglong uVar14; + longlong lVar15; + short sVar16; + ulonglong *puVar17; + ulonglong *puVar18; + char *pcVar19; + char *pcVar20; + short sVar21; + ulonglong uVar22; + ulonglong local_res10; + DWORD *local_48; + + bVar4 = false; + sVar16 = 0x30; + local_res10 = 0x3ff; + if (param_6 == (undefined8 *)0x0) { + local_48 = FUN_1800380a0(); + ptVar7 = *(pthreadlocinfo *)(local_48 + 0x30); + puVar1 = *(undefined **)(local_48 + 0x2e); + if ((ptVar7 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_48[0x32]) == 0)) { + ptVar7 = __updatetlocinfo(); + } + if ((puVar1 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_48[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_48[0x32] & 2) == 0) { + bVar4 = true; + local_48[0x32] = local_48[0x32] | 2; + } + } + else { + ptVar7 = (pthreadlocinfo)*param_6; + bVar4 = false; + } + uVar22 = (ulonglong)param_4; + if ((int)param_4 < 0) { + uVar22 = 0; + } + if ((param_2 == (undefined1 *)0x0) || (param_3 == 0)) { + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (bVar4) { + local_48[0x32] = local_48[0x32] & 0xfffffffd; + } + return 0x16; + } + iVar2 = (int)uVar22; + *param_2 = 0; + if (param_3 <= (ulonglong)(longlong)(iVar2 + 0xb)) { + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x22; + FUN_1800384e0(0,0,0,0,0); + if (bVar4) { + local_48[0x32] = local_48[0x32] & 0xfffffffd; + } + return 0x22; + } + if (((uint)(*param_1 >> 0x34) & 0x7ff) == 0x7ff) { + if (param_3 == 0xffffffffffffffff) { + uVar22 = 0xffffffffffffffff; + } + else { + uVar22 = param_3 - 2; + } + uVar9 = FUN_180044710(param_1,param_2 + 2,uVar22,iVar2,0,(pthreadlocinfo)0x0); + if ((int)uVar9 != 0) { + *param_2 = 0; + if (!bVar4) { + return uVar9; + } + local_48[0x32] = local_48[0x32] & 0xfffffffd; + return uVar9; + } + if (param_2[2] == '-') { + *param_2 = 0x2d; + param_2 = param_2 + 1; + } + *param_2 = 0x30; + uVar5 = 0x78; + if (param_5 != 0) { + uVar5 = 0x58; + } + param_2[1] = uVar5; + pcVar10 = strrchr(param_2 + 2,0x65); + if (pcVar10 != (char *)0x0) { + cVar12 = 'p'; + if (param_5 != 0) { + cVar12 = 'P'; + } + *pcVar10 = cVar12; + pcVar10[3] = '\0'; + } + goto LAB_180044cca; + } + if ((*param_1 & 0x8000000000000000) != 0) { + *param_2 = 0x2d; + param_2 = param_2 + 1; + } + uVar14 = (ulonglong)param_5; + *param_2 = 0x30; + uVar5 = 0x78; + if (param_5 != 0) { + uVar5 = 0x58; + } + param_2[1] = uVar5; + sVar21 = 0x61; + if (param_5 != 0) { + sVar21 = 0x41; + } + if ((*param_1 & 0x7ff0000000000000) == 0) { + param_2[2] = 0x30; + local_res10 = (ulonglong)(-(uint)((*param_1 & 0xfffffffffffff) != 0) & 0x3fe); + } + else { + param_2[2] = 0x31; + } + puVar17 = (ulonglong *)(param_2 + 3); + puVar18 = (ulonglong *)(param_2 + 4); + if (iVar2 == 0) { + *(char *)puVar17 = (char)uVar22; + } + else { + *(char *)puVar17 = **(char **)ptVar7->locale_name[0]; + } + if ((*param_1 & 0xfffffffffffff) != 0) { + uVar14 = 0xf000000000000; + do { + if ((int)uVar22 < 1) { + if ((-1 < sVar16) && + (puVar3 = puVar18, 8 < (ushort)((*param_1 & uVar14) >> ((byte)sVar16 & 0x3f)))) { + while( true ) { + puVar11 = (ulonglong *)((longlong)puVar3 + -1); + if ((*(char *)puVar11 != 'f') && (*(char *)puVar11 != 'F')) break; + *(char *)puVar11 = '0'; + puVar3 = puVar11; + } + if (puVar11 == puVar17) { + *(char *)((longlong)puVar3 + -2) = *(char *)((longlong)puVar3 + -2) + '\x01'; + } + else if (*(char *)puVar11 == '9') { + *(char *)puVar11 = (char)(sVar21 + -0x3a) + ':'; + } + else { + *(char *)puVar11 = *(char *)puVar11 + '\x01'; + } + } + break; + } + uVar6 = (short)((*param_1 & uVar14) >> ((byte)sVar16 & 0x3f)) + 0x30; + if (0x39 < uVar6) { + uVar6 = uVar6 + sVar21 + -0x3a; + } + *(char *)puVar18 = (char)uVar6; + puVar18 = (ulonglong *)((longlong)puVar18 + 1); + uVar14 = uVar14 >> 4; + uVar22 = (ulonglong)((int)uVar22 - 1); + sVar16 = sVar16 + -4; + } while (-1 < sVar16); + } + if (0 < (int)uVar22) { + FUN_1800357d0(puVar18,CONCAT71((int7)(uVar14 >> 8),0x30),uVar22); + puVar18 = (ulonglong *)((longlong)puVar18 + uVar22); + } + if ((char)*puVar17 == '\0') { + puVar18 = puVar17; + } + cVar12 = 'p'; + if (param_5 != 0) { + cVar12 = 'P'; + } + *(char *)puVar18 = cVar12; + lVar13 = ((uint)(*param_1 >> 0x34) & 0x7ff) - local_res10; + if (lVar13 < 0) { + *(char *)((longlong)puVar18 + 1) = '-'; + lVar13 = -lVar13; + } + else { + *(char *)((longlong)puVar18 + 1) = '+'; + } + pcVar19 = (char *)((longlong)puVar18 + 2); + *pcVar19 = '0'; + pcVar10 = pcVar19; + if (lVar13 < 1000) { +LAB_180044c55: + pcVar20 = pcVar10; + if (99 < lVar13) goto LAB_180044c5b; + } + else { + pcVar10 = (char *)((longlong)puVar18 + 3); + *(char *)((longlong)puVar18 + 2) = (char)(lVar13 / 1000) + '0'; + lVar13 = lVar13 % 1000; + pcVar20 = pcVar10; + if (pcVar10 == pcVar19) goto LAB_180044c55; +LAB_180044c5b: + pcVar10 = pcVar20 + 1; + lVar15 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(lVar13),8) + lVar13; + lVar15 = (lVar15 >> 6) - (lVar15 >> 0x3f); + *pcVar20 = (char)lVar15 + '0'; + lVar13 = lVar13 + lVar15 * -100; + } + if ((pcVar10 != pcVar19) || (pcVar19 = pcVar10, 9 < lVar13)) { + pcVar19 = pcVar10 + 1; + *pcVar10 = (char)(lVar13 / 10) + '0'; + lVar13 = lVar13 % 10; + } + *pcVar19 = (char)lVar13 + '0'; + pcVar19[1] = '\0'; +LAB_180044cca: + if (bVar4) { + local_48[0x32] = local_48[0x32] & 0xfffffffd; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180044cf0 (602 bytes) name=FUN_180044cf0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 +FUN_180044cf0(char *param_1,longlong param_2,int param_3,int *param_4,char param_5, + pthreadlocinfo param_6) + +{ + ulonglong *_Dst; + char cVar1; + undefined *puVar2; + bool bVar3; + ulonglong uVar4; + DWORD *pDVar5; + undefined8 uVar6; + ulonglong uVar7; + int iVar8; + char *pcVar9; + int iVar10; + char *pcVar11; + ulonglong *puVar12; + DWORD *local_38; + + bVar3 = false; + iVar10 = param_4[1] + -1; + if (param_6 == (pthreadlocinfo)0x0) { + local_38 = FUN_1800380a0(); + param_6 = *(pthreadlocinfo *)(local_38 + 0x30); + puVar2 = *(undefined **)(local_38 + 0x2e); + if ((param_6 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + param_6 = __updatetlocinfo(); + } + if ((puVar2 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_38[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_38[0x32] & 2) == 0) { + bVar3 = true; + local_38[0x32] = local_38[0x32] | 2; + } + } + else { + param_6 = *(pthreadlocinfo *)param_6; + bVar3 = false; + } + if ((param_1 == (char *)0x0) || (param_2 == 0)) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (bVar3) { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + uVar6 = 0x16; + } + else { + if ((param_5 != '\0') && (iVar10 == param_3)) { + iVar8 = *param_4; + param_1[(longlong)iVar10 + (ulonglong)(iVar8 == 0x2d)] = '0'; + param_1[(longlong)iVar10 + 1 + (ulonglong)(iVar8 == 0x2d)] = '\0'; + } + if (*param_4 == 0x2d) { + *param_1 = '-'; + param_1 = param_1 + 1; + } + if (param_4[1] < 1) { + uVar7 = 0xffffffffffffffff; + pcVar9 = param_1; + do { + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + cVar1 = *pcVar9; + pcVar9 = pcVar9 + 1; + } while (cVar1 != '\0'); + memcpy(param_1 + 1,param_1,~uVar7); + *param_1 = '0'; + pcVar9 = param_1 + 1; + } + else { + pcVar9 = param_1 + param_4[1]; + } + if (0 < param_3) { + uVar7 = 0xffffffffffffffff; + pcVar11 = pcVar9; + do { + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + cVar1 = *pcVar11; + pcVar11 = pcVar11 + 1; + } while (cVar1 != '\0'); + _Dst = (ulonglong *)(pcVar9 + 1); + memcpy(_Dst,pcVar9,~uVar7); + *pcVar9 = **(char **)param_6->locale_name[0]; + if (param_4[1] < 0) { + iVar8 = -param_4[1]; + iVar10 = iVar8; + if ((param_5 == '\0') && (iVar10 = param_3, iVar8 <= param_3)) { + iVar10 = iVar8; + } + if (iVar10 != 0) { + uVar7 = 0xffffffffffffffff; + puVar12 = _Dst; + do { + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + uVar4 = *puVar12; + puVar12 = (ulonglong *)((longlong)puVar12 + 1); + } while ((char)uVar4 != '\0'); + memcpy((void *)((longlong)iVar10 + (longlong)_Dst),_Dst,~uVar7); + } + FUN_1800357d0(_Dst,0x30,(longlong)iVar10); + } + } + if (bVar3) { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + uVar6 = 0; + } + return uVar6; +} + + +================================================================== + +### EXPORT FUNC 180044f50 (235 bytes) name=FUN_180044f50 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_180044f50(ulonglong *param_1,char *param_2,longlong param_3,int param_4,pthreadlocinfo param_5) + +{ + DWORD *pDVar1; + undefined8 uVar2; + ulonglong uVar3; + undefined1 auStackY_98 [32]; + int local_68; + int local_64; + char local_50 [24]; + ulonglong local_38; + + local_38 = DAT_18006cea0 ^ (ulonglong)auStackY_98; + FUN_180049f90(*param_1,&local_68,local_50,0x16); + if ((param_2 == (char *)0x0) || (param_3 == 0)) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + uVar2 = 0x16; + } + else { + if (param_3 == -1) { + uVar3 = 0xffffffffffffffff; + } + else { + uVar3 = param_3 - (ulonglong)(local_68 == 0x2d); + } + uVar2 = FUN_180049e70(param_2 + (local_68 == 0x2d),uVar3,local_64 + param_4,(longlong)&local_68) + ; + if ((int)uVar2 == 0) { + uVar2 = FUN_180044cf0(param_2,param_3,param_4,&local_68,'\0',param_5); + } + else { + *param_2 = '\0'; + } + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180045040 (356 bytes) name=FUN_180045040 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_180045040(ulonglong *param_1,char *param_2,ulonglong param_3,int param_4,int param_5, + pthreadlocinfo param_6) + +{ + char *pcVar1; + DWORD *pDVar2; + undefined8 uVar3; + ulonglong uVar4; + char *pcVar5; + int iVar6; + undefined1 auStackY_b8 [32]; + int local_78; + int local_74; + char local_60 [24]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_b8; + FUN_180049f90(*param_1,&local_78,local_60,0x16); + if ((param_2 == (char *)0x0) || (param_3 == 0)) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + uVar3 = 0x16; + } + else { + iVar6 = local_74 + -1; + if (param_3 == 0xffffffffffffffff) { + uVar4 = 0xffffffffffffffff; + } + else { + uVar4 = param_3 - (local_78 == 0x2d); + } + uVar3 = FUN_180049e70(param_2 + (local_78 == 0x2d),uVar4,param_4,(longlong)&local_78); + if ((int)uVar3 == 0) { + local_74 = local_74 + -1; + if ((local_74 < -4) || (param_4 <= local_74)) { + uVar3 = FUN_1800443d0(param_2,param_3,param_4,param_5,&local_78,'\x01',param_6); + } + else { + pcVar1 = param_2 + (local_78 == 0x2d); + if (iVar6 < local_74) { + do { + pcVar5 = pcVar1; + pcVar1 = pcVar5 + 1; + } while (*pcVar5 != '\0'); + pcVar5[-1] = '\0'; + } + uVar3 = FUN_180044cf0(param_2,param_3,param_4,&local_78,'\x01',param_6); + } + } + else { + *param_2 = '\0'; + } + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 1800451b0 (158 bytes) name=_cfltcvt_l + +/* Library Function - Single Match + _cfltcvt_l + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl +_cfltcvt_l(double *arg,char *buffer,size_t sizeInBytes,int format,int precision,int caps, + _locale_t plocinfo) + +{ + undefined8 uVar1; + + if ((format == 0x65) || (format == 0x45)) { + uVar1 = FUN_180044710((ulonglong *)arg,buffer,sizeInBytes,precision,caps, + (pthreadlocinfo)plocinfo); + return (errno_t)uVar1; + } + if (format == 0x66) { + uVar1 = FUN_180044f50((ulonglong *)arg,buffer,sizeInBytes,precision,(pthreadlocinfo)plocinfo); + return (errno_t)uVar1; + } + if ((format != 0x61) && (format != 0x41)) { + uVar1 = FUN_180045040((ulonglong *)arg,buffer,sizeInBytes,precision,caps, + (pthreadlocinfo)plocinfo); + return (errno_t)uVar1; + } + uVar1 = FUN_180044830((ulonglong *)arg,buffer,sizeInBytes,precision,caps,&plocinfo->locinfo); + return (errno_t)uVar1; +} + + +================================================================== + +### EXPORT FUNC 180045250 (154 bytes) name=_cfltcvt + +/* Library Function - Single Match + _cfltcvt + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl +_cfltcvt(double *arg,char *buffer,size_t sizeInBytes,int format,int precision,int caps) + +{ + undefined8 uVar1; + + if ((format == 0x65) || (format == 0x45)) { + uVar1 = FUN_180044710((ulonglong *)arg,buffer,sizeInBytes,precision,caps,(pthreadlocinfo)0x0); + return (errno_t)uVar1; + } + if (format == 0x66) { + uVar1 = FUN_180044f50((ulonglong *)arg,buffer,sizeInBytes,precision,(pthreadlocinfo)0x0); + return (errno_t)uVar1; + } + if ((format != 0x61) && (format != 0x41)) { + uVar1 = FUN_180045040((ulonglong *)arg,buffer,sizeInBytes,precision,caps,(pthreadlocinfo)0x0); + return (errno_t)uVar1; + } + uVar1 = FUN_180044830((ulonglong *)arg,buffer,sizeInBytes,precision,caps,(undefined8 *)0x0); + return (errno_t)uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800452f0 (55 bytes) name=FUN_1800452f0 + +void FUN_1800452f0(void) + +{ + undefined *puVar1; + undefined **ppuVar2; + longlong lVar3; + + lVar3 = 10; + ppuVar2 = &PTR_LAB_18006dc40; + do { + puVar1 = (undefined *)FUN_180037b60((INT_PTR)*ppuVar2); + lVar3 = lVar3 + -1; + *ppuVar2 = puVar1; + ppuVar2 = ppuVar2 + 1; + } while (lVar3 != 0); + return; +} + + +================================================================== + +### EXPORT FUNC 180045330 (150 bytes) name=FUN_180045330 + +undefined8 FUN_180045330(void) + +{ + longlong lVar1; + ulonglong uVar2; + undefined8 *puVar3; + int iVar4; + int iVar5; + + iVar4 = 0; + iVar5 = 0; + puVar3 = &DAT_18006dd00; + do { + if (*(int *)(puVar3 + 1) == 1) { + lVar1 = (longlong)iVar4; + iVar4 = iVar4 + 1; + *puVar3 = &DAT_180073330 + lVar1 * 0x28; + uVar2 = FUN_180045910(&DAT_180073330 + lVar1 * 0x28,4000); + if ((int)uVar2 == 0) { + (&DAT_18006dd00)[(longlong)iVar5 * 2] = 0; + return 0; + } + } + puVar3 = puVar3 + 2; + iVar5 = iVar5 + 1; + } while ((longlong)puVar3 < 0x18006df40); + return 1; +} + + +================================================================== + +### EXPORT FUNC 1800453d0 (152 bytes) name=FUN_1800453d0 + +void FUN_1800453d0(void) + +{ + LPCRITICAL_SECTION lpCriticalSection; + undefined8 *puVar1; + undefined8 *puVar2; + + puVar1 = &DAT_18006dd00; + puVar2 = &DAT_18006dd00; + do { + lpCriticalSection = (LPCRITICAL_SECTION)*puVar2; + if ((lpCriticalSection != (LPCRITICAL_SECTION)0x0) && (*(int *)(puVar2 + 1) != 1)) { + DeleteCriticalSection(lpCriticalSection); + FUN_180034a70(lpCriticalSection); + *puVar2 = 0; + } + puVar2 = puVar2 + 2; + } while ((longlong)puVar2 < 0x18006df40); + do { + if (((LPCRITICAL_SECTION)*puVar1 != (LPCRITICAL_SECTION)0x0) && (*(int *)(puVar1 + 1) == 1)) { + DeleteCriticalSection((LPCRITICAL_SECTION)*puVar1); + } + puVar1 = puVar1 + 2; + } while ((longlong)puVar1 < 0x18006df40); + return; +} + + +================================================================== + +### EXPORT FUNC 180045470 (24 bytes) name=FUN_180045470 + +void FUN_180045470(int param_1) + +{ + /* WARNING: Could not recover jumptable at 0x000180045481. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(&DAT_18006dd00)[(longlong)param_1 * 2]); + return; +} + + +================================================================== + +### EXPORT FUNC 180045490 (229 bytes) name=FUN_180045490 + +undefined8 FUN_180045490(int param_1) + +{ + LPVOID pvVar1; + DWORD *pDVar2; + ulonglong uVar3; + longlong lVar4; + undefined8 uVar5; + + lVar4 = (longlong)param_1; + uVar5 = 1; + if (DAT_180072ed8 == 0) { + FUN_180042070(); + FUN_180041e30(0x1e); + FUN_1800366d0(0xff); + } + if ((&DAT_18006dd00)[lVar4 * 2] == 0) { + pvVar1 = (LPVOID)FUN_180040de0(0x28); + if (pvVar1 == (LPVOID)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0xc; + uVar5 = 0; + } + else { + _lock(10); + if ((&DAT_18006dd00)[lVar4 * 2] == 0) { + uVar3 = FUN_180045910(pvVar1,4000); + if ((int)uVar3 == 0) { + FUN_180034a70(pvVar1); + pDVar2 = FUN_180035b40(); + *pDVar2 = 0xc; + uVar5 = 0; + } + else { + (&DAT_18006dd00)[lVar4 * 2] = pvVar1; + } + } + else { + FUN_180034a70(pvVar1); + } + LeaveCriticalSection(DAT_18006dda0); + } + } + else { + uVar5 = 1; + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180045580 (28 bytes) name=FUN_180045580 + +void FUN_180045580(void) + +{ + LeaveCriticalSection(DAT_18006dda0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800455a0 (68 bytes) name=_lock + +/* Library Function - Single Match + _lock + + Library: Visual Studio 2008 Release */ + +void __cdecl _lock(int _File) + +{ + undefined8 uVar1; + + if ((&DAT_18006dd00)[(longlong)_File * 2] == 0) { + uVar1 = FUN_180045490(_File); + if ((int)uVar1 == 0) { + _amsg_exit(0x11); + } + } + /* WARNING: Could not recover jumptable at 0x0001800455dd. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnterCriticalSection((LPCRITICAL_SECTION)(&DAT_18006dd00)[(longlong)_File * 2]); + return; +} + + +================================================================== + +### EXPORT FUNC 1800455f0 (29 bytes) name=_initp_misc_winsig + +/* Library Function - Single Match + _initp_misc_winsig + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void _initp_misc_winsig(undefined8 param_1) + +{ + DAT_180073560 = param_1; + DAT_180073568 = param_1; + DAT_180073570 = param_1; + DAT_180073578 = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 180045610 (12 bytes) name=FUN_180045610 + +void FUN_180045610(void) + +{ + FUN_180037d20(DAT_180073570); + return; +} + + +================================================================== + +### EXPORT FUNC 180045620 (603 bytes) name=FUN_180045620 + +undefined8 FUN_180045620(DWORD param_1) + +{ + DWORD *pDVar1; + bool bVar2; + code *pcVar3; + DWORD *pDVar4; + undefined8 uVar5; + INT_PTR IVar6; + DWORD *pDVar7; + int iVar8; + DWORD local_res8; + undefined8 local_30; + + bVar2 = false; + local_res8 = 0; + switch(param_1) { + case 2: + pDVar7 = (DWORD *)&DAT_180073560; + IVar6 = DAT_180073560; + break; + default: + pDVar7 = FUN_180035b40(); + *pDVar7 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + case 4: + case 8: + case 0xb: + pDVar4 = FUN_180038010(); + if (pDVar4 == (DWORD *)0x0) { + return 0xffffffff; + } + pDVar1 = *(DWORD **)(pDVar4 + 0x28); + pDVar7 = pDVar1; + do { + if (pDVar7[1] == param_1) break; + pDVar7 = pDVar7 + 4; + } while (pDVar7 < pDVar1 + (longlong)DAT_18006da6c * 4); + if ((pDVar1 + (longlong)DAT_18006da6c * 4 <= pDVar7) || (pDVar7[1] != param_1)) { + pDVar7 = (DWORD *)0x0; + } + pDVar7 = pDVar7 + 2; + pcVar3 = *(code **)pDVar7; + goto LAB_180045739; + case 6: + case 0x16: + pDVar7 = (DWORD *)&DAT_180073570; + IVar6 = DAT_180073570; + break; + case 0xf: + pDVar7 = (DWORD *)&DAT_180073578; + IVar6 = DAT_180073578; + break; + case 0x15: + pDVar7 = (DWORD *)&DAT_180073568; + IVar6 = DAT_180073568; + } + local_res8 = 1; + bVar2 = true; + pcVar3 = (code *)FUN_180037d20(IVar6); + pDVar4 = (DWORD *)0x0; +LAB_180045739: + if (pcVar3 == (code *)0x1) { + return 0; + } + if (pcVar3 != (code *)0x0) { + if (bVar2) { + _lock(0); + } + if (((param_1 == 8) || (param_1 == 0xb)) || (param_1 == 4)) { + local_30 = *(undefined8 *)(pDVar4 + 0x2a); + pDVar4[0x2a] = 0; + pDVar4[0x2b] = 0; + if (param_1 == 8) { + local_res8 = pDVar4[0x2c]; + pDVar4[0x2c] = 0x8c; + } + } + iVar8 = DAT_18006da60; + if (param_1 == 8) { + for (; iVar8 < DAT_18006da60 + DAT_18006da64; iVar8 = iVar8 + 1) { + *(undefined8 *)(*(longlong *)(pDVar4 + 0x28) + 8 + (longlong)iVar8 * 0x10) = 0; + } + } + else { + IVar6 = FUN_180037c30(); + *(INT_PTR *)pDVar7 = IVar6; + } + if (bVar2) { + FUN_180045470(0); + } + if (param_1 == 8) { + (*pcVar3)(8,pDVar4[0x2c]); + } + else { + (*pcVar3)(param_1); + if ((param_1 != 0xb) && (param_1 != 4)) { + return 0; + } + } + *(undefined8 *)(pDVar4 + 0x2a) = local_30; + if (param_1 == 8) { + pDVar4[0x2c] = local_res8; + } + return 0; + } + FUN_180036a20(3); + pcVar3 = (code *)swi(3); + uVar5 = (*pcVar3)(); + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 1800458b0 (28 bytes) name=FUN_1800458b0 + +void FUN_1800458b0(undefined8 param_1,longlong param_2) + +{ + if (*(int *)(param_2 + 0x70) != 0) { + FUN_180045470(0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800458d0 (8 bytes) name=FUN_1800458d0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_1800458d0(undefined8 param_1) + +{ + _DAT_180073588 = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 1800458e0 (8 bytes) name=FUN_1800458e0 + +void FUN_1800458e0(undefined8 param_1) + +{ + DAT_180073590 = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 1800458f0 (20 bytes) name=FUN_1800458f0 + +undefined8 FUN_1800458f0(LPCRITICAL_SECTION param_1) + +{ + InitializeCriticalSection(param_1); + return 1; +} + + +================================================================== + +### EXPORT FUNC 180045910 (214 bytes) name=FUN_180045910 + +ulonglong FUN_180045910(undefined8 param_1,ulonglong param_2) + +{ + code *pcVar1; + undefined8 uVar2; + HMODULE hModule; + ulonglong uVar3; + int local_res18 [2]; + + local_res18[0] = 0; + pcVar1 = (code *)FUN_180037d20(DAT_180073590); + if (pcVar1 == (FARPROC)0x0) { + uVar2 = _get_osplatform(local_res18); + if ((int)uVar2 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + if (local_res18[0] == 1) { + pcVar1 = FUN_1800458f0; + } + else { + hModule = GetModuleHandleA("kernel32.dll"); + if (hModule == (HMODULE)0x0) { + pcVar1 = FUN_1800458f0; + } + else { + pcVar1 = GetProcAddress(hModule,"InitializeCriticalSectionAndSpinCount"); + if (pcVar1 == (FARPROC)0x0) { + pcVar1 = FUN_1800458f0; + } + } + } + DAT_180073590 = FUN_180037b60((INT_PTR)pcVar1); + } + uVar3 = (*pcVar1)(param_1,param_2 & 0xffffffff); + return uVar3 & 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180045a00 (34 bytes) name=FUN_180045a00 + +bool FUN_180045a00(undefined8 *param_1) + +{ + return *(int *)*param_1 == -0x3fffffe9; +} + + +================================================================== + +### EXPORT FUNC 180045a30 (11 bytes) name=FUN_180045a30 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180045a30(void) + +{ + _DAT_1800db4c4 = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 180045a40 (1340 bytes) name=FUN_180045a40 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +LPSTR FUN_180045a40(longlong *param_1,LCID param_2,DWORD param_3,LPCSTR param_4,uint param_5, + LPSTR param_6,int param_7,UINT param_8,int param_9) + +{ + bool bVar1; + undefined1 auVar2 [16]; + undefined1 auVar3 [16]; + longlong lVar4; + LPSTR pCVar5; + LCID Locale; + undefined1 *puVar6; + int iVar7; + DWORD DVar8; + uint uVar9; + int iVar10; + UINT UVar11; + ulonglong uVar12; + undefined4 *puVar13; + LPSTR pCVar14; + undefined8 uVar15; + LPCSTR pCVar16; + LPSTR pCVar17; + uint uVar18; + char *pcVar19; + size_t sVar20; + undefined1 *puVar21; + undefined1 *puVar22; + undefined1 *puVar23; + undefined1 *puVar24; + LPCWSTR lpSrcStr; + LPCWSTR lpWideCharStr; + ulonglong *puVar25; + ulonglong uVar26; + LPSTR pCVar27; + UINT UVar28; + undefined1 auStackY_88 [32]; + DWORD local_48 [2]; + LPCSTR local_40; + LCID local_38; + ulonglong local_30; + + puVar21 = auStackY_88; + puVar22 = auStackY_88; + puVar24 = auStackY_88; + puVar23 = auStackY_88; + local_30 = DAT_18006cea0 ^ (ulonglong)local_48; + pCVar27 = (LPSTR)0x0; + local_48[0] = param_3; + local_40 = param_4; + local_38 = param_2; + if (DAT_180073604 == 0) { + iVar7 = LCMapStringW(0,0x100,L"",1,(LPWSTR)0x0,0); + if (iVar7 == 0) { + DVar8 = GetLastError(); + if (DVar8 == 0x78) { + DAT_180073604 = 2; + } + } + else { + DAT_180073604 = 1; + } + } + pcVar19 = param_4; + uVar9 = param_5; + if (0 < (int)param_5) { + do { + uVar9 = uVar9 - 1; + if (*pcVar19 == '\0') goto LAB_180045b02; + pcVar19 = pcVar19 + 1; + } while (uVar9 != 0); + uVar9 = 0xffffffff; +LAB_180045b02: + uVar9 = param_5 - uVar9; + uVar18 = uVar9 - 1; + bVar1 = (int)uVar18 < (int)param_5; + param_5 = uVar18; + if (bVar1) { + param_5 = uVar9; + } + } + if ((DAT_180073604 == 2) || (DAT_180073604 == 0)) { + if (param_2 == 0) { + param_2 = *(LCID *)(*param_1 + 0x14); + local_38 = param_2; + } + UVar28 = param_8; + if (param_8 == 0) { + UVar28 = *(UINT *)(*param_1 + 4); + } + uVar15 = FUN_180048c40(param_2); + UVar11 = (UINT)uVar15; + puVar6 = auStackY_88; + if (UVar11 != 0xffffffff) { + if (UVar11 == UVar28) { + uVar9 = LCMapStringA(param_2,local_48[0],param_4,param_5,param_6,param_7); + pCVar14 = (LPSTR)(ulonglong)uVar9; + goto LAB_180045f56; + } + pCVar16 = FUN_180048cb0(UVar28,UVar11,param_4,¶m_5,(LPVOID)0x0,0); + puVar6 = auStackY_88; + if (pCVar16 != (LPCSTR)0x0) { + iVar7 = LCMapStringA(param_2,local_48[0],pCVar16,param_5,(LPSTR)0x0,0); + pCVar5 = param_6; + uVar26 = (ulonglong)iVar7; + local_40 = (LPCSTR)CONCAT44(local_40._4_4_,iVar7); + pCVar14 = pCVar27; + puVar23 = auStackY_88; + pCVar17 = pCVar27; + if ((0 < iVar7) && (puVar23 = auStackY_88, uVar26 < 0xffffffffffffffe1)) { + sVar20 = uVar26 + 0x10; + pCVar17 = (LPSTR)0x0; + if (sVar20 < 0x401) { + uVar26 = uVar26 + 0x1f; + if (uVar26 <= sVar20) { + uVar26 = 0xffffffffffffff0; + } + lVar4 = -(uVar26 & 0xfffffffffffffff0); + puVar23 = auStackY_88 + lVar4; + puVar24 = auStackY_88 + lVar4; + puVar13 = (undefined4 *)((longlong)local_48 + lVar4); + if (puVar13 == (undefined4 *)0x0) goto LAB_180045f13; + *puVar13 = 0xcccc; +LAB_180045e91: + puVar25 = (ulonglong *)(puVar13 + 4); + puVar23 = puVar24; + } + else { + puVar13 = FUN_1800349a0(sVar20); + puVar25 = (ulonglong *)0x0; + puVar23 = auStackY_88; + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = 0xdddd; + goto LAB_180045e91; + } + } + pCVar14 = (LPSTR)0x0; + if (puVar25 != (ulonglong *)0x0) { + uVar26 = (ulonglong)(int)(uint)local_40; + *(undefined8 *)(puVar23 + -8) = 0x180045eab; + FUN_1800357d0(puVar25,0,uVar26); + Locale = local_38; + DVar8 = local_48[0]; + *(uint *)(puVar23 + 0x28) = (uint)local_40; + *(ulonglong **)(puVar23 + 0x20) = puVar25; + *(undefined8 *)(puVar23 + -8) = 0x180045ecc; + iVar7 = LCMapStringA(Locale,DVar8,pCVar16,param_5,*(LPSTR *)(puVar23 + 0x20), + *(int *)(puVar23 + 0x28)); + local_40 = (LPCSTR)CONCAT44(local_40._4_4_,iVar7); + pCVar17 = pCVar27; + if (iVar7 != 0) { + *(int *)(puVar23 + 0x28) = param_7; + *(LPSTR *)(puVar23 + 0x20) = pCVar5; + *(undefined8 *)(puVar23 + -8) = 0x180045ef3; + pCVar17 = FUN_180048cb0(UVar11,UVar28,(LPCSTR)puVar25,(uint *)&local_40, + *(LPVOID *)(puVar23 + 0x20),*(undefined4 *)(puVar23 + 0x28)); + uVar9 = (uint)local_40; + if (pCVar17 == (LPSTR)0x0) { + uVar9 = 0; + } + pCVar27 = (LPSTR)(ulonglong)uVar9; + } + pCVar14 = pCVar27; + if ((int)puVar25[-2] == 0xdddd) { + *(undefined8 *)(puVar23 + -8) = 0x180045f13; + FUN_180034a70(puVar25 + -2); + } + } + } +LAB_180045f13: + *(undefined8 *)(puVar23 + -8) = 0x180045f1b; + FUN_180034a70(pCVar16); + if ((pCVar17 != (LPSTR)0x0) && (pCVar5 != pCVar17)) { + *(undefined8 *)(puVar23 + -8) = 0x180045f2d; + FUN_180034a70(pCVar17); + } + goto LAB_180045f56; + } + } + } + else { + puVar6 = auStackY_88; + if (DAT_180073604 == 1) { + UVar28 = param_8; + if (param_8 == 0) { + UVar28 = *(UINT *)(*param_1 + 4); + } + DVar8 = 1; + if (param_9 != 0) { + DVar8 = 9; + } + iVar7 = MultiByteToWideChar(UVar28,DVar8,param_4,param_5,(LPWSTR)0x0,0); + puVar6 = auStackY_88; + if (((iVar7 != 0) && (puVar6 = auStackY_88, 0 < iVar7)) && + (auVar2._8_8_ = 0, auVar2._0_8_ = (longlong)iVar7, puVar6 = auStackY_88, + 1 < SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar2,0))) { + lVar4 = (longlong)iVar7 * 2; + uVar26 = lVar4 + 0x10; + if (uVar26 < 0x401) { + uVar12 = lVar4 + 0x1f; + if (uVar12 <= uVar26) { + uVar12 = 0xffffffffffffff0; + } + lVar4 = -(uVar12 & 0xfffffffffffffff0); + puVar21 = auStackY_88 + lVar4; + puVar13 = (undefined4 *)((longlong)local_48 + lVar4); + puVar6 = auStackY_88 + lVar4; + if (puVar13 == (undefined4 *)0x0) goto LAB_180045dcd; + *puVar13 = 0xcccc; +LAB_180045bfa: + lpSrcStr = (LPCWSTR)(puVar13 + 4); + puVar22 = puVar21; + } + else { + puVar13 = FUN_1800349a0(uVar26); + lpSrcStr = (LPCWSTR)0x0; + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = 0xdddd; + goto LAB_180045bfa; + } + } + pCVar16 = local_40; + puVar6 = puVar22; + if (lpSrcStr != (LPCWSTR)0x0) { + *(int *)(puVar22 + 0x28) = iVar7; + *(LPCWSTR *)(puVar22 + 0x20) = lpSrcStr; + *(undefined8 *)(puVar22 + -8) = 0x180045c27; + iVar10 = MultiByteToWideChar(UVar28,1,pCVar16,param_5,*(LPWSTR *)(puVar22 + 0x20), + *(int *)(puVar22 + 0x28)); + DVar8 = local_48[0]; + puVar23 = puVar22; + if (iVar10 != 0) { + *(undefined4 *)(puVar22 + 0x28) = 0; + *(undefined8 *)(puVar22 + 0x20) = 0; + *(undefined8 *)(puVar22 + -8) = 0x180045c4a; + iVar10 = LCMapStringW(param_2,DVar8,lpSrcStr,iVar7,*(LPWSTR *)(puVar22 + 0x20), + *(int *)(puVar22 + 0x28)); + DVar8 = local_48[0]; + pCVar27 = (LPSTR)(longlong)iVar10; + if (iVar10 != 0) { + if ((local_48[0] >> 10 & 1) == 0) { + if ((0 < iVar10) && + (auVar3._8_8_ = 0, auVar3._0_8_ = pCVar27, + 1 < SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar3,0))) { + uVar26 = (longlong)pCVar27 * 2 + 0x10; + if (uVar26 < 0x401) { + uVar12 = (longlong)pCVar27 * 2 + 0x1f; + if (uVar12 <= uVar26) { + uVar12 = 0xffffffffffffff0; + } + *(undefined8 *)(puVar22 + -8) = 0x180045cd9; + lVar4 = -(uVar12 & 0xfffffffffffffff0); + puVar23 = puVar22 + lVar4; + puVar13 = (undefined4 *)(puVar22 + lVar4 + 0x40); + if (puVar13 == (undefined4 *)0x0) goto LAB_180045d80; + *puVar13 = 0xcccc; + puVar22 = puVar22 + lVar4; +LAB_180045d05: + lpWideCharStr = (LPCWSTR)(puVar13 + 4); + puVar23 = puVar22; + } + else { + *(undefined8 *)(puVar22 + -8) = 0x180045cf7; + puVar13 = FUN_1800349a0(uVar26); + lpWideCharStr = (LPCWSTR)0x0; + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = 0xdddd; + goto LAB_180045d05; + } + } + DVar8 = local_48[0]; + if (lpWideCharStr != (LPCWSTR)0x0) { + *(int *)(puVar23 + 0x28) = iVar10; + *(LPCWSTR *)(puVar23 + 0x20) = lpWideCharStr; + *(undefined8 *)(puVar23 + -8) = 0x180045d2a; + iVar7 = LCMapStringW(param_2,DVar8,lpSrcStr,iVar7,*(LPWSTR *)(puVar23 + 0x20), + *(int *)(puVar23 + 0x28)); + if (iVar7 != 0) { + *(undefined8 *)(puVar23 + 0x38) = 0; + *(undefined8 *)(puVar23 + 0x30) = 0; + if (param_7 == 0) { + *(undefined4 *)(puVar23 + 0x28) = 0; + *(undefined8 *)(puVar23 + 0x20) = 0; + } + else { + *(int *)(puVar23 + 0x28) = param_7; + *(LPSTR *)(puVar23 + 0x20) = param_6; + } + *(undefined8 *)(puVar23 + -8) = 0x180045d6b; + uVar9 = WideCharToMultiByte(UVar28,0,lpWideCharStr,iVar10, + *(LPSTR *)(puVar23 + 0x20), + *(int *)(puVar23 + 0x28), + *(LPCSTR *)(puVar23 + 0x30), + *(LPBOOL *)(puVar23 + 0x38)); + pCVar27 = (LPSTR)(ulonglong)uVar9; + } + if (*(int *)(lpWideCharStr + -8) == 0xdddd) { + *(undefined8 *)(puVar23 + -8) = 0x180045d80; + FUN_180034a70(lpWideCharStr + -8); + } + } + } + } + else if ((param_7 != 0) && (iVar10 <= param_7)) { + *(int *)(puVar22 + 0x28) = param_7; + *(LPSTR *)(puVar22 + 0x20) = param_6; + *(undefined8 *)(puVar22 + -8) = 0x180045c93; + LCMapStringW(param_2,DVar8,lpSrcStr,iVar7,*(LPWSTR *)(puVar22 + 0x20), + *(int *)(puVar22 + 0x28)); + } + } + } +LAB_180045d80: + if (*(int *)(lpSrcStr + -8) == 0xdddd) { + *(undefined8 *)(puVar23 + -8) = 0x180045d92; + FUN_180034a70(lpSrcStr + -8); + } + pCVar14 = (LPSTR)((ulonglong)pCVar27 & 0xffffffff); + goto LAB_180045f56; + } + } + } + } +LAB_180045dcd: + puVar23 = puVar6; + pCVar14 = (LPSTR)0x0; +LAB_180045f56: + *(undefined8 *)(puVar23 + -8) = 0x180045f62; + return pCVar14; +} + + +================================================================== + +### EXPORT FUNC 180045f80 (345 bytes) name=FUN_180045f80 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180045f80(longlong *param_1,LCID param_2,DWORD param_3,LPCSTR param_4,uint param_5, + LPSTR param_6,int param_7,UINT param_8,int param_9) + +{ + pthreadmbcinfo ptVar1; + bool bVar2; + DWORD *pDVar3; + pthreadlocinfo local_38; + pthreadmbcinfo local_30; + DWORD *local_28; + undefined1 local_20; + + bVar2 = false; + local_20 = 0; + if (param_1 == (longlong *)0x0) { + pDVar3 = FUN_1800380a0(); + local_38 = *(pthreadlocinfo *)(pDVar3 + 0x30); + ptVar1 = *(pthreadmbcinfo *)(pDVar3 + 0x2e); + local_30 = ptVar1; + local_28 = pDVar3; + if ((local_38 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_38 = __updatetlocinfo(); + } + if ((ptVar1 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_30 = __updatetmbcinfo(); + } + if ((pDVar3[0x32] & 2) == 0) { + pDVar3[0x32] = pDVar3[0x32] | 2; + bVar2 = true; + local_20 = 1; + } + } + else { + local_38 = (pthreadlocinfo)*param_1; + local_30 = (pthreadmbcinfo)param_1[1]; + bVar2 = false; + pDVar3 = local_28; + } + FUN_180045a40((longlong *)&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8, + param_9); + if (bVar2) { + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800460e0 (600 bytes) name=FUN_1800460e0 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +BOOL FUN_1800460e0(longlong *param_1,DWORD param_2,LPCSTR param_3,uint param_4,LPWORD param_5, + UINT param_6,LCID param_7,int param_8) + +{ + ulonglong uVar1; + longlong lVar2; + BOOL BVar3; + DWORD DVar4; + UINT UVar5; + int iVar6; + undefined8 uVar7; + ulonglong uVar8; + undefined4 *puVar9; + LPCSTR pCVar10; + LPCWSTR lpSrcStr; + undefined1 *puVar11; + undefined1 *puVar12; + undefined1 *puVar13; + ulonglong uVar14; + uint local_res20 [2]; + undefined1 auStackY_68 [32]; + WORD local_38 [4]; + ulonglong local_30; + + puVar12 = auStackY_68; + puVar13 = auStackY_68; + puVar11 = auStackY_68; + local_30 = DAT_18006cea0 ^ (ulonglong)local_38; + local_res20[0] = param_4; + if (DAT_180073608 == 0) { + BVar3 = GetStringTypeW(1,L"",1,local_38); + if (BVar3 == 0) { + DVar4 = GetLastError(); + if (DVar4 != 0x78) goto LAB_18004619e; + DAT_180073608 = 2; + goto LAB_180046163; + } + DAT_180073608 = 1; +LAB_1800461ac: + BVar3 = 0; + if (param_6 == 0) { + param_6 = *(UINT *)(*param_1 + 4); + } + DVar4 = 1; + if (param_8 != 0) { + DVar4 = 9; + } + iVar6 = MultiByteToWideChar(param_6,DVar4,param_3,local_res20[0],(LPWSTR)0x0,0); + uVar14 = (ulonglong)iVar6; + puVar11 = auStackY_68; + if (((iVar6 != 0) && (puVar11 = auStackY_68, 0 < iVar6)) && + (puVar11 = auStackY_68, uVar14 < 0x7ffffffffffffff1)) { + uVar1 = uVar14 * 2 + 0x10; + if (uVar1 < 0x401) { + uVar8 = uVar14 * 2 + 0x1f; + if (uVar8 <= uVar1) { + uVar8 = 0xffffffffffffff0; + } + lVar2 = -(uVar8 & 0xfffffffffffffff0); + puVar12 = auStackY_68 + lVar2; + puVar9 = (undefined4 *)((longlong)local_38 + lVar2); + puVar11 = auStackY_68 + lVar2; + if (puVar9 == (undefined4 *)0x0) goto LAB_180046191; + *puVar9 = 0xcccc; +LAB_180046252: + lpSrcStr = (LPCWSTR)(puVar9 + 4); + puVar13 = puVar12; + } + else { + puVar9 = FUN_1800349a0(uVar1); + lpSrcStr = (LPCWSTR)0x0; + if (puVar9 != (undefined4 *)0x0) { + *puVar9 = 0xdddd; + goto LAB_180046252; + } + } + puVar11 = puVar13; + if (lpSrcStr != (LPCWSTR)0x0) { + *(undefined8 *)(puVar13 + -8) = 0x18004626d; + FUN_1800357d0((ulonglong *)lpSrcStr,0,uVar14 * 2); + *(int *)(puVar13 + 0x28) = iVar6; + *(LPCWSTR *)(puVar13 + 0x20) = lpSrcStr; + *(undefined8 *)(puVar13 + -8) = 0x18004628b; + iVar6 = MultiByteToWideChar(param_6,1,param_3,local_res20[0],*(LPWSTR *)(puVar13 + 0x20), + *(int *)(puVar13 + 0x28)); + if (iVar6 != 0) { + *(undefined8 *)(puVar13 + -8) = 0x1800462a2; + BVar3 = GetStringTypeW(param_2,lpSrcStr,iVar6,param_5); + } + if (*(int *)(lpSrcStr + -8) == 0xdddd) { + *(undefined8 *)(puVar13 + -8) = 0x1800462b6; + FUN_180034a70(lpSrcStr + -8); + } + goto LAB_180046312; + } + } + } + else { +LAB_18004619e: + if ((DAT_180073608 != 2) && (DAT_180073608 != 0)) { + if (DAT_180073608 == 1) goto LAB_1800461ac; + goto LAB_180046191; + } +LAB_180046163: + pCVar10 = (LPCSTR)0x0; + if (param_7 == 0) { + param_7 = *(LCID *)(*param_1 + 0x14); + } + if (param_6 == 0) { + param_6 = *(UINT *)(*param_1 + 4); + } + uVar7 = FUN_180048c40(param_7); + UVar5 = (UINT)uVar7; + puVar11 = auStackY_68; + if ((UVar5 != 0xffffffff) && + ((UVar5 == param_6 || + (pCVar10 = FUN_180048cb0(param_6,UVar5,param_3,local_res20,(LPVOID)0x0,0), + puVar11 = auStackY_68, param_3 = pCVar10, pCVar10 != (LPCSTR)0x0)))) { + BVar3 = GetStringTypeA(param_7,param_2,param_3,local_res20[0],param_5); + puVar13 = auStackY_68; + if (pCVar10 != (LPCSTR)0x0) { + FUN_180034a70(pCVar10); + puVar13 = auStackY_68; + } + goto LAB_180046312; + } + } +LAB_180046191: + BVar3 = 0; + puVar13 = puVar11; +LAB_180046312: + *(undefined8 *)(puVar13 + -8) = 0x18004631e; + return BVar3; +} + + +================================================================== + +### EXPORT FUNC 180046340 (328 bytes) name=FUN_180046340 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180046340(longlong *param_1,DWORD param_2,LPCSTR param_3,uint param_4,LPWORD param_5, + UINT param_6,LCID param_7,int param_8) + +{ + pthreadmbcinfo ptVar1; + bool bVar2; + DWORD *pDVar3; + pthreadlocinfo local_38; + pthreadmbcinfo local_30; + DWORD *local_28; + undefined1 local_20; + + bVar2 = false; + local_20 = 0; + if (param_1 == (longlong *)0x0) { + pDVar3 = FUN_1800380a0(); + local_38 = *(pthreadlocinfo *)(pDVar3 + 0x30); + ptVar1 = *(pthreadmbcinfo *)(pDVar3 + 0x2e); + local_30 = ptVar1; + local_28 = pDVar3; + if ((local_38 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_38 = __updatetlocinfo(); + } + if ((ptVar1 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_30 = __updatetmbcinfo(); + } + if ((pDVar3[0x32] & 2) == 0) { + pDVar3[0x32] = pDVar3[0x32] | 2; + bVar2 = true; + local_20 = 1; + } + } + else { + local_38 = (pthreadlocinfo)*param_1; + local_30 = (pthreadmbcinfo)param_1[1]; + bVar2 = false; + pDVar3 = local_28; + } + FUN_1800460e0((longlong *)&local_38,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (bVar2) { + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180046490 (492 bytes) name=__free_lc_time + +/* Library Function - Single Match + __free_lc_time + + Library: Visual Studio 2005 Release */ + +void __free_lc_time(undefined8 *param_1) + +{ + if (param_1 != (undefined8 *)0x0) { + FUN_180034a70((LPVOID)param_1[1]); + FUN_180034a70((LPVOID)param_1[2]); + FUN_180034a70((LPVOID)param_1[3]); + FUN_180034a70((LPVOID)param_1[4]); + FUN_180034a70((LPVOID)param_1[5]); + FUN_180034a70((LPVOID)param_1[6]); + FUN_180034a70((LPVOID)*param_1); + FUN_180034a70((LPVOID)param_1[8]); + FUN_180034a70((LPVOID)param_1[9]); + FUN_180034a70((LPVOID)param_1[10]); + FUN_180034a70((LPVOID)param_1[0xb]); + FUN_180034a70((LPVOID)param_1[0xc]); + FUN_180034a70((LPVOID)param_1[0xd]); + FUN_180034a70((LPVOID)param_1[7]); + FUN_180034a70((LPVOID)param_1[0xe]); + FUN_180034a70((LPVOID)param_1[0xf]); + FUN_180034a70((LPVOID)param_1[0x10]); + FUN_180034a70((LPVOID)param_1[0x11]); + FUN_180034a70((LPVOID)param_1[0x12]); + FUN_180034a70((LPVOID)param_1[0x13]); + FUN_180034a70((LPVOID)param_1[0x14]); + FUN_180034a70((LPVOID)param_1[0x15]); + FUN_180034a70((LPVOID)param_1[0x16]); + FUN_180034a70((LPVOID)param_1[0x17]); + FUN_180034a70((LPVOID)param_1[0x18]); + FUN_180034a70((LPVOID)param_1[0x19]); + FUN_180034a70((LPVOID)param_1[0x1a]); + FUN_180034a70((LPVOID)param_1[0x1b]); + FUN_180034a70((LPVOID)param_1[0x1c]); + FUN_180034a70((LPVOID)param_1[0x1d]); + FUN_180034a70((LPVOID)param_1[0x1e]); + FUN_180034a70((LPVOID)param_1[0x1f]); + FUN_180034a70((LPVOID)param_1[0x20]); + FUN_180034a70((LPVOID)param_1[0x21]); + FUN_180034a70((LPVOID)param_1[0x22]); + FUN_180034a70((LPVOID)param_1[0x23]); + FUN_180034a70((LPVOID)param_1[0x24]); + FUN_180034a70((LPVOID)param_1[0x25]); + FUN_180034a70((LPVOID)param_1[0x26]); + FUN_180034a70((LPVOID)param_1[0x27]); + FUN_180034a70((LPVOID)param_1[0x28]); + FUN_180034a70((LPVOID)param_1[0x29]); + FUN_180034a70((LPVOID)param_1[0x2a]); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180046680 (74 bytes) name=__free_lconv_num + +/* Library Function - Single Match + __free_lconv_num + + Library: Visual Studio 2005 Release */ + +void __free_lconv_num(undefined8 *param_1) + +{ + if (param_1 != (undefined8 *)0x0) { + if ((undefined *)*param_1 != PTR_DAT_18006df60) { + FUN_180034a70((undefined *)*param_1); + } + if ((undefined *)param_1[1] != PTR_DAT_18006df68) { + FUN_180034a70((undefined *)param_1[1]); + } + if ((undefined *)param_1[2] != PTR_DAT_18006df70) { + FUN_180034a70((undefined *)param_1[2]); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800466d0 (151 bytes) name=__free_lconv_mon + +/* Library Function - Single Match + __free_lconv_mon + + Library: Visual Studio 2005 Release */ + +void __free_lconv_mon(longlong param_1) + +{ + if (param_1 != 0) { + if (*(undefined **)(param_1 + 0x18) != PTR_DAT_18006df78) { + FUN_180034a70(*(undefined **)(param_1 + 0x18)); + } + if (*(undefined **)(param_1 + 0x20) != PTR_DAT_18006df80) { + FUN_180034a70(*(undefined **)(param_1 + 0x20)); + } + if (*(undefined **)(param_1 + 0x28) != PTR_DAT_18006df88) { + FUN_180034a70(*(undefined **)(param_1 + 0x28)); + } + if (*(undefined **)(param_1 + 0x30) != PTR_DAT_18006df90) { + FUN_180034a70(*(undefined **)(param_1 + 0x30)); + } + if (*(undefined **)(param_1 + 0x38) != PTR_DAT_18006df98) { + FUN_180034a70(*(undefined **)(param_1 + 0x38)); + } + if (*(undefined **)(param_1 + 0x40) != PTR_DAT_18006dfa0) { + FUN_180034a70(*(undefined **)(param_1 + 0x40)); + } + if (*(undefined **)(param_1 + 0x48) != PTR_DAT_18006dfa8) { + FUN_180034a70(*(undefined **)(param_1 + 0x48)); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180046770 (60 bytes) name=___lc_codepage_func + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + ___lc_codepage_func + + Library: Visual Studio 2005 Release */ + +UINT __cdecl ___lc_codepage_func(void) + +{ + DWORD *pDVar1; + pthreadlocinfo ptVar2; + + pDVar1 = FUN_1800380a0(); + if ((*(undefined **)(pDVar1 + 0x30) != PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & pDVar1[0x32]) == 0)) { + ptVar2 = __updatetlocinfo(); + return ptVar2->lc_codepage; + } + return *(UINT *)(*(undefined **)(pDVar1 + 0x30) + 4); +} + + +================================================================== + +### EXPORT FUNC 1800467b0 (180 bytes) name=strcat_s + +/* Library Function - Single Match + strcat_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl strcat_s(char *_Dst,rsize_t _SizeInBytes,char *_Src) + +{ + char cVar1; + DWORD *pDVar2; + char *pcVar3; + + if ((_Dst != (char *)0x0) && (_SizeInBytes != 0)) { + pcVar3 = _Dst; + if (_Src == (char *)0x0) { + *_Dst = '\0'; + } + else { + do { + if (*pcVar3 == '\0') break; + pcVar3 = pcVar3 + 1; + _SizeInBytes = _SizeInBytes - 1; + } while (_SizeInBytes != 0); + if (_SizeInBytes != 0) { + do { + cVar1 = *_Src; + _Src = _Src + 1; + *pcVar3 = cVar1; + if (cVar1 == '\0') break; + _SizeInBytes = _SizeInBytes - 1; + pcVar3 = pcVar3 + 1; + } while (_SizeInBytes != 0); + if (_SizeInBytes == 0) { + *_Dst = '\0'; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + return 0; + } + *_Dst = '\0'; + } + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180046870 (271 bytes) name=strncpy_s + +/* Library Function - Single Match + strncpy_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl strncpy_s(char *_Dst,rsize_t _SizeInBytes,char *_Src,rsize_t _MaxCount) + +{ + char cVar1; + DWORD *pDVar2; + rsize_t rVar3; + char *pcVar4; + char *pcVar5; + + if (_MaxCount == 0) { + if (_Dst == (char *)0x0) { + if (_SizeInBytes == 0) { + return 0; + } + goto LAB_1800468b1; + } + } + else if (_Dst == (char *)0x0) goto LAB_1800468b1; + if (_SizeInBytes != 0) { + if (_MaxCount == 0) { + *_Dst = '\0'; + return 0; + } + if (_Src != (char *)0x0) { + rVar3 = _SizeInBytes; + pcVar4 = _Dst; + if (_MaxCount == 0xffffffffffffffff) { + do { + cVar1 = *_Src; + _Src = _Src + 1; + *pcVar4 = cVar1; + if (cVar1 == '\0') break; + rVar3 = rVar3 - 1; + pcVar4 = pcVar4 + 1; + } while (rVar3 != 0); + } + else { + do { + cVar1 = *_Src; + pcVar5 = pcVar4 + 1; + _Src = _Src + 1; + *pcVar4 = cVar1; + if ((cVar1 == '\0') || (rVar3 = rVar3 - 1, rVar3 == 0)) break; + _MaxCount = _MaxCount - 1; + pcVar4 = pcVar5; + } while (_MaxCount != 0); + if (_MaxCount == 0) { + *pcVar5 = '\0'; + } + } + if (rVar3 != 0) { + return 0; + } + if (_MaxCount == 0xffffffffffffffff) { + _Dst[_SizeInBytes - 1] = '\0'; + return 0x50; + } + *_Dst = '\0'; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + *_Dst = '\0'; + } +LAB_1800468b1: + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; +} + + +================================================================== + +### EXPORT FUNC 180046a60 (174 bytes) name=FUN_180046a60 + +undefined8 FUN_180046a60(uint param_1,undefined8 param_2,DWORD param_3) + +{ + byte *pbVar1; + DWORD DVar2; + HANDLE hFile; + DWORD *pDVar3; + undefined8 local_res10; + + local_res10 = param_2; + hFile = (HANDLE)FUN_18004a440(param_1); + if (hFile == (HANDLE)0xffffffffffffffff) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 9; + return 0xffffffffffffffff; + } + DVar2 = SetFilePointer(hFile,(LONG)local_res10,(PLONG)((longlong)&local_res10 + 4),param_3); + local_res10 = CONCAT44(local_res10._4_4_,DVar2); + if (DVar2 == 0xffffffff) { + DVar2 = GetLastError(); + if (DVar2 != 0) { + _dosmaperr(DVar2); + return 0xffffffffffffffff; + } + } + pbVar1 = (byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50); + *pbVar1 = *pbVar1 & 0xfd; + return local_res10; +} + + +================================================================== + +### EXPORT FUNC 180046b10 (305 bytes) name=FUN_180046b10 + +undefined8 FUN_180046b10(uint param_1,undefined8 param_2,DWORD param_3) + +{ + DWORD *pDVar1; + undefined8 uVar2; + + if (param_1 == 0xfffffffe) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + uVar2 = 0xffffffffffffffff; + } + else if (((int)param_1 < 0) || (DAT_1800db4c8 <= param_1)) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + FUN_1800384e0(0,0,0,0,0); + uVar2 = 0xffffffffffffffff; + } + else if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + FUN_1800384e0(0,0,0,0,0); + uVar2 = 0xffffffffffffffff; + } + else { + FUN_18004a4e0(param_1); + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + uVar2 = 0xffffffffffffffff; + } + else { + uVar2 = FUN_180046a60(param_1,param_2,param_3); + } + FUN_18004a5b0(param_1); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180046c50 (23 bytes) name=FUN_180046c50 + +void FUN_180046c50(undefined8 param_1,longlong param_2) + +{ + FUN_18004a5b0(*(uint *)(param_2 + 0x60)); + return; +} + + +================================================================== + +### EXPORT FUNC 180046c70 (1912 bytes) name=FUN_180046c70 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +int FUN_180046c70(uint param_1,WCHAR *param_2,uint param_3) + +{ + char cVar1; + byte bVar2; + ushort uVar3; + WCHAR WVar4; + BOOL BVar5; + DWORD DVar6; + int iVar7; + DWORD nNumberOfBytesToWrite; + DWORD DVar8; + DWORD *pDVar9; + undefined7 extraout_var; + undefined6 extraout_var_00; + ulonglong uVar10; + int iVar11; + WCHAR *pWVar12; + WCHAR *pWVar13; + uint uVar14; + uint uVar15; + uint uVar16; + char cVar17; + int iVar18; + UINT CodePage; + longlong lVar19; + uint uVar20; + longlong lVar21; + undefined1 auStackY_628 [32]; + WCHAR local_5e8 [2]; + uint local_5e4; + UINT local_5e0; + DWORD local_5dc; + longlong local_5d8; + longlong local_5d0; + CHAR local_5c8 [16]; + WCHAR local_5b8 [520]; + WCHAR local_1a8 [176]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_628; + uVar15 = 0; + uVar14 = 0; + if (param_3 == 0) { + return 0; + } + if (param_2 == (WCHAR *)0x0) { + pDVar9 = FUN_180035b70(); + *pDVar9 = 0; + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return -1; + } + lVar21 = (longlong)(int)param_1 >> 5; + lVar19 = (ulonglong)(param_1 & 0x1f) * 0x50; + cVar17 = (char)(*(char *)(lVar19 + 0x38 + (&DAT_1800db4e0)[lVar21]) * '\x02') >> 1; + local_5d8 = lVar21; + local_5d0 = lVar19; + if (((cVar17 == '\x02') || (cVar17 == '\x01')) && ((~param_3 & 1) == 0)) { + pDVar9 = FUN_180035b70(); + *pDVar9 = 0; + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return -1; + } + if ((*(byte *)(lVar19 + 8 + (&DAT_1800db4e0)[lVar21]) & 0x20) != 0) { + FUN_180046a60(param_1,0,2); + } + bVar2 = FUN_1800475a0(param_1); + iVar18 = (int)param_2; + uVar20 = uVar15; + if (((int)CONCAT71(extraout_var,bVar2) == 0) || + ((*(byte *)(lVar19 + 8 + (&DAT_1800db4e0)[lVar21]) & 0x80) == 0)) { +LAB_180047049: + if ((*(byte *)(lVar19 + 8 + (&DAT_1800db4e0)[lVar21]) & 0x80) != 0) { + DVar6 = 0; + DVar8 = 0; + if (cVar17 == '\0') { + pWVar12 = param_2; + if (param_3 != 0) { + do { + pWVar13 = local_5b8; + uVar10 = 0; + do { + if (param_3 <= (uint)((int)pWVar12 - iVar18)) break; + WVar4 = *pWVar12; + pWVar12 = (WCHAR *)((longlong)pWVar12 + 1); + if ((char)WVar4 == '\n') { + *(char *)pWVar13 = '\r'; + pWVar13 = (WCHAR *)((longlong)pWVar13 + 1); + uVar15 = uVar15 + 1; + uVar10 = uVar10 + 1; + } + uVar10 = uVar10 + 1; + *(char *)pWVar13 = (char)WVar4; + pWVar13 = (WCHAR *)((longlong)pWVar13 + 1); + } while (uVar10 < 0x400); + BVar5 = WriteFile(*(HANDLE *)(lVar19 + (&DAT_1800db4e0)[local_5d8]),local_5b8, + (int)pWVar13 - (int)local_5b8,&local_5e4,(LPOVERLAPPED)0x0); + uVar16 = uVar15; + if (BVar5 == 0) { + DVar8 = GetLastError(); + goto LAB_180047337; + } + uVar20 = uVar20 + local_5e4; + if (((longlong)(int)local_5e4 < (longlong)pWVar13 - (longlong)local_5b8) || + (param_3 <= (uint)((int)pWVar12 - iVar18))) goto LAB_180047337; + } while( true ); + } + } + else if (cVar17 == '\x02') { + pWVar12 = param_2; + if (param_3 != 0) { + do { + pWVar13 = local_5b8; + uVar10 = 0; + do { + if (param_3 <= (uint)((int)pWVar12 - iVar18)) break; + WVar4 = *pWVar12; + pWVar12 = pWVar12 + 1; + if (WVar4 == L'\n') { + *pWVar13 = L'\r'; + pWVar13 = pWVar13 + 1; + uVar15 = uVar15 + 2; + uVar10 = uVar10 + 2; + } + uVar10 = uVar10 + 2; + *pWVar13 = WVar4; + pWVar13 = pWVar13 + 1; + } while (uVar10 < 0x3ff); + BVar5 = WriteFile(*(HANDLE *)(lVar19 + (&DAT_1800db4e0)[local_5d8]),local_5b8, + (int)pWVar13 - (int)local_5b8,&local_5e4,(LPOVERLAPPED)0x0); + uVar16 = uVar15; + if (BVar5 == 0) { + DVar8 = GetLastError(); + goto LAB_180047337; + } + uVar20 = uVar20 + local_5e4; + if (((longlong)(int)local_5e4 < (longlong)pWVar13 - (longlong)local_5b8) || + (param_3 <= (uint)((int)pWVar12 - iVar18))) goto LAB_180047337; + } while( true ); + } + } + else { + pWVar12 = param_2; + if (param_3 != 0) { + do { + pWVar13 = local_1a8; + uVar10 = 0; + do { + if (param_3 <= (uint)((int)pWVar12 - iVar18)) break; + WVar4 = *pWVar12; + pWVar12 = pWVar12 + 1; + if (WVar4 == L'\n') { + *pWVar13 = L'\r'; + pWVar13 = pWVar13 + 1; + uVar10 = uVar10 + 2; + } + uVar10 = uVar10 + 2; + *pWVar13 = WVar4; + pWVar13 = pWVar13 + 1; + } while (uVar10 < 0x152); + iVar7 = WideCharToMultiByte(0xfde9,0,local_1a8,((int)pWVar13 - (int)local_1a8) / 2, + (LPSTR)local_5b8,0x2ab,(LPCSTR)0x0,(LPBOOL)0x0); + if (iVar7 == 0) { + DVar8 = GetLastError(); + uVar16 = uVar14; + goto LAB_180047337; + } + iVar11 = 0; + do { + BVar5 = WriteFile(*(HANDLE *)(local_5d0 + (&DAT_1800db4e0)[local_5d8]), + (LPCVOID)((longlong)local_5b8 + (longlong)iVar11),iVar7 - iVar11, + &local_5e4,(LPOVERLAPPED)0x0); + if (BVar5 == 0) { + DVar6 = GetLastError(); + uVar16 = uVar14; + DVar8 = DVar6; + if (iVar11 < iVar7) goto LAB_180047337; + break; + } + iVar11 = iVar11 + local_5e4; + } while (iVar11 < iVar7); + uVar20 = (int)pWVar12 - iVar18; + uVar16 = uVar15; + DVar8 = DVar6; + if (param_3 <= uVar20) goto LAB_180047337; + } while( true ); + } + } + goto LAB_180047383; + } + BVar5 = WriteFile(*(HANDLE *)(lVar19 + (&DAT_1800db4e0)[lVar21]),param_2,param_3,&local_5e4, + (LPOVERLAPPED)0x0); + if (BVar5 != 0) { + uVar20 = local_5e4; + uVar16 = uVar14; + DVar8 = 0; + goto LAB_180047337; + } + DVar6 = GetLastError(); + } + else { + pDVar9 = FUN_1800380a0(); + iVar7 = *(int *)(*(longlong *)(pDVar9 + 0x30) + 0x14); + BVar5 = GetConsoleMode(*(HANDLE *)(lVar19 + (&DAT_1800db4e0)[lVar21]),&local_5e0); + if ((BVar5 == 0) || ((iVar7 == 0 && (cVar17 == '\0')))) goto LAB_180047049; + DVar6 = GetConsoleCP(); + local_5dc = 0; + pWVar12 = param_2; + local_5e0 = DVar6; + CodePage = DVar6; + if (param_3 != 0) { + do { + uVar16 = uVar15; + if (cVar17 == '\0') { + cVar1 = (char)*pWVar12; + DVar6 = (DWORD)(cVar1 == '\n'); + uVar3 = FUN_180047ca0((int)cVar1); + if ((int)CONCAT62(extraout_var_00,uVar3) == 0) { + iVar7 = FUN_180048250(local_5e8,(byte *)pWVar12,1); + DVar8 = local_5e0; + if (iVar7 == -1) break; + } + else { + DVar8 = local_5e0; + if (((longlong)(((ulonglong)param_3 - (longlong)pWVar12) + (longlong)param_2) < 2) || + (iVar7 = FUN_180048250(local_5e8,(byte *)pWVar12,2), DVar8 = local_5e0, iVar7 == -1)) + break; + pWVar12 = (WCHAR *)((longlong)pWVar12 + 1); + } + pWVar12 = (WCHAR *)((longlong)pWVar12 + 1); + nNumberOfBytesToWrite = + WideCharToMultiByte(CodePage,0,local_5e8,1,local_5c8,5,(LPCSTR)0x0,(LPBOOL)0x0); + DVar8 = local_5e0; + if (nNumberOfBytesToWrite == 0) break; + BVar5 = WriteFile(*(HANDLE *)(local_5d0 + (&DAT_1800db4e0)[local_5d8]),local_5c8, + nNumberOfBytesToWrite,&local_5dc,(LPOVERLAPPED)0x0); + if (BVar5 == 0) { + DVar8 = GetLastError(); + break; + } + uVar20 = uVar20 + local_5dc; + DVar8 = local_5e0; + if ((int)local_5dc < (int)nNumberOfBytesToWrite) break; + CodePage = local_5e0; + uVar14 = uVar20; + if (cVar1 == '\n') { + local_5c8[0] = '\r'; + BVar5 = WriteFile(*(HANDLE *)(local_5d0 + (&DAT_1800db4e0)[local_5d8]),local_5c8,1, + &local_5dc,(LPOVERLAPPED)0x0); + if (BVar5 == 0) { + DVar8 = GetLastError(); + break; + } + DVar8 = local_5e0; + if ((int)local_5dc < 1) break; + uVar15 = uVar15 + 1; + CodePage = local_5e0; + uVar14 = uVar20 + 1; + } + } + else { + if ((cVar17 == '\x01') || (cVar17 == '\x02')) { + local_5e8[0] = *pWVar12; + DVar6 = (DWORD)(local_5e8[0] == L'\n'); + pWVar12 = pWVar12 + 1; + } + if ((cVar17 == '\x01') || (uVar14 = uVar20, cVar17 == '\x02')) { + WVar4 = FUN_18004a5e0(local_5e8[0]); + if (WVar4 != local_5e8[0]) { + DVar8 = GetLastError(); + break; + } + uVar14 = uVar20 + 1; + if (DVar6 != 0) { + local_5e8[0] = L'\r'; + WVar4 = FUN_18004a5e0(L'\r'); + if (WVar4 != local_5e8[0]) { + DVar8 = GetLastError(); + uVar20 = uVar20 + 1; + break; + } + uVar15 = uVar15 + 1; + uVar14 = uVar20 + 2; + } + } + } + uVar20 = uVar14; + uVar16 = uVar15; + DVar8 = local_5e0; + } while ((uint)((int)pWVar12 - iVar18) < param_3); +LAB_180047337: + DVar6 = DVar8; + if (uVar20 != 0) { + return uVar20 - uVar16; + } + } + } + lVar19 = local_5d0; + if (DVar6 != 0) { + if (DVar6 == 5) { + pDVar9 = FUN_180035b40(); + *pDVar9 = 9; + pDVar9 = FUN_180035b70(); + *pDVar9 = 5; + return -1; + } + _dosmaperr(DVar6); + return -1; + } +LAB_180047383: + if (((*(byte *)(lVar19 + 8 + (&DAT_1800db4e0)[local_5d8]) & 0x40) != 0) && + ((char)*param_2 == '\x1a')) { + return 0; + } + pDVar9 = FUN_180035b40(); + *pDVar9 = 0x1c; + pDVar9 = FUN_180035b70(); + *pDVar9 = 0; + return -1; +} + + +================================================================== + +### EXPORT FUNC 1800473f0 (299 bytes) name=FUN_1800473f0 + +int FUN_1800473f0(uint param_1,WCHAR *param_2,uint param_3) + +{ + int iVar1; + DWORD *pDVar2; + + if (param_1 == 0xfffffffe) { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + iVar1 = -1; + } + else if (((int)param_1 < 0) || (DAT_1800db4c8 <= param_1)) { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + FUN_1800384e0(0,0,0,0,0); + iVar1 = -1; + } + else if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + FUN_1800384e0(0,0,0,0,0); + iVar1 = -1; + } + else { + FUN_18004a4e0(param_1); + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + iVar1 = -1; + } + else { + iVar1 = FUN_180046c70(param_1,param_2,param_3); + } + FUN_18004a5b0(param_1); + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180047520 (23 bytes) name=FUN_180047520 + +void FUN_180047520(undefined8 param_1,longlong param_2) + +{ + FUN_18004a5b0(*(uint *)(param_2 + 0x60)); + return; +} + + +================================================================== + +### EXPORT FUNC 180047540 (87 bytes) name=_getbuf + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + _getbuf + + Library: Visual Studio 2005 Release */ + +void __cdecl _getbuf(FILE *_File) + +{ + char *pcVar1; + + _DAT_180073610 = _DAT_180073610 + 1; + pcVar1 = (char *)FUN_180040de0(0x1000); + _File->_base = pcVar1; + if (pcVar1 == (char *)0x0) { + _File->_flag = _File->_flag | 4; + _File->_bufsiz = 2; + _File->_base = (char *)&_File->_charbuf; + } + else { + _File->_flag = _File->_flag | 8; + _File->_bufsiz = 0x1000; + } + _File->_cnt = 0; + _File->_ptr = _File->_base; + return; +} + + +================================================================== + +### EXPORT FUNC 1800475a0 (124 bytes) name=FUN_1800475a0 + +byte FUN_1800475a0(uint param_1) + +{ + DWORD *pDVar1; + + if (param_1 == 0xfffffffe) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + return 0; + } + if ((-1 < (int)param_1) && (param_1 < DAT_1800db4c8)) { + return *(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 0x40; + } + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + FUN_1800384e0(0,0,0,0,0); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180047620 (8 bytes) name=FUN_180047620 + +undefined ** FUN_180047620(void) + +{ + return &PTR_DAT_18006dfd0; +} + + +================================================================== + +### EXPORT FUNC 180047630 (250 bytes) name=FUN_180047630 + +undefined8 FUN_180047630(void) + +{ + longlong lVar1; + undefined **ppuVar2; + longlong lVar3; + undefined4 *puVar4; + longlong lVar5; + + lVar3 = 0x14; + if (DAT_1800db4c0 == 0) { + DAT_1800db4c0 = 0x200; + } + else if (DAT_1800db4c0 < 0x14) { + DAT_1800db4c0 = 0x14; + } + DAT_1800da4a8 = FUN_180040e50((longlong)DAT_1800db4c0,8); + if (DAT_1800da4a8 == (LPVOID)0x0) { + DAT_1800db4c0 = 0x14; + DAT_1800da4a8 = FUN_180040e50(0x14,8); + if (DAT_1800da4a8 == (LPVOID)0x0) { + return 0x1a; + } + } + lVar5 = 0; + ppuVar2 = &PTR_DAT_18006dfd0; + lVar1 = lVar5; + do { + *(undefined ***)(lVar1 + (longlong)DAT_1800da4a8) = ppuVar2; + lVar1 = lVar1 + 8; + ppuVar2 = ppuVar2 + 6; + lVar3 = lVar3 + -1; + } while (lVar3 != 0); + puVar4 = &DAT_18006dfec; + lVar3 = 3; + do { + lVar1 = *(longlong *)((&DAT_1800db4e0)[lVar5 >> 5] + (ulonglong)((uint)lVar5 & 0x1f) * 0x50); + if (((lVar1 == -1) || (lVar1 == -2)) || (lVar1 == 0)) { + *puVar4 = 0xfffffffe; + } + lVar5 = lVar5 + 1; + puVar4 = puVar4 + 0xc; + lVar3 = lVar3 + -1; + } while (lVar3 != 0); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180047730 (39 bytes) name=FUN_180047730 + +void FUN_180047730(void) + +{ + FUN_18004aa90(); + if (DAT_1800727f4 != '\0') { + FUN_18004a710(); + } + FUN_180034a70(DAT_1800da4a8); + return; +} + + +================================================================== + +### EXPORT FUNC 180047760 (101 bytes) name=FUN_180047760 + +void FUN_180047760(ulonglong param_1) + +{ + if ((0x18006dfcf < param_1) && (param_1 < 0x18006e361)) { + _lock((int)((longlong)(param_1 - 0x18006dfd0) / 0x30) + 0x10); + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 0x8000; + return; + } + /* WARNING: Could not recover jumptable at 0x0001800477be. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 1800477d0 (51 bytes) name=FUN_1800477d0 + +void FUN_1800477d0(int param_1,longlong param_2) + +{ + if (param_1 < 0x14) { + _lock(param_1 + 0x10); + *(uint *)(param_2 + 0x18) = *(uint *)(param_2 + 0x18) | 0x8000; + return; + } + /* WARNING: Could not recover jumptable at 0x0001800477fc. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnterCriticalSection((LPCRITICAL_SECTION)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180047810 (78 bytes) name=FUN_180047810 + +void FUN_180047810(ulonglong param_1) + +{ + if ((0x18006dfcf < param_1) && (param_1 < 0x18006e361)) { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xffff7fff; + FUN_180045470((int)((longlong)(param_1 - 0x18006dfd0) / 0x30) + 0x10); + return; + } + /* WARNING: Could not recover jumptable at 0x000180047857. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180047860 (31 bytes) name=FUN_180047860 + +void FUN_180047860(int param_1,longlong param_2) + +{ + if (param_1 < 0x14) { + *(uint *)(param_2 + 0x18) = *(uint *)(param_2 + 0x18) & 0xffff7fff; + FUN_180045470(param_1 + 0x10); + return; + } + /* WARNING: Could not recover jumptable at 0x000180047878. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_2 + 0x30)); + return; +} + + +================================================================== + +### EXPORT FUNC 180047880 (60 bytes) name=FUN_180047880 + +undefined4 FUN_180047880(longlong param_1) + +{ + DWORD *pDVar1; + + if (param_1 == 0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + return *(undefined4 *)(param_1 + 0x1c); +} + + +================================================================== + +### EXPORT FUNC 1800478c0 (24 bytes) name=FUN_1800478c0 + +bool FUN_1800478c0(void) + +{ + return DAT_180073618 == (DAT_18006cea0 | 1); +} + + +================================================================== + +### EXPORT FUNC 1800478e0 (687 bytes) name=FUN_1800478e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +DWORD FUN_1800478e0(int *param_1,ulonglong *param_2,ulonglong param_3,WCHAR param_4, + undefined8 *param_5) + +{ + undefined *puVar1; + bool bVar2; + int iVar3; + DWORD DVar4; + DWORD *pDVar5; + pthreadlocinfo ptVar6; + BOOL local_res10 [2]; + WCHAR local_res20 [4]; + DWORD *local_38; + + if ((param_2 == (ulonglong *)0x0) && (param_3 != 0)) { + if (param_1 != (int *)0x0) { + *param_1 = 0; + } + return 0; + } + if (param_1 != (int *)0x0) { + *param_1 = -1; + } + local_res20[0] = param_4; + if (0x7fffffff < param_3) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + bVar2 = false; + if (param_5 == (undefined8 *)0x0) { + local_38 = FUN_1800380a0(); + ptVar6 = *(pthreadlocinfo *)(local_38 + 0x30); + puVar1 = *(undefined **)(local_38 + 0x2e); + if ((ptVar6 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_38[0x32]) == 0)) { + ptVar6 = __updatetlocinfo(); + } + if ((puVar1 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_38[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_38[0x32] & 2) == 0) { + bVar2 = true; + local_38[0x32] = local_38[0x32] | 2; + } + } + else { + ptVar6 = (pthreadlocinfo)*param_5; + bVar2 = false; + } + if (*(int *)((longlong)&ptVar6->lc_category[0].locale + 4) == 0) { + if ((ushort)local_res20[0] < 0x100) { + if (param_2 != (ulonglong *)0x0) { + if (param_3 == 0) { + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x22; + goto LAB_180047b2a; + } + *(char *)param_2 = (char)local_res20[0]; + } + if (param_1 != (int *)0x0) { + *param_1 = 1; + } +LAB_180047aed: + if (bVar2) { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 0; + } + if ((param_2 != (ulonglong *)0x0) && (param_3 != 0)) { + FUN_1800357d0(param_2,0,param_3); + } + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x2a; + pDVar5 = FUN_180035b40(); + DVar4 = *pDVar5; + } + else { + local_res10[0] = 0; + iVar3 = WideCharToMultiByte(ptVar6->lc_codepage,0,local_res20,1,(LPSTR)param_2,(int)param_3, + (LPCSTR)0x0,local_res10); + if (iVar3 == 0) { + DVar4 = GetLastError(); + if (DVar4 == 0x7a) { + if ((param_2 != (ulonglong *)0x0) && (param_3 != 0)) { + FUN_1800357d0(param_2,0,param_3); + } + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x22; +LAB_180047b2a: + FUN_1800384e0(0,0,0,0,0); + if (bVar2) { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 0x22; + } + } + else if (local_res10[0] == 0) { + if (param_1 != (int *)0x0) { + *param_1 = iVar3; + } + goto LAB_180047aed; + } + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x2a; + pDVar5 = FUN_180035b40(); + DVar4 = *pDVar5; + } + if (bVar2) { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return DVar4; +} + + +================================================================== + +### EXPORT FUNC 180047b90 (23 bytes) name=FUN_180047b90 + +void FUN_180047b90(int *param_1,ulonglong *param_2,ulonglong param_3,WCHAR param_4) + +{ + FUN_1800478e0(param_1,param_2,param_3,param_4,(undefined8 *)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180047bb0 (240 bytes) name=FUN_180047bb0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ushort FUN_180047bb0(uint param_1,undefined8 *param_2) + +{ + wchar_t wVar1; + undefined *puVar2; + bool bVar3; + pthreadlocinfo ptVar4; + DWORD *local_18; + + bVar3 = false; + if (param_2 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + ptVar4 = *(pthreadlocinfo *)(local_18 + 0x30); + puVar2 = *(undefined **)(local_18 + 0x2e); + if ((ptVar4 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + ptVar4 = __updatetlocinfo(); + } + if ((puVar2 != PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + bVar3 = true; + local_18[0x32] = local_18[0x32] | 2; + } + } + else { + ptVar4 = (pthreadlocinfo)*param_2; + bVar3 = false; + } + wVar1 = ptVar4->locale_name[3][param_1 & 0xff]; + if (bVar3) { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return wVar1 & 0x8000; +} + + +================================================================== + +### EXPORT FUNC 180047ca0 (195 bytes) name=FUN_180047ca0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ushort FUN_180047ca0(uint param_1) + +{ + wchar_t wVar1; + undefined *puVar2; + DWORD *pDVar3; + pthreadlocinfo ptVar4; + bool bVar5; + + pDVar3 = FUN_1800380a0(); + ptVar4 = *(pthreadlocinfo *)(pDVar3 + 0x30); + puVar2 = *(undefined **)(pDVar3 + 0x2e); + if ((ptVar4 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + ptVar4 = __updatetlocinfo(); + } + if ((puVar2 != PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + __updatetmbcinfo(); + } + bVar5 = (pDVar3[0x32] & 2) == 0; + if (bVar5) { + pDVar3[0x32] = pDVar3[0x32] | 2; + } + wVar1 = ptVar4->locale_name[3][param_1 & 0xff]; + if (bVar5) { + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + } + return wVar1 & 0x8000; +} + + +================================================================== + +### EXPORT FUNC 180047d70 (631 bytes) name=FUN_180047d70 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +WCHAR FUN_180047d70(WCHAR param_1,FILE *param_2) + +{ + int *piVar1; + WCHAR WVar2; + int iVar3; + uint uVar4; + undefined *puVar5; + ulonglong uVar6; + ulonglong *puVar7; + undefined *puVar8; + undefined1 auStack_58 [32]; + undefined4 local_38; + ulonglong local_34; + ulonglong local_28; + + local_28 = DAT_18006cea0 ^ (ulonglong)auStack_58; + local_38 = CONCAT22(local_38._2_2_,param_1); + if ((param_2->_flag & 0x40) == 0) { + iVar3 = FUN_180047880((longlong)param_2); + puVar8 = &DAT_18006d970; + if ((iVar3 == -1) || (iVar3 = FUN_180047880((longlong)param_2), iVar3 == -2)) { + puVar5 = &DAT_18006d970; + } + else { + iVar3 = FUN_180047880((longlong)param_2); + uVar4 = FUN_180047880((longlong)param_2); + puVar5 = (undefined *) + ((ulonglong)(uVar4 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar3 >> 5]); + } + if ((puVar5[0x38] & 0x7f) == 2) { + piVar1 = ¶m_2->_cnt; + *piVar1 = *piVar1 + -2; + if (-1 < *piVar1) { + *(WCHAR *)param_2->_ptr = param_1; + param_2->_ptr = param_2->_ptr + 2; + return param_1; + } + goto LAB_180047fbc; + } + iVar3 = FUN_180047880((longlong)param_2); + if ((iVar3 == -1) || (iVar3 = FUN_180047880((longlong)param_2), iVar3 == -2)) { + puVar5 = &DAT_18006d970; + } + else { + iVar3 = FUN_180047880((longlong)param_2); + uVar4 = FUN_180047880((longlong)param_2); + puVar5 = (undefined *) + ((ulonglong)(uVar4 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar3 >> 5]); + } + if ((puVar5[0x38] & 0x7f) == 1) { + piVar1 = ¶m_2->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar6 = FUN_1800385f0((int)(char)param_1,param_2); + uVar4 = (uint)uVar6; + } + else { + *param_2->_ptr = (char)param_1; + uVar4 = (uint)(byte)*param_2->_ptr; + param_2->_ptr = param_2->_ptr + 1; + } + if (uVar4 != 0xffffffff) { + piVar1 = ¶m_2->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar6 = FUN_1800385f0((int)local_38._1_1_,param_2); + uVar4 = (uint)uVar6; + } + else { + *param_2->_ptr = local_38._1_1_; + uVar4 = (uint)(byte)*param_2->_ptr; + param_2->_ptr = param_2->_ptr + 1; + } + if (uVar4 != 0xffffffff) { + return param_1; + } + } + return L'\xffff'; + } + iVar3 = FUN_180047880((longlong)param_2); + if ((iVar3 != -1) && (iVar3 = FUN_180047880((longlong)param_2), iVar3 != -2)) { + iVar3 = FUN_180047880((longlong)param_2); + uVar4 = FUN_180047880((longlong)param_2); + puVar8 = (undefined *) + ((ulonglong)(uVar4 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar3 >> 5]); + } + if ((puVar8[8] & 0x80) != 0) { + iVar3 = FUN_180047b90(&local_38,&local_34,5,param_1); + if (iVar3 != 0) { + return L'\xffff'; + } + iVar3 = 0; + if (0 < local_38) { + puVar7 = &local_34; + while( true ) { + piVar1 = ¶m_2->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar6 = FUN_1800385f0((int)(char)*puVar7,param_2); + uVar4 = (uint)uVar6; + } + else { + *param_2->_ptr = (char)*puVar7; + uVar4 = (uint)(byte)*param_2->_ptr; + param_2->_ptr = param_2->_ptr + 1; + } + if (uVar4 == 0xffffffff) break; + iVar3 = iVar3 + 1; + puVar7 = (ulonglong *)((longlong)puVar7 + 1); + if (local_38 <= iVar3) { + return param_1; + } + } + return L'\xffff'; + } + return param_1; + } + } + piVar1 = ¶m_2->_cnt; + *piVar1 = *piVar1 + -2; + if (-1 < *piVar1) { + *(WCHAR *)param_2->_ptr = param_1; + param_2->_ptr = param_2->_ptr + 2; + return param_1; + } +LAB_180047fbc: + WVar2 = FUN_18004aaa0(param_1,param_2); + return WVar2; +} + + +================================================================== + +### EXPORT FUNC 180047ff0 (595 bytes) name=FUN_180047ff0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_180047ff0(LPWSTR param_1,byte *param_2,ulonglong param_3,undefined8 *param_4) + +{ + undefined4 uVar1; + ushort uVar2; + int iVar3; + undefined6 extraout_var; + DWORD *pDVar4; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + if ((param_2 != (byte *)0x0) && (param_3 != 0)) { + if (*param_2 != 0) { + local_10 = '\0'; + if (param_4 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_4; + local_20 = (pthreadmbcinfo)param_4[1]; + } + if (*(int *)((longlong)&local_28->lc_category[0].locale + 4) != 0) { + uVar2 = FUN_180047bb0((uint)*param_2,&local_28); + if ((int)CONCAT62(extraout_var,uVar2) == 0) { + iVar3 = MultiByteToWideChar(local_28->lc_codepage,9,(LPCSTR)param_2,1,param_1, + (uint)(param_1 != (LPWSTR)0x0)); + if (iVar3 != 0) { + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 1; + } + } + else { + iVar3 = *(int *)((longlong)&local_28->pctype + 4); + if ((((1 < iVar3) && (iVar3 <= (int)param_3)) && + (iVar3 = MultiByteToWideChar(local_28->lc_codepage,9,(LPCSTR)param_2,iVar3,param_1, + (uint)(param_1 != (LPWSTR)0x0)), iVar3 != 0)) || + (((ulonglong)(longlong)*(int *)((longlong)&local_28->pctype + 4) <= param_3 && + (param_2[1] != 0)))) { + uVar1 = *(undefined4 *)((longlong)&local_28->pctype + 4); + if (local_10 == '\0') { + return uVar1; + } + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return uVar1; + } + } + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x2a; + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0xffffffff; + } + if (param_1 != (LPWSTR)0x0) { + *param_1 = (ushort)*param_2; + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 1; + } + if (param_1 != (LPWSTR)0x0) { + *param_1 = L'\0'; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180048250 (8 bytes) name=FUN_180048250 + +void FUN_180048250(LPWSTR param_1,byte *param_2,ulonglong param_3) + +{ + FUN_180047ff0(param_1,param_2,param_3,(undefined8 *)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 180048260 (267 bytes) name=isdigit + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + isdigit + + Library: Visual Studio 2005 Release */ + +int __cdecl isdigit(int _C) + +{ + ushort uVar1; + uint uVar2; + undefined6 extraout_var; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + if (DAT_180072de0 == 0) { + return (byte)PTR_DAT_18006d6d0[(longlong)_C * 2] & 4; + } + local_10 = '\0'; + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + if (*(int *)((longlong)&local_28->pctype + 4) < 2) { + uVar2 = (byte)local_28->locale_name[3][_C] & 4; + } + else { + uVar1 = FUN_18004ac70(_C,4,&local_28); + uVar2 = (uint)CONCAT62(extraout_var,uVar1); + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180048370 (271 bytes) name=isxdigit + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + isxdigit + + Library: Visual Studio 2005 Release */ + +int __cdecl isxdigit(int _C) + +{ + ushort uVar1; + uint uVar2; + undefined6 extraout_var; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + if (DAT_180072de0 == 0) { + return (byte)PTR_DAT_18006d6d0[(longlong)_C * 2] & 0x80; + } + local_10 = '\0'; + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + if (*(int *)((longlong)&local_28->pctype + 4) < 2) { + uVar2 = (byte)local_28->locale_name[3][_C] & 0x80; + } + else { + uVar1 = FUN_18004ac70(_C,0x80,&local_28); + uVar2 = (uint)CONCAT62(extraout_var,uVar1); + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180048480 (551 bytes) name=FUN_180048480 + +WCHAR FUN_180048480(FILE *param_1) + +{ + int *piVar1; + ushort uVar2; + WCHAR WVar3; + int iVar4; + uint uVar5; + undefined *puVar6; + ulonglong uVar7; + undefined6 extraout_var; + DWORD *pDVar8; + undefined *puVar9; + undefined2 local_res8; + byte local_res10; + undefined1 local_res11; + + puVar9 = &DAT_18006d970; + if ((param_1->_flag & 0x40) == 0) { + iVar4 = FUN_180047880((longlong)param_1); + if ((iVar4 == -1) || (iVar4 = FUN_180047880((longlong)param_1), iVar4 == -2)) { + puVar6 = &DAT_18006d970; + } + else { + iVar4 = FUN_180047880((longlong)param_1); + uVar5 = FUN_180047880((longlong)param_1); + puVar6 = (undefined *) + ((ulonglong)(uVar5 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar4 >> 5]); + } + if ((puVar6[0x38] & 0x7f) != 0) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar7 = FUN_18004b210(param_1); + uVar5 = (uint)uVar7; + } + else { + uVar5 = (uint)(byte)*param_1->_ptr; + param_1->_ptr = param_1->_ptr + 1; + } + if (uVar5 == 0xffffffff) { + return L'\xffff'; + } + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + local_res8 = CONCAT11(local_res8._1_1_,(char)uVar5); + if (*piVar1 < 0) { + uVar7 = FUN_18004b210(param_1); + uVar5 = (uint)uVar7; + } + else { + uVar5 = (uint)(byte)*param_1->_ptr; + param_1->_ptr = param_1->_ptr + 1; + } + if (uVar5 != 0xffffffff) { + local_res8 = CONCAT11((char)uVar5,(undefined1)local_res8); + return local_res8; + } + return L'\xffff'; + } + } + if ((param_1->_flag & 0x40) == 0) { + iVar4 = FUN_180047880((longlong)param_1); + if ((iVar4 != -1) && (iVar4 = FUN_180047880((longlong)param_1), iVar4 != -2)) { + iVar4 = FUN_180047880((longlong)param_1); + uVar5 = FUN_180047880((longlong)param_1); + puVar9 = (undefined *) + ((ulonglong)(uVar5 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar4 >> 5]); + } + if ((puVar9[8] & 0x80) != 0) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + iVar4 = 1; + if (*piVar1 < 0) { + uVar7 = FUN_18004b210(param_1); + uVar5 = (uint)uVar7; + } + else { + uVar5 = (uint)(byte)*param_1->_ptr; + param_1->_ptr = param_1->_ptr + 1; + } + if (uVar5 == 0xffffffff) { + return L'\xffff'; + } + local_res10 = (byte)uVar5; + uVar2 = FUN_180047ca0(uVar5 & 0xff); + if ((int)CONCAT62(extraout_var,uVar2) != 0) { + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + uVar7 = FUN_18004b210(param_1); + uVar5 = (uint)uVar7; + } + else { + uVar5 = (uint)(byte)*param_1->_ptr; + param_1->_ptr = param_1->_ptr + 1; + } + if (uVar5 == 0xffffffff) { + FUN_18004b170((int)(char)local_res10,param_1); + return L'\xffff'; + } + local_res11 = (undefined1)uVar5; + iVar4 = 2; + } + iVar4 = FUN_180048250(&local_res8,&local_res10,(longlong)iVar4); + if (iVar4 != -1) { + return local_res8; + } + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x2a; + return L'\xffff'; + } + } + piVar1 = ¶m_1->_cnt; + *piVar1 = *piVar1 + -2; + if (*piVar1 < 0) { + WVar3 = FUN_18004ae60(param_1); + return WVar3; + } + WVar3 = *(WCHAR *)param_1->_ptr; + param_1->_ptr = (char *)((longlong)param_1->_ptr + 2); + return WVar3; +} + + +================================================================== + +### EXPORT FUNC 1800486b0 (567 bytes) name=FUN_1800486b0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +WCHAR FUN_1800486b0(WCHAR param_1,FILE *param_2) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + undefined *puVar4; + longlong lVar5; + undefined *puVar6; + undefined1 auStack_58 [32]; + int local_38; + undefined2 local_34; + undefined8 local_30; + ulonglong local_28; + + local_28 = DAT_18006cea0 ^ (ulonglong)auStack_58; + if (param_1 == L'\xffff') { + return L'\xffff'; + } + uVar3 = param_2->_flag; + if ((uVar3 & 1) == 0) { + if (-1 < (char)uVar3) { + return L'\xffff'; + } + if ((uVar3 & 2) != 0) { + return L'\xffff'; + } + } + local_34 = param_1; + if (param_2->_base == (char *)0x0) { + _getbuf(param_2); + } + if ((param_2->_flag & 0x40) == 0) { + iVar2 = FUN_180047880((longlong)param_2); + puVar6 = &DAT_18006d970; + if ((iVar2 == -1) || (iVar2 = FUN_180047880((longlong)param_2), iVar2 == -2)) { + puVar4 = &DAT_18006d970; + } + else { + iVar2 = FUN_180047880((longlong)param_2); + lVar5 = (&DAT_1800db4e0)[(longlong)iVar2 >> 5]; + uVar3 = FUN_180047880((longlong)param_2); + puVar4 = (undefined *)((ulonglong)(uVar3 & 0x1f) * 0x50 + lVar5); + } + if ((puVar4[8] & 0x80) != 0) { + iVar2 = FUN_180047880((longlong)param_2); + if ((iVar2 != -1) && (iVar2 = FUN_180047880((longlong)param_2), iVar2 != -2)) { + iVar2 = FUN_180047880((longlong)param_2); + lVar5 = (&DAT_1800db4e0)[(longlong)iVar2 >> 5]; + uVar3 = FUN_180047880((longlong)param_2); + puVar6 = (undefined *)((ulonglong)(uVar3 & 0x1f) * 0x50 + lVar5); + } + if ((puVar6[0x38] & 0x7f) == 0) { + iVar2 = FUN_180047b90(&local_38,&local_30,5,param_1); + if (iVar2 != 0) { + return L'\xffff'; + } + } + else { + local_30._0_1_ = (char)param_1; + local_30._1_1_ = local_34._1_1_; + local_38 = 2; + } + if (param_2->_ptr < param_2->_base + local_38) { + if (param_2->_cnt != 0) { + return L'\xffff'; + } + if (param_2->_bufsiz < local_38) { + return L'\xffff'; + } + param_2->_ptr = param_2->_base + local_38; + } + lVar5 = (longlong)(local_38 + -1); + if (-1 < local_38 + -1) { + do { + param_2->_ptr = param_2->_ptr + -1; + pcVar1 = (char *)((longlong)&local_30 + lVar5); + lVar5 = lVar5 + -1; + *param_2->_ptr = *pcVar1; + } while (-1 < lVar5); + } + param_2->_cnt = param_2->_cnt + local_38; + param_2->_flag = param_2->_flag & 0xffffffef; + param_2->_flag = param_2->_flag | 1; + return param_1; + } + } + if (param_2->_ptr < param_2->_base + 2) { + if (param_2->_cnt != 0) { + return L'\xffff'; + } + if ((uint)param_2->_bufsiz < 2) { + return L'\xffff'; + } + param_2->_ptr = param_2->_base + 2; + } + if ((param_2->_flag & 0x40) == 0) { + param_2->_ptr = param_2->_ptr + -2; + *(WCHAR *)param_2->_ptr = param_1; + } + else { + param_2->_ptr = param_2->_ptr + -2; + if (*(WCHAR *)param_2->_ptr != param_1) { + param_2->_ptr = (char *)((longlong)param_2->_ptr + 2); + return L'\xffff'; + } + } + param_2->_cnt = param_2->_cnt + 2; + param_2->_flag = param_2->_flag & 0xffffffef; + param_2->_flag = param_2->_flag | 1; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800488f0 (362 bytes) name=_iswctype_l + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + _iswctype_l + + Library: Visual Studio 2005 Release */ + +int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale) + +{ + int iVar1; + WCHAR local_res8 [4]; + ushort local_res10 [12]; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + if (_C == 0xffff) { + return 0; + } + if (0xff < _C) { + local_10 = '\0'; + local_res8[0] = _C; + if (_Locale == (_locale_t)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = _Locale->locinfo; + local_20 = _Locale->mbcinfo; + } + iVar1 = FUN_18004b6b0((longlong *)&local_28,1,local_res8,1,local_res10,local_28->lc_codepage, + *(LCID *)((longlong)&local_28->lc_category[0].locale + 4)); + if (iVar1 == 0) { + local_res10[0] = 0; + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return (uint)(local_res10[0] & _Type); + } + return (uint)(*(ushort *)(PTR_DAT_18006df48 + (ulonglong)_C * 2) & _Type & _Type); +} + + +================================================================== + +### EXPORT FUNC 180048a60 (147 bytes) name=iswctype + +/* Library Function - Single Match + iswctype + + Library: Visual Studio 2005 Release */ + +int __cdecl iswctype(wint_t _C,wctype_t _Type) + +{ + int iVar1; + WCHAR local_res8 [8]; + WORD local_res18 [8]; + + if (_C == 0xffff) { + return 0; + } + if (_C < 0x100) { + return (uint)(*(ushort *)(PTR_DAT_18006df48 + (ulonglong)_C * 2) & _Type); + } + local_res8[0] = _C; + if (DAT_180072de0 == 0) { + FUN_18004b6b0((longlong *)&PTR_DAT_18006d700,1,local_res8,1,local_res18,DAT_18006d594, + DAT_18006d5a4); + } + iVar1 = _iswctype_l(local_res8[0],_Type,(_locale_t)0x0); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 180048b00 (73 bytes) name=FUN_180048b00 + +int FUN_180048b00(byte *param_1,byte *param_2) + +{ + byte bVar1; + uint uVar2; + uint uVar3; + + do { + bVar1 = *param_1; + uVar3 = (uint)bVar1; + param_1 = param_1 + 1; + if (bVar1 - 0x41 < 0x1a) { + uVar3 = bVar1 + 0x20; + } + bVar1 = *param_2; + uVar2 = (uint)bVar1; + param_2 = param_2 + 1; + if (bVar1 - 0x41 < 0x1a) { + uVar2 = bVar1 + 0x20; + } + } while ((uVar3 != 0) && (uVar3 == uVar2)); + return uVar3 - uVar2; +} + + +================================================================== + +### EXPORT FUNC 180048b50 (11 bytes) name=FUN_180048b50 + +void FUN_180048b50(byte *param_1) + +{ + FUN_1800492d0(param_1,(undefined8 *)0x0,10); + return; +} + + +================================================================== + +### EXPORT FUNC 180048b60 (222 bytes) name=FUN_180048b60 + +longlong FUN_180048b60(byte *param_1) + +{ + longlong *plVar1; + byte bVar2; + byte *pbVar3; + int iVar4; + undefined8 uVar5; + ulonglong uVar6; + ulonglong uVar7; + longlong *plVar8; + byte *pbVar9; + + if (DAT_1800db6e0 == 0) { + return 0; + } + if (((DAT_180072808 != (longlong *)0x0) || + (((DAT_180072818 != 0 && (uVar5 = FUN_18004b9c0(), (int)uVar5 == 0)) && + (DAT_180072808 != (longlong *)0x0)))) && (param_1 != (byte *)0x0)) { + pbVar3 = (byte *)*DAT_180072808; + uVar6 = 0xffffffffffffffff; + pbVar9 = param_1; + do { + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + bVar2 = *pbVar9; + pbVar9 = pbVar9 + 1; + } while (bVar2 != 0); + uVar6 = ~uVar6 - 1; + plVar8 = DAT_180072808; + while (pbVar3 != (byte *)0x0) { + uVar7 = 0xffffffffffffffff; + pbVar9 = pbVar3; + do { + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + bVar2 = *pbVar9; + pbVar9 = pbVar9 + 1; + } while (bVar2 != 0); + if (((uVar6 < ~uVar7 - 1) && (pbVar3[uVar6] == 0x3d)) && + (iVar4 = FUN_18004b9b0(pbVar3,param_1,uVar6), iVar4 == 0)) { + return *plVar8 + 1 + uVar6; + } + plVar1 = plVar8 + 1; + plVar8 = plVar8 + 1; + pbVar3 = (byte *)*plVar1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180048c40 (99 bytes) name=FUN_180048c40 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 FUN_180048c40(LCID param_1) + +{ + int iVar1; + undefined8 uVar2; + undefined1 auStack_38 [32]; + byte local_18 [6]; + undefined1 local_12; + ulonglong local_10; + + local_10 = DAT_18006cea0 ^ (ulonglong)auStack_38; + local_12 = 0; + iVar1 = GetLocaleInfoA(param_1,0x1004,(LPSTR)local_18,6); + if (iVar1 == 0) { + return 0xffffffff; + } + uVar2 = FUN_180048b50(local_18); + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180048cb0 (643 bytes) name=FUN_180048cb0 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +LPVOID FUN_180048cb0(UINT param_1,UINT param_2,LPCSTR param_3,uint *param_4,LPVOID param_5, + undefined4 param_6) + +{ + ulonglong uVar1; + char cVar2; + uint cbMultiByte; + LPCSTR lpMultiByteStr; + BOOL BVar3; + int iVar4; + uint uVar5; + ulonglong uVar6; + undefined4 *puVar7; + LPVOID pvVar8; + longlong lVar9; + undefined1 *puVar10; + undefined1 *puVar11; + undefined1 *puVar12; + LPCWSTR lpWideCharStr; + ulonglong uVar13; + undefined1 auStackY_c8 [32]; + int local_88 [2]; + LPCSTR local_80; + uint *local_78; + _cpinfo local_70; + ulonglong local_58; + + puVar10 = auStackY_c8; + puVar11 = auStackY_c8; + local_58 = DAT_18006cea0 ^ (ulonglong)local_88; + cbMultiByte = *param_4; + pvVar8 = (LPVOID)0x0; + local_88[0] = 0; + puVar12 = auStackY_c8; + if (param_1 == param_2) goto LAB_180048f16; + local_88[1] = param_1; + local_80 = param_3; + local_78 = param_4; + BVar3 = GetCPInfo(param_1,&local_70); + if ((((BVar3 == 0) || (local_70.MaxCharSize != 1)) || + (BVar3 = GetCPInfo(param_2,&local_70), BVar3 == 0)) || (local_70.MaxCharSize != 1)) { + uVar5 = MultiByteToWideChar(param_1,1,param_3,cbMultiByte,(LPWSTR)0x0,0); + if (uVar5 != 0) goto LAB_180048d4d; + } + else { + local_88[0] = 1; + uVar5 = cbMultiByte; + if (cbMultiByte == 0xffffffff) { + lVar9 = -1; + do { + if (lVar9 == 0) break; + lVar9 = lVar9 + -1; + cVar2 = *param_3; + param_3 = param_3 + 1; + } while (cVar2 != '\0'); + uVar5 = ~(uint)lVar9; + } +LAB_180048d4d: + puVar10 = auStackY_c8; + if ((0 < (int)uVar5) && + (uVar13 = (ulonglong)(int)uVar5, puVar10 = auStackY_c8, uVar13 < 0x7ffffffffffffff1)) { + uVar1 = uVar13 * 2 + 0x10; + if (uVar1 < 0x401) { + uVar6 = uVar13 * 2 + 0x1f; + if (uVar6 <= uVar1) { + uVar6 = 0xffffffffffffff0; + } + lVar9 = -(uVar6 & 0xfffffffffffffff0); + puVar10 = auStackY_c8 + lVar9; + puVar11 = auStackY_c8 + lVar9; + puVar7 = (undefined4 *)((longlong)local_88 + lVar9); + if (puVar7 == (undefined4 *)0x0) goto LAB_180048ddf; + *puVar7 = 0xcccc; +LAB_180048df9: + lpWideCharStr = (LPCWSTR)(puVar7 + 4); + puVar10 = puVar11; + } + else { + puVar7 = FUN_1800349a0(uVar1); + lpWideCharStr = (LPCWSTR)0x0; + puVar10 = auStackY_c8; + if (puVar7 != (undefined4 *)0x0) { + *puVar7 = 0xdddd; + goto LAB_180048df9; + } + } + if (lpWideCharStr != (LPCWSTR)0x0) { + *(undefined8 *)(puVar10 + -8) = 0x180048e11; + FUN_1800357d0((ulonglong *)lpWideCharStr,0,uVar13 * 2); + lpMultiByteStr = local_80; + iVar4 = local_88[1]; + *(uint *)(puVar10 + 0x28) = uVar5; + *(LPCWSTR *)(puVar10 + 0x20) = lpWideCharStr; + *(undefined8 *)(puVar10 + -8) = 0x180048e2f; + iVar4 = MultiByteToWideChar(iVar4,1,lpMultiByteStr,cbMultiByte,*(LPWSTR *)(puVar10 + 0x20), + *(int *)(puVar10 + 0x28)); + if (iVar4 != 0) { + if (param_5 == (LPVOID)0x0) { + if (local_88[0] == 0) { + *(undefined8 *)(puVar10 + 0x38) = 0; + *(undefined8 *)(puVar10 + 0x30) = 0; + *(undefined4 *)(puVar10 + 0x28) = 0; + *(undefined8 *)(puVar10 + 0x20) = 0; + *(undefined8 *)(puVar10 + -8) = 0x180048ea5; + uVar5 = WideCharToMultiByte(param_2,0,lpWideCharStr,uVar5,*(LPSTR *)(puVar10 + 0x20), + *(int *)(puVar10 + 0x28),*(LPCSTR *)(puVar10 + 0x30), + *(LPBOOL *)(puVar10 + 0x38)); + pvVar8 = (LPVOID)0x0; + if (uVar5 == 0) goto LAB_180048f01; + } + *(undefined8 *)(puVar10 + -8) = 0x180048eb8; + pvVar8 = FUN_180040e50(1,(longlong)(int)uVar5); + if (pvVar8 != (LPVOID)0x0) { + *(undefined8 *)(puVar10 + 0x38) = 0; + *(undefined8 *)(puVar10 + 0x30) = 0; + *(uint *)(puVar10 + 0x28) = uVar5; + *(LPVOID *)(puVar10 + 0x20) = pvVar8; + *(undefined8 *)(puVar10 + -8) = 0x180048ee4; + uVar5 = WideCharToMultiByte(param_2,0,lpWideCharStr,uVar5,*(LPSTR *)(puVar10 + 0x20), + *(int *)(puVar10 + 0x28),*(LPCSTR *)(puVar10 + 0x30), + *(LPBOOL *)(puVar10 + 0x38)); + if (uVar5 == 0) { + *(undefined8 *)(puVar10 + -8) = 0x180048ef0; + FUN_180034a70(pvVar8); + pvVar8 = (LPVOID)0x0; + } + else if (cbMultiByte != 0xffffffff) { + *local_78 = uVar5; + } + } + } + else { + *(undefined8 *)(puVar10 + 0x38) = 0; + *(undefined8 *)(puVar10 + 0x30) = 0; + *(undefined4 *)(puVar10 + 0x28) = param_6; + *(LPVOID *)(puVar10 + 0x20) = param_5; + *(undefined8 *)(puVar10 + -8) = 0x180048e68; + iVar4 = WideCharToMultiByte(param_2,0,lpWideCharStr,uVar5,*(LPSTR *)(puVar10 + 0x20), + *(int *)(puVar10 + 0x28),*(LPCSTR *)(puVar10 + 0x30), + *(LPBOOL *)(puVar10 + 0x38)); + if (iVar4 != 0) { + pvVar8 = param_5; + } + } + } +LAB_180048f01: + puVar12 = puVar10; + if (*(int *)(lpWideCharStr + -8) == 0xdddd) { + *(undefined8 *)(puVar10 + -8) = 0x180048f13; + FUN_180034a70(lpWideCharStr + -8); + } + goto LAB_180048f16; + } + } + } +LAB_180048ddf: + pvVar8 = (LPVOID)0x0; + puVar12 = puVar10; +LAB_180048f16: + *(undefined8 *)(puVar12 + -8) = 0x180048f22; + return pvVar8; +} + + +================================================================== + +### EXPORT FUNC 180048f40 (901 bytes) name=FUN_180048f40 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint FUN_180048f40(longlong *param_1,byte *param_2,undefined8 *param_3,uint param_4,uint param_5) + +{ + byte *pbVar1; + ushort uVar2; + DWORD *pDVar3; + undefined6 extraout_var; + uint uVar4; + int iVar5; + byte *pbVar6; + uint uVar7; + byte bVar8; + uint uVar9; + pthreadlocinfo ptVar10; + pthreadlocinfo local_38; + pthreadmbcinfo local_30; + DWORD *local_28; + char local_20; + + local_20 = '\0'; + if (param_1 == (longlong *)0x0) { + local_28 = FUN_1800380a0(); + local_38 = *(pthreadlocinfo *)(local_28 + 0x30); + local_30 = *(pthreadmbcinfo *)(local_28 + 0x2e); + if ((local_38 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_28[0x32]) == 0)) + { + local_38 = __updatetlocinfo(); + } + if ((local_30 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_28[0x32]) == 0)) + { + local_30 = __updatetmbcinfo(); + } + if ((local_28[0x32] & 2) == 0) { + local_28[0x32] = local_28[0x32] | 2; + local_20 = '\x01'; + } + } + else { + local_38 = (pthreadlocinfo)*param_1; + local_30 = (pthreadmbcinfo)param_1[1]; + } + if (param_3 != (undefined8 *)0x0) { + *param_3 = param_2; + } + if ((param_2 == (byte *)0x0) || ((param_4 != 0 && (((int)param_4 < 2 || (0x24 < (int)param_4)))))) + { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_20 != '\0') { + local_28[0x32] = local_28[0x32] & 0xfffffffd; + } + return 0; + } + bVar8 = *param_2; + uVar7 = 0; + ptVar10 = local_38; + pbVar1 = param_2; + while( true ) { + pbVar6 = pbVar1 + 1; + if (*(int *)((longlong)&ptVar10->pctype + 4) < 2) { + uVar4 = (byte)ptVar10->locale_name[3][bVar8] & 8; + } + else { + uVar2 = FUN_18004ac70((uint)bVar8,8,&local_38); + uVar4 = (uint)CONCAT62(extraout_var,uVar2); + ptVar10 = local_38; + } + if (uVar4 == 0) break; + bVar8 = *pbVar6; + pbVar1 = pbVar6; + } + if (bVar8 == 0x2d) { + bVar8 = *pbVar6; + param_5 = param_5 | 2; + pbVar6 = pbVar1 + 2; + } + else if (bVar8 == 0x2b) { + bVar8 = *pbVar6; + pbVar6 = pbVar1 + 2; + } + if ((((int)param_4 < 0) || (param_4 == 1)) || (0x24 < (int)param_4)) { + if (param_3 != (undefined8 *)0x0) { + *param_3 = param_2; + } + if (local_20 != '\0') { + local_28[0x32] = local_28[0x32] & 0xfffffffd; + } + return 0; + } + if (param_4 == 0) { + if (bVar8 != 0x30) { + param_4 = 10; + goto LAB_180049178; + } + if ((*pbVar6 != 0x78) && (*pbVar6 != 0x58)) { + param_4 = 8; + goto LAB_180049178; + } + param_4 = 0x10; + } + else if ((param_4 != 0x10) || (bVar8 != 0x30)) goto LAB_180049178; + if ((*pbVar6 == 0x78) || (*pbVar6 == 0x58)) { + bVar8 = pbVar6[1]; + pbVar6 = pbVar6 + 2; + } +LAB_180049178: + do { + if ((ptVar10->locale_name[3][bVar8] & 4U) == 0) { + if ((ptVar10->locale_name[3][bVar8] & 0x103U) == 0) { +LAB_1800491e6: + pbVar6 = pbVar6 + -1; + if ((param_5 & 8) == 0) { + if (param_3 != (undefined8 *)0x0) { + pbVar6 = param_2; + } + uVar7 = 0; + } + else if (((param_5 & 4) != 0) || + (((param_5 & 1) == 0 && + ((((param_5 & 2) != 0 && (0x80000000 < uVar7)) || + (((param_5 & 2) == 0 && (0x7fffffff < uVar7)))))))) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x22; + if ((param_5 & 1) == 0) { + uVar7 = ((param_5 & 2) != 0) + 0x7fffffff; + } + else { + uVar7 = 0xffffffff; + } + } + if (param_3 != (undefined8 *)0x0) { + *param_3 = pbVar6; + } + if ((param_5 & 2) != 0) { + uVar7 = -uVar7; + } + if (local_20 != '\0') { + local_28[0x32] = local_28[0x32] & 0xfffffffd; + } + return uVar7; + } + if ((byte)(bVar8 + 0x9f) < 0x1a) { + iVar5 = (char)bVar8 + -0x20; + } + else { + iVar5 = (int)(char)bVar8; + } + uVar4 = iVar5 - 0x37; + } + else { + uVar4 = (int)(char)bVar8 - 0x30; + } + if (param_4 <= uVar4) goto LAB_1800491e6; + uVar9 = (uint)(0xffffffff / (ulonglong)param_4); + if ((uVar7 < uVar9) || ((uVar7 == uVar9 && (uVar4 <= (uint)(0xffffffff % (ulonglong)param_4))))) + { + uVar7 = uVar7 * param_4 + uVar4; + param_5 = param_5 | 8; + } + else { + param_5 = param_5 | 0xc; + if (param_3 == (undefined8 *)0x0) goto LAB_1800491e6; + } + bVar8 = *pbVar6; + pbVar6 = pbVar6 + 1; + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 1800492d0 (59 bytes) name=FUN_1800492d0 + +void FUN_1800492d0(byte *param_1,undefined8 *param_2,uint param_3) + +{ + if (DAT_180072de0 == 0) { + FUN_180048f40((longlong *)&PTR_DAT_18006d700,param_1,param_2,param_3,0); + return; + } + FUN_180048f40((longlong *)0x0,param_1,param_2,param_3,0); + return; +} + + +================================================================== + +### EXPORT FUNC 180049310 (177 bytes) name=FUN_180049310 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +byte FUN_180049310(uint param_1) + +{ + byte bVar1; + DWORD *pDVar2; + pthreadmbcinfo ptVar3; + bool bVar4; + + pDVar2 = FUN_1800380a0(); + ptVar3 = *(pthreadmbcinfo *)(pDVar2 + 0x2e); + if ((*(undefined **)(pDVar2 + 0x30) != PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & pDVar2[0x32]) == 0)) { + __updatetlocinfo(); + } + if ((ptVar3 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar2[0x32]) == 0)) { + ptVar3 = __updatetmbcinfo(); + } + bVar4 = (pDVar2[0x32] & 2) == 0; + if (bVar4) { + pDVar2[0x32] = pDVar2[0x32] | 2; + } + bVar1 = ptVar3->mbctype[(ulonglong)(param_1 & 0xff) + 5]; + if (bVar4) { + pDVar2[0x32] = pDVar2[0x32] & 0xfffffffd; + } + return bVar1 >> 2 & 1; +} + + +================================================================== + +### EXPORT FUNC 1800493d0 (597 bytes) name=FUN_1800493d0 + +undefined8 FUN_1800493d0(undefined8 param_1,undefined8 param_2,uint param_3) + +{ + int iVar1; + INT_PTR IVar2; + HMODULE hModule; + FARPROC pFVar3; + undefined8 uVar4; + code *pcVar5; + code *pcVar6; + longlong lVar7; + longlong lVar8; + int local_res20 [2]; + uint local_48 [4]; + byte local_38; + + IVar2 = FUN_180037c30(); + lVar8 = 0; + local_res20[0] = 0; + local_48[0] = 0; + if (DAT_180073620 == 0) { + hModule = LoadLibraryA("USER32.DLL"); + if (hModule == (HMODULE)0x0) { + return 0; + } + pFVar3 = GetProcAddress(hModule,"MessageBoxA"); + if (pFVar3 == (FARPROC)0x0) { + return 0; + } + DAT_180073620 = FUN_180037b60((INT_PTR)pFVar3); + pFVar3 = GetProcAddress(hModule,"GetActiveWindow"); + DAT_180073628 = FUN_180037b60((INT_PTR)pFVar3); + pFVar3 = GetProcAddress(hModule,"GetLastActivePopup"); + DAT_180073630 = FUN_180037b60((INT_PTR)pFVar3); + uVar4 = _get_osplatform(local_res20); + if ((int)uVar4 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + if (local_res20[0] == 2) { + pFVar3 = GetProcAddress(hModule,"GetUserObjectInformationA"); + DAT_180073640 = FUN_180037b60((INT_PTR)pFVar3); + if (DAT_180073640 != 0) { + pFVar3 = GetProcAddress(hModule,"GetProcessWindowStation"); + DAT_180073638 = FUN_180037b60((INT_PTR)pFVar3); + } + } + } + if ((DAT_180073638 != IVar2) && (DAT_180073640 != IVar2)) { + pcVar5 = (code *)FUN_180037d20(DAT_180073638); + pcVar6 = (code *)FUN_180037d20(DAT_180073640); + if (((pcVar5 != (code *)0x0) && (pcVar6 != (code *)0x0)) && + (((lVar7 = (*pcVar5)(), lVar7 == 0 || (iVar1 = (*pcVar6)(lVar7), iVar1 == 0)) || + ((local_38 & 1) == 0)))) { + uVar4 = FUN_1800367c0(local_48); + if ((int)uVar4 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + if (local_48[0] < 4) { + param_3 = param_3 | 0x40000; + } + else { + param_3 = param_3 | 0x200000; + } + goto LAB_1800495e6; + } + } + if ((((DAT_180073628 != IVar2) && + (pcVar5 = (code *)FUN_180037d20(DAT_180073628), lVar8 = 0, pcVar5 != (code *)0x0)) && + (lVar8 = (*pcVar5)(), lVar8 != 0)) && + ((DAT_180073630 != IVar2 && + (pcVar5 = (code *)FUN_180037d20(DAT_180073630), pcVar5 != (code *)0x0)))) { + lVar8 = (*pcVar5)(lVar8); + } +LAB_1800495e6: + pcVar5 = (code *)FUN_180037d20(DAT_180073620); + if (pcVar5 == (code *)0x0) { + return 0; + } + uVar4 = (*pcVar5)(lVar8,param_1,param_2,param_3); + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 180049630 (89 bytes) name=FUN_180049630 + +undefined4 FUN_180049630(int param_1) + +{ + undefined4 uVar1; + DWORD *pDVar2; + + uVar1 = DAT_1800727bc; + if (-1 < param_1) { + if (param_1 < 3) { + DAT_1800727bc = param_1; + return uVar1; + } + if (param_1 == 3) { + return DAT_1800727bc; + } + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180049690 (143 bytes) name=FUN_180049690 + +undefined8 * FUN_180049690(undefined8 *param_1,undefined8 *param_2) + +{ + char cVar1; + char *pcVar2; + ulonglong uVar3; + + *param_1 = std::exception::vftable; + if ((char *)*param_2 == (char *)0x0) { + param_1[1] = 0; + *(undefined4 *)(param_1 + 2) = 1; + return param_1; + } + uVar3 = 0xffffffffffffffff; + pcVar2 = (char *)*param_2; + do { + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + cVar1 = *pcVar2; + pcVar2 = pcVar2 + 1; + } while (cVar1 != '\0'); + pcVar2 = FUN_1800349a0(~uVar3); + param_1[1] = pcVar2; + if (pcVar2 != (char *)0x0) { + strcpy_s(pcVar2,~uVar3,(char *)*param_2); + } + *(undefined4 *)(param_1 + 2) = 1; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180049720 (163 bytes) name=FUN_180049720 + +undefined8 * FUN_180049720(undefined8 *param_1,longlong param_2) + +{ + char cVar1; + int iVar2; + char *pcVar3; + ulonglong uVar4; + + *param_1 = std::exception::vftable; + iVar2 = *(int *)(param_2 + 0x10); + *(int *)(param_1 + 2) = iVar2; + if (iVar2 == 0) { + param_1[1] = *(undefined8 *)(param_2 + 8); + return param_1; + } + if (*(char **)(param_2 + 8) == (char *)0x0) { + param_1[1] = 0; + return param_1; + } + uVar4 = 0xffffffffffffffff; + pcVar3 = *(char **)(param_2 + 8); + do { + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + cVar1 = *pcVar3; + pcVar3 = pcVar3 + 1; + } while (cVar1 != '\0'); + pcVar3 = FUN_1800349a0(~uVar4); + param_1[1] = pcVar3; + if (pcVar3 != (char *)0x0) { + strcpy_s(pcVar3,~uVar4,*(char **)(param_2 + 8)); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800497d0 (34 bytes) name=FUN_1800497d0 + +void FUN_1800497d0(undefined8 *param_1) + +{ + *param_1 = std::exception::vftable; + if (*(int *)(param_1 + 2) != 0) { + FUN_180034a70((LPVOID)param_1[1]); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180049800 (19 bytes) name=FUN_180049800 + +char * FUN_180049800(longlong param_1) + +{ + char *pcVar1; + + pcVar1 = *(char **)(param_1 + 8); + if (pcVar1 == (char *)0x0) { + pcVar1 = "Unknown exception"; + } + return pcVar1; +} + + +================================================================== + +### EXPORT FUNC 180049820 (68 bytes) name=FUN_180049820 + +undefined8 * FUN_180049820(undefined8 *param_1,uint param_2) + +{ + *param_1 = std::exception::vftable; + if (*(int *)(param_1 + 2) != 0) { + FUN_180034a70((LPVOID)param_1[1]); + } + if ((param_2 & 1) != 0) { + thunk_FUN_180034a70(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180049880 (14 bytes) name=FUN_180049880 + +bool FUN_180049880(longlong param_1) + +{ + return param_1 != 0; +} + + +================================================================== + +### EXPORT FUNC 180049890 (44 bytes) name=strrchr + +/* Library Function - Single Match + strrchr + + Library: Visual Studio 2005 Release */ + +char * __cdecl strrchr(char *_Str,int _Ch) + +{ + char cVar1; + char *pcVar2; + + pcVar2 = _Str; + do { + cVar1 = *pcVar2; + pcVar2 = pcVar2 + 1; + } while (cVar1 != '\0'); + do { + pcVar2 = pcVar2 + -1; + if (pcVar2 == _Str) { + if (*pcVar2 == (char)_Ch) { + return pcVar2; + } + return (char *)0x0; + } + } while (*pcVar2 != (char)_Ch); + return pcVar2; +} + + +================================================================== + +### EXPORT FUNC 1800498c0 (614 bytes) name=FUN_1800498c0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint FUN_1800498c0(uint param_1,undefined8 *param_2) + +{ + byte bVar1; + ushort uVar2; + uint uVar3; + int iVar4; + undefined6 extraout_var; + undefined6 extraout_var_00; + DWORD *pDVar5; + CHAR local_res8; + CHAR local_res9; + undefined1 local_resa; + byte local_res10; + undefined1 local_res11; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + if (param_2 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_2; + local_20 = (pthreadmbcinfo)param_2[1]; + } + if (0xff < param_1) { + if ((*(int *)((longlong)&local_28->pctype + 4) < 2) || + (uVar2 = FUN_180047bb0((int)param_1 >> 8 & 0xff,&local_28), + (int)CONCAT62(extraout_var_00,uVar2) == 0)) { + pDVar5 = FUN_180035b40(); + uVar3 = 1; + *pDVar5 = 0x2a; + local_res9 = '\0'; + local_res8 = (CHAR)param_1; + } + else { + local_resa = 0; + uVar3 = 2; + local_res8 = (CHAR)(param_1 >> 8); + local_res9 = (CHAR)param_1; + } + iVar4 = FUN_180045f80((longlong *)&local_28, + *(LCID *)((longlong)&local_28->lc_category[0].locale + 4),0x100, + &local_res8,uVar3,(LPSTR)&local_res10,3,local_28->lc_codepage,1); + if (iVar4 != 0) { + if (iVar4 == 1) { + uVar3 = (uint)local_res10; + } + else { + uVar3 = (uint)CONCAT11(local_res10,local_res11); + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return uVar3; + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return param_1; + } + if (*(int *)((longlong)&local_28->pctype + 4) < 2) { + uVar3 = (byte)local_28->locale_name[3][(int)param_1] & 1; + } + else { + uVar2 = FUN_18004ac70(param_1,1,&local_28); + uVar3 = (uint)CONCAT62(extraout_var,uVar2); + } + if (uVar3 != 0) { + bVar1 = *(byte *)((longlong)local_28->locale_name[4] + (longlong)(int)param_1); + if (local_10 == '\0') { + return (uint)bVar1; + } + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return (uint)bVar1; + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180049b30 (30 bytes) name=FUN_180049b30 + +uint FUN_180049b30(uint param_1) + +{ + uint uVar1; + + if (DAT_180072de0 == 0) { + if (param_1 - 0x41 < 0x1a) { + param_1 = param_1 + 0x20; + } + return param_1; + } + uVar1 = FUN_1800498c0(param_1,(undefined8 *)0x0); + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180049b50 (400 bytes) name=FUN_180049b50 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_180049b50(uint *param_1,char *param_2,longlong *param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + undefined1 auStackY_88 [32]; + pthreadlocinfo local_48; + pthreadmbcinfo local_40; + DWORD *local_38; + char local_30; + longlong local_28; + ushort local_20 [8]; + ulonglong local_10; + + local_10 = DAT_18006cea0 ^ (ulonglong)auStackY_88; + local_30 = '\0'; + if (param_3 == (longlong *)0x0) { + local_38 = FUN_1800380a0(); + local_48 = *(pthreadlocinfo *)(local_38 + 0x30); + local_40 = *(pthreadmbcinfo *)(local_38 + 0x2e); + if ((local_48 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + local_48 = __updatetlocinfo(); + } + if ((local_40 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + local_40 = __updatetmbcinfo(); + } + if ((local_38[0x32] & 2) == 0) { + local_38[0x32] = local_38[0x32] | 2; + local_30 = '\x01'; + } + } + else { + local_48 = (pthreadlocinfo)*param_3; + local_40 = (pthreadmbcinfo)param_3[1]; + } + uVar1 = FUN_18004c850(local_20,&local_28,param_2,0,0,0,0,(longlong *)&local_48); + uVar2 = FUN_18004bad0(local_20,param_1); + if ((uVar1 & 3) == 0) { + if ((int)uVar2 != 1) { + if ((int)uVar2 != 2) { +LAB_180049cad: + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 0; + } +LAB_180049c89: + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 4; + } + } + else { + if ((uVar1 & 1) != 0) goto LAB_180049c89; + if ((uVar1 & 2) == 0) goto LAB_180049cad; + } + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 3; +} + + +================================================================== + +### EXPORT FUNC 180049ce0 (400 bytes) name=FUN_180049ce0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_180049ce0(uint *param_1,char *param_2,longlong *param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + undefined1 auStackY_88 [32]; + pthreadlocinfo local_48; + pthreadmbcinfo local_40; + DWORD *local_38; + char local_30; + longlong local_28; + ushort local_20 [8]; + ulonglong local_10; + + local_10 = DAT_18006cea0 ^ (ulonglong)auStackY_88; + local_30 = '\0'; + if (param_3 == (longlong *)0x0) { + local_38 = FUN_1800380a0(); + local_48 = *(pthreadlocinfo *)(local_38 + 0x30); + local_40 = *(pthreadmbcinfo *)(local_38 + 0x2e); + if ((local_48 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + local_48 = __updatetlocinfo(); + } + if ((local_40 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_38[0x32]) == 0)) + { + local_40 = __updatetmbcinfo(); + } + if ((local_38[0x32] & 2) == 0) { + local_38[0x32] = local_38[0x32] | 2; + local_30 = '\x01'; + } + } + else { + local_48 = (pthreadlocinfo)*param_3; + local_40 = (pthreadmbcinfo)param_3[1]; + } + uVar1 = FUN_18004c850(local_20,&local_28,param_2,0,0,0,0,(longlong *)&local_48); + uVar2 = FUN_18004c190(local_20,param_1); + if ((uVar1 & 3) == 0) { + if ((int)uVar2 != 1) { + if ((int)uVar2 != 2) { +LAB_180049e3d: + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 0; + } +LAB_180049e19: + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 4; + } + } + else { + if ((uVar1 & 1) != 0) goto LAB_180049e19; + if ((uVar1 & 2) == 0) goto LAB_180049e3d; + } + if (local_30 != '\0') { + local_38[0x32] = local_38[0x32] & 0xfffffffd; + } + return 3; +} + + +================================================================== + +### EXPORT FUNC 180049e70 (280 bytes) name=FUN_180049e70 + +undefined8 FUN_180049e70(char *param_1,ulonglong param_2,int param_3,longlong param_4) + +{ + char *pcVar1; + int iVar2; + DWORD *pDVar3; + char *pcVar4; + ulonglong uVar5; + char cVar6; + char *pcVar7; + + pcVar7 = *(char **)(param_4 + 0x10); + if ((param_1 == (char *)0x0) || (param_2 == 0)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + *param_1 = '\0'; + iVar2 = 0; + if (0 < param_3) { + iVar2 = param_3; + } + if (param_2 <= (ulonglong)(longlong)(iVar2 + 1)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x22; + FUN_1800384e0(0,0,0,0,0); + return 0x22; + } + *param_1 = '0'; + pcVar4 = param_1; + for (; pcVar1 = pcVar4 + 1, 0 < param_3; param_3 = param_3 + -1) { + cVar6 = *pcVar7; + if (cVar6 == '\0') { + cVar6 = '0'; + } + else { + pcVar7 = pcVar7 + 1; + } + *pcVar1 = cVar6; + pcVar4 = pcVar1; + } + *pcVar1 = '\0'; + if ((-1 < param_3) && ('4' < *pcVar7)) { + cVar6 = *pcVar4; + while (cVar6 == '9') { + *pcVar4 = '0'; + pcVar4 = pcVar4 + -1; + cVar6 = *pcVar4; + } + *pcVar4 = *pcVar4 + '\x01'; + } + if (*param_1 == '1') { + *(int *)(param_4 + 4) = *(int *)(param_4 + 4) + 1; + return 0; + } + uVar5 = 0xffffffffffffffff; + pcVar7 = param_1; + do { + pcVar7 = pcVar7 + 1; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + } while (*pcVar7 != '\0'); + memcpy(param_1,param_1 + 1,~uVar5); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180049f90 (356 bytes) name=FUN_180049f90 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +int * FUN_180049f90(ulonglong param_1,int *param_2,char *param_3,rsize_t param_4) + +{ + int iVar1; + errno_t eVar2; + uint uVar3; + uint uVar4; + ushort uVar5; + uint uVar6; + undefined1 auStackY_98 [32]; + undefined8 local_68; + ushort local_60; + uint local_58; + uint uStack_54; + ushort local_50; + short local_48; + char local_46; + char local_44 [28]; + ulonglong local_28; + + local_28 = DAT_18006cea0 ^ (ulonglong)auStackY_98; + uVar5 = (ushort)(param_1 >> 0x30); + local_60 = uVar5 & 0x8000; + uVar6 = 0x80000000; + uVar5 = uVar5 >> 4 & 0x7ff; + if (uVar5 == 0) { + if (((param_1 & 0xfffff00000000) == 0) && ((int)param_1 == 0)) { + local_58 = 0; + uStack_54 = 0; + goto LAB_18004a063; + } + uVar5 = 0x3c01; + uVar6 = 0; + } + else if (uVar5 == 0x7ff) { + uVar5 = 0x7fff; + } + else { + uVar5 = uVar5 + 0x3c00; + } + local_58 = (int)param_1 << 0xb; + uStack_54 = (uint)(param_1 >> 0x15) & 0x7ff | ((uint)(param_1 >> 0x20) & 0xfffff) << 0xb | uVar6; + uVar3 = local_58; + uVar4 = uStack_54; + if (-1 < (int)uVar6) { + do { + local_58 = uVar3 * 2; + uVar5 = uVar5 - 1; + uStack_54 = uVar4 * 2 | uVar3 >> 0x1f; + uVar6 = uVar4 & 0x7fffffff; + uVar3 = local_58; + uVar4 = uStack_54; + } while (uVar6 >> 0x1e == 0); + } + local_60 = local_60 | uVar5; +LAB_18004a063: + local_68 = CONCAT44(uStack_54,local_58); + local_50 = local_60; + iVar1 = FUN_18004d280((int *)&local_68,0x11,0,&local_48); + param_2[2] = iVar1; + *param_2 = (int)local_46; + param_2[1] = (int)local_48; + eVar2 = strcpy_s(param_3,param_4,local_44); + if (eVar2 == 0) { + *(char **)(param_2 + 4) = param_3; + return param_2; + } + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); +} + + +================================================================== + +### EXPORT FUNC 18004a110 (81 bytes) name=FUN_18004a110 + +int FUN_18004a110(byte *param_1,byte *param_2,longlong param_3) + +{ + byte bVar1; + uint uVar2; + uint uVar3; + + if (param_3 != 0) { + do { + bVar1 = *param_1; + uVar3 = (uint)bVar1; + param_1 = param_1 + 1; + if (bVar1 - 0x41 < 0x1a) { + uVar3 = bVar1 + 0x20; + } + bVar1 = *param_2; + uVar2 = (uint)bVar1; + param_2 = param_2 + 1; + if (bVar1 - 0x41 < 0x1a) { + uVar2 = bVar1 + 0x20; + } + param_3 = param_3 + -1; + } while (((param_3 != 0) && (uVar3 != 0)) && (uVar3 == uVar2)); + return uVar3 - uVar2; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18004a170 (497 bytes) name=FUN_18004a170 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_18004a170(byte *param_1,byte *param_2,ulonglong param_3,undefined8 *param_4) + +{ + int iVar1; + uint uVar2; + uint uVar3; + DWORD *pDVar4; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + if (param_3 == 0) { + iVar1 = 0; + } + else { + local_10 = '\0'; + if (param_4 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_4; + local_20 = (pthreadmbcinfo)param_4[1]; + } + if (((param_1 == (byte *)0x0) || (param_2 == (byte *)0x0)) || (0x7fffffff < param_3)) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x16; + FUN_1800384e0(0,0,0,0,0); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0x7fffffff; + } + if (*(int *)((longlong)&local_28->lc_category[0].locale + 4) != 0) { + do { + uVar2 = FUN_1800498c0((uint)*param_1,&local_28); + param_1 = param_1 + 1; + uVar3 = FUN_1800498c0((uint)*param_2,&local_28); + param_2 = param_2 + 1; + param_3 = param_3 - 1; + if ((param_3 == 0) || (uVar2 == 0)) break; + } while (uVar2 == uVar3); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return uVar2 - uVar3; + } + iVar1 = FUN_18004a110(param_1,param_2,param_3); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return iVar1; + } + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18004a370 (197 bytes) name=FUN_18004a370 + +undefined8 FUN_18004a370(uint param_1) + +{ + ulonglong uVar1; + DWORD *pDVar2; + DWORD nStdHandle; + + if ((-1 < (int)param_1) && (param_1 < DAT_1800db4c8)) { + uVar1 = (ulonglong)(param_1 & 0x1f); + if (((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + uVar1 * 0x50) & 1) != 0) && + (*(longlong *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + uVar1 * 0x50) != -1)) { + if (DAT_1800727d0 == 1) { + if (param_1 == 0) { + nStdHandle = 0xfffffff6; + } + else if (param_1 == 1) { + nStdHandle = 0xfffffff5; + } + else { + if (param_1 != 2) goto LAB_18004a3ee; + nStdHandle = 0xfffffff4; + } + SetStdHandle(nStdHandle,(HANDLE)0x0); + } +LAB_18004a3ee: + *(undefined8 *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + uVar1 * 0x50) = + 0xffffffffffffffff; + return 0; + } + } + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18004a440 (154 bytes) name=FUN_18004a440 + +undefined8 FUN_18004a440(uint param_1) + +{ + DWORD *pDVar1; + + if (param_1 == 0xfffffffe) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + return 0xffffffffffffffff; + } + if ((-1 < (int)param_1) && (param_1 < DAT_1800db4c8)) { + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) != 0) { + return *(undefined8 *) + ((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + (ulonglong)(param_1 & 0x1f) * 0x50); + } + } + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffffffffffff; +} + + +================================================================== + +### EXPORT FUNC 18004a4e0 (172 bytes) name=FUN_18004a4e0 + +bool FUN_18004a4e0(uint param_1) + +{ + int *piVar1; + longlong lVar2; + ulonglong uVar3; + ulonglong uVar4; + bool bVar5; + + uVar3 = (ulonglong)(param_1 & 0x1f); + lVar2 = (&DAT_1800db4e0)[(longlong)(int)param_1 >> 5]; + bVar5 = true; + if (*(int *)(lVar2 + 0xc + uVar3 * 0x50) == 0) { + _lock(10); + if (*(int *)(lVar2 + 0xc + uVar3 * 0x50) == 0) { + uVar4 = FUN_180045910(lVar2 + 0x10 + uVar3 * 0x50,4000); + bVar5 = (int)uVar4 != 0; + piVar1 = (int *)(lVar2 + 0xc + uVar3 * 0x50); + *piVar1 = *piVar1 + 1; + } + FUN_180045470(10); + } + if (bVar5) { + EnterCriticalSection + ((LPCRITICAL_SECTION) + ((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 0x10 + uVar3 * 0x50)); + } + return bVar5; +} + + +================================================================== + +### EXPORT FUNC 18004a590 (25 bytes) name=FUN_18004a590 + +void FUN_18004a590(void) + +{ + FUN_180045470(10); + return; +} + + +================================================================== + +### EXPORT FUNC 18004a5b0 (43 bytes) name=FUN_18004a5b0 + +void FUN_18004a5b0(uint param_1) + +{ + /* WARNING: Could not recover jumptable at 0x00018004a5d4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection + ((LPCRITICAL_SECTION) + ((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 0x10 + + (ulonglong)(param_1 & 0x1f) * 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004a5e0 (295 bytes) name=FUN_18004a5e0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +WCHAR FUN_18004a5e0(WCHAR param_1) + +{ + BOOL BVar1; + DWORD DVar2; + UINT CodePage; + undefined1 auStackY_68 [32]; + WCHAR local_28 [2]; + DWORD local_24; + CHAR local_20 [8]; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStackY_68; + local_28[0] = param_1; + if (DAT_18006e3a0 != 0) { + if (DAT_18006e3e0 == (HANDLE)0xfffffffffffffffe) { + __initconout(); + } + if (DAT_18006e3e0 == (HANDLE)0xffffffffffffffff) { + return L'\xffff'; + } + BVar1 = WriteConsoleW(DAT_18006e3e0,local_28,1,&local_24,(LPVOID)0x0); + if (BVar1 != 0) { + DAT_18006e3a0 = 1; + return local_28[0]; + } + if (DAT_18006e3a0 != 2) { + return L'\xffff'; + } + DVar2 = GetLastError(); + if (DVar2 != 0x78) { + return L'\xffff'; + } + DAT_18006e3a0 = 0; + } + CodePage = GetConsoleOutputCP(); + DVar2 = WideCharToMultiByte(CodePage,0,local_28,1,local_20,5,(LPCSTR)0x0,(LPBOOL)0x0); + if ((DAT_18006e3e0 != (HANDLE)0xffffffffffffffff) && + (BVar1 = WriteConsoleA(DAT_18006e3e0,local_20,DVar2,&local_24,(LPVOID)0x0), BVar1 != 0)) { + return local_28[0]; + } + return L'\xffff'; +} + + +================================================================== + +### EXPORT FUNC 18004a710 (196 bytes) name=FUN_18004a710 + +int FUN_18004a710(void) + +{ + FILE *pFVar1; + int iVar2; + int iVar3; + longlong lVar4; + int iVar5; + + iVar5 = 0; + _lock(1); + for (iVar3 = 3; iVar3 < DAT_1800db4c0; iVar3 = iVar3 + 1) { + lVar4 = (longlong)iVar3; + if (*(longlong *)(DAT_1800da4a8 + lVar4 * 8) != 0) { + pFVar1 = *(FILE **)(DAT_1800da4a8 + lVar4 * 8); + if ((pFVar1->_flag & 0x83) != 0) { + iVar2 = FUN_18004e1a0(pFVar1); + if (iVar2 != -1) { + iVar5 = iVar5 + 1; + } + } + if (0x13 < iVar3) { + DeleteCriticalSection((LPCRITICAL_SECTION)(*(longlong *)(DAT_1800da4a8 + lVar4 * 8) + 0x30)) + ; + FUN_180034a70(*(LPVOID *)(DAT_1800da4a8 + lVar4 * 8)); + *(undefined8 *)(DAT_1800da4a8 + lVar4 * 8) = 0; + } + } + } + FUN_180045470(1); + return iVar5; +} + + +================================================================== + +### EXPORT FUNC 18004a7e0 (25 bytes) name=FUN_18004a7e0 + +void FUN_18004a7e0(void) + +{ + FUN_180045470(1); + return; +} + + +================================================================== + +### EXPORT FUNC 18004a800 (128 bytes) name=FUN_18004a800 + +undefined8 FUN_18004a800(int *param_1) + +{ + uint uVar1; + undefined8 uVar2; + uint uVar3; + + uVar2 = 0; + if (((((byte)param_1[6] & 3) == 2) && ((param_1[6] & 0x108U) != 0)) && + (uVar3 = *param_1 - param_1[4], 0 < (int)uVar3)) { + uVar1 = FUN_180047880((longlong)param_1); + uVar1 = FUN_1800473f0(uVar1,*(WCHAR **)(param_1 + 4),uVar3); + if (uVar1 == uVar3) { + if ((char)param_1[6] < '\0') { + param_1[6] = param_1[6] & 0xfffffffd; + } + } + else { + param_1[6] = param_1[6] | 0x20; + uVar2 = 0xffffffff; + } + } + param_1[2] = 0; + *(undefined8 *)param_1 = *(undefined8 *)(param_1 + 4); + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18004a880 (189 bytes) name=FUN_18004a880 + +ulonglong FUN_18004a880(int *param_1) + +{ + int iVar1; + uint uVar2; + undefined4 extraout_var; + uint uVar3; + + if (param_1 == (int *)0x0) { + iVar1 = FUN_18004a940(0); + return CONCAT44(extraout_var,iVar1); + } + iVar1 = 0; + if (((((byte)param_1[6] & 3) == 2) && (iVar1 = 0, (param_1[6] & 0x108U) != 0)) && + (uVar3 = *param_1 - param_1[4], 0 < (int)uVar3)) { + uVar2 = FUN_180047880((longlong)param_1); + uVar2 = FUN_1800473f0(uVar2,*(WCHAR **)(param_1 + 4),uVar3); + if (uVar2 == uVar3) { + iVar1 = 0; + if ((char)param_1[6] < '\0') { + param_1[6] = param_1[6] & 0xfffffffd; + } + } + else { + param_1[6] = param_1[6] | 0x20; + iVar1 = -1; + } + } + *(undefined8 *)param_1 = *(undefined8 *)(param_1 + 4); + param_1[2] = 0; + if (iVar1 == 0) { + if (((uint)param_1[6] >> 0xe & 1) == 0) { + return 0; + } + uVar3 = FUN_180047880((longlong)param_1); + iVar1 = FUN_18004e240(uVar3); + return (ulonglong)-(uint)(iVar1 != 0); + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18004a940 (245 bytes) name=FUN_18004a940 + +int FUN_18004a940(int param_1) + +{ + longlong lVar1; + int *piVar2; + ulonglong uVar3; + int iVar4; + longlong lVar5; + int iVar6; + int iVar7; + + iVar6 = 0; + iVar7 = 0; + _lock(1); + for (iVar4 = 0; iVar4 < DAT_1800db4c0; iVar4 = iVar4 + 1) { + lVar5 = (longlong)iVar4; + if ((*(longlong *)(DAT_1800da4a8 + lVar5 * 8) != 0) && + (lVar1 = *(longlong *)(DAT_1800da4a8 + lVar5 * 8), (*(byte *)(lVar1 + 0x18) & 0x83) != 0)) { + FUN_1800477d0(iVar4,lVar1); + piVar2 = *(int **)(DAT_1800da4a8 + lVar5 * 8); + if ((piVar2[6] & 0x83U) != 0) { + if (param_1 == 1) { + uVar3 = FUN_18004a880(piVar2); + if ((int)uVar3 != -1) { + iVar6 = iVar6 + 1; + } + } + else if ((param_1 == 0) && ((piVar2[6] & 2U) != 0)) { + uVar3 = FUN_18004a880(piVar2); + if ((int)uVar3 == -1) { + iVar7 = -1; + } + } + } + FUN_180047860(iVar4,*(longlong *)(DAT_1800da4a8 + lVar5 * 8)); + } + } + FUN_180045470(1); + if (param_1 == 1) { + iVar7 = iVar6; + } + return iVar7; +} + + +================================================================== + +### EXPORT FUNC 18004aa40 (38 bytes) name=FUN_18004aa40 + +void FUN_18004aa40(undefined8 param_1,longlong param_2) + +{ + FUN_180047860(*(int *)(param_2 + 0x20), + *(longlong *)(DAT_1800da4a8 + (longlong)*(int *)(param_2 + 0x20) * 8)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004aa70 (25 bytes) name=FUN_18004aa70 + +void FUN_18004aa70(void) + +{ + FUN_180045470(1); + return; +} + + +================================================================== + +### EXPORT FUNC 18004aa90 (10 bytes) name=FUN_18004aa90 + +void FUN_18004aa90(void) + +{ + FUN_18004a940(1); + return; +} + + +================================================================== + +### EXPORT FUNC 18004aaa0 (452 bytes) name=FUN_18004aaa0 + +undefined2 FUN_18004aaa0(WCHAR param_1,FILE *param_2) + +{ + byte bVar1; + uint uVar2; + uint uVar3; + DWORD *pDVar4; + undefined **ppuVar5; + undefined7 extraout_var; + longlong lVar6; + undefined *puVar7; + uint uVar8; + WCHAR local_res10 [4]; + + uVar2 = FUN_180047880((longlong)param_2); + uVar8 = param_2->_flag; + if ((uVar8 & 0x82) == 0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 9; + param_2->_flag = param_2->_flag | 0x20; + return 0xffff; + } + if ((uVar8 & 0x40) != 0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x22; + param_2->_flag = param_2->_flag | 0x20; + return 0xffff; + } + uVar3 = 0; + if ((uVar8 & 1) != 0) { + param_2->_cnt = 0; + if ((uVar8 & 0x10) == 0) { + param_2->_flag = uVar8 | 0x20; + return 0xffff; + } + param_2->_ptr = param_2->_base; + param_2->_flag = uVar8 & 0xfffffffe; + } + uVar8 = param_2->_flag; + param_2->_cnt = 0; + param_2->_flag = uVar8 & 0xffffffef | 2; + if (((uVar8 & 0x10c) == 0) && + (((ppuVar5 = FUN_180047620(), param_2 != (FILE *)(ppuVar5 + 6) && + (ppuVar5 = FUN_180047620(), param_2 != (FILE *)(ppuVar5 + 0xc))) || + (bVar1 = FUN_1800475a0(uVar2), (int)CONCAT71(extraout_var,bVar1) == 0)))) { + _getbuf(param_2); + } + if ((param_2->_flag & 0x108U) == 0) { + uVar8 = 2; + local_res10[0] = param_1; + uVar3 = FUN_1800473f0(uVar2,local_res10,2); + } + else { + uVar8 = *(int *)¶m_2->_ptr - *(int *)¶m_2->_base; + param_2->_ptr = (char *)((longlong)param_2->_base + 2); + param_2->_cnt = param_2->_bufsiz + -2; + if ((int)uVar8 < 1) { + if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) { + puVar7 = &DAT_18006d970; + } + else { + puVar7 = (undefined *) + ((ulonglong)(uVar2 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)(int)uVar2 >> 5]); + } + if (((puVar7[8] & 0x20) != 0) && (lVar6 = FUN_180046b10(uVar2,0,2), lVar6 == -1)) + goto LAB_18004ac42; + *(WCHAR *)param_2->_base = param_1; + } + else { + uVar3 = FUN_1800473f0(uVar2,(WCHAR *)param_2->_base,uVar8); + *(WCHAR *)param_2->_base = param_1; + } + } + if (uVar3 == uVar8) { + return param_1; + } +LAB_18004ac42: + param_2->_flag = param_2->_flag | 0x20; + return 0xffff; +} + + +================================================================== + +### EXPORT FUNC 18004ac70 (487 bytes) name=FUN_18004ac70 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ushort FUN_18004ac70(int param_1,ushort param_2,undefined8 *param_3) + +{ + ushort uVar1; + int iVar2; + undefined6 extraout_var; + uint uVar3; + ushort local_res8 [4]; + CHAR local_res18; + CHAR local_res19; + undefined1 local_res1a; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + if (param_3 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_3; + local_20 = (pthreadmbcinfo)param_3[1]; + } + if (param_1 + 1U < 0x101) { + local_res8[0] = local_28->locale_name[3][param_1] & param_2; + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return local_res8[0]; + } + } + else { + uVar1 = FUN_180047bb0(param_1 >> 8 & 0xff,&local_28); + if ((int)CONCAT62(extraout_var,uVar1) == 0) { + local_res19 = '\0'; + uVar3 = 1; + local_res18 = (CHAR)param_1; + } + else { + local_res1a = 0; + uVar3 = 2; + local_res18 = (CHAR)((uint)param_1 >> 8); + local_res19 = (CHAR)param_1; + } + iVar2 = FUN_180046340((longlong *)&local_28,1,&local_res18,uVar3,local_res8, + local_28->lc_codepage, + *(LCID *)((longlong)&local_28->lc_category[0].locale + 4),1); + if (iVar2 == 0) { + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0; + } + local_res8[0] = local_res8[0] & param_2; + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + } + return local_res8[0]; +} + + +================================================================== + +### EXPORT FUNC 18004ae60 (394 bytes) name=FUN_18004ae60 + +undefined2 FUN_18004ae60(FILE *param_1) + +{ + undefined2 uVar1; + uint uVar2; + int iVar3; + DWORD *pDVar4; + undefined *puVar5; + + if (param_1 == (FILE *)0x0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffff; + } + uVar2 = param_1->_flag; + if (((uVar2 & 0x83) == 0) || ((uVar2 & 0x40) != 0)) { + return 0xffff; + } + if ((uVar2 & 2) != 0) { + param_1->_flag = uVar2 | 0x20; + return 0xffff; + } + param_1->_flag = uVar2 | 1; + if ((uVar2 & 0x10c) == 0) { + _getbuf(param_1); + } + else { + param_1->_ptr = param_1->_base; + } + uVar2 = FUN_180047880((longlong)param_1); + iVar3 = FUN_18004ec90(uVar2,(LPWSTR)param_1->_base,param_1->_bufsiz); + param_1->_cnt = iVar3; + if (((iVar3 != 0) && (iVar3 != 1)) && (iVar3 != -1)) { + if ((param_1->_flag & 0x82) == 0) { + iVar3 = FUN_180047880((longlong)param_1); + if ((iVar3 == -1) || (iVar3 = FUN_180047880((longlong)param_1), iVar3 == -2)) { + puVar5 = &DAT_18006d970; + } + else { + iVar3 = FUN_180047880((longlong)param_1); + uVar2 = FUN_180047880((longlong)param_1); + puVar5 = (undefined *) + ((ulonglong)(uVar2 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar3 >> 5]); + } + if ((puVar5[8] & 0x82) == 0x82) { + param_1->_flag = param_1->_flag | 0x2000; + } + } + if (((param_1->_bufsiz == 0x200) && ((param_1->_flag & 8U) != 0)) && + (((uint)param_1->_flag >> 10 & 1) == 0)) { + param_1->_bufsiz = 0x1000; + } + param_1->_cnt = param_1->_cnt + -2; + uVar1 = *(undefined2 *)param_1->_ptr; + param_1->_ptr = param_1->_ptr + 2; + return uVar1; + } + uVar2 = 0x10; + if (iVar3 != 0) { + uVar2 = 0x20; + } + param_1->_cnt = 0; + param_1->_flag = param_1->_flag | uVar2; + return 0xffff; +} + + +================================================================== + +### EXPORT FUNC 18004aff0 (381 bytes) name=FUN_18004aff0 + +uint FUN_18004aff0(uint param_1,FILE *param_2) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + undefined *puVar4; + DWORD *pDVar5; + undefined *puVar6; + + if ((param_2->_flag & 0x40) == 0) { + iVar2 = FUN_180047880((longlong)param_2); + puVar6 = &DAT_18006d970; + if ((iVar2 == -1) || (iVar2 = FUN_180047880((longlong)param_2), iVar2 == -2)) { + puVar4 = &DAT_18006d970; + } + else { + iVar2 = FUN_180047880((longlong)param_2); + uVar3 = FUN_180047880((longlong)param_2); + puVar4 = (undefined *) + ((ulonglong)(uVar3 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar2 >> 5]); + } + if ((puVar4[0x38] & 0x7f) == 0) { + iVar2 = FUN_180047880((longlong)param_2); + if ((iVar2 != -1) && (iVar2 = FUN_180047880((longlong)param_2), iVar2 != -2)) { + iVar2 = FUN_180047880((longlong)param_2); + uVar3 = FUN_180047880((longlong)param_2); + puVar6 = (undefined *) + ((ulonglong)(uVar3 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar2 >> 5]); + } + if ((puVar6[0x38] & 0x80) == 0) goto LAB_18004b101; + } + pDVar5 = FUN_180035b40(); + *pDVar5 = 0x16; + FUN_1800384e0(0,0,0,0,0); + } + else { +LAB_18004b101: + if (param_1 != 0xffffffff) { + uVar3 = param_2->_flag; + if (((uVar3 & 1) != 0) || (((char)uVar3 < '\0' && ((uVar3 & 2) == 0)))) { + if (param_2->_base == (char *)0x0) { + _getbuf(param_2); + } + if (param_2->_ptr == param_2->_base) { + if (param_2->_cnt != 0) { + return 0xffffffff; + } + param_2->_ptr = param_2->_ptr + 1; + } + param_2->_ptr = param_2->_ptr + -1; + pcVar1 = param_2->_ptr; + if ((param_2->_flag & 0x40) == 0) { + *pcVar1 = (char)param_1; + } + else if (*pcVar1 != (char)param_1) { + param_2->_ptr = pcVar1 + 1; + return 0xffffffff; + } + param_2->_cnt = param_2->_cnt + 1; + param_2->_flag = param_2->_flag & 0xffffffef; + param_2->_flag = param_2->_flag | 1; + return param_1 & 0xff; + } + } + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18004b170 (114 bytes) name=FUN_18004b170 + +uint FUN_18004b170(uint param_1,FILE *param_2) + +{ + uint uVar1; + DWORD *pDVar2; + + if (param_2 == (FILE *)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + uVar1 = 0xffffffff; + } + else { + FUN_180047760((ulonglong)param_2); + uVar1 = FUN_18004aff0(param_1,param_2); + FUN_180047810((ulonglong)param_2); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18004b1f0 (24 bytes) name=FUN_18004b1f0 + +void FUN_18004b1f0(undefined8 param_1,longlong param_2) + +{ + FUN_180047810(*(ulonglong *)(param_2 + 0x48)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004b210 (379 bytes) name=FUN_18004b210 + +ulonglong FUN_18004b210(FILE *param_1) + +{ + byte bVar1; + uint uVar2; + int iVar3; + DWORD *pDVar4; + undefined *puVar5; + + if (param_1 == (FILE *)0x0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + uVar2 = param_1->_flag; + if (((uVar2 & 0x83) == 0) || ((uVar2 & 0x40) != 0)) { + return 0xffffffff; + } + if ((uVar2 & 2) != 0) { + param_1->_flag = uVar2 | 0x20; + return 0xffffffff; + } + param_1->_flag = uVar2 | 1; + if ((uVar2 & 0x10c) == 0) { + _getbuf(param_1); + } + else { + param_1->_ptr = param_1->_base; + } + uVar2 = FUN_180047880((longlong)param_1); + iVar3 = FUN_18004ec90(uVar2,(LPWSTR)param_1->_base,param_1->_bufsiz); + param_1->_cnt = iVar3; + if ((iVar3 != 0) && (iVar3 != -1)) { + if ((param_1->_flag & 0x82) == 0) { + iVar3 = FUN_180047880((longlong)param_1); + if ((iVar3 == -1) || (iVar3 = FUN_180047880((longlong)param_1), iVar3 == -2)) { + puVar5 = &DAT_18006d970; + } + else { + iVar3 = FUN_180047880((longlong)param_1); + uVar2 = FUN_180047880((longlong)param_1); + puVar5 = (undefined *) + ((ulonglong)(uVar2 & 0x1f) * 0x50 + (&DAT_1800db4e0)[(longlong)iVar3 >> 5]); + } + if ((puVar5[8] & 0x82) == 0x82) { + param_1->_flag = param_1->_flag | 0x2000; + } + } + if (((param_1->_bufsiz == 0x200) && ((param_1->_flag & 8U) != 0)) && + (((uint)param_1->_flag >> 10 & 1) == 0)) { + param_1->_bufsiz = 0x1000; + } + param_1->_cnt = param_1->_cnt + -1; + bVar1 = *param_1->_ptr; + param_1->_ptr = param_1->_ptr + 1; + return (ulonglong)bVar1; + } + uVar2 = 0x10; + if (iVar3 != 0) { + uVar2 = 0x20; + } + param_1->_cnt = 0; + param_1->_flag = param_1->_flag | uVar2; + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18004b390 (786 bytes) name=FUN_18004b390 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +BOOL FUN_18004b390(longlong *param_1,DWORD param_2,LPCWSTR param_3,int param_4,LPWORD param_5, + UINT param_6,LCID param_7) + +{ + longlong lVar1; + size_t _Size; + undefined1 *puVar2; + BOOL BVar3; + DWORD DVar4; + BOOL BVar5; + UINT UVar6; + int cchSrc; + int iVar7; + undefined8 uVar8; + ulonglong uVar9; + ulonglong uVar10; + undefined4 *puVar11; + undefined1 *puVar12; + undefined1 *puVar13; + undefined1 *puVar14; + ulonglong *lpSrcStr; + undefined4 *_Src; + longlong lVar15; + ulonglong uVar16; + undefined1 auStackY_88 [32]; + DWORD local_48; + WORD aWStack_44 [6]; + longlong *local_38; + ulonglong local_30; + + puVar14 = auStackY_88; + puVar12 = auStackY_88; + puVar13 = auStackY_88; + local_30 = DAT_18006cea0 ^ (ulonglong)&local_48; + lVar15 = (longlong)param_4; + puVar2 = auStackY_88; + if (param_4 < -1) { +LAB_18004b67a: + puVar14 = puVar2; + BVar5 = 0; + } + else { + local_48 = param_2; + local_38 = param_1; + if (DAT_180073660 == 0) { + BVar3 = GetStringTypeW(1,L"",1,aWStack_44); + if (BVar3 == 0) { + DVar4 = GetLastError(); + if (DVar4 != 0x78) goto LAB_18004b42a; + DAT_180073660 = 2; +LAB_18004b453: + BVar3 = 0; + if (param_7 == 0) { + param_7 = *(LCID *)(*param_1 + 0x14); + } + if (param_6 == 0) { + param_6 = *(UINT *)(*param_1 + 4); + } + uVar8 = FUN_180048c40(param_7); + UVar6 = (UINT)uVar8; + if ((param_6 != UVar6) && (UVar6 != 0xffffffff)) { + param_6 = UVar6; + } + cchSrc = WideCharToMultiByte(param_6,0,param_3,param_4,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0) + ; + uVar16 = (ulonglong)cchSrc; + puVar2 = auStackY_88; + if (((cchSrc != 0) && (puVar2 = auStackY_88, 0 < cchSrc)) && + (puVar2 = auStackY_88, uVar16 < 0xffffffffffffffe1)) { + uVar10 = uVar16 + 0x10; + if (uVar10 < 0x401) { + uVar9 = uVar16 + 0x1f; + if (uVar9 <= uVar10) { + uVar9 = 0xffffffffffffff0; + } + lVar1 = -(uVar9 & 0xfffffffffffffff0); + puVar12 = auStackY_88 + lVar1; + puVar11 = (undefined4 *)((longlong)aWStack_44 + lVar1 + -4); + puVar2 = auStackY_88 + lVar1; + if (puVar11 == (undefined4 *)0x0) goto LAB_18004b67a; + *puVar11 = 0xcccc; +LAB_18004b522: + lpSrcStr = (ulonglong *)(puVar11 + 4); + puVar13 = puVar12; + } + else { + puVar11 = FUN_1800349a0(uVar10); + lpSrcStr = (ulonglong *)0x0; + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = 0xdddd; + goto LAB_18004b522; + } + } + puVar2 = puVar13; + if (lpSrcStr != (ulonglong *)0x0) { + *(undefined8 *)(puVar13 + -8) = 0x18004b53c; + FUN_1800357d0(lpSrcStr,0,uVar16); + *(undefined8 *)(puVar13 + 0x38) = 0; + *(undefined8 *)(puVar13 + 0x30) = 0; + *(int *)(puVar13 + 0x28) = cchSrc; + *(ulonglong **)(puVar13 + 0x20) = lpSrcStr; + *(undefined8 *)(puVar13 + -8) = 0x18004b562; + iVar7 = WideCharToMultiByte(param_6,0,param_3,param_4,*(LPSTR *)(puVar13 + 0x20), + *(int *)(puVar13 + 0x28),*(LPCSTR *)(puVar13 + 0x30), + *(LPBOOL *)(puVar13 + 0x38)); + puVar14 = puVar13; + BVar5 = 0; + if (((iVar7 != 0) && (iVar7 = cchSrc + 1, BVar5 = BVar3, 0 < iVar7)) && + ((ulonglong)(longlong)iVar7 < 0x7ffffffffffffff1)) { + lVar1 = (longlong)iVar7 * 2; + uVar16 = lVar1 + 0x10; + if (uVar16 < 0x401) { + uVar10 = lVar1 + 0x1f; + if (uVar10 <= uVar16) { + uVar10 = 0xffffffffffffff0; + } + *(undefined8 *)(puVar13 + -8) = 0x18004b5b6; + lVar1 = -(uVar10 & 0xfffffffffffffff0); + puVar14 = puVar13 + lVar1; + puVar11 = (undefined4 *)(puVar13 + lVar1 + 0x40); + if (puVar11 == (undefined4 *)0x0) goto LAB_18004b663; + *puVar11 = 0xcccc; + puVar13 = puVar13 + lVar1; +LAB_18004b5e2: + _Src = puVar11 + 4; + puVar14 = puVar13; + } + else { + *(undefined8 *)(puVar13 + -8) = 0x18004b5d4; + puVar11 = FUN_1800349a0(uVar16); + _Src = (undefined4 *)0x0; + if (puVar11 != (undefined4 *)0x0) { + *puVar11 = 0xdddd; + goto LAB_18004b5e2; + } + } + DVar4 = local_48; + if (_Src != (undefined4 *)0x0) { + if (param_7 == 0) { + param_7 = *(LCID *)(*local_38 + 0x14); + } + _Size = lVar15 * 2; + *(undefined2 *)(_Size + (longlong)_Src) = 0xffff; + *(undefined2 *)((longlong)_Src + lVar15 * 2 + -2) = 0xffff; + *(undefined4 **)(puVar14 + 0x20) = _Src; + *(undefined8 *)(puVar14 + -8) = 0x18004b627; + BVar5 = GetStringTypeA(param_7,DVar4,(LPCSTR)lpSrcStr,cchSrc, + *(LPWORD *)(puVar14 + 0x20)); + if ((*(short *)((longlong)_Src + lVar15 * 2 + -2) == -1) || + (*(short *)(_Size + (longlong)_Src) != -1)) { + BVar5 = 0; + } + else { + *(undefined8 *)(puVar14 + -8) = 0x18004b64c; + memcpy(param_5,_Src,_Size); + } + if (_Src[-4] == 0xdddd) { + *(undefined8 *)(puVar14 + -8) = 0x18004b663; + FUN_180034a70(_Src + -4); + } + } + } +LAB_18004b663: + if ((int)lpSrcStr[-2] == 0xdddd) { + *(undefined8 *)(puVar14 + -8) = 0x18004b675; + FUN_180034a70(lpSrcStr + -2); + } + goto LAB_18004b67c; + } + } + goto LAB_18004b67a; + } + DAT_180073660 = 1; + } + else { +LAB_18004b42a: + if (DAT_180073660 != 1) { + if ((DAT_180073660 == 2) || (puVar2 = auStackY_88, DAT_180073660 == 0)) goto LAB_18004b453; + goto LAB_18004b67a; + } + } + BVar5 = GetStringTypeW(param_2,param_3,param_4,param_5); + } +LAB_18004b67c: + *(undefined8 *)(puVar14 + -8) = 0x18004b688; + return BVar5; +} + + +================================================================== + +### EXPORT FUNC 18004b6b0 (317 bytes) name=FUN_18004b6b0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18004b6b0(longlong *param_1,DWORD param_2,LPCWSTR param_3,int param_4,LPWORD param_5, + UINT param_6,LCID param_7) + +{ + pthreadmbcinfo ptVar1; + bool bVar2; + DWORD *pDVar3; + pthreadlocinfo local_38; + pthreadmbcinfo local_30; + DWORD *local_28; + undefined1 local_20; + + bVar2 = false; + local_20 = 0; + if (param_1 == (longlong *)0x0) { + pDVar3 = FUN_1800380a0(); + local_38 = *(pthreadlocinfo *)(pDVar3 + 0x30); + ptVar1 = *(pthreadmbcinfo *)(pDVar3 + 0x2e); + local_30 = ptVar1; + local_28 = pDVar3; + if ((local_38 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_38 = __updatetlocinfo(); + } + if ((ptVar1 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar3[0x32]) == 0)) { + local_30 = __updatetmbcinfo(); + } + if ((pDVar3[0x32] & 2) == 0) { + pDVar3[0x32] = pDVar3[0x32] | 2; + bVar2 = true; + local_20 = 1; + } + } + else { + local_38 = (pthreadlocinfo)*param_1; + local_30 = (pthreadmbcinfo)param_1[1]; + bVar2 = false; + pDVar3 = local_28; + } + FUN_18004b390((longlong *)&local_38,param_2,param_3,param_4,param_5,param_6,param_7); + if (bVar2) { + pDVar3[0x32] = pDVar3[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18004b7f0 (445 bytes) name=FUN_18004b7f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_18004b7f0(byte *param_1,byte *param_2,ulonglong param_3,longlong *param_4) + +{ + int iVar1; + DWORD *pDVar2; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + if (param_4 == (longlong *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_4; + local_20 = (pthreadmbcinfo)param_4[1]; + } + if (param_3 == 0) { + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0; + } + if (((param_1 == (byte *)0x0) || (param_2 == (byte *)0x0)) || (0x7fffffff < param_3)) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); +LAB_18004b910: + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + iVar1 = 0x7fffffff; + } + else { + if (local_20->ismbcodepage == 0) { + iVar1 = FUN_18004f450(param_1,param_2,param_3,param_4); + } + else { + iVar1 = FUN_18004f310((longlong *)&local_28,*(LCID *)local_20->mbulinfo,0x1001,param_1, + (uint)param_3,param_2,(uint)param_3,local_20->mbcodepage); + if (iVar1 == 0) goto LAB_18004b910; + iVar1 = iVar1 + -2; + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18004b9b0 (8 bytes) name=FUN_18004b9b0 + +void FUN_18004b9b0(byte *param_1,byte *param_2,ulonglong param_3) + +{ + FUN_18004b7f0(param_1,param_2,param_3,(longlong *)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 18004b9c0 (258 bytes) name=FUN_18004b9c0 + +undefined8 FUN_18004b9c0(void) + +{ + LPCWSTR lpWideCharStr; + int iVar1; + undefined8 *puVar2; + LPSTR local_res8; + + local_res8 = (LPSTR)0x0; + lpWideCharStr = (LPCWSTR)*DAT_180072818; + puVar2 = DAT_180072818; + while( true ) { + if (lpWideCharStr == (LPCWSTR)0x0) { + return 0; + } + iVar1 = WideCharToMultiByte(0,0,lpWideCharStr,-1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0); + if ((iVar1 == 0) || (local_res8 = FUN_180040e50((longlong)iVar1,1), local_res8 == (LPSTR)0x0)) + break; + iVar1 = WideCharToMultiByte(0,0,(LPCWSTR)*puVar2,-1,local_res8,iVar1,(LPCSTR)0x0,(LPBOOL)0x0); + if (iVar1 == 0) { + FUN_180034a70(local_res8); + return 0xffffffff; + } + iVar1 = FUN_18004f770(&local_res8,0); + if ((iVar1 < 0) && (local_res8 != (LPSTR)0x0)) { + FUN_180034a70(local_res8); + local_res8 = (LPSTR)0x0; + } + lpWideCharStr = (LPCWSTR)puVar2[1]; + puVar2 = puVar2 + 1; + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 18004bad0 (1713 bytes) name=FUN_18004bad0 + +ulonglong FUN_18004bad0(ushort *param_1,uint *param_2) + +{ + uint *puVar1; + ushort uVar2; + uint uVar3; + int iVar4; + ulonglong uVar5; + byte bVar6; + longlong lVar7; + int *piVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + ulonglong uVar13; + int iVar14; + longlong lVar15; + int iVar16; + int iVar17; + ulonglong uVar18; + int iVar19; + uint uStack_5c; + undefined8 local_58; + int local_50 [4]; + int local_40; + + iVar4 = DAT_18006e3b0; + uVar2 = param_1[5]; + uVar11 = uVar2 & 0x7fff; + iVar12 = uVar11 - 0x3fff; + local_58._0_4_ = *(uint *)(param_1 + 3); + local_58._4_4_ = *(uint *)(param_1 + 1); + local_50[0] = (uint)*param_1 << 0x10; + if (iVar12 == -0x3fff) { + uVar13 = 0; + iVar17 = 0; + uVar5 = uVar13; + do { + if (*(int *)((longlong)&local_58 + uVar5 * 4) != 0) { + local_58._0_4_ = 0; + local_58._4_4_ = 0; + uVar13 = 2; + iVar17 = 0; + break; + } + uVar5 = uVar5 + 1; + } while ((longlong)uVar5 < 3); + } + else { + local_50[2] = *(uint *)(param_1 + 3); + local_50[3] = *(uint *)(param_1 + 1); + local_40 = (uint)*param_1 << 0x10; + uVar13 = 0; + iVar17 = 0; + uVar9 = DAT_18006e3b0 >> 0x1f & 0x1f; + iVar16 = 0; + uVar3 = DAT_18006e3b0 + uVar9; + iVar19 = (int)uVar3 >> 5; + uVar3 = 0x1f - ((uVar3 & 0x1f) - uVar9); + bVar6 = (byte)uVar3; + if ((*(uint *)((longlong)&local_58 + (longlong)iVar19 * 4) >> (uVar3 & 0x1f) & 1) != 0) { + if ((*(uint *)((longlong)&local_58 + (longlong)iVar19 * 4) & ~(-1 << (bVar6 & 0x1f))) == 0) { + for (lVar7 = (longlong)(iVar19 + 1); lVar7 < 3; lVar7 = lVar7 + 1) { + if (*(int *)((longlong)&local_58 + lVar7 * 4) != 0) goto LAB_18004bc02; + } + } + else { +LAB_18004bc02: + uVar3 = DAT_18006e3b0 + -1 >> 0x1f & 0x1f; + iVar16 = DAT_18006e3b0 + -1 + uVar3; + iVar14 = iVar16 >> 5; + uVar9 = *(uint *)((longlong)&local_58 + (longlong)iVar14 * 4); + uVar10 = 1 << (0x1f - (((byte)iVar16 & 0x1f) - (char)uVar3) & 0x1f); + uVar3 = uVar9 + uVar10; + if ((uVar3 < uVar9) || (uVar5 = uVar13, uVar3 < uVar10)) { + uVar5 = 1; + } + iVar16 = (int)uVar5; + *(uint *)((longlong)&local_58 + (longlong)iVar14 * 4) = uVar3; + lVar7 = (longlong)(iVar14 + -1); + if (-1 < iVar14 + -1) { + do { + iVar16 = 0; + if ((int)uVar5 == 0) break; + uVar9 = *(uint *)((longlong)&local_58 + lVar7 * 4); + uVar3 = uVar9 + 1; + if ((uVar3 < uVar9) || (uVar5 = uVar13, uVar3 == 0)) { + uVar5 = 1; + } + iVar16 = (int)uVar5; + *(uint *)((longlong)&local_58 + lVar7 * 4) = uVar3; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + } + } + } + puVar1 = (uint *)((longlong)&local_58 + (longlong)iVar19 * 4); + *puVar1 = *puVar1 & -1 << (bVar6 & 0x1f); + lVar7 = (longlong)(iVar19 + 1); + if (lVar7 < 3) { + FUN_1800357d0((ulonglong *)((longlong)&local_58 + lVar7 * 4),0,(3 - lVar7) * 4); + } + iVar19 = iVar12; + if (iVar16 != 0) { + iVar19 = uVar11 - 0x3ffe; + } + if (iVar19 < DAT_18006e3ac - iVar4) { + local_58._0_4_ = 0; + local_58._4_4_ = 0; + uVar13 = 2; + } + else if (DAT_18006e3ac < iVar19) { + if (iVar19 < DAT_18006e3a8) { + local_58._0_4_ = (uint)local_58 & 0x7fffffff; + iVar17 = DAT_18006e3bc + iVar19; + uVar11 = DAT_18006e3b4 >> 0x1f & 0x1f; + iVar4 = DAT_18006e3b4 + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + uVar18 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar5 * 4); + uVar5 = uVar5 + 1; + (&uStack_5c)[uVar5] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar18; + uVar18 = (ulonglong)((~(-1 << (bVar6 & 0x1f)) & uVar11) << (0x20 - bVar6 & 0x1f)); + } while ((longlong)uVar5 < 3); + lVar7 = (longlong)(iVar4 >> 5); + lVar15 = 2; + piVar8 = local_50 + -lVar7; + do { + if (lVar15 < lVar7) { + *(undefined4 *)((longlong)&local_58 + lVar15 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar15 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar15 = lVar15 + -1; + } while (-1 < lVar15); + } + else { + local_58._0_4_ = 0x80000000; + local_58._4_4_ = 0; + local_50[0] = 0; + uVar11 = DAT_18006e3b4 >> 0x1f & 0x1f; + iVar4 = DAT_18006e3b4 + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar13 * 4); + uVar13 = uVar13 + 1; + (&uStack_5c)[uVar13] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar5; + uVar5 = (ulonglong)((~(-1 << (bVar6 & 0x1f)) & uVar11) << (0x20 - bVar6 & 0x1f)); + } while ((longlong)uVar13 < 3); + lVar7 = (longlong)(iVar4 >> 5); + lVar15 = 2; + piVar8 = local_50 + -lVar7; + do { + if (lVar15 < lVar7) { + *(undefined4 *)((longlong)&local_58 + lVar15 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar15 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar15 = lVar15 + -1; + } while (-1 < lVar15); + uVar13 = 1; + iVar17 = DAT_18006e3bc + DAT_18006e3a8; + } + } + else { + local_58._0_4_ = local_50[2]; + local_58._4_4_ = local_50[3]; + local_50[0] = local_40; + uVar11 = DAT_18006e3ac - iVar12 >> 0x1f & 0x1f; + iVar4 = (DAT_18006e3ac - iVar12) + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + uVar18 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar5 * 4); + uVar5 = uVar5 + 1; + (&uStack_5c)[uVar5] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar18; + uVar18 = (ulonglong)((uVar11 & ~(-1 << (bVar6 & 0x1f))) << (-bVar6 & 0x1f)); + } while ((longlong)uVar5 < 3); + lVar15 = (longlong)(iVar4 >> 5); + lVar7 = 2; + piVar8 = local_50 + -lVar15; + do { + if (lVar7 < lVar15) { + *(undefined4 *)((longlong)&local_58 + lVar7 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar7 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + uVar3 = DAT_18006e3b0 >> 0x1f & 0x1f; + uVar11 = DAT_18006e3b0 + uVar3; + iVar4 = (int)uVar11 >> 5; + uVar11 = 0x1f - ((uVar11 & 0x1f) - uVar3); + bVar6 = (byte)uVar11; + if ((*(uint *)((longlong)&local_58 + (longlong)iVar4 * 4) >> (uVar11 & 0x1f) & 1) != 0) { + if ((*(uint *)((longlong)&local_58 + (longlong)iVar4 * 4) & ~(-1 << (bVar6 & 0x1f))) == 0) { + for (lVar7 = (longlong)(iVar4 + 1); lVar7 < 3; lVar7 = lVar7 + 1) { + if (*(int *)((longlong)&local_58 + lVar7 * 4) != 0) goto LAB_18004be18; + } + } + else { +LAB_18004be18: + uVar11 = DAT_18006e3b0 + -1 >> 0x1f & 0x1f; + iVar12 = DAT_18006e3b0 + -1 + uVar11; + iVar16 = iVar12 >> 5; + uVar3 = *(uint *)((longlong)&local_58 + (longlong)iVar16 * 4); + uVar9 = 1 << (0x1f - (((byte)iVar12 & 0x1f) - (char)uVar11) & 0x1f); + uVar11 = uVar3 + uVar9; + if ((uVar11 < uVar3) || (uVar5 = uVar13, uVar11 < uVar9)) { + uVar5 = 1; + } + *(uint *)((longlong)&local_58 + (longlong)iVar16 * 4) = uVar11; + lVar7 = (longlong)(iVar16 + -1); + if (-1 < iVar16 + -1) { + do { + if ((int)uVar5 == 0) break; + uVar3 = *(uint *)((longlong)&local_58 + lVar7 * 4); + uVar11 = uVar3 + 1; + if ((uVar11 < uVar3) || (uVar5 = uVar13, uVar11 == 0)) { + uVar5 = 1; + } + *(uint *)((longlong)&local_58 + lVar7 * 4) = uVar11; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + } + } + } + puVar1 = (uint *)((longlong)&local_58 + (longlong)iVar4 * 4); + *puVar1 = *puVar1 & -1 << (bVar6 & 0x1f); + lVar7 = (longlong)(iVar4 + 1); + if (lVar7 < 3) { + FUN_1800357d0((ulonglong *)((longlong)&local_58 + lVar7 * 4),0,(3 - lVar7) * 4); + } + uVar11 = DAT_18006e3b4 + 1 >> 0x1f & 0x1f; + iVar4 = DAT_18006e3b4 + 1 + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar13 * 4); + uVar13 = uVar13 + 1; + (&uStack_5c)[uVar13] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar5; + uVar5 = (ulonglong)((~(-1 << (bVar6 & 0x1f)) & uVar11) << (0x20 - bVar6 & 0x1f)); + } while ((longlong)uVar13 < 3); + lVar15 = (longlong)(iVar4 >> 5); + lVar7 = 2; + piVar8 = local_50 + -lVar15; + do { + if (lVar7 < lVar15) { + *(undefined4 *)((longlong)&local_58 + lVar7 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar7 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + iVar17 = 0; + uVar13 = 2; + } + } + local_58._0_4_ = + iVar17 << (0x1fU - (char)DAT_18006e3b4 & 0x1f) | -(uint)((uVar2 & 0x8000) != 0) & 0x80000000 + | (uint)local_58; + if (DAT_18006e3b8 == 0x40) { + param_2[1] = (uint)local_58; + *param_2 = local_58._4_4_; + return uVar13; + } + if (DAT_18006e3b8 == 0x20) { + *param_2 = (uint)local_58; + } + return uVar13; +} + + +================================================================== + +### EXPORT FUNC 18004c190 (1713 bytes) name=FUN_18004c190 + +ulonglong FUN_18004c190(ushort *param_1,uint *param_2) + +{ + uint *puVar1; + ushort uVar2; + uint uVar3; + int iVar4; + ulonglong uVar5; + byte bVar6; + longlong lVar7; + int *piVar8; + uint uVar9; + uint uVar10; + uint uVar11; + int iVar12; + ulonglong uVar13; + int iVar14; + longlong lVar15; + int iVar16; + int iVar17; + ulonglong uVar18; + int iVar19; + uint uStack_5c; + undefined8 local_58; + int local_50 [4]; + int local_40; + + iVar4 = DAT_18006e3c8; + uVar2 = param_1[5]; + uVar11 = uVar2 & 0x7fff; + iVar12 = uVar11 - 0x3fff; + local_58._0_4_ = *(uint *)(param_1 + 3); + local_58._4_4_ = *(uint *)(param_1 + 1); + local_50[0] = (uint)*param_1 << 0x10; + if (iVar12 == -0x3fff) { + uVar13 = 0; + iVar17 = 0; + uVar5 = uVar13; + do { + if (*(int *)((longlong)&local_58 + uVar5 * 4) != 0) { + local_58._0_4_ = 0; + local_58._4_4_ = 0; + uVar13 = 2; + iVar17 = 0; + break; + } + uVar5 = uVar5 + 1; + } while ((longlong)uVar5 < 3); + } + else { + local_50[2] = *(uint *)(param_1 + 3); + local_50[3] = *(uint *)(param_1 + 1); + local_40 = (uint)*param_1 << 0x10; + uVar13 = 0; + iVar17 = 0; + uVar9 = DAT_18006e3c8 >> 0x1f & 0x1f; + iVar16 = 0; + uVar3 = DAT_18006e3c8 + uVar9; + iVar19 = (int)uVar3 >> 5; + uVar3 = 0x1f - ((uVar3 & 0x1f) - uVar9); + bVar6 = (byte)uVar3; + if ((*(uint *)((longlong)&local_58 + (longlong)iVar19 * 4) >> (uVar3 & 0x1f) & 1) != 0) { + if ((*(uint *)((longlong)&local_58 + (longlong)iVar19 * 4) & ~(-1 << (bVar6 & 0x1f))) == 0) { + for (lVar7 = (longlong)(iVar19 + 1); lVar7 < 3; lVar7 = lVar7 + 1) { + if (*(int *)((longlong)&local_58 + lVar7 * 4) != 0) goto LAB_18004c2c2; + } + } + else { +LAB_18004c2c2: + uVar3 = DAT_18006e3c8 + -1 >> 0x1f & 0x1f; + iVar16 = DAT_18006e3c8 + -1 + uVar3; + iVar14 = iVar16 >> 5; + uVar9 = *(uint *)((longlong)&local_58 + (longlong)iVar14 * 4); + uVar10 = 1 << (0x1f - (((byte)iVar16 & 0x1f) - (char)uVar3) & 0x1f); + uVar3 = uVar9 + uVar10; + if ((uVar3 < uVar9) || (uVar5 = uVar13, uVar3 < uVar10)) { + uVar5 = 1; + } + iVar16 = (int)uVar5; + *(uint *)((longlong)&local_58 + (longlong)iVar14 * 4) = uVar3; + lVar7 = (longlong)(iVar14 + -1); + if (-1 < iVar14 + -1) { + do { + iVar16 = 0; + if ((int)uVar5 == 0) break; + uVar9 = *(uint *)((longlong)&local_58 + lVar7 * 4); + uVar3 = uVar9 + 1; + if ((uVar3 < uVar9) || (uVar5 = uVar13, uVar3 == 0)) { + uVar5 = 1; + } + iVar16 = (int)uVar5; + *(uint *)((longlong)&local_58 + lVar7 * 4) = uVar3; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + } + } + } + puVar1 = (uint *)((longlong)&local_58 + (longlong)iVar19 * 4); + *puVar1 = *puVar1 & -1 << (bVar6 & 0x1f); + lVar7 = (longlong)(iVar19 + 1); + if (lVar7 < 3) { + FUN_1800357d0((ulonglong *)((longlong)&local_58 + lVar7 * 4),0,(3 - lVar7) * 4); + } + iVar19 = iVar12; + if (iVar16 != 0) { + iVar19 = uVar11 - 0x3ffe; + } + if (iVar19 < DAT_18006e3c4 - iVar4) { + local_58._0_4_ = 0; + local_58._4_4_ = 0; + uVar13 = 2; + } + else if (DAT_18006e3c4 < iVar19) { + if (iVar19 < DAT_18006e3c0) { + local_58._0_4_ = (uint)local_58 & 0x7fffffff; + iVar17 = DAT_18006e3d4 + iVar19; + uVar11 = DAT_18006e3cc >> 0x1f & 0x1f; + iVar4 = DAT_18006e3cc + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + uVar18 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar5 * 4); + uVar5 = uVar5 + 1; + (&uStack_5c)[uVar5] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar18; + uVar18 = (ulonglong)((~(-1 << (bVar6 & 0x1f)) & uVar11) << (0x20 - bVar6 & 0x1f)); + } while ((longlong)uVar5 < 3); + lVar7 = (longlong)(iVar4 >> 5); + lVar15 = 2; + piVar8 = local_50 + -lVar7; + do { + if (lVar15 < lVar7) { + *(undefined4 *)((longlong)&local_58 + lVar15 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar15 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar15 = lVar15 + -1; + } while (-1 < lVar15); + } + else { + local_58._0_4_ = 0x80000000; + local_58._4_4_ = 0; + local_50[0] = 0; + uVar11 = DAT_18006e3cc >> 0x1f & 0x1f; + iVar4 = DAT_18006e3cc + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar13 * 4); + uVar13 = uVar13 + 1; + (&uStack_5c)[uVar13] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar5; + uVar5 = (ulonglong)((~(-1 << (bVar6 & 0x1f)) & uVar11) << (0x20 - bVar6 & 0x1f)); + } while ((longlong)uVar13 < 3); + lVar7 = (longlong)(iVar4 >> 5); + lVar15 = 2; + piVar8 = local_50 + -lVar7; + do { + if (lVar15 < lVar7) { + *(undefined4 *)((longlong)&local_58 + lVar15 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar15 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar15 = lVar15 + -1; + } while (-1 < lVar15); + uVar13 = 1; + iVar17 = DAT_18006e3d4 + DAT_18006e3c0; + } + } + else { + local_58._0_4_ = local_50[2]; + local_58._4_4_ = local_50[3]; + local_50[0] = local_40; + uVar11 = DAT_18006e3c4 - iVar12 >> 0x1f & 0x1f; + iVar4 = (DAT_18006e3c4 - iVar12) + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + uVar18 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar5 * 4); + uVar5 = uVar5 + 1; + (&uStack_5c)[uVar5] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar18; + uVar18 = (ulonglong)((uVar11 & ~(-1 << (bVar6 & 0x1f))) << (-bVar6 & 0x1f)); + } while ((longlong)uVar5 < 3); + lVar15 = (longlong)(iVar4 >> 5); + lVar7 = 2; + piVar8 = local_50 + -lVar15; + do { + if (lVar7 < lVar15) { + *(undefined4 *)((longlong)&local_58 + lVar7 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar7 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + uVar3 = DAT_18006e3c8 >> 0x1f & 0x1f; + uVar11 = DAT_18006e3c8 + uVar3; + iVar4 = (int)uVar11 >> 5; + uVar11 = 0x1f - ((uVar11 & 0x1f) - uVar3); + bVar6 = (byte)uVar11; + if ((*(uint *)((longlong)&local_58 + (longlong)iVar4 * 4) >> (uVar11 & 0x1f) & 1) != 0) { + if ((*(uint *)((longlong)&local_58 + (longlong)iVar4 * 4) & ~(-1 << (bVar6 & 0x1f))) == 0) { + for (lVar7 = (longlong)(iVar4 + 1); lVar7 < 3; lVar7 = lVar7 + 1) { + if (*(int *)((longlong)&local_58 + lVar7 * 4) != 0) goto LAB_18004c4d8; + } + } + else { +LAB_18004c4d8: + uVar11 = DAT_18006e3c8 + -1 >> 0x1f & 0x1f; + iVar12 = DAT_18006e3c8 + -1 + uVar11; + iVar16 = iVar12 >> 5; + uVar3 = *(uint *)((longlong)&local_58 + (longlong)iVar16 * 4); + uVar9 = 1 << (0x1f - (((byte)iVar12 & 0x1f) - (char)uVar11) & 0x1f); + uVar11 = uVar3 + uVar9; + if ((uVar11 < uVar3) || (uVar5 = uVar13, uVar11 < uVar9)) { + uVar5 = 1; + } + *(uint *)((longlong)&local_58 + (longlong)iVar16 * 4) = uVar11; + lVar7 = (longlong)(iVar16 + -1); + if (-1 < iVar16 + -1) { + do { + if ((int)uVar5 == 0) break; + uVar3 = *(uint *)((longlong)&local_58 + lVar7 * 4); + uVar11 = uVar3 + 1; + if ((uVar11 < uVar3) || (uVar5 = uVar13, uVar11 == 0)) { + uVar5 = 1; + } + *(uint *)((longlong)&local_58 + lVar7 * 4) = uVar11; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + } + } + } + puVar1 = (uint *)((longlong)&local_58 + (longlong)iVar4 * 4); + *puVar1 = *puVar1 & -1 << (bVar6 & 0x1f); + lVar7 = (longlong)(iVar4 + 1); + if (lVar7 < 3) { + FUN_1800357d0((ulonglong *)((longlong)&local_58 + lVar7 * 4),0,(3 - lVar7) * 4); + } + uVar11 = DAT_18006e3cc + 1 >> 0x1f & 0x1f; + iVar4 = DAT_18006e3cc + 1 + uVar11; + bVar6 = ((byte)iVar4 & 0x1f) - (char)uVar11; + uVar5 = uVar13; + do { + uVar11 = *(uint *)((longlong)&local_58 + uVar13 * 4); + uVar13 = uVar13 + 1; + (&uStack_5c)[uVar13] = uVar11 >> (bVar6 & 0x1f) | (uint)uVar5; + uVar5 = (ulonglong)((~(-1 << (bVar6 & 0x1f)) & uVar11) << (0x20 - bVar6 & 0x1f)); + } while ((longlong)uVar13 < 3); + lVar15 = (longlong)(iVar4 >> 5); + lVar7 = 2; + piVar8 = local_50 + -lVar15; + do { + if (lVar7 < lVar15) { + *(undefined4 *)((longlong)&local_58 + lVar7 * 4) = 0; + } + else { + *(int *)((longlong)&local_58 + lVar7 * 4) = *piVar8; + } + piVar8 = piVar8 + -1; + lVar7 = lVar7 + -1; + } while (-1 < lVar7); + iVar17 = 0; + uVar13 = 2; + } + } + local_58._0_4_ = + iVar17 << (0x1fU - (char)DAT_18006e3cc & 0x1f) | -(uint)((uVar2 & 0x8000) != 0) & 0x80000000 + | (uint)local_58; + if (DAT_18006e3d0 == 0x40) { + param_2[1] = (uint)local_58; + *param_2 = local_58._4_4_; + return uVar13; + } + if (DAT_18006e3d0 == 0x20) { + *param_2 = (uint)local_58; + } + return uVar13; +} + + +================================================================== + +### EXPORT FUNC 18004c850 (2335 bytes) name=FUN_18004c850 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Removing unreachable block (ram,0x00018004cc37) */ +/* WARNING: Removing unreachable block (ram,0x00018004cc43) */ +/* WARNING: Removing unreachable block (ram,0x00018004cc4c) */ +/* WARNING: Removing unreachable block (ram,0x00018004cc1f) */ +/* WARNING: Removing unreachable block (ram,0x00018004d117) */ +/* WARNING: Removing unreachable block (ram,0x00018004cc15) */ +/* WARNING: Removing unreachable block (ram,0x00018004cc2d) */ +/* WARNING: Removing unreachable block (ram,0x00018004cccd) */ +/* WARNING: Removing unreachable block (ram,0x00018004d110) */ +/* WARNING: Removing unreachable block (ram,0x00018004ccd6) */ +/* WARNING: Removing unreachable block (ram,0x00018004cce0) */ +/* WARNING: Removing unreachable block (ram,0x00018004ccf1) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd10) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd13) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd1b) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd23) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd28) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd30) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0fa) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd3d) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0ee) */ +/* WARNING: Removing unreachable block (ram,0x00018004d121) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd4a) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd5e) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd60) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd6e) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd7d) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd81) */ +/* WARNING: Removing unreachable block (ram,0x00018004cd8f) */ +/* WARNING: Removing unreachable block (ram,0x00018004cda0) */ +/* WARNING: Removing unreachable block (ram,0x00018004cdbe) */ +/* WARNING: Removing unreachable block (ram,0x00018004cdd0) */ +/* WARNING: Removing unreachable block (ram,0x00018004cdf7) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce36) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce41) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0af) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce4c) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce53) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce5c) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce61) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce71) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce77) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce87) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce8c) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce9c) */ +/* WARNING: Removing unreachable block (ram,0x00018004cea2) */ +/* WARNING: Removing unreachable block (ram,0x00018004cea7) */ +/* WARNING: Removing unreachable block (ram,0x00018004ceb0) */ +/* WARNING: Removing unreachable block (ram,0x00018004cec0) */ +/* WARNING: Removing unreachable block (ram,0x00018004ced0) */ +/* WARNING: Removing unreachable block (ram,0x00018004cee0) */ +/* WARNING: Removing unreachable block (ram,0x00018004cefa) */ +/* WARNING: Removing unreachable block (ram,0x00018004ceff) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf05) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf0e) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf12) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf21) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf32) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf50) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf89) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf57) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf87) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf8e) */ +/* WARNING: Removing unreachable block (ram,0x00018004cf95) */ +/* WARNING: Removing unreachable block (ram,0x00018004cfa3) */ +/* WARNING: Removing unreachable block (ram,0x00018004cfaa) */ +/* WARNING: Removing unreachable block (ram,0x00018004cfae) */ +/* WARNING: Removing unreachable block (ram,0x00018004cfd1) */ +/* WARNING: Removing unreachable block (ram,0x00018004cff3) */ +/* WARNING: Removing unreachable block (ram,0x00018004cfdf) */ +/* WARNING: Removing unreachable block (ram,0x00018004cff8) */ +/* WARNING: Removing unreachable block (ram,0x00018004cffe) */ +/* WARNING: Removing unreachable block (ram,0x00018004d00e) */ +/* WARNING: Removing unreachable block (ram,0x00018004d067) */ +/* WARNING: Removing unreachable block (ram,0x00018004d017) */ +/* WARNING: Removing unreachable block (ram,0x00018004d024) */ +/* WARNING: Removing unreachable block (ram,0x00018004d049) */ +/* WARNING: Removing unreachable block (ram,0x00018004d037) */ +/* WARNING: Removing unreachable block (ram,0x00018004d059) */ +/* WARNING: Removing unreachable block (ram,0x00018004d06e) */ +/* WARNING: Removing unreachable block (ram,0x00018004d072) */ +/* WARNING: Removing unreachable block (ram,0x00018004d07f) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0b2) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0b7) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0bb) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0bf) */ +/* WARNING: Removing unreachable block (ram,0x00018004d08b) */ +/* WARNING: Removing unreachable block (ram,0x00018004ce7d) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0c7) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0cc) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0d5) */ +/* WARNING: Removing unreachable block (ram,0x00018004d0d7) */ +/* WARNING: Removing unreachable block (ram,0x00018004d127) */ + +undefined8 +FUN_18004c850(undefined2 *param_1,longlong *param_2,char *param_3,int param_4,int param_5, + int param_6,int param_7,longlong *param_8) + +{ + char cVar1; + DWORD *pDVar2; + undefined8 uVar3; + + if (param_8 == (longlong *)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0; + } + for (; (((cVar1 = *param_3, cVar1 == ' ' || (cVar1 == '\t')) || (cVar1 == '\n')) || + (cVar1 == '\r')); param_3 = param_3 + 1) { + } + /* WARNING: Could not recover jumptable at 0x00018004c936. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar3 = (*(code *)((ulonglong)switchD_18004c936::switchdataD_18004d170 + 0x180000000)) + ((code *)((ulonglong)switchD_18004c936::switchdataD_18004d170 + 0x180000000), + *param_3); + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18004d280 (3549 bytes) name=FUN_18004d280 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 FUN_18004d280(int *param_1,int param_2,uint param_3,short *param_4) + +{ + int *piVar1; + undefined8 uVar2; + uint uVar3; + uint uVar4; + undefined1 uVar5; + ushort uVar6; + errno_t eVar7; + undefined4 uVar8; + uint uVar9; + ushort uVar10; + uint uVar11; + ushort uVar12; + ushort uVar13; + longlong lVar14; + short *psVar15; + int iVar16; + uint uVar17; + uint uVar18; + uint uVar19; + char cVar20; + ushort uVar21; + uint uVar22; + uint uVar23; + int iVar24; + ushort *puVar25; + ulonglong uVar26; + short *psVar27; + short *psVar28; + uint uVar29; + ushort *puVar30; + int *piVar31; + undefined1 auStackY_e8 [32]; + short local_b4; + int local_a0; + byte local_88; + undefined1 uStack_87; + ushort uStack_86; + short local_84 [6]; + ushort local_78 [5]; + undefined1 local_6e; + byte bStack_6d; + int local_68; + int local_64; + undefined4 local_60; + undefined2 local_58; + int iStack_56; + undefined2 uStack_52; + int local_50; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStackY_e8; + uVar21 = *(ushort *)(param_1 + 2) & 0x7fff; + uVar22 = param_1[1]; + uVar12 = *(ushort *)(param_1 + 2) & 0x8000; + local_68 = -0x33333334; + local_64 = -0x33333334; + local_60 = 0x3ffbcccc; + iVar24 = *param_1; + if (uVar12 == 0) { + *(undefined1 *)(param_4 + 1) = 0x20; + } + else { + *(undefined1 *)(param_4 + 1) = 0x2d; + } + if (uVar21 == 0) { + if ((uVar22 == 0) && (iVar24 == 0)) { + uVar5 = 0x20; + if (uVar12 == 0x8000) { + uVar5 = 0x2d; + } + *param_4 = 0; + *(undefined1 *)((longlong)param_4 + 3) = 1; + *(undefined1 *)(param_4 + 2) = 0x30; + *(undefined1 *)((longlong)param_4 + 5) = 0; + *(undefined1 *)(param_4 + 1) = uVar5; + return 1; + } + } + else if (uVar21 == 0x7fff) { + *param_4 = 1; + if (((uVar22 == 0x80000000) && (iVar24 == 0)) || ((uVar22 >> 0x1e & 1) != 0)) { + if ((uVar12 == 0) || (uVar22 != 0xc0000000)) { + if ((uVar22 == 0x80000000) && (iVar24 == 0)) { + eVar7 = strcpy_s((char *)(param_4 + 2),0x16,"1#INF"); + if (eVar7 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + goto LAB_18004d46f; + } + } + else if (iVar24 == 0) { + eVar7 = strcpy_s((char *)(param_4 + 2),0x16,"1#IND"); + if (eVar7 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } +LAB_18004d46f: + *(undefined1 *)((longlong)param_4 + 3) = 5; + return 0; + } + eVar7 = strcpy_s((char *)(param_4 + 2),0x16,"1#QNAN"); + if (eVar7 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + } + else { + eVar7 = strcpy_s((char *)(param_4 + 2),0x16,"1#SNAN"); + if (eVar7 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + } + *(undefined1 *)((longlong)param_4 + 3) = 6; + return 0; + } + local_6e = (undefined1)uVar21; + bStack_6d = (byte)(uVar21 >> 8); + local_78[1] = (ushort)iVar24; + local_78[2] = (ushort)((uint)iVar24 >> 0x10); + uVar17 = 0; + local_78[3] = (ushort)uVar22; + local_78[4] = (ushort)(uVar22 >> 0x10); + local_78[0] = 0; + local_a0 = 5; + local_b4 = (short)(((uint)(uVar21 >> 8) + (uVar22 >> 0x18) * 2) * 0x4d + -0x134312f4 + + (uint)uVar21 * 0x4d10 >> 0x10); + lVar14 = 0x18006e490; + uVar22 = -(int)local_b4; + if (uVar22 == 0) { +LAB_18004d96d: + uVar18 = CONCAT22(local_78[3],local_78[2]); + uVar29 = iVar24 << 0x10; + } + else { + if ((int)uVar22 < 0) { + lVar14 = 0x18006e5f0; + uVar22 = (int)local_b4; + } + if (uVar22 == 0) goto LAB_18004d96d; + uVar18 = CONCAT22(local_78[3],local_78[2]); + uVar29 = iVar24 << 0x10; + do { + lVar14 = lVar14 + 0x54; + uVar23 = (int)uVar22 >> 3; + uVar22 = uVar22 & 7; + if (uVar22 != 0) { + piVar31 = (int *)(lVar14 + (longlong)(int)uVar22 * 0xc); + if (0x7fff < *(ushort *)(lVar14 + (longlong)(int)uVar22 * 0xc)) { + uVar2 = *(undefined8 *)piVar31; + piVar1 = piVar31 + 2; + piVar31 = (int *)&local_58; + local_50 = *piVar1; + uStack_52 = (undefined2)((ulonglong)uVar2 >> 0x30); + _local_58 = CONCAT42((int)((ulonglong)uVar2 >> 0x10) + -1,(short)uVar2); + } + uVar10 = *(ushort *)((longlong)piVar31 + 10) & 0x7fff; + local_84[0] = 0; + local_84[1] = 0; + uVar6 = CONCAT11(bStack_6d,local_6e) & 0x7fff; + local_84[2] = 0; + local_84[3] = 0; + uVar13 = (*(ushort *)((longlong)piVar31 + 10) ^ CONCAT11(bStack_6d,local_6e)) & 0x8000; + uVar21 = uVar6 + uVar10; + if (((uVar6 < 0x7fff) && (uVar10 < 0x7fff)) && (uVar21 < 0xbffe)) { + if (uVar21 < 0x3fc0) { + local_78[4] = 0; + local_6e = 0; + bStack_6d = 0; + local_78[2] = 0; + local_78[3] = 0; + local_78[0] = 0; + local_78[1] = 0; + uVar18 = uVar17; + uVar29 = uVar17; + } + else if (((uVar6 == 0) && + (uVar21 = uVar21 + 1, + (CONCAT13(bStack_6d,CONCAT12(local_6e,local_78[4])) & 0x7fffffff) == 0)) && + ((uVar18 == 0 && (uVar29 == 0)))) { + local_6e = 0; + bStack_6d = 0; + } + else if (((uVar10 == 0) && (uVar21 = uVar21 + 1, (piVar31[2] & 0x7fffffffU) == 0)) && + ((piVar31[1] == 0 && (*piVar31 == 0)))) { + local_78[4] = 0; + local_6e = 0; + bStack_6d = 0; + uVar18 = 0; + local_78[2] = 0; + local_78[3] = 0; + uVar29 = 0; + local_78[0] = 0; + local_78[1] = 0; + } + else { + uVar22 = 0; + psVar15 = local_84; + iVar24 = 5; + do { + if (0 < iVar24) { + puVar25 = (ushort *)((longlong)local_78 + (longlong)(int)(uVar22 * 2)); + puVar30 = (ushort *)(piVar31 + 2); + iVar16 = iVar24; + do { + uVar29 = (uint)*puVar25 * (uint)*puVar30; + if ((uVar22 & 1) == 0) { + uVar18 = *(uint *)(psVar15 + -2) + uVar29; + if ((uVar18 < *(uint *)(psVar15 + -2)) || (uVar9 = uVar17, uVar18 < uVar29)) { + uVar9 = 1; + } + *(uint *)(psVar15 + -2) = uVar18; + } + else { + uVar18 = *(uint *)(psVar15 + -2) + uVar29; + if ((uVar18 < *(uint *)(psVar15 + -2)) || (uVar9 = 0, uVar18 < uVar29)) { + uVar9 = 1; + } + *(uint *)(psVar15 + -2) = uVar18; + } + if (uVar9 != 0) { + *psVar15 = *psVar15 + 1; + } + iVar16 = iVar16 + -1; + puVar25 = puVar25 + 1; + puVar30 = puVar30 + -1; + } while (0 < iVar16); + } + iVar24 = iVar24 + -1; + psVar15 = psVar15 + 1; + uVar22 = uVar22 + 1; + } while (0 < iVar24); + uVar21 = uVar21 + 0xc002; + if ((short)uVar21 < 1) { + uVar18 = CONCAT22(local_84[3],local_84[2]); + uVar22 = CONCAT22(local_84[1],local_84[0]); + } + else { + uVar18 = CONCAT22(local_84[3],local_84[2]); + uVar22 = CONCAT22(local_84[1],local_84[0]); + do { + uStack_86 = 0; + uStack_87 = 0; + local_88 = 0; + uVar29 = 0; + if ((int)uVar18 < 0) { + uVar9 = uVar22; + if (0 < (short)uVar21) goto LAB_18004d79f; + break; + } + uVar29 = uVar18 * 2; + uVar9 = uVar22 * 2; + uVar18 = uVar29 | uVar22 >> 0x1f; + uVar21 = uVar21 - 1; + local_84[0] = (short)uVar9; + local_84[1] = (short)(uVar9 >> 0x10); + local_84[2] = (short)uVar18; + local_84[3] = (short)(uVar29 >> 0x10); + uVar22 = uVar9; + } while (0 < (short)uVar21); + } + uStack_86 = 0; + uStack_87 = 0; + local_88 = 0; + uVar29 = 0; + uVar21 = uVar21 - 1; + uVar9 = uVar22; + if ((short)uVar21 < 0) { + iVar24 = 0; + uVar26 = (ulonglong)(ushort)-uVar21; + uVar21 = 0; + do { + uVar11 = uVar18; + if ((local_88 & 1) != 0) { + iVar24 = iVar24 + 1; + } + uVar19 = uVar29 >> 1; + uVar9 = uVar22 >> 1; + uVar29 = uVar19 | uVar22 << 0x1f; + uVar18 = uVar11 >> 1; + uVar22 = uVar9 | uVar11 << 0x1f; + uVar26 = uVar26 - 1; + local_88 = (byte)uVar19; + uStack_87 = (undefined1)(uVar19 >> 8); + uStack_86 = (ushort)(uVar29 >> 0x10); + } while (uVar26 != 0); + local_84[0] = (short)uVar9; + local_84[1] = (short)(uVar22 >> 0x10); + uVar9 = CONCAT22(local_84[1],local_84[0]); + local_84[2] = (short)uVar18; + local_84[3] = (short)(uVar11 >> 0x11); + if (iVar24 == 0) goto LAB_18004d79f; + uVar6 = (ushort)uVar19 | 1; + uVar29 = CONCAT22(uStack_86,(ushort)uVar19) | 1; + } + else { +LAB_18004d79f: + uVar6 = CONCAT11(uStack_87,local_88); + } + local_84[1] = (short)(uVar9 >> 0x10); + local_84[0] = (short)uVar9; + if ((0x8000 < uVar6) || ((uVar29 & 0x1ffff) == 0x18000)) { + if (CONCAT22(local_84[0],uStack_86) == -1) { + uStack_86 = 0; + local_84[0] = 0; + if (CONCAT22(local_84[2],local_84[1]) == -1) { + local_84[1] = 0; + local_84[2] = 0; + if (local_84[3] == 0xffff) { + uVar22 = 0; + local_84[3] = 0x8000; + uVar18 = 0x80000000; + uVar21 = uVar21 + 1; + } + else { + uVar22 = 0; + local_84[3] = local_84[3] + 1; + uVar18 = (uint)(ushort)local_84[3] << 0x10; + } + } + else { + iVar24 = CONCAT22(local_84[2],local_84[1]) + 1; + local_84[1] = (short)iVar24; + local_84[2] = (short)((uint)iVar24 >> 0x10); + uVar18 = CONCAT22(local_84[3],local_84[2]); + uVar22 = iVar24 * 0x10000; + } + } + else { + iVar24 = CONCAT22(local_84[0],uStack_86) + 1; + uStack_86 = (ushort)iVar24; + local_84[0] = (short)((uint)iVar24 >> 0x10); + uVar22 = CONCAT22(local_84[1],local_84[0]); + } + } + if (uVar21 < 0x7fff) { + bStack_6d = (byte)(uVar21 >> 8) | (byte)(uVar13 >> 8); + local_78[1] = (ushort)uVar22; + local_78[2] = (ushort)(uVar22 >> 0x10); + local_78[0] = uStack_86; + uVar29 = CONCAT22(local_78[1],uStack_86); + local_78[3] = (ushort)uVar18; + local_78[4] = (ushort)(uVar18 >> 0x10); + uVar18 = CONCAT22(local_78[3],local_78[2]); + local_6e = (undefined1)uVar21; + } + else { + uVar18 = 0; + uVar8 = 0x7fff8000; + local_78[2] = 0; + local_78[3] = 0; + uVar29 = 0; + if (uVar13 != 0) { + uVar8 = 0xffff8000; + } + local_78[0] = 0; + local_78[1] = 0; + local_78[4] = (ushort)uVar8; + local_6e = (undefined1)((uint)uVar8 >> 0x10); + bStack_6d = (byte)((uint)uVar8 >> 0x18); + } + } + } + else { + uVar8 = 0x7fff8000; + if (uVar13 != 0) { + uVar8 = 0xffff8000; + } + uVar18 = 0; + local_78[2] = 0; + local_78[3] = 0; + uVar29 = 0; + local_78[0] = 0; + local_78[1] = 0; + local_78[4] = (ushort)uVar8; + local_6e = (undefined1)((uint)uVar8 >> 0x10); + bStack_6d = (byte)((uint)uVar8 >> 0x18); + } + } + uVar22 = uVar23; + } while (uVar23 != 0); + } + uVar23 = 1; + uVar22 = CONCAT13(bStack_6d,CONCAT12(local_6e,local_78[4])); + uVar21 = (ushort)(uVar22 >> 0x10); + if (uVar21 < 0x3fff) goto LAB_18004dce7; + local_b4 = local_b4 + 1; + iVar24 = 0; + local_84[0] = 0; + local_84[1] = 0; + local_84[2] = 0; + local_84[3] = 0; + uVar10 = (local_60._2_2_ ^ uVar21) & 0x8000; + uVar6 = (uVar21 & 0x7fff) + (local_60._2_2_ & 0x7fff); + if (((0x7ffe < (uVar21 & 0x7fff)) || (0x7ffe < (local_60._2_2_ & 0x7fff))) || (0xbffd < uVar6)) { + uVar18 = 0; + uVar29 = 0; + uVar8 = 0x7fff8000; + if (uVar10 != 0) { + uVar8 = 0xffff8000; + } + local_78[4] = (ushort)uVar8; + local_6e = (undefined1)((uint)uVar8 >> 0x10); + bStack_6d = (byte)((uint)uVar8 >> 0x18); + goto LAB_18004dce7; + } + if (uVar6 < 0x3fc0) { + local_78[4] = 0; + local_6e = 0; + bStack_6d = 0; + uVar18 = 0; + uVar29 = uVar17; + goto LAB_18004dce7; + } + if ((((uVar22 & 0x7fff0000) == 0) && + (uVar6 = uVar6 + 1, (CONCAT13(bStack_6d,CONCAT12(local_6e,local_78[4])) & 0x7fffffff) == 0)) + && ((uVar18 == 0 && (uVar29 == 0)))) { + local_6e = 0; + bStack_6d = 0; + goto LAB_18004dce7; + } + if ((((local_60 & 0x7fff0000) == 0) && (uVar6 = uVar6 + 1, (local_60 & 0x7fffffff) == 0)) && + ((local_64 == 0 && (local_68 == 0)))) { + local_78[4] = 0; + local_6e = 0; + bStack_6d = 0; + uVar18 = 0; + uVar29 = 0; + goto LAB_18004dce7; + } + uVar22 = 0; + psVar15 = local_84; + do { + if (0 < local_a0) { + puVar25 = (ushort *)&local_60; + puVar30 = (ushort *)((longlong)local_78 + (longlong)(int)(uVar22 * 2)); + iVar16 = local_a0; + do { + uVar29 = (uint)*puVar25 * (uint)*puVar30; + if ((uVar22 & 1) == 0) { + uVar18 = *(uint *)(psVar15 + -2) + uVar29; + if ((uVar18 < *(uint *)(psVar15 + -2)) || (uVar9 = uVar17, uVar18 < uVar29)) { + uVar9 = uVar23; + } + *(uint *)(psVar15 + -2) = uVar18; + } + else { + uVar18 = *(uint *)(psVar15 + -2) + uVar29; + if ((uVar18 < *(uint *)(psVar15 + -2)) || (uVar9 = 0, uVar18 < uVar29)) { + uVar9 = uVar23; + } + *(uint *)(psVar15 + -2) = uVar18; + } + if (uVar9 != 0) { + *psVar15 = *psVar15 + 1; + } + iVar16 = iVar16 + -1; + puVar30 = puVar30 + 1; + puVar25 = puVar25 + -1; + } while (0 < iVar16); + } + local_a0 = local_a0 + -1; + psVar15 = psVar15 + 1; + uVar22 = uVar22 + 1; + } while (0 < local_a0); + uVar6 = uVar6 + 0xc002; + if ((short)uVar6 < 1) { + uVar17 = CONCAT22(local_84[3],local_84[2]); + uVar22 = CONCAT22(local_84[1],local_84[0]); + } + else { + uVar17 = CONCAT22(local_84[3],local_84[2]); + uVar22 = CONCAT22(local_84[1],local_84[0]); + do { + uStack_86 = 0; + uStack_87 = 0; + local_88 = 0; + uVar29 = 0; + if ((int)uVar17 < 0) { + uVar18 = uVar22; + if (0 < (short)uVar6) goto LAB_18004db75; + break; + } + uVar29 = uVar17 * 2; + uVar18 = uVar22 * 2; + uVar17 = uVar29 | uVar22 >> 0x1f; + uVar6 = uVar6 - 1; + local_84[2] = (short)uVar17; + local_84[3] = (short)(uVar29 >> 0x10); + uVar22 = uVar18; + } while (0 < (short)uVar6); + } + uStack_86 = 0; + uStack_87 = 0; + local_88 = 0; + uVar29 = 0; + uVar6 = uVar6 - 1; + uVar18 = uVar22; + if ((short)uVar6 < 0) { + uVar26 = (ulonglong)(ushort)-uVar6; + uVar6 = 0; + do { + uVar9 = uVar17; + if ((local_88 & 1) != 0) { + iVar24 = iVar24 + 1; + } + uVar11 = uVar29 >> 1; + uVar18 = uVar22 >> 1; + uVar29 = uVar11 | uVar22 << 0x1f; + uVar17 = uVar9 >> 1; + uVar22 = uVar18 | uVar9 << 0x1f; + uVar26 = uVar26 - 1; + local_88 = (byte)uVar11; + uStack_87 = (undefined1)(uVar11 >> 8); + uStack_86 = (ushort)(uVar29 >> 0x10); + } while (uVar26 != 0); + local_84[0] = (short)uVar18; + local_84[1] = (short)(uVar22 >> 0x10); + uVar18 = CONCAT22(local_84[1],local_84[0]); + local_84[2] = (short)uVar17; + local_84[3] = (short)(uVar9 >> 0x11); + if (iVar24 == 0) goto LAB_18004db75; + uVar21 = (ushort)uVar11 | 1; + uVar29 = CONCAT22(uStack_86,(ushort)uVar11) | 1; + } + else { +LAB_18004db75: + uVar21 = CONCAT11(uStack_87,local_88); + } + local_84[1] = (short)(uVar18 >> 0x10); + local_84[0] = (short)uVar18; + if ((0x8000 < uVar21) || ((uVar29 & 0x1ffff) == 0x18000)) { + if (CONCAT22(local_84[0],uStack_86) == -1) { + uStack_86 = 0; + if (CONCAT22(local_84[2],local_84[1]) == -1) { + if (local_84[3] == 0xffff) { + uVar22 = 0; + uVar17 = 0x80000000; + uVar6 = uVar6 + 1; + } + else { + uVar22 = 0; + uVar17 = (uint)(ushort)(local_84[3] + 1) << 0x10; + } + } + else { + iVar24 = CONCAT22(local_84[2],local_84[1]) + 1; + local_84[2] = (short)((uint)iVar24 >> 0x10); + uVar17 = CONCAT22(local_84[3],local_84[2]); + uVar22 = iVar24 * 0x10000; + } + } + else { + iVar24 = CONCAT22(local_84[0],uStack_86) + 1; + uStack_86 = (ushort)iVar24; + local_84[0] = (short)((uint)iVar24 >> 0x10); + uVar22 = CONCAT22(local_84[1],local_84[0]); + } + } + if (uVar6 < 0x7fff) { + local_78[1] = (ushort)uVar22; + local_78[2] = (ushort)(uVar22 >> 0x10); + bStack_6d = (byte)(uVar6 >> 8) | (byte)(uVar10 >> 8); + local_78[3] = (ushort)uVar17; + local_78[4] = (ushort)(uVar17 >> 0x10); + uVar18 = CONCAT22(local_78[3],local_78[2]); + uVar29 = CONCAT22(local_78[1],uStack_86); + local_6e = (undefined1)uVar6; + } + else { + uVar8 = 0x7fff8000; + if (uVar10 != 0) { + uVar8 = 0xffff8000; + } + uVar18 = 0; + uVar29 = 0; + local_78[4] = (ushort)uVar8; + local_6e = (undefined1)((uint)uVar8 >> 0x10); + bStack_6d = (byte)((uint)uVar8 >> 0x18); + } +LAB_18004dce7: + *param_4 = local_b4; + if (((param_3 & 1) == 0) || (param_2 = param_2 + local_b4, 0 < param_2)) { + if (0x15 < param_2) { + param_2 = 0x15; + } + uVar22 = (uVar18 * 2 | uVar29 >> 0x1f) * 2; + uVar9 = (uVar22 | (uVar29 & 0x7fffffff) >> 0x1e) * 2; + uVar11 = (uVar9 | (uVar29 & 0x3fffffff) >> 0x1d) * 2; + uVar19 = (uVar11 | (uVar29 & 0x1fffffff) >> 0x1c) * 2; + uVar3 = (uVar19 | (uVar29 & 0xfffffff) >> 0x1b) * 2; + uVar4 = ((uVar3 | (uVar29 & 0x7ffffff) >> 0x1a) * 2 | (uVar29 & 0x3ffffff) >> 0x19) * 2; + uVar17 = uVar29 * 0x100; + uVar22 = ((((((((uint)local_78[4] * 2 | uVar18 >> 0x1f) * 2 | (uVar18 & 0x7fffffff) >> 0x1e) * 2 + | (uVar18 * 2 & 0x7fffffff) >> 0x1e) * 2 | (uVar22 & 0x7fffffff) >> 0x1e) * 2 | + (uVar9 & 0x7fffffff) >> 0x1e) * 2 | (uVar11 & 0x7fffffff) >> 0x1e) * 2 | + (uVar19 & 0x7fffffff) >> 0x1e) * 2; + uVar18 = uVar4 | (uVar29 & 0x1ffffff) >> 0x18; + uVar29 = uVar22 | (uVar3 & 0x7fffffff) >> 0x1e; + local_78[2] = (ushort)uVar18; + local_78[3] = (ushort)(uVar4 >> 0x10); + iVar24 = (CONCAT13(bStack_6d,CONCAT12(local_6e,local_78[4])) >> 0x10) - 0x3ffe; + local_78[4] = (ushort)uVar29; + local_6e = (undefined1)(uVar22 >> 0x10); + if ((iVar24 < 0) && (uVar22 = -iVar24 & 0xff, uVar22 != 0)) { + do { + uVar19 = uVar18 >> 1; + uVar9 = uVar29 << 0x1f; + uVar11 = uVar18 << 0x1f; + uVar22 = uVar22 - 1; + uVar29 = uVar29 >> 1; + uVar18 = uVar19 | uVar9; + uVar17 = uVar17 >> 1 | uVar11; + } while (0 < (int)uVar22); + local_78[2] = (ushort)uVar19; + local_78[3] = (ushort)(uVar18 >> 0x10); + local_78[4] = (ushort)uVar29; + local_6e = (undefined1)(uVar29 >> 0x10); + } + iVar24 = param_2 + 1; + psVar15 = param_4 + 2; + psVar27 = psVar15; + psVar28 = psVar15; + if (0 < iVar24) { + while( true ) { + uVar9 = (uVar18 * 2 | uVar17 >> 0x1f) * 2 | (uVar17 & 0x7fffffff) >> 0x1e; + uVar22 = uVar17 * 5; + uVar29 = (uVar29 * 2 | uVar18 >> 0x1f) * 2 | (uVar18 & 0x7fffffff) >> 0x1e; + if ((uVar22 < uVar17 * 4) || (uVar18 = uVar9, uVar22 < uVar17)) { + uVar18 = uVar9 + 1; + if ((uVar18 < uVar9) || (uVar9 = 0, uVar18 == 0)) { + uVar9 = uVar23; + } + if (uVar9 != 0) { + uVar29 = uVar29 + 1; + } + } + uVar9 = (uint)(CONCAT26(local_78[3],CONCAT24(local_78[2],uVar17)) >> 0x20); + uVar11 = uVar18 + uVar9; + if ((uVar11 < uVar18) || (uVar11 < uVar9)) { + uVar29 = uVar29 + 1; + } + uVar17 = uVar17 * 10; + iVar24 = iVar24 + -1; + psVar27 = (short *)((longlong)psVar28 + 1); + uVar18 = uVar11 * 2 | uVar22 >> 0x1f; + uVar22 = (uVar29 + CONCAT12(local_6e,local_78[4])) * 2; + local_78[4] = (ushort)uVar22 | (ushort)(uVar11 >> 0x1f); + local_78[2] = (ushort)uVar18; + local_78[3] = (ushort)(uVar11 * 2 >> 0x10); + local_6e = (undefined1)(uVar22 >> 0x10); + *(char *)psVar28 = (char)(uVar22 >> 0x18) + '0'; + if (iVar24 < 1) break; + uVar29 = uVar22 & 0xffffff | uVar11 >> 0x1f; + psVar28 = psVar27; + } + } + psVar28 = psVar27 + -1; + if (*(char *)((longlong)psVar27 + -1) < '5') { + for (; (psVar15 <= psVar28 && ((char)*psVar28 == '0')); + psVar28 = (short *)((longlong)psVar28 + -1)) { + } + if (psVar28 < psVar15) { + uVar5 = 0x20; + if (uVar12 == 0x8000) { + uVar5 = 0x2d; + } + *param_4 = 0; + *(undefined1 *)((longlong)param_4 + 3) = 1; + *(char *)psVar15 = '0'; + *(undefined1 *)((longlong)param_4 + 5) = 0; + *(undefined1 *)(param_4 + 1) = uVar5; + return 1; + } + } + else { + for (; (psVar15 <= psVar28 && ((char)*psVar28 == '9')); + psVar28 = (short *)((longlong)psVar28 + -1)) { + *(char *)psVar28 = '0'; + } + if (psVar28 < psVar15) { + psVar28 = (short *)((longlong)psVar28 + 1); + *param_4 = *param_4 + 1; + } + *(char *)psVar28 = (char)*psVar28 + '\x01'; + } + cVar20 = ((char)psVar28 - (char)param_4) + -3; + *(char *)((longlong)param_4 + 3) = cVar20; + *(undefined1 *)((longlong)cVar20 + 4 + (longlong)param_4) = 0; + } + else { + uVar5 = 0x20; + if (uVar12 == 0x8000) { + uVar5 = 0x2d; + } + *param_4 = 0; + *(undefined1 *)((longlong)param_4 + 3) = 1; + *(undefined1 *)(param_4 + 2) = 0x30; + *(undefined1 *)((longlong)param_4 + 5) = 0; + *(undefined1 *)(param_4 + 1) = uVar5; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18004e080 (60 bytes) name=__initconout + +/* Library Function - Single Match + __initconout + + Library: Visual Studio 2005 Release */ + +void __cdecl __initconout(void) + +{ + DAT_18006e3e0 = CreateFileA("CONOUT$",0x40000000,3,(LPSECURITY_ATTRIBUTES)0x0,3,0,(HANDLE)0x0); + return; +} + + +================================================================== + +### EXPORT FUNC 18004e0c0 (59 bytes) name=__termcon + +/* Library Function - Single Match + __termcon + + Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release */ + +void __termcon(void) + +{ + if ((DAT_18006e3e0 != (HANDLE)0xffffffffffffffff) && (DAT_18006e3e0 != (HANDLE)0xfffffffffffffffe) + ) { + CloseHandle(DAT_18006e3e0); + } + if ((DAT_18006e3d8 != (HANDLE)0xffffffffffffffff) && (DAT_18006e3d8 != (HANDLE)0xfffffffffffffffe) + ) { + CloseHandle(DAT_18006e3d8); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18004e100 (152 bytes) name=FUN_18004e100 + +undefined4 FUN_18004e100(FILE *param_1) + +{ + undefined4 uVar1; + uint uVar2; + DWORD *pDVar3; + undefined8 uVar4; + ulonglong uVar5; + + uVar1 = 0xffffffff; + if (param_1 == (FILE *)0x0) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + if ((param_1->_flag & 0x83) != 0) { + uVar4 = FUN_18004a800((int *)param_1); + uVar1 = (undefined4)uVar4; + _freebuf(param_1); + uVar2 = FUN_180047880((longlong)param_1); + uVar5 = FUN_18004fdd0(uVar2); + if ((int)uVar5 < 0) { + uVar1 = 0xffffffff; + } + else if (param_1->_tmpfname != (char *)0x0) { + FUN_180034a70(param_1->_tmpfname); + param_1->_tmpfname = (char *)0x0; + } + } + param_1->_flag = 0; + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18004e1a0 (124 bytes) name=FUN_18004e1a0 + +undefined4 FUN_18004e1a0(FILE *param_1) + +{ + undefined4 uVar1; + DWORD *pDVar2; + + uVar1 = 0xffffffff; + if (param_1 == (FILE *)0x0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + uVar1 = 0xffffffff; + } + else if ((param_1->_flag & 0x40) == 0) { + FUN_180047760((ulonglong)param_1); + uVar1 = FUN_18004e100(param_1); + FUN_180047810((ulonglong)param_1); + } + else { + param_1->_flag = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18004e220 (24 bytes) name=FUN_18004e220 + +void FUN_18004e220(undefined8 param_1,longlong param_2) + +{ + FUN_180047810(*(ulonglong *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004e240 (281 bytes) name=FUN_18004e240 + +undefined4 FUN_18004e240(uint param_1) + +{ + BOOL BVar1; + DWORD DVar2; + DWORD *pDVar3; + HANDLE hFile; + undefined4 uVar4; + + if (param_1 == 0xfffffffe) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 9; + return 0xffffffff; + } + if (((int)param_1 < 0) || (DAT_1800db4c8 <= param_1)) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 9; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 9; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + FUN_18004a4e0(param_1); + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) != 0) { + hFile = (HANDLE)FUN_18004a440(param_1); + BVar1 = FlushFileBuffers(hFile); + if (BVar1 != 0) { + uVar4 = 0; + goto LAB_18004e31c; + } + DVar2 = GetLastError(); + uVar4 = 0; + if (DVar2 == 0) goto LAB_18004e31c; + pDVar3 = FUN_180035b70(); + *pDVar3 = DVar2; + } + pDVar3 = FUN_180035b40(); + *pDVar3 = 9; + uVar4 = 0xffffffff; +LAB_18004e31c: + FUN_18004a5b0(param_1); + return uVar4; +} + + +================================================================== + +### EXPORT FUNC 18004e360 (23 bytes) name=FUN_18004e360 + +void FUN_18004e360(undefined8 param_1,longlong param_2) + +{ + FUN_18004a5b0(*(uint *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004e380 (2305 bytes) name=FUN_18004e380 + +int FUN_18004e380(uint param_1,LPWSTR param_2,uint param_3) + +{ + byte *pbVar1; + byte bVar2; + longlong lVar3; + WCHAR WVar4; + BOOL BVar5; + int iVar6; + DWORD DVar7; + DWORD *pDVar8; + ulonglong uVar9; + LPWSTR lpMultiByteStr; + undefined8 uVar10; + LPWSTR pWVar11; + uint uVar12; + uint nNumberOfBytesToRead; + int iVar13; + LPWSTR pWVar14; + int iVar15; + LPWSTR pWVar16; + WCHAR *pWVar17; + longlong lVar18; + char cVar19; + char local_res18 [8]; + undefined2 local_res20; + DWORD local_58; + uint local_54; + + iVar13 = -2; + local_54 = param_3; + if (param_1 == 0xfffffffe) { + pDVar8 = FUN_180035b70(); + *pDVar8 = 0; + pDVar8 = FUN_180035b40(); + *pDVar8 = 9; + return -1; + } + if (((int)param_1 < 0) || (DAT_1800db4c8 <= param_1)) { + pDVar8 = FUN_180035b70(); + *pDVar8 = 0; + pDVar8 = FUN_180035b40(); + *pDVar8 = 9; + FUN_1800384e0(0,0,0,0,0); + return -1; + } + uVar9 = (ulonglong)(param_1 & 0x1f); + lVar18 = (longlong)(int)param_1 >> 5; + bVar2 = *(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50); + if ((bVar2 & 1) == 0) { + pDVar8 = FUN_180035b70(); + *pDVar8 = 0; + pDVar8 = FUN_180035b40(); + *pDVar8 = 9; + } + else { + if (param_3 < 0x80000000) { + if ((param_3 == 0) || ((bVar2 & 2) != 0)) { + return 0; + } + if (param_2 == (LPWSTR)0x0) { + pDVar8 = FUN_180035b70(); + *pDVar8 = 0; + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return -1; + } + cVar19 = (char)(*(char *)((&DAT_1800db4e0)[lVar18] + 0x38 + uVar9 * 0x50) * '\x02') >> 1; + if (cVar19 == '\x01') { + if ((~param_3 & 1) == 0) { +LAB_18004e4ec: + pDVar8 = FUN_180035b70(); + *pDVar8 = 0; + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return -1; + } + uVar12 = param_3 >> 1; + if (param_3 >> 1 < 4) { + uVar12 = 4; + } + lpMultiByteStr = (LPWSTR)FUN_180040de0((ulonglong)uVar12); + if (lpMultiByteStr == (LPWSTR)0x0) { + pDVar8 = FUN_180035b40(); + *pDVar8 = 0xc; + pDVar8 = FUN_180035b70(); + *pDVar8 = 8; + return -1; + } + uVar10 = FUN_180046a60(param_1,0,1); + *(undefined8 *)((&DAT_1800db4e0)[lVar18] + 0x40 + uVar9 * 0x50) = uVar10; + } + else { + lpMultiByteStr = param_2; + uVar12 = param_3; + if (cVar19 == '\x02') { + if ((~param_3 & 1) == 0) goto LAB_18004e4ec; + uVar12 = param_3 & 0xfffffffe; + } + } + pWVar11 = lpMultiByteStr; + nNumberOfBytesToRead = uVar12; + iVar15 = 0; + if ((((*(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50) & 0x48) != 0) && + (bVar2 = *(byte *)((&DAT_1800db4e0)[lVar18] + 9 + uVar9 * 0x50), iVar15 = 0, bVar2 != 10)) + && (uVar12 != 0)) { + *(byte *)lpMultiByteStr = bVar2; + nNumberOfBytesToRead = uVar12 - 1; + pWVar11 = (LPWSTR)((longlong)lpMultiByteStr + 1); + iVar15 = 1; + *(undefined1 *)((&DAT_1800db4e0)[lVar18] + 9 + uVar9 * 0x50) = 10; + if (((cVar19 != '\0') && + (bVar2 = *(byte *)((&DAT_1800db4e0)[lVar18] + 0x39 + uVar9 * 0x50), bVar2 != 10)) && + (nNumberOfBytesToRead != 0)) { + *(byte *)pWVar11 = bVar2; + pWVar11 = lpMultiByteStr + 1; + nNumberOfBytesToRead = uVar12 - 2; + iVar15 = 2; + *(undefined1 *)((&DAT_1800db4e0)[lVar18] + 0x39 + uVar9 * 0x50) = 10; + if (((cVar19 == '\x01') && + (bVar2 = *(byte *)((&DAT_1800db4e0)[lVar18] + 0x3a + uVar9 * 0x50), bVar2 != 10)) && + (nNumberOfBytesToRead != 0)) { + *(byte *)pWVar11 = bVar2; + pWVar11 = (LPWSTR)((longlong)lpMultiByteStr + 3); + iVar15 = 3; + nNumberOfBytesToRead = uVar12 - 3; + *(undefined1 *)((&DAT_1800db4e0)[lVar18] + 0x3a + uVar9 * 0x50) = 10; + } + } + } + BVar5 = ReadFile(*(HANDLE *)((&DAT_1800db4e0)[lVar18] + uVar9 * 0x50),pWVar11, + nNumberOfBytesToRead,&local_58,(LPOVERLAPPED)0x0); + if (((BVar5 == 0) || ((int)local_58 < 0)) || + ((ulonglong)nNumberOfBytesToRead < (ulonglong)(longlong)(int)local_58)) { + DVar7 = GetLastError(); + if (DVar7 == 5) { + pDVar8 = FUN_180035b40(); + *pDVar8 = 9; + pDVar8 = FUN_180035b70(); + *pDVar8 = 5; + iVar13 = -1; + } + else { + iVar13 = 0; + if (DVar7 != 0x6d) { + _dosmaperr(DVar7); + iVar13 = -1; + } + } + } + else { + iVar15 = iVar15 + local_58; + lVar3 = (&DAT_1800db4e0)[lVar18]; + if ((*(byte *)(lVar3 + 8 + uVar9 * 0x50) & 0x80) != 0) { + iVar13 = (int)lpMultiByteStr; + if (cVar19 == '\x02') { + if ((local_58 == 0) || (*lpMultiByteStr != L'\n')) { + pbVar1 = (byte *)(lVar3 + 8 + uVar9 * 0x50); + *pbVar1 = *pbVar1 & 0xfb; + } + else { + pbVar1 = (byte *)(lVar3 + 8 + uVar9 * 0x50); + *pbVar1 = *pbVar1 | 4; + } + pWVar11 = lpMultiByteStr; + pWVar17 = lpMultiByteStr; + while (pWVar16 = pWVar11, + pWVar17 < (WCHAR *)((longlong)iVar15 + (longlong)lpMultiByteStr)) { + WVar4 = *pWVar17; + if (WVar4 == L'\x1a') { + if ((*(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50) & 0x40) == 0) { + pbVar1 = (byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50); + *pbVar1 = *pbVar1 | 2; + } + else { + pWVar16 = pWVar11 + 1; + *pWVar11 = *pWVar17; + } + break; + } + if (WVar4 == L'\r') { + if (pWVar17 < (WCHAR *)((longlong)iVar15 + (longlong)lpMultiByteStr) + -1) { + if (pWVar17[1] == L'\n') { + *pWVar11 = L'\n'; + pWVar11 = pWVar11 + 1; + pWVar17 = pWVar17 + 2; + } + else { + *pWVar11 = L'\r'; + pWVar11 = pWVar11 + 1; + pWVar17 = pWVar17 + 1; + } + } + else { + pWVar17 = pWVar17 + 1; + BVar5 = ReadFile(*(HANDLE *)((&DAT_1800db4e0)[lVar18] + uVar9 * 0x50),&local_res20 + ,2,&local_58,(LPOVERLAPPED)0x0); + if (((BVar5 == 0) && (DVar7 = GetLastError(), DVar7 != 0)) || (local_58 == 0)) { + *pWVar11 = L'\r'; + pWVar11 = pWVar11 + 1; + } + else if ((*(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50) & 0x48) == 0) { + if ((pWVar11 == lpMultiByteStr) && (local_res20 == 10)) { + *pWVar11 = L'\n'; + pWVar11 = pWVar11 + 1; + } + else { + FUN_180046a60(param_1,0xfffffffffffffffe,1); + if (local_res20 != 10) { + *pWVar11 = L'\r'; + pWVar11 = pWVar11 + 1; + } + } + } + else if (local_res20 == 10) { + *pWVar11 = L'\n'; + pWVar11 = pWVar11 + 1; + } + else { + *pWVar11 = L'\r'; + *(undefined1 *)((&DAT_1800db4e0)[lVar18] + 9 + uVar9 * 0x50) = + (undefined1)local_res20; + *(undefined1 *)((&DAT_1800db4e0)[lVar18] + 0x39 + uVar9 * 0x50) = + local_res20._1_1_; + pWVar11 = pWVar11 + 1; + *(undefined1 *)((&DAT_1800db4e0)[lVar18] + 0x3a + uVar9 * 0x50) = 10; + } + } + } + else { + *pWVar11 = WVar4; + pWVar11 = pWVar11 + 1; + pWVar17 = pWVar17 + 1; + } + } + iVar15 = (int)pWVar16 - iVar13; + iVar13 = -2; + } + else { + if ((local_58 == 0) || ((byte)*lpMultiByteStr != 10)) { + pbVar1 = (byte *)(lVar3 + 8 + uVar9 * 0x50); + *pbVar1 = *pbVar1 & 0xfb; + } + else { + pbVar1 = (byte *)(lVar3 + 8 + uVar9 * 0x50); + *pbVar1 = *pbVar1 | 4; + } + pWVar11 = lpMultiByteStr; + pWVar16 = lpMultiByteStr; + while (pWVar14 = pWVar11, + pWVar16 < (LPWSTR)((longlong)iVar15 + (longlong)lpMultiByteStr)) { + bVar2 = (byte)*pWVar16; + if (bVar2 == 0x1a) { + if ((*(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50) & 0x40) == 0) { + pbVar1 = (byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50); + *pbVar1 = *pbVar1 | 2; + } + else { + pWVar14 = (LPWSTR)((longlong)pWVar11 + 1); + *(byte *)pWVar11 = (byte)*pWVar16; + } + break; + } + if (bVar2 == 0xd) { + if (pWVar16 < (LPWSTR)(((longlong)iVar15 + (longlong)lpMultiByteStr) - 1U)) { + if (*(byte *)((longlong)pWVar16 + 1) == 10) { + *(byte *)pWVar11 = 10; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + pWVar16 = pWVar16 + 1; + } + else { + *(byte *)pWVar11 = 0xd; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + pWVar16 = (LPWSTR)((longlong)pWVar16 + 1); + } + } + else { + pWVar16 = (LPWSTR)((longlong)pWVar16 + 1); + BVar5 = ReadFile(*(HANDLE *)((&DAT_1800db4e0)[lVar18] + uVar9 * 0x50),local_res18, + 1,&local_58,(LPOVERLAPPED)0x0); + if (((BVar5 == 0) && (DVar7 = GetLastError(), DVar7 != 0)) || (local_58 == 0)) { + *(byte *)pWVar11 = 0xd; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + } + else if ((*(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50) & 0x48) == 0) { + if ((pWVar11 == lpMultiByteStr) && (local_res18[0] == '\n')) { + *(byte *)pWVar11 = 10; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + } + else { + FUN_180046a60(param_1,0xffffffffffffffff,1); + if (local_res18[0] != '\n') { + *(byte *)pWVar11 = 0xd; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + } + } + } + else if (local_res18[0] == '\n') { + *(byte *)pWVar11 = 10; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + } + else { + *(byte *)pWVar11 = 0xd; + *(char *)((&DAT_1800db4e0)[lVar18] + 9 + uVar9 * 0x50) = local_res18[0]; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + } + } + } + else { + *(byte *)pWVar11 = bVar2; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + pWVar16 = (LPWSTR)((longlong)pWVar16 + 1); + } + } + iVar15 = (int)pWVar14 - iVar13; + if (cVar19 == '\x01') { + if (iVar15 == 0) { + iVar13 = -2; + } + else { + if ((char)*(byte *)((longlong)pWVar14 + -1) < '\0') { + iVar6 = 1; + cVar19 = (&DAT_18006e3f0)[*(byte *)((longlong)pWVar14 + -1)]; + pWVar11 = pWVar14; + while (((pWVar14 = (LPWSTR)((longlong)pWVar11 + -1), cVar19 == '\0' && (iVar6 < 5) + ) && (lpMultiByteStr <= pWVar14))) { + iVar6 = iVar6 + 1; + cVar19 = (&DAT_18006e3f0)[(byte)pWVar11[-1]]; + pWVar11 = pWVar14; + } + if ((&DAT_18006e3f0)[*(byte *)pWVar14] == '\0') { + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x2a; + iVar13 = -1; + goto LAB_18004ec2a; + } + if ((char)(&DAT_18006e3f0)[*(byte *)pWVar14] + 1 == iVar6) { + pWVar14 = (LPWSTR)((longlong)pWVar14 + (longlong)iVar6); + } + else if ((*(byte *)((&DAT_1800db4e0)[lVar18] + 8 + uVar9 * 0x50) & 0x48) == 0) { + FUN_180046a60(param_1,(longlong)-iVar6,1); + } + else { + *(byte *)((&DAT_1800db4e0)[lVar18] + 9 + uVar9 * 0x50) = *(byte *)pWVar14; + if (1 < iVar6) { + WVar4 = *pWVar11; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + *(byte *)((&DAT_1800db4e0)[lVar18] + 0x39 + uVar9 * 0x50) = (byte)WVar4; + } + if (iVar6 == 3) { + WVar4 = *pWVar11; + pWVar11 = (LPWSTR)((longlong)pWVar11 + 1); + *(byte *)((&DAT_1800db4e0)[lVar18] + 0x3a + uVar9 * 0x50) = (byte)WVar4; + } + pWVar14 = (LPWSTR)((longlong)pWVar11 - (longlong)iVar6); + } + } + iVar13 = (int)pWVar14 - iVar13; + iVar6 = MultiByteToWideChar(0xfde9,0,(LPCSTR)lpMultiByteStr,iVar13,param_2, + local_54 >> 1); + if (iVar6 == 0) { + DVar7 = GetLastError(); + _dosmaperr(DVar7); + iVar15 = 0; + iVar13 = -1; + } + else { + iVar15 = iVar6 * 2; + *(uint *)((&DAT_1800db4e0)[lVar18] + 0x48 + uVar9 * 0x50) = + (uint)(iVar6 != iVar13); + iVar13 = -2; + } + } + } + else { + iVar13 = -2; + } + } + } + } +LAB_18004ec2a: + if (lpMultiByteStr != param_2) { + FUN_180034a70(lpMultiByteStr); + } + if (iVar13 != -2) { + return iVar13; + } + return iVar15; + } + pDVar8 = FUN_180035b70(); + *pDVar8 = 0; + pDVar8 = FUN_180035b40(); + *pDVar8 = 0x16; + } + FUN_1800384e0(0,0,0,0,0); + return -1; +} + + +================================================================== + +### EXPORT FUNC 18004ec90 (375 bytes) name=FUN_18004ec90 + +int FUN_18004ec90(uint param_1,LPWSTR param_2,uint param_3) + +{ + int iVar1; + DWORD *pDVar2; + + if (param_1 == 0xfffffffe) { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + iVar1 = -1; + } + else if (((int)param_1 < 0) || (DAT_1800db4c8 <= param_1)) { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + FUN_1800384e0(0,0,0,0,0); + iVar1 = -1; + } + else if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + FUN_1800384e0(0,0,0,0,0); + iVar1 = -1; + } + else if (param_3 < 0x80000000) { + FUN_18004a4e0(param_1); + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar2 = FUN_180035b40(); + *pDVar2 = 9; + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + iVar1 = -1; + } + else { + iVar1 = FUN_18004e380(param_1,param_2,param_3); + } + FUN_18004a5b0(param_1); + } + else { + pDVar2 = FUN_180035b70(); + *pDVar2 = 0; + pDVar2 = FUN_180035b40(); + *pDVar2 = 0x16; + FUN_1800384e0(0,0,0,0,0); + iVar1 = -1; + } + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18004ee10 (23 bytes) name=FUN_18004ee10 + +void FUN_18004ee10(undefined8 param_1,longlong param_2) + +{ + FUN_18004a5b0(*(uint *)(param_2 + 0x60)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004ee30 (1234 bytes) name=FUN_18004ee30 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +int FUN_18004ee30(longlong *param_1,LCID param_2,DWORD param_3,byte *param_4,uint param_5, + byte *param_6,uint param_7,UINT param_8) + +{ + ulonglong uVar1; + undefined1 auVar2 [16]; + undefined1 auVar3 [16]; + longlong lVar4; + LCID Locale; + int iVar5; + DWORD DVar6; + BOOL BVar7; + int cchCount1; + int iVar8; + int iVar9; + UINT UVar10; + BYTE *pBVar11; + ulonglong uVar12; + undefined4 *puVar13; + undefined8 uVar14; + byte *pbVar15; + byte *pbVar16; + uint uVar17; + undefined4 *puVar18; + undefined1 *puVar19; + undefined1 *puVar20; + undefined1 *puVar21; + PCNZWCH lpString1; + UINT UVar22; + byte *pbVar23; + undefined1 auStackY_a8 [32]; + DWORD local_78; + LCID LStack_74; + byte *local_70; + _cpinfo local_68; + ulonglong local_50; + + pbVar23 = param_6; + puVar19 = auStackY_a8; + puVar20 = auStackY_a8; + puVar21 = auStackY_a8; + local_50 = DAT_18006cea0 ^ (ulonglong)&local_78; + local_70 = param_6; + local_78 = param_3; + LStack_74 = param_2; + if (DAT_180073664 == 0) { + iVar5 = CompareStringW(0,0,L"",1,L"",1); + if (iVar5 == 0) { + DVar6 = GetLastError(); + if (DVar6 == 0x78) { + DAT_180073664 = 2; + } + } + else { + DAT_180073664 = 1; + } + } + pbVar15 = param_4; + uVar17 = param_5; + if ((int)param_5 < 1) { + if (-2 < (int)param_5) goto LAB_18004ef0e; + } + else { + do { + uVar17 = uVar17 - 1; + if (*pbVar15 == 0) goto LAB_18004eef3; + pbVar15 = pbVar15 + 1; + } while (uVar17 != 0); + uVar17 = 0xffffffff; +LAB_18004eef3: + param_5 = param_5 + (-1 - uVar17); +LAB_18004ef0e: + pbVar15 = pbVar23; + uVar17 = param_7; + if ((int)param_7 < 1) { + puVar21 = auStackY_a8; + if ((int)param_7 < -1) goto LAB_18004f29d; + } + else { + do { + uVar17 = uVar17 - 1; + if (*pbVar15 == 0) goto LAB_18004ef33; + pbVar15 = pbVar15 + 1; + } while (uVar17 != 0); + uVar17 = 0xffffffff; +LAB_18004ef33: + param_7 = param_7 + (-1 - uVar17); + } + if ((DAT_180073664 == 2) || (DAT_180073664 == 0)) { + pbVar15 = (byte *)0x0; + if (param_2 == 0) { + param_2 = *(LCID *)(*param_1 + 0x14); + } + UVar22 = param_8; + if (param_8 == 0) { + UVar22 = *(UINT *)(*param_1 + 4); + } + uVar14 = FUN_180048c40(param_2); + UVar10 = (UINT)uVar14; + puVar21 = auStackY_a8; + if (UVar10 != 0xffffffff) { + pbVar16 = pbVar15; + if (UVar10 == UVar22) { +LAB_18004f2a7: + iVar5 = CompareStringA(param_2,local_78,(PCNZCH)param_4,param_5,(PCNZCH)pbVar23,param_7); + puVar21 = auStackY_a8; + if (pbVar15 != (byte *)0x0) { + FUN_180034a70(pbVar15); + FUN_180034a70(pbVar16); + puVar21 = auStackY_a8; + } + goto LAB_18004f2e5; + } + pbVar15 = FUN_180048cb0(UVar22,UVar10,(LPCSTR)param_4,¶m_5,(LPVOID)0x0,0); + puVar21 = auStackY_a8; + if (pbVar15 != (byte *)0x0) { + pbVar16 = FUN_180048cb0(UVar22,UVar10,(LPCSTR)pbVar23,¶m_7,(LPVOID)0x0,0); + param_4 = pbVar15; + pbVar23 = pbVar16; + if (pbVar16 != (byte *)0x0) goto LAB_18004f2a7; + FUN_180034a70(pbVar15); + puVar21 = auStackY_a8; + } + } + } + else { + puVar21 = auStackY_a8; + if (DAT_180073664 == 1) { + iVar9 = 0; + UVar22 = param_8; + if (param_8 == 0) { + UVar22 = *(UINT *)(*param_1 + 4); + } + if ((param_5 == 0) || (param_7 == 0)) { + if (param_5 == param_7) { +LAB_18004ef8e: + iVar5 = 2; + puVar21 = auStackY_a8; + goto LAB_18004f2e5; + } + if ((int)param_7 < 2) { + if ((int)param_5 < 2) { + BVar7 = GetCPInfo(UVar22,&local_68); + puVar21 = auStackY_a8; + if (BVar7 == 0) goto LAB_18004f29d; + if ((int)param_5 < 1) { + if ((int)param_7 < 1) goto LAB_18004f03c; + if (1 < local_68.MaxCharSize) { + pBVar11 = local_68.LeadByte; + while ((local_68.LeadByte[0] != 0 && (pBVar11[1] != 0))) { + if ((*pBVar11 <= *pbVar23) && (*pbVar23 <= pBVar11[1])) goto LAB_18004ef8e; + pBVar11 = pBVar11 + 2; + local_68.LeadByte[0] = *pBVar11; + } + } + goto LAB_18004ef9a; + } + if (1 < local_68.MaxCharSize) { + pBVar11 = local_68.LeadByte; + while ((local_68.LeadByte[0] != 0 && (pBVar11[1] != 0))) { + if ((*pBVar11 <= *param_4) && (*param_4 <= pBVar11[1])) goto LAB_18004ef8e; + pBVar11 = pBVar11 + 2; + local_68.LeadByte[0] = *pBVar11; + } + } + } + iVar5 = 3; + puVar21 = auStackY_a8; + } + else { +LAB_18004ef9a: + iVar5 = 1; + puVar21 = auStackY_a8; + } + goto LAB_18004f2e5; + } +LAB_18004f03c: + cchCount1 = MultiByteToWideChar(UVar22,9,(LPCSTR)param_4,param_5,(LPWSTR)0x0,0); + puVar21 = auStackY_a8; + if (((cchCount1 != 0) && (puVar21 = auStackY_a8, 0 < cchCount1)) && + (auVar2._8_8_ = 0, auVar2._0_8_ = (longlong)cchCount1, puVar21 = auStackY_a8, + 1 < SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar2,0))) { + lVar4 = (longlong)cchCount1 * 2; + uVar1 = lVar4 + 0x10; + if (uVar1 < 0x401) { + uVar12 = lVar4 + 0x1f; + if (uVar12 <= uVar1) { + uVar12 = 0xffffffffffffff0; + } + lVar4 = -(uVar12 & 0xfffffffffffffff0); + puVar19 = auStackY_a8 + lVar4; + puVar13 = (undefined4 *)((longlong)&local_78 + lVar4); + puVar21 = auStackY_a8 + lVar4; + if (puVar13 == (undefined4 *)0x0) goto LAB_18004f29d; + *puVar13 = 0xcccc; +LAB_18004f0d5: + lpString1 = (PCNZWCH)(puVar13 + 4); + puVar20 = puVar19; + } + else { + puVar13 = FUN_1800349a0(uVar1); + lpString1 = (PCNZWCH)0x0; + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = 0xdddd; + goto LAB_18004f0d5; + } + } + puVar21 = puVar20; + if (lpString1 != (PCNZWCH)0x0) { + *(int *)(puVar20 + 0x28) = cchCount1; + *(PCNZWCH *)(puVar20 + 0x20) = lpString1; + *(undefined8 *)(puVar20 + -8) = 0x18004f104; + iVar8 = MultiByteToWideChar(UVar22,1,(LPCSTR)param_4,param_5,*(LPWSTR *)(puVar20 + 0x20) + ,*(int *)(puVar20 + 0x28)); + pbVar23 = local_70; + iVar5 = iVar9; + if (iVar8 != 0) { + *(undefined4 *)(puVar20 + 0x28) = 0; + *(undefined8 *)(puVar20 + 0x20) = 0; + *(undefined8 *)(puVar20 + -8) = 0x18004f131; + iVar8 = MultiByteToWideChar(UVar22,9,(LPCSTR)pbVar23,param_7, + *(LPWSTR *)(puVar20 + 0x20),*(int *)(puVar20 + 0x28)); + if ((0 < iVar8) && + (auVar3._8_8_ = 0, auVar3._0_8_ = (longlong)iVar8, + 1 < SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffe0)) / auVar3,0))) { + lVar4 = (longlong)iVar8 * 2; + uVar1 = lVar4 + 0x10; + iVar5 = 0; + if (uVar1 < 0x401) { + uVar12 = lVar4 + 0x1f; + if (uVar12 <= uVar1) { + uVar12 = 0xffffffffffffff0; + } + *(undefined8 *)(puVar20 + -8) = 0x18004f175; + lVar4 = -(uVar12 & 0xfffffffffffffff0); + puVar21 = puVar20 + lVar4; + puVar13 = (undefined4 *)(puVar20 + lVar4 + 0x30); + if (puVar13 == (undefined4 *)0x0) goto LAB_18004f1fc; + *puVar13 = 0xcccc; + puVar20 = puVar20 + lVar4; +LAB_18004f19d: + puVar18 = puVar13 + 4; + puVar21 = puVar20; + } + else { + *(undefined8 *)(puVar20 + -8) = 0x18004f18f; + puVar13 = FUN_1800349a0(uVar1); + puVar18 = (undefined4 *)0x0; + if (puVar13 != (undefined4 *)0x0) { + *puVar13 = 0xdddd; + goto LAB_18004f19d; + } + } + if (puVar18 != (undefined4 *)0x0) { + *(int *)(puVar21 + 0x28) = iVar8; + *(undefined4 **)(puVar21 + 0x20) = puVar18; + *(undefined8 *)(puVar21 + -8) = 0x18004f1c8; + iVar5 = MultiByteToWideChar(UVar22,1,(LPCSTR)pbVar23,param_7, + *(LPWSTR *)(puVar21 + 0x20),*(int *)(puVar21 + 0x28)); + Locale = LStack_74; + DVar6 = local_78; + if (iVar5 != 0) { + *(int *)(puVar21 + 0x28) = iVar8; + *(undefined4 **)(puVar21 + 0x20) = puVar18; + *(undefined8 *)(puVar21 + -8) = 0x18004f1e8; + iVar9 = CompareStringW(Locale,DVar6,lpString1,cchCount1, + *(PCNZWCH *)(puVar21 + 0x20),*(int *)(puVar21 + 0x28)); + } + iVar5 = iVar9; + if (puVar18[-4] == 0xdddd) { + *(undefined8 *)(puVar21 + -8) = 0x18004f1fc; + FUN_180034a70(puVar18 + -4); + } + } + } + } +LAB_18004f1fc: + if (*(int *)(lpString1 + -8) == 0xdddd) { + *(undefined8 *)(puVar21 + -8) = 0x18004f20e; + FUN_180034a70(lpString1 + -8); + } + goto LAB_18004f2e5; + } + } + } + } + } +LAB_18004f29d: + iVar5 = 0; +LAB_18004f2e5: + *(undefined8 *)(puVar21 + -8) = 0x18004f2f1; + return iVar5; +} + + +================================================================== + +### EXPORT FUNC 18004f310 (314 bytes) name=FUN_18004f310 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18004f310(longlong *param_1,LCID param_2,DWORD param_3,byte *param_4,uint param_5, + byte *param_6,uint param_7,UINT param_8) + +{ + pthreadmbcinfo ptVar1; + DWORD *pDVar2; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + if (param_1 == (longlong *)0x0) { + pDVar2 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(pDVar2 + 0x30); + ptVar1 = *(pthreadmbcinfo *)(pDVar2 + 0x2e); + local_20 = ptVar1; + local_18 = pDVar2; + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & pDVar2[0x32]) == 0)) { + local_28 = __updatetlocinfo(); + } + if ((ptVar1 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & pDVar2[0x32]) == 0)) { + local_20 = __updatetmbcinfo(); + } + if ((pDVar2[0x32] & 2) == 0) { + pDVar2[0x32] = pDVar2[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_1; + local_20 = (pthreadmbcinfo)param_1[1]; + } + FUN_18004ee30((longlong *)&local_28,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18004f450 (470 bytes) name=FUN_18004f450 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_18004f450(byte *param_1,byte *param_2,ulonglong param_3,undefined8 *param_4) + +{ + LCID LVar1; + int iVar2; + DWORD *pDVar3; + pthreadlocinfo local_28; + pthreadmbcinfo local_20; + DWORD *local_18; + char local_10; + + local_10 = '\0'; + if (param_4 == (undefined8 *)0x0) { + local_18 = FUN_1800380a0(); + local_28 = *(pthreadlocinfo *)(local_18 + 0x30); + local_20 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((local_28 != (pthreadlocinfo)PTR_DAT_18006d6f0) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_28 = __updatetlocinfo(); + } + if ((local_20 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) + { + local_20 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + local_18[0x32] = local_18[0x32] | 2; + local_10 = '\x01'; + } + } + else { + local_28 = (pthreadlocinfo)*param_4; + local_20 = (pthreadmbcinfo)param_4[1]; + } + if (param_3 == 0) { + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0; + } + if (((param_1 != (byte *)0x0) && (param_2 != (byte *)0x0)) && (param_3 < 0x80000000)) { + LVar1 = *(LCID *)&local_28->lc_category[0].locale; + if (LVar1 == 0) { + iVar2 = FUN_18004a170(param_1,param_2,param_3,&local_28); + } + else { + iVar2 = FUN_18004f310((longlong *)&local_28,LVar1,0x1001,param_1,(uint)param_3,param_2, + (uint)param_3,local_28->lc_collate_cp); + if (iVar2 == 0) { + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + goto LAB_18004f571; + } + iVar2 = iVar2 + -2; + } + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return iVar2; + } + pDVar3 = FUN_180035b40(); + *pDVar3 = 0x16; + FUN_1800384e0(0,0,0,0,0); +LAB_18004f571: + if (local_10 != '\0') { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return 0x7fffffff; +} + + +================================================================== + +### EXPORT FUNC 18004f630 (158 bytes) name=FUN_18004f630 + +ulonglong FUN_18004f630(byte *param_1,int param_2) + +{ + char cVar1; + int iVar2; + byte *pbVar3; + longlong *plVar4; + + pbVar3 = (byte *)*DAT_180072808; + plVar4 = DAT_180072808; + if (pbVar3 != (byte *)0x0) { + do { + iVar2 = FUN_18004b9b0(param_1,pbVar3,(longlong)param_2); + if ((iVar2 == 0) && + ((cVar1 = *(char *)((longlong)param_2 + *plVar4), cVar1 == '=' || (cVar1 == '\0')))) { + return (longlong)plVar4 - (longlong)DAT_180072808 >> 3 & 0xffffffff; + } + pbVar3 = (byte *)plVar4[1]; + plVar4 = plVar4 + 1; + } while (pbVar3 != (byte *)0x0); + } + return (ulonglong)(uint)-(int)((longlong)plVar4 - (longlong)DAT_180072808 >> 3); +} + + +================================================================== + +### EXPORT FUNC 18004f6d0 (155 bytes) name=FUN_18004f6d0 + +undefined8 * FUN_18004f6d0(longlong *param_1) + +{ + longlong lVar1; + undefined8 *puVar2; + longlong *plVar3; + undefined8 *puVar4; + char *pcVar5; + int iVar6; + + iVar6 = 0; + if (param_1 != (longlong *)0x0) { + lVar1 = *param_1; + plVar3 = param_1; + while (lVar1 != 0) { + plVar3 = plVar3 + 1; + iVar6 = iVar6 + 1; + lVar1 = *plVar3; + } + puVar4 = FUN_180040e50((longlong)(iVar6 + 1),8); + if (puVar4 == (undefined8 *)0x0) { + _amsg_exit(9); + } + pcVar5 = (char *)*param_1; + puVar2 = puVar4; + while (pcVar5 != (char *)0x0) { + pcVar5 = FUN_18004ff40(pcVar5); + param_1 = param_1 + 1; + *puVar2 = pcVar5; + puVar2 = puVar2 + 1; + pcVar5 = (char *)*param_1; + } + *puVar2 = 0; + return puVar4; + } + return (undefined8 *)0x0; +} + + +================================================================== + +### EXPORT FUNC 18004f770 (836 bytes) name=FUN_18004f770 + +undefined4 FUN_18004f770(undefined8 *param_1,int param_2) + +{ + byte bVar1; + byte *_Src; + longlong lVar2; + ulonglong uVar3; + int iVar4; + errno_t eVar5; + BOOL BVar6; + DWORD *pDVar7; + byte *pbVar8; + undefined8 uVar9; + ulonglong uVar10; + longlong *plVar11; + char *_Dst; + uint uVar12; + byte *pbVar13; + bool bVar14; + undefined4 local_res8; + + local_res8 = 0; + if (param_1 == (undefined8 *)0x0) { + pDVar7 = FUN_180035b40(); + *pDVar7 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0xffffffff; + } + _Src = (byte *)*param_1; + if (((_Src == (byte *)0x0) || (pbVar8 = (byte *)FUN_180050170(_Src,0x3d), pbVar8 == (byte *)0x0)) + || (_Src == pbVar8)) { + pDVar7 = FUN_180035b40(); + *pDVar7 = 0x16; + return 0xffffffff; + } + bVar14 = pbVar8[1] == 0; + if (DAT_180072808 == DAT_180072810) { + DAT_180072808 = FUN_18004f6d0(DAT_180072808); + } + if (DAT_180072808 == (longlong *)0x0) { + if ((param_2 == 0) || (DAT_180072818 == (undefined8 *)0x0)) { + if (bVar14) { + return 0; + } + DAT_180072808 = (longlong *)FUN_180040de0(8); + if (DAT_180072808 == (longlong *)0x0) { + return 0xffffffff; + } + *DAT_180072808 = 0; + if (DAT_180072818 == (undefined8 *)0x0) { + DAT_180072818 = (undefined8 *)FUN_180040de0(8); + if (DAT_180072818 == (undefined8 *)0x0) { + return 0xffffffff; + } + *DAT_180072818 = 0; + } + } + else { + uVar9 = FUN_18004b9c0(); + if ((int)uVar9 != 0) { + pDVar7 = FUN_180035b40(); + *pDVar7 = 0x16; + return 0xffffffff; + } + } + } + plVar11 = DAT_180072808; + if (DAT_180072808 == (longlong *)0x0) { + return 0xffffffff; + } + uVar10 = FUN_18004f630(_Src,(int)pbVar8 - (int)_Src); + uVar12 = (uint)uVar10; + uVar10 = (ulonglong)(int)uVar12; + if (((int)uVar12 < 0) || (*plVar11 == 0)) { + if (bVar14) { + FUN_180034a70(_Src); + *param_1 = 0; + return 0; + } + if ((int)uVar12 < 0) { + uVar12 = -uVar12; + } + iVar4 = uVar12 + 2; + if (((iVar4 < (int)uVar12) || (0x1ffffffffffffffe < (ulonglong)(longlong)iVar4)) || + (plVar11 = FUN_180040f70(DAT_180072808,8,(longlong)iVar4), plVar11 == (longlong *)0x0)) { + return 0xffffffff; + } + plVar11[(int)uVar12] = (longlong)_Src; + plVar11[(longlong)(int)uVar12 + 1] = 0; + *param_1 = 0; + DAT_180072808 = plVar11; + } + else { + FUN_180034a70((LPVOID)plVar11[uVar10]); + if (bVar14) { + lVar2 = plVar11[uVar10]; + uVar3 = uVar10; + while (lVar2 != 0) { + uVar12 = (int)uVar10 + 1; + uVar10 = (ulonglong)uVar12; + plVar11[uVar3] = plVar11[uVar3 + 1]; + lVar2 = plVar11[uVar3 + 1]; + uVar3 = uVar3 + 1; + } + if (((ulonglong)(longlong)(int)uVar12 < 0x1fffffffffffffff) && + (plVar11 = FUN_180040f70(DAT_180072808,(longlong)(int)uVar12,8), plVar11 != (longlong *)0x0 + )) { + DAT_180072808 = plVar11; + } + } + else { + plVar11[uVar10] = (longlong)_Src; + *param_1 = 0; + } + } + if (param_2 != 0) { + uVar10 = 0xffffffffffffffff; + pbVar13 = _Src; + do { + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + bVar1 = *pbVar13; + pbVar13 = pbVar13 + 1; + } while (bVar1 != 0); + _Dst = FUN_180040e50(~uVar10 + 1,1); + if (_Dst != (char *)0x0) { + uVar10 = 0xffffffffffffffff; + pbVar13 = _Src; + do { + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + bVar1 = *pbVar13; + pbVar13 = pbVar13 + 1; + } while (bVar1 != 0); + eVar5 = strcpy_s(_Dst,~uVar10 + 1,(char *)_Src); + if (eVar5 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + pbVar8[(longlong)_Dst - (longlong)_Src] = 0; + pbVar8 = pbVar8 + ((longlong)_Dst - (longlong)_Src) + 1; + if (bVar14) { + pbVar8 = (byte *)0x0; + } + BVar6 = SetEnvironmentVariableA(_Dst,(LPCSTR)pbVar8); + if (BVar6 == 0) { + local_res8 = 0xffffffff; + pDVar7 = FUN_180035b40(); + *pDVar7 = 0x2a; + } + FUN_180034a70(_Dst); + } + } + if (bVar14) { + FUN_180034a70(_Src); + *param_1 = 0; + return local_res8; + } + return local_res8; +} + + +================================================================== + +### EXPORT FUNC 18004fac0 (569 bytes) name=FUN_18004fac0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18004fac0(char *param_1,int param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + bool bVar4; + short sVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint local_28; + + sVar5 = 0x404e; + *param_3 = 0; + param_3[1] = 0; + param_3[2] = 0; + for (; param_2 != 0; param_2 = param_2 + -1) { + uVar3 = *(undefined8 *)param_3; + uVar1 = param_3[2]; + uVar2 = *param_3; + uVar7 = param_3[1]; + uVar6 = uVar2 * 4; + uVar8 = (param_3[2] * 2 | uVar7 >> 0x1f) * 2 | (uVar7 & 0x7fffffff) >> 0x1e; + local_28 = (uint)uVar3; + uVar7 = (uVar7 * 2 | uVar2 >> 0x1f) * 2 | (uVar2 & 0x7fffffff) >> 0x1e; + uVar2 = uVar6 + local_28; + bVar4 = false; + *param_3 = uVar6; + param_3[1] = uVar7; + param_3[2] = uVar8; + if ((uVar2 < uVar6) || (uVar2 < local_28)) { + bVar4 = true; + } + *param_3 = uVar2; + if (bVar4) { + uVar6 = uVar7 + 1; + bVar4 = false; + if ((uVar6 < uVar7) || (uVar6 == 0)) { + bVar4 = true; + } + param_3[1] = uVar6; + if (bVar4) { + param_3[2] = uVar8 + 1; + } + } + bVar4 = false; + uVar7 = (uint)((ulonglong)uVar3 >> 0x20); + uVar6 = param_3[1] + uVar7; + if ((uVar6 < param_3[1]) || (uVar6 < uVar7)) { + bVar4 = true; + } + param_3[1] = uVar6; + if (bVar4) { + param_3[2] = param_3[2] + 1; + } + param_3[2] = param_3[2] + uVar1; + uVar1 = uVar2 * 2; + uVar7 = param_3[2] * 2 | uVar6 >> 0x1f; + *param_3 = uVar1; + uVar6 = uVar6 * 2 | uVar2 >> 0x1f; + param_3[2] = uVar7; + bVar4 = false; + param_3[1] = uVar6; + uVar2 = uVar1 + (int)*param_1; + if ((uVar2 < uVar1) || (uVar2 < (uint)(int)*param_1)) { + bVar4 = true; + } + *param_3 = uVar2; + if (bVar4) { + uVar2 = uVar6 + 1; + bVar4 = false; + if ((uVar2 < uVar6) || (uVar2 == 0)) { + bVar4 = true; + } + param_3[1] = uVar2; + if (bVar4) { + param_3[2] = uVar7 + 1; + } + } + param_1 = param_1 + 1; + } + for (uVar2 = param_3[2]; uVar2 == 0; uVar2 = uVar2 >> 0x10) { + uVar2 = param_3[1]; + sVar5 = sVar5 + -0x10; + param_3[2] = uVar2 >> 0x10; + param_3[1] = uVar2 << 0x10 | *param_3 >> 0x10; + *param_3 = *param_3 << 0x10; + } + for (uVar2 = param_3[2] >> 0xf; (uVar2 & 1) == 0; uVar2 = (uVar2 & 0x7fffffff) >> 0xe) { + uVar2 = *param_3; + uVar1 = param_3[1]; + sVar5 = sVar5 + -1; + *param_3 = uVar2 * 2; + param_3[1] = uVar1 * 2 | uVar2 >> 0x1f; + uVar2 = param_3[2]; + param_3[2] = uVar2 * 2 | uVar1 >> 0x1f; + } + *(short *)((longlong)param_3 + 10) = sVar5; + return; +} + + +================================================================== + +### EXPORT FUNC 18004fd00 (208 bytes) name=FUN_18004fd00 + +undefined8 FUN_18004fd00(uint param_1) + +{ + byte bVar1; + BOOL BVar2; + DWORD DVar3; + longlong lVar4; + longlong lVar5; + HANDLE hObject; + + lVar4 = FUN_18004a440(param_1); + if (lVar4 != -1) { + if (param_1 == 1) { + bVar1 = *(byte *)(DAT_1800db4e0 + 0xa8); +joined_r0x00018004fd41: + if ((bVar1 & 1) != 0) { + lVar4 = FUN_18004a440(2); + lVar5 = FUN_18004a440(1); + if (lVar5 == lVar4) goto LAB_18004fd7d; + } + } + else if (param_1 == 2) { + bVar1 = *(byte *)(DAT_1800db4e0 + 0x58); + goto joined_r0x00018004fd41; + } + hObject = (HANDLE)FUN_18004a440(param_1); + BVar2 = CloseHandle(hObject); + if (BVar2 == 0) { + DVar3 = GetLastError(); + goto LAB_18004fd7f; + } + } +LAB_18004fd7d: + DVar3 = 0; +LAB_18004fd7f: + FUN_18004a370(param_1); + *(undefined1 *) + ((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + (ulonglong)(param_1 & 0x1f) * 0x50) = 0; + if (DVar3 != 0) { + _dosmaperr(DVar3); + return 0xffffffff; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18004fdd0 (270 bytes) name=FUN_18004fdd0 + +ulonglong FUN_18004fdd0(uint param_1) + +{ + DWORD *pDVar1; + ulonglong uVar2; + + if (param_1 == 0xfffffffe) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + uVar2 = 0xffffffff; + } + else if (((int)param_1 < 0) || (DAT_1800db4c8 <= param_1)) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + FUN_1800384e0(0,0,0,0,0); + uVar2 = 0xffffffff; + } + else if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar1 = FUN_180035b70(); + *pDVar1 = 0; + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + FUN_1800384e0(0,0,0,0,0); + uVar2 = 0xffffffff; + } + else { + FUN_18004a4e0(param_1); + if ((*(byte *)((&DAT_1800db4e0)[(longlong)(int)param_1 >> 5] + 8 + + (ulonglong)(param_1 & 0x1f) * 0x50) & 1) == 0) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 9; + uVar2 = 0xffffffff; + } + else { + uVar2 = FUN_18004fd00(param_1); + uVar2 = uVar2 & 0xffffffff; + } + FUN_18004a5b0(param_1); + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18004fee0 (23 bytes) name=FUN_18004fee0 + +void FUN_18004fee0(undefined8 param_1,longlong param_2) + +{ + FUN_18004a5b0(*(uint *)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18004ff00 (54 bytes) name=_freebuf + +/* Library Function - Single Match + _freebuf + + Library: Visual Studio 2005 Release */ + +void __cdecl _freebuf(FILE *_File) + +{ + if (((_File->_flag & 0x83U) != 0) && ((_File->_flag & 8U) != 0)) { + FUN_180034a70(_File->_base); + _File->_flag = _File->_flag & 0xfffffbf7; + _File->_ptr = (char *)0x0; + _File->_base = (char *)0x0; + _File->_cnt = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18004ff40 (143 bytes) name=FUN_18004ff40 + +char * FUN_18004ff40(char *param_1) + +{ + char cVar1; + errno_t eVar2; + char *pcVar3; + ulonglong uVar4; + + if (param_1 == (char *)0x0) { + return (char *)0x0; + } + uVar4 = 0xffffffffffffffff; + pcVar3 = param_1; + do { + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + cVar1 = *pcVar3; + pcVar3 = pcVar3 + 1; + } while (cVar1 != '\0'); + pcVar3 = FUN_1800349a0(~uVar4); + if (pcVar3 == (char *)0x0) { + return (char *)0x0; + } + eVar2 = strcpy_s(pcVar3,~uVar4,param_1); + if (eVar2 != 0) { + /* WARNING: Subroutine does not return */ + FID_conflict__invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0); + } + return pcVar3; +} + + +================================================================== + +### EXPORT FUNC 18004ffd0 (401 bytes) name=FUN_18004ffd0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +byte * FUN_18004ffd0(byte *param_1,uint param_2,longlong param_3) + +{ + byte bVar1; + bool bVar2; + pthreadmbcinfo ptVar3; + DWORD *pDVar4; + byte *pbVar5; + DWORD *local_18; + + bVar2 = false; + if (param_3 == 0) { + local_18 = FUN_1800380a0(); + ptVar3 = *(pthreadmbcinfo *)(local_18 + 0x2e); + if ((*(undefined **)(local_18 + 0x30) != PTR_DAT_18006d6f0) && + ((_DAT_18006d578 & local_18[0x32]) == 0)) { + __updatetlocinfo(); + } + if ((ptVar3 != (pthreadmbcinfo)PTR_DAT_18006d470) && ((_DAT_18006d578 & local_18[0x32]) == 0)) { + ptVar3 = __updatetmbcinfo(); + } + if ((local_18[0x32] & 2) == 0) { + bVar2 = true; + local_18[0x32] = local_18[0x32] | 2; + } + } + else { + ptVar3 = *(pthreadmbcinfo *)(param_3 + 8); + bVar2 = false; + } + if (param_1 == (byte *)0x0) { + pDVar4 = FUN_180035b40(); + *pDVar4 = 0x16; + FUN_1800384e0(0,0,0,0,0); + } + else { + if (ptVar3->ismbcodepage == 0) { + param_1 = (byte *)strchr((char *)param_1,param_2); +LAB_1800500e7: + if (!bVar2) { + return param_1; + } + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return param_1; + } + bVar1 = *param_1; + while (bVar1 != 0) { + if ((ptVar3->mbctype[(ulonglong)bVar1 + 5] & 4) == 0) { + pbVar5 = param_1; + if (param_2 == bVar1) break; + } + else { + if (param_1[1] == 0) goto LAB_1800500ad; + pbVar5 = param_1 + 1; + if (param_2 == CONCAT11(bVar1,param_1[1])) goto LAB_1800500e7; + } + param_1 = pbVar5 + 1; + bVar1 = pbVar5[1]; + } + if (param_2 == bVar1) { + if (!bVar2) { + return param_1; + } + local_18[0x32] = local_18[0x32] & 0xfffffffd; + return param_1; + } + } +LAB_1800500ad: + if (bVar2) { + local_18[0x32] = local_18[0x32] & 0xfffffffd; + } + return (byte *)0x0; +} + + +================================================================== + +### EXPORT FUNC 180050170 (8 bytes) name=FUN_180050170 + +void FUN_180050170(byte *param_1,uint param_2) + +{ + FUN_18004ffd0(param_1,param_2,0); + return; +} + + +================================================================== + +### EXPORT FUNC 180050180 (33 bytes) name=strchr + +/* Library Function - Single Match + strchr + + Library: Visual Studio 2005 Release */ + +char * __cdecl strchr(char *_Str,int _Val) + +{ + char *pcVar1; + char cVar2; + + cVar2 = *_Str; + while (cVar2 != '\0') { + if (cVar2 == (char)_Val) { + return _Str; + } + pcVar1 = _Str + 1; + _Str = _Str + 1; + cVar2 = *pcVar1; + } + if (*_Str == (char)_Val) { + return _Str; + } + return (char *)0x0; +} + + +================================================================== + +### EXPORT FUNC 1800501a2 (6 bytes) name=RtlPcToFileHeader + +PVOID __stdcall RtlPcToFileHeader(PVOID PcValue,PVOID *BaseOfImage) + +{ + PVOID pvVar1; + + /* WARNING: Could not recover jumptable at 0x0001800501a2. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = RtlPcToFileHeader(PcValue,BaseOfImage); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 1800501a8 (6 bytes) name=RtlLookupFunctionEntry + +PRUNTIME_FUNCTION __stdcall +RtlLookupFunctionEntry(DWORD64 ControlPc,PDWORD64 ImageBase,PUNWIND_HISTORY_TABLE HistoryTable) + +{ + PRUNTIME_FUNCTION p_Var1; + + /* WARNING: Could not recover jumptable at 0x0001800501a8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + p_Var1 = RtlLookupFunctionEntry(ControlPc,ImageBase,HistoryTable); + return p_Var1; +} + + +================================================================== + +### EXPORT FUNC 1800501ae (6 bytes) name=RtlUnwindEx + +void __stdcall +RtlUnwindEx(PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue, + PCONTEXT ContextRecord,PUNWIND_HISTORY_TABLE HistoryTable) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501ae. Too many branches */ + /* WARNING: Treating indirect jump as call */ + RtlUnwindEx(TargetFrame,TargetIp,ExceptionRecord,ReturnValue,ContextRecord,HistoryTable); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501b4 (6 bytes) name=RtlVirtualUnwind + +PEXCEPTION_ROUTINE __stdcall +RtlVirtualUnwind(DWORD HandlerType,DWORD64 ImageBase,DWORD64 ControlPc, + PRUNTIME_FUNCTION FunctionEntry,PCONTEXT ContextRecord,PVOID *HandlerData, + PDWORD64 EstablisherFrame,PKNONVOLATILE_CONTEXT_POINTERS ContextPointers) + +{ + PEXCEPTION_ROUTINE puVar1; + + /* WARNING: Could not recover jumptable at 0x0001800501b4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + puVar1 = RtlVirtualUnwind(HandlerType,ImageBase,ControlPc,FunctionEntry,ContextRecord,HandlerData, + EstablisherFrame,ContextPointers); + return puVar1; +} + + +================================================================== + +### EXPORT FUNC 1800501ba (6 bytes) name=ClosePrinter + +BOOL __stdcall ClosePrinter(HANDLE hPrinter) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x0001800501ba. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = ClosePrinter(hPrinter); + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 1800501c0 (6 bytes) name=DocumentPropertiesW + +LONG __stdcall +DocumentPropertiesW(HWND hWnd,HANDLE hPrinter,LPWSTR pDeviceName,PDEVMODEW pDevModeOutput, + PDEVMODEW pDevModeInput,DWORD fMode) + +{ + LONG LVar1; + + /* WARNING: Could not recover jumptable at 0x0001800501c0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LVar1 = DocumentPropertiesW(hWnd,hPrinter,pDeviceName,pDevModeOutput,pDevModeInput,fMode); + return LVar1; +} + + +================================================================== + +### EXPORT FUNC 1800501c6 (6 bytes) name=OpenPrinterW + +BOOL __stdcall OpenPrinterW(LPWSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSW pDefault) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x0001800501c6. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = OpenPrinterW(pPrinterName,phPrinter,pDefault); + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 1800501cc (6 bytes) name=AVIStreamWrite + +void AVIStreamWrite(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501cc. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIStreamWrite(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501d2 (6 bytes) name=ICSendMessage + +void ICSendMessage(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501d2. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ICSendMessage(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501d8 (6 bytes) name=AVIFileInit + +void AVIFileInit(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501d8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIFileInit(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501de (6 bytes) name=AVIFileOpenW + +void AVIFileOpenW(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501de. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIFileOpenW(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501e4 (6 bytes) name=AVIFileCreateStreamW + +void AVIFileCreateStreamW(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501e4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIFileCreateStreamW(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501ea (6 bytes) name=ICInfo + +void ICInfo(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501ea. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ICInfo(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501f0 (6 bytes) name=ICOpen + +void ICOpen(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501f0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ICOpen(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501f6 (6 bytes) name=ICClose + +void ICClose(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501f6. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ICClose(); + return; +} + + +================================================================== + +### EXPORT FUNC 1800501fc (6 bytes) name=ICGetInfo + +void ICGetInfo(void) + +{ + /* WARNING: Could not recover jumptable at 0x0001800501fc. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ICGetInfo(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050202 (6 bytes) name=AVIMakeCompressedStream + +void AVIMakeCompressedStream(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050202. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIMakeCompressedStream(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050208 (6 bytes) name=AVIStreamSetFormat + +void AVIStreamSetFormat(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050208. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIStreamSetFormat(); + return; +} + + +================================================================== + +### EXPORT FUNC 18005020e (6 bytes) name=AVIStreamRelease + +void AVIStreamRelease(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018005020e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIStreamRelease(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050214 (6 bytes) name=AVIFileRelease + +void AVIFileRelease(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050214. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIFileRelease(); + return; +} + + +================================================================== + +### EXPORT FUNC 18005021a (6 bytes) name=AVIFileExit + +void AVIFileExit(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018005021a. Too many branches */ + /* WARNING: Treating indirect jump as call */ + AVIFileExit(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050220 (6 bytes) name=usb_init + +void usb_init(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050220. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_init(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050226 (6 bytes) name=usb_bulk_write + +void usb_bulk_write(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050226. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_bulk_write(); + return; +} + + +================================================================== + +### EXPORT FUNC 18005022c (6 bytes) name=usb_bulk_read + +void usb_bulk_read(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018005022c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_bulk_read(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050232 (6 bytes) name=usb_release_interface + +void usb_release_interface(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050232. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_release_interface(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050238 (6 bytes) name=usb_close + +void usb_close(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050238. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_close(); + return; +} + + +================================================================== + +### EXPORT FUNC 18005023e (6 bytes) name=usb_find_busses + +void usb_find_busses(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018005023e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_find_busses(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050244 (6 bytes) name=usb_find_devices + +void usb_find_devices(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050244. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_find_devices(); + return; +} + + +================================================================== + +### EXPORT FUNC 18005024a (6 bytes) name=usb_get_busses + +void usb_get_busses(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018005024a. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_get_busses(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050250 (6 bytes) name=usb_open + +void usb_open(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050250. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_open(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050256 (6 bytes) name=usb_set_configuration + +void usb_set_configuration(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050256. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_set_configuration(); + return; +} + + +================================================================== + +### EXPORT FUNC 18005025c (6 bytes) name=usb_claim_interface + +void usb_claim_interface(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018005025c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_claim_interface(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050262 (6 bytes) name=usb_strerror + +void usb_strerror(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050262. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_strerror(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050268 (6 bytes) name=usb_clear_halt + +void usb_clear_halt(void) + +{ + /* WARNING: Could not recover jumptable at 0x000180050268. Too many branches */ + /* WARNING: Treating indirect jump as call */ + usb_clear_halt(); + return; +} + + +================================================================== + +### EXPORT FUNC 180050270 (121 bytes) name=_AtlGetThreadACPFake + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + unsigned int __cdecl ATL::_AtlGetThreadACPFake(void) + + Library: Visual Studio 2005 Release */ + +uint __cdecl ATL::_AtlGetThreadACPFake(void) + +{ + LCID Locale; + int iVar1; + UINT UVar2; + char *pcVar3; + uint uVar4; + undefined1 auStack_38 [32]; + char local_18; + char local_17 [7]; + ulonglong local_10; + + local_10 = DAT_18006cea0 ^ (ulonglong)auStack_38; + uVar4 = 0; + Locale = GetThreadLocale(); + iVar1 = GetLocaleInfoA(Locale,0x1004,&local_18,7); + if ((iVar1 != 0) && (pcVar3 = &local_18, local_18 != '\0')) { + do { + pcVar3 = pcVar3 + 1; + uVar4 = local_18 + -0x30 + uVar4 * 10; + local_18 = *pcVar3; + } while (local_18 != '\0'); + if (uVar4 != 0) { + return uVar4; + } + } + UVar2 = GetACP(); + return UVar2; +} + + +================================================================== + +### EXPORT FUNC 1800502ec (6 bytes) name=FUN_1800502ec + +undefined8 FUN_1800502ec(void) + +{ + return 3; +} + + +================================================================== + +### EXPORT FUNC 1800502f4 (109 bytes) name=_AtlGetThreadACPThunk + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + unsigned int __cdecl ATL::_AtlGetThreadACPThunk(void) + + Library: Visual Studio 2005 Release */ + +uint __cdecl ATL::_AtlGetThreadACPThunk(void) + +{ + uint uVar1; + code *pcVar2; + undefined1 auStack_d8 [32]; + _OSVERSIONINFOA local_b8; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + local_b8.dwOSVersionInfoSize = 0x94; + GetVersionExA(&local_b8); + if ((local_b8.dwPlatformId != 2) || (pcVar2 = FUN_1800502ec, local_b8.dwMajorVersion < 5)) { + pcVar2 = _AtlGetThreadACPFake; + } + LOCK(); + UNLOCK(); + PTR__AtlGetThreadACPThunk_18006e7b0 = pcVar2; + uVar1 = (*pcVar2)(); + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180050364 (28 bytes) name=FUN_180050364 + +undefined8 FUN_180050364(LPCRITICAL_SECTION param_1) + +{ + InitializeCriticalSection(param_1); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180050394 (34 bytes) name=FUN_180050394 + +bool FUN_180050394(undefined8 *param_1) + +{ + return *(int *)*param_1 == -0x3fffffe9; +} + + +================================================================== + +### EXPORT FUNC 1800503b8 (181 bytes) name=FUN_1800503b8 + +undefined8 FUN_1800503b8(int *param_1,HINSTANCE param_2) + +{ + code *pcVar1; + undefined8 uVar2; + longlong lVar3; + int iVar4; + + if (param_1 == (int *)0x0) { +LAB_1800503d7: + uVar2 = 0x80070057; + } + else { + if (*param_1 != 0) { + if (*param_1 != 0x48) goto LAB_1800503d7; + iVar4 = 0; + if (0 < param_1[0x10]) { + lVar3 = 0; + do { + if ((lVar3 < 0) || (param_1[0x10] <= iVar4)) { + RaiseException(0xc000008c,1,0,(ULONG_PTR *)0x0); + pcVar1 = (code *)swi(3); + uVar2 = (*pcVar1)(); + return uVar2; + } + UnregisterClassA((LPCSTR)(ulonglong)*(ushort *)(*(longlong *)(param_1 + 0xe) + lVar3), + param_2); + iVar4 = iVar4 + 1; + lVar3 = lVar3 + 2; + } while (iVar4 < param_1[0x10]); + } + if (*(LPVOID *)(param_1 + 0xe) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)(param_1 + 0xe)); + param_1[0xe] = 0; + param_1[0xf] = 0; + } + param_1[0x10] = 0; + param_1[0x11] = 0; + DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 2)); + *param_1 = 0; + } + uVar2 = 0; + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180050470 (52 bytes) name=~CAtlBaseModule + +/* Library Function - Single Match + public: __cdecl ATL::CAtlBaseModule::~CAtlBaseModule(void) __ptr64 + + Library: Visual Studio */ + +void __thiscall ATL::CAtlBaseModule::~CAtlBaseModule(CAtlBaseModule *this) + +{ + DeleteCriticalSection((LPCRITICAL_SECTION)(this + 0x28)); + if (*(LPVOID *)(this + 0x50) != (LPVOID)0x0) { + FUN_180034a70(*(LPVOID *)(this + 0x50)); + *(undefined8 *)(this + 0x50) = 0; + } + *(undefined4 *)(this + 0x58) = 0; + *(undefined4 *)(this + 0x5c) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800504a4 (258 bytes) name=FUN_1800504a4 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 * FUN_1800504a4(undefined4 *param_1) + +{ + undefined8 uVar1; + undefined1 auStack_d8 [32]; + _OSVERSIONINFOA local_b8; + ulonglong local_18; + + local_18 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + FUN_1800357d0((ulonglong *)(param_1 + 10),0,0x28); + *(undefined8 *)(param_1 + 0x14) = 0; + param_1[0x16] = 0; + param_1[0x17] = 0; + *(undefined8 *)(param_1 + 4) = 0x180000000; + *(undefined8 *)(param_1 + 2) = 0x180000000; + *param_1 = 0x60; + *(undefined1 *)(param_1 + 6) = 0; + FUN_1800357d0((ulonglong *)&local_b8,0,0x94); + local_b8.dwOSVersionInfoSize = 0x94; + GetVersionExA(&local_b8); + if (local_b8.dwPlatformId == 2) { + if (local_b8.dwMajorVersion < 5) goto LAB_180050551; + } + else if ((local_b8.dwPlatformId != 1) || + ((local_b8.dwMajorVersion < 5 && + ((local_b8.dwMajorVersion != 4 || (local_b8.dwMinorVersion == 0)))))) goto LAB_180050551; + *(undefined1 *)(param_1 + 6) = 1; +LAB_180050551: + param_1[7] = 0x800; + *(undefined **)(param_1 + 8) = &DAT_180058e98; + uVar1 = FUN_180050364((LPCRITICAL_SECTION)(param_1 + 10)); + if ((int)uVar1 < 0) { + DAT_1800da4a4 = 1; + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800505a6 (12 bytes) name=DelayLoad_CreateStdAccessibleObject + +void DelayLoad_CreateStdAccessibleObject + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + FUN_1800505b2(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### EXPORT FUNC 1800505b2 (121 bytes) name=FUN_1800505b2 + +void FUN_1800505b2(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + longlong *in_RAX; + FARPROC UNRECOVERED_JUMPTABLE; + + UNRECOVERED_JUMPTABLE = FUN_180050644(&ImgDelayDescr_180068a50.grAttrs,in_RAX); + /* WARNING: Could not recover jumptable at 0x000180050629. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*UNRECOVERED_JUMPTABLE)(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### EXPORT FUNC 18005062b (6 bytes) name=CreateStdAccessibleObject + +HRESULT __stdcall CreateStdAccessibleObject(HWND hwnd,LONG idObject,IID *riid,void **ppvObject) + +{ + HRESULT HVar1; + + /* WARNING: Could not recover jumptable at 0x00018005062b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + HVar1 = CreateStdAccessibleObject(hwnd,idObject,riid,ppvObject); + return HVar1; +} + + +================================================================== + +### EXPORT FUNC 180050631 (12 bytes) name=DelayLoad_LresultFromObject + +void DelayLoad_LresultFromObject + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + FUN_1800505b2(param_1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### EXPORT FUNC 18005063d (6 bytes) name=LresultFromObject + +LRESULT __stdcall LresultFromObject(IID *riid,WPARAM wParam,LPUNKNOWN punk) + +{ + LRESULT LVar1; + + /* WARNING: Could not recover jumptable at 0x00018005063d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LVar1 = LresultFromObject(riid,wParam,punk); + return LVar1; +} + + +================================================================== + +### EXPORT FUNC 180050644 (750 bytes) name=FUN_180050644 + +FARPROC FUN_180050644(uint *param_1,longlong *param_2) + +{ + HMODULE pHVar1; + uint uVar2; + uint uVar3; + FARPROC pFVar4; + HMODULE hLibModule; + undefined8 *puVar5; + longlong lVar6; + ulonglong uVar7; + longlong *plVar8; + undefined4 *local_res8; + undefined4 *local_res10; + undefined4 *local_res18; + undefined4 local_88 [2]; + uint *local_80; + longlong *local_78; + LPCSTR local_70; + uint local_68; + char *local_60; + HMODULE local_58; + FARPROC local_50; + DWORD local_48; + + local_88[0] = 0x48; + uVar2 = param_1[5]; + uVar3 = param_1[7]; + local_70 = (LPCSTR)((ulonglong)param_1[1] + 0x180000000); + local_68 = 0; + local_58 = (HMODULE)0x0; + local_50 = (FARPROC)0x0; + local_60 = (char *)0x0; + local_48 = 0; + plVar8 = (longlong *)((ulonglong)param_1[2] + 0x180000000); + lVar6 = (ulonglong)param_1[4] + 0x180000000; + local_80 = param_1; + local_78 = param_2; + if ((*param_1 & 1) == 0) { + local_res8 = local_88; + RaiseException(0xc06d0057,0,1,(ULONG_PTR *)&local_res8); + pFVar4 = (FARPROC)0x0; + } + else { + hLibModule = (HMODULE)*plVar8; + uVar7 = (longlong)((longlong)param_2 - ((ulonglong)param_1[3] + 0x180000000)) >> 3 & 0xffffffff; + local_68 = (uint)((*(ulonglong *)(lVar6 + uVar7 * 8) & 0x8000000000000000) == 0); + if (local_68 == 0) { + local_60 = (char *)(ulonglong)*(ushort *)(lVar6 + uVar7 * 8); + } + else { + local_60 = IMAGE_DOS_HEADER_180000000.e_magic + (ulonglong)*(uint *)(lVar6 + uVar7 * 8) + 2; + } + pFVar4 = (FARPROC)0x0; + if ((DAT_180073730 == (code *)0x0) || + (pFVar4 = (FARPROC)(*DAT_180073730)(0,local_88), pFVar4 == (FARPROC)0x0)) { + if (hLibModule == (HMODULE)0x0) { + if ((((DAT_180073730 == (code *)0x0) || + (hLibModule = (HMODULE)(*DAT_180073730)(1,local_88), hLibModule == (HMODULE)0x0)) && + (hLibModule = LoadLibraryA(local_70), hLibModule == (HMODULE)0x0)) && + ((local_48 = GetLastError(), DAT_180073728 == (code *)0x0 || + (hLibModule = (HMODULE)(*DAT_180073728)(3,local_88), hLibModule == (HMODULE)0x0)))) { + local_res10 = local_88; + RaiseException(0xc06d007e,0,1,(ULONG_PTR *)&local_res10); + return local_50; + } + LOCK(); + pHVar1 = (HMODULE)*plVar8; + *plVar8 = (longlong)hLibModule; + UNLOCK(); + if (pHVar1 == hLibModule) { + FreeLibrary(hLibModule); + } + else if ((param_1[6] != 0) && (puVar5 = LocalAlloc(0x40,0x10), puVar5 != (undefined8 *)0x0)) + { + puVar5[1] = param_1; + *puVar5 = DAT_180073720; + DAT_180073720 = puVar5; + } + } + local_58 = hLibModule; + if (DAT_180073730 != (code *)0x0) { + pFVar4 = (FARPROC)(*DAT_180073730)(2,local_88); + } + if (((pFVar4 == (FARPROC)0x0) && + (((((param_1[5] == 0 || (param_1[7] == 0)) || + (lVar6 = (longlong)hLibModule[0xf].unused, + *(int *)((longlong)&hLibModule->unused + lVar6) != 0x4550)) || + ((*(uint *)((longlong)&hLibModule[2].unused + lVar6) != uVar3 || + (hLibModule != *(HMODULE *)((longlong)&hLibModule[0xc].unused + lVar6))))) || + (pFVar4 = *(FARPROC *)((ulonglong)uVar2 + 0x180000000 + uVar7 * 8), + pFVar4 == (FARPROC)0x0)))) && + (pFVar4 = GetProcAddress(hLibModule,local_60), pFVar4 == (FARPROC)0x0)) { + local_48 = GetLastError(); + if (DAT_180073728 != (code *)0x0) { + pFVar4 = (FARPROC)(*DAT_180073728)(4,local_88); + } + if (pFVar4 == (FARPROC)0x0) { + local_res18 = local_88; + RaiseException(0xc06d007f,0,1,(ULONG_PTR *)&local_res18); + pFVar4 = local_50; + } + } + *param_2 = (longlong)pFVar4; + } + if (DAT_180073730 != (code *)0x0) { + local_48 = 0; + local_58 = hLibModule; + local_50 = pFVar4; + (*DAT_180073730)(5,local_88); + } + } + return pFVar4; +} + + +================================================================== + +### EXPORT FUNC 180050940 (1652 bytes) name=FUN_180050940 + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_180050940(ulonglong param_1,float param_2) + +{ + uint uVar1; + uint uVar2; + byte bVar3; + float fVar4; + float fVar5; + int iVar6; + uint uVar7; + bool bVar8; + bool bVar9; + float fVar10; + ulonglong uVar11; + double dVar12; + undefined4 in_XMM1_Db; + uint uVar13; + undefined4 in_stack_ffffffffffffffb4; + + fVar10 = (float)param_1; + uVar13 = 0; + fVar4 = ABS(fVar10); + bVar8 = fVar4 != fVar10; + fVar5 = ABS(param_2); + bVar9 = fVar5 != param_2; + if (fVar10 == 1.0) { +LAB_1800509bd: + uVar11 = (ulonglong)(uint)DAT_18005e700; + } + else { + if (fVar5 == 0.0) { + if ((((uint)fVar10 & 0x7f800000) != 0x7f800000) || ((param_1 & 0x7fffff) == 0)) + goto LAB_1800509bd; + } + else { + uVar7 = (uint)fVar10 & 0x7f800000; + if ((uVar7 == 0x7f800000) && ((param_1 & 0x7fffff) != 0)) { + if (((fVar10 == -NAN) && (((uint)param_2 & 0x7f800000) == 0x7f800000)) && + (((uint)param_2 & 0x7fffff) != 0)) { +LAB_180050a8f: + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,param_2,1,8, + CONCAT44(in_stack_ffffffffffffffb4,0x21),fVar10,param_2,2); + return uVar11; + } + } + else { + if ((((uint)param_2 & 0x7f800000) != 0x7f800000) || (((uint)param_2 & 0x7fffff) == 0)) { + if (param_2 == 1.0) { + return param_1; + } + if (((uint)param_2 & 0x7f800000) < 0x4f000001) { + iVar6 = ((uint)param_2 >> 0x17 & 0xff) - 0x7e; + uVar2 = uVar13; + if (0 < iVar6) { + if (iVar6 < 0x19) { + bVar3 = 0x18 - (char)iVar6; + uVar1 = (1 << (bVar3 & 0x1f)) - 1; + uVar2 = 0; + if (((uint)param_2 & uVar1) == 0) { + uVar2 = 2 - (((~uVar1 & (uint)param_2) >> (bVar3 & 0x1f) & 1) != 0); + } + } + else { + uVar2 = 2; + } + } + if (uVar7 == 0x7f800000) { + if (!bVar8) { + if (bVar9) { + return 0; + } + return param_1; + } + if (uVar2 == 1) { + if (bVar9) { + return (ulonglong)(uint)DAT_18005e9d8; + } + return param_1; + } + if (bVar9) { + return 0; + } +LAB_180050d1d: + return (ulonglong)(uint)(DAT_18005e9d8 - fVar10); + } + if ((param_1 & 0x7fffffff) == 0) { + if (!bVar8) { + if (bVar9) { + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d, + (float)((uint)fVar10 & 0x80000000 | 0x7f800000),2,4, + CONCAT44(in_stack_ffffffffffffffb4,0x22),fVar10,param_2,2); + return uVar11; + } + return param_1; + } + if (bVar9) { + if (uVar2 == 1) { + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,-INFINITY,2,4, + CONCAT44(in_stack_ffffffffffffffb4,0x22),fVar10,param_2,2); + return uVar11; + } + uVar13 = 4; + iVar6 = 2; + goto LAB_180050bfa; + } + if (uVar2 == 1) { + return param_1; + } + goto LAB_180050d1d; + } + if (bVar8) { + if (uVar2 == 0) { + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,-NAN,1,8, + CONCAT44(in_stack_ffffffffffffffb4,0x21),fVar10,param_2,2); + return uVar11; + } + uVar13 = (uint)(uVar2 == 1); + fVar10 = fVar4; + } + if ((uint)fVar5 < 0x2e800000) { + return CONCAT44(in_XMM1_Db,param_2 + DAT_18005e700); + } + dVar12 = FUN_1800519d0((double)fVar10); + dVar12 = FUN_180051580(dVar12 * (double)param_2); + if (dVar12 <= _DAT_18005ef78) { + if (DAT_18005ef70 <= dVar12) { + if (uVar13 == 0) { + return CONCAT44((int)((ulonglong)DAT_18005ef70 >> 0x20),(float)dVar12); + } + return CONCAT44((int)((ulonglong)(DAT_18005ef68 - dVar12) >> 0x20), + (float)(DAT_18005ef68 - dVar12)); + } + if (uVar13 != 0) { + fVar4 = -0.0; + goto LAB_180050b79; + } + goto LAB_180050b60; + } + if (uVar13 != 0) { + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,-INFINITY,3,0x11, + CONCAT44(in_stack_ffffffffffffffb4,0x22),fVar10,param_2,2); + return uVar11; + } +LAB_180050be1: + uVar13 = 0x11; + iVar6 = 3; +LAB_180050bfa: + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,INFINITY,iVar6,uVar13, + CONCAT44(in_stack_ffffffffffffffb4,0x22),fVar10,param_2,2); + return uVar11; + } + bVar8 = fVar5 == INFINITY; + if (bVar9) { + if ((param_1 & 0x7fffffff) == 0) { + uVar13 = 4; + iVar6 = 2; + goto LAB_180050bfa; + } + if ((uint)fVar4 < 0x3f800000) goto joined_r0x000180050c4e; + if (fVar4 == 1.0) { + return (ulonglong)DAT_18005ef80; + } + if (bVar8) { + return 0; + } + } + else { + if ((param_1 & 0x7fffffff) == 0) { + return 0; + } + if (0x3f7fffff < (uint)fVar4) { + if (fVar4 == 1.0) { + return (ulonglong)(uint)DAT_18005e700; + } +joined_r0x000180050c4e: + if (bVar8) { + _controlfp_s((uint *)0x0,0,0); + return 0x7f800000; + } + goto LAB_180050be1; + } + if (bVar8) { + return 0; + } + } +LAB_180050b60: + fVar4 = 0.0; +LAB_180050b79: + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,fVar4,4,0x12, + CONCAT44(in_stack_ffffffffffffffb4,0x22),fVar10,param_2,2); + return uVar11; + } + if (((param_2 != -NAN) || (uVar7 != 0x7f800000)) || ((param_1 & 0x7fffff) == 0)) + goto LAB_180050a8f; + } + } + uVar11 = FUN_180051d70(&DAT_18005ef84,0x1d,fVar10,1,8,CONCAT44(in_stack_ffffffffffffffb4,0x21), + fVar10,param_2,2); + } + return uVar11; +} + + +================================================================== + +### EXPORT FUNC 180050fc0 (754 bytes) name=FUN_180050fc0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +ulonglong FUN_180050fc0(ulonglong param_1) + +{ + float fVar1; + int iVar2; + uint uVar3; + uint uVar4; + float fVar5; + undefined4 uVar7; + ulonglong uVar6; + float fVar8; + undefined4 in_stack_ffffffffffffffc4; + + fVar8 = (float)param_1; + uVar7 = (undefined4)(param_1 >> 0x20); + fVar1 = ABS(fVar8); + if (0x42b17217 < (uint)fVar1) { + if (0x7f7fffff < (uint)fVar1) { + if ((param_1 & 0x7fffff) != 0) { + uVar6 = FUN_180051d70(&DAT_18005f0b8,0x14,(float)((uint)fVar8 | 0x400000),1,0, + CONCAT44(in_stack_ffffffffffffffc4,0x21),fVar8,0.0,1); + return uVar6; + } + if ((int)fVar8 < 0) { + return 0; + } + return param_1; + } + if (_DAT_18005f090 <= fVar8) { + uVar6 = FUN_180051d70(&DAT_18005f0b8,0x14,INFINITY,3,0x11, + CONCAT44(in_stack_ffffffffffffffc4,0x22),fVar8,0.0,1); + return uVar6; + } + if (fVar8 < DAT_18005f094) { + uVar6 = FUN_180051d70(&DAT_18005f0b8,0x14,0.0,4,0x12,CONCAT44(in_stack_ffffffffffffffc4,0x22), + fVar8,0.0,1); + return uVar6; + } + } + if ((uint)fVar1 < 0x3c800000) { + if ((uint)fVar1 < 0x32800000) { + return CONCAT44(uVar7,fVar8 + DAT_18005e700); + } + return CONCAT44(uVar7,((((((fVar8 * _DAT_18005f0b4 + _DAT_18005f0b0) * fVar8 + _DAT_18005f0ac) * + fVar8 + _DAT_18005f0a8) * fVar8 + _DAT_18005f0a4) * fVar8 + + DAT_18005e704) * fVar8 + DAT_18005e700) * fVar8 + DAT_18005e700); + } + fVar1 = fVar8 * _DAT_18005f098; + if (fVar1 <= _DAT_180057598) { + fVar1 = fVar1 - DAT_18005e704; + } + else { + fVar1 = fVar1 + DAT_18005e704; + } + uVar4 = (uint)fVar1; + uVar3 = uVar4 & 0x1f; + fVar1 = *(float *)(&DAT_18005ef90 + (longlong)(int)uVar3 * 4); + fVar8 = fVar8 - (float)(int)uVar4 * _DAT_18005f09c; + iVar2 = (int)((uVar4 - uVar3) + ((int)(uVar4 - uVar3) >> 0x1f & 0x1fU)) >> 5; + fVar5 = (float)(int)-uVar4 * _DAT_18005f0a0 + fVar8; + fVar8 = ((fVar5 * _DAT_18005f0a4 + DAT_18005e704) * fVar5 * fVar5 + + (float)(int)-uVar4 * _DAT_18005f0a0 + fVar8) * + (*(float *)(&DAT_18005f010 + (longlong)(int)uVar3 * 4) + fVar1) + + *(float *)(&DAT_18005f010 + (longlong)(int)uVar3 * 4); + if (iVar2 + 0x7eU < 0xfe) { + return (ulonglong)(uint)((fVar1 + fVar8) * (float)((iVar2 + 0x7f) * 0x800000)); + } + return (ulonglong) + (uint)((fVar1 + fVar8) * (float)((iVar2 / 2 + 0x7f) * 0x800000) * + (float)(((iVar2 - iVar2 / 2) + 0x7f) * 0x800000)); +} + + +================================================================== + +### EXPORT FUNC 1800512c0 (249 bytes) name=FUN_1800512c0 + +ulonglong FUN_1800512c0(float param_1) + +{ + ulonglong uVar1; + undefined4 in_stack_ffffffffffffffd4; + + if (((uint)param_1 & 0x7f800000) == 0x7f800000) { + if (((uint)param_1 & 0x7fffff) != 0) { + uVar1 = FUN_180051d70("sqrtf",5,(float)((uint)param_1 | 0x400000),1,0, + CONCAT44(in_stack_ffffffffffffffd4,0x21),param_1,0.0,1); + return uVar1; + } + if ((int)param_1 < 0) goto LAB_180051343; + } + if ((-1 < (int)param_1) || (ABS(param_1) == 0.0)) { + return (ulonglong)(uint)SQRT(param_1); + } +LAB_180051343: + uVar1 = FUN_180051d70("sqrtf",5,-NAN,1,8,CONCAT44(in_stack_ffffffffffffffd4,0x21),param_1,0.0,1); + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 1800513c0 (295 bytes) name=FUN_1800513c0 + +double FUN_1800513c0(double param_1) + +{ + double dVar1; + undefined4 in_stack_ffffffffffffffd4; + + if (((ulonglong)param_1 & 0x7ff0000000000000) == 0x7ff0000000000000) { + if (((ulonglong)param_1 & 0xfffffffffffff) != 0) { + dVar1 = (double)FUN_180051f80(&DAT_18005f0c8,5,(ulonglong)param_1 | 0x8000000000000,1,0, + CONCAT44(in_stack_ffffffffffffffd4,0x21),param_1,0,1); + return dVar1; + } + dVar1 = (double)((ulonglong)param_1 & 0x8000000000000000); + } + else { + if (((ulonglong)param_1 & 0x8000000000000000) == 0) goto LAB_1800514c8; + dVar1 = ABS(param_1); + } + if (dVar1 != 0.0) { + dVar1 = (double)FUN_180051f80(&DAT_18005f0c8,5,0xfff8000000000000,1,8, + CONCAT44(in_stack_ffffffffffffffd4,0x21),param_1,0,1); + return dVar1; + } +LAB_1800514c8: + return SQRT(param_1); +} + + +================================================================== + +### EXPORT FUNC 1800514f0 (130 bytes) name=_controlfp_s + +/* Library Function - Single Match + _controlfp_s + + Library: Visual Studio 2005 Release */ + +errno_t __cdecl _controlfp_s(uint *_CurrentState,uint _NewValue,uint _Mask) + +{ + DWORD *pDVar1; + uint uVar2; + + uVar2 = _Mask & 0xfff7ffff; + if ((_NewValue & uVar2 & 0xfcf0fce0) != 0) { + if (_CurrentState != (uint *)0x0) { + uVar2 = FUN_180052190(0,0); + *_CurrentState = uVar2; + } + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x16; + FUN_1800384e0(0,0,0,0,0); + return 0x16; + } + if (_CurrentState != (uint *)0x0) { + uVar2 = FUN_180052190(_NewValue,uVar2); + *_CurrentState = uVar2; + return 0; + } + FUN_180052190(_NewValue,uVar2); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180051580 (1095 bytes) name=FUN_180051580 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +double FUN_180051580(double param_1) + +{ + int iVar1; + double dVar2; + ulonglong uVar3; + uint uVar4; + double dVar5; + double dVar6; + double dVar7; + uint uVar8; + undefined4 uVar9; + undefined4 in_stack_ffffffffffffffb4; + + dVar2 = ABS(param_1); + if ((ulonglong)dVar2 < 0x4090000000000000) { +LAB_1800516e1: + if ((ulonglong)dVar2 < 0x3fb7154764ee6c2f) { + if (0x3bffffffffffffff < (ulonglong)dVar2) { + dVar2 = (double)((ulonglong)param_1 & 0xfffffffff8000000); + dVar6 = param_1 * DAT_18005f2e8; + dVar5 = (dVar2 * DAT_18005f2e8 - dVar6) + dVar2 * DAT_18005f2f0 + + (param_1 - dVar2) * DAT_18005f2e8 + (param_1 - dVar2) * DAT_18005f2f0; + dVar2 = dVar5 + dVar6; + dVar2 = (((dVar2 * _DAT_18005f358 + _DAT_18005f348) * dVar2 + _DAT_18005f338) * dVar2 + + DAT_18005f368) / + ((((dVar2 * _DAT_18005f360 - _DAT_18005f350) * dVar2 + _DAT_18005f340) * dVar2 - + _DAT_18005f330) * dVar2 + DAT_18005f368); + return dVar2 * dVar5 + dVar2 * dVar6 + _DAT_18005f370; + } + return param_1 + _DAT_18005f370; + } + dVar2 = param_1 * _DAT_18005f328; + if (dVar2 <= 0.0) { + dVar2 = dVar2 - DAT_18005f320; + } + else { + dVar2 = dVar2 + DAT_18005f320; + } + uVar4 = (uint)dVar2; + uVar8 = uVar4 & 0x1f; + dVar2 = *(double *)(&DAT_18005f0d0 + (longlong)(int)uVar8 * 8); + iVar1 = (int)((uVar4 - uVar8) + ((int)(uVar4 - uVar8) >> 0x1f & 0x1fU)) >> 5; + dVar7 = (param_1 - (double)(int)uVar4 * _DAT_18005f2f8) * DAT_18005f2e0; + dVar6 = (double)(int)-uVar4 * 0.0 * DAT_18005f2e0; + dVar5 = dVar6 + dVar7; + dVar5 = (((((dVar5 * _DAT_18005f318 + _DAT_18005f310) * dVar5 + _DAT_18005f308) * dVar5 + + _DAT_18005f300) * dVar5 + DAT_18005f320) * dVar5 * dVar5 + dVar6 + dVar7) * + (*(double *)(&DAT_18005f1d0 + (longlong)(int)uVar8 * 8) + dVar2) + + *(double *)(&DAT_18005f1d0 + (longlong)(int)uVar8 * 8); + if (0x7fb < iVar1 + 0x3fdU) { + return (dVar2 + dVar5) * (double)((longlong)(iVar1 / 2) + 0x3ff << 0x34) * + (double)((longlong)(iVar1 - iVar1 / 2) + 0x3ff << 0x34); + } + return (dVar2 + dVar5) * (double)((longlong)iVar1 + 0x3ff << 0x34); + } + if ((ulonglong)dVar2 < 0x7ff0000000000000) { + if (_DAT_18005f2d0 < param_1) { + dVar2 = (double)FUN_180051f80(&DAT_18005f378,0x14,0x7ff0000000000000,3,0x11, + CONCAT44(in_stack_ffffffffffffffb4,0x22),param_1,0,1); + return dVar2; + } + if (DAT_18005f2d8 <= param_1) goto LAB_1800516e1; + iVar1 = 4; + uVar9 = 0x22; + uVar8 = 0x12; + uVar3 = 0; + } + else { + if (((ulonglong)param_1 & 0xfffffffffffff) == 0) { + if (((ulonglong)param_1 & 0x8000000000000000) == 0) { + return param_1; + } + return 0.0; + } + uVar9 = 0x21; + uVar3 = (ulonglong)param_1 | 0x8000000000000; + iVar1 = 1; + uVar8 = 0; + } + dVar2 = (double)FUN_180051f80(&DAT_18005f378,0x14,uVar3,iVar1,uVar8, + CONCAT44(in_stack_ffffffffffffffb4,uVar9),param_1,0,1); + return dVar2; +} + + +================================================================== + +### EXPORT FUNC 1800519d0 (927 bytes) name=FUN_1800519d0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +double FUN_1800519d0(double param_1) + +{ + uint uVar1; + int iVar2; + int iVar3; + double dVar4; + double dVar5; + double dVar6; + double dVar7; + double dVar8; + undefined4 in_stack_ffffffffffffffc4; + + if (((ulonglong)param_1 & 0x7ff0000000000000) == 0x7ff0000000000000) { + if (((ulonglong)param_1 & 0xfffffffffffff) != 0) { + dVar4 = (double)FUN_180051f80(&DAT_18005f800,0x1a,(ulonglong)param_1 | 0x8000000000000,1,0, + CONCAT44(in_stack_ffffffffffffffc4,0x21),param_1,0,1); + return dVar4; + } + if (((ulonglong)param_1 & 0x8000000000000000) == 0) { + return param_1; + } + } + else { + if (ABS(param_1) == 0.0) { + dVar4 = (double)FUN_180051f80(&DAT_18005f800,0x1a,0xfff0000000000000,2,4, + CONCAT44(in_stack_ffffffffffffffc4,0x22),param_1,0,1); + return dVar4; + } + if (((ulonglong)param_1 & 0x8000000000000000) == 0) { + if (0x2f88200000000 < (longlong)param_1 + 0xc011f05600000000U) { + if ((ulonglong)param_1 < 0x10000000000000) { + iVar3 = 0x3c; + param_1 = (double)((ulonglong)param_1 | 0x3d0000000000000) - _DAT_18005f7e8; + } + else { + iVar3 = 0; + } + uVar1 = (uint)((ulonglong)param_1 >> 0x20); + iVar2 = (uVar1 >> 0xe & 0x3f | 0x40) + (uVar1 >> 0xd & 1); + dVar5 = (double)((ulonglong)param_1 & 0xfffffffffffff | 0x3fe0000000000000) - + (double)iVar2 * _DAT_18005f7f0; + dVar5 = dVar5 / (dVar5 * DAT_18005f320 + (double)iVar2 * _DAT_18005f7f0); + dVar4 = dVar5 * dVar5; + dVar4 = ((dVar4 * _DAT_18005f7c0 + _DAT_18005f7b8) * dVar4 + _DAT_18005f7b0) * dVar4 * dVar5 + + dVar5 + *(double *)(&DAT_18005f390 + (longlong)iVar2 * 8); + return (double)(int)(((uVar1 >> 0x14 & 0x7ff) - iVar3) + -0x3ff) + + *(double *)(&DAT_18005f180 + (longlong)iVar2 * 8) * DAT_18005f7c8 + + dVar4 * DAT_18005f7d0 + + *(double *)(&DAT_18005f180 + (longlong)iVar2 * 8) * DAT_18005f7d0 + + dVar4 * DAT_18005f7c8; + } + dVar8 = param_1 - _DAT_18005f370; + dVar4 = (double)((ulonglong)dVar8 & 0xffffffff00000000); + dVar6 = dVar8 / (dVar8 + _DAT_18005f7f8); + dVar7 = dVar6 + dVar6; + dVar5 = dVar7 * dVar7; + dVar5 = ((((dVar5 * _DAT_18005f7a8 + _DAT_18005f7a0) * dVar5 + _DAT_18005f798) * dVar5 + + _DAT_18005f588) * dVar5 * dVar7 - dVar6 * dVar8) + (dVar8 - dVar4); + return dVar5 * DAT_18005f7d0 + dVar4 * DAT_18005f7d0 + dVar5 * DAT_18005f7c8 + + dVar4 * DAT_18005f7c8; + } + } + dVar4 = (double)FUN_180051f80(&DAT_18005f800,0x1a,0xfff8000000000000,1,8, + CONCAT44(in_stack_ffffffffffffffc4,0x21),param_1,0,1); + return dVar4; +} + + +================================================================== + +### EXPORT FUNC 180051d70 (520 bytes) name=FUN_180051d70 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_180051d70(undefined8 param_1,uint param_2,float param_3,int param_4,uint param_5, + undefined8 param_6,float param_7,float param_8,int param_9) + +{ + float fVar1; + uint uVar2; + undefined4 extraout_var; + undefined8 uVar3; + uint uVar4; + undefined4 extraout_XMM0_Db; + undefined4 extraout_XMM0_Db_00; + ulonglong uVar5; + undefined1 auStackY_138 [32]; + ulonglong local_108; + float local_100; + float local_fc; + int local_f8; + undefined8 local_f0; + double local_e8; + double local_e0; + double local_d8; + uint local_c8 [12]; + float local_98; + uint local_88; + ulonglong local_58; + undefined4 uVar6; + + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_138; + uVar2 = _ctrlfp(0x1f80,0xffc0); + local_108 = CONCAT44(extraout_var,uVar2); + uVar4 = param_5 & 0x1f; + local_100 = param_3; + local_fc = param_3; + if (((param_5 & 8) == 0) || (-1 < (char)uVar2)) { + if (((param_5 & 4) == 0) || ((uVar2 & 0x200) == 0)) { + if (((param_5 & 1) == 0) || ((uVar2 & 0x400) == 0)) { + if (((param_5 & 2) != 0) && ((uVar2 & 0x800) != 0)) { + if ((param_5 & 0x10) != 0) { + _set_statfp(0x10); + } + uVar4 = param_5 & 0x1d; + } + } + else { + _set_statfp(8); + uVar4 = param_5 & 0x1e; + } + } + else { + _set_statfp(4); + uVar4 = param_5 & 0x1b; + } + } + else { + _set_statfp(1); + uVar4 = param_5 & 0x17; + } + if (((param_5 & 0x10) != 0) && ((uVar2 & 0x1000) != 0)) { + _set_statfp(0x20); + uVar4 = uVar4 & 0xffffffef; + } + fVar1 = param_8; + if (uVar4 != 0) { + if (param_9 == 2) { + local_98 = param_8; + local_88 = local_88 & 0xffffffe1 | 1; + } + FUN_1800527e0(local_c8,&local_108,(ulonglong)param_5,param_2,(uint *)¶m_7,(uint *)&local_100 + ); + } + if ((DAT_18006ed40 == 0) && (param_4 != 0)) { + local_e8 = (double)param_7; + local_e0 = (double)fVar1; + local_d8 = (double)local_100; + local_f8 = param_4; + local_f0 = param_1; + _ctrlfp((uint)local_108,0xffc0); + uVar3 = FUN_180037e10(); + uVar6 = extraout_XMM0_Db; + if ((int)uVar3 == 0) { + _set_errno_from_matherr(param_4); + uVar6 = extraout_XMM0_Db_00; + } + uVar5 = CONCAT44(uVar6,(float)local_d8); + } + else { + _set_errno_from_matherr(param_4); + _ctrlfp((uint)local_108,0xffc0); + uVar5 = (ulonglong)(uint)local_100; + } + return uVar5; +} + + +================================================================== + +### EXPORT FUNC 180051f80 (517 bytes) name=FUN_180051f80 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_180051f80(undefined8 param_1,uint param_2,undefined8 param_3,int param_4,uint param_5, + undefined8 param_6,undefined8 param_7,undefined8 param_8,int param_9) + +{ + uint uVar1; + undefined4 extraout_var; + undefined8 uVar2; + uint uVar3; + undefined1 auStackY_138 [32]; + ulonglong local_108; + undefined8 local_100; + undefined8 local_f8; + int local_f0; + undefined8 local_e8; + undefined8 local_e0; + undefined8 local_d8; + undefined8 local_d0; + uint local_c8 [12]; + undefined8 local_98; + uint local_88; + ulonglong local_58; + + local_58 = DAT_18006cea0 ^ (ulonglong)auStackY_138; + uVar1 = _ctrlfp(0x1f80,0xffc0); + local_108 = CONCAT44(extraout_var,uVar1); + uVar3 = param_5 & 0x1f; + local_100 = param_3; + local_f8 = param_3; + if (((param_5 & 8) == 0) || (-1 < (char)uVar1)) { + if (((param_5 & 4) == 0) || ((uVar1 & 0x200) == 0)) { + if (((param_5 & 1) == 0) || ((uVar1 & 0x400) == 0)) { + if (((param_5 & 2) != 0) && ((uVar1 & 0x800) != 0)) { + if ((param_5 & 0x10) != 0) { + _set_statfp(0x10); + } + uVar3 = param_5 & 0x1d; + } + } + else { + _set_statfp(8); + uVar3 = param_5 & 0x1e; + } + } + else { + _set_statfp(4); + uVar3 = param_5 & 0x1b; + } + } + else { + _set_statfp(1); + uVar3 = param_5 & 0x17; + } + if (((param_5 & 0x10) != 0) && ((uVar1 & 0x1000) != 0)) { + _set_statfp(0x20); + uVar3 = uVar3 & 0xffffffef; + } + uVar2 = param_8; + if (uVar3 != 0) { + if (param_9 == 2) { + local_98 = param_8; + local_88 = local_88 & 0xffffffe3 | 3; + } + FUN_1800527b0(local_c8,&local_108,(ulonglong)param_5,param_2,(uint *)¶m_7,(uint *)&local_100 + ); + } + if ((DAT_18006ed40 == 0) && (param_4 != 0)) { + local_e0 = param_7; + local_d0 = local_100; + local_d8 = uVar2; + local_f0 = param_4; + local_e8 = param_1; + _ctrlfp((uint)local_108,0xffc0); + uVar2 = FUN_180037e10(); + if ((int)uVar2 == 0) { + _set_errno_from_matherr(param_4); + } + } + else { + _set_errno_from_matherr(param_4); + _ctrlfp((uint)local_108,0xffc0); + local_d0 = local_100; + } + return local_d0; +} + + +================================================================== + +### EXPORT FUNC 180052190 (625 bytes) name=FUN_180052190 + +uint FUN_180052190(uint param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + + uVar1 = _get_fpsr(); + uVar2 = 0; + if ((uVar1 & 0x80) != 0) { + uVar2 = 0x10; + } + if ((uVar1 >> 9 & 1) != 0) { + uVar2 = uVar2 | 8; + } + if ((uVar1 >> 10 & 1) != 0) { + uVar2 = uVar2 | 4; + } + if ((uVar1 >> 0xb & 1) != 0) { + uVar2 = uVar2 | 2; + } + if ((uVar1 >> 0xc & 1) != 0) { + uVar2 = uVar2 | 1; + } + if ((uVar1 >> 8 & 1) != 0) { + uVar2 = uVar2 | 0x80000; + } + uVar3 = uVar1 & 0x6000; + if (uVar3 != 0) { + if (uVar3 == 0x2000) { + uVar2 = uVar2 | 0x100; + } + else if (uVar3 == 0x4000) { + uVar2 = uVar2 | 0x200; + } + else if (uVar3 == 0x6000) { + uVar2 = uVar2 | 0x300; + } + } + uVar1 = uVar1 & 0x8040; + if (uVar1 == 0x40) { + uVar2 = uVar2 | 0x2000000; + } + else if (uVar1 == 0x8000) { + uVar2 = uVar2 | 0x3000000; + } + else if (uVar1 == 0x8040) { + uVar2 = uVar2 | 0x1000000; + } + uVar1 = ~(param_2 & 0x308031f) & uVar2 | param_1 & param_2 & 0x308031f; + if (uVar1 != uVar2) { + uVar3 = 0; + if ((uVar1 & 0x10) != 0) { + uVar3 = 0x80; + } + if ((uVar1 & 8) != 0) { + uVar3 = uVar3 | 0x200; + } + if ((uVar1 & 4) != 0) { + uVar3 = uVar3 | 0x400; + } + if ((uVar1 & 2) != 0) { + uVar3 = uVar3 | 0x800; + } + if ((uVar1 & 1) != 0) { + uVar3 = uVar3 | 0x1000; + } + if ((uVar1 >> 0x13 & 1) != 0) { + uVar3 = uVar3 | 0x100; + } + uVar2 = uVar1 & 0x300; + if (uVar2 != 0) { + if (uVar2 == 0x100) { + uVar3 = uVar3 | 0x2000; + } + else if (uVar2 == 0x200) { + uVar3 = uVar3 | 0x4000; + } + else if (uVar2 == 0x300) { + uVar3 = uVar3 | 0x6000; + } + } + uVar1 = uVar1 & 0x3000000; + if (uVar1 == 0x1000000) { + uVar3 = uVar3 | 0x8040; + } + else if (uVar1 == 0x2000000) { + uVar3 = uVar3 | 0x40; + } + else if (uVar1 == 0x3000000) { + uVar3 = uVar3 | 0x8000; + } + if ((DAT_18006eb68 == '\0') || ((uVar3 & 0x40) == 0)) { + uVar3 = uVar3 & 0xffffffbf; + FUN_180052950(uVar3); + } + else { + FUN_180052950(uVar3); + } + uVar2 = 0; + if ((uVar3 & 0x80) != 0) { + uVar2 = 0x10; + } + if ((uVar3 >> 9 & 1) != 0) { + uVar2 = uVar2 | 8; + } + if ((uVar3 >> 10 & 1) != 0) { + uVar2 = uVar2 | 4; + } + if ((uVar3 >> 0xb & 1) != 0) { + uVar2 = uVar2 | 2; + } + if ((uVar3 >> 0xc & 1) != 0) { + uVar2 = uVar2 | 1; + } + if ((uVar3 >> 8 & 1) != 0) { + uVar2 = uVar2 | 0x80000; + } + uVar1 = uVar3 & 0x6000; + if (uVar1 != 0) { + if (uVar1 == 0x2000) { + uVar2 = uVar2 | 0x100; + } + else if (uVar1 == 0x4000) { + uVar2 = uVar2 | 0x200; + } + else if (uVar1 == 0x6000) { + uVar2 = uVar2 | 0x300; + } + } + uVar3 = uVar3 & 0x8040; + if (uVar3 == 0x40) { + uVar2 = uVar2 | 0x2000000; + } + else if (uVar3 == 0x8000) { + uVar2 = uVar2 | 0x3000000; + } + else if (uVar3 == 0x8040) { + uVar2 = uVar2 | 0x1000000; + } + } + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 180052420 (49 bytes) name=FUN_180052420 + +undefined8 FUN_180052420(undefined8 *param_1) + +{ + undefined8 uVar1; + + if ((*(int *)*param_1 == -0x3ffffffb) || (*(int *)*param_1 == -0x3fffffe3)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180052460 (838 bytes) name=FUN_180052460 + +void FUN_180052460(uint *param_1,ulonglong *param_2,ulonglong param_3,uint param_4,uint *param_5, + uint *param_6,DWORD param_7) + +{ + uint uVar1; + DWORD dwExceptionCode; + uint *local_res8; + + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + dwExceptionCode = param_7; + if ((param_3 & 0x10) != 0) { + param_1[1] = param_1[1] | 1; + dwExceptionCode = 0xc000008f; + } + if ((param_3 & 2) != 0) { + dwExceptionCode = 0xc0000093; + param_1[1] = param_1[1] | 2; + } + if ((param_3 & 1) != 0) { + dwExceptionCode = 0xc0000091; + param_1[1] = param_1[1] | 4; + } + if ((param_3 & 4) != 0) { + dwExceptionCode = 0xc000008e; + param_1[1] = param_1[1] | 8; + } + if ((param_3 & 8) != 0) { + dwExceptionCode = 0xc0000090; + param_1[1] = param_1[1] | 0x10; + } + param_1[2] = param_1[2] ^ (~((int)(*param_2 >> 7) << 4) ^ param_1[2]) & 0x10; + param_1[2] = param_1[2] ^ (~((int)(*param_2 >> 9) << 3) ^ param_1[2]) & 8; + param_1[2] = param_1[2] ^ (~((int)(*param_2 >> 10) << 2) ^ param_1[2]) & 4; + param_1[2] = param_1[2] ^ (~((int)(*param_2 >> 0xb) * 2) ^ param_1[2]) & 2; + param_1[2] = param_1[2] ^ (~((uint)*param_2 >> 0xc) ^ param_1[2]) & 1; + local_res8 = param_1; + uVar1 = FUN_180052840(); + if ((uVar1 & 1) != 0) { + local_res8[3] = local_res8[3] | 0x10; + } + if ((uVar1 & 4) != 0) { + local_res8[3] = local_res8[3] | 8; + } + if ((uVar1 & 8) != 0) { + local_res8[3] = local_res8[3] | 4; + } + if ((uVar1 & 0x10) != 0) { + local_res8[3] = local_res8[3] | 2; + } + if ((uVar1 & 0x20) != 0) { + local_res8[3] = local_res8[3] | 1; + } + uVar1 = (uint)*param_2 & 0x6000; + if (uVar1 == 0) { + *local_res8 = *local_res8 & 0xfffffffc; + } + else if (uVar1 == 0x2000) { + *local_res8 = *local_res8 & 0xfffffffd; + *local_res8 = *local_res8 | 1; + } + else if (uVar1 == 0x4000) { + *local_res8 = *local_res8 & 0xfffffffe; + *local_res8 = *local_res8 | 2; + } + else if (uVar1 == 0x6000) { + *local_res8 = *local_res8 | 3; + } + *local_res8 = *local_res8 & 0xfffe001f; + *local_res8 = *local_res8 | (param_4 & 0xfff) << 5; + local_res8[8] = local_res8[8] | 1; + if (param_7 == 0) { + local_res8[8] = local_res8[8] & 0xffffffe3 | 2; + *(undefined8 *)(local_res8 + 4) = *(undefined8 *)param_5; + local_res8[0x18] = local_res8[0x18] | 1; + local_res8[0x18] = local_res8[0x18] & 0xffffffe3 | 2; + *(undefined8 *)(local_res8 + 0x14) = *(undefined8 *)param_6; + } + else { + local_res8[8] = local_res8[8] & 0xffffffe1; + local_res8[4] = *param_5; + local_res8[0x18] = local_res8[0x18] | 1; + local_res8[0x18] = local_res8[0x18] & 0xffffffe1; + local_res8[0x14] = *param_6; + } + _clrfp(); + RaiseException(dwExceptionCode,0,1,(ULONG_PTR *)&local_res8); + if ((local_res8[2] & 0x10) != 0) { + *param_2 = *param_2 & 0xffffffffffffff7f; + } + if ((local_res8[2] & 8) != 0) { + *param_2 = *param_2 & 0xfffffffffffffdff; + } + if ((local_res8[2] & 4) != 0) { + *param_2 = *param_2 & 0xfffffffffffffbff; + } + if ((local_res8[2] & 2) != 0) { + *param_2 = *param_2 & 0xfffffffffffff7ff; + } + if ((local_res8[2] & 1) != 0) { + *param_2 = *param_2 & 0xffffffffffffefff; + } + uVar1 = *local_res8 & 3; + if (uVar1 == 0) { + *param_2 = *param_2 & 0xffffffffffff9fff; + } + else if (uVar1 == 1) { + *param_2 = *param_2 & 0xffffffffffffbfff; + *param_2 = *param_2 | 0x2000; + } + else if (uVar1 == 2) { + *param_2 = *param_2 & 0xffffffffffffdfff; + *param_2 = *param_2 | 0x4000; + } + else if (uVar1 == 3) { + *param_2 = *param_2 | 0x6000; + } + if (param_7 == 0) { + *(undefined8 *)param_6 = *(undefined8 *)(local_res8 + 0x14); + return; + } + *param_6 = local_res8[0x14]; + return; +} + + +================================================================== + +### EXPORT FUNC 1800527b0 (42 bytes) name=FUN_1800527b0 + +void FUN_1800527b0(uint *param_1,ulonglong *param_2,ulonglong param_3,uint param_4,uint *param_5, + uint *param_6) + +{ + FUN_180052460(param_1,param_2,param_3,param_4,param_5,param_6,0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800527e0 (42 bytes) name=FUN_1800527e0 + +void FUN_1800527e0(uint *param_1,ulonglong *param_2,ulonglong param_3,uint param_4,uint *param_5, + uint *param_6) + +{ + FUN_180052460(param_1,param_2,param_3,param_4,param_5,param_6,1); + return; +} + + +================================================================== + +### EXPORT FUNC 180052810 (48 bytes) name=_set_errno_from_matherr + +/* Library Function - Single Match + _set_errno_from_matherr + + Library: Visual Studio 2005 Release */ + +void _set_errno_from_matherr(int param_1) + +{ + DWORD *pDVar1; + + if (param_1 == 1) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x21; + } + else if ((1 < param_1) && (param_1 < 4)) { + pDVar1 = FUN_180035b40(); + *pDVar1 = 0x22; + return; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180052840 (17 bytes) name=FUN_180052840 + +uint FUN_180052840(void) + +{ + uint uVar1; + + uVar1 = _get_fpsr(); + return uVar1 & 0x3f; +} + + +================================================================== + +### EXPORT FUNC 180052860 (29 bytes) name=_clrfp + +/* Library Function - Single Match + _clrfp + + Library: Visual Studio */ + +uint _clrfp(void) + +{ + uint uVar1; + + uVar1 = _get_fpsr(); + _fclrf(); + return uVar1 & 0x3f; +} + + +================================================================== + +### EXPORT FUNC 180052880 (101 bytes) name=_ctrlfp + +/* Library Function - Single Match + _ctrlfp + + Libraries: Visual Studio 2010 Release, Visual Studio 2012 Release, Visual Studio 2015 Release, + Visual Studio 2019 Release */ + +uint _ctrlfp(uint param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + + uVar1 = _get_fpsr(); + uVar2 = (~param_2 | 0xffff807f) & uVar1 | param_1 & param_2; + if ((DAT_18006ed44 == '\0') || ((uVar2 & 0x40) == 0)) { + FUN_180052950(uVar2 & 0xffffffbf); + } + else { + FUN_180052950(uVar2); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180052900 (45 bytes) name=_ctrlfp$filt$0 + +/* Library Function - Single Match + _ctrlfp$filt$0 + + Library: Visual Studio 2005 Release */ + +undefined8 _ctrlfp_filt_0(undefined8 *param_1) + +{ + undefined8 uVar1; + + if ((*(int *)*param_1 == -0x3ffffffb) || (*(int *)*param_1 == -0x3fffffe3)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 180052930 (31 bytes) name=_set_statfp + +/* Library Function - Single Match + _set_statfp + + Library: Visual Studio */ + +void _set_statfp(uint param_1) + +{ + uint uVar1; + + uVar1 = _get_fpsr(); + FUN_180052950(uVar1 | param_1 & 0x3f); + return; +} + + +================================================================== + +### EXPORT FUNC 180052950 (10 bytes) name=FUN_180052950 + +void FUN_180052950(undefined4 param_1) + +{ + MXCSR = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 18005295a (20 bytes) name=_fclrf + +/* Library Function - Single Match + _fclrf + + Library: Visual Studio */ + +void _fclrf(void) + +{ + MXCSR = MXCSR & 0xffffffc0; + return; +} + + +================================================================== + +### EXPORT FUNC 1800529a0 (78 bytes) name=__chkstk + +/* WARNING: This is an inlined function */ +/* Library Function - Single Match + __chkstk + + Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012 */ + +void __chkstk(void) + +{ + undefined1 *in_RAX; + undefined1 *puVar1; + undefined1 *puVar2; + undefined1 local_res8 [32]; + + puVar1 = local_res8 + -(longlong)in_RAX; + if (local_res8 < in_RAX) { + puVar1 = (undefined1 *)0x0; + } + if (puVar1 < StackLimit) { + puVar2 = StackLimit; + do { + puVar2 = puVar2 + -0x1000; + *puVar2 = 0; + } while ((undefined1 *)((ulonglong)puVar1 & 0xfffffffffffff000) != puVar2); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180052a00 (69 bytes) name=_CallSettingFrame + +/* Library Function - Single Match + _CallSettingFrame + + Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release */ + +void _CallSettingFrame(void) + +{ + code *pcVar1; + + pcVar1 = (code *)FUN_180043d50(); + (*pcVar1)(); + FUN_180043d80(); + FUN_180043d50(); + return; +} + + +================================================================== + +### EXPORT FUNC 180052a60 (16 bytes) name=_get_fpsr + +/* Library Function - Single Match + _get_fpsr + + Libraries: Visual Studio 2010 Release, Visual Studio 2012 Release, Visual Studio 2015 Release, + Visual Studio 2019 Release */ + +undefined4 _get_fpsr(void) + +{ + return MXCSR; +} + + +================================================================== + +### EXPORT FUNC 180052a70 (32 bytes) name=FUN_180052a70 + +void FUN_180052a70(void) + +{ + int iVar1; + + FUN_180022e94(); + iVar1 = FUN_180034980(0x18001e9f8); + DAT_18006edac = (char)iVar1; + return; +} + + +================================================================== + +### EXPORT FUNC 180052ab4 (12 bytes) name=FUN_180052ab4 + +void FUN_180052ab4(void) + +{ + FUN_180034980(0x180052eb4); + return; +} + + +================================================================== + +### EXPORT FUNC 180052ad8 (28 bytes) name=FUN_180052ad8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052ad8(void) + +{ + _DAT_1800721d8 = RegisterWindowMessageW(L"commctrl_DragListMsg"); + return; +} + + +================================================================== + +### EXPORT FUNC 180052af4 (143 bytes) name=FUN_180052af4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052af4(void) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)&DAT_1800721e0); + _DAT_180072240 = CWnd::XAccessible::vftable; + _DAT_180072248 = CWnd::XAccessibleServer::vftable; + _DAT_1800721e0 = CWnd::vftable; + _DAT_180072220 = 0; + DAT_180072228 = 0; + _DAT_180072238 = 0; + _DAT_180072250 = 0; + _DAT_180072258 = 0; + _DAT_180072260 = 0; + _DAT_180072268 = 0; + _DAT_180072270 = 0; + _DAT_180072278 = 0; + _DAT_180072280 = 0; + FUN_180034980(0x180052ed8); + return; +} + + +================================================================== + +### EXPORT FUNC 180052b84 (147 bytes) name=FUN_180052b84 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052b84(void) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)&DAT_180072290); + _DAT_1800722f0 = CWnd::XAccessible::vftable; + _DAT_1800722f8 = CWnd::XAccessibleServer::vftable; + _DAT_180072290 = CWnd::vftable; + DAT_1800722d8 = 0; + _DAT_1800722e8 = 0; + _DAT_180072300 = 0; + _DAT_180072308 = 0; + _DAT_180072310 = 0; + _DAT_180072318 = 0; + _DAT_180072320 = 0; + _DAT_180072328 = 0; + _DAT_180072330 = 0; + _DAT_1800722d0 = 1; + FUN_180034980(0x180052ee4); + return; +} + + +================================================================== + +### EXPORT FUNC 180052c18 (144 bytes) name=FUN_180052c18 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052c18(void) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)&DAT_180072340); + _DAT_180072380 = 0xffffffffffffffff; + _DAT_1800723a0 = CWnd::XAccessible::vftable; + _DAT_1800723a8 = CWnd::XAccessibleServer::vftable; + DAT_180072388 = 0; + _DAT_180072398 = 0; + _DAT_1800723b0 = 0; + _DAT_1800723b8 = 0; + _DAT_1800723c0 = 0; + _DAT_1800723c8 = 0; + _DAT_1800723d0 = 0; + _DAT_1800723d8 = 0; + _DAT_1800723e0 = 0; + _DAT_180072340 = CWnd::vftable; + FUN_180034980(0x180052ef0); + return; +} + + +================================================================== + +### EXPORT FUNC 180052ca8 (147 bytes) name=FUN_180052ca8 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052ca8(void) + +{ + CCmdTarget::CCmdTarget((CCmdTarget *)&DAT_1800723f0); + _DAT_180072450 = CWnd::XAccessible::vftable; + _DAT_180072458 = CWnd::XAccessibleServer::vftable; + _DAT_1800723f0 = CWnd::vftable; + DAT_180072438 = 0; + _DAT_180072448 = 0; + _DAT_180072460 = 0; + _DAT_180072468 = 0; + _DAT_180072470 = 0; + _DAT_180072478 = 0; + _DAT_180072480 = 0; + _DAT_180072488 = 0; + _DAT_180072490 = 0; + _DAT_180072430 = 0xfffffffffffffffe; + FUN_180034980(0x180052efc); + return; +} + + +================================================================== + +### EXPORT FUNC 180052d3c (32 bytes) name=FUN_180052d3c + +void FUN_180052d3c(void) + +{ + FUN_18002fe50((AUX_DATA *)&DAT_1800724c0); + FUN_180034980(0x180052f08); + return; +} + + +================================================================== + +### EXPORT FUNC 180052d5c (72 bytes) name=FUN_180052d5c + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052d5c(void) + +{ + FUN_18001ee18(0x180072540,0); + _DAT_180072554 = 0; + _DAT_180072558 = 0; + _DAT_18007265c = 0xf022; + _DAT_180072540 = CResourceException::vftable; + FUN_180034980(0x180052f14); + return; +} + + +================================================================== + +### EXPORT FUNC 180052da4 (72 bytes) name=FUN_180052da4 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052da4(void) + +{ + FUN_18001ee18(0x180072660,0); + _DAT_180072674 = 0; + _DAT_180072678 = 0; + _DAT_18007277c = 0xf024; + _DAT_180072660 = CUserException::vftable; + FUN_180034980(0x180052f24); + return; +} + + +================================================================== + +### EXPORT FUNC 180052df8 (32 bytes) name=FUN_180052df8 + +void FUN_180052df8(void) + +{ + FUN_1800504a4((undefined4 *)&DAT_180073670); + FUN_180034980(0x180052f34); + return; +} + + +================================================================== + +### EXPORT FUNC 180052e18 (108 bytes) name=FUN_180052e18 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052e18(void) + +{ + undefined8 uVar1; + + FUN_1800357d0((ulonglong *)&DAT_1800736d8,0,0x28); + DAT_180073708 = 0; + _DAT_180073710 = 0; + _DAT_180073714 = 0; + _DAT_180073700 = 0; + _DAT_1800736d0 = 0x48; + uVar1 = FUN_180050364((LPCRITICAL_SECTION)&DAT_1800736d8); + if ((int)uVar1 < 0) { + _DAT_1800736d0 = 0; + DAT_1800da4a4 = 1; + } + FUN_180034980(0x180052f40); + return; +} + + +================================================================== + +### EXPORT FUNC 180052f40 (67 bytes) name=FUN_180052f40 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180052f40(void) + +{ + FUN_1800503b8((int *)&DAT_1800736d0,DAT_180073678); + if (DAT_180073708 != (LPVOID)0x0) { + FUN_180034a70(DAT_180073708); + DAT_180073708 = (LPVOID)0x0; + } + _DAT_180073710 = 0; + _DAT_180073714 = 0; + return; +} + + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/exports_decomp_ThermalSDK.dll.txt b/analysis/ida/export/ghidra_dump/exports_decomp_ThermalSDK.dll.txt new file mode 100644 index 0000000..ff8c423 --- /dev/null +++ b/analysis/ida/export/ghidra_dump/exports_decomp_ThermalSDK.dll.txt @@ -0,0 +1,13142 @@ +### EXPORT FUNC 180001000 (67 bytes) name=FUN_180001000 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180001000(void) + +{ + FUN_180002ab0((ulonglong *)&DAT_180016060,1); + _DAT_180016068 = DAT_180016060; + *DAT_180016060 = 0x7e; + _DAT_180016068 = _DAT_180016068 + 1; + atexit(FUN_18000e300); + return; +} + + +================================================================== + +### EXPORT FUNC 180001050 (79 bytes) name=FUN_180001050 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180001050(void) + +{ + FUN_180002ab0((ulonglong *)&DAT_180016000,8); + _DAT_180016008 = DAT_180016000; + *DAT_180016000 = 0x339393939393902; + _DAT_180016008 = _DAT_180016008 + 1; + atexit(FUN_18000e370); + return; +} + + +================================================================== + +### EXPORT FUNC 1800010a0 (79 bytes) name=FUN_1800010a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_1800010a0(void) + +{ + FUN_180002ab0((ulonglong *)&DAT_180016018,8); + _DAT_180016020 = DAT_180016018; + *DAT_180016018 = 0x334313231323102; + _DAT_180016020 = _DAT_180016020 + 1; + atexit(FUN_18000e3e0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800010f0 (67 bytes) name=FUN_1800010f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_1800010f0(void) + +{ + FUN_180002ab0((ulonglong *)&DAT_180016090,1); + _DAT_180016098 = DAT_180016090; + *DAT_180016090 = 0x13; + _DAT_180016098 = _DAT_180016098 + 1; + atexit(FUN_18000e450); + return; +} + + +================================================================== + +### EXPORT FUNC 180001140 (67 bytes) name=FUN_180001140 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180001140(void) + +{ + FUN_180002ab0((ulonglong *)&DAT_180016078,1); + _DAT_180016080 = DAT_180016078; + *DAT_180016078 = 0x12; + _DAT_180016080 = _DAT_180016080 + 1; + atexit(FUN_18000e4c0); + return; +} + + +================================================================== + +### EXPORT FUNC 180001190 (92 bytes) name=FUN_180001190 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180001190(void) + +{ + void *pvVar1; + undefined4 local_res8; + undefined2 local_resc; + + local_res8 = 0x70757766; + local_resc = 0xa0d; + FUN_180002ab0((ulonglong *)&DAT_180016030,6); + pvVar1 = DAT_180016030; + memmove(DAT_180016030,&local_res8,6); + _DAT_180016038 = (longlong)pvVar1 + 6; + atexit(FUN_18000e530); + return; +} + + +================================================================== + +### EXPORT FUNC 1800011f0 (90 bytes) name=FUN_1800011f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_1800011f0(void) + +{ + void *pvVar1; + undefined4 local_res8; + undefined1 local_resc; + + local_res8 = 0xd726576; + local_resc = 10; + FUN_180002ab0((ulonglong *)&DAT_1800160a8,5); + pvVar1 = DAT_1800160a8; + memmove(DAT_1800160a8,&local_res8,5); + _DAT_1800160b0 = (longlong)pvVar1 + 5; + atexit(FUN_18000e5a0); + return; +} + + +================================================================== + +### EXPORT FUNC 180001250 (67 bytes) name=FUN_180001250 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180001250(void) + +{ + FUN_180002ab0((ulonglong *)&DAT_180016048,1); + _DAT_180016050 = DAT_180016048; + *DAT_180016048 = 4; + _DAT_180016050 = _DAT_180016050 + 1; + atexit(FUN_18000e610); + return; +} + + +================================================================== + +### EXPORT FUNC 1800012a0 (45 bytes) name=FUN_1800012a0 + +void FUN_1800012a0(void) + +{ + FUN_180002610(&DAT_180015060,"SCANNER_NORMAL",0xe); + atexit(FUN_18000e6f0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800012d0 (45 bytes) name=FUN_1800012d0 + +void FUN_1800012d0(void) + +{ + FUN_180002610(&DAT_1800150a0,"SCANNER_OFFLINE",0xf); + atexit(FUN_18000e760); + return; +} + + +================================================================== + +### EXPORT FUNC 180001300 (45 bytes) name=FUN_180001300 + +void FUN_180001300(void) + +{ + FUN_180002610(&DAT_1800151e0,"SCANNER_DATA_EXCEED",0x13); + atexit(FUN_18000e7d0); + return; +} + + +================================================================== + +### EXPORT FUNC 180001330 (45 bytes) name=FUN_180001330 + +void FUN_180001330(void) + +{ + FUN_180002610(&DAT_180015180,"SCANNER_FILTED_QR",0x11); + atexit(FUN_18000e840); + return; +} + + +================================================================== + +### EXPORT FUNC 180001360 (45 bytes) name=FUN_180001360 + +void FUN_180001360(void) + +{ + FUN_180002610(&DAT_1800150e0,"SCANNER_FILTED_EAN8",0x13); + atexit(FUN_18000e8b0); + return; +} + + +================================================================== + +### EXPORT FUNC 180001390 (45 bytes) name=FUN_180001390 + +void FUN_180001390(void) + +{ + FUN_180002610(&DAT_180015160,"SCANNER_FILTED_EAN13",0x14); + atexit(FUN_18000e920); + return; +} + + +================================================================== + +### EXPORT FUNC 1800013c0 (45 bytes) name=FUN_1800013c0 + +void FUN_1800013c0(void) + +{ + FUN_180002610(&DAT_1800151c0,"SCANNER_FILTED_C39",0x12); + atexit(FUN_18000e990); + return; +} + + +================================================================== + +### EXPORT FUNC 1800013f0 (45 bytes) name=FUN_1800013f0 + +void FUN_1800013f0(void) + +{ + FUN_180002610(&DAT_180015120,"SCANNER_FILTED_C128",0x13); + atexit(FUN_18000ea00); + return; +} + + +================================================================== + +### EXPORT FUNC 180001420 (45 bytes) name=FUN_180001420 + +void FUN_180001420(void) + +{ + FUN_180002610(&DAT_1800150c0,"SCANNER_FILTED_GS1",0x12); + atexit(FUN_18000ea70); + return; +} + + +================================================================== + +### EXPORT FUNC 180001450 (45 bytes) name=FUN_180001450 + +void FUN_180001450(void) + +{ + FUN_180002610(&DAT_180015140,"SCANNER_FILTED_UPA",0x12); + atexit(FUN_18000eae0); + return; +} + + +================================================================== + +### EXPORT FUNC 180001480 (45 bytes) name=FUN_180001480 + +void FUN_180001480(void) + +{ + FUN_180002610(&DAT_180015100,"SCANNER_FILTED_UPB",0x12); + atexit(FUN_18000eb50); + return; +} + + +================================================================== + +### EXPORT FUNC 1800014b0 (45 bytes) name=FUN_1800014b0 + +void FUN_1800014b0(void) + +{ + FUN_180002610(&DAT_1800151a0,"SCANNER_FILTED_UPE",0x12); + atexit(FUN_18000ebc0); + return; +} + + +================================================================== + +### EXPORT FUNC 1800014e0 (45 bytes) name=FUN_1800014e0 + +void FUN_1800014e0(void) + +{ + FUN_180002610(&DAT_180015040,"SCANNER_FILTED_COUPON",0x15); + atexit(FUN_18000ec30); + return; +} + + +================================================================== + +### EXPORT FUNC 180001510 (45 bytes) name=FUN_180001510 + +void FUN_180001510(void) + +{ + FUN_180002610(&DAT_180015080,"SCANNER_FILTED_WWW",0x12); + atexit(FUN_18000eca0); + return; +} + + +================================================================== + +### EXPORT FUNC 180001540 (6 bytes) name=FUN_180001540 + +undefined8 FUN_180001540(void) + +{ + return 1; +} + + +================================================================== + +### EXPORT FUNC 180001550 (116 bytes) name=FUN_180001550 + +void FUN_180001550(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = MAG_IsProcessingImage(param_1[4]); + if (iVar1 != 0) { + MAG_StopProcessImage(param_1[4]); + } + iVar1 = MAG_IsLinked(param_1[4]); + if (iVar1 != 0) { + MAG_DisLinkCamera(param_1[4]); + } + iVar1 = MAG_IsInitialized(param_1[4]); + if (iVar1 != 0) { + MAG_Free(param_1[4]); + *param_1 = 0; + } + iVar1 = MAG_IsChannelAvailable(param_1[4]); + if (iVar1 != 0) { + MAG_DelChannel(param_1[4]); + param_1[4] = 0xffffffff; + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800015d0 (121 bytes) name=FUN_1800015d0 + +int FUN_1800015d0(int *param_1) + +{ + int iVar1; + uint uVar2; + + if (*param_1 != 0) { + return 1; + } + uVar2 = param_1[4]; + if (0x80 < uVar2) { + uVar2 = 0; + do { + iVar1 = MAG_IsChannelAvailable(uVar2); + if (iVar1 == 0) { + MAG_NewChannel(uVar2); + param_1[4] = uVar2; + goto LAB_180001626; + } + uVar2 = uVar2 + 1; + } while ((int)uVar2 < 0x81); + uVar2 = param_1[4]; +LAB_180001626: + if (0x80 < uVar2) goto LAB_18000163c; + } + iVar1 = MAG_Initialize(uVar2,*(undefined8 *)(param_1 + 2)); + *param_1 = iVar1; +LAB_18000163c: + return *param_1; +} + + +================================================================== + +### EXPORT FUNC 180001650 (51 bytes) name=FUN_180001650 + +undefined8 * FUN_180001650(undefined8 *param_1,longlong param_2) + +{ + *param_1 = std::exception::vftable; + param_1[1] = 0; + param_1[2] = 0; + __std_exception_copy(param_2 + 8); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800016b0 (19 bytes) name=FUN_1800016b0 + +char * FUN_1800016b0(longlong param_1) + +{ + char *pcVar1; + + pcVar1 = "Unknown exception"; + if (*(char **)(param_1 + 8) != (char *)0x0) { + pcVar1 = *(char **)(param_1 + 8); + } + return pcVar1; +} + + +================================================================== + +### EXPORT FUNC 1800016d0 (67 bytes) name=FUN_1800016d0 + +undefined8 * FUN_1800016d0(undefined8 *param_1,ulonglong param_2) + +{ + *param_1 = std::exception::vftable; + __std_exception_destroy(param_1 + 1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180001720 (33 bytes) name=FUN_180001720 + +undefined8 * FUN_180001720(undefined8 *param_1) + +{ + param_1[2] = 0; + param_1[1] = "bad array new length"; + *param_1 = std::bad_array_new_length::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180001750 (31 bytes) name=FUN_180001750 + +void FUN_180001750(void) + +{ + undefined8 local_28 [5]; + + FUN_180001720(local_28); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_28,(ThrowInfo *)&DAT_180013340); +} + + +================================================================== + +### EXPORT FUNC 180001770 (61 bytes) name=FUN_180001770 + +undefined8 * FUN_180001770(undefined8 *param_1,longlong param_2) + +{ + *param_1 = std::exception::vftable; + param_1[1] = 0; + param_1[2] = 0; + __std_exception_copy(param_2 + 8); + *param_1 = std::bad_array_new_length::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800017b0 (61 bytes) name=FUN_1800017b0 + +undefined8 * FUN_1800017b0(undefined8 *param_1,longlong param_2) + +{ + *param_1 = std::exception::vftable; + param_1[1] = 0; + param_1[2] = 0; + __std_exception_copy(param_2 + 8); + *param_1 = std::bad_alloc::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800017f0 (3068 bytes) name=FUN_1800017f0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Type propagation algorithm not settling */ + +void FUN_1800017f0(longlong param_1,longlong *param_2,longlong param_3) + +{ + undefined1 uVar1; + undefined1 *puVar2; + int iVar3; + ulonglong uVar4; + undefined8 uVar5; + void *pvVar6; + undefined1 *puVar7; + byte *pbVar8; + longlong lVar9; + longlong lVar10; + undefined1 *puVar11; + uint uVar12; + ulonglong uVar13; + ulonglong uVar14; + ulonglong uVar15; + ulonglong uVar16; + ulonglong uVar17; + bool bVar18; + undefined1 auStack_88 [32]; + undefined1 local_68; + uint local_64; + undefined8 local_58 [2]; + ulonglong local_48; + ulonglong local_40; + ulonglong local_38; + + local_38 = DAT_180015010 ^ (ulonglong)auStack_88; + iVar3 = *(int *)(param_1 + 0x4c); + if (iVar3 == 1) { + if (param_2[1] - *param_2 != 1) { + return; + } + if (*(char *)*param_2 != '\x06') { + return; + } + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 == 0) { + return; + } + std::_Throw_C_error(iVar3); + return; + } + if (iVar3 == 2) { + if (param_2[1] - *param_2 != 1) { + return; + } + if (*(char *)*param_2 != '\x06') { + return; + } + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 == 0) { + return; + } + std::_Throw_C_error(iVar3); + return; + } + if (iVar3 == 3) { + if (param_2[1] - *param_2 != 1) { + return; + } + if (*(char *)*param_2 != '\x06') { + return; + } + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 == 0) { + return; + } + std::_Throw_C_error(iVar3); + return; + } + if (iVar3 == 4) { + uVar16 = 0; + local_64 = 0; + lVar9 = *param_2; + if (param_2[1] != lVar9) { + lVar10 = *(longlong *)(param_1 + 0x40); + uVar15 = uVar16; + uVar14 = uVar16; + do { + local_68 = *(undefined1 *)(lVar9 + uVar14); + uVar4 = *(ulonglong *)(param_1 + 0x38); + uVar12 = (uint)uVar15; + if ((((int)lVar10 + (int)uVar4 & 0xfU) == 0) && + (*(ulonglong *)(param_1 + 0x30) <= lVar10 + 0x10U >> 4)) { + FUN_1800028d0(param_1 + 0x20); + uVar4 = *(ulonglong *)(param_1 + 0x38); + lVar10 = *(longlong *)(param_1 + 0x40); + uVar12 = local_64; + } + uVar4 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar4; + *(ulonglong *)(param_1 + 0x38) = uVar4; + uVar4 = uVar4 + lVar10; + lVar9 = (*(longlong *)(param_1 + 0x30) - 1U & uVar4 >> 4) * 8; + lVar10 = *(longlong *)(param_1 + 0x28); + if (*(longlong *)(lVar10 + lVar9) == 0) { + uVar5 = FUN_18000c554(0x10); + *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; + lVar10 = *(longlong *)(param_1 + 0x28); + uVar12 = local_64; + } + *(undefined1 *)((ulonglong)((uint)uVar4 & 0xf) + *(longlong *)(lVar9 + lVar10)) = local_68; + *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; + lVar10 = *(longlong *)(param_1 + 0x40); + local_64 = uVar12 + 1; + uVar15 = (ulonglong)local_64; + uVar14 = uVar14 + 1; + lVar9 = *param_2; + } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); + } + local_48 = 0; + local_40 = 0xf; + local_58[0]._0_1_ = 0; + uVar15 = *(ulonglong *)(param_1 + 0x38); + uVar17 = *(longlong *)(param_1 + 0x40) + uVar15; + uVar14 = local_48; + uVar4 = local_40; + for (; local_48 = uVar14, local_40 = uVar4, uVar15 != uVar17; uVar15 = uVar15 + 1) { + uVar13 = (ulonglong)((uint)uVar15 & 0xf); + uVar1 = *(undefined1 *) + (uVar13 + *(longlong *) + (*(longlong *)(param_1 + 0x28) + + (*(longlong *)(param_1 + 0x30) - 1U & uVar15 >> 4) * 8)); + if (uVar14 < uVar4) { + local_48 = uVar14 + 1; + puVar11 = (undefined1 *)local_58; + if (0xf < uVar4) { + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + } + puVar11[uVar14] = uVar1; + puVar11[uVar14 + 1] = 0; + } + else { + FUN_180002770(local_58,uVar13,uVar14,uVar1); + } + uVar14 = local_48; + uVar4 = local_40; + } + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + puVar7 = (undefined1 *)local_58; + if (0xf < uVar4) { + puVar7 = puVar11; + } + if ((4 < uVar14) && + (pvVar6 = memchr(puVar7,0x4d,uVar14 - 4), uVar15 = uVar16, pvVar6 != (void *)0x0)) { +LAB_180001ac0: + do { + uVar17 = uVar15 + 1; + if (*(byte *)((longlong)pvVar6 + uVar15) == (&DAT_18000f758)[uVar15]) { + uVar15 = uVar17; + uVar12 = 0; + if (uVar17 != 5) goto LAB_180001ac0; + } + else { + uVar12 = -(uint)(*(byte *)((longlong)pvVar6 + uVar15) < (byte)(&DAT_18000f758)[uVar15]) | + 1; + } + if (uVar12 == 0) { + if ((longlong)pvVar6 - (longlong)puVar7 != -1) { + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 != 0) { + std::_Throw_C_error(iVar3); + } + } + break; + } + pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x4d, + (size_t)(puVar7 + ((uVar14 - 4) - ((longlong)pvVar6 + 1)))); + uVar15 = uVar16; + if (pvVar6 == (void *)0x0) break; + } while( true ); + } + if (uVar4 < 0x10) { + return; + } + if (uVar4 + 1 < 0x1000) goto LAB_1800020b1; + puVar7 = puVar11 + (-8 - (longlong)*(undefined1 **)(puVar11 + 0xfffffffffffffff8)); + puVar11 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); + } + else if (iVar3 == 6) { + uVar16 = 0; + local_64 = 0; + lVar9 = *param_2; + if (param_2[1] != lVar9) { + param_3 = *(longlong *)(param_1 + 0x40); + uVar15 = uVar16; + uVar14 = uVar16; + do { + local_68 = *(undefined1 *)(lVar9 + uVar14); + uVar4 = *(ulonglong *)(param_1 + 0x38); + uVar12 = (uint)uVar15; + if ((((int)param_3 + (int)uVar4 & 0xfU) == 0) && + (*(ulonglong *)(param_1 + 0x30) <= param_3 + 0x10U >> 4)) { + FUN_1800028d0(param_1 + 0x20); + uVar4 = *(ulonglong *)(param_1 + 0x38); + param_3 = *(longlong *)(param_1 + 0x40); + uVar12 = local_64; + } + uVar4 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar4; + *(ulonglong *)(param_1 + 0x38) = uVar4; + uVar4 = param_3 + uVar4; + lVar9 = (*(longlong *)(param_1 + 0x30) - 1U & uVar4 >> 4) * 8; + lVar10 = *(longlong *)(param_1 + 0x28); + if (*(longlong *)(lVar10 + lVar9) == 0) { + uVar5 = FUN_18000c554(0x10); + *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; + lVar10 = *(longlong *)(param_1 + 0x28); + uVar12 = local_64; + } + *(undefined1 *)((ulonglong)((uint)uVar4 & 0xf) + *(longlong *)(lVar9 + lVar10)) = local_68; + *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; + param_3 = *(longlong *)(param_1 + 0x40); + local_64 = uVar12 + 1; + uVar15 = (ulonglong)local_64; + uVar14 = uVar14 + 1; + lVar9 = *param_2; + } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); + } + local_48 = 0; + local_40 = 0xf; + local_58[0]._0_1_ = 0; + uVar15 = *(ulonglong *)(param_1 + 0x38); + uVar17 = *(longlong *)(param_1 + 0x40) + uVar15; + uVar14 = local_48; + uVar4 = local_40; + for (; local_48 = uVar14, local_40 = uVar4, uVar15 != uVar17; uVar15 = uVar15 + 1) { + uVar13 = (ulonglong)((uint)uVar15 & 0xf); + uVar1 = *(undefined1 *) + (uVar13 + *(longlong *) + (*(longlong *)(param_1 + 0x28) + + (uVar15 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8)); + if (uVar14 < uVar4) { + local_48 = uVar14 + 1; + puVar11 = (undefined1 *)local_58; + if (0xf < uVar4) { + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + } + puVar11[uVar14] = uVar1; + puVar11[uVar14 + 1] = 0; + } + else { + FUN_180002770(local_58,uVar13,param_3,uVar1); + } + uVar14 = local_48; + uVar4 = local_40; + } + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + puVar7 = (undefined1 *)local_58; + if (0xf < uVar4) { + puVar7 = puVar11; + } + if ((4 < uVar14) && + (pvVar6 = memchr(puVar7,0x4d,uVar14 - 4), uVar15 = uVar16, pvVar6 != (void *)0x0)) { +LAB_180001d40: + do { + uVar17 = uVar15 + 1; + if (*(byte *)((longlong)pvVar6 + uVar15) == (&DAT_18000f758)[uVar15]) { + uVar15 = uVar17; + uVar12 = 0; + if (uVar17 != 5) goto LAB_180001d40; + } + else { + uVar12 = -(uint)(*(byte *)((longlong)pvVar6 + uVar15) < (byte)(&DAT_18000f758)[uVar15]) | + 1; + } + if (uVar12 == 0) { + if ((longlong)pvVar6 - (longlong)puVar7 != -1) { + puVar7 = (undefined1 *)local_58; + if (0xf < uVar4) { + puVar7 = puVar11; + } + if (2 < uVar14) { + pbVar8 = memchr(puVar7,0x76,uVar14 - 2); + goto joined_r0x000180001dc2; + } + } + break; + } + pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x4d, + (size_t)(puVar7 + ((uVar14 - 4) - ((longlong)pvVar6 + 1)))); + uVar15 = uVar16; + if (pvVar6 == (void *)0x0) break; + } while( true ); + } +LAB_180001e27: + if (uVar4 < 0x10) { + return; + } + if (uVar4 + 1 < 0x1000) goto LAB_1800020b1; + puVar7 = puVar11 + (-8 - (longlong)*(undefined1 **)(puVar11 + 0xfffffffffffffff8)); + puVar11 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); + } + else { + if (iVar3 == 5) { + uVar16 = 0; + local_64 = 0; + lVar9 = *param_2; + if (param_2[1] != lVar9) { + param_3 = *(longlong *)(param_1 + 0x40); + uVar15 = uVar16; + do { + local_68 = *(undefined1 *)(lVar9 + uVar15); + uVar14 = *(ulonglong *)(param_1 + 0x38); + uVar12 = (uint)uVar16; + if ((((int)param_3 + (int)uVar14 & 0xfU) == 0) && + (*(ulonglong *)(param_1 + 0x30) <= param_3 + 0x10U >> 4)) { + FUN_1800028d0(param_1 + 0x20); + uVar14 = *(ulonglong *)(param_1 + 0x38); + param_3 = *(longlong *)(param_1 + 0x40); + uVar12 = local_64; + } + uVar14 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar14; + *(ulonglong *)(param_1 + 0x38) = uVar14; + uVar14 = param_3 + uVar14; + lVar9 = (*(longlong *)(param_1 + 0x30) - 1U & uVar14 >> 4) * 8; + lVar10 = *(longlong *)(param_1 + 0x28); + if (*(longlong *)(lVar10 + lVar9) == 0) { + uVar5 = FUN_18000c554(0x10); + *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; + lVar10 = *(longlong *)(param_1 + 0x28); + uVar12 = local_64; + } + *(undefined1 *)((ulonglong)((uint)uVar14 & 0xf) + *(longlong *)(lVar9 + lVar10)) = + local_68; + *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; + param_3 = *(longlong *)(param_1 + 0x40); + local_64 = uVar12 + 1; + uVar16 = (ulonglong)local_64; + uVar15 = uVar15 + 1; + lVar9 = *param_2; + } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); + } + local_48 = 0; + local_40 = 0xf; + local_58[0]._0_1_ = 0; + uVar16 = *(ulonglong *)(param_1 + 0x38); + uVar4 = *(longlong *)(param_1 + 0x40) + uVar16; + uVar15 = local_48; + uVar14 = local_40; + for (; local_48 = uVar15, local_40 = uVar14, uVar16 != uVar4; uVar16 = uVar16 + 1) { + uVar17 = (ulonglong)((uint)uVar16 & 0xf); + uVar1 = *(undefined1 *) + (uVar17 + *(longlong *) + (*(longlong *)(param_1 + 0x28) + + (uVar16 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8)); + if (uVar15 < uVar14) { + local_48 = uVar15 + 1; + puVar11 = (undefined1 *)local_58; + if (0xf < uVar14) { + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + } + puVar11[uVar15] = uVar1; + puVar11[uVar15 + 1] = 0; + } + else { + FUN_180002770(local_58,uVar17,param_3,uVar1); + } + uVar15 = local_48; + uVar14 = local_40; + } + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + puVar7 = (undefined1 *)local_58; + if (0xf < uVar14) { + puVar7 = puVar11; + } + if (0x16 < uVar15) { + for (pvVar6 = memchr(puVar7,0x55,uVar15 - 0x16); pvVar6 != (void *)0x0; + pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x55, + (size_t)(puVar7 + ((uVar15 - 0x16) - ((longlong)pvVar6 + 1))))) { + iVar3 = memcmp(pvVar6,"Use Ymodem to send file",0x17); + if (iVar3 == 0) { + if ((longlong)pvVar6 - (longlong)puVar7 != -1) { + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 != 0) { + std::_Throw_C_error(iVar3); + } + } + break; + } + } + } + if (uVar14 < 0x10) { + return; + } + if (uVar14 + 1 < 0x1000) goto LAB_1800020b1; + puVar2 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); + lVar9 = (longlong)puVar11 - (longlong)puVar2; + } + else { + if (iVar3 == 7) { + if (param_2[1] - *param_2 != 1) { + return; + } + if (*(char *)*param_2 != '\x06') { + return; + } + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 == 0) { + return; + } + std::_Throw_C_error(iVar3); + return; + } + if (iVar3 == 8) { + if (param_2[1] - *param_2 != 1) { + return; + } + if (*(char *)*param_2 != '\x06') { + return; + } + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 == 0) { + return; + } + std::_Throw_C_error(iVar3); + return; + } + if (iVar3 == 9) { + if (param_2[1] - *param_2 != 1) { + return; + } + if (*(char *)*param_2 != '\x06') { + return; + } + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 == 0) { + return; + } + std::_Throw_C_error(iVar3); + return; + } + if (iVar3 != 10) { + return; + } + uVar16 = 0; + local_64 = 0; + lVar9 = *param_2; + if (param_2[1] != lVar9) { + lVar10 = *(longlong *)(param_1 + 0x40); + uVar15 = uVar16; + do { + local_68 = *(undefined1 *)(lVar9 + uVar15); + uVar14 = *(ulonglong *)(param_1 + 0x38); + uVar12 = (uint)uVar16; + if ((((int)uVar14 + (int)lVar10 & 0xfU) == 0) && + (*(ulonglong *)(param_1 + 0x30) <= lVar10 + 0x10U >> 4)) { + FUN_1800028d0(param_1 + 0x20); + uVar14 = *(ulonglong *)(param_1 + 0x38); + lVar10 = *(longlong *)(param_1 + 0x40); + uVar12 = local_64; + } + uVar14 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar14; + *(ulonglong *)(param_1 + 0x38) = uVar14; + uVar14 = uVar14 + lVar10; + lVar9 = (uVar14 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8; + lVar10 = *(longlong *)(param_1 + 0x28); + if (*(longlong *)(lVar10 + lVar9) == 0) { + uVar5 = FUN_18000c554(0x10); + *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; + lVar10 = *(longlong *)(param_1 + 0x28); + uVar12 = local_64; + } + *(undefined1 *)((ulonglong)((uint)uVar14 & 0xf) + *(longlong *)(lVar10 + lVar9)) = + local_68; + *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; + lVar10 = *(longlong *)(param_1 + 0x40); + local_64 = uVar12 + 1; + uVar16 = (ulonglong)local_64; + uVar15 = uVar15 + 1; + lVar9 = *param_2; + } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); + } + local_48 = 0; + local_40 = 0xf; + local_58[0]._0_1_ = 0; + uVar16 = *(ulonglong *)(param_1 + 0x38); + uVar4 = *(longlong *)(param_1 + 0x40) + uVar16; + uVar15 = local_48; + uVar14 = local_40; + for (; local_48 = uVar15, local_40 = uVar14, uVar16 != uVar4; uVar16 = uVar16 + 1) { + uVar17 = (ulonglong)((uint)uVar16 & 0xf); + uVar1 = *(undefined1 *) + (uVar17 + *(longlong *) + (*(longlong *)(param_1 + 0x28) + + (uVar16 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8)); + if (uVar15 < uVar14) { + local_48 = uVar15 + 1; + puVar11 = (undefined1 *)local_58; + if (0xf < uVar14) { + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + } + puVar11[uVar15] = uVar1; + puVar11[uVar15 + 1] = 0; + } + else { + FUN_180002770(local_58,uVar17,lVar9,uVar1); + } + uVar15 = local_48; + uVar14 = local_40; + } + puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); + puVar7 = (undefined1 *)local_58; + if (0xf < uVar14) { + puVar7 = puVar11; + } + if (0x25 < uVar15) { + for (pvVar6 = memchr(puVar7,0x46,uVar15 - 0x25); pvVar6 != (void *)0x0; + pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x46, + (size_t)(puVar7 + ((uVar15 - 0x25) - ((longlong)pvVar6 + 1))))) { + iVar3 = memcmp(pvVar6,"Firmware upgrade success, rebooting...",0x26); + if (iVar3 == 0) { + if ((longlong)pvVar6 - (longlong)puVar7 != -1) { + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 != 0) { + std::_Throw_C_error(iVar3); + } + } + break; + } + } + } + if (uVar14 < 0x10) { + return; + } + if (uVar14 + 1 < 0x1000) goto LAB_1800020b1; + puVar2 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); + lVar9 = (longlong)puVar11 - (longlong)puVar2; + } + puVar7 = (undefined1 *)(lVar9 - 8); + puVar11 = puVar2; + } + if ((undefined1 *)0x1f < puVar7) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } +LAB_1800020b1: + free(puVar11); + return; +joined_r0x000180001dc2: + if (pbVar8 == (byte *)0x0) goto LAB_180001e27; + bVar18 = *pbVar8 < 0x76; + if (((*pbVar8 == 0x76) && (bVar18 = pbVar8[1] < 0x65, pbVar8[1] == 0x65)) && + (bVar18 = pbVar8[2] < 0x72, pbVar8[2] == 0x72)) { + uVar12 = 0; + } + else { + uVar12 = -(uint)bVar18 | 1; + } + if (uVar12 == 0) { + if ((longlong)pbVar8 - (longlong)puVar7 != -1) { + *(undefined1 *)(param_1 + 0x48) = 1; + iVar3 = _Cnd_broadcast(param_1 + 0x58); + if (iVar3 != 0) { + std::_Throw_C_error(iVar3); + } + } + goto LAB_180001e27; + } + pbVar8 = memchr(pbVar8 + 1,0x76,(size_t)(puVar7 + ((uVar14 - 2) - (longlong)(pbVar8 + 1)))); + goto joined_r0x000180001dc2; +} + + +================================================================== + +### EXPORT FUNC 1800023f0 (39 bytes) name=FUN_1800023f0 + +void FUN_1800023f0(undefined8 *param_1) + +{ + void *_Memory; + + FUN_180002550((longlong)param_1); + _Memory = (void *)*param_1; + *param_1 = 0; + free(_Memory); + return; +} + + +================================================================== + +### EXPORT FUNC 180002420 (87 bytes) name=FUN_180002420 + +void FUN_180002420(longlong *param_1) + +{ + void *pvVar1; + void *_Memory; + + pvVar1 = (void *)*param_1; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180002480 (38 bytes) name=FUN_180002480 + +void FUN_180002480(undefined8 *param_1) + +{ + int iVar1; + + if (*(char *)(param_1 + 1) != '\0') { + iVar1 = _Mtx_unlock(*param_1); + if (iVar1 != 0) { + std::_Throw_C_error(iVar1); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800024b0 (94 bytes) name=FUN_1800024b0 + +void FUN_1800024b0(longlong *param_1) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < (ulonglong)param_1[3]) { + pvVar1 = (void *)*param_1; + _Memory = pvVar1; + if ((0xfff < param_1[3] + 1U) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[2] = 0; + param_1[3] = 0xf; + *(undefined1 *)param_1 = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 180002510 (59 bytes) name=FUN_180002510 + +longlong * FUN_180002510(longlong *param_1,void *param_2) + +{ + size_t sVar1; + + param_1[2] = 0; + param_1[3] = 0xf; + sVar1 = 0xffffffffffffffff; + *(undefined1 *)param_1 = 0; + do { + sVar1 = sVar1 + 1; + } while (*(char *)((longlong)param_2 + sVar1) != '\0'); + FUN_180002610(param_1,param_2,sVar1); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180002550 (180 bytes) name=FUN_180002550 + +void FUN_180002550(longlong param_1) + +{ + void *pvVar1; + void *_Memory; + longlong lVar2; + + lVar2 = *(longlong *)(param_1 + 0x20); + if (lVar2 != 0) { + do { + lVar2 = lVar2 + -1; + *(longlong *)(param_1 + 0x20) = lVar2; + } while (lVar2 != 0); + *(undefined8 *)(param_1 + 0x18) = 0; + } + lVar2 = *(longlong *)(param_1 + 0x10); + while (lVar2 != 0) { + lVar2 = lVar2 + -1; + pvVar1 = *(void **)(*(longlong *)(param_1 + 8) + lVar2 * 8); + if (pvVar1 != (void *)0x0) { + free(pvVar1); + } + } + pvVar1 = *(void **)(param_1 + 8); + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *(undefined8 *)(param_1 + 0x10) = 0; + *(undefined8 *)(param_1 + 8) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 180002610 (346 bytes) name=FUN_180002610 + +longlong * FUN_180002610(longlong *param_1,void *param_2,size_t param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + void *pvVar3; + longlong lVar4; + ulonglong uVar5; + size_t sVar6; + void *_Memory; + void *_Dst; + longlong *_Dst_00; + ulonglong uVar7; + + uVar2 = param_1[3]; + if (param_3 <= uVar2) { + _Dst_00 = param_1; + if (0xf < uVar2) { + _Dst_00 = (longlong *)*param_1; + } + param_1[2] = param_3; + memmove(_Dst_00,param_2,param_3); + *(undefined1 *)(param_3 + (longlong)_Dst_00) = 0; + return param_1; + } + if (0x7fffffffffffffff < param_3) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar5 = param_3 | 0xf; + uVar7 = 0x7fffffffffffffff; + if (((uVar5 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) && + (uVar1 = (uVar2 >> 1) + uVar2, uVar7 = uVar5, uVar5 < uVar1)) { + uVar7 = uVar1; + } + sVar6 = uVar7 + 1; + if (uVar7 == 0xffffffffffffffff) { + sVar6 = 0xffffffffffffffff; + } + if (sVar6 < 0x1000) { + if (sVar6 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(sVar6); + } + } + else { + if (sVar6 + 0x27 <= sVar6) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar4 = FUN_18000c554(sVar6 + 0x27); + if (lVar4 == 0) goto LAB_18000275a; + _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar4; + } + param_1[2] = param_3; + param_1[3] = uVar7; + memcpy(_Dst,param_2,param_3); + *(undefined1 *)(param_3 + (longlong)_Dst) = 0; + if (0xf < uVar2) { + pvVar3 = (void *)*param_1; + _Memory = pvVar3; + if ((0xfff < uVar2 + 1) && + (_Memory = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { +LAB_18000275a: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = (longlong)_Dst; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180002770 (348 bytes) name=FUN_180002770 + +undefined8 * +FUN_180002770(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4) + +{ + ulonglong uVar1; + size_t _Size; + ulonglong uVar2; + void *_Src; + longlong lVar3; + ulonglong uVar4; + size_t sVar5; + ulonglong uVar6; + void *_Memory; + void *_Dst; + + _Size = param_1[2]; + if (_Size == 0x7fffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar2 = param_1[3]; + uVar4 = _Size + 1 | 0xf; + uVar6 = 0x7fffffffffffffff; + if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) && + (uVar1 = (uVar2 >> 1) + uVar2, uVar6 = uVar4, uVar4 < uVar1)) { + uVar6 = uVar1; + } + sVar5 = uVar6 + 1; + if (uVar6 == 0xffffffffffffffff) { + sVar5 = 0xffffffffffffffff; + } + if (sVar5 < 0x1000) { + if (sVar5 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(sVar5); + } + } + else { + if (sVar5 + 0x27 <= sVar5) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar3 = FUN_18000c554(sVar5 + 0x27); + if (lVar3 == 0) goto LAB_18000288c; + _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar3; + } + param_1[2] = _Size + 1; + param_1[3] = uVar6; + if (uVar2 < 0x10) { + memcpy(_Dst,param_1,_Size); + *(undefined1 *)((longlong)_Dst + _Size) = param_4; + *(undefined1 *)((longlong)_Dst + _Size + 1) = 0; + } + else { + _Src = (void *)*param_1; + memcpy(_Dst,_Src,_Size); + *(undefined1 *)((longlong)_Dst + _Size) = param_4; + *(undefined1 *)((longlong)_Dst + _Size + 1) = 0; + _Memory = _Src; + if ((0xfff < uVar2 + 1) && + (_Memory = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { +LAB_18000288c: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = _Dst; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800028d0 (469 bytes) name=FUN_1800028d0 + +void FUN_1800028d0(longlong param_1) + +{ + code *pcVar1; + ulonglong uVar2; + longlong lVar3; + void *_Memory; + size_t sVar4; + void *pvVar5; + size_t sVar6; + ulonglong uVar7; + void *_Dst; + ulonglong uVar8; + + uVar8 = *(ulonglong *)(param_1 + 0x10); + uVar2 = 1; + if (uVar8 != 0) { + uVar2 = uVar8; + } + for (; (uVar7 = uVar2 - uVar8, uVar7 == 0 || (uVar2 < 8)); uVar2 = uVar2 * 2) { + if (0x7ffffffffffffff - uVar2 < uVar2) { + FUN_180002b60(); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; + } + } + uVar8 = *(ulonglong *)(param_1 + 0x18) >> 4; + if (0x1fffffffffffffff < uVar2) { +LAB_180002a9b: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar2 = uVar2 * 8; + if (uVar2 < 0x1000) { + if (uVar2 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(uVar2); + } + } + else { + if (uVar2 + 0x27 <= uVar2) goto LAB_180002a9b; + lVar3 = FUN_18000c554(uVar2 + 0x27); + if (lVar3 == 0) goto LAB_180002a94; + _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar3; + } + sVar6 = uVar8 * 8; + pvVar5 = (void *)(*(longlong *)(param_1 + 8) + sVar6); + sVar4 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar5) + *(longlong *)(param_1 + 8); + memmove((void *)(sVar6 + (longlong)_Dst),pvVar5,sVar4); + pvVar5 = (void *)(sVar4 + (longlong)(sVar6 + (longlong)_Dst)); + if (uVar7 < uVar8) { + sVar4 = uVar7 * 8; + memmove(pvVar5,*(void **)(param_1 + 8),sVar4); + pvVar5 = (void *)(sVar4 + *(longlong *)(param_1 + 8)); + sVar6 = (*(longlong *)(param_1 + 8) - (longlong)pvVar5) + sVar6; + memmove(_Dst,pvVar5,sVar6); + pvVar5 = (void *)(sVar6 + (longlong)_Dst); + } + else { + memmove(pvVar5,*(void **)(param_1 + 8),sVar6); + memset((void *)(sVar6 + (longlong)pvVar5),0,(uVar7 - uVar8) * 8); + pvVar5 = _Dst; + sVar4 = sVar6; + } + memset(pvVar5,0,sVar4); + pvVar5 = *(void **)(param_1 + 8); + if (pvVar5 != (void *)0x0) { + _Memory = pvVar5; + if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) && + (_Memory = *(void **)((longlong)pvVar5 + -8), + 0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) { +LAB_180002a94: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar7; + *(void **)(param_1 + 8) = _Dst; + return; +} + + +================================================================== + +### EXPORT FUNC 180002ab0 (134 bytes) name=FUN_180002ab0 + +void FUN_180002ab0(ulonglong *param_1,ulonglong param_2) + +{ + longlong lVar1; + ulonglong uVar2; + + if (0x7fffffffffffffff < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + if (param_2 < 0x1000) { + if (param_2 == 0) { + uVar2 = 0; + } + else { + uVar2 = FUN_18000c554(param_2); + } + } + else { + if (param_2 + 0x27 <= param_2) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar1 = FUN_18000c554(param_2 + 0x27); + if (lVar1 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0; + *(longlong *)(uVar2 - 8) = lVar1; + } + *param_1 = uVar2; + param_1[1] = uVar2; + param_1[2] = uVar2 + param_2; + return; +} + + +================================================================== + +### EXPORT FUNC 180002b40 (18 bytes) name=FUN_180002b40 + +void FUN_180002b40(void) + +{ + code *pcVar1; + + std::_Xlength_error("string too long"); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180002b60 (18 bytes) name=FUN_180002b60 + +void FUN_180002b60(void) + +{ + code *pcVar1; + + std::_Xlength_error("deque too long"); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180002b80 (18 bytes) name=FUN_180002b80 + +void FUN_180002b80(void) + +{ + code *pcVar1; + + std::_Xlength_error("vector too long"); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180002ba0 (239 bytes) name=FUN_180002ba0 + +void FUN_180002ba0(ulonglong *param_1,ulonglong param_2) + +{ + void *pvVar1; + longlong lVar2; + void *_Memory; + ulonglong uVar3; + ulonglong uVar4; + ulonglong uVar5; + + if (0x7fffffffffffffff < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + pvVar1 = (void *)*param_1; + uVar3 = param_1[2] - (longlong)pvVar1; + uVar5 = param_2; + if ((uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1)) && + (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2)) { + uVar5 = param_2; + } + uVar4 = 0; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < uVar3) && + (_Memory = *(void **)((longlong)pvVar1 - 8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) goto LAB_180002c50; + free(_Memory); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + if (uVar5 < 0x1000) { + if (uVar5 != 0) { + uVar4 = FUN_18000c554(uVar5); + } + } + else { + if (uVar5 + 0x27 <= uVar5) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar2 = FUN_18000c554(uVar5 + 0x27); + if (lVar2 == 0) { +LAB_180002c50: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + uVar4 = lVar2 + 0x27U & 0xffffffffffffffe0; + *(longlong *)(uVar4 - 8) = lVar2; + } + *param_1 = uVar4; + param_1[1] = uVar4; + param_1[2] = uVar4 + uVar5; + return; +} + + +================================================================== + +### EXPORT FUNC 180002ca0 (248 bytes) name=FUN_180002ca0 + +void FUN_180002ca0(longlong *param_1) + +{ + void *pvVar1; + void *pvVar2; + + if (0xf < (ulonglong)param_1[0xb]) { + pvVar1 = (void *)param_1[8]; + pvVar2 = pvVar1; + if ((0xfff < param_1[0xb] + 1U) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180002d92; + free(pvVar2); + } + param_1[10] = 0; + param_1[0xb] = 0xf; + *(undefined1 *)(param_1 + 8) = 0; + if (0xf < (ulonglong)param_1[7]) { + pvVar1 = (void *)param_1[4]; + pvVar2 = pvVar1; + if ((0xfff < param_1[7] + 1U) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180002d92; + free(pvVar2); + } + param_1[6] = 0; + param_1[7] = 0xf; + *(undefined1 *)(param_1 + 4) = 0; + if (0xf < (ulonglong)param_1[3]) { + pvVar1 = (void *)*param_1; + pvVar2 = pvVar1; + if ((0xfff < param_1[3] + 1U) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { +LAB_180002d92: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar2); + } + param_1[2] = 0; + param_1[3] = 0xf; + *(undefined1 *)param_1 = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 180002da0 (177 bytes) name=FUN_180002da0 + +void FUN_180002da0(longlong *param_1) + +{ + longlong *plVar1; + longlong *plVar2; + + plVar1 = (longlong *)*param_1; + if (plVar1 != (longlong *)0x0) { + plVar2 = (longlong *)param_1[1]; + if (plVar1 != plVar2) { + do { + FUN_180002ca0(plVar1); + plVar1 = plVar1 + 0xc; + } while (plVar1 != plVar2); + plVar1 = (longlong *)*param_1; + } + plVar2 = plVar1; + if ((0xfff < (ulonglong)(((param_1[2] - (longlong)plVar1) / 0x60) * 0x60)) && + (plVar2 = (longlong *)plVar1[-1], + 0x1f < (ulonglong)((longlong)plVar1 + (-8 - (longlong)plVar2)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(plVar2); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180002e60 (201 bytes) name=FUN_180002e60 + +undefined8 * FUN_180002e60(undefined8 *param_1,undefined8 *param_2) + +{ + ulonglong uVar1; + ulonglong uVar2; + undefined8 uVar3; + longlong lVar4; + void *_Dst; + ulonglong uVar5; + + _Dst = (void *)0x0; + param_1[2] = 0; + param_1[3] = 0; + uVar2 = param_2[2]; + if (0xf < (ulonglong)param_2[3]) { + param_2 = (undefined8 *)*param_2; + } + if (uVar2 < 0x10) { + uVar3 = param_2[1]; + uVar5 = 0xf; + *param_1 = *param_2; + param_1[1] = uVar3; + } + else { + uVar5 = uVar2 | 0xf; + if (0x7fffffffffffffff < uVar5) { + uVar5 = 0x7fffffffffffffff; + } + uVar1 = uVar5 + 1; + if (uVar1 < 0x1000) { + if (uVar1 != 0) { + _Dst = (void *)FUN_18000c554(uVar1); + } + } + else { + if (uVar5 + 0x28 <= uVar1) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar4 = FUN_18000c554(uVar5 + 0x28); + if (lVar4 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar4; + } + *param_1 = _Dst; + memcpy(_Dst,param_2,uVar2 + 1); + } + param_1[2] = uVar2; + param_1[3] = uVar5; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180002f30 (49 bytes) name=FUN_180002f30 + +void FUN_180002f30(undefined8 param_1,longlong *param_2,longlong *param_3) + +{ + for (; param_2 != param_3; param_2 = param_2 + 0xc) { + FUN_180002ca0(param_2); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180002f70 (66 bytes) name=deallocate + +/* Library Function - Multiple Matches With Same Base Name + public: void __cdecl std::allocator::deallocate(struct `protected: int __cdecl + GSI1::readHash(unsigned short,long,long) __ptr64'::`2'::FileSymbolInfo * __ptr64 const,unsigned + __int64) __ptr64 + public: void __cdecl std::allocator::deallocate(struct GSISymbolEntry * + __ptr64 const,unsigned __int64) __ptr64 + + Library: Visual Studio 2019 Release */ + +void deallocate(undefined8 param_1,void *param_2,longlong param_3) + +{ + void *_Memory; + + _Memory = param_2; + if ((0xfff < (ulonglong)(param_3 * 0x60)) && + (_Memory = *(void **)((longlong)param_2 + -8), + 0x1f < (ulonglong)((longlong)param_2 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + return; +} + + +================================================================== + +### EXPORT FUNC 180002fc0 (8 bytes) name=FUN_180002fc0 + +undefined * FUN_180002fc0(void) + +{ + return &DAT_180015fe0; +} + + +================================================================== + +### EXPORT FUNC 180002fd0 (2014 bytes) name=FUN_180002fd0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +longlong * FUN_180002fd0(longlong *param_1) + +{ + undefined8 *puVar1; + code *pcVar2; + void *pvVar3; + BOOL BVar4; + LSTATUS LVar5; + uint uVar6; + int iVar7; + HDEVINFO DeviceInfoSet; + HKEY hKey; + wchar_t *pwVar8; + longlong *plVar9; + void *pvVar10; + ulonglong uVar11; + WCHAR *pWVar12; + DWORD MemberIndex; + undefined1 auStackY_7c8 [32]; + WCHAR local_780; + undefined6 uStack_77e; + undefined8 local_770; + ulonglong local_768; + WCHAR local_760; + undefined6 uStack_75e; + undefined8 local_750; + ulonglong local_748; + longlong *local_740; + undefined8 *local_738; + DWORD local_730; + DWORD local_72c; + DWORD local_728 [2]; + longlong local_720 [2]; + size_t local_710; + ulonglong local_708; + longlong local_700 [2]; + size_t local_6f0; + ulonglong local_6e8; + longlong local_6e0 [2]; + size_t local_6d0; + ulonglong local_6c8; + _SP_DEVINFO_DATA local_6c0; + undefined1 local_698 [16]; + undefined8 local_688; + undefined8 local_680; + undefined1 local_678 [16]; + undefined8 local_668; + undefined8 local_660; + undefined1 local_658 [16]; + undefined8 local_648; + undefined8 local_640; + wchar_t local_638 [256]; + short local_438 [256]; + short local_238 [256]; + ulonglong local_38; + + local_38 = DAT_180015010 ^ (ulonglong)auStackY_7c8; + MemberIndex = 0; + *param_1 = 0; + param_1[1] = 0; + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + local_740 = param_1; + DeviceInfoSet = SetupDiGetClassDevsW((GUID *)&DAT_18000f7e8,(PCWSTR)0x0,(HWND)0x0,2); + local_6c0.cbSize = 0x20; + do { + do { + do { + BVar4 = SetupDiEnumDeviceInfo(DeviceInfoSet,MemberIndex,&local_6c0); + if (BVar4 == 0) { + SetupDiDestroyDeviceInfoList(DeviceInfoSet); + return param_1; + } + MemberIndex = MemberIndex + 1; + hKey = SetupDiOpenDevRegKey(DeviceInfoSet,&local_6c0,1,0,1,0x20019); + local_730 = 0x100; + LVar5 = RegQueryValueExW(hKey,L"PortName",(LPDWORD)0x0,(LPDWORD)0x0,(LPBYTE)local_638, + &local_730); + RegCloseKey(hKey); + } while (LVar5 != 0); + uVar6 = local_730 - 1; + if (uVar6 < 0x100) { + if (0x1ff < (ulonglong)uVar6 * 2) goto LAB_1800037ae; + local_638[uVar6] = L'\0'; + } + else { + local_638[0] = L'\0'; + } + pwVar8 = wcsstr(local_638,L"LPT"); + } while (pwVar8 != (wchar_t *)0x0); + local_72c = 0; + BVar4 = SetupDiGetDeviceRegistryPropertyW + (DeviceInfoSet,&local_6c0,0xc,(PDWORD)0x0,(PBYTE)local_438,0x100,&local_72c); + if ((BVar4 == 1) && (local_72c != 0)) { + if (0x1ff < (ulonglong)(local_72c - 1) * 2) goto LAB_1800037ae; + local_438[local_72c - 1] = 0; + } + else { + local_438[0] = 0; + } + local_728[0] = 0; + BVar4 = SetupDiGetDeviceRegistryPropertyW + (DeviceInfoSet,&local_6c0,1,(PDWORD)0x0,(PBYTE)local_238,0x100,local_728); + if ((BVar4 == 1) && (local_728[0] != 0)) { + if (0x1ff < (ulonglong)(local_728[0] - 1) * 2) { +LAB_1800037ae: + __report_rangecheckfailure(); + pcVar2 = (code *)swi(3); + plVar9 = (longlong *)(*pcVar2)(); + return plVar9; + } + local_238[local_728[0] - 1] = 0; + } + else { + local_238[0] = 0; + } + local_770 = 0; + local_768 = 7; + local_780 = L'\0'; + uVar11 = 0xffffffffffffffff; + do { + uVar11 = uVar11 + 1; + } while (local_638[uVar11] != L'\0'); + FUN_180003830((longlong *)&local_780,local_638,uVar11); + pWVar12 = &local_780; + if (7 < local_768) { + pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); + } + iVar7 = WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 + ); + local_6d0 = 0; + local_6c8 = 0xf; + local_6e0[0]._0_1_ = 0; + FUN_1800039a0(local_6e0,(longlong)iVar7); + plVar9 = local_6e0; + if (0xf < local_6c8) { + plVar9 = (longlong *)CONCAT71(local_6e0[0]._1_7_,(undefined1)local_6e0[0]); + } + pWVar12 = &local_780; + if (7 < local_768) { + pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); + } + WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)plVar9,iVar7,(LPCSTR)0x0,(LPBOOL)0x0) + ; + if (7 < local_768) { + pvVar3 = (void *)CONCAT62(uStack_77e,local_780); + pvVar10 = pvVar3; + if ((0xfff < local_768 * 2 + 2) && + (pvVar10 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + local_770 = 0; + local_768 = 7; + local_780 = L'\0'; + local_750 = 0; + local_748 = 7; + local_760 = L'\0'; + uVar11 = 0xffffffffffffffff; + do { + uVar11 = uVar11 + 1; + } while (local_438[uVar11] != 0); + FUN_180003830((longlong *)&local_760,local_438,uVar11); + pWVar12 = &local_760; + if (7 < local_748) { + pWVar12 = (LPCWSTR)CONCAT62(uStack_75e,local_760); + } + iVar7 = WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_750,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 + ); + local_6f0 = 0; + local_6e8 = 0xf; + local_700[0]._0_1_ = 0; + FUN_1800039a0(local_700,(longlong)iVar7); + plVar9 = local_700; + if (0xf < local_6e8) { + plVar9 = (longlong *)CONCAT71(local_700[0]._1_7_,(undefined1)local_700[0]); + } + pWVar12 = &local_760; + if (7 < local_748) { + pWVar12 = (LPCWSTR)CONCAT62(uStack_75e,local_760); + } + WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_750,(LPSTR)plVar9,iVar7,(LPCSTR)0x0,(LPBOOL)0x0) + ; + if (7 < local_748) { + pvVar3 = (void *)CONCAT62(uStack_75e,local_760); + pvVar10 = pvVar3; + if ((0xfff < local_748 * 2 + 2) && + (pvVar10 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + local_750 = 0; + local_748 = 7; + local_760 = L'\0'; + local_770 = 0; + local_768 = 7; + local_780 = L'\0'; + uVar11 = 0xffffffffffffffff; + do { + uVar11 = uVar11 + 1; + } while (local_238[uVar11] != 0); + FUN_180003830((longlong *)&local_780,local_238,uVar11); + pWVar12 = &local_780; + if (7 < local_768) { + pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); + } + iVar7 = WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 + ); + local_710 = 0; + local_708 = 0xf; + local_720[0]._0_1_ = 0; + FUN_1800039a0(local_720,(longlong)iVar7); + plVar9 = local_720; + if (0xf < local_708) { + plVar9 = (longlong *)CONCAT71(local_720[0]._1_7_,(undefined1)local_720[0]); + } + pWVar12 = &local_780; + if (7 < local_768) { + pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); + } + WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)plVar9,iVar7,(LPCSTR)0x0,(LPBOOL)0x0) + ; + if (7 < local_768) { + pvVar3 = (void *)CONCAT62(uStack_77e,local_780); + pvVar10 = pvVar3; + if ((0xfff < local_768 * 2 + 2) && + (pvVar10 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + local_688 = 0; + local_680 = 0xf; + local_698[0] = 0; + local_668 = 0; + local_660 = 0xf; + local_678[0] = 0; + local_648 = 0; + local_640 = 0xf; + local_658[0] = 0; + plVar9 = local_6e0; + if (0xf < local_6c8) { + plVar9 = (longlong *)CONCAT71(local_6e0[0]._1_7_,(undefined1)local_6e0[0]); + } + FUN_180002610((longlong *)local_698,plVar9,local_6d0); + plVar9 = local_700; + if (0xf < local_6e8) { + plVar9 = (longlong *)CONCAT71(local_700[0]._1_7_,(undefined1)local_700[0]); + } + FUN_180002610((longlong *)local_678,plVar9,local_6f0); + plVar9 = local_720; + if (0xf < local_708) { + plVar9 = (longlong *)CONCAT71(local_720[0]._1_7_,(undefined1)local_720[0]); + } + FUN_180002610((longlong *)local_658,plVar9,local_710); + puVar1 = (undefined8 *)param_1[1]; + if (puVar1 == (undefined8 *)param_1[2]) { + FUN_180003b00(param_1,puVar1,(undefined8 *)local_698); + } + else { + local_738 = puVar1; + FUN_180002e60(puVar1,(undefined8 *)local_698); + FUN_180002e60(puVar1 + 4,(undefined8 *)local_678); + FUN_180002e60(puVar1 + 8,(undefined8 *)local_658); + param_1[1] = param_1[1] + 0x60; + } + FUN_180002ca0((longlong *)local_698); + if (0xf < local_708) { + pvVar3 = (void *)CONCAT71(local_720[0]._1_7_,(undefined1)local_720[0]); + pvVar10 = pvVar3; + if ((0xfff < local_708 + 1) && + (pvVar10 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + local_710 = 0; + local_708 = 0xf; + local_720[0]._0_1_ = 0; + if (0xf < local_6e8) { + pvVar3 = (void *)CONCAT71(local_700[0]._1_7_,(undefined1)local_700[0]); + pvVar10 = pvVar3; + if ((0xfff < local_6e8 + 1) && + (pvVar10 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + local_6f0 = 0; + local_6e8 = 0xf; + local_700[0]._0_1_ = 0; + if (0xf < local_6c8) { + pvVar3 = (void *)CONCAT71(local_6e0[0]._1_7_,(undefined1)local_6e0[0]); + pvVar10 = pvVar3; + if ((0xfff < local_6c8 + 1) && + (pvVar10 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 1800037c0 (97 bytes) name=FUN_1800037c0 + +void FUN_1800037c0(longlong *param_1) + +{ + void *pvVar1; + void *_Memory; + + if (7 < (ulonglong)param_1[3]) { + pvVar1 = (void *)*param_1; + _Memory = pvVar1; + if ((0xfff < param_1[3] * 2 + 2U) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[3] = 7; + param_1[2] = 0; + *(undefined2 *)param_1 = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 180003830 (358 bytes) name=FUN_180003830 + +longlong * FUN_180003830(longlong *param_1,void *param_2,ulonglong param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + void *pvVar3; + longlong lVar4; + ulonglong uVar5; + void *_Memory; + ulonglong uVar6; + longlong *_Dst; + void *_Dst_00; + + uVar2 = param_1[3]; + if (uVar2 < param_3) { + if (0x7ffffffffffffffe < param_3) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar5 = param_3 | 7; + uVar6 = 0x7ffffffffffffffe; + if (((uVar5 < 0x7fffffffffffffff) && (uVar2 <= 0x7ffffffffffffffe - (uVar2 >> 1))) && + (uVar1 = (uVar2 >> 1) + uVar2, uVar6 = uVar5, uVar5 < uVar1)) { + uVar6 = uVar1; + } + if (0x7fffffffffffffff < uVar6 + 1) { +LAB_180003993: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar5 = (uVar6 + 1) * 2; + _Dst_00 = (void *)0x0; + if (uVar5 < 0x1000) { + if (uVar5 != 0) { + _Dst_00 = (void *)FUN_18000c554(uVar5); + } + } + else { + if (uVar5 + 0x27 <= uVar5) goto LAB_180003993; + lVar4 = FUN_18000c554(uVar5 + 0x27); + if (lVar4 == 0) goto LAB_180003986; + _Dst_00 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst_00 - 8) = lVar4; + } + param_1[3] = uVar6; + param_1[2] = param_3; + memcpy(_Dst_00,param_2,param_3 * 2); + *(undefined2 *)(param_3 * 2 + (longlong)_Dst_00) = 0; + if (7 < uVar2) { + pvVar3 = (void *)*param_1; + _Memory = pvVar3; + if ((0xfff < uVar2 * 2 + 2) && + (_Memory = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { +LAB_180003986: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = (longlong)_Dst_00; + } + else { + _Dst = param_1; + if (7 < uVar2) { + _Dst = (longlong *)*param_1; + } + param_1[2] = param_3; + memmove(_Dst,param_2,param_3 * 2); + *(undefined2 *)(param_3 * 2 + (longlong)_Dst) = 0; + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800039a0 (349 bytes) name=FUN_1800039a0 + +longlong * FUN_1800039a0(longlong *param_1,ulonglong param_2) + +{ + ulonglong uVar1; + ulonglong uVar2; + void *pvVar3; + longlong lVar4; + ulonglong uVar5; + size_t sVar6; + void *_Memory; + longlong *_Dst; + ulonglong uVar7; + void *_Dst_00; + + uVar2 = param_1[3]; + if (param_2 <= uVar2) { + _Dst = param_1; + if (0xf < uVar2) { + _Dst = (longlong *)*param_1; + } + param_1[2] = param_2; + memset(_Dst,0,param_2); + *(undefined1 *)(param_2 + (longlong)_Dst) = 0; + return param_1; + } + if (0x7fffffffffffffff < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar5 = param_2 | 0xf; + uVar7 = 0x7fffffffffffffff; + if (((uVar5 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) && + (uVar1 = (uVar2 >> 1) + uVar2, uVar7 = uVar5, uVar5 < uVar1)) { + uVar7 = uVar1; + } + sVar6 = uVar7 + 1; + if (uVar7 == 0xffffffffffffffff) { + sVar6 = 0xffffffffffffffff; + } + if (sVar6 < 0x1000) { + if (sVar6 == 0) { + _Dst_00 = (void *)0x0; + } + else { + _Dst_00 = (void *)FUN_18000c554(sVar6); + } + } + else { + if (sVar6 + 0x27 <= sVar6) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar4 = FUN_18000c554(sVar6 + 0x27); + if (lVar4 == 0) goto LAB_180003aed; + _Dst_00 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst_00 - 8) = lVar4; + } + param_1[2] = param_2; + param_1[3] = uVar7; + memset(_Dst_00,0,param_2); + *(undefined1 *)((longlong)_Dst_00 + param_2) = 0; + if (0xf < uVar2) { + pvVar3 = (void *)*param_1; + _Memory = pvVar3; + if ((0xfff < uVar2 + 1) && + (_Memory = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { +LAB_180003aed: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = (longlong)_Dst_00; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180003b00 (580 bytes) name=FUN_180003b00 + +undefined8 * FUN_180003b00(longlong *param_1,undefined8 *param_2,undefined8 *param_3) + +{ + ulonglong uVar1; + longlong lVar2; + ulonglong uVar3; + longlong lVar4; + undefined8 *puVar5; + longlong lVar6; + undefined8 *puVar7; + longlong *plVar8; + longlong *plVar9; + undefined8 *puVar10; + undefined8 *puVar11; + undefined8 *puVar12; + ulonglong uVar13; + + lVar4 = *param_1; + lVar6 = ((longlong)param_2 - lVar4) / 6 + ((longlong)param_2 - lVar4 >> 0x3f); + lVar2 = (param_1[1] - lVar4) / 0x60; + if (lVar2 == 0x2aaaaaaaaaaaaaa) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + uVar1 = lVar2 + 1; + uVar13 = (param_1[2] - lVar4) / 0x60; + uVar3 = uVar1; + if ((uVar13 <= 0x2aaaaaaaaaaaaaa - (uVar13 >> 1)) && + (uVar3 = (uVar13 >> 1) + uVar13, uVar3 < uVar1)) { + uVar3 = uVar1; + } + if (0x2aaaaaaaaaaaaaa < uVar3) { +LAB_180003d3b: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar13 = uVar3 * 0x60; + if (uVar13 < 0x1000) { + if (uVar13 == 0) { + puVar10 = (undefined8 *)0x0; + } + else { + puVar10 = (undefined8 *)FUN_18000c554(uVar13); + } + } + else { + if (uVar13 + 0x27 <= uVar13) goto LAB_180003d3b; + lVar4 = FUN_18000c554(uVar13 + 0x27); + if (lVar4 == 0) goto LAB_180003d34; + puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0); + puVar10[-1] = lVar4; + } + puVar12 = puVar10 + ((lVar6 >> 4) - (lVar6 >> 0x3f)) * 0xc; + FUN_180002e60(puVar12,param_3); + FUN_180002e60(puVar12 + 4,param_3 + 4); + FUN_180002e60(puVar12 + 8,param_3 + 8); + puVar7 = (undefined8 *)param_1[1]; + puVar5 = (undefined8 *)*param_1; + puVar11 = puVar10; + if (param_2 != puVar7) { + FUN_180003d50(puVar5,param_2,puVar10); + puVar5 = param_2; + puVar7 = (undefined8 *)param_1[1]; + puVar11 = puVar12 + 0xc; + } + FUN_180003d50(puVar5,puVar7,puVar11); + plVar8 = (longlong *)*param_1; + if (plVar8 != (longlong *)0x0) { + plVar9 = (longlong *)param_1[1]; + if (plVar8 != plVar9) { + do { + FUN_180002ca0(plVar8); + plVar8 = plVar8 + 0xc; + } while (plVar8 != plVar9); + plVar8 = (longlong *)*param_1; + } + plVar9 = plVar8; + if ((0xfff < (ulonglong)(((param_1[2] - (longlong)plVar8) / 0x60) * 0x60)) && + (plVar9 = (longlong *)plVar8[-1], + 0x1f < (ulonglong)((longlong)plVar8 + (-8 - (longlong)plVar9)))) { +LAB_180003d34: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(plVar9); + } + *param_1 = (longlong)puVar10; + param_1[1] = (longlong)(puVar10 + uVar1 * 0xc); + param_1[2] = (longlong)(puVar10 + uVar3 * 0xc); + return puVar12; +} + + +================================================================== + +### EXPORT FUNC 180003d50 (202 bytes) name=FUN_180003d50 + +void FUN_180003d50(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + undefined8 *puVar3; + undefined8 uVar4; + undefined8 *puVar5; + undefined8 *puVar6; + + if (param_1 != param_2) { + puVar5 = param_3; + puVar6 = param_1 + 7; + do { + *(undefined8 *)((longlong)param_3 + (-0x28 - (longlong)param_1) + (longlong)puVar6) = 0; + *(undefined8 *)((longlong)param_3 + (-0x20 - (longlong)param_1) + (longlong)puVar6) = 0; + uVar4 = puVar6[-6]; + puVar1 = puVar6 + 0xc; + puVar2 = puVar6 + 5; + *puVar5 = puVar6[-7]; + puVar5[1] = uVar4; + uVar4 = puVar6[-4]; + puVar5[2] = puVar6[-5]; + puVar5[3] = uVar4; + puVar6[-5] = 0; + puVar5 = puVar5 + 0xc; + puVar6[-4] = 0xf; + *(undefined1 *)(puVar6 + -7) = 0; + *(undefined8 *)((longlong)param_3 + (-0x68 - (longlong)param_1) + (longlong)puVar1) = 0; + *(undefined8 *)((longlong)param_3 + (-0x60 - (longlong)param_1) + (longlong)puVar1) = 0; + uVar4 = puVar6[-2]; + puVar3 = (undefined8 *)((longlong)param_3 + (-0x78 - (longlong)param_1) + (longlong)puVar1); + *puVar3 = puVar6[-3]; + puVar3[1] = uVar4; + uVar4 = *puVar6; + puVar3 = (undefined8 *)((longlong)param_3 + (-0x68 - (longlong)param_1) + (longlong)puVar1); + *puVar3 = puVar6[-1]; + puVar3[1] = uVar4; + puVar6[-1] = 0; + *puVar6 = 0xf; + *(undefined1 *)(puVar6 + -3) = 0; + *(undefined8 *)((longlong)param_3 + (-0x48 - (longlong)param_1) + (longlong)puVar1) = 0; + *(undefined8 *)((longlong)param_3 + (-0x40 - (longlong)param_1) + (longlong)puVar1) = 0; + uVar4 = puVar6[2]; + puVar3 = (undefined8 *)((longlong)param_3 + (-0x58 - (longlong)param_1) + (longlong)puVar1); + *puVar3 = puVar6[1]; + puVar3[1] = uVar4; + uVar4 = puVar6[4]; + puVar3 = (undefined8 *)((longlong)param_3 + (-0x48 - (longlong)param_1) + (longlong)puVar1); + *puVar3 = puVar6[3]; + puVar3[1] = uVar4; + puVar6[3] = 0; + puVar6[4] = 0xf; + *(undefined1 *)(puVar6 + 1) = 0; + puVar6 = puVar1; + } while (puVar2 != param_2); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180003e20 (100 bytes) name=FUN_180003e20 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 * FUN_180003e20(undefined8 *param_1,undefined8 param_2) + +{ + undefined1 auStack_48 [32]; + undefined8 local_28; + undefined1 local_20; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStack_48; + local_20 = 1; + *param_1 = std::exception::vftable; + param_1[1] = 0; + param_1[2] = 0; + local_28 = param_2; + __std_exception_copy(&local_28); + *param_1 = std::invalid_argument::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180003e90 (668 bytes) name=FUN_180003e90 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 * FUN_180003e90(undefined8 *param_1) + +{ + longlong *plVar1; + basic_ostream_> *pbVar2; + void *pvVar3; + void *pvVar4; + size_t sVar5; + undefined1 auStack_188 [32]; + undefined4 local_168; + undefined1 local_160; + undefined7 uStack_15f; + undefined8 uStack_158; + undefined8 local_150; + ulonglong uStack_148; + undefined8 *local_140; + int iStack_12c; + undefined *local_128 [2]; + undefined *local_118; + undefined **local_110; + basic_iostream_> local_108 [16]; + longlong *local_f8; + longlong *local_f0; + longlong *local_d8; + ulonglong *local_d0; + int *local_c0; + ulonglong local_a8; + uint local_a0; + basic_ios_> local_90 [104]; + ulonglong local_28; + ulonglong uVar6; + + local_28 = DAT_180015010 ^ (ulonglong)auStack_188; + local_168 = 0; + param_1[1] = 0; + param_1[2] = 0; + *param_1 = serial::SerialException::vftable; + plVar1 = param_1 + 3; + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)plVar1 = 0; + local_140 = param_1; + memset(local_128,0,0xf8); + local_128[0] = &DAT_18000fcb8; + local_118 = &DAT_18000fba8; + std::basic_ios_>::basic_ios_>(local_90); + local_168 = 1; + std::basic_iostream_>::basic_iostream_> + ((basic_iostream_> *)local_128, + (basic_streambuf_> *)&local_110); + *(undefined ***)((longlong)local_128 + (longlong)*(int *)(local_128[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)&iStack_12c + (longlong)*(int *)(local_128[0] + 4)) = + *(int *)(local_128[0] + 4) + -0x98; + std::basic_streambuf_>::basic_streambuf_> + ((basic_streambuf_> *)&local_110); + local_110 = std::basic_stringbuf,std::allocator_>::vftable; + local_a8 = 0; + local_a0 = 0; + pbVar2 = FUN_180006310((basic_ostream_> *)&local_118, + "SerialException "); + pbVar2 = FUN_180006310(pbVar2,"Serial port already open."); + FUN_180006310(pbVar2," failed."); + local_150 = 0; + uStack_148 = 0xf; + local_160 = 0; + local_168 = 5; + if (((local_a0 & 2) == 0) && (uVar6 = *local_d0, uVar6 != 0)) { + pvVar4 = (void *)*local_f0; + if (uVar6 < local_a8) { + uVar6 = local_a8; + } + sVar5 = uVar6 - (longlong)pvVar4; +LAB_18000401b: + FUN_180002610((longlong *)&local_160,pvVar4,sVar5); + } + else if (((local_a0 & 4) == 0) && (*local_d8 != 0)) { + pvVar4 = (void *)*local_f8; + sVar5 = ((longlong)*local_c0 - (longlong)pvVar4) + *local_d8; + goto LAB_18000401b; + } + if (plVar1 == (longlong *)&local_160) { + if (0xf < uStack_148) { + pvVar3 = (void *)CONCAT71(uStack_15f,local_160); + pvVar4 = pvVar3; + if ((0xfff < uStack_148 + 1) && + (pvVar4 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) goto LAB_1800040b7; + free(pvVar4); + } + } + else { + if (0xf < (ulonglong)param_1[6]) { + pvVar4 = (void *)*plVar1; + pvVar3 = pvVar4; + if ((0xfff < param_1[6] + 1) && + (pvVar3 = *(void **)((longlong)pvVar4 + -8), + 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar3)))) { +LAB_1800040b7: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar3); + } + param_1[6] = 0xf; + *(undefined1 *)plVar1 = 0; + *plVar1 = CONCAT71(uStack_15f,local_160); + param_1[4] = uStack_158; + param_1[5] = local_150; + param_1[6] = uStack_148; + } + *(undefined ***)((longlong)local_128 + (longlong)*(int *)(local_128[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)&iStack_12c + (longlong)*(int *)(local_128[0] + 4)) = + *(int *)(local_128[0] + 4) + -0x98; + FUN_180005f90((basic_streambuf_> *)&local_110); + std::basic_iostream_>::~basic_iostream_> + (local_108); + std::basic_ios_>::~basic_ios_>(local_90); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004130 (53 bytes) name=FUN_180004130 + +undefined8 * FUN_180004130(undefined8 *param_1,longlong param_2) + +{ + param_1[1] = 0; + param_1[2] = 0; + *param_1 = serial::SerialException::vftable; + FUN_180002e60(param_1 + 3,(undefined8 *)(param_2 + 0x18)); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004170 (126 bytes) name=FUN_180004170 + +void FUN_180004170(undefined8 *param_1) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = serial::SerialException::vftable; + if (0xf < (ulonglong)param_1[6]) { + pvVar1 = (void *)param_1[3]; + _Memory = pvVar1; + if ((0xfff < param_1[6] + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *param_1 = std::exception::vftable; + /* WARNING: Could not recover jumptable at 0x0001800041e1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + __std_exception_destroy(param_1 + 1); + return; +} + + +================================================================== + +### EXPORT FUNC 1800041f0 (15 bytes) name=FUN_1800041f0 + +longlong * FUN_1800041f0(longlong param_1) + +{ + longlong *plVar1; + + plVar1 = (longlong *)(param_1 + 0x18); + if (0xf < *(ulonglong *)(param_1 + 0x30)) { + plVar1 = (longlong *)*plVar1; + } + return plVar1; +} + + +================================================================== + +### EXPORT FUNC 180004200 (159 bytes) name=FUN_180004200 + +undefined8 * FUN_180004200(undefined8 *param_1,uint param_2) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = serial::SerialException::vftable; + if (0xf < (ulonglong)param_1[6]) { + pvVar1 = (void *)param_1[3]; + _Memory = pvVar1; + if ((0xfff < param_1[6] + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *param_1 = std::exception::vftable; + __std_exception_destroy(param_1 + 1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800042a0 (95 bytes) name=FUN_1800042a0 + +void FUN_1800042a0(longlong *param_1) + +{ + basic_ios_> *this; + + this = (basic_ios_> *)(param_1 + 0x13); + *(undefined ***)(this + (longlong)*(int *)(*param_1 + 4) + -0x98) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)(this + (longlong)*(int *)(*param_1 + 4) + -0x9c) = *(int *)(*param_1 + 4) + -0x98; + FUN_180005f90((basic_streambuf_> *)(param_1 + 3)); + std::basic_iostream_>::~basic_iostream_> + ((basic_iostream_> *)(param_1 + 4)); + /* WARNING: Could not recover jumptable at 0x0001800042f8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + std::basic_ios_>::~basic_ios_>(this); + return; +} + + +================================================================== + +### EXPORT FUNC 180004300 (13 bytes) name=FUN_180004300 + +void FUN_180004300(void *param_1) + +{ + memset(param_1,0,0xf8); + return; +} + + +================================================================== + +### EXPORT FUNC 180004310 (843 bytes) name=FUN_180004310 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 * FUN_180004310(undefined8 *param_1,longlong *param_2,undefined4 param_3,char *param_4) + +{ + longlong *plVar1; + basic_ostream_> *pbVar2; + basic_ostream_> *pbVar3; + void *pvVar4; + void *pvVar5; + char *pcVar6; + size_t sVar7; + undefined1 auStack_1b8 [32]; + undefined4 local_198; + undefined1 local_190; + undefined7 uStack_18f; + undefined8 uStack_188; + undefined8 local_180; + ulonglong uStack_178; + undefined8 *local_168; + undefined8 local_150; + undefined *local_148 [2]; + undefined *local_138; + undefined **local_130; + basic_iostream_> local_128 [16]; + longlong *local_118; + longlong *local_110; + longlong *local_f8; + ulonglong *local_f0; + int *local_e0; + ulonglong local_c8; + uint local_c0; + basic_ios_> local_b0 [104]; + ulonglong local_48; + ulonglong uVar8; + + local_48 = DAT_180015010 ^ (ulonglong)auStack_1b8; + local_198 = 0; + param_1[1] = 0; + param_1[2] = 0; + *param_1 = serial::IOException::vftable; + local_168 = param_1; + local_150 = param_2; + FUN_180002e60(param_1 + 3,param_2); + *(undefined4 *)(param_1 + 7) = param_3; + plVar1 = param_1 + 8; + param_1[10] = 0; + param_1[0xb] = 0xf; + *(undefined1 *)plVar1 = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + memset(local_148,0,0xf8); + local_148[0] = &DAT_18000fcb8; + local_138 = &DAT_18000fba8; + std::basic_ios_>::basic_ios_>(local_b0); + local_198 = 1; + std::basic_iostream_>::basic_iostream_> + ((basic_iostream_> *)local_148, + (basic_streambuf_> *)&local_130); + *(undefined ***)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4) + -4) = + *(int *)(local_148[0] + 4) + -0x98; + std::basic_streambuf_>::basic_streambuf_> + ((basic_streambuf_> *)&local_130); + local_130 = std::basic_stringbuf,std::allocator_>::vftable; + local_c8 = 0; + local_c0 = 0; + pbVar2 = FUN_180006310((basic_ostream_> *)&local_138,"IO Exception: ") + ; + FUN_180006310(pbVar2,param_4); + pbVar2 = FUN_180006310((basic_ostream_> *)&local_138,", file "); + pcVar6 = (char *)(param_1 + 3); + if (0xf < (ulonglong)param_1[6]) { + pcVar6 = (char *)param_1[3]; + } + pbVar2 = FUN_180006920(pbVar2,pcVar6,param_1[5]); + pbVar2 = FUN_180006310(pbVar2,", line "); + pbVar3 = std::basic_ostream_>::operator<< + (pbVar2,*(int *)(param_1 + 7)); + FUN_180006310((basic_ostream_> *)pbVar3,"."); + local_180 = 0; + uStack_178 = 0xf; + local_190 = 0; + local_198 = 5; + if (((local_c0 & 2) == 0) && (uVar8 = *local_f0, uVar8 != 0)) { + pvVar4 = (void *)*local_110; + if (uVar8 < local_c8) { + uVar8 = local_c8; + } + sVar7 = uVar8 - (longlong)pvVar4; +LAB_1800044fe: + FUN_180002610((longlong *)&local_190,pvVar4,sVar7); + } + else if (((local_c0 & 4) == 0) && (*local_f8 != 0)) { + pvVar4 = (void *)*local_118; + sVar7 = ((longlong)*local_e0 - (longlong)pvVar4) + *local_f8; + goto LAB_1800044fe; + } + if (plVar1 == (longlong *)&local_190) { + if (0xf < uStack_178) { + pvVar5 = (void *)CONCAT71(uStack_18f,local_190); + pvVar4 = pvVar5; + if ((0xfff < uStack_178 + 1) && + (pvVar4 = *(void **)((longlong)pvVar5 + -8), + 0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar4)))) goto LAB_18000459b; + free(pvVar4); + } + } + else { + if (0xf < (ulonglong)param_1[0xb]) { + pvVar4 = (void *)*plVar1; + pvVar5 = pvVar4; + if ((0xfff < param_1[0xb] + 1) && + (pvVar5 = *(void **)((longlong)pvVar4 + -8), + 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar5)))) { +LAB_18000459b: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar5); + } + param_1[0xb] = 0xf; + *(undefined1 *)plVar1 = 0; + *plVar1 = CONCAT71(uStack_18f,local_190); + param_1[9] = uStack_188; + param_1[10] = local_180; + param_1[0xb] = uStack_178; + } + *(undefined ***)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4) + -4) = + *(int *)(local_148[0] + 4) + -0x98; + FUN_180005f90((basic_streambuf_> *)&local_130); + std::basic_iostream_>::~basic_iostream_> + (local_128); + std::basic_ios_>::~basic_ios_>(local_b0); + if (0xf < (ulonglong)param_2[3]) { + pvVar4 = (void *)*param_2; + pvVar5 = pvVar4; + if ((0xfff < param_2[3] + 1U) && + (pvVar5 = *(void **)((longlong)pvVar4 + -8), + 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar5)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar5); + } + param_2[2] = 0; + param_2[3] = 0xf; + *(undefined1 *)param_2 = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004660 (205 bytes) name=FUN_180004660 + +void FUN_180004660(undefined8 *param_1) + +{ + void *pvVar1; + void *pvVar2; + + *param_1 = serial::IOException::vftable; + if (0xf < (ulonglong)param_1[0xb]) { + pvVar1 = (void *)param_1[8]; + pvVar2 = pvVar1; + if ((0xfff < param_1[0xb] + 1) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180004727; + free(pvVar2); + } + param_1[10] = 0; + param_1[0xb] = 0xf; + *(undefined1 *)(param_1 + 8) = 0; + if (0xf < (ulonglong)param_1[6]) { + pvVar1 = (void *)param_1[3]; + pvVar2 = pvVar1; + if ((0xfff < param_1[6] + 1) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { +LAB_180004727: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar2); + } + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *param_1 = std::exception::vftable; + /* WARNING: Could not recover jumptable at 0x000180004720. Too many branches */ + /* WARNING: Treating indirect jump as call */ + __std_exception_destroy(param_1 + 1); + return; +} + + +================================================================== + +### EXPORT FUNC 180004730 (97 bytes) name=FUN_180004730 + +undefined8 * FUN_180004730(undefined8 *param_1,longlong param_2) + +{ + param_1[1] = 0; + param_1[2] = 0; + *param_1 = serial::IOException::vftable; + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *(undefined4 *)(param_1 + 7) = *(undefined4 *)(param_2 + 0x38); + FUN_180002e60(param_1 + 8,(undefined8 *)(param_2 + 0x40)); + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0x60); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800047a0 (15 bytes) name=FUN_1800047a0 + +longlong * FUN_1800047a0(longlong param_1) + +{ + longlong *plVar1; + + plVar1 = (longlong *)(param_1 + 0x40); + if (0xf < *(ulonglong *)(param_1 + 0x58)) { + plVar1 = (longlong *)*plVar1; + } + return plVar1; +} + + +================================================================== + +### EXPORT FUNC 1800047b0 (238 bytes) name=FUN_1800047b0 + +undefined8 * FUN_1800047b0(undefined8 *param_1,uint param_2) + +{ + void *pvVar1; + void *pvVar2; + + *param_1 = serial::IOException::vftable; + if (0xf < (ulonglong)param_1[0xb]) { + pvVar1 = (void *)param_1[8]; + pvVar2 = pvVar1; + if ((0xfff < param_1[0xb] + 1) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180004898; + free(pvVar2); + } + param_1[10] = 0; + param_1[0xb] = 0xf; + *(undefined1 *)(param_1 + 8) = 0; + if (0xf < (ulonglong)param_1[6]) { + pvVar1 = (void *)param_1[3]; + pvVar2 = pvVar1; + if ((0xfff < param_1[6] + 1) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { +LAB_180004898: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar2); + } + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *param_1 = std::exception::vftable; + __std_exception_destroy(param_1 + 1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800048a0 (667 bytes) name=FUN_1800048a0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 * FUN_1800048a0(undefined8 *param_1,char *param_2) + +{ + longlong *plVar1; + basic_ostream_> *pbVar2; + void *pvVar3; + void *pvVar4; + size_t sVar5; + undefined1 auStack_198 [32]; + undefined4 local_178; + undefined1 local_170; + undefined7 uStack_16f; + undefined8 uStack_168; + undefined8 local_160; + ulonglong uStack_158; + undefined8 *local_150; + int iStack_13c; + undefined *local_138 [2]; + undefined *local_128; + undefined **local_120; + basic_iostream_> local_118 [16]; + longlong *local_108; + longlong *local_100; + longlong *local_e8; + ulonglong *local_e0; + int *local_d0; + ulonglong local_b8; + uint local_b0; + basic_ios_> local_a0 [104]; + ulonglong local_38; + ulonglong uVar6; + + local_38 = DAT_180015010 ^ (ulonglong)auStack_198; + local_178 = 0; + param_1[1] = 0; + param_1[2] = 0; + *param_1 = serial::PortNotOpenedException::vftable; + plVar1 = param_1 + 3; + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)plVar1 = 0; + local_150 = param_1; + memset(local_138,0,0xf8); + local_138[0] = &DAT_18000fcb8; + local_128 = &DAT_18000fba8; + std::basic_ios_>::basic_ios_>(local_a0); + local_178 = 1; + std::basic_iostream_>::basic_iostream_> + ((basic_iostream_> *)local_138, + (basic_streambuf_> *)&local_120); + *(undefined ***)((longlong)local_138 + (longlong)*(int *)(local_138[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)&iStack_13c + (longlong)*(int *)(local_138[0] + 4)) = + *(int *)(local_138[0] + 4) + -0x98; + std::basic_streambuf_>::basic_streambuf_> + ((basic_streambuf_> *)&local_120); + local_120 = std::basic_stringbuf,std::allocator_>::vftable; + local_b8 = 0; + local_b0 = 0; + pbVar2 = FUN_180006310((basic_ostream_> *)&local_128, + "PortNotOpenedException "); + pbVar2 = FUN_180006310(pbVar2,param_2); + FUN_180006310(pbVar2," failed."); + local_160 = 0; + uStack_158 = 0xf; + local_170 = 0; + local_178 = 5; + if (((local_b0 & 2) == 0) && (uVar6 = *local_e0, uVar6 != 0)) { + pvVar4 = (void *)*local_100; + if (uVar6 < local_b8) { + uVar6 = local_b8; + } + sVar5 = uVar6 - (longlong)pvVar4; +LAB_180004a2b: + FUN_180002610((longlong *)&local_170,pvVar4,sVar5); + } + else if (((local_b0 & 4) == 0) && (*local_e8 != 0)) { + pvVar4 = (void *)*local_108; + sVar5 = ((longlong)*local_d0 - (longlong)pvVar4) + *local_e8; + goto LAB_180004a2b; + } + if (plVar1 == (longlong *)&local_170) { + if (0xf < uStack_158) { + pvVar3 = (void *)CONCAT71(uStack_16f,local_170); + pvVar4 = pvVar3; + if ((0xfff < uStack_158 + 1) && + (pvVar4 = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) goto LAB_180004ac7; + free(pvVar4); + } + } + else { + if (0xf < (ulonglong)param_1[6]) { + pvVar4 = (void *)*plVar1; + pvVar3 = pvVar4; + if ((0xfff < param_1[6] + 1) && + (pvVar3 = *(void **)((longlong)pvVar4 + -8), + 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar3)))) { +LAB_180004ac7: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar3); + } + param_1[6] = 0xf; + *(undefined1 *)plVar1 = 0; + *plVar1 = CONCAT71(uStack_16f,local_170); + param_1[4] = uStack_168; + param_1[5] = local_160; + param_1[6] = uStack_158; + } + *(undefined ***)((longlong)local_138 + (longlong)*(int *)(local_138[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)&iStack_13c + (longlong)*(int *)(local_138[0] + 4)) = + *(int *)(local_138[0] + 4) + -0x98; + FUN_180005f90((basic_streambuf_> *)&local_120); + std::basic_iostream_>::~basic_iostream_> + (local_118); + std::basic_ios_>::~basic_ios_>(local_a0); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004b40 (53 bytes) name=FUN_180004b40 + +undefined8 * FUN_180004b40(undefined8 *param_1,longlong param_2) + +{ + param_1[1] = 0; + param_1[2] = 0; + *param_1 = serial::PortNotOpenedException::vftable; + FUN_180002e60(param_1 + 3,(undefined8 *)(param_2 + 0x18)); + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004b80 (126 bytes) name=FUN_180004b80 + +void FUN_180004b80(undefined8 *param_1) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = serial::PortNotOpenedException::vftable; + if (0xf < (ulonglong)param_1[6]) { + pvVar1 = (void *)param_1[3]; + _Memory = pvVar1; + if ((0xfff < param_1[6] + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *param_1 = std::exception::vftable; + /* WARNING: Could not recover jumptable at 0x000180004bf1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + __std_exception_destroy(param_1 + 1); + return; +} + + +================================================================== + +### EXPORT FUNC 180004c00 (159 bytes) name=FUN_180004c00 + +undefined8 * FUN_180004c00(undefined8 *param_1,uint param_2) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = serial::PortNotOpenedException::vftable; + if (0xf < (ulonglong)param_1[6]) { + pvVar1 = (void *)param_1[3]; + _Memory = pvVar1; + if ((0xfff < param_1[6] + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[5] = 0; + param_1[6] = 0xf; + *(undefined1 *)(param_1 + 3) = 0; + *param_1 = std::exception::vftable; + __std_exception_destroy(param_1 + 1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004ca0 (744 bytes) name=FUN_180004ca0 + +undefined8 * FUN_180004ca0(undefined8 *param_1,undefined8 *param_2) + +{ + ulonglong *puVar1; + longlong lVar2; + ulonglong uVar3; + ulonglong uVar4; + undefined8 uVar5; + short *psVar6; + ulonglong uVar7; + void *_Dst; + undefined8 *puVar8; + longlong lVar9; + undefined8 *puVar10; + + _Dst = (void *)0x0; + if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 4) < + DAT_1800160e0) { + _Init_thread_header(&DAT_1800160e0); + if (DAT_1800160e0 == -1) { + DAT_1800160d0 = 0; + DAT_1800160d8 = 7; + DAT_1800160c0._0_2_ = 0; + FUN_180003830(&DAT_1800160c0,L"\\\\.\\",4); + atexit(FUN_18000e680); + _Init_thread_footer(&DAT_1800160e0); + } + } + psVar6 = (short *)&DAT_1800160c0; + if (7 < DAT_1800160d8) { + psVar6 = (short *)CONCAT62(DAT_1800160c0._2_6_,(undefined2)DAT_1800160c0); + } + puVar8 = param_2; + if (7 < (ulonglong)param_2[3]) { + puVar8 = (undefined8 *)*param_2; + } + puVar1 = param_2 + 2; + uVar3 = *puVar1; + uVar7 = uVar3; + if (DAT_1800160d0 < uVar3) { + uVar7 = DAT_1800160d0; + } + if (uVar7 != 0) { + lVar9 = (longlong)puVar8 - (longlong)psVar6; + do { + if (*(short *)(lVar9 + (longlong)psVar6) != *psVar6) goto LAB_180004e80; + psVar6 = psVar6 + 1; + uVar7 = uVar7 - 1; + } while (uVar7 != 0); + } + if ((uVar3 < DAT_1800160d0) || (uVar3 != DAT_1800160d0)) { +LAB_180004e80: + param_1[2] = 0; + param_1[3] = 7; + *(undefined2 *)param_1 = 0; + FUN_180006860(param_1,DAT_1800160d0 + *puVar1); + uVar3 = DAT_1800160d0; + puVar8 = &DAT_1800160c0; + if (7 < DAT_1800160d8) { + puVar8 = (undefined8 *)CONCAT62(DAT_1800160c0._2_6_,(undefined2)DAT_1800160c0); + } + lVar9 = param_1[2]; + uVar7 = param_1[3]; + if (uVar7 - lVar9 < DAT_1800160d0) { + FUN_1800066a0(param_1,DAT_1800160d0,uVar7,puVar8,DAT_1800160d0); + } + else { + lVar2 = lVar9 + DAT_1800160d0; + param_1[2] = lVar2; + puVar10 = param_1; + if (7 < uVar7) { + puVar10 = (undefined8 *)*param_1; + } + memmove((void *)((longlong)puVar10 + lVar9 * 2),puVar8,uVar3 * 2); + *(undefined2 *)((longlong)puVar10 + lVar2 * 2) = 0; + } + if (7 < (ulonglong)param_2[3]) { + param_2 = (undefined8 *)*param_2; + } + uVar3 = *puVar1; + lVar9 = param_1[2]; + uVar7 = param_1[3]; + if (uVar7 - lVar9 < uVar3) { + FUN_1800066a0(param_1,uVar3,uVar7,param_2,uVar3); + } + else { + param_1[2] = lVar9 + uVar3; + puVar8 = param_1; + if (7 < uVar7) { + puVar8 = (undefined8 *)*param_1; + } + memmove((void *)((longlong)puVar8 + lVar9 * 2),param_2,uVar3 * 2); + *(undefined2 *)((longlong)puVar8 + (lVar9 + uVar3) * 2) = 0; + } + } + else { + param_1[2] = 0; + param_1[3] = 0; + uVar3 = *puVar1; + if (7 < (ulonglong)param_2[3]) { + param_2 = (undefined8 *)*param_2; + } + if (uVar3 < 8) { + uVar5 = param_2[1]; + *param_1 = *param_2; + param_1[1] = uVar5; + param_1[2] = uVar3; + param_1[3] = 7; + } + else { + uVar7 = uVar3 | 7; + if (0x7ffffffffffffffe < uVar7) { + uVar7 = 0x7ffffffffffffffe; + } + if (0x7fffffffffffffff < uVar7 + 1) { +LAB_180004f84: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar4 = (uVar7 + 1) * 2; + if (uVar4 < 0x1000) { + if (uVar4 != 0) { + _Dst = (void *)FUN_18000c554(uVar4); + } + } + else { + if (uVar4 + 0x27 <= uVar4) goto LAB_180004f84; + lVar9 = FUN_18000c554(uVar4 + 0x27); + if (lVar9 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + _Dst = (void *)(lVar9 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar9; + } + *param_1 = _Dst; + memcpy(_Dst,param_2,uVar3 * 2 + 2); + param_1[2] = uVar3; + param_1[3] = uVar7; + } + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180004f90 (170 bytes) name=FUN_180004f90 + +undefined8 * FUN_180004f90(undefined8 *param_1,uint param_2) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = serial::Serial::SerialImpl::vftable; + FUN_180005790((longlong)param_1); + CloseHandle((HANDLE)param_1[0xc]); + CloseHandle((HANDLE)param_1[0xd]); + if (7 < (ulonglong)param_1[4]) { + pvVar1 = (void *)param_1[1]; + _Memory = pvVar1; + if ((0xfff < param_1[4] * 2 + 2U) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + param_1[3] = 0; + param_1[4] = 7; + *(undefined2 *)(param_1 + 1) = 0; + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180005040 (760 bytes) name=FUN_180005040 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180005040(longlong param_1) + +{ + DWORD DVar1; + HANDLE pvVar2; + longlong *plVar3; + basic_ostream_> *pbVar4; + longlong *plVar5; + char *pcVar6; + LPCWSTR ***ppppWVar7; + undefined8 uVar8; + undefined1 auStackY_258 [32]; + longlong local_208 [4]; + longlong local_1e8 [8]; + undefined8 local_1a8 [14]; + LPCWSTR **local_138 [3]; + undefined8 local_120; + undefined *local_118 [2]; + undefined *local_108; + undefined **local_100 [13]; + undefined8 local_98; + undefined4 local_90; + basic_ios_> local_80 [104]; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStackY_258; + if (*(longlong *)(param_1 + 0x18) == 0) { + FUN_180003e20(local_208,"Empty port is invalid."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_208,(ThrowInfo *)&DAT_180013448); + } + if (*(char *)(param_1 + 0x30) != '\x01') { + FUN_180004ca0(local_138,(undefined8 *)(param_1 + 8)); + ppppWVar7 = local_138; + if (7 < local_120) { + ppppWVar7 = (LPCWSTR ***)local_138[0]; + } + pvVar2 = CreateFileW((LPCWSTR)ppppWVar7,0xc0000000,0,(LPSECURITY_ATTRIBUTES)0x0,3,0x80, + (HANDLE)0x0); + *(HANDLE *)(param_1 + 0x28) = pvVar2; + if (pvVar2 == (HANDLE)0xffffffffffffffff) { + DVar1 = GetLastError(); + memset(local_118,0,0xf8); + local_118[0] = &DAT_18000fcb8; + local_108 = &DAT_18000fba8; + std::basic_ios_>::basic_ios_> + (local_80); + uVar8 = 0; + std::basic_iostream_>:: + basic_iostream_> + ((basic_iostream_> *)local_118, + (basic_streambuf_> *)local_100); + *(undefined ***)((longlong)local_118 + (longlong)*(int *)(local_118[0] + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)((longlong)local_118 + (longlong)*(int *)(local_118[0] + 4) + -4) = + *(int *)(local_118[0] + 4) + -0x98; + std::basic_streambuf_>:: + basic_streambuf_> + ((basic_streambuf_> *)local_100); + local_100[0] = std::basic_stringbuf,std::allocator_>:: + vftable; + local_98 = 0; + local_90 = 0; + if (DVar1 == 2) { + plVar3 = FUN_1800059c0(param_1,local_208,uVar8); + pbVar4 = FUN_180006310((basic_ostream_> *)&local_108, + "Specified port, "); + pbVar4 = (basic_ostream_> *)FUN_1800064e0(pbVar4,(char *)plVar3) + ; + FUN_180006310(pbVar4,", does not exist."); + FUN_1800024b0(local_208); + plVar3 = FUN_180006050((longlong)local_118,local_1e8); + plVar5 = FUN_180002510(local_208, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + pcVar6 = (char *)FUN_1800061b0(plVar3); + FUN_180004310(local_1a8,plVar5,0x53,pcVar6); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_1a8,(ThrowInfo *)&DAT_1800134b8); + } + pbVar4 = FUN_180006310((basic_ostream_> *)&local_108, + "Unknown error opening the serial port: "); + std::basic_ostream_>::operator<<(pbVar4,DVar1); + plVar3 = FUN_180006050((longlong)local_118,local_1e8); + plVar5 = FUN_180002510(local_208, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + pcVar6 = (char *)FUN_1800061b0(plVar3); + FUN_180004310(local_1a8,plVar5,0x56,pcVar6); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_1a8,(ThrowInfo *)&DAT_1800134b8); + } + FUN_1800053c0(param_1); + *(undefined1 *)(param_1 + 0x30) = 1; + if (7 < local_120) { + ppppWVar7 = (LPCWSTR ***)local_138[0]; + if ((0xfff < local_120 * 2 + 2) && + (ppppWVar7 = (LPCWSTR ***)local_138[0][-1], + 0x1f < (ulonglong)((longlong)local_138[0] + (-8 - (longlong)ppppWVar7)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(ppppWVar7); + } + return; + } + FUN_180003e90(local_1e8); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_1e8,(ThrowInfo *)&DAT_1800133a0); +} + + +================================================================== + +### EXPORT FUNC 180005340 (61 bytes) name=FUN_180005340 + +undefined8 * FUN_180005340(undefined8 *param_1,longlong param_2) + +{ + *param_1 = std::exception::vftable; + param_1[1] = 0; + param_1[2] = 0; + __std_exception_copy(param_2 + 8); + *param_1 = std::invalid_argument::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180005380 (61 bytes) name=FUN_180005380 + +undefined8 * FUN_180005380(undefined8 *param_1,longlong param_2) + +{ + *param_1 = std::exception::vftable; + param_1[1] = 0; + param_1[2] = 0; + __std_exception_copy(param_2 + 8); + *param_1 = std::logic_error::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800053c0 (968 bytes) name=FUN_1800053c0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1800053c0(longlong param_1) + +{ + uint uVar1; + int iVar2; + BOOL BVar3; + longlong *plVar4; + undefined1 auStack_108 [40]; + longlong local_e0 [5]; + undefined8 local_b8 [14]; + _DCB local_48; + _COMMTIMEOUTS local_28; + ulonglong local_10; + + local_10 = DAT_180015010 ^ (ulonglong)auStack_108; + if (*(HANDLE *)(param_1 + 0x28) == (HANDLE)0xffffffffffffffff) { + plVar4 = FUN_180002510(local_e0, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_b8,plVar4,99,"Invalid file descriptor, is the serial port open?"); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); + } + local_48.StopBits = '\0'; + local_48.XonChar = '\0'; + local_48.XoffChar = '\0'; + local_48.ErrorChar = '\0'; + local_48.EofChar = '\0'; + local_48.EvtChar = '\0'; + local_48.wReserved1 = 0; + local_48.DCBlength = 0x1c; + local_48.BaudRate = 0; + local_48._8_4_ = 0; + local_48.wReserved = 0; + local_48.XonLim = 0; + local_48.XoffLim = 0; + local_48.ByteSize = '\0'; + local_48.Parity = '\0'; + BVar3 = GetCommState(*(HANDLE *)(param_1 + 0x28),&local_48); + if (BVar3 == 0) { + plVar4 = FUN_180002510(local_e0, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_b8,plVar4,0x6c,"Error getting the serial port state."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); + } + uVar1 = *(uint *)(param_1 + 0x48); + local_48.BaudRate = uVar1; + if (uVar1 < 0x3841) { + if (uVar1 == 0x3840) { + local_48.BaudRate = 0x3840; + } + else if (uVar1 < 0x4b1) { + if (uVar1 == 0x4b0) { + local_48.BaudRate = 0x4b0; + } + else if (uVar1 == 0x6e) { + local_48.BaudRate = 0x6e; + } + else if (uVar1 == 300) { + local_48.BaudRate = 300; + } + } + else if (uVar1 == 0x960) { + local_48.BaudRate = 0x960; + } + else if (uVar1 == 0x12c0) { + local_48.BaudRate = 0x12c0; + } + } + else if (uVar1 < 0x1c201) { + if (uVar1 == 0x1c200) { + local_48.BaudRate = 0x1c200; + } + else if (uVar1 == 0x4b00) { + local_48.BaudRate = 0x4b00; + } + else if (uVar1 == 0x9600) { + local_48.BaudRate = 0x9600; + } + } + else if (uVar1 == 0x1f400) { + local_48.BaudRate = 0x1f400; + } + else if (uVar1 == 0x3e800) { + local_48.BaudRate = 0x3e800; + } + iVar2 = *(int *)(param_1 + 0x50); + if (iVar2 == 8) { + local_48.ByteSize = '\b'; + } + else if (iVar2 == 7) { + local_48.ByteSize = '\a'; + } + else if (iVar2 == 6) { + local_48.ByteSize = '\x06'; + } + else { + if (iVar2 != 5) { + FUN_180003e20(local_e0,"invalid char len"); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_e0,(ThrowInfo *)&DAT_180013448); + } + local_48.ByteSize = '\x05'; + } + iVar2 = *(int *)(param_1 + 0x54); + if (iVar2 == 1) { + local_48._20_8_ = local_48._20_8_ & 0xffffffffffffff00; + } + else if (iVar2 == 3) { + local_48.StopBits = 1; + } + else { + if (iVar2 != 2) { + FUN_180003e20(local_e0,"invalid stop bit"); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_e0,(ThrowInfo *)&DAT_180013448); + } + local_48.StopBits = 2; + } + iVar2 = *(int *)(param_1 + 0x4c); + if ((((iVar2 != 0) && (iVar2 != 2)) && (iVar2 != 1)) && ((iVar2 != 3 && (iVar2 != 4)))) { + FUN_180003e20(local_e0,"invalid parity"); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_e0,(ThrowInfo *)&DAT_180013448); + } + local_48.Parity = (BYTE)iVar2; + iVar2 = *(int *)(param_1 + 0x58); + if (iVar2 == 0) { + local_48._8_4_ = local_48._8_4_ & 0xffffccfb; + } + else if (iVar2 == 1) { + local_48._8_4_ = local_48._8_4_ & 0xffffcffb | 0x300; + } + else if (iVar2 == 2) { + local_48._8_4_ = local_48._8_4_ & 0xffffecff | 0x2004; + } + BVar3 = SetCommState(*(HANDLE *)(param_1 + 0x28),&local_48); + if (BVar3 == 0) { + CloseHandle(*(HANDLE *)(param_1 + 0x28)); + plVar4 = FUN_180002510(local_e0, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_b8,plVar4,0x106,"Error setting serial port settings."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); + } + local_28.ReadIntervalTimeout = *(DWORD *)(param_1 + 0x34); + local_28.ReadTotalTimeoutConstant = *(DWORD *)(param_1 + 0x38); + local_28.ReadTotalTimeoutMultiplier = *(DWORD *)(param_1 + 0x3c); + local_28.WriteTotalTimeoutConstant = *(DWORD *)(param_1 + 0x40); + local_28.WriteTotalTimeoutMultiplier = *(DWORD *)(param_1 + 0x44); + BVar3 = SetCommTimeouts(*(HANDLE *)(param_1 + 0x28),&local_28); + if (BVar3 != 0) { + return; + } + plVar4 = FUN_180002510(local_e0, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_b8,plVar4,0x111,"Error setting timeouts."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); +} + + +================================================================== + +### EXPORT FUNC 180005790 (244 bytes) name=FUN_180005790 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180005790(longlong param_1) + +{ + BOOL BVar1; + DWORD DVar2; + basic_ostream_> *this; + longlong *plVar3; + longlong *plVar4; + char *pcVar5; + undefined1 auStack_1f8 [40]; + longlong local_1d0 [4]; + longlong local_1b0 [5]; + undefined8 local_188 [14]; + basic_iostream_> local_118 [16]; + basic_ostream_> local_108 [240]; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStack_1f8; + if (*(char *)(param_1 + 0x30) == '\x01') { + if (*(HANDLE *)(param_1 + 0x28) != (HANDLE)0xffffffffffffffff) { + BVar1 = CloseHandle(*(HANDLE *)(param_1 + 0x28)); + if (BVar1 == 0) { + FUN_180004300(local_118); + FUN_1800060f0(local_118); + DVar2 = GetLastError(); + this = FUN_180006310(local_108,"Error while closing serial port: "); + std::basic_ostream_>::operator<<(this,DVar2); + plVar3 = FUN_180006050((longlong)local_118,local_1b0); + plVar4 = FUN_180002510(local_1d0, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + pcVar5 = (char *)FUN_1800061b0(plVar3); + FUN_180004310(local_188,plVar4,0x11f,pcVar5); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_188,(ThrowInfo *)&DAT_1800134b8); + } + *(undefined8 *)(param_1 + 0x28) = 0xffffffffffffffff; + } + *(undefined1 *)(param_1 + 0x30) = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180005890 (291 bytes) name=FUN_180005890 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +DWORD FUN_180005890(longlong param_1,LPVOID param_2,DWORD param_3) + +{ + BOOL BVar1; + DWORD DVar2; + basic_ostream_> *this; + longlong *plVar3; + longlong *plVar4; + char *pcVar5; + undefined1 auStackY_228 [32]; + longlong local_1f0 [4]; + longlong local_1d0 [7]; + undefined8 local_198 [14]; + DWORD local_128 [4]; + basic_iostream_> local_118 [16]; + basic_ostream_> local_108 [240]; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStackY_228; + if (*(char *)(param_1 + 0x30) == '\0') { + FUN_1800048a0(local_1d0,"Serial::read"); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_1d0,(ThrowInfo *)&DAT_1800134d8); + } + BVar1 = ReadFile(*(HANDLE *)(param_1 + 0x28),param_2,param_3,local_128,(LPOVERLAPPED)0x0); + if (BVar1 != 0) { + return local_128[0]; + } + FUN_180004300(local_118); + FUN_1800060f0(local_118); + DVar2 = GetLastError(); + this = FUN_180006310(local_108,"Error while reading from the serial port: "); + std::basic_ostream_>::operator<<(this,DVar2); + plVar3 = FUN_180006050((longlong)local_118,local_1d0); + plVar4 = FUN_180002510(local_1f0, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + pcVar5 = (char *)FUN_1800061b0(plVar3); + FUN_180004310(local_198,plVar4,0x154,pcVar5); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_198,(ThrowInfo *)&DAT_1800134b8); +} + + +================================================================== + +### EXPORT FUNC 1800059c0 (197 bytes) name=FUN_1800059c0 + +longlong * FUN_1800059c0(longlong param_1,longlong *param_2,undefined8 param_3) + +{ + undefined1 uVar1; + longlong lVar2; + ulonglong uVar3; + longlong *plVar4; + undefined8 *puVar5; + ulonglong uVar6; + undefined8 *puVar7; + bool bVar8; + + puVar7 = (undefined8 *)(param_1 + 8); + bVar8 = 7 < *(ulonglong *)(param_1 + 0x20); + puVar5 = puVar7; + if (bVar8) { + puVar5 = (undefined8 *)*puVar7; + } + lVar2 = *(longlong *)(param_1 + 0x18); + if (bVar8) { + puVar7 = (undefined8 *)*puVar7; + } + param_2[2] = 0; + param_2[3] = 0xf; + *(undefined1 *)param_2 = 0; + uVar6 = ((longlong)puVar5 + lVar2 * 2) - (longlong)puVar7 >> 1; + if (0xf < uVar6) { + FUN_180006c50(param_2,uVar6); + param_2[2] = 0; + } + for (; puVar7 != (undefined8 *)((longlong)puVar5 + lVar2 * 2); + puVar7 = (undefined8 *)((longlong)puVar7 + 2)) { + uVar1 = *(undefined1 *)puVar7; + uVar6 = param_2[2]; + uVar3 = param_2[3]; + if (uVar6 < uVar3) { + param_2[2] = uVar6 + 1; + plVar4 = param_2; + if (0xf < uVar3) { + plVar4 = (longlong *)*param_2; + } + *(undefined1 *)((longlong)plVar4 + uVar6) = uVar1; + *(undefined1 *)((longlong)plVar4 + uVar6 + 1) = 0; + } + else { + FUN_180002770(param_2,uVar3,param_3,uVar1); + } + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180005a90 (233 bytes) name=FUN_180005a90 + +ulonglong * FUN_180005a90(longlong param_1,ulonglong *param_2,longlong *param_3,byte param_4) + +{ + longlong lVar1; + int iVar2; + longlong lVar3; + ulonglong uVar4; + longlong lVar5; + longlong lVar6; + undefined8 uVar7; + ulonglong uVar8; + + uVar8 = param_3[1] + *param_3; + lVar3 = **(longlong **)(param_1 + 0x38); + uVar4 = **(ulonglong **)(param_1 + 0x40); + if ((uVar4 != 0) && (*(ulonglong *)(param_1 + 0x68) < uVar4)) { + *(ulonglong *)(param_1 + 0x68) = uVar4; + } + lVar5 = *(longlong *)(param_1 + 0x68); + lVar6 = **(longlong **)(param_1 + 0x18); + if (((ulonglong)(lVar5 - lVar6) < uVar8) || + ((uVar8 != 0 && + ((((param_4 & 1) != 0 && (lVar3 == 0)) || (((param_4 & 2) != 0 && (uVar4 == 0)))))))) { + *param_2 = 0xffffffffffffffff; + } + else { + lVar1 = lVar6 + uVar8; + if (((param_4 & 1) != 0) && (lVar3 != 0)) { + **(longlong **)(param_1 + 0x38) = lVar1; + **(int **)(param_1 + 0x50) = (int)lVar5 - (int)lVar1; + } + if (((param_4 & 2) != 0) && (uVar4 != 0)) { + iVar2 = **(int **)(param_1 + 0x58); + uVar7 = **(undefined8 **)(param_1 + 0x40); + **(longlong **)(param_1 + 0x20) = lVar6; + **(longlong **)(param_1 + 0x40) = lVar1; + **(int **)(param_1 + 0x58) = (iVar2 + (int)uVar7) - (int)lVar1; + } + *param_2 = uVar8; + } + param_2[1] = 0; + param_2[2] = 0; + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180005b80 (340 bytes) name=FUN_180005b80 + +ulonglong * +FUN_180005b80(longlong param_1,ulonglong *param_2,longlong param_3,int param_4,byte param_5) + +{ + longlong lVar1; + int iVar2; + longlong lVar3; + ulonglong uVar4; + longlong lVar5; + longlong lVar6; + undefined8 uVar7; + ulonglong uVar8; + ulonglong uVar9; + + lVar3 = **(longlong **)(param_1 + 0x38); + uVar4 = **(ulonglong **)(param_1 + 0x40); + if ((uVar4 != 0) && (*(ulonglong *)(param_1 + 0x68) < uVar4)) { + *(ulonglong *)(param_1 + 0x68) = uVar4; + } + lVar5 = *(longlong *)(param_1 + 0x68); + lVar6 = **(longlong **)(param_1 + 0x18); + uVar9 = lVar5 - lVar6; + if (param_4 == 0) { + uVar8 = 0; +LAB_180005c31: + uVar8 = uVar8 + param_3; + if ((uVar8 <= uVar9) && + ((uVar8 == 0 || + ((((param_5 & 1) == 0 || (lVar3 != 0)) && (((param_5 & 2) == 0 || (uVar4 != 0)))))))) { + lVar1 = lVar6 + uVar8; + if (((param_5 & 1) != 0) && (lVar3 != 0)) { + **(longlong **)(param_1 + 0x38) = lVar1; + **(int **)(param_1 + 0x50) = (int)lVar5 - (int)lVar1; + } + if (((param_5 & 2) != 0) && (uVar4 != 0)) { + iVar2 = **(int **)(param_1 + 0x58); + uVar7 = **(undefined8 **)(param_1 + 0x40); + **(longlong **)(param_1 + 0x20) = lVar6; + **(longlong **)(param_1 + 0x40) = lVar1; + **(int **)(param_1 + 0x58) = (iVar2 + (int)uVar7) - (int)lVar1; + } + *param_2 = uVar8; + goto LAB_180005cac; + } + } + else if (param_4 == 1) { + if ((param_5 & 3) != 3) { + if ((param_5 & 1) == 0) { + if (((param_5 & 2) != 0) && ((uVar4 != 0 || (lVar6 == 0)))) { + uVar8 = uVar4 - lVar6; + goto LAB_180005c31; + } + } + else if ((lVar3 != 0) || (lVar6 == 0)) { + uVar8 = lVar3 - lVar6; + goto LAB_180005c31; + } + } + } + else { + uVar8 = uVar9; + if (param_4 == 2) goto LAB_180005c31; + } + *param_2 = 0xffffffffffffffff; +LAB_180005cac: + param_2[1] = 0; + param_2[2] = 0; + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180005ce0 (104 bytes) name=FUN_180005ce0 + +ulonglong FUN_180005ce0(longlong param_1) + +{ + undefined8 *puVar1; + byte *pbVar2; + byte *pbVar3; + undefined8 uVar4; + byte *pbVar5; + + puVar1 = *(undefined8 **)(param_1 + 0x38); + pbVar2 = (byte *)*puVar1; + if (pbVar2 != (byte *)0x0) { + if (pbVar2 < pbVar2 + **(int **)(param_1 + 0x50)) { + return (ulonglong)*pbVar2; + } + pbVar3 = (byte *)**(undefined8 **)(param_1 + 0x40); + if ((pbVar3 != (byte *)0x0) && ((*(byte *)(param_1 + 0x70) & 4) == 0)) { + pbVar5 = *(byte **)(param_1 + 0x68); + if (*(byte **)(param_1 + 0x68) < pbVar3) { + pbVar5 = pbVar3; + } + if (pbVar2 < pbVar5) { + *(byte **)(param_1 + 0x68) = pbVar5; + uVar4 = *puVar1; + *puVar1 = uVar4; + **(int **)(param_1 + 0x50) = (int)pbVar5 - (int)uVar4; + return (ulonglong)*(byte *)**(undefined8 **)(param_1 + 0x38); + } + } + } + return 0xffffffff; +} + + +================================================================== + +### EXPORT FUNC 180005d50 (82 bytes) name=FUN_180005d50 + +int FUN_180005d50(longlong param_1,int param_2) + +{ + ulonglong uVar1; + + uVar1 = **(ulonglong **)(param_1 + 0x38); + if (((uVar1 != 0) && (**(ulonglong **)(param_1 + 0x18) < uVar1)) && + ((param_2 == -1 || + (((char)param_2 == *(char *)(uVar1 - 1) || ((*(byte *)(param_1 + 0x70) & 2) == 0)))))) { + **(int **)(param_1 + 0x50) = **(int **)(param_1 + 0x50) + 1; + **(longlong **)(param_1 + 0x38) = **(longlong **)(param_1 + 0x38) + -1; + if (param_2 == -1) { + param_2 = 0; + } + else { + *(char *)**(undefined8 **)(param_1 + 0x38) = (char)param_2; + } + return param_2; + } + return -1; +} + + +================================================================== + +### EXPORT FUNC 180005db0 (478 bytes) name=FUN_180005db0 + +int FUN_180005db0(basic_streambuf_> *param_1,int param_2) + +{ + void *_Src; + undefined8 uVar1; + uint uVar2; + char *pcVar3; + void *pvVar4; + longlong lVar5; + ulonglong uVar6; + ulonglong _Size; + + if (((byte)param_1[0x70] & 2) != 0) { + return -1; + } + if (param_2 == -1) { + return 0; + } + uVar6 = **(ulonglong **)(param_1 + 0x40); + if ((uVar6 != 0) && (uVar6 < (longlong)**(int **)(param_1 + 0x58) + uVar6)) { + pcVar3 = std::basic_streambuf_>::_Pninc(param_1); + *pcVar3 = (char)param_2; + *(ulonglong *)(param_1 + 0x68) = uVar6 + 1; + return param_2; + } + _Src = (void *)**(undefined8 **)(param_1 + 0x18); + _Size = ((longlong)**(int **)(param_1 + 0x58) + uVar6) - (longlong)_Src; + if (uVar6 == 0) { + _Size = 0; + } + if (_Size < 0x20) { + uVar6 = 0x20; + pvVar4 = (void *)FUN_18000c554(0x20); + } + else { + if (_Size < 0x3fffffff) { + uVar6 = _Size * 2; + if (uVar6 < 0x1000) { + if (uVar6 == 0) { + pvVar4 = (void *)0x0; + } + else { + pvVar4 = (void *)FUN_18000c554(uVar6); + } + goto LAB_180005ea3; + } + } + else { + uVar6 = 0x7fffffff; + if (0x7ffffffe < _Size) { + return -1; + } + } + if (uVar6 + 0x27 <= uVar6) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar5 = FUN_18000c554(uVar6 + 0x27); + if (lVar5 == 0) goto LAB_180005f67; + pvVar4 = (void *)(lVar5 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)pvVar4 - 8) = lVar5; + } +LAB_180005ea3: + memcpy(pvVar4,_Src,_Size); + lVar5 = _Size + (longlong)pvVar4; + *(longlong *)(param_1 + 0x68) = lVar5 + 1; + **(undefined8 **)(param_1 + 0x20) = pvVar4; + **(longlong **)(param_1 + 0x40) = lVar5; + **(int **)(param_1 + 0x58) = ((int)pvVar4 - (int)lVar5) + (int)uVar6; + if (((byte)param_1[0x70] & 4) == 0) { + uVar1 = *(undefined8 *)(param_1 + 0x68); + lVar5 = (**(longlong **)(param_1 + 0x38) - (longlong)_Src) + (longlong)pvVar4; + **(undefined8 **)(param_1 + 0x18) = pvVar4; + **(longlong **)(param_1 + 0x38) = lVar5; + **(int **)(param_1 + 0x50) = (int)uVar1 - (int)lVar5; + } + else { + **(undefined8 **)(param_1 + 0x18) = pvVar4; + **(undefined8 **)(param_1 + 0x38) = 0; + **(int **)(param_1 + 0x50) = (int)pvVar4; + } + uVar2 = *(uint *)(param_1 + 0x70); + if ((uVar2 & 1) != 0) { + pvVar4 = _Src; + if ((0xfff < _Size) && + (pvVar4 = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar4)))) { +LAB_180005f67: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar4); + uVar2 = *(uint *)(param_1 + 0x70); + } + *(uint *)(param_1 + 0x70) = uVar2 | 1; + pcVar3 = std::basic_streambuf_>::_Pninc(param_1); + *pcVar3 = (char)param_2; + return param_2; +} + + +================================================================== + +### EXPORT FUNC 180005f90 (182 bytes) name=FUN_180005f90 + +void FUN_180005f90(basic_streambuf_> *param_1) + +{ + void *pvVar1; + void *_Memory; + longlong lVar2; + + *(undefined ***)param_1 = + std::basic_stringbuf,std::allocator_>::vftable; + if (((byte)param_1[0x70] & 1) != 0) { + if (**(longlong **)(param_1 + 0x40) == 0) { + lVar2 = (longlong)**(int **)(param_1 + 0x50) + **(longlong **)(param_1 + 0x38); + } + else { + lVar2 = (longlong)**(int **)(param_1 + 0x58) + **(longlong **)(param_1 + 0x40); + } + pvVar1 = (void *)**(longlong **)(param_1 + 0x18); + _Memory = pvVar1; + if ((0xfff < (ulonglong)(lVar2 - (longlong)pvVar1)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + **(undefined8 **)(param_1 + 0x18) = 0; + **(undefined8 **)(param_1 + 0x38) = 0; + **(undefined4 **)(param_1 + 0x50) = 0; + **(undefined8 **)(param_1 + 0x20) = 0; + **(undefined8 **)(param_1 + 0x40) = 0; + **(undefined4 **)(param_1 + 0x58) = 0; + *(uint *)(param_1 + 0x70) = *(uint *)(param_1 + 0x70) & 0xfffffffe; + *(undefined8 *)(param_1 + 0x68) = 0; + /* WARNING: Could not recover jumptable at 0x000180006039. Too many branches */ + /* WARNING: Treating indirect jump as call */ + std::basic_streambuf_>::~basic_streambuf_> + (param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 180006050 (156 bytes) name=FUN_180006050 + +longlong * FUN_180006050(longlong param_1,longlong *param_2) + +{ + ulonglong uVar1; + void *pvVar2; + ulonglong *puVar3; + size_t sVar4; + ulonglong local_20; + longlong *local_18; + + local_18 = param_2; + param_2[2] = 0; + param_2[3] = 0xf; + *(undefined1 *)param_2 = 0; + if (((*(uint *)(param_1 + 0x88) & 2) == 0) && + (uVar1 = **(ulonglong **)(param_1 + 0x58), uVar1 != 0)) { + pvVar2 = (void *)**(longlong **)(param_1 + 0x38); + local_20 = uVar1; + puVar3 = &local_20; + if (uVar1 < *(ulonglong *)(param_1 + 0x80)) { + puVar3 = (ulonglong *)(param_1 + 0x80); + } + sVar4 = *puVar3 - (longlong)pvVar2; + } + else { + if ((*(uint *)(param_1 + 0x88) & 4) != 0) { + return param_2; + } + if (**(longlong **)(param_1 + 0x50) == 0) { + return param_2; + } + pvVar2 = (void *)**(longlong **)(param_1 + 0x30); + sVar4 = ((longlong)**(int **)(param_1 + 0x68) - (longlong)pvVar2) + + **(longlong **)(param_1 + 0x50); + } + FUN_180002610(param_2,pvVar2,sVar4); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 1800060f0 (182 bytes) name=FUN_1800060f0 + +basic_iostream_> * +FUN_1800060f0(basic_iostream_> *param_1) + +{ + basic_streambuf_> *this; + + *(undefined **)param_1 = &DAT_18000fcb8; + *(undefined **)(param_1 + 0x10) = &DAT_18000fba8; + std::basic_ios_>::basic_ios_> + ((basic_ios_> *)(param_1 + 0x98)); + this = (basic_streambuf_> *)(param_1 + 0x18); + std::basic_iostream_>::basic_iostream_> + (param_1,this); + *(undefined ***)(param_1 + *(int *)(*(longlong *)param_1 + 4)) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + -4) = + *(int *)(*(longlong *)param_1 + 4) + -0x98; + std::basic_streambuf_>::basic_streambuf_> + (this); + *(undefined ***)this = + std::basic_stringbuf,std::allocator_>::vftable; + *(undefined8 *)(param_1 + 0x80) = 0; + *(undefined4 *)(param_1 + 0x88) = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800061b0 (15 bytes) name=FUN_1800061b0 + +undefined8 * FUN_1800061b0(undefined8 *param_1) + +{ + if (0xf < (ulonglong)param_1[3]) { + return (undefined8 *)*param_1; + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800061c0 (52 bytes) name=FUN_1800061c0 + +basic_streambuf_> * +FUN_1800061c0(basic_streambuf_> *param_1,uint param_2) + +{ + FUN_180005f90(param_1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180006200 (146 bytes) name=FUN_180006200 + +basic_ios_> * +FUN_180006200(basic_ios_> *param_1,uint param_2) + +{ + *(undefined ***)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x98) = + std::basic_stringstream,std::allocator_>::vftable; + *(int *)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x9c) = + *(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x98; + FUN_180005f90((basic_streambuf_> *)(param_1 + -0x80)); + std::basic_iostream_>::~basic_iostream_> + ((basic_iostream_> *)(param_1 + -0x78)); + std::basic_ios_>::~basic_ios_>(param_1); + if ((param_2 & 1) != 0) { + free(param_1 + -0x98); + } + return param_1 + -0x98; +} + + +================================================================== + +### EXPORT FUNC 1800062a0 (63 bytes) name=FUN_1800062a0 + +void FUN_1800062a0(longlong *param_1) + +{ + longlong *plVar1; + bool bVar2; + + bVar2 = std::uncaught_exception(); + if (!bVar2) { + std::basic_ostream_>::_Osfx + ((basic_ostream_> *)*param_1); + } + plVar1 = *(longlong **)((longlong)*(int *)(*(longlong *)*param_1 + 4) + 0x48 + *param_1); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 0x10))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800062e0 (36 bytes) name=FUN_1800062e0 + +void FUN_1800062e0(longlong *param_1) + +{ + longlong *plVar1; + + plVar1 = *(longlong **)((longlong)*(int *)(*(longlong *)*param_1 + 4) + 0x48 + *param_1); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 0x10))(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180006310 (444 bytes) name=FUN_180006310 + +basic_ostream_> * +FUN_180006310(basic_ostream_> *param_1,char *param_2) + +{ + longlong *plVar1; + basic_ostream_> *this; + bool bVar2; + int iVar3; + __int64 _Var4; + longlong lVar5; + int iVar6; + longlong lVar7; + longlong lVar8; + + iVar6 = 0; + lVar8 = -1; + do { + lVar8 = lVar8 + 1; + } while (param_2[lVar8] != '\0'); + lVar5 = *(longlong *)param_1; + lVar7 = *(longlong *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x28); + if ((lVar7 < 1) || (lVar7 <= lVar8)) { + lVar7 = 0; + } + else { + lVar7 = lVar7 - lVar8; + } + plVar1 = *(longlong **)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1); + lVar5 = *(longlong *)param_1; + } + if (*(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0) { + this = *(basic_ostream_> **) + (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x50); + if ((this == (basic_ostream_> *)0x0) || (this == param_1)) { + bVar2 = true; + } + else { + std::basic_ostream_>::flush(this); + lVar5 = *(longlong *)param_1; + bVar2 = *(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0; + } + } + else { + bVar2 = false; + } + if (bVar2) { + if ((*(uint *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x18) & 0x1c0) != 0x40) { + for (; 0 < lVar7; lVar7 = lVar7 + -1) { + iVar3 = std::basic_streambuf_>::sputc + (*(basic_streambuf_> **) + (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), + (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); + if (iVar3 == -1) goto LAB_180006459; + } + lVar5 = *(longlong *)param_1; + } + _Var4 = std::basic_streambuf_>::sputn + (*(basic_streambuf_> **) + (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48),param_2,lVar8); + if (_Var4 == lVar8) { + for (; 0 < lVar7; lVar7 = lVar7 + -1) { + iVar3 = std::basic_streambuf_>::sputc + (*(basic_streambuf_> **) + (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), + (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); + if (iVar3 == -1) goto LAB_180006459; + } + } + else { +LAB_180006459: + iVar6 = 4; + } + *(undefined8 *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28) = 0; + } + else { + iVar6 = 4; + } + std::basic_ios_>::setstate + ((basic_ios_> *) + (param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar6,false); + bVar2 = std::uncaught_exception(); + if (!bVar2) { + std::basic_ostream_>::_Osfx(param_1); + } + if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != + (longlong *)0x0) { + (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + + 0x10))(); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800064e0 (25 bytes) name=FUN_1800064e0 + +void FUN_1800064e0(basic_ostream_> *param_1,char *param_2) + +{ + char *pcVar1; + + pcVar1 = param_2; + if (0xf < *(ulonglong *)(param_2 + 0x18)) { + pcVar1 = *(char **)param_2; + } + FUN_180006920(param_1,pcVar1,*(ulonglong *)(param_2 + 0x10)); + return; +} + + +================================================================== + +### EXPORT FUNC 180006500 (402 bytes) name=FUN_180006500 + +undefined8 * +FUN_180006500(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined2 param_4) + +{ + ulonglong uVar1; + longlong lVar2; + ulonglong uVar3; + void *_Src; + size_t _Size; + longlong lVar4; + ulonglong uVar5; + ulonglong uVar6; + void *_Memory; + void *_Dst; + + lVar2 = param_1[2]; + if (lVar2 == 0x7ffffffffffffffe) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar3 = param_1[3]; + uVar5 = lVar2 + 1U | 7; + uVar6 = 0x7ffffffffffffffe; + if (((uVar5 < 0x7fffffffffffffff) && (uVar3 <= 0x7ffffffffffffffe - (uVar3 >> 1))) && + (uVar1 = (uVar3 >> 1) + uVar3, uVar6 = uVar5, uVar5 < uVar1)) { + uVar6 = uVar1; + } + uVar5 = uVar6 + 1; + if (uVar6 == 0xffffffffffffffff) { + uVar5 = 0xffffffffffffffff; + } + if (0x7fffffffffffffff < uVar5) { +LAB_18000668f: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar5 = uVar5 * 2; + _Dst = (void *)0x0; + if (uVar5 < 0x1000) { + if (uVar5 != 0) { + _Dst = (void *)FUN_18000c554(uVar5); + } + } + else { + if (uVar5 + 0x27 <= uVar5) goto LAB_18000668f; + lVar4 = FUN_18000c554(uVar5 + 0x27); + if (lVar4 == 0) goto LAB_18000664a; + _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar4; + } + _Size = lVar2 * 2; + param_1[2] = lVar2 + 1U; + param_1[3] = uVar6; + if (uVar3 < 8) { + memcpy(_Dst,param_1,_Size); + *(undefined2 *)(_Size + (longlong)_Dst) = param_4; + *(undefined2 *)(_Size + 2 + (longlong)_Dst) = 0; + } + else { + _Src = (void *)*param_1; + memcpy(_Dst,_Src,_Size); + *(undefined2 *)(_Size + (longlong)_Dst) = param_4; + *(undefined2 *)(_Size + 2 + (longlong)_Dst) = 0; + _Memory = _Src; + if ((0xfff < uVar3 * 2 + 2) && + (_Memory = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { +LAB_18000664a: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = _Dst; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800066a0 (433 bytes) name=FUN_1800066a0 + +undefined8 * +FUN_1800066a0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,void *param_4, + longlong param_5) + +{ + ulonglong uVar1; + undefined2 *puVar2; + longlong lVar3; + ulonglong uVar4; + void *_Src; + size_t _Size; + longlong lVar5; + ulonglong uVar6; + void *_Dst; + ulonglong uVar7; + void *_Memory; + + lVar3 = param_1[2]; + if (0x7ffffffffffffffeU - lVar3 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar4 = param_1[3]; + uVar6 = param_2 + lVar3 | 7; + uVar7 = 0x7ffffffffffffffe; + if (((uVar6 < 0x7fffffffffffffff) && (uVar4 <= 0x7ffffffffffffffe - (uVar4 >> 1))) && + (uVar1 = (uVar4 >> 1) + uVar4, uVar7 = uVar6, uVar6 < uVar1)) { + uVar7 = uVar1; + } + uVar6 = uVar7 + 1; + if (uVar7 == 0xffffffffffffffff) { + uVar6 = 0xffffffffffffffff; + } + if (0x7fffffffffffffff < uVar6) { +LAB_18000684e: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar6 = uVar6 * 2; + _Dst = (void *)0x0; + if (uVar6 < 0x1000) { + if (uVar6 != 0) { + _Dst = (void *)FUN_18000c554(uVar6); + } + } + else { + if (uVar6 + 0x27 <= uVar6) goto LAB_18000684e; + lVar5 = FUN_18000c554(uVar6 + 0x27); + if (lVar5 == 0) goto LAB_180006800; + _Dst = (void *)(lVar5 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar5; + } + _Size = lVar3 * 2; + param_1[2] = param_2 + lVar3; + param_1[3] = uVar7; + puVar2 = (undefined2 *)((longlong)_Dst + (param_5 + lVar3) * 2); + if (uVar4 < 8) { + memcpy(_Dst,param_1,_Size); + memcpy((void *)(_Size + (longlong)_Dst),param_4,param_5 * 2); + *puVar2 = 0; + } + else { + _Src = (void *)*param_1; + memcpy(_Dst,_Src,_Size); + memcpy((void *)(_Size + (longlong)_Dst),param_4,param_5 * 2); + *puVar2 = 0; + _Memory = _Src; + if ((0xfff < uVar4 * 2 + 2) && + (_Memory = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { +LAB_180006800: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = _Dst; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180006860 (179 bytes) name=FUN_180006860 + +void FUN_180006860(undefined8 *param_1,ulonglong param_2) + +{ + ulonglong uVar1; + ulonglong uVar2; + void *_Src; + void *_Memory; + + uVar1 = param_1[2]; + if (uVar1 <= param_2) { + uVar2 = param_1[3]; + if (uVar2 != param_2) { + if (uVar2 < param_2) { + FUN_180006ae0(param_1,param_2 - uVar1); + param_1[2] = uVar1; + return; + } + if ((param_2 < 8) && (7 < uVar2)) { + _Src = (void *)*param_1; + memcpy(param_1,_Src,uVar1 * 2 + 2); + _Memory = _Src; + if ((0xfff < param_1[3] * 2 + 2U) && + (_Memory = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + param_1[3] = 7; + } + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180006920 (433 bytes) name=FUN_180006920 + +basic_ostream_> * +FUN_180006920(basic_ostream_> *param_1,char *param_2,ulonglong param_3) + +{ + longlong *plVar1; + basic_ostream_> *this; + bool bVar2; + int iVar3; + ulonglong uVar4; + longlong lVar5; + int iVar6; + longlong lVar7; + + iVar6 = 0; + lVar5 = *(longlong *)param_1; + uVar4 = *(ulonglong *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x28); + if (((longlong)uVar4 < 1) || (uVar4 <= param_3)) { + lVar7 = 0; + } + else { + lVar7 = uVar4 - param_3; + } + plVar1 = *(longlong **)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1); + lVar5 = *(longlong *)param_1; + } + if (*(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0) { + this = *(basic_ostream_> **) + (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x50); + if ((this == (basic_ostream_> *)0x0) || (this == param_1)) { + bVar2 = true; + } + else { + std::basic_ostream_>::flush(this); + lVar5 = *(longlong *)param_1; + bVar2 = *(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0; + } + } + else { + bVar2 = false; + } + if (bVar2) { + if ((*(uint *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x18) & 0x1c0) != 0x40) { + for (; lVar7 != 0; lVar7 = lVar7 + -1) { + iVar3 = std::basic_streambuf_>::sputc + (*(basic_streambuf_> **) + (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), + (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); + if (iVar3 == -1) { + iVar6 = 4; + goto LAB_180006a12; + } + } + lVar5 = *(longlong *)param_1; + } + uVar4 = std::basic_streambuf_>::sputn + (*(basic_streambuf_> **) + (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48),param_2,param_3); + if (uVar4 == param_3) { +LAB_180006a12: + do { + if (lVar7 == 0) goto LAB_180006a3a; + iVar3 = std::basic_streambuf_>::sputc + (*(basic_streambuf_> **) + (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), + (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); + if (iVar3 == -1) break; + lVar7 = lVar7 + -1; + } while( true ); + } + iVar6 = 4; +LAB_180006a3a: + *(undefined8 *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28) = 0; + } + else { + iVar6 = 4; + } + std::basic_ios_>::setstate + ((basic_ios_> *) + (param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar6,false); + bVar2 = std::uncaught_exception(); + if (!bVar2) { + std::basic_ostream_>::_Osfx(param_1); + } + if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != + (longlong *)0x0) { + (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + + 0x10))(); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180006ae0 (354 bytes) name=FUN_180006ae0 + +undefined8 * FUN_180006ae0(undefined8 *param_1,ulonglong param_2) + +{ + ulonglong uVar1; + size_t _Size; + longlong lVar2; + ulonglong uVar3; + void *_Src; + longlong lVar4; + ulonglong uVar5; + ulonglong uVar6; + void *_Memory; + void *_Dst; + + lVar2 = param_1[2]; + if (0x7ffffffffffffffeU - lVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar3 = param_1[3]; + uVar5 = param_2 + lVar2 | 7; + uVar6 = 0x7ffffffffffffffe; + if (((uVar5 < 0x7fffffffffffffff) && (uVar3 <= 0x7ffffffffffffffe - (uVar3 >> 1))) && + (uVar1 = (uVar3 >> 1) + uVar3, uVar6 = uVar5, uVar5 < uVar1)) { + uVar6 = uVar1; + } + uVar5 = uVar6 + 1; + if (uVar6 == 0xffffffffffffffff) { + uVar5 = 0xffffffffffffffff; + } + if (0x7fffffffffffffff < uVar5) { +LAB_180006c3f: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar5 = uVar5 * 2; + if (uVar5 < 0x1000) { + if (uVar5 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(uVar5); + } + } + else { + if (uVar5 + 0x27 <= uVar5) goto LAB_180006c3f; + lVar4 = FUN_18000c554(uVar5 + 0x27); + if (lVar4 == 0) goto LAB_180006c0c; + _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar4; + } + param_1[2] = param_2 + lVar2; + _Size = lVar2 * 2 + 2; + param_1[3] = uVar6; + if (uVar3 < 8) { + memcpy(_Dst,param_1,_Size); + } + else { + _Src = (void *)*param_1; + memcpy(_Dst,_Src,_Size); + _Memory = _Src; + if ((0xfff < uVar3 * 2 + 2) && + (_Memory = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { +LAB_180006c0c: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = _Dst; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180006c50 (324 bytes) name=FUN_180006c50 + +undefined8 * FUN_180006c50(undefined8 *param_1,ulonglong param_2) + +{ + ulonglong uVar1; + longlong lVar2; + ulonglong uVar3; + void *_Src; + longlong lVar4; + size_t sVar5; + ulonglong uVar6; + ulonglong uVar7; + void *_Memory; + void *_Dst; + + lVar2 = param_1[2]; + if (0x7fffffffffffffffU - lVar2 < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b40(); + } + uVar3 = param_1[3]; + uVar6 = param_2 + lVar2 | 0xf; + uVar7 = 0x7fffffffffffffff; + if (((uVar6 < 0x8000000000000000) && (uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1))) && + (uVar1 = (uVar3 >> 1) + uVar3, uVar7 = uVar6, uVar6 < uVar1)) { + uVar7 = uVar1; + } + sVar5 = uVar7 + 1; + if (uVar7 == 0xffffffffffffffff) { + sVar5 = 0xffffffffffffffff; + } + if (sVar5 < 0x1000) { + if (sVar5 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(sVar5); + } + } + else { + if (sVar5 + 0x27 <= sVar5) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar4 = FUN_18000c554(sVar5 + 0x27); + if (lVar4 == 0) goto LAB_180006d5e; + _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar4; + } + param_1[2] = param_2 + lVar2; + param_1[3] = uVar7; + if (uVar3 < 0x10) { + memcpy(_Dst,param_1,lVar2 + 1U); + } + else { + _Src = (void *)*param_1; + memcpy(_Dst,_Src,lVar2 + 1U); + _Memory = _Src; + if ((0xfff < uVar3 + 1) && + (_Memory = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { +LAB_180006d5e: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = _Dst; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180006da0 (99 bytes) name=FUN_180006da0 + +void FUN_180006da0(undefined8 *param_1) + +{ + longlong *plVar1; + void *pvVar2; + void *_Memory; + + plVar1 = (longlong *)*param_1; + if (plVar1 != (longlong *)0x0) { + if (0xf < (ulonglong)plVar1[3]) { + pvVar2 = (void *)*plVar1; + _Memory = pvVar2; + if ((0xfff < plVar1[3] + 1U) && + (_Memory = *(void **)((longlong)pvVar2 + -8), + 0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + plVar1[2] = 0; + plVar1[3] = 0xf; + *(undefined1 *)plVar1 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180006e10 (102 bytes) name=FUN_180006e10 + +void FUN_180006e10(undefined8 *param_1) + +{ + longlong *plVar1; + void *pvVar2; + void *_Memory; + + plVar1 = (longlong *)*param_1; + if (plVar1 != (longlong *)0x0) { + if (7 < (ulonglong)plVar1[3]) { + pvVar2 = (void *)*plVar1; + _Memory = pvVar2; + if ((0xfff < plVar1[3] * 2 + 2U) && + (_Memory = *(void **)((longlong)pvVar2 + -8), + 0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + plVar1[3] = 7; + plVar1[2] = 0; + *(undefined2 *)plVar1 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180006e78 (12 bytes) name=FUN_180006e78 + +void FUN_180006e78(longlong param_1,uint param_2) + +{ + FUN_180006200((basic_ios_> *)(param_1 - *(int *)(param_1 + -4)), + param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 180006e90 (95 bytes) name=FUN_180006e90 + +void FUN_180006e90(longlong *param_1) + +{ + BOOL BVar1; + longlong *plVar2; + longlong local_98 [4]; + undefined8 local_78 [15]; + + BVar1 = ReleaseMutex(*(HANDLE *)(*param_1 + 0x60)); + if (BVar1 != 0) { + return; + } + plVar2 = FUN_180002510(local_98, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_78,plVar2,0x271,"Error releasing read mutex."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_78,(ThrowInfo *)&DAT_1800134b8); +} + + +================================================================== + +### EXPORT FUNC 180006f50 (419 bytes) name=FUN_180006f50 + +undefined8 * FUN_180006f50(undefined8 *param_1,char *param_2,undefined8 param_3,undefined8 *param_4) + +{ + undefined8 *puVar1; + char cVar2; + longlong lVar3; + ulonglong uVar4; + ulonglong uVar5; + undefined8 *puVar6; + undefined8 *puVar7; + HANDLE pvVar8; + char *pcVar9; + undefined8 uVar10; + + *param_1 = serial::Serial::vftable; + uVar10 = param_3; + puVar6 = (undefined8 *)FUN_18000c554(0x70); + *puVar6 = 0; + puVar6[1] = 0; + puVar6[2] = 0; + puVar6[3] = 0; + puVar6[4] = 0; + puVar6[5] = 0; + puVar6[6] = 0; + puVar6[7] = 0; + puVar6[8] = 0; + puVar6[9] = 0; + puVar6[10] = 0; + puVar6[0xb] = 0; + puVar6[0xc] = 0; + puVar6[0xd] = 0; + *puVar6 = serial::Serial::SerialImpl::vftable; + pcVar9 = param_2; + if (0xf < *(ulonglong *)(param_2 + 0x18)) { + pcVar9 = *(char **)param_2; + } + lVar3 = *(longlong *)(param_2 + 0x10); + if (0xf < *(ulonglong *)(param_2 + 0x18)) { + param_2 = *(char **)param_2; + } + puVar1 = puVar6 + 1; + puVar6[3] = 0; + puVar6[4] = 7; + *(undefined2 *)puVar1 = 0; + FUN_180006860(puVar1,(longlong)(pcVar9 + lVar3) - (longlong)param_2); + for (; param_2 != pcVar9 + lVar3; param_2 = param_2 + 1) { + cVar2 = *param_2; + uVar4 = puVar6[3]; + uVar5 = puVar6[4]; + if (uVar4 < uVar5) { + puVar6[3] = uVar4 + 1; + puVar7 = puVar1; + if (7 < uVar5) { + puVar7 = (undefined8 *)*puVar1; + } + *(short *)((longlong)puVar7 + uVar4 * 2) = (short)cVar2; + *(undefined2 *)((longlong)puVar7 + uVar4 * 2 + 2) = 0; + } + else { + FUN_180006500(puVar1,uVar5,uVar10,(short)cVar2); + } + } + puVar6[5] = 0xffffffffffffffff; + *(undefined1 *)(puVar6 + 6) = 0; + *(undefined8 *)((longlong)puVar6 + 0x34) = 0; + *(undefined8 *)((longlong)puVar6 + 0x3c) = 0; + *(undefined4 *)((longlong)puVar6 + 0x44) = 0; + *(int *)(puVar6 + 9) = (int)param_3; + *(undefined4 *)((longlong)puVar6 + 0x4c) = 0; + *(undefined4 *)(puVar6 + 10) = 8; + *(undefined8 *)((longlong)puVar6 + 0x54) = 1; + if (puVar6[3] != 0) { + FUN_180005040((longlong)puVar6); + } + pvVar8 = CreateMutexW((LPSECURITY_ATTRIBUTES)0x0,0,(LPCWSTR)0x0); + puVar6[0xc] = pvVar8; + pvVar8 = CreateMutexW((LPSECURITY_ATTRIBUTES)0x0,0,(LPCWSTR)0x0); + puVar6[0xd] = pvVar8; + param_1[1] = puVar6; + uVar10 = param_4[1]; + *(undefined8 *)((longlong)puVar6 + 0x34) = *param_4; + *(undefined8 *)((longlong)puVar6 + 0x3c) = uVar10; + *(undefined4 *)((longlong)puVar6 + 0x44) = *(undefined4 *)(param_4 + 2); + if (*(char *)(puVar6 + 6) != '\0') { + FUN_1800053c0((longlong)puVar6); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180007100 (77 bytes) name=FUN_180007100 + +undefined8 * FUN_180007100(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + + *param_1 = serial::Serial::vftable; + puVar1 = (undefined8 *)param_1[1]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180007150 (298 bytes) name=FUN_180007150 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +DWORD FUN_180007150(longlong param_1,LPCVOID param_2,DWORD param_3) + +{ + BOOL BVar1; + DWORD DVar2; + basic_ostream_> *this; + longlong *plVar3; + longlong *plVar4; + char *pcVar5; + undefined1 auStackY_248 [32]; + longlong local_210 [4]; + undefined8 local_1f0 [7]; + longlong local_1b8 [4]; + undefined8 local_198 [14]; + DWORD local_128 [4]; + basic_iostream_> local_118 [16]; + basic_ostream_> local_108 [240]; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStackY_248; + if (*(char *)(*(longlong *)(param_1 + 8) + 0x30) == '\0') { + FUN_1800048a0(local_1f0,"Serial::write"); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_1f0,(ThrowInfo *)&DAT_1800134d8); + } + BVar1 = WriteFile(*(HANDLE *)(*(longlong *)(param_1 + 8) + 0x28),param_2,param_3,local_128, + (LPOVERLAPPED)0x0); + if (BVar1 != 0) { + return local_128[0]; + } + FUN_180004300(local_118); + FUN_1800060f0(local_118); + DVar2 = GetLastError(); + this = FUN_180006310(local_108,"Error while writing to the serial port: "); + std::basic_ostream_>::operator<<(this,DVar2); + plVar3 = FUN_180006050((longlong)local_118,local_1b8); + plVar4 = FUN_180002510(local_210, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + pcVar5 = (char *)FUN_1800061b0(plVar3); + FUN_180004310(local_198,plVar4,0x163,pcVar5); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_198,(ThrowInfo *)&DAT_1800134b8); +} + + +================================================================== + +### EXPORT FUNC 180007280 (131 bytes) name=FUN_180007280 + +void FUN_180007280(longlong *param_1,longlong param_2,longlong param_3,longlong param_4) + +{ + void *pvVar1; + void *_Memory; + + pvVar1 = (void *)*param_1; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = param_2; + param_1[1] = param_2 + param_3; + param_1[2] = param_2 + param_4; + return; +} + + +================================================================== + +### EXPORT FUNC 180007310 (15 bytes) name=FUN_180007310 + +void FUN_180007310(undefined8 *param_1) + +{ + (**(code **)*param_1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 180007320 (52 bytes) name=FUN_180007320 + +longlong * FUN_180007320(longlong *param_1,uint param_2) + +{ + FUN_180007360(param_1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180007360 (138 bytes) name=FUN_180007360 + +void FUN_180007360(longlong *param_1) + +{ + undefined8 *puVar1; + char cVar2; + + *param_1 = (longlong)SerialPort::vftable; + if ((param_1[4] != 0) && ((char)param_1[3] == '\x01')) { + cVar2 = (**(code **)(*param_1 + 0x28))(); + if (cVar2 != '\0') { + *(undefined1 *)(param_1 + 3) = 0; + FUN_180005790(*(longlong *)(param_1[4] + 8)); + puVar1 = (undefined8 *)param_1[4]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + param_1[4] = 0; + } + } + puVar1 = (undefined8 *)param_1[4]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + param_1[4] = 0; + if ((int)param_1[2] != 0) { + /* WARNING: Subroutine does not return */ + terminate(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 1800073f0 (289 bytes) name=FUN_1800073f0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_1800073f0(longlong *param_1,char *param_2,ulonglong param_3) + +{ + char cVar1; + undefined8 *puVar2; + ulonglong uVar3; + ulonglong extraout_RAX; + undefined1 auStackY_98 [32]; + uintptr_t local_58; + ulonglong uStack_50; + undefined4 local_48; + longlong *local_38; + undefined8 *local_30; + ulonglong local_28; + + local_28 = DAT_180015010 ^ (ulonglong)auStackY_98; + local_38 = param_1; + cVar1 = (**(code **)(*param_1 + 0x28))(); + if (cVar1 != '\0') { + (**(code **)(*param_1 + 0x20))(param_1); + } + local_30 = (undefined8 *)FUN_18000c554(0x10); + *local_30 = 0; + local_30[1] = 0; + local_58 = 0; + uStack_50 = 0; + local_48 = 0; + puVar2 = FUN_180006f50(local_30,param_2,param_3 & 0xffffffff,&local_58); + param_1[4] = (longlong)puVar2; + local_30 = (undefined8 *)FUN_18000c554(0x10); + *local_30 = param_1; + local_30[1] = FUN_180007310; + local_58 = _beginthreadex((void *)0x0,0,FUN_180007930,local_30,0,(uint *)&uStack_50); + if (local_58 == 0) { + uStack_50 = uStack_50 & 0xffffffff00000000; + std::_Throw_Cpp_error(6); + uVar3 = extraout_RAX & 0xffffffffffffff00; + } + else { + if ((int)param_1[2] != 0) { + /* WARNING: Subroutine does not return */ + terminate(); + } + param_1[1] = local_58; + param_1[2] = uStack_50; + uVar3 = CONCAT71((int7)(local_58 >> 8),1); + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 180007520 (69 bytes) name=FUN_180007520 + +void FUN_180007520(longlong *param_1) + +{ + undefined8 *puVar1; + char cVar2; + + cVar2 = (**(code **)(*param_1 + 0x28))(); + if (cVar2 != '\0') { + *(undefined1 *)(param_1 + 3) = 0; + FUN_180005790(*(longlong *)(param_1[4] + 8)); + puVar1 = (undefined8 *)param_1[4]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + param_1[4] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 180007570 (19 bytes) name=FUN_180007570 + +ulonglong FUN_180007570(longlong param_1) + +{ + ulonglong in_RAX; + + if (*(longlong *)(param_1 + 0x20) != 0) { + in_RAX = 0; + if (*(char *)(param_1 + 0x18) == '\x01') { + return 1; + } + } + return in_RAX & 0xffffffffffffff00; +} + + +================================================================== + +### EXPORT FUNC 180007590 (292 bytes) name=FUN_180007590 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +DWORD FUN_180007590(longlong *param_1,LPCVOID param_2,DWORD param_3) + +{ + longlong lVar1; + longlong lVar2; + char cVar3; + DWORD DVar4; + BOOL BVar5; + longlong *plVar6; + undefined1 auStack_168 [32]; + longlong local_148 [4]; + longlong local_128 [4]; + undefined8 local_108 [14]; + undefined8 local_98 [14]; + longlong local_28; + ulonglong local_20; + + local_20 = DAT_180015010 ^ (ulonglong)auStack_168; + cVar3 = (**(code **)(*param_1 + 0x28))(); + if (cVar3 == '\0') { + DVar4 = 0xffffffff; + } + else { + lVar1 = param_1[4]; + lVar2 = *(longlong *)(lVar1 + 8); + local_28 = lVar2; + DVar4 = WaitForSingleObject(*(HANDLE *)(lVar2 + 0x68),0xffffffff); + if (DVar4 != 0) { + plVar6 = FUN_180002510(local_148, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_108,plVar6,0x279,"Error claiming write mutex."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_108,(ThrowInfo *)&DAT_1800134b8); + } + DVar4 = FUN_180007150(lVar1,param_2,param_3); + BVar5 = ReleaseMutex(*(HANDLE *)(lVar2 + 0x68)); + if (BVar5 == 0) { + plVar6 = FUN_180002510(local_128, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_98,plVar6,0x281,"Error releasing write mutex."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_98,(ThrowInfo *)&DAT_1800134b8); + } + } + return DVar4; +} + + +================================================================== + +### EXPORT FUNC 1800076c0 (579 bytes) name=FUN_1800076c0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1800076c0(longlong param_1) + +{ + char cVar1; + longlong lVar2; + longlong lVar3; + undefined8 *puVar4; + DWORD DVar5; + DWORD DVar6; + BOOL BVar7; + basic_ostream_> *this; + longlong *plVar8; + char *pcVar9; + longlong *plVar10; + undefined1 auStack_738 [32]; + longlong local_718 [4]; + longlong local_6f8 [4]; + longlong local_6d8 [4]; + longlong local_6b8 [4]; + undefined8 local_698 [14]; + undefined8 local_628 [14]; + undefined8 local_5b8 [14]; + longlong local_548; + _COMSTAT local_540 [2]; + basic_iostream_> local_528 [16]; + basic_ostream_> local_518 [240]; + undefined1 local_428 [1024]; + ulonglong local_28; + + local_28 = DAT_180015010 ^ (ulonglong)auStack_738; + *(undefined1 *)(param_1 + 0x18) = 1; + cVar1 = *(char *)(param_1 + 0x18); + do { + if (cVar1 == '\0') { + return; + } + lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 8); + if (*(char *)(lVar2 + 0x30) == '\0') { + DVar6 = 0; + } + else { + BVar7 = ClearCommError(*(HANDLE *)(lVar2 + 0x28),(LPDWORD)0x0,local_540); + DVar6 = local_540[0].cbInQue; + if (BVar7 == 0) { + FUN_180004300(local_528); + FUN_1800060f0(local_528); + DVar6 = GetLastError(); + this = FUN_180006310(local_518,"Error while checking status of the serial port: "); + std::basic_ostream_>::operator<<(this,DVar6); + plVar10 = FUN_180006050((longlong)local_528,local_6b8); + plVar8 = FUN_180002510(local_6d8, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + pcVar9 = (char *)FUN_1800061b0(plVar10); + FUN_180004310(local_5b8,plVar8,0x138,pcVar9); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_5b8,(ThrowInfo *)&DAT_1800134b8); + } + } + if (0 < (int)DVar6) { + memset(local_428,0,0x400); + if (0x400 < (int)DVar6) { + DVar6 = 0x400; + } + lVar2 = *(longlong *)(param_1 + 0x20); + lVar3 = *(longlong *)(lVar2 + 8); + local_548 = lVar3; + DVar5 = WaitForSingleObject(*(HANDLE *)(lVar3 + 0x60),0xffffffff); + if (DVar5 != 0) { + plVar10 = FUN_180002510(local_6f8, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_628,plVar10,0x269,"Error claiming read mutex."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_628,(ThrowInfo *)&DAT_1800134b8); + } + DVar6 = FUN_180005890(*(longlong *)(lVar2 + 8),local_428,DVar6); + BVar7 = ReleaseMutex(*(HANDLE *)(lVar3 + 0x60)); + if (BVar7 == 0) { + plVar10 = FUN_180002510(local_718, + "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" + ); + FUN_180004310(local_698,plVar10,0x271,"Error releasing read mutex."); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_698,(ThrowInfo *)&DAT_1800134b8); + } + puVar4 = *(undefined8 **)(param_1 + 0x28); + if (puVar4 != (undefined8 *)0x0) { + (**(code **)*puVar4)(puVar4,local_428,DVar6); + } + } + cVar1 = *(char *)(param_1 + 0x18); + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 180007930 (45 bytes) name=FUN_180007930 + +undefined8 FUN_180007930(undefined8 *param_1) + +{ + (*(code *)param_1[1])(*param_1); + _Cnd_do_broadcast_at_thread_exit(); + free(param_1); + return 0; +} + + +================================================================== + +### EXPORT FUNC 180007960 (85 bytes) name=FUN_180007960 + +void FUN_180007960(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 uVar1; + undefined8 *puVar2; + undefined8 local_res10; + undefined8 local_res18; + undefined8 local_res20; + + local_res10 = param_2; + local_res18 = param_3; + local_res20 = param_4; + uVar1 = __acrt_iob_func(1); + puVar2 = (undefined8 *)FUN_180002fc0(); + __stdio_common_vfprintf(*puVar2,uVar1,param_1,0,&local_res10); + return; +} + + +================================================================== + +### EXPORT FUNC 1800079c0 (119 bytes) name=FUN_1800079c0 + +undefined8 * FUN_1800079c0(undefined8 *param_1,ulonglong param_2) + +{ + void *_Memory; + + *param_1 = TCMVirtualDevice::vftable; + _Mtx_destroy_in_situ(param_1 + 0x10); + _Cnd_destroy_in_situ(param_1 + 7); + FUN_180002550((longlong)(param_1 + 1)); + _Memory = (void *)param_1[1]; + param_1[1] = 0; + free(_Memory); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180007a40 (651 bytes) name=FUN_180007a40 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_180007a40(longlong param_1,int param_2) + +{ + longlong lVar1; + byte bVar2; + undefined8 *puVar3; + code *pcVar4; + bool bVar5; + int iVar6; + undefined8 *puVar7; + ulonglong uVar8; + longlong lVar9; + void *_Memory; + char *pcVar10; + char cVar11; + longlong *plVar12; + void **ppvVar13; + undefined1 auStack_88 [32]; + char local_68 [8]; + void *local_60; + char *pcStack_58; + char *local_50; + undefined8 *local_48; + undefined8 uStack_40; + longlong local_38; + int local_30; + ulonglong local_28; + + local_28 = DAT_180015010 ^ (ulonglong)auStack_88; + if (param_2 == 0) { + uVar8 = CONCAT71((int7)(local_28 >> 8),1); + } + else { + iVar6 = 0x80; + if ((param_2 < 0x81) && (iVar6 = param_2, param_2 < -0x80)) { + iVar6 = -0x80; + } + local_60 = (void *)0x0; + pcStack_58 = (char *)0x0; + local_50 = (char *)0x0; + cVar11 = (char)iVar6; + if (iVar6 < 0) { + local_68[0] = '\x01'; + FUN_180007d30((longlong *)&local_60,(void *)0x0,local_68); + local_68[0] = -cVar11; + if (pcStack_58 == local_50) { + pcVar10 = pcStack_58; + FUN_180007d30((longlong *)&local_60,pcStack_58,local_68); + } + else { + *pcStack_58 = local_68[0]; + pcVar10 = pcStack_58 + 1; + pcStack_58 = pcVar10; + } + } + else { + local_68[0] = '\0'; + FUN_180007d30((longlong *)&local_60,(void *)0x0,local_68); + local_68[0] = cVar11; + if (pcStack_58 == local_50) { + pcVar10 = pcStack_58; + FUN_180007d30((longlong *)&local_60,pcStack_58,local_68); + } + else { + *pcStack_58 = cVar11; + pcVar10 = pcStack_58 + 1; + pcStack_58 = pcVar10; + } + } + *(undefined1 *)(param_1 + 0x30) = 0; + puVar7 = (undefined8 *)FUN_18000c554(0x28); + *puVar7 = 0; + puVar7[1] = 0; + puVar7[2] = 0; + puVar7[3] = 0; + puVar7[4] = 0; + *puVar7 = FTDICommand::vftable; + puVar7[1] = 0; + puVar7[2] = 0; + puVar7[3] = 0; + ppvVar13 = &local_60; + local_48 = puVar7; + FUN_180009d70((longlong)puVar7,pcVar10,0x77,(longlong *)ppvVar13); + puVar3 = *(undefined8 **)(param_1 + 0xd0); + if (puVar3 != (undefined8 *)0x0) { + ppvVar13 = (void **)*puVar3; + (*ppvVar13[1])(puVar3,puVar7[1],puVar7[2] - puVar7[1]); + } + bVar5 = true; + (**(code **)*puVar7)(puVar7,1); + lVar1 = param_1 + 0x80; + uStack_40 = 0; + local_48 = (undefined8 *)lVar1; + iVar6 = _Mtx_lock(lVar1); + if (iVar6 != 0) { + std::_Throw_C_error(iVar6); + pcVar4 = (code *)swi(3); + uVar8 = (*pcVar4)(); + return uVar8; + } + uStack_40 = CONCAT71(uStack_40._1_7_,1); + lVar9 = _Xtime_get_ticks(); + lVar9 = (lVar9 + 1000000) * 100; + local_38 = lVar9 / 1000000000; + local_30 = (int)lVar9 + (int)local_38 * -1000000000; + iVar6 = _Mtx_current_owns(lVar1); + if (iVar6 == 0) { + std::_Throw_Cpp_error(4); + pcVar4 = (code *)swi(3); + uVar8 = (*pcVar4)(); + return uVar8; + } + plVar12 = &local_38; + lVar9 = lVar1; + iVar6 = _Cnd_timedwait(param_1 + 0x38); + if (iVar6 == 0) { + bVar5 = false; + } + else if (iVar6 != 2) { + std::_Throw_C_error(iVar6); + pcVar4 = (code *)swi(3); + uVar8 = (*pcVar4)(); + return uVar8; + } + if (DAT_180015ff0 != '\0') { + if (bVar5) { + FUN_180007960("EloMotorDevice timeout\n",lVar9,plVar12,ppvVar13); + } + else { + FUN_180007960("EloMotorDevice:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar12,ppvVar13); + } + } + bVar2 = *(byte *)(param_1 + 0x30); + iVar6 = _Mtx_unlock(lVar1); + if (iVar6 != 0) { + std::_Throw_C_error(iVar6); + } + if (local_60 != (void *)0x0) { + _Memory = local_60; + if ((0xfff < (ulonglong)((longlong)local_50 - (longlong)local_60)) && + (_Memory = *(void **)((longlong)local_60 + -8), + 0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + uVar8 = (ulonglong)bVar2; + } + return uVar8; +} + + +================================================================== + +### EXPORT FUNC 180007cd0 (17 bytes) name=FUN_180007cd0 + +undefined1 FUN_180007cd0(undefined8 param_1,char param_2,char param_3) + +{ + if ((param_2 == '\x02') && (param_3 == 'w')) { + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180007cf0 (57 bytes) name=FUN_180007cf0 + +void FUN_180007cf0(longlong param_1,longlong *param_2) + +{ + longlong lVar1; + int iVar2; + + lVar1 = *param_2; + if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'w')) { + *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; + iVar2 = _Cnd_broadcast(param_1 + 0x38); + if (iVar2 != 0) { + std::_Throw_C_error(iVar2); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180007d30 (308 bytes) name=FUN_180007d30 + +undefined1 * FUN_180007d30(longlong *param_1,void *param_2,undefined1 *param_3) + +{ + longlong lVar1; + void *_Src; + ulonglong uVar2; + longlong lVar3; + undefined1 *_Dst; + ulonglong uVar4; + ulonglong uVar5; + undefined1 *_Dst_00; + size_t _Size; + undefined1 *puVar6; + + lVar1 = *param_1; + if (param_1[1] - lVar1 == 0x7fffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + uVar5 = (param_1[1] - lVar1) + 1; + uVar2 = param_1[2] - lVar1; + uVar4 = uVar5; + if ((uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1)) && (uVar4 = (uVar2 >> 1) + uVar2, uVar4 < uVar5)) + { + uVar4 = uVar5; + } + if (uVar4 < 0x1000) { + if (uVar4 == 0) { + _Dst_00 = (undefined1 *)0x0; + } + else { + _Dst_00 = (undefined1 *)FUN_18000c554(uVar4); + } + } + else { + if (uVar4 + 0x27 <= uVar4) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar3 = FUN_18000c554(uVar4 + 0x27); + if (lVar3 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + _Dst_00 = (undefined1 *)(lVar3 + 0x27U & 0xffffffffffffffe0); + *(longlong *)(_Dst_00 + -8) = lVar3; + } + puVar6 = _Dst_00 + ((longlong)param_2 - lVar1); + *puVar6 = *param_3; + _Src = (void *)*param_1; + if (param_2 == (void *)param_1[1]) { + _Size = param_1[1] - (longlong)_Src; + _Dst = _Dst_00; + param_2 = _Src; + } + else { + memmove(_Dst_00,_Src,(longlong)param_2 - (longlong)_Src); + _Dst = puVar6 + 1; + _Size = param_1[1] - (longlong)param_2; + } + memmove(_Dst,param_2,_Size); + FUN_180007280(param_1,(longlong)_Dst_00,uVar5,uVar4); + return puVar6; +} + + +================================================================== + +### EXPORT FUNC 180007e70 (119 bytes) name=FUN_180007e70 + +undefined8 * FUN_180007e70(undefined8 *param_1,ulonglong param_2) + +{ + void *_Memory; + + *param_1 = TCMVirtualDevice::vftable; + _Mtx_destroy_in_situ(param_1 + 0x10); + _Cnd_destroy_in_situ(param_1 + 7); + FUN_180002550((longlong)(param_1 + 1)); + _Memory = (void *)param_1[1]; + param_1[1] = 0; + free(_Memory); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180007ef0 (17 bytes) name=FUN_180007ef0 + +undefined1 FUN_180007ef0(undefined8 param_1,char param_2,char param_3) + +{ + if ((param_2 == '\x02') && (param_3 == 'x')) { + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180007f10 (60 bytes) name=FUN_180007f10 + +void FUN_180007f10(longlong param_1,longlong *param_2) + +{ + longlong lVar1; + undefined8 *puVar2; + ulonglong uVar3; + + lVar1 = *param_2; + if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'x')) { + if (*(char *)(lVar1 + 8) == '\0') { + uVar3 = 0xffffffff; + } + else { + uVar3 = (ulonglong)CONCAT11(*(undefined1 *)(lVar1 + 9),*(undefined1 *)(lVar1 + 10)); + } + puVar2 = *(undefined8 **)(param_1 + 0xd8); + if (puVar2 != (undefined8 *)0x0) { + /* WARNING: Could not recover jumptable at 0x000180007f48. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)*puVar2)(puVar2,uVar3); + return; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180007f50 (17 bytes) name=FUN_180007f50 + +undefined1 FUN_180007f50(undefined8 param_1,char param_2,char param_3) + +{ + if ((param_2 == '\x02') && (param_3 == 'P')) { + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180007f70 (57 bytes) name=FUN_180007f70 + +void FUN_180007f70(longlong param_1,longlong *param_2) + +{ + longlong lVar1; + int iVar2; + + lVar1 = *param_2; + if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'P')) { + *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; + iVar2 = _Cnd_broadcast(param_1 + 0x38); + if (iVar2 != 0) { + std::_Throw_C_error(iVar2); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180007fb0 (17 bytes) name=FUN_180007fb0 + +undefined1 FUN_180007fb0(undefined8 param_1,char param_2,char param_3) + +{ + if ((param_2 == '\x02') && (param_3 == '1')) { + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180007fd0 (57 bytes) name=FUN_180007fd0 + +void FUN_180007fd0(longlong param_1,longlong *param_2) + +{ + longlong lVar1; + int iVar2; + + lVar1 = *param_2; + if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == '1')) { + *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; + iVar2 = _Cnd_broadcast(param_1 + 0x38); + if (iVar2 != 0) { + std::_Throw_C_error(iVar2); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180008010 (17 bytes) name=FUN_180008010 + +undefined1 FUN_180008010(undefined8 param_1,char param_2,char param_3) + +{ + if ((param_2 == '\x02') && (param_3 == 'A')) { + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180008030 (57 bytes) name=FUN_180008030 + +void FUN_180008030(longlong param_1,longlong *param_2) + +{ + longlong lVar1; + int iVar2; + + lVar1 = *param_2; + if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'A')) { + *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; + iVar2 = _Cnd_broadcast(param_1 + 0x38); + if (iVar2 != 0) { + std::_Throw_C_error(iVar2); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180008070 (52 bytes) name=FUN_180008070 + +undefined8 * FUN_180008070(undefined8 *param_1,uint param_2) + +{ + FUN_1800080b0(param_1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 1800080b0 (470 bytes) name=FUN_1800080b0 + +void FUN_1800080b0(undefined8 *param_1) + +{ + undefined8 *_Memory; + void *pvVar1; + void *pvVar2; + + _Memory = (undefined8 *)param_1[0x1e]; + *param_1 = EloTCMScannerDevice::vftable; + param_1[0x1b] = EloTCMScannerDevice::vftable; + if (_Memory != (undefined8 *)0x0) { + *_Memory = HoneywellUpdaterDevice::vftable; + _Mtx_destroy_in_situ(_Memory + 0x14); + _Cnd_destroy_in_situ(_Memory + 0xb); + FUN_180002550((longlong)(_Memory + 4)); + pvVar1 = (void *)_Memory[4]; + _Memory[4] = 0; + free(pvVar1); + pvVar1 = (void *)_Memory[1]; + if (pvVar1 != (void *)0x0) { + pvVar2 = pvVar1; + if ((0xfff < (ulonglong)(_Memory[3] - (longlong)pvVar1)) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180008280; + free(pvVar2); + _Memory[1] = 0; + _Memory[2] = 0; + _Memory[3] = 0; + } + free(_Memory); + param_1[0x1e] = 0; + } + pvVar1 = (void *)param_1[0x23]; + if (pvVar1 != (void *)0x0) { + pvVar2 = pvVar1; + if ((0xfff < (ulonglong)(param_1[0x25] - (longlong)pvVar1)) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180008280; + free(pvVar2); + param_1[0x23] = 0; + param_1[0x24] = 0; + param_1[0x25] = 0; + } + if (0xf < (ulonglong)param_1[0x22]) { + pvVar1 = (void *)param_1[0x1f]; + pvVar2 = pvVar1; + if ((0xfff < param_1[0x22] + 1) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { +LAB_180008280: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar2); + } + param_1[0x21] = 0; + param_1[0x22] = 0xf; + *(undefined1 *)(param_1 + 0x1f) = 0; + *param_1 = TCMVirtualDevice::vftable; + _Mtx_destroy_in_situ(param_1 + 0x10); + _Cnd_destroy_in_situ(param_1 + 7); + FUN_180002550((longlong)(param_1 + 1)); + pvVar1 = (void *)param_1[1]; + param_1[1] = 0; + free(pvVar1); + return; +} + + +================================================================== + +### EXPORT FUNC 180008290 (50 bytes) name=FUN_180008290 + +ulonglong FUN_180008290(undefined8 param_1,char param_2,byte param_3) + +{ + uint uVar1; + ulonglong in_RAX; + undefined7 in_register_00000081; + + if (param_2 == -0x7f) { + if (param_3 == 3) { +LAB_1800082bf: + return CONCAT71((int7)(in_RAX >> 8),1); + } + } + else if (param_2 == '\x02') { + uVar1 = (int)CONCAT71(in_register_00000081,param_3) - 0x60; + in_RAX = (ulonglong)uVar1; + if ((((byte)uVar1 < 0x10) && ((0xa3ffU >> (uVar1 & 0x1f) & 1) != 0)) || + ((byte)(param_3 - 8) < 4)) goto LAB_1800082bf; + } + return in_RAX & 0xffffffffffffff00; +} + + +================================================================== + +### EXPORT FUNC 1800082d0 (1870 bytes) name=FUN_1800082d0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1800082d0(longlong param_1,longlong *param_2) + +{ + undefined1 *puVar1; + undefined2 *puVar2; + char cVar3; + char cVar4; + undefined1 uVar5; + void *_Src; + ulonglong uVar6; + undefined *******pppppppuVar7; + undefined8 *puVar8; + undefined8 *puVar9; + int iVar10; + undefined8 uVar11; + undefined8 **ppuVar12; + longlong lVar13; + longlong lVar14; + ulonglong uVar15; + undefined ********ppppppppuVar16; + ulonglong uVar17; + undefined1 *puVar18; + size_t sVar19; + longlong lVar20; + undefined1 auStack_a8 [32]; + undefined1 local_88 [8]; + undefined8 *local_80; + undefined *******local_78; + undefined *******pppppppuStack_70; + undefined *******local_68; + undefined *******local_60; + undefined *******pppppppuStack_58; + undefined1 *local_50; + undefined1 *puStack_48; + ulonglong local_40; + ulonglong local_38; + + local_38 = DAT_180015010 ^ (ulonglong)auStack_a8; + lVar20 = *param_2; + cVar3 = *(char *)(lVar20 + 4); + cVar4 = *(char *)(lVar20 + 5); + lVar14 = 0; + if (cVar3 == -0x7f) { + if (cVar4 != '\x03') { + return; + } +LAB_180008341: + local_50 = (undefined1 *)0x0; + puStack_48 = (undefined1 *)0xf; + local_60 = (undefined *******)((ulonglong)local_60 & 0xffffffffffffff00); + lVar13 = 8; + lVar20 = (longlong)(((int)param_2[1] - (int)lVar20) + -1); + if (8 < lVar20) { + do { + puVar18 = local_50; + if (local_50 < puStack_48) { + ppppppppuVar16 = &local_60; + if ((undefined1 *)0xf < puStack_48) { + ppppppppuVar16 = (undefined ********)local_60; + } + puVar1 = (undefined1 *)((longlong)ppppppppuVar16 + (longlong)local_50); + local_50 = local_50 + 1; + *puVar1 = *(undefined1 *)(lVar13 + *param_2); + ((undefined1 *)((longlong)ppppppppuVar16 + 1))[(longlong)puVar18] = 0; + } + else { + FUN_180002770(&local_60,local_50,puStack_48,*(undefined1 *)(lVar13 + *param_2)); + } + lVar13 = lVar13 + 1; + } while (lVar13 < lVar20); + } + if (local_50 < puStack_48) { + ppppppppuVar16 = &local_60; + if ((undefined1 *)0xf < puStack_48) { + ppppppppuVar16 = (undefined ********)local_60; + } + puVar2 = (undefined2 *)((longlong)ppppppppuVar16 + (longlong)local_50); + local_50 = local_50 + 1; + *puVar2 = 0; + } + else { + FUN_180002770(&local_60,local_50,puStack_48,0); + } + if (*(code **)(param_1 + 0xe0) != (code *)0x0) { + ppppppppuVar16 = &local_60; + if ((undefined1 *)0xf < puStack_48) { + ppppppppuVar16 = (undefined ********)local_60; + } + (**(code **)(param_1 + 0xe0))(ppppppppuVar16); + } + if ((cVar3 == '\x02') && (cVar4 == '`')) { + local_78 = (undefined *******)0x0; + pppppppuStack_70 = (undefined *******)0x0; + local_68 = (undefined *******)0x0; + local_88[0] = 1; + uVar11 = 0; + FUN_180007d30((longlong *)&local_78,(void *)0x0,local_88); + puVar8 = (undefined8 *)FUN_18000c554(0x28); + *puVar8 = 0; + puVar8[1] = 0; + puVar8[2] = 0; + puVar8[3] = 0; + puVar8[4] = 0; + *puVar8 = FTDICommand::vftable; + puVar8[1] = 0; + puVar8[2] = 0; + puVar8[3] = 0; + local_80 = puVar8; + FUN_180009d70((longlong)puVar8,uVar11,0x60,(longlong *)&local_78); + if (*(longlong **)(param_1 + 0xd0) != (longlong *)0x0) { + (**(code **)(**(longlong **)(param_1 + 0xd0) + 8))(); + } + (**(code **)*puVar8)(puVar8,1); + if ((undefined ********)local_78 != (undefined ********)0x0) { + ppppppppuVar16 = (undefined ********)local_78; + if ((0xfff < (ulonglong)((longlong)local_68 - (longlong)local_78)) && + (ppppppppuVar16 = (undefined ********)local_78[-1], + (undefined1 *)0x1f < (undefined1 *)((longlong)local_78 + (-8 - (longlong)ppppppppuVar16)) + )) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(ppppppppuVar16); + } + } + if ((undefined1 *)0xf < puStack_48) { + ppppppppuVar16 = (undefined ********)local_60; + if (((undefined1 *)0xfff < puStack_48 + 1) && + (ppppppppuVar16 = (undefined ********)local_60[-1], + (undefined1 *)0x1f < (undefined1 *)((longlong)local_60 + (-8 - (longlong)ppppppppuVar16)))) + { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(ppppppppuVar16); + } + if (cVar3 != '\x02') { + return; + } + } + else { + if (cVar3 != '\x02') { + return; + } + if (cVar4 == '`') goto LAB_180008341; + } + if ((byte)(cVar4 + 0x9fU) < 9) { + *(bool *)(param_1 + 0x30) = *(char *)(*param_2 + 8) == '\x01'; + iVar10 = _Cnd_broadcast(param_1 + 0x38); + if (iVar10 == 0) { + return; + } + std::_Throw_C_error(iVar10); + return; + } + if (cVar4 == '\b') { + local_60 = (undefined *******)FTDICommand::vftable; + pppppppuStack_58 = (undefined *******)0x0; + local_50 = (undefined1 *)0x0; + puStack_48 = (undefined1 *)0x0; + _Src = (void *)*param_2; + iVar10 = ((int)param_2[1] - (int)_Src) + -9; + if (iVar10 < 0) { + iVar10 = 0; + } + local_40 = (ulonglong)CONCAT24(*(undefined2 *)((longlong)_Src + 4),iVar10); + uVar15 = param_2[1] - (longlong)_Src; + if (uVar15 != 0) { + FUN_180002ba0((ulonglong *)&pppppppuStack_58,uVar15); + } + pppppppuVar7 = pppppppuStack_58; + uVar17 = uVar15; + memmove(pppppppuStack_58,_Src,uVar15); + local_50 = (undefined1 *)((longlong)pppppppuVar7 + uVar15); + local_78 = (undefined *******)0x0; + pppppppuStack_70 = (undefined *******)0x0; + local_68 = (undefined *******)0x0; + FUN_18000a360((longlong)&local_60,(longlong *)&local_78); + pppppppuVar7 = pppppppuStack_70; + puVar8 = (undefined8 *)(param_1 + 0xf8); + *(undefined8 *)(param_1 + 0x108) = 0; + puVar9 = puVar8; + if (0xf < *(ulonglong *)(param_1 + 0x110)) { + puVar9 = (undefined8 *)*puVar8; + } + *(undefined1 *)puVar9 = 0; + for (ppppppppuVar16 = (undefined ********)local_78; + ppppppppuVar16 != (undefined ********)pppppppuVar7; + ppppppppuVar16 = (undefined ********)((longlong)ppppppppuVar16 + 1)) { + uVar5 = *(undefined1 *)ppppppppuVar16; + uVar15 = *(ulonglong *)(param_1 + 0x108); + uVar6 = *(ulonglong *)(param_1 + 0x110); + if (uVar15 < uVar6) { + *(ulonglong *)(param_1 + 0x108) = uVar15 + 1; + puVar9 = puVar8; + if (0xf < uVar6) { + puVar9 = (undefined8 *)*puVar8; + } + *(undefined1 *)((longlong)puVar9 + uVar15) = uVar5; + *(undefined1 *)((longlong)puVar9 + uVar15 + 1) = 0; + } + else { + FUN_180002770(puVar8,uVar6,uVar17,uVar5); + } + } + iVar10 = _Cnd_broadcast(param_1 + 0x38); + if (iVar10 != 0) { + std::_Throw_C_error(iVar10); + } + if ((undefined ********)local_78 != (undefined ********)0x0) { + ppppppppuVar16 = (undefined ********)local_78; + if ((0xfff < (ulonglong)((longlong)local_68 - (longlong)local_78)) && + (ppppppppuVar16 = (undefined ********)local_78[-1], + (undefined1 *)0x1f < (undefined1 *)((longlong)local_78 + (-8 - (longlong)ppppppppuVar16)))) + { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(ppppppppuVar16); + local_78 = (undefined *******)0x0; + pppppppuStack_70 = (undefined *******)0x0; + local_68 = (undefined *******)0x0; + } + if ((undefined ********)pppppppuStack_58 == (undefined ********)0x0) { + return; + } + ppppppppuVar16 = (undefined ********)pppppppuStack_58; + if ((0xfff < (ulonglong)((longlong)puStack_48 - (longlong)pppppppuStack_58)) && + (ppppppppuVar16 = (undefined ********)pppppppuStack_58[-1], + (undefined1 *)0x1f < + (undefined1 *)((longlong)pppppppuStack_58 + (-8 - (longlong)ppppppppuVar16)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + goto LAB_1800087fa; + } + if (cVar4 == '\t') { + *(bool *)(param_1 + 0x30) = *(char *)(*param_2 + 8) == '\x01'; + iVar10 = _Cnd_broadcast(param_1 + 0x38); + if (iVar10 == 0) { + return; + } + std::_Throw_C_error(iVar10); + } + if (cVar4 == '\n') { + *(bool *)(param_1 + 0x30) = *(char *)(*param_2 + 8) == '\x01'; + iVar10 = _Cnd_broadcast(param_1 + 0x38); + if (iVar10 == 0) { + return; + } + std::_Throw_C_error(iVar10); + } + if (cVar4 == '\v') { + iVar10 = ((int)param_2[1] - (int)*param_2) + -9; + local_78 = (undefined *******)0x0; + pppppppuStack_70 = (undefined *******)0x0; + local_68 = (undefined *******)0x0; + if (0 < iVar10) { + do { + puVar18 = (undefined1 *)(*param_2 + 8 + lVar14); + if (pppppppuStack_70 == local_68) { + FUN_180007d30((longlong *)&local_78,pppppppuStack_70,puVar18); + } + else { + *(undefined1 *)pppppppuStack_70 = *puVar18; + pppppppuStack_70 = (undefined *******)((longlong)pppppppuStack_70 + 1); + } + lVar14 = lVar14 + 1; + } while (lVar14 < iVar10); + } + (**(code **)**(undefined8 **)(param_1 + 0xf0))(*(undefined8 **)(param_1 + 0xf0),&local_78); + if ((undefined ********)local_78 == (undefined ********)0x0) { + return; + } + ppppppppuVar16 = (undefined ********)local_78; + if ((0xfff < (ulonglong)((longlong)local_68 - (longlong)local_78)) && + (ppppppppuVar16 = (undefined ********)local_78[-1], + (undefined1 *)0x1f < (undefined1 *)((longlong)local_78 + (-8 - (longlong)ppppppppuVar16)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + goto LAB_1800087fa; + } + if (cVar4 != 'o') { + return; + } + uVar5 = *(undefined1 *)(*param_2 + 8); + local_50 = (undefined1 *)0x0; + puStack_48 = (undefined1 *)0xf; + local_60 = (undefined *******)((ulonglong)local_60 & 0xffffffffffffff00); + FUN_180002610((longlong *)&local_60,&PTR_18000fde8,0); + switch(uVar5) { + case 0x61: + ppuVar12 = &DAT_180015180; + sVar19 = DAT_180015190; + if (0xf < DAT_180015198) { + ppuVar12 = (undefined8 **)DAT_180015180; + } + break; + case 0x62: + ppuVar12 = &DAT_1800150e0; + sVar19 = DAT_1800150f0; + if (0xf < DAT_1800150f8) { + ppuVar12 = (undefined8 **)DAT_1800150e0; + } + break; + case 99: + ppuVar12 = &DAT_180015160; + sVar19 = DAT_180015170; + if (0xf < DAT_180015178) { + ppuVar12 = (undefined8 **)DAT_180015160; + } + break; + case 100: + ppuVar12 = &DAT_1800151c0; + sVar19 = DAT_1800151d0; + if (0xf < DAT_1800151d8) { + ppuVar12 = (undefined8 **)DAT_1800151c0; + } + break; + case 0x65: + ppuVar12 = &DAT_180015120; + sVar19 = DAT_180015130; + if (0xf < DAT_180015138) { + ppuVar12 = (undefined8 **)DAT_180015120; + } + break; + case 0x66: + ppuVar12 = &DAT_1800150c0; + sVar19 = DAT_1800150d0; + if (0xf < DAT_1800150d8) { + ppuVar12 = (undefined8 **)DAT_1800150c0; + } + break; + case 0x67: + ppuVar12 = &DAT_180015140; + sVar19 = DAT_180015150; + if (0xf < DAT_180015158) { + ppuVar12 = (undefined8 **)DAT_180015140; + } + break; + case 0x68: + ppuVar12 = &DAT_180015080; + sVar19 = DAT_180015090; + if (0xf < DAT_180015098) { + ppuVar12 = (undefined8 **)DAT_180015080; + } + break; + case 0x69: + ppuVar12 = &DAT_1800151a0; + sVar19 = DAT_1800151b0; + if (0xf < DAT_1800151b8) { + ppuVar12 = (undefined8 **)DAT_1800151a0; + } + break; + default: + goto switchD_180008858_default; + } + FUN_180002610((longlong *)&local_60,ppuVar12,sVar19); +switchD_180008858_default: + if (puStack_48 < (undefined1 *)0x10) { + return; + } + ppppppppuVar16 = (undefined ********)local_60; + if (((undefined1 *)0xfff < puStack_48 + 1) && + (ppppppppuVar16 = (undefined ********)local_60[-1], + (undefined1 *)0x1f < (undefined1 *)((longlong)local_60 + (-8 - (longlong)ppppppppuVar16)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } +LAB_1800087fa: + free(ppppppppuVar16); + return; +} + + +================================================================== + +### EXPORT FUNC 180008a50 (395 bytes) name=FUN_180008a50 + +void FUN_180008a50(longlong param_1,undefined8 *param_2,ulonglong param_3,undefined8 param_4) + +{ + longlong *plVar1; + longlong lVar2; + void *pvVar3; + undefined8 *puVar4; + void *local_48; + void *pvStack_40; + longlong local_38; + void **local_30; + undefined8 *local_28; + + local_48 = (void *)0x0; + pvStack_40 = (void *)0x0; + pvVar3 = (void *)0x0; + local_38 = 0; + puVar4 = (undefined8 *)*param_2; + if (puVar4 != (undefined8 *)param_2[1]) { + param_3 = (longlong)param_2[1] - (longlong)puVar4; + if (param_3 < 0x1000) { + if (param_3 != 0) { + pvVar3 = (void *)FUN_18000c554(param_3); + } + } + else { + if (param_3 + 0x27 <= param_3) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar2 = FUN_18000c554(param_3 + 0x27); + if (lVar2 == 0) goto LAB_180008bb6; + pvVar3 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)pvVar3 - 8) = lVar2; + } + lVar2 = (longlong)pvVar3 + param_3; + local_48 = pvVar3; + pvStack_40 = pvVar3; + local_38 = lVar2; + memmove(pvVar3,puVar4,param_3); + param_2 = puVar4; + pvStack_40 = (void *)lVar2; + } + local_30 = &local_48; + if (DAT_180015ff0 != '\0') { + FUN_180007960("transmitData\n",param_2,param_3,param_4); + } + puVar4 = (undefined8 *)FUN_18000c554(0x28); + *puVar4 = 0; + puVar4[1] = 0; + puVar4[2] = 0; + puVar4[3] = 0; + puVar4[4] = 0; + *puVar4 = FTDICommand::vftable; + puVar4[1] = 0; + puVar4[2] = 0; + puVar4[3] = 0; + local_28 = puVar4; + FUN_180009d70((longlong)puVar4,param_2,0xb,(longlong *)&local_48); + plVar1 = *(longlong **)(param_1 + -8); + if (plVar1 != (longlong *)0x0) { + (**(code **)(*plVar1 + 8))(plVar1,puVar4[1],puVar4[2] - puVar4[1]); + } + (**(code **)*puVar4)(puVar4,1); + if (local_48 != (void *)0x0) { + pvVar3 = local_48; + if ((0xfff < (ulonglong)(local_38 - (longlong)local_48)) && + (pvVar3 = *(void **)((longlong)local_48 + -8), + 0x1f < (ulonglong)((longlong)local_48 + (-8 - (longlong)pvVar3)))) { +LAB_180008bb6: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar3); + } + return; +} + + +================================================================== + +### EXPORT FUNC 180008be0 (231 bytes) name=FUN_180008be0 + +undefined8 * FUN_180008be0(undefined8 *param_1,uint param_2) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = EloTCMScheduleTaskDevice::vftable; + pvVar1 = (void *)param_1[0x1c]; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (ulonglong)(param_1[0x1e] - (longlong)pvVar1)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + param_1[0x1c] = 0; + param_1[0x1d] = 0; + param_1[0x1e] = 0; + } + *param_1 = TCMVirtualDevice::vftable; + _Mtx_destroy_in_situ(param_1 + 0x10); + _Cnd_destroy_in_situ(param_1 + 7); + FUN_180002550((longlong)(param_1 + 1)); + pvVar1 = (void *)param_1[1]; + param_1[1] = 0; + free(pvVar1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180008cd0 (21 bytes) name=FUN_180008cd0 + +undefined1 FUN_180008cd0(undefined8 param_1,char param_2,char param_3) + +{ + if ((param_2 == '\x02') && ((byte)(param_3 - 0x21U) < 6)) { + return 1; + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 180008cf0 (430 bytes) name=FUN_180008cf0 + +void FUN_180008cf0(ulonglong param_1,longlong *param_2) + +{ + undefined1 *puVar1; + char extraout_AL; + char extraout_AL_00; + char extraout_AL_01; + char extraout_AL_02; + char extraout_AL_03; + char cVar2; + uint uVar3; + int iVar4; + ulonglong uVar5; + longlong *plVar6; + longlong lVar7; + undefined1 *puVar8; + + puVar8 = (undefined1 *)*param_2; + cVar2 = puVar8[5]; + if (puVar8[4] == '\x02') { + uVar5 = param_1; + plVar6 = param_2; + if (cVar2 == '!') { + *(bool *)(param_1 + 0x30) = puVar8[8] == '\x01'; + uVar3 = _Cnd_broadcast(param_1 + 0x38); + if (uVar3 == 0) { + return; + } + uVar5 = (ulonglong)uVar3; + std::_Throw_C_error(uVar3); + cVar2 = extraout_AL; + } + if (cVar2 == '\"') { + *(uint *)(param_1 + 0xd8) = + CONCAT31(CONCAT21(CONCAT11(puVar8[8],puVar8[9]),puVar8[10]),puVar8[0xb]); + *(undefined1 *)(param_1 + 0x30) = 1; + uVar3 = _Cnd_broadcast(param_1 + 0x38); + if (uVar3 == 0) { + return; + } + uVar5 = (ulonglong)uVar3; + std::_Throw_C_error(uVar3); + cVar2 = extraout_AL_00; + } + if (cVar2 == '#') { + *(bool *)(uVar5 + 0x30) = puVar8[8] == '\x01'; + uVar3 = _Cnd_broadcast(uVar5 + 0x38); + if (uVar3 == 0) { + return; + } + uVar5 = (ulonglong)uVar3; + std::_Throw_C_error(uVar3); + cVar2 = extraout_AL_01; + } + if (cVar2 == '$') { + *(bool *)(uVar5 + 0x30) = puVar8[8] == '\x01'; + uVar3 = _Cnd_broadcast(uVar5 + 0x38); + if (uVar3 == 0) { + return; + } + uVar5 = (ulonglong)uVar3; + std::_Throw_C_error(uVar3); + cVar2 = extraout_AL_02; + } + if (cVar2 == '%') { + iVar4 = ((int)plVar6[1] - (int)puVar8) + -9; + *(longlong *)(param_1 + 0xe8) = *(longlong *)(param_1 + 0xe0); + if (0 < iVar4) { + lVar7 = 0; + do { + puVar8 = (undefined1 *)(*param_2 + 8 + lVar7); + puVar1 = *(undefined1 **)(param_1 + 0xe8); + if (puVar1 == *(undefined1 **)(param_1 + 0xf0)) { + FUN_180007d30((longlong *)(param_1 + 0xe0),puVar1,puVar8); + } + else { + *puVar1 = *puVar8; + *(longlong *)(param_1 + 0xe8) = *(longlong *)(param_1 + 0xe8) + 1; + } + lVar7 = lVar7 + 1; + } while (lVar7 < iVar4); + } + *(undefined1 *)(param_1 + 0x30) = 1; + uVar3 = _Cnd_broadcast(param_1 + 0x38); + if (uVar3 == 0) { + return; + } + uVar5 = (ulonglong)uVar3; + std::_Throw_C_error(uVar3); + cVar2 = extraout_AL_03; + } + if (cVar2 == '&') { + *(bool *)(uVar5 + 0x30) = puVar8[8] == '\x01'; + iVar4 = _Cnd_broadcast(uVar5 + 0x38); + if (iVar4 != 0) { + std::_Throw_C_error(iVar4); + } + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180008ea0 (337 bytes) name=FUN_180008ea0 + +undefined8 * FUN_180008ea0(undefined8 *param_1,ulonglong param_2) + +{ + void *pvVar1; + void *pvVar2; + + *param_1 = EloTCMUpdaterDevice::vftable; + if (*(int *)(param_1 + 0x24) != 0) { + /* WARNING: Subroutine does not return */ + terminate(); + } + pvVar1 = (void *)param_1[0x20]; + if (pvVar1 != (void *)0x0) { + pvVar2 = pvVar1; + if ((0xfff < (ulonglong)(param_1[0x22] - (longlong)pvVar1)) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180008feb; + free(pvVar2); + param_1[0x20] = 0; + param_1[0x21] = 0; + param_1[0x22] = 0; + } + if (0xf < (ulonglong)param_1[0x1f]) { + pvVar1 = (void *)param_1[0x1c]; + pvVar2 = pvVar1; + if ((0xfff < param_1[0x1f] + 1) && + (pvVar2 = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { +LAB_180008feb: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar2); + } + param_1[0x1e] = 0; + param_1[0x1f] = 0xf; + *(undefined1 *)(param_1 + 0x1c) = 0; + *param_1 = TCMVirtualDevice::vftable; + _Mtx_destroy_in_situ(param_1 + 0x10); + _Cnd_destroy_in_situ(param_1 + 7); + FUN_180002550((longlong)(param_1 + 1)); + pvVar1 = (void *)param_1[1]; + param_1[1] = 0; + free(pvVar1); + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 180009000 (467 bytes) name=FUN_180009000 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 * FUN_180009000(longlong param_1,undefined8 *param_2,undefined8 param_3,longlong param_4) + +{ + longlong lVar1; + code *pcVar2; + int iVar3; + undefined8 *puVar4; + longlong lVar5; + undefined **ppuVar6; + longlong *plVar7; + undefined1 auStack_68 [32]; + undefined8 *local_48; + undefined8 uStack_40; + longlong local_38; + int local_30; + ulonglong local_28; + + local_28 = DAT_180015010 ^ (ulonglong)auStack_68; + local_48 = param_2; + if (DAT_180015ff0 != '\0') { + FUN_180007960("askVersion\n",param_2,param_3,param_4); + } + ppuVar6 = &PTR_18000fde8; + FUN_180002610((longlong *)(param_1 + 0xe0),&PTR_18000fde8,0); + local_48 = (undefined8 *)FUN_18000c554(0x28); + *local_48 = 0; + local_48[1] = 0; + local_48[2] = 0; + local_48[3] = 0; + local_48[4] = 0; + puVar4 = FUN_18000a240(local_48,ppuVar6,4); + if (puVar4 != (undefined8 *)0x0) { + plVar7 = *(longlong **)(param_1 + 0xd0); + if (plVar7 != (longlong *)0x0) { + param_4 = *plVar7; + (**(code **)(param_4 + 8))(plVar7,puVar4[1],puVar4[2] - puVar4[1]); + } + (**(code **)*puVar4)(puVar4,1); + } + lVar1 = param_1 + 0x80; + uStack_40 = 0; + local_48 = (undefined8 *)lVar1; + iVar3 = _Mtx_lock(lVar1); + if (iVar3 != 0) { + std::_Throw_C_error(iVar3); + pcVar2 = (code *)swi(3); + puVar4 = (undefined8 *)(*pcVar2)(); + return puVar4; + } + uStack_40 = CONCAT71(uStack_40._1_7_,1); + lVar5 = _Xtime_get_ticks(); + lVar5 = (lVar5 + 1000000) * 100; + local_38 = lVar5 / 1000000000; + local_30 = (int)lVar5 + (int)local_38 * -1000000000; + iVar3 = _Mtx_current_owns(lVar1); + if (iVar3 == 0) { + std::_Throw_Cpp_error(4); + pcVar2 = (code *)swi(3); + puVar4 = (undefined8 *)(*pcVar2)(); + return puVar4; + } + plVar7 = &local_38; + lVar5 = lVar1; + iVar3 = _Cnd_timedwait(param_1 + 0x38); + if (iVar3 == 0) { + lVar5 = param_1 + 0xe0; + if (0xf < *(ulonglong *)(param_1 + 0xf8)) { + lVar5 = *(longlong *)(param_1 + 0xe0); + } + FUN_180007960("askVersion:%s\n",lVar5,plVar7,param_4); + } + else { + if (iVar3 != 2) { + std::_Throw_C_error(iVar3); + pcVar2 = (code *)swi(3); + puVar4 = (undefined8 *)(*pcVar2)(); + return puVar4; + } + FUN_180007960("askVersion timeout\n",lVar5,plVar7,param_4); + } + FUN_180002e60(param_2,(undefined8 *)(param_1 + 0xe0)); + iVar3 = _Mtx_unlock(lVar1); + if (iVar3 != 0) { + std::_Throw_C_error(iVar3); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 1800091e0 (799 bytes) name=FUN_1800091e0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1800091e0(longlong param_1,undefined8 param_2,ulonglong param_3,longlong param_4) + +{ + void *_Src; + longlong lVar1; + int iVar2; + ulonglong uVar3; + longlong lVar4; + code *pcVar5; + undefined8 uVar6; + undefined8 uVar7; + void *pvVar8; + int iVar9; + int iVar10; + uint uVar11; + undefined1 auStack_98 [32]; + ulonglong local_78; + void *local_70; + void *pvStack_68; + longlong local_60; + void *local_50; + void *pvStack_48; + longlong local_40; + ulonglong local_38; + + local_38 = DAT_180015010 ^ (ulonglong)auStack_98; + if (*(longlong *)(param_1 + 0x108) == *(longlong *)(param_1 + 0x100)) { + pcVar5 = *(code **)(param_1 + 0xd8); + if (pcVar5 == (code *)0x0) { + return; + } + uVar7 = 0; + uVar6 = 0; + } + else { + uVar3 = FUN_180009510(param_1,param_2,param_3,param_4); + if ((char)uVar3 == '\0') { + FUN_180007960("beginUpdate fail\n",param_2,param_3,param_4); + pcVar5 = *(code **)(param_1 + 0xd8); + if (pcVar5 == (code *)0x0) { + return; + } + uVar7 = 1; + uVar6 = 0; + } + else { + if (*(code **)(param_1 + 0xd8) != (code *)0x0) { + param_2 = 1; + (**(code **)(param_1 + 0xd8))(1); + } + local_78 = (*(longlong *)(param_1 + 0x108) - *(longlong *)(param_1 + 0x100)) + 0x7fU >> 7; + uVar11 = 0; + if (0 < (int)local_78) { + iVar9 = 0; + iVar10 = 0x62; + do { + lVar4 = *(longlong *)(param_1 + 0x100); + iVar2 = ((int)*(undefined8 *)(param_1 + 0x108) - (int)lVar4) - iVar9; + if (0x80 < iVar2) { + iVar2 = 0x80; + } + local_50 = (void *)0x0; + pvStack_48 = (void *)0x0; + local_40 = 0; + uVar3 = (ulonglong)iVar2; + if (iVar2 != 0) { + FUN_180002ba0((ulonglong *)&local_50,uVar3); + } + lVar1 = local_40; + _Src = local_50; + memmove(local_50,(void *)(iVar9 + lVar4),uVar3); + pvStack_48 = (void *)((longlong)_Src + uVar3); + local_70 = (void *)0x0; + pvStack_68 = (void *)0x0; + local_60 = 0; + if (_Src != pvStack_48) { + if (uVar3 < 0x1000) { + if (uVar3 == 0) { + local_70 = (void *)0x0; + } + else { + local_70 = (void *)FUN_18000c554(uVar3); + } + } + else { + if (uVar3 + 0x27 <= uVar3) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar4 = FUN_18000c554(uVar3 + 0x27); + if (lVar4 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + local_70 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)local_70 - 8) = lVar4; + } + lVar4 = (longlong)local_70 + uVar3; + pvStack_68 = local_70; + local_60 = lVar4; + memmove(local_70,_Src,uVar3); + pvStack_68 = (void *)lVar4; + } + param_3 = (ulonglong)uVar11; + uVar3 = FUN_180009850(param_1,(longlong *)&local_70,param_3,param_4); + iVar2 = (int)local_78; + if ((char)uVar3 == '\0') { + FUN_180007960("transmitData fail\n",(longlong)iVar10 % (longlong)iVar2 & 0xffffffff, + param_3,param_4); + if (*(code **)(param_1 + 0xd8) != (code *)0x0) { + (**(code **)(param_1 + 0xd8))(0,iVar10 / iVar2 + 1); + } + if (_Src == (void *)0x0) { + return; + } + pvVar8 = _Src; + if (((ulonglong)(lVar1 - (longlong)_Src) < 0x1000) || + (pvVar8 = *(void **)((longlong)_Src + -8), + (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar8)) < 0x20)) { + free(pvVar8); + return; + } +LAB_1800094a8: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + if (*(code **)(param_1 + 0xd8) != (code *)0x0) { + (**(code **)(param_1 + 0xd8))(1,iVar10 / iVar2 + 1); + } + if (_Src != (void *)0x0) { + pvVar8 = _Src; + if ((0xfff < (ulonglong)(lVar1 - (longlong)_Src)) && + (pvVar8 = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar8)))) goto LAB_1800094a8; + free(pvVar8); + } + uVar11 = uVar11 + 1; + param_2 = 0x80; + iVar9 = iVar9 + 0x80; + iVar10 = iVar10 + 0x62; + } while ((int)uVar11 < iVar2); + } + uVar3 = FUN_1800096b0(param_1,param_2,param_3,param_4); + if ((char)uVar3 == '\0') { + FUN_180007960("completeUpdate fail\n",param_2,param_3,param_4); + pcVar5 = *(code **)(param_1 + 0xd8); + if (pcVar5 == (code *)0x0) { + return; + } + uVar7 = 99; + uVar6 = 0; + } + else { + pcVar5 = *(code **)(param_1 + 0xd8); + if (pcVar5 == (code *)0x0) { + return; + } + uVar7 = 100; + uVar6 = 1; + } + } + } + (*pcVar5)(uVar6,uVar7); + return; +} + + +================================================================== + +### EXPORT FUNC 180009510 (402 bytes) name=FUN_180009510 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_180009510(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4) + +{ + longlong lVar1; + byte bVar2; + code *pcVar3; + int iVar4; + undefined8 *puVar5; + ulonglong uVar6; + longlong lVar7; + longlong *plVar8; + undefined1 auStack_58 [32]; + undefined8 *local_38; + undefined8 uStack_30; + longlong local_28; + int local_20; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStack_58; + if (DAT_180015ff0 != '\0') { + FUN_180007960("beginUpdate\n",param_2,param_3,param_4); + } + *(undefined1 *)(param_1 + 0x30) = 0; + local_38 = (undefined8 *)FUN_18000c554(0x28); + *local_38 = 0; + local_38[1] = 0; + local_38[2] = 0; + local_38[3] = 0; + local_38[4] = 0; + puVar5 = FUN_18000a240(local_38,param_2,5); + if (puVar5 != (undefined8 *)0x0) { + plVar8 = *(longlong **)(param_1 + 0xd0); + if (plVar8 != (longlong *)0x0) { + param_4 = *plVar8; + (**(code **)(param_4 + 8))(plVar8,puVar5[1],puVar5[2] - puVar5[1]); + } + (**(code **)*puVar5)(puVar5,1); + } + lVar1 = param_1 + 0x80; + uStack_30 = 0; + local_38 = (undefined8 *)lVar1; + iVar4 = _Mtx_lock(lVar1); + if (iVar4 != 0) { + std::_Throw_C_error(iVar4); + pcVar3 = (code *)swi(3); + uVar6 = (*pcVar3)(); + return uVar6; + } + uStack_30 = CONCAT71(uStack_30._1_7_,1); + lVar7 = _Xtime_get_ticks(); + lVar7 = (lVar7 + 30000000) * 100; + local_28 = lVar7 / 1000000000; + local_20 = (int)lVar7 + (int)local_28 * -1000000000; + iVar4 = _Mtx_current_owns(lVar1); + if (iVar4 == 0) { + std::_Throw_Cpp_error(4); + pcVar3 = (code *)swi(3); + uVar6 = (*pcVar3)(); + return uVar6; + } + plVar8 = &local_28; + lVar7 = lVar1; + iVar4 = _Cnd_timedwait(param_1 + 0x38); + if (iVar4 == 0) { + FUN_180007960("beginUpdate:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar8,param_4); + } + else { + if (iVar4 != 2) { + std::_Throw_C_error(iVar4); + pcVar3 = (code *)swi(3); + uVar6 = (*pcVar3)(); + return uVar6; + } + FUN_180007960("beginUpdate timeout\n",lVar7,plVar8,param_4); + } + bVar2 = *(byte *)(param_1 + 0x30); + iVar4 = _Mtx_unlock(lVar1); + if (iVar4 != 0) { + std::_Throw_C_error(iVar4); + } + return (ulonglong)bVar2; +} + + +================================================================== + +### EXPORT FUNC 1800096b0 (402 bytes) name=FUN_1800096b0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_1800096b0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4) + +{ + longlong lVar1; + byte bVar2; + code *pcVar3; + int iVar4; + undefined8 *puVar5; + ulonglong uVar6; + longlong lVar7; + longlong *plVar8; + undefined1 auStack_58 [32]; + undefined8 *local_38; + undefined8 uStack_30; + longlong local_28; + int local_20; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStack_58; + if (DAT_180015ff0 != '\0') { + FUN_180007960("completeUpdate\n",param_2,param_3,param_4); + } + *(undefined1 *)(param_1 + 0x30) = 0; + local_38 = (undefined8 *)FUN_18000c554(0x28); + *local_38 = 0; + local_38[1] = 0; + local_38[2] = 0; + local_38[3] = 0; + local_38[4] = 0; + puVar5 = FUN_18000a240(local_38,param_2,6); + if (puVar5 != (undefined8 *)0x0) { + plVar8 = *(longlong **)(param_1 + 0xd0); + if (plVar8 != (longlong *)0x0) { + param_4 = *plVar8; + (**(code **)(param_4 + 8))(plVar8,puVar5[1],puVar5[2] - puVar5[1]); + } + (**(code **)*puVar5)(puVar5,1); + } + lVar1 = param_1 + 0x80; + uStack_30 = 0; + local_38 = (undefined8 *)lVar1; + iVar4 = _Mtx_lock(lVar1); + if (iVar4 != 0) { + std::_Throw_C_error(iVar4); + pcVar3 = (code *)swi(3); + uVar6 = (*pcVar3)(); + return uVar6; + } + uStack_30 = CONCAT71(uStack_30._1_7_,1); + lVar7 = _Xtime_get_ticks(); + lVar7 = (lVar7 + 150000000) * 100; + local_28 = lVar7 / 1000000000; + local_20 = (int)lVar7 + (int)local_28 * -1000000000; + iVar4 = _Mtx_current_owns(lVar1); + if (iVar4 == 0) { + std::_Throw_Cpp_error(4); + pcVar3 = (code *)swi(3); + uVar6 = (*pcVar3)(); + return uVar6; + } + plVar8 = &local_28; + lVar7 = lVar1; + iVar4 = _Cnd_timedwait(param_1 + 0x38); + if (iVar4 == 0) { + FUN_180007960("completeUpdate:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar8,param_4); + } + else { + if (iVar4 != 2) { + std::_Throw_C_error(iVar4); + pcVar3 = (code *)swi(3); + uVar6 = (*pcVar3)(); + return uVar6; + } + FUN_180007960("completeUpdate timeout\n",lVar7,plVar8,param_4); + } + bVar2 = *(byte *)(param_1 + 0x30); + iVar4 = _Mtx_unlock(lVar1); + if (iVar4 != 0) { + std::_Throw_C_error(iVar4); + } + return (ulonglong)bVar2; +} + + +================================================================== + +### EXPORT FUNC 180009850 (494 bytes) name=FUN_180009850 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_180009850(longlong param_1,longlong *param_2,ulonglong param_3,undefined8 param_4) + +{ + longlong lVar1; + byte bVar2; + void *pvVar3; + code *pcVar4; + int iVar5; + undefined8 *puVar6; + ulonglong uVar7; + longlong lVar8; + void *_Memory; + longlong *plVar9; + longlong *plVar10; + undefined1 auStackY_78 [32]; + longlong local_30; + int local_28; + ulonglong local_20; + + local_20 = DAT_180015010 ^ (ulonglong)auStackY_78; + plVar9 = param_2; + uVar7 = param_3; + if (DAT_180015ff0 != '\0') { + plVar9 = (longlong *)(param_3 & 0xffffffff); + FUN_180007960("transmitData %d\n",plVar9,param_3,param_4); + } + *(undefined1 *)(param_1 + 0x30) = 0; + puVar6 = (undefined8 *)FUN_18000c554(0x28); + *puVar6 = 0; + puVar6[1] = 0; + puVar6[2] = 0; + puVar6[3] = 0; + puVar6[4] = 0; + plVar10 = param_2; + puVar6 = FUN_180009fa0(puVar6,plVar9,uVar7,param_2,(int)param_3 + 0x8001); + if (puVar6 != (undefined8 *)0x0) { + plVar9 = *(longlong **)(param_1 + 0xd0); + if (plVar9 != (longlong *)0x0) { + plVar10 = (longlong *)*plVar9; + (*(code *)plVar10[1])(plVar9,puVar6[1],puVar6[2] - puVar6[1]); + } + (**(code **)*puVar6)(puVar6,1); + } + lVar1 = param_1 + 0x80; + iVar5 = _Mtx_lock(lVar1); + if (iVar5 == 0) { + lVar8 = _Xtime_get_ticks(); + lVar8 = (lVar8 + 5000000) * 100; + local_30 = lVar8 / 1000000000; + local_28 = (int)lVar8 + (int)local_30 * -1000000000; + iVar5 = _Mtx_current_owns(lVar1); + if (iVar5 == 0) { + std::_Throw_Cpp_error(4); + pcVar4 = (code *)swi(3); + uVar7 = (*pcVar4)(); + return uVar7; + } + plVar9 = &local_30; + lVar8 = lVar1; + iVar5 = _Cnd_timedwait(param_1 + 0x38); + if (iVar5 == 0) { + FUN_180007960("transmitData:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar9,plVar10); + } + else { + if (iVar5 != 2) { + std::_Throw_C_error(iVar5); + pcVar4 = (code *)swi(3); + uVar7 = (*pcVar4)(); + return uVar7; + } + FUN_180007960("transmitData timeout\n",lVar8,plVar9,plVar10); + } + bVar2 = *(byte *)(param_1 + 0x30); + iVar5 = _Mtx_unlock(lVar1); + if (iVar5 != 0) { + std::_Throw_C_error(iVar5); + } + pvVar3 = (void *)*param_2; + if (pvVar3 != (void *)0x0) { + _Memory = pvVar3; + if ((0xfff < (ulonglong)(param_2[2] - (longlong)pvVar3)) && + (_Memory = *(void **)((longlong)pvVar3 + -8), + 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + } + return (ulonglong)bVar2; + } + std::_Throw_C_error(iVar5); + pcVar4 = (code *)swi(3); + uVar7 = (*pcVar4)(); + return uVar7; +} + + +================================================================== + +### EXPORT FUNC 180009a40 (36 bytes) name=FUN_180009a40 + +undefined1 FUN_180009a40(undefined8 param_1,char param_2,char param_3) + +{ + bool bVar1; + bool bVar2; + + if (param_2 == '\x02') { + bVar1 = (byte)(param_3 - 4U) < 3; + bVar2 = (byte)(param_3 - 4U) == 3; + } + else { + if (param_2 != -0x7f) { + return 0; + } + bVar1 = (byte)(param_3 - 10U) < 2; + bVar2 = (byte)(param_3 - 10U) == 2; + } + if (!bVar1 && !bVar2) { + return 0; + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 180009a70 (755 bytes) name=FUN_180009a70 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_180009a70(longlong param_1,undefined8 *param_2) + +{ + undefined8 *puVar1; + char cVar2; + undefined1 uVar3; + ulonglong uVar4; + void *pvVar5; + char extraout_AL; + char extraout_AL_00; + char cVar6; + char extraout_AL_01; + char extraout_AL_02; + int iVar7; + undefined8 *puVar8; + undefined1 *puVar9; + void *pvVar10; + ulonglong uVar11; + undefined1 *puVar12; + ulonglong uVar13; + undefined1 auStack_88 [32]; + undefined1 *local_68; + undefined1 *puStack_60; + longlong local_58; + undefined **local_50; + void *pvStack_48; + longlong local_40; + longlong lStack_38; + ulonglong local_30; + ulonglong local_28; + + local_28 = DAT_180015010 ^ (ulonglong)auStack_88; + pvVar10 = (void *)*param_2; + cVar2 = *(char *)((longlong)pvVar10 + 4); + cVar6 = *(char *)((longlong)pvVar10 + 5); + if (cVar2 == '\x02') { + if (cVar6 == '\x04') { + local_50 = FTDICommand::vftable; + pvStack_48 = (void *)0x0; + local_40 = 0; + lStack_38 = 0; + uVar11 = param_2[1] - (longlong)pvVar10; + iVar7 = (int)uVar11 + -9; + if (iVar7 < 0) { + iVar7 = 0; + } + local_30 = (ulonglong)CONCAT24(*(undefined2 *)((longlong)pvVar10 + 4),iVar7); + if (uVar11 != 0) { + FUN_180002ba0((ulonglong *)&pvStack_48,uVar11); + } + pvVar5 = pvStack_48; + uVar13 = uVar11; + memmove(pvStack_48,pvVar10,uVar11); + local_40 = (longlong)pvVar5 + uVar11; + local_68 = (undefined1 *)0x0; + puStack_60 = (undefined1 *)0x0; + local_58 = 0; + FUN_18000a360((longlong)&local_50,(longlong *)&local_68); + puVar9 = puStack_60; + puVar1 = (undefined8 *)(param_1 + 0xe0); + *(undefined8 *)(param_1 + 0xf0) = 0; + puVar8 = puVar1; + if (0xf < *(ulonglong *)(param_1 + 0xf8)) { + puVar8 = (undefined8 *)*puVar1; + } + *(undefined1 *)puVar8 = 0; + for (puVar12 = local_68; puVar12 != puVar9; puVar12 = puVar12 + 1) { + uVar3 = *puVar12; + uVar11 = *(ulonglong *)(param_1 + 0xf0); + uVar4 = *(ulonglong *)(param_1 + 0xf8); + if (uVar11 < uVar4) { + *(ulonglong *)(param_1 + 0xf0) = uVar11 + 1; + puVar8 = puVar1; + if (0xf < uVar4) { + puVar8 = (undefined8 *)*puVar1; + } + *(undefined1 *)((longlong)puVar8 + uVar11) = uVar3; + *(undefined1 *)((longlong)puVar8 + uVar11 + 1) = 0; + } + else { + FUN_180002770(puVar1,uVar4,uVar13,uVar3); + } + } + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 != 0) { + std::_Throw_C_error(iVar7); + } + if (local_68 != (undefined1 *)0x0) { + puVar9 = local_68; + if ((0xfff < (ulonglong)(local_58 - (longlong)local_68)) && + (puVar9 = *(undefined1 **)(local_68 + -8), + (undefined1 *)0x1f < local_68 + (-8 - (longlong)puVar9))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(puVar9); + local_68 = (undefined1 *)0x0; + puStack_60 = (undefined1 *)0x0; + local_58 = 0; + } + if (pvStack_48 != (void *)0x0) { + pvVar10 = pvStack_48; + if ((0xfff < (ulonglong)(lStack_38 - (longlong)pvStack_48)) && + (pvVar10 = *(void **)((longlong)pvStack_48 + -8), + 0x1f < (ulonglong)((longlong)pvStack_48 + (-8 - (longlong)pvVar10)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar10); + } + } + else { + if (cVar6 == '\x05') { + *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 == 0) { + return; + } + std::_Throw_C_error(iVar7); + cVar6 = extraout_AL; + } + if (cVar6 == '\x06') { + *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 == 0) { + return; + } + std::_Throw_C_error(iVar7); + cVar6 = extraout_AL_00; + } + if (cVar6 == '\a') { + *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 != 0) { + std::_Throw_C_error(iVar7); + } + } + } + } + else if (cVar2 == -0x7f) { + if (cVar6 == '\f') { + *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 == 0) { + return; + } + std::_Throw_C_error(iVar7); + cVar6 = extraout_AL_01; + } + if (cVar6 == '\n') { + *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 == 0) { + return; + } + std::_Throw_C_error(iVar7); + cVar6 = extraout_AL_02; + } + if (cVar6 == '\v') { + *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; + iVar7 = _Cnd_broadcast(param_1 + 0x38); + if (iVar7 != 0) { + std::_Throw_C_error(iVar7); + } + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 180009d70 (549 bytes) name=FUN_180009d70 + +void FUN_180009d70(longlong param_1,undefined8 param_2,undefined1 param_3,longlong *param_4) + +{ + longlong *plVar1; + void *_Dst; + int iVar2; + longlong lVar3; + longlong lVar4; + char cVar5; + ulonglong uVar6; + char cVar7; + ulonglong uVar8; + int iVar9; + uint uVar10; + char cVar11; + longlong lVar12; + + plVar1 = (longlong *)(param_1 + 8); + iVar2 = (int)param_4[1] - (int)*param_4; + *(int *)(param_1 + 0x20) = iVar2; + *(undefined1 *)(param_1 + 0x24) = 2; + *(undefined1 *)(param_1 + 0x25) = param_3; + _Dst = *(void **)(param_1 + 0x10); + lVar3 = *plVar1; + uVar8 = (ulonglong)(iVar2 + 9); + uVar6 = (longlong)_Dst - lVar3; + if (uVar8 < uVar6) { + lVar3 = lVar3 + uVar8; +LAB_180009dfd: + *(longlong *)(param_1 + 0x10) = lVar3; + } + else if (uVar6 < uVar8) { + if (uVar8 <= (ulonglong)(*(longlong *)(param_1 + 0x18) - lVar3)) { + memset(_Dst,0,uVar8 - uVar6); + lVar3 = (uVar8 - uVar6) + (longlong)_Dst; + goto LAB_180009dfd; + } + FUN_18000a400(plVar1,uVar8); + } + cVar7 = '\0'; + iVar9 = 3; + *(undefined1 *)*plVar1 = 0x7e; + *(char *)(*plVar1 + 1) = (char)((uint)(iVar2 + 5) >> 8); + *(char *)(*plVar1 + 2) = (char)(iVar2 + 5); + lVar3 = *plVar1; + if ((ulonglong)(*(longlong *)(param_1 + 0x10) - lVar3) < 3) { + iVar9 = (int)*(longlong *)(param_1 + 0x10) - (int)lVar3; + } + lVar12 = (longlong)iVar9; + cVar5 = '\0'; + uVar6 = 0; + cVar11 = '\0'; + if (0 < lVar12) { + uVar8 = uVar6; + if (lVar12 < 2) { +LAB_180009e80: + cVar7 = *(char *)(uVar8 + lVar3); + } + else { + do { + cVar5 = cVar5 + *(char *)(uVar8 + lVar3); + cVar11 = cVar11 + *(char *)(uVar8 + 1 + lVar3); + uVar8 = uVar8 + 2; + } while ((longlong)uVar8 < lVar12 + -1); + if ((longlong)uVar8 < lVar12) goto LAB_180009e80; + } + cVar7 = cVar7 + cVar5 + cVar11; + } + *(char *)(lVar3 + 3) = cVar7; + *(undefined1 *)(*plVar1 + 4) = 2; + *(undefined1 *)(*plVar1 + 5) = param_3; + *(char *)(*plVar1 + 6) = (char)((uint)DAT_180015038 >> 8); + *(char *)(*plVar1 + 7) = (char)DAT_180015038; + uVar8 = uVar6; + if (param_4[1] != *param_4) { + do { + uVar10 = (int)uVar8 + 1; + *(undefined1 *)(uVar6 + 8 + *plVar1) = *(undefined1 *)(uVar6 + *param_4); + uVar6 = uVar6 + 1; + uVar8 = (ulonglong)uVar10; + } while ((ulonglong)(longlong)(int)uVar10 < (ulonglong)(param_4[1] - *param_4)); + } + iVar2 = iVar2 + 8; + lVar3 = *plVar1; + uVar6 = (ulonglong)iVar2; + cVar7 = '\0'; + if ((ulonglong)(*(longlong *)(param_1 + 0x10) - lVar3) < uVar6) { + iVar2 = (int)*(longlong *)(param_1 + 0x10) - (int)lVar3; + } + cVar5 = '\0'; + lVar12 = (longlong)iVar2; + cVar11 = '\0'; + if (lVar12 < 5) goto LAB_180009f5b; + lVar4 = 4; + if (lVar12 < 6) { +LAB_180009f50: + cVar7 = *(char *)(lVar3 + lVar4); + } + else { + do { + cVar5 = cVar5 + *(char *)(lVar3 + lVar4); + cVar11 = cVar11 + *(char *)(lVar3 + 1 + lVar4); + lVar4 = lVar4 + 2; + } while (lVar4 < lVar12 + -1); + if (lVar4 < lVar12) goto LAB_180009f50; + } + cVar7 = cVar7 + cVar5 + cVar11; +LAB_180009f5b: + iVar2 = 1; + if (DAT_180015038 + 1 < 0x8000) { + iVar2 = DAT_180015038 + 1; + } + *(char *)(uVar6 + lVar3) = cVar7; + DAT_180015038 = iVar2; + return; +} + + +================================================================== + +### EXPORT FUNC 180009fa0 (527 bytes) name=FUN_180009fa0 + +undefined8 * +FUN_180009fa0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4, + undefined4 param_5) + +{ + void *_Dst; + longlong lVar1; + int iVar2; + ulonglong uVar3; + longlong lVar4; + int iVar5; + char cVar6; + void *pvVar7; + uint uVar8; + ulonglong uVar9; + char cVar10; + char cVar11; + longlong lVar12; + + *param_1 = FTDICommand::vftable; + uVar9 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + iVar2 = (int)param_4[1] - (int)*param_4; + *(int *)(param_1 + 4) = iVar2; + *(undefined2 *)((longlong)param_1 + 0x24) = 0x702; + pvVar7 = (void *)(longlong)(iVar2 + 9); + _Dst = (void *)param_1[2]; + if (pvVar7 < _Dst) { + param_1[2] = pvVar7; + } + else if (_Dst < pvVar7) { + if (iVar2 + 9 == 0) { + memset(_Dst,0,-(longlong)_Dst); + param_1[2] = 0; + } + else { + FUN_18000a400(param_1 + 1,(ulonglong)pvVar7); + } + } + *(undefined1 *)param_1[1] = 0x7e; + *(char *)(param_1[1] + 1) = (char)((uint)(iVar2 + 5) >> 8); + *(char *)(param_1[1] + 2) = (char)(iVar2 + 5); + cVar11 = '\0'; + lVar1 = param_1[1]; + iVar5 = 3; + if ((ulonglong)(param_1[2] - lVar1) < 3) { + iVar5 = (int)(param_1[2] - lVar1); + } + cVar6 = '\0'; + cVar10 = '\0'; + lVar12 = (longlong)iVar5; + if (0 < iVar5) { + uVar3 = uVar9; + if (lVar12 < 2) { +LAB_18000a0b0: + cVar11 = *(char *)(uVar3 + lVar1); + } + else { + do { + cVar6 = cVar6 + *(char *)(uVar3 + lVar1); + cVar10 = cVar10 + *(char *)(uVar3 + 1 + lVar1); + uVar3 = uVar3 + 2; + } while ((longlong)uVar3 < lVar12 + -1); + if ((longlong)uVar3 < lVar12) goto LAB_18000a0b0; + } + cVar11 = cVar11 + cVar6 + cVar10; + } + *(char *)(lVar1 + 3) = cVar11; + *(undefined1 *)(param_1[1] + 4) = 2; + *(undefined1 *)(param_1[1] + 5) = 7; + *(char *)(param_1[1] + 6) = (char)((uint)param_5 >> 8); + *(char *)(param_1[1] + 7) = (char)param_5; + uVar3 = uVar9; + if (param_4[1] != *param_4) { + do { + *(undefined1 *)(param_1[1] + 8 + uVar3) = *(undefined1 *)(uVar3 + *param_4); + uVar8 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar8; + uVar3 = uVar3 + 1; + } while ((ulonglong)(longlong)(int)uVar8 < (ulonglong)(param_4[1] - *param_4)); + } + iVar2 = iVar2 + 8; + cVar11 = '\0'; + lVar1 = param_1[1]; + cVar6 = '\0'; + cVar10 = '\0'; + iVar5 = (int)(param_1[2] - lVar1); + if ((ulonglong)(longlong)iVar2 <= (ulonglong)(param_1[2] - lVar1)) { + iVar5 = iVar2; + } + lVar12 = (longlong)iVar5; + if (lVar12 < 5) goto LAB_18000a18b; + lVar4 = 4; + if (lVar12 < 6) { +LAB_18000a180: + cVar11 = *(char *)(lVar4 + lVar1); + } + else { + do { + cVar6 = cVar6 + *(char *)(lVar4 + lVar1); + cVar10 = cVar10 + *(char *)(lVar4 + 1 + lVar1); + lVar4 = lVar4 + 2; + } while (lVar4 < lVar12 + -1); + if (lVar4 < lVar12) goto LAB_18000a180; + } + cVar11 = cVar11 + cVar6 + cVar10; +LAB_18000a18b: + *(char *)(iVar2 + lVar1) = cVar11; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000a1b0 (132 bytes) name=FUN_18000a1b0 + +undefined8 * FUN_18000a1b0(undefined8 *param_1,uint param_2) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = FTDICommand::vftable; + pvVar1 = (void *)param_1[1]; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + } + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000a240 (166 bytes) name=FUN_18000a240 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 * FUN_18000a240(undefined8 *param_1,undefined8 param_2,undefined1 param_3) + +{ + void *_Memory; + undefined1 auStack_58 [32]; + undefined8 *local_38; + void *local_30; + undefined8 uStack_28; + longlong local_20; + ulonglong local_18; + + local_18 = DAT_180015010 ^ (ulonglong)auStack_58; + *param_1 = FTDICommand::vftable; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + local_30 = (void *)0x0; + uStack_28 = 0; + local_20 = 0; + local_38 = param_1; + FUN_180009d70((longlong)param_1,param_2,param_3,(longlong *)&local_30); + if (local_30 != (void *)0x0) { + _Memory = local_30; + if ((0xfff < (ulonglong)(local_20 - (longlong)local_30)) && + (_Memory = *(void **)((longlong)local_30 + -8), + 0x1f < (ulonglong)((longlong)local_30 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000a2f0 (99 bytes) name=FUN_18000a2f0 + +void FUN_18000a2f0(undefined8 *param_1) + +{ + void *pvVar1; + void *_Memory; + + *param_1 = FTDICommand::vftable; + pvVar1 = (void *)param_1[1]; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000a360 (155 bytes) name=FUN_18000a360 + +longlong * FUN_18000a360(longlong param_1,longlong *param_2) + +{ + undefined1 *puVar1; + ulonglong uVar2; + uint uVar3; + ulonglong uVar4; + undefined1 *puVar5; + + uVar2 = 0; + *param_2 = 0; + param_2[1] = 0; + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + uVar4 = uVar2; + if (0 < *(int *)(param_1 + 0x20)) { + do { + puVar5 = (undefined1 *)(*(longlong *)(param_1 + 8) + 8 + uVar2); + puVar1 = (undefined1 *)param_2[1]; + if (puVar1 == (undefined1 *)param_2[2]) { + FUN_180007d30(param_2,puVar1,puVar5); + } + else { + *puVar1 = *puVar5; + param_2[1] = param_2[1] + 1; + } + uVar3 = (int)uVar4 + 1; + uVar2 = uVar2 + 1; + uVar4 = (ulonglong)uVar3; + } while ((int)uVar3 < *(int *)(param_1 + 0x20)); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18000a400 (255 bytes) name=FUN_18000a400 + +void FUN_18000a400(longlong *param_1,ulonglong param_2) + +{ + longlong lVar1; + longlong lVar2; + longlong lVar3; + ulonglong uVar4; + ulonglong uVar5; + void *_Dst; + + if (0x7fffffffffffffff < param_2) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + lVar1 = param_1[1]; + lVar2 = *param_1; + uVar4 = param_1[2] - *param_1; + uVar5 = param_2; + if ((uVar4 <= 0x7fffffffffffffff - (uVar4 >> 1)) && + (uVar5 = (uVar4 >> 1) + uVar4, uVar5 < param_2)) { + uVar5 = param_2; + } + if (uVar5 < 0x1000) { + if (uVar5 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(uVar5); + } + } + else { + if (uVar5 + 0x27 <= uVar5) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar3 = FUN_18000c554(uVar5 + 0x27); + if (lVar3 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar3; + } + memset((void *)((longlong)_Dst + (lVar1 - lVar2)),0,param_2 - (lVar1 - lVar2)); + memmove(_Dst,(void *)*param_1,param_1[1] - *param_1); + FUN_180007280(param_1,(longlong)_Dst,param_2,uVar5); + return; +} + + +================================================================== + +### EXPORT FUNC 18000a510 (1101 bytes) name=FUN_18000a510 + +undefined8 * FUN_18000a510(undefined8 *param_1) + +{ + undefined8 *puVar1; + longlong *plVar2; + undefined8 *puVar3; + longlong *plVar4; + undefined8 *local_res10; + + *param_1 = TCMDevice::vftable; + param_1[1] = SerialPort::vftable; + param_1[2] = 0; + param_1[3] = 0; + *(undefined1 *)(param_1 + 4) = 0; + param_1[5] = 0; + param_1[6] = 0; + puVar1 = param_1 + 7; + *puVar1 = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + puVar3 = (undefined8 *)FUN_18000c554(0x10); + puVar3[1] = 0; + *puVar1 = puVar3; + *puVar3 = puVar1; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + puVar3 = (undefined8 *)FUN_18000c554(0xd8); + local_res10 = puVar3; + memset(puVar3,0,0xd8); + FUN_18000b410(puVar3); + *puVar3 = EloTCMAudioDevice::vftable; + *(undefined1 *)(puVar3 + 6) = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0xd8); + local_res10 = puVar3; + memset(puVar3,0,0xd8); + FUN_18000b410(puVar3); + *puVar3 = EloTCMLightDevice::vftable; + *(undefined1 *)(puVar3 + 6) = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0xd8); + local_res10 = puVar3; + memset(puVar3,0,0xd8); + FUN_18000b410(puVar3); + *puVar3 = EloTCMPowerDevice::vftable; + *(undefined1 *)(puVar3 + 6) = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0x138); + local_res10 = puVar3; + memset(puVar3,0,0x138); + FUN_18000b410(puVar3); + *puVar3 = EloTCMScannerDevice::vftable; + puVar3[0x1b] = EloTCMScannerDevice::vftable; + puVar3[0x21] = 0; + puVar3[0x22] = 0xf; + *(undefined1 *)(puVar3 + 0x1f) = 0; + puVar3[0x23] = 0; + puVar3[0x24] = 0; + puVar3[0x25] = 0; + puVar3[0x1c] = 0; + puVar3[0x1d] = 0; + puVar3[0x1e] = 0; + *(undefined1 *)(puVar3 + 6) = 0; + *(undefined1 *)(puVar3 + 0x26) = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0xf8); + local_res10 = puVar3; + memset(puVar3,0,0xf8); + FUN_18000b410(puVar3); + *puVar3 = EloTCMScheduleTaskDevice::vftable; + puVar3[0x1c] = 0; + puVar3[0x1d] = 0; + puVar3[0x1e] = 0; + *(undefined1 *)(puVar3 + 6) = 0; + *(undefined4 *)(puVar3 + 0x1b) = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0x128); + local_res10 = puVar3; + memset(puVar3,0,0x128); + FUN_18000b410(puVar3); + *puVar3 = EloTCMUpdaterDevice::vftable; + puVar3[0x1e] = 0; + puVar3[0x1f] = 0xf; + *(undefined1 *)(puVar3 + 0x1c) = 0; + puVar3[0x20] = 0; + puVar3[0x21] = 0; + puVar3[0x22] = 0; + puVar3[0x23] = 0; + puVar3[0x24] = 0; + puVar3[0x1b] = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0xd8); + local_res10 = puVar3; + memset(puVar3,0,0xd8); + FUN_18000b410(puVar3); + *puVar3 = EloMotorDevice::vftable; + *(undefined1 *)(puVar3 + 6) = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + local_res10 = puVar3; + } + puVar3 = (undefined8 *)FUN_18000c554(0xe0); + local_res10 = puVar3; + memset(puVar3,0,0xe0); + FUN_18000b410(puVar3); + *puVar3 = EloProximityDevice::vftable; + *(undefined1 *)(puVar3 + 6) = 0; + puVar3[0x1b] = 0; + puVar1 = (undefined8 *)param_1[0xd]; + if (puVar1 == (undefined8 *)param_1[0xe]) { + local_res10 = puVar3; + FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); + } + else { + *puVar1 = puVar3; + param_1[0xd] = param_1[0xd] + 8; + } + plVar2 = (longlong *)param_1[0xd]; + for (plVar4 = (longlong *)param_1[0xc]; plVar4 != plVar2; plVar4 = plVar4 + 1) { + *(undefined8 **)(*plVar4 + 0xd0) = param_1 + 1; + } + param_1[6] = param_1; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000a960 (614 bytes) name=FUN_18000a960 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +ulonglong FUN_18000a960(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + bool bVar1; + longlong *plVar2; + byte bVar3; + int iVar4; + void *_Buf1; + ulonglong uVar5; + longlong *plVar6; + undefined8 uVar7; + undefined8 *******_Buf; + undefined1 auStack_138 [32]; + longlong *local_118; + longlong local_110 [4]; + undefined8 local_f0 [4]; + undefined8 ******local_d0 [2]; + ulonglong local_c0; + ulonglong local_b8; + longlong *local_b0; + longlong *plStack_a8; + longlong local_a0; + longlong local_98 [4]; + undefined8 local_78 [4]; + undefined8 local_58 [4]; + ulonglong local_38; + + local_38 = DAT_180015010 ^ (ulonglong)auStack_138; + local_b0 = (longlong *)0x0; + plStack_a8 = (longlong *)0x0; + local_a0 = 0; + FUN_180002fd0((longlong *)&local_b0); + plVar2 = plStack_a8; + plVar6 = local_b0; + do { + if (plVar6 == plVar2) { + uVar5 = 0; +LAB_18000aacd: + plVar2 = plStack_a8; + plVar6 = local_b0; + if (local_b0 != (longlong *)0x0) { + for (; plVar6 != plVar2; plVar6 = plVar6 + 0xc) { + FUN_180002ca0(plVar6); + } + plVar6 = local_b0; + if ((0xfff < (ulonglong)(((local_a0 - (longlong)local_b0) / 0x60) * 0x60)) && + (plVar6 = (longlong *)local_b0[-1], + 0x1f < (ulonglong)((longlong)local_b0 + (-8 - (longlong)plVar6)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(plVar6); + } + return uVar5; + } + FUN_180002e60(local_98,plVar6); + FUN_180002e60(local_78,plVar6 + 4); + FUN_180002e60(local_58,plVar6 + 8); + local_118 = local_110; + FUN_180002e60(local_110,local_98); + FUN_180002e60(local_f0,local_78); + FUN_180002e60(local_d0,local_58); + uVar5 = local_c0; + _Buf = local_d0; + if (0xf < local_b8) { + _Buf = (undefined8 *******)local_d0[0]; + } + if (0x20 < local_c0) { + for (_Buf1 = memchr(_Buf,0x46,local_c0 - 0x20); _Buf1 != (void *)0x0; + _Buf1 = memchr((void *)((longlong)_Buf1 + 1),0x46, + (longlong)_Buf + ((uVar5 - 0x20) - ((longlong)_Buf1 + 1)))) { + iVar4 = memcmp(_Buf1,"FTDIBUS\\COMPORT&VID_0403&PID_6001",0x21); + if (iVar4 == 0) { + if ((longlong)_Buf1 - (longlong)_Buf != -1) { + bVar1 = true; + goto LAB_18000aa9e; + } + break; + } + } + } + bVar1 = false; +LAB_18000aa9e: + FUN_180002ca0(local_110); + if (bVar1) { + uVar7 = 0x1c200; + bVar3 = (**(code **)(*(longlong *)(param_1 + 8) + 0x18))((longlong *)(param_1 + 8),local_98); + uVar5 = (ulonglong)bVar3; + FUN_180007960("TCM Open:%d\n",uVar5,uVar7,param_4); + FUN_180002ca0(local_98); + goto LAB_18000aacd; + } + FUN_180002ca0(local_98); + plVar6 = plVar6 + 0xc; + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 18000abd0 (172 bytes) name=FUN_18000abd0 + +longlong * FUN_18000abd0(longlong param_1,longlong *param_2) + +{ + undefined1 *puVar1; + ulonglong uVar2; + longlong lVar3; + longlong lVar4; + undefined1 local_18 [4]; + undefined4 local_14; + longlong *local_10; + + lVar4 = 0; + *param_2 = 0; + param_2[1] = 0; + *param_2 = 0; + param_2[1] = 0; + param_2[2] = 0; + local_14 = 1; + lVar3 = 4; + local_10 = param_2; + do { + uVar2 = *(longlong *)(param_1 + 0x50) + lVar4; + local_18[0] = *(undefined1 *) + ((ulonglong)((uint)uVar2 & 0xf) + + *(longlong *) + (*(longlong *)(param_1 + 0x40) + + (uVar2 >> 4 & *(longlong *)(param_1 + 0x48) - 1U) * 8)); + puVar1 = (undefined1 *)param_2[1]; + if (puVar1 == (undefined1 *)param_2[2]) { + FUN_180007d30(param_2,puVar1,local_18); + } + else { + *puVar1 = local_18[0]; + param_2[1] = param_2[1] + 1; + } + lVar4 = lVar4 + 1; + lVar3 = lVar3 + -1; + } while (lVar3 != 0); + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18000ac80 (1424 bytes) name=FUN_18000ac80 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18000ac80(longlong param_1,longlong param_2,int param_3) + +{ + longlong *plVar1; + undefined1 uVar2; + byte bVar3; + undefined8 *puVar4; + bool bVar5; + char cVar6; + ulonglong uVar7; + undefined8 uVar8; + longlong lVar9; + char *pcVar10; + int iVar11; + uint uVar12; + longlong lVar13; + ulonglong uVar14; + void *_Memory; + char *pcVar15; + int iVar16; + void **ppvVar17; + char cVar18; + uint uVar19; + undefined8 *puVar20; + void **ppvVar21; + void **ppvVar22; + void **ppvVar23; + void **ppvVar24; + char cVar25; + byte bVar26; + char cVar27; + void **ppvVar28; + longlong lVar29; + undefined1 auStack_98 [32]; + byte local_78 [8]; + longlong local_70; + longlong local_68; + void *local_60; + void **ppvStack_58; + void **local_50; + char *local_48; + longlong lStack_40; + longlong local_38; + ulonglong local_30; + + local_30 = DAT_180015010 ^ (ulonglong)auStack_98; + lVar29 = 0; + local_70 = param_2; + local_68 = param_1; + if (0 < param_3) { + lVar13 = *(longlong *)(param_1 + 0x58); + do { + uVar2 = *(undefined1 *)(lVar29 + local_70); + uVar7 = *(ulonglong *)(param_1 + 0x50); + if ((((int)lVar13 + (int)uVar7 & 0xfU) == 0) && + (*(ulonglong *)(param_1 + 0x48) <= lVar13 + 0x10U >> 4)) { + FUN_1800028d0(param_1 + 0x38); + uVar7 = *(ulonglong *)(param_1 + 0x50); + lVar13 = *(longlong *)(param_1 + 0x58); + } + uVar7 = *(longlong *)(param_1 + 0x48) * 0x10 - 1U & uVar7; + *(ulonglong *)(param_1 + 0x50) = uVar7; + uVar7 = uVar7 + lVar13; + lVar9 = *(longlong *)(param_1 + 0x40); + lVar13 = (*(longlong *)(param_1 + 0x48) - 1U & uVar7 >> 4) * 8; + if (*(longlong *)(lVar13 + lVar9) == 0) { + uVar8 = FUN_18000c554(0x10); + *(undefined8 *)(lVar13 + *(longlong *)(param_1 + 0x40)) = uVar8; + lVar9 = *(longlong *)(param_1 + 0x40); + } + *(undefined1 *)((ulonglong)((uint)uVar7 & 0xf) + *(longlong *)(lVar13 + lVar9)) = uVar2; + *(longlong *)(param_1 + 0x58) = *(longlong *)(param_1 + 0x58) + 1; + lVar13 = *(longlong *)(param_1 + 0x58); + lVar29 = lVar29 + 1; + } while (lVar29 < param_3); + } + uVar12 = *(uint *)(param_1 + 0x58); + do { + if ((int)uVar12 < 9) { + return; + } + ppvVar17 = (void **)0x0; + local_48 = (char *)0x0; + lStack_40 = 0; + local_38 = 0; + FUN_18000abd0(param_1,(longlong *)&local_48); + if (*local_48 == DAT_180010101) { + uVar7 = lStack_40 - (longlong)local_48; + iVar11 = (int)uVar7 + -1; + cVar18 = '\0'; + cVar6 = '\0'; + cVar25 = '\0'; + cVar27 = '\0'; + iVar16 = (int)uVar7; + if ((ulonglong)(longlong)iVar11 <= uVar7) { + iVar16 = iVar11; + } + lVar29 = (longlong)iVar16; + if (0 < iVar16) { + ppvVar23 = ppvVar17; + if (lVar29 < 2) { +LAB_18000ae17: + cVar6 = local_48[(longlong)ppvVar23]; + } + else { + do { + cVar25 = cVar25 + local_48[(longlong)ppvVar23]; + cVar27 = cVar27 + (local_48 + 1)[(longlong)ppvVar23]; + ppvVar23 = (void **)((longlong)ppvVar23 + 2); + } while ((longlong)ppvVar23 < lVar29 + -1); + if ((longlong)ppvVar23 < lVar29) goto LAB_18000ae17; + } + cVar18 = cVar6 + cVar25 + cVar27; + } + if (local_48[uVar7 - 1] != cVar18) goto LAB_18000aee2; + uVar19 = CONCAT11(local_48[1],local_48[2]) + 4; + if (uVar12 < uVar19) { + if (local_48 == (char *)0x0) { + return; + } + pcVar15 = local_48; + if (((ulonglong)(local_38 - (longlong)local_48) < 0x1000) || + (pcVar15 = *(char **)(local_48 + -8), local_48 + (-8 - (longlong)pcVar15) < (char *)0x20) + ) { + free(pcVar15); + return; + } + goto LAB_18000b158; + } + iVar16 = 4; + bVar26 = 0; + uVar12 = CONCAT11(local_48[1],local_48[2]) - 1; + if (0 < (int)uVar12) { + uVar7 = (ulonglong)uVar12; + do { + uVar14 = (longlong)iVar16 + *(longlong *)(param_1 + 0x50); + bVar26 = bVar26 + *(char *)((ulonglong)((uint)uVar14 & 0xf) + + *(longlong *) + (*(longlong *)(param_1 + 0x40) + + (uVar14 >> 4 & *(longlong *)(param_1 + 0x48) - 1U) * 8)); + iVar16 = iVar16 + 1; + uVar7 = uVar7 - 1; + } while (uVar7 != 0); + } + ppvVar24 = *(void ***)(param_1 + 0x50); + ppvVar23 = (void **)(ulonglong)((uint)(byte *)((longlong)iVar16 + (longlong)ppvVar24) & 0xf); + bVar3 = *(byte *)((longlong)ppvVar23 + + *(longlong *) + (*(longlong *)(param_1 + 0x40) + + (*(longlong *)(param_1 + 0x48) - 1U & + (ulonglong)((longlong)iVar16 + (longlong)ppvVar24) >> 4) * 8)); + if (bVar26 != bVar3) { + if (DAT_180015ff0 != '\0') { + FUN_180007960("checksum not same:%.2x, %.2x",(ulonglong)bVar26,(ulonglong)bVar3,ppvVar24); + } + goto LAB_18000aee2; + } + local_60 = (void *)0x0; + ppvStack_58 = (void **)0x0; + local_50 = (void **)0x0; + ppvVar22 = ppvVar17; + if (uVar19 != 0) { + uVar7 = (ulonglong)uVar19; + do { + local_78[0] = *(byte *)((ulonglong)((uint)ppvVar24 & 0xf) + + *(longlong *) + (*(longlong *)(param_1 + 0x40) + + (*(longlong *)(param_1 + 0x48) - 1U & (ulonglong)ppvVar24 >> 4) * + 8)); + if (ppvStack_58 == local_50) { + ppvVar22 = (void **)local_78; + FUN_180007d30((longlong *)&local_60,ppvStack_58,(undefined1 *)ppvVar22); + } + else { + *(byte *)ppvStack_58 = local_78[0]; + ppvStack_58 = (void **)((longlong)ppvStack_58 + 1); + ppvVar22 = local_50; + } + plVar1 = (longlong *)(param_1 + 0x58); + *plVar1 = *plVar1 + -1; + if (*plVar1 == 0) { + *(undefined8 *)(param_1 + 0x50) = 0; + ppvVar24 = ppvVar17; + } + else { + *(longlong *)(param_1 + 0x50) = *(longlong *)(param_1 + 0x50) + 1; + ppvVar24 = *(void ***)(param_1 + 0x50); + } + uVar7 = uVar7 - 1; + ppvVar23 = ppvStack_58; + } while (uVar7 != 0); + } + ppvVar28 = (void **)(ulonglong)*(byte *)((longlong)local_60 + 4); + local_78[0] = *(byte *)((longlong)local_60 + 5); + ppvVar21 = (void **)(ulonglong)local_78[0]; + uVar12 = (uint)CONCAT11(*(undefined1 *)((longlong)local_60 + 6), + *(undefined1 *)((longlong)local_60 + 7)); + if (DAT_180015ff0 != '\0') { + FUN_180007960("\nRecv:",ppvVar23,ppvVar22,ppvVar24); + ppvVar23 = ppvVar17; + if ((int)ppvStack_58 != (int)local_60 && -1 < (int)ppvStack_58 - (int)local_60) { + do { + FUN_180007960("%.2X ",(ulonglong)*(byte *)((longlong)local_60 + (longlong)ppvVar17), + ppvVar22,ppvVar24); + uVar19 = (int)ppvVar23 + 1; + ppvVar17 = (void **)((longlong)ppvVar17 + 1); + ppvVar23 = (void **)(ulonglong)uVar19; + } while ((int)uVar19 < (int)ppvStack_58 - (int)local_60); + } + ppvVar24 = (void **)(ulonglong)uVar12; + ppvVar23 = ppvVar28; + FUN_180007960("Main:%.2X Sub:%.2X Frame:%d \n",ppvVar28,ppvVar21,ppvVar24); + ppvVar22 = ppvVar21; + } + bVar26 = local_78[0]; + DAT_180015038 = 1; + if (uVar12 + 1 < 0x8000) { + DAT_180015038 = uVar12 + 1; + } + bVar5 = false; + puVar4 = *(undefined8 **)(param_1 + 0x68); + puVar20 = *(undefined8 **)(param_1 + 0x60); + if (puVar20 == puVar4) { +LAB_18000b079: + FUN_180007960("Unhandled:",ppvVar23,ppvVar22,ppvVar24); + iVar16 = 0; + lVar29 = 0; + if ((int)ppvStack_58 != (int)local_60 && -1 < (int)ppvStack_58 - (int)local_60) { + do { + FUN_180007960("%.2X ",(ulonglong)*(byte *)((longlong)local_60 + lVar29),ppvVar22, + ppvVar24); + iVar16 = iVar16 + 1; + lVar29 = lVar29 + 1; + } while (iVar16 < (int)ppvStack_58 - (int)local_60); + } + FUN_180007960("Main:%.2X Sub:%.2X Frame:%d \n",ppvVar28,(ulonglong)local_78[0], + (ulonglong)uVar12); + } + else { + do { + plVar1 = (longlong *)*puVar20; + ppvVar22 = (void **)(ulonglong)bVar26; + ppvVar23 = ppvVar28; + cVar6 = (**(code **)*plVar1)(plVar1); + if (cVar6 != '\0') { + bVar5 = true; + ppvVar23 = &local_60; + (**(code **)(*plVar1 + 8))(plVar1); + } + puVar20 = puVar20 + 1; + } while (puVar20 != puVar4); + param_1 = local_68; + if (!bVar5) goto LAB_18000b079; + } + if (local_60 != (void *)0x0) { + _Memory = local_60; + if ((0xfff < (ulonglong)((longlong)local_50 - (longlong)local_60)) && + (_Memory = *(void **)((longlong)local_60 + -8), + 0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + local_60 = (void *)0x0; + ppvStack_58 = (void **)0x0; + local_50 = (void **)0x0; + } + if (local_48 != (char *)0x0) { + pcVar15 = local_48; + if (0xfff < (ulonglong)(local_38 - (longlong)local_48)) { + pcVar15 = *(char **)(local_48 + -8); + pcVar10 = local_48 + (-8 - (longlong)pcVar15); + goto joined_r0x00018000b18e; + } + goto LAB_18000b193; + } + } + else { +LAB_18000aee2: + plVar1 = (longlong *)(param_1 + 0x58); + *plVar1 = *plVar1 + -1; + if (*plVar1 == 0) { + *(undefined8 *)(param_1 + 0x50) = 0; + } + else { + *(longlong *)(param_1 + 0x50) = *(longlong *)(param_1 + 0x50) + 1; + } + if (local_48 != (char *)0x0) { + pcVar15 = local_48; + if (0xfff < (ulonglong)(local_38 - (longlong)local_48)) { + pcVar15 = *(char **)(local_48 + -8); + pcVar10 = local_48 + (-8 - (longlong)pcVar15); +joined_r0x00018000b18e: + if ((char *)0x1f < pcVar10) { +LAB_18000b158: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + } +LAB_18000b193: + free(pcVar15); + } + } + uVar12 = *(uint *)(param_1 + 0x58); + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 18000b220 (91 bytes) name=FID_conflict:~vector_> + +/* Library Function - Multiple Matches With Different Base Names + public: __cdecl std::priority_queue >,struct std::greater + >::~priority_queue >,struct std::greater >(void) __ptr64 + public: __cdecl std::vector + >::~vector >(void) __ptr64 + public: __cdecl std::vector >::~vector >(void) + __ptr64 + public: __cdecl std::vector + >::~vector >(void) __ptr64 + 7 names - too many to list + + Library: Visual Studio 2019 Release */ + +void FID_conflict__vector_>(longlong *param_1) + +{ + void *pvVar1; + void *_Memory; + + pvVar1 = (void *)*param_1; + if (pvVar1 != (void *)0x0) { + _Memory = pvVar1; + if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b280 (397 bytes) name=FUN_18000b280 + +undefined8 * FUN_18000b280(longlong *param_1,void *param_2,undefined8 *param_3) + +{ + ulonglong uVar1; + undefined8 *puVar2; + longlong lVar3; + void *pvVar4; + longlong lVar5; + ulonglong uVar6; + ulonglong uVar7; + undefined8 *_Dst; + void *_Memory; + undefined8 *_Dst_00; + size_t _Size; + + lVar3 = *param_1; + lVar5 = param_1[1] - lVar3 >> 3; + if (lVar5 == 0x1fffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + uVar7 = param_1[2] - lVar3 >> 3; + uVar1 = lVar5 + 1; + uVar6 = uVar1; + if ((uVar7 <= 0x1fffffffffffffff - (uVar7 >> 1)) && (uVar6 = (uVar7 >> 1) + uVar7, uVar6 < uVar1)) + { + uVar6 = uVar1; + } + if (0x1fffffffffffffff < uVar6) { +LAB_18000b40a: + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + uVar7 = uVar6 * 8; + if (uVar7 < 0x1000) { + if (uVar7 == 0) { + _Dst_00 = (undefined8 *)0x0; + } + else { + _Dst_00 = (undefined8 *)FUN_18000c554(uVar7); + } + } + else { + if (uVar7 + 0x27 <= uVar7) goto LAB_18000b40a; + lVar5 = FUN_18000c554(uVar7 + 0x27); + if (lVar5 == 0) goto LAB_18000b3fd; + _Dst_00 = (undefined8 *)(lVar5 + 0x27U & 0xffffffffffffffe0); + _Dst_00[-1] = lVar5; + } + puVar2 = _Dst_00 + ((longlong)param_2 - lVar3 >> 3); + *puVar2 = *param_3; + pvVar4 = (void *)*param_1; + if (param_2 == (void *)param_1[1]) { + _Size = param_1[1] - (longlong)pvVar4; + _Dst = _Dst_00; + param_2 = pvVar4; + } + else { + memmove(_Dst_00,pvVar4,(longlong)param_2 - (longlong)pvVar4); + _Dst = puVar2 + 1; + _Size = param_1[1] - (longlong)param_2; + } + memmove(_Dst,param_2,_Size); + pvVar4 = (void *)*param_1; + if (pvVar4 != (void *)0x0) { + _Memory = pvVar4; + if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xfffffffffffffff8U)) && + (_Memory = *(void **)((longlong)pvVar4 + -8), + 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) { +LAB_18000b3fd: + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + *param_1 = (longlong)_Dst_00; + param_1[1] = (longlong)(_Dst_00 + uVar1); + param_1[2] = (longlong)(_Dst_00 + uVar6); + return puVar2; +} + + +================================================================== + +### EXPORT FUNC 18000b410 (123 bytes) name=FUN_18000b410 + +undefined8 * FUN_18000b410(undefined8 *param_1) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + + puVar1 = param_1 + 1; + *param_1 = TCMVirtualDevice::vftable; + *puVar1 = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + puVar2 = (undefined8 *)FUN_18000c554(0x10); + puVar2[1] = 0; + *puVar1 = puVar2; + *puVar2 = puVar1; + _Cnd_init_in_situ(param_1 + 7); + _Mtx_init_in_situ(param_1 + 0x10,2); + param_1[0x1a] = 0; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000b490 (3 bytes) name=_guard_check_icall + +void _guard_check_icall(void) + +{ + return; +} + + +================================================================== + +### EXPORT FUNC 18000b4a0 (3 bytes) name=FUN_18000b4a0 + +undefined1 FUN_18000b4a0(void) + +{ + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000b4b0 (116 bytes) name=FUN_18000b4b0 + +void FUN_18000b4b0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4, + int param_5,longlong param_6) + +{ + if (param_5 == 2) { + *(undefined4 *)(param_6 + 0x240) = param_2; + MAG_GetOutputBMPdataRGB24 + (*(undefined4 *)(param_6 + 0x18),*(undefined8 *)(param_6 + 0x220), + *(undefined4 *)(param_6 + 0x218),1); + if (*(code **)(param_6 + 0x228) != (code *)0x0) { + /* WARNING: Could not recover jumptable at 0x00018000b517. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(param_6 + 0x228)) + (*(undefined8 *)(param_6 + 0x220),*(undefined4 *)(param_6 + 0x208), + *(undefined4 *)(param_6 + 0x20c),3); + return; + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b530 (442 bytes) name=FUN_18000b530 + +undefined8 * FUN_18000b530(void) + +{ + undefined8 *puVar1; + undefined8 *_Dst; + undefined8 *puVar2; + longlong lVar3; + + _Dst = DAT_180015ff8; + if (DAT_180015ff8 == (undefined8 *)0x0) { + _Dst = (undefined8 *)FUN_18000c554(0x2b0); + memset(_Dst,0,0x2b0); + *_Dst = ThermalController::vftable; + *(int *)(_Dst + 1) = 0; + _Dst[2] = 0; + *(undefined4 *)(_Dst + 3) = 0xffffffff; + _Dst[0x3e] = 0; + *(undefined4 *)(_Dst + 0x3f) = 0; + *(undefined8 *)((longlong)_Dst + 0x1c) = 0; + *(undefined8 *)((longlong)_Dst + 0x24) = 0; + *(undefined8 *)((longlong)_Dst + 0x2c) = 0; + *(undefined8 *)((longlong)_Dst + 0x34) = 0; + *(undefined8 *)((longlong)_Dst + 0x3c) = 0; + *(undefined8 *)((longlong)_Dst + 0x44) = 0; + *(undefined8 *)((longlong)_Dst + 0x4c) = 0; + *(undefined8 *)((longlong)_Dst + 0x54) = 0; + *(undefined8 *)((longlong)_Dst + 0x5c) = 0; + FUN_1800015d0((int *)(_Dst + 1)); + _Dst[0x44] = 0; + _Dst[0x45] = 0; + _Dst[0x47] = 0; + *(undefined4 *)((longlong)_Dst + 0x27c) = 0; + _Dst[0x48] = 0; + _Dst[0x49] = 0x3fef5c28f5c28f5c; + _Dst[0x53] = 0; + _Dst[0x54] = 0xffffffffffffffff; + _Dst[0x51] = 0x4040000000000000; + _Dst[0x52] = 0x4044000000000000; + _Dst[0x50] = 0x4042800000000000; + *(undefined2 *)(_Dst + 0x55) = 0; + if (DAT_180015fe8 == (undefined8 *)0x0) { + puVar2 = (undefined8 *)FUN_18000c554(0x78); + *puVar2 = 0; + puVar2[1] = 0; + puVar2[2] = 0; + puVar2[3] = 0; + puVar2[4] = 0; + puVar2[5] = 0; + puVar2[6] = 0; + puVar2[7] = 0; + puVar2[8] = 0; + puVar2[9] = 0; + puVar2[10] = 0; + puVar2[0xb] = 0; + puVar2[0xc] = 0; + puVar2[0xd] = 0; + puVar2[0xe] = 0; + DAT_180015fe8 = FUN_18000a510(puVar2); + } + puVar2 = DAT_180015fe8; + _Dst[0x46] = DAT_180015fe8; + puVar1 = (undefined8 *)puVar2[0xd]; + for (puVar2 = (undefined8 *)puVar2[0xc]; puVar2 != puVar1; puVar2 = puVar2 + 1) { + lVar3 = __RTDynamicCast(*puVar2,0,&TCMVirtualDevice::RTTI_Type_Descriptor, + &EloProximityDevice::RTTI_Type_Descriptor,0); + if (lVar3 != 0) { + *(undefined8 **)(lVar3 + 0xd8) = _Dst; + DAT_180015ff8 = _Dst; + return _Dst; + } + } + } + DAT_180015ff8 = _Dst; + return _Dst; +} + + +================================================================== + +### EXPORT FUNC 18000b6f0 (425 bytes) name=FUN_18000b6f0 + +undefined8 FUN_18000b6f0(longlong param_1,undefined4 *param_2,undefined *param_3,undefined8 param_4) + +{ + undefined4 *puVar1; + undefined1 uVar2; + int iVar3; + undefined8 uVar4; + ulonglong uVar5; + uint7 uVar6; + code *pcVar7; + + if (*(int *)(param_1 + 8) != 0) { + MAG_EnumCameras(*(undefined4 *)(param_1 + 0x18)); + Sleep(0x32); + if (*(int *)(param_1 + 8) != 0) { + param_2 = (undefined4 *)0x0; + iVar3 = MAG_GetTerminalList(0); + if (iVar3 != 0) { + param_2 = (undefined4 *)0x0; + param_3 = (code *)0x3e8; + iVar3 = MAG_LinkCamera(*(undefined4 *)(param_1 + 0x18)); + if (iVar3 != 0) { + puVar1 = (undefined4 *)(param_1 + 0x1c); + param_3 = (code *)0x48; + param_2 = puVar1; + MAG_GetCamInfo(*(undefined4 *)(param_1 + 0x18)); + if (puVar1 != (undefined4 *)0x0) { + *(undefined4 *)(param_1 + 0x200) = *puVar1; + *(undefined4 *)(param_1 + 0x204) = *(undefined4 *)(param_1 + 0x20); + *(undefined4 *)(param_1 + 0x208) = *(undefined4 *)(param_1 + 0x5c); + *(undefined4 *)(param_1 + 0x20c) = *(undefined4 *)(param_1 + 0x60); + *(undefined4 *)(param_1 + 0x210) = 0x10; + *(undefined4 *)(param_1 + 0x214) = *(undefined4 *)(param_1 + 0x60); + MAG_GetFixPara(*(undefined4 *)(param_1 + 0x18),param_1 + 0x250); + *(undefined4 *)(param_1 + 0x250) = 0x3f266666; + *(float *)(param_1 + 0x254) = (float)*(double *)(param_1 + 0x248); + MAG_SetFixPara(*(undefined4 *)(param_1 + 0x18),param_1 + 0x250,2); + iVar3 = *(int *)(param_1 + 0x208) * *(int *)(param_1 + 0x20c) * 3; + *(int *)(param_1 + 0x218) = iVar3; + uVar4 = thunk_FUN_18000c554((longlong)iVar3); + pcVar7 = FUN_18000b4b0; + param_4 = 2; + *(undefined8 *)(param_1 + 0x220) = uVar4; + param_2 = (undefined4 *)(param_1 + 0x200); + iVar3 = MAG_StartProcessImage(*(undefined4 *)(param_1 + 0x18)); + if (iVar3 != 0) { + param_2 = (undefined4 *)0x2; + MAG_SetColorPalette(*(undefined4 *)(param_1 + 0x18)); + uVar2 = 1; + param_3 = pcVar7; + goto LAB_18000b84d; + } + MAG_DisLinkCamera(); + param_3 = pcVar7; + } + } + } + } + } + uVar2 = 0; +LAB_18000b84d: + *(undefined1 *)(param_1 + 0x2a8) = uVar2; + uVar5 = FUN_18000a960(*(longlong *)(param_1 + 0x230),param_2,param_3,param_4); + *(char *)(param_1 + 0x2a9) = (char)uVar5; + uVar6 = (uint7)(uVar5 >> 8); + if ((*(char *)(param_1 + 0x2a8) != '\0') && ((char)uVar5 != '\0')) { + return CONCAT71(uVar6,1); + } + return (ulonglong)uVar6 << 8; +} + + +================================================================== + +### EXPORT FUNC 18000b8a0 (177 bytes) name=FUN_18000b8a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000b8a0(longlong param_1,int param_2) + +{ + DWORD DVar1; + float fVar2; + + *(int *)(param_1 + 0x2a0) = param_2; + if (*(code **)(param_1 + 0x238) != (code *)0x0) { + fVar2 = (float)param_2; + if (param_2 < 0) { + (**(code **)(param_1 + 0x238))(fVar2); + DVar1 = GetTickCount(); + if ((60000 < DVar1 - *(int *)(param_1 + 0x244)) && (5000 < DVar1 - *(int *)(param_1 + 0x2a4))) + { + if (*(int *)(param_1 + 8) != 0) { + MAG_TriggerFFC(*(undefined4 *)(param_1 + 0x18)); + } + DVar1 = GetTickCount(); + *(DWORD *)(param_1 + 0x244) = DVar1; + return; + } + } + else { + DVar1 = GetTickCount(); + *(DWORD *)(param_1 + 0x2a4) = DVar1; + if (*(int *)(param_1 + 0x27c) != 0) { + fVar2 = fVar2 * _DAT_1800101e0; + } + (**(code **)(param_1 + 0x238))(fVar2); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000b960 (460 bytes) name=FUN_18000b960 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +double * FUN_18000b960(longlong param_1,double *param_2,uint param_3,uint param_4) + +{ + double dVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + float fVar8; + double dVar9; + double dVar10; + + if ((param_3 < 0xa0) && (param_4 < 0x78)) { + uVar2 = MAG_GetTemperatureProbe(*(undefined4 *)(param_1 + 0x18),param_3,param_4,3); + iVar3 = MAG_FixTemperature(*(undefined4 *)(param_1 + 0x18),uVar2); + iVar4 = 0; + if (-1 < (int)(param_3 - 1)) { + iVar4 = param_3 - 1; + } + iVar7 = 0x9f; + if ((int)(param_3 + 1) < 0x9f) { + iVar7 = param_3 + 1; + } + iVar6 = 0; + if (-1 < (int)(param_4 - 1)) { + iVar6 = param_4 - 1; + } + dVar10 = (double)iVar3 * _DAT_1800101e8; + iVar3 = 0x77; + if ((int)(param_4 + 1) < 0x77) { + iVar3 = param_4 + 1; + } + iVar3 = MAG_EstimateUnderArmTempFromForeheadRect + (*(undefined4 *)(param_1 + 0x18),iVar4,iVar6,iVar7,iVar3); + iVar4 = *(int *)(param_1 + 0x27c); + dVar9 = (double)iVar3 * _DAT_1800101e8; + if (iVar4 == 1) { + dVar10 = dVar10 * _DAT_1800101f0 + _DAT_1800101f8; + dVar9 = dVar9 * _DAT_1800101f0 + _DAT_1800101f8; + } + dVar1 = *(double *)(param_1 + 0x298); + dVar9 = dVar9 + dVar1; + if ((*(double *)(param_1 + 0x290) <= dVar9 && dVar9 != *(double *)(param_1 + 0x290)) || + (dVar9 < *(double *)(param_1 + 0x288))) { + uVar5 = 0xffffffff; + } + else { + uVar5 = (uint)(*(double *)(param_1 + 0x280) <= dVar9); + } + *(uint *)((longlong)param_2 + 0x24) = uVar5; + *(int *)(param_2 + 4) = iVar4; + fVar8 = (float)(int)param_4 / _DAT_180010200; + *param_2 = (double)((float)(int)param_3 / _DAT_180010204); + param_2[2] = dVar10 + dVar1; + param_2[1] = (double)fVar8; + param_2[3] = dVar9; + } + else { + *(undefined4 *)((longlong)param_2 + 0x24) = 0xfa0a1f00; + *param_2 = -1.0; + param_2[1] = -1.0; + param_2[3] = -100000000.0; + param_2[2] = -100000000.0; + *(undefined4 *)(param_2 + 4) = *(undefined4 *)(param_1 + 0x27c); + } + return param_2; +} + + +================================================================== + +### EXPORT FUNC 18000bb30 (6 bytes) name=GetSDKVersion + +undefined8 GetSDKVersion(void) + +{ + /* 0xbb30 2 GetSDKVersion */ + return 10000; +} + + +================================================================== + +### EXPORT FUNC 18000bb40 (21 bytes) name=Start + +void Start(undefined8 param_1,undefined4 *param_2,undefined *param_3,undefined8 param_4) + +{ + undefined8 *puVar1; + + /* 0xbb40 16 Start */ + puVar1 = FUN_18000b530(); + FUN_18000b6f0((longlong)puVar1,param_2,param_3,param_4); + return; +} + + +================================================================== + +### EXPORT FUNC 18000bb60 (152 bytes) name=Stop + +void Stop(void) + +{ + int iVar1; + undefined8 *puVar2; + + /* 0xbb60 18 Stop */ + puVar2 = FUN_18000b530(); + iVar1 = MAG_IsProcessingImage(*(undefined4 *)(puVar2 + 3)); + if (iVar1 != 0) { + if (*(int *)(puVar2 + 0x3e) != 0) { + MAG_LocalStorageAviStop(*(undefined4 *)(puVar2 + 3)); + *(undefined4 *)(puVar2 + 0x3e) = 0; + } + if (*(int *)((longlong)puVar2 + 500) != 0) { + MAG_LocalStorageMgsStop(*(undefined4 *)(puVar2 + 3)); + *(undefined8 *)((longlong)puVar2 + 500) = 0; + } + MAG_StopProcessImage(*(undefined4 *)(puVar2 + 3)); + } + iVar1 = MAG_IsLinked(*(undefined4 *)(puVar2 + 3)); + if (iVar1 != 0) { + MAG_DisLinkCamera(*(undefined4 *)(puVar2 + 3)); + } + *(undefined1 *)(puVar2 + 0x55) = 0; + (**(code **)(*(longlong *)(puVar2[0x46] + 8) + 0x20))(); + *(undefined1 *)((longlong)puVar2 + 0x2a9) = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bc00 (41 bytes) name=IsWorking + +undefined8 IsWorking(void) + +{ + undefined8 *puVar1; + uint7 uVar2; + + /* 0xbc00 4 IsWorking */ + puVar1 = FUN_18000b530(); + uVar2 = (uint7)((ulonglong)puVar1 >> 8); + if ((*(char *)(puVar1 + 0x55) != '\0') && (*(char *)((longlong)puVar1 + 0x2a9) != '\0')) { + return CONCAT71(uVar2,1); + } + return (ulonglong)uVar2 << 8; +} + + +================================================================== + +### EXPORT FUNC 18000bc30 (27 bytes) name=SetNewIRFrameDelegate + +void SetNewIRFrameDelegate(undefined8 param_1) + +{ + undefined8 *puVar1; + + /* 0xbc30 11 SetNewIRFrameDelegate */ + puVar1 = FUN_18000b530(); + puVar1[0x45] = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bc50 (27 bytes) name=SetNewDistanceDelegate + +void SetNewDistanceDelegate(undefined8 param_1) + +{ + undefined8 *puVar1; + + /* 0xbc50 10 SetNewDistanceDelegate */ + puVar1 = FUN_18000b530(); + puVar1[0x47] = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bc70 (122 bytes) name=ReadTemperatureAtPoint + +void ReadTemperatureAtPoint(uint param_1,uint param_2,double *param_3) + +{ + undefined8 *puVar1; + double local_38; + double dStack_30; + double local_28; + double dStack_20; + double local_18; + + /* 0xbc70 5 ReadTemperatureAtPoint */ + puVar1 = FUN_18000b530(); + MAG_LockFrame(*(undefined4 *)(puVar1 + 3)); + FUN_18000b960((longlong)puVar1,&local_38,param_1,param_2); + MAG_UnLockFrame(*(undefined4 *)(puVar1 + 3)); + *param_3 = local_38; + param_3[1] = dStack_30; + param_3[2] = local_28; + param_3[3] = dStack_20; + param_3[4] = local_18; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bcf0 (361 bytes) name=ReadTemperatureInRect + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void ReadTemperatureInRect(int param_1,int param_2,int param_3,int param_4,undefined4 *param_5) + +{ + int iVar1; + char cVar2; + undefined8 *puVar3; + uint uVar4; + undefined1 auStack_c8 [32]; + int local_a8; + undefined8 *local_a0; + undefined4 local_98; + undefined4 uStack_94; + undefined4 uStack_90; + undefined4 uStack_8c; + undefined4 local_88; + undefined4 uStack_84; + undefined4 uStack_80; + undefined4 uStack_7c; + undefined4 local_78; + undefined4 uStack_74; + undefined8 local_70; + undefined8 uStack_68; + int local_60; + ulonglong local_58; + + /* 0xbcf0 6 ReadTemperatureInRect */ + local_58 = DAT_180015010 ^ (ulonglong)auStack_c8; + puVar3 = FUN_18000b530(); + MAG_LockFrame(*(undefined4 *)(puVar3 + 3)); + local_60 = 0; + local_a8 = 0; + if (-1 < param_2) { + local_a8 = param_2; + } + local_70 = 0; + uStack_68 = 0; + iVar1 = local_a8 + param_4; + if (0x77 < local_a8 + param_4) { + iVar1 = 0x77; + } + local_a8 = 0x77 - local_a8; + local_a0 = &local_70; + cVar2 = MAG_GetRectTemperatureInfo + (*(undefined4 *)(puVar3 + 3),param_1,0x77 - iVar1,param_3 + param_1); + if (cVar2 == '\0') { + local_78 = *(undefined4 *)((longlong)puVar3 + 0x27c); + local_88 = _DAT_180010220; + uStack_84 = _UNK_180010224; + uStack_80 = _UNK_180010228; + uStack_7c = _UNK_18001022c; + uStack_74 = 0xfa0a1f00; + local_98 = _DAT_180010210; + uStack_94 = _UNK_180010214; + uStack_90 = _UNK_180010218; + uStack_8c = _UNK_18001021c; + } + else { + iVar1 = local_60 / 0xa0; + uVar4 = local_60 % 0xa0; + local_a8 = iVar1; + MAG_FixTemperature(*(undefined4 *)(puVar3 + 3),local_70._4_4_, + *(undefined4 *)((longlong)puVar3 + 0x254),uVar4); + FUN_18000b960((longlong)puVar3,(double *)&local_98,uVar4,0x78 - iVar1); + } + MAG_UnLockFrame(*(undefined4 *)(puVar3 + 3)); + *param_5 = local_98; + param_5[1] = uStack_94; + param_5[2] = uStack_90; + param_5[3] = uStack_8c; + *(ulonglong *)(param_5 + 4) = CONCAT44(uStack_84,local_88); + *(ulonglong *)(param_5 + 6) = CONCAT44(uStack_7c,uStack_80); + *(ulonglong *)(param_5 + 8) = CONCAT44(uStack_74,local_78); + return; +} + + +================================================================== + +### EXPORT FUNC 18000be60 (81 bytes) name=SetTempBoundary + +void SetTempBoundary(undefined8 param_1,undefined8 param_2,undefined8 param_3) + +{ + undefined8 *puVar1; + + /* 0xbe60 12 SetTempBoundary */ + puVar1 = FUN_18000b530(); + puVar1[0x51] = param_1; + puVar1[0x52] = param_2; + puVar1[0x50] = param_3; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bec0 (35 bytes) name=SetTempOffset + +void SetTempOffset(undefined8 param_1) + +{ + undefined8 *puVar1; + + /* 0xbec0 13 SetTempOffset */ + puVar1 = FUN_18000b530(); + puVar1[0x53] = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bef0 (25 bytes) name=SetUnitMode + +void SetUnitMode(undefined4 param_1) + +{ + undefined8 *puVar1; + + /* 0xbef0 14 SetUnitMode */ + puVar1 = FUN_18000b530(); + *(undefined4 *)((longlong)puVar1 + 0x27c) = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000bf10 (124 bytes) name=Rotate + +void Rotate(int param_1) + +{ + undefined8 *puVar1; + longlong lVar2; + undefined8 *puVar3; + + /* 0xbf10 7 Rotate */ + puVar1 = FUN_18000b530(); + puVar3 = *(undefined8 **)(puVar1[0x46] + 0x60); + puVar1 = *(undefined8 **)(puVar1[0x46] + 0x68); + while( true ) { + if (puVar3 == puVar1) { + return; + } + lVar2 = __RTDynamicCast(*puVar3,0,&TCMVirtualDevice::RTTI_Type_Descriptor, + &EloMotorDevice::RTTI_Type_Descriptor,0); + if (lVar2 != 0) break; + puVar3 = puVar3 + 1; + } + FUN_180007a40(lVar2,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18000bf90 (59 bytes) name=GetInnerIRCameraTemp + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +double GetInnerIRCameraTemp(void) + +{ + undefined8 *puVar1; + double dVar2; + + /* 0xbf90 1 GetInnerIRCameraTemp */ + puVar1 = FUN_18000b530(); + dVar2 = (double)*(int *)(puVar1 + 0x48) * _DAT_1800101e8; + if (*(int *)((longlong)puVar1 + 0x27c) == 1) { + dVar2 = dVar2 * _DAT_1800101f0 + _DAT_1800101f8; + } + return dVar2; +} + + +================================================================== + +### EXPORT FUNC 18000bfd0 (88 bytes) name=SetEmissivity + +void SetEmissivity(double param_1) + +{ + undefined8 *puVar1; + + /* 0xbfd0 8 SetEmissivity */ + puVar1 = FUN_18000b530(); + if (*(int *)(puVar1 + 1) == 0) { + puVar1[0x49] = param_1; + return; + } + *(float *)((longlong)puVar1 + 0x254) = (float)param_1; + /* WARNING: Could not recover jumptable at 0x00018000c021. Too many branches */ + /* WARNING: Treating indirect jump as call */ + MAG_SetFixPara(*(undefined4 *)(puVar1 + 3),puVar1 + 0x4a,2); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c030 (47 bytes) name=Trigger + +void Trigger(void) + +{ + DWORD DVar1; + undefined8 *puVar2; + + /* 0xc030 19 Trigger */ + puVar2 = FUN_18000b530(); + if (*(int *)(puVar2 + 1) != 0) { + MAG_TriggerFFC(*(undefined4 *)(puVar2 + 3)); + } + DVar1 = GetTickCount(); + *(DWORD *)((longlong)puVar2 + 0x244) = DVar1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000c060 (255 bytes) name=GetTCMVersion + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Type propagation algorithm not settling */ + +void GetTCMVersion(void *param_1) + +{ + undefined8 *puVar1; + longlong lVar2; + undefined8 *******pppppppuVar3; + undefined8 *puVar4; + TypeDescriptor *pTVar5; + TypeDescriptor *pTVar6; + undefined1 auStack_68 [32]; + undefined4 local_48; + undefined8 *******local_38 [2]; + int local_28; + ulonglong local_20; + ulonglong local_18; + + /* 0xc060 3 GetTCMVersion */ + local_18 = DAT_180015010 ^ (ulonglong)auStack_68; + puVar1 = FUN_18000b530(); + puVar4 = *(undefined8 **)(puVar1[0x46] + 0x60); + puVar1 = *(undefined8 **)(puVar1[0x46] + 0x68); + while( true ) { + if (puVar4 == puVar1) { + return; + } + pTVar6 = &EloTCMUpdaterDevice::RTTI_Type_Descriptor; + pTVar5 = &TCMVirtualDevice::RTTI_Type_Descriptor; + local_48 = 0; + lVar2 = __RTDynamicCast(*puVar4,0); + if (lVar2 != 0) break; + puVar4 = puVar4 + 1; + } + FUN_180009000(lVar2,local_38,pTVar5,(longlong)pTVar6); + pppppppuVar3 = local_38; + if (0xf < local_20) { + pppppppuVar3 = local_38[0]; + } + memcpy(param_1,pppppppuVar3,(longlong)local_28); + if (local_20 < 0x10) { + return; + } + pppppppuVar3 = local_38[0]; + if ((0xfff < local_20 + 1) && + (pppppppuVar3 = (undefined8 *******)local_38[0][-1], + 0x1f < (ulonglong)((longlong)local_38[0] + (-8 - (longlong)pppppppuVar3)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pppppppuVar3); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c160 (405 bytes) name=SetFirmwareData + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void SetFirmwareData(void *param_1,int param_2) + +{ + void *_Src; + longlong lVar1; + undefined8 *puVar2; + longlong lVar3; + undefined8 *puVar4; + void *pvVar5; + ulonglong _Size; + void **ppvVar6; + undefined1 auStack_78 [32]; + undefined4 local_58; + void *local_48; + undefined8 uStack_40; + longlong local_38; + ulonglong local_30; + + /* 0xc160 9 SetFirmwareData */ + local_30 = DAT_180015010 ^ (ulonglong)auStack_78; + _Size = (ulonglong)param_2; + puVar2 = FUN_18000b530(); + puVar4 = *(undefined8 **)(puVar2[0x46] + 0x60); + puVar2 = *(undefined8 **)(puVar2[0x46] + 0x68); + while( true ) { + if (puVar4 == puVar2) { + return; + } + local_58 = 0; + lVar3 = __RTDynamicCast(*puVar4,0,&TCMVirtualDevice::RTTI_Type_Descriptor, + &EloTCMUpdaterDevice::RTTI_Type_Descriptor); + if (lVar3 != 0) break; + puVar4 = puVar4 + 1; + } + local_38 = 0; + local_48 = (void *)0x0; + uStack_40 = 0; + if (param_2 != 0) { + if (0x7fffffffffffffff < _Size) { + /* WARNING: Subroutine does not return */ + FUN_180002b80(); + } + FUN_18000c470((longlong *)&local_48,_Size); + } + if ((ulonglong)(local_38 - (longlong)local_48) < _Size) { + FUN_180002ba0((ulonglong *)&local_48,_Size); + } + lVar1 = local_38; + _Src = local_48; + memmove(local_48,param_1,_Size); + ppvVar6 = (void **)(lVar3 + 0x100); + if (ppvVar6 != &local_48) { + pvVar5 = *ppvVar6; + if ((ulonglong)(*(longlong *)(lVar3 + 0x110) - (longlong)pvVar5) < _Size) { + FUN_180002ba0((ulonglong *)ppvVar6,_Size); + pvVar5 = *ppvVar6; + } + memmove(pvVar5,_Src,_Size); + *(ulonglong *)(lVar3 + 0x108) = (longlong)pvVar5 + _Size; + } + if (_Src == (void *)0x0) { + return; + } + pvVar5 = _Src; + if ((0xfff < (ulonglong)(lVar1 - (longlong)_Src)) && + (pvVar5 = *(void **)((longlong)_Src + -8), + 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar5)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(pvVar5); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c300 (122 bytes) name=SetUpdateCallback + +void SetUpdateCallback(undefined8 param_1) + +{ + undefined8 *puVar1; + longlong lVar2; + undefined8 *puVar3; + + /* 0xc300 15 SetUpdateCallback */ + puVar1 = FUN_18000b530(); + puVar3 = *(undefined8 **)(puVar1[0x46] + 0x60); + puVar1 = *(undefined8 **)(puVar1[0x46] + 0x68); + while( true ) { + if (puVar3 == puVar1) { + return; + } + lVar2 = __RTDynamicCast(*puVar3,0,&TCMVirtualDevice::RTTI_Type_Descriptor, + &EloTCMUpdaterDevice::RTTI_Type_Descriptor,0); + if (lVar2 != 0) break; + puVar3 = puVar3 + 1; + } + *(undefined8 *)(lVar2 + 0xd8) = param_1; + return; +} + + +================================================================== + +### EXPORT FUNC 18000c380 (227 bytes) name=StartUpdate + +void StartUpdate(void) + +{ + code *pcVar1; + undefined8 *puVar2; + longlong lVar3; + longlong *_ArgList; + uintptr_t uVar4; + undefined8 *puVar5; + uint uStack_10; + undefined4 uStack_c; + + /* 0xc380 17 StartUpdate */ + puVar2 = FUN_18000b530(); + puVar5 = *(undefined8 **)(puVar2[0x46] + 0x60); + puVar2 = *(undefined8 **)(puVar2[0x46] + 0x68); + while( true ) { + if (puVar5 == puVar2) { + return; + } + lVar3 = __RTDynamicCast(*puVar5,0,&TCMVirtualDevice::RTTI_Type_Descriptor, + &EloTCMUpdaterDevice::RTTI_Type_Descriptor,0); + if (lVar3 != 0) break; + puVar5 = puVar5 + 1; + } + _ArgList = (longlong *)FUN_18000c554(0x10); + _ArgList[1] = (longlong)FUN_1800091e0; + *_ArgList = lVar3; + uVar4 = _beginthreadex((void *)0x0,0,FUN_180007930,_ArgList,0,&uStack_10); + if (uVar4 != 0) { + if (*(int *)(lVar3 + 0x120) == 0) { + *(uintptr_t *)(lVar3 + 0x118) = uVar4; + *(ulonglong *)(lVar3 + 0x120) = CONCAT44(uStack_c,uStack_10); + return; + } + /* WARNING: Subroutine does not return */ + terminate(); + } + uStack_10 = 0; + std::_Throw_Cpp_error(6); + pcVar1 = (code *)swi(3); + (*pcVar1)(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c470 (161 bytes) name=FUN_18000c470 + +void FUN_18000c470(longlong *param_1,ulonglong param_2) + +{ + longlong lVar1; + longlong lVar2; + longlong lVar3; + void *_Dst; + + lVar1 = param_1[1]; + lVar2 = *param_1; + if (param_2 < 0x1000) { + if (param_2 == 0) { + _Dst = (void *)0x0; + } + else { + _Dst = (void *)FUN_18000c554(param_2); + } + } + else { + if (param_2 + 0x27 <= param_2) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + lVar3 = FUN_18000c554(param_2 + 0x27); + if (lVar3 == 0) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); + *(longlong *)((longlong)_Dst - 8) = lVar3; + } + memmove(_Dst,(void *)*param_1,param_1[1] - *param_1); + FUN_180007280(param_1,(longlong)_Dst,lVar1 - lVar2,param_2); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c530 (33 bytes) name=__security_check_cookie + +/* WARNING: This is an inlined function */ +/* Library Function - Single Match + __security_check_cookie + + Libraries: Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 */ + +void __cdecl __security_check_cookie(uintptr_t _StackCookie) + +{ + if ((_StackCookie == DAT_180015010) && ((short)(_StackCookie >> 0x30) == 0)) { + return; + } + /* WARNING: Subroutine does not return */ + __report_gsfailure(_StackCookie); +} + + +================================================================== + +### EXPORT FUNC 18000c554 (58 bytes) name=FUN_18000c554 + +void FUN_18000c554(size_t param_1) + +{ + int iVar1; + void *pvVar2; + + do { + pvVar2 = malloc(param_1); + if (pvVar2 != (void *)0x0) { + return; + } + iVar1 = _callnewh(param_1); + } while (iVar1 != 0); + if (param_1 == 0xffffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + /* WARNING: Subroutine does not return */ + FUN_18000d200(); +} + + +================================================================== + +### EXPORT FUNC 18000c590 (57 bytes) name=__scrt_acquire_startup_lock + +/* Library Function - Single Match + __scrt_acquire_startup_lock + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +ulonglong __scrt_acquire_startup_lock(void) + +{ + ulonglong uVar1; + bool bVar2; + undefined7 extraout_var; + ulonglong uVar3; + + bVar2 = __scrt_is_ucrt_dll_in_use(); + uVar3 = CONCAT71(extraout_var,bVar2); + if ((int)uVar3 == 0) { +LAB_18000c5be: + uVar3 = uVar3 & 0xffffffffffffff00; + } + else { + do { + uVar3 = 0; + LOCK(); + bVar2 = DAT_1800159a8 == 0; + uVar1 = *(ulonglong *)((longlong)Self + 8); + if (!bVar2) { + uVar3 = DAT_1800159a8; + uVar1 = DAT_1800159a8; + } + DAT_1800159a8 = uVar1; + UNLOCK(); + if (bVar2) goto LAB_18000c5be; + } while (*(ulonglong *)((longlong)Self + 8) != uVar3); + uVar3 = CONCAT71((int7)(uVar3 >> 8),1); + } + return uVar3; +} + + +================================================================== + +### EXPORT FUNC 18000c5cc (52 bytes) name=__scrt_dllmain_after_initialize_c + +/* Library Function - Single Match + __scrt_dllmain_after_initialize_c + + Library: Visual Studio 2019 Release */ + +undefined8 __scrt_dllmain_after_initialize_c(void) + +{ + bool bVar1; + undefined7 extraout_var; + undefined8 uVar2; + ulonglong uVar3; + + bVar1 = __scrt_is_ucrt_dll_in_use(); + if ((int)CONCAT71(extraout_var,bVar1) == 0) { + uVar3 = FUN_180001540(); + uVar3 = _configure_narrow_argv(uVar3 & 0xffffffff); + if ((int)uVar3 != 0) { + return uVar3 & 0xffffffffffffff00; + } + uVar2 = _initialize_narrow_environment(); + } + else { + uVar2 = __isa_available_init(); + } + return CONCAT71((int7)((ulonglong)uVar2 >> 8),1); +} + + +================================================================== + +### EXPORT FUNC 18000c600 (21 bytes) name=FUN_18000c600 + +bool FUN_18000c600(void) + +{ + undefined8 uVar1; + + uVar1 = FUN_18000c748(0); + return (char)uVar1 != '\0'; +} + + +================================================================== + +### EXPORT FUNC 18000c618 (40 bytes) name=FUN_18000c618 + +undefined1 FUN_18000c618(void) + +{ + char cVar1; + + cVar1 = FUN_18000d750(); + if (cVar1 != '\0') { + cVar1 = FUN_18000d750(); + if (cVar1 != '\0') { + return 1; + } + FUN_18000d750(); + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000c640 (21 bytes) name=FUN_18000c640 + +undefined1 FUN_18000c640(void) + +{ + FUN_18000d750(); + FUN_18000d750(); + return 1; +} + + +================================================================== + +### EXPORT FUNC 18000c658 (96 bytes) name=__scrt_dllmain_exception_filter + +/* Library Function - Single Match + __scrt_dllmain_exception_filter + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __scrt_dllmain_exception_filter + (undefined8 param_1,int param_2,undefined8 param_3,undefined *param_4, + undefined4 param_5,undefined8 param_6) + +{ + bool bVar1; + undefined7 extraout_var; + + bVar1 = __scrt_is_ucrt_dll_in_use(); + if (((int)CONCAT71(extraout_var,bVar1) == 0) && (param_2 == 1)) { + (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,0,param_3); + } + _seh_filter_dll(param_5,param_6); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c6b8 (48 bytes) name=__scrt_dllmain_uninitialize_c + +/* Library Function - Single Match + __scrt_dllmain_uninitialize_c + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __scrt_dllmain_uninitialize_c(void) + +{ + bool bVar1; + undefined7 extraout_var; + undefined8 uVar2; + + bVar1 = __scrt_is_ucrt_dll_in_use(); + if ((int)CONCAT71(extraout_var,bVar1) != 0) { + _execute_onexit_table(&DAT_1800159b8); + return; + } + uVar2 = FUN_18000d754(); + if ((int)uVar2 == 0) { + _cexit(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000c6e8 (20 bytes) name=FUN_18000c6e8 + +void FUN_18000c6e8(void) + +{ + FUN_18000d750(); + FUN_18000d750(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c6fc (73 bytes) name=__scrt_initialize_crt + +/* Library Function - Single Match + __scrt_initialize_crt + + Library: Visual Studio 2019 Release */ + +longlong __scrt_initialize_crt(int param_1) + +{ + char cVar1; + uint7 extraout_var; + uint7 uVar2; + undefined7 extraout_var_00; + uint7 extraout_var_01; + + if (param_1 == 0) { + DAT_1800159b0 = 1; + } + __isa_available_init(); + cVar1 = FUN_18000d750(); + uVar2 = extraout_var; + if (cVar1 != '\0') { + cVar1 = FUN_18000d750(); + if (cVar1 != '\0') { + return CONCAT71(extraout_var_00,1); + } + FUN_18000d750(); + uVar2 = extraout_var_01; + } + return (ulonglong)uVar2 << 8; +} + + +================================================================== + +### EXPORT FUNC 18000c748 (138 bytes) name=FUN_18000c748 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_18000c748(uint param_1) + +{ + bool bVar1; + ulonglong in_RAX; + undefined7 extraout_var; + + if (DAT_1800159b1 == '\0') { + if (1 < param_1) { + /* WARNING: Subroutine does not return */ + __scrt_fastfail(5); + } + bVar1 = __scrt_is_ucrt_dll_in_use(); + if (((int)CONCAT71(extraout_var,bVar1) == 0) || (param_1 != 0)) { + in_RAX = 0xffffffffffffffff; + DAT_1800159b8 = _DAT_18000f5f0; + uRam00000001800159c0 = _UNK_18000f5f8; + _DAT_1800159c8 = 0xffffffffffffffff; + _DAT_1800159d0 = _DAT_18000f5f0; + uRam00000001800159d8 = _UNK_18000f5f8; + _DAT_1800159e0 = 0xffffffffffffffff; + } + else { + in_RAX = _initialize_onexit_table(&DAT_1800159b8); + if (((int)in_RAX != 0) || + (in_RAX = _initialize_onexit_table(&DAT_1800159d0), (int)in_RAX != 0)) { + return in_RAX & 0xffffffffffffff00; + } + } + DAT_1800159b1 = '\x01'; + } + return CONCAT71((int7)(in_RAX >> 8),1); +} + + +================================================================== + +### EXPORT FUNC 18000c7d4 (150 bytes) name=__scrt_is_nonwritable_in_current_image + +/* Library Function - Single Match + __scrt_is_nonwritable_in_current_image + + Library: Visual Studio 2019 Release */ + +ulonglong __scrt_is_nonwritable_in_current_image(longlong param_1) + +{ + ulonglong uVar1; + uint7 uVar2; + longlong lVar3; + longlong lVar4; + + uVar1 = 0x5a4d; + if (((IMAGE_DOS_HEADER_180000000.e_magic == (char [2])0x5a4d) && + (lVar3 = (longlong)(int)IMAGE_DOS_HEADER_180000000.e_lfanew, + *(int *)(lVar3 + 0x180000000) == 0x4550)) && + (uVar1 = 0x20b, *(short *)((longlong)IMAGE_DOS_HEADER_180000000.e_res_4_ + lVar3 + -4) == 0x20b + )) { + lVar4 = lVar3 + 0x180000018 + + (ulonglong)*(ushort *)((longlong)IMAGE_DOS_HEADER_180000000.e_res_4_ + lVar3 + -8); + uVar1 = (ulonglong)*(ushort *)(IMAGE_DOS_HEADER_180000000.e_magic + lVar3 + 6); + lVar3 = lVar4 + uVar1 * 0x28; + for (; lVar4 != lVar3; lVar4 = lVar4 + 0x28) { + if (((ulonglong)*(uint *)(lVar4 + 0xc) <= param_1 - 0x180000000U) && + (uVar1 = (ulonglong)(*(int *)(lVar4 + 8) + *(uint *)(lVar4 + 0xc)), + param_1 - 0x180000000U < uVar1)) goto LAB_18000c84a; + } + lVar4 = 0; +LAB_18000c84a: + if (lVar4 == 0) { + uVar1 = uVar1 & 0xffffffffffffff00; + } + else { + uVar2 = (uint7)(uVar1 >> 8); + if (*(int *)(lVar4 + 0x24) < 0) { + uVar1 = (ulonglong)uVar2 << 8; + } + else { + uVar1 = CONCAT71(uVar2,1); + } + } + } + else { + uVar1 = uVar1 & 0xffffffffffffff00; + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18000c86c (36 bytes) name=__scrt_release_startup_lock + +/* Library Function - Single Match + __scrt_release_startup_lock + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __scrt_release_startup_lock(char param_1) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = __scrt_is_ucrt_dll_in_use(); + if ((CONCAT31(extraout_var,bVar1) != 0) && (param_1 == '\0')) { + LOCK(); + DAT_1800159a8 = 0; + UNLOCK(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000c890 (41 bytes) name=__scrt_uninitialize_crt + +/* Library Function - Single Match + __scrt_uninitialize_crt + + Library: Visual Studio 2019 Release */ + +undefined1 __scrt_uninitialize_crt(undefined8 param_1,char param_2) + +{ + if ((DAT_1800159b0 == '\0') || (param_2 == '\0')) { + FUN_18000d750(); + FUN_18000d750(); + } + return 1; +} + + +================================================================== + +### EXPORT FUNC 18000c8bc (58 bytes) name=_onexit + +/* Library Function - Single Match + _onexit + + Library: Visual Studio 2019 Release */ + +_onexit_t __cdecl _onexit(_onexit_t _Func) + +{ + int iVar1; + _onexit_t p_Var2; + + if (DAT_1800159b8 == -1) { + iVar1 = _crt_atexit(); + } + else { + iVar1 = _register_onexit_function(&DAT_1800159b8); + } + p_Var2 = (_onexit_t)0x0; + if (iVar1 == 0) { + p_Var2 = _Func; + } + return p_Var2; +} + + +================================================================== + +### EXPORT FUNC 18000c8f8 (23 bytes) name=atexit + +/* Library Function - Single Match + atexit + + Library: Visual Studio 2019 Release */ + +int __cdecl atexit(_func_5014 *param_1) + +{ + _onexit_t p_Var1; + + p_Var1 = _onexit((_onexit_t)param_1); + return (p_Var1 != (_onexit_t)0x0) - 1; +} + + +================================================================== + +### EXPORT FUNC 18000c910 (5 bytes) name=free + +void __cdecl free(void *_Memory) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d742. Too many branches */ + /* WARNING: Treating indirect jump as call */ + free(_Memory); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c918 (43 bytes) name=FUN_18000c918 + +undefined8 * FUN_18000c918(undefined8 *param_1,ulonglong param_2) + +{ + *param_1 = type_info::vftable; + if ((param_2 & 1) != 0) { + free(param_1); + } + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000c944 (52 bytes) name=__raise_securityfailure + +/* Library Function - Single Match + __raise_securityfailure + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __raise_securityfailure(_EXCEPTION_POINTERS *param_1) + +{ + HANDLE pvVar1; + + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); + UnhandledExceptionFilter(param_1); + pvVar1 = GetCurrentProcess(); + /* WARNING: Could not recover jumptable at 0x00018000c971. Too many branches */ + /* WARNING: Treating indirect jump as call */ + TerminateProcess(pvVar1,0xc0000409); + return; +} + + +================================================================== + +### EXPORT FUNC 18000c978 (209 bytes) name=__report_gsfailure + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + __report_gsfailure + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __cdecl __report_gsfailure(uintptr_t _StackCookie) + +{ + code *pcVar1; + BOOL BVar2; + undefined1 *puVar3; + undefined1 auStack_38 [8]; + undefined1 auStack_30 [48]; + + puVar3 = auStack_38; + BVar2 = IsProcessorFeaturePresent(0x17); + if (BVar2 != 0) { + pcVar1 = (code *)swi(0x29); + (*pcVar1)(2); + puVar3 = auStack_30; + } + *(undefined8 *)(puVar3 + -8) = 0x18000c9a2; + capture_previous_context((PCONTEXT)&DAT_180015a90); + _DAT_180015a00 = *(undefined8 *)(puVar3 + 0x38); + _DAT_180015b28 = puVar3 + 0x40; + _DAT_180015b10 = *(undefined8 *)(puVar3 + 0x40); + _DAT_1800159f0 = 0xc0000409; + _DAT_1800159f4 = 1; + _DAT_180015a08 = 1; + DAT_180015a10 = 2; + *(undefined8 *)(puVar3 + 0x20) = DAT_180015010; + *(undefined8 *)(puVar3 + 0x28) = DAT_180015008; + *(undefined8 *)(puVar3 + -8) = 0x18000ca44; + DAT_180015b88 = _DAT_180015a00; + __raise_securityfailure((_EXCEPTION_POINTERS *)&PTR_DAT_18000f610); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ca4c (19 bytes) name=__report_rangecheckfailure + +/* Library Function - Single Match + __report_rangecheckfailure + + Libraries: Visual Studio 2012, Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 */ + +void __report_rangecheckfailure(void) + +{ + __report_securityfailure(8); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ca60 (155 bytes) name=__report_securityfailure + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + __report_securityfailure + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __report_securityfailure(undefined4 param_1) + +{ + code *pcVar1; + BOOL BVar2; + undefined1 *puVar3; + undefined1 auStack_28 [8]; + undefined1 auStack_20 [32]; + + puVar3 = auStack_28; + BVar2 = IsProcessorFeaturePresent(0x17); + if (BVar2 != 0) { + pcVar1 = (code *)swi(0x29); + (*pcVar1)(param_1); + puVar3 = auStack_20; + } + *(undefined8 *)(puVar3 + -8) = 0x18000ca8a; + capture_current_context((PCONTEXT)&DAT_180015a90); + _DAT_180015a00 = *(undefined8 *)(puVar3 + 0x28); + _DAT_180015b28 = puVar3 + 0x30; + _DAT_1800159f0 = 0xc0000409; + _DAT_1800159f4 = 1; + _DAT_180015a08 = 1; + DAT_180015a10 = (ulonglong)*(uint *)(puVar3 + 0x30); + *(undefined8 *)(puVar3 + -8) = 0x18000caf6; + DAT_180015b88 = _DAT_180015a00; + __raise_securityfailure((_EXCEPTION_POINTERS *)&PTR_DAT_18000f610); + return; +} + + +================================================================== + +### EXPORT FUNC 18000cafc (109 bytes) name=capture_current_context + +/* Library Function - Single Match + capture_current_context + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void capture_current_context(PCONTEXT param_1) + +{ + DWORD64 ControlPc; + PRUNTIME_FUNCTION FunctionEntry; + DWORD64 local_res8; + ulonglong local_res10; + PVOID local_res18; + + RtlCaptureContext(); + ControlPc = param_1->Rip; + FunctionEntry = RtlLookupFunctionEntry(ControlPc,&local_res8,(PUNWIND_HISTORY_TABLE)0x0); + if (FunctionEntry != (PRUNTIME_FUNCTION)0x0) { + RtlVirtualUnwind(0,local_res8,ControlPc,FunctionEntry,param_1,&local_res18,&local_res10, + (PKNONVOLATILE_CONTEXT_POINTERS)0x0); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000cb6c (113 bytes) name=capture_previous_context + +/* Library Function - Single Match + capture_previous_context + + Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void capture_previous_context(PCONTEXT param_1) + +{ + DWORD64 ControlPc; + PRUNTIME_FUNCTION FunctionEntry; + int iVar1; + DWORD64 local_res8; + ulonglong local_res10; + PVOID local_res18 [2]; + + RtlCaptureContext(); + ControlPc = param_1->Rip; + iVar1 = 0; + do { + FunctionEntry = RtlLookupFunctionEntry(ControlPc,&local_res8,(PUNWIND_HISTORY_TABLE)0x0); + if (FunctionEntry == (PRUNTIME_FUNCTION)0x0) { + return; + } + RtlVirtualUnwind(0,local_res8,ControlPc,FunctionEntry,param_1,local_res18,&local_res10, + (PKNONVOLATILE_CONTEXT_POINTERS)0x0); + iVar1 = iVar1 + 1; + } while (iVar1 < 2); + return; +} + + +================================================================== + +### EXPORT FUNC 18000cbe0 (207 bytes) name=FUN_18000cbe0 + +undefined8 FUN_18000cbe0(void) + +{ + HMODULE hModule; + FARPROC pFVar1; + FARPROC pFVar2; + undefined8 uVar3; + + InitializeCriticalSectionAndSpinCount((LPCRITICAL_SECTION)&DAT_180015f70,4000); + hModule = GetModuleHandleW(L"api-ms-win-core-synch-l1-2-0.dll"); + if ((hModule != (HMODULE)0x0) || + (hModule = GetModuleHandleW(L"kernel32.dll"), hModule != (HMODULE)0x0)) { + pFVar1 = GetProcAddress(hModule,"SleepConditionVariableCS"); + pFVar2 = GetProcAddress(hModule,"WakeAllConditionVariable"); + if ((((pFVar1 != (FARPROC)0x0) && (pFVar2 != (FARPROC)0x0)) || + (DAT_180015f68 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,1,0,(LPCWSTR)0x0), + pFVar1 = DAT_180015f98, pFVar2 = DAT_180015fa0, DAT_180015f68 != (HANDLE)0x0)) && + (DAT_180015fa0 = pFVar2, DAT_180015f98 = pFVar1, uVar3 = FUN_18000c748(0), + (char)uVar3 != '\0')) { + atexit(FUN_18000ccb0); + return 0; + } + } + /* WARNING: Subroutine does not return */ + __scrt_fastfail(7); +} + + +================================================================== + +### EXPORT FUNC 18000ccb0 (40 bytes) name=FUN_18000ccb0 + +void FUN_18000ccb0(void) + +{ + DeleteCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + if (DAT_180015f68 != (HANDLE)0x0) { + CloseHandle(DAT_180015f68); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000ccd8 (48 bytes) name=_Init_thread_abort + +/* Library Function - Single Match + _Init_thread_abort + + Library: Visual Studio 2019 Release */ + +void _Init_thread_abort(undefined4 *param_1) + +{ + EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + *param_1 = 0; + LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + _Init_thread_notify(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000cd08 (96 bytes) name=_Init_thread_footer + +/* Library Function - Single Match + _Init_thread_footer + + Library: Visual Studio 2019 Release */ + +void _Init_thread_footer(int *param_1) + +{ + ulonglong uVar1; + + EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + uVar1 = (ulonglong)_tls_index; + DAT_180015004 = DAT_180015004 + 1; + *param_1 = DAT_180015004; + *(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar1 * 8) + 4) = DAT_180015004; + LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + _Init_thread_notify(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000cd68 (103 bytes) name=_Init_thread_header + +/* Library Function - Single Match + _Init_thread_header + + Library: Visual Studio 2019 Release */ + +void _Init_thread_header(int *param_1) + +{ + EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + do { + if (*param_1 == 0) { + *param_1 = -1; +LAB_18000cdbc: + /* WARNING: Could not recover jumptable at 0x00018000cdc8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + return; + } + if (*param_1 != -1) { + *(undefined4 *) + (*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 4) = + DAT_180015004; + goto LAB_18000cdbc; + } + _Init_thread_wait(100); + } while( true ); +} + + +================================================================== + +### EXPORT FUNC 18000cdd0 (65 bytes) name=_Init_thread_notify + +/* WARNING: Switch with 1 destination removed at 0x00018000cdeb */ +/* Library Function - Single Match + _Init_thread_notify + + Library: Visual Studio 2019 Release */ + +void _Init_thread_notify(void) + +{ + if (DAT_180015fa0 == (code *)0x0) { + SetEvent(DAT_180015f68); + /* WARNING: Could not recover jumptable at 0x00018000ce0a. Too many branches */ + /* WARNING: Treating indirect jump as call */ + ResetEvent(DAT_180015f68); + return; + } + /* WARNING: Could not recover jumptable at 0x00018000d890. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*DAT_180015fa0)(&DAT_180015f60); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ce14 (99 bytes) name=_Init_thread_wait + +/* WARNING: Switch with 1 destination removed at 0x00018000ce3e */ +/* Library Function - Single Match + _Init_thread_wait + + Library: Visual Studio 2019 Release */ + +void _Init_thread_wait(DWORD param_1) + +{ + if (DAT_180015f98 == (code *)0x0) { + LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + WaitForSingleObjectEx(DAT_180015f68,param_1,0); + /* WARNING: Could not recover jumptable at 0x00018000ce70. Too many branches */ + /* WARNING: Treating indirect jump as call */ + EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); + return; + } + /* WARNING: Could not recover jumptable at 0x00018000d890. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*DAT_180015f98)(&DAT_180015f60,&DAT_180015f70,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ce78 (5 bytes) name=thunk_FUN_18000c554 + +void thunk_FUN_18000c554(size_t param_1) + +{ + int iVar1; + void *pvVar2; + + do { + pvVar2 = malloc(param_1); + if (pvVar2 != (void *)0x0) { + return; + } + iVar1 = _callnewh(param_1); + } while (iVar1 != 0); + if (param_1 == 0xffffffffffffffff) { + /* WARNING: Subroutine does not return */ + FUN_180001750(); + } + /* WARNING: Subroutine does not return */ + FUN_18000d200(); +} + + +================================================================== + +### EXPORT FUNC 18000ce80 (80 bytes) name=FUN_18000ce80 + +ulonglong FUN_18000ce80(undefined8 param_1,int param_2,longlong param_3) + +{ + byte bVar1; + ulonglong uVar2; + undefined7 extraout_var; + + if (param_2 == 0) { + bVar1 = FUN_18000cfe8(CONCAT71((int7)((ulonglong)param_1 >> 8),param_3 != 0)); + return CONCAT71(extraout_var,bVar1); + } + if (param_2 != 1) { + if (param_2 == 2) { + bVar1 = FUN_18000c618(); + } + else { + if (param_2 != 3) { + return 1; + } + bVar1 = FUN_18000c640(); + } + return (ulonglong)bVar1; + } + uVar2 = FUN_18000ced0(param_1,param_3); + return uVar2; +} + + +================================================================== + +### EXPORT FUNC 18000ced0 (276 bytes) name=FUN_18000ced0 + +undefined8 FUN_18000ced0(undefined8 param_1,undefined8 param_2) + +{ + bool bVar1; + bool bVar2; + int iVar3; + undefined8 uVar4; + undefined8 uVar5; + longlong *plVar6; + ulonglong uVar7; + + uVar4 = __scrt_initialize_crt(0); + if ((char)uVar4 != '\0') { + uVar4 = __scrt_acquire_startup_lock(); + bVar1 = true; + if (DAT_1800159a0 != 0) { + /* WARNING: Subroutine does not return */ + __scrt_fastfail(7); + } + DAT_1800159a0 = 1; + bVar2 = FUN_18000c600(); + if (bVar2) { + FUN_18000d620(); + FUN_18000d5d8(); + FUN_18000d5fc(); + iVar3 = _initterm_e(&DAT_18000f5a0,&DAT_18000f5b0); + if ((iVar3 == 0) && (uVar5 = __scrt_dllmain_after_initialize_c(), (char)uVar5 != '\0')) { + _initterm(&DAT_18000f4e0,&DAT_18000f598); + DAT_1800159a0 = 2; + bVar1 = false; + } + } + __scrt_release_startup_lock((char)uVar4); + if (!bVar1) { + plVar6 = (longlong *)FUN_18000d618(); + if ((*plVar6 != 0) && + (uVar7 = __scrt_is_nonwritable_in_current_image((longlong)plVar6), (char)uVar7 != '\0')) { + (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,2,param_2); + } + DAT_180015fa8 = DAT_180015fa8 + 1; + return 1; + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000cfe8 (129 bytes) name=FUN_18000cfe8 + +byte FUN_18000cfe8(undefined8 param_1) + +{ + undefined1 uVar1; + char cVar2; + undefined8 uVar3; + undefined7 uVar4; + byte bVar5; + + uVar1 = (undefined1)param_1; + if (DAT_180015fa8 < 1) { + bVar5 = 0; + } + else { + DAT_180015fa8 = DAT_180015fa8 + -1; + uVar3 = __scrt_acquire_startup_lock(); + if (DAT_1800159a0 != 2) { + /* WARNING: Subroutine does not return */ + __scrt_fastfail(7); + } + __scrt_dllmain_uninitialize_c(); + FUN_18000d5e8(); + FUN_18000d65c(); + DAT_1800159a0 = 0; + uVar4 = (undefined7)((ulonglong)param_1 >> 8); + __scrt_release_startup_lock((char)uVar3); + cVar2 = __scrt_uninitialize_crt(CONCAT71(uVar4,uVar1),'\0'); + bVar5 = -(cVar2 != '\0') & 1; + FUN_18000c6e8(); + } + return bVar5; +} + + +================================================================== + +### EXPORT FUNC 18000d06c (301 bytes) name=dllmain_dispatch + +/* Library Function - Single Match + int __cdecl dllmain_dispatch(struct HINSTANCE__ * __ptr64 const,unsigned long,void * __ptr64 + const) + + Library: Visual Studio 2017 Release */ + +int __cdecl dllmain_dispatch(HINSTANCE__ *param_1,ulong param_2,void *param_3) + +{ + ulonglong uVar1; + undefined8 uVar2; + int iVar3; + + if ((param_2 == 0) && (DAT_180015fa8 < 1)) { + iVar3 = 0; + } + else { + if (param_2 - 1 < 2) { + if ((DAT_18000f6c8 != 0) && + (iVar3 = (*(code *)PTR__guard_dispatch_icall_18000f4d8)(), iVar3 == 0)) { + return 0; + } + uVar1 = FUN_18000ce80(param_1,param_2,(longlong)param_3); + if ((int)uVar1 == 0) { + return 0; + } + } + uVar2 = FUN_180001540(); + iVar3 = (int)uVar2; + if ((param_2 == 1) && (iVar3 == 0)) { + FUN_180001540(); + FUN_18000ce80(param_1,0,(longlong)param_3); + if (DAT_18000f6c8 != 0) { + (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,0,param_3); + } + } + if ((param_2 == 0) || (param_2 == 3)) { + uVar1 = FUN_18000ce80(param_1,param_2,(longlong)param_3); + iVar3 = 0; + if ((int)uVar1 != 0) { + if (DAT_18000f6c8 == 0) { + iVar3 = 1; + } + else { + iVar3 = (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,param_2,param_3); + } + } + } + } + return iVar3; +} + + +================================================================== + +### EXPORT FUNC 18000d1a0 (61 bytes) name=entry + +void entry(HINSTANCE__ *param_1,ulong param_2,void *param_3) + +{ + if (param_2 == 1) { + __security_init_cookie(); + } + dllmain_dispatch(param_1,param_2,param_3); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d1e0 (30 bytes) name=FUN_18000d1e0 + +undefined8 * FUN_18000d1e0(undefined8 *param_1) + +{ + param_1[2] = 0; + param_1[1] = "bad allocation"; + *param_1 = std::bad_alloc::vftable; + return param_1; +} + + +================================================================== + +### EXPORT FUNC 18000d200 (31 bytes) name=FUN_18000d200 + +void FUN_18000d200(void) + +{ + undefined8 local_28 [5]; + + FUN_18000d1e0(local_28); + /* WARNING: Subroutine does not return */ + _CxxThrowException(local_28,(ThrowInfo *)&DAT_180013270); +} + + +================================================================== + +### EXPORT FUNC 18000d220 (417 bytes) name=__isa_available_init + +/* WARNING: Removing unreachable block (ram,0x00018000d2df) */ +/* WARNING: Removing unreachable block (ram,0x00018000d25a) */ +/* WARNING: Removing unreachable block (ram,0x00018000d233) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* Library Function - Single Match + __isa_available_init + + Library: Visual Studio 2019 Release */ + +undefined8 __isa_available_init(void) + +{ + int *piVar1; + uint *puVar2; + longlong lVar3; + uint uVar4; + undefined8 uVar5; + byte bVar6; + uint uVar7; + uint uVar8; + byte in_XCR0; + + piVar1 = (int *)cpuid_basic_info(0); + uVar8 = 0; + puVar2 = (uint *)cpuid_Version_info(1); + uVar4 = puVar2[3]; + if ((piVar1[1] == 0x756e6547 && piVar1[3] == 0x6c65746e) && piVar1[2] == 0x49656e69) { + _DAT_180015020 = 0xffffffffffffffff; + uVar7 = *puVar2 & 0xfff3ff0; + if ((((uVar7 == 0x106c0) || (uVar7 == 0x20660)) || (uVar7 == 0x20670)) || + ((uVar7 - 0x30650 < 0x21 && + ((0x100010001U >> ((ulonglong)(uVar7 - 0x30650) & 0x3f) & 1) != 0)))) { + DAT_180015fac = DAT_180015fac | 1; + } + } + if (6 < *piVar1) { + lVar3 = cpuid_Extended_Feature_Enumeration_info(7); + uVar8 = *(uint *)(lVar3 + 4); + if ((uVar8 >> 9 & 1) != 0) { + DAT_180015fac = DAT_180015fac | 2; + } + } + _DAT_180015018 = 1; + DAT_18001501c = 2; + if ((uVar4 >> 0x14 & 1) != 0) { + _DAT_180015018 = 2; + DAT_18001501c = 6; + if (((uVar4 >> 0x1b & 1) != 0) && ((uVar4 >> 0x1c & 1) != 0)) { + uVar5 = xinuse(0); + bVar6 = in_XCR0 & (byte)uVar5; + if ((bVar6 & 6) == 6) { + DAT_18001501c = 0xe; + _DAT_180015018 = 3; + if ((uVar8 & 0x20) != 0) { + _DAT_180015018 = 5; + DAT_18001501c = 0x2e; + if (((uVar8 & 0xd0030000) == 0xd0030000) && ((bVar6 & 0xe0) == 0xe0)) { + DAT_18001501c = 0x6e; + _DAT_180015018 = 6; + } + } + } + } + } + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000d3c4 (12 bytes) name=__scrt_is_ucrt_dll_in_use + +/* Library Function - Single Match + __scrt_is_ucrt_dll_in_use + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +bool __scrt_is_ucrt_dll_in_use(void) + +{ + return DAT_180015030 != 0; +} + + +================================================================== + +### EXPORT FUNC 18000d3d0 (8 bytes) name=FUN_18000d3d0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000d3d0(void) + +{ + _DAT_180015fb0 = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000d3d8 (330 bytes) name=__scrt_fastfail + +/* Library Function - Single Match + __scrt_fastfail + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __scrt_fastfail(undefined4 param_1) + +{ + code *pcVar1; + BOOL BVar2; + LONG LVar3; + PRUNTIME_FUNCTION FunctionEntry; + undefined1 *puVar4; + undefined8 unaff_retaddr; + DWORD64 local_res10; + undefined1 local_res18 [8]; + undefined1 local_res20 [8]; + undefined1 auStack_5c8 [8]; + undefined1 auStack_5c0 [232]; + undefined1 local_4d8 [152]; + undefined1 *local_440; + DWORD64 local_3e0; + + puVar4 = auStack_5c8; + BVar2 = IsProcessorFeaturePresent(0x17); + if (BVar2 != 0) { + pcVar1 = (code *)swi(0x29); + (*pcVar1)(param_1); + puVar4 = auStack_5c0; + } + *(undefined8 *)(puVar4 + -8) = 0x18000d40b; + FUN_18000d3d0(); + *(undefined8 *)(puVar4 + -8) = 0x18000d41c; + memset(local_4d8,0,0x4d0); + *(undefined8 *)(puVar4 + -8) = 0x18000d426; + RtlCaptureContext(local_4d8); + *(undefined8 *)(puVar4 + -8) = 0x18000d440; + FunctionEntry = RtlLookupFunctionEntry(local_3e0,&local_res10,(PUNWIND_HISTORY_TABLE)0x0); + if (FunctionEntry != (PRUNTIME_FUNCTION)0x0) { + *(undefined8 *)(puVar4 + 0x38) = 0; + *(undefined1 **)(puVar4 + 0x30) = local_res18; + *(undefined1 **)(puVar4 + 0x28) = local_res20; + *(undefined1 **)(puVar4 + 0x20) = local_4d8; + *(undefined8 *)(puVar4 + -8) = 0x18000d481; + RtlVirtualUnwind(0,local_res10,local_3e0,FunctionEntry,*(PCONTEXT *)(puVar4 + 0x20), + *(PVOID **)(puVar4 + 0x28),*(PDWORD64 *)(puVar4 + 0x30), + *(PKNONVOLATILE_CONTEXT_POINTERS *)(puVar4 + 0x38)); + } + local_440 = &stack0x00000008; + *(undefined8 *)(puVar4 + -8) = 0x18000d4b3; + memset(puVar4 + 0x50,0,0x98); + *(undefined8 *)(puVar4 + 0x60) = unaff_retaddr; + *(undefined4 *)(puVar4 + 0x50) = 0x40000015; + *(undefined4 *)(puVar4 + 0x54) = 1; + *(undefined8 *)(puVar4 + -8) = 0x18000d4d5; + BVar2 = IsDebuggerPresent(); + *(undefined1 **)(puVar4 + 0x40) = puVar4 + 0x50; + *(undefined1 **)(puVar4 + 0x48) = local_4d8; + *(undefined8 *)(puVar4 + -8) = 0x18000d4f6; + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); + *(undefined8 *)(puVar4 + -8) = 0x18000d501; + LVar3 = UnhandledExceptionFilter((_EXCEPTION_POINTERS *)(puVar4 + 0x40)); + if ((LVar3 == 0) && (BVar2 != 1)) { + *(undefined8 *)(puVar4 + -8) = 0x18000d511; + FUN_18000d3d0(); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d524 (5 bytes) name=free + +void __cdecl free(void *_Memory) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d742. Too many branches */ + /* WARNING: Treating indirect jump as call */ + free(_Memory); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d52c (172 bytes) name=__security_init_cookie + +/* Library Function - Single Match + __security_init_cookie + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void __cdecl __security_init_cookie(void) + +{ + DWORD DVar1; + _FILETIME local_res8; + _FILETIME local_res10; + LARGE_INTEGER local_res18; + + if (DAT_180015010 == 0x2b992ddfa232) { + local_res10.dwLowDateTime = 0; + local_res10.dwHighDateTime = 0; + GetSystemTimeAsFileTime(&local_res10); + local_res8 = local_res10; + DVar1 = GetCurrentThreadId(); + local_res8 = (_FILETIME)((ulonglong)local_res8 ^ (ulonglong)DVar1); + DVar1 = GetCurrentProcessId(); + local_res8 = (_FILETIME)((ulonglong)local_res8 ^ (ulonglong)DVar1); + QueryPerformanceCounter(&local_res18); + DAT_180015010 = + ((ulonglong)local_res18.s.LowPart << 0x20 ^ + CONCAT44(local_res18.s.HighPart,local_res18.s.LowPart) ^ (ulonglong)local_res8 ^ + (ulonglong)&local_res8) & 0xffffffffffff; + if (DAT_180015010 == 0x2b992ddfa232) { + DAT_180015010 = 0x2b992ddfa233; + } + } + DAT_180015008 = ~DAT_180015010; + return; +} + + +================================================================== + +### EXPORT FUNC 18000d5d8 (14 bytes) name=FUN_18000d5d8 + +void FUN_18000d5d8(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d5df. Too many branches */ + /* WARNING: Treating indirect jump as call */ + InitializeSListHead(&DAT_180015fc0); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d5e8 (12 bytes) name=FUN_18000d5e8 + +void FUN_18000d5e8(void) + +{ + __std_type_info_destroy_list(&DAT_180015fc0); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d5f4 (8 bytes) name=FUN_18000d5f4 + +undefined * FUN_18000d5f4(void) + +{ + return &DAT_180015fd0; +} + + +================================================================== + +### EXPORT FUNC 18000d5fc (27 bytes) name=FUN_18000d5fc + +void FUN_18000d5fc(void) + +{ + ulonglong *puVar1; + + puVar1 = (ulonglong *)FUN_180002fc0(); + *puVar1 = *puVar1 | 0x24; + puVar1 = (ulonglong *)FUN_18000d5f4(); + *puVar1 = *puVar1 | 2; + return; +} + + +================================================================== + +### EXPORT FUNC 18000d618 (8 bytes) name=FUN_18000d618 + +undefined * FUN_18000d618(void) + +{ + return &DAT_1800160e8; +} + + +================================================================== + +### EXPORT FUNC 18000d620 (60 bytes) name=FUN_18000d620 + +void FUN_18000d620(void) + +{ + longlong *plVar1; + + for (plVar1 = &DAT_180011b20; plVar1 < &DAT_180011b20; plVar1 = plVar1 + 1) { + if (*plVar1 != 0) { + (*(code *)PTR__guard_dispatch_icall_18000f4d8)(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d65c (60 bytes) name=FUN_18000d65c + +void FUN_18000d65c(void) + +{ + longlong *plVar1; + + for (plVar1 = &DAT_180011b30; plVar1 < &DAT_180011b30; plVar1 = plVar1 + 1) { + if (*plVar1 != 0) { + (*(code *)PTR__guard_dispatch_icall_18000f4d8)(); + } + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6a0 (6 bytes) name=_Lock + +void __thiscall +std::basic_streambuf_>::_Lock + (basic_streambuf_> *this) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d6a0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _Lock(this); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6a6 (6 bytes) name=_Unlock + +void __thiscall +std::basic_streambuf_>::_Unlock + (basic_streambuf_> *this) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d6a6. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _Unlock(this); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6ac (6 bytes) name=showmanyc + +__int64 __thiscall +std::basic_streambuf_>::showmanyc + (basic_streambuf_> *this) + +{ + __int64 _Var1; + + /* WARNING: Could not recover jumptable at 0x00018000d6ac. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _Var1 = showmanyc(this); + return _Var1; +} + + +================================================================== + +### EXPORT FUNC 18000d6b2 (6 bytes) name=uflow + +int __thiscall +std::basic_streambuf_>::uflow + (basic_streambuf_> *this) + +{ + int iVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d6b2. Too many branches */ + /* WARNING: Treating indirect jump as call */ + iVar1 = uflow(this); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d6b8 (6 bytes) name=xsgetn + +__int64 __thiscall +std::basic_streambuf_>::xsgetn + (basic_streambuf_> *this,char *param_1,__int64 param_2) + +{ + __int64 _Var1; + + /* WARNING: Could not recover jumptable at 0x00018000d6b8. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _Var1 = xsgetn(this,param_1,param_2); + return _Var1; +} + + +================================================================== + +### EXPORT FUNC 18000d6be (6 bytes) name=xsputn + +__int64 __thiscall +std::basic_streambuf_>::xsputn + (basic_streambuf_> *this,char *param_1,__int64 param_2) + +{ + __int64 _Var1; + + /* WARNING: Could not recover jumptable at 0x00018000d6be. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _Var1 = xsputn(this,param_1,param_2); + return _Var1; +} + + +================================================================== + +### EXPORT FUNC 18000d6c4 (6 bytes) name=setbuf + +basic_streambuf_> * __thiscall +std::basic_streambuf_>::setbuf + (basic_streambuf_> *this,char *param_1,__int64 param_2) + +{ + basic_streambuf_> *pbVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d6c4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pbVar1 = setbuf(this,param_1,param_2); + return pbVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d6ca (6 bytes) name=sync + +int __thiscall +std::basic_streambuf_>::sync + (basic_streambuf_> *this) + +{ + int iVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d6ca. Too many branches */ + /* WARNING: Treating indirect jump as call */ + iVar1 = sync(this); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d6d0 (6 bytes) name=imbue + +void __thiscall +std::basic_streambuf_>::imbue + (basic_streambuf_> *this,locale *param_1) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d6d0. Too many branches */ + /* WARNING: Treating indirect jump as call */ + imbue(this,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6d6 (6 bytes) name=__CxxFrameHandler4 + +void __CxxFrameHandler4(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d6d6. Too many branches */ + /* WARNING: Treating indirect jump as call */ + __CxxFrameHandler4(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6e8 (6 bytes) name=_CxxThrowException + +void __stdcall _CxxThrowException(void *pExceptionObject,ThrowInfo *pThrowInfo) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d6e8. Too many branches */ + /* WARNING: Subroutine does not return */ + /* WARNING: Treating indirect jump as call */ + _CxxThrowException(pExceptionObject,pThrowInfo); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6ee (6 bytes) name=memset + +void * __cdecl memset(void *_Dst,int _Val,size_t _Size) + +{ + void *pvVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d6ee. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = memset(_Dst,_Val,_Size); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d6f4 (6 bytes) name=__std_type_info_destroy_list + +void __std_type_info_destroy_list(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d6f4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + __std_type_info_destroy_list(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d6fa (6 bytes) name=_callnewh + +int __cdecl _callnewh(size_t _Size) + +{ + int iVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d6fa. Too many branches */ + /* WARNING: Treating indirect jump as call */ + iVar1 = _callnewh(_Size); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d700 (6 bytes) name=malloc + +void * __cdecl malloc(size_t _Size) + +{ + void *pvVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d700. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = malloc(_Size); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d706 (6 bytes) name=_seh_filter_dll + +void _seh_filter_dll(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d706. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _seh_filter_dll(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d70c (6 bytes) name=_configure_narrow_argv + +void _configure_narrow_argv(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d70c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _configure_narrow_argv(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d712 (6 bytes) name=_initialize_narrow_environment + +void _initialize_narrow_environment(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d712. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _initialize_narrow_environment(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d718 (6 bytes) name=_initialize_onexit_table + +void _initialize_onexit_table(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d718. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _initialize_onexit_table(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d71e (6 bytes) name=_register_onexit_function + +void _register_onexit_function(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d71e. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _register_onexit_function(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d724 (6 bytes) name=_execute_onexit_table + +void _execute_onexit_table(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d724. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _execute_onexit_table(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d72a (6 bytes) name=_crt_atexit + +void _crt_atexit(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d72a. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _crt_atexit(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d730 (6 bytes) name=_cexit + +void __cdecl _cexit(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d730. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _cexit(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d736 (6 bytes) name=_initterm + +void _initterm(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d736. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _initterm(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d73c (6 bytes) name=_initterm_e + +void _initterm_e(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d73c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + _initterm_e(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d742 (6 bytes) name=free + +void __cdecl free(void *_Memory) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d742. Too many branches */ + /* WARNING: Treating indirect jump as call */ + free(_Memory); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d748 (6 bytes) name=IsProcessorFeaturePresent + +BOOL __stdcall IsProcessorFeaturePresent(DWORD ProcessorFeature) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d748. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = IsProcessorFeaturePresent(ProcessorFeature); + return BVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d750 (3 bytes) name=FUN_18000d750 + +undefined1 FUN_18000d750(void) + +{ + return 1; +} + + +================================================================== + +### EXPORT FUNC 18000d754 (3 bytes) name=FUN_18000d754 + +undefined8 FUN_18000d754(void) + +{ + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000d758 (29 bytes) name=__GSHandlerCheck + +/* Library Function - Single Match + __GSHandlerCheck + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +undefined8 +__GSHandlerCheck(undefined8 param_1,undefined8 param_2,undefined8 param_3,longlong param_4) + +{ + __GSHandlerCheckCommon(param_2,param_4); + return 1; +} + + +================================================================== + +### EXPORT FUNC 18000d778 (91 bytes) name=__GSHandlerCheckCommon + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* Library Function - Single Match + __GSHandlerCheckCommon + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +ulonglong __GSHandlerCheckCommon(undefined8 param_1,longlong param_2) + +{ + ulonglong uVar1; + ulonglong uVar2; + + uVar2 = (ulonglong)*(uint *)(*(longlong *)(param_2 + 0x10) + 8); + uVar1 = *(ulonglong *)(param_2 + 8); + if ((*(byte *)(uVar2 + 3 + uVar1) & 0xf) != 0) { + uVar1 = (ulonglong)(*(byte *)(uVar2 + 3 + uVar1) & 0xfffffff0); + } + return uVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d7d4 (127 bytes) name=FID_conflict:__GSHandlerCheck_EH + +/* Library Function - Multiple Matches With Different Base Names + __GSHandlerCheck_EH + __GSHandlerCheck_EH4 + + Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ + +void FID_conflict___GSHandlerCheck_EH + (longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4) + +{ + longlong lVar1; + + lVar1 = *(longlong *)(param_4 + 0x38); + __GSHandlerCheckCommon(param_2,param_4); + if ((*(uint *)(lVar1 + 4) & ((*(uint *)(param_1 + 4) & 0x66) != 0) + 1) != 0) { + __CxxFrameHandler4(param_1,param_2,param_3,param_4); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d853 (6 bytes) name=__RTDynamicCast + +void __RTDynamicCast(void) + +{ + /* WARNING: Could not recover jumptable at 0x00018000d853. Too many branches */ + /* WARNING: Treating indirect jump as call */ + __RTDynamicCast(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d859 (6 bytes) name=memchr + +void * __cdecl memchr(void *_Buf,int _Val,size_t _MaxCount) + +{ + void *pvVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d859. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = memchr(_Buf,_Val,_MaxCount); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d85f (6 bytes) name=memcmp + +int __cdecl memcmp(void *_Buf1,void *_Buf2,size_t _Size) + +{ + int iVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d85f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + iVar1 = memcmp(_Buf1,_Buf2,_Size); + return iVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d865 (6 bytes) name=memcpy + +void * __cdecl memcpy(void *_Dst,void *_Src,size_t _Size) + +{ + void *pvVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d865. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = memcpy(_Dst,_Src,_Size); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d86b (6 bytes) name=memmove + +void * __cdecl memmove(void *_Dst,void *_Src,size_t _Size) + +{ + void *pvVar1; + + /* WARNING: Could not recover jumptable at 0x00018000d86b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = memmove(_Dst,_Src,_Size); + return pvVar1; +} + + +================================================================== + +### EXPORT FUNC 18000d890 (2 bytes) name=_guard_dispatch_icall + +/* WARNING: This is an inlined function */ + +void _guard_dispatch_icall(void) + +{ + code *UNRECOVERED_JUMPTABLE; + + /* WARNING: Could not recover jumptable at 0x00018000d890. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*UNRECOVERED_JUMPTABLE)(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000d8d0 (41 bytes) name=FUN_18000d8d0 + +void FUN_18000d8d0(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x40) & 1) != 0) { + *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe; + FUN_180002da0(*(longlong **)(param_2 + 0x88)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000d98c (48 bytes) name=FUN_18000d98c + +void FUN_18000d98c(undefined8 param_1,longlong param_2) + +{ + FUN_180002f30(param_1,*(longlong **)(param_2 + 0x20),*(longlong **)(param_2 + 0x40)); + deallocate(param_1,*(void **)(param_2 + 0x28),*(longlong *)(param_2 + 0x30)); + /* WARNING: Subroutine does not return */ + _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); +} + + +================================================================== + +### EXPORT FUNC 18000d9dc (46 bytes) name=FUN_18000d9dc + +void FUN_18000d9dc(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 1) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; + std::basic_ios_>::~basic_ios_> + ((basic_ios_> *)(param_2 + 0xf8)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000da28 (38 bytes) name=FUN_18000da28 + +void FUN_18000da28(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 4) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffb; + FUN_1800024b0((longlong *)(param_2 + 0x28)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000da98 (46 bytes) name=FUN_18000da98 + +void FUN_18000da98(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 1) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; + std::basic_ios_>::~basic_ios_> + ((basic_ios_> *)(param_2 + 0x108)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000dae4 (38 bytes) name=FUN_18000dae4 + +void FUN_18000dae4(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 4) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffb; + FUN_1800024b0((longlong *)(param_2 + 0x28)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000db3c (38 bytes) name=FUN_18000db3c + +void FUN_18000db3c(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x30) & 2) != 0) { + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd; + FUN_1800037c0(*(longlong **)(param_2 + 0x38)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000db7c (49 bytes) name=FUN_18000db7c + +void FUN_18000db7c(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x40) & 1) != 0) { + *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe; + std::basic_ios_>::~basic_ios_> + ((basic_ios_> *)(param_2 + 0x1d8)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000dc40 (38 bytes) name=FUN_18000dc40 + +void FUN_18000dc40(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 2) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffd; + FUN_1800024b0(*(longlong **)(param_2 + 0x30)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000dc70 (46 bytes) name=FUN_18000dc70 + +void FUN_18000dc70(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x40) & 1) != 0) { + *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe; + std::basic_ios_>::~basic_ios_> + ((basic_ios_> *)(*(longlong *)(param_2 + 0x30) + 0x98)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000dcc8 (58 bytes) name=FUN_18000dcc8 + +undefined8 FUN_18000dcc8(undefined8 param_1,longlong param_2) + +{ + std::basic_ios_>::setstate + ((basic_ios_> *) + ((longlong)*(int *)(**(longlong **)(param_2 + 0x60) + 4) + + (longlong)*(longlong **)(param_2 + 0x60)),4,true); + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000dd10 (29 bytes) name=FUN_18000dd10 + +void FUN_18000dd10(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000dd70 (29 bytes) name=FUN_18000dd70 + +undefined8 FUN_18000dd70(void) + +{ + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000dd90 (29 bytes) name=FUN_18000dd90 + +void FUN_18000dd90(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x68)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000ddb9 (41 bytes) name=FUN_18000ddb9 + +undefined8 FUN_18000ddb9(undefined8 param_1,longlong param_2) + +{ + *(undefined8 *)(*(longlong *)(param_2 + 0x60) + 0x20) = 0; + return 0; +} + + +================================================================== + +### EXPORT FUNC 18000de3c (29 bytes) name=FUN_18000de3c + +void FUN_18000de3c(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000de98 (29 bytes) name=FUN_18000de98 + +void FUN_18000de98(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x28)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000df1c (29 bytes) name=FUN_18000df1c + +void FUN_18000df1c(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000df50 (29 bytes) name=FUN_18000df50 + +void FUN_18000df50(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000df9c (29 bytes) name=FUN_18000df9c + +void FUN_18000df9c(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x38)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e030 (38 bytes) name=FUN_18000e030 + +void FUN_18000e030(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x20) & 1) != 0) { + *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; + FUN_180002420(*(longlong **)(param_2 + 0x48)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e090 (29 bytes) name=FUN_18000e090 + +void FUN_18000e090(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e0ad (29 bytes) name=FUN_18000e0ad + +void FUN_18000e0ad(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e0ca (29 bytes) name=FUN_18000e0ca + +void FUN_18000e0ca(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e0e7 (29 bytes) name=FUN_18000e0e7 + +void FUN_18000e0e7(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e104 (29 bytes) name=FUN_18000e104 + +void FUN_18000e104(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e121 (29 bytes) name=FUN_18000e121 + +void FUN_18000e121(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e13e (29 bytes) name=FUN_18000e13e + +void FUN_18000e13e(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e15b (29 bytes) name=FUN_18000e15b + +void FUN_18000e15b(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e1d0 (38 bytes) name=FUN_18000e1d0 + +void FUN_18000e1d0(undefined8 param_1,longlong param_2) + +{ + if ((*(uint *)(param_2 + 0x24) & 1) != 0) { + *(uint *)(param_2 + 0x24) = *(uint *)(param_2 + 0x24) & 0xfffffffe; + FUN_180002420(*(longlong **)(param_2 + 0x28)); + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e220 (29 bytes) name=FUN_18000e220 + +void FUN_18000e220(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x50)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e24d (29 bytes) name=FUN_18000e24d + +void FUN_18000e24d(undefined8 param_1,longlong param_2) + +{ + free(*(void **)(param_2 + 0x58)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e26a (23 bytes) name=FUN_18000e26a + +bool FUN_18000e26a(undefined8 *param_1) + +{ + return *(int *)*param_1 == -0x3ffffffb; +} + + +================================================================== + +### EXPORT FUNC 18000e282 (22 bytes) name=FUN_18000e282 + +void FUN_18000e282(undefined8 param_1,longlong param_2) + +{ + __scrt_release_startup_lock(*(char *)(param_2 + 0x40)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e299 (24 bytes) name=FUN_18000e299 + +void FUN_18000e299(undefined8 param_1,longlong param_2) + +{ + __scrt_release_startup_lock(*(char *)(param_2 + 0x20)); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e2b2 (19 bytes) name=FUN_18000e2b2 + +void FUN_18000e2b2(void) + +{ + FUN_18000c6e8(); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e2c6 (53 bytes) name=FUN_18000e2c6 + +void FUN_18000e2c6(undefined8 *param_1,longlong param_2) + +{ + __scrt_dllmain_exception_filter + (*(undefined8 *)(param_2 + 0x60),*(int *)(param_2 + 0x68), + *(undefined8 *)(param_2 + 0x70),FUN_18000ce80,*(undefined4 *)*param_1,param_1); + return; +} + + +================================================================== + +### EXPORT FUNC 18000e300 (97 bytes) name=FUN_18000e300 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e300(void) + +{ + void *_Memory; + + if (DAT_180016060 != (void *)0x0) { + _Memory = DAT_180016060; + if ((0xfff < (ulonglong)(DAT_180016070 - (longlong)DAT_180016060)) && + (_Memory = *(void **)((longlong)DAT_180016060 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016060 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016060 = (void *)0x0; + _DAT_180016068 = 0; + DAT_180016070 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e370 (97 bytes) name=FUN_18000e370 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e370(void) + +{ + void *_Memory; + + if (DAT_180016000 != (void *)0x0) { + _Memory = DAT_180016000; + if ((0xfff < (ulonglong)(DAT_180016010 - (longlong)DAT_180016000)) && + (_Memory = *(void **)((longlong)DAT_180016000 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016000 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016000 = (void *)0x0; + _DAT_180016008 = 0; + DAT_180016010 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e3e0 (97 bytes) name=FUN_18000e3e0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e3e0(void) + +{ + void *_Memory; + + if (DAT_180016018 != (void *)0x0) { + _Memory = DAT_180016018; + if ((0xfff < (ulonglong)(DAT_180016028 - (longlong)DAT_180016018)) && + (_Memory = *(void **)((longlong)DAT_180016018 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016018 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016018 = (void *)0x0; + _DAT_180016020 = 0; + DAT_180016028 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e450 (97 bytes) name=FUN_18000e450 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e450(void) + +{ + void *_Memory; + + if (DAT_180016090 != (void *)0x0) { + _Memory = DAT_180016090; + if ((0xfff < (ulonglong)(DAT_1800160a0 - (longlong)DAT_180016090)) && + (_Memory = *(void **)((longlong)DAT_180016090 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016090 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016090 = (void *)0x0; + _DAT_180016098 = 0; + DAT_1800160a0 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e4c0 (97 bytes) name=FUN_18000e4c0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e4c0(void) + +{ + void *_Memory; + + if (DAT_180016078 != (void *)0x0) { + _Memory = DAT_180016078; + if ((0xfff < (ulonglong)(DAT_180016088 - (longlong)DAT_180016078)) && + (_Memory = *(void **)((longlong)DAT_180016078 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016078 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016078 = (void *)0x0; + _DAT_180016080 = 0; + DAT_180016088 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e530 (97 bytes) name=FUN_18000e530 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e530(void) + +{ + void *_Memory; + + if (DAT_180016030 != (void *)0x0) { + _Memory = DAT_180016030; + if ((0xfff < (ulonglong)(DAT_180016040 - (longlong)DAT_180016030)) && + (_Memory = *(void **)((longlong)DAT_180016030 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016030 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016030 = (void *)0x0; + _DAT_180016038 = 0; + DAT_180016040 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e5a0 (97 bytes) name=FUN_18000e5a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e5a0(void) + +{ + void *_Memory; + + if (DAT_1800160a8 != (void *)0x0) { + _Memory = DAT_1800160a8; + if ((0xfff < (ulonglong)(DAT_1800160b8 - (longlong)DAT_1800160a8)) && + (_Memory = *(void **)((longlong)DAT_1800160a8 + -8), + 0x1f < (ulonglong)((longlong)DAT_1800160a8 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_1800160a8 = (void *)0x0; + _DAT_1800160b0 = 0; + DAT_1800160b8 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e610 (97 bytes) name=FUN_18000e610 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e610(void) + +{ + void *_Memory; + + if (DAT_180016048 != (void *)0x0) { + _Memory = DAT_180016048; + if ((0xfff < (ulonglong)(DAT_180016058 - (longlong)DAT_180016048)) && + (_Memory = *(void **)((longlong)DAT_180016048 + -8), + 0x1f < (ulonglong)((longlong)DAT_180016048 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + DAT_180016048 = (void *)0x0; + _DAT_180016050 = 0; + DAT_180016058 = 0; + } + return; +} + + +================================================================== + +### EXPORT FUNC 18000e680 (108 bytes) name=FUN_18000e680 + +void FUN_18000e680(void) + +{ + void *pvVar1; + void *_Memory; + + if (7 < DAT_1800160d8) { + pvVar1 = (void *)CONCAT62(DAT_1800160c0._2_6_,(undefined2)DAT_1800160c0); + _Memory = pvVar1; + if ((0xfff < DAT_1800160d8 * 2 + 2) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_1800160d8 = 7; + DAT_1800160d0 = 0; + DAT_1800160c0._0_2_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e6f0 (105 bytes) name=FUN_18000e6f0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e6f0(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015078) { + pvVar1 = (void *)CONCAT71(DAT_180015060._1_7_,(undefined1)DAT_180015060); + _Memory = pvVar1; + if ((0xfff < DAT_180015078 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + _DAT_180015070 = 0; + DAT_180015078 = 0xf; + DAT_180015060._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e760 (105 bytes) name=FUN_18000e760 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e760(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_1800150b8) { + pvVar1 = (void *)CONCAT71(DAT_1800150a0._1_7_,(undefined1)DAT_1800150a0); + _Memory = pvVar1; + if ((0xfff < DAT_1800150b8 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + _DAT_1800150b0 = 0; + DAT_1800150b8 = 0xf; + DAT_1800150a0._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e7d0 (105 bytes) name=FUN_18000e7d0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000e7d0(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_1800151f8) { + pvVar1 = (void *)CONCAT71(DAT_1800151e0._1_7_,(undefined1)DAT_1800151e0); + _Memory = pvVar1; + if ((0xfff < DAT_1800151f8 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + _DAT_1800151f0 = 0; + DAT_1800151f8 = 0xf; + DAT_1800151e0._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e840 (105 bytes) name=FUN_18000e840 + +void FUN_18000e840(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015198) { + pvVar1 = (void *)CONCAT71(DAT_180015180._1_7_,(undefined1)DAT_180015180); + _Memory = pvVar1; + if ((0xfff < DAT_180015198 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_180015190 = 0; + DAT_180015198 = 0xf; + DAT_180015180._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e8b0 (105 bytes) name=FUN_18000e8b0 + +void FUN_18000e8b0(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_1800150f8) { + pvVar1 = (void *)CONCAT71(DAT_1800150e0._1_7_,(undefined1)DAT_1800150e0); + _Memory = pvVar1; + if ((0xfff < DAT_1800150f8 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_1800150f0 = 0; + DAT_1800150f8 = 0xf; + DAT_1800150e0._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e920 (105 bytes) name=FUN_18000e920 + +void FUN_18000e920(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015178) { + pvVar1 = (void *)CONCAT71(DAT_180015160._1_7_,(undefined1)DAT_180015160); + _Memory = pvVar1; + if ((0xfff < DAT_180015178 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_180015170 = 0; + DAT_180015178 = 0xf; + DAT_180015160._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000e990 (105 bytes) name=FUN_18000e990 + +void FUN_18000e990(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_1800151d8) { + pvVar1 = (void *)CONCAT71(DAT_1800151c0._1_7_,(undefined1)DAT_1800151c0); + _Memory = pvVar1; + if ((0xfff < DAT_1800151d8 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_1800151d0 = 0; + DAT_1800151d8 = 0xf; + DAT_1800151c0._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000ea00 (105 bytes) name=FUN_18000ea00 + +void FUN_18000ea00(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015138) { + pvVar1 = (void *)CONCAT71(DAT_180015120._1_7_,(undefined1)DAT_180015120); + _Memory = pvVar1; + if ((0xfff < DAT_180015138 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_180015130 = 0; + DAT_180015138 = 0xf; + DAT_180015120._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000ea70 (105 bytes) name=FUN_18000ea70 + +void FUN_18000ea70(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_1800150d8) { + pvVar1 = (void *)CONCAT71(DAT_1800150c0._1_7_,(undefined1)DAT_1800150c0); + _Memory = pvVar1; + if ((0xfff < DAT_1800150d8 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_1800150d0 = 0; + DAT_1800150d8 = 0xf; + DAT_1800150c0._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000eae0 (105 bytes) name=FUN_18000eae0 + +void FUN_18000eae0(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015158) { + pvVar1 = (void *)CONCAT71(DAT_180015140._1_7_,(undefined1)DAT_180015140); + _Memory = pvVar1; + if ((0xfff < DAT_180015158 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_180015150 = 0; + DAT_180015158 = 0xf; + DAT_180015140._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000eb50 (105 bytes) name=FUN_18000eb50 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000eb50(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015118) { + pvVar1 = (void *)CONCAT71(DAT_180015100._1_7_,(undefined1)DAT_180015100); + _Memory = pvVar1; + if ((0xfff < DAT_180015118 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + _DAT_180015110 = 0; + DAT_180015118 = 0xf; + DAT_180015100._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000ebc0 (105 bytes) name=FUN_18000ebc0 + +void FUN_18000ebc0(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_1800151b8) { + pvVar1 = (void *)CONCAT71(DAT_1800151a0._1_7_,(undefined1)DAT_1800151a0); + _Memory = pvVar1; + if ((0xfff < DAT_1800151b8 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_1800151b0 = 0; + DAT_1800151b8 = 0xf; + DAT_1800151a0._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000ec30 (105 bytes) name=FUN_18000ec30 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000ec30(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015058) { + pvVar1 = (void *)CONCAT71(DAT_180015040._1_7_,(undefined1)DAT_180015040); + _Memory = pvVar1; + if ((0xfff < DAT_180015058 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + _DAT_180015050 = 0; + DAT_180015058 = 0xf; + DAT_180015040._0_1_ = 0; + return; +} + + +================================================================== + +### EXPORT FUNC 18000eca0 (105 bytes) name=FUN_18000eca0 + +void FUN_18000eca0(void) + +{ + void *pvVar1; + void *_Memory; + + if (0xf < DAT_180015098) { + pvVar1 = (void *)CONCAT71(DAT_180015080._1_7_,(undefined1)DAT_180015080); + _Memory = pvVar1; + if ((0xfff < DAT_180015098 + 1) && + (_Memory = *(void **)((longlong)pvVar1 + -8), + 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { + /* WARNING: Subroutine does not return */ + _invalid_parameter_noinfo_noreturn(); + } + free(_Memory); + } + DAT_180015090 = 0; + DAT_180015098 = 0xf; + DAT_180015080._0_1_ = 0; + return; +} + + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/keyfuncs_decomp_CoreSDKLib.dll.txt b/analysis/ida/export/ghidra_dump/keyfuncs_decomp_CoreSDKLib.dll.txt new file mode 100644 index 0000000..90f1e7e --- /dev/null +++ b/analysis/ida/export/ghidra_dump/keyfuncs_decomp_CoreSDKLib.dll.txt @@ -0,0 +1,5240 @@ +### ADDR 180017200 FUNC 180017200 (297 bytes) name=FUN_180017200 + +void FUN_180017200(longlong param_1,ushort *param_2) + +{ + longlong lVar1; + ushort *puVar2; + ushort uVar3; + ushort uVar4; + undefined4 uVar5; + int iVar6; + uint uVar7; + short *psVar8; + uint uVar9; + ushort *puVar10; + ulonglong uVar11; + int iVar12; + short *psVar13; + int iVar14; + undefined2 uVar15; + uint uVar16; + undefined2 *puVar17; + longlong lVar18; + + psVar13 = *(short **)(param_1 + 0x41858); + puVar10 = (ushort *)0x0; + if (*(int *)(param_1 + 0x41f0c) != 0) { + puVar10 = *(ushort **)(param_1 + 0x41ef0); + } + iVar12 = *(int *)(param_1 + 0x47938); + lVar18 = *(longlong *)(param_1 + 0x41870); + uVar5 = *(undefined4 *)(param_1 + 0x11c); + puVar17 = *(undefined2 **)(param_1 + 0x270); + uVar16 = *(int *)(param_1 + 0x41554) - 1; + iVar6 = iVar12 * 2; + if (iVar12 != 0) { + do { + uVar9 = 0; + uVar3 = *puVar10; + uVar4 = *param_2; + puVar10 = puVar10 + 1; + param_2 = param_2 + 1; + iVar14 = (int)((uint)uVar4 - (uint)uVar3) >> 1; + psVar8 = psVar13; + uVar7 = 0; + if (uVar16 != 0) { + do { + uVar9 = uVar7; + if (iVar14 <= *psVar8) break; + uVar9 = uVar9 + 1; + psVar8 = psVar8 + 1; + uVar7 = uVar9; + } while (uVar9 < uVar16); + } + uVar11 = (ulonglong)(uVar9 * iVar6); + psVar13 = psVar13 + uVar16; + puVar2 = (ushort *)(lVar18 + uVar11 * 2); + lVar1 = lVar18 + 2; + lVar18 = lVar18 + 4; + iVar14 = ((int)((uint)*puVar2 * iVar14) >> ((byte)uVar5 & 0x1f)) + + (uint)*(ushort *)(lVar1 + uVar11 * 2); + if (iVar14 < 0x10000) { + uVar15 = (undefined2)iVar14; + if (iVar14 < 0) { + uVar15 = 0; + } + } + else { + uVar15 = 0xffff; + } + *puVar17 = uVar15; + puVar17 = puVar17 + 1; + iVar12 = iVar12 + -1; + } while (iVar12 != 0); + } + return; +} + + +================================================================== + +### ADDR 180017330 FUNC 180017330 (595 bytes) name=FUN_180017330 + +void FUN_180017330(longlong param_1,longlong param_2) + +{ + uint uVar1; + uint *puVar2; + uint uVar3; + + puVar2 = *(uint **)(param_1 + 0x41878); + uVar3 = 0; + uVar1 = *(uint *)(param_1 + 0x41654 + (ulonglong)*(uint *)(param_1 + 0x41840) * 4); + if (uVar1 != 0) { + do { + switch(puVar2[1]) { + case 3: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((ulonglong) + ((longlong) + (int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) * 0x55555556) >> + 0x20); + break; + case 4: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) >> 2); + break; + case 5: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)(((uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) / 5); + break; + case 6: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((ulonglong) + ((longlong) + (int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[7] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) * 0x2aaaaaab) >> + 0x20); + break; + case 7: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)(((uint)*(ushort *)(param_2 + (ulonglong)puVar2[8] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[7] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2)) / 7); + break; + case 8: + *(short *)(param_2 + (ulonglong)*puVar2 * 2) = + (short)((int)((uint)*(ushort *)(param_2 + (ulonglong)puVar2[8] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[7] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[6] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[5] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[4] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[3] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[2] * 2) + + (uint)*(ushort *)(param_2 + (ulonglong)puVar2[9] * 2)) >> 3); + break; + default: + goto switchD_18001737a_default; + } + uVar3 = uVar3 + 1; + puVar2 = puVar2 + 10; + } while (uVar3 < uVar1); + } +switchD_18001737a_default: + return; +} + + +================================================================== + +### ADDR 180016ae0 FUNC 180016ae0 (617 bytes) name=FUN_180016ae0 + +void FUN_180016ae0(longlong param_1) + +{ + DWORD DVar1; + undefined8 uVar2; + int *piVar3; + longlong lVar4; + longlong lVar5; + ulonglong uVar6; + uint uVar7; + DWORD DVar8; + bool bVar9; + undefined8 local_48 [2]; + CFile local_38 [32]; + + *(undefined4 *)(param_1 + 0x41348) = 0; + uVar7 = 0; + if (*(int *)(param_1 + 0x41558) != 2) { + piVar3 = (int *)(param_1 + 0x41568); + do { + if (*(int *)(param_1 + 0x54) <= *piVar3) break; + uVar7 = uVar7 + 1; + piVar3 = piVar3 + 1; + } while (uVar7 < *(int *)(param_1 + 0x41558) - 2U); + } + *(uint *)(param_1 + 0x41840) = uVar7; + DVar8 = *(int *)(param_1 + 0x41560) + + (*(int *)(param_1 + 0x41554) * 3 + -1) * *(int *)(param_1 + 0x47938) * 2 + + *(int *)(param_1 + 0x4155c); + do { + if (*(int *)(param_1 + 0x41840) + 1U < uVar7) { + uVar7 = *(uint *)(param_1 + 0x41840); + lVar4 = (ulonglong)*(uint *)(param_1 + 0x41758 + (ulonglong)uVar7 * 4) + + *(longlong *)(param_1 + 0x416a0); + *(longlong *)(param_1 + 0x41848) = lVar4; + lVar5 = (ulonglong)(uint)((*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938)) + + (ulonglong)(*(uint *)(param_1 + 0x4155c) >> 1); + *(longlong *)(param_1 + 0x41860) = lVar4 + lVar5 * 2; + lVar4 = (ulonglong)*(uint *)(param_1 + 0x41758 + (ulonglong)(uVar7 + 1) * 4) + + *(longlong *)(param_1 + 0x416a0); + *(longlong *)(param_1 + 0x41850) = lVar4; + *(longlong *)(param_1 + 0x41868) = lVar4 + lVar5 * 2; + *(ulonglong *)(param_1 + 0x41878) = + (ulonglong)*(uint *)(param_1 + 0x417f4 + (ulonglong)uVar7 * 4) + + *(longlong *)(param_1 + 0x416b0); + return; + } + uVar6 = (ulonglong)uVar7; + if (*(int *)(param_1 + 0x416b8 + uVar6 * 4) == 0) { + FUN_180020138((undefined8 *)local_38); + uVar2 = FUN_180020a6c((longlong)local_38,(LPCWSTR)(param_1 + 0x4134c),0x40,0); + if ((int)uVar2 == 0) { + FUN_1800203a4(local_38); + return; + } + FUN_18001ef2c(local_48); + CFile::Seek(local_38,(ulonglong)*(uint *)(param_1 + 0x41708 + uVar6 * 4),0); + DVar1 = FUN_18001fd6c((longlong)local_38, + (LPVOID)((ulonglong)*(uint *)(param_1 + 0x41758 + uVar6 * 4) + + *(longlong *)(param_1 + 0x416a0)),DVar8); + bVar9 = DVar1 == DVar8; + if ((*(int *)(param_1 + 0x41654 + uVar6 * 4) != 0) && + (uVar7 <= *(int *)(param_1 + 0x41558) - 2U)) { + CFile::Seek(local_38,(ulonglong)*(uint *)(param_1 + 0x417a8 + uVar6 * 4),0); + DVar1 = FUN_18001fd6c((longlong)local_38, + (LPVOID)((ulonglong)*(uint *)(param_1 + 0x417f4 + uVar6 * 4) + + *(longlong *)(param_1 + 0x416b0)), + *(int *)(param_1 + 0x41654 + uVar6 * 4) * 0x28); + if ((ulonglong)DVar1 != (ulonglong)(uint)(*(int *)(param_1 + 0x41654 + uVar6 * 4) * 10) << 2 + ) { + bVar9 = false; + } + } + FUN_18001ef94(); + CFile::Close(local_38); + if (!bVar9) { + FUN_1800203a4(local_38); + return; + } + *(undefined4 *)(param_1 + 0x416b8 + uVar6 * 4) = 1; + FUN_1800203a4(local_38); + } + uVar7 = uVar7 + 1; + } while( true ); +} + + +================================================================== + +### ADDR 180016dd0 FUNC 180016dd0 (316 bytes) name=FUN_180016dd0 + +void FUN_180016dd0(longlong param_1,short *param_2,short *param_3,short *param_4,int param_5) + +{ + short sVar1; + bool bVar2; + int iVar3; + short sVar4; + int iVar5; + + iVar3 = *(int *)(param_1 + 0x54); + bVar2 = false; + if ((iVar3 < *(int *)(param_1 + 0x41564)) || + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(int *)(param_1 + 0x41558) - 1) * 4) < iVar3)) { + bVar2 = true; + } + iVar5 = *(int *)(param_1 + 0x41564 + (ulonglong)*(uint *)(param_1 + 0x41840) * 4); + iVar3 = ((iVar3 - iVar5) * 0x1000) / + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(uint *)(param_1 + 0x41840) + 1) * 4) - iVar5); + if (iVar3 < 0x4000) { + if (iVar3 < -0x3fff) { + iVar3 = -0x3fff; + } + } + else { + iVar3 = 0x3fff; + } + if (bVar2) { + for (; param_5 != 0; param_5 = param_5 + -1) { + sVar4 = *param_2; + sVar1 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + iVar5 = (((int)sVar1 - (int)sVar4) * iVar3 >> 0xc) + (int)sVar4; + if (iVar5 < 0x8000) { + sVar4 = (short)iVar5; + if (iVar5 < -0x8000) { + sVar4 = -0x8000; + } + } + else { + sVar4 = 0x7fff; + } + *param_4 = sVar4; + param_4 = param_4 + 1; + } + } + else if (param_5 != 0) { + do { + sVar4 = *param_2; + sVar1 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + param_5 = param_5 + -1; + *param_4 = (short)(((int)sVar1 - (int)sVar4) * iVar3 >> 0xc) + sVar4; + param_4 = param_4 + 1; + } while (param_5 != 0); + return; + } + return; +} + + +================================================================== + +### ADDR 180016f10 FUNC 180016f10 (289 bytes) name=FUN_180016f10 + +void FUN_180016f10(longlong param_1,ushort *param_2,ushort *param_3,short *param_4,int param_5) + +{ + ushort uVar1; + ushort uVar2; + bool bVar3; + int iVar4; + short sVar5; + int iVar6; + + iVar4 = *(int *)(param_1 + 0x54); + bVar3 = false; + if ((iVar4 < *(int *)(param_1 + 0x41564)) || + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(int *)(param_1 + 0x41558) - 1) * 4) < iVar4)) { + bVar3 = true; + } + iVar6 = *(int *)(param_1 + 0x41564 + (ulonglong)*(uint *)(param_1 + 0x41840) * 4); + iVar4 = ((iVar4 - iVar6) * 0x1000) / + (*(int *)(param_1 + 0x41564 + (ulonglong)(*(uint *)(param_1 + 0x41840) + 1) * 4) - iVar6); + if (iVar4 < 0x4000) { + if (iVar4 < -0x3fff) { + iVar4 = -0x3fff; + } + } + else { + iVar4 = 0x3fff; + } + if (bVar3) { + for (; param_5 != 0; param_5 = param_5 + -1) { + uVar1 = *param_2; + uVar2 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + iVar6 = ((int)(((uint)uVar2 - (uint)uVar1) * iVar4) >> 0xc) + (uint)uVar1; + if (iVar6 < 0x10000) { + sVar5 = (short)iVar6; + if (iVar6 < 0) { + sVar5 = 0; + } + } + else { + sVar5 = -1; + } + *param_4 = sVar5; + param_4 = param_4 + 1; + } + } + else { + for (; param_5 != 0; param_5 = param_5 + -1) { + uVar1 = *param_2; + uVar2 = *param_3; + param_2 = param_2 + 1; + param_3 = param_3 + 1; + *param_4 = (short)((int)(((uint)uVar2 - (uint)uVar1) * iVar4) >> 0xc) + uVar1; + param_4 = param_4 + 1; + } + } + return; +} + + +================================================================== + +### ADDR 18000c760 FUNC 18000c760 (488 bytes) name=FUN_18000c760 + +void FUN_18000c760(longlong param_1,int param_2,uint param_3) + +{ + int iVar1; + int iVar2; + uint uVar3; + longlong lVar4; + int iVar5; + uint uVar6; + int iVar7; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if ((*(int *)(param_1 + 0x228) != 0) && (*(int *)(param_1 + 0x41340) != 0)) { + if (param_2 == 0) { + FUN_180016ae0(param_1); + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41344) != 0)) { + FUN_18000ffb0(param_1); + } + } + else { + uVar6 = 0; + if (param_2 == 1) { + if (1 < param_3) { + DAT_18009a43c = 0; + DAT_18009a438 = 0; + DAT_18009a440 = (*(int *)(param_1 + 0x41554) + -1) * *(int *)(param_1 + 0x47938); + DAT_18009a444 = *(int *)(param_1 + 0x47938) * *(int *)(param_1 + 0x41554) * 2; + DAT_18009a448 = + (DAT_18009a444 + DAT_18009a440 + -2 + param_3) / (param_3 - 1) + 7 & 0xfffffff8; + } + } + else if (param_2 < 1) goto LAB_18000c92d; + uVar3 = DAT_18009a448; + iVar2 = DAT_18009a444; + iVar1 = DAT_18009a43c; + iVar5 = DAT_18009a438; + if (DAT_18009a438 < DAT_18009a440) { + lVar4 = (longlong)DAT_18009a438; + uVar6 = DAT_18009a440 - DAT_18009a438; + if ((int)DAT_18009a448 < DAT_18009a440 - DAT_18009a438) { + uVar6 = DAT_18009a448; + } + FUN_180016dd0(param_1,(short *)(*(longlong *)(param_1 + 0x41848) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41850) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41858) + lVar4 * 2),uVar6); + DAT_18009a438 = iVar5 + uVar6; + } + if (((int)uVar6 < (int)uVar3) && (iVar1 < iVar2)) { + lVar4 = (longlong)iVar1; + iVar7 = uVar3 - uVar6; + iVar5 = iVar2 - iVar1; + if (iVar7 < iVar2 - iVar1) { + iVar5 = iVar7; + } + FUN_180016f10(param_1,(ushort *)(*(longlong *)(param_1 + 0x41860) + lVar4 * 2), + (ushort *)(*(longlong *)(param_1 + 0x41868) + lVar4 * 2), + (short *)(*(longlong *)(param_1 + 0x41870) + lVar4 * 2),iVar5); + DAT_18009a43c = iVar1 + iVar5; + if (DAT_18009a43c == iVar2) { + *(undefined4 *)(param_1 + 0x41348) = 1; + } + } + } + } +LAB_18000c92d: + /* WARNING: Could not recover jumptable at 0x00018000c941. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return; +} + + +================================================================== + +### ADDR 18000c620 FUNC 18000c620 (309 bytes) name=FUN_18000c620 + +ulonglong FUN_18000c620(longlong param_1,ushort *param_2,int param_3) + +{ + ulonglong uVar1; + ulonglong uVar2; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + if (*(int *)(param_1 + 0x228) == 0) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + uVar1 = 0; + } + else { + if (param_3 != 0) { + *(undefined4 *)(param_1 + 0x22c) = 0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (*(int *)(param_1 + 0x41f0c) != 0) { + *(undefined4 *)(param_1 + 0x41f00) = 0; + } + if (*(int *)(param_1 + 0x41f3c) != 0) { + *(undefined4 *)(param_1 + 0x41f30) = 0; + } + if ((1 < *(uint *)(param_1 + 0x41fe0)) && (*(int *)(param_1 + 0x41f7c) != 0)) { + *(undefined4 *)(param_1 + 0x41f70) = 0; + *(undefined8 *)(param_1 + 0x41f68) = *(undefined8 *)(param_1 + 0x41f50); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x41f58),0, + (ulonglong)*(uint *)(param_1 + 0x41f74) << 2); + } + if (*(int *)(param_1 + 0x41fbc) != 0) { + *(undefined4 *)(param_1 + 0x41fb0) = 0; + *(undefined8 *)(param_1 + 0x41fa8) = *(undefined8 *)(param_1 + 0x41f90); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x41f98),0, + (ulonglong)*(uint *)(param_1 + 0x41fb4) << 2); + } + } + uVar2 = FUN_1800011a0(param_1 + 0x41ee0,param_2); + uVar1 = uVar2 & 0xffffffff; + if ((int)uVar2 != 0) { + *(undefined4 *)(param_1 + 0x22c) = 1; + } + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + } + return uVar1; +} + + +================================================================== + +### ADDR 1800011a0 FUNC 1800011a0 (489 bytes) name=FUN_1800011a0 + +undefined8 FUN_1800011a0(longlong param_1,ushort *param_2) + +{ + ushort uVar1; + int iVar2; + uint *puVar3; + undefined2 *puVar4; + ushort *puVar5; + sbyte sVar6; + uint uVar7; + int iVar8; + + if (*(int *)(param_1 + 0x2c) == 0) { + return 0; + } + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1; + iVar8 = *(int *)(param_1 + 0x28); + iVar2 = *(int *)(param_1 + 0x20); + if (iVar8 != 1) { + if (iVar8 != 2) { + puVar3 = *(uint **)(param_1 + 0x18); + if (iVar2 == 1) { + for (uVar7 = *(uint *)(param_1 + 0x24) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *puVar3 = (uint)*param_2; + puVar3[1] = (uint)param_2[1]; + puVar3[2] = (uint)param_2[2]; + puVar3[3] = (uint)param_2[3]; + puVar3 = puVar3 + 4; + param_2 = param_2 + 4; + } + } + else if (iVar2 == iVar8) { + if (iVar8 == 4) { + sVar6 = 2; + } + else if (iVar8 == 8) { + sVar6 = 3; + } + else if (iVar8 == 0x10) { + sVar6 = 4; + } + else if (iVar8 == 0x20) { + sVar6 = 5; + } + else { + sVar6 = 0; + if (iVar8 == 0x40) { + sVar6 = 6; + } + } + puVar4 = *(undefined2 **)(param_1 + 0x10); + for (iVar8 = *(int *)(param_1 + 0x24); iVar8 != 0; iVar8 = iVar8 + -1) { + uVar1 = *param_2; + param_2 = param_2 + 1; + uVar7 = *puVar3; + *puVar4 = (short)(uVar1 + uVar7 >> sVar6); + *puVar3 = uVar1 + uVar7; + puVar3 = puVar3 + 1; + puVar4 = puVar4 + 1; + } + } + else { + for (uVar7 = *(uint *)(param_1 + 0x24) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *puVar3 = *puVar3 + (uint)*param_2; + puVar3[1] = puVar3[1] + (uint)param_2[1]; + puVar3[2] = puVar3[2] + (uint)param_2[2]; + puVar3[3] = puVar3[3] + (uint)param_2[3]; + puVar3 = puVar3 + 4; + param_2 = param_2 + 4; + } + } + goto LAB_180001367; + } + if (iVar2 != 1) { + puVar5 = *(ushort **)(param_1 + 0x10); + for (uVar7 = *(uint *)(param_1 + 0x24) >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *puVar5 = (ushort)((int)((uint)*param_2 + (uint)*puVar5) >> 1); + puVar5[1] = (ushort)((int)((uint)param_2[1] + (uint)puVar5[1]) >> 1); + puVar5[2] = (ushort)((int)((uint)param_2[2] + (uint)puVar5[2]) >> 1); + puVar5[3] = (ushort)((int)((uint)param_2[3] + (uint)puVar5[3]) >> 1); + puVar5 = puVar5 + 4; + param_2 = param_2 + 4; + } + goto LAB_180001367; + } + } + memcpy(*(void **)(param_1 + 0x10),param_2,(ulonglong)*(uint *)(param_1 + 0x24) * 2); +LAB_180001367: + if (*(int *)(param_1 + 0x20) != *(int *)(param_1 + 0x28)) { + return 0; + } + *(undefined4 *)(param_1 + 0x20) = 0; + return 1; +} + + +================================================================== + +### ADDR 18001e920 FUNC 18001e920 (206 bytes) name=FUN_18001e920 + +bool FUN_18001e920(longlong param_1,ushort *param_2,int param_3) + +{ + ushort uVar1; + ushort uVar2; + uint uVar3; + uint uVar4; + ushort *puVar5; + int iVar6; + int iVar7; + + if (*(int *)(param_1 + 0x3c) == 0) { + return false; + } + *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + 1; + if (*(uint *)(param_1 + 0x38) < *(uint *)(param_1 + 0x30)) { + if (*(uint *)(param_1 + 0x38) != 1) { + return false; + } + puVar5 = *(ushort **)(param_1 + 0x10); + for (iVar7 = *(int *)(param_1 + 0x34); iVar7 != 0; iVar7 = iVar7 + -1) { + uVar1 = *puVar5; + uVar2 = *param_2; + *puVar5 = uVar2; + iVar6 = (uint)uVar2 - (uint)uVar1; + if (((iVar6 <= param_3) && (-iVar6 <= param_3)) && (iVar6 != 0)) { + *param_2 = uVar2 - (short)(iVar6 >> 1); + } + param_2 = param_2 + 1; + puVar5 = puVar5 + 1; + } + } + else { + memcpy(*(void **)(param_1 + 0x28),param_2,(ulonglong)*(uint *)(param_1 + 0x34) * 2); + } + uVar3 = *(uint *)(param_1 + 0x30); + uVar4 = *(uint *)(param_1 + 0x38); + if (uVar3 % uVar4 != 0) { + *(longlong *)(param_1 + 0x28) = + *(longlong *)(param_1 + 0x28) + (ulonglong)*(uint *)(param_1 + 0x34) * 2; + return uVar4 <= uVar3; + } + *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x10); + return uVar4 <= uVar3; +} + + +================================================================== + +### ADDR 18000a1d2 FUNC 180009ee0 (1300 bytes) name=FUN_180009ee0 + +void FUN_180009ee0(uint param_1,longlong param_2) + +{ + char cVar1; + longlong lVar2; + bool bVar3; + uint uVar4; + DWORD DVar5; + int iVar6; + __time64_t _Var7; + ulonglong uVar8; + byte *pbVar9; + undefined7 extraout_var; + uint uVar10; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + int iVar14; + undefined8 in_XMM1_Qa; + uint local_res10 [2]; + undefined8 local_68; + undefined8 local_60; + undefined8 local_58; + __time64_t local_50; + undefined8 local_48; + undefined8 local_40; + undefined8 local_38; + undefined8 local_30; + + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)(&DAT_180073778 + lVar12) == 0) { + return; + } + if ((*(uint *)(param_2 + 0xc) & 3) != 0) { + if (*(int *)(param_2 + 0x14) != (&DAT_1800737b8)[uVar11 * 0x12a]) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737bc + lVar12)) { + return; + } + } + if ((*(uint *)(param_2 + 0xc) & 4) != 0) { + if (*(int *)(param_2 + 0x14) != *(int *)(&DAT_1800737f8 + lVar12)) { + return; + } + if (*(int *)(param_2 + 0x18) != *(int *)(&DAT_1800737fc + lVar12)) { + return; + } + } + _Var7 = _time64((__time64_t *)0x0); + *(int *)(&DAT_180073bf0 + lVar12) = *(int *)(&DAT_180073bf0 + lVar12) + 1; + lVar2 = (&DAT_180073758)[uVar11 * 0x95]; + *(__time64_t *)(&DAT_180073810 + lVar12) = _Var7; + *(undefined8 *)(&DAT_180073818 + lVar12) = 0; + *(undefined8 *)(&DAT_180073820 + lVar12) = 0; + *(undefined4 *)(&DAT_180073828 + lVar12) = 0; + cVar1 = *(char *)(lVar2 + 0x2d47); + if ((cVar1 == '\x01') || (cVar1 == '\x02')) { + if (*(uint *)(&DAT_180073bf0 + lVar12) < 0x14) { + return; + } + } + else if ((cVar1 == '\x04') && (*(uint *)(&DAT_180073bf0 + lVar12) < 8)) { + return; + } + *(int *)(param_2 + 0x28) = *(int *)(param_2 + 0x28) + (int)*(short *)(lVar2 + 0x2d86); + *(int *)(param_2 + 0x2c) = *(int *)(param_2 + 0x2c) + (int)*(short *)(lVar2 + 0x2d86); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x60) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x5c) = *(undefined4 *)(param_2 + 0x2c); + iVar6 = *(int *)(&DAT_180073bec + lVar12); + *(undefined4 *)(&DAT_180073800 + lVar12) = *(undefined4 *)(param_2 + 0x28); + *(undefined4 *)(&DAT_180073804 + lVar12) = *(undefined4 *)(param_2 + 0x2c); + if (iVar6 < 0) { + FUN_180002f50(param_1); + return; + } + uVar10 = iVar6 + 1; + *(uint *)(&DAT_180073bec + lVar12) = uVar10; + uVar13 = *(uint *)(lVar2 + 0x2d88); + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6, + *(int *)(lVar2 + 0x2d8c) + uVar13 + *(int *)(lVar2 + 0x2d78)); + return; + } + uVar4 = *(int *)(lVar2 + 0x2d78) + uVar13; + if (uVar10 <= uVar4) { + if (uVar10 == uVar4) { + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + local_res10[0] = 0x6bb6b672; + local_res10[1] = 1; + FUN_18001c670((&DAT_180073758)[uVar11 * 0x95],local_res10,8); + } + } + FUN_18000c620((&DAT_180073750)[uVar11 * 0x95],(ushort *)(param_2 + 0x4c), + (uint)(*(int *)(&DAT_180073bec + lVar12) == *(int *)(lVar2 + 0x2d88) + 1)); + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],*(int *)(&DAT_180073bec + lVar12) + -1, + *(int *)(lVar2 + 0x2d8c) + *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d88)); + return; + } + uVar13 = *(int *)(lVar2 + 0x2d78) + *(int *)(lVar2 + 0x2d8c) + uVar13; + if (uVar10 <= uVar13) { + FUN_18000c760((&DAT_180073750)[uVar11 * 0x95],iVar6,uVar13); + return; + } + iVar14 = 0; + switch(cVar1) { + case '\0': + case '\x03': + case '\x05': + case '\x06': + if ((*(int *)(&DAT_180073bf4 + lVar12) == 0) && (iVar14 = 0, uVar10 == 0x4b)) { + *(undefined4 *)(&DAT_180073bf4 + lVar12) = 1; + iVar14 = iVar6 + -0x49; + } + iVar6 = 0x1e; + break; + case '\x01': + case '\x02': + case '\x04': + if ((*(uint *)(&DAT_180073bf4 + lVar12) < 5) && (iVar14 = 0, uVar10 == 0x82 - uVar13)) { + iVar14 = 1; + *(uint *)(&DAT_180073bf4 + lVar12) = *(uint *)(&DAT_180073bf4 + lVar12) + 1; + } + iVar6 = 100; + break; + default: + iVar6 = 100; + goto LAB_18000a1d2; + } + if (iVar14 == 0) { +LAB_18000a1d2: + if ((uVar10 < uVar13 + *(int *)(lVar2 + 0x2d90)) && + ((uVar10 < iVar6 + uVar13 || + (uVar13 = *(int *)((&DAT_180073750)[uVar11 * 0x95] + 0x54) - *(int *)(param_2 + 0x2c), + uVar10 = (int)uVar13 >> 0x1f, (uVar13 ^ uVar10) - uVar10 <= *(uint *)(lVar2 + 0x2d94))))) + goto LAB_18000a20a; + } + FUN_180002f50(param_1); +LAB_18000a20a: + uVar8 = FUN_18000ca30((&DAT_180073750)[uVar11 * 0x95],in_XMM1_Qa,0,1,0); + if ((uVar8 & 1) != 0) { + if ((*(int *)((&DAT_180073768)[uVar11 * 0x95] + 0x44) != 0) && + (*(int *)(&DAT_180073ba4 + lVar12) = *(int *)(&DAT_180073ba4 + lVar12) + 1, + *(int *)(&DAT_180073ba8 + lVar12) <= *(int *)(&DAT_180073ba4 + lVar12))) { + *(undefined4 *)(&DAT_180073ba4 + lVar12) = 0; + local_50 = 0; + local_48 = 0; + local_40 = 0; + local_38 = 0; + local_30 = 0; + local_68 = 0x1010000000040; + local_60 = *(undefined8 *)(&DAT_180073800 + lVar12); + local_58 = *(undefined8 *)(&DAT_180073808 + lVar12); + local_50 = _time64((__time64_t *)0x0); + DVar5 = GetTickCount(); + local_48 = CONCAT44(*(undefined4 *)(param_2 + 0x38),DVar5); + FUN_18001b1b0((&DAT_180073768)[uVar11 * 0x95],(longlong)&local_68,0x40, + *(longlong *)((&DAT_180073750)[uVar11 * 0x95] + 0x270), + *(int *)(param_2 + 0x18) * *(int *)(param_2 + 0x14) * 2); + } + if (*(int *)((&DAT_180073760)[uVar11 * 0x95] + 0x44) != 0) { + pbVar9 = (byte *)FUN_1800110a0((&DAT_180073750)[uVar11 * 0x95]); + lVar2 = (&DAT_180073750)[uVar11 * 0x95]; + if (((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) && + (iVar6 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * + *(int *)(lVar2 + 0x6cc), iVar6 = iVar6 + (iVar6 >> 0x1f & 7U), + uVar13 = iVar6 >> 0x1f, + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar11 * 0x95],pbVar9,(iVar6 >> 3 ^ uVar13) - uVar13 + ,lVar2 + 0x6c8), (int)CONCAT71(extraout_var,bVar3) == 0)) { + FUN_180001c50((&DAT_180073760)[uVar11 * 0x95]); + } + } + if (*(code **)(&DAT_180073790 + lVar12) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar12)) + (param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x38), + *(undefined4 *)(param_2 + 0x44),2,*(undefined8 *)(&DAT_180073770 + lVar12)); + } + } + return; +} + + +================================================================== + +### ADDR 180002f50 FUNC 180002f50 (155 bytes) name=FUN_180002f50 + +undefined8 FUN_180002f50(uint param_1) + +{ + undefined8 uVar1; + ulonglong uVar2; + uint local_res10 [6]; + + uVar2 = (ulonglong)param_1; + if (*(int *)((&DAT_180073758)[uVar2 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + local_res10[0] = 0x6bb6b672; + local_res10[1] = 0; + uVar1 = FUN_18001c670((&DAT_180073758)[uVar2 * 0x95],local_res10,8); + if ((int)uVar1 == 0) { + return uVar1; + } + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar2 * 0x95] + 0x5c); + *(undefined4 *)(&DAT_180073bec + uVar2 * 0x4a8) = 0; + return 1; +} + + +================================================================== + +### ADDR 180010780 FUNC 180010780 (273 bytes) name=FUN_180010780 + +void FUN_180010780(longlong param_1,ushort *param_2) + +{ + ushort uVar1; + uint uVar2; + ulonglong uVar3; + ulonglong uVar4; + ulonglong uVar5; + uint uVar6; + ushort uVar8; + uint uVar9; + undefined4 uVar10; + undefined4 uVar11; + double dVar13; + ulonglong uVar7; + ulonglong uVar12; + + uVar2 = *(uint *)(param_1 + 0x47938); + uVar8 = *param_2; + uVar3 = 0; + uVar10 = 0; + uVar9 = (uint)uVar8; + uVar5 = uVar3; + uVar11 = uVar10; + if (uVar2 != 0) { + uVar4 = uVar3; + uVar7 = uVar3; + uVar12 = uVar3; + do { + uVar1 = *param_2; + param_2 = param_2 + 1; + uVar3 = uVar3 + uVar1; + uVar5 = uVar5 + (uint)uVar1 * (uint)uVar1; + if ((ushort)uVar9 < uVar1) { + uVar9 = (uint)uVar1; + uVar4 = uVar7; + } + else if (uVar1 < uVar8) { + uVar12 = uVar7; + uVar8 = uVar1; + } + uVar11 = (undefined4)uVar12; + uVar10 = (undefined4)uVar4; + uVar6 = (int)uVar7 + 1; + uVar7 = (ulonglong)uVar6; + } while (uVar6 < *(uint *)(param_1 + 0x47938)); + } + *(uint *)(param_1 + 0x42010) = uVar9; + *(uint *)(param_1 + 0x42014) = (uint)uVar8; + *(undefined4 *)(param_1 + 0x42020) = uVar10; + *(undefined4 *)(param_1 + 0x42024) = uVar11; + *(int *)(param_1 + 0x42018) = (int)((longlong)uVar3 / (longlong)(ulonglong)uVar2); + dVar13 = FUN_1800513c0(((double)(longlong)uVar5 - + ((double)(longlong)uVar3 * (double)(longlong)uVar3) / (double)uVar2) / + (double)(uVar2 - 1)); + *(int *)(param_1 + 0x4201c) = (int)dVar13; + return; +} + + +================================================================== + +### ADDR 180018f40 FUNC 180018e90 (798 bytes) name=FUN_180018e90 + +void FUN_180018e90(longlong param_1) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + byte bVar4; + int iVar5; + ulonglong uVar6; + undefined1 uVar7; + int iVar8; + undefined1 *puVar9; + undefined1 *_Dst; + uint uVar10; + uint uVar11; + void *_Src; + byte *pbVar12; + uint uVar13; + byte *pbVar14; + byte *pbVar15; + uint local_res8; + uint local_res10; + + _Src = *(void **)(param_1 + 0x2a0); + local_res8 = 0; + uVar10 = 0; + puVar9 = (undefined1 *) + (((ulonglong)(uint)((*(int *)(param_1 + 0x41fcc) + 3) * *(int *)(param_1 + 0x41fc8)) - + (ulonglong)(uint)((*(int *)(param_1 + 0x41fc0) + 8) * (*(int *)(param_1 + 0x41fc4) + 1)) + ) + *(longlong *)(param_1 + 0x220)); + _Dst = puVar9; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + memcpy(_Dst,_Src,(ulonglong)*(uint *)(param_1 + 0x41fc0)); + iVar8 = (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 1) + (longlong)_Src) * 2 - + (uint)*(byte *)((ulonglong)(*(int *)(param_1 + 0x41fc0) - 2) + (longlong)_Src); + if (iVar8 < 0x100) { + uVar7 = (undefined1)iVar8; + if (iVar8 < 0) { + uVar7 = 0; + } + } + else { + uVar7 = 0xff; + } + uVar10 = uVar10 + 1; + _Dst[*(uint *)(param_1 + 0x41fc0)] = uVar7; + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0)); + _Dst = _Dst + (*(uint *)(param_1 + 0x41fc0) + 8); + } while (uVar10 < *(uint *)(param_1 + 0x41fc4)); + } + uVar6 = (ulonglong)(*(int *)(param_1 + 0x41fc0) + 8); + pbVar12 = _Dst + -uVar6; + pbVar14 = pbVar12 + -uVar6; + for (iVar8 = *(int *)(param_1 + 0x41fc0) + 1; iVar8 != 0; iVar8 = iVar8 + -1) { + bVar1 = *pbVar12; + bVar2 = *pbVar14; + pbVar14 = pbVar14 + 1; + pbVar12 = pbVar12 + 1; + iVar5 = (uint)bVar1 * 2 - (uint)bVar2; + if (iVar5 < 0x100) { + uVar7 = (undefined1)iVar5; + if (iVar5 < 0) { + uVar7 = 0; + } + } + else { + uVar7 = 0xff; + } + *_Dst = uVar7; + _Dst = _Dst + 1; + } + if (*(int *)(param_1 + 0x41fc4) != 0) { + uVar6 = 0; + local_res10 = 0; + do { + pbVar12 = (byte *)((ulonglong)(uint)((int)(uVar6 >> 1) * *(int *)(param_1 + 0x41fc8)) + + *(longlong *)(param_1 + 0x220)); + pbVar14 = puVar9 + (*(uint *)(param_1 + 0x41fc0) + 8) * local_res8; + for (uVar10 = *(uint *)(param_1 + 0x41fc0) >> 1; uVar10 != 0; uVar10 = uVar10 - 1) { + uVar13 = (uint)*pbVar14; + bVar1 = pbVar14[1]; + uVar6 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + uVar11 = (uint)pbVar14[uVar6 + 8]; + bVar2 = pbVar14[uVar6 + 10]; + bVar3 = pbVar14[2]; + iVar8 = (uint)pbVar14[uVar6 + 9] + (uint)pbVar14[uVar6 + 9]; + pbVar15 = pbVar12 + 3; + *pbVar12 = *pbVar14 / 1; + pbVar12[1] = (byte)(((uint)bVar1 + (uint)bVar1 + uVar13) * 0xab >> 9); + pbVar12[2] = (byte)(((uint)bVar1 + (uint)bVar1 + (uint)bVar3) * 0xab >> 9); + uVar6 = (ulonglong)*(uint *)(param_1 + 0x41fc8); + pbVar15[uVar6 - 3] = (byte)((uVar11 * 2 + uVar13) * 0xab >> 9); + pbVar15[uVar6 - 2] = (byte)((uVar13 + (iVar8 + uVar11 + (uint)bVar1) * 2) * 0x39 >> 9); + pbVar15[uVar6 - 1] = + (byte)(((uint)bVar3 + (iVar8 + (uint)bVar2 + (uint)bVar1) * 2) * 0x39 >> 9); + pbVar12 = pbVar14 + (*(int *)(param_1 + 0x41fc0) * 2 + 0x10); + uVar6 = (ulonglong)(uint)(*(int *)(param_1 + 0x41fc8) * 2); + bVar1 = pbVar12[1]; + bVar3 = *pbVar12; + bVar4 = pbVar12[2]; + pbVar15[uVar6 - 3] = (byte)((uVar11 * 2 + (uint)bVar3) * 0xab >> 9); + pbVar15[uVar6 - 2] = (byte)(((uint)bVar3 + ((uint)bVar1 + iVar8 + uVar11) * 2) * 0x39 >> 9); + pbVar15[uVar6 - 1] = + (byte)(((uint)bVar4 + ((uint)bVar1 + iVar8 + (uint)bVar2) * 2) * 0x39 >> 9); + pbVar12 = pbVar15; + pbVar14 = pbVar14 + 2; + } + local_res8 = local_res8 + 2; + local_res10 = local_res10 + 6; + uVar6 = (ulonglong)local_res10; + } while (local_res8 < *(uint *)(param_1 + 0x41fc4)); + } + return; +} + + +================================================================== + +### ADDR 18000c950 FUNC 18000c950 (221 bytes) name=FUN_18000c950 + +void FUN_18000c950(longlong param_1,ushort *param_2) + +{ + undefined8 uVar1; + ushort *puVar2; + + if (*(int *)(param_1 + 0x41fdc) == 1) { + FUN_1800011a0(param_1 + 0x41f10,param_2); + if (*(int *)(param_1 + 0x41f3c) == 0) { + puVar2 = (ushort *)0x0; + } + else { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + *(ushort **)(param_1 + 0x44c58) = puVar2; + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + else { + uVar1 = FUN_1800011a0(param_1 + 0x41f10,param_2); + *(int *)(param_1 + 0x41ffc) = (int)uVar1; + if ((int)uVar1 == 0) { + return; + } + puVar2 = (ushort *)0x0; + *(undefined4 *)(param_1 + 0x41ffc) = 0; + if (*(int *)(param_1 + 0x41f3c) != 0) { + puVar2 = *(ushort **)(param_1 + 0x41f20); + } + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41348) != 0)) { + FUN_180017200(param_1,puVar2); + FUN_180017330(param_1,*(longlong *)(param_1 + 0x270)); + goto LAB_18000ca18; + } + } + FUN_180017040(param_1,puVar2); +LAB_18000ca18: + *(undefined4 *)(param_1 + 0x42004) = 1; + return; +} + + +================================================================== + +### ADDR 18000ca30 FUNC 18000ca30 (1760 bytes) name=FUN_18000ca30 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined8 +FUN_18000ca30(longlong param_1,undefined8 param_2,int param_3,undefined8 param_4,int param_5) + +{ + byte *pbVar1; + byte *pbVar2; + byte *pbVar3; + int *piVar4; + ushort uVar5; + byte *_Dst; + undefined1 uVar6; + DWORD DVar7; + uint uVar8; + uint uVar9; + int iVar10; + DWORD DVar11; + undefined1 *puVar12; + longlong lVar13; + int iVar14; + ushort *in_RDX; + ulonglong uVar15; + int iVar16; + uint uVar17; + int iVar18; + ushort *puVar19; + byte *pbVar20; + undefined1 auStack_3518 [32]; + DWORD local_34f8; + int local_34e8; + ulonglong local_34e4 [63]; + int aiStack_32e8 [384]; + undefined1 local_2ce8 [11424]; + ulonglong local_48; + + local_48 = DAT_18006cea0 ^ (ulonglong)auStack_3518; + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + DVar7 = GetTickCount(); + local_34f8 = DVar7; + if (((*(int *)(param_1 + 0x228) == 0) || (in_RDX == (ushort *)0x0)) || + ((param_3 == 0 && (*(int *)(param_1 + 0x22c) == 0)))) { + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x4203c) = 0; + *(undefined4 *)(param_1 + 0x42040) = 0; + *(undefined4 *)(param_1 + 0x42044) = 0; + *(undefined4 *)(param_1 + 0x42004) = 0; + if (param_3 == 0) { + FUN_18000c950(param_1,in_RDX); + } + else { + if (param_3 != 1) goto LAB_18000cb0b; + memcpy(*(void **)(param_1 + 0x270),in_RDX,(ulonglong)*(uint *)(param_1 + 0x47938) * 2); + *(undefined4 *)(param_1 + 0x42004) = 1; + } + if (*(int *)(param_1 + 0x42004) == 0) { + FUN_18000d2a0(param_1); +LAB_18000cb0b: + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 0; + } + *(undefined4 *)(param_1 + 0x44c4c) = 0; + *(undefined4 *)(param_1 + 0x42038) = 0; + if ((param_5 == 0) && (1 < *(uint *)(param_1 + 0x41fe0))) { + uVar8 = FUN_180015680(param_1,30000,*(uint *)(param_1 + 0x50)); + FUN_18001e920(param_1 + 0x41f40,*(ushort **)(param_1 + 0x270),uVar8 & 0xffff); + *(undefined4 *)(param_1 + 0x42038) = 1; + } + if (*(int *)(param_1 + 0x230) != 0) { + FUN_1800175a0(param_1); + } + iVar10 = *(int *)(param_1 + 0x41fe8); + if (iVar10 == 1) { + FUN_1800184f0(param_1); + } + else if (iVar10 == 2) { + FUN_180018660(param_1); + } + else if (iVar10 == 3) { + FUN_1800184f0(param_1); + FUN_180018660(param_1); + } + else if (iVar10 == 4) { + FUN_180018660(param_1); + FUN_180018660(param_1); + } + FUN_180010780(param_1,*(ushort **)(param_1 + 0x270)); + FUN_1800109c0(param_1); + uVar8 = *(uint *)(param_1 + 0x30); + if (uVar8 < 5) { + if ((int)uVar8 < 1) goto LAB_18000cf9a; + } + else { + uVar8 = 4; + } + if ((((*(int *)(param_1 + 0x4203c) != 0) && (*(int *)(param_1 + 0x28) == 0)) && + (*(int *)(param_1 + 0x10) == 0)) && + ((*(int *)(param_1 + 0x88) == 0 && (*(int *)(param_1 + 0x44) == 0)))) { + if (*(int *)(param_1 + 0x84) == 0) { + FUN_180017770(param_1,param_2); + memcpy(local_2ce8,(void *)(param_1 + 0x41ff8),0x2ca0); + FUN_180010780(param_1,*(ushort **)(param_1 + 0x288)); + if (*(int *)(param_1 + 0x42014) < *(int *)(param_1 + 0x42010)) { + iVar10 = *(int *)(param_1 + 0x42018); + uVar17 = *(int *)(param_1 + 0x42010) - iVar10; + uVar8 = iVar10 - *(int *)(param_1 + 0x42014); + uVar9 = FUN_180015680(param_1,30000,(uint)(*(int *)(param_1 + 0x24) * 1000) >> 1); + puVar19 = *(ushort **)(param_1 + 0x288); + if (uVar8 < uVar17) { + uVar8 = uVar17; + } + uVar17 = uVar9 & 0xffff; + if ((uVar9 & 0xffff) < uVar8) { + uVar17 = uVar8; + } + puVar12 = *(undefined1 **)(param_1 + 0x280); + uVar8 = 0; + if (*(int *)(param_1 + 0x47938) != 0) { + do { + uVar5 = *puVar19; + puVar19 = puVar19 + 1; + uVar9 = ((uint)uVar5 - (iVar10 - uVar17)) * (int)(0x3fc00000 / (ulonglong)(uVar17 * 2)) + >> 0x16; + if (uVar9 < 0xc0) { + uVar6 = (undefined1)uVar9; + if (uVar9 < 0x3f) { + uVar6 = 0x3f; + } + } + else { + uVar6 = 0xbf; + } + *puVar12 = uVar6; + uVar8 = uVar8 + 1; + puVar12 = puVar12 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + local_34e8 = 0; + FUN_1800357d0(local_34e4,0,0x7fc); + _Dst = *(byte **)(param_1 + 0x290); + memcpy(_Dst,*(void **)(param_1 + 0x280),(ulonglong)*(uint *)(param_1 + 0x47938)); + uVar15 = (ulonglong)*(uint *)(param_1 + 0x41fc0); + puVar12 = (undefined1 *)(uVar15 + 1 + *(longlong *)(param_1 + 0x280)); + pbVar1 = _Dst + 1; + pbVar2 = pbVar1 + uVar15; + pbVar3 = pbVar2 + uVar15; + iVar10 = (*(int *)(param_1 + 0x41fc4) + -2) * *(uint *)(param_1 + 0x41fc0) + -2; + if (0 < iVar10) { + pbVar20 = pbVar3 + 1; + iVar18 = (uint)pbVar2[uVar15 - 1] + (uint)pbVar1[uVar15 - 1] * 2 + (uint)*_Dst; + iVar16 = (uint)*pbVar3 + (uint)*pbVar2 * 2 + (uint)*pbVar1; + do { + iVar14 = (uint)pbVar20[(longlong)pbVar1 - (longlong)pbVar3] + + (uint)pbVar20[(longlong)pbVar2 - (longlong)pbVar3] * 2 + (uint)*pbVar20; + uVar8 = (uint)(iVar14 + iVar16 * 2 + iVar18) >> 4; + *puVar12 = (char)uVar8; + if (0x7f < uVar8) { + piVar4 = (int *)((longlong)local_34e4 + + (longlong) + (int)(pbVar20[*(longlong *)(param_1 + 0x2a0) + (-1 - (longlong)pbVar3) + ] + uVar8) * 4 + -4); + *piVar4 = *piVar4 + 1; + } + pbVar20 = pbVar20 + 1; + puVar12 = puVar12 + 1; + iVar18 = iVar16; + iVar16 = iVar14; + } while ((longlong)(pbVar20 + (-1 - (longlong)pbVar3)) < (longlong)iVar10); + } + uVar8 = 0; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar9 = *(int *)(param_1 + 0x41fc0) * uVar8; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + uVar8 = uVar8 + 1; + uVar9 = uVar8 * *(int *)(param_1 + 0x41fc0) - 1; + *(byte *)((ulonglong)uVar9 + *(longlong *)(param_1 + 0x280)) = _Dst[uVar9]; + } while (uVar8 < *(uint *)(param_1 + 0x41fc4)); + } + iVar18 = 0x1ff; + iVar10 = 0; + lVar13 = 0x1ff; + do { + iVar10 = iVar10 + *(int *)((longlong)local_34e4 + lVar13 * 4 + -4); + if (*(uint *)(param_1 + 0x47938) < (uint)(iVar10 * 0x800)) break; + lVar13 = lVar13 + -1; + iVar18 = iVar18 + -1; + } while (0x17d < lVar13); + iVar10 = 0x1000; + if (0x17e < iVar18) { + iVar10 = (int)(0xff000 / (longlong)(iVar18 + -0x7f)); + } + uVar8 = 0; + lVar13 = 0; + if (*(uint *)(param_1 + 0x47938) != 0) { + do { + iVar18 = ((*(byte *)(lVar13 + *(longlong *)(param_1 + 0x280)) - 0x7f) + + (uint)*(byte *)(*(longlong *)(param_1 + 0x2a0) + lVar13)) * iVar10; + iVar18 = (int)(iVar18 + (iVar18 >> 0x1f & 0xfffU)) >> 0xc; + if (iVar18 < 0) { + iVar18 = 0; + } + else if (0xff < iVar18) { + iVar18 = 0xff; + } + *(char *)(*(longlong *)(param_1 + 0x2a0) + lVar13) = (char)iVar18; + uVar8 = uVar8 + 1; + lVar13 = lVar13 + 1; + } while (uVar8 < *(uint *)(param_1 + 0x47938)); + } + } + memcpy((void *)(param_1 + 0x41ff8),local_2ce8,0x2ca0); + DVar7 = local_34f8; + } + else { + FUN_180017c40(param_1,uVar8 << 3); + } + } +LAB_18000cf9a: + uVar8 = *(uint *)(param_1 + 0x41fc8); + uVar9 = *(uint *)(param_1 + 0x41fc0); + if ((uVar8 == uVar9) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4))) { + memcpy(*(void **)(param_1 + 0x220),*(void **)(param_1 + 0x2a0), + (ulonglong)*(uint *)(param_1 + 0x47938)); + } + else if ((uVar8 == uVar9 * 2) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) * 2)) + { + FUN_180019740(param_1); + } + else if ((uVar8 == uVar9 * 4) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 2) + ) { + FUN_180019b30(param_1); + } + else if ((uVar8 == uVar9 * 8) && (*(int *)(param_1 + 0x41fcc) == *(int *)(param_1 + 0x41fc4) << 3) + ) { + FUN_180019e60(param_1); + } + else if ((uVar8 * 2 == uVar9 * 3) && + (*(int *)(param_1 + 0x41fcc) * 2 == *(int *)(param_1 + 0x41fc4) * 3)) { + FUN_180018e90(param_1); + } + else if ((uVar8 * 3 == uVar9 * 5) && + (*(int *)(param_1 + 0x41fcc) * 3 == *(int *)(param_1 + 0x41fc4) * 5)) { + FUN_1800191b0(param_1); + } + else if ((uVar9 < uVar8) && (*(uint *)(param_1 + 0x41fc4) < *(uint *)(param_1 + 0x41fcc))) { + FUN_18001a750(param_1); + } + DVar11 = GetTickCount(); + *(DWORD *)(param_1 + 0x42048) = DVar11 - DVar7; + FUN_18000d2a0(param_1); + *(undefined4 *)(param_1 + 0x234) = 1; + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x238)); + return 3; +} + + +================================================================== + +### ADDR 180017040 FUNC 180017040 (413 bytes) name=FUN_180017040 + +void FUN_180017040(longlong param_1,ushort *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined **ppuVar4; + int iVar5; + int iVar6; + ushort *puVar7; + int iVar8; + undefined2 *puVar9; + uint uVar10; + ulonglong uVar11; + ushort *puVar12; + longlong local_res8; + + iVar2 = DAT_18006ea60; + puVar7 = (ushort *)0x0; + iVar8 = 0; + puVar12 = puVar7; + if (*(int *)(param_1 + 0x41f0c) != 0) { + puVar12 = *(ushort **)(param_1 + 0x41ef0); + } + puVar9 = *(undefined2 **)(param_1 + 0x270); + if (*(int *)(param_1 + 0x47950) == 0) { + iVar3 = 50000 - *(int *)(param_1 + 0x47948) >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f) + ; + if (iVar3 < 0) { + iVar3 = iVar8; + } + } + else { + iVar3 = (DAT_1800990c4 - DAT_1800990c0) * 0xd40; + iVar3 = ((int)((iVar3 >> 0x1f & 0xfffU) + iVar3) >> 0xc) + DAT_1800990c0; + if (iVar3 < 0) { + iVar3 = iVar8; + } + iVar3 = iVar3 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar6 = iVar8; + for (uVar10 = *(uint *)(param_1 + 0x47938); uVar11 = (ulonglong)uVar10, uVar10 != 0; + uVar10 = uVar10 - 1) { + iVar5 = ((uint)*param_2 - (uint)*puVar12) * iVar2 + iVar3; + puVar12 = puVar12 + 1; + param_2 = param_2 + 1; + if (iVar5 < 0x10000) { + if (iVar5 < 0) { + puVar7 = (ushort *)(ulonglong)((int)puVar7 + 1); + iVar5 = iVar8; + } + } + else { + puVar7 = (ushort *)(ulonglong)((int)puVar7 + 1); + iVar5 = 0xffff; + } + iVar6 = (int)puVar7; + *puVar9 = (short)iVar5; + puVar9 = puVar9 + 1; + } + if (((*(int *)(param_1 + 0xfc) != 0) && (0x100 < iVar6)) && (1 < iVar2)) { + DAT_18006ea60 = iVar2 + -1; + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res8 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res8 = local_res8 + 0x18; + FUN_18001ad00(&local_res8,L"Converstation ratio adjusted to %dmK/LSB.", + (ulonglong)(uint)(*(int *)(param_1 + 0x47944) * DAT_18006ea60),uVar11); + LOCK(); + piVar1 = (int *)(local_res8 + -8); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 + -1 < 1) { + (**(code **)(**(longlong **)(local_res8 + -0x18) + 8))(); + } + } + return; +} + + +================================================================== + +### ADDR 1800109c0 FUNC 1800109c0 (640 bytes) name=FUN_1800109c0 + +void FUN_1800109c0(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + + if (*(int *)(param_1 + 0x42014) == *(int *)(param_1 + 0x42010)) { + *(int *)(param_1 + 0x4202c) = *(int *)(param_1 + 0x42010); + *(int *)(param_1 + 0x42030) = *(int *)(param_1 + 0x42014); + FUN_1800357d0((ulonglong *)(param_1 + 0x4284c),0x80,0x400); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x2a0),0x80,(ulonglong)*(uint *)(param_1 + 0x47938)); + FUN_1800357d0((ulonglong *)(param_1 + 0x4204c),0,0x400); + *(undefined4 *)(param_1 + 0x4224c) = *(undefined4 *)(param_1 + 0x47938); + FUN_1800357d0((ulonglong *)(param_1 + 0x42c4c),0,0x1000); + *(undefined4 *)(param_1 + 0x4344c) = *(undefined4 *)(param_1 + 0x47938); + FUN_1800357d0(*(ulonglong **)(param_1 + 0x2b0),0x80,(ulonglong)*(uint *)(param_1 + 0x47940)); + *(undefined4 *)(param_1 + 0x4203c) = 1; + return; + } + if (*(int *)(param_1 + 0x10) == 0) { + iVar3 = *(int *)(param_1 + 0x42018); + if (*(int *)(param_1 + 0x88) != 0) { + FUN_180011380(param_1); + iVar3 = *(int *)(param_1 + 0x44c64); + } + uVar1 = FUN_1800108a0(param_1); + uVar2 = iVar3 - (uVar1 >> 1); + if (*(uint *)(param_1 + 0x42014) < uVar2) { + uVar2 = *(uint *)(param_1 + 0x42014); + } + uVar1 = (uVar1 >> 1) + iVar3; + *(uint *)(param_1 + 0x42030) = uVar2; + if (uVar1 < *(uint *)(param_1 + 0x42010)) { + uVar1 = *(uint *)(param_1 + 0x42010); + } + *(uint *)(param_1 + 0x4202c) = uVar1; + if ((int)uVar2 < 0) { + *(undefined4 *)(param_1 + 0x42030) = 0; + } + if (0xffff < (int)uVar1) { + *(undefined4 *)(param_1 + 0x4202c) = 0xffff; + } + if (*(int *)(param_1 + 0x90) == 0) { + FUN_180011ee0(param_1,*(ushort **)(param_1 + 0x270)); + } + else { + FUN_180011cc0(param_1); + } + if (*(int *)(param_1 + 0x28) == 0) { + if (*(int *)(param_1 + 0x44c50) != 0) { + memcpy((void *)(param_1 + 0x6f0),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xb18),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xf40),(void *)(param_1 + 0x2c8),0x400); + *(undefined4 *)(param_1 + 0x44c50) = 0; + } + } + else { + FUN_180010c40(param_1); + *(undefined4 *)(param_1 + 0x44c50) = 1; + } + } + else { + FUN_1800110e0(param_1); + if (*(int *)(param_1 + 0x44c50) != 0) { + memcpy((void *)(param_1 + 0x6f0),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xb18),(void *)(param_1 + 0x2c8),0x400); + memcpy((void *)(param_1 + 0xf40),(void *)(param_1 + 0x2c8),0x400); + *(undefined4 *)(param_1 + 0x44c50) = 0; + } + } + FUN_180010e80(param_1); + return; +} + + +================================================================== + +### ADDR 180017770 FUNC 180017770 (1228 bytes) name=FUN_180017770 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +void FUN_180017770(longlong param_1,undefined8 param_2) + +{ + undefined2 *puVar1; + longlong lVar2; + ushort uVar3; + uint uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + uint uVar15; + uint uVar16; + uint uVar17; + uint uVar18; + undefined2 *puVar19; + undefined2 *puVar20; + undefined4 *puVar21; + longlong lVar22; + longlong lVar23; + undefined2 uVar24; + uint uVar25; + int iVar26; + ulonglong uVar27; + float *pfVar28; + int iVar29; + ulonglong uVar30; + longlong lVar31; + ulonglong uVar32; + ulonglong uVar33; + float fVar34; + float fVar35; + float fVar36; + float fVar37; + float fVar38; + undefined4 uVar39; + float fVar40; + float afStack_40068 [4]; + float afStack_40058 [65548]; + + uVar39 = (undefined4)((ulonglong)param_2 >> 0x20); + puVar20 = *(undefined2 **)(param_1 + 0x270); + uVar30 = 0; + puVar19 = (undefined2 *)(*(longlong *)(param_1 + 0x290) + 2); + uVar18 = 0; + uVar32 = uVar30; + if (*(int *)(param_1 + 0x41fc4) != -6) { + do { + uVar24 = *puVar20; + puVar19[2] = uVar24; + puVar19[1] = uVar24; + *puVar19 = uVar24; + memcpy(puVar19 + 3,puVar20,(ulonglong)*(uint *)(param_1 + 0x41fc0) * 2); + puVar1 = puVar19 + (ulonglong)*(uint *)(param_1 + 0x41fc0) + 3; + uVar24 = puVar20[*(uint *)(param_1 + 0x41fc0) - 1]; + puVar19 = puVar1 + 3; + uVar17 = (uint)uVar32; + puVar1[2] = uVar24; + puVar1[1] = uVar24; + *puVar1 = uVar24; + if ((2 < (int)uVar17) && (uVar17 <= *(int *)(param_1 + 0x41fc4) + 1U)) { + puVar20 = puVar20 + *(uint *)(param_1 + 0x41fc0); + } + uVar32 = (ulonglong)(uVar17 + 1); + } while (uVar17 + 1 < *(int *)(param_1 + 0x41fc4) + 6U); + } + fVar34 = DAT_18005e70c; + uVar32 = 0; + if (DAT_18009a450 == 0.0) { + uVar33 = uVar30; + puVar21 = &DAT_18009a450; + do { + uVar32 = FUN_180050fc0(CONCAT44((int)(uVar32 >> 0x20),(float)(int)uVar33 / fVar34)); + uVar17 = (int)uVar33 - 1; + uVar33 = (ulonglong)uVar17; + *puVar21 = (int)uVar32; + fVar40 = DAT_18005e708; + puVar21 = puVar21 + 1; + } while (-0x13 < (int)uVar17); + uVar32 = uVar30; + puVar21 = &DAT_18009a4a0; + do { + fVar34 = (float)(int)uVar32; + uVar33 = FUN_180050fc0(CONCAT44(uVar39,fVar34 * fVar40 * fVar34)); + uVar17 = (int)uVar32 + 1; + uVar32 = (ulonglong)uVar17; + *puVar21 = (int)uVar33; + puVar21 = puVar21 + 1; + } while ((int)uVar17 < 0x10001); + } + uVar17 = *(int *)(param_1 + 0x42010) - *(int *)(param_1 + 0x42014); + uVar32 = uVar30; + if (3 < (int)(uVar17 + 1)) { + uVar25 = 0x20000; + uVar18 = uVar17 + 1 >> 2; + uVar27 = (ulonglong)uVar18; + uVar18 = uVar18 * 4; + uVar33 = uVar30; + do { + uVar32 = uVar33 + 4; + afStack_40068[uVar32] = + (float)(&DAT_18009a4a0)[(ulonglong)(uVar25 - 0x20000) / (ulonglong)uVar17]; + afStack_40068[uVar33 + 5] = + (float)(&DAT_18009a4a0)[(ulonglong)(uVar25 - 0x10000) / (ulonglong)uVar17]; + afStack_40068[uVar33 + 6] = (float)(&DAT_18009a4a0)[(ulonglong)uVar25 / (ulonglong)uVar17]; + uVar4 = uVar25 + 0x10000; + uVar25 = uVar25 + 0x40000; + uVar27 = uVar27 - 1; + afStack_40068[uVar33 + 7] = (float)(&DAT_18009a4a0)[(ulonglong)uVar4 / (ulonglong)uVar17]; + uVar33 = uVar32; + } while (uVar27 != 0); + if (uVar17 < uVar18) goto LAB_1800179bd; + } + uVar25 = uVar18 << 0x10; + uVar33 = (ulonglong)((uVar17 - uVar18) + 1); + pfVar28 = afStack_40068 + uVar32 + 4; + do { + uVar32 = (ulonglong)uVar25; + uVar25 = uVar25 + 0x10000; + uVar33 = uVar33 - 1; + *pfVar28 = (float)(&DAT_18009a4a0)[uVar32 / uVar17]; + pfVar28 = pfVar28 + 1; + } while (uVar33 != 0); +LAB_1800179bd: + uVar18 = *(uint *)(param_1 + 0x41fc0); + puVar20 = *(undefined2 **)(param_1 + 0x288); + lVar2 = *(longlong *)(param_1 + 0x290) + 8 + (ulonglong)(uVar18 * 3 + 0x12) * 2; + if (*(int *)(param_1 + 0x41fc4) != 0) { + do { + uVar17 = 0; + iVar29 = (int)uVar30; + if (uVar18 != 0) { + do { + iVar26 = uVar18 + 6; + fVar34 = 0.0; + fVar40 = 0.0; + lVar31 = -3; + uVar18 = iVar26 * (iVar29 + -3); + uVar3 = *(ushort *)(lVar2 + (ulonglong)(iVar26 * iVar29 + uVar17) * 2); + uVar25 = (uint)uVar3; + do { + lVar23 = (ulonglong)uVar18 + (longlong)(int)uVar17; + lVar22 = lVar31 * lVar31; + uVar7 = (uint)*(ushort *)(lVar2 + -6 + lVar23 * 2); + uVar4 = uVar25 - uVar7; + uVar10 = (int)uVar4 >> 0x1f; + uVar8 = (uint)*(ushort *)(lVar2 + -4 + lVar23 * 2); + uVar5 = uVar3 - uVar8; + uVar11 = (int)uVar5 >> 0x1f; + uVar9 = (uint)*(ushort *)(lVar2 + -2 + lVar23 * 2); + uVar6 = uVar25 - uVar9; + uVar12 = (int)uVar6 >> 0x1f; + fVar35 = afStack_40068[(longlong)(int)((uVar5 ^ uVar11) - uVar11) + 4] * + *(float *)(lVar22 * 4 + 0x18009a460); + fVar36 = afStack_40068[(longlong)(int)((uVar6 ^ uVar12) - uVar12) + 4] * + *(float *)(lVar22 * 4 + 0x18009a454); + uVar11 = (uint)*(ushort *)(lVar2 + lVar23 * 2); + uVar5 = uVar25 - uVar11; + uVar13 = (int)uVar5 >> 0x1f; + uVar12 = (uint)*(ushort *)(lVar2 + 2 + lVar23 * 2); + uVar6 = uVar25 - uVar12; + uVar14 = (int)uVar6 >> 0x1f; + fVar37 = afStack_40068[(longlong)(int)((uVar6 ^ uVar14) - uVar14) + 4] * + *(float *)(lVar22 * 4 + 0x18009a454); + uVar14 = (uint)*(ushort *)(lVar2 + 4 + lVar23 * 2); + uVar6 = uVar25 - uVar14; + uVar15 = (int)uVar6 >> 0x1f; + fVar38 = afStack_40068[(longlong)(int)((uVar6 ^ uVar15) - uVar15) + 4] * + *(float *)(lVar22 * 4 + 0x18009a460); + uVar15 = (uint)*(ushort *)(lVar2 + 6 + lVar23 * 2); + uVar6 = uVar25 - uVar15; + lVar31 = lVar31 + 1; + uVar16 = (int)uVar6 >> 0x1f; + uVar18 = uVar18 + iVar26; + fVar40 = fVar40 + afStack_40068[(longlong)(int)((uVar4 ^ uVar10) - uVar10) + 4] * + (float)(&DAT_18009a474)[lVar22] + fVar35 + fVar36 + + afStack_40068[(longlong)(int)((uVar5 ^ uVar13) - uVar13) + 4] * + (&DAT_18009a450)[lVar22] + fVar37 + fVar38 + + afStack_40068[(longlong)(int)((uVar6 ^ uVar16) - uVar16) + 4] * + (float)(&DAT_18009a474)[lVar22]; + fVar34 = fVar34 + (float)uVar7 * + afStack_40068[(longlong)(int)((uVar4 ^ uVar10) - uVar10) + 4] * + (float)(&DAT_18009a474)[lVar22] + (float)uVar8 * fVar35 + + (float)uVar9 * fVar36 + + (float)uVar11 * + afStack_40068[(longlong)(int)((uVar5 ^ uVar13) - uVar13) + 4] * + (&DAT_18009a450)[lVar22] + (float)uVar12 * fVar37 + (float)uVar14 * fVar38 + + (float)uVar15 * + afStack_40068[(longlong)(int)((uVar6 ^ uVar16) - uVar16) + 4] * + (float)(&DAT_18009a474)[lVar22]; + } while (lVar31 < 4); + iVar26 = (uVar25 - (int)(fVar34 / fVar40)) + 0x8000; + if (iVar26 < 0x10000) { + uVar24 = (undefined2)iVar26; + if (iVar26 < 0) { + uVar24 = 0; + } + } + else { + uVar24 = 0; + } + *puVar20 = uVar24; + uVar17 = uVar17 + 1; + uVar18 = *(uint *)(param_1 + 0x41fc0); + puVar20 = puVar20 + 1; + } while (uVar17 < uVar18); + } + uVar30 = (ulonglong)(iVar29 + 1U); + } while (iVar29 + 1U < *(uint *)(param_1 + 0x41fc4)); + } + return; +} + + +================================================================== + +### ADDR 180017c40 FUNC 180017c40 (905 bytes) name=FUN_180017c40 + +void FUN_180017c40(longlong param_1,int param_2) + +{ + ushort uVar1; + ushort uVar2; + ushort uVar3; + byte bVar4; + int iVar5; + uint uVar6; + ulonglong uVar7; + int iVar8; + ushort *puVar9; + int iVar10; + uint uVar11; + int iVar12; + uint uVar13; + uint uVar14; + uint uVar15; + int *piVar16; + byte *pbVar17; + ushort uVar18; + uint uVar19; + ushort *puVar20; + int *piVar21; + longlong lVar22; + uint local_res18; + + if (param_2 != 0) { + FUN_1800357d0(*(ulonglong **)(param_1 + 0x2a8),0,(ulonglong)*(uint *)(param_1 + 0x47938) << 2); + uVar19 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar19 = uVar19 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar18 = (ushort)uVar19; + if (0xffff < uVar19) { + uVar18 = 0xffff; + } + } + else { + iVar5 = FUN_180015940(param_1,30000,uVar19); + iVar5 = iVar5 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < iVar5) { + iVar5 = 0xffff; + } + uVar18 = (ushort)iVar5; + } + local_res18 = 0; + uVar19 = ((uint)uVar18 * param_2 & 0x7fffffff) >> 7; + if (*(int *)(param_1 + 0x41fc4) != 6) { + do { + iVar5 = *(int *)(param_1 + 0x41fc0) + -6; + iVar12 = *(int *)(param_1 + 0x41fc0) * local_res18; + if (iVar5 != 0) { + lVar22 = (longlong)iVar12 * 2; + do { + uVar11 = (uint)*(ushort *)(lVar22 + 2 + *(longlong *)(param_1 + 0x270)); + puVar20 = (ushort *)(lVar22 + *(longlong *)(param_1 + 0x270)); + piVar16 = (int *)(*(longlong *)(param_1 + 0x2a8) + (longlong)iVar12 * 4); + uVar15 = (uint)*puVar20; + puVar9 = puVar20; + uVar13 = 0; + iVar10 = 4; + do { + iVar8 = iVar10; + uVar18 = *puVar9; + uVar6 = (uint)uVar18; + uVar14 = uVar6; + if ((uVar18 < uVar11 || uVar6 == uVar11) && (uVar14 = uVar11, uVar6 < uVar15)) { + uVar15 = uVar6; + } + uVar1 = puVar9[2]; + uVar6 = (uint)uVar1; + uVar11 = uVar6; + if ((uVar1 < uVar14 || uVar6 == uVar14) && (uVar11 = uVar14, uVar6 < uVar15)) { + uVar15 = uVar6; + } + uVar2 = puVar9[4]; + uVar6 = (uint)uVar2; + uVar14 = uVar6; + if ((uVar2 < uVar11 || uVar6 == uVar11) && (uVar14 = uVar11, uVar6 < uVar15)) { + uVar15 = uVar6; + } + uVar3 = puVar9[6]; + uVar13 = uVar13 + uVar18 + (uint)uVar1 + (uint)uVar2 + (uint)uVar3; + uVar6 = (uint)uVar3; + uVar11 = uVar6; + if ((uVar3 < uVar14 || uVar6 == uVar14) && (uVar11 = uVar14, uVar6 < uVar15)) { + uVar15 = uVar6; + } + puVar9 = puVar9 + (ulonglong)(*(int *)(param_1 + 0x41fc0) * 2 - 8) + 8; + iVar10 = iVar8 + -1; + } while (iVar10 != 0); + if (uVar19 <= (uVar11 - uVar15) * 0x20) { + uVar13 = uVar13 >> 4; + uVar14 = uVar19; + if (uVar19 < uVar11 - uVar13) { + uVar14 = uVar11 - uVar13; + } + if (uVar14 < uVar13 - uVar15) { + uVar14 = uVar13 - uVar15; + } + iVar8 = iVar8 + 3; + do { + iVar10 = (int)(0x8000 / (ulonglong)uVar14); + *piVar16 = *piVar16 + (*puVar20 - uVar13) * iVar10; + piVar16[2] = piVar16[2] + (puVar20[2] - uVar13) * iVar10; + piVar16[4] = piVar16[4] + (puVar20[4] - uVar13) * iVar10; + piVar16[6] = piVar16[6] + (puVar20[6] - uVar13) * iVar10; + iVar8 = iVar8 + -1; + uVar7 = (ulonglong)(*(int *)(param_1 + 0x41fc0) * 2 - 8); + puVar20 = puVar20 + uVar7 + 8; + piVar16 = piVar16 + uVar7 + 8; + } while (iVar8 != 0); + } + iVar12 = iVar12 + 1; + lVar22 = lVar22 + 2; + iVar5 = iVar5 + -1; + } while (iVar5 != 0); + } + local_res18 = local_res18 + 1; + } while (local_res18 < *(int *)(param_1 + 0x41fc4) - 6U); + } + uVar19 = *(uint *)(param_1 + 0x41fc4); + pbVar17 = *(byte **)(param_1 + 0x2a0); + piVar16 = *(int **)(param_1 + 0x2a8); + uVar7 = 0; + if (uVar19 != 0) { + uVar13 = *(uint *)(param_1 + 0x41fc0); + do { + uVar11 = (uint)uVar7; + uVar15 = 4; + if (uVar11 < 6) { + uVar15 = (int)(uVar7 >> 1) + 1; + } + else if (uVar19 < uVar11 + 7) { + uVar15 = (uVar19 - uVar11) + 1 >> 1; + } + uVar7 = 0; + piVar21 = piVar16; + if (uVar13 != 0) { + do { + uVar14 = (uint)uVar7; + uVar19 = 4; + if (uVar14 < 6) { + uVar19 = (int)(uVar7 >> 1) + 1; + } + else if (uVar13 < uVar14 + 7) { + uVar19 = (uVar13 - uVar14) + 1 >> 1; + } + piVar16 = piVar21 + 1; + iVar5 = param_2 * *piVar21; + if (uVar19 * uVar15 == 0x10) { + iVar5 = (int)((iVar5 >> 0x1f & 0x7ffffU) + iVar5) >> 0x13; + } + else { + iVar5 = iVar5 / (int)(uVar19 * uVar15 * 0x8000); + } + iVar5 = (uint)*pbVar17 + iVar5; + if (iVar5 < 0x100) { + bVar4 = (byte)iVar5; + if (iVar5 < 0) { + bVar4 = 0; + } + } + else { + bVar4 = 0xff; + } + *pbVar17 = bVar4; + uVar13 = *(uint *)(param_1 + 0x41fc0); + uVar7 = (ulonglong)(uVar14 + 1); + pbVar17 = pbVar17 + 1; + piVar21 = piVar16; + } while (uVar14 + 1 < uVar13); + } + uVar19 = *(uint *)(param_1 + 0x41fc4); + uVar7 = (ulonglong)(uVar11 + 1); + } while (uVar11 + 1 < uVar19); + } + } + return; +} + + +================================================================== + +### ADDR 1800175a0 FUNC 1800175a0 (194 bytes) name=FUN_1800175a0 + +void FUN_1800175a0(longlong param_1) + +{ + ushort uVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + ushort *puVar6; + ushort *puVar7; + + if (*(int *)(param_1 + 0x47950) == 0) { + uVar3 = -*(int *)(param_1 + 0x47948) >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if ((int)uVar3 < 0) { + uVar3 = 0; + } + } + else { + iVar2 = (DAT_180099094 - DAT_180099090) * 0x9f0; + iVar2 = ((int)(iVar2 + (iVar2 >> 0x1f & 0xfffU)) >> 0xc) + DAT_180099090; + if (iVar2 < 0) { + iVar2 = 0; + } + uVar3 = iVar2 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar2 = *(int *)(param_1 + 0x47938); + puVar7 = *(ushort **)(param_1 + 0x278); + puVar6 = *(ushort **)(param_1 + 0x270); + if (iVar2 != 0) { + do { + uVar1 = *puVar7; + puVar7 = puVar7 + 1; + iVar4 = ((uint)*puVar6 - (uint)uVar1) + (uVar3 & 0xffff); + iVar5 = 0; + if ((-1 < iVar4) && (iVar5 = iVar4, 0xfffe < iVar4)) { + iVar5 = 0xffff; + } + *puVar6 = (ushort)iVar5; + puVar6 = puVar6 + 1; + iVar2 = iVar2 + -1; + } while (iVar2 != 0); + } + return; +} + + +================================================================== + +### ADDR 1800184f0 FUNC 1800184f0 (364 bytes) name=FUN_1800184f0 + +void FUN_1800184f0(longlong param_1) + +{ + ushort *puVar1; + void *_Src; + ushort uVar2; + ushort uVar3; + void *_Dst; + uint *puVar4; + ushort *puVar5; + ushort *puVar6; + int iVar7; + uint uVar8; + uint uVar9; + + _Dst = *(void **)(param_1 + 0x288); + _Src = (void *)(*(longlong *)(param_1 + 0x270) + + ((ulonglong)(uint)(*(int *)(param_1 + 0x41ff0) * *(int *)(param_1 + 0x41fc0)) + + (ulonglong)*(uint *)(param_1 + 0x41fec)) * 2); + for (iVar7 = (*(uint *)(param_1 + 0x41fc4) >> 1) + 1; iVar7 != 0; iVar7 = iVar7 + -1) { + memcpy(_Dst,_Src,(ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 1) + 2) * 2); + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0) * 2); + _Dst = (void *)((longlong)_Dst + (ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 1) + 2) * 2); + } + puVar6 = *(ushort **)(param_1 + 0x288); + puVar4 = *(uint **)(param_1 + 0x270); + for (uVar8 = *(uint *)(param_1 + 0x41fc4) >> 1; uVar8 != 0; uVar8 = uVar8 - 1) { + for (uVar9 = *(uint *)(param_1 + 0x41fc0) >> 1; uVar9 != 0; uVar9 = uVar9 - 1) { + *puVar4 = ((int)((uint)puVar6[1] + (uint)*puVar6) >> 1) << 0x10 | (uint)*puVar6; + puVar6 = puVar6 + 1; + puVar4 = puVar4 + 1; + } + puVar5 = puVar6 + 2; + puVar6 = puVar6 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 1); + for (uVar9 = *(uint *)(param_1 + 0x41fc0) >> 1; uVar9 != 0; uVar9 = uVar9 - 1) { + uVar2 = *puVar6; + uVar3 = *puVar5; + puVar1 = puVar5 + 1; + puVar6 = puVar6 + 1; + puVar5 = puVar5 + 1; + *puVar4 = ((int)((uint)*puVar1 + (uint)*puVar6 + (uint)uVar3 + (uint)uVar2) >> 2) << 0x10 | + (int)((uint)uVar3 + (uint)uVar2) >> 1; + puVar4 = puVar4 + 1; + } + puVar6 = puVar6 + 2; + } + return; +} + + +================================================================== + +### ADDR 180018660 FUNC 180018660 (956 bytes) name=FUN_180018660 + +void FUN_180018660(longlong param_1) + +{ + ushort *puVar1; + void *_Src; + ushort uVar2; + ushort uVar3; + void *_Dst; + uint *puVar4; + ushort *puVar5; + int iVar6; + ushort *puVar7; + uint uVar8; + uint uVar9; + + _Dst = *(void **)(param_1 + 0x288); + _Src = (void *)(*(longlong *)(param_1 + 0x270) + + ((ulonglong)(uint)(*(int *)(param_1 + 0x41ff0) * *(int *)(param_1 + 0x41fc0)) + + (ulonglong)*(uint *)(param_1 + 0x41fec)) * 2); + for (iVar6 = (*(uint *)(param_1 + 0x41fc4) >> 2) + 1; iVar6 != 0; iVar6 = iVar6 + -1) { + memcpy(_Dst,_Src,(ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 2) + 2) * 2); + _Src = (void *)((longlong)_Src + (ulonglong)*(uint *)(param_1 + 0x41fc0) * 2); + _Dst = (void *)((longlong)_Dst + (ulonglong)((*(uint *)(param_1 + 0x41fc0) >> 2) + 2) * 2); + } + puVar7 = *(ushort **)(param_1 + 0x288); + puVar4 = *(uint **)(param_1 + 0x270); + for (uVar9 = *(uint *)(param_1 + 0x41fc4) >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + uVar2 = *puVar7; + *puVar4 = ((int)((uint)uVar2 + (uint)uVar2 * 2 + (uint)puVar7[1]) >> 2) << 0x10 | (uint)uVar2; + uVar2 = puVar7[1]; + puVar4[1] = ((int)((uint)*puVar7 + (uint)uVar2 * 2 + (uint)uVar2) >> 2) << 0x10 | + (int)((uint)uVar2 + (uint)*puVar7) >> 1; + puVar7 = puVar7 + 1; + puVar4 = puVar4 + 2; + } + puVar5 = puVar7 + 2; + puVar7 = puVar7 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 2); + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + iVar6 = (uint)*puVar7 + (uint)*puVar7 * 2; + *puVar4 = ((int)(((uint)puVar7[1] + (uint)*puVar5 + iVar6) * 3 + (uint)puVar5[1]) >> 4) << + 0x10 | (int)((uint)*puVar5 + iVar6) >> 2; + uVar2 = puVar7[1]; + uVar3 = puVar5[1]; + puVar4[1] = ((int)((uint)*puVar5 + + ((uint)uVar3 + (uint)uVar2 * 2 + (uint)uVar2 + (uint)*puVar7) * 3) >> 4) << + 0x10 | (int)((uint)uVar3 + ((uint)uVar2 + (uint)*puVar7) * 3 + (uint)*puVar5) >> 3 + ; + puVar5 = puVar5 + 1; + puVar7 = puVar7 + 1; + puVar4 = puVar4 + 2; + } + puVar5 = puVar7 + 2; + puVar7 = puVar7 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 2); + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + puVar1 = puVar7 + 1; + *puVar4 = ((int)(((uint)*puVar7 + (uint)*puVar5) * 3 + (uint)puVar5[1] + (uint)*puVar1) >> 3) + << 0x10 | (int)((uint)*puVar7 + (uint)*puVar5) >> 1; + iVar6 = (uint)puVar5[1] + (uint)*puVar1; + puVar4[1] = ((int)((uint)*puVar5 + iVar6 * 3 + (uint)*puVar7) >> 3) << 0x10 | + (int)(iVar6 + (uint)*puVar5 + (uint)*puVar7) >> 2; + puVar5 = puVar5 + 1; + puVar7 = puVar1; + puVar4 = puVar4 + 2; + } + puVar5 = puVar7 + 2; + puVar7 = puVar7 + -(ulonglong)(*(uint *)(param_1 + 0x41fc0) >> 2); + for (uVar8 = *(uint *)(param_1 + 0x41fc0) >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + iVar6 = (uint)*puVar5 + (uint)*puVar5 * 2; + *puVar4 = ((int)(((uint)puVar5[1] + iVar6 + (uint)*puVar7) * 3 + (uint)puVar7[1]) >> 4) << + 0x10 | (int)(iVar6 + (uint)*puVar7) >> 2; + uVar2 = puVar5[1]; + uVar3 = puVar7[1]; + puVar4[1] = ((int)((uint)*puVar7 + + ((uint)uVar3 + (uint)uVar2 * 2 + (uint)uVar2 + (uint)*puVar5) * 3) >> 4) << + 0x10 | (int)((uint)uVar3 + ((uint)uVar2 + (uint)*puVar5) * 3 + (uint)*puVar7) >> 3 + ; + puVar5 = puVar5 + 1; + puVar7 = puVar7 + 1; + puVar4 = puVar4 + 2; + } + puVar7 = puVar7 + 2; + } + return; +} + + +================================================================== + +### ADDR 180015680 FUNC 180015680 (88 bytes) name=FUN_180015680 + +uint FUN_180015680(longlong param_1,undefined8 param_2,uint param_3) + +{ + int iVar1; + uint uVar2; + undefined8 in_RAX; + undefined2 uVar3; + + if (*(int *)(param_1 + 0x47950) != 0) { + iVar1 = FUN_180015940(param_1,30000,param_3); + uVar2 = iVar1 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < (int)uVar2) { + uVar2 = 0xffff; + } + return uVar2; + } + uVar2 = param_3 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar3 = (undefined2)uVar2; + if (0xffff < uVar2) { + uVar3 = 0xffff; + } + return (uint)CONCAT62((int6)((ulonglong)in_RAX >> 0x10),uVar3); +} + + +================================================================== + +### ADDR 18000d2a0 FUNC 18000d2a0 (839 bytes) name=FUN_18000d2a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000d2a0(longlong param_1) + +{ + int iVar1; + int iVar2; + uint uVar3; + float fVar4; + float fVar5; + + memcpy((void *)(param_1 + 0x44c98),(void *)(param_1 + 0x41ff8),0x2ca0); + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42018), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44cb8) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x4202c), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44ccc) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42010),*(uint *)(param_1 + 0x44cc0),1) + ; + *(int *)(param_1 + 0x44cb0) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42030), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44cd0) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42014),*(uint *)(param_1 + 0x44cc4),1) + ; + *(int *)(param_1 + 0x44cb4) = iVar1; + if (*(int *)(param_1 + 0xcc) == 2) { + iVar1 = *(int *)(param_1 + 0x44cb8); + } + else { + if (*(int *)(param_1 + 0xcc) != 3) goto LAB_18000d3c5; + iVar1 = *(int *)(param_1 + 0x60); + } + *(float *)(param_1 + 0xd8) = (float)iVar1 * _DAT_18005e9f0; +LAB_18000d3c5: + iVar1 = *(int *)(param_1 + 0x47950); + if (iVar1 == 0) { + iVar2 = (uint)*(ushort *)(param_1 + 0x4201c) << + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar2 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uint)*(ushort *)(param_1 + 0x4201c) << + (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f)); + } + *(int *)(param_1 + 0x44cbc) = iVar2; + uVar3 = (uint)(longlong)(*(float *)(param_1 + 0x42034) * _DAT_18005e9ec); + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + fVar5 = DAT_18005e9e8; + fVar4 = *(float *)(param_1 + 0x44c8c) * DAT_18005e9e8; + *(float *)(param_1 + 0x44cd4) = (float)uVar3 * DAT_18005e9e4; + uVar3 = (uint)(longlong)fVar4; + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + fVar4 = DAT_18005e9e0; + *(float *)(param_1 + 0x4792c) = (float)uVar3 * DAT_18005e9e0; + uVar3 = (uint)(longlong)(*(float *)(param_1 + 0x44c90) * fVar5); + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + *(float *)(param_1 + 0x47930) = (float)uVar3 * fVar4; + if (*(int *)(param_1 + 0x78) != 0) { + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb8),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb8) = iVar1; + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb4),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb4) = iVar1; + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb0),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb0) = iVar1; + } + iVar1 = *(int *)(param_1 + 0x44cb4); + if (*(int *)(param_1 + 0x44cb0) < iVar1) { + *(int *)(param_1 + 0x44cb0) = iVar1; + } + if (*(int *)(param_1 + 0x44cb0) < *(int *)(param_1 + 0x44cb8)) { + *(int *)(param_1 + 0x44cb8) = *(int *)(param_1 + 0x44cb0); + } + if (*(int *)(param_1 + 0x44cb8) < iVar1) { + *(int *)(param_1 + 0x44cb8) = iVar1; + } + return; +} + + +================================================================== + +### ADDR 180019740 FUNC 180019740 (1000 bytes) name=FUN_180019740 + +void FUN_180019740(longlong param_1) + +{ + byte *pbVar1; + byte bVar2; + byte bVar3; + int iVar4; + int iVar5; + int iVar6; + longlong lVar7; + longlong lVar8; + longlong lVar9; + longlong lVar10; + longlong lVar11; + longlong lVar12; + int iVar13; + longlong lVar14; + int iVar15; + int iVar16; + int local_res10; + int local_res18; + + iVar4 = *(int *)(param_1 + 0x41fc4); + iVar5 = *(int *)(param_1 + 0x41fc0); + lVar7 = (longlong)iVar5; + lVar9 = *(longlong *)(param_1 + 0x2a0); + lVar10 = *(longlong *)(param_1 + 0x220); + if (1 < iVar4) { + local_res18 = 1; + iVar15 = 0; + local_res10 = 0; + do { + if (2 < iVar5) { + iVar13 = 0; + iVar16 = iVar15; + do { + lVar11 = (longlong)iVar16; + bVar2 = *(byte *)(lVar11 + 1 + lVar9); + iVar16 = iVar16 + 2; + lVar14 = (longlong)(iVar13 / 2 + iVar15); + lVar8 = lVar7 + lVar11; + *(uint *)(lVar10 + lVar14 * 4) = + ((((int)((uint)*(byte *)(lVar11 + 2 + lVar9) + (uint)bVar2) >> 1) * 0x100 + + (uint)bVar2) * 0x100 + ((int)((uint)*(byte *)(lVar11 + lVar9) + (uint)bVar2) >> 1)) + * 0x100 + (uint)*(byte *)(lVar11 + lVar9); + bVar2 = *(byte *)(lVar8 + 1 + lVar9); + bVar3 = *(byte *)(lVar11 + 1 + lVar9); + *(int *)(lVar10 + (lVar14 + iVar5 / 2) * 4) = + ((((int)((uint)*(byte *)(lVar11 + 2 + lVar9) + + (uint)*(byte *)(lVar8 + 2 + lVar9) + (uint)bVar2 + (uint)bVar3) >> 2) * + 0x100 + ((int)((uint)bVar2 + (uint)bVar3) >> 1)) * 0x100 + + ((int)((uint)*(byte *)(lVar8 + lVar9) + (uint)bVar2 + (uint)*(byte *)(lVar11 + lVar9) + + (uint)bVar3) >> 2)) * 0x100 + + ((int)((uint)*(byte *)(lVar8 + lVar9) + (uint)*(byte *)(lVar11 + lVar9)) >> 1); + iVar6 = iVar13 + 4; + iVar13 = iVar13 + 2; + } while (iVar6 < iVar5); + } + iVar16 = iVar15 + iVar5 + -2; + iVar15 = iVar15 + iVar5; + lVar8 = (longlong)iVar16; + lVar11 = (longlong)(local_res10 + iVar5 + -2); + *(ushort *)(lVar10 + lVar11 * 2) = + (short)((int)((uint)*(byte *)(lVar8 + 1 + lVar9) + (uint)*(byte *)(lVar8 + lVar9)) >> 1) + * 0x100 + (ushort)*(byte *)(lVar8 + lVar9); + bVar2 = *(byte *)(lVar8 + lVar7 + lVar9); + local_res10 = local_res10 + iVar5 * 2; + *(short *)(lVar10 + (lVar11 + lVar7) * 2) = + (short)((int)((uint)*(byte *)(lVar8 + 1 + lVar9) + + (uint)*(byte *)(lVar8 + lVar7 + 1 + lVar9) + (uint)bVar2 + + (uint)*(byte *)(lVar8 + lVar9)) >> 2) * 0x100 + + (short)((int)((uint)bVar2 + (uint)*(byte *)(lVar8 + lVar9)) >> 1); + local_res18 = local_res18 + 1; + } while (local_res18 < iVar4); + } + lVar8 = (longlong)(iVar5 * 2); + if (1 < iVar4) { + iVar16 = iVar5 + -1; + iVar15 = 0; + do { + lVar12 = (longlong)iVar16; + lVar11 = lVar12 + lVar7; + iVar16 = iVar16 + iVar5; + lVar14 = (longlong)(iVar15 * 2 * iVar5 * 2 + iVar5 * 2 + -2); + *(undefined1 *)(lVar14 + lVar10) = *(undefined1 *)(lVar12 + lVar9); + *(byte *)(lVar14 + 1 + lVar10) = + (char)((int)((uint)*(byte *)(lVar12 + lVar9) + (uint)*(byte *)(lVar12 + lVar9) * 2) >> 2) + + (*(byte *)(lVar12 + -1 + lVar9) >> 2); + *(char *)(lVar14 + lVar8 + lVar10) = + (char)((int)((uint)*(byte *)(lVar11 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) >> 1); + iVar13 = iVar15 + 2; + *(char *)(lVar14 + lVar8 + 1 + lVar10) = + (char)((int)(((uint)*(byte *)(lVar11 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) * 3 + + (uint)*(byte *)(lVar11 + -1 + lVar9) + (uint)*(byte *)(lVar12 + -1 + lVar9)) + >> 3); + iVar15 = iVar15 + 1; + } while (iVar13 < iVar4); + } + iVar15 = 1; + if (1 < iVar5) { + lVar11 = lVar9 - lVar7; + iVar13 = (iVar4 + -1) * iVar5; + iVar16 = (iVar4 * 2 + -2) * iVar5 * 2; + do { + lVar12 = (longlong)iVar13; + lVar14 = (longlong)iVar16; + iVar15 = iVar15 + 1; + iVar13 = iVar13 + 1; + *(undefined1 *)(lVar14 + lVar10) = *(undefined1 *)(lVar12 + lVar9); + iVar16 = iVar16 + 2; + *(char *)(lVar14 + 1 + lVar10) = + (char)((int)((uint)*(byte *)(lVar12 + 1 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) >> 1) + ; + *(byte *)(lVar14 + lVar8 + lVar10) = + (char)((int)((uint)*(byte *)(lVar12 + lVar9) + (uint)*(byte *)(lVar12 + lVar9) * 2) >> 2) + + (*(byte *)(lVar12 + lVar11) >> 2); + *(char *)(lVar14 + lVar8 + 1 + lVar10) = + (char)((int)(((uint)*(byte *)(lVar12 + 1 + lVar9) + (uint)*(byte *)(lVar12 + lVar9)) * 3 + + (uint)*(byte *)(lVar12 + 1 + lVar11) + (uint)*(byte *)(lVar12 + lVar11)) + >> 3); + } while (iVar15 < iVar5); + } + lVar9 = (longlong)((iVar4 + -1) * iVar5 + iVar5 + -1); + lVar10 = (longlong)((iVar4 * 2 + -2) * iVar5 * 2 + (iVar5 + -1) * 2); + *(undefined1 *)(lVar10 + *(longlong *)(param_1 + 0x220)) = + *(undefined1 *)(lVar9 + *(longlong *)(param_1 + 0x2a0)); + bVar2 = *(byte *)(lVar9 + *(longlong *)(param_1 + 0x2a0)); + *(char *)(lVar10 + 1 + *(longlong *)(param_1 + 0x220)) = + (char)((int)((uint)bVar2 + (uint)bVar2 * 2 + + (uint)*(byte *)(lVar9 + -1 + *(longlong *)(param_1 + 0x2a0))) >> 2); + bVar2 = *(byte *)(lVar9 + *(longlong *)(param_1 + 0x2a0)); + *(char *)(lVar10 + *(longlong *)(param_1 + 0x220) + lVar8) = + (char)((int)((uint)*(byte *)((lVar9 - lVar7) + *(longlong *)(param_1 + 0x2a0)) + + (uint)bVar2 + (uint)bVar2 * 2) >> 2); + pbVar1 = (byte *)(lVar10 + *(longlong *)(param_1 + 0x220)); + pbVar1[lVar8 + 1] = + (byte)((ulonglong) + ((longlong) + (int)((uint)*(byte *)(lVar10 + 1 + *(longlong *)(param_1 + 0x220)) + + (uint)pbVar1[lVar8] + (uint)*pbVar1) * 0x55555556) >> 0x20); + return; +} + + +================================================================== + +### ADDR 18000ffb0 FUNC 18000ffb0 (1995 bytes) name=FUN_18000ffb0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000ffb0(longlong param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + uint uVar8; + int iVar9; + longlong lVar10; + int *piVar11; + int *piVar12; + int iVar13; + longlong lVar14; + float fVar15; + int local_78 [12]; + int local_48 [12]; + + if ((*(int *)(param_1 + 0x41340) != 0) && (*(int *)(param_1 + 0x41344) != 0)) { + iVar2 = (*(int *)(param_1 + 0x41568) + *(int *)(param_1 + 0x41564)) / 2; + if (*(float *)(param_1 + 0x9c) == _DAT_180057598) { + *(undefined4 *)(param_1 + 0x418c4) = 1; + *(undefined4 *)(param_1 + 0x4195c) = *(undefined4 *)(param_1 + 0x47944); + *(int *)(param_1 + 0x41960) = (*(int *)(param_1 + 0x47948) + *(int *)(param_1 + 0x54)) - iVar2 + ; + return; + } + iVar6 = *(int *)(param_1 + 0x54); + fVar15 = ((float)(iVar6 - iVar2) * *(float *)(param_1 + 0x9c)) / _DAT_18005e820 + DAT_18005e700; + if (fVar15 < DAT_18005e824) { + fVar15 = DAT_18005e824; + } + iVar1 = *(int *)(param_1 + 0x47950); + *(undefined4 *)(param_1 + 0x418c4) = 10; + iVar13 = 0; + local_48[0] = 0; + iVar9 = iVar2 - (int)((float)iVar6 * fVar15); + iVar3 = 0; + if (iVar1 == 0) { + local_78[0] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[0] < 0) { + local_78[0] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)((iVar9 >> 0x1f & 0xfffU) + iVar9) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[0] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[1] = 10000; + iVar9 = (int)((float)(10000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[1] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[1] < 0) { + local_78[1] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[1] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[2] = 20000; + iVar9 = (int)((float)(20000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[2] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[2] < 0) { + local_78[2] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[2] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[3] = 30000; + iVar9 = (int)((float)(30000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[3] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[3] < 0) { + local_78[3] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar4 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar7 = iVar3; + if ((-1 < iVar4) && (iVar7 = iVar4, 0x285 < iVar4)) { + iVar7 = 0x285; + } + iVar9 = (iVar9 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[3] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[4] = 40000; + iVar9 = (int)((float)(40000 - iVar6) * fVar15) + iVar2; + iVar7 = 0; + if (iVar1 == 0) { + local_78[4] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[4] < 0) { + local_78[4] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar5 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar7; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar9 = (iVar9 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[4] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[5] = 50000; + iVar9 = (int)((float)(50000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[5] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[5] < 0) { + local_78[5] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar5 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar7; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar9 = (iVar9 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[5] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[6] = 60000; + iVar9 = (int)((float)(60000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[6] = iVar9 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[6] < 0) { + local_78[6] = iVar13; + } + } + else { + iVar9 = iVar9 + 150000; + iVar5 = (int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar7; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar9 = (iVar9 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar9 = ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar9 < 0) { + iVar9 = iVar13; + } + local_78[6] = iVar9 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + local_48[7] = 70000; + iVar6 = (int)((float)(70000 - iVar6) * fVar15) + iVar2; + if (iVar1 == 0) { + local_78[7] = iVar6 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (local_78[7] < 0) { + local_78[7] = iVar13; + } + } + else { + iVar6 = iVar6 + 150000; + iVar9 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc; + if ((-1 < iVar9) && (iVar7 = iVar9, 0x285 < iVar9)) { + iVar7 = 0x285; + } + iVar6 = (iVar6 + iVar7 * -0x1000) * ((&DAT_180099004)[iVar7] - (&DAT_180099000)[iVar7]); + iVar6 = ((int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar7]; + if (iVar6 < 0) { + iVar6 = iVar13; + } + local_78[7] = iVar6 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar9 = 80000; + lVar10 = 0x20; + iVar6 = 80000 - *(int *)(param_1 + 0x54); + do { + *(int *)((longlong)local_48 + lVar10) = iVar9; + iVar7 = (int)((float)iVar6 * fVar15) + iVar2; + if (iVar1 == 0) { + iVar7 = iVar7 - *(int *)(param_1 + 0x47948) >> + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + if (iVar7 < 0) { + iVar7 = iVar13; + } + } + else { + iVar7 = iVar7 + 150000; + iVar5 = (int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc; + iVar4 = iVar3; + if ((-1 < iVar5) && (iVar4 = iVar5, 0x285 < iVar5)) { + iVar4 = 0x285; + } + iVar7 = (iVar7 + iVar4 * -0x1000) * ((&DAT_180099004)[iVar4] - (&DAT_180099000)[iVar4]); + iVar7 = ((int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc) + (&DAT_180099000)[iVar4]; + if (iVar7 < 0) { + iVar7 = iVar13; + } + iVar7 = iVar7 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + } + iVar9 = iVar9 + 10000; + *(int *)((longlong)local_78 + lVar10) = iVar7; + lVar10 = lVar10 + 4; + iVar6 = iVar6 + 10000; + } while (iVar9 < 110000); + piVar11 = (int *)(param_1 + 0x418cc); + piVar12 = (int *)(param_1 + 0x41960); + lVar10 = 0; + do { + iVar2 = *(int *)((longlong)local_78 + lVar10 + 4); + iVar6 = *(int *)((longlong)local_48 + lVar10 + 4); + iVar9 = *(int *)((longlong)local_78 + lVar10); + iVar1 = *(int *)((longlong)local_48 + lVar10); + iVar3 = *(int *)((longlong)local_78 + lVar10 + 0xc); + piVar11[-1] = iVar2; + lVar14 = lVar10 + 0x14; + uVar8 = iVar2 - iVar9; + uVar8 = (((uVar8 >> 1) - iVar1) + iVar6) / uVar8; + piVar12[-1] = uVar8; + iVar13 = *(int *)((longlong)local_78 + lVar10 + 8); + *piVar12 = iVar1 - iVar9 * uVar8; + iVar9 = *(int *)((longlong)local_48 + lVar10 + 8); + *piVar11 = iVar13; + uVar8 = ((((uint)(iVar13 - iVar2) >> 1) - iVar6) + iVar9) / (uint)(iVar13 - iVar2); + piVar12[1] = uVar8; + iVar1 = *(int *)((longlong)local_78 + lVar10 + 0x10); + piVar12[2] = iVar6 - iVar2 * uVar8; + iVar2 = *(int *)((longlong)local_48 + lVar10 + 0xc); + piVar11[1] = iVar3; + uVar8 = ((((uint)(iVar3 - iVar13) >> 1) - iVar9) + iVar2) / (uint)(iVar3 - iVar13); + piVar12[3] = uVar8; + iVar6 = *(int *)((longlong)local_48 + lVar10 + 0x10); + piVar12[4] = iVar9 - iVar13 * uVar8; + iVar9 = *(int *)((longlong)local_78 + lVar10 + 0x14); + piVar11[2] = iVar1; + uVar8 = ((((uint)(iVar1 - iVar3) >> 1) - iVar2) + iVar6) / (uint)(iVar1 - iVar3); + piVar12[5] = uVar8; + iVar13 = *(int *)((longlong)local_48 + lVar10 + 0x14); + piVar12[6] = iVar2 - iVar3 * uVar8; + piVar11[3] = iVar9; + uVar8 = iVar9 - iVar1; + uVar8 = ((iVar13 + (uVar8 >> 1)) - iVar6) / uVar8; + piVar12[7] = uVar8; + piVar12[8] = iVar6 - iVar1 * uVar8; + piVar11 = piVar11 + 5; + piVar12 = piVar12 + 10; + lVar10 = lVar14; + } while (lVar14 < 0x28); + } + return; +} + + +================================================================== + +### ADDR 1800108a0 FUNC 1800108a0 (284 bytes) name=FUN_1800108a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_1800108a0(longlong param_1) + +{ + ushort uVar1; + uint uVar2; + int iVar3; + int iVar4; + + iVar4 = *(int *)(param_1 + 0x4c); + uVar2 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar2 = uVar2 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar1 = (ushort)uVar2; + if (0xffff < uVar2) { + uVar1 = 0xffff; + } + } + else { + iVar3 = FUN_180015940(param_1,30000,uVar2); + iVar3 = iVar3 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < iVar3) { + iVar3 = 0xffff; + } + uVar1 = (ushort)iVar3; + } + if (iVar4 < 0) { + if (iVar4 < -100) { + iVar4 = -100; + } + iVar3 = -0x51eb851f; + } + else { + if (100 < iVar4) { + iVar4 = 100; + } + iVar3 = -0x1b4e81b5; + } + iVar4 = (int)((ulonglong)((longlong)iVar3 * (longlong)(int)((uint)uVar1 * iVar4)) >> 0x20); + iVar4 = (uint)uVar1 + ((iVar4 >> 4) - (iVar4 >> 0x1f)); + if (((*(int *)(param_1 + 0x41340) != 0) && (_DAT_180057598 < *(float *)(param_1 + 0x9c))) && + ((*(int *)(param_1 + 0x41558) == 1 || + ((*(int *)(param_1 + 0x41558) == 2 && + (*(int *)(param_1 + 0x41568) - *(int *)(param_1 + 0x41564) == 50000)))))) { + iVar4 = iVar4 + (int)(((float)((*(int *)(param_1 + 0x54) - + (*(int *)(param_1 + 0x41568) + *(int *)(param_1 + 0x41564)) / 2) + * iVar4) * *(float *)(param_1 + 0x9c)) / _DAT_18005e820); + } + iVar3 = 0x80; + if (0x80 < iVar4) { + iVar3 = iVar4; + } + return iVar3; +} + + +================================================================== + +### ADDR 180011ee0 FUNC 180011ee0 (3137 bytes) name=FUN_180011ee0 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_180011ee0(longlong param_1,ushort *param_2) + +{ + ulonglong *puVar1; + uint *puVar2; + bool bVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + DWORD DVar8; + int iVar9; + int iVar10; + ulonglong uVar11; + uint uVar12; + uint *puVar14; + ulonglong uVar15; + ushort uVar16; + uint uVar17; + int iVar18; + ulonglong uVar19; + longlong lVar20; + uint uVar21; + int iVar22; + int iVar23; + longlong lVar24; + longlong lVar25; + int iVar26; + uint local_res8; + uint local_1038 [1024]; + ulonglong uVar13; + + local_1038[0x3fe] = 0x80011efa; + local_1038[0x3ff] = 1; + puVar1 = (ulonglong *)(param_1 + 0x42c4c); + puVar2 = (uint *)(param_1 + 0x43c4c); + uVar5 = FUN_180011950(param_1,param_2,puVar1); + bVar3 = true; + lVar24 = 0x155; + uVar21 = uVar5 >> 0xc; + puVar14 = (uint *)(param_1 + 0x42c50); + if (uVar21 == 0) { + uVar21 = 1; + } + do { + puVar14[-1] = *puVar14 + puVar14[-1] >> 1; + *puVar14 = puVar14[1] + *puVar14 >> 1; + lVar24 = lVar24 + -1; + puVar14[1] = puVar14[2] + puVar14[1] >> 1; + puVar14 = puVar14 + 3; + } while (lVar24 != 0); + *(undefined4 *)(param_1 + 0x43c48) = *(undefined4 *)(param_1 + 0x43c44); + if (*(int *)(param_1 + 0x88) == 0) { + iVar18 = *(int *)(param_1 + 0x42018); + } + else { + iVar18 = *(int *)(param_1 + 0x44c64); + } + uVar15 = 0; + local_res8 = (uint)((iVar18 - *(int *)(param_1 + 0x42030)) * 0x3ff) / + (uint)(*(int *)(param_1 + 0x4202c) - *(int *)(param_1 + 0x42030)); + iVar18 = 0; + if (*(int *)(param_1 + 0x8c) != 0) { + uVar11 = uVar15; + uVar13 = uVar15; + uVar19 = uVar15; + do { + uVar12 = (int)uVar13 + *(int *)((longlong)puVar1 + uVar11 * 4); + uVar13 = (ulonglong)uVar12; + uVar17 = (uint)uVar19; + if (uVar5 * 3 >> 2 <= uVar12) { + if ((int)local_res8 < (int)uVar17) { + local_res8 = uVar17; + } + break; + } + uVar11 = uVar11 + 1; + uVar19 = (ulonglong)(uVar17 + 1); + } while ((longlong)uVar11 < 0x400); + } + lVar24 = (longlong)(int)local_res8; + if (-1 < (int)local_res8) { + uVar11 = uVar15; + puVar14 = puVar2 + lVar24; + lVar20 = lVar24; + uVar13 = uVar15; + do { + uVar5 = (int)uVar11 + *(int *)((longlong)puVar14 + ((longlong)puVar1 - (longlong)puVar2)); + uVar11 = (ulonglong)uVar5; + if (uVar21 <= uVar5) { + uVar13 = (ulonglong)((int)uVar13 + 0x100); + uVar11 = uVar15; + } + lVar20 = lVar20 + -1; + *puVar14 = ((0x10000 / uVar21) * (int)uVar11 >> 8) + (int)uVar13; + puVar14 = puVar14 + -1; + } while (-1 < lVar20); + } + lVar20 = (longlong)(int)(local_res8 + 1); + if (lVar20 < 0x400) { + lVar25 = 0x400 - lVar20; + uVar11 = uVar15; + uVar13 = uVar15; + puVar14 = puVar2 + lVar20; + do { + uVar5 = (int)uVar11 + *(int *)((longlong)puVar14 + ((longlong)puVar1 - (longlong)puVar2)); + uVar11 = (ulonglong)uVar5; + if (uVar5 < uVar21 * 8) { + if (uVar21 <= uVar5) { + uVar5 = (int)uVar13 + 0x100; + goto LAB_18001209a; + } + } + else { + uVar5 = (int)uVar13 + 0x200; +LAB_18001209a: + uVar13 = (ulonglong)uVar5; + uVar11 = uVar15; + } + lVar25 = lVar25 + -1; + *puVar14 = ((0x10000 / uVar21) * (int)uVar11 >> 8) + (int)uVar13; + puVar14 = puVar14 + 1; + } while (lVar25 != 0); + } + iVar23 = *(int *)(param_1 + 0x4c); + uVar5 = *(int *)(param_1 + 0x24) * 1000; + if (*(int *)(param_1 + 0x47950) == 0) { + uVar5 = uVar5 >> ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + uVar16 = (ushort)uVar5; + if (0xffff < uVar5) { + uVar16 = 0xffff; + } + uVar5 = (uint)uVar16; + goto LAB_1800121bd; + } + iVar7 = uVar5 + 180000; + iVar6 = (int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc; + iVar10 = iVar18; + if (iVar6 < 0) { +LAB_1800120f5: + iVar6 = (iVar7 + iVar10 * -0x1000) * ((&DAT_180099004)[iVar10] - (&DAT_180099000)[iVar10]); + iVar7 = (DAT_1800990ac - DAT_1800990b0) * 0xf20; + iVar7 = ((((int)((iVar6 >> 0x1f & 0xfffU) + iVar6) >> 0xc) + + ((int)(iVar7 + (iVar7 >> 0x1f & 0xfffU)) >> 0xc)) - DAT_1800990ac) + + (&DAT_180099000)[iVar10]; + } + else { + if (0x285 < iVar6) { + iVar10 = 0x285; + goto LAB_1800120f5; + } + iVar10 = iVar6; + if (iVar6 != 0x2b) goto LAB_1800120f5; + iVar7 = (DAT_1800990b0 - DAT_1800990ac) * uVar5; + iVar7 = (int)((iVar7 >> 0x1f & 0xfffU) + iVar7) >> 0xc; + } + uVar5 = iVar7 >> (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + if (0xffff < (int)uVar5) { + uVar5 = 0xffff; + } +LAB_1800121bd: + if (iVar23 < 0) { + iVar7 = -0x51eb851f; + if (iVar23 < -100) { + iVar23 = -100; + } + } + else { + iVar7 = -0x1b4e81b5; + if (100 < iVar23) { + iVar23 = 100; + } + } + iVar23 = (int)((ulonglong)((longlong)iVar7 * (longlong)(int)((uVar5 & 0xffff) * iVar23)) >> 0x20); + uVar5 = (uVar5 & 0xffff) + ((iVar23 >> 4) - (iVar23 >> 0x1f)); + if (((*(int *)(param_1 + 0x41340) != 0) && (_DAT_180057598 < *(float *)(param_1 + 0x9c))) && + ((*(int *)(param_1 + 0x41558) == 1 || + ((*(int *)(param_1 + 0x41558) == 2 && + (*(int *)(param_1 + 0x41568) - *(int *)(param_1 + 0x41564) == 50000)))))) { + uVar5 = uVar5 + (int)(((float)(int)((*(int *)(param_1 + 0x54) - + (*(int *)(param_1 + 0x41568) + *(int *)(param_1 + 0x41564)) + / 2) * uVar5) * *(float *)(param_1 + 0x9c)) / _DAT_18005e820 + ); + } + iVar23 = *(int *)(param_1 + 0x42030); + uVar12 = *(int *)(param_1 + 0x4202c) - iVar23; + uVar21 = 0x80; + if (0x80 < (int)uVar5) { + uVar21 = uVar5; + } + uVar21 = (uVar12 * 0x10) / uVar21; + if (uVar21 == 0) { + uVar21 = 1; + } + else if (0x200 < uVar21) { + uVar21 = 0x200; + } + uVar5 = uVar21 * 0x1800; + uVar11 = uVar15; + do { + uVar17 = 1; + if (uVar5 >> 0xd != 0) { + uVar17 = uVar5 >> 0xd; + } + uVar5 = uVar5 + uVar21 * 4; + local_1038[uVar11] = uVar17; + uVar11 = uVar11 + 1; + } while ((longlong)uVar11 < 0x400); + iVar10 = 0x332; + iVar7 = 100; + if (*(int *)(param_1 + 0x48) < 100) { + iVar7 = *(int *)(param_1 + 0x48); + } + iVar6 = -100; + if (-100 < iVar7) { + iVar6 = iVar7; + } + iVar6 = (iVar6 * 0x155) / 200; + iVar7 = iVar6 + 0x155; + iVar26 = iVar7; + if (0x331 < iVar6 + 0x156) { + iVar26 = 0x330; + } + iVar6 = *(int *)(param_1 + 0x42014); + iVar22 = (int)(0xffc00000 / (ulonglong)uVar12); + iVar9 = *(int *)(param_1 + 0x42010); + if (iVar26 + 1 < 0x332) { + do { + iVar7 = (iVar10 + iVar26) / 2; + if (bVar3) { + bVar3 = false; + iVar7 = iVar26; + } + uVar5 = *puVar2; + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10 + 0x10; + for (lVar20 = lVar24; -1 < lVar20; lVar20 = lVar20 + -1) { + uVar12 = (iVar7 * 0x10 + 0x10) - + (puVar2[lVar20] * ((iVar7 * 0x40000 + 0x40000U) / uVar5) >> 0xe); + if (local_1038[lVar20] < uVar21 - uVar12) { + uVar12 = uVar21 - local_1038[lVar20]; + } + *(char *)(lVar20 + 0x4284c + param_1) = (char)(uVar12 >> 6); + uVar21 = uVar12; + } + } + uVar5 = *(uint *)(param_1 + 0x44c48); + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10; + lVar20 = lVar24; + while (lVar25 = lVar20 + 1, lVar25 < 0x400) { + uVar12 = (puVar2[lVar25] * ((iVar7 * -0x40000 + 0xffc0000U) / uVar5) >> 0xe) + + iVar7 * 0x10; + if (local_1038[lVar25] < uVar12 - uVar21) { + uVar12 = local_1038[lVar25] + uVar21; + } + *(char *)(lVar20 + 0x4284d + param_1) = (char)(uVar12 >> 6); + uVar21 = uVar12; + lVar20 = lVar25; + } + } + iVar4 = iVar7; + if ((*(char *)((ulonglong)((uint)((iVar6 - iVar23) * iVar22) >> 0x16) + 0x4284c + param_1) == + '\0') && + (*(char *)((ulonglong)((uint)((iVar9 - iVar23) * iVar22) >> 0x16) + 0x4284c + param_1) != + -1)) { + iVar4 = iVar10; + iVar26 = iVar7; + } + iVar10 = iVar4; + } while (iVar26 + 1 < iVar10); + } + DVar8 = GetTickCount(); + if ((((DVar8 - *(int *)(param_1 + 0x44c6c) < 0x78) && + (*(int *)(param_1 + 0x44c70) == *(int *)(param_1 + 0x4c))) && + (*(int *)(param_1 + 0x44c74) == *(int *)(param_1 + 0x48))) && + ((uVar5 = *(int *)(param_1 + 0x44c78) - local_res8, uVar21 = (int)uVar5 >> 0x1f, + (int)((uVar5 ^ uVar21) - uVar21) < 0xb && + (uVar5 = *(int *)(param_1 + 0x44c7c) - iVar7, uVar21 = (int)uVar5 >> 0x1f, + 1 < (int)((uVar5 ^ uVar21) - uVar21))))) { + iVar23 = *(int *)(param_1 + 0x47928); + uVar5 = *(int *)(param_1 + 0x42018) - *(int *)(param_1 + 0x44c88); + uVar21 = (int)uVar5 >> 0x1f; + uVar21 = (uVar5 ^ uVar21) - uVar21; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar23 = (uVar21 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar10 = iVar23 + 150000; + uVar5 = (uVar21 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + iVar6 = (int)(iVar10 + (iVar10 >> 0x1f & 0xfffU)) >> 0xc; + if ((-1 < iVar6) && (iVar18 = iVar6, 0x285 < iVar6)) { + iVar18 = 0x285; + } + iVar6 = (&DAT_180099000)[iVar18]; + iVar26 = (&DAT_180099004)[iVar18] - iVar6; + if ((iVar26 < (int)(((uVar5 ^ (int)uVar5 >> 0x1f) - ((int)uVar5 >> 0x1f)) * 2)) && + ((iVar26 = (iVar10 + iVar18 * -0x1000) * iVar26, + iVar10 = iVar6 + ((int)(iVar26 + (iVar26 >> 0x1f & 0xfffU)) >> 0xc) + uVar5, + iVar10 < iVar6 || ((int)(&DAT_180099004)[iVar18] < iVar10)))) { + uVar5 = 0x286; + uVar11 = uVar15; + do { + uVar21 = (int)(uVar5 + (int)uVar11) >> 1; + if ((int)(&DAT_180099000)[(int)uVar21] <= iVar10) { + uVar11 = (ulonglong)uVar21; + uVar21 = uVar5; + } + uVar5 = uVar21; + iVar18 = (int)uVar11; + } while (iVar18 + 1U < uVar5); + iVar10 = iVar10 - (&DAT_180099000)[iVar18]; + if (DAT_180073748 < iVar10) { + iVar23 = ((int)((longlong)(int)(&DAT_180099a20)[iVar18] * (longlong)iVar10 >> 0xc) + + -150000 + iVar18 * 0x1000) - iVar23; + } + else { + iVar23 = (((&DAT_180099a20)[iVar18] * iVar10 >> 0xc) + -150000 + iVar18 * 0x1000) - iVar23 + ; + } + } + else { + iVar23 = (int)((&DAT_180099a20)[iVar18] * uVar5) >> 0xc; + } + } + iVar18 = *(int *)(param_1 + 0x47920); + uVar5 = *(int *)(param_1 + 0x42010) - *(int *)(param_1 + 0x44c80); + uVar21 = (int)uVar5 >> 0x1f; + uVar21 = (uVar5 ^ uVar21) - uVar21; + iVar10 = 0; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar18 = (uVar21 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar6 = iVar18 + 150000; + uVar5 = (uVar21 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + iVar9 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc; + iVar26 = iVar10; + if ((-1 < iVar9) && (iVar26 = iVar9, 0x285 < iVar9)) { + iVar26 = 0x285; + } + iVar9 = (&DAT_180099000)[iVar26]; + iVar22 = (&DAT_180099004)[iVar26] - iVar9; + if ((iVar22 < (int)(((uVar5 ^ (int)uVar5 >> 0x1f) - ((int)uVar5 >> 0x1f)) * 2)) && + ((iVar22 = (iVar6 + iVar26 * -0x1000) * iVar22, + iVar6 = iVar9 + ((int)(iVar22 + (iVar22 >> 0x1f & 0xfffU)) >> 0xc) + uVar5, iVar6 < iVar9 + || ((int)(&DAT_180099004)[iVar26] < iVar6)))) { + uVar5 = 0x286; + uVar11 = uVar15; + do { + uVar21 = (int)(uVar5 + (int)uVar11) >> 1; + if ((int)(&DAT_180099000)[(int)uVar21] <= iVar6) { + uVar11 = (ulonglong)uVar21; + uVar21 = uVar5; + } + uVar5 = uVar21; + iVar26 = (int)uVar11; + } while (iVar26 + 1U < uVar5); + iVar6 = iVar6 - (&DAT_180099000)[iVar26]; + if (DAT_180073748 < iVar6) { + iVar18 = ((int)((longlong)(int)(&DAT_180099a20)[iVar26] * (longlong)iVar6 >> 0xc) + + -150000 + iVar26 * 0x1000) - iVar18; + } + else { + iVar18 = (((&DAT_180099a20)[iVar26] * iVar6 >> 0xc) + -150000 + iVar26 * 0x1000) - iVar18; + } + } + else { + iVar18 = (int)((&DAT_180099a20)[iVar26] * uVar5) >> 0xc; + } + } + uVar5 = *(int *)(param_1 + 0x42014) - *(int *)(param_1 + 0x44c84); + uVar21 = (int)uVar5 >> 0x1f; + uVar21 = (uVar5 ^ uVar21) - uVar21; + if (*(int *)(param_1 + 0x47950) == 0) { + iVar10 = (uVar21 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar6 = *(int *)(param_1 + 0x47924) + 150000; + uVar5 = (uVar21 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f); + iVar26 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfffU)) >> 0xc; + if ((-1 < iVar26) && (iVar10 = iVar26, 0x285 < iVar26)) { + iVar10 = 0x285; + } + iVar26 = (&DAT_180099000)[iVar10]; + iVar9 = (&DAT_180099004)[iVar10] - iVar26; + if ((iVar9 < (int)(((uVar5 ^ (int)uVar5 >> 0x1f) - ((int)uVar5 >> 0x1f)) * 2)) && + ((iVar9 = (iVar6 + iVar10 * -0x1000) * iVar9, + iVar6 = iVar26 + ((int)(iVar9 + (iVar9 >> 0x1f & 0xfffU)) >> 0xc) + uVar5, iVar6 < iVar26 + || ((int)(&DAT_180099004)[iVar10] < iVar6)))) { + uVar5 = 0x286; + do { + uVar21 = (int)(uVar5 + (int)uVar15) >> 1; + if ((int)(&DAT_180099000)[(int)uVar21] <= iVar6) { + uVar15 = (ulonglong)uVar21; + uVar21 = uVar5; + } + uVar5 = uVar21; + iVar10 = (int)uVar15; + } while (iVar10 + 1U < uVar5); + iVar6 = iVar6 - (&DAT_180099000)[iVar10]; + if (DAT_180073748 < iVar6) { + iVar10 = ((int)((longlong)(int)(&DAT_180099a20)[iVar10] * (longlong)iVar6 >> 0xc) + + -150000 + iVar10 * 0x1000) - *(int *)(param_1 + 0x47924); + } + else { + iVar10 = (((&DAT_180099a20)[iVar10] * iVar6 >> 0xc) + -150000 + iVar10 * 0x1000) - + *(int *)(param_1 + 0x47924); + } + } + else { + iVar10 = (int)((&DAT_180099a20)[iVar10] * uVar5) >> 0xc; + } + } + iVar18 = iVar10 + iVar23 * 2 + iVar18; + if (iVar18 < 0x9c4) { + if (iVar18 < 100) { + iVar18 = 100; + } + puVar2 = (uint *)(param_1 + 0x43c4c); + iVar7 = (iVar18 * iVar7 + *(int *)(param_1 + 0x44c7c) * 500) / (iVar18 + 500); + uVar5 = *puVar2; + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10 + 0x10; + lVar24 = (longlong)(int)local_res8; + if (-1 < (int)local_res8) { + do { + uVar12 = (iVar7 * 0x10 + 0x10) - + (puVar2[lVar24] * ((iVar7 * 0x40000 + 0x40000U) / uVar5) >> 0xe); + if (local_1038[lVar24] < uVar21 - uVar12) { + uVar12 = uVar21 - local_1038[lVar24]; + } + lVar20 = lVar24 + -1; + *(char *)(lVar24 + 0x4284c + param_1) = (char)(uVar12 >> 6); + lVar24 = lVar20; + uVar21 = uVar12; + } while (-1 < lVar20); + } + } + uVar5 = *(uint *)(param_1 + 0x44c48); + if (uVar5 != 0) { + uVar21 = iVar7 * 0x10; + for (lVar24 = (longlong)(int)(local_res8 + 1); lVar24 < 0x400; lVar24 = lVar24 + 1) { + uVar12 = (puVar2[lVar24] * ((iVar7 * -0x40000 + 0xffc0000U) / uVar5) >> 0xe) + + iVar7 * 0x10; + if (local_1038[lVar24] < uVar12 - uVar21) { + uVar12 = local_1038[lVar24] + uVar21; + } + *(char *)(lVar24 + 0x4284c + param_1) = (char)(uVar12 >> 6); + uVar21 = uVar12; + } + } + } + } + *(int *)(param_1 + 0x44c7c) = iVar7; + *(DWORD *)(param_1 + 0x44c6c) = DVar8; + *(undefined4 *)(param_1 + 0x44c70) = *(undefined4 *)(param_1 + 0x4c); + *(undefined4 *)(param_1 + 0x44c74) = *(undefined4 *)(param_1 + 0x48); + *(uint *)(param_1 + 0x44c78) = local_res8; + *(undefined4 *)(param_1 + 0x44c80) = *(undefined4 *)(param_1 + 0x42010); + *(undefined4 *)(param_1 + 0x44c84) = *(undefined4 *)(param_1 + 0x42014); + *(undefined4 *)(param_1 + 0x44c88) = *(undefined4 *)(param_1 + 0x42018); + return; +} + + +================================================================== + +### ADDR 180011cc0 FUNC 180011cc0 (537 bytes) name=FUN_180011cc0 + +void FUN_180011cc0(longlong param_1) + +{ + ulonglong *puVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + longlong lVar8; + longlong lVar9; + ulonglong uVar10; + uint uVar11; + int iVar12; + int iVar13; + longlong lVar14; + int iVar15; + int *piVar16; + + uVar3 = FUN_180011950(param_1,*(ushort **)(param_1 + 0x270),(ulonglong *)(param_1 + 0x42c4c)); + if (*(int *)(param_1 + 0x88) == 0) { + iVar13 = *(int *)(param_1 + 0x42018); + } + else { + iVar13 = *(int *)(param_1 + 0x44c64); + } + iVar6 = 100; + if (*(int *)(param_1 + 0x48) < 100) { + iVar6 = *(int *)(param_1 + 0x48); + } + iVar4 = FUN_1800108a0(param_1); + iVar7 = *(int *)(param_1 + 0x4202c); + puVar1 = (ulonglong *)(param_1 + 0x4284c); + iVar12 = 0x3ff; + uVar5 = (uint)((iVar13 - *(int *)(param_1 + 0x42030)) * 0x3ff) / + (uint)(iVar7 - *(int *)(param_1 + 0x42030)); + iVar15 = -100; + if (-100 < iVar6) { + iVar15 = iVar6; + } + iVar6 = (iVar7 - iVar13) * 0xff; + uVar11 = (iVar15 * 0xff) / 200 + 0xffU >> 2; + uVar10 = (longlong)iVar6 % (longlong)iVar4 & 0xffffffff; + piVar16 = (int *)(param_1 + 0x43c48); + iVar15 = *piVar16; + iVar6 = iVar6 / iVar4 + uVar11; + if (0xff < iVar6) { + iVar6 = 0xff; + } + if (iVar6 == 0xff) { + for (; ((iVar15 < (int)(uVar3 >> 8) && ((int)(uVar5 + 1) < iVar12)) && + (uVar2 = (int)((0xff - uVar11) * iVar4) / 0xff, uVar10 = (ulonglong)uVar2, + (int)uVar2 < iVar7 - iVar13)); iVar7 = iVar7 / 0x3ff + *(int *)(param_1 + 0x42030)) { + iVar15 = iVar15 + piVar16[-1]; + iVar12 = iVar12 + -1; + piVar16 = piVar16 + -1; + iVar7 = (*(int *)(param_1 + 0x4202c) - *(int *)(param_1 + 0x42030)) * iVar12; + uVar10 = (ulonglong)((longlong)iVar7 * -0x7fdff7fd) >> 0x20; + } + } + lVar14 = (longlong)iVar12; + if ((int)uVar5 < lVar14) { + lVar8 = (longlong)(int)uVar5; + iVar13 = 0; + do { + lVar9 = lVar8 + 1; + uVar10 = (longlong)iVar13 % (longlong)(int)(iVar12 - uVar5) & 0xffffffff; + *(char *)(lVar8 + (longlong)puVar1) = (char)(iVar13 / (int)(iVar12 - uVar5)) + (char)uVar11; + lVar8 = lVar9; + iVar13 = iVar13 + (iVar6 - uVar11); + } while (lVar9 < lVar14); + } + if (lVar14 < 0x400) { + FUN_1800357d0((ulonglong *)(lVar14 + (longlong)puVar1),CONCAT71((int7)(uVar10 >> 8),0xff), + 0x400 - lVar14); + } + iVar13 = iVar12 + -1; + lVar14 = (longlong)iVar13; + if (-1 < iVar13) { + iVar7 = (iVar6 - uVar11) * (iVar13 - uVar5); + do { + iVar15 = iVar7 / (int)(iVar12 - uVar5) + uVar11; + if (iVar15 < 1) { + FUN_1800357d0(puVar1,0,(longlong)(iVar13 + 1)); + return; + } + *(char *)(lVar14 + (longlong)puVar1) = (char)iVar15; + iVar13 = iVar13 + -1; + iVar7 = iVar7 + (uVar11 - iVar6); + lVar14 = lVar14 + -1; + } while (-1 < lVar14); + } + return; +} + + +================================================================== + +### ADDR 180011380 FUNC 180011380 (1476 bytes) name=FUN_180011380 + +/* WARNING: Function: __chkstk replaced with injection: alloca_probe */ + +void FUN_180011380(longlong param_1) + +{ + uint *puVar1; + longlong lVar2; + float *pfVar3; + ulonglong uVar4; + ulonglong uVar5; + uint uVar6; + int iVar7; + ulonglong uVar8; + ulonglong uVar9; + uint uVar10; + uint uVar11; + ulonglong uVar12; + uint uVar13; + uint uVar14; + ushort *puVar15; + uint uVar16; + uint uVar17; + uint uVar18; + uint uVar19; + int iVar20; + float fVar21; + float fVar22; + float fVar23; + uint local_2828 [1279]; + float afStack_142c [1281]; + + uVar17 = *(uint *)(param_1 + 0x41fc4); + puVar15 = *(ushort **)(param_1 + 0x270); + uVar4 = 0; + uVar10 = 0; + if (uVar17 != 0) { + uVar18 = *(uint *)(param_1 + 0x41fc0); + uVar12 = (ulonglong)*(uint *)(param_1 + 0x41fc4); + puVar1 = local_2828; + do { + uVar9 = uVar4; + for (uVar6 = uVar18 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + uVar9 = (ulonglong) + ((int)uVar9 + (uint)*puVar15 + (uint)puVar15[1] + (uint)puVar15[2] + + (uint)puVar15[3]); + puVar15 = puVar15 + 4; + } + uVar12 = uVar12 - 1; + *puVar1 = (int)(uVar9 / uVar18); + puVar1 = puVar1 + 1; + } while (uVar12 != 0); + } + uVar11 = uVar17 >> 2; + uVar18 = 0; + uVar13 = uVar17 * 7 >> 3; + uVar12 = uVar4; + uVar6 = uVar18; + uVar16 = uVar10; + if (1 < uVar11) { + uVar6 = (uVar11 - 2 >> 1) + 1; + uVar8 = (ulonglong)uVar6; + uVar6 = uVar6 * 2; + uVar9 = uVar4; + uVar5 = uVar4; + do { + uVar16 = (int)uVar5 + local_2828[uVar12]; + uVar5 = (ulonglong)uVar16; + uVar10 = (int)uVar9 + local_2828[uVar12 + 1]; + uVar9 = (ulonglong)uVar10; + uVar12 = uVar12 + 2; + uVar8 = uVar8 - 1; + } while (uVar8 != 0); + } + if (uVar6 < uVar11) { + uVar18 = local_2828[uVar12]; + } + uVar12 = (ulonglong)uVar11; + uVar18 = uVar18 + uVar10 + uVar16; + if (uVar11 < uVar17) { + puVar1 = local_2828 + uVar11; + uVar9 = (ulonglong)(*(int *)(param_1 + 0x41fc4) - uVar11); + do { + uVar4 = (ulonglong)((int)uVar4 + *puVar1); + puVar1 = puVar1 + 1; + uVar9 = uVar9 - 1; + } while (uVar9 != 0); + } + iVar20 = (uVar13 - uVar11) + 1; + uVar9 = uVar12; + uVar10 = uVar11; + if (3 < iVar20) { + fVar23 = (float)uVar17; + uVar6 = uVar11 + 2; + do { + uVar18 = uVar18 + local_2828[uVar9]; + uVar16 = (int)uVar4 - local_2828[uVar9]; + iVar7 = uVar17 - uVar10; + fVar22 = (float)(uVar6 - 1) / fVar23; + fVar21 = (float)uVar18 / (float)(uVar6 - 1) - (float)uVar16 / (float)(iVar7 - 1); + uVar18 = uVar18 + local_2828[uVar9 + 1]; + uVar16 = uVar16 - local_2828[uVar9 + 1]; + afStack_142c[uVar9 + 1] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + fVar22 = (float)uVar6 / fVar23; + uVar19 = uVar18 + local_2828[uVar9 + 2]; + uVar14 = uVar16 - local_2828[uVar9 + 2]; + fVar21 = (float)uVar18 / (float)uVar6 - (float)uVar16 / (float)(iVar7 - 2); + afStack_142c[uVar9 + 2] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + uVar18 = uVar19 + local_2828[uVar9 + 3]; + uVar4 = (ulonglong)(uVar14 - local_2828[uVar9 + 3]); + fVar22 = (float)(uVar6 + 1) / fVar23; + uVar16 = uVar6 + 2; + fVar21 = (float)uVar19 / (float)(uVar6 + 1) - (float)uVar14 / (float)(iVar7 - 3); + afStack_142c[uVar9 + 3] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + fVar22 = (float)uVar16 / fVar23; + uVar10 = uVar10 + 4; + uVar9 = uVar9 + 4; + uVar6 = uVar6 + 4; + fVar21 = (float)uVar18 / (float)uVar16 - (float)uVar4 / (float)(iVar7 - 4); + afStack_142c[uVar9] = (DAT_18005e700 - fVar22) * fVar22 * fVar21 * fVar21; + } while (uVar10 <= uVar13 - 3); + } + uVar5 = 0; + if (uVar10 <= uVar13) { + uVar6 = *(uint *)(param_1 + 0x41fc4); + lVar2 = uVar9 * 4; + uVar16 = uVar10; + do { + uVar16 = uVar16 + 1; + uVar18 = uVar18 + *(int *)((longlong)local_2828 + lVar2); + uVar4 = (ulonglong)(uint)((int)uVar4 - *(int *)((longlong)local_2828 + lVar2)); + fVar21 = (float)uVar16 / (float)uVar6; + iVar7 = uVar6 - uVar10; + uVar10 = uVar10 + 1; + fVar23 = (float)uVar18 / (float)uVar16 - (float)uVar4 / (float)(iVar7 - 1); + *(float *)((longlong)afStack_142c + lVar2 + 4) = + (DAT_18005e700 - fVar21) * fVar21 * fVar23 * fVar23; + lVar2 = lVar2 + 4; + } while (uVar10 <= uVar13); + } + fVar23 = afStack_142c[(ulonglong)uVar11 + 1]; + uVar10 = uVar11; + uVar18 = uVar11; + if (3 < iVar20) { + uVar6 = uVar11 + 2; + do { + if (fVar23 <= afStack_142c[uVar12 + 1]) { + fVar23 = afStack_142c[uVar12 + 1]; + uVar10 = uVar18; + } + if (fVar23 <= afStack_142c[uVar12 + 2]) { + uVar10 = uVar6 - 1; + fVar23 = afStack_142c[uVar12 + 2]; + } + if (fVar23 <= afStack_142c[uVar12 + 3]) { + fVar23 = afStack_142c[uVar12 + 3]; + uVar10 = uVar6; + } + if (fVar23 <= afStack_142c[uVar12 + 4]) { + uVar10 = uVar6 + 1; + fVar23 = afStack_142c[uVar12 + 4]; + } + uVar18 = uVar18 + 4; + uVar12 = uVar12 + 4; + uVar6 = uVar6 + 4; + } while (uVar18 <= uVar13 - 3); + } + if (uVar18 <= uVar13) { + pfVar3 = afStack_142c + uVar12 + 1; + do { + if (fVar23 <= *pfVar3) { + fVar23 = *pfVar3; + uVar10 = uVar18; + } + uVar18 = uVar18 + 1; + pfVar3 = pfVar3 + 1; + } while (uVar18 <= uVar13); + } + uVar18 = 0; + if ((uVar10 != uVar11) && (uVar10 != uVar13)) { + uVar6 = uVar10 + 1; + uVar4 = uVar5; + uVar12 = uVar5; + uVar9 = uVar5; + if ((int)uVar6 < 2) { +LAB_1800117f6: + uVar14 = (uint)uVar9; + uVar13 = (uint)uVar12; + uVar19 = local_2828[uVar4]; + } + else { + uVar16 = uVar10 + 1 >> 1; + uVar8 = (ulonglong)uVar16; + do { + uVar14 = (int)uVar9 + local_2828[uVar4]; + uVar9 = (ulonglong)uVar14; + uVar13 = (int)uVar12 + local_2828[uVar4 + 1]; + uVar12 = (ulonglong)uVar13; + uVar4 = uVar4 + 2; + uVar8 = uVar8 - 1; + } while (uVar8 != 0); + uVar19 = uVar18; + if (uVar16 * 2 <= uVar10) goto LAB_1800117f6; + } + uVar4 = uVar5; + if (uVar6 < uVar17) { + puVar1 = local_2828 + (int)uVar6; + uVar12 = (ulonglong)(uVar17 - uVar6); + do { + uVar4 = (ulonglong)((int)uVar4 + *puVar1); + puVar1 = puVar1 + 1; + uVar12 = uVar12 - 1; + } while (uVar12 != 0); + } + uVar6 = (uVar19 + uVar13 + uVar14) / uVar6; + iVar20 = (int)(uVar4 / ((uVar17 - uVar10) - 1)); + uVar16 = (int)(uVar6 - iVar20) >> 0x1f; + if (((int)(iVar20 + uVar6) <= (int)(((uVar6 - iVar20 ^ uVar16) - uVar16) * 0x80)) && + (iVar20 <= (int)uVar6)) { + uVar6 = *(uint *)(param_1 + 0x44c60); + *(uint *)(param_1 + 0x44c68) = local_2828[uVar10]; + if ((uVar11 < uVar6) && (uVar6 <= uVar17 - 1)) { + uVar17 = uVar17 >> 7; + uVar16 = uVar17; + if (uVar17 == 0) { + uVar16 = 1; + } + if (uVar16 + uVar6 <= uVar10) { + uVar10 = uVar17; + if (uVar17 == 0) { + uVar10 = 1; + } + uVar10 = uVar10 + uVar6; + } + uVar16 = uVar17; + if (uVar17 == 0) { + uVar16 = 1; + } + if (uVar10 <= uVar6 - uVar16) { + if (uVar17 == 0) { + uVar17 = 1; + } + uVar10 = uVar6 - uVar17; + } + } + uVar4 = uVar5; + uVar12 = uVar5; + if ((int)(uVar10 + 1) < 2) { +LAB_1800118f9: + uVar16 = (uint)uVar12; + uVar6 = (uint)uVar4; + uVar18 = local_2828[uVar5]; + } + else { + uVar17 = uVar10 + 1 >> 1; + uVar9 = (ulonglong)uVar17; + do { + uVar16 = (int)uVar12 + local_2828[uVar5]; + uVar12 = (ulonglong)uVar16; + uVar6 = (int)uVar4 + local_2828[uVar5 + 1]; + uVar4 = (ulonglong)uVar6; + uVar5 = uVar5 + 2; + uVar9 = uVar9 - 1; + } while (uVar9 != 0); + if (uVar17 * 2 <= uVar10) goto LAB_1800118f9; + } + *(uint *)(param_1 + 0x44c60) = uVar10; + uVar17 = (uVar6 + uVar16 + uVar18) / (uVar10 + 1); + goto LAB_180011928; + } + } + *(undefined4 *)(param_1 + 0x44c68) = 0; + *(uint *)(param_1 + 0x44c60) = uVar17 - 1; + uVar17 = *(uint *)(param_1 + 0x42018); +LAB_180011928: + *(uint *)(param_1 + 0x44c64) = uVar17; + return; +} + + +================================================================== + +### ADDR 180010c40 FUNC 180010c40 (574 bytes) name=FUN_180010c40 + +void FUN_180010c40(longlong param_1) + +{ + uint uVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + int iVar6; + uint uVar7; + uint uVar8; + undefined4 *puVar9; + uint uVar10; + uint uVar11; + ulonglong uVar12; + uint uVar13; + + uVar1 = *(uint *)(param_1 + 0x4202c); + uVar10 = *(uint *)(param_1 + 0x47938); + uVar2 = *(uint *)(param_1 + 0x42030); + iVar3 = *(int *)(param_1 + 0x18); + uVar5 = 0; + uVar8 = *(uint *)(param_1 + 0x41fc0); + uVar13 = 0xffff; + uVar7 = 0xffff; + *(undefined4 *)(param_1 + 0x74) = 1; + do { + uVar11 = uVar7 + uVar5 >> 1; + iVar6 = FUN_180016290(param_1,uVar11,(uVar10 >> 1) + (uVar8 >> 1),0); + if ((*(int *)(param_1 + 0x74) != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar6 = FUN_180015b90(param_1,iVar6,*(float *)(param_1 + 0xd4)); + } + uVar4 = uVar11; + if (iVar6 <= iVar3) { + uVar4 = uVar7; + uVar5 = uVar11; + } + uVar7 = uVar4; + } while (uVar5 + 1 < uVar7); + iVar3 = *(int *)(param_1 + 0x14); + uVar10 = *(uint *)(param_1 + 0x47938); + uVar7 = uVar7 + uVar5 >> 1; + uVar5 = 0; + uVar8 = *(uint *)(param_1 + 0x41fc0); + *(undefined4 *)(param_1 + 0x74) = 1; + do { + uVar11 = uVar13 + uVar5 >> 1; + iVar6 = FUN_180016290(param_1,uVar11,(uVar10 >> 1) + (uVar8 >> 1),0); + if ((*(int *)(param_1 + 0x74) != 0) || (*(int *)(param_1 + 0x78) != 0)) { + iVar6 = FUN_180015b90(param_1,iVar6,*(float *)(param_1 + 0xd4)); + } + uVar4 = uVar11; + if (iVar6 <= iVar3) { + uVar4 = uVar13; + uVar5 = uVar11; + } + uVar13 = uVar4; + } while (uVar5 + 1 < uVar13); + uVar8 = uVar13 + uVar5 >> 1; + uVar10 = 0x100; + if (uVar1 < uVar7) { + uVar5 = 0x100; + } + else if (uVar7 < uVar2) { + uVar5 = 0xffffffff; + } + else { + uVar5 = (uint)*(byte *)((ulonglong)((uVar7 - uVar2) * 0x3ff) / (ulonglong)(uVar1 - uVar2) + + 0x4284c + param_1); + } + if (uVar8 <= uVar1) { + if (uVar8 < uVar2) { + uVar10 = 0xffffffff; + } + else { + uVar10 = (uint)*(byte *)((ulonglong)((uVar8 - uVar2) * 0x3ff) / (ulonglong)(uVar1 - uVar2) + + 0x4284c + param_1); + } + } + memcpy((void *)(param_1 + 0x6f0),(void *)(param_1 + 0x2c8),0x400); + if ((int)uVar10 < 0) { + uVar10 = 0; + } + if (0xff < (int)uVar5) { + uVar5 = 0xff; + } + if ((int)uVar10 <= (int)uVar5) { + uVar12 = (ulonglong)((uVar5 - uVar10) + 1); + puVar9 = (undefined4 *)(param_1 + 0x6f0 + (longlong)(int)uVar10 * 4); + do { + uVar12 = uVar12 - 1; + *puVar9 = *(undefined4 *)(param_1 + 0x2c); + puVar9 = puVar9 + 1; + } while (uVar12 != 0); + } + memcpy((void *)(param_1 + 0xb18),(void *)(param_1 + 0x6f0),0x400); + memcpy((void *)(param_1 + 0xf40),(void *)(param_1 + 0x6f0),0x400); + return; +} + + +================================================================== + +### ADDR 18001d930 FUNC 18001d930 (1392 bytes) name=FUN_18001d930 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +undefined4 FUN_18001d930(longlong param_1) + +{ + int *piVar1; + uint uVar2; + uint *_Dst; + undefined8 *puVar3; + bool bVar4; + LPCSTR pCVar5; + undefined4 uVar6; + uint uVar7; + undefined **ppuVar8; + longlong lVar9; + undefined8 uVar10; + int *_Src; + ulonglong uVar11; + uint *_Src_00; + uint uVar12; + size_t _Size; + ulonglong uVar13; + int iVar14; + int *piVar15; + undefined1 auStackY_2e8 [32]; + longlong local_2a8; + LPCSTR local_2a0; + longlong local_298 [2]; + undefined4 local_288; + uint uStack_284; + uint local_280; + undefined4 uStack_27c; + undefined4 local_278; + int iStack_274; + undefined4 local_270; + undefined4 uStack_26c; + undefined4 local_268; + undefined4 uStack_264; + int local_260; + int iStack_25c; + undefined8 local_258; + undefined8 local_250; + undefined4 local_248; + uint uStack_244; + undefined4 local_240; + undefined8 local_238; + WCHAR local_228 [256]; + ulonglong local_28; + + local_238 = 0xfffffffffffffffe; + local_28 = DAT_18006cea0 ^ (ulonglong)auStackY_2e8; + if (param_1 == 0) { + uVar6 = 1; + } + else { + local_288 = 0; + FUN_1800357d0((ulonglong *)&uStack_284,0,0x48); + uStack_27c = 1; + local_278 = 0; + iStack_274 = *(int *)(param_1 + 0x50); + local_270 = *(undefined4 *)(param_1 + 0x54); + uStack_26c = 8; + local_268 = 0xffff3cb0; + bVar4 = false; + piVar15 = *(int **)(param_1 + 0x2d20); + if (*(int *)(param_1 + 0x2d08) != 0) { + while( true ) { + iVar14 = (int)piVar15; + uVar7 = usb_bulk_read(*(undefined8 *)(param_1 + 0x38),0x81,piVar15, + (*(int *)(param_1 + 0x2d18) * 2 - iVar14) + *(int *)(param_1 + 0x2d20) + ); + if (*(int *)(param_1 + 0x2d08) == 0) break; + if ((int)uVar7 < 0) { + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + lVar9 = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_2a0 = (LPCSTR)(lVar9 + 0x18); + uVar10 = usb_strerror(); + FUN_18001e660((longlong *)&local_2a0,(byte *)"usb error: usb_bulk_read=%d, %s", + (ulonglong)uVar7,uVar10); + pCVar5 = local_2a0; + MultiByteToWideChar(0,0,local_2a0,-1,local_228,0x100); + Sleep(10); + if (uVar7 == 0xfffffffb) { + usb_clear_halt(*(undefined8 *)(param_1 + 0x38),0x81); + LOCK(); + piVar15 = (int *)(pCVar5 + -8); + iVar14 = *piVar15; + *piVar15 = *piVar15 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(pCVar5 + -0x18) + 8))(); + } + break; + } + piVar15 = *(int **)(param_1 + 0x2d20); + LOCK(); + piVar1 = (int *)(pCVar5 + -8); + iVar14 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(pCVar5 + -0x18) + 8))(); + } + } + else { + uVar12 = (iVar14 - *(int *)(param_1 + 0x2d20)) + uVar7; + if (!bVar4) { + piVar1 = (int *)((longlong)piVar15 + (longlong)(int)uVar7); + piVar15 = *(int **)(param_1 + 0x2d20); + for (_Src = piVar15; _Src < piVar1; _Src = _Src + 1) { + if (*_Src == 0x1bb1b11b) goto LAB_18001db0e; + } + if (*_Src != 0x1bb1b11b) goto LAB_18001de17; +LAB_18001db0e: + uVar12 = (iVar14 - (int)_Src) + uVar7; + if (_Src != piVar15) { + memcpy(piVar15,_Src,(longlong)(int)uVar12); + } + bVar4 = true; + } + uVar7 = *(uint *)(param_1 + 0x2d18); + uVar13 = (ulonglong)uVar7; + uVar11 = (ulonglong)(int)uVar12; + if (uVar11 < uVar13 + 0x38) { + piVar15 = (int *)(uVar11 + *(longlong *)(param_1 + 0x2d20)); + } + else { + _Dst = *(uint **)(param_1 + 0x2d20); + if (*_Dst == 0x1bb1b11b) { + uVar2 = _Dst[2]; + if (((uVar2 == uVar7) && (*(int *)(uVar13 + 0x1c + (longlong)_Dst) == 0x1bb1b11c)) && + ((iVar14 = *(int *)(uVar13 + 0x28 + (longlong)_Dst), iVar14 == 0 || (iVar14 == 1))) + ) { + uStack_284 = _Dst[1]; + uStack_244 = _Dst[3]; + if (iStack_274 == 0xa0) { + iStack_25c = *(int *)(uVar13 + 0x24 + (longlong)_Dst); + local_260 = iStack_25c + -500; + } + else if (iStack_274 == 0x180) { + local_260 = *(int *)(uVar13 + 0x2c + (longlong)_Dst); + iStack_25c = local_260 + 500; + } + else if (iStack_274 == 0x280) { + local_260 = *(int *)(uVar13 + 0x2c + (longlong)_Dst); + iStack_25c = *(int *)(uVar13 + 0x24 + (longlong)_Dst); + } + local_280 = uVar2; + FUN_180001470(param_1 + 0xb8); + puVar3 = *(undefined8 **)(param_1 + 0x2d28); + *puVar3 = CONCAT44(uStack_284,local_288); + puVar3[1] = CONCAT44(uStack_27c,local_280); + puVar3[2] = CONCAT44(iStack_274,local_278); + puVar3[3] = CONCAT44(uStack_26c,local_270); + puVar3[4] = CONCAT44(uStack_264,local_268); + puVar3[5] = CONCAT44(iStack_25c,local_260); + puVar3[6] = local_258; + puVar3[7] = local_250; + puVar3[8] = CONCAT44(uStack_244,local_248); + *(undefined4 *)(puVar3 + 9) = local_240; + memcpy((void *)(*(longlong *)(param_1 + 0x2d28) + 0x4c), + (void *)(*(longlong *)(param_1 + 0x2d20) + 0x1c), + (ulonglong)*(uint *)(param_1 + 0x2d18)); + (**(code **)(*(longlong *)(param_1 + 0xb8) + 0x28))(param_1 + 0xb8); + SetEvent(*(HANDLE *)(param_1 + 0x2d10)); + *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1; + } + else { + if ((uVar2 != uVar7) || (*(int *)(uVar13 + 0x1c + (longlong)_Dst) == 0x1bb1b11c)) + goto LAB_18001dd96; + for (_Src_00 = (uint *)((uVar11 & 0xfffffffffffffffc) + (longlong)_Dst); + _Dst < _Src_00; _Src_00 = _Src_00 + -1) { + if (*_Src_00 == 0x1bb1b11b) goto LAB_18001dcf0; + } + if (*_Src_00 == 0x1bb1b11b) { +LAB_18001dcf0: + if (_Dst < _Src_00) { + _Size = (size_t)(int)(uVar12 + ((int)_Dst - (int)_Src_00)); + memcpy(_Dst,_Src_00,_Size); + piVar15 = (int *)(_Size + *(longlong *)(param_1 + 0x2d20)); + goto LAB_18001de17; + } + } + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_298[0] = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_298[0] = local_298[0] + 0x18; + FUN_18001ad00(local_298, + L"drop1, lentgh=%d, startcode=%X, sendbyte=%d, endcode=%X, intDrop=%d" + ,(ulonglong)uVar12,(ulonglong)*_Dst); + LOCK(); + piVar15 = (int *)(local_298[0] + -8); + iVar14 = *piVar15; + *piVar15 = *piVar15 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(local_298[0] + -0x18) + 8))(); + } + } + } + else { +LAB_18001dd96: + ppuVar8 = FUN_18001fcc0(); + if (ppuVar8 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_2a8 = (**(code **)(*ppuVar8 + 0x18))(ppuVar8); + local_2a8 = local_2a8 + 0x18; + FUN_18001ad00(&local_2a8, + L"drop2, lentgh=%d, startcode=%X, sendbyte=%d, endcode=%X, intDrop=%d", + (ulonglong)uVar12,(ulonglong)*_Dst); + LOCK(); + piVar15 = (int *)(local_2a8 + -8); + iVar14 = *piVar15; + *piVar15 = *piVar15 + -1; + UNLOCK(); + if (iVar14 + -1 < 1) { + (**(code **)(**(longlong **)(local_2a8 + -0x18) + 8))(); + } + } + bVar4 = false; + piVar15 = *(int **)(param_1 + 0x2d20); + } + } +LAB_18001de17: + if (*(int *)(param_1 + 0x2d08) == 0) break; + } + } + uVar6 = 0; + } + return uVar6; +} + + +================================================================== + +### ADDR 180008bd0 FUNC 180008bd0 (3886 bytes) name=FUN_180008bd0 + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 FUN_180008bd0(uint param_1) + +{ + int *piVar1; + ulonglong *puVar2; + char cVar3; + longlong *plVar4; + undefined8 uVar5; + undefined **ppuVar6; + undefined8 *puVar7; + int iVar8; + uint uVar9; + longlong lVar10; + ulonglong *_Source; + ulonglong uVar11; + longlong lVar12; + uint uVar13; + char *pcVar14; + ulonglong uVar15; + longlong lVar16; + undefined1 auStack_d8 [32]; + ulonglong *local_b8; + uint local_b0; + uint local_ac; + uint local_a0; + uint local_9c; + undefined4 local_98; + undefined8 local_78; + undefined8 local_70 [5]; + undefined4 local_48; + float local_44; + char local_40; + char local_3f; + char local_3e; + char local_3d; + char local_3c; + char local_3b; + char local_3a; + char local_39; + ulonglong local_38; + + local_78 = 0xfffffffffffffffe; + local_38 = DAT_18006cea0 ^ (ulonglong)auStack_d8; + lVar16 = (longlong)(int)param_1; + uVar11 = (ulonglong)param_1; + lVar12 = uVar11 * 0x4a8; + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); +LAB_180008c52: + if (*(int *)((&DAT_180073758)[uVar11 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar5 = FUN_18001d6e0((&DAT_180073758)[uVar11 * 0x95],(undefined8 *)&local_b0,local_70,1000); + if ((int)uVar5 != 0) goto LAB_180008c98; + } + SetLastError(0xe4ae0008); + uVar5 = 0; + } + else { + uVar5 = FUN_18001d6e0((&DAT_180073758)[uVar11 * 0x95],(undefined8 *)&local_b0,local_70,500); + if ((int)uVar5 == 0) goto LAB_180008c52; +LAB_180008c98: + uVar9 = local_b0; + uVar13 = local_ac >> 0x18; + if ((((((uVar13 == 0) || (uVar13 == 1)) && (local_b0 != 0x9898f19)) && + ((local_b0 != 0x9898f1a && (local_b0 != 0x9898f1c)))) && + ((local_b0 != 0x9898f1f && ((local_b0 != 0x9898f20 && (local_b0 != 0x9898f21)))))) && + (local_b0 != 0x9898f2b)) { + SetLastError(0xe4ae000b); + uVar5 = 0; + } + else { + FUN_1800357d0((ulonglong *)(&DAT_1800737b8 + uVar11 * 0x12a),0,0x48); + *(undefined4 *)(&DAT_180073bac + lVar12) = 0; + *(undefined4 *)(&DAT_180073bb0 + lVar12) = 0; + FUN_1800357d0((ulonglong *)(&DAT_180073bb4 + lVar12),0,0x38); + FUN_1800357d0((ulonglong *)((&DAT_180073750)[uVar11 * 0x95] + 8),0,200); + (&DAT_1800737b0)[uVar11 * 0x12a] = uVar9; + *(undefined4 *)(&DAT_1800737b4 + lVar12) = 0; + *(undefined4 *)(&DAT_1800737c0 + lVar12) = 0; + *(undefined4 *)(&DAT_1800737c4 + lVar12) = 0; + ppuVar6 = FUN_18001fcc0(); + if (ppuVar6 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + puVar7 = (undefined8 *)(**(code **)(*ppuVar6 + 0x18))(ppuVar6); + _Source = puVar7 + 3; + local_b8 = _Source; + switch(uVar13) { + case 0: + lVar10 = -1; + pcVar14 = "C1"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590e0 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590e0,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 1: + lVar10 = -1; + pcVar14 = "M3"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059100 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059100,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 2: + lVar10 = -1; + pcVar14 = "M3Pro"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059104 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059104,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 3: + lVar10 = -1; + pcVar14 = "160Core"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590f8 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590f8,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 4: + lVar10 = -1; + pcVar14 = "M6"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_18005910c - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_18005910c,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 5: + lVar10 = -1; + pcVar14 = "C1Pro"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590e4 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590e4,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + case 6: + lVar10 = -1; + pcVar14 = "C1ProLt"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_1800590f0 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_1800590f0,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + break; + default: + lVar10 = -1; + pcVar14 = "Mx"; + do { + if (lVar10 == 0) break; + lVar10 = lVar10 + -1; + cVar3 = *pcVar14; + pcVar14 = pcVar14 + 1; + } while (cVar3 != '\0'); + iVar8 = ~(uint)lVar10 - 1; + if (iVar8 == 0) { + plVar4 = (longlong *)*puVar7; + if (*(int *)(puVar7 + 1) != 0) { + if (*(int *)(puVar7 + 2) < 0) { + if (*(int *)((longlong)puVar7 + 0xc) < 0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(undefined4 *)(puVar7 + 1) = 0; + *(char *)_Source = '\0'; + } + else { + LOCK(); + piVar1 = (int *)(puVar7 + 2); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 + -1 < 1) { + (**(code **)(*(longlong *)*puVar7 + 8))(); + } + lVar10 = (**(code **)(*plVar4 + 0x18))(plVar4); + _Source = (ulonglong *)(lVar10 + 0x18); + uVar9 = local_b0; + local_b8 = _Source; + } + } + } + else { + uVar13 = *(uint *)(puVar7 + 1); + uVar15 = (longlong)&DAT_180059110 - (longlong)_Source; + if ((int)(*(int *)((longlong)puVar7 + 0xc) - iVar8 | 1U - *(int *)(puVar7 + 2)) < 0) { + FUN_18000ab60((longlong *)&local_b8,iVar8); + } + _Source = local_b8; + if (uVar13 < uVar15) { + FUN_180032c60(local_b8,(longlong)iVar8,&DAT_180059110,(longlong)iVar8); + } + else { + memmove_s(local_b8,(longlong)iVar8,(void *)(uVar15 + (longlong)local_b8),(longlong)iVar8 + ); + } + if ((iVar8 < 0) || (*(int *)((longlong)_Source + -0xc) < iVar8)) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7ff8ffa9); + } + *(int *)(_Source + -2) = iVar8; + *(undefined1 *)((longlong)iVar8 + (longlong)_Source) = 0; + } + } + strncpy(&DAT_1800737e8 + lVar12,(char *)_Source,8); + (&DAT_1800737ef)[lVar12] = 0; + FUN_180032bb0(&DAT_1800737c8 + lVar12,(byte *)"%s-%u",_Source,(ulonglong)uVar9); + (&DAT_1800737e7)[lVar12] = 0; + (&DAT_1800737b8)[uVar11 * 0x12a] = local_a0; + *(uint *)(&DAT_1800737bc + lVar12) = local_9c; + *(uint *)(&DAT_1800737f8 + lVar12) = local_a0; + *(uint *)(&DAT_1800737fc + lVar12) = local_9c; + if ((local_a0 < 0x51) && (local_9c < 0x51)) { + *(uint *)(&DAT_1800737f8 + lVar12) = local_a0 * 4; + *(uint *)(&DAT_1800737fc + lVar12) = local_9c * 4; + } + if ((local_a0 < 0xa1) && (local_9c < 0xa1)) { + *(int *)(&DAT_1800737f8 + lVar12) = *(int *)(&DAT_1800737f8 + lVar12) * 2; + *(int *)(&DAT_1800737fc + lVar12) = *(int *)(&DAT_1800737fc + lVar12) * 2; + } + *(undefined4 *)(&DAT_1800737f0 + lVar12) = local_98; + *(undefined4 *)(&DAT_1800737f4 + lVar12) = local_98; + *(undefined4 *)(&DAT_180073780 + lVar12) = 2; + FUN_18000d5f0((&DAT_180073750)[uVar11 * 0x95],2); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 100) = 1; + lVar12 = (&DAT_180073750)[uVar11 * 0x95]; + EnterCriticalSection((LPCRITICAL_SECTION)(lVar12 + 0x238)); + memcpy(&DAT_180099000,&DAT_18005cde0,0xa1c); + lVar10 = 0; + do { + uVar9 = *(int *)((longlong)&DAT_180099004 + lVar10) - + *(int *)((longlong)&DAT_180099000 + lVar10); + *(uint *)((longlong)&DAT_180099a20 + lVar10) = ((uVar9 >> 1) + 0x1000000) / uVar9; + uVar9 = *(int *)((longlong)&DAT_180099008 + lVar10) - + *(int *)((longlong)&DAT_180099004 + lVar10); + *(uint *)((longlong)&DAT_180099a24 + lVar10) = ((uVar9 >> 1) + 0x1000000) / uVar9; + lVar10 = lVar10 + 8; + } while (lVar10 < 0xa18); + DAT_180073748 = (undefined4)(0x7fffffff / (longlong)DAT_18009a434); + *(undefined4 *)(lVar12 + 0x68) = 7; + LeaveCriticalSection((LPCRITICAL_SECTION)(lVar12 + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x50) = 200; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x10) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x14) = 20000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x18) = 100000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x1c) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x20) = 0xff; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x24) = 5; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x70) = 1; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x8c) = 1; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0x6c) = 1; + if (local_44 == _DAT_180057598) { + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa8) = 0; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xac) = local_40 * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb0) = local_3f * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb4) = local_3e * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xb8) = local_3d * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xbc) = local_3c * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xc0) = local_3b * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 0xc4) = local_3a * 0x32; + *(int *)((&DAT_180073750)[lVar16 * 0x95] + 200) = local_39 * 0x32; + } + else { + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xa4) = local_48; + *(float *)((&DAT_180073750)[uVar11 * 0x95] + 0xa8) = local_44; + lVar12 = (&DAT_180073750)[uVar11 * 0x95]; + *(undefined4 *)(lVar12 + 0xac) = 0; + *(undefined4 *)(lVar12 + 0xb0) = 0; + *(undefined4 *)(lVar12 + 0xb4) = 0; + *(undefined4 *)(lVar12 + 0xb8) = 0; + *(undefined4 *)(lVar12 + 0xbc) = 0; + *(undefined4 *)(lVar12 + 0xc0) = 0; + *(undefined4 *)(lVar12 + 0xc4) = 0; + *(undefined4 *)(lVar12 + 200) = 0; + } + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xcc) = 2; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd0) = 0x41200000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd4) = 0x3f800000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xd8) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xdc) = 0x3ecccccd; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe0) = 0x41a00000; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe4) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xe8) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xec) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf0) = 0; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf4) = 0x3f7fa57f; + *(undefined4 *)((&DAT_180073750)[uVar11 * 0x95] + 0xf8) = 0x3f800000; + LOCK(); + puVar2 = _Source + -1; + uVar11 = *puVar2; + *(int *)puVar2 = (int)*puVar2 + -1; + UNLOCK(); + if ((int)uVar11 + -1 < 1) { + (**(code **)(*(longlong *)_Source[-3] + 8))(); + } + uVar5 = 1; + } + } + return uVar5; +} + + +================================================================== + +### ADDR 180009b50 FUNC 180009b50 (875 bytes) name=FUN_180009b50 + +undefined8 FUN_180009b50(uint param_1,uint *param_2,longlong param_3,int param_4) + +{ + LPCWSTR pWVar1; + uint uVar2; + uint uVar3; + int iVar4; + LPVOID pvVar5; + ulonglong uVar6; + undefined8 uVar7; + longlong lVar8; + ulonglong uVar9; + LPCWSTR local_res10; + uint local_50; + uint local_4c; + uint local_48; + uint local_44; + uint local_40; + uint local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + + uVar9 = (ulonglong)param_1; + if (((param_2 != (uint *)0x0) && (param_3 != 0)) && (param_4 == 2)) { + lVar8 = uVar9 * 0x4a8; + uVar2 = *param_2; + if ((((uVar2 == (&DAT_1800737b8)[uVar9 * 0x12a]) && + (uVar3 = param_2[1], uVar3 == *(uint *)(&DAT_1800737bc + lVar8))) && + (((uVar2 & 3) == 0 && (((param_2[2] & 3) == 0 && ((param_2[4] & 3) == 0)))))) && + ((uVar2 <= param_2[2] && + ((((uVar3 <= param_2[3] && (uVar3 != 0)) && (param_2[3] != 0)) && (param_2[5] != 0)))))) { + if (*(int *)(&DAT_180073778 + lVar8) != 0) { + SetLastError(0xe4ae000a); + return 0; + } + if (*(int *)((&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + return 0; + } + *(undefined4 *)(&DAT_18007377c + lVar8) = 2; + *(undefined4 *)(&DAT_180073bf4 + lVar8) = 0; + *(undefined4 *)(&DAT_180073bf0 + lVar8) = 0; + *(uint *)(&DAT_180073798 + lVar8) = *param_2; + *(uint *)(&DAT_18007379c + lVar8) = param_2[1]; + *(uint *)(&DAT_1800737a0 + lVar8) = param_2[2]; + *(uint *)(&DAT_1800737a4 + lVar8) = param_2[3]; + *(uint *)(&DAT_1800737a8 + lVar8) = param_2[4]; + *(uint *)(&DAT_1800737ac + lVar8) = param_2[5]; + uVar2 = *param_2 * param_2[1] * 2; + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + pvVar5 = thunk_FUN_18001eb74((ulonglong)uVar2 + 0x98); + *(LPVOID *)(&DAT_180073788 + lVar8) = pvVar5; + if (pvVar5 == (LPVOID)0x0) { + SetLastError(0xe4ae0002); + return 0; + } + local_50 = *param_2; + local_4c = param_2[1]; + local_48 = param_2[2]; + local_44 = param_2[3]; + local_40 = param_2[4]; + local_3c = param_2[5]; + local_38 = 4; + local_34 = 1; + local_30 = 1; + local_2c = 5; + uVar6 = FUN_18001e4c0((&DAT_180073758)[uVar9 * 0x95]); + if ((int)uVar6 == 0) { + SetLastError(0xe4ae0008); + return 0; + } + iVar4 = FUN_18000bce0((&DAT_180073750)[uVar9 * 0x95],&local_50); + if (iVar4 == 0) { + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0003); + return 0; + } + FUN_18001e3c0((&DAT_180073758)[uVar9 * 0x95],(longlong *)&local_res10); + iVar4 = FUN_18000f130((&DAT_180073750)[uVar9 * 0x95],local_res10); + if (iVar4 == 0) { + SetLastError(0xe4ae0009); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + FUN_180002f50(param_1); + if (*(int *)((longlong)(&DAT_180073758)[uVar9 * 0x95] + 0x14) == 0) { + SetLastError(0xe4ae0005); + } + else { + uVar7 = FUN_18001d2d0((void *)(&DAT_180073758)[uVar9 * 0x95],uVar2, + *(longlong *)(&DAT_180073788 + lVar8)); + if ((int)uVar7 != 0) { + *(longlong *)(&DAT_180073790 + lVar8) = param_3; + *(undefined4 *)(&DAT_180073bec + lVar8) = 0xffffffff; + *(undefined4 *)(&DAT_180073778 + lVar8) = 1; + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 1; + } + } + if (*(LPVOID *)(&DAT_180073788 + lVar8) != (LPVOID)0x0) { + thunk_FUN_180034a70(*(LPVOID *)(&DAT_180073788 + lVar8)); + *(undefined8 *)(&DAT_180073788 + lVar8) = 0; + } + SetLastError(0xe4ae0008); + LOCK(); + pWVar1 = local_res10 + -4; + iVar4 = *(int *)pWVar1; + *(int *)pWVar1 = *(int *)pWVar1 + -1; + UNLOCK(); + if (iVar4 + -1 < 1) { + (**(code **)(**(longlong **)(local_res10 + -0xc) + 8))(); + } + return 0; + } + } + SetLastError(0xe4ae0001); + return 0; +} + + +================================================================== + +### ADDR 18000a410 FUNC 18000a410 (496 bytes) name=FUN_18000a410 + +void FUN_18000a410(uint param_1,undefined8 param_2,longlong param_3) + +{ + undefined4 uVar1; + longlong lVar2; + bool bVar3; + int iVar4; + undefined8 uVar5; + undefined7 extraout_var; + uint uVar6; + ulonglong uVar7; + longlong lVar8; + byte *pbVar9; + + uVar1 = *(undefined4 *)(param_3 + 8); + uVar7 = (ulonglong)param_1; + lVar8 = uVar7 * 0x4a8; + *(undefined4 *)(&DAT_180073800 + lVar8) = uVar1; + *(undefined4 *)(&DAT_180073804 + lVar8) = *(undefined4 *)(param_3 + 0xc); + *(undefined4 *)(&DAT_180073808 + lVar8) = *(undefined4 *)(param_3 + 0x10); + *(undefined4 *)(&DAT_18007380c + lVar8) = *(undefined4 *)(param_3 + 0x14); + *(undefined8 *)(&DAT_180073810 + lVar8) = *(undefined8 *)(param_3 + 0x18); + *(undefined8 *)(&DAT_180073818 + lVar8) = *(undefined8 *)(param_3 + 0x28); + *(undefined8 *)(&DAT_180073820 + lVar8) = *(undefined8 *)(param_3 + 0x30); + *(undefined4 *)(&DAT_180073828 + lVar8) = *(undefined4 *)(param_3 + 0x38); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60) = uVar1; + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c) = *(undefined4 *)(&DAT_180073804 + lVar8); + if (*(int *)(&DAT_180073ba0 + lVar8) < *(int *)(param_3 + 0x24)) { + EnterCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x58) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x60); + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x54) = + *(undefined4 *)((&DAT_180073750)[uVar7 * 0x95] + 0x5c); + LeaveCriticalSection((LPCRITICAL_SECTION)((&DAT_180073750)[uVar7 * 0x95] + 0x238)); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + pbVar9 = (byte *)0x0; + *(undefined4 *)(&DAT_180073ba0 + lVar8) = *(undefined4 *)(param_3 + 0x24); + uVar5 = FUN_18000ca30(lVar2,param_2,1,1,0); + if ((int)uVar5 != 0) { + if (*(int *)((&DAT_180073760)[uVar7 * 0x95] + 0x44) != 0) { + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((*(int *)(lVar2 + 0x228) != 0) && (*(int *)(lVar2 + 0x234) != 0)) { + if (*(int *)(lVar2 + 0x4203c) == 0) { + FUN_180010e80(lVar2); + } + pbVar9 = *(byte **)(lVar2 + 0x2a0); + } + lVar2 = (&DAT_180073750)[uVar7 * 0x95]; + if ((pbVar9 != (byte *)0x0) && (lVar2 + 0x6c8 != 0)) { + iVar4 = (uint)*(ushort *)(lVar2 + 0x6d6) * *(int *)(lVar2 + 0x6d0) * *(int *)(lVar2 + 0x6cc) + ; + iVar4 = iVar4 + (iVar4 >> 0x1f & 7U); + uVar6 = iVar4 >> 0x1f; + bVar3 = FUN_180001cd0((&DAT_180073760)[uVar7 * 0x95],pbVar9,(iVar4 >> 3 ^ uVar6) - uVar6, + lVar2 + 0x6c8); + if ((int)CONCAT71(extraout_var,bVar3) == 0) { + FUN_180001c50((&DAT_180073760)[uVar7 * 0x95]); + } + } + } + if (*(code **)(&DAT_180073790 + lVar8) != (code *)0x0) { + (**(code **)(&DAT_180073790 + lVar8)) + (param_1,*(undefined4 *)(param_3 + 8),*(undefined4 *)(param_3 + 0x24),0,2, + *(undefined8 *)(&DAT_180073770 + lVar8)); + } + } + return; +} + + +================================================================== + +### ADDR 1800110a0 FUNC 1800110a0 (64 bytes) name=FUN_1800110a0 + +undefined8 FUN_1800110a0(longlong param_1) + +{ + if ((*(int *)(param_1 + 0x228) != 0) && (*(int *)(param_1 + 0x234) != 0)) { + if (*(int *)(param_1 + 0x4203c) == 0) { + FUN_180010e80(param_1); + } + return *(undefined8 *)(param_1 + 0x2a0); + } + return 0; +} + + +================================================================== + +### ADDR 18001b1b0 FUNC 18001b1b0 (190 bytes) name=FUN_18001b1b0 + +undefined8 +FUN_18001b1b0(longlong param_1,longlong param_2,undefined8 param_3,longlong param_4,int param_5) + +{ + undefined8 uVar1; + undefined8 local_18 [2]; + + FUN_180001470(param_1 + 8); + if (*(int *)(param_1 + 0x44) == 0) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar1 = 0; + } + else { + FUN_18001ef2c(local_18); + if (param_2 != 0) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x70))((longlong *)(param_1 + 0x50),param_2,0x40) + ; + } + if ((param_4 != 0) && (param_5 != 0)) { + (**(code **)(*(longlong *)(param_1 + 0x50) + 0x70))((longlong *)(param_1 + 0x50),param_4); + } + FUN_18001ef94(); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + uVar1 = 1; + } + return uVar1; +} + + +================================================================== + +### ADDR 18000d2a0 FUNC 18000d2a0 (839 bytes) name=FUN_18000d2a0 + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_18000d2a0(longlong param_1) + +{ + int iVar1; + int iVar2; + uint uVar3; + float fVar4; + float fVar5; + + memcpy((void *)(param_1 + 0x44c98),(void *)(param_1 + 0x41ff8),0x2ca0); + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42018), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44cb8) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x4202c), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44ccc) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42010),*(uint *)(param_1 + 0x44cc0),1) + ; + *(int *)(param_1 + 0x44cb0) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42030), + (*(uint *)(param_1 + 0x47938) >> 1) + (*(uint *)(param_1 + 0x41fc0) >> 1),0) + ; + *(int *)(param_1 + 0x44cd0) = iVar1; + iVar1 = FUN_180016290(param_1,(uint)*(ushort *)(param_1 + 0x42014),*(uint *)(param_1 + 0x44cc4),1) + ; + *(int *)(param_1 + 0x44cb4) = iVar1; + if (*(int *)(param_1 + 0xcc) == 2) { + iVar1 = *(int *)(param_1 + 0x44cb8); + } + else { + if (*(int *)(param_1 + 0xcc) != 3) goto LAB_18000d3c5; + iVar1 = *(int *)(param_1 + 0x60); + } + *(float *)(param_1 + 0xd8) = (float)iVar1 * _DAT_18005e9f0; +LAB_18000d3c5: + iVar1 = *(int *)(param_1 + 0x47950); + if (iVar1 == 0) { + iVar2 = (uint)*(ushort *)(param_1 + 0x4201c) << + ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + iVar2 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uint)*(ushort *)(param_1 + 0x4201c) << + (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f)); + } + *(int *)(param_1 + 0x44cbc) = iVar2; + uVar3 = (uint)(longlong)(*(float *)(param_1 + 0x42034) * _DAT_18005e9ec); + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + fVar5 = DAT_18005e9e8; + fVar4 = *(float *)(param_1 + 0x44c8c) * DAT_18005e9e8; + *(float *)(param_1 + 0x44cd4) = (float)uVar3 * DAT_18005e9e4; + uVar3 = (uint)(longlong)fVar4; + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + fVar4 = DAT_18005e9e0; + *(float *)(param_1 + 0x4792c) = (float)uVar3 * DAT_18005e9e0; + uVar3 = (uint)(longlong)(*(float *)(param_1 + 0x44c90) * fVar5); + if (iVar1 == 0) { + uVar3 = (uVar3 & 0xffff) << ((byte)*(undefined4 *)(param_1 + 0x4794c) & 0x1f); + } + else { + uVar3 = FUN_180015a40(param_1,*(int *)(param_1 + 0x44cb8), + (uVar3 & 0xffff) << (7U - (char)*(undefined4 *)(param_1 + 0x47954) & 0x1f) + ); + } + *(float *)(param_1 + 0x47930) = (float)uVar3 * fVar4; + if (*(int *)(param_1 + 0x78) != 0) { + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb8),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb8) = iVar1; + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb4),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb4) = iVar1; + iVar1 = FUN_180015b90(param_1,*(int *)(param_1 + 0x44cb0),*(float *)(param_1 + 0xd4)); + *(int *)(param_1 + 0x44cb0) = iVar1; + } + iVar1 = *(int *)(param_1 + 0x44cb4); + if (*(int *)(param_1 + 0x44cb0) < iVar1) { + *(int *)(param_1 + 0x44cb0) = iVar1; + } + if (*(int *)(param_1 + 0x44cb0) < *(int *)(param_1 + 0x44cb8)) { + *(int *)(param_1 + 0x44cb8) = *(int *)(param_1 + 0x44cb0); + } + if (*(int *)(param_1 + 0x44cb8) < iVar1) { + *(int *)(param_1 + 0x44cb8) = iVar1; + } + return; +} + + +================================================================== + +### ADDR 180001cd0 FUNC 180001cd0 (329 bytes) name=FUN_180001cd0 + +bool FUN_180001cd0(longlong param_1,byte *param_2,int param_3,longlong param_4) + +{ + byte *pbVar1; + uint uVar2; + byte *pbVar3; + ulonglong uVar4; + uint uVar5; + int iVar6; + byte *pbVar7; + bool bVar8; + + *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + 1; + if (*(uint *)(param_1 + 100) < *(uint *)(param_1 + 0x60)) { + return true; + } + *(undefined4 *)(param_1 + 100) = 0; + FUN_180001470(param_1 + 8); + if (*(int *)(param_1 + 0x44) == 0) { + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + bVar8 = false; + } + else { + pbVar3 = param_2; + pbVar7 = (byte *)0x0; + if (*(short *)(param_4 + 0xe) == 8) { + param_3 = param_3 * 3; + pbVar3 = thunk_FUN_18001eb74((longlong)param_3); + uVar2 = *(int *)(param_4 + 8) * *(int *)(param_4 + 4); + uVar5 = (int)uVar2 >> 0x1f; + pbVar1 = pbVar3; + for (iVar6 = (uVar2 ^ uVar5) - uVar5; pbVar7 = pbVar3, iVar6 != 0; iVar6 = iVar6 + -1) { + uVar4 = (ulonglong)*param_2; + param_2 = param_2 + 1; + *pbVar1 = *(byte *)(param_4 + 0x28 + uVar4 * 4); + pbVar1[1] = *(byte *)(param_4 + 0x29 + uVar4 * 4); + pbVar1[2] = *(byte *)(param_4 + 0x2a + uVar4 * 4); + pbVar1 = pbVar1 + 3; + } + } + iVar6 = 1; + if (*(longlong *)(param_1 + 0x50) != 0) { + iVar6 = AVIStreamWrite(*(longlong *)(param_1 + 0x50),*(undefined4 *)(param_1 + 0x40),1,pbVar3, + param_3,0x10,0,0); + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + } + if (pbVar7 != (byte *)0x0) { + thunk_FUN_180034a70(pbVar7); + } + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + bVar8 = iVar6 == 0; + } + return bVar8; +} + + +================================================================== + +### ADDR 180001c50 FUNC 180001c50 (121 bytes) name=FUN_180001c50 + +void FUN_180001c50(longlong param_1) + +{ + FUN_180001470(param_1 + 8); + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + if (*(longlong *)(param_1 + 0x50) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x50) = 0; + } + if (*(longlong *)(param_1 + 0x48) != 0) { + AVIStreamRelease(); + *(undefined8 *)(param_1 + 0x48) = 0; + } + if (*(longlong *)(param_1 + 0x58) != 0) { + AVIFileRelease(); + *(undefined8 *)(param_1 + 0x58) = 0; + } + AVIFileExit(); + /* WARNING: Could not recover jumptable at 0x000180001cc5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)(param_1 + 8) + 0x28))(param_1 + 8); + return; +} + + +================================================================== + +### ADDR 18001c670 FUNC 18001c670 (398 bytes) name=FUN_18001c670 + +undefined8 FUN_18001c670(longlong param_1,uint *param_2,uint param_3) + +{ + int *piVar1; + uint uVar2; + int iVar3; + undefined **ppuVar4; + undefined4 uVar5; + ulonglong uVar6; + undefined8 uVar7; + longlong local_res8; + longlong local_res20; + uint local_118; + undefined8 local_114 [31]; + + uVar5 = 2000; + uVar6 = (ulonglong)param_3; + uVar2 = usb_bulk_write(*(undefined8 *)(param_1 + 0x38),3,param_2,uVar6,2000); + if (uVar2 == param_3) { + if (*param_2 == 0x6bb6b671) { + uVar5 = 120000; + } + uVar7 = 0x100; + iVar3 = usb_bulk_read(*(undefined8 *)(param_1 + 0x38),0x82,&local_118,0x100,uVar5); + if (iVar3 < 4) { + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res20 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res20 = local_res20 + 0x18; + FUN_18001ad00(&local_res20,L"cmd=0X%X, ack time out.",(ulonglong)*param_2,uVar7); + LOCK(); + piVar1 = (int *)(local_res20 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res20 + -0x18) + 8))(); + } + uVar7 = 0; + } + else { + FUN_18001cf20(param_1,local_118,local_114,(ulonglong)(iVar3 - 4)); + uVar7 = 1; + } + } + else { + ppuVar4 = FUN_18001fcc0(); + if (ppuVar4 == (undefined **)0x0) { + /* WARNING: Subroutine does not return */ + FUN_18000b170(-0x7fffbffb); + } + local_res8 = (**(code **)(*ppuVar4 + 0x18))(ppuVar4); + local_res8 = local_res8 + 0x18; + FUN_18001ad00(&local_res8,L"usb_bulk_write() fail, cmd=0X%X.",(ulonglong)*param_2,uVar6); + LOCK(); + piVar1 = (int *)(local_res8 + -8); + iVar3 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar3 + -1 < 1) { + (**(code **)(**(longlong **)(local_res8 + -0x18) + 8))(); + } + uVar7 = 0; + } + return uVar7; +} + + +================================================================== + diff --git a/analysis/ida/export/ghidra_dump/refs_CoreSDKLib.dll.txt b/analysis/ida/export/ghidra_dump/refs_CoreSDKLib.dll.txt new file mode 100644 index 0000000..664b205 --- /dev/null +++ b/analysis/ida/export/ghidra_dump/refs_CoreSDKLib.dll.txt @@ -0,0 +1,98 @@ +### SCALAR 1bb1b11b + FUN_18001d930 x5 e.g. 18001daf5 CMP dword ptr [RDX],0x1bb1b11b + +### SCALAR 1bb1b11c + FUN_18001d930 x2 e.g. 18001db71 CMP dword ptr [RSI + RDI*0x1 + 0x1c],0x1bb1b11c + +### SCALAR 6bb6b66b + FUN_18001d6e0 x1 e.g. 18001d77f MOV dword ptr [RSP + 0x48],0x6bb6b66b + +### SCALAR 6bb6b66c + FUN_18001d6e0 x1 e.g. 18001d7ad MOV dword ptr [RSP + 0x48],0x6bb6b66c + +### SCALAR 6bb6b66d + +### SCALAR 6bb6b66e + +### SCALAR 6bb6b66f + FUN_18001df10 x1 e.g. 18001df57 MOV dword ptr [RSP + 0x70],0x6bb6b66f + +### SCALAR 6bb6b670 + FUN_18001e100 x1 e.g. 18001e131 MOV dword ptr [RSP + 0xc0],0x6bb6b670 + +### SCALAR 6bb6b672 + FUN_180002f50 x1 e.g. 180002f98 MOV dword ptr [RSP + 0x38],0x6bb6b672 + FUN_180009ee0 x1 e.g. 18000a0bb MOV dword ptr [RSP + 0xa8],0x6bb6b672 + MAG_TriggerFFC x1 e.g. 180003077 MOV dword ptr [RSP + 0x38],0x6bb6b672 + +### SCALAR 6bb6b673 + FUN_18001d2d0 x1 e.g. 18001d460 MOV dword ptr [RSP + 0x40],0x6bb6b673 + +### SCALAR 6bb6b674 + FUN_18001d520 x1 e.g. 18001d53e MOV dword ptr [RSP + 0x30],0x6bb6b674 + +### SCALAR 6bb6b676 + +### SCALAR 6bb6b677 + +### SCALAR 5bb5b55b + MAG_LoadDDT x1 e.g. 180005b8a CMP dword ptr [RSP + 0x70],0x5bb5b55b + +### ADDR 180042028 + +### ADDR 18004202c + +### ADDR 180042030 + +### ADDR 180042204 + +### ADDR 180041858 + +### ADDR 180041870 + +### ADDR 180041ef0 + +### ADDR 180041f20 + +### ADDR 180041f10 + +### ADDR 180041ee0 + +### ADDR 180041a20 + +### ADDR 180041340 + +### ADDR 180041ef8 + +### ADDR 180041f70 + +### ADDR 180041f40 + +### ADDR 180041fbc + +### ADDR 18004284c + +### ADDR 18004204c + +### ADDR 1800416a0 + FUN_1800415d0 x1 e.g. 1800417b8 JMP 0x1800416a0 + +### ADDR 1800416b0 + FUN_1800415d0 x1 e.g. 1800416bf JMP 0x1800416b0 + +### ADDR 180042010 + +### ADDR 180042014 + +### ADDR 180042018 + +### ADDR 18004201c + +### ADDR 180041f00 + +### ADDR 180041f30 + +### ADDR 180041f68 + +### ADDR 180041fa8 + diff --git a/analysis/ida/export/thermalsdk_dll/all_functions.txt b/analysis/ida/export/thermalsdk_dll/all_functions.txt new file mode 100644 index 0000000..5c2b478 --- /dev/null +++ b/analysis/ida/export/thermalsdk_dll/all_functions.txt @@ -0,0 +1,369 @@ +180001000 180001043 sub_180001000 +180001050 18000109F sub_180001050 +1800010A0 1800010EF sub_1800010A0 +1800010F0 180001133 sub_1800010F0 +180001140 180001183 sub_180001140 +180001190 1800011EC sub_180001190 +1800011F0 18000124A sub_1800011F0 +180001250 180001293 sub_180001250 +1800012A0 1800012CD sub_1800012A0 +1800012D0 1800012FD sub_1800012D0 +180001300 18000132D sub_180001300 +180001330 18000135D sub_180001330 +180001360 18000138D sub_180001360 +180001390 1800013BD sub_180001390 +1800013C0 1800013ED sub_1800013C0 +1800013F0 18000141D sub_1800013F0 +180001420 18000144D sub_180001420 +180001450 18000147D sub_180001450 +180001480 1800014AD sub_180001480 +1800014B0 1800014DD sub_1800014B0 +1800014E0 18000150D sub_1800014E0 +180001510 18000153D sub_180001510 +180001540 180001546 DllMain +180001550 1800015C4 sub_180001550 +1800015D0 180001649 sub_1800015D0 +180001650 180001683 sub_180001650 +1800016B0 1800016C3 sub_1800016B0 +1800016D0 180001713 sub_1800016D0 +180001720 180001741 sub_180001720 +180001750 180001770 ?cancel_current_task@Concurrency@@YAXXZ +180001770 1800017AD sub_180001770 +1800017B0 1800017ED sub_1800017B0 +1800017F0 1800023ED sub_1800017F0 +1800023F0 180002417 sub_1800023F0 +180002420 180002478 sub_180002420 +180002480 1800024A6 sub_180002480 +1800024B0 18000250F sub_1800024B0 +180002510 18000254B sub_180002510 +180002550 180002605 sub_180002550 +180002610 18000276D sub_180002610 +180002770 1800028CF sub_180002770 +1800028D0 180002AA7 sub_1800028D0 +180002AB0 180002B39 sub_180002AB0 +180002B40 180002B52 sub_180002B40 +180002B60 180002B72 sub_180002B60 +180002B80 180002B92 sub_180002B80 +180002BA0 180002C92 sub_180002BA0 +180002CA0 180002D99 sub_180002CA0 +180002DA0 180002E52 sub_180002DA0 +180002E60 180002F2B sub_180002E60 +180002F30 180002F61 sub_180002F30 +180002F70 180002FB3 sub_180002F70 +180002FC0 180002FC8 sub_180002FC0 +180002FD0 1800037B4 sub_180002FD0 +1800037C0 180003822 unknown_libname_18 +180003830 180003999 sub_180003830 +1800039A0 180003B00 sub_1800039A0 +180003B00 180003D47 sub_180003B00 +180003D50 180003E1A sub_180003D50 +180003E20 180003E84 sub_180003E20 +180003E90 18000412D sub_180003E90 +180004130 180004165 sub_180004130 +180004170 1800041EF sub_180004170 +1800041F0 1800041FF sub_1800041F0 +180004200 1800042A0 sub_180004200 +1800042A0 1800042FF sub_1800042A0 +180004300 18000430D sub_180004300 +180004310 18000465D sub_180004310 +180004660 18000472E sub_180004660 +180004730 180004791 sub_180004730 +1800047A0 1800047AF sub_1800047A0 +1800047B0 18000489F sub_1800047B0 +1800048A0 180004B3C sub_1800048A0 +180004B40 180004B75 sub_180004B40 +180004B80 180004BFF sub_180004B80 +180004C00 180004CA0 sub_180004C00 +180004CA0 180004F8A sub_180004CA0 +180004F90 18000503B sub_180004F90 +180005040 18000533D sub_180005040 +180005340 18000537D sub_180005340 +180005380 1800053BD sub_180005380 +1800053C0 18000578F sub_1800053C0 +180005790 180005885 sub_180005790 +180005890 1800059B5 sub_180005890 +1800059C0 180005A85 sub_1800059C0 +180005A90 180005B79 sub_180005A90 +180005B80 180005CD4 sub_180005B80 +180005CE0 180005D48 sub_180005CE0 +180005D50 180005DA2 sub_180005D50 +180005DB0 180005F90 sub_180005DB0 +180005F90 180006047 sub_180005F90 +180006050 1800060EC sub_180006050 +1800060F0 1800061A6 sub_1800060F0 +1800061B0 1800061BF sub_1800061B0 +1800061C0 1800061F4 ??_G?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAAPEAXI@Z +180006200 180006292 sub_180006200 +1800062A0 1800062DF sub_1800062A0 +1800062E0 180006304 sub_1800062E0 +180006310 1800064DA sub_180006310 +1800064E0 1800064F9 unknown_libname_19 +180006500 180006695 sub_180006500 +1800066A0 180006854 sub_1800066A0 +180006860 180006914 sub_180006860 +180006920 180006ADF sub_180006920 +180006AE0 180006C45 sub_180006AE0 +180006C50 180006D97 sub_180006C50 +180006DA0 180006E04 sub_180006DA0 +180006E10 180006E77 sub_180006E10 +180006E78 180006E84 sub_180006E78 +180006E90 180006EEF sub_180006E90 +180006EF0 180006F4F sub_180006EF0 +180006F50 1800070F3 sub_180006F50 +180007100 18000714D sub_180007100 +180007150 18000727C sub_180007150 +180007280 180007304 sub_180007280 +180007310 18000731F sub_180007310 +180007320 180007354 sub_180007320 +180007360 1800073EA sub_180007360 +1800073F0 180007511 sub_1800073F0 +180007520 180007565 sub_180007520 +180007570 180007583 sub_180007570 +180007590 1800076B6 sub_180007590 +1800076C0 180007906 sub_1800076C0 +180007930 18000795D StartAddress +180007960 1800079B5 sub_180007960 +1800079C0 180007A37 sub_1800079C0 +180007A40 180007CCC sub_180007A40 +180007CD0 180007CE1 sub_180007CD0 +180007CF0 180007D29 sub_180007CF0 +180007D30 180007E67 sub_180007D30 +180007E70 180007EE7 sub_180007E70 +180007EF0 180007F01 sub_180007EF0 +180007F10 180007F4C sub_180007F10 +180007F70 180007FA9 sub_180007F70 +180007FB0 180007FC1 sub_180007FB0 +180007FD0 180008009 sub_180007FD0 +180008010 180008021 sub_180008010 +180008030 180008069 sub_180008030 +180008070 1800080A4 sub_180008070 +1800080B0 180008287 sub_1800080B0 +180008290 1800082C2 sub_180008290 +1800082D0 180008A48 sub_1800082D0 +180008A50 180008BDD sub_180008A50 +180008BE0 180008CC8 sub_180008BE0 +180008CD0 180008CE5 sub_180008CD0 +180008CF0 180008E9E sub_180008CF0 +180008EA0 180008FF2 sub_180008EA0 +180009000 1800091D3 sub_180009000 +1800091E0 180009502 sub_1800091E0 +180009510 1800096A2 sub_180009510 +1800096B0 180009842 sub_1800096B0 +180009850 180009A3F sub_180009850 +180009A40 180009A64 sub_180009A40 +180009A70 180009D65 ??$common_mktime@_J@@YA_JQEAUtm@@_N@Z +180009D70 180009F95 sub_180009D70 +180009FA0 18000A1AF sub_180009FA0 +18000A1B0 18000A235 sub_18000A1B0 +18000A240 18000A2E7 sub_18000A240 +18000A2F0 18000A354 sub_18000A2F0 +18000A360 18000A3FC sub_18000A360 +18000A400 18000A502 sub_18000A400 +18000A510 18000A95D sub_18000A510 +18000A960 18000ABC7 sub_18000A960 +18000ABD0 18000AC7D sub_18000ABD0 +18000AC80 18000B212 sub_18000AC80 +18000B220 18000B27C sub_18000B220 +18000B280 18000B410 sub_18000B280 +18000B410 18000B48B sub_18000B410 +18000B490 18000B493 _guard_check_icall_nop +18000B4B0 18000B524 sub_18000B4B0 +18000B530 18000B6EA sub_18000B530 +18000B6F0 18000B899 sub_18000B6F0 +18000B8A0 18000B951 sub_18000B8A0 +18000B960 18000BB2C sub_18000B960 +18000BB30 18000BB36 GetSDKVersion +18000BB40 18000BB55 Start +18000BB60 18000BBF8 Stop +18000BC00 18000BC29 IsWorking +18000BC30 18000BC4B SetNewIRFrameDelegate +18000BC50 18000BC6B SetNewDistanceDelegate +18000BC70 18000BCEA ReadTemperatureAtPoint +18000BCF0 18000BE59 ReadTemperatureInRect +18000BE60 18000BEB1 SetTempBoundary +18000BEC0 18000BEE3 SetTempOffset +18000BEF0 18000BF09 SetUnitMode +18000BF10 18000BF8C Rotate +18000BF90 18000BFCB GetInnerIRCameraTemp +18000BFD0 18000C028 SetEmissivity +18000C030 18000C05F Trigger +18000C060 18000C160 GetTCMVersion +18000C160 18000C2F7 SetFirmwareData +18000C300 18000C37A SetUpdateCallback +18000C380 18000C463 StartUpdate +18000C470 18000C513 sub_18000C470 +18000C530 18000C551 __security_check_cookie +18000C554 18000C590 ??2@YAPEAX_K@Z +18000C590 18000C5C9 __scrt_acquire_startup_lock +18000C5CC 18000C600 __scrt_dllmain_after_initialize_c +18000C600 18000C615 __scrt_dllmain_before_initialize_c +18000C618 18000C640 sub_18000C618 +18000C640 18000C655 __scrt_dllmain_crt_thread_detach +18000C658 18000C6B8 __scrt_dllmain_exception_filter +18000C6B8 18000C6E8 __scrt_dllmain_uninitialize_c +18000C6E8 18000C6FC __scrt_dllmain_uninitialize_critical +18000C6FC 18000C745 __scrt_initialize_crt +18000C748 18000C7D3 __scrt_initialize_onexit_tables +18000C7D4 18000C86C __scrt_is_nonwritable_in_current_image +18000C86C 18000C890 __scrt_release_startup_lock +18000C890 18000C8B9 __scrt_uninitialize_crt +18000C8BC 18000C8F6 _onexit +18000C8F8 18000C90F atexit +18000C910 18000C915 j_j_free +18000C918 18000C943 sub_18000C918 +18000C944 18000C978 __raise_securityfailure +18000C978 18000CA49 __report_gsfailure +18000CA4C 18000CA5F __report_rangecheckfailure +18000CA60 18000CAFB __report_securityfailure +18000CAFC 18000CB69 capture_current_context +18000CB6C 18000CBDD capture_previous_context +18000CBE0 18000CCB0 ?__scrt_initialize_thread_safe_statics@@YAHXZ +18000CCB0 18000CCD8 ?__scrt_uninitialize_thread_safe_statics@@YAXXZ +18000CCD8 18000CD08 _Init_thread_abort +18000CD08 18000CD68 _Init_thread_footer +18000CD68 18000CDCF _Init_thread_header +18000CDD0 18000CE11 _Init_thread_notify +18000CE14 18000CE77 _Init_thread_wait +18000CE78 18000CE7D j_??2@YAPEAX_K@Z +18000CE80 18000CED0 ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000CED0 18000CFE6 ?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z +18000CFE8 18000D06C ?dllmain_crt_process_detach@@YAH_N@Z +18000D06C 18000D19F ?dllmain_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000D1A0 18000D1DD DllEntryPoint +18000D1E0 18000D1FE sub_18000D1E0 +18000D200 18000D220 ?cancel_current_task@Concurrency@@YAXXZ_0 +18000D220 18000D3C1 __isa_available_init +18000D3C4 18000D3D0 ?__uncaught_exception@@YA_NXZ +18000D3D0 18000D3D8 sub_18000D3D0 +18000D3D8 18000D522 __scrt_fastfail +18000D524 18000D529 j_free +18000D52C 18000D5D8 __security_init_cookie +18000D5D8 18000D5E6 sub_18000D5D8 +18000D5E8 18000D5F4 sub_18000D5E8 +18000D5F4 18000D5FC sub_18000D5F4 +18000D5FC 18000D617 __scrt_initialize_default_local_stdio_options +18000D618 18000D620 sub_18000D618 +18000D620 18000D65C sub_18000D620 +18000D65C 18000D698 sub_18000D65C +18000D6A0 18000D6A6 ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ +18000D6A6 18000D6AC ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ +18000D6AC 18000D6B2 ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ +18000D6B2 18000D6B8 ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ +18000D6B8 18000D6BE ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z +18000D6BE 18000D6C4 ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z +18000D6C4 18000D6CA ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z +18000D6CA 18000D6D0 ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ +18000D6D0 18000D6D6 ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z +18000D6D6 18000D6DC __CxxFrameHandler4 +18000D6E2 18000D6E8 __C_specific_handler +18000D6E8 18000D6EE _CxxThrowException +18000D6EE 18000D6F4 memset +18000D6F4 18000D6FA __std_type_info_destroy_list +18000D6FA 18000D700 _callnewh +18000D700 18000D706 malloc +18000D706 18000D70C _seh_filter_dll +18000D70C 18000D712 _configure_narrow_argv +18000D712 18000D718 _initialize_narrow_environment +18000D718 18000D71E _initialize_onexit_table +18000D71E 18000D724 _register_onexit_function +18000D724 18000D72A _execute_onexit_table +18000D72A 18000D730 _crt_atexit +18000D730 18000D736 _cexit +18000D736 18000D73C _initterm +18000D73C 18000D742 _initterm_e +18000D742 18000D748 free +18000D748 18000D74E IsProcessorFeaturePresent +18000D750 18000D753 sub_18000D750 +18000D754 18000D757 sub_18000D754 +18000D758 18000D775 __GSHandlerCheck +18000D778 18000D7D3 __GSHandlerCheckCommon +18000D7D4 18000D853 __GSHandlerCheck_EH4 +18000D853 18000D859 __RTDynamicCast +18000D859 18000D85F memchr +18000D85F 18000D865 memcmp +18000D865 18000D86B memcpy +18000D86B 18000D871 memmove +18000D890 18000D892 _guard_dispatch_icall_nop +18000D8A0 18000D8AC unknown_libname_1 +18000D8AC 18000D8B8 unknown_libname_2 +18000D8B8 18000D8C4 unknown_libname_3 +18000D8C4 18000D8D0 unknown_libname_4 +18000D8F9 18000D905 unknown_libname_5 +18000D905 18000D911 sub_18000D905 +18000D911 18000D91D sub_18000D911 +18000D91D 18000D929 sub_18000D91D +18000D929 18000D935 unknown_libname_6 +18000D935 18000D941 sub_18000D935 +18000D941 18000D94D sub_18000D941 +18000D94D 18000D959 ?dtor$14@?0??_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z@4HA +18000D970 18000D97C sub_18000D970 +18000DA1C 18000DA28 sub_18000DA1C +18000DA60 18000DA6C ?dtor$0@?0??AllocateSegment@FairScheduleGroup@details@Concurrency@@MEAAPEAVScheduleGroupSegmentBase@23@PEAVSchedulingRing@23@PEAVlocation@3@@Z@4HA +18000DA6C 18000DA78 ?dtor$1@?0???0task_options@Concurrency@@QEAA@XZ@4HA +18000DAD8 18000DAE4 sub_18000DAD8 +18000DB70 18000DB7C sub_18000DB70 +18000DBBF 18000DBCB sub_18000DBBF +18000DBCB 18000DBD7 ?dtor$0@?0??do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_N@Z@4HA +18000DBD7 18000DBE3 ?dtor$1@?0??do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_N@Z@4HA +18000DBE3 18000DBEF sub_18000DBE3 +18000DBF0 18000DBFC sub_18000DBF0 +18000DBFC 18000DC08 unknown_libname_7 +18000DC10 18000DC1C sub_18000DC10 +18000DC1C 18000DC28 ?dtor$0@?0??_wcstombs_l_helper@@YA_KPEADPEB_W_KPEAU__crt_locale_pointers@@@Z@4HA +18000DC30 18000DC3C ?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA +18000DCB0 18000DCBC ?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_0 +18000DCBC 18000DCC8 ?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_1 +18000DD2D 18000DD39 sub_18000DD2D +18000DD50 18000DD5C sub_18000DD50 +18000DD5C 18000DD68 sub_18000DD5C +18000DDAD 18000DDB9 sub_18000DDAD +18000DDF0 18000DDFC sub_18000DDF0 +18000DE00 18000DE0C sub_18000DE00 +18000DE0C 18000DE18 unknown_libname_8 +18000DE18 18000DE24 sub_18000DE18 +18000DE30 18000DE3C sub_18000DE30 +18000DE69 18000DE75 sub_18000DE69 +18000DE80 18000DE8C unknown_libname_9 +18000DE8C 18000DE98 sub_18000DE8C +18000DED5 18000DEE1 unknown_libname_10 +18000DEE1 18000DEED unknown_libname_11 +18000DEED 18000DEF9 unknown_libname_12 +18000DEF9 18000DF05 unknown_libname_13 +18000DF10 18000DF1C sub_18000DF10 +18000DF6D 18000DF79 ?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_2 +18000DF80 18000DF8C unknown_libname_14 +18000DF90 18000DF9C sub_18000DF90 +18000DFB9 18000DFC5 sub_18000DFB9 +18000DFE0 18000DFEC sub_18000DFE0 +18000DFEC 18000DFF8 ?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_3 +18000E020 18000E02C sub_18000E020 +18000E180 18000E18C sub_18000E180 +18000E18C 18000E198 unknown_libname_15 +18000E1A8 18000E1B4 unknown_libname_16 +18000E1B4 18000E1C0 unknown_libname_17 +18000E200 18000E20C ?dtor$0@?0??_wcrtomb_s_l@@YAHQEAHQEAD_K_WQEAU_Mbstatet@@QEAU__crt_locale_pointers@@@Z@4HA +18000E20C 18000E218 sub_18000E20C +18000E300 18000E362 sub_18000E300 +18000E370 18000E3D2 sub_18000E370 +18000E3E0 18000E442 sub_18000E3E0 +18000E450 18000E4B2 sub_18000E450 +18000E4C0 18000E522 sub_18000E4C0 +18000E530 18000E592 sub_18000E530 +18000E5A0 18000E602 sub_18000E5A0 +18000E610 18000E672 sub_18000E610 +18000E680 18000E6ED sub_18000E680 +18000E6F0 18000E75A sub_18000E6F0 +18000E760 18000E7CA sub_18000E760 +18000E7D0 18000E83A sub_18000E7D0 +18000E840 18000E8AA sub_18000E840 +18000E8B0 18000E91A sub_18000E8B0 +18000E920 18000E98A sub_18000E920 +18000E990 18000E9FA sub_18000E990 +18000EA00 18000EA6A sub_18000EA00 +18000EA70 18000EADA sub_18000EA70 +18000EAE0 18000EB4A sub_18000EAE0 +18000EB50 18000EBBA sub_18000EB50 +18000EBC0 18000EC2A sub_18000EBC0 +18000EC30 18000EC9A sub_18000EC30 +18000ECA0 18000ED0A sub_18000ECA0 +TOTAL 368 diff --git a/analysis/ida/export/thermalsdk_dll/all_functions_disasm.txt b/analysis/ida/export/thermalsdk_dll/all_functions_disasm.txt new file mode 100644 index 0000000..421e777 --- /dev/null +++ b/analysis/ida/export/thermalsdk_dll/all_functions_disasm.txt @@ -0,0 +1,14296 @@ +### FUNC 180001000 - 180001043 (67 bytes) name=sub_180001000 +180001000: sub rsp, 28h +180001004: mov edx, 1 +180001009: mov [rsp+28h+arg_0], 7Eh ; '~' +18000100E: lea rcx, Block +180001015: call sub_180002AB0 +18000101A: mov rcx, cs:Block +180001021: movzx eax, [rsp+28h+arg_0] +180001026: mov [rcx], al +180001028: lea rax, [rcx+1] +18000102C: lea rcx, sub_18000E300; void (__cdecl *)() +180001033: mov qword ptr cs:xmmword_180016068, rax +18000103A: add rsp, 28h +18000103E: jmp atexit + +### FUNC 180001050 - 18000109F (79 bytes) name=sub_180001050 +180001050: sub rsp, 28h +180001054: mov edx, 8 +180001059: mov dword ptr [rsp+28h+arg_0], 39393902h +180001061: lea rcx, qword_180016000 +180001068: mov dword ptr [rsp+28h+arg_0+4], 3393939h +180001070: call sub_180002AB0 +180001075: mov rcx, cs:qword_180016000 +18000107C: mov rax, [rsp+28h+arg_0] +180001081: mov [rcx], rax +180001084: lea rax, [rcx+8] +180001088: lea rcx, sub_18000E370; void (__cdecl *)() +18000108F: mov qword ptr cs:xmmword_180016008, rax +180001096: add rsp, 28h +18000109A: jmp atexit + +### FUNC 1800010A0 - 1800010EF (79 bytes) name=sub_1800010A0 +1800010A0: sub rsp, 28h +1800010A4: mov edx, 8 +1800010A9: mov dword ptr [rsp+28h+arg_0], 31323102h +1800010B1: lea rcx, qword_180016018 +1800010B8: mov dword ptr [rsp+28h+arg_0+4], 3343132h +1800010C0: call sub_180002AB0 +1800010C5: mov rcx, cs:qword_180016018 +1800010CC: mov rax, [rsp+28h+arg_0] +1800010D1: mov [rcx], rax +1800010D4: lea rax, [rcx+8] +1800010D8: lea rcx, sub_18000E3E0; void (__cdecl *)() +1800010DF: mov qword ptr cs:xmmword_180016020, rax +1800010E6: add rsp, 28h +1800010EA: jmp atexit + +### FUNC 1800010F0 - 180001133 (67 bytes) name=sub_1800010F0 +1800010F0: sub rsp, 28h +1800010F4: mov edx, 1 +1800010F9: mov [rsp+28h+arg_0], 13h +1800010FE: lea rcx, qword_180016090 +180001105: call sub_180002AB0 +18000110A: mov rcx, cs:qword_180016090 +180001111: movzx eax, [rsp+28h+arg_0] +180001116: mov [rcx], al +180001118: lea rax, [rcx+1] +18000111C: lea rcx, sub_18000E450; void (__cdecl *)() +180001123: mov qword ptr cs:xmmword_180016098, rax +18000112A: add rsp, 28h +18000112E: jmp atexit + +### FUNC 180001140 - 180001183 (67 bytes) name=sub_180001140 +180001140: sub rsp, 28h +180001144: mov edx, 1 +180001149: mov [rsp+28h+arg_0], 12h +18000114E: lea rcx, qword_180016078 +180001155: call sub_180002AB0 +18000115A: mov rcx, cs:qword_180016078 +180001161: movzx eax, [rsp+28h+arg_0] +180001166: mov [rcx], al +180001168: lea rax, [rcx+1] +18000116C: lea rcx, sub_18000E4C0; void (__cdecl *)() +180001173: mov qword ptr cs:xmmword_180016080, rax +18000117A: add rsp, 28h +18000117E: jmp atexit + +### FUNC 180001190 - 1800011EC (92 bytes) name=sub_180001190 +180001190: push rbx +180001192: sub rsp, 20h +180001196: mov edx, 6 +18000119B: mov [rsp+28h+Src], 70757766h +1800011A3: lea rcx, qword_180016030 +1800011AA: mov [rsp+28h+arg_4], 0A0Dh +1800011B1: call sub_180002AB0 +1800011B6: mov rbx, cs:qword_180016030 +1800011BD: lea rdx, [rsp+28h+Src]; Src +1800011C2: mov rcx, rbx; void * +1800011C5: mov r8d, 6; Size +1800011CB: call memmove +1800011D0: lea rax, [rbx+6] +1800011D4: lea rcx, sub_18000E530; void (__cdecl *)() +1800011DB: mov qword ptr cs:xmmword_180016038, rax +1800011E2: add rsp, 20h +1800011E6: pop rbx +1800011E7: jmp atexit + +### FUNC 1800011F0 - 18000124A (90 bytes) name=sub_1800011F0 +1800011F0: push rbx +1800011F2: sub rsp, 20h +1800011F6: mov edx, 5 +1800011FB: mov [rsp+28h+Src], 0D726576h +180001203: lea rcx, qword_1800160A8 +18000120A: mov [rsp+28h+arg_4], 0Ah +18000120F: call sub_180002AB0 +180001214: mov rbx, cs:qword_1800160A8 +18000121B: lea rdx, [rsp+28h+Src]; Src +180001220: mov rcx, rbx; void * +180001223: mov r8d, 5; Size +180001229: call memmove +18000122E: lea rax, [rbx+5] +180001232: lea rcx, sub_18000E5A0; void (__cdecl *)() +180001239: mov qword ptr cs:xmmword_1800160B0, rax +180001240: add rsp, 20h +180001244: pop rbx +180001245: jmp atexit + +### FUNC 180001250 - 180001293 (67 bytes) name=sub_180001250 +180001250: sub rsp, 28h +180001254: mov edx, 1 +180001259: mov [rsp+28h+arg_0], 4 +18000125E: lea rcx, qword_180016048 +180001265: call sub_180002AB0 +18000126A: mov rcx, cs:qword_180016048 +180001271: movzx eax, [rsp+28h+arg_0] +180001276: mov [rcx], al +180001278: lea rax, [rcx+1] +18000127C: lea rcx, sub_18000E610; void (__cdecl *)() +180001283: mov qword ptr cs:xmmword_180016050, rax +18000128A: add rsp, 28h +18000128E: jmp atexit + +### FUNC 1800012A0 - 1800012CD (45 bytes) name=sub_1800012A0 +1800012A0: sub rsp, 28h +1800012A4: mov r8d, 0Eh; Size +1800012AA: lea rdx, aScannerNormal; "SCANNER_NORMAL" +1800012B1: lea rcx, qword_180015060; void * +1800012B8: call sub_180002610 +1800012BD: lea rcx, sub_18000E6F0; void (__cdecl *)() +1800012C4: add rsp, 28h +1800012C8: jmp atexit + +### FUNC 1800012D0 - 1800012FD (45 bytes) name=sub_1800012D0 +1800012D0: sub rsp, 28h +1800012D4: mov r8d, 0Fh; Size +1800012DA: lea rdx, aScannerOffline; "SCANNER_OFFLINE" +1800012E1: lea rcx, qword_1800150A0; void * +1800012E8: call sub_180002610 +1800012ED: lea rcx, sub_18000E760; void (__cdecl *)() +1800012F4: add rsp, 28h +1800012F8: jmp atexit + +### FUNC 180001300 - 18000132D (45 bytes) name=sub_180001300 +180001300: sub rsp, 28h +180001304: mov r8d, 13h; Size +18000130A: lea rdx, aScannerDataExc; "SCANNER_DATA_EXCEED" +180001311: lea rcx, qword_1800151E0; void * +180001318: call sub_180002610 +18000131D: lea rcx, sub_18000E7D0; void (__cdecl *)() +180001324: add rsp, 28h +180001328: jmp atexit + +### FUNC 180001330 - 18000135D (45 bytes) name=sub_180001330 +180001330: sub rsp, 28h +180001334: mov r8d, 11h; Size +18000133A: lea rdx, aScannerFiltedQ; "SCANNER_FILTED_QR" +180001341: lea rcx, qword_180015180; void * +180001348: call sub_180002610 +18000134D: lea rcx, sub_18000E840; void (__cdecl *)() +180001354: add rsp, 28h +180001358: jmp atexit + +### FUNC 180001360 - 18000138D (45 bytes) name=sub_180001360 +180001360: sub rsp, 28h +180001364: mov r8d, 13h; Size +18000136A: lea rdx, aScannerFiltedE; "SCANNER_FILTED_EAN8" +180001371: lea rcx, qword_1800150E0; void * +180001378: call sub_180002610 +18000137D: lea rcx, sub_18000E8B0; void (__cdecl *)() +180001384: add rsp, 28h +180001388: jmp atexit + +### FUNC 180001390 - 1800013BD (45 bytes) name=sub_180001390 +180001390: sub rsp, 28h +180001394: mov r8d, 14h; Size +18000139A: lea rdx, aScannerFiltedE_0; "SCANNER_FILTED_EAN13" +1800013A1: lea rcx, qword_180015160; void * +1800013A8: call sub_180002610 +1800013AD: lea rcx, sub_18000E920; void (__cdecl *)() +1800013B4: add rsp, 28h +1800013B8: jmp atexit + +### FUNC 1800013C0 - 1800013ED (45 bytes) name=sub_1800013C0 +1800013C0: sub rsp, 28h +1800013C4: mov r8d, 12h; Size +1800013CA: lea rdx, aScannerFiltedC; "SCANNER_FILTED_C39" +1800013D1: lea rcx, qword_1800151C0; void * +1800013D8: call sub_180002610 +1800013DD: lea rcx, sub_18000E990; void (__cdecl *)() +1800013E4: add rsp, 28h +1800013E8: jmp atexit + +### FUNC 1800013F0 - 18000141D (45 bytes) name=sub_1800013F0 +1800013F0: sub rsp, 28h +1800013F4: mov r8d, 13h; Size +1800013FA: lea rdx, aScannerFiltedC_0; "SCANNER_FILTED_C128" +180001401: lea rcx, qword_180015120; void * +180001408: call sub_180002610 +18000140D: lea rcx, sub_18000EA00; void (__cdecl *)() +180001414: add rsp, 28h +180001418: jmp atexit + +### FUNC 180001420 - 18000144D (45 bytes) name=sub_180001420 +180001420: sub rsp, 28h +180001424: mov r8d, 12h; Size +18000142A: lea rdx, aScannerFiltedG; "SCANNER_FILTED_GS1" +180001431: lea rcx, qword_1800150C0; void * +180001438: call sub_180002610 +18000143D: lea rcx, sub_18000EA70; void (__cdecl *)() +180001444: add rsp, 28h +180001448: jmp atexit + +### FUNC 180001450 - 18000147D (45 bytes) name=sub_180001450 +180001450: sub rsp, 28h +180001454: mov r8d, 12h; Size +18000145A: lea rdx, aScannerFiltedU; "SCANNER_FILTED_UPA" +180001461: lea rcx, qword_180015140; void * +180001468: call sub_180002610 +18000146D: lea rcx, sub_18000EAE0; void (__cdecl *)() +180001474: add rsp, 28h +180001478: jmp atexit + +### FUNC 180001480 - 1800014AD (45 bytes) name=sub_180001480 +180001480: sub rsp, 28h +180001484: mov r8d, 12h; Size +18000148A: lea rdx, aScannerFiltedU_0; "SCANNER_FILTED_UPB" +180001491: lea rcx, qword_180015100; void * +180001498: call sub_180002610 +18000149D: lea rcx, sub_18000EB50; void (__cdecl *)() +1800014A4: add rsp, 28h +1800014A8: jmp atexit + +### FUNC 1800014B0 - 1800014DD (45 bytes) name=sub_1800014B0 +1800014B0: sub rsp, 28h +1800014B4: mov r8d, 12h; Size +1800014BA: lea rdx, aScannerFiltedU_1; "SCANNER_FILTED_UPE" +1800014C1: lea rcx, qword_1800151A0; void * +1800014C8: call sub_180002610 +1800014CD: lea rcx, sub_18000EBC0; void (__cdecl *)() +1800014D4: add rsp, 28h +1800014D8: jmp atexit + +### FUNC 1800014E0 - 18000150D (45 bytes) name=sub_1800014E0 +1800014E0: sub rsp, 28h +1800014E4: mov r8d, 15h; Size +1800014EA: lea rdx, aScannerFiltedC_1; "SCANNER_FILTED_COUPON" +1800014F1: lea rcx, qword_180015040; void * +1800014F8: call sub_180002610 +1800014FD: lea rcx, sub_18000EC30; void (__cdecl *)() +180001504: add rsp, 28h +180001508: jmp atexit + +### FUNC 180001510 - 18000153D (45 bytes) name=sub_180001510 +180001510: sub rsp, 28h +180001514: mov r8d, 12h; Size +18000151A: lea rdx, aScannerFiltedW; "SCANNER_FILTED_WWW" +180001521: lea rcx, qword_180015080; void * +180001528: call sub_180002610 +18000152D: lea rcx, sub_18000ECA0; void (__cdecl *)() +180001534: add rsp, 28h +180001538: jmp atexit + +### FUNC 180001540 - 180001546 (6 bytes) name=DllMain +180001540: mov eax, 1 +180001545: retn + +### FUNC 180001550 - 1800015C4 (116 bytes) name=sub_180001550 +180001550: push rbx +180001552: sub rsp, 20h +180001556: mov rbx, rcx +180001559: mov ecx, [rcx+10h] +18000155C: call cs:MAG_IsProcessingImage +180001562: test eax, eax +180001564: jz short loc_18000156F +180001566: mov ecx, [rbx+10h] +180001569: call cs:MAG_StopProcessImage +18000156F: mov ecx, [rbx+10h] +180001572: call cs:MAG_IsLinked +180001578: test eax, eax +18000157A: jz short loc_180001585 +18000157C: mov ecx, [rbx+10h] +18000157F: call cs:MAG_DisLinkCamera +180001585: mov ecx, [rbx+10h] +180001588: call cs:MAG_IsInitialized +18000158E: test eax, eax +180001590: jz short loc_1800015A1 +180001592: mov ecx, [rbx+10h] +180001595: call cs:MAG_Free +18000159B: mov dword ptr [rbx], 0 +1800015A1: mov ecx, [rbx+10h] +1800015A4: call cs:MAG_IsChannelAvailable +1800015AA: test eax, eax +1800015AC: jz short loc_1800015BE +1800015AE: mov ecx, [rbx+10h] +1800015B1: call cs:MAG_DelChannel +1800015B7: mov dword ptr [rbx+10h], 0FFFFFFFFh +1800015BE: add rsp, 20h +1800015C2: pop rbx +1800015C3: retn + +### FUNC 1800015D0 - 180001649 (121 bytes) name=sub_1800015D0 +1800015D0: push rdi +1800015D2: sub rsp, 20h +1800015D6: cmp dword ptr [rcx], 0 +1800015D9: mov rdi, rcx +1800015DC: jz short loc_1800015E9 +1800015DE: mov eax, 1 +1800015E3: add rsp, 20h +1800015E7: pop rdi +1800015E8: retn +1800015E9: mov [rsp+28h+arg_0], rbx +1800015EE: mov ebx, [rcx+10h] +1800015F1: cmp ebx, 80h +1800015F7: jbe short loc_18000162E +1800015F9: xor ebx, ebx +1800015FB: nop dword ptr [rax+rax+00h] +180001600: mov ecx, ebx +180001602: call cs:MAG_IsChannelAvailable +180001608: test eax, eax +18000160A: jz short loc_18000161B +18000160C: inc ebx +18000160E: cmp ebx, 80h +180001614: jle short loc_180001600 +180001616: mov ebx, [rdi+10h] +180001619: jmp short loc_180001626 +18000161B: mov ecx, ebx +18000161D: call cs:MAG_NewChannel +180001623: mov [rdi+10h], ebx +180001626: cmp ebx, 80h +18000162C: ja short loc_18000163C +18000162E: mov rdx, [rdi+8] +180001632: mov ecx, ebx +180001634: call cs:MAG_Initialize +18000163A: mov [rdi], eax +18000163C: mov eax, [rdi] +18000163E: mov rbx, [rsp+28h+arg_0] +180001643: add rsp, 20h +180001647: pop rdi +180001648: retn + +### FUNC 180001650 - 180001683 (51 bytes) name=sub_180001650 +180001650: push rbx +180001652: sub rsp, 20h +180001656: mov rbx, rcx +180001659: mov rax, rdx +18000165C: lea rcx, off_18000F6D8 +180001663: xorps xmm0, xmm0 +180001666: lea rdx, [rbx+8] +18000166A: mov [rbx], rcx +18000166D: lea rcx, [rax+8] +180001671: movups xmmword ptr [rdx], xmm0 +180001674: call cs:__std_exception_copy +18000167A: mov rax, rbx +18000167D: add rsp, 20h +180001681: pop rbx +180001682: retn + +### FUNC 1800016B0 - 1800016C3 (19 bytes) name=sub_1800016B0 +1800016B0: mov rdx, [rcx+8] +1800016B4: lea rax, aUnknownExcepti; "Unknown exception" +1800016BB: test rdx, rdx +1800016BE: cmovnz rax, rdx +1800016C2: retn + +### FUNC 1800016D0 - 180001713 (67 bytes) name=sub_1800016D0 +1800016D0: mov [rsp+arg_0], rbx +1800016D5: push rdi +1800016D6: sub rsp, 20h +1800016DA: lea rax, off_18000F6D8 +1800016E1: mov rdi, rcx +1800016E4: mov [rcx], rax +1800016E7: mov ebx, edx +1800016E9: add rcx, 8 +1800016ED: call cs:__std_exception_destroy +1800016F3: test bl, 1 +1800016F6: jz short loc_180001705 +1800016F8: mov edx, 18h +1800016FD: mov rcx, rdi; Block +180001700: call j_j_free +180001705: mov rbx, [rsp+28h+arg_0] +18000170A: mov rax, rdi +18000170D: add rsp, 20h +180001711: pop rdi +180001712: retn + +### FUNC 180001720 - 180001741 (33 bytes) name=sub_180001720 +180001720: lea rax, aBadArrayNewLen; "bad array new length" +180001727: mov qword ptr [rcx+10h], 0 +18000172F: mov [rcx+8], rax +180001733: lea rax, off_18000F718 +18000173A: mov [rcx], rax +18000173D: mov rax, rcx +180001740: retn + +### FUNC 180001750 - 180001770 (32 bytes) name=?cancel_current_task@Concurrency@@YAXXZ +180001750: sub rsp, 48h +180001754: lea rcx, [rsp+48h+pExceptionObject] +180001759: call sub_180001720 +18000175E: lea rdx, pThrowInfo; pThrowInfo +180001765: lea rcx, [rsp+48h+pExceptionObject]; pExceptionObject +18000176A: call _CxxThrowException +18000176F: align 10h + +### FUNC 180001770 - 1800017AD (61 bytes) name=sub_180001770 +180001770: push rbx +180001772: sub rsp, 20h +180001776: mov rbx, rcx +180001779: mov rax, rdx +18000177C: lea rcx, off_18000F6D8 +180001783: xorps xmm0, xmm0 +180001786: lea rdx, [rbx+8] +18000178A: mov [rbx], rcx +18000178D: lea rcx, [rax+8] +180001791: movups xmmword ptr [rdx], xmm0 +180001794: call cs:__std_exception_copy +18000179A: lea rax, off_18000F718 +1800017A1: mov [rbx], rax +1800017A4: mov rax, rbx +1800017A7: add rsp, 20h +1800017AB: pop rbx +1800017AC: retn + +### FUNC 1800017B0 - 1800017ED (61 bytes) name=sub_1800017B0 +1800017B0: push rbx +1800017B2: sub rsp, 20h +1800017B6: mov rbx, rcx +1800017B9: mov rax, rdx +1800017BC: lea rcx, off_18000F6D8 +1800017C3: xorps xmm0, xmm0 +1800017C6: lea rdx, [rbx+8] +1800017CA: mov [rbx], rcx +1800017CD: lea rcx, [rax+8] +1800017D1: movups xmmword ptr [rdx], xmm0 +1800017D4: call cs:__std_exception_copy +1800017DA: lea rax, off_18000F6F0 +1800017E1: mov [rbx], rax +1800017E4: mov rax, rbx +1800017E7: add rsp, 20h +1800017EB: pop rbx +1800017EC: retn + +### FUNC 1800017F0 - 1800023ED (3069 bytes) name=sub_1800017F0 +1800017F0: mov [rsp-28h+arg_8], rbx +1800017F5: mov [rsp-28h+arg_10], rsi +1800017FA: mov [rsp-28h+arg_18], rdi +1800017FF: push rbp +180001800: push r12 +180001802: push r13 +180001804: push r14 +180001806: push r15 +180001808: mov rbp, rsp +18000180B: sub rsp, 60h +18000180F: mov rax, cs:__security_cookie +180001816: xor rax, rsp +180001819: mov [rbp+var_10], rax +18000181D: mov rbx, rdx +180001820: mov rsi, rcx +180001823: mov eax, [rcx+4Ch] +180001826: cmp eax, 1 +180001829: jnz short loc_180001867 +18000182B: mov rcx, [rdx] +18000182E: mov rax, [rdx+8] +180001832: sub rax, rcx +180001835: cmp rax, 1 +180001839: jnz loc_1800020B6 +18000183F: cmp byte ptr [rcx], 6 +180001842: jnz loc_1800020B6 +180001848: mov [rsi+48h], al +18000184B: lea rcx, [rsi+58h]; _Cnd_t +18000184F: call cs:_Cnd_broadcast +180001855: test eax, eax +180001857: jz short loc_180001862 +180001859: mov ecx, eax +18000185B: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180001861: nop +180001862: jmp loc_1800020B6 +180001867: cmp eax, 2 +18000186A: jnz short loc_1800018A8 +18000186C: mov rcx, [rdx] +18000186F: mov rax, [rdx+8] +180001873: sub rax, rcx +180001876: cmp rax, 1 +18000187A: jnz loc_1800020B6 +180001880: cmp byte ptr [rcx], 6 +180001883: jnz loc_1800020B6 +180001889: mov [rsi+48h], al +18000188C: lea rcx, [rsi+58h]; _Cnd_t +180001890: call cs:_Cnd_broadcast +180001896: test eax, eax +180001898: jz short loc_1800018A3 +18000189A: mov ecx, eax +18000189C: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800018A2: nop +1800018A3: jmp loc_1800020B6 +1800018A8: cmp eax, 3 +1800018AB: jnz short loc_1800018E9 +1800018AD: mov rcx, [rdx] +1800018B0: mov rax, [rdx+8] +1800018B4: sub rax, rcx +1800018B7: cmp rax, 1 +1800018BB: jnz loc_1800020B6 +1800018C1: cmp byte ptr [rcx], 6 +1800018C4: jnz loc_1800020B6 +1800018CA: mov [rsi+48h], al +1800018CD: lea rcx, [rsi+58h]; _Cnd_t +1800018D1: call cs:_Cnd_broadcast +1800018D7: test eax, eax +1800018D9: jz short loc_1800018E4 +1800018DB: mov ecx, eax +1800018DD: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800018E3: nop +1800018E4: jmp loc_1800020B6 +1800018E9: cmp eax, 4 +1800018EC: jnz loc_180001B62 +1800018F2: xor edi, edi +1800018F4: mov r10d, edi +1800018F7: mov [rbp+var_3C], edi +1800018FA: mov rdx, [rdx] +1800018FD: cmp [rbx+8], rdx +180001901: jz loc_1800019D4 +180001907: mov r13d, edi +18000190A: mov r8, [rcx+40h] +18000190E: xchg ax, ax +180001910: movzx eax, byte ptr [rdx+r13] +180001915: mov [rbp+var_40], al +180001918: mov rdx, [rsi+38h] +18000191C: mov r9, r8 +18000191F: lea eax, [r8+rdx] +180001923: test al, 0Fh +180001925: jnz short loc_18000194A +180001927: lea rax, [r8+10h] +18000192B: shr rax, 4 +18000192F: cmp [rsi+30h], rax +180001933: ja short loc_18000194A +180001935: lea rcx, [rsi+20h] +180001939: call sub_1800028D0 +18000193E: mov rdx, [rsi+38h] +180001942: mov r9, [rsi+40h] +180001946: mov r10d, [rbp+var_3C] +18000194A: mov rcx, [rsi+30h] +18000194E: mov rax, rcx +180001951: shl rax, 4 +180001955: dec rax +180001958: and rax, rdx +18000195B: mov [rsi+38h], rax +18000195F: lea r15, [rax+r9] +180001963: dec rcx +180001966: mov rax, r15 +180001969: shr rax, 4 +18000196D: and rcx, rax +180001970: lea r12, ds:0[rcx*8] +180001978: mov rax, [rsi+28h] +18000197C: cmp [rax+r12], rdi +180001980: jnz short loc_18000199C +180001982: mov ecx, 10h; Size +180001987: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000198C: mov rcx, [rsi+28h] +180001990: mov [r12+rcx], rax +180001994: mov rax, [rsi+28h] +180001998: mov r10d, [rbp+var_3C] +18000199C: and r15d, 0Fh +1800019A0: mov rax, [r12+rax] +1800019A4: movzx ecx, [rbp+var_40] +1800019A8: mov [r15+rax], cl +1800019AC: inc qword ptr [rsi+40h] +1800019B0: mov r8, [rsi+40h] +1800019B4: inc r10d +1800019B7: mov [rbp+var_3C], r10d +1800019BB: inc r13 +1800019BE: mov rdx, [rbx] +1800019C1: mov rcx, [rbx+8] +1800019C5: sub rcx, rdx +1800019C8: movsxd rax, r10d +1800019CB: cmp rax, rcx +1800019CE: jb loc_180001910 +1800019D4: mov r8, rdi +1800019D7: mov [rbp+var_20], rdi +1800019DB: mov ebx, 0Fh +1800019E0: mov [rbp+var_18], rbx +1800019E4: mov byte ptr [rbp+Buf], dil +1800019E8: mov r14, [rsi+38h] +1800019EC: mov r15, [rsi+40h] +1800019F0: add r15, r14 +1800019F3: cmp r14, r15 +1800019F6: jz short loc_180001A63 +1800019F8: nop dword ptr [rax+rax+00000000h] +180001A00: mov rcx, [rsi+30h] +180001A04: dec rcx +180001A07: mov rax, r14 +180001A0A: shr rax, 4 +180001A0E: and rcx, rax +180001A11: mov rdx, r14 +180001A14: and edx, 0Fh +180001A17: mov rax, [rsi+28h] +180001A1B: mov rcx, [rax+rcx*8] +180001A1F: movzx r9d, byte ptr [rdx+rcx] +180001A24: cmp r8, rbx +180001A27: jnb short loc_180001A4A +180001A29: lea rax, [r8+1] +180001A2D: mov [rbp+var_20], rax +180001A31: lea rax, [rbp+Buf] +180001A35: cmp rbx, 10h +180001A39: cmovnb rax, [rbp+Buf] +180001A3E: mov [rax+r8], r9b +180001A42: mov byte ptr [rax+r8+1], 0 +180001A48: jmp short loc_180001A53 +180001A4A: lea rcx, [rbp+Buf]; Src +180001A4E: call sub_180002770 +180001A53: inc r14 +180001A56: mov rbx, [rbp+var_18] +180001A5A: mov r8, [rbp+var_20] +180001A5E: cmp r14, r15 +180001A61: jnz short loc_180001A00 +180001A63: lea r12, [rbp+Buf] +180001A67: mov r15, [rbp+Buf] +180001A6B: cmp rbx, 10h +180001A6F: cmovnb r12, r15 +180001A73: cmp r8, 5 +180001A77: jb loc_180001B27 +180001A7D: lea r13, [r12+r8] +180001A81: lea r8, [r13-4] +180001A85: sub r8, r12; MaxCount +180001A88: mov edx, 4Dh ; 'M'; Val +180001A8D: mov rcx, r12; Buf +180001A90: call memchr +180001A95: mov r9, rax +180001A98: test rax, rax +180001A9B: jz loc_180001B27 +180001AA1: lea r14, aMtlg; "MTLG>" +180001AA8: nop dword ptr [rax+rax+00000000h] +180001AB0: mov rcx, rdi +180001AB3: nop dword ptr [rax+00h] +180001AB7: nop word ptr [rax+rax+00000000h] +180001AC0: movzx eax, byte ptr [r9+rcx] +180001AC5: inc rcx +180001AC8: cmp al, [r14+rcx-1] +180001ACD: jnz short loc_180001AD9 +180001ACF: cmp rcx, 5 +180001AD3: jnz short loc_180001AC0 +180001AD5: mov eax, edi +180001AD7: jmp short loc_180001ADE +180001AD9: sbb eax, eax +180001ADB: or eax, 1 +180001ADE: test eax, eax +180001AE0: jz short loc_180001B03 +180001AE2: inc r9 +180001AE5: lea r8, [r13-4] +180001AE9: sub r8, r9; MaxCount +180001AEC: mov edx, 4Dh ; 'M'; Val +180001AF1: mov rcx, r9; Buf +180001AF4: call memchr +180001AF9: mov r9, rax +180001AFC: test rax, rax +180001AFF: jnz short loc_180001AB0 +180001B01: jmp short loc_180001B27 +180001B03: sub r9, r12 +180001B06: cmp r9, 0FFFFFFFFFFFFFFFFh +180001B0A: jz short loc_180001B27 +180001B0C: mov byte ptr [rsi+48h], 1 +180001B10: lea rcx, [rsi+58h]; _Cnd_t +180001B14: call cs:_Cnd_broadcast +180001B1A: test eax, eax +180001B1C: jz short loc_180001B27 +180001B1E: mov ecx, eax +180001B20: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180001B26: nop +180001B27: cmp rbx, 10h +180001B2B: jb loc_1800020B6 +180001B31: lea rdx, [rbx+1] +180001B35: mov rax, r15 +180001B38: cmp rdx, 1000h +180001B3F: jb short loc_180001B5A +180001B41: add rdx, 27h ; ''' +180001B45: mov r15, [r15-8] +180001B49: sub rax, r15 +180001B4C: add rax, 0FFFFFFFFFFFFFFF8h +180001B50: cmp rax, 1Fh +180001B54: ja loc_1800023E6 +180001B5A: mov rcx, r15 +180001B5D: jmp loc_1800020B1 +180001B62: cmp eax, 6 +180001B65: jnz loc_180001E62 +180001B6B: xor edi, edi +180001B6D: mov r10d, edi +180001B70: mov [rbp+var_3C], edi +180001B73: mov rdx, [rdx] +180001B76: cmp [rbx+8], rdx +180001B7A: jz loc_180001C54 +180001B80: mov r13d, edi +180001B83: mov r8, [rcx+40h] +180001B87: nop word ptr [rax+rax+00000000h] +180001B90: movzx eax, byte ptr [rdx+r13] +180001B95: mov [rbp+var_40], al +180001B98: mov rdx, [rsi+38h] +180001B9C: mov r9, r8 +180001B9F: lea eax, [r8+rdx] +180001BA3: test al, 0Fh +180001BA5: jnz short loc_180001BCA +180001BA7: lea rax, [r8+10h] +180001BAB: shr rax, 4 +180001BAF: cmp [rsi+30h], rax +180001BB3: ja short loc_180001BCA +180001BB5: lea rcx, [rsi+20h] +180001BB9: call sub_1800028D0 +180001BBE: mov rdx, [rsi+38h] +180001BC2: mov r9, [rsi+40h] +180001BC6: mov r10d, [rbp+var_3C] +180001BCA: mov rcx, [rsi+30h] +180001BCE: mov rax, rcx +180001BD1: shl rax, 4 +180001BD5: dec rax +180001BD8: and rax, rdx +180001BDB: mov [rsi+38h], rax +180001BDF: lea r15, [r9+rax] +180001BE3: dec rcx +180001BE6: mov rax, r15 +180001BE9: shr rax, 4 +180001BED: and rcx, rax +180001BF0: lea r12, ds:0[rcx*8] +180001BF8: mov rax, [rsi+28h] +180001BFC: cmp [rax+r12], rdi +180001C00: jnz short loc_180001C1C +180001C02: mov ecx, 10h; Size +180001C07: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180001C0C: mov rcx, [rsi+28h] +180001C10: mov [r12+rcx], rax +180001C14: mov rax, [rsi+28h] +180001C18: mov r10d, [rbp+var_3C] +180001C1C: and r15d, 0Fh +180001C20: mov rax, [r12+rax] +180001C24: movzx ecx, [rbp+var_40] +180001C28: mov [r15+rax], cl +180001C2C: inc qword ptr [rsi+40h] +180001C30: mov r8, [rsi+40h] +180001C34: inc r10d +180001C37: mov [rbp+var_3C], r10d +180001C3B: inc r13 +180001C3E: mov rdx, [rbx] +180001C41: mov rcx, [rbx+8] +180001C45: sub rcx, rdx +180001C48: movsxd rax, r10d +180001C4B: cmp rax, rcx +180001C4E: jb loc_180001B90 +180001C54: mov r15, rdi +180001C57: mov [rbp+var_20], rdi +180001C5B: mov ebx, 0Fh +180001C60: mov [rbp+var_18], rbx +180001C64: mov byte ptr [rbp+Buf], dil +180001C68: mov r14, [rsi+38h] +180001C6C: mov r12, [rsi+40h] +180001C70: add r12, r14 +180001C73: cmp r14, r12 +180001C76: jz short loc_180001CE3 +180001C78: nop dword ptr [rax+rax+00000000h] +180001C80: mov rcx, r14 +180001C83: shr rcx, 4 +180001C87: mov rax, [rsi+30h] +180001C8B: dec rax +180001C8E: and rcx, rax +180001C91: mov rdx, r14 +180001C94: and edx, 0Fh +180001C97: mov rax, [rsi+28h] +180001C9B: mov rcx, [rax+rcx*8] +180001C9F: movzx r9d, byte ptr [rdx+rcx] +180001CA4: cmp r15, rbx +180001CA7: jnb short loc_180001CCA +180001CA9: lea rax, [r15+1] +180001CAD: mov [rbp+var_20], rax +180001CB1: lea rax, [rbp+Buf] +180001CB5: cmp rbx, 10h +180001CB9: cmovnb rax, [rbp+Buf] +180001CBE: mov [rax+r15], r9b +180001CC2: mov byte ptr [rax+r15+1], 0 +180001CC8: jmp short loc_180001CD3 +180001CCA: lea rcx, [rbp+Buf]; Src +180001CCE: call sub_180002770 +180001CD3: inc r14 +180001CD6: mov rbx, [rbp+var_18] +180001CDA: mov r15, [rbp+var_20] +180001CDE: cmp r14, r12 +180001CE1: jnz short loc_180001C80 +180001CE3: lea r12, [rbp+Buf] +180001CE7: mov r13, [rbp+Buf] +180001CEB: cmp rbx, 10h +180001CEF: cmovnb r12, r13 +180001CF3: cmp r15, 5 +180001CF7: jb loc_180001E27 +180001CFD: lea r8, [r15-4] +180001D01: add r8, r12 +180001D04: sub r8, r12; MaxCount +180001D07: mov edx, 4Dh ; 'M'; Val +180001D0C: mov rcx, r12; Buf +180001D0F: call memchr +180001D14: mov r9, rax +180001D17: test rax, rax +180001D1A: jz loc_180001E27 +180001D20: lea r14, aMtlg; "MTLG>" +180001D27: nop word ptr [rax+rax+00000000h] +180001D30: mov rcx, rdi +180001D33: nop dword ptr [rax+00h] +180001D37: nop word ptr [rax+rax+00000000h] +180001D40: movzx eax, byte ptr [r9+rcx] +180001D45: inc rcx +180001D48: cmp al, [r14+rcx-1] +180001D4D: jnz short loc_180001D59 +180001D4F: cmp rcx, 5 +180001D53: jnz short loc_180001D40 +180001D55: mov eax, edi +180001D57: jmp short loc_180001D5E +180001D59: sbb eax, eax +180001D5B: or eax, 1 +180001D5E: test eax, eax +180001D60: jz short loc_180001D89 +180001D62: inc r9 +180001D65: lea r8, [r15-4] +180001D69: add r8, r12 +180001D6C: sub r8, r9; MaxCount +180001D6F: mov edx, 4Dh ; 'M'; Val +180001D74: mov rcx, r9; Buf +180001D77: call memchr +180001D7C: mov r9, rax +180001D7F: test rax, rax +180001D82: jnz short loc_180001D30 +180001D84: jmp loc_180001E27 +180001D89: sub r9, r12 +180001D8C: cmp r9, 0FFFFFFFFFFFFFFFFh +180001D90: jz loc_180001E27 +180001D96: lea r14, [rbp+Buf] +180001D9A: cmp rbx, 10h +180001D9E: cmovnb r14, r13 +180001DA2: cmp r15, 3 +180001DA6: jb short loc_180001E27 +180001DA8: lea r8, [r14-2] +180001DAC: add r8, r15 +180001DAF: sub r8, r14; MaxCount +180001DB2: mov edx, 76h ; 'v'; Val +180001DB7: mov rcx, r14; Buf +180001DBA: call memchr +180001DBF: test rax, rax +180001DC2: jz short loc_180001E27 +180001DC4: cmp byte ptr [rax], 76h ; 'v' +180001DC7: jnz short loc_180001DD9 +180001DC9: cmp byte ptr [rax+1], 65h ; 'e' +180001DCD: jnz short loc_180001DD9 +180001DCF: cmp byte ptr [rax+2], 72h ; 'r' +180001DD3: jnz short loc_180001DD9 +180001DD5: mov ecx, edi +180001DD7: jmp short loc_180001DDE +180001DD9: sbb ecx, ecx +180001DDB: or ecx, 1 +180001DDE: test ecx, ecx +180001DE0: jz short loc_180001E03 +180001DE2: inc rax +180001DE5: lea r8, [r14-2] +180001DE9: add r8, r15 +180001DEC: sub r8, rax; MaxCount +180001DEF: mov edx, 76h ; 'v'; Val +180001DF4: mov rcx, rax; Buf +180001DF7: call memchr +180001DFC: test rax, rax +180001DFF: jnz short loc_180001DC4 +180001E01: jmp short loc_180001E27 +180001E03: sub rax, r14 +180001E06: cmp rax, 0FFFFFFFFFFFFFFFFh +180001E0A: jz short loc_180001E27 +180001E0C: mov byte ptr [rsi+48h], 1 +180001E10: lea rcx, [rsi+58h]; _Cnd_t +180001E14: call cs:_Cnd_broadcast +180001E1A: test eax, eax +180001E1C: jz short loc_180001E27 +180001E1E: mov ecx, eax +180001E20: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180001E26: nop +180001E27: cmp rbx, 10h +180001E2B: jb loc_1800020B6 +180001E31: lea rdx, [rbx+1] +180001E35: mov rax, r13 +180001E38: cmp rdx, 1000h +180001E3F: jb short loc_180001E5A +180001E41: add rdx, 27h ; ''' +180001E45: mov r13, [r13-8] +180001E49: sub rax, r13 +180001E4C: add rax, 0FFFFFFFFFFFFFFF8h +180001E50: cmp rax, 1Fh +180001E54: ja loc_1800023E6 +180001E5A: mov rcx, r13 +180001E5D: jmp loc_1800020B1 +180001E62: cmp eax, 5 +180001E65: jnz loc_1800020E0 +180001E6B: xor edi, edi +180001E6D: mov r10d, edi +180001E70: mov [rbp+var_3C], edi +180001E73: mov rdx, [rdx] +180001E76: cmp [rbx+8], rdx +180001E7A: jz loc_180001F54 +180001E80: mov r13d, edi +180001E83: mov r8, [rcx+40h] +180001E87: nop word ptr [rax+rax+00000000h] +180001E90: movzx eax, byte ptr [rdx+r13] +180001E95: mov [rbp+var_40], al +180001E98: mov rdx, [rsi+38h] +180001E9C: mov r9, r8 +180001E9F: lea eax, [r8+rdx] +180001EA3: test al, 0Fh +180001EA5: jnz short loc_180001ECA +180001EA7: lea rax, [r8+10h] +180001EAB: shr rax, 4 +180001EAF: cmp [rsi+30h], rax +180001EB3: ja short loc_180001ECA +180001EB5: lea rcx, [rsi+20h] +180001EB9: call sub_1800028D0 +180001EBE: mov rdx, [rsi+38h] +180001EC2: mov r9, [rsi+40h] +180001EC6: mov r10d, [rbp+var_3C] +180001ECA: mov rcx, [rsi+30h] +180001ECE: mov rax, rcx +180001ED1: shl rax, 4 +180001ED5: dec rax +180001ED8: and rax, rdx +180001EDB: mov [rsi+38h], rax +180001EDF: lea r15, [r9+rax] +180001EE3: dec rcx +180001EE6: mov rax, r15 +180001EE9: shr rax, 4 +180001EED: and rcx, rax +180001EF0: lea r12, ds:0[rcx*8] +180001EF8: mov rax, [rsi+28h] +180001EFC: cmp [rax+r12], rdi +180001F00: jnz short loc_180001F1C +180001F02: mov ecx, 10h; Size +180001F07: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180001F0C: mov rcx, [rsi+28h] +180001F10: mov [r12+rcx], rax +180001F14: mov rax, [rsi+28h] +180001F18: mov r10d, [rbp+var_3C] +180001F1C: and r15d, 0Fh +180001F20: mov rax, [r12+rax] +180001F24: movzx ecx, [rbp+var_40] +180001F28: mov [r15+rax], cl +180001F2C: inc qword ptr [rsi+40h] +180001F30: mov r8, [rsi+40h] +180001F34: inc r10d +180001F37: mov [rbp+var_3C], r10d +180001F3B: inc r13 +180001F3E: mov rdx, [rbx] +180001F41: mov rcx, [rbx+8] +180001F45: sub rcx, rdx +180001F48: movsxd rax, r10d +180001F4B: cmp rax, rcx +180001F4E: jb loc_180001E90 +180001F54: mov [rbp+var_20], rdi +180001F58: mov ebx, 0Fh +180001F5D: mov [rbp+var_18], rbx +180001F61: mov byte ptr [rbp+Buf], dil +180001F65: mov r14, [rsi+38h] +180001F69: mov r15, [rsi+40h] +180001F6D: add r15, r14 +180001F70: cmp r14, r15 +180001F73: jz short loc_180001FE2 +180001F75: nop word ptr [rax+rax+00000000h] +180001F80: mov rcx, r14 +180001F83: shr rcx, 4 +180001F87: mov rax, [rsi+30h] +180001F8B: dec rax +180001F8E: and rcx, rax +180001F91: mov rdx, r14 +180001F94: and edx, 0Fh +180001F97: mov rax, [rsi+28h] +180001F9B: mov rcx, [rax+rcx*8] +180001F9F: movzx r9d, byte ptr [rdx+rcx] +180001FA4: cmp rdi, rbx +180001FA7: jnb short loc_180001FC9 +180001FA9: lea rax, [rdi+1] +180001FAD: mov [rbp+var_20], rax +180001FB1: lea rax, [rbp+Buf] +180001FB5: cmp rbx, 10h +180001FB9: cmovnb rax, [rbp+Buf] +180001FBE: mov [rax+rdi], r9b +180001FC2: mov byte ptr [rax+rdi+1], 0 +180001FC7: jmp short loc_180001FD2 +180001FC9: lea rcx, [rbp+Buf]; Src +180001FCD: call sub_180002770 +180001FD2: inc r14 +180001FD5: mov rbx, [rbp+var_18] +180001FD9: mov rdi, [rbp+var_20] +180001FDD: cmp r14, r15 +180001FE0: jnz short loc_180001F80 +180001FE2: lea r15, [rbp+Buf] +180001FE6: mov r14, [rbp+Buf] +180001FEA: cmp rbx, 10h +180001FEE: cmovnb r15, r14 +180001FF2: cmp rdi, 17h +180001FF6: jb loc_18000207F +180001FFC: lea r12, [r15+rdi] +180002000: lea r8, [r12-16h] +180002005: sub r8, r15; MaxCount +180002008: mov edx, 55h ; 'U'; Val +18000200D: mov rcx, r15; Buf +180002010: call memchr +180002015: mov rdi, rax +180002018: test rax, rax +18000201B: jz short loc_18000207F +18000201D: nop dword ptr [rax] +180002020: mov r8d, 17h; Size +180002026: lea rdx, aUseYmodemToSen; "Use Ymodem to send file" +18000202D: mov rcx, rdi; Buf1 +180002030: call memcmp +180002035: test eax, eax +180002037: jz short loc_18000205B +180002039: inc rdi +18000203C: lea r8, [r12-16h] +180002041: sub r8, rdi; MaxCount +180002044: mov edx, 55h ; 'U'; Val +180002049: mov rcx, rdi; Buf +18000204C: call memchr +180002051: mov rdi, rax +180002054: test rax, rax +180002057: jnz short loc_180002020 +180002059: jmp short loc_18000207F +18000205B: sub rdi, r15 +18000205E: cmp rdi, 0FFFFFFFFFFFFFFFFh +180002062: jz short loc_18000207F +180002064: mov byte ptr [rsi+48h], 1 +180002068: lea rcx, [rsi+58h]; _Cnd_t +18000206C: call cs:_Cnd_broadcast +180002072: test eax, eax +180002074: jz short loc_18000207F +180002076: mov ecx, eax +180002078: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +18000207E: nop +18000207F: cmp rbx, 10h +180002083: jb short loc_1800020B6 +180002085: lea rdx, [rbx+1] +180002089: mov rax, r14 +18000208C: cmp rdx, 1000h +180002093: jb short loc_1800020AE +180002095: add rdx, 27h ; ''' +180002099: mov r14, [r14-8] +18000209D: sub rax, r14 +1800020A0: add rax, 0FFFFFFFFFFFFFFF8h +1800020A4: cmp rax, 1Fh +1800020A8: ja loc_1800023E6 +1800020AE: mov rcx, r14; Block +1800020B1: call j_j_free +1800020B6: mov rcx, [rbp+var_10] +1800020BA: xor rcx, rsp; StackCookie +1800020BD: call __security_check_cookie +1800020C2: lea r11, [rsp+60h+var_s0] +1800020C7: mov rbx, [r11+38h] +1800020CB: mov rsi, [r11+40h] +1800020CF: mov rdi, [r11+48h] +1800020D3: mov rsp, r11 +1800020D6: pop r15 +1800020D8: pop r14 +1800020DA: pop r13 +1800020DC: pop r12 +1800020DE: pop rbp +1800020DF: retn +1800020E0: cmp eax, 7 +1800020E3: jnz short loc_180002116 +1800020E5: mov rcx, [rdx] +1800020E8: mov rax, [rdx+8] +1800020EC: sub rax, rcx +1800020EF: cmp rax, 1 +1800020F3: jnz short loc_1800020B6 +1800020F5: cmp byte ptr [rcx], 6 +1800020F8: jnz short loc_1800020B6 +1800020FA: mov [rsi+48h], al +1800020FD: lea rcx, [rsi+58h]; _Cnd_t +180002101: call cs:_Cnd_broadcast +180002107: test eax, eax +180002109: jz short loc_180002114 +18000210B: mov ecx, eax +18000210D: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180002113: nop +180002114: jmp short loc_1800020B6 +180002116: cmp eax, 8 +180002119: jnz short loc_18000214F +18000211B: mov rcx, [rdx] +18000211E: mov rax, [rdx+8] +180002122: sub rax, rcx +180002125: cmp rax, 1 +180002129: jnz short loc_1800020B6 +18000212B: cmp byte ptr [rcx], 6 +18000212E: jnz short loc_1800020B6 +180002130: mov [rsi+48h], al +180002133: lea rcx, [rsi+58h]; _Cnd_t +180002137: call cs:_Cnd_broadcast +18000213D: test eax, eax +18000213F: jz short loc_18000214A +180002141: mov ecx, eax +180002143: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180002149: nop +18000214A: jmp loc_1800020B6 +18000214F: cmp eax, 9 +180002152: jnz short loc_180002190 +180002154: mov rcx, [rdx] +180002157: mov rax, [rdx+8] +18000215B: sub rax, rcx +18000215E: cmp rax, 1 +180002162: jnz loc_1800020B6 +180002168: cmp byte ptr [rcx], 6 +18000216B: jnz loc_1800020B6 +180002171: mov [rsi+48h], al +180002174: lea rcx, [rsi+58h]; _Cnd_t +180002178: call cs:_Cnd_broadcast +18000217E: test eax, eax +180002180: jz short loc_18000218B +180002182: mov ecx, eax +180002184: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +18000218A: nop +18000218B: jmp loc_1800020B6 +180002190: cmp eax, 0Ah +180002193: jnz loc_1800020B6 +180002199: xor edi, edi +18000219B: mov r9d, edi +18000219E: mov [rbp+var_3C], edi +1800021A1: mov r8, [rdx] +1800021A4: cmp [rdx+8], r8 +1800021A8: jz loc_180002284 +1800021AE: mov r13d, edi +1800021B1: mov rdx, [rcx+40h] +1800021B5: nop word ptr [rax+rax+00000000h] +1800021C0: movzx eax, byte ptr [r8+r13] +1800021C5: mov [rbp+var_40], al +1800021C8: mov rcx, [rsi+38h] +1800021CC: mov r8, rdx +1800021CF: lea eax, [rcx+rdx] +1800021D2: test al, 0Fh +1800021D4: jnz short loc_1800021F9 +1800021D6: lea rax, [rdx+10h] +1800021DA: shr rax, 4 +1800021DE: cmp [rsi+30h], rax +1800021E2: ja short loc_1800021F9 +1800021E4: lea rcx, [rsi+20h] +1800021E8: call sub_1800028D0 +1800021ED: mov rcx, [rsi+38h] +1800021F1: mov r8, [rsi+40h] +1800021F5: mov r9d, [rbp+var_3C] +1800021F9: mov rdx, [rsi+30h] +1800021FD: mov rax, rdx +180002200: shl rax, 4 +180002204: dec rax +180002207: and rax, rcx +18000220A: mov [rsi+38h], rax +18000220E: lea r15, [rax+r8] +180002212: mov rcx, r15 +180002215: shr rcx, 4 +180002219: lea rax, [rdx-1] +18000221D: and rcx, rax +180002220: lea r12, ds:0[rcx*8] +180002228: mov rax, [rsi+28h] +18000222C: cmp [rax+r12], rdi +180002230: jnz short loc_18000224C +180002232: mov ecx, 10h; Size +180002237: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000223C: mov rcx, [rsi+28h] +180002240: mov [r12+rcx], rax +180002244: mov rax, [rsi+28h] +180002248: mov r9d, [rbp+var_3C] +18000224C: and r15d, 0Fh +180002250: mov rax, [rax+r12] +180002254: movzx ecx, [rbp+var_40] +180002258: mov [r15+rax], cl +18000225C: inc qword ptr [rsi+40h] +180002260: mov rdx, [rsi+40h] +180002264: inc r9d +180002267: mov [rbp+var_3C], r9d +18000226B: inc r13 +18000226E: mov r8, [rbx] +180002271: mov rcx, [rbx+8] +180002275: sub rcx, r8 +180002278: movsxd rax, r9d +18000227B: cmp rax, rcx +18000227E: jb loc_1800021C0 +180002284: mov [rbp+var_20], rdi +180002288: mov ebx, 0Fh +18000228D: mov [rbp+var_18], rbx +180002291: mov byte ptr [rbp+Buf], dil +180002295: mov r14, [rsi+38h] +180002299: mov r15, [rsi+40h] +18000229D: add r15, r14 +1800022A0: cmp r14, r15 +1800022A3: jz short loc_180002312 +1800022A5: nop word ptr [rax+rax+00000000h] +1800022B0: mov rcx, r14 +1800022B3: shr rcx, 4 +1800022B7: mov rax, [rsi+30h] +1800022BB: dec rax +1800022BE: and rcx, rax +1800022C1: mov rdx, r14 +1800022C4: and edx, 0Fh +1800022C7: mov rax, [rsi+28h] +1800022CB: mov rcx, [rax+rcx*8] +1800022CF: movzx r9d, byte ptr [rdx+rcx] +1800022D4: cmp rdi, rbx +1800022D7: jnb short loc_1800022F9 +1800022D9: lea rax, [rdi+1] +1800022DD: mov [rbp+var_20], rax +1800022E1: lea rax, [rbp+Buf] +1800022E5: cmp rbx, 10h +1800022E9: cmovnb rax, [rbp+Buf] +1800022EE: mov [rdi+rax], r9b +1800022F2: mov byte ptr [rdi+rax+1], 0 +1800022F7: jmp short loc_180002302 +1800022F9: lea rcx, [rbp+Buf]; Src +1800022FD: call sub_180002770 +180002302: inc r14 +180002305: mov rbx, [rbp+var_18] +180002309: mov rdi, [rbp+var_20] +18000230D: cmp r14, r15 +180002310: jnz short loc_1800022B0 +180002312: lea r15, [rbp+Buf] +180002316: mov r14, [rbp+Buf] +18000231A: cmp rbx, 10h +18000231E: cmovnb r15, r14 +180002322: cmp rdi, 26h ; '&' +180002326: jb loc_1800023AF +18000232C: lea r12, [rdi+r15] +180002330: lea r8, [r12-25h] +180002335: sub r8, r15; MaxCount +180002338: mov edx, 46h ; 'F'; Val +18000233D: mov rcx, r15; Buf +180002340: call memchr +180002345: mov rdi, rax +180002348: test rax, rax +18000234B: jz short loc_1800023AF +18000234D: nop dword ptr [rax] +180002350: mov r8d, 26h ; '&'; Size +180002356: lea rdx, aFirmwareUpgrad; "Firmware upgrade success, rebooting..." +18000235D: mov rcx, rdi; Buf1 +180002360: call memcmp +180002365: test eax, eax +180002367: jz short loc_18000238B +180002369: inc rdi +18000236C: lea r8, [r12-25h] +180002371: sub r8, rdi; MaxCount +180002374: mov edx, 46h ; 'F'; Val +180002379: mov rcx, rdi; Buf +18000237C: call memchr +180002381: mov rdi, rax +180002384: test rax, rax +180002387: jnz short loc_180002350 +180002389: jmp short loc_1800023AF +18000238B: sub rdi, r15 +18000238E: cmp rdi, 0FFFFFFFFFFFFFFFFh +180002392: jz short loc_1800023AF +180002394: mov byte ptr [rsi+48h], 1 +180002398: lea rcx, [rsi+58h]; _Cnd_t +18000239C: call cs:_Cnd_broadcast +1800023A2: test eax, eax +1800023A4: jz short loc_1800023AF +1800023A6: mov ecx, eax +1800023A8: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800023AE: nop +1800023AF: cmp rbx, 10h +1800023B3: jb loc_1800020B6 +1800023B9: lea rdx, [rbx+1] +1800023BD: mov rax, r14 +1800023C0: cmp rdx, 1000h +1800023C7: jb loc_1800020AE +1800023CD: add rdx, 27h ; ''' +1800023D1: mov r14, [r14-8] +1800023D5: sub rax, r14 +1800023D8: add rax, 0FFFFFFFFFFFFFFF8h +1800023DC: cmp rax, 1Fh +1800023E0: jbe loc_1800020AE +1800023E6: call cs:_invalid_parameter_noinfo_noreturn +1800023EC: db 0CCh + +### FUNC 1800023F0 - 180002417 (39 bytes) name=sub_1800023F0 +1800023F0: push rbx +1800023F2: sub rsp, 20h +1800023F6: mov rbx, rcx +1800023F9: call sub_180002550 +1800023FE: mov rcx, [rbx]; Block +180002401: mov edx, 10h +180002406: mov qword ptr [rbx], 0 +18000240D: add rsp, 20h +180002411: pop rbx +180002412: jmp j_j_free + +### FUNC 180002420 - 180002478 (88 bytes) name=sub_180002420 +180002420: push rbx +180002422: sub rsp, 20h +180002426: mov rbx, rcx +180002429: mov rcx, [rcx] +18000242C: test rcx, rcx +18000242F: jz short loc_18000246B +180002431: mov rdx, [rbx+10h] +180002435: sub rdx, rcx +180002438: cmp rdx, 1000h +18000243F: jb short loc_180002459 +180002441: mov r8, [rcx-8] +180002445: add rdx, 27h ; ''' +180002449: sub rcx, r8 +18000244C: lea rax, [rcx-8] +180002450: cmp rax, 1Fh +180002454: ja short loc_180002471 +180002456: mov rcx, r8; Block +180002459: call j_j_free +18000245E: xor eax, eax +180002460: mov [rbx], rax +180002463: mov [rbx+8], rax +180002467: mov [rbx+10h], rax +18000246B: add rsp, 20h +18000246F: pop rbx +180002470: retn +180002471: call cs:_invalid_parameter_noinfo_noreturn +180002477: db 0CCh + +### FUNC 180002480 - 1800024A6 (38 bytes) name=sub_180002480 +180002480: sub rsp, 28h +180002484: cmp byte ptr [rcx+8], 0 +180002488: jz short loc_1800024A1 +18000248A: mov rcx, [rcx]; _Mtx_t +18000248D: call cs:_Mtx_unlock +180002493: nop +180002494: test eax, eax +180002496: jz short loc_1800024A1 +180002498: mov ecx, eax +18000249A: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800024A0: nop +1800024A1: add rsp, 28h +1800024A5: retn + +### FUNC 1800024B0 - 18000250F (95 bytes) name=sub_1800024B0 +1800024B0: push rbx +1800024B2: sub rsp, 20h +1800024B6: mov rdx, [rcx+18h] +1800024BA: mov rbx, rcx +1800024BD: cmp rdx, 10h +1800024C1: jb short loc_1800024EF +1800024C3: mov rcx, [rcx] +1800024C6: inc rdx +1800024C9: cmp rdx, 1000h +1800024D0: jb short loc_1800024EA +1800024D2: mov r8, [rcx-8] +1800024D6: add rdx, 27h ; ''' +1800024DA: sub rcx, r8 +1800024DD: lea rax, [rcx-8] +1800024E1: cmp rax, 1Fh +1800024E5: ja short loc_180002508 +1800024E7: mov rcx, r8; Block +1800024EA: call j_j_free +1800024EF: mov qword ptr [rbx+10h], 0 +1800024F7: mov qword ptr [rbx+18h], 0Fh +1800024FF: mov byte ptr [rbx], 0 +180002502: add rsp, 20h +180002506: pop rbx +180002507: retn +180002508: call cs:_invalid_parameter_noinfo_noreturn +18000250E: db 0CCh + +### FUNC 180002510 - 18000254B (59 bytes) name=sub_180002510 +180002510: push rbx +180002512: sub rsp, 20h +180002516: mov rbx, rcx +180002519: mov qword ptr [rcx+10h], 0 +180002521: mov qword ptr [rcx+18h], 0Fh +180002529: mov r8, 0FFFFFFFFFFFFFFFFh +180002530: mov byte ptr [rcx], 0 +180002533: inc r8; Size +180002536: cmp byte ptr [rdx+r8], 0 +18000253B: jnz short loc_180002533 +18000253D: call sub_180002610 +180002542: mov rax, rbx +180002545: add rsp, 20h +180002549: pop rbx +18000254A: retn + +### FUNC 180002550 - 180002605 (181 bytes) name=sub_180002550 +180002550: mov [rsp+arg_8], rbx +180002555: mov [rsp+arg_10], rsi +18000255A: push rdi +18000255B: sub rsp, 20h +18000255F: mov rbx, rcx +180002562: xor esi, esi +180002564: mov rcx, [rcx+20h] +180002568: test rcx, rcx +18000256B: jz short loc_180002584 +18000256D: nop dword ptr [rax] +180002570: lea rax, [rcx-1] +180002574: mov [rbx+20h], rax +180002578: mov rcx, rax +18000257B: test rax, rax +18000257E: jnz short loc_180002570 +180002580: mov [rbx+18h], rsi +180002584: mov rdi, [rbx+10h] +180002588: test rdi, rdi +18000258B: jz short loc_1800025AF +18000258D: nop dword ptr [rax] +180002590: mov rax, [rbx+8] +180002594: dec rdi +180002597: mov rcx, [rax+rdi*8]; Block +18000259B: test rcx, rcx +18000259E: jz short loc_1800025AA +1800025A0: mov edx, 10h +1800025A5: call j_j_free +1800025AA: test rdi, rdi +1800025AD: jnz short loc_180002590 +1800025AF: mov rcx, [rbx+8] +1800025B3: test rcx, rcx +1800025B6: jz short loc_1800025E6 +1800025B8: mov rdx, [rbx+10h] +1800025BC: shl rdx, 3 +1800025C0: cmp rdx, 1000h +1800025C7: jb short loc_1800025E1 +1800025C9: mov r8, [rcx-8] +1800025CD: add rdx, 27h ; ''' +1800025D1: sub rcx, r8 +1800025D4: lea rax, [rcx-8] +1800025D8: cmp rax, 1Fh +1800025DC: ja short loc_1800025FE +1800025DE: mov rcx, r8; Block +1800025E1: call j_j_free +1800025E6: mov [rbx+10h], rsi +1800025EA: mov [rbx+8], rsi +1800025EE: mov rbx, [rsp+28h+arg_8] +1800025F3: mov rsi, [rsp+28h+arg_10] +1800025F8: add rsp, 20h +1800025FC: pop rdi +1800025FD: retn +1800025FE: call cs:_invalid_parameter_noinfo_noreturn +180002604: db 0CCh + +### FUNC 180002610 - 18000276D (349 bytes) name=sub_180002610 +180002610: push rbx +180002612: push rbp +180002613: push rdi +180002614: push r14 +180002616: push r15 +180002618: sub rsp, 20h +18000261C: mov rbp, [rcx+18h] +180002620: mov r14, r8 +180002623: mov r15, rdx +180002626: mov rbx, rcx +180002629: cmp r8, rbp +18000262C: ja short loc_18000265A +18000262E: mov rdi, rcx +180002631: cmp rbp, 10h +180002635: jb short loc_18000263A +180002637: mov rdi, [rcx] +18000263A: mov [rcx+10h], r14 +18000263E: mov rcx, rdi; void * +180002641: call memmove +180002646: mov rax, rbx +180002649: mov byte ptr [r14+rdi], 0 +18000264E: add rsp, 20h +180002652: pop r15 +180002654: pop r14 +180002656: pop rdi +180002657: pop rbp +180002658: pop rbx +180002659: retn +18000265A: mov rdi, 7FFFFFFFFFFFFFFFh +180002664: cmp r14, rdi +180002667: ja loc_180002767 +18000266D: mov rcx, r14 +180002670: or rcx, 0Fh +180002674: cmp rcx, rdi +180002677: ja short loc_180002698 +180002679: mov rdx, rbp +18000267C: mov rax, rdi +18000267F: shr rdx, 1 +180002682: sub rax, rdx +180002685: cmp rbp, rax +180002688: ja short loc_180002698 +18000268A: lea rax, [rdx+rbp] +18000268E: mov rdi, rcx +180002691: cmp rcx, rax +180002694: cmovb rdi, rax +180002698: mov rcx, rdi +18000269B: mov [rsp+48h+arg_18], rsi +1800026A0: add rcx, 1 +1800026A4: mov rax, 0FFFFFFFFFFFFFFFFh +1800026AB: cmovb rcx, rax; Size +1800026AF: cmp rcx, 1000h +1800026B6: jb short loc_1800026E4 +1800026B8: lea rax, [rcx+27h] +1800026BC: cmp rax, rcx +1800026BF: jbe loc_180002761 +1800026C5: mov rcx, rax; Size +1800026C8: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +1800026CD: test rax, rax +1800026D0: jz loc_18000275A +1800026D6: lea rsi, [rax+27h] +1800026DA: and rsi, 0FFFFFFFFFFFFFFE0h +1800026DE: mov [rsi-8], rax +1800026E2: jmp short loc_1800026F5 +1800026E4: test rcx, rcx +1800026E7: jz short loc_1800026F3 +1800026E9: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +1800026EE: mov rsi, rax +1800026F1: jmp short loc_1800026F5 +1800026F3: xor esi, esi +1800026F5: mov r8, r14; Size +1800026F8: mov [rbx+10h], r14 +1800026FC: mov rdx, r15; Src +1800026FF: mov [rbx+18h], rdi +180002703: mov rcx, rsi; void * +180002706: call memcpy +18000270B: mov byte ptr [r14+rsi], 0 +180002710: cmp rbp, 10h +180002714: jb short loc_180002743 +180002716: mov rcx, [rbx] +180002719: lea rdx, [rbp+1] +18000271D: cmp rdx, 1000h +180002724: jb short loc_18000273E +180002726: mov r8, [rcx-8] +18000272A: add rdx, 27h ; ''' +18000272E: sub rcx, r8 +180002731: lea rax, [rcx-8] +180002735: cmp rax, 1Fh +180002739: ja short loc_18000275A +18000273B: mov rcx, r8; Block +18000273E: call j_j_free +180002743: mov [rbx], rsi +180002746: mov rax, rbx +180002749: mov rsi, [rsp+48h+arg_18] +18000274E: add rsp, 20h +180002752: pop r15 +180002754: pop r14 +180002756: pop rdi +180002757: pop rbp +180002758: pop rbx +180002759: retn +18000275A: call cs:_invalid_parameter_noinfo_noreturn +180002760: int 3; Trap to Debugger +180002761: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180002766: db 0CCh +180002767: call sub_180002B40 +18000276C: db 0CCh + +### FUNC 180002770 - 1800028CF (351 bytes) name=sub_180002770 +180002770: push rbx +180002772: push rbp +180002773: push rsi +180002774: push r15 +180002776: sub rsp, 28h +18000277A: mov rbp, [rcx+10h] +18000277E: mov rbx, 7FFFFFFFFFFFFFFFh +180002788: mov rax, rbx +18000278B: movzx r15d, r9b +18000278F: sub rax, rbp +180002792: mov rsi, rcx +180002795: cmp rax, 1 +180002799: jb loc_1800028C9 +18000279F: mov [rsp+48h+arg_10], r12 +1800027A4: lea r12, [rbp+1] +1800027A8: mov [rsp+48h+var_28], r14 +1800027AD: mov r14, [rcx+18h] +1800027B1: mov rcx, r12 +1800027B4: or rcx, 0Fh +1800027B8: cmp rcx, rbx +1800027BB: ja short loc_1800027DC +1800027BD: mov rdx, r14 +1800027C0: mov rax, rbx +1800027C3: shr rdx, 1 +1800027C6: sub rax, rdx +1800027C9: cmp r14, rax +1800027CC: ja short loc_1800027DC +1800027CE: lea rax, [rdx+r14] +1800027D2: mov rbx, rcx +1800027D5: cmp rcx, rax +1800027D8: cmovb rbx, rax +1800027DC: mov rcx, rbx +1800027DF: mov [rsp+48h+arg_8], rdi +1800027E4: add rcx, 1 +1800027E8: mov rax, 0FFFFFFFFFFFFFFFFh +1800027EF: cmovb rcx, rax; Size +1800027F3: cmp rcx, 1000h +1800027FA: jb short loc_180002824 +1800027FC: lea rax, [rcx+27h] +180002800: cmp rax, rcx +180002803: jbe loc_1800028C3 +180002809: mov rcx, rax; Size +18000280C: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002811: test rax, rax +180002814: jz short loc_18000288C +180002816: lea rdi, [rax+27h] +18000281A: and rdi, 0FFFFFFFFFFFFFFE0h +18000281E: mov [rdi-8], rax +180002822: jmp short loc_180002835 +180002824: test rcx, rcx +180002827: jz short loc_180002833 +180002829: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000282E: mov rdi, rax +180002831: jmp short loc_180002835 +180002833: xor edi, edi +180002835: mov [rsi+10h], r12 +180002839: mov r8, rbp; Size +18000283C: mov [rsi+18h], rbx +180002840: mov rcx, rdi; void * +180002843: cmp r14, 10h +180002847: jb short loc_180002893 +180002849: mov rbx, [rsi] +18000284C: mov rdx, rbx; Src +18000284F: call memcpy +180002854: lea rdx, [r14+1] +180002858: mov [rdi+rbp], r15b +18000285C: mov byte ptr [rdi+rbp+1], 0 +180002861: cmp rdx, 1000h +180002868: jb short loc_180002882 +18000286A: mov rcx, [rbx-8] +18000286E: add rdx, 27h ; ''' +180002872: sub rbx, rcx +180002875: lea rax, [rbx-8] +180002879: cmp rax, 1Fh +18000287D: ja short loc_18000288C +18000287F: mov rbx, rcx +180002882: mov rcx, rbx; Block +180002885: call j_j_free +18000288A: jmp short loc_1800028A4 +18000288C: call cs:_invalid_parameter_noinfo_noreturn +180002892: int 3; Trap to Debugger +180002893: mov rdx, rsi; Src +180002896: call memcpy +18000289B: mov [rdi+rbp], r15b +18000289F: mov byte ptr [rdi+rbp+1], 0 +1800028A4: mov [rsi], rdi +1800028A7: mov rax, rsi +1800028AA: mov rdi, [rsp+48h+arg_8] +1800028AF: mov r12, [rsp+48h+arg_10] +1800028B4: mov r14, [rsp+48h+var_28] +1800028B9: add rsp, 28h +1800028BD: pop r15 +1800028BF: pop rsi +1800028C0: pop rbp +1800028C1: pop rbx +1800028C2: retn +1800028C3: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +1800028C8: db 0CCh +1800028C9: call sub_180002B40 +1800028CE: db 0CCh + +### FUNC 1800028D0 - 180002AA7 (471 bytes) name=sub_1800028D0 +1800028D0: push rbp +1800028D2: push rsi +1800028D3: sub rsp, 38h +1800028D7: mov rdx, [rcx+10h] +1800028DB: mov eax, 1 +1800028E0: test rdx, rdx +1800028E3: mov rbp, rcx +1800028E6: mov r8, 7FFFFFFFFFFFFFFh +1800028F0: cmovnz rax, rdx +1800028F4: mov rsi, rax +1800028F7: sub rsi, rdx +1800028FA: cmp rsi, 1 +1800028FE: jb short loc_180002906 +180002900: cmp rax, 8 +180002904: jnb short loc_18000291A +180002906: mov rcx, r8 +180002909: sub rcx, rax +18000290C: cmp rcx, rax +18000290F: jb loc_180002AA1 +180002915: add rax, rax +180002918: jmp short loc_1800028F4 +18000291A: mov [rsp+48h+var_20], r14 +18000291F: mov rcx, 1FFFFFFFFFFFFFFFh +180002929: mov [rsp+48h+var_28], r15 +18000292E: mov r15, [rbp+18h] +180002932: shr r15, 4 +180002936: cmp rax, rcx +180002939: ja loc_180002A9B +18000293F: lea rcx, ds:0[rax*8]; Size +180002947: cmp rcx, 1000h +18000294E: jb short loc_18000297C +180002950: lea rax, [rcx+27h] +180002954: cmp rax, rcx +180002957: jbe loc_180002A9B +18000295D: mov rcx, rax; Size +180002960: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002965: test rax, rax +180002968: jz loc_180002A94 +18000296E: lea r14, [rax+27h] +180002972: and r14, 0FFFFFFFFFFFFFFE0h +180002976: mov [r14-8], rax +18000297A: jmp short loc_18000298E +18000297C: test rcx, rcx +18000297F: jz short loc_18000298B +180002981: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002986: mov r14, rax +180002989: jmp short loc_18000298E +18000298B: xor r14d, r14d +18000298E: mov rax, [rbp+8] +180002992: mov [rsp+48h+arg_8], rbx +180002997: mov rbx, [rbp+10h] +18000299B: mov [rsp+48h+arg_10], rdi +1800029A0: shl rbx, 3 +1800029A4: mov [rsp+48h+var_18], r12 +1800029A9: lea r12, ds:0[r15*8] +1800029B1: lea rdx, [rax+r12]; Src +1800029B5: sub rbx, rdx +1800029B8: lea rdi, [r12+r14] +1800029BC: add rbx, rax +1800029BF: mov rcx, rdi; void * +1800029C2: mov r8, rbx; Size +1800029C5: call memmove +1800029CA: mov rdx, [rbp+8]; Src +1800029CE: add rbx, rdi +1800029D1: mov rcx, rbx; void * +1800029D4: cmp r15, rsi +1800029D7: ja short loc_1800029FE +1800029D9: mov r8, r12; Size +1800029DC: call memmove +1800029E1: mov r8, rsi +1800029E4: lea rcx, [r12+rbx]; void * +1800029E8: sub r8, r15 +1800029EB: xor edx, edx; Val +1800029ED: shl r8, 3; Size +1800029F1: call memset +1800029F6: mov r8, r12 +1800029F9: mov rcx, r14 +1800029FC: jmp short loc_180002A2E +1800029FE: lea rdi, ds:0[rsi*8] +180002A06: mov r8, rdi; Size +180002A09: call memmove +180002A0E: mov rbx, [rbp+8] +180002A12: mov rcx, r14; void * +180002A15: lea rdx, [rdi+rbx]; Src +180002A19: sub rbx, rdx +180002A1C: add rbx, r12 +180002A1F: mov r8, rbx; Size +180002A22: call memmove +180002A27: lea rcx, [rbx+r14]; void * +180002A2B: mov r8, rdi; Size +180002A2E: xor edx, edx; Val +180002A30: call memset +180002A35: mov rcx, [rbp+8] +180002A39: mov r12, [rsp+48h+var_18] +180002A3E: mov rdi, [rsp+48h+arg_10] +180002A43: mov rbx, [rsp+48h+arg_8] +180002A48: test rcx, rcx +180002A4B: jz short loc_180002A7B +180002A4D: mov rdx, [rbp+10h] +180002A51: shl rdx, 3 +180002A55: cmp rdx, 1000h +180002A5C: jb short loc_180002A76 +180002A5E: mov r8, [rcx-8] +180002A62: add rdx, 27h ; ''' +180002A66: sub rcx, r8 +180002A69: lea rax, [rcx-8] +180002A6D: cmp rax, 1Fh +180002A71: ja short loc_180002A94 +180002A73: mov rcx, r8; Block +180002A76: call j_j_free +180002A7B: add [rbp+10h], rsi +180002A7F: mov r15, [rsp+48h+var_28] +180002A84: mov [rbp+8], r14 +180002A88: mov r14, [rsp+48h+var_20] +180002A8D: add rsp, 38h +180002A91: pop rsi +180002A92: pop rbp +180002A93: retn +180002A94: call cs:_invalid_parameter_noinfo_noreturn +180002A9A: int 3; Trap to Debugger +180002A9B: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180002AA0: db 0CCh +180002AA1: call sub_180002B60 +180002AA6: db 0CCh + +### FUNC 180002AB0 - 180002B39 (137 bytes) name=sub_180002AB0 +180002AB0: mov [rsp+arg_0], rbx +180002AB5: push rdi +180002AB6: sub rsp, 20h +180002ABA: mov rax, 7FFFFFFFFFFFFFFFh +180002AC4: mov rbx, rdx +180002AC7: mov rdi, rcx +180002ACA: cmp rdx, rax +180002ACD: ja short loc_180002B2D +180002ACF: cmp rdx, 1000h +180002AD6: jb short loc_180002B03 +180002AD8: lea rcx, [rdx+27h]; Size +180002ADC: cmp rcx, rdx +180002ADF: jbe short loc_180002B33 +180002AE1: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002AE6: mov rcx, rax +180002AE9: test rax, rax +180002AEC: jz short loc_180002AFC +180002AEE: add rax, 27h ; ''' +180002AF2: and rax, 0FFFFFFFFFFFFFFE0h +180002AF6: mov [rax-8], rcx +180002AFA: jmp short loc_180002B14 +180002AFC: call cs:_invalid_parameter_noinfo_noreturn +180002B02: int 3; Trap to Debugger +180002B03: test rbx, rbx +180002B06: jz short loc_180002B12 +180002B08: mov rcx, rbx; Size +180002B0B: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002B10: jmp short loc_180002B14 +180002B12: xor eax, eax +180002B14: mov [rdi], rax +180002B17: mov [rdi+8], rax +180002B1B: add rax, rbx +180002B1E: mov rbx, [rsp+28h+arg_0] +180002B23: mov [rdi+10h], rax +180002B27: add rsp, 20h +180002B2B: pop rdi +180002B2C: retn +180002B2D: call sub_180002B80 +180002B32: db 0CCh +180002B33: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180002B38: db 0CCh + +### FUNC 180002B40 - 180002B52 (18 bytes) name=sub_180002B40 +180002B40: sub rsp, 28h +180002B44: lea rcx, aStringTooLong; "string too long" +180002B4B: call cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *) +180002B51: db 0CCh + +### FUNC 180002B60 - 180002B72 (18 bytes) name=sub_180002B60 +180002B60: sub rsp, 28h +180002B64: lea rcx, aDequeTTooLong; "deque too long" +180002B6B: call cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *) +180002B71: db 0CCh + +### FUNC 180002B80 - 180002B92 (18 bytes) name=sub_180002B80 +180002B80: sub rsp, 28h +180002B84: lea rcx, aVectorTooLong; "vector too long" +180002B8B: call cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *) +180002B91: db 0CCh + +### FUNC 180002BA0 - 180002C92 (242 bytes) name=sub_180002BA0 +180002BA0: mov [rsp+arg_18], rsi +180002BA5: push rdi +180002BA6: sub rsp, 20h +180002BAA: mov rax, 7FFFFFFFFFFFFFFFh +180002BB4: mov rdi, rdx +180002BB7: mov rsi, rcx +180002BBA: cmp rdx, rax +180002BBD: ja loc_180002C8C +180002BC3: mov rcx, [rcx] +180002BC6: mov rdx, [rsi+10h] +180002BCA: sub rdx, rcx +180002BCD: mov [rsp+28h+arg_10], rbx +180002BD2: mov r8, rdx +180002BD5: shr r8, 1 +180002BD8: sub rax, r8 +180002BDB: cmp rdx, rax +180002BDE: ja short loc_180002BEE +180002BE0: lea rax, [r8+rdx] +180002BE4: cmp rax, rdi +180002BE7: cmovb rax, rdi +180002BEB: mov rdi, rax +180002BEE: xor ebx, ebx +180002BF0: test rcx, rcx +180002BF3: jz short loc_180002C26 +180002BF5: cmp rdx, 1000h +180002BFC: jb short loc_180002C16 +180002BFE: mov r8, [rcx-8] +180002C02: add rdx, 27h ; ''' +180002C06: sub rcx, r8 +180002C09: lea rax, [rcx-8] +180002C0D: cmp rax, 1Fh +180002C11: ja short loc_180002C50 +180002C13: mov rcx, r8; Block +180002C16: call j_j_free +180002C1B: mov [rsi], rbx +180002C1E: mov [rsi+8], rbx +180002C22: mov [rsi+10h], rbx +180002C26: cmp rdi, 1000h +180002C2D: jb short loc_180002C57 +180002C2F: lea rcx, [rdi+27h]; Size +180002C33: cmp rcx, rdi +180002C36: jbe short loc_180002C86 +180002C38: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002C3D: test rax, rax +180002C40: jz short loc_180002C50 +180002C42: lea rbx, [rax+27h] +180002C46: and rbx, 0FFFFFFFFFFFFFFE0h +180002C4A: mov [rbx-8], rax +180002C4E: jmp short loc_180002C67 +180002C50: call cs:_invalid_parameter_noinfo_noreturn +180002C56: int 3; Trap to Debugger +180002C57: test rdi, rdi +180002C5A: jz short loc_180002C67 +180002C5C: mov rcx, rdi; Size +180002C5F: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002C64: mov rbx, rax +180002C67: mov [rsi], rbx +180002C6A: lea rax, [rbx+rdi] +180002C6E: mov [rsi+8], rbx +180002C72: mov rbx, [rsp+28h+arg_10] +180002C77: mov [rsi+10h], rax +180002C7B: mov rsi, [rsp+28h+arg_18] +180002C80: add rsp, 20h +180002C84: pop rdi +180002C85: retn +180002C86: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180002C8B: align 4 +180002C8C: call sub_180002B80 +180002C91: db 0CCh + +### FUNC 180002CA0 - 180002D99 (249 bytes) name=sub_180002CA0 +180002CA0: push rbx +180002CA2: sub rsp, 20h +180002CA6: mov rdx, [rcx+58h] +180002CAA: mov rbx, rcx +180002CAD: cmp rdx, 10h +180002CB1: jb short loc_180002CE4 +180002CB3: mov rcx, [rcx+40h] +180002CB7: inc rdx +180002CBA: cmp rdx, 1000h +180002CC1: jb short loc_180002CDF +180002CC3: mov r8, [rcx-8] +180002CC7: add rdx, 27h ; ''' +180002CCB: sub rcx, r8 +180002CCE: lea rax, [rcx-8] +180002CD2: cmp rax, 1Fh +180002CD6: ja loc_180002D92 +180002CDC: mov rcx, r8; Block +180002CDF: call j_j_free +180002CE4: mov qword ptr [rbx+50h], 0 +180002CEC: mov qword ptr [rbx+58h], 0Fh +180002CF4: mov byte ptr [rbx+40h], 0 +180002CF8: mov rdx, [rbx+38h] +180002CFC: cmp rdx, 10h +180002D00: jb short loc_180002D2F +180002D02: mov rcx, [rbx+20h] +180002D06: inc rdx +180002D09: cmp rdx, 1000h +180002D10: jb short loc_180002D2A +180002D12: mov r8, [rcx-8] +180002D16: add rdx, 27h ; ''' +180002D1A: sub rcx, r8 +180002D1D: lea rax, [rcx-8] +180002D21: cmp rax, 1Fh +180002D25: ja short loc_180002D92 +180002D27: mov rcx, r8; Block +180002D2A: call j_j_free +180002D2F: mov qword ptr [rbx+30h], 0 +180002D37: mov qword ptr [rbx+38h], 0Fh +180002D3F: mov byte ptr [rbx+20h], 0 +180002D43: mov rdx, [rbx+18h] +180002D47: cmp rdx, 10h +180002D4B: jb short loc_180002D79 +180002D4D: mov rcx, [rbx] +180002D50: inc rdx +180002D53: cmp rdx, 1000h +180002D5A: jb short loc_180002D74 +180002D5C: mov r8, [rcx-8] +180002D60: add rdx, 27h ; ''' +180002D64: sub rcx, r8 +180002D67: lea rax, [rcx-8] +180002D6B: cmp rax, 1Fh +180002D6F: ja short loc_180002D92 +180002D71: mov rcx, r8; Block +180002D74: call j_j_free +180002D79: mov qword ptr [rbx+10h], 0 +180002D81: mov qword ptr [rbx+18h], 0Fh +180002D89: mov byte ptr [rbx], 0 +180002D8C: add rsp, 20h +180002D90: pop rbx +180002D91: retn +180002D92: call cs:_invalid_parameter_noinfo_noreturn +180002D98: db 0CCh + +### FUNC 180002DA0 - 180002E52 (178 bytes) name=sub_180002DA0 +180002DA0: mov [rsp+arg_10], rbx +180002DA5: push rdi +180002DA6: sub rsp, 20h +180002DAA: mov rbx, [rcx] +180002DAD: mov rdi, rcx +180002DB0: test rbx, rbx +180002DB3: jz loc_180002E40 +180002DB9: mov [rsp+28h+arg_8], rsi +180002DBE: mov rsi, [rcx+8] +180002DC2: cmp rbx, rsi +180002DC5: jz short loc_180002DDB +180002DC7: mov rcx, rbx +180002DCA: call sub_180002CA0 +180002DCF: add rbx, 60h ; '`' +180002DD3: cmp rbx, rsi +180002DD6: jnz short loc_180002DC7 +180002DD8: mov rbx, [rdi] +180002DDB: mov rcx, [rdi+10h] +180002DDF: mov rax, 2AAAAAAAAAAAAAABh +180002DE9: mov rsi, [rsp+28h+arg_8] +180002DEE: sub rcx, rbx +180002DF1: imul rcx +180002DF4: sar rdx, 4 +180002DF8: mov rax, rdx +180002DFB: shr rax, 3Fh +180002DFF: add rdx, rax +180002E02: lea rdx, [rdx+rdx*2] +180002E06: shl rdx, 5 +180002E0A: cmp rdx, 1000h +180002E11: jb short loc_180002E2B +180002E13: mov rax, [rbx-8] +180002E17: add rdx, 27h ; ''' +180002E1B: sub rbx, rax +180002E1E: add rbx, 0FFFFFFFFFFFFFFF8h +180002E22: cmp rbx, 1Fh +180002E26: ja short loc_180002E4B +180002E28: mov rbx, rax +180002E2B: mov rcx, rbx; Block +180002E2E: call j_j_free +180002E33: xor eax, eax +180002E35: mov [rdi], rax +180002E38: mov [rdi+8], rax +180002E3C: mov [rdi+10h], rax +180002E40: mov rbx, [rsp+28h+arg_10] +180002E45: add rsp, 20h +180002E49: pop rdi +180002E4A: retn +180002E4B: call cs:_invalid_parameter_noinfo_noreturn +180002E51: db 0CCh + +### FUNC 180002E60 - 180002F2B (203 bytes) name=sub_180002E60 +180002E60: push rbx +180002E62: push rbp +180002E63: push rdi +180002E64: sub rsp, 20h +180002E68: xor eax, eax +180002E6A: mov rdi, rdx +180002E6D: mov [rcx+10h], rax +180002E71: mov rbx, rcx +180002E74: mov [rcx+18h], rax +180002E78: cmp qword ptr [rdx+18h], 10h +180002E7D: mov rbp, [rdx+10h] +180002E81: jb short loc_180002E86 +180002E83: mov rdi, [rdx] +180002E86: mov [rsp+38h+arg_10], rsi +180002E8B: cmp rbp, 10h +180002E8F: jnb short loc_180002E9E +180002E91: movups xmm0, xmmword ptr [rdi] +180002E94: mov esi, 0Fh +180002E99: movups xmmword ptr [rcx], xmm0 +180002E9C: jmp short loc_180002F0D +180002E9E: mov rcx, 7FFFFFFFFFFFFFFFh +180002EA8: mov rsi, rbp +180002EAB: or rsi, 0Fh +180002EAF: cmp rsi, rcx +180002EB2: cmova rsi, rcx +180002EB6: lea rcx, [rsi+1]; Size +180002EBA: cmp rcx, 1000h +180002EC1: jb short loc_180002EF1 +180002EC3: lea rax, [rcx+27h] +180002EC7: cmp rax, rcx +180002ECA: jbe short loc_180002F25 +180002ECC: mov rcx, rax; Size +180002ECF: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002ED4: mov rcx, rax +180002ED7: test rax, rax +180002EDA: jz short loc_180002EEA +180002EDC: add rax, 27h ; ''' +180002EE0: and rax, 0FFFFFFFFFFFFFFE0h +180002EE4: mov [rax-8], rcx +180002EE8: jmp short loc_180002EFB +180002EEA: call cs:_invalid_parameter_noinfo_noreturn +180002EF0: int 3; Trap to Debugger +180002EF1: test rcx, rcx +180002EF4: jz short loc_180002EFB +180002EF6: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180002EFB: lea r8, [rbp+1]; Size +180002EFF: mov [rbx], rax +180002F02: mov rdx, rdi; Src +180002F05: mov rcx, rax; void * +180002F08: call memcpy +180002F0D: mov [rbx+10h], rbp +180002F11: mov rax, rbx +180002F14: mov [rbx+18h], rsi +180002F18: mov rsi, [rsp+38h+arg_10] +180002F1D: add rsp, 20h +180002F21: pop rdi +180002F22: pop rbp +180002F23: pop rbx +180002F24: retn +180002F25: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180002F2A: db 0CCh + +### FUNC 180002F30 - 180002F61 (49 bytes) name=sub_180002F30 +180002F30: cmp rdx, r8 +180002F33: jz short locret_180002F60 +180002F35: mov [rsp+arg_0], rbx +180002F3A: push rdi +180002F3B: sub rsp, 20h +180002F3F: mov rdi, r8 +180002F42: mov rbx, rdx +180002F45: mov rcx, rbx +180002F48: call sub_180002CA0 +180002F4D: add rbx, 60h ; '`' +180002F51: cmp rbx, rdi +180002F54: jnz short loc_180002F45 +180002F56: mov rbx, [rsp+28h+arg_0] +180002F5B: add rsp, 20h +180002F5F: pop rdi +180002F60: retn + +### FUNC 180002F70 - 180002FB3 (67 bytes) name=sub_180002F70 +180002F70: sub rsp, 28h +180002F74: mov rax, rdx +180002F77: lea rdx, [r8+r8*2] +180002F7B: shl rdx, 5 +180002F7F: cmp rdx, 1000h +180002F86: jb short loc_180002FA0 +180002F88: mov rcx, [rax-8] +180002F8C: add rdx, 27h ; ''' +180002F90: sub rax, rcx +180002F93: add rax, 0FFFFFFFFFFFFFFF8h +180002F97: cmp rax, 1Fh +180002F9B: ja short loc_180002FAC +180002F9D: mov rax, rcx +180002FA0: mov rcx, rax; Block +180002FA3: add rsp, 28h +180002FA7: jmp j_j_free +180002FAC: call cs:_invalid_parameter_noinfo_noreturn +180002FB2: db 0CCh + +### FUNC 180002FC0 - 180002FC8 (8 bytes) name=sub_180002FC0 +180002FC0: lea rax, unk_180015FE0 +180002FC7: retn + +### FUNC 180002FD0 - 1800037B4 (2020 bytes) name=sub_180002FD0 +180002FD0: mov [rsp-8+arg_8], rbx +180002FD5: mov [rsp-8+arg_10], rsi +180002FDA: mov [rsp-8+arg_18], rdi +180002FDF: push rbp +180002FE0: push r12 +180002FE2: push r13 +180002FE4: push r14 +180002FE6: push r15 +180002FE8: lea rbp, [rsp-6A0h] +180002FF0: sub rsp, 7A0h +180002FF7: mov rax, cs:__security_cookie +180002FFE: xor rax, rsp +180003001: mov [rbp+6C0h+var_30], rax +180003008: mov rsi, rcx +18000300B: mov [rbp+6C0h+var_738], rcx +18000300F: xor r13d, r13d +180003012: mov [rsp+7C0h+var_780], r13d +180003017: xorps xmm0, xmm0 +18000301A: movups xmmword ptr [rcx], xmm0 +18000301D: mov [rcx], r13 +180003020: mov [rcx+8], r13 +180003024: mov [rcx+10h], r13 +180003028: mov r12d, 1 +18000302E: mov [rsp+7C0h+var_780], r12d +180003033: lea r9d, [r13+2]; Flags +180003037: xor r8d, r8d; hwndParent +18000303A: xor edx, edx; Enumerator +18000303C: lea rcx, ClassGuid; ClassGuid +180003043: call cs:SetupDiGetClassDevsW +180003049: mov r14, rax +18000304C: mov r15d, r13d +18000304F: mov [rbp+6C0h+DeviceInfoData.cbSize], 20h ; ' ' +180003056: xor edx, edx; MemberIndex +180003058: mov rcx, rax; DeviceInfoSet +18000305B: lea r8, [rbp+6C0h+DeviceInfoData]; DeviceInfoData +18000305F: call cs:SetupDiEnumDeviceInfo +180003065: mov rcx, r14; DeviceInfoSet +180003068: test eax, eax +18000306A: jz loc_180003775 +180003070: inc r15d +180003073: mov [rsp+7C0h+samDesired], 20019h; samDesired +18000307B: mov [rsp+7C0h+KeyType], 1; KeyType +180003083: xor r9d, r9d; HwProfile +180003086: lea r8d, [r9+1]; Scope +18000308A: lea rdx, [rbp+6C0h+DeviceInfoData]; DeviceInfoData +18000308E: call cs:SetupDiOpenDevRegKey +180003094: mov rdi, rax +180003097: mov [rbp+6C0h+cbData], 100h +18000309E: lea rax, [rbp+6C0h+cbData] +1800030A2: mov qword ptr [rsp+7C0h+samDesired], rax; lpcbData +1800030A7: lea rax, [rbp+6C0h+Data] +1800030AE: mov qword ptr [rsp+7C0h+KeyType], rax; lpData +1800030B3: xor r9d, r9d; lpType +1800030B6: xor r8d, r8d; lpReserved +1800030B9: lea rdx, ValueName; "PortName" +1800030C0: mov rcx, rdi; hKey +1800030C3: call cs:RegQueryValueExW +1800030C9: mov ebx, eax +1800030CB: mov rcx, rdi; hKey +1800030CE: call cs:RegCloseKey +1800030D4: test ebx, ebx +1800030D6: jnz loc_180003740 +1800030DC: mov eax, [rbp+6C0h+cbData] +1800030DF: dec eax +1800030E1: cmp eax, 0FFh +1800030E6: ja short loc_180003102 +1800030E8: add rax, rax +1800030EB: cmp rax, 200h +1800030F1: jnb loc_1800037AE +1800030F7: mov word ptr [rbp+rax+6C0h+Data], r13w +180003100: jmp short loc_18000310A +180003102: mov word ptr [rbp+6C0h+Data], r13w +18000310A: lea rdx, SubStr; "LPT" +180003111: lea rcx, [rbp+6C0h+Data]; Str +180003118: call cs:wcsstr +18000311E: test rax, rax +180003121: jnz loc_180003740 +180003127: mov [rbp+6C0h+var_724], r13d +18000312B: lea rax, [rbp+6C0h+var_724] +18000312F: mov [rsp+7C0h+RequiredSize], rax; RequiredSize +180003134: mov [rsp+7C0h+samDesired], 100h; PropertyBufferSize +18000313C: lea rax, [rbp+6C0h+PropertyBuffer] +180003143: mov qword ptr [rsp+7C0h+KeyType], rax; PropertyBuffer +180003148: xor r9d, r9d; PropertyRegDataType +18000314B: lea r8d, [r9+0Ch]; Property +18000314F: lea rdx, [rbp+6C0h+DeviceInfoData]; DeviceInfoData +180003153: mov rcx, r14; DeviceInfoSet +180003156: call cs:SetupDiGetDeviceRegistryPropertyW +18000315C: cmp eax, 1 +18000315F: jnz short loc_180003186 +180003161: mov eax, [rbp+6C0h+var_724] +180003164: test eax, eax +180003166: jz short loc_180003186 +180003168: lea ecx, [rax-1] +18000316B: add rcx, rcx +18000316E: cmp rcx, 200h +180003175: jnb loc_1800037AE +18000317B: mov word ptr [rbp+rcx+6C0h+PropertyBuffer], r13w +180003184: jmp short loc_18000318E +180003186: mov word ptr [rbp+6C0h+PropertyBuffer], r13w +18000318E: mov [rbp+6C0h+var_720], r13d +180003192: lea rax, [rbp+6C0h+var_720] +180003196: mov [rsp+7C0h+RequiredSize], rax; RequiredSize +18000319B: mov [rsp+7C0h+samDesired], 100h; PropertyBufferSize +1800031A3: lea rax, [rbp+6C0h+Src] +1800031AA: mov qword ptr [rsp+7C0h+KeyType], rax; PropertyBuffer +1800031AF: xor r9d, r9d; PropertyRegDataType +1800031B2: lea r8d, [r9+1]; Property +1800031B6: lea rdx, [rbp+6C0h+DeviceInfoData]; DeviceInfoData +1800031BA: mov rcx, r14; DeviceInfoSet +1800031BD: call cs:SetupDiGetDeviceRegistryPropertyW +1800031C3: cmp eax, 1 +1800031C6: jnz short loc_1800031ED +1800031C8: mov eax, [rbp+6C0h+var_720] +1800031CB: test eax, eax +1800031CD: jz short loc_1800031ED +1800031CF: lea ecx, [rax-1] +1800031D2: add rcx, rcx +1800031D5: cmp rcx, 200h +1800031DC: jnb loc_1800037AE +1800031E2: mov word ptr [rbp+rcx+6C0h+Src], r13w +1800031EB: jmp short loc_1800031F5 +1800031ED: mov word ptr [rbp+6C0h+Src], r13w +1800031F5: mov qword ptr [rsp+7C0h+cchWideChar], r13 +1800031FA: mov [rsp+7C0h+var_760], 7 +180003203: mov word ptr [rsp+7C0h+lpWideCharStr], r13w +180003209: lea rax, [rbp+6C0h+Data] +180003210: mov r8, 0FFFFFFFFFFFFFFFFh +180003217: nop word ptr [rax+rax+00000000h] +180003220: inc r8 +180003223: cmp word ptr [rax+r8*2], 0 +180003229: jnz short loc_180003220 +18000322B: lea rdx, [rbp+6C0h+Data]; Src +180003232: lea rcx, [rsp+7C0h+lpWideCharStr]; void * +180003237: call sub_180003830 +18000323C: nop +18000323D: lea r8, [rsp+7C0h+lpWideCharStr] +180003242: cmp [rsp+7C0h+var_760], 8 +180003248: cmovnb r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr +18000324E: mov [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar +180003253: mov [rsp+7C0h+RequiredSize], r13; lpDefaultChar +180003258: mov [rsp+7C0h+samDesired], r13d; cbMultiByte +18000325D: mov qword ptr [rsp+7C0h+KeyType], r13; lpMultiByteStr +180003262: mov r9d, [rsp+7C0h+cchWideChar]; cchWideChar +180003267: xor edx, edx; dwFlags +180003269: mov ecx, 0FDE9h; CodePage +18000326E: call cs:WideCharToMultiByte +180003274: movsxd rbx, eax +180003277: mov [rbp+6C0h+Size], r13 +18000327B: mov [rbp+6C0h+var_6C0], 0Fh +180003283: mov byte ptr [rbp+6C0h+lpMultiByteStr], 0 +180003287: mov rdx, rbx; Size +18000328A: lea rcx, [rbp+6C0h+lpMultiByteStr]; void * +18000328E: call sub_1800039A0 +180003293: or r12d, 2 +180003297: mov [rsp+7C0h+var_780], r12d +18000329C: lea rax, [rbp+6C0h+lpMultiByteStr] +1800032A0: cmp [rbp+6C0h+var_6C0], 10h +1800032A5: cmovnb rax, [rbp+6C0h+lpMultiByteStr] +1800032AA: lea r8, [rsp+7C0h+lpWideCharStr] +1800032AF: cmp [rsp+7C0h+var_760], 8 +1800032B5: cmovnb r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr +1800032BB: mov [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar +1800032C0: mov [rsp+7C0h+RequiredSize], r13; lpDefaultChar +1800032C5: mov [rsp+7C0h+samDesired], ebx; cbMultiByte +1800032C9: mov qword ptr [rsp+7C0h+KeyType], rax; lpMultiByteStr +1800032CE: mov r9d, [rsp+7C0h+cchWideChar]; cchWideChar +1800032D3: xor edx, edx; dwFlags +1800032D5: mov ecx, 0FDE9h; CodePage +1800032DA: call cs:WideCharToMultiByte +1800032E0: nop +1800032E1: mov rdx, [rsp+7C0h+var_760] +1800032E6: cmp rdx, 8 +1800032EA: jb short loc_180003323 +1800032EC: lea rdx, ds:2[rdx*2] +1800032F4: mov rcx, [rsp+7C0h+lpWideCharStr] +1800032F9: mov rax, rcx +1800032FC: cmp rdx, 1000h +180003303: jb short loc_18000331E +180003305: add rdx, 27h ; ''' +180003309: mov rcx, [rcx-8]; Block +18000330D: sub rax, rcx +180003310: add rax, 0FFFFFFFFFFFFFFF8h +180003314: cmp rax, 1Fh +180003318: ja loc_18000374B +18000331E: call j_j_free +180003323: mov qword ptr [rsp+7C0h+cchWideChar], r13 +180003328: mov [rsp+7C0h+var_760], 7 +180003331: mov word ptr [rsp+7C0h+lpWideCharStr], r13w +180003337: mov qword ptr [rsp+7C0h+var_748], r13 +18000333C: mov [rbp+6C0h+var_740], 7 +180003344: mov word ptr [rsp+7C0h+var_758], r13w +18000334A: lea rax, [rbp+6C0h+PropertyBuffer] +180003351: mov r8, 0FFFFFFFFFFFFFFFFh +180003358: nop dword ptr [rax+rax+00000000h] +180003360: inc r8 +180003363: cmp word ptr [rax+r8*2], 0 +180003369: jnz short loc_180003360 +18000336B: lea rdx, [rbp+6C0h+PropertyBuffer]; Src +180003372: lea rcx, [rsp+7C0h+var_758]; void * +180003377: call sub_180003830 +18000337C: nop +18000337D: lea r8, [rsp+7C0h+var_758] +180003382: cmp [rbp+6C0h+var_740], 8 +180003387: cmovnb r8, [rsp+7C0h+var_758]; lpWideCharStr +18000338D: mov [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar +180003392: mov [rsp+7C0h+RequiredSize], r13; lpDefaultChar +180003397: mov [rsp+7C0h+samDesired], r13d; cbMultiByte +18000339C: mov qword ptr [rsp+7C0h+KeyType], r13; lpMultiByteStr +1800033A1: mov r9d, [rsp+7C0h+var_748]; cchWideChar +1800033A6: xor edx, edx; dwFlags +1800033A8: mov ecx, 0FDE9h; CodePage +1800033AD: call cs:WideCharToMultiByte +1800033B3: movsxd rbx, eax +1800033B6: mov [rbp+6C0h+var_6E8], r13 +1800033BA: mov [rbp+6C0h+var_6E0], 0Fh +1800033C2: mov byte ptr [rbp+6C0h+var_6F8], 0 +1800033C6: mov rdx, rbx; Size +1800033C9: lea rcx, [rbp+6C0h+var_6F8]; void * +1800033CD: call sub_1800039A0 +1800033D2: or r12d, 4 +1800033D6: mov [rsp+7C0h+var_780], r12d +1800033DB: lea rax, [rbp+6C0h+var_6F8] +1800033DF: cmp [rbp+6C0h+var_6E0], 10h +1800033E4: cmovnb rax, [rbp+6C0h+var_6F8] +1800033E9: lea r8, [rsp+7C0h+var_758] +1800033EE: cmp [rbp+6C0h+var_740], 8 +1800033F3: cmovnb r8, [rsp+7C0h+var_758]; lpWideCharStr +1800033F9: mov [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar +1800033FE: mov [rsp+7C0h+RequiredSize], r13; lpDefaultChar +180003403: mov [rsp+7C0h+samDesired], ebx; cbMultiByte +180003407: mov qword ptr [rsp+7C0h+KeyType], rax; lpMultiByteStr +18000340C: mov r9d, [rsp+7C0h+var_748]; cchWideChar +180003411: xor edx, edx; dwFlags +180003413: mov ecx, 0FDE9h; CodePage +180003418: call cs:WideCharToMultiByte +18000341E: nop +18000341F: mov rdx, [rbp+6C0h+var_740] +180003423: cmp rdx, 8 +180003427: jb short loc_180003460 +180003429: lea rdx, ds:2[rdx*2] +180003431: mov rcx, [rsp+7C0h+var_758] +180003436: mov rax, rcx +180003439: cmp rdx, 1000h +180003440: jb short loc_18000345B +180003442: add rdx, 27h ; ''' +180003446: mov rcx, [rcx-8]; Block +18000344A: sub rax, rcx +18000344D: add rax, 0FFFFFFFFFFFFFFF8h +180003451: cmp rax, 1Fh +180003455: ja loc_180003752 +18000345B: call j_j_free +180003460: mov qword ptr [rsp+7C0h+var_748], r13 +180003465: mov [rbp+6C0h+var_740], 7 +18000346D: mov word ptr [rsp+7C0h+var_758], r13w +180003473: mov qword ptr [rsp+7C0h+cchWideChar], r13 +180003478: mov [rsp+7C0h+var_760], 7 +180003481: mov word ptr [rsp+7C0h+lpWideCharStr], r13w +180003487: lea rax, [rbp+6C0h+Src] +18000348E: mov r8, 0FFFFFFFFFFFFFFFFh +180003495: inc r8 +180003498: cmp word ptr [rax+r8*2], 0 +18000349E: jnz short loc_180003495 +1800034A0: lea rdx, [rbp+6C0h+Src]; Src +1800034A7: lea rcx, [rsp+7C0h+lpWideCharStr]; void * +1800034AC: call sub_180003830 +1800034B1: nop +1800034B2: lea r8, [rsp+7C0h+lpWideCharStr] +1800034B7: cmp [rsp+7C0h+var_760], 8 +1800034BD: cmovnb r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr +1800034C3: mov [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar +1800034C8: mov [rsp+7C0h+RequiredSize], r13; lpDefaultChar +1800034CD: mov [rsp+7C0h+samDesired], r13d; cbMultiByte +1800034D2: mov qword ptr [rsp+7C0h+KeyType], r13; lpMultiByteStr +1800034D7: mov r9d, [rsp+7C0h+cchWideChar]; cchWideChar +1800034DC: xor edx, edx; dwFlags +1800034DE: mov ecx, 0FDE9h; CodePage +1800034E3: call cs:WideCharToMultiByte +1800034E9: movsxd rbx, eax +1800034EC: mov [rbp+6C0h+var_708], r13 +1800034F0: mov [rbp+6C0h+var_700], 0Fh +1800034F8: mov byte ptr [rbp+6C0h+var_718], 0 +1800034FC: mov rdx, rbx; Size +1800034FF: lea rcx, [rbp+6C0h+var_718]; void * +180003503: call sub_1800039A0 +180003508: or r12d, 8 +18000350C: mov [rsp+7C0h+var_780], r12d +180003511: lea rax, [rbp+6C0h+var_718] +180003515: cmp [rbp+6C0h+var_700], 10h +18000351A: cmovnb rax, [rbp+6C0h+var_718] +18000351F: lea r8, [rsp+7C0h+lpWideCharStr] +180003524: cmp [rsp+7C0h+var_760], 8 +18000352A: cmovnb r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr +180003530: mov [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar +180003535: mov [rsp+7C0h+RequiredSize], r13; lpDefaultChar +18000353A: mov [rsp+7C0h+samDesired], ebx; cbMultiByte +18000353E: mov qword ptr [rsp+7C0h+KeyType], rax; lpMultiByteStr +180003543: mov r9d, [rsp+7C0h+cchWideChar]; cchWideChar +180003548: xor edx, edx; dwFlags +18000354A: mov ecx, 0FDE9h; CodePage +18000354F: call cs:WideCharToMultiByte +180003555: nop +180003556: mov rdx, [rsp+7C0h+var_760] +18000355B: cmp rdx, 8 +18000355F: jb short loc_180003598 +180003561: lea rdx, ds:2[rdx*2] +180003569: mov rcx, [rsp+7C0h+lpWideCharStr] +18000356E: mov rax, rcx +180003571: cmp rdx, 1000h +180003578: jb short loc_180003593 +18000357A: add rdx, 27h ; ''' +18000357E: mov rcx, [rcx-8]; Block +180003582: sub rax, rcx +180003585: add rax, 0FFFFFFFFFFFFFFF8h +180003589: cmp rax, 1Fh +18000358D: ja loc_180003759 +180003593: call j_j_free +180003598: mov [rbp+6C0h+var_680], r13 +18000359C: mov [rbp+6C0h+var_678], 0Fh +1800035A4: mov [rbp+6C0h+var_690], 0 +1800035A8: mov [rbp+6C0h+var_660], r13 +1800035AC: mov [rbp+6C0h+var_658], 0Fh +1800035B4: mov [rbp+6C0h+var_670], 0 +1800035B8: mov [rbp+6C0h+var_640], r13 +1800035BF: mov [rbp+6C0h+var_638], 0Fh +1800035CA: mov [rbp+6C0h+var_650], 0 +1800035CE: lea rdx, [rbp+6C0h+lpMultiByteStr] +1800035D2: cmp [rbp+6C0h+var_6C0], 10h +1800035D7: cmovnb rdx, [rbp+6C0h+lpMultiByteStr]; Src +1800035DC: mov r8, [rbp+6C0h+Size]; Size +1800035E0: lea rcx, [rbp+6C0h+var_690]; void * +1800035E4: call sub_180002610 +1800035E9: lea rdx, [rbp+6C0h+var_6F8] +1800035ED: cmp [rbp+6C0h+var_6E0], 10h +1800035F2: cmovnb rdx, [rbp+6C0h+var_6F8]; Src +1800035F7: mov r8, [rbp+6C0h+var_6E8]; Size +1800035FB: lea rcx, [rbp+6C0h+var_670]; void * +1800035FF: call sub_180002610 +180003604: lea rdx, [rbp+6C0h+var_718] +180003608: cmp [rbp+6C0h+var_700], 10h +18000360D: cmovnb rdx, [rbp+6C0h+var_718]; Src +180003612: mov r8, [rbp+6C0h+var_708]; Size +180003616: lea rcx, [rbp+6C0h+var_650]; void * +18000361A: call sub_180002610 +18000361F: mov rbx, [rsi+8] +180003623: cmp rbx, [rsi+10h] +180003627: jz short loc_18000365D +180003629: mov [rbp+6C0h+var_730], rbx +18000362D: lea rdx, [rbp+6C0h+var_690] +180003631: mov rcx, rbx +180003634: call sub_180002E60 +180003639: nop +18000363A: lea rcx, [rbx+20h] +18000363E: lea rdx, [rbp+6C0h+var_670] +180003642: call sub_180002E60 +180003647: nop +180003648: lea rcx, [rbx+40h] +18000364C: lea rdx, [rbp+6C0h+var_650] +180003650: call sub_180002E60 +180003655: nop +180003656: add qword ptr [rsi+8], 60h ; '`' +18000365B: jmp short loc_18000366D +18000365D: lea r8, [rbp+6C0h+var_690] +180003661: mov rdx, rbx +180003664: mov rcx, rsi +180003667: call sub_180003B00 +18000366C: nop +18000366D: lea rcx, [rbp+6C0h+var_690] +180003671: call sub_180002CA0 +180003676: nop +180003677: mov rdx, [rbp+6C0h+var_700] +18000367B: cmp rdx, 10h +18000367F: jb short loc_1800036B2 +180003681: inc rdx +180003684: mov rcx, [rbp+6C0h+var_718] +180003688: mov rax, rcx +18000368B: cmp rdx, 1000h +180003692: jb short loc_1800036AD +180003694: add rdx, 27h ; ''' +180003698: mov rcx, [rcx-8]; Block +18000369C: sub rax, rcx +18000369F: add rax, 0FFFFFFFFFFFFFFF8h +1800036A3: cmp rax, 1Fh +1800036A7: ja loc_180003760 +1800036AD: call j_j_free +1800036B2: mov [rbp+6C0h+var_708], r13 +1800036B6: mov [rbp+6C0h+var_700], 0Fh +1800036BE: mov byte ptr [rbp+6C0h+var_718], 0 +1800036C2: mov rdx, [rbp+6C0h+var_6E0] +1800036C6: cmp rdx, 10h +1800036CA: jb short loc_1800036F9 +1800036CC: inc rdx +1800036CF: mov rcx, [rbp+6C0h+var_6F8] +1800036D3: mov rax, rcx +1800036D6: cmp rdx, 1000h +1800036DD: jb short loc_1800036F4 +1800036DF: add rdx, 27h ; ''' +1800036E3: mov rcx, [rcx-8]; Block +1800036E7: sub rax, rcx +1800036EA: add rax, 0FFFFFFFFFFFFFFF8h +1800036EE: cmp rax, 1Fh +1800036F2: ja short loc_180003767 +1800036F4: call j_j_free +1800036F9: mov [rbp+6C0h+var_6E8], r13 +1800036FD: mov [rbp+6C0h+var_6E0], 0Fh +180003705: mov byte ptr [rbp+6C0h+var_6F8], 0 +180003709: mov rdx, [rbp+6C0h+var_6C0] +18000370D: cmp rdx, 10h +180003711: jb short loc_180003740 +180003713: inc rdx +180003716: mov rcx, [rbp+6C0h+lpMultiByteStr] +18000371A: mov rax, rcx +18000371D: cmp rdx, 1000h +180003724: jb short loc_18000373B +180003726: add rdx, 27h ; ''' +18000372A: mov rcx, [rcx-8]; Block +18000372E: sub rax, rcx +180003731: add rax, 0FFFFFFFFFFFFFFF8h +180003735: cmp rax, 1Fh +180003739: ja short loc_18000376E +18000373B: call j_j_free +180003740: mov edx, r15d +180003743: mov rcx, r14 +180003746: jmp loc_18000305B +18000374B: call cs:_invalid_parameter_noinfo_noreturn +180003751: nop +180003752: call cs:_invalid_parameter_noinfo_noreturn +180003758: nop +180003759: call cs:_invalid_parameter_noinfo_noreturn +18000375F: nop +180003760: call cs:_invalid_parameter_noinfo_noreturn +180003766: nop +180003767: call cs:_invalid_parameter_noinfo_noreturn +18000376D: nop +18000376E: call cs:_invalid_parameter_noinfo_noreturn +180003774: int 3; Trap to Debugger +180003775: call cs:SetupDiDestroyDeviceInfoList +18000377B: mov rax, rsi +18000377E: mov rcx, [rbp+6C0h+var_30] +180003785: xor rcx, rsp; StackCookie +180003788: call __security_check_cookie +18000378D: lea r11, [rsp+7C0h+var_20] +180003795: mov rbx, [r11+38h] +180003799: mov rsi, [r11+40h] +18000379D: mov rdi, [r11+48h] +1800037A1: mov rsp, r11 +1800037A4: pop r15 +1800037A6: pop r14 +1800037A8: pop r13 +1800037AA: pop r12 +1800037AC: pop rbp +1800037AD: retn +1800037AE: call __report_rangecheckfailure +1800037B3: db 0CCh + +### FUNC 1800037C0 - 180003822 (98 bytes) name=unknown_libname_18 +1800037C0: push rbx +1800037C2: sub rsp, 20h +1800037C6: mov rdx, [rcx+18h] +1800037CA: mov rbx, rcx +1800037CD: cmp rdx, 8 +1800037D1: jb short loc_180003804 +1800037D3: mov rcx, [rcx] +1800037D6: lea rdx, ds:2[rdx*2] +1800037DE: cmp rdx, 1000h +1800037E5: jb short loc_1800037FF +1800037E7: mov r8, [rcx-8] +1800037EB: add rdx, 27h ; ''' +1800037EF: sub rcx, r8 +1800037F2: lea rax, [rcx-8] +1800037F6: cmp rax, 1Fh +1800037FA: ja short loc_18000381B +1800037FC: mov rcx, r8; Block +1800037FF: call j_j_free +180003804: xor eax, eax +180003806: mov qword ptr [rbx+18h], 7 +18000380E: mov [rbx+10h], rax +180003812: mov [rbx], ax +180003815: add rsp, 20h +180003819: pop rbx +18000381A: retn +18000381B: call cs:_invalid_parameter_noinfo_noreturn +180003821: db 0CCh + +### FUNC 180003830 - 180003999 (361 bytes) name=sub_180003830 +180003830: push rbx +180003832: push rbp +180003833: push rsi +180003834: push rdi +180003835: push r12 +180003837: push r14 +180003839: push r15 +18000383B: sub rsp, 20h +18000383F: mov rbp, [rcx+18h] +180003843: mov r14, r8 +180003846: mov r12, rdx +180003849: mov rdi, rcx +18000384C: cmp r8, rbp +18000384F: ja short loc_18000388A +180003851: mov rsi, rcx +180003854: cmp rbp, 8 +180003858: jb short loc_18000385D +18000385A: mov rsi, [rcx] +18000385D: lea rbx, [r8+r8] +180003861: mov [rcx+10h], r14 +180003865: mov r8, rbx; Size +180003868: mov rcx, rsi; void * +18000386B: call memmove +180003870: xor r15d, r15d +180003873: mov [rbx+rsi], r15w +180003878: mov rax, rdi +18000387B: add rsp, 20h +18000387F: pop r15 +180003881: pop r14 +180003883: pop r12 +180003885: pop rdi +180003886: pop rsi +180003887: pop rbp +180003888: pop rbx +180003889: retn +18000388A: mov rbx, 7FFFFFFFFFFFFFFEh +180003894: cmp r14, rbx +180003897: ja loc_18000398D +18000389D: mov rcx, r14 +1800038A0: or rcx, 7 +1800038A4: cmp rcx, rbx +1800038A7: ja short loc_1800038C8 +1800038A9: mov rdx, rbp +1800038AC: mov rax, rbx +1800038AF: shr rdx, 1 +1800038B2: sub rax, rdx +1800038B5: cmp rbp, rax +1800038B8: ja short loc_1800038C8 +1800038BA: lea rax, [rdx+rbp] +1800038BE: mov rbx, rcx +1800038C1: cmp rcx, rax +1800038C4: cmovb rbx, rax +1800038C8: lea rcx, [rbx+1] +1800038CC: mov rax, 7FFFFFFFFFFFFFFFh +1800038D6: cmp rcx, rax +1800038D9: ja loc_180003993 +1800038DF: add rcx, rcx; Size +1800038E2: xor r15d, r15d +1800038E5: cmp rcx, 1000h +1800038EC: jb short loc_180003916 +1800038EE: lea rax, [rcx+27h] +1800038F2: cmp rax, rcx +1800038F5: jbe loc_180003993 +1800038FB: mov rcx, rax; Size +1800038FE: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180003903: test rax, rax +180003906: jz short loc_180003986 +180003908: lea rsi, [rax+27h] +18000390C: and rsi, 0FFFFFFFFFFFFFFE0h +180003910: mov [rsi-8], rax +180003914: jmp short loc_180003928 +180003916: test rcx, rcx +180003919: jz short loc_180003925 +18000391B: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180003920: mov rsi, rax +180003923: jmp short loc_180003928 +180003925: mov rsi, r15 +180003928: mov [rdi+18h], rbx +18000392C: mov rdx, r12; Src +18000392F: lea rbx, [r14+r14] +180003933: mov [rdi+10h], r14 +180003937: mov r8, rbx; Size +18000393A: mov rcx, rsi; void * +18000393D: call memcpy +180003942: mov [rbx+rsi], r15w +180003947: cmp rbp, 8 +18000394B: jb short loc_18000397E +18000394D: mov rcx, [rdi] +180003950: lea rdx, ds:2[rbp*2] +180003958: cmp rdx, 1000h +18000395F: jb short loc_180003979 +180003961: mov r8, [rcx-8] +180003965: add rdx, 27h ; ''' +180003969: sub rcx, r8 +18000396C: lea rax, [rcx-8] +180003970: cmp rax, 1Fh +180003974: ja short loc_180003986 +180003976: mov rcx, r8; Block +180003979: call j_j_free +18000397E: mov [rdi], rsi +180003981: jmp loc_180003878 +180003986: call cs:_invalid_parameter_noinfo_noreturn +18000398C: int 3; Trap to Debugger +18000398D: call sub_180002B40 +180003992: db 0CCh +180003993: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180003998: db 0CCh + +### FUNC 1800039A0 - 180003B00 (352 bytes) name=sub_1800039A0 +1800039A0: mov [rsp+arg_18], rbx +1800039A5: push rbp +1800039A6: push rsi +1800039A7: push rdi +1800039A8: sub rsp, 20h +1800039AC: mov rbp, [rcx+18h] +1800039B0: mov rsi, rdx +1800039B3: mov rbx, rcx +1800039B6: cmp rdx, rbp +1800039B9: ja short loc_1800039EC +1800039BB: mov rdi, rcx +1800039BE: cmp rbp, 10h +1800039C2: jb short loc_1800039C7 +1800039C4: mov rdi, [rcx] +1800039C7: mov [rcx+10h], rsi +1800039CB: mov r8, rsi; Size +1800039CE: mov rcx, rdi; void * +1800039D1: xor edx, edx; Val +1800039D3: call memset +1800039D8: mov rax, rbx +1800039DB: mov byte ptr [rsi+rdi], 0 +1800039DF: mov rbx, [rsp+38h+arg_18] +1800039E4: add rsp, 20h +1800039E8: pop rdi +1800039E9: pop rsi +1800039EA: pop rbp +1800039EB: retn +1800039EC: mov rdi, 7FFFFFFFFFFFFFFFh +1800039F6: cmp rsi, rdi +1800039F9: ja loc_180003AFA +1800039FF: mov rcx, rsi +180003A02: or rcx, 0Fh +180003A06: cmp rcx, rdi +180003A09: ja short loc_180003A2A +180003A0B: mov rdx, rbp +180003A0E: mov rax, rdi +180003A11: shr rdx, 1 +180003A14: sub rax, rdx +180003A17: cmp rbp, rax +180003A1A: ja short loc_180003A2A +180003A1C: lea rax, [rdx+rbp] +180003A20: mov rdi, rcx +180003A23: cmp rcx, rax +180003A26: cmovb rdi, rax +180003A2A: mov rcx, rdi +180003A2D: mov [rsp+38h+arg_10], r14 +180003A32: add rcx, 1 +180003A36: mov rax, 0FFFFFFFFFFFFFFFFh +180003A3D: cmovb rcx, rax; Size +180003A41: cmp rcx, 1000h +180003A48: jb short loc_180003A76 +180003A4A: lea rax, [rcx+27h] +180003A4E: cmp rax, rcx +180003A51: jbe loc_180003AF4 +180003A57: mov rcx, rax; Size +180003A5A: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180003A5F: test rax, rax +180003A62: jz loc_180003AED +180003A68: lea r14, [rax+27h] +180003A6C: and r14, 0FFFFFFFFFFFFFFE0h +180003A70: mov [r14-8], rax +180003A74: jmp short loc_180003A88 +180003A76: test rcx, rcx +180003A79: jz short loc_180003A85 +180003A7B: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180003A80: mov r14, rax +180003A83: jmp short loc_180003A88 +180003A85: xor r14d, r14d +180003A88: mov r8, rsi; Size +180003A8B: mov [rbx+10h], rsi +180003A8F: xor edx, edx; Val +180003A91: mov [rbx+18h], rdi +180003A95: mov rcx, r14; void * +180003A98: call memset +180003A9D: mov byte ptr [r14+rsi], 0 +180003AA2: cmp rbp, 10h +180003AA6: jb short loc_180003AD5 +180003AA8: mov rcx, [rbx] +180003AAB: lea rdx, [rbp+1] +180003AAF: cmp rdx, 1000h +180003AB6: jb short loc_180003AD0 +180003AB8: mov r8, [rcx-8] +180003ABC: add rdx, 27h ; ''' +180003AC0: sub rcx, r8 +180003AC3: lea rax, [rcx-8] +180003AC7: cmp rax, 1Fh +180003ACB: ja short loc_180003AED +180003ACD: mov rcx, r8; Block +180003AD0: call j_j_free +180003AD5: mov [rbx], r14 +180003AD8: mov rax, rbx +180003ADB: mov r14, [rsp+38h+arg_10] +180003AE0: mov rbx, [rsp+38h+arg_18] +180003AE5: add rsp, 20h +180003AE9: pop rdi +180003AEA: pop rsi +180003AEB: pop rbp +180003AEC: retn +180003AED: call cs:_invalid_parameter_noinfo_noreturn +180003AF3: int 3; Trap to Debugger +180003AF4: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180003AF9: align 2 +180003AFA: call sub_180002B40 +180003AFF: align 20h + +### FUNC 180003B00 - 180003D47 (583 bytes) name=sub_180003B00 +180003B00: push rbx +180003B02: push rsi +180003B03: push rdi +180003B04: push r12 +180003B06: push r13 +180003B08: push r14 +180003B0A: push r15 +180003B0C: sub rsp, 50h +180003B10: mov r15, r8 +180003B13: mov [rsp+88h+var_50], rdx +180003B18: mov rsi, rcx +180003B1B: mov r8, [rcx] +180003B1E: sub rdx, r8 +180003B21: mov r10, 2AAAAAAAAAAAAAABh +180003B2B: mov rax, r10 +180003B2E: imul rdx +180003B31: mov rbx, rdx +180003B34: sar rbx, 4 +180003B38: mov rax, rbx +180003B3B: shr rax, 3Fh +180003B3F: add rbx, rax +180003B42: mov rcx, [rcx+8] +180003B46: sub rcx, r8 +180003B49: mov rax, r10 +180003B4C: imul rcx +180003B4F: sar rdx, 4 +180003B53: mov rax, rdx +180003B56: shr rax, 3Fh +180003B5A: add rdx, rax +180003B5D: mov r9, 2AAAAAAAAAAAAAAh +180003B67: cmp rdx, r9 +180003B6A: jz loc_180003D41 +180003B70: lea r12, [rdx+1] +180003B74: mov rcx, [rsi+10h] +180003B78: sub rcx, r8 +180003B7B: mov rax, r10 +180003B7E: imul rcx +180003B81: sar rdx, 4 +180003B85: mov rax, rdx +180003B88: shr rax, 3Fh +180003B8C: add rdx, rax +180003B8F: mov rcx, rdx +180003B92: shr rcx, 1 +180003B95: mov rax, r9 +180003B98: sub rax, rcx +180003B9B: cmp rdx, rax +180003B9E: jbe short loc_180003BA5 +180003BA0: mov rax, r12 +180003BA3: jmp short loc_180003BB0 +180003BA5: lea rax, [rcx+rdx] +180003BA9: cmp rax, r12 +180003BAC: cmovb rax, r12 +180003BB0: mov [rsp+88h+var_58], rax +180003BB5: cmp rax, r9 +180003BB8: ja loc_180003D3B +180003BBE: lea r14, [rax+rax*2] +180003BC2: shl r14, 5 +180003BC6: cmp r14, 1000h +180003BCD: jb short loc_180003BF8 +180003BCF: lea rcx, [r14+27h]; Size +180003BD3: cmp rcx, r14 +180003BD6: jbe loc_180003D3B +180003BDC: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180003BE1: test rax, rax +180003BE4: jz loc_180003D34 +180003BEA: lea rdi, [rax+27h] +180003BEE: and rdi, 0FFFFFFFFFFFFFFE0h +180003BF2: mov [rdi-8], rax +180003BF6: jmp short loc_180003C0C +180003BF8: test r14, r14 +180003BFB: jz short loc_180003C0A +180003BFD: mov rcx, r14; Size +180003C00: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180003C05: mov rdi, rax +180003C08: jmp short loc_180003C0C +180003C0A: xor edi, edi +180003C0C: mov [rsp+88h+var_60], rdi +180003C11: lea r13, [rbx+rbx*2] +180003C15: shl r13, 5 +180003C19: add r13, rdi +180003C1C: lea rbx, [r13+60h] +180003C20: mov [rsp+88h+var_48], rbx +180003C25: mov [rsp+88h+var_68], rbx +180003C2A: mov [rsp+88h+var_40], r13 +180003C2F: mov rdx, r15 +180003C32: mov rcx, r13 +180003C35: call sub_180002E60 +180003C3A: nop +180003C3B: lea rdx, [r15+20h] +180003C3F: lea rcx, [r13+20h] +180003C43: call sub_180002E60 +180003C48: nop +180003C49: lea rdx, [r15+40h] +180003C4D: lea rcx, [r13+40h] +180003C51: call sub_180002E60 +180003C56: nop +180003C57: mov [rsp+88h+var_68], r13 +180003C5C: mov rdx, [rsi+8] +180003C60: mov rcx, [rsi] +180003C63: mov r11, [rsp+88h+var_50] +180003C68: mov r8, rdi +180003C6B: cmp r11, rdx +180003C6E: jz short loc_180003C87 +180003C70: mov rdx, r11 +180003C73: call sub_180003D50 +180003C78: mov [rsp+88h+var_68], rdi +180003C7D: mov r8, rbx +180003C80: mov rdx, [rsi+8] +180003C84: mov rcx, r11 +180003C87: call sub_180003D50 +180003C8C: nop +180003C8D: mov rbx, [rsi] +180003C90: test rbx, rbx +180003C93: jz short loc_180003D07 +180003C95: mov r15, [rsi+8] +180003C99: cmp rbx, r15 +180003C9C: jz short loc_180003CB4 +180003C9E: xchg ax, ax +180003CA0: mov rcx, rbx +180003CA3: call sub_180002CA0 +180003CA8: add rbx, 60h ; '`' +180003CAC: cmp rbx, r15 +180003CAF: jnz short loc_180003CA0 +180003CB1: mov rbx, [rsi] +180003CB4: mov rcx, [rsi+10h] +180003CB8: sub rcx, rbx +180003CBB: mov rax, 2AAAAAAAAAAAAAABh +180003CC5: imul rcx +180003CC8: sar rdx, 4 +180003CCC: mov rax, rdx +180003CCF: shr rax, 3Fh +180003CD3: add rdx, rax +180003CD6: lea rdx, [rdx+rdx*2] +180003CDA: shl rdx, 5 +180003CDE: cmp rdx, 1000h +180003CE5: jb short loc_180003CFF +180003CE7: add rdx, 27h ; ''' +180003CEB: mov rax, [rbx-8] +180003CEF: sub rbx, rax +180003CF2: add rbx, 0FFFFFFFFFFFFFFF8h +180003CF6: cmp rbx, 1Fh +180003CFA: ja short loc_180003D34 +180003CFC: mov rbx, rax +180003CFF: mov rcx, rbx; Block +180003D02: call j_j_free +180003D07: mov [rsi], rdi +180003D0A: lea rcx, [r12+r12*2] +180003D0E: shl rcx, 5 +180003D12: add rcx, rdi +180003D15: mov [rsi+8], rcx +180003D19: lea rcx, [r14+rdi] +180003D1D: mov [rsi+10h], rcx +180003D21: mov rax, r13 +180003D24: add rsp, 50h +180003D28: pop r15 +180003D2A: pop r14 +180003D2C: pop r13 +180003D2E: pop r12 +180003D30: pop rdi +180003D31: pop rsi +180003D32: pop rbx +180003D33: retn +180003D34: call cs:_invalid_parameter_noinfo_noreturn +180003D3A: int 3; Trap to Debugger +180003D3B: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180003D40: db 0CCh +180003D41: call sub_180002B80 +180003D46: db 0CCh + +### FUNC 180003D50 - 180003E1A (202 bytes) name=sub_180003D50 +180003D50: mov rax, r8 +180003D53: cmp rcx, rdx +180003D56: jz locret_180003E19 +180003D5C: mov r9, rax +180003D5F: lea r8, [rcx+38h] +180003D63: sub r9, rcx +180003D66: xor r10d, r10d +180003D69: nop dword ptr [rax+00000000h] +180003D70: mov [r9+r8-28h], r10 +180003D75: mov [r9+r8-20h], r10 +180003D7A: movups xmm0, xmmword ptr [r8-38h] +180003D7F: lea r8, [r8+60h] +180003D83: lea rcx, [r8-38h] +180003D87: movups xmmword ptr [rax], xmm0 +180003D8A: movups xmm1, xmmword ptr [r8-88h] +180003D92: movups xmmword ptr [rax+10h], xmm1 +180003D96: mov [r8-88h], r10 +180003D9D: add rax, 60h ; '`' +180003DA1: mov qword ptr [r8-80h], 0Fh +180003DA9: mov [r8-98h], r10b +180003DB0: mov [r9+r8-68h], r10 +180003DB5: mov [r9+r8-60h], r10 +180003DBA: movups xmm0, xmmword ptr [r8-78h] +180003DBF: movups xmmword ptr [r9+r8-78h], xmm0 +180003DC5: movups xmm1, xmmword ptr [r8-68h] +180003DCA: movups xmmword ptr [r9+r8-68h], xmm1 +180003DD0: mov [r8-68h], r10 +180003DD4: mov qword ptr [r8-60h], 0Fh +180003DDC: mov [r8-78h], r10b +180003DE0: mov [r9+r8-48h], r10 +180003DE5: mov [r9+r8-40h], r10 +180003DEA: movups xmm0, xmmword ptr [r8-58h] +180003DEF: movups xmmword ptr [r9+r8-58h], xmm0 +180003DF5: movups xmm1, xmmword ptr [r8-48h] +180003DFA: movups xmmword ptr [r9+r8-48h], xmm1 +180003E00: mov [r8-48h], r10 +180003E04: mov qword ptr [r8-40h], 0Fh +180003E0C: mov [r8-58h], r10b +180003E10: cmp rcx, rdx +180003E13: jnz loc_180003D70 +180003E19: retn + +### FUNC 180003E20 - 180003E84 (100 bytes) name=sub_180003E20 +180003E20: push rbx +180003E22: sub rsp, 40h +180003E26: mov rax, cs:__security_cookie +180003E2D: xor rax, rsp +180003E30: mov [rsp+48h+var_18], rax +180003E35: mov r8, rdx +180003E38: mov [rsp+48h+var_20], 1 +180003E3D: lea rdx, [rcx+8] +180003E41: mov [rsp+48h+var_28], r8 +180003E46: lea rax, off_18000F6D8 +180003E4D: mov rbx, rcx +180003E50: mov [rcx], rax +180003E53: xorps xmm0, xmm0 +180003E56: lea rcx, [rsp+48h+var_28] +180003E5B: movups xmmword ptr [rdx], xmm0 +180003E5E: call cs:__std_exception_copy +180003E64: lea rax, off_18000FC50 +180003E6B: mov [rbx], rax +180003E6E: mov rax, rbx +180003E71: mov rcx, [rsp+48h+var_18] +180003E76: xor rcx, rsp; StackCookie +180003E79: call __security_check_cookie +180003E7E: add rsp, 40h +180003E82: pop rbx +180003E83: retn + +### FUNC 180003E90 - 18000412D (669 bytes) name=sub_180003E90 +180003E90: mov [rsp-8+arg_8], rbx +180003E95: mov [rsp-8+arg_10], rsi +180003E9A: push rbp +180003E9B: push rdi +180003E9C: push r14 +180003E9E: lea rbp, [rsp-70h] +180003EA3: sub rsp, 170h +180003EAA: mov rax, cs:__security_cookie +180003EB1: xor rax, rsp +180003EB4: mov [rbp+80h+var_20], rax +180003EB8: mov rdi, rcx +180003EBB: mov [rsp+180h+var_138], rcx +180003EC0: xor esi, esi +180003EC2: mov [rsp+180h+var_160], esi +180003EC6: xorps xmm0, xmm0 +180003EC9: movups xmmword ptr [rcx+8], xmm0 +180003ECD: lea rax, off_18000FC90 +180003ED4: mov [rcx], rax +180003ED7: lea rbx, [rcx+18h] +180003EDB: mov [rbx+10h], rsi +180003EDF: mov qword ptr [rbx+18h], 0Fh +180003EE7: mov [rbx], sil +180003EEA: xor edx, edx; Val +180003EEC: mov r8d, 0F8h; Size +180003EF2: lea rcx, [rsp+180h+var_120]; void * +180003EF7: call memset +180003EFC: lea rax, unk_18000FCB8 +180003F03: mov [rsp+180h+var_120], rax +180003F08: lea rax, unk_18000FBA8 +180003F0F: mov [rsp+180h+var_110], rax +180003F14: lea rcx, [rbp+80h+var_88] +180003F18: call cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios>::basic_ios>(void) +180003F1E: nop +180003F1F: mov [rsp+180h+var_160], 1 +180003F27: xor r8d, r8d +180003F2A: lea rdx, [rsp+180h+var_108] +180003F2F: lea rcx, [rsp+180h+var_120] +180003F34: call cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream>::basic_iostream>(std::basic_streambuf> *) +180003F3A: nop +180003F3B: mov rax, [rsp+180h+var_120] +180003F40: movsxd rcx, dword ptr [rax+4] +180003F44: lea r14, off_18000FC80 +180003F4B: mov [rsp+rcx+180h+var_120], r14 +180003F50: mov rax, [rsp+180h+var_120] +180003F55: movsxd rcx, dword ptr [rax+4] +180003F59: lea edx, [rcx-98h] +180003F5F: mov [rsp+rcx+180h+var_124], edx +180003F63: lea rcx, [rsp+180h+var_108] +180003F68: call cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf>::basic_streambuf>(void) +180003F6E: lea rax, off_18000FBD0 +180003F75: mov [rsp+180h+var_108], rax +180003F7A: mov [rbp+80h+var_A0], rsi +180003F7E: mov [rbp+80h+var_98], esi +180003F81: lea rdx, aSerialexceptio; "SerialException " +180003F88: lea rcx, [rsp+180h+var_110] +180003F8D: call sub_180006310 +180003F92: mov rcx, rax +180003F95: lea rdx, aSerialPortAlre; "Serial port already open." +180003F9C: call sub_180006310 +180003FA1: mov rcx, rax +180003FA4: lea rdx, aFailed; " failed." +180003FAB: call sub_180006310 +180003FB0: nop +180003FB1: mov qword ptr [rsp+180h+var_148], rsi +180003FB6: mov edx, 0Fh +180003FBB: mov qword ptr [rsp+180h+var_148+8], rdx +180003FC0: mov byte ptr [rsp+180h+Block], sil +180003FC5: mov [rsp+180h+var_160], 5 +180003FCD: mov ecx, [rbp+80h+var_98] +180003FD0: test cl, 2 +180003FD3: jnz short loc_180003FF6 +180003FD5: mov rax, [rbp+80h+var_C8] +180003FD9: mov r8, [rax] +180003FDC: test r8, r8 +180003FDF: jz short loc_180003FF6 +180003FE1: mov rax, [rbp+80h+var_E8] +180003FE5: mov rdx, [rax] +180003FE8: cmp r8, [rbp+80h+var_A0] +180003FEC: cmovb r8, [rbp+80h+var_A0] +180003FF1: sub r8, rdx +180003FF4: jmp short loc_18000401B +180003FF6: test cl, 4 +180003FF9: jnz short loc_18000402A +180003FFB: mov rax, [rbp+80h+var_D0] +180003FFF: mov rcx, [rax] +180004002: test rcx, rcx +180004005: jz short loc_18000402A +180004007: mov rax, [rbp+80h+var_F0] +18000400B: mov rdx, [rax]; Src +18000400E: mov rax, [rbp+80h+var_B8] +180004012: movsxd r8, dword ptr [rax] +180004015: sub r8, rdx +180004018: add r8, rcx; Size +18000401B: lea rcx, [rsp+180h+Block]; void * +180004020: call sub_180002610 +180004025: mov rdx, qword ptr [rsp+180h+var_148+8] +18000402A: lea rax, [rsp+180h+Block] +18000402F: cmp rbx, rax +180004032: jz short loc_180004088 +180004034: mov rdx, [rbx+18h] +180004038: cmp rdx, 10h +18000403C: jb short loc_18000406A +18000403E: mov rcx, [rbx] +180004041: inc rdx +180004044: cmp rdx, 1000h +18000404B: jb short loc_180004065 +18000404D: add rdx, 27h ; ''' +180004051: mov r8, [rcx-8] +180004055: sub rcx, r8 +180004058: lea rax, [rcx-8] +18000405C: cmp rax, 1Fh +180004060: ja short loc_1800040B7 +180004062: mov rcx, r8; Block +180004065: call j_j_free +18000406A: mov qword ptr [rbx+18h], 0Fh +180004072: mov byte ptr [rbx], 0 +180004075: movups xmm0, xmmword ptr [rsp+180h+Block] +18000407A: movups xmmword ptr [rbx], xmm0 +18000407D: movups xmm1, [rsp+180h+var_148] +180004082: movups xmmword ptr [rbx+10h], xmm1 +180004086: jmp short loc_1800040C4 +180004088: cmp rdx, 10h +18000408C: jb short loc_1800040C4 +18000408E: inc rdx +180004091: mov rcx, [rsp+180h+Block]; Block +180004096: mov rax, rcx +180004099: cmp rdx, 1000h +1800040A0: jb short loc_1800040BE +1800040A2: add rdx, 27h ; ''' +1800040A6: mov rcx, [rcx-8] +1800040AA: sub rax, rcx +1800040AD: add rax, 0FFFFFFFFFFFFFFF8h +1800040B1: cmp rax, 1Fh +1800040B5: jbe short loc_1800040BE +1800040B7: call cs:_invalid_parameter_noinfo_noreturn +1800040BD: int 3; Trap to Debugger +1800040BE: call j_j_free +1800040C3: nop +1800040C4: mov rax, [rsp+180h+var_120] +1800040C9: movsxd rcx, dword ptr [rax+4] +1800040CD: mov [rsp+rcx+180h+var_120], r14 +1800040D2: mov rcx, [rsp+180h+var_120] +1800040D7: movsxd rdx, dword ptr [rcx+4] +1800040DB: lea r8d, [rdx-98h] +1800040E2: mov [rsp+rdx+180h+var_124], r8d +1800040E7: lea rcx, [rsp+180h+var_108] +1800040EC: call sub_180005F90 +1800040F1: lea rcx, [rbp+80h+var_100] +1800040F5: call cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream>::~basic_iostream>(void) +1800040FB: lea rcx, [rbp+80h+var_88] +1800040FF: call cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios>::~basic_ios>(void) +180004105: nop +180004106: mov rax, rdi +180004109: mov rcx, [rbp+80h+var_20] +18000410D: xor rcx, rsp; StackCookie +180004110: call __security_check_cookie +180004115: lea r11, [rsp+180h+var_10] +18000411D: mov rbx, [r11+28h] +180004121: mov rsi, [r11+30h] +180004125: mov rsp, r11 +180004128: pop r14 +18000412A: pop rdi +18000412B: pop rbp +18000412C: retn + +### FUNC 180004130 - 180004165 (53 bytes) name=sub_180004130 +180004130: mov [rsp+arg_0], rcx +180004135: push rbx +180004136: sub rsp, 20h +18000413A: mov rbx, rcx +18000413D: xorps xmm0, xmm0 +180004140: movups xmmword ptr [rcx+8], xmm0 +180004144: lea rax, off_18000FC90 +18000414B: mov [rcx], rax +18000414E: add rdx, 18h +180004152: add rcx, 18h +180004156: call sub_180002E60 +18000415B: nop +18000415C: mov rax, rbx +18000415F: add rsp, 20h +180004163: pop rbx +180004164: retn + +### FUNC 180004170 - 1800041EF (127 bytes) name=sub_180004170 +180004170: push rbx +180004172: sub rsp, 20h +180004176: lea rax, off_18000FC90 +18000417D: mov rbx, rcx +180004180: mov [rcx], rax +180004183: mov rdx, [rcx+30h] +180004187: cmp rdx, 10h +18000418B: jb short loc_1800041BA +18000418D: mov rcx, [rcx+18h] +180004191: inc rdx +180004194: cmp rdx, 1000h +18000419B: jb short loc_1800041B5 +18000419D: mov r8, [rcx-8] +1800041A1: add rdx, 27h ; ''' +1800041A5: sub rcx, r8 +1800041A8: lea rax, [rcx-8] +1800041AC: cmp rax, 1Fh +1800041B0: ja short loc_1800041E8 +1800041B2: mov rcx, r8; Block +1800041B5: call j_j_free +1800041BA: lea rax, off_18000F6D8 +1800041C1: mov qword ptr [rbx+28h], 0 +1800041C9: mov qword ptr [rbx+30h], 0Fh +1800041D1: lea rcx, [rbx+8] +1800041D5: mov byte ptr [rbx+18h], 0 +1800041D9: mov [rbx], rax +1800041DC: add rsp, 20h +1800041E0: pop rbx +1800041E1: jmp cs:__std_exception_destroy +1800041E8: call cs:_invalid_parameter_noinfo_noreturn +1800041EE: db 0CCh + +### FUNC 1800041F0 - 1800041FF (15 bytes) name=sub_1800041F0 +1800041F0: cmp qword ptr [rcx+30h], 10h +1800041F5: lea rax, [rcx+18h] +1800041F9: jb short locret_1800041FE +1800041FB: mov rax, [rax] +1800041FE: retn + +### FUNC 180004200 - 1800042A0 (160 bytes) name=sub_180004200 +180004200: mov [rsp+arg_8], rbx +180004205: push rdi +180004206: sub rsp, 20h +18000420A: lea rax, off_18000FC90 +180004211: mov edi, edx +180004213: mov [rcx], rax +180004216: mov rbx, rcx +180004219: mov rdx, [rcx+30h] +18000421D: cmp rdx, 10h +180004221: jb short loc_180004250 +180004223: mov rcx, [rcx+18h] +180004227: inc rdx +18000422A: cmp rdx, 1000h +180004231: jb short loc_18000424B +180004233: mov r8, [rcx-8] +180004237: add rdx, 27h ; ''' +18000423B: sub rcx, r8 +18000423E: lea rax, [rcx-8] +180004242: cmp rax, 1Fh +180004246: ja short loc_180004299 +180004248: mov rcx, r8; Block +18000424B: call j_j_free +180004250: lea rax, off_18000F6D8 +180004257: mov qword ptr [rbx+28h], 0 +18000425F: mov qword ptr [rbx+30h], 0Fh +180004267: lea rcx, [rbx+8] +18000426B: mov byte ptr [rbx+18h], 0 +18000426F: mov [rbx], rax +180004272: call cs:__std_exception_destroy +180004278: test dil, 1 +18000427C: jz short loc_18000428B +18000427E: mov edx, 38h ; '8' +180004283: mov rcx, rbx; Block +180004286: call j_j_free +18000428B: mov rax, rbx +18000428E: mov rbx, [rsp+28h+arg_8] +180004293: add rsp, 20h +180004297: pop rdi +180004298: retn +180004299: call cs:_invalid_parameter_noinfo_noreturn +18000429F: align 20h + +### FUNC 1800042A0 - 1800042FF (95 bytes) name=sub_1800042A0 +1800042A0: push rbx +1800042A2: sub rsp, 20h +1800042A6: mov rax, [rcx] +1800042A9: lea rbx, [rcx+98h] +1800042B0: lea rcx, [rbx-80h] +1800042B4: movsxd rdx, dword ptr [rax+4] +1800042B8: lea rax, off_18000FC80 +1800042BF: mov [rdx+rbx-98h], rax +1800042C7: mov rax, [rbx-98h] +1800042CE: movsxd rdx, dword ptr [rax+4] +1800042D2: lea r8d, [rdx-98h] +1800042D9: mov [rdx+rbx-9Ch], r8d +1800042E1: call sub_180005F90 +1800042E6: lea rcx, [rbx-78h] +1800042EA: call cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream>::~basic_iostream>(void) +1800042F0: mov rcx, rbx +1800042F3: add rsp, 20h +1800042F7: pop rbx +1800042F8: jmp cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios>::~basic_ios>(void) + +### FUNC 180004300 - 18000430D (13 bytes) name=sub_180004300 +180004300: xor edx, edx; Val +180004302: mov r8d, 0F8h; Size +180004308: jmp memset + +### FUNC 180004310 - 18000465D (845 bytes) name=sub_180004310 +180004310: mov [rsp-8+arg_10], rbx +180004315: push rbp +180004316: push rsi +180004317: push rdi +180004318: push r12 +18000431A: push r13 +18000431C: push r14 +18000431E: push r15 +180004320: lea rbp, [rsp-80h] +180004325: sub rsp, 180h +18000432C: mov rax, cs:__security_cookie +180004333: xor rax, rsp +180004336: mov [rbp+0B0h+var_40], rax +18000433A: mov rdi, r9 +18000433D: mov ebx, r8d +180004340: mov rsi, rdx +180004343: mov r15, rcx +180004346: mov [rsp+1B0h+var_160], rcx +18000434B: mov [rsp+1B0h+var_148], rdx +180004350: xor r12d, r12d +180004353: mov [rsp+1B0h+var_190], r12d +180004358: xorps xmm0, xmm0 +18000435B: movups xmmword ptr [rcx+8], xmm0 +18000435F: lea rax, off_18000FC68 +180004366: mov [rcx], rax +180004369: add rcx, 18h +18000436D: call sub_180002E60 +180004372: nop +180004373: mov [r15+38h], ebx +180004377: lea rbx, [r15+40h] +18000437B: mov [rbx+10h], r12 +18000437F: mov qword ptr [rbx+18h], 0Fh +180004387: mov [rbx], r12b +18000438A: mov [r15+60h], r12d +18000438E: xor edx, edx; Val +180004390: mov r8d, 0F8h; Size +180004396: lea rcx, [rsp+1B0h+var_140]; void * +18000439B: call memset +1800043A0: lea rax, unk_18000FCB8 +1800043A7: mov [rsp+1B0h+var_140], rax +1800043AC: lea rax, unk_18000FBA8 +1800043B3: mov [rbp+0B0h+var_130], rax +1800043B7: lea rcx, [rbp+0B0h+var_A8] +1800043BB: call cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios>::basic_ios>(void) +1800043C1: nop +1800043C2: mov [rsp+1B0h+var_190], 1 +1800043CA: xor r8d, r8d +1800043CD: lea rdx, [rbp+0B0h+var_128] +1800043D1: lea rcx, [rsp+1B0h+var_140] +1800043D6: call cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream>::basic_iostream>(std::basic_streambuf> *) +1800043DC: nop +1800043DD: mov rax, [rsp+1B0h+var_140] +1800043E2: movsxd rcx, dword ptr [rax+4] +1800043E6: lea r13, off_18000FC80 +1800043ED: mov [rsp+rcx+1B0h+var_140], r13 +1800043F2: mov rax, [rsp+1B0h+var_140] +1800043F7: movsxd rcx, dword ptr [rax+4] +1800043FB: lea edx, [rcx-98h] +180004401: mov dword ptr [rsp+rcx+1B0h+var_148+4], edx +180004405: lea rcx, [rbp+0B0h+var_128] +180004409: call cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf>::basic_streambuf>(void) +18000440F: lea rax, off_18000FBD0 +180004416: mov [rbp+0B0h+var_128], rax +18000441A: mov [rbp+0B0h+var_C0], r12 +18000441E: mov [rbp+0B0h+var_B8], r12d +180004422: lea rdx, aIoException; "IO Exception: " +180004429: lea rcx, [rbp+0B0h+var_130] +18000442D: call sub_180006310 +180004432: mov rcx, rax +180004435: mov rdx, rdi +180004438: call sub_180006310 +18000443D: lea rdx, aFile; ", file " +180004444: lea rcx, [rbp+0B0h+var_130] +180004448: call sub_180006310 +18000444D: lea rdx, [r15+18h] +180004451: cmp qword ptr [r15+30h], 10h +180004456: jb short loc_18000445C +180004458: mov rdx, [r15+18h] +18000445C: mov r8, [r15+28h] +180004460: mov rcx, rax +180004463: call sub_180006920 +180004468: lea rdx, aLine; ", line " +18000446F: mov rcx, rax +180004472: call sub_180006310 +180004477: mov rcx, rax +18000447A: mov edx, [r15+38h] +18000447E: call cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z; std::basic_ostream>::operator<<(int) +180004484: mov rcx, rax +180004487: lea rdx, asc_18000F83C; "." +18000448E: call sub_180006310 +180004493: nop +180004494: mov qword ptr [rsp+1B0h+var_178], r12 +180004499: mov ecx, 0Fh +18000449E: mov qword ptr [rsp+1B0h+var_178+8], rcx +1800044A3: mov byte ptr [rsp+1B0h+Block], 0 +1800044A8: mov [rsp+1B0h+var_190], 5 +1800044B0: mov edx, [rbp+0B0h+var_B8] +1800044B3: test dl, 2 +1800044B6: jnz short loc_1800044D9 +1800044B8: mov rax, [rbp+0B0h+var_E8] +1800044BC: mov r8, [rax] +1800044BF: test r8, r8 +1800044C2: jz short loc_1800044D9 +1800044C4: mov rax, [rbp+0B0h+var_108] +1800044C8: mov rdx, [rax] +1800044CB: cmp r8, [rbp+0B0h+var_C0] +1800044CF: cmovb r8, [rbp+0B0h+var_C0] +1800044D4: sub r8, rdx +1800044D7: jmp short loc_1800044FE +1800044D9: test dl, 4 +1800044DC: jnz short loc_18000450D +1800044DE: mov rax, [rbp+0B0h+var_F0] +1800044E2: mov r9, [rax] +1800044E5: test r9, r9 +1800044E8: jz short loc_18000450D +1800044EA: mov rax, [rbp+0B0h+var_110] +1800044EE: mov rdx, [rax]; Src +1800044F1: mov rax, [rbp+0B0h+var_D8] +1800044F5: movsxd r8, dword ptr [rax] +1800044F8: sub r8, rdx +1800044FB: add r8, r9; Size +1800044FE: lea rcx, [rsp+1B0h+Block]; void * +180004503: call sub_180002610 +180004508: mov rcx, qword ptr [rsp+1B0h+var_178+8] +18000450D: lea rax, [rsp+1B0h+Block] +180004512: cmp rbx, rax +180004515: jz short loc_18000456B +180004517: mov rdx, [rbx+18h] +18000451B: cmp rdx, 10h +18000451F: jb short loc_18000454D +180004521: mov rcx, [rbx] +180004524: inc rdx +180004527: cmp rdx, 1000h +18000452E: jb short loc_180004548 +180004530: add rdx, 27h ; ''' +180004534: mov r8, [rcx-8] +180004538: sub rcx, r8 +18000453B: lea rax, [rcx-8] +18000453F: cmp rax, 1Fh +180004543: ja short loc_18000459B +180004545: mov rcx, r8; Block +180004548: call j_j_free +18000454D: mov qword ptr [rbx+18h], 0Fh +180004555: mov byte ptr [rbx], 0 +180004558: movups xmm0, xmmword ptr [rsp+1B0h+Block] +18000455D: movups xmmword ptr [rbx], xmm0 +180004560: movups xmm1, [rsp+1B0h+var_178] +180004565: movups xmmword ptr [rbx+10h], xmm1 +180004569: jmp short loc_1800045A8 +18000456B: cmp rcx, 10h +18000456F: jb short loc_1800045A8 +180004571: lea rdx, [rcx+1] +180004575: mov rcx, [rsp+1B0h+Block]; Block +18000457A: mov rax, rcx +18000457D: cmp rdx, 1000h +180004584: jb short loc_1800045A2 +180004586: add rdx, 27h ; ''' +18000458A: mov rcx, [rcx-8] +18000458E: sub rax, rcx +180004591: add rax, 0FFFFFFFFFFFFFFF8h +180004595: cmp rax, 1Fh +180004599: jbe short loc_1800045A2 +18000459B: call cs:_invalid_parameter_noinfo_noreturn +1800045A1: int 3; Trap to Debugger +1800045A2: call j_j_free +1800045A7: nop +1800045A8: mov rax, [rsp+1B0h+var_140] +1800045AD: movsxd rcx, dword ptr [rax+4] +1800045B1: mov [rsp+rcx+1B0h+var_140], r13 +1800045B6: mov rax, [rsp+1B0h+var_140] +1800045BB: movsxd rcx, dword ptr [rax+4] +1800045BF: lea edx, [rcx-98h] +1800045C5: mov dword ptr [rsp+rcx+1B0h+var_148+4], edx +1800045C9: lea rcx, [rbp+0B0h+var_128] +1800045CD: call sub_180005F90 +1800045D2: lea rcx, [rbp+0B0h+var_120] +1800045D6: call cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream>::~basic_iostream>(void) +1800045DC: lea rcx, [rbp+0B0h+var_A8] +1800045E0: call cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios>::~basic_ios>(void) +1800045E6: nop +1800045E7: mov rdx, [rsi+18h] +1800045EB: cmp rdx, 10h +1800045EF: jb short loc_18000461D +1800045F1: inc rdx +1800045F4: mov rcx, [rsi] +1800045F7: cmp rdx, 1000h +1800045FE: jb short loc_180004618 +180004600: add rdx, 27h ; ''' +180004604: mov r8, [rcx-8] +180004608: sub rcx, r8 +18000460B: lea rax, [rcx-8] +18000460F: cmp rax, 1Fh +180004613: ja short loc_180004656 +180004615: mov rcx, r8; Block +180004618: call j_j_free +18000461D: mov [rsi+10h], r12 +180004621: mov qword ptr [rsi+18h], 0Fh +180004629: mov byte ptr [rsi], 0 +18000462C: mov rax, r15 +18000462F: mov rcx, [rbp+0B0h+var_40] +180004633: xor rcx, rsp; StackCookie +180004636: call __security_check_cookie +18000463B: mov rbx, [rsp+1B0h+arg_10] +180004643: add rsp, 180h +18000464A: pop r15 +18000464C: pop r14 +18000464E: pop r13 +180004650: pop r12 +180004652: pop rdi +180004653: pop rsi +180004654: pop rbp +180004655: retn +180004656: call cs:_invalid_parameter_noinfo_noreturn +18000465C: db 0CCh + +### FUNC 180004660 - 18000472E (206 bytes) name=sub_180004660 +180004660: push rbx +180004662: sub rsp, 20h +180004666: lea rax, off_18000FC68 +18000466D: mov rbx, rcx +180004670: mov [rcx], rax +180004673: mov rdx, [rcx+58h] +180004677: cmp rdx, 10h +18000467B: jb short loc_1800046AE +18000467D: mov rcx, [rcx+40h] +180004681: inc rdx +180004684: cmp rdx, 1000h +18000468B: jb short loc_1800046A9 +18000468D: mov r8, [rcx-8] +180004691: add rdx, 27h ; ''' +180004695: sub rcx, r8 +180004698: lea rax, [rcx-8] +18000469C: cmp rax, 1Fh +1800046A0: ja loc_180004727 +1800046A6: mov rcx, r8; Block +1800046A9: call j_j_free +1800046AE: mov qword ptr [rbx+50h], 0 +1800046B6: mov qword ptr [rbx+58h], 0Fh +1800046BE: mov byte ptr [rbx+40h], 0 +1800046C2: mov rdx, [rbx+30h] +1800046C6: cmp rdx, 10h +1800046CA: jb short loc_1800046F9 +1800046CC: mov rcx, [rbx+18h] +1800046D0: inc rdx +1800046D3: cmp rdx, 1000h +1800046DA: jb short loc_1800046F4 +1800046DC: mov r8, [rcx-8] +1800046E0: add rdx, 27h ; ''' +1800046E4: sub rcx, r8 +1800046E7: lea rax, [rcx-8] +1800046EB: cmp rax, 1Fh +1800046EF: ja short loc_180004727 +1800046F1: mov rcx, r8; Block +1800046F4: call j_j_free +1800046F9: lea rax, off_18000F6D8 +180004700: mov qword ptr [rbx+28h], 0 +180004708: mov qword ptr [rbx+30h], 0Fh +180004710: lea rcx, [rbx+8] +180004714: mov byte ptr [rbx+18h], 0 +180004718: mov [rbx], rax +18000471B: add rsp, 20h +18000471F: pop rbx +180004720: jmp cs:__std_exception_destroy +180004727: call cs:_invalid_parameter_noinfo_noreturn +18000472D: db 0CCh + +### FUNC 180004730 - 180004791 (97 bytes) name=sub_180004730 +180004730: mov [rsp+arg_8], rbx +180004735: mov [rsp+arg_0], rcx +18000473A: push rdi +18000473B: sub rsp, 20h +18000473F: mov rbx, rdx +180004742: mov rdi, rcx +180004745: xorps xmm0, xmm0 +180004748: movups xmmword ptr [rcx+8], xmm0 +18000474C: lea rax, off_18000FC68 +180004753: mov [rcx], rax +180004756: mov qword ptr [rcx+28h], 0 +18000475E: mov qword ptr [rcx+30h], 0Fh +180004766: mov byte ptr [rcx+18h], 0 +18000476A: mov eax, [rdx+38h] +18000476D: mov [rcx+38h], eax +180004770: add rdx, 40h ; '@' +180004774: add rcx, 40h ; '@' +180004778: call sub_180002E60 +18000477D: mov eax, [rbx+60h] +180004780: mov [rdi+60h], eax +180004783: mov rax, rdi +180004786: mov rbx, [rsp+28h+arg_8] +18000478B: add rsp, 20h +18000478F: pop rdi +180004790: retn + +### FUNC 1800047A0 - 1800047AF (15 bytes) name=sub_1800047A0 +1800047A0: cmp qword ptr [rcx+58h], 10h +1800047A5: lea rax, [rcx+40h] +1800047A9: jb short locret_1800047AE +1800047AB: mov rax, [rax] +1800047AE: retn + +### FUNC 1800047B0 - 18000489F (239 bytes) name=sub_1800047B0 +1800047B0: mov [rsp+arg_8], rbx +1800047B5: push rdi +1800047B6: sub rsp, 20h +1800047BA: lea rax, off_18000FC68 +1800047C1: mov edi, edx +1800047C3: mov [rcx], rax +1800047C6: mov rbx, rcx +1800047C9: mov rdx, [rcx+58h] +1800047CD: cmp rdx, 10h +1800047D1: jb short loc_180004804 +1800047D3: mov rcx, [rcx+40h] +1800047D7: inc rdx +1800047DA: cmp rdx, 1000h +1800047E1: jb short loc_1800047FF +1800047E3: mov r8, [rcx-8] +1800047E7: add rdx, 27h ; ''' +1800047EB: sub rcx, r8 +1800047EE: lea rax, [rcx-8] +1800047F2: cmp rax, 1Fh +1800047F6: ja loc_180004898 +1800047FC: mov rcx, r8; Block +1800047FF: call j_j_free +180004804: mov qword ptr [rbx+50h], 0 +18000480C: mov qword ptr [rbx+58h], 0Fh +180004814: mov byte ptr [rbx+40h], 0 +180004818: mov rdx, [rbx+30h] +18000481C: cmp rdx, 10h +180004820: jb short loc_18000484F +180004822: mov rcx, [rbx+18h] +180004826: inc rdx +180004829: cmp rdx, 1000h +180004830: jb short loc_18000484A +180004832: mov r8, [rcx-8] +180004836: add rdx, 27h ; ''' +18000483A: sub rcx, r8 +18000483D: lea rax, [rcx-8] +180004841: cmp rax, 1Fh +180004845: ja short loc_180004898 +180004847: mov rcx, r8; Block +18000484A: call j_j_free +18000484F: lea rax, off_18000F6D8 +180004856: mov qword ptr [rbx+28h], 0 +18000485E: mov qword ptr [rbx+30h], 0Fh +180004866: lea rcx, [rbx+8] +18000486A: mov byte ptr [rbx+18h], 0 +18000486E: mov [rbx], rax +180004871: call cs:__std_exception_destroy +180004877: test dil, 1 +18000487B: jz short loc_18000488A +18000487D: mov edx, 68h ; 'h' +180004882: mov rcx, rbx; Block +180004885: call j_j_free +18000488A: mov rax, rbx +18000488D: mov rbx, [rsp+28h+arg_8] +180004892: add rsp, 20h +180004896: pop rdi +180004897: retn +180004898: call cs:_invalid_parameter_noinfo_noreturn +18000489E: db 0CCh + +### FUNC 1800048A0 - 180004B3C (668 bytes) name=sub_1800048A0 +1800048A0: mov [rsp-8+arg_10], rbx +1800048A5: push rbp +1800048A6: push rsi +1800048A7: push rdi +1800048A8: push r14 +1800048AA: push r15 +1800048AC: lea rbp, [rsp-70h] +1800048B1: sub rsp, 170h +1800048B8: mov rax, cs:__security_cookie +1800048BF: xor rax, rsp +1800048C2: mov [rbp+90h+var_30], rax +1800048C6: mov rbx, rdx +1800048C9: mov rsi, rcx +1800048CC: mov [rsp+190h+var_148], rcx +1800048D1: xor r14d, r14d +1800048D4: mov [rsp+190h+var_170], r14d +1800048D9: xorps xmm0, xmm0 +1800048DC: movups xmmword ptr [rcx+8], xmm0 +1800048E0: lea rax, off_18000FCA8 +1800048E7: mov [rcx], rax +1800048EA: lea rdi, [rcx+18h] +1800048EE: mov [rdi+10h], r14 +1800048F2: mov qword ptr [rdi+18h], 0Fh +1800048FA: mov [rdi], r14b +1800048FD: xor edx, edx; Val +1800048FF: mov r8d, 0F8h; Size +180004905: lea rcx, [rsp+190h+var_130]; void * +18000490A: call memset +18000490F: lea rax, unk_18000FCB8 +180004916: mov [rsp+190h+var_130], rax +18000491B: lea rax, unk_18000FBA8 +180004922: mov [rsp+190h+var_120], rax +180004927: lea rcx, [rbp+90h+var_98] +18000492B: call cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios>::basic_ios>(void) +180004931: nop +180004932: mov [rsp+190h+var_170], 1 +18000493A: xor r8d, r8d +18000493D: lea rdx, [rsp+190h+var_118] +180004942: lea rcx, [rsp+190h+var_130] +180004947: call cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream>::basic_iostream>(std::basic_streambuf> *) +18000494D: nop +18000494E: mov rax, [rsp+190h+var_130] +180004953: movsxd rcx, dword ptr [rax+4] +180004957: lea r15, off_18000FC80 +18000495E: mov [rsp+rcx+190h+var_130], r15 +180004963: mov rax, [rsp+190h+var_130] +180004968: movsxd rcx, dword ptr [rax+4] +18000496C: lea edx, [rcx-98h] +180004972: mov [rsp+rcx+190h+var_134], edx +180004976: lea rcx, [rsp+190h+var_118] +18000497B: call cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf>::basic_streambuf>(void) +180004981: lea rax, off_18000FBD0 +180004988: mov [rsp+190h+var_118], rax +18000498D: mov [rbp+90h+var_B0], r14 +180004991: mov [rbp+90h+var_A8], r14d +180004995: lea rdx, aPortnotopenede; "PortNotOpenedException " +18000499C: lea rcx, [rsp+190h+var_120] +1800049A1: call sub_180006310 +1800049A6: mov rcx, rax +1800049A9: mov rdx, rbx +1800049AC: call sub_180006310 +1800049B1: mov rcx, rax +1800049B4: lea rdx, aFailed; " failed." +1800049BB: call sub_180006310 +1800049C0: nop +1800049C1: mov qword ptr [rsp+190h+var_158], r14 +1800049C6: mov edx, 0Fh +1800049CB: mov qword ptr [rsp+190h+var_158+8], rdx +1800049D0: mov byte ptr [rsp+190h+Block], r14b +1800049D5: mov [rsp+190h+var_170], 5 +1800049DD: mov ecx, [rbp+90h+var_A8] +1800049E0: test cl, 2 +1800049E3: jnz short loc_180004A06 +1800049E5: mov rax, [rbp+90h+var_D8] +1800049E9: mov r8, [rax] +1800049EC: test r8, r8 +1800049EF: jz short loc_180004A06 +1800049F1: mov rax, [rbp+90h+var_F8] +1800049F5: mov rdx, [rax] +1800049F8: cmp r8, [rbp+90h+var_B0] +1800049FC: cmovb r8, [rbp+90h+var_B0] +180004A01: sub r8, rdx +180004A04: jmp short loc_180004A2B +180004A06: test cl, 4 +180004A09: jnz short loc_180004A3A +180004A0B: mov rax, [rbp+90h+var_E0] +180004A0F: mov rcx, [rax] +180004A12: test rcx, rcx +180004A15: jz short loc_180004A3A +180004A17: mov rax, [rbp+90h+var_100] +180004A1B: mov rdx, [rax]; Src +180004A1E: mov rax, [rbp+90h+var_C8] +180004A22: movsxd r8, dword ptr [rax] +180004A25: sub r8, rdx +180004A28: add r8, rcx; Size +180004A2B: lea rcx, [rsp+190h+Block]; void * +180004A30: call sub_180002610 +180004A35: mov rdx, qword ptr [rsp+190h+var_158+8] +180004A3A: lea rax, [rsp+190h+Block] +180004A3F: cmp rdi, rax +180004A42: jz short loc_180004A98 +180004A44: mov rdx, [rdi+18h] +180004A48: cmp rdx, 10h +180004A4C: jb short loc_180004A7A +180004A4E: mov rcx, [rdi] +180004A51: inc rdx +180004A54: cmp rdx, 1000h +180004A5B: jb short loc_180004A75 +180004A5D: add rdx, 27h ; ''' +180004A61: mov r8, [rcx-8] +180004A65: sub rcx, r8 +180004A68: lea rax, [rcx-8] +180004A6C: cmp rax, 1Fh +180004A70: ja short loc_180004AC7 +180004A72: mov rcx, r8; Block +180004A75: call j_j_free +180004A7A: mov qword ptr [rdi+18h], 0Fh +180004A82: mov byte ptr [rdi], 0 +180004A85: movups xmm0, xmmword ptr [rsp+190h+Block] +180004A8A: movups xmmword ptr [rdi], xmm0 +180004A8D: movups xmm1, [rsp+190h+var_158] +180004A92: movups xmmword ptr [rdi+10h], xmm1 +180004A96: jmp short loc_180004AD4 +180004A98: cmp rdx, 10h +180004A9C: jb short loc_180004AD4 +180004A9E: inc rdx +180004AA1: mov rcx, [rsp+190h+Block]; Block +180004AA6: mov rax, rcx +180004AA9: cmp rdx, 1000h +180004AB0: jb short loc_180004ACE +180004AB2: add rdx, 27h ; ''' +180004AB6: mov rcx, [rcx-8] +180004ABA: sub rax, rcx +180004ABD: add rax, 0FFFFFFFFFFFFFFF8h +180004AC1: cmp rax, 1Fh +180004AC5: jbe short loc_180004ACE +180004AC7: call cs:_invalid_parameter_noinfo_noreturn +180004ACD: int 3; Trap to Debugger +180004ACE: call j_j_free +180004AD3: nop +180004AD4: mov rax, [rsp+190h+var_130] +180004AD9: movsxd rcx, dword ptr [rax+4] +180004ADD: mov [rsp+rcx+190h+var_130], r15 +180004AE2: mov rcx, [rsp+190h+var_130] +180004AE7: movsxd rdx, dword ptr [rcx+4] +180004AEB: lea r8d, [rdx-98h] +180004AF2: mov [rsp+rdx+190h+var_134], r8d +180004AF7: lea rcx, [rsp+190h+var_118] +180004AFC: call sub_180005F90 +180004B01: lea rcx, [rbp+90h+var_110] +180004B05: call cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream>::~basic_iostream>(void) +180004B0B: lea rcx, [rbp+90h+var_98] +180004B0F: call cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios>::~basic_ios>(void) +180004B15: nop +180004B16: mov rax, rsi +180004B19: mov rcx, [rbp+90h+var_30] +180004B1D: xor rcx, rsp; StackCookie +180004B20: call __security_check_cookie +180004B25: mov rbx, [rsp+190h+arg_10] +180004B2D: add rsp, 170h +180004B34: pop r15 +180004B36: pop r14 +180004B38: pop rdi +180004B39: pop rsi +180004B3A: pop rbp +180004B3B: retn + +### FUNC 180004B40 - 180004B75 (53 bytes) name=sub_180004B40 +180004B40: mov [rsp+arg_0], rcx +180004B45: push rbx +180004B46: sub rsp, 20h +180004B4A: mov rbx, rcx +180004B4D: xorps xmm0, xmm0 +180004B50: movups xmmword ptr [rcx+8], xmm0 +180004B54: lea rax, off_18000FCA8 +180004B5B: mov [rcx], rax +180004B5E: add rdx, 18h +180004B62: add rcx, 18h +180004B66: call sub_180002E60 +180004B6B: nop +180004B6C: mov rax, rbx +180004B6F: add rsp, 20h +180004B73: pop rbx +180004B74: retn + +### FUNC 180004B80 - 180004BFF (127 bytes) name=sub_180004B80 +180004B80: push rbx +180004B82: sub rsp, 20h +180004B86: lea rax, off_18000FCA8 +180004B8D: mov rbx, rcx +180004B90: mov [rcx], rax +180004B93: mov rdx, [rcx+30h] +180004B97: cmp rdx, 10h +180004B9B: jb short loc_180004BCA +180004B9D: mov rcx, [rcx+18h] +180004BA1: inc rdx +180004BA4: cmp rdx, 1000h +180004BAB: jb short loc_180004BC5 +180004BAD: mov r8, [rcx-8] +180004BB1: add rdx, 27h ; ''' +180004BB5: sub rcx, r8 +180004BB8: lea rax, [rcx-8] +180004BBC: cmp rax, 1Fh +180004BC0: ja short loc_180004BF8 +180004BC2: mov rcx, r8; Block +180004BC5: call j_j_free +180004BCA: lea rax, off_18000F6D8 +180004BD1: mov qword ptr [rbx+28h], 0 +180004BD9: mov qword ptr [rbx+30h], 0Fh +180004BE1: lea rcx, [rbx+8] +180004BE5: mov byte ptr [rbx+18h], 0 +180004BE9: mov [rbx], rax +180004BEC: add rsp, 20h +180004BF0: pop rbx +180004BF1: jmp cs:__std_exception_destroy +180004BF8: call cs:_invalid_parameter_noinfo_noreturn +180004BFE: db 0CCh + +### FUNC 180004C00 - 180004CA0 (160 bytes) name=sub_180004C00 +180004C00: mov [rsp+arg_8], rbx +180004C05: push rdi +180004C06: sub rsp, 20h +180004C0A: lea rax, off_18000FCA8 +180004C11: mov edi, edx +180004C13: mov [rcx], rax +180004C16: mov rbx, rcx +180004C19: mov rdx, [rcx+30h] +180004C1D: cmp rdx, 10h +180004C21: jb short loc_180004C50 +180004C23: mov rcx, [rcx+18h] +180004C27: inc rdx +180004C2A: cmp rdx, 1000h +180004C31: jb short loc_180004C4B +180004C33: mov r8, [rcx-8] +180004C37: add rdx, 27h ; ''' +180004C3B: sub rcx, r8 +180004C3E: lea rax, [rcx-8] +180004C42: cmp rax, 1Fh +180004C46: ja short loc_180004C99 +180004C48: mov rcx, r8; Block +180004C4B: call j_j_free +180004C50: lea rax, off_18000F6D8 +180004C57: mov qword ptr [rbx+28h], 0 +180004C5F: mov qword ptr [rbx+30h], 0Fh +180004C67: lea rcx, [rbx+8] +180004C6B: mov byte ptr [rbx+18h], 0 +180004C6F: mov [rbx], rax +180004C72: call cs:__std_exception_destroy +180004C78: test dil, 1 +180004C7C: jz short loc_180004C8B +180004C7E: mov edx, 38h ; '8' +180004C83: mov rcx, rbx; Block +180004C86: call j_j_free +180004C8B: mov rax, rbx +180004C8E: mov rbx, [rsp+28h+arg_8] +180004C93: add rsp, 20h +180004C97: pop rdi +180004C98: retn +180004C99: call cs:_invalid_parameter_noinfo_noreturn +180004C9F: align 20h + +### FUNC 180004CA0 - 180004F8A (746 bytes) name=sub_180004CA0 +180004CA0: mov [rsp+arg_10], rbx +180004CA5: mov [rsp+arg_18], rbp +180004CAA: push rsi +180004CAB: push rdi +180004CAC: push r12 +180004CAE: push r14 +180004CB0: push r15 +180004CB2: sub rsp, 40h +180004CB6: mov rdi, rdx +180004CB9: mov rbx, rcx +180004CBC: mov [rsp+68h+var_30], rcx +180004CC1: xor esi, esi +180004CC3: mov [rsp+68h+var_38], esi +180004CC7: mov ecx, cs:TlsIndex +180004CCD: mov rax, gs:58h +180004CD6: mov r8d, 4 +180004CDC: mov rdx, [rax+rcx*8] +180004CE0: lea ebp, [rsi+7] +180004CE3: lea r15, Src +180004CEA: mov eax, [r8+rdx] +180004CEE: cmp cs:dword_1800160E0, eax +180004CF4: jle short loc_180004D4C +180004CF6: lea rcx, dword_1800160E0 +180004CFD: call _Init_thread_header +180004D02: cmp cs:dword_1800160E0, 0FFFFFFFFh +180004D09: jnz short loc_180004D4C +180004D0B: mov cs:qword_1800160D0, rsi +180004D12: mov cs:qword_1800160D8, rbp +180004D19: mov word ptr cs:Src, si +180004D20: lea r8d, [rsi+4] +180004D24: lea rdx, asc_18000F878; "\\\\.\\" +180004D2B: mov rcx, r15; void * +180004D2E: call sub_180003830 +180004D33: lea rcx, sub_18000E680; void (__cdecl *)() +180004D3A: call atexit +180004D3F: nop +180004D40: lea rcx, dword_1800160E0 +180004D47: call _Init_thread_footer +180004D4C: mov rcx, r15 +180004D4F: cmp cs:qword_1800160D8, 8 +180004D57: cmovnb rcx, cs:Src +180004D5F: mov r8, rdi +180004D62: cmp qword ptr [rdi+18h], 8 +180004D67: jb short loc_180004D6C +180004D69: mov r8, [rdi] +180004D6C: mov r9, cs:qword_1800160D0 +180004D73: lea r12, [rdi+10h] +180004D77: mov r10, [r12] +180004D7B: mov rdx, r10 +180004D7E: cmp r9, r10 +180004D81: cmovb rdx, r9 +180004D85: test rdx, rdx +180004D88: jz short loc_180004DA8 +180004D8A: sub r8, rcx +180004D8D: nop dword ptr [rax] +180004D90: movzx eax, word ptr [rcx] +180004D93: cmp [r8+rcx], ax +180004D98: jnz loc_180004E80 +180004D9E: add rcx, 2 +180004DA2: sub rdx, 1 +180004DA6: jnz short loc_180004D90 +180004DA8: cmp r10, r9 +180004DAB: jb loc_180004E80 +180004DB1: ja loc_180004E80 +180004DB7: mov [rbx+10h], rsi +180004DBB: mov [rbx+18h], rsi +180004DBF: mov r14, [r12] +180004DC3: cmp qword ptr [rdi+18h], 8 +180004DC8: jb short loc_180004DCD +180004DCA: mov rdi, [rdi] +180004DCD: cmp r14, 8 +180004DD1: jnb short loc_180004DE6 +180004DD3: movups xmm0, xmmword ptr [rdi] +180004DD6: movups xmmword ptr [rbx], xmm0 +180004DD9: mov [rbx+10h], r14 +180004DDD: mov [rbx+18h], rbp +180004DE1: jmp loc_180004F68 +180004DE6: mov rbp, r14 +180004DE9: or rbp, 7 +180004DED: mov rax, 7FFFFFFFFFFFFFFEh +180004DF7: cmp rbp, rax +180004DFA: cmova rbp, rax +180004DFE: lea rcx, [rbp+1] +180004E02: mov rax, 7FFFFFFFFFFFFFFFh +180004E0C: cmp rcx, rax +180004E0F: ja loc_180004F84 +180004E15: add rcx, rcx; Size +180004E18: cmp rcx, 1000h +180004E1F: jb short loc_180004E50 +180004E21: lea rax, [rcx+27h] +180004E25: cmp rax, rcx +180004E28: jbe loc_180004F84 +180004E2E: mov rcx, rax; Size +180004E31: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180004E36: test rax, rax +180004E39: jz short loc_180004E49 +180004E3B: lea rsi, [rax+27h] +180004E3F: and rsi, 0FFFFFFFFFFFFFFE0h +180004E43: mov [rsi-8], rax +180004E47: jmp short loc_180004E5D +180004E49: call cs:_invalid_parameter_noinfo_noreturn +180004E4F: int 3; Trap to Debugger +180004E50: test rcx, rcx +180004E53: jz short loc_180004E5D +180004E55: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180004E5A: mov rsi, rax +180004E5D: mov [rbx], rsi +180004E60: lea r8, ds:2[r14*2]; Size +180004E68: mov rdx, rdi; Src +180004E6B: mov rcx, rsi; void * +180004E6E: call memcpy +180004E73: mov [rbx+10h], r14 +180004E77: mov [rbx+18h], rbp +180004E7B: jmp loc_180004F68 +180004E80: mov [rbx+10h], rsi +180004E84: mov [rbx+18h], rbp +180004E88: mov [rbx], si +180004E8B: mov [rsp+68h+var_38], 2 +180004E93: mov rdx, cs:qword_1800160D0 +180004E9A: add rdx, [r12] +180004E9E: mov rcx, rbx +180004EA1: call sub_180006860 +180004EA6: cmp cs:qword_1800160D8, 8 +180004EAE: cmovnb r15, cs:Src +180004EB6: mov rdx, cs:qword_1800160D0 +180004EBD: mov rcx, [rbx+10h] +180004EC1: mov r8, [rbx+18h] +180004EC5: mov rax, r8 +180004EC8: sub rax, rcx +180004ECB: cmp rdx, rax +180004ECE: ja short loc_180004EFB +180004ED0: lea rbp, [rcx+rdx] +180004ED4: mov [rbx+10h], rbp +180004ED8: mov r14, rbx +180004EDB: cmp r8, 8 +180004EDF: jb short loc_180004EE4 +180004EE1: mov r14, [rbx] +180004EE4: lea r8, [rdx+rdx]; Size +180004EE8: lea rcx, [r14+rcx*2]; void * +180004EEC: mov rdx, r15; Src +180004EEF: call memmove +180004EF4: mov [r14+rbp*2], si +180004EF9: jmp short loc_180004F0B +180004EFB: mov [rsp+68h+var_48], rdx; __int64 +180004F00: mov r9, r15 +180004F03: mov rcx, rbx; Src +180004F06: call sub_1800066A0 +180004F0B: cmp qword ptr [rdi+18h], 8 +180004F10: jb short loc_180004F15 +180004F12: mov rdi, [rdi] +180004F15: mov rdx, [r12] +180004F19: mov rcx, [rbx+10h] +180004F1D: mov r8, [rbx+18h] +180004F21: mov rax, r8 +180004F24: sub rax, rcx +180004F27: cmp rdx, rax +180004F2A: ja short loc_180004F57 +180004F2C: lea rbp, [rcx+rdx] +180004F30: mov [rbx+10h], rbp +180004F34: mov r14, rbx +180004F37: cmp r8, 8 +180004F3B: jb short loc_180004F40 +180004F3D: mov r14, [rbx] +180004F40: lea r8, [rdx+rdx]; Size +180004F44: lea rcx, [r14+rcx*2]; void * +180004F48: mov rdx, rdi; Src +180004F4B: call memmove +180004F50: mov [r14+rbp*2], si +180004F55: jmp short loc_180004F68 +180004F57: mov [rsp+68h+var_48], rdx; __int64 +180004F5C: mov r9, rdi +180004F5F: mov rcx, rbx; Src +180004F62: call sub_1800066A0 +180004F67: nop +180004F68: mov rax, rbx +180004F6B: lea r11, [rsp+68h+var_28] +180004F70: mov rbx, [r11+40h] +180004F74: mov rbp, [r11+48h] +180004F78: mov rsp, r11 +180004F7B: pop r15 +180004F7D: pop r14 +180004F7F: pop r12 +180004F81: pop rdi +180004F82: pop rsi +180004F83: retn +180004F84: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180004F89: db 0CCh + +### FUNC 180004F90 - 18000503B (171 bytes) name=sub_180004F90 +180004F90: mov [rsp+arg_8], rbx +180004F95: push rdi +180004F96: sub rsp, 20h +180004F9A: mov edi, edx +180004F9C: mov rbx, rcx +180004F9F: lea rax, off_18000FCC8 +180004FA6: mov [rcx], rax +180004FA9: call sub_180005790 +180004FAE: nop +180004FAF: mov rcx, [rbx+60h]; hObject +180004FB3: call cs:CloseHandle +180004FB9: nop +180004FBA: mov rcx, [rbx+68h]; hObject +180004FBE: call cs:CloseHandle +180004FC4: nop +180004FC5: mov rdx, [rbx+20h] +180004FC9: cmp rdx, 8 +180004FCD: jb short loc_180005002 +180004FCF: mov rcx, [rbx+8] +180004FD3: lea rdx, ds:2[rdx*2] +180004FDB: cmp rdx, 1000h +180004FE2: jb short loc_180004FFC +180004FE4: add rdx, 27h ; ''' +180004FE8: mov r8, [rcx-8] +180004FEC: sub rcx, r8 +180004FEF: lea rax, [rcx-8] +180004FF3: cmp rax, 1Fh +180004FF7: ja short loc_180005034 +180004FF9: mov rcx, r8; Block +180004FFC: call j_j_free +180005001: nop +180005002: xor eax, eax +180005004: mov [rbx+18h], rax +180005008: mov qword ptr [rbx+20h], 7 +180005010: mov [rbx+8], ax +180005014: test dil, 1 +180005018: jz short loc_180005026 +18000501A: lea edx, [rax+70h] +18000501D: mov rcx, rbx; Block +180005020: call j_j_free +180005025: nop +180005026: mov rax, rbx +180005029: mov rbx, [rsp+28h+arg_8] +18000502E: add rsp, 20h +180005032: pop rdi +180005033: retn +180005034: call cs:_invalid_parameter_noinfo_noreturn +18000503A: nop + +### FUNC 180005040 - 18000533D (765 bytes) name=sub_180005040 +180005040: mov [rsp-8+arg_8], rbx +180005045: mov [rsp-8+arg_10], rsi +18000504A: mov [rsp-8+arg_18], rdi +18000504F: push rbp +180005050: lea rbp, [rsp-150h] +180005058: sub rsp, 250h +18000505F: mov rax, cs:__security_cookie +180005066: xor rax, rsp +180005069: mov [rbp+150h+var_10], rax +180005070: mov rbx, rcx +180005073: xor esi, esi +180005075: mov [rsp+250h+var_210], esi +180005079: cmp [rcx+18h], rsi +18000507D: jz loc_1800052FE +180005083: cmp byte ptr [rcx+30h], 1 +180005087: jz loc_180005321 +18000508D: lea rdx, [rcx+8]; void * +180005091: lea rcx, [rbp+150h+lpFileName]; Src +180005095: call sub_180004CA0 +18000509A: nop +18000509B: lea rcx, [rbp+150h+lpFileName] +18000509F: cmp [rbp+150h+var_118], 8 +1800050A4: cmovnb rcx, [rbp+150h+lpFileName]; lpFileName +1800050A9: mov [rsp+250h+hTemplateFile], rsi; hTemplateFile +1800050AE: mov [rsp+250h+dwFlagsAndAttributes], 80h; dwFlagsAndAttributes +1800050B6: mov [rsp+250h+dwCreationDisposition], 3; dwCreationDisposition +1800050BE: xor r9d, r9d; lpSecurityAttributes +1800050C1: xor r8d, r8d; dwShareMode +1800050C4: mov edx, 0C0000000h; dwDesiredAccess +1800050C9: call cs:CreateFileW +1800050CF: mov [rbx+28h], rax +1800050D3: cmp rax, 0FFFFFFFFFFFFFFFFh +1800050D7: jnz loc_180005187 +1800050DD: call cs:GetLastError +1800050E3: mov edi, eax +1800050E5: xor edx, edx; Val +1800050E7: mov r8d, 0F8h; Size +1800050ED: lea rcx, [rbp+150h+var_110]; void * +1800050F1: call memset +1800050F6: lea rax, unk_18000FCB8 +1800050FD: mov [rbp+150h+var_110], rax +180005101: lea rax, unk_18000FBA8 +180005108: mov [rbp+150h+var_100], rax +18000510C: lea rcx, [rbp+150h+var_78] +180005113: call cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios>::basic_ios>(void) +180005119: nop +18000511A: mov [rsp+250h+var_210], 1 +180005122: xor r8d, r8d +180005125: lea rdx, [rbp+150h+var_F8] +180005129: lea rcx, [rbp+150h+var_110] +18000512D: call cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream>::basic_iostream>(std::basic_streambuf> *) +180005133: nop +180005134: mov rax, [rbp+150h+var_110] +180005138: movsxd rcx, dword ptr [rax+4] +18000513C: lea rax, off_18000FC80 +180005143: mov [rbp+rcx+150h+var_110], rax +180005148: mov rax, [rbp+150h+var_110] +18000514C: movsxd rcx, dword ptr [rax+4] +180005150: lea edx, [rcx-98h] +180005156: mov dword ptr [rbp+rcx+150h+var_118+4], edx +18000515A: lea rcx, [rbp+150h+var_F8] +18000515E: call cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf>::basic_streambuf>(void) +180005164: lea rax, off_18000FBD0 +18000516B: mov [rbp+150h+var_F8], rax +18000516F: mov [rbp+150h+var_90], rsi +180005176: mov [rbp+150h+var_88], esi +18000517C: cmp edi, 2 +18000517F: jnz loc_180005293 +180005185: jmp short loc_1800051FE +180005187: mov rcx, rbx +18000518A: call sub_1800053C0 +18000518F: mov byte ptr [rbx+30h], 1 +180005193: mov rdx, [rbp+150h+var_118] +180005197: cmp rdx, 8 +18000519B: jb short loc_1800051D6 +18000519D: lea rdx, ds:2[rdx*2] +1800051A5: mov rcx, [rbp+150h+lpFileName]; Block +1800051A9: mov rax, rcx +1800051AC: cmp rdx, 1000h +1800051B3: jb short loc_1800051D1 +1800051B5: add rdx, 27h ; ''' +1800051B9: mov rcx, [rcx-8] +1800051BD: sub rax, rcx +1800051C0: add rax, 0FFFFFFFFFFFFFFF8h +1800051C4: cmp rax, 1Fh +1800051C8: jbe short loc_1800051D1 +1800051CA: call cs:_invalid_parameter_noinfo_noreturn +1800051D0: int 3; Trap to Debugger +1800051D1: call j_j_free +1800051D6: mov rcx, [rbp+150h+var_10] +1800051DD: xor rcx, rsp; StackCookie +1800051E0: call __security_check_cookie +1800051E5: lea r11, [rsp+250h+var_s0] +1800051ED: mov rbx, [r11+18h] +1800051F1: mov rsi, [r11+20h] +1800051F5: mov rdi, [r11+28h] +1800051F9: mov rsp, r11 +1800051FC: pop rbp +1800051FD: retn +1800051FE: lea rdx, [rsp+250h+var_200] +180005203: mov rcx, rbx +180005206: call sub_1800059C0 +18000520B: mov rbx, rax +18000520E: lea rdx, aSpecifiedPort; "Specified port, " +180005215: lea rcx, [rbp+150h+var_100] +180005219: call sub_180006310 +18000521E: mov rcx, rax +180005221: mov rdx, rbx +180005224: call unknown_libname_19; Microsoft VisualC v14 64bit runtime +180005229: mov rcx, rax +18000522C: lea rdx, aDoesNotExist; ", does not exist." +180005233: call sub_180006310 +180005238: nop +180005239: lea rcx, [rsp+250h+var_200] +18000523E: call sub_1800024B0 +180005243: lea rdx, [rsp+250h+var_1E0] +180005248: lea rcx, [rbp+150h+var_110] +18000524C: call sub_180006050 +180005251: mov rbx, rax +180005254: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +18000525B: lea rcx, [rsp+250h+var_200] +180005260: call sub_180002510 +180005265: mov rdx, rax +180005268: mov rcx, rbx +18000526B: call sub_1800061B0 +180005270: mov r9, rax +180005273: mov r8d, 53h ; 'S' +180005279: lea rcx, [rbp+150h+pExceptionObject] +18000527D: call sub_180004310 +180005282: lea rdx, stru_1800134B8; pThrowInfo +180005289: lea rcx, [rbp+150h+pExceptionObject]; pExceptionObject +18000528D: call _CxxThrowException +180005292: db 90h +180005293: lea rdx, aUnknownErrorOp; "Unknown error opening the serial port: " +18000529A: lea rcx, [rbp+150h+var_100] +18000529E: call sub_180006310 +1800052A3: mov rcx, rax +1800052A6: mov edx, edi +1800052A8: call cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream>::operator<<(ulong) +1800052AE: lea rdx, [rsp+250h+var_1E0] +1800052B3: lea rcx, [rbp+150h+var_110] +1800052B7: call sub_180006050 +1800052BC: mov rbx, rax +1800052BF: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +1800052C6: lea rcx, [rsp+250h+var_200] +1800052CB: call sub_180002510 +1800052D0: mov rdx, rax +1800052D3: mov rcx, rbx +1800052D6: call sub_1800061B0 +1800052DB: mov r9, rax +1800052DE: mov r8d, 56h ; 'V' +1800052E4: lea rcx, [rbp+150h+pExceptionObject] +1800052E8: call sub_180004310 +1800052ED: lea rdx, stru_1800134B8; pThrowInfo +1800052F4: lea rcx, [rbp+150h+pExceptionObject]; pExceptionObject +1800052F8: call _CxxThrowException +1800052FD: align 2 +1800052FE: lea rdx, aEmptyPortIsInv; "Empty port is invalid." +180005305: lea rcx, [rsp+250h+var_200] +18000530A: call sub_180003E20 +18000530F: lea rdx, stru_180013448; pThrowInfo +180005316: lea rcx, [rsp+250h+var_200]; pExceptionObject +18000531B: call _CxxThrowException +180005320: db 0CCh +180005321: lea rcx, [rsp+250h+var_1E0] +180005326: call sub_180003E90 +18000532B: lea rdx, stru_1800133A0; pThrowInfo +180005332: lea rcx, [rsp+250h+var_1E0]; pExceptionObject +180005337: call _CxxThrowException +18000533C: db 0CCh + +### FUNC 180005340 - 18000537D (61 bytes) name=sub_180005340 +180005340: push rbx +180005342: sub rsp, 20h +180005346: mov rbx, rcx +180005349: mov rax, rdx +18000534C: lea rcx, off_18000F6D8 +180005353: xorps xmm0, xmm0 +180005356: lea rdx, [rbx+8] +18000535A: mov [rbx], rcx +18000535D: lea rcx, [rax+8] +180005361: movups xmmword ptr [rdx], xmm0 +180005364: call cs:__std_exception_copy +18000536A: lea rax, off_18000FC50 +180005371: mov [rbx], rax +180005374: mov rax, rbx +180005377: add rsp, 20h +18000537B: pop rbx +18000537C: retn + +### FUNC 180005380 - 1800053BD (61 bytes) name=sub_180005380 +180005380: push rbx +180005382: sub rsp, 20h +180005386: mov rbx, rcx +180005389: mov rax, rdx +18000538C: lea rcx, off_18000F6D8 +180005393: xorps xmm0, xmm0 +180005396: lea rdx, [rbx+8] +18000539A: mov [rbx], rcx +18000539D: lea rcx, [rax+8] +1800053A1: movups xmmword ptr [rdx], xmm0 +1800053A4: call cs:__std_exception_copy +1800053AA: lea rax, off_18000FBB8 +1800053B1: mov [rbx], rax +1800053B4: mov rax, rbx +1800053B7: add rsp, 20h +1800053BB: pop rbx +1800053BC: retn + +### FUNC 1800053C0 - 18000578F (975 bytes) name=sub_1800053C0 +1800053C0: mov [rsp-8+arg_8], rbx +1800053C5: push rbp +1800053C6: lea rbp, [rsp-57h] +1800053CB: sub rsp, 100h +1800053D2: mov rax, cs:__security_cookie +1800053D9: xor rax, rsp +1800053DC: mov [rbp+57h+var_8], rax +1800053E0: mov rbx, rcx +1800053E3: mov rcx, [rcx+28h]; hFile +1800053E7: cmp rcx, 0FFFFFFFFFFFFFFFFh +1800053EB: jz loc_180005657 +1800053F1: xorps xmm0, xmm0 +1800053F4: mov qword ptr [rbp+57h+DCB.StopBits], 0 +1800053FC: lea rdx, [rbp+57h+DCB]; lpDCB +180005400: mov [rbp+57h+DCB.DCBlength], 1Ch +180005407: movdqu xmmword ptr [rbp+57h+DCB.BaudRate], xmm0 +18000540C: call cs:GetCommState +180005412: test eax, eax +180005414: jz loc_180005692 +18000541A: mov eax, [rbx+48h] +18000541D: cmp eax, 3840h +180005422: ja loc_1800054AB +180005428: jz short loc_1800054A2 +18000542A: cmp eax, 4B0h +18000542F: ja short loc_180005476 +180005431: jz short loc_18000546A +180005433: cmp eax, 6Eh ; 'n' +180005436: jz short loc_18000545E +180005438: cmp eax, 12Ch +18000543D: jz short loc_180005452 +18000543F: cmp eax, 258h +180005444: jnz loc_1800054F7 +18000544A: mov [rbp+57h+DCB.BaudRate], eax +18000544D: jmp loc_18000550C +180005452: mov [rbp+57h+DCB.BaudRate], 12Ch +180005459: jmp loc_18000550C +18000545E: mov [rbp+57h+DCB.BaudRate], 6Eh ; 'n' +180005465: jmp loc_18000550C +18000546A: mov [rbp+57h+DCB.BaudRate], 4B0h +180005471: jmp loc_18000550C +180005476: cmp eax, 960h +18000547B: jz short loc_180005499 +18000547D: cmp eax, 12C0h +180005482: jz short loc_180005490 +180005484: cmp eax, 2580h +180005489: jnz short loc_1800054F7 +18000548B: mov [rbp+57h+DCB.BaudRate], eax +18000548E: jmp short loc_18000550C +180005490: mov [rbp+57h+DCB.BaudRate], 12C0h +180005497: jmp short loc_18000550C +180005499: mov [rbp+57h+DCB.BaudRate], 960h +1800054A0: jmp short loc_18000550C +1800054A2: mov [rbp+57h+DCB.BaudRate], 3840h +1800054A9: jmp short loc_18000550C +1800054AB: cmp eax, 1C200h +1800054B0: ja short loc_1800054E9 +1800054B2: jz short loc_1800054E0 +1800054B4: cmp eax, 4B00h +1800054B9: jz short loc_1800054D7 +1800054BB: cmp eax, 9600h +1800054C0: jz short loc_1800054CE +1800054C2: cmp eax, 0E100h +1800054C7: jnz short loc_1800054F7 +1800054C9: mov [rbp+57h+DCB.BaudRate], eax +1800054CC: jmp short loc_18000550C +1800054CE: mov [rbp+57h+DCB.BaudRate], 9600h +1800054D5: jmp short loc_18000550C +1800054D7: mov [rbp+57h+DCB.BaudRate], 4B00h +1800054DE: jmp short loc_18000550C +1800054E0: mov [rbp+57h+DCB.BaudRate], 1C200h +1800054E7: jmp short loc_18000550C +1800054E9: cmp eax, 1F400h +1800054EE: jz short loc_180005505 +1800054F0: cmp eax, 3E800h +1800054F5: jz short loc_1800054FC +1800054F7: mov [rbp+57h+DCB.BaudRate], eax +1800054FA: jmp short loc_18000550C +1800054FC: mov [rbp+57h+DCB.BaudRate], 3E800h +180005503: jmp short loc_18000550C +180005505: mov [rbp+57h+DCB.BaudRate], 1F400h +18000550C: mov eax, [rbx+50h] +18000550F: cmp eax, 8 +180005512: jnz short loc_180005519 +180005514: mov [rbp+57h+DCB.ByteSize], al +180005517: jmp short loc_180005539 +180005519: cmp eax, 7 +18000551C: jnz short loc_180005523 +18000551E: mov [rbp+57h+DCB.ByteSize], al +180005521: jmp short loc_180005539 +180005523: cmp eax, 6 +180005526: jnz short loc_18000552D +180005528: mov [rbp+57h+DCB.ByteSize], al +18000552B: jmp short loc_180005539 +18000552D: cmp eax, 5 +180005530: jnz loc_180005634 +180005536: mov [rbp+57h+DCB.ByteSize], al +180005539: mov eax, [rbx+54h] +18000553C: cmp eax, 1 +18000553F: jnz short loc_180005547 +180005541: mov [rbp+57h+DCB.StopBits], 0 +180005545: jmp short loc_18000555E +180005547: cmp eax, 3 +18000554A: jnz short loc_180005552 +18000554C: mov [rbp+57h+DCB.StopBits], 1 +180005550: jmp short loc_18000555E +180005552: cmp eax, 2 +180005555: jnz loc_18000576C +18000555B: mov [rbp+57h+DCB.StopBits], al +18000555E: mov eax, [rbx+4Ch] +180005561: test eax, eax +180005563: jnz short loc_18000556A +180005565: mov [rbp+57h+DCB.Parity], al +180005568: jmp short loc_180005594 +18000556A: cmp eax, 2 +18000556D: jnz short loc_180005574 +18000556F: mov [rbp+57h+DCB.Parity], al +180005572: jmp short loc_180005594 +180005574: cmp eax, 1 +180005577: jnz short loc_18000557E +180005579: mov [rbp+57h+DCB.Parity], al +18000557C: jmp short loc_180005594 +18000557E: cmp eax, 3 +180005581: jnz short loc_180005588 +180005583: mov [rbp+57h+DCB.Parity], al +180005586: jmp short loc_180005594 +180005588: cmp eax, 4 +18000558B: jnz loc_180005749 +180005591: mov [rbp+57h+DCB.Parity], al +180005594: mov eax, [rbx+58h] +180005597: test eax, eax +180005599: jnz short loc_1800055A4 +18000559B: and dword ptr [rbp+57h+DCB.fBinary], 0FFFFCCFBh +1800055A2: jmp short loc_1800055CD +1800055A4: cmp eax, 1 +1800055A7: jnz short loc_1800055B8 +1800055A9: mov eax, dword ptr [rbp+57h+DCB.fBinary] +1800055AC: and eax, 0FFFFCFFBh +1800055B1: or eax, 300h +1800055B6: jmp short loc_1800055CA +1800055B8: cmp eax, 2 +1800055BB: jnz short loc_1800055CD +1800055BD: mov eax, dword ptr [rbp+57h+DCB.fBinary] +1800055C0: and eax, 0FFFFECFFh +1800055C5: or eax, 2004h +1800055CA: mov dword ptr [rbp+57h+DCB.fBinary], eax +1800055CD: mov rcx, [rbx+28h]; hFile +1800055D1: lea rdx, [rbp+57h+DCB]; lpDCB +1800055D5: call cs:SetCommState +1800055DB: mov rcx, [rbx+28h]; hObject +1800055DF: test eax, eax +1800055E1: jz loc_1800056CD +1800055E7: mov eax, [rbx+34h] +1800055EA: lea rdx, [rbp+57h+CommTimeouts]; lpCommTimeouts +1800055EE: mov [rbp+57h+CommTimeouts.ReadIntervalTimeout], eax +1800055F1: mov eax, [rbx+38h] +1800055F4: mov [rbp+57h+CommTimeouts.ReadTotalTimeoutConstant], eax +1800055F7: mov eax, [rbx+3Ch] +1800055FA: mov [rbp+57h+CommTimeouts.ReadTotalTimeoutMultiplier], eax +1800055FD: mov eax, [rbx+40h] +180005600: mov [rbp+57h+CommTimeouts.WriteTotalTimeoutConstant], eax +180005603: mov eax, [rbx+44h] +180005606: mov [rbp+57h+CommTimeouts.WriteTotalTimeoutMultiplier], eax +180005609: call cs:SetCommTimeouts +18000560F: test eax, eax +180005611: jz loc_18000570E +180005617: mov rcx, [rbp+57h+var_8] +18000561B: xor rcx, rsp; StackCookie +18000561E: call __security_check_cookie +180005623: mov rbx, [rsp+100h+arg_8] +18000562B: add rsp, 100h +180005632: pop rbp +180005633: retn +180005634: lea rdx, aInvalidCharLen; "invalid char len" +18000563B: lea rcx, [rsp+100h+pExceptionObject] +180005640: call sub_180003E20 +180005645: lea rdx, stru_180013448; pThrowInfo +18000564C: lea rcx, [rsp+100h+pExceptionObject]; pExceptionObject +180005651: call _CxxThrowException +180005656: db 0CCh +180005657: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +18000565E: lea rcx, [rsp+100h+pExceptionObject] +180005663: call sub_180002510 +180005668: lea r9, aInvalidFileDes; "Invalid file descriptor, is the serial "... +18000566F: mov r8d, 63h ; 'c' +180005675: mov rdx, rax +180005678: lea rcx, [rbp+57h+var_B0] +18000567C: call sub_180004310 +180005681: lea rdx, stru_1800134B8; pThrowInfo +180005688: lea rcx, [rbp+57h+var_B0]; pExceptionObject +18000568C: call _CxxThrowException +180005691: align 2 +180005692: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180005699: lea rcx, [rsp+100h+pExceptionObject] +18000569E: call sub_180002510 +1800056A3: lea r9, aErrorGettingTh; "Error getting the serial port state." +1800056AA: mov r8d, 6Ch ; 'l' +1800056B0: mov rdx, rax +1800056B3: lea rcx, [rbp+57h+var_B0] +1800056B7: call sub_180004310 +1800056BC: lea rdx, stru_1800134B8; pThrowInfo +1800056C3: lea rcx, [rbp+57h+var_B0]; pExceptionObject +1800056C7: call _CxxThrowException +1800056CC: db 0CCh +1800056CD: call cs:CloseHandle +1800056D3: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +1800056DA: lea rcx, [rsp+100h+pExceptionObject] +1800056DF: call sub_180002510 +1800056E4: lea r9, aErrorSettingSe; "Error setting serial port settings." +1800056EB: mov r8d, 106h +1800056F1: mov rdx, rax +1800056F4: lea rcx, [rbp+57h+var_B0] +1800056F8: call sub_180004310 +1800056FD: lea rdx, stru_1800134B8; pThrowInfo +180005704: lea rcx, [rbp+57h+var_B0]; pExceptionObject +180005708: call _CxxThrowException +18000570D: align 2 +18000570E: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180005715: lea rcx, [rsp+100h+pExceptionObject] +18000571A: call sub_180002510 +18000571F: lea r9, aErrorSettingTi; "Error setting timeouts." +180005726: mov r8d, 111h +18000572C: mov rdx, rax +18000572F: lea rcx, [rbp+57h+var_B0] +180005733: call sub_180004310 +180005738: lea rdx, stru_1800134B8; pThrowInfo +18000573F: lea rcx, [rbp+57h+var_B0]; pExceptionObject +180005743: call _CxxThrowException +180005748: db 0CCh +180005749: lea rdx, aInvalidParity; "invalid parity" +180005750: lea rcx, [rsp+100h+pExceptionObject] +180005755: call sub_180003E20 +18000575A: lea rdx, stru_180013448; pThrowInfo +180005761: lea rcx, [rsp+100h+pExceptionObject]; pExceptionObject +180005766: call _CxxThrowException +18000576B: align 4 +18000576C: lea rdx, aInvalidStopBit; "invalid stop bit" +180005773: lea rcx, [rsp+100h+pExceptionObject] +180005778: call sub_180003E20 +18000577D: lea rdx, stru_180013448; pThrowInfo +180005784: lea rcx, [rsp+100h+pExceptionObject]; pExceptionObject +180005789: call _CxxThrowException +18000578E: db 0CCh + +### FUNC 180005790 - 180005885 (245 bytes) name=sub_180005790 +180005790: push rbx +180005792: sub rsp, 1F0h +180005799: mov rax, cs:__security_cookie +1800057A0: xor rax, rsp +1800057A3: mov [rsp+1F8h+var_18], rax +1800057AB: mov rbx, rcx +1800057AE: cmp byte ptr [rcx+30h], 1 +1800057B2: jnz short loc_1800057D4 +1800057B4: mov rcx, [rcx+28h]; hObject +1800057B8: cmp rcx, 0FFFFFFFFFFFFFFFFh +1800057BC: jz short loc_1800057D0 +1800057BE: call cs:CloseHandle +1800057C4: test eax, eax +1800057C6: jz short loc_1800057ED +1800057C8: mov qword ptr [rbx+28h], 0FFFFFFFFFFFFFFFFh +1800057D0: mov byte ptr [rbx+30h], 0 +1800057D4: mov rcx, [rsp+1F8h+var_18] +1800057DC: xor rcx, rsp; StackCookie +1800057DF: call __security_check_cookie +1800057E4: add rsp, 1F0h +1800057EB: pop rbx +1800057EC: retn +1800057ED: lea rcx, [rsp+1F8h+var_118] +1800057F5: call sub_180004300 +1800057FA: lea rcx, [rsp+1F8h+var_118] +180005802: call sub_1800060F0 +180005807: nop +180005808: call cs:GetLastError +18000580E: mov ebx, eax +180005810: lea rdx, aErrorWhileClos; "Error while closing serial port: " +180005817: lea rcx, [rsp+1F8h+var_108] +18000581F: call sub_180006310 +180005824: mov rcx, rax +180005827: mov edx, ebx +180005829: call cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream>::operator<<(ulong) +18000582F: lea rdx, [rsp+1F8h+var_1B0] +180005834: lea rcx, [rsp+1F8h+var_118] +18000583C: call sub_180006050 +180005841: mov rbx, rax +180005844: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +18000584B: lea rcx, [rsp+1F8h+var_1D0] +180005850: call sub_180002510 +180005855: mov rdx, rax +180005858: mov rcx, rbx +18000585B: call sub_1800061B0 +180005860: mov r9, rax +180005863: mov r8d, 11Fh +180005869: lea rcx, [rsp+1F8h+pExceptionObject] +18000586E: call sub_180004310 +180005873: lea rdx, stru_1800134B8; pThrowInfo +18000587A: lea rcx, [rsp+1F8h+pExceptionObject]; pExceptionObject +18000587F: call _CxxThrowException +180005884: db 0CCh + +### FUNC 180005890 - 1800059B5 (293 bytes) name=sub_180005890 +180005890: push rbx +180005892: sub rsp, 220h +180005899: mov rax, cs:__security_cookie +1800058A0: xor rax, rsp +1800058A3: mov [rsp+228h+var_18], rax +1800058AB: cmp byte ptr [rcx+30h], 0 +1800058AF: jz loc_180005992 +1800058B5: mov [rsp+228h+lpOverlapped], 0; lpOverlapped +1800058BE: lea r9, [rsp+228h+NumberOfBytesRead]; lpNumberOfBytesRead +1800058C6: mov rcx, [rcx+28h]; hFile +1800058CA: call cs:ReadFile +1800058D0: test eax, eax +1800058D2: jz short loc_1800058F4 +1800058D4: mov eax, [rsp+228h+NumberOfBytesRead] +1800058DB: mov rcx, [rsp+228h+var_18] +1800058E3: xor rcx, rsp; StackCookie +1800058E6: call __security_check_cookie +1800058EB: add rsp, 220h +1800058F2: pop rbx +1800058F3: retn +1800058F4: lea rcx, [rsp+228h+var_118] +1800058FC: call sub_180004300 +180005901: lea rcx, [rsp+228h+var_118] +180005909: call sub_1800060F0 +18000590E: nop +18000590F: call cs:GetLastError +180005915: mov ebx, eax +180005917: lea rdx, aErrorWhileRead; "Error while reading from the serial por"... +18000591E: lea rcx, [rsp+228h+var_108] +180005926: call sub_180006310 +18000592B: mov rcx, rax +18000592E: mov edx, ebx +180005930: call cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream>::operator<<(ulong) +180005936: lea rdx, [rsp+228h+var_1D0] +18000593B: lea rcx, [rsp+228h+var_118] +180005943: call sub_180006050 +180005948: mov rbx, rax +18000594B: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180005952: lea rcx, [rsp+228h+var_1F0] +180005957: call sub_180002510 +18000595C: mov rdx, rax +18000595F: mov rcx, rbx +180005962: call sub_1800061B0 +180005967: mov r9, rax +18000596A: mov r8d, 154h +180005970: lea rcx, [rsp+228h+pExceptionObject] +180005978: call sub_180004310 +18000597D: lea rdx, stru_1800134B8; pThrowInfo +180005984: lea rcx, [rsp+228h+pExceptionObject]; pExceptionObject +18000598C: call _CxxThrowException +180005991: align 2 +180005992: lea rdx, aSerialRead; "Serial::read" +180005999: lea rcx, [rsp+228h+var_1D0] +18000599E: call sub_1800048A0 +1800059A3: lea rdx, stru_1800134D8; pThrowInfo +1800059AA: lea rcx, [rsp+228h+var_1D0]; pExceptionObject +1800059AF: call _CxxThrowException +1800059B4: db 0CCh + +### FUNC 1800059C0 - 180005A85 (197 bytes) name=sub_1800059C0 +1800059C0: mov [rsp+arg_0], rbx +1800059C5: mov [rsp+arg_10], rsi +1800059CA: push rdi +1800059CB: sub rsp, 30h +1800059CF: mov rbx, rdx +1800059D2: mov [rsp+38h+var_18], rdx +1800059D7: lea rdi, [rcx+8] +1800059DB: mov rcx, rdi +1800059DE: cmp qword ptr [rdi+18h], 8 +1800059E3: jb short loc_1800059E8 +1800059E5: mov rcx, [rdi] +1800059E8: mov rax, [rdi+10h] +1800059EC: lea rsi, [rcx+rax*2] +1800059F0: jb short loc_1800059F5 +1800059F2: mov rdi, [rdi] +1800059F5: mov qword ptr [rdx+10h], 0 +1800059FD: mov qword ptr [rdx+18h], 0Fh +180005A05: mov byte ptr [rdx], 0 +180005A08: mov rdx, rsi +180005A0B: sub rdx, rdi +180005A0E: sar rdx, 1 +180005A11: cmp rdx, 0Fh +180005A15: jbe short loc_180005A27 +180005A17: mov rcx, rbx; Src +180005A1A: call sub_180006C50 +180005A1F: mov qword ptr [rbx+10h], 0 +180005A27: mov [rsp+38h+var_18], rbx +180005A2C: cmp rdi, rsi +180005A2F: jz short loc_180005A72 +180005A31: movzx r9d, byte ptr [rdi] +180005A35: mov rcx, [rbx+10h] +180005A39: mov rdx, [rbx+18h] +180005A3D: cmp rcx, rdx +180005A40: jnb short loc_180005A61 +180005A42: lea rax, [rcx+1] +180005A46: mov [rbx+10h], rax +180005A4A: mov rax, rbx +180005A4D: cmp rdx, 10h +180005A51: jb short loc_180005A56 +180005A53: mov rax, [rbx] +180005A56: mov [rax+rcx], r9b +180005A5A: mov byte ptr [rax+rcx+1], 0 +180005A5F: jmp short loc_180005A69 +180005A61: mov rcx, rbx; Src +180005A64: call sub_180002770 +180005A69: add rdi, 2 +180005A6D: cmp rdi, rsi +180005A70: jnz short loc_180005A31 +180005A72: mov rax, rbx +180005A75: mov rbx, [rsp+38h+arg_0] +180005A7A: mov rsi, [rsp+38h+arg_10] +180005A7F: add rsp, 30h +180005A83: pop rdi +180005A84: retn + +### FUNC 180005A90 - 180005B79 (233 bytes) name=sub_180005A90 +180005A90: mov [rsp+arg_0], rbx +180005A95: mov [rsp+arg_8], rsi +180005A9A: mov [rsp+arg_10], rdi +180005A9F: mov [rsp+arg_18], r14 +180005AA4: mov r14, [rcx+38h] +180005AA8: mov r10, rcx +180005AAB: mov rax, [rcx+40h] +180005AAF: mov r11, [r8+8] +180005AB3: add r11, [r8] +180005AB6: mov rsi, [r14] +180005AB9: mov rcx, [rax] +180005ABC: test rcx, rcx +180005ABF: jz short loc_180005ACB +180005AC1: cmp [r10+68h], rcx +180005AC5: jnb short loc_180005ACB +180005AC7: mov [r10+68h], rcx +180005ACB: mov rax, [r10+18h] +180005ACF: mov rbx, [r10+68h] +180005AD3: mov rdi, [rax] +180005AD6: mov rax, rbx +180005AD9: sub rax, rdi +180005ADC: cmp r11, rax +180005ADF: ja short loc_180005B4C +180005AE1: test r11, r11 +180005AE4: jz short loc_180005AFC +180005AE6: test r9b, 1 +180005AEA: jz short loc_180005AF1 +180005AEC: test rsi, rsi +180005AEF: jz short loc_180005B4C +180005AF1: test r9b, 2 +180005AF5: jz short loc_180005AFC +180005AF7: test rcx, rcx +180005AFA: jz short loc_180005B4C +180005AFC: lea r8, [rdi+r11] +180005B00: test r9b, 1 +180005B04: jz short loc_180005B17 +180005B06: test rsi, rsi +180005B09: jz short loc_180005B17 +180005B0B: mov [r14], r8 +180005B0E: sub ebx, r8d +180005B11: mov rax, [r10+50h] +180005B15: mov [rax], ebx +180005B17: test r9b, 2 +180005B1B: jz short loc_180005B47 +180005B1D: test rcx, rcx +180005B20: jz short loc_180005B47 +180005B22: mov rax, [r10+58h] +180005B26: movsxd rcx, dword ptr [rax] +180005B29: mov rax, [r10+40h] +180005B2D: add rcx, [rax] +180005B30: mov rax, [r10+20h] +180005B34: sub ecx, r8d +180005B37: mov [rax], rdi +180005B3A: mov rax, [r10+40h] +180005B3E: mov [rax], r8 +180005B41: mov rax, [r10+58h] +180005B45: mov [rax], ecx +180005B47: mov [rdx], r11 +180005B4A: jmp short loc_180005B53 +180005B4C: mov qword ptr [rdx], 0FFFFFFFFFFFFFFFFh +180005B53: mov rbx, [rsp+arg_0] +180005B58: xor eax, eax +180005B5A: mov rsi, [rsp+arg_8] +180005B5F: mov rdi, [rsp+arg_10] +180005B64: mov r14, [rsp+arg_18] +180005B69: mov qword ptr [rdx+8], 0 +180005B71: mov [rdx+10h], rax +180005B75: mov rax, rdx +180005B78: retn + +### FUNC 180005B80 - 180005CD4 (340 bytes) name=sub_180005B80 +180005B80: mov [rsp+arg_0], rbx +180005B85: mov [rsp+arg_8], rbp +180005B8A: mov [rsp+arg_10], rsi +180005B8F: mov [rsp+arg_18], rdi +180005B94: push r14 +180005B96: mov r14, [rcx+38h] +180005B9A: mov r10, rcx +180005B9D: mov rax, [rcx+40h] +180005BA1: mov rbp, r8 +180005BA4: mov rdi, [r14] +180005BA7: mov rcx, [rax] +180005BAA: test rcx, rcx +180005BAD: jz short loc_180005BB9 +180005BAF: cmp [r10+68h], rcx +180005BB3: jnb short loc_180005BB9 +180005BB5: mov [r10+68h], rcx +180005BB9: mov rax, [r10+18h] +180005BBD: mov rsi, [r10+68h] +180005BC1: mov r8d, [rsp+8+arg_20] +180005BC6: mov r11, rsi +180005BC9: mov rbx, [rax] +180005BCC: sub r11, rbx +180005BCF: test r9d, r9d +180005BD2: jz short loc_180005C2F +180005BD4: sub r9d, 1 +180005BD8: jz short loc_180005BE9 +180005BDA: cmp r9d, 1 +180005BDE: jnz loc_180005CA5 +180005BE4: mov rax, r11 +180005BE7: jmp short loc_180005C31 +180005BE9: mov eax, r8d +180005BEC: and eax, 3 +180005BEF: cmp al, 3 +180005BF1: jz loc_180005CA5 +180005BF7: test r8b, 1 +180005BFB: jz short loc_180005C13 +180005BFD: test rdi, rdi +180005C00: jnz short loc_180005C0B +180005C02: test rbx, rbx +180005C05: jnz loc_180005CA5 +180005C0B: mov rax, rdi +180005C0E: sub rax, rbx +180005C11: jmp short loc_180005C31 +180005C13: test r8b, 2 +180005C17: jz loc_180005CA5 +180005C1D: test rcx, rcx +180005C20: jnz short loc_180005C27 +180005C22: test rbx, rbx +180005C25: jnz short loc_180005CA5 +180005C27: mov rax, rcx +180005C2A: sub rax, rbx +180005C2D: jmp short loc_180005C31 +180005C2F: xor eax, eax +180005C31: lea r9, [rax+rbp] +180005C35: cmp r9, r11 +180005C38: ja short loc_180005CA5 +180005C3A: test r9, r9 +180005C3D: jz short loc_180005C55 +180005C3F: test r8b, 1 +180005C43: jz short loc_180005C4A +180005C45: test rdi, rdi +180005C48: jz short loc_180005CA5 +180005C4A: test r8b, 2 +180005C4E: jz short loc_180005C55 +180005C50: test rcx, rcx +180005C53: jz short loc_180005CA5 +180005C55: lea r11, [rbx+r9] +180005C59: test r8b, 1 +180005C5D: jz short loc_180005C70 +180005C5F: test rdi, rdi +180005C62: jz short loc_180005C70 +180005C64: mov [r14], r11 +180005C67: sub esi, r11d +180005C6A: mov rax, [r10+50h] +180005C6E: mov [rax], esi +180005C70: test r8b, 2 +180005C74: jz short loc_180005CA0 +180005C76: test rcx, rcx +180005C79: jz short loc_180005CA0 +180005C7B: mov rax, [r10+58h] +180005C7F: movsxd rcx, dword ptr [rax] +180005C82: mov rax, [r10+40h] +180005C86: add rcx, [rax] +180005C89: mov rax, [r10+20h] +180005C8D: sub ecx, r11d +180005C90: mov [rax], rbx +180005C93: mov rax, [r10+40h] +180005C97: mov [rax], r11 +180005C9A: mov rax, [r10+58h] +180005C9E: mov [rax], ecx +180005CA0: mov [rdx], r9 +180005CA3: jmp short loc_180005CAC +180005CA5: mov qword ptr [rdx], 0FFFFFFFFFFFFFFFFh +180005CAC: mov rbx, [rsp+8+arg_0] +180005CB1: xor eax, eax +180005CB3: mov rbp, [rsp+8+arg_8] +180005CB8: mov rsi, [rsp+8+arg_10] +180005CBD: mov rdi, [rsp+8+arg_18] +180005CC2: mov qword ptr [rdx+8], 0 +180005CCA: mov [rdx+10h], rax +180005CCE: mov rax, rdx +180005CD1: pop r14 +180005CD3: retn + +### FUNC 180005CE0 - 180005D48 (104 bytes) name=sub_180005CE0 +180005CE0: mov r10, [rcx+38h] +180005CE4: mov rdx, rcx +180005CE7: mov r8, [r10] +180005CEA: test r8, r8 +180005CED: jz short loc_180005D42 +180005CEF: mov rax, [rcx+50h] +180005CF3: movsxd rcx, dword ptr [rax] +180005CF6: add rcx, r8 +180005CF9: cmp r8, rcx +180005CFC: jnb short loc_180005D03 +180005CFE: movzx eax, byte ptr [r8] +180005D02: retn +180005D03: mov rax, [rdx+40h] +180005D07: mov r9, [rax] +180005D0A: test r9, r9 +180005D0D: jz short loc_180005D42 +180005D0F: test byte ptr [rdx+70h], 4 +180005D13: jnz short loc_180005D42 +180005D15: mov rcx, [rdx+68h] +180005D19: cmp rcx, r9 +180005D1C: cmovb rcx, r9 +180005D20: cmp rcx, r8 +180005D23: jbe short loc_180005D42 +180005D25: mov [rdx+68h], rcx +180005D29: mov rax, [r10] +180005D2C: mov [r10], rax +180005D2F: sub ecx, eax +180005D31: mov rax, [rdx+50h] +180005D35: mov [rax], ecx +180005D37: mov rax, [rdx+38h] +180005D3B: mov rcx, [rax] +180005D3E: movzx eax, byte ptr [rcx] +180005D41: retn +180005D42: mov eax, 0FFFFFFFFh +180005D47: retn + +### FUNC 180005D50 - 180005DA2 (82 bytes) name=sub_180005D50 +180005D50: mov rax, [rcx+38h] +180005D54: mov r8, [rax] +180005D57: test r8, r8 +180005D5A: jz short loc_180005D9C +180005D5C: mov rax, [rcx+18h] +180005D60: cmp r8, [rax] +180005D63: jbe short loc_180005D9C +180005D65: cmp edx, 0FFFFFFFFh +180005D68: jz short loc_180005D76 +180005D6A: cmp dl, [r8-1] +180005D6E: jz short loc_180005D76 +180005D70: test byte ptr [rcx+70h], 2 +180005D74: jnz short loc_180005D9C +180005D76: mov rax, [rcx+50h] +180005D7A: inc dword ptr [rax] +180005D7C: mov rax, [rcx+38h] +180005D80: dec qword ptr [rax] +180005D83: cmp edx, 0FFFFFFFFh +180005D86: jz short loc_180005D91 +180005D88: mov rax, [rcx+38h] +180005D8C: mov rcx, [rax] +180005D8F: mov [rcx], dl +180005D91: xor eax, eax +180005D93: cmp edx, 0FFFFFFFFh +180005D96: cmovz edx, eax +180005D99: mov eax, edx +180005D9B: retn +180005D9C: mov eax, 0FFFFFFFFh +180005DA1: retn + +### FUNC 180005DB0 - 180005F90 (480 bytes) name=sub_180005DB0 +180005DB0: mov [rsp+arg_8], rbx +180005DB5: mov [rsp+arg_10], rbp +180005DBA: push rsi +180005DBB: push rdi +180005DBC: push r12 +180005DBE: push r14 +180005DC0: push r15 +180005DC2: sub rsp, 20h +180005DC6: test byte ptr [rcx+70h], 2 +180005DCA: mov r15d, edx +180005DCD: mov rbx, rcx +180005DD0: jnz loc_180005F6E +180005DD6: cmp edx, 0FFFFFFFFh +180005DD9: jnz short loc_180005DE2 +180005DDB: xor eax, eax +180005DDD: jmp loc_180005F73 +180005DE2: mov rax, [rcx+40h] +180005DE6: mov rsi, [rax] +180005DE9: mov rax, [rcx+58h] +180005DED: movsxd rdi, dword ptr [rax] +180005DF0: add rdi, rsi +180005DF3: test rsi, rsi +180005DF6: jz short loc_180005E16 +180005DF8: cmp rsi, rdi +180005DFB: jnb short loc_180005E16 +180005DFD: call cs:?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ; std::basic_streambuf>::_Pninc(void) +180005E03: mov [rax], r15b +180005E06: lea rax, [rsi+1] +180005E0A: mov [rbx+68h], rax +180005E0E: mov eax, r15d +180005E11: jmp loc_180005F73 +180005E16: mov rax, [rcx+18h] +180005E1A: xor r12d, r12d +180005E1D: mov r14, [rax] +180005E20: sub rdi, r14 +180005E23: test rsi, rsi +180005E26: cmovz rdi, r12 +180005E2A: cmp rdi, 20h ; ' ' +180005E2E: jnb short loc_180005E41 +180005E30: mov esi, 20h ; ' ' +180005E35: mov ecx, esi; Size +180005E37: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180005E3C: mov rbp, rax +180005E3F: jmp short loc_180005EA3 +180005E41: cmp rdi, 3FFFFFFFh +180005E48: jnb short loc_180005E6E +180005E4A: lea rsi, [rdi+rdi] +180005E4E: cmp rsi, 1000h +180005E55: jnb short loc_180005E7C +180005E57: test rsi, rsi +180005E5A: jz short loc_180005E69 +180005E5C: mov rcx, rsi; Size +180005E5F: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180005E64: mov rbp, rax +180005E67: jmp short loc_180005EA3 +180005E69: mov rbp, r12 +180005E6C: jmp short loc_180005EA3 +180005E6E: mov esi, 7FFFFFFFh +180005E73: cmp rdi, rsi +180005E76: jnb loc_180005F6E +180005E7C: lea rcx, [rsi+27h]; Size +180005E80: cmp rcx, rsi +180005E83: jbe loc_180005F8A +180005E89: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180005E8E: test rax, rax +180005E91: jz loc_180005F67 +180005E97: lea rbp, [rax+27h] +180005E9B: and rbp, 0FFFFFFFFFFFFFFE0h +180005E9F: mov [rbp-8], rax +180005EA3: mov r8, rdi; Size +180005EA6: mov rdx, r14; Src +180005EA9: mov rcx, rbp; void * +180005EAC: call memcpy +180005EB1: lea rdx, [rdi+rbp] +180005EB5: mov ecx, ebp +180005EB7: lea rax, [rdx+1] +180005EBB: sub ecx, edx +180005EBD: mov [rbx+68h], rax +180005EC1: add ecx, esi +180005EC3: mov rax, [rbx+20h] +180005EC7: mov [rax], rbp +180005ECA: mov rax, [rbx+40h] +180005ECE: mov [rax], rdx +180005ED1: mov rax, [rbx+58h] +180005ED5: mov [rax], ecx +180005ED7: test byte ptr [rbx+70h], 4 +180005EDB: jz short loc_180005EF3 +180005EDD: mov rax, [rbx+18h] +180005EE1: mov [rax], rbp +180005EE4: mov rax, [rbx+38h] +180005EE8: mov [rax], r12 +180005EEB: mov rax, [rbx+50h] +180005EEF: mov [rax], ebp +180005EF1: jmp short loc_180005F1A +180005EF3: mov rax, [rbx+38h] +180005EF7: mov rdx, [rbx+68h] +180005EFB: mov rcx, [rax] +180005EFE: mov rax, [rbx+18h] +180005F02: sub rcx, r14 +180005F05: add rcx, rbp +180005F08: sub edx, ecx +180005F0A: mov [rax], rbp +180005F0D: mov rax, [rbx+38h] +180005F11: mov [rax], rcx +180005F14: mov rax, [rbx+50h] +180005F18: mov [rax], edx +180005F1A: mov eax, [rbx+70h] +180005F1D: test al, 1 +180005F1F: jz short loc_180005F50 +180005F21: cmp rdi, 1000h +180005F28: jb short loc_180005F42 +180005F2A: mov rdx, [r14-8] +180005F2E: add rdi, 27h ; ''' +180005F32: sub r14, rdx +180005F35: lea rax, [r14-8] +180005F39: cmp rax, 1Fh +180005F3D: ja short loc_180005F67 +180005F3F: mov r14, rdx +180005F42: mov rdx, rdi +180005F45: mov rcx, r14; Block +180005F48: call j_j_free +180005F4D: mov eax, [rbx+70h] +180005F50: or eax, 1 +180005F53: mov rcx, rbx +180005F56: mov [rbx+70h], eax +180005F59: call cs:?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ; std::basic_streambuf>::_Pninc(void) +180005F5F: mov [rax], r15b +180005F62: mov eax, r15d +180005F65: jmp short loc_180005F73 +180005F67: call cs:_invalid_parameter_noinfo_noreturn +180005F6D: int 3; Trap to Debugger +180005F6E: mov eax, 0FFFFFFFFh +180005F73: mov rbx, [rsp+48h+arg_8] +180005F78: mov rbp, [rsp+48h+arg_10] +180005F7D: add rsp, 20h +180005F81: pop r15 +180005F83: pop r14 +180005F85: pop r12 +180005F87: pop rdi +180005F88: pop rsi +180005F89: retn +180005F8A: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180005F8F: align 10h + +### FUNC 180005F90 - 180006047 (183 bytes) name=sub_180005F90 +180005F90: push rbx +180005F92: sub rsp, 20h +180005F96: test byte ptr [rcx+70h], 1 +180005F9A: lea rax, off_18000FBD0 +180005FA1: mov [rcx], rax +180005FA4: mov rbx, rcx +180005FA7: jz short loc_180005FFF +180005FA9: mov rax, [rcx+40h] +180005FAD: mov rcx, [rax] +180005FB0: test rcx, rcx +180005FB3: jz short loc_180005FC1 +180005FB5: mov rax, [rbx+58h] +180005FB9: movsxd rdx, dword ptr [rax] +180005FBC: add rdx, rcx +180005FBF: jmp short loc_180005FCF +180005FC1: mov rax, [rbx+50h] +180005FC5: movsxd rdx, dword ptr [rax] +180005FC8: mov rax, [rbx+38h] +180005FCC: add rdx, [rax] +180005FCF: mov rax, [rbx+18h] +180005FD3: mov rcx, [rax] +180005FD6: sub rdx, rcx +180005FD9: cmp rdx, 1000h +180005FE0: jb short loc_180005FFA +180005FE2: mov r8, [rcx-8] +180005FE6: add rdx, 27h ; ''' +180005FEA: sub rcx, r8 +180005FED: lea rax, [rcx-8] +180005FF1: cmp rax, 1Fh +180005FF5: ja short loc_180006040 +180005FF7: mov rcx, r8; Block +180005FFA: call j_j_free +180005FFF: mov rax, [rbx+18h] +180006003: xor ecx, ecx +180006005: mov [rax], rcx +180006008: mov rax, [rbx+38h] +18000600C: mov [rax], rcx +18000600F: mov rax, [rbx+50h] +180006013: mov [rax], ecx +180006015: mov rax, [rbx+20h] +180006019: mov [rax], rcx +18000601C: mov rax, [rbx+40h] +180006020: mov [rax], rcx +180006023: mov rax, [rbx+58h] +180006027: mov [rax], ecx +180006029: and dword ptr [rbx+70h], 0FFFFFFFEh +18000602D: mov [rbx+68h], rcx +180006031: mov rcx, rbx +180006034: add rsp, 20h +180006038: pop rbx +180006039: jmp cs:??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_streambuf>::~basic_streambuf>(void) +180006040: call cs:_invalid_parameter_noinfo_noreturn +180006046: db 0CCh + +### FUNC 180006050 - 1800060EC (156 bytes) name=sub_180006050 +180006050: push rbx +180006052: sub rsp, 40h +180006056: mov rbx, rdx +180006059: mov [rsp+48h+var_18], rdx +18000605E: xor eax, eax +180006060: mov [rsp+48h+var_28], eax +180006064: mov [rdx+10h], rax +180006068: mov qword ptr [rdx+18h], 0Fh +180006070: mov [rdx], al +180006072: mov [rsp+48h+var_28], 2 +18000607A: mov edx, [rcx+88h] +180006080: test dl, 2 +180006083: jnz short loc_1800060B5 +180006085: mov rax, [rcx+58h] +180006089: mov r9, [rax] +18000608C: test r9, r9 +18000608F: jz short loc_1800060B5 +180006091: mov rax, [rcx+38h] +180006095: mov rdx, [rax] +180006098: mov [rsp+48h+var_20], r9 +18000609D: sub rcx, 0FFFFFFFFFFFFFF80h +1800060A1: lea r8, [rsp+48h+var_20] +1800060A6: cmp r9, [rcx] +1800060A9: cmovb r8, rcx +1800060AD: mov r8, [r8] +1800060B0: sub r8, rdx +1800060B3: jmp short loc_1800060DA +1800060B5: test dl, 4 +1800060B8: jnz short loc_1800060E3 +1800060BA: mov rax, [rcx+50h] +1800060BE: mov r9, [rax] +1800060C1: test r9, r9 +1800060C4: jz short loc_1800060E3 +1800060C6: mov rax, [rcx+30h] +1800060CA: mov rdx, [rax]; Src +1800060CD: mov rax, [rcx+68h] +1800060D1: movsxd r8, dword ptr [rax] +1800060D4: sub r8, rdx +1800060D7: add r8, r9; Size +1800060DA: mov rcx, rbx; void * +1800060DD: call sub_180002610 +1800060E2: nop +1800060E3: mov rax, rbx +1800060E6: add rsp, 40h +1800060EA: pop rbx +1800060EB: retn + +### FUNC 1800060F0 - 1800061A6 (182 bytes) name=sub_1800060F0 +1800060F0: mov [rsp+arg_8], rbx +1800060F5: mov [rsp+arg_10], r8d +1800060FA: mov [rsp+arg_0], rcx +1800060FF: push rdi +180006100: sub rsp, 20h +180006104: mov rdi, rcx +180006107: mov [rsp+28h+arg_10], 0 +18000610F: lea rax, unk_18000FCB8 +180006116: mov [rcx], rax +180006119: lea rax, unk_18000FBA8 +180006120: mov [rcx+10h], rax +180006124: add rcx, 98h +18000612B: call cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios>::basic_ios>(void) +180006131: nop +180006132: mov [rsp+28h+arg_10], 1 +18000613A: lea rbx, [rdi+18h] +18000613E: xor r8d, r8d +180006141: mov rdx, rbx +180006144: mov rcx, rdi +180006147: call cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream>::basic_iostream>(std::basic_streambuf> *) +18000614D: nop +18000614E: mov rax, [rdi] +180006151: movsxd rcx, dword ptr [rax+4] +180006155: lea rax, off_18000FC80 +18000615C: mov [rcx+rdi], rax +180006160: mov rax, [rdi] +180006163: movsxd rcx, dword ptr [rax+4] +180006167: lea edx, [rcx-98h] +18000616D: mov [rcx+rdi-4], edx +180006171: mov [rsp+28h+arg_18], rbx +180006176: mov rcx, rbx +180006179: call cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf>::basic_streambuf>(void) +18000617F: lea rax, off_18000FBD0 +180006186: mov [rbx], rax +180006189: mov qword ptr [rbx+68h], 0 +180006191: mov dword ptr [rbx+70h], 0 +180006198: mov rax, rdi +18000619B: mov rbx, [rsp+28h+arg_8] +1800061A0: add rsp, 20h +1800061A4: pop rdi +1800061A5: retn + +### FUNC 1800061B0 - 1800061BF (15 bytes) name=sub_1800061B0 +1800061B0: cmp qword ptr [rcx+18h], 10h +1800061B5: jb short loc_1800061BB +1800061B7: mov rax, [rcx] +1800061BA: retn +1800061BB: mov rax, rcx +1800061BE: retn + +### FUNC 1800061C0 - 1800061F4 (52 bytes) name=??_G?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAAPEAXI@Z +1800061C0: mov [rsp+arg_0], rbx +1800061C5: push rdi +1800061C6: sub rsp, 20h +1800061CA: mov ebx, edx +1800061CC: mov rdi, rcx +1800061CF: call sub_180005F90 +1800061D4: test bl, 1 +1800061D7: jz short loc_1800061E6 +1800061D9: mov edx, 78h ; 'x' +1800061DE: mov rcx, rdi; Block +1800061E1: call j_j_free +1800061E6: mov rbx, [rsp+28h+arg_0] +1800061EB: mov rax, rdi +1800061EE: add rsp, 20h +1800061F2: pop rdi +1800061F3: retn + +### FUNC 180006200 - 180006292 (146 bytes) name=sub_180006200 +180006200: mov [rsp+arg_0], rbx +180006205: mov [rsp+arg_8], rsi +18000620A: push rdi +18000620B: sub rsp, 20h +18000620F: mov rax, [rcx-98h] +180006216: mov rbx, rcx +180006219: mov edi, edx +18000621B: movsxd r8, dword ptr [rax+4] +18000621F: lea rax, off_18000FC80 +180006226: mov [r8+rcx-98h], rax +18000622E: mov rax, [rcx-98h] +180006235: movsxd r8, dword ptr [rax+4] +180006239: lea r9d, [r8-98h] +180006240: mov [r8+rcx-9Ch], r9d +180006248: add rcx, 0FFFFFFFFFFFFFF80h +18000624C: call sub_180005F90 +180006251: lea rcx, [rbx-78h] +180006255: call cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream>::~basic_iostream>(void) +18000625B: mov rcx, rbx +18000625E: call cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios>::~basic_ios>(void) +180006264: test dil, 1 +180006268: jz short loc_18000627B +18000626A: mov edx, 0F8h +18000626F: lea rcx, [rbx-98h]; Block +180006276: call j_j_free +18000627B: mov rsi, [rsp+28h+arg_8] +180006280: lea rax, [rbx-98h] +180006287: mov rbx, [rsp+28h+arg_0] +18000628C: add rsp, 20h +180006290: pop rdi +180006291: retn + +### FUNC 1800062A0 - 1800062DF (63 bytes) name=sub_1800062A0 +1800062A0: push rbx +1800062A2: sub rsp, 20h +1800062A6: mov rbx, rcx +1800062A9: call cs:?uncaught_exception@std@@YA_NXZ; std::uncaught_exception(void) +1800062AF: nop +1800062B0: test al, al +1800062B2: jnz short loc_1800062BE +1800062B4: mov rcx, [rbx] +1800062B7: call cs:?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ; std::basic_ostream>::_Osfx(void) +1800062BD: nop +1800062BE: mov rdx, [rbx] +1800062C1: mov rax, [rdx] +1800062C4: movsxd rcx, dword ptr [rax+4] +1800062C8: mov rcx, [rcx+rdx+48h] +1800062CD: test rcx, rcx +1800062D0: jz short loc_1800062D9 +1800062D2: mov rax, [rcx] +1800062D5: call qword ptr [rax+10h] +1800062D8: nop +1800062D9: add rsp, 20h +1800062DD: pop rbx +1800062DE: retn + +### FUNC 1800062E0 - 180006304 (36 bytes) name=sub_1800062E0 +1800062E0: sub rsp, 28h +1800062E4: mov rdx, [rcx] +1800062E7: mov rax, [rdx] +1800062EA: movsxd rcx, dword ptr [rax+4] +1800062EE: mov rcx, [rcx+rdx+48h] +1800062F3: test rcx, rcx +1800062F6: jz short loc_1800062FF +1800062F8: mov rax, [rcx] +1800062FB: call qword ptr [rax+10h] +1800062FE: nop +1800062FF: add rsp, 28h +180006303: retn + +### FUNC 180006310 - 1800064DA (458 bytes) name=sub_180006310 +180006310: mov [rsp+arg_8], rbx +180006315: mov [rsp+arg_0], rcx +18000631A: push rsi +18000631B: push rdi +18000631C: push r12 +18000631E: push r14 +180006320: push r15 +180006322: sub rsp, 30h +180006326: mov r15, rdx +180006329: mov rsi, rcx +18000632C: xor ebx, ebx +18000632E: mov [rsp+58h+arg_10], ebx +180006332: mov r14, 0FFFFFFFFFFFFFFFFh +180006339: nop dword ptr [rax+00000000h] +180006340: inc r14 +180006343: cmp [rdx+r14], bl +180006347: jnz short loc_180006340 +180006349: mov rcx, [rcx] +18000634C: movsxd rax, dword ptr [rcx+4] +180006350: mov rdi, [rax+rsi+28h] +180006355: test rdi, rdi +180006358: jle short loc_180006364 +18000635A: cmp rdi, r14 +18000635D: jle short loc_180006364 +18000635F: sub rdi, r14 +180006362: jmp short loc_180006366 +180006364: xor edi, edi +180006366: mov r12, rsi +180006369: mov [rsp+58h+var_38], rsi +18000636E: mov r8, [rax+rsi+48h] +180006373: mov rdx, rcx +180006376: test r8, r8 +180006379: jz short loc_18000638A +18000637B: mov rax, [r8] +18000637E: mov rcx, r8 +180006381: call qword ptr [rax+8] +180006384: mov rcx, [rsi] +180006387: mov rdx, rcx +18000638A: movsxd rax, dword ptr [rcx+4] +18000638E: cmp dword ptr [rax+rsi+10h], 0 +180006393: jz short loc_180006399 +180006395: xor al, al +180006397: jmp short loc_1800063C7 +180006399: mov rax, [rax+rsi+50h] +18000639E: test rax, rax +1800063A1: jz short loc_1800063C5 +1800063A3: cmp rax, rsi +1800063A6: jz short loc_1800063C5 +1800063A8: mov rcx, rax +1800063AB: call cs:?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ; std::basic_ostream>::flush(void) +1800063B1: mov rcx, [rsi] +1800063B4: movsxd rax, dword ptr [rcx+4] +1800063B8: cmp dword ptr [rax+rsi+10h], 0 +1800063BD: setz al +1800063C0: mov rdx, rcx +1800063C3: jmp short loc_1800063C7 +1800063C5: mov al, 1 +1800063C7: mov [rsp+58h+var_30], al +1800063CB: test al, al +1800063CD: jnz short loc_1800063D9 +1800063CF: mov ebx, 4 +1800063D4: jmp loc_180006482 +1800063D9: movsxd rax, dword ptr [rcx+4] +1800063DD: mov ecx, [rax+rsi+18h] +1800063E1: and ecx, 1C0h +1800063E7: cmp ecx, 40h ; '@' +1800063EA: jz short loc_180006419 +1800063EC: nop dword ptr [rax+00h] +1800063F0: test rdi, rdi +1800063F3: jle short loc_180006416 +1800063F5: mov rax, [rsi] +1800063F8: movsxd rcx, dword ptr [rax+4] +1800063FC: movzx edx, byte ptr [rcx+rsi+58h] +180006401: mov rcx, [rcx+rsi+48h] +180006406: call cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf>::sputc(char) +18000640C: cmp eax, 0FFFFFFFFh +18000640F: jz short loc_180006459 +180006411: dec rdi +180006414: jmp short loc_1800063F0 +180006416: mov rdx, [rsi] +180006419: movsxd rax, dword ptr [rdx+4] +18000641D: mov r8, r14 +180006420: mov rdx, r15 +180006423: mov rcx, [rax+rsi+48h] +180006428: call cs:?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z; std::basic_streambuf>::sputn(char const *,__int64) +18000642E: cmp rax, r14 +180006431: jnz short loc_180006459 +180006433: test rdi, rdi +180006436: jle short loc_180006462 +180006438: mov rax, [rsi] +18000643B: movsxd rcx, dword ptr [rax+4] +18000643F: movzx edx, byte ptr [rcx+rsi+58h] +180006444: mov rcx, [rcx+rsi+48h] +180006449: call cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf>::sputc(char) +18000644F: cmp eax, 0FFFFFFFFh +180006452: jz short loc_180006459 +180006454: dec rdi +180006457: jmp short loc_180006433 +180006459: mov ebx, 4 +18000645E: mov [rsp+58h+arg_10], ebx +180006462: mov rax, [rsi] +180006465: movsxd rcx, dword ptr [rax+4] +180006469: mov qword ptr [rcx+rsi+28h], 0 +180006472: jmp short loc_180006482 +180006474: mov rsi, [rsp+58h+arg_0] +180006479: mov ebx, [rsp+58h+arg_10] +18000647D: mov r12, [rsp+58h+var_38] +180006482: mov rax, [rsi] +180006485: movsxd rcx, dword ptr [rax+4] +180006489: add rcx, rsi +18000648C: xor r8d, r8d +18000648F: mov edx, ebx +180006491: call cs:?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z; std::basic_ios>::setstate(int,bool) +180006497: nop +180006498: call cs:?uncaught_exception@std@@YA_NXZ; std::uncaught_exception(void) +18000649E: test al, al +1800064A0: jnz short loc_1800064AC +1800064A2: mov rcx, r12 +1800064A5: call cs:?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ; std::basic_ostream>::_Osfx(void) +1800064AB: nop +1800064AC: mov rax, [r12] +1800064B0: movsxd rcx, dword ptr [rax+4] +1800064B4: mov rcx, [rcx+r12+48h] +1800064B9: test rcx, rcx +1800064BC: jz short loc_1800064C5 +1800064BE: mov rax, [rcx] +1800064C1: call qword ptr [rax+10h] +1800064C4: nop +1800064C5: mov rax, rsi +1800064C8: mov rbx, [rsp+58h+arg_8] +1800064CD: add rsp, 30h +1800064D1: pop r15 +1800064D3: pop r14 +1800064D5: pop r12 +1800064D7: pop rdi +1800064D8: pop rsi +1800064D9: retn + +### FUNC 1800064E0 - 1800064F9 (25 bytes) name=unknown_libname_19 +1800064E0: cmp qword ptr [rdx+18h], 10h +1800064E5: mov rax, rdx +1800064E8: jb short loc_1800064ED +1800064EA: mov rax, [rdx] +1800064ED: mov r8, [rdx+10h] +1800064F1: mov rdx, rax +1800064F4: jmp sub_180006920 + +### FUNC 180006500 - 180006695 (405 bytes) name=sub_180006500 +180006500: push rbx +180006502: push rsi +180006503: push r12 +180006505: push r14 +180006507: sub rsp, 28h +18000650B: mov r14, [rcx+10h] +18000650F: mov rbx, 7FFFFFFFFFFFFFFEh +180006519: mov rax, rbx +18000651C: movzx r12d, r9w +180006520: sub rax, r14 +180006523: mov rsi, rcx +180006526: cmp rax, 1 +18000652A: jb loc_180006689 +180006530: mov [rsp+48h+arg_8], rbp +180006535: mov rbp, [rcx+18h] +180006539: mov [rsp+48h+var_28], r15 +18000653E: lea r15, [r14+1] +180006542: mov rcx, r15 +180006545: or rcx, 7 +180006549: cmp rcx, rbx +18000654C: ja short loc_18000656D +18000654E: mov rdx, rbp +180006551: mov rax, rbx +180006554: shr rdx, 1 +180006557: sub rax, rdx +18000655A: cmp rbp, rax +18000655D: ja short loc_18000656D +18000655F: lea rax, [rdx+rbp] +180006563: mov rbx, rcx +180006566: cmp rcx, rax +180006569: cmovb rbx, rax +18000656D: mov rcx, 0FFFFFFFFFFFFFFFFh +180006574: mov [rsp+48h+arg_10], rdi +180006579: mov rax, rbx +18000657C: mov [rsp+48h+arg_18], r13 +180006581: add rax, 1 +180006585: cmovb rax, rcx +180006589: mov rcx, 7FFFFFFFFFFFFFFFh +180006593: cmp rax, rcx +180006596: ja loc_18000668F +18000659C: lea rcx, [rax+rax]; Size +1800065A0: xor r13d, r13d +1800065A3: cmp rcx, 1000h +1800065AA: jb short loc_1800065D8 +1800065AC: lea rax, [rcx+27h] +1800065B0: cmp rax, rcx +1800065B3: jbe loc_18000668F +1800065B9: mov rcx, rax; Size +1800065BC: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +1800065C1: test rax, rax +1800065C4: jz loc_18000664A +1800065CA: lea rdi, [rax+27h] +1800065CE: and rdi, 0FFFFFFFFFFFFFFE0h +1800065D2: mov [rdi-8], rax +1800065D6: jmp short loc_1800065EA +1800065D8: test rcx, rcx +1800065DB: jz short loc_1800065E7 +1800065DD: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +1800065E2: mov rdi, rax +1800065E5: jmp short loc_1800065EA +1800065E7: mov rdi, r13 +1800065EA: add r14, r14 +1800065ED: mov [rsi+10h], r15 +1800065F1: mov [rsi+18h], rbx +1800065F5: mov r8, r14; Size +1800065F8: mov rcx, rdi; void * +1800065FB: cmp rbp, 8 +1800065FF: jb short loc_180006651 +180006601: mov rbx, [rsi] +180006604: mov rdx, rbx; Src +180006607: call memcpy +18000660C: lea rdx, ds:2[rbp*2] +180006614: mov [r14+rdi], r12w +180006619: mov [r14+rdi+2], r13w +18000661F: cmp rdx, 1000h +180006626: jb short loc_180006640 +180006628: mov rcx, [rbx-8] +18000662C: add rdx, 27h ; ''' +180006630: sub rbx, rcx +180006633: lea rax, [rbx-8] +180006637: cmp rax, 1Fh +18000663B: ja short loc_18000664A +18000663D: mov rbx, rcx +180006640: mov rcx, rbx; Block +180006643: call j_j_free +180006648: jmp short loc_180006664 +18000664A: call cs:_invalid_parameter_noinfo_noreturn +180006650: int 3; Trap to Debugger +180006651: mov rdx, rsi; Src +180006654: call memcpy +180006659: mov [r14+rdi], r12w +18000665E: mov [r14+rdi+2], r13w +180006664: mov [rsi], rdi +180006667: mov rax, rsi +18000666A: mov r13, [rsp+48h+arg_18] +18000666F: mov rdi, [rsp+48h+arg_10] +180006674: mov rbp, [rsp+48h+arg_8] +180006679: mov r15, [rsp+48h+var_28] +18000667E: add rsp, 28h +180006682: pop r14 +180006684: pop r12 +180006686: pop rsi +180006687: pop rbx +180006688: retn +180006689: call sub_180002B40 +18000668E: db 0CCh +18000668F: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180006694: db 0CCh + +### FUNC 1800066A0 - 180006854 (436 bytes) name=sub_1800066A0 +1800066A0: push rsi +1800066A2: push rdi +1800066A3: push r13 +1800066A5: push r14 +1800066A7: sub rsp, 38h +1800066AB: mov r14, [rcx+10h] +1800066AF: mov rdi, 7FFFFFFFFFFFFFFEh +1800066B9: mov rax, rdi +1800066BC: mov r13, r9 +1800066BF: sub rax, r14 +1800066C2: mov rsi, rcx +1800066C5: cmp rax, rdx +1800066C8: jb loc_180006848 +1800066CE: mov [rsp+58h+var_28], rbp +1800066D3: mov rbp, [rcx+18h] +1800066D7: mov [rsp+58h+var_38], r15 +1800066DC: lea r15, [rdx+r14] +1800066E0: mov rcx, r15 +1800066E3: or rcx, 7 +1800066E7: cmp rcx, rdi +1800066EA: ja short loc_18000670B +1800066EC: mov rdx, rbp +1800066EF: mov rax, rdi +1800066F2: shr rdx, 1 +1800066F5: sub rax, rdx +1800066F8: cmp rbp, rax +1800066FB: ja short loc_18000670B +1800066FD: lea rax, [rdx+rbp] +180006701: mov rdi, rcx +180006704: cmp rcx, rax +180006707: cmovb rdi, rax +18000670B: mov rcx, 0FFFFFFFFFFFFFFFFh +180006712: mov [rsp+58h+arg_10], rbx +180006717: mov rax, rdi +18000671A: mov [rsp+58h+var_30], r12 +18000671F: add rax, 1 +180006723: cmovb rax, rcx +180006727: mov rcx, 7FFFFFFFFFFFFFFFh +180006731: cmp rax, rcx +180006734: ja loc_18000684E +18000673A: lea rcx, [rax+rax]; Size +18000673E: xor eax, eax +180006740: cmp rcx, 1000h +180006747: jb short loc_180006775 +180006749: lea rax, [rcx+27h] +18000674D: cmp rax, rcx +180006750: jbe loc_18000684E +180006756: mov rcx, rax; Size +180006759: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000675E: test rax, rax +180006761: jz loc_180006800 +180006767: lea rbx, [rax+27h] +18000676B: and rbx, 0FFFFFFFFFFFFFFE0h +18000676F: mov [rbx-8], rax +180006773: jmp short loc_180006782 +180006775: test rcx, rcx +180006778: jz short loc_18000677F +18000677A: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000677F: mov rbx, rax +180006782: mov rax, [rsp+58h+arg_20] +18000678A: lea r8, [r14+r14]; Size +18000678E: mov [rsi+10h], r15 +180006792: lea r12, [r8+rbx] +180006796: mov [rsi+18h], rdi +18000679A: mov rcx, rbx; void * +18000679D: lea r15, [rax+rax] +1800067A1: add rax, r14 +1800067A4: lea r14, [rbx+rax*2] +1800067A8: cmp rbp, 8 +1800067AC: jb short loc_180006807 +1800067AE: mov rdi, [rsi] +1800067B1: mov rdx, rdi; Src +1800067B4: call memcpy +1800067B9: mov r8, r15; Size +1800067BC: mov rdx, r13; Src +1800067BF: mov rcx, r12; void * +1800067C2: call memcpy +1800067C7: xor eax, eax +1800067C9: lea rdx, ds:2[rbp*2] +1800067D1: mov [r14], ax +1800067D5: cmp rdx, 1000h +1800067DC: jb short loc_1800067F6 +1800067DE: mov rcx, [rdi-8] +1800067E2: add rdx, 27h ; ''' +1800067E6: sub rdi, rcx +1800067E9: lea rax, [rdi-8] +1800067ED: cmp rax, 1Fh +1800067F1: ja short loc_180006800 +1800067F3: mov rdi, rcx +1800067F6: mov rcx, rdi; Block +1800067F9: call j_j_free +1800067FE: jmp short loc_180006823 +180006800: call cs:_invalid_parameter_noinfo_noreturn +180006806: int 3; Trap to Debugger +180006807: mov rdx, rsi; Src +18000680A: call memcpy +18000680F: mov r8, r15; Size +180006812: mov rdx, r13; Src +180006815: mov rcx, r12; void * +180006818: call memcpy +18000681D: xor eax, eax +18000681F: mov [r14], ax +180006823: mov [rsi], rbx +180006826: mov rax, rsi +180006829: mov r12, [rsp+58h+var_30] +18000682E: mov rbx, [rsp+58h+arg_10] +180006833: mov rbp, [rsp+58h+var_28] +180006838: mov r15, [rsp+58h+var_38] +18000683D: add rsp, 38h +180006841: pop r14 +180006843: pop r13 +180006845: pop rdi +180006846: pop rsi +180006847: retn +180006848: call sub_180002B40 +18000684D: align 2 +18000684E: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180006853: db 0CCh + +### FUNC 180006860 - 180006914 (180 bytes) name=sub_180006860 +180006860: mov [rsp+arg_18], rsi +180006865: push rdi +180006866: sub rsp, 20h +18000686A: mov rsi, [rcx+10h] +18000686E: mov rdi, rcx +180006871: cmp rsi, rdx +180006874: ja loc_180006902 +18000687A: mov rax, [rcx+18h] +18000687E: cmp rax, rdx +180006881: jz short loc_180006902 +180006883: jnb short loc_18000689C +180006885: sub rdx, rsi +180006888: call sub_180006AE0 +18000688D: mov [rdi+10h], rsi +180006891: mov rsi, [rsp+28h+arg_18] +180006896: add rsp, 20h +18000689A: pop rdi +18000689B: retn +18000689C: cmp rdx, 8 +1800068A0: jnb short loc_180006902 +1800068A2: cmp rax, 8 +1800068A6: jb short loc_180006902 +1800068A8: mov [rsp+28h+arg_10], rbx +1800068AD: lea r8, ds:2[rsi*2]; Size +1800068B5: mov rbx, [rcx] +1800068B8: mov rdx, rbx; Src +1800068BB: call memcpy +1800068C0: mov rax, [rdi+18h] +1800068C4: lea rdx, ds:2[rax*2] +1800068CC: cmp rdx, 1000h +1800068D3: jb short loc_1800068ED +1800068D5: mov rcx, [rbx-8] +1800068D9: add rdx, 27h ; ''' +1800068DD: sub rbx, rcx +1800068E0: lea rax, [rbx-8] +1800068E4: cmp rax, 1Fh +1800068E8: ja short loc_18000690D +1800068EA: mov rbx, rcx +1800068ED: mov rcx, rbx; Block +1800068F0: call j_j_free +1800068F5: mov rbx, [rsp+28h+arg_10] +1800068FA: mov qword ptr [rdi+18h], 7 +180006902: mov rsi, [rsp+28h+arg_18] +180006907: add rsp, 20h +18000690B: pop rdi +18000690C: retn +18000690D: call cs:_invalid_parameter_noinfo_noreturn +180006913: db 0CCh + +### FUNC 180006920 - 180006ADF (447 bytes) name=sub_180006920 +180006920: mov [rsp+arg_8], rbx +180006925: mov [rsp+arg_0], rcx +18000692A: push rsi +18000692B: push rdi +18000692C: push r12 +18000692E: push r14 +180006930: push r15 +180006932: sub rsp, 30h +180006936: mov r15, r8 +180006939: mov r12, rdx +18000693C: mov rsi, rcx +18000693F: xor ebx, ebx +180006941: mov [rsp+58h+arg_18], ebx +180006945: mov rcx, [rcx] +180006948: movsxd rax, dword ptr [rcx+4] +18000694C: mov rdi, [rax+rsi+28h] +180006951: test rdi, rdi +180006954: jle short loc_180006960 +180006956: cmp rdi, r8 +180006959: jbe short loc_180006960 +18000695B: sub rdi, r8 +18000695E: jmp short loc_180006962 +180006960: xor edi, edi +180006962: mov r14, rsi +180006965: mov [rsp+58h+var_38], rsi +18000696A: mov r8, [rax+rsi+48h] +18000696F: mov rdx, rcx +180006972: test r8, r8 +180006975: jz short loc_180006986 +180006977: mov rax, [r8] +18000697A: mov rcx, r8 +18000697D: call qword ptr [rax+8] +180006980: mov rcx, [rsi] +180006983: mov rdx, rcx +180006986: movsxd rax, dword ptr [rcx+4] +18000698A: cmp dword ptr [rax+rsi+10h], 0 +18000698F: jz short loc_180006995 +180006991: xor al, al +180006993: jmp short loc_1800069C3 +180006995: mov rax, [rax+rsi+50h] +18000699A: test rax, rax +18000699D: jz short loc_1800069C1 +18000699F: cmp rax, rsi +1800069A2: jz short loc_1800069C1 +1800069A4: mov rcx, rax +1800069A7: call cs:?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ; std::basic_ostream>::flush(void) +1800069AD: mov rcx, [rsi] +1800069B0: movsxd rax, dword ptr [rcx+4] +1800069B4: cmp dword ptr [rax+rsi+10h], 0 +1800069B9: setz al +1800069BC: mov rdx, rcx +1800069BF: jmp short loc_1800069C3 +1800069C1: mov al, 1 +1800069C3: mov [rsp+58h+var_30], al +1800069C7: test al, al +1800069C9: jnz short loc_1800069D5 +1800069CB: mov ebx, 4 +1800069D0: jmp loc_180006A88 +1800069D5: movsxd rax, dword ptr [rcx+4] +1800069D9: mov ecx, [rax+rsi+18h] +1800069DD: and ecx, 1C0h +1800069E3: cmp ecx, 40h ; '@' +1800069E6: jz short loc_180006A54 +1800069E8: test rdi, rdi +1800069EB: jz short loc_180006A51 +1800069ED: mov rax, [rsi] +1800069F0: movsxd rcx, dword ptr [rax+4] +1800069F4: movzx edx, byte ptr [rcx+rsi+58h] +1800069F9: mov rcx, [rcx+rsi+48h] +1800069FE: call cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf>::sputc(char) +180006A04: cmp eax, 0FFFFFFFFh +180006A07: jnz short loc_180006A4C +180006A09: mov ebx, 4 +180006A0E: mov [rsp+58h+arg_18], ebx +180006A12: test rdi, rdi +180006A15: jz short loc_180006A3A +180006A17: mov rax, [rsi] +180006A1A: movsxd rcx, dword ptr [rax+4] +180006A1E: movzx edx, byte ptr [rcx+rsi+58h] +180006A23: mov rcx, [rcx+rsi+48h] +180006A28: call cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf>::sputc(char) +180006A2E: cmp eax, 0FFFFFFFFh +180006A31: jnz short loc_180006A75 +180006A33: or ebx, 4 +180006A36: mov [rsp+58h+arg_18], ebx +180006A3A: mov rax, [rsi] +180006A3D: movsxd rcx, dword ptr [rax+4] +180006A41: mov qword ptr [rcx+rsi+28h], 0 +180006A4A: jmp short loc_180006A88 +180006A4C: dec rdi +180006A4F: jmp short loc_1800069E8 +180006A51: mov rdx, [rsi] +180006A54: movsxd rax, dword ptr [rdx+4] +180006A58: mov r8, r15 +180006A5B: mov rdx, r12 +180006A5E: mov rcx, [rax+rsi+48h] +180006A63: call cs:?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z; std::basic_streambuf>::sputn(char const *,__int64) +180006A69: cmp rax, r15 +180006A6C: jz short loc_180006A12 +180006A6E: mov ebx, 4 +180006A73: jmp short loc_180006A36 +180006A75: dec rdi +180006A78: jmp short loc_180006A12 +180006A7A: mov rsi, [rsp+58h+arg_0] +180006A7F: mov ebx, [rsp+58h+arg_18] +180006A83: mov r14, [rsp+58h+var_38] +180006A88: mov rax, [rsi] +180006A8B: movsxd rcx, dword ptr [rax+4] +180006A8F: add rcx, rsi +180006A92: xor r8d, r8d +180006A95: mov edx, ebx +180006A97: call cs:?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z; std::basic_ios>::setstate(int,bool) +180006A9D: nop +180006A9E: call cs:?uncaught_exception@std@@YA_NXZ; std::uncaught_exception(void) +180006AA4: test al, al +180006AA6: jnz short loc_180006AB2 +180006AA8: mov rcx, r14 +180006AAB: call cs:?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ; std::basic_ostream>::_Osfx(void) +180006AB1: nop +180006AB2: mov rax, [r14] +180006AB5: movsxd rcx, dword ptr [rax+4] +180006AB9: mov rcx, [rcx+r14+48h] +180006ABE: test rcx, rcx +180006AC1: jz short loc_180006ACA +180006AC3: mov rax, [rcx] +180006AC6: call qword ptr [rax+10h] +180006AC9: nop +180006ACA: mov rax, rsi +180006ACD: mov rbx, [rsp+58h+arg_8] +180006AD2: add rsp, 30h +180006AD6: pop r15 +180006AD8: pop r14 +180006ADA: pop r12 +180006ADC: pop rdi +180006ADD: pop rsi +180006ADE: retn + +### FUNC 180006AE0 - 180006C45 (357 bytes) name=sub_180006AE0 +180006AE0: push rbx +180006AE2: push rsi +180006AE3: push r14 +180006AE5: sub rsp, 30h +180006AE9: mov r14, [rcx+10h] +180006AED: mov rbx, 7FFFFFFFFFFFFFFEh +180006AF7: mov rax, rbx +180006AFA: mov rsi, rcx +180006AFD: sub rax, r14 +180006B00: cmp rax, rdx +180006B03: jb loc_180006C39 +180006B09: mov [rsp+48h+arg_10], rbp +180006B0E: mov rbp, [rcx+18h] +180006B12: mov [rsp+48h+var_28], r15 +180006B17: lea r15, [rdx+r14] +180006B1B: mov rdx, r15 +180006B1E: or rdx, 7 +180006B22: cmp rdx, rbx +180006B25: ja short loc_180006B46 +180006B27: mov rcx, rbp +180006B2A: mov rax, rbx +180006B2D: shr rcx, 1 +180006B30: sub rax, rcx +180006B33: cmp rbp, rax +180006B36: ja short loc_180006B46 +180006B38: lea rax, [rcx+rbp] +180006B3C: mov rbx, rdx +180006B3F: cmp rdx, rax +180006B42: cmovb rbx, rax +180006B46: mov rax, 0FFFFFFFFFFFFFFFFh +180006B4D: mov [rsp+48h+var_20], rdi +180006B52: mov rcx, rbx +180006B55: add rcx, 1 +180006B59: cmovb rcx, rax +180006B5D: mov rax, 7FFFFFFFFFFFFFFFh +180006B67: cmp rcx, rax +180006B6A: ja loc_180006C3F +180006B70: add rcx, rcx; Size +180006B73: cmp rcx, 1000h +180006B7A: jb short loc_180006BA4 +180006B7C: lea rax, [rcx+27h] +180006B80: cmp rax, rcx +180006B83: jbe loc_180006C3F +180006B89: mov rcx, rax; Size +180006B8C: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180006B91: test rax, rax +180006B94: jz short loc_180006C0C +180006B96: lea rdi, [rax+27h] +180006B9A: and rdi, 0FFFFFFFFFFFFFFE0h +180006B9E: mov [rdi-8], rax +180006BA2: jmp short loc_180006BB5 +180006BA4: test rcx, rcx +180006BA7: jz short loc_180006BB3 +180006BA9: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180006BAE: mov rdi, rax +180006BB1: jmp short loc_180006BB5 +180006BB3: xor edi, edi +180006BB5: mov [rsi+10h], r15 +180006BB9: lea r8, ds:2[r14*2]; Size +180006BC1: mov [rsi+18h], rbx +180006BC5: mov rcx, rdi; void * +180006BC8: cmp rbp, 8 +180006BCC: jb short loc_180006C13 +180006BCE: mov rbx, [rsi] +180006BD1: mov rdx, rbx; Src +180006BD4: call memcpy +180006BD9: lea rdx, ds:2[rbp*2] +180006BE1: cmp rdx, 1000h +180006BE8: jb short loc_180006C02 +180006BEA: mov rcx, [rbx-8] +180006BEE: add rdx, 27h ; ''' +180006BF2: sub rbx, rcx +180006BF5: lea rax, [rbx-8] +180006BF9: cmp rax, 1Fh +180006BFD: ja short loc_180006C0C +180006BFF: mov rbx, rcx +180006C02: mov rcx, rbx; Block +180006C05: call j_j_free +180006C0A: jmp short loc_180006C1B +180006C0C: call cs:_invalid_parameter_noinfo_noreturn +180006C12: int 3; Trap to Debugger +180006C13: mov rdx, rsi; Src +180006C16: call memcpy +180006C1B: mov [rsi], rdi +180006C1E: mov rax, rsi +180006C21: mov rdi, [rsp+48h+var_20] +180006C26: mov rbp, [rsp+48h+arg_10] +180006C2B: mov r15, [rsp+48h+var_28] +180006C30: add rsp, 30h +180006C34: pop r14 +180006C36: pop rsi +180006C37: pop rbx +180006C38: retn +180006C39: call sub_180002B40 +180006C3E: db 0CCh +180006C3F: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180006C44: db 0CCh + +### FUNC 180006C50 - 180006D97 (327 bytes) name=sub_180006C50 +180006C50: push rbx +180006C52: push rsi +180006C53: push r14 +180006C55: sub rsp, 30h +180006C59: mov r14, [rcx+10h] +180006C5D: mov rbx, 7FFFFFFFFFFFFFFFh +180006C67: mov rax, rbx +180006C6A: mov rsi, rcx +180006C6D: sub rax, r14 +180006C70: cmp rax, rdx +180006C73: jb loc_180006D91 +180006C79: mov [rsp+48h+arg_10], rbp +180006C7E: mov rbp, [rcx+18h] +180006C82: mov [rsp+48h+var_28], r15 +180006C87: lea r15, [rdx+r14] +180006C8B: mov rdx, r15 +180006C8E: or rdx, 0Fh +180006C92: cmp rdx, rbx +180006C95: ja short loc_180006CB6 +180006C97: mov rcx, rbp +180006C9A: mov rax, rbx +180006C9D: shr rcx, 1 +180006CA0: sub rax, rcx +180006CA3: cmp rbp, rax +180006CA6: ja short loc_180006CB6 +180006CA8: lea rax, [rcx+rbp] +180006CAC: mov rbx, rdx +180006CAF: cmp rdx, rax +180006CB2: cmovb rbx, rax +180006CB6: mov rcx, rbx +180006CB9: mov [rsp+48h+var_20], rdi +180006CBE: add rcx, 1 +180006CC2: mov rax, 0FFFFFFFFFFFFFFFFh +180006CC9: cmovb rcx, rax; Size +180006CCD: cmp rcx, 1000h +180006CD4: jb short loc_180006CFE +180006CD6: lea rax, [rcx+27h] +180006CDA: cmp rax, rcx +180006CDD: jbe loc_180006D8B +180006CE3: mov rcx, rax; Size +180006CE6: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180006CEB: test rax, rax +180006CEE: jz short loc_180006D5E +180006CF0: lea rdi, [rax+27h] +180006CF4: and rdi, 0FFFFFFFFFFFFFFE0h +180006CF8: mov [rdi-8], rax +180006CFC: jmp short loc_180006D0F +180006CFE: test rcx, rcx +180006D01: jz short loc_180006D0D +180006D03: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180006D08: mov rdi, rax +180006D0B: jmp short loc_180006D0F +180006D0D: xor edi, edi +180006D0F: mov [rsi+10h], r15 +180006D13: lea r8, [r14+1]; Size +180006D17: mov [rsi+18h], rbx +180006D1B: mov rcx, rdi; void * +180006D1E: cmp rbp, 10h +180006D22: jb short loc_180006D65 +180006D24: mov rbx, [rsi] +180006D27: mov rdx, rbx; Src +180006D2A: call memcpy +180006D2F: lea rdx, [rbp+1] +180006D33: cmp rdx, 1000h +180006D3A: jb short loc_180006D54 +180006D3C: mov rcx, [rbx-8] +180006D40: add rdx, 27h ; ''' +180006D44: sub rbx, rcx +180006D47: lea rax, [rbx-8] +180006D4B: cmp rax, 1Fh +180006D4F: ja short loc_180006D5E +180006D51: mov rbx, rcx +180006D54: mov rcx, rbx; Block +180006D57: call j_j_free +180006D5C: jmp short loc_180006D6D +180006D5E: call cs:_invalid_parameter_noinfo_noreturn +180006D64: int 3; Trap to Debugger +180006D65: mov rdx, rsi; Src +180006D68: call memcpy +180006D6D: mov [rsi], rdi +180006D70: mov rax, rsi +180006D73: mov rdi, [rsp+48h+var_20] +180006D78: mov rbp, [rsp+48h+arg_10] +180006D7D: mov r15, [rsp+48h+var_28] +180006D82: add rsp, 30h +180006D86: pop r14 +180006D88: pop rsi +180006D89: pop rbx +180006D8A: retn +180006D8B: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180006D90: db 0CCh +180006D91: call sub_180002B40 +180006D96: db 0CCh + +### FUNC 180006DA0 - 180006E04 (100 bytes) name=sub_180006DA0 +180006DA0: push rbx +180006DA2: sub rsp, 20h +180006DA6: mov rbx, [rcx] +180006DA9: test rbx, rbx +180006DAC: jz short loc_180006DF7 +180006DAE: mov rdx, [rbx+18h] +180006DB2: cmp rdx, 10h +180006DB6: jb short loc_180006DE4 +180006DB8: mov rcx, [rbx] +180006DBB: inc rdx +180006DBE: cmp rdx, 1000h +180006DC5: jb short loc_180006DDF +180006DC7: mov r8, [rcx-8] +180006DCB: add rdx, 27h ; ''' +180006DCF: sub rcx, r8 +180006DD2: lea rax, [rcx-8] +180006DD6: cmp rax, 1Fh +180006DDA: ja short loc_180006DFD +180006DDC: mov rcx, r8; Block +180006DDF: call j_j_free +180006DE4: mov qword ptr [rbx+10h], 0 +180006DEC: mov qword ptr [rbx+18h], 0Fh +180006DF4: mov byte ptr [rbx], 0 +180006DF7: add rsp, 20h +180006DFB: pop rbx +180006DFC: retn +180006DFD: call cs:_invalid_parameter_noinfo_noreturn +180006E03: db 0CCh + +### FUNC 180006E10 - 180006E77 (103 bytes) name=sub_180006E10 +180006E10: push rbx +180006E12: sub rsp, 20h +180006E16: mov rbx, [rcx] +180006E19: test rbx, rbx +180006E1C: jz short loc_180006E6A +180006E1E: mov rdx, [rbx+18h] +180006E22: cmp rdx, 8 +180006E26: jb short loc_180006E59 +180006E28: mov rcx, [rbx] +180006E2B: lea rdx, ds:2[rdx*2] +180006E33: cmp rdx, 1000h +180006E3A: jb short loc_180006E54 +180006E3C: mov r8, [rcx-8] +180006E40: add rdx, 27h ; ''' +180006E44: sub rcx, r8 +180006E47: lea rax, [rcx-8] +180006E4B: cmp rax, 1Fh +180006E4F: ja short loc_180006E70 +180006E51: mov rcx, r8; Block +180006E54: call j_j_free +180006E59: xor eax, eax +180006E5B: mov qword ptr [rbx+18h], 7 +180006E63: mov [rbx+10h], rax +180006E67: mov [rbx], ax +180006E6A: add rsp, 20h +180006E6E: pop rbx +180006E6F: retn +180006E70: call cs:_invalid_parameter_noinfo_noreturn +180006E76: db 0CCh + +### FUNC 180006E78 - 180006E84 (12 bytes) name=sub_180006E78 +180006E78: movsxd rax, dword ptr [rcx-4] +180006E7C: sub rcx, rax +180006E7F: jmp sub_180006200 + +### FUNC 180006E90 - 180006EEF (95 bytes) name=sub_180006E90 +180006E90: sub rsp, 0B8h +180006E97: mov rcx, [rcx] +180006E9A: mov rcx, [rcx+60h]; hMutex +180006E9E: call cs:ReleaseMutex +180006EA4: nop +180006EA5: test eax, eax +180006EA7: jz short loc_180006EB1 +180006EA9: add rsp, 0B8h +180006EB0: retn +180006EB1: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180006EB8: lea rcx, [rsp+0B8h+var_98] +180006EBD: call sub_180002510 +180006EC2: nop +180006EC3: mov rdx, rax +180006EC6: lea r9, aErrorReleasing; "Error releasing read mutex." +180006ECD: mov r8d, 271h +180006ED3: lea rcx, [rsp+0B8h+pExceptionObject] +180006ED8: call sub_180004310 +180006EDD: nop +180006EDE: lea rdx, stru_1800134B8; pThrowInfo +180006EE5: lea rcx, [rsp+0B8h+pExceptionObject]; pExceptionObject +180006EEA: call _CxxThrowException + +### FUNC 180006EF0 - 180006F4F (95 bytes) name=sub_180006EF0 +180006EF0: sub rsp, 0B8h +180006EF7: mov rcx, [rcx] +180006EFA: mov rcx, [rcx+68h]; hMutex +180006EFE: call cs:ReleaseMutex +180006F04: nop +180006F05: test eax, eax +180006F07: jz short loc_180006F11 +180006F09: add rsp, 0B8h +180006F10: retn +180006F11: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180006F18: lea rcx, [rsp+0B8h+var_98] +180006F1D: call sub_180002510 +180006F22: nop +180006F23: mov rdx, rax +180006F26: lea r9, aErrorReleasing_0; "Error releasing write mutex." +180006F2D: mov r8d, 281h +180006F33: lea rcx, [rsp+0B8h+pExceptionObject] +180006F38: call sub_180004310 +180006F3D: nop +180006F3E: lea rdx, stru_1800134B8; pThrowInfo +180006F45: lea rcx, [rsp+0B8h+pExceptionObject]; pExceptionObject +180006F4A: call _CxxThrowException + +### FUNC 180006F50 - 1800070F3 (419 bytes) name=sub_180006F50 +180006F50: mov [rsp+arg_8], rbx +180006F55: mov [rsp+arg_10], rbp +180006F5A: mov [rsp+arg_18], rsi +180006F5F: push rdi +180006F60: push r12 +180006F62: push r13 +180006F64: push r14 +180006F66: push r15 +180006F68: sub rsp, 30h +180006F6C: mov r13, r9 +180006F6F: mov ebp, r8d +180006F72: mov rsi, rdx +180006F75: mov r15, rcx +180006F78: lea rax, off_18000FCD8 +180006F7F: mov [rcx], rax +180006F82: mov ecx, 70h ; 'p'; Size +180006F87: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180006F8C: mov rdi, rax +180006F8F: mov [rsp+58h+var_38], rax +180006F94: xorps xmm0, xmm0 +180006F97: movups xmmword ptr [rax], xmm0 +180006F9A: movups xmmword ptr [rax+10h], xmm0 +180006F9E: movups xmmword ptr [rax+20h], xmm0 +180006FA2: movups xmmword ptr [rax+30h], xmm0 +180006FA6: movups xmmword ptr [rax+40h], xmm0 +180006FAA: movups xmmword ptr [rax+50h], xmm0 +180006FAE: movups xmmword ptr [rax+60h], xmm0 +180006FB2: lea rax, off_18000FCC8 +180006FB9: mov [rdi], rax +180006FBC: mov rcx, rsi +180006FBF: mov rdx, [rsi+18h] +180006FC3: cmp rdx, 10h +180006FC7: jb short loc_180006FCC +180006FC9: mov rcx, [rsi] +180006FCC: mov rbx, [rsi+10h] +180006FD0: add rbx, rcx +180006FD3: cmp rdx, 10h +180006FD7: jb short loc_180006FDC +180006FD9: mov rsi, [rsi] +180006FDC: lea r14, [rdi+8] +180006FE0: xor r12d, r12d +180006FE3: mov [r14+10h], r12 +180006FE7: mov qword ptr [r14+18h], 7 +180006FEF: mov [r14], r12w +180006FF3: mov rdx, rbx +180006FF6: sub rdx, rsi +180006FF9: mov rcx, r14 +180006FFC: call sub_180006860 +180007001: mov [rsp+58h+var_30], r14 +180007006: cmp rsi, rbx +180007009: jz short loc_180007052 +18000700B: nop dword ptr [rax+rax+00h] +180007010: movsx r9d, byte ptr [rsi] +180007014: mov rcx, [r14+10h] +180007018: mov rdx, [r14+18h] +18000701C: cmp rcx, rdx +18000701F: jnb short loc_180007042 +180007021: lea rax, [rcx+1] +180007025: mov [r14+10h], rax +180007029: mov rax, r14 +18000702C: cmp rdx, 8 +180007030: jb short loc_180007035 +180007032: mov rax, [r14] +180007035: mov [rax+rcx*2], r9w +18000703A: mov [rax+rcx*2+2], r12w +180007040: jmp short loc_18000704A +180007042: mov rcx, r14; Src +180007045: call sub_180006500 +18000704A: inc rsi +18000704D: cmp rsi, rbx +180007050: jnz short loc_180007010 +180007052: mov qword ptr [rdi+28h], 0FFFFFFFFFFFFFFFFh +18000705A: mov byte ptr [rdi+30h], 0 +18000705E: mov [rdi+34h], r12 +180007062: mov [rdi+3Ch], r12 +180007066: mov [rdi+44h], r12d +18000706A: mov [rdi+48h], ebp +18000706D: mov [rdi+4Ch], r12d +180007071: mov dword ptr [rdi+50h], 8 +180007078: mov qword ptr [rdi+54h], 1 +180007080: cmp qword ptr [rdi+18h], 0 +180007085: jz short loc_18000708F +180007087: mov rcx, rdi +18000708A: call sub_180005040 +18000708F: xor r8d, r8d; lpName +180007092: xor edx, edx; bInitialOwner +180007094: xor ecx, ecx; lpMutexAttributes +180007096: call cs:CreateMutexW +18000709C: mov [rdi+60h], rax +1800070A0: xor r8d, r8d; lpName +1800070A3: xor edx, edx; bInitialOwner +1800070A5: xor ecx, ecx; lpMutexAttributes +1800070A7: call cs:CreateMutexW +1800070AD: mov [rdi+68h], rax +1800070B1: mov [r15+8], rdi +1800070B5: movups xmm0, xmmword ptr [r13+0] +1800070BA: movups xmmword ptr [rdi+34h], xmm0 +1800070BE: mov ecx, [r13+10h] +1800070C2: mov [rdi+44h], ecx +1800070C5: cmp byte ptr [rdi+30h], 0 +1800070C9: jz short loc_1800070D3 +1800070CB: mov rcx, rdi +1800070CE: call sub_1800053C0 +1800070D3: mov rax, r15 +1800070D6: mov rbx, [rsp+58h+arg_8] +1800070DB: mov rbp, [rsp+58h+arg_10] +1800070E0: mov rsi, [rsp+58h+arg_18] +1800070E5: add rsp, 30h +1800070E9: pop r15 +1800070EB: pop r14 +1800070ED: pop r13 +1800070EF: pop r12 +1800070F1: pop rdi +1800070F2: retn + +### FUNC 180007100 - 18000714D (77 bytes) name=sub_180007100 +180007100: mov [rsp+arg_0], rbx +180007105: push rdi +180007106: sub rsp, 20h +18000710A: lea rax, off_18000FCD8 +180007111: mov rbx, rcx +180007114: mov [rcx], rax +180007117: mov edi, edx +180007119: mov rcx, [rcx+8] +18000711D: test rcx, rcx +180007120: jz short loc_18000712C +180007122: mov rax, [rcx] +180007125: mov edx, 1 +18000712A: call qword ptr [rax] +18000712C: test dil, 1 +180007130: jz short loc_18000713F +180007132: mov edx, 10h +180007137: mov rcx, rbx; Block +18000713A: call j_j_free +18000713F: mov rax, rbx +180007142: mov rbx, [rsp+28h+arg_0] +180007147: add rsp, 20h +18000714B: pop rdi +18000714C: retn + +### FUNC 180007150 - 18000727C (300 bytes) name=sub_180007150 +180007150: push rbx +180007152: sub rsp, 240h +180007159: mov rax, cs:__security_cookie +180007160: xor rax, rsp +180007163: mov [rsp+248h+var_18], rax +18000716B: mov rcx, [rcx+8] +18000716F: cmp byte ptr [rcx+30h], 0 +180007173: jz loc_180007259 +180007179: mov [rsp+248h+lpOverlapped], 0; lpOverlapped +180007182: lea r9, [rsp+248h+NumberOfBytesWritten]; lpNumberOfBytesWritten +18000718A: mov rcx, [rcx+28h]; hFile +18000718E: call cs:WriteFile +180007194: test eax, eax +180007196: jz short loc_1800071B8 +180007198: mov eax, [rsp+248h+NumberOfBytesWritten] +18000719F: mov rcx, [rsp+248h+var_18] +1800071A7: xor rcx, rsp; StackCookie +1800071AA: call __security_check_cookie +1800071AF: add rsp, 240h +1800071B6: pop rbx +1800071B7: retn +1800071B8: lea rcx, [rsp+248h+var_118] +1800071C0: call sub_180004300 +1800071C5: lea rcx, [rsp+248h+var_118] +1800071CD: call sub_1800060F0 +1800071D2: nop +1800071D3: call cs:GetLastError +1800071D9: mov ebx, eax +1800071DB: lea rdx, aErrorWhileWrit; "Error while writing to the serial port:"... +1800071E2: lea rcx, [rsp+248h+var_108] +1800071EA: call sub_180006310 +1800071EF: mov rcx, rax +1800071F2: mov edx, ebx +1800071F4: call cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream>::operator<<(ulong) +1800071FA: lea rdx, [rsp+248h+var_1B8] +180007202: lea rcx, [rsp+248h+var_118] +18000720A: call sub_180006050 +18000720F: mov rbx, rax +180007212: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180007219: lea rcx, [rsp+248h+var_210] +18000721E: call sub_180002510 +180007223: mov rdx, rax +180007226: mov rcx, rbx +180007229: call sub_1800061B0 +18000722E: mov r9, rax +180007231: mov r8d, 163h +180007237: lea rcx, [rsp+248h+pExceptionObject] +18000723F: call sub_180004310 +180007244: lea rdx, stru_1800134B8; pThrowInfo +18000724B: lea rcx, [rsp+248h+pExceptionObject]; pExceptionObject +180007253: call _CxxThrowException +180007258: db 90h +180007259: lea rdx, aSerialWrite; "Serial::write" +180007260: lea rcx, [rsp+248h+var_1F0] +180007265: call sub_1800048A0 +18000726A: lea rdx, stru_1800134D8; pThrowInfo +180007271: lea rcx, [rsp+248h+var_1F0]; pExceptionObject +180007276: call _CxxThrowException +18000727B: db 0CCh + +### FUNC 180007280 - 180007304 (132 bytes) name=sub_180007280 +180007280: mov [rsp+arg_8], rbx +180007285: mov [rsp+arg_10], rbp +18000728A: mov [rsp+arg_18], rsi +18000728F: push rdi +180007290: sub rsp, 20h +180007294: mov rbx, rcx +180007297: mov rsi, r9 +18000729A: mov rcx, [rcx] +18000729D: mov rbp, r8 +1800072A0: mov rdi, rdx +1800072A3: test rcx, rcx +1800072A6: jz short loc_1800072D5 +1800072A8: mov rdx, [rbx+10h] +1800072AC: sub rdx, rcx +1800072AF: cmp rdx, 1000h +1800072B6: jb short loc_1800072D0 +1800072B8: mov r8, [rcx-8] +1800072BC: add rdx, 27h ; ''' +1800072C0: sub rcx, r8 +1800072C3: lea rax, [rcx-8] +1800072C7: cmp rax, 1Fh +1800072CB: ja short loc_1800072FD +1800072CD: mov rcx, r8; Block +1800072D0: call j_j_free +1800072D5: lea rax, [rdi+rbp] +1800072D9: mov [rbx], rdi +1800072DC: mov rbp, [rsp+28h+arg_10] +1800072E1: mov [rbx+8], rax +1800072E5: lea rax, [rdi+rsi] +1800072E9: mov rsi, [rsp+28h+arg_18] +1800072EE: mov [rbx+10h], rax +1800072F2: mov rbx, [rsp+28h+arg_8] +1800072F7: add rsp, 20h +1800072FB: pop rdi +1800072FC: retn +1800072FD: call cs:_invalid_parameter_noinfo_noreturn +180007303: db 0CCh + +### FUNC 180007310 - 18000731F (15 bytes) name=sub_180007310 +180007310: sub rsp, 28h +180007314: mov rax, [rcx] +180007317: call qword ptr [rax] +180007319: nop +18000731A: add rsp, 28h +18000731E: retn + +### FUNC 180007320 - 180007354 (52 bytes) name=sub_180007320 +180007320: mov [rsp+arg_0], rbx +180007325: push rdi +180007326: sub rsp, 20h +18000732A: mov ebx, edx +18000732C: mov rdi, rcx +18000732F: call sub_180007360 +180007334: test bl, 1 +180007337: jz short loc_180007346 +180007339: mov edx, 30h ; '0' +18000733E: mov rcx, rdi; Block +180007341: call j_j_free +180007346: mov rbx, [rsp+28h+arg_0] +18000734B: mov rax, rdi +18000734E: add rsp, 20h +180007352: pop rdi +180007353: retn + +### FUNC 180007360 - 1800073EA (138 bytes) name=sub_180007360 +180007360: push rbx +180007362: sub rsp, 20h +180007366: mov rbx, rcx +180007369: lea rax, off_18000FCE8 +180007370: mov [rcx], rax +180007373: cmp qword ptr [rcx+20h], 0 +180007378: jz short loc_1800073BB +18000737A: movzx eax, byte ptr [rcx+18h] +18000737E: cmp al, 1 +180007380: jnz short loc_1800073BB +180007382: mov rax, [rcx] +180007385: call qword ptr [rax+28h] +180007388: nop +180007389: test al, al +18000738B: jz short loc_1800073BB +18000738D: mov byte ptr [rbx+18h], 0 +180007391: mov rcx, [rbx+20h] +180007395: mov rcx, [rcx+8] +180007399: call sub_180005790 +18000739E: nop +18000739F: mov rcx, [rbx+20h] +1800073A3: test rcx, rcx +1800073A6: jz short loc_1800073B3 +1800073A8: mov rax, [rcx] +1800073AB: mov edx, 1 +1800073B0: call qword ptr [rax] +1800073B2: nop +1800073B3: mov qword ptr [rbx+20h], 0 +1800073BB: mov rcx, [rbx+20h] +1800073BF: test rcx, rcx +1800073C2: jz short loc_1800073CF +1800073C4: mov rax, [rcx] +1800073C7: mov edx, 1 +1800073CC: call qword ptr [rax] +1800073CE: nop +1800073CF: mov qword ptr [rbx+20h], 0 +1800073D7: cmp dword ptr [rbx+10h], 0 +1800073DB: jz short loc_1800073E4 +1800073DD: call cs:terminate +1800073E3: nop +1800073E4: add rsp, 20h +1800073E8: pop rbx +1800073E9: retn + +### FUNC 1800073F0 - 180007511 (289 bytes) name=sub_1800073F0 +1800073F0: mov [rsp+arg_10], rbx +1800073F5: push rsi +1800073F6: push rdi +1800073F7: push r14 +1800073F9: sub rsp, 80h +180007400: mov rax, cs:__security_cookie +180007407: xor rax, rsp +18000740A: mov [rsp+98h+var_28], rax +18000740F: mov edi, r8d +180007412: mov rsi, rdx +180007415: mov rbx, rcx +180007418: mov [rsp+98h+var_38], rcx +18000741D: mov rax, [rcx] +180007420: call qword ptr [rax+28h] +180007423: test al, al +180007425: jz short loc_180007431 +180007427: mov rax, [rbx] +18000742A: mov rcx, rbx +18000742D: call qword ptr [rax+20h] +180007430: nop +180007431: mov ecx, 10h; Size +180007436: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000743B: mov [rsp+98h+var_30], rax +180007440: xorps xmm0, xmm0 +180007443: movups xmmword ptr [rax], xmm0 +180007446: xor r14d, r14d +180007449: mov qword ptr [rsp+98h+var_58], r14 +18000744E: mov qword ptr [rsp+98h+var_58+8], r14 +180007453: movups xmm0, xmmword ptr [rsp+98h+var_58] +180007458: movaps xmmword ptr [rsp+98h+var_58], xmm0 +18000745D: mov [rsp+98h+var_48], r14d +180007462: lea r9, [rsp+98h+var_58] +180007467: mov r8d, edi +18000746A: mov rdx, rsi +18000746D: mov rcx, rax +180007470: call sub_180006F50 +180007475: nop +180007476: mov [rbx+20h], rax +18000747A: lea ecx, [r14+10h]; Size +18000747E: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180007483: mov [rax], rbx +180007486: lea rcx, sub_180007310 +18000748D: mov [rax+8], rcx +180007491: mov [rsp+98h+var_30], rax +180007496: lea rcx, [rsp+98h+var_58+8] +18000749B: mov [rsp+98h+ThrdAddr], rcx; ThrdAddr +1800074A0: mov [rsp+98h+InitFlag], r14d; InitFlag +1800074A5: mov r9, rax; ArgList +1800074A8: lea r8, StartAddress; StartAddress +1800074AF: xor edx, edx; StackSize +1800074B1: xor ecx, ecx; Security +1800074B3: call cs:_beginthreadex +1800074B9: mov qword ptr [rsp+98h+var_58], rax +1800074BE: test rax, rax +1800074C1: jz short loc_1800074DD +1800074C3: cmp [rbx+10h], r14d +1800074C7: jnz short loc_1800074D6 +1800074C9: movaps xmm0, xmmword ptr [rsp+98h+var_58] +1800074CE: movups xmmword ptr [rbx+8], xmm0 +1800074D2: mov al, 1 +1800074D4: jmp short loc_1800074F0 +1800074D6: call cs:terminate +1800074DC: nop +1800074DD: mov [rsp+98h+var_58+8], r14d +1800074E2: mov ecx, 6 +1800074E7: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +1800074ED: nop +1800074EE: xor al, al +1800074F0: mov rcx, [rsp+98h+var_28] +1800074F5: xor rcx, rsp; StackCookie +1800074F8: call __security_check_cookie +1800074FD: mov rbx, [rsp+98h+arg_10] +180007505: add rsp, 80h +18000750C: pop r14 +18000750E: pop rdi +18000750F: pop rsi +180007510: retn + +### FUNC 180007520 - 180007565 (69 bytes) name=sub_180007520 +180007520: push rbx +180007522: sub rsp, 20h +180007526: mov rax, [rcx] +180007529: mov rbx, rcx +18000752C: call qword ptr [rax+28h] +18000752F: test al, al +180007531: jz short loc_18000755F +180007533: mov rcx, [rbx+20h] +180007537: mov byte ptr [rbx+18h], 0 +18000753B: mov rcx, [rcx+8] +18000753F: call sub_180005790 +180007544: mov rcx, [rbx+20h] +180007548: test rcx, rcx +18000754B: jz short loc_180007557 +18000754D: mov rax, [rcx] +180007550: mov edx, 1 +180007555: call qword ptr [rax] +180007557: mov qword ptr [rbx+20h], 0 +18000755F: add rsp, 20h +180007563: pop rbx +180007564: retn + +### FUNC 180007570 - 180007583 (19 bytes) name=sub_180007570 +180007570: cmp qword ptr [rcx+20h], 0 +180007575: jz short loc_180007580 +180007577: movzx eax, byte ptr [rcx+18h] +18000757B: cmp al, 1 +18000757D: jnz short loc_180007580 +18000757F: retn +180007580: xor al, al +180007582: retn + +### FUNC 180007590 - 1800076B6 (294 bytes) name=sub_180007590 +180007590: mov [rsp+arg_18], rbx +180007595: push rbp +180007596: push rsi +180007597: push rdi +180007598: sub rsp, 150h +18000759F: mov rax, cs:__security_cookie +1800075A6: xor rax, rsp +1800075A9: mov [rsp+168h+var_20], rax +1800075B1: movsxd rbp, r8d +1800075B4: mov rsi, rdx +1800075B7: mov rbx, rcx +1800075BA: mov rax, [rcx] +1800075BD: call qword ptr [rax+28h] +1800075C0: test al, al +1800075C2: jnz short loc_1800075CB +1800075C4: mov eax, 0FFFFFFFFh +1800075C9: jmp short loc_180007613 +1800075CB: mov rdi, [rbx+20h] +1800075CF: mov rbx, [rdi+8] +1800075D3: mov [rsp+168h+var_28], rbx +1800075DB: mov edx, 0FFFFFFFFh; dwMilliseconds +1800075E0: mov rcx, [rbx+68h]; hHandle +1800075E4: call cs:WaitForSingleObject +1800075EA: test eax, eax +1800075EC: jnz loc_180007679 +1800075F2: mov r8, rbp +1800075F5: mov rdx, rsi +1800075F8: mov rcx, rdi +1800075FB: call sub_180007150 +180007600: mov rdi, rax +180007603: mov rcx, [rbx+68h]; hMutex +180007607: call cs:ReleaseMutex +18000760D: test eax, eax +18000760F: jz short loc_180007636 +180007611: mov eax, edi +180007613: mov rcx, [rsp+168h+var_20] +18000761B: xor rcx, rsp; StackCookie +18000761E: call __security_check_cookie +180007623: mov rbx, [rsp+168h+arg_18] +18000762B: add rsp, 150h +180007632: pop rdi +180007633: pop rsi +180007634: pop rbp +180007635: retn +180007636: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +18000763D: lea rcx, [rsp+168h+var_128] +180007642: call sub_180002510 +180007647: lea r9, aErrorReleasing_0; "Error releasing write mutex." +18000764E: mov r8d, 281h +180007654: mov rdx, rax +180007657: lea rcx, [rsp+168h+pExceptionObject] +18000765F: call sub_180004310 +180007664: lea rdx, stru_1800134B8; pThrowInfo +18000766B: lea rcx, [rsp+168h+pExceptionObject]; pExceptionObject +180007673: call _CxxThrowException +180007678: db 90h +180007679: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180007680: lea rcx, [rsp+168h+var_148] +180007685: call sub_180002510 +18000768A: lea r9, aErrorClaimingW; "Error claiming write mutex." +180007691: mov r8d, 279h +180007697: mov rdx, rax +18000769A: lea rcx, [rsp+168h+var_108] +18000769F: call sub_180004310 +1800076A4: lea rdx, stru_1800134B8; pThrowInfo +1800076AB: lea rcx, [rsp+168h+var_108]; pExceptionObject +1800076B0: call _CxxThrowException +1800076B5: db 0CCh + +### FUNC 1800076C0 - 180007906 (582 bytes) name=sub_1800076C0 +1800076C0: mov [rsp-8+arg_8], rbx +1800076C5: mov [rsp-8+arg_10], rsi +1800076CA: mov [rsp-8+arg_18], rdi +1800076CF: push rbp +1800076D0: push r14 +1800076D2: push r15 +1800076D4: lea rbp, [rsp-620h] +1800076DC: sub rsp, 720h +1800076E3: mov rax, cs:__security_cookie +1800076EA: xor rax, rsp +1800076ED: mov [rbp+630h+var_20], rax +1800076F4: mov rsi, rcx +1800076F7: mov byte ptr [rcx+18h], 1 +1800076FB: movzx eax, byte ptr [rcx+18h] +1800076FF: test al, al +180007701: jz loc_1800077CD +180007707: mov r15d, 400h +18000770D: nop dword ptr [rax] +180007710: mov rax, [rsi+20h] +180007714: mov rcx, [rax+8] +180007718: cmp byte ptr [rcx+30h], 0 +18000771C: jnz short loc_180007722 +18000771E: xor edi, edi +180007720: jmp short loc_180007743 +180007722: lea r8, [rbp+630h+Stat]; lpStat +180007729: xor edx, edx; lpErrors +18000772B: mov rcx, [rcx+28h]; hFile +18000772F: call cs:ClearCommError +180007735: test eax, eax +180007737: jz loc_180007834 +18000773D: mov edi, [rbp+630h+Stat.cbInQue] +180007743: test edi, edi +180007745: jle short loc_1800077C1 +180007747: mov r8, r15; Size +18000774A: xor edx, edx; Val +18000774C: lea rcx, [rbp+630h+var_420]; void * +180007753: call memset +180007758: cmp edi, r15d +18000775B: cmovg edi, r15d +18000775F: mov r14, [rsi+20h] +180007763: mov rbx, [r14+8] +180007767: mov [rbp+630h+var_540], rbx +18000776E: mov edx, 0FFFFFFFFh; dwMilliseconds +180007773: mov rcx, [rbx+60h]; hHandle +180007777: call cs:WaitForSingleObject +18000777D: test eax, eax +18000777F: jnz short loc_1800077F9 +180007781: mov r8d, edi +180007784: lea rdx, [rbp+630h+var_420] +18000778B: mov rcx, [r14+8] +18000778F: call sub_180005890 +180007794: mov rdi, rax +180007797: mov rcx, [rbx+60h]; hMutex +18000779B: call cs:ReleaseMutex +1800077A1: test eax, eax +1800077A3: jz loc_1800078CB +1800077A9: mov rcx, [rsi+28h] +1800077AD: test rcx, rcx +1800077B0: jz short loc_1800077C1 +1800077B2: mov rax, [rcx] +1800077B5: mov r8d, edi +1800077B8: lea rdx, [rbp+630h+var_420] +1800077BF: call qword ptr [rax] +1800077C1: movzx eax, byte ptr [rsi+18h] +1800077C5: test al, al +1800077C7: jnz loc_180007710 +1800077CD: mov rcx, [rbp+630h+var_20] +1800077D4: xor rcx, rsp; StackCookie +1800077D7: call __security_check_cookie +1800077DC: lea r11, [rsp+730h+var_10] +1800077E4: mov rbx, [r11+28h] +1800077E8: mov rsi, [r11+30h] +1800077EC: mov rdi, [r11+38h] +1800077F0: mov rsp, r11 +1800077F3: pop r15 +1800077F5: pop r14 +1800077F7: pop rbp +1800077F8: retn +1800077F9: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +180007800: lea rcx, [rsp+730h+var_6F0] +180007805: call sub_180002510 +18000780A: lea r9, aErrorClaimingR; "Error claiming read mutex." +180007811: mov r8d, 269h +180007817: mov rdx, rax +18000781A: lea rcx, [rbp+630h+pExceptionObject] +18000781E: call sub_180004310 +180007823: lea rdx, stru_1800134B8; pThrowInfo +18000782A: lea rcx, [rbp+630h+pExceptionObject]; pExceptionObject +18000782E: call _CxxThrowException +180007833: align 4 +180007834: lea rcx, [rbp+630h+var_520] +18000783B: call sub_180004300 +180007840: lea rcx, [rbp+630h+var_520] +180007847: call sub_1800060F0 +18000784C: nop +18000784D: call cs:GetLastError +180007853: mov ebx, eax +180007855: lea rdx, aErrorWhileChec; "Error while checking status of the seri"... +18000785C: lea rcx, [rbp+630h+var_510] +180007863: call sub_180006310 +180007868: mov rcx, rax +18000786B: mov edx, ebx +18000786D: call cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream>::operator<<(ulong) +180007873: lea rdx, [rbp+630h+var_6B0] +180007877: lea rcx, [rbp+630h+var_520] +18000787E: call sub_180006050 +180007883: mov rbx, rax +180007886: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +18000788D: lea rcx, [rsp+730h+var_6D0] +180007892: call sub_180002510 +180007897: mov rdx, rax +18000789A: mov rcx, rbx +18000789D: call sub_1800061B0 +1800078A2: mov r9, rax +1800078A5: mov r8d, 138h +1800078AB: lea rcx, [rbp+630h+var_5B0] +1800078B2: call sub_180004310 +1800078B7: lea rdx, stru_1800134B8; pThrowInfo +1800078BE: lea rcx, [rbp+630h+var_5B0]; pExceptionObject +1800078C5: call _CxxThrowException +1800078CA: db 90h +1800078CB: lea rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"... +1800078D2: lea rcx, [rsp+730h+var_710] +1800078D7: call sub_180002510 +1800078DC: lea r9, aErrorReleasing; "Error releasing read mutex." +1800078E3: mov r8d, 271h +1800078E9: mov rdx, rax +1800078EC: lea rcx, [rbp+630h+var_690] +1800078F0: call sub_180004310 +1800078F5: lea rdx, stru_1800134B8; pThrowInfo +1800078FC: lea rcx, [rbp+630h+var_690]; pExceptionObject +180007900: call _CxxThrowException +180007905: db 0CCh + +### FUNC 180007930 - 18000795D (45 bytes) name=StartAddress +180007930: push rbx +180007932: sub rsp, 20h +180007936: mov rbx, rcx +180007939: mov rcx, [rcx] +18000793C: call qword ptr [rbx+8] +18000793F: nop +180007940: call cs:_Cnd_do_broadcast_at_thread_exit +180007946: nop +180007947: mov edx, 10h +18000794C: mov rcx, rbx; Block +18000794F: call j_j_free +180007954: nop +180007955: xor eax, eax +180007957: add rsp, 20h +18000795B: pop rbx +18000795C: retn + +### FUNC 180007960 - 1800079B5 (85 bytes) name=sub_180007960 +180007960: mov [rsp+arg_0], rcx +180007965: mov qword ptr [rsp+arg_8], rdx +18000796A: mov [rsp+arg_10], r8 +18000796F: mov [rsp+arg_18], r9 +180007974: push rbx +180007975: push rsi +180007976: push rdi +180007977: sub rsp, 30h +18000797B: mov rdi, rcx +18000797E: lea rsi, [rsp+48h+arg_8] +180007983: mov ecx, 1; Ix +180007988: call cs:__acrt_iob_func +18000798E: mov rbx, rax +180007991: call sub_180002FC0 +180007996: xor r9d, r9d; Locale +180007999: mov [rsp+48h+ArgList], rsi; ArgList +18000799E: mov r8, rdi; Format +1800079A1: mov rdx, rbx; Stream +1800079A4: mov rcx, [rax]; Options +1800079A7: call cs:__stdio_common_vfprintf +1800079AD: add rsp, 30h +1800079B1: pop rdi +1800079B2: pop rsi +1800079B3: pop rbx +1800079B4: retn + +### FUNC 1800079C0 - 180007A37 (119 bytes) name=sub_1800079C0 +1800079C0: mov [rsp+arg_8], rbx +1800079C5: mov [rsp+arg_10], rsi +1800079CA: push rdi +1800079CB: sub rsp, 20h +1800079CF: lea rax, off_1800101B8 +1800079D6: mov rsi, rcx +1800079D9: mov [rcx], rax +1800079DC: mov edi, edx +1800079DE: sub rcx, 0FFFFFFFFFFFFFF80h; _Mtx_t +1800079E2: call cs:_Mtx_destroy_in_situ +1800079E8: lea rcx, [rsi+38h]; _Cnd_t +1800079EC: call cs:_Cnd_destroy_in_situ +1800079F2: lea rcx, [rsi+8] +1800079F6: call sub_180002550 +1800079FB: mov rcx, [rsi+8]; Block +1800079FF: mov edx, 10h +180007A04: mov qword ptr [rsi+8], 0 +180007A0C: call j_j_free +180007A11: test dil, 1 +180007A15: jz short loc_180007A24 +180007A17: mov edx, 0D8h +180007A1C: mov rcx, rsi; Block +180007A1F: call j_j_free +180007A24: mov rbx, [rsp+28h+arg_8] +180007A29: mov rax, rsi +180007A2C: mov rsi, [rsp+28h+arg_10] +180007A31: add rsp, 20h +180007A35: pop rdi +180007A36: retn + +### FUNC 180007A40 - 180007CCC (652 bytes) name=sub_180007A40 +180007A40: mov [rsp-18h+arg_8], rbx +180007A45: mov [rsp-18h+arg_10], rsi +180007A4A: push rbp +180007A4B: push rdi +180007A4C: push r14 +180007A4E: mov rbp, rsp +180007A51: sub rsp, 70h +180007A55: mov rax, cs:__security_cookie +180007A5C: xor rax, rsp +180007A5F: mov [rbp+var_10], rax +180007A63: mov rdi, rcx +180007A66: test edx, edx +180007A68: jnz short loc_180007A71 +180007A6A: mov al, 1 +180007A6C: jmp loc_180007CAB +180007A71: mov ebx, 80h +180007A76: cmp edx, ebx +180007A78: jg short loc_180007A86 +180007A7A: mov ebx, edx +180007A7C: mov eax, 0FFFFFF80h +180007A81: cmp edx, eax +180007A83: cmovl ebx, eax +180007A86: xorps xmm1, xmm1 +180007A89: movdqu xmmword ptr [rbp+Block], xmm1 +180007A8E: xor r14d, r14d +180007A91: mov [rbp+var_38], r14 +180007A95: lea r8, [rbp+var_50] +180007A99: xor edx, edx +180007A9B: lea rcx, [rbp+Block] +180007A9F: test ebx, ebx +180007AA1: jns short loc_180007AD5 +180007AA3: mov [rbp+var_50], 1 +180007AA7: call sub_180007D30 +180007AAC: neg bl +180007AAE: mov [rbp+var_50], bl +180007AB1: mov rdx, [rbp+Block+8] +180007AB5: cmp rdx, [rbp+var_38] +180007AB9: jz short loc_180007AC6 +180007ABB: mov [rdx], bl +180007ABD: inc rdx +180007AC0: mov [rbp+Block+8], rdx +180007AC4: jmp short loc_180007B03 +180007AC6: lea r8, [rbp+var_50] +180007ACA: lea rcx, [rbp+Block] +180007ACE: call sub_180007D30 +180007AD3: jmp short loc_180007B03 +180007AD5: mov [rbp+var_50], 0 +180007AD9: call sub_180007D30 +180007ADE: mov [rbp+var_50], bl +180007AE1: mov rdx, [rbp+Block+8] +180007AE5: cmp rdx, [rbp+var_38] +180007AE9: jz short loc_180007AF6 +180007AEB: mov [rdx], bl +180007AED: inc rdx +180007AF0: mov [rbp+Block+8], rdx +180007AF4: jmp short loc_180007B03 +180007AF6: lea r8, [rbp+var_50] +180007AFA: lea rcx, [rbp+Block] +180007AFE: call sub_180007D30 +180007B03: mov byte ptr [rdi+30h], 0 +180007B07: mov ecx, 28h ; '('; Size +180007B0C: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180007B11: mov rbx, rax +180007B14: mov qword ptr [rbp+var_30], rax +180007B18: xorps xmm0, xmm0 +180007B1B: xor eax, eax +180007B1D: movups xmmword ptr [rbx], xmm0 +180007B20: movups xmmword ptr [rbx+10h], xmm0 +180007B24: mov [rbx+20h], rax +180007B28: lea rax, off_1800100F8 +180007B2F: mov [rbx], rax +180007B32: mov [rbx+8], r14 +180007B36: mov [rbx+10h], r14 +180007B3A: mov [rbx+18h], r14 +180007B3E: lea r9, [rbp+Block] +180007B42: mov r8b, 77h ; 'w' +180007B45: mov rcx, rbx +180007B48: call sub_180009D70 +180007B4D: nop +180007B4E: mov rcx, [rdi+0D0h] +180007B55: test rcx, rcx +180007B58: jz short loc_180007B6C +180007B5A: mov rdx, [rbx+8] +180007B5E: mov r8, [rbx+10h] +180007B62: sub r8, rdx +180007B65: mov r9, [rcx] +180007B68: call qword ptr [r9+8] +180007B6C: mov rax, [rbx] +180007B6F: mov esi, 1 +180007B74: mov edx, esi +180007B76: mov rcx, rbx +180007B79: call qword ptr [rax] +180007B7B: xorps xmm0, xmm0 +180007B7E: movups [rbp+var_30], xmm0 +180007B82: lea rbx, [rdi+80h] +180007B89: mov qword ptr [rbp+var_30], rbx +180007B8D: mov byte ptr [rbp+var_30+8], 0 +180007B91: mov rcx, rbx; _Mtx_t +180007B94: call cs:_Mtx_lock +180007B9A: test eax, eax +180007B9C: jz short loc_180007BA7 +180007B9E: mov ecx, eax +180007BA0: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180007BA6: int 3; Trap to Debugger +180007BA7: mov byte ptr [rbp+var_30+8], sil +180007BAB: call cs:_Xtime_get_ticks +180007BB1: add rax, 0F4240h +180007BB7: imul rcx, rax, 64h ; 'd' +180007BBB: mov rax, 112E0BE826D694B3h +180007BC5: imul rcx +180007BC8: sar rdx, 1Ah +180007BCC: mov rax, rdx +180007BCF: shr rax, 3Fh +180007BD3: add rdx, rax +180007BD6: mov [rbp+var_20.sec], rdx +180007BDA: imul rax, rdx, 3B9ACA00h +180007BE1: sub rcx, rax +180007BE4: mov [rbp+var_20.nsec], ecx +180007BE7: mov rcx, rbx; _Mtx_t +180007BEA: call cs:_Mtx_current_owns +180007BF0: test eax, eax +180007BF2: jnz short loc_180007BFE +180007BF4: lea ecx, [rax+4] +180007BF7: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +180007BFD: int 3; Trap to Debugger +180007BFE: lea rcx, [rdi+38h]; _Cnd_t +180007C02: lea r8, [rbp+var_20]; xtime * +180007C06: mov rdx, rbx; _Mtx_t +180007C09: call cs:_Cnd_timedwait +180007C0F: test eax, eax +180007C11: jz short loc_180007C21 +180007C13: cmp eax, 2 +180007C16: jz short loc_180007C24 +180007C18: mov ecx, eax +180007C1A: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180007C20: int 3; Trap to Debugger +180007C21: mov esi, r14d +180007C24: cmp cs:byte_180015FF0, 0 +180007C2B: jz short loc_180007C50 +180007C2D: cmp esi, 1 +180007C30: jnz short loc_180007C40 +180007C32: lea rcx, Format; "EloMotorDevice timeout\n" +180007C39: call sub_180007960 +180007C3E: jmp short loc_180007C50 +180007C40: movzx edx, byte ptr [rdi+30h] +180007C44: lea rcx, aElomotordevice_0; "EloMotorDevice:%d\n" +180007C4B: call sub_180007960 +180007C50: movzx edi, byte ptr [rdi+30h] +180007C54: mov rcx, rbx; _Mtx_t +180007C57: call cs:_Mtx_unlock +180007C5D: test eax, eax +180007C5F: jz short loc_180007C6A +180007C61: mov ecx, eax +180007C63: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180007C69: nop +180007C6A: mov rcx, [rbp+Block]; Block +180007C6E: test rcx, rcx +180007C71: jz short loc_180007CA7 +180007C73: mov rdx, [rbp+var_38] +180007C77: sub rdx, rcx +180007C7A: mov rax, rcx +180007C7D: cmp rdx, 1000h +180007C84: jb short loc_180007CA2 +180007C86: add rdx, 27h ; ''' +180007C8A: mov rcx, [rcx-8] +180007C8E: sub rax, rcx +180007C91: add rax, 0FFFFFFFFFFFFFFF8h +180007C95: cmp rax, 1Fh +180007C99: jbe short loc_180007CA2 +180007C9B: call cs:_invalid_parameter_noinfo_noreturn +180007CA1: int 3; Trap to Debugger +180007CA2: call j_j_free +180007CA7: movzx eax, dil +180007CAB: mov rcx, [rbp+var_10] +180007CAF: xor rcx, rsp; StackCookie +180007CB2: call __security_check_cookie +180007CB7: lea r11, [rsp+70h+var_s0] +180007CBC: mov rbx, [r11+28h] +180007CC0: mov rsi, [r11+30h] +180007CC4: mov rsp, r11 +180007CC7: pop r14 +180007CC9: pop rdi +180007CCA: pop rbp +180007CCB: retn + +### FUNC 180007CD0 - 180007CE1 (17 bytes) name=sub_180007CD0 +180007CD0: cmp dl, 2 +180007CD3: jnz short loc_180007CDE +180007CD5: cmp r8b, 77h ; 'w' +180007CD9: jnz short loc_180007CDE +180007CDB: mov al, 1 +180007CDD: retn +180007CDE: xor al, al +180007CE0: retn + +### FUNC 180007CF0 - 180007D29 (57 bytes) name=sub_180007CF0 +180007CF0: sub rsp, 28h +180007CF4: mov rax, [rdx] +180007CF7: cmp byte ptr [rax+4], 2 +180007CFB: jnz short loc_180007D24 +180007CFD: cmp byte ptr [rax+5], 77h ; 'w' +180007D01: jnz short loc_180007D24 +180007D03: cmp byte ptr [rax+8], 1 +180007D07: setz al +180007D0A: mov [rcx+30h], al +180007D0D: add rcx, 38h ; '8'; _Cnd_t +180007D11: call cs:_Cnd_broadcast +180007D17: test eax, eax +180007D19: jz short loc_180007D24 +180007D1B: mov ecx, eax +180007D1D: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180007D23: nop +180007D24: add rsp, 28h +180007D28: retn + +### FUNC 180007D30 - 180007E67 (311 bytes) name=sub_180007D30 +180007D30: mov [rsp+arg_10], rbp +180007D35: mov [rsp+arg_18], rsi +180007D3A: push r12 +180007D3C: push r14 +180007D3E: push r15 +180007D40: sub rsp, 20h +180007D44: mov rsi, rcx +180007D47: mov r14, rdx +180007D4A: mov rcx, [rcx] +180007D4D: mov r9, 7FFFFFFFFFFFFFFFh +180007D57: sub r14, rcx +180007D5A: mov r12, r8 +180007D5D: mov r15, rdx +180007D60: mov rbp, [rsi+8] +180007D64: sub rbp, rcx +180007D67: cmp rbp, r9 +180007D6A: jz loc_180007E61 +180007D70: mov rax, [rsi+10h] +180007D74: inc rbp +180007D77: sub rax, rcx +180007D7A: mov [rsp+38h+arg_0], rbx +180007D7F: mov rcx, rax +180007D82: shr rcx, 1 +180007D85: sub r9, rcx +180007D88: cmp rax, r9 +180007D8B: jbe short loc_180007D92 +180007D8D: mov rbx, rbp +180007D90: jmp short loc_180007D9D +180007D92: lea rbx, [rcx+rax] +180007D96: cmp rbx, rbp +180007D99: cmovb rbx, rbp +180007D9D: mov [rsp+38h+arg_8], rdi +180007DA2: cmp rbx, 1000h +180007DA9: jb short loc_180007DD7 +180007DAB: lea rcx, [rbx+27h]; Size +180007DAF: cmp rcx, rbx +180007DB2: jbe loc_180007E5B +180007DB8: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180007DBD: test rax, rax +180007DC0: jz short loc_180007DD0 +180007DC2: lea rdi, [rax+27h] +180007DC6: and rdi, 0FFFFFFFFFFFFFFE0h +180007DCA: mov [rdi-8], rax +180007DCE: jmp short loc_180007DEB +180007DD0: call cs:_invalid_parameter_noinfo_noreturn +180007DD6: int 3; Trap to Debugger +180007DD7: test rbx, rbx +180007DDA: jz short loc_180007DE9 +180007DDC: mov rcx, rbx; Size +180007DDF: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180007DE4: mov rdi, rax +180007DE7: jmp short loc_180007DEB +180007DE9: xor edi, edi +180007DEB: movzx eax, byte ptr [r12] +180007DF0: add r14, rdi +180007DF3: mov rcx, rdi; void * +180007DF6: mov [r14], al +180007DF9: mov r8, [rsi+8] +180007DFD: mov rdx, [rsi]; Src +180007E00: cmp r15, r8 +180007E03: jnz short loc_180007E0A +180007E05: sub r8, rdx +180007E08: jmp short loc_180007E23 +180007E0A: mov r8, r15 +180007E0D: sub r8, rdx; Size +180007E10: call memmove +180007E15: mov r8, [rsi+8] +180007E19: lea rcx, [r14+1]; void * +180007E1D: sub r8, r15; Size +180007E20: mov rdx, r15; Src +180007E23: call memmove +180007E28: mov r9, rbx +180007E2B: mov r8, rbp +180007E2E: mov rdx, rdi +180007E31: mov rcx, rsi +180007E34: call sub_180007280 +180007E39: mov rdi, [rsp+38h+arg_8] +180007E3E: mov rax, r14 +180007E41: mov rbx, [rsp+38h+arg_0] +180007E46: mov rbp, [rsp+38h+arg_10] +180007E4B: mov rsi, [rsp+38h+arg_18] +180007E50: add rsp, 20h +180007E54: pop r15 +180007E56: pop r14 +180007E58: pop r12 +180007E5A: retn +180007E5B: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180007E60: db 0CCh +180007E61: call sub_180002B80 +180007E66: db 0CCh + +### FUNC 180007E70 - 180007EE7 (119 bytes) name=sub_180007E70 +180007E70: mov [rsp+arg_8], rbx +180007E75: mov [rsp+arg_10], rsi +180007E7A: push rdi +180007E7B: sub rsp, 20h +180007E7F: lea rax, off_1800101B8 +180007E86: mov rsi, rcx +180007E89: mov [rcx], rax +180007E8C: mov edi, edx +180007E8E: sub rcx, 0FFFFFFFFFFFFFF80h; _Mtx_t +180007E92: call cs:_Mtx_destroy_in_situ +180007E98: lea rcx, [rsi+38h]; _Cnd_t +180007E9C: call cs:_Cnd_destroy_in_situ +180007EA2: lea rcx, [rsi+8] +180007EA6: call sub_180002550 +180007EAB: mov rcx, [rsi+8]; Block +180007EAF: mov edx, 10h +180007EB4: mov qword ptr [rsi+8], 0 +180007EBC: call j_j_free +180007EC1: test dil, 1 +180007EC5: jz short loc_180007ED4 +180007EC7: mov edx, 0E0h +180007ECC: mov rcx, rsi; Block +180007ECF: call j_j_free +180007ED4: mov rbx, [rsp+28h+arg_8] +180007ED9: mov rax, rsi +180007EDC: mov rsi, [rsp+28h+arg_10] +180007EE1: add rsp, 20h +180007EE5: pop rdi +180007EE6: retn + +### FUNC 180007EF0 - 180007F01 (17 bytes) name=sub_180007EF0 +180007EF0: cmp dl, 2 +180007EF3: jnz short loc_180007EFE +180007EF5: cmp r8b, 78h ; 'x' +180007EF9: jnz short loc_180007EFE +180007EFB: mov al, 1 +180007EFD: retn +180007EFE: xor al, al +180007F00: retn + +### FUNC 180007F10 - 180007F4C (60 bytes) name=sub_180007F10 +180007F10: mov rax, [rdx] +180007F13: cmp byte ptr [rax+4], 2 +180007F17: jnz short locret_180007F4B +180007F19: cmp byte ptr [rax+5], 78h ; 'x' +180007F1D: jnz short locret_180007F4B +180007F1F: cmp byte ptr [rax+8], 0 +180007F23: jnz short loc_180007F2C +180007F25: mov edx, 0FFFFFFFFh +180007F2A: jmp short loc_180007F39 +180007F2C: movzx edx, byte ptr [rax+9] +180007F30: movzx eax, byte ptr [rax+0Ah] +180007F34: shl edx, 8 +180007F37: or edx, eax +180007F39: mov rcx, [rcx+0D8h] +180007F40: test rcx, rcx +180007F43: jz short locret_180007F4B +180007F45: mov rax, [rcx] +180007F48: jmp qword ptr [rax] +180007F4B: retn + +### FUNC 180007F70 - 180007FA9 (57 bytes) name=sub_180007F70 +180007F70: sub rsp, 28h +180007F74: mov rax, [rdx] +180007F77: cmp byte ptr [rax+4], 2 +180007F7B: jnz short loc_180007FA4 +180007F7D: cmp byte ptr [rax+5], 50h ; 'P' +180007F81: jnz short loc_180007FA4 +180007F83: cmp byte ptr [rax+8], 1 +180007F87: setz al +180007F8A: mov [rcx+30h], al +180007F8D: add rcx, 38h ; '8'; _Cnd_t +180007F91: call cs:_Cnd_broadcast +180007F97: test eax, eax +180007F99: jz short loc_180007FA4 +180007F9B: mov ecx, eax +180007F9D: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180007FA3: nop +180007FA4: add rsp, 28h +180007FA8: retn + +### FUNC 180007FB0 - 180007FC1 (17 bytes) name=sub_180007FB0 +180007FB0: cmp dl, 2 +180007FB3: jnz short loc_180007FBE +180007FB5: cmp r8b, 31h ; '1' +180007FB9: jnz short loc_180007FBE +180007FBB: mov al, 1 +180007FBD: retn +180007FBE: xor al, al +180007FC0: retn + +### FUNC 180007FD0 - 180008009 (57 bytes) name=sub_180007FD0 +180007FD0: sub rsp, 28h +180007FD4: mov rax, [rdx] +180007FD7: cmp byte ptr [rax+4], 2 +180007FDB: jnz short loc_180008004 +180007FDD: cmp byte ptr [rax+5], 31h ; '1' +180007FE1: jnz short loc_180008004 +180007FE3: cmp byte ptr [rax+8], 1 +180007FE7: setz al +180007FEA: mov [rcx+30h], al +180007FED: add rcx, 38h ; '8'; _Cnd_t +180007FF1: call cs:_Cnd_broadcast +180007FF7: test eax, eax +180007FF9: jz short loc_180008004 +180007FFB: mov ecx, eax +180007FFD: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008003: nop +180008004: add rsp, 28h +180008008: retn + +### FUNC 180008010 - 180008021 (17 bytes) name=sub_180008010 +180008010: cmp dl, 2 +180008013: jnz short loc_18000801E +180008015: cmp r8b, 41h ; 'A' +180008019: jnz short loc_18000801E +18000801B: mov al, 1 +18000801D: retn +18000801E: xor al, al +180008020: retn + +### FUNC 180008030 - 180008069 (57 bytes) name=sub_180008030 +180008030: sub rsp, 28h +180008034: mov rax, [rdx] +180008037: cmp byte ptr [rax+4], 2 +18000803B: jnz short loc_180008064 +18000803D: cmp byte ptr [rax+5], 41h ; 'A' +180008041: jnz short loc_180008064 +180008043: cmp byte ptr [rax+8], 1 +180008047: setz al +18000804A: mov [rcx+30h], al +18000804D: add rcx, 38h ; '8'; _Cnd_t +180008051: call cs:_Cnd_broadcast +180008057: test eax, eax +180008059: jz short loc_180008064 +18000805B: mov ecx, eax +18000805D: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008063: nop +180008064: add rsp, 28h +180008068: retn + +### FUNC 180008070 - 1800080A4 (52 bytes) name=sub_180008070 +180008070: mov [rsp+arg_0], rbx +180008075: push rdi +180008076: sub rsp, 20h +18000807A: mov ebx, edx +18000807C: mov rdi, rcx +18000807F: call sub_1800080B0 +180008084: test bl, 1 +180008087: jz short loc_180008096 +180008089: mov edx, 138h +18000808E: mov rcx, rdi; Block +180008091: call j_j_free +180008096: mov rbx, [rsp+28h+arg_0] +18000809B: mov rax, rdi +18000809E: add rsp, 20h +1800080A2: pop rdi +1800080A3: retn + +### FUNC 1800080B0 - 180008287 (471 bytes) name=sub_1800080B0 +1800080B0: mov [rsp+arg_8], rbx +1800080B5: mov [rsp+arg_10], rbp +1800080BA: mov [rsp+arg_18], rsi +1800080BF: push rdi +1800080C0: sub rsp, 20h +1800080C4: mov rsi, [rcx+0F0h] +1800080CB: lea rax, off_180010028 +1800080D2: mov [rcx], rax +1800080D5: xor ebp, ebp +1800080D7: lea rax, off_180010048 +1800080DE: mov rdi, rcx +1800080E1: mov [rcx+0D8h], rax +1800080E8: test rsi, rsi +1800080EB: jz loc_180008185 +1800080F1: lea rax, off_18000F7E0 +1800080F8: lea rcx, [rsi+0A0h]; _Mtx_t +1800080FF: mov [rsi], rax +180008102: call cs:_Mtx_destroy_in_situ +180008108: lea rcx, [rsi+58h]; _Cnd_t +18000810C: call cs:_Cnd_destroy_in_situ +180008112: lea rcx, [rsi+20h] +180008116: call sub_180002550 +18000811B: mov rcx, [rsi+20h]; Block +18000811F: lea edx, [rbp+10h] +180008122: mov [rsi+20h], rbp +180008126: call j_j_free +18000812B: mov rcx, [rsi+8] +18000812F: test rcx, rcx +180008132: jz short loc_180008171 +180008134: mov rdx, [rsi+18h] +180008138: sub rdx, rcx +18000813B: cmp rdx, 1000h +180008142: jb short loc_180008160 +180008144: mov r8, [rcx-8] +180008148: add rdx, 27h ; ''' +18000814C: sub rcx, r8 +18000814F: lea rax, [rcx-8] +180008153: cmp rax, 1Fh +180008157: ja loc_180008280 +18000815D: mov rcx, r8; Block +180008160: call j_j_free +180008165: mov [rsi+8], rbp +180008169: mov [rsi+10h], rbp +18000816D: mov [rsi+18h], rbp +180008171: mov edx, 0F0h +180008176: mov rcx, rsi; Block +180008179: call j_j_free +18000817E: mov [rdi+0F0h], rbp +180008185: mov rcx, [rdi+118h] +18000818C: test rcx, rcx +18000818F: jz short loc_1800081DA +180008191: mov rdx, [rdi+128h] +180008198: sub rdx, rcx +18000819B: cmp rdx, 1000h +1800081A2: jb short loc_1800081C0 +1800081A4: mov r8, [rcx-8] +1800081A8: add rdx, 27h ; ''' +1800081AC: sub rcx, r8 +1800081AF: lea rax, [rcx-8] +1800081B3: cmp rax, 1Fh +1800081B7: ja loc_180008280 +1800081BD: mov rcx, r8; Block +1800081C0: call j_j_free +1800081C5: mov [rdi+118h], rbp +1800081CC: mov [rdi+120h], rbp +1800081D3: mov [rdi+128h], rbp +1800081DA: mov rdx, [rdi+110h] +1800081E1: cmp rdx, 10h +1800081E5: jb short loc_180008217 +1800081E7: mov rcx, [rdi+0F8h] +1800081EE: inc rdx +1800081F1: cmp rdx, 1000h +1800081F8: jb short loc_180008212 +1800081FA: mov r8, [rcx-8] +1800081FE: add rdx, 27h ; ''' +180008202: sub rcx, r8 +180008205: lea rax, [rcx-8] +180008209: cmp rax, 1Fh +18000820D: ja short loc_180008280 +18000820F: mov rcx, r8; Block +180008212: call j_j_free +180008217: lea rax, off_1800101B8 +18000821E: mov [rdi+108h], rbp +180008225: mov qword ptr [rdi+110h], 0Fh +180008230: lea rcx, [rdi+80h]; _Mtx_t +180008237: mov [rdi+0F8h], bpl +18000823E: mov [rdi], rax +180008241: call cs:_Mtx_destroy_in_situ +180008247: lea rcx, [rdi+38h]; _Cnd_t +18000824B: call cs:_Cnd_destroy_in_situ +180008251: lea rcx, [rdi+8] +180008255: call sub_180002550 +18000825A: mov rcx, [rdi+8]; Block +18000825E: mov edx, 10h +180008263: mov [rdi+8], rbp +180008267: mov rbx, [rsp+28h+arg_8] +18000826C: mov rbp, [rsp+28h+arg_10] +180008271: mov rsi, [rsp+28h+arg_18] +180008276: add rsp, 20h +18000827A: pop rdi +18000827B: jmp j_j_free +180008280: call cs:_invalid_parameter_noinfo_noreturn +180008286: db 0CCh + +### FUNC 180008290 - 1800082C2 (50 bytes) name=sub_180008290 +180008290: cmp dl, 81h +180008293: jnz short loc_18000829E +180008295: cmp r8b, 3 +180008299: jz short loc_1800082BF +18000829B: xor al, al +18000829D: retn +18000829E: cmp dl, 2 +1800082A1: jnz short loc_18000829B +1800082A3: lea eax, [r8-60h] +1800082A7: cmp al, 0Fh +1800082A9: ja short loc_1800082B5 +1800082AB: mov ecx, 0A3FFh +1800082B0: bt ecx, eax +1800082B3: jb short loc_1800082BF +1800082B5: sub r8b, 8 +1800082B9: cmp r8b, 3 +1800082BD: ja short loc_18000829B +1800082BF: mov al, 1 +1800082C1: retn + +### FUNC 1800082D0 - 180008A48 (1912 bytes) name=sub_1800082D0 +1800082D0: mov [rsp-28h+arg_8], rbx +1800082D5: mov [rsp-28h+arg_10], rsi +1800082DA: mov [rsp-28h+arg_18], rdi +1800082DF: push rbp +1800082E0: push r12 +1800082E2: push r13 +1800082E4: push r14 +1800082E6: push r15 +1800082E8: mov rbp, rsp +1800082EB: sub rsp, 80h +1800082F2: mov rax, cs:__security_cookie +1800082F9: xor rax, rsp +1800082FC: mov [rbp+var_10], rax +180008300: mov rdi, rdx +180008303: mov r15, rcx +180008306: mov rcx, [rdx] +180008309: movzx r13d, byte ptr [rcx+4] +18000830E: movzx r14d, byte ptr [rcx+5] +180008313: xor esi, esi +180008315: lea rdx, off_1800100F8 +18000831C: cmp r13b, 81h +180008320: jnz short loc_18000832D +180008322: cmp r14b, 3 +180008326: jz short loc_180008341 +180008328: jmp loc_1800089F7 +18000832D: cmp r13b, 2 +180008331: jnz loc_1800089F7 +180008337: cmp r14b, 60h ; '`' +18000833B: jnz loc_180008534 +180008341: mov rax, [rdi+8] +180008345: sub rax, rcx +180008348: lea ecx, [rax-1] +18000834B: mov rdx, rsi +18000834E: mov qword ptr [rbp+var_28], rdx +180008352: mov r8d, 0Fh +180008358: mov qword ptr [rbp+var_28+8], r8 +18000835C: mov byte ptr [rbp+Src], dl +18000835F: mov ebx, 8 +180008364: movsxd r12, ecx +180008367: cmp rbx, r12 +18000836A: jge short loc_1800083B6 +18000836C: nop dword ptr [rax+00h] +180008370: mov rax, [rdi] +180008373: movzx r9d, byte ptr [rbx+rax] +180008378: cmp rdx, r8 +18000837B: jnb short loc_18000839D +18000837D: lea rax, [rdx+1] +180008381: mov qword ptr [rbp+var_28], rax +180008385: lea rax, [rbp+Src] +180008389: cmp r8, 10h +18000838D: cmovnb rax, [rbp+Src] +180008392: mov [rax+rdx], r9b +180008396: mov byte ptr [rax+rdx+1], 0 +18000839B: jmp short loc_1800083A6 +18000839D: lea rcx, [rbp+Src]; Src +1800083A1: call sub_180002770 +1800083A6: inc rbx +1800083A9: mov r8, qword ptr [rbp+var_28+8] +1800083AD: mov rdx, qword ptr [rbp+var_28] +1800083B1: cmp rbx, r12 +1800083B4: jl short loc_180008370 +1800083B6: cmp rdx, r8 +1800083B9: jnb short loc_1800083D8 +1800083BB: lea rax, [rdx+1] +1800083BF: mov qword ptr [rbp+var_28], rax +1800083C3: lea rax, [rbp+Src] +1800083C7: cmp r8, 10h +1800083CB: cmovnb rax, [rbp+Src] +1800083D0: mov word ptr [rax+rdx], 0 +1800083D6: jmp short loc_1800083E4 +1800083D8: xor r9d, r9d +1800083DB: lea rcx, [rbp+Src]; Src +1800083DF: call sub_180002770 +1800083E4: mov rax, [r15+0E0h] +1800083EB: test rax, rax +1800083EE: jz short loc_180008400 +1800083F0: lea rcx, [rbp+Src] +1800083F4: cmp qword ptr [rbp+var_28+8], 10h +1800083F9: cmovnb rcx, [rbp+Src] +1800083FE: call rax +180008400: cmp r13b, 2 +180008404: jnz loc_1800084E5 +18000840A: cmp r14b, 60h ; '`' +18000840E: jnz loc_1800084E5 +180008414: xorps xmm1, xmm1 +180008417: movdqu xmmword ptr [rbp+Block], xmm1 +18000841C: mov [rbp+var_40], rsi +180008420: mov [rbp+var_60], 1 +180008424: lea r8, [rbp+var_60] +180008428: xor edx, edx +18000842A: lea rcx, [rbp+Block] +18000842E: call sub_180007D30 +180008433: mov ecx, 28h ; '('; Size +180008438: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000843D: mov rbx, rax +180008440: mov [rbp+var_58], rax +180008444: xorps xmm0, xmm0 +180008447: xor eax, eax +180008449: movups xmmword ptr [rbx], xmm0 +18000844C: movups xmmword ptr [rbx+10h], xmm0 +180008450: mov [rbx+20h], rax +180008454: lea rax, off_1800100F8 +18000845B: mov [rbx], rax +18000845E: mov [rbx+8], rsi +180008462: mov [rbx+10h], rsi +180008466: mov [rbx+18h], rsi +18000846A: lea r9, [rbp+Block] +18000846E: movzx r8d, r14b +180008472: mov rcx, rbx +180008475: call sub_180009D70 +18000847A: nop +18000847B: mov rcx, [r15+0D0h] +180008482: test rcx, rcx +180008485: jz short loc_180008499 +180008487: mov rdx, [rbx+8] +18000848B: mov r8, [rbx+10h] +18000848F: sub r8, rdx +180008492: mov r9, [rcx] +180008495: call qword ptr [r9+8] +180008499: mov rax, [rbx] +18000849C: mov edx, 1 +1800084A1: mov rcx, rbx +1800084A4: call qword ptr [rax] +1800084A6: nop +1800084A7: mov rcx, [rbp+Block]; Block +1800084AB: test rcx, rcx +1800084AE: jz short loc_1800084E5 +1800084B0: mov rdx, [rbp+var_40] +1800084B4: sub rdx, rcx +1800084B7: mov rax, rcx +1800084BA: cmp rdx, 1000h +1800084C1: jb short loc_1800084DF +1800084C3: add rdx, 27h ; ''' +1800084C7: mov rcx, [rcx-8] +1800084CB: sub rax, rcx +1800084CE: add rax, 0FFFFFFFFFFFFFFF8h +1800084D2: cmp rax, 1Fh +1800084D6: jbe short loc_1800084DF +1800084D8: call cs:_invalid_parameter_noinfo_noreturn +1800084DE: int 3; Trap to Debugger +1800084DF: call j_j_free +1800084E4: nop +1800084E5: mov rdx, qword ptr [rbp+var_28+8] +1800084E9: cmp rdx, 10h +1800084ED: jb short loc_180008523 +1800084EF: inc rdx +1800084F2: mov rcx, [rbp+Src]; Block +1800084F6: mov rax, rcx +1800084F9: cmp rdx, 1000h +180008500: jb short loc_18000851E +180008502: add rdx, 27h ; ''' +180008506: mov rcx, [rcx-8] +18000850A: sub rax, rcx +18000850D: add rax, 0FFFFFFFFFFFFFFF8h +180008511: cmp rax, 1Fh +180008515: jbe short loc_18000851E +180008517: call cs:_invalid_parameter_noinfo_noreturn +18000851D: int 3; Trap to Debugger +18000851E: call j_j_free +180008523: cmp r13b, 2 +180008527: jnz loc_1800089F7 +18000852D: lea rdx, off_1800100F8 +180008534: lea eax, [r14-61h] +180008538: cmp al, 8 +18000853A: jbe loc_1800089D2 +180008540: cmp r14b, 8 +180008544: jnz loc_1800086E4 +18000854A: xorps xmm0, xmm0 +18000854D: xor eax, eax +18000854F: movups xmmword ptr [rbp+Src], xmm0 +180008553: movups [rbp+var_28], xmm0 +180008557: mov [rbp+var_18], rax +18000855B: mov [rbp+Src], rdx +18000855F: movdqu xmmword ptr [rbp+Src+8], xmm0 +180008564: mov qword ptr [rbp+var_28+8], rsi +180008568: mov rbx, [rdi] +18000856B: movzx eax, byte ptr [rbx+4] +18000856F: mov byte ptr [rbp+var_18+4], al +180008572: movzx eax, byte ptr [rbx+5] +180008576: mov byte ptr [rbp+var_18+5], al +180008579: mov rdi, [rdi+8] +18000857D: mov rcx, rdi +180008580: sub rcx, rbx +180008583: add ecx, 0FFFFFFF7h +180008586: cmovs ecx, esi +180008589: mov dword ptr [rbp+var_18], ecx +18000858C: sub rdi, rbx +18000858F: jz short loc_18000859D +180008591: mov rdx, rdi +180008594: lea rcx, [rbp+Src+8] +180008598: call sub_180002BA0 +18000859D: mov r8, rdi; Size +1800085A0: mov rdx, rbx; Src +1800085A3: mov rbx, [rbp+Src+8] +1800085A7: mov rcx, rbx; void * +1800085AA: call memmove +1800085AF: lea rax, [rbx+rdi] +1800085B3: mov qword ptr [rbp+var_28], rax +1800085B7: xorps xmm0, xmm0 +1800085BA: xor eax, eax +1800085BC: movups xmmword ptr [rbp+Block], xmm0 +1800085C0: mov [rbp+var_40], rax +1800085C4: lea rdx, [rbp+Block] +1800085C8: lea rcx, [rbp+Src] +1800085CC: call sub_18000A360 +1800085D1: nop +1800085D2: lea rbx, [r15+0F8h] +1800085D9: mov [rbx+10h], rsi +1800085DD: mov rax, rbx +1800085E0: cmp qword ptr [rbx+18h], 10h +1800085E5: jb short loc_1800085EA +1800085E7: mov rax, [rbx] +1800085EA: mov byte ptr [rax], 0 +1800085ED: mov r14, [rbp+Block+8] +1800085F1: mov rdi, [rbp+Block] +1800085F5: cmp rdi, r14 +1800085F8: jz short loc_180008640 +1800085FA: nop word ptr [rax+rax+00h] +180008600: movzx r9d, byte ptr [rdi] +180008604: mov rcx, [rbx+10h] +180008608: mov rdx, [rbx+18h] +18000860C: cmp rcx, rdx +18000860F: jnb short loc_180008630 +180008611: lea rax, [rcx+1] +180008615: mov [rbx+10h], rax +180008619: mov rax, rbx +18000861C: cmp rdx, 10h +180008620: jb short loc_180008625 +180008622: mov rax, [rbx] +180008625: mov [rax+rcx], r9b +180008629: mov byte ptr [rax+rcx+1], 0 +18000862E: jmp short loc_180008638 +180008630: mov rcx, rbx; Src +180008633: call sub_180002770 +180008638: inc rdi +18000863B: cmp rdi, r14 +18000863E: jnz short loc_180008600 +180008640: lea rcx, [r15+38h]; _Cnd_t +180008644: call cs:_Cnd_broadcast +18000864A: test eax, eax +18000864C: jz short loc_180008657 +18000864E: mov ecx, eax +180008650: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008656: nop +180008657: mov rcx, [rbp+Block]; Block +18000865B: test rcx, rcx +18000865E: jz short loc_1800086A0 +180008660: mov rdx, [rbp+var_40] +180008664: sub rdx, rcx +180008667: mov rax, rcx +18000866A: cmp rdx, 1000h +180008671: jb short loc_18000868F +180008673: add rdx, 27h ; ''' +180008677: mov rcx, [rcx-8] +18000867B: sub rax, rcx +18000867E: add rax, 0FFFFFFFFFFFFFFF8h +180008682: cmp rax, 1Fh +180008686: jbe short loc_18000868F +180008688: call cs:_invalid_parameter_noinfo_noreturn +18000868E: int 3; Trap to Debugger +18000868F: call j_j_free +180008694: xorps xmm0, xmm0 +180008697: movdqu xmmword ptr [rbp+Block], xmm0 +18000869C: mov [rbp+var_40], rsi +1800086A0: mov rcx, [rbp+Src+8]; Block +1800086A4: test rcx, rcx +1800086A7: jz loc_1800089F7 +1800086AD: mov rdx, qword ptr [rbp+var_28+8] +1800086B1: sub rdx, rcx +1800086B4: mov rax, rcx +1800086B7: cmp rdx, 1000h +1800086BE: jb loc_1800087FA +1800086C4: add rdx, 27h ; ''' +1800086C8: mov rcx, [rcx-8] +1800086CC: sub rax, rcx +1800086CF: add rax, 0FFFFFFFFFFFFFFF8h +1800086D3: cmp rax, 1Fh +1800086D7: jbe loc_1800087FA +1800086DD: call cs:_invalid_parameter_noinfo_noreturn +1800086E3: int 3; Trap to Debugger +1800086E4: cmp r14b, 9 +1800086E8: jnz short loc_180008713 +1800086EA: mov rax, [rdi] +1800086ED: cmp byte ptr [rax+8], 1 +1800086F1: setz al +1800086F4: mov [r15+30h], al +1800086F8: lea rcx, [r15+38h]; _Cnd_t +1800086FC: call cs:_Cnd_broadcast +180008702: test eax, eax +180008704: jz loc_1800089F7 +18000870A: mov ecx, eax +18000870C: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008712: nop +180008713: cmp r14b, 0Ah +180008717: jnz short loc_180008742 +180008719: mov rax, [rdi] +18000871C: cmp byte ptr [rax+8], 1 +180008720: setz al +180008723: mov [r15+30h], al +180008727: lea rcx, [r15+38h]; _Cnd_t +18000872B: call cs:_Cnd_broadcast +180008731: test eax, eax +180008733: jz loc_1800089F7 +180008739: mov ecx, eax +18000873B: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008741: nop +180008742: cmp r14b, 0Bh +180008746: jnz loc_180008804 +18000874C: mov rcx, [rdi+8] +180008750: sub rcx, [rdi] +180008753: add ecx, 0FFFFFFF7h +180008756: xorps xmm1, xmm1 +180008759: movdqu xmmword ptr [rbp+Block], xmm1 +18000875E: mov [rbp+var_40], rsi +180008762: mov rbx, rsi +180008765: movsxd r14, ecx +180008768: test ecx, ecx +18000876A: jle short loc_1800087AD +18000876C: mov rdx, [rbp+Block+8] +180008770: mov r8, [rdi] +180008773: add r8, 8 +180008777: add r8, rbx +18000877A: cmp rdx, rsi +18000877D: jz short loc_180008792 +18000877F: movzx eax, byte ptr [r8] +180008783: mov [rdx], al +180008785: mov rdx, [rbp+Block+8] +180008789: inc rdx +18000878C: mov [rbp+Block+8], rdx +180008790: jmp short loc_18000879F +180008792: lea rcx, [rbp+Block] +180008796: call sub_180007D30 +18000879B: mov rdx, [rbp+Block+8] +18000879F: inc rbx +1800087A2: cmp rbx, r14 +1800087A5: jge short loc_1800087AD +1800087A7: mov rsi, [rbp+var_40] +1800087AB: jmp short loc_180008770 +1800087AD: mov rcx, [r15+0F0h] +1800087B4: mov rax, [rcx] +1800087B7: lea rdx, [rbp+Block] +1800087BB: call qword ptr [rax] +1800087BD: nop +1800087BE: mov rcx, [rbp+Block] +1800087C2: test rcx, rcx +1800087C5: jz loc_1800089F7 +1800087CB: mov rdx, [rbp+var_40] +1800087CF: sub rdx, rcx +1800087D2: mov rax, rcx +1800087D5: cmp rdx, 1000h +1800087DC: jb short loc_1800087FA +1800087DE: add rdx, 27h ; ''' +1800087E2: mov rcx, [rcx-8] +1800087E6: sub rax, rcx +1800087E9: add rax, 0FFFFFFFFFFFFFFF8h +1800087ED: cmp rax, 1Fh +1800087F1: jbe short loc_1800087FA +1800087F3: call cs:_invalid_parameter_noinfo_noreturn +1800087F9: int 3; Trap to Debugger +1800087FA: call j_j_free +1800087FF: jmp loc_1800089F7 +180008804: cmp r14b, 6Fh ; 'o' +180008808: jnz loc_1800089F7 +18000880E: mov rax, [rdi] +180008811: movzx ebx, byte ptr [rax+8] +180008815: mov qword ptr [rbp+var_28], rsi +180008819: mov qword ptr [rbp+var_28+8], 0Fh +180008821: mov byte ptr [rbp+Src], 0 +180008825: xor r8d, r8d; Size +180008828: lea rdx, unk_18000FDE8; Src +18000882F: lea rcx, [rbp+Src]; void * +180008833: call sub_180002610 +180008838: nop +180008839: lea eax, [rbx-61h]; switch 9 cases +18000883C: cmp eax, 8 +18000883F: ja def_180008858; jumptable 0000000180008858 default case +180008845: cdqe +180008847: lea rdx, cs:180000000h +18000884E: mov ecx, ds:(jpt_180008858 - 180000000h)[rdx+rax*4] +180008855: add rcx, rdx +180008858: jmp rcx; switch jump +18000885A: lea rdx, qword_180015180; jumptable 0000000180008858 case 97 +180008861: cmp cs:qword_180015198, 10h +180008869: cmovnb rdx, cs:qword_180015180 +180008871: mov r8, cs:qword_180015190 +180008878: jmp loc_180008987 +18000887D: lea rdx, qword_1800150E0; jumptable 0000000180008858 case 98 +180008884: cmp cs:qword_1800150F8, 10h +18000888C: cmovnb rdx, cs:qword_1800150E0 +180008894: mov r8, cs:qword_1800150F0 +18000889B: jmp loc_180008987 +1800088A0: lea rdx, qword_180015160; jumptable 0000000180008858 case 99 +1800088A7: cmp cs:qword_180015178, 10h +1800088AF: cmovnb rdx, cs:qword_180015160 +1800088B7: mov r8, cs:qword_180015170 +1800088BE: jmp loc_180008987 +1800088C3: lea rdx, qword_1800151C0; jumptable 0000000180008858 case 100 +1800088CA: cmp cs:qword_1800151D8, 10h +1800088D2: cmovnb rdx, cs:qword_1800151C0 +1800088DA: mov r8, cs:qword_1800151D0 +1800088E1: jmp loc_180008987 +1800088E6: lea rdx, qword_180015120; jumptable 0000000180008858 case 101 +1800088ED: cmp cs:qword_180015138, 10h +1800088F5: cmovnb rdx, cs:qword_180015120 +1800088FD: mov r8, cs:qword_180015130 +180008904: jmp loc_180008987 +180008909: lea rdx, qword_1800150C0; jumptable 0000000180008858 case 102 +180008910: cmp cs:qword_1800150D8, 10h +180008918: cmovnb rdx, cs:qword_1800150C0 +180008920: mov r8, cs:qword_1800150D0 +180008927: jmp short loc_180008987 +180008929: lea rdx, qword_180015140; jumptable 0000000180008858 case 103 +180008930: cmp cs:qword_180015158, 10h +180008938: cmovnb rdx, cs:qword_180015140 +180008940: mov r8, cs:qword_180015150 +180008947: jmp short loc_180008987 +180008949: lea rdx, qword_1800151A0; jumptable 0000000180008858 case 105 +180008950: cmp cs:qword_1800151B8, 10h +180008958: cmovnb rdx, cs:qword_1800151A0 +180008960: mov r8, cs:qword_1800151B0 +180008967: jmp short loc_180008987 +180008969: lea rdx, qword_180015080; jumptable 0000000180008858 case 104 +180008970: cmp cs:qword_180015098, 10h +180008978: cmovnb rdx, cs:qword_180015080; Src +180008980: mov r8, cs:Size; Size +180008987: lea rcx, [rbp+Src]; void * +18000898B: call sub_180002610 +180008990: nop +180008991: mov rdx, qword ptr [rbp+var_28+8]; jumptable 0000000180008858 default case +180008995: cmp rdx, 10h +180008999: jb short loc_1800089F7 +18000899B: inc rdx +18000899E: mov rcx, [rbp+Src] +1800089A2: mov rax, rcx +1800089A5: cmp rdx, 1000h +1800089AC: jb loc_1800087FA +1800089B2: add rdx, 27h ; ''' +1800089B6: mov rcx, [rcx-8] +1800089BA: sub rax, rcx +1800089BD: add rax, 0FFFFFFFFFFFFFFF8h +1800089C1: cmp rax, 1Fh +1800089C5: jbe loc_1800087FA +1800089CB: call cs:_invalid_parameter_noinfo_noreturn +1800089D1: int 3; Trap to Debugger +1800089D2: mov rax, [rdi] +1800089D5: cmp byte ptr [rax+8], 1 +1800089D9: setz al +1800089DC: mov [r15+30h], al +1800089E0: lea rcx, [r15+38h]; _Cnd_t +1800089E4: call cs:_Cnd_broadcast +1800089EA: test eax, eax +1800089EC: jz short loc_1800089F7 +1800089EE: mov ecx, eax +1800089F0: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800089F6: nop +1800089F7: mov rcx, [rbp+var_10] +1800089FB: xor rcx, rsp; StackCookie +1800089FE: call __security_check_cookie +180008A03: lea r11, [rsp+80h+var_s0] +180008A0B: mov rbx, [r11+38h] +180008A0F: mov rsi, [r11+40h] +180008A13: mov rdi, [r11+48h] +180008A17: mov rsp, r11 +180008A1A: pop r15 +180008A1C: pop r14 +180008A1E: pop r13 +180008A20: pop r12 +180008A22: pop rbp +180008A23: retn +180008A24: dd offset loc_18000885A - 180000000h; jump table for switch statement + +### FUNC 180008A50 - 180008BDD (397 bytes) name=sub_180008A50 +180008A50: mov [rsp+arg_10], rbx +180008A55: mov [rsp+arg_18], rbp +180008A5A: push rsi +180008A5B: push rdi +180008A5C: push r14 +180008A5E: sub rsp, 50h +180008A62: mov rbp, rcx +180008A65: xorps xmm0, xmm0 +180008A68: movdqu xmmword ptr [rsp+68h+Block], xmm0 +180008A6E: xor r14d, r14d +180008A71: mov [rsp+68h+var_38], r14 +180008A76: mov rsi, [rdx] +180008A79: mov rdi, [rdx+8] +180008A7D: cmp rsi, rdi +180008A80: jz short loc_180008AF2 +180008A82: sub rdi, rsi +180008A85: cmp rdi, 1000h +180008A8C: jb short loc_180008ABA +180008A8E: lea rcx, [rdi+27h]; Size +180008A92: cmp rcx, rdi +180008A95: jbe loc_180008BD7 +180008A9B: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180008AA0: mov rcx, rax +180008AA3: test rax, rax +180008AA6: jz loc_180008BB6 +180008AAC: add rax, 27h ; ''' +180008AB0: and rax, 0FFFFFFFFFFFFFFE0h +180008AB4: mov [rax-8], rcx +180008AB8: jmp short loc_180008ACC +180008ABA: test rdi, rdi +180008ABD: jz short loc_180008AC9 +180008ABF: mov rcx, rdi; Size +180008AC2: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180008AC7: jmp short loc_180008ACC +180008AC9: mov rax, r14 +180008ACC: mov [rsp+68h+Block], rax +180008AD1: mov [rsp+68h+Block+8], rax +180008AD6: lea rbx, [rax+rdi] +180008ADA: mov [rsp+68h+var_38], rbx +180008ADF: mov r8, rdi; Size +180008AE2: mov rdx, rsi; Src +180008AE5: mov rcx, rax; void * +180008AE8: call memmove +180008AED: mov [rsp+68h+Block+8], rbx +180008AF2: lea rax, [rsp+68h+Block] +180008AF7: mov [rsp+68h+var_30], rax +180008AFC: cmp cs:byte_180015FF0, 0 +180008B03: jz short loc_180008B11 +180008B05: lea rcx, aTransmitdata; "transmitData\n" +180008B0C: call sub_180007960 +180008B11: mov ecx, 28h ; '('; Size +180008B16: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180008B1B: mov rbx, rax +180008B1E: mov [rsp+68h+var_28], rax +180008B23: xorps xmm0, xmm0 +180008B26: xor eax, eax +180008B28: movups xmmword ptr [rbx], xmm0 +180008B2B: movups xmmword ptr [rbx+10h], xmm0 +180008B2F: mov [rbx+20h], rax +180008B33: lea rax, off_1800100F8 +180008B3A: mov [rbx], rax +180008B3D: mov [rbx+8], r14 +180008B41: mov [rbx+10h], r14 +180008B45: mov [rbx+18h], r14 +180008B49: lea r9, [rsp+68h+Block] +180008B4E: mov r8b, 0Bh +180008B51: mov rcx, rbx +180008B54: call sub_180009D70 +180008B59: nop +180008B5A: mov rcx, [rbp-8] +180008B5E: test rcx, rcx +180008B61: jz short loc_180008B75 +180008B63: mov rdx, [rbx+8] +180008B67: mov r8, [rbx+10h] +180008B6B: sub r8, rdx +180008B6E: mov r9, [rcx] +180008B71: call qword ptr [r9+8] +180008B75: mov rax, [rbx] +180008B78: mov edx, 1 +180008B7D: mov rcx, rbx +180008B80: call qword ptr [rax] +180008B82: nop +180008B83: mov rcx, [rsp+68h+Block]; Block +180008B88: test rcx, rcx +180008B8B: jz short loc_180008BC2 +180008B8D: mov rdx, [rsp+68h+var_38] +180008B92: sub rdx, rcx +180008B95: mov rax, rcx +180008B98: cmp rdx, 1000h +180008B9F: jb short loc_180008BBD +180008BA1: add rdx, 27h ; ''' +180008BA5: mov rcx, [rcx-8] +180008BA9: sub rax, rcx +180008BAC: add rax, 0FFFFFFFFFFFFFFF8h +180008BB0: cmp rax, 1Fh +180008BB4: jbe short loc_180008BBD +180008BB6: call cs:_invalid_parameter_noinfo_noreturn +180008BBC: int 3; Trap to Debugger +180008BBD: call j_j_free +180008BC2: lea r11, [rsp+68h+var_18] +180008BC7: mov rbx, [r11+30h] +180008BCB: mov rbp, [r11+38h] +180008BCF: mov rsp, r11 +180008BD2: pop r14 +180008BD4: pop rdi +180008BD5: pop rsi +180008BD6: retn +180008BD7: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180008BDC: db 0CCh + +### FUNC 180008BE0 - 180008CC8 (232 bytes) name=sub_180008BE0 +180008BE0: mov [rsp+arg_10], rbp +180008BE5: mov [rsp+arg_18], rsi +180008BEA: push rdi +180008BEB: sub rsp, 20h +180008BEF: lea rax, off_180010058 +180008BF6: mov rdi, rcx +180008BF9: mov [rcx], rax +180008BFC: xor ebp, ebp +180008BFE: mov rcx, [rcx+0E0h] +180008C05: mov esi, edx +180008C07: test rcx, rcx +180008C0A: jz short loc_180008C55 +180008C0C: mov rdx, [rdi+0F0h] +180008C13: sub rdx, rcx +180008C16: cmp rdx, 1000h +180008C1D: jb short loc_180008C3B +180008C1F: mov r8, [rcx-8] +180008C23: add rdx, 27h ; ''' +180008C27: sub rcx, r8 +180008C2A: lea rax, [rcx-8] +180008C2E: cmp rax, 1Fh +180008C32: ja loc_180008CC1 +180008C38: mov rcx, r8; Block +180008C3B: call j_j_free +180008C40: mov [rdi+0E0h], rbp +180008C47: mov [rdi+0E8h], rbp +180008C4E: mov [rdi+0F0h], rbp +180008C55: lea rax, off_1800101B8 +180008C5C: mov [rsp+28h+arg_8], rbx +180008C61: lea rcx, [rdi+80h]; _Mtx_t +180008C68: mov [rdi], rax +180008C6B: call cs:_Mtx_destroy_in_situ +180008C71: lea rcx, [rdi+38h]; _Cnd_t +180008C75: call cs:_Cnd_destroy_in_situ +180008C7B: lea rcx, [rdi+8] +180008C7F: call sub_180002550 +180008C84: mov rcx, [rdi+8]; Block +180008C88: mov edx, 10h +180008C8D: mov [rdi+8], rbp +180008C91: call j_j_free +180008C96: mov rbx, [rsp+28h+arg_8] +180008C9B: test sil, 1 +180008C9F: jz short loc_180008CAE +180008CA1: mov edx, 0F8h +180008CA6: mov rcx, rdi; Block +180008CA9: call j_j_free +180008CAE: mov rbp, [rsp+28h+arg_10] +180008CB3: mov rax, rdi +180008CB6: mov rsi, [rsp+28h+arg_18] +180008CBB: add rsp, 20h +180008CBF: pop rdi +180008CC0: retn +180008CC1: call cs:_invalid_parameter_noinfo_noreturn +180008CC7: db 0CCh + +### FUNC 180008CD0 - 180008CE5 (21 bytes) name=sub_180008CD0 +180008CD0: cmp dl, 2 +180008CD3: jnz short loc_180008CE2 +180008CD5: sub r8b, 21h ; '!' +180008CD9: cmp r8b, 5 +180008CDD: ja short loc_180008CE2 +180008CDF: mov al, 1 +180008CE1: retn +180008CE2: xor al, al +180008CE4: retn + +### FUNC 180008CF0 - 180008E9E (430 bytes) name=sub_180008CF0 +180008CF0: mov [rsp+arg_0], rbx +180008CF5: mov [rsp+arg_8], rbp +180008CFA: mov [rsp+arg_10], rsi +180008CFF: mov [rsp+arg_18], rdi +180008D04: push r14 +180008D06: sub rsp, 20h +180008D0A: mov r14, rdx +180008D0D: mov rsi, rcx +180008D10: mov r8, [rdx] +180008D13: movzx eax, byte ptr [r8+5] +180008D18: cmp byte ptr [r8+4], 2 +180008D1D: jnz loc_180008E83 +180008D23: cmp al, 21h ; '!' +180008D25: jnz short loc_180008D4D +180008D27: cmp byte ptr [r8+8], 1 +180008D2C: setz al +180008D2F: mov [rcx+30h], al +180008D32: add rcx, 38h ; '8'; _Cnd_t +180008D36: call cs:_Cnd_broadcast +180008D3C: test eax, eax +180008D3E: jz loc_180008E83 +180008D44: mov ecx, eax +180008D46: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008D4C: nop +180008D4D: cmp al, 22h ; '"' +180008D4F: jnz short loc_180008D99 +180008D51: movzx ecx, byte ptr [r8+8] +180008D56: shl ecx, 8 +180008D59: movzx eax, byte ptr [r8+9] +180008D5E: or ecx, eax +180008D60: shl ecx, 8 +180008D63: movzx eax, byte ptr [r8+0Ah] +180008D68: or ecx, eax +180008D6A: shl ecx, 8 +180008D6D: movzx eax, byte ptr [r8+0Bh] +180008D72: or ecx, eax +180008D74: mov [rsi+0D8h], ecx +180008D7A: mov byte ptr [rsi+30h], 1 +180008D7E: lea rcx, [rsi+38h]; _Cnd_t +180008D82: call cs:_Cnd_broadcast +180008D88: test eax, eax +180008D8A: jz loc_180008E83 +180008D90: mov ecx, eax +180008D92: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008D98: nop +180008D99: cmp al, 23h ; '#' +180008D9B: jnz short loc_180008DC3 +180008D9D: cmp byte ptr [r8+8], 1 +180008DA2: setz al +180008DA5: mov [rcx+30h], al +180008DA8: add rcx, 38h ; '8'; _Cnd_t +180008DAC: call cs:_Cnd_broadcast +180008DB2: test eax, eax +180008DB4: jz loc_180008E83 +180008DBA: mov ecx, eax +180008DBC: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008DC2: nop +180008DC3: cmp al, 24h ; '$' +180008DC5: jnz short loc_180008DED +180008DC7: cmp byte ptr [r8+8], 1 +180008DCC: setz al +180008DCF: mov [rcx+30h], al +180008DD2: add rcx, 38h ; '8'; _Cnd_t +180008DD6: call cs:_Cnd_broadcast +180008DDC: test eax, eax +180008DDE: jz loc_180008E83 +180008DE4: mov ecx, eax +180008DE6: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008DEC: nop +180008DED: cmp al, 25h ; '%' +180008DEF: jnz short loc_180008E5D +180008DF1: mov rcx, [rdx+8] +180008DF5: sub rcx, r8 +180008DF8: add ecx, 0FFFFFFF7h +180008DFB: lea rbx, [rsi+0E0h] +180008E02: mov rax, [rbx] +180008E05: mov [rbx+8], rax +180008E09: movsxd rbp, ecx +180008E0C: test ecx, ecx +180008E0E: jle short loc_180008E42 +180008E10: xor edi, edi +180008E12: mov r8, [r14] +180008E15: add r8, 8 +180008E19: add r8, rdi +180008E1C: mov rdx, [rbx+8] +180008E20: cmp rdx, [rbx+10h] +180008E24: jz short loc_180008E32 +180008E26: movzx eax, byte ptr [r8] +180008E2A: mov [rdx], al +180008E2C: inc qword ptr [rbx+8] +180008E30: jmp short loc_180008E3A +180008E32: mov rcx, rbx +180008E35: call sub_180007D30 +180008E3A: inc rdi +180008E3D: cmp rdi, rbp +180008E40: jl short loc_180008E12 +180008E42: mov byte ptr [rsi+30h], 1 +180008E46: lea rcx, [rsi+38h]; _Cnd_t +180008E4A: call cs:_Cnd_broadcast +180008E50: test eax, eax +180008E52: jz short loc_180008E83 +180008E54: mov ecx, eax +180008E56: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008E5C: nop +180008E5D: cmp al, 26h ; '&' +180008E5F: jnz short loc_180008E83 +180008E61: cmp byte ptr [r8+8], 1 +180008E66: setz al +180008E69: mov [rcx+30h], al +180008E6C: add rcx, 38h ; '8'; _Cnd_t +180008E70: call cs:_Cnd_broadcast +180008E76: test eax, eax +180008E78: jz short loc_180008E83 +180008E7A: mov ecx, eax +180008E7C: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180008E82: nop +180008E83: mov rbx, [rsp+28h+arg_0] +180008E88: mov rbp, [rsp+28h+arg_8] +180008E8D: mov rsi, [rsp+28h+arg_10] +180008E92: mov rdi, [rsp+28h+arg_18] +180008E97: add rsp, 20h +180008E9B: pop r14 +180008E9D: retn + +### FUNC 180008EA0 - 180008FF2 (338 bytes) name=sub_180008EA0 +180008EA0: mov [rsp+arg_18], rsi +180008EA5: push rdi +180008EA6: sub rsp, 20h +180008EAA: cmp dword ptr [rcx+120h], 0 +180008EB1: lea rax, off_1800100D8 +180008EB8: mov [rcx], rax +180008EBB: mov esi, edx +180008EBD: mov rdi, rcx +180008EC0: jz short loc_180008EC9 +180008EC2: call cs:terminate +180008EC8: int 3; Trap to Debugger +180008EC9: mov rcx, [rcx+100h] +180008ED0: mov [rsp+28h+arg_10], rbp +180008ED5: xor ebp, ebp +180008ED7: test rcx, rcx +180008EDA: jz short loc_180008F25 +180008EDC: mov rdx, [rdi+110h] +180008EE3: sub rdx, rcx +180008EE6: cmp rdx, 1000h +180008EED: jb short loc_180008F0B +180008EEF: mov r8, [rcx-8] +180008EF3: add rdx, 27h ; ''' +180008EF7: sub rcx, r8 +180008EFA: lea rax, [rcx-8] +180008EFE: cmp rax, 1Fh +180008F02: ja loc_180008FEB +180008F08: mov rcx, r8; Block +180008F0B: call j_j_free +180008F10: mov [rdi+100h], rbp +180008F17: mov [rdi+108h], rbp +180008F1E: mov [rdi+110h], rbp +180008F25: mov rdx, [rdi+0F8h] +180008F2C: cmp rdx, 10h +180008F30: jb short loc_180008F66 +180008F32: mov rcx, [rdi+0E0h] +180008F39: inc rdx +180008F3C: cmp rdx, 1000h +180008F43: jb short loc_180008F61 +180008F45: mov r8, [rcx-8] +180008F49: add rdx, 27h ; ''' +180008F4D: sub rcx, r8 +180008F50: lea rax, [rcx-8] +180008F54: cmp rax, 1Fh +180008F58: ja loc_180008FEB +180008F5E: mov rcx, r8; Block +180008F61: call j_j_free +180008F66: lea rax, off_1800101B8 +180008F6D: mov [rdi+0F0h], rbp +180008F74: mov qword ptr [rdi+0F8h], 0Fh +180008F7F: lea rcx, [rdi+80h]; _Mtx_t +180008F86: mov [rdi+0E0h], bpl +180008F8D: mov [rdi], rax +180008F90: mov [rsp+28h+arg_8], rbx +180008F95: call cs:_Mtx_destroy_in_situ +180008F9B: lea rcx, [rdi+38h]; _Cnd_t +180008F9F: call cs:_Cnd_destroy_in_situ +180008FA5: lea rcx, [rdi+8] +180008FA9: call sub_180002550 +180008FAE: mov rcx, [rdi+8]; Block +180008FB2: mov edx, 10h +180008FB7: mov [rdi+8], rbp +180008FBB: call j_j_free +180008FC0: mov rbx, [rsp+28h+arg_8] +180008FC5: test sil, 1 +180008FC9: jz short loc_180008FD8 +180008FCB: mov edx, 128h +180008FD0: mov rcx, rdi; Block +180008FD3: call j_j_free +180008FD8: mov rbp, [rsp+28h+arg_10] +180008FDD: mov rax, rdi +180008FE0: mov rsi, [rsp+28h+arg_18] +180008FE5: add rsp, 20h +180008FE9: pop rdi +180008FEA: retn +180008FEB: call cs:_invalid_parameter_noinfo_noreturn +180008FF1: db 0CCh + +### FUNC 180009000 - 1800091D3 (467 bytes) name=sub_180009000 +180009000: mov [rsp+arg_10], rbx +180009005: push rbp +180009006: push rsi +180009007: push rdi +180009008: sub rsp, 50h +18000900C: mov rax, cs:__security_cookie +180009013: xor rax, rsp +180009016: mov [rsp+68h+var_28], rax +18000901B: mov rsi, rdx +18000901E: mov rbp, rcx +180009021: mov qword ptr [rsp+68h+var_48], rdx +180009026: cmp cs:byte_180015FF0, 0 +18000902D: jz short loc_18000903B +18000902F: lea rcx, aAskversion; "askVersion\n" +180009036: call sub_180007960 +18000903B: xor r8d, r8d; Size +18000903E: lea rdx, unk_18000FDE8; Src +180009045: lea rcx, [rbp+0E0h]; void * +18000904C: call sub_180002610 +180009051: mov ecx, 28h ; '('; Size +180009056: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000905B: mov qword ptr [rsp+68h+var_48], rax +180009060: xorps xmm0, xmm0 +180009063: xor ecx, ecx +180009065: movups xmmword ptr [rax], xmm0 +180009068: movups xmmword ptr [rax+10h], xmm0 +18000906C: mov [rax+20h], rcx +180009070: mov r8b, 4 +180009073: mov rcx, rax +180009076: call sub_18000A240 +18000907B: mov rdi, rax +18000907E: test rax, rax +180009081: jz short loc_1800090AE +180009083: mov rcx, [rbp+0D0h] +18000908A: test rcx, rcx +18000908D: jz short loc_1800090A1 +18000908F: mov rdx, [rax+8] +180009093: mov r8, [rax+10h] +180009097: sub r8, rdx +18000909A: mov r9, [rcx] +18000909D: call qword ptr [r9+8] +1800090A1: mov rax, [rdi] +1800090A4: mov edx, 1 +1800090A9: mov rcx, rdi +1800090AC: call qword ptr [rax] +1800090AE: xorps xmm0, xmm0 +1800090B1: movups [rsp+68h+var_48], xmm0 +1800090B6: lea rdi, [rbp+80h] +1800090BD: mov qword ptr [rsp+68h+var_48], rdi +1800090C2: mov byte ptr [rsp+68h+var_48+8], 0 +1800090C7: mov rcx, rdi; _Mtx_t +1800090CA: call cs:_Mtx_lock +1800090D0: test eax, eax +1800090D2: jz short loc_1800090DD +1800090D4: mov ecx, eax +1800090D6: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800090DC: int 3; Trap to Debugger +1800090DD: mov byte ptr [rsp+68h+var_48+8], 1 +1800090E2: call cs:_Xtime_get_ticks +1800090E8: add rax, 0F4240h +1800090EE: imul rcx, rax, 64h ; 'd' +1800090F2: mov rax, 112E0BE826D694B3h +1800090FC: imul rcx +1800090FF: sar rdx, 1Ah +180009103: mov rax, rdx +180009106: shr rax, 3Fh +18000910A: add rdx, rax +18000910D: mov [rsp+68h+var_38.sec], rdx +180009112: imul rax, rdx, 3B9ACA00h +180009119: sub rcx, rax +18000911C: mov [rsp+68h+var_38.nsec], ecx +180009120: mov rcx, rdi; _Mtx_t +180009123: call cs:_Mtx_current_owns +180009129: test eax, eax +18000912B: jnz short loc_180009137 +18000912D: lea ecx, [rax+4] +180009130: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +180009136: int 3; Trap to Debugger +180009137: lea rcx, [rbp+38h]; _Cnd_t +18000913B: lea r8, [rsp+68h+var_38]; xtime * +180009140: mov rdx, rdi; _Mtx_t +180009143: call cs:_Cnd_timedwait +180009149: test eax, eax +18000914B: jz short loc_180009169 +18000914D: cmp eax, 2 +180009150: jz short loc_18000915B +180009152: mov ecx, eax +180009154: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +18000915A: int 3; Trap to Debugger +18000915B: lea rcx, aAskversionTime; "askVersion timeout\n" +180009162: call sub_180007960 +180009167: jmp short loc_18000918D +180009169: lea rdx, [rbp+0E0h] +180009170: cmp qword ptr [rbp+0F8h], 10h +180009178: jb short loc_180009181 +18000917A: mov rdx, [rbp+0E0h] +180009181: lea rcx, aAskversionS; "askVersion:%s\n" +180009188: call sub_180007960 +18000918D: lea rdx, [rbp+0E0h] +180009194: mov rcx, rsi +180009197: call sub_180002E60 +18000919C: nop +18000919D: mov rcx, rdi; _Mtx_t +1800091A0: call cs:_Mtx_unlock +1800091A6: test eax, eax +1800091A8: jz short loc_1800091B3 +1800091AA: mov ecx, eax +1800091AC: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800091B2: nop +1800091B3: mov rax, rsi +1800091B6: mov rcx, [rsp+68h+var_28] +1800091BB: xor rcx, rsp; StackCookie +1800091BE: call __security_check_cookie +1800091C3: mov rbx, [rsp+68h+arg_10] +1800091CB: add rsp, 50h +1800091CF: pop rdi +1800091D0: pop rsi +1800091D1: pop rbp +1800091D2: retn + +### FUNC 1800091E0 - 180009502 (802 bytes) name=sub_1800091E0 +1800091E0: mov [rsp+arg_8], rbx +1800091E5: mov [rsp+arg_10], rbp +1800091EA: mov [rsp+arg_18], rsi +1800091EF: push rdi +1800091F0: push r12 +1800091F2: push r13 +1800091F4: push r14 +1800091F6: push r15 +1800091F8: sub rsp, 70h +1800091FC: mov rax, cs:__security_cookie +180009203: xor rax, rsp +180009206: mov [rsp+98h+var_38], rax +18000920B: mov r14, rcx +18000920E: mov rax, [rcx+108h] +180009215: cmp rax, [rcx+100h] +18000921C: jnz short loc_180009237 +18000921E: mov rax, [rcx+0D8h] +180009225: test rax, rax +180009228: jz loc_1800094D1 +18000922E: xor edx, edx +180009230: xor ecx, ecx +180009232: jmp loc_1800094CF +180009237: call sub_180009510 +18000923C: test al, al +18000923E: jnz short loc_180009268 +180009240: lea rcx, aBeginupdateFai; "beginUpdate fail\n" +180009247: call sub_180007960 +18000924C: mov rax, [r14+0D8h] +180009253: test rax, rax +180009256: jz loc_1800094D1 +18000925C: mov edx, 1 +180009261: xor ecx, ecx +180009263: jmp loc_1800094CF +180009268: mov rax, [r14+0D8h] +18000926F: test rax, rax +180009272: jz short loc_18000927E +180009274: mov edx, 1 +180009279: movzx ecx, dl +18000927C: call rax +18000927E: mov rax, [r14+108h] +180009285: sub rax, [r14+100h] +18000928C: add rax, 7Fh +180009290: shr rax, 7 +180009294: mov [rsp+98h+var_78], rax +180009299: xor r15d, r15d +18000929C: test eax, eax +18000929E: jle loc_180009423 +1800092A4: xor r12d, r12d +1800092A7: mov edx, 80h +1800092AC: lea r13d, [r15+62h] +1800092B0: mov rcx, [r14+100h] +1800092B7: mov rax, [r14+108h] +1800092BE: sub rax, rcx +1800092C1: sub eax, r12d +1800092C4: cmp eax, edx +1800092C6: cmovg eax, edx +1800092C9: xorps xmm1, xmm1 +1800092CC: movdqu xmmword ptr [rsp+98h+Src], xmm1 +1800092D2: xor ebp, ebp +1800092D4: mov [rsp+98h+var_40], rbp +1800092D9: movsxd rsi, eax +1800092DC: movsxd rbx, r12d +1800092DF: add rbx, rcx +1800092E2: test eax, eax +1800092E4: jz short loc_1800092F8 +1800092E6: mov rdx, rsi +1800092E9: lea rcx, [rsp+98h+Src] +1800092EE: call sub_180002BA0 +1800092F3: mov rbp, [rsp+98h+var_40] +1800092F8: mov r8, rsi; Size +1800092FB: mov rdx, rbx; Src +1800092FE: mov rbx, [rsp+98h+Src] +180009303: mov rcx, rbx; void * +180009306: call memmove +18000930B: lea rax, [rbx+rsi] +18000930F: mov [rsp+98h+Src+8], rax +180009314: xorps xmm0, xmm0 +180009317: movdqu [rsp+98h+var_70], xmm0 +18000931D: mov [rsp+98h+var_60], 0 +180009326: cmp rbx, rax +180009329: jz short loc_180009397 +18000932B: cmp rsi, 1000h +180009332: jb short loc_180009360 +180009334: lea rcx, [rsi+27h]; Size +180009338: cmp rcx, rsi +18000933B: jbe loc_1800094FC +180009341: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +180009346: mov rcx, rax +180009349: test rax, rax +18000934C: jz loc_180009458 +180009352: add rax, 27h ; ''' +180009356: and rax, 0FFFFFFFFFFFFFFE0h +18000935A: mov [rax-8], rcx +18000935E: jmp short loc_180009371 +180009360: test rsi, rsi +180009363: jz short loc_18000936F +180009365: mov rcx, rsi; Size +180009368: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000936D: jmp short loc_180009371 +18000936F: xor eax, eax +180009371: mov qword ptr [rsp+98h+var_70], rax +180009376: mov qword ptr [rsp+98h+var_70+8], rax +18000937B: lea rdi, [rax+rsi] +18000937F: mov [rsp+98h+var_60], rdi +180009384: mov r8, rsi; Size +180009387: mov rdx, rbx; Src +18000938A: mov rcx, rax; void * +18000938D: call memmove +180009392: mov qword ptr [rsp+98h+var_70+8], rdi +180009397: mov r8d, r15d +18000939A: lea rdx, [rsp+98h+var_70] +18000939F: mov rcx, r14 +1800093A2: call sub_180009850 +1800093A7: movzx ecx, al +1800093AA: mov eax, r13d +1800093AD: cdq +1800093AE: mov rsi, [rsp+98h+var_78] +1800093B3: idiv esi +1800093B5: mov edi, eax +1800093B7: test cl, cl +1800093B9: jz loc_18000945F +1800093BF: mov rax, [r14+0D8h] +1800093C6: test rax, rax +1800093C9: jz short loc_1800093D3 +1800093CB: lea edx, [rdi+1] +1800093CE: mov cl, 1 +1800093D0: call rax +1800093D2: nop +1800093D3: test rbx, rbx +1800093D6: jz short loc_18000940B +1800093D8: sub rbp, rbx +1800093DB: mov rax, rbx +1800093DE: cmp rbp, 1000h +1800093E5: jb short loc_180009400 +1800093E7: add rbp, 27h ; ''' +1800093EB: mov rbx, [rbx-8] +1800093EF: sub rax, rbx +1800093F2: add rax, 0FFFFFFFFFFFFFFF8h +1800093F6: cmp rax, 1Fh +1800093FA: ja loc_1800094A8 +180009400: mov rdx, rbp +180009403: mov rcx, rbx; Block +180009406: call j_j_free +18000940B: inc r15d +18000940E: mov edx, 80h +180009413: add r12d, edx +180009416: add r13d, 62h ; 'b' +18000941A: cmp r15d, esi +18000941D: jl loc_1800092B0 +180009423: mov rcx, r14 +180009426: call sub_1800096B0 +18000942B: test al, al +18000942D: jnz loc_1800094BC +180009433: lea rcx, aCompleteupdate; "completeUpdate fail\n" +18000943A: call sub_180007960 +18000943F: mov rax, [r14+0D8h] +180009446: test rax, rax +180009449: jz loc_1800094D1 +18000944F: mov edx, 63h ; 'c' +180009454: xor ecx, ecx +180009456: jmp short loc_1800094CF +180009458: call cs:_invalid_parameter_noinfo_noreturn +18000945E: int 3; Trap to Debugger +18000945F: lea rcx, aTransmitdataFa; "transmitData fail\n" +180009466: call sub_180007960 +18000946B: mov rax, [r14+0D8h] +180009472: test rax, rax +180009475: jz short loc_18000947F +180009477: lea edx, [rdi+1] +18000947A: xor ecx, ecx +18000947C: call rax +18000947E: nop +18000947F: test rbx, rbx +180009482: jz short loc_1800094D1 +180009484: sub rbp, rbx +180009487: mov rax, rbx +18000948A: cmp rbp, 1000h +180009491: jb short loc_1800094AF +180009493: add rbp, 27h ; ''' +180009497: mov rbx, [rbx-8] +18000949B: sub rax, rbx +18000949E: add rax, 0FFFFFFFFFFFFFFF8h +1800094A2: cmp rax, 1Fh +1800094A6: jbe short loc_1800094AF +1800094A8: call cs:_invalid_parameter_noinfo_noreturn +1800094AE: int 3; Trap to Debugger +1800094AF: mov rdx, rbp +1800094B2: mov rcx, rbx; Block +1800094B5: call j_j_free +1800094BA: jmp short loc_1800094D1 +1800094BC: mov rax, [r14+0D8h] +1800094C3: test rax, rax +1800094C6: jz short loc_1800094D1 +1800094C8: mov edx, 64h ; 'd' +1800094CD: mov cl, 1 +1800094CF: call rax +1800094D1: mov rcx, [rsp+98h+var_38] +1800094D6: xor rcx, rsp; StackCookie +1800094D9: call __security_check_cookie +1800094DE: lea r11, [rsp+98h+var_28] +1800094E3: mov rbx, [r11+38h] +1800094E7: mov rbp, [r11+40h] +1800094EB: mov rsi, [r11+48h] +1800094EF: mov rsp, r11 +1800094F2: pop r15 +1800094F4: pop r14 +1800094F6: pop r13 +1800094F8: pop r12 +1800094FA: pop rdi +1800094FB: retn +1800094FC: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +180009501: align 2 + +### FUNC 180009510 - 1800096A2 (402 bytes) name=sub_180009510 +180009510: mov [rsp+arg_8], rbx +180009515: push rdi +180009516: sub rsp, 50h +18000951A: mov rax, cs:__security_cookie +180009521: xor rax, rsp +180009524: mov [rsp+58h+var_18], rax +180009529: mov rbx, rcx +18000952C: cmp cs:byte_180015FF0, 0 +180009533: jz short loc_180009541 +180009535: lea rcx, aBeginupdate; "beginUpdate\n" +18000953C: call sub_180007960 +180009541: mov byte ptr [rbx+30h], 0 +180009545: mov ecx, 28h ; '('; Size +18000954A: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000954F: mov qword ptr [rsp+58h+var_38], rax +180009554: xorps xmm0, xmm0 +180009557: xor ecx, ecx +180009559: movups xmmword ptr [rax], xmm0 +18000955C: movups xmmword ptr [rax+10h], xmm0 +180009560: mov [rax+20h], rcx +180009564: mov r8b, 5 +180009567: mov rcx, rax +18000956A: call sub_18000A240 +18000956F: mov rdi, rax +180009572: test rax, rax +180009575: jz short loc_1800095A2 +180009577: mov rcx, [rbx+0D0h] +18000957E: test rcx, rcx +180009581: jz short loc_180009595 +180009583: mov rdx, [rax+8] +180009587: mov r8, [rax+10h] +18000958B: sub r8, rdx +18000958E: mov r9, [rcx] +180009591: call qword ptr [r9+8] +180009595: mov rax, [rdi] +180009598: mov edx, 1 +18000959D: mov rcx, rdi +1800095A0: call qword ptr [rax] +1800095A2: xorps xmm0, xmm0 +1800095A5: movups [rsp+58h+var_38], xmm0 +1800095AA: lea rdi, [rbx+80h] +1800095B1: mov qword ptr [rsp+58h+var_38], rdi +1800095B6: mov byte ptr [rsp+58h+var_38+8], 0 +1800095BB: mov rcx, rdi; _Mtx_t +1800095BE: call cs:_Mtx_lock +1800095C4: test eax, eax +1800095C6: jz short loc_1800095D1 +1800095C8: mov ecx, eax +1800095CA: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800095D0: int 3; Trap to Debugger +1800095D1: mov byte ptr [rsp+58h+var_38+8], 1 +1800095D6: call cs:_Xtime_get_ticks +1800095DC: add rax, 1C9C380h +1800095E2: imul rcx, rax, 64h ; 'd' +1800095E6: mov rax, 112E0BE826D694B3h +1800095F0: imul rcx +1800095F3: sar rdx, 1Ah +1800095F7: mov rax, rdx +1800095FA: shr rax, 3Fh +1800095FE: add rdx, rax +180009601: mov [rsp+58h+var_28.sec], rdx +180009606: imul rax, rdx, 3B9ACA00h +18000960D: sub rcx, rax +180009610: mov [rsp+58h+var_28.nsec], ecx +180009614: mov rcx, rdi; _Mtx_t +180009617: call cs:_Mtx_current_owns +18000961D: test eax, eax +18000961F: jnz short loc_18000962B +180009621: lea ecx, [rax+4] +180009624: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +18000962A: int 3; Trap to Debugger +18000962B: lea rcx, [rbx+38h]; _Cnd_t +18000962F: lea r8, [rsp+58h+var_28]; xtime * +180009634: mov rdx, rdi; _Mtx_t +180009637: call cs:_Cnd_timedwait +18000963D: test eax, eax +18000963F: jz short loc_18000965D +180009641: cmp eax, 2 +180009644: jz short loc_18000964F +180009646: mov ecx, eax +180009648: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +18000964E: int 3; Trap to Debugger +18000964F: lea rcx, aBeginupdateTim; "beginUpdate timeout\n" +180009656: call sub_180007960 +18000965B: jmp short loc_18000966D +18000965D: movzx edx, byte ptr [rbx+30h] +180009661: lea rcx, aBeginupdateD; "beginUpdate:%d\n" +180009668: call sub_180007960 +18000966D: movzx ebx, byte ptr [rbx+30h] +180009671: mov rcx, rdi; _Mtx_t +180009674: call cs:_Mtx_unlock +18000967A: test eax, eax +18000967C: jz short loc_180009687 +18000967E: mov ecx, eax +180009680: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180009686: nop +180009687: movzx eax, bl +18000968A: mov rcx, [rsp+58h+var_18] +18000968F: xor rcx, rsp; StackCookie +180009692: call __security_check_cookie +180009697: mov rbx, [rsp+58h+arg_8] +18000969C: add rsp, 50h +1800096A0: pop rdi +1800096A1: retn + +### FUNC 1800096B0 - 180009842 (402 bytes) name=sub_1800096B0 +1800096B0: mov [rsp+arg_8], rbx +1800096B5: push rdi +1800096B6: sub rsp, 50h +1800096BA: mov rax, cs:__security_cookie +1800096C1: xor rax, rsp +1800096C4: mov [rsp+58h+var_18], rax +1800096C9: mov rbx, rcx +1800096CC: cmp cs:byte_180015FF0, 0 +1800096D3: jz short loc_1800096E1 +1800096D5: lea rcx, aCompleteupdate_0; "completeUpdate\n" +1800096DC: call sub_180007960 +1800096E1: mov byte ptr [rbx+30h], 0 +1800096E5: mov ecx, 28h ; '('; Size +1800096EA: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +1800096EF: mov qword ptr [rsp+58h+var_38], rax +1800096F4: xorps xmm0, xmm0 +1800096F7: xor ecx, ecx +1800096F9: movups xmmword ptr [rax], xmm0 +1800096FC: movups xmmword ptr [rax+10h], xmm0 +180009700: mov [rax+20h], rcx +180009704: mov r8b, 6 +180009707: mov rcx, rax +18000970A: call sub_18000A240 +18000970F: mov rdi, rax +180009712: test rax, rax +180009715: jz short loc_180009742 +180009717: mov rcx, [rbx+0D0h] +18000971E: test rcx, rcx +180009721: jz short loc_180009735 +180009723: mov rdx, [rax+8] +180009727: mov r8, [rax+10h] +18000972B: sub r8, rdx +18000972E: mov r9, [rcx] +180009731: call qword ptr [r9+8] +180009735: mov rax, [rdi] +180009738: mov edx, 1 +18000973D: mov rcx, rdi +180009740: call qword ptr [rax] +180009742: xorps xmm0, xmm0 +180009745: movups [rsp+58h+var_38], xmm0 +18000974A: lea rdi, [rbx+80h] +180009751: mov qword ptr [rsp+58h+var_38], rdi +180009756: mov byte ptr [rsp+58h+var_38+8], 0 +18000975B: mov rcx, rdi; _Mtx_t +18000975E: call cs:_Mtx_lock +180009764: test eax, eax +180009766: jz short loc_180009771 +180009768: mov ecx, eax +18000976A: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180009770: int 3; Trap to Debugger +180009771: mov byte ptr [rsp+58h+var_38+8], 1 +180009776: call cs:_Xtime_get_ticks +18000977C: add rax, 8F0D180h +180009782: imul rcx, rax, 64h ; 'd' +180009786: mov rax, 112E0BE826D694B3h +180009790: imul rcx +180009793: sar rdx, 1Ah +180009797: mov rax, rdx +18000979A: shr rax, 3Fh +18000979E: add rdx, rax +1800097A1: mov [rsp+58h+var_28.sec], rdx +1800097A6: imul rax, rdx, 3B9ACA00h +1800097AD: sub rcx, rax +1800097B0: mov [rsp+58h+var_28.nsec], ecx +1800097B4: mov rcx, rdi; _Mtx_t +1800097B7: call cs:_Mtx_current_owns +1800097BD: test eax, eax +1800097BF: jnz short loc_1800097CB +1800097C1: lea ecx, [rax+4] +1800097C4: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +1800097CA: int 3; Trap to Debugger +1800097CB: lea rcx, [rbx+38h]; _Cnd_t +1800097CF: lea r8, [rsp+58h+var_28]; xtime * +1800097D4: mov rdx, rdi; _Mtx_t +1800097D7: call cs:_Cnd_timedwait +1800097DD: test eax, eax +1800097DF: jz short loc_1800097FD +1800097E1: cmp eax, 2 +1800097E4: jz short loc_1800097EF +1800097E6: mov ecx, eax +1800097E8: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800097EE: int 3; Trap to Debugger +1800097EF: lea rcx, aCompleteupdate_1; "completeUpdate timeout\n" +1800097F6: call sub_180007960 +1800097FB: jmp short loc_18000980D +1800097FD: movzx edx, byte ptr [rbx+30h] +180009801: lea rcx, aCompleteupdate_2; "completeUpdate:%d\n" +180009808: call sub_180007960 +18000980D: movzx ebx, byte ptr [rbx+30h] +180009811: mov rcx, rdi; _Mtx_t +180009814: call cs:_Mtx_unlock +18000981A: test eax, eax +18000981C: jz short loc_180009827 +18000981E: mov ecx, eax +180009820: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180009826: nop +180009827: movzx eax, bl +18000982A: mov rcx, [rsp+58h+var_18] +18000982F: xor rcx, rsp; StackCookie +180009832: call __security_check_cookie +180009837: mov rbx, [rsp+58h+arg_8] +18000983C: add rsp, 50h +180009840: pop rdi +180009841: retn + +### FUNC 180009850 - 180009A3F (495 bytes) name=sub_180009850 +180009850: push rbx +180009852: push rsi +180009853: push rdi +180009854: sub rsp, 60h +180009858: mov rax, cs:__security_cookie +18000985F: xor rax, rsp +180009862: mov [rsp+78h+var_20], rax +180009867: mov esi, r8d +18000986A: mov rbx, rdx +18000986D: mov rdi, rcx +180009870: mov [rsp+78h+var_48], rdx +180009875: cmp cs:byte_180015FF0, 0 +18000987C: jz short loc_18000988D +18000987E: mov edx, r8d +180009881: lea rcx, aTransmitdataD; "transmitData %d\n" +180009888: call sub_180007960 +18000988D: mov byte ptr [rdi+30h], 0 +180009891: mov ecx, 28h ; '('; Size +180009896: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000989B: mov qword ptr [rsp+78h+var_40], rax +1800098A0: xorps xmm0, xmm0 +1800098A3: xor ecx, ecx +1800098A5: movups xmmword ptr [rax], xmm0 +1800098A8: movups xmmword ptr [rax+10h], xmm0 +1800098AC: mov [rax+20h], rcx +1800098B0: lea ecx, [rsi+8001h] +1800098B6: mov [rsp+78h+var_58], ecx +1800098BA: mov r9, rbx +1800098BD: mov rcx, rax +1800098C0: call sub_180009FA0 +1800098C5: mov rsi, rax +1800098C8: test rax, rax +1800098CB: jz short loc_1800098F8 +1800098CD: mov rcx, [rdi+0D0h] +1800098D4: test rcx, rcx +1800098D7: jz short loc_1800098EB +1800098D9: mov rdx, [rax+8] +1800098DD: mov r8, [rax+10h] +1800098E1: sub r8, rdx +1800098E4: mov r9, [rcx] +1800098E7: call qword ptr [r9+8] +1800098EB: mov rax, [rsi] +1800098EE: mov edx, 1 +1800098F3: mov rcx, rsi +1800098F6: call qword ptr [rax] +1800098F8: xorps xmm0, xmm0 +1800098FB: movups [rsp+78h+var_40], xmm0 +180009900: lea rsi, [rdi+80h] +180009907: mov qword ptr [rsp+78h+var_40], rsi +18000990C: mov byte ptr [rsp+78h+var_40+8], 0 +180009911: mov rcx, rsi; _Mtx_t +180009914: call cs:_Mtx_lock +18000991A: test eax, eax +18000991C: jz short loc_180009927 +18000991E: mov ecx, eax +180009920: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +180009926: int 3; Trap to Debugger +180009927: mov byte ptr [rsp+78h+var_40+8], 1 +18000992C: call cs:_Xtime_get_ticks +180009932: add rax, 4C4B40h +180009938: imul rcx, rax, 64h ; 'd' +18000993C: mov rax, 112E0BE826D694B3h +180009946: imul rcx +180009949: sar rdx, 1Ah +18000994D: mov rax, rdx +180009950: shr rax, 3Fh +180009954: add rdx, rax +180009957: mov [rsp+78h+var_30.sec], rdx +18000995C: imul rax, rdx, 3B9ACA00h +180009963: sub rcx, rax +180009966: mov [rsp+78h+var_30.nsec], ecx +18000996A: mov rcx, rsi; _Mtx_t +18000996D: call cs:_Mtx_current_owns +180009973: test eax, eax +180009975: jnz short loc_180009981 +180009977: lea ecx, [rax+4] +18000997A: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +180009980: int 3; Trap to Debugger +180009981: lea rcx, [rdi+38h]; _Cnd_t +180009985: lea r8, [rsp+78h+var_30]; xtime * +18000998A: mov rdx, rsi; _Mtx_t +18000998D: call cs:_Cnd_timedwait +180009993: test eax, eax +180009995: jz short loc_1800099B3 +180009997: cmp eax, 2 +18000999A: jz short loc_1800099A5 +18000999C: mov ecx, eax +18000999E: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800099A4: int 3; Trap to Debugger +1800099A5: lea rcx, aTransmitdataTi; "transmitData timeout\n" +1800099AC: call sub_180007960 +1800099B1: jmp short loc_1800099C3 +1800099B3: movzx edx, byte ptr [rdi+30h] +1800099B7: lea rcx, aTransmitdataD_0; "transmitData:%d\n" +1800099BE: call sub_180007960 +1800099C3: movzx edi, byte ptr [rdi+30h] +1800099C7: mov rcx, rsi; _Mtx_t +1800099CA: call cs:_Mtx_unlock +1800099D0: test eax, eax +1800099D2: jz short loc_1800099DD +1800099D4: mov ecx, eax +1800099D6: call cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int) +1800099DC: nop +1800099DD: mov rcx, [rbx] +1800099E0: test rcx, rcx +1800099E3: jz short loc_180009A1F +1800099E5: mov rdx, [rbx+10h] +1800099E9: sub rdx, rcx +1800099EC: cmp rdx, 1000h +1800099F3: jb short loc_180009A0D +1800099F5: add rdx, 27h ; ''' +1800099F9: mov r8, [rcx-8] +1800099FD: sub rcx, r8 +180009A00: lea rax, [rcx-8] +180009A04: cmp rax, 1Fh +180009A08: ja short loc_180009A38 +180009A0A: mov rcx, r8; Block +180009A0D: call j_j_free +180009A12: xor eax, eax +180009A14: mov [rbx], rax +180009A17: mov [rbx+8], rax +180009A1B: mov [rbx+10h], rax +180009A1F: movzx eax, dil +180009A23: mov rcx, [rsp+78h+var_20] +180009A28: xor rcx, rsp; StackCookie +180009A2B: call __security_check_cookie +180009A30: add rsp, 60h +180009A34: pop rdi +180009A35: pop rsi +180009A36: pop rbx +180009A37: retn +180009A38: call cs:_invalid_parameter_noinfo_noreturn +180009A3E: db 0CCh + +### FUNC 180009A40 - 180009A64 (36 bytes) name=sub_180009A40 +180009A40: cmp dl, 2 +180009A43: jnz short loc_180009A4F +180009A45: sub r8b, 4 +180009A49: cmp r8b, 3 +180009A4D: jmp short loc_180009A5C +180009A4F: cmp dl, 81h +180009A52: jnz short loc_180009A61 +180009A54: sub r8b, 0Ah +180009A58: cmp r8b, 2 +180009A5C: ja short loc_180009A61 +180009A5E: mov al, 1 +180009A60: retn +180009A61: xor al, al +180009A63: retn + +### FUNC 180009A70 - 180009D65 (757 bytes) name=??$common_mktime@_J@@YA_JQEAUtm@@_N@Z +180009A70: mov [rsp-18h+arg_8], rbx +180009A75: mov [rsp-18h+arg_10], rsi +180009A7A: mov [rsp-18h+arg_18], rdi +180009A7F: push rbp +180009A80: push r14 +180009A82: push r15 +180009A84: mov rbp, rsp +180009A87: sub rsp, 70h +180009A8B: mov rax, cs:__security_cookie +180009A92: xor rax, rsp +180009A95: mov [rbp+var_10], rax +180009A99: mov rsi, rcx +180009A9C: mov rbx, [rdx] +180009A9F: movzx ecx, byte ptr [rbx+4] +180009AA3: movzx eax, byte ptr [rbx+5] +180009AA7: cmp cl, 2 +180009AAA: jnz loc_180009CCB +180009AB0: cmp al, 4 +180009AB2: jnz loc_180009C56 +180009AB8: xorps xmm0, xmm0 +180009ABB: xor r8d, r8d +180009ABE: movups xmmword ptr [rbp+var_38], xmm0 +180009AC2: movups [rbp+var_28], xmm0 +180009AC6: mov [rbp+var_18], r8 +180009ACA: lea r8, off_1800100F8 +180009AD1: mov [rbp+var_38], r8 +180009AD5: movdqu xmmword ptr [rbp+var_38+8], xmm0 +180009ADA: xor r15d, r15d +180009ADD: mov qword ptr [rbp+var_28+8], r15 +180009AE1: mov byte ptr [rbp+var_18+4], cl +180009AE4: mov byte ptr [rbp+var_18+5], al +180009AE7: mov rdi, [rdx+8] +180009AEB: sub rdi, rbx +180009AEE: lea eax, [rdi-9] +180009AF1: test eax, eax +180009AF3: cmovs eax, r15d +180009AF7: mov dword ptr [rbp+var_18], eax +180009AFA: test rdi, rdi +180009AFD: jz short loc_180009B0B +180009AFF: mov rdx, rdi +180009B02: lea rcx, [rbp+var_38+8] +180009B06: call sub_180002BA0 +180009B0B: mov r8, rdi; Size +180009B0E: mov rdx, rbx; Src +180009B11: mov rbx, [rbp+var_38+8] +180009B15: mov rcx, rbx; void * +180009B18: call memmove +180009B1D: lea rax, [rbx+rdi] +180009B21: mov qword ptr [rbp+var_28], rax +180009B25: xorps xmm0, xmm0 +180009B28: xor eax, eax +180009B2A: movups xmmword ptr [rbp+Block], xmm0 +180009B2E: mov [rbp+var_40], rax +180009B32: lea rdx, [rbp+Block] +180009B36: lea rcx, [rbp+var_38] +180009B3A: call sub_18000A360 +180009B3F: nop +180009B40: lea rbx, [rsi+0E0h] +180009B47: mov [rbx+10h], r15 +180009B4B: mov rax, rbx +180009B4E: cmp qword ptr [rbx+18h], 10h +180009B53: jb short loc_180009B58 +180009B55: mov rax, [rbx] +180009B58: mov byte ptr [rax], 0 +180009B5B: mov r14, [rbp+Block+8] +180009B5F: mov rdi, [rbp+Block] +180009B63: cmp rdi, r14 +180009B66: jz short loc_180009BB0 +180009B68: nop dword ptr [rax+rax+00000000h] +180009B70: movzx r9d, byte ptr [rdi] +180009B74: mov rcx, [rbx+10h] +180009B78: mov rdx, [rbx+18h] +180009B7C: cmp rcx, rdx +180009B7F: jnb short loc_180009BA0 +180009B81: lea rax, [rcx+1] +180009B85: mov [rbx+10h], rax +180009B89: mov rax, rbx +180009B8C: cmp rdx, 10h +180009B90: jb short loc_180009B95 +180009B92: mov rax, [rbx] +180009B95: mov [rax+rcx], r9b +180009B99: mov byte ptr [rax+rcx+1], 0 +180009B9E: jmp short loc_180009BA8 +180009BA0: mov rcx, rbx; Src +180009BA3: call sub_180002770 +180009BA8: inc rdi +180009BAB: cmp rdi, r14 +180009BAE: jnz short loc_180009B70 +180009BB0: lea rcx, [rsi+38h]; _Cnd_t +180009BB4: call cs:_Cnd_broadcast +180009BBA: test eax, eax +180009BBC: jz short loc_180009BC7 +180009BBE: mov ecx, eax +180009BC0: call cs:?_Throw_C_error@std@@YAXH@Z +180009BC6: nop +180009BC7: mov rcx, [rbp+Block]; Block +180009BCB: test rcx, rcx +180009BCE: jz short loc_180009C10 +180009BD0: mov rdx, [rbp+var_40] +180009BD4: sub rdx, rcx +180009BD7: mov rax, rcx +180009BDA: cmp rdx, 1000h +180009BE1: jb short loc_180009BFF +180009BE3: add rdx, 27h ; ''' +180009BE7: mov rcx, [rcx-8] +180009BEB: sub rax, rcx +180009BEE: add rax, 0FFFFFFFFFFFFFFF8h +180009BF2: cmp rax, 1Fh +180009BF6: jbe short loc_180009BFF +180009BF8: call cs:_invalid_parameter_noinfo_noreturn +180009BFE: int 3; Trap to Debugger +180009BFF: call j_j_free +180009C04: xorps xmm0, xmm0 +180009C07: movdqu xmmword ptr [rbp+Block], xmm0 +180009C0C: mov [rbp+var_40], r15 +180009C10: mov rcx, [rbp+var_38+8]; Block +180009C14: test rcx, rcx +180009C17: jz loc_180009D3F +180009C1D: mov rdx, qword ptr [rbp+var_28+8] +180009C21: sub rdx, rcx +180009C24: mov rax, rcx +180009C27: cmp rdx, 1000h +180009C2E: jb short loc_180009C4C +180009C30: add rdx, 27h ; ''' +180009C34: mov rcx, [rcx-8] +180009C38: sub rax, rcx +180009C3B: add rax, 0FFFFFFFFFFFFFFF8h +180009C3F: cmp rax, 1Fh +180009C43: jbe short loc_180009C4C +180009C45: call cs:_invalid_parameter_noinfo_noreturn +180009C4B: int 3; Trap to Debugger +180009C4C: call j_j_free +180009C51: jmp loc_180009D3F +180009C56: cmp al, 5 +180009C58: jnz short loc_180009C7B +180009C5A: cmp byte ptr [rbx+8], 1 +180009C5E: setz al +180009C61: mov [rsi+30h], al +180009C64: lea rcx, [rsi+38h]; _Cnd_t +180009C68: call cs:_Cnd_broadcast +180009C6E: test eax, eax +180009C70: jz short loc_180009CC9 +180009C72: mov ecx, eax +180009C74: call cs:?_Throw_C_error@std@@YAXH@Z +180009C7A: nop +180009C7B: cmp al, 6 +180009C7D: jnz short loc_180009CA0 +180009C7F: cmp byte ptr [rbx+8], 1 +180009C83: setz al +180009C86: mov [rsi+30h], al +180009C89: lea rcx, [rsi+38h]; _Cnd_t +180009C8D: call cs:_Cnd_broadcast +180009C93: test eax, eax +180009C95: jz short loc_180009CC9 +180009C97: mov ecx, eax +180009C99: call cs:?_Throw_C_error@std@@YAXH@Z +180009C9F: nop +180009CA0: cmp al, 7 +180009CA2: jnz loc_180009D3F +180009CA8: cmp byte ptr [rbx+8], 1 +180009CAC: setz al +180009CAF: mov [rsi+30h], al +180009CB2: lea rcx, [rsi+38h]; _Cnd_t +180009CB6: call cs:_Cnd_broadcast +180009CBC: test eax, eax +180009CBE: jz short loc_180009CC9 +180009CC0: mov ecx, eax +180009CC2: call cs:?_Throw_C_error@std@@YAXH@Z +180009CC8: nop +180009CC9: jmp short loc_180009D3F +180009CCB: cmp cl, 81h +180009CCE: jnz short loc_180009D3F +180009CD0: cmp al, 0Ch +180009CD2: jnz short loc_180009CF5 +180009CD4: cmp byte ptr [rbx+8], 1 +180009CD8: setz al +180009CDB: mov [rsi+30h], al +180009CDE: lea rcx, [rsi+38h]; _Cnd_t +180009CE2: call cs:_Cnd_broadcast +180009CE8: test eax, eax +180009CEA: jz short loc_180009D3F +180009CEC: mov ecx, eax +180009CEE: call cs:?_Throw_C_error@std@@YAXH@Z +180009CF4: nop +180009CF5: cmp al, 0Ah +180009CF7: jnz short loc_180009D1A +180009CF9: cmp byte ptr [rbx+8], 1 +180009CFD: setz al +180009D00: mov [rsi+30h], al +180009D03: lea rcx, [rsi+38h]; _Cnd_t +180009D07: call cs:_Cnd_broadcast +180009D0D: test eax, eax +180009D0F: jz short loc_180009D3F +180009D11: mov ecx, eax +180009D13: call cs:?_Throw_C_error@std@@YAXH@Z +180009D19: nop +180009D1A: cmp al, 0Bh +180009D1C: jnz short loc_180009D3F +180009D1E: cmp byte ptr [rbx+8], 1 +180009D22: setz al +180009D25: mov [rsi+30h], al +180009D28: lea rcx, [rsi+38h]; _Cnd_t +180009D2C: call cs:_Cnd_broadcast +180009D32: test eax, eax +180009D34: jz short loc_180009D3F +180009D36: mov ecx, eax +180009D38: call cs:?_Throw_C_error@std@@YAXH@Z +180009D3E: nop +180009D3F: mov rcx, [rbp+var_10] +180009D43: xor rcx, rsp; StackCookie +180009D46: call __security_check_cookie +180009D4B: lea r11, [rsp+70h+var_s0] +180009D50: mov rbx, [r11+28h] +180009D54: mov rsi, [r11+30h] +180009D58: mov rdi, [r11+38h] +180009D5C: mov rsp, r11 +180009D5F: pop r15 +180009D61: pop r14 +180009D63: pop rbp +180009D64: retn + +### FUNC 180009D70 - 180009F95 (549 bytes) name=sub_180009D70 +180009D70: mov [rsp+arg_0], rbx +180009D75: mov [rsp+arg_8], rbp +180009D7A: mov [rsp+arg_10], rsi +180009D7F: mov [rsp+arg_18], rdi +180009D84: push r13 +180009D86: push r14 +180009D88: push r15 +180009D8A: sub rsp, 20h +180009D8E: mov eax, [r9+8] +180009D92: lea rbx, [rcx+8] +180009D96: sub eax, [r9] +180009D99: mov rdi, r9 +180009D9C: mov [rcx+20h], eax +180009D9F: movzx r15d, r8b +180009DA3: mov byte ptr [rcx+24h], 2 +180009DA7: mov [rcx+25h], r8b +180009DAB: mov rbp, [rbx+8] +180009DAF: lea r14d, [rax+5] +180009DB3: mov rdx, [rbx] +180009DB6: lea r13d, [r14+4] +180009DBA: mov rcx, rbp +180009DBD: movsxd rsi, r13d +180009DC0: sub rcx, rdx +180009DC3: cmp rsi, rcx +180009DC6: jnb short loc_180009DCE +180009DC8: lea rax, [rdx+rsi] +180009DCC: jmp short loc_180009DFD +180009DCE: jbe short loc_180009E01 +180009DD0: mov rax, [rbx+10h] +180009DD4: sub rax, rdx +180009DD7: cmp rsi, rax +180009DDA: jbe short loc_180009DE9 +180009DDC: mov rdx, rsi +180009DDF: mov rcx, rbx +180009DE2: call sub_18000A400 +180009DE7: jmp short loc_180009E01 +180009DE9: sub rsi, rcx +180009DEC: xor edx, edx; Val +180009DEE: mov r8, rsi; Size +180009DF1: mov rcx, rbp; void * +180009DF4: call memset +180009DF9: lea rax, [rsi+rbp] +180009DFD: mov [rbx+8], rax +180009E01: mov rax, [rbx] +180009E04: mov ecx, r14d +180009E07: sar ecx, 8 +180009E0A: xor sil, sil +180009E0D: mov r8d, 3 +180009E13: mov byte ptr [rax], 7Eh ; '~' +180009E16: mov rax, [rbx] +180009E19: mov [rax+1], cl +180009E1C: mov rax, [rbx] +180009E1F: mov [rax+2], r14b +180009E23: mov rcx, [rbx+8] +180009E27: mov rdx, [rbx] +180009E2A: mov rax, rcx +180009E2D: sub rax, rdx +180009E30: cmp rax, r8 +180009E33: jnb short loc_180009E3B +180009E35: mov r8d, ecx +180009E38: sub r8d, edx +180009E3B: movsxd r11, r8d +180009E3E: xor cl, cl +180009E40: xor r8d, r8d +180009E43: xor r9b, r9b +180009E46: test r11, r11 +180009E49: jle short loc_180009E8A +180009E4B: mov eax, r8d +180009E4E: cmp r11, 2 +180009E52: jl short loc_180009E80 +180009E54: lea r10, [r11-1] +180009E58: nop dword ptr [rax+rax+00000000h] +180009E60: add cl, [rax+rdx] +180009E63: add r9b, [rax+rdx+1] +180009E68: add rax, 2 +180009E6C: cmp rax, r10 +180009E6F: jl short loc_180009E60 +180009E71: cmp rax, r11 +180009E74: jge short loc_180009E84 +180009E76: nop word ptr [rax+rax+00000000h] +180009E80: movzx esi, byte ptr [rax+rdx] +180009E84: add cl, r9b +180009E87: add sil, cl +180009E8A: mov [rdx+3], sil +180009E8E: mov rax, [rbx] +180009E91: mov esi, cs:dword_180015038 +180009E97: mov ecx, esi +180009E99: sar ecx, 8 +180009E9C: mov byte ptr [rax+4], 2 +180009EA0: mov rax, [rbx] +180009EA3: mov [rax+5], r15b +180009EA7: mov rax, [rbx] +180009EAA: mov [rax+6], cl +180009EAD: mov rax, [rbx] +180009EB0: mov [rax+7], sil +180009EB4: mov rax, [rdi+8] +180009EB8: cmp rax, [rdi] +180009EBB: jz short loc_180009EE5 +180009EBD: mov rdx, r8 +180009EC0: mov rax, [rdi] +180009EC3: lea rdx, [rdx+1] +180009EC7: mov rcx, [rbx] +180009ECA: inc r8d +180009ECD: movzx eax, byte ptr [rdx+rax-1] +180009ED2: mov [rdx+rcx+7], al +180009ED6: mov rcx, [rdi+8] +180009EDA: sub rcx, [rdi] +180009EDD: movsxd rax, r8d +180009EE0: cmp rax, rcx +180009EE3: jb short loc_180009EC0 +180009EE5: mov rcx, [rbx+8] +180009EE9: lea r9d, [r13-1] +180009EED: mov rdx, [rbx] +180009EF0: mov rax, rcx +180009EF3: sub rax, rdx +180009EF6: movsxd rdi, r9d +180009EF9: xor r10b, r10b +180009EFC: cmp rdi, rax +180009EFF: jbe short loc_180009F07 +180009F01: mov r9d, ecx +180009F04: sub r9d, edx +180009F07: xor cl, cl +180009F09: movsxd r11, r9d +180009F0C: xor r8b, r8b +180009F0F: cmp r11, 4 +180009F13: jle short loc_180009F5B +180009F15: mov eax, 4 +180009F1A: cmp r11, 6 +180009F1E: jl short loc_180009F50 +180009F20: lea r9, [r11-1] +180009F24: nop dword ptr [rax+00h] +180009F28: nop dword ptr [rax+rax+00000000h] +180009F30: add cl, [rdx+rax] +180009F33: add r8b, [rdx+rax+1] +180009F38: add rax, 2 +180009F3C: cmp rax, r9 +180009F3F: jl short loc_180009F30 +180009F41: cmp rax, r11 +180009F44: jge short loc_180009F55 +180009F46: nop word ptr [rax+rax+00000000h] +180009F50: movzx r10d, byte ptr [rdx+rax] +180009F55: add cl, r8b +180009F58: add r10b, cl +180009F5B: mov rbx, [rsp+38h+arg_0] +180009F60: lea ecx, [rsi+1] +180009F63: mov rbp, [rsp+38h+arg_8] +180009F68: cmp ecx, 8000h +180009F6E: mov rsi, [rsp+38h+arg_10] +180009F73: mov eax, 1 +180009F78: cmovl eax, ecx +180009F7B: mov [rdi+rdx], r10b +180009F7F: mov rdi, [rsp+38h+arg_18] +180009F84: mov cs:dword_180015038, eax +180009F8A: add rsp, 20h +180009F8E: pop r15 +180009F90: pop r14 +180009F92: pop r13 +180009F94: retn + +### FUNC 180009FA0 - 18000A1AF (527 bytes) name=sub_180009FA0 +180009FA0: mov [rsp+arg_8], rbx +180009FA5: mov [rsp+arg_10], rbp +180009FAA: mov [rsp+arg_18], rsi +180009FAF: mov [rsp+arg_0], rcx +180009FB4: push rdi +180009FB5: push r12 +180009FB7: push r13 +180009FB9: push r14 +180009FBB: push r15 +180009FBD: sub rsp, 20h +180009FC1: mov rsi, r9 +180009FC4: mov r15, rcx +180009FC7: lea rax, off_1800100F8 +180009FCE: mov [rcx], rax +180009FD1: xor edi, edi +180009FD3: mov [rcx+8], rdi +180009FD7: mov [rcx+10h], rdi +180009FDB: mov [rcx+18h], rdi +180009FDF: mov rax, [r9+8] +180009FE3: sub rax, [r9] +180009FE6: mov [rcx+20h], eax +180009FE9: mov word ptr [rcx+24h], 702h +180009FEF: lea r13d, [rax+5] +180009FF3: lea r12d, [r13+4] +180009FF7: movsxd rbp, r12d +180009FFA: mov r14, [rcx+10h] +180009FFE: cmp rbp, r14 +18000A001: jnb short loc_18000A009 +18000A003: mov [rcx+10h], rbp +18000A007: jmp short loc_18000A036 +18000A009: jbe short loc_18000A036 +18000A00B: test r12d, r12d +18000A00E: jz short loc_18000A01E +18000A010: mov rdx, rbp +18000A013: add rcx, 8 +18000A017: call sub_18000A400 +18000A01C: jmp short loc_18000A036 +18000A01E: sub rbp, r14 +18000A021: mov r8, rbp; Size +18000A024: xor edx, edx; Val +18000A026: mov rcx, r14; void * +18000A029: call memset +18000A02E: lea rax, [r14+rbp] +18000A032: mov [r15+10h], rax +18000A036: mov rax, [r15+8] +18000A03A: mov byte ptr [rax], 7Eh ; '~' +18000A03D: mov rcx, [r15+8] +18000A041: mov eax, r13d +18000A044: sar eax, 8 +18000A047: mov [rcx+1], al +18000A04A: mov rax, [r15+8] +18000A04E: mov [rax+2], r13b +18000A052: mov ecx, 3 +18000A057: xor r10b, r10b +18000A05A: mov r8, [r15+8] +18000A05E: mov rax, [r15+10h] +18000A062: sub rax, r8 +18000A065: cmp rax, rcx +18000A068: cmovb ecx, eax +18000A06B: xor dl, dl +18000A06D: xor r9b, r9b +18000A070: movsxd r11, ecx +18000A073: test ecx, ecx +18000A075: jle short loc_18000A0BB +18000A077: mov rax, rdi +18000A07A: cmp r11, 2 +18000A07E: jl short loc_18000A0B0 +18000A080: lea rcx, [r11-1] +18000A084: nop dword ptr [rax+00h] +18000A088: nop dword ptr [rax+rax+00000000h] +18000A090: add dl, [rax+r8] +18000A094: add r9b, [rax+r8+1] +18000A099: add rax, 2 +18000A09D: cmp rax, rcx +18000A0A0: jl short loc_18000A090 +18000A0A2: cmp rax, r11 +18000A0A5: jge short loc_18000A0B5 +18000A0A7: nop word ptr [rax+rax+00000000h] +18000A0B0: movzx r10d, byte ptr [rax+r8] +18000A0B5: add dl, r9b +18000A0B8: add r10b, dl +18000A0BB: mov [r8+3], r10b +18000A0BF: mov rax, [r15+8] +18000A0C3: mov byte ptr [rax+4], 2 +18000A0C7: mov rax, [r15+8] +18000A0CB: mov byte ptr [rax+5], 7 +18000A0CF: mov rcx, [r15+8] +18000A0D3: mov edx, [rsp+48h+arg_20] +18000A0D7: mov eax, edx +18000A0D9: sar eax, 8 +18000A0DC: mov [rcx+6], al +18000A0DF: mov rax, [r15+8] +18000A0E3: mov [rax+7], dl +18000A0E6: mov rax, [rsi+8] +18000A0EA: cmp rax, [rsi] +18000A0ED: jz short loc_18000A118 +18000A0EF: mov r8, rdi +18000A0F2: mov rdx, [r15+8] +18000A0F6: mov rax, [rsi] +18000A0F9: movzx ecx, byte ptr [r8+rax] +18000A0FE: mov [rdx+r8+8], cl +18000A103: inc edi +18000A105: lea r8, [r8+1] +18000A109: mov rcx, [rsi+8] +18000A10D: sub rcx, [rsi] +18000A110: movsxd rax, edi +18000A113: cmp rax, rcx +18000A116: jb short loc_18000A0F2 +18000A118: lea ecx, [r12-1] +18000A11D: xor r10b, r10b +18000A120: mov r8, [r15+8] +18000A124: mov rax, [r15+10h] +18000A128: sub rax, r8 +18000A12B: movsxd rdi, ecx +18000A12E: xor dl, dl +18000A130: xor r9b, r9b +18000A133: cmp rdi, rax +18000A136: cmovbe eax, ecx +18000A139: movsxd r11, eax +18000A13C: cmp r11, 4 +18000A140: jle short loc_18000A18B +18000A142: mov eax, 4 +18000A147: cmp r11, 6 +18000A14B: jl short loc_18000A180 +18000A14D: lea rcx, [r11-1] +18000A151: nop dword ptr [rax+00h] +18000A155: nop word ptr [rax+rax+00000000h] +18000A160: add dl, [rax+r8] +18000A164: add r9b, [rax+r8+1] +18000A169: add rax, 2 +18000A16D: cmp rax, rcx +18000A170: jl short loc_18000A160 +18000A172: cmp rax, r11 +18000A175: jge short loc_18000A185 +18000A177: nop word ptr [rax+rax+00000000h] +18000A180: movzx r10d, byte ptr [rax+r8] +18000A185: add dl, r9b +18000A188: add r10b, dl +18000A18B: mov [rdi+r8], r10b +18000A18F: mov rax, r15 +18000A192: mov rbx, [rsp+48h+arg_8] +18000A197: mov rbp, [rsp+48h+arg_10] +18000A19C: mov rsi, [rsp+48h+arg_18] +18000A1A1: add rsp, 20h +18000A1A5: pop r15 +18000A1A7: pop r14 +18000A1A9: pop r13 +18000A1AB: pop r12 +18000A1AD: pop rdi +18000A1AE: retn + +### FUNC 18000A1B0 - 18000A235 (133 bytes) name=sub_18000A1B0 +18000A1B0: mov [rsp+arg_8], rbx +18000A1B5: push rdi +18000A1B6: sub rsp, 20h +18000A1BA: lea rax, off_1800100F8 +18000A1C1: mov rbx, rcx +18000A1C4: mov [rcx], rax +18000A1C7: mov edi, edx +18000A1C9: mov rcx, [rcx+8] +18000A1CD: test rcx, rcx +18000A1D0: jz short loc_18000A20D +18000A1D2: mov rdx, [rbx+18h] +18000A1D6: sub rdx, rcx +18000A1D9: cmp rdx, 1000h +18000A1E0: jb short loc_18000A1FA +18000A1E2: mov r8, [rcx-8] +18000A1E6: add rdx, 27h ; ''' +18000A1EA: sub rcx, r8 +18000A1ED: lea rax, [rcx-8] +18000A1F1: cmp rax, 1Fh +18000A1F5: ja short loc_18000A22E +18000A1F7: mov rcx, r8; Block +18000A1FA: call j_j_free +18000A1FF: xor eax, eax +18000A201: mov [rbx+8], rax +18000A205: mov [rbx+10h], rax +18000A209: mov [rbx+18h], rax +18000A20D: test dil, 1 +18000A211: jz short loc_18000A220 +18000A213: mov edx, 28h ; '(' +18000A218: mov rcx, rbx; Block +18000A21B: call j_j_free +18000A220: mov rax, rbx +18000A223: mov rbx, [rsp+28h+arg_8] +18000A228: add rsp, 20h +18000A22C: pop rdi +18000A22D: retn +18000A22E: call cs:_invalid_parameter_noinfo_noreturn +18000A234: db 0CCh + +### FUNC 18000A240 - 18000A2E7 (167 bytes) name=sub_18000A240 +18000A240: push rbx +18000A242: sub rsp, 50h +18000A246: mov rax, cs:__security_cookie +18000A24D: xor rax, rsp +18000A250: mov [rsp+58h+var_18], rax +18000A255: mov rbx, rcx +18000A258: mov [rsp+58h+var_38], rcx +18000A25D: lea rax, off_1800100F8 +18000A264: mov [rcx], rax +18000A267: xor ecx, ecx +18000A269: mov [rbx+8], rcx +18000A26D: mov [rbx+10h], rcx +18000A271: mov [rbx+18h], rcx +18000A275: xorps xmm1, xmm1 +18000A278: movdqu xmmword ptr [rsp+58h+Block], xmm1 +18000A27E: mov [rsp+58h+var_20], rcx +18000A283: lea r9, [rsp+58h+Block] +18000A288: mov rcx, rbx +18000A28B: call sub_180009D70 +18000A290: nop +18000A291: mov rcx, [rsp+58h+Block]; Block +18000A296: test rcx, rcx +18000A299: jz short loc_18000A2D1 +18000A29B: mov rdx, [rsp+58h+var_20] +18000A2A0: sub rdx, rcx +18000A2A3: mov rax, rcx +18000A2A6: cmp rdx, 1000h +18000A2AD: jb short loc_18000A2CB +18000A2AF: add rdx, 27h ; ''' +18000A2B3: mov rcx, [rcx-8] +18000A2B7: sub rax, rcx +18000A2BA: add rax, 0FFFFFFFFFFFFFFF8h +18000A2BE: cmp rax, 1Fh +18000A2C2: jbe short loc_18000A2CB +18000A2C4: call cs:_invalid_parameter_noinfo_noreturn +18000A2CA: int 3; Trap to Debugger +18000A2CB: call j_j_free +18000A2D0: nop +18000A2D1: mov rax, rbx +18000A2D4: mov rcx, [rsp+58h+var_18] +18000A2D9: xor rcx, rsp; StackCookie +18000A2DC: call __security_check_cookie +18000A2E1: add rsp, 50h +18000A2E5: pop rbx +18000A2E6: retn + +### FUNC 18000A2F0 - 18000A354 (100 bytes) name=sub_18000A2F0 +18000A2F0: push rbx +18000A2F2: sub rsp, 20h +18000A2F6: lea rax, off_1800100F8 +18000A2FD: mov rbx, rcx +18000A300: mov [rcx], rax +18000A303: mov rcx, [rcx+8] +18000A307: test rcx, rcx +18000A30A: jz short loc_18000A347 +18000A30C: mov rdx, [rbx+18h] +18000A310: sub rdx, rcx +18000A313: cmp rdx, 1000h +18000A31A: jb short loc_18000A334 +18000A31C: mov r8, [rcx-8] +18000A320: add rdx, 27h ; ''' +18000A324: sub rcx, r8 +18000A327: lea rax, [rcx-8] +18000A32B: cmp rax, 1Fh +18000A32F: ja short loc_18000A34D +18000A331: mov rcx, r8; Block +18000A334: call j_j_free +18000A339: xor eax, eax +18000A33B: mov [rbx+8], rax +18000A33F: mov [rbx+10h], rax +18000A343: mov [rbx+18h], rax +18000A347: add rsp, 20h +18000A34B: pop rbx +18000A34C: retn +18000A34D: call cs:_invalid_parameter_noinfo_noreturn +18000A353: db 0CCh + +### FUNC 18000A360 - 18000A3FC (156 bytes) name=sub_18000A360 +18000A360: mov [rsp+arg_0], rbx +18000A365: mov [rsp+arg_10], rbp +18000A36A: mov [rsp+arg_18], rsi +18000A36F: mov [rsp+arg_8], rdx +18000A374: push rdi +18000A375: sub rsp, 30h +18000A379: mov rbx, rdx +18000A37C: mov rbp, rcx +18000A37F: xor edi, edi +18000A381: mov [rsp+38h+var_18], edi +18000A385: xorps xmm0, xmm0 +18000A388: movups xmmword ptr [rdx], xmm0 +18000A38B: mov [rdx], rdi +18000A38E: mov [rdx+8], rdi +18000A392: mov [rdx+10h], rdi +18000A396: mov [rsp+38h+var_18], 1 +18000A39E: cmp [rcx+20h], edi +18000A3A1: jle short loc_18000A3E3 +18000A3A3: mov esi, edi +18000A3A5: nop word ptr [rax+rax+00000000h] +18000A3B0: mov r8, [rbp+8] +18000A3B4: add r8, 8 +18000A3B8: add r8, rsi +18000A3BB: mov rdx, [rbx+8] +18000A3BF: cmp rdx, [rbx+10h] +18000A3C3: jz short loc_18000A3D1 +18000A3C5: movzx eax, byte ptr [r8] +18000A3C9: mov [rdx], al +18000A3CB: inc qword ptr [rbx+8] +18000A3CF: jmp short loc_18000A3D9 +18000A3D1: mov rcx, rbx +18000A3D4: call sub_180007D30 +18000A3D9: inc edi +18000A3DB: inc rsi +18000A3DE: cmp edi, [rbp+20h] +18000A3E1: jl short loc_18000A3B0 +18000A3E3: mov rax, rbx +18000A3E6: mov rbx, [rsp+38h+arg_0] +18000A3EB: mov rbp, [rsp+38h+arg_10] +18000A3F0: mov rsi, [rsp+38h+arg_18] +18000A3F5: add rsp, 30h +18000A3F9: pop rdi +18000A3FA: retn +18000A3FB: db 0CCh + +### FUNC 18000A400 - 18000A502 (258 bytes) name=sub_18000A400 +18000A400: mov [rsp+arg_18], rsi +18000A405: push r14 +18000A407: sub rsp, 20h +18000A40B: mov rsi, rdx +18000A40E: mov r14, rcx +18000A411: mov rdx, 7FFFFFFFFFFFFFFFh +18000A41B: cmp rsi, rdx +18000A41E: ja loc_18000A4FC +18000A424: mov [rsp+28h+arg_0], rbx +18000A429: mov [rsp+28h+arg_8], rbp +18000A42E: mov rbp, [rcx+8] +18000A432: sub rbp, [rcx] +18000A435: mov rcx, [rcx+10h] +18000A439: sub rcx, [r14] +18000A43C: mov rax, rcx +18000A43F: shr rax, 1 +18000A442: sub rdx, rax +18000A445: cmp rcx, rdx +18000A448: jbe short loc_18000A44F +18000A44A: mov rbx, rsi +18000A44D: jmp short loc_18000A45A +18000A44F: lea rbx, [rax+rcx] +18000A453: cmp rbx, rsi +18000A456: cmovb rbx, rsi +18000A45A: mov [rsp+28h+arg_10], rdi +18000A45F: cmp rbx, 1000h +18000A466: jb short loc_18000A494 +18000A468: lea rcx, [rbx+27h]; Size +18000A46C: cmp rcx, rbx +18000A46F: jbe loc_18000A4F6 +18000A475: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A47A: test rax, rax +18000A47D: jz short loc_18000A48D +18000A47F: lea rdi, [rax+27h] +18000A483: and rdi, 0FFFFFFFFFFFFFFE0h +18000A487: mov [rdi-8], rax +18000A48B: jmp short loc_18000A4A8 +18000A48D: call cs:_invalid_parameter_noinfo_noreturn +18000A493: int 3; Trap to Debugger +18000A494: test rbx, rbx +18000A497: jz short loc_18000A4A6 +18000A499: mov rcx, rbx; Size +18000A49C: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A4A1: mov rdi, rax +18000A4A4: jmp short loc_18000A4A8 +18000A4A6: xor edi, edi +18000A4A8: mov r8, rsi +18000A4AB: lea rcx, [rdi+rbp]; void * +18000A4AF: sub r8, rbp; Size +18000A4B2: xor edx, edx; Val +18000A4B4: call memset +18000A4B9: mov rdx, [r14]; Src +18000A4BC: mov rcx, rdi; void * +18000A4BF: mov r8, [r14+8] +18000A4C3: sub r8, rdx; Size +18000A4C6: call memmove +18000A4CB: mov r9, rbx +18000A4CE: mov r8, rsi +18000A4D1: mov rdx, rdi +18000A4D4: mov rcx, r14 +18000A4D7: mov rdi, [rsp+28h+arg_10] +18000A4DC: mov rbx, [rsp+28h+arg_0] +18000A4E1: mov rbp, [rsp+28h+arg_8] +18000A4E6: mov rsi, [rsp+28h+arg_18] +18000A4EB: add rsp, 20h +18000A4EF: pop r14 +18000A4F1: jmp sub_180007280 +18000A4F6: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +18000A4FB: align 4 +18000A4FC: call sub_180002B80 +18000A501: db 0CCh + +### FUNC 18000A510 - 18000A95D (1101 bytes) name=sub_18000A510 +18000A510: mov [rsp-28h+arg_10], rbx +18000A515: mov [rsp-28h+arg_0], rcx +18000A51A: push rbp +18000A51B: push rsi +18000A51C: push rdi +18000A51D: push r14 +18000A51F: push r15 +18000A521: mov rbp, rsp +18000A524: sub rsp, 20h +18000A528: mov r14, rcx +18000A52B: lea rax, off_180010110 +18000A532: mov [rcx], rax +18000A535: lea rsi, [rcx+8] +18000A539: lea rax, off_18000FCE8 +18000A540: mov [rsi], rax +18000A543: xorps xmm0, xmm0 +18000A546: movups xmmword ptr [rsi+8], xmm0 +18000A54A: mov byte ptr [rsi+18h], 0 +18000A54E: xor r15d, r15d +18000A551: mov [rsi+20h], r15 +18000A555: mov [rsi+28h], r15 +18000A559: lea rbx, [rcx+38h] +18000A55D: mov [rbx], r15 +18000A560: mov [rbx+8], r15 +18000A564: mov [rbx+10h], r15 +18000A568: mov [rbx+18h], r15 +18000A56C: mov [rbx+20h], r15 +18000A570: lea ecx, [r15+10h]; Size +18000A574: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A579: mov [rax+8], r15 +18000A57D: mov [rbx], rax +18000A580: mov [rax], rbx +18000A583: mov [r14+60h], r15 +18000A587: mov [r14+68h], r15 +18000A58B: mov [r14+70h], r15 +18000A58F: mov ecx, 0D8h; Size +18000A594: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A599: mov rdi, rax +18000A59C: mov [rbp+arg_8], rax +18000A5A0: xor edx, edx; Val +18000A5A2: mov r8d, 0D8h; Size +18000A5A8: mov rcx, rax; void * +18000A5AB: call memset +18000A5B0: mov rcx, rdi +18000A5B3: call sub_18000B410 +18000A5B8: lea rax, off_18000FD90 +18000A5BF: mov [rdi], rax +18000A5C2: mov [rdi+30h], r15b +18000A5C6: mov [rbp+arg_8], rdi +18000A5CA: mov rdx, [r14+68h] +18000A5CE: cmp rdx, [r14+70h] +18000A5D2: jz short loc_18000A5DE +18000A5D4: mov [rdx], rdi +18000A5D7: add qword ptr [r14+68h], 8 +18000A5DC: jmp short loc_18000A5EB +18000A5DE: lea r8, [rbp+arg_8] +18000A5E2: lea rcx, [r14+60h] +18000A5E6: call sub_18000B280 +18000A5EB: mov ecx, 0D8h; Size +18000A5F0: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A5F5: mov rdi, rax +18000A5F8: mov [rbp+arg_8], rax +18000A5FC: xor edx, edx; Val +18000A5FE: mov r8d, 0D8h; Size +18000A604: mov rcx, rax; void * +18000A607: call memset +18000A60C: mov rcx, rdi +18000A60F: call sub_18000B410 +18000A614: lea rax, off_18000FDB0 +18000A61B: mov [rdi], rax +18000A61E: mov byte ptr [rdi+30h], 0 +18000A622: mov [rbp+arg_8], rdi +18000A626: mov rdx, [r14+68h] +18000A62A: cmp rdx, [r14+70h] +18000A62E: jz short loc_18000A63A +18000A630: mov [rdx], rdi +18000A633: add qword ptr [r14+68h], 8 +18000A638: jmp short loc_18000A647 +18000A63A: lea r8, [rbp+arg_8] +18000A63E: lea rcx, [r14+60h] +18000A642: call sub_18000B280 +18000A647: mov ecx, 0D8h; Size +18000A64C: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A651: mov rdi, rax +18000A654: mov [rbp+arg_8], rax +18000A658: xor edx, edx; Val +18000A65A: mov r8d, 0D8h; Size +18000A660: mov rcx, rax; void * +18000A663: call memset +18000A668: mov rcx, rdi +18000A66B: call sub_18000B410 +18000A670: lea rax, off_18000FDD0 +18000A677: mov [rdi], rax +18000A67A: mov byte ptr [rdi+30h], 0 +18000A67E: mov [rbp+arg_8], rdi +18000A682: mov rdx, [r14+68h] +18000A686: cmp rdx, [r14+70h] +18000A68A: jz short loc_18000A696 +18000A68C: mov [rdx], rdi +18000A68F: add qword ptr [r14+68h], 8 +18000A694: jmp short loc_18000A6A3 +18000A696: lea r8, [rbp+arg_8] +18000A69A: lea rcx, [r14+60h] +18000A69E: call sub_18000B280 +18000A6A3: mov ecx, 138h; Size +18000A6A8: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A6AD: mov rdi, rax +18000A6B0: mov [rbp+arg_8], rax +18000A6B4: xor edx, edx; Val +18000A6B6: mov r8d, 138h; Size +18000A6BC: mov rcx, rax; void * +18000A6BF: call memset +18000A6C4: mov rcx, rdi +18000A6C7: call sub_18000B410 +18000A6CC: lea rax, off_180010028 +18000A6D3: mov [rdi], rax +18000A6D6: lea rax, off_180010048 +18000A6DD: mov [rdi+0D8h], rax +18000A6E4: mov [rdi+108h], r15 +18000A6EB: mov qword ptr [rdi+110h], 0Fh +18000A6F6: mov byte ptr [rdi+0F8h], 0 +18000A6FD: mov [rdi+118h], r15 +18000A704: mov [rdi+120h], r15 +18000A70B: mov [rdi+128h], r15 +18000A712: mov [rdi+0E0h], r15 +18000A719: mov [rdi+0E8h], r15 +18000A720: mov [rdi+0F0h], r15 +18000A727: mov byte ptr [rdi+30h], 0 +18000A72B: mov byte ptr [rdi+130h], 0 +18000A732: mov [rbp+arg_8], rdi +18000A736: mov rdx, [r14+68h] +18000A73A: cmp rdx, [r14+70h] +18000A73E: jz short loc_18000A74A +18000A740: mov [rdx], rdi +18000A743: add qword ptr [r14+68h], 8 +18000A748: jmp short loc_18000A757 +18000A74A: lea r8, [rbp+arg_8] +18000A74E: lea rcx, [r14+60h] +18000A752: call sub_18000B280 +18000A757: mov ecx, 0F8h; Size +18000A75C: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A761: mov rdi, rax +18000A764: mov [rbp+arg_8], rax +18000A768: xor edx, edx; Val +18000A76A: mov r8d, 0F8h; Size +18000A770: mov rcx, rax; void * +18000A773: call memset +18000A778: mov rcx, rdi +18000A77B: call sub_18000B410 +18000A780: lea rax, off_180010058 +18000A787: mov [rdi], rax +18000A78A: mov [rdi+0E0h], r15 +18000A791: mov [rdi+0E8h], r15 +18000A798: mov [rdi+0F0h], r15 +18000A79F: mov byte ptr [rdi+30h], 0 +18000A7A3: mov [rdi+0D8h], r15d +18000A7AA: mov [rbp+arg_8], rdi +18000A7AE: mov rdx, [r14+68h] +18000A7B2: cmp rdx, [r14+70h] +18000A7B6: jz short loc_18000A7C2 +18000A7B8: mov [rdx], rdi +18000A7BB: add qword ptr [r14+68h], 8 +18000A7C0: jmp short loc_18000A7CF +18000A7C2: lea r8, [rbp+arg_8] +18000A7C6: lea rcx, [r14+60h] +18000A7CA: call sub_18000B280 +18000A7CF: mov ecx, 128h; Size +18000A7D4: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A7D9: mov rdi, rax +18000A7DC: mov [rbp+arg_8], rax +18000A7E0: xor edx, edx; Val +18000A7E2: mov r8d, 128h; Size +18000A7E8: mov rcx, rax; void * +18000A7EB: call memset +18000A7F0: mov rcx, rdi +18000A7F3: call sub_18000B410 +18000A7F8: lea rax, off_1800100D8 +18000A7FF: mov [rdi], rax +18000A802: mov [rdi+0F0h], r15 +18000A809: mov qword ptr [rdi+0F8h], 0Fh +18000A814: mov byte ptr [rdi+0E0h], 0 +18000A81B: mov [rdi+100h], r15 +18000A822: mov [rdi+108h], r15 +18000A829: mov [rdi+110h], r15 +18000A830: xorps xmm0, xmm0 +18000A833: movups xmmword ptr [rdi+118h], xmm0 +18000A83A: mov [rdi+0D8h], r15 +18000A841: mov [rbp+arg_8], rdi +18000A845: mov rdx, [r14+68h] +18000A849: cmp rdx, [r14+70h] +18000A84D: jz short loc_18000A859 +18000A84F: mov [rdx], rdi +18000A852: add qword ptr [r14+68h], 8 +18000A857: jmp short loc_18000A866 +18000A859: lea r8, [rbp+arg_8] +18000A85D: lea rcx, [r14+60h] +18000A861: call sub_18000B280 +18000A866: mov ecx, 0D8h; Size +18000A86B: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A870: mov rdi, rax +18000A873: mov [rbp+arg_8], rax +18000A877: xor edx, edx; Val +18000A879: mov r8d, 0D8h; Size +18000A87F: mov rcx, rax; void * +18000A882: call memset +18000A887: mov rcx, rdi +18000A88A: call sub_18000B410 +18000A88F: lea rax, off_18000FD50 +18000A896: mov [rdi], rax +18000A899: mov byte ptr [rdi+30h], 0 +18000A89D: mov [rbp+arg_8], rdi +18000A8A1: mov rdx, [r14+68h] +18000A8A5: cmp rdx, [r14+70h] +18000A8A9: jz short loc_18000A8B5 +18000A8AB: mov [rdx], rdi +18000A8AE: add qword ptr [r14+68h], 8 +18000A8B3: jmp short loc_18000A8C2 +18000A8B5: lea r8, [rbp+arg_8] +18000A8B9: lea rcx, [r14+60h] +18000A8BD: call sub_18000B280 +18000A8C2: mov ecx, 0E0h; Size +18000A8C7: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000A8CC: mov rdi, rax +18000A8CF: mov [rbp+arg_8], rax +18000A8D3: xor edx, edx; Val +18000A8D5: mov r8d, 0E0h; Size +18000A8DB: mov rcx, rax; void * +18000A8DE: call memset +18000A8E3: mov rcx, rdi +18000A8E6: call sub_18000B410 +18000A8EB: lea rax, off_18000FD70 +18000A8F2: mov [rdi], rax +18000A8F5: mov byte ptr [rdi+30h], 0 +18000A8F9: mov [rdi+0D8h], r15 +18000A900: mov [rbp+arg_8], rdi +18000A904: mov rdx, [r14+68h] +18000A908: cmp rdx, [r14+70h] +18000A90C: jz short loc_18000A918 +18000A90E: mov [rdx], rdi +18000A911: add qword ptr [r14+68h], 8 +18000A916: jmp short loc_18000A925 +18000A918: lea r8, [rbp+arg_8] +18000A91C: lea rcx, [r14+60h] +18000A920: call sub_18000B280 +18000A925: mov rdx, [r14+68h] +18000A929: mov rcx, [r14+60h] +18000A92D: cmp rcx, rdx +18000A930: jz short loc_18000A945 +18000A932: mov rax, [rcx] +18000A935: mov [rax+0D0h], rsi +18000A93C: add rcx, 8 +18000A940: cmp rcx, rdx +18000A943: jnz short loc_18000A932 +18000A945: mov [r14+30h], r14 +18000A949: mov rax, r14 +18000A94C: mov rbx, [rsp+20h+arg_10] +18000A951: add rsp, 20h +18000A955: pop r15 +18000A957: pop r14 +18000A959: pop rdi +18000A95A: pop rsi +18000A95B: pop rbp +18000A95C: retn + +### FUNC 18000A960 - 18000ABC7 (615 bytes) name=sub_18000A960 +18000A960: mov [rsp-8+arg_8], rbx +18000A965: mov [rsp-8+arg_10], rsi +18000A96A: push rbp +18000A96B: push rdi +18000A96C: push r13 +18000A96E: push r14 +18000A970: push r15 +18000A972: lea rbp, [rsp-10h] +18000A977: sub rsp, 110h +18000A97E: mov rax, cs:__security_cookie +18000A985: xor rax, rsp +18000A988: mov [rbp+30h+var_30], rax +18000A98C: mov r13, rcx +18000A98F: xorps xmm0, xmm0 +18000A992: xor eax, eax +18000A994: movups xmmword ptr [rbp+30h+Block], xmm0 +18000A998: mov [rbp+30h+var_98], rax +18000A99C: lea rcx, [rbp+30h+Block] +18000A9A0: call sub_180002FD0 +18000A9A5: nop +18000A9A6: mov rdi, [rbp+30h+Block] +18000A9AA: mov r15, [rbp+30h+Block+8] +18000A9AE: cmp rdi, r15 +18000A9B1: jz loc_18000AACA +18000A9B7: nop word ptr [rax+rax+00000000h] +18000A9C0: mov rdx, rdi +18000A9C3: lea rcx, [rbp+30h+var_90] +18000A9C7: call sub_180002E60 +18000A9CC: nop +18000A9CD: lea rdx, [rdi+20h] +18000A9D1: lea rcx, [rbp+30h+var_70] +18000A9D5: call sub_180002E60 +18000A9DA: nop +18000A9DB: lea rdx, [rdi+40h] +18000A9DF: lea rcx, [rbp+30h+var_50] +18000A9E3: call sub_180002E60 +18000A9E8: nop +18000A9E9: lea rax, [rsp+130h+var_108] +18000A9EE: mov [rsp+130h+var_110], rax +18000A9F3: lea rdx, [rbp+30h+var_90] +18000A9F7: lea rcx, [rsp+130h+var_108] +18000A9FC: call sub_180002E60 +18000AA01: nop +18000AA02: lea rdx, [rbp+30h+var_70] +18000AA06: lea rcx, [rsp+130h+var_E8] +18000AA0B: call sub_180002E60 +18000AA10: nop +18000AA11: lea rdx, [rbp+30h+var_50] +18000AA15: lea rcx, [rsp+130h+Buf] +18000AA1A: call sub_180002E60 +18000AA1F: nop +18000AA20: lea r14, [rsp+130h+Buf] +18000AA25: cmp [rbp+30h+var_B0], 10h +18000AA2A: cmovnb r14, [rsp+130h+Buf] +18000AA30: mov rax, [rsp+130h+var_B8] +18000AA35: cmp rax, 21h ; '!' +18000AA39: jb short loc_18000AA9C +18000AA3B: lea rsi, [rax+r14] +18000AA3F: lea r8, [rsi-20h] +18000AA43: sub r8, r14; MaxCount +18000AA46: mov edx, 46h ; 'F'; Val +18000AA4B: mov rcx, r14; Buf +18000AA4E: call memchr +18000AA53: mov rbx, rax +18000AA56: test rax, rax +18000AA59: jz short loc_18000AA9C +18000AA5B: nop dword ptr [rax+rax+00h] +18000AA60: mov r8d, 21h ; '!'; Size +18000AA66: lea rdx, aFtdibusComport; "FTDIBUS\\COMPORT&VID_0403&PID_6001" +18000AA6D: mov rcx, rbx; Buf1 +18000AA70: call memcmp +18000AA75: test eax, eax +18000AA77: jz loc_18000AB47 +18000AA7D: inc rbx +18000AA80: lea r8, [rsi-20h] +18000AA84: sub r8, rbx; MaxCount +18000AA87: mov edx, 46h ; 'F'; Val +18000AA8C: mov rcx, rbx; Buf +18000AA8F: call memchr +18000AA94: mov rbx, rax +18000AA97: test rax, rax +18000AA9A: jnz short loc_18000AA60 +18000AA9C: xor bl, bl +18000AA9E: lea rcx, [rsp+130h+var_108] +18000AAA3: call sub_180002CA0 +18000AAA8: test bl, bl +18000AAAA: jnz loc_18000AB5B +18000AAB0: lea rcx, [rbp+30h+var_90] +18000AAB4: call sub_180002CA0 +18000AAB9: add rdi, 60h ; '`' +18000AABD: cmp rdi, r15 +18000AAC0: jnz loc_18000A9C0 +18000AAC6: mov rdi, [rbp+30h+Block] +18000AACA: xor sil, sil +18000AACD: test rdi, rdi +18000AAD0: jz loc_18000AB9B +18000AAD6: mov rbx, [rbp+30h+Block+8] +18000AADA: cmp rdi, rbx +18000AADD: jz short loc_18000AAF5 +18000AADF: nop +18000AAE0: mov rcx, rdi +18000AAE3: call sub_180002CA0 +18000AAE8: add rdi, 60h ; '`' +18000AAEC: cmp rdi, rbx +18000AAEF: jnz short loc_18000AAE0 +18000AAF1: mov rdi, [rbp+30h+Block] +18000AAF5: mov rcx, [rbp+30h+var_98] +18000AAF9: sub rcx, rdi +18000AAFC: mov rax, 2AAAAAAAAAAAAAABh +18000AB06: imul rcx +18000AB09: sar rdx, 4 +18000AB0D: mov rax, rdx +18000AB10: shr rax, 3Fh +18000AB14: add rdx, rax +18000AB17: lea rdx, [rdx+rdx*2] +18000AB1B: shl rdx, 5 +18000AB1F: mov rax, rdi +18000AB22: cmp rdx, 1000h +18000AB29: jb short loc_18000AB93 +18000AB2B: add rdx, 27h ; ''' +18000AB2F: mov rdi, [rdi-8] +18000AB33: sub rax, rdi +18000AB36: add rax, 0FFFFFFFFFFFFFFF8h +18000AB3A: cmp rax, 1Fh +18000AB3E: jbe short loc_18000AB93 +18000AB40: call cs:_invalid_parameter_noinfo_noreturn +18000AB46: nop +18000AB47: sub rbx, r14 +18000AB4A: cmp rbx, 0FFFFFFFFFFFFFFFFh +18000AB4E: jz loc_18000AA9C +18000AB54: mov bl, 1 +18000AB56: jmp loc_18000AA9E +18000AB5B: lea rcx, [r13+8] +18000AB5F: mov rax, [rcx] +18000AB62: mov r8d, 1C200h +18000AB68: lea rdx, [rbp+30h+var_90] +18000AB6C: call qword ptr [rax+18h] +18000AB6F: movzx esi, al +18000AB72: mov edx, esi +18000AB74: lea rcx, aTcmOpenD; "TCM Open:%d\n" +18000AB7B: call sub_180007960 +18000AB80: nop +18000AB81: lea rcx, [rbp+30h+var_90] +18000AB85: call sub_180002CA0 +18000AB8A: mov rdi, [rbp+30h+Block] +18000AB8E: jmp loc_18000AACD +18000AB93: mov rcx, rdi; Block +18000AB96: call j_j_free +18000AB9B: movzx eax, sil +18000AB9F: mov rcx, [rbp+30h+var_30] +18000ABA3: xor rcx, rsp; StackCookie +18000ABA6: call __security_check_cookie +18000ABAB: lea r11, [rsp+130h+var_20] +18000ABB3: mov rbx, [r11+38h] +18000ABB7: mov rsi, [r11+40h] +18000ABBB: mov rsp, r11 +18000ABBE: pop r15 +18000ABC0: pop r14 +18000ABC2: pop r13 +18000ABC4: pop rdi +18000ABC5: pop rbp +18000ABC6: retn + +### FUNC 18000ABD0 - 18000AC7D (173 bytes) name=sub_18000ABD0 +18000ABD0: mov [rsp+arg_0], rbx +18000ABD5: mov [rsp+arg_10], rbp +18000ABDA: mov [rsp+arg_18], rsi +18000ABDF: push rdi +18000ABE0: sub rsp, 30h +18000ABE4: mov rbx, rdx +18000ABE7: mov rbp, rcx +18000ABEA: mov [rsp+38h+var_10], rdx +18000ABEF: xor edi, edi +18000ABF1: mov [rsp+38h+var_14], edi +18000ABF5: xorps xmm0, xmm0 +18000ABF8: movups xmmword ptr [rdx], xmm0 +18000ABFB: mov [rdx], rdi +18000ABFE: mov [rdx+8], rdi +18000AC02: mov [rdx+10h], rdi +18000AC06: mov [rsp+38h+var_14], 1 +18000AC0E: lea esi, [rdi+4] +18000AC11: mov rdx, [rbp+50h] +18000AC15: add rdx, rdi +18000AC18: mov rcx, rdx +18000AC1B: shr rcx, 4 +18000AC1F: mov rax, [rbp+48h] +18000AC23: dec rax +18000AC26: and rcx, rax +18000AC29: mov rax, [rbp+40h] +18000AC2D: and edx, 0Fh +18000AC30: mov rax, [rax+rcx*8] +18000AC34: movzx ecx, byte ptr [rdx+rax] +18000AC38: mov [rsp+38h+var_18], cl +18000AC3C: mov rdx, [rbx+8] +18000AC40: cmp rdx, [rbx+10h] +18000AC44: jz short loc_18000AC4E +18000AC46: mov [rdx], cl +18000AC48: inc qword ptr [rbx+8] +18000AC4C: jmp short loc_18000AC5B +18000AC4E: lea r8, [rsp+38h+var_18] +18000AC53: mov rcx, rbx +18000AC56: call sub_180007D30 +18000AC5B: inc rdi +18000AC5E: sub rsi, 1 +18000AC62: jnz short loc_18000AC11 +18000AC64: mov rax, rbx +18000AC67: mov rbx, [rsp+38h+arg_0] +18000AC6C: mov rbp, [rsp+38h+arg_10] +18000AC71: mov rsi, [rsp+38h+arg_18] +18000AC76: add rsp, 30h +18000AC7A: pop rdi +18000AC7B: retn +18000AC7C: db 0CCh + +### FUNC 18000AC80 - 18000B212 (1426 bytes) name=sub_18000AC80 +18000AC80: mov [rsp-28h+arg_8], rbx +18000AC85: mov [rsp-28h+arg_10], rsi +18000AC8A: mov [rsp-28h+arg_18], rdi +18000AC8F: push rbp +18000AC90: push r12 +18000AC92: push r13 +18000AC94: push r14 +18000AC96: push r15 +18000AC98: mov rbp, rsp +18000AC9B: sub rsp, 70h +18000AC9F: mov rax, cs:__security_cookie +18000ACA6: xor rax, rsp +18000ACA9: mov [rbp+var_8], rax +18000ACAD: mov rax, rdx +18000ACB0: mov [rbp+var_48], rdx +18000ACB4: mov rbx, rcx +18000ACB7: mov [rbp+var_40], rcx +18000ACBB: movsxd r13, r8d +18000ACBE: xor r15d, r15d +18000ACC1: test r8d, r8d +18000ACC4: jle loc_18000AD78 +18000ACCA: mov r14d, r15d +18000ACCD: mov rcx, [rcx+58h] +18000ACD1: movzx r12d, byte ptr [r14+rax] +18000ACD6: mov rdx, [rbx+50h] +18000ACDA: mov r8, rcx +18000ACDD: lea eax, [rcx+rdx] +18000ACE0: test al, 0Fh +18000ACE2: jnz short loc_18000AD03 +18000ACE4: lea rax, [rcx+10h] +18000ACE8: shr rax, 4 +18000ACEC: cmp [rbx+48h], rax +18000ACF0: ja short loc_18000AD03 +18000ACF2: lea rcx, [rbx+38h] +18000ACF6: call sub_1800028D0 +18000ACFB: mov rdx, [rbx+50h] +18000ACFF: mov r8, [rbx+58h] +18000AD03: mov rcx, [rbx+48h] +18000AD07: mov rax, rcx +18000AD0A: shl rax, 4 +18000AD0E: dec rax +18000AD11: and rax, rdx +18000AD14: mov [rbx+50h], rax +18000AD18: lea rsi, [rax+r8] +18000AD1C: dec rcx +18000AD1F: mov rax, rsi +18000AD22: shr rax, 4 +18000AD26: and rcx, rax +18000AD29: mov rax, [rbx+40h] +18000AD2D: lea r15, ds:0[rcx*8] +18000AD35: cmp qword ptr [r15+rax], 0 +18000AD3A: jnz short loc_18000AD52 +18000AD3C: mov ecx, 10h; Size +18000AD41: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000AD46: mov rcx, [rbx+40h] +18000AD4A: mov [r15+rcx], rax +18000AD4E: mov rax, [rbx+40h] +18000AD52: and esi, 0Fh +18000AD55: mov rax, [r15+rax] +18000AD59: mov [rsi+rax], r12b +18000AD5D: inc qword ptr [rbx+58h] +18000AD61: mov rcx, [rbx+58h] +18000AD65: inc r14 +18000AD68: cmp r14, r13 +18000AD6B: mov rax, [rbp+var_48] +18000AD6F: jl loc_18000ACD1 +18000AD75: xor r15d, r15d +18000AD78: mov esi, [rbx+58h] +18000AD7B: cmp esi, 9 +18000AD7E: jl loc_18000B1E8 +18000AD84: nop dword ptr [rax+00h] +18000AD88: nop dword ptr [rax+rax+00000000h] +18000AD90: xorps xmm0, xmm0 +18000AD93: xor eax, eax +18000AD95: movups xmmword ptr [rbp+Block], xmm0 +18000AD99: mov [rbp+var_10], rax +18000AD9D: lea rdx, [rbp+Block] +18000ADA1: mov rcx, rbx +18000ADA4: call sub_18000ABD0 +18000ADA9: nop +18000ADAA: mov r8, [rbp+Block] +18000ADAE: movzx eax, cs:byte_180010101 +18000ADB5: cmp [r8], al +18000ADB8: jnz loc_18000AEE2 +18000ADBE: mov rdx, [rbp+Block+8] +18000ADC2: sub rdx, r8 +18000ADC5: lea r14, [r8+rdx] +18000ADC9: lea ecx, [rdx-1] +18000ADCC: xor dil, dil +18000ADCF: movsxd rax, ecx +18000ADD2: xor r10b, r10b +18000ADD5: xor r11b, r11b +18000ADD8: mov r9, r15 +18000ADDB: cmp rax, rdx +18000ADDE: cmovbe edx, ecx +18000ADE1: movsxd rcx, edx +18000ADE4: test edx, edx +18000ADE6: jle short loc_18000AE22 +18000ADE8: cmp rcx, 2 +18000ADEC: jl short loc_18000AE17 +18000ADEE: lea rax, [rcx-1] +18000ADF2: nop dword ptr [rax+00h] +18000ADF6: nop word ptr [rax+rax+00000000h] +18000AE00: add r10b, [r8+r9] +18000AE04: add r11b, [r8+r9+1] +18000AE09: add r9, 2 +18000AE0D: cmp r9, rax +18000AE10: jl short loc_18000AE00 +18000AE12: cmp r9, rcx +18000AE15: jge short loc_18000AE1C +18000AE17: movzx edi, byte ptr [r8+r9] +18000AE1C: add r10b, r11b +18000AE1F: add dil, r10b +18000AE22: cmp [r14-1], dil +18000AE26: jnz loc_18000AEE2 +18000AE2C: movzx ecx, byte ptr [r8+1] +18000AE31: shl ecx, 8 +18000AE34: movzx eax, byte ptr [r8+2] +18000AE39: or ecx, eax +18000AE3B: lea r14d, [rcx+4] +18000AE3F: cmp esi, r14d +18000AE42: jb loc_18000B1AF +18000AE48: mov edx, 4 +18000AE4D: xor r10b, r10b +18000AE50: dec ecx +18000AE52: test ecx, ecx +18000AE54: jle short loc_18000AE93 +18000AE56: mov r11, [rbx+50h] +18000AE5A: mov rdi, [rbx+48h] +18000AE5E: dec rdi +18000AE61: mov rsi, [rbx+40h] +18000AE65: mov r9d, ecx +18000AE68: nop dword ptr [rax+rax+00000000h] +18000AE70: movsxd rcx, edx +18000AE73: add rcx, r11 +18000AE76: mov rax, rcx +18000AE79: shr rax, 4 +18000AE7D: and rax, rdi +18000AE80: and ecx, 0Fh +18000AE83: mov rax, [rsi+rax*8] +18000AE87: add r10b, [rcx+rax] +18000AE8B: inc edx +18000AE8D: sub r9, 1 +18000AE91: jnz short loc_18000AE70 +18000AE93: mov r9, [rbx+50h] +18000AE97: movsxd rdx, edx +18000AE9A: add rdx, r9 +18000AE9D: mov rcx, [rbx+48h] +18000AEA1: dec rcx +18000AEA4: mov rax, rdx +18000AEA7: shr rax, 4 +18000AEAB: and rcx, rax +18000AEAE: and edx, 0Fh +18000AEB1: mov rax, [rbx+40h] +18000AEB5: mov rcx, [rax+rcx*8] +18000AEB9: movzx eax, byte ptr [rdx+rcx] +18000AEBD: cmp r10b, al +18000AEC0: jz short loc_18000AEF6 +18000AEC2: cmp cs:byte_180015FF0, 0 +18000AEC9: jz short loc_18000AEE2 +18000AECB: mov r8d, eax +18000AECE: movzx edx, r10b +18000AED2: lea rcx, aChecksumNotSam; "checksum not same:%.2x, %.2x" +18000AED9: call sub_180007960 +18000AEDE: mov r8, [rbp+Block] +18000AEE2: sub qword ptr [rbx+58h], 1 +18000AEE7: jnz loc_18000B15F +18000AEED: mov [rbx+50h], r15 +18000AEF1: jmp loc_18000B163 +18000AEF6: xorps xmm1, xmm1 +18000AEF9: movdqu [rbp+var_38], xmm1 +18000AEFE: mov r8, r15 +18000AF01: mov [rbp+var_28], r15 +18000AF05: test r14d, r14d +18000AF08: jz short loc_18000AF7F +18000AF0A: mov edi, r14d +18000AF0D: mov rdx, qword ptr [rbp+var_38+8] +18000AF11: mov rcx, [rbx+48h] +18000AF15: dec rcx +18000AF18: mov rax, r9 +18000AF1B: shr rax, 4 +18000AF1F: and rcx, rax +18000AF22: and r9d, 0Fh +18000AF26: mov rax, [rbx+40h] +18000AF2A: mov rcx, [rax+rcx*8] +18000AF2E: movzx eax, byte ptr [r9+rcx] +18000AF33: mov [rbp+var_50], al +18000AF36: cmp rdx, r8 +18000AF39: jz short loc_18000AF4A +18000AF3B: mov [rdx], al +18000AF3D: mov rdx, qword ptr [rbp+var_38+8] +18000AF41: inc rdx +18000AF44: mov qword ptr [rbp+var_38+8], rdx +18000AF48: jmp short loc_18000AF5B +18000AF4A: lea r8, [rbp+var_50] +18000AF4E: lea rcx, [rbp+var_38] +18000AF52: call sub_180007D30 +18000AF57: mov rdx, qword ptr [rbp+var_38+8] +18000AF5B: sub qword ptr [rbx+58h], 1 +18000AF60: jnz short loc_18000AF6B +18000AF62: mov [rbx+50h], r15 +18000AF66: mov r9, r15 +18000AF69: jmp short loc_18000AF73 +18000AF6B: inc qword ptr [rbx+50h] +18000AF6F: mov r9, [rbx+50h] +18000AF73: sub rdi, 1 +18000AF77: jz short loc_18000AF7F +18000AF79: mov r8, [rbp+var_28] +18000AF7D: jmp short loc_18000AF11 +18000AF7F: mov rax, qword ptr [rbp+var_38] +18000AF83: movzx r12d, byte ptr [rax+4] +18000AF88: movzx r14d, byte ptr [rax+5] +18000AF8D: mov [rbp+var_50], r14b +18000AF91: movzx r13d, byte ptr [rax+6] +18000AF96: shl r13d, 8 +18000AF9A: movzx eax, byte ptr [rax+7] +18000AF9E: or r13d, eax +18000AFA1: cmp cs:byte_180015FF0, 0 +18000AFA8: jz short loc_18000B00A +18000AFAA: lea rcx, aRecv; "\nRecv:" +18000AFB1: call sub_180007960 +18000AFB6: mov edi, r15d +18000AFB9: mov rsi, r15 +18000AFBC: mov rax, qword ptr [rbp+var_38+8] +18000AFC0: mov rcx, qword ptr [rbp+var_38] +18000AFC4: sub rax, rcx +18000AFC7: test eax, eax +18000AFC9: jle short loc_18000AFF5 +18000AFCB: nop dword ptr [rax+rax+00h] +18000AFD0: movzx edx, byte ptr [rcx+rsi] +18000AFD4: lea rcx, a2x; "%.2X " +18000AFDB: call sub_180007960 +18000AFE0: inc edi +18000AFE2: lea rsi, [rsi+1] +18000AFE6: mov rax, qword ptr [rbp+var_38+8] +18000AFEA: mov rcx, qword ptr [rbp+var_38] +18000AFEE: sub rax, rcx +18000AFF1: cmp edi, eax +18000AFF3: jl short loc_18000AFD0 +18000AFF5: mov r8d, r14d +18000AFF8: mov edx, r12d +18000AFFB: mov r9d, r13d +18000AFFE: lea rcx, aMain2xSub2xFra; "Main:%.2X Sub:%.2X Frame:%d \n" +18000B005: call sub_180007960 +18000B00A: lea ecx, [r13+1] +18000B00E: mov eax, 1 +18000B013: cmp ecx, 8000h +18000B019: cmovb eax, ecx +18000B01C: mov cs:dword_180015038, eax +18000B022: xor r15b, r15b +18000B025: mov r14, [rbx+68h] +18000B029: mov rdi, [rbx+60h] +18000B02D: cmp rdi, r14 +18000B030: jz short loc_18000B079 +18000B032: movzx ebx, [rbp+var_50] +18000B036: nop word ptr [rax+rax+00000000h] +18000B040: mov rsi, [rdi] +18000B043: mov rax, [rsi] +18000B046: movzx r8d, bl +18000B04A: movzx edx, r12b +18000B04E: mov rcx, rsi +18000B051: call qword ptr [rax] +18000B053: test al, al +18000B055: jz short loc_18000B067 +18000B057: mov r15b, 1 +18000B05A: mov rax, [rsi] +18000B05D: lea rdx, [rbp+var_38] +18000B061: mov rcx, rsi +18000B064: call qword ptr [rax+8] +18000B067: add rdi, 8 +18000B06B: cmp rdi, r14 +18000B06E: jnz short loc_18000B040 +18000B070: mov rbx, [rbp+var_40] +18000B074: test r15b, r15b +18000B077: jnz short loc_18000B0DD +18000B079: lea rcx, aUnhandled; "Unhandled:" +18000B080: call sub_180007960 +18000B085: xor edi, edi +18000B087: xor esi, esi +18000B089: mov rax, qword ptr [rbp+var_38+8] +18000B08D: mov rcx, qword ptr [rbp+var_38] +18000B091: sub rax, rcx +18000B094: test eax, eax +18000B096: jle short loc_18000B0C5 +18000B098: nop dword ptr [rax+rax+00000000h] +18000B0A0: movzx edx, byte ptr [rcx+rsi] +18000B0A4: lea rcx, a2x; "%.2X " +18000B0AB: call sub_180007960 +18000B0B0: inc edi +18000B0B2: lea rsi, [rsi+1] +18000B0B6: mov rax, qword ptr [rbp+var_38+8] +18000B0BA: mov rcx, qword ptr [rbp+var_38] +18000B0BE: sub rax, rcx +18000B0C1: cmp edi, eax +18000B0C3: jl short loc_18000B0A0 +18000B0C5: movzx r8d, [rbp+var_50] +18000B0CA: mov edx, r12d +18000B0CD: mov r9d, r13d +18000B0D0: lea rcx, aMain2xSub2xFra; "Main:%.2X Sub:%.2X Frame:%d \n" +18000B0D7: call sub_180007960 +18000B0DC: nop +18000B0DD: mov rcx, qword ptr [rbp+var_38] +18000B0E1: test rcx, rcx +18000B0E4: jz short loc_18000B127 +18000B0E6: mov rdx, [rbp+var_28] +18000B0EA: sub rdx, rcx +18000B0ED: mov rax, rcx +18000B0F0: cmp rdx, 1000h +18000B0F7: jb short loc_18000B112 +18000B0F9: add rdx, 27h ; ''' +18000B0FD: mov rcx, [rcx-8]; Block +18000B101: sub rax, rcx +18000B104: add rax, 0FFFFFFFFFFFFFFF8h +18000B108: cmp rax, 1Fh +18000B10C: ja loc_18000B1A8 +18000B112: call j_j_free +18000B117: xorps xmm0, xmm0 +18000B11A: movdqu [rbp+var_38], xmm0 +18000B11F: mov [rbp+var_28], 0 +18000B127: mov rcx, [rbp+Block] +18000B12B: test rcx, rcx +18000B12E: jz short loc_18000B198 +18000B130: mov rdx, [rbp+var_10] +18000B134: sub rdx, rcx +18000B137: mov rax, rcx +18000B13A: cmp rdx, 1000h +18000B141: jb short loc_18000B193 +18000B143: add rdx, 27h ; ''' +18000B147: mov rcx, [rcx-8] +18000B14B: sub rax, rcx +18000B14E: add rax, 0FFFFFFFFFFFFFFF8h +18000B152: cmp rax, 1Fh +18000B156: jbe short loc_18000B193 +18000B158: call cs:_invalid_parameter_noinfo_noreturn +18000B15E: nop +18000B15F: inc qword ptr [rbx+50h] +18000B163: test r8, r8 +18000B166: jz short loc_18000B198 +18000B168: mov rdx, [rbp+var_10] +18000B16C: sub rdx, r8 +18000B16F: cmp rdx, 1000h +18000B176: mov rax, r8 +18000B179: jb short loc_18000B190 +18000B17B: mov r8, [r8-8] +18000B17F: sub rax, r8 +18000B182: add rdx, 27h ; ''' +18000B186: add rax, 0FFFFFFFFFFFFFFF8h +18000B18A: cmp rax, 1Fh +18000B18E: ja short loc_18000B158 +18000B190: mov rcx, r8; Block +18000B193: call j_j_free +18000B198: mov esi, [rbx+58h] +18000B19B: cmp esi, 9 +18000B19E: jl short loc_18000B1E8 +18000B1A0: xor r15d, r15d +18000B1A3: jmp loc_18000AD90 +18000B1A8: call cs:_invalid_parameter_noinfo_noreturn +18000B1AE: nop +18000B1AF: test r8, r8 +18000B1B2: jz short loc_18000B1E8 +18000B1B4: mov rdx, [rbp+var_10] +18000B1B8: sub rdx, r8 +18000B1BB: mov rax, r8 +18000B1BE: cmp rdx, 1000h +18000B1C5: jb short loc_18000B1E0 +18000B1C7: add rdx, 27h ; ''' +18000B1CB: mov r8, [r8-8] +18000B1CF: sub rax, r8 +18000B1D2: add rax, 0FFFFFFFFFFFFFFF8h +18000B1D6: cmp rax, 1Fh +18000B1DA: ja loc_18000B158 +18000B1E0: mov rcx, r8; Block +18000B1E3: call j_j_free +18000B1E8: mov rcx, [rbp+var_8] +18000B1EC: xor rcx, rsp; StackCookie +18000B1EF: call __security_check_cookie +18000B1F4: lea r11, [rsp+70h+var_s0] +18000B1F9: mov rbx, [r11+38h] +18000B1FD: mov rsi, [r11+40h] +18000B201: mov rdi, [r11+48h] +18000B205: mov rsp, r11 +18000B208: pop r15 +18000B20A: pop r14 +18000B20C: pop r13 +18000B20E: pop r12 +18000B210: pop rbp +18000B211: retn + +### FUNC 18000B220 - 18000B27C (92 bytes) name=sub_18000B220 +18000B220: push rbx +18000B222: sub rsp, 20h +18000B226: mov rbx, rcx +18000B229: mov rcx, [rcx] +18000B22C: test rcx, rcx +18000B22F: jz short loc_18000B26F +18000B231: mov rdx, [rbx+10h] +18000B235: sub rdx, rcx +18000B238: and rdx, 0FFFFFFFFFFFFFFF8h +18000B23C: cmp rdx, 1000h +18000B243: jb short loc_18000B25D +18000B245: mov r8, [rcx-8] +18000B249: add rdx, 27h ; ''' +18000B24D: sub rcx, r8 +18000B250: lea rax, [rcx-8] +18000B254: cmp rax, 1Fh +18000B258: ja short loc_18000B275 +18000B25A: mov rcx, r8; Block +18000B25D: call j_j_free +18000B262: xor eax, eax +18000B264: mov [rbx], rax +18000B267: mov [rbx+8], rax +18000B26B: mov [rbx+10h], rax +18000B26F: add rsp, 20h +18000B273: pop rbx +18000B274: retn +18000B275: call cs:_invalid_parameter_noinfo_noreturn +18000B27B: db 0CCh + +### FUNC 18000B280 - 18000B410 (400 bytes) name=sub_18000B280 +18000B280: push rdi +18000B282: push r12 +18000B284: push r14 +18000B286: push r15 +18000B288: sub rsp, 28h +18000B28C: mov rax, [rcx+8] +18000B290: mov r15, rdx +18000B293: mov rdx, [rcx] +18000B296: mov r14, r15 +18000B299: sub r14, rdx +18000B29C: sub rax, rdx +18000B29F: mov r12, r8 +18000B2A2: sar r14, 3 +18000B2A6: sar rax, 3 +18000B2AA: mov r8, 1FFFFFFFFFFFFFFFh +18000B2B4: mov rdi, rcx +18000B2B7: cmp rax, r8 +18000B2BA: jz loc_18000B404 +18000B2C0: mov rcx, [rcx+10h] +18000B2C4: sub rcx, rdx +18000B2C7: mov [rsp+48h+arg_18], rbp +18000B2CC: sar rcx, 3 +18000B2D0: lea rbp, [rax+1] +18000B2D4: mov rdx, rcx +18000B2D7: mov rax, r8 +18000B2DA: shr rdx, 1 +18000B2DD: sub rax, rdx +18000B2E0: cmp rcx, rax +18000B2E3: jbe short loc_18000B2EA +18000B2E5: mov rax, rbp +18000B2E8: jmp short loc_18000B2F5 +18000B2EA: lea rax, [rdx+rcx] +18000B2EE: cmp rax, rbp +18000B2F1: cmovb rax, rbp +18000B2F5: mov [rsp+48h+arg_10], rbx +18000B2FA: mov [rsp+48h+var_28], rsi +18000B2FF: cmp rax, r8 +18000B302: ja loc_18000B40A +18000B308: lea rsi, ds:0[rax*8] +18000B310: cmp rsi, 1000h +18000B317: jb short loc_18000B342 +18000B319: lea rcx, [rsi+27h]; Size +18000B31D: cmp rcx, rsi +18000B320: jbe loc_18000B40A +18000B326: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000B32B: test rax, rax +18000B32E: jz loc_18000B3FD +18000B334: lea rbx, [rax+27h] +18000B338: and rbx, 0FFFFFFFFFFFFFFE0h +18000B33C: mov [rbx-8], rax +18000B340: jmp short loc_18000B356 +18000B342: test rsi, rsi +18000B345: jz short loc_18000B354 +18000B347: mov rcx, rsi; Size +18000B34A: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000B34F: mov rbx, rax +18000B352: jmp short loc_18000B356 +18000B354: xor ebx, ebx +18000B356: mov rax, [r12] +18000B35A: lea r14, [rbx+r14*8] +18000B35E: mov [r14], rax +18000B361: mov rcx, rbx; void * +18000B364: mov r8, [rdi+8] +18000B368: mov rdx, [rdi]; Src +18000B36B: cmp r15, r8 +18000B36E: jnz short loc_18000B375 +18000B370: sub r8, rdx +18000B373: jmp short loc_18000B38E +18000B375: mov r8, r15 +18000B378: sub r8, rdx; Size +18000B37B: call memmove +18000B380: mov r8, [rdi+8] +18000B384: lea rcx, [r14+8]; void * +18000B388: sub r8, r15; Size +18000B38B: mov rdx, r15; Src +18000B38E: call memmove +18000B393: mov rcx, [rdi] +18000B396: test rcx, rcx +18000B399: jz short loc_18000B3CC +18000B39B: mov rdx, [rdi+10h] +18000B39F: sub rdx, rcx +18000B3A2: and rdx, 0FFFFFFFFFFFFFFF8h +18000B3A6: cmp rdx, 1000h +18000B3AD: jb short loc_18000B3C7 +18000B3AF: mov r8, [rcx-8] +18000B3B3: add rdx, 27h ; ''' +18000B3B7: sub rcx, r8 +18000B3BA: lea rax, [rcx-8] +18000B3BE: cmp rax, 1Fh +18000B3C2: ja short loc_18000B3FD +18000B3C4: mov rcx, r8; Block +18000B3C7: call j_j_free +18000B3CC: lea rcx, [rbx+rbp*8] +18000B3D0: mov [rdi], rbx +18000B3D3: mov rbp, [rsp+48h+arg_18] +18000B3D8: mov rax, r14 +18000B3DB: mov [rdi+8], rcx +18000B3DF: lea rcx, [rsi+rbx] +18000B3E3: mov rbx, [rsp+48h+arg_10] +18000B3E8: mov rsi, [rsp+48h+var_28] +18000B3ED: mov [rdi+10h], rcx +18000B3F1: add rsp, 28h +18000B3F5: pop r15 +18000B3F7: pop r14 +18000B3F9: pop r12 +18000B3FB: pop rdi +18000B3FC: retn +18000B3FD: call cs:_invalid_parameter_noinfo_noreturn +18000B403: int 3; Trap to Debugger +18000B404: call sub_180002B80 +18000B409: align 2 +18000B40A: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +18000B40F: align 10h + +### FUNC 18000B410 - 18000B48B (123 bytes) name=sub_18000B410 +18000B410: mov [rsp+arg_0], rbx +18000B415: mov [rsp+arg_8], rsi +18000B41A: push rdi +18000B41B: sub rsp, 20h +18000B41F: lea rbx, [rcx+8] +18000B423: xor esi, esi +18000B425: lea rax, off_1800101B8 +18000B42C: mov rdi, rcx +18000B42F: mov [rcx], rax +18000B432: mov [rbx], rsi +18000B435: lea ecx, [rsi+10h]; Size +18000B438: mov [rbx+8], rsi +18000B43C: mov [rbx+10h], rsi +18000B440: mov [rbx+18h], rsi +18000B444: mov [rbx+20h], rsi +18000B448: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000B44D: lea rcx, [rdi+38h]; _Cnd_t +18000B451: mov [rax+8], rsi +18000B455: mov [rbx], rax +18000B458: mov [rax], rbx +18000B45B: call cs:_Cnd_init_in_situ +18000B461: lea rcx, [rdi+80h]; _Mtx_t +18000B468: lea edx, [rsi+2]; int +18000B46B: call cs:_Mtx_init_in_situ +18000B471: mov rbx, [rsp+28h+arg_0] +18000B476: mov rax, rdi +18000B479: mov [rdi+0D0h], rsi +18000B480: mov rsi, [rsp+28h+arg_8] +18000B485: add rsp, 20h +18000B489: pop rdi +18000B48A: retn + +### FUNC 18000B490 - 18000B493 (3 bytes) name=_guard_check_icall_nop +18000B490: retn 0 + +### FUNC 18000B4B0 - 18000B524 (116 bytes) name=sub_18000B4B0 +18000B4B0: sub rsp, 28h +18000B4B4: cmp [rsp+28h+arg_20], 2 +18000B4B9: jnz short loc_18000B51F +18000B4BB: mov [rsp+28h+var_8], rbx +18000B4C0: mov r9d, 1 +18000B4C6: mov rbx, [rsp+28h+arg_28] +18000B4CB: mov r8d, [rbx+218h] +18000B4D2: mov ecx, [rbx+18h] +18000B4D5: mov [rbx+240h], edx +18000B4DB: mov rdx, [rbx+220h] +18000B4E2: call cs:MAG_GetOutputBMPdataRGB24 +18000B4E8: mov rax, [rbx+228h] +18000B4EF: test rax, rax +18000B4F2: jz short loc_18000B51A +18000B4F4: mov r8d, [rbx+20Ch] +18000B4FB: mov r9d, 3 +18000B501: mov edx, [rbx+208h] +18000B507: mov rcx, [rbx+220h] +18000B50E: mov rbx, [rsp+28h+var_8] +18000B513: add rsp, 28h +18000B517: jmp rax +18000B51A: mov rbx, [rsp+28h+var_8] +18000B51F: add rsp, 28h +18000B523: retn + +### FUNC 18000B530 - 18000B6EA (442 bytes) name=sub_18000B530 +18000B530: mov [rsp+arg_10], rbx +18000B535: push rbp +18000B536: push rsi +18000B537: push rdi +18000B538: sub rsp, 30h +18000B53C: mov rax, cs:qword_180015FF8 +18000B543: test rax, rax +18000B546: jnz loc_18000B6DD +18000B54C: mov ecx, 2B0h; Size +18000B551: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000B556: mov rdi, rax +18000B559: mov [rsp+48h+arg_0], rax +18000B55E: xor edx, edx; Val +18000B560: mov r8d, 2B0h; Size +18000B566: mov rcx, rax; void * +18000B569: call memset +18000B56E: lea rax, off_1800101D8 +18000B575: mov [rdi], rax +18000B578: lea rcx, [rdi+8] +18000B57C: xor ebp, ebp +18000B57E: mov [rcx], ebp +18000B580: mov [rcx+8], rbp +18000B584: mov dword ptr [rcx+10h], 0FFFFFFFFh +18000B58B: mov [rcx+1E8h], rbp +18000B592: mov [rcx+1F0h], ebp +18000B598: xorps xmm0, xmm0 +18000B59B: xor eax, eax +18000B59D: movups xmmword ptr [rcx+14h], xmm0 +18000B5A1: movups xmmword ptr [rcx+24h], xmm0 +18000B5A5: movups xmmword ptr [rcx+34h], xmm0 +18000B5A9: movups xmmword ptr [rcx+44h], xmm0 +18000B5AD: mov [rcx+54h], rax +18000B5B1: call sub_1800015D0 +18000B5B6: nop +18000B5B7: mov [rdi+220h], rbp +18000B5BE: mov [rdi+228h], rbp +18000B5C5: mov [rdi+238h], rbp +18000B5CC: mov [rdi+27Ch], ebp +18000B5D2: mov [rdi+240h], rbp +18000B5D9: mov rax, 3FEF5C28F5C28F5Ch +18000B5E3: mov [rdi+248h], rax +18000B5EA: mov [rdi+298h], rbp +18000B5F1: mov qword ptr [rdi+2A0h], 0FFFFFFFFFFFFFFFFh +18000B5FC: mov rax, 4040000000000000h +18000B606: mov [rdi+288h], rax +18000B60D: mov rax, 4044000000000000h +18000B617: mov [rdi+290h], rax +18000B61E: mov rax, 4042800000000000h +18000B628: mov [rdi+280h], rax +18000B62F: mov [rdi+2A8h], bp +18000B636: mov rax, cs:qword_180015FE8 +18000B63D: test rax, rax +18000B640: jnz short loc_18000B683 +18000B642: lea ecx, [rbp+78h]; Size +18000B645: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000B64A: mov [rsp+48h+arg_8], rax +18000B64F: xorps xmm0, xmm0 +18000B652: xor ecx, ecx +18000B654: movups xmmword ptr [rax], xmm0 +18000B657: movups xmmword ptr [rax+10h], xmm0 +18000B65B: movups xmmword ptr [rax+20h], xmm0 +18000B65F: movups xmmword ptr [rax+30h], xmm0 +18000B663: movups xmmword ptr [rax+40h], xmm0 +18000B667: movups xmmword ptr [rax+50h], xmm0 +18000B66B: movups xmmword ptr [rax+60h], xmm0 +18000B66F: mov [rax+70h], rcx +18000B673: mov rcx, rax; int +18000B676: call sub_18000A510 +18000B67B: nop +18000B67C: mov cs:qword_180015FE8, rax +18000B683: mov [rdi+230h], rax +18000B68A: mov rbx, [rax+60h] +18000B68E: mov rsi, [rax+68h] +18000B692: cmp rbx, rsi +18000B695: jz short loc_18000B6D3 +18000B697: nop word ptr [rax+rax+00000000h] +18000B6A0: mov [rsp+48h+var_28], ebp +18000B6A4: lea r9, off_180015798 +18000B6AB: lea r8, off_180015718 +18000B6B2: xor edx, edx +18000B6B4: mov rcx, [rbx] +18000B6B7: call __RTDynamicCast +18000B6BC: test rax, rax +18000B6BF: jnz short loc_18000B6CC +18000B6C1: add rbx, 8 +18000B6C5: cmp rbx, rsi +18000B6C8: jnz short loc_18000B6A0 +18000B6CA: jmp short loc_18000B6D3 +18000B6CC: mov [rax+0D8h], rdi +18000B6D3: mov cs:qword_180015FF8, rdi +18000B6DA: mov rax, rdi +18000B6DD: mov rbx, [rsp+48h+arg_10] +18000B6E2: add rsp, 30h +18000B6E6: pop rdi +18000B6E7: pop rsi +18000B6E8: pop rbp +18000B6E9: retn + +### FUNC 18000B6F0 - 18000B899 (425 bytes) name=sub_18000B6F0 +18000B6F0: sub rsp, 38h +18000B6F4: cmp dword ptr [rcx+8], 0 +18000B6F8: mov [rsp+38h+arg_0], rbx +18000B6FD: mov [rsp+38h+arg_8], rsi +18000B702: mov rsi, rcx +18000B705: jz loc_18000B84B +18000B70B: mov ecx, [rcx+18h] +18000B70E: call cs:MAG_EnumCameras +18000B714: mov ecx, 32h ; '2'; dwMilliseconds +18000B719: call cs:Sleep +18000B71F: cmp dword ptr [rsi+8], 0 +18000B723: jz loc_18000B84B +18000B729: xor edx, edx +18000B72B: xor ecx, ecx +18000B72D: call cs:MAG_GetTerminalList +18000B733: test eax, eax +18000B735: jz loc_18000B84B +18000B73B: mov ecx, [rsi+18h] +18000B73E: xor edx, edx +18000B740: mov r8d, 3E8h +18000B746: call cs:MAG_LinkCamera +18000B74C: test eax, eax +18000B74E: jz loc_18000B84B +18000B754: mov ecx, [rsi+18h] +18000B757: lea rbx, [rsi+1Ch] +18000B75B: mov rdx, rbx +18000B75E: mov r8d, 48h ; 'H' +18000B764: call cs:MAG_GetCamInfo +18000B76A: test rbx, rbx +18000B76D: jz loc_18000B84B +18000B773: mov eax, [rbx] +18000B775: lea rdx, [rsi+250h] +18000B77C: mov ecx, [rsi+18h] +18000B77F: mov [rsi+200h], eax +18000B785: mov eax, [rbx+4] +18000B788: mov [rsi+204h], eax +18000B78E: mov eax, [rbx+40h] +18000B791: mov [rsi+208h], eax +18000B797: mov eax, [rbx+44h] +18000B79A: mov [rsi+20Ch], eax +18000B7A0: mov dword ptr [rsi+210h], 10h +18000B7AA: mov eax, [rbx+44h] +18000B7AD: mov [rsi+214h], eax +18000B7B3: mov [rsp+38h+var_8], rdi +18000B7B8: call cs:MAG_GetFixPara +18000B7BE: movsd xmm0, qword ptr [rsi+248h] +18000B7C6: lea rdx, [rsi+250h] +18000B7CD: mov ecx, [rsi+18h] +18000B7D0: mov r8d, 2 +18000B7D6: cvtpd2ps xmm0, xmm0 +18000B7DA: mov dword ptr [rsi+250h], 3F266666h +18000B7E4: movss dword ptr [rsi+254h], xmm0 +18000B7EC: call cs:MAG_SetFixPara +18000B7F2: mov eax, [rsi+208h] +18000B7F8: imul eax, [rsi+20Ch] +18000B7FF: lea eax, [rax+rax*2] +18000B802: movsxd rcx, eax; Size +18000B805: mov [rsi+218h], eax +18000B80B: call j_??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000B810: mov ecx, [rsi+18h] +18000B813: lea r8, sub_18000B4B0 +18000B81A: mov r9d, 2 +18000B820: mov [rsi+220h], rax +18000B827: lea rdx, [rsi+200h] +18000B82E: mov [rsp+38h+var_18], rsi +18000B833: call cs:MAG_StartProcessImage +18000B839: mov ecx, [rsi+18h] +18000B83C: mov rdi, [rsp+38h+var_8] +18000B841: test eax, eax +18000B843: jnz short loc_18000B883 +18000B845: call cs:MAG_DisLinkCamera +18000B84B: xor al, al +18000B84D: mov rcx, [rsi+230h] +18000B854: mov [rsi+2A8h], al +18000B85A: call sub_18000A960 +18000B85F: cmp byte ptr [rsi+2A8h], 0 +18000B866: mov rbx, [rsp+38h+arg_0] +18000B86B: mov [rsi+2A9h], al +18000B871: mov rsi, [rsp+38h+arg_8] +18000B876: jz short loc_18000B892 +18000B878: test al, al +18000B87A: jz short loc_18000B892 +18000B87C: mov al, 1 +18000B87E: add rsp, 38h +18000B882: retn +18000B883: mov edx, 2 +18000B888: call cs:MAG_SetColorPalette +18000B88E: mov al, 1 +18000B890: jmp short loc_18000B84D +18000B892: xor al, al +18000B894: add rsp, 38h +18000B898: retn + +### FUNC 18000B8A0 - 18000B951 (177 bytes) name=sub_18000B8A0 +18000B8A0: push rbx +18000B8A2: sub rsp, 30h +18000B8A6: mov rax, [rcx+238h] +18000B8AD: mov rbx, rcx +18000B8B0: mov [rcx+2A0h], edx +18000B8B6: test rax, rax +18000B8B9: jz loc_18000B94B +18000B8BF: movaps [rsp+38h+var_18], xmm6 +18000B8C4: movd xmm6, edx +18000B8C8: cvtdq2ps xmm6, xmm6 +18000B8CB: test edx, edx +18000B8CD: jns short loc_18000B91D +18000B8CF: movaps xmm0, xmm6 +18000B8D2: call rax +18000B8D4: call cs:GetTickCount +18000B8DA: mov ecx, eax +18000B8DC: sub ecx, [rbx+244h] +18000B8E2: cmp ecx, 0EA60h +18000B8E8: jbe short loc_18000B946 +18000B8EA: sub eax, [rbx+2A4h] +18000B8F0: cmp eax, 1388h +18000B8F5: jbe short loc_18000B946 +18000B8F7: cmp dword ptr [rbx+8], 0 +18000B8FB: jz short loc_18000B906 +18000B8FD: mov ecx, [rbx+18h] +18000B900: call cs:MAG_TriggerFFC +18000B906: call cs:GetTickCount +18000B90C: movaps xmm6, [rsp+38h+var_18] +18000B911: mov [rbx+244h], eax +18000B917: add rsp, 30h +18000B91B: pop rbx +18000B91C: retn +18000B91D: call cs:GetTickCount +18000B923: cmp dword ptr [rbx+27Ch], 0 +18000B92A: mov [rbx+2A4h], eax +18000B930: mov rax, [rbx+238h] +18000B937: jz short loc_18000B941 +18000B939: mulss xmm6, cs:dword_1800101E0 +18000B941: movaps xmm0, xmm6 +18000B944: call rax +18000B946: movaps xmm6, [rsp+38h+var_18] +18000B94B: add rsp, 30h +18000B94F: pop rbx +18000B950: retn + +### FUNC 18000B960 - 18000BB2C (460 bytes) name=sub_18000B960 +18000B960: mov [rsp+arg_8], rbx +18000B965: mov [rsp+arg_10], rsi +18000B96A: push rdi +18000B96B: push r14 +18000B96D: push r15 +18000B96F: sub rsp, 40h +18000B973: mov r15d, 9Fh +18000B979: mov esi, r9d +18000B97C: mov r14d, r8d +18000B97F: mov rbx, rdx +18000B982: mov rdi, rcx +18000B985: cmp r8d, r15d +18000B988: ja loc_18000BAE2 +18000B98E: cmp r9d, 77h ; 'w' +18000B992: ja loc_18000BAE2 +18000B998: mov ecx, [rcx+18h] +18000B99B: mov r9d, 3 +18000B9A1: mov [rsp+58h+arg_0], rbp +18000B9A6: mov r8d, esi +18000B9A9: mov edx, r14d +18000B9AC: movaps [rsp+58h+var_28], xmm7 +18000B9B1: call cs:MAG_GetTemperatureProbe +18000B9B7: movss xmm2, dword ptr [rdi+254h] +18000B9BF: mov r9d, r14d +18000B9C2: mov ecx, [rdi+18h] +18000B9C5: mov edx, eax +18000B9C7: mov [rsp+58h+var_38], esi +18000B9CB: call cs:MAG_FixTemperature +18000B9D1: xor ebp, ebp +18000B9D3: lea ecx, [r14-1] +18000B9D7: test ecx, ecx +18000B9D9: mov edx, ebp +18000B9DB: mov r8d, ebp +18000B9DE: cmovns edx, ecx +18000B9E1: movd xmm7, eax +18000B9E5: lea ecx, [r14+1] +18000B9E9: cmp ecx, r15d +18000B9EC: lea eax, [rsi+1] +18000B9EF: cvtdq2pd xmm7, xmm7 +18000B9F3: cmovl r15d, ecx +18000B9F7: lea ecx, [rsi-1] +18000B9FA: test ecx, ecx +18000B9FC: mov r9d, r15d +18000B9FF: cmovns r8d, ecx +18000BA03: mov ecx, 77h ; 'w' +18000BA08: cmp eax, ecx +18000BA0A: mulsd xmm7, cs:qword_1800101E8 +18000BA12: cmovl ecx, eax +18000BA15: mov [rsp+58h+var_38], ecx +18000BA19: mov ecx, [rdi+18h] +18000BA1C: call cs:MAG_EstimateUnderArmTempFromForeheadRect +18000BA22: movd xmm2, eax +18000BA26: mov eax, [rdi+27Ch] +18000BA2C: cvtdq2pd xmm2, xmm2 +18000BA30: mulsd xmm2, cs:qword_1800101E8 +18000BA38: cmp eax, 1 +18000BA3B: jnz short loc_18000BA5D +18000BA3D: mulsd xmm7, cs:qword_1800101F0 +18000BA45: mulsd xmm2, cs:qword_1800101F0 +18000BA4D: addsd xmm7, cs:qword_1800101F8 +18000BA55: addsd xmm2, cs:qword_1800101F8 +18000BA5D: movsd xmm0, qword ptr [rdi+298h] +18000BA65: addsd xmm2, xmm0 +18000BA69: addsd xmm7, xmm0 +18000BA6D: comisd xmm2, qword ptr [rdi+290h] +18000BA75: ja short loc_18000BA93 +18000BA77: movsd xmm0, qword ptr [rdi+288h] +18000BA7F: comisd xmm0, xmm2 +18000BA83: ja short loc_18000BA93 +18000BA85: comisd xmm2, qword ptr [rdi+280h] +18000BA8D: setnb bpl +18000BA91: jmp short loc_18000BA98 +18000BA93: mov ebp, 0FFFFFFFFh +18000BA98: movd xmm0, r14d +18000BA9D: cvtdq2ps xmm0, xmm0 +18000BAA0: mov [rbx+24h], ebp +18000BAA3: mov rbp, [rsp+58h+arg_0] +18000BAA8: mov [rbx+20h], eax +18000BAAB: movd xmm1, esi +18000BAAF: divss xmm0, cs:dword_180010204 +18000BAB7: cvtdq2ps xmm1, xmm1 +18000BABA: cvtps2pd xmm0, xmm0 +18000BABD: divss xmm1, cs:dword_180010200 +18000BAC5: movsd qword ptr [rbx], xmm0 +18000BAC9: cvtps2pd xmm0, xmm1 +18000BACC: movsd qword ptr [rbx+10h], xmm7 +18000BAD1: movaps xmm7, [rsp+58h+var_28] +18000BAD6: movsd qword ptr [rbx+8], xmm0 +18000BADB: movsd qword ptr [rbx+18h], xmm2 +18000BAE0: jmp short loc_18000BB15 +18000BAE2: mov rax, 0BFF0000000000000h +18000BAEC: mov dword ptr [rdx+24h], 0FA0A1F00h +18000BAF3: mov [rdx], rax +18000BAF6: mov [rdx+8], rax +18000BAFA: mov rax, 0C197D78400000000h +18000BB04: mov [rdx+18h], rax +18000BB08: mov [rdx+10h], rax +18000BB0C: mov eax, [rcx+27Ch] +18000BB12: mov [rdx+20h], eax +18000BB15: mov rsi, [rsp+58h+arg_10] +18000BB1A: mov rax, rbx +18000BB1D: mov rbx, [rsp+58h+arg_8] +18000BB22: add rsp, 40h +18000BB26: pop r15 +18000BB28: pop r14 +18000BB2A: pop rdi +18000BB2B: retn + +### FUNC 18000BB30 - 18000BB36 (6 bytes) name=GetSDKVersion +18000BB30: mov eax, 2710h +18000BB35: retn + +### FUNC 18000BB40 - 18000BB55 (21 bytes) name=Start +18000BB40: sub rsp, 28h +18000BB44: call sub_18000B530 +18000BB49: mov rcx, rax +18000BB4C: add rsp, 28h +18000BB50: jmp sub_18000B6F0 + +### FUNC 18000BB60 - 18000BBF8 (152 bytes) name=Stop +18000BB60: push rbx +18000BB62: sub rsp, 20h +18000BB66: call sub_18000B530 +18000BB6B: mov rbx, rax +18000BB6E: mov ecx, [rax+18h] +18000BB71: call cs:MAG_IsProcessingImage +18000BB77: test eax, eax +18000BB79: jz short loc_18000BBBD +18000BB7B: cmp dword ptr [rbx+1F0h], 0 +18000BB82: jz short loc_18000BB97 +18000BB84: mov ecx, [rbx+18h] +18000BB87: call cs:MAG_LocalStorageAviStop +18000BB8D: mov dword ptr [rbx+1F0h], 0 +18000BB97: cmp dword ptr [rbx+1F4h], 0 +18000BB9E: jz short loc_18000BBB4 +18000BBA0: mov ecx, [rbx+18h] +18000BBA3: call cs:MAG_LocalStorageMgsStop +18000BBA9: mov qword ptr [rbx+1F4h], 0 +18000BBB4: mov ecx, [rbx+18h] +18000BBB7: call cs:MAG_StopProcessImage +18000BBBD: mov ecx, [rbx+18h] +18000BBC0: call cs:MAG_IsLinked +18000BBC6: test eax, eax +18000BBC8: jz short loc_18000BBD3 +18000BBCA: mov ecx, [rbx+18h] +18000BBCD: call cs:MAG_DisLinkCamera +18000BBD3: mov rcx, [rbx+230h] +18000BBDA: add rcx, 8 +18000BBDE: mov byte ptr [rbx+2A8h], 0 +18000BBE5: mov rax, [rcx] +18000BBE8: call qword ptr [rax+20h] +18000BBEB: mov byte ptr [rbx+2A9h], 0 +18000BBF2: add rsp, 20h +18000BBF6: pop rbx +18000BBF7: retn + +### FUNC 18000BC00 - 18000BC29 (41 bytes) name=IsWorking +18000BC00: sub rsp, 28h +18000BC04: call sub_18000B530 +18000BC09: cmp byte ptr [rax+2A8h], 0 +18000BC10: jz short loc_18000BC22 +18000BC12: cmp byte ptr [rax+2A9h], 0 +18000BC19: jz short loc_18000BC22 +18000BC1B: mov al, 1 +18000BC1D: add rsp, 28h +18000BC21: retn +18000BC22: xor al, al +18000BC24: add rsp, 28h +18000BC28: retn + +### FUNC 18000BC30 - 18000BC4B (27 bytes) name=SetNewIRFrameDelegate +18000BC30: push rbx +18000BC32: sub rsp, 20h +18000BC36: mov rbx, rcx +18000BC39: call sub_18000B530 +18000BC3E: mov [rax+228h], rbx +18000BC45: add rsp, 20h +18000BC49: pop rbx +18000BC4A: retn + +### FUNC 18000BC50 - 18000BC6B (27 bytes) name=SetNewDistanceDelegate +18000BC50: push rbx +18000BC52: sub rsp, 20h +18000BC56: mov rbx, rcx +18000BC59: call sub_18000B530 +18000BC5E: mov [rax+238h], rbx +18000BC65: add rsp, 20h +18000BC69: pop rbx +18000BC6A: retn + +### FUNC 18000BC70 - 18000BCEA (122 bytes) name=ReadTemperatureAtPoint +18000BC70: mov [rsp+arg_0], rbx +18000BC75: mov [rsp+arg_8], rbp +18000BC7A: mov [rsp+arg_10], rsi +18000BC7F: push rdi +18000BC80: sub rsp, 50h +18000BC84: mov rbp, r8 +18000BC87: mov ebx, edx +18000BC89: mov edi, ecx +18000BC8B: call sub_18000B530 +18000BC90: mov rsi, rax +18000BC93: mov ecx, [rax+18h] +18000BC96: call cs:MAG_LockFrame +18000BC9C: mov r9d, ebx +18000BC9F: lea rdx, [rsp+58h+var_38] +18000BCA4: mov r8d, edi +18000BCA7: mov rcx, rsi +18000BCAA: call sub_18000B960 +18000BCAF: mov ecx, [rsi+18h] +18000BCB2: call cs:MAG_UnLockFrame +18000BCB8: movups xmm0, [rsp+58h+var_38] +18000BCBD: mov rbx, [rsp+58h+arg_0] +18000BCC2: movups xmm1, [rsp+58h+var_28] +18000BCC7: mov rsi, [rsp+58h+arg_10] +18000BCCC: movups xmmword ptr [rbp+0], xmm0 +18000BCD0: movsd xmm0, [rsp+58h+var_18] +18000BCD6: movups xmmword ptr [rbp+10h], xmm1 +18000BCDA: movsd qword ptr [rbp+20h], xmm0 +18000BCDF: mov rbp, [rsp+58h+arg_8] +18000BCE4: add rsp, 50h +18000BCE8: pop rdi +18000BCE9: retn + +### FUNC 18000BCF0 - 18000BE59 (361 bytes) name=ReadTemperatureInRect +18000BCF0: push rbx +18000BCF2: push rbp +18000BCF3: push rsi +18000BCF4: push rdi +18000BCF5: push r14 +18000BCF7: push r15 +18000BCF9: sub rsp, 98h +18000BD00: movaps [rsp+0C8h+var_48], xmm6 +18000BD08: mov rax, cs:__security_cookie +18000BD0F: xor rax, rsp +18000BD12: mov [rsp+0C8h+var_58], rax +18000BD17: mov r15, [rsp+0C8h+arg_20] +18000BD1F: mov edi, r9d +18000BD22: mov esi, r8d +18000BD25: mov ebx, edx +18000BD27: mov ebp, ecx +18000BD29: call sub_18000B530 +18000BD2E: mov r14, rax +18000BD31: mov ecx, [rax+18h] +18000BD34: call cs:MAG_LockFrame +18000BD3A: xor eax, eax +18000BD3C: xor r9d, r9d +18000BD3F: mov r8d, 77h ; 'w' +18000BD45: mov [rsp+0C8h+var_60], eax +18000BD49: mov eax, r8d +18000BD4C: test ebx, ebx +18000BD4E: xorps xmm0, xmm0 +18000BD51: mov edx, ebp +18000BD53: cmovns r9d, ebx +18000BD57: movups [rsp+0C8h+var_70], xmm0 +18000BD5C: lea ecx, [r9+rdi] +18000BD60: cmp ecx, 78h ; 'x' +18000BD63: cmovge ecx, r8d +18000BD67: sub eax, r9d +18000BD6A: sub r8d, ecx +18000BD6D: lea r9d, [rsi+rbp] +18000BD71: lea rcx, [rsp+0C8h+var_70] +18000BD76: mov [rsp+0C8h+var_A0], rcx +18000BD7B: mov ecx, [r14+18h] +18000BD7F: mov [rsp+0C8h+var_A8], eax +18000BD83: call cs:MAG_GetRectTemperatureInfo +18000BD89: test al, al +18000BD8B: jz short loc_18000BDEA +18000BD8D: mov edi, [rsp+0C8h+var_60] +18000BD91: mov eax, 66666667h +18000BD96: movss xmm2, dword ptr [r14+254h] +18000BD9F: mov ecx, [r14+18h] +18000BDA3: imul edi +18000BDA5: mov ebx, edx +18000BDA7: mov edx, dword ptr [rsp+0C8h+var_70+4] +18000BDAB: sar ebx, 6 +18000BDAE: mov eax, ebx +18000BDB0: shr eax, 1Fh +18000BDB3: add ebx, eax +18000BDB5: mov [rsp+0C8h+var_A8], ebx +18000BDB9: lea eax, [rbx+rbx*4] +18000BDBC: shl eax, 5 +18000BDBF: sub edi, eax +18000BDC1: mov r9d, edi +18000BDC4: call cs:MAG_FixTemperature +18000BDCA: mov r9d, 78h ; 'x' +18000BDD0: lea rdx, [rsp+0C8h+var_98] +18000BDD5: sub r9d, ebx +18000BDD8: mov r8d, edi +18000BDDB: mov rcx, r14 +18000BDDE: call sub_18000B960 +18000BDE3: movups xmm6, [rsp+0C8h+var_98] +18000BDE8: jmp short loc_18000BE10 +18000BDEA: movaps xmm0, cs:xmmword_180010220 +18000BDF1: mov eax, [r14+27Ch] +18000BDF8: movaps xmm6, cs:xmmword_180010210 +18000BDFF: movups [rsp+0C8h+var_88], xmm0 +18000BE04: mov dword ptr [rsp+0C8h+var_78], eax +18000BE08: mov dword ptr [rsp+0C8h+var_78+4], 0FA0A1F00h +18000BE10: mov ecx, [r14+18h] +18000BE14: call cs:MAG_UnLockFrame +18000BE1A: movups xmm0, [rsp+0C8h+var_88] +18000BE1F: movsd xmm1, [rsp+0C8h+var_78] +18000BE25: movups xmmword ptr [r15], xmm6 +18000BE29: movups xmmword ptr [r15+10h], xmm0 +18000BE2E: movsd qword ptr [r15+20h], xmm1 +18000BE34: mov rcx, [rsp+0C8h+var_58] +18000BE39: xor rcx, rsp; StackCookie +18000BE3C: call __security_check_cookie +18000BE41: movaps xmm6, [rsp+0C8h+var_48] +18000BE49: add rsp, 98h +18000BE50: pop r15 +18000BE52: pop r14 +18000BE54: pop rdi +18000BE55: pop rsi +18000BE56: pop rbp +18000BE57: pop rbx +18000BE58: retn + +### FUNC 18000BE60 - 18000BEB1 (81 bytes) name=SetTempBoundary +18000BE60: sub rsp, 58h +18000BE64: movaps [rsp+58h+var_18], xmm6 +18000BE69: movaps xmm6, xmm0 +18000BE6C: movaps [rsp+58h+var_28], xmm7 +18000BE71: movaps xmm7, xmm1 +18000BE74: movaps [rsp+58h+var_38], xmm8 +18000BE7A: movaps xmm8, xmm2 +18000BE7E: call sub_18000B530 +18000BE83: movsd qword ptr [rax+288h], xmm6 +18000BE8B: movaps xmm6, [rsp+58h+var_18] +18000BE90: movsd qword ptr [rax+290h], xmm7 +18000BE98: movaps xmm7, [rsp+58h+var_28] +18000BE9D: movsd qword ptr [rax+280h], xmm8 +18000BEA6: movaps xmm8, [rsp+58h+var_38] +18000BEAC: add rsp, 58h +18000BEB0: retn + +### FUNC 18000BEC0 - 18000BEE3 (35 bytes) name=SetTempOffset +18000BEC0: sub rsp, 38h +18000BEC4: movaps [rsp+38h+var_18], xmm6 +18000BEC9: movaps xmm6, xmm0 +18000BECC: call sub_18000B530 +18000BED1: movsd qword ptr [rax+298h], xmm6 +18000BED9: movaps xmm6, [rsp+38h+var_18] +18000BEDE: add rsp, 38h +18000BEE2: retn + +### FUNC 18000BEF0 - 18000BF09 (25 bytes) name=SetUnitMode +18000BEF0: push rbx +18000BEF2: sub rsp, 20h +18000BEF6: mov ebx, ecx +18000BEF8: call sub_18000B530 +18000BEFD: mov [rax+27Ch], ebx +18000BF03: add rsp, 20h +18000BF07: pop rbx +18000BF08: retn + +### FUNC 18000BF10 - 18000BF8C (124 bytes) name=Rotate +18000BF10: mov [rsp+arg_8], rbx +18000BF15: mov [rsp+arg_10], rsi +18000BF1A: push rdi +18000BF1B: sub rsp, 30h +18000BF1F: mov esi, ecx +18000BF21: call sub_18000B530 +18000BF26: mov rdx, [rax+230h] +18000BF2D: mov rbx, [rdx+60h] +18000BF31: mov rdi, [rdx+68h] +18000BF35: cmp rbx, rdi +18000BF38: jz short loc_18000BF7C +18000BF3A: mov [rsp+38h+arg_0], rbp +18000BF3F: xor ebp, ebp +18000BF41: mov rcx, [rbx] +18000BF44: lea r9, off_180015740 +18000BF4B: lea r8, off_180015718 +18000BF52: mov dword ptr [rsp+38h+var_18], ebp; void * +18000BF56: xor edx, edx +18000BF58: call __RTDynamicCast +18000BF5D: test rax, rax +18000BF60: jnz short loc_18000BF6D +18000BF62: add rbx, 8 +18000BF66: cmp rbx, rdi +18000BF69: jnz short loc_18000BF41 +18000BF6B: jmp short loc_18000BF77 +18000BF6D: mov edx, esi; int +18000BF6F: mov rcx, rax; int +18000BF72: call sub_180007A40 +18000BF77: mov rbp, [rsp+38h+arg_0] +18000BF7C: mov rbx, [rsp+38h+arg_8] +18000BF81: mov rsi, [rsp+38h+arg_10] +18000BF86: add rsp, 30h +18000BF8A: pop rdi +18000BF8B: retn + +### FUNC 18000BF90 - 18000BFCB (59 bytes) name=GetInnerIRCameraTemp +18000BF90: sub rsp, 28h +18000BF94: call sub_18000B530 +18000BF99: cmp dword ptr [rax+27Ch], 1 +18000BFA0: movd xmm0, dword ptr [rax+240h] +18000BFA8: cvtdq2pd xmm0, xmm0 +18000BFAC: mulsd xmm0, cs:qword_1800101E8 +18000BFB4: jnz short loc_18000BFC6 +18000BFB6: mulsd xmm0, cs:qword_1800101F0 +18000BFBE: addsd xmm0, cs:qword_1800101F8 +18000BFC6: add rsp, 28h +18000BFCA: retn + +### FUNC 18000BFD0 - 18000C028 (88 bytes) name=SetEmissivity +18000BFD0: sub rsp, 38h +18000BFD4: movaps [rsp+38h+var_18], xmm6 +18000BFD9: movaps xmm6, xmm0 +18000BFDC: call sub_18000B530 +18000BFE1: cmp dword ptr [rax+8], 0 +18000BFE5: jnz short loc_18000BFF9 +18000BFE7: movsd qword ptr [rax+248h], xmm6 +18000BFEF: movaps xmm6, [rsp+38h+var_18] +18000BFF4: add rsp, 38h +18000BFF8: retn +18000BFF9: mov ecx, [rax+18h] +18000BFFC: lea rdx, [rax+250h] +18000C003: xorps xmm0, xmm0 +18000C006: mov r8d, 2 +18000C00C: cvtsd2ss xmm0, xmm6 +18000C010: movss dword ptr [rax+254h], xmm0 +18000C018: movaps xmm6, [rsp+38h+var_18] +18000C01D: add rsp, 38h +18000C021: jmp cs:MAG_SetFixPara + +### FUNC 18000C030 - 18000C05F (47 bytes) name=Trigger +18000C030: push rbx +18000C032: sub rsp, 20h +18000C036: call sub_18000B530 +18000C03B: mov rbx, rax +18000C03E: cmp dword ptr [rax+8], 0 +18000C042: jz short loc_18000C04D +18000C044: mov ecx, [rax+18h] +18000C047: call cs:MAG_TriggerFFC +18000C04D: call cs:GetTickCount +18000C053: mov [rbx+244h], eax +18000C059: add rsp, 20h +18000C05D: pop rbx +18000C05E: retn + +### FUNC 18000C060 - 18000C160 (256 bytes) name=GetTCMVersion +18000C060: mov [rsp+arg_10], rbx +18000C065: mov [rsp+arg_18], rsi +18000C06A: push rdi +18000C06B: sub rsp, 60h +18000C06F: mov rax, cs:__security_cookie +18000C076: xor rax, rsp +18000C079: mov [rsp+68h+var_18], rax +18000C07E: mov rsi, rcx +18000C081: call sub_18000B530 +18000C086: mov rcx, [rax+230h] +18000C08D: mov rbx, [rcx+60h] +18000C091: mov rdi, [rcx+68h] +18000C095: cmp rbx, rdi +18000C098: jz loc_18000C141 +18000C09E: mov [rsp+68h+arg_8], rbp +18000C0A3: xor ebp, ebp +18000C0A5: mov rcx, [rbx] +18000C0A8: lea r9, off_1800158D0 +18000C0AF: lea r8, off_180015718 +18000C0B6: mov [rsp+68h+var_48], ebp +18000C0BA: xor edx, edx +18000C0BC: call __RTDynamicCast +18000C0C1: test rax, rax +18000C0C4: jnz short loc_18000C0D1 +18000C0C6: add rbx, 8 +18000C0CA: cmp rbx, rdi +18000C0CD: jnz short loc_18000C0A5 +18000C0CF: jmp short loc_18000C13C +18000C0D1: lea rdx, [rsp+68h+Src] +18000C0D6: mov rcx, rax +18000C0D9: call sub_180009000 +18000C0DE: mov rdi, [rsp+68h+var_20] +18000C0E3: lea rdx, [rsp+68h+Src] +18000C0E8: mov rbx, [rsp+68h+Src] +18000C0ED: cmp rdi, 10h +18000C0F1: movsxd r8, [rsp+68h+var_28]; Size +18000C0F6: mov rcx, rsi; void * +18000C0F9: cmovnb rdx, rbx; Src +18000C0FD: call memcpy +18000C102: cmp rdi, 10h +18000C106: jb short loc_18000C13C +18000C108: lea rdx, [rdi+1] +18000C10C: mov rax, rbx +18000C10F: cmp rdx, 1000h +18000C116: jb short loc_18000C134 +18000C118: mov rbx, [rbx-8] +18000C11C: add rdx, 27h ; ''' +18000C120: sub rax, rbx +18000C123: add rax, 0FFFFFFFFFFFFFFF8h +18000C127: cmp rax, 1Fh +18000C12B: jbe short loc_18000C134 +18000C12D: call cs:_invalid_parameter_noinfo_noreturn +18000C133: int 3; Trap to Debugger +18000C134: mov rcx, rbx; Block +18000C137: call j_j_free +18000C13C: mov rbp, [rsp+68h+arg_8] +18000C141: mov rcx, [rsp+68h+var_18] +18000C146: xor rcx, rsp; StackCookie +18000C149: call __security_check_cookie +18000C14E: lea r11, [rsp+68h+var_8] +18000C153: mov rbx, [r11+20h] +18000C157: mov rsi, [r11+28h] +18000C15B: mov rsp, r11 +18000C15E: pop rdi +18000C15F: retn + +### FUNC 18000C160 - 18000C2F7 (407 bytes) name=SetFirmwareData +18000C160: push rbx +18000C162: push rbp +18000C163: push rsi +18000C164: push r15 +18000C166: sub rsp, 58h +18000C16A: mov rax, cs:__security_cookie +18000C171: xor rax, rsp +18000C174: mov [rsp+78h+var_30], rax +18000C179: movsxd rbp, edx +18000C17C: mov r15, rcx +18000C17F: call sub_18000B530 +18000C184: mov rcx, [rax+230h] +18000C18B: mov rbx, [rcx+60h] +18000C18F: mov rsi, [rcx+68h] +18000C193: cmp rbx, rsi +18000C196: jz loc_18000C2DA +18000C19C: mov [rsp+78h+arg_10], rdi +18000C1A4: xor edi, edi +18000C1A6: mov [rsp+78h+var_28], r14 +18000C1AB: nop dword ptr [rax+rax+00h] +18000C1B0: mov rcx, [rbx] +18000C1B3: lea r9, off_1800158D0 +18000C1BA: lea r8, off_180015718 +18000C1C1: mov [rsp+78h+var_58], edi +18000C1C5: xor edx, edx +18000C1C7: call __RTDynamicCast +18000C1CC: mov r14, rax +18000C1CF: test rax, rax +18000C1D2: jnz short loc_18000C1E2 +18000C1D4: add rbx, 8 +18000C1D8: cmp rbx, rsi +18000C1DB: jnz short loc_18000C1B0 +18000C1DD: jmp loc_18000C2CD +18000C1E2: mov [rsp+78h+var_38], rdi +18000C1E7: xorps xmm0, xmm0 +18000C1EA: movdqu xmmword ptr [rsp+78h+Src], xmm0 +18000C1F0: test ebp, ebp +18000C1F2: jz short loc_18000C219 +18000C1F4: mov rax, 7FFFFFFFFFFFFFFFh +18000C1FE: cmp rbp, rax +18000C201: ja loc_18000C2F1 +18000C207: mov rdx, rbp +18000C20A: lea rcx, [rsp+78h+Src] +18000C20F: call sub_18000C470 +18000C214: mov rdi, [rsp+78h+var_38] +18000C219: mov rbx, [rsp+78h+Src] +18000C21E: mov rax, rdi +18000C221: sub rax, rbx +18000C224: cmp rbp, rax +18000C227: jbe short loc_18000C240 +18000C229: mov rdx, rbp +18000C22C: lea rcx, [rsp+78h+Src] +18000C231: call sub_180002BA0 +18000C236: mov rdi, [rsp+78h+var_38] +18000C23B: mov rbx, [rsp+78h+Src] +18000C240: mov r8, rbp; Size +18000C243: mov rdx, r15; Src +18000C246: mov rcx, rbx; void * +18000C249: call memmove +18000C24E: lea rax, [rsp+78h+Src] +18000C253: add r14, 100h +18000C25A: cmp r14, rax +18000C25D: jz short loc_18000C292 +18000C25F: mov r15, [r14] +18000C262: mov rax, [r14+10h] +18000C266: sub rax, r15 +18000C269: cmp rbp, rax +18000C26C: jbe short loc_18000C27C +18000C26E: mov rdx, rbp +18000C271: mov rcx, r14 +18000C274: call sub_180002BA0 +18000C279: mov r15, [r14] +18000C27C: mov r8, rbp; Size +18000C27F: mov rdx, rbx; Src +18000C282: mov rcx, r15; void * +18000C285: call memmove +18000C28A: lea rax, [r15+rbp] +18000C28E: mov [r14+8], rax +18000C292: test rbx, rbx +18000C295: jz short loc_18000C2CD +18000C297: sub rdi, rbx +18000C29A: mov rax, rbx +18000C29D: cmp rdi, 1000h +18000C2A4: jb short loc_18000C2C2 +18000C2A6: mov rbx, [rbx-8] +18000C2AA: add rdi, 27h ; ''' +18000C2AE: sub rax, rbx +18000C2B1: add rax, 0FFFFFFFFFFFFFFF8h +18000C2B5: cmp rax, 1Fh +18000C2B9: jbe short loc_18000C2C2 +18000C2BB: call cs:_invalid_parameter_noinfo_noreturn +18000C2C1: int 3; Trap to Debugger +18000C2C2: mov rdx, rdi +18000C2C5: mov rcx, rbx; Block +18000C2C8: call j_j_free +18000C2CD: mov rdi, [rsp+78h+arg_10] +18000C2D5: mov r14, [rsp+78h+var_28] +18000C2DA: mov rcx, [rsp+78h+var_30] +18000C2DF: xor rcx, rsp; StackCookie +18000C2E2: call __security_check_cookie +18000C2E7: add rsp, 58h +18000C2EB: pop r15 +18000C2ED: pop rsi +18000C2EE: pop rbp +18000C2EF: pop rbx +18000C2F0: retn +18000C2F1: call sub_180002B80 +18000C2F6: db 0CCh + +### FUNC 18000C300 - 18000C37A (122 bytes) name=SetUpdateCallback +18000C300: mov [rsp+arg_8], rbx +18000C305: mov [rsp+arg_10], rsi +18000C30A: push rdi +18000C30B: sub rsp, 30h +18000C30F: mov rsi, rcx +18000C312: call sub_18000B530 +18000C317: mov rdx, [rax+230h] +18000C31E: mov rbx, [rdx+60h] +18000C322: mov rdi, [rdx+68h] +18000C326: cmp rbx, rdi +18000C329: jz short loc_18000C36A +18000C32B: mov [rsp+38h+arg_0], rbp +18000C330: xor ebp, ebp +18000C332: mov rcx, [rbx] +18000C335: lea r9, off_1800158D0 +18000C33C: lea r8, off_180015718 +18000C343: mov [rsp+38h+var_18], ebp +18000C347: xor edx, edx +18000C349: call __RTDynamicCast +18000C34E: test rax, rax +18000C351: jnz short loc_18000C35E +18000C353: add rbx, 8 +18000C357: cmp rbx, rdi +18000C35A: jnz short loc_18000C332 +18000C35C: jmp short loc_18000C365 +18000C35E: mov [rax+0D8h], rsi +18000C365: mov rbp, [rsp+38h+arg_0] +18000C36A: mov rbx, [rsp+38h+arg_8] +18000C36F: mov rsi, [rsp+38h+arg_10] +18000C374: add rsp, 30h +18000C378: pop rdi +18000C379: retn + +### FUNC 18000C380 - 18000C463 (227 bytes) name=StartUpdate +18000C380: mov [rsp+arg_10], rbx +18000C385: push rsi +18000C386: sub rsp, 40h +18000C38A: call sub_18000B530 +18000C38F: mov rcx, [rax+230h] +18000C396: mov rbx, [rcx+60h] +18000C39A: mov rsi, [rcx+68h] +18000C39E: cmp rbx, rsi +18000C3A1: jz short loc_18000C3E7 +18000C3A3: mov [rsp+48h+arg_0], rbp +18000C3A8: xor ebp, ebp +18000C3AA: mov [rsp+48h+arg_8], rdi +18000C3AF: nop +18000C3B0: mov rcx, [rbx] +18000C3B3: lea r9, off_1800158D0 +18000C3BA: lea r8, off_180015718 +18000C3C1: mov [rsp+48h+InitFlag], ebp +18000C3C5: xor edx, edx +18000C3C7: call __RTDynamicCast +18000C3CC: mov rdi, rax +18000C3CF: test rax, rax +18000C3D2: jnz short loc_18000C3F2 +18000C3D4: add rbx, 8 +18000C3D8: cmp rbx, rsi +18000C3DB: jnz short loc_18000C3B0 +18000C3DD: mov rbp, [rsp+48h+arg_0] +18000C3E2: mov rdi, [rsp+48h+arg_8] +18000C3E7: mov rbx, [rsp+48h+arg_10] +18000C3EC: add rsp, 40h +18000C3F0: pop rsi +18000C3F1: retn +18000C3F2: mov ecx, 10h; Size +18000C3F7: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000C3FC: lea rcx, sub_1800091E0 +18000C403: mov r9, rax; ArgList +18000C406: lea r8, StartAddress; StartAddress +18000C40D: xor edx, edx; StackSize +18000C40F: mov [rax+8], rcx +18000C413: lea rcx, [rsp+48h+var_18+8] +18000C418: mov [rsp+48h+ThrdAddr], rcx; ThrdAddr +18000C41D: xor ecx, ecx; Security +18000C41F: mov [rax], rdi +18000C422: mov [rsp+48h+InitFlag], ebp; InitFlag +18000C426: call cs:_beginthreadex +18000C42C: mov qword ptr [rsp+48h+var_18], rax +18000C431: test rax, rax +18000C434: jz short loc_18000C453 +18000C436: cmp [rdi+120h], ebp +18000C43C: jnz short loc_18000C44C +18000C43E: movaps xmm0, xmmword ptr [rsp+48h+var_18] +18000C443: movups xmmword ptr [rdi+118h], xmm0 +18000C44A: jmp short loc_18000C3DD +18000C44C: call cs:terminate +18000C452: int 3; Trap to Debugger +18000C453: mov ecx, 6 +18000C458: mov [rsp+48h+var_18+8], ebp +18000C45C: call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) +18000C462: db 0CCh + +### FUNC 18000C470 - 18000C513 (163 bytes) name=sub_18000C470 +18000C470: mov [rsp+arg_0], rbx +18000C475: mov [rsp+arg_8], rbp +18000C47A: mov [rsp+arg_10], rsi +18000C47F: push rdi +18000C480: sub rsp, 20h +18000C484: mov rbp, [rcx+8] +18000C488: mov rdi, rdx +18000C48B: sub rbp, [rcx] +18000C48E: mov rsi, rcx +18000C491: cmp rdx, 1000h +18000C498: jb short loc_18000C4C2 +18000C49A: lea rcx, [rdx+27h]; Size +18000C49E: cmp rcx, rdx +18000C4A1: jbe short loc_18000C50D +18000C4A3: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000C4A8: test rax, rax +18000C4AB: jz short loc_18000C4BB +18000C4AD: lea rbx, [rax+27h] +18000C4B1: and rbx, 0FFFFFFFFFFFFFFE0h +18000C4B5: mov [rbx-8], rax +18000C4B9: jmp short loc_18000C4D6 +18000C4BB: call cs:_invalid_parameter_noinfo_noreturn +18000C4C1: int 3; Trap to Debugger +18000C4C2: test rdi, rdi +18000C4C5: jz short loc_18000C4D4 +18000C4C7: mov rcx, rdi; Size +18000C4CA: call ??2@YAPEAX_K@Z; operator new(unsigned __int64) +18000C4CF: mov rbx, rax +18000C4D2: jmp short loc_18000C4D6 +18000C4D4: xor ebx, ebx +18000C4D6: mov rdx, [rsi]; Src +18000C4D9: mov rcx, rbx; void * +18000C4DC: mov r8, [rsi+8] +18000C4E0: sub r8, rdx; Size +18000C4E3: call memmove +18000C4E8: mov r9, rdi +18000C4EB: mov r8, rbp +18000C4EE: mov rdx, rbx +18000C4F1: mov rcx, rsi +18000C4F4: mov rbx, [rsp+28h+arg_0] +18000C4F9: mov rbp, [rsp+28h+arg_8] +18000C4FE: mov rsi, [rsp+28h+arg_10] +18000C503: add rsp, 20h +18000C507: pop rdi +18000C508: jmp sub_180007280 +18000C50D: call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) +18000C512: db 0CCh + +### FUNC 18000C530 - 18000C551 (33 bytes) name=__security_check_cookie +18000C530: cmp rcx, cs:__security_cookie +18000C537: bnd jnz short ReportFailure +18000C53A: rol rcx, 10h +18000C53E: test cx, 0FFFFh +18000C543: bnd jnz short RestoreRcx +18000C546: bnd retn +18000C548: ror rcx, 10h; StackCookie +18000C54C: jmp __report_gsfailure + +### FUNC 18000C554 - 18000C590 (60 bytes) name=??2@YAPEAX_K@Z +18000C554: push rbx +18000C556: sub rsp, 20h +18000C55A: mov rbx, rcx +18000C55D: jmp short loc_18000C56E +18000C55F: mov rcx, rbx; Size +18000C562: call _callnewh +18000C567: test eax, eax +18000C569: jz short loc_18000C57E +18000C56B: mov rcx, rbx; Size +18000C56E: call malloc +18000C573: test rax, rax +18000C576: jz short loc_18000C55F +18000C578: add rsp, 20h +18000C57C: pop rbx +18000C57D: retn +18000C57E: cmp rbx, 0FFFFFFFFFFFFFFFFh +18000C582: jz short loc_18000C58A +18000C584: call ?cancel_current_task@Concurrency@@YAXXZ_0 +18000C589: align 2 +18000C58A: call ?cancel_current_task@Concurrency@@YAXXZ +18000C58F: align 10h + +### FUNC 18000C590 - 18000C5C9 (57 bytes) name=__scrt_acquire_startup_lock +18000C590: sub rsp, 28h +18000C594: call ?__uncaught_exception@@YA_NXZ +18000C599: test eax, eax +18000C59B: jz short loc_18000C5BE +18000C59D: mov rax, gs:30h +18000C5A6: mov rcx, [rax+8] +18000C5AA: jmp short loc_18000C5B1 +18000C5AC: cmp rcx, rax +18000C5AF: jz short loc_18000C5C5 +18000C5B1: xor eax, eax +18000C5B3: lock cmpxchg cs:qword_1800159A8, rcx +18000C5BC: jnz short loc_18000C5AC +18000C5BE: xor al, al +18000C5C0: add rsp, 28h +18000C5C4: retn +18000C5C5: mov al, 1 +18000C5C7: jmp short loc_18000C5C0 + +### FUNC 18000C5CC - 18000C600 (52 bytes) name=__scrt_dllmain_after_initialize_c +18000C5CC: sub rsp, 28h +18000C5D0: call ?__uncaught_exception@@YA_NXZ +18000C5D5: test eax, eax +18000C5D7: jz short loc_18000C5E0 +18000C5D9: call __isa_available_init +18000C5DE: jmp short loc_18000C5F9 +18000C5E0: call DllMain +18000C5E5: mov ecx, eax; mode +18000C5E7: call _configure_narrow_argv +18000C5EC: test eax, eax +18000C5EE: jz short loc_18000C5F4 +18000C5F0: xor al, al +18000C5F2: jmp short loc_18000C5FB +18000C5F4: call _initialize_narrow_environment +18000C5F9: mov al, 1 +18000C5FB: add rsp, 28h +18000C5FF: retn + +### FUNC 18000C600 - 18000C615 (21 bytes) name=__scrt_dllmain_before_initialize_c +18000C600: sub rsp, 28h +18000C604: xor ecx, ecx +18000C606: call __scrt_initialize_onexit_tables +18000C60B: test al, al +18000C60D: setnz al +18000C610: add rsp, 28h +18000C614: retn + +### FUNC 18000C618 - 18000C640 (40 bytes) name=sub_18000C618 +18000C618: sub rsp, 28h +18000C61C: call sub_18000D750 +18000C621: test al, al +18000C623: jnz short loc_18000C629 +18000C625: xor al, al +18000C627: jmp short loc_18000C63B +18000C629: call sub_18000D750 +18000C62E: test al, al +18000C630: jnz short loc_18000C639 +18000C632: call sub_18000D750 +18000C637: jmp short loc_18000C625 +18000C639: mov al, 1 +18000C63B: add rsp, 28h +18000C63F: retn + +### FUNC 18000C640 - 18000C655 (21 bytes) name=__scrt_dllmain_crt_thread_detach +18000C640: sub rsp, 28h +18000C644: call sub_18000D750 +18000C649: call sub_18000D750 +18000C64E: mov al, 1 +18000C650: add rsp, 28h +18000C654: retn + +### FUNC 18000C658 - 18000C6B8 (96 bytes) name=__scrt_dllmain_exception_filter +18000C658: mov [rsp+arg_0], rbx +18000C65D: mov [rsp+arg_8], rbp +18000C662: mov [rsp+arg_10], rsi +18000C667: push rdi +18000C668: sub rsp, 20h +18000C66C: mov rdi, r9 +18000C66F: mov rsi, r8 +18000C672: mov ebx, edx +18000C674: mov rbp, rcx +18000C677: call ?__uncaught_exception@@YA_NXZ +18000C67C: test eax, eax +18000C67E: jnz short loc_18000C696 +18000C680: cmp ebx, 1 +18000C683: jnz short loc_18000C696 +18000C685: mov r8, rsi +18000C688: xor edx, edx +18000C68A: mov rcx, rbp +18000C68D: mov rax, rdi +18000C690: call cs:__guard_dispatch_icall_fptr +18000C696: mov rdx, [rsp+28h+ExceptionPtr]; ExceptionPtr +18000C69B: mov ecx, [rsp+28h+ExceptionNum]; ExceptionNum +18000C69F: mov rbx, [rsp+28h+arg_0] +18000C6A4: mov rbp, [rsp+28h+arg_8] +18000C6A9: mov rsi, [rsp+28h+arg_10] +18000C6AE: add rsp, 20h +18000C6B2: pop rdi +18000C6B3: jmp _seh_filter_dll + +### FUNC 18000C6B8 - 18000C6E8 (48 bytes) name=__scrt_dllmain_uninitialize_c +18000C6B8: sub rsp, 28h +18000C6BC: call ?__uncaught_exception@@YA_NXZ +18000C6C1: test eax, eax +18000C6C3: jz short loc_18000C6D5 +18000C6C5: lea rcx, Table; Table +18000C6CC: add rsp, 28h +18000C6D0: jmp _execute_onexit_table +18000C6D5: call sub_18000D754 +18000C6DA: test eax, eax +18000C6DC: jnz short loc_18000C6E3 +18000C6DE: call _cexit +18000C6E3: add rsp, 28h +18000C6E7: retn + +### FUNC 18000C6E8 - 18000C6FC (20 bytes) name=__scrt_dllmain_uninitialize_critical +18000C6E8: sub rsp, 28h +18000C6EC: xor ecx, ecx +18000C6EE: call sub_18000D750 +18000C6F3: add rsp, 28h +18000C6F7: jmp sub_18000D750 + +### FUNC 18000C6FC - 18000C745 (73 bytes) name=__scrt_initialize_crt +18000C6FC: push rbx +18000C6FE: sub rsp, 20h +18000C702: movzx eax, cs:byte_1800159B0 +18000C709: test ecx, ecx +18000C70B: mov ebx, 1 +18000C710: cmovz eax, ebx +18000C713: mov cs:byte_1800159B0, al +18000C719: call __isa_available_init +18000C71E: call sub_18000D750 +18000C723: test al, al +18000C725: jnz short loc_18000C72B +18000C727: xor al, al +18000C729: jmp short loc_18000C73F +18000C72B: call sub_18000D750 +18000C730: test al, al +18000C732: jnz short loc_18000C73D +18000C734: xor ecx, ecx +18000C736: call sub_18000D750 +18000C73B: jmp short loc_18000C727 +18000C73D: mov al, bl +18000C73F: add rsp, 20h +18000C743: pop rbx +18000C744: retn + +### FUNC 18000C748 - 18000C7D3 (139 bytes) name=__scrt_initialize_onexit_tables +18000C748: push rbx +18000C74A: sub rsp, 20h +18000C74E: cmp cs:byte_1800159B1, 0 +18000C755: mov ebx, ecx +18000C757: jnz short loc_18000C7C0 +18000C759: cmp ecx, 1 +18000C75C: ja short loc_18000C7C8 +18000C75E: call ?__uncaught_exception@@YA_NXZ +18000C763: test eax, eax +18000C765: jz short loc_18000C78F +18000C767: test ebx, ebx +18000C769: jnz short loc_18000C78F +18000C76B: lea rcx, Table; Table +18000C772: call _initialize_onexit_table +18000C777: test eax, eax +18000C779: jnz short loc_18000C78B +18000C77B: lea rcx, stru_1800159D0; Table +18000C782: call _initialize_onexit_table +18000C787: test eax, eax +18000C789: jz short loc_18000C7B9 +18000C78B: xor al, al +18000C78D: jmp short loc_18000C7C2 +18000C78F: movdqa xmm0, cs:xmmword_18000F5F0 +18000C797: or rax, 0FFFFFFFFFFFFFFFFh +18000C79B: movdqu xmmword ptr cs:Table._first, xmm0 +18000C7A3: mov cs:Table._end, rax +18000C7AA: movdqu xmmword ptr cs:stru_1800159D0._first, xmm0 +18000C7B2: mov cs:stru_1800159D0._end, rax +18000C7B9: mov cs:byte_1800159B1, 1 +18000C7C0: mov al, 1 +18000C7C2: add rsp, 20h +18000C7C6: pop rbx +18000C7C7: retn +18000C7C8: mov ecx, 5 +18000C7CD: call __scrt_fastfail +18000C7D2: db 0CCh + +### FUNC 18000C7D4 - 18000C86C (152 bytes) name=__scrt_is_nonwritable_in_current_image +18000C7D4: sub rsp, 18h +18000C7D8: mov r8, rcx +18000C7DB: mov eax, 5A4Dh +18000C7E0: cmp cs:180000000h, ax +18000C7E7: jnz short loc_18000C861 +18000C7E9: movsxd rcx, dword ptr cs:18000003Ch +18000C7F0: lea rdx, cs:180000000h +18000C7F7: add rcx, rdx +18000C7FA: cmp dword ptr [rcx], 4550h +18000C800: jnz short loc_18000C861 +18000C802: mov eax, 20Bh +18000C807: cmp [rcx+18h], ax +18000C80B: jnz short loc_18000C861 +18000C80D: sub r8, rdx +18000C810: movzx eax, word ptr [rcx+14h] +18000C814: lea rdx, [rcx+18h] +18000C818: add rdx, rax +18000C81B: movzx eax, word ptr [rcx+6] +18000C81F: lea rcx, [rax+rax*4] +18000C823: lea r9, [rdx+rcx*8] +18000C827: mov [rsp+18h+var_18], rdx +18000C82B: cmp rdx, r9 +18000C82E: jz short loc_18000C848 +18000C830: mov ecx, [rdx+0Ch] +18000C833: cmp r8, rcx +18000C836: jb short loc_18000C842 +18000C838: mov eax, [rdx+8] +18000C83B: add eax, ecx +18000C83D: cmp r8, rax +18000C840: jb short loc_18000C84A +18000C842: add rdx, 28h ; '(' +18000C846: jmp short loc_18000C827 +18000C848: xor edx, edx +18000C84A: test rdx, rdx +18000C84D: jnz short loc_18000C853 +18000C84F: xor al, al +18000C851: jmp short loc_18000C867 +18000C853: cmp dword ptr [rdx+24h], 0 +18000C857: jge short loc_18000C85D +18000C859: xor al, al +18000C85B: jmp short loc_18000C867 +18000C85D: mov al, 1 +18000C85F: jmp short loc_18000C867 +18000C861: xor al, al +18000C863: jmp short loc_18000C867 +18000C865: xor al, al +18000C867: add rsp, 18h +18000C86B: retn + +### FUNC 18000C86C - 18000C890 (36 bytes) name=__scrt_release_startup_lock +18000C86C: push rbx +18000C86E: sub rsp, 20h +18000C872: mov bl, cl +18000C874: call ?__uncaught_exception@@YA_NXZ +18000C879: xor edx, edx +18000C87B: test eax, eax +18000C87D: jz short loc_18000C88A +18000C87F: test bl, bl +18000C881: jnz short loc_18000C88A +18000C883: xchg rdx, cs:qword_1800159A8 +18000C88A: add rsp, 20h +18000C88E: pop rbx +18000C88F: retn + +### FUNC 18000C890 - 18000C8B9 (41 bytes) name=__scrt_uninitialize_crt +18000C890: push rbx +18000C892: sub rsp, 20h +18000C896: cmp cs:byte_1800159B0, 0 +18000C89D: mov bl, cl +18000C89F: jz short loc_18000C8A5 +18000C8A1: test dl, dl +18000C8A3: jnz short loc_18000C8B1 +18000C8A5: call sub_18000D750 +18000C8AA: mov cl, bl +18000C8AC: call sub_18000D750 +18000C8B1: mov al, 1 +18000C8B3: add rsp, 20h +18000C8B7: pop rbx +18000C8B8: retn + +### FUNC 18000C8BC - 18000C8F6 (58 bytes) name=_onexit +18000C8BC: push rbx +18000C8BE: sub rsp, 20h +18000C8C2: cmp cs:Table._first, 0FFFFFFFFFFFFFFFFh +18000C8CA: mov rbx, rcx +18000C8CD: jnz short loc_18000C8D6 +18000C8CF: call _crt_atexit +18000C8D4: jmp short loc_18000C8E5 +18000C8D6: mov rdx, rbx; Function +18000C8D9: lea rcx, Table; Table +18000C8E0: call _register_onexit_function +18000C8E5: xor edx, edx +18000C8E7: test eax, eax +18000C8E9: cmovz rdx, rbx +18000C8ED: mov rax, rdx +18000C8F0: add rsp, 20h +18000C8F4: pop rbx +18000C8F5: retn + +### FUNC 18000C8F8 - 18000C90F (23 bytes) name=atexit +18000C8F8: sub rsp, 28h +18000C8FC: call _onexit +18000C901: neg rax +18000C904: sbb eax, eax +18000C906: neg eax +18000C908: dec eax +18000C90A: add rsp, 28h +18000C90E: retn + +### FUNC 18000C910 - 18000C915 (5 bytes) name=j_j_free +18000C910: jmp j_free + +### FUNC 18000C918 - 18000C943 (43 bytes) name=sub_18000C918 +18000C918: push rbx +18000C91A: sub rsp, 20h +18000C91E: lea rax, off_18000F608 +18000C925: mov rbx, rcx +18000C928: mov [rcx], rax +18000C92B: test dl, 1 +18000C92E: jz short loc_18000C93A +18000C930: mov edx, 18h +18000C935: call j_j_free +18000C93A: mov rax, rbx +18000C93D: add rsp, 20h +18000C941: pop rbx +18000C942: retn + +### FUNC 18000C944 - 18000C978 (52 bytes) name=__raise_securityfailure +18000C944: push rbx +18000C946: sub rsp, 20h +18000C94A: mov rbx, rcx +18000C94D: xor ecx, ecx; lpTopLevelExceptionFilter +18000C94F: call cs:SetUnhandledExceptionFilter +18000C955: mov rcx, rbx; ExceptionInfo +18000C958: call cs:UnhandledExceptionFilter +18000C95E: call cs:GetCurrentProcess +18000C964: mov rcx, rax +18000C967: mov edx, 0C0000409h +18000C96C: add rsp, 20h +18000C970: pop rbx +18000C971: jmp cs:TerminateProcess + +### FUNC 18000C978 - 18000CA49 (209 bytes) name=__report_gsfailure +18000C978: mov [rsp+arg_0], rcx +18000C97D: sub rsp, 38h +18000C981: mov ecx, 17h; ProcessorFeature +18000C986: call IsProcessorFeaturePresent +18000C98B: test eax, eax +18000C98D: jz short loc_18000C996 +18000C98F: mov ecx, 2 +18000C994: int 29h; Win8: RtlFailFast(ecx) +18000C996: lea rcx, ContextRecord; ContextRecord +18000C99D: call capture_previous_context +18000C9A2: mov rax, [rsp+38h] +18000C9A7: mov cs:ContextRecord.Rip, rax +18000C9AE: lea rax, [rsp+38h] +18000C9B3: add rax, 8 +18000C9B7: mov cs:ContextRecord.Rsp, rax +18000C9BE: mov rax, cs:ContextRecord.Rip +18000C9C5: mov cs:qword_180015A00, rax +18000C9CC: mov rax, [rsp+38h+arg_0] +18000C9D1: mov cs:ContextRecord.Rcx, rax +18000C9D8: mov cs:dword_1800159F0, 0C0000409h +18000C9E2: mov cs:dword_1800159F4, 1 +18000C9EC: mov cs:dword_180015A08, 1 +18000C9F6: mov eax, 8 +18000C9FB: imul rax, 0 +18000C9FF: lea rcx, unk_180015A10 +18000CA06: mov qword ptr [rcx+rax], 2 +18000CA0E: mov eax, 8 +18000CA13: imul rax, 0 +18000CA17: mov rcx, cs:__security_cookie +18000CA1E: mov [rsp+rax+38h+var_18], rcx +18000CA23: mov eax, 8 +18000CA28: imul rax, 1 +18000CA2C: mov rcx, cs:qword_180015008 +18000CA33: mov [rsp+rax+38h+var_18], rcx +18000CA38: lea rcx, ExceptionInfo; ExceptionInfo +18000CA3F: call __raise_securityfailure +18000CA44: add rsp, 38h +18000CA48: retn + +### FUNC 18000CA4C - 18000CA5F (19 bytes) name=__report_rangecheckfailure +18000CA4C: sub rsp, 28h +18000CA50: mov ecx, 8 +18000CA55: call __report_securityfailure +18000CA5A: add rsp, 28h +18000CA5E: retn + +### FUNC 18000CA60 - 18000CAFB (155 bytes) name=__report_securityfailure +18000CA60: mov [rsp+arg_0], ecx +18000CA64: sub rsp, 28h +18000CA68: mov ecx, 17h; ProcessorFeature +18000CA6D: call IsProcessorFeaturePresent +18000CA72: test eax, eax +18000CA74: jz short loc_18000CA7E +18000CA76: mov eax, [rsp+28h+arg_0] +18000CA7A: mov ecx, eax +18000CA7C: int 29h; Win8: RtlFailFast(ecx) +18000CA7E: lea rcx, ContextRecord; ContextRecord +18000CA85: call capture_current_context +18000CA8A: mov rax, [rsp+28h] +18000CA8F: mov cs:ContextRecord.Rip, rax +18000CA96: lea rax, [rsp+28h] +18000CA9B: add rax, 8 +18000CA9F: mov cs:ContextRecord.Rsp, rax +18000CAA6: mov rax, cs:ContextRecord.Rip +18000CAAD: mov cs:qword_180015A00, rax +18000CAB4: mov cs:dword_1800159F0, 0C0000409h +18000CABE: mov cs:dword_1800159F4, 1 +18000CAC8: mov cs:dword_180015A08, 1 +18000CAD2: mov eax, 8 +18000CAD7: imul rax, 0 +18000CADB: lea rcx, unk_180015A10 +18000CAE2: mov edx, [rsp+28h+arg_0] +18000CAE6: mov [rcx+rax], rdx +18000CAEA: lea rcx, ExceptionInfo; ExceptionInfo +18000CAF1: call __raise_securityfailure +18000CAF6: add rsp, 28h +18000CAFA: retn + +### FUNC 18000CAFC - 18000CB69 (109 bytes) name=capture_current_context +18000CAFC: mov [rsp+arg_18], rbx +18000CB01: push rdi +18000CB02: sub rsp, 40h +18000CB06: mov rbx, rcx +18000CB09: call cs:RtlCaptureContext +18000CB0F: mov rdi, [rbx+0F8h] +18000CB16: lea rdx, [rsp+48h+ImageBase]; ImageBase +18000CB1B: mov rcx, rdi; ControlPc +18000CB1E: xor r8d, r8d; HistoryTable +18000CB21: call cs:RtlLookupFunctionEntry +18000CB27: test rax, rax +18000CB2A: jz short loc_18000CB5E +18000CB2C: and [rsp+48h+var_10], 0 +18000CB32: lea rcx, [rsp+48h+arg_8] +18000CB37: mov rdx, [rsp+48h+ImageBase]; ImageBase +18000CB3C: mov r9, rax; FunctionEntry +18000CB3F: mov [rsp+48h+EstablisherFrame], rcx; EstablisherFrame +18000CB44: mov r8, rdi; ControlPc +18000CB47: lea rcx, [rsp+48h+arg_10] +18000CB4C: mov [rsp+48h+HandlerData], rcx; HandlerData +18000CB51: xor ecx, ecx; HandlerType +18000CB53: mov [rsp+48h+ContextRecord], rbx; ContextRecord +18000CB58: call cs:RtlVirtualUnwind +18000CB5E: mov rbx, [rsp+48h+arg_18] +18000CB63: add rsp, 40h +18000CB67: pop rdi +18000CB68: retn + +### FUNC 18000CB6C - 18000CBDD (113 bytes) name=capture_previous_context +18000CB6C: push rbx +18000CB6E: push rsi +18000CB6F: push rdi +18000CB70: sub rsp, 40h +18000CB74: mov rbx, rcx +18000CB77: call cs:RtlCaptureContext +18000CB7D: mov rsi, [rbx+0F8h] +18000CB84: xor edi, edi +18000CB86: xor r8d, r8d; HistoryTable +18000CB89: lea rdx, [rsp+58h+ImageBase]; ImageBase +18000CB8E: mov rcx, rsi; ControlPc +18000CB91: call cs:RtlLookupFunctionEntry +18000CB97: test rax, rax +18000CB9A: jz short loc_18000CBD5 +18000CB9C: and [rsp+58h+var_20], 0 +18000CBA2: lea rcx, [rsp+58h+arg_8] +18000CBA7: mov rdx, [rsp+58h+ImageBase]; ImageBase +18000CBAC: mov r9, rax; FunctionEntry +18000CBAF: mov [rsp+58h+EstablisherFrame], rcx; EstablisherFrame +18000CBB4: mov r8, rsi; ControlPc +18000CBB7: lea rcx, [rsp+58h+arg_10] +18000CBBC: mov [rsp+58h+HandlerData], rcx; HandlerData +18000CBC1: xor ecx, ecx; HandlerType +18000CBC3: mov [rsp+58h+ContextRecord], rbx; ContextRecord +18000CBC8: call cs:RtlVirtualUnwind +18000CBCE: inc edi +18000CBD0: cmp edi, 2 +18000CBD3: jl short loc_18000CB86 +18000CBD5: add rsp, 40h +18000CBD9: pop rdi +18000CBDA: pop rsi +18000CBDB: pop rbx +18000CBDC: retn + +### FUNC 18000CBE0 - 18000CCB0 (208 bytes) name=?__scrt_initialize_thread_safe_statics@@YAHXZ +18000CBE0: mov [rsp+arg_0], rbx +18000CBE5: push rdi +18000CBE6: sub rsp, 20h +18000CBEA: mov edx, 0FA0h; dwSpinCount +18000CBEF: lea rcx, CriticalSection; lpCriticalSection +18000CBF6: call cs:InitializeCriticalSectionAndSpinCount +18000CBFC: lea rcx, ModuleName +18000CC03: call cs:GetModuleHandleW +18000CC09: mov rbx, rax +18000CC0C: test rax, rax +18000CC0F: jnz short loc_18000CC26 +18000CC11: lea rcx, aKernel32Dll_0 +18000CC18: call cs:GetModuleHandleW +18000CC1E: mov rbx, rax +18000CC21: test rax, rax +18000CC24: jz short loc_18000CCA5 +18000CC26: lea rdx, ProcName +18000CC2D: mov rcx, rbx; hModule +18000CC30: call cs:GetProcAddress +18000CC36: lea rdx, aWakeallconditi +18000CC3D: mov rcx, rbx; hModule +18000CC40: mov rdi, rax +18000CC43: call cs:GetProcAddress +18000CC49: test rdi, rdi +18000CC4C: jz short loc_18000CC63 +18000CC4E: test rax, rax +18000CC51: jz short loc_18000CC63 +18000CC53: mov cs:qword_180015F98, rdi +18000CC5A: mov cs:qword_180015FA0, rax +18000CC61: jmp short loc_18000CC81 +18000CC63: xor r9d, r9d; lpName +18000CC66: xor r8d, r8d; bInitialState +18000CC69: xor ecx, ecx; lpEventAttributes +18000CC6B: lea edx, [r9+1]; bManualReset +18000CC6F: call cs:CreateEventW +18000CC75: mov cs:hHandle, rax +18000CC7C: test rax, rax +18000CC7F: jz short loc_18000CCA5 +18000CC81: xor ecx, ecx +18000CC83: call __scrt_initialize_onexit_tables +18000CC88: test al, al +18000CC8A: jz short loc_18000CCA5 +18000CC8C: lea rcx, ?__scrt_uninitialize_thread_safe_statics@@YAXXZ; void (__cdecl *)() +18000CC93: call atexit +18000CC98: mov rbx, [rsp+28h+arg_0] +18000CC9D: xor eax, eax +18000CC9F: add rsp, 20h +18000CCA3: pop rdi +18000CCA4: retn +18000CCA5: mov ecx, 7 +18000CCAA: call __scrt_fastfail +18000CCAF: int 3; Trap to Debugger + +### FUNC 18000CCB0 - 18000CCD8 (40 bytes) name=?__scrt_uninitialize_thread_safe_statics@@YAXXZ +18000CCB0: sub rsp, 28h +18000CCB4: lea rcx, CriticalSection; lpCriticalSection +18000CCBB: call cs:DeleteCriticalSection +18000CCC1: mov rcx, cs:hHandle; hObject +18000CCC8: test rcx, rcx +18000CCCB: jz short loc_18000CCD3 +18000CCCD: call cs:CloseHandle +18000CCD3: add rsp, 28h +18000CCD7: retn + +### FUNC 18000CCD8 - 18000CD08 (48 bytes) name=_Init_thread_abort +18000CCD8: push rbx +18000CCDA: sub rsp, 20h +18000CCDE: mov rbx, rcx +18000CCE1: lea rcx, CriticalSection; lpCriticalSection +18000CCE8: call cs:EnterCriticalSection +18000CCEE: and dword ptr [rbx], 0 +18000CCF1: lea rcx, CriticalSection; lpCriticalSection +18000CCF8: call cs:LeaveCriticalSection +18000CCFE: add rsp, 20h +18000CD02: pop rbx +18000CD03: jmp _Init_thread_notify + +### FUNC 18000CD08 - 18000CD68 (96 bytes) name=_Init_thread_footer +18000CD08: push rbx +18000CD0A: sub rsp, 20h +18000CD0E: mov rbx, rcx +18000CD11: lea rcx, CriticalSection; lpCriticalSection +18000CD18: call cs:EnterCriticalSection +18000CD1E: mov eax, cs:dword_180015004 +18000CD24: lea rcx, CriticalSection; lpCriticalSection +18000CD2B: mov edx, cs:TlsIndex +18000CD31: inc eax +18000CD33: mov cs:dword_180015004, eax +18000CD39: mov [rbx], eax +18000CD3B: mov rax, gs:58h +18000CD44: mov r9d, 4 +18000CD4A: mov r8, [rax+rdx*8] +18000CD4E: mov eax, cs:dword_180015004 +18000CD54: mov [r9+r8], eax +18000CD58: call cs:LeaveCriticalSection +18000CD5E: add rsp, 20h +18000CD62: pop rbx +18000CD63: jmp _Init_thread_notify + +### FUNC 18000CD68 - 18000CDCF (103 bytes) name=_Init_thread_header +18000CD68: push rbx +18000CD6A: sub rsp, 20h +18000CD6E: mov rbx, rcx +18000CD71: lea rcx, CriticalSection; lpCriticalSection +18000CD78: call cs:EnterCriticalSection +18000CD7E: cmp dword ptr [rbx], 0 +18000CD81: jnz short loc_18000CD94 +18000CD83: or dword ptr [rbx], 0FFFFFFFFh +18000CD86: jmp short loc_18000CDBC +18000CD88: mov ecx, 64h ; 'd'; dwMilliseconds +18000CD8D: call _Init_thread_wait +18000CD92: jmp short loc_18000CD7E +18000CD94: cmp dword ptr [rbx], 0FFFFFFFFh +18000CD97: jz short loc_18000CD88 +18000CD99: mov rax, gs:58h +18000CDA2: mov ecx, cs:TlsIndex +18000CDA8: mov r8d, 4 +18000CDAE: mov rdx, [rax+rcx*8] +18000CDB2: mov eax, cs:dword_180015004 +18000CDB8: mov [r8+rdx], eax +18000CDBC: lea rcx, CriticalSection +18000CDC3: add rsp, 20h +18000CDC7: pop rbx +18000CDC8: jmp cs:LeaveCriticalSection + +### FUNC 18000CDD0 - 18000CE11 (65 bytes) name=_Init_thread_notify +18000CDD0: sub rsp, 28h +18000CDD4: mov rax, cs:qword_180015FA0 +18000CDDB: test rax, rax +18000CDDE: jz short loc_18000CDF2 +18000CDE0: lea rcx, unk_180015F60 +18000CDE7: add rsp, 28h +18000CDEB: jmp cs:__guard_dispatch_icall_fptr +18000CDF2: mov rcx, cs:hHandle; hEvent +18000CDF9: call cs:SetEvent +18000CDFF: mov rcx, cs:hHandle +18000CE06: add rsp, 28h +18000CE0A: jmp cs:ResetEvent + +### FUNC 18000CE14 - 18000CE77 (99 bytes) name=_Init_thread_wait +18000CE14: push rbx +18000CE16: sub rsp, 20h +18000CE1A: mov rax, cs:qword_180015F98 +18000CE21: mov ebx, ecx +18000CE23: test rax, rax +18000CE26: jz short loc_18000CE45 +18000CE28: mov r8d, ecx +18000CE2B: lea rdx, CriticalSection +18000CE32: lea rcx, unk_180015F60 +18000CE39: add rsp, 20h +18000CE3D: pop rbx +18000CE3E: jmp cs:__guard_dispatch_icall_fptr +18000CE45: lea rcx, CriticalSection; lpCriticalSection +18000CE4C: call cs:LeaveCriticalSection +18000CE52: mov rcx, cs:hHandle; hHandle +18000CE59: xor r8d, r8d; bAlertable +18000CE5C: mov edx, ebx; dwMilliseconds +18000CE5E: call cs:WaitForSingleObjectEx +18000CE64: lea rcx, CriticalSection +18000CE6B: add rsp, 20h +18000CE6F: pop rbx +18000CE70: jmp cs:EnterCriticalSection + +### FUNC 18000CE78 - 18000CE7D (5 bytes) name=j_??2@YAPEAX_K@Z +18000CE78: jmp ??2@YAPEAX_K@Z + +### FUNC 18000CE80 - 18000CED0 (80 bytes) name=?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000CE80: sub rsp, 28h +18000CE84: test edx, edx +18000CE86: jz short loc_18000CEC1 +18000CE88: sub edx, 1 +18000CE8B: jz short loc_18000CEB5 +18000CE8D: sub edx, 1 +18000CE90: jz short loc_18000CEA8 +18000CE92: cmp edx, 1 +18000CE95: jz short loc_18000CEA1 +18000CE97: mov eax, 1 +18000CE9C: add rsp, 28h +18000CEA0: retn +18000CEA1: call __scrt_dllmain_crt_thread_detach +18000CEA6: jmp short loc_18000CEAD +18000CEA8: call sub_18000C618 +18000CEAD: movzx eax, al +18000CEB0: add rsp, 28h +18000CEB4: retn +18000CEB5: mov rdx, r8; void * +18000CEB8: add rsp, 28h +18000CEBC: jmp ?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z +18000CEC1: test r8, r8 +18000CEC4: setnz cl; bool +18000CEC7: add rsp, 28h +18000CECB: jmp ?dllmain_crt_process_detach@@YAH_N@Z + +### FUNC 18000CED0 - 18000CFE6 (278 bytes) name=?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z +18000CED0: mov [rsp+arg_0], rbx +18000CED5: mov [rsp+arg_8], rsi +18000CEDA: mov [rsp+arg_18], rdi +18000CEDF: push r14 +18000CEE1: sub rsp, 20h +18000CEE5: mov rsi, rdx +18000CEE8: mov r14, rcx +18000CEEB: xor ecx, ecx +18000CEED: call __scrt_initialize_crt +18000CEF2: test al, al +18000CEF4: jz loc_18000CFC2 +18000CEFA: call __scrt_acquire_startup_lock +18000CEFF: mov bl, al +18000CF01: mov [rsp+28h+arg_10], al +18000CF05: mov dil, 1 +18000CF08: cmp cs:dword_1800159A0, 0 +18000CF0F: jnz loc_18000CFDA +18000CF15: mov cs:dword_1800159A0, 1 +18000CF1F: call __scrt_dllmain_before_initialize_c +18000CF24: test al, al +18000CF26: jz short loc_18000CF77 +18000CF28: call sub_18000D620 +18000CF2D: call sub_18000D5D8 +18000CF32: call __scrt_initialize_default_local_stdio_options +18000CF37: lea rdx, Last; Last +18000CF3E: lea rcx, First; First +18000CF45: call _initterm_e +18000CF4A: test eax, eax +18000CF4C: jnz short loc_18000CF77 +18000CF4E: call __scrt_dllmain_after_initialize_c +18000CF53: test al, al +18000CF55: jz short loc_18000CF77 +18000CF57: lea rdx, qword_18000F598; Last +18000CF5E: lea rcx, qword_18000F4E0; First +18000CF65: call _initterm +18000CF6A: mov cs:dword_1800159A0, 2 +18000CF74: xor dil, dil +18000CF77: mov cl, bl +18000CF79: call __scrt_release_startup_lock +18000CF7E: test dil, dil +18000CF81: jnz short loc_18000CFC2 +18000CF83: call sub_18000D618 +18000CF88: mov rbx, rax +18000CF8B: cmp qword ptr [rax], 0 +18000CF8F: jz short loc_18000CFB5 +18000CF91: mov rcx, rax +18000CF94: call __scrt_is_nonwritable_in_current_image +18000CF99: test al, al +18000CF9B: jz short loc_18000CFB5 +18000CF9D: mov r8, rsi +18000CFA0: mov edx, 2 +18000CFA5: mov rcx, r14 +18000CFA8: mov rax, [rbx] +18000CFAB: mov r9, cs:__guard_dispatch_icall_fptr +18000CFB2: call r9 ; _guard_dispatch_icall_nop +18000CFB5: inc cs:dword_180015FA8 +18000CFBB: mov eax, 1 +18000CFC0: jmp short loc_18000CFC4 +18000CFC2: xor eax, eax +18000CFC4: mov rbx, [rsp+28h+arg_0] +18000CFC9: mov rsi, [rsp+28h+arg_8] +18000CFCE: mov rdi, [rsp+28h+arg_18] +18000CFD3: add rsp, 20h +18000CFD7: pop r14 +18000CFD9: retn +18000CFDA: mov ecx, 7 +18000CFDF: call __scrt_fastfail +18000CFE4: nop +18000CFE5: int 3; Trap to Debugger + +### FUNC 18000CFE8 - 18000D06C (132 bytes) name=?dllmain_crt_process_detach@@YAH_N@Z +18000CFE8: mov [rsp+arg_0], rbx +18000CFED: push rdi +18000CFEE: sub rsp, 30h +18000CFF2: mov dil, cl +18000CFF5: mov eax, cs:dword_180015FA8 +18000CFFB: test eax, eax +18000CFFD: jg short loc_18000D00C +18000CFFF: xor eax, eax +18000D001: mov rbx, [rsp+38h+arg_0] +18000D006: add rsp, 30h +18000D00A: pop rdi +18000D00B: retn +18000D00C: dec eax +18000D00E: mov cs:dword_180015FA8, eax +18000D014: call __scrt_acquire_startup_lock +18000D019: mov bl, al +18000D01B: mov [rsp+38h+var_18], al +18000D01F: cmp cs:dword_1800159A0, 2 +18000D026: jnz short loc_18000D05F +18000D028: call __scrt_dllmain_uninitialize_c +18000D02D: call sub_18000D5E8 +18000D032: call sub_18000D65C +18000D037: and cs:dword_1800159A0, 0 +18000D03E: mov cl, bl +18000D040: call __scrt_release_startup_lock +18000D045: xor edx, edx +18000D047: mov cl, dil +18000D04A: call __scrt_uninitialize_crt +18000D04F: neg al +18000D051: sbb ebx, ebx +18000D053: and ebx, 1 +18000D056: call __scrt_dllmain_uninitialize_critical +18000D05B: mov eax, ebx +18000D05D: jmp short loc_18000D001 +18000D05F: mov ecx, 7 +18000D064: call __scrt_fastfail +18000D069: nop +18000D06A: nop +18000D06B: int 3; Trap to Debugger + +### FUNC 18000D06C - 18000D19F (307 bytes) name=?dllmain_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000D06C: mov rax, rsp +18000D06F: mov [rax+20h], rbx +18000D073: mov [rax+18h], r8 +18000D077: mov [rax+10h], edx +18000D07A: mov [rax+8], rcx +18000D07E: push rsi +18000D07F: push rdi +18000D080: push r14 +18000D082: sub rsp, 40h +18000D086: mov rsi, r8 +18000D089: mov edi, edx +18000D08B: mov r14, rcx +18000D08E: test edx, edx +18000D090: jnz short loc_18000D0A1 +18000D092: cmp cs:dword_180015FA8, edx +18000D098: jg short loc_18000D0A1 +18000D09A: xor eax, eax +18000D09C: jmp loc_18000D191 +18000D0A1: lea eax, [rdx-1] +18000D0A4: cmp eax, 1 +18000D0A7: ja short loc_18000D0EE +18000D0A9: mov rax, cs:qword_18000F6C8 +18000D0B0: test rax, rax +18000D0B3: jnz short loc_18000D0BF +18000D0B5: mov [rsp+58h+var_28], 1 +18000D0BD: jmp short loc_18000D0D3 +18000D0BF: call cs:__guard_dispatch_icall_fptr +18000D0C5: mov ebx, eax +18000D0C7: mov [rsp+58h+var_28], eax +18000D0CB: test eax, eax +18000D0CD: jz loc_18000D187 +18000D0D3: mov r8, rsi; void * +18000D0D6: mov edx, edi; unsigned int +18000D0D8: mov rcx, r14; HINSTANCE +18000D0DB: call ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000D0E0: mov ebx, eax +18000D0E2: mov [rsp+58h+var_28], eax +18000D0E6: test eax, eax +18000D0E8: jz loc_18000D187 +18000D0EE: mov r8, rsi; lpvReserved +18000D0F1: mov edx, edi; fdwReason +18000D0F3: mov rcx, r14; hinstDLL +18000D0F6: call DllMain +18000D0FB: mov ebx, eax +18000D0FD: mov [rsp+58h+var_28], eax +18000D101: cmp edi, 1 +18000D104: jnz short loc_18000D13E +18000D106: test eax, eax +18000D108: jnz short loc_18000D13E +18000D10A: mov r8, rsi; lpvReserved +18000D10D: xor edx, edx; fdwReason +18000D10F: mov rcx, r14; hinstDLL +18000D112: call DllMain +18000D117: mov r8, rsi; void * +18000D11A: xor edx, edx; unsigned int +18000D11C: mov rcx, r14; HINSTANCE +18000D11F: call ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000D124: mov rax, cs:qword_18000F6C8 +18000D12B: test rax, rax +18000D12E: jz short loc_18000D13E +18000D130: mov r8, rsi +18000D133: xor edx, edx +18000D135: mov rcx, r14 +18000D138: call cs:__guard_dispatch_icall_fptr +18000D13E: test edi, edi +18000D140: jz short loc_18000D147 +18000D142: cmp edi, 3 +18000D145: jnz short loc_18000D187 +18000D147: mov r8, rsi; void * +18000D14A: mov edx, edi; unsigned int +18000D14C: mov rcx, r14; HINSTANCE +18000D14F: call ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z +18000D154: mov ebx, eax +18000D156: mov [rsp+58h+var_28], eax +18000D15A: test eax, eax +18000D15C: jz short loc_18000D187 +18000D15E: mov rax, cs:qword_18000F6C8 +18000D165: test rax, rax +18000D168: jnz short loc_18000D173 +18000D16A: lea ebx, [rax+1] +18000D16D: mov [rsp+58h+var_28], ebx +18000D171: jmp short loc_18000D187 +18000D173: mov r8, rsi +18000D176: mov edx, edi +18000D178: mov rcx, r14 +18000D17B: call cs:__guard_dispatch_icall_fptr +18000D181: mov ebx, eax +18000D183: mov [rsp+58h+var_28], eax +18000D187: jmp short loc_18000D18F +18000D189: xor ebx, ebx +18000D18B: mov [rsp+58h+var_28], ebx +18000D18F: mov eax, ebx +18000D191: mov rbx, [rsp+58h+arg_18] +18000D196: add rsp, 40h +18000D19A: pop r14 +18000D19C: pop rdi +18000D19D: pop rsi +18000D19E: retn + +### FUNC 18000D1A0 - 18000D1DD (61 bytes) name=DllEntryPoint +18000D1A0: mov [rsp+arg_0], rbx +18000D1A5: mov [rsp+arg_8], rsi +18000D1AA: push rdi +18000D1AB: sub rsp, 20h +18000D1AF: mov rdi, r8 +18000D1B2: mov ebx, edx +18000D1B4: mov rsi, rcx +18000D1B7: cmp edx, 1 +18000D1BA: jnz short loc_18000D1C1 +18000D1BC: call __security_init_cookie +18000D1C1: mov r8, rdi; void * +18000D1C4: mov edx, ebx; unsigned int +18000D1C6: mov rcx, rsi; HINSTANCE +18000D1C9: mov rbx, [rsp+28h+arg_0] +18000D1CE: mov rsi, [rsp+28h+arg_8] +18000D1D3: add rsp, 20h +18000D1D7: pop rdi +18000D1D8: jmp ?dllmain_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z + +### FUNC 18000D1E0 - 18000D1FE (30 bytes) name=sub_18000D1E0 +18000D1E0: and qword ptr [rcx+10h], 0 +18000D1E5: lea rax, aBadAllocation; "bad allocation" +18000D1EC: mov [rcx+8], rax +18000D1F0: lea rax, off_18000F6F0 +18000D1F7: mov [rcx], rax +18000D1FA: mov rax, rcx +18000D1FD: retn + +### FUNC 18000D200 - 18000D220 (32 bytes) name=?cancel_current_task@Concurrency@@YAXXZ_0 +18000D200: sub rsp, 48h +18000D204: lea rcx, [rsp+48h+pExceptionObject] +18000D209: call sub_18000D1E0 +18000D20E: lea rdx, stru_180013270; pThrowInfo +18000D215: lea rcx, [rsp+48h+pExceptionObject]; pExceptionObject +18000D21A: call _CxxThrowException +18000D21F: align 20h + +### FUNC 18000D220 - 18000D3C1 (417 bytes) name=__isa_available_init +18000D220: mov [rsp+arg_8], rbx +18000D225: mov [rsp+arg_10], rsi +18000D22A: push rdi +18000D22B: sub rsp, 10h +18000D22F: xor eax, eax +18000D231: xor ecx, ecx +18000D233: cpuid +18000D235: mov r8d, ecx +18000D238: xor r11d, r11d +18000D23B: mov r9d, ebx +18000D23E: xor r8d, 6C65746Eh +18000D245: xor r9d, 756E6547h +18000D24C: mov r10d, edx +18000D24F: mov esi, eax +18000D251: xor ecx, ecx +18000D253: lea eax, [r11+1] +18000D257: or r9d, r8d +18000D25A: cpuid +18000D25C: xor r10d, 49656E69h +18000D263: mov [rsp+18h+var_18], eax +18000D266: or r9d, r10d +18000D269: mov [rsp+18h+var_14], ebx +18000D26D: mov edi, ecx +18000D26F: mov [rsp+18h+var_10], ecx +18000D273: mov [rsp+18h+var_C], edx +18000D277: jnz short loc_18000D2C9 +18000D279: or cs:qword_180015020, 0FFFFFFFFFFFFFFFFh +18000D281: and eax, 0FFF3FF0h +18000D286: cmp eax, 106C0h +18000D28B: jz short loc_18000D2B5 +18000D28D: cmp eax, 20660h +18000D292: jz short loc_18000D2B5 +18000D294: cmp eax, 20670h +18000D299: jz short loc_18000D2B5 +18000D29B: add eax, 0FFFCF9B0h +18000D2A0: cmp eax, 20h ; ' ' +18000D2A3: ja short loc_18000D2C9 +18000D2A5: mov rcx, 100010001h +18000D2AF: bt rcx, rax +18000D2B3: jnb short loc_18000D2C9 +18000D2B5: mov r8d, cs:dword_180015FAC +18000D2BC: or r8d, 1 +18000D2C0: mov cs:dword_180015FAC, r8d +18000D2C7: jmp short loc_18000D2D0 +18000D2C9: mov r8d, cs:dword_180015FAC +18000D2D0: mov eax, 7 +18000D2D5: lea r9d, [rax-5] +18000D2D9: cmp esi, eax +18000D2DB: jl short loc_18000D303 +18000D2DD: xor ecx, ecx +18000D2DF: cpuid +18000D2E1: mov [rsp+18h+var_18], eax +18000D2E4: mov r11d, ebx +18000D2E7: mov [rsp+18h+var_14], ebx +18000D2EB: mov [rsp+18h+var_10], ecx +18000D2EF: mov [rsp+18h+var_C], edx +18000D2F3: bt ebx, 9 +18000D2F7: jnb short loc_18000D303 +18000D2F9: or r8d, r9d +18000D2FC: mov cs:dword_180015FAC, r8d +18000D303: mov cs:dword_180015018, 1 +18000D30D: mov cs:dword_18001501C, r9d +18000D314: bt edi, 14h +18000D318: jnb loc_18000D3AF +18000D31E: mov cs:dword_180015018, r9d +18000D325: mov ebx, 6 +18000D32A: mov cs:dword_18001501C, ebx +18000D330: bt edi, 1Bh +18000D334: jnb short loc_18000D3AF +18000D336: bt edi, 1Ch +18000D33A: jnb short loc_18000D3AF +18000D33C: xor ecx, ecx +18000D33E: xgetbv +18000D341: shl rdx, 20h +18000D345: or rdx, rax +18000D348: mov [rsp+18h+arg_0], rdx +18000D34D: mov rax, [rsp+18h+arg_0] +18000D352: and al, bl +18000D354: cmp al, bl +18000D356: jnz short loc_18000D3AF +18000D358: mov eax, cs:dword_18001501C +18000D35E: or eax, 8 +18000D361: mov cs:dword_180015018, 3 +18000D36B: mov cs:dword_18001501C, eax +18000D371: test r11b, 20h +18000D375: jz short loc_18000D3AF +18000D377: or eax, 20h +18000D37A: mov cs:dword_180015018, 5 +18000D384: mov cs:dword_18001501C, eax +18000D38A: mov eax, 0D0030000h +18000D38F: and r11d, eax +18000D392: cmp r11d, eax +18000D395: jnz short loc_18000D3AF +18000D397: mov rax, [rsp+18h+arg_0] +18000D39C: and al, 0E0h +18000D39E: cmp al, 0E0h +18000D3A0: jnz short loc_18000D3AF +18000D3A2: or cs:dword_18001501C, 40h +18000D3A9: mov cs:dword_180015018, ebx +18000D3AF: mov rbx, [rsp+18h+arg_8] +18000D3B4: xor eax, eax +18000D3B6: mov rsi, [rsp+18h+arg_10] +18000D3BB: add rsp, 10h +18000D3BF: pop rdi +18000D3C0: retn + +### FUNC 18000D3C4 - 18000D3D0 (12 bytes) name=?__uncaught_exception@@YA_NXZ +18000D3C4: xor eax, eax +18000D3C6: cmp cs:dword_180015030, eax +18000D3CC: setnz al +18000D3CF: retn + +### FUNC 18000D3D0 - 18000D3D8 (8 bytes) name=sub_18000D3D0 +18000D3D0: and cs:dword_180015FB0, 0 +18000D3D7: retn + +### FUNC 18000D3D8 - 18000D522 (330 bytes) name=__scrt_fastfail +18000D3D8: mov [rsp-8+arg_0], rbx +18000D3DD: push rbp +18000D3DE: lea rbp, [rsp-4C0h] +18000D3E6: sub rsp, 5C0h +18000D3ED: mov ebx, ecx +18000D3EF: mov ecx, 17h; ProcessorFeature +18000D3F4: call IsProcessorFeaturePresent +18000D3F9: test eax, eax +18000D3FB: jz short loc_18000D401 +18000D3FD: mov ecx, ebx +18000D3FF: int 29h; Win8: RtlFailFast(ecx) +18000D401: mov ecx, 3 +18000D406: call sub_18000D3D0 +18000D40B: xor edx, edx; Val +18000D40D: lea rcx, [rbp+4C0h+ContextRecord]; void * +18000D411: mov r8d, 4D0h; Size +18000D417: call memset +18000D41C: lea rcx, [rbp+4C0h+ContextRecord]; ContextRecord +18000D420: call cs:RtlCaptureContext +18000D426: mov rbx, [rbp+4C0h+ContextRecord.Rip] +18000D42D: lea rdx, [rbp+4C0h+ImageBase]; ImageBase +18000D434: mov rcx, rbx; ControlPc +18000D437: xor r8d, r8d; HistoryTable +18000D43A: call cs:RtlLookupFunctionEntry +18000D440: test rax, rax +18000D443: jz short loc_18000D481 +18000D445: and [rsp+5C0h+var_588], 0 +18000D44B: lea rcx, [rbp+4C0h+arg_10] +18000D452: mov rdx, [rbp+4C0h+ImageBase]; ImageBase +18000D459: mov r9, rax; FunctionEntry +18000D45C: mov [rsp+5C0h+EstablisherFrame], rcx; EstablisherFrame +18000D461: mov r8, rbx; ControlPc +18000D464: lea rcx, [rbp+4C0h+arg_18] +18000D46B: mov [rsp+5C0h+HandlerData], rcx; HandlerData +18000D470: lea rcx, [rbp+4C0h+ContextRecord] +18000D474: mov [rsp+5C0h+var_5A0], rcx; ContextRecord +18000D479: xor ecx, ecx; HandlerType +18000D47B: call cs:RtlVirtualUnwind +18000D481: mov rax, [rbp+4C8h] +18000D488: lea rcx, [rsp+5C0h+var_570]; void * +18000D48D: mov [rbp+4C0h+ContextRecord.Rip], rax +18000D494: xor edx, edx; Val +18000D496: lea rax, [rbp+4C8h] +18000D49D: mov r8d, 98h; Size +18000D4A3: add rax, 8 +18000D4A7: mov [rbp+4C0h+ContextRecord.Rsp], rax +18000D4AE: call memset +18000D4B3: mov rax, [rbp+4C8h] +18000D4BA: mov [rsp+5C0h+var_560], rax +18000D4BF: mov [rsp+5C0h+var_570], 40000015h +18000D4C7: mov [rsp+5C0h+var_56C], 1 +18000D4CF: call cs:IsDebuggerPresent +18000D4D5: cmp eax, 1 +18000D4D8: lea rax, [rsp+5C0h+var_570] +18000D4DD: mov [rsp+5C0h+ExceptionInfo.ExceptionRecord], rax +18000D4E2: lea rax, [rbp+4C0h+ContextRecord] +18000D4E6: setz bl +18000D4E9: mov [rsp+5C0h+ExceptionInfo.ContextRecord], rax +18000D4EE: xor ecx, ecx; lpTopLevelExceptionFilter +18000D4F0: call cs:SetUnhandledExceptionFilter +18000D4F6: lea rcx, [rsp+5C0h+ExceptionInfo]; ExceptionInfo +18000D4FB: call cs:UnhandledExceptionFilter +18000D501: test eax, eax +18000D503: jnz short loc_18000D511 +18000D505: test bl, bl +18000D507: jnz short loc_18000D511 +18000D509: lea ecx, [rax+3] +18000D50C: call sub_18000D3D0 +18000D511: mov rbx, [rsp+5C0h+arg_0] +18000D519: add rsp, 5C0h +18000D520: pop rbp +18000D521: retn + +### FUNC 18000D524 - 18000D529 (5 bytes) name=j_free +18000D524: jmp free + +### FUNC 18000D52C - 18000D5D8 (172 bytes) name=__security_init_cookie +18000D52C: mov [rsp-8+arg_18], rbx +18000D531: push rbp +18000D532: mov rbp, rsp +18000D535: sub rsp, 20h +18000D539: mov rax, cs:__security_cookie +18000D540: mov rbx, 2B992DDFA232h +18000D54A: cmp rax, rbx +18000D54D: jnz short loc_18000D5C3 +18000D54F: and qword ptr [rbp+SystemTimeAsFileTime.dwLowDateTime], 0 +18000D554: lea rcx, [rbp+SystemTimeAsFileTime]; lpSystemTimeAsFileTime +18000D558: call cs:GetSystemTimeAsFileTime +18000D55E: mov rax, qword ptr [rbp+SystemTimeAsFileTime.dwLowDateTime] +18000D562: mov [rbp+arg_0], rax +18000D566: call cs:GetCurrentThreadId +18000D56C: mov eax, eax +18000D56E: xor [rbp+arg_0], rax +18000D572: call cs:GetCurrentProcessId +18000D578: mov eax, eax +18000D57A: lea rcx, [rbp+PerformanceCount]; lpPerformanceCount +18000D57E: xor [rbp+arg_0], rax +18000D582: call cs:QueryPerformanceCounter +18000D588: mov eax, dword ptr [rbp+PerformanceCount] +18000D58B: lea rcx, [rbp+arg_0] +18000D58F: shl rax, 20h +18000D593: xor rax, qword ptr [rbp+PerformanceCount] +18000D597: xor rax, [rbp+arg_0] +18000D59B: xor rax, rcx +18000D59E: mov rcx, 0FFFFFFFFFFFFh +18000D5A8: and rax, rcx +18000D5AB: mov rcx, 2B992DDFA233h +18000D5B5: cmp rax, rbx +18000D5B8: cmovz rax, rcx +18000D5BC: mov cs:__security_cookie, rax +18000D5C3: mov rbx, [rsp+20h+arg_18] +18000D5C8: not rax +18000D5CB: mov cs:qword_180015008, rax +18000D5D2: add rsp, 20h +18000D5D6: pop rbp +18000D5D7: retn + +### FUNC 18000D5D8 - 18000D5E6 (14 bytes) name=sub_18000D5D8 +18000D5D8: lea rcx, unk_180015FC0 +18000D5DF: jmp cs:InitializeSListHead + +### FUNC 18000D5E8 - 18000D5F4 (12 bytes) name=sub_18000D5E8 +18000D5E8: lea rcx, unk_180015FC0 +18000D5EF: jmp __std_type_info_destroy_list + +### FUNC 18000D5F4 - 18000D5FC (8 bytes) name=sub_18000D5F4 +18000D5F4: lea rax, unk_180015FD0 +18000D5FB: retn + +### FUNC 18000D5FC - 18000D617 (27 bytes) name=__scrt_initialize_default_local_stdio_options +18000D5FC: sub rsp, 28h +18000D600: call sub_180002FC0 +18000D605: or qword ptr [rax], 24h +18000D609: call sub_18000D5F4 +18000D60E: or qword ptr [rax], 2 +18000D612: add rsp, 28h +18000D616: retn + +### FUNC 18000D618 - 18000D620 (8 bytes) name=sub_18000D618 +18000D618: lea rax, unk_1800160E8 +18000D61F: retn + +### FUNC 18000D620 - 18000D65C (60 bytes) name=sub_18000D620 +18000D620: mov [rsp+arg_0], rbx +18000D625: push rdi +18000D626: sub rsp, 20h +18000D62A: lea rbx, unk_180011B20 +18000D631: lea rdi, unk_180011B20 +18000D638: jmp short loc_18000D64C +18000D63A: mov rax, [rbx] +18000D63D: test rax, rax +18000D640: jz short loc_18000D648 +18000D642: call cs:__guard_dispatch_icall_fptr +18000D648: add rbx, 8 +18000D64C: cmp rbx, rdi +18000D64F: jb short loc_18000D63A +18000D651: mov rbx, [rsp+28h+arg_0] +18000D656: add rsp, 20h +18000D65A: pop rdi +18000D65B: retn + +### FUNC 18000D65C - 18000D698 (60 bytes) name=sub_18000D65C +18000D65C: mov [rsp+arg_0], rbx +18000D661: push rdi +18000D662: sub rsp, 20h +18000D666: lea rbx, unk_180011B30 +18000D66D: lea rdi, unk_180011B30 +18000D674: jmp short loc_18000D688 +18000D676: mov rax, [rbx] +18000D679: test rax, rax +18000D67C: jz short loc_18000D684 +18000D67E: call cs:__guard_dispatch_icall_fptr +18000D684: add rbx, 8 +18000D688: cmp rbx, rdi +18000D68B: jb short loc_18000D676 +18000D68D: mov rbx, [rsp+28h+arg_0] +18000D692: add rsp, 20h +18000D696: pop rdi +18000D697: retn + +### FUNC 18000D6A0 - 18000D6A6 (6 bytes) name=?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ +18000D6A0: jmp cs:__imp_?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ + +### FUNC 18000D6A6 - 18000D6AC (6 bytes) name=?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ +18000D6A6: jmp cs:__imp_?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ + +### FUNC 18000D6AC - 18000D6B2 (6 bytes) name=?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ +18000D6AC: jmp cs:__imp_?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ + +### FUNC 18000D6B2 - 18000D6B8 (6 bytes) name=?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ +18000D6B2: jmp cs:__imp_?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ + +### FUNC 18000D6B8 - 18000D6BE (6 bytes) name=?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z +18000D6B8: jmp cs:__imp_?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z + +### FUNC 18000D6BE - 18000D6C4 (6 bytes) name=?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z +18000D6BE: jmp cs:__imp_?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z + +### FUNC 18000D6C4 - 18000D6CA (6 bytes) name=?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z +18000D6C4: jmp cs:__imp_?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z + +### FUNC 18000D6CA - 18000D6D0 (6 bytes) name=?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ +18000D6CA: jmp cs:__imp_?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ + +### FUNC 18000D6D0 - 18000D6D6 (6 bytes) name=?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z +18000D6D0: jmp cs:__imp_?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z + +### FUNC 18000D6D6 - 18000D6DC (6 bytes) name=__CxxFrameHandler4 +18000D6D6: jmp cs:__imp___CxxFrameHandler4 + +### FUNC 18000D6E2 - 18000D6E8 (6 bytes) name=__C_specific_handler +18000D6E2: jmp cs:__imp___C_specific_handler + +### FUNC 18000D6E8 - 18000D6EE (6 bytes) name=_CxxThrowException +18000D6E8: jmp cs:__imp__CxxThrowException + +### FUNC 18000D6EE - 18000D6F4 (6 bytes) name=memset +18000D6EE: jmp cs:__imp_memset + +### FUNC 18000D6F4 - 18000D6FA (6 bytes) name=__std_type_info_destroy_list +18000D6F4: jmp cs:__imp___std_type_info_destroy_list + +### FUNC 18000D6FA - 18000D700 (6 bytes) name=_callnewh +18000D6FA: jmp cs:__imp__callnewh + +### FUNC 18000D700 - 18000D706 (6 bytes) name=malloc +18000D700: jmp cs:__imp_malloc + +### FUNC 18000D706 - 18000D70C (6 bytes) name=_seh_filter_dll +18000D706: jmp cs:__imp__seh_filter_dll + +### FUNC 18000D70C - 18000D712 (6 bytes) name=_configure_narrow_argv +18000D70C: jmp cs:__imp__configure_narrow_argv + +### FUNC 18000D712 - 18000D718 (6 bytes) name=_initialize_narrow_environment +18000D712: jmp cs:__imp__initialize_narrow_environment + +### FUNC 18000D718 - 18000D71E (6 bytes) name=_initialize_onexit_table +18000D718: jmp cs:__imp__initialize_onexit_table + +### FUNC 18000D71E - 18000D724 (6 bytes) name=_register_onexit_function +18000D71E: jmp cs:__imp__register_onexit_function + +### FUNC 18000D724 - 18000D72A (6 bytes) name=_execute_onexit_table +18000D724: jmp cs:__imp__execute_onexit_table + +### FUNC 18000D72A - 18000D730 (6 bytes) name=_crt_atexit +18000D72A: jmp cs:__imp__crt_atexit + +### FUNC 18000D730 - 18000D736 (6 bytes) name=_cexit +18000D730: jmp cs:__imp__cexit + +### FUNC 18000D736 - 18000D73C (6 bytes) name=_initterm +18000D736: jmp cs:__imp__initterm + +### FUNC 18000D73C - 18000D742 (6 bytes) name=_initterm_e +18000D73C: jmp cs:__imp__initterm_e + +### FUNC 18000D742 - 18000D748 (6 bytes) name=free +18000D742: jmp cs:__imp_free + +### FUNC 18000D748 - 18000D74E (6 bytes) name=IsProcessorFeaturePresent +18000D748: jmp cs:__imp_IsProcessorFeaturePresent + +### FUNC 18000D750 - 18000D753 (3 bytes) name=sub_18000D750 +18000D750: mov al, 1 +18000D752: retn + +### FUNC 18000D754 - 18000D757 (3 bytes) name=sub_18000D754 +18000D754: xor eax, eax +18000D756: retn + +### FUNC 18000D758 - 18000D775 (29 bytes) name=__GSHandlerCheck +18000D758: sub rsp, 28h +18000D75C: mov r8, [r9+38h] +18000D760: mov rcx, rdx +18000D763: mov rdx, r9 +18000D766: call __GSHandlerCheckCommon +18000D76B: mov eax, 1 +18000D770: add rsp, 28h +18000D774: retn + +### FUNC 18000D778 - 18000D7D3 (91 bytes) name=__GSHandlerCheckCommon +18000D778: push rbx +18000D77A: mov r11d, [r8] +18000D77D: mov rbx, rdx +18000D780: and r11d, 0FFFFFFF8h +18000D784: mov r9, rcx +18000D787: test byte ptr [r8], 4 +18000D78B: mov r10, rcx +18000D78E: jz short loc_18000D7A3 +18000D790: mov eax, [r8+8] +18000D794: movsxd r10, dword ptr [r8+4] +18000D798: neg eax +18000D79A: add r10, rcx +18000D79D: movsxd rcx, eax +18000D7A0: and r10, rcx +18000D7A3: movsxd rax, r11d +18000D7A6: mov rdx, [rax+r10] +18000D7AA: mov rax, [rbx+10h] +18000D7AE: mov ecx, [rax+8] +18000D7B1: mov rax, [rbx+8] +18000D7B5: test byte ptr [rcx+rax+3], 0Fh +18000D7BA: jz short loc_18000D7C7 +18000D7BC: movzx eax, byte ptr [rcx+rax+3] +18000D7C1: and eax, 0FFFFFFF0h +18000D7C4: add r9, rax +18000D7C7: xor r9, rdx +18000D7CA: mov rcx, r9; StackCookie +18000D7CD: pop rbx +18000D7CE: jmp __security_check_cookie + +### FUNC 18000D7D4 - 18000D853 (127 bytes) name=__GSHandlerCheck_EH4 +18000D7D4: mov rax, rsp +18000D7D7: mov [rax+8], rbx +18000D7DB: mov [rax+10h], rbp +18000D7DF: mov [rax+18h], rsi +18000D7E3: mov [rax+20h], rdi +18000D7E7: push r14 +18000D7E9: sub rsp, 20h +18000D7ED: mov rbx, [r9+38h] +18000D7F1: mov rsi, rdx +18000D7F4: mov r14, r8 +18000D7F7: mov rbp, rcx +18000D7FA: mov rdx, r9 +18000D7FD: mov rcx, rsi +18000D800: mov rdi, r9 +18000D803: lea r8, [rbx+4] +18000D807: call __GSHandlerCheckCommon +18000D80C: mov eax, [rbp+4] +18000D80F: and al, 66h +18000D811: neg al +18000D813: mov eax, 1 +18000D818: sbb r8d, r8d +18000D81B: neg r8d +18000D81E: add r8d, eax +18000D821: test [rbx+4], r8d +18000D825: jz short loc_18000D838 +18000D827: mov r9, rdi +18000D82A: mov r8, r14 +18000D82D: mov rdx, rsi +18000D830: mov rcx, rbp +18000D833: call __CxxFrameHandler4 +18000D838: mov rbx, [rsp+28h+arg_0] +18000D83D: mov rbp, [rsp+28h+arg_8] +18000D842: mov rsi, [rsp+28h+arg_10] +18000D847: mov rdi, [rsp+28h+arg_18] +18000D84C: add rsp, 20h +18000D850: pop r14 +18000D852: retn + +### FUNC 18000D853 - 18000D859 (6 bytes) name=__RTDynamicCast +18000D853: jmp cs:__imp___RTDynamicCast + +### FUNC 18000D859 - 18000D85F (6 bytes) name=memchr +18000D859: jmp cs:__imp_memchr + +### FUNC 18000D85F - 18000D865 (6 bytes) name=memcmp +18000D85F: jmp cs:__imp_memcmp + +### FUNC 18000D865 - 18000D86B (6 bytes) name=memcpy +18000D865: jmp cs:__imp_memcpy + +### FUNC 18000D86B - 18000D871 (6 bytes) name=memmove +18000D86B: jmp cs:__imp_memmove + +### FUNC 18000D890 - 18000D892 (2 bytes) name=_guard_dispatch_icall_nop +18000D890: jmp rax + +### FUNC 18000D8A0 - 18000D8AC (12 bytes) name=unknown_libname_1 +18000D8A0: lea rcx, [rdx+30h] +18000D8A7: jmp sub_1800024B0 + +### FUNC 18000D8AC - 18000D8B8 (12 bytes) name=unknown_libname_2 +18000D8AC: lea rcx, [rdx+30h] +18000D8B3: jmp sub_1800024B0 + +### FUNC 18000D8B8 - 18000D8C4 (12 bytes) name=unknown_libname_3 +18000D8B8: lea rcx, [rdx+30h] +18000D8BF: jmp sub_1800024B0 + +### FUNC 18000D8C4 - 18000D8D0 (12 bytes) name=unknown_libname_4 +18000D8C4: lea rcx, [rdx+30h] +18000D8CB: jmp sub_1800024B0 + +### FUNC 18000D8F9 - 18000D905 (12 bytes) name=unknown_libname_5 +18000D8F9: lea rcx, [rdx+48h] +18000D900: jmp unknown_libname_18; Microsoft VisualC v14 64bit runtime + +### FUNC 18000D905 - 18000D911 (12 bytes) name=sub_18000D905 +18000D905: lea rcx, [rdx+0E8h] +18000D90C: jmp sub_1800024B0 + +### FUNC 18000D911 - 18000D91D (12 bytes) name=sub_18000D911 +18000D911: lea rcx, [rdx+68h] +18000D918: jmp unknown_libname_18; Microsoft VisualC v14 64bit runtime + +### FUNC 18000D91D - 18000D929 (12 bytes) name=sub_18000D91D +18000D91D: lea rcx, [rdx+0C8h] +18000D924: jmp sub_1800024B0 + +### FUNC 18000D929 - 18000D935 (12 bytes) name=unknown_libname_6 +18000D929: lea rcx, [rdx+48h] +18000D930: jmp unknown_libname_18; Microsoft VisualC v14 64bit runtime + +### FUNC 18000D935 - 18000D941 (12 bytes) name=sub_18000D935 +18000D935: lea rcx, [rdx+0A8h] +18000D93C: jmp sub_1800024B0 + +### FUNC 18000D941 - 18000D94D (12 bytes) name=sub_18000D941 +18000D941: lea rcx, [rdx+130h] +18000D948: jmp sub_180002CA0 + +### FUNC 18000D94D - 18000D959 (12 bytes) name=?dtor$14@?0??_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z@4HA +18000D94D: mov rcx, [rdx+90h] +18000D954: jmp sub_1800024B0 + +### FUNC 18000D970 - 18000D97C (12 bytes) name=sub_18000D970 +18000D970: mov rcx, [rdx+48h] +18000D977: jmp sub_1800024B0 + +### FUNC 18000DA1C - 18000DA28 (12 bytes) name=sub_18000DA1C +18000DA1C: lea rcx, [rdx+60h] +18000DA23: jmp sub_1800042A0 + +### FUNC 18000DA60 - 18000DA6C (12 bytes) name=?dtor$0@?0??AllocateSegment@FairScheduleGroup@details@Concurrency@@MEAAPEAVScheduleGroupSegmentBase@23@PEAVSchedulingRing@23@PEAVlocation@3@@Z@4HA +18000DA60: mov rcx, [rdx+68h] +18000DA67: jmp sub_1800024B0 + +### FUNC 18000DA6C - 18000DA78 (12 bytes) name=?dtor$1@?0???0task_options@Concurrency@@QEAA@XZ@4HA +18000DA6C: mov rcx, [rdx+50h] +18000DA73: jmp loc_180001690 + +### FUNC 18000DAD8 - 18000DAE4 (12 bytes) name=sub_18000DAD8 +18000DAD8: lea rcx, [rdx+70h] +18000DADF: jmp sub_1800042A0 + +### FUNC 18000DB70 - 18000DB7C (12 bytes) name=sub_18000DB70 +18000DB70: lea rcx, [rdx+120h] +18000DB77: jmp unknown_libname_18; Microsoft VisualC v14 64bit runtime + +### FUNC 18000DBBF - 18000DBCB (12 bytes) name=sub_18000DBBF +18000DBBF: lea rcx, [rdx+140h] +18000DBC6: jmp sub_1800042A0 + +### FUNC 18000DBCB - 18000DBD7 (12 bytes) name=?dtor$0@?0??do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_N@Z@4HA +18000DBCB: lea rcx, [rdx+50h] +18000DBD2: jmp sub_1800024B0 + +### FUNC 18000DBD7 - 18000DBE3 (12 bytes) name=?dtor$1@?0??do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_N@Z@4HA +18000DBD7: lea rcx, [rdx+70h] +18000DBDE: jmp sub_1800024B0 + +### FUNC 18000DBE3 - 18000DBEF (12 bytes) name=sub_18000DBE3 +18000DBE3: lea rcx, [rdx+70h] +18000DBEA: jmp sub_1800024B0 + +### FUNC 18000DBF0 - 18000DBFC (12 bytes) name=sub_18000DBF0 +18000DBF0: lea rcx, [rdx+0E0h] +18000DBF7: jmp sub_1800042A0 + +### FUNC 18000DBFC - 18000DC08 (12 bytes) name=unknown_libname_7 +18000DBFC: lea rcx, [rdx+48h] +18000DC03: jmp sub_1800024B0 + +### FUNC 18000DC10 - 18000DC1C (12 bytes) name=sub_18000DC10 +18000DC10: lea rcx, [rdx+110h] +18000DC17: jmp sub_1800042A0 + +### FUNC 18000DC1C - 18000DC28 (12 bytes) name=?dtor$0@?0??_wcstombs_l_helper@@YA_KPEADPEB_W_KPEAU__crt_locale_pointers@@@Z@4HA +18000DC1C: lea rcx, [rdx+58h] +18000DC23: jmp sub_1800024B0 + +### FUNC 18000DC30 - 18000DC3C (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA +18000DC30: lea rcx, [rdx+20h] +18000DC37: jmp sub_180006DA0 + +### FUNC 18000DCB0 - 18000DCBC (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_0 +18000DCB0: lea rcx, [rdx+20h] +18000DCB7: jmp sub_1800062E0 + +### FUNC 18000DCBC - 18000DCC8 (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_1 +18000DCBC: lea rcx, [rdx+20h] +18000DCC3: jmp sub_1800062A0 + +### FUNC 18000DD2D - 18000DD39 (12 bytes) name=sub_18000DD2D +18000DD2D: lea rcx, [rdx+28h] +18000DD34: jmp sub_180006E10 + +### FUNC 18000DD50 - 18000DD5C (12 bytes) name=sub_18000DD50 +18000DD50: lea rcx, [rdx+130h] +18000DD57: jmp sub_1800042A0 + +### FUNC 18000DD5C - 18000DD68 (12 bytes) name=sub_18000DD5C +18000DD5C: lea rcx, [rdx+90h] +18000DD63: jmp sub_1800024B0 + +### FUNC 18000DDAD - 18000DDB9 (12 bytes) name=sub_18000DDAD +18000DDAD: lea rcx, [rdx+68h] +18000DDB4: jmp loc_180007910 + +### FUNC 18000DDF0 - 18000DDFC (12 bytes) name=sub_18000DDF0 +18000DDF0: lea rcx, [rdx+140h] +18000DDF7: jmp sub_180006EF0 + +### FUNC 18000DE00 - 18000DE0C (12 bytes) name=sub_18000DE00 +18000DE00: lea rcx, [rdx+210h] +18000DE07: jmp sub_1800042A0 + +### FUNC 18000DE0C - 18000DE18 (12 bytes) name=unknown_libname_8 +18000DE0C: lea rcx, [rdx+80h] +18000DE13: jmp sub_1800024B0 + +### FUNC 18000DE18 - 18000DE24 (12 bytes) name=sub_18000DE18 +18000DE18: lea rcx, [rdx+1F0h] +18000DE1F: jmp sub_180006E90 + +### FUNC 18000DE30 - 18000DE3C (12 bytes) name=sub_18000DE30 +18000DE30: lea rcx, [rdx+28h] +18000DE37: jmp sub_180002420 + +### FUNC 18000DE69 - 18000DE75 (12 bytes) name=sub_18000DE69 +18000DE69: lea rcx, [rdx+40h] +18000DE70: jmp sub_180002480 + +### FUNC 18000DE80 - 18000DE8C (12 bytes) name=unknown_libname_9 +18000DE80: lea rcx, [rdx+48h] +18000DE87: jmp sub_1800024B0 + +### FUNC 18000DE8C - 18000DE98 (12 bytes) name=sub_18000DE8C +18000DE8C: lea rcx, [rdx+30h] +18000DE93: jmp sub_180002420 + +### FUNC 18000DED5 - 18000DEE1 (12 bytes) name=unknown_libname_10 +18000DED5: lea rcx, [rdx+48h] +18000DEDC: jmp sub_18000A2F0 + +### FUNC 18000DEE1 - 18000DEED (12 bytes) name=unknown_libname_11 +18000DEE1: lea rcx, [rdx+30h] +18000DEE8: jmp sub_180002420 + +### FUNC 18000DEED - 18000DEF9 (12 bytes) name=unknown_libname_12 +18000DEED: lea rcx, [rdx+30h] +18000DEF4: jmp sub_180002420 + +### FUNC 18000DEF9 - 18000DF05 (12 bytes) name=unknown_libname_13 +18000DEF9: lea rcx, [rdx+48h] +18000DF00: jmp sub_1800024B0 + +### FUNC 18000DF10 - 18000DF1C (12 bytes) name=sub_18000DF10 +18000DF10: mov rcx, [rdx+38h] +18000DF17: jmp sub_180002420 + +### FUNC 18000DF6D - 18000DF79 (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_2 +18000DF6D: lea rcx, [rdx+20h] +18000DF74: jmp sub_180002480 + +### FUNC 18000DF80 - 18000DF8C (12 bytes) name=unknown_libname_14 +18000DF80: lea rcx, [rdx+48h] +18000DF87: jmp sub_180002420 + +### FUNC 18000DF90 - 18000DF9C (12 bytes) name=sub_18000DF90 +18000DF90: mov rcx, [rdx+30h] +18000DF97: jmp sub_180002420 + +### FUNC 18000DFB9 - 18000DFC5 (12 bytes) name=sub_18000DFB9 +18000DFB9: lea rcx, [rdx+38h] +18000DFC0: jmp sub_180002480 + +### FUNC 18000DFE0 - 18000DFEC (12 bytes) name=sub_18000DFE0 +18000DFE0: lea rcx, [rdx+38h] +18000DFE7: jmp sub_18000A2F0 + +### FUNC 18000DFEC - 18000DFF8 (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_3 +18000DFEC: lea rcx, [rdx+20h] +18000DFF3: jmp sub_180002420 + +### FUNC 18000E020 - 18000E02C (12 bytes) name=sub_18000E020 +18000E020: lea rcx, [rdx+28h] +18000E027: jmp sub_180002420 + +### FUNC 18000E180 - 18000E18C (12 bytes) name=sub_18000E180 +18000E180: lea rcx, [rdx+88h] +18000E187: jmp sub_180002DA0 + +### FUNC 18000E18C - 18000E198 (12 bytes) name=unknown_libname_15 +18000E18C: lea rcx, [rdx+0A0h] +18000E193: jmp sub_1800024B0 + +### FUNC 18000E1A8 - 18000E1B4 (12 bytes) name=unknown_libname_16 +18000E1A8: lea rcx, [rdx+0A0h] +18000E1AF: jmp sub_180002CA0 + +### FUNC 18000E1B4 - 18000E1C0 (12 bytes) name=unknown_libname_17 +18000E1B4: mov rcx, [rdx+20h] +18000E1BB: jmp sub_1800024B0 + +### FUNC 18000E200 - 18000E20C (12 bytes) name=?dtor$0@?0??_wcrtomb_s_l@@YAHQEAHQEAD_K_WQEAU_Mbstatet@@QEAU__crt_locale_pointers@@@Z@4HA +18000E200: lea rcx, [rdx+50h] +18000E207: jmp sub_180002420 + +### FUNC 18000E20C - 18000E218 (12 bytes) name=sub_18000E20C +18000E20C: lea rcx, [rdx+38h] +18000E213: jmp sub_180002420 + +### FUNC 18000E300 - 18000E362 (98 bytes) name=sub_18000E300 +18000E300: sub rsp, 28h +18000E304: mov rcx, cs:Block; Block +18000E30B: test rcx, rcx +18000E30E: jz short loc_18000E35D +18000E310: mov rdx, qword ptr cs:xmmword_180016068+8 +18000E317: mov rax, rcx +18000E31A: sub rdx, rcx +18000E31D: cmp rdx, 1000h +18000E324: jb short loc_18000E342 +18000E326: mov rcx, [rcx-8] +18000E32A: add rdx, 27h ; ''' +18000E32E: sub rax, rcx +18000E331: add rax, 0FFFFFFFFFFFFFFF8h +18000E335: cmp rax, 1Fh +18000E339: jbe short loc_18000E342 +18000E33B: call cs:_invalid_parameter_noinfo_noreturn +18000E341: int 3; Trap to Debugger +18000E342: call j_j_free +18000E347: xorps xmm0, xmm0 +18000E34A: mov cs:Block, 0 +18000E355: movdqu cs:xmmword_180016068, xmm0 +18000E35D: add rsp, 28h +18000E361: retn + +### FUNC 18000E370 - 18000E3D2 (98 bytes) name=sub_18000E370 +18000E370: sub rsp, 28h +18000E374: mov rcx, cs:qword_180016000; Block +18000E37B: test rcx, rcx +18000E37E: jz short loc_18000E3CD +18000E380: mov rdx, qword ptr cs:xmmword_180016008+8 +18000E387: mov rax, rcx +18000E38A: sub rdx, rcx +18000E38D: cmp rdx, 1000h +18000E394: jb short loc_18000E3B2 +18000E396: mov rcx, [rcx-8] +18000E39A: add rdx, 27h ; ''' +18000E39E: sub rax, rcx +18000E3A1: add rax, 0FFFFFFFFFFFFFFF8h +18000E3A5: cmp rax, 1Fh +18000E3A9: jbe short loc_18000E3B2 +18000E3AB: call cs:_invalid_parameter_noinfo_noreturn +18000E3B1: int 3; Trap to Debugger +18000E3B2: call j_j_free +18000E3B7: xorps xmm0, xmm0 +18000E3BA: mov cs:qword_180016000, 0 +18000E3C5: movdqu cs:xmmword_180016008, xmm0 +18000E3CD: add rsp, 28h +18000E3D1: retn + +### FUNC 18000E3E0 - 18000E442 (98 bytes) name=sub_18000E3E0 +18000E3E0: sub rsp, 28h +18000E3E4: mov rcx, cs:qword_180016018; Block +18000E3EB: test rcx, rcx +18000E3EE: jz short loc_18000E43D +18000E3F0: mov rdx, qword ptr cs:xmmword_180016020+8 +18000E3F7: mov rax, rcx +18000E3FA: sub rdx, rcx +18000E3FD: cmp rdx, 1000h +18000E404: jb short loc_18000E422 +18000E406: mov rcx, [rcx-8] +18000E40A: add rdx, 27h ; ''' +18000E40E: sub rax, rcx +18000E411: add rax, 0FFFFFFFFFFFFFFF8h +18000E415: cmp rax, 1Fh +18000E419: jbe short loc_18000E422 +18000E41B: call cs:_invalid_parameter_noinfo_noreturn +18000E421: int 3; Trap to Debugger +18000E422: call j_j_free +18000E427: xorps xmm0, xmm0 +18000E42A: mov cs:qword_180016018, 0 +18000E435: movdqu cs:xmmword_180016020, xmm0 +18000E43D: add rsp, 28h +18000E441: retn + +### FUNC 18000E450 - 18000E4B2 (98 bytes) name=sub_18000E450 +18000E450: sub rsp, 28h +18000E454: mov rcx, cs:qword_180016090; Block +18000E45B: test rcx, rcx +18000E45E: jz short loc_18000E4AD +18000E460: mov rdx, qword ptr cs:xmmword_180016098+8 +18000E467: mov rax, rcx +18000E46A: sub rdx, rcx +18000E46D: cmp rdx, 1000h +18000E474: jb short loc_18000E492 +18000E476: mov rcx, [rcx-8] +18000E47A: add rdx, 27h ; ''' +18000E47E: sub rax, rcx +18000E481: add rax, 0FFFFFFFFFFFFFFF8h +18000E485: cmp rax, 1Fh +18000E489: jbe short loc_18000E492 +18000E48B: call cs:_invalid_parameter_noinfo_noreturn +18000E491: int 3; Trap to Debugger +18000E492: call j_j_free +18000E497: xorps xmm0, xmm0 +18000E49A: mov cs:qword_180016090, 0 +18000E4A5: movdqu cs:xmmword_180016098, xmm0 +18000E4AD: add rsp, 28h +18000E4B1: retn + +### FUNC 18000E4C0 - 18000E522 (98 bytes) name=sub_18000E4C0 +18000E4C0: sub rsp, 28h +18000E4C4: mov rcx, cs:qword_180016078; Block +18000E4CB: test rcx, rcx +18000E4CE: jz short loc_18000E51D +18000E4D0: mov rdx, qword ptr cs:xmmword_180016080+8 +18000E4D7: mov rax, rcx +18000E4DA: sub rdx, rcx +18000E4DD: cmp rdx, 1000h +18000E4E4: jb short loc_18000E502 +18000E4E6: mov rcx, [rcx-8] +18000E4EA: add rdx, 27h ; ''' +18000E4EE: sub rax, rcx +18000E4F1: add rax, 0FFFFFFFFFFFFFFF8h +18000E4F5: cmp rax, 1Fh +18000E4F9: jbe short loc_18000E502 +18000E4FB: call cs:_invalid_parameter_noinfo_noreturn +18000E501: int 3; Trap to Debugger +18000E502: call j_j_free +18000E507: xorps xmm0, xmm0 +18000E50A: mov cs:qword_180016078, 0 +18000E515: movdqu cs:xmmword_180016080, xmm0 +18000E51D: add rsp, 28h +18000E521: retn + +### FUNC 18000E530 - 18000E592 (98 bytes) name=sub_18000E530 +18000E530: sub rsp, 28h +18000E534: mov rcx, cs:qword_180016030; Block +18000E53B: test rcx, rcx +18000E53E: jz short loc_18000E58D +18000E540: mov rdx, qword ptr cs:xmmword_180016038+8 +18000E547: mov rax, rcx +18000E54A: sub rdx, rcx +18000E54D: cmp rdx, 1000h +18000E554: jb short loc_18000E572 +18000E556: mov rcx, [rcx-8] +18000E55A: add rdx, 27h ; ''' +18000E55E: sub rax, rcx +18000E561: add rax, 0FFFFFFFFFFFFFFF8h +18000E565: cmp rax, 1Fh +18000E569: jbe short loc_18000E572 +18000E56B: call cs:_invalid_parameter_noinfo_noreturn +18000E571: int 3; Trap to Debugger +18000E572: call j_j_free +18000E577: xorps xmm0, xmm0 +18000E57A: mov cs:qword_180016030, 0 +18000E585: movdqu cs:xmmword_180016038, xmm0 +18000E58D: add rsp, 28h +18000E591: retn + +### FUNC 18000E5A0 - 18000E602 (98 bytes) name=sub_18000E5A0 +18000E5A0: sub rsp, 28h +18000E5A4: mov rcx, cs:qword_1800160A8; Block +18000E5AB: test rcx, rcx +18000E5AE: jz short loc_18000E5FD +18000E5B0: mov rdx, qword ptr cs:xmmword_1800160B0+8 +18000E5B7: mov rax, rcx +18000E5BA: sub rdx, rcx +18000E5BD: cmp rdx, 1000h +18000E5C4: jb short loc_18000E5E2 +18000E5C6: mov rcx, [rcx-8] +18000E5CA: add rdx, 27h ; ''' +18000E5CE: sub rax, rcx +18000E5D1: add rax, 0FFFFFFFFFFFFFFF8h +18000E5D5: cmp rax, 1Fh +18000E5D9: jbe short loc_18000E5E2 +18000E5DB: call cs:_invalid_parameter_noinfo_noreturn +18000E5E1: int 3; Trap to Debugger +18000E5E2: call j_j_free +18000E5E7: xorps xmm0, xmm0 +18000E5EA: mov cs:qword_1800160A8, 0 +18000E5F5: movdqu cs:xmmword_1800160B0, xmm0 +18000E5FD: add rsp, 28h +18000E601: retn + +### FUNC 18000E610 - 18000E672 (98 bytes) name=sub_18000E610 +18000E610: sub rsp, 28h +18000E614: mov rcx, cs:qword_180016048; Block +18000E61B: test rcx, rcx +18000E61E: jz short loc_18000E66D +18000E620: mov rdx, qword ptr cs:xmmword_180016050+8 +18000E627: mov rax, rcx +18000E62A: sub rdx, rcx +18000E62D: cmp rdx, 1000h +18000E634: jb short loc_18000E652 +18000E636: mov rcx, [rcx-8] +18000E63A: add rdx, 27h ; ''' +18000E63E: sub rax, rcx +18000E641: add rax, 0FFFFFFFFFFFFFFF8h +18000E645: cmp rax, 1Fh +18000E649: jbe short loc_18000E652 +18000E64B: call cs:_invalid_parameter_noinfo_noreturn +18000E651: int 3; Trap to Debugger +18000E652: call j_j_free +18000E657: xorps xmm0, xmm0 +18000E65A: mov cs:qword_180016048, 0 +18000E665: movdqu cs:xmmword_180016050, xmm0 +18000E66D: add rsp, 28h +18000E671: retn + +### FUNC 18000E680 - 18000E6ED (109 bytes) name=sub_18000E680 +18000E680: sub rsp, 28h +18000E684: mov rdx, cs:qword_1800160D8 +18000E68B: cmp rdx, 8 +18000E68F: jb short loc_18000E6C6 +18000E691: mov rcx, cs:Src +18000E698: lea rdx, ds:2[rdx*2] +18000E6A0: cmp rdx, 1000h +18000E6A7: jb short loc_18000E6C1 +18000E6A9: mov r8, [rcx-8] +18000E6AD: add rdx, 27h ; ''' +18000E6B1: sub rcx, r8 +18000E6B4: lea rax, [rcx-8] +18000E6B8: cmp rax, 1Fh +18000E6BC: ja short loc_18000E6E6 +18000E6BE: mov rcx, r8; Block +18000E6C1: call j_j_free +18000E6C6: xor eax, eax +18000E6C8: mov cs:qword_1800160D8, 7 +18000E6D3: mov cs:qword_1800160D0, rax +18000E6DA: mov word ptr cs:Src, ax +18000E6E1: add rsp, 28h +18000E6E5: retn +18000E6E6: call cs:_invalid_parameter_noinfo_noreturn +18000E6EC: db 0CCh + +### FUNC 18000E6F0 - 18000E75A (106 bytes) name=sub_18000E6F0 +18000E6F0: sub rsp, 28h +18000E6F4: mov rdx, cs:qword_180015078 +18000E6FB: cmp rdx, 10h +18000E6FF: jb short loc_18000E738 +18000E701: mov rcx, cs:qword_180015060; Block +18000E708: inc rdx +18000E70B: mov rax, rcx +18000E70E: cmp rdx, 1000h +18000E715: jb short loc_18000E733 +18000E717: mov rcx, [rcx-8] +18000E71B: add rdx, 27h ; ''' +18000E71F: sub rax, rcx +18000E722: add rax, 0FFFFFFFFFFFFFFF8h +18000E726: cmp rax, 1Fh +18000E72A: jbe short loc_18000E733 +18000E72C: call cs:_invalid_parameter_noinfo_noreturn +18000E732: int 3; Trap to Debugger +18000E733: call j_j_free +18000E738: mov cs:qword_180015070, 0 +18000E743: mov cs:qword_180015078, 0Fh +18000E74E: mov byte ptr cs:qword_180015060, 0 +18000E755: add rsp, 28h +18000E759: retn + +### FUNC 18000E760 - 18000E7CA (106 bytes) name=sub_18000E760 +18000E760: sub rsp, 28h +18000E764: mov rdx, cs:qword_1800150B8 +18000E76B: cmp rdx, 10h +18000E76F: jb short loc_18000E7A8 +18000E771: mov rcx, cs:qword_1800150A0; Block +18000E778: inc rdx +18000E77B: mov rax, rcx +18000E77E: cmp rdx, 1000h +18000E785: jb short loc_18000E7A3 +18000E787: mov rcx, [rcx-8] +18000E78B: add rdx, 27h ; ''' +18000E78F: sub rax, rcx +18000E792: add rax, 0FFFFFFFFFFFFFFF8h +18000E796: cmp rax, 1Fh +18000E79A: jbe short loc_18000E7A3 +18000E79C: call cs:_invalid_parameter_noinfo_noreturn +18000E7A2: int 3; Trap to Debugger +18000E7A3: call j_j_free +18000E7A8: mov cs:qword_1800150B0, 0 +18000E7B3: mov cs:qword_1800150B8, 0Fh +18000E7BE: mov byte ptr cs:qword_1800150A0, 0 +18000E7C5: add rsp, 28h +18000E7C9: retn + +### FUNC 18000E7D0 - 18000E83A (106 bytes) name=sub_18000E7D0 +18000E7D0: sub rsp, 28h +18000E7D4: mov rdx, cs:qword_1800151F8 +18000E7DB: cmp rdx, 10h +18000E7DF: jb short loc_18000E818 +18000E7E1: mov rcx, cs:qword_1800151E0; Block +18000E7E8: inc rdx +18000E7EB: mov rax, rcx +18000E7EE: cmp rdx, 1000h +18000E7F5: jb short loc_18000E813 +18000E7F7: mov rcx, [rcx-8] +18000E7FB: add rdx, 27h ; ''' +18000E7FF: sub rax, rcx +18000E802: add rax, 0FFFFFFFFFFFFFFF8h +18000E806: cmp rax, 1Fh +18000E80A: jbe short loc_18000E813 +18000E80C: call cs:_invalid_parameter_noinfo_noreturn +18000E812: int 3; Trap to Debugger +18000E813: call j_j_free +18000E818: mov cs:qword_1800151F0, 0 +18000E823: mov cs:qword_1800151F8, 0Fh +18000E82E: mov byte ptr cs:qword_1800151E0, 0 +18000E835: add rsp, 28h +18000E839: retn + +### FUNC 18000E840 - 18000E8AA (106 bytes) name=sub_18000E840 +18000E840: sub rsp, 28h +18000E844: mov rdx, cs:qword_180015198 +18000E84B: cmp rdx, 10h +18000E84F: jb short loc_18000E888 +18000E851: mov rcx, cs:qword_180015180; Block +18000E858: inc rdx +18000E85B: mov rax, rcx +18000E85E: cmp rdx, 1000h +18000E865: jb short loc_18000E883 +18000E867: mov rcx, [rcx-8] +18000E86B: add rdx, 27h ; ''' +18000E86F: sub rax, rcx +18000E872: add rax, 0FFFFFFFFFFFFFFF8h +18000E876: cmp rax, 1Fh +18000E87A: jbe short loc_18000E883 +18000E87C: call cs:_invalid_parameter_noinfo_noreturn +18000E882: int 3; Trap to Debugger +18000E883: call j_j_free +18000E888: mov cs:qword_180015190, 0 +18000E893: mov cs:qword_180015198, 0Fh +18000E89E: mov byte ptr cs:qword_180015180, 0 +18000E8A5: add rsp, 28h +18000E8A9: retn + +### FUNC 18000E8B0 - 18000E91A (106 bytes) name=sub_18000E8B0 +18000E8B0: sub rsp, 28h +18000E8B4: mov rdx, cs:qword_1800150F8 +18000E8BB: cmp rdx, 10h +18000E8BF: jb short loc_18000E8F8 +18000E8C1: mov rcx, cs:qword_1800150E0; Block +18000E8C8: inc rdx +18000E8CB: mov rax, rcx +18000E8CE: cmp rdx, 1000h +18000E8D5: jb short loc_18000E8F3 +18000E8D7: mov rcx, [rcx-8] +18000E8DB: add rdx, 27h ; ''' +18000E8DF: sub rax, rcx +18000E8E2: add rax, 0FFFFFFFFFFFFFFF8h +18000E8E6: cmp rax, 1Fh +18000E8EA: jbe short loc_18000E8F3 +18000E8EC: call cs:_invalid_parameter_noinfo_noreturn +18000E8F2: int 3; Trap to Debugger +18000E8F3: call j_j_free +18000E8F8: mov cs:qword_1800150F0, 0 +18000E903: mov cs:qword_1800150F8, 0Fh +18000E90E: mov byte ptr cs:qword_1800150E0, 0 +18000E915: add rsp, 28h +18000E919: retn + +### FUNC 18000E920 - 18000E98A (106 bytes) name=sub_18000E920 +18000E920: sub rsp, 28h +18000E924: mov rdx, cs:qword_180015178 +18000E92B: cmp rdx, 10h +18000E92F: jb short loc_18000E968 +18000E931: mov rcx, cs:qword_180015160; Block +18000E938: inc rdx +18000E93B: mov rax, rcx +18000E93E: cmp rdx, 1000h +18000E945: jb short loc_18000E963 +18000E947: mov rcx, [rcx-8] +18000E94B: add rdx, 27h ; ''' +18000E94F: sub rax, rcx +18000E952: add rax, 0FFFFFFFFFFFFFFF8h +18000E956: cmp rax, 1Fh +18000E95A: jbe short loc_18000E963 +18000E95C: call cs:_invalid_parameter_noinfo_noreturn +18000E962: int 3; Trap to Debugger +18000E963: call j_j_free +18000E968: mov cs:qword_180015170, 0 +18000E973: mov cs:qword_180015178, 0Fh +18000E97E: mov byte ptr cs:qword_180015160, 0 +18000E985: add rsp, 28h +18000E989: retn + +### FUNC 18000E990 - 18000E9FA (106 bytes) name=sub_18000E990 +18000E990: sub rsp, 28h +18000E994: mov rdx, cs:qword_1800151D8 +18000E99B: cmp rdx, 10h +18000E99F: jb short loc_18000E9D8 +18000E9A1: mov rcx, cs:qword_1800151C0; Block +18000E9A8: inc rdx +18000E9AB: mov rax, rcx +18000E9AE: cmp rdx, 1000h +18000E9B5: jb short loc_18000E9D3 +18000E9B7: mov rcx, [rcx-8] +18000E9BB: add rdx, 27h ; ''' +18000E9BF: sub rax, rcx +18000E9C2: add rax, 0FFFFFFFFFFFFFFF8h +18000E9C6: cmp rax, 1Fh +18000E9CA: jbe short loc_18000E9D3 +18000E9CC: call cs:_invalid_parameter_noinfo_noreturn +18000E9D2: int 3; Trap to Debugger +18000E9D3: call j_j_free +18000E9D8: mov cs:qword_1800151D0, 0 +18000E9E3: mov cs:qword_1800151D8, 0Fh +18000E9EE: mov byte ptr cs:qword_1800151C0, 0 +18000E9F5: add rsp, 28h +18000E9F9: retn + +### FUNC 18000EA00 - 18000EA6A (106 bytes) name=sub_18000EA00 +18000EA00: sub rsp, 28h +18000EA04: mov rdx, cs:qword_180015138 +18000EA0B: cmp rdx, 10h +18000EA0F: jb short loc_18000EA48 +18000EA11: mov rcx, cs:qword_180015120; Block +18000EA18: inc rdx +18000EA1B: mov rax, rcx +18000EA1E: cmp rdx, 1000h +18000EA25: jb short loc_18000EA43 +18000EA27: mov rcx, [rcx-8] +18000EA2B: add rdx, 27h ; ''' +18000EA2F: sub rax, rcx +18000EA32: add rax, 0FFFFFFFFFFFFFFF8h +18000EA36: cmp rax, 1Fh +18000EA3A: jbe short loc_18000EA43 +18000EA3C: call cs:_invalid_parameter_noinfo_noreturn +18000EA42: int 3; Trap to Debugger +18000EA43: call j_j_free +18000EA48: mov cs:qword_180015130, 0 +18000EA53: mov cs:qword_180015138, 0Fh +18000EA5E: mov byte ptr cs:qword_180015120, 0 +18000EA65: add rsp, 28h +18000EA69: retn + +### FUNC 18000EA70 - 18000EADA (106 bytes) name=sub_18000EA70 +18000EA70: sub rsp, 28h +18000EA74: mov rdx, cs:qword_1800150D8 +18000EA7B: cmp rdx, 10h +18000EA7F: jb short loc_18000EAB8 +18000EA81: mov rcx, cs:qword_1800150C0; Block +18000EA88: inc rdx +18000EA8B: mov rax, rcx +18000EA8E: cmp rdx, 1000h +18000EA95: jb short loc_18000EAB3 +18000EA97: mov rcx, [rcx-8] +18000EA9B: add rdx, 27h ; ''' +18000EA9F: sub rax, rcx +18000EAA2: add rax, 0FFFFFFFFFFFFFFF8h +18000EAA6: cmp rax, 1Fh +18000EAAA: jbe short loc_18000EAB3 +18000EAAC: call cs:_invalid_parameter_noinfo_noreturn +18000EAB2: int 3; Trap to Debugger +18000EAB3: call j_j_free +18000EAB8: mov cs:qword_1800150D0, 0 +18000EAC3: mov cs:qword_1800150D8, 0Fh +18000EACE: mov byte ptr cs:qword_1800150C0, 0 +18000EAD5: add rsp, 28h +18000EAD9: retn + +### FUNC 18000EAE0 - 18000EB4A (106 bytes) name=sub_18000EAE0 +18000EAE0: sub rsp, 28h +18000EAE4: mov rdx, cs:qword_180015158 +18000EAEB: cmp rdx, 10h +18000EAEF: jb short loc_18000EB28 +18000EAF1: mov rcx, cs:qword_180015140; Block +18000EAF8: inc rdx +18000EAFB: mov rax, rcx +18000EAFE: cmp rdx, 1000h +18000EB05: jb short loc_18000EB23 +18000EB07: mov rcx, [rcx-8] +18000EB0B: add rdx, 27h ; ''' +18000EB0F: sub rax, rcx +18000EB12: add rax, 0FFFFFFFFFFFFFFF8h +18000EB16: cmp rax, 1Fh +18000EB1A: jbe short loc_18000EB23 +18000EB1C: call cs:_invalid_parameter_noinfo_noreturn +18000EB22: int 3; Trap to Debugger +18000EB23: call j_j_free +18000EB28: mov cs:qword_180015150, 0 +18000EB33: mov cs:qword_180015158, 0Fh +18000EB3E: mov byte ptr cs:qword_180015140, 0 +18000EB45: add rsp, 28h +18000EB49: retn + +### FUNC 18000EB50 - 18000EBBA (106 bytes) name=sub_18000EB50 +18000EB50: sub rsp, 28h +18000EB54: mov rdx, cs:qword_180015118 +18000EB5B: cmp rdx, 10h +18000EB5F: jb short loc_18000EB98 +18000EB61: mov rcx, cs:qword_180015100; Block +18000EB68: inc rdx +18000EB6B: mov rax, rcx +18000EB6E: cmp rdx, 1000h +18000EB75: jb short loc_18000EB93 +18000EB77: mov rcx, [rcx-8] +18000EB7B: add rdx, 27h ; ''' +18000EB7F: sub rax, rcx +18000EB82: add rax, 0FFFFFFFFFFFFFFF8h +18000EB86: cmp rax, 1Fh +18000EB8A: jbe short loc_18000EB93 +18000EB8C: call cs:_invalid_parameter_noinfo_noreturn +18000EB92: int 3; Trap to Debugger +18000EB93: call j_j_free +18000EB98: mov cs:qword_180015110, 0 +18000EBA3: mov cs:qword_180015118, 0Fh +18000EBAE: mov byte ptr cs:qword_180015100, 0 +18000EBB5: add rsp, 28h +18000EBB9: retn + +### FUNC 18000EBC0 - 18000EC2A (106 bytes) name=sub_18000EBC0 +18000EBC0: sub rsp, 28h +18000EBC4: mov rdx, cs:qword_1800151B8 +18000EBCB: cmp rdx, 10h +18000EBCF: jb short loc_18000EC08 +18000EBD1: mov rcx, cs:qword_1800151A0; Block +18000EBD8: inc rdx +18000EBDB: mov rax, rcx +18000EBDE: cmp rdx, 1000h +18000EBE5: jb short loc_18000EC03 +18000EBE7: mov rcx, [rcx-8] +18000EBEB: add rdx, 27h ; ''' +18000EBEF: sub rax, rcx +18000EBF2: add rax, 0FFFFFFFFFFFFFFF8h +18000EBF6: cmp rax, 1Fh +18000EBFA: jbe short loc_18000EC03 +18000EBFC: call cs:_invalid_parameter_noinfo_noreturn +18000EC02: int 3; Trap to Debugger +18000EC03: call j_j_free +18000EC08: mov cs:qword_1800151B0, 0 +18000EC13: mov cs:qword_1800151B8, 0Fh +18000EC1E: mov byte ptr cs:qword_1800151A0, 0 +18000EC25: add rsp, 28h +18000EC29: retn + +### FUNC 18000EC30 - 18000EC9A (106 bytes) name=sub_18000EC30 +18000EC30: sub rsp, 28h +18000EC34: mov rdx, cs:qword_180015058 +18000EC3B: cmp rdx, 10h +18000EC3F: jb short loc_18000EC78 +18000EC41: mov rcx, cs:qword_180015040; Block +18000EC48: inc rdx +18000EC4B: mov rax, rcx +18000EC4E: cmp rdx, 1000h +18000EC55: jb short loc_18000EC73 +18000EC57: mov rcx, [rcx-8] +18000EC5B: add rdx, 27h ; ''' +18000EC5F: sub rax, rcx +18000EC62: add rax, 0FFFFFFFFFFFFFFF8h +18000EC66: cmp rax, 1Fh +18000EC6A: jbe short loc_18000EC73 +18000EC6C: call cs:_invalid_parameter_noinfo_noreturn +18000EC72: int 3; Trap to Debugger +18000EC73: call j_j_free +18000EC78: mov cs:qword_180015050, 0 +18000EC83: mov cs:qword_180015058, 0Fh +18000EC8E: mov byte ptr cs:qword_180015040, 0 +18000EC95: add rsp, 28h +18000EC99: retn + +### FUNC 18000ECA0 - 18000ED0A (106 bytes) name=sub_18000ECA0 +18000ECA0: sub rsp, 28h +18000ECA4: mov rdx, cs:qword_180015098 +18000ECAB: cmp rdx, 10h +18000ECAF: jb short loc_18000ECE8 +18000ECB1: mov rcx, cs:qword_180015080; Block +18000ECB8: inc rdx +18000ECBB: mov rax, rcx +18000ECBE: cmp rdx, 1000h +18000ECC5: jb short loc_18000ECE3 +18000ECC7: mov rcx, [rcx-8] +18000ECCB: add rdx, 27h ; ''' +18000ECCF: sub rax, rcx +18000ECD2: add rax, 0FFFFFFFFFFFFFFF8h +18000ECD6: cmp rax, 1Fh +18000ECDA: jbe short loc_18000ECE3 +18000ECDC: call cs:_invalid_parameter_noinfo_noreturn +18000ECE2: int 3; Trap to Debugger +18000ECE3: call j_j_free +18000ECE8: mov cs:Size, 0 +18000ECF3: mov cs:qword_180015098, 0Fh +18000ECFE: mov byte ptr cs:qword_180015080, 0 +18000ED05: add rsp, 28h +18000ED09: retn + diff --git a/analysis/ida/export/thermalsdk_so/all_functions.txt b/analysis/ida/export/thermalsdk_so/all_functions.txt new file mode 100644 index 0000000..0dbdc42 --- /dev/null +++ b/analysis/ida/export/thermalsdk_so/all_functions.txt @@ -0,0 +1,5151 @@ +0008BCF8 0008BD12 .init_proc +0008BD20 0008BD2C sub_8BD20 +0008BD30 0008BD36 ._ZNSt6vectorIhSaIhEE15_M_range_insertIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St20forward_iterator_tag +0008BD40 0008BD46 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +0008BD50 0008BD56 .MAG_Initialize +0008BD60 0008BD66 ._ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv +0008BD70 0008BD76 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EEC2Ev +0008BD80 0008BD86 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE17is_number_integerEv +0008BD90 0008BD96 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhEET0_T_SC_SB_ +0008BDA0 0008BDA6 ._ZN17ThermalController10isIROpenedEv +0008BDB0 0008BDB6 ._ZSt3getILm1EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008BDC0 0008BDC6 ._ZNKSt6vectorISsSaISsEE12_M_check_lenEmPKc +0008BDD0 0008BDD6 ._ZNSt12_Vector_baseISsSaISsEED2Ev +0008BDE0 0008BDE6 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +0008BDF0 0008BDF6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJDnEEEvDpOT_ +0008BE00 0008BE06 ._ZN8nlohmann6detail20external_constructorILNS0_7value_tE3EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_RKNSC_8string_tE +0008BE10 0008BE16 ._ZNKSt8__detail10_Select1stclIRSt4pairIKSsiEEEDTcl3getILi0EEcl7forwardIT_Efp_EEEOS6_ +0008BE20 0008BE26 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSC_EEEvPT_DpOT0_ +0008BE30 0008BE36 ._ZNSt11char_traitsIcE7compareEPKcS2_m +0008BE40 0008BE46 ._ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm +0008BE50 0008BE56 ._ZSt8distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_ +0008BE60 0008BE66 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKSsLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008BE70 0008BE76 ._ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IKS1_EEOT_ +0008BE80 0008BE86 .MAG_SetDetailEnhancement +0008BE90 0008BE96 ._ZNSt11_Deque_baseIcSaIcEE16_M_destroy_nodesEPPcS3_ +0008BEA0 0008BEA6 ._ZN13TCMPresetData10setOffsetXEi +0008BEB0 0008BEB6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_ +0008BEC0 0008BEC6 ._ZN10SerialPort8openPortERKSsj +0008BED0 0008BED6 ._ZNSt12_Vector_baseISsSaISsEE12_Vector_implD2Ev +0008BEE0 0008BEE6 ._ZNSs6appendEPKcm +0008BEF0 0008BEF6 ._ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +0008BF00 0008BF06 ._ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev +0008BF10 0008BF16 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +0008BF20 0008BF26 ._ZN9__gnu_cxx13new_allocatorIhE8allocateEmPKv +0008BF30 0008BF36 ._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim +0008BF40 0008BF46 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB_ +0008BF50 0008BF56 ._ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE +0008BF60 0008BF66 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_St8functionIFbiNS0_13parse_event_tERS8_EEbb +0008BF70 0008BF76 ._ZSt32__make_move_if_noexcept_iteratorIPN6serial8PortInfoESt13move_iteratorIS2_EET0_T_ +0008BF80 0008BF86 ._ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E +0008BF90 0008BF96 ._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2IKS1_JEvEEOT_DpOT0_ +0008BFA0 0008BFA6 ._ZNSt10_Head_baseILm0EOSsLb0EEC2ISsEEOT_ +0008BFB0 0008BFB6 ._ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEC2ERKS3_ +0008BFC0 0008BFC6 ._ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +0008BFD0 0008BFD6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv +0008BFE0 0008BFE6 ._ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2Ev +0008BFF0 0008BFF6 ._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv +0008C000 0008C006 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEED2Ev +0008C010 0008C016 ._ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_ +0008C020 0008C026 ._ZN18IProximityDelegateC2Ev +0008C030 0008C036 ._ZNSt12_Destroy_auxILb1EE9__destroyIPP16TCMVirtualDeviceEEvT_S5_ +0008C040 0008C046 .tcsetattr +0008C050 0008C056 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS7_ +0008C060 0008C066 ._ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +0008C070 0008C076 ._ZSt20__throw_length_errorPKc +0008C080 0008C086 ._ZSt3minIjERKT_S2_S2_ +0008C090 0008C096 ._ZNSt16allocator_traitsISaISsEE12_S_constructISsJRA1_KcEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS8_DpOS9_ +0008C0A0 0008C0A6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE4scanEv +0008C0B0 0008C0B6 ._ZNSsaSEPKc +0008C0C0 0008C0C6 ._ZSt12__miter_baseISt19_Bit_const_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +0008C0D0 0008C0D6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E +0008C0E0 0008C0E6 ._ZN11FTDICommand4initEhhRKSt6vectorIhSaIhEEi +0008C0F0 0008C0F6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +0008C100 0008C106 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS7_ +0008C110 0008C116 ._ZN17ThermalController12getTCMDeviceEv +0008C120 0008C126 ._ZN6serial6Serial10SerialImplC2ERKSsmNS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +0008C130 0008C136 ._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +0008C140 0008C146 ._ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv +0008C150 0008C156 ._ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev +0008C160 0008C166 ._ZN14EloMotorDevice21setLimitEventListenerEP11ILimitEvent +0008C170 0008C176 ._ZNSsC1Ev +0008C180 0008C186 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +0008C190 0008C196 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEEC2Ev +0008C1A0 0008C1A6 ._ZNKSt6vectorISsSaISsEE8max_sizeEv +0008C1B0 0008C1B6 ._ZNSt6thread4swapERS_ +0008C1C0 0008C1C6 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +0008C1D0 0008C1D6 ._ZSt12__miter_baseISt13move_iteratorIPP16TCMVirtualDeviceEENSt11_Miter_baseIT_E13iterator_typeES6_ +0008C1E0 0008C1E6 ._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPhS1_EEEES5_mT_S7_ +0008C1F0 0008C1F6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5beginEv +0008C200 0008C206 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSI_ +0008C210 0008C216 ._ZNSt11_Deque_baseIcSaIcEEC2Ev +0008C220 0008C226 ._ZN9__gnu_cxx13new_allocatorISsE9constructISsJRKSsEEEvPT_DpOT0_ +0008C230 0008C236 ._ZNSt15_Deque_iteratorIcRcPcEpLEl +0008C240 0008C246 .printf +0008C250 0008C256 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5eraseB5cxx11ESt17_Rb_tree_iteratorISA_E +0008C260 0008C266 ._ZNSt10_Iter_baseIPKhLb0EE7_S_baseES1_ +0008C270 0008C276 ._ZNK6serial6Serial10SerialImpl11getStopbitsEv +0008C280 0008C286 ._ZN9__gnu_cxx11char_traitsIhE3eofEv +0008C290 0008C296 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JRKS9_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSF_ +0008C2A0 0008C2A6 ._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008C2B0 0008C2B6 ._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +0008C2C0 0008C2C6 ._ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_ +0008C2D0 0008C2D6 ._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv +0008C2E0 0008C2E6 ._ZNSt10_Head_baseILm0EPSsLb0EEC2IRS0_EEOT_ +0008C2F0 0008C2F6 ._ZNSt5arrayIhLm5EE4dataEv +0008C300 0008C306 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5clearEv +0008C310 0008C316 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +0008C320 0008C326 ._ZSt32__make_move_if_noexcept_iteratorIPP16TCMVirtualDeviceSt13move_iteratorIS2_EET0_T_ +0008C330 0008C336 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5parseEbRS8_ +0008C340 0008C346 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EED2Ev +0008C350 0008C356 ._ZN8nlohmann6detail9exceptionC2EiPKc +0008C360 0008C366 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +0008C370 0008C376 ._ZNSaIcED2Ev +0008C380 0008C386 ._ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +0008C390 0008C396 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E +0008C3A0 0008C3A6 ._ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_ +0008C3B0 0008C3B6 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2Ev +0008C3C0 0008C3C6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv +0008C3D0 0008C3D6 ._ZN16TCMVirtualDevice16setFrameDelegateEP16TCMFrameDelegate +0008C3E0 0008C3E6 ._ZNSt6vectorISsSaISsEE12emplace_backIJSsEEEvDpOT_ +0008C3F0 0008C3F6 .MAG_SetEXLevel +0008C400 0008C406 ._ZN9__gnu_cxx14__alloc_traitsISaIhEE17_S_select_on_copyERKS1_ +0008C410 0008C416 ._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEbLi0EEEvRT_T0_ +0008C420 0008C426 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2ERKSD_ +0008C430 0008C436 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE15skip_whitespaceEv +0008C440 0008C446 ._ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET1_T0_S8_S7_ +0008C450 0008C456 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJRKS7_EEEvDpOT_ +0008C460 0008C466 ._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +0008C470 0008C476 ._ZN10CMagDevice8IsLinkedEv +0008C480 0008C486 ._ZNSolsEi +0008C490 0008C496 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EED2Ev +0008C4A0 0008C4A6 ._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008C4B0 0008C4B6 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev +0008C4C0 0008C4C6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv +0008C4D0 0008C4D6 ._ZN9__gnu_cxx14__alloc_traitsISaIhEE27_S_propagate_on_copy_assignEv +0008C4E0 0008C4E6 ._ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_ +0008C4F0 0008C4F6 ._ZSt9__advanceIPKhlEvRT_T0_St26random_access_iterator_tag +0008C500 0008C506 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EE7_M_headERSI_ +0008C510 0008C516 ._ZSt34__uninitialized_move_if_noexcept_aIPiS0_SaIiEET0_T_S3_S2_RT1_ +0008C520 0008C526 ._ZSt3getILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008C530 0008C536 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +0008C540 0008C546 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_ +0008C550 0008C556 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISR_E4typeE +0008C560 0008C566 ._ZNSspLEPKc +0008C570 0008C576 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +0008C580 0008C586 ._ZSt4moveIRSt11_Tuple_implILm1EJP10SerialPortEEEONSt16remove_referenceIT_E4typeEOS6_ +0008C590 0008C596 ._ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +0008C5A0 0008C5A6 .memset +0008C5B0 0008C5B6 ._ZNSt12_Destroy_auxILb1EE9__destroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SC_ +0008C5C0 0008C5C6 ._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +0008C5D0 0008C5D6 ._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSJ_ +0008C5E0 0008C5E6 ._ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev +0008C5F0 0008C5F6 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +0008C600 0008C606 ._ZN16ThermalTCMDeviceC2Ev +0008C610 0008C616 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE8allocateERS6_m +0008C620 0008C626 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev +0008C630 0008C636 ._ZNSt11_Deque_baseIcSaIcEE11_Deque_implD2Ev +0008C640 0008C646 ._ZN19EloTCMUpdaterDeviceD2Ev +0008C650 0008C656 ._ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS7_EEEEvEEOS_IT_E +0008C660 0008C666 ._ZNSt9exceptionC2ERKS_ +0008C670 0008C676 ._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERSI_ +0008C680 0008C686 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2Ev +0008C690 0008C696 .snprintf +0008C6A0 0008C6A6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2ERKSE_RKSaISt13_Rb_tree_nodeISA_EE +0008C6B0 0008C6B6 ._ZSt11__addressofIcEPT_RS0_ +0008C6C0 0008C6C6 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EC2ESN_RKSO_ +0008C6D0 0008C6D6 ._ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm +0008C6E0 0008C6E6 ._ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERKS7_ +0008C6F0 0008C6F6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJRKS9_EEEPT_DpOT0_ +0008C700 0008C706 ._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSB_EEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSK_DpOSL_ +0008C710 0008C716 ._ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EE7_M_headERS2_ +0008C720 0008C726 ._ZNSs5clearEv +0008C730 0008C736 ._ZNKSt4lessISsEclERKSsS2_ +0008C740 0008C746 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +0008C750 0008C756 ._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8allocateEmPKv +0008C760 0008C766 ._ZNK9__gnu_cxx13new_allocatorI19struct_TerminalListE8max_sizeEv +0008C770 0008C776 ._ZSt15__alloc_on_copyISaIhEEvRT_RKS1_ +0008C780 0008C786 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSI_ +0008C790 0008C796 ._ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +0008C7A0 0008C7A6 .MAG_GetCameraTemperature +0008C7B0 0008C7B6 ._ZN8nlohmann6detail20primitive_iterator_t9set_beginEv +0008C7C0 0008C7C6 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEED2Ev +0008C7D0 0008C7D6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +0008C7E0 0008C7E6 ._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +0008C7F0 0008C7F6 ._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEEC2Ev +0008C800 0008C806 ._ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2ERKSC_ +0008C810 0008C816 ._ZSt4moveIRN6serial8PortInfoEEONSt16remove_referenceIT_E4typeEOS4_ +0008C820 0008C826 ._ZSt11__addressofISsEPT_RS0_ +0008C830 0008C836 ._ZSt13__bind_simpleIM21EloTCMHeartBeatDeviceFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +0008C840 0008C846 ._ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2Ev +0008C850 0008C856 ._ZN13TCMPresetDataC2Ev +0008C860 0008C866 ._ZNSt11_Tuple_implILm0EJOSsEE7_M_headERS1_ +0008C870 0008C876 ._ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_ +0008C880 0008C886 ._ZNSt5dequeIcSaIcEE12emplace_backIJcEEEvDpOT_ +0008C890 0008C896 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEclEv +0008C8A0 0008C8A6 ._ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +0008C8B0 0008C8B6 ._ZN6serial6Serial10SerialImplD2Ev +0008C8C0 0008C8C6 ._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEED2Ev +0008C8D0 0008C8D6 ._ZNSt13move_iteratorIPN6serial8PortInfoEEC2ES2_ +0008C8E0 0008C8E6 ._ZN6serial6Serial10SerialImpl10flushInputEv +0008C8F0 0008C8F6 ._ZSt4moveIRSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEONSt16remove_referenceIT_E4typeEOS7_ +0008C900 0008C906 ._ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE +0008C910 0008C916 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +0008C920 0008C926 ._ZNKSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +0008C930 0008C936 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getIiiLi0EEET0_v +0008C940 0008C946 ._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJOSsEESG_IJEEEEEDpOT_ +0008C950 0008C956 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4typeEv +0008C960 0008C966 ._ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +0008C970 0008C976 ._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE4sizeEv +0008C980 0008C986 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv +0008C990 0008C996 ._ZNKSt18_Bit_iterator_baseeqERKS_ +0008C9A0 0008C9A6 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_ED2Ev +0008C9B0 0008C9B6 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv +0008C9C0 0008C9C6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_b +0008C9D0 0008C9D6 ._ZNSt16allocator_traitsISaIhEE12_S_constructIhJhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +0008C9E0 0008C9E6 ._ZN11FTDICommand8getExtraEv +0008C9F0 0008C9F6 ._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008CA00 0008CA06 .close +0008CA10 0008CA16 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008CA20 0008CA26 ._ZN17ThermalController14getCurrentTimeEv +0008CA30 0008CA36 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_b +0008CA40 0008CA46 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_ +0008CA50 0008CA56 ._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +0008CA60 0008CA66 ._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSM_EvEEOSH_SL_ +0008CA70 0008CA76 ._ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt20back_insert_iteratorIS3_IS7_SaIS7_EEEET1_T0_SE_SD_ +0008CA80 0008CA86 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +0008CA90 0008CA96 ._ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EE7_M_headERS5_ +0008CAA0 0008CAA6 ._ZN21EloTCMHeartBeatDevice10startCheckEv +0008CAB0 0008CAB6 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m +0008CAC0 0008CAC6 ._ZSt12__get_helperILm1EP21EloTCMHeartBeatDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +0008CAD0 0008CAD6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +0008CAE0 0008CAE6 ._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +0008CAF0 0008CAF6 ._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEE4swapERSC_ +0008CB00 0008CB06 ._ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv +0008CB10 0008CB16 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implD2Ev +0008CB20 0008CB26 ._ZSt14__copy_move_a2ILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +0008CB30 0008CB36 ._ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS7_EEEEvEEOS_IT_E +0008CB40 0008CB46 ._ZNSt11_Deque_baseIcSaIcEE16_M_allocate_nodeEv +0008CB50 0008CB56 ._ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_ +0008CB60 0008CB66 ._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008CB70 0008CB76 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKS7_RKS3_ +0008CB80 0008CB86 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE3endEv +0008CB90 0008CB96 .MAG_Free +0008CBA0 0008CBA6 ._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListED2Ev +0008CBB0 0008CBB6 ._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +0008CBC0 0008CBC6 .ioctl +0008CBD0 0008CBD6 ._ZNSt12_Vector_baseIiSaIiEED2Ev +0008CBE0 0008CBE6 ._ZNSt6vectorISsSaISsEEixEm +0008CBF0 0008CBF6 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRmEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008CC00 0008CC06 ._ZNSt14__array_traitsIcLm9EE6_S_refERA9_Kcm +0008CC10 0008CC16 ._ZN11CMagService10InitializeEv +0008CC20 0008CC26 ._ZNSt11_Deque_baseIcSaIcEE15_M_create_nodesEPPcS3_ +0008CC30 0008CC36 ._ZNSt5mutex4lockEv +0008CC40 0008CC46 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +0008CC50 0008CC56 ._ZN6serial6Serial4openEv +0008CC60 0008CC66 ._ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8key_compEv +0008CC70 0008CC76 ._ZSt4moveIRSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +0008CC80 0008CC86 ._ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +0008CC90 0008CC96 ._ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008CCA0 0008CCA6 ._ZNSt10_Iter_baseIP19struct_TerminalListLb0EE7_S_baseES1_ +0008CCB0 0008CCB6 ._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERSP_ +0008CCC0 0008CCC6 ._ZN6serial6Serial10SerialImpl9sendBreakEi +0008CCD0 0008CCD6 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +0008CCE0 0008CCE6 ._ZNK9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +0008CCF0 0008CCF6 ._ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv +0008CD00 0008CD06 ._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008CD10 0008CD16 ._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +0008CD20 0008CD26 ._ZNSt6vectorIhSaIhEE5clearEv +0008CD30 0008CD36 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5itemsEv +0008CD40 0008CD46 ._ZNSt6vectorIhSaIhEED2Ev +0008CD50 0008CD56 ._ZSt13__copy_move_aILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +0008CD60 0008CD66 ._ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8max_sizeEv +0008CD70 0008CD76 ._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_ +0008CD80 0008CD86 .MAG_GetSenorTemperature +0008CD90 0008CD96 ._ZSt4copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +0008CDA0 0008CDA6 ._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEPT_PKSC_SF_SD_ +0008CDB0 0008CDB6 ._ZSt4swapINSt6thread2idEEvRT_S3_ +0008CDC0 0008CDC6 ._ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +0008CDD0 0008CDD6 .MAG_PrepareProcessImage +0008CDE0 0008CDE6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +0008CDF0 0008CDF6 ._ZN13TCMPresetData10getOffsetXEv +0008CE00 0008CE06 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EC2ESL_RKSM_ +0008CE10 0008CE16 ._ZNSt16allocator_traitsISaISsEE8max_sizeERKS0_ +0008CE20 0008CE26 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEcvNS_6detail7value_tEEv +0008CE30 0008CE36 ._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv +0008CE40 0008CE46 ._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSA_EEEDpOT_ +0008CE50 0008CE56 .clock_gettime +0008CE60 0008CE66 ._ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm +0008CE70 0008CE76 ._ZNKSt6vectorIiSaIiEE4sizeEv +0008CE80 0008CE86 ._ZN17ThermalController9hasPresetEv +0008CE90 0008CE96 ._ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE +0008CEA0 0008CEA6 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +0008CEB0 0008CEB6 ._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +0008CEC0 0008CEC6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRmEEEvDpOT_ +0008CED0 0008CED6 ._ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +0008CEE0 0008CEE6 ._ZN9IDataCommC2Ev +0008CEF0 0008CEF6 ._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERSN_ +0008CF00 0008CF06 ._ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSI_vEEOSD_OT0_ +0008CF10 0008CF16 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +0008CF20 0008CF26 ._ZNSaISsED2Ev +0008CF30 0008CF36 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKm +0008CF40 0008CF46 ._ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +0008CF50 0008CF56 ._ZNSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +0008CF60 0008CF66 ._ZNKSt16initializer_listIKjE5beginEv +0008CF70 0008CF76 ._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE19get_number_unsignedEv +0008CF80 0008CF86 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JEEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSF_DpOSG_ +0008CF90 0008CF96 ._ZNSsC1EPKcmRKSaIcE +0008CFA0 0008CFA6 ._ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC2ERKS2_ +0008CFB0 0008CFB6 ._ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE +0008CFC0 0008CFC6 ._ZNSt6vectorISsSaISsEE5beginEv +0008CFD0 0008CFD6 ._ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +0008CFE0 0008CFE6 ._ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl +0008CFF0 0008CFF6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_ +0008D000 0008D006 ._ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz +0008D010 0008D016 ._ZNSt6thread10_Impl_baseD2Ev +0008D020 0008D026 ._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8max_sizeEv +0008D030 0008D036 ._ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E +0008D040 0008D046 ._ZNSt6thread10_Impl_baseC2Ev +0008D050 0008D056 ._ZNSt6chrono15time_point_castINS_8durationIlSt5ratioILl1ELl1EEEENS_3_V212system_clockENS1_IlS2_ILl1ELl1000000000EEEEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueENS_10time_pointIT0_SB_EEE4typeERKNSD_ISE_T1_EE +0008D060 0008D066 ._ZSt34__uninitialized_move_if_noexcept_aIPP16TCMVirtualDeviceS2_SaIS1_EET0_T_S5_S4_RT1_ +0008D070 0008D076 ._ZNSt8__detail15_Hash_node_baseC2Ev +0008D080 0008D086 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_ED2Ev +0008D090 0008D096 ._ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IivEERKT_ +0008D0A0 0008D0A6 ._ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm +0008D0B0 0008D0B6 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB_ +0008D0C0 0008D0C6 ._ZNSt10_Iter_baseIPhLb0EE7_S_baseES0_ +0008D0D0 0008D0D6 ._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSH_EvEEOSC_SG_ +0008D0E0 0008D0E6 ._ZNSaIPcED2Ev +0008D0F0 0008D0F6 ._ZNSt6vectorIbSaIbEE4backEv +0008D100 0008D106 ._ZN9__gnu_cxx13new_allocatorIhE9constructIhJRKhEEEvPT_DpOT0_ +0008D110 0008D116 ._ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEC2ERKS2_ +0008D120 0008D126 ._ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE +0008D130 0008D136 ._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev +0008D140 0008D146 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexERS2_mm +0008D150 0008D156 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Em +0008D160 0008D166 ._ZNSt6chronoltINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EEbRKNS_10time_pointIT_T0_EERKNS7_IS8_T1_EE +0008D170 0008D176 ._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +0008D180 0008D186 ._ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_ +0008D190 0008D196 ._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEC2EOS9_ +0008D1A0 0008D1A6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +0008D1B0 0008D1B6 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_ +0008D1C0 0008D1C6 ._ZN17ThermalController16getPresetOffsetYEv +0008D1D0 0008D1D6 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE7destroyISC_EEvPT_ +0008D1E0 0008D1E6 ._ZSt25__uninitialized_default_nIPhmEvT_T0_ +0008D1F0 0008D1F6 ._ZN6serial6Serial10SerialImpl9setParityENS_8parity_tE +0008D200 0008D206 ._ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEmiERKl +0008D210 0008D216 .__gmon_start__ +0008D220 0008D226 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JS9_EEEvPT_DpOT0_ +0008D230 0008D236 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +0008D240 0008D246 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E7releaseEv +0008D250 0008D256 .puts +0008D260 0008D266 ._ZSt20__throw_system_errori +0008D270 0008D276 ._ZNKSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEE13_M_const_castEv +0008D280 0008D286 ._ZNKSs5c_strEv +0008D290 0008D296 ._ZNSt14_Bit_referenceC2EPmm +0008D2A0 0008D2A6 ._Znam +0008D2B0 0008D2B6 ._ZN6serial6Serial10SerialImpl9availableEv +0008D2C0 0008D2C6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +0008D2D0 0008D2D6 ._ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15token_type_nameENS9_10token_typeE +0008D2E0 0008D2E6 ._ZNSt16allocator_traitsISaISsEE9constructISsJSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +0008D2F0 0008D2F6 ._ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEpLERKl +0008D300 0008D306 ._ZN9__gnu_cxxeqIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +0008D310 0008D316 ._ZSt7advanceIPhiEvRT_T0_ +0008D320 0008D326 ._ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEElEvRT_T0_St26random_access_iterator_tag +0008D330 0008D336 ._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +0008D340 0008D346 ._ZSt14__copy_move_a2ILb1EPhS0_ET1_T0_S2_S1_ +0008D350 0008D356 ._ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESB_EET0_T_SE_SD_ +0008D360 0008D366 ._ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE5_M_eqEv +0008D370 0008D376 ._ZSt34__uninitialized_move_if_noexcept_aIP19struct_TerminalListS1_SaIS0_EET0_T_S4_S3_RT1_ +0008D380 0008D386 ._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +0008D390 0008D396 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +0008D3A0 0008D3A6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRlEEEvDpOT_ +0008D3B0 0008D3B6 ._ZN10CMagDevice16StopProcessImageEv +0008D3C0 0008D3C6 ._ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSH_vEEOSC_OT0_ +0008D3D0 0008D3D6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS8_EEvPT_ +0008D3E0 0008D3E6 ._ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_ +0008D3F0 0008D3F6 ._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EcvbEv +0008D400 0008D406 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKdLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008D410 0008D416 ._ZN14EloMotorDevice10limitResetEv +0008D420 0008D426 ._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +0008D430 0008D436 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E7releaseEv +0008D440 0008D446 ._ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +0008D450 0008D456 ._ZStneIhEbRKSaIT_ES3_ +0008D460 0008D466 ._ZdlPv +0008D470 0008D476 ._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8key_compEv +0008D480 0008D486 ._ZNSt10_Iter_baseIPmLb0EE7_S_baseES0_ +0008D490 0008D496 ._ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv +0008D4A0 0008D4A6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5beginEv +0008D4B0 0008D4B6 ._ZSt6fill_nIP19struct_TerminalListmS0_ET_S2_T0_RKT1_ +0008D4C0 0008D4C6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_ +0008D4D0 0008D4D6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJEEEPT_DpOT0_ +0008D4E0 0008D4E6 ._ZNSs7reserveEm +0008D4F0 0008D4F6 ._ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_ +0008D500 0008D506 ._ZN10CMagDevice15SetColorPaletteE12ColorPalette +0008D510 0008D516 ._ZStmiRKSt18_Bit_iterator_baseS1_ +0008D520 0008D526 ._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2EOS2_ +0008D530 0008D536 ._ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +0008D540 0008D546 ._ZN6serial6Serial10SerialImpl10readUnlockEv +0008D550 0008D556 ._ZSt18__do_alloc_on_copyISaIhEEvRT_RKS1_St17integral_constantIbLb0EE +0008D560 0008D566 ._ZSt7forwardIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +0008D570 0008D576 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +0008D580 0008D586 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb1EEEm +0008D590 0008D596 ._ZSt27__uninitialized_default_n_aIPhmhEvT_T0_RSaIT1_E +0008D5A0 0008D5A6 ._ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_ +0008D5B0 0008D5B6 ._ZN6serial6Serial10SerialImpl11writeUnlockEv +0008D5C0 0008D5C6 ._ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEppEv +0008D5D0 0008D5D6 ._ZNSt18condition_variable10notify_allEv +0008D5E0 0008D5E6 ._ZN14EloEEROMDeviceC2Ev +0008D5F0 0008D5F6 ._ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2ERKS1_ +0008D600 0008D606 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE7reserveEm +0008D610 0008D616 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSI_ +0008D620 0008D626 ._ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_ +0008D630 0008D636 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9_S_selectIKS8_EENSt9enable_ifIXntsrNS9_15__select_helperIT_EE5valueESE_E4typeERSE_ +0008D640 0008D646 ._ZSt32__make_move_if_noexcept_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS9_EET0_T_ +0008D650 0008D656 .__assert_fail +0008D660 0008D666 ._ZSt14__copy_move_a2ILb0EPhS0_ET1_T0_S2_S1_ +0008D670 0008D676 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2Ev +0008D680 0008D686 ._ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_ +0008D690 0008D696 ._ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm +0008D6A0 0008D6A6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +0008D6B0 0008D6B6 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m +0008D6C0 0008D6C6 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEED2Ev +0008D6D0 0008D6D6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base +0008D6E0 0008D6E6 ._ZNSt6vectorI19struct_TerminalListSaIS0_EEixEm +0008D6F0 0008D6F6 ._ZN21EloTCMHeartBeatDeviceD2Ev +0008D700 0008D706 ._ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E +0008D710 0008D716 ._ZNSt6vectorIhSaIhEE18_M_insert_dispatchIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St12__false_type +0008D720 0008D726 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE7destroyISC_EEvPT_ +0008D730 0008D736 ._ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ERS9_ +0008D740 0008D746 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +0008D750 0008D756 ._ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8max_sizeEv +0008D760 0008D766 ._ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +0008D770 0008D776 ._ZSt4swapISt9_Any_dataEvRT_S2_ +0008D780 0008D786 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10_S_destroyIS5_EENSt9enable_ifIXsrNS7_16__destroy_helperIT_EE5valueEvE4typeERS6_PSB_ +0008D790 0008D796 ._ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_ +0008D7A0 0008D7A6 ._ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJRKS7_EEvPT_DpOT0_ +0008D7B0 0008D7B6 ._ZNKSt6vectorISsSaISsEE5beginEv +0008D7C0 0008D7C6 ._ZNKSt13_Bit_iteratormiEl +0008D7D0 0008D7D6 ._ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE +0008D7E0 0008D7E6 .MAG_GetFrameStatisticalData +0008D7F0 0008D7F6 ._ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE +0008D800 0008D806 ._ZN10CMagDevice22SetEnvTempEstimateModeEii +0008D810 0008D816 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2Ev +0008D820 0008D826 ._ZSt7advanceIPKhmEvRT_T0_ +0008D830 0008D836 ._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +0008D840 0008D846 ._ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type +0008D850 0008D856 ._ZN8nlohmann14adl_serializerIdvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERdEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +0008D860 0008D866 ._ZSt23__copy_move_backward_a2ILb0EPPcS1_ET1_T0_S3_S2_ +0008D870 0008D876 ._ZNKSt6chrono8durationIlSt5ratioILl1ELl1EEE5countEv +0008D880 0008D886 ._ZNSaIhEC2ERKS_ +0008D890 0008D896 ._ZSt7forwardIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +0008D8A0 0008D8A6 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIEEEPT_DpOT0_ENKUlPSE_E_clESK_ +0008D8B0 0008D8B6 .MAG_GetRectTemperatureInfo +0008D8C0 0008D8C6 ._ZN13TCMPresetData9setSerialESs +0008D8D0 0008D8D6 ._ZNSt11unique_lockISt5mutexED2Ev +0008D8E0 0008D8E6 ._ZNKSt6vectorI19struct_TerminalListSaIS0_EE12_M_check_lenEmPKc +0008D8F0 0008D8F6 ._ZNSt16allocator_traitsISaIiEE10_S_destroyIiEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +0008D900 0008D906 ._ZNSaIiEC2Ev +0008D910 0008D916 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_ESJ_RS1_ +0008D920 0008D926 ._ZN19EloTCMUpdaterDevice14completeUpdateEv +0008D930 0008D936 ._ZNSt10_Iter_baseISt19_Bit_const_iteratorLb0EE7_S_baseES0_ +0008D940 0008D946 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +0008D950 0008D956 .__cxa_rethrow +0008D960 0008D966 ._ZSt18uninitialized_copyISt13move_iteratorIPSsES1_ET0_T_S4_S3_ +0008D970 0008D976 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JS7_EEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +0008D980 0008D986 ._ZNKSs4sizeEv +0008D990 0008D996 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_ +0008D9A0 0008D9A6 ._ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_ +0008D9B0 0008D9B6 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +0008D9C0 0008D9C6 ._ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IKS1_EEOT_ +0008D9D0 0008D9D6 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRlEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008D9E0 0008D9E6 ._ZNSt4pairIKSsiEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EES5_IJDpT0_EE +0008D9F0 0008D9F6 ._ZNSt6chronoltIlSt5ratioILl1ELl1000000000EElS2_EEbRKNS_8durationIT_T0_EERKNS3_IT1_T2_EE +0008DA00 0008DA06 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE7destroyISA_EEvPT_ +0008DA10 0008DA16 ._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2Ev +0008DA20 0008DA26 .cfsetspeed +0008DA30 0008DA36 ._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERKSP_ +0008DA40 0008DA46 ._ZNKSt11unique_lockISt5mutexE5mutexEv +0008DA50 0008DA56 ._ZNSt8ios_base4InitC1Ev +0008DA60 0008DA66 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRdEEEvDpOT_ +0008DA70 0008DA76 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +0008DA80 0008DA86 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_ +0008DA90 0008DA96 .MAG_GetTerminalList +0008DAA0 0008DAA6 ._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE4findERS5_ +0008DAB0 0008DAB6 ._ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +0008DAC0 0008DAC6 ._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +0008DAD0 0008DAD6 ._ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_ +0008DAE0 0008DAE6 ._ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +0008DAF0 0008DAF6 ._ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008DB00 0008DB06 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +0008DB10 0008DB16 ._ZN21EloTCMHeartBeatDevice9stopCheckEv +0008DB20 0008DB26 ._ZNKSt13_Bit_iteratordeEv +0008DB30 0008DB36 ._ZNK6serial6Serial10SerialImpl11getBytesizeEv +0008DB40 0008DB46 ._ZNSt8__detail13_Equal_helperISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsEmLb1EE9_S_equalsERKS6_RKS4_RS2_mPNS_10_Hash_nodeIS3_Lb1EEE +0008DB50 0008DB56 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEv +0008DB60 0008DB66 ._ZN9__gnu_cxxeqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +0008DB70 0008DB76 ._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv +0008DB80 0008DB86 ._ZSt12__get_helperILm1EP10SerialPortJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +0008DB90 0008DB96 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6parserINS_6detail22iterator_input_adapterIPhEEEENS8_6parserIS6_T_EESD_St8functionIFbiNS8_13parse_event_tERS6_EEbb +0008DBA0 0008DBA6 ._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008DBB0 0008DBB6 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8allocateEmPKv +0008DBC0 0008DBC6 ._ZSt20uninitialized_fill_nIPhmhEvT_T0_RKT1_ +0008DBD0 0008DBD6 ._ZSt8_DestroyISsEvPT_ +0008DBE0 0008DBE6 .MAG_GetCamInfo +0008DBF0 0008DBF6 ._ZN10SerialPort8isOpenedEv +0008DC00 0008DC06 ._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJRS4_EESC_IJEEEEEvPT_DpOT0_ +0008DC10 0008DC16 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEE +0008DC20 0008DC26 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev +0008DC30 0008DC36 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2EmRKS8_ +0008DC40 0008DC46 ._ZNKSt11_Deque_baseIcSaIcEE20_M_get_map_allocatorEv +0008DC50 0008DC56 ._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_ET0_T_SH_SG_ +0008DC60 0008DC66 ._ZNK9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8max_sizeEv +0008DC70 0008DC76 ._ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS8_ +0008DC80 0008DC86 ._ZNSaIP16TCMVirtualDeviceED2Ev +0008DC90 0008DC96 ._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEdeEv +0008DCA0 0008DCA6 ._ZNSt16allocator_traitsISaIiEE9constructIiJiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +0008DCB0 0008DCB6 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_ED2Ev +0008DCC0 0008DCC6 ._ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IKS1_EEOT_ +0008DCD0 0008DCD6 ._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEC2EOS9_ +0008DCE0 0008DCE6 ._ZNSt10_Iter_baseISt13move_iteratorIPiELb1EE7_S_baseES2_ +0008DCF0 0008DCF6 ._ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh +0008DD00 0008DD06 ._ZNKSt7_Mem_fnIM10SerialPortFvvEEclIJEvEEvPS0_DpOT_ +0008DD10 0008DD16 ._ZNSs4_Rep10_M_refdataEv +0008DD20 0008DD26 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +0008DD30 0008DD36 ._ZN10CMagDevice13DisLinkCameraEv +0008DD40 0008DD46 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIRKSE_EEEPT_DpOT0_ENKUlPSE_E_clESM_ +0008DD50 0008DD56 ._ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +0008DD60 0008DD66 ._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +0008DD70 0008DD76 ._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5beginEv +0008DD80 0008DD86 ._ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag +0008DD90 0008DD96 ._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED2Ev +0008DDA0 0008DDA6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E +0008DDB0 0008DDB6 ._ZSt18uninitialized_copyISt13move_iteratorIPN6serial8PortInfoEES3_ET0_T_S6_S5_ +0008DDC0 0008DDC6 ._ZN6serial6Serial10SerialImpl5getCDEv +0008DDD0 0008DDD6 .read +0008DDE0 0008DDE6 ._ZNKSt6vectorIbSaIbEE5beginEv +0008DDF0 0008DDF6 ._ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IS1_EEOT_ +0008DE00 0008DE06 ._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev +0008DE10 0008DE16 ._ZN17ThermalController11getInstanceEv +0008DE20 0008DE26 .malloc +0008DE30 0008DE36 ._ZNSt6chronomiINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEENS3_IlS4_ILl1ELl1EEEEEENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_SA_EERKNSE_ISF_SB_EE +0008DE40 0008DE46 ._ZNSt13_Bit_iteratorpLEl +0008DE50 0008DE56 .tcsendbreak +0008DE60 0008DE66 ._ZN13TCMPresetData8decodingEv +0008DE70 0008DE76 ._ZN11CMagService15GetTerminalListEP19struct_TerminalListj +0008DE80 0008DE86 ._ZNSt5arrayIcLm9EE4dataEv +0008DE90 0008DE96 ._ZSt32__make_move_if_noexcept_iteratorIPiSt13move_iteratorIS0_EET0_T_ +0008DEA0 0008DEA6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm +0008DEB0 0008DEB6 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv +0008DEC0 0008DEC6 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h2Ev +0008DED0 0008DED6 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE11_M_allocateEm +0008DEE0 0008DEE6 ._ZNK6serial6Serial10SerialImpl10getTimeoutEv +0008DEF0 0008DEF6 ._ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev +0008DF00 0008DF06 ._ZNSt5dequeIcSaIcEE16_M_push_back_auxIJcEEEvDpOT_ +0008DF10 0008DF16 ._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEC2EOS9_ +0008DF20 0008DF26 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +0008DF30 0008DF36 ._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERKSK_ +0008DF40 0008DF46 ._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEv +0008DF50 0008DF56 ._ZNKSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +0008DF60 0008DF66 ._ZN10CMagDevice21GetOutputBMPdataRGB24EPhji +0008DF70 0008DF76 ._ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_headERS2_ +0008DF80 0008DF86 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPP16TCMVirtualDeviceES5_EET0_T_S8_S7_ +0008DF90 0008DF96 ._ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_SA_ +0008DFA0 0008DFA6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_ +0008DFB0 0008DFB6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +0008DFC0 0008DFC6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSA_EEEPSt13_Rb_tree_nodeISA_EDpOT_ +0008DFD0 0008DFD6 ._ZStorSt13_Ios_OpenmodeS_ +0008DFE0 0008DFE6 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +0008DFF0 0008DFF6 ._ZNSt6chrono3_V212system_clock3nowEv +0008E000 0008E006 .MAG_SetFixPara +0008E010 0008E016 ._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEneERKS9_ +0008E020 0008E026 .MAG_SetFFCMode +0008E030 0008E036 ._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE7destroyIS1_EEvRS2_PT_ +0008E040 0008E046 ._ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv +0008E050 0008E056 ._ZNSt10_Iter_baseISt13move_iteratorIPhELb1EE7_S_baseES2_ +0008E060 0008E066 ._ZN10CMagDevice10GetFixParaEP14struct_FixPara +0008E070 0008E076 ._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +0008E080 0008E086 ._ZNSt6vectorISsSaISsEEC2Ev +0008E090 0008E096 ._ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +0008E0A0 0008E0A6 ._ZNSt12_Vector_baseIhSaIhEE17_M_create_storageEm +0008E0B0 0008E0B6 ._ZNSt16allocator_traitsISaIhEE12_S_constructIhJRKhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +0008E0C0 0008E0C6 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE10deallocateEPSA_m +0008E0D0 0008E0D6 ._ZNKSt8__detail18_Mod_range_hashingclEmm +0008E0E0 0008E0E6 ._ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base +0008E0F0 0008E0F6 ._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +0008E100 0008E106 ._ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE +0008E110 0008E116 ._ZN10CMagDevice32GetCurrentCameraInnerTemperatureEv +0008E120 0008E126 ._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8allocateEmPKv +0008E130 0008E136 ._ZN9__gnu_cxx13new_allocatorIiED2Ev +0008E140 0008E146 ._ZNSt13_Bit_iteratormmEv +0008E150 0008E156 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKlLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008E160 0008E166 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +0008E170 0008E176 ._ZSt4moveIRSt11_Tuple_implILm1EJEEEONSt16remove_referenceIT_E4typeEOS4_ +0008E180 0008E186 ._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv +0008E190 0008E196 ._ZNSs4_Rep9_S_createEmmRKSaIcE +0008E1A0 0008E1A6 ._ZN10CMagDevice17StartProcessImageEPFvjjjPvEiiS0_ +0008E1B0 0008E1B6 .MAG_GetLineTemperatureInfo +0008E1C0 0008E1C6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_b +0008E1D0 0008E1D6 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +0008E1E0 0008E1E6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE3endEv +0008E1F0 0008E1F6 ._ZNSt11_Tuple_implILm0EJRKSsEE7_M_tailERS2_ +0008E200 0008E206 ._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED2Ev +0008E210 0008E216 ._ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESB_EET0_T_SD_SC_ +0008E220 0008E226 ._ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +0008E230 0008E236 ._ZNSt18_Bit_iterator_baseC2EPmj +0008E240 0008E246 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2ERKS8_ +0008E250 0008E256 ._ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +0008E260 0008E266 ._ZN16TCMVirtualDevice8getFrameEv +0008E270 0008E276 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS6_S8_EE +0008E280 0008E286 ._ZNSt6vectorIhSaIhEEC2Ev +0008E290 0008E296 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev +0008E2A0 0008E2A6 ._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +0008E2B0 0008E2B6 ._ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEEC1ERKS6_ +0008E2C0 0008E2C6 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_tailERS6_ +0008E2D0 0008E2D6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE15_M_erase_at_endEPS6_ +0008E2E0 0008E2E6 ._ZN6serial22PortNotOpenedExceptionC2EPKc +0008E2F0 0008E2F6 ._ZNSt13_Bit_iteratorC2Ev +0008E300 0008E306 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJDnEEEvDpOT_ +0008E310 0008E316 ._ZNSt5mutex13native_handleEv +0008E320 0008E326 ._ZN18EloProximityDeviceD2Ev +0008E330 0008E336 ._ZNSaIN6serial8PortInfoEEC2Ev +0008E340 0008E346 ._ZSt4moveIRSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +0008E350 0008E356 ._ZN17ThermalController20getTemperatureInRectE4Rect +0008E360 0008E366 ._ZN9__gnu_cxx13new_allocatorIPcEC2Ev +0008E370 0008E376 ._ZN9__gnu_cxxneIPKSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +0008E380 0008E386 ._ZSt8_DestroyIPiiEvT_S1_RSaIT0_E +0008E390 0008E396 ._ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKSA_ +0008E3A0 0008E3A6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +0008E3B0 0008E3B6 ._ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +0008E3C0 0008E3C6 .MAG_DisLinkCamera +0008E3D0 0008E3D6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv +0008E3E0 0008E3E6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE +0008E3F0 0008E3F6 ._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008E400 0008E406 ._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +0008E410 0008E416 ._ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_ +0008E420 0008E426 ._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE12_S_constructIS1_JRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_ +0008E430 0008E436 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +0008E440 0008E446 ._ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv +0008E450 0008E456 .pthread_cond_timedwait +0008E460 0008E466 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESK_IJEEEEEPNS4_10_Hash_nodeIS2_Lb1EEEDpOT_ +0008E470 0008E476 ._ZN10CMagDeviceC2Ev +0008E480 0008E486 ._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2Ev +0008E490 0008E496 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_ +0008E4A0 0008E4A6 ._ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_ +0008E4B0 0008E4B6 ._ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +0008E4C0 0008E4C6 ._ZNKSs7compareERKSs +0008E4D0 0008E4D6 ._ZNSsC1ERKSs +0008E4E0 0008E4E6 ._ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_St26random_access_iterator_tag +0008E4F0 0008E4F6 ._ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEppEv +0008E500 0008E506 ._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv +0008E510 0008E516 ._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +0008E520 0008E526 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS8_EENSt9enable_ifIXsrNSA_16__destroy_helperIT_EE5valueEvE4typeERS9_PSE_ +0008E530 0008E536 ._ZNSt6vectorIhSaIhEE7reserveEm +0008E540 0008E546 ._ZSt14__copy_move_a2ILb1EPiS0_ET1_T0_S2_S1_ +0008E550 0008E556 .__cxa_atexit +0008E560 0008E566 ._ZNSt13runtime_errorC1ERKSs +0008E570 0008E576 ._ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS3_Lb1EEE +0008E580 0008E586 ._ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE +0008E590 0008E596 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +0008E5A0 0008E5A6 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev +0008E5B0 0008E5B6 ._ZnwmPv +0008E5C0 0008E5C6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJRKSE_EEEPT_DpOT0_ +0008E5D0 0008E5D6 .MAG_GetEstimatedEnvTemp +0008E5E0 0008E5E6 ._ZSt7forwardIOSsEOT_RNSt16remove_referenceIS1_E4typeE +0008E5F0 0008E5F6 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPN6serial8PortInfoEES3_S2_ET0_T_S6_S5_RSaIT1_E +0008E600 0008E606 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixERSA_ +0008E610 0008E616 ._ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm +0008E620 0008E626 ._ZNSt13move_iteratorIPhEC2ES0_ +0008E630 0008E636 ._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +0008E640 0008E646 ._ZNSt6vectorIhSaIhEE3endEv +0008E650 0008E656 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implD2Ev +0008E660 0008E666 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_ +0008E670 0008E676 ._ZN10CMagDevice36EstimateUnderArmTempFromForeheadRectEjjjj +0008E680 0008E686 ._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_ +0008E690 0008E696 ._ZNKSt10_Select1stISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEclERKSA_ +0008E6A0 0008E6A6 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE8allocateERSF_m +0008E6B0 0008E6B6 ._ZNSs13_S_copy_charsEPcS_S_ +0008E6C0 0008E6C6 ._ZNSt6threadD2Ev +0008E6D0 0008E6D6 ._ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1000EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +0008E6E0 0008E6E6 ._ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008E6F0 0008E6F6 ._ZN9TCMDeviceD2Ev +0008E700 0008E706 ._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSI_ +0008E710 0008E716 ._ZN10CMagDevice4LockEv +0008E720 0008E726 ._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_headERS2_ +0008E730 0008E736 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRdEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008E740 0008E746 ._ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS7_EEEEvEEOS_IT_E +0008E750 0008E756 ._ZN8nlohmann14adl_serializerIivE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEEiEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +0008E760 0008E766 ._ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_ +0008E770 0008E776 ._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +0008E780 0008E786 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +0008E790 0008E796 ._ZN19EloTCMUpdaterDevice11startUpdateEv +0008E7A0 0008E7A6 ._ZNSt8__detail12_Insert_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2Ev +0008E7B0 0008E7B6 ._ZN17ThermalController13setEmissivityEd +0008E7C0 0008E7C6 ._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSK_DpT1_EE +0008E7D0 0008E7D6 ._ZNSt13_Bit_iteratorC2EPmj +0008E7E0 0008E7E6 .MAG_StopProcessImage +0008E7F0 0008E7F6 ._ZNKSt6vectorISsSaISsEEixEm +0008E800 0008E806 ._ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1000EEvEERKNS0_IT_T0_EE +0008E810 0008E816 ._ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEC2ERKS3_ +0008E820 0008E826 ._ZNKSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +0008E830 0008E836 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt13_Rb_tree_nodeISA_E +0008E840 0008E846 ._ZNSt14__array_traitsIhLm4EE6_S_refERA4_Khm +0008E850 0008E856 ._ZNSaIhED2Ev +0008E860 0008E866 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +0008E870 0008E876 ._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv +0008E880 0008E886 ._ZNKSt6vectorIhSaIhEE5emptyEv +0008E890 0008E896 ._ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEC1ERKS6_ +0008E8A0 0008E8A6 ._ZN9__gnu_cxx13new_allocatorIhEC2ERKS1_ +0008E8B0 0008E8B6 ._ZNSt6vectorIbSaIbEEC2Ev +0008E8C0 0008E8C6 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E7releaseEv +0008E8D0 0008E8D6 .pthread_mutex_init +0008E8E0 0008E8E6 ._ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +0008E8F0 0008E8F6 ._ZN13TCMPresetData10setOffsetYEi +0008E900 0008E906 ._ZSt18uninitialized_copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +0008E910 0008E916 ._ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +0008E920 0008E926 ._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ +0008E930 0008E936 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEED2Ev +0008E940 0008E946 .MAG_SetEnvTempEstimateMode +0008E950 0008E956 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +0008E960 0008E966 ._ZNKSt6vectorIiSaIiEE8max_sizeEv +0008E970 0008E976 ._ZNSt6vectorIiSaIiEED2Ev +0008E980 0008E986 ._ZNKSs6lengthEv +0008E990 0008E996 ._ZN17ThermalController19loadCalibrationJsonEv +0008E9A0 0008E9A6 ._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +0008E9B0 0008E9B6 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +0008E9C0 0008E9C6 ._ZNKSt16initializer_listImE5beginEv +0008E9D0 0008E9D6 ._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEdLi0EEEvRT_T0_ +0008E9E0 0008E9E6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm +0008E9F0 0008E9F6 ._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7_ +0008EA00 0008EA06 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE20_M_allocate_and_copyISt13move_iteratorIPS6_EEESB_mT_SD_ +0008EA10 0008EA16 ._ZNKSt6vectorIhSaIhEE8capacityEv +0008EA20 0008EA26 ._ZNSaIcEC2Ev +0008EA30 0008EA36 ._ZNSt14unary_functionIP10SerialPortvEC2Ev +0008EA40 0008EA46 ._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE9constructIS2_JS2_EEEvPT_DpOT0_ +0008EA50 0008EA56 ._ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev +0008EA60 0008EA66 ._ZN6serial6Serial10SerialImpl10setTimeoutERNS_7TimeoutE +0008EA70 0008EA76 ._ZNK6serial6Serial10SerialImpl6isOpenEv +0008EA80 0008EA86 ._ZSt4swapIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEvRT_SA_ +0008EA90 0008EA96 ._ZNSt6vectorIhSaIhEE9push_backEOh +0008EAA0 0008EAA6 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE19_M_emplace_back_auxIJS1_EEEvDpOT_ +0008EAB0 0008EAB6 ._ZN8nlohmann6detail16invalid_iteratorC2EiPKc +0008EAC0 0008EAC6 ._ZNSt5mutex6unlockEv +0008EAD0 0008EAD6 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +0008EAE0 0008EAE6 ._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERKSK_ +0008EAF0 0008EAF6 ._ZN11FTDICommandC2Ehhi +0008EB00 0008EB06 ._ZSt22__uninitialized_copy_aISt13move_iteratorIP19struct_TerminalListES2_S1_ET0_T_S5_S4_RSaIT1_E +0008EB10 0008EB16 ._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +0008EB20 0008EB26 ._ZN6serial6SerialC2ERKSsjNS_7TimeoutENS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +0008EB30 0008EB36 .MAG_EnumCameras +0008EB40 0008EB46 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRlEEEvDpOT_ +0008EB50 0008EB56 ._ZN19EloTCMUpdaterDevice12transmitDataESt6vectorIhSaIhEEi +0008EB60 0008EB66 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EEC2ERKSM_ +0008EB70 0008EB76 ._ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +0008EB80 0008EB86 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +0008EB90 0008EB96 ._ZN6serial6Serial10SerialImpl6setDTREb +0008EBA0 0008EBA6 ._ZNSt17__allow_copy_consILb1EEC2Ev +0008EBB0 0008EBB6 ._ZN19FTDICommandDelegateC2Ev +0008EBC0 0008EBC6 ._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEeqERKS9_ +0008EBD0 0008EBD6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_commentEv +0008EBE0 0008EBE6 ._ZNSaIhEC2ERKS__0 +0008EBF0 0008EBF6 ._ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEdeEv +0008EC00 0008EC06 ._ZSt14__copy_move_a2ILb0EPKhPhET1_T0_S4_S3_ +0008EC10 0008EC16 ._ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +0008EC20 0008EC26 ._ZSt3getILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008EC30 0008EC36 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRSsEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008EC40 0008EC46 .MAG_EstimateUnderArmTempFromForeheadRect +0008EC50 0008EC56 ._ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc +0008EC60 0008EC66 ._ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPcEEPT_PKS4_S7_S5_ +0008EC70 0008EC76 ._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +0008EC80 0008EC86 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EEC2ERKSH_ +0008EC90 0008EC96 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JNS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_ +0008ECA0 0008ECA6 ._ZNSt14unary_functionIP21EloTCMHeartBeatDevicevEC2Ev +0008ECB0 0008ECB6 ._ZNK8nlohmann6detail10position_tcvmEv +0008ECC0 0008ECC6 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +0008ECD0 0008ECD6 ._ZNKSt13move_iteratorIPhE4baseEv +0008ECE0 0008ECE6 ._ZN8nlohmann14adl_serializerIbvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERbEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +0008ECF0 0008ECF6 ._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ +0008ED00 0008ED06 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev_0 +0008ED10 0008ED16 ._ZN6serial6Serial5closeEv +0008ED20 0008ED26 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +0008ED30 0008ED36 ._ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim +0008ED40 0008ED46 ._ZNSt8__detail7_InsertISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb0ELb1EEC2Ev +0008ED50 0008ED56 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2Ev +0008ED60 0008ED66 ._ZNSt5dequeIcSaIcEEixEm +0008ED70 0008ED76 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +0008ED80 0008ED86 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +0008ED90 0008ED96 ._ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008EDA0 0008EDA6 ._ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_ +0008EDB0 0008EDB6 ._ZNKSs5rfindEPKcm +0008EDC0 0008EDC6 ._ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_ +0008EDD0 0008EDD6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_ +0008EDE0 0008EDE6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE10deallocateEPS6_m +0008EDF0 0008EDF6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +0008EE00 0008EE06 ._ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEEC2IRKSaIS4_EEEOT_ +0008EE10 0008EE16 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +0008EE20 0008EE26 .pselect +0008EE30 0008EE36 ._ZSt4copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +0008EE40 0008EE46 ._ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +0008EE50 0008EE56 ._ZNSt12_Vector_baseISsSaISsEE11_M_allocateEm +0008EE60 0008EE66 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m +0008EE70 0008EE76 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JRKSE_EEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSM_DpOSN_ +0008EE80 0008EE86 ._ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv +0008EE90 0008EE96 ._ZNSt6vectorIhSaIhEEC2ERKS1_ +0008EEA0 0008EEA6 ._ZNSt16allocator_traitsISaISsEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +0008EEB0 0008EEB6 ._ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERKSB_ +0008EEC0 0008EEC6 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JEEEvPT_DpOT0_ +0008EED0 0008EED6 ._ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St20forward_iterator_tag +0008EEE0 0008EEE6 ._ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +0008EEF0 0008EEF6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_ +0008EF00 0008EF06 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4sizeEv +0008EF10 0008EF16 ._ZN6serial11IOExceptionC2ESsiPKc +0008EF20 0008EF26 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +0008EF30 0008EF36 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EED2Ev +0008EF40 0008EF46 ._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1ELl1EElLb1ELb1EE6__castIlS3_EES4_RKNS1_IT_T0_EE +0008EF50 0008EF56 ._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +0008EF60 0008EF66 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2ERKSG_ +0008EF70 0008EF76 ._ZN6serial7Timeout3maxEv +0008EF80 0008EF86 ._ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_ +0008EF90 0008EF96 ._ZN9__gnu_cxxneIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +0008EFA0 0008EFA6 ._ZSt4copyIPPcS1_ET0_T_S3_S2_ +0008EFB0 0008EFB6 ._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008EFC0 0008EFC6 ._ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIhEEPT_PKS3_S6_S4_ +0008EFD0 0008EFD6 ._ZN10CMagDevice22GetRectTemperatureInfoEjjjjPi +0008EFE0 0008EFE6 ._ZNKSt8equal_toISsEclERKSsS2_ +0008EFF0 0008EFF6 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv +0008F000 0008F006 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +0008F010 0008F016 ._ZNSsD1Ev +0008F020 0008F026 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS9_m +0008F030 0008F036 ._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_tailERS2_ +0008F040 0008F046 ._ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +0008F050 0008F056 ._ZN17ThermalController18onNewFrameCallbackEjjj +0008F060 0008F066 ._ZN10CMagDevice10SetFixParaEPK14struct_FixPara12FixSelection +0008F070 0008F076 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8capacityEv +0008F080 0008F086 ._ZN8nlohmann6detail10type_error6createEiRKSs +0008F090 0008F096 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKd +0008F0A0 0008F0A6 ._ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE +0008F0B0 0008F0B6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKmLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008F0C0 0008F0C6 ._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERKSI_ +0008F0D0 0008F0D6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKSs +0008F0E0 0008F0E6 ._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008F0F0 0008F0F6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_ +0008F100 0008F106 ._ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE12_M_check_lenEmPKc +0008F110 0008F116 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKhPhEET0_T_S6_S5_ +0008F120 0008F126 ._ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1EEvEERKNS0_IT_T0_EE +0008F130 0008F136 ._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_headERS2_ +0008F140 0008F146 ._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSU_ +0008F150 0008F156 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2Ev +0008F160 0008F166 ._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb1EE7_S_baseES6_ +0008F170 0008F176 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE17_M_create_storageEm +0008F180 0008F186 ._ZNSt12_Vector_baseISsSaISsEE12_Vector_implC2Ev +0008F190 0008F196 ._ZSt23__copy_move_backward_a2ILb1EPhS0_ET1_T0_S2_S1_ +0008F1A0 0008F1A6 ._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +0008F1B0 0008F1B6 ._ZSt10_ConstructIN6serial8PortInfoEJS1_EEvPT_DpOT0_ +0008F1C0 0008F1C6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JNS1_6detail7value_tEEEEvPT_DpOT0_ +0008F1D0 0008F1D6 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008F1E0 0008F1E6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE +0008F1F0 0008F1F6 ._ZN17ThermalController19createIllegalResultEv +0008F200 0008F206 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2Ev +0008F210 0008F216 ._ZNKSt5arrayIhLm4EE4sizeEv +0008F220 0008F226 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EC2ESG_RKSH_ +0008F230 0008F236 ._ZN8nlohmann6detail10position_tC2Ev +0008F240 0008F246 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKSs +0008F250 0008F256 ._ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EE7_S_cgetERKS3_ +0008F260 0008F266 ._ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEppEv +0008F270 0008F276 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backEOS7_ +0008F280 0008F286 ._ZN9__gnu_cxx13new_allocatorISsED2Ev +0008F290 0008F296 .tcflush +0008F2A0 0008F2A6 ._ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEppEv +0008F2B0 0008F2B6 ._ZSt4swapIN8nlohmann6detail7value_tEEvRT_S4_ +0008F2C0 0008F2C6 .free +0008F2D0 0008F2D6 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +0008F2E0 0008F2E6 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EE7_M_headERSN_ +0008F2F0 0008F2F6 ._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE3endEv +0008F300 0008F306 ._ZNSt5dequeIcSaIcEEC2Ev +0008F310 0008F316 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +0008F320 0008F326 ._ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE +0008F330 0008F336 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implC2Ev +0008F340 0008F346 ._ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +0008F350 0008F356 ._ZN8nlohmann6detail20external_constructorILNS0_7value_tE4EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_9boolean_tE +0008F360 0008F366 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS7_EENSt9enable_ifIXsrNS9_16__destroy_helperIT_EE5valueEvE4typeERS8_PSD_ +0008F370 0008F376 ._ZN17ThermalController8startTCMEv +0008F380 0008F386 ._ZN19EloTCMUpdaterDevice14updateProgressEbi +0008F390 0008F396 ._ZNKSt16initializer_listIKjE3endEv +0008F3A0 0008F3A6 ._ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +0008F3B0 0008F3B6 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E7releaseEv +0008F3C0 0008F3C6 ._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv +0008F3D0 0008F3D6 ._ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEppEi +0008F3E0 0008F3E6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn +0008F3F0 0008F3F6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKl +0008F400 0008F406 ._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJRS1_EESG_IJEEEEEDpOT_ +0008F410 0008F416 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Ed +0008F420 0008F426 ._ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv +0008F430 0008F436 ._ZNKSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +0008F440 0008F446 ._ZNSt6vectorIhSaIhEEixEm +0008F450 0008F456 ._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9set_beginEv +0008F460 0008F466 ._ZNKSt14_Function_base8_M_emptyEv +0008F470 0008F476 ._ZNSt11_Tuple_implILm0EJRKSsEEC2ES1_ +0008F480 0008F486 ._ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3keyEv +0008F490 0008F496 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +0008F4A0 0008F4A6 ._ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_ +0008F4B0 0008F4B6 ._ZSt12__miter_baseISt13move_iteratorIPiEENSt11_Miter_baseIT_E13iterator_typeES4_ +0008F4C0 0008F4C6 ._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008F4D0 0008F4D6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +0008F4E0 0008F4E6 ._ZN9__gnu_cxx13new_allocatorIiE9constructIiJiEEEvPT_DpOT0_ +0008F4F0 0008F4F6 ._ZN11CMagServiceD2Ev +0008F500 0008F506 ._ZN9__gnu_cxxneIPSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +0008F510 0008F516 ._ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IlvEERKT_ +0008F520 0008F526 ._ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv +0008F530 0008F536 ._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +0008F540 0008F546 ._ZN16TCMVirtualDevice8sendDataEP11FTDICommand +0008F550 0008F556 ._ZNSt8__detail9_Map_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS2_ +0008F560 0008F566 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE7destroyISC_EEvPT_ +0008F570 0008F576 ._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb0EE7_S_baseES6_ +0008F580 0008F586 .MAG_SaveBMP +0008F590 0008F596 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2ERKSD_ +0008F5A0 0008F5A6 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEED2Ev +0008F5B0 0008F5B6 ._ZN6serial16MillisecondTimer9remainingEv +0008F5C0 0008F5C6 ._ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv +0008F5D0 0008F5D6 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev +0008F5E0 0008F5E6 ._ZN6serial8PortInfoD2Ev +0008F5F0 0008F5F6 ._ZN17ThermalController12preloadEEPOMEv +0008F600 0008F606 .MAG_SaveDDT2Buffer +0008F610 0008F616 ._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE8max_sizeERKS2_ +0008F620 0008F626 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EC2ESI_RKSJ_ +0008F630 0008F636 ._ZNKSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +0008F640 0008F646 ._ZNSs4_Rep10_M_destroyERKSaIcE +0008F650 0008F656 ._ZNSt6vectorIN6serial8PortInfoESaIS1_EEC2Ev +0008F660 0008F666 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS8_EENSt9enable_ifIXsrNS9_16__maxsize_helperIT_EE5valueEmE4typeERSE_ +0008F670 0008F676 ._ZN8nlohmann6detail16invalid_iteratorD2Ev +0008F680 0008F686 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +0008F690 0008F696 ._ZNSt10_Head_baseILm1EP10SerialPortLb0EE7_M_headERS2_ +0008F6A0 0008F6A6 ._ZSt13__copy_move_aILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +0008F6B0 0008F6B6 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESC_EET0_T_SF_SE_ +0008F6C0 0008F6C6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv +0008F6D0 0008F6D6 ._ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_ +0008F6E0 0008F6E6 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2Ev +0008F6F0 0008F6F6 ._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EDn +0008F700 0008F706 ._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +0008F710 0008F716 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_ENKUlPSsE_clESF_ +0008F720 0008F726 ._ZN18EloProximityDevice20setProximityDelegateEP18IProximityDelegate +0008F730 0008F736 ._ZNSaI19struct_TerminalListED2Ev +0008F740 0008F746 ._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEPhmT_S9_ +0008F750 0008F756 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS7_ +0008F760 0008F766 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EEC2Ev +0008F770 0008F776 ._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSO_ +0008F780 0008F786 ._ZNSt16allocator_traitsISaIhEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +0008F790 0008F796 ._ZNKSs5emptyEv +0008F7A0 0008F7A6 .MAG_TriggerFFC +0008F7B0 0008F7B6 ._ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St12__false_type +0008F7C0 0008F7C6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKbLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008F7D0 0008F7D6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2El +0008F7E0 0008F7E6 ._ZSt4copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +0008F7F0 0008F7F6 ._ZN16ThermalTCMDeviceD2Ev +0008F800 0008F806 ._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +0008F810 0008F816 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +0008F820 0008F826 .__xstat +0008F830 0008F836 ._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008F840 0008F846 ._ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2ERKS0_ +0008F850 0008F856 ._ZNSt6vectorIhSaIhEE6assignIPKhvEEvT_S5_ +0008F860 0008F866 ._ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE +0008F870 0008F876 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EE7_M_headERSJ_ +0008F880 0008F886 ._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE10deallocateEPS6_m +0008F890 0008F896 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSJ_ +0008F8A0 0008F8A6 ._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008F8B0 0008F8B6 ._ZNSt9exceptionC2Ev +0008F8C0 0008F8C6 ._ZSt8_DestroyIPP16TCMVirtualDeviceEvT_S3_ +0008F8D0 0008F8D6 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_ +0008F8E0 0008F8E6 ._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEED2Ev +0008F8F0 0008F8F6 ._ZNKSt16initializer_listIKjE4sizeEv +0008F900 0008F906 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +0008F910 0008F916 ._ZSt8distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_ +0008F920 0008F926 ._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +0008F930 0008F936 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +0008F940 0008F946 ._ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE +0008F950 0008F956 ._ZN8nlohmann6detail12out_of_range6createEiRKSs +0008F960 0008F966 ._ZNSt16allocator_traitsISaIiEE12_S_constructIiJRKiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +0008F970 0008F976 .tcdrain +0008F980 0008F986 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +0008F990 0008F996 ._ZNSt5dequeIcSaIcEE22_M_reserve_map_at_backEm +0008F9A0 0008F9A6 ._ZN17ThermalController17updateTriggerTimeEb +0008F9B0 0008F9B6 ._ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E +0008F9C0 0008F9C6 ._ZNKSt6vectorISsSaISsEE3endEv +0008F9D0 0008F9D6 ._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERSJ_ +0008F9E0 0008F9E6 .MAG_GetFixPara +0008F9F0 0008F9F6 ._ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET1_T0_SF_SE_ +0008FA00 0008FA06 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +0008FA10 0008FA16 ._ZN9__gnu_cxx13new_allocatorIhEC2Ev +0008FA20 0008FA26 ._ZN8nlohmann6detail9exceptionD2Ev +0008FA30 0008FA36 ._ZNKSt13_Bit_iteratorplEl +0008FA40 0008FA46 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRSsEEEvPT_DpOT0_ +0008FA50 0008FA56 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +0008FA60 0008FA66 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS1_ +0008FA70 0008FA76 ._ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +0008FA80 0008FA86 ._ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET1_T0_SB_SA_ +0008FA90 0008FA96 ._ZSt4copyIPmS0_ET0_T_S2_S1_ +0008FAA0 0008FAA6 ._ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPKhS1_EEvEEvT_S8_ +0008FAB0 0008FAB6 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE10deallocateEPSF_m +0008FAC0 0008FAC6 ._ZSt4moveIRSt7_Mem_fnIM10SerialPortFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +0008FAD0 0008FAD6 ._ZN9__gnu_cxx13new_allocatorISsE7destroyISsEEvPT_ +0008FAE0 0008FAE6 ._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERSI_ +0008FAF0 0008FAF6 ._ZN17ThermalController14setNewDistanceEPFvfE +0008FB00 0008FB06 ._ZNKSt19_Bit_const_iteratordeEv +0008FB10 0008FB16 ._ZSt3getILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008FB20 0008FB26 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEC2Ev +0008FB30 0008FB36 ._ZNSt12_Destroy_auxILb0EE9__destroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SB_ +0008FB40 0008FB46 .__cxa_finalize +0008FB50 0008FB56 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +0008FB60 0008FB66 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EEC2Ev +0008FB70 0008FB76 ._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev +0008FB80 0008FB86 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +0008FB90 0008FB96 ._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2EPS8_ +0008FBA0 0008FBA6 ._ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEE4baseEv +0008FBB0 0008FBB6 ._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +0008FBC0 0008FBC6 ._ZNSt18_Bit_iterator_base10_M_bump_upEv +0008FBD0 0008FBD6 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE11_M_allocateEm +0008FBE0 0008FBE6 ._ZN19IHandleDataDelegateC2Ev +0008FBF0 0008FBF6 ._ZSt16__deque_buf_sizem +0008FC00 0008FC06 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRmEEEvPT_DpOT0_ +0008FC10 0008FC16 ._ZNSaISt4pairIKSsiEEC2Ev +0008FC20 0008FC26 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE15is_number_floatEv +0008FC30 0008FC36 ._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSI_EvEEOSD_SH_ +0008FC40 0008FC46 ._ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +0008FC50 0008FC56 ._ZSt3getILm0EJOSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS6_ +0008FC60 0008FC66 ._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb1EE7_S_baseESD_ +0008FC70 0008FC76 ._ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_ +0008FC80 0008FC86 .realpath +0008FC90 0008FC96 ._ZNKSt16initializer_listImE4sizeEv +0008FCA0 0008FCA6 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JEEEvPT_DpOT0_ +0008FCB0 0008FCB6 ._ZNSt5tupleIJOSsEEC2EOS1_ +0008FCC0 0008FCC6 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EED2Ev +0008FCD0 0008FCD6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_ +0008FCE0 0008FCE6 ._ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEhEvT_S7_RSaIT0_E +0008FCF0 0008FCF6 ._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008FD00 0008FD06 ._ZN19EloTCMUpdaterDevice10askVersionEv +0008FD10 0008FD16 ._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEppEv +0008FD20 0008FD26 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +0008FD30 0008FD36 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JEEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSB_DpOSC_ +0008FD40 0008FD46 ._ZNSt11_Tuple_implILm1EJP10SerialPortEEC2IKS1_JEvEEOT_DpOT0_ +0008FD50 0008FD56 ._ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEEC2Ev +0008FD60 0008FD66 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +0008FD70 0008FD76 ._ZN8nlohmann6detail9exception4nameERKSsi +0008FD80 0008FD86 .MAG_GetOutputColorBardata +0008FD90 0008FD96 ._ZN6serial6Serial10SerialImpl11setStopbitsENS_10stopbits_tE +0008FDA0 0008FDA6 ._ZNK6serial6Serial10SerialImpl11getBaudrateEv +0008FDB0 0008FDB6 ._ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_ +0008FDC0 0008FDC6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EE13_M_initializeEv +0008FDD0 0008FDD6 ._ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +0008FDE0 0008FDE6 ._ZSt7forwardIRPSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEOT_RNSt16remove_referenceISF_E4typeE +0008FDF0 0008FDF6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JRKS6_EEEvPT_DpOT0_ +0008FE00 0008FE06 ._ZN8nlohmann6detail11other_errorD2Ev +0008FE10 0008FE16 ._ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5valueEv +0008FE20 0008FE26 ._ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_ +0008FE30 0008FE36 ._ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES8_ +0008FE40 0008FE46 ._ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEneERKSB_ +0008FE50 0008FE56 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE11_M_allocateEm +0008FE60 0008FE66 ._ZNSt13_Bvector_baseISaIbEEC2Ev +0008FE70 0008FE76 ._ZN9__gnu_cxx13new_allocatorISsE8allocateEmPKv +0008FE80 0008FE86 ._ZSt34__uninitialized_move_if_noexcept_aIPN6serial8PortInfoES2_SaIS1_EET0_T_S5_S4_RT1_ +0008FE90 0008FE96 ._ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv +0008FEA0 0008FEA6 ._ZNSt6vectorIhSaIhEE6resizeEm +0008FEB0 0008FEB6 ._ZNKSt5dequeIcSaIcEE4sizeEv +0008FEC0 0008FEC6 ._ZNSt5dequeIcSaIcEE15_M_destroy_dataESt15_Deque_iteratorIcRcPcES5_RKS0_ +0008FED0 0008FED6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_ +0008FEE0 0008FEE6 ._ZNSaImEC2Ev +0008FEF0 0008FEF6 ._ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE +0008FF00 0008FF06 ._ZN17ThermalController11setUnitModeEi +0008FF10 0008FF16 ._ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_ +0008FF20 0008FF26 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +0008FF30 0008FF36 ._ZNSt8iteratorISt26random_access_iterator_tagblPbRbEC2Ev +0008FF40 0008FF46 ._ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_ +0008FF50 0008FF56 .MAG_LoadDDT +0008FF60 0008FF66 ._ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008FF70 0008FF76 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008FF80 0008FF86 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_b +0008FF90 0008FF96 ._ZSt10_ConstructISsJSsEEvPT_DpOT0_ +0008FFA0 0008FFA6 ._ZNSt14unary_functionIP19EloTCMUpdaterDevicebEC2Ev +0008FFB0 0008FFB6 ._ZSt11__addressofIN6serial8PortInfoEEPT_RS2_ +0008FFC0 0008FFC6 ._ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv +0008FFD0 0008FFD6 ._ZN8nlohmann6detail20external_constructorILNS0_7value_tE5EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_16number_integer_tE +0008FFE0 0008FFE6 ._ZSt12__niter_baseISt19_Bit_const_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +0008FFF0 0008FFF6 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +00090000 00090006 ._ZN13TCMPresetData7getDataEv +00090010 00090016 ._ZN6serial6Serial4readEPhm +00090020 00090026 .MAG_GetTemperatureData +00090030 00090036 ._ZSt4moveIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSB_ +00090040 00090046 ._ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +00090050 00090056 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS9_ +00090060 00090066 ._ZNSs6insertEmPKc +00090070 00090076 ._ZSt12__miter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEENSt11_Miter_baseIT_E13iterator_typeESD_ +00090080 00090086 ._ZNSt6vectorISsSaISsEE9push_backEOSs +00090090 00090096 .MAG_SetSubsectionEnlargePara +000900A0 000900A6 ._ZNSt31_Maybe_unary_or_binary_functionIvJP10SerialPortEEC2Ev +000900B0 000900B6 ._ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_ +000900C0 000900C6 ._ZNSspLERKSs +000900D0 000900D6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base +000900E0 000900E6 ._ZNKSt15_Deque_iteratorIcRcPcEplEl +000900F0 000900F6 ._ZN9__gnu_cxxneIPhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +00090100 00090106 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implD2Ev +00090110 00090116 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIP19struct_TerminalListES4_EET0_T_S7_S6_ +00090120 00090126 ._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb0EE7_S_baseES7_ +00090130 00090136 ._ZNSt11unique_lockISt5mutexE4lockEv +00090140 00090146 ._ZNSt12_Destroy_auxILb1EE9__destroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEEvT_S9_ +00090150 00090156 ._ZN8nlohmann6detail11other_errorC2EiPKc +00090160 00090166 ._ZSt10__fill_n_aImhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT0_E7__valueEPS3_E6__typeES5_T_RKS3_ +00090170 00090176 ._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED2Ev +00090180 00090186 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +00090190 00090196 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_S9_ET0_T_SD_SC_RSaIT1_E +000901A0 000901A6 ._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEESsLi0EEEvRT_RKT0_ +000901B0 000901B6 ._ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000901C0 000901C6 ._ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +000901D0 000901D6 ._ZN17ThermalController22getInnerIRCameraSerialEv +000901E0 000901E6 ._ZNSt18condition_variable10wait_untilINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +000901F0 000901F6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ENS_6detail7value_tE +00090200 00090206 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5parseIRA320659_hEES6_OT_St8functionIFbiNS_6detail13parse_event_tERS6_EEbb +00090210 00090216 ._ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +00090220 00090226 ._ZN10SerialPortC2Ev +00090230 00090236 ._ZN9__gnu_cxx13new_allocatorImED2Ev +00090240 00090246 ._ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +00090250 00090256 ._ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE +00090260 00090266 ._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EcvbEv +00090270 00090276 ._ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEppEv +00090280 00090286 ._ZNSt6vectorIhSaIhEEaSERKS1_ +00090290 00090296 ._ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_ +000902A0 000902A6 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000902B0 000902B6 ._ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000902C0 000902C6 ._ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIP19struct_TerminalListmEEvT_T0_ +000902D0 000902D6 ._ZNKSt13move_iteratorIPSsE4baseEv +000902E0 000902E6 ._ZNSt13move_iteratorIPSsEppEv +000902F0 000902F6 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +00090300 00090306 ._ZSt9__advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEElEvRT_T0_St26bidirectional_iterator_tag +00090310 00090316 ._ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +00090320 00090326 ._ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_ +00090330 00090336 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +00090340 00090346 ._ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEdeEv +00090350 00090356 ._ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii +00090360 00090366 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +00090370 00090376 ._ZNKSt6vectorIhSaIhEE5beginEv +00090380 00090386 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +00090390 00090396 ._ZNSaIhED2Ev_0 +000903A0 000903A6 ._ZN13TCMPresetData7isValidEv +000903B0 000903B6 ._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EcvbEv +000903C0 000903C6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +000903D0 000903D6 ._ZN6serial6Serial10SerialImpl15reconfigurePortEv +000903E0 000903E6 ._ZNSt12_Destroy_auxILb0EE9__destroyIPSsEEvT_S3_ +000903F0 000903F6 ._ZNSaIPcEC2IcEERKSaIT_E +00090400 00090406 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSN_ +00090410 00090416 ._ZNSaIhEC2Ev +00090420 00090426 ._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_ +00090430 00090436 ._ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E +00090440 00090446 ._ZN6serial8PortInfoC2EOS0_ +00090450 00090456 ._ZN8nlohmann6detail30iterator_input_adapter_factoryIPhvE6createES2_S2_ +00090460 00090466 ._ZNK9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEE4baseEv +00090470 00090476 ._ZN17ThermalController9softResetEv +00090480 00090486 ._ZNSt12_Vector_baseIiSaIiEEC2Ev +00090490 00090496 ._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEEOT_RKS1_ +000904A0 000904A6 ._ZNKSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEptEv +000904B0 000904B6 ._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m +000904C0 000904C6 ._ZSt8_DestroyIPN6serial8PortInfoEEvT_S3_ +000904D0 000904D6 ._ZSt7forwardIM19EloTCMUpdaterDeviceFbvEEOT_RNSt16remove_referenceIS3_E4typeE +000904E0 000904E6 ._ZSt8isfinited +000904F0 000904F6 ._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EcvbEv +00090500 00090506 ._ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSM_vEEOSH_OT0_ +00090510 00090516 ._ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +00090520 00090526 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JRKS9_EEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSH_DpOSI_ +00090530 00090536 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm +00090540 00090546 ._ZNSt11_Deque_baseIcSaIcEE17_M_initialize_mapEm +00090550 00090556 ._ZN17ThermalController10limitResetEv +00090560 00090566 ._ZSt12__miter_baseIPKhENSt11_Miter_baseIT_E13iterator_typeES3_ +00090570 00090576 ._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m +00090580 00090586 ._ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_ +00090590 00090596 ._ZNSt11char_traitsIcE6lengthEPKc +000905A0 000905A6 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EE7_M_headERSP_ +000905B0 000905B6 ._ZN11CMagServiceC2Ev +000905C0 000905C6 ._ZNSt12_Destroy_auxILb1EE9__destroyIP19struct_TerminalListEEvT_S4_ +000905D0 000905D6 ._ZN9__gnu_cxxeqIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_ +000905E0 000905E6 ._ZSt14__copy_move_a2ILb0EPPcS1_ET1_T0_S3_S2_ +000905F0 000905F6 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JRKS9_EEEvPT_DpOT0_ +00090600 00090606 ._ZNSt10_Iter_baseISt13move_iteratorIP19struct_TerminalListELb1EE7_S_baseES3_ +00090610 00090616 ._ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +00090620 00090626 ._ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE +00090630 00090636 ._ZN8nlohmann6detail13input_adapterIPhEENS0_30iterator_input_adapter_factoryIT_vE12adapter_typeES4_S4_ +00090640 00090646 ._ZN8nlohmann6detail20external_constructorILNS0_7value_tE7EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_14number_float_tE +00090650 00090656 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m +00090660 00090666 .MAG_WillStartImmediately +00090670 00090676 ._ZN8nlohmann14adl_serializerISsvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERSsEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00090680 00090686 ._ZSt4copyIPhS0_ET0_T_S2_S1_ +00090690 00090696 ._ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St12__false_type +000906A0 000906A6 ._ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +000906B0 000906B6 ._ZStneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +000906C0 000906C6 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JRKS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSG_DpOSH_ +000906D0 000906D6 ._ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2ERKS1_ +000906E0 000906E6 ._ZN9__gnu_cxx13new_allocatorIhED2Ev +000906F0 000906F6 ._ZNSt12_Vector_baseIhSaIhEED2Ev +00090700 00090706 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +00090710 00090716 ._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE8max_sizeERKS2_ +00090720 00090726 ._ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_tailERS2_ +00090730 00090736 ._ZN6serial15SerialExceptionC2EPKc +00090740 00090746 ._ZN19EloTCMUpdaterDevice17setUpdateDelegateEP18ITCMUpdateDelegate +00090750 00090756 ._ZN6serial15SerialExceptionD2Ev +00090760 00090766 ._ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEdeEv +00090770 00090776 ._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv +00090780 00090786 ._ZN9__gnu_cxx13new_allocatorISsE9constructISsJSsEEEvPT_DpOT0_ +00090790 00090796 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +000907A0 000907A6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E +000907B0 000907B6 ._ZNKSt6vectorIbSaIbEE8max_sizeEv +000907C0 000907C6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJEEEPT_DpOT0_ +000907D0 000907D6 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EEC2ERKSI_ +000907E0 000907E6 ._ZNSt6vectorI19struct_TerminalListSaIS0_EE17_M_default_appendEm +000907F0 000907F6 ._ZNSaISsED2Ev_0 +00090800 00090806 ._ZNSt6vectorIhSaIhEEC2ERKS1__0 +00090810 00090816 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEED2Ev +00090820 00090826 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E +00090830 00090836 ._ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_ +00090840 00090846 ._ZN9TCMDeviceC2Ev +00090850 00090856 ._ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EEC2ERKS2_ +00090860 00090866 ._ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE +00090870 00090876 ._ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +00090880 00090886 ._ZNSt6threadC2IM19EloTCMUpdaterDeviceFbvEJKPS1_EEEOT_DpOT0_ +00090890 00090896 ._ZNSt16allocator_traitsISaIhEE9_S_selectIKS0_EENSt9enable_ifIXntsrNS1_15__select_helperIT_EE5valueES6_E4typeERS6_ +000908A0 000908A6 ._ZNSt6vectorI19struct_TerminalListSaIS0_EE6resizeEm +000908B0 000908B6 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2Ev +000908C0 000908C6 ._ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEpLERKl +000908D0 000908D6 ._ZN8nlohmann6detail11parse_errorC2EimPKc +000908E0 000908E6 ._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ +000908F0 000908F6 ._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +00090900 00090906 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKSA_RKSB_RKS7_RKS5_RKS3_ +00090910 00090916 ._ZSt14__copy_move_a2ILb0EPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET1_T0_S8_S7_ +00090920 00090926 .MAG_IsProcessingImage +00090930 00090936 ._ZSt7forwardIM21EloTCMHeartBeatDeviceFvvEEOT_RNSt16remove_referenceIS3_E4typeE +00090940 00090946 ._ZNSt11_Deque_baseIcSaIcEE15_M_allocate_mapEm +00090950 00090956 ._ZSt3getILm1EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +00090960 00090966 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_b +00090970 00090976 ._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +00090980 00090986 ._ZN6serial10list_portsEv +00090990 00090996 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000909A0 000909A6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRSsEEEvDpOT_ +000909B0 000909B6 ._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000909C0 000909C6 ._ZSt13__copy_move_aILb0EPPcS1_ET1_T0_S3_S2_ +000909D0 000909D6 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h1Ev +000909E0 000909E6 ._ZSt24__uninitialized_fill_n_aIPhmhhEvT_T0_RKT1_RSaIT2_E +000909F0 000909F6 ._ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +00090A00 00090A06 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implC2Ev +00090A10 00090A16 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +00090A20 00090A26 ._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +00090A30 00090A36 ._ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_ +00090A40 00090A46 ._ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERSG_ +00090A50 00090A56 ._ZN10CMagDevice14FixTemperatureEifjj +00090A60 00090A66 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_tailERS6_ +00090A70 00090A76 ._ZNSt6vectorIhSaIhEE18_M_assign_dispatchIPKhEEvT_S5_St12__false_type +00090A80 00090A86 ._ZNSt8__detail15_Hash_node_baseC2Ev_0 +00090A90 00090A96 ._ZN17ThermalController7onStartEv +00090AA0 00090AA6 ._ZSt18make_move_iteratorIPhESt13move_iteratorIT_ES2_ +00090AB0 00090AB6 ._ZNSsC1EPKcRKSaIcE +00090AC0 00090AC6 ._ZNSt11_Deque_baseIcSaIcEED2Ev +00090AD0 00090AD6 ._ZNSt13move_iteratorIPiEC2ES0_ +00090AE0 00090AE6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +00090AF0 00090AF6 ._ZSt8_DestroyIPhEvT_S1_ +00090B00 00090B06 ._ZNSt26_Maybe_wrap_member_pointerIM19EloTCMUpdaterDeviceFbvEE9__do_wrapES2_ +00090B10 00090B16 ._ZSt8_DestroyIPiEvT_S1_ +00090B20 00090B26 ._ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_ +00090B30 00090B36 ._ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_ +00090B40 00090B46 .usleep +00090B50 00090B56 .strerror +00090B60 00090B66 ._ZNSaISsEC2Ev +00090B70 00090B76 ._ZN8nlohmann6detail22iterator_input_adapterIPhEC2ES2_S2_ +00090B80 00090B86 .MAG_GetEllipseTemperatureInfo +00090B90 00090B96 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_maximumEPSt18_Rb_tree_node_base +00090BA0 00090BA6 ._ZNSsaSEOSs +00090BB0 00090BB6 ._ZSt22__copy_move_backward_aILb1EPhS0_ET1_T0_S2_S1_ +00090BC0 00090BC6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_St8functionIFbiNS0_13parse_event_tESA_EEb +00090BD0 00090BD6 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE7destroyISF_EEvPT_ +00090BE0 00090BE6 ._ZNSt6thread4joinEv +00090BF0 00090BF6 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +00090C00 00090C06 ._ZSt8_DestroyIN6serial8PortInfoEEvPT_ +00090C10 00090C16 ._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_tailERS2_ +00090C20 00090C26 ._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev +00090C30 00090C36 ._ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev +00090C40 00090C46 ._ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERSB_ +00090C50 00090C56 ._ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +00090C60 00090C66 ._ZNSt10_Iter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEELb1EE7_S_baseESB_ +00090C70 00090C76 ._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSS_ +00090C80 00090C86 ._ZN6serial6Serial10SerialImpl13waitByteTimesEm +00090C90 00090C96 ._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERKSI_ +00090CA0 00090CA6 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRbEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +00090CB0 00090CB6 ._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE7destroyIS1_EEvRS2_PT_ +00090CC0 00090CC6 ._ZN9__gnu_cxx13new_allocatorISsE10deallocateEPSsm +00090CD0 00090CD6 ._ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev +00090CE0 00090CE6 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m +00090CF0 00090CF6 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +00090D00 00090D06 ._ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8max_sizeEv +00090D10 00090D16 ._ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_ +00090D20 00090D26 ._ZN6serial16MillisecondTimerC2Ej +00090D30 00090D36 .MAG_GetRgnTemperatureInfo +00090D40 00090D46 ._ZNSt16allocator_traitsISaIiEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +00090D50 00090D56 ._ZNSt13move_iteratorIP19struct_TerminalListEC2ES1_ +00090D60 00090D66 ._ZNSt12_Vector_baseIhSaIhEE12_Vector_implD2Ev +00090D70 00090D76 ._ZSt8__fill_aIhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT_E7__valueEvE6__typeEPS3_S7_RKS3_ +00090D80 00090D86 ._ZNSt6vectorISsSaISsEE3endEv +00090D90 00090D96 ._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSH_EvEEOSC_SG_ +00090DA0 00090DA6 ._ZSt18uninitialized_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +00090DB0 00090DB6 ._ZNSt18condition_variableC1Ev +00090DC0 00090DC6 ._ZN9__gnu_cxx13new_allocatorIPcE10deallocateEPS1_m +00090DD0 00090DD6 ._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE7destroyIS2_EEvPT_ +00090DE0 00090DE6 ._ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEED2Ev +00090DF0 00090DF6 ._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyISt13move_iteratorIPhEEES4_mT_S6_ +00090E00 00090E06 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10_S_destroyIS9_EENSt9enable_ifIXsrNSB_16__destroy_helperIT_EE5valueEvE4typeERSA_PSF_ +00090E10 00090E16 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +00090E20 00090E26 ._ZNKSt6vectorISsSaISsEE4sizeEv +00090E30 00090E36 ._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEmLi0EEEvRT_T0_ +00090E40 00090E46 ._ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEE4baseEv +00090E50 00090E56 ._ZSt9terminatev +00090E60 00090E66 ._ZNSt18condition_variable17__wait_until_implINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +00090E70 00090E76 ._ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb +00090E80 00090E86 ._ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_ +00090E90 00090E96 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +00090EA0 00090EA6 ._ZN17ThermalController13setNewIRFrameEPFvPKhiiiE +00090EB0 00090EB6 ._ZNSt5dequeIcSaIcEED2Ev +00090EC0 00090EC6 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +00090ED0 00090ED6 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +00090EE0 00090EE6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE6strtofERdPKcPPc +00090EF0 00090EF6 ._ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEEC2Ev +00090F00 00090F06 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JRKSE_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSK_ +00090F10 00090F16 ._ZNSt6vectorIiSaIiEE12emplace_backIJiEEEvDpOT_ +00090F20 00090F26 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +00090F30 00090F36 ._ZN6serial6Serial4readERSsm +00090F40 00090F46 ._ZSt8_DestroyIP19struct_TerminalListEvT_S2_ +00090F50 00090F56 ._ZNSt6vectorIN6serial8PortInfoESaIS1_EE19_M_emplace_back_auxIJRKS1_EEEvDpOT_ +00090F60 00090F66 ._ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv +00090F70 00090F76 ._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_error_messageEv +00090F80 00090F86 ._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E +00090F90 00090F96 .MAG_StartProcessImage +00090FA0 00090FA6 ._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv +00090FB0 00090FB6 ._ZN14EloMotorDeviceC2Ev +00090FC0 00090FC6 .MAG_IsLinked +00090FD0 00090FD6 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JEEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSK_DpOSL_ +00090FE0 00090FE6 ._ZSt12__get_helperILm0ERKSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +00090FF0 00090FF6 ._ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE +00091000 00091006 ._ZN17ThermalController15getPresetSerialEv +00091010 00091016 ._ZNSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES9_ +00091020 00091026 ._ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +00091030 00091036 ._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +00091040 00091046 ._ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +00091050 00091056 ._ZN9TCMDevice16handleValidFrameERKSt6vectorIhSaIhEE +00091060 00091066 ._ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv +00091070 00091076 ._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb1EEE +00091080 00091086 ._ZNK9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8max_sizeEv +00091090 00091096 ._ZN10CMagDevice19GetTemperatureProbeEjjj +000910A0 000910A6 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +000910B0 000910B6 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB__0 +000910C0 000910C6 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPiES1_iET0_T_S4_S3_RSaIT1_E +000910D0 000910D6 .__dynamic_cast +000910E0 000910E6 ._ZNSt11unique_lockISt5mutexEC2ERS0_ +000910F0 000910F6 ._ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +00091100 00091106 ._ZNSsixEm +00091110 00091116 ._ZNKSt13move_iteratorIPN6serial8PortInfoEEdeEv +00091120 00091126 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE10deallocateEPSD_m +00091130 00091136 ._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEaSEOS7_ +00091140 00091146 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5resetEv +00091150 00091156 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7is_nullEv +00091160 00091166 ._ZNSt12_Destroy_auxILb1EE9__destroyIPhEEvT_S3_ +00091170 00091176 ._ZNSt13move_iteratorIPSsEC2ES0_ +00091180 00091186 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv +00091190 00091196 ._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +000911A0 000911A6 ._ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEiEvRT_T0_ +000911B0 000911B6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb1EEE +000911C0 000911C6 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000911D0 000911D6 ._ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ +000911E0 000911E6 ._ZN8nlohmann6detail20primitive_iterator_t7set_endEv +000911F0 000911F6 ._ZN6serial6Serial10SerialImpl14setFlowcontrolENS_13flowcontrol_tE +00091200 00091206 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_ +00091210 00091216 ._ZNSt6thread10_Impl_baseD2Ev_0 +00091220 00091226 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +00091230 00091236 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_S8_ET0_T_SC_SB_RSaIT1_E +00091240 00091246 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10_S_destroyISE_EENSt9enable_ifIXsrNSG_16__destroy_helperIT_EE5valueEvE4typeERSF_PSK_ +00091250 00091256 ._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERSK_ +00091260 00091266 ._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSJ_EvEEOSE_SI_ +00091270 00091276 ._ZNSt6vectorIhSaIhEEC2Ev_0 +00091280 00091286 ._ZNSt6vectorI19struct_TerminalListSaIS0_EEC2Ev +00091290 00091296 ._ZN6serial6Serial10SerialImpl11flushOutputEv +000912A0 000912A6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_ +000912B0 000912B6 ._ZNSt6vectorIhSaIhEE12emplace_backIJhEEEvDpOT_ +000912C0 000912C6 ._ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE +000912D0 000912D6 ._ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EEC2IS4_EEOT_ +000912E0 000912E6 ._ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEC2ERKS4_RKS6_RKS7_RKS8_ +000912F0 000912F6 ._ZNSaIiED2Ev +00091300 00091306 ._ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE +00091310 00091316 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv +00091320 00091326 ._ZN10CMagDevice6UnlockEv +00091330 00091336 ._ZN17ThermalController6onStopEv +00091340 00091346 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8pop_backEv +00091350 00091356 ._ZN8nlohmann6detail16invalid_iterator6createEiRKSs +00091360 00091366 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JRKSA_EEEvPT_DpOT0_ +00091370 00091376 ._ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ESA_ +00091380 00091386 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +00091390 00091396 ._ZN17ThermalController8startMagEv +000913A0 000913A6 ._ZNSs6insertEmRKSs +000913B0 000913B6 ._ZNSt14_Function_baseD2Ev +000913C0 000913C6 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE11lower_boundERSA_ +000913D0 000913D6 ._ZSt32__make_move_if_noexcept_iteratorIPSsSt13move_iteratorIS0_EET0_T_ +000913E0 000913E6 ._ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode +000913F0 000913F6 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +00091400 00091406 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backERKS7_ +00091410 00091416 ._ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEppEv +00091420 00091426 ._ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc +00091430 00091436 ._ZN10CMagDevice10LinkCameraEj +00091440 00091446 ._ZSt10__distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag +00091450 00091456 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_ENKUlPSsE_clESG_ +00091460 00091466 ._ZSt9to_stringm +00091470 00091476 ._ZN8nlohmann6detail20primitive_iterator_tC2Ev +00091480 00091486 ._ZN19EloTCMUpdaterDevice11beginUpdateEv +00091490 00091496 ._ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE4sizeEv +000914A0 000914A6 ._ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E +000914B0 000914B6 ._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_ +000914C0 000914C6 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixEOSs +000914D0 000914D6 ._ZNKSt14_Bit_referencecvbEv +000914E0 000914E6 ._ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_ +000914F0 000914F6 ._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +00091500 00091506 ._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE7destroyIS6_EEvPT_ +00091510 00091516 ._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +00091520 00091526 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E7releaseEv +00091530 00091536 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +00091540 00091546 ._ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_ +00091550 00091556 ._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +00091560 00091566 ._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +00091570 00091576 ._ZSt9to_stringi +00091580 00091586 ._ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +00091590 00091596 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJNS0_6detail7value_tEEEEvDpOT_ +000915A0 000915A6 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000915B0 000915B6 ._ZNSt16allocator_traitsISaISsEE8allocateERS0_m +000915C0 000915C6 ._ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_ +000915D0 000915D6 ._ZN6serial6Serial10SerialImpl7setPortERKSs +000915E0 000915E6 ._Z16timespec_from_msj +000915F0 000915F6 ._ZNK9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8max_sizeEv +00091600 00091606 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +00091610 00091616 ._ZSt12__miter_baseIPmENSt11_Miter_baseIT_E13iterator_typeES2_ +00091620 00091626 ._ZNSt11_Tuple_implILm2EJEEC2Ev +00091630 00091636 ._ZN9__gnu_cxx13new_allocatorIhE7destroyIhEEvPT_ +00091640 00091646 ._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +00091650 00091656 ._ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERKS1_ +00091660 00091666 ._ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +00091670 00091676 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv +00091680 00091686 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_ +00091690 00091696 ._ZNSt11_Tuple_implILm0EJOSsEEC2ISsJEvEEOT_DpOT0_ +000916A0 000916A6 ._ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E +000916B0 000916B6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRdEEEvDpOT_ +000916C0 000916C6 ._ZNSt5dequeIcSaIcEE3endEv +000916D0 000916D6 ._ZSt12__miter_baseISt13move_iteratorIPhEENSt11_Miter_baseIT_E13iterator_typeES4_ +000916E0 000916E6 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EEC2Ev +000916F0 000916F6 ._ZN16ThermalTCMDevice14getMotorDeviceEv +00091700 00091706 .MAG_SetColorPalette +00091710 00091716 ._ZNSt5tupleIJRKSsEEC2ES1_ +00091720 00091726 ._ZSt11__addressofISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEPT_RSB_ +00091730 00091736 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0 +00091740 00091746 ._ZN17ThermalController18checkRotateWithFFCEv +00091750 00091756 ._ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv +00091760 00091766 ._ZN9__gnu_cxx13new_allocatorIhE9constructIhJhEEEvPT_DpOT0_ +00091770 00091776 .tcgetattr +00091780 00091786 ._ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IS1_EEOT_ +00091790 00091796 ._ZN6serial6Serial10SerialImpl11setBytesizeENS_10bytesize_tE +000917A0 000917A6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKb +000917B0 000917B6 ._ZN8nlohmann6detail12out_of_rangeC2EiPKc +000917C0 000917C6 ._ZSteqIcEbRKSaIT_ES3_ +000917D0 000917D6 ._ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +000917E0 000917E6 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOS9_ +000917F0 000917F6 ._ZNKSt6vectorIN6serial8PortInfoESaIS1_EE12_M_check_lenEmPKc +00091800 00091806 ._ZN10CMagDevice17IsProcessingImageEv +00091810 00091816 ._ZN9__gnu_cxxneIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +00091820 00091826 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +00091830 00091836 ._ZNSt6vectorIbSaIbEE9push_backEb +00091840 00091846 ._ZNSt6vectorIN6serial8PortInfoESaIS1_EE5beginEv +00091850 00091856 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt18_Rb_tree_node_base +00091860 00091866 ._ZNKSt6vectorIhSaIhEEixEm +00091870 00091876 ._ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPSsES3_EET0_T_S6_S5_ +00091880 00091886 ._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1EEEES4_RKNS1_IT_T0_EE +00091890 00091896 ._ZNSt16allocator_traitsISaI19struct_TerminalListEE11_S_max_sizeIKS1_EENSt9enable_ifIXsrNS2_16__maxsize_helperIT_EE5valueEmE4typeERS7_ +000918A0 000918A6 ._ZNSt10_Iter_baseISt13move_iteratorIPP16TCMVirtualDeviceELb1EE7_S_baseES4_ +000918B0 000918B6 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_ED2Ev +000918C0 000918C6 ._ZSt16forward_as_tupleIJSsEESt5tupleIJDpOT_EES3_ +000918D0 000918D6 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE37select_on_container_copy_constructionERKS8_ +000918E0 000918E6 ._ZN14EloMotorDevice6rotateEi +000918F0 000918F6 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2ERKSE_ +00091900 00091906 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE8allocateERSA_m +00091910 00091916 ._ZNSt13_Bit_iteratormIEl +00091920 00091926 ._ZNSt10_Iter_baseISt13_Bit_iteratorLb0EE7_S_baseES0_ +00091930 00091936 ._ZNSt6thread6detachEv +00091940 00091946 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +00091950 00091956 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implC2Ev +00091960 00091966 ._ZSt12__get_helperILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +00091970 00091976 ._ZNSt10_Iter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEELb0EE7_S_baseES9_ +00091980 00091986 ._ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EEC2IRSA_EEOT_ +00091990 00091996 ._ZNSt5tupleIJOSsEEC2IJSsEvEEDpOT_ +000919A0 000919A6 ._ZNSt13_Bvector_baseISaIbEE8_S_nwordEm +000919B0 000919B6 ._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEixERS5_ +000919C0 000919C6 ._ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_ +000919D0 000919D6 ._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEED2Ev +000919E0 000919E6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSP_ +000919F0 000919F6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS1_ +00091A00 00091A06 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +00091A10 00091A16 ._ZSt18uninitialized_copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +00091A20 00091A26 ._ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv +00091A30 00091A36 ._ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE +00091A40 00091A46 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJRKS9_EEEPT_DpOT0_ +00091A50 00091A56 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE18is_number_unsignedEv +00091A60 00091A66 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE12emplace_backIJS1_EEEvDpOT_ +00091A70 00091A76 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +00091A80 00091A86 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_decimal_pointEv +00091A90 00091A96 ._ZNSt16allocator_traitsISaISsEE12_S_constructISsJRKSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +00091AA0 00091AA6 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JDnEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +00091AB0 00091AB6 ._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +00091AC0 00091AC6 ._ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2ERKS4_ +00091AD0 00091AD6 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +00091AE0 00091AE6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +00091AF0 00091AF6 ._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERbEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00091B00 00091B06 ._ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_ +00091B10 00091B16 ._ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEdeEv +00091B20 00091B26 ._ZNKSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEclIJEvEEbPS0_DpOT_ +00091B30 00091B36 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +00091B40 00091B46 ._ZN10CMagDevice10InitializeEv +00091B50 00091B56 ._ZN9__gnu_cxx13new_allocatorImEC2Ev +00091B60 00091B66 ._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8allocateEmPKv +00091B70 00091B76 ._ZNSt6vectorIhSaIhEE8pop_backEv +00091B80 00091B86 ._ZN11ILimitEventC2Ev +00091B90 00091B96 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EED2Ev +00091BA0 00091BA6 ._ZN11FTDICommandC2ERKSt6vectorIhSaIhEE +00091BB0 00091BB6 ._ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEpLERKl +00091BC0 00091BC6 ._ZN17ThermalController11isTCMOpenedEv +00091BD0 00091BD6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEE +00091BE0 00091BE6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_value7destroyENS_6detail7value_tE +00091BF0 00091BF6 ._ZNSt18condition_variableD1Ev +00091C00 00091C06 ._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv +00091C10 00091C16 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS9_EENSt9enable_ifIXsrNSA_16__maxsize_helperIT_EE5valueEmE4typeERSF_ +00091C20 00091C26 ._ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +00091C30 00091C36 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_ +00091C40 00091C46 ._ZSt8_DestroyIPhhEvT_S1_RSaIT0_E +00091C50 00091C56 ._ZNSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEC2ES2_ +00091C60 00091C66 ._ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEED2Ev +00091C70 00091C76 ._ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev +00091C80 00091C86 ._ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E +00091C90 00091C96 ._ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv +00091CA0 00091CA6 .memmove +00091CB0 00091CB6 ._ZNKSt5arrayIhLm5EE4sizeEv +00091CC0 00091CC6 ._ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev +00091CD0 00091CD6 ._ZN13TCMPresetData12resetDefaultEv +00091CE0 00091CE6 ._ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSO_vEEOSJ_OT0_ +00091CF0 00091CF6 ._ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +00091D00 00091D06 ._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_number_floatEv +00091D10 00091D16 ._ZN9TCMDevice4openESs +00091D20 00091D26 ._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListEC2Ev +00091D30 00091D36 ._ZNSsC2IPcEET_S1_RKSaIcE +00091D40 00091D46 ._ZNSt8__detail20_Prime_rehash_policyC2Ef +00091D50 00091D56 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRSsEEEvDpOT_ +00091D60 00091D66 .MAG_UnLockFrame +00091D70 00091D76 ._ZNSt4pairIKSsiED2Ev +00091D80 00091D86 ._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_JS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ +00091D90 00091D96 ._ZN6serial6Serial10SerialImpl5getRIEv +00091DA0 00091DA6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJEEEPT_DpOT0_ +00091DB0 00091DB6 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implC2Ev +00091DC0 00091DC6 ._ZN6serial11IOExceptionD2Ev +00091DD0 00091DD6 ._ZN9__gnu_cxx13new_allocatorIcE9constructIcJcEEEvPT_DpOT0_ +00091DE0 00091DE6 ._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2IKS1_JEvEEOT_DpOT0_ +00091DF0 00091DF6 ._ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +00091E00 00091E06 ._ZNSt14_Bit_referenceaSERKS_ +00091E10 00091E16 ._ZN6serial6Serial10SerialImpl9writeLockEv +00091E20 00091E26 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_ED2Ev +00091E30 00091E36 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2Ev +00091E40 00091E46 ._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +00091E50 00091E56 .vsnprintf +00091E60 00091E66 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPhS2_EET0_T_S4_S3_ +00091E70 00091E76 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB__0 +00091E80 00091E86 .MAG_LoadBufferedDDT +00091E90 00091E96 ._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE7destroyIS2_EEvPT_ +00091EA0 00091EA6 ._ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5beginEv +00091EB0 00091EB6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_erase_auxESt23_Rb_tree_const_iteratorISA_E +00091EC0 00091EC6 ._ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_ +00091ED0 00091ED6 ._ZNSt6vectorISsSaISsEE9push_backERKSs +00091EE0 00091EE6 ._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERmEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00091EF0 00091EF6 ._ZNSt11unique_lockISt5mutexE6unlockEv +00091F00 00091F06 ._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSH_EvEEOSC_SG_ +00091F10 00091F16 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2Ev +00091F20 00091F26 ._ZNSt26_Maybe_wrap_member_pointerIM10SerialPortFvvEE9__do_wrapES2_ +00091F30 00091F36 ._ZSt7forwardIN8nlohmann6detail13parse_event_tEEOT_RNSt16remove_referenceIS3_E4typeE +00091F40 00091F46 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +00091F50 00091F56 ._ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJSsEEEvDpOT_ +00091F60 00091F66 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv +00091F70 00091F76 ._ZN11CMagService16GetTerminalCountEv +00091F80 00091F86 ._ZSt4moveIRSt8functionIFbiN8nlohmann6detail13parse_event_tERNS1_10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES6_IhSaIhEEEEEEEONSt16remove_referenceIT_E4typeEOSG_ +00091F90 00091F96 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE +00091FA0 00091FA6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEv +00091FB0 00091FB6 ._ZN17ThermalController17createLegalResultEiiii +00091FC0 00091FC6 ._ZNSt6vectorIhSaIhEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00091FD0 00091FD6 ._ZNSt15_Deque_iteratorIcRcPcEC2Ev +00091FE0 00091FE6 ._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEC2EmRKS1_RKS3_RKS7_ +00091FF0 00091FF6 ._ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +00092000 00092006 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +00092010 00092016 ._ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEdeEv +00092020 00092026 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB_ +00092030 00092036 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv +00092040 00092046 ._ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSJ_vEEOSE_OT0_ +00092050 00092056 ._ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2IS3_EERKSaIT_E +00092060 00092066 ._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +00092070 00092076 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12is_discardedEv +00092080 00092086 .MAG_SaveDDT +00092090 00092096 ._ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET1_T0_SH_SG_ +000920A0 000920A6 ._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv +000920B0 000920B6 ._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EOSC_ +000920C0 000920C6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +000920D0 000920D6 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_tailERS6_ +000920E0 000920E6 ._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EED2Ev +000920F0 000920F6 ._ZNKSt9type_infoeqERKS_ +00092100 00092106 ._ZN6serial6Serial5read_EPhm +00092110 00092116 ._ZNSt6vectorIiSaIiEEC2Ev +00092120 00092126 ._ZNSt6threadC2Ev +00092130 00092136 ._ZNSt14__array_traitsIhLm5EE6_S_refERA5_Khm +00092140 00092146 ._ZN6serial6Serial6write_EPKhm +00092150 00092156 ._ZN13TCMPresetData9getSerialEv +00092160 00092166 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +00092170 00092176 ._ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKSsiELb1EEEEERKSaIT_E +00092180 00092186 ._ZN14EloMotorDevice20setMotorDoneListenerEP10IMotorDone +00092190 00092196 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_ +000921A0 000921A6 ._ZN17ThermalController6rotateEi +000921B0 000921B6 ._ZN9TCMDeviceD2Ev_0 +000921C0 000921C6 ._ZNSt10_Head_baseILm0ERKSsLb0EE7_M_headERS2_ +000921D0 000921D6 ._ZNSt8__detail9_EqualityISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEC2Ev +000921E0 000921E6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JEEEvPT_DpOT0_ +000921F0 000921F6 ._ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE +00092200 00092206 ._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18get_number_integerEv +00092210 00092216 ._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_ +00092220 00092226 ._ZN13TCMPresetDataD2Ev +00092230 00092236 ._ZN8nlohmann6detail12out_of_rangeC2ERKS1_ +00092240 00092246 ._ZNSt16allocator_traitsISaIhEE37select_on_container_copy_constructionERKS0_ +00092250 00092256 ._ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E +00092260 00092266 ._ZN16ThermalTCMDevice14getEERomDeviceEv +00092270 00092276 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE13is_structuredEv +00092280 00092286 ._ZNSt16allocator_traitsISaISsEE12_S_constructISsJSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +00092290 00092296 .__errno_location +000922A0 000922A6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE8skip_bomEv +000922B0 000922B6 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000922C0 000922C6 .pthread_equal +000922D0 000922D6 ._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EcvbEv +000922E0 000922E6 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000922F0 000922F6 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5beginEv +00092300 00092306 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_b +00092310 00092316 .MAG_GetRemoteInfo +00092320 00092326 ._ZN9__gnu_cxx17__is_null_pointerIcEEbPT_ +00092330 00092336 ._ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE +00092340 00092346 ._ZNSt13_Bvector_baseISaIbEED2Ev +00092350 00092356 ._ZN9TCMDevice5closeEv +00092360 00092366 ._ZN6serial7TimeoutC2Ejjjjj +00092370 00092376 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +00092380 00092386 ._ZNSt11_Deque_baseIcSaIcEE11_Deque_implC2Ev +00092390 00092396 ._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EcvbEv +000923A0 000923A6 ._ZN17ThermalController13setTempOffsetEd +000923B0 000923B6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +000923C0 000923C6 ._ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_ +000923D0 000923D6 ._ZNSaI19struct_TerminalListEC2Ev +000923E0 000923E6 ._ZNK9__gnu_cxx13new_allocatorIhE8max_sizeEv +000923F0 000923F6 ._ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_ +00092400 00092406 ._ZSt13copy_backwardIPPcS1_ET0_T_S3_S2_ +00092410 00092416 ._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +00092420 00092426 ._ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJRKSsEEEvDpOT_ +00092430 00092436 ._ZN17ThermalController21getTemperatureAtPointEii +00092440 00092446 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +00092450 00092456 ._ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +00092460 00092466 ._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyEv +00092470 00092476 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEED2Ev +00092480 00092486 ._ZSt12__get_helperILm0EOSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS2_DpT1_EE +00092490 00092496 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRbEEEvDpOT_ +000924A0 000924A6 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000924B0 000924B6 ._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_ +000924C0 000924C6 ._ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev +000924D0 000924D6 ._ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEiEvRT_T0_ +000924E0 000924E6 ._ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EE7_M_headERS5_ +000924F0 000924F6 ._ZNKSt6vectorIhSaIhEE8max_sizeEv +00092500 00092506 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JRKS5_EEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSD_DpOSE_ +00092510 00092516 ._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev_0 +00092520 00092526 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EED2Ev +00092530 00092536 ._ZNSt6vectorIbSaIbEED2Ev +00092540 00092546 ._ZSt25__throw_bad_function_callv +00092550 00092556 ._ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERS1_ +00092560 00092566 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS8_ +00092570 00092576 ._ZNKSs4dataEv +00092580 00092586 ._ZN11FTDICommand10getCommandEv +00092590 00092596 ._ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000925A0 000925A6 .MAG_SetAutoEnlargePara +000925B0 000925B6 ._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000925C0 000925C6 ._ZN11CMagService11EnumCamerasEv +000925D0 000925D6 ._ZSt3maxIiERKT_S2_S2_ +000925E0 000925E6 ._ZSt12__niter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEENSt11_Niter_baseIT_E13iterator_typeESD_ +000925F0 000925F6 ._ZNSt6vectorIN6serial8PortInfoESaIS1_EE3endEv +00092600 00092606 ._ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E +00092610 00092616 ._ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEEvRKT_RNS9_8string_tE +00092620 00092626 ._ZN13TCMPresetDataC2ESt6vectorIhSaIhEE +00092630 00092636 ._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +00092640 00092646 ._ZNSaIP16TCMVirtualDeviceEC2Ev +00092650 00092656 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +00092660 00092666 ._ZSt4moveIRcEONSt16remove_referenceIT_E4typeEOS2_ +00092670 00092676 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +00092680 00092686 ._ZSt14__copy_move_a2ILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +00092690 00092696 ._ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_ET1_T0_SA_S9_ +000926A0 000926A6 ._ZNKSt6vectorIbSaIbEE3endEv +000926B0 000926B6 ._ZNSt11_Tuple_implILm0EJOSsEEC2EOS1_ +000926C0 000926C6 ._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000926D0 000926D6 ._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000926E0 000926E6 ._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000926F0 000926F6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_ +00092700 00092706 ._ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEEC2Ev +00092710 00092716 ._ZN16TCMFrameDelegateC2Ev +00092720 00092726 ._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev +00092730 00092736 ._ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +00092740 00092746 ._ZN11FTDICommandD2Ev +00092750 00092756 ._ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +00092760 00092766 ._ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv +00092770 00092776 ._ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERKSG_ +00092780 00092786 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSD_ +00092790 00092796 ._ZNSt12_Vector_baseIhSaIhEEC2Ev +000927A0 000927A6 ._ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc +000927B0 000927B6 ._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEED2Ev +000927C0 000927C6 ._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERdEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000927D0 000927D6 ._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ +000927E0 000927E6 ._ZSt7forwardIRKSaISt4pairIKSsiEEEOT_RNSt16remove_referenceIS6_E4typeE +000927F0 000927F6 ._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEC2ERS9_ +00092800 00092806 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +00092810 00092816 ._ZSt18uninitialized_copyIPhS0_ET0_T_S2_S1_ +00092820 00092826 ._ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv +00092830 00092836 ._ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EE7_S_cgetERKS3_ +00092840 00092846 ._ZSt7advanceIPhmEvRT_T0_ +00092850 00092856 ._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv +00092860 00092866 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +00092870 00092876 ._ZNK9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8max_sizeEv +00092880 00092886 ._ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPhS1_EEvEEvT_S7_ +00092890 00092896 ._ZN17ThermalController7stopMagEv +000928A0 000928A6 ._ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_ +000928B0 000928B6 ._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEmiERKl +000928C0 000928C6 ._ZNKSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEclIJEvEEvPS0_DpOT_ +000928D0 000928D6 .MAG_GetEXLevel +000928E0 000928E6 ._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE10deallocateEPS2_m +000928F0 000928F6 ._ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_ +00092900 00092906 ._ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv +00092910 00092916 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +00092920 00092926 ._ZNKSt15_Deque_iteratorIcRcPcEixEl +00092930 00092936 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +00092940 00092946 .strcmp +00092950 00092956 ._ZN10SerialPort11setDelegateEP19IHandleDataDelegate +00092960 00092966 ._ZN17ThermalController16setDistanceErrorEPFvvE +00092970 00092976 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +00092980 00092986 ._ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E +00092990 00092996 ._ZSt4moveIRiEONSt16remove_referenceIT_E4typeEOS2_ +000929A0 000929A6 ._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIPKhEEPhmT_S6_ +000929B0 000929B6 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +000929C0 000929C6 ._ZN17ThermalController22readTemperatureAtPointEiiP17TemperatureResult +000929D0 000929D6 ._ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +000929E0 000929E6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_ +000929F0 000929F6 ._ZN9__gnu_cxxeqIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +00092A00 00092A06 ._ZN10CMagDevice10SetFFCModeEi +00092A10 00092A16 ._ZNSt13_Bit_iteratorppEi +00092A20 00092A26 ._ZN19EloTCMUpdaterDeviceC2Ev +00092A30 00092A36 ._ZNSt16allocator_traitsISaIhEE9constructIhJRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +00092A40 00092A46 ._ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +00092A50 00092A56 .__cxa_allocate_exception +00092A60 00092A66 ._ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_ +00092A70 00092A76 ._ZSt11__addressofISt4pairIKSsiEEPT_RS3_ +00092A80 00092A86 ._ZNSt5dequeIcSaIcEE16_M_pop_front_auxEv +00092A90 00092A96 ._ZNSt7_Mem_fnIM10SerialPortFvvEEC2ES2_ +00092AA0 00092AA6 ._ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev +00092AB0 00092AB6 ._ZSt12__get_helperILm1EP19EloTCMUpdaterDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +00092AC0 00092AC6 ._ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +00092AD0 00092AD6 ._ZNSt10__pair_getILm0EE5__getIKSsiEERT_RSt4pairIS3_T0_E +00092AE0 00092AE6 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +00092AF0 00092AF6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +00092B00 00092B06 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS2_ +00092B10 00092B16 ._ZNSt6vectorIiSaIiEE9push_backEOi +00092B20 00092B26 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv +00092B30 00092B36 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_headERS6_ +00092B40 00092B46 ._ZN8nlohmann6detail9exceptionD2Ev_0 +00092B50 00092B56 ._ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJRKhEEEvDpOT_ +00092B60 00092B66 ._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev +00092B70 00092B76 ._ZNSaIcED1Ev +00092B80 00092B86 ._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEv +00092B90 00092B96 ._ZNSt5dequeIcSaIcEE5frontEv +00092BA0 00092BA6 ._ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_S_cgetERKS2_ +00092BB0 00092BB6 ._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE10deallocateEPS1_m +00092BC0 00092BC6 ._ZN6serial6Serial5writeEPKhm +00092BD0 00092BD6 ._ZNKSt6chrono8durationIlSt5ratioILl1ELl1000EEE5countEv +00092BE0 00092BE6 ._ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +00092BF0 00092BF6 ._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS6_14adl_serializerES9_IhSaIhEEEEEESH_vEEOT_OT0_ +00092C00 00092C06 ._ZNSt8__detail20_Prime_rehash_policy8_M_resetEm +00092C10 00092C16 ._ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv +00092C20 00092C26 ._ZN10CMagDevice10TriggerFFCEv +00092C30 00092C36 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_binaryEv +00092C40 00092C46 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJS7_EEEvDpOT_ +00092C50 00092C56 ._ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJhEEEvDpOT_ +00092C60 00092C66 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +00092C70 00092C76 ._ZNKSt6vectorIhSaIhEE5frontEv +00092C80 00092C86 ._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8allocateEmPKv +00092C90 00092C96 ._ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +00092CA0 00092CA6 ._ZN6serial6Serial10SerialImpl11setBaudrateEm +00092CB0 00092CB6 ._ZSt11__addressofIKhEPT_RS1_ +00092CC0 00092CC6 ._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JRKSF_EEEvPT_DpOT0_ +00092CD0 00092CD6 ._ZNSt5dequeIcSaIcEE9push_backEOc +00092CE0 00092CE6 ._ZNSt16allocator_traitsISaIiEE7destroyIiEEvRS0_PT_ +00092CF0 00092CF6 ._ZNSt6vectorI19struct_TerminalListSaIS0_EED2Ev +00092D00 00092D06 ._ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE +00092D10 00092D16 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_ +00092D20 00092D26 ._ZN17ThermalController7triggerEv +00092D30 00092D36 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +00092D40 00092D46 .localeconv +00092D50 00092D56 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_ +00092D60 00092D66 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJNS0_6detail7value_tEEEEvDpOT_ +00092D70 00092D76 ._ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJiEEEvDpOT_ +00092D80 00092D86 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EEC2Ev +00092D90 00092D96 ._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE8allocateEmPKv +00092DA0 00092DA6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRdEEEvPT_DpOT0_ +00092DB0 00092DB6 ._ZN14EloEEROMDevice11writePresetERKSt6vectorIhSaIhEE +00092DC0 00092DC6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS8_m +00092DD0 00092DD6 ._ZNSt9exceptionD2Ev +00092DE0 00092DE6 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJS6_EEEvDpOT_ +00092DF0 00092DF6 .__cxa_free_exception +00092E00 00092E06 ._ZNKSt13move_iteratorIPN6serial8PortInfoEE4baseEv +00092E10 00092E16 ._ZN6serial6Serial10SerialImpl12waitReadableEj +00092E20 00092E26 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E +00092E30 00092E36 ._ZNKSt13move_iteratorIP19struct_TerminalListE4baseEv +00092E40 00092E46 ._ZStneIPSsEbRKSt13move_iteratorIT_ES5_ +00092E50 00092E56 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +00092E60 00092E66 .MAG_LockFrame +00092E70 00092E76 ._ZN9TCMDevice19getTCMUpdaterDeviceEv +00092E80 00092E86 ._ZNSt13_Bit_iteratorppEv +00092E90 00092E96 ._ZNSt6vectorIiSaIiEEixEm +00092EA0 00092EA6 ._ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EED2Ev +00092EB0 00092EB6 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEclEv +00092EC0 00092EC6 ._ZNSt11_Tuple_implILm0EJRKSsEEC2EOS2_ +00092ED0 00092ED6 ._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERSK_ +00092EE0 00092EE6 .MAG_IsChannelAvailable +00092EF0 00092EF6 .MAG_GetOutputBMPdataRGB24 +00092F00 00092F06 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS2_IS6_SaIS6_EE +00092F10 00092F16 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +00092F20 00092F26 ._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0 +00092F30 00092F36 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EED2Ev +00092F40 00092F46 ._ZN13TCMPresetData10getOffsetYEv +00092F50 00092F56 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPKSt18_Rb_tree_node_base +00092F60 00092F66 ._ZSt12__miter_baseISt13move_iteratorIP19struct_TerminalListEENSt11_Miter_baseIT_E13iterator_typeES5_ +00092F70 00092F76 ._ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_ +00092F80 00092F86 ._ZSt3minIiERKT_S2_S2_ +00092F90 00092F96 ._ZSt11_Hash_bytesPKvmm +00092FA0 00092FA6 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv +00092FB0 00092FB6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +00092FC0 00092FC6 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +00092FD0 00092FD6 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +00092FE0 00092FE6 ._ZNSt16allocator_traitsISaIiEE12_S_constructIiJiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +00092FF0 00092FF6 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +00093000 00093006 ._ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +00093010 00093016 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JRKS5_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOSB_ +00093020 00093026 ._ZSt19__throw_logic_errorPKc +00093030 00093036 ._ZN8nlohmann6detail9exceptionC2ERKS1_ +00093040 00093046 ._ZSt18uninitialized_copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +00093050 00093056 ._ZN13TCMPresetData8encodingEv +00093060 00093066 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JNS0_6detail7value_tEEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSF_DpOSG_ +00093070 00093076 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +00093080 00093086 ._ZSt19__iterator_categoryIPKhENSt15iterator_traitsIT_E17iterator_categoryERKS3_ +00093090 00093096 ._ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSJ_vEEOSE_OT0_ +000930A0 000930A6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKNS_27byte_container_with_subtypeIS5_EE +000930B0 000930B6 ._ZNK6serial6Serial10SerialImpl7getPortEv +000930C0 000930C6 ._ZN9TCMDevice11updateFrameEi +000930D0 000930D6 ._ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2Ev +000930E0 000930E6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE +000930F0 000930F6 ._ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2Ev +00093100 00093106 ._ZN10CMagDeviceD2Ev +00093110 00093116 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPhES3_EET0_T_S6_S5_ +00093120 00093126 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8allocateEmPKv +00093130 00093136 ._ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_ +00093140 00093146 ._ZN6serial6Serial10SerialImpl8readLockEv +00093150 00093156 ._ZSt19__iterator_categoryISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEENSt15iterator_traitsIT_E17iterator_categoryERKSE_ +00093160 00093166 ._ZN14EloEEROMDeviceD2Ev +00093170 00093176 ._ZNSt16allocator_traitsISaIhEE9constructIhJhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +00093180 00093186 ._ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_ +00093190 00093196 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRbEEEvPT_DpOT0_ +000931A0 000931A6 ._ZNSt6vectorIhSaIhEE6resizeEmRKh +000931B0 000931B6 ._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv +000931C0 000931C6 ._ZNK9__gnu_cxx13new_allocatorIPcE8max_sizeEv +000931D0 000931D6 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000931E0 000931E6 .MAG_GetOutputBMPdata +000931F0 000931F6 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_ +00093200 00093206 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +00093210 00093216 ._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m +00093220 00093226 ._ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEESsEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +00093230 00093236 ._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv +00093240 00093246 ._ZNSt8iteratorISt19output_iterator_tagvvvvEC2Ev +00093250 00093256 ._ZNSt6thread2idC2Ev +00093260 00093266 ._ZNSaImED2Ev +00093270 00093276 ._ZNSt18_Bit_iterator_base7_M_incrEl +00093280 00093286 ._ZN8nlohmann6detaileqENS0_20primitive_iterator_tES1_ +00093290 00093296 ._ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE6_S_getERS2_ +000932A0 000932A6 ._ZN9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSB_ +000932B0 000932B6 ._ZNSt6vectorIbSaIbEE5beginEv +000932C0 000932C6 ._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEED2Ev +000932D0 000932D6 ._ZN10CMagDevice27SetEstimateUnderArmTempModeE19BodyTempConvertMode +000932E0 000932E6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +000932F0 000932F6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +00093300 00093306 ._ZSt3maxImERKT_S2_S2_ +00093310 00093316 .MAG_LinkCamera +00093320 00093326 ._ZNSt13runtime_errorD1Ev +00093330 00093336 ._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +00093340 00093346 ._ZdaPv +00093350 00093356 ._ZSt7forwardIN6serial8PortInfoEEOT_RNSt16remove_referenceIS2_E4typeE +00093360 00093366 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv +00093370 00093376 ._ZSt18uninitialized_copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +00093380 00093386 ._ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator +00093390 00093396 ._ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EEC2IRSF_EEOT_ +000933A0 000933A6 ._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EcvbEv +000933B0 000933B6 ._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +000933C0 000933C6 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000933D0 000933D6 ._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +000933E0 000933E6 ._ZN8nlohmann6detail10type_errorD2Ev +000933F0 000933F6 ._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +00093400 00093406 ._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSO_DpT1_EE +00093410 00093416 ._ZSt4moveIRP16TCMVirtualDeviceEONSt16remove_referenceIT_E4typeEOS4_ +00093420 00093426 ._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb1EE7_S_baseES7_ +00093430 00093436 ._ZN6serial22PortNotOpenedExceptionD2Ev +00093440 00093446 ._ZN8nlohmann6detail20primitive_iterator_tppEv +00093450 00093456 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +00093460 00093466 ._ZNSt16allocator_traitsISaISsEE10_S_destroyISsEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +00093470 00093476 ._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +00093480 00093486 ._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implD2Ev +00093490 00093496 ._ZN6serial6Serial10SerialImpl5flushEv +000934A0 000934A6 ._ZSt7forwardIM10SerialPortFvvEEOT_RNSt16remove_referenceIS3_E4typeE +000934B0 000934B6 ._ZNSs6appendEPKc +000934C0 000934C6 ._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000934D0 000934D6 .memcmp +000934E0 000934E6 ._ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +000934F0 000934F6 ._ZNSt6threadC2IM21EloTCMHeartBeatDeviceFvvEJKPS1_EEEOT_DpOT0_ +00093500 00093506 ._ZN16ThermalTCMDevice18getProximityDeviceEv +00093510 00093516 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12emplace_backIJS7_EEEvDpOT_ +00093520 00093526 ._ZN17ThermalController16getPresetOffsetXEv +00093530 00093536 ._ZNSt4pairIKSsiEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERS4_IJDpT1_EESt12_Index_tupleIJXspT0_EEESD_IJXspT2_EEE +00093540 00093546 ._ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode +00093550 00093556 ._ZNK8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +00093560 00093566 ._ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv +00093570 00093576 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm +00093580 00093586 .globfree +00093590 00093596 ._ZNSt8__detail19_Node_iterator_baseISt4pairIKSsiELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +000935A0 000935A6 ._ZN6serial6Serial10SerialImpl6getDSREv +000935B0 000935B6 ._ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE +000935C0 000935C6 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000935D0 000935D6 ._ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS9_ +000935E0 000935E6 ._ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_ +000935F0 000935F6 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EEC2Ev +00093600 00093606 ._ZSt12__niter_baseIPKhENSt11_Niter_baseIT_E13iterator_typeES3_ +00093610 00093616 ._ZSt12__get_helperILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +00093620 00093626 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +00093630 00093636 ._ZNSt6vectorIhSaIhEED2Ev_0 +00093640 00093646 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE7destroyIS5_EEvRS6_PT_ +00093650 00093656 ._ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +00093660 00093666 ._ZNKSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +00093670 00093676 ._ZSt18uninitialized_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_ET0_T_SC_SB_ +00093680 00093686 ._ZNK6serial6Serial10SerialImpl9getParityEv +00093690 00093696 ._ZSt3getILm0EKSsiERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS5_ +000936A0 000936A6 ._ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJS7_EEvPT_DpOT0_ +000936B0 000936B6 ._ZSt4swapIPFbRSt9_Any_dataRKS0_St18_Manager_operationEEvRT_S8_ +000936C0 000936C6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_b +000936D0 000936D6 ._ZN6serial6Serial10SerialImpl5closeEv +000936E0 000936E6 .MAG_GetCurrentCameraInnerTemperature +000936F0 000936F6 ._ZSteqIPSsEbRKSt13move_iteratorIT_ES5_ +00093700 00093706 ._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEplERKl +00093710 00093716 ._ZSt9__advanceIPhlEvRT_T0_St26random_access_iterator_tag +00093720 00093726 ._ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_ +00093730 00093736 .__cxa_throw +00093740 00093746 ._ZNKSt6vectorIhSaIhEE4dataEv +00093750 00093756 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRbEEEvDpOT_ +00093760 00093766 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB__0 +00093770 00093776 ._ZN6serial6Serial10SerialImpl8setBreakEb +00093780 00093786 ._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSJ_EvEEOSE_SI_ +00093790 00093796 ._ZNSaISt4pairIKSsiEED2Ev +000937A0 000937A6 ._ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm +000937B0 000937B6 ._ZSt10__fill_n_aIP19struct_TerminalListmS0_EN9__gnu_cxx11__enable_ifIXntsrSt11__is_scalarIT1_E7__valueET_E6__typeES7_T0_RKS5_ +000937C0 000937C6 ._ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_St26random_access_iterator_tag +000937D0 000937D6 ._ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_ +000937E0 000937E6 ._ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000937F0 000937F6 ._ZN8nlohmann6detail13input_adapterIhLm320659EEEDTcl13input_adapterfp_plfp_T0_EERAT0__T_ +00093800 00093806 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_headERS6_ +00093810 00093816 ._ZSt7forwardIRA320659_hEOT_RNSt16remove_referenceIS2_E4typeE +00093820 00093826 ._ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_ +00093830 00093836 ._ZNKSt16initializer_listImE3endEv +00093840 00093846 ._ZSt32__make_move_if_noexcept_iteratorIP19struct_TerminalListSt13move_iteratorIS1_EET0_T_ +00093850 00093856 ._ZNSt16allocator_traitsISaIiEE8max_sizeERKS0_ +00093860 00093866 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +00093870 00093876 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_ +00093880 00093886 ._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7__0 +00093890 00093896 ._ZN8nlohmann14adl_serializerIlvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERlEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000938A0 000938A6 ._ZNSt31_Maybe_unary_or_binary_functionIvJP21EloTCMHeartBeatDeviceEEC2Ev +000938B0 000938B6 ._ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000938C0 000938C6 .MAG_FixTemperature +000938D0 000938D6 ._ZSt4swapIPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEvRT_SH_ +000938E0 000938E6 ._ZNSt16allocator_traitsISaIhEE8max_sizeERKS0_ +000938F0 000938F6 ._ZSt18uninitialized_copyIPKhPhET0_T_S4_S3_ +00093900 00093906 ._ZNSt10_Iter_baseIPP16TCMVirtualDeviceLb0EE7_S_baseES2_ +00093910 00093916 ._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_ +00093920 00093926 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorISB_E +00093930 00093936 ._ZN17ThermalController17setUpdateCallbackEPFvbiE +00093940 00093946 ._ZNKSt4hashISsEclERKSs +00093950 00093956 ._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE12_S_constructIS1_JS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_ +00093960 00093966 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implD2Ev +00093970 00093976 ._ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St20forward_iterator_tag +00093980 00093986 ._ZNKSt6vectorIhSaIhEE4sizeEv +00093990 00093996 ._ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEE16time_since_epochEv +000939A0 000939A6 ._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_ +000939B0 000939B6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE18_M_deallocate_nodeEPNS4_10_Hash_nodeIS2_Lb1EEE +000939C0 000939C6 ._ZNSt5tupleIJRKSsEEC2EOS2_ +000939D0 000939D6 ._ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEiLi0EEEvRKT_RT0_ +000939E0 000939E6 ._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERSI_ +000939F0 000939F6 ._ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EEC2IS4_EEOT_ +00093A00 00093A06 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE +00093A10 00093A16 ._ZNSt20__uninitialized_copyILb0EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEES7_ISB_SaISB_EEEEPSB_EET0_T_SJ_SI_ +00093A20 00093A26 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPKSt18_Rb_tree_node_base +00093A30 00093A36 ._ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +00093A40 00093A46 ._ZNSt6vectorIN6serial8PortInfoESaIS1_EE9push_backERKS1_ +00093A50 00093A56 ._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEED2Ev +00093A60 00093A66 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSM_ +00093A70 00093A76 ._ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode +00093A80 00093A86 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE7destroyISD_EEvPT_ +00093A90 00093A96 ._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_headERS6_ +00093AA0 00093AA6 ._ZNSt6vectorIhSaIhEE17_M_default_appendEm +00093AB0 00093AB6 .strtoull +00093AC0 00093AC6 ._ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_ +00093AD0 00093AD6 .MAG_GetEstimateUnderArmTempMode +00093AE0 00093AE6 ._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +00093AF0 00093AF6 ._ZNSt6vectorIbSaIbEE3endEv +00093B00 00093B06 ._ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base +00093B10 00093B16 ._ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +00093B20 00093B26 ._ZN17ThermalController20getInnerIRCameraTempEv +00093B30 00093B36 ._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERKSN_ +00093B40 00093B46 ._ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm +00093B50 00093B56 ._ZNSt16invalid_argumentC1ERKSs +00093B60 00093B66 ._ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +00093B70 00093B76 ._ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IS1_EEOT_ +00093B80 00093B86 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE11_M_allocateEm +00093B90 00093B96 ._ZNSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +00093BA0 00093BA6 ._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIP16TCMVirtualDeviceEEPT_PKS5_S8_S6_ +00093BB0 00093BB6 ._ZNKSs8capacityEv +00093BC0 00093BC6 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE9_M_invokeIJLm0EEEEbSt12_Index_tupleIJXspT_EEE +00093BD0 00093BD6 ._ZNSt13move_iteratorIPN6serial8PortInfoEEppEv +00093BE0 00093BE6 ._ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E +00093BF0 00093BF6 ._ZN9TCMDevice21getTCMHeartBeatDeviceEv +00093C00 00093C06 ._ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_ +00093C10 00093C16 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEv +00093C20 00093C26 .__cxa_end_catch +00093C30 00093C36 ._ZN6serial8PortInfoC2ERKS0_ +00093C40 00093C46 ._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERlEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00093C50 00093C56 ._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +00093C60 00093C66 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +00093C70 00093C76 ._ZNSt6threadC2IM10SerialPortFvvEJKPS1_EEEOT_DpOT0_ +00093C80 00093C86 ._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS3_EENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE +00093C90 00093C96 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +00093CA0 00093CA6 ._ZSt17__throw_bad_allocv +00093CB0 00093CB6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +00093CC0 00093CC6 ._ZSt25__uninitialized_default_nIP19struct_TerminalListmEvT_T0_ +00093CD0 00093CD6 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +00093CE0 00093CE6 ._ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8max_sizeEv +00093CF0 00093CF6 ._ZN17ThermalController9isWorkingEv +00093D00 00093D06 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv +00093D10 00093D16 .MAG_DelChannel +00093D20 00093D26 ._ZNSt18_Rb_tree_node_base10_S_minimumEPS_ +00093D30 00093D36 ._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE +00093D40 00093D46 ._ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_S_cgetERKS2_ +00093D50 00093D56 ._ZNSt16allocator_traitsISaIiEE9constructIiJRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +00093D60 00093D66 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5emptyEv +00093D70 00093D76 ._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv +00093D80 00093D86 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10is_booleanEv +00093D90 00093D96 ._ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EEC2IRS6_EEOT_ +00093DA0 00093DA6 ._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +00093DB0 00093DB6 ._ZN9__gnu_cxxneIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +00093DC0 00093DC6 ._ZSt27__uninitialized_default_n_aIP19struct_TerminalListmS0_EvT_T0_RSaIT1_E +00093DD0 00093DD6 ._ZN8nlohmann6detail11parse_errorD2Ev +00093DE0 00093DE6 ._ZN6serial11IOExceptionC2ESsii +00093DF0 00093DF6 ._ZNKSs7compareEmmPKc +00093E00 00093E06 ._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev_0 +00093E10 00093E16 ._ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +00093E20 00093E26 ._ZN8nlohmann6detail11parse_error15position_stringERKNS0_10position_tE +00093E30 00093E36 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +00093E40 00093E46 ._ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE +00093E50 00093E56 ._ZSt34__uninitialized_move_if_noexcept_aIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_SaIS8_EET0_T_SC_SB_RT1_ +00093E60 00093E66 ._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m +00093E70 00093E76 ._ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE +00093E80 00093E86 ._ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt15iterator_traitsIT_E17iterator_categoryERKSF_ +00093E90 00093E96 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_ +00093EA0 00093EA6 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +00093EB0 00093EB6 ._ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEcvbEv +00093EC0 00093EC6 ._ZSt3getILm0EJRKSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS7_ +00093ED0 00093ED6 ._ZNKSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +00093EE0 00093EE6 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +00093EF0 00093EF6 ._ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm +00093F00 00093F06 .MAG_GetTemperatureProbe2 +00093F10 00093F16 ._ZN18ITCMUpdateDelegateC2Ev +00093F20 00093F26 ._ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +00093F30 00093F36 ._ZNKSt6vectorIbSaIbEE4sizeEv +00093F40 00093F46 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_ +00093F50 00093F56 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPSsES1_SsET0_T_S4_S3_RSaIT1_E +00093F60 00093F66 ._ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3endEv +00093F70 00093F76 ._ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +00093F80 00093F86 ._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m +00093F90 00093F96 ._ZN16TCMVirtualDeviceC2Ev +00093FA0 00093FA6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_b +00093FB0 00093FB6 ._ZN9__gnu_cxx13new_allocatorIiE9constructIiJRKiEEEvPT_DpOT0_ +00093FC0 00093FC6 ._ZSt13__copy_move_aILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +00093FD0 00093FD6 ._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +00093FE0 00093FE6 ._ZNSt14_Bit_referenceaSEb +00093FF0 00093FF6 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +00094000 00094006 ._ZNSaIN6serial8PortInfoEED2Ev +00094010 00094016 ._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEclEv +00094020 00094026 ._ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EEC2ERKS2_ +00094030 00094036 ._ZN10SerialPortD2Ev +00094040 00094046 ._ZN8nlohmann6detail22iterator_input_adapterIPhE13get_characterEv +00094050 00094056 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +00094060 00094066 .MAG_SetEstimateUnderArmTempMode +00094070 00094076 ._ZNSt18_Rb_tree_node_base10_S_maximumEPS_ +00094080 00094086 ._ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEiEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +00094090 00094096 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000940A0 000940A6 ._ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES8_ +000940B0 000940B6 ._ZNSt6vectorIhSaIhEE13_M_assign_auxIPKhEEvT_S5_St20forward_iterator_tag +000940C0 000940C6 .MAG_IsInitialized +000940D0 000940D6 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +000940E0 000940E6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE +000940F0 000940F6 ._ZNSt10_Iter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEELb0EE7_S_baseESB_ +00094100 00094106 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +00094110 00094116 ._ZNSt6vectorI19struct_TerminalListSaIS0_EE15_M_erase_at_endEPS0_ +00094120 00094126 ._ZN17ThermalController9enableFFCEb +00094130 00094136 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Eb +00094140 00094146 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EC2ESI_RKSJ_ +00094150 00094156 ._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE12_M_find_nodeEmRS1_m +00094160 00094166 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +00094170 00094176 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv +00094180 00094186 ._ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_S9_ET0_T_SH_SG_RSaIT1_E +00094190 00094196 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_ +000941A0 000941A6 ._ZSt22__uninitialized_copy_aISt13move_iteratorIPP16TCMVirtualDeviceES3_S2_ET0_T_S6_S5_RSaIT1_E +000941B0 000941B6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5eraseINS_6detail9iter_implIS6_EELi0EEET_SB_ +000941C0 000941C6 .MAG_SetIoAlarmState +000941D0 000941D6 .strtoll +000941E0 000941E6 ._ZN17ThermalController7stopTCMEv +000941F0 000941F6 .__cxa_begin_catch +00094200 00094206 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5clearEv +00094210 00094216 ._ZN6serial8PortInfoC2Ev +00094220 00094226 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv +00094230 00094236 ._ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev +00094240 00094246 ._ZNSs9push_backEc +00094250 00094256 ._ZNSt10_Iter_baseIPPcLb0EE7_S_baseES1_ +00094260 00094266 ._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ +00094270 00094276 ._ZSt8_DestroyIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvPT_ +00094280 00094286 ._ZSt4copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +00094290 00094296 ._ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEppEv +000942A0 000942A6 ._ZNSt14numeric_limitsIjE3maxEv +000942B0 000942B6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000942C0 000942C6 ._ZNKSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +000942D0 000942D6 ._ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000942E0 000942E6 ._ZSt13move_backwardIPhS0_ET0_T_S2_S1_ +000942F0 000942F6 ._ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +00094300 00094306 ._ZNSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEC2ES2_ +00094310 00094316 ._ZN9__gnu_cxx13new_allocatorIPcED2Ev +00094320 00094326 ._ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +00094330 00094336 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJS6_EEEvDpOT_ +00094340 00094346 ._ZN10CMagDevice13IsInitializedEv +00094350 00094356 ._ZN8nlohmann6detail17internal_iteratorINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +00094360 00094366 ._ZNSt19_Bit_const_iteratorppEv +00094370 00094376 ._ZSt4copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +00094380 00094386 ._ZN17ThermalController15setTempBoundaryEddd +00094390 00094396 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv +000943A0 000943A6 ._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSQ_DpT1_EE +000943B0 000943B6 ._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv +000943C0 000943C6 ._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc +000943D0 000943D6 ._ZNSt14numeric_limitsIlE3minEv +000943E0 000943E6 ._ZStneIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +000943F0 000943F6 ._ZN6serial6Serial10SerialImpl5writeEPKhm +00094400 00094406 ._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12_M_check_lenEmPKc +00094410 00094416 ._ZSt11__addressofIhEPT_RS0_ +00094420 00094426 ._ZNSt12_Vector_baseIiSaIiEE12_Vector_implD2Ev +00094430 00094436 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm +00094440 00094446 ._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev +00094450 00094456 .pthread_mutex_lock +00094460 00094466 ._ZSt14__copy_move_a2ILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +00094470 00094476 .realloc +00094480 00094486 ._ZSt6fill_nIPhmhET_S1_T0_RKT1_ +00094490 00094496 ._ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_ +000944A0 000944A6 ._ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000944B0 000944B6 ._ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_ +000944C0 000944C6 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEvPT_DpOT0_ +000944D0 000944D6 ._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSI_ +000944E0 000944E6 ._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1000EEEES4_RKNS1_IT_T0_EE +000944F0 000944F6 ._ZNSt6chronomiIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +00094500 00094506 ._ZNKSt13move_iteratorIPiE4baseEv +00094510 00094516 ._ZNSt6vectorISsSaISsEED2Ev +00094520 00094526 ._ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv +00094530 00094536 ._ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv +00094540 00094546 ._ZN14EloMotorDeviceD2Ev +00094550 00094556 ._ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN6serial8PortInfoEES5_EET0_T_S8_S7_ +00094560 00094566 ._ZN18EloProximityDeviceC2Ev +00094570 00094576 ._ZN17ThermalController21setLimitEventListenerEPFvbE +00094580 00094586 ._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE5valueEv +00094590 00094596 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JDnEEEvPT_DpOT0_ +000945A0 000945A6 ._ZSt4fillIPhhEvT_S1_RKT0_ +000945B0 000945B6 ._ZNSt19_Bit_const_iteratorC2EPmj +000945C0 000945C6 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000945D0 000945D6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSO_ +000945E0 000945E6 ._ZN9__gnu_cxx13new_allocatorIhE10deallocateEPhm +000945F0 000945F6 ._ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSH_vEEOSC_OT0_ +00094600 00094606 ._ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE +00094610 00094616 ._ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +00094620 00094626 ._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EEC2ERKSO_ +00094630 00094636 ._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +00094640 00094646 ._ZNSt8__detailneISt4pairIKSsiELb1EEEbRKNS_19_Node_iterator_baseIT_XT0_EEES8_ +00094650 00094656 ._ZNKSt13move_iteratorIPSsEdeEv +00094660 00094666 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EC2ESG_RKSH_ +00094670 00094676 ._ZN8nlohmann14adl_serializerISsvE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEESsEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +00094680 00094686 ._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +00094690 00094696 ._ZNSt10_Hash_impl4hashEPKvmm +000946A0 000946A6 ._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb0EE7_S_baseESD_ +000946B0 000946B6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11lower_boundERS1_ +000946C0 000946C6 ._ZNSt6vectorIhSaIhEE5beginEv +000946D0 000946D6 ._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE9constructIS2_JRKS2_EEEvPT_DpOT0_ +000946E0 000946E6 ._ZNSaIcEC1Ev +000946F0 000946F6 ._ZNSt5dequeIcSaIcEE5beginEv +00094700 00094706 ._ZSt22__copy_move_backward_aILb0EPPcS1_ET1_T0_S3_S2_ +00094710 00094716 ._ZNSt16allocator_traitsISaIhEE10_S_destroyIhEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +00094720 00094726 ._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7set_endEv +00094730 00094736 ._ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET0_T_SF_SE_ +00094740 00094746 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE7destroyIS6_EEvPT_ +00094750 00094756 ._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +00094760 00094766 ._ZNSt5dequeIcSaIcEE9pop_frontEv +00094770 00094776 ._ZdlPvS_ +00094780 00094786 ._ZNSt22__uninitialized_fill_nILb1EE15__uninit_fill_nIPhmhEEvT_T0_RKT1_ +00094790 00094796 ._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv +000947A0 000947A6 ._ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_ +000947B0 000947B6 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8allocateEmPKv +000947C0 000947C6 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2ERKSD_ +000947D0 000947D6 ._ZStmiIcRcPcENSt15_Deque_iteratorIT_T0_T1_E15difference_typeERKS6_S9_ +000947E0 000947E6 ._ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm +000947F0 000947F6 ._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EED2Ev +00094800 00094806 ._ZN9__gnu_cxx13new_allocatorIiE7destroyIiEEvPT_ +00094810 00094816 ._ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE +00094820 00094826 ._ZSt10__distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +00094830 00094836 ._ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi +00094840 00094846 ._ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_ +00094850 00094856 ._ZNKSt15_Deque_iteratorIcRcPcEdeEv +00094860 00094866 ._ZN8nlohmann6detail11other_error6createEiRKSs +00094870 00094876 ._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1EEEES2_ILl1ELl1000000000EElLb1ELb0EE6__castIlS5_EES4_RKNS1_IT_T0_EE +00094880 00094886 ._ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_ +00094890 00094896 ._ZSt4moveIRSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +000948A0 000948A6 ._ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc +000948B0 000948B6 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E7releaseEv +000948C0 000948C6 ._ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv +000948D0 000948D6 ._ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE +000948E0 000948E6 ._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2EOS2_ +000948F0 000948F6 ._ZNSsC1EOSs +00094900 00094906 ._ZNKSt13move_iteratorIPP16TCMVirtualDeviceE4baseEv +00094910 00094916 .MAG_SetIsothermalPara +00094920 00094926 ._ZNSs12_Alloc_hiderC1EPcRKSaIcE +00094930 00094936 ._ZN6serial6Serial15ScopedWriteLockD2Ev +00094940 00094946 ._ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE +00094950 00094956 .MAG_GetOutputRawData +00094960 00094966 ._ZSt13__bind_simpleIM10SerialPortFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +00094970 00094976 .pthread_mutex_destroy +00094980 00094986 ._ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEC2IJRKSt21piecewise_construct_tSt5tupleIJRS2_EES9_IJEEEEEDpOT_ +00094990 00094996 ._ZN8nlohmann6detail11parse_errorC2ERKS1_ +000949A0 000949A6 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_deallocate_nodesEPNS4_10_Hash_nodeIS2_Lb1EEE +000949B0 000949B6 ._ZN6serial6Serial10SerialImpl6setRTSEb +000949C0 000949C6 ._ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE +000949D0 000949D6 ._ZNSt11_Tuple_implILm1EJP10SerialPortEEC2EOS2_ +000949E0 000949E6 ._ZN10CMagDevice10GetCamInfoEv +000949F0 000949F6 ._ZNSt14_Function_baseC2Ev +00094A00 00094A06 ._ZN8nlohmann6detail12out_of_rangeD2Ev +00094A10 00094A16 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +00094A20 00094A26 ._ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EE7_M_headERS5_ +00094A30 00094A36 ._ZNSt6vectorIhSaIhEE6insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00094A40 00094A46 ._ZNSt16allocator_traitsISaISsEE9constructISsJRA1_KcEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS6_ +00094A50 00094A56 ._ZNSt13_Bvector_baseISaIbEE11_M_allocateEm +00094A60 00094A66 ._ZNSt31_Maybe_unary_or_binary_functionIbJP19EloTCMUpdaterDeviceEEC2Ev +00094A70 00094A76 ._ZNKSt6thread8joinableEv +00094A80 00094A86 .write +00094A90 00094A96 ._ZNKSt5arrayIcLm9EE4sizeEv +00094AA0 00094AA6 ._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getISsSsLi0EEET0_v +00094AB0 00094AB6 ._ZNSt16allocator_traitsISaI19struct_TerminalListEE8max_sizeERKS1_ +00094AC0 00094AC6 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +00094AD0 00094AD6 ._Znwm +00094AE0 00094AE6 ._ZSt4copyIPKhPhET0_T_S4_S3_ +00094AF0 00094AF6 ._ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE +00094B00 00094B06 ._ZNK9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8max_sizeEv +00094B10 00094B16 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev +00094B20 00094B26 ._ZSt13__copy_move_aILb1EPiS0_ET1_T0_S2_S1_ +00094B30 00094B36 ._ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv +00094B40 00094B46 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRmEEEvDpOT_ +00094B50 00094B56 ._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m +00094B60 00094B66 ._ZN19EloTCMUpdaterDevice9softResetEv +00094B70 00094B76 ._ZN9__gnu_cxx13new_allocatorISsE9constructISsJRA1_KcEEEvPT_DpOT0_ +00094B80 00094B86 ._ZSteqNSt6thread2idES0_ +00094B90 00094B96 ._ZNSsC1ERKSsmm +00094BA0 00094BA6 ._ZNSt11_Tuple_implILm0EJOSsEE7_M_tailERS1_ +00094BB0 00094BB6 ._ZN9__gnu_cxx14__alloc_traitsISaIhEE15_S_always_equalEv +00094BC0 00094BC6 ._ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +00094BD0 00094BD6 ._ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs +00094BE0 00094BE6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev +00094BF0 00094BF6 ._ZNKSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +00094C00 00094C06 ._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_ +00094C10 00094C16 ._Unwind_Resume +00094C20 00094C26 ._ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +00094C30 00094C36 ._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv +00094C40 00094C46 ._ZNSt13move_iteratorIPP16TCMVirtualDeviceEC2ES2_ +00094C50 00094C56 ._ZN8nlohmann6detail13int_to_stringISsEEvRT_m +00094C60 00094C66 ._ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EE7_M_headERS2_ +00094C70 00094C76 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRlEEEvPT_DpOT0_ +00094C80 00094C86 ._ZNKSt6vectorIhSaIhEE3endEv +00094C90 00094C96 ._ZN9__gnu_cxxmiIPKhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ +00094CA0 00094CA6 ._ZN6serial6Serial9availableEv +00094CB0 00094CB6 ._ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEptEv +00094CC0 00094CC6 ._ZNSt6vectorIhSaIhEE9push_backERKh +00094CD0 00094CD6 ._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSE_DpOSF_ +00094CE0 00094CE6 ._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE10deallocateEPS2_m +00094CF0 00094CF6 ._ZNSt5dequeIcSaIcEE17_M_reallocate_mapEmb +00094D00 00094D06 ._ZNSt10_Head_baseILm0ERKSsLb0EEC2ES1_ +00094D10 00094D16 ._ZN6serial6Serial14ScopedReadLockD2Ev +00094D20 00094D26 ._ZN19EloTCMUpdaterDevice11setFirmDataERKSt6vectorIhSaIhEE +00094D30 00094D36 ._ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +00094D40 00094D46 ._ZNSs12_S_empty_repEv +00094D50 00094D56 ._ZNK6serial6Serial10SerialImpl14getFlowcontrolEv +00094D60 00094D66 ._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS9_EEvPT_ +00094D70 00094D76 ._ZN16TCMVirtualDevice11setDataCommEP9IDataComm +00094D80 00094D86 ._ZNSt6threadaSEOS_ +00094D90 00094D96 ._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mI19struct_TerminalListEEPT_PKS4_S7_S5_ +00094DA0 00094DA6 ._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEElLi0EEEvRT_T0_ +00094DB0 00094DB6 ._ZN17ThermalController21getDefaultCalibrationEv +00094DC0 00094DC6 ._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE7destroyISE_EEvRSF_PT_ +00094DD0 00094DD6 .MAG_GetTemperatureProbe +00094DE0 00094DE6 ._ZNSt6vectorIiSaIiEE9push_backERKi +00094DF0 00094DF6 ._ZN8nlohmann6detail20external_constructorILNS0_7value_tE6EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_17number_unsigned_tE +00094E00 00094E06 ._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EC2ESH_RKSI_ +00094E10 00094E16 ._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JS8_EEEvPT_DpOT0_ +00094E20 00094E26 ._ZNSt11_Tuple_implILm0EJRKSsEE7_M_headERS2_ +00094E30 00094E36 ._ZN10SerialPort9closePortEv +00094E40 00094E46 ._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_ +00094E50 00094E56 ._ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +00094E60 00094E66 ._ZNSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2ERKS4_RKS8_RKS9_RKSA_RKS6_ +00094E70 00094E76 ._ZN17ThermalController12updatePresetEiiSs +00094E80 00094E86 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +00094E90 00094E96 ._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv +00094EA0 00094EA6 ._ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJRKiEEEvDpOT_ +00094EB0 00094EB6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2Ev +00094EC0 00094EC6 ._ZN8nlohmann14adl_serializerImvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERmEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00094ED0 00094ED6 .pthread_mutex_unlock +00094EE0 00094EE6 ._ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_ +00094EF0 00094EF6 ._ZNSt12_Vector_baseISsSaISsEEC2Ev +00094F00 00094F06 ._ZN6serial6SerialD2Ev +00094F10 00094F16 ._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS9_EEEEvEEOS_IT_LS3_2EE +00094F20 00094F26 ._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +00094F30 00094F36 .MAG_FixTemperature2 +00094F40 00094F46 ._ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEED2Ev +00094F50 00094F56 ._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +00094F60 00094F66 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_b +00094F70 00094F76 ._ZNSsaSERKSs +00094F80 00094F86 .memcpy +00094F90 00094F96 ._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv +00094FA0 00094FA6 ._ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_ +00094FB0 00094FB6 ._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +00094FC0 00094FC6 ._ZN9__gnu_cxx13new_allocatorISsEC2Ev +00094FD0 00094FD6 ._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSH_ +00094FE0 00094FE6 ._ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +00094FF0 00094FF6 ._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_ +00095000 00095006 ._ZNSt13runtime_errorC2ERKS_ +00095010 00095016 ._ZNSs6appendERKSs +00095020 00095026 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5clearEv +00095030 00095036 .glob +00095040 00095046 ._ZN9TCMDevice13getFirstNDataEi +00095050 00095056 ._ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc +00095060 00095066 ._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2ERKSD_ +00095070 00095076 ._ZNSt12_Destroy_auxILb0EE9__destroyIPN6serial8PortInfoEEEvT_S5_ +00095080 00095086 ._ZN16TCMVirtualDeviceD2Ev +00095090 00095096 ._ZSt7forwardIRSt4pairIKSsiEEOT_RNSt16remove_referenceIS4_E4typeE +000950A0 000950A6 ._ZN9__gnu_cxx11char_traitsIhE11to_int_typeERKh +000950B0 000950B6 ._ZNSt5arrayIhLm4EE4dataEv +000950C0 000950C6 ._ZN14EloEEROMDevice10readPresetEv +000950D0 000950D6 ._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EcvbEv +000950E0 000950E6 ._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv +000950F0 000950F6 ._ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEdeEv +00095100 00095106 .open +00095110 00095116 ._ZNSaISsEC2Ev_0 +00095120 00095126 ._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EED2Ev +00095130 00095136 ._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2ERKS8_ +00095140 00095146 ._ZN17ThermalController21readTemperatureInRectE4RectP17TemperatureResult +00095150 00095156 ._ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE +00095160 00095166 ._ZSt13__copy_move_aILb1EPhS0_ET1_T0_S2_S1_ +00095170 00095176 ._ZN6serial16MillisecondTimer12timespec_nowEv +00095180 00095186 ._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv +00095190 00095196 ._ZN6serial6Serial8readlineERSsmSs +000951A0 000951A6 ._ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +000951B0 000951B6 ._ZSt3getILm1EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000951C0 000951C6 ._ZSt8_DestroyIPSsEvT_S1_ +000951D0 000951D6 ._ZN6serial6Serial10SerialImpl4readEPhm +000951E0 000951E6 .MAG_GetTemperatureData_Raw +000951F0 000951F6 ._ZNSt26_Maybe_wrap_member_pointerIM21EloTCMHeartBeatDeviceFvvEE9__do_wrapES2_ +00095200 00095206 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base +00095210 00095216 ._ZNKSs4findEPKcm +00095220 00095226 ._ZNSs4_Rep26_M_set_length_and_sharableEm +00095230 00095236 ._ZSt34__uninitialized_move_if_noexcept_aIPSsS0_SaISsEET0_T_S3_S2_RT1_ +00095240 00095246 ._ZNSt6vectorIbSaIbEE8pop_backEv +00095250 00095256 ._ZNKSt13runtime_error4whatEv +00095260 00095266 ._ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESt20back_insert_iteratorIS6_ISA_SaISA_EEEEET0_T_SH_SG_ +00095270 00095276 ._ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE +00095280 00095286 ._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPcEEPT_PKS4_S7_S5_ +00095290 00095296 ._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000952A0 000952A6 ._ZSt13__bind_simpleIM19EloTCMUpdaterDeviceFbvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000952B0 000952B6 ._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs +000952C0 000952C6 ._ZN9__gnu_cxx13new_allocatorIPcE8allocateEmPKv +000952D0 000952D6 ._ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev +000952E0 000952E6 ._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceED2Ev +000952F0 000952F6 ._ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSH_vEEOSC_OT0_ +00095300 00095306 ._ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE +00095310 00095316 ._ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1000EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +00095320 00095326 ._ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +00095330 00095336 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPiES3_EET0_T_S6_S5_ +00095340 00095346 ._ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EEC2IS4_EEOT_ +00095350 00095356 .strtod +00095360 00095366 ._ZN9TCMDevice11checkHeaderERKSt6vectorIhSaIhEE +00095370 00095376 ._ZN8nlohmann6detail10type_errorC2EiPKc +00095380 00095386 ._ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E +00095390 00095396 ._ZN6serial6Serial10SerialImpl13waitForChangeEv +000953A0 000953A6 ._ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ +000953B0 000953B6 ._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERSsEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000953C0 000953C6 ._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_JRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ +000953D0 000953D6 ._ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIPhmEEvT_T0_ +000953E0 000953E6 ._ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET0_T_SH_SG_ +000953F0 000953F6 ._ZNKSt6vectorIbSaIbEE5emptyEv +00095400 00095406 ._ZSt4moveIRhEONSt16remove_referenceIT_E4typeEOS2_ +00095410 00095416 ._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +00095420 00095426 ._ZSt13back_inserterISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEESt20back_insert_iteratorIT_ERSB_ +00095430 00095436 ._ZSteqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +00095440 00095446 ._ZSteqIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +00095450 00095456 ._ZN16TCMVirtualDeviceD2Ev_0 +00095460 00095466 ._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceEC2Ev +00095470 00095476 ._ZN6serial6Serial10SerialImpl6getCTSEv +00095480 00095486 ._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E7releaseEv +00095490 00095496 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000954A0 000954A6 ._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000954B0 000954B6 ._ZNSt10_Head_baseILm0EOSsLb0EE7_M_headERS1_ +000954C0 000954C6 ._ZNSt11_Tuple_implILm1EJEEC2Ev +000954D0 000954D6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_minimumEPSt18_Rb_tree_node_base +000954E0 000954E6 ._ZNK8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +000954F0 000954F6 ._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +00095500 00095506 ._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES4_EET0_T_SA_S9_ +00095510 00095516 ._ZN10IMotorDoneC2Ev +00095520 00095526 ._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE8_M_beginEv +00095530 00095536 ._ZSt12__get_helperILm0ESt7_Mem_fnIM10SerialPortFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +00095540 00095546 ._ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +00095550 00095556 ._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEED2Ev +00095560 00095566 ._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv +00095570 00095576 ._ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET1_T0_SA_S9_ +00095580 00095586 ._ZN9__gnu_cxx13new_allocatorIiEC2Ev +00095590 00095596 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJRS3_EESJ_IJEEEEEvPT_DpOT0_ +000955A0 000955A6 ._ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +000955B0 000955B6 ._ZN9__gnu_cxx14__alloc_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEE17_S_select_on_copyERKS9_ +000955C0 000955C6 ._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISA_E +000955D0 000955D6 ._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000955E0 000955E6 ._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2Ev +000955F0 000955F6 ._ZNSirsERj +00095600 00095606 ._ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm +00095610 00095616 ._ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv +00095620 00095626 ._ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +00095630 00095636 ._ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERS7_ +00095640 00095646 ._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb1EEEm +00095650 00095656 ._ZN9__gnu_cxx12__to_xstringISscEET_PFiPT0_mPKS2_P13__va_list_tagEmS5_z +00095660 00095666 ._ZN17ThermalControllerC2Ev +00095670 00095676 ._ZNK9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +00095680 00095686 ._ZN6serial6Serial10SerialImpl4openEv +00095690 00095696 ._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSO_EvEEOSJ_SN_ +000956A0 000956A6 ._ZN9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSA_ +000956B0 000956B6 ._ZNSt6vectorIhSaIhEE6insertIPhvEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_ +000956C0 000956C6 ._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE7destroyIS9_EEvRSA_PT_ +000956D0 000956D6 .MAG_NewChannel +000956E0 000956E6 ._ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_ +000956F0 000956F6 ._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E7releaseEv +00095700 00095706 ._ZNSt18_Bit_iterator_base12_M_bump_downEv +00095710 00095716 ._ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator +00095720 00095726 ._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv +00095730 00095736 ._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EC2ESG_RKSH_ +00095740 0009576C deregister_tm_clones +00095770 000957AC register_tm_clones +000957B0 000957E2 __do_global_dtors_aux +000957F0 00095825 frame_dummy +00095825 00095830 GetSDKVersion +00095830 00095843 Start +00095843 00095856 Stop +00095856 00095869 IsWorking +00095869 0009587C IsTCMOpen +0009587C 0009588F IsIROpen +0009588F 000958B1 SetNewIRFrameDelegate +000958B1 000958D3 SetNewDistanceDelegate +000958D3 000958F5 SetDistanceError +000958F5 00095929 ReadTemperatureAtPoint +00095929 0009597D ReadTemperatureInRect +0009597D 000959CD SetTempBoundary +000959CD 000959F9 SetTempOffset +000959F9 00095A18 SetUnitMode +00095A18 00095A37 Rotate +00095A37 00095A60 GetInnerIRCameraTemp +00095A60 00095ACD GetInnerIRCameraSerial +00095ACD 00095AF9 SetEmissivity +00095AF9 00095B0C Trigger +00095B0C 00095B95 GetTCMVersion +00095B95 00095C48 SetFirmwareData +00095C48 00095C6A SetUpdateCallback +00095C6A 00095CA0 StartUpdate +00095CA0 00095CC2 SetLimitEventListener +00095CC2 00095CD5 LimitReset +00095CD5 00095CE8 SoftResetTCM +00095CE8 00095DBE UpdatePreset +00095DBE 00095DD1 HasPreset +00095DD1 00095DE4 GetPresetOffsetX +00095DE4 00095DF7 GetPresetOffsetY +00095DF7 00095E80 GetDefaultCalibration +00095E80 00095EED GetPresetSerial +00095EEE 00095F08 _ZNSt6vectorIhSaIhEEC2Ev +00095F08 00095F4B _ZNSt6vectorIhSaIhEED2Ev +00095F4C 0009607C _ZNSt6vectorIhSaIhEE7reserveEm +0009607C 000960AD _ZNSt6vectorIhSaIhEE6assignIPKhvEEvT_S5_ +000960AE 000960F1 _ZNSt6vectorIiSaIiEED2Ev +000960F2 00096112 _ZNSt6vectorIiSaIiEEixEm +00096112 0009612C _ZNSt12_Vector_baseIhSaIhEE12_Vector_implD2Ev +0009612C 00096146 _ZNSt12_Vector_baseIhSaIhEEC2Ev +00096146 00096191 _ZNSt12_Vector_baseIhSaIhEED2Ev +00096192 000961A0 _ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +000961A0 000961C9 _ZSt8_DestroyIPhhEvT_S1_RSaIT0_E +000961CA 000961EC _ZNKSt6vectorIhSaIhEE8max_sizeEv +000961EC 0009620E _ZNKSt6vectorIhSaIhEE8capacityEv +0009620E 00096230 _ZNKSt6vectorIhSaIhEE4sizeEv +00096230 00096255 _ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_ +00096256 000962ED _ZNSt6vectorIhSaIhEE20_M_allocate_and_copyISt13move_iteratorIPhEEES4_mT_S6_ +000962EE 00096322 _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm +00096322 00096353 _ZNSt6vectorIhSaIhEE18_M_assign_dispatchIPKhEEvT_S5_St12__false_type +00096354 0009636E _ZNSt12_Vector_baseIiSaIiEE12_Vector_implD2Ev +0009636E 000963BD _ZNSt12_Vector_baseIiSaIiEED2Ev +000963BE 000963CC _ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +000963CC 000963F5 _ZSt8_DestroyIPiiEvT_S1_RSaIT0_E +000963F6 00096433 _ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2Ev +00096434 0009644E _ZNSaIhED2Ev +0009644E 00096473 _ZSt8_DestroyIPhEvT_S1_ +00096473 0009648D _ZNSt16allocator_traitsISaIhEE8max_sizeERKS0_ +0009648E 0009649C _ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +0009649C 000964B5 _ZNSt13move_iteratorIPhEC2ES0_ +000964B6 000964EE _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm +000964EE 0009651F _ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E +00096520 00096542 _ZN9__gnu_cxx13new_allocatorIhE10deallocateEPhm +00096542 000966EA _ZNSt6vectorIhSaIhEE13_M_assign_auxIPKhEEvT_S5_St20forward_iterator_tag +000966EA 00096704 _ZNSaIiED2Ev +00096704 00096738 _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim +00096738 0009675D _ZSt8_DestroyIPiEvT_S1_ +0009675E 00096778 _ZNSaIhEC2Ev +00096778 00096782 _ZN9__gnu_cxx13new_allocatorIhED2Ev +00096782 00096790 _ZNSt12_Destroy_auxILb1EE9__destroyIPhEEvT_S3_ +00096790 000967AA _ZNSt16allocator_traitsISaIhEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +000967AA 000967E8 _ZN9__gnu_cxx13new_allocatorIhE8allocateEmPKv +000967E8 00096815 _ZSt18uninitialized_copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +00096815 0009684F _ZSt8distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_ +00096850 000968E7 _ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIPKhEEPhmT_S6_ +000968E8 0009692C _ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh +0009692C 00096972 _ZSt4copyIPKhPhET0_T_S4_S3_ +00096972 000969B4 _ZSt7advanceIPKhmEvRT_T0_ +000969B4 000969E5 _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E +000969E6 000969F0 _ZN9__gnu_cxx13new_allocatorIiED2Ev +000969F0 00096A12 _ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim +00096A12 00096A20 _ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_ +00096A20 00096A2A _ZN9__gnu_cxx13new_allocatorIhEC2Ev +00096A2A 00096A3B _ZNK9__gnu_cxx13new_allocatorIhE8max_sizeEv +00096A3B 00096A68 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPhES3_EET0_T_S6_S5_ +00096A68 00096A72 _ZSt19__iterator_categoryIPKhENSt15iterator_traitsIT_E17iterator_categoryERKS3_ +00096A72 00096A8E _ZSt10__distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag +00096A8E 00096AA8 _ZSt12__miter_baseIPKhENSt11_Miter_baseIT_E13iterator_typeES3_ +00096AA8 00096B00 _ZSt14__copy_move_a2ILb0EPKhPhET1_T0_S4_S3_ +00096B00 00096B23 _ZSt9__advanceIPKhlEvRT_T0_St26random_access_iterator_tag +00096B23 00096B50 _ZSt18uninitialized_copyIPKhPhET0_T_S4_S3_ +00096B50 00096B96 _ZSt4copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +00096B96 00096BA4 _ZNSt10_Iter_baseIPKhLb0EE7_S_baseES1_ +00096BA4 00096BBE _ZSt12__niter_baseIPKhENSt11_Niter_baseIT_E13iterator_typeES3_ +00096BBE 00096BD8 _ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_ +00096BD8 00096C09 _ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_ +00096C09 00096C36 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKhPhEET0_T_S6_S5_ +00096C36 00096C50 _ZSt12__miter_baseISt13move_iteratorIPhEENSt11_Miter_baseIT_E13iterator_typeES4_ +00096C50 00096CA8 _ZSt14__copy_move_a2ILb1EPhS0_ET1_T0_S2_S1_ +00096CA8 00096CB6 _ZNSt10_Iter_baseIPhLb0EE7_S_baseES0_ +00096CB6 00096D0A _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +00096D0A 00096D24 _ZNSt10_Iter_baseISt13move_iteratorIPhELb1EE7_S_baseES2_ +00096D24 00096D55 _ZSt13__copy_move_aILb1EPhS0_ET1_T0_S2_S1_ +00096D56 00096D67 _ZNKSt13move_iteratorIPhE4baseEv +00096D67 00096DBB _ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +00096DBC 00096E05 _ZN10CMagDeviceC2Ev +00096E06 00096EBB _ZN10CMagDeviceD2Ev +00096EBC 00096F6E _ZN10CMagDevice10InitializeEv +00096F6E 00096F80 _ZN10CMagDevice10GetCamInfoEv +00096F80 00096F9C _ZN10CMagDevice8IsLinkedEv +00096F9C 00096FF3 _ZN10CMagDevice10LinkCameraEj +00096FF4 00097010 _ZN10CMagDevice13DisLinkCameraEv +00097010 00097034 _ZN10CMagDevice10SetFFCModeEi +00097034 00097050 _ZN10CMagDevice10TriggerFFCEv +00097050 0009706C _ZN10CMagDevice17IsProcessingImageEv +0009706C 0009709B _ZN10CMagDevice19PrepareProcessImageEPFvjiiPvES0_ +0009709C 00097151 _ZN10CMagDevice17StartProcessImageEPFvjjjPvEiiS0_ +00097152 0009716E _ZN10CMagDevice20WillStartImmediatelyEv +0009716E 0009718A _ZN10CMagDevice16StopProcessImageEv +0009718A 000971AE _ZN10CMagDevice15SetColorPaletteE12ColorPalette +000971AE 000971EC _ZN10CMagDevice24SetSubsectionEnlargeParaEiihh +000971EC 00097216 _ZN10CMagDevice17SetIsothermalParaEii +00097216 00097244 _ZN10CMagDevice18SetAutoEnlargeParaEjii +00097244 00097272 _ZN10CMagDevice10SetEXLevelE2EXii +00097272 0009728E _ZN10CMagDevice10GetEXLevelEv +0009728E 000972B8 _ZN10CMagDevice20SetDetailEnhancementEii +000972B8 000972DC _ZN10CMagDevice15SetIOAlarmStateEi +000972DC 00097303 _ZN10CMagDevice10GetFixParaEP14struct_FixPara +00097304 00097341 _ZN10CMagDevice10SetFixParaEPK14struct_FixPara12FixSelection +00097342 00097371 _ZN10CMagDevice16GetOutputBMPdataEPPKhPPK13tagBITMAPINFO +00097372 000973A2 _ZN10CMagDevice21GetOutputBMPdataRGB24EPhji +000973A2 000973D1 _ZN10CMagDevice21GetOutputColorBardataEPPKhPPK13tagBITMAPINFO +000973D2 000973EE _ZN10CMagDevice16GetOutputRawDataEv +000973EE 0009740A _ZN10CMagDevice23GetFrameStatisticalDataEv +0009740A 00097426 _ZN10CMagDevice13GetRemoteInfoEv +00097426 00097462 _ZN10CMagDevice14FixTemperatureEifjj +00097462 0009749A _ZN10CMagDevice14FixTemperatureEifj +0009749A 000974CA _ZN10CMagDevice18GetTemperatureDataEPiji +000974CA 000974FA _ZN10CMagDevice22GetTemperatureData_RawEPiji +000974FA 00097528 _ZN10CMagDevice19GetTemperatureProbeEjjj +00097528 00097552 _ZN10CMagDevice19GetTemperatureProbeEjj +00097552 000975A1 _ZN10CMagDevice22GetLineTemperatureInfoEPijS0_jjjj +000975A2 000975E5 _ZN10CMagDevice22GetRectTemperatureInfoEjjjjPi +000975E6 00097629 _ZN10CMagDevice25GetEllipseTemperatureInfoEjjjjPi +0009762A 0009765C _ZN10CMagDevice21GetRgnTemperatureInfoEPKjjPi +0009765C 00097689 _ZN10CMagDevice14SaveDDT2BufferEPvj +0009768A 00097723 _ZN10CMagDevice15LoadBufferedDDTEP10OutputParaPKvjPFvjjjPvES4_ +00097724 00097750 _ZN10CMagDevice7SaveBMPEjPKc +00097750 00097777 _ZN10CMagDevice7SaveDDTEPKc +00097778 00097808 _ZN10CMagDevice7LoadDDTEP10OutputParaPKcPFvjjjPvES4_ +00097808 00097824 _ZN10CMagDevice4LockEv +00097824 00097840 _ZN10CMagDevice6UnlockEv +00097840 0009785C _ZN10CMagDevice32GetCurrentCameraInnerTemperatureEv +0009785C 00097878 _ZN10CMagDevice20GetCameraTemperatureEv +00097878 00097894 _ZN10CMagDevice19GetSenorTemperatureEv +00097894 000978B8 _ZN10CMagDevice27SetEstimateUnderArmTempModeE19BodyTempConvertMode +000978B8 000978D4 _ZN10CMagDevice27GetEstimateUnderArmTempModeEv +000978D4 000978F0 _ZN10CMagDevice19GetEstimatedEnvTempEv +000978F0 00097928 _ZN10CMagDevice36EstimateUnderArmTempFromForeheadRectEjjjj +00097928 00097952 _ZN10CMagDevice22SetEnvTempEstimateModeEii +00097952 000979AD _ZN10CMagDevice13ConvertPos2XYEjPjS0_ +000979AE 000979D0 _ZN10CMagDevice13ConvertXY2PosEjj +000979D0 000979EA _ZN11CMagServiceC2Ev +000979EA 00097A3F _ZN11CMagServiceD2Ev +00097A40 00097AB2 _ZN11CMagService10InitializeEv +00097AB2 00097AF2 _ZN11CMagService11EnumCamerasEv +00097AF2 00097B23 _ZN11CMagService16GetTerminalCountEv +00097B24 00097B5E _ZN11CMagService15GetTerminalListEP19struct_TerminalListj +00097B5E 00097BCB _ZN13TCMPresetDataC2Ev +00097BCC 00097C5C _ZN13TCMPresetDataC2ESt6vectorIhSaIhEE +00097C5C 00097CC2 _ZN13TCMPresetData12resetDefaultEv +00097CC2 00097CD0 _ZN13TCMPresetData10getRawDataEv +00097CD0 00097CEE _ZN13TCMPresetData7getDataEv +00097CEE 00097D05 _ZN13TCMPresetData10setOffsetXEi +00097D06 00097D1D _ZN13TCMPresetData10setOffsetYEi +00097D1E 00097D47 _ZN13TCMPresetData9setSerialESs +00097D48 00097D59 _ZN13TCMPresetData10getOffsetXEv +00097D5A 00097D6B _ZN13TCMPresetData10getOffsetYEv +00097D6C 00097D7E _ZN13TCMPresetData9getSerialEv +00097D7E 00097D90 _ZN13TCMPresetData7isValidEv +00097D90 00098038 _ZN13TCMPresetData8encodingEv +00098038 000982ED _ZN13TCMPresetData8decodingEv +000982ED 000982F8 _ZN9__gnu_cxx14__alloc_traitsISaIhEE27_S_propagate_on_copy_assignEv +000982F8 00098303 _ZN9__gnu_cxx14__alloc_traitsISaIhEE15_S_always_equalEv +00098304 000985FF _ZNSt6vectorIhSaIhEEaSERKS1_ +00098600 000986A4 _ZNSt6vectorIhSaIhEE6resizeEmRKh +000986A4 000986C0 _ZNSt6vectorIhSaIhEEixEm +000986C0 000986D3 _ZStneIhEbRKSaIT_ES3_ +000986D4 000986F8 _ZNSt6vectorIhSaIhEE5clearEv +000986F8 00098720 _ZSt15__alloc_on_copyISaIhEEvRT_RKS1_ +00098720 00098750 _ZNKSt6vectorIhSaIhEE5beginEv +00098750 00098781 _ZNKSt6vectorIhSaIhEE3endEv +00098782 00098819 _ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEPhmT_S9_ +0009881A 0009883F _ZNSt6vectorIhSaIhEE5beginEv +0009883F 00098885 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_ +00098886 000988AF _ZNSt6vectorIhSaIhEE3endEv +000988AF 000988D8 _ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEhEvT_S7_RSaIT0_E +000988D8 0009891E _ZSt4copyIPhS0_ET0_T_S2_S1_ +0009891E 0009894F _ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E +00098950 00098982 _ZNSt6vectorIhSaIhEE6insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00098982 00098990 _ZSt18__do_alloc_on_copyISaIhEEvRT_RKS1_St17integral_constantIbLb0EE +00098990 000989AC _ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEC2ERKS2_ +000989AC 000989DD _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E +000989DE 000989FA _ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_ +000989FA 00098A14 _ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_ +00098A14 00098A87 _ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET1_T0_SB_SA_ +00098A87 00098AAC _ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_ +00098AAC 00098AC6 _ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_ +00098AC6 00098B1E _ZSt14__copy_move_a2ILb0EPhS0_ET1_T0_S2_S1_ +00098B1E 00098B4B _ZSt18uninitialized_copyIPhS0_ET0_T_S2_S1_ +00098B4C 00098FD6 _ZNSt6vectorIhSaIhEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00098FD6 00099003 _ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +00099003 00099011 _ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb0EE7_S_baseES7_ +00099011 0009902B _ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_ +0009902B 00099045 _ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_ +00099045 00099053 _ZNSt12_Destroy_auxILb1EE9__destroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEEvT_S9_ +00099053 00099084 _ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_ +00099084 000990B1 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPhS2_EET0_T_S4_S3_ +000990B1 000990F0 _ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_ +000990F0 0009913E _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +0009913E 0009914C _ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv +0009914C 00099192 _ZSt13move_backwardIPhS0_ET0_T_S2_S1_ +00099192 000991D8 _ZSt4fillIPhhEvT_S1_RKT0_ +000991D8 00099209 _ZSt24__uninitialized_fill_n_aIPhmhhEvT_T0_RKT1_RSaIT2_E +0009920A 000992D3 _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc +000992D3 00099321 _ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +00099321 0009934E _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhEET0_T_SC_SB_ +0009934E 0009936B _ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb1EE7_S_baseES7_ +0009936B 00099388 _ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb1EE7_S_baseES6_ +00099388 000993AD _ZSt18make_move_iteratorIPhESt13move_iteratorIT_ES2_ +000993AD 00099405 _ZSt23__copy_move_backward_a2ILb1EPhS0_ET1_T0_S2_S1_ +00099405 00099448 _ZSt8__fill_aIhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT_E7__valueEvE6__typeEPS3_S7_RKS3_ +00099448 00099475 _ZSt20uninitialized_fill_nIPhmhEvT_T0_RKT1_ +00099475 000994A0 _ZSt3maxImERKT_S2_S2_ +000994A0 000994E6 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +000994E6 000994F4 _ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv +000994F4 00099525 _ZSt22__copy_move_backward_aILb1EPhS0_ET1_T0_S2_S1_ +00099525 00099552 _ZNSt22__uninitialized_fill_nILb1EE15__uninit_fill_nIPhmhEEvT_T0_RKT1_ +00099552 000995AA _ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET1_T0_SA_S9_ +000995AA 00099611 _ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIhEEPT_PKS3_S6_S4_ +00099611 00099646 _ZSt6fill_nIPhmhET_S1_T0_RKT1_ +00099646 00099686 _ZSt10__fill_n_aImhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT0_E7__valueEPS3_E6__typeES5_T_RKS3_ +00099686 000996BA _Z14NewFrame_LinuxjjjPv +000996BA 00099786 _ZN17ThermalController18onNewFrameCallbackEjjj +00099786 000997A0 _ZN17ThermalController19setInnerTemperatureEi +000997A0 000997FC _ZN17ThermalController11getInstanceEv +000997FC 00099BB7 _ZN17ThermalControllerC2Ev +00099BB8 00099CF1 _ZN17ThermalControllerD2Ev +00099CF2 00099D56 _ZN17ThermalController7onStartEv +00099D56 00099D7C _ZN17ThermalController6onStopEv +00099D7C 00099DB0 _ZN17ThermalController9isWorkingEv +00099DB0 00099DC5 _ZN17ThermalController11isTCMOpenedEv +00099DC6 00099DDB _ZN17ThermalController10isIROpenedEv +00099DDC 0009A139 _ZN17ThermalController8startMagEv +0009A13A 0009A1A5 _ZN17ThermalController7stopMagEv +0009A1A6 0009A1C3 _ZN17ThermalController13setNewIRFrameEPFvPKhiiiE +0009A1C4 0009A3BE _ZN17ThermalController8startTCMEv +0009A3BE 0009A42F _ZN17ThermalController7stopTCMEv +0009A430 0009A44D _ZN17ThermalController14setNewDistanceEPFvfE +0009A44E 0009A46B _ZN17ThermalController16setDistanceErrorEPFvvE +0009A46C 0009A4E5 _ZN17ThermalController22readTemperatureAtPointEiiP17TemperatureResult +0009A4E6 0009A56F _ZN17ThermalController21readTemperatureInRectE4RectP17TemperatureResult +0009A570 0009A5B6 _ZN17ThermalController15setTempBoundaryEddd +0009A5B6 0009A5D4 _ZN17ThermalController13setTempOffsetEd +0009A5D4 0009A5EE _ZN17ThermalController11setUnitModeEi +0009A5EE 0009A682 _ZN17ThermalController6rotateEi +0009A682 0009A69F _ZN17ThermalController21setLimitEventListenerEPFvbE +0009A6A0 0009A6D6 _ZN17ThermalController7onPlaceEb +0009A6D6 0009A6DC _ZThn16_N17ThermalController7onPlaceEb +0009A6DC 0009A768 _ZN17ThermalController10limitResetEv +0009A768 0009A785 _ZN17ThermalController17setUpdateCallbackEPFvbiE +0009A786 0009A7C8 _ZN17ThermalController8onUpdateEP19EloTCMUpdaterDevicebi +0009A7C8 0009A7CE _ZThn24_N17ThermalController8onUpdateEP19EloTCMUpdaterDevicebi +0009A7CE 0009A816 _ZN17ThermalController9enableFFCEb +0009A816 0009A85A _ZN17ThermalController18checkRotateWithFFCEv +0009A85A 0009A8DF _ZN17ThermalController20getInnerIRCameraTempEv +0009A8E0 0009A97C _ZN17ThermalController22getInnerIRCameraSerialEv +0009A97C 0009A9F1 _ZN17ThermalController13setEmissivityEd +0009A9F2 0009AA56 _ZN17ThermalController7triggerEv +0009AA56 0009AA9C _ZN17ThermalController17updateTriggerTimeEb +0009AA9C 0009AAEC _ZN17ThermalController14getCurrentTimeEv +0009AAEC 0009ABE2 _ZN17ThermalController10onDistanceEi +0009ABE2 0009AC0D _ZN17ThermalController6onFailEv +0009AC0E 0009AC38 _ZN17ThermalController11onMotorDoneEv +0009AC38 0009AC3E _ZThn8_N17ThermalController11onMotorDoneEv +0009AC3E 0009ADE5 _ZN17ThermalController20getTemperatureInRectE4Rect +0009ADE6 0009AF67 _ZN17ThermalController21getTemperatureAtPointEii +0009AF68 0009AFDE _ZN17ThermalController19createIllegalResultEv +0009AFDE 0009B185 _ZN17ThermalController17createLegalResultEiiii +0009B186 0009B19B _ZN17ThermalController12getTCMDeviceEv +0009B19C 0009B28E _ZN17ThermalController12updatePresetEiiSs +0009B28E 0009B377 _ZN17ThermalController12preloadEEPOMEv +0009B378 0009B3C3 _ZN17ThermalController9hasPresetEv +0009B3C4 0009B41F _ZN17ThermalController16getPresetOffsetXEv +0009B420 0009B47B _ZN17ThermalController16getPresetOffsetYEv +0009B47C 0009B53D _ZN17ThermalController15getPresetSerialEv +0009B53E 0009B568 _ZN17ThermalController9softResetEv +0009B568 0009B890 _ZN17ThermalController19loadCalibrationJsonEv +0009B890 0009BA8A _ZN17ThermalController21getDefaultCalibrationEv +0009BA8A 0009BAA6 _ZNSt9exceptionC2Ev +0009BAA6 0009BAB8 _ZnwmPv +0009BAB8 0009BAC6 _ZdlPvS_ +0009BAC6 0009BAEF _ZNSt14_Bit_referenceC2EPmm +0009BAF0 0009BB15 _ZNKSt14_Bit_referencecvbEv +0009BB16 0009BB72 _ZNSt14_Bit_referenceaSEb +0009BB72 0009BBA1 _ZNSt14_Bit_referenceaSERKS_ +0009BBA2 0009BBAC _ZNSt8iteratorISt26random_access_iterator_tagblPbRbEC2Ev +0009BBAC 0009BBE2 _ZNSt18_Bit_iterator_baseC2EPmj +0009BBE2 0009BC24 _ZNSt18_Bit_iterator_base10_M_bump_upEv +0009BC24 0009BC65 _ZNSt18_Bit_iterator_base12_M_bump_downEv +0009BC66 0009BCF2 _ZNSt18_Bit_iterator_base7_M_incrEl +0009BCF2 0009BD31 _ZNKSt18_Bit_iterator_baseeqERKS_ +0009BD31 0009BD7C _ZStmiRKSt18_Bit_iterator_baseS1_ +0009BD7C 0009BDA0 _ZNSt13_Bit_iteratorC2Ev +0009BDA0 0009BDCB _ZNSt13_Bit_iteratorC2EPmj +0009BDCC 0009BE09 _ZNKSt13_Bit_iteratordeEv +0009BE0A 0009BE28 _ZNSt13_Bit_iteratorppEv +0009BE28 0009BE70 _ZNSt13_Bit_iteratorppEi +0009BE70 0009BE8E _ZNSt13_Bit_iteratormmEv +0009BE8E 0009BEB7 _ZNSt13_Bit_iteratorpLEl +0009BEB8 0009BEE7 _ZNSt13_Bit_iteratormIEl +0009BEE8 0009BF37 _ZNKSt13_Bit_iteratorplEl +0009BF38 0009BF87 _ZNKSt13_Bit_iteratormiEl +0009BF88 0009BFB3 _ZNSt19_Bit_const_iteratorC2EPmj +0009BFB4 0009BFE3 _ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator +0009BFE4 0009C025 _ZNKSt19_Bit_const_iteratordeEv +0009C026 0009C044 _ZNSt19_Bit_const_iteratorppEv +0009C044 0009C071 _ZNSt10_Hash_impl4hashEPKvmm +0009C071 0009C09E _ZNSt11char_traitsIcE7compareEPKcS2_m +0009C09E 0009C0CA _ZNSt11char_traitsIcE6lengthEPKc +0009C0CA 0009C109 _ZSt9to_stringi +0009C109 0009C14A _ZSt9to_stringm +0009C14A 0009C18D _ZNKSt4hashISsEclERKSs +0009C18E 0009C19E _ZN10CMagDevice13IsInitializedEv +0009C19E 0009C1AE _ZNSt14numeric_limitsIlE3minEv +0009C1AE 0009C1C4 _ZNSt14_Function_baseC2Ev +0009C1C4 0009C1F9 _ZNSt14_Function_baseD2Ev +0009C1FA 0009C212 _ZNKSt14_Function_base8_M_emptyEv +0009C212 0009C232 _ZNSt9exceptionC2ERKS_ +0009C232 0009C247 _ZNSt8__detail15_Hash_node_baseC2Ev +0009C248 0009C26A _ZNKSt8__detail18_Mod_range_hashingclEmm +0009C26A 0009C28E _ZNSt8__detail20_Prime_rehash_policyC2Ef +0009C28E 0009C2A0 _ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv +0009C2A0 0009C2BA _ZNSt8__detail20_Prime_rehash_policy8_M_resetEm +0009C2BA 0009C2E8 _ZSt8isfinited +0009C2E8 0009C311 _ZNSt18_Rb_tree_node_base10_S_minimumEPS_ +0009C311 0009C33A _ZNSt18_Rb_tree_node_base10_S_maximumEPS_ +0009C33A 0009C34B _ZNK8nlohmann6detail10position_tcvmEv +0009C34C 0009C36A _ZNK8nlohmann6detail9exception4whatEv +0009C36A 0009C438 _ZN8nlohmann6detail9exceptionC2EiPKc +0009C438 0009C54A _ZN8nlohmann6detail9exception4nameERKSsi +0009C54A 0009C5BE _ZNSt13runtime_errorC2ERKS_ +0009C5BE 0009C60F _ZN8nlohmann6detail9exceptionD2Ev +0009C610 0009C636 _ZN8nlohmann6detail9exceptionD0Ev +0009C636 0009C84E _ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs +0009C84E 0009C89A _ZN8nlohmann6detail11parse_errorC2EimPKc +0009C89A 0009C9B0 _ZN8nlohmann6detail11parse_error15position_stringERKNS0_10position_tE +0009C9B0 0009CAC8 _ZN8nlohmann6detail16invalid_iterator6createEiRKSs +0009CAC8 0009CB04 _ZN8nlohmann6detail16invalid_iteratorC2EiPKc +0009CB04 0009CC1C _ZN8nlohmann6detail10type_error6createEiRKSs +0009CC1C 0009CC58 _ZN8nlohmann6detail10type_errorC2EiPKc +0009CC58 0009CD70 _ZN8nlohmann6detail12out_of_range6createEiRKSs +0009CD70 0009CDAC _ZN8nlohmann6detail12out_of_rangeC2EiPKc +0009CDAC 0009CEC4 _ZN8nlohmann6detail11other_error6createEiRKSs +0009CEC4 0009CF00 _ZN8nlohmann6detail11other_errorC2EiPKc +0009CF00 0009CF15 _ZN8nlohmann6detail20primitive_iterator_t9set_beginEv +0009CF16 0009CF2B _ZN8nlohmann6detail20primitive_iterator_t7set_endEv +0009CF2C 0009CF43 _ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv +0009CF43 0009CF5F _ZN8nlohmann6detaileqENS0_20primitive_iterator_tES1_ +0009CF60 0009CF80 _ZN8nlohmann6detail20primitive_iterator_tppEv +0009CF80 0009CF8E _ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +0009CF8E 0009CFA8 _ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev +0009CFA8 0009CFC4 _ZN18IProximityDelegateC2Ev +0009CFC4 0009CFE0 _ZN10IMotorDoneC2Ev +0009CFE0 0009CFFC _ZN11ILimitEventC2Ev +0009CFFC 0009D018 _ZN18ITCMUpdateDelegateC2Ev +0009D018 0009D032 _ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEED2Ev +0009D032 0009D0C4 _ZN6serial8PortInfoC2ERKS0_ +0009D0C4 0009D0FE _ZN6serial8PortInfoD2Ev +0009D0FE 0009D128 _ZN13TCMPresetDataD2Ev +0009D128 0009D156 _ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev +0009D156 0009D2CD _ZN9__gnu_cxx12__to_xstringISscEET_PFiPT0_mPKS2_P13__va_list_tagEmS5_z +0009D2CD 0009D2DB _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ +0009D2DB 0009D3B5 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_ +0009D3B5 0009D459 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ +0009D459 0009D4A0 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ +0009D4A0 0009D4E7 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_ +0009D4E7 0009D530 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_ +0009D530 0009D53E _ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE +0009D53E 0009D56D _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn +0009D56E 0009D5A1 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev +0009D5A2 0009D5AC _ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev +0009D5AC 0009D5D6 _ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EDn +0009D5D6 0009D635 _ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EOSC_ +0009D635 0009D643 _ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_ +0009D643 0009D651 _ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_ +0009D652 0009D6BF _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_ +0009D6C0 0009D6DA _ZNSaISt4pairIKSsiEEC2Ev +0009D6DA 0009D6F4 _ZNSaISt4pairIKSsiEED2Ev +0009D6F4 0009D6FE _ZNSt17__allow_copy_consILb1EEC2Ev +0009D6FE 0009D747 _ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEC2EmRKS1_RKS3_RKS7_ +0009D748 0009D762 _ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEED2Ev +0009D762 0009D7AA _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEED2Ev +0009D7AA 0009D7C4 _ZNSt6vectorI19struct_TerminalListSaIS0_EEC2Ev +0009D7C4 0009D807 _ZNSt6vectorI19struct_TerminalListSaIS0_EED2Ev +0009D808 0009D89A _ZNSt6vectorI19struct_TerminalListSaIS0_EE6resizeEm +0009D89A 0009D8C7 _ZNSt6vectorI19struct_TerminalListSaIS0_EEixEm +0009D8C8 0009D8FF _ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv +0009D900 0009D943 _ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev +0009D944 0009D969 _ZNSt6vectorIN6serial8PortInfoESaIS1_EE5beginEv +0009D96A 0009D993 _ZNSt6vectorIN6serial8PortInfoESaIS1_EE3endEv +0009D993 0009D9CF _ZN9__gnu_cxxneIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +0009D9D0 0009D9F0 _ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEppEv +0009D9F0 0009DA01 _ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEdeEv +0009DA01 0009DA29 _ZSt3maxIiERKT_S2_S2_ +0009DA29 0009DA51 _ZSt3minIiERKT_S2_S2_ +0009DA52 0009DB3E _ZNSt6vectorIhSaIhEEC2ERKS1_ +0009DB3E 0009DB4C _ZSt7forwardIRA320659_hEOT_RNSt16remove_referenceIS2_E4typeE +0009DB4C 0009DB7A _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +0009DB7A 0009DBA4 _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +0009DBA4 0009DCE2 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5parseIRA320659_hEES6_OT_St8functionIFbiNS_6detail13parse_event_tERS6_EEbb +0009DCE2 0009DEC9 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_ +0009DECA 0009E0D1 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_ +0009E0D2 0009E0E8 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv +0009E0E8 0009E10D _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5itemsEv +0009E10E 0009E14D _ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5beginEv +0009E14E 0009E18A _ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +0009E18A 0009E1C9 _ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3endEv +0009E1CA 0009E1EF _ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEneERKSB_ +0009E1F0 0009E222 _ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEppEv +0009E222 0009E2D2 _ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3keyEv +0009E2D2 0009E2EC _ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5valueEv +0009E2EC 0009E302 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv +0009E302 0009E359 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getISsSsLi0EEET0_v +0009E35A 0009E37E _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getIiiLi0EEET0_v +0009E37E 0009E3A3 _ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEixERS5_ +0009E3A4 0009E3BE _ZNSt6vectorIiSaIiEEC2Ev +0009E3BE 0009E3CC _ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE +0009E3CC 0009E437 _ZNSt6vectorIiSaIiEE9push_backERKi +0009E438 0009E45D _ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE4findERS5_ +0009E45E 0009E478 _ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE3endEv +0009E478 0009E49A _ZNSt8__detailneISt4pairIKSsiELb1EEEbRKNS_19_Node_iterator_baseIT_XT0_EEES8_ +0009E49A 0009E4BB _ZNKSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEptEv +0009E4BB 0009E4C9 _ZSt4moveIRiEONSt16remove_referenceIT_E4typeEOS2_ +0009E4CA 0009E4FA _ZNSt6vectorIiSaIiEE9push_backEOi +0009E4FA 0009E514 _ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_ +0009E514 0009E55B _ZNSsC2IPcEET_S1_RKSaIcE +0009E55C 0009E56D _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4typeEv +0009E56E 0009E5C1 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4sizeEv +0009E5C1 0009E5FD _ZN9__gnu_cxxneIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +0009E5FE 0009E61E _ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEppEv +0009E61E 0009E62F _ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEdeEv +0009E630 0009E66F _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE +0009E670 0009E75A _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv +0009E75A 0009E768 _ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_ +0009E768 0009EBE6 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_value7destroyENS_6detail7value_tE +0009EBE6 0009EC34 _ZSt4swapIN8nlohmann6detail7value_tEEvRT_S4_ +0009EC34 0009EC85 _ZSt4swapIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEvRT_SA_ +0009EC86 0009ECE1 _ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEE4swapERSC_ +0009ECE2 0009ED78 _ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_ +0009ED78 0009ED86 _ZSt4moveIRSt8functionIFbiN8nlohmann6detail13parse_event_tERNS1_10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES6_IhSaIhEEEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0009ED86 0009EDE6 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +0009EDE6 0009EDF4 _ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE +0009EDF4 0009EE12 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +0009EE12 0009EE1C _ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEEC2Ev +0009EE1C 0009EE26 _ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEED2Ev +0009EE26 0009EE75 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKS7_RKS3_ +0009EE76 0009EE90 _ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +0009EE90 0009EEFF _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv +0009EF00 0009EF79 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm +0009EF7A 0009EF94 _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implD2Ev +0009EF94 0009EFAE _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EEC2Ev +0009EFAE 0009F00E _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EED2Ev +0009F00E 0009F01C _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +0009F01C 0009F045 _ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E +0009F046 0009F2A8 _ZNSt6vectorI19struct_TerminalListSaIS0_EE17_M_default_appendEm +0009F2A8 0009F2EC _ZNSt6vectorI19struct_TerminalListSaIS0_EE15_M_erase_at_endEPS0_ +0009F2EC 0009F306 _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implD2Ev +0009F306 0009F366 _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EED2Ev +0009F366 0009F374 _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +0009F374 0009F39D _ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E +0009F39E 0009F3BA _ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEC2ERKS3_ +0009F3BA 0009F3C8 _ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEE4baseEv +0009F3C8 0009F3F1 _ZN9__gnu_cxx14__alloc_traitsISaIhEE17_S_select_on_copyERKS1_ +0009F3F2 0009F450 _ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_ +0009F450 0009F478 _ZN8nlohmann6detail13input_adapterIhLm320659EEEDTcl13input_adapterfp_plfp_T0_EERAT0__T_ +0009F478 0009F486 _ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_ +0009F486 0009F536 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6parserINS_6detail22iterator_input_adapterIPhEEEENS8_6parserIS6_T_EESD_St8functionIFbiNS8_13parse_event_tERS6_EEbb +0009F536 0009FB5C _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5parseEbRS8_ +0009FB5C 0009FB72 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7is_nullEv +0009FB72 0009FD1E _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ENS_6detail7value_tE +0009FD1E 0009FE50 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixEOSs +0009FE50 0009FECF _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv +0009FED0 0009FEF5 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEE +0009FEF6 0009FF1B _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS2_IS6_SaIS6_EE +0009FF1C 0009FF41 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKSs +0009FF42 0009FF5B _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Eb +0009FF5C 0009FF75 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2El +0009FF76 0009FF8F _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Em +0009FF90 0009FFAA _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Ed +0009FFAA 0009FFCF _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKNS_27byte_container_with_subtypeIS5_EE +0009FFD0 0009FFE9 _ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ERS9_ +0009FFEA 000A0020 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5beginEv +000A0020 000A00C9 _ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ESA_ +000A00CA 000A0100 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv +000A0100 000A0128 _ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEneERKS9_ +000A0128 000A01B8 _ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv +000A01B8 000A021E _ZN8nlohmann6detail13int_to_stringISsEEvRT_m +000A021E 000A033D _ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyEv +000A033E 000A0358 _ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE5valueEv +000A0358 000A038F _ZN8nlohmann14adl_serializerISsvE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEESsEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +000A038F 000A03C6 _ZN8nlohmann14adl_serializerIivE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEEiEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +000A03C6 000A03D0 _ZNSt11_Tuple_implILm1EJEEC2Ev +000A03D0 000A03E9 _ZNSt10_Head_baseILm0ERKSsLb0EEC2ES1_ +000A03EA 000A041B _ZNSt11_Tuple_implILm0EJRKSsEEC2ES1_ +000A041C 000A0441 _ZNSt5tupleIJRKSsEEC2ES1_ +000A0442 000A0519 _ZNSt8__detail9_Map_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS2_ +000A051A 000A0534 _ZNSt12_Vector_baseIiSaIiEEC2Ev +000A0534 000A056C _ZNSt16allocator_traitsISaIiEE9constructIiJRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000A056C 000A0758 _ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJRKiEEEvDpOT_ +000A0758 000A07E8 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS1_ +000A07E8 000A080B _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE3endEv +000A080B 000A0819 _ZSt11__addressofISt4pairIKSsiEEPT_RS3_ +000A0819 000A0827 _ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE +000A0828 000A08A9 _ZNSt6vectorIiSaIiEE12emplace_backIJiEEEvDpOT_ +000A08A9 000A08B7 _ZNSt10_Iter_baseIPmLb0EE7_S_baseES0_ +000A08B7 000A08E8 _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE +000A08E8 000A090E _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv +000A090E 000A0928 _ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE4sizeEv +000A0928 000A096A _ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEiEvRT_T0_ +000A096A 000A09AC _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEiEvRT_T0_ +000A09AC 000A09C6 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv +000A09C6 000A09E8 _ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_ +000A09E8 000A0A09 _ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv +000A0A0A 000A0A33 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +000A0A33 000A0A6F _ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +000A0A70 000A0A81 _ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +000A0A82 000A0AA1 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKSsLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000A0AA2 000A0AB8 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_binaryEv +000A0AB8 000A0AD2 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2Ev +000A0AD2 000A0B15 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EED2Ev +000A0B16 000A0C55 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE7reserveEm +000A0C56 000A0C7B _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +000A0C7B 000A0CA0 _ZSt13back_inserterISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEESt20back_insert_iteratorIT_ERSB_ +000A0CA0 000A0CE6 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET0_T_SH_SG_ +000A0CE6 000A0D00 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5beginEv +000A0D00 000A0D28 _ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv +000A0D28 000A0D3D _ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv +000A0D3E 000A0D6E _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_ +000A0D6E 000A0DAF _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5emptyEv +000A0DB0 000A0DF9 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv +000A0DFA 000A0E33 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8pop_backEv +000A0E34 000A0E58 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5clearEv +000A0E58 000A0E72 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5clearEv +000A0E72 000A0E8C _ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEEC2Ev +000A0E8C 000A0EA6 _ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev +000A0EA6 000A0ECB _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE7destroyISE_EEvRSF_PT_ +000A0ECB 000A0EF8 _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m +000A0EF8 000A0F12 _ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEEC2Ev +000A0F12 000A0F2C _ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev +000A0F2C 000A0F51 _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE7destroyIS9_EEvRSA_PT_ +000A0F51 000A0F7E _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m +000A0F7E 000A0F98 _ZNSaISsEC2Ev +000A0F98 000A0FB2 _ZNSaISsED2Ev +000A0FB2 000A0FD7 _ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_ +000A0FD7 000A1004 _ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm +000A1004 000A101E _ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +000A101E 000A1038 _ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +000A1038 000A105D _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE7destroyIS5_EEvRS6_PT_ +000A105D 000A108A _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m +000A108A 000A1098 _ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_ +000A1098 000A1101 _ZSt4swapISt9_Any_dataEvRT_S2_ +000A1101 000A110F _ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_ +000A110F 000A1160 _ZSt4swapIPFbRSt9_Any_dataRKS0_St18_Manager_operationEEvRT_S8_ +000A1160 000A116E _ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_ +000A116E 000A11BF _ZSt4swapIPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEvRT_SH_ +000A11C0 000A11DD _ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEcvbEv +000A11DE 000A1318 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_St8functionIFbiNS0_13parse_event_tESA_EEb +000A1318 000A135B _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev +000A135C 000A1376 _ZNSt6vectorIbSaIbEED2Ev +000A1376 000A1385 _ZNKSt5arrayIcLm9EE4sizeEv +000A1386 000A1408 _ZN8nlohmann6detail9exceptionC2ERKS1_ +000A1408 000A144F _ZN8nlohmann6detail11parse_errorC2ERKS1_ +000A1450 000A14E0 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +000A14E0 000A14F2 _ZNK8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +000A14F2 000A154E _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_ +000A154E 000A1564 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12is_discardedEv +000A1564 000A15B5 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_b +000A15B6 000A1643 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +000A1644 000A1656 _ZNK8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +000A1656 000A1664 _ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE +000A1664 000A166E _ZNSt8__detail12_Insert_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2Ev +000A166E 000A1688 _ZNSt8__detail7_InsertISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb0ELb1EEC2Ev +000A1688 000A1692 _ZNSt8__detail9_EqualityISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEC2Ev +000A1692 000A179C _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKSA_RKSB_RKS7_RKS5_RKS3_ +000A179C 000A17A6 _ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +000A17A6 000A17EC _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_deallocate_nodesEPNS4_10_Hash_nodeIS2_Lb1EEE +000A17EC 000A1809 _ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE8_M_beginEv +000A180A 000A181C _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +000A181C 000A182E _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv +000A182E 000A184C _ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKSsiELb1EEEEERKSaIT_E +000A184C 000A1866 _ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev +000A1866 000A1888 _ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m +000A1888 000A18C5 _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implC2Ev +000A18C6 000A18E0 _ZNSaI19struct_TerminalListED2Ev +000A18E0 000A1914 _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m +000A1914 000A1939 _ZSt8_DestroyIP19struct_TerminalListEvT_S2_ +000A1939 000A1962 _ZSt27__uninitialized_default_n_aIP19struct_TerminalListmS0_EvT_T0_RSaIT1_E +000A1962 000A1A2B _ZNKSt6vectorI19struct_TerminalListSaIS0_EE12_M_check_lenEmPKc +000A1A2C 000A1A64 _ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE11_M_allocateEm +000A1A64 000A1AB2 _ZSt34__uninitialized_move_if_noexcept_aIP19struct_TerminalListS1_SaIS0_EET0_T_S4_S3_RT1_ +000A1AB2 000A1ACC _ZNSaIN6serial8PortInfoEED2Ev +000A1ACC 000A1B00 _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m +000A1B00 000A1B25 _ZSt8_DestroyIPN6serial8PortInfoEEvT_S3_ +000A1B25 000A1B4E _ZNSt16allocator_traitsISaIhEE37select_on_container_copy_constructionERKS0_ +000A1B4E 000A1B73 _ZNSaIhEC2ERKS_ +000A1B74 000A1BBC _ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2ERKS0_ +000A1BBC 000A1C0D _ZNSt12_Vector_baseIhSaIhEE17_M_create_storageEm +000A1C0D 000A1C32 _ZN8nlohmann6detail13input_adapterIPhEENS0_30iterator_input_adapter_factoryIT_vE12adapter_typeES4_S4_ +000A1C32 000A1CE7 _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_St8functionIFbiNS0_13parse_event_tERS8_EEbb +000A1CE8 000A32AB _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_ +000A32AC 000A32D8 _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv +000A32D8 000A3309 _ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv +000A330A 000A343D _ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv +000A343E 000A38BB _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs +000A38BC 000A4E7F _ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_ +000A4E80 000A4EAD _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIEEEPT_DpOT0_ENKUlPSE_E_clESK_ +000A4EAD 000A4FA1 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJEEEPT_DpOT0_ +000A4FA2 000A4FCF _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000A4FCF 000A50C3 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJEEEPT_DpOT0_ +000A50C4 000A50F1 _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_ENKUlPSsE_clESG_ +000A50F1 000A50FF _ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE +000A50FF 000A5209 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_ +000A520A 000A5237 _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000A5237 000A532B _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJEEEPT_DpOT0_ +000A532C 000A5351 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE11lower_boundERSA_ +000A5352 000A5374 _ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8key_compEv +000A5374 000A539D _ZNKSt4lessISsEclERKSsS2_ +000A539E 000A53C0 _ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_ +000A53C0 000A53CE _ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE +000A53CE 000A53F3 _ZNSt10_Head_baseILm0EOSsLb0EEC2ISsEEOT_ +000A53F4 000A5430 _ZNSt11_Tuple_implILm0EJOSsEEC2ISsJEvEEOT_DpOT0_ +000A5430 000A5460 _ZNSt5tupleIJOSsEEC2IJSsEvEEDpOT_ +000A5460 000A546E _ZNSt11_Tuple_implILm0EJOSsEE7_M_tailERS1_ +000A546E 000A547C _ZSt4moveIRSt11_Tuple_implILm1EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000A547C 000A548D _ZNSt10_Head_baseILm0EOSsLb0EE7_M_headERS1_ +000A548D 000A54A7 _ZNSt11_Tuple_implILm0EJOSsEE7_M_headERS1_ +000A54A7 000A54B5 _ZSt7forwardIOSsEOT_RNSt16remove_referenceIS1_E4typeE +000A54B6 000A5502 _ZNSt11_Tuple_implILm0EJOSsEEC2EOS1_ +000A5502 000A5527 _ZNSt5tupleIJOSsEEC2EOS1_ +000A5527 000A555B _ZSt16forward_as_tupleIJSsEESt5tupleIJDpOT_EES3_ +000A555C 000A5578 _ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E +000A5578 000A5586 _ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE +000A5586 000A5594 _ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE +000A5594 000A55A2 _ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000A55A2 000A56B9 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +000A56BA 000A56E7 _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIRKSE_EEEPT_DpOT0_ENKUlPSE_E_clESM_ +000A56E7 000A56F5 _ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +000A56F5 000A57FF _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJRKSE_EEEPT_DpOT0_ +000A5800 000A582D _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +000A582D 000A583B _ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +000A583B 000A5945 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJRKS9_EEEPT_DpOT0_ +000A5946 000A5973 _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_ENKUlPSsE_clESF_ +000A5973 000A5A7D _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_ +000A5A7E 000A5AAB _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +000A5AAB 000A5AB9 _ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000A5AB9 000A5BC3 _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJRKS9_EEEPT_DpOT0_ +000A5BC4 000A5BD9 _ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2Ev +000A5BDA 000A5BF4 _ZN8nlohmann6detail20primitive_iterator_tC2Ev +000A5BF4 000A5C36 _ZN8nlohmann6detail17internal_iteratorINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +000A5C36 000A5D1B _ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2EPS8_ +000A5D1C 000A5DD0 _ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9set_beginEv +000A5DD0 000A5E6E _ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7set_endEv +000A5E6E 000A5FE7 _ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEeqERKS9_ +000A5FE8 000A6299 _ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEv +000A629A 000A62C3 _ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEESsEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +000A62C4 000A62ED _ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEiEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +000A62EE 000A631B _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS2_ +000A631C 000A634E _ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m +000A634E 000A6399 _ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE12_M_find_nodeEmRS1_m +000A6399 000A63A7 _ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE +000A63A8 000A6486 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESK_IJEEEEEPNS4_10_Hash_nodeIS2_Lb1EEEDpOT_ +000A6486 000A6494 _ZSt7forwardIRSt4pairIKSsiEEOT_RNSt16remove_referenceIS4_E4typeE +000A6494 000A64A2 _ZNSt10__pair_getILm0EE5__getIKSsiEERT_RSt4pairIS3_T0_E +000A64A2 000A64BC _ZSt3getILm0EKSsiERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS5_ +000A64BC 000A660F _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEE +000A6610 000A664D _ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev +000A664D 000A6685 _ZNSt16allocator_traitsISaIiEE12_S_constructIiJRKiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +000A6686 000A674F _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc +000A6750 000A6788 _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm +000A6788 000A67AE _ZNKSt6vectorIiSaIiEE4sizeEv +000A67AE 000A67FC _ZSt34__uninitialized_move_if_noexcept_aIPiS0_SaIiEET0_T_S3_S2_RT1_ +000A67FC 000A6821 _ZNSt16allocator_traitsISaIiEE7destroyIiEEvRS0_PT_ +000A6822 000A6847 _ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +000A6847 000A687F _ZNSt16allocator_traitsISaIiEE9constructIiJiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000A6880 000A6A6C _ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJiEEEvDpOT_ +000A6A6C 000A6A9D _ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type +000A6A9E 000A6AB0 _ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE4sizeEv +000A6AB0 000A6AEC _ZN9__gnu_cxxeqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +000A6AEC 000A6AF6 _ZSt19__iterator_categoryISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEENSt15iterator_traitsIT_E17iterator_categoryERKSE_ +000A6AF6 000A6B59 _ZSt9__advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEElEvRT_T0_St26bidirectional_iterator_tag +000A6B59 000A6B63 _ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt15iterator_traitsIT_E17iterator_categoryERKSF_ +000A6B63 000A6B88 _ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEElEvRT_T0_St26random_access_iterator_tag +000A6B88 000A6BB1 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE3endEv +000A6BB1 000A6BBF _ZSt11__addressofISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEPT_RSB_ +000A6BC0 000A6BDC _ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_ +000A6BDC 000A6BEA _ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +000A6BEA 000A6C1B _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKSs +000A6C1C 000A6C36 _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implD2Ev +000A6C36 000A6C50 _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2Ev +000A6C50 000A6C9F _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EED2Ev +000A6CA0 000A6CAE _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +000A6CAE 000A6CD7 _ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E +000A6CD8 000A6CFA _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv +000A6CFA 000A6D20 _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8capacityEv +000A6D20 000A6D45 _ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_ +000A6D46 000A6DDD _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE20_M_allocate_and_copyISt13move_iteratorIPS6_EEESB_mT_SD_ +000A6DDE 000A6E12 _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m +000A6E12 000A6E1C _ZNSt8iteratorISt19output_iterator_tagvvvvEC2Ev +000A6E1C 000A6E45 _ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEC2ERS9_ +000A6E45 000A6E5F _ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_ +000A6E5F 000A6EB7 _ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET1_T0_SH_SG_ +000A6EB8 000A6EE1 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5beginEv +000A6EE1 000A6EEF _ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000A6EF0 000A6F71 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJS6_EEEvDpOT_ +000A6F72 000A6FA3 _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +000A6FA4 000A6FD4 _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +000A6FD4 000A7010 _ZN9__gnu_cxxeqIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +000A7010 000A7055 _ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEmiERKl +000A7055 000A707A _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_ +000A707A 000A70BE _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE15_M_erase_at_endEPS6_ +000A70BE 000A714B _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5clearEv +000A714C 000A7156 _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEEC2Ev +000A7156 000A7160 _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEED2Ev +000A7160 000A7185 _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10_S_destroyISE_EENSt9enable_ifIXsrNSG_16__destroy_helperIT_EE5valueEvE4typeERSF_PSK_ +000A7186 000A71A8 _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE10deallocateEPSF_m +000A71A8 000A71B2 _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEC2Ev +000A71B2 000A71BC _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEED2Ev +000A71BC 000A71E1 _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10_S_destroyIS9_EENSt9enable_ifIXsrNSB_16__destroy_helperIT_EE5valueEvE4typeERSA_PSF_ +000A71E2 000A7204 _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE10deallocateEPSA_m +000A7204 000A720E _ZN9__gnu_cxx13new_allocatorISsEC2Ev +000A720E 000A7218 _ZN9__gnu_cxx13new_allocatorISsED2Ev +000A7218 000A723D _ZNSt16allocator_traitsISaISsEE10_S_destroyISsEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +000A723E 000A7260 _ZN9__gnu_cxx13new_allocatorISsE10deallocateEPSsm +000A7260 000A726A _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +000A726A 000A7274 _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +000A7274 000A7299 _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10_S_destroyIS5_EENSt9enable_ifIXsrNS7_16__destroy_helperIT_EE5valueEvE4typeERS6_PSB_ +000A729A 000A72BC _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE10deallocateEPS6_m +000A72BC 000A72C6 _ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +000A72C6 000A72F3 _ZN8nlohmann6detail10position_tC2Ev +000A72F4 000A730E _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EEC2Ev +000A730E 000A7328 _ZNSt6vectorIbSaIbEEC2Ev +000A7328 000A73D5 _ZNSt6vectorIbSaIbEE9push_backEb +000A73D6 000A73F0 _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implD2Ev +000A73F0 000A743F _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EED2Ev +000A7440 000A744E _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +000A744E 000A7477 _ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E +000A7478 000A7492 _ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev +000A7492 000A74B8 _ZNSt13_Bvector_baseISaIbEED2Ev +000A74B8 000A7687 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +000A7688 000A7956 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +000A7956 000A7964 _ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE +000A7964 000A7AA7 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +000A7AA8 000A7C77 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +000A7C78 000A7E5C _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +000A7E5C 000A7E93 _ZN8nlohmann6detail12out_of_rangeC2ERKS1_ +000A7E94 000A7F24 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +000A7F24 000A7F5E _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +000A7F5E 000A7F94 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +000A7F94 000A7FCD _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +000A7FCE 000A8003 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +000A8004 000A8039 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +000A803A 000A806F _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +000A8070 000A80C5 _ZNKSt6vectorIbSaIbEE5emptyEv +000A80C6 000A8119 _ZNSt6vectorIbSaIbEE4backEv +000A811A 000A8138 _ZNSt6vectorIbSaIbEE8pop_backEv +000A8138 000A8151 _ZNSt14__array_traitsIcLm9EE6_S_refERA9_Kcm +000A8152 000A8179 _ZNSt5arrayIcLm9EE4dataEv +000A8179 000A8241 _ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15token_type_nameENS9_10token_typeE +000A8242 000A838F _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +000A8390 000A83B3 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +000A83B4 000A83F9 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +000A83FA 000A8547 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +000A8548 000A856B _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +000A856C 000A85F9 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +000A85FA 000A8629 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +000A862A 000A8655 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +000A8656 000A8684 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +000A8684 000A86AE _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +000A86AE 000A86D8 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +000A86D8 000A8702 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +000A8702 000A873A _ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000A873A 000A878E _ZNSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2ERKS4_RKS8_RKS9_RKSA_RKS6_ +000A878E 000A879C _ZSt7forwardIRKSaISt4pairIKSsiEEEOT_RNSt16remove_referenceIS6_E4typeE +000A879C 000A87D8 _ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEEC2IRKSaIS4_EEEOT_ +000A87D8 000A8876 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm +000A8876 000A8887 _ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv +000A8888 000A88D5 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE18_M_deallocate_nodeEPNS4_10_Hash_nodeIS2_Lb1EEE +000A88D6 000A88E8 _ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +000A88E8 000A88F2 _ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev +000A88F2 000A88FC _ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev +000A88FC 000A8916 _ZNSaI19struct_TerminalListEC2Ev +000A8916 000A8920 _ZN9__gnu_cxx13new_allocatorI19struct_TerminalListED2Ev +000A8920 000A8942 _ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE10deallocateEPS1_m +000A8942 000A8950 _ZNSt12_Destroy_auxILb1EE9__destroyIP19struct_TerminalListEEvT_S4_ +000A8950 000A8975 _ZSt25__uninitialized_default_nIP19struct_TerminalListmEvT_T0_ +000A8976 000A8998 _ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv +000A8998 000A89E7 _ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE8allocateEmPKv +000A89E7 000A8A0C _ZSt32__make_move_if_noexcept_iteratorIP19struct_TerminalListSt13move_iteratorIS1_EET0_T_ +000A8A0C 000A8A3D _ZSt22__uninitialized_copy_aISt13move_iteratorIP19struct_TerminalListES2_S1_ET0_T_S5_S4_RSaIT1_E +000A8A3E 000A8A48 _ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEED2Ev +000A8A48 000A8A6A _ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE10deallocateEPS2_m +000A8A6A 000A8AA1 _ZNSt12_Destroy_auxILb0EE9__destroyIPN6serial8PortInfoEEEvT_S5_ +000A8AA1 000A8ACA _ZNSt16allocator_traitsISaIhEE9_S_selectIKS0_EENSt9enable_ifIXntsrNS1_15__select_helperIT_EE5valueES6_E4typeERS6_ +000A8ACA 000A8AD8 _ZN9__gnu_cxx13new_allocatorIhEC2ERKS1_ +000A8AD8 000A8AE6 _ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_ +000A8AE6 000A8B36 _ZN8nlohmann6detail30iterator_input_adapter_factoryIPhvE6createES2_S2_ +000A8B36 000A8B43 _ZN9__gnu_cxx11char_traitsIhE3eofEv +000A8B44 000A8C67 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_b +000A8C68 000A8C7A _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv +000A8C7A 000A8C95 _ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_number_floatEv +000A8C96 000A8CA8 _ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18get_number_integerEv +000A8CA8 000A8CBA _ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE19get_number_unsignedEv +000A8CBA 000A8CC9 _ZNKSt5arrayIhLm4EE4sizeEv +000A8CCA 000A8CD9 _ZNKSt5arrayIhLm5EE4sizeEv +000A8CDA 000A8F7D _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE4scanEv +000A8F7E 000A8F90 _ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_error_messageEv +000A8F90 000A8FBA _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE8allocateERSF_m +000A8FBA 000A8FC8 _ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +000A8FC8 000A8FD6 _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE +000A8FD6 000A8FE0 _ZNSt11_Tuple_implILm2EJEEC2Ev +000A8FE0 000A8FFC _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSM_ +000A8FFC 000A902D _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EEC2ERKSM_ +000A902E 000A9056 _ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EEC2IRSF_EEOT_ +000A9056 000A90A9 _ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSM_EvEEOSH_SL_ +000A90AA 000A90F6 _ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSM_vEEOSH_OT0_ +000A90F6 000A9123 _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EC2ESL_RKSM_ +000A9123 000A9131 _ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERSG_ +000A9131 000A914F _ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERSN_ +000A914F 000A9169 _ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +000A9169 000A9183 _ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +000A9184 000A91DD _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_ED2Ev +000A91DD 000A91EB _ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERKSG_ +000A91EB 000A9209 _ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERKSN_ +000A9209 000A9223 _ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSO_DpT1_EE +000A9223 000A923D _ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSS_ +000A923E 000A925B _ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv +000A925B 000A9280 _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSI_ +000A9280 000A929E _ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +000A929E 000A92D3 _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E7releaseEv +000A92D3 000A92FD _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE8allocateERSA_m +000A92FD 000A930B _ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +000A930B 000A9319 _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A931A 000A9336 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +000A9336 000A9367 _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000A9368 000A9390 _ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EEC2IRSA_EEOT_ +000A9390 000A93E3 _ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSH_EvEEOSC_SG_ +000A93E4 000A9430 _ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSH_vEEOSC_OT0_ +000A9430 000A945D _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EC2ESG_RKSH_ +000A945D 000A946B _ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERSB_ +000A946B 000A9489 _ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERSI_ +000A9489 000A94A3 _ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A94A3 000A94BD _ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000A94BE 000A9517 _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_ED2Ev +000A9517 000A9525 _ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERKSB_ +000A9525 000A9543 _ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERKSI_ +000A9543 000A955D _ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A955D 000A9577 _ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000A9578 000A9595 _ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv +000A9595 000A95BA _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSD_ +000A95BA 000A95D8 _ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +000A95D8 000A960D _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E7releaseEv +000A960D 000A9637 _ZNSt16allocator_traitsISaISsEE8allocateERS0_m +000A9637 000A9645 _ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE +000A9645 000A9653 _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE +000A9654 000A9670 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSI_ +000A9670 000A96A1 _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EEC2ERKSI_ +000A96A2 000A96CA _ZNSt10_Head_baseILm0EPSsLb0EEC2IRS0_EEOT_ +000A96CA 000A971D _ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSI_EvEEOSD_SH_ +000A971E 000A976A _ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSI_vEEOSD_OT0_ +000A976A 000A9797 _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EC2ESH_RKSI_ +000A9797 000A97A5 _ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERS1_ +000A97A5 000A97C3 _ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERSJ_ +000A97C3 000A97DD _ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000A97DD 000A97F7 _ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +000A97F8 000A9851 _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_ED2Ev +000A9851 000A985F _ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERKS1_ +000A985F 000A987D _ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSJ_ +000A987D 000A9897 _ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSK_DpT1_EE +000A9897 000A98B1 _ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSO_ +000A98B2 000A98CF _ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv +000A98CF 000A9907 _ZNSt16allocator_traitsISaISsEE9constructISsJRA1_KcEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS6_ +000A9907 000A9925 _ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +000A9926 000A995B _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E7releaseEv +000A995B 000A9985 _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE8allocateERS6_m +000A9985 000A9993 _ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000A9993 000A99A1 _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A99A2 000A99BE _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +000A99BE 000A99EF _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000A99F0 000A9A18 _ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EEC2IRS6_EEOT_ +000A9A18 000A9A6B _ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSH_EvEEOSC_SG_ +000A9A6C 000A9AB8 _ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSH_vEEOSC_OT0_ +000A9AB8 000A9AE5 _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EC2ESG_RKSH_ +000A9AE5 000A9AF3 _ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERS7_ +000A9AF3 000A9B11 _ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERSI_ +000A9B11 000A9B2B _ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A9B2B 000A9B45 _ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000A9B46 000A9B9F _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_ED2Ev +000A9B9F 000A9BAD _ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERKS7_ +000A9BAD 000A9BCB _ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERKSI_ +000A9BCB 000A9BE5 _ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A9BE5 000A9BFF _ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000A9C00 000A9C1D _ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv +000A9C1D 000A9C42 _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOS9_ +000A9C42 000A9C60 _ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +000A9C60 000A9C95 _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E7releaseEv +000A9C96 000A9CE2 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11lower_boundERS1_ +000A9CE2 000A9CEC _ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8key_compEv +000A9CEC 000A9D14 _ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_ +000A9D14 000A9DD3 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +000A9DD3 000A9DE1 _ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE +000A9DE2 000A9E1D _ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_ +000A9E1E 000A9E61 _ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_ +000A9E62 000A9E9D _ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEEOT_RKS1_ +000A9E9E 000AA2E7 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS1_ +000AA2E7 000AA313 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E +000AA314 000AA3D6 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E +000AA3D6 000AA416 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E +000AA416 000AA42F _ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E +000AA42F 000AA43D _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISR_E4typeE +000AA43E 000AA45A _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSO_ +000AA45A 000AA48B _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EEC2ERKSO_ +000AA48C 000AA4DF _ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSO_EvEEOSJ_SN_ +000AA4E0 000AA52C _ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSO_vEEOSJ_OT0_ +000AA52C 000AA559 _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EC2ESN_RKSO_ +000AA559 000AA577 _ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERSP_ +000AA577 000AA591 _ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000AA591 000AA5AB _ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +000AA5AC 000AA605 _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev +000AA605 000AA623 _ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERKSP_ +000AA623 000AA63D _ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSQ_DpT1_EE +000AA63D 000AA657 _ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSU_ +000AA658 000AA675 _ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv +000AA675 000AA6AD _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JRKSE_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSK_ +000AA6AD 000AA6CB _ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +000AA6CC 000AA701 _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E7releaseEv +000AA701 000AA70F _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +000AA710 000AA72C _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_ +000AA72C 000AA75D _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_ +000AA75E 000AA7B1 _ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSJ_EvEEOSE_SI_ +000AA7B2 000AA7FE _ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSJ_vEEOSE_OT0_ +000AA7FE 000AA82B _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EC2ESI_RKSJ_ +000AA82B 000AA849 _ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERSK_ +000AA849 000AA863 _ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000AA863 000AA87D _ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000AA87E 000AA8D7 _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_ED2Ev +000AA8D7 000AA8F5 _ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERKSK_ +000AA8F5 000AA90F _ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +000AA90F 000AA929 _ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +000AA92A 000AA947 _ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv +000AA947 000AA97F _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JRKS9_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSF_ +000AA97F 000AA99D _ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +000AA99E 000AA9D3 _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E7releaseEv +000AA9D3 000AA9E1 _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE +000AA9E2 000AA9FE _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSH_ +000AA9FE 000AAA2F _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EEC2ERKSH_ +000AAA30 000AAA83 _ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSH_EvEEOSC_SG_ +000AAA84 000AAAD0 _ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSH_vEEOSC_OT0_ +000AAAD0 000AAAFD _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EC2ESG_RKSH_ +000AAAFD 000AAB1B _ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERSI_ +000AAB1B 000AAB35 _ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000AAB35 000AAB4F _ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000AAB50 000AABA9 _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev +000AABA9 000AABC7 _ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSI_ +000AABC7 000AABE1 _ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000AABE1 000AABFB _ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000AABFC 000AAC19 _ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv +000AAC19 000AAC37 _ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +000AAC38 000AAC6D _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E7releaseEv +000AAC6D 000AAC7B _ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +000AAC7C 000AAC98 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_ +000AAC98 000AACC9 _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_ +000AACCA 000AAD1D _ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSJ_EvEEOSE_SI_ +000AAD1E 000AAD6A _ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSJ_vEEOSE_OT0_ +000AAD6A 000AAD97 _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EC2ESI_RKSJ_ +000AAD97 000AADB5 _ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERSK_ +000AADB5 000AADCF _ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000AADCF 000AADE9 _ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000AADEA 000AAE43 _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev +000AAE43 000AAE61 _ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERKSK_ +000AAE61 000AAE7B _ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +000AAE7B 000AAE95 _ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +000AAE96 000AAEB3 _ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv +000AAEB3 000AAEEB _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JRKS5_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOSB_ +000AAEEB 000AAF09 _ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +000AAF0A 000AAF3F _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E7releaseEv +000AAF40 000AAF55 _ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2Ev +000AAF55 000AB09B _ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEEvRKT_RNS9_8string_tE +000AB09C 000AB0BB _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKmLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB0BC 000AB0DB _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKlLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB0DC 000AB0FB _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKdLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB0FC 000AB11B _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKbLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB11B 000AB2BA _ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEiLi0EEEvRKT_RT0_ +000AB2BA 000AB2D4 _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h1Ev +000AB2D4 000AB30D _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexERS2_mm +000AB30E 000AB3E4 _ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m +000AB3E4 000AB426 _ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8allocateEmPKv +000AB426 000AB4CE _ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJRS4_EESC_IJEEEEEvPT_DpOT0_ +000AB4CE 000AB4F0 _ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE10deallocateEPS6_m +000AB4F0 000AB55E _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm +000AB55E 000AB578 _ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +000AB578 000AB59E _ZNKSt8__detail10_Select1stclIRSt4pairIKSsiEEEDTcl3getILi0EEcl7forwardIT_Efp_EEEOS6_ +000AB59E 000AB5BC _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb1EEEm +000AB5BC 000AB6BD _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb1EEE +000AB6BE 000AB6D8 _ZNSaIiEC2Ev +000AB6D8 000AB71A _ZN9__gnu_cxx13new_allocatorIiE9constructIiJRKiEEEvPT_DpOT0_ +000AB71A 000AB73C _ZNKSt6vectorIiSaIiEE8max_sizeEv +000AB73C 000AB77E _ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv +000AB77E 000AB7A3 _ZSt32__make_move_if_noexcept_iteratorIPiSt13move_iteratorIS0_EET0_T_ +000AB7A3 000AB7D4 _ZSt22__uninitialized_copy_aISt13move_iteratorIPiES1_iET0_T_S4_S3_RSaIT1_E +000AB7D4 000AB7F9 _ZNSt16allocator_traitsISaIiEE10_S_destroyIiEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +000AB7FA 000AB813 _ZNSt8__detail19_Node_iterator_baseISt4pairIKSsiELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +000AB813 000AB84B _ZNSt16allocator_traitsISaIiEE12_S_constructIiJiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +000AB84C 000AB9D5 _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag +000AB9D6 000AB9FE _ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv +000AB9FE 000ABA2C _ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEpLERKl +000ABA2C 000ABA42 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv +000ABA42 000ABA7F _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2Ev +000ABA80 000ABA9A _ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +000ABA9A 000ABABF _ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_ +000ABABF 000ABAD9 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS8_ +000ABADA 000ABAE8 _ZNKSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +000ABAE8 000ABB01 _ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES8_ +000ABB02 000ABB3A _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm +000ABB3A 000ABB6B _ZSt22__uninitialized_copy_aISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_S8_ET0_T_SC_SB_RSaIT1_E +000ABB6C 000ABB8E _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS8_m +000ABB8E 000ABB9C _ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb0EE7_S_baseESD_ +000ABB9C 000ABBB6 _ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_ +000ABBB6 000ABBD0 _ZSt12__niter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEENSt11_Niter_baseIT_E13iterator_typeESD_ +000ABBD0 000ABC01 _ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt20back_insert_iteratorIS3_IS7_SaIS7_EEEET1_T0_SE_SD_ +000ABC01 000ABC39 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000ABC3A 000ABE23 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJS6_EEEvDpOT_ +000ABE24 000ABE40 _ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKSA_ +000ABE40 000ABE4E _ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +000ABE4E 000ABE73 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS7_EENSt9enable_ifIXsrNS9_16__destroy_helperIT_EE5valueEvE4typeERS8_PSD_ +000ABE74 000ABED8 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E +000ABED8 000ABEEA _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +000ABEEA 000ABEFC _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv +000ABEFC 000ABF0E _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv +000ABF0E 000ABF20 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +000ABF20 000ABF32 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv +000ABF32 000ABF4C _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEED2Ev +000ABF4C 000ABF6A _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE7destroyISF_EEvPT_ +000ABF6A 000ABF88 _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE7destroyISA_EEvPT_ +000ABF88 000ABFA6 _ZN9__gnu_cxx13new_allocatorISsE7destroyISsEEvPT_ +000ABFA6 000ABFC0 _ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEED2Ev +000ABFC0 000ABFDE _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE7destroyIS6_EEvPT_ +000ABFDE 000ABFF8 _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EEC2Ev +000ABFF8 000AC012 _ZNSt13_Bvector_baseISaIbEEC2Ev +000AC012 000AC33E _ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb +000AC33E 000AC364 _ZNSt6vectorIbSaIbEE3endEv +000AC364 000AC37E _ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +000AC37E 000AC3B2 _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m +000AC3B2 000AC3D7 _ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_SA_ +000AC3D8 000AC3F2 _ZNSaImED2Ev +000AC3F2 000AC441 _ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv +000AC442 000AC468 _ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv +000AC468 000AC476 _ZSt7forwardIN8nlohmann6detail13parse_event_tEEOT_RNSt16remove_referenceIS3_E4typeE +000AC476 000AC484 _ZSt7forwardIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +000AC484 000AC505 _ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_ +000AC505 000AC513 _ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE +000AC514 000AC557 _ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_ +000AC557 000AC565 _ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +000AC566 000AC5A8 _ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_ +000AC5A8 000AC5B6 _ZSt7forwardIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +000AC5B6 000AC5F8 _ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_ +000AC5F8 000ACBB2 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_b +000ACBB2 000ACBC0 _ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE +000ACBC0 000ACC2B _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backERKS7_ +000ACC2C 000ACC75 _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv +000ACC76 000ACCC3 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv +000ACCC4 000ACD05 _ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv +000ACD06 000ACD3F _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv +000ACD40 000ACD7A _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE13is_structuredEv +000ACD7A 000ACF78 _ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEv +000ACF78 000AD3BE _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5eraseINS_6detail9iter_implIS6_EELi0EEET_SB_ +000AD3BE 000AD40D _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_ +000AD40E 000AD535 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixERSA_ +000AD535 000AD543 _ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE +000AD544 000ADAFF _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_b +000ADAFF 000ADB0D _ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE +000ADB0E 000AE0C9 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_b +000AE0CA 000AE685 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_b +000AE685 000AE693 _ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE +000AE694 000AEC4F _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_b +000AEC50 000AF20B _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_b +000AF20B 000AF219 _ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE +000AF21A 000AF7D5 _ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_b +000AF7D6 000AF813 _ZNKSt6vectorIbSaIbEE3endEv +000AF814 000AF84D _ZNKSt6vectorIbSaIbEE5beginEv +000AF84D 000AF85B _ZSt11__addressofIcEPT_RS0_ +000AF85C 000AFA5C _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_ +000AFA5C 000AFA6A _ZSt4moveIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSB_ +000AFA6A 000AFA9A _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backEOS7_ +000AFA9A 000AFC9C _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_ +000AFC9C 000AFE9E _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_ +000AFE9E 000B00A0 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_ +000B00A0 000B02A2 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_ +000B02A2 000B04A4 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_ +000B04A4 000B06A6 _ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_ +000B06A6 000B06DE _ZNSt16allocator_traitsISaISsEE12_S_constructISsJRKSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +000B06DE 000B0735 _ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEC2ERKS4_RKS6_RKS7_RKS8_ +000B0736 000B0744 _ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EEC2ERKS2_ +000B0744 000B0762 _ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2IS3_EERKSaIT_E +000B0762 000B07A4 _ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv +000B07A4 000B07BE _ZNSt4pairIKSsiED2Ev +000B07BE 000B07DC _ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EED2Ev +000B07DC 000B07FA _ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE7destroyIS6_EEvPT_ +000B07FA 000B0804 _ZN9__gnu_cxx13new_allocatorI19struct_TerminalListEC2Ev +000B0804 000B084A _ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIP19struct_TerminalListmEEvT_T0_ +000B084A 000B0864 _ZNSt16allocator_traitsISaI19struct_TerminalListEE8max_sizeERKS1_ +000B0864 000B0872 _ZNKSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +000B0872 000B0886 _ZNK9__gnu_cxx13new_allocatorI19struct_TerminalListE8max_sizeEv +000B0886 000B089F _ZNSt13move_iteratorIP19struct_TerminalListEC2ES1_ +000B089F 000B08CC _ZSt18uninitialized_copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +000B08CC 000B08DA _ZSt11__addressofIN6serial8PortInfoEEPT_RS2_ +000B08DA 000B08F4 _ZSt8_DestroyIN6serial8PortInfoEEvPT_ +000B08F4 000B0937 _ZN8nlohmann6detail22iterator_input_adapterIPhEC2ES2_S2_ +000B0937 000B098D _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_decimal_pointEv +000B098E 000B09FC _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE8skip_bomEv +000B09FC 000B0A4E _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE15skip_whitespaceEv +000B0A4E 000B0B1F _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_commentEv +000B0B1F 000B0B30 _ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm +000B0B30 000B0BF1 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE +000B0BF1 000B0C0A _ZNSt14__array_traitsIhLm4EE6_S_refERA4_Khm +000B0C0A 000B0C31 _ZNSt5arrayIhLm4EE4dataEv +000B0C31 000B0C4A _ZNSt14__array_traitsIhLm5EE6_S_refERA5_Khm +000B0C4A 000B0C71 _ZNSt5arrayIhLm5EE4dataEv +000B0C72 000B1898 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEv +000B1898 000B1E52 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEv +000B1E52 000B1E9D _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8allocateEmPKv +000B1E9D 000B1EAB _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSN_ +000B1EAB 000B1EC5 _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EE7_M_headERSN_ +000B1EC5 000B1EDF _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +000B1EDF 000B1EF9 _ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +000B1EFA 000B1F14 _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +000B1F14 000B1F39 _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JEEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSK_DpOSL_ +000B1F3A 000B1F5A _ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EcvbEv +000B1F5A 000B1FA5 _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8allocateEmPKv +000B1FA5 000B1FB3 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000B1FB3 000B1FCD _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +000B1FCD 000B1FE7 _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B1FE7 000B2001 _ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000B2002 000B201C _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +000B201C 000B2041 _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JEEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSF_DpOSG_ +000B2042 000B2062 _ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EcvbEv +000B2062 000B20A4 _ZN9__gnu_cxx13new_allocatorISsE8allocateEmPKv +000B20A4 000B20B2 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSJ_ +000B20B2 000B20CC _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EE7_M_headERSJ_ +000B20CC 000B20E6 _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000B20E6 000B2100 _ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +000B2100 000B211A _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +000B211A 000B2152 _ZNSt16allocator_traitsISaISsEE12_S_constructISsJRA1_KcEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS8_DpOS9_ +000B2152 000B2172 _ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EcvbEv +000B2172 000B21B4 _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8allocateEmPKv +000B21B4 000B21C2 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000B21C2 000B21DC _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +000B21DC 000B21F6 _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B21F6 000B2210 _ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000B2210 000B222A _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +000B222A 000B224F _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JEEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSB_DpOSC_ +000B2250 000B2270 _ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EcvbEv +000B2270 000B22FD _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_ESJ_RS1_ +000B22FE 000B2322 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv +000B2322 000B2330 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +000B2330 000B239B _ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +000B239C 000B23C6 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E +000B23C6 000B23EE _ZNKSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEE13_M_const_castEv +000B23EE 000B241A _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base +000B241A 000B2428 _ZSt7forwardIRPSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEOT_RNSt16remove_referenceISF_E4typeE +000B2428 000B246B _ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS6_14adl_serializerES9_IhSaIhEEEEEESH_vEEOT_OT0_ +000B246C 000B25D9 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_ +000B25D9 000B25EB _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base +000B25EB 000B25FD _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt13_Rb_tree_nodeISA_E +000B25FE 000B2610 _ZNKSt10_Select1stISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEclERKSA_ +000B2610 000B263A _ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +000B263A 000B2658 _ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEED2Ev +000B2658 000B2676 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE7destroyISD_EEvPT_ +000B2676 000B2684 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSP_ +000B2684 000B269E _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EE7_M_headERSP_ +000B269E 000B26B8 _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000B26B8 000B26D2 _ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +000B26D2 000B26EC _ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +000B26EC 000B2724 _ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JRKSE_EEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSM_DpOSN_ +000B2724 000B2744 _ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EcvbEv +000B2744 000B2752 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +000B2752 000B276C _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +000B276C 000B2786 _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000B2786 000B27A0 _ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000B27A0 000B27BA _ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +000B27BA 000B27F2 _ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JRKS9_EEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSH_DpOSI_ +000B27F2 000B2812 _ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EcvbEv +000B2812 000B2820 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSI_ +000B2820 000B283A _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EE7_M_headERSI_ +000B283A 000B2854 _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B2854 000B286E _ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000B286E 000B2888 _ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +000B2888 000B28A8 _ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EcvbEv +000B28A8 000B28B6 _ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +000B28B6 000B28D0 _ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +000B28D0 000B28EA _ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000B28EA 000B2904 _ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000B2904 000B291E _ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +000B291E 000B2956 _ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JRKS5_EEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSD_DpOSE_ +000B2956 000B2976 _ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EcvbEv +000B2976 000B2987 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEcvNS_6detail7value_tEEv +000B2988 000B29B9 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKm +000B29BA 000B29EB _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKl +000B29EC 000B2A1D _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKd +000B2A1E 000B2A4F _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKb +000B2A4F 000B2A5D _ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EE7_S_cgetERKS3_ +000B2A5E 000B2A78 _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h2Ev +000B2A78 000B2ACD _ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS3_Lb1EEE +000B2ACE 000B2AFB _ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb1EEE +000B2AFC 000B2B10 _ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8max_sizeEv +000B2B10 000B2B1E _ZNSt11_Tuple_implILm0EJRKSsEE7_M_tailERS2_ +000B2B1E 000B2B2F _ZNSt10_Head_baseILm0ERKSsLb0EE7_M_headERS2_ +000B2B2F 000B2B49 _ZNSt11_Tuple_implILm0EJRKSsEE7_M_headERS2_ +000B2B4A 000B2B96 _ZNSt11_Tuple_implILm0EJRKSsEEC2EOS2_ +000B2B96 000B2BBB _ZNSt5tupleIJRKSsEEC2EOS2_ +000B2BBC 000B2C4D _ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEC2IJRKSt21piecewise_construct_tSt5tupleIJRS2_EES9_IJEEEEEDpOT_ +000B2C4E 000B2DF4 _ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE +000B2DF4 000B2E02 _ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE6_S_getERS2_ +000B2E02 000B2E0C _ZN9__gnu_cxx13new_allocatorIiEC2Ev +000B2E0C 000B2E26 _ZNSt16allocator_traitsISaIiEE8max_sizeERKS0_ +000B2E26 000B2E34 _ZNKSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +000B2E34 000B2E48 _ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv +000B2E48 000B2E61 _ZNSt13move_iteratorIPiEC2ES0_ +000B2E61 000B2E8E _ZSt18uninitialized_copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +000B2E8E 000B2E9C _ZN9__gnu_cxx13new_allocatorIiE7destroyIiEEvPT_ +000B2E9C 000B2EDE _ZN9__gnu_cxx13new_allocatorIiE9constructIiJiEEEvPT_DpOT0_ +000B2EDE 000B2EF1 _ZSteqIcEbRKSaIT_ES3_ +000B2EF1 000B2F03 _ZN9__gnu_cxx17__is_null_pointerIcEEbPT_ +000B2F03 000B2F3D _ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_ +000B2F3E 000B2F54 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10is_booleanEv +000B2F54 000B2F6E _ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +000B2F6E 000B2F78 _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +000B2F78 000B2FAF _ZNSt12_Destroy_auxILb0EE9__destroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SB_ +000B2FAF 000B2FC9 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS8_EENSt9enable_ifIXsrNS9_16__maxsize_helperIT_EE5valueEmE4typeERSE_ +000B2FCA 000B300C _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +000B300C 000B3039 _ZSt18uninitialized_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_ET0_T_SC_SB_ +000B3039 000B3056 _ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb1EE7_S_baseESD_ +000B3056 000B3064 _ZNSt10_Iter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEELb0EE7_S_baseESB_ +000B3064 000B30DF _ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESt20back_insert_iteratorIS6_ISA_SaISA_EEEEET0_T_SH_SG_ +000B30DF 000B3117 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JS7_EEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +000B3118 000B31E1 _ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc +000B31E1 000B322F _ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_ +000B3230 000B324E _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS8_EEvPT_ +000B324E 000B3260 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base +000B3260 000B327A _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EED2Ev +000B327A 000B32B2 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EED2Ev +000B32B2 000B32EF _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implC2Ev +000B32F0 000B3332 _ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev +000B3332 000B33D8 _ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_ +000B33D8 000B34A1 _ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc +000B34A2 000B34D7 _ZNSt13_Bvector_baseISaIbEE11_M_allocateEm +000B34D8 000B3583 _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator +000B3584 000B35A9 _ZNSt6vectorIbSaIbEE5beginEv +000B35A9 000B364F _ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_ +000B364F 000B3665 _ZNSt13_Bvector_baseISaIbEE8_S_nwordEm +000B3666 000B3670 _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +000B3670 000B3692 _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS9_m +000B3692 000B36A0 _ZNSt12_Destroy_auxILb1EE9__destroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SC_ +000B36A0 000B36AA _ZN9__gnu_cxx13new_allocatorImED2Ev +000B36AA 000B36CC _ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm +000B36CC 000B3704 _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_ +000B3704 000B38F0 _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJRKS7_EEEvDpOT_ +000B38F0 000B3919 _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +000B391A 000B395F _ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEmiERKl +000B3960 000B3971 _ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEdeEv +000B3972 000B398C _ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8max_sizeEv +000B398C 000B39BD _ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +000B39BE 000B39EE _ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5beginEv +000B39EE 000B3A2A _ZN9__gnu_cxxeqIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_ +000B3A2A 000B3A4F _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_ +000B3A50 000B3A75 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorISB_E +000B3A76 000B3B3C _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS6_S8_EE +000B3B3C 000B3B73 _ZN8nlohmann14adl_serializerISsvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERSsEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3B74 000B3C8B _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +000B3C8C 000B3CDB _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_ +000B3CDC 000B3D2B _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_ +000B3D2C 000B3D7B _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_ +000B3D7C 000B3DCB _ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_ +000B3DCC 000B3DDD _ZNKSt16initializer_listIKjE5beginEv +000B3DDE 000B3DF0 _ZNKSt16initializer_listIKjE4sizeEv +000B3DF0 000B3E26 _ZNKSt16initializer_listIKjE3endEv +000B3E26 000B3EA7 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJNS0_6detail7value_tEEEEvDpOT_ +000B3EA8 000B3F29 _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12emplace_backIJS7_EEEvDpOT_ +000B3F2A 000B3FAB _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRdEEEvDpOT_ +000B3FAC 000B402D _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRbEEEvDpOT_ +000B402E 000B40AF _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJDnEEEvDpOT_ +000B40B0 000B4131 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRlEEEvDpOT_ +000B4132 000B41B3 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRSsEEEvDpOT_ +000B41B4 000B4235 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRmEEEvDpOT_ +000B4236 000B42AA _ZN9__gnu_cxx13new_allocatorISsE9constructISsJRKSsEEEvPT_DpOT0_ +000B42AA 000B42B8 _ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2ERKS1_ +000B42B8 000B42C6 _ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EEC2ERKS2_ +000B42C6 000B42D4 _ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2ERKS1_ +000B42D4 000B42DE _ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2Ev +000B42DE 000B42F2 _ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8max_sizeEv +000B42F2 000B4327 _ZSt6fill_nIP19struct_TerminalListmS0_ET_S2_T0_RKT1_ +000B4327 000B4341 _ZNSt16allocator_traitsISaI19struct_TerminalListEE11_S_max_sizeIKS1_EENSt9enable_ifIXsrNS2_16__maxsize_helperIT_EE5valueEmE4typeERS7_ +000B4341 000B436E _ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIP19struct_TerminalListES4_EET0_T_S7_S6_ +000B436E 000B4454 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv +000B4454 000B452B _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv +000B452B 000B4539 _ZSt11__addressofIhEPT_RS0_ +000B453A 000B4592 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5resetEv +000B4592 000B45BD _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm +000B45BE 000B473F _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEv +000B4740 000B4752 _ZNKSt16initializer_listImE4sizeEv +000B4752 000B4763 _ZNKSt16initializer_listImE5beginEv +000B4764 000B479A _ZNKSt16initializer_listImE3endEv +000B479A 000B48E0 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE +000B48E0 000B4919 _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE6strtofERdPKcPPc +000B491A 000B492E _ZNK9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8max_sizeEv +000B492E 000B498C _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JEEEvPT_DpOT0_ +000B498C 000B49A0 _ZNK9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8max_sizeEv +000B49A0 000B49FE _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JEEEvPT_DpOT0_ +000B49FE 000B4A12 _ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv +000B4A12 000B4AB6 _ZN9__gnu_cxx13new_allocatorISsE9constructISsJRA1_KcEEEvPT_DpOT0_ +000B4AB6 000B4ACA _ZNK9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8max_sizeEv +000B4ACA 000B4B28 _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JEEEvPT_DpOT0_ +000B4B28 000B4B78 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8allocateEmPKv +000B4B78 000B4BE3 _ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +000B4BE4 000B4C06 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE10deallocateEPSD_m +000B4C06 000B4C18 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt18_Rb_tree_node_base +000B4C18 000B4C8C _ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JRKSF_EEEvPT_DpOT0_ +000B4C8C 000B4D00 _ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JRKSA_EEEvPT_DpOT0_ +000B4D00 000B4D43 _ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2ERKS4_ +000B4D44 000B4DB8 _ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JRKS6_EEEvPT_DpOT0_ +000B4DB8 000B4DCE _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE18is_number_unsignedEv +000B4DCE 000B4DFA _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE17is_number_integerEv +000B4DFA 000B4E10 _ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE15is_number_floatEv +000B4E10 000B4E1E _ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_S_cgetERKS2_ +000B4E1E 000B4E87 _ZNSt8__detail13_Equal_helperISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsEmLb1EE9_S_equalsERKS6_RKS4_RS2_mPNS_10_Hash_nodeIS3_Lb1EEE +000B4E88 000B4EA2 _ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE5_M_eqEv +000B4EA2 000B4EBC _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +000B4EBC 000B4EFB _ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb1EEEm +000B4EFC 000B4F2E _ZNSt4pairIKSsiEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EES5_IJDpT0_EE +000B4F2E 000B4F48 _ZNSt16allocator_traitsISaIiEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +000B4F48 000B4F75 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPiES3_EET0_T_S6_S5_ +000B4F75 000B4F7F _ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +000B4F7F 000B4F9B _ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +000B4F9C 000B4FA6 _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +000B4FA6 000B4FB4 _ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_ +000B4FB4 000B4FCE _ZSt8_DestroyIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvPT_ +000B4FCE 000B4FE2 _ZNK9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +000B4FE2 000B508F _ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESB_EET0_T_SE_SD_ +000B5090 000B509E _ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEdeEv +000B509E 000B50D5 _ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEaSEOS7_ +000B50D6 000B50E4 _ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEppEv +000B50E4 000B5130 _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JS8_EEEvPT_DpOT0_ +000B5130 000B514A _ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev +000B514A 000B5164 _ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +000B5164 000B517E _ZNSaImEC2Ev +000B517E 000B51BF _ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +000B51BF 000B5286 _ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B5286 000B52DB _ZNKSt6vectorIbSaIbEE4sizeEv +000B52DC 000B5334 _ZNKSt6vectorIbSaIbEE8max_sizeEv +000B5334 000B5376 _ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv +000B5376 000B53BC _ZSt4copyIPmS0_ET0_T_S2_S1_ +000B53BC 000B5462 _ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_ +000B5462 000B5529 _ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B5529 000B5561 _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JRKS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSG_DpOSH_ +000B5562 000B562B _ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12_M_check_lenEmPKc +000B562C 000B5664 _ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE11_M_allocateEm +000B5664 000B56B2 _ZSt34__uninitialized_move_if_noexcept_aIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_SaIS8_EET0_T_SC_SB_RT1_ +000B56B2 000B56CE _ZN9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSA_ +000B56CE 000B56F0 _ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8max_sizeEv +000B56F0 000B570C _ZN9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSB_ +000B570C 000B571A _ZNK9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEE4baseEv +000B571A 000B573F _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS8_EENSt9enable_ifIXsrNSA_16__destroy_helperIT_EE5valueEvE4typeERS9_PSE_ +000B5740 000B5790 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5eraseB5cxx11ESt17_Rb_tree_iteratorISA_E +000B5790 000B57D2 _ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEplERKl +000B57D2 000B5818 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET0_T_SF_SE_ +000B5818 000B584C _ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERSsEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B584C 000B590B _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +000B590B 000B5942 _ZN8nlohmann14adl_serializerIdvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERdEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5942 000B5979 _ZN8nlohmann14adl_serializerIbvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERbEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5979 000B59B0 _ZN8nlohmann14adl_serializerIlvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERlEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B59B0 000B59E7 _ZN8nlohmann14adl_serializerImvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERmEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B59E7 000B5A1F _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JNS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_ +000B5A20 000B5C09 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJNS0_6detail7value_tEEEEvDpOT_ +000B5C09 000B5C41 _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_ +000B5C42 000B5E2E _ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJS7_EEEvDpOT_ +000B5E2E 000B5E66 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B5E66 000B604F _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRdEEEvDpOT_ +000B604F 000B6087 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6088 000B6271 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRbEEEvDpOT_ +000B6271 000B62A9 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000B62AA 000B6493 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJDnEEEvDpOT_ +000B6493 000B64CB _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B64CC 000B66B5 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRlEEEvDpOT_ +000B66B5 000B66ED _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B66EE 000B68D7 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRSsEEEvDpOT_ +000B68D7 000B690F _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6910 000B6AF9 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRmEEEvDpOT_ +000B6AF9 000B6B13 _ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_ +000B6B13 000B6B88 _ZSt10__fill_n_aIP19struct_TerminalListmS0_EN9__gnu_cxx11__enable_ifIXntsrSt11__is_scalarIT1_E7__valueET_E6__typeES7_T0_RKS5_ +000B6B88 000B6BCE _ZSt4copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +000B6BCE 000B6BE2 _ZN9__gnu_cxx11char_traitsIhE11to_int_typeERKh +000B6BE2 000B6C3C _ZN8nlohmann6detail22iterator_input_adapterIPhE13get_characterEv +000B6C3C 000B6C4A _ZSt4moveIRhEONSt16remove_referenceIT_E4typeEOS2_ +000B6C4A 000B6C7A _ZNSt6vectorIhSaIhEE9push_backEOh +000B6C7A 000B6CBB _ZNKSt6vectorIhSaIhEE5emptyEv +000B6CBC 000B6CF5 _ZNSt6vectorIhSaIhEE8pop_backEv +000B6CF6 000B6D10 _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2Ev +000B6D10 000B6D3A _ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2Ev +000B6D3A 000B6D4E _ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8max_sizeEv +000B6D4E 000B6DF6 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEvPT_DpOT0_ +000B6DF6 000B6E1B _ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2ERKSD_ +000B6E1C 000B6F08 _ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2ERKS8_ +000B6F08 000B6F31 _ZNKSt8equal_toISsEclERKSsS2_ +000B6F31 000B6F3F _ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EE7_S_cgetERKS3_ +000B6F3F 000B6F4D _ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_S_cgetERKS2_ +000B6F4D 000B6F67 _ZSt12__get_helperILm0ERKSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000B6F67 000B6F81 _ZSt3getILm0EJRKSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS7_ +000B6F82 000B6FC9 _ZNSt4pairIKSsiEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERS4_IJDpT1_EESt12_Index_tupleIJXspT0_EEESD_IJXspT2_EEE +000B6FC9 000B700F _ZSt4copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +000B700F 000B7037 _ZStneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +000B7038 000B7058 _ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEppEv +000B7058 000B7075 _ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEdeEv +000B7075 000B70BD _ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJS7_EEvPT_DpOT0_ +000B70BE 000B70C8 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEED2Ev +000B70C8 000B70D2 _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +000B70D2 000B70DC _ZN9__gnu_cxx13new_allocatorImEC2Ev +000B70DC 000B7108 _ZNSt10_Iter_baseISt13_Bit_iteratorLb0EE7_S_baseES0_ +000B7108 000B7149 _ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +000B7149 000B71B1 _ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B71B2 000B71C0 _ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv +000B71C0 000B71D4 _ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv +000B71D4 000B71EE _ZSt12__miter_baseIPmENSt11_Miter_baseIT_E13iterator_typeES2_ +000B71EE 000B7246 _ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_ +000B7246 000B7287 _ZSt12__miter_baseISt19_Bit_const_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +000B7287 000B734E _ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +000B734E 000B73B6 _ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B73B6 000B73FA _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JRKS9_EEEvPT_DpOT0_ +000B73FA 000B741C _ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv +000B741C 000B745E _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +000B745E 000B7483 _ZSt32__make_move_if_noexcept_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS9_EET0_T_ +000B7483 000B74B4 _ZSt22__uninitialized_copy_aISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_S9_ET0_T_SD_SC_RSaIT1_E +000B74B4 000B74C2 _ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +000B74C2 000B74D0 _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS9_EEvPT_ +000B74D0 000B7524 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_erase_auxESt23_Rb_tree_const_iteratorISA_E +000B7524 000B7597 _ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET1_T0_SF_SE_ +000B7597 000B75BC _ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEESsLi0EEEvRT_RKT0_ +000B75BC 000B7627 _ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +000B7628 000B7662 _ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERdEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B7662 000B7698 _ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERbEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B7698 000B76CC _ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERlEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B76CC 000B7700 _ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERmEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B7700 000B7738 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JNS0_6detail7value_tEEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSF_DpOSG_ +000B7738 000B7770 _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSE_DpOSF_ +000B7770 000B77A8 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRdEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B77A8 000B77E0 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRbEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B77E0 000B7818 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JDnEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +000B7818 000B7850 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRlEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B7850 000B7888 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRSsEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B7888 000B78C0 _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRmEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B78C0 000B78CE _ZNSt10_Iter_baseIP19struct_TerminalListLb0EE7_S_baseES1_ +000B78CE 000B78E8 _ZSt12__miter_baseISt13move_iteratorIP19struct_TerminalListEENSt11_Miter_baseIT_E13iterator_typeES5_ +000B78E8 000B7940 _ZSt14__copy_move_a2ILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +000B7940 000B7982 _ZSt7advanceIPhiEvRT_T0_ +000B7982 000B7990 _ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE +000B7990 000B7A11 _ZNSt6vectorIhSaIhEE12emplace_backIJhEEEvDpOT_ +000B7A11 000B7A4D _ZN9__gnu_cxxeqIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +000B7A4D 000B7A72 _ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_ +000B7A72 000B7A8C _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2Ev +000B7A8C 000B7B33 _ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJOSsEESG_IJEEEEEDpOT_ +000B7B34 000B7C4C _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2ERKSG_ +000B7C4C 000B7C75 _ZN9__gnu_cxx14__alloc_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEE17_S_select_on_copyERKS9_ +000B7C76 000B7CD4 _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2EmRKS8_ +000B7CD4 000B7D05 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_S9_ET0_T_SH_SG_RSaIT1_E +000B7D05 000B7D89 _ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_ +000B7D89 000B7DA3 _ZSt12__miter_baseISt13move_iteratorIPiEENSt11_Miter_baseIT_E13iterator_typeES4_ +000B7DA3 000B7DFB _ZSt14__copy_move_a2ILb1EPiS0_ET1_T0_S2_S1_ +000B7DFB 000B7E34 _ZSteqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +000B7E34 000B7EE4 _ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_ +000B7EE4 000B7F15 _ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_ +000B7F15 000B7F41 _ZNSt10_Iter_baseISt19_Bit_const_iteratorLb0EE7_S_baseES0_ +000B7F41 000B7F82 _ZSt12__niter_baseISt19_Bit_const_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +000B7F82 000B7FEA _ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +000B7FEA 000B80A2 _ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_ +000B80A2 000B80BC _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS9_ +000B80BC 000B80CA _ZNKSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +000B80CA 000B80DE _ZNK9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +000B80DE 000B80F7 _ZNSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES9_ +000B80F7 000B8124 _ZSt18uninitialized_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +000B8124 000B8155 _ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_ET1_T0_SA_S9_ +000B8155 000B8199 _ZN8nlohmann6detail20external_constructorILNS0_7value_tE3EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_RKNSC_8string_tE +000B8199 000B8204 _ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +000B8204 000B8230 _ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEdLi0EEEvRT_T0_ +000B8230 000B8255 _ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEbLi0EEEvRT_T0_ +000B8255 000B827A _ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEElLi0EEEvRT_T0_ +000B827A 000B829F _ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEmLi0EEEvRT_T0_ +000B82A0 000B8315 _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JNS1_6detail7value_tEEEEvPT_DpOT0_ +000B8316 000B835A _ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JS9_EEEvPT_DpOT0_ +000B835A 000B83A6 _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRdEEEvPT_DpOT0_ +000B83A6 000B83F2 _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRbEEEvPT_DpOT0_ +000B83F2 000B843E _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JDnEEEvPT_DpOT0_ +000B843E 000B848A _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRlEEEvPT_DpOT0_ +000B848A 000B84FE _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRSsEEEvPT_DpOT0_ +000B84FE 000B854A _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRmEEEvPT_DpOT0_ +000B854A 000B8564 _ZNSt10_Iter_baseISt13move_iteratorIP19struct_TerminalListELb1EE7_S_baseES3_ +000B8564 000B8595 _ZSt13__copy_move_aILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +000B8595 000B859F _ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +000B859F 000B85C2 _ZSt9__advanceIPhlEvRT_T0_St26random_access_iterator_tag +000B85C2 000B85FA _ZNSt16allocator_traitsISaIhEE9constructIhJhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000B85FA 000B87CA _ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJhEEEvDpOT_ +000B87CA 000B87EF _ZNSt16allocator_traitsISaIhEE10_S_destroyIhEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +000B87F0 000B8873 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2Ev +000B8874 000B88A6 _ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +000B88A6 000B8938 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2ERKSE_RKSaISt13_Rb_tree_nodeISA_EE +000B8938 000B894A _ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +000B894A 000B8A9C _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_ +000B8A9C 000B8AAE _ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +000B8AAE 000B8AC8 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_minimumEPSt18_Rb_tree_node_base +000B8AC8 000B8AE2 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_maximumEPSt18_Rb_tree_node_base +000B8AE2 000B8B0B _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE37select_on_container_copy_constructionERKS8_ +000B8B0C 000B8B31 _ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7_ +000B8B32 000B8B7A _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2ERKS8_ +000B8B7A 000B8BCF _ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE17_M_create_storageEm +000B8BCF 000B8BFC _ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_ET0_T_SH_SG_ +000B8BFC 000B8C16 _ZNSt10_Iter_baseISt13move_iteratorIPiELb1EE7_S_baseES2_ +000B8C16 000B8C30 _ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ +000B8C30 000B8C61 _ZSt13__copy_move_aILb1EPiS0_ET1_T0_S2_S1_ +000B8C62 000B8C73 _ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +000B8C73 000B8CD8 _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_ +000B8CD8 000B8D8C _ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_ +000B8D8C 000B8DA6 _ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS9_EENSt9enable_ifIXsrNSA_16__maxsize_helperIT_EE5valueEmE4typeERSF_ +000B8DA6 000B8DD3 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESC_EET0_T_SF_SE_ +000B8DD3 000B8E58 _ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESB_EET0_T_SD_SC_ +000B8E58 000B8F00 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJRS3_EESJ_IJEEEEEvPT_DpOT0_ +000B8F00 000B8F4B _ZN8nlohmann6detail20external_constructorILNS0_7value_tE7EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_14number_float_tE +000B8F4B 000B8F8F _ZN8nlohmann6detail20external_constructorILNS0_7value_tE4EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_9boolean_tE +000B8F8F 000B8FD3 _ZN8nlohmann6detail20external_constructorILNS0_7value_tE5EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_16number_integer_tE +000B8FD3 000B9017 _ZN8nlohmann6detail20external_constructorILNS0_7value_tE6EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_17number_unsigned_tE +000B9018 000B9029 _ZNKSt13move_iteratorIP19struct_TerminalListE4baseEv +000B9029 000B90AB _ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mI19struct_TerminalListEEPT_PKS4_S7_S5_ +000B90AB 000B90E3 _ZNSt16allocator_traitsISaIhEE12_S_constructIhJhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +000B90E4 000B90F2 _ZN9__gnu_cxx13new_allocatorIhE7destroyIhEEvPT_ +000B90F2 000B910C _ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2Ev +000B910C 000B914D _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EE13_M_initializeEv +000B914D 000B9167 _ZSt12__get_helperILm0EOSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS2_DpT1_EE +000B9167 000B9181 _ZSt3getILm0EJOSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS6_ +000B9182 000B91D3 _ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000B91D4 000B91F9 _ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2ERKSC_ +000B91FA 000B924F _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISA_E +000B924F 000B9261 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPKSt18_Rb_tree_node_base +000B9261 000B9273 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPKSt18_Rb_tree_node_base +000B9273 000B929C _ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9_S_selectIKS8_EENSt9enable_ifIXntsrNS9_15__select_helperIT_EE5valueESE_E4typeERSE_ +000B929C 000B92AA _ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +000B92AA 000B9357 _ZNSt20__uninitialized_copyILb0EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEES7_ISB_SaISB_EEEEPSB_EET0_T_SJ_SI_ +000B9358 000B9369 _ZNKSt13move_iteratorIPiE4baseEv +000B9369 000B9377 _ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ +000B9377 000B93DC _ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ +000B93DC 000B9422 _ZSt4copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +000B9422 000B94C9 _ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJRS1_EESG_IJEEEEEDpOT_ +000B94CA 000B950D _ZN9__gnu_cxx13new_allocatorIhE9constructIhJhEEEvPT_DpOT0_ +000B950E 000B9518 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2Ev +000B9518 000B9526 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2ERKSE_ +000B9526 000B9534 _ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE +000B9534 000B95C2 _ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSA_EEEPSt13_Rb_tree_nodeISA_EDpOT_ +000B95C2 000B95FE _ZN9__gnu_cxxneIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +000B95FE 000B961E _ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEppEv +000B961E 000B962F _ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +000B962F 000B969F _ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJRKS7_EEvPT_DpOT0_ +000B969F 000B96B9 _ZSt12__miter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEENSt11_Miter_baseIT_E13iterator_typeESD_ +000B96B9 000B9711 _ZSt14__copy_move_a2ILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +000B9712 000B9744 _ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +000B9744 000B977C _ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSI_ +000B977C 000B9796 _ZNSt10_Iter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEELb1EE7_S_baseESB_ +000B9796 000B97B0 _ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_ +000B97B0 000B97E1 _ZSt13__copy_move_aILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +000B97E2 000B9833 _ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000B9833 000B986B _ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSB_EEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSK_DpOSL_ +000B986C 000B987D _ZNKSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +000B987D 000B988B _ZNSt10_Iter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEELb0EE7_S_baseES9_ +000B988B 000B98F0 _ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEPT_PKSC_SF_SD_ +000B98F0 000B9964 _ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSC_EEEvPT_DpOT0_ +000B9964 000B99C6 _ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +000B99C6 000B9A25 _ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSA_EEEDpOT_ +000B9A26 000B9A67 _ZN8nlohmann6detail11other_errorD2Ev +000B9A68 000B9A8E _ZN8nlohmann6detail11other_errorD0Ev +000B9A8E 000B9ACF _ZN8nlohmann6detail12out_of_rangeD2Ev +000B9AD0 000B9AF6 _ZN8nlohmann6detail12out_of_rangeD0Ev +000B9AF6 000B9B37 _ZN8nlohmann6detail10type_errorD2Ev +000B9B38 000B9B5E _ZN8nlohmann6detail10type_errorD0Ev +000B9B5E 000B9B9F _ZN8nlohmann6detail16invalid_iteratorD2Ev +000B9BA0 000B9BC6 _ZN8nlohmann6detail16invalid_iteratorD0Ev +000B9BC6 000B9C07 _ZN8nlohmann6detail11parse_errorD2Ev +000B9C08 000B9C2E _ZN8nlohmann6detail11parse_errorD0Ev +000B9C2E 000B9C6D _ZN16ThermalTCMDeviceC2Ev +000B9C6E 000B9CC2 _ZN16ThermalTCMDeviceD2Ev +000B9CC2 000B9CE8 _ZN16ThermalTCMDeviceD0Ev +000B9CE8 000B9EBA _ZN16ThermalTCMDevice4initEv +000B9EBA 000B9F6F _ZN16ThermalTCMDevice18getProximityDeviceEv +000B9F70 000BA025 _ZN16ThermalTCMDevice14getMotorDeviceEv +000BA026 000BA0DB _ZN16ThermalTCMDevice14getEERomDeviceEv +000BA0DB 000BA0E9 _ZSt4moveIRP16TCMVirtualDeviceEONSt16remove_referenceIT_E4typeEOS4_ +000BA0EA 000BA11A _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_ +000BA11A 000BA13F _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv +000BA140 000BA169 _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv +000BA169 000BA1A5 _ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +000BA1A6 000BA1C6 _ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv +000BA1C6 000BA1D7 _ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv +000BA1D7 000BA1E5 _ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE +000BA1E6 000BA267 _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE12emplace_backIJS1_EEEvDpOT_ +000BA268 000BA284 _ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEC2ERKS3_ +000BA284 000BA292 _ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEE4baseEv +000BA292 000BA2CA _ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_JS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ +000BA2CA 000BA4B6 _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE19_M_emplace_back_auxIJS1_EEEvDpOT_ +000BA4B6 000BA4EE _ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE12_S_constructIS1_JS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_ +000BA4EE 000BA5B7 _ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE12_M_check_lenEmPKc +000BA5B8 000BA5F0 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE11_M_allocateEm +000BA5F0 000BA616 _ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv +000BA616 000BA624 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +000BA624 000BA672 _ZSt34__uninitialized_move_if_noexcept_aIPP16TCMVirtualDeviceS2_SaIS1_EET0_T_S5_S4_RT1_ +000BA672 000BA697 _ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE7destroyIS1_EEvRS2_PT_ +000BA697 000BA6C0 _ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E +000BA6C0 000BA6F4 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m +000BA6F4 000BA738 _ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE9constructIS2_JS2_EEEvPT_DpOT0_ +000BA738 000BA75A _ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv +000BA75A 000BA79C _ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8allocateEmPKv +000BA79C 000BA7C1 _ZSt32__make_move_if_noexcept_iteratorIPP16TCMVirtualDeviceSt13move_iteratorIS2_EET0_T_ +000BA7C1 000BA7F2 _ZSt22__uninitialized_copy_aISt13move_iteratorIPP16TCMVirtualDeviceES3_S2_ET0_T_S6_S5_RSaIT1_E +000BA7F2 000BA817 _ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +000BA817 000BA83C _ZSt8_DestroyIPP16TCMVirtualDeviceEvT_S3_ +000BA83C 000BA85E _ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE10deallocateEPS2_m +000BA85E 000BA878 _ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE8max_sizeERKS2_ +000BA878 000BA886 _ZNKSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +000BA886 000BA89A _ZNK9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8max_sizeEv +000BA89A 000BA8B3 _ZNSt13move_iteratorIPP16TCMVirtualDeviceEC2ES2_ +000BA8B3 000BA8E0 _ZSt18uninitialized_copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +000BA8E0 000BA8EE _ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE7destroyIS2_EEvPT_ +000BA8EE 000BA8FC _ZNSt12_Destroy_auxILb1EE9__destroyIPP16TCMVirtualDeviceEEvT_S5_ +000BA8FC 000BA916 _ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +000BA916 000BA943 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPP16TCMVirtualDeviceES5_EET0_T_S8_S7_ +000BA943 000BA989 _ZSt4copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +000BA989 000BA9A3 _ZSt12__miter_baseISt13move_iteratorIPP16TCMVirtualDeviceEENSt11_Miter_baseIT_E13iterator_typeES6_ +000BA9A3 000BA9FB _ZSt14__copy_move_a2ILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +000BA9FB 000BAA15 _ZNSt10_Iter_baseISt13move_iteratorIPP16TCMVirtualDeviceELb1EE7_S_baseES4_ +000BAA15 000BAA2F _ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_ +000BAA2F 000BAA60 _ZSt13__copy_move_aILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +000BAA60 000BAA71 _ZNKSt13move_iteratorIPP16TCMVirtualDeviceE4baseEv +000BAA71 000BAA7F _ZNSt10_Iter_baseIPP16TCMVirtualDeviceLb0EE7_S_baseES2_ +000BAA7F 000BAAE4 _ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIP16TCMVirtualDeviceEEPT_PKS5_S8_S6_ +000BAAE4 000BACC5 _ZL4globRKSt6vectorISsSaISsEE +000BACC5 000BAD34 _ZL8basenameRKSs +000BAD34 000BADFA _ZL7dirnameRKSs +000BADFA 000BAE44 _ZL11path_existsRKSs +000BAE44 000BAECB _ZL8realpathRKSs +000BAECB 000BB223 _ZL23usb_sysfs_friendly_nameRKSs +000BB223 000BB798 _ZL14get_sysfs_infoRKSs +000BB798 000BB876 _ZL9read_lineRKSs +000BB876 000BBA88 _ZL6formatPKcz +000BBA88 000BBCC2 _ZL19usb_sysfs_hw_stringRKSs +000BBCC2 000BC1EB _ZN6serial10list_portsEv +000BC1EB 000BC233 _Z41__static_initialization_and_destruction_0ii +000BC233 000BC248 _GLOBAL__sub_I_list_ports_linux.cc +000BC248 000BC2B9 _ZN6serial8PortInfoC2Ev +000BC2BA 000BC2D4 _ZNSt6vectorISsSaISsEEC2Ev +000BC2D4 000BC317 _ZNSt6vectorISsSaISsEED2Ev +000BC318 000BC33E _ZNKSt6vectorISsSaISsEE4sizeEv +000BC33E 000BC35E _ZNKSt6vectorISsSaISsEEixEm +000BC35E 000BC38E _ZNKSt6vectorISsSaISsEE5beginEv +000BC38E 000BC3AE _ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEppEv +000BC3AE 000BC3DF _ZNKSt6vectorISsSaISsEE3endEv +000BC3DF 000BC41B _ZN9__gnu_cxxneIPKSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +000BC41C 000BC42D _ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEptEv +000BC42E 000BC45E _ZNSt6vectorISsSaISsEE9push_backEOSs +000BC45E 000BC4C0 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ +000BC4C0 000BC52B _ZNSt6vectorISsSaISsEE9push_backERKSs +000BC52C 000BC546 _ZNSt6vectorIN6serial8PortInfoESaIS1_EEC2Ev +000BC546 000BC56B _ZNSt6vectorISsSaISsEE5beginEv +000BC56C 000BC595 _ZNSt6vectorISsSaISsEE3endEv +000BC595 000BC5D1 _ZN9__gnu_cxxneIPSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +000BC5D2 000BC610 _ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEppEi +000BC610 000BC621 _ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEdeEv +000BC622 000BC642 _ZNSt6vectorISsSaISsEEixEm +000BC642 000BC650 _ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE +000BC650 000BC6BB _ZNSt6vectorIN6serial8PortInfoESaIS1_EE9push_backERKS1_ +000BC6BC 000BC6D6 _ZNSt12_Vector_baseISsSaISsEE12_Vector_implD2Ev +000BC6D6 000BC6F0 _ZNSt12_Vector_baseISsSaISsEEC2Ev +000BC6F0 000BC73F _ZNSt12_Vector_baseISsSaISsEED2Ev +000BC740 000BC74E _ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +000BC74E 000BC777 _ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E +000BC778 000BC794 _ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC2ERKS2_ +000BC794 000BC7A2 _ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv +000BC7A2 000BC823 _ZNSt6vectorISsSaISsEE12emplace_backIJSsEEEvDpOT_ +000BC824 000BCA10 _ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJRKSsEEEvDpOT_ +000BCA10 000BCA2A _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EEC2Ev +000BCA2A 000BCA46 _ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_ +000BCA46 000BCA54 _ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv +000BCA54 000BCA8C _ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_JRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ +000BCA8C 000BCCA7 _ZNSt6vectorIN6serial8PortInfoESaIS1_EE19_M_emplace_back_auxIJRKS1_EEEvDpOT_ +000BCCA8 000BCCE5 _ZNSt12_Vector_baseISsSaISsEE12_Vector_implC2Ev +000BCCE6 000BCD1A _ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm +000BCD1A 000BCD3F _ZSt8_DestroyIPSsEvT_S1_ +000BCD3F 000BCD77 _ZNSt16allocator_traitsISaISsEE9constructISsJSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000BCD78 000BCF64 _ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJSsEEEvDpOT_ +000BCF64 000BD02D _ZNKSt6vectorISsSaISsEE12_M_check_lenEmPKc +000BD02E 000BD066 _ZNSt12_Vector_baseISsSaISsEE11_M_allocateEm +000BD066 000BD0B4 _ZSt34__uninitialized_move_if_noexcept_aIPSsS0_SaISsEET0_T_S3_S2_RT1_ +000BD0B4 000BD0F1 _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implC2Ev +000BD0F1 000BD129 _ZNSt16allocator_traitsISaIN6serial8PortInfoEEE12_S_constructIS1_JRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_ +000BD12A 000BD1F3 _ZNKSt6vectorIN6serial8PortInfoESaIS1_EE12_M_check_lenEmPKc +000BD1F4 000BD22C _ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE11_M_allocateEm +000BD22C 000BD263 _ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv +000BD263 000BD2B1 _ZSt34__uninitialized_move_if_noexcept_aIPN6serial8PortInfoES2_SaIS1_EET0_T_S5_S4_RT1_ +000BD2B1 000BD2D6 _ZNSt16allocator_traitsISaIN6serial8PortInfoEEE7destroyIS1_EEvRS2_PT_ +000BD2D6 000BD30D _ZNSt12_Destroy_auxILb0EE9__destroyIPSsEEvT_S3_ +000BD30D 000BD345 _ZNSt16allocator_traitsISaISsEE12_S_constructISsJSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +000BD346 000BD368 _ZNKSt6vectorISsSaISsEE8max_sizeEv +000BD368 000BD38D _ZSt32__make_move_if_noexcept_iteratorIPSsSt13move_iteratorIS0_EET0_T_ +000BD38D 000BD3BE _ZSt22__uninitialized_copy_aISt13move_iteratorIPSsES1_SsET0_T_S4_S3_RSaIT1_E +000BD3BE 000BD3D8 _ZNSaIN6serial8PortInfoEEC2Ev +000BD3D8 000BD44C _ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE9constructIS2_JRKS2_EEEvPT_DpOT0_ +000BD44C 000BD46E _ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv +000BD46E 000BD4B9 _ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8allocateEmPKv +000BD4B9 000BD4DE _ZSt32__make_move_if_noexcept_iteratorIPN6serial8PortInfoESt13move_iteratorIS2_EET0_T_ +000BD4DE 000BD50F _ZSt22__uninitialized_copy_aISt13move_iteratorIPN6serial8PortInfoEES3_S2_ET0_T_S6_S5_RSaIT1_E +000BD50F 000BD534 _ZNSt16allocator_traitsISaIN6serial8PortInfoEEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +000BD534 000BD542 _ZSt11__addressofISsEPT_RS0_ +000BD542 000BD55C _ZSt8_DestroyISsEvPT_ +000BD55C 000BD5A8 _ZN9__gnu_cxx13new_allocatorISsE9constructISsJSsEEEvPT_DpOT0_ +000BD5A8 000BD5C2 _ZNSt16allocator_traitsISaISsEE8max_sizeERKS0_ +000BD5C2 000BD5D0 _ZNKSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +000BD5D0 000BD5E9 _ZNSt13move_iteratorIPSsEC2ES0_ +000BD5E9 000BD616 _ZSt18uninitialized_copyISt13move_iteratorIPSsES1_ET0_T_S4_S3_ +000BD616 000BD620 _ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEEC2Ev +000BD620 000BD63A _ZNSt16allocator_traitsISaIN6serial8PortInfoEEE8max_sizeERKS2_ +000BD63A 000BD648 _ZNKSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +000BD648 000BD65C _ZNK9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8max_sizeEv +000BD65C 000BD675 _ZNSt13move_iteratorIPN6serial8PortInfoEEC2ES2_ +000BD675 000BD6A2 _ZSt18uninitialized_copyISt13move_iteratorIPN6serial8PortInfoEES3_ET0_T_S6_S5_ +000BD6A2 000BD6C0 _ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE7destroyIS2_EEvPT_ +000BD6C0 000BD6DA _ZNSt16allocator_traitsISaISsEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +000BD6DA 000BD787 _ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPSsES3_EET0_T_S6_S5_ +000BD787 000BD7A1 _ZNSt16allocator_traitsISaIN6serial8PortInfoEEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +000BD7A1 000BD84E _ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN6serial8PortInfoEES5_EET0_T_S8_S7_ +000BD84E 000BD876 _ZStneIPSsEbRKSt13move_iteratorIT_ES5_ +000BD876 000BD896 _ZNSt13move_iteratorIPSsEppEv +000BD896 000BD8B3 _ZNKSt13move_iteratorIPSsEdeEv +000BD8B3 000BD8FB _ZSt10_ConstructISsJSsEEvPT_DpOT0_ +000BD8FB 000BD923 _ZStneIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +000BD924 000BD944 _ZNSt13move_iteratorIPN6serial8PortInfoEEppEv +000BD944 000BD952 _ZSt4moveIRN6serial8PortInfoEEONSt16remove_referenceIT_E4typeEOS4_ +000BD952 000BD96F _ZNKSt13move_iteratorIPN6serial8PortInfoEEdeEv +000BD96F 000BD97D _ZSt7forwardIN6serial8PortInfoEEOT_RNSt16remove_referenceIS2_E4typeE +000BD97E 000BD9D9 _ZN6serial8PortInfoC2EOS0_ +000BD9D9 000BDA21 _ZSt10_ConstructIN6serial8PortInfoEJS1_EEvPT_DpOT0_ +000BDA21 000BDA5A _ZSteqIPSsEbRKSt13move_iteratorIT_ES5_ +000BDA5A 000BDA93 _ZSteqIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +000BDA94 000BDAA5 _ZNKSt13move_iteratorIPSsE4baseEv +000BDAA6 000BDAB7 _ZNKSt13move_iteratorIPN6serial8PortInfoEE4baseEv +000BDAB8 000BDACE _ZL18__gthread_active_pv +000BDACE 000BDAFD _ZL20__gthread_mutex_lockP15pthread_mutex_t +000BDAFD 000BDB2C _ZL22__gthread_mutex_unlockP15pthread_mutex_t +000BDB2C 000BDB59 _ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec +000BDB5A 000BDBFC _ZN14EloEEROMDeviceC2Ev +000BDBFC 000BDC4F _ZN14EloEEROMDeviceD2Ev +000BDC50 000BDC76 _ZN14EloEEROMDeviceD0Ev +000BDC76 000BDE09 _ZN14EloEEROMDevice10readPresetEv +000BDE0A 000BDF57 _ZN14EloEEROMDevice11writePresetERKSt6vectorIhSaIhEE +000BDF58 000BDF91 _ZN14EloEEROMDevice20canHandleFTDICommandEhh +000BDF92 000BE0BE _ZN14EloEEROMDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000BE0BE 000BE0DA _ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_ +000BE0DA 000BE0EB _ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv +000BE0EB 000BE13A _ZNSt6chronoltIlSt5ratioILl1ELl1000000000EElS2_EEbRKNS_8durationIT_T0_EERKNS3_IT1_T2_EE +000BE13A 000BE14B _ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv +000BE14C 000BE168 _ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IlvEERKT_ +000BE168 000BE1C1 _ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1EEEES2_ILl1ELl1000000000EElLb1ELb0EE6__castIlS5_EES4_RKNS1_IT_T0_EE +000BE1C1 000BE1DB _ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +000BE1DC 000BE1ED _ZNKSt6chrono8durationIlSt5ratioILl1ELl1EEE5countEv +000BE1EE 000BE20A _ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEEC1ERKS6_ +000BE20A 000BE21B _ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEE16time_since_epochEv +000BE21B 000BE257 _ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1EEEES4_RKNS1_IT_T0_EE +000BE257 000BE271 _ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +000BE272 000BE28E _ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEC1ERKS6_ +000BE28E 000BE2BB _ZNSt5mutex4lockEv +000BE2BC 000BE2D6 _ZNSt5mutex6unlockEv +000BE2D6 000BE2E4 _ZNSt5mutex13native_handleEv +000BE2E4 000BE302 _ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_ +000BE302 000BE33B _ZNSt11unique_lockISt5mutexEC2ERS0_ +000BE33C 000BE362 _ZNSt11unique_lockISt5mutexED2Ev +000BE362 000BE373 _ZNKSt6chrono8durationIlSt5ratioILl1ELl1000EEE5countEv +000BE373 000BE3AF _ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1000EEEES4_RKNS1_IT_T0_EE +000BE3AF 000BE3C9 _ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +000BE3CA 000BE3FF _ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1000EEvEERKNS0_IT_T0_EE +000BE3FF 000BE46E _ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1000EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000BE46E 000BE4BE _ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1000EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +000BE4BE 000BE50B _ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +000BE50C 000BE528 _ZNKSt6vectorIhSaIhEEixEm +000BE528 000BE579 _ZNSt11unique_lockISt5mutexE4lockEv +000BE57A 000BE5C4 _ZNSt11unique_lockISt5mutexE6unlockEv +000BE5C4 000BE5F1 _ZNSt18condition_variable10wait_untilINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +000BE5F1 000BE636 _ZNSt6chrono15time_point_castINS_8durationIlSt5ratioILl1ELl1EEEENS_3_V212system_clockENS1_IlS2_ILl1ELl1000000000EEEEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueENS_10time_pointIT0_SB_EEE4typeERKNSD_ISE_T1_EE +000BE636 000BE66B _ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1EEvEERKNS0_IT_T0_EE +000BE66B 000BE6DD _ZNSt6chronomiIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000BE6DD 000BE722 _ZNSt6chronomiINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEENS3_IlS4_ILl1ELl1EEEEEENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_SA_EERKNSE_ISF_SB_EE +000BE722 000BE757 _ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1ELl1EElLb1ELb1EE6__castIlS3_EES4_RKNS1_IT_T0_EE +000BE757 000BE771 _ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS3_EENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE +000BE771 000BE7B6 _ZNSt6chronoltINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EEbRKNS_10time_pointIT_T0_EERKNS7_IS8_T1_EE +000BE7B6 000BE889 _ZNSt18condition_variable17__wait_until_implINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +000BE88A 000BE89B _ZNKSt11unique_lockISt5mutexE5mutexEv +000BE89C 000BE8B2 _ZL18__gthread_active_pv_0 +000BE8B2 000BE8E1 _ZL20__gthread_mutex_lockP15pthread_mutex_t_0 +000BE8E1 000BE910 _ZL22__gthread_mutex_unlockP15pthread_mutex_t_0 +000BE910 000BE93D _ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec_0 +000BE93E 000BE990 _ZN14EloMotorDeviceC2Ev +000BE990 000BE9D1 _ZN14EloMotorDeviceD2Ev +000BE9D2 000BE9F8 _ZN14EloMotorDeviceD0Ev +000BE9F8 000BEC03 _ZN14EloMotorDevice6rotateEi +000BEC04 000BEC21 _ZN14EloMotorDevice21setLimitEventListenerEP11ILimitEvent +000BEC22 000BEC3F _ZN14EloMotorDevice20setMotorDoneListenerEP10IMotorDone +000BEC40 000BEDAC _ZN14EloMotorDevice10limitResetEv +000BEDAC 000BEDFF _ZN14EloMotorDevice20canHandleFTDICommandEhh +000BEE00 000BEFC0 _ZN14EloMotorDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000BEFC0 000BF003 _ZN18EloProximityDeviceC2Ev +000BF004 000BF045 _ZN18EloProximityDeviceD2Ev +000BF046 000BF06C _ZN18EloProximityDeviceD0Ev +000BF06C 000BF089 _ZN18EloProximityDevice20setProximityDelegateEP18IProximityDelegate +000BF08A 000BF0B6 _ZN18EloProximityDevice20canHandleFTDICommandEhh +000BF0B6 000BF290 _ZN18EloProximityDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000BF290 000BF2A6 _ZL18__gthread_active_pv_1 +000BF2A6 000BF2CB _ZL15__gthread_equalmm +000BF2CB 000BF2FA _ZL20__gthread_mutex_lockP15pthread_mutex_t_1 +000BF2FA 000BF329 _ZL22__gthread_mutex_unlockP15pthread_mutex_t_1 +000BF329 000BF356 _ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec_1 +000BF356 000BF370 _ZN9__gnu_cxxL18__exchange_and_addEPVii +000BF370 000BF39A _ZN9__gnu_cxxL25__exchange_and_add_singleEPii +000BF39A 000BF3DD _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii +000BF3DE 000BF488 _ZN19EloTCMUpdaterDeviceC2Ev +000BF488 000BF4FF _ZN19EloTCMUpdaterDeviceD2Ev +000BF500 000BF526 _ZN19EloTCMUpdaterDeviceD0Ev +000BF526 000BF552 _ZN19EloTCMUpdaterDevice11setFirmDataERKSt6vectorIhSaIhEE +000BF552 000BF6D2 _ZN19EloTCMUpdaterDevice10askVersionEv +000BF6D2 000BF74E _ZN19EloTCMUpdaterDevice11startUpdateEv +000BF74E 000BFAA1 _ZN19EloTCMUpdaterDevice8doUpdateEv +000BFAA2 000BFBF0 _ZN19EloTCMUpdaterDevice11beginUpdateEv +000BFBF0 000BFD3E _ZN19EloTCMUpdaterDevice14completeUpdateEv +000BFD3E 000BFE9E _ZN19EloTCMUpdaterDevice12transmitDataESt6vectorIhSaIhEEi +000BFE9E 000BFFD2 _ZN19EloTCMUpdaterDevice9softResetEv +000BFFD2 000C005F _ZN19EloTCMUpdaterDevice20canHandleFTDICommandEhh +000C0060 000C03EC _ZN19EloTCMUpdaterDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000C03EC 000C0409 _ZN19EloTCMUpdaterDevice17setUpdateDelegateEP18ITCMUpdateDelegate +000C040A 000C0459 _ZN19EloTCMUpdaterDevice14updateProgressEbi +000C045A 000C04BB _ZNKSt9type_infoeqERKS_ +000C04BC 000C04D1 _ZNSt6thread2idC2Ev +000C04D1 000C04FB _ZSteqNSt6thread2idES0_ +000C04FC 000C051F _ZNSt6threadD2Ev +000C0520 000C055E _ZNSt6threadaSEOS_ +000C055E 000C0583 _ZNSt6thread4swapERS_ +000C0584 000C05B4 _ZNKSt6thread8joinableEv +000C05B4 000C05D2 _ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C05D2 000C05EC _ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev +000C05EC 000C0631 _ZNSt6thread10_Impl_baseD2Ev +000C0632 000C0658 _ZNSt6thread10_Impl_baseD0Ev +000C0658 000C0672 _ZNSt6threadC2Ev +000C0672 000C0680 _ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_ +000C0680 000C06D1 _ZSt4swapINSt6thread2idEEvRT_S3_ +000C06D2 000C06FB _ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev +000C06FB 000C0709 _ZSt7forwardIM19EloTCMUpdaterDeviceFbvEEOT_RNSt16remove_referenceIS3_E4typeE +000C0709 000C0717 _ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE +000C0718 000C0736 _ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C0736 000C0750 _ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEED2Ev +000C0750 000C0825 _ZNSt6threadC2IM19EloTCMUpdaterDeviceFbvEJKPS1_EEEOT_DpOT0_ +000C0826 000C0864 _ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl +000C0864 000C0895 _ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPhS1_EEvEEvT_S7_ +000C0895 000C08D1 _ZN9__gnu_cxxneIPhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +000C08D2 000C08F2 _ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEppEv +000C08F2 000C0903 _ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEdeEv +000C0904 000C097E _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv +000C097E 000C098C _ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_tailERS2_ +000C098C 000C099A _ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000C099A 000C09A8 _ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EE7_M_headERS2_ +000C09A8 000C09C2 _ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_headERS2_ +000C09C2 000C09D0 _ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE +000C09D0 000C09F8 _ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IS1_EEOT_ +000C09F8 000C0A44 _ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2EOS2_ +000C0A44 000C0A52 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_tailERS6_ +000C0A52 000C0A60 _ZSt4moveIRSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +000C0A60 000C0A6E _ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EE7_M_headERS5_ +000C0A6E 000C0A8C _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_headERS6_ +000C0A8C 000C0A9A _ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE +000C0A9A 000C0ACA _ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EEC2IS4_EEOT_ +000C0ACA 000C0B29 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +000C0B2A 000C0B4F _ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +000C0B50 000C0B75 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS7_ +000C0B75 000C0BE0 _ZSt13__bind_simpleIM19EloTCMUpdaterDeviceFbvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000C0BE0 000C0BEE _ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +000C0BEE 000C0C26 _ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000C0C26 000C0C34 _ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C0C34 000C0C64 _ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS7_EEEEvEEOS_IT_E +000C0C64 000C0C95 _ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St12__false_type +000C0C96 000C0CC2 _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000C0CC2 000C0CFC _ZNSt26_Maybe_wrap_member_pointerIM19EloTCMUpdaterDeviceFbvEE9__do_wrapES2_ +000C0CFC 000C0D0A _ZSt4moveIRSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEONSt16remove_referenceIT_E4typeEOS7_ +000C0D0A 000C0D32 _ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IKS1_EEOT_ +000C0D32 000C0D6E _ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2IKS1_JEvEEOT_DpOT0_ +000C0D6E 000C0DC1 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +000C0DC2 000C0E0E _ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000C0E0E 000C0E5A _ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +000C0E5A 000C0ECF _ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000C0ED0 000C0EE5 _ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev +000C0EE6 000C0F3C _ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS9_EEEEvEEOS_IT_LS3_2EE +000C0F3C 000C10E4 _ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St20forward_iterator_tag +000C10E4 000C1119 _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev +000C111A 000C1140 _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED0Ev +000C1140 000C114A _ZNSt14unary_functionIP19EloTCMUpdaterDevicebEC2Ev +000C114A 000C1164 _ZNSt31_Maybe_unary_or_binary_functionIbJP19EloTCMUpdaterDeviceEEC2Ev +000C1164 000C11A2 _ZNSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEC2ES2_ +000C11A2 000C11BC _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2Ev +000C11BC 000C11D6 _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev +000C11D6 000C121B _ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +000C121C 000C124E _ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_ +000C124E 000C1288 _ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_ +000C1288 000C131F _ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPhS1_EEEES5_mT_S7_ +000C131F 000C1365 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +000C1365 000C13A7 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_ +000C13A7 000C13D8 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E +000C13D8 000C13E2 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2Ev +000C13E2 000C13EC _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEED2Ev +000C13EC 000C142D _ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C142D 000C1437 _ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS8_ +000C1437 000C145C _ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_St26random_access_iterator_tag +000C145C 000C1476 _ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES8_ +000C1476 000C14CE _ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET1_T0_S8_S7_ +000C14CE 000C14F3 _ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +000C14F3 000C1520 _ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +000C1520 000C15C4 _ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C15C4 000C15D2 _ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb0EE7_S_baseES6_ +000C15D2 000C15FC _ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEpLERKl +000C15FC 000C1629 _ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES4_EET0_T_SA_S9_ +000C1629 000C1637 _ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C1637 000C1645 _ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +000C1646 000C172C _ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +000C172C 000C1775 _ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000C1775 000C17CD _ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz +000C17CE 000C17EC _ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000C17EC 000C1806 _ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +000C1806 000C1830 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000C1830 000C1881 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000C1881 000C18AE _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +000C18AE 000C18B8 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +000C18B8 000C18C2 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +000C18C2 000C190E _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +000C190E 000C195F _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +000C1960 000C1982 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +000C1982 000C1996 _ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +000C1996 000C1A50 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +000C1A50 000C1A75 _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB_ +000C1A76 000C1A90 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +000C1A90 000C1B73 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000C1B74 000C1B82 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2ERKSD_ +000C1B82 000C1B8C _ZNSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +000C1B8C 000C1BCE _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +000C1BCE 000C1BFE _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +000C1BFE 000C1C36 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000C1C36 000C1C6E _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +000C1C6E 000C1CE2 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000C1CE2 000C1D16 _ZNSt6thread10_Impl_baseC2Ev +000C1D16 000C1D65 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEC2EOS9_ +000C1D66 000C1DA7 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED2Ev +000C1DA8 000C1DCE _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED0Ev +000C1DCE 000C1E1F _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C1E20 000C1E46 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED0Ev +000C1E46 000C1E6F _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv +000C1E70 000C1ECC _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000C1ECC 000C1F07 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000C1F08 000C1F26 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEE6_M_runEv +000C1F26 000C1F4B _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +000C1F4B 000C1F70 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000C1F70 000C1F8D _ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEclEv +000C1F8D 000C1FB2 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000C1FB2 000C1FD7 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +000C1FD7 000C1FF1 _ZSt12__get_helperILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +000C1FF1 000C200B _ZSt3getILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C200B 000C2025 _ZSt12__get_helperILm1EP19EloTCMUpdaterDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000C2025 000C203F _ZSt3getILm1EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C2040 000C208A _ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE9_M_invokeIJLm0EEEEbSt12_Index_tupleIJXspT_EEE +000C208A 000C20AF _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE7destroyISC_EEvPT_ +000C20B0 000C20CE _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +000C20CE 000C2135 _ZNKSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEclIJEvEEbPS0_DpOT_ +000C2136 000C23B9 _ZN11FTDICommand4initEhhRKSt6vectorIhSaIhEEi +000C23BA 000C267F _ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi +000C2680 000C2729 _ZN11FTDICommandC2Ehhi +000C272A 000C2819 _ZN11FTDICommandC2ERKSt6vectorIhSaIhEE +000C281A 000C285F _ZN11FTDICommandD2Ev +000C2860 000C2886 _ZN11FTDICommandD0Ev +000C2886 000C290F _ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii +000C2910 000C2922 _ZN11FTDICommand10getCommandEv +000C2922 000C29AC _ZN11FTDICommand8getExtraEv +000C29AC 000C2A2D _ZNSt6vectorIhSaIhEE6resizeEm +000C2A2E 000C2A5F _ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPKhS1_EEvEEvT_S8_ +000C2A5F 000C2A6D _ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE +000C2A6E 000C2AD9 _ZNSt6vectorIhSaIhEE9push_backERKh +000C2ADA 000C2CE2 _ZNSt6vectorIhSaIhEE17_M_default_appendEm +000C2CE2 000C2D13 _ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St12__false_type +000C2D13 000C2D4B _ZNSt16allocator_traitsISaIhEE9constructIhJRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000C2D4C 000C2F1C _ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJRKhEEEvDpOT_ +000C2F1C 000C2F45 _ZSt27__uninitialized_default_n_aIPhmhEvT_T0_RSaIT1_E +000C2F46 000C30EE _ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St20forward_iterator_tag +000C30EE 000C3126 _ZNSt16allocator_traitsISaIhEE12_S_constructIhJRKhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +000C3126 000C314B _ZSt25__uninitialized_default_nIPhmEvT_T0_ +000C314B 000C3185 _ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_ +000C3185 000C31C7 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_ +000C31C8 000C320B _ZN9__gnu_cxx13new_allocatorIhE9constructIhJRKhEEEvPT_DpOT0_ +000C320B 000C3238 _ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIPhmEEvT_T0_ +000C3238 000C3242 _ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS9_ +000C3242 000C3267 _ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_St26random_access_iterator_tag +000C3267 000C328C _ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +000C328C 000C32CB _ZN9__gnu_cxxmiIPKhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ +000C32CC 000C32F6 _ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEpLERKl +000C32F6 000C33EE _ZN9TCMDeviceC2Ev +000C33EE 000C3511 _ZN9TCMDeviceD2Ev +000C3512 000C3538 _ZN9TCMDeviceD0Ev +000C3538 000C3542 _ZN9TCMDevice4initEv +000C3542 000C3598 _ZN9TCMDevice4openESs +000C3598 000C35B6 _ZN9TCMDevice8isOpenedEv +000C35B6 000C35EB _ZN9TCMDevice5closeEv +000C35EC 000C36A1 _ZN9TCMDevice19getTCMUpdaterDeviceEv +000C36A2 000C3757 _ZN9TCMDevice21getTCMHeartBeatDeviceEv +000C3758 000C3789 _ZN9TCMDevice10startCheckEv +000C378A 000C37BB _ZN9TCMDevice9stopCheckEv +000C37BC 000C37D6 _ZN9TCMDevice11onCommErrorEv +000C37D6 000C3863 _ZN9TCMDevice13getFirstNDataEi +000C3864 000C3915 _ZN9TCMDevice11checkHeaderERKSt6vectorIhSaIhEE +000C3916 000C3BBB _ZN9TCMDevice16onHandleDataRecvEPKhi +000C3BBC 000C3E1A _ZN9TCMDevice16handleValidFrameERKSt6vectorIhSaIhEE +000C3E1A 000C3E2E _ZN9TCMDevice13getFrameValueEv +000C3E2E 000C3E34 _ZThn8_N9TCMDevice13getFrameValueEv +000C3E34 000C3E6D _ZN9TCMDevice11updateFrameEi +000C3E6D 000C3E96 _ZSt16__deque_buf_sizem +000C3E96 000C3EB2 _ZN19IHandleDataDelegateC2Ev +000C3EB2 000C3ECE _ZN16TCMFrameDelegateC2Ev +000C3ECE 000C3EE8 _ZNSt5dequeIcSaIcEEC2Ev +000C3EE8 000C3F54 _ZNSt5dequeIcSaIcEED2Ev +000C3F54 000C3F6E _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EEC2Ev +000C3F6E 000C3FB1 _ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EED2Ev +000C3FB2 000C3FDB _ZNSt5dequeIcSaIcEEixEm +000C3FDB 000C3FE9 _ZSt4moveIRcEONSt16remove_referenceIT_E4typeEOS2_ +000C3FEA 000C401A _ZNSt5dequeIcSaIcEE9push_backEOc +000C401A 000C4043 _ZNKSt5dequeIcSaIcEE4sizeEv +000C4044 000C40A4 _ZNSt5dequeIcSaIcEE9pop_frontEv +000C40A4 000C40D1 _ZNSt5dequeIcSaIcEE5frontEv +000C40D2 000C40EC _ZNSt11_Deque_baseIcSaIcEE11_Deque_implD2Ev +000C40EC 000C4139 _ZNSt11_Deque_baseIcSaIcEEC2Ev +000C413A 000C41A1 _ZNSt11_Deque_baseIcSaIcEED2Ev +000C41A2 000C41CF _ZNSt5dequeIcSaIcEE5beginEv +000C41D0 000C41FD _ZNSt5dequeIcSaIcEE3endEv +000C41FE 000C420C _ZNSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +000C420C 000C4258 _ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_ +000C4258 000C426E _ZNSt5dequeIcSaIcEE15_M_destroy_dataESt15_Deque_iteratorIcRcPcES5_RKS0_ +000C426E 000C4288 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implD2Ev +000C4288 000C42A2 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EEC2Ev +000C42A2 000C42F1 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EED2Ev +000C42F2 000C4327 _ZNKSt15_Deque_iteratorIcRcPcEixEl +000C4327 000C4335 _ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE +000C4336 000C43BB _ZNSt5dequeIcSaIcEE12emplace_backIJcEEEvDpOT_ +000C43BB 000C4431 _ZStmiIcRcPcENSt15_Deque_iteratorIT_T0_T1_E15difference_typeERKS6_S9_ +000C4432 000C4440 _ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_ +000C4440 000C44AB _ZNSt5dequeIcSaIcEE16_M_pop_front_auxEv +000C44AC 000C44BD _ZNKSt15_Deque_iteratorIcRcPcEdeEv +000C44BE 000C4531 _ZNSt11_Deque_baseIcSaIcEE11_Deque_implC2Ev +000C4532 000C46D6 _ZNSt11_Deque_baseIcSaIcEE17_M_initialize_mapEm +000C46D6 000C471B _ZNSt11_Deque_baseIcSaIcEE16_M_destroy_nodesEPPcS3_ +000C471C 000C478A _ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm +000C478A 000C47C7 _ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implC2Ev +000C47C8 000C47E2 _ZNSaIP16TCMVirtualDeviceED2Ev +000C47E2 000C4834 _ZNKSt15_Deque_iteratorIcRcPcEplEl +000C4834 000C4877 _ZN9__gnu_cxx13new_allocatorIcE9constructIcJcEEEvPT_DpOT0_ +000C4878 000C4951 _ZNSt5dequeIcSaIcEE16_M_push_back_auxIJcEEEvDpOT_ +000C4951 000C4961 _ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv +000C4962 000C4994 _ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc +000C4994 000C49E0 _ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_ +000C49E0 000C4A19 _ZNSt15_Deque_iteratorIcRcPcEC2Ev +000C4A1A 000C4A8B _ZNSt11_Deque_baseIcSaIcEE15_M_allocate_mapEm +000C4A8C 000C4B0D _ZNSt11_Deque_baseIcSaIcEE15_M_create_nodesEPPcS3_ +000C4B0E 000C4B42 _ZNKSt11_Deque_baseIcSaIcEE20_M_get_map_allocatorEv +000C4B42 000C4B5C _ZNSaIPcED2Ev +000C4B5C 000C4B7E _ZN9__gnu_cxx13new_allocatorIPcE10deallocateEPS1_m +000C4B7E 000C4B98 _ZNSaIP16TCMVirtualDeviceEC2Ev +000C4B98 000C4BA2 _ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceED2Ev +000C4BA2 000C4CA1 _ZNSt15_Deque_iteratorIcRcPcEpLEl +000C4CA2 000C4D03 _ZNSt5dequeIcSaIcEE22_M_reserve_map_at_backEm +000C4D04 000C4D33 _ZNSt11_Deque_baseIcSaIcEE16_M_allocate_nodeEv +000C4D34 000C4D56 _ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm +000C4D56 000C4D98 _ZN9__gnu_cxx13new_allocatorIPcE8allocateEmPKv +000C4D98 000C4DA6 _ZNKSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +000C4DA6 000C4DC4 _ZNSaIPcEC2IcEERKSaIT_E +000C4DC4 000C4DCE _ZN9__gnu_cxx13new_allocatorIPcED2Ev +000C4DCE 000C4DD8 _ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceEC2Ev +000C4DD8 000C5000 _ZNSt5dequeIcSaIcEE17_M_reallocate_mapEmb +000C5000 000C503E _ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv +000C503E 000C5052 _ZNK9__gnu_cxx13new_allocatorIPcE8max_sizeEv +000C5052 000C505C _ZN9__gnu_cxx13new_allocatorIPcEC2Ev +000C505C 000C50A2 _ZSt4copyIPPcS1_ET0_T_S3_S2_ +000C50A2 000C50E8 _ZSt13copy_backwardIPPcS1_ET0_T_S3_S2_ +000C50E8 000C50F9 _ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv +000C50F9 000C5113 _ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_ +000C5113 000C516B _ZSt14__copy_move_a2ILb0EPPcS1_ET1_T0_S3_S2_ +000C516B 000C51C3 _ZSt23__copy_move_backward_a2ILb0EPPcS1_ET1_T0_S3_S2_ +000C51C3 000C51D1 _ZNSt10_Iter_baseIPPcLb0EE7_S_baseES1_ +000C51D1 000C51EB _ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_ +000C51EB 000C521C _ZSt13__copy_move_aILb0EPPcS1_ET1_T0_S3_S2_ +000C521C 000C524D _ZSt22__copy_move_backward_aILb0EPPcS1_ET1_T0_S3_S2_ +000C524D 000C52B2 _ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPcEEPT_PKS4_S7_S5_ +000C52B2 000C532A _ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPcEEPT_PKS4_S7_S5_ +000C532A 000C53D7 _ZN16TCMVirtualDeviceC2Ev +000C53D8 000C542D _ZN16TCMVirtualDeviceD2Ev +000C542E 000C5454 _ZN16TCMVirtualDeviceD0Ev +000C5454 000C5471 _ZN16TCMVirtualDevice11setDataCommEP9IDataComm +000C5472 000C548F _ZN16TCMVirtualDevice16setFrameDelegateEP16TCMFrameDelegate +000C5490 000C54D6 _ZN16TCMVirtualDevice8getFrameEv +000C54D6 000C5584 _ZN16TCMVirtualDevice8sendDataEP11FTDICommand +000C5584 000C5592 _ZN16TCMVirtualDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000C5592 000C55AB _ZN16TCMVirtualDevice20canHandleFTDICommandEhh +000C55AC 000C565C _ZN16TCMVirtualDevice13integer2BytesEi +000C565C 000C5701 _ZN16TCMVirtualDevice13bytes2IntegerERKSt6vectorIhSaIhEEi +000C5702 000C571E _ZN19FTDICommandDelegateC2Ev +000C571E 000C5740 _ZNKSt6vectorIhSaIhEE4dataEv +000C5740 000C576A _ZNKSt6vectorIhSaIhEE5frontEv +000C576A 000C5778 _ZSt11__addressofIKhEPT_RS1_ +000C5778 000C578E _ZL18__gthread_active_pv_2 +000C578E 000C57B3 _ZL15__gthread_equalmm_0 +000C57B3 000C57CD _ZN9__gnu_cxxL18__exchange_and_addEPVii_0 +000C57CD 000C57F7 _ZN9__gnu_cxxL25__exchange_and_add_singleEPii_0 +000C57F7 000C583A _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii_0 +000C583A 000C58C2 _ZN10SerialPort10readThreadEv +000C58C2 000C591E _ZN10SerialPortC2Ev +000C591E 000C597F _ZN10SerialPortD2Ev +000C5980 000C59A6 _ZN10SerialPortD0Ev +000C59A6 000C59C0 _ZN10SerialPort11setDelegateEP19IHandleDataDelegate +000C59C0 000C5B3D _ZN10SerialPort8openPortERKSsj +000C5B3E 000C5BB7 _ZN10SerialPort9closePortEv +000C5BB8 000C5BE7 _ZN10SerialPort8isOpenedEv +000C5BE8 000C5C63 _ZN10SerialPort9writeDataEPKhi +000C5C64 000C5D82 _ZN10SerialPort8readDataEv +000C5D82 000C5DCE _ZN6serial7TimeoutC2Ejjjjj +000C5DCE 000C5DEA _ZN9IDataCommC2Ev +000C5DEA 000C5DF8 _ZSt7forwardIM10SerialPortFvvEEOT_RNSt16remove_referenceIS3_E4typeE +000C5DF8 000C5E06 _ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE +000C5E06 000C5E24 _ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C5E24 000C5E3E _ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEED2Ev +000C5E3E 000C5F13 _ZNSt6threadC2IM10SerialPortFvvEJKPS1_EEEOT_DpOT0_ +000C5F13 000C5F21 _ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_tailERS2_ +000C5F21 000C5F2F _ZNSt10_Head_baseILm1EP10SerialPortLb0EE7_M_headERS2_ +000C5F2F 000C5F49 _ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_headERS2_ +000C5F49 000C5F57 _ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE +000C5F58 000C5F80 _ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IS1_EEOT_ +000C5F80 000C5FCC _ZNSt11_Tuple_implILm1EJP10SerialPortEEC2EOS2_ +000C5FCC 000C5FDA _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_tailERS6_ +000C5FDA 000C5FE8 _ZSt4moveIRSt11_Tuple_implILm1EJP10SerialPortEEEONSt16remove_referenceIT_E4typeEOS6_ +000C5FE8 000C5FF6 _ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EE7_M_headERS5_ +000C5FF6 000C6014 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_headERS6_ +000C6014 000C6022 _ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +000C6022 000C6052 _ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EEC2IS4_EEOT_ +000C6052 000C60B1 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +000C60B2 000C60D7 _ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +000C60D8 000C60FD _ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS7_ +000C60FD 000C6168 _ZSt13__bind_simpleIM10SerialPortFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000C6168 000C6176 _ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +000C6176 000C61AE _ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000C61AE 000C61BC _ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C61BC 000C61EC _ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS7_EEEEvEEOS_IT_E +000C61EC 000C6226 _ZNSt26_Maybe_wrap_member_pointerIM10SerialPortFvvEE9__do_wrapES2_ +000C6226 000C6234 _ZSt4moveIRSt7_Mem_fnIM10SerialPortFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +000C6234 000C625C _ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IKS1_EEOT_ +000C625C 000C6298 _ZNSt11_Tuple_implILm1EJP10SerialPortEEC2IKS1_JEvEEOT_DpOT0_ +000C6298 000C62EB _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +000C62EC 000C6338 _ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000C6338 000C6384 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +000C6384 000C63F9 _ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000C63FA 000C6450 _ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +000C6450 000C645A _ZNSt14unary_functionIP10SerialPortvEC2Ev +000C645A 000C6474 _ZNSt31_Maybe_unary_or_binary_functionIvJP10SerialPortEEC2Ev +000C6474 000C64B2 _ZNSt7_Mem_fnIM10SerialPortFvvEEC2ES2_ +000C64B2 000C64CC _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2Ev +000C64CC 000C64E6 _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev +000C64E6 000C652B _ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +000C652C 000C6536 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2Ev +000C6536 000C6540 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEED2Ev +000C6540 000C6581 _ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C6582 000C6626 _ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C6626 000C6634 _ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C6634 000C6642 _ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +000C6642 000C6728 _ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +000C6728 000C6746 _ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000C6746 000C6760 _ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +000C6760 000C678A _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000C678A 000C67DB _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000C67DB 000C6808 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +000C6808 000C6812 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +000C6812 000C681C _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +000C681C 000C6868 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +000C6868 000C68B9 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +000C68BA 000C68DC _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +000C68DC 000C68F0 _ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +000C68F0 000C69AA _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +000C69AA 000C69CF _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB_ +000C69D0 000C69EA _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +000C69EA 000C6ACD _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000C6ACE 000C6ADC _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2ERKSD_ +000C6ADC 000C6B0C _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +000C6B0C 000C6B44 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000C6B44 000C6B7C _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +000C6B7C 000C6BF0 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000C6BF0 000C6C3F _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEC2EOS9_ +000C6C40 000C6C81 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED2Ev +000C6C82 000C6CA8 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED0Ev +000C6CA8 000C6CF9 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C6CFA 000C6D20 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED0Ev +000C6D20 000C6D49 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv +000C6D4A 000C6DA6 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000C6DA6 000C6DE1 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000C6DE2 000C6E00 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEE6_M_runEv +000C6E00 000C6E25 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +000C6E25 000C6E4A _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000C6E4A 000C6E67 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEclEv +000C6E67 000C6E8C _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000C6E8C 000C6EB1 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +000C6EB1 000C6ECB _ZSt12__get_helperILm0ESt7_Mem_fnIM10SerialPortFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +000C6ECB 000C6EE5 _ZSt3getILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C6EE5 000C6EFF _ZSt12__get_helperILm1EP10SerialPortJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000C6EFF 000C6F19 _ZSt3getILm1EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C6F1A 000C6F64 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +000C6F64 000C6F89 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE7destroyISC_EEvPT_ +000C6F8A 000C6FA8 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +000C6FA8 000C700F _ZNKSt7_Mem_fnIM10SerialPortFvvEEclIJEvEEvPS0_DpOT_ +000C7010 000C70B5 _ZN6serial6SerialC2ERKSsjNS_7TimeoutENS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +000C70B6 000C7117 _ZN6serial6SerialD2Ev +000C7118 000C713E _ZN6serial6SerialD0Ev +000C713E 000C715C _ZN6serial6Serial4openEv +000C715C 000C717A _ZN6serial6Serial5closeEv +000C717A 000C7198 _ZNK6serial6Serial6isOpenEv +000C7198 000C71B6 _ZN6serial6Serial9availableEv +000C71B6 000C71F0 _ZN6serial6Serial12waitReadableEv +000C71F0 000C7219 _ZN6serial6Serial13waitByteTimesEm +000C721A 000C724B _ZN6serial6Serial5read_EPhm +000C724C 000C72C8 _ZN6serial6Serial4readEPhm +000C72C8 000C73DB _ZN6serial6Serial4readERSt6vectorIhSaIhEEm +000C73DC 000C74D8 _ZN6serial6Serial4readERSsm +000C74D8 000C7537 _ZN6serial6Serial4readEm +000C7538 000C76D5 _ZN6serial6Serial8readlineERSsmSs +000C76D6 000C776A _ZN6serial6Serial8readlineEmSs +000C776A 000C7B1B _ZN6serial6Serial9readlinesEmSs +000C7B1C 000C7BA9 _ZN6serial6Serial5writeERKSs +000C7BAA 000C7C3C _ZN6serial6Serial5writeERKSt6vectorIhSaIhEE +000C7C3C 000C7CB4 _ZN6serial6Serial5writeEPKhm +000C7CB4 000C7CE5 _ZN6serial6Serial6write_EPKhm +000C7CE6 000C7DBF _ZN6serial6Serial7setPortERKSs +000C7DC0 000C7DED _ZNK6serial6Serial7getPortEv +000C7DEE 000C7E17 _ZN6serial6Serial10setTimeoutERNS_7TimeoutE +000C7E18 000C7E45 _ZNK6serial6Serial10getTimeoutEv +000C7E46 000C7E6D _ZN6serial6Serial11setBaudrateEj +000C7E6E 000C7E8C _ZNK6serial6Serial11getBaudrateEv +000C7E8C 000C7EB2 _ZN6serial6Serial11setBytesizeENS_10bytesize_tE +000C7EB2 000C7ED0 _ZNK6serial6Serial11getBytesizeEv +000C7ED0 000C7EF6 _ZN6serial6Serial9setParityENS_8parity_tE +000C7EF6 000C7F14 _ZNK6serial6Serial9getParityEv +000C7F14 000C7F3A _ZN6serial6Serial11setStopbitsENS_10stopbits_tE +000C7F3A 000C7F58 _ZNK6serial6Serial11getStopbitsEv +000C7F58 000C7F7E _ZN6serial6Serial14setFlowcontrolENS_13flowcontrol_tE +000C7F7E 000C7F9C _ZNK6serial6Serial14getFlowcontrolEv +000C7F9C 000C8033 _ZN6serial6Serial5flushEv +000C8034 000C8097 _ZN6serial6Serial10flushInputEv +000C8098 000C80FB _ZN6serial6Serial11flushOutputEv +000C80FC 000C8122 _ZN6serial6Serial9sendBreakEi +000C8122 000C814B _ZN6serial6Serial8setBreakEb +000C814C 000C8175 _ZN6serial6Serial6setRTSEb +000C8176 000C819F _ZN6serial6Serial6setDTREb +000C81A0 000C81BE _ZN6serial6Serial13waitForChangeEv +000C81BE 000C81DC _ZN6serial6Serial6getCTSEv +000C81DC 000C81FA _ZN6serial6Serial6getDSREv +000C81FA 000C8218 _ZN6serial6Serial5getRIEv +000C8218 000C8236 _ZN6serial6Serial5getCDEv +000C8236 000C8262 _ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE +000C8262 000C827F _ZN6serial6Serial14ScopedReadLockD2Ev +000C8280 000C82AC _ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE +000C82AC 000C82C9 _ZN6serial6Serial15ScopedWriteLockD2Ev +000C82CA 000C8300 _ZNSt6vectorIhSaIhEE6insertIPhvEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_ +000C8300 000C8336 _ZNSt6vectorIhSaIhEE18_M_insert_dispatchIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St12__false_type +000C8336 000C8706 _ZNSt6vectorIhSaIhEE15_M_range_insertIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St20forward_iterator_tag +000C8706 000C8740 _ZSt8distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_ +000C8740 000C8786 _ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_ +000C8786 000C87C8 _ZSt7advanceIPhmEvRT_T0_ +000C87C8 000C87E4 _ZSt10__distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +000C87E4 000C8857 _ZSt14__copy_move_a2ILb0EPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET1_T0_S8_S7_ +000C8858 000C895F _ZN6serial16MillisecondTimerC2Ej +000C8960 000C89E0 _ZN6serial16MillisecondTimer9remainingEv +000C89E0 000C8A03 _ZN6serial16MillisecondTimer12timespec_nowEv +000C8A03 000C8A9F _Z16timespec_from_msj +000C8AA0 000C8BDF _ZN6serial6Serial10SerialImplC2ERKSsmNS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +000C8BE0 000C8C51 _ZN6serial6Serial10SerialImplD2Ev +000C8C52 000C8C78 _ZN6serial6Serial10SerialImplD0Ev +000C8C78 000C8F92 _ZN6serial6Serial10SerialImpl4openEv +000C8F92 000C9D09 _ZN6serial6Serial10SerialImpl15reconfigurePortEv +000C9D0A 000C9E29 _ZN6serial6Serial10SerialImpl5closeEv +000C9E2A 000C9E3C _ZNK6serial6Serial10SerialImpl6isOpenEv +000C9E3C 000C9F5B _ZN6serial6Serial10SerialImpl9availableEv +000C9F5C 000CA23F _ZN6serial6Serial10SerialImpl12waitReadableEj +000CA240 000CA29A _ZN6serial6Serial10SerialImpl13waitByteTimesEm +000CA29A 000CA556 _ZN6serial6Serial10SerialImpl4readEPhm +000CA556 000CAA4B _ZN6serial6Serial10SerialImpl5writeEPKhm +000CAA4C 000CAA75 _ZN6serial6Serial10SerialImpl7setPortERKSs +000CAA76 000CAAA3 _ZNK6serial6Serial10SerialImpl7getPortEv +000CAAA4 000CAACF _ZN6serial6Serial10SerialImpl10setTimeoutERNS_7TimeoutE +000CAAD0 000CAAFF _ZNK6serial6Serial10SerialImpl10getTimeoutEv +000CAB00 000CAB36 _ZN6serial6Serial10SerialImpl11setBaudrateEm +000CAB36 000CAB48 _ZNK6serial6Serial10SerialImpl11getBaudrateEv +000CAB48 000CAB7B _ZN6serial6Serial10SerialImpl11setBytesizeENS_10bytesize_tE +000CAB7C 000CAB8D _ZNK6serial6Serial10SerialImpl11getBytesizeEv +000CAB8E 000CABC1 _ZN6serial6Serial10SerialImpl9setParityENS_8parity_tE +000CABC2 000CABD3 _ZNK6serial6Serial10SerialImpl9getParityEv +000CABD4 000CAC07 _ZN6serial6Serial10SerialImpl11setStopbitsENS_10stopbits_tE +000CAC08 000CAC19 _ZNK6serial6Serial10SerialImpl11getStopbitsEv +000CAC1A 000CAC4D _ZN6serial6Serial10SerialImpl14setFlowcontrolENS_13flowcontrol_tE +000CAC4E 000CAC5F _ZNK6serial6Serial10SerialImpl14getFlowcontrolEv +000CAC60 000CACE5 _ZN6serial6Serial10SerialImpl5flushEv +000CACE6 000CAD70 _ZN6serial6Serial10SerialImpl10flushInputEv +000CAD70 000CADFA _ZN6serial6Serial10SerialImpl11flushOutputEv +000CADFA 000CAE94 _ZN6serial6Serial10SerialImpl9sendBreakEi +000CAE94 000CB1B5 _ZN6serial6Serial10SerialImpl8setBreakEb +000CB1B6 000CB4E6 _ZN6serial6Serial10SerialImpl6setRTSEb +000CB4E6 000CB816 _ZN6serial6Serial10SerialImpl6setDTREb +000CB816 000CB98C _ZN6serial6Serial10SerialImpl13waitForChangeEv +000CB98C 000CBB61 _ZN6serial6Serial10SerialImpl6getCTSEv +000CBB62 000CBD39 _ZN6serial6Serial10SerialImpl6getDSREv +000CBD3A 000CBF11 _ZN6serial6Serial10SerialImpl5getRIEv +000CBF12 000CC0E7 _ZN6serial6Serial10SerialImpl5getCDEv +000CC0E8 000CC1CD _ZN6serial6Serial10SerialImpl8readLockEv +000CC1CE 000CC2B3 _ZN6serial6Serial10SerialImpl10readUnlockEv +000CC2B4 000CC399 _ZN6serial6Serial10SerialImpl9writeLockEv +000CC39A 000CC47F _ZN6serial6Serial10SerialImpl11writeUnlockEv +000CC47F 000CC493 _ZStorSt13_Ios_OpenmodeS_ +000CC493 000CC49E _ZNSt14numeric_limitsIjE3maxEv +000CC49E 000CC4A9 _ZN6serial7Timeout3maxEv +000CC4AA 000CC609 _ZN6serial15SerialExceptionC2EPKc +000CC60A 000CC65B _ZN6serial15SerialExceptionD2Ev +000CC65C 000CC682 _ZN6serial15SerialExceptionD0Ev +000CC682 000CC6A0 _ZNK6serial15SerialException4whatEv +000CC6A0 000CC8E8 _ZN6serial11IOExceptionC2ESsii +000CC8E8 000CCAFE _ZN6serial11IOExceptionC2ESsiPKc +000CCAFE 000CCB5F _ZN6serial11IOExceptionD2Ev +000CCB60 000CCB86 _ZN6serial11IOExceptionD0Ev +000CCB86 000CCBA4 _ZNK6serial11IOException4whatEv +000CCBA4 000CCD03 _ZN6serial22PortNotOpenedExceptionC2EPKc +000CCD04 000CCD55 _ZN6serial22PortNotOpenedExceptionD2Ev +000CCD56 000CCD7C _ZN6serial22PortNotOpenedExceptionD0Ev +000CCD7C 000CCD9A _ZNK6serial22PortNotOpenedException4whatEv +000CCD9A 000CCDC2 _ZSt3minIjERKT_S2_S2_ +000CCDC2 000CCDD8 _ZL18__gthread_active_pv_3 +000CCDD8 000CCDFD _ZL15__gthread_equalmm_1 +000CCDFD 000CCE2C _ZL20__gthread_mutex_lockP15pthread_mutex_t_2 +000CCE2C 000CCE5B _ZL22__gthread_mutex_unlockP15pthread_mutex_t_2 +000CCE5B 000CCE88 _ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec_2 +000CCE88 000CCEA2 _ZN9__gnu_cxxL18__exchange_and_addEPVii_1 +000CCEA2 000CCECC _ZN9__gnu_cxxL25__exchange_and_add_singleEPii_1 +000CCECC 000CCF0F _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii_1 +000CCF10 000CCFB2 _ZN21EloTCMHeartBeatDeviceC2Ev +000CCFB2 000CD023 _ZN21EloTCMHeartBeatDeviceD2Ev +000CD024 000CD04A _ZN21EloTCMHeartBeatDeviceD0Ev +000CD04A 000CD067 _ZN21EloTCMHeartBeatDevice20setHeartBeatDelegateEP18IHeartBeatDelegate +000CD068 000CD0EF _ZN21EloTCMHeartBeatDevice10startCheckEv +000CD0F0 000CD162 _ZN21EloTCMHeartBeatDevice9stopCheckEv +000CD162 000CD18E _ZN21EloTCMHeartBeatDevice20canHandleFTDICommandEhh +000CD18E 000CD235 _ZN21EloTCMHeartBeatDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000CD236 000CD353 _ZN21EloTCMHeartBeatDevice11checkThreadEv +000CD354 000CD372 _ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IivEERKT_ +000CD372 000CD380 _ZSt7forwardIM21EloTCMHeartBeatDeviceFvvEEOT_RNSt16remove_referenceIS3_E4typeE +000CD380 000CD38E _ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE +000CD38E 000CD3AC _ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +000CD3AC 000CD3C6 _ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEED2Ev +000CD3C6 000CD49B _ZNSt6threadC2IM21EloTCMHeartBeatDeviceFvvEJKPS1_EEEOT_DpOT0_ +000CD49B 000CD50A _ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000CD50A 000CD55A _ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +000CD55A 000CD5A7 _ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +000CD5A7 000CD5B5 _ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_tailERS2_ +000CD5B5 000CD5C3 _ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EE7_M_headERS2_ +000CD5C3 000CD5DD _ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_headERS2_ +000CD5DD 000CD5EB _ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE +000CD5EC 000CD614 _ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IS1_EEOT_ +000CD614 000CD660 _ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2EOS2_ +000CD660 000CD66E _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_tailERS6_ +000CD66E 000CD67C _ZSt4moveIRSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +000CD67C 000CD68A _ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EE7_M_headERS5_ +000CD68A 000CD6A8 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_headERS6_ +000CD6A8 000CD6B6 _ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +000CD6B6 000CD6E6 _ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EEC2IS4_EEOT_ +000CD6E6 000CD745 _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +000CD746 000CD76B _ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +000CD76C 000CD791 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS7_ +000CD791 000CD7FC _ZSt13__bind_simpleIM21EloTCMHeartBeatDeviceFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000CD7FC 000CD80A _ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +000CD80A 000CD842 _ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000CD842 000CD850 _ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000CD850 000CD880 _ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS7_EEEEvEEOS_IT_E +000CD880 000CD8BA _ZNSt26_Maybe_wrap_member_pointerIM21EloTCMHeartBeatDeviceFvvEE9__do_wrapES2_ +000CD8BA 000CD8C8 _ZSt4moveIRSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +000CD8C8 000CD8F0 _ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IKS1_EEOT_ +000CD8F0 000CD92C _ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2IKS1_JEvEEOT_DpOT0_ +000CD92C 000CD97F _ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +000CD980 000CD9CC _ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000CD9CC 000CDA18 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +000CDA18 000CDA8D _ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000CDA8E 000CDAE4 _ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +000CDAE4 000CDAEE _ZNSt14unary_functionIP21EloTCMHeartBeatDevicevEC2Ev +000CDAEE 000CDB08 _ZNSt31_Maybe_unary_or_binary_functionIvJP21EloTCMHeartBeatDeviceEEC2Ev +000CDB08 000CDB46 _ZNSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEC2ES2_ +000CDB46 000CDB60 _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2Ev +000CDB60 000CDB7A _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev +000CDB7A 000CDBBF _ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +000CDBC0 000CDBCA _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2Ev +000CDBCA 000CDBD4 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEED2Ev +000CDBD4 000CDC15 _ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000CDC16 000CDCBA _ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000CDCBA 000CDCC8 _ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000CDCC8 000CDCD6 _ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +000CDCD6 000CDDBC _ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +000CDDBC 000CDDDA _ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000CDDDA 000CDDF4 _ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +000CDDF4 000CDE1E _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000CDE1E 000CDE6F _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000CDE6F 000CDE9C _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +000CDE9C 000CDEA6 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +000CDEA6 000CDEB0 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +000CDEB0 000CDEFC _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +000CDEFC 000CDF4D _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +000CDF4E 000CDF70 _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +000CDF70 000CDF84 _ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +000CDF84 000CE03E _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +000CE03E 000CE063 _ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB_ +000CE064 000CE07E _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +000CE07E 000CE161 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000CE162 000CE170 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2ERKSD_ +000CE170 000CE1A0 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +000CE1A0 000CE1D8 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000CE1D8 000CE210 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +000CE210 000CE284 _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000CE284 000CE2D3 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEC2EOS9_ +000CE2D4 000CE315 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED2Ev +000CE316 000CE33C _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED0Ev +000CE33C 000CE38D _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000CE38E 000CE3B4 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED0Ev +000CE3B4 000CE3DD _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv +000CE3DE 000CE43A _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000CE43A 000CE475 _ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000CE476 000CE494 _ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEE6_M_runEv +000CE494 000CE4B9 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +000CE4B9 000CE4DE _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000CE4DE 000CE4FB _ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEclEv +000CE4FB 000CE520 _ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000CE520 000CE545 _ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +000CE545 000CE55F _ZSt12__get_helperILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +000CE55F 000CE579 _ZSt3getILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000CE579 000CE593 _ZSt12__get_helperILm1EP21EloTCMHeartBeatDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000CE593 000CE5AD _ZSt3getILm1EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000CE5AE 000CE5F8 _ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +000CE5F8 000CE61D _ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE7destroyISC_EEvPT_ +000CE61E 000CE63C _ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +000CE63C 000CE6A3 _ZNKSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEclIJEvEEvPS0_DpOT_ +000CE6B0 000CE6C0 stat +000CE6C0 000CE6C9 .term_proc +00345230 00345238 _ZNSs6appendEPKcm +00345238 00345240 tcsetattr +00345240 00345248 _ZSt20__throw_length_errorPKc +00345248 00345250 _ZNSsaSEPKc +00345258 00345260 _ZNSsC1Ev +00345260 00345268 printf +00345268 00345270 _ZNSaIcED2Ev +00345270 00345278 _ZNSolsEi +00345278 00345280 _ZNSspLEPKc +00345280 00345288 memset +00345288 00345290 snprintf +00345290 00345298 _ZNSs5clearEv +00345298 003452A0 close +003452A0 003452A8 _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv +003452A8 003452B0 ioctl +003452B0 003452B8 clock_gettime +003452B8 003452C0 _ZNSsC1EPKcmRKSaIcE +003452C0 003452C8 _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E +003452C8 003452D0 puts +003452D0 003452D8 _ZSt20__throw_system_errori +003452D8 003452E0 _ZNKSs5c_strEv +003452E0 003452E8 _Znam +003452E8 003452F0 _ZdlPv +003452F0 003452F8 _ZNSs7reserveEm +003452F8 00345300 _ZNSt18condition_variable10notify_allEv +00345300 00345308 __assert_fail +00345308 00345310 __cxa_rethrow +00345310 00345318 _ZNKSs4sizeEv +00345318 00345320 cfsetspeed +00345320 00345328 _ZNSt8ios_base4InitC1Ev +00345328 00345330 _ZNSs4_Rep10_M_refdataEv +00345330 00345338 read +00345338 00345340 malloc +00345340 00345348 tcsendbreak +00345348 00345350 _ZNSt6chrono3_V212system_clock3nowEv +00345350 00345358 _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base +00345358 00345360 _ZNSs4_Rep9_S_createEmmRKSaIcE +00345360 00345368 pthread_cond_timedwait +00345368 00345370 _ZNKSs7compareERKSs +00345370 00345378 _ZNSsC1ERKSs +00345378 00345380 __cxa_atexit +00345380 00345388 _ZNSt13runtime_errorC1ERKSs +00345388 00345390 _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE +00345390 00345398 _ZNSs13_S_copy_charsEPcS_S_ +00345398 003453A0 pthread_mutex_init +003453A0 003453A8 _ZNKSs6lengthEv +003453A8 003453B0 _ZNSaIcEC2Ev +003453B0 003453B8 _ZNSt8ios_base4InitD1Ev +003453B8 003453C0 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc +003453C0 003453C8 _ZNKSs5rfindEPKcm +003453C8 003453D0 pselect +003453D0 003453D8 _ZNSsD1Ev +003453D8 003453E0 tcflush +003453E0 003453E8 free +003453E8 003453F0 _ZNSs4_Rep10_M_destroyERKSaIcE +003453F0 003453F8 _ZNKSs5emptyEv +003453F8 00345400 __xstat +00345400 00345408 tcdrain +00345408 00345410 __cxa_finalize +00345410 00345418 realpath +00345420 00345428 _ZNSs6insertEmPKc +00345428 00345430 _ZNSspLERKSs +00345430 00345438 _ZNSsC1EPKcRKSaIcE +00345438 00345440 usleep +00345440 00345448 strerror +00345448 00345450 _ZNSsaSEOSs +00345450 00345458 _ZNSt6thread4joinEv +00345458 00345460 _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev +00345460 00345468 _ZNSt18condition_variableC1Ev +00345468 00345470 _ZSt9terminatev +00345470 00345478 __dynamic_cast +00345478 00345480 _ZNSsixEm +00345480 00345488 _ZNSs6insertEmRKSs +00345488 00345490 _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode +00345490 00345498 tcgetattr +00345498 003454A0 __cxa_pure_virtual +003454A0 003454A8 _ZNSt6thread6detachEv +003454A8 003454B0 _ZNSt18condition_variableD1Ev +003454B0 003454B8 _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev +003454B8 003454C0 memmove +003454C0 003454C8 vsnprintf +003454E0 003454E8 __errno_location +003454E8 003454F0 pthread_equal +003454F0 003454F8 _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_ +00345500 00345508 _ZSt25__throw_bad_function_callv +00345508 00345510 _ZNKSs4dataEv +00345510 00345518 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E +00345518 00345520 _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_ +00345520 00345528 strcmp +00345528 00345530 __cxa_allocate_exception +00345530 00345538 _ZNSaIcED1Ev +00345538 00345540 localeconv +00345540 00345548 _ZNSt9exceptionD2Ev +00345548 00345550 __cxa_free_exception +00345550 00345558 _ZSt11_Hash_bytesPKvmm +00345558 00345560 _ZSt19__throw_logic_errorPKc +00345560 00345568 _ZNSt13runtime_errorD1Ev +00345568 00345570 _ZdaPv +00345570 00345578 _ZNSs6appendEPKc +00345578 00345580 memcmp +00345588 00345590 _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode +00345590 00345598 globfree +00345598 003455A0 __cxa_throw +003455A0 003455A8 _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode +003455A8 003455B0 strtoull +003455B0 003455B8 _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base +003455B8 003455C0 _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm +003455C0 003455C8 _ZNSt16invalid_argumentC1ERKSs +003455C8 003455D0 _ZNKSs8capacityEv +003455D0 003455D8 __cxa_end_catch +003455D8 003455E0 _ZSt17__throw_bad_allocv +003455E0 003455E8 _ZNKSs7compareEmmPKc +003455E8 003455F0 strtoll +003455F0 003455F8 __cxa_begin_catch +003455F8 00345600 _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev +00345600 00345608 _ZNSs9push_backEc +00345608 00345610 pthread_mutex_lock +00345610 00345618 _ZNSt16invalid_argumentD1Ev +00345618 00345620 realloc +00345620 00345628 _ZNSaIcEC1Ev +00345628 00345630 __gxx_personality_v0 +00345630 00345638 _ZNSsC1EOSs +00345638 00345640 _ZNSs12_Alloc_hiderC1EPcRKSaIcE +00345640 00345648 pthread_mutex_destroy +00345648 00345650 write +00345650 00345658 _Znwm +00345658 00345660 _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv +00345660 00345668 _ZNSsC1ERKSsmm +00345668 00345670 _Unwind_Resume +00345670 00345678 _ZNSs12_S_empty_repEv +00345678 00345680 pthread_mutex_unlock +00345680 00345688 _ZNSsaSERKSs +00345688 00345690 memcpy +00345698 003456A0 _ZNSs6appendERKSs +003456A0 003456A8 glob +003456A8 003456B0 open +003456B0 003456B8 _ZNKSs4findEPKcm +003456B8 003456C0 _ZNSs4_Rep26_M_set_length_and_sharableEm +003456C0 003456C8 _ZNKSt13runtime_error4whatEv +003456C8 003456D0 strtod +003456D0 003456D8 _ZNSirsERj +003456D8 003456E0 _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm +003456E0 003456E8 MAG_Initialize +003456E8 003456F0 MAG_SetDetailEnhancement +003456F0 003456F8 MAG_SetEXLevel +003456F8 00345700 MAG_GetCameraTemperature +00345700 00345708 MAG_Free +00345708 00345710 MAG_GetSenorTemperature +00345710 00345718 MAG_PrepareProcessImage +00345718 00345720 __gmon_start__ +00345720 00345728 _Jv_RegisterClasses +00345728 00345730 MAG_GetFrameStatisticalData +00345730 00345738 MAG_GetRectTemperatureInfo +00345738 00345740 MAG_GetTerminalList +00345740 00345748 MAG_GetCamInfo +00345748 00345750 MAG_SetFixPara +00345750 00345758 MAG_SetFFCMode +00345758 00345760 MAG_GetLineTemperatureInfo +00345760 00345768 MAG_DisLinkCamera +00345768 00345770 MAG_GetEstimatedEnvTemp +00345770 00345778 MAG_StopProcessImage +00345778 00345780 MAG_SetEnvTempEstimateMode +00345780 00345788 MAG_EnumCameras +00345790 00345798 MAG_EstimateUnderArmTempFromForeheadRect +00345798 003457A0 MAG_SaveBMP +003457A8 003457B0 MAG_SaveDDT2Buffer +003457B0 003457B8 MAG_TriggerFFC +003457B8 003457C0 MAG_GetFixPara +003457C0 003457C8 MAG_GetOutputColorBardata +003457C8 003457D0 MAG_LoadDDT +003457D0 003457D8 MAG_GetTemperatureData +003457D8 003457E0 MAG_SetSubsectionEnlargePara +003457E0 003457E8 MAG_WillStartImmediately +003457E8 003457F0 MAG_IsProcessingImage +003457F0 003457F8 MAG_GetEllipseTemperatureInfo +003457F8 00345800 MAG_GetRgnTemperatureInfo +00345800 00345808 MAG_StartProcessImage +00345808 00345810 MAG_IsLinked +00345810 00345818 MAG_SetColorPalette +00345818 00345820 MAG_UnLockFrame +00345820 00345828 MAG_LoadBufferedDDT +00345828 00345830 MAG_SaveDDT +00345830 00345838 MAG_GetRemoteInfo +00345838 00345840 MAG_SetAutoEnlargePara +00345840 00345848 MAG_GetEXLevel +00345850 00345858 MAG_LockFrame +00345858 00345860 MAG_IsChannelAvailable +00345860 00345868 MAG_GetOutputBMPdataRGB24 +00345868 00345870 MAG_GetOutputBMPdata +00345870 00345878 MAG_LinkCamera +00345878 00345880 MAG_GetCurrentCameraInnerTemperature +00345880 00345888 MAG_FixTemperature +00345888 00345890 MAG_GetEstimateUnderArmTempMode +00345890 00345898 MAG_DelChannel +00345898 003458A0 MAG_GetTemperatureProbe2 +003458A0 003458A8 MAG_SetEstimateUnderArmTempMode +003458A8 003458B0 MAG_IsInitialized +003458B0 003458B8 MAG_SetIoAlarmState +003458B8 003458C0 MAG_SetIsothermalPara +003458C0 003458C8 MAG_GetOutputRawData +003458C8 003458D0 MAG_GetTemperatureProbe +003458D0 003458D8 MAG_FixTemperature2 +003458D8 003458E0 MAG_GetTemperatureData_Raw +003458E0 003458E8 MAG_NewChannel +TOTAL 5150 diff --git a/analysis/ida/export/thermalsdk_so/all_functions_disasm.txt b/analysis/ida/export/thermalsdk_so/all_functions_disasm.txt new file mode 100644 index 0000000..46d854e --- /dev/null +++ b/analysis/ida/export/thermalsdk_so/all_functions_disasm.txt @@ -0,0 +1,78361 @@ +### FUNC 0008BCF8 - 0008BD12 (26 bytes) name=.init_proc +0008BCF8: sub rsp, 8; _init +0008BCFC: mov rax, cs:__gmon_start___ptr +0008BD03: test rax, rax +0008BD06: jz short loc_8BD0D +0008BD08: call ___gmon_start__ +0008BD0D: add rsp, 8 +0008BD11: retn + +### FUNC 0008BD20 - 0008BD2C (12 bytes) name=sub_8BD20 +0008BD20: push cs:qword_2F2008 +0008BD26: jmp cs:qword_2F2010 + +### FUNC 0008BD30 - 0008BD36 (6 bytes) name=._ZNSt6vectorIhSaIhEE15_M_range_insertIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St20forward_iterator_tag +0008BD30: jmp cs:off_2F2018 + +### FUNC 0008BD40 - 0008BD46 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +0008BD40: jmp cs:off_2F2020 + +### FUNC 0008BD50 - 0008BD56 (6 bytes) name=.MAG_Initialize +0008BD50: jmp cs:off_2F2028 + +### FUNC 0008BD60 - 0008BD66 (6 bytes) name=._ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv +0008BD60: jmp cs:off_2F2030 + +### FUNC 0008BD70 - 0008BD76 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EEC2Ev +0008BD70: jmp cs:off_2F2038 + +### FUNC 0008BD80 - 0008BD86 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE17is_number_integerEv +0008BD80: jmp cs:off_2F2040 + +### FUNC 0008BD90 - 0008BD96 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhEET0_T_SC_SB_ +0008BD90: jmp cs:off_2F2048 + +### FUNC 0008BDA0 - 0008BDA6 (6 bytes) name=._ZN17ThermalController10isIROpenedEv +0008BDA0: jmp cs:off_2F2050 + +### FUNC 0008BDB0 - 0008BDB6 (6 bytes) name=._ZSt3getILm1EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008BDB0: jmp cs:off_2F2058 + +### FUNC 0008BDC0 - 0008BDC6 (6 bytes) name=._ZNKSt6vectorISsSaISsEE12_M_check_lenEmPKc +0008BDC0: jmp cs:off_2F2060 + +### FUNC 0008BDD0 - 0008BDD6 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEED2Ev +0008BDD0: jmp cs:off_2F2068 + +### FUNC 0008BDE0 - 0008BDE6 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +0008BDE0: jmp cs:off_2F2070 + +### FUNC 0008BDF0 - 0008BDF6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJDnEEEvDpOT_ +0008BDF0: jmp cs:off_2F2078 + +### FUNC 0008BE00 - 0008BE06 (6 bytes) name=._ZN8nlohmann6detail20external_constructorILNS0_7value_tE3EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_RKNSC_8string_tE +0008BE00: jmp cs:off_2F2080 + +### FUNC 0008BE10 - 0008BE16 (6 bytes) name=._ZNKSt8__detail10_Select1stclIRSt4pairIKSsiEEEDTcl3getILi0EEcl7forwardIT_Efp_EEEOS6_ +0008BE10: jmp cs:off_2F2088 + +### FUNC 0008BE20 - 0008BE26 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSC_EEEvPT_DpOT0_ +0008BE20: jmp cs:off_2F2090 + +### FUNC 0008BE30 - 0008BE36 (6 bytes) name=._ZNSt11char_traitsIcE7compareEPKcS2_m +0008BE30: jmp cs:off_2F2098 + +### FUNC 0008BE40 - 0008BE46 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm +0008BE40: jmp cs:off_2F20A0 + +### FUNC 0008BE50 - 0008BE56 (6 bytes) name=._ZSt8distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_ +0008BE50: jmp cs:off_2F20A8 + +### FUNC 0008BE60 - 0008BE66 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKSsLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008BE60: jmp cs:off_2F20B0 + +### FUNC 0008BE70 - 0008BE76 (6 bytes) name=._ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IKS1_EEOT_ +0008BE70: jmp cs:off_2F20B8 + +### FUNC 0008BE80 - 0008BE86 (6 bytes) name=.MAG_SetDetailEnhancement +0008BE80: jmp cs:off_2F20C0 + +### FUNC 0008BE90 - 0008BE96 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE16_M_destroy_nodesEPPcS3_ +0008BE90: jmp cs:off_2F20C8 + +### FUNC 0008BEA0 - 0008BEA6 (6 bytes) name=._ZN13TCMPresetData10setOffsetXEi +0008BEA0: jmp cs:off_2F20D0 + +### FUNC 0008BEB0 - 0008BEB6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_ +0008BEB0: jmp cs:off_2F20D8 + +### FUNC 0008BEC0 - 0008BEC6 (6 bytes) name=._ZN10SerialPort8openPortERKSsj +0008BEC0: jmp cs:off_2F20E0 + +### FUNC 0008BED0 - 0008BED6 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEE12_Vector_implD2Ev +0008BED0: jmp cs:off_2F20E8 + +### FUNC 0008BEE0 - 0008BEE6 (6 bytes) name=._ZNSs6appendEPKcm +0008BEE0: jmp cs:off_2F20F0 + +### FUNC 0008BEF0 - 0008BEF6 (6 bytes) name=._ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +0008BEF0: jmp cs:off_2F20F8 + +### FUNC 0008BF00 - 0008BF06 (6 bytes) name=._ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev +0008BF00: jmp cs:off_2F2100 + +### FUNC 0008BF10 - 0008BF16 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +0008BF10: jmp cs:off_2F2108 + +### FUNC 0008BF20 - 0008BF26 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhE8allocateEmPKv +0008BF20: jmp cs:off_2F2110 + +### FUNC 0008BF30 - 0008BF36 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim +0008BF30: jmp cs:off_2F2118 + +### FUNC 0008BF40 - 0008BF46 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB_ +0008BF40: jmp cs:off_2F2120 + +### FUNC 0008BF50 - 0008BF56 (6 bytes) name=._ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE +0008BF50: jmp cs:off_2F2128 + +### FUNC 0008BF60 - 0008BF66 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_St8functionIFbiNS0_13parse_event_tERS8_EEbb +0008BF60: jmp cs:off_2F2130 + +### FUNC 0008BF70 - 0008BF76 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPN6serial8PortInfoESt13move_iteratorIS2_EET0_T_ +0008BF70: jmp cs:off_2F2138 + +### FUNC 0008BF80 - 0008BF86 (6 bytes) name=._ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E +0008BF80: jmp cs:off_2F2140 + +### FUNC 0008BF90 - 0008BF96 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2IKS1_JEvEEOT_DpOT0_ +0008BF90: jmp cs:off_2F2148 + +### FUNC 0008BFA0 - 0008BFA6 (6 bytes) name=._ZNSt10_Head_baseILm0EOSsLb0EEC2ISsEEOT_ +0008BFA0: jmp cs:off_2F2150 + +### FUNC 0008BFB0 - 0008BFB6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEC2ERKS3_ +0008BFB0: jmp cs:off_2F2158 + +### FUNC 0008BFC0 - 0008BFC6 (6 bytes) name=._ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +0008BFC0: jmp cs:off_2F2160 + +### FUNC 0008BFD0 - 0008BFD6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv +0008BFD0: jmp cs:off_2F2168 + +### FUNC 0008BFE0 - 0008BFE6 (6 bytes) name=._ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2Ev +0008BFE0: jmp cs:off_2F2170 + +### FUNC 0008BFF0 - 0008BFF6 (6 bytes) name=._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv +0008BFF0: jmp cs:off_2F2178 + +### FUNC 0008C000 - 0008C006 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEED2Ev +0008C000: jmp cs:off_2F2180 + +### FUNC 0008C010 - 0008C016 (6 bytes) name=._ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_ +0008C010: jmp cs:off_2F2188 + +### FUNC 0008C020 - 0008C026 (6 bytes) name=._ZN18IProximityDelegateC2Ev +0008C020: jmp cs:off_2F2190 + +### FUNC 0008C030 - 0008C036 (6 bytes) name=._ZNSt12_Destroy_auxILb1EE9__destroyIPP16TCMVirtualDeviceEEvT_S5_ +0008C030: jmp cs:off_2F2198 + +### FUNC 0008C040 - 0008C046 (6 bytes) name=.tcsetattr +0008C040: jmp cs:off_2F21A0 + +### FUNC 0008C050 - 0008C056 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS7_ +0008C050: jmp cs:off_2F21A8 + +### FUNC 0008C060 - 0008C066 (6 bytes) name=._ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +0008C060: jmp cs:off_2F21B0 + +### FUNC 0008C070 - 0008C076 (6 bytes) name=._ZSt20__throw_length_errorPKc +0008C070: jmp cs:off_2F21B8 + +### FUNC 0008C080 - 0008C086 (6 bytes) name=._ZSt3minIjERKT_S2_S2_ +0008C080: jmp cs:off_2F21C0 + +### FUNC 0008C090 - 0008C096 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE12_S_constructISsJRA1_KcEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS8_DpOS9_ +0008C090: jmp cs:off_2F21C8 + +### FUNC 0008C0A0 - 0008C0A6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE4scanEv +0008C0A0: jmp cs:off_2F21D0 + +### FUNC 0008C0B0 - 0008C0B6 (6 bytes) name=._ZNSsaSEPKc +0008C0B0: jmp cs:off_2F21D8 + +### FUNC 0008C0C0 - 0008C0C6 (6 bytes) name=._ZSt12__miter_baseISt19_Bit_const_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +0008C0C0: jmp cs:off_2F21E0 + +### FUNC 0008C0D0 - 0008C0D6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E +0008C0D0: jmp cs:off_2F21E8 + +### FUNC 0008C0E0 - 0008C0E6 (6 bytes) name=._ZN11FTDICommand4initEhhRKSt6vectorIhSaIhEEi +0008C0E0: jmp cs:off_2F21F0 + +### FUNC 0008C0F0 - 0008C0F6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +0008C0F0: jmp cs:off_2F21F8 + +### FUNC 0008C100 - 0008C106 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS7_ +0008C100: jmp cs:off_2F2200 + +### FUNC 0008C110 - 0008C116 (6 bytes) name=._ZN17ThermalController12getTCMDeviceEv +0008C110: jmp cs:off_2F2208 + +### FUNC 0008C120 - 0008C126 (6 bytes) name=._ZN6serial6Serial10SerialImplC2ERKSsmNS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +0008C120: jmp cs:off_2F2210 + +### FUNC 0008C130 - 0008C136 (6 bytes) name=._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +0008C130: jmp cs:off_2F2218 + +### FUNC 0008C140 - 0008C146 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv +0008C140: jmp cs:off_2F2220 + +### FUNC 0008C150 - 0008C156 (6 bytes) name=._ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev +0008C150: jmp cs:off_2F2228 + +### FUNC 0008C160 - 0008C166 (6 bytes) name=._ZN14EloMotorDevice21setLimitEventListenerEP11ILimitEvent +0008C160: jmp cs:off_2F2230 + +### FUNC 0008C170 - 0008C176 (6 bytes) name=._ZNSsC1Ev +0008C170: jmp cs:off_2F2238 + +### FUNC 0008C180 - 0008C186 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +0008C180: jmp cs:off_2F2240 + +### FUNC 0008C190 - 0008C196 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEEC2Ev +0008C190: jmp cs:off_2F2248 + +### FUNC 0008C1A0 - 0008C1A6 (6 bytes) name=._ZNKSt6vectorISsSaISsEE8max_sizeEv +0008C1A0: jmp cs:off_2F2250 + +### FUNC 0008C1B0 - 0008C1B6 (6 bytes) name=._ZNSt6thread4swapERS_ +0008C1B0: jmp cs:off_2F2258 + +### FUNC 0008C1C0 - 0008C1C6 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +0008C1C0: jmp cs:off_2F2260 + +### FUNC 0008C1D0 - 0008C1D6 (6 bytes) name=._ZSt12__miter_baseISt13move_iteratorIPP16TCMVirtualDeviceEENSt11_Miter_baseIT_E13iterator_typeES6_ +0008C1D0: jmp cs:off_2F2268 + +### FUNC 0008C1E0 - 0008C1E6 (6 bytes) name=._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPhS1_EEEES5_mT_S7_ +0008C1E0: jmp cs:off_2F2270 + +### FUNC 0008C1F0 - 0008C1F6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5beginEv +0008C1F0: jmp cs:off_2F2278 + +### FUNC 0008C200 - 0008C206 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSI_ +0008C200: jmp cs:off_2F2280 + +### FUNC 0008C210 - 0008C216 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEEC2Ev +0008C210: jmp cs:off_2F2288 + +### FUNC 0008C220 - 0008C226 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsE9constructISsJRKSsEEEvPT_DpOT0_ +0008C220: jmp cs:off_2F2290 + +### FUNC 0008C230 - 0008C236 (6 bytes) name=._ZNSt15_Deque_iteratorIcRcPcEpLEl +0008C230: jmp cs:off_2F2298 + +### FUNC 0008C240 - 0008C246 (6 bytes) name=.printf +0008C240: jmp cs:off_2F22A0 + +### FUNC 0008C250 - 0008C256 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5eraseB5cxx11ESt17_Rb_tree_iteratorISA_E +0008C250: jmp cs:off_2F22A8 + +### FUNC 0008C260 - 0008C266 (6 bytes) name=._ZNSt10_Iter_baseIPKhLb0EE7_S_baseES1_ +0008C260: jmp cs:off_2F22B0 + +### FUNC 0008C270 - 0008C276 (6 bytes) name=._ZNK6serial6Serial10SerialImpl11getStopbitsEv +0008C270: jmp cs:off_2F22B8 + +### FUNC 0008C280 - 0008C286 (6 bytes) name=._ZN9__gnu_cxx11char_traitsIhE3eofEv +0008C280: jmp cs:off_2F22C0 + +### FUNC 0008C290 - 0008C296 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JRKS9_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSF_ +0008C290: jmp cs:off_2F22C8 + +### FUNC 0008C2A0 - 0008C2A6 (6 bytes) name=._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008C2A0: jmp cs:off_2F22D0 + +### FUNC 0008C2B0 - 0008C2B6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +0008C2B0: jmp cs:off_2F22D8 + +### FUNC 0008C2C0 - 0008C2C6 (6 bytes) name=._ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_ +0008C2C0: jmp cs:off_2F22E0 + +### FUNC 0008C2D0 - 0008C2D6 (6 bytes) name=._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv +0008C2D0: jmp cs:off_2F22E8 + +### FUNC 0008C2E0 - 0008C2E6 (6 bytes) name=._ZNSt10_Head_baseILm0EPSsLb0EEC2IRS0_EEOT_ +0008C2E0: jmp cs:off_2F22F0 + +### FUNC 0008C2F0 - 0008C2F6 (6 bytes) name=._ZNSt5arrayIhLm5EE4dataEv +0008C2F0: jmp cs:off_2F22F8 + +### FUNC 0008C300 - 0008C306 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5clearEv +0008C300: jmp cs:off_2F2300 + +### FUNC 0008C310 - 0008C316 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +0008C310: jmp cs:off_2F2308 + +### FUNC 0008C320 - 0008C326 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPP16TCMVirtualDeviceSt13move_iteratorIS2_EET0_T_ +0008C320: jmp cs:off_2F2310 + +### FUNC 0008C330 - 0008C336 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5parseEbRS8_ +0008C330: jmp cs:off_2F2318 + +### FUNC 0008C340 - 0008C346 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EED2Ev +0008C340: jmp cs:off_2F2320 + +### FUNC 0008C350 - 0008C356 (6 bytes) name=._ZN8nlohmann6detail9exceptionC2EiPKc +0008C350: jmp cs:off_2F2328 + +### FUNC 0008C360 - 0008C366 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +0008C360: jmp cs:off_2F2330 + +### FUNC 0008C370 - 0008C376 (6 bytes) name=._ZNSaIcED2Ev +0008C370: jmp cs:off_2F2338 + +### FUNC 0008C380 - 0008C386 (6 bytes) name=._ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +0008C380: jmp cs:off_2F2340 + +### FUNC 0008C390 - 0008C396 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E +0008C390: jmp cs:off_2F2348 + +### FUNC 0008C3A0 - 0008C3A6 (6 bytes) name=._ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_ +0008C3A0: jmp cs:off_2F2350 + +### FUNC 0008C3B0 - 0008C3B6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2Ev +0008C3B0: jmp cs:off_2F2358 + +### FUNC 0008C3C0 - 0008C3C6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv +0008C3C0: jmp cs:off_2F2360 + +### FUNC 0008C3D0 - 0008C3D6 (6 bytes) name=._ZN16TCMVirtualDevice16setFrameDelegateEP16TCMFrameDelegate +0008C3D0: jmp cs:off_2F2368 + +### FUNC 0008C3E0 - 0008C3E6 (6 bytes) name=._ZNSt6vectorISsSaISsEE12emplace_backIJSsEEEvDpOT_ +0008C3E0: jmp cs:off_2F2370 + +### FUNC 0008C3F0 - 0008C3F6 (6 bytes) name=.MAG_SetEXLevel +0008C3F0: jmp cs:off_2F2378 + +### FUNC 0008C400 - 0008C406 (6 bytes) name=._ZN9__gnu_cxx14__alloc_traitsISaIhEE17_S_select_on_copyERKS1_ +0008C400: jmp cs:off_2F2380 + +### FUNC 0008C410 - 0008C416 (6 bytes) name=._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEbLi0EEEvRT_T0_ +0008C410: jmp cs:off_2F2388 + +### FUNC 0008C420 - 0008C426 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2ERKSD_ +0008C420: jmp cs:off_2F2390 + +### FUNC 0008C430 - 0008C436 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE15skip_whitespaceEv +0008C430: jmp cs:off_2F2398 + +### FUNC 0008C440 - 0008C446 (6 bytes) name=._ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET1_T0_S8_S7_ +0008C440: jmp cs:off_2F23A0 + +### FUNC 0008C450 - 0008C456 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJRKS7_EEEvDpOT_ +0008C450: jmp cs:off_2F23A8 + +### FUNC 0008C460 - 0008C466 (6 bytes) name=._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +0008C460: jmp cs:off_2F23B0 + +### FUNC 0008C470 - 0008C476 (6 bytes) name=._ZN10CMagDevice8IsLinkedEv +0008C470: jmp cs:off_2F23B8 + +### FUNC 0008C480 - 0008C486 (6 bytes) name=._ZNSolsEi +0008C480: jmp cs:off_2F23C0 + +### FUNC 0008C490 - 0008C496 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EED2Ev +0008C490: jmp cs:off_2F23C8 + +### FUNC 0008C4A0 - 0008C4A6 (6 bytes) name=._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008C4A0: jmp cs:off_2F23D0 + +### FUNC 0008C4B0 - 0008C4B6 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev +0008C4B0: jmp cs:off_2F23D8 + +### FUNC 0008C4C0 - 0008C4C6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv +0008C4C0: jmp cs:off_2F23E0 + +### FUNC 0008C4D0 - 0008C4D6 (6 bytes) name=._ZN9__gnu_cxx14__alloc_traitsISaIhEE27_S_propagate_on_copy_assignEv +0008C4D0: jmp cs:off_2F23E8 + +### FUNC 0008C4E0 - 0008C4E6 (6 bytes) name=._ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_ +0008C4E0: jmp cs:off_2F23F0 + +### FUNC 0008C4F0 - 0008C4F6 (6 bytes) name=._ZSt9__advanceIPKhlEvRT_T0_St26random_access_iterator_tag +0008C4F0: jmp cs:off_2F23F8 + +### FUNC 0008C500 - 0008C506 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EE7_M_headERSI_ +0008C500: jmp cs:off_2F2400 + +### FUNC 0008C510 - 0008C516 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPiS0_SaIiEET0_T_S3_S2_RT1_ +0008C510: jmp cs:off_2F2408 + +### FUNC 0008C520 - 0008C526 (6 bytes) name=._ZSt3getILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008C520: jmp cs:off_2F2410 + +### FUNC 0008C530 - 0008C536 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +0008C530: jmp cs:off_2F2418 + +### FUNC 0008C540 - 0008C546 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_ +0008C540: jmp cs:off_2F2420 + +### FUNC 0008C550 - 0008C556 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISR_E4typeE +0008C550: jmp cs:off_2F2428 + +### FUNC 0008C560 - 0008C566 (6 bytes) name=._ZNSspLEPKc +0008C560: jmp cs:off_2F2430 + +### FUNC 0008C570 - 0008C576 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +0008C570: jmp cs:off_2F2438 + +### FUNC 0008C580 - 0008C586 (6 bytes) name=._ZSt4moveIRSt11_Tuple_implILm1EJP10SerialPortEEEONSt16remove_referenceIT_E4typeEOS6_ +0008C580: jmp cs:off_2F2440 + +### FUNC 0008C590 - 0008C596 (6 bytes) name=._ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +0008C590: jmp cs:off_2F2448 + +### FUNC 0008C5A0 - 0008C5A6 (6 bytes) name=.memset +0008C5A0: jmp cs:off_2F2450 + +### FUNC 0008C5B0 - 0008C5B6 (6 bytes) name=._ZNSt12_Destroy_auxILb1EE9__destroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SC_ +0008C5B0: jmp cs:off_2F2458 + +### FUNC 0008C5C0 - 0008C5C6 (6 bytes) name=._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +0008C5C0: jmp cs:off_2F2460 + +### FUNC 0008C5D0 - 0008C5D6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSJ_ +0008C5D0: jmp cs:off_2F2468 + +### FUNC 0008C5E0 - 0008C5E6 (6 bytes) name=._ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev +0008C5E0: jmp cs:off_2F2470 + +### FUNC 0008C5F0 - 0008C5F6 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +0008C5F0: jmp cs:off_2F2478 + +### FUNC 0008C600 - 0008C606 (6 bytes) name=._ZN16ThermalTCMDeviceC2Ev +0008C600: jmp cs:off_2F2480 + +### FUNC 0008C610 - 0008C616 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE8allocateERS6_m +0008C610: jmp cs:off_2F2488 + +### FUNC 0008C620 - 0008C626 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev +0008C620: jmp cs:off_2F2490 + +### FUNC 0008C630 - 0008C636 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE11_Deque_implD2Ev +0008C630: jmp cs:off_2F2498 + +### FUNC 0008C640 - 0008C646 (6 bytes) name=._ZN19EloTCMUpdaterDeviceD2Ev +0008C640: jmp cs:off_2F24A0 + +### FUNC 0008C650 - 0008C656 (6 bytes) name=._ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS7_EEEEvEEOS_IT_E +0008C650: jmp cs:off_2F24A8 + +### FUNC 0008C660 - 0008C666 (6 bytes) name=._ZNSt9exceptionC2ERKS_ +0008C660: jmp cs:off_2F24B0 + +### FUNC 0008C670 - 0008C676 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERSI_ +0008C670: jmp cs:off_2F24B8 + +### FUNC 0008C680 - 0008C686 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2Ev +0008C680: jmp cs:off_2F24C0 + +### FUNC 0008C690 - 0008C696 (6 bytes) name=.snprintf +0008C690: jmp cs:off_2F24C8 + +### FUNC 0008C6A0 - 0008C6A6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2ERKSE_RKSaISt13_Rb_tree_nodeISA_EE +0008C6A0: jmp cs:off_2F24D0 + +### FUNC 0008C6B0 - 0008C6B6 (6 bytes) name=._ZSt11__addressofIcEPT_RS0_ +0008C6B0: jmp cs:off_2F24D8 + +### FUNC 0008C6C0 - 0008C6C6 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EC2ESN_RKSO_ +0008C6C0: jmp cs:off_2F24E0 + +### FUNC 0008C6D0 - 0008C6D6 (6 bytes) name=._ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm +0008C6D0: jmp cs:off_2F24E8 + +### FUNC 0008C6E0 - 0008C6E6 (6 bytes) name=._ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERKS7_ +0008C6E0: jmp cs:off_2F24F0 + +### FUNC 0008C6F0 - 0008C6F6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJRKS9_EEEPT_DpOT0_ +0008C6F0: jmp cs:off_2F24F8 + +### FUNC 0008C700 - 0008C706 (6 bytes) name=._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSB_EEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSK_DpOSL_ +0008C700: jmp cs:off_2F2500 + +### FUNC 0008C710 - 0008C716 (6 bytes) name=._ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EE7_M_headERS2_ +0008C710: jmp cs:off_2F2508 + +### FUNC 0008C720 - 0008C726 (6 bytes) name=._ZNSs5clearEv +0008C720: jmp cs:off_2F2510 + +### FUNC 0008C730 - 0008C736 (6 bytes) name=._ZNKSt4lessISsEclERKSsS2_ +0008C730: jmp cs:off_2F2518 + +### FUNC 0008C740 - 0008C746 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +0008C740: jmp cs:off_2F2520 + +### FUNC 0008C750 - 0008C756 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8allocateEmPKv +0008C750: jmp cs:off_2F2528 + +### FUNC 0008C760 - 0008C766 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorI19struct_TerminalListE8max_sizeEv +0008C760: jmp cs:off_2F2530 + +### FUNC 0008C770 - 0008C776 (6 bytes) name=._ZSt15__alloc_on_copyISaIhEEvRT_RKS1_ +0008C770: jmp cs:off_2F2538 + +### FUNC 0008C780 - 0008C786 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSI_ +0008C780: jmp cs:off_2F2540 + +### FUNC 0008C790 - 0008C796 (6 bytes) name=._ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +0008C790: jmp cs:off_2F2548 + +### FUNC 0008C7A0 - 0008C7A6 (6 bytes) name=.MAG_GetCameraTemperature +0008C7A0: jmp cs:off_2F2550 + +### FUNC 0008C7B0 - 0008C7B6 (6 bytes) name=._ZN8nlohmann6detail20primitive_iterator_t9set_beginEv +0008C7B0: jmp cs:off_2F2558 + +### FUNC 0008C7C0 - 0008C7C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEED2Ev +0008C7C0: jmp cs:off_2F2560 + +### FUNC 0008C7D0 - 0008C7D6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +0008C7D0: jmp cs:off_2F2568 + +### FUNC 0008C7E0 - 0008C7E6 (6 bytes) name=._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +0008C7E0: jmp cs:off_2F2570 + +### FUNC 0008C7F0 - 0008C7F6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEEC2Ev +0008C7F0: jmp cs:off_2F2578 + +### FUNC 0008C800 - 0008C806 (6 bytes) name=._ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2ERKSC_ +0008C800: jmp cs:off_2F2580 + +### FUNC 0008C810 - 0008C816 (6 bytes) name=._ZSt4moveIRN6serial8PortInfoEEONSt16remove_referenceIT_E4typeEOS4_ +0008C810: jmp cs:off_2F2588 + +### FUNC 0008C820 - 0008C826 (6 bytes) name=._ZSt11__addressofISsEPT_RS0_ +0008C820: jmp cs:off_2F2590 + +### FUNC 0008C830 - 0008C836 (6 bytes) name=._ZSt13__bind_simpleIM21EloTCMHeartBeatDeviceFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +0008C830: jmp cs:off_2F2598 + +### FUNC 0008C840 - 0008C846 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2Ev +0008C840: jmp cs:off_2F25A0 + +### FUNC 0008C850 - 0008C856 (6 bytes) name=._ZN13TCMPresetDataC2Ev +0008C850: jmp cs:off_2F25A8 + +### FUNC 0008C860 - 0008C866 (6 bytes) name=._ZNSt11_Tuple_implILm0EJOSsEE7_M_headERS1_ +0008C860: jmp cs:off_2F25B0 + +### FUNC 0008C870 - 0008C876 (6 bytes) name=._ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_ +0008C870: jmp cs:off_2F25B8 + +### FUNC 0008C880 - 0008C886 (6 bytes) name=._ZNSt5dequeIcSaIcEE12emplace_backIJcEEEvDpOT_ +0008C880: jmp cs:off_2F25C0 + +### FUNC 0008C890 - 0008C896 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEclEv +0008C890: jmp cs:off_2F25C8 + +### FUNC 0008C8A0 - 0008C8A6 (6 bytes) name=._ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +0008C8A0: jmp cs:off_2F25D0 + +### FUNC 0008C8B0 - 0008C8B6 (6 bytes) name=._ZN6serial6Serial10SerialImplD2Ev +0008C8B0: jmp cs:off_2F25D8 + +### FUNC 0008C8C0 - 0008C8C6 (6 bytes) name=._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEED2Ev +0008C8C0: jmp cs:off_2F25E0 + +### FUNC 0008C8D0 - 0008C8D6 (6 bytes) name=._ZNSt13move_iteratorIPN6serial8PortInfoEEC2ES2_ +0008C8D0: jmp cs:off_2F25E8 + +### FUNC 0008C8E0 - 0008C8E6 (6 bytes) name=._ZN6serial6Serial10SerialImpl10flushInputEv +0008C8E0: jmp cs:off_2F25F0 + +### FUNC 0008C8F0 - 0008C8F6 (6 bytes) name=._ZSt4moveIRSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEONSt16remove_referenceIT_E4typeEOS7_ +0008C8F0: jmp cs:off_2F25F8 + +### FUNC 0008C900 - 0008C906 (6 bytes) name=._ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE +0008C900: jmp cs:off_2F2600 + +### FUNC 0008C910 - 0008C916 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +0008C910: jmp cs:off_2F2608 + +### FUNC 0008C920 - 0008C926 (6 bytes) name=._ZNKSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +0008C920: jmp cs:off_2F2610 + +### FUNC 0008C930 - 0008C936 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getIiiLi0EEET0_v +0008C930: jmp cs:off_2F2618 + +### FUNC 0008C940 - 0008C946 (6 bytes) name=._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJOSsEESG_IJEEEEEDpOT_ +0008C940: jmp cs:off_2F2620 + +### FUNC 0008C950 - 0008C956 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4typeEv +0008C950: jmp cs:off_2F2628 + +### FUNC 0008C960 - 0008C966 (6 bytes) name=._ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +0008C960: jmp cs:off_2F2630 + +### FUNC 0008C970 - 0008C976 (6 bytes) name=._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE4sizeEv +0008C970: jmp cs:off_2F2638 + +### FUNC 0008C980 - 0008C986 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv +0008C980: jmp cs:off_2F2640 + +### FUNC 0008C990 - 0008C996 (6 bytes) name=._ZNKSt18_Bit_iterator_baseeqERKS_ +0008C990: jmp cs:off_2F2648 + +### FUNC 0008C9A0 - 0008C9A6 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_ED2Ev +0008C9A0: jmp cs:off_2F2650 + +### FUNC 0008C9B0 - 0008C9B6 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv +0008C9B0: jmp cs:off_2F2658 + +### FUNC 0008C9C0 - 0008C9C6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_b +0008C9C0: jmp cs:off_2F2660 + +### FUNC 0008C9D0 - 0008C9D6 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE12_S_constructIhJhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +0008C9D0: jmp cs:off_2F2668 + +### FUNC 0008C9E0 - 0008C9E6 (6 bytes) name=._ZN11FTDICommand8getExtraEv +0008C9E0: jmp cs:off_2F2670 + +### FUNC 0008C9F0 - 0008C9F6 (6 bytes) name=._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008C9F0: jmp cs:off_2F2678 + +### FUNC 0008CA00 - 0008CA06 (6 bytes) name=.close +0008CA00: jmp cs:off_2F2680 + +### FUNC 0008CA10 - 0008CA16 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008CA10: jmp cs:off_2F2688 + +### FUNC 0008CA20 - 0008CA26 (6 bytes) name=._ZN17ThermalController14getCurrentTimeEv +0008CA20: jmp cs:off_2F2690 + +### FUNC 0008CA30 - 0008CA36 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_b +0008CA30: jmp cs:off_2F2698 + +### FUNC 0008CA40 - 0008CA46 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_ +0008CA40: jmp cs:off_2F26A0 + +### FUNC 0008CA50 - 0008CA56 (6 bytes) name=._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +0008CA50: jmp cs:off_2F26A8 + +### FUNC 0008CA60 - 0008CA66 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSM_EvEEOSH_SL_ +0008CA60: jmp cs:off_2F26B0 + +### FUNC 0008CA70 - 0008CA76 (6 bytes) name=._ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt20back_insert_iteratorIS3_IS7_SaIS7_EEEET1_T0_SE_SD_ +0008CA70: jmp cs:off_2F26B8 + +### FUNC 0008CA80 - 0008CA86 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +0008CA80: jmp cs:off_2F26C0 + +### FUNC 0008CA90 - 0008CA96 (6 bytes) name=._ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EE7_M_headERS5_ +0008CA90: jmp cs:off_2F26C8 + +### FUNC 0008CAA0 - 0008CAA6 (6 bytes) name=._ZN21EloTCMHeartBeatDevice10startCheckEv +0008CAA0: jmp cs:off_2F26D0 + +### FUNC 0008CAB0 - 0008CAB6 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m +0008CAB0: jmp cs:off_2F26D8 + +### FUNC 0008CAC0 - 0008CAC6 (6 bytes) name=._ZSt12__get_helperILm1EP21EloTCMHeartBeatDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +0008CAC0: jmp cs:off_2F26E0 + +### FUNC 0008CAD0 - 0008CAD6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +0008CAD0: jmp cs:off_2F26E8 + +### FUNC 0008CAE0 - 0008CAE6 (6 bytes) name=._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +0008CAE0: jmp cs:off_2F26F0 + +### FUNC 0008CAF0 - 0008CAF6 (6 bytes) name=._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEE4swapERSC_ +0008CAF0: jmp cs:off_2F26F8 + +### FUNC 0008CB00 - 0008CB06 (6 bytes) name=._ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv +0008CB00: jmp cs:off_2F2700 + +### FUNC 0008CB10 - 0008CB16 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implD2Ev +0008CB10: jmp cs:off_2F2708 + +### FUNC 0008CB20 - 0008CB26 (6 bytes) name=._ZSt14__copy_move_a2ILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +0008CB20: jmp cs:off_2F2710 + +### FUNC 0008CB30 - 0008CB36 (6 bytes) name=._ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS7_EEEEvEEOS_IT_E +0008CB30: jmp cs:off_2F2718 + +### FUNC 0008CB40 - 0008CB46 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE16_M_allocate_nodeEv +0008CB40: jmp cs:off_2F2720 + +### FUNC 0008CB50 - 0008CB56 (6 bytes) name=._ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_ +0008CB50: jmp cs:off_2F2728 + +### FUNC 0008CB60 - 0008CB66 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008CB60: jmp cs:off_2F2730 + +### FUNC 0008CB70 - 0008CB76 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKS7_RKS3_ +0008CB70: jmp cs:off_2F2738 + +### FUNC 0008CB80 - 0008CB86 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE3endEv +0008CB80: jmp cs:off_2F2740 + +### FUNC 0008CB90 - 0008CB96 (6 bytes) name=.MAG_Free +0008CB90: jmp cs:off_2F2748 + +### FUNC 0008CBA0 - 0008CBA6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListED2Ev +0008CBA0: jmp cs:off_2F2750 + +### FUNC 0008CBB0 - 0008CBB6 (6 bytes) name=._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +0008CBB0: jmp cs:off_2F2758 + +### FUNC 0008CBC0 - 0008CBC6 (6 bytes) name=.ioctl +0008CBC0: jmp cs:off_2F2760 + +### FUNC 0008CBD0 - 0008CBD6 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEED2Ev +0008CBD0: jmp cs:off_2F2768 + +### FUNC 0008CBE0 - 0008CBE6 (6 bytes) name=._ZNSt6vectorISsSaISsEEixEm +0008CBE0: jmp cs:off_2F2770 + +### FUNC 0008CBF0 - 0008CBF6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRmEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008CBF0: jmp cs:off_2F2778 + +### FUNC 0008CC00 - 0008CC06 (6 bytes) name=._ZNSt14__array_traitsIcLm9EE6_S_refERA9_Kcm +0008CC00: jmp cs:off_2F2780 + +### FUNC 0008CC10 - 0008CC16 (6 bytes) name=._ZN11CMagService10InitializeEv +0008CC10: jmp cs:off_2F2788 + +### FUNC 0008CC20 - 0008CC26 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE15_M_create_nodesEPPcS3_ +0008CC20: jmp cs:off_2F2790 + +### FUNC 0008CC30 - 0008CC36 (6 bytes) name=._ZNSt5mutex4lockEv +0008CC30: jmp cs:off_2F2798 + +### FUNC 0008CC40 - 0008CC46 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +0008CC40: jmp cs:off_2F27A0 + +### FUNC 0008CC50 - 0008CC56 (6 bytes) name=._ZN6serial6Serial4openEv +0008CC50: jmp cs:off_2F27A8 + +### FUNC 0008CC60 - 0008CC66 (6 bytes) name=._ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8key_compEv +0008CC60: jmp cs:off_2F27B0 + +### FUNC 0008CC70 - 0008CC76 (6 bytes) name=._ZSt4moveIRSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +0008CC70: jmp cs:off_2F27B8 + +### FUNC 0008CC80 - 0008CC86 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +0008CC80: jmp cs:off_2F27C0 + +### FUNC 0008CC90 - 0008CC96 (6 bytes) name=._ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008CC90: jmp cs:off_2F27C8 + +### FUNC 0008CCA0 - 0008CCA6 (6 bytes) name=._ZNSt10_Iter_baseIP19struct_TerminalListLb0EE7_S_baseES1_ +0008CCA0: jmp cs:off_2F27D0 + +### FUNC 0008CCB0 - 0008CCB6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERSP_ +0008CCB0: jmp cs:off_2F27D8 + +### FUNC 0008CCC0 - 0008CCC6 (6 bytes) name=._ZN6serial6Serial10SerialImpl9sendBreakEi +0008CCC0: jmp cs:off_2F27E0 + +### FUNC 0008CCD0 - 0008CCD6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +0008CCD0: jmp cs:off_2F27E8 + +### FUNC 0008CCE0 - 0008CCE6 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +0008CCE0: jmp cs:off_2F27F0 + +### FUNC 0008CCF0 - 0008CCF6 (6 bytes) name=._ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv +0008CCF0: jmp cs:off_2F27F8 + +### FUNC 0008CD00 - 0008CD06 (6 bytes) name=._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008CD00: jmp cs:off_2F2800 + +### FUNC 0008CD10 - 0008CD16 (6 bytes) name=._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +0008CD10: jmp cs:off_2F2808 + +### FUNC 0008CD20 - 0008CD26 (6 bytes) name=._ZNSt6vectorIhSaIhEE5clearEv +0008CD20: jmp cs:off_2F2810 + +### FUNC 0008CD30 - 0008CD36 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5itemsEv +0008CD30: jmp cs:off_2F2818 + +### FUNC 0008CD40 - 0008CD46 (6 bytes) name=._ZNSt6vectorIhSaIhEED2Ev +0008CD40: jmp cs:off_2F2820 + +### FUNC 0008CD50 - 0008CD56 (6 bytes) name=._ZSt13__copy_move_aILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +0008CD50: jmp cs:off_2F2828 + +### FUNC 0008CD60 - 0008CD66 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8max_sizeEv +0008CD60: jmp cs:off_2F2830 + +### FUNC 0008CD70 - 0008CD76 (6 bytes) name=._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_ +0008CD70: jmp cs:off_2F2838 + +### FUNC 0008CD80 - 0008CD86 (6 bytes) name=.MAG_GetSenorTemperature +0008CD80: jmp cs:off_2F2840 + +### FUNC 0008CD90 - 0008CD96 (6 bytes) name=._ZSt4copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +0008CD90: jmp cs:off_2F2848 + +### FUNC 0008CDA0 - 0008CDA6 (6 bytes) name=._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEPT_PKSC_SF_SD_ +0008CDA0: jmp cs:off_2F2850 + +### FUNC 0008CDB0 - 0008CDB6 (6 bytes) name=._ZSt4swapINSt6thread2idEEvRT_S3_ +0008CDB0: jmp cs:off_2F2858 + +### FUNC 0008CDC0 - 0008CDC6 (6 bytes) name=._ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +0008CDC0: jmp cs:off_2F2860 + +### FUNC 0008CDD0 - 0008CDD6 (6 bytes) name=.MAG_PrepareProcessImage +0008CDD0: jmp cs:off_2F2868 + +### FUNC 0008CDE0 - 0008CDE6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +0008CDE0: jmp cs:off_2F2870 + +### FUNC 0008CDF0 - 0008CDF6 (6 bytes) name=._ZN13TCMPresetData10getOffsetXEv +0008CDF0: jmp cs:off_2F2878 + +### FUNC 0008CE00 - 0008CE06 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EC2ESL_RKSM_ +0008CE00: jmp cs:off_2F2880 + +### FUNC 0008CE10 - 0008CE16 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE8max_sizeERKS0_ +0008CE10: jmp cs:off_2F2888 + +### FUNC 0008CE20 - 0008CE26 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEcvNS_6detail7value_tEEv +0008CE20: jmp cs:off_2F2890 + +### FUNC 0008CE30 - 0008CE36 (6 bytes) name=._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv +0008CE30: jmp cs:off_2F2898 + +### FUNC 0008CE40 - 0008CE46 (6 bytes) name=._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSA_EEEDpOT_ +0008CE40: jmp cs:off_2F28A0 + +### FUNC 0008CE50 - 0008CE56 (6 bytes) name=.clock_gettime +0008CE50: jmp cs:off_2F28A8 + +### FUNC 0008CE60 - 0008CE66 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm +0008CE60: jmp cs:off_2F28B0 + +### FUNC 0008CE70 - 0008CE76 (6 bytes) name=._ZNKSt6vectorIiSaIiEE4sizeEv +0008CE70: jmp cs:off_2F28B8 + +### FUNC 0008CE80 - 0008CE86 (6 bytes) name=._ZN17ThermalController9hasPresetEv +0008CE80: jmp cs:off_2F28C0 + +### FUNC 0008CE90 - 0008CE96 (6 bytes) name=._ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE +0008CE90: jmp cs:off_2F28C8 + +### FUNC 0008CEA0 - 0008CEA6 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +0008CEA0: jmp cs:off_2F28D0 + +### FUNC 0008CEB0 - 0008CEB6 (6 bytes) name=._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +0008CEB0: jmp cs:off_2F28D8 + +### FUNC 0008CEC0 - 0008CEC6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRmEEEvDpOT_ +0008CEC0: jmp cs:off_2F28E0 + +### FUNC 0008CED0 - 0008CED6 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +0008CED0: jmp cs:off_2F28E8 + +### FUNC 0008CEE0 - 0008CEE6 (6 bytes) name=._ZN9IDataCommC2Ev +0008CEE0: jmp cs:off_2F28F0 + +### FUNC 0008CEF0 - 0008CEF6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERSN_ +0008CEF0: jmp cs:off_2F28F8 + +### FUNC 0008CF00 - 0008CF06 (6 bytes) name=._ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSI_vEEOSD_OT0_ +0008CF00: jmp cs:off_2F2900 + +### FUNC 0008CF10 - 0008CF16 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +0008CF10: jmp cs:off_2F2908 + +### FUNC 0008CF20 - 0008CF26 (6 bytes) name=._ZNSaISsED2Ev +0008CF20: jmp cs:off_2F2910 + +### FUNC 0008CF30 - 0008CF36 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKm +0008CF30: jmp cs:off_2F2918 + +### FUNC 0008CF40 - 0008CF46 (6 bytes) name=._ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +0008CF40: jmp cs:off_2F2920 + +### FUNC 0008CF50 - 0008CF56 (6 bytes) name=._ZNSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +0008CF50: jmp cs:off_2F2928 + +### FUNC 0008CF60 - 0008CF66 (6 bytes) name=._ZNKSt16initializer_listIKjE5beginEv +0008CF60: jmp cs:off_2F2930 + +### FUNC 0008CF70 - 0008CF76 (6 bytes) name=._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE19get_number_unsignedEv +0008CF70: jmp cs:off_2F2938 + +### FUNC 0008CF80 - 0008CF86 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JEEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSF_DpOSG_ +0008CF80: jmp cs:off_2F2940 + +### FUNC 0008CF90 - 0008CF96 (6 bytes) name=._ZNSsC1EPKcmRKSaIcE +0008CF90: jmp cs:off_2F2948 + +### FUNC 0008CFA0 - 0008CFA6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC2ERKS2_ +0008CFA0: jmp cs:off_2F2950 + +### FUNC 0008CFB0 - 0008CFB6 (6 bytes) name=._ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE +0008CFB0: jmp cs:off_2F2958 + +### FUNC 0008CFC0 - 0008CFC6 (6 bytes) name=._ZNSt6vectorISsSaISsEE5beginEv +0008CFC0: jmp cs:off_2F2960 + +### FUNC 0008CFD0 - 0008CFD6 (6 bytes) name=._ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +0008CFD0: jmp cs:off_2F2968 + +### FUNC 0008CFE0 - 0008CFE6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl +0008CFE0: jmp cs:off_2F2970 + +### FUNC 0008CFF0 - 0008CFF6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_ +0008CFF0: jmp cs:off_2F2978 + +### FUNC 0008D000 - 0008D006 (6 bytes) name=._ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz +0008D000: jmp cs:off_2F2980 + +### FUNC 0008D010 - 0008D016 (6 bytes) name=._ZNSt6thread10_Impl_baseD2Ev +0008D010: jmp cs:off_2F2988 + +### FUNC 0008D020 - 0008D026 (6 bytes) name=._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8max_sizeEv +0008D020: jmp cs:off_2F2990 + +### FUNC 0008D030 - 0008D036 (6 bytes) name=._ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E +0008D030: jmp cs:off_2F2998 + +### FUNC 0008D040 - 0008D046 (6 bytes) name=._ZNSt6thread10_Impl_baseC2Ev +0008D040: jmp cs:off_2F29A0 + +### FUNC 0008D050 - 0008D056 (6 bytes) name=._ZNSt6chrono15time_point_castINS_8durationIlSt5ratioILl1ELl1EEEENS_3_V212system_clockENS1_IlS2_ILl1ELl1000000000EEEEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueENS_10time_pointIT0_SB_EEE4typeERKNSD_ISE_T1_EE +0008D050: jmp cs:off_2F29A8 + +### FUNC 0008D060 - 0008D066 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPP16TCMVirtualDeviceS2_SaIS1_EET0_T_S5_S4_RT1_ +0008D060: jmp cs:off_2F29B0 + +### FUNC 0008D070 - 0008D076 (6 bytes) name=._ZNSt8__detail15_Hash_node_baseC2Ev +0008D070: jmp cs:off_2F29B8 + +### FUNC 0008D080 - 0008D086 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_ED2Ev +0008D080: jmp cs:off_2F29C0 + +### FUNC 0008D090 - 0008D096 (6 bytes) name=._ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IivEERKT_ +0008D090: jmp cs:off_2F29C8 + +### FUNC 0008D0A0 - 0008D0A6 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm +0008D0A0: jmp cs:off_2F29D0 + +### FUNC 0008D0B0 - 0008D0B6 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB_ +0008D0B0: jmp cs:off_2F29D8 + +### FUNC 0008D0C0 - 0008D0C6 (6 bytes) name=._ZNSt10_Iter_baseIPhLb0EE7_S_baseES0_ +0008D0C0: jmp cs:off_2F29E0 + +### FUNC 0008D0D0 - 0008D0D6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSH_EvEEOSC_SG_ +0008D0D0: jmp cs:off_2F29E8 + +### FUNC 0008D0E0 - 0008D0E6 (6 bytes) name=._ZNSaIPcED2Ev +0008D0E0: jmp cs:off_2F29F0 + +### FUNC 0008D0F0 - 0008D0F6 (6 bytes) name=._ZNSt6vectorIbSaIbEE4backEv +0008D0F0: jmp cs:off_2F29F8 + +### FUNC 0008D100 - 0008D106 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhE9constructIhJRKhEEEvPT_DpOT0_ +0008D100: jmp cs:off_2F2A00 + +### FUNC 0008D110 - 0008D116 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEC2ERKS2_ +0008D110: jmp cs:off_2F2A08 + +### FUNC 0008D120 - 0008D126 (6 bytes) name=._ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE +0008D120: jmp cs:off_2F2A10 + +### FUNC 0008D130 - 0008D136 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev +0008D130: jmp cs:off_2F2A18 + +### FUNC 0008D140 - 0008D146 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexERS2_mm +0008D140: jmp cs:off_2F2A20 + +### FUNC 0008D150 - 0008D156 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Em +0008D150: jmp cs:off_2F2A28 + +### FUNC 0008D160 - 0008D166 (6 bytes) name=._ZNSt6chronoltINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EEbRKNS_10time_pointIT_T0_EERKNS7_IS8_T1_EE +0008D160: jmp cs:off_2F2A30 + +### FUNC 0008D170 - 0008D176 (6 bytes) name=._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +0008D170: jmp cs:off_2F2A38 + +### FUNC 0008D180 - 0008D186 (6 bytes) name=._ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_ +0008D180: jmp cs:off_2F2A40 + +### FUNC 0008D190 - 0008D196 (6 bytes) name=._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEC2EOS9_ +0008D190: jmp cs:off_2F2A48 + +### FUNC 0008D1A0 - 0008D1A6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +0008D1A0: jmp cs:off_2F2A50 + +### FUNC 0008D1B0 - 0008D1B6 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_ +0008D1B0: jmp cs:off_2F2A58 + +### FUNC 0008D1C0 - 0008D1C6 (6 bytes) name=._ZN17ThermalController16getPresetOffsetYEv +0008D1C0: jmp cs:off_2F2A60 + +### FUNC 0008D1D0 - 0008D1D6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE7destroyISC_EEvPT_ +0008D1D0: jmp cs:off_2F2A68 + +### FUNC 0008D1E0 - 0008D1E6 (6 bytes) name=._ZSt25__uninitialized_default_nIPhmEvT_T0_ +0008D1E0: jmp cs:off_2F2A70 + +### FUNC 0008D1F0 - 0008D1F6 (6 bytes) name=._ZN6serial6Serial10SerialImpl9setParityENS_8parity_tE +0008D1F0: jmp cs:off_2F2A78 + +### FUNC 0008D200 - 0008D206 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEmiERKl +0008D200: jmp cs:off_2F2A80 + +### FUNC 0008D210 - 0008D216 (6 bytes) name=.__gmon_start__ +0008D210: jmp cs:off_2F2A88 + +### FUNC 0008D220 - 0008D226 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JS9_EEEvPT_DpOT0_ +0008D220: jmp cs:off_2F2A90 + +### FUNC 0008D230 - 0008D236 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +0008D230: jmp cs:off_2F2A98 + +### FUNC 0008D240 - 0008D246 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E7releaseEv +0008D240: jmp cs:off_2F2AA0 + +### FUNC 0008D250 - 0008D256 (6 bytes) name=.puts +0008D250: jmp cs:off_2F2AA8 + +### FUNC 0008D260 - 0008D266 (6 bytes) name=._ZSt20__throw_system_errori +0008D260: jmp cs:off_2F2AB0 + +### FUNC 0008D270 - 0008D276 (6 bytes) name=._ZNKSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEE13_M_const_castEv +0008D270: jmp cs:off_2F2AB8 + +### FUNC 0008D280 - 0008D286 (6 bytes) name=._ZNKSs5c_strEv +0008D280: jmp cs:off_2F2AC0 + +### FUNC 0008D290 - 0008D296 (6 bytes) name=._ZNSt14_Bit_referenceC2EPmm +0008D290: jmp cs:off_2F2AC8 + +### FUNC 0008D2A0 - 0008D2A6 (6 bytes) name=._Znam +0008D2A0: jmp cs:off_2F2AD0 + +### FUNC 0008D2B0 - 0008D2B6 (6 bytes) name=._ZN6serial6Serial10SerialImpl9availableEv +0008D2B0: jmp cs:off_2F2AD8 + +### FUNC 0008D2C0 - 0008D2C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +0008D2C0: jmp cs:off_2F2AE0 + +### FUNC 0008D2D0 - 0008D2D6 (6 bytes) name=._ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15token_type_nameENS9_10token_typeE +0008D2D0: jmp cs:off_2F2AE8 + +### FUNC 0008D2E0 - 0008D2E6 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE9constructISsJSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +0008D2E0: jmp cs:off_2F2AF0 + +### FUNC 0008D2F0 - 0008D2F6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEpLERKl +0008D2F0: jmp cs:off_2F2AF8 + +### FUNC 0008D300 - 0008D306 (6 bytes) name=._ZN9__gnu_cxxeqIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +0008D300: jmp cs:off_2F2B00 + +### FUNC 0008D310 - 0008D316 (6 bytes) name=._ZSt7advanceIPhiEvRT_T0_ +0008D310: jmp cs:off_2F2B08 + +### FUNC 0008D320 - 0008D326 (6 bytes) name=._ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEElEvRT_T0_St26random_access_iterator_tag +0008D320: jmp cs:off_2F2B10 + +### FUNC 0008D330 - 0008D336 (6 bytes) name=._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +0008D330: jmp cs:off_2F2B18 + +### FUNC 0008D340 - 0008D346 (6 bytes) name=._ZSt14__copy_move_a2ILb1EPhS0_ET1_T0_S2_S1_ +0008D340: jmp cs:off_2F2B20 + +### FUNC 0008D350 - 0008D356 (6 bytes) name=._ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESB_EET0_T_SE_SD_ +0008D350: jmp cs:off_2F2B28 + +### FUNC 0008D360 - 0008D366 (6 bytes) name=._ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE5_M_eqEv +0008D360: jmp cs:off_2F2B30 + +### FUNC 0008D370 - 0008D376 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIP19struct_TerminalListS1_SaIS0_EET0_T_S4_S3_RT1_ +0008D370: jmp cs:off_2F2B38 + +### FUNC 0008D380 - 0008D386 (6 bytes) name=._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +0008D380: jmp cs:off_2F2B40 + +### FUNC 0008D390 - 0008D396 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +0008D390: jmp cs:off_2F2B48 + +### FUNC 0008D3A0 - 0008D3A6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRlEEEvDpOT_ +0008D3A0: jmp cs:off_2F2B50 + +### FUNC 0008D3B0 - 0008D3B6 (6 bytes) name=._ZN10CMagDevice16StopProcessImageEv +0008D3B0: jmp cs:off_2F2B58 + +### FUNC 0008D3C0 - 0008D3C6 (6 bytes) name=._ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSH_vEEOSC_OT0_ +0008D3C0: jmp cs:off_2F2B60 + +### FUNC 0008D3D0 - 0008D3D6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS8_EEvPT_ +0008D3D0: jmp cs:off_2F2B68 + +### FUNC 0008D3E0 - 0008D3E6 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_ +0008D3E0: jmp cs:off_2F2B70 + +### FUNC 0008D3F0 - 0008D3F6 (6 bytes) name=._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EcvbEv +0008D3F0: jmp cs:off_2F2B78 + +### FUNC 0008D400 - 0008D406 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKdLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008D400: jmp cs:off_2F2B80 + +### FUNC 0008D410 - 0008D416 (6 bytes) name=._ZN14EloMotorDevice10limitResetEv +0008D410: jmp cs:off_2F2B88 + +### FUNC 0008D420 - 0008D426 (6 bytes) name=._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +0008D420: jmp cs:off_2F2B90 + +### FUNC 0008D430 - 0008D436 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E7releaseEv +0008D430: jmp cs:off_2F2B98 + +### FUNC 0008D440 - 0008D446 (6 bytes) name=._ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +0008D440: jmp cs:off_2F2BA0 + +### FUNC 0008D450 - 0008D456 (6 bytes) name=._ZStneIhEbRKSaIT_ES3_ +0008D450: jmp cs:off_2F2BA8 + +### FUNC 0008D460 - 0008D466 (6 bytes) name=._ZdlPv +0008D460: jmp cs:off_2F2BB0 + +### FUNC 0008D470 - 0008D476 (6 bytes) name=._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8key_compEv +0008D470: jmp cs:off_2F2BB8 + +### FUNC 0008D480 - 0008D486 (6 bytes) name=._ZNSt10_Iter_baseIPmLb0EE7_S_baseES0_ +0008D480: jmp cs:off_2F2BC0 + +### FUNC 0008D490 - 0008D496 (6 bytes) name=._ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv +0008D490: jmp cs:off_2F2BC8 + +### FUNC 0008D4A0 - 0008D4A6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5beginEv +0008D4A0: jmp cs:off_2F2BD0 + +### FUNC 0008D4B0 - 0008D4B6 (6 bytes) name=._ZSt6fill_nIP19struct_TerminalListmS0_ET_S2_T0_RKT1_ +0008D4B0: jmp cs:off_2F2BD8 + +### FUNC 0008D4C0 - 0008D4C6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_ +0008D4C0: jmp cs:off_2F2BE0 + +### FUNC 0008D4D0 - 0008D4D6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJEEEPT_DpOT0_ +0008D4D0: jmp cs:off_2F2BE8 + +### FUNC 0008D4E0 - 0008D4E6 (6 bytes) name=._ZNSs7reserveEm +0008D4E0: jmp cs:off_2F2BF0 + +### FUNC 0008D4F0 - 0008D4F6 (6 bytes) name=._ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_ +0008D4F0: jmp cs:off_2F2BF8 + +### FUNC 0008D500 - 0008D506 (6 bytes) name=._ZN10CMagDevice15SetColorPaletteE12ColorPalette +0008D500: jmp cs:off_2F2C00 + +### FUNC 0008D510 - 0008D516 (6 bytes) name=._ZStmiRKSt18_Bit_iterator_baseS1_ +0008D510: jmp cs:off_2F2C08 + +### FUNC 0008D520 - 0008D526 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2EOS2_ +0008D520: jmp cs:off_2F2C10 + +### FUNC 0008D530 - 0008D536 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +0008D530: jmp cs:off_2F2C18 + +### FUNC 0008D540 - 0008D546 (6 bytes) name=._ZN6serial6Serial10SerialImpl10readUnlockEv +0008D540: jmp cs:off_2F2C20 + +### FUNC 0008D550 - 0008D556 (6 bytes) name=._ZSt18__do_alloc_on_copyISaIhEEvRT_RKS1_St17integral_constantIbLb0EE +0008D550: jmp cs:off_2F2C28 + +### FUNC 0008D560 - 0008D566 (6 bytes) name=._ZSt7forwardIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +0008D560: jmp cs:off_2F2C30 + +### FUNC 0008D570 - 0008D576 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +0008D570: jmp cs:off_2F2C38 + +### FUNC 0008D580 - 0008D586 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb1EEEm +0008D580: jmp cs:off_2F2C40 + +### FUNC 0008D590 - 0008D596 (6 bytes) name=._ZSt27__uninitialized_default_n_aIPhmhEvT_T0_RSaIT1_E +0008D590: jmp cs:off_2F2C48 + +### FUNC 0008D5A0 - 0008D5A6 (6 bytes) name=._ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_ +0008D5A0: jmp cs:off_2F2C50 + +### FUNC 0008D5B0 - 0008D5B6 (6 bytes) name=._ZN6serial6Serial10SerialImpl11writeUnlockEv +0008D5B0: jmp cs:off_2F2C58 + +### FUNC 0008D5C0 - 0008D5C6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEppEv +0008D5C0: jmp cs:off_2F2C60 + +### FUNC 0008D5D0 - 0008D5D6 (6 bytes) name=._ZNSt18condition_variable10notify_allEv +0008D5D0: jmp cs:off_2F2C68 + +### FUNC 0008D5E0 - 0008D5E6 (6 bytes) name=._ZN14EloEEROMDeviceC2Ev +0008D5E0: jmp cs:off_2F2C70 + +### FUNC 0008D5F0 - 0008D5F6 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2ERKS1_ +0008D5F0: jmp cs:off_2F2C78 + +### FUNC 0008D600 - 0008D606 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE7reserveEm +0008D600: jmp cs:off_2F2C80 + +### FUNC 0008D610 - 0008D616 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSI_ +0008D610: jmp cs:off_2F2C88 + +### FUNC 0008D620 - 0008D626 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_ +0008D620: jmp cs:off_2F2C90 + +### FUNC 0008D630 - 0008D636 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9_S_selectIKS8_EENSt9enable_ifIXntsrNS9_15__select_helperIT_EE5valueESE_E4typeERSE_ +0008D630: jmp cs:off_2F2C98 + +### FUNC 0008D640 - 0008D646 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS9_EET0_T_ +0008D640: jmp cs:off_2F2CA0 + +### FUNC 0008D650 - 0008D656 (6 bytes) name=.__assert_fail +0008D650: jmp cs:off_2F2CA8 + +### FUNC 0008D660 - 0008D666 (6 bytes) name=._ZSt14__copy_move_a2ILb0EPhS0_ET1_T0_S2_S1_ +0008D660: jmp cs:off_2F2CB0 + +### FUNC 0008D670 - 0008D676 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2Ev +0008D670: jmp cs:off_2F2CB8 + +### FUNC 0008D680 - 0008D686 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_ +0008D680: jmp cs:off_2F2CC0 + +### FUNC 0008D690 - 0008D696 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm +0008D690: jmp cs:off_2F2CC8 + +### FUNC 0008D6A0 - 0008D6A6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +0008D6A0: jmp cs:off_2F2CD0 + +### FUNC 0008D6B0 - 0008D6B6 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m +0008D6B0: jmp cs:off_2F2CD8 + +### FUNC 0008D6C0 - 0008D6C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEED2Ev +0008D6C0: jmp cs:off_2F2CE0 + +### FUNC 0008D6D0 - 0008D6D6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base +0008D6D0: jmp cs:off_2F2CE8 + +### FUNC 0008D6E0 - 0008D6E6 (6 bytes) name=._ZNSt6vectorI19struct_TerminalListSaIS0_EEixEm +0008D6E0: jmp cs:off_2F2CF0 + +### FUNC 0008D6F0 - 0008D6F6 (6 bytes) name=._ZN21EloTCMHeartBeatDeviceD2Ev +0008D6F0: jmp cs:off_2F2CF8 + +### FUNC 0008D700 - 0008D706 (6 bytes) name=._ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E +0008D700: jmp cs:off_2F2D00 + +### FUNC 0008D710 - 0008D716 (6 bytes) name=._ZNSt6vectorIhSaIhEE18_M_insert_dispatchIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St12__false_type +0008D710: jmp cs:off_2F2D08 + +### FUNC 0008D720 - 0008D726 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE7destroyISC_EEvPT_ +0008D720: jmp cs:off_2F2D10 + +### FUNC 0008D730 - 0008D736 (6 bytes) name=._ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ERS9_ +0008D730: jmp cs:off_2F2D18 + +### FUNC 0008D740 - 0008D746 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +0008D740: jmp cs:off_2F2D20 + +### FUNC 0008D750 - 0008D756 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8max_sizeEv +0008D750: jmp cs:off_2F2D28 + +### FUNC 0008D760 - 0008D766 (6 bytes) name=._ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +0008D760: jmp cs:off_2F2D30 + +### FUNC 0008D770 - 0008D776 (6 bytes) name=._ZSt4swapISt9_Any_dataEvRT_S2_ +0008D770: jmp cs:off_2F2D38 + +### FUNC 0008D780 - 0008D786 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10_S_destroyIS5_EENSt9enable_ifIXsrNS7_16__destroy_helperIT_EE5valueEvE4typeERS6_PSB_ +0008D780: jmp cs:off_2F2D40 + +### FUNC 0008D790 - 0008D796 (6 bytes) name=._ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_ +0008D790: jmp cs:off_2F2D48 + +### FUNC 0008D7A0 - 0008D7A6 (6 bytes) name=._ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJRKS7_EEvPT_DpOT0_ +0008D7A0: jmp cs:off_2F2D50 + +### FUNC 0008D7B0 - 0008D7B6 (6 bytes) name=._ZNKSt6vectorISsSaISsEE5beginEv +0008D7B0: jmp cs:off_2F2D58 + +### FUNC 0008D7C0 - 0008D7C6 (6 bytes) name=._ZNKSt13_Bit_iteratormiEl +0008D7C0: jmp cs:off_2F2D60 + +### FUNC 0008D7D0 - 0008D7D6 (6 bytes) name=._ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE +0008D7D0: jmp cs:off_2F2D68 + +### FUNC 0008D7E0 - 0008D7E6 (6 bytes) name=.MAG_GetFrameStatisticalData +0008D7E0: jmp cs:off_2F2D70 + +### FUNC 0008D7F0 - 0008D7F6 (6 bytes) name=._ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE +0008D7F0: jmp cs:off_2F2D78 + +### FUNC 0008D800 - 0008D806 (6 bytes) name=._ZN10CMagDevice22SetEnvTempEstimateModeEii +0008D800: jmp cs:off_2F2D80 + +### FUNC 0008D810 - 0008D816 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2Ev +0008D810: jmp cs:off_2F2D88 + +### FUNC 0008D820 - 0008D826 (6 bytes) name=._ZSt7advanceIPKhmEvRT_T0_ +0008D820: jmp cs:off_2F2D90 + +### FUNC 0008D830 - 0008D836 (6 bytes) name=._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +0008D830: jmp cs:off_2F2D98 + +### FUNC 0008D840 - 0008D846 (6 bytes) name=._ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type +0008D840: jmp cs:off_2F2DA0 + +### FUNC 0008D850 - 0008D856 (6 bytes) name=._ZN8nlohmann14adl_serializerIdvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERdEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +0008D850: jmp cs:off_2F2DA8 + +### FUNC 0008D860 - 0008D866 (6 bytes) name=._ZSt23__copy_move_backward_a2ILb0EPPcS1_ET1_T0_S3_S2_ +0008D860: jmp cs:off_2F2DB0 + +### FUNC 0008D870 - 0008D876 (6 bytes) name=._ZNKSt6chrono8durationIlSt5ratioILl1ELl1EEE5countEv +0008D870: jmp cs:off_2F2DB8 + +### FUNC 0008D880 - 0008D886 (6 bytes) name=._ZNSaIhEC2ERKS_ +0008D880: jmp cs:off_2F2DC0 + +### FUNC 0008D890 - 0008D896 (6 bytes) name=._ZSt7forwardIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +0008D890: jmp cs:off_2F2DC8 + +### FUNC 0008D8A0 - 0008D8A6 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIEEEPT_DpOT0_ENKUlPSE_E_clESK_ +0008D8A0: jmp cs:off_2F2DD0 + +### FUNC 0008D8B0 - 0008D8B6 (6 bytes) name=.MAG_GetRectTemperatureInfo +0008D8B0: jmp cs:off_2F2DD8 + +### FUNC 0008D8C0 - 0008D8C6 (6 bytes) name=._ZN13TCMPresetData9setSerialESs +0008D8C0: jmp cs:off_2F2DE0 + +### FUNC 0008D8D0 - 0008D8D6 (6 bytes) name=._ZNSt11unique_lockISt5mutexED2Ev +0008D8D0: jmp cs:off_2F2DE8 + +### FUNC 0008D8E0 - 0008D8E6 (6 bytes) name=._ZNKSt6vectorI19struct_TerminalListSaIS0_EE12_M_check_lenEmPKc +0008D8E0: jmp cs:off_2F2DF0 + +### FUNC 0008D8F0 - 0008D8F6 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE10_S_destroyIiEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +0008D8F0: jmp cs:off_2F2DF8 + +### FUNC 0008D900 - 0008D906 (6 bytes) name=._ZNSaIiEC2Ev +0008D900: jmp cs:off_2F2E00 + +### FUNC 0008D910 - 0008D916 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_ESJ_RS1_ +0008D910: jmp cs:off_2F2E08 + +### FUNC 0008D920 - 0008D926 (6 bytes) name=._ZN19EloTCMUpdaterDevice14completeUpdateEv +0008D920: jmp cs:off_2F2E10 + +### FUNC 0008D930 - 0008D936 (6 bytes) name=._ZNSt10_Iter_baseISt19_Bit_const_iteratorLb0EE7_S_baseES0_ +0008D930: jmp cs:off_2F2E18 + +### FUNC 0008D940 - 0008D946 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +0008D940: jmp cs:off_2F2E20 + +### FUNC 0008D950 - 0008D956 (6 bytes) name=.__cxa_rethrow +0008D950: jmp cs:off_2F2E28 + +### FUNC 0008D960 - 0008D966 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPSsES1_ET0_T_S4_S3_ +0008D960: jmp cs:off_2F2E30 + +### FUNC 0008D970 - 0008D976 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JS7_EEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +0008D970: jmp cs:off_2F2E38 + +### FUNC 0008D980 - 0008D986 (6 bytes) name=._ZNKSs4sizeEv +0008D980: jmp cs:off_2F2E40 + +### FUNC 0008D990 - 0008D996 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_ +0008D990: jmp cs:off_2F2E48 + +### FUNC 0008D9A0 - 0008D9A6 (6 bytes) name=._ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_ +0008D9A0: jmp cs:off_2F2E50 + +### FUNC 0008D9B0 - 0008D9B6 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +0008D9B0: jmp cs:off_2F2E58 + +### FUNC 0008D9C0 - 0008D9C6 (6 bytes) name=._ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IKS1_EEOT_ +0008D9C0: jmp cs:off_2F2E60 + +### FUNC 0008D9D0 - 0008D9D6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRlEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008D9D0: jmp cs:off_2F2E68 + +### FUNC 0008D9E0 - 0008D9E6 (6 bytes) name=._ZNSt4pairIKSsiEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EES5_IJDpT0_EE +0008D9E0: jmp cs:off_2F2E70 + +### FUNC 0008D9F0 - 0008D9F6 (6 bytes) name=._ZNSt6chronoltIlSt5ratioILl1ELl1000000000EElS2_EEbRKNS_8durationIT_T0_EERKNS3_IT1_T2_EE +0008D9F0: jmp cs:off_2F2E78 + +### FUNC 0008DA00 - 0008DA06 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE7destroyISA_EEvPT_ +0008DA00: jmp cs:off_2F2E80 + +### FUNC 0008DA10 - 0008DA16 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2Ev +0008DA10: jmp cs:off_2F2E88 + +### FUNC 0008DA20 - 0008DA26 (6 bytes) name=.cfsetspeed +0008DA20: jmp cs:off_2F2E90 + +### FUNC 0008DA30 - 0008DA36 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERKSP_ +0008DA30: jmp cs:off_2F2E98 + +### FUNC 0008DA40 - 0008DA46 (6 bytes) name=._ZNKSt11unique_lockISt5mutexE5mutexEv +0008DA40: jmp cs:off_2F2EA0 + +### FUNC 0008DA50 - 0008DA56 (6 bytes) name=._ZNSt8ios_base4InitC1Ev +0008DA50: jmp cs:off_2F2EA8 + +### FUNC 0008DA60 - 0008DA66 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRdEEEvDpOT_ +0008DA60: jmp cs:off_2F2EB0 + +### FUNC 0008DA70 - 0008DA76 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +0008DA70: jmp cs:off_2F2EB8 + +### FUNC 0008DA80 - 0008DA86 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_ +0008DA80: jmp cs:off_2F2EC0 + +### FUNC 0008DA90 - 0008DA96 (6 bytes) name=.MAG_GetTerminalList +0008DA90: jmp cs:off_2F2EC8 + +### FUNC 0008DAA0 - 0008DAA6 (6 bytes) name=._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE4findERS5_ +0008DAA0: jmp cs:off_2F2ED0 + +### FUNC 0008DAB0 - 0008DAB6 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +0008DAB0: jmp cs:off_2F2ED8 + +### FUNC 0008DAC0 - 0008DAC6 (6 bytes) name=._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +0008DAC0: jmp cs:off_2F2EE0 + +### FUNC 0008DAD0 - 0008DAD6 (6 bytes) name=._ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_ +0008DAD0: jmp cs:off_2F2EE8 + +### FUNC 0008DAE0 - 0008DAE6 (6 bytes) name=._ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +0008DAE0: jmp cs:off_2F2EF0 + +### FUNC 0008DAF0 - 0008DAF6 (6 bytes) name=._ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008DAF0: jmp cs:off_2F2EF8 + +### FUNC 0008DB00 - 0008DB06 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +0008DB00: jmp cs:off_2F2F00 + +### FUNC 0008DB10 - 0008DB16 (6 bytes) name=._ZN21EloTCMHeartBeatDevice9stopCheckEv +0008DB10: jmp cs:off_2F2F08 + +### FUNC 0008DB20 - 0008DB26 (6 bytes) name=._ZNKSt13_Bit_iteratordeEv +0008DB20: jmp cs:off_2F2F10 + +### FUNC 0008DB30 - 0008DB36 (6 bytes) name=._ZNK6serial6Serial10SerialImpl11getBytesizeEv +0008DB30: jmp cs:off_2F2F18 + +### FUNC 0008DB40 - 0008DB46 (6 bytes) name=._ZNSt8__detail13_Equal_helperISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsEmLb1EE9_S_equalsERKS6_RKS4_RS2_mPNS_10_Hash_nodeIS3_Lb1EEE +0008DB40: jmp cs:off_2F2F20 + +### FUNC 0008DB50 - 0008DB56 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEv +0008DB50: jmp cs:off_2F2F28 + +### FUNC 0008DB60 - 0008DB66 (6 bytes) name=._ZN9__gnu_cxxeqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +0008DB60: jmp cs:off_2F2F30 + +### FUNC 0008DB70 - 0008DB76 (6 bytes) name=._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv +0008DB70: jmp cs:off_2F2F38 + +### FUNC 0008DB80 - 0008DB86 (6 bytes) name=._ZSt12__get_helperILm1EP10SerialPortJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +0008DB80: jmp cs:off_2F2F40 + +### FUNC 0008DB90 - 0008DB96 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6parserINS_6detail22iterator_input_adapterIPhEEEENS8_6parserIS6_T_EESD_St8functionIFbiNS8_13parse_event_tERS6_EEbb +0008DB90: jmp cs:off_2F2F48 + +### FUNC 0008DBA0 - 0008DBA6 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008DBA0: jmp cs:off_2F2F50 + +### FUNC 0008DBB0 - 0008DBB6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8allocateEmPKv +0008DBB0: jmp cs:off_2F2F58 + +### FUNC 0008DBC0 - 0008DBC6 (6 bytes) name=._ZSt20uninitialized_fill_nIPhmhEvT_T0_RKT1_ +0008DBC0: jmp cs:off_2F2F60 + +### FUNC 0008DBD0 - 0008DBD6 (6 bytes) name=._ZSt8_DestroyISsEvPT_ +0008DBD0: jmp cs:off_2F2F68 + +### FUNC 0008DBE0 - 0008DBE6 (6 bytes) name=.MAG_GetCamInfo +0008DBE0: jmp cs:off_2F2F70 + +### FUNC 0008DBF0 - 0008DBF6 (6 bytes) name=._ZN10SerialPort8isOpenedEv +0008DBF0: jmp cs:off_2F2F78 + +### FUNC 0008DC00 - 0008DC06 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJRS4_EESC_IJEEEEEvPT_DpOT0_ +0008DC00: jmp cs:off_2F2F80 + +### FUNC 0008DC10 - 0008DC16 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEE +0008DC10: jmp cs:off_2F2F88 + +### FUNC 0008DC20 - 0008DC26 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev +0008DC20: jmp cs:off_2F2F90 + +### FUNC 0008DC30 - 0008DC36 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2EmRKS8_ +0008DC30: jmp cs:off_2F2F98 + +### FUNC 0008DC40 - 0008DC46 (6 bytes) name=._ZNKSt11_Deque_baseIcSaIcEE20_M_get_map_allocatorEv +0008DC40: jmp cs:off_2F2FA0 + +### FUNC 0008DC50 - 0008DC56 (6 bytes) name=._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_ET0_T_SH_SG_ +0008DC50: jmp cs:off_2F2FA8 + +### FUNC 0008DC60 - 0008DC66 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8max_sizeEv +0008DC60: jmp cs:off_2F2FB0 + +### FUNC 0008DC70 - 0008DC76 (6 bytes) name=._ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS8_ +0008DC70: jmp cs:off_2F2FB8 + +### FUNC 0008DC80 - 0008DC86 (6 bytes) name=._ZNSaIP16TCMVirtualDeviceED2Ev +0008DC80: jmp cs:off_2F2FC0 + +### FUNC 0008DC90 - 0008DC96 (6 bytes) name=._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEdeEv +0008DC90: jmp cs:off_2F2FC8 + +### FUNC 0008DCA0 - 0008DCA6 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE9constructIiJiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +0008DCA0: jmp cs:off_2F2FD0 + +### FUNC 0008DCB0 - 0008DCB6 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_ED2Ev +0008DCB0: jmp cs:off_2F2FD8 + +### FUNC 0008DCC0 - 0008DCC6 (6 bytes) name=._ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IKS1_EEOT_ +0008DCC0: jmp cs:off_2F2FE0 + +### FUNC 0008DCD0 - 0008DCD6 (6 bytes) name=._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEC2EOS9_ +0008DCD0: jmp cs:off_2F2FE8 + +### FUNC 0008DCE0 - 0008DCE6 (6 bytes) name=._ZNSt10_Iter_baseISt13move_iteratorIPiELb1EE7_S_baseES2_ +0008DCE0: jmp cs:off_2F2FF0 + +### FUNC 0008DCF0 - 0008DCF6 (6 bytes) name=._ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh +0008DCF0: jmp cs:off_2F2FF8 + +### FUNC 0008DD00 - 0008DD06 (6 bytes) name=._ZNKSt7_Mem_fnIM10SerialPortFvvEEclIJEvEEvPS0_DpOT_ +0008DD00: jmp cs:off_2F3000 + +### FUNC 0008DD10 - 0008DD16 (6 bytes) name=._ZNSs4_Rep10_M_refdataEv +0008DD10: jmp cs:off_2F3008 + +### FUNC 0008DD20 - 0008DD26 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +0008DD20: jmp cs:off_2F3010 + +### FUNC 0008DD30 - 0008DD36 (6 bytes) name=._ZN10CMagDevice13DisLinkCameraEv +0008DD30: jmp cs:off_2F3018 + +### FUNC 0008DD40 - 0008DD46 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIRKSE_EEEPT_DpOT0_ENKUlPSE_E_clESM_ +0008DD40: jmp cs:off_2F3020 + +### FUNC 0008DD50 - 0008DD56 (6 bytes) name=._ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +0008DD50: jmp cs:off_2F3028 + +### FUNC 0008DD60 - 0008DD66 (6 bytes) name=._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +0008DD60: jmp cs:off_2F3030 + +### FUNC 0008DD70 - 0008DD76 (6 bytes) name=._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5beginEv +0008DD70: jmp cs:off_2F3038 + +### FUNC 0008DD80 - 0008DD86 (6 bytes) name=._ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag +0008DD80: jmp cs:off_2F3040 + +### FUNC 0008DD90 - 0008DD96 (6 bytes) name=._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED2Ev +0008DD90: jmp cs:off_2F3048 + +### FUNC 0008DDA0 - 0008DDA6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E +0008DDA0: jmp cs:off_2F3050 + +### FUNC 0008DDB0 - 0008DDB6 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPN6serial8PortInfoEES3_ET0_T_S6_S5_ +0008DDB0: jmp cs:off_2F3058 + +### FUNC 0008DDC0 - 0008DDC6 (6 bytes) name=._ZN6serial6Serial10SerialImpl5getCDEv +0008DDC0: jmp cs:off_2F3060 + +### FUNC 0008DDD0 - 0008DDD6 (6 bytes) name=.read +0008DDD0: jmp cs:off_2F3068 + +### FUNC 0008DDE0 - 0008DDE6 (6 bytes) name=._ZNKSt6vectorIbSaIbEE5beginEv +0008DDE0: jmp cs:off_2F3070 + +### FUNC 0008DDF0 - 0008DDF6 (6 bytes) name=._ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IS1_EEOT_ +0008DDF0: jmp cs:off_2F3078 + +### FUNC 0008DE00 - 0008DE06 (6 bytes) name=._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev +0008DE00: jmp cs:off_2F3080 + +### FUNC 0008DE10 - 0008DE16 (6 bytes) name=._ZN17ThermalController11getInstanceEv +0008DE10: jmp cs:off_2F3088 + +### FUNC 0008DE20 - 0008DE26 (6 bytes) name=.malloc +0008DE20: jmp cs:off_2F3090 + +### FUNC 0008DE30 - 0008DE36 (6 bytes) name=._ZNSt6chronomiINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEENS3_IlS4_ILl1ELl1EEEEEENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_SA_EERKNSE_ISF_SB_EE +0008DE30: jmp cs:off_2F3098 + +### FUNC 0008DE40 - 0008DE46 (6 bytes) name=._ZNSt13_Bit_iteratorpLEl +0008DE40: jmp cs:off_2F30A0 + +### FUNC 0008DE50 - 0008DE56 (6 bytes) name=.tcsendbreak +0008DE50: jmp cs:off_2F30A8 + +### FUNC 0008DE60 - 0008DE66 (6 bytes) name=._ZN13TCMPresetData8decodingEv +0008DE60: jmp cs:off_2F30B0 + +### FUNC 0008DE70 - 0008DE76 (6 bytes) name=._ZN11CMagService15GetTerminalListEP19struct_TerminalListj +0008DE70: jmp cs:off_2F30B8 + +### FUNC 0008DE80 - 0008DE86 (6 bytes) name=._ZNSt5arrayIcLm9EE4dataEv +0008DE80: jmp cs:off_2F30C0 + +### FUNC 0008DE90 - 0008DE96 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPiSt13move_iteratorIS0_EET0_T_ +0008DE90: jmp cs:off_2F30C8 + +### FUNC 0008DEA0 - 0008DEA6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm +0008DEA0: jmp cs:off_2F30D0 + +### FUNC 0008DEB0 - 0008DEB6 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv +0008DEB0: jmp cs:off_2F30D8 + +### FUNC 0008DEC0 - 0008DEC6 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h2Ev +0008DEC0: jmp cs:off_2F30E0 + +### FUNC 0008DED0 - 0008DED6 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE11_M_allocateEm +0008DED0: jmp cs:off_2F30E8 + +### FUNC 0008DEE0 - 0008DEE6 (6 bytes) name=._ZNK6serial6Serial10SerialImpl10getTimeoutEv +0008DEE0: jmp cs:off_2F30F0 + +### FUNC 0008DEF0 - 0008DEF6 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev +0008DEF0: jmp cs:off_2F30F8 + +### FUNC 0008DF00 - 0008DF06 (6 bytes) name=._ZNSt5dequeIcSaIcEE16_M_push_back_auxIJcEEEvDpOT_ +0008DF00: jmp cs:off_2F3100 + +### FUNC 0008DF10 - 0008DF16 (6 bytes) name=._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEC2EOS9_ +0008DF10: jmp cs:off_2F3108 + +### FUNC 0008DF20 - 0008DF26 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +0008DF20: jmp cs:off_2F3110 + +### FUNC 0008DF30 - 0008DF36 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERKSK_ +0008DF30: jmp cs:off_2F3118 + +### FUNC 0008DF40 - 0008DF46 (6 bytes) name=._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEv +0008DF40: jmp cs:off_2F3120 + +### FUNC 0008DF50 - 0008DF56 (6 bytes) name=._ZNKSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +0008DF50: jmp cs:off_2F3128 + +### FUNC 0008DF60 - 0008DF66 (6 bytes) name=._ZN10CMagDevice21GetOutputBMPdataRGB24EPhji +0008DF60: jmp cs:off_2F3130 + +### FUNC 0008DF70 - 0008DF76 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_headERS2_ +0008DF70: jmp cs:off_2F3138 + +### FUNC 0008DF80 - 0008DF86 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPP16TCMVirtualDeviceES5_EET0_T_S8_S7_ +0008DF80: jmp cs:off_2F3140 + +### FUNC 0008DF90 - 0008DF96 (6 bytes) name=._ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_SA_ +0008DF90: jmp cs:off_2F3148 + +### FUNC 0008DFA0 - 0008DFA6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_ +0008DFA0: jmp cs:off_2F3150 + +### FUNC 0008DFB0 - 0008DFB6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +0008DFB0: jmp cs:off_2F3158 + +### FUNC 0008DFC0 - 0008DFC6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSA_EEEPSt13_Rb_tree_nodeISA_EDpOT_ +0008DFC0: jmp cs:off_2F3160 + +### FUNC 0008DFD0 - 0008DFD6 (6 bytes) name=._ZStorSt13_Ios_OpenmodeS_ +0008DFD0: jmp cs:off_2F3168 + +### FUNC 0008DFE0 - 0008DFE6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +0008DFE0: jmp cs:off_2F3170 + +### FUNC 0008DFF0 - 0008DFF6 (6 bytes) name=._ZNSt6chrono3_V212system_clock3nowEv +0008DFF0: jmp cs:off_2F3178 + +### FUNC 0008E000 - 0008E006 (6 bytes) name=.MAG_SetFixPara +0008E000: jmp cs:off_2F3180 + +### FUNC 0008E010 - 0008E016 (6 bytes) name=._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEneERKS9_ +0008E010: jmp cs:off_2F3188 + +### FUNC 0008E020 - 0008E026 (6 bytes) name=.MAG_SetFFCMode +0008E020: jmp cs:off_2F3190 + +### FUNC 0008E030 - 0008E036 (6 bytes) name=._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE7destroyIS1_EEvRS2_PT_ +0008E030: jmp cs:off_2F3198 + +### FUNC 0008E040 - 0008E046 (6 bytes) name=._ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv +0008E040: jmp cs:off_2F31A0 + +### FUNC 0008E050 - 0008E056 (6 bytes) name=._ZNSt10_Iter_baseISt13move_iteratorIPhELb1EE7_S_baseES2_ +0008E050: jmp cs:off_2F31A8 + +### FUNC 0008E060 - 0008E066 (6 bytes) name=._ZN10CMagDevice10GetFixParaEP14struct_FixPara +0008E060: jmp cs:off_2F31B0 + +### FUNC 0008E070 - 0008E076 (6 bytes) name=._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +0008E070: jmp cs:off_2F31B8 + +### FUNC 0008E080 - 0008E086 (6 bytes) name=._ZNSt6vectorISsSaISsEEC2Ev +0008E080: jmp cs:off_2F31C0 + +### FUNC 0008E090 - 0008E096 (6 bytes) name=._ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +0008E090: jmp cs:off_2F31C8 + +### FUNC 0008E0A0 - 0008E0A6 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE17_M_create_storageEm +0008E0A0: jmp cs:off_2F31D0 + +### FUNC 0008E0B0 - 0008E0B6 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE12_S_constructIhJRKhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +0008E0B0: jmp cs:off_2F31D8 + +### FUNC 0008E0C0 - 0008E0C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE10deallocateEPSA_m +0008E0C0: jmp cs:off_2F31E0 + +### FUNC 0008E0D0 - 0008E0D6 (6 bytes) name=._ZNKSt8__detail18_Mod_range_hashingclEmm +0008E0D0: jmp cs:off_2F31E8 + +### FUNC 0008E0E0 - 0008E0E6 (6 bytes) name=._ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base +0008E0E0: jmp cs:off_2F31F0 + +### FUNC 0008E0F0 - 0008E0F6 (6 bytes) name=._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +0008E0F0: jmp cs:off_2F31F8 + +### FUNC 0008E100 - 0008E106 (6 bytes) name=._ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE +0008E100: jmp cs:off_2F3200 + +### FUNC 0008E110 - 0008E116 (6 bytes) name=._ZN10CMagDevice32GetCurrentCameraInnerTemperatureEv +0008E110: jmp cs:off_2F3208 + +### FUNC 0008E120 - 0008E126 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8allocateEmPKv +0008E120: jmp cs:off_2F3210 + +### FUNC 0008E130 - 0008E136 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiED2Ev +0008E130: jmp cs:off_2F3218 + +### FUNC 0008E140 - 0008E146 (6 bytes) name=._ZNSt13_Bit_iteratormmEv +0008E140: jmp cs:off_2F3220 + +### FUNC 0008E150 - 0008E156 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKlLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008E150: jmp cs:off_2F3228 + +### FUNC 0008E160 - 0008E166 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +0008E160: jmp cs:off_2F3230 + +### FUNC 0008E170 - 0008E176 (6 bytes) name=._ZSt4moveIRSt11_Tuple_implILm1EJEEEONSt16remove_referenceIT_E4typeEOS4_ +0008E170: jmp cs:off_2F3238 + +### FUNC 0008E180 - 0008E186 (6 bytes) name=._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv +0008E180: jmp cs:off_2F3240 + +### FUNC 0008E190 - 0008E196 (6 bytes) name=._ZNSs4_Rep9_S_createEmmRKSaIcE +0008E190: jmp cs:off_2F3248 + +### FUNC 0008E1A0 - 0008E1A6 (6 bytes) name=._ZN10CMagDevice17StartProcessImageEPFvjjjPvEiiS0_ +0008E1A0: jmp cs:off_2F3250 + +### FUNC 0008E1B0 - 0008E1B6 (6 bytes) name=.MAG_GetLineTemperatureInfo +0008E1B0: jmp cs:off_2F3258 + +### FUNC 0008E1C0 - 0008E1C6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_b +0008E1C0: jmp cs:off_2F3260 + +### FUNC 0008E1D0 - 0008E1D6 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +0008E1D0: jmp cs:off_2F3268 + +### FUNC 0008E1E0 - 0008E1E6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE3endEv +0008E1E0: jmp cs:off_2F3270 + +### FUNC 0008E1F0 - 0008E1F6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJRKSsEE7_M_tailERS2_ +0008E1F0: jmp cs:off_2F3278 + +### FUNC 0008E200 - 0008E206 (6 bytes) name=._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED2Ev +0008E200: jmp cs:off_2F3280 + +### FUNC 0008E210 - 0008E216 (6 bytes) name=._ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESB_EET0_T_SD_SC_ +0008E210: jmp cs:off_2F3288 + +### FUNC 0008E220 - 0008E226 (6 bytes) name=._ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +0008E220: jmp cs:off_2F3290 + +### FUNC 0008E230 - 0008E236 (6 bytes) name=._ZNSt18_Bit_iterator_baseC2EPmj +0008E230: jmp cs:off_2F3298 + +### FUNC 0008E240 - 0008E246 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2ERKS8_ +0008E240: jmp cs:off_2F32A0 + +### FUNC 0008E250 - 0008E256 (6 bytes) name=._ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +0008E250: jmp cs:off_2F32A8 + +### FUNC 0008E260 - 0008E266 (6 bytes) name=._ZN16TCMVirtualDevice8getFrameEv +0008E260: jmp cs:off_2F32B0 + +### FUNC 0008E270 - 0008E276 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS6_S8_EE +0008E270: jmp cs:off_2F32B8 + +### FUNC 0008E280 - 0008E286 (6 bytes) name=._ZNSt6vectorIhSaIhEEC2Ev +0008E280: jmp cs:off_2F32C0 + +### FUNC 0008E290 - 0008E296 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev +0008E290: jmp cs:off_2F32C8 + +### FUNC 0008E2A0 - 0008E2A6 (6 bytes) name=._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +0008E2A0: jmp cs:off_2F32D0 + +### FUNC 0008E2B0 - 0008E2B6 (6 bytes) name=._ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEEC1ERKS6_ +0008E2B0: jmp cs:off_2F32D8 + +### FUNC 0008E2C0 - 0008E2C6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_tailERS6_ +0008E2C0: jmp cs:off_2F32E0 + +### FUNC 0008E2D0 - 0008E2D6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE15_M_erase_at_endEPS6_ +0008E2D0: jmp cs:off_2F32E8 + +### FUNC 0008E2E0 - 0008E2E6 (6 bytes) name=._ZN6serial22PortNotOpenedExceptionC2EPKc +0008E2E0: jmp cs:off_2F32F0 + +### FUNC 0008E2F0 - 0008E2F6 (6 bytes) name=._ZNSt13_Bit_iteratorC2Ev +0008E2F0: jmp cs:off_2F32F8 + +### FUNC 0008E300 - 0008E306 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJDnEEEvDpOT_ +0008E300: jmp cs:off_2F3300 + +### FUNC 0008E310 - 0008E316 (6 bytes) name=._ZNSt5mutex13native_handleEv +0008E310: jmp cs:off_2F3308 + +### FUNC 0008E320 - 0008E326 (6 bytes) name=._ZN18EloProximityDeviceD2Ev +0008E320: jmp cs:off_2F3310 + +### FUNC 0008E330 - 0008E336 (6 bytes) name=._ZNSaIN6serial8PortInfoEEC2Ev +0008E330: jmp cs:off_2F3318 + +### FUNC 0008E340 - 0008E346 (6 bytes) name=._ZSt4moveIRSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +0008E340: jmp cs:off_2F3320 + +### FUNC 0008E350 - 0008E356 (6 bytes) name=._ZN17ThermalController20getTemperatureInRectE4Rect +0008E350: jmp cs:off_2F3328 + +### FUNC 0008E360 - 0008E366 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPcEC2Ev +0008E360: jmp cs:off_2F3330 + +### FUNC 0008E370 - 0008E376 (6 bytes) name=._ZN9__gnu_cxxneIPKSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +0008E370: jmp cs:off_2F3338 + +### FUNC 0008E380 - 0008E386 (6 bytes) name=._ZSt8_DestroyIPiiEvT_S1_RSaIT0_E +0008E380: jmp cs:off_2F3340 + +### FUNC 0008E390 - 0008E396 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKSA_ +0008E390: jmp cs:off_2F3348 + +### FUNC 0008E3A0 - 0008E3A6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +0008E3A0: jmp cs:off_2F3350 + +### FUNC 0008E3B0 - 0008E3B6 (6 bytes) name=._ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +0008E3B0: jmp cs:off_2F3358 + +### FUNC 0008E3C0 - 0008E3C6 (6 bytes) name=.MAG_DisLinkCamera +0008E3C0: jmp cs:off_2F3360 + +### FUNC 0008E3D0 - 0008E3D6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv +0008E3D0: jmp cs:off_2F3368 + +### FUNC 0008E3E0 - 0008E3E6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE +0008E3E0: jmp cs:off_2F3370 + +### FUNC 0008E3F0 - 0008E3F6 (6 bytes) name=._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008E3F0: jmp cs:off_2F3378 + +### FUNC 0008E400 - 0008E406 (6 bytes) name=._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +0008E400: jmp cs:off_2F3380 + +### FUNC 0008E410 - 0008E416 (6 bytes) name=._ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_ +0008E410: jmp cs:off_2F3388 + +### FUNC 0008E420 - 0008E426 (6 bytes) name=._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE12_S_constructIS1_JRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_ +0008E420: jmp cs:off_2F3390 + +### FUNC 0008E430 - 0008E436 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +0008E430: jmp cs:off_2F3398 + +### FUNC 0008E440 - 0008E446 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv +0008E440: jmp cs:off_2F33A0 + +### FUNC 0008E450 - 0008E456 (6 bytes) name=.pthread_cond_timedwait +0008E450: jmp cs:off_2F33A8 + +### FUNC 0008E460 - 0008E466 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESK_IJEEEEEPNS4_10_Hash_nodeIS2_Lb1EEEDpOT_ +0008E460: jmp cs:off_2F33B0 + +### FUNC 0008E470 - 0008E476 (6 bytes) name=._ZN10CMagDeviceC2Ev +0008E470: jmp cs:off_2F33B8 + +### FUNC 0008E480 - 0008E486 (6 bytes) name=._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2Ev +0008E480: jmp cs:off_2F33C0 + +### FUNC 0008E490 - 0008E496 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_ +0008E490: jmp cs:off_2F33C8 + +### FUNC 0008E4A0 - 0008E4A6 (6 bytes) name=._ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_ +0008E4A0: jmp cs:off_2F33D0 + +### FUNC 0008E4B0 - 0008E4B6 (6 bytes) name=._ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +0008E4B0: jmp cs:off_2F33D8 + +### FUNC 0008E4C0 - 0008E4C6 (6 bytes) name=._ZNKSs7compareERKSs +0008E4C0: jmp cs:off_2F33E0 + +### FUNC 0008E4D0 - 0008E4D6 (6 bytes) name=._ZNSsC1ERKSs +0008E4D0: jmp cs:off_2F33E8 + +### FUNC 0008E4E0 - 0008E4E6 (6 bytes) name=._ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_St26random_access_iterator_tag +0008E4E0: jmp cs:off_2F33F0 + +### FUNC 0008E4F0 - 0008E4F6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEppEv +0008E4F0: jmp cs:off_2F33F8 + +### FUNC 0008E500 - 0008E506 (6 bytes) name=._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv +0008E500: jmp cs:off_2F3400 + +### FUNC 0008E510 - 0008E516 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +0008E510: jmp cs:off_2F3408 + +### FUNC 0008E520 - 0008E526 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS8_EENSt9enable_ifIXsrNSA_16__destroy_helperIT_EE5valueEvE4typeERS9_PSE_ +0008E520: jmp cs:off_2F3410 + +### FUNC 0008E530 - 0008E536 (6 bytes) name=._ZNSt6vectorIhSaIhEE7reserveEm +0008E530: jmp cs:off_2F3418 + +### FUNC 0008E540 - 0008E546 (6 bytes) name=._ZSt14__copy_move_a2ILb1EPiS0_ET1_T0_S2_S1_ +0008E540: jmp cs:off_2F3420 + +### FUNC 0008E550 - 0008E556 (6 bytes) name=.__cxa_atexit +0008E550: jmp cs:off_2F3428 + +### FUNC 0008E560 - 0008E566 (6 bytes) name=._ZNSt13runtime_errorC1ERKSs +0008E560: jmp cs:off_2F3430 + +### FUNC 0008E570 - 0008E576 (6 bytes) name=._ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS3_Lb1EEE +0008E570: jmp cs:off_2F3438 + +### FUNC 0008E580 - 0008E586 (6 bytes) name=._ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE +0008E580: jmp cs:off_2F3440 + +### FUNC 0008E590 - 0008E596 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +0008E590: jmp cs:off_2F3448 + +### FUNC 0008E5A0 - 0008E5A6 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev +0008E5A0: jmp cs:off_2F3450 + +### FUNC 0008E5B0 - 0008E5B6 (6 bytes) name=._ZnwmPv +0008E5B0: jmp cs:off_2F3458 + +### FUNC 0008E5C0 - 0008E5C6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJRKSE_EEEPT_DpOT0_ +0008E5C0: jmp cs:off_2F3460 + +### FUNC 0008E5D0 - 0008E5D6 (6 bytes) name=.MAG_GetEstimatedEnvTemp +0008E5D0: jmp cs:off_2F3468 + +### FUNC 0008E5E0 - 0008E5E6 (6 bytes) name=._ZSt7forwardIOSsEOT_RNSt16remove_referenceIS1_E4typeE +0008E5E0: jmp cs:off_2F3470 + +### FUNC 0008E5F0 - 0008E5F6 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPN6serial8PortInfoEES3_S2_ET0_T_S6_S5_RSaIT1_E +0008E5F0: jmp cs:off_2F3478 + +### FUNC 0008E600 - 0008E606 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixERSA_ +0008E600: jmp cs:off_2F3480 + +### FUNC 0008E610 - 0008E616 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm +0008E610: jmp cs:off_2F3488 + +### FUNC 0008E620 - 0008E626 (6 bytes) name=._ZNSt13move_iteratorIPhEC2ES0_ +0008E620: jmp cs:off_2F3490 + +### FUNC 0008E630 - 0008E636 (6 bytes) name=._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +0008E630: jmp cs:off_2F3498 + +### FUNC 0008E640 - 0008E646 (6 bytes) name=._ZNSt6vectorIhSaIhEE3endEv +0008E640: jmp cs:off_2F34A0 + +### FUNC 0008E650 - 0008E656 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implD2Ev +0008E650: jmp cs:off_2F34A8 + +### FUNC 0008E660 - 0008E666 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_ +0008E660: jmp cs:off_2F34B0 + +### FUNC 0008E670 - 0008E676 (6 bytes) name=._ZN10CMagDevice36EstimateUnderArmTempFromForeheadRectEjjjj +0008E670: jmp cs:off_2F34B8 + +### FUNC 0008E680 - 0008E686 (6 bytes) name=._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_ +0008E680: jmp cs:off_2F34C0 + +### FUNC 0008E690 - 0008E696 (6 bytes) name=._ZNKSt10_Select1stISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEclERKSA_ +0008E690: jmp cs:off_2F34C8 + +### FUNC 0008E6A0 - 0008E6A6 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE8allocateERSF_m +0008E6A0: jmp cs:off_2F34D0 + +### FUNC 0008E6B0 - 0008E6B6 (6 bytes) name=._ZNSs13_S_copy_charsEPcS_S_ +0008E6B0: jmp cs:off_2F34D8 + +### FUNC 0008E6C0 - 0008E6C6 (6 bytes) name=._ZNSt6threadD2Ev +0008E6C0: jmp cs:off_2F34E0 + +### FUNC 0008E6D0 - 0008E6D6 (6 bytes) name=._ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1000EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +0008E6D0: jmp cs:off_2F34E8 + +### FUNC 0008E6E0 - 0008E6E6 (6 bytes) name=._ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008E6E0: jmp cs:off_2F34F0 + +### FUNC 0008E6F0 - 0008E6F6 (6 bytes) name=._ZN9TCMDeviceD2Ev +0008E6F0: jmp cs:off_2F34F8 + +### FUNC 0008E700 - 0008E706 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSI_ +0008E700: jmp cs:off_2F3500 + +### FUNC 0008E710 - 0008E716 (6 bytes) name=._ZN10CMagDevice4LockEv +0008E710: jmp cs:off_2F3508 + +### FUNC 0008E720 - 0008E726 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_headERS2_ +0008E720: jmp cs:off_2F3510 + +### FUNC 0008E730 - 0008E736 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRdEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008E730: jmp cs:off_2F3518 + +### FUNC 0008E740 - 0008E746 (6 bytes) name=._ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS7_EEEEvEEOS_IT_E +0008E740: jmp cs:off_2F3520 + +### FUNC 0008E750 - 0008E756 (6 bytes) name=._ZN8nlohmann14adl_serializerIivE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEEiEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +0008E750: jmp cs:off_2F3528 + +### FUNC 0008E760 - 0008E766 (6 bytes) name=._ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_ +0008E760: jmp cs:off_2F3530 + +### FUNC 0008E770 - 0008E776 (6 bytes) name=._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +0008E770: jmp cs:off_2F3538 + +### FUNC 0008E780 - 0008E786 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +0008E780: jmp cs:off_2F3540 + +### FUNC 0008E790 - 0008E796 (6 bytes) name=._ZN19EloTCMUpdaterDevice11startUpdateEv +0008E790: jmp cs:off_2F3548 + +### FUNC 0008E7A0 - 0008E7A6 (6 bytes) name=._ZNSt8__detail12_Insert_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2Ev +0008E7A0: jmp cs:off_2F3550 + +### FUNC 0008E7B0 - 0008E7B6 (6 bytes) name=._ZN17ThermalController13setEmissivityEd +0008E7B0: jmp cs:off_2F3558 + +### FUNC 0008E7C0 - 0008E7C6 (6 bytes) name=._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSK_DpT1_EE +0008E7C0: jmp cs:off_2F3560 + +### FUNC 0008E7D0 - 0008E7D6 (6 bytes) name=._ZNSt13_Bit_iteratorC2EPmj +0008E7D0: jmp cs:off_2F3568 + +### FUNC 0008E7E0 - 0008E7E6 (6 bytes) name=.MAG_StopProcessImage +0008E7E0: jmp cs:off_2F3570 + +### FUNC 0008E7F0 - 0008E7F6 (6 bytes) name=._ZNKSt6vectorISsSaISsEEixEm +0008E7F0: jmp cs:off_2F3578 + +### FUNC 0008E800 - 0008E806 (6 bytes) name=._ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1000EEvEERKNS0_IT_T0_EE +0008E800: jmp cs:off_2F3580 + +### FUNC 0008E810 - 0008E816 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEC2ERKS3_ +0008E810: jmp cs:off_2F3588 + +### FUNC 0008E820 - 0008E826 (6 bytes) name=._ZNKSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +0008E820: jmp cs:off_2F3590 + +### FUNC 0008E830 - 0008E836 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt13_Rb_tree_nodeISA_E +0008E830: jmp cs:off_2F3598 + +### FUNC 0008E840 - 0008E846 (6 bytes) name=._ZNSt14__array_traitsIhLm4EE6_S_refERA4_Khm +0008E840: jmp cs:off_2F35A0 + +### FUNC 0008E850 - 0008E856 (6 bytes) name=._ZNSaIhED2Ev +0008E850: jmp cs:off_2F35A8 + +### FUNC 0008E860 - 0008E866 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +0008E860: jmp cs:off_2F35B0 + +### FUNC 0008E870 - 0008E876 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv +0008E870: jmp cs:off_2F35B8 + +### FUNC 0008E880 - 0008E886 (6 bytes) name=._ZNKSt6vectorIhSaIhEE5emptyEv +0008E880: jmp cs:off_2F35C0 + +### FUNC 0008E890 - 0008E896 (6 bytes) name=._ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEC1ERKS6_ +0008E890: jmp cs:off_2F35C8 + +### FUNC 0008E8A0 - 0008E8A6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhEC2ERKS1_ +0008E8A0: jmp cs:off_2F35D0 + +### FUNC 0008E8B0 - 0008E8B6 (6 bytes) name=._ZNSt6vectorIbSaIbEEC2Ev +0008E8B0: jmp cs:off_2F35D8 + +### FUNC 0008E8C0 - 0008E8C6 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E7releaseEv +0008E8C0: jmp cs:off_2F35E0 + +### FUNC 0008E8D0 - 0008E8D6 (6 bytes) name=.pthread_mutex_init +0008E8D0: jmp cs:off_2F35E8 + +### FUNC 0008E8E0 - 0008E8E6 (6 bytes) name=._ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +0008E8E0: jmp cs:off_2F35F0 + +### FUNC 0008E8F0 - 0008E8F6 (6 bytes) name=._ZN13TCMPresetData10setOffsetYEi +0008E8F0: jmp cs:off_2F35F8 + +### FUNC 0008E900 - 0008E906 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +0008E900: jmp cs:off_2F3600 + +### FUNC 0008E910 - 0008E916 (6 bytes) name=._ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +0008E910: jmp cs:off_2F3608 + +### FUNC 0008E920 - 0008E926 (6 bytes) name=._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ +0008E920: jmp cs:off_2F3610 + +### FUNC 0008E930 - 0008E936 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEED2Ev +0008E930: jmp cs:off_2F3618 + +### FUNC 0008E940 - 0008E946 (6 bytes) name=.MAG_SetEnvTempEstimateMode +0008E940: jmp cs:off_2F3620 + +### FUNC 0008E950 - 0008E956 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +0008E950: jmp cs:off_2F3628 + +### FUNC 0008E960 - 0008E966 (6 bytes) name=._ZNKSt6vectorIiSaIiEE8max_sizeEv +0008E960: jmp cs:off_2F3630 + +### FUNC 0008E970 - 0008E976 (6 bytes) name=._ZNSt6vectorIiSaIiEED2Ev +0008E970: jmp cs:off_2F3638 + +### FUNC 0008E980 - 0008E986 (6 bytes) name=._ZNKSs6lengthEv +0008E980: jmp cs:off_2F3640 + +### FUNC 0008E990 - 0008E996 (6 bytes) name=._ZN17ThermalController19loadCalibrationJsonEv +0008E990: jmp cs:off_2F3648 + +### FUNC 0008E9A0 - 0008E9A6 (6 bytes) name=._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +0008E9A0: jmp cs:off_2F3650 + +### FUNC 0008E9B0 - 0008E9B6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +0008E9B0: jmp cs:off_2F3658 + +### FUNC 0008E9C0 - 0008E9C6 (6 bytes) name=._ZNKSt16initializer_listImE5beginEv +0008E9C0: jmp cs:off_2F3660 + +### FUNC 0008E9D0 - 0008E9D6 (6 bytes) name=._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEdLi0EEEvRT_T0_ +0008E9D0: jmp cs:off_2F3668 + +### FUNC 0008E9E0 - 0008E9E6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm +0008E9E0: jmp cs:off_2F3670 + +### FUNC 0008E9F0 - 0008E9F6 (6 bytes) name=._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7_ +0008E9F0: jmp cs:off_2F3678 + +### FUNC 0008EA00 - 0008EA06 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE20_M_allocate_and_copyISt13move_iteratorIPS6_EEESB_mT_SD_ +0008EA00: jmp cs:off_2F3680 + +### FUNC 0008EA10 - 0008EA16 (6 bytes) name=._ZNKSt6vectorIhSaIhEE8capacityEv +0008EA10: jmp cs:off_2F3688 + +### FUNC 0008EA20 - 0008EA26 (6 bytes) name=._ZNSaIcEC2Ev +0008EA20: jmp cs:off_2F3690 + +### FUNC 0008EA30 - 0008EA36 (6 bytes) name=._ZNSt14unary_functionIP10SerialPortvEC2Ev +0008EA30: jmp cs:off_2F3698 + +### FUNC 0008EA40 - 0008EA46 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE9constructIS2_JS2_EEEvPT_DpOT0_ +0008EA40: jmp cs:off_2F36A0 + +### FUNC 0008EA50 - 0008EA56 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev +0008EA50: jmp cs:off_2F36A8 + +### FUNC 0008EA60 - 0008EA66 (6 bytes) name=._ZN6serial6Serial10SerialImpl10setTimeoutERNS_7TimeoutE +0008EA60: jmp cs:off_2F36B0 + +### FUNC 0008EA70 - 0008EA76 (6 bytes) name=._ZNK6serial6Serial10SerialImpl6isOpenEv +0008EA70: jmp cs:off_2F36B8 + +### FUNC 0008EA80 - 0008EA86 (6 bytes) name=._ZSt4swapIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEvRT_SA_ +0008EA80: jmp cs:off_2F36C0 + +### FUNC 0008EA90 - 0008EA96 (6 bytes) name=._ZNSt6vectorIhSaIhEE9push_backEOh +0008EA90: jmp cs:off_2F36C8 + +### FUNC 0008EAA0 - 0008EAA6 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE19_M_emplace_back_auxIJS1_EEEvDpOT_ +0008EAA0: jmp cs:off_2F36D0 + +### FUNC 0008EAB0 - 0008EAB6 (6 bytes) name=._ZN8nlohmann6detail16invalid_iteratorC2EiPKc +0008EAB0: jmp cs:off_2F36D8 + +### FUNC 0008EAC0 - 0008EAC6 (6 bytes) name=._ZNSt5mutex6unlockEv +0008EAC0: jmp cs:off_2F36E0 + +### FUNC 0008EAD0 - 0008EAD6 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +0008EAD0: jmp cs:off_2F36E8 + +### FUNC 0008EAE0 - 0008EAE6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERKSK_ +0008EAE0: jmp cs:off_2F36F0 + +### FUNC 0008EAF0 - 0008EAF6 (6 bytes) name=._ZN11FTDICommandC2Ehhi +0008EAF0: jmp cs:off_2F36F8 + +### FUNC 0008EB00 - 0008EB06 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIP19struct_TerminalListES2_S1_ET0_T_S5_S4_RSaIT1_E +0008EB00: jmp cs:off_2F3700 + +### FUNC 0008EB10 - 0008EB16 (6 bytes) name=._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +0008EB10: jmp cs:off_2F3708 + +### FUNC 0008EB20 - 0008EB26 (6 bytes) name=._ZN6serial6SerialC2ERKSsjNS_7TimeoutENS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +0008EB20: jmp cs:off_2F3710 + +### FUNC 0008EB30 - 0008EB36 (6 bytes) name=.MAG_EnumCameras +0008EB30: jmp cs:off_2F3718 + +### FUNC 0008EB40 - 0008EB46 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRlEEEvDpOT_ +0008EB40: jmp cs:off_2F3720 + +### FUNC 0008EB50 - 0008EB56 (6 bytes) name=._ZN19EloTCMUpdaterDevice12transmitDataESt6vectorIhSaIhEEi +0008EB50: jmp cs:off_2F3728 + +### FUNC 0008EB60 - 0008EB66 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EEC2ERKSM_ +0008EB60: jmp cs:off_2F3730 + +### FUNC 0008EB70 - 0008EB76 (6 bytes) name=._ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +0008EB70: jmp cs:off_2F3738 + +### FUNC 0008EB80 - 0008EB86 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +0008EB80: jmp cs:off_2F3740 + +### FUNC 0008EB90 - 0008EB96 (6 bytes) name=._ZN6serial6Serial10SerialImpl6setDTREb +0008EB90: jmp cs:off_2F3748 + +### FUNC 0008EBA0 - 0008EBA6 (6 bytes) name=._ZNSt17__allow_copy_consILb1EEC2Ev +0008EBA0: jmp cs:off_2F3750 + +### FUNC 0008EBB0 - 0008EBB6 (6 bytes) name=._ZN19FTDICommandDelegateC2Ev +0008EBB0: jmp cs:off_2F3758 + +### FUNC 0008EBC0 - 0008EBC6 (6 bytes) name=._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEeqERKS9_ +0008EBC0: jmp cs:off_2F3760 + +### FUNC 0008EBD0 - 0008EBD6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_commentEv +0008EBD0: jmp cs:off_2F3768 + +### FUNC 0008EBE0 - 0008EBE6 (6 bytes) name=._ZNSaIhEC2ERKS__0 +0008EBE0: jmp cs:off_2F3770 + +### FUNC 0008EBF0 - 0008EBF6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEdeEv +0008EBF0: jmp cs:off_2F3778 + +### FUNC 0008EC00 - 0008EC06 (6 bytes) name=._ZSt14__copy_move_a2ILb0EPKhPhET1_T0_S4_S3_ +0008EC00: jmp cs:off_2F3780 + +### FUNC 0008EC10 - 0008EC16 (6 bytes) name=._ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +0008EC10: jmp cs:off_2F3788 + +### FUNC 0008EC20 - 0008EC26 (6 bytes) name=._ZSt3getILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008EC20: jmp cs:off_2F3790 + +### FUNC 0008EC30 - 0008EC36 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRSsEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +0008EC30: jmp cs:off_2F3798 + +### FUNC 0008EC40 - 0008EC46 (6 bytes) name=.MAG_EstimateUnderArmTempFromForeheadRect +0008EC40: jmp cs:off_2F37A0 + +### FUNC 0008EC50 - 0008EC56 (6 bytes) name=._ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc +0008EC50: jmp cs:off_2F37A8 + +### FUNC 0008EC60 - 0008EC66 (6 bytes) name=._ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPcEEPT_PKS4_S7_S5_ +0008EC60: jmp cs:off_2F37B0 + +### FUNC 0008EC70 - 0008EC76 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +0008EC70: jmp cs:off_2F37B8 + +### FUNC 0008EC80 - 0008EC86 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EEC2ERKSH_ +0008EC80: jmp cs:off_2F37C0 + +### FUNC 0008EC90 - 0008EC96 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JNS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_ +0008EC90: jmp cs:off_2F37C8 + +### FUNC 0008ECA0 - 0008ECA6 (6 bytes) name=._ZNSt14unary_functionIP21EloTCMHeartBeatDevicevEC2Ev +0008ECA0: jmp cs:off_2F37D0 + +### FUNC 0008ECB0 - 0008ECB6 (6 bytes) name=._ZNK8nlohmann6detail10position_tcvmEv +0008ECB0: jmp cs:off_2F37D8 + +### FUNC 0008ECC0 - 0008ECC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +0008ECC0: jmp cs:off_2F37E0 + +### FUNC 0008ECD0 - 0008ECD6 (6 bytes) name=._ZNKSt13move_iteratorIPhE4baseEv +0008ECD0: jmp cs:off_2F37E8 + +### FUNC 0008ECE0 - 0008ECE6 (6 bytes) name=._ZN8nlohmann14adl_serializerIbvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERbEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +0008ECE0: jmp cs:off_2F37F0 + +### FUNC 0008ECF0 - 0008ECF6 (6 bytes) name=._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ +0008ECF0: jmp cs:off_2F37F8 + +### FUNC 0008ED00 - 0008ED06 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev_0 +0008ED00: jmp cs:off_2F3800 + +### FUNC 0008ED10 - 0008ED16 (6 bytes) name=._ZN6serial6Serial5closeEv +0008ED10: jmp cs:off_2F3808 + +### FUNC 0008ED20 - 0008ED26 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +0008ED20: jmp cs:off_2F3810 + +### FUNC 0008ED30 - 0008ED36 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim +0008ED30: jmp cs:off_2F3818 + +### FUNC 0008ED40 - 0008ED46 (6 bytes) name=._ZNSt8__detail7_InsertISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb0ELb1EEC2Ev +0008ED40: jmp cs:off_2F3820 + +### FUNC 0008ED50 - 0008ED56 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2Ev +0008ED50: jmp cs:off_2F3828 + +### FUNC 0008ED60 - 0008ED66 (6 bytes) name=._ZNSt5dequeIcSaIcEEixEm +0008ED60: jmp cs:off_2F3830 + +### FUNC 0008ED70 - 0008ED76 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +0008ED70: jmp cs:off_2F3838 + +### FUNC 0008ED80 - 0008ED86 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +0008ED80: jmp cs:off_2F3840 + +### FUNC 0008ED90 - 0008ED96 (6 bytes) name=._ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0008ED90: jmp cs:off_2F3848 + +### FUNC 0008EDA0 - 0008EDA6 (6 bytes) name=._ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_ +0008EDA0: jmp cs:off_2F3850 + +### FUNC 0008EDB0 - 0008EDB6 (6 bytes) name=._ZNKSs5rfindEPKcm +0008EDB0: jmp cs:off_2F3858 + +### FUNC 0008EDC0 - 0008EDC6 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_ +0008EDC0: jmp cs:off_2F3860 + +### FUNC 0008EDD0 - 0008EDD6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_ +0008EDD0: jmp cs:off_2F3868 + +### FUNC 0008EDE0 - 0008EDE6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE10deallocateEPS6_m +0008EDE0: jmp cs:off_2F3870 + +### FUNC 0008EDF0 - 0008EDF6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +0008EDF0: jmp cs:off_2F3878 + +### FUNC 0008EE00 - 0008EE06 (6 bytes) name=._ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEEC2IRKSaIS4_EEEOT_ +0008EE00: jmp cs:off_2F3880 + +### FUNC 0008EE10 - 0008EE16 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +0008EE10: jmp cs:off_2F3888 + +### FUNC 0008EE20 - 0008EE26 (6 bytes) name=.pselect +0008EE20: jmp cs:off_2F3890 + +### FUNC 0008EE30 - 0008EE36 (6 bytes) name=._ZSt4copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +0008EE30: jmp cs:off_2F3898 + +### FUNC 0008EE40 - 0008EE46 (6 bytes) name=._ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +0008EE40: jmp cs:off_2F38A0 + +### FUNC 0008EE50 - 0008EE56 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEE11_M_allocateEm +0008EE50: jmp cs:off_2F38A8 + +### FUNC 0008EE60 - 0008EE66 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m +0008EE60: jmp cs:off_2F38B0 + +### FUNC 0008EE70 - 0008EE76 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JRKSE_EEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSM_DpOSN_ +0008EE70: jmp cs:off_2F38B8 + +### FUNC 0008EE80 - 0008EE86 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv +0008EE80: jmp cs:off_2F38C0 + +### FUNC 0008EE90 - 0008EE96 (6 bytes) name=._ZNSt6vectorIhSaIhEEC2ERKS1_ +0008EE90: jmp cs:off_2F38C8 + +### FUNC 0008EEA0 - 0008EEA6 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +0008EEA0: jmp cs:off_2F38D0 + +### FUNC 0008EEB0 - 0008EEB6 (6 bytes) name=._ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERKSB_ +0008EEB0: jmp cs:off_2F38D8 + +### FUNC 0008EEC0 - 0008EEC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JEEEvPT_DpOT0_ +0008EEC0: jmp cs:off_2F38E0 + +### FUNC 0008EED0 - 0008EED6 (6 bytes) name=._ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St20forward_iterator_tag +0008EED0: jmp cs:off_2F38E8 + +### FUNC 0008EEE0 - 0008EEE6 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +0008EEE0: jmp cs:off_2F38F0 + +### FUNC 0008EEF0 - 0008EEF6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_ +0008EEF0: jmp cs:off_2F38F8 + +### FUNC 0008EF00 - 0008EF06 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4sizeEv +0008EF00: jmp cs:off_2F3900 + +### FUNC 0008EF10 - 0008EF16 (6 bytes) name=._ZN6serial11IOExceptionC2ESsiPKc +0008EF10: jmp cs:off_2F3908 + +### FUNC 0008EF20 - 0008EF26 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +0008EF20: jmp cs:off_2F3910 + +### FUNC 0008EF30 - 0008EF36 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EED2Ev +0008EF30: jmp cs:off_2F3918 + +### FUNC 0008EF40 - 0008EF46 (6 bytes) name=._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1ELl1EElLb1ELb1EE6__castIlS3_EES4_RKNS1_IT_T0_EE +0008EF40: jmp cs:off_2F3920 + +### FUNC 0008EF50 - 0008EF56 (6 bytes) name=._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +0008EF50: jmp cs:off_2F3928 + +### FUNC 0008EF60 - 0008EF66 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2ERKSG_ +0008EF60: jmp cs:off_2F3930 + +### FUNC 0008EF70 - 0008EF76 (6 bytes) name=._ZN6serial7Timeout3maxEv +0008EF70: jmp cs:off_2F3938 + +### FUNC 0008EF80 - 0008EF86 (6 bytes) name=._ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_ +0008EF80: jmp cs:off_2F3940 + +### FUNC 0008EF90 - 0008EF96 (6 bytes) name=._ZN9__gnu_cxxneIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +0008EF90: jmp cs:off_2F3948 + +### FUNC 0008EFA0 - 0008EFA6 (6 bytes) name=._ZSt4copyIPPcS1_ET0_T_S3_S2_ +0008EFA0: jmp cs:off_2F3950 + +### FUNC 0008EFB0 - 0008EFB6 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008EFB0: jmp cs:off_2F3958 + +### FUNC 0008EFC0 - 0008EFC6 (6 bytes) name=._ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIhEEPT_PKS3_S6_S4_ +0008EFC0: jmp cs:off_2F3960 + +### FUNC 0008EFD0 - 0008EFD6 (6 bytes) name=._ZN10CMagDevice22GetRectTemperatureInfoEjjjjPi +0008EFD0: jmp cs:off_2F3968 + +### FUNC 0008EFE0 - 0008EFE6 (6 bytes) name=._ZNKSt8equal_toISsEclERKSsS2_ +0008EFE0: jmp cs:off_2F3970 + +### FUNC 0008EFF0 - 0008EFF6 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv +0008EFF0: jmp cs:off_2F3978 + +### FUNC 0008F000 - 0008F006 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +0008F000: jmp cs:off_2F3980 + +### FUNC 0008F010 - 0008F016 (6 bytes) name=._ZNSsD1Ev +0008F010: jmp cs:off_2F3988 + +### FUNC 0008F020 - 0008F026 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS9_m +0008F020: jmp cs:off_2F3990 + +### FUNC 0008F030 - 0008F036 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_tailERS2_ +0008F030: jmp cs:off_2F3998 + +### FUNC 0008F040 - 0008F046 (6 bytes) name=._ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +0008F040: jmp cs:off_2F39A0 + +### FUNC 0008F050 - 0008F056 (6 bytes) name=._ZN17ThermalController18onNewFrameCallbackEjjj +0008F050: jmp cs:off_2F39A8 + +### FUNC 0008F060 - 0008F066 (6 bytes) name=._ZN10CMagDevice10SetFixParaEPK14struct_FixPara12FixSelection +0008F060: jmp cs:off_2F39B0 + +### FUNC 0008F070 - 0008F076 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8capacityEv +0008F070: jmp cs:off_2F39B8 + +### FUNC 0008F080 - 0008F086 (6 bytes) name=._ZN8nlohmann6detail10type_error6createEiRKSs +0008F080: jmp cs:off_2F39C0 + +### FUNC 0008F090 - 0008F096 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKd +0008F090: jmp cs:off_2F39C8 + +### FUNC 0008F0A0 - 0008F0A6 (6 bytes) name=._ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE +0008F0A0: jmp cs:off_2F39D0 + +### FUNC 0008F0B0 - 0008F0B6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKmLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008F0B0: jmp cs:off_2F39D8 + +### FUNC 0008F0C0 - 0008F0C6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERKSI_ +0008F0C0: jmp cs:off_2F39E0 + +### FUNC 0008F0D0 - 0008F0D6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKSs +0008F0D0: jmp cs:off_2F39E8 + +### FUNC 0008F0E0 - 0008F0E6 (6 bytes) name=._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008F0E0: jmp cs:off_2F39F0 + +### FUNC 0008F0F0 - 0008F0F6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_ +0008F0F0: jmp cs:off_2F39F8 + +### FUNC 0008F100 - 0008F106 (6 bytes) name=._ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE12_M_check_lenEmPKc +0008F100: jmp cs:off_2F3A00 + +### FUNC 0008F110 - 0008F116 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKhPhEET0_T_S6_S5_ +0008F110: jmp cs:off_2F3A08 + +### FUNC 0008F120 - 0008F126 (6 bytes) name=._ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1EEvEERKNS0_IT_T0_EE +0008F120: jmp cs:off_2F3A10 + +### FUNC 0008F130 - 0008F136 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_headERS2_ +0008F130: jmp cs:off_2F3A18 + +### FUNC 0008F140 - 0008F146 (6 bytes) name=._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSU_ +0008F140: jmp cs:off_2F3A20 + +### FUNC 0008F150 - 0008F156 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2Ev +0008F150: jmp cs:off_2F3A28 + +### FUNC 0008F160 - 0008F166 (6 bytes) name=._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb1EE7_S_baseES6_ +0008F160: jmp cs:off_2F3A30 + +### FUNC 0008F170 - 0008F176 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE17_M_create_storageEm +0008F170: jmp cs:off_2F3A38 + +### FUNC 0008F180 - 0008F186 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEE12_Vector_implC2Ev +0008F180: jmp cs:off_2F3A40 + +### FUNC 0008F190 - 0008F196 (6 bytes) name=._ZSt23__copy_move_backward_a2ILb1EPhS0_ET1_T0_S2_S1_ +0008F190: jmp cs:off_2F3A48 + +### FUNC 0008F1A0 - 0008F1A6 (6 bytes) name=._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +0008F1A0: jmp cs:off_2F3A50 + +### FUNC 0008F1B0 - 0008F1B6 (6 bytes) name=._ZSt10_ConstructIN6serial8PortInfoEJS1_EEvPT_DpOT0_ +0008F1B0: jmp cs:off_2F3A58 + +### FUNC 0008F1C0 - 0008F1C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JNS1_6detail7value_tEEEEvPT_DpOT0_ +0008F1C0: jmp cs:off_2F3A60 + +### FUNC 0008F1D0 - 0008F1D6 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +0008F1D0: jmp cs:off_2F3A68 + +### FUNC 0008F1E0 - 0008F1E6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE +0008F1E0: jmp cs:off_2F3A70 + +### FUNC 0008F1F0 - 0008F1F6 (6 bytes) name=._ZN17ThermalController19createIllegalResultEv +0008F1F0: jmp cs:off_2F3A78 + +### FUNC 0008F200 - 0008F206 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2Ev +0008F200: jmp cs:off_2F3A80 + +### FUNC 0008F210 - 0008F216 (6 bytes) name=._ZNKSt5arrayIhLm4EE4sizeEv +0008F210: jmp cs:off_2F3A88 + +### FUNC 0008F220 - 0008F226 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EC2ESG_RKSH_ +0008F220: jmp cs:off_2F3A90 + +### FUNC 0008F230 - 0008F236 (6 bytes) name=._ZN8nlohmann6detail10position_tC2Ev +0008F230: jmp cs:off_2F3A98 + +### FUNC 0008F240 - 0008F246 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKSs +0008F240: jmp cs:off_2F3AA0 + +### FUNC 0008F250 - 0008F256 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EE7_S_cgetERKS3_ +0008F250: jmp cs:off_2F3AA8 + +### FUNC 0008F260 - 0008F266 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEppEv +0008F260: jmp cs:off_2F3AB0 + +### FUNC 0008F270 - 0008F276 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backEOS7_ +0008F270: jmp cs:off_2F3AB8 + +### FUNC 0008F280 - 0008F286 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsED2Ev +0008F280: jmp cs:off_2F3AC0 + +### FUNC 0008F290 - 0008F296 (6 bytes) name=.tcflush +0008F290: jmp cs:off_2F3AC8 + +### FUNC 0008F2A0 - 0008F2A6 (6 bytes) name=._ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEppEv +0008F2A0: jmp cs:off_2F3AD0 + +### FUNC 0008F2B0 - 0008F2B6 (6 bytes) name=._ZSt4swapIN8nlohmann6detail7value_tEEvRT_S4_ +0008F2B0: jmp cs:off_2F3AD8 + +### FUNC 0008F2C0 - 0008F2C6 (6 bytes) name=.free +0008F2C0: jmp cs:off_2F3AE0 + +### FUNC 0008F2D0 - 0008F2D6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +0008F2D0: jmp cs:off_2F3AE8 + +### FUNC 0008F2E0 - 0008F2E6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EE7_M_headERSN_ +0008F2E0: jmp cs:off_2F3AF0 + +### FUNC 0008F2F0 - 0008F2F6 (6 bytes) name=._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE3endEv +0008F2F0: jmp cs:off_2F3AF8 + +### FUNC 0008F300 - 0008F306 (6 bytes) name=._ZNSt5dequeIcSaIcEEC2Ev +0008F300: jmp cs:off_2F3B00 + +### FUNC 0008F310 - 0008F316 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +0008F310: jmp cs:off_2F3B08 + +### FUNC 0008F320 - 0008F326 (6 bytes) name=._ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE +0008F320: jmp cs:off_2F3B10 + +### FUNC 0008F330 - 0008F336 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implC2Ev +0008F330: jmp cs:off_2F3B18 + +### FUNC 0008F340 - 0008F346 (6 bytes) name=._ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +0008F340: jmp cs:off_2F3B20 + +### FUNC 0008F350 - 0008F356 (6 bytes) name=._ZN8nlohmann6detail20external_constructorILNS0_7value_tE4EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_9boolean_tE +0008F350: jmp cs:off_2F3B28 + +### FUNC 0008F360 - 0008F366 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS7_EENSt9enable_ifIXsrNS9_16__destroy_helperIT_EE5valueEvE4typeERS8_PSD_ +0008F360: jmp cs:off_2F3B30 + +### FUNC 0008F370 - 0008F376 (6 bytes) name=._ZN17ThermalController8startTCMEv +0008F370: jmp cs:off_2F3B38 + +### FUNC 0008F380 - 0008F386 (6 bytes) name=._ZN19EloTCMUpdaterDevice14updateProgressEbi +0008F380: jmp cs:off_2F3B40 + +### FUNC 0008F390 - 0008F396 (6 bytes) name=._ZNKSt16initializer_listIKjE3endEv +0008F390: jmp cs:off_2F3B48 + +### FUNC 0008F3A0 - 0008F3A6 (6 bytes) name=._ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +0008F3A0: jmp cs:off_2F3B50 + +### FUNC 0008F3B0 - 0008F3B6 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E7releaseEv +0008F3B0: jmp cs:off_2F3B58 + +### FUNC 0008F3C0 - 0008F3C6 (6 bytes) name=._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv +0008F3C0: jmp cs:off_2F3B60 + +### FUNC 0008F3D0 - 0008F3D6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEppEi +0008F3D0: jmp cs:off_2F3B68 + +### FUNC 0008F3E0 - 0008F3E6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn +0008F3E0: jmp cs:off_2F3B70 + +### FUNC 0008F3F0 - 0008F3F6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKl +0008F3F0: jmp cs:off_2F3B78 + +### FUNC 0008F400 - 0008F406 (6 bytes) name=._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJRS1_EESG_IJEEEEEDpOT_ +0008F400: jmp cs:off_2F3B80 + +### FUNC 0008F410 - 0008F416 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Ed +0008F410: jmp cs:off_2F3B88 + +### FUNC 0008F420 - 0008F426 (6 bytes) name=._ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv +0008F420: jmp cs:off_2F3B90 + +### FUNC 0008F430 - 0008F436 (6 bytes) name=._ZNKSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +0008F430: jmp cs:off_2F3B98 + +### FUNC 0008F440 - 0008F446 (6 bytes) name=._ZNSt6vectorIhSaIhEEixEm +0008F440: jmp cs:off_2F3BA0 + +### FUNC 0008F450 - 0008F456 (6 bytes) name=._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9set_beginEv +0008F450: jmp cs:off_2F3BA8 + +### FUNC 0008F460 - 0008F466 (6 bytes) name=._ZNKSt14_Function_base8_M_emptyEv +0008F460: jmp cs:off_2F3BB0 + +### FUNC 0008F470 - 0008F476 (6 bytes) name=._ZNSt11_Tuple_implILm0EJRKSsEEC2ES1_ +0008F470: jmp cs:off_2F3BB8 + +### FUNC 0008F480 - 0008F486 (6 bytes) name=._ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3keyEv +0008F480: jmp cs:off_2F3BC0 + +### FUNC 0008F490 - 0008F496 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +0008F490: jmp cs:off_2F3BC8 + +### FUNC 0008F4A0 - 0008F4A6 (6 bytes) name=._ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_ +0008F4A0: jmp cs:off_2F3BD0 + +### FUNC 0008F4B0 - 0008F4B6 (6 bytes) name=._ZSt12__miter_baseISt13move_iteratorIPiEENSt11_Miter_baseIT_E13iterator_typeES4_ +0008F4B0: jmp cs:off_2F3BD8 + +### FUNC 0008F4C0 - 0008F4C6 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008F4C0: jmp cs:off_2F3BE0 + +### FUNC 0008F4D0 - 0008F4D6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +0008F4D0: jmp cs:off_2F3BE8 + +### FUNC 0008F4E0 - 0008F4E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiE9constructIiJiEEEvPT_DpOT0_ +0008F4E0: jmp cs:off_2F3BF0 + +### FUNC 0008F4F0 - 0008F4F6 (6 bytes) name=._ZN11CMagServiceD2Ev +0008F4F0: jmp cs:off_2F3BF8 + +### FUNC 0008F500 - 0008F506 (6 bytes) name=._ZN9__gnu_cxxneIPSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +0008F500: jmp cs:off_2F3C00 + +### FUNC 0008F510 - 0008F516 (6 bytes) name=._ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IlvEERKT_ +0008F510: jmp cs:off_2F3C08 + +### FUNC 0008F520 - 0008F526 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv +0008F520: jmp cs:off_2F3C10 + +### FUNC 0008F530 - 0008F536 (6 bytes) name=._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +0008F530: jmp cs:off_2F3C18 + +### FUNC 0008F540 - 0008F546 (6 bytes) name=._ZN16TCMVirtualDevice8sendDataEP11FTDICommand +0008F540: jmp cs:off_2F3C20 + +### FUNC 0008F550 - 0008F556 (6 bytes) name=._ZNSt8__detail9_Map_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS2_ +0008F550: jmp cs:off_2F3C28 + +### FUNC 0008F560 - 0008F566 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE7destroyISC_EEvPT_ +0008F560: jmp cs:off_2F3C30 + +### FUNC 0008F570 - 0008F576 (6 bytes) name=._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb0EE7_S_baseES6_ +0008F570: jmp cs:off_2F3C38 + +### FUNC 0008F580 - 0008F586 (6 bytes) name=.MAG_SaveBMP +0008F580: jmp cs:off_2F3C40 + +### FUNC 0008F590 - 0008F596 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2ERKSD_ +0008F590: jmp cs:off_2F3C48 + +### FUNC 0008F5A0 - 0008F5A6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEED2Ev +0008F5A0: jmp cs:off_2F3C50 + +### FUNC 0008F5B0 - 0008F5B6 (6 bytes) name=._ZN6serial16MillisecondTimer9remainingEv +0008F5B0: jmp cs:off_2F3C58 + +### FUNC 0008F5C0 - 0008F5C6 (6 bytes) name=._ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv +0008F5C0: jmp cs:off_2F3C60 + +### FUNC 0008F5D0 - 0008F5D6 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev +0008F5D0: jmp cs:off_2F3C68 + +### FUNC 0008F5E0 - 0008F5E6 (6 bytes) name=._ZN6serial8PortInfoD2Ev +0008F5E0: jmp cs:off_2F3C70 + +### FUNC 0008F5F0 - 0008F5F6 (6 bytes) name=._ZN17ThermalController12preloadEEPOMEv +0008F5F0: jmp cs:off_2F3C78 + +### FUNC 0008F600 - 0008F606 (6 bytes) name=.MAG_SaveDDT2Buffer +0008F600: jmp cs:off_2F3C80 + +### FUNC 0008F610 - 0008F616 (6 bytes) name=._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE8max_sizeERKS2_ +0008F610: jmp cs:off_2F3C88 + +### FUNC 0008F620 - 0008F626 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EC2ESI_RKSJ_ +0008F620: jmp cs:off_2F3C90 + +### FUNC 0008F630 - 0008F636 (6 bytes) name=._ZNKSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +0008F630: jmp cs:off_2F3C98 + +### FUNC 0008F640 - 0008F646 (6 bytes) name=._ZNSs4_Rep10_M_destroyERKSaIcE +0008F640: jmp cs:off_2F3CA0 + +### FUNC 0008F650 - 0008F656 (6 bytes) name=._ZNSt6vectorIN6serial8PortInfoESaIS1_EEC2Ev +0008F650: jmp cs:off_2F3CA8 + +### FUNC 0008F660 - 0008F666 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS8_EENSt9enable_ifIXsrNS9_16__maxsize_helperIT_EE5valueEmE4typeERSE_ +0008F660: jmp cs:off_2F3CB0 + +### FUNC 0008F670 - 0008F676 (6 bytes) name=._ZN8nlohmann6detail16invalid_iteratorD2Ev +0008F670: jmp cs:off_2F3CB8 + +### FUNC 0008F680 - 0008F686 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +0008F680: jmp cs:off_2F3CC0 + +### FUNC 0008F690 - 0008F696 (6 bytes) name=._ZNSt10_Head_baseILm1EP10SerialPortLb0EE7_M_headERS2_ +0008F690: jmp cs:off_2F3CC8 + +### FUNC 0008F6A0 - 0008F6A6 (6 bytes) name=._ZSt13__copy_move_aILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +0008F6A0: jmp cs:off_2F3CD0 + +### FUNC 0008F6B0 - 0008F6B6 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESC_EET0_T_SF_SE_ +0008F6B0: jmp cs:off_2F3CD8 + +### FUNC 0008F6C0 - 0008F6C6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv +0008F6C0: jmp cs:off_2F3CE0 + +### FUNC 0008F6D0 - 0008F6D6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_ +0008F6D0: jmp cs:off_2F3CE8 + +### FUNC 0008F6E0 - 0008F6E6 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2Ev +0008F6E0: jmp cs:off_2F3CF0 + +### FUNC 0008F6F0 - 0008F6F6 (6 bytes) name=._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EDn +0008F6F0: jmp cs:off_2F3CF8 + +### FUNC 0008F700 - 0008F706 (6 bytes) name=._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +0008F700: jmp cs:off_2F3D00 + +### FUNC 0008F710 - 0008F716 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_ENKUlPSsE_clESF_ +0008F710: jmp cs:off_2F3D08 + +### FUNC 0008F720 - 0008F726 (6 bytes) name=._ZN18EloProximityDevice20setProximityDelegateEP18IProximityDelegate +0008F720: jmp cs:off_2F3D10 + +### FUNC 0008F730 - 0008F736 (6 bytes) name=._ZNSaI19struct_TerminalListED2Ev +0008F730: jmp cs:off_2F3D18 + +### FUNC 0008F740 - 0008F746 (6 bytes) name=._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEPhmT_S9_ +0008F740: jmp cs:off_2F3D20 + +### FUNC 0008F750 - 0008F756 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS7_ +0008F750: jmp cs:off_2F3D28 + +### FUNC 0008F760 - 0008F766 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EEC2Ev +0008F760: jmp cs:off_2F3D30 + +### FUNC 0008F770 - 0008F776 (6 bytes) name=._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSO_ +0008F770: jmp cs:off_2F3D38 + +### FUNC 0008F780 - 0008F786 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +0008F780: jmp cs:off_2F3D40 + +### FUNC 0008F790 - 0008F796 (6 bytes) name=._ZNKSs5emptyEv +0008F790: jmp cs:off_2F3D48 + +### FUNC 0008F7A0 - 0008F7A6 (6 bytes) name=.MAG_TriggerFFC +0008F7A0: jmp cs:off_2F3D50 + +### FUNC 0008F7B0 - 0008F7B6 (6 bytes) name=._ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St12__false_type +0008F7B0: jmp cs:off_2F3D58 + +### FUNC 0008F7C0 - 0008F7C6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKbLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +0008F7C0: jmp cs:off_2F3D60 + +### FUNC 0008F7D0 - 0008F7D6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2El +0008F7D0: jmp cs:off_2F3D68 + +### FUNC 0008F7E0 - 0008F7E6 (6 bytes) name=._ZSt4copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +0008F7E0: jmp cs:off_2F3D70 + +### FUNC 0008F7F0 - 0008F7F6 (6 bytes) name=._ZN16ThermalTCMDeviceD2Ev +0008F7F0: jmp cs:off_2F3D78 + +### FUNC 0008F800 - 0008F806 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +0008F800: jmp cs:off_2F3D80 + +### FUNC 0008F810 - 0008F816 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +0008F810: jmp cs:off_2F3D88 + +### FUNC 0008F820 - 0008F826 (6 bytes) name=.__xstat +0008F820: jmp cs:off_2F3D90 + +### FUNC 0008F830 - 0008F836 (6 bytes) name=._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008F830: jmp cs:off_2F3D98 + +### FUNC 0008F840 - 0008F846 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2ERKS0_ +0008F840: jmp cs:off_2F3DA0 + +### FUNC 0008F850 - 0008F856 (6 bytes) name=._ZNSt6vectorIhSaIhEE6assignIPKhvEEvT_S5_ +0008F850: jmp cs:off_2F3DA8 + +### FUNC 0008F860 - 0008F866 (6 bytes) name=._ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE +0008F860: jmp cs:off_2F3DB0 + +### FUNC 0008F870 - 0008F876 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EE7_M_headERSJ_ +0008F870: jmp cs:off_2F3DB8 + +### FUNC 0008F880 - 0008F886 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE10deallocateEPS6_m +0008F880: jmp cs:off_2F3DC0 + +### FUNC 0008F890 - 0008F896 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSJ_ +0008F890: jmp cs:off_2F3DC8 + +### FUNC 0008F8A0 - 0008F8A6 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +0008F8A0: jmp cs:off_2F3DD0 + +### FUNC 0008F8B0 - 0008F8B6 (6 bytes) name=._ZNSt9exceptionC2Ev +0008F8B0: jmp cs:off_2F3DD8 + +### FUNC 0008F8C0 - 0008F8C6 (6 bytes) name=._ZSt8_DestroyIPP16TCMVirtualDeviceEvT_S3_ +0008F8C0: jmp cs:off_2F3DE0 + +### FUNC 0008F8D0 - 0008F8D6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_ +0008F8D0: jmp cs:off_2F3DE8 + +### FUNC 0008F8E0 - 0008F8E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEED2Ev +0008F8E0: jmp cs:off_2F3DF0 + +### FUNC 0008F8F0 - 0008F8F6 (6 bytes) name=._ZNKSt16initializer_listIKjE4sizeEv +0008F8F0: jmp cs:off_2F3DF8 + +### FUNC 0008F900 - 0008F906 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +0008F900: jmp cs:off_2F3E00 + +### FUNC 0008F910 - 0008F916 (6 bytes) name=._ZSt8distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_ +0008F910: jmp cs:off_2F3E08 + +### FUNC 0008F920 - 0008F926 (6 bytes) name=._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +0008F920: jmp cs:off_2F3E10 + +### FUNC 0008F930 - 0008F936 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +0008F930: jmp cs:off_2F3E18 + +### FUNC 0008F940 - 0008F946 (6 bytes) name=._ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE +0008F940: jmp cs:off_2F3E20 + +### FUNC 0008F950 - 0008F956 (6 bytes) name=._ZN8nlohmann6detail12out_of_range6createEiRKSs +0008F950: jmp cs:off_2F3E28 + +### FUNC 0008F960 - 0008F966 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE12_S_constructIiJRKiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +0008F960: jmp cs:off_2F3E30 + +### FUNC 0008F970 - 0008F976 (6 bytes) name=.tcdrain +0008F970: jmp cs:off_2F3E38 + +### FUNC 0008F980 - 0008F986 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +0008F980: jmp cs:off_2F3E40 + +### FUNC 0008F990 - 0008F996 (6 bytes) name=._ZNSt5dequeIcSaIcEE22_M_reserve_map_at_backEm +0008F990: jmp cs:off_2F3E48 + +### FUNC 0008F9A0 - 0008F9A6 (6 bytes) name=._ZN17ThermalController17updateTriggerTimeEb +0008F9A0: jmp cs:off_2F3E50 + +### FUNC 0008F9B0 - 0008F9B6 (6 bytes) name=._ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E +0008F9B0: jmp cs:off_2F3E58 + +### FUNC 0008F9C0 - 0008F9C6 (6 bytes) name=._ZNKSt6vectorISsSaISsEE3endEv +0008F9C0: jmp cs:off_2F3E60 + +### FUNC 0008F9D0 - 0008F9D6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERSJ_ +0008F9D0: jmp cs:off_2F3E68 + +### FUNC 0008F9E0 - 0008F9E6 (6 bytes) name=.MAG_GetFixPara +0008F9E0: jmp cs:off_2F3E70 + +### FUNC 0008F9F0 - 0008F9F6 (6 bytes) name=._ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET1_T0_SF_SE_ +0008F9F0: jmp cs:off_2F3E78 + +### FUNC 0008FA00 - 0008FA06 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +0008FA00: jmp cs:off_2F3E80 + +### FUNC 0008FA10 - 0008FA16 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhEC2Ev +0008FA10: jmp cs:off_2F3E88 + +### FUNC 0008FA20 - 0008FA26 (6 bytes) name=._ZN8nlohmann6detail9exceptionD2Ev +0008FA20: jmp cs:off_2F3E90 + +### FUNC 0008FA30 - 0008FA36 (6 bytes) name=._ZNKSt13_Bit_iteratorplEl +0008FA30: jmp cs:off_2F3E98 + +### FUNC 0008FA40 - 0008FA46 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRSsEEEvPT_DpOT0_ +0008FA40: jmp cs:off_2F3EA0 + +### FUNC 0008FA50 - 0008FA56 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +0008FA50: jmp cs:off_2F3EA8 + +### FUNC 0008FA60 - 0008FA66 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS1_ +0008FA60: jmp cs:off_2F3EB0 + +### FUNC 0008FA70 - 0008FA76 (6 bytes) name=._ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +0008FA70: jmp cs:off_2F3EB8 + +### FUNC 0008FA80 - 0008FA86 (6 bytes) name=._ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET1_T0_SB_SA_ +0008FA80: jmp cs:off_2F3EC0 + +### FUNC 0008FA90 - 0008FA96 (6 bytes) name=._ZSt4copyIPmS0_ET0_T_S2_S1_ +0008FA90: jmp cs:off_2F3EC8 + +### FUNC 0008FAA0 - 0008FAA6 (6 bytes) name=._ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPKhS1_EEvEEvT_S8_ +0008FAA0: jmp cs:off_2F3ED0 + +### FUNC 0008FAB0 - 0008FAB6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE10deallocateEPSF_m +0008FAB0: jmp cs:off_2F3ED8 + +### FUNC 0008FAC0 - 0008FAC6 (6 bytes) name=._ZSt4moveIRSt7_Mem_fnIM10SerialPortFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +0008FAC0: jmp cs:off_2F3EE0 + +### FUNC 0008FAD0 - 0008FAD6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsE7destroyISsEEvPT_ +0008FAD0: jmp cs:off_2F3EE8 + +### FUNC 0008FAE0 - 0008FAE6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERSI_ +0008FAE0: jmp cs:off_2F3EF0 + +### FUNC 0008FAF0 - 0008FAF6 (6 bytes) name=._ZN17ThermalController14setNewDistanceEPFvfE +0008FAF0: jmp cs:off_2F3EF8 + +### FUNC 0008FB00 - 0008FB06 (6 bytes) name=._ZNKSt19_Bit_const_iteratordeEv +0008FB00: jmp cs:off_2F3F00 + +### FUNC 0008FB10 - 0008FB16 (6 bytes) name=._ZSt3getILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +0008FB10: jmp cs:off_2F3F08 + +### FUNC 0008FB20 - 0008FB26 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEC2Ev +0008FB20: jmp cs:off_2F3F10 + +### FUNC 0008FB30 - 0008FB36 (6 bytes) name=._ZNSt12_Destroy_auxILb0EE9__destroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SB_ +0008FB30: jmp cs:off_2F3F18 + +### FUNC 0008FB40 - 0008FB46 (6 bytes) name=.__cxa_finalize +0008FB40: jmp cs:off_2F3F20 + +### FUNC 0008FB50 - 0008FB56 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +0008FB50: jmp cs:off_2F3F28 + +### FUNC 0008FB60 - 0008FB66 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EEC2Ev +0008FB60: jmp cs:off_2F3F30 + +### FUNC 0008FB70 - 0008FB76 (6 bytes) name=._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev +0008FB70: jmp cs:off_2F3F38 + +### FUNC 0008FB80 - 0008FB86 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +0008FB80: jmp cs:off_2F3F40 + +### FUNC 0008FB90 - 0008FB96 (6 bytes) name=._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2EPS8_ +0008FB90: jmp cs:off_2F3F48 + +### FUNC 0008FBA0 - 0008FBA6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEE4baseEv +0008FBA0: jmp cs:off_2F3F50 + +### FUNC 0008FBB0 - 0008FBB6 (6 bytes) name=._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +0008FBB0: jmp cs:off_2F3F58 + +### FUNC 0008FBC0 - 0008FBC6 (6 bytes) name=._ZNSt18_Bit_iterator_base10_M_bump_upEv +0008FBC0: jmp cs:off_2F3F60 + +### FUNC 0008FBD0 - 0008FBD6 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE11_M_allocateEm +0008FBD0: jmp cs:off_2F3F68 + +### FUNC 0008FBE0 - 0008FBE6 (6 bytes) name=._ZN19IHandleDataDelegateC2Ev +0008FBE0: jmp cs:off_2F3F70 + +### FUNC 0008FBF0 - 0008FBF6 (6 bytes) name=._ZSt16__deque_buf_sizem +0008FBF0: jmp cs:off_2F3F78 + +### FUNC 0008FC00 - 0008FC06 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRmEEEvPT_DpOT0_ +0008FC00: jmp cs:off_2F3F80 + +### FUNC 0008FC10 - 0008FC16 (6 bytes) name=._ZNSaISt4pairIKSsiEEC2Ev +0008FC10: jmp cs:off_2F3F88 + +### FUNC 0008FC20 - 0008FC26 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE15is_number_floatEv +0008FC20: jmp cs:off_2F3F90 + +### FUNC 0008FC30 - 0008FC36 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSI_EvEEOSD_SH_ +0008FC30: jmp cs:off_2F3F98 + +### FUNC 0008FC40 - 0008FC46 (6 bytes) name=._ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +0008FC40: jmp cs:off_2F3FA0 + +### FUNC 0008FC50 - 0008FC56 (6 bytes) name=._ZSt3getILm0EJOSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS6_ +0008FC50: jmp cs:off_2F3FA8 + +### FUNC 0008FC60 - 0008FC66 (6 bytes) name=._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb1EE7_S_baseESD_ +0008FC60: jmp cs:off_2F3FB0 + +### FUNC 0008FC70 - 0008FC76 (6 bytes) name=._ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_ +0008FC70: jmp cs:off_2F3FB8 + +### FUNC 0008FC80 - 0008FC86 (6 bytes) name=.realpath +0008FC80: jmp cs:off_2F3FC0 + +### FUNC 0008FC90 - 0008FC96 (6 bytes) name=._ZNKSt16initializer_listImE4sizeEv +0008FC90: jmp cs:off_2F3FC8 + +### FUNC 0008FCA0 - 0008FCA6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JEEEvPT_DpOT0_ +0008FCA0: jmp cs:off_2F3FD0 + +### FUNC 0008FCB0 - 0008FCB6 (6 bytes) name=._ZNSt5tupleIJOSsEEC2EOS1_ +0008FCB0: jmp cs:off_2F3FD8 + +### FUNC 0008FCC0 - 0008FCC6 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EED2Ev +0008FCC0: jmp cs:off_2F3FE0 + +### FUNC 0008FCD0 - 0008FCD6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_ +0008FCD0: jmp cs:off_2F3FE8 + +### FUNC 0008FCE0 - 0008FCE6 (6 bytes) name=._ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEhEvT_S7_RSaIT0_E +0008FCE0: jmp cs:off_2F3FF0 + +### FUNC 0008FCF0 - 0008FCF6 (6 bytes) name=._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008FCF0: jmp cs:off_2F3FF8 + +### FUNC 0008FD00 - 0008FD06 (6 bytes) name=._ZN19EloTCMUpdaterDevice10askVersionEv +0008FD00: jmp cs:off_2F4000 + +### FUNC 0008FD10 - 0008FD16 (6 bytes) name=._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEppEv +0008FD10: jmp cs:off_2F4008 + +### FUNC 0008FD20 - 0008FD26 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +0008FD20: jmp cs:off_2F4010 + +### FUNC 0008FD30 - 0008FD36 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JEEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSB_DpOSC_ +0008FD30: jmp cs:off_2F4018 + +### FUNC 0008FD40 - 0008FD46 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP10SerialPortEEC2IKS1_JEvEEOT_DpOT0_ +0008FD40: jmp cs:off_2F4020 + +### FUNC 0008FD50 - 0008FD56 (6 bytes) name=._ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEEC2Ev +0008FD50: jmp cs:off_2F4028 + +### FUNC 0008FD60 - 0008FD66 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +0008FD60: jmp cs:off_2F4030 + +### FUNC 0008FD70 - 0008FD76 (6 bytes) name=._ZN8nlohmann6detail9exception4nameERKSsi +0008FD70: jmp cs:off_2F4038 + +### FUNC 0008FD80 - 0008FD86 (6 bytes) name=.MAG_GetOutputColorBardata +0008FD80: jmp cs:off_2F4040 + +### FUNC 0008FD90 - 0008FD96 (6 bytes) name=._ZN6serial6Serial10SerialImpl11setStopbitsENS_10stopbits_tE +0008FD90: jmp cs:off_2F4048 + +### FUNC 0008FDA0 - 0008FDA6 (6 bytes) name=._ZNK6serial6Serial10SerialImpl11getBaudrateEv +0008FDA0: jmp cs:off_2F4050 + +### FUNC 0008FDB0 - 0008FDB6 (6 bytes) name=._ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_ +0008FDB0: jmp cs:off_2F4058 + +### FUNC 0008FDC0 - 0008FDC6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EE13_M_initializeEv +0008FDC0: jmp cs:off_2F4060 + +### FUNC 0008FDD0 - 0008FDD6 (6 bytes) name=._ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +0008FDD0: jmp cs:off_2F4068 + +### FUNC 0008FDE0 - 0008FDE6 (6 bytes) name=._ZSt7forwardIRPSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEOT_RNSt16remove_referenceISF_E4typeE +0008FDE0: jmp cs:off_2F4070 + +### FUNC 0008FDF0 - 0008FDF6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JRKS6_EEEvPT_DpOT0_ +0008FDF0: jmp cs:off_2F4078 + +### FUNC 0008FE00 - 0008FE06 (6 bytes) name=._ZN8nlohmann6detail11other_errorD2Ev +0008FE00: jmp cs:off_2F4080 + +### FUNC 0008FE10 - 0008FE16 (6 bytes) name=._ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5valueEv +0008FE10: jmp cs:off_2F4088 + +### FUNC 0008FE20 - 0008FE26 (6 bytes) name=._ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_ +0008FE20: jmp cs:off_2F4090 + +### FUNC 0008FE30 - 0008FE36 (6 bytes) name=._ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES8_ +0008FE30: jmp cs:off_2F4098 + +### FUNC 0008FE40 - 0008FE46 (6 bytes) name=._ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEneERKSB_ +0008FE40: jmp cs:off_2F40A0 + +### FUNC 0008FE50 - 0008FE56 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE11_M_allocateEm +0008FE50: jmp cs:off_2F40A8 + +### FUNC 0008FE60 - 0008FE66 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEEC2Ev +0008FE60: jmp cs:off_2F40B0 + +### FUNC 0008FE70 - 0008FE76 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsE8allocateEmPKv +0008FE70: jmp cs:off_2F40B8 + +### FUNC 0008FE80 - 0008FE86 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPN6serial8PortInfoES2_SaIS1_EET0_T_S5_S4_RT1_ +0008FE80: jmp cs:off_2F40C0 + +### FUNC 0008FE90 - 0008FE96 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv +0008FE90: jmp cs:off_2F40C8 + +### FUNC 0008FEA0 - 0008FEA6 (6 bytes) name=._ZNSt6vectorIhSaIhEE6resizeEm +0008FEA0: jmp cs:off_2F40D0 + +### FUNC 0008FEB0 - 0008FEB6 (6 bytes) name=._ZNKSt5dequeIcSaIcEE4sizeEv +0008FEB0: jmp cs:off_2F40D8 + +### FUNC 0008FEC0 - 0008FEC6 (6 bytes) name=._ZNSt5dequeIcSaIcEE15_M_destroy_dataESt15_Deque_iteratorIcRcPcES5_RKS0_ +0008FEC0: jmp cs:off_2F40E0 + +### FUNC 0008FED0 - 0008FED6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_ +0008FED0: jmp cs:off_2F40E8 + +### FUNC 0008FEE0 - 0008FEE6 (6 bytes) name=._ZNSaImEC2Ev +0008FEE0: jmp cs:off_2F40F0 + +### FUNC 0008FEF0 - 0008FEF6 (6 bytes) name=._ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE +0008FEF0: jmp cs:off_2F40F8 + +### FUNC 0008FF00 - 0008FF06 (6 bytes) name=._ZN17ThermalController11setUnitModeEi +0008FF00: jmp cs:off_2F4100 + +### FUNC 0008FF10 - 0008FF16 (6 bytes) name=._ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_ +0008FF10: jmp cs:off_2F4108 + +### FUNC 0008FF20 - 0008FF26 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +0008FF20: jmp cs:off_2F4110 + +### FUNC 0008FF30 - 0008FF36 (6 bytes) name=._ZNSt8iteratorISt26random_access_iterator_tagblPbRbEC2Ev +0008FF30: jmp cs:off_2F4118 + +### FUNC 0008FF40 - 0008FF46 (6 bytes) name=._ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_ +0008FF40: jmp cs:off_2F4120 + +### FUNC 0008FF50 - 0008FF56 (6 bytes) name=.MAG_LoadDDT +0008FF50: jmp cs:off_2F4128 + +### FUNC 0008FF60 - 0008FF66 (6 bytes) name=._ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +0008FF60: jmp cs:off_2F4130 + +### FUNC 0008FF70 - 0008FF76 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +0008FF70: jmp cs:off_2F4138 + +### FUNC 0008FF80 - 0008FF86 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_b +0008FF80: jmp cs:off_2F4140 + +### FUNC 0008FF90 - 0008FF96 (6 bytes) name=._ZSt10_ConstructISsJSsEEvPT_DpOT0_ +0008FF90: jmp cs:off_2F4148 + +### FUNC 0008FFA0 - 0008FFA6 (6 bytes) name=._ZNSt14unary_functionIP19EloTCMUpdaterDevicebEC2Ev +0008FFA0: jmp cs:off_2F4150 + +### FUNC 0008FFB0 - 0008FFB6 (6 bytes) name=._ZSt11__addressofIN6serial8PortInfoEEPT_RS2_ +0008FFB0: jmp cs:off_2F4158 + +### FUNC 0008FFC0 - 0008FFC6 (6 bytes) name=._ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv +0008FFC0: jmp cs:off_2F4160 + +### FUNC 0008FFD0 - 0008FFD6 (6 bytes) name=._ZN8nlohmann6detail20external_constructorILNS0_7value_tE5EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_16number_integer_tE +0008FFD0: jmp cs:off_2F4168 + +### FUNC 0008FFE0 - 0008FFE6 (6 bytes) name=._ZSt12__niter_baseISt19_Bit_const_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +0008FFE0: jmp cs:off_2F4170 + +### FUNC 0008FFF0 - 0008FFF6 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +0008FFF0: jmp cs:off_2F4178 + +### FUNC 00090000 - 00090006 (6 bytes) name=._ZN13TCMPresetData7getDataEv +00090000: jmp cs:off_2F4180 + +### FUNC 00090010 - 00090016 (6 bytes) name=._ZN6serial6Serial4readEPhm +00090010: jmp cs:off_2F4188 + +### FUNC 00090020 - 00090026 (6 bytes) name=.MAG_GetTemperatureData +00090020: jmp cs:off_2F4190 + +### FUNC 00090030 - 00090036 (6 bytes) name=._ZSt4moveIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSB_ +00090030: jmp cs:off_2F4198 + +### FUNC 00090040 - 00090046 (6 bytes) name=._ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +00090040: jmp cs:off_2F41A0 + +### FUNC 00090050 - 00090056 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS9_ +00090050: jmp cs:off_2F41A8 + +### FUNC 00090060 - 00090066 (6 bytes) name=._ZNSs6insertEmPKc +00090060: jmp cs:off_2F41B0 + +### FUNC 00090070 - 00090076 (6 bytes) name=._ZSt12__miter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEENSt11_Miter_baseIT_E13iterator_typeESD_ +00090070: jmp cs:off_2F41B8 + +### FUNC 00090080 - 00090086 (6 bytes) name=._ZNSt6vectorISsSaISsEE9push_backEOSs +00090080: jmp cs:off_2F41C0 + +### FUNC 00090090 - 00090096 (6 bytes) name=.MAG_SetSubsectionEnlargePara +00090090: jmp cs:off_2F41C8 + +### FUNC 000900A0 - 000900A6 (6 bytes) name=._ZNSt31_Maybe_unary_or_binary_functionIvJP10SerialPortEEC2Ev +000900A0: jmp cs:off_2F41D0 + +### FUNC 000900B0 - 000900B6 (6 bytes) name=._ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_ +000900B0: jmp cs:off_2F41D8 + +### FUNC 000900C0 - 000900C6 (6 bytes) name=._ZNSspLERKSs +000900C0: jmp cs:off_2F41E0 + +### FUNC 000900D0 - 000900D6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base +000900D0: jmp cs:off_2F41E8 + +### FUNC 000900E0 - 000900E6 (6 bytes) name=._ZNKSt15_Deque_iteratorIcRcPcEplEl +000900E0: jmp cs:off_2F41F0 + +### FUNC 000900F0 - 000900F6 (6 bytes) name=._ZN9__gnu_cxxneIPhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +000900F0: jmp cs:off_2F41F8 + +### FUNC 00090100 - 00090106 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implD2Ev +00090100: jmp cs:off_2F4200 + +### FUNC 00090110 - 00090116 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIP19struct_TerminalListES4_EET0_T_S7_S6_ +00090110: jmp cs:off_2F4208 + +### FUNC 00090120 - 00090126 (6 bytes) name=._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb0EE7_S_baseES7_ +00090120: jmp cs:off_2F4210 + +### FUNC 00090130 - 00090136 (6 bytes) name=._ZNSt11unique_lockISt5mutexE4lockEv +00090130: jmp cs:off_2F4218 + +### FUNC 00090140 - 00090146 (6 bytes) name=._ZNSt12_Destroy_auxILb1EE9__destroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEEvT_S9_ +00090140: jmp cs:off_2F4220 + +### FUNC 00090150 - 00090156 (6 bytes) name=._ZN8nlohmann6detail11other_errorC2EiPKc +00090150: jmp cs:off_2F4228 + +### FUNC 00090160 - 00090166 (6 bytes) name=._ZSt10__fill_n_aImhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT0_E7__valueEPS3_E6__typeES5_T_RKS3_ +00090160: jmp cs:off_2F4230 + +### FUNC 00090170 - 00090176 (6 bytes) name=._ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED2Ev +00090170: jmp cs:off_2F4238 + +### FUNC 00090180 - 00090186 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +00090180: jmp cs:off_2F4240 + +### FUNC 00090190 - 00090196 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_S9_ET0_T_SD_SC_RSaIT1_E +00090190: jmp cs:off_2F4248 + +### FUNC 000901A0 - 000901A6 (6 bytes) name=._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEESsLi0EEEvRT_RKT0_ +000901A0: jmp cs:off_2F4250 + +### FUNC 000901B0 - 000901B6 (6 bytes) name=._ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000901B0: jmp cs:off_2F4258 + +### FUNC 000901C0 - 000901C6 (6 bytes) name=._ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +000901C0: jmp cs:off_2F4260 + +### FUNC 000901D0 - 000901D6 (6 bytes) name=._ZN17ThermalController22getInnerIRCameraSerialEv +000901D0: jmp cs:off_2F4268 + +### FUNC 000901E0 - 000901E6 (6 bytes) name=._ZNSt18condition_variable10wait_untilINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +000901E0: jmp cs:off_2F4270 + +### FUNC 000901F0 - 000901F6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ENS_6detail7value_tE +000901F0: jmp cs:off_2F4278 + +### FUNC 00090200 - 00090206 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5parseIRA320659_hEES6_OT_St8functionIFbiNS_6detail13parse_event_tERS6_EEbb +00090200: jmp cs:off_2F4280 + +### FUNC 00090210 - 00090216 (6 bytes) name=._ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +00090210: jmp cs:off_2F4288 + +### FUNC 00090220 - 00090226 (6 bytes) name=._ZN10SerialPortC2Ev +00090220: jmp cs:off_2F4290 + +### FUNC 00090230 - 00090236 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorImED2Ev +00090230: jmp cs:off_2F4298 + +### FUNC 00090240 - 00090246 (6 bytes) name=._ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +00090240: jmp cs:off_2F42A0 + +### FUNC 00090250 - 00090256 (6 bytes) name=._ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE +00090250: jmp cs:off_2F42A8 + +### FUNC 00090260 - 00090266 (6 bytes) name=._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EcvbEv +00090260: jmp cs:off_2F42B0 + +### FUNC 00090270 - 00090276 (6 bytes) name=._ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEppEv +00090270: jmp cs:off_2F42B8 + +### FUNC 00090280 - 00090286 (6 bytes) name=._ZNSt6vectorIhSaIhEEaSERKS1_ +00090280: jmp cs:off_2F42C0 + +### FUNC 00090290 - 00090296 (6 bytes) name=._ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_ +00090290: jmp cs:off_2F42C8 + +### FUNC 000902A0 - 000902A6 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000902A0: jmp cs:off_2F42D0 + +### FUNC 000902B0 - 000902B6 (6 bytes) name=._ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000902B0: jmp cs:off_2F42D8 + +### FUNC 000902C0 - 000902C6 (6 bytes) name=._ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIP19struct_TerminalListmEEvT_T0_ +000902C0: jmp cs:off_2F42E0 + +### FUNC 000902D0 - 000902D6 (6 bytes) name=._ZNKSt13move_iteratorIPSsE4baseEv +000902D0: jmp cs:off_2F42E8 + +### FUNC 000902E0 - 000902E6 (6 bytes) name=._ZNSt13move_iteratorIPSsEppEv +000902E0: jmp cs:off_2F42F0 + +### FUNC 000902F0 - 000902F6 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +000902F0: jmp cs:off_2F42F8 + +### FUNC 00090300 - 00090306 (6 bytes) name=._ZSt9__advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEElEvRT_T0_St26bidirectional_iterator_tag +00090300: jmp cs:off_2F4300 + +### FUNC 00090310 - 00090316 (6 bytes) name=._ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +00090310: jmp cs:off_2F4308 + +### FUNC 00090320 - 00090326 (6 bytes) name=._ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_ +00090320: jmp cs:off_2F4310 + +### FUNC 00090330 - 00090336 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +00090330: jmp cs:off_2F4318 + +### FUNC 00090340 - 00090346 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEdeEv +00090340: jmp cs:off_2F4320 + +### FUNC 00090350 - 00090356 (6 bytes) name=._ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii +00090350: jmp cs:off_2F4328 + +### FUNC 00090360 - 00090366 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +00090360: jmp cs:off_2F4330 + +### FUNC 00090370 - 00090376 (6 bytes) name=._ZNKSt6vectorIhSaIhEE5beginEv +00090370: jmp cs:off_2F4338 + +### FUNC 00090380 - 00090386 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +00090380: jmp cs:off_2F4340 + +### FUNC 00090390 - 00090396 (6 bytes) name=._ZNSaIhED2Ev_0 +00090390: jmp cs:off_2F4348 + +### FUNC 000903A0 - 000903A6 (6 bytes) name=._ZN13TCMPresetData7isValidEv +000903A0: jmp cs:off_2F4350 + +### FUNC 000903B0 - 000903B6 (6 bytes) name=._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EcvbEv +000903B0: jmp cs:off_2F4358 + +### FUNC 000903C0 - 000903C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +000903C0: jmp cs:off_2F4360 + +### FUNC 000903D0 - 000903D6 (6 bytes) name=._ZN6serial6Serial10SerialImpl15reconfigurePortEv +000903D0: jmp cs:off_2F4368 + +### FUNC 000903E0 - 000903E6 (6 bytes) name=._ZNSt12_Destroy_auxILb0EE9__destroyIPSsEEvT_S3_ +000903E0: jmp cs:off_2F4370 + +### FUNC 000903F0 - 000903F6 (6 bytes) name=._ZNSaIPcEC2IcEERKSaIT_E +000903F0: jmp cs:off_2F4378 + +### FUNC 00090400 - 00090406 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSN_ +00090400: jmp cs:off_2F4380 + +### FUNC 00090410 - 00090416 (6 bytes) name=._ZNSaIhEC2Ev +00090410: jmp cs:off_2F4388 + +### FUNC 00090420 - 00090426 (6 bytes) name=._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_ +00090420: jmp cs:off_2F4390 + +### FUNC 00090430 - 00090436 (6 bytes) name=._ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E +00090430: jmp cs:off_2F4398 + +### FUNC 00090440 - 00090446 (6 bytes) name=._ZN6serial8PortInfoC2EOS0_ +00090440: jmp cs:off_2F43A0 + +### FUNC 00090450 - 00090456 (6 bytes) name=._ZN8nlohmann6detail30iterator_input_adapter_factoryIPhvE6createES2_S2_ +00090450: jmp cs:off_2F43A8 + +### FUNC 00090460 - 00090466 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEE4baseEv +00090460: jmp cs:off_2F43B0 + +### FUNC 00090470 - 00090476 (6 bytes) name=._ZN17ThermalController9softResetEv +00090470: jmp cs:off_2F43B8 + +### FUNC 00090480 - 00090486 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEEC2Ev +00090480: jmp cs:off_2F43C0 + +### FUNC 00090490 - 00090496 (6 bytes) name=._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEEOT_RKS1_ +00090490: jmp cs:off_2F43C8 + +### FUNC 000904A0 - 000904A6 (6 bytes) name=._ZNKSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEptEv +000904A0: jmp cs:off_2F43D0 + +### FUNC 000904B0 - 000904B6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m +000904B0: jmp cs:off_2F43D8 + +### FUNC 000904C0 - 000904C6 (6 bytes) name=._ZSt8_DestroyIPN6serial8PortInfoEEvT_S3_ +000904C0: jmp cs:off_2F43E0 + +### FUNC 000904D0 - 000904D6 (6 bytes) name=._ZSt7forwardIM19EloTCMUpdaterDeviceFbvEEOT_RNSt16remove_referenceIS3_E4typeE +000904D0: jmp cs:off_2F43E8 + +### FUNC 000904E0 - 000904E6 (6 bytes) name=._ZSt8isfinited +000904E0: jmp cs:off_2F43F0 + +### FUNC 000904F0 - 000904F6 (6 bytes) name=._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EcvbEv +000904F0: jmp cs:off_2F43F8 + +### FUNC 00090500 - 00090506 (6 bytes) name=._ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSM_vEEOSH_OT0_ +00090500: jmp cs:off_2F4400 + +### FUNC 00090510 - 00090516 (6 bytes) name=._ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +00090510: jmp cs:off_2F4408 + +### FUNC 00090520 - 00090526 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JRKS9_EEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSH_DpOSI_ +00090520: jmp cs:off_2F4410 + +### FUNC 00090530 - 00090536 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm +00090530: jmp cs:off_2F4418 + +### FUNC 00090540 - 00090546 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE17_M_initialize_mapEm +00090540: jmp cs:off_2F4420 + +### FUNC 00090550 - 00090556 (6 bytes) name=._ZN17ThermalController10limitResetEv +00090550: jmp cs:off_2F4428 + +### FUNC 00090560 - 00090566 (6 bytes) name=._ZSt12__miter_baseIPKhENSt11_Miter_baseIT_E13iterator_typeES3_ +00090560: jmp cs:off_2F4430 + +### FUNC 00090570 - 00090576 (6 bytes) name=._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m +00090570: jmp cs:off_2F4438 + +### FUNC 00090580 - 00090586 (6 bytes) name=._ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_ +00090580: jmp cs:off_2F4440 + +### FUNC 00090590 - 00090596 (6 bytes) name=._ZNSt11char_traitsIcE6lengthEPKc +00090590: jmp cs:off_2F4448 + +### FUNC 000905A0 - 000905A6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EE7_M_headERSP_ +000905A0: jmp cs:off_2F4450 + +### FUNC 000905B0 - 000905B6 (6 bytes) name=._ZN11CMagServiceC2Ev +000905B0: jmp cs:off_2F4458 + +### FUNC 000905C0 - 000905C6 (6 bytes) name=._ZNSt12_Destroy_auxILb1EE9__destroyIP19struct_TerminalListEEvT_S4_ +000905C0: jmp cs:off_2F4460 + +### FUNC 000905D0 - 000905D6 (6 bytes) name=._ZN9__gnu_cxxeqIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_ +000905D0: jmp cs:off_2F4468 + +### FUNC 000905E0 - 000905E6 (6 bytes) name=._ZSt14__copy_move_a2ILb0EPPcS1_ET1_T0_S3_S2_ +000905E0: jmp cs:off_2F4470 + +### FUNC 000905F0 - 000905F6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JRKS9_EEEvPT_DpOT0_ +000905F0: jmp cs:off_2F4478 + +### FUNC 00090600 - 00090606 (6 bytes) name=._ZNSt10_Iter_baseISt13move_iteratorIP19struct_TerminalListELb1EE7_S_baseES3_ +00090600: jmp cs:off_2F4480 + +### FUNC 00090610 - 00090616 (6 bytes) name=._ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +00090610: jmp cs:off_2F4488 + +### FUNC 00090620 - 00090626 (6 bytes) name=._ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE +00090620: jmp cs:off_2F4490 + +### FUNC 00090630 - 00090636 (6 bytes) name=._ZN8nlohmann6detail13input_adapterIPhEENS0_30iterator_input_adapter_factoryIT_vE12adapter_typeES4_S4_ +00090630: jmp cs:off_2F4498 + +### FUNC 00090640 - 00090646 (6 bytes) name=._ZN8nlohmann6detail20external_constructorILNS0_7value_tE7EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_14number_float_tE +00090640: jmp cs:off_2F44A0 + +### FUNC 00090650 - 00090656 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m +00090650: jmp cs:off_2F44A8 + +### FUNC 00090660 - 00090666 (6 bytes) name=.MAG_WillStartImmediately +00090660: jmp cs:off_2F44B0 + +### FUNC 00090670 - 00090676 (6 bytes) name=._ZN8nlohmann14adl_serializerISsvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERSsEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00090670: jmp cs:off_2F44B8 + +### FUNC 00090680 - 00090686 (6 bytes) name=._ZSt4copyIPhS0_ET0_T_S2_S1_ +00090680: jmp cs:off_2F44C0 + +### FUNC 00090690 - 00090696 (6 bytes) name=._ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St12__false_type +00090690: jmp cs:off_2F44C8 + +### FUNC 000906A0 - 000906A6 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +000906A0: jmp cs:off_2F44D0 + +### FUNC 000906B0 - 000906B6 (6 bytes) name=._ZStneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +000906B0: jmp cs:off_2F44D8 + +### FUNC 000906C0 - 000906C6 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JRKS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSG_DpOSH_ +000906C0: jmp cs:off_2F44E0 + +### FUNC 000906D0 - 000906D6 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2ERKS1_ +000906D0: jmp cs:off_2F44E8 + +### FUNC 000906E0 - 000906E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhED2Ev +000906E0: jmp cs:off_2F44F0 + +### FUNC 000906F0 - 000906F6 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEED2Ev +000906F0: jmp cs:off_2F44F8 + +### FUNC 00090700 - 00090706 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +00090700: jmp cs:off_2F4500 + +### FUNC 00090710 - 00090716 (6 bytes) name=._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE8max_sizeERKS2_ +00090710: jmp cs:off_2F4508 + +### FUNC 00090720 - 00090726 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_tailERS2_ +00090720: jmp cs:off_2F4510 + +### FUNC 00090730 - 00090736 (6 bytes) name=._ZN6serial15SerialExceptionC2EPKc +00090730: jmp cs:off_2F4518 + +### FUNC 00090740 - 00090746 (6 bytes) name=._ZN19EloTCMUpdaterDevice17setUpdateDelegateEP18ITCMUpdateDelegate +00090740: jmp cs:off_2F4520 + +### FUNC 00090750 - 00090756 (6 bytes) name=._ZN6serial15SerialExceptionD2Ev +00090750: jmp cs:off_2F4528 + +### FUNC 00090760 - 00090766 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEdeEv +00090760: jmp cs:off_2F4530 + +### FUNC 00090770 - 00090776 (6 bytes) name=._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv +00090770: jmp cs:off_2F4538 + +### FUNC 00090780 - 00090786 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsE9constructISsJSsEEEvPT_DpOT0_ +00090780: jmp cs:off_2F4540 + +### FUNC 00090790 - 00090796 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +00090790: jmp cs:off_2F4548 + +### FUNC 000907A0 - 000907A6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E +000907A0: jmp cs:off_2F4550 + +### FUNC 000907B0 - 000907B6 (6 bytes) name=._ZNKSt6vectorIbSaIbEE8max_sizeEv +000907B0: jmp cs:off_2F4558 + +### FUNC 000907C0 - 000907C6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJEEEPT_DpOT0_ +000907C0: jmp cs:off_2F4560 + +### FUNC 000907D0 - 000907D6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EEC2ERKSI_ +000907D0: jmp cs:off_2F4568 + +### FUNC 000907E0 - 000907E6 (6 bytes) name=._ZNSt6vectorI19struct_TerminalListSaIS0_EE17_M_default_appendEm +000907E0: jmp cs:off_2F4570 + +### FUNC 000907F0 - 000907F6 (6 bytes) name=._ZNSaISsED2Ev_0 +000907F0: jmp cs:off_2F4578 + +### FUNC 00090800 - 00090806 (6 bytes) name=._ZNSt6vectorIhSaIhEEC2ERKS1__0 +00090800: jmp cs:off_2F4580 + +### FUNC 00090810 - 00090816 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEED2Ev +00090810: jmp cs:off_2F4588 + +### FUNC 00090820 - 00090826 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E +00090820: jmp cs:off_2F4590 + +### FUNC 00090830 - 00090836 (6 bytes) name=._ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_ +00090830: jmp cs:off_2F4598 + +### FUNC 00090840 - 00090846 (6 bytes) name=._ZN9TCMDeviceC2Ev +00090840: jmp cs:off_2F45A0 + +### FUNC 00090850 - 00090856 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EEC2ERKS2_ +00090850: jmp cs:off_2F45A8 + +### FUNC 00090860 - 00090866 (6 bytes) name=._ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE +00090860: jmp cs:off_2F45B0 + +### FUNC 00090870 - 00090876 (6 bytes) name=._ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +00090870: jmp cs:off_2F45B8 + +### FUNC 00090880 - 00090886 (6 bytes) name=._ZNSt6threadC2IM19EloTCMUpdaterDeviceFbvEJKPS1_EEEOT_DpOT0_ +00090880: jmp cs:off_2F45C0 + +### FUNC 00090890 - 00090896 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE9_S_selectIKS0_EENSt9enable_ifIXntsrNS1_15__select_helperIT_EE5valueES6_E4typeERS6_ +00090890: jmp cs:off_2F45C8 + +### FUNC 000908A0 - 000908A6 (6 bytes) name=._ZNSt6vectorI19struct_TerminalListSaIS0_EE6resizeEm +000908A0: jmp cs:off_2F45D0 + +### FUNC 000908B0 - 000908B6 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2Ev +000908B0: jmp cs:off_2F45D8 + +### FUNC 000908C0 - 000908C6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEpLERKl +000908C0: jmp cs:off_2F45E0 + +### FUNC 000908D0 - 000908D6 (6 bytes) name=._ZN8nlohmann6detail11parse_errorC2EimPKc +000908D0: jmp cs:off_2F45E8 + +### FUNC 000908E0 - 000908E6 (6 bytes) name=._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ +000908E0: jmp cs:off_2F45F0 + +### FUNC 000908F0 - 000908F6 (6 bytes) name=._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000908F0: jmp cs:off_2F45F8 + +### FUNC 00090900 - 00090906 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKSA_RKSB_RKS7_RKS5_RKS3_ +00090900: jmp cs:off_2F4600 + +### FUNC 00090910 - 00090916 (6 bytes) name=._ZSt14__copy_move_a2ILb0EPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET1_T0_S8_S7_ +00090910: jmp cs:off_2F4608 + +### FUNC 00090920 - 00090926 (6 bytes) name=.MAG_IsProcessingImage +00090920: jmp cs:off_2F4610 + +### FUNC 00090930 - 00090936 (6 bytes) name=._ZSt7forwardIM21EloTCMHeartBeatDeviceFvvEEOT_RNSt16remove_referenceIS3_E4typeE +00090930: jmp cs:off_2F4618 + +### FUNC 00090940 - 00090946 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE15_M_allocate_mapEm +00090940: jmp cs:off_2F4620 + +### FUNC 00090950 - 00090956 (6 bytes) name=._ZSt3getILm1EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +00090950: jmp cs:off_2F4628 + +### FUNC 00090960 - 00090966 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_b +00090960: jmp cs:off_2F4630 + +### FUNC 00090970 - 00090976 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +00090970: jmp cs:off_2F4638 + +### FUNC 00090980 - 00090986 (6 bytes) name=._ZN6serial10list_portsEv +00090980: jmp cs:off_2F4640 + +### FUNC 00090990 - 00090996 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +00090990: jmp cs:off_2F4648 + +### FUNC 000909A0 - 000909A6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRSsEEEvDpOT_ +000909A0: jmp cs:off_2F4650 + +### FUNC 000909B0 - 000909B6 (6 bytes) name=._ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000909B0: jmp cs:off_2F4658 + +### FUNC 000909C0 - 000909C6 (6 bytes) name=._ZSt13__copy_move_aILb0EPPcS1_ET1_T0_S3_S2_ +000909C0: jmp cs:off_2F4660 + +### FUNC 000909D0 - 000909D6 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h1Ev +000909D0: jmp cs:off_2F4668 + +### FUNC 000909E0 - 000909E6 (6 bytes) name=._ZSt24__uninitialized_fill_n_aIPhmhhEvT_T0_RKT1_RSaIT2_E +000909E0: jmp cs:off_2F4670 + +### FUNC 000909F0 - 000909F6 (6 bytes) name=._ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000909F0: jmp cs:off_2F4678 + +### FUNC 00090A00 - 00090A06 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implC2Ev +00090A00: jmp cs:off_2F4680 + +### FUNC 00090A10 - 00090A16 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +00090A10: jmp cs:off_2F4688 + +### FUNC 00090A20 - 00090A26 (6 bytes) name=._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +00090A20: jmp cs:off_2F4690 + +### FUNC 00090A30 - 00090A36 (6 bytes) name=._ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_ +00090A30: jmp cs:off_2F4698 + +### FUNC 00090A40 - 00090A46 (6 bytes) name=._ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERSG_ +00090A40: jmp cs:off_2F46A0 + +### FUNC 00090A50 - 00090A56 (6 bytes) name=._ZN10CMagDevice14FixTemperatureEifjj +00090A50: jmp cs:off_2F46A8 + +### FUNC 00090A60 - 00090A66 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_tailERS6_ +00090A60: jmp cs:off_2F46B0 + +### FUNC 00090A70 - 00090A76 (6 bytes) name=._ZNSt6vectorIhSaIhEE18_M_assign_dispatchIPKhEEvT_S5_St12__false_type +00090A70: jmp cs:off_2F46B8 + +### FUNC 00090A80 - 00090A86 (6 bytes) name=._ZNSt8__detail15_Hash_node_baseC2Ev_0 +00090A80: jmp cs:off_2F46C0 + +### FUNC 00090A90 - 00090A96 (6 bytes) name=._ZN17ThermalController7onStartEv +00090A90: jmp cs:off_2F46C8 + +### FUNC 00090AA0 - 00090AA6 (6 bytes) name=._ZSt18make_move_iteratorIPhESt13move_iteratorIT_ES2_ +00090AA0: jmp cs:off_2F46D0 + +### FUNC 00090AB0 - 00090AB6 (6 bytes) name=._ZNSsC1EPKcRKSaIcE +00090AB0: jmp cs:off_2F46D8 + +### FUNC 00090AC0 - 00090AC6 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEED2Ev +00090AC0: jmp cs:off_2F46E0 + +### FUNC 00090AD0 - 00090AD6 (6 bytes) name=._ZNSt13move_iteratorIPiEC2ES0_ +00090AD0: jmp cs:off_2F46E8 + +### FUNC 00090AE0 - 00090AE6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +00090AE0: jmp cs:off_2F46F0 + +### FUNC 00090AF0 - 00090AF6 (6 bytes) name=._ZSt8_DestroyIPhEvT_S1_ +00090AF0: jmp cs:off_2F46F8 + +### FUNC 00090B00 - 00090B06 (6 bytes) name=._ZNSt26_Maybe_wrap_member_pointerIM19EloTCMUpdaterDeviceFbvEE9__do_wrapES2_ +00090B00: jmp cs:off_2F4700 + +### FUNC 00090B10 - 00090B16 (6 bytes) name=._ZSt8_DestroyIPiEvT_S1_ +00090B10: jmp cs:off_2F4708 + +### FUNC 00090B20 - 00090B26 (6 bytes) name=._ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_ +00090B20: jmp cs:off_2F4710 + +### FUNC 00090B30 - 00090B36 (6 bytes) name=._ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_ +00090B30: jmp cs:off_2F4718 + +### FUNC 00090B40 - 00090B46 (6 bytes) name=.usleep +00090B40: jmp cs:off_2F4720 + +### FUNC 00090B50 - 00090B56 (6 bytes) name=.strerror +00090B50: jmp cs:off_2F4728 + +### FUNC 00090B60 - 00090B66 (6 bytes) name=._ZNSaISsEC2Ev +00090B60: jmp cs:off_2F4730 + +### FUNC 00090B70 - 00090B76 (6 bytes) name=._ZN8nlohmann6detail22iterator_input_adapterIPhEC2ES2_S2_ +00090B70: jmp cs:off_2F4738 + +### FUNC 00090B80 - 00090B86 (6 bytes) name=.MAG_GetEllipseTemperatureInfo +00090B80: jmp cs:off_2F4740 + +### FUNC 00090B90 - 00090B96 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_maximumEPSt18_Rb_tree_node_base +00090B90: jmp cs:off_2F4748 + +### FUNC 00090BA0 - 00090BA6 (6 bytes) name=._ZNSsaSEOSs +00090BA0: jmp cs:off_2F4750 + +### FUNC 00090BB0 - 00090BB6 (6 bytes) name=._ZSt22__copy_move_backward_aILb1EPhS0_ET1_T0_S2_S1_ +00090BB0: jmp cs:off_2F4758 + +### FUNC 00090BC0 - 00090BC6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_St8functionIFbiNS0_13parse_event_tESA_EEb +00090BC0: jmp cs:off_2F4760 + +### FUNC 00090BD0 - 00090BD6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE7destroyISF_EEvPT_ +00090BD0: jmp cs:off_2F4768 + +### FUNC 00090BE0 - 00090BE6 (6 bytes) name=._ZNSt6thread4joinEv +00090BE0: jmp cs:off_2F4770 + +### FUNC 00090BF0 - 00090BF6 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +00090BF0: jmp cs:off_2F4778 + +### FUNC 00090C00 - 00090C06 (6 bytes) name=._ZSt8_DestroyIN6serial8PortInfoEEvPT_ +00090C00: jmp cs:off_2F4780 + +### FUNC 00090C10 - 00090C16 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_tailERS2_ +00090C10: jmp cs:off_2F4788 + +### FUNC 00090C20 - 00090C26 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev +00090C20: jmp cs:off_2F4790 + +### FUNC 00090C30 - 00090C36 (6 bytes) name=._ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev +00090C30: jmp cs:off_2F4798 + +### FUNC 00090C40 - 00090C46 (6 bytes) name=._ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERSB_ +00090C40: jmp cs:off_2F47A0 + +### FUNC 00090C50 - 00090C56 (6 bytes) name=._ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +00090C50: jmp cs:off_2F47A8 + +### FUNC 00090C60 - 00090C66 (6 bytes) name=._ZNSt10_Iter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEELb1EE7_S_baseESB_ +00090C60: jmp cs:off_2F47B0 + +### FUNC 00090C70 - 00090C76 (6 bytes) name=._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSS_ +00090C70: jmp cs:off_2F47B8 + +### FUNC 00090C80 - 00090C86 (6 bytes) name=._ZN6serial6Serial10SerialImpl13waitByteTimesEm +00090C80: jmp cs:off_2F47C0 + +### FUNC 00090C90 - 00090C96 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERKSI_ +00090C90: jmp cs:off_2F47C8 + +### FUNC 00090CA0 - 00090CA6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRbEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +00090CA0: jmp cs:off_2F47D0 + +### FUNC 00090CB0 - 00090CB6 (6 bytes) name=._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE7destroyIS1_EEvRS2_PT_ +00090CB0: jmp cs:off_2F47D8 + +### FUNC 00090CC0 - 00090CC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsE10deallocateEPSsm +00090CC0: jmp cs:off_2F47E0 + +### FUNC 00090CD0 - 00090CD6 (6 bytes) name=._ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev +00090CD0: jmp cs:off_2F47E8 + +### FUNC 00090CE0 - 00090CE6 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m +00090CE0: jmp cs:off_2F47F0 + +### FUNC 00090CF0 - 00090CF6 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +00090CF0: jmp cs:off_2F47F8 + +### FUNC 00090D00 - 00090D06 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8max_sizeEv +00090D00: jmp cs:off_2F4800 + +### FUNC 00090D10 - 00090D16 (6 bytes) name=._ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_ +00090D10: jmp cs:off_2F4808 + +### FUNC 00090D20 - 00090D26 (6 bytes) name=._ZN6serial16MillisecondTimerC2Ej +00090D20: jmp cs:off_2F4810 + +### FUNC 00090D30 - 00090D36 (6 bytes) name=.MAG_GetRgnTemperatureInfo +00090D30: jmp cs:off_2F4818 + +### FUNC 00090D40 - 00090D46 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +00090D40: jmp cs:off_2F4820 + +### FUNC 00090D50 - 00090D56 (6 bytes) name=._ZNSt13move_iteratorIP19struct_TerminalListEC2ES1_ +00090D50: jmp cs:off_2F4828 + +### FUNC 00090D60 - 00090D66 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE12_Vector_implD2Ev +00090D60: jmp cs:off_2F4830 + +### FUNC 00090D70 - 00090D76 (6 bytes) name=._ZSt8__fill_aIhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT_E7__valueEvE6__typeEPS3_S7_RKS3_ +00090D70: jmp cs:off_2F4838 + +### FUNC 00090D80 - 00090D86 (6 bytes) name=._ZNSt6vectorISsSaISsEE3endEv +00090D80: jmp cs:off_2F4840 + +### FUNC 00090D90 - 00090D96 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSH_EvEEOSC_SG_ +00090D90: jmp cs:off_2F4848 + +### FUNC 00090DA0 - 00090DA6 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +00090DA0: jmp cs:off_2F4850 + +### FUNC 00090DB0 - 00090DB6 (6 bytes) name=._ZNSt18condition_variableC1Ev +00090DB0: jmp cs:off_2F4858 + +### FUNC 00090DC0 - 00090DC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPcE10deallocateEPS1_m +00090DC0: jmp cs:off_2F4860 + +### FUNC 00090DD0 - 00090DD6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE7destroyIS2_EEvPT_ +00090DD0: jmp cs:off_2F4868 + +### FUNC 00090DE0 - 00090DE6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEED2Ev +00090DE0: jmp cs:off_2F4870 + +### FUNC 00090DF0 - 00090DF6 (6 bytes) name=._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyISt13move_iteratorIPhEEES4_mT_S6_ +00090DF0: jmp cs:off_2F4878 + +### FUNC 00090E00 - 00090E06 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10_S_destroyIS9_EENSt9enable_ifIXsrNSB_16__destroy_helperIT_EE5valueEvE4typeERSA_PSF_ +00090E00: jmp cs:off_2F4880 + +### FUNC 00090E10 - 00090E16 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +00090E10: jmp cs:off_2F4888 + +### FUNC 00090E20 - 00090E26 (6 bytes) name=._ZNKSt6vectorISsSaISsEE4sizeEv +00090E20: jmp cs:off_2F4890 + +### FUNC 00090E30 - 00090E36 (6 bytes) name=._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEmLi0EEEvRT_T0_ +00090E30: jmp cs:off_2F4898 + +### FUNC 00090E40 - 00090E46 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEE4baseEv +00090E40: jmp cs:off_2F48A0 + +### FUNC 00090E50 - 00090E56 (6 bytes) name=._ZSt9terminatev +00090E50: jmp cs:off_2F48A8 + +### FUNC 00090E60 - 00090E66 (6 bytes) name=._ZNSt18condition_variable17__wait_until_implINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +00090E60: jmp cs:off_2F48B0 + +### FUNC 00090E70 - 00090E76 (6 bytes) name=._ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb +00090E70: jmp cs:off_2F48B8 + +### FUNC 00090E80 - 00090E86 (6 bytes) name=._ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_ +00090E80: jmp cs:off_2F48C0 + +### FUNC 00090E90 - 00090E96 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +00090E90: jmp cs:off_2F48C8 + +### FUNC 00090EA0 - 00090EA6 (6 bytes) name=._ZN17ThermalController13setNewIRFrameEPFvPKhiiiE +00090EA0: jmp cs:off_2F48D0 + +### FUNC 00090EB0 - 00090EB6 (6 bytes) name=._ZNSt5dequeIcSaIcEED2Ev +00090EB0: jmp cs:off_2F48D8 + +### FUNC 00090EC0 - 00090EC6 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +00090EC0: jmp cs:off_2F48E0 + +### FUNC 00090ED0 - 00090ED6 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +00090ED0: jmp cs:off_2F48E8 + +### FUNC 00090EE0 - 00090EE6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE6strtofERdPKcPPc +00090EE0: jmp cs:off_2F48F0 + +### FUNC 00090EF0 - 00090EF6 (6 bytes) name=._ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEEC2Ev +00090EF0: jmp cs:off_2F48F8 + +### FUNC 00090F00 - 00090F06 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JRKSE_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSK_ +00090F00: jmp cs:off_2F4900 + +### FUNC 00090F10 - 00090F16 (6 bytes) name=._ZNSt6vectorIiSaIiEE12emplace_backIJiEEEvDpOT_ +00090F10: jmp cs:off_2F4908 + +### FUNC 00090F20 - 00090F26 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +00090F20: jmp cs:off_2F4910 + +### FUNC 00090F30 - 00090F36 (6 bytes) name=._ZN6serial6Serial4readERSsm +00090F30: jmp cs:off_2F4918 + +### FUNC 00090F40 - 00090F46 (6 bytes) name=._ZSt8_DestroyIP19struct_TerminalListEvT_S2_ +00090F40: jmp cs:off_2F4920 + +### FUNC 00090F50 - 00090F56 (6 bytes) name=._ZNSt6vectorIN6serial8PortInfoESaIS1_EE19_M_emplace_back_auxIJRKS1_EEEvDpOT_ +00090F50: jmp cs:off_2F4928 + +### FUNC 00090F60 - 00090F66 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv +00090F60: jmp cs:off_2F4930 + +### FUNC 00090F70 - 00090F76 (6 bytes) name=._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_error_messageEv +00090F70: jmp cs:off_2F4938 + +### FUNC 00090F80 - 00090F86 (6 bytes) name=._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E +00090F80: jmp cs:off_2F4940 + +### FUNC 00090F90 - 00090F96 (6 bytes) name=.MAG_StartProcessImage +00090F90: jmp cs:off_2F4948 + +### FUNC 00090FA0 - 00090FA6 (6 bytes) name=._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv +00090FA0: jmp cs:off_2F4950 + +### FUNC 00090FB0 - 00090FB6 (6 bytes) name=._ZN14EloMotorDeviceC2Ev +00090FB0: jmp cs:off_2F4958 + +### FUNC 00090FC0 - 00090FC6 (6 bytes) name=.MAG_IsLinked +00090FC0: jmp cs:off_2F4960 + +### FUNC 00090FD0 - 00090FD6 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JEEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSK_DpOSL_ +00090FD0: jmp cs:off_2F4968 + +### FUNC 00090FE0 - 00090FE6 (6 bytes) name=._ZSt12__get_helperILm0ERKSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +00090FE0: jmp cs:off_2F4970 + +### FUNC 00090FF0 - 00090FF6 (6 bytes) name=._ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE +00090FF0: jmp cs:off_2F4978 + +### FUNC 00091000 - 00091006 (6 bytes) name=._ZN17ThermalController15getPresetSerialEv +00091000: jmp cs:off_2F4980 + +### FUNC 00091010 - 00091016 (6 bytes) name=._ZNSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES9_ +00091010: jmp cs:off_2F4988 + +### FUNC 00091020 - 00091026 (6 bytes) name=._ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +00091020: jmp cs:off_2F4990 + +### FUNC 00091030 - 00091036 (6 bytes) name=._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +00091030: jmp cs:off_2F4998 + +### FUNC 00091040 - 00091046 (6 bytes) name=._ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +00091040: jmp cs:off_2F49A0 + +### FUNC 00091050 - 00091056 (6 bytes) name=._ZN9TCMDevice16handleValidFrameERKSt6vectorIhSaIhEE +00091050: jmp cs:off_2F49A8 + +### FUNC 00091060 - 00091066 (6 bytes) name=._ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv +00091060: jmp cs:off_2F49B0 + +### FUNC 00091070 - 00091076 (6 bytes) name=._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb1EEE +00091070: jmp cs:off_2F49B8 + +### FUNC 00091080 - 00091086 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8max_sizeEv +00091080: jmp cs:off_2F49C0 + +### FUNC 00091090 - 00091096 (6 bytes) name=._ZN10CMagDevice19GetTemperatureProbeEjjj +00091090: jmp cs:off_2F49C8 + +### FUNC 000910A0 - 000910A6 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +000910A0: jmp cs:off_2F49D0 + +### FUNC 000910B0 - 000910B6 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB__0 +000910B0: jmp cs:off_2F49D8 + +### FUNC 000910C0 - 000910C6 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPiES1_iET0_T_S4_S3_RSaIT1_E +000910C0: jmp cs:off_2F49E0 + +### FUNC 000910D0 - 000910D6 (6 bytes) name=.__dynamic_cast +000910D0: jmp cs:off_2F49E8 + +### FUNC 000910E0 - 000910E6 (6 bytes) name=._ZNSt11unique_lockISt5mutexEC2ERS0_ +000910E0: jmp cs:off_2F49F0 + +### FUNC 000910F0 - 000910F6 (6 bytes) name=._ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +000910F0: jmp cs:off_2F49F8 + +### FUNC 00091100 - 00091106 (6 bytes) name=._ZNSsixEm +00091100: jmp cs:off_2F4A00 + +### FUNC 00091110 - 00091116 (6 bytes) name=._ZNKSt13move_iteratorIPN6serial8PortInfoEEdeEv +00091110: jmp cs:off_2F4A08 + +### FUNC 00091120 - 00091126 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE10deallocateEPSD_m +00091120: jmp cs:off_2F4A10 + +### FUNC 00091130 - 00091136 (6 bytes) name=._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEaSEOS7_ +00091130: jmp cs:off_2F4A18 + +### FUNC 00091140 - 00091146 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5resetEv +00091140: jmp cs:off_2F4A20 + +### FUNC 00091150 - 00091156 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7is_nullEv +00091150: jmp cs:off_2F4A28 + +### FUNC 00091160 - 00091166 (6 bytes) name=._ZNSt12_Destroy_auxILb1EE9__destroyIPhEEvT_S3_ +00091160: jmp cs:off_2F4A30 + +### FUNC 00091170 - 00091176 (6 bytes) name=._ZNSt13move_iteratorIPSsEC2ES0_ +00091170: jmp cs:off_2F4A38 + +### FUNC 00091180 - 00091186 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv +00091180: jmp cs:off_2F4A40 + +### FUNC 00091190 - 00091196 (6 bytes) name=._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +00091190: jmp cs:off_2F4A48 + +### FUNC 000911A0 - 000911A6 (6 bytes) name=._ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEiEvRT_T0_ +000911A0: jmp cs:off_2F4A50 + +### FUNC 000911B0 - 000911B6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb1EEE +000911B0: jmp cs:off_2F4A58 + +### FUNC 000911C0 - 000911C6 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000911C0: jmp cs:off_2F4A60 + +### FUNC 000911D0 - 000911D6 (6 bytes) name=._ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ +000911D0: jmp cs:off_2F4A68 + +### FUNC 000911E0 - 000911E6 (6 bytes) name=._ZN8nlohmann6detail20primitive_iterator_t7set_endEv +000911E0: jmp cs:off_2F4A70 + +### FUNC 000911F0 - 000911F6 (6 bytes) name=._ZN6serial6Serial10SerialImpl14setFlowcontrolENS_13flowcontrol_tE +000911F0: jmp cs:off_2F4A78 + +### FUNC 00091200 - 00091206 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_ +00091200: jmp cs:off_2F4A80 + +### FUNC 00091210 - 00091216 (6 bytes) name=._ZNSt6thread10_Impl_baseD2Ev_0 +00091210: jmp cs:off_2F4A88 + +### FUNC 00091220 - 00091226 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +00091220: jmp cs:off_2F4A90 + +### FUNC 00091230 - 00091236 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_S8_ET0_T_SC_SB_RSaIT1_E +00091230: jmp cs:off_2F4A98 + +### FUNC 00091240 - 00091246 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10_S_destroyISE_EENSt9enable_ifIXsrNSG_16__destroy_helperIT_EE5valueEvE4typeERSF_PSK_ +00091240: jmp cs:off_2F4AA0 + +### FUNC 00091250 - 00091256 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERSK_ +00091250: jmp cs:off_2F4AA8 + +### FUNC 00091260 - 00091266 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSJ_EvEEOSE_SI_ +00091260: jmp cs:off_2F4AB0 + +### FUNC 00091270 - 00091276 (6 bytes) name=._ZNSt6vectorIhSaIhEEC2Ev_0 +00091270: jmp cs:off_2F4AB8 + +### FUNC 00091280 - 00091286 (6 bytes) name=._ZNSt6vectorI19struct_TerminalListSaIS0_EEC2Ev +00091280: jmp cs:off_2F4AC0 + +### FUNC 00091290 - 00091296 (6 bytes) name=._ZN6serial6Serial10SerialImpl11flushOutputEv +00091290: jmp cs:off_2F4AC8 + +### FUNC 000912A0 - 000912A6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_ +000912A0: jmp cs:off_2F4AD0 + +### FUNC 000912B0 - 000912B6 (6 bytes) name=._ZNSt6vectorIhSaIhEE12emplace_backIJhEEEvDpOT_ +000912B0: jmp cs:off_2F4AD8 + +### FUNC 000912C0 - 000912C6 (6 bytes) name=._ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE +000912C0: jmp cs:off_2F4AE0 + +### FUNC 000912D0 - 000912D6 (6 bytes) name=._ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EEC2IS4_EEOT_ +000912D0: jmp cs:off_2F4AE8 + +### FUNC 000912E0 - 000912E6 (6 bytes) name=._ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEC2ERKS4_RKS6_RKS7_RKS8_ +000912E0: jmp cs:off_2F4AF0 + +### FUNC 000912F0 - 000912F6 (6 bytes) name=._ZNSaIiED2Ev +000912F0: jmp cs:off_2F4AF8 + +### FUNC 00091300 - 00091306 (6 bytes) name=._ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE +00091300: jmp cs:off_2F4B00 + +### FUNC 00091310 - 00091316 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv +00091310: jmp cs:off_2F4B08 + +### FUNC 00091320 - 00091326 (6 bytes) name=._ZN10CMagDevice6UnlockEv +00091320: jmp cs:off_2F4B10 + +### FUNC 00091330 - 00091336 (6 bytes) name=._ZN17ThermalController6onStopEv +00091330: jmp cs:off_2F4B18 + +### FUNC 00091340 - 00091346 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8pop_backEv +00091340: jmp cs:off_2F4B20 + +### FUNC 00091350 - 00091356 (6 bytes) name=._ZN8nlohmann6detail16invalid_iterator6createEiRKSs +00091350: jmp cs:off_2F4B28 + +### FUNC 00091360 - 00091366 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JRKSA_EEEvPT_DpOT0_ +00091360: jmp cs:off_2F4B30 + +### FUNC 00091370 - 00091376 (6 bytes) name=._ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ESA_ +00091370: jmp cs:off_2F4B38 + +### FUNC 00091380 - 00091386 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +00091380: jmp cs:off_2F4B40 + +### FUNC 00091390 - 00091396 (6 bytes) name=._ZN17ThermalController8startMagEv +00091390: jmp cs:off_2F4B48 + +### FUNC 000913A0 - 000913A6 (6 bytes) name=._ZNSs6insertEmRKSs +000913A0: jmp cs:off_2F4B50 + +### FUNC 000913B0 - 000913B6 (6 bytes) name=._ZNSt14_Function_baseD2Ev +000913B0: jmp cs:off_2F4B58 + +### FUNC 000913C0 - 000913C6 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE11lower_boundERSA_ +000913C0: jmp cs:off_2F4B60 + +### FUNC 000913D0 - 000913D6 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPSsSt13move_iteratorIS0_EET0_T_ +000913D0: jmp cs:off_2F4B68 + +### FUNC 000913E0 - 000913E6 (6 bytes) name=._ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode +000913E0: jmp cs:off_2F4B70 + +### FUNC 000913F0 - 000913F6 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000913F0: jmp cs:off_2F4B78 + +### FUNC 00091400 - 00091406 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backERKS7_ +00091400: jmp cs:off_2F4B80 + +### FUNC 00091410 - 00091416 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEppEv +00091410: jmp cs:off_2F4B88 + +### FUNC 00091420 - 00091426 (6 bytes) name=._ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc +00091420: jmp cs:off_2F4B90 + +### FUNC 00091430 - 00091436 (6 bytes) name=._ZN10CMagDevice10LinkCameraEj +00091430: jmp cs:off_2F4B98 + +### FUNC 00091440 - 00091446 (6 bytes) name=._ZSt10__distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag +00091440: jmp cs:off_2F4BA0 + +### FUNC 00091450 - 00091456 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_ENKUlPSsE_clESG_ +00091450: jmp cs:off_2F4BA8 + +### FUNC 00091460 - 00091466 (6 bytes) name=._ZSt9to_stringm +00091460: jmp cs:off_2F4BB0 + +### FUNC 00091470 - 00091476 (6 bytes) name=._ZN8nlohmann6detail20primitive_iterator_tC2Ev +00091470: jmp cs:off_2F4BB8 + +### FUNC 00091480 - 00091486 (6 bytes) name=._ZN19EloTCMUpdaterDevice11beginUpdateEv +00091480: jmp cs:off_2F4BC0 + +### FUNC 00091490 - 00091496 (6 bytes) name=._ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE4sizeEv +00091490: jmp cs:off_2F4BC8 + +### FUNC 000914A0 - 000914A6 (6 bytes) name=._ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E +000914A0: jmp cs:off_2F4BD0 + +### FUNC 000914B0 - 000914B6 (6 bytes) name=._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_ +000914B0: jmp cs:off_2F4BD8 + +### FUNC 000914C0 - 000914C6 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixEOSs +000914C0: jmp cs:off_2F4BE0 + +### FUNC 000914D0 - 000914D6 (6 bytes) name=._ZNKSt14_Bit_referencecvbEv +000914D0: jmp cs:off_2F4BE8 + +### FUNC 000914E0 - 000914E6 (6 bytes) name=._ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_ +000914E0: jmp cs:off_2F4BF0 + +### FUNC 000914F0 - 000914F6 (6 bytes) name=._ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +000914F0: jmp cs:off_2F4BF8 + +### FUNC 00091500 - 00091506 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE7destroyIS6_EEvPT_ +00091500: jmp cs:off_2F4C00 + +### FUNC 00091510 - 00091516 (6 bytes) name=._ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +00091510: jmp cs:off_2F4C08 + +### FUNC 00091520 - 00091526 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E7releaseEv +00091520: jmp cs:off_2F4C10 + +### FUNC 00091530 - 00091536 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +00091530: jmp cs:off_2F4C18 + +### FUNC 00091540 - 00091546 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_ +00091540: jmp cs:off_2F4C20 + +### FUNC 00091550 - 00091556 (6 bytes) name=._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +00091550: jmp cs:off_2F4C28 + +### FUNC 00091560 - 00091566 (6 bytes) name=._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +00091560: jmp cs:off_2F4C30 + +### FUNC 00091570 - 00091576 (6 bytes) name=._ZSt9to_stringi +00091570: jmp cs:off_2F4C38 + +### FUNC 00091580 - 00091586 (6 bytes) name=._ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +00091580: jmp cs:off_2F4C40 + +### FUNC 00091590 - 00091596 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJNS0_6detail7value_tEEEEvDpOT_ +00091590: jmp cs:off_2F4C48 + +### FUNC 000915A0 - 000915A6 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000915A0: jmp cs:off_2F4C50 + +### FUNC 000915B0 - 000915B6 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE8allocateERS0_m +000915B0: jmp cs:off_2F4C58 + +### FUNC 000915C0 - 000915C6 (6 bytes) name=._ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_ +000915C0: jmp cs:off_2F4C60 + +### FUNC 000915D0 - 000915D6 (6 bytes) name=._ZN6serial6Serial10SerialImpl7setPortERKSs +000915D0: jmp cs:off_2F4C68 + +### FUNC 000915E0 - 000915E6 (6 bytes) name=._Z16timespec_from_msj +000915E0: jmp cs:off_2F4C70 + +### FUNC 000915F0 - 000915F6 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8max_sizeEv +000915F0: jmp cs:off_2F4C78 + +### FUNC 00091600 - 00091606 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +00091600: jmp cs:off_2F4C80 + +### FUNC 00091610 - 00091616 (6 bytes) name=._ZSt12__miter_baseIPmENSt11_Miter_baseIT_E13iterator_typeES2_ +00091610: jmp cs:off_2F4C88 + +### FUNC 00091620 - 00091626 (6 bytes) name=._ZNSt11_Tuple_implILm2EJEEC2Ev +00091620: jmp cs:off_2F4C90 + +### FUNC 00091630 - 00091636 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhE7destroyIhEEvPT_ +00091630: jmp cs:off_2F4C98 + +### FUNC 00091640 - 00091646 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +00091640: jmp cs:off_2F4CA0 + +### FUNC 00091650 - 00091656 (6 bytes) name=._ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERKS1_ +00091650: jmp cs:off_2F4CA8 + +### FUNC 00091660 - 00091666 (6 bytes) name=._ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +00091660: jmp cs:off_2F4CB0 + +### FUNC 00091670 - 00091676 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv +00091670: jmp cs:off_2F4CB8 + +### FUNC 00091680 - 00091686 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_ +00091680: jmp cs:off_2F4CC0 + +### FUNC 00091690 - 00091696 (6 bytes) name=._ZNSt11_Tuple_implILm0EJOSsEEC2ISsJEvEEOT_DpOT0_ +00091690: jmp cs:off_2F4CC8 + +### FUNC 000916A0 - 000916A6 (6 bytes) name=._ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E +000916A0: jmp cs:off_2F4CD0 + +### FUNC 000916B0 - 000916B6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRdEEEvDpOT_ +000916B0: jmp cs:off_2F4CD8 + +### FUNC 000916C0 - 000916C6 (6 bytes) name=._ZNSt5dequeIcSaIcEE3endEv +000916C0: jmp cs:off_2F4CE0 + +### FUNC 000916D0 - 000916D6 (6 bytes) name=._ZSt12__miter_baseISt13move_iteratorIPhEENSt11_Miter_baseIT_E13iterator_typeES4_ +000916D0: jmp cs:off_2F4CE8 + +### FUNC 000916E0 - 000916E6 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EEC2Ev +000916E0: jmp cs:off_2F4CF0 + +### FUNC 000916F0 - 000916F6 (6 bytes) name=._ZN16ThermalTCMDevice14getMotorDeviceEv +000916F0: jmp cs:off_2F4CF8 + +### FUNC 00091700 - 00091706 (6 bytes) name=.MAG_SetColorPalette +00091700: jmp cs:off_2F4D00 + +### FUNC 00091710 - 00091716 (6 bytes) name=._ZNSt5tupleIJRKSsEEC2ES1_ +00091710: jmp cs:off_2F4D08 + +### FUNC 00091720 - 00091726 (6 bytes) name=._ZSt11__addressofISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEPT_RSB_ +00091720: jmp cs:off_2F4D10 + +### FUNC 00091730 - 00091736 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0 +00091730: jmp cs:off_2F4D18 + +### FUNC 00091740 - 00091746 (6 bytes) name=._ZN17ThermalController18checkRotateWithFFCEv +00091740: jmp cs:off_2F4D20 + +### FUNC 00091750 - 00091756 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv +00091750: jmp cs:off_2F4D28 + +### FUNC 00091760 - 00091766 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhE9constructIhJhEEEvPT_DpOT0_ +00091760: jmp cs:off_2F4D30 + +### FUNC 00091770 - 00091776 (6 bytes) name=.tcgetattr +00091770: jmp cs:off_2F4D38 + +### FUNC 00091780 - 00091786 (6 bytes) name=._ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IS1_EEOT_ +00091780: jmp cs:off_2F4D40 + +### FUNC 00091790 - 00091796 (6 bytes) name=._ZN6serial6Serial10SerialImpl11setBytesizeENS_10bytesize_tE +00091790: jmp cs:off_2F4D48 + +### FUNC 000917A0 - 000917A6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKb +000917A0: jmp cs:off_2F4D50 + +### FUNC 000917B0 - 000917B6 (6 bytes) name=._ZN8nlohmann6detail12out_of_rangeC2EiPKc +000917B0: jmp cs:off_2F4D58 + +### FUNC 000917C0 - 000917C6 (6 bytes) name=._ZSteqIcEbRKSaIT_ES3_ +000917C0: jmp cs:off_2F4D60 + +### FUNC 000917D0 - 000917D6 (6 bytes) name=._ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +000917D0: jmp cs:off_2F4D68 + +### FUNC 000917E0 - 000917E6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOS9_ +000917E0: jmp cs:off_2F4D70 + +### FUNC 000917F0 - 000917F6 (6 bytes) name=._ZNKSt6vectorIN6serial8PortInfoESaIS1_EE12_M_check_lenEmPKc +000917F0: jmp cs:off_2F4D78 + +### FUNC 00091800 - 00091806 (6 bytes) name=._ZN10CMagDevice17IsProcessingImageEv +00091800: jmp cs:off_2F4D80 + +### FUNC 00091810 - 00091816 (6 bytes) name=._ZN9__gnu_cxxneIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +00091810: jmp cs:off_2F4D88 + +### FUNC 00091820 - 00091826 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +00091820: jmp cs:off_2F4D90 + +### FUNC 00091830 - 00091836 (6 bytes) name=._ZNSt6vectorIbSaIbEE9push_backEb +00091830: jmp cs:off_2F4D98 + +### FUNC 00091840 - 00091846 (6 bytes) name=._ZNSt6vectorIN6serial8PortInfoESaIS1_EE5beginEv +00091840: jmp cs:off_2F4DA0 + +### FUNC 00091850 - 00091856 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt18_Rb_tree_node_base +00091850: jmp cs:off_2F4DA8 + +### FUNC 00091860 - 00091866 (6 bytes) name=._ZNKSt6vectorIhSaIhEEixEm +00091860: jmp cs:off_2F4DB0 + +### FUNC 00091870 - 00091876 (6 bytes) name=._ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPSsES3_EET0_T_S6_S5_ +00091870: jmp cs:off_2F4DB8 + +### FUNC 00091880 - 00091886 (6 bytes) name=._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1EEEES4_RKNS1_IT_T0_EE +00091880: jmp cs:off_2F4DC0 + +### FUNC 00091890 - 00091896 (6 bytes) name=._ZNSt16allocator_traitsISaI19struct_TerminalListEE11_S_max_sizeIKS1_EENSt9enable_ifIXsrNS2_16__maxsize_helperIT_EE5valueEmE4typeERS7_ +00091890: jmp cs:off_2F4DC8 + +### FUNC 000918A0 - 000918A6 (6 bytes) name=._ZNSt10_Iter_baseISt13move_iteratorIPP16TCMVirtualDeviceELb1EE7_S_baseES4_ +000918A0: jmp cs:off_2F4DD0 + +### FUNC 000918B0 - 000918B6 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_ED2Ev +000918B0: jmp cs:off_2F4DD8 + +### FUNC 000918C0 - 000918C6 (6 bytes) name=._ZSt16forward_as_tupleIJSsEESt5tupleIJDpOT_EES3_ +000918C0: jmp cs:off_2F4DE0 + +### FUNC 000918D0 - 000918D6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE37select_on_container_copy_constructionERKS8_ +000918D0: jmp cs:off_2F4DE8 + +### FUNC 000918E0 - 000918E6 (6 bytes) name=._ZN14EloMotorDevice6rotateEi +000918E0: jmp cs:off_2F4DF0 + +### FUNC 000918F0 - 000918F6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2ERKSE_ +000918F0: jmp cs:off_2F4DF8 + +### FUNC 00091900 - 00091906 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE8allocateERSA_m +00091900: jmp cs:off_2F4E00 + +### FUNC 00091910 - 00091916 (6 bytes) name=._ZNSt13_Bit_iteratormIEl +00091910: jmp cs:off_2F4E08 + +### FUNC 00091920 - 00091926 (6 bytes) name=._ZNSt10_Iter_baseISt13_Bit_iteratorLb0EE7_S_baseES0_ +00091920: jmp cs:off_2F4E10 + +### FUNC 00091930 - 00091936 (6 bytes) name=._ZNSt6thread6detachEv +00091930: jmp cs:off_2F4E18 + +### FUNC 00091940 - 00091946 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +00091940: jmp cs:off_2F4E20 + +### FUNC 00091950 - 00091956 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implC2Ev +00091950: jmp cs:off_2F4E28 + +### FUNC 00091960 - 00091966 (6 bytes) name=._ZSt12__get_helperILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +00091960: jmp cs:off_2F4E30 + +### FUNC 00091970 - 00091976 (6 bytes) name=._ZNSt10_Iter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEELb0EE7_S_baseES9_ +00091970: jmp cs:off_2F4E38 + +### FUNC 00091980 - 00091986 (6 bytes) name=._ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EEC2IRSA_EEOT_ +00091980: jmp cs:off_2F4E40 + +### FUNC 00091990 - 00091996 (6 bytes) name=._ZNSt5tupleIJOSsEEC2IJSsEvEEDpOT_ +00091990: jmp cs:off_2F4E48 + +### FUNC 000919A0 - 000919A6 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEE8_S_nwordEm +000919A0: jmp cs:off_2F4E50 + +### FUNC 000919B0 - 000919B6 (6 bytes) name=._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEixERS5_ +000919B0: jmp cs:off_2F4E58 + +### FUNC 000919C0 - 000919C6 (6 bytes) name=._ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_ +000919C0: jmp cs:off_2F4E60 + +### FUNC 000919D0 - 000919D6 (6 bytes) name=._ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEED2Ev +000919D0: jmp cs:off_2F4E68 + +### FUNC 000919E0 - 000919E6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSP_ +000919E0: jmp cs:off_2F4E70 + +### FUNC 000919F0 - 000919F6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS1_ +000919F0: jmp cs:off_2F4E78 + +### FUNC 00091A00 - 00091A06 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +00091A00: jmp cs:off_2F4E80 + +### FUNC 00091A10 - 00091A16 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +00091A10: jmp cs:off_2F4E88 + +### FUNC 00091A20 - 00091A26 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv +00091A20: jmp cs:off_2F4E90 + +### FUNC 00091A30 - 00091A36 (6 bytes) name=._ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE +00091A30: jmp cs:off_2F4E98 + +### FUNC 00091A40 - 00091A46 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJRKS9_EEEPT_DpOT0_ +00091A40: jmp cs:off_2F4EA0 + +### FUNC 00091A50 - 00091A56 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE18is_number_unsignedEv +00091A50: jmp cs:off_2F4EA8 + +### FUNC 00091A60 - 00091A66 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE12emplace_backIJS1_EEEvDpOT_ +00091A60: jmp cs:off_2F4EB0 + +### FUNC 00091A70 - 00091A76 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +00091A70: jmp cs:off_2F4EB8 + +### FUNC 00091A80 - 00091A86 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_decimal_pointEv +00091A80: jmp cs:off_2F4EC0 + +### FUNC 00091A90 - 00091A96 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE12_S_constructISsJRKSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +00091A90: jmp cs:off_2F4EC8 + +### FUNC 00091AA0 - 00091AA6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JDnEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +00091AA0: jmp cs:off_2F4ED0 + +### FUNC 00091AB0 - 00091AB6 (6 bytes) name=._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +00091AB0: jmp cs:off_2F4ED8 + +### FUNC 00091AC0 - 00091AC6 (6 bytes) name=._ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2ERKS4_ +00091AC0: jmp cs:off_2F4EE0 + +### FUNC 00091AD0 - 00091AD6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +00091AD0: jmp cs:off_2F4EE8 + +### FUNC 00091AE0 - 00091AE6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +00091AE0: jmp cs:off_2F4EF0 + +### FUNC 00091AF0 - 00091AF6 (6 bytes) name=._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERbEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00091AF0: jmp cs:off_2F4EF8 + +### FUNC 00091B00 - 00091B06 (6 bytes) name=._ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_ +00091B00: jmp cs:off_2F4F00 + +### FUNC 00091B10 - 00091B16 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEdeEv +00091B10: jmp cs:off_2F4F08 + +### FUNC 00091B20 - 00091B26 (6 bytes) name=._ZNKSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEclIJEvEEbPS0_DpOT_ +00091B20: jmp cs:off_2F4F10 + +### FUNC 00091B30 - 00091B36 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +00091B30: jmp cs:off_2F4F18 + +### FUNC 00091B40 - 00091B46 (6 bytes) name=._ZN10CMagDevice10InitializeEv +00091B40: jmp cs:off_2F4F20 + +### FUNC 00091B50 - 00091B56 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorImEC2Ev +00091B50: jmp cs:off_2F4F28 + +### FUNC 00091B60 - 00091B66 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8allocateEmPKv +00091B60: jmp cs:off_2F4F30 + +### FUNC 00091B70 - 00091B76 (6 bytes) name=._ZNSt6vectorIhSaIhEE8pop_backEv +00091B70: jmp cs:off_2F4F38 + +### FUNC 00091B80 - 00091B86 (6 bytes) name=._ZN11ILimitEventC2Ev +00091B80: jmp cs:off_2F4F40 + +### FUNC 00091B90 - 00091B96 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EED2Ev +00091B90: jmp cs:off_2F4F48 + +### FUNC 00091BA0 - 00091BA6 (6 bytes) name=._ZN11FTDICommandC2ERKSt6vectorIhSaIhEE +00091BA0: jmp cs:off_2F4F50 + +### FUNC 00091BB0 - 00091BB6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEpLERKl +00091BB0: jmp cs:off_2F4F58 + +### FUNC 00091BC0 - 00091BC6 (6 bytes) name=._ZN17ThermalController11isTCMOpenedEv +00091BC0: jmp cs:off_2F4F60 + +### FUNC 00091BD0 - 00091BD6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEE +00091BD0: jmp cs:off_2F4F68 + +### FUNC 00091BE0 - 00091BE6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_value7destroyENS_6detail7value_tE +00091BE0: jmp cs:off_2F4F70 + +### FUNC 00091BF0 - 00091BF6 (6 bytes) name=._ZNSt18condition_variableD1Ev +00091BF0: jmp cs:off_2F4F78 + +### FUNC 00091C00 - 00091C06 (6 bytes) name=._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv +00091C00: jmp cs:off_2F4F80 + +### FUNC 00091C10 - 00091C16 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS9_EENSt9enable_ifIXsrNSA_16__maxsize_helperIT_EE5valueEmE4typeERSF_ +00091C10: jmp cs:off_2F4F88 + +### FUNC 00091C20 - 00091C26 (6 bytes) name=._ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +00091C20: jmp cs:off_2F4F90 + +### FUNC 00091C30 - 00091C36 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_ +00091C30: jmp cs:off_2F4F98 + +### FUNC 00091C40 - 00091C46 (6 bytes) name=._ZSt8_DestroyIPhhEvT_S1_RSaIT0_E +00091C40: jmp cs:off_2F4FA0 + +### FUNC 00091C50 - 00091C56 (6 bytes) name=._ZNSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEC2ES2_ +00091C50: jmp cs:off_2F4FA8 + +### FUNC 00091C60 - 00091C66 (6 bytes) name=._ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEED2Ev +00091C60: jmp cs:off_2F4FB0 + +### FUNC 00091C70 - 00091C76 (6 bytes) name=._ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev +00091C70: jmp cs:off_2F4FB8 + +### FUNC 00091C80 - 00091C86 (6 bytes) name=._ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E +00091C80: jmp cs:off_2F4FC0 + +### FUNC 00091C90 - 00091C96 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv +00091C90: jmp cs:off_2F4FC8 + +### FUNC 00091CA0 - 00091CA6 (6 bytes) name=.memmove +00091CA0: jmp cs:off_2F4FD0 + +### FUNC 00091CB0 - 00091CB6 (6 bytes) name=._ZNKSt5arrayIhLm5EE4sizeEv +00091CB0: jmp cs:off_2F4FD8 + +### FUNC 00091CC0 - 00091CC6 (6 bytes) name=._ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev +00091CC0: jmp cs:off_2F4FE0 + +### FUNC 00091CD0 - 00091CD6 (6 bytes) name=._ZN13TCMPresetData12resetDefaultEv +00091CD0: jmp cs:off_2F4FE8 + +### FUNC 00091CE0 - 00091CE6 (6 bytes) name=._ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSO_vEEOSJ_OT0_ +00091CE0: jmp cs:off_2F4FF0 + +### FUNC 00091CF0 - 00091CF6 (6 bytes) name=._ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +00091CF0: jmp cs:off_2F4FF8 + +### FUNC 00091D00 - 00091D06 (6 bytes) name=._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_number_floatEv +00091D00: jmp cs:off_2F5000 + +### FUNC 00091D10 - 00091D16 (6 bytes) name=._ZN9TCMDevice4openESs +00091D10: jmp cs:off_2F5008 + +### FUNC 00091D20 - 00091D26 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListEC2Ev +00091D20: jmp cs:off_2F5010 + +### FUNC 00091D30 - 00091D36 (6 bytes) name=._ZNSsC2IPcEET_S1_RKSaIcE +00091D30: jmp cs:off_2F5018 + +### FUNC 00091D40 - 00091D46 (6 bytes) name=._ZNSt8__detail20_Prime_rehash_policyC2Ef +00091D40: jmp cs:off_2F5020 + +### FUNC 00091D50 - 00091D56 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRSsEEEvDpOT_ +00091D50: jmp cs:off_2F5028 + +### FUNC 00091D60 - 00091D66 (6 bytes) name=.MAG_UnLockFrame +00091D60: jmp cs:off_2F5030 + +### FUNC 00091D70 - 00091D76 (6 bytes) name=._ZNSt4pairIKSsiED2Ev +00091D70: jmp cs:off_2F5038 + +### FUNC 00091D80 - 00091D86 (6 bytes) name=._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_JS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ +00091D80: jmp cs:off_2F5040 + +### FUNC 00091D90 - 00091D96 (6 bytes) name=._ZN6serial6Serial10SerialImpl5getRIEv +00091D90: jmp cs:off_2F5048 + +### FUNC 00091DA0 - 00091DA6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJEEEPT_DpOT0_ +00091DA0: jmp cs:off_2F5050 + +### FUNC 00091DB0 - 00091DB6 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implC2Ev +00091DB0: jmp cs:off_2F5058 + +### FUNC 00091DC0 - 00091DC6 (6 bytes) name=._ZN6serial11IOExceptionD2Ev +00091DC0: jmp cs:off_2F5060 + +### FUNC 00091DD0 - 00091DD6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIcE9constructIcJcEEEvPT_DpOT0_ +00091DD0: jmp cs:off_2F5068 + +### FUNC 00091DE0 - 00091DE6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2IKS1_JEvEEOT_DpOT0_ +00091DE0: jmp cs:off_2F5070 + +### FUNC 00091DF0 - 00091DF6 (6 bytes) name=._ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +00091DF0: jmp cs:off_2F5078 + +### FUNC 00091E00 - 00091E06 (6 bytes) name=._ZNSt14_Bit_referenceaSERKS_ +00091E00: jmp cs:off_2F5080 + +### FUNC 00091E10 - 00091E16 (6 bytes) name=._ZN6serial6Serial10SerialImpl9writeLockEv +00091E10: jmp cs:off_2F5088 + +### FUNC 00091E20 - 00091E26 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_ED2Ev +00091E20: jmp cs:off_2F5090 + +### FUNC 00091E30 - 00091E36 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2Ev +00091E30: jmp cs:off_2F5098 + +### FUNC 00091E40 - 00091E46 (6 bytes) name=._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +00091E40: jmp cs:off_2F50A0 + +### FUNC 00091E50 - 00091E56 (6 bytes) name=.vsnprintf +00091E50: jmp cs:off_2F50A8 + +### FUNC 00091E60 - 00091E66 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPhS2_EET0_T_S4_S3_ +00091E60: jmp cs:off_2F50B0 + +### FUNC 00091E70 - 00091E76 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB__0 +00091E70: jmp cs:off_2F50B8 + +### FUNC 00091E80 - 00091E86 (6 bytes) name=.MAG_LoadBufferedDDT +00091E80: jmp cs:off_2F50C0 + +### FUNC 00091E90 - 00091E96 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE7destroyIS2_EEvPT_ +00091E90: jmp cs:off_2F50C8 + +### FUNC 00091EA0 - 00091EA6 (6 bytes) name=._ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5beginEv +00091EA0: jmp cs:off_2F50D0 + +### FUNC 00091EB0 - 00091EB6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_erase_auxESt23_Rb_tree_const_iteratorISA_E +00091EB0: jmp cs:off_2F50D8 + +### FUNC 00091EC0 - 00091EC6 (6 bytes) name=._ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_ +00091EC0: jmp cs:off_2F50E0 + +### FUNC 00091ED0 - 00091ED6 (6 bytes) name=._ZNSt6vectorISsSaISsEE9push_backERKSs +00091ED0: jmp cs:off_2F50E8 + +### FUNC 00091EE0 - 00091EE6 (6 bytes) name=._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERmEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00091EE0: jmp cs:off_2F50F0 + +### FUNC 00091EF0 - 00091EF6 (6 bytes) name=._ZNSt11unique_lockISt5mutexE6unlockEv +00091EF0: jmp cs:off_2F50F8 + +### FUNC 00091F00 - 00091F06 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSH_EvEEOSC_SG_ +00091F00: jmp cs:off_2F5100 + +### FUNC 00091F10 - 00091F16 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2Ev +00091F10: jmp cs:off_2F5108 + +### FUNC 00091F20 - 00091F26 (6 bytes) name=._ZNSt26_Maybe_wrap_member_pointerIM10SerialPortFvvEE9__do_wrapES2_ +00091F20: jmp cs:off_2F5110 + +### FUNC 00091F30 - 00091F36 (6 bytes) name=._ZSt7forwardIN8nlohmann6detail13parse_event_tEEOT_RNSt16remove_referenceIS3_E4typeE +00091F30: jmp cs:off_2F5118 + +### FUNC 00091F40 - 00091F46 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +00091F40: jmp cs:off_2F5120 + +### FUNC 00091F50 - 00091F56 (6 bytes) name=._ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJSsEEEvDpOT_ +00091F50: jmp cs:off_2F5128 + +### FUNC 00091F60 - 00091F66 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv +00091F60: jmp cs:off_2F5130 + +### FUNC 00091F70 - 00091F76 (6 bytes) name=._ZN11CMagService16GetTerminalCountEv +00091F70: jmp cs:off_2F5138 + +### FUNC 00091F80 - 00091F86 (6 bytes) name=._ZSt4moveIRSt8functionIFbiN8nlohmann6detail13parse_event_tERNS1_10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES6_IhSaIhEEEEEEEONSt16remove_referenceIT_E4typeEOSG_ +00091F80: jmp cs:off_2F5140 + +### FUNC 00091F90 - 00091F96 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE +00091F90: jmp cs:off_2F5148 + +### FUNC 00091FA0 - 00091FA6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEv +00091FA0: jmp cs:off_2F5150 + +### FUNC 00091FB0 - 00091FB6 (6 bytes) name=._ZN17ThermalController17createLegalResultEiiii +00091FB0: jmp cs:off_2F5158 + +### FUNC 00091FC0 - 00091FC6 (6 bytes) name=._ZNSt6vectorIhSaIhEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00091FC0: jmp cs:off_2F5160 + +### FUNC 00091FD0 - 00091FD6 (6 bytes) name=._ZNSt15_Deque_iteratorIcRcPcEC2Ev +00091FD0: jmp cs:off_2F5168 + +### FUNC 00091FE0 - 00091FE6 (6 bytes) name=._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEC2EmRKS1_RKS3_RKS7_ +00091FE0: jmp cs:off_2F5170 + +### FUNC 00091FF0 - 00091FF6 (6 bytes) name=._ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +00091FF0: jmp cs:off_2F5178 + +### FUNC 00092000 - 00092006 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +00092000: jmp cs:off_2F5180 + +### FUNC 00092010 - 00092016 (6 bytes) name=._ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEdeEv +00092010: jmp cs:off_2F5188 + +### FUNC 00092020 - 00092026 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB_ +00092020: jmp cs:off_2F5190 + +### FUNC 00092030 - 00092036 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv +00092030: jmp cs:off_2F5198 + +### FUNC 00092040 - 00092046 (6 bytes) name=._ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSJ_vEEOSE_OT0_ +00092040: jmp cs:off_2F51A0 + +### FUNC 00092050 - 00092056 (6 bytes) name=._ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2IS3_EERKSaIT_E +00092050: jmp cs:off_2F51A8 + +### FUNC 00092060 - 00092066 (6 bytes) name=._ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +00092060: jmp cs:off_2F51B0 + +### FUNC 00092070 - 00092076 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12is_discardedEv +00092070: jmp cs:off_2F51B8 + +### FUNC 00092080 - 00092086 (6 bytes) name=.MAG_SaveDDT +00092080: jmp cs:off_2F51C0 + +### FUNC 00092090 - 00092096 (6 bytes) name=._ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET1_T0_SH_SG_ +00092090: jmp cs:off_2F51C8 + +### FUNC 000920A0 - 000920A6 (6 bytes) name=._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv +000920A0: jmp cs:off_2F51D0 + +### FUNC 000920B0 - 000920B6 (6 bytes) name=._ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EOSC_ +000920B0: jmp cs:off_2F51D8 + +### FUNC 000920C0 - 000920C6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +000920C0: jmp cs:off_2F51E0 + +### FUNC 000920D0 - 000920D6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_tailERS6_ +000920D0: jmp cs:off_2F51E8 + +### FUNC 000920E0 - 000920E6 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EED2Ev +000920E0: jmp cs:off_2F51F0 + +### FUNC 000920F0 - 000920F6 (6 bytes) name=._ZNKSt9type_infoeqERKS_ +000920F0: jmp cs:off_2F51F8 + +### FUNC 00092100 - 00092106 (6 bytes) name=._ZN6serial6Serial5read_EPhm +00092100: jmp cs:off_2F5200 + +### FUNC 00092110 - 00092116 (6 bytes) name=._ZNSt6vectorIiSaIiEEC2Ev +00092110: jmp cs:off_2F5208 + +### FUNC 00092120 - 00092126 (6 bytes) name=._ZNSt6threadC2Ev +00092120: jmp cs:off_2F5210 + +### FUNC 00092130 - 00092136 (6 bytes) name=._ZNSt14__array_traitsIhLm5EE6_S_refERA5_Khm +00092130: jmp cs:off_2F5218 + +### FUNC 00092140 - 00092146 (6 bytes) name=._ZN6serial6Serial6write_EPKhm +00092140: jmp cs:off_2F5220 + +### FUNC 00092150 - 00092156 (6 bytes) name=._ZN13TCMPresetData9getSerialEv +00092150: jmp cs:off_2F5228 + +### FUNC 00092160 - 00092166 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +00092160: jmp cs:off_2F5230 + +### FUNC 00092170 - 00092176 (6 bytes) name=._ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKSsiELb1EEEEERKSaIT_E +00092170: jmp cs:off_2F5238 + +### FUNC 00092180 - 00092186 (6 bytes) name=._ZN14EloMotorDevice20setMotorDoneListenerEP10IMotorDone +00092180: jmp cs:off_2F5240 + +### FUNC 00092190 - 00092196 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_ +00092190: jmp cs:off_2F5248 + +### FUNC 000921A0 - 000921A6 (6 bytes) name=._ZN17ThermalController6rotateEi +000921A0: jmp cs:off_2F5250 + +### FUNC 000921B0 - 000921B6 (6 bytes) name=._ZN9TCMDeviceD2Ev_0 +000921B0: jmp cs:off_2F5258 + +### FUNC 000921C0 - 000921C6 (6 bytes) name=._ZNSt10_Head_baseILm0ERKSsLb0EE7_M_headERS2_ +000921C0: jmp cs:off_2F5260 + +### FUNC 000921D0 - 000921D6 (6 bytes) name=._ZNSt8__detail9_EqualityISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEC2Ev +000921D0: jmp cs:off_2F5268 + +### FUNC 000921E0 - 000921E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JEEEvPT_DpOT0_ +000921E0: jmp cs:off_2F5270 + +### FUNC 000921F0 - 000921F6 (6 bytes) name=._ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE +000921F0: jmp cs:off_2F5278 + +### FUNC 00092200 - 00092206 (6 bytes) name=._ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18get_number_integerEv +00092200: jmp cs:off_2F5280 + +### FUNC 00092210 - 00092216 (6 bytes) name=._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_ +00092210: jmp cs:off_2F5288 + +### FUNC 00092220 - 00092226 (6 bytes) name=._ZN13TCMPresetDataD2Ev +00092220: jmp cs:off_2F5290 + +### FUNC 00092230 - 00092236 (6 bytes) name=._ZN8nlohmann6detail12out_of_rangeC2ERKS1_ +00092230: jmp cs:off_2F5298 + +### FUNC 00092240 - 00092246 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE37select_on_container_copy_constructionERKS0_ +00092240: jmp cs:off_2F52A0 + +### FUNC 00092250 - 00092256 (6 bytes) name=._ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E +00092250: jmp cs:off_2F52A8 + +### FUNC 00092260 - 00092266 (6 bytes) name=._ZN16ThermalTCMDevice14getEERomDeviceEv +00092260: jmp cs:off_2F52B0 + +### FUNC 00092270 - 00092276 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE13is_structuredEv +00092270: jmp cs:off_2F52B8 + +### FUNC 00092280 - 00092286 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE12_S_constructISsJSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +00092280: jmp cs:off_2F52C0 + +### FUNC 00092290 - 00092296 (6 bytes) name=.__errno_location +00092290: jmp cs:off_2F52C8 + +### FUNC 000922A0 - 000922A6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE8skip_bomEv +000922A0: jmp cs:off_2F52D0 + +### FUNC 000922B0 - 000922B6 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000922B0: jmp cs:off_2F52D8 + +### FUNC 000922C0 - 000922C6 (6 bytes) name=.pthread_equal +000922C0: jmp cs:off_2F52E0 + +### FUNC 000922D0 - 000922D6 (6 bytes) name=._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EcvbEv +000922D0: jmp cs:off_2F52E8 + +### FUNC 000922E0 - 000922E6 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000922E0: jmp cs:off_2F52F0 + +### FUNC 000922F0 - 000922F6 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5beginEv +000922F0: jmp cs:off_2F52F8 + +### FUNC 00092300 - 00092306 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_b +00092300: jmp cs:off_2F5300 + +### FUNC 00092310 - 00092316 (6 bytes) name=.MAG_GetRemoteInfo +00092310: jmp cs:off_2F5308 + +### FUNC 00092320 - 00092326 (6 bytes) name=._ZN9__gnu_cxx17__is_null_pointerIcEEbPT_ +00092320: jmp cs:off_2F5310 + +### FUNC 00092330 - 00092336 (6 bytes) name=._ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE +00092330: jmp cs:off_2F5318 + +### FUNC 00092340 - 00092346 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEED2Ev +00092340: jmp cs:off_2F5320 + +### FUNC 00092350 - 00092356 (6 bytes) name=._ZN9TCMDevice5closeEv +00092350: jmp cs:off_2F5328 + +### FUNC 00092360 - 00092366 (6 bytes) name=._ZN6serial7TimeoutC2Ejjjjj +00092360: jmp cs:off_2F5330 + +### FUNC 00092370 - 00092376 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +00092370: jmp cs:off_2F5338 + +### FUNC 00092380 - 00092386 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE11_Deque_implC2Ev +00092380: jmp cs:off_2F5340 + +### FUNC 00092390 - 00092396 (6 bytes) name=._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EcvbEv +00092390: jmp cs:off_2F5348 + +### FUNC 000923A0 - 000923A6 (6 bytes) name=._ZN17ThermalController13setTempOffsetEd +000923A0: jmp cs:off_2F5350 + +### FUNC 000923B0 - 000923B6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +000923B0: jmp cs:off_2F5358 + +### FUNC 000923C0 - 000923C6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_ +000923C0: jmp cs:off_2F5360 + +### FUNC 000923D0 - 000923D6 (6 bytes) name=._ZNSaI19struct_TerminalListEC2Ev +000923D0: jmp cs:off_2F5368 + +### FUNC 000923E0 - 000923E6 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIhE8max_sizeEv +000923E0: jmp cs:off_2F5370 + +### FUNC 000923F0 - 000923F6 (6 bytes) name=._ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_ +000923F0: jmp cs:off_2F5378 + +### FUNC 00092400 - 00092406 (6 bytes) name=._ZSt13copy_backwardIPPcS1_ET0_T_S3_S2_ +00092400: jmp cs:off_2F5380 + +### FUNC 00092410 - 00092416 (6 bytes) name=._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +00092410: jmp cs:off_2F5388 + +### FUNC 00092420 - 00092426 (6 bytes) name=._ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJRKSsEEEvDpOT_ +00092420: jmp cs:off_2F5390 + +### FUNC 00092430 - 00092436 (6 bytes) name=._ZN17ThermalController21getTemperatureAtPointEii +00092430: jmp cs:off_2F5398 + +### FUNC 00092440 - 00092446 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +00092440: jmp cs:off_2F53A0 + +### FUNC 00092450 - 00092456 (6 bytes) name=._ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +00092450: jmp cs:off_2F53A8 + +### FUNC 00092460 - 00092466 (6 bytes) name=._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyEv +00092460: jmp cs:off_2F53B0 + +### FUNC 00092470 - 00092476 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEED2Ev +00092470: jmp cs:off_2F53B8 + +### FUNC 00092480 - 00092486 (6 bytes) name=._ZSt12__get_helperILm0EOSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS2_DpT1_EE +00092480: jmp cs:off_2F53C0 + +### FUNC 00092490 - 00092496 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRbEEEvDpOT_ +00092490: jmp cs:off_2F53C8 + +### FUNC 000924A0 - 000924A6 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000924A0: jmp cs:off_2F53D0 + +### FUNC 000924B0 - 000924B6 (6 bytes) name=._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_ +000924B0: jmp cs:off_2F53D8 + +### FUNC 000924C0 - 000924C6 (6 bytes) name=._ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev +000924C0: jmp cs:off_2F53E0 + +### FUNC 000924D0 - 000924D6 (6 bytes) name=._ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEiEvRT_T0_ +000924D0: jmp cs:off_2F53E8 + +### FUNC 000924E0 - 000924E6 (6 bytes) name=._ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EE7_M_headERS5_ +000924E0: jmp cs:off_2F53F0 + +### FUNC 000924F0 - 000924F6 (6 bytes) name=._ZNKSt6vectorIhSaIhEE8max_sizeEv +000924F0: jmp cs:off_2F53F8 + +### FUNC 00092500 - 00092506 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JRKS5_EEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSD_DpOSE_ +00092500: jmp cs:off_2F5400 + +### FUNC 00092510 - 00092516 (6 bytes) name=._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev_0 +00092510: jmp cs:off_2F5408 + +### FUNC 00092520 - 00092526 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EED2Ev +00092520: jmp cs:off_2F5410 + +### FUNC 00092530 - 00092536 (6 bytes) name=._ZNSt6vectorIbSaIbEED2Ev +00092530: jmp cs:off_2F5418 + +### FUNC 00092540 - 00092546 (6 bytes) name=._ZSt25__throw_bad_function_callv +00092540: jmp cs:off_2F5420 + +### FUNC 00092550 - 00092556 (6 bytes) name=._ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERS1_ +00092550: jmp cs:off_2F5428 + +### FUNC 00092560 - 00092566 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS8_ +00092560: jmp cs:off_2F5430 + +### FUNC 00092570 - 00092576 (6 bytes) name=._ZNKSs4dataEv +00092570: jmp cs:off_2F5438 + +### FUNC 00092580 - 00092586 (6 bytes) name=._ZN11FTDICommand10getCommandEv +00092580: jmp cs:off_2F5440 + +### FUNC 00092590 - 00092596 (6 bytes) name=._ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +00092590: jmp cs:off_2F5448 + +### FUNC 000925A0 - 000925A6 (6 bytes) name=.MAG_SetAutoEnlargePara +000925A0: jmp cs:off_2F5450 + +### FUNC 000925B0 - 000925B6 (6 bytes) name=._ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000925B0: jmp cs:off_2F5458 + +### FUNC 000925C0 - 000925C6 (6 bytes) name=._ZN11CMagService11EnumCamerasEv +000925C0: jmp cs:off_2F5460 + +### FUNC 000925D0 - 000925D6 (6 bytes) name=._ZSt3maxIiERKT_S2_S2_ +000925D0: jmp cs:off_2F5468 + +### FUNC 000925E0 - 000925E6 (6 bytes) name=._ZSt12__niter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEENSt11_Niter_baseIT_E13iterator_typeESD_ +000925E0: jmp cs:off_2F5470 + +### FUNC 000925F0 - 000925F6 (6 bytes) name=._ZNSt6vectorIN6serial8PortInfoESaIS1_EE3endEv +000925F0: jmp cs:off_2F5478 + +### FUNC 00092600 - 00092606 (6 bytes) name=._ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E +00092600: jmp cs:off_2F5480 + +### FUNC 00092610 - 00092616 (6 bytes) name=._ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEEvRKT_RNS9_8string_tE +00092610: jmp cs:off_2F5488 + +### FUNC 00092620 - 00092626 (6 bytes) name=._ZN13TCMPresetDataC2ESt6vectorIhSaIhEE +00092620: jmp cs:off_2F5490 + +### FUNC 00092630 - 00092636 (6 bytes) name=._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +00092630: jmp cs:off_2F5498 + +### FUNC 00092640 - 00092646 (6 bytes) name=._ZNSaIP16TCMVirtualDeviceEC2Ev +00092640: jmp cs:off_2F54A0 + +### FUNC 00092650 - 00092656 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +00092650: jmp cs:off_2F54A8 + +### FUNC 00092660 - 00092666 (6 bytes) name=._ZSt4moveIRcEONSt16remove_referenceIT_E4typeEOS2_ +00092660: jmp cs:off_2F54B0 + +### FUNC 00092670 - 00092676 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +00092670: jmp cs:off_2F54B8 + +### FUNC 00092680 - 00092686 (6 bytes) name=._ZSt14__copy_move_a2ILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +00092680: jmp cs:off_2F54C0 + +### FUNC 00092690 - 00092696 (6 bytes) name=._ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_ET1_T0_SA_S9_ +00092690: jmp cs:off_2F54C8 + +### FUNC 000926A0 - 000926A6 (6 bytes) name=._ZNKSt6vectorIbSaIbEE3endEv +000926A0: jmp cs:off_2F54D0 + +### FUNC 000926B0 - 000926B6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJOSsEEC2EOS1_ +000926B0: jmp cs:off_2F54D8 + +### FUNC 000926C0 - 000926C6 (6 bytes) name=._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000926C0: jmp cs:off_2F54E0 + +### FUNC 000926D0 - 000926D6 (6 bytes) name=._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000926D0: jmp cs:off_2F54E8 + +### FUNC 000926E0 - 000926E6 (6 bytes) name=._ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000926E0: jmp cs:off_2F54F0 + +### FUNC 000926F0 - 000926F6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_ +000926F0: jmp cs:off_2F54F8 + +### FUNC 00092700 - 00092706 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEEC2Ev +00092700: jmp cs:off_2F5500 + +### FUNC 00092710 - 00092716 (6 bytes) name=._ZN16TCMFrameDelegateC2Ev +00092710: jmp cs:off_2F5508 + +### FUNC 00092720 - 00092726 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev +00092720: jmp cs:off_2F5510 + +### FUNC 00092730 - 00092736 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +00092730: jmp cs:off_2F5518 + +### FUNC 00092740 - 00092746 (6 bytes) name=._ZN11FTDICommandD2Ev +00092740: jmp cs:off_2F5520 + +### FUNC 00092750 - 00092756 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +00092750: jmp cs:off_2F5528 + +### FUNC 00092760 - 00092766 (6 bytes) name=._ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv +00092760: jmp cs:off_2F5530 + +### FUNC 00092770 - 00092776 (6 bytes) name=._ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERKSG_ +00092770: jmp cs:off_2F5538 + +### FUNC 00092780 - 00092786 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSD_ +00092780: jmp cs:off_2F5540 + +### FUNC 00092790 - 00092796 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEEC2Ev +00092790: jmp cs:off_2F5548 + +### FUNC 000927A0 - 000927A6 (6 bytes) name=._ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc +000927A0: jmp cs:off_2F5550 + +### FUNC 000927B0 - 000927B6 (6 bytes) name=._ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEED2Ev +000927B0: jmp cs:off_2F5558 + +### FUNC 000927C0 - 000927C6 (6 bytes) name=._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERdEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000927C0: jmp cs:off_2F5560 + +### FUNC 000927D0 - 000927D6 (6 bytes) name=._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ +000927D0: jmp cs:off_2F5568 + +### FUNC 000927E0 - 000927E6 (6 bytes) name=._ZSt7forwardIRKSaISt4pairIKSsiEEEOT_RNSt16remove_referenceIS6_E4typeE +000927E0: jmp cs:off_2F5570 + +### FUNC 000927F0 - 000927F6 (6 bytes) name=._ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEC2ERS9_ +000927F0: jmp cs:off_2F5578 + +### FUNC 00092800 - 00092806 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +00092800: jmp cs:off_2F5580 + +### FUNC 00092810 - 00092816 (6 bytes) name=._ZSt18uninitialized_copyIPhS0_ET0_T_S2_S1_ +00092810: jmp cs:off_2F5588 + +### FUNC 00092820 - 00092826 (6 bytes) name=._ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv +00092820: jmp cs:off_2F5590 + +### FUNC 00092830 - 00092836 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EE7_S_cgetERKS3_ +00092830: jmp cs:off_2F5598 + +### FUNC 00092840 - 00092846 (6 bytes) name=._ZSt7advanceIPhmEvRT_T0_ +00092840: jmp cs:off_2F55A0 + +### FUNC 00092850 - 00092856 (6 bytes) name=._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv +00092850: jmp cs:off_2F55A8 + +### FUNC 00092860 - 00092866 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +00092860: jmp cs:off_2F55B0 + +### FUNC 00092870 - 00092876 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8max_sizeEv +00092870: jmp cs:off_2F55B8 + +### FUNC 00092880 - 00092886 (6 bytes) name=._ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPhS1_EEvEEvT_S7_ +00092880: jmp cs:off_2F55C0 + +### FUNC 00092890 - 00092896 (6 bytes) name=._ZN17ThermalController7stopMagEv +00092890: jmp cs:off_2F55C8 + +### FUNC 000928A0 - 000928A6 (6 bytes) name=._ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_ +000928A0: jmp cs:off_2F55D0 + +### FUNC 000928B0 - 000928B6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEmiERKl +000928B0: jmp cs:off_2F55D8 + +### FUNC 000928C0 - 000928C6 (6 bytes) name=._ZNKSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEclIJEvEEvPS0_DpOT_ +000928C0: jmp cs:off_2F55E0 + +### FUNC 000928D0 - 000928D6 (6 bytes) name=.MAG_GetEXLevel +000928D0: jmp cs:off_2F55E8 + +### FUNC 000928E0 - 000928E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE10deallocateEPS2_m +000928E0: jmp cs:off_2F55F0 + +### FUNC 000928F0 - 000928F6 (6 bytes) name=._ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_ +000928F0: jmp cs:off_2F55F8 + +### FUNC 00092900 - 00092906 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv +00092900: jmp cs:off_2F5600 + +### FUNC 00092910 - 00092916 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +00092910: jmp cs:off_2F5608 + +### FUNC 00092920 - 00092926 (6 bytes) name=._ZNKSt15_Deque_iteratorIcRcPcEixEl +00092920: jmp cs:off_2F5610 + +### FUNC 00092930 - 00092936 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +00092930: jmp cs:off_2F5618 + +### FUNC 00092940 - 00092946 (6 bytes) name=.strcmp +00092940: jmp cs:off_2F5620 + +### FUNC 00092950 - 00092956 (6 bytes) name=._ZN10SerialPort11setDelegateEP19IHandleDataDelegate +00092950: jmp cs:off_2F5628 + +### FUNC 00092960 - 00092966 (6 bytes) name=._ZN17ThermalController16setDistanceErrorEPFvvE +00092960: jmp cs:off_2F5630 + +### FUNC 00092970 - 00092976 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +00092970: jmp cs:off_2F5638 + +### FUNC 00092980 - 00092986 (6 bytes) name=._ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E +00092980: jmp cs:off_2F5640 + +### FUNC 00092990 - 00092996 (6 bytes) name=._ZSt4moveIRiEONSt16remove_referenceIT_E4typeEOS2_ +00092990: jmp cs:off_2F5648 + +### FUNC 000929A0 - 000929A6 (6 bytes) name=._ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIPKhEEPhmT_S6_ +000929A0: jmp cs:off_2F5650 + +### FUNC 000929B0 - 000929B6 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +000929B0: jmp cs:off_2F5658 + +### FUNC 000929C0 - 000929C6 (6 bytes) name=._ZN17ThermalController22readTemperatureAtPointEiiP17TemperatureResult +000929C0: jmp cs:off_2F5660 + +### FUNC 000929D0 - 000929D6 (6 bytes) name=._ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +000929D0: jmp cs:off_2F5668 + +### FUNC 000929E0 - 000929E6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_ +000929E0: jmp cs:off_2F5670 + +### FUNC 000929F0 - 000929F6 (6 bytes) name=._ZN9__gnu_cxxeqIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +000929F0: jmp cs:off_2F5678 + +### FUNC 00092A00 - 00092A06 (6 bytes) name=._ZN10CMagDevice10SetFFCModeEi +00092A00: jmp cs:off_2F5680 + +### FUNC 00092A10 - 00092A16 (6 bytes) name=._ZNSt13_Bit_iteratorppEi +00092A10: jmp cs:off_2F5688 + +### FUNC 00092A20 - 00092A26 (6 bytes) name=._ZN19EloTCMUpdaterDeviceC2Ev +00092A20: jmp cs:off_2F5690 + +### FUNC 00092A30 - 00092A36 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE9constructIhJRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +00092A30: jmp cs:off_2F5698 + +### FUNC 00092A40 - 00092A46 (6 bytes) name=._ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +00092A40: jmp cs:off_2F56A0 + +### FUNC 00092A50 - 00092A56 (6 bytes) name=.__cxa_allocate_exception +00092A50: jmp cs:off_2F56A8 + +### FUNC 00092A60 - 00092A66 (6 bytes) name=._ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_ +00092A60: jmp cs:off_2F56B0 + +### FUNC 00092A70 - 00092A76 (6 bytes) name=._ZSt11__addressofISt4pairIKSsiEEPT_RS3_ +00092A70: jmp cs:off_2F56B8 + +### FUNC 00092A80 - 00092A86 (6 bytes) name=._ZNSt5dequeIcSaIcEE16_M_pop_front_auxEv +00092A80: jmp cs:off_2F56C0 + +### FUNC 00092A90 - 00092A96 (6 bytes) name=._ZNSt7_Mem_fnIM10SerialPortFvvEEC2ES2_ +00092A90: jmp cs:off_2F56C8 + +### FUNC 00092AA0 - 00092AA6 (6 bytes) name=._ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev +00092AA0: jmp cs:off_2F56D0 + +### FUNC 00092AB0 - 00092AB6 (6 bytes) name=._ZSt12__get_helperILm1EP19EloTCMUpdaterDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +00092AB0: jmp cs:off_2F56D8 + +### FUNC 00092AC0 - 00092AC6 (6 bytes) name=._ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +00092AC0: jmp cs:off_2F56E0 + +### FUNC 00092AD0 - 00092AD6 (6 bytes) name=._ZNSt10__pair_getILm0EE5__getIKSsiEERT_RSt4pairIS3_T0_E +00092AD0: jmp cs:off_2F56E8 + +### FUNC 00092AE0 - 00092AE6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +00092AE0: jmp cs:off_2F56F0 + +### FUNC 00092AF0 - 00092AF6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +00092AF0: jmp cs:off_2F56F8 + +### FUNC 00092B00 - 00092B06 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS2_ +00092B00: jmp cs:off_2F5700 + +### FUNC 00092B10 - 00092B16 (6 bytes) name=._ZNSt6vectorIiSaIiEE9push_backEOi +00092B10: jmp cs:off_2F5708 + +### FUNC 00092B20 - 00092B26 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv +00092B20: jmp cs:off_2F5710 + +### FUNC 00092B30 - 00092B36 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_headERS6_ +00092B30: jmp cs:off_2F5718 + +### FUNC 00092B40 - 00092B46 (6 bytes) name=._ZN8nlohmann6detail9exceptionD2Ev_0 +00092B40: jmp cs:off_2F5720 + +### FUNC 00092B50 - 00092B56 (6 bytes) name=._ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJRKhEEEvDpOT_ +00092B50: jmp cs:off_2F5728 + +### FUNC 00092B60 - 00092B66 (6 bytes) name=._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev +00092B60: jmp cs:off_2F5730 + +### FUNC 00092B70 - 00092B76 (6 bytes) name=._ZNSaIcED1Ev +00092B70: jmp cs:off_2F5738 + +### FUNC 00092B80 - 00092B86 (6 bytes) name=._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEv +00092B80: jmp cs:off_2F5740 + +### FUNC 00092B90 - 00092B96 (6 bytes) name=._ZNSt5dequeIcSaIcEE5frontEv +00092B90: jmp cs:off_2F5748 + +### FUNC 00092BA0 - 00092BA6 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_S_cgetERKS2_ +00092BA0: jmp cs:off_2F5750 + +### FUNC 00092BB0 - 00092BB6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE10deallocateEPS1_m +00092BB0: jmp cs:off_2F5758 + +### FUNC 00092BC0 - 00092BC6 (6 bytes) name=._ZN6serial6Serial5writeEPKhm +00092BC0: jmp cs:off_2F5760 + +### FUNC 00092BD0 - 00092BD6 (6 bytes) name=._ZNKSt6chrono8durationIlSt5ratioILl1ELl1000EEE5countEv +00092BD0: jmp cs:off_2F5768 + +### FUNC 00092BE0 - 00092BE6 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +00092BE0: jmp cs:off_2F5770 + +### FUNC 00092BF0 - 00092BF6 (6 bytes) name=._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS6_14adl_serializerES9_IhSaIhEEEEEESH_vEEOT_OT0_ +00092BF0: jmp cs:off_2F5778 + +### FUNC 00092C00 - 00092C06 (6 bytes) name=._ZNSt8__detail20_Prime_rehash_policy8_M_resetEm +00092C00: jmp cs:off_2F5780 + +### FUNC 00092C10 - 00092C16 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv +00092C10: jmp cs:off_2F5788 + +### FUNC 00092C20 - 00092C26 (6 bytes) name=._ZN10CMagDevice10TriggerFFCEv +00092C20: jmp cs:off_2F5790 + +### FUNC 00092C30 - 00092C36 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_binaryEv +00092C30: jmp cs:off_2F5798 + +### FUNC 00092C40 - 00092C46 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJS7_EEEvDpOT_ +00092C40: jmp cs:off_2F57A0 + +### FUNC 00092C50 - 00092C56 (6 bytes) name=._ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJhEEEvDpOT_ +00092C50: jmp cs:off_2F57A8 + +### FUNC 00092C60 - 00092C66 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +00092C60: jmp cs:off_2F57B0 + +### FUNC 00092C70 - 00092C76 (6 bytes) name=._ZNKSt6vectorIhSaIhEE5frontEv +00092C70: jmp cs:off_2F57B8 + +### FUNC 00092C80 - 00092C86 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8allocateEmPKv +00092C80: jmp cs:off_2F57C0 + +### FUNC 00092C90 - 00092C96 (6 bytes) name=._ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +00092C90: jmp cs:off_2F57C8 + +### FUNC 00092CA0 - 00092CA6 (6 bytes) name=._ZN6serial6Serial10SerialImpl11setBaudrateEm +00092CA0: jmp cs:off_2F57D0 + +### FUNC 00092CB0 - 00092CB6 (6 bytes) name=._ZSt11__addressofIKhEPT_RS1_ +00092CB0: jmp cs:off_2F57D8 + +### FUNC 00092CC0 - 00092CC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JRKSF_EEEvPT_DpOT0_ +00092CC0: jmp cs:off_2F57E0 + +### FUNC 00092CD0 - 00092CD6 (6 bytes) name=._ZNSt5dequeIcSaIcEE9push_backEOc +00092CD0: jmp cs:off_2F57E8 + +### FUNC 00092CE0 - 00092CE6 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE7destroyIiEEvRS0_PT_ +00092CE0: jmp cs:off_2F57F0 + +### FUNC 00092CF0 - 00092CF6 (6 bytes) name=._ZNSt6vectorI19struct_TerminalListSaIS0_EED2Ev +00092CF0: jmp cs:off_2F57F8 + +### FUNC 00092D00 - 00092D06 (6 bytes) name=._ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE +00092D00: jmp cs:off_2F5800 + +### FUNC 00092D10 - 00092D16 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_ +00092D10: jmp cs:off_2F5808 + +### FUNC 00092D20 - 00092D26 (6 bytes) name=._ZN17ThermalController7triggerEv +00092D20: jmp cs:off_2F5810 + +### FUNC 00092D30 - 00092D36 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +00092D30: jmp cs:off_2F5818 + +### FUNC 00092D40 - 00092D46 (6 bytes) name=.localeconv +00092D40: jmp cs:off_2F5820 + +### FUNC 00092D50 - 00092D56 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_ +00092D50: jmp cs:off_2F5828 + +### FUNC 00092D60 - 00092D66 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJNS0_6detail7value_tEEEEvDpOT_ +00092D60: jmp cs:off_2F5830 + +### FUNC 00092D70 - 00092D76 (6 bytes) name=._ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJiEEEvDpOT_ +00092D70: jmp cs:off_2F5838 + +### FUNC 00092D80 - 00092D86 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EEC2Ev +00092D80: jmp cs:off_2F5840 + +### FUNC 00092D90 - 00092D96 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE8allocateEmPKv +00092D90: jmp cs:off_2F5848 + +### FUNC 00092DA0 - 00092DA6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRdEEEvPT_DpOT0_ +00092DA0: jmp cs:off_2F5850 + +### FUNC 00092DB0 - 00092DB6 (6 bytes) name=._ZN14EloEEROMDevice11writePresetERKSt6vectorIhSaIhEE +00092DB0: jmp cs:off_2F5858 + +### FUNC 00092DC0 - 00092DC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS8_m +00092DC0: jmp cs:off_2F5860 + +### FUNC 00092DD0 - 00092DD6 (6 bytes) name=._ZNSt9exceptionD2Ev +00092DD0: jmp cs:off_2F5868 + +### FUNC 00092DE0 - 00092DE6 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJS6_EEEvDpOT_ +00092DE0: jmp cs:off_2F5870 + +### FUNC 00092DF0 - 00092DF6 (6 bytes) name=.__cxa_free_exception +00092DF0: jmp cs:off_2F5878 + +### FUNC 00092E00 - 00092E06 (6 bytes) name=._ZNKSt13move_iteratorIPN6serial8PortInfoEE4baseEv +00092E00: jmp cs:off_2F5880 + +### FUNC 00092E10 - 00092E16 (6 bytes) name=._ZN6serial6Serial10SerialImpl12waitReadableEj +00092E10: jmp cs:off_2F5888 + +### FUNC 00092E20 - 00092E26 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E +00092E20: jmp cs:off_2F5890 + +### FUNC 00092E30 - 00092E36 (6 bytes) name=._ZNKSt13move_iteratorIP19struct_TerminalListE4baseEv +00092E30: jmp cs:off_2F5898 + +### FUNC 00092E40 - 00092E46 (6 bytes) name=._ZStneIPSsEbRKSt13move_iteratorIT_ES5_ +00092E40: jmp cs:off_2F58A0 + +### FUNC 00092E50 - 00092E56 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +00092E50: jmp cs:off_2F58A8 + +### FUNC 00092E60 - 00092E66 (6 bytes) name=.MAG_LockFrame +00092E60: jmp cs:off_2F58B0 + +### FUNC 00092E70 - 00092E76 (6 bytes) name=._ZN9TCMDevice19getTCMUpdaterDeviceEv +00092E70: jmp cs:off_2F58B8 + +### FUNC 00092E80 - 00092E86 (6 bytes) name=._ZNSt13_Bit_iteratorppEv +00092E80: jmp cs:off_2F58C0 + +### FUNC 00092E90 - 00092E96 (6 bytes) name=._ZNSt6vectorIiSaIiEEixEm +00092E90: jmp cs:off_2F58C8 + +### FUNC 00092EA0 - 00092EA6 (6 bytes) name=._ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EED2Ev +00092EA0: jmp cs:off_2F58D0 + +### FUNC 00092EB0 - 00092EB6 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEclEv +00092EB0: jmp cs:off_2F58D8 + +### FUNC 00092EC0 - 00092EC6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJRKSsEEC2EOS2_ +00092EC0: jmp cs:off_2F58E0 + +### FUNC 00092ED0 - 00092ED6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERSK_ +00092ED0: jmp cs:off_2F58E8 + +### FUNC 00092EE0 - 00092EE6 (6 bytes) name=.MAG_IsChannelAvailable +00092EE0: jmp cs:off_2F58F0 + +### FUNC 00092EF0 - 00092EF6 (6 bytes) name=.MAG_GetOutputBMPdataRGB24 +00092EF0: jmp cs:off_2F58F8 + +### FUNC 00092F00 - 00092F06 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS2_IS6_SaIS6_EE +00092F00: jmp cs:off_2F5900 + +### FUNC 00092F10 - 00092F16 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +00092F10: jmp cs:off_2F5908 + +### FUNC 00092F20 - 00092F26 (6 bytes) name=._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0 +00092F20: jmp cs:off_2F5910 + +### FUNC 00092F30 - 00092F36 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EED2Ev +00092F30: jmp cs:off_2F5918 + +### FUNC 00092F40 - 00092F46 (6 bytes) name=._ZN13TCMPresetData10getOffsetYEv +00092F40: jmp cs:off_2F5920 + +### FUNC 00092F50 - 00092F56 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPKSt18_Rb_tree_node_base +00092F50: jmp cs:off_2F5928 + +### FUNC 00092F60 - 00092F66 (6 bytes) name=._ZSt12__miter_baseISt13move_iteratorIP19struct_TerminalListEENSt11_Miter_baseIT_E13iterator_typeES5_ +00092F60: jmp cs:off_2F5930 + +### FUNC 00092F70 - 00092F76 (6 bytes) name=._ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_ +00092F70: jmp cs:off_2F5938 + +### FUNC 00092F80 - 00092F86 (6 bytes) name=._ZSt3minIiERKT_S2_S2_ +00092F80: jmp cs:off_2F5940 + +### FUNC 00092F90 - 00092F96 (6 bytes) name=._ZSt11_Hash_bytesPKvmm +00092F90: jmp cs:off_2F5948 + +### FUNC 00092FA0 - 00092FA6 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv +00092FA0: jmp cs:off_2F5950 + +### FUNC 00092FB0 - 00092FB6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +00092FB0: jmp cs:off_2F5958 + +### FUNC 00092FC0 - 00092FC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +00092FC0: jmp cs:off_2F5960 + +### FUNC 00092FD0 - 00092FD6 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +00092FD0: jmp cs:off_2F5968 + +### FUNC 00092FE0 - 00092FE6 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE12_S_constructIiJiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +00092FE0: jmp cs:off_2F5970 + +### FUNC 00092FF0 - 00092FF6 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +00092FF0: jmp cs:off_2F5978 + +### FUNC 00093000 - 00093006 (6 bytes) name=._ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +00093000: jmp cs:off_2F5980 + +### FUNC 00093010 - 00093016 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JRKS5_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOSB_ +00093010: jmp cs:off_2F5988 + +### FUNC 00093020 - 00093026 (6 bytes) name=._ZSt19__throw_logic_errorPKc +00093020: jmp cs:off_2F5990 + +### FUNC 00093030 - 00093036 (6 bytes) name=._ZN8nlohmann6detail9exceptionC2ERKS1_ +00093030: jmp cs:off_2F5998 + +### FUNC 00093040 - 00093046 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +00093040: jmp cs:off_2F59A0 + +### FUNC 00093050 - 00093056 (6 bytes) name=._ZN13TCMPresetData8encodingEv +00093050: jmp cs:off_2F59A8 + +### FUNC 00093060 - 00093066 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JNS0_6detail7value_tEEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSF_DpOSG_ +00093060: jmp cs:off_2F59B0 + +### FUNC 00093070 - 00093076 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +00093070: jmp cs:off_2F59B8 + +### FUNC 00093080 - 00093086 (6 bytes) name=._ZSt19__iterator_categoryIPKhENSt15iterator_traitsIT_E17iterator_categoryERKS3_ +00093080: jmp cs:off_2F59C0 + +### FUNC 00093090 - 00093096 (6 bytes) name=._ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSJ_vEEOSE_OT0_ +00093090: jmp cs:off_2F59C8 + +### FUNC 000930A0 - 000930A6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKNS_27byte_container_with_subtypeIS5_EE +000930A0: jmp cs:off_2F59D0 + +### FUNC 000930B0 - 000930B6 (6 bytes) name=._ZNK6serial6Serial10SerialImpl7getPortEv +000930B0: jmp cs:off_2F59D8 + +### FUNC 000930C0 - 000930C6 (6 bytes) name=._ZN9TCMDevice11updateFrameEi +000930C0: jmp cs:off_2F59E0 + +### FUNC 000930D0 - 000930D6 (6 bytes) name=._ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2Ev +000930D0: jmp cs:off_2F59E8 + +### FUNC 000930E0 - 000930E6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE +000930E0: jmp cs:off_2F59F0 + +### FUNC 000930F0 - 000930F6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2Ev +000930F0: jmp cs:off_2F59F8 + +### FUNC 00093100 - 00093106 (6 bytes) name=._ZN10CMagDeviceD2Ev +00093100: jmp cs:off_2F5A00 + +### FUNC 00093110 - 00093116 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPhES3_EET0_T_S6_S5_ +00093110: jmp cs:off_2F5A08 + +### FUNC 00093120 - 00093126 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8allocateEmPKv +00093120: jmp cs:off_2F5A10 + +### FUNC 00093130 - 00093136 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_ +00093130: jmp cs:off_2F5A18 + +### FUNC 00093140 - 00093146 (6 bytes) name=._ZN6serial6Serial10SerialImpl8readLockEv +00093140: jmp cs:off_2F5A20 + +### FUNC 00093150 - 00093156 (6 bytes) name=._ZSt19__iterator_categoryISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEENSt15iterator_traitsIT_E17iterator_categoryERKSE_ +00093150: jmp cs:off_2F5A28 + +### FUNC 00093160 - 00093166 (6 bytes) name=._ZN14EloEEROMDeviceD2Ev +00093160: jmp cs:off_2F5A30 + +### FUNC 00093170 - 00093176 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE9constructIhJhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +00093170: jmp cs:off_2F5A38 + +### FUNC 00093180 - 00093186 (6 bytes) name=._ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_ +00093180: jmp cs:off_2F5A40 + +### FUNC 00093190 - 00093196 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRbEEEvPT_DpOT0_ +00093190: jmp cs:off_2F5A48 + +### FUNC 000931A0 - 000931A6 (6 bytes) name=._ZNSt6vectorIhSaIhEE6resizeEmRKh +000931A0: jmp cs:off_2F5A50 + +### FUNC 000931B0 - 000931B6 (6 bytes) name=._ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv +000931B0: jmp cs:off_2F5A58 + +### FUNC 000931C0 - 000931C6 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIPcE8max_sizeEv +000931C0: jmp cs:off_2F5A60 + +### FUNC 000931D0 - 000931D6 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000931D0: jmp cs:off_2F5A68 + +### FUNC 000931E0 - 000931E6 (6 bytes) name=.MAG_GetOutputBMPdata +000931E0: jmp cs:off_2F5A70 + +### FUNC 000931F0 - 000931F6 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_ +000931F0: jmp cs:off_2F5A78 + +### FUNC 00093200 - 00093206 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +00093200: jmp cs:off_2F5A80 + +### FUNC 00093210 - 00093216 (6 bytes) name=._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m +00093210: jmp cs:off_2F5A88 + +### FUNC 00093220 - 00093226 (6 bytes) name=._ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEESsEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +00093220: jmp cs:off_2F5A90 + +### FUNC 00093230 - 00093236 (6 bytes) name=._ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv +00093230: jmp cs:off_2F5A98 + +### FUNC 00093240 - 00093246 (6 bytes) name=._ZNSt8iteratorISt19output_iterator_tagvvvvEC2Ev +00093240: jmp cs:off_2F5AA0 + +### FUNC 00093250 - 00093256 (6 bytes) name=._ZNSt6thread2idC2Ev +00093250: jmp cs:off_2F5AA8 + +### FUNC 00093260 - 00093266 (6 bytes) name=._ZNSaImED2Ev +00093260: jmp cs:off_2F5AB0 + +### FUNC 00093270 - 00093276 (6 bytes) name=._ZNSt18_Bit_iterator_base7_M_incrEl +00093270: jmp cs:off_2F5AB8 + +### FUNC 00093280 - 00093286 (6 bytes) name=._ZN8nlohmann6detaileqENS0_20primitive_iterator_tES1_ +00093280: jmp cs:off_2F5AC0 + +### FUNC 00093290 - 00093296 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE6_S_getERS2_ +00093290: jmp cs:off_2F5AC8 + +### FUNC 000932A0 - 000932A6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSB_ +000932A0: jmp cs:off_2F5AD0 + +### FUNC 000932B0 - 000932B6 (6 bytes) name=._ZNSt6vectorIbSaIbEE5beginEv +000932B0: jmp cs:off_2F5AD8 + +### FUNC 000932C0 - 000932C6 (6 bytes) name=._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEED2Ev +000932C0: jmp cs:off_2F5AE0 + +### FUNC 000932D0 - 000932D6 (6 bytes) name=._ZN10CMagDevice27SetEstimateUnderArmTempModeE19BodyTempConvertMode +000932D0: jmp cs:off_2F5AE8 + +### FUNC 000932E0 - 000932E6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +000932E0: jmp cs:off_2F5AF0 + +### FUNC 000932F0 - 000932F6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +000932F0: jmp cs:off_2F5AF8 + +### FUNC 00093300 - 00093306 (6 bytes) name=._ZSt3maxImERKT_S2_S2_ +00093300: jmp cs:off_2F5B00 + +### FUNC 00093310 - 00093316 (6 bytes) name=.MAG_LinkCamera +00093310: jmp cs:off_2F5B08 + +### FUNC 00093320 - 00093326 (6 bytes) name=._ZNSt13runtime_errorD1Ev +00093320: jmp cs:off_2F5B10 + +### FUNC 00093330 - 00093336 (6 bytes) name=._ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +00093330: jmp cs:off_2F5B18 + +### FUNC 00093340 - 00093346 (6 bytes) name=._ZdaPv +00093340: jmp cs:off_2F5B20 + +### FUNC 00093350 - 00093356 (6 bytes) name=._ZSt7forwardIN6serial8PortInfoEEOT_RNSt16remove_referenceIS2_E4typeE +00093350: jmp cs:off_2F5B28 + +### FUNC 00093360 - 00093366 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv +00093360: jmp cs:off_2F5B30 + +### FUNC 00093370 - 00093376 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +00093370: jmp cs:off_2F5B38 + +### FUNC 00093380 - 00093386 (6 bytes) name=._ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator +00093380: jmp cs:off_2F5B40 + +### FUNC 00093390 - 00093396 (6 bytes) name=._ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EEC2IRSF_EEOT_ +00093390: jmp cs:off_2F5B48 + +### FUNC 000933A0 - 000933A6 (6 bytes) name=._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EcvbEv +000933A0: jmp cs:off_2F5B50 + +### FUNC 000933B0 - 000933B6 (6 bytes) name=._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +000933B0: jmp cs:off_2F5B58 + +### FUNC 000933C0 - 000933C6 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000933C0: jmp cs:off_2F5B60 + +### FUNC 000933D0 - 000933D6 (6 bytes) name=._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +000933D0: jmp cs:off_2F5B68 + +### FUNC 000933E0 - 000933E6 (6 bytes) name=._ZN8nlohmann6detail10type_errorD2Ev +000933E0: jmp cs:off_2F5B70 + +### FUNC 000933F0 - 000933F6 (6 bytes) name=._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000933F0: jmp cs:off_2F5B78 + +### FUNC 00093400 - 00093406 (6 bytes) name=._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSO_DpT1_EE +00093400: jmp cs:off_2F5B80 + +### FUNC 00093410 - 00093416 (6 bytes) name=._ZSt4moveIRP16TCMVirtualDeviceEONSt16remove_referenceIT_E4typeEOS4_ +00093410: jmp cs:off_2F5B88 + +### FUNC 00093420 - 00093426 (6 bytes) name=._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb1EE7_S_baseES7_ +00093420: jmp cs:off_2F5B90 + +### FUNC 00093430 - 00093436 (6 bytes) name=._ZN6serial22PortNotOpenedExceptionD2Ev +00093430: jmp cs:off_2F5B98 + +### FUNC 00093440 - 00093446 (6 bytes) name=._ZN8nlohmann6detail20primitive_iterator_tppEv +00093440: jmp cs:off_2F5BA0 + +### FUNC 00093450 - 00093456 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +00093450: jmp cs:off_2F5BA8 + +### FUNC 00093460 - 00093466 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE10_S_destroyISsEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +00093460: jmp cs:off_2F5BB0 + +### FUNC 00093470 - 00093476 (6 bytes) name=._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +00093470: jmp cs:off_2F5BB8 + +### FUNC 00093480 - 00093486 (6 bytes) name=._ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implD2Ev +00093480: jmp cs:off_2F5BC0 + +### FUNC 00093490 - 00093496 (6 bytes) name=._ZN6serial6Serial10SerialImpl5flushEv +00093490: jmp cs:off_2F5BC8 + +### FUNC 000934A0 - 000934A6 (6 bytes) name=._ZSt7forwardIM10SerialPortFvvEEOT_RNSt16remove_referenceIS3_E4typeE +000934A0: jmp cs:off_2F5BD0 + +### FUNC 000934B0 - 000934B6 (6 bytes) name=._ZNSs6appendEPKc +000934B0: jmp cs:off_2F5BD8 + +### FUNC 000934C0 - 000934C6 (6 bytes) name=._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000934C0: jmp cs:off_2F5BE0 + +### FUNC 000934D0 - 000934D6 (6 bytes) name=.memcmp +000934D0: jmp cs:off_2F5BE8 + +### FUNC 000934E0 - 000934E6 (6 bytes) name=._ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +000934E0: jmp cs:off_2F5BF0 + +### FUNC 000934F0 - 000934F6 (6 bytes) name=._ZNSt6threadC2IM21EloTCMHeartBeatDeviceFvvEJKPS1_EEEOT_DpOT0_ +000934F0: jmp cs:off_2F5BF8 + +### FUNC 00093500 - 00093506 (6 bytes) name=._ZN16ThermalTCMDevice18getProximityDeviceEv +00093500: jmp cs:off_2F5C00 + +### FUNC 00093510 - 00093516 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12emplace_backIJS7_EEEvDpOT_ +00093510: jmp cs:off_2F5C08 + +### FUNC 00093520 - 00093526 (6 bytes) name=._ZN17ThermalController16getPresetOffsetXEv +00093520: jmp cs:off_2F5C10 + +### FUNC 00093530 - 00093536 (6 bytes) name=._ZNSt4pairIKSsiEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERS4_IJDpT1_EESt12_Index_tupleIJXspT0_EEESD_IJXspT2_EEE +00093530: jmp cs:off_2F5C18 + +### FUNC 00093540 - 00093546 (6 bytes) name=._ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode +00093540: jmp cs:off_2F5C20 + +### FUNC 00093550 - 00093556 (6 bytes) name=._ZNK8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +00093550: jmp cs:off_2F5C28 + +### FUNC 00093560 - 00093566 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv +00093560: jmp cs:off_2F5C30 + +### FUNC 00093570 - 00093576 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm +00093570: jmp cs:off_2F5C38 + +### FUNC 00093580 - 00093586 (6 bytes) name=.globfree +00093580: jmp cs:off_2F5C40 + +### FUNC 00093590 - 00093596 (6 bytes) name=._ZNSt8__detail19_Node_iterator_baseISt4pairIKSsiELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +00093590: jmp cs:off_2F5C48 + +### FUNC 000935A0 - 000935A6 (6 bytes) name=._ZN6serial6Serial10SerialImpl6getDSREv +000935A0: jmp cs:off_2F5C50 + +### FUNC 000935B0 - 000935B6 (6 bytes) name=._ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE +000935B0: jmp cs:off_2F5C58 + +### FUNC 000935C0 - 000935C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000935C0: jmp cs:off_2F5C60 + +### FUNC 000935D0 - 000935D6 (6 bytes) name=._ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS9_ +000935D0: jmp cs:off_2F5C68 + +### FUNC 000935E0 - 000935E6 (6 bytes) name=._ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_ +000935E0: jmp cs:off_2F5C70 + +### FUNC 000935F0 - 000935F6 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EEC2Ev +000935F0: jmp cs:off_2F5C78 + +### FUNC 00093600 - 00093606 (6 bytes) name=._ZSt12__niter_baseIPKhENSt11_Niter_baseIT_E13iterator_typeES3_ +00093600: jmp cs:off_2F5C80 + +### FUNC 00093610 - 00093616 (6 bytes) name=._ZSt12__get_helperILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +00093610: jmp cs:off_2F5C88 + +### FUNC 00093620 - 00093626 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +00093620: jmp cs:off_2F5C90 + +### FUNC 00093630 - 00093636 (6 bytes) name=._ZNSt6vectorIhSaIhEED2Ev_0 +00093630: jmp cs:off_2F5C98 + +### FUNC 00093640 - 00093646 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE7destroyIS5_EEvRS6_PT_ +00093640: jmp cs:off_2F5CA0 + +### FUNC 00093650 - 00093656 (6 bytes) name=._ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +00093650: jmp cs:off_2F5CA8 + +### FUNC 00093660 - 00093666 (6 bytes) name=._ZNKSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +00093660: jmp cs:off_2F5CB0 + +### FUNC 00093670 - 00093676 (6 bytes) name=._ZSt18uninitialized_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_ET0_T_SC_SB_ +00093670: jmp cs:off_2F5CB8 + +### FUNC 00093680 - 00093686 (6 bytes) name=._ZNK6serial6Serial10SerialImpl9getParityEv +00093680: jmp cs:off_2F5CC0 + +### FUNC 00093690 - 00093696 (6 bytes) name=._ZSt3getILm0EKSsiERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS5_ +00093690: jmp cs:off_2F5CC8 + +### FUNC 000936A0 - 000936A6 (6 bytes) name=._ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJS7_EEvPT_DpOT0_ +000936A0: jmp cs:off_2F5CD0 + +### FUNC 000936B0 - 000936B6 (6 bytes) name=._ZSt4swapIPFbRSt9_Any_dataRKS0_St18_Manager_operationEEvRT_S8_ +000936B0: jmp cs:off_2F5CD8 + +### FUNC 000936C0 - 000936C6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_b +000936C0: jmp cs:off_2F5CE0 + +### FUNC 000936D0 - 000936D6 (6 bytes) name=._ZN6serial6Serial10SerialImpl5closeEv +000936D0: jmp cs:off_2F5CE8 + +### FUNC 000936E0 - 000936E6 (6 bytes) name=.MAG_GetCurrentCameraInnerTemperature +000936E0: jmp cs:off_2F5CF0 + +### FUNC 000936F0 - 000936F6 (6 bytes) name=._ZSteqIPSsEbRKSt13move_iteratorIT_ES5_ +000936F0: jmp cs:off_2F5CF8 + +### FUNC 00093700 - 00093706 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEplERKl +00093700: jmp cs:off_2F5D00 + +### FUNC 00093710 - 00093716 (6 bytes) name=._ZSt9__advanceIPhlEvRT_T0_St26random_access_iterator_tag +00093710: jmp cs:off_2F5D08 + +### FUNC 00093720 - 00093726 (6 bytes) name=._ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_ +00093720: jmp cs:off_2F5D10 + +### FUNC 00093730 - 00093736 (6 bytes) name=.__cxa_throw +00093730: jmp cs:off_2F5D18 + +### FUNC 00093740 - 00093746 (6 bytes) name=._ZNKSt6vectorIhSaIhEE4dataEv +00093740: jmp cs:off_2F5D20 + +### FUNC 00093750 - 00093756 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRbEEEvDpOT_ +00093750: jmp cs:off_2F5D28 + +### FUNC 00093760 - 00093766 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB__0 +00093760: jmp cs:off_2F5D30 + +### FUNC 00093770 - 00093776 (6 bytes) name=._ZN6serial6Serial10SerialImpl8setBreakEb +00093770: jmp cs:off_2F5D38 + +### FUNC 00093780 - 00093786 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSJ_EvEEOSE_SI_ +00093780: jmp cs:off_2F5D40 + +### FUNC 00093790 - 00093796 (6 bytes) name=._ZNSaISt4pairIKSsiEED2Ev +00093790: jmp cs:off_2F5D48 + +### FUNC 000937A0 - 000937A6 (6 bytes) name=._ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm +000937A0: jmp cs:off_2F5D50 + +### FUNC 000937B0 - 000937B6 (6 bytes) name=._ZSt10__fill_n_aIP19struct_TerminalListmS0_EN9__gnu_cxx11__enable_ifIXntsrSt11__is_scalarIT1_E7__valueET_E6__typeES7_T0_RKS5_ +000937B0: jmp cs:off_2F5D58 + +### FUNC 000937C0 - 000937C6 (6 bytes) name=._ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_St26random_access_iterator_tag +000937C0: jmp cs:off_2F5D60 + +### FUNC 000937D0 - 000937D6 (6 bytes) name=._ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_ +000937D0: jmp cs:off_2F5D68 + +### FUNC 000937E0 - 000937E6 (6 bytes) name=._ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000937E0: jmp cs:off_2F5D70 + +### FUNC 000937F0 - 000937F6 (6 bytes) name=._ZN8nlohmann6detail13input_adapterIhLm320659EEEDTcl13input_adapterfp_plfp_T0_EERAT0__T_ +000937F0: jmp cs:off_2F5D78 + +### FUNC 00093800 - 00093806 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_headERS6_ +00093800: jmp cs:off_2F5D80 + +### FUNC 00093810 - 00093816 (6 bytes) name=._ZSt7forwardIRA320659_hEOT_RNSt16remove_referenceIS2_E4typeE +00093810: jmp cs:off_2F5D88 + +### FUNC 00093820 - 00093826 (6 bytes) name=._ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_ +00093820: jmp cs:off_2F5D90 + +### FUNC 00093830 - 00093836 (6 bytes) name=._ZNKSt16initializer_listImE3endEv +00093830: jmp cs:off_2F5D98 + +### FUNC 00093840 - 00093846 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIP19struct_TerminalListSt13move_iteratorIS1_EET0_T_ +00093840: jmp cs:off_2F5DA0 + +### FUNC 00093850 - 00093856 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE8max_sizeERKS0_ +00093850: jmp cs:off_2F5DA8 + +### FUNC 00093860 - 00093866 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +00093860: jmp cs:off_2F5DB0 + +### FUNC 00093870 - 00093876 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_ +00093870: jmp cs:off_2F5DB8 + +### FUNC 00093880 - 00093886 (6 bytes) name=._ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7__0 +00093880: jmp cs:off_2F5DC0 + +### FUNC 00093890 - 00093896 (6 bytes) name=._ZN8nlohmann14adl_serializerIlvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERlEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00093890: jmp cs:off_2F5DC8 + +### FUNC 000938A0 - 000938A6 (6 bytes) name=._ZNSt31_Maybe_unary_or_binary_functionIvJP21EloTCMHeartBeatDeviceEEC2Ev +000938A0: jmp cs:off_2F5DD0 + +### FUNC 000938B0 - 000938B6 (6 bytes) name=._ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000938B0: jmp cs:off_2F5DD8 + +### FUNC 000938C0 - 000938C6 (6 bytes) name=.MAG_FixTemperature +000938C0: jmp cs:off_2F5DE0 + +### FUNC 000938D0 - 000938D6 (6 bytes) name=._ZSt4swapIPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEvRT_SH_ +000938D0: jmp cs:off_2F5DE8 + +### FUNC 000938E0 - 000938E6 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE8max_sizeERKS0_ +000938E0: jmp cs:off_2F5DF0 + +### FUNC 000938F0 - 000938F6 (6 bytes) name=._ZSt18uninitialized_copyIPKhPhET0_T_S4_S3_ +000938F0: jmp cs:off_2F5DF8 + +### FUNC 00093900 - 00093906 (6 bytes) name=._ZNSt10_Iter_baseIPP16TCMVirtualDeviceLb0EE7_S_baseES2_ +00093900: jmp cs:off_2F5E00 + +### FUNC 00093910 - 00093916 (6 bytes) name=._ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_ +00093910: jmp cs:off_2F5E08 + +### FUNC 00093920 - 00093926 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorISB_E +00093920: jmp cs:off_2F5E10 + +### FUNC 00093930 - 00093936 (6 bytes) name=._ZN17ThermalController17setUpdateCallbackEPFvbiE +00093930: jmp cs:off_2F5E18 + +### FUNC 00093940 - 00093946 (6 bytes) name=._ZNKSt4hashISsEclERKSs +00093940: jmp cs:off_2F5E20 + +### FUNC 00093950 - 00093956 (6 bytes) name=._ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE12_S_constructIS1_JS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_ +00093950: jmp cs:off_2F5E28 + +### FUNC 00093960 - 00093966 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implD2Ev +00093960: jmp cs:off_2F5E30 + +### FUNC 00093970 - 00093976 (6 bytes) name=._ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St20forward_iterator_tag +00093970: jmp cs:off_2F5E38 + +### FUNC 00093980 - 00093986 (6 bytes) name=._ZNKSt6vectorIhSaIhEE4sizeEv +00093980: jmp cs:off_2F5E40 + +### FUNC 00093990 - 00093996 (6 bytes) name=._ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEE16time_since_epochEv +00093990: jmp cs:off_2F5E48 + +### FUNC 000939A0 - 000939A6 (6 bytes) name=._ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_ +000939A0: jmp cs:off_2F5E50 + +### FUNC 000939B0 - 000939B6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE18_M_deallocate_nodeEPNS4_10_Hash_nodeIS2_Lb1EEE +000939B0: jmp cs:off_2F5E58 + +### FUNC 000939C0 - 000939C6 (6 bytes) name=._ZNSt5tupleIJRKSsEEC2EOS2_ +000939C0: jmp cs:off_2F5E60 + +### FUNC 000939D0 - 000939D6 (6 bytes) name=._ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEiLi0EEEvRKT_RT0_ +000939D0: jmp cs:off_2F5E68 + +### FUNC 000939E0 - 000939E6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERSI_ +000939E0: jmp cs:off_2F5E70 + +### FUNC 000939F0 - 000939F6 (6 bytes) name=._ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EEC2IS4_EEOT_ +000939F0: jmp cs:off_2F5E78 + +### FUNC 00093A00 - 00093A06 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE +00093A00: jmp cs:off_2F5E80 + +### FUNC 00093A10 - 00093A16 (6 bytes) name=._ZNSt20__uninitialized_copyILb0EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEES7_ISB_SaISB_EEEEPSB_EET0_T_SJ_SI_ +00093A10: jmp cs:off_2F5E88 + +### FUNC 00093A20 - 00093A26 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPKSt18_Rb_tree_node_base +00093A20: jmp cs:off_2F5E90 + +### FUNC 00093A30 - 00093A36 (6 bytes) name=._ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +00093A30: jmp cs:off_2F5E98 + +### FUNC 00093A40 - 00093A46 (6 bytes) name=._ZNSt6vectorIN6serial8PortInfoESaIS1_EE9push_backERKS1_ +00093A40: jmp cs:off_2F5EA0 + +### FUNC 00093A50 - 00093A56 (6 bytes) name=._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEED2Ev +00093A50: jmp cs:off_2F5EA8 + +### FUNC 00093A60 - 00093A66 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSM_ +00093A60: jmp cs:off_2F5EB0 + +### FUNC 00093A70 - 00093A76 (6 bytes) name=._ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode +00093A70: jmp cs:off_2F5EB8 + +### FUNC 00093A80 - 00093A86 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE7destroyISD_EEvPT_ +00093A80: jmp cs:off_2F5EC0 + +### FUNC 00093A90 - 00093A96 (6 bytes) name=._ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_headERS6_ +00093A90: jmp cs:off_2F5EC8 + +### FUNC 00093AA0 - 00093AA6 (6 bytes) name=._ZNSt6vectorIhSaIhEE17_M_default_appendEm +00093AA0: jmp cs:off_2F5ED0 + +### FUNC 00093AB0 - 00093AB6 (6 bytes) name=.strtoull +00093AB0: jmp cs:off_2F5ED8 + +### FUNC 00093AC0 - 00093AC6 (6 bytes) name=._ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_ +00093AC0: jmp cs:off_2F5EE0 + +### FUNC 00093AD0 - 00093AD6 (6 bytes) name=.MAG_GetEstimateUnderArmTempMode +00093AD0: jmp cs:off_2F5EE8 + +### FUNC 00093AE0 - 00093AE6 (6 bytes) name=._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +00093AE0: jmp cs:off_2F5EF0 + +### FUNC 00093AF0 - 00093AF6 (6 bytes) name=._ZNSt6vectorIbSaIbEE3endEv +00093AF0: jmp cs:off_2F5EF8 + +### FUNC 00093B00 - 00093B06 (6 bytes) name=._ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base +00093B00: jmp cs:off_2F5F00 + +### FUNC 00093B10 - 00093B16 (6 bytes) name=._ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +00093B10: jmp cs:off_2F5F08 + +### FUNC 00093B20 - 00093B26 (6 bytes) name=._ZN17ThermalController20getInnerIRCameraTempEv +00093B20: jmp cs:off_2F5F10 + +### FUNC 00093B30 - 00093B36 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERKSN_ +00093B30: jmp cs:off_2F5F18 + +### FUNC 00093B40 - 00093B46 (6 bytes) name=._ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm +00093B40: jmp cs:off_2F5F20 + +### FUNC 00093B50 - 00093B56 (6 bytes) name=._ZNSt16invalid_argumentC1ERKSs +00093B50: jmp cs:off_2F5F28 + +### FUNC 00093B60 - 00093B66 (6 bytes) name=._ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +00093B60: jmp cs:off_2F5F30 + +### FUNC 00093B70 - 00093B76 (6 bytes) name=._ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IS1_EEOT_ +00093B70: jmp cs:off_2F5F38 + +### FUNC 00093B80 - 00093B86 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE11_M_allocateEm +00093B80: jmp cs:off_2F5F40 + +### FUNC 00093B90 - 00093B96 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +00093B90: jmp cs:off_2F5F48 + +### FUNC 00093BA0 - 00093BA6 (6 bytes) name=._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIP16TCMVirtualDeviceEEPT_PKS5_S8_S6_ +00093BA0: jmp cs:off_2F5F50 + +### FUNC 00093BB0 - 00093BB6 (6 bytes) name=._ZNKSs8capacityEv +00093BB0: jmp cs:off_2F5F58 + +### FUNC 00093BC0 - 00093BC6 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE9_M_invokeIJLm0EEEEbSt12_Index_tupleIJXspT_EEE +00093BC0: jmp cs:off_2F5F60 + +### FUNC 00093BD0 - 00093BD6 (6 bytes) name=._ZNSt13move_iteratorIPN6serial8PortInfoEEppEv +00093BD0: jmp cs:off_2F5F68 + +### FUNC 00093BE0 - 00093BE6 (6 bytes) name=._ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E +00093BE0: jmp cs:off_2F5F70 + +### FUNC 00093BF0 - 00093BF6 (6 bytes) name=._ZN9TCMDevice21getTCMHeartBeatDeviceEv +00093BF0: jmp cs:off_2F5F78 + +### FUNC 00093C00 - 00093C06 (6 bytes) name=._ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_ +00093C00: jmp cs:off_2F5F80 + +### FUNC 00093C10 - 00093C16 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEv +00093C10: jmp cs:off_2F5F88 + +### FUNC 00093C20 - 00093C26 (6 bytes) name=.__cxa_end_catch +00093C20: jmp cs:off_2F5F90 + +### FUNC 00093C30 - 00093C36 (6 bytes) name=._ZN6serial8PortInfoC2ERKS0_ +00093C30: jmp cs:off_2F5F98 + +### FUNC 00093C40 - 00093C46 (6 bytes) name=._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERlEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00093C40: jmp cs:off_2F5FA0 + +### FUNC 00093C50 - 00093C56 (6 bytes) name=._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +00093C50: jmp cs:off_2F5FA8 + +### FUNC 00093C60 - 00093C66 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +00093C60: jmp cs:off_2F5FB0 + +### FUNC 00093C70 - 00093C76 (6 bytes) name=._ZNSt6threadC2IM10SerialPortFvvEJKPS1_EEEOT_DpOT0_ +00093C70: jmp cs:off_2F5FB8 + +### FUNC 00093C80 - 00093C86 (6 bytes) name=._ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS3_EENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE +00093C80: jmp cs:off_2F5FC0 + +### FUNC 00093C90 - 00093C96 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +00093C90: jmp cs:off_2F5FC8 + +### FUNC 00093CA0 - 00093CA6 (6 bytes) name=._ZSt17__throw_bad_allocv +00093CA0: jmp cs:off_2F5FD0 + +### FUNC 00093CB0 - 00093CB6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +00093CB0: jmp cs:off_2F5FD8 + +### FUNC 00093CC0 - 00093CC6 (6 bytes) name=._ZSt25__uninitialized_default_nIP19struct_TerminalListmEvT_T0_ +00093CC0: jmp cs:off_2F5FE0 + +### FUNC 00093CD0 - 00093CD6 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +00093CD0: jmp cs:off_2F5FE8 + +### FUNC 00093CE0 - 00093CE6 (6 bytes) name=._ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8max_sizeEv +00093CE0: jmp cs:off_2F5FF0 + +### FUNC 00093CF0 - 00093CF6 (6 bytes) name=._ZN17ThermalController9isWorkingEv +00093CF0: jmp cs:off_2F5FF8 + +### FUNC 00093D00 - 00093D06 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv +00093D00: jmp cs:off_2F6000 + +### FUNC 00093D10 - 00093D16 (6 bytes) name=.MAG_DelChannel +00093D10: jmp cs:off_2F6008 + +### FUNC 00093D20 - 00093D26 (6 bytes) name=._ZNSt18_Rb_tree_node_base10_S_minimumEPS_ +00093D20: jmp cs:off_2F6010 + +### FUNC 00093D30 - 00093D36 (6 bytes) name=._ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE +00093D30: jmp cs:off_2F6018 + +### FUNC 00093D40 - 00093D46 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_S_cgetERKS2_ +00093D40: jmp cs:off_2F6020 + +### FUNC 00093D50 - 00093D56 (6 bytes) name=._ZNSt16allocator_traitsISaIiEE9constructIiJRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +00093D50: jmp cs:off_2F6028 + +### FUNC 00093D60 - 00093D66 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5emptyEv +00093D60: jmp cs:off_2F6030 + +### FUNC 00093D70 - 00093D76 (6 bytes) name=._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv +00093D70: jmp cs:off_2F6038 + +### FUNC 00093D80 - 00093D86 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10is_booleanEv +00093D80: jmp cs:off_2F6040 + +### FUNC 00093D90 - 00093D96 (6 bytes) name=._ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EEC2IRS6_EEOT_ +00093D90: jmp cs:off_2F6048 + +### FUNC 00093DA0 - 00093DA6 (6 bytes) name=._ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +00093DA0: jmp cs:off_2F6050 + +### FUNC 00093DB0 - 00093DB6 (6 bytes) name=._ZN9__gnu_cxxneIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +00093DB0: jmp cs:off_2F6058 + +### FUNC 00093DC0 - 00093DC6 (6 bytes) name=._ZSt27__uninitialized_default_n_aIP19struct_TerminalListmS0_EvT_T0_RSaIT1_E +00093DC0: jmp cs:off_2F6060 + +### FUNC 00093DD0 - 00093DD6 (6 bytes) name=._ZN8nlohmann6detail11parse_errorD2Ev +00093DD0: jmp cs:off_2F6068 + +### FUNC 00093DE0 - 00093DE6 (6 bytes) name=._ZN6serial11IOExceptionC2ESsii +00093DE0: jmp cs:off_2F6070 + +### FUNC 00093DF0 - 00093DF6 (6 bytes) name=._ZNKSs7compareEmmPKc +00093DF0: jmp cs:off_2F6078 + +### FUNC 00093E00 - 00093E06 (6 bytes) name=._ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev_0 +00093E00: jmp cs:off_2F6080 + +### FUNC 00093E10 - 00093E16 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +00093E10: jmp cs:off_2F6088 + +### FUNC 00093E20 - 00093E26 (6 bytes) name=._ZN8nlohmann6detail11parse_error15position_stringERKNS0_10position_tE +00093E20: jmp cs:off_2F6090 + +### FUNC 00093E30 - 00093E36 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +00093E30: jmp cs:off_2F6098 + +### FUNC 00093E40 - 00093E46 (6 bytes) name=._ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE +00093E40: jmp cs:off_2F60A0 + +### FUNC 00093E50 - 00093E56 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_SaIS8_EET0_T_SC_SB_RT1_ +00093E50: jmp cs:off_2F60A8 + +### FUNC 00093E60 - 00093E66 (6 bytes) name=._ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m +00093E60: jmp cs:off_2F60B0 + +### FUNC 00093E70 - 00093E76 (6 bytes) name=._ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE +00093E70: jmp cs:off_2F60B8 + +### FUNC 00093E80 - 00093E86 (6 bytes) name=._ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt15iterator_traitsIT_E17iterator_categoryERKSF_ +00093E80: jmp cs:off_2F60C0 + +### FUNC 00093E90 - 00093E96 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_ +00093E90: jmp cs:off_2F60C8 + +### FUNC 00093EA0 - 00093EA6 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +00093EA0: jmp cs:off_2F60D0 + +### FUNC 00093EB0 - 00093EB6 (6 bytes) name=._ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEcvbEv +00093EB0: jmp cs:off_2F60D8 + +### FUNC 00093EC0 - 00093EC6 (6 bytes) name=._ZSt3getILm0EJRKSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS7_ +00093EC0: jmp cs:off_2F60E0 + +### FUNC 00093ED0 - 00093ED6 (6 bytes) name=._ZNKSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +00093ED0: jmp cs:off_2F60E8 + +### FUNC 00093EE0 - 00093EE6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +00093EE0: jmp cs:off_2F60F0 + +### FUNC 00093EF0 - 00093EF6 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm +00093EF0: jmp cs:off_2F60F8 + +### FUNC 00093F00 - 00093F06 (6 bytes) name=.MAG_GetTemperatureProbe2 +00093F00: jmp cs:off_2F6100 + +### FUNC 00093F10 - 00093F16 (6 bytes) name=._ZN18ITCMUpdateDelegateC2Ev +00093F10: jmp cs:off_2F6108 + +### FUNC 00093F20 - 00093F26 (6 bytes) name=._ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +00093F20: jmp cs:off_2F6110 + +### FUNC 00093F30 - 00093F36 (6 bytes) name=._ZNKSt6vectorIbSaIbEE4sizeEv +00093F30: jmp cs:off_2F6118 + +### FUNC 00093F40 - 00093F46 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_ +00093F40: jmp cs:off_2F6120 + +### FUNC 00093F50 - 00093F56 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPSsES1_SsET0_T_S4_S3_RSaIT1_E +00093F50: jmp cs:off_2F6128 + +### FUNC 00093F60 - 00093F66 (6 bytes) name=._ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3endEv +00093F60: jmp cs:off_2F6130 + +### FUNC 00093F70 - 00093F76 (6 bytes) name=._ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +00093F70: jmp cs:off_2F6138 + +### FUNC 00093F80 - 00093F86 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m +00093F80: jmp cs:off_2F6140 + +### FUNC 00093F90 - 00093F96 (6 bytes) name=._ZN16TCMVirtualDeviceC2Ev +00093F90: jmp cs:off_2F6148 + +### FUNC 00093FA0 - 00093FA6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_b +00093FA0: jmp cs:off_2F6150 + +### FUNC 00093FB0 - 00093FB6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiE9constructIiJRKiEEEvPT_DpOT0_ +00093FB0: jmp cs:off_2F6158 + +### FUNC 00093FC0 - 00093FC6 (6 bytes) name=._ZSt13__copy_move_aILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +00093FC0: jmp cs:off_2F6160 + +### FUNC 00093FD0 - 00093FD6 (6 bytes) name=._ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +00093FD0: jmp cs:off_2F6168 + +### FUNC 00093FE0 - 00093FE6 (6 bytes) name=._ZNSt14_Bit_referenceaSEb +00093FE0: jmp cs:off_2F6170 + +### FUNC 00093FF0 - 00093FF6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +00093FF0: jmp cs:off_2F6178 + +### FUNC 00094000 - 00094006 (6 bytes) name=._ZNSaIN6serial8PortInfoEED2Ev +00094000: jmp cs:off_2F6180 + +### FUNC 00094010 - 00094016 (6 bytes) name=._ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEclEv +00094010: jmp cs:off_2F6188 + +### FUNC 00094020 - 00094026 (6 bytes) name=._ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EEC2ERKS2_ +00094020: jmp cs:off_2F6190 + +### FUNC 00094030 - 00094036 (6 bytes) name=._ZN10SerialPortD2Ev +00094030: jmp cs:off_2F6198 + +### FUNC 00094040 - 00094046 (6 bytes) name=._ZN8nlohmann6detail22iterator_input_adapterIPhE13get_characterEv +00094040: jmp cs:off_2F61A0 + +### FUNC 00094050 - 00094056 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +00094050: jmp cs:off_2F61A8 + +### FUNC 00094060 - 00094066 (6 bytes) name=.MAG_SetEstimateUnderArmTempMode +00094060: jmp cs:off_2F61B0 + +### FUNC 00094070 - 00094076 (6 bytes) name=._ZNSt18_Rb_tree_node_base10_S_maximumEPS_ +00094070: jmp cs:off_2F61B8 + +### FUNC 00094080 - 00094086 (6 bytes) name=._ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEiEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +00094080: jmp cs:off_2F61C0 + +### FUNC 00094090 - 00094096 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +00094090: jmp cs:off_2F61C8 + +### FUNC 000940A0 - 000940A6 (6 bytes) name=._ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES8_ +000940A0: jmp cs:off_2F61D0 + +### FUNC 000940B0 - 000940B6 (6 bytes) name=._ZNSt6vectorIhSaIhEE13_M_assign_auxIPKhEEvT_S5_St20forward_iterator_tag +000940B0: jmp cs:off_2F61D8 + +### FUNC 000940C0 - 000940C6 (6 bytes) name=.MAG_IsInitialized +000940C0: jmp cs:off_2F61E0 + +### FUNC 000940D0 - 000940D6 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +000940D0: jmp cs:off_2F61E8 + +### FUNC 000940E0 - 000940E6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE +000940E0: jmp cs:off_2F61F0 + +### FUNC 000940F0 - 000940F6 (6 bytes) name=._ZNSt10_Iter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEELb0EE7_S_baseESB_ +000940F0: jmp cs:off_2F61F8 + +### FUNC 00094100 - 00094106 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +00094100: jmp cs:off_2F6200 + +### FUNC 00094110 - 00094116 (6 bytes) name=._ZNSt6vectorI19struct_TerminalListSaIS0_EE15_M_erase_at_endEPS0_ +00094110: jmp cs:off_2F6208 + +### FUNC 00094120 - 00094126 (6 bytes) name=._ZN17ThermalController9enableFFCEb +00094120: jmp cs:off_2F6210 + +### FUNC 00094130 - 00094136 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Eb +00094130: jmp cs:off_2F6218 + +### FUNC 00094140 - 00094146 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EC2ESI_RKSJ_ +00094140: jmp cs:off_2F6220 + +### FUNC 00094150 - 00094156 (6 bytes) name=._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE12_M_find_nodeEmRS1_m +00094150: jmp cs:off_2F6228 + +### FUNC 00094160 - 00094166 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +00094160: jmp cs:off_2F6230 + +### FUNC 00094170 - 00094176 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv +00094170: jmp cs:off_2F6238 + +### FUNC 00094180 - 00094186 (6 bytes) name=._ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_S9_ET0_T_SH_SG_RSaIT1_E +00094180: jmp cs:off_2F6240 + +### FUNC 00094190 - 00094196 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_ +00094190: jmp cs:off_2F6248 + +### FUNC 000941A0 - 000941A6 (6 bytes) name=._ZSt22__uninitialized_copy_aISt13move_iteratorIPP16TCMVirtualDeviceES3_S2_ET0_T_S6_S5_RSaIT1_E +000941A0: jmp cs:off_2F6250 + +### FUNC 000941B0 - 000941B6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5eraseINS_6detail9iter_implIS6_EELi0EEET_SB_ +000941B0: jmp cs:off_2F6258 + +### FUNC 000941C0 - 000941C6 (6 bytes) name=.MAG_SetIoAlarmState +000941C0: jmp cs:off_2F6260 + +### FUNC 000941D0 - 000941D6 (6 bytes) name=.strtoll +000941D0: jmp cs:off_2F6268 + +### FUNC 000941E0 - 000941E6 (6 bytes) name=._ZN17ThermalController7stopTCMEv +000941E0: jmp cs:off_2F6270 + +### FUNC 000941F0 - 000941F6 (6 bytes) name=.__cxa_begin_catch +000941F0: jmp cs:off_2F6278 + +### FUNC 00094200 - 00094206 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5clearEv +00094200: jmp cs:off_2F6280 + +### FUNC 00094210 - 00094216 (6 bytes) name=._ZN6serial8PortInfoC2Ev +00094210: jmp cs:off_2F6288 + +### FUNC 00094220 - 00094226 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv +00094220: jmp cs:off_2F6290 + +### FUNC 00094230 - 00094236 (6 bytes) name=._ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev +00094230: jmp cs:off_2F6298 + +### FUNC 00094240 - 00094246 (6 bytes) name=._ZNSs9push_backEc +00094240: jmp cs:off_2F62A0 + +### FUNC 00094250 - 00094256 (6 bytes) name=._ZNSt10_Iter_baseIPPcLb0EE7_S_baseES1_ +00094250: jmp cs:off_2F62A8 + +### FUNC 00094260 - 00094266 (6 bytes) name=._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ +00094260: jmp cs:off_2F62B0 + +### FUNC 00094270 - 00094276 (6 bytes) name=._ZSt8_DestroyIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvPT_ +00094270: jmp cs:off_2F62B8 + +### FUNC 00094280 - 00094286 (6 bytes) name=._ZSt4copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +00094280: jmp cs:off_2F62C0 + +### FUNC 00094290 - 00094296 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEppEv +00094290: jmp cs:off_2F62C8 + +### FUNC 000942A0 - 000942A6 (6 bytes) name=._ZNSt14numeric_limitsIjE3maxEv +000942A0: jmp cs:off_2F62D0 + +### FUNC 000942B0 - 000942B6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000942B0: jmp cs:off_2F62D8 + +### FUNC 000942C0 - 000942C6 (6 bytes) name=._ZNKSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +000942C0: jmp cs:off_2F62E0 + +### FUNC 000942D0 - 000942D6 (6 bytes) name=._ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000942D0: jmp cs:off_2F62E8 + +### FUNC 000942E0 - 000942E6 (6 bytes) name=._ZSt13move_backwardIPhS0_ET0_T_S2_S1_ +000942E0: jmp cs:off_2F62F0 + +### FUNC 000942F0 - 000942F6 (6 bytes) name=._ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000942F0: jmp cs:off_2F62F8 + +### FUNC 00094300 - 00094306 (6 bytes) name=._ZNSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEC2ES2_ +00094300: jmp cs:off_2F6300 + +### FUNC 00094310 - 00094316 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPcED2Ev +00094310: jmp cs:off_2F6308 + +### FUNC 00094320 - 00094326 (6 bytes) name=._ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +00094320: jmp cs:off_2F6310 + +### FUNC 00094330 - 00094336 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJS6_EEEvDpOT_ +00094330: jmp cs:off_2F6318 + +### FUNC 00094340 - 00094346 (6 bytes) name=._ZN10CMagDevice13IsInitializedEv +00094340: jmp cs:off_2F6320 + +### FUNC 00094350 - 00094356 (6 bytes) name=._ZN8nlohmann6detail17internal_iteratorINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +00094350: jmp cs:off_2F6328 + +### FUNC 00094360 - 00094366 (6 bytes) name=._ZNSt19_Bit_const_iteratorppEv +00094360: jmp cs:off_2F6330 + +### FUNC 00094370 - 00094376 (6 bytes) name=._ZSt4copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +00094370: jmp cs:off_2F6338 + +### FUNC 00094380 - 00094386 (6 bytes) name=._ZN17ThermalController15setTempBoundaryEddd +00094380: jmp cs:off_2F6340 + +### FUNC 00094390 - 00094396 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv +00094390: jmp cs:off_2F6348 + +### FUNC 000943A0 - 000943A6 (6 bytes) name=._ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSQ_DpT1_EE +000943A0: jmp cs:off_2F6350 + +### FUNC 000943B0 - 000943B6 (6 bytes) name=._ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv +000943B0: jmp cs:off_2F6358 + +### FUNC 000943C0 - 000943C6 (6 bytes) name=._ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc +000943C0: jmp cs:off_2F6360 + +### FUNC 000943D0 - 000943D6 (6 bytes) name=._ZNSt14numeric_limitsIlE3minEv +000943D0: jmp cs:off_2F6368 + +### FUNC 000943E0 - 000943E6 (6 bytes) name=._ZStneIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +000943E0: jmp cs:off_2F6370 + +### FUNC 000943F0 - 000943F6 (6 bytes) name=._ZN6serial6Serial10SerialImpl5writeEPKhm +000943F0: jmp cs:off_2F6378 + +### FUNC 00094400 - 00094406 (6 bytes) name=._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12_M_check_lenEmPKc +00094400: jmp cs:off_2F6380 + +### FUNC 00094410 - 00094416 (6 bytes) name=._ZSt11__addressofIhEPT_RS0_ +00094410: jmp cs:off_2F6388 + +### FUNC 00094420 - 00094426 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEE12_Vector_implD2Ev +00094420: jmp cs:off_2F6390 + +### FUNC 00094430 - 00094436 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm +00094430: jmp cs:off_2F6398 + +### FUNC 00094440 - 00094446 (6 bytes) name=._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev +00094440: jmp cs:off_2F63A0 + +### FUNC 00094450 - 00094456 (6 bytes) name=.pthread_mutex_lock +00094450: jmp cs:off_2F63A8 + +### FUNC 00094460 - 00094466 (6 bytes) name=._ZSt14__copy_move_a2ILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +00094460: jmp cs:off_2F63B0 + +### FUNC 00094470 - 00094476 (6 bytes) name=.realloc +00094470: jmp cs:off_2F63B8 + +### FUNC 00094480 - 00094486 (6 bytes) name=._ZSt6fill_nIPhmhET_S1_T0_RKT1_ +00094480: jmp cs:off_2F63C0 + +### FUNC 00094490 - 00094496 (6 bytes) name=._ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_ +00094490: jmp cs:off_2F63C8 + +### FUNC 000944A0 - 000944A6 (6 bytes) name=._ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000944A0: jmp cs:off_2F63D0 + +### FUNC 000944B0 - 000944B6 (6 bytes) name=._ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_ +000944B0: jmp cs:off_2F63D8 + +### FUNC 000944C0 - 000944C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEvPT_DpOT0_ +000944C0: jmp cs:off_2F63E0 + +### FUNC 000944D0 - 000944D6 (6 bytes) name=._ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSI_ +000944D0: jmp cs:off_2F63E8 + +### FUNC 000944E0 - 000944E6 (6 bytes) name=._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1000EEEES4_RKNS1_IT_T0_EE +000944E0: jmp cs:off_2F63F0 + +### FUNC 000944F0 - 000944F6 (6 bytes) name=._ZNSt6chronomiIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000944F0: jmp cs:off_2F63F8 + +### FUNC 00094500 - 00094506 (6 bytes) name=._ZNKSt13move_iteratorIPiE4baseEv +00094500: jmp cs:off_2F6400 + +### FUNC 00094510 - 00094516 (6 bytes) name=._ZNSt6vectorISsSaISsEED2Ev +00094510: jmp cs:off_2F6408 + +### FUNC 00094520 - 00094526 (6 bytes) name=._ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv +00094520: jmp cs:off_2F6410 + +### FUNC 00094530 - 00094536 (6 bytes) name=._ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv +00094530: jmp cs:off_2F6418 + +### FUNC 00094540 - 00094546 (6 bytes) name=._ZN14EloMotorDeviceD2Ev +00094540: jmp cs:off_2F6420 + +### FUNC 00094550 - 00094556 (6 bytes) name=._ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN6serial8PortInfoEES5_EET0_T_S8_S7_ +00094550: jmp cs:off_2F6428 + +### FUNC 00094560 - 00094566 (6 bytes) name=._ZN18EloProximityDeviceC2Ev +00094560: jmp cs:off_2F6430 + +### FUNC 00094570 - 00094576 (6 bytes) name=._ZN17ThermalController21setLimitEventListenerEPFvbE +00094570: jmp cs:off_2F6438 + +### FUNC 00094580 - 00094586 (6 bytes) name=._ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE5valueEv +00094580: jmp cs:off_2F6440 + +### FUNC 00094590 - 00094596 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JDnEEEvPT_DpOT0_ +00094590: jmp cs:off_2F6448 + +### FUNC 000945A0 - 000945A6 (6 bytes) name=._ZSt4fillIPhhEvT_S1_RKT0_ +000945A0: jmp cs:off_2F6450 + +### FUNC 000945B0 - 000945B6 (6 bytes) name=._ZNSt19_Bit_const_iteratorC2EPmj +000945B0: jmp cs:off_2F6458 + +### FUNC 000945C0 - 000945C6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000945C0: jmp cs:off_2F6460 + +### FUNC 000945D0 - 000945D6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSO_ +000945D0: jmp cs:off_2F6468 + +### FUNC 000945E0 - 000945E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIhE10deallocateEPhm +000945E0: jmp cs:off_2F6470 + +### FUNC 000945F0 - 000945F6 (6 bytes) name=._ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSH_vEEOSC_OT0_ +000945F0: jmp cs:off_2F6478 + +### FUNC 00094600 - 00094606 (6 bytes) name=._ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE +00094600: jmp cs:off_2F6480 + +### FUNC 00094610 - 00094616 (6 bytes) name=._ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +00094610: jmp cs:off_2F6488 + +### FUNC 00094620 - 00094626 (6 bytes) name=._ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EEC2ERKSO_ +00094620: jmp cs:off_2F6490 + +### FUNC 00094630 - 00094636 (6 bytes) name=._ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +00094630: jmp cs:off_2F6498 + +### FUNC 00094640 - 00094646 (6 bytes) name=._ZNSt8__detailneISt4pairIKSsiELb1EEEbRKNS_19_Node_iterator_baseIT_XT0_EEES8_ +00094640: jmp cs:off_2F64A0 + +### FUNC 00094650 - 00094656 (6 bytes) name=._ZNKSt13move_iteratorIPSsEdeEv +00094650: jmp cs:off_2F64A8 + +### FUNC 00094660 - 00094666 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EC2ESG_RKSH_ +00094660: jmp cs:off_2F64B0 + +### FUNC 00094670 - 00094676 (6 bytes) name=._ZN8nlohmann14adl_serializerISsvE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEESsEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +00094670: jmp cs:off_2F64B8 + +### FUNC 00094680 - 00094686 (6 bytes) name=._ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +00094680: jmp cs:off_2F64C0 + +### FUNC 00094690 - 00094696 (6 bytes) name=._ZNSt10_Hash_impl4hashEPKvmm +00094690: jmp cs:off_2F64C8 + +### FUNC 000946A0 - 000946A6 (6 bytes) name=._ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb0EE7_S_baseESD_ +000946A0: jmp cs:off_2F64D0 + +### FUNC 000946B0 - 000946B6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11lower_boundERS1_ +000946B0: jmp cs:off_2F64D8 + +### FUNC 000946C0 - 000946C6 (6 bytes) name=._ZNSt6vectorIhSaIhEE5beginEv +000946C0: jmp cs:off_2F64E0 + +### FUNC 000946D0 - 000946D6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE9constructIS2_JRKS2_EEEvPT_DpOT0_ +000946D0: jmp cs:off_2F64E8 + +### FUNC 000946E0 - 000946E6 (6 bytes) name=._ZNSaIcEC1Ev +000946E0: jmp cs:off_2F64F0 + +### FUNC 000946F0 - 000946F6 (6 bytes) name=._ZNSt5dequeIcSaIcEE5beginEv +000946F0: jmp cs:off_2F64F8 + +### FUNC 00094700 - 00094706 (6 bytes) name=._ZSt22__copy_move_backward_aILb0EPPcS1_ET1_T0_S3_S2_ +00094700: jmp cs:off_2F6500 + +### FUNC 00094710 - 00094716 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE10_S_destroyIhEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +00094710: jmp cs:off_2F6508 + +### FUNC 00094720 - 00094726 (6 bytes) name=._ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7set_endEv +00094720: jmp cs:off_2F6510 + +### FUNC 00094730 - 00094736 (6 bytes) name=._ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET0_T_SF_SE_ +00094730: jmp cs:off_2F6518 + +### FUNC 00094740 - 00094746 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE7destroyIS6_EEvPT_ +00094740: jmp cs:off_2F6520 + +### FUNC 00094750 - 00094756 (6 bytes) name=._ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +00094750: jmp cs:off_2F6528 + +### FUNC 00094760 - 00094766 (6 bytes) name=._ZNSt5dequeIcSaIcEE9pop_frontEv +00094760: jmp cs:off_2F6530 + +### FUNC 00094770 - 00094776 (6 bytes) name=._ZdlPvS_ +00094770: jmp cs:off_2F6538 + +### FUNC 00094780 - 00094786 (6 bytes) name=._ZNSt22__uninitialized_fill_nILb1EE15__uninit_fill_nIPhmhEEvT_T0_RKT1_ +00094780: jmp cs:off_2F6540 + +### FUNC 00094790 - 00094796 (6 bytes) name=._ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv +00094790: jmp cs:off_2F6548 + +### FUNC 000947A0 - 000947A6 (6 bytes) name=._ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_ +000947A0: jmp cs:off_2F6550 + +### FUNC 000947B0 - 000947B6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8allocateEmPKv +000947B0: jmp cs:off_2F6558 + +### FUNC 000947C0 - 000947C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2ERKSD_ +000947C0: jmp cs:off_2F6560 + +### FUNC 000947D0 - 000947D6 (6 bytes) name=._ZStmiIcRcPcENSt15_Deque_iteratorIT_T0_T1_E15difference_typeERKS6_S9_ +000947D0: jmp cs:off_2F6568 + +### FUNC 000947E0 - 000947E6 (6 bytes) name=._ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm +000947E0: jmp cs:off_2F6570 + +### FUNC 000947F0 - 000947F6 (6 bytes) name=._ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EED2Ev +000947F0: jmp cs:off_2F6578 + +### FUNC 00094800 - 00094806 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiE7destroyIiEEvPT_ +00094800: jmp cs:off_2F6580 + +### FUNC 00094810 - 00094816 (6 bytes) name=._ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE +00094810: jmp cs:off_2F6588 + +### FUNC 00094820 - 00094826 (6 bytes) name=._ZSt10__distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +00094820: jmp cs:off_2F6590 + +### FUNC 00094830 - 00094836 (6 bytes) name=._ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi +00094830: jmp cs:off_2F6598 + +### FUNC 00094840 - 00094846 (6 bytes) name=._ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_ +00094840: jmp cs:off_2F65A0 + +### FUNC 00094850 - 00094856 (6 bytes) name=._ZNKSt15_Deque_iteratorIcRcPcEdeEv +00094850: jmp cs:off_2F65A8 + +### FUNC 00094860 - 00094866 (6 bytes) name=._ZN8nlohmann6detail11other_error6createEiRKSs +00094860: jmp cs:off_2F65B0 + +### FUNC 00094870 - 00094876 (6 bytes) name=._ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1EEEES2_ILl1ELl1000000000EElLb1ELb0EE6__castIlS5_EES4_RKNS1_IT_T0_EE +00094870: jmp cs:off_2F65B8 + +### FUNC 00094880 - 00094886 (6 bytes) name=._ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_ +00094880: jmp cs:off_2F65C0 + +### FUNC 00094890 - 00094896 (6 bytes) name=._ZSt4moveIRSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +00094890: jmp cs:off_2F65C8 + +### FUNC 000948A0 - 000948A6 (6 bytes) name=._ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc +000948A0: jmp cs:off_2F65D0 + +### FUNC 000948B0 - 000948B6 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E7releaseEv +000948B0: jmp cs:off_2F65D8 + +### FUNC 000948C0 - 000948C6 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv +000948C0: jmp cs:off_2F65E0 + +### FUNC 000948D0 - 000948D6 (6 bytes) name=._ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE +000948D0: jmp cs:off_2F65E8 + +### FUNC 000948E0 - 000948E6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2EOS2_ +000948E0: jmp cs:off_2F65F0 + +### FUNC 000948F0 - 000948F6 (6 bytes) name=._ZNSsC1EOSs +000948F0: jmp cs:off_2F65F8 + +### FUNC 00094900 - 00094906 (6 bytes) name=._ZNKSt13move_iteratorIPP16TCMVirtualDeviceE4baseEv +00094900: jmp cs:off_2F6600 + +### FUNC 00094910 - 00094916 (6 bytes) name=.MAG_SetIsothermalPara +00094910: jmp cs:off_2F6608 + +### FUNC 00094920 - 00094926 (6 bytes) name=._ZNSs12_Alloc_hiderC1EPcRKSaIcE +00094920: jmp cs:off_2F6610 + +### FUNC 00094930 - 00094936 (6 bytes) name=._ZN6serial6Serial15ScopedWriteLockD2Ev +00094930: jmp cs:off_2F6618 + +### FUNC 00094940 - 00094946 (6 bytes) name=._ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE +00094940: jmp cs:off_2F6620 + +### FUNC 00094950 - 00094956 (6 bytes) name=.MAG_GetOutputRawData +00094950: jmp cs:off_2F6628 + +### FUNC 00094960 - 00094966 (6 bytes) name=._ZSt13__bind_simpleIM10SerialPortFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +00094960: jmp cs:off_2F6630 + +### FUNC 00094970 - 00094976 (6 bytes) name=.pthread_mutex_destroy +00094970: jmp cs:off_2F6638 + +### FUNC 00094980 - 00094986 (6 bytes) name=._ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEC2IJRKSt21piecewise_construct_tSt5tupleIJRS2_EES9_IJEEEEEDpOT_ +00094980: jmp cs:off_2F6640 + +### FUNC 00094990 - 00094996 (6 bytes) name=._ZN8nlohmann6detail11parse_errorC2ERKS1_ +00094990: jmp cs:off_2F6648 + +### FUNC 000949A0 - 000949A6 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_deallocate_nodesEPNS4_10_Hash_nodeIS2_Lb1EEE +000949A0: jmp cs:off_2F6650 + +### FUNC 000949B0 - 000949B6 (6 bytes) name=._ZN6serial6Serial10SerialImpl6setRTSEb +000949B0: jmp cs:off_2F6658 + +### FUNC 000949C0 - 000949C6 (6 bytes) name=._ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE +000949C0: jmp cs:off_2F6660 + +### FUNC 000949D0 - 000949D6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJP10SerialPortEEC2EOS2_ +000949D0: jmp cs:off_2F6668 + +### FUNC 000949E0 - 000949E6 (6 bytes) name=._ZN10CMagDevice10GetCamInfoEv +000949E0: jmp cs:off_2F6670 + +### FUNC 000949F0 - 000949F6 (6 bytes) name=._ZNSt14_Function_baseC2Ev +000949F0: jmp cs:off_2F6678 + +### FUNC 00094A00 - 00094A06 (6 bytes) name=._ZN8nlohmann6detail12out_of_rangeD2Ev +00094A00: jmp cs:off_2F6680 + +### FUNC 00094A10 - 00094A16 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +00094A10: jmp cs:off_2F6688 + +### FUNC 00094A20 - 00094A26 (6 bytes) name=._ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EE7_M_headERS5_ +00094A20: jmp cs:off_2F6690 + +### FUNC 00094A30 - 00094A36 (6 bytes) name=._ZNSt6vectorIhSaIhEE6insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00094A30: jmp cs:off_2F6698 + +### FUNC 00094A40 - 00094A46 (6 bytes) name=._ZNSt16allocator_traitsISaISsEE9constructISsJRA1_KcEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS6_ +00094A40: jmp cs:off_2F66A0 + +### FUNC 00094A50 - 00094A56 (6 bytes) name=._ZNSt13_Bvector_baseISaIbEE11_M_allocateEm +00094A50: jmp cs:off_2F66A8 + +### FUNC 00094A60 - 00094A66 (6 bytes) name=._ZNSt31_Maybe_unary_or_binary_functionIbJP19EloTCMUpdaterDeviceEEC2Ev +00094A60: jmp cs:off_2F66B0 + +### FUNC 00094A70 - 00094A76 (6 bytes) name=._ZNKSt6thread8joinableEv +00094A70: jmp cs:off_2F66B8 + +### FUNC 00094A80 - 00094A86 (6 bytes) name=.write +00094A80: jmp cs:off_2F66C0 + +### FUNC 00094A90 - 00094A96 (6 bytes) name=._ZNKSt5arrayIcLm9EE4sizeEv +00094A90: jmp cs:off_2F66C8 + +### FUNC 00094AA0 - 00094AA6 (6 bytes) name=._ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getISsSsLi0EEET0_v +00094AA0: jmp cs:off_2F66D0 + +### FUNC 00094AB0 - 00094AB6 (6 bytes) name=._ZNSt16allocator_traitsISaI19struct_TerminalListEE8max_sizeERKS1_ +00094AB0: jmp cs:off_2F66D8 + +### FUNC 00094AC0 - 00094AC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +00094AC0: jmp cs:off_2F66E0 + +### FUNC 00094AD0 - 00094AD6 (6 bytes) name=._Znwm +00094AD0: jmp cs:off_2F66E8 + +### FUNC 00094AE0 - 00094AE6 (6 bytes) name=._ZSt4copyIPKhPhET0_T_S4_S3_ +00094AE0: jmp cs:off_2F66F0 + +### FUNC 00094AF0 - 00094AF6 (6 bytes) name=._ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE +00094AF0: jmp cs:off_2F66F8 + +### FUNC 00094B00 - 00094B06 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8max_sizeEv +00094B00: jmp cs:off_2F6700 + +### FUNC 00094B10 - 00094B16 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev +00094B10: jmp cs:off_2F6708 + +### FUNC 00094B20 - 00094B26 (6 bytes) name=._ZSt13__copy_move_aILb1EPiS0_ET1_T0_S2_S1_ +00094B20: jmp cs:off_2F6710 + +### FUNC 00094B30 - 00094B36 (6 bytes) name=._ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv +00094B30: jmp cs:off_2F6718 + +### FUNC 00094B40 - 00094B46 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRmEEEvDpOT_ +00094B40: jmp cs:off_2F6720 + +### FUNC 00094B50 - 00094B56 (6 bytes) name=._ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m +00094B50: jmp cs:off_2F6728 + +### FUNC 00094B60 - 00094B66 (6 bytes) name=._ZN19EloTCMUpdaterDevice9softResetEv +00094B60: jmp cs:off_2F6730 + +### FUNC 00094B70 - 00094B76 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsE9constructISsJRA1_KcEEEvPT_DpOT0_ +00094B70: jmp cs:off_2F6738 + +### FUNC 00094B80 - 00094B86 (6 bytes) name=._ZSteqNSt6thread2idES0_ +00094B80: jmp cs:off_2F6740 + +### FUNC 00094B90 - 00094B96 (6 bytes) name=._ZNSsC1ERKSsmm +00094B90: jmp cs:off_2F6748 + +### FUNC 00094BA0 - 00094BA6 (6 bytes) name=._ZNSt11_Tuple_implILm0EJOSsEE7_M_tailERS1_ +00094BA0: jmp cs:off_2F6750 + +### FUNC 00094BB0 - 00094BB6 (6 bytes) name=._ZN9__gnu_cxx14__alloc_traitsISaIhEE15_S_always_equalEv +00094BB0: jmp cs:off_2F6758 + +### FUNC 00094BC0 - 00094BC6 (6 bytes) name=._ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +00094BC0: jmp cs:off_2F6760 + +### FUNC 00094BD0 - 00094BD6 (6 bytes) name=._ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs +00094BD0: jmp cs:off_2F6768 + +### FUNC 00094BE0 - 00094BE6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev +00094BE0: jmp cs:off_2F6770 + +### FUNC 00094BF0 - 00094BF6 (6 bytes) name=._ZNKSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +00094BF0: jmp cs:off_2F6778 + +### FUNC 00094C00 - 00094C06 (6 bytes) name=._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_ +00094C00: jmp cs:off_2F6780 + +### FUNC 00094C10 - 00094C16 (6 bytes) name=._Unwind_Resume +00094C10: jmp cs:off_2F6788 + +### FUNC 00094C20 - 00094C26 (6 bytes) name=._ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +00094C20: jmp cs:off_2F6790 + +### FUNC 00094C30 - 00094C36 (6 bytes) name=._ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv +00094C30: jmp cs:off_2F6798 + +### FUNC 00094C40 - 00094C46 (6 bytes) name=._ZNSt13move_iteratorIPP16TCMVirtualDeviceEC2ES2_ +00094C40: jmp cs:off_2F67A0 + +### FUNC 00094C50 - 00094C56 (6 bytes) name=._ZN8nlohmann6detail13int_to_stringISsEEvRT_m +00094C50: jmp cs:off_2F67A8 + +### FUNC 00094C60 - 00094C66 (6 bytes) name=._ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EE7_M_headERS2_ +00094C60: jmp cs:off_2F67B0 + +### FUNC 00094C70 - 00094C76 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRlEEEvPT_DpOT0_ +00094C70: jmp cs:off_2F67B8 + +### FUNC 00094C80 - 00094C86 (6 bytes) name=._ZNKSt6vectorIhSaIhEE3endEv +00094C80: jmp cs:off_2F67C0 + +### FUNC 00094C90 - 00094C96 (6 bytes) name=._ZN9__gnu_cxxmiIPKhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ +00094C90: jmp cs:off_2F67C8 + +### FUNC 00094CA0 - 00094CA6 (6 bytes) name=._ZN6serial6Serial9availableEv +00094CA0: jmp cs:off_2F67D0 + +### FUNC 00094CB0 - 00094CB6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEptEv +00094CB0: jmp cs:off_2F67D8 + +### FUNC 00094CC0 - 00094CC6 (6 bytes) name=._ZNSt6vectorIhSaIhEE9push_backERKh +00094CC0: jmp cs:off_2F67E0 + +### FUNC 00094CD0 - 00094CD6 (6 bytes) name=._ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSE_DpOSF_ +00094CD0: jmp cs:off_2F67E8 + +### FUNC 00094CE0 - 00094CE6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE10deallocateEPS2_m +00094CE0: jmp cs:off_2F67F0 + +### FUNC 00094CF0 - 00094CF6 (6 bytes) name=._ZNSt5dequeIcSaIcEE17_M_reallocate_mapEmb +00094CF0: jmp cs:off_2F67F8 + +### FUNC 00094D00 - 00094D06 (6 bytes) name=._ZNSt10_Head_baseILm0ERKSsLb0EEC2ES1_ +00094D00: jmp cs:off_2F6800 + +### FUNC 00094D10 - 00094D16 (6 bytes) name=._ZN6serial6Serial14ScopedReadLockD2Ev +00094D10: jmp cs:off_2F6808 + +### FUNC 00094D20 - 00094D26 (6 bytes) name=._ZN19EloTCMUpdaterDevice11setFirmDataERKSt6vectorIhSaIhEE +00094D20: jmp cs:off_2F6810 + +### FUNC 00094D30 - 00094D36 (6 bytes) name=._ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +00094D30: jmp cs:off_2F6818 + +### FUNC 00094D40 - 00094D46 (6 bytes) name=._ZNSs12_S_empty_repEv +00094D40: jmp cs:off_2F6820 + +### FUNC 00094D50 - 00094D56 (6 bytes) name=._ZNK6serial6Serial10SerialImpl14getFlowcontrolEv +00094D50: jmp cs:off_2F6828 + +### FUNC 00094D60 - 00094D66 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS9_EEvPT_ +00094D60: jmp cs:off_2F6830 + +### FUNC 00094D70 - 00094D76 (6 bytes) name=._ZN16TCMVirtualDevice11setDataCommEP9IDataComm +00094D70: jmp cs:off_2F6838 + +### FUNC 00094D80 - 00094D86 (6 bytes) name=._ZNSt6threadaSEOS_ +00094D80: jmp cs:off_2F6840 + +### FUNC 00094D90 - 00094D96 (6 bytes) name=._ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mI19struct_TerminalListEEPT_PKS4_S7_S5_ +00094D90: jmp cs:off_2F6848 + +### FUNC 00094DA0 - 00094DA6 (6 bytes) name=._ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEElLi0EEEvRT_T0_ +00094DA0: jmp cs:off_2F6850 + +### FUNC 00094DB0 - 00094DB6 (6 bytes) name=._ZN17ThermalController21getDefaultCalibrationEv +00094DB0: jmp cs:off_2F6858 + +### FUNC 00094DC0 - 00094DC6 (6 bytes) name=._ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE7destroyISE_EEvRSF_PT_ +00094DC0: jmp cs:off_2F6860 + +### FUNC 00094DD0 - 00094DD6 (6 bytes) name=.MAG_GetTemperatureProbe +00094DD0: jmp cs:off_2F6868 + +### FUNC 00094DE0 - 00094DE6 (6 bytes) name=._ZNSt6vectorIiSaIiEE9push_backERKi +00094DE0: jmp cs:off_2F6870 + +### FUNC 00094DF0 - 00094DF6 (6 bytes) name=._ZN8nlohmann6detail20external_constructorILNS0_7value_tE6EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_17number_unsigned_tE +00094DF0: jmp cs:off_2F6878 + +### FUNC 00094E00 - 00094E06 (6 bytes) name=._ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EC2ESH_RKSI_ +00094E00: jmp cs:off_2F6880 + +### FUNC 00094E10 - 00094E16 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JS8_EEEvPT_DpOT0_ +00094E10: jmp cs:off_2F6888 + +### FUNC 00094E20 - 00094E26 (6 bytes) name=._ZNSt11_Tuple_implILm0EJRKSsEE7_M_headERS2_ +00094E20: jmp cs:off_2F6890 + +### FUNC 00094E30 - 00094E36 (6 bytes) name=._ZN10SerialPort9closePortEv +00094E30: jmp cs:off_2F6898 + +### FUNC 00094E40 - 00094E46 (6 bytes) name=._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_ +00094E40: jmp cs:off_2F68A0 + +### FUNC 00094E50 - 00094E56 (6 bytes) name=._ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +00094E50: jmp cs:off_2F68A8 + +### FUNC 00094E60 - 00094E66 (6 bytes) name=._ZNSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2ERKS4_RKS8_RKS9_RKSA_RKS6_ +00094E60: jmp cs:off_2F68B0 + +### FUNC 00094E70 - 00094E76 (6 bytes) name=._ZN17ThermalController12updatePresetEiiSs +00094E70: jmp cs:off_2F68B8 + +### FUNC 00094E80 - 00094E86 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +00094E80: jmp cs:off_2F68C0 + +### FUNC 00094E90 - 00094E96 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv +00094E90: jmp cs:off_2F68C8 + +### FUNC 00094EA0 - 00094EA6 (6 bytes) name=._ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJRKiEEEvDpOT_ +00094EA0: jmp cs:off_2F68D0 + +### FUNC 00094EB0 - 00094EB6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2Ev +00094EB0: jmp cs:off_2F68D8 + +### FUNC 00094EC0 - 00094EC6 (6 bytes) name=._ZN8nlohmann14adl_serializerImvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERmEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +00094EC0: jmp cs:off_2F68E0 + +### FUNC 00094ED0 - 00094ED6 (6 bytes) name=.pthread_mutex_unlock +00094ED0: jmp cs:off_2F68E8 + +### FUNC 00094EE0 - 00094EE6 (6 bytes) name=._ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_ +00094EE0: jmp cs:off_2F68F0 + +### FUNC 00094EF0 - 00094EF6 (6 bytes) name=._ZNSt12_Vector_baseISsSaISsEEC2Ev +00094EF0: jmp cs:off_2F68F8 + +### FUNC 00094F00 - 00094F06 (6 bytes) name=._ZN6serial6SerialD2Ev +00094F00: jmp cs:off_2F6900 + +### FUNC 00094F10 - 00094F16 (6 bytes) name=._ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS9_EEEEvEEOS_IT_LS3_2EE +00094F10: jmp cs:off_2F6908 + +### FUNC 00094F20 - 00094F26 (6 bytes) name=._ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +00094F20: jmp cs:off_2F6910 + +### FUNC 00094F30 - 00094F36 (6 bytes) name=.MAG_FixTemperature2 +00094F30: jmp cs:off_2F6918 + +### FUNC 00094F40 - 00094F46 (6 bytes) name=._ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEED2Ev +00094F40: jmp cs:off_2F6920 + +### FUNC 00094F50 - 00094F56 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +00094F50: jmp cs:off_2F6928 + +### FUNC 00094F60 - 00094F66 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_b +00094F60: jmp cs:off_2F6930 + +### FUNC 00094F70 - 00094F76 (6 bytes) name=._ZNSsaSERKSs +00094F70: jmp cs:off_2F6938 + +### FUNC 00094F80 - 00094F86 (6 bytes) name=.memcpy +00094F80: jmp cs:off_2F6940 + +### FUNC 00094F90 - 00094F96 (6 bytes) name=._ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv +00094F90: jmp cs:off_2F6948 + +### FUNC 00094FA0 - 00094FA6 (6 bytes) name=._ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_ +00094FA0: jmp cs:off_2F6950 + +### FUNC 00094FB0 - 00094FB6 (6 bytes) name=._ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +00094FB0: jmp cs:off_2F6958 + +### FUNC 00094FC0 - 00094FC6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISsEC2Ev +00094FC0: jmp cs:off_2F6960 + +### FUNC 00094FD0 - 00094FD6 (6 bytes) name=._ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSH_ +00094FD0: jmp cs:off_2F6968 + +### FUNC 00094FE0 - 00094FE6 (6 bytes) name=._ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +00094FE0: jmp cs:off_2F6970 + +### FUNC 00094FF0 - 00094FF6 (6 bytes) name=._ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_ +00094FF0: jmp cs:off_2F6978 + +### FUNC 00095000 - 00095006 (6 bytes) name=._ZNSt13runtime_errorC2ERKS_ +00095000: jmp cs:off_2F6980 + +### FUNC 00095010 - 00095016 (6 bytes) name=._ZNSs6appendERKSs +00095010: jmp cs:off_2F6988 + +### FUNC 00095020 - 00095026 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5clearEv +00095020: jmp cs:off_2F6990 + +### FUNC 00095030 - 00095036 (6 bytes) name=.glob +00095030: jmp cs:off_2F6998 + +### FUNC 00095040 - 00095046 (6 bytes) name=._ZN9TCMDevice13getFirstNDataEi +00095040: jmp cs:off_2F69A0 + +### FUNC 00095050 - 00095056 (6 bytes) name=._ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc +00095050: jmp cs:off_2F69A8 + +### FUNC 00095060 - 00095066 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2ERKSD_ +00095060: jmp cs:off_2F69B0 + +### FUNC 00095070 - 00095076 (6 bytes) name=._ZNSt12_Destroy_auxILb0EE9__destroyIPN6serial8PortInfoEEEvT_S5_ +00095070: jmp cs:off_2F69B8 + +### FUNC 00095080 - 00095086 (6 bytes) name=._ZN16TCMVirtualDeviceD2Ev +00095080: jmp cs:off_2F69C0 + +### FUNC 00095090 - 00095096 (6 bytes) name=._ZSt7forwardIRSt4pairIKSsiEEOT_RNSt16remove_referenceIS4_E4typeE +00095090: jmp cs:off_2F69C8 + +### FUNC 000950A0 - 000950A6 (6 bytes) name=._ZN9__gnu_cxx11char_traitsIhE11to_int_typeERKh +000950A0: jmp cs:off_2F69D0 + +### FUNC 000950B0 - 000950B6 (6 bytes) name=._ZNSt5arrayIhLm4EE4dataEv +000950B0: jmp cs:off_2F69D8 + +### FUNC 000950C0 - 000950C6 (6 bytes) name=._ZN14EloEEROMDevice10readPresetEv +000950C0: jmp cs:off_2F69E0 + +### FUNC 000950D0 - 000950D6 (6 bytes) name=._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EcvbEv +000950D0: jmp cs:off_2F69E8 + +### FUNC 000950E0 - 000950E6 (6 bytes) name=._ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv +000950E0: jmp cs:off_2F69F0 + +### FUNC 000950F0 - 000950F6 (6 bytes) name=._ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEdeEv +000950F0: jmp cs:off_2F69F8 + +### FUNC 00095100 - 00095106 (6 bytes) name=.open +00095100: jmp cs:off_2F6A00 + +### FUNC 00095110 - 00095116 (6 bytes) name=._ZNSaISsEC2Ev_0 +00095110: jmp cs:off_2F6A08 + +### FUNC 00095120 - 00095126 (6 bytes) name=._ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EED2Ev +00095120: jmp cs:off_2F6A10 + +### FUNC 00095130 - 00095136 (6 bytes) name=._ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2ERKS8_ +00095130: jmp cs:off_2F6A18 + +### FUNC 00095140 - 00095146 (6 bytes) name=._ZN17ThermalController21readTemperatureInRectE4RectP17TemperatureResult +00095140: jmp cs:off_2F6A20 + +### FUNC 00095150 - 00095156 (6 bytes) name=._ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE +00095150: jmp cs:off_2F6A28 + +### FUNC 00095160 - 00095166 (6 bytes) name=._ZSt13__copy_move_aILb1EPhS0_ET1_T0_S2_S1_ +00095160: jmp cs:off_2F6A30 + +### FUNC 00095170 - 00095176 (6 bytes) name=._ZN6serial16MillisecondTimer12timespec_nowEv +00095170: jmp cs:off_2F6A38 + +### FUNC 00095180 - 00095186 (6 bytes) name=._ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv +00095180: jmp cs:off_2F6A40 + +### FUNC 00095190 - 00095196 (6 bytes) name=._ZN6serial6Serial8readlineERSsmSs +00095190: jmp cs:off_2F6A48 + +### FUNC 000951A0 - 000951A6 (6 bytes) name=._ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +000951A0: jmp cs:off_2F6A50 + +### FUNC 000951B0 - 000951B6 (6 bytes) name=._ZSt3getILm1EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000951B0: jmp cs:off_2F6A58 + +### FUNC 000951C0 - 000951C6 (6 bytes) name=._ZSt8_DestroyIPSsEvT_S1_ +000951C0: jmp cs:off_2F6A60 + +### FUNC 000951D0 - 000951D6 (6 bytes) name=._ZN6serial6Serial10SerialImpl4readEPhm +000951D0: jmp cs:off_2F6A68 + +### FUNC 000951E0 - 000951E6 (6 bytes) name=.MAG_GetTemperatureData_Raw +000951E0: jmp cs:off_2F6A70 + +### FUNC 000951F0 - 000951F6 (6 bytes) name=._ZNSt26_Maybe_wrap_member_pointerIM21EloTCMHeartBeatDeviceFvvEE9__do_wrapES2_ +000951F0: jmp cs:off_2F6A78 + +### FUNC 00095200 - 00095206 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base +00095200: jmp cs:off_2F6A80 + +### FUNC 00095210 - 00095216 (6 bytes) name=._ZNKSs4findEPKcm +00095210: jmp cs:off_2F6A88 + +### FUNC 00095220 - 00095226 (6 bytes) name=._ZNSs4_Rep26_M_set_length_and_sharableEm +00095220: jmp cs:off_2F6A90 + +### FUNC 00095230 - 00095236 (6 bytes) name=._ZSt34__uninitialized_move_if_noexcept_aIPSsS0_SaISsEET0_T_S3_S2_RT1_ +00095230: jmp cs:off_2F6A98 + +### FUNC 00095240 - 00095246 (6 bytes) name=._ZNSt6vectorIbSaIbEE8pop_backEv +00095240: jmp cs:off_2F6AA0 + +### FUNC 00095250 - 00095256 (6 bytes) name=._ZNKSt13runtime_error4whatEv +00095250: jmp cs:off_2F6AA8 + +### FUNC 00095260 - 00095266 (6 bytes) name=._ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESt20back_insert_iteratorIS6_ISA_SaISA_EEEEET0_T_SH_SG_ +00095260: jmp cs:off_2F6AB0 + +### FUNC 00095270 - 00095276 (6 bytes) name=._ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE +00095270: jmp cs:off_2F6AB8 + +### FUNC 00095280 - 00095286 (6 bytes) name=._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPcEEPT_PKS4_S7_S5_ +00095280: jmp cs:off_2F6AC0 + +### FUNC 00095290 - 00095296 (6 bytes) name=._ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +00095290: jmp cs:off_2F6AC8 + +### FUNC 000952A0 - 000952A6 (6 bytes) name=._ZSt13__bind_simpleIM19EloTCMUpdaterDeviceFbvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000952A0: jmp cs:off_2F6AD0 + +### FUNC 000952B0 - 000952B6 (6 bytes) name=._ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs +000952B0: jmp cs:off_2F6AD8 + +### FUNC 000952C0 - 000952C6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIPcE8allocateEmPKv +000952C0: jmp cs:off_2F6AE0 + +### FUNC 000952D0 - 000952D6 (6 bytes) name=._ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev +000952D0: jmp cs:off_2F6AE8 + +### FUNC 000952E0 - 000952E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceED2Ev +000952E0: jmp cs:off_2F6AF0 + +### FUNC 000952F0 - 000952F6 (6 bytes) name=._ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSH_vEEOSC_OT0_ +000952F0: jmp cs:off_2F6AF8 + +### FUNC 00095300 - 00095306 (6 bytes) name=._ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE +00095300: jmp cs:off_2F6B00 + +### FUNC 00095310 - 00095316 (6 bytes) name=._ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1000EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +00095310: jmp cs:off_2F6B08 + +### FUNC 00095320 - 00095326 (6 bytes) name=._ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +00095320: jmp cs:off_2F6B10 + +### FUNC 00095330 - 00095336 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPiES3_EET0_T_S6_S5_ +00095330: jmp cs:off_2F6B18 + +### FUNC 00095340 - 00095346 (6 bytes) name=._ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EEC2IS4_EEOT_ +00095340: jmp cs:off_2F6B20 + +### FUNC 00095350 - 00095356 (6 bytes) name=.strtod +00095350: jmp cs:off_2F6B28 + +### FUNC 00095360 - 00095366 (6 bytes) name=._ZN9TCMDevice11checkHeaderERKSt6vectorIhSaIhEE +00095360: jmp cs:off_2F6B30 + +### FUNC 00095370 - 00095376 (6 bytes) name=._ZN8nlohmann6detail10type_errorC2EiPKc +00095370: jmp cs:off_2F6B38 + +### FUNC 00095380 - 00095386 (6 bytes) name=._ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E +00095380: jmp cs:off_2F6B40 + +### FUNC 00095390 - 00095396 (6 bytes) name=._ZN6serial6Serial10SerialImpl13waitForChangeEv +00095390: jmp cs:off_2F6B48 + +### FUNC 000953A0 - 000953A6 (6 bytes) name=._ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ +000953A0: jmp cs:off_2F6B50 + +### FUNC 000953B0 - 000953B6 (6 bytes) name=._ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERSsEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000953B0: jmp cs:off_2F6B58 + +### FUNC 000953C0 - 000953C6 (6 bytes) name=._ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_JRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ +000953C0: jmp cs:off_2F6B60 + +### FUNC 000953D0 - 000953D6 (6 bytes) name=._ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIPhmEEvT_T0_ +000953D0: jmp cs:off_2F6B68 + +### FUNC 000953E0 - 000953E6 (6 bytes) name=._ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET0_T_SH_SG_ +000953E0: jmp cs:off_2F6B70 + +### FUNC 000953F0 - 000953F6 (6 bytes) name=._ZNKSt6vectorIbSaIbEE5emptyEv +000953F0: jmp cs:off_2F6B78 + +### FUNC 00095400 - 00095406 (6 bytes) name=._ZSt4moveIRhEONSt16remove_referenceIT_E4typeEOS2_ +00095400: jmp cs:off_2F6B80 + +### FUNC 00095410 - 00095416 (6 bytes) name=._ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +00095410: jmp cs:off_2F6B88 + +### FUNC 00095420 - 00095426 (6 bytes) name=._ZSt13back_inserterISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEESt20back_insert_iteratorIT_ERSB_ +00095420: jmp cs:off_2F6B90 + +### FUNC 00095430 - 00095436 (6 bytes) name=._ZSteqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +00095430: jmp cs:off_2F6B98 + +### FUNC 00095440 - 00095446 (6 bytes) name=._ZSteqIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +00095440: jmp cs:off_2F6BA0 + +### FUNC 00095450 - 00095456 (6 bytes) name=._ZN16TCMVirtualDeviceD2Ev_0 +00095450: jmp cs:off_2F6BA8 + +### FUNC 00095460 - 00095466 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceEC2Ev +00095460: jmp cs:off_2F6BB0 + +### FUNC 00095470 - 00095476 (6 bytes) name=._ZN6serial6Serial10SerialImpl6getCTSEv +00095470: jmp cs:off_2F6BB8 + +### FUNC 00095480 - 00095486 (6 bytes) name=._ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E7releaseEv +00095480: jmp cs:off_2F6BC0 + +### FUNC 00095490 - 00095496 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +00095490: jmp cs:off_2F6BC8 + +### FUNC 000954A0 - 000954A6 (6 bytes) name=._ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000954A0: jmp cs:off_2F6BD0 + +### FUNC 000954B0 - 000954B6 (6 bytes) name=._ZNSt10_Head_baseILm0EOSsLb0EE7_M_headERS1_ +000954B0: jmp cs:off_2F6BD8 + +### FUNC 000954C0 - 000954C6 (6 bytes) name=._ZNSt11_Tuple_implILm1EJEEC2Ev +000954C0: jmp cs:off_2F6BE0 + +### FUNC 000954D0 - 000954D6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_minimumEPSt18_Rb_tree_node_base +000954D0: jmp cs:off_2F6BE8 + +### FUNC 000954E0 - 000954E6 (6 bytes) name=._ZNK8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +000954E0: jmp cs:off_2F6BF0 + +### FUNC 000954F0 - 000954F6 (6 bytes) name=._ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000954F0: jmp cs:off_2F6BF8 + +### FUNC 00095500 - 00095506 (6 bytes) name=._ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES4_EET0_T_SA_S9_ +00095500: jmp cs:off_2F6C00 + +### FUNC 00095510 - 00095516 (6 bytes) name=._ZN10IMotorDoneC2Ev +00095510: jmp cs:off_2F6C08 + +### FUNC 00095520 - 00095526 (6 bytes) name=._ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE8_M_beginEv +00095520: jmp cs:off_2F6C10 + +### FUNC 00095530 - 00095536 (6 bytes) name=._ZSt12__get_helperILm0ESt7_Mem_fnIM10SerialPortFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +00095530: jmp cs:off_2F6C18 + +### FUNC 00095540 - 00095546 (6 bytes) name=._ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +00095540: jmp cs:off_2F6C20 + +### FUNC 00095550 - 00095556 (6 bytes) name=._ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEED2Ev +00095550: jmp cs:off_2F6C28 + +### FUNC 00095560 - 00095566 (6 bytes) name=._ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv +00095560: jmp cs:off_2F6C30 + +### FUNC 00095570 - 00095576 (6 bytes) name=._ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET1_T0_SA_S9_ +00095570: jmp cs:off_2F6C38 + +### FUNC 00095580 - 00095586 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorIiEC2Ev +00095580: jmp cs:off_2F6C40 + +### FUNC 00095590 - 00095596 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJRS3_EESJ_IJEEEEEvPT_DpOT0_ +00095590: jmp cs:off_2F6C48 + +### FUNC 000955A0 - 000955A6 (6 bytes) name=._ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +000955A0: jmp cs:off_2F6C50 + +### FUNC 000955B0 - 000955B6 (6 bytes) name=._ZN9__gnu_cxx14__alloc_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEE17_S_select_on_copyERKS9_ +000955B0: jmp cs:off_2F6C58 + +### FUNC 000955C0 - 000955C6 (6 bytes) name=._ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISA_E +000955C0: jmp cs:off_2F6C60 + +### FUNC 000955D0 - 000955D6 (6 bytes) name=._ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000955D0: jmp cs:off_2F6C68 + +### FUNC 000955E0 - 000955E6 (6 bytes) name=._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2Ev +000955E0: jmp cs:off_2F6C70 + +### FUNC 000955F0 - 000955F6 (6 bytes) name=._ZNSirsERj +000955F0: jmp cs:off_2F6C78 + +### FUNC 00095600 - 00095606 (6 bytes) name=._ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm +00095600: jmp cs:off_2F6C80 + +### FUNC 00095610 - 00095616 (6 bytes) name=._ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv +00095610: jmp cs:off_2F6C88 + +### FUNC 00095620 - 00095626 (6 bytes) name=._ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +00095620: jmp cs:off_2F6C90 + +### FUNC 00095630 - 00095636 (6 bytes) name=._ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERS7_ +00095630: jmp cs:off_2F6C98 + +### FUNC 00095640 - 00095646 (6 bytes) name=._ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb1EEEm +00095640: jmp cs:off_2F6CA0 + +### FUNC 00095650 - 00095656 (6 bytes) name=._ZN9__gnu_cxx12__to_xstringISscEET_PFiPT0_mPKS2_P13__va_list_tagEmS5_z +00095650: jmp cs:off_2F6CA8 + +### FUNC 00095660 - 00095666 (6 bytes) name=._ZN17ThermalControllerC2Ev +00095660: jmp cs:off_2F6CB0 + +### FUNC 00095670 - 00095676 (6 bytes) name=._ZNK9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +00095670: jmp cs:off_2F6CB8 + +### FUNC 00095680 - 00095686 (6 bytes) name=._ZN6serial6Serial10SerialImpl4openEv +00095680: jmp cs:off_2F6CC0 + +### FUNC 00095690 - 00095696 (6 bytes) name=._ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSO_EvEEOSJ_SN_ +00095690: jmp cs:off_2F6CC8 + +### FUNC 000956A0 - 000956A6 (6 bytes) name=._ZN9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSA_ +000956A0: jmp cs:off_2F6CD0 + +### FUNC 000956B0 - 000956B6 (6 bytes) name=._ZNSt6vectorIhSaIhEE6insertIPhvEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_ +000956B0: jmp cs:off_2F6CD8 + +### FUNC 000956C0 - 000956C6 (6 bytes) name=._ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE7destroyIS9_EEvRSA_PT_ +000956C0: jmp cs:off_2F6CE0 + +### FUNC 000956D0 - 000956D6 (6 bytes) name=.MAG_NewChannel +000956D0: jmp cs:off_2F6CE8 + +### FUNC 000956E0 - 000956E6 (6 bytes) name=._ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_ +000956E0: jmp cs:off_2F6CF0 + +### FUNC 000956F0 - 000956F6 (6 bytes) name=._ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E7releaseEv +000956F0: jmp cs:off_2F6CF8 + +### FUNC 00095700 - 00095706 (6 bytes) name=._ZNSt18_Bit_iterator_base12_M_bump_downEv +00095700: jmp cs:off_2F6D00 + +### FUNC 00095710 - 00095716 (6 bytes) name=._ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator +00095710: jmp cs:off_2F6D08 + +### FUNC 00095720 - 00095726 (6 bytes) name=._ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv +00095720: jmp cs:off_2F6D10 + +### FUNC 00095730 - 00095736 (6 bytes) name=._ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EC2ESG_RKSH_ +00095730: jmp cs:off_2F6D18 + +### FUNC 00095740 - 0009576C (44 bytes) name=deregister_tm_clones +00095740: lea rax, unk_345217 +00095747: lea rdi, __bss_start +0009574E: push rbp +0009574F: sub rax, rdi +00095752: mov rbp, rsp +00095755: cmp rax, 0Eh +00095759: ja short loc_9575D +0009575B: pop rbp +0009575C: retn +0009575D: mov rax, cs:_ITM_deregisterTMCloneTable_ptr +00095764: test rax, rax +00095767: jz short loc_9575B +00095769: pop rbp +0009576A: jmp rax + +### FUNC 00095770 - 000957AC (60 bytes) name=register_tm_clones +00095770: lea rax, __bss_start +00095777: lea rdi, __bss_start +0009577E: push rbp +0009577F: sub rax, rdi +00095782: mov rbp, rsp +00095785: sar rax, 3 +00095789: mov rdx, rax +0009578C: shr rdx, 3Fh +00095790: add rax, rdx +00095793: sar rax, 1 +00095796: jnz short loc_9579A +00095798: pop rbp +00095799: retn +0009579A: mov rdx, cs:_ITM_registerTMCloneTable_ptr +000957A1: test rdx, rdx +000957A4: jz short loc_95798 +000957A6: pop rbp +000957A7: mov rsi, rax +000957AA: jmp rdx + +### FUNC 000957B0 - 000957E2 (50 bytes) name=__do_global_dtors_aux +000957B0: cmp cs:__bss_start, 0 +000957B7: jnz short locret_957E0 +000957B9: cmp cs:__cxa_finalize_ptr, 0 +000957C1: push rbp +000957C2: mov rbp, rsp +000957C5: jz short loc_957D3 +000957C7: lea rdi, __dso_handle; void * +000957CE: call ___cxa_finalize +000957D3: call deregister_tm_clones +000957D8: pop rbp +000957D9: mov cs:__bss_start, 1 +000957E0: rep retn + +### FUNC 000957F0 - 00095825 (53 bytes) name=frame_dummy +000957F0: cmp cs:__JCR_LIST__, 0 +000957F8: jz short loc_95820 +000957FA: mov rax, cs:_Jv_RegisterClasses_ptr +00095801: test rax, rax +00095804: jz short loc_95820 +00095806: push rbp +00095807: lea rdi, __JCR_LIST__ +0009580E: mov rbp, rsp +00095811: call rax ; _Jv_RegisterClasses +00095813: pop rbp +00095814: jmp register_tm_clones +00095819: align 20h +00095820: jmp register_tm_clones + +### FUNC 00095825 - 00095830 (11 bytes) name=GetSDKVersion +00095825: push rbp +00095826: mov rbp, rsp +00095829: mov eax, 27DAh +0009582E: pop rbp +0009582F: retn + +### FUNC 00095830 - 00095843 (19 bytes) name=Start +00095830: push rbp +00095831: mov rbp, rsp +00095834: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095839: mov rdi, rax; this +0009583C: call __ZN17ThermalController7onStartEv; ThermalController::onStart(void) +00095841: pop rbp +00095842: retn + +### FUNC 00095843 - 00095856 (19 bytes) name=Stop +00095843: push rbp +00095844: mov rbp, rsp +00095847: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +0009584C: mov rdi, rax; this +0009584F: call __ZN17ThermalController6onStopEv; ThermalController::onStop(void) +00095854: pop rbp +00095855: retn + +### FUNC 00095856 - 00095869 (19 bytes) name=IsWorking +00095856: push rbp +00095857: mov rbp, rsp +0009585A: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +0009585F: mov rdi, rax; this +00095862: call __ZN17ThermalController9isWorkingEv; ThermalController::isWorking(void) +00095867: pop rbp +00095868: retn + +### FUNC 00095869 - 0009587C (19 bytes) name=IsTCMOpen +00095869: push rbp +0009586A: mov rbp, rsp +0009586D: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095872: mov rdi, rax; this +00095875: call __ZN17ThermalController11isTCMOpenedEv; ThermalController::isTCMOpened(void) +0009587A: pop rbp +0009587B: retn + +### FUNC 0009587C - 0009588F (19 bytes) name=IsIROpen +0009587C: push rbp +0009587D: mov rbp, rsp +00095880: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095885: mov rdi, rax; this +00095888: call __ZN17ThermalController10isIROpenedEv; ThermalController::isIROpened(void) +0009588D: pop rbp +0009588E: retn + +### FUNC 0009588F - 000958B1 (34 bytes) name=SetNewIRFrameDelegate +0009588F: push rbp +00095890: mov rbp, rsp +00095893: sub rsp, 10h +00095897: mov [rbp+var_8], rdi +0009589B: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +000958A0: mov rdx, [rbp+var_8] +000958A4: mov rsi, rdx; void (__fastcall *)(const unsigned __int8 *, int, int, int) +000958A7: mov rdi, rax; this +000958AA: call __ZN17ThermalController13setNewIRFrameEPFvPKhiiiE; ThermalController::setNewIRFrame(void (*)(uchar const*,int,int,int)) +000958AF: leave +000958B0: retn + +### FUNC 000958B1 - 000958D3 (34 bytes) name=SetNewDistanceDelegate +000958B1: push rbp +000958B2: mov rbp, rsp +000958B5: sub rsp, 10h +000958B9: mov [rbp+var_8], rdi +000958BD: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +000958C2: mov rdx, [rbp+var_8] +000958C6: mov rsi, rdx; void (__fastcall *)(float) +000958C9: mov rdi, rax; this +000958CC: call __ZN17ThermalController14setNewDistanceEPFvfE; ThermalController::setNewDistance(void (*)(float)) +000958D1: leave +000958D2: retn + +### FUNC 000958D3 - 000958F5 (34 bytes) name=SetDistanceError +000958D3: push rbp +000958D4: mov rbp, rsp +000958D7: sub rsp, 10h +000958DB: mov [rbp+var_8], rdi +000958DF: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +000958E4: mov rdx, [rbp+var_8] +000958E8: mov rsi, rdx; void (*)(void) +000958EB: mov rdi, rax; this +000958EE: call __ZN17ThermalController16setDistanceErrorEPFvvE; ThermalController::setDistanceError(void (*)(void)) +000958F3: leave +000958F4: retn + +### FUNC 000958F5 - 00095929 (52 bytes) name=ReadTemperatureAtPoint +000958F5: push rbp +000958F6: mov rbp, rsp +000958F9: sub rsp, 20h +000958FD: mov [rbp+var_14], edi +00095900: mov [rbp+var_18], esi +00095903: mov [rbp+var_20], rdx +00095907: mov rax, [rbp+var_20] +0009590B: mov [rbp+var_8], rax +0009590F: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095914: mov rcx, [rbp+var_8] +00095918: mov edx, [rbp+var_18] +0009591B: mov esi, [rbp+var_14] +0009591E: mov rdi, rax +00095921: call __ZN17ThermalController22readTemperatureAtPointEiiP17TemperatureResult; ThermalController::readTemperatureAtPoint(int,int,TemperatureResult *) +00095926: nop +00095927: leave +00095928: retn + +### FUNC 00095929 - 0009597D (84 bytes) name=ReadTemperatureInRect +00095929: push rbp +0009592A: mov rbp, rsp +0009592D: sub rsp, 40h +00095931: mov [rbp+var_24], edi +00095934: mov [rbp+var_28], esi +00095937: mov [rbp+var_2C], edx +0009593A: mov [rbp+var_30], ecx +0009593D: mov [rbp+var_38], r8 +00095941: mov rax, [rbp+var_38] +00095945: mov [rbp+var_8], rax +00095949: mov eax, [rbp+var_24] +0009594C: mov dword ptr [rbp+var_20], eax +0009594F: mov eax, [rbp+var_28] +00095952: mov dword ptr [rbp+var_20+4], eax +00095955: mov eax, [rbp+var_2C] +00095958: mov dword ptr [rbp+var_18], eax +0009595B: mov eax, [rbp+var_30] +0009595E: mov dword ptr [rbp+var_18+4], eax +00095961: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095966: mov rcx, [rbp+var_8] +0009596A: mov rsi, [rbp+var_20] +0009596E: mov rdx, [rbp+var_18] +00095972: mov rdi, rax +00095975: call __ZN17ThermalController21readTemperatureInRectE4RectP17TemperatureResult; ThermalController::readTemperatureInRect(Rect,TemperatureResult *) +0009597A: nop +0009597B: leave +0009597C: retn + +### FUNC 0009597D - 000959CD (80 bytes) name=SetTempBoundary +0009597D: push rbp +0009597E: mov rbp, rsp +00095981: sub rsp, 20h +00095985: movsd [rbp+var_8], xmm0 +0009598A: movsd [rbp+var_10], xmm1 +0009598F: movsd [rbp+var_18], xmm2 +00095994: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095999: mov rsi, rax +0009599C: mov rcx, [rbp+var_18] +000959A0: mov rdx, [rbp+var_10] +000959A4: mov rax, [rbp+var_8] +000959A8: mov [rbp+var_20], rcx +000959AC: movsd xmm2, [rbp+var_20]; double +000959B1: mov [rbp+var_20], rdx +000959B5: movsd xmm1, [rbp+var_20]; double +000959BA: mov [rbp+var_20], rax +000959BE: movsd xmm0, [rbp+var_20]; double +000959C3: mov rdi, rsi; this +000959C6: call __ZN17ThermalController15setTempBoundaryEddd; ThermalController::setTempBoundary(double,double,double) +000959CB: leave +000959CC: retn + +### FUNC 000959CD - 000959F9 (44 bytes) name=SetTempOffset +000959CD: push rbp +000959CE: mov rbp, rsp +000959D1: sub rsp, 10h +000959D5: movsd [rbp+var_8], xmm0 +000959DA: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +000959DF: mov rdx, rax +000959E2: mov rax, [rbp+var_8] +000959E6: mov [rbp+var_10], rax +000959EA: movsd xmm0, [rbp+var_10]; double +000959EF: mov rdi, rdx; this +000959F2: call __ZN17ThermalController13setTempOffsetEd; ThermalController::setTempOffset(double) +000959F7: leave +000959F8: retn + +### FUNC 000959F9 - 00095A18 (31 bytes) name=SetUnitMode +000959F9: push rbp +000959FA: mov rbp, rsp +000959FD: sub rsp, 10h +00095A01: mov [rbp+var_4], edi +00095A04: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095A09: mov edx, [rbp+var_4] +00095A0C: mov esi, edx; int +00095A0E: mov rdi, rax; this +00095A11: call __ZN17ThermalController11setUnitModeEi; ThermalController::setUnitMode(int) +00095A16: leave +00095A17: retn + +### FUNC 00095A18 - 00095A37 (31 bytes) name=Rotate +00095A18: push rbp +00095A19: mov rbp, rsp +00095A1C: sub rsp, 10h +00095A20: mov [rbp+var_4], edi +00095A23: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095A28: mov edx, [rbp+var_4] +00095A2B: mov esi, edx; int +00095A2D: mov rdi, rax; this +00095A30: call __ZN17ThermalController6rotateEi; ThermalController::rotate(int) +00095A35: leave +00095A36: retn + +### FUNC 00095A37 - 00095A60 (41 bytes) name=GetInnerIRCameraTemp +00095A37: push rbp +00095A38: mov rbp, rsp +00095A3B: sub rsp, 10h +00095A3F: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095A44: mov rdi, rax; this +00095A47: call __ZN17ThermalController20getInnerIRCameraTempEv; ThermalController::getInnerIRCameraTemp(void) +00095A4C: movsd [rbp+var_8], xmm0 +00095A51: mov rax, [rbp+var_8] +00095A55: mov [rbp+var_8], rax +00095A59: movsd xmm0, [rbp+var_8] +00095A5E: leave +00095A5F: retn + +### FUNC 00095A60 - 00095ACD (109 bytes) name=GetInnerIRCameraSerial +00095A60: push rbp +00095A61: mov rbp, rsp +00095A64: push rbx +00095A65: sub rsp, 28h +00095A69: mov [rbp+dest], rdi +00095A6D: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095A72: mov rdx, rax +00095A75: lea rax, [rbp+var_20] +00095A79: mov rsi, rdx +00095A7C: mov rdi, rax; this +00095A7F: call __ZN17ThermalController22getInnerIRCameraSerialEv; ThermalController::getInnerIRCameraSerial(void) +00095A84: lea rax, [rbp+var_20] +00095A88: mov rdi, rax; this +00095A8B: call __ZNKSs4sizeEv; std::string::size(void) +00095A90: mov [rbp+var_14], eax +00095A93: mov eax, [rbp+var_14] +00095A96: movsxd rbx, eax +00095A99: lea rax, [rbp+var_20] +00095A9D: mov rdi, rax; this +00095AA0: call __ZNKSs5c_strEv; std::string::c_str(void) +00095AA5: mov rcx, rax +00095AA8: mov rax, [rbp+dest] +00095AAC: mov rdx, rbx; n +00095AAF: mov rsi, rcx; src +00095AB2: mov rdi, rax; dest +00095AB5: call _memcpy +00095ABA: lea rax, [rbp+var_20] +00095ABE: mov rdi, rax; this +00095AC1: call __ZNSsD1Ev; std::string::~string() +00095AC6: add rsp, 28h +00095ACA: pop rbx +00095ACB: pop rbp +00095ACC: retn + +### FUNC 00095ACD - 00095AF9 (44 bytes) name=SetEmissivity +00095ACD: push rbp +00095ACE: mov rbp, rsp +00095AD1: sub rsp, 10h +00095AD5: movsd [rbp+var_8], xmm0 +00095ADA: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095ADF: mov rdx, rax +00095AE2: mov rax, [rbp+var_8] +00095AE6: mov [rbp+var_10], rax +00095AEA: movsd xmm0, [rbp+var_10]; double +00095AEF: mov rdi, rdx; this +00095AF2: call __ZN17ThermalController13setEmissivityEd; ThermalController::setEmissivity(double) +00095AF7: leave +00095AF8: retn + +### FUNC 00095AF9 - 00095B0C (19 bytes) name=Trigger +00095AF9: push rbp +00095AFA: mov rbp, rsp +00095AFD: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095B02: mov rdi, rax; this +00095B05: call __ZN17ThermalController7triggerEv; ThermalController::trigger(void) +00095B0A: pop rbp +00095B0B: retn + +### FUNC 00095B0C - 00095B95 (137 bytes) name=GetTCMVersion +00095B0C: push rbp +00095B0D: mov rbp, rsp +00095B10: push rbx +00095B11: sub rsp, 38h +00095B15: mov [rbp+dest], rdi +00095B19: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095B1E: mov rdi, rax; this +00095B21: call __ZN17ThermalController12getTCMDeviceEv; ThermalController::getTCMDevice(void) +00095B26: mov rdi, rax; this +00095B29: call __ZN9TCMDevice19getTCMUpdaterDeviceEv; TCMDevice::getTCMUpdaterDevice(void) +00095B2E: mov [rbp+var_18], rax +00095B32: cmp [rbp+var_18], 0 +00095B37: jz short loc_95B8E +00095B39: lea rax, [rbp+var_30] +00095B3D: mov rdx, [rbp+var_18] +00095B41: mov rsi, rdx +00095B44: mov rdi, rax; this +00095B47: call __ZN19EloTCMUpdaterDevice10askVersionEv; EloTCMUpdaterDevice::askVersion(void) +00095B4C: lea rax, [rbp+var_30] +00095B50: mov rdi, rax; this +00095B53: call __ZNKSs4sizeEv; std::string::size(void) +00095B58: mov [rbp+var_1C], eax +00095B5B: mov eax, [rbp+var_1C] +00095B5E: movsxd rbx, eax +00095B61: lea rax, [rbp+var_30] +00095B65: mov rdi, rax; this +00095B68: call __ZNKSs5c_strEv; std::string::c_str(void) +00095B6D: mov rcx, rax +00095B70: mov rax, [rbp+dest] +00095B74: mov rdx, rbx; n +00095B77: mov rsi, rcx; src +00095B7A: mov rdi, rax; dest +00095B7D: call _memcpy +00095B82: lea rax, [rbp+var_30] +00095B86: mov rdi, rax; this +00095B89: call __ZNSsD1Ev; std::string::~string() +00095B8E: add rsp, 38h +00095B92: pop rbx +00095B93: pop rbp +00095B94: retn + +### FUNC 00095B95 - 00095C48 (179 bytes) name=SetFirmwareData +00095B95: push rbp +00095B96: mov rbp, rsp +00095B99: push rbx +00095B9A: sub rsp, 38h +00095B9E: mov [rbp+var_38], rdi +00095BA2: mov [rbp+var_3C], esi +00095BA5: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095BAA: mov rdi, rax; this +00095BAD: call __ZN17ThermalController12getTCMDeviceEv; ThermalController::getTCMDevice(void) +00095BB2: mov rdi, rax; this +00095BB5: call __ZN9TCMDevice19getTCMUpdaterDeviceEv; TCMDevice::getTCMUpdaterDevice(void) +00095BBA: mov [rbp+var_18], rax +00095BBE: cmp [rbp+var_18], 0 +00095BC3: jz short loc_95C41 +00095BC5: lea rax, [rbp+var_30] +00095BC9: mov rdi, rax +00095BCC: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +00095BD1: mov eax, [rbp+var_3C] +00095BD4: movsxd rdx, eax +00095BD7: lea rax, [rbp+var_30] +00095BDB: mov rsi, rdx +00095BDE: mov rdi, rax +00095BE1: call __ZNSt6vectorIhSaIhEE7reserveEm; std::vector>::reserve(ulong) +00095BE6: mov eax, [rbp+var_3C] +00095BE9: movsxd rdx, eax +00095BEC: mov rax, [rbp+var_38] +00095BF0: add rdx, rax +00095BF3: mov rcx, [rbp+var_38] +00095BF7: lea rax, [rbp+var_30] +00095BFB: mov rsi, rcx +00095BFE: mov rdi, rax +00095C01: call __ZNSt6vectorIhSaIhEE6assignIPKhvEEvT_S5_; std::vector>::assign(uchar const*,uchar const*) +00095C06: lea rdx, [rbp+var_30] +00095C0A: mov rax, [rbp+var_18] +00095C0E: mov rsi, rdx +00095C11: mov rdi, rax +00095C14: call __ZN19EloTCMUpdaterDevice11setFirmDataERKSt6vectorIhSaIhEE; EloTCMUpdaterDevice::setFirmData(std::vector> const&) +00095C19: lea rax, [rbp+var_30] +00095C1D: mov rdi, rax +00095C20: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +00095C25: jmp short loc_95C41 +00095C27: mov rbx, rax +00095C2A: lea rax, [rbp+var_30] +00095C2E: mov rdi, rax +00095C31: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +00095C36: mov rax, rbx +00095C39: mov rdi, rax; struct _Unwind_Exception * +00095C3C: call __Unwind_Resume +00095C41: add rsp, 38h +00095C45: pop rbx +00095C46: pop rbp +00095C47: retn + +### FUNC 00095C48 - 00095C6A (34 bytes) name=SetUpdateCallback +00095C48: push rbp +00095C49: mov rbp, rsp +00095C4C: sub rsp, 10h +00095C50: mov [rbp+var_8], rdi +00095C54: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095C59: mov rdx, [rbp+var_8] +00095C5D: mov rsi, rdx; void (__fastcall *)(bool, int) +00095C60: mov rdi, rax; this +00095C63: call __ZN17ThermalController17setUpdateCallbackEPFvbiE; ThermalController::setUpdateCallback(void (*)(bool,int)) +00095C68: leave +00095C69: retn + +### FUNC 00095C6A - 00095CA0 (54 bytes) name=StartUpdate +00095C6A: push rbp +00095C6B: mov rbp, rsp +00095C6E: sub rsp, 10h +00095C72: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095C77: mov rdi, rax; this +00095C7A: call __ZN17ThermalController12getTCMDeviceEv; ThermalController::getTCMDevice(void) +00095C7F: mov rdi, rax; this +00095C82: call __ZN9TCMDevice19getTCMUpdaterDeviceEv; TCMDevice::getTCMUpdaterDevice(void) +00095C87: mov [rbp+var_8], rax +00095C8B: cmp [rbp+var_8], 0 +00095C90: jz short locret_95C9E +00095C92: mov rax, [rbp+var_8] +00095C96: mov rdi, rax; this +00095C99: call __ZN19EloTCMUpdaterDevice11startUpdateEv; EloTCMUpdaterDevice::startUpdate(void) +00095C9E: leave +00095C9F: retn + +### FUNC 00095CA0 - 00095CC2 (34 bytes) name=SetLimitEventListener +00095CA0: push rbp +00095CA1: mov rbp, rsp +00095CA4: sub rsp, 10h +00095CA8: mov [rbp+var_8], rdi +00095CAC: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095CB1: mov rdx, [rbp+var_8] +00095CB5: mov rsi, rdx; void (__fastcall *)(bool) +00095CB8: mov rdi, rax; this +00095CBB: call __ZN17ThermalController21setLimitEventListenerEPFvbE; ThermalController::setLimitEventListener(void (*)(bool)) +00095CC0: leave +00095CC1: retn + +### FUNC 00095CC2 - 00095CD5 (19 bytes) name=LimitReset +00095CC2: push rbp +00095CC3: mov rbp, rsp +00095CC6: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095CCB: mov rdi, rax; this +00095CCE: call __ZN17ThermalController10limitResetEv; ThermalController::limitReset(void) +00095CD3: pop rbp +00095CD4: retn + +### FUNC 00095CD5 - 00095CE8 (19 bytes) name=SoftResetTCM +00095CD5: push rbp +00095CD6: mov rbp, rsp +00095CD9: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095CDE: mov rdi, rax; this +00095CE1: call __ZN17ThermalController9softResetEv; ThermalController::softReset(void) +00095CE6: pop rbp +00095CE7: retn + +### FUNC 00095CE8 - 00095DBE (214 bytes) name=UpdatePreset +00095CE8: push rbp +00095CE9: mov rbp, rsp +00095CEC: push rbx +00095CED: sub rsp, 38h +00095CF1: mov [rbp+var_34], edi +00095CF4: mov [rbp+var_38], esi +00095CF7: mov [rbp+var_40], rdx +00095CFB: lea rax, [rbp+var_21] +00095CFF: mov rdi, rax +00095D02: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +00095D07: lea rdx, [rbp+var_21] +00095D0B: mov rcx, [rbp+var_40] +00095D0F: lea rax, [rbp+var_30] +00095D13: mov rsi, rcx +00095D16: mov rdi, rax +00095D19: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +00095D1E: lea rax, [rbp+var_21] +00095D22: mov rdi, rax +00095D25: call __ZNSaIcED1Ev; std::allocator::~allocator() +00095D2A: lea rdx, [rbp+var_30] +00095D2E: lea rax, [rbp+var_20] +00095D32: mov rsi, rdx; std::string * +00095D35: mov rdi, rax; this +00095D38: call __ZNSsC1ERKSs; std::string::string(std::string const&) +00095D3D: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095D42: lea rcx, [rbp+var_20] +00095D46: mov edx, [rbp+var_38] +00095D49: mov esi, [rbp+var_34] +00095D4C: mov rdi, rax +00095D4F: call __ZN17ThermalController12updatePresetEiiSs; ThermalController::updatePreset(int,int,std::string) +00095D54: mov ebx, eax +00095D56: lea rax, [rbp+var_20] +00095D5A: mov rdi, rax; this +00095D5D: call __ZNSsD1Ev; std::string::~string() +00095D62: lea rax, [rbp+var_30] +00095D66: mov rdi, rax; this +00095D69: call __ZNSsD1Ev; std::string::~string() +00095D6E: mov eax, ebx +00095D70: jmp short loc_95DB7 +00095D72: mov rbx, rax +00095D75: lea rax, [rbp+var_21] +00095D79: mov rdi, rax +00095D7C: call __ZNSaIcED1Ev; std::allocator::~allocator() +00095D81: mov rax, rbx +00095D84: mov rdi, rax; struct _Unwind_Exception * +00095D87: call __Unwind_Resume +00095D8C: mov rbx, rax +00095D8F: lea rax, [rbp+var_20] +00095D93: mov rdi, rax; this +00095D96: call __ZNSsD1Ev; std::string::~string() +00095D9B: jmp short loc_95DA0 +00095D9D: mov rbx, rax +00095DA0: lea rax, [rbp+var_30] +00095DA4: mov rdi, rax; this +00095DA7: call __ZNSsD1Ev; std::string::~string() +00095DAC: mov rax, rbx +00095DAF: mov rdi, rax; struct _Unwind_Exception * +00095DB2: call __Unwind_Resume +00095DB7: add rsp, 38h +00095DBB: pop rbx +00095DBC: pop rbp +00095DBD: retn + +### FUNC 00095DBE - 00095DD1 (19 bytes) name=HasPreset +00095DBE: push rbp +00095DBF: mov rbp, rsp +00095DC2: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095DC7: mov rdi, rax; this +00095DCA: call __ZN17ThermalController9hasPresetEv; ThermalController::hasPreset(void) +00095DCF: pop rbp +00095DD0: retn + +### FUNC 00095DD1 - 00095DE4 (19 bytes) name=GetPresetOffsetX +00095DD1: push rbp +00095DD2: mov rbp, rsp +00095DD5: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095DDA: mov rdi, rax; this +00095DDD: call __ZN17ThermalController16getPresetOffsetXEv; ThermalController::getPresetOffsetX(void) +00095DE2: pop rbp +00095DE3: retn + +### FUNC 00095DE4 - 00095DF7 (19 bytes) name=GetPresetOffsetY +00095DE4: push rbp +00095DE5: mov rbp, rsp +00095DE8: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095DED: mov rdi, rax; this +00095DF0: call __ZN17ThermalController16getPresetOffsetYEv; ThermalController::getPresetOffsetY(void) +00095DF5: pop rbp +00095DF6: retn + +### FUNC 00095DF7 - 00095E80 (137 bytes) name=GetDefaultCalibration +00095DF7: push rbp +00095DF8: mov rbp, rsp +00095DFB: push rbx +00095DFC: sub rsp, 38h +00095E00: mov [rbp+var_38], rdi +00095E04: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095E09: mov rdx, rax +00095E0C: lea rax, [rbp+var_30] +00095E10: mov rsi, rdx +00095E13: mov rdi, rax; this +00095E16: call __ZN17ThermalController21getDefaultCalibrationEv; ThermalController::getDefaultCalibration(void) +00095E1B: lea rax, [rbp+var_30] +00095E1F: mov esi, 0 +00095E24: mov rdi, rax +00095E27: call __ZNSt6vectorIiSaIiEEixEm; std::vector>::operator[](ulong) +00095E2C: mov edx, [rax] +00095E2E: mov rax, [rbp+var_38] +00095E32: mov [rax], edx +00095E34: mov rax, [rbp+var_38] +00095E38: lea rbx, [rax+4] +00095E3C: lea rax, [rbp+var_30] +00095E40: mov esi, 1 +00095E45: mov rdi, rax +00095E48: call __ZNSt6vectorIiSaIiEEixEm; std::vector>::operator[](ulong) +00095E4D: mov eax, [rax] +00095E4F: mov [rbx], eax +00095E51: lea rax, [rbp+var_30] +00095E55: mov rdi, rax +00095E58: call __ZNSt6vectorIiSaIiEED2Ev; std::vector>::~vector() +00095E5D: jmp short loc_95E79 +00095E5F: mov rbx, rax +00095E62: lea rax, [rbp+var_30] +00095E66: mov rdi, rax +00095E69: call __ZNSt6vectorIiSaIiEED2Ev; std::vector>::~vector() +00095E6E: mov rax, rbx +00095E71: mov rdi, rax; struct _Unwind_Exception * +00095E74: call __Unwind_Resume +00095E79: add rsp, 38h +00095E7D: pop rbx +00095E7E: pop rbp +00095E7F: retn + +### FUNC 00095E80 - 00095EED (109 bytes) name=GetPresetSerial +00095E80: push rbp +00095E81: mov rbp, rsp +00095E84: push rbx +00095E85: sub rsp, 28h +00095E89: mov [rbp+dest], rdi +00095E8D: call __ZN17ThermalController11getInstanceEv; ThermalController::getInstance(void) +00095E92: mov rdx, rax +00095E95: lea rax, [rbp+var_20] +00095E99: mov rsi, rdx +00095E9C: mov rdi, rax; this +00095E9F: call __ZN17ThermalController15getPresetSerialEv; ThermalController::getPresetSerial(void) +00095EA4: lea rax, [rbp+var_20] +00095EA8: mov rdi, rax; this +00095EAB: call __ZNKSs4sizeEv; std::string::size(void) +00095EB0: mov [rbp+var_14], eax +00095EB3: mov eax, [rbp+var_14] +00095EB6: movsxd rbx, eax +00095EB9: lea rax, [rbp+var_20] +00095EBD: mov rdi, rax; this +00095EC0: call __ZNKSs5c_strEv; std::string::c_str(void) +00095EC5: mov rcx, rax +00095EC8: mov rax, [rbp+dest] +00095ECC: mov rdx, rbx; n +00095ECF: mov rsi, rcx; src +00095ED2: mov rdi, rax; dest +00095ED5: call _memcpy +00095EDA: lea rax, [rbp+var_20] +00095EDE: mov rdi, rax; this +00095EE1: call __ZNSsD1Ev; std::string::~string() +00095EE6: add rsp, 28h +00095EEA: pop rbx +00095EEB: pop rbp +00095EEC: retn + +### FUNC 00095EEE - 00095F08 (26 bytes) name=_ZNSt6vectorIhSaIhEEC2Ev +00095EEE: push rbp; Alternative name is 'std::vector>::vector(void)' +00095EEF: mov rbp, rsp +00095EF2: sub rsp, 10h +00095EF6: mov [rbp+var_8], rdi +00095EFA: mov rax, [rbp+var_8] +00095EFE: mov rdi, rax +00095F01: call __ZNSt12_Vector_baseIhSaIhEEC2Ev; std::_Vector_base>::_Vector_base(void) +00095F06: leave +00095F07: retn + +### FUNC 00095F08 - 00095F4B (67 bytes) name=_ZNSt6vectorIhSaIhEED2Ev +00095F08: push rbp; Alternative name is 'std::vector>::~vector()' +00095F09: mov rbp, rsp +00095F0C: sub rsp, 10h +00095F10: mov [rbp+var_8], rdi +00095F14: mov rax, [rbp+var_8] +00095F18: mov rdi, rax +00095F1B: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00095F20: mov rdx, rax +00095F23: mov rax, [rbp+var_8] +00095F27: mov rcx, [rax+8] +00095F2B: mov rax, [rbp+var_8] +00095F2F: mov rax, [rax] +00095F32: mov rsi, rcx +00095F35: mov rdi, rax +00095F38: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +00095F3D: mov rax, [rbp+var_8] +00095F41: mov rdi, rax +00095F44: call __ZNSt12_Vector_baseIhSaIhEED2Ev; std::_Vector_base>::~_Vector_base() +00095F49: leave +00095F4A: retn + +### FUNC 00095F4C - 0009607C (304 bytes) name=_ZNSt6vectorIhSaIhEE7reserveEm +00095F4C: push rbp +00095F4D: mov rbp, rsp +00095F50: push rbx +00095F51: sub rsp, 28h +00095F55: mov [rbp+var_28], rdi +00095F59: mov [rbp+var_30], rsi +00095F5D: mov rax, [rbp+var_28] +00095F61: mov rdi, rax +00095F64: call __ZNKSt6vectorIhSaIhEE8max_sizeEv; std::vector>::max_size(void) +00095F69: cmp rax, [rbp+var_30] +00095F6D: setb al +00095F70: test al, al +00095F72: jz short loc_95F80 +00095F74: lea rdi, aVectorReserve; "vector::reserve" +00095F7B: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +00095F80: mov rax, [rbp+var_28] +00095F84: mov rdi, rax +00095F87: call __ZNKSt6vectorIhSaIhEE8capacityEv; std::vector>::capacity(void) +00095F8C: cmp rax, [rbp+var_30] +00095F90: setb al +00095F93: test al, al +00095F95: jz loc_96075 +00095F9B: mov rax, [rbp+var_28] +00095F9F: mov rdi, rax +00095FA2: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00095FA7: mov [rbp+var_18], rax +00095FAB: mov rax, [rbp+var_28] +00095FAF: mov rax, [rax+8] +00095FB3: mov rdi, rax +00095FB6: call __ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(uchar *) +00095FBB: mov rbx, rax +00095FBE: mov rax, [rbp+var_28] +00095FC2: mov rax, [rax] +00095FC5: mov rdi, rax +00095FC8: call __ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(uchar *) +00095FCD: mov rdx, rax +00095FD0: mov rsi, [rbp+var_30] +00095FD4: mov rax, [rbp+var_28] +00095FD8: mov rcx, rbx +00095FDB: mov rdi, rax +00095FDE: call __ZNSt6vectorIhSaIhEE20_M_allocate_and_copyISt13move_iteratorIPhEEES4_mT_S6_; std::vector>::_M_allocate_and_copy>(ulong,std::move_iterator,std::move_iterator) +00095FE3: mov [rbp+var_20], rax +00095FE7: mov rax, [rbp+var_28] +00095FEB: mov rdi, rax +00095FEE: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00095FF3: mov rdx, rax +00095FF6: mov rax, [rbp+var_28] +00095FFA: mov rcx, [rax+8] +00095FFE: mov rax, [rbp+var_28] +00096002: mov rax, [rax] +00096005: mov rsi, rcx +00096008: mov rdi, rax +0009600B: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +00096010: mov rax, [rbp+var_28] +00096014: mov rax, [rax+10h] +00096018: mov rdx, rax +0009601B: mov rax, [rbp+var_28] +0009601F: mov rax, [rax] +00096022: sub rdx, rax +00096025: mov rax, rdx +00096028: mov rdx, rax +0009602B: mov rax, [rbp+var_28] +0009602F: mov rcx, [rax] +00096032: mov rax, [rbp+var_28] +00096036: mov rsi, rcx +00096039: mov rdi, rax +0009603C: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +00096041: mov rax, [rbp+var_28] +00096045: mov rdx, [rbp+var_20] +00096049: mov [rax], rdx +0009604C: mov rax, [rbp+var_18] +00096050: mov rdx, [rbp+var_20] +00096054: add rdx, rax +00096057: mov rax, [rbp+var_28] +0009605B: mov [rax+8], rdx +0009605F: mov rax, [rbp+var_28] +00096063: mov rdx, [rax] +00096066: mov rax, [rbp+var_30] +0009606A: add rdx, rax +0009606D: mov rax, [rbp+var_28] +00096071: mov [rax+10h], rdx +00096075: add rsp, 28h +00096079: pop rbx +0009607A: pop rbp +0009607B: retn + +### FUNC 0009607C - 000960AD (49 bytes) name=_ZNSt6vectorIhSaIhEE6assignIPKhvEEvT_S5_ +0009607C: push rbp +0009607D: mov rbp, rsp +00096080: sub rsp, 30h +00096084: mov [rbp+var_18], rdi +00096088: mov [rbp+var_20], rsi +0009608C: mov [rbp+var_28], rdx +00096090: mov rdx, [rbp+var_28] +00096094: mov rcx, [rbp+var_20] +00096098: mov rax, [rbp+var_18] +0009609C: mov [rsp+30h+var_30], r8b +000960A0: mov rsi, rcx +000960A3: mov rdi, rax +000960A6: call __ZNSt6vectorIhSaIhEE18_M_assign_dispatchIPKhEEvT_S5_St12__false_type; std::vector>::_M_assign_dispatch(uchar const*,uchar const*,std::__false_type) +000960AB: leave +000960AC: retn + +### FUNC 000960AE - 000960F1 (67 bytes) name=_ZNSt6vectorIiSaIiEED2Ev +000960AE: push rbp; Alternative name is 'std::vector>::~vector()' +000960AF: mov rbp, rsp +000960B2: sub rsp, 10h +000960B6: mov [rbp+var_8], rdi +000960BA: mov rax, [rbp+var_8] +000960BE: mov rdi, rax +000960C1: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000960C6: mov rdx, rax +000960C9: mov rax, [rbp+var_8] +000960CD: mov rcx, [rax+8] +000960D1: mov rax, [rbp+var_8] +000960D5: mov rax, [rax] +000960D8: mov rsi, rcx +000960DB: mov rdi, rax +000960DE: call __ZSt8_DestroyIPiiEvT_S1_RSaIT0_E; std::_Destroy(int *,int *,std::allocator &) +000960E3: mov rax, [rbp+var_8] +000960E7: mov rdi, rax +000960EA: call __ZNSt12_Vector_baseIiSaIiEED2Ev; std::_Vector_base>::~_Vector_base() +000960EF: leave +000960F0: retn + +### FUNC 000960F2 - 00096112 (32 bytes) name=_ZNSt6vectorIiSaIiEEixEm +000960F2: push rbp +000960F3: mov rbp, rsp +000960F6: mov [rbp+var_8], rdi +000960FA: mov [rbp+var_10], rsi +000960FE: mov rax, [rbp+var_8] +00096102: mov rax, [rax] +00096105: mov rdx, [rbp+var_10] +00096109: shl rdx, 2 +0009610D: add rax, rdx +00096110: pop rbp +00096111: retn + +### FUNC 00096112 - 0009612C (26 bytes) name=_ZNSt12_Vector_baseIhSaIhEE12_Vector_implD2Ev +00096112: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::~_Vector_impl()' +00096113: mov rbp, rsp +00096116: sub rsp, 10h +0009611A: mov [rbp+var_8], rdi +0009611E: mov rax, [rbp+var_8] +00096122: mov rdi, rax +00096125: call __ZNSaIhED2Ev; std::allocator::~allocator() +0009612A: leave +0009612B: retn + +### FUNC 0009612C - 00096146 (26 bytes) name=_ZNSt12_Vector_baseIhSaIhEEC2Ev +0009612C: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(void)' +0009612D: mov rbp, rsp +00096130: sub rsp, 10h +00096134: mov [rbp+var_8], rdi +00096138: mov rax, [rbp+var_8] +0009613C: mov rdi, rax +0009613F: call __ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2Ev; std::_Vector_base>::_Vector_impl::_Vector_impl(void) +00096144: leave +00096145: retn + +### FUNC 00096146 - 00096191 (75 bytes) name=_ZNSt12_Vector_baseIhSaIhEED2Ev +00096146: push rbp; Alternative name is 'std::_Vector_base>::~_Vector_base()' +00096147: mov rbp, rsp +0009614A: sub rsp, 10h +0009614E: mov [rbp+var_8], rdi +00096152: mov rax, [rbp+var_8] +00096156: mov rax, [rax+10h] +0009615A: mov rdx, rax +0009615D: mov rax, [rbp+var_8] +00096161: mov rax, [rax] +00096164: sub rdx, rax +00096167: mov rax, rdx +0009616A: mov rdx, rax +0009616D: mov rax, [rbp+var_8] +00096171: mov rcx, [rax] +00096174: mov rax, [rbp+var_8] +00096178: mov rsi, rcx +0009617B: mov rdi, rax +0009617E: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +00096183: mov rax, [rbp+var_8] +00096187: mov rdi, rax +0009618A: call __ZNSt12_Vector_baseIhSaIhEE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +0009618F: leave +00096190: retn + +### FUNC 00096192 - 000961A0 (14 bytes) name=_ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +00096192: push rbp +00096193: mov rbp, rsp +00096196: mov [rbp+var_8], rdi +0009619A: mov rax, [rbp+var_8] +0009619E: pop rbp +0009619F: retn + +### FUNC 000961A0 - 000961C9 (41 bytes) name=_ZSt8_DestroyIPhhEvT_S1_RSaIT0_E +000961A0: push rbp +000961A1: mov rbp, rsp +000961A4: sub rsp, 20h +000961A8: mov [rbp+var_8], rdi +000961AC: mov [rbp+var_10], rsi +000961B0: mov [rbp+var_18], rdx +000961B4: mov rdx, [rbp+var_10] +000961B8: mov rax, [rbp+var_8] +000961BC: mov rsi, rdx +000961BF: mov rdi, rax +000961C2: call __ZSt8_DestroyIPhEvT_S1_; std::_Destroy(uchar *,uchar *) +000961C7: leave +000961C8: retn + +### FUNC 000961CA - 000961EC (34 bytes) name=_ZNKSt6vectorIhSaIhEE8max_sizeEv +000961CA: push rbp +000961CB: mov rbp, rsp +000961CE: sub rsp, 10h +000961D2: mov [rbp+var_8], rdi +000961D6: mov rax, [rbp+var_8] +000961DA: mov rdi, rax +000961DD: call __ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000961E2: mov rdi, rax +000961E5: call __ZNSt16allocator_traitsISaIhEE8max_sizeERKS0_; std::allocator_traits>::max_size(std::allocator const&) +000961EA: leave +000961EB: retn + +### FUNC 000961EC - 0009620E (34 bytes) name=_ZNKSt6vectorIhSaIhEE8capacityEv +000961EC: push rbp +000961ED: mov rbp, rsp +000961F0: mov [rbp+var_8], rdi +000961F4: mov rax, [rbp+var_8] +000961F8: mov rax, [rax+10h] +000961FC: mov rdx, rax +000961FF: mov rax, [rbp+var_8] +00096203: mov rax, [rax] +00096206: sub rdx, rax +00096209: mov rax, rdx +0009620C: pop rbp +0009620D: retn + +### FUNC 0009620E - 00096230 (34 bytes) name=_ZNKSt6vectorIhSaIhEE4sizeEv +0009620E: push rbp +0009620F: mov rbp, rsp +00096212: mov [rbp+var_8], rdi +00096216: mov rax, [rbp+var_8] +0009621A: mov rax, [rax+8] +0009621E: mov rdx, rax +00096221: mov rax, [rbp+var_8] +00096225: mov rax, [rax] +00096228: sub rdx, rax +0009622B: mov rax, rdx +0009622E: pop rbp +0009622F: retn + +### FUNC 00096230 - 00096255 (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_ +00096230: push rbp +00096231: mov rbp, rsp +00096234: sub rsp, 20h +00096238: mov [rbp+var_18], rdi +0009623C: mov rdx, [rbp+var_18] +00096240: lea rax, [rbp+var_10] +00096244: mov rsi, rdx +00096247: mov rdi, rax +0009624A: call __ZNSt13move_iteratorIPhEC2ES0_; std::move_iterator::move_iterator(uchar *) +0009624F: mov rax, [rbp+var_10] +00096253: leave +00096254: retn + +### FUNC 00096256 - 000962ED (151 bytes) name=_ZNSt6vectorIhSaIhEE20_M_allocate_and_copyISt13move_iteratorIPhEEES4_mT_S6_ +00096256: push rbp +00096257: mov rbp, rsp +0009625A: push rbx +0009625B: sub rsp, 48h +0009625F: mov [rbp+var_28], rdi +00096263: mov [rbp+var_30], rsi +00096267: mov [rbp+var_40], rdx +0009626B: mov [rbp+var_50], rcx +0009626F: mov rax, [rbp+var_28] +00096273: mov rdx, [rbp+var_30] +00096277: mov rsi, rdx +0009627A: mov rdi, rax +0009627D: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +00096282: mov [rbp+var_18], rax +00096286: mov rax, [rbp+var_28] +0009628A: mov rdi, rax +0009628D: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00096292: mov rcx, rax +00096295: mov rdx, [rbp+var_18] +00096299: mov rsi, [rbp+var_50] +0009629D: mov rax, [rbp+var_40] +000962A1: mov rdi, rax +000962A4: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a,uchar *,uchar>(std::move_iterator,std::move_iterator,uchar *,std::allocator &) +000962A9: mov rax, [rbp+var_18] +000962AD: jmp short loc_962E6 +000962AF: mov rdi, rax; void * +000962B2: call ___cxa_begin_catch +000962B7: mov rax, [rbp+var_28] +000962BB: mov rdx, [rbp+var_30] +000962BF: mov rcx, [rbp+var_18] +000962C3: mov rsi, rcx +000962C6: mov rdi, rax +000962C9: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000962CE: call ___cxa_rethrow +000962D3: mov rbx, rax +000962D6: call ___cxa_end_catch +000962DB: mov rax, rbx +000962DE: mov rdi, rax; struct _Unwind_Exception * +000962E1: call __Unwind_Resume +000962E6: add rsp, 48h +000962EA: pop rbx +000962EB: pop rbp +000962EC: retn + +### FUNC 000962EE - 00096322 (52 bytes) name=_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm +000962EE: push rbp +000962EF: mov rbp, rsp +000962F2: sub rsp, 20h +000962F6: mov [rbp+var_8], rdi +000962FA: mov [rbp+var_10], rsi +000962FE: mov [rbp+var_18], rdx +00096302: cmp [rbp+var_10], 0 +00096307: jz short locret_96320 +00096309: mov rax, [rbp+var_8] +0009630D: mov rdx, [rbp+var_18] +00096311: mov rcx, [rbp+var_10] +00096315: mov rsi, rcx +00096318: mov rdi, rax +0009631B: call __ZN9__gnu_cxx13new_allocatorIhE10deallocateEPhm; __gnu_cxx::new_allocator::deallocate(uchar *,ulong) +00096320: leave +00096321: retn + +### FUNC 00096322 - 00096353 (49 bytes) name=_ZNSt6vectorIhSaIhEE18_M_assign_dispatchIPKhEEvT_S5_St12__false_type +00096322: push rbp +00096323: mov rbp, rsp +00096326: sub rsp, 30h +0009632A: mov [rbp+var_18], rdi +0009632E: mov [rbp+var_20], rsi +00096332: mov [rbp+var_28], rdx +00096336: mov rdx, [rbp+var_28] +0009633A: mov rcx, [rbp+var_20] +0009633E: mov rax, [rbp+var_18] +00096342: mov [rsp+30h+var_30], r8b +00096346: mov rsi, rcx +00096349: mov rdi, rax +0009634C: call __ZNSt6vectorIhSaIhEE13_M_assign_auxIPKhEEvT_S5_St20forward_iterator_tag; std::vector>::_M_assign_aux(uchar const*,uchar const*,std::forward_iterator_tag) +00096351: leave +00096352: retn + +### FUNC 00096354 - 0009636E (26 bytes) name=_ZNSt12_Vector_baseIiSaIiEE12_Vector_implD2Ev +00096354: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::~_Vector_impl()' +00096355: mov rbp, rsp +00096358: sub rsp, 10h +0009635C: mov [rbp+var_8], rdi +00096360: mov rax, [rbp+var_8] +00096364: mov rdi, rax +00096367: call __ZNSaIiED2Ev; std::allocator::~allocator() +0009636C: leave +0009636D: retn + +### FUNC 0009636E - 000963BD (79 bytes) name=_ZNSt12_Vector_baseIiSaIiEED2Ev +0009636E: push rbp; Alternative name is 'std::_Vector_base>::~_Vector_base()' +0009636F: mov rbp, rsp +00096372: sub rsp, 10h +00096376: mov [rbp+var_8], rdi +0009637A: mov rax, [rbp+var_8] +0009637E: mov rax, [rax+10h] +00096382: mov rdx, rax +00096385: mov rax, [rbp+var_8] +00096389: mov rax, [rax] +0009638C: sub rdx, rax +0009638F: mov rax, rdx +00096392: sar rax, 2 +00096396: mov rdx, rax +00096399: mov rax, [rbp+var_8] +0009639D: mov rcx, [rax] +000963A0: mov rax, [rbp+var_8] +000963A4: mov rsi, rcx +000963A7: mov rdi, rax +000963AA: call __ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim; std::_Vector_base>::_M_deallocate(int *,ulong) +000963AF: mov rax, [rbp+var_8] +000963B3: mov rdi, rax +000963B6: call __ZNSt12_Vector_baseIiSaIiEE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +000963BB: leave +000963BC: retn + +### FUNC 000963BE - 000963CC (14 bytes) name=_ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +000963BE: push rbp +000963BF: mov rbp, rsp +000963C2: mov [rbp+var_8], rdi +000963C6: mov rax, [rbp+var_8] +000963CA: pop rbp +000963CB: retn + +### FUNC 000963CC - 000963F5 (41 bytes) name=_ZSt8_DestroyIPiiEvT_S1_RSaIT0_E +000963CC: push rbp +000963CD: mov rbp, rsp +000963D0: sub rsp, 20h +000963D4: mov [rbp+var_8], rdi +000963D8: mov [rbp+var_10], rsi +000963DC: mov [rbp+var_18], rdx +000963E0: mov rdx, [rbp+var_10] +000963E4: mov rax, [rbp+var_8] +000963E8: mov rsi, rdx +000963EB: mov rdi, rax +000963EE: call __ZSt8_DestroyIPiEvT_S1_; std::_Destroy(int *,int *) +000963F3: leave +000963F4: retn + +### FUNC 000963F6 - 00096433 (61 bytes) name=_ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2Ev +000963F6: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(void)' +000963F7: mov rbp, rsp +000963FA: sub rsp, 10h +000963FE: mov [rbp+var_8], rdi +00096402: mov rax, [rbp+var_8] +00096406: mov rdi, rax +00096409: call __ZNSaIhEC2Ev; std::allocator::allocator(void) +0009640E: mov rax, [rbp+var_8] +00096412: mov qword ptr [rax], 0 +00096419: mov rax, [rbp+var_8] +0009641D: mov qword ptr [rax+8], 0 +00096425: mov rax, [rbp+var_8] +00096429: mov qword ptr [rax+10h], 0 +00096431: leave +00096432: retn + +### FUNC 00096434 - 0009644E (26 bytes) name=_ZNSaIhED2Ev +00096434: push rbp; Alternative name is 'std::allocator::~allocator()' +00096435: mov rbp, rsp +00096438: sub rsp, 10h +0009643C: mov [rbp+var_8], rdi +00096440: mov rax, [rbp+var_8] +00096444: mov rdi, rax +00096447: call __ZN9__gnu_cxx13new_allocatorIhED2Ev; __gnu_cxx::new_allocator::~new_allocator() +0009644C: leave +0009644D: retn + +### FUNC 0009644E - 00096473 (37 bytes) name=_ZSt8_DestroyIPhEvT_S1_ +0009644E: push rbp +0009644F: mov rbp, rsp +00096452: sub rsp, 10h +00096456: mov [rbp+var_8], rdi +0009645A: mov [rbp+var_10], rsi +0009645E: mov rdx, [rbp+var_10] +00096462: mov rax, [rbp+var_8] +00096466: mov rsi, rdx +00096469: mov rdi, rax +0009646C: call __ZNSt12_Destroy_auxILb1EE9__destroyIPhEEvT_S3_; std::_Destroy_aux::__destroy(uchar *,uchar *) +00096471: leave +00096472: retn + +### FUNC 00096473 - 0009648D (26 bytes) name=_ZNSt16allocator_traitsISaIhEE8max_sizeERKS0_ +00096473: push rbp +00096474: mov rbp, rsp +00096477: sub rsp, 10h +0009647B: mov [rbp+var_8], rdi +0009647F: mov rax, [rbp+var_8] +00096483: mov rdi, rax +00096486: call __ZNSt16allocator_traitsISaIhEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_; std::allocator_traits>::_S_max_size const>(std::allocator const&) +0009648B: leave +0009648C: retn + +### FUNC 0009648E - 0009649C (14 bytes) name=_ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv +0009648E: push rbp +0009648F: mov rbp, rsp +00096492: mov [rbp+var_8], rdi +00096496: mov rax, [rbp+var_8] +0009649A: pop rbp +0009649B: retn + +### FUNC 0009649C - 000964B5 (25 bytes) name=_ZNSt13move_iteratorIPhEC2ES0_ +0009649C: push rbp; Alternative name is 'std::move_iterator::move_iterator(unsigned char *)' +0009649D: mov rbp, rsp +000964A0: mov [rbp+var_8], rdi +000964A4: mov [rbp+var_10], rsi +000964A8: mov rax, [rbp+var_8] +000964AC: mov rdx, [rbp+var_10] +000964B0: mov [rax], rdx +000964B3: pop rbp +000964B4: retn + +### FUNC 000964B6 - 000964EE (56 bytes) name=_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm +000964B6: push rbp +000964B7: mov rbp, rsp +000964BA: sub rsp, 10h +000964BE: mov [rbp+var_8], rdi +000964C2: mov [rbp+var_10], rsi +000964C6: cmp [rbp+var_10], 0 +000964CB: jz short loc_964E7 +000964CD: mov rax, [rbp+var_8] +000964D1: mov rcx, [rbp+var_10] +000964D5: mov edx, 0 +000964DA: mov rsi, rcx +000964DD: mov rdi, rax +000964E0: call __ZN9__gnu_cxx13new_allocatorIhE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000964E5: jmp short locret_964EC +000964E7: mov eax, 0 +000964EC: leave +000964ED: retn + +### FUNC 000964EE - 0009651F (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E +000964EE: push rbp +000964EF: mov rbp, rsp +000964F2: sub rsp, 20h +000964F6: mov [rbp+var_10], rdi +000964FA: mov [rbp+var_20], rsi +000964FE: mov [rbp+var_18], rdx +00096502: mov [rbp+var_8], rcx +00096506: mov rdx, [rbp+var_18] +0009650A: mov rcx, [rbp+var_20] +0009650E: mov rax, [rbp+var_10] +00096512: mov rsi, rcx +00096515: mov rdi, rax +00096518: call __ZSt18uninitialized_copyISt13move_iteratorIPhES1_ET0_T_S4_S3_; std::uninitialized_copy,uchar *>(std::move_iterator,std::move_iterator,uchar *) +0009651D: leave +0009651E: retn + +### FUNC 00096520 - 00096542 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIhE10deallocateEPhm +00096520: push rbp +00096521: mov rbp, rsp +00096524: sub rsp, 20h +00096528: mov [rbp+var_8], rdi +0009652C: mov [rbp+var_10], rsi +00096530: mov [rbp+var_18], rdx +00096534: mov rax, [rbp+var_10] +00096538: mov rdi, rax; void * +0009653B: call __ZdlPv; operator delete(void *) +00096540: leave +00096541: retn + +### FUNC 00096542 - 000966EA (424 bytes) name=_ZNSt6vectorIhSaIhEE13_M_assign_auxIPKhEEvT_S5_St20forward_iterator_tag +00096542: push rbp +00096543: mov rbp, rsp +00096546: sub rsp, 40h +0009654A: mov [rbp+var_28], rdi +0009654E: mov [rbp+var_30], rsi +00096552: mov [rbp+var_38], rdx +00096556: mov rdx, [rbp+var_38] +0009655A: mov rax, [rbp+var_30] +0009655E: mov rsi, rdx +00096561: mov rdi, rax +00096564: call __ZSt8distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_; std::distance(uchar const*,uchar const*) +00096569: mov [rbp+var_8], rax +0009656D: mov rax, [rbp+var_28] +00096571: mov rdi, rax +00096574: call __ZNKSt6vectorIhSaIhEE8capacityEv; std::vector>::capacity(void) +00096579: cmp rax, [rbp+var_8] +0009657D: setb al +00096580: test al, al +00096582: jz loc_96634 +00096588: mov rcx, [rbp+var_38] +0009658C: mov rdx, [rbp+var_30] +00096590: mov rsi, [rbp+var_8] +00096594: mov rax, [rbp+var_28] +00096598: mov rdi, rax +0009659B: call __ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIPKhEEPhmT_S6_; std::vector>::_M_allocate_and_copy(ulong,uchar const*,uchar const*) +000965A0: mov [rbp+var_10], rax +000965A4: mov rax, [rbp+var_28] +000965A8: mov rdi, rax +000965AB: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000965B0: mov rdx, rax +000965B3: mov rax, [rbp+var_28] +000965B7: mov rcx, [rax+8] +000965BB: mov rax, [rbp+var_28] +000965BF: mov rax, [rax] +000965C2: mov rsi, rcx +000965C5: mov rdi, rax +000965C8: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000965CD: mov rax, [rbp+var_28] +000965D1: mov rax, [rax+10h] +000965D5: mov rdx, rax +000965D8: mov rax, [rbp+var_28] +000965DC: mov rax, [rax] +000965DF: sub rdx, rax +000965E2: mov rax, rdx +000965E5: mov rdx, rax +000965E8: mov rax, [rbp+var_28] +000965EC: mov rcx, [rax] +000965EF: mov rax, [rbp+var_28] +000965F3: mov rsi, rcx +000965F6: mov rdi, rax +000965F9: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000965FE: mov rax, [rbp+var_28] +00096602: mov rdx, [rbp+var_10] +00096606: mov [rax], rdx +00096609: mov rax, [rbp+var_28] +0009660D: mov rdx, [rax] +00096610: mov rax, [rbp+var_8] +00096614: add rdx, rax +00096617: mov rax, [rbp+var_28] +0009661B: mov [rax+8], rdx +0009661F: mov rax, [rbp+var_28] +00096623: mov rdx, [rax+8] +00096627: mov rax, [rbp+var_28] +0009662B: mov [rax+10h], rdx +0009662F: jmp locret_966E8 +00096634: mov rax, [rbp+var_28] +00096638: mov rdi, rax +0009663B: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00096640: cmp rax, [rbp+var_8] +00096644: setnb al +00096647: test al, al +00096649: jz short loc_96679 +0009664B: mov rax, [rbp+var_28] +0009664F: mov rdx, [rax] +00096652: mov rcx, [rbp+var_38] +00096656: mov rax, [rbp+var_30] +0009665A: mov rsi, rcx +0009665D: mov rdi, rax +00096660: call __ZSt4copyIPKhPhET0_T_S4_S3_; std::copy(uchar const*,uchar const*,uchar *) +00096665: mov rdx, rax +00096668: mov rax, [rbp+var_28] +0009666C: mov rsi, rdx +0009666F: mov rdi, rax +00096672: call __ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh; std::vector>::_M_erase_at_end(uchar *) +00096677: jmp short locret_966E8 +00096679: mov rax, [rbp+var_30] +0009667D: mov [rbp+var_18], rax +00096681: mov rax, [rbp+var_28] +00096685: mov rdi, rax +00096688: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +0009668D: mov rdx, rax +00096690: lea rax, [rbp+var_18] +00096694: mov rsi, rdx +00096697: mov rdi, rax +0009669A: call __ZSt7advanceIPKhmEvRT_T0_; std::advance(uchar const* &,ulong) +0009669F: mov rax, [rbp+var_28] +000966A3: mov rdx, [rax] +000966A6: mov rcx, [rbp+var_18] +000966AA: mov rax, [rbp+var_30] +000966AE: mov rsi, rcx +000966B1: mov rdi, rax +000966B4: call __ZSt4copyIPKhPhET0_T_S4_S3_; std::copy(uchar const*,uchar const*,uchar *) +000966B9: mov rax, [rbp+var_28] +000966BD: mov rdi, rax +000966C0: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000966C5: mov rcx, rax +000966C8: mov rax, [rbp+var_28] +000966CC: mov rdx, [rax+8] +000966D0: mov rax, [rbp+var_18] +000966D4: mov rsi, [rbp+var_38] +000966D8: mov rdi, rax +000966DB: call __ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a(uchar const*,uchar const*,uchar *,std::allocator &) +000966E0: mov rdx, [rbp+var_28] +000966E4: mov [rdx+8], rax +000966E8: leave +000966E9: retn + +### FUNC 000966EA - 00096704 (26 bytes) name=_ZNSaIiED2Ev +000966EA: push rbp; Alternative name is 'std::allocator::~allocator()' +000966EB: mov rbp, rsp +000966EE: sub rsp, 10h +000966F2: mov [rbp+var_8], rdi +000966F6: mov rax, [rbp+var_8] +000966FA: mov rdi, rax +000966FD: call __ZN9__gnu_cxx13new_allocatorIiED2Ev; __gnu_cxx::new_allocator::~new_allocator() +00096702: leave +00096703: retn + +### FUNC 00096704 - 00096738 (52 bytes) name=_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim +00096704: push rbp +00096705: mov rbp, rsp +00096708: sub rsp, 20h +0009670C: mov [rbp+var_8], rdi +00096710: mov [rbp+var_10], rsi +00096714: mov [rbp+var_18], rdx +00096718: cmp [rbp+var_10], 0 +0009671D: jz short locret_96736 +0009671F: mov rax, [rbp+var_8] +00096723: mov rdx, [rbp+var_18] +00096727: mov rcx, [rbp+var_10] +0009672B: mov rsi, rcx +0009672E: mov rdi, rax +00096731: call __ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim; __gnu_cxx::new_allocator::deallocate(int *,ulong) +00096736: leave +00096737: retn + +### FUNC 00096738 - 0009675D (37 bytes) name=_ZSt8_DestroyIPiEvT_S1_ +00096738: push rbp +00096739: mov rbp, rsp +0009673C: sub rsp, 10h +00096740: mov [rbp+var_8], rdi +00096744: mov [rbp+var_10], rsi +00096748: mov rdx, [rbp+var_10] +0009674C: mov rax, [rbp+var_8] +00096750: mov rsi, rdx +00096753: mov rdi, rax +00096756: call __ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_; std::_Destroy_aux::__destroy(int *,int *) +0009675B: leave +0009675C: retn + +### FUNC 0009675E - 00096778 (26 bytes) name=_ZNSaIhEC2Ev +0009675E: push rbp; Alternative name is 'std::allocator::allocator(void)' +0009675F: mov rbp, rsp +00096762: sub rsp, 10h +00096766: mov [rbp+var_8], rdi +0009676A: mov rax, [rbp+var_8] +0009676E: mov rdi, rax +00096771: call __ZN9__gnu_cxx13new_allocatorIhEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +00096776: leave +00096777: retn + +### FUNC 00096778 - 00096782 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIhED2Ev +00096778: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +00096779: mov rbp, rsp +0009677C: mov [rbp+var_8], rdi +00096780: pop rbp +00096781: retn + +### FUNC 00096782 - 00096790 (14 bytes) name=_ZNSt12_Destroy_auxILb1EE9__destroyIPhEEvT_S3_ +00096782: push rbp +00096783: mov rbp, rsp +00096786: mov [rbp+var_8], rdi +0009678A: mov [rbp+var_10], rsi +0009678E: pop rbp +0009678F: retn + +### FUNC 00096790 - 000967AA (26 bytes) name=_ZNSt16allocator_traitsISaIhEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +00096790: push rbp +00096791: mov rbp, rsp +00096794: sub rsp, 10h +00096798: mov [rbp+var_8], rdi +0009679C: mov rax, [rbp+var_8] +000967A0: mov rdi, rax +000967A3: call __ZNK9__gnu_cxx13new_allocatorIhE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000967A8: leave +000967A9: retn + +### FUNC 000967AA - 000967E8 (62 bytes) name=_ZN9__gnu_cxx13new_allocatorIhE8allocateEmPKv +000967AA: push rbp +000967AB: mov rbp, rsp +000967AE: sub rsp, 20h +000967B2: mov [rbp+var_8], rdi +000967B6: mov [rbp+var_10], rsi +000967BA: mov [rbp+var_18], rdx +000967BE: mov rax, [rbp+var_8] +000967C2: mov rdi, rax +000967C5: call __ZNK9__gnu_cxx13new_allocatorIhE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000967CA: cmp rax, [rbp+var_10] +000967CE: setb al +000967D1: test al, al +000967D3: jz short loc_967DA +000967D5: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000967DA: mov rax, [rbp+var_10] +000967DE: mov rdi, rax; unsigned __int64 +000967E1: call __Znwm; operator new(ulong) +000967E6: leave +000967E7: retn + +### FUNC 000967E8 - 00096815 (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +000967E8: push rbp +000967E9: mov rbp, rsp +000967EC: sub rsp, 20h +000967F0: mov [rbp+var_10], rdi +000967F4: mov [rbp+var_20], rsi +000967F8: mov [rbp+var_18], rdx +000967FC: mov rdx, [rbp+var_18] +00096800: mov rcx, [rbp+var_20] +00096804: mov rax, [rbp+var_10] +00096808: mov rsi, rcx +0009680B: mov rdi, rax +0009680E: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPhES3_EET0_T_S6_S5_; std::__uninitialized_copy::__uninit_copy,uchar *>(std::move_iterator,std::move_iterator,uchar *) +00096813: leave +00096814: retn + +### FUNC 00096815 - 0009684F (58 bytes) name=_ZSt8distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_ +00096815: push rbp +00096816: mov rbp, rsp +00096819: push rbx +0009681A: sub rsp, 38h +0009681E: mov [rbp+var_28], rdi +00096822: mov [rbp+var_30], rsi +00096826: lea rax, [rbp+var_28] +0009682A: mov rdi, rax +0009682D: call __ZSt19__iterator_categoryIPKhENSt15iterator_traitsIT_E17iterator_categoryERKS3_; std::__iterator_category(uchar const* const&) +00096832: mov rax, [rbp+var_28] +00096836: mov rdx, [rbp+var_30] +0009683A: mov [rsp+40h+var_40], bl +0009683D: mov rsi, rdx +00096840: mov rdi, rax +00096843: call __ZSt10__distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag; std::__distance(uchar const*,uchar const*,std::random_access_iterator_tag) +00096848: add rsp, 38h +0009684C: pop rbx +0009684D: pop rbp +0009684E: retn + +### FUNC 00096850 - 000968E7 (151 bytes) name=_ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIPKhEEPhmT_S6_ +00096850: push rbp +00096851: mov rbp, rsp +00096854: push rbx +00096855: sub rsp, 38h +00096859: mov [rbp+var_28], rdi +0009685D: mov [rbp+var_30], rsi +00096861: mov [rbp+var_38], rdx +00096865: mov [rbp+var_40], rcx +00096869: mov rax, [rbp+var_28] +0009686D: mov rdx, [rbp+var_30] +00096871: mov rsi, rdx +00096874: mov rdi, rax +00096877: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +0009687C: mov [rbp+var_18], rax +00096880: mov rax, [rbp+var_28] +00096884: mov rdi, rax +00096887: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009688C: mov rcx, rax +0009688F: mov rdx, [rbp+var_18] +00096893: mov rsi, [rbp+var_40] +00096897: mov rax, [rbp+var_38] +0009689B: mov rdi, rax +0009689E: call __ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a(uchar const*,uchar const*,uchar *,std::allocator &) +000968A3: mov rax, [rbp+var_18] +000968A7: jmp short loc_968E0 +000968A9: mov rdi, rax; void * +000968AC: call ___cxa_begin_catch +000968B1: mov rax, [rbp+var_28] +000968B5: mov rdx, [rbp+var_30] +000968B9: mov rcx, [rbp+var_18] +000968BD: mov rsi, rcx +000968C0: mov rdi, rax +000968C3: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000968C8: call ___cxa_rethrow +000968CD: mov rbx, rax +000968D0: call ___cxa_end_catch +000968D5: mov rax, rbx +000968D8: mov rdi, rax; struct _Unwind_Exception * +000968DB: call __Unwind_Resume +000968E0: add rsp, 38h +000968E4: pop rbx +000968E5: pop rbp +000968E6: retn + +### FUNC 000968E8 - 0009692C (68 bytes) name=_ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh +000968E8: push rbp +000968E9: mov rbp, rsp +000968EC: sub rsp, 10h +000968F0: mov [rbp+var_8], rdi +000968F4: mov [rbp+var_10], rsi +000968F8: mov rax, [rbp+var_8] +000968FC: mov rdi, rax +000968FF: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00096904: mov rdx, rax +00096907: mov rax, [rbp+var_8] +0009690B: mov rcx, [rax+8] +0009690F: mov rax, [rbp+var_10] +00096913: mov rsi, rcx +00096916: mov rdi, rax +00096919: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +0009691E: mov rax, [rbp+var_8] +00096922: mov rdx, [rbp+var_10] +00096926: mov [rax+8], rdx +0009692A: leave +0009692B: retn + +### FUNC 0009692C - 00096972 (70 bytes) name=_ZSt4copyIPKhPhET0_T_S4_S3_ +0009692C: push rbp +0009692D: mov rbp, rsp +00096930: push rbx +00096931: sub rsp, 28h +00096935: mov [rbp+var_18], rdi +00096939: mov [rbp+var_20], rsi +0009693D: mov [rbp+var_28], rdx +00096941: mov rax, [rbp+var_20] +00096945: mov rdi, rax +00096948: call __ZSt12__miter_baseIPKhENSt11_Miter_baseIT_E13iterator_typeES3_; std::__miter_base(uchar const*) +0009694D: mov rbx, rax +00096950: mov rax, [rbp+var_18] +00096954: mov rdi, rax +00096957: call __ZSt12__miter_baseIPKhENSt11_Miter_baseIT_E13iterator_typeES3_; std::__miter_base(uchar const*) +0009695C: mov rdx, [rbp+var_28] +00096960: mov rsi, rbx +00096963: mov rdi, rax +00096966: call __ZSt14__copy_move_a2ILb0EPKhPhET1_T0_S4_S3_; std::__copy_move_a2(uchar const*,uchar const*,uchar *) +0009696B: add rsp, 28h +0009696F: pop rbx +00096970: pop rbp +00096971: retn + +### FUNC 00096972 - 000969B4 (66 bytes) name=_ZSt7advanceIPKhmEvRT_T0_ +00096972: push rbp +00096973: mov rbp, rsp +00096976: push rbx +00096977: sub rsp, 38h +0009697B: mov [rbp+var_28], rdi +0009697F: mov [rbp+var_30], rsi +00096983: mov rax, [rbp+var_30] +00096987: mov [rbp+var_18], rax +0009698B: mov rax, [rbp+var_28] +0009698F: mov rdi, rax +00096992: call __ZSt19__iterator_categoryIPKhENSt15iterator_traitsIT_E17iterator_categoryERKS3_; std::__iterator_category(uchar const* const&) +00096997: mov rdx, [rbp+var_18] +0009699B: mov rax, [rbp+var_28] +0009699F: mov [rsp+40h+var_40], bl +000969A2: mov rsi, rdx +000969A5: mov rdi, rax +000969A8: call __ZSt9__advanceIPKhlEvRT_T0_St26random_access_iterator_tag; std::__advance(uchar const* &,long,std::random_access_iterator_tag) +000969AD: add rsp, 38h +000969B1: pop rbx +000969B2: pop rbp +000969B3: retn + +### FUNC 000969B4 - 000969E5 (49 bytes) name=_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E +000969B4: push rbp +000969B5: mov rbp, rsp +000969B8: sub rsp, 20h +000969BC: mov [rbp+var_8], rdi +000969C0: mov [rbp+var_10], rsi +000969C4: mov [rbp+var_18], rdx +000969C8: mov [rbp+var_20], rcx +000969CC: mov rdx, [rbp+var_18] +000969D0: mov rcx, [rbp+var_10] +000969D4: mov rax, [rbp+var_8] +000969D8: mov rsi, rcx +000969DB: mov rdi, rax +000969DE: call __ZSt18uninitialized_copyIPKhPhET0_T_S4_S3_; std::uninitialized_copy(uchar const*,uchar const*,uchar *) +000969E3: leave +000969E4: retn + +### FUNC 000969E6 - 000969F0 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIiED2Ev +000969E6: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000969E7: mov rbp, rsp +000969EA: mov [rbp+var_8], rdi +000969EE: pop rbp +000969EF: retn + +### FUNC 000969F0 - 00096A12 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim +000969F0: push rbp +000969F1: mov rbp, rsp +000969F4: sub rsp, 20h +000969F8: mov [rbp+var_8], rdi +000969FC: mov [rbp+var_10], rsi +00096A00: mov [rbp+var_18], rdx +00096A04: mov rax, [rbp+var_10] +00096A08: mov rdi, rax; void * +00096A0B: call __ZdlPv; operator delete(void *) +00096A10: leave +00096A11: retn + +### FUNC 00096A12 - 00096A20 (14 bytes) name=_ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_ +00096A12: push rbp +00096A13: mov rbp, rsp +00096A16: mov [rbp+var_8], rdi +00096A1A: mov [rbp+var_10], rsi +00096A1E: pop rbp +00096A1F: retn + +### FUNC 00096A20 - 00096A2A (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIhEC2Ev +00096A20: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +00096A21: mov rbp, rsp +00096A24: mov [rbp+var_8], rdi +00096A28: pop rbp +00096A29: retn + +### FUNC 00096A2A - 00096A3B (17 bytes) name=_ZNK9__gnu_cxx13new_allocatorIhE8max_sizeEv +00096A2A: push rbp +00096A2B: mov rbp, rsp +00096A2E: mov [rbp+var_8], rdi +00096A32: mov rax, 0FFFFFFFFFFFFFFFFh +00096A39: pop rbp +00096A3A: retn + +### FUNC 00096A3B - 00096A68 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPhES3_EET0_T_S6_S5_ +00096A3B: push rbp +00096A3C: mov rbp, rsp +00096A3F: sub rsp, 20h +00096A43: mov [rbp+var_10], rdi +00096A47: mov [rbp+var_20], rsi +00096A4B: mov [rbp+var_18], rdx +00096A4F: mov rdx, [rbp+var_18] +00096A53: mov rcx, [rbp+var_20] +00096A57: mov rax, [rbp+var_10] +00096A5B: mov rsi, rcx +00096A5E: mov rdi, rax +00096A61: call __ZSt4copyISt13move_iteratorIPhES1_ET0_T_S4_S3_; std::copy,uchar *>(std::move_iterator,std::move_iterator,uchar *) +00096A66: leave +00096A67: retn + +### FUNC 00096A68 - 00096A72 (10 bytes) name=_ZSt19__iterator_categoryIPKhENSt15iterator_traitsIT_E17iterator_categoryERKS3_ +00096A68: push rbp +00096A69: mov rbp, rsp +00096A6C: mov [rbp+var_8], rdi +00096A70: pop rbp +00096A71: retn + +### FUNC 00096A72 - 00096A8E (28 bytes) name=_ZSt10__distanceIPKhENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag +00096A72: push rbp +00096A73: mov rbp, rsp +00096A76: mov [rbp+var_8], rdi +00096A7A: mov [rbp+var_10], rsi +00096A7E: mov rdx, [rbp+var_10] +00096A82: mov rax, [rbp+var_8] +00096A86: sub rdx, rax +00096A89: mov rax, rdx +00096A8C: pop rbp +00096A8D: retn + +### FUNC 00096A8E - 00096AA8 (26 bytes) name=_ZSt12__miter_baseIPKhENSt11_Miter_baseIT_E13iterator_typeES3_ +00096A8E: push rbp +00096A8F: mov rbp, rsp +00096A92: sub rsp, 10h +00096A96: mov [rbp+var_8], rdi +00096A9A: mov rax, [rbp+var_8] +00096A9E: mov rdi, rax +00096AA1: call __ZNSt10_Iter_baseIPKhLb0EE7_S_baseES1_; std::_Iter_base::_S_base(uchar const*) +00096AA6: leave +00096AA7: retn + +### FUNC 00096AA8 - 00096B00 (88 bytes) name=_ZSt14__copy_move_a2ILb0EPKhPhET1_T0_S4_S3_ +00096AA8: push rbp +00096AA9: mov rbp, rsp +00096AAC: push r12 +00096AAE: push rbx +00096AAF: sub rsp, 20h +00096AB3: mov [rbp+var_18], rdi +00096AB7: mov [rbp+var_20], rsi +00096ABB: mov [rbp+var_28], rdx +00096ABF: mov rax, [rbp+var_28] +00096AC3: mov rdi, rax +00096AC6: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00096ACB: mov r12, rax +00096ACE: mov rax, [rbp+var_20] +00096AD2: mov rdi, rax +00096AD5: call __ZSt12__niter_baseIPKhENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(uchar const*) +00096ADA: mov rbx, rax +00096ADD: mov rax, [rbp+var_18] +00096AE1: mov rdi, rax +00096AE4: call __ZSt12__niter_baseIPKhENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(uchar const*) +00096AE9: mov rdx, r12 +00096AEC: mov rsi, rbx +00096AEF: mov rdi, rax +00096AF2: call __ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_; std::__copy_move_a(uchar const*,uchar const*,uchar *) +00096AF7: add rsp, 20h +00096AFB: pop rbx +00096AFC: pop r12 +00096AFE: pop rbp +00096AFF: retn + +### FUNC 00096B00 - 00096B23 (35 bytes) name=_ZSt9__advanceIPKhlEvRT_T0_St26random_access_iterator_tag +00096B00: push rbp +00096B01: mov rbp, rsp +00096B04: mov [rbp+var_8], rdi +00096B08: mov [rbp+var_10], rsi +00096B0C: mov rax, [rbp+var_8] +00096B10: mov rdx, [rax] +00096B13: mov rax, [rbp+var_10] +00096B17: add rdx, rax +00096B1A: mov rax, [rbp+var_8] +00096B1E: mov [rax], rdx +00096B21: pop rbp +00096B22: retn + +### FUNC 00096B23 - 00096B50 (45 bytes) name=_ZSt18uninitialized_copyIPKhPhET0_T_S4_S3_ +00096B23: push rbp +00096B24: mov rbp, rsp +00096B27: sub rsp, 20h +00096B2B: mov [rbp+var_8], rdi +00096B2F: mov [rbp+var_10], rsi +00096B33: mov [rbp+var_18], rdx +00096B37: mov rdx, [rbp+var_18] +00096B3B: mov rcx, [rbp+var_10] +00096B3F: mov rax, [rbp+var_8] +00096B43: mov rsi, rcx +00096B46: mov rdi, rax +00096B49: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKhPhEET0_T_S6_S5_; std::__uninitialized_copy::__uninit_copy(uchar const*,uchar const*,uchar *) +00096B4E: leave +00096B4F: retn + +### FUNC 00096B50 - 00096B96 (70 bytes) name=_ZSt4copyISt13move_iteratorIPhES1_ET0_T_S4_S3_ +00096B50: push rbp +00096B51: mov rbp, rsp +00096B54: push rbx +00096B55: sub rsp, 28h +00096B59: mov [rbp+var_20], rdi +00096B5D: mov [rbp+var_30], rsi +00096B61: mov [rbp+var_28], rdx +00096B65: mov rax, [rbp+var_30] +00096B69: mov rdi, rax +00096B6C: call __ZSt12__miter_baseISt13move_iteratorIPhEENSt11_Miter_baseIT_E13iterator_typeES4_; std::__miter_base>(std::move_iterator) +00096B71: mov rbx, rax +00096B74: mov rax, [rbp+var_20] +00096B78: mov rdi, rax +00096B7B: call __ZSt12__miter_baseISt13move_iteratorIPhEENSt11_Miter_baseIT_E13iterator_typeES4_; std::__miter_base>(std::move_iterator) +00096B80: mov rdx, [rbp+var_28] +00096B84: mov rsi, rbx +00096B87: mov rdi, rax +00096B8A: call __ZSt14__copy_move_a2ILb1EPhS0_ET1_T0_S2_S1_; std::__copy_move_a2(uchar *,uchar *,uchar *) +00096B8F: add rsp, 28h +00096B93: pop rbx +00096B94: pop rbp +00096B95: retn + +### FUNC 00096B96 - 00096BA4 (14 bytes) name=_ZNSt10_Iter_baseIPKhLb0EE7_S_baseES1_ +00096B96: push rbp +00096B97: mov rbp, rsp +00096B9A: mov [rbp+var_8], rdi +00096B9E: mov rax, [rbp+var_8] +00096BA2: pop rbp +00096BA3: retn + +### FUNC 00096BA4 - 00096BBE (26 bytes) name=_ZSt12__niter_baseIPKhENSt11_Niter_baseIT_E13iterator_typeES3_ +00096BA4: push rbp +00096BA5: mov rbp, rsp +00096BA8: sub rsp, 10h +00096BAC: mov [rbp+var_8], rdi +00096BB0: mov rax, [rbp+var_8] +00096BB4: mov rdi, rax +00096BB7: call __ZNSt10_Iter_baseIPKhLb0EE7_S_baseES1_; std::_Iter_base::_S_base(uchar const*) +00096BBC: leave +00096BBD: retn + +### FUNC 00096BBE - 00096BD8 (26 bytes) name=_ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_ +00096BBE: push rbp +00096BBF: mov rbp, rsp +00096BC2: sub rsp, 10h +00096BC6: mov [rbp+var_8], rdi +00096BCA: mov rax, [rbp+var_8] +00096BCE: mov rdi, rax +00096BD1: call __ZNSt10_Iter_baseIPhLb0EE7_S_baseES0_; std::_Iter_base::_S_base(uchar *) +00096BD6: leave +00096BD7: retn + +### FUNC 00096BD8 - 00096C09 (49 bytes) name=_ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_ +00096BD8: push rbp +00096BD9: mov rbp, rsp +00096BDC: sub rsp, 30h +00096BE0: mov [rbp+var_18], rdi +00096BE4: mov [rbp+var_20], rsi +00096BE8: mov [rbp+var_28], rdx +00096BEC: mov [rbp+var_1], 1 +00096BF0: mov rdx, [rbp+var_28] +00096BF4: mov rcx, [rbp+var_20] +00096BF8: mov rax, [rbp+var_18] +00096BFC: mov rsi, rcx +00096BFF: mov rdi, rax +00096C02: call __ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_; std::__copy_move::__copy_m(uchar const*,uchar const*,uchar *) +00096C07: leave +00096C08: retn + +### FUNC 00096C09 - 00096C36 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPKhPhEET0_T_S6_S5_ +00096C09: push rbp +00096C0A: mov rbp, rsp +00096C0D: sub rsp, 20h +00096C11: mov [rbp+var_8], rdi +00096C15: mov [rbp+var_10], rsi +00096C19: mov [rbp+var_18], rdx +00096C1D: mov rdx, [rbp+var_18] +00096C21: mov rcx, [rbp+var_10] +00096C25: mov rax, [rbp+var_8] +00096C29: mov rsi, rcx +00096C2C: mov rdi, rax +00096C2F: call __ZSt4copyIPKhPhET0_T_S4_S3_; std::copy(uchar const*,uchar const*,uchar *) +00096C34: leave +00096C35: retn + +### FUNC 00096C36 - 00096C50 (26 bytes) name=_ZSt12__miter_baseISt13move_iteratorIPhEENSt11_Miter_baseIT_E13iterator_typeES4_ +00096C36: push rbp +00096C37: mov rbp, rsp +00096C3A: sub rsp, 10h +00096C3E: mov [rbp+var_10], rdi +00096C42: mov rax, [rbp+var_10] +00096C46: mov rdi, rax +00096C49: call __ZNSt10_Iter_baseISt13move_iteratorIPhELb1EE7_S_baseES2_; std::_Iter_base,true>::_S_base(std::move_iterator) +00096C4E: leave +00096C4F: retn + +### FUNC 00096C50 - 00096CA8 (88 bytes) name=_ZSt14__copy_move_a2ILb1EPhS0_ET1_T0_S2_S1_ +00096C50: push rbp +00096C51: mov rbp, rsp +00096C54: push r12 +00096C56: push rbx +00096C57: sub rsp, 20h +00096C5B: mov [rbp+var_18], rdi +00096C5F: mov [rbp+var_20], rsi +00096C63: mov [rbp+var_28], rdx +00096C67: mov rax, [rbp+var_28] +00096C6B: mov rdi, rax +00096C6E: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00096C73: mov r12, rax +00096C76: mov rax, [rbp+var_20] +00096C7A: mov rdi, rax +00096C7D: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00096C82: mov rbx, rax +00096C85: mov rax, [rbp+var_18] +00096C89: mov rdi, rax +00096C8C: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00096C91: mov rdx, r12 +00096C94: mov rsi, rbx +00096C97: mov rdi, rax +00096C9A: call __ZSt13__copy_move_aILb1EPhS0_ET1_T0_S2_S1_; std::__copy_move_a(uchar *,uchar *,uchar *) +00096C9F: add rsp, 20h +00096CA3: pop rbx +00096CA4: pop r12 +00096CA6: pop rbp +00096CA7: retn + +### FUNC 00096CA8 - 00096CB6 (14 bytes) name=_ZNSt10_Iter_baseIPhLb0EE7_S_baseES0_ +00096CA8: push rbp +00096CA9: mov rbp, rsp +00096CAC: mov [rbp+var_8], rdi +00096CB0: mov rax, [rbp+var_8] +00096CB4: pop rbp +00096CB5: retn + +### FUNC 00096CB6 - 00096D0A (84 bytes) name=_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +00096CB6: push rbp +00096CB7: mov rbp, rsp +00096CBA: sub rsp, 30h +00096CBE: mov [rbp+src], rdi +00096CC2: mov [rbp+var_20], rsi +00096CC6: mov [rbp+dest], rdx +00096CCA: mov rdx, [rbp+var_20] +00096CCE: mov rax, [rbp+src] +00096CD2: sub rdx, rax +00096CD5: mov rax, rdx +00096CD8: mov [rbp+n], rax +00096CDC: cmp [rbp+n], 0 +00096CE1: jz short loc_96CFD +00096CE3: mov rax, [rbp+n] +00096CE7: mov rdx, rax; n +00096CEA: mov rcx, [rbp+src] +00096CEE: mov rax, [rbp+dest] +00096CF2: mov rsi, rcx; src +00096CF5: mov rdi, rax; dest +00096CF8: call _memmove +00096CFD: mov rdx, [rbp+n] +00096D01: mov rax, [rbp+dest] +00096D05: add rax, rdx +00096D08: leave +00096D09: retn + +### FUNC 00096D0A - 00096D24 (26 bytes) name=_ZNSt10_Iter_baseISt13move_iteratorIPhELb1EE7_S_baseES2_ +00096D0A: push rbp +00096D0B: mov rbp, rsp +00096D0E: sub rsp, 10h +00096D12: mov [rbp+var_10], rdi +00096D16: lea rax, [rbp+var_10] +00096D1A: mov rdi, rax +00096D1D: call __ZNKSt13move_iteratorIPhE4baseEv; std::move_iterator::base(void) +00096D22: leave +00096D23: retn + +### FUNC 00096D24 - 00096D55 (49 bytes) name=_ZSt13__copy_move_aILb1EPhS0_ET1_T0_S2_S1_ +00096D24: push rbp +00096D25: mov rbp, rsp +00096D28: sub rsp, 30h +00096D2C: mov [rbp+var_18], rdi +00096D30: mov [rbp+var_20], rsi +00096D34: mov [rbp+var_28], rdx +00096D38: mov [rbp+var_1], 1 +00096D3C: mov rdx, [rbp+var_28] +00096D40: mov rcx, [rbp+var_20] +00096D44: mov rax, [rbp+var_18] +00096D48: mov rsi, rcx +00096D4B: mov rdi, rax +00096D4E: call __ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_; std::__copy_move::__copy_m(uchar const*,uchar const*,uchar *) +00096D53: leave +00096D54: retn + +### FUNC 00096D56 - 00096D67 (17 bytes) name=_ZNKSt13move_iteratorIPhE4baseEv +00096D56: push rbp +00096D57: mov rbp, rsp +00096D5A: mov [rbp+var_8], rdi +00096D5E: mov rax, [rbp+var_8] +00096D62: mov rax, [rax] +00096D65: pop rbp +00096D66: retn + +### FUNC 00096D67 - 00096DBB (84 bytes) name=_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_ +00096D67: push rbp +00096D68: mov rbp, rsp +00096D6B: sub rsp, 30h +00096D6F: mov [rbp+src], rdi +00096D73: mov [rbp+var_20], rsi +00096D77: mov [rbp+dest], rdx +00096D7B: mov rdx, [rbp+var_20] +00096D7F: mov rax, [rbp+src] +00096D83: sub rdx, rax +00096D86: mov rax, rdx +00096D89: mov [rbp+n], rax +00096D8D: cmp [rbp+n], 0 +00096D92: jz short loc_96DAE +00096D94: mov rax, [rbp+n] +00096D98: mov rdx, rax; n +00096D9B: mov rcx, [rbp+src] +00096D9F: mov rax, [rbp+dest] +00096DA3: mov rsi, rcx; src +00096DA6: mov rdi, rax; dest +00096DA9: call _memmove +00096DAE: mov rdx, [rbp+n] +00096DB2: mov rax, [rbp+dest] +00096DB6: add rax, rdx +00096DB9: leave +00096DBA: retn + +### FUNC 00096DBC - 00096E05 (73 bytes) name=_ZN10CMagDeviceC2Ev +00096DBC: push rbp; Alternative name is 'CMagDevice::CMagDevice(void)' +00096DBD: mov rbp, rsp +00096DC0: sub rsp, 10h +00096DC4: mov [rbp+var_8], rdi +00096DC8: mov rax, [rbp+var_8] +00096DCC: mov dword ptr [rax], 0 +00096DD2: mov rax, [rbp+var_8] +00096DD6: mov dword ptr [rax+4], 0FFFFFFFFh +00096DDD: mov rax, [rbp+var_8] +00096DE1: add rax, 8 +00096DE5: mov edx, 50h ; 'P'; n +00096DEA: mov esi, 0; c +00096DEF: mov rdi, rax; s +00096DF2: call _memset +00096DF7: mov rax, [rbp+var_8] +00096DFB: mov rdi, rax; this +00096DFE: call __ZN10CMagDevice10InitializeEv; CMagDevice::Initialize(void) +00096E03: leave +00096E04: retn + +### FUNC 00096E06 - 00096EBB (181 bytes) name=_ZN10CMagDeviceD2Ev +00096E06: push rbp; Alternative name is 'CMagDevice::~CMagDevice()' +00096E07: mov rbp, rsp +00096E0A: sub rsp, 10h +00096E0E: mov [rbp+var_8], rdi +00096E12: mov rax, [rbp+var_8] +00096E16: mov eax, [rax+4] +00096E19: mov edi, eax +00096E1B: call _MAG_IsProcessingImage +00096E20: test eax, eax +00096E22: setnz al +00096E25: test al, al +00096E27: jz short loc_96E37 +00096E29: mov rax, [rbp+var_8] +00096E2D: mov eax, [rax+4] +00096E30: mov edi, eax +00096E32: call _MAG_StopProcessImage +00096E37: mov rax, [rbp+var_8] +00096E3B: mov eax, [rax+4] +00096E3E: mov edi, eax +00096E40: call _MAG_IsLinked +00096E45: test eax, eax +00096E47: setnz al +00096E4A: test al, al +00096E4C: jz short loc_96E5A +00096E4E: mov rax, [rbp+var_8] +00096E52: mov rdi, rax; this +00096E55: call __ZN10CMagDevice13DisLinkCameraEv; CMagDevice::DisLinkCamera(void) +00096E5A: mov rax, [rbp+var_8] +00096E5E: mov eax, [rax+4] +00096E61: mov edi, eax +00096E63: call _MAG_IsInitialized +00096E68: test eax, eax +00096E6A: setnz al +00096E6D: test al, al +00096E6F: jz short loc_96E89 +00096E71: mov rax, [rbp+var_8] +00096E75: mov eax, [rax+4] +00096E78: mov edi, eax +00096E7A: call _MAG_Free +00096E7F: mov rax, [rbp+var_8] +00096E83: mov dword ptr [rax], 0 +00096E89: mov rax, [rbp+var_8] +00096E8D: mov eax, [rax+4] +00096E90: mov edi, eax +00096E92: call _MAG_IsChannelAvailable +00096E97: test eax, eax +00096E99: setnz al +00096E9C: test al, al +00096E9E: jz short locret_96EB9 +00096EA0: mov rax, [rbp+var_8] +00096EA4: mov eax, [rax+4] +00096EA7: mov edi, eax +00096EA9: call _MAG_DelChannel +00096EAE: mov rax, [rbp+var_8] +00096EB2: mov dword ptr [rax+4], 0FFFFFFFFh +00096EB9: leave +00096EBA: retn + +### FUNC 00096EBC - 00096F6E (178 bytes) name=_ZN10CMagDevice10InitializeEv +00096EBC: push rbp +00096EBD: mov rbp, rsp +00096EC0: sub rsp, 20h +00096EC4: mov [rbp+var_18], rdi +00096EC8: mov rax, [rbp+var_18] +00096ECC: mov eax, [rax] +00096ECE: test eax, eax +00096ED0: jz short loc_96EDC +00096ED2: mov eax, 1 +00096ED7: jmp locret_96F6C +00096EDC: mov rax, [rbp+var_18] +00096EE0: mov eax, [rax+4] +00096EE3: test eax, eax +00096EE5: jz short loc_96EF5 +00096EE7: mov rax, [rbp+var_18] +00096EEB: mov eax, [rax+4] +00096EEE: cmp eax, 80h +00096EF3: jbe short loc_96F34 +00096EF5: mov [rbp+var_4], 1 +00096EFC: jmp short loc_96F2B +00096EFE: mov eax, [rbp+var_4] +00096F01: mov edi, eax +00096F03: call _MAG_IsChannelAvailable +00096F08: test eax, eax +00096F0A: setz al +00096F0D: test al, al +00096F0F: jz short loc_96F27 +00096F11: mov eax, [rbp+var_4] +00096F14: mov edi, eax +00096F16: call _MAG_NewChannel +00096F1B: mov edx, [rbp+var_4] +00096F1E: mov rax, [rbp+var_18] +00096F22: mov [rax+4], edx +00096F25: jmp short loc_96F34 +00096F27: add [rbp+var_4], 1 +00096F2B: cmp [rbp+var_4], 80h +00096F32: jle short loc_96EFE +00096F34: mov rax, [rbp+var_18] +00096F38: mov eax, [rax+4] +00096F3B: test eax, eax +00096F3D: jz short loc_96F66 +00096F3F: mov rax, [rbp+var_18] +00096F43: mov eax, [rax+4] +00096F46: cmp eax, 80h +00096F4B: ja short loc_96F66 +00096F4D: mov rax, [rbp+var_18] +00096F51: mov eax, [rax+4] +00096F54: mov esi, 0 +00096F59: mov edi, eax +00096F5B: call _MAG_Initialize +00096F60: mov rdx, [rbp+var_18] +00096F64: mov [rdx], eax +00096F66: mov rax, [rbp+var_18] +00096F6A: mov eax, [rax] +00096F6C: leave +00096F6D: retn + +### FUNC 00096F6E - 00096F80 (18 bytes) name=_ZN10CMagDevice10GetCamInfoEv +00096F6E: push rbp +00096F6F: mov rbp, rsp +00096F72: mov [rbp+var_8], rdi +00096F76: mov rax, [rbp+var_8] +00096F7A: add rax, 8 +00096F7E: pop rbp +00096F7F: retn + +### FUNC 00096F80 - 00096F9C (28 bytes) name=_ZN10CMagDevice8IsLinkedEv +00096F80: push rbp +00096F81: mov rbp, rsp +00096F84: sub rsp, 10h +00096F88: mov [rbp+var_8], rdi +00096F8C: mov rax, [rbp+var_8] +00096F90: mov eax, [rax+4] +00096F93: mov edi, eax +00096F95: call _MAG_IsLinked +00096F9A: leave +00096F9B: retn + +### FUNC 00096F9C - 00096FF3 (87 bytes) name=_ZN10CMagDevice10LinkCameraEj +00096F9C: push rbp +00096F9D: mov rbp, rsp +00096FA0: sub rsp, 10h +00096FA4: mov [rbp+var_8], rdi +00096FA8: mov [rbp+var_C], esi +00096FAB: mov rax, [rbp+var_8] +00096FAF: mov eax, [rax+4] +00096FB2: mov edx, [rbp+var_C] +00096FB5: mov esi, edx +00096FB7: mov edi, eax +00096FB9: call _MAG_LinkCamera +00096FBE: test eax, eax +00096FC0: setnz al +00096FC3: test al, al +00096FC5: jz short loc_96FEC +00096FC7: mov rax, [rbp+var_8] +00096FCB: lea rcx, [rax+8] +00096FCF: mov rax, [rbp+var_8] +00096FD3: mov eax, [rax+4] +00096FD6: mov edx, 50h ; 'P' +00096FDB: mov rsi, rcx +00096FDE: mov edi, eax +00096FE0: call _MAG_GetCamInfo +00096FE5: mov eax, 1 +00096FEA: jmp short locret_96FF1 +00096FEC: mov eax, 0 +00096FF1: leave +00096FF2: retn + +### FUNC 00096FF4 - 00097010 (28 bytes) name=_ZN10CMagDevice13DisLinkCameraEv +00096FF4: push rbp +00096FF5: mov rbp, rsp +00096FF8: sub rsp, 10h +00096FFC: mov [rbp+var_8], rdi +00097000: mov rax, [rbp+var_8] +00097004: mov eax, [rax+4] +00097007: mov edi, eax +00097009: call _MAG_DisLinkCamera +0009700E: leave +0009700F: retn + +### FUNC 00097010 - 00097034 (36 bytes) name=_ZN10CMagDevice10SetFFCModeEi +00097010: push rbp +00097011: mov rbp, rsp +00097014: sub rsp, 10h +00097018: mov [rbp+var_8], rdi +0009701C: mov [rbp+var_C], esi +0009701F: mov rax, [rbp+var_8] +00097023: mov eax, [rax+4] +00097026: mov edx, [rbp+var_C] +00097029: mov esi, edx +0009702B: mov edi, eax +0009702D: call _MAG_SetFFCMode +00097032: leave +00097033: retn + +### FUNC 00097034 - 00097050 (28 bytes) name=_ZN10CMagDevice10TriggerFFCEv +00097034: push rbp +00097035: mov rbp, rsp +00097038: sub rsp, 10h +0009703C: mov [rbp+var_8], rdi +00097040: mov rax, [rbp+var_8] +00097044: mov eax, [rax+4] +00097047: mov edi, eax +00097049: call _MAG_TriggerFFC +0009704E: leave +0009704F: retn + +### FUNC 00097050 - 0009706C (28 bytes) name=_ZN10CMagDevice17IsProcessingImageEv +00097050: push rbp +00097051: mov rbp, rsp +00097054: sub rsp, 10h +00097058: mov [rbp+var_8], rdi +0009705C: mov rax, [rbp+var_8] +00097060: mov eax, [rax+4] +00097063: mov edi, eax +00097065: call _MAG_IsProcessingImage +0009706A: leave +0009706B: retn + +### FUNC 0009706C - 0009709B (47 bytes) name=_ZN10CMagDevice19PrepareProcessImageEPFvjiiPvES0_ +0009706C: push rbp +0009706D: mov rbp, rsp +00097070: sub rsp, 20h +00097074: mov [rbp+var_8], rdi +00097078: mov [rbp+var_10], rsi +0009707C: mov [rbp+var_18], rdx +00097080: mov rax, [rbp+var_8] +00097084: mov eax, [rax+4] +00097087: mov rdx, [rbp+var_18] +0009708B: mov rcx, [rbp+var_10] +0009708F: mov rsi, rcx +00097092: mov edi, eax +00097094: call _MAG_PrepareProcessImage +00097099: leave +0009709A: retn + +### FUNC 0009709C - 00097151 (181 bytes) name=_ZN10CMagDevice17StartProcessImageEPFvjjjPvEiiS0_ +0009709C: push rbp +0009709D: mov rbp, rsp +000970A0: sub rsp, 40h +000970A4: mov [rbp+var_28], rdi +000970A8: mov [rbp+var_30], rsi +000970AC: mov [rbp+var_34], edx +000970AF: mov [rbp+var_38], ecx +000970B2: mov [rbp+var_40], r8 +000970B6: mov eax, [rbp+var_34] +000970B9: and eax, 0FFFFFFFCh +000970BC: mov [rbp+var_4], eax +000970BF: mov rax, [rbp+var_28] +000970C3: mov eax, [rax+8] +000970C6: mov [rbp+var_20], eax +000970C9: mov rax, [rbp+var_28] +000970CD: mov eax, [rax+0Ch] +000970D0: mov [rbp+var_1C], eax +000970D3: mov rax, [rbp+var_28] +000970D7: mov eax, [rax+48h] +000970DA: mov [rbp+var_18], eax +000970DD: mov rax, [rbp+var_28] +000970E1: mov eax, [rax+4Ch] +000970E4: mov [rbp+var_14], eax +000970E7: cmp [rbp+var_4], 0 +000970EB: jz short loc_970F2 +000970ED: mov eax, [rbp+var_4] +000970F0: jmp short loc_970F7 +000970F2: mov eax, 4 +000970F7: mov [rbp+var_10], eax +000970FA: cmp [rbp+var_38], 0 +000970FE: jz short loc_97105 +00097100: mov eax, [rbp+var_38] +00097103: jmp short loc_9710A +00097105: mov eax, 4 +0009710A: mov [rbp+var_C], eax +0009710D: mov rax, [rbp+var_28] +00097111: mov eax, [rax+4] +00097114: mov rcx, [rbp+var_40] +00097118: mov rdx, [rbp+var_30] +0009711C: lea rsi, [rbp+var_20] +00097120: mov r8, rcx +00097123: mov ecx, 2 +00097128: mov edi, eax +0009712A: call _MAG_StartProcessImage +0009712F: mov [rbp+var_8], eax +00097132: cmp [rbp+var_8], 0 +00097136: jz short loc_9714C +00097138: mov edx, [rbp+var_10] +0009713B: mov rax, [rbp+var_28] +0009713F: mov [rax+50h], edx +00097142: mov edx, [rbp+var_C] +00097145: mov rax, [rbp+var_28] +00097149: mov [rax+54h], edx +0009714C: mov eax, [rbp+var_8] +0009714F: leave +00097150: retn + +### FUNC 00097152 - 0009716E (28 bytes) name=_ZN10CMagDevice20WillStartImmediatelyEv +00097152: push rbp +00097153: mov rbp, rsp +00097156: sub rsp, 10h +0009715A: mov [rbp+var_8], rdi +0009715E: mov rax, [rbp+var_8] +00097162: mov eax, [rax+4] +00097165: mov edi, eax +00097167: call _MAG_WillStartImmediately +0009716C: leave +0009716D: retn + +### FUNC 0009716E - 0009718A (28 bytes) name=_ZN10CMagDevice16StopProcessImageEv +0009716E: push rbp +0009716F: mov rbp, rsp +00097172: sub rsp, 10h +00097176: mov [rbp+var_8], rdi +0009717A: mov rax, [rbp+var_8] +0009717E: mov eax, [rax+4] +00097181: mov edi, eax +00097183: call _MAG_StopProcessImage +00097188: leave +00097189: retn + +### FUNC 0009718A - 000971AE (36 bytes) name=_ZN10CMagDevice15SetColorPaletteE12ColorPalette +0009718A: push rbp +0009718B: mov rbp, rsp +0009718E: sub rsp, 10h +00097192: mov [rbp+var_8], rdi +00097196: mov [rbp+var_C], esi +00097199: mov rax, [rbp+var_8] +0009719D: mov eax, [rax+4] +000971A0: mov edx, [rbp+var_C] +000971A3: mov esi, edx +000971A5: mov edi, eax +000971A7: call _MAG_SetColorPalette +000971AC: leave +000971AD: retn + +### FUNC 000971AE - 000971EC (62 bytes) name=_ZN10CMagDevice24SetSubsectionEnlargeParaEiihh +000971AE: push rbp +000971AF: mov rbp, rsp +000971B2: sub rsp, 20h +000971B6: mov [rbp+var_8], rdi +000971BA: mov [rbp+var_C], esi +000971BD: mov [rbp+var_10], edx +000971C0: mov eax, ecx +000971C2: mov edx, r8d +000971C5: mov [rbp+var_14], al +000971C8: mov [rbp+var_18], dl +000971CB: movzx edi, [rbp+var_18] +000971CF: movzx ecx, [rbp+var_14] +000971D3: mov rax, [rbp+var_8] +000971D7: mov eax, [rax+4] +000971DA: mov edx, [rbp+var_10] +000971DD: mov esi, [rbp+var_C] +000971E0: mov r8d, edi +000971E3: mov edi, eax +000971E5: call _MAG_SetSubsectionEnlargePara +000971EA: leave +000971EB: retn + +### FUNC 000971EC - 00097216 (42 bytes) name=_ZN10CMagDevice17SetIsothermalParaEii +000971EC: push rbp +000971ED: mov rbp, rsp +000971F0: sub rsp, 10h +000971F4: mov [rbp+var_8], rdi +000971F8: mov [rbp+var_C], esi +000971FB: mov [rbp+var_10], edx +000971FE: mov rax, [rbp+var_8] +00097202: mov eax, [rax+4] +00097205: mov edx, [rbp+var_10] +00097208: mov ecx, [rbp+var_C] +0009720B: mov esi, ecx +0009720D: mov edi, eax +0009720F: call _MAG_SetIsothermalPara +00097214: leave +00097215: retn + +### FUNC 00097216 - 00097244 (46 bytes) name=_ZN10CMagDevice18SetAutoEnlargeParaEjii +00097216: push rbp +00097217: mov rbp, rsp +0009721A: sub rsp, 20h +0009721E: mov [rbp+var_8], rdi +00097222: mov [rbp+var_C], esi +00097225: mov [rbp+var_10], edx +00097228: mov [rbp+var_14], ecx +0009722B: mov rax, [rbp+var_8] +0009722F: mov eax, [rax+4] +00097232: mov ecx, [rbp+var_14] +00097235: mov edx, [rbp+var_10] +00097238: mov esi, [rbp+var_C] +0009723B: mov edi, eax +0009723D: call _MAG_SetAutoEnlargePara +00097242: leave +00097243: retn + +### FUNC 00097244 - 00097272 (46 bytes) name=_ZN10CMagDevice10SetEXLevelE2EXii +00097244: push rbp +00097245: mov rbp, rsp +00097248: sub rsp, 20h +0009724C: mov [rbp+var_8], rdi +00097250: mov [rbp+var_C], esi +00097253: mov [rbp+var_10], edx +00097256: mov [rbp+var_14], ecx +00097259: mov rax, [rbp+var_8] +0009725D: mov eax, [rax+4] +00097260: mov ecx, [rbp+var_14] +00097263: mov edx, [rbp+var_10] +00097266: mov esi, [rbp+var_C] +00097269: mov edi, eax +0009726B: call _MAG_SetEXLevel +00097270: leave +00097271: retn + +### FUNC 00097272 - 0009728E (28 bytes) name=_ZN10CMagDevice10GetEXLevelEv +00097272: push rbp +00097273: mov rbp, rsp +00097276: sub rsp, 10h +0009727A: mov [rbp+var_8], rdi +0009727E: mov rax, [rbp+var_8] +00097282: mov eax, [rax+4] +00097285: mov edi, eax +00097287: call _MAG_GetEXLevel +0009728C: leave +0009728D: retn + +### FUNC 0009728E - 000972B8 (42 bytes) name=_ZN10CMagDevice20SetDetailEnhancementEii +0009728E: push rbp +0009728F: mov rbp, rsp +00097292: sub rsp, 10h +00097296: mov [rbp+var_8], rdi +0009729A: mov [rbp+var_C], esi +0009729D: mov [rbp+var_10], edx +000972A0: mov rax, [rbp+var_8] +000972A4: mov eax, [rax+4] +000972A7: mov edx, [rbp+var_10] +000972AA: mov ecx, [rbp+var_C] +000972AD: mov esi, ecx +000972AF: mov edi, eax +000972B1: call _MAG_SetDetailEnhancement +000972B6: leave +000972B7: retn + +### FUNC 000972B8 - 000972DC (36 bytes) name=_ZN10CMagDevice15SetIOAlarmStateEi +000972B8: push rbp +000972B9: mov rbp, rsp +000972BC: sub rsp, 10h +000972C0: mov [rbp+var_8], rdi +000972C4: mov [rbp+var_C], esi +000972C7: mov rax, [rbp+var_8] +000972CB: mov eax, [rax+4] +000972CE: mov edx, [rbp+var_C] +000972D1: mov esi, edx +000972D3: mov edi, eax +000972D5: call _MAG_SetIoAlarmState +000972DA: leave +000972DB: retn + +### FUNC 000972DC - 00097303 (39 bytes) name=_ZN10CMagDevice10GetFixParaEP14struct_FixPara +000972DC: push rbp +000972DD: mov rbp, rsp +000972E0: sub rsp, 10h +000972E4: mov [rbp+var_8], rdi +000972E8: mov [rbp+var_10], rsi +000972EC: mov rax, [rbp+var_8] +000972F0: mov eax, [rax+4] +000972F3: mov rdx, [rbp+var_10] +000972F7: mov rsi, rdx +000972FA: mov edi, eax +000972FC: call _MAG_GetFixPara +00097301: leave +00097302: retn + +### FUNC 00097304 - 00097341 (61 bytes) name=_ZN10CMagDevice10SetFixParaEPK14struct_FixPara12FixSelection +00097304: push rbp +00097305: mov rbp, rsp +00097308: sub rsp, 20h +0009730C: mov [rbp+var_8], rdi +00097310: mov [rbp+var_10], rsi +00097314: mov [rbp+var_14], edx +00097317: mov rax, [rbp+var_8] +0009731B: mov eax, [rax+4] +0009731E: mov edx, [rbp+var_14] +00097321: mov rcx, [rbp+var_10] +00097325: mov rsi, rcx +00097328: mov edi, eax +0009732A: call _MAG_SetFixPara +0009732F: movss [rbp+var_18], xmm0 +00097334: mov eax, [rbp+var_18] +00097337: mov [rbp+var_18], eax +0009733A: movss xmm0, [rbp+var_18] +0009733F: leave +00097340: retn + +### FUNC 00097342 - 00097371 (47 bytes) name=_ZN10CMagDevice16GetOutputBMPdataEPPKhPPK13tagBITMAPINFO +00097342: push rbp +00097343: mov rbp, rsp +00097346: sub rsp, 20h +0009734A: mov [rbp+var_8], rdi +0009734E: mov [rbp+var_10], rsi +00097352: mov [rbp+var_18], rdx +00097356: mov rax, [rbp+var_8] +0009735A: mov eax, [rax+4] +0009735D: mov rdx, [rbp+var_18] +00097361: mov rcx, [rbp+var_10] +00097365: mov rsi, rcx +00097368: mov edi, eax +0009736A: call _MAG_GetOutputBMPdata +0009736F: leave +00097370: retn + +### FUNC 00097372 - 000973A2 (48 bytes) name=_ZN10CMagDevice21GetOutputBMPdataRGB24EPhji +00097372: push rbp +00097373: mov rbp, rsp +00097376: sub rsp, 20h +0009737A: mov [rbp+var_8], rdi +0009737E: mov [rbp+var_10], rsi +00097382: mov [rbp+var_14], edx +00097385: mov [rbp+var_18], ecx +00097388: mov rax, [rbp+var_8] +0009738C: mov eax, [rax+4] +0009738F: mov ecx, [rbp+var_18] +00097392: mov edx, [rbp+var_14] +00097395: mov rsi, [rbp+var_10] +00097399: mov edi, eax +0009739B: call _MAG_GetOutputBMPdataRGB24 +000973A0: leave +000973A1: retn + +### FUNC 000973A2 - 000973D1 (47 bytes) name=_ZN10CMagDevice21GetOutputColorBardataEPPKhPPK13tagBITMAPINFO +000973A2: push rbp +000973A3: mov rbp, rsp +000973A6: sub rsp, 20h +000973AA: mov [rbp+var_8], rdi +000973AE: mov [rbp+var_10], rsi +000973B2: mov [rbp+var_18], rdx +000973B6: mov rax, [rbp+var_8] +000973BA: mov eax, [rax+4] +000973BD: mov rdx, [rbp+var_18] +000973C1: mov rcx, [rbp+var_10] +000973C5: mov rsi, rcx +000973C8: mov edi, eax +000973CA: call _MAG_GetOutputColorBardata +000973CF: leave +000973D0: retn + +### FUNC 000973D2 - 000973EE (28 bytes) name=_ZN10CMagDevice16GetOutputRawDataEv +000973D2: push rbp +000973D3: mov rbp, rsp +000973D6: sub rsp, 10h +000973DA: mov [rbp+var_8], rdi +000973DE: mov rax, [rbp+var_8] +000973E2: mov eax, [rax+4] +000973E5: mov edi, eax +000973E7: call _MAG_GetOutputRawData +000973EC: leave +000973ED: retn + +### FUNC 000973EE - 0009740A (28 bytes) name=_ZN10CMagDevice23GetFrameStatisticalDataEv +000973EE: push rbp +000973EF: mov rbp, rsp +000973F2: sub rsp, 10h +000973F6: mov [rbp+var_8], rdi +000973FA: mov rax, [rbp+var_8] +000973FE: mov eax, [rax+4] +00097401: mov edi, eax +00097403: call _MAG_GetFrameStatisticalData +00097408: leave +00097409: retn + +### FUNC 0009740A - 00097426 (28 bytes) name=_ZN10CMagDevice13GetRemoteInfoEv +0009740A: push rbp +0009740B: mov rbp, rsp +0009740E: sub rsp, 10h +00097412: mov [rbp+var_8], rdi +00097416: mov rax, [rbp+var_8] +0009741A: mov eax, [rax+4] +0009741D: mov edi, eax +0009741F: call _MAG_GetRemoteInfo +00097424: leave +00097425: retn + +### FUNC 00097426 - 00097462 (60 bytes) name=_ZN10CMagDevice14FixTemperatureEifjj +00097426: push rbp +00097427: mov rbp, rsp +0009742A: sub rsp, 20h +0009742E: mov [rbp+var_8], rdi +00097432: mov [rbp+var_C], esi +00097435: movss [rbp+var_10], xmm0 +0009743A: mov [rbp+var_14], edx +0009743D: mov [rbp+var_18], ecx +00097440: mov rax, [rbp+var_8] +00097444: mov edi, [rax+4] +00097447: mov ecx, [rbp+var_18] +0009744A: mov edx, [rbp+var_14] +0009744D: mov eax, [rbp+var_10] +00097450: mov esi, [rbp+var_C] +00097453: mov [rbp+var_1C], eax +00097456: movss xmm0, [rbp+var_1C] +0009745B: call _MAG_FixTemperature +00097460: leave +00097461: retn + +### FUNC 00097462 - 0009749A (56 bytes) name=_ZN10CMagDevice14FixTemperatureEifj +00097462: push rbp +00097463: mov rbp, rsp +00097466: sub rsp, 20h +0009746A: mov [rbp+var_8], rdi +0009746E: mov [rbp+var_C], esi +00097471: movss [rbp+var_10], xmm0 +00097476: mov [rbp+var_14], edx +00097479: mov rax, [rbp+var_8] +0009747D: mov ecx, [rax+4] +00097480: mov edx, [rbp+var_14] +00097483: mov eax, [rbp+var_10] +00097486: mov esi, [rbp+var_C] +00097489: mov [rbp+var_18], eax +0009748C: movss xmm0, [rbp+var_18] +00097491: mov edi, ecx +00097493: call _MAG_FixTemperature2 +00097498: leave +00097499: retn + +### FUNC 0009749A - 000974CA (48 bytes) name=_ZN10CMagDevice18GetTemperatureDataEPiji +0009749A: push rbp +0009749B: mov rbp, rsp +0009749E: sub rsp, 20h +000974A2: mov [rbp+var_8], rdi +000974A6: mov [rbp+var_10], rsi +000974AA: mov [rbp+var_14], edx +000974AD: mov [rbp+var_18], ecx +000974B0: mov rax, [rbp+var_8] +000974B4: mov eax, [rax+4] +000974B7: mov ecx, [rbp+var_18] +000974BA: mov edx, [rbp+var_14] +000974BD: mov rsi, [rbp+var_10] +000974C1: mov edi, eax +000974C3: call _MAG_GetTemperatureData +000974C8: leave +000974C9: retn + +### FUNC 000974CA - 000974FA (48 bytes) name=_ZN10CMagDevice22GetTemperatureData_RawEPiji +000974CA: push rbp +000974CB: mov rbp, rsp +000974CE: sub rsp, 20h +000974D2: mov [rbp+var_8], rdi +000974D6: mov [rbp+var_10], rsi +000974DA: mov [rbp+var_14], edx +000974DD: mov [rbp+var_18], ecx +000974E0: mov rax, [rbp+var_8] +000974E4: mov eax, [rax+4] +000974E7: mov ecx, [rbp+var_18] +000974EA: mov edx, [rbp+var_14] +000974ED: mov rsi, [rbp+var_10] +000974F1: mov edi, eax +000974F3: call _MAG_GetTemperatureData_Raw +000974F8: leave +000974F9: retn + +### FUNC 000974FA - 00097528 (46 bytes) name=_ZN10CMagDevice19GetTemperatureProbeEjjj +000974FA: push rbp +000974FB: mov rbp, rsp +000974FE: sub rsp, 20h +00097502: mov [rbp+var_8], rdi +00097506: mov [rbp+var_C], esi +00097509: mov [rbp+var_10], edx +0009750C: mov [rbp+var_14], ecx +0009750F: mov rax, [rbp+var_8] +00097513: mov eax, [rax+4] +00097516: mov ecx, [rbp+var_14] +00097519: mov edx, [rbp+var_10] +0009751C: mov esi, [rbp+var_C] +0009751F: mov edi, eax +00097521: call _MAG_GetTemperatureProbe +00097526: leave +00097527: retn + +### FUNC 00097528 - 00097552 (42 bytes) name=_ZN10CMagDevice19GetTemperatureProbeEjj +00097528: push rbp +00097529: mov rbp, rsp +0009752C: sub rsp, 10h +00097530: mov [rbp+var_8], rdi +00097534: mov [rbp+var_C], esi +00097537: mov [rbp+var_10], edx +0009753A: mov rax, [rbp+var_8] +0009753E: mov eax, [rax+4] +00097541: mov edx, [rbp+var_10] +00097544: mov ecx, [rbp+var_C] +00097547: mov esi, ecx +00097549: mov edi, eax +0009754B: call _MAG_GetTemperatureProbe2 +00097550: leave +00097551: retn + +### FUNC 00097552 - 000975A1 (79 bytes) name=_ZN10CMagDevice22GetLineTemperatureInfoEPijS0_jjjj +00097552: push rbp +00097553: mov rbp, rsp +00097556: sub rsp, 40h +0009755A: mov [rbp+var_8], rdi +0009755E: mov [rbp+var_10], rsi +00097562: mov [rbp+var_14], edx +00097565: mov [rbp+var_20], rcx +00097569: mov [rbp+var_18], r8d +0009756D: mov [rbp+var_24], r9d +00097571: mov rax, [rbp+var_8] +00097575: mov eax, [rax+4] +00097578: mov r9d, [rbp+var_24] +0009757C: mov r8d, [rbp+var_18] +00097580: mov rcx, [rbp+var_20] +00097584: mov edx, [rbp+var_14] +00097587: mov rsi, [rbp+var_10] +0009758B: mov edi, [rbp+arg_8] +0009758E: mov [rsp+40h+var_38], edi +00097592: mov edi, [rbp+arg_0] +00097595: mov [rsp+40h+var_40], edi +00097598: mov edi, eax +0009759A: call _MAG_GetLineTemperatureInfo +0009759F: leave +000975A0: retn + +### FUNC 000975A2 - 000975E5 (67 bytes) name=_ZN10CMagDevice22GetRectTemperatureInfoEjjjjPi +000975A2: push rbp +000975A3: mov rbp, rsp +000975A6: sub rsp, 20h +000975AA: mov [rbp+var_8], rdi +000975AE: mov [rbp+var_C], esi +000975B1: mov [rbp+var_10], edx +000975B4: mov [rbp+var_14], ecx +000975B7: mov [rbp+var_18], r8d +000975BB: mov [rbp+var_20], r9 +000975BF: mov rax, [rbp+var_8] +000975C3: mov eax, [rax+4] +000975C6: mov r8, [rbp+var_20] +000975CA: mov edi, [rbp+var_18] +000975CD: mov ecx, [rbp+var_14] +000975D0: mov edx, [rbp+var_10] +000975D3: mov esi, [rbp+var_C] +000975D6: mov r9, r8 +000975D9: mov r8d, edi +000975DC: mov edi, eax +000975DE: call _MAG_GetRectTemperatureInfo +000975E3: leave +000975E4: retn + +### FUNC 000975E6 - 00097629 (67 bytes) name=_ZN10CMagDevice25GetEllipseTemperatureInfoEjjjjPi +000975E6: push rbp +000975E7: mov rbp, rsp +000975EA: sub rsp, 20h +000975EE: mov [rbp+var_8], rdi +000975F2: mov [rbp+var_C], esi +000975F5: mov [rbp+var_10], edx +000975F8: mov [rbp+var_14], ecx +000975FB: mov [rbp+var_18], r8d +000975FF: mov [rbp+var_20], r9 +00097603: mov rax, [rbp+var_8] +00097607: mov eax, [rax+4] +0009760A: mov r8, [rbp+var_20] +0009760E: mov edi, [rbp+var_18] +00097611: mov ecx, [rbp+var_14] +00097614: mov edx, [rbp+var_10] +00097617: mov esi, [rbp+var_C] +0009761A: mov r9, r8 +0009761D: mov r8d, edi +00097620: mov edi, eax +00097622: call _MAG_GetEllipseTemperatureInfo +00097627: leave +00097628: retn + +### FUNC 0009762A - 0009765C (50 bytes) name=_ZN10CMagDevice21GetRgnTemperatureInfoEPKjjPi +0009762A: push rbp +0009762B: mov rbp, rsp +0009762E: sub rsp, 20h +00097632: mov [rbp+var_8], rdi +00097636: mov [rbp+var_10], rsi +0009763A: mov [rbp+var_14], edx +0009763D: mov [rbp+var_20], rcx +00097641: mov rax, [rbp+var_8] +00097645: mov eax, [rax+4] +00097648: mov rcx, [rbp+var_20] +0009764C: mov edx, [rbp+var_14] +0009764F: mov rsi, [rbp+var_10] +00097653: mov edi, eax +00097655: call _MAG_GetRgnTemperatureInfo +0009765A: leave +0009765B: retn + +### FUNC 0009765C - 00097689 (45 bytes) name=_ZN10CMagDevice14SaveDDT2BufferEPvj +0009765C: push rbp +0009765D: mov rbp, rsp +00097660: sub rsp, 20h +00097664: mov [rbp+var_8], rdi +00097668: mov [rbp+var_10], rsi +0009766C: mov [rbp+var_14], edx +0009766F: mov rax, [rbp+var_8] +00097673: mov eax, [rax+4] +00097676: mov edx, [rbp+var_14] +00097679: mov rcx, [rbp+var_10] +0009767D: mov rsi, rcx +00097680: mov edi, eax +00097682: call _MAG_SaveDDT2Buffer +00097687: leave +00097688: retn + +### FUNC 0009768A - 00097723 (153 bytes) name=_ZN10CMagDevice15LoadBufferedDDTEP10OutputParaPKvjPFvjjjPvES4_ +0009768A: push rbp +0009768B: mov rbp, rsp +0009768E: sub rsp, 30h +00097692: mov [rbp+var_8], rdi +00097696: mov [rbp+var_10], rsi +0009769A: mov [rbp+var_18], rdx +0009769E: mov [rbp+var_1C], ecx +000976A1: mov [rbp+var_28], r8 +000976A5: mov [rbp+var_30], r9 +000976A9: mov rax, [rbp+var_8] +000976AD: mov eax, [rax+4] +000976B0: mov edi, eax +000976B2: call _MAG_IsProcessingImage +000976B7: test eax, eax +000976B9: setz al +000976BC: test al, al +000976BE: jz short loc_9771C +000976C0: mov rax, [rbp+var_8] +000976C4: mov eax, [rax+4] +000976C7: mov r8, [rbp+var_30] +000976CB: mov rdi, [rbp+var_28] +000976CF: mov ecx, [rbp+var_1C] +000976D2: mov rdx, [rbp+var_18] +000976D6: mov rsi, [rbp+var_10] +000976DA: mov r9, r8 +000976DD: mov r8, rdi +000976E0: mov edi, eax +000976E2: call _MAG_LoadBufferedDDT +000976E7: test eax, eax +000976E9: setz al +000976EC: test al, al +000976EE: jz short loc_976F7 +000976F0: mov eax, 0 +000976F5: jmp short locret_97721 +000976F7: mov rax, [rbp+var_8] +000976FB: lea rcx, [rax+8] +000976FF: mov rax, [rbp+var_8] +00097703: mov eax, [rax+4] +00097706: mov edx, 50h ; 'P' +0009770B: mov rsi, rcx +0009770E: mov edi, eax +00097710: call _MAG_GetCamInfo +00097715: mov eax, 1 +0009771A: jmp short locret_97721 +0009771C: mov eax, 0 +00097721: leave +00097722: retn + +### FUNC 00097724 - 00097750 (44 bytes) name=_ZN10CMagDevice7SaveBMPEjPKc +00097724: push rbp +00097725: mov rbp, rsp +00097728: sub rsp, 20h +0009772C: mov [rbp+var_8], rdi +00097730: mov [rbp+var_C], esi +00097733: mov [rbp+var_18], rdx +00097737: mov rax, [rbp+var_8] +0009773B: mov eax, [rax+4] +0009773E: mov rdx, [rbp+var_18] +00097742: mov ecx, [rbp+var_C] +00097745: mov esi, ecx +00097747: mov edi, eax +00097749: call _MAG_SaveBMP +0009774E: leave +0009774F: retn + +### FUNC 00097750 - 00097777 (39 bytes) name=_ZN10CMagDevice7SaveDDTEPKc +00097750: push rbp +00097751: mov rbp, rsp +00097754: sub rsp, 10h +00097758: mov [rbp+var_8], rdi +0009775C: mov [rbp+var_10], rsi +00097760: mov rax, [rbp+var_8] +00097764: mov eax, [rax+4] +00097767: mov rdx, [rbp+var_10] +0009776B: mov rsi, rdx +0009776E: mov edi, eax +00097770: call _MAG_SaveDDT +00097775: leave +00097776: retn + +### FUNC 00097778 - 00097808 (144 bytes) name=_ZN10CMagDevice7LoadDDTEP10OutputParaPKcPFvjjjPvES4_ +00097778: push rbp +00097779: mov rbp, rsp +0009777C: sub rsp, 30h +00097780: mov [rbp+var_8], rdi +00097784: mov [rbp+var_10], rsi +00097788: mov [rbp+var_18], rdx +0009778C: mov [rbp+var_20], rcx +00097790: mov [rbp+var_28], r8 +00097794: mov rax, [rbp+var_8] +00097798: mov eax, [rax+4] +0009779B: mov edi, eax +0009779D: call _MAG_IsProcessingImage +000977A2: test eax, eax +000977A4: setz al +000977A7: test al, al +000977A9: jz short loc_97801 +000977AB: mov rax, [rbp+var_8] +000977AF: mov eax, [rax+4] +000977B2: mov rdi, [rbp+var_28] +000977B6: mov rcx, [rbp+var_20] +000977BA: mov rdx, [rbp+var_18] +000977BE: mov rsi, [rbp+var_10] +000977C2: mov r8, rdi +000977C5: mov edi, eax +000977C7: call _MAG_LoadDDT +000977CC: test eax, eax +000977CE: setz al +000977D1: test al, al +000977D3: jz short loc_977DC +000977D5: mov eax, 0 +000977DA: jmp short locret_97806 +000977DC: mov rax, [rbp+var_8] +000977E0: lea rcx, [rax+8] +000977E4: mov rax, [rbp+var_8] +000977E8: mov eax, [rax+4] +000977EB: mov edx, 50h ; 'P' +000977F0: mov rsi, rcx +000977F3: mov edi, eax +000977F5: call _MAG_GetCamInfo +000977FA: mov eax, 1 +000977FF: jmp short locret_97806 +00097801: mov eax, 0 +00097806: leave +00097807: retn + +### FUNC 00097808 - 00097824 (28 bytes) name=_ZN10CMagDevice4LockEv +00097808: push rbp +00097809: mov rbp, rsp +0009780C: sub rsp, 10h +00097810: mov [rbp+var_8], rdi +00097814: mov rax, [rbp+var_8] +00097818: mov eax, [rax+4] +0009781B: mov edi, eax +0009781D: call _MAG_LockFrame +00097822: leave +00097823: retn + +### FUNC 00097824 - 00097840 (28 bytes) name=_ZN10CMagDevice6UnlockEv +00097824: push rbp +00097825: mov rbp, rsp +00097828: sub rsp, 10h +0009782C: mov [rbp+var_8], rdi +00097830: mov rax, [rbp+var_8] +00097834: mov eax, [rax+4] +00097837: mov edi, eax +00097839: call _MAG_UnLockFrame +0009783E: leave +0009783F: retn + +### FUNC 00097840 - 0009785C (28 bytes) name=_ZN10CMagDevice32GetCurrentCameraInnerTemperatureEv +00097840: push rbp +00097841: mov rbp, rsp +00097844: sub rsp, 10h +00097848: mov [rbp+var_8], rdi +0009784C: mov rax, [rbp+var_8] +00097850: mov eax, [rax+4] +00097853: mov edi, eax +00097855: call _MAG_GetCurrentCameraInnerTemperature +0009785A: leave +0009785B: retn + +### FUNC 0009785C - 00097878 (28 bytes) name=_ZN10CMagDevice20GetCameraTemperatureEv +0009785C: push rbp +0009785D: mov rbp, rsp +00097860: sub rsp, 10h +00097864: mov [rbp+var_8], rdi +00097868: mov rax, [rbp+var_8] +0009786C: mov eax, [rax+4] +0009786F: mov edi, eax +00097871: call _MAG_GetCameraTemperature +00097876: leave +00097877: retn + +### FUNC 00097878 - 00097894 (28 bytes) name=_ZN10CMagDevice19GetSenorTemperatureEv +00097878: push rbp +00097879: mov rbp, rsp +0009787C: sub rsp, 10h +00097880: mov [rbp+var_8], rdi +00097884: mov rax, [rbp+var_8] +00097888: mov eax, [rax+4] +0009788B: mov edi, eax +0009788D: call _MAG_GetSenorTemperature +00097892: leave +00097893: retn + +### FUNC 00097894 - 000978B8 (36 bytes) name=_ZN10CMagDevice27SetEstimateUnderArmTempModeE19BodyTempConvertMode +00097894: push rbp +00097895: mov rbp, rsp +00097898: sub rsp, 10h +0009789C: mov [rbp+var_8], rdi +000978A0: mov [rbp+var_C], esi +000978A3: mov rax, [rbp+var_8] +000978A7: mov eax, [rax+4] +000978AA: mov edx, [rbp+var_C] +000978AD: mov esi, edx +000978AF: mov edi, eax +000978B1: call _MAG_SetEstimateUnderArmTempMode +000978B6: leave +000978B7: retn + +### FUNC 000978B8 - 000978D4 (28 bytes) name=_ZN10CMagDevice27GetEstimateUnderArmTempModeEv +000978B8: push rbp +000978B9: mov rbp, rsp +000978BC: sub rsp, 10h +000978C0: mov [rbp+var_8], rdi +000978C4: mov rax, [rbp+var_8] +000978C8: mov eax, [rax+4] +000978CB: mov edi, eax +000978CD: call _MAG_GetEstimateUnderArmTempMode +000978D2: leave +000978D3: retn + +### FUNC 000978D4 - 000978F0 (28 bytes) name=_ZN10CMagDevice19GetEstimatedEnvTempEv +000978D4: push rbp +000978D5: mov rbp, rsp +000978D8: sub rsp, 10h +000978DC: mov [rbp+var_8], rdi +000978E0: mov rax, [rbp+var_8] +000978E4: mov eax, [rax+4] +000978E7: mov edi, eax +000978E9: call _MAG_GetEstimatedEnvTemp +000978EE: leave +000978EF: retn + +### FUNC 000978F0 - 00097928 (56 bytes) name=_ZN10CMagDevice36EstimateUnderArmTempFromForeheadRectEjjjj +000978F0: push rbp +000978F1: mov rbp, rsp +000978F4: sub rsp, 20h +000978F8: mov [rbp+var_8], rdi +000978FC: mov [rbp+var_C], esi +000978FF: mov [rbp+var_10], edx +00097902: mov [rbp+var_14], ecx +00097905: mov [rbp+var_18], r8d +00097909: mov rax, [rbp+var_8] +0009790D: mov eax, [rax+4] +00097910: mov edi, [rbp+var_18] +00097913: mov ecx, [rbp+var_14] +00097916: mov edx, [rbp+var_10] +00097919: mov esi, [rbp+var_C] +0009791C: mov r8d, edi +0009791F: mov edi, eax +00097921: call _MAG_EstimateUnderArmTempFromForeheadRect +00097926: leave +00097927: retn + +### FUNC 00097928 - 00097952 (42 bytes) name=_ZN10CMagDevice22SetEnvTempEstimateModeEii +00097928: push rbp +00097929: mov rbp, rsp +0009792C: sub rsp, 10h +00097930: mov [rbp+var_8], rdi +00097934: mov [rbp+var_C], esi +00097937: mov [rbp+var_10], edx +0009793A: mov rax, [rbp+var_8] +0009793E: mov eax, [rax+4] +00097941: mov edx, [rbp+var_10] +00097944: mov ecx, [rbp+var_C] +00097947: mov esi, ecx +00097949: mov edi, eax +0009794B: call _MAG_SetEnvTempEstimateMode +00097950: leave +00097951: retn + +### FUNC 00097952 - 000979AD (91 bytes) name=_ZN10CMagDevice13ConvertPos2XYEjPjS0_ +00097952: push rbp +00097953: mov rbp, rsp +00097956: mov [rbp+var_18], rdi +0009795A: mov [rbp+var_1C], esi +0009795D: mov [rbp+var_28], rdx +00097961: mov [rbp+var_30], rcx +00097965: mov rax, [rbp+var_18] +00097969: mov eax, [rax+8] +0009796C: mov [rbp+var_4], eax +0009796F: cmp [rbp+var_4], 0 +00097973: jz short loc_979AB +00097975: cmp [rbp+var_28], 0 +0009797A: jz short loc_979AB +0009797C: cmp [rbp+var_30], 0 +00097981: jz short loc_979AB +00097983: mov eax, [rbp+var_1C] +00097986: mov edx, 0 +0009798B: div [rbp+var_4] +0009798E: mov edx, eax +00097990: mov rax, [rbp+var_30] +00097994: mov [rax], edx +00097996: mov rax, [rbp+var_30] +0009799A: mov eax, [rax] +0009799C: imul eax, [rbp+var_4] +000979A0: mov edx, [rbp+var_1C] +000979A3: sub edx, eax +000979A5: mov rax, [rbp+var_28] +000979A9: mov [rax], edx +000979AB: pop rbp +000979AC: retn + +### FUNC 000979AE - 000979D0 (34 bytes) name=_ZN10CMagDevice13ConvertXY2PosEjj +000979AE: push rbp +000979AF: mov rbp, rsp +000979B2: mov [rbp+var_8], rdi +000979B6: mov [rbp+var_C], esi +000979B9: mov [rbp+var_10], edx +000979BC: mov rax, [rbp+var_8] +000979C0: mov eax, [rax+8] +000979C3: imul eax, [rbp+var_10] +000979C7: mov edx, eax +000979C9: mov eax, [rbp+var_C] +000979CC: add eax, edx +000979CE: pop rbp +000979CF: retn + +### FUNC 000979D0 - 000979EA (26 bytes) name=_ZN11CMagServiceC2Ev +000979D0: push rbp; Alternative name is 'CMagService::CMagService(void)' +000979D1: mov rbp, rsp +000979D4: sub rsp, 10h +000979D8: mov [rbp+var_8], rdi +000979DC: mov rax, [rbp+var_8] +000979E0: mov rdi, rax; this +000979E3: call __ZN11CMagService10InitializeEv; CMagService::Initialize(void) +000979E8: leave +000979E9: retn + +### FUNC 000979EA - 00097A3F (85 bytes) name=_ZN11CMagServiceD2Ev +000979EA: push rbp; Alternative name is 'CMagService::~CMagService()' +000979EB: mov rbp, rsp +000979EE: sub rsp, 10h +000979F2: mov [rbp+var_8], rdi +000979F6: mov edi, 0 +000979FB: call _MAG_IsInitialized +00097A00: test eax, eax +00097A02: setnz al +00097A05: test al, al +00097A07: jz short loc_97A13 +00097A09: mov edi, 0 +00097A0E: call _MAG_Free +00097A13: mov edi, 0 +00097A18: call _MAG_IsChannelAvailable +00097A1D: test eax, eax +00097A1F: setnz al +00097A22: test al, al +00097A24: jz short loc_97A30 +00097A26: mov edi, 0 +00097A2B: call _MAG_DelChannel +00097A30: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097A37: mov dword ptr [rax], 0 +00097A3D: leave +00097A3E: retn + +### FUNC 00097A40 - 00097AB2 (114 bytes) name=_ZN11CMagService10InitializeEv +00097A40: push rbp +00097A41: mov rbp, rsp +00097A44: sub rsp, 10h +00097A48: mov [rbp+var_8], rdi +00097A4C: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097A53: mov eax, [rax] +00097A55: test eax, eax +00097A57: jz short loc_97A60 +00097A59: mov eax, 1 +00097A5E: jmp short locret_97AB0 +00097A60: mov edi, 0 +00097A65: call _MAG_IsChannelAvailable +00097A6A: test eax, eax +00097A6C: setz al +00097A6F: test al, al +00097A71: jz short loc_97A8D +00097A73: mov edi, 0 +00097A78: call _MAG_NewChannel +00097A7D: test eax, eax +00097A7F: setz al +00097A82: test al, al +00097A84: jz short loc_97A8D +00097A86: mov eax, 0 +00097A8B: jmp short locret_97AB0 +00097A8D: mov esi, 0 +00097A92: mov edi, 0 +00097A97: call _MAG_Initialize +00097A9C: mov edx, eax +00097A9E: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097AA5: mov [rax], edx +00097AA7: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097AAE: mov eax, [rax] +00097AB0: leave +00097AB1: retn + +### FUNC 00097AB2 - 00097AF2 (64 bytes) name=_ZN11CMagService11EnumCamerasEv +00097AB2: push rbp +00097AB3: mov rbp, rsp +00097AB6: sub rsp, 10h +00097ABA: mov [rbp+var_8], rdi +00097ABE: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097AC5: mov eax, [rax] +00097AC7: test eax, eax +00097AC9: jnz short loc_97AD7 +00097ACB: mov rax, [rbp+var_8] +00097ACF: mov rdi, rax; this +00097AD2: call __ZN11CMagService10InitializeEv; CMagService::Initialize(void) +00097AD7: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097ADE: mov eax, [rax] +00097AE0: test eax, eax +00097AE2: jz short loc_97AEB +00097AE4: call _MAG_EnumCameras +00097AE9: jmp short locret_97AF0 +00097AEB: mov eax, 0 +00097AF0: leave +00097AF1: retn + +### FUNC 00097AF2 - 00097B23 (49 bytes) name=_ZN11CMagService16GetTerminalCountEv +00097AF2: push rbp +00097AF3: mov rbp, rsp +00097AF6: sub rsp, 10h +00097AFA: mov [rbp+var_8], rdi +00097AFE: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097B05: mov eax, [rax] +00097B07: test eax, eax +00097B09: jz short loc_97B1C +00097B0B: mov esi, 0 +00097B10: mov edi, 0 +00097B15: call _MAG_GetTerminalList +00097B1A: jmp short locret_97B21 +00097B1C: mov eax, 0 +00097B21: leave +00097B22: retn + +### FUNC 00097B24 - 00097B5E (58 bytes) name=_ZN11CMagService15GetTerminalListEP19struct_TerminalListj +00097B24: push rbp +00097B25: mov rbp, rsp +00097B28: sub rsp, 20h +00097B2C: mov [rbp+var_8], rdi +00097B30: mov [rbp+var_10], rsi +00097B34: mov [rbp+var_14], edx +00097B37: mov rax, cs:_ZN11CMagService14m_bInitializedE_ptr +00097B3E: mov eax, [rax] +00097B40: test eax, eax +00097B42: jz short loc_97B57 +00097B44: mov edx, [rbp+var_14] +00097B47: mov rax, [rbp+var_10] +00097B4B: mov esi, edx +00097B4D: mov rdi, rax +00097B50: call _MAG_GetTerminalList +00097B55: jmp short locret_97B5C +00097B57: mov eax, 0 +00097B5C: leave +00097B5D: retn + +### FUNC 00097B5E - 00097BCB (109 bytes) name=_ZN13TCMPresetDataC2Ev +00097B5E: push rbp; Alternative name is 'TCMPresetData::TCMPresetData(void)' +00097B5F: mov rbp, rsp +00097B62: push rbx +00097B63: sub rsp, 18h +00097B67: mov [rbp+var_18], rdi +00097B6B: mov rax, [rbp+var_18] +00097B6F: mov rdi, rax +00097B72: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +00097B77: mov rax, [rbp+var_18] +00097B7B: add rax, 28h ; '(' +00097B7F: mov rdi, rax; this +00097B82: call __ZNSsC1Ev; std::string::string(void) +00097B87: mov rax, [rbp+var_18] +00097B8B: mov rdi, rax; this +00097B8E: call __ZN13TCMPresetData12resetDefaultEv; TCMPresetData::resetDefault(void) +00097B93: jmp short loc_97BC4 +00097B95: mov rbx, rax +00097B98: mov rax, [rbp+var_18] +00097B9C: add rax, 28h ; '(' +00097BA0: mov rdi, rax; this +00097BA3: call __ZNSsD1Ev; std::string::~string() +00097BA8: jmp short loc_97BAD +00097BAA: mov rbx, rax +00097BAD: mov rax, [rbp+var_18] +00097BB1: mov rdi, rax +00097BB4: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +00097BB9: mov rax, rbx +00097BBC: mov rdi, rax; struct _Unwind_Exception * +00097BBF: call __Unwind_Resume +00097BC4: add rsp, 18h +00097BC8: pop rbx +00097BC9: pop rbp +00097BCA: retn + +### FUNC 00097BCC - 00097C5C (144 bytes) name=_ZN13TCMPresetDataC2ESt6vectorIhSaIhEE +00097BCC: push rbp; Alternative name is 'TCMPresetData::TCMPresetData(std::vector>)' +00097BCD: mov rbp, rsp +00097BD0: push rbx +00097BD1: sub rsp, 18h +00097BD5: mov [rbp+var_18], rdi +00097BD9: mov [rbp+var_20], rsi +00097BDD: mov rax, [rbp+var_18] +00097BE1: mov rdi, rax +00097BE4: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +00097BE9: mov rax, [rbp+var_18] +00097BED: add rax, 28h ; '(' +00097BF1: mov rdi, rax; this +00097BF4: call __ZNSsC1Ev; std::string::string(void) +00097BF9: mov rax, [rbp+var_18] +00097BFD: mov rdi, rax; this +00097C00: call __ZN13TCMPresetData12resetDefaultEv; TCMPresetData::resetDefault(void) +00097C05: mov rax, [rbp+var_18] +00097C09: mov rdx, [rbp+var_20] +00097C0D: mov rsi, rdx +00097C10: mov rdi, rax +00097C13: call __ZNSt6vectorIhSaIhEEaSERKS1_; std::vector>::operator=(std::vector> const&) +00097C18: mov rax, [rbp+var_18] +00097C1C: mov rdi, rax; this +00097C1F: call __ZN13TCMPresetData8decodingEv; TCMPresetData::decoding(void) +00097C24: jmp short loc_97C55 +00097C26: mov rbx, rax +00097C29: mov rax, [rbp+var_18] +00097C2D: add rax, 28h ; '(' +00097C31: mov rdi, rax; this +00097C34: call __ZNSsD1Ev; std::string::~string() +00097C39: jmp short loc_97C3E +00097C3B: mov rbx, rax +00097C3E: mov rax, [rbp+var_18] +00097C42: mov rdi, rax +00097C45: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +00097C4A: mov rax, rbx +00097C4D: mov rdi, rax; struct _Unwind_Exception * +00097C50: call __Unwind_Resume +00097C55: add rsp, 18h +00097C59: pop rbx +00097C5A: pop rbp +00097C5B: retn + +### FUNC 00097C5C - 00097CC2 (102 bytes) name=_ZN13TCMPresetData12resetDefaultEv +00097C5C: push rbp +00097C5D: mov rbp, rsp +00097C60: sub rsp, 20h +00097C64: mov [rbp+var_18], rdi +00097C68: mov [rbp+var_1], 0FFh +00097C6C: mov rax, cs:_ZN13TCMPresetData9DATA_SIZEE_ptr +00097C73: mov eax, [rax] +00097C75: movsxd rcx, eax +00097C78: mov rax, [rbp+var_18] +00097C7C: lea rdx, [rbp+var_1] +00097C80: mov rsi, rcx +00097C83: mov rdi, rax +00097C86: call __ZNSt6vectorIhSaIhEE6resizeEmRKh; std::vector>::resize(ulong,uchar const&) +00097C8B: mov rax, [rbp+var_18] +00097C8F: mov byte ptr [rax+18h], 0 +00097C93: mov rax, [rbp+var_18] +00097C97: mov dword ptr [rax+1Ch], 0 +00097C9E: mov rax, [rbp+var_18] +00097CA2: mov dword ptr [rax+20h], 0 +00097CA9: mov rax, [rbp+var_18] +00097CAD: add rax, 28h ; '(' +00097CB1: lea rsi, unk_CE771 +00097CB8: mov rdi, rax +00097CBB: call __ZNSsaSEPKc; std::string::operator=(char const*) +00097CC0: leave +00097CC1: retn + +### FUNC 00097CC2 - 00097CD0 (14 bytes) name=_ZN13TCMPresetData10getRawDataEv +00097CC2: push rbp +00097CC3: mov rbp, rsp +00097CC6: mov [rbp+var_8], rdi +00097CCA: mov rax, [rbp+var_8] +00097CCE: pop rbp +00097CCF: retn + +### FUNC 00097CD0 - 00097CEE (30 bytes) name=_ZN13TCMPresetData7getDataEv +00097CD0: push rbp +00097CD1: mov rbp, rsp +00097CD4: sub rsp, 10h +00097CD8: mov [rbp+var_8], rdi +00097CDC: mov rax, [rbp+var_8] +00097CE0: mov rdi, rax; this +00097CE3: call __ZN13TCMPresetData8encodingEv; TCMPresetData::encoding(void) +00097CE8: mov rax, [rbp+var_8] +00097CEC: leave +00097CED: retn + +### FUNC 00097CEE - 00097D05 (23 bytes) name=_ZN13TCMPresetData10setOffsetXEi +00097CEE: push rbp +00097CEF: mov rbp, rsp +00097CF2: mov [rbp+var_8], rdi +00097CF6: mov [rbp+var_C], esi +00097CF9: mov rax, [rbp+var_8] +00097CFD: mov edx, [rbp+var_C] +00097D00: mov [rax+1Ch], edx +00097D03: pop rbp +00097D04: retn + +### FUNC 00097D06 - 00097D1D (23 bytes) name=_ZN13TCMPresetData10setOffsetYEi +00097D06: push rbp +00097D07: mov rbp, rsp +00097D0A: mov [rbp+var_8], rdi +00097D0E: mov [rbp+var_C], esi +00097D11: mov rax, [rbp+var_8] +00097D15: mov edx, [rbp+var_C] +00097D18: mov [rax+20h], edx +00097D1B: pop rbp +00097D1C: retn + +### FUNC 00097D1E - 00097D47 (41 bytes) name=_ZN13TCMPresetData9setSerialESs +00097D1E: push rbp +00097D1F: mov rbp, rsp +00097D22: sub rsp, 10h +00097D26: mov [rbp+var_8], rdi +00097D2A: mov [rbp+var_10], rsi +00097D2E: mov rax, [rbp+var_8] +00097D32: lea rdx, [rax+28h] +00097D36: mov rax, [rbp+var_10] +00097D3A: mov rsi, rax +00097D3D: mov rdi, rdx +00097D40: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +00097D45: leave +00097D46: retn + +### FUNC 00097D48 - 00097D59 (17 bytes) name=_ZN13TCMPresetData10getOffsetXEv +00097D48: push rbp +00097D49: mov rbp, rsp +00097D4C: mov [rbp+var_8], rdi +00097D50: mov rax, [rbp+var_8] +00097D54: mov eax, [rax+1Ch] +00097D57: pop rbp +00097D58: retn + +### FUNC 00097D5A - 00097D6B (17 bytes) name=_ZN13TCMPresetData10getOffsetYEv +00097D5A: push rbp +00097D5B: mov rbp, rsp +00097D5E: mov [rbp+var_8], rdi +00097D62: mov rax, [rbp+var_8] +00097D66: mov eax, [rax+20h] +00097D69: pop rbp +00097D6A: retn + +### FUNC 00097D6C - 00097D7E (18 bytes) name=_ZN13TCMPresetData9getSerialEv +00097D6C: push rbp +00097D6D: mov rbp, rsp +00097D70: mov [rbp+var_8], rdi +00097D74: mov rax, [rbp+var_8] +00097D78: add rax, 28h ; '(' +00097D7C: pop rbp +00097D7D: retn + +### FUNC 00097D7E - 00097D90 (18 bytes) name=_ZN13TCMPresetData7isValidEv +00097D7E: push rbp +00097D7F: mov rbp, rsp +00097D82: mov [rbp+var_8], rdi +00097D86: mov rax, [rbp+var_8] +00097D8A: movzx eax, byte ptr [rax+18h] +00097D8E: pop rbp +00097D8F: retn + +### FUNC 00097D90 - 00098038 (680 bytes) name=_ZN13TCMPresetData8encodingEv +00097D90: push rbp +00097D91: mov rbp, rsp +00097D94: push rbx +00097D95: sub rsp, 28h +00097D99: mov [rbp+var_28], rdi +00097D9D: mov [rbp+var_14], 0 +00097DA4: mov eax, [rbp+var_14] +00097DA7: lea edx, [rax+1] +00097DAA: mov [rbp+var_14], edx +00097DAD: movsxd rdx, eax +00097DB0: mov rax, [rbp+var_28] +00097DB4: mov rsi, rdx +00097DB7: mov rdi, rax +00097DBA: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097DBF: mov byte ptr [rax], 45h ; 'E' +00097DC2: mov eax, [rbp+var_14] +00097DC5: lea edx, [rax+1] +00097DC8: mov [rbp+var_14], edx +00097DCB: movsxd rdx, eax +00097DCE: mov rax, [rbp+var_28] +00097DD2: mov rsi, rdx +00097DD5: mov rdi, rax +00097DD8: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097DDD: mov byte ptr [rax], 4Ch ; 'L' +00097DE0: mov eax, [rbp+var_14] +00097DE3: lea edx, [rax+1] +00097DE6: mov [rbp+var_14], edx +00097DE9: movsxd rdx, eax +00097DEC: mov rax, [rbp+var_28] +00097DF0: mov rsi, rdx +00097DF3: mov rdi, rax +00097DF6: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097DFB: mov byte ptr [rax], 4Fh ; 'O' +00097DFE: mov eax, [rbp+var_14] +00097E01: lea edx, [rax+1] +00097E04: mov [rbp+var_14], edx +00097E07: movsxd rdx, eax +00097E0A: mov rax, [rbp+var_28] +00097E0E: mov rsi, rdx +00097E11: mov rdi, rax +00097E14: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097E19: mov rdx, cs:_ZN13TCMPresetData7VERSIONE_ptr +00097E20: movzx edx, byte ptr [rdx] +00097E23: mov [rax], dl +00097E25: mov eax, [rbp+var_14] +00097E28: lea edx, [rax+1] +00097E2B: mov [rbp+var_14], edx +00097E2E: movsxd rdx, eax +00097E31: mov rax, [rbp+var_28] +00097E35: mov rsi, rdx +00097E38: mov rdi, rax +00097E3B: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097E40: mov rdx, [rbp+var_28] +00097E44: mov edx, [rdx+1Ch] +00097E47: shr edx, 18h +00097E4A: mov [rax], dl +00097E4C: mov eax, [rbp+var_14] +00097E4F: lea edx, [rax+1] +00097E52: mov [rbp+var_14], edx +00097E55: movsxd rdx, eax +00097E58: mov rax, [rbp+var_28] +00097E5C: mov rsi, rdx +00097E5F: mov rdi, rax +00097E62: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097E67: mov rdx, [rbp+var_28] +00097E6B: mov edx, [rdx+1Ch] +00097E6E: sar edx, 10h +00097E71: mov [rax], dl +00097E73: mov eax, [rbp+var_14] +00097E76: lea edx, [rax+1] +00097E79: mov [rbp+var_14], edx +00097E7C: movsxd rdx, eax +00097E7F: mov rax, [rbp+var_28] +00097E83: mov rsi, rdx +00097E86: mov rdi, rax +00097E89: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097E8E: mov rdx, [rbp+var_28] +00097E92: mov edx, [rdx+1Ch] +00097E95: sar edx, 8 +00097E98: mov [rax], dl +00097E9A: mov eax, [rbp+var_14] +00097E9D: lea edx, [rax+1] +00097EA0: mov [rbp+var_14], edx +00097EA3: movsxd rdx, eax +00097EA6: mov rax, [rbp+var_28] +00097EAA: mov rsi, rdx +00097EAD: mov rdi, rax +00097EB0: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097EB5: mov rdx, [rbp+var_28] +00097EB9: mov edx, [rdx+1Ch] +00097EBC: mov [rax], dl +00097EBE: mov eax, [rbp+var_14] +00097EC1: lea edx, [rax+1] +00097EC4: mov [rbp+var_14], edx +00097EC7: movsxd rdx, eax +00097ECA: mov rax, [rbp+var_28] +00097ECE: mov rsi, rdx +00097ED1: mov rdi, rax +00097ED4: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097ED9: mov rdx, [rbp+var_28] +00097EDD: mov edx, [rdx+20h] +00097EE0: shr edx, 18h +00097EE3: mov [rax], dl +00097EE5: mov eax, [rbp+var_14] +00097EE8: lea edx, [rax+1] +00097EEB: mov [rbp+var_14], edx +00097EEE: movsxd rdx, eax +00097EF1: mov rax, [rbp+var_28] +00097EF5: mov rsi, rdx +00097EF8: mov rdi, rax +00097EFB: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097F00: mov rdx, [rbp+var_28] +00097F04: mov edx, [rdx+20h] +00097F07: sar edx, 10h +00097F0A: mov [rax], dl +00097F0C: mov eax, [rbp+var_14] +00097F0F: lea edx, [rax+1] +00097F12: mov [rbp+var_14], edx +00097F15: movsxd rdx, eax +00097F18: mov rax, [rbp+var_28] +00097F1C: mov rsi, rdx +00097F1F: mov rdi, rax +00097F22: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097F27: mov rdx, [rbp+var_28] +00097F2B: mov edx, [rdx+20h] +00097F2E: sar edx, 8 +00097F31: mov [rax], dl +00097F33: mov eax, [rbp+var_14] +00097F36: lea edx, [rax+1] +00097F39: mov [rbp+var_14], edx +00097F3C: movsxd rdx, eax +00097F3F: mov rax, [rbp+var_28] +00097F43: mov rsi, rdx +00097F46: mov rdi, rax +00097F49: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097F4E: mov rdx, [rbp+var_28] +00097F52: mov edx, [rdx+20h] +00097F55: mov [rax], dl +00097F57: mov [rbp+var_18], 0 +00097F5E: jmp short loc_97FDF +00097F60: mov eax, [rbp+var_18] +00097F63: movsxd rbx, eax +00097F66: mov rax, [rbp+var_28] +00097F6A: add rax, 28h ; '(' +00097F6E: mov rdi, rax; this +00097F71: call __ZNKSs4sizeEv; std::string::size(void) +00097F76: cmp rbx, rax +00097F79: setb al +00097F7C: test al, al +00097F7E: jz short loc_97FBD +00097F80: mov eax, [rbp+var_14] +00097F83: lea edx, [rax+1] +00097F86: mov [rbp+var_14], edx +00097F89: movsxd rdx, eax +00097F8C: mov rax, [rbp+var_28] +00097F90: mov rsi, rdx +00097F93: mov rdi, rax +00097F96: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097F9B: mov rbx, rax +00097F9E: mov eax, [rbp+var_18] +00097FA1: cdqe +00097FA3: mov rdx, [rbp+var_28] +00097FA7: add rdx, 28h ; '(' +00097FAB: mov rsi, rax +00097FAE: mov rdi, rdx +00097FB1: call __ZNSsixEm; std::string::operator[](ulong) +00097FB6: movzx eax, byte ptr [rax] +00097FB9: mov [rbx], al +00097FBB: jmp short loc_97FDB +00097FBD: mov eax, [rbp+var_14] +00097FC0: lea edx, [rax+1] +00097FC3: mov [rbp+var_14], edx +00097FC6: movsxd rdx, eax +00097FC9: mov rax, [rbp+var_28] +00097FCD: mov rsi, rdx +00097FD0: mov rdi, rax +00097FD3: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00097FD8: mov byte ptr [rax], 0 +00097FDB: add [rbp+var_18], 1 +00097FDF: mov rax, cs:_ZN13TCMPresetData13SERIAL_LENGTHE_ptr +00097FE6: mov eax, [rax] +00097FE8: cmp [rbp+var_18], eax +00097FEB: jl loc_97F60 +00097FF1: mov eax, [rbp+var_14] +00097FF4: mov [rbp+var_1C], eax +00097FF7: jmp short loc_98015 +00097FF9: mov eax, [rbp+var_1C] +00097FFC: movsxd rdx, eax +00097FFF: mov rax, [rbp+var_28] +00098003: mov rsi, rdx +00098006: mov rdi, rax +00098009: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +0009800E: mov byte ptr [rax], 0FFh +00098011: add [rbp+var_1C], 1 +00098015: mov eax, [rbp+var_1C] +00098018: movsxd rbx, eax +0009801B: mov rax, [rbp+var_28] +0009801F: mov rdi, rax +00098022: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00098027: cmp rbx, rax +0009802A: setb al +0009802D: test al, al +0009802F: jnz short loc_97FF9 +00098031: add rsp, 28h +00098035: pop rbx +00098036: pop rbp +00098037: retn + +### FUNC 00098038 - 000982ED (693 bytes) name=_ZN13TCMPresetData8decodingEv +00098038: push rbp +00098039: mov rbp, rsp +0009803C: sub rsp, 20h +00098040: mov [rbp+var_18], rdi +00098044: mov rax, [rbp+var_18] +00098048: mov esi, 0 +0009804D: mov rdi, rax +00098050: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00098055: movzx eax, byte ptr [rax] +00098058: cmp al, 45h ; 'E' +0009805A: jnz short loc_9808C +0009805C: mov rax, [rbp+var_18] +00098060: mov esi, 1 +00098065: mov rdi, rax +00098068: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +0009806D: movzx eax, byte ptr [rax] +00098070: cmp al, 4Ch ; 'L' +00098072: jnz short loc_9808C +00098074: mov rax, [rbp+var_18] +00098078: mov esi, 2 +0009807D: mov rdi, rax +00098080: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00098085: movzx eax, byte ptr [rax] +00098088: cmp al, 4Fh ; 'O' +0009808A: jz short loc_98093 +0009808C: mov eax, 1 +00098091: jmp short loc_98098 +00098093: mov eax, 0 +00098098: test al, al +0009809A: jz short loc_980A1 +0009809C: jmp locret_982EB +000980A1: mov rax, [rbp+var_18] +000980A5: mov esi, 3 +000980AA: mov rdi, rax +000980AD: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000980B2: movzx edx, byte ptr [rax] +000980B5: mov rax, cs:_ZN13TCMPresetData7VERSIONE_ptr +000980BC: movzx eax, byte ptr [rax] +000980BF: cmp dl, al +000980C1: jnb short loc_980DC +000980C3: mov rax, [rbp+var_18] +000980C7: mov esi, 3 +000980CC: mov rdi, rax +000980CF: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000980D4: movzx eax, byte ptr [rax] +000980D7: movzx eax, al +000980DA: jmp short loc_980E9 +000980DC: mov rax, cs:_ZN13TCMPresetData7VERSIONE_ptr +000980E3: movzx eax, byte ptr [rax] +000980E6: movzx eax, al +000980E9: mov [rbp+var_8], eax +000980EC: cmp [rbp+var_8], 0 +000980F0: jle loc_982E3 +000980F6: mov rax, [rbp+var_18] +000980FA: mov dword ptr [rax+1Ch], 0 +00098101: mov rax, [rbp+var_18] +00098105: mov esi, 4 +0009810A: mov rdi, rax +0009810D: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00098112: movzx eax, byte ptr [rax] +00098115: movzx eax, al +00098118: shl eax, 18h +0009811B: mov edx, eax +0009811D: mov rax, [rbp+var_18] +00098121: mov eax, [rax+1Ch] +00098124: or edx, eax +00098126: mov rax, [rbp+var_18] +0009812A: mov [rax+1Ch], edx +0009812D: mov rax, [rbp+var_18] +00098131: mov esi, 5 +00098136: mov rdi, rax +00098139: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +0009813E: movzx eax, byte ptr [rax] +00098141: movzx eax, al +00098144: shl eax, 10h +00098147: mov edx, eax +00098149: mov rax, [rbp+var_18] +0009814D: mov eax, [rax+1Ch] +00098150: or edx, eax +00098152: mov rax, [rbp+var_18] +00098156: mov [rax+1Ch], edx +00098159: mov rax, [rbp+var_18] +0009815D: mov esi, 6 +00098162: mov rdi, rax +00098165: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +0009816A: movzx eax, byte ptr [rax] +0009816D: movzx eax, al +00098170: shl eax, 8 +00098173: mov edx, eax +00098175: mov rax, [rbp+var_18] +00098179: mov eax, [rax+1Ch] +0009817C: or edx, eax +0009817E: mov rax, [rbp+var_18] +00098182: mov [rax+1Ch], edx +00098185: mov rax, [rbp+var_18] +00098189: mov esi, 7 +0009818E: mov rdi, rax +00098191: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00098196: movzx eax, byte ptr [rax] +00098199: movzx edx, al +0009819C: mov rax, [rbp+var_18] +000981A0: mov eax, [rax+1Ch] +000981A3: or edx, eax +000981A5: mov rax, [rbp+var_18] +000981A9: mov [rax+1Ch], edx +000981AC: mov rax, [rbp+var_18] +000981B0: mov dword ptr [rax+20h], 0 +000981B7: mov rax, [rbp+var_18] +000981BB: mov esi, 8 +000981C0: mov rdi, rax +000981C3: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000981C8: movzx eax, byte ptr [rax] +000981CB: movzx eax, al +000981CE: shl eax, 18h +000981D1: mov edx, eax +000981D3: mov rax, [rbp+var_18] +000981D7: mov eax, [rax+20h] +000981DA: or edx, eax +000981DC: mov rax, [rbp+var_18] +000981E0: mov [rax+20h], edx +000981E3: mov rax, [rbp+var_18] +000981E7: mov esi, 9 +000981EC: mov rdi, rax +000981EF: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000981F4: movzx eax, byte ptr [rax] +000981F7: movzx eax, al +000981FA: shl eax, 10h +000981FD: mov edx, eax +000981FF: mov rax, [rbp+var_18] +00098203: mov eax, [rax+20h] +00098206: or edx, eax +00098208: mov rax, [rbp+var_18] +0009820C: mov [rax+20h], edx +0009820F: mov rax, [rbp+var_18] +00098213: mov esi, 0Ah +00098218: mov rdi, rax +0009821B: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00098220: movzx eax, byte ptr [rax] +00098223: movzx eax, al +00098226: shl eax, 8 +00098229: mov edx, eax +0009822B: mov rax, [rbp+var_18] +0009822F: mov eax, [rax+20h] +00098232: or edx, eax +00098234: mov rax, [rbp+var_18] +00098238: mov [rax+20h], edx +0009823B: mov rax, [rbp+var_18] +0009823F: mov esi, 0Bh +00098244: mov rdi, rax +00098247: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +0009824C: movzx eax, byte ptr [rax] +0009824F: movzx edx, al +00098252: mov rax, [rbp+var_18] +00098256: mov eax, [rax+20h] +00098259: or edx, eax +0009825B: mov rax, [rbp+var_18] +0009825F: mov [rax+20h], edx +00098262: mov rax, [rbp+var_18] +00098266: add rax, 28h ; '(' +0009826A: mov rdi, rax; this +0009826D: call __ZNSs5clearEv; std::string::clear(void) +00098272: mov [rbp+var_4], 0 +00098279: jmp short loc_982D5 +0009827B: mov eax, [rbp+var_4] +0009827E: add eax, 0Ch +00098281: movsxd rdx, eax +00098284: mov rax, [rbp+var_18] +00098288: mov rsi, rdx +0009828B: mov rdi, rax +0009828E: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +00098293: movzx eax, byte ptr [rax] +00098296: test al, al +00098298: setz al +0009829B: test al, al +0009829D: jz short loc_982A1 +0009829F: jmp short loc_982E3 +000982A1: mov eax, [rbp+var_4] +000982A4: add eax, 0Ch +000982A7: movsxd rdx, eax +000982AA: mov rax, [rbp+var_18] +000982AE: mov rsi, rdx +000982B1: mov rdi, rax +000982B4: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000982B9: movzx eax, byte ptr [rax] +000982BC: movsx eax, al +000982BF: mov rdx, [rbp+var_18] +000982C3: add rdx, 28h ; '(' +000982C7: mov esi, eax; char +000982C9: mov rdi, rdx; this +000982CC: call __ZNSs9push_backEc; std::string::push_back(char) +000982D1: add [rbp+var_4], 1 +000982D5: mov rax, cs:_ZN13TCMPresetData13SERIAL_LENGTHE_ptr +000982DC: mov eax, [rax] +000982DE: cmp [rbp+var_4], eax +000982E1: jl short loc_9827B +000982E3: mov rax, [rbp+var_18] +000982E7: mov byte ptr [rax+18h], 1 +000982EB: leave +000982EC: retn + +### FUNC 000982ED - 000982F8 (11 bytes) name=_ZN9__gnu_cxx14__alloc_traitsISaIhEE27_S_propagate_on_copy_assignEv +000982ED: push rbp +000982EE: mov rbp, rsp +000982F1: mov eax, 0 +000982F6: pop rbp +000982F7: retn + +### FUNC 000982F8 - 00098303 (11 bytes) name=_ZN9__gnu_cxx14__alloc_traitsISaIhEE15_S_always_equalEv +000982F8: push rbp +000982F9: mov rbp, rsp +000982FC: mov eax, 1 +00098301: pop rbp +00098302: retn + +### FUNC 00098304 - 000985FF (763 bytes) name=_ZNSt6vectorIhSaIhEEaSERKS1_ +00098304: push rbp +00098305: mov rbp, rsp +00098308: push r14 +0009830A: push r13 +0009830C: push r12 +0009830E: push rbx +0009830F: sub rsp, 20h +00098313: mov [rbp+var_38], rdi +00098317: mov [rbp+var_40], rsi +0009831B: mov rax, [rbp+var_40] +0009831F: cmp rax, [rbp+var_38] +00098323: jz loc_985EE +00098329: call __ZN9__gnu_cxx14__alloc_traitsISaIhEE27_S_propagate_on_copy_assignEv; __gnu_cxx::__alloc_traits>::_S_propagate_on_copy_assign(void) +0009832E: test al, al +00098330: jz loc_98402 +00098336: call __ZN9__gnu_cxx14__alloc_traitsISaIhEE15_S_always_equalEv; __gnu_cxx::__alloc_traits>::_S_always_equal(void) +0009833B: xor eax, 1 +0009833E: test al, al +00098340: jz short loc_98373 +00098342: mov rax, [rbp+var_40] +00098346: mov rdi, rax +00098349: call __ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009834E: mov rbx, rax +00098351: mov rax, [rbp+var_38] +00098355: mov rdi, rax +00098358: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009835D: mov rsi, rbx +00098360: mov rdi, rax +00098363: call __ZStneIhEbRKSaIT_ES3_; std::operator!=(std::allocator const&,std::allocator const&) +00098368: test al, al +0009836A: jz short loc_98373 +0009836C: mov eax, 1 +00098371: jmp short loc_98378 +00098373: mov eax, 0 +00098378: test al, al +0009837A: jz short loc_983DC +0009837C: mov rax, [rbp+var_38] +00098380: mov rdi, rax +00098383: call __ZNSt6vectorIhSaIhEE5clearEv; std::vector>::clear(void) +00098388: mov rax, [rbp+var_38] +0009838C: mov rax, [rax+10h] +00098390: mov rdx, rax +00098393: mov rax, [rbp+var_38] +00098397: mov rax, [rax] +0009839A: sub rdx, rax +0009839D: mov rax, rdx +000983A0: mov rdx, rax +000983A3: mov rax, [rbp+var_38] +000983A7: mov rcx, [rax] +000983AA: mov rax, [rbp+var_38] +000983AE: mov rsi, rcx +000983B1: mov rdi, rax +000983B4: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000983B9: mov rax, [rbp+var_38] +000983BD: mov qword ptr [rax], 0 +000983C4: mov rax, [rbp+var_38] +000983C8: mov qword ptr [rax+8], 0 +000983D0: mov rax, [rbp+var_38] +000983D4: mov qword ptr [rax+10h], 0 +000983DC: mov rax, [rbp+var_40] +000983E0: mov rdi, rax +000983E3: call __ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000983E8: mov rbx, rax +000983EB: mov rax, [rbp+var_38] +000983EF: mov rdi, rax +000983F2: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000983F7: mov rsi, rbx +000983FA: mov rdi, rax +000983FD: call __ZSt15__alloc_on_copyISaIhEEvRT_RKS1_; std::__alloc_on_copy>(std::allocator &,std::allocator const&) +00098402: mov rax, [rbp+var_40] +00098406: mov rdi, rax +00098409: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +0009840E: mov [rbp+var_28], rax +00098412: mov rax, [rbp+var_38] +00098416: mov rdi, rax +00098419: call __ZNKSt6vectorIhSaIhEE8capacityEv; std::vector>::capacity(void) +0009841E: cmp rax, [rbp+var_28] +00098422: setb al +00098425: test al, al +00098427: jz loc_984E2 +0009842D: mov rax, [rbp+var_40] +00098431: mov rdi, rax +00098434: call __ZNKSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +00098439: mov rbx, rax +0009843C: mov rax, [rbp+var_40] +00098440: mov rdi, rax +00098443: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +00098448: mov rdx, rax +0009844B: mov rsi, [rbp+var_28] +0009844F: mov rax, [rbp+var_38] +00098453: mov rcx, rbx +00098456: mov rdi, rax +00098459: call __ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEPhmT_S9_; std::vector>::_M_allocate_and_copy<__gnu_cxx::__normal_iterator>>>(ulong,__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +0009845E: mov [rbp+var_30], rax +00098462: mov rax, [rbp+var_38] +00098466: mov rdi, rax +00098469: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009846E: mov rdx, rax +00098471: mov rax, [rbp+var_38] +00098475: mov rcx, [rax+8] +00098479: mov rax, [rbp+var_38] +0009847D: mov rax, [rax] +00098480: mov rsi, rcx +00098483: mov rdi, rax +00098486: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +0009848B: mov rax, [rbp+var_38] +0009848F: mov rax, [rax+10h] +00098493: mov rdx, rax +00098496: mov rax, [rbp+var_38] +0009849A: mov rax, [rax] +0009849D: sub rdx, rax +000984A0: mov rax, rdx +000984A3: mov rdx, rax +000984A6: mov rax, [rbp+var_38] +000984AA: mov rcx, [rax] +000984AD: mov rax, [rbp+var_38] +000984B1: mov rsi, rcx +000984B4: mov rdi, rax +000984B7: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000984BC: mov rax, [rbp+var_38] +000984C0: mov rdx, [rbp+var_30] +000984C4: mov [rax], rdx +000984C7: mov rax, [rbp+var_38] +000984CB: mov rdx, [rax] +000984CE: mov rax, [rbp+var_28] +000984D2: add rdx, rax +000984D5: mov rax, [rbp+var_38] +000984D9: mov [rax+10h], rdx +000984DD: jmp loc_985D8 +000984E2: mov rax, [rbp+var_38] +000984E6: mov rdi, rax +000984E9: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000984EE: cmp rax, [rbp+var_28] +000984F2: setnb al +000984F5: test al, al +000984F7: jz short loc_9855F +000984F9: mov rax, [rbp+var_38] +000984FD: mov rdi, rax +00098500: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098505: mov r12, rax +00098508: mov rax, [rbp+var_38] +0009850C: mov rdi, rax +0009850F: call __ZNSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +00098514: mov rbx, rax +00098517: mov rax, [rbp+var_38] +0009851B: mov rdi, rax +0009851E: call __ZNSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +00098523: mov r14, rax +00098526: mov rax, [rbp+var_40] +0009852A: mov rdi, rax +0009852D: call __ZNKSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +00098532: mov r13, rax +00098535: mov rax, [rbp+var_40] +00098539: mov rdi, rax +0009853C: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +00098541: mov rdx, r14 +00098544: mov rsi, r13 +00098547: mov rdi, rax +0009854A: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_; std::copy<__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +0009854F: mov rdx, r12 +00098552: mov rsi, rbx +00098555: mov rdi, rax +00098558: call __ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEhEvT_S7_RSaIT0_E; std::_Destroy<__gnu_cxx::__normal_iterator>>,uchar>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::allocator &) +0009855D: jmp short loc_985D8 +0009855F: mov rax, [rbp+var_38] +00098563: mov rbx, [rax] +00098566: mov rax, [rbp+var_40] +0009856A: mov r12, [rax] +0009856D: mov rax, [rbp+var_38] +00098571: mov rdi, rax +00098574: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00098579: lea rcx, [r12+rax] +0009857D: mov rax, [rbp+var_40] +00098581: mov rax, [rax] +00098584: mov rdx, rbx +00098587: mov rsi, rcx +0009858A: mov rdi, rax +0009858D: call __ZSt4copyIPhS0_ET0_T_S2_S1_; std::copy(uchar *,uchar *,uchar *) +00098592: mov rax, [rbp+var_38] +00098596: mov rdi, rax +00098599: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009859E: mov r13, rax +000985A1: mov rax, [rbp+var_38] +000985A5: mov r12, [rax+8] +000985A9: mov rax, [rbp+var_40] +000985AD: mov rbx, [rax+8] +000985B1: mov rax, [rbp+var_40] +000985B5: mov r14, [rax] +000985B8: mov rax, [rbp+var_38] +000985BC: mov rdi, rax +000985BF: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000985C4: add rax, r14 +000985C7: mov rcx, r13 +000985CA: mov rdx, r12 +000985CD: mov rsi, rbx +000985D0: mov rdi, rax +000985D3: call __ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E; std::__uninitialized_copy_a(uchar *,uchar *,uchar *,std::allocator &) +000985D8: mov rax, [rbp+var_38] +000985DC: mov rdx, [rax] +000985DF: mov rax, [rbp+var_28] +000985E3: add rdx, rax +000985E6: mov rax, [rbp+var_38] +000985EA: mov [rax+8], rdx +000985EE: mov rax, [rbp+var_38] +000985F2: add rsp, 20h +000985F6: pop rbx +000985F7: pop r12 +000985F9: pop r13 +000985FB: pop r14 +000985FD: pop rbp +000985FE: retn + +### FUNC 00098600 - 000986A4 (164 bytes) name=_ZNSt6vectorIhSaIhEE6resizeEmRKh +00098600: push rbp +00098601: mov rbp, rsp +00098604: push rbx +00098605: sub rsp, 28h +00098609: mov [rbp+var_18], rdi +0009860D: mov [rbp+var_20], rsi +00098611: mov [rbp+var_28], rdx +00098615: mov rax, [rbp+var_18] +00098619: mov rdi, rax +0009861C: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00098621: cmp rax, [rbp+var_20] +00098625: setb al +00098628: test al, al +0009862A: jz short loc_98669 +0009862C: mov rax, [rbp+var_18] +00098630: mov rdi, rax +00098633: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00098638: mov rdx, [rbp+var_20] +0009863C: mov rbx, rdx +0009863F: sub rbx, rax +00098642: mov rax, [rbp+var_18] +00098646: mov rdi, rax +00098649: call __ZNSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +0009864E: mov rsi, rax +00098651: mov rdx, [rbp+var_28] +00098655: mov rax, [rbp+var_18] +00098659: mov rcx, rdx +0009865C: mov rdx, rbx +0009865F: mov rdi, rax +00098662: call __ZNSt6vectorIhSaIhEE6insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh; std::vector>::insert(__gnu_cxx::__normal_iterator>>,ulong,uchar const&) +00098667: jmp short loc_9869D +00098669: mov rax, [rbp+var_18] +0009866D: mov rdi, rax +00098670: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00098675: cmp rax, [rbp+var_20] +00098679: setnbe al +0009867C: test al, al +0009867E: jz short loc_9869D +00098680: mov rax, [rbp+var_18] +00098684: mov rdx, [rax] +00098687: mov rax, [rbp+var_20] +0009868B: add rdx, rax +0009868E: mov rax, [rbp+var_18] +00098692: mov rsi, rdx +00098695: mov rdi, rax +00098698: call __ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh; std::vector>::_M_erase_at_end(uchar *) +0009869D: add rsp, 28h +000986A1: pop rbx +000986A2: pop rbp +000986A3: retn + +### FUNC 000986A4 - 000986C0 (28 bytes) name=_ZNSt6vectorIhSaIhEEixEm +000986A4: push rbp +000986A5: mov rbp, rsp +000986A8: mov [rbp+var_8], rdi +000986AC: mov [rbp+var_10], rsi +000986B0: mov rax, [rbp+var_8] +000986B4: mov rdx, [rax] +000986B7: mov rax, [rbp+var_10] +000986BB: add rax, rdx +000986BE: pop rbp +000986BF: retn + +### FUNC 000986C0 - 000986D3 (19 bytes) name=_ZStneIhEbRKSaIT_ES3_ +000986C0: push rbp +000986C1: mov rbp, rsp +000986C4: mov [rbp+var_8], rdi +000986C8: mov [rbp+var_10], rsi +000986CC: mov eax, 0 +000986D1: pop rbp +000986D2: retn + +### FUNC 000986D4 - 000986F8 (36 bytes) name=_ZNSt6vectorIhSaIhEE5clearEv +000986D4: push rbp +000986D5: mov rbp, rsp +000986D8: sub rsp, 10h +000986DC: mov [rbp+var_8], rdi +000986E0: mov rax, [rbp+var_8] +000986E4: mov rdx, [rax] +000986E7: mov rax, [rbp+var_8] +000986EB: mov rsi, rdx +000986EE: mov rdi, rax +000986F1: call __ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh; std::vector>::_M_erase_at_end(uchar *) +000986F6: leave +000986F7: retn + +### FUNC 000986F8 - 00098720 (40 bytes) name=_ZSt15__alloc_on_copyISaIhEEvRT_RKS1_ +000986F8: push rbp +000986F9: mov rbp, rsp +000986FC: sub rsp, 30h +00098700: mov [rbp+var_18], rdi +00098704: mov [rbp+var_20], rsi +00098708: mov rdx, [rbp+var_20] +0009870C: mov rax, [rbp+var_18] +00098710: mov [rsp+30h+var_30], cl +00098713: mov rsi, rdx +00098716: mov rdi, rax +00098719: call __ZSt18__do_alloc_on_copyISaIhEEvRT_RKS1_St17integral_constantIbLb0EE; std::__do_alloc_on_copy>(std::allocator &,std::allocator const&,std::integral_constant) +0009871E: leave +0009871F: retn + +### FUNC 00098720 - 00098750 (48 bytes) name=_ZNKSt6vectorIhSaIhEE5beginEv +00098720: push rbp +00098721: mov rbp, rsp +00098724: sub rsp, 20h +00098728: mov [rbp+var_18], rdi +0009872C: mov rax, [rbp+var_18] +00098730: mov rax, [rax] +00098733: mov [rbp+var_8], rax +00098737: lea rdx, [rbp+var_8] +0009873B: lea rax, [rbp+var_10] +0009873F: mov rsi, rdx +00098742: mov rdi, rax +00098745: call __ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEC2ERKS2_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar const* const&) +0009874A: mov rax, [rbp+var_10] +0009874E: leave +0009874F: retn + +### FUNC 00098750 - 00098781 (49 bytes) name=_ZNKSt6vectorIhSaIhEE3endEv +00098750: push rbp +00098751: mov rbp, rsp +00098754: sub rsp, 20h +00098758: mov [rbp+var_18], rdi +0009875C: mov rax, [rbp+var_18] +00098760: mov rax, [rax+8] +00098764: mov [rbp+var_8], rax +00098768: lea rdx, [rbp+var_8] +0009876C: lea rax, [rbp+var_10] +00098770: mov rsi, rdx +00098773: mov rdi, rax +00098776: call __ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEC2ERKS2_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar const* const&) +0009877B: mov rax, [rbp+var_10] +0009877F: leave +00098780: retn + +### FUNC 00098782 - 00098819 (151 bytes) name=_ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEPhmT_S9_ +00098782: push rbp +00098783: mov rbp, rsp +00098786: push rbx +00098787: sub rsp, 48h +0009878B: mov [rbp+var_28], rdi +0009878F: mov [rbp+var_30], rsi +00098793: mov [rbp+var_40], rdx +00098797: mov [rbp+var_50], rcx +0009879B: mov rax, [rbp+var_28] +0009879F: mov rdx, [rbp+var_30] +000987A3: mov rsi, rdx +000987A6: mov rdi, rax +000987A9: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000987AE: mov [rbp+var_18], rax +000987B2: mov rax, [rbp+var_28] +000987B6: mov rdi, rax +000987B9: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000987BE: mov rcx, rax +000987C1: mov rdx, [rbp+var_18] +000987C5: mov rsi, [rbp+var_50] +000987C9: mov rax, [rbp+var_40] +000987CD: mov rdi, rax +000987D0: call __ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E; std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator>>,uchar *,uchar>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *,std::allocator &) +000987D5: mov rax, [rbp+var_18] +000987D9: jmp short loc_98812 +000987DB: mov rdi, rax; void * +000987DE: call ___cxa_begin_catch +000987E3: mov rax, [rbp+var_28] +000987E7: mov rdx, [rbp+var_30] +000987EB: mov rcx, [rbp+var_18] +000987EF: mov rsi, rcx +000987F2: mov rdi, rax +000987F5: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000987FA: call ___cxa_rethrow +000987FF: mov rbx, rax +00098802: call ___cxa_end_catch +00098807: mov rax, rbx +0009880A: mov rdi, rax; struct _Unwind_Exception * +0009880D: call __Unwind_Resume +00098812: add rsp, 48h +00098816: pop rbx +00098817: pop rbp +00098818: retn + +### FUNC 0009881A - 0009883F (37 bytes) name=_ZNSt6vectorIhSaIhEE5beginEv +0009881A: push rbp +0009881B: mov rbp, rsp +0009881E: sub rsp, 20h +00098822: mov [rbp+var_18], rdi +00098826: mov rdx, [rbp+var_18] +0009882A: lea rax, [rbp+var_10] +0009882E: mov rsi, rdx +00098831: mov rdi, rax +00098834: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar * const&) +00098839: mov rax, [rbp+var_10] +0009883D: leave +0009883E: retn + +### FUNC 0009883F - 00098885 (70 bytes) name=_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET0_T_SB_SA_ +0009883F: push rbp +00098840: mov rbp, rsp +00098843: push rbx +00098844: sub rsp, 38h +00098848: mov [rbp+var_20], rdi +0009884C: mov [rbp+var_30], rsi +00098850: mov [rbp+var_40], rdx +00098854: mov rax, [rbp+var_30] +00098858: mov rdi, rax +0009885B: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_; std::__miter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +00098860: mov rbx, rax +00098863: mov rax, [rbp+var_20] +00098867: mov rdi, rax +0009886A: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_; std::__miter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +0009886F: mov rdx, [rbp+var_40] +00098873: mov rsi, rbx +00098876: mov rdi, rax +00098879: call __ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET1_T0_SB_SA_; std::__copy_move_a2>>,__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +0009887E: add rsp, 38h +00098882: pop rbx +00098883: pop rbp +00098884: retn + +### FUNC 00098886 - 000988AF (41 bytes) name=_ZNSt6vectorIhSaIhEE3endEv +00098886: push rbp +00098887: mov rbp, rsp +0009888A: sub rsp, 20h +0009888E: mov [rbp+var_18], rdi +00098892: mov rax, [rbp+var_18] +00098896: lea rdx, [rax+8] +0009889A: lea rax, [rbp+var_10] +0009889E: mov rsi, rdx +000988A1: mov rdi, rax +000988A4: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar * const&) +000988A9: mov rax, [rbp+var_10] +000988AD: leave +000988AE: retn + +### FUNC 000988AF - 000988D8 (41 bytes) name=_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEhEvT_S7_RSaIT0_E +000988AF: push rbp +000988B0: mov rbp, rsp +000988B3: sub rsp, 20h +000988B7: mov [rbp+var_10], rdi +000988BB: mov [rbp+var_20], rsi +000988BF: mov [rbp+var_18], rdx +000988C3: mov rdx, [rbp+var_20] +000988C7: mov rax, [rbp+var_10] +000988CB: mov rsi, rdx +000988CE: mov rdi, rax +000988D1: call __ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_; std::_Destroy<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000988D6: leave +000988D7: retn + +### FUNC 000988D8 - 0009891E (70 bytes) name=_ZSt4copyIPhS0_ET0_T_S2_S1_ +000988D8: push rbp +000988D9: mov rbp, rsp +000988DC: push rbx +000988DD: sub rsp, 28h +000988E1: mov [rbp+var_18], rdi +000988E5: mov [rbp+var_20], rsi +000988E9: mov [rbp+var_28], rdx +000988ED: mov rax, [rbp+var_20] +000988F1: mov rdi, rax +000988F4: call __ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(uchar *) +000988F9: mov rbx, rax +000988FC: mov rax, [rbp+var_18] +00098900: mov rdi, rax +00098903: call __ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(uchar *) +00098908: mov rdx, [rbp+var_28] +0009890C: mov rsi, rbx +0009890F: mov rdi, rax +00098912: call __ZSt14__copy_move_a2ILb0EPhS0_ET1_T0_S2_S1_; std::__copy_move_a2(uchar *,uchar *,uchar *) +00098917: add rsp, 28h +0009891B: pop rbx +0009891C: pop rbp +0009891D: retn + +### FUNC 0009891E - 0009894F (49 bytes) name=_ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E +0009891E: push rbp +0009891F: mov rbp, rsp +00098922: sub rsp, 20h +00098926: mov [rbp+var_8], rdi +0009892A: mov [rbp+var_10], rsi +0009892E: mov [rbp+var_18], rdx +00098932: mov [rbp+var_20], rcx +00098936: mov rdx, [rbp+var_18] +0009893A: mov rcx, [rbp+var_10] +0009893E: mov rax, [rbp+var_8] +00098942: mov rsi, rcx +00098945: mov rdi, rax +00098948: call __ZSt18uninitialized_copyIPhS0_ET0_T_S2_S1_; std::uninitialized_copy(uchar *,uchar *,uchar *) +0009894D: leave +0009894E: retn + +### FUNC 00098950 - 00098982 (50 bytes) name=_ZNSt6vectorIhSaIhEE6insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00098950: push rbp +00098951: mov rbp, rsp +00098954: sub rsp, 20h +00098958: mov [rbp+var_8], rdi +0009895C: mov [rbp+var_10], rsi +00098960: mov [rbp+var_18], rdx +00098964: mov [rbp+var_20], rcx +00098968: mov rcx, [rbp+var_20] +0009896C: mov rdx, [rbp+var_18] +00098970: mov rsi, [rbp+var_10] +00098974: mov rax, [rbp+var_8] +00098978: mov rdi, rax +0009897B: call __ZNSt6vectorIhSaIhEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh; std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>,ulong,uchar const&) +00098980: leave +00098981: retn + +### FUNC 00098982 - 00098990 (14 bytes) name=_ZSt18__do_alloc_on_copyISaIhEEvRT_RKS1_St17integral_constantIbLb0EE +00098982: push rbp +00098983: mov rbp, rsp +00098986: mov [rbp+var_8], rdi +0009898A: mov [rbp+var_10], rsi +0009898E: pop rbp +0009898F: retn + +### FUNC 00098990 - 000989AC (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEC2ERKS2_ +00098990: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>>::__normal_iterator(unsigned char const* const&)' +00098991: mov rbp, rsp +00098994: mov [rbp+var_8], rdi +00098998: mov [rbp+var_10], rsi +0009899C: mov rax, [rbp+var_10] +000989A0: mov rdx, [rax] +000989A3: mov rax, [rbp+var_8] +000989A7: mov [rax], rdx +000989AA: pop rbp +000989AB: retn + +### FUNC 000989AC - 000989DD (49 bytes) name=_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E +000989AC: push rbp +000989AD: mov rbp, rsp +000989B0: sub rsp, 20h +000989B4: mov [rbp+var_10], rdi +000989B8: mov [rbp+var_20], rsi +000989BC: mov [rbp+var_18], rdx +000989C0: mov [rbp+var_8], rcx +000989C4: mov rdx, [rbp+var_18] +000989C8: mov rcx, [rbp+var_20] +000989CC: mov rax, [rbp+var_10] +000989D0: mov rsi, rcx +000989D3: mov rdi, rax +000989D6: call __ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_; std::uninitialized_copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000989DB: leave +000989DC: retn + +### FUNC 000989DE - 000989FA (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_ +000989DE: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>>::__normal_iterator(unsigned char * const&)' +000989DF: mov rbp, rsp +000989E2: mov [rbp+var_8], rdi +000989E6: mov [rbp+var_10], rsi +000989EA: mov rax, [rbp+var_10] +000989EE: mov rdx, [rax] +000989F1: mov rax, [rbp+var_8] +000989F5: mov [rax], rdx +000989F8: pop rbp +000989F9: retn + +### FUNC 000989FA - 00098A14 (26 bytes) name=_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_ +000989FA: push rbp +000989FB: mov rbp, rsp +000989FE: sub rsp, 10h +00098A02: mov [rbp+var_10], rdi +00098A06: mov rax, [rbp+var_10] +00098A0A: mov rdi, rax +00098A0D: call __ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb0EE7_S_baseES7_; std::_Iter_base<__gnu_cxx::__normal_iterator>>,false>::_S_base(__gnu_cxx::__normal_iterator>>) +00098A12: leave +00098A13: retn + +### FUNC 00098A14 - 00098A87 (115 bytes) name=_ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEENS1_IPhS6_EEET1_T0_SB_SA_ +00098A14: push rbp +00098A15: mov rbp, rsp +00098A18: push r12 +00098A1A: push rbx +00098A1B: sub rsp, 40h +00098A1F: mov [rbp+var_30], rdi +00098A23: mov [rbp+var_40], rsi +00098A27: mov [rbp+var_50], rdx +00098A2B: mov rax, [rbp+var_50] +00098A2F: mov rdi, rax +00098A32: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +00098A37: mov r12, rax +00098A3A: mov rax, [rbp+var_40] +00098A3E: mov rdi, rax +00098A41: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +00098A46: mov rbx, rax +00098A49: mov rax, [rbp+var_30] +00098A4D: mov rdi, rax +00098A50: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +00098A55: mov rdx, r12 +00098A58: mov rsi, rbx +00098A5B: mov rdi, rax +00098A5E: call __ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_; std::__copy_move_a(uchar const*,uchar const*,uchar *) +00098A63: mov [rbp+var_18], rax +00098A67: lea rdx, [rbp+var_18] +00098A6B: lea rax, [rbp+var_20] +00098A6F: mov rsi, rdx +00098A72: mov rdi, rax +00098A75: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar * const&) +00098A7A: mov rax, [rbp+var_20] +00098A7E: add rsp, 40h +00098A82: pop rbx +00098A83: pop r12 +00098A85: pop rbp +00098A86: retn + +### FUNC 00098A87 - 00098AAC (37 bytes) name=_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEvT_S7_ +00098A87: push rbp +00098A88: mov rbp, rsp +00098A8B: sub rsp, 20h +00098A8F: mov [rbp+var_10], rdi +00098A93: mov [rbp+var_20], rsi +00098A97: mov rdx, [rbp+var_20] +00098A9B: mov rax, [rbp+var_10] +00098A9F: mov rsi, rdx +00098AA2: mov rdi, rax +00098AA5: call __ZNSt12_Destroy_auxILb1EE9__destroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEEvT_S9_; std::_Destroy_aux::__destroy<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +00098AAA: leave +00098AAB: retn + +### FUNC 00098AAC - 00098AC6 (26 bytes) name=_ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_ +00098AAC: push rbp +00098AAD: mov rbp, rsp +00098AB0: sub rsp, 10h +00098AB4: mov [rbp+var_8], rdi +00098AB8: mov rax, [rbp+var_8] +00098ABC: mov rdi, rax +00098ABF: call __ZNSt10_Iter_baseIPhLb0EE7_S_baseES0_; std::_Iter_base::_S_base(uchar *) +00098AC4: leave +00098AC5: retn + +### FUNC 00098AC6 - 00098B1E (88 bytes) name=_ZSt14__copy_move_a2ILb0EPhS0_ET1_T0_S2_S1_ +00098AC6: push rbp +00098AC7: mov rbp, rsp +00098ACA: push r12 +00098ACC: push rbx +00098ACD: sub rsp, 20h +00098AD1: mov [rbp+var_18], rdi +00098AD5: mov [rbp+var_20], rsi +00098AD9: mov [rbp+var_28], rdx +00098ADD: mov rax, [rbp+var_28] +00098AE1: mov rdi, rax +00098AE4: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00098AE9: mov r12, rax +00098AEC: mov rax, [rbp+var_20] +00098AF0: mov rdi, rax +00098AF3: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00098AF8: mov rbx, rax +00098AFB: mov rax, [rbp+var_18] +00098AFF: mov rdi, rax +00098B02: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00098B07: mov rdx, r12 +00098B0A: mov rsi, rbx +00098B0D: mov rdi, rax +00098B10: call __ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_; std::__copy_move_a(uchar *,uchar *,uchar *) +00098B15: add rsp, 20h +00098B19: pop rbx +00098B1A: pop r12 +00098B1C: pop rbp +00098B1D: retn + +### FUNC 00098B1E - 00098B4B (45 bytes) name=_ZSt18uninitialized_copyIPhS0_ET0_T_S2_S1_ +00098B1E: push rbp +00098B1F: mov rbp, rsp +00098B22: sub rsp, 20h +00098B26: mov [rbp+var_8], rdi +00098B2A: mov [rbp+var_10], rsi +00098B2E: mov [rbp+var_18], rdx +00098B32: mov rdx, [rbp+var_18] +00098B36: mov rcx, [rbp+var_10] +00098B3A: mov rax, [rbp+var_8] +00098B3E: mov rsi, rcx +00098B41: mov rdi, rax +00098B44: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPhS2_EET0_T_S4_S3_; std::__uninitialized_copy::__uninit_copy(uchar *,uchar *,uchar *) +00098B49: leave +00098B4A: retn + +### FUNC 00098B4C - 00098FD6 (1162 bytes) name=_ZNSt6vectorIhSaIhEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPhS1_EEmRKh +00098B4C: push rbp +00098B4D: mov rbp, rsp +00098B50: push r12 +00098B52: push rbx +00098B53: add rsp, 0FFFFFFFFFFFFFF80h +00098B57: mov [rbp+var_78], rdi +00098B5B: mov [rbp+var_80], rsi +00098B5F: mov [rbp+var_88], rdx +00098B66: mov [rbp+var_90], rcx +00098B6D: cmp [rbp+var_88], 0 +00098B75: jz loc_98FCD +00098B7B: mov rax, [rbp+var_78] +00098B7F: mov rax, [rax+10h] +00098B83: mov rdx, rax +00098B86: mov rax, [rbp+var_78] +00098B8A: mov rax, [rax+8] +00098B8E: sub rdx, rax +00098B91: mov rax, rdx +00098B94: cmp rax, [rbp+var_88] +00098B9B: jb loc_98D86 +00098BA1: mov rax, [rbp+var_90] +00098BA8: movzx eax, byte ptr [rax] +00098BAB: mov [rbp+var_61], al +00098BAE: mov rax, [rbp+var_78] +00098BB2: mov rdi, rax +00098BB5: call __ZNSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +00098BBA: mov [rbp+var_60], rax +00098BBE: lea rdx, [rbp+var_80] +00098BC2: lea rax, [rbp+var_60] +00098BC6: mov rsi, rdx +00098BC9: mov rdi, rax +00098BCC: call __ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_; __gnu_cxx::operator->>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +00098BD1: mov [rbp+var_20], rax +00098BD5: mov rax, [rbp+var_78] +00098BD9: mov rax, [rax+8] +00098BDD: mov [rbp+var_28], rax +00098BE1: mov rax, [rbp+var_20] +00098BE5: cmp rax, [rbp+var_88] +00098BEC: jbe loc_98CB8 +00098BF2: mov rax, [rbp+var_78] +00098BF6: mov rdi, rax +00098BF9: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098BFE: mov rcx, rax +00098C01: mov rax, [rbp+var_78] +00098C05: mov rdx, [rax+8] +00098C09: mov rax, [rbp+var_78] +00098C0D: mov rax, [rax+8] +00098C11: mov rsi, [rbp+var_78] +00098C15: mov rsi, [rsi+8] +00098C19: mov rdi, [rbp+var_88] +00098C20: neg rdi +00098C23: add rdi, rsi +00098C26: mov rsi, rax +00098C29: call __ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_a>(uchar *,uchar *,uchar *,std::allocator &) +00098C2E: mov rax, [rbp+var_78] +00098C32: mov rdx, [rax+8] +00098C36: mov rax, [rbp+var_88] +00098C3D: add rdx, rax +00098C40: mov rax, [rbp+var_78] +00098C44: mov [rax+8], rdx +00098C48: mov rax, [rbp+var_88] +00098C4F: neg rax +00098C52: mov rdx, rax +00098C55: mov rax, [rbp+var_28] +00098C59: lea rbx, [rdx+rax] +00098C5D: lea rax, [rbp+var_80] +00098C61: mov rdi, rax +00098C64: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098C69: mov rax, [rax] +00098C6C: mov rdx, [rbp+var_28] +00098C70: mov rsi, rbx +00098C73: mov rdi, rax +00098C76: call __ZSt13move_backwardIPhS0_ET0_T_S2_S1_; std::move_backward(uchar *,uchar *,uchar *) +00098C7B: lea rax, [rbp+var_80] +00098C7F: mov rdi, rax +00098C82: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098C87: mov rdx, [rax] +00098C8A: mov rax, [rbp+var_88] +00098C91: lea rbx, [rdx+rax] +00098C95: lea rax, [rbp+var_80] +00098C99: mov rdi, rax +00098C9C: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098CA1: mov rax, [rax] +00098CA4: lea rdx, [rbp+var_61] +00098CA8: mov rsi, rbx +00098CAB: mov rdi, rax +00098CAE: call __ZSt4fillIPhhEvT_S1_RKT0_; std::fill(uchar *,uchar *,uchar const&) +00098CB3: jmp loc_98F2E +00098CB8: mov rax, [rbp+var_78] +00098CBC: mov rdi, rax +00098CBF: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098CC4: mov rcx, rax +00098CC7: mov rax, [rbp+var_20] +00098CCB: mov rdx, [rbp+var_88] +00098CD2: mov rsi, rdx +00098CD5: sub rsi, rax +00098CD8: mov rax, [rbp+var_78] +00098CDC: mov rax, [rax+8] +00098CE0: lea rdx, [rbp+var_61] +00098CE4: mov rdi, rax +00098CE7: call __ZSt24__uninitialized_fill_n_aIPhmhhEvT_T0_RKT1_RSaIT2_E; std::__uninitialized_fill_n_a(uchar *,ulong,uchar const&,std::allocator &) +00098CEC: mov rax, [rbp+var_78] +00098CF0: mov rax, [rax+8] +00098CF4: mov rdx, [rbp+var_20] +00098CF8: mov rcx, [rbp+var_88] +00098CFF: sub rcx, rdx +00098D02: mov rdx, rcx +00098D05: add rdx, rax +00098D08: mov rax, [rbp+var_78] +00098D0C: mov [rax+8], rdx +00098D10: mov rax, [rbp+var_78] +00098D14: mov rdi, rax +00098D17: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098D1C: mov r12, rax +00098D1F: mov rax, [rbp+var_78] +00098D23: mov rbx, [rax+8] +00098D27: lea rax, [rbp+var_80] +00098D2B: mov rdi, rax +00098D2E: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098D33: mov rax, [rax] +00098D36: mov rsi, [rbp+var_28] +00098D3A: mov rcx, r12 +00098D3D: mov rdx, rbx +00098D40: mov rdi, rax +00098D43: call __ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_a>(uchar *,uchar *,uchar *,std::allocator &) +00098D48: mov rax, [rbp+var_78] +00098D4C: mov rdx, [rax+8] +00098D50: mov rax, [rbp+var_20] +00098D54: add rdx, rax +00098D57: mov rax, [rbp+var_78] +00098D5B: mov [rax+8], rdx +00098D5F: lea rax, [rbp+var_80] +00098D63: mov rdi, rax +00098D66: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098D6B: mov rax, [rax] +00098D6E: lea rdx, [rbp+var_61] +00098D72: mov rcx, [rbp+var_28] +00098D76: mov rsi, rcx +00098D79: mov rdi, rax +00098D7C: call __ZSt4fillIPhhEvT_S1_RKT0_; std::fill(uchar *,uchar *,uchar const&) +00098D81: jmp loc_98F2E +00098D86: mov rcx, [rbp+var_88] +00098D8D: mov rax, [rbp+var_78] +00098D91: lea rdx, aVectorMFillIns; "vector::_M_fill_insert" +00098D98: mov rsi, rcx +00098D9B: mov rdi, rax +00098D9E: call __ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +00098DA3: mov [rbp+var_30], rax +00098DA7: mov rax, [rbp+var_78] +00098DAB: mov rdi, rax +00098DAE: call __ZNSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +00098DB3: mov [rbp+var_50], rax +00098DB7: lea rdx, [rbp+var_50] +00098DBB: lea rax, [rbp+var_80] +00098DBF: mov rsi, rdx +00098DC2: mov rdi, rax +00098DC5: call __ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_; __gnu_cxx::operator->>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +00098DCA: mov [rbp+var_38], rax +00098DCE: mov rax, [rbp+var_78] +00098DD2: mov rdx, [rbp+var_30] +00098DD6: mov rsi, rdx +00098DD9: mov rdi, rax +00098DDC: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +00098DE1: mov [rbp+var_40], rax +00098DE5: mov rax, [rbp+var_40] +00098DE9: mov [rbp+var_18], rax +00098DED: mov rax, [rbp+var_78] +00098DF1: mov rdi, rax +00098DF4: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098DF9: mov rcx, rax +00098DFC: mov rax, [rbp+var_38] +00098E00: mov rdx, [rbp+var_40] +00098E04: lea rdi, [rdx+rax] +00098E08: mov rdx, [rbp+var_90] +00098E0F: mov rax, [rbp+var_88] +00098E16: mov rsi, rax +00098E19: call __ZSt24__uninitialized_fill_n_aIPhmhhEvT_T0_RKT1_RSaIT2_E; std::__uninitialized_fill_n_a(uchar *,ulong,uchar const&,std::allocator &) +00098E1E: mov [rbp+var_18], 0 +00098E26: mov rax, [rbp+var_78] +00098E2A: mov rdi, rax +00098E2D: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098E32: mov rbx, rax +00098E35: lea rax, [rbp+var_80] +00098E39: mov rdi, rax +00098E3C: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098E41: mov rsi, [rax] +00098E44: mov rax, [rbp+var_78] +00098E48: mov rax, [rax] +00098E4B: mov rdx, [rbp+var_40] +00098E4F: mov rcx, rbx +00098E52: mov rdi, rax +00098E55: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +00098E5A: mov [rbp+var_18], rax +00098E5E: mov rax, [rbp+var_88] +00098E65: add [rbp+var_18], rax +00098E69: mov rax, [rbp+var_78] +00098E6D: mov rdi, rax +00098E70: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098E75: mov r12, rax +00098E78: mov rax, [rbp+var_78] +00098E7C: mov rbx, [rax+8] +00098E80: lea rax, [rbp+var_80] +00098E84: mov rdi, rax +00098E87: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00098E8C: mov rax, [rax] +00098E8F: mov rdx, [rbp+var_18] +00098E93: mov rcx, r12 +00098E96: mov rsi, rbx +00098E99: mov rdi, rax +00098E9C: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +00098EA1: mov [rbp+var_18], rax +00098EA5: mov rax, [rbp+var_78] +00098EA9: mov rdi, rax +00098EAC: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098EB1: mov rdx, rax +00098EB4: mov rax, [rbp+var_78] +00098EB8: mov rcx, [rax+8] +00098EBC: mov rax, [rbp+var_78] +00098EC0: mov rax, [rax] +00098EC3: mov rsi, rcx +00098EC6: mov rdi, rax +00098EC9: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +00098ECE: mov rax, [rbp+var_78] +00098ED2: mov rax, [rax+10h] +00098ED6: mov rdx, rax +00098ED9: mov rax, [rbp+var_78] +00098EDD: mov rax, [rax] +00098EE0: sub rdx, rax +00098EE3: mov rax, rdx +00098EE6: mov rdx, rax +00098EE9: mov rax, [rbp+var_78] +00098EED: mov rcx, [rax] +00098EF0: mov rax, [rbp+var_78] +00098EF4: mov rsi, rcx +00098EF7: mov rdi, rax +00098EFA: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +00098EFF: mov rax, [rbp+var_78] +00098F03: mov rdx, [rbp+var_40] +00098F07: mov [rax], rdx +00098F0A: mov rax, [rbp+var_78] +00098F0E: mov rdx, [rbp+var_18] +00098F12: mov [rax+8], rdx +00098F16: mov rax, [rbp+var_30] +00098F1A: mov rdx, [rbp+var_40] +00098F1E: add rdx, rax +00098F21: mov rax, [rbp+var_78] +00098F25: mov [rax+10h], rdx +00098F29: jmp loc_98FCD +00098F2E: jmp loc_98FCD +00098F33: mov rdi, rax; void * +00098F36: call ___cxa_begin_catch +00098F3B: cmp [rbp+var_18], 0 +00098F40: jnz short loc_98F7C +00098F42: mov rax, [rbp+var_78] +00098F46: mov rdi, rax +00098F49: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098F4E: mov rdx, [rbp+var_88] +00098F55: mov rcx, [rbp+var_38] +00098F59: add rcx, rdx +00098F5C: mov rdx, [rbp+var_40] +00098F60: lea rsi, [rcx+rdx] +00098F64: mov rdx, [rbp+var_38] +00098F68: mov rcx, [rbp+var_40] +00098F6C: add rcx, rdx +00098F6F: mov rdx, rax +00098F72: mov rdi, rcx +00098F75: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +00098F7A: jmp short loc_98F9E +00098F7C: mov rax, [rbp+var_78] +00098F80: mov rdi, rax +00098F83: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +00098F88: mov rdx, rax +00098F8B: mov rcx, [rbp+var_18] +00098F8F: mov rax, [rbp+var_40] +00098F93: mov rsi, rcx +00098F96: mov rdi, rax +00098F99: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +00098F9E: mov rax, [rbp+var_78] +00098FA2: mov rdx, [rbp+var_30] +00098FA6: mov rcx, [rbp+var_40] +00098FAA: mov rsi, rcx +00098FAD: mov rdi, rax +00098FB0: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +00098FB5: call ___cxa_rethrow +00098FBA: mov rbx, rax +00098FBD: call ___cxa_end_catch +00098FC2: mov rax, rbx +00098FC5: mov rdi, rax; struct _Unwind_Exception * +00098FC8: call __Unwind_Resume +00098FCD: sub rsp, 0FFFFFFFFFFFFFF80h +00098FD1: pop rbx +00098FD2: pop r12 +00098FD4: pop rbp +00098FD5: retn + +### FUNC 00098FD6 - 00099003 (45 bytes) name=_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +00098FD6: push rbp +00098FD7: mov rbp, rsp +00098FDA: sub rsp, 20h +00098FDE: mov [rbp+var_10], rdi +00098FE2: mov [rbp+var_20], rsi +00098FE6: mov [rbp+var_18], rdx +00098FEA: mov rdx, [rbp+var_18] +00098FEE: mov rcx, [rbp+var_20] +00098FF2: mov rax, [rbp+var_10] +00098FF6: mov rsi, rcx +00098FF9: mov rdi, rax +00098FFC: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhEET0_T_SC_SB_; std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +00099001: leave +00099002: retn + +### FUNC 00099003 - 00099011 (14 bytes) name=_ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb0EE7_S_baseES7_ +00099003: push rbp +00099004: mov rbp, rsp +00099007: mov [rbp+var_10], rdi +0009900B: mov rax, [rbp+var_10] +0009900F: pop rbp +00099010: retn + +### FUNC 00099011 - 0009902B (26 bytes) name=_ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_ +00099011: push rbp +00099012: mov rbp, rsp +00099015: sub rsp, 10h +00099019: mov [rbp+var_10], rdi +0009901D: mov rax, [rbp+var_10] +00099021: mov rdi, rax +00099024: call __ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb1EE7_S_baseES7_; std::_Iter_base<__gnu_cxx::__normal_iterator>>,true>::_S_base(__gnu_cxx::__normal_iterator>>) +00099029: leave +0009902A: retn + +### FUNC 0009902B - 00099045 (26 bytes) name=_ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_ +0009902B: push rbp +0009902C: mov rbp, rsp +0009902F: sub rsp, 10h +00099033: mov [rbp+var_10], rdi +00099037: mov rax, [rbp+var_10] +0009903B: mov rdi, rax +0009903E: call __ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb1EE7_S_baseES6_; std::_Iter_base<__gnu_cxx::__normal_iterator>>,true>::_S_base(__gnu_cxx::__normal_iterator>>) +00099043: leave +00099044: retn + +### FUNC 00099045 - 00099053 (14 bytes) name=_ZNSt12_Destroy_auxILb1EE9__destroyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEEEvT_S9_ +00099045: push rbp +00099046: mov rbp, rsp +00099049: mov [rbp+var_10], rdi +0009904D: mov [rbp+var_20], rsi +00099051: pop rbp +00099052: retn + +### FUNC 00099053 - 00099084 (49 bytes) name=_ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_ +00099053: push rbp +00099054: mov rbp, rsp +00099057: sub rsp, 30h +0009905B: mov [rbp+var_18], rdi +0009905F: mov [rbp+var_20], rsi +00099063: mov [rbp+var_28], rdx +00099067: mov [rbp+var_1], 1 +0009906B: mov rdx, [rbp+var_28] +0009906F: mov rcx, [rbp+var_20] +00099073: mov rax, [rbp+var_18] +00099077: mov rsi, rcx +0009907A: mov rdi, rax +0009907D: call __ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIhEEPT_PKS3_S6_S4_; std::__copy_move::__copy_m(uchar const*,uchar const*,uchar *) +00099082: leave +00099083: retn + +### FUNC 00099084 - 000990B1 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPhS2_EET0_T_S4_S3_ +00099084: push rbp +00099085: mov rbp, rsp +00099088: sub rsp, 20h +0009908C: mov [rbp+var_8], rdi +00099090: mov [rbp+var_10], rsi +00099094: mov [rbp+var_18], rdx +00099098: mov rdx, [rbp+var_18] +0009909C: mov rcx, [rbp+var_10] +000990A0: mov rax, [rbp+var_8] +000990A4: mov rsi, rcx +000990A7: mov rdi, rax +000990AA: call __ZSt4copyIPhS0_ET0_T_S2_S1_; std::copy(uchar *,uchar *,uchar *) +000990AF: leave +000990B0: retn + +### FUNC 000990B1 - 000990F0 (63 bytes) name=_ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_ +000990B1: push rbp +000990B2: mov rbp, rsp +000990B5: push rbx +000990B6: sub rsp, 18h +000990BA: mov [rbp+var_18], rdi +000990BE: mov [rbp+var_20], rsi +000990C2: mov rax, [rbp+var_18] +000990C6: mov rdi, rax +000990C9: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000990CE: mov rax, [rax] +000990D1: mov rbx, rax +000990D4: mov rax, [rbp+var_20] +000990D8: mov rdi, rax +000990DB: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000990E0: mov rax, [rax] +000990E3: sub rbx, rax +000990E6: mov rax, rbx +000990E9: add rsp, 18h +000990ED: pop rbx +000990EE: pop rbp +000990EF: retn + +### FUNC 000990F0 - 0009913E (78 bytes) name=_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +000990F0: push rbp +000990F1: mov rbp, rsp +000990F4: push rbx +000990F5: sub rsp, 28h +000990F9: mov [rbp+var_18], rdi +000990FD: mov [rbp+var_20], rsi +00099101: mov [rbp+var_28], rdx +00099105: mov [rbp+var_30], rcx +00099109: mov rax, [rbp+var_20] +0009910D: mov rdi, rax +00099110: call __ZSt18make_move_iteratorIPhESt13move_iteratorIT_ES2_; std::make_move_iterator(uchar *) +00099115: mov rbx, rax +00099118: mov rax, [rbp+var_18] +0009911C: mov rdi, rax +0009911F: call __ZSt18make_move_iteratorIPhESt13move_iteratorIT_ES2_; std::make_move_iterator(uchar *) +00099124: mov rcx, [rbp+var_30] +00099128: mov rdx, [rbp+var_28] +0009912C: mov rsi, rbx +0009912F: mov rdi, rax +00099132: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a,uchar *,uchar>(std::move_iterator,std::move_iterator,uchar *,std::allocator &) +00099137: add rsp, 28h +0009913B: pop rbx +0009913C: pop rbp +0009913D: retn + +### FUNC 0009913E - 0009914C (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv +0009913E: push rbp +0009913F: mov rbp, rsp +00099142: mov [rbp+var_8], rdi +00099146: mov rax, [rbp+var_8] +0009914A: pop rbp +0009914B: retn + +### FUNC 0009914C - 00099192 (70 bytes) name=_ZSt13move_backwardIPhS0_ET0_T_S2_S1_ +0009914C: push rbp +0009914D: mov rbp, rsp +00099150: push rbx +00099151: sub rsp, 28h +00099155: mov [rbp+var_18], rdi +00099159: mov [rbp+var_20], rsi +0009915D: mov [rbp+var_28], rdx +00099161: mov rax, [rbp+var_20] +00099165: mov rdi, rax +00099168: call __ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(uchar *) +0009916D: mov rbx, rax +00099170: mov rax, [rbp+var_18] +00099174: mov rdi, rax +00099177: call __ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(uchar *) +0009917C: mov rdx, [rbp+var_28] +00099180: mov rsi, rbx +00099183: mov rdi, rax +00099186: call __ZSt23__copy_move_backward_a2ILb1EPhS0_ET1_T0_S2_S1_; std::__copy_move_backward_a2(uchar *,uchar *,uchar *) +0009918B: add rsp, 28h +0009918F: pop rbx +00099190: pop rbp +00099191: retn + +### FUNC 00099192 - 000991D8 (70 bytes) name=_ZSt4fillIPhhEvT_S1_RKT0_ +00099192: push rbp +00099193: mov rbp, rsp +00099196: push rbx +00099197: sub rsp, 28h +0009919B: mov [rbp+var_18], rdi +0009919F: mov [rbp+var_20], rsi +000991A3: mov [rbp+var_28], rdx +000991A7: mov rax, [rbp+var_20] +000991AB: mov rdi, rax +000991AE: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000991B3: mov rbx, rax +000991B6: mov rax, [rbp+var_18] +000991BA: mov rdi, rax +000991BD: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000991C2: mov rdx, [rbp+var_28] +000991C6: mov rsi, rbx +000991C9: mov rdi, rax +000991CC: call __ZSt8__fill_aIhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT_E7__valueEvE6__typeEPS3_S7_RKS3_; std::__fill_a(uchar*,uchar*,uchar const&) +000991D1: add rsp, 28h +000991D5: pop rbx +000991D6: pop rbp +000991D7: retn + +### FUNC 000991D8 - 00099209 (49 bytes) name=_ZSt24__uninitialized_fill_n_aIPhmhhEvT_T0_RKT1_RSaIT2_E +000991D8: push rbp +000991D9: mov rbp, rsp +000991DC: sub rsp, 20h +000991E0: mov [rbp+var_8], rdi +000991E4: mov [rbp+var_10], rsi +000991E8: mov [rbp+var_18], rdx +000991EC: mov [rbp+var_20], rcx +000991F0: mov rdx, [rbp+var_18] +000991F4: mov rcx, [rbp+var_10] +000991F8: mov rax, [rbp+var_8] +000991FC: mov rsi, rcx +000991FF: mov rdi, rax +00099202: call __ZSt20uninitialized_fill_nIPhmhEvT_T0_RKT1_; std::uninitialized_fill_n(uchar *,ulong,uchar const&) +00099207: leave +00099208: retn + +### FUNC 0009920A - 000992D3 (201 bytes) name=_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc +0009920A: push rbp +0009920B: mov rbp, rsp +0009920E: push rbx +0009920F: sub rsp, 38h +00099213: mov [rbp+var_28], rdi +00099217: mov [rbp+var_30], rsi +0009921B: mov [rbp+var_38], rdx +0009921F: mov rax, [rbp+var_28] +00099223: mov rdi, rax +00099226: call __ZNKSt6vectorIhSaIhEE8max_sizeEv; std::vector>::max_size(void) +0009922B: mov rbx, rax +0009922E: mov rax, [rbp+var_28] +00099232: mov rdi, rax +00099235: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +0009923A: sub rbx, rax +0009923D: mov rdx, rbx +00099240: mov rax, [rbp+var_30] +00099244: cmp rdx, rax +00099247: setb al +0009924A: test al, al +0009924C: jz short loc_9925A +0009924E: mov rax, [rbp+var_38] +00099252: mov rdi, rax; char * +00099255: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +0009925A: mov rax, [rbp+var_28] +0009925E: mov rdi, rax +00099261: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00099266: mov rbx, rax +00099269: mov rax, [rbp+var_28] +0009926D: mov rdi, rax +00099270: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +00099275: mov [rbp+var_20], rax +00099279: lea rdx, [rbp+var_30] +0009927D: lea rax, [rbp+var_20] +00099281: mov rsi, rdx +00099284: mov rdi, rax +00099287: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +0009928C: mov rax, [rax] +0009928F: add rax, rbx +00099292: mov [rbp+var_18], rax +00099296: mov rax, [rbp+var_28] +0009929A: mov rdi, rax +0009929D: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000992A2: cmp rax, [rbp+var_18] +000992A6: ja short loc_992BA +000992A8: mov rax, [rbp+var_28] +000992AC: mov rdi, rax +000992AF: call __ZNKSt6vectorIhSaIhEE8max_sizeEv; std::vector>::max_size(void) +000992B4: cmp rax, [rbp+var_18] +000992B8: jnb short loc_992C8 +000992BA: mov rax, [rbp+var_28] +000992BE: mov rdi, rax +000992C1: call __ZNKSt6vectorIhSaIhEE8max_sizeEv; std::vector>::max_size(void) +000992C6: jmp short loc_992CC +000992C8: mov rax, [rbp+var_18] +000992CC: add rsp, 38h +000992D0: pop rbx +000992D1: pop rbp +000992D2: retn + +### FUNC 000992D3 - 00099321 (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_ +000992D3: push rbp +000992D4: mov rbp, rsp +000992D7: push rbx +000992D8: sub rsp, 28h +000992DC: mov [rbp+var_18], rdi +000992E0: mov [rbp+var_20], rsi +000992E4: mov [rbp+var_28], rdx +000992E8: mov [rbp+var_30], rcx +000992EC: mov rax, [rbp+var_20] +000992F0: mov rdi, rax +000992F3: call __ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(uchar *) +000992F8: mov rbx, rax +000992FB: mov rax, [rbp+var_18] +000992FF: mov rdi, rax +00099302: call __ZSt32__make_move_if_noexcept_iteratorIPhSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(uchar *) +00099307: mov rcx, [rbp+var_30] +0009930B: mov rdx, [rbp+var_28] +0009930F: mov rsi, rbx +00099312: mov rdi, rax +00099315: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPhES1_hET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a,uchar *,uchar>(std::move_iterator,std::move_iterator,uchar *,std::allocator &) +0009931A: add rsp, 28h +0009931E: pop rbx +0009931F: pop rbp +00099320: retn + +### FUNC 00099321 - 0009934E (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhEET0_T_SC_SB_ +00099321: push rbp +00099322: mov rbp, rsp +00099325: sub rsp, 20h +00099329: mov [rbp+var_10], rdi +0009932D: mov [rbp+var_20], rsi +00099331: mov [rbp+var_18], rdx +00099335: mov rdx, [rbp+var_18] +00099339: mov rcx, [rbp+var_20] +0009933D: mov rax, [rbp+var_10] +00099341: mov rsi, rcx +00099344: mov rdi, rax +00099347: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_; std::copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +0009934C: leave +0009934D: retn + +### FUNC 0009934E - 0009936B (29 bytes) name=_ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEELb1EE7_S_baseES7_ +0009934E: push rbp +0009934F: mov rbp, rsp +00099352: sub rsp, 10h +00099356: mov [rbp+var_10], rdi +0009935A: lea rax, [rbp+var_10] +0009935E: mov rdi, rax +00099361: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00099366: mov rax, [rax] +00099369: leave +0009936A: retn + +### FUNC 0009936B - 00099388 (29 bytes) name=_ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb1EE7_S_baseES6_ +0009936B: push rbp +0009936C: mov rbp, rsp +0009936F: sub rsp, 10h +00099373: mov [rbp+var_10], rdi +00099377: lea rax, [rbp+var_10] +0009937B: mov rdi, rax +0009937E: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +00099383: mov rax, [rax] +00099386: leave +00099387: retn + +### FUNC 00099388 - 000993AD (37 bytes) name=_ZSt18make_move_iteratorIPhESt13move_iteratorIT_ES2_ +00099388: push rbp +00099389: mov rbp, rsp +0009938C: sub rsp, 20h +00099390: mov [rbp+var_18], rdi +00099394: mov rdx, [rbp+var_18] +00099398: lea rax, [rbp+var_10] +0009939C: mov rsi, rdx +0009939F: mov rdi, rax +000993A2: call __ZNSt13move_iteratorIPhEC2ES0_; std::move_iterator::move_iterator(uchar *) +000993A7: mov rax, [rbp+var_10] +000993AB: leave +000993AC: retn + +### FUNC 000993AD - 00099405 (88 bytes) name=_ZSt23__copy_move_backward_a2ILb1EPhS0_ET1_T0_S2_S1_ +000993AD: push rbp +000993AE: mov rbp, rsp +000993B1: push r12 +000993B3: push rbx +000993B4: sub rsp, 20h +000993B8: mov [rbp+var_18], rdi +000993BC: mov [rbp+var_20], rsi +000993C0: mov [rbp+var_28], rdx +000993C4: mov rax, [rbp+var_28] +000993C8: mov rdi, rax +000993CB: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000993D0: mov r12, rax +000993D3: mov rax, [rbp+var_20] +000993D7: mov rdi, rax +000993DA: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000993DF: mov rbx, rax +000993E2: mov rax, [rbp+var_18] +000993E6: mov rdi, rax +000993E9: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000993EE: mov rdx, r12 +000993F1: mov rsi, rbx +000993F4: mov rdi, rax +000993F7: call __ZSt22__copy_move_backward_aILb1EPhS0_ET1_T0_S2_S1_; std::__copy_move_backward_a(uchar *,uchar *,uchar *) +000993FC: add rsp, 20h +00099400: pop rbx +00099401: pop r12 +00099403: pop rbp +00099404: retn + +### FUNC 00099405 - 00099448 (67 bytes) name=_ZSt8__fill_aIhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT_E7__valueEvE6__typeEPS3_S7_RKS3_ +00099405: push rbp +00099406: mov rbp, rsp +00099409: sub rsp, 30h +0009940D: mov [rbp+s], rdi +00099411: mov [rbp+var_20], rsi +00099415: mov [rbp+var_28], rdx +00099419: mov rax, [rbp+var_28] +0009941D: movzx eax, byte ptr [rax] +00099420: mov [rbp+var_1], al +00099423: mov rdx, [rbp+var_20] +00099427: mov rax, [rbp+s] +0009942B: sub rdx, rax +0009942E: mov rax, rdx +00099431: mov rdx, rax; n +00099434: movzx ecx, [rbp+var_1] +00099438: mov rax, [rbp+s] +0009943C: mov esi, ecx; c +0009943E: mov rdi, rax; s +00099441: call _memset +00099446: leave +00099447: retn + +### FUNC 00099448 - 00099475 (45 bytes) name=_ZSt20uninitialized_fill_nIPhmhEvT_T0_RKT1_ +00099448: push rbp +00099449: mov rbp, rsp +0009944C: sub rsp, 20h +00099450: mov [rbp+var_8], rdi +00099454: mov [rbp+var_10], rsi +00099458: mov [rbp+var_18], rdx +0009945C: mov rdx, [rbp+var_18] +00099460: mov rcx, [rbp+var_10] +00099464: mov rax, [rbp+var_8] +00099468: mov rsi, rcx +0009946B: mov rdi, rax +0009946E: call __ZNSt22__uninitialized_fill_nILb1EE15__uninit_fill_nIPhmhEEvT_T0_RKT1_; std::__uninitialized_fill_n::__uninit_fill_n(uchar *,ulong,uchar const&) +00099473: leave +00099474: retn + +### FUNC 00099475 - 000994A0 (43 bytes) name=_ZSt3maxImERKT_S2_S2_ +00099475: push rbp +00099476: mov rbp, rsp +00099479: mov [rbp+var_8], rdi +0009947D: mov [rbp+var_10], rsi +00099481: mov rax, [rbp+var_8] +00099485: mov rdx, [rax] +00099488: mov rax, [rbp+var_10] +0009948C: mov rax, [rax] +0009948F: cmp rdx, rax +00099492: jnb short loc_9949A +00099494: mov rax, [rbp+var_10] +00099498: jmp short loc_9949E +0009949A: mov rax, [rbp+var_8] +0009949E: pop rbp +0009949F: retn + +### FUNC 000994A0 - 000994E6 (70 bytes) name=_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_ +000994A0: push rbp +000994A1: mov rbp, rsp +000994A4: push rbx +000994A5: sub rsp, 28h +000994A9: mov [rbp+var_20], rdi +000994AD: mov [rbp+var_30], rsi +000994B1: mov [rbp+var_28], rdx +000994B5: mov rax, [rbp+var_30] +000994B9: mov rdi, rax +000994BC: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_; std::__miter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000994C1: mov rbx, rax +000994C4: mov rax, [rbp+var_20] +000994C8: mov rdi, rax +000994CB: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES9_; std::__miter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000994D0: mov rdx, [rbp+var_28] +000994D4: mov rsi, rbx +000994D7: mov rdi, rax +000994DA: call __ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET1_T0_SA_S9_; std::__copy_move_a2>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000994DF: add rsp, 28h +000994E3: pop rbx +000994E4: pop rbp +000994E5: retn + +### FUNC 000994E6 - 000994F4 (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv +000994E6: push rbp +000994E7: mov rbp, rsp +000994EA: mov [rbp+var_8], rdi +000994EE: mov rax, [rbp+var_8] +000994F2: pop rbp +000994F3: retn + +### FUNC 000994F4 - 00099525 (49 bytes) name=_ZSt22__copy_move_backward_aILb1EPhS0_ET1_T0_S2_S1_ +000994F4: push rbp +000994F5: mov rbp, rsp +000994F8: sub rsp, 30h +000994FC: mov [rbp+var_18], rdi +00099500: mov [rbp+var_20], rsi +00099504: mov [rbp+var_28], rdx +00099508: mov [rbp+var_1], 1 +0009950C: mov rdx, [rbp+var_28] +00099510: mov rcx, [rbp+var_20] +00099514: mov rax, [rbp+var_18] +00099518: mov rsi, rcx +0009951B: mov rdi, rax +0009951E: call __ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIhEEPT_PKS3_S6_S4_; std::__copy_move_backward::__copy_move_b(uchar const*,uchar const*,uchar *) +00099523: leave +00099524: retn + +### FUNC 00099525 - 00099552 (45 bytes) name=_ZNSt22__uninitialized_fill_nILb1EE15__uninit_fill_nIPhmhEEvT_T0_RKT1_ +00099525: push rbp +00099526: mov rbp, rsp +00099529: sub rsp, 20h +0009952D: mov [rbp+var_8], rdi +00099531: mov [rbp+var_10], rsi +00099535: mov [rbp+var_18], rdx +00099539: mov rdx, [rbp+var_18] +0009953D: mov rcx, [rbp+var_10] +00099541: mov rax, [rbp+var_8] +00099545: mov rsi, rcx +00099548: mov rdi, rax +0009954B: call __ZSt6fill_nIPhmhET_S1_T0_RKT1_; std::fill_n(uchar *,ulong,uchar const&) +00099550: leave +00099551: retn + +### FUNC 00099552 - 000995AA (88 bytes) name=_ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET1_T0_SA_S9_ +00099552: push rbp +00099553: mov rbp, rsp +00099556: push r12 +00099558: push rbx +00099559: sub rsp, 20h +0009955D: mov [rbp+var_20], rdi +00099561: mov [rbp+var_30], rsi +00099565: mov [rbp+var_28], rdx +00099569: mov rax, [rbp+var_28] +0009956D: mov rdi, rax +00099570: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00099575: mov r12, rax +00099578: mov rax, [rbp+var_30] +0009957C: mov rdi, rax +0009957F: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +00099584: mov rbx, rax +00099587: mov rax, [rbp+var_20] +0009958B: mov rdi, rax +0009958E: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES9_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +00099593: mov rdx, r12 +00099596: mov rsi, rbx +00099599: mov rdi, rax +0009959C: call __ZSt13__copy_move_aILb0EPKhPhET1_T0_S4_S3_; std::__copy_move_a(uchar const*,uchar const*,uchar *) +000995A1: add rsp, 20h +000995A5: pop rbx +000995A6: pop r12 +000995A8: pop rbp +000995A9: retn + +### FUNC 000995AA - 00099611 (103 bytes) name=_ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIhEEPT_PKS3_S6_S4_ +000995AA: push rbp +000995AB: mov rbp, rsp +000995AE: sub rsp, 30h +000995B2: mov [rbp+src], rdi +000995B6: mov [rbp+var_20], rsi +000995BA: mov [rbp+var_28], rdx +000995BE: mov rdx, [rbp+var_20] +000995C2: mov rax, [rbp+src] +000995C6: sub rdx, rax +000995C9: mov rax, rdx +000995CC: mov [rbp+n], rax +000995D0: cmp [rbp+n], 0 +000995D5: jz short loc_995FE +000995D7: mov rax, [rbp+n] +000995DB: mov rdx, rax; n +000995DE: mov rax, [rbp+n] +000995E2: neg rax +000995E5: mov rcx, rax +000995E8: mov rax, [rbp+var_28] +000995EC: add rcx, rax +000995EF: mov rax, [rbp+src] +000995F3: mov rsi, rax; src +000995F6: mov rdi, rcx; dest +000995F9: call _memmove +000995FE: mov rax, [rbp+n] +00099602: neg rax +00099605: mov rdx, rax +00099608: mov rax, [rbp+var_28] +0009960C: add rax, rdx +0009960F: leave +00099610: retn + +### FUNC 00099611 - 00099646 (53 bytes) name=_ZSt6fill_nIPhmhET_S1_T0_RKT1_ +00099611: push rbp +00099612: mov rbp, rsp +00099615: sub rsp, 20h +00099619: mov [rbp+var_8], rdi +0009961D: mov [rbp+var_10], rsi +00099621: mov [rbp+var_18], rdx +00099625: mov rax, [rbp+var_8] +00099629: mov rdi, rax +0009962C: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +00099631: mov rdx, [rbp+var_18] +00099635: mov rcx, [rbp+var_10] +00099639: mov rsi, rcx +0009963C: mov rdi, rax +0009963F: call __ZSt10__fill_n_aImhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT0_E7__valueEPS3_E6__typeES5_T_RKS3_; std::__fill_n_a(uchar*,ulong,uchar const&) +00099644: leave +00099645: retn + +### FUNC 00099646 - 00099686 (64 bytes) name=_ZSt10__fill_n_aImhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT0_E7__valueEPS3_E6__typeES5_T_RKS3_ +00099646: push rbp +00099647: mov rbp, rsp +0009964A: sub rsp, 20h +0009964E: mov [rbp+var_8], rdi +00099652: mov [rbp+var_10], rsi +00099656: mov [rbp+var_18], rdx +0009965A: mov rax, [rbp+var_10] +0009965E: mov rdx, [rbp+var_8] +00099662: lea rcx, [rdx+rax] +00099666: mov rdx, [rbp+var_18] +0009966A: mov rax, [rbp+var_8] +0009966E: mov rsi, rcx +00099671: mov rdi, rax +00099674: call __ZSt8__fill_aIhEN9__gnu_cxx11__enable_ifIXsrSt9__is_byteIT_E7__valueEvE6__typeEPS3_S7_RKS3_; std::__fill_a(uchar*,uchar*,uchar const&) +00099679: mov rax, [rbp+var_10] +0009967D: mov rdx, [rbp+var_8] +00099681: add rax, rdx +00099684: leave +00099685: retn + +### FUNC 00099686 - 000996BA (52 bytes) name=_Z14NewFrame_LinuxjjjPv +00099686: push rbp +00099687: mov rbp, rsp +0009968A: sub rsp, 30h +0009968E: mov [rbp+var_14], edi +00099691: mov [rbp+var_18], esi +00099694: mov [rbp+var_1C], edx +00099697: mov [rbp+var_28], rcx +0009969B: mov rax, [rbp+var_28] +0009969F: mov [rbp+var_8], rax +000996A3: mov ecx, [rbp+var_1C]; unsigned int +000996A6: mov edx, [rbp+var_18]; unsigned int +000996A9: mov esi, [rbp+var_14]; unsigned int +000996AC: mov rax, [rbp+var_8] +000996B0: mov rdi, rax; this +000996B3: call __ZN17ThermalController18onNewFrameCallbackEjjj; ThermalController::onNewFrameCallback(uint,uint,uint) +000996B8: leave +000996B9: retn + +### FUNC 000996BA - 00099786 (204 bytes) name=_ZN17ThermalController18onNewFrameCallbackEjjj +000996BA: push rbp +000996BB: mov rbp, rsp +000996BE: sub rsp, 30h +000996C2: mov [rbp+var_18], rdi +000996C6: mov [rbp+var_1C], esi +000996C9: mov [rbp+var_20], edx +000996CC: mov [rbp+var_24], ecx +000996CF: cmp [rbp+var_24], 2 +000996D3: jnz locret_99784 +000996D9: mov eax, [rbp+var_20] +000996DC: and eax, 40000h +000996E1: mov [rbp+var_4], eax +000996E4: cmp [rbp+var_4], 0 +000996E8: setnz al +000996EB: mov [rbp+var_5], al +000996EE: mov rax, [rbp+var_18] +000996F2: movzx eax, byte ptr [rax+13Ah] +000996F9: cmp al, [rbp+var_5] +000996FC: setnz al +000996FF: test al, al +00099701: jz short loc_99715 +00099703: movzx edx, [rbp+var_5] +00099707: mov rax, [rbp+var_18] +0009970B: mov esi, edx; bool +0009970D: mov rdi, rax; this +00099710: call __ZN17ThermalController17updateTriggerTimeEb; ThermalController::updateTriggerTime(bool) +00099715: mov rax, [rbp+var_18] +00099719: mov eax, [rax+90h] +0009971F: mov edx, eax; unsigned int +00099721: mov rax, [rbp+var_18] +00099725: mov rax, [rax+98h] +0009972C: mov rcx, [rbp+var_18] +00099730: lea rdi, [rcx+20h]; this +00099734: mov ecx, 0; int +00099739: mov rsi, rax; unsigned __int8 * +0009973C: call __ZN10CMagDevice21GetOutputBMPdataRGB24EPhji; CMagDevice::GetOutputBMPdataRGB24(uchar *,uint,int) +00099741: mov rax, [rbp+var_18] +00099745: mov rax, [rax+0A0h] +0009974C: test rax, rax +0009974F: jz short locret_99784 +00099751: mov rax, [rbp+var_18] +00099755: mov rax, [rax+0A0h] +0009975C: mov rdx, [rbp+var_18] +00099760: mov edx, [rdx+84h] +00099766: mov rcx, [rbp+var_18] +0009976A: mov ecx, [rcx+80h] +00099770: mov esi, ecx +00099772: mov rcx, [rbp+var_18] +00099776: mov rdi, [rcx+98h] +0009977D: mov ecx, 3 +00099782: call rax +00099784: leave +00099785: retn + +### FUNC 00099786 - 000997A0 (26 bytes) name=_ZN17ThermalController19setInnerTemperatureEi +00099786: push rbp +00099787: mov rbp, rsp +0009978A: mov [rbp+var_8], rdi +0009978E: mov [rbp+var_C], esi +00099791: mov rax, [rbp+var_8] +00099795: mov edx, [rbp+var_C] +00099798: mov [rax+0C0h], edx +0009979E: pop rbp +0009979F: retn + +### FUNC 000997A0 - 000997FC (92 bytes) name=_ZN17ThermalController11getInstanceEv +000997A0: push rbp +000997A1: mov rbp, rsp +000997A4: push r12 +000997A6: push rbx +000997A7: mov rax, cs:_ZN17ThermalController10s_instanceE_ptr +000997AE: mov rax, [rax] +000997B1: test rax, rax +000997B4: jnz short loc_997D5 +000997B6: mov edi, 190h; unsigned __int64 +000997BB: call __Znwm; operator new(ulong) +000997C0: mov rbx, rax +000997C3: mov rdi, rbx; this +000997C6: call __ZN17ThermalControllerC2Ev; ThermalController::ThermalController(void) +000997CB: mov rax, cs:_ZN17ThermalController10s_instanceE_ptr +000997D2: mov [rax], rbx +000997D5: mov rax, cs:_ZN17ThermalController10s_instanceE_ptr +000997DC: mov rax, [rax] +000997DF: jmp short loc_997F7 +000997E1: mov r12, rax +000997E4: mov rdi, rbx; void * +000997E7: call __ZdlPv; operator delete(void *) +000997EC: mov rax, r12 +000997EF: mov rdi, rax; struct _Unwind_Exception * +000997F2: call __Unwind_Resume +000997F7: pop rbx +000997F8: pop r12 +000997FA: pop rbp +000997FB: retn + +### FUNC 000997FC - 00099BB7 (955 bytes) name=_ZN17ThermalControllerC2Ev +000997FC: push rbp; Alternative name is 'ThermalController::ThermalController(void)' +000997FD: mov rbp, rsp +00099800: push r12 +00099802: push rbx +00099803: sub rsp, 20h +00099807: mov [rbp+var_28], rdi +0009980B: mov rax, [rbp+var_28] +0009980F: mov rdi, rax; this +00099812: call __ZN18IProximityDelegateC2Ev; IProximityDelegate::IProximityDelegate(void) +00099817: mov rax, [rbp+var_28] +0009981B: add rax, 8 +0009981F: mov rdi, rax; this +00099822: call __ZN10IMotorDoneC2Ev; IMotorDone::IMotorDone(void) +00099827: mov rax, [rbp+var_28] +0009982B: add rax, 10h +0009982F: mov rdi, rax; this +00099832: call __ZN11ILimitEventC2Ev; ILimitEvent::ILimitEvent(void) +00099837: mov rax, [rbp+var_28] +0009983B: add rax, 18h +0009983F: mov rdi, rax; this +00099842: call __ZN18ITCMUpdateDelegateC2Ev; ITCMUpdateDelegate::ITCMUpdateDelegate(void) +00099847: mov rax, [rbp+var_28] +0009984B: mov rdx, cs:_ZTV17ThermalController_ptr +00099852: lea rdx, [rdx+10h] +00099856: mov [rax], rdx +00099859: mov rax, [rbp+var_28] +0009985D: mov rdx, cs:_ZTV17ThermalController_ptr +00099864: lea rdx, [rdx+48h] +00099868: mov [rax+8], rdx +0009986C: mov rax, [rbp+var_28] +00099870: mov rdx, cs:_ZTV17ThermalController_ptr +00099877: lea rdx, [rdx+60h] +0009987B: mov [rax+10h], rdx +0009987F: mov rax, [rbp+var_28] +00099883: mov rdx, cs:_ZTV17ThermalController_ptr +0009988A: lea rdx, [rdx+78h] +0009988E: mov [rax+18h], rdx +00099892: mov rax, [rbp+var_28] +00099896: add rax, 20h ; ' ' +0009989A: mov rdi, rax; this +0009989D: call __ZN10CMagDeviceC2Ev; CMagDevice::CMagDevice(void) +000998A2: mov rax, [rbp+var_28] +000998A6: add rax, 120h +000998AC: mov rdi, rax; this +000998AF: call __ZNSsC1Ev; std::string::string(void) +000998B4: lea rax, [rbp+var_13] +000998B8: mov rdi, rax +000998BB: call __ZNSaISt4pairIKSsiEEC2Ev; std::allocator>::allocator(void) +000998C0: mov rax, [rbp+var_28] +000998C4: lea rdi, [rax+140h] +000998CB: lea rcx, [rbp+var_13] +000998CF: lea rdx, [rbp+var_12] +000998D3: lea rax, [rbp+var_11] +000998D7: mov r8, rcx +000998DA: mov rcx, rdx +000998DD: mov rdx, rax +000998E0: mov esi, 0Ah +000998E5: call __ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEC2EmRKS1_RKS3_RKS7_; std::unordered_map,std::equal_to,std::allocator>>::unordered_map(ulong,std::hash const&,std::equal_to const&,std::allocator> const&) +000998EA: lea rax, [rbp+var_13] +000998EE: mov rdi, rax +000998F1: call __ZNSaISt4pairIKSsiEED2Ev; std::allocator>::~allocator() +000998F6: mov rax, [rbp+var_28] +000998FA: add rax, 188h +00099900: mov rdi, rax; this +00099903: call __ZN11CMagServiceC2Ev; CMagService::CMagService(void) +00099908: mov rax, [rbp+var_28] +0009990C: mov qword ptr [rax+98h], 0 +00099917: mov rax, [rbp+var_28] +0009991B: mov qword ptr [rax+0A0h], 0 +00099926: mov rax, [rbp+var_28] +0009992A: mov qword ptr [rax+0B0h], 0 +00099935: mov rax, [rbp+var_28] +00099939: mov qword ptr [rax+0B8h], 0 +00099944: mov rax, [rbp+var_28] +00099948: mov qword ptr [rax+170h], 0 +00099953: mov rax, [rbp+var_28] +00099957: mov qword ptr [rax+178h], 0 +00099962: mov rax, [rbp+var_28] +00099966: mov dword ptr [rax+0FCh], 0 +00099970: mov rax, [rbp+var_28] +00099974: mov dword ptr [rax+0C0h], 0 +0009997E: mov rax, [rbp+var_28] +00099982: mov dword ptr [rax+0C4h], 0 +0009998C: mov rdx, [rbp+var_28] +00099990: mov rax, 3FEF5C28F5C28F5Ch +0009999A: mov [rdx+0C8h], rax +000999A1: mov rdx, [rbp+var_28] +000999A5: mov eax, 0 +000999AA: mov [rdx+118h], rax +000999B1: mov rax, [rbp+var_28] +000999B5: mov dword ptr [rax+128h], 0FFFFFFFFh +000999BF: mov rax, [rbp+var_28] +000999C3: mov qword ptr [rax+130h], 0FFFFFFFFFFFFFFFFh +000999CE: mov rdx, [rbp+var_28] +000999D2: mov rax, 4040000000000000h +000999DC: mov [rdx+108h], rax +000999E3: mov rdx, [rbp+var_28] +000999E7: mov rax, 4044000000000000h +000999F1: mov [rdx+110h], rax +000999F8: mov rdx, [rbp+var_28] +000999FC: mov rax, 4042800000000000h +00099A06: mov [rdx+100h], rax +00099A0D: mov rax, [rbp+var_28] +00099A11: mov byte ptr [rax+138h], 0 +00099A18: mov rax, [rbp+var_28] +00099A1C: mov byte ptr [rax+139h], 0 +00099A23: mov rax, [rbp+var_28] +00099A27: mov byte ptr [rax+13Ah], 0 +00099A2E: mov rax, [rbp+var_28] +00099A32: mov byte ptr [rax+13Bh], 0 +00099A39: mov rax, [rbp+var_28] +00099A3D: mov qword ptr [rax+180h], 0 +00099A48: mov edi, 0A8h; unsigned __int64 +00099A4D: call __Znwm; operator new(ulong) +00099A52: mov rbx, rax +00099A55: mov rdi, rbx; this +00099A58: call __ZN16ThermalTCMDeviceC2Ev; ThermalTCMDevice::ThermalTCMDevice(void) +00099A5D: mov rax, [rbp+var_28] +00099A61: mov [rax+0A8h], rbx +00099A68: mov rax, [rbp+var_28] +00099A6C: mov rax, [rax+0A8h] +00099A73: mov rax, [rax] +00099A76: add rax, 20h ; ' ' +00099A7A: mov rax, [rax] +00099A7D: mov rdx, [rbp+var_28] +00099A81: mov rdx, [rdx+0A8h] +00099A88: mov rdi, rdx +00099A8B: call rax +00099A8D: mov rbx, [rbp+var_28] +00099A91: mov rax, [rbp+var_28] +00099A95: mov rax, [rax+0A8h] +00099A9C: mov rdi, rax; this +00099A9F: call __ZN16ThermalTCMDevice18getProximityDeviceEv; ThermalTCMDevice::getProximityDevice(void) +00099AA4: mov rsi, rbx; IProximityDelegate * +00099AA7: mov rdi, rax; this +00099AAA: call __ZN18EloProximityDevice20setProximityDelegateEP18IProximityDelegate; EloProximityDevice::setProximityDelegate(IProximityDelegate *) +00099AAF: mov rax, [rbp+var_28] +00099AB3: lea rbx, [rax+8] +00099AB7: mov rax, [rbp+var_28] +00099ABB: mov rax, [rax+0A8h] +00099AC2: mov rdi, rax; this +00099AC5: call __ZN16ThermalTCMDevice14getMotorDeviceEv; ThermalTCMDevice::getMotorDevice(void) +00099ACA: mov rsi, rbx; IMotorDone * +00099ACD: mov rdi, rax; this +00099AD0: call __ZN14EloMotorDevice20setMotorDoneListenerEP10IMotorDone; EloMotorDevice::setMotorDoneListener(IMotorDone *) +00099AD5: mov rax, [rbp+var_28] +00099AD9: lea rbx, [rax+10h] +00099ADD: mov rax, [rbp+var_28] +00099AE1: mov rax, [rax+0A8h] +00099AE8: mov rdi, rax; this +00099AEB: call __ZN16ThermalTCMDevice14getMotorDeviceEv; ThermalTCMDevice::getMotorDevice(void) +00099AF0: mov rsi, rbx; ILimitEvent * +00099AF3: mov rdi, rax; this +00099AF6: call __ZN14EloMotorDevice21setLimitEventListenerEP11ILimitEvent; EloMotorDevice::setLimitEventListener(ILimitEvent *) +00099AFB: mov rax, [rbp+var_28] +00099AFF: lea rbx, [rax+18h] +00099B03: mov rax, [rbp+var_28] +00099B07: mov rax, [rax+0A8h] +00099B0E: mov rdi, rax; this +00099B11: call __ZN9TCMDevice19getTCMUpdaterDeviceEv; TCMDevice::getTCMUpdaterDevice(void) +00099B16: mov rsi, rbx; ITCMUpdateDelegate * +00099B19: mov rdi, rax; this +00099B1C: call __ZN19EloTCMUpdaterDevice17setUpdateDelegateEP18ITCMUpdateDelegate; EloTCMUpdaterDevice::setUpdateDelegate(ITCMUpdateDelegate *) +00099B21: mov rax, [rbp+var_28] +00099B25: mov rdi, rax; this +00099B28: call __ZN17ThermalController19loadCalibrationJsonEv; ThermalController::loadCalibrationJson(void) +00099B2D: jmp short loc_99BAE +00099B2F: mov rbx, rax +00099B32: lea rax, [rbp+var_13] +00099B36: mov rdi, rax +00099B39: call __ZNSaISt4pairIKSsiEED2Ev; std::allocator>::~allocator() +00099B3E: jmp short loc_99B7C +00099B40: mov r12, rax +00099B43: mov rdi, rbx; void * +00099B46: call __ZdlPv; operator delete(void *) +00099B4B: mov rbx, r12 +00099B4E: jmp short loc_99B53 +00099B50: mov rbx, rax +00099B53: mov rax, [rbp+var_28] +00099B57: add rax, 188h +00099B5D: mov rdi, rax; this +00099B60: call __ZN11CMagServiceD2Ev; CMagService::~CMagService() +00099B65: jmp short loc_99B6A +00099B67: mov rbx, rax +00099B6A: mov rax, [rbp+var_28] +00099B6E: add rax, 140h +00099B74: mov rdi, rax +00099B77: call __ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEED2Ev; std::unordered_map,std::equal_to,std::allocator>>::~unordered_map() +00099B7C: mov rax, [rbp+var_28] +00099B80: add rax, 120h +00099B86: mov rdi, rax; this +00099B89: call __ZNSsD1Ev; std::string::~string() +00099B8E: jmp short loc_99B93 +00099B90: mov rbx, rax +00099B93: mov rax, [rbp+var_28] +00099B97: add rax, 20h ; ' ' +00099B9B: mov rdi, rax; this +00099B9E: call __ZN10CMagDeviceD2Ev; CMagDevice::~CMagDevice() +00099BA3: mov rax, rbx +00099BA6: mov rdi, rax; struct _Unwind_Exception * +00099BA9: call __Unwind_Resume +00099BAE: add rsp, 20h +00099BB2: pop rbx +00099BB3: pop r12 +00099BB5: pop rbp +00099BB6: retn + +### FUNC 00099BB8 - 00099CF1 (313 bytes) name=_ZN17ThermalControllerD2Ev +00099BB8: push rbp; Alternative name is 'ThermalController::~ThermalController()' +00099BB9: mov rbp, rsp +00099BBC: sub rsp, 10h +00099BC0: mov [rbp+var_8], rdi +00099BC4: mov rax, [rbp+var_8] +00099BC8: mov rdx, cs:_ZTV17ThermalController_ptr +00099BCF: lea rdx, [rdx+10h] +00099BD3: mov [rax], rdx +00099BD6: mov rax, [rbp+var_8] +00099BDA: mov rdx, cs:_ZTV17ThermalController_ptr +00099BE1: lea rdx, [rdx+48h] +00099BE5: mov [rax+8], rdx +00099BE9: mov rax, [rbp+var_8] +00099BED: mov rdx, cs:_ZTV17ThermalController_ptr +00099BF4: lea rdx, [rdx+60h] +00099BF8: mov [rax+10h], rdx +00099BFC: mov rax, [rbp+var_8] +00099C00: mov rdx, cs:_ZTV17ThermalController_ptr +00099C07: lea rdx, [rdx+78h] +00099C0B: mov [rax+18h], rdx +00099C0F: mov rax, [rbp+var_8] +00099C13: mov rax, [rax+98h] +00099C1A: test rax, rax +00099C1D: jz short loc_99C51 +00099C1F: mov rax, [rbp+var_8] +00099C23: mov rax, [rax+98h] +00099C2A: test rax, rax +00099C2D: jz short loc_99C42 +00099C2F: mov rax, [rbp+var_8] +00099C33: mov rax, [rax+98h] +00099C3A: mov rdi, rax; void * +00099C3D: call __ZdaPv; operator delete[](void *) +00099C42: mov rax, [rbp+var_8] +00099C46: mov qword ptr [rax+98h], 0 +00099C51: mov rax, [rbp+var_8] +00099C55: mov rax, [rax+0A8h] +00099C5C: test rax, rax +00099C5F: jz short loc_99CA9 +00099C61: mov rax, [rbp+var_8] +00099C65: mov rax, [rax+0A8h] +00099C6C: mov rdi, rax; this +00099C6F: call __ZN9TCMDevice5closeEv; TCMDevice::close(void) +00099C74: mov rax, [rbp+var_8] +00099C78: mov rax, [rax+0A8h] +00099C7F: test rax, rax +00099C82: jz short loc_99CA9 +00099C84: mov rax, [rbp+var_8] +00099C88: mov rax, [rax+0A8h] +00099C8F: mov rax, [rax] +00099C92: add rax, 18h +00099C96: mov rax, [rax] +00099C99: mov rdx, [rbp+var_8] +00099C9D: mov rdx, [rdx+0A8h] +00099CA4: mov rdi, rdx +00099CA7: call rax +00099CA9: mov rax, [rbp+var_8] +00099CAD: add rax, 188h +00099CB3: mov rdi, rax; this +00099CB6: call __ZN11CMagServiceD2Ev; CMagService::~CMagService() +00099CBB: mov rax, [rbp+var_8] +00099CBF: add rax, 140h +00099CC5: mov rdi, rax +00099CC8: call __ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEED2Ev; std::unordered_map,std::equal_to,std::allocator>>::~unordered_map() +00099CCD: mov rax, [rbp+var_8] +00099CD1: add rax, 120h +00099CD7: mov rdi, rax; this +00099CDA: call __ZNSsD1Ev; std::string::~string() +00099CDF: mov rax, [rbp+var_8] +00099CE3: add rax, 20h ; ' ' +00099CE7: mov rdi, rax; this +00099CEA: call __ZN10CMagDeviceD2Ev; CMagDevice::~CMagDevice() +00099CEF: leave +00099CF0: retn + +### FUNC 00099CF2 - 00099D56 (100 bytes) name=_ZN17ThermalController7onStartEv +00099CF2: push rbp +00099CF3: mov rbp, rsp +00099CF6: sub rsp, 10h +00099CFA: mov [rbp+var_8], rdi +00099CFE: mov rax, [rbp+var_8] +00099D02: mov rdi, rax; this +00099D05: call __ZN17ThermalController8startMagEv; ThermalController::startMag(void) +00099D0A: mov rdx, [rbp+var_8] +00099D0E: mov [rdx+138h], al +00099D14: mov rax, [rbp+var_8] +00099D18: mov rdi, rax; this +00099D1B: call __ZN17ThermalController8startTCMEv; ThermalController::startTCM(void) +00099D20: mov rdx, [rbp+var_8] +00099D24: mov [rdx+139h], al +00099D2A: mov rax, [rbp+var_8] +00099D2E: movzx eax, byte ptr [rax+138h] +00099D35: test al, al +00099D37: jz short loc_99D4F +00099D39: mov rax, [rbp+var_8] +00099D3D: movzx eax, byte ptr [rax+139h] +00099D44: test al, al +00099D46: jz short loc_99D4F +00099D48: mov eax, 1 +00099D4D: jmp short locret_99D54 +00099D4F: mov eax, 0 +00099D54: leave +00099D55: retn + +### FUNC 00099D56 - 00099D7C (38 bytes) name=_ZN17ThermalController6onStopEv +00099D56: push rbp +00099D57: mov rbp, rsp +00099D5A: sub rsp, 10h +00099D5E: mov [rbp+var_8], rdi +00099D62: mov rax, [rbp+var_8] +00099D66: mov rdi, rax; this +00099D69: call __ZN17ThermalController7stopMagEv; ThermalController::stopMag(void) +00099D6E: mov rax, [rbp+var_8] +00099D72: mov rdi, rax; this +00099D75: call __ZN17ThermalController7stopTCMEv; ThermalController::stopTCM(void) +00099D7A: leave +00099D7B: retn + +### FUNC 00099D7C - 00099DB0 (52 bytes) name=_ZN17ThermalController9isWorkingEv +00099D7C: push rbp +00099D7D: mov rbp, rsp +00099D80: mov [rbp+var_8], rdi +00099D84: mov rax, [rbp+var_8] +00099D88: movzx eax, byte ptr [rax+138h] +00099D8F: test al, al +00099D91: jz short loc_99DA9 +00099D93: mov rax, [rbp+var_8] +00099D97: movzx eax, byte ptr [rax+139h] +00099D9E: test al, al +00099DA0: jz short loc_99DA9 +00099DA2: mov eax, 1 +00099DA7: jmp short loc_99DAE +00099DA9: mov eax, 0 +00099DAE: pop rbp +00099DAF: retn + +### FUNC 00099DB0 - 00099DC5 (21 bytes) name=_ZN17ThermalController11isTCMOpenedEv +00099DB0: push rbp +00099DB1: mov rbp, rsp +00099DB4: mov [rbp+var_8], rdi +00099DB8: mov rax, [rbp+var_8] +00099DBC: movzx eax, byte ptr [rax+139h] +00099DC3: pop rbp +00099DC4: retn + +### FUNC 00099DC6 - 00099DDB (21 bytes) name=_ZN17ThermalController10isIROpenedEv +00099DC6: push rbp +00099DC7: mov rbp, rsp +00099DCA: mov [rbp+var_8], rdi +00099DCE: mov rax, [rbp+var_8] +00099DD2: movzx eax, byte ptr [rax+138h] +00099DD9: pop rbp +00099DDA: retn + +### FUNC 00099DDC - 0009A139 (861 bytes) name=_ZN17ThermalController8startMagEv +00099DDC: push rbp +00099DDD: mov rbp, rsp +00099DE0: push r13 +00099DE2: push r12 +00099DE4: push rbx +00099DE5: sub rsp, 48h +00099DE9: mov [rbp+var_58], rdi +00099DED: mov rax, [rbp+var_58] +00099DF1: add rax, 20h ; ' ' +00099DF5: mov rdi, rax; this +00099DF8: call __ZN10CMagDevice13IsInitializedEv; CMagDevice::IsInitialized(void) +00099DFD: test eax, eax +00099DFF: setz al +00099E02: test al, al +00099E04: jz short loc_99E10 +00099E06: mov ebx, 0 +00099E0B: jmp loc_9A110 +00099E10: mov rax, [rbp+var_58] +00099E14: mov byte ptr [rax+13Ah], 0 +00099E1B: mov rax, [rbp+var_58] +00099E1F: add rax, 188h +00099E25: mov rdi, rax; this +00099E28: call __ZN11CMagService11EnumCamerasEv; CMagService::EnumCameras(void) +00099E2D: test eax, eax +00099E2F: setnz al +00099E32: test al, al +00099E34: jz loc_99F0D +00099E3A: mov edi, 30D40h; useconds +00099E3F: call _usleep +00099E44: lea rax, [rbp+var_50] +00099E48: mov rdi, rax +00099E4B: call __ZNSt6vectorI19struct_TerminalListSaIS0_EEC2Ev; std::vector>::vector(void) +00099E50: mov rax, [rbp+var_58] +00099E54: add rax, 188h +00099E5A: mov rdi, rax; this +00099E5D: call __ZN11CMagService16GetTerminalCountEv; CMagService::GetTerminalCount(void) +00099E62: add eax, 1 +00099E65: mov edx, eax +00099E67: lea rax, [rbp+var_50] +00099E6B: mov rsi, rdx +00099E6E: mov rdi, rax +00099E71: call __ZNSt6vectorI19struct_TerminalListSaIS0_EE6resizeEm; std::vector>::resize(ulong) +00099E76: lea rax, [rbp+var_50] +00099E7A: mov rdi, rax +00099E7D: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +00099E82: shl eax, 2 +00099E85: mov edx, eax +00099E87: shl edx, 4 +00099E8A: mov ebx, edx +00099E8C: sub ebx, eax +00099E8E: lea rax, [rbp+var_50] +00099E92: mov esi, 0 +00099E97: mov rdi, rax +00099E9A: call __ZNSt6vectorI19struct_TerminalListSaIS0_EEixEm; std::vector>::operator[](ulong) +00099E9F: mov rdx, [rbp+var_58] +00099EA3: lea rcx, [rdx+188h] +00099EAA: mov edx, ebx +00099EAC: mov rsi, rax +00099EAF: mov rdi, rcx +00099EB2: call __ZN11CMagService15GetTerminalListEP19struct_TerminalListj; CMagService::GetTerminalList(struct_TerminalList *,uint) +00099EB7: mov [rbp+var_24], eax +00099EBA: cmp [rbp+var_24], 0 +00099EBE: jnz short loc_99ECD +00099EC0: mov ebx, 0 +00099EC5: mov r12d, 0 +00099ECB: jmp short loc_99ED6 +00099ECD: mov r12d, 1 +00099ED3: mov ebx, r13d +00099ED6: lea rax, [rbp+var_50] +00099EDA: mov rdi, rax +00099EDD: call __ZNSt6vectorI19struct_TerminalListSaIS0_EED2Ev; std::vector>::~vector() +00099EE2: cmp r12d, 1 +00099EE6: jnz loc_9A110 +00099EEC: nop +00099EED: mov rax, [rbp+var_58] +00099EF1: add rax, 20h ; ' ' +00099EF5: mov esi, 0; unsigned int +00099EFA: mov rdi, rax; this +00099EFD: call __ZN10CMagDevice10LinkCameraEj; CMagDevice::LinkCamera(uint) +00099F02: test eax, eax +00099F04: setz al +00099F07: test al, al +00099F09: jz short loc_99F21 +00099F0B: jmp short loc_99F17 +00099F0D: mov ebx, 0 +00099F12: jmp loc_9A110 +00099F17: mov ebx, 0 +00099F1C: jmp loc_9A110 +00099F21: mov rax, [rbp+var_58] +00099F25: add rax, 20h ; ' ' +00099F29: mov rdi, rax; this +00099F2C: call __ZN10CMagDevice10GetCamInfoEv; CMagDevice::GetCamInfo(void) +00099F31: mov [rbp+var_30], rax +00099F35: cmp [rbp+var_30], 0 +00099F3A: jnz short loc_99F46 +00099F3C: mov ebx, 0 +00099F41: jmp loc_9A110 +00099F46: mov rax, [rbp+var_30] +00099F4A: mov edx, [rax] +00099F4C: mov rax, [rbp+var_58] +00099F50: mov [rax+78h], edx +00099F53: mov rax, [rbp+var_30] +00099F57: mov edx, [rax+4] +00099F5A: mov rax, [rbp+var_58] +00099F5E: mov [rax+7Ch], edx +00099F61: mov rax, [rbp+var_30] +00099F65: mov edx, [rax+40h] +00099F68: mov rax, [rbp+var_58] +00099F6C: mov [rax+80h], edx +00099F72: mov rax, [rbp+var_30] +00099F76: mov edx, [rax+44h] +00099F79: mov rax, [rbp+var_58] +00099F7D: mov [rax+84h], edx +00099F83: mov rax, [rbp+var_58] +00099F87: mov dword ptr [rax+88h], 10h +00099F91: mov rax, [rbp+var_30] +00099F95: mov edx, [rax+44h] +00099F98: mov rax, [rbp+var_58] +00099F9C: mov [rax+8Ch], edx +00099FA2: mov rax, [rbp+var_58] +00099FA6: lea rdx, [rax+0D0h] +00099FAD: mov rax, [rbp+var_58] +00099FB1: add rax, 20h ; ' ' +00099FB5: mov rsi, rdx +00099FB8: mov rdi, rax +00099FBB: call __ZN10CMagDevice10GetFixParaEP14struct_FixPara; CMagDevice::GetFixPara(struct_FixPara *) +00099FC0: mov rdx, [rbp+var_58] +00099FC4: mov eax, cs:dword_D3A10 +00099FCA: mov [rdx+0D0h], eax +00099FD0: mov rax, [rbp+var_58] +00099FD4: movsd xmm0, qword ptr [rax+0C8h] +00099FDC: unpcklpd xmm0, xmm0 +00099FE0: cvtpd2ps xmm0, xmm0 +00099FE4: mov rax, [rbp+var_58] +00099FE8: movss dword ptr [rax+0D4h], xmm0 +00099FF0: mov rax, [rbp+var_58] +00099FF4: lea rcx, [rax+0D0h] +00099FFB: mov rax, [rbp+var_58] +00099FFF: add rax, 20h ; ' ' +0009A003: mov edx, 2 +0009A008: mov rsi, rcx +0009A00B: mov rdi, rax +0009A00E: call __ZN10CMagDevice10SetFixParaEPK14struct_FixPara12FixSelection; CMagDevice::SetFixPara(struct_FixPara const*,FixSelection) +0009A013: mov rax, [rbp+var_58] +0009A017: add rax, 20h ; ' ' +0009A01B: mov edx, 0; int +0009A020: mov esi, 0FFFFD120h; int +0009A025: mov rdi, rax; this +0009A028: call __ZN10CMagDevice22SetEnvTempEstimateModeEii; CMagDevice::SetEnvTempEstimateMode(int,int) +0009A02D: mov rax, [rbp+var_30] +0009A031: lea rdx, [rax+10h] +0009A035: mov rax, [rbp+var_58] +0009A039: add rax, 120h +0009A03F: mov rsi, rdx +0009A042: mov rdi, rax +0009A045: call __ZNSsaSEPKc; std::string::operator=(char const*) +0009A04A: mov rax, [rbp+var_58] +0009A04E: mov edx, [rax+80h] +0009A054: mov rax, [rbp+var_58] +0009A058: mov eax, [rax+84h] +0009A05E: imul edx, eax +0009A061: mov eax, edx +0009A063: add eax, eax +0009A065: add eax, edx +0009A067: mov edx, eax +0009A069: mov rax, [rbp+var_58] +0009A06D: mov [rax+90h], edx +0009A073: mov rax, [rbp+var_58] +0009A077: mov eax, [rax+90h] +0009A07D: cdqe +0009A07F: mov rdi, rax; unsigned __int64 +0009A082: call __Znam; operator new[](ulong) +0009A087: mov rdx, [rbp+var_58] +0009A08B: mov [rdx+98h], rax +0009A092: mov rax, [rbp+var_58] +0009A096: lea rdi, [rax+20h]; this +0009A09A: mov rax, [rbp+var_58] +0009A09E: mov r8, rax; void * +0009A0A1: mov ecx, 0; int +0009A0A6: mov edx, 0; int +0009A0AB: mov rax, cs:_Z14NewFrame_LinuxjjjPv_ptr +0009A0B2: mov rsi, rax; void (__fastcall *)(unsigned int, unsigned int, unsigned int, void *) +0009A0B5: call __ZN10CMagDevice17StartProcessImageEPFvjjjPvEiiS0_; CMagDevice::StartProcessImage(void (*)(uint,uint,uint,void *),int,int,void *) +0009A0BA: test eax, eax +0009A0BC: setz al +0009A0BF: test al, al +0009A0C1: jz short loc_9A0DA +0009A0C3: mov rax, [rbp+var_58] +0009A0C7: add rax, 20h ; ' ' +0009A0CB: mov rdi, rax; this +0009A0CE: call __ZN10CMagDevice13DisLinkCameraEv; CMagDevice::DisLinkCamera(void) +0009A0D3: mov ebx, 0 +0009A0D8: jmp short loc_9A110 +0009A0DA: mov [rbp+var_34], 2 +0009A0E1: mov rax, [rbp+var_58] +0009A0E5: lea rdx, [rax+20h] +0009A0E9: mov eax, [rbp+var_34] +0009A0EC: mov esi, eax +0009A0EE: mov rdi, rdx +0009A0F1: call __ZN10CMagDevice15SetColorPaletteE12ColorPalette; CMagDevice::SetColorPalette(ColorPalette) +0009A0F6: mov rax, [rbp+var_58] +0009A0FA: add rax, 20h ; ' ' +0009A0FE: mov esi, 1 +0009A103: mov rdi, rax +0009A106: call __ZN10CMagDevice27SetEstimateUnderArmTempModeE19BodyTempConvertMode; CMagDevice::SetEstimateUnderArmTempMode(BodyTempConvertMode) +0009A10B: mov ebx, 1 +0009A110: mov eax, ebx +0009A112: jmp short loc_9A12E +0009A114: mov rbx, rax +0009A117: lea rax, [rbp+var_50] +0009A11B: mov rdi, rax +0009A11E: call __ZNSt6vectorI19struct_TerminalListSaIS0_EED2Ev; std::vector>::~vector() +0009A123: mov rax, rbx +0009A126: mov rdi, rax; struct _Unwind_Exception * +0009A129: call __Unwind_Resume +0009A12E: add rsp, 48h +0009A132: pop rbx +0009A133: pop r12 +0009A135: pop r13 +0009A137: pop rbp +0009A138: retn + +### FUNC 0009A13A - 0009A1A5 (107 bytes) name=_ZN17ThermalController7stopMagEv +0009A13A: push rbp +0009A13B: mov rbp, rsp +0009A13E: sub rsp, 10h +0009A142: mov [rbp+var_8], rdi +0009A146: mov rax, [rbp+var_8] +0009A14A: add rax, 20h ; ' ' +0009A14E: mov rdi, rax; this +0009A151: call __ZN10CMagDevice17IsProcessingImageEv; CMagDevice::IsProcessingImage(void) +0009A156: test eax, eax +0009A158: setnz al +0009A15B: test al, al +0009A15D: jz short loc_9A16F +0009A15F: mov rax, [rbp+var_8] +0009A163: add rax, 20h ; ' ' +0009A167: mov rdi, rax; this +0009A16A: call __ZN10CMagDevice16StopProcessImageEv; CMagDevice::StopProcessImage(void) +0009A16F: mov rax, [rbp+var_8] +0009A173: add rax, 20h ; ' ' +0009A177: mov rdi, rax; this +0009A17A: call __ZN10CMagDevice8IsLinkedEv; CMagDevice::IsLinked(void) +0009A17F: test eax, eax +0009A181: setnz al +0009A184: test al, al +0009A186: jz short loc_9A198 +0009A188: mov rax, [rbp+var_8] +0009A18C: add rax, 20h ; ' ' +0009A190: mov rdi, rax; this +0009A193: call __ZN10CMagDevice13DisLinkCameraEv; CMagDevice::DisLinkCamera(void) +0009A198: mov rax, [rbp+var_8] +0009A19C: mov byte ptr [rax+138h], 0 +0009A1A3: leave +0009A1A4: retn + +### FUNC 0009A1A6 - 0009A1C3 (29 bytes) name=_ZN17ThermalController13setNewIRFrameEPFvPKhiiiE +0009A1A6: push rbp +0009A1A7: mov rbp, rsp +0009A1AA: mov [rbp+var_8], rdi +0009A1AE: mov [rbp+var_10], rsi +0009A1B2: mov rax, [rbp+var_8] +0009A1B6: mov rdx, [rbp+var_10] +0009A1BA: mov [rax+0A0h], rdx +0009A1C1: pop rbp +0009A1C2: retn + +### FUNC 0009A1C4 - 0009A3BE (506 bytes) name=_ZN17ThermalController8startTCMEv +0009A1C4: push rbp +0009A1C5: mov rbp, rsp +0009A1C8: push r12 +0009A1CA: push rbx +0009A1CB: sub rsp, 90h +0009A1D2: mov [rbp+var_98], rdi +0009A1D9: mov rax, [rbp+var_98] +0009A1E0: mov byte ptr [rax+13Bh], 0 +0009A1E7: lea rax, [rbp+var_40] +0009A1EB: mov rdi, rax; this +0009A1EE: call __ZN6serial10list_portsEv; serial::list_ports(void) +0009A1F3: lea rax, [rbp+var_40] +0009A1F7: mov [rbp+var_18], rax +0009A1FB: mov rax, [rbp+var_18] +0009A1FF: mov rdi, rax +0009A202: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EE5beginEv; std::vector>::begin(void) +0009A207: mov [rbp+var_70], rax +0009A20B: mov rax, [rbp+var_18] +0009A20F: mov rdi, rax +0009A212: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EE3endEv; std::vector>::end(void) +0009A217: mov [rbp+var_80], rax +0009A21B: jmp loc_9A332 +0009A220: lea rax, [rbp+var_70] +0009A224: mov rdi, rax +0009A227: call __ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +0009A22C: mov rdx, rax +0009A22F: lea rax, [rbp+var_60] +0009A233: mov rsi, rdx; serial::PortInfo * +0009A236: mov rdi, rax; this +0009A239: call __ZN6serial8PortInfoC2ERKS0_; serial::PortInfo::PortInfo(serial::PortInfo const&) +0009A23E: lea rax, [rbp+var_60] +0009A242: lea rdx, [rax+10h] +0009A246: lea rax, [rbp+var_90] +0009A24D: mov rsi, rdx; std::string * +0009A250: mov rdi, rax; this +0009A253: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009A258: lea rax, [rbp+var_90] +0009A25F: mov edx, 0; unsigned __int64 +0009A264: lea rsi, aUsbVidPid04036; "USB VID:PID=0403:6001" +0009A26B: mov rdi, rax; this +0009A26E: call __ZNKSs4findEPKcm; std::string::find(char const*,ulong) +0009A273: cmp rax, 0FFFFFFFFFFFFFFFFh +0009A277: setnz al +0009A27A: test al, al +0009A27C: jz short loc_9A2E7 +0009A27E: lea rax, [rbp+var_90] +0009A285: mov rdi, rax; this +0009A288: call __ZNKSs5c_strEv; std::string::c_str(void) +0009A28D: mov rsi, rax +0009A290: lea rdi, format; "find device:%s\n" +0009A297: mov eax, 0 +0009A29C: call _printf +0009A2A1: lea rdx, [rbp+var_60] +0009A2A5: lea rax, [rbp+var_20] +0009A2A9: mov rsi, rdx; std::string * +0009A2AC: mov rdi, rax; this +0009A2AF: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009A2B4: mov rax, [rbp+var_98] +0009A2BB: mov rax, [rax+0A8h] +0009A2C2: lea rdx, [rbp+var_20] +0009A2C6: mov rsi, rdx +0009A2C9: mov rdi, rax +0009A2CC: call __ZN9TCMDevice4openESs; TCMDevice::open(std::string) +0009A2D1: mov ebx, eax +0009A2D3: lea rax, [rbp+var_20] +0009A2D7: mov rdi, rax; this +0009A2DA: call __ZNSsD1Ev; std::string::~string() +0009A2DF: mov r12d, 0 +0009A2E5: jmp short loc_9A2ED +0009A2E7: mov r12d, 1 +0009A2ED: lea rax, [rbp+var_90] +0009A2F4: mov rdi, rax; this +0009A2F7: call __ZNSsD1Ev; std::string::~string() +0009A2FC: cmp r12d, 1 +0009A300: jz short loc_9A30A +0009A302: mov r12d, 0 +0009A308: jmp short loc_9A311 +0009A30A: nop +0009A30B: mov r12d, 1 +0009A311: lea rax, [rbp+var_60] +0009A315: mov rdi, rax; this +0009A318: call __ZN6serial8PortInfoD2Ev; serial::PortInfo::~PortInfo() +0009A31D: cmp r12d, 1 +0009A321: jz short loc_9A325 +0009A323: jmp short loc_9A352 +0009A325: nop +0009A326: lea rax, [rbp+var_70] +0009A32A: mov rdi, rax +0009A32D: call __ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +0009A332: lea rdx, [rbp+var_80] +0009A336: lea rax, [rbp+var_70] +0009A33A: mov rsi, rdx +0009A33D: mov rdi, rax +0009A340: call __ZN9__gnu_cxxneIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +0009A345: test al, al +0009A347: jnz loc_9A220 +0009A34D: mov ebx, 0 +0009A352: lea rax, [rbp+var_40] +0009A356: mov rdi, rax +0009A359: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev; std::vector>::~vector() +0009A35E: mov eax, ebx +0009A360: jmp short loc_9A3B2 +0009A362: mov rbx, rax +0009A365: lea rax, [rbp+var_20] +0009A369: mov rdi, rax; this +0009A36C: call __ZNSsD1Ev; std::string::~string() +0009A371: jmp short loc_9A376 +0009A373: mov rbx, rax +0009A376: lea rax, [rbp+var_90] +0009A37D: mov rdi, rax; this +0009A380: call __ZNSsD1Ev; std::string::~string() +0009A385: jmp short loc_9A38A +0009A387: mov rbx, rax +0009A38A: lea rax, [rbp+var_60] +0009A38E: mov rdi, rax; this +0009A391: call __ZN6serial8PortInfoD2Ev; serial::PortInfo::~PortInfo() +0009A396: jmp short loc_9A39B +0009A398: mov rbx, rax +0009A39B: lea rax, [rbp+var_40] +0009A39F: mov rdi, rax +0009A3A2: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev; std::vector>::~vector() +0009A3A7: mov rax, rbx +0009A3AA: mov rdi, rax; struct _Unwind_Exception * +0009A3AD: call __Unwind_Resume +0009A3B2: add rsp, 90h +0009A3B9: pop rbx +0009A3BA: pop r12 +0009A3BC: pop rbp +0009A3BD: retn + +### FUNC 0009A3BE - 0009A42F (113 bytes) name=_ZN17ThermalController7stopTCMEv +0009A3BE: push rbp +0009A3BF: mov rbp, rsp +0009A3C2: push rbx +0009A3C3: sub rsp, 18h +0009A3C7: mov [rbp+var_18], rdi +0009A3CB: mov rax, [rbp+var_18] +0009A3CF: mov rax, [rax+0A8h] +0009A3D6: mov rdi, rax; this +0009A3D9: call __ZN9TCMDevice5closeEv; TCMDevice::close(void) +0009A3DE: mov rax, [rbp+var_18] +0009A3E2: mov byte ptr [rax+139h], 0 +0009A3E9: mov rax, [rbp+var_18] +0009A3ED: mov rax, [rax+180h] +0009A3F4: test rax, rax +0009A3F7: jz short loc_9A428 +0009A3F9: mov rax, [rbp+var_18] +0009A3FD: mov rbx, [rax+180h] +0009A404: test rbx, rbx +0009A407: jz short loc_9A419 +0009A409: mov rdi, rbx; this +0009A40C: call __ZN13TCMPresetDataD2Ev; TCMPresetData::~TCMPresetData() +0009A411: mov rdi, rbx; void * +0009A414: call __ZdlPv; operator delete(void *) +0009A419: mov rax, [rbp+var_18] +0009A41D: mov qword ptr [rax+180h], 0 +0009A428: add rsp, 18h +0009A42C: pop rbx +0009A42D: pop rbp +0009A42E: retn + +### FUNC 0009A430 - 0009A44D (29 bytes) name=_ZN17ThermalController14setNewDistanceEPFvfE +0009A430: push rbp +0009A431: mov rbp, rsp +0009A434: mov [rbp+var_8], rdi +0009A438: mov [rbp+var_10], rsi +0009A43C: mov rax, [rbp+var_8] +0009A440: mov rdx, [rbp+var_10] +0009A444: mov [rax+0B0h], rdx +0009A44B: pop rbp +0009A44C: retn + +### FUNC 0009A44E - 0009A46B (29 bytes) name=_ZN17ThermalController16setDistanceErrorEPFvvE +0009A44E: push rbp +0009A44F: mov rbp, rsp +0009A452: mov [rbp+var_8], rdi +0009A456: mov [rbp+var_10], rsi +0009A45A: mov rax, [rbp+var_8] +0009A45E: mov rdx, [rbp+var_10] +0009A462: mov [rax+0B8h], rdx +0009A469: pop rbp +0009A46A: retn + +### FUNC 0009A46C - 0009A4E5 (121 bytes) name=_ZN17ThermalController22readTemperatureAtPointEiiP17TemperatureResult +0009A46C: push rbp +0009A46D: mov rbp, rsp +0009A470: sub rsp, 50h +0009A474: mov qword ptr [rbp+var_38], rdi +0009A478: mov [rbp+var_3C], esi +0009A47B: mov [rbp+var_40], edx +0009A47E: mov [rbp+var_48], rcx +0009A482: mov rax, qword ptr [rbp+var_38] +0009A486: add rax, 20h ; ' ' +0009A48A: mov rdi, rax; this +0009A48D: call __ZN10CMagDevice4LockEv; CMagDevice::Lock(void) +0009A492: lea rax, [rbp+var_30] +0009A496: mov ecx, [rbp+var_40] +0009A499: mov edx, [rbp+var_3C]; int +0009A49C: mov rsi, qword ptr [rbp+var_38]; int +0009A4A0: mov rdi, rax; this +0009A4A3: call __ZN17ThermalController21getTemperatureAtPointEii; ThermalController::getTemperatureAtPoint(int,int) +0009A4A8: mov rax, qword ptr [rbp+var_38] +0009A4AC: add rax, 20h ; ' ' +0009A4B0: mov rdi, rax; this +0009A4B3: call __ZN10CMagDevice6UnlockEv; CMagDevice::Unlock(void) +0009A4B8: mov rax, [rbp+var_48] +0009A4BC: mov rdx, [rbp+var_30] +0009A4C0: mov [rax], rdx +0009A4C3: mov rdx, [rbp+var_28] +0009A4C7: mov [rax+8], rdx +0009A4CB: mov rdx, [rbp+var_20] +0009A4CF: mov [rax+10h], rdx +0009A4D3: mov rdx, [rbp+var_18] +0009A4D7: mov [rax+18h], rdx +0009A4DB: mov rdx, [rbp+var_10] +0009A4DF: mov [rax+20h], rdx +0009A4E3: leave +0009A4E4: retn + +### FUNC 0009A4E6 - 0009A56F (137 bytes) name=_ZN17ThermalController21readTemperatureInRectE4RectP17TemperatureResult +0009A4E6: push rbp +0009A4E7: mov rbp, rsp +0009A4EA: sub rsp, 50h +0009A4EE: mov [rbp+var_38], rdi +0009A4F2: mov rax, rsi +0009A4F5: mov rsi, rdx +0009A4F8: mov rdx, rsi +0009A4FB: mov [rbp+var_50], rax +0009A4FF: mov [rbp+var_48], rdx +0009A503: mov [rbp+var_40], rcx +0009A507: mov rax, [rbp+var_38] +0009A50B: add rax, 20h ; ' ' +0009A50F: mov rdi, rax; this +0009A512: call __ZN10CMagDevice4LockEv; CMagDevice::Lock(void) +0009A517: lea rdi, [rbp+var_30] +0009A51B: mov rax, [rbp+var_50] +0009A51F: mov rdx, [rbp+var_48] +0009A523: mov rsi, [rbp+var_38] +0009A527: mov rcx, rdx +0009A52A: mov rdx, rax +0009A52D: call __ZN17ThermalController20getTemperatureInRectE4Rect; ThermalController::getTemperatureInRect(Rect) +0009A532: mov rax, [rbp+var_38] +0009A536: add rax, 20h ; ' ' +0009A53A: mov rdi, rax; this +0009A53D: call __ZN10CMagDevice6UnlockEv; CMagDevice::Unlock(void) +0009A542: mov rax, [rbp+var_40] +0009A546: mov rdx, [rbp+var_30] +0009A54A: mov [rax], rdx +0009A54D: mov rdx, [rbp+var_28] +0009A551: mov [rax+8], rdx +0009A555: mov rdx, [rbp+var_20] +0009A559: mov [rax+10h], rdx +0009A55D: mov rdx, [rbp+var_18] +0009A561: mov [rax+18h], rdx +0009A565: mov rdx, [rbp+var_10] +0009A569: mov [rax+20h], rdx +0009A56D: leave +0009A56E: retn + +### FUNC 0009A570 - 0009A5B6 (70 bytes) name=_ZN17ThermalController15setTempBoundaryEddd +0009A570: push rbp +0009A571: mov rbp, rsp +0009A574: mov [rbp+var_8], rdi +0009A578: movsd [rbp+var_10], xmm0 +0009A57D: movsd [rbp+var_18], xmm1 +0009A582: movsd [rbp+var_20], xmm2 +0009A587: mov rdx, [rbp+var_8] +0009A58B: mov rax, [rbp+var_10] +0009A58F: mov [rdx+108h], rax +0009A596: mov rdx, [rbp+var_8] +0009A59A: mov rax, [rbp+var_18] +0009A59E: mov [rdx+110h], rax +0009A5A5: mov rdx, [rbp+var_8] +0009A5A9: mov rax, [rbp+var_20] +0009A5AD: mov [rdx+100h], rax +0009A5B4: pop rbp +0009A5B5: retn + +### FUNC 0009A5B6 - 0009A5D4 (30 bytes) name=_ZN17ThermalController13setTempOffsetEd +0009A5B6: push rbp +0009A5B7: mov rbp, rsp +0009A5BA: mov [rbp+var_8], rdi +0009A5BE: movsd [rbp+var_10], xmm0 +0009A5C3: mov rdx, [rbp+var_8] +0009A5C7: mov rax, [rbp+var_10] +0009A5CB: mov [rdx+118h], rax +0009A5D2: pop rbp +0009A5D3: retn + +### FUNC 0009A5D4 - 0009A5EE (26 bytes) name=_ZN17ThermalController11setUnitModeEi +0009A5D4: push rbp +0009A5D5: mov rbp, rsp +0009A5D8: mov [rbp+var_8], rdi +0009A5DC: mov [rbp+var_C], esi +0009A5DF: mov rax, [rbp+var_8] +0009A5E3: mov edx, [rbp+var_C] +0009A5E6: mov [rax+0FCh], edx +0009A5EC: pop rbp +0009A5ED: retn + +### FUNC 0009A5EE - 0009A682 (148 bytes) name=_ZN17ThermalController6rotateEi +0009A5EE: push rbp +0009A5EF: mov rbp, rsp +0009A5F2: sub rsp, 20h +0009A5F6: mov [rbp+var_18], rdi +0009A5FA: mov [rbp+var_1C], esi +0009A5FD: mov rax, [rbp+var_18] +0009A601: mov rdi, rax; this +0009A604: call __ZN17ThermalController18checkRotateWithFFCEv; ThermalController::checkRotateWithFFC(void) +0009A609: test al, al +0009A60B: jz short loc_9A614 +0009A60D: mov eax, 0 +0009A612: jmp short locret_9A680 +0009A614: mov rax, [rbp+var_18] +0009A618: mov rax, [rax+0A8h] +0009A61F: mov rdi, rax; this +0009A622: call __ZN16ThermalTCMDevice14getMotorDeviceEv; ThermalTCMDevice::getMotorDevice(void) +0009A627: mov [rbp+var_8], rax +0009A62B: cmp [rbp+var_8], 0 +0009A630: jz short loc_9A67B +0009A632: mov rax, [rbp+var_18] +0009A636: mov byte ptr [rax+13Bh], 1 +0009A63D: mov rax, [rbp+var_18] +0009A641: mov esi, 0; bool +0009A646: mov rdi, rax; this +0009A649: call __ZN17ThermalController9enableFFCEb; ThermalController::enableFFC(bool) +0009A64E: mov edx, [rbp+var_1C] +0009A651: mov rax, [rbp+var_8] +0009A655: mov esi, edx; int +0009A657: mov rdi, rax; this +0009A65A: call __ZN14EloMotorDevice6rotateEi; EloMotorDevice::rotate(int) +0009A65F: mov rax, [rbp+var_18] +0009A663: mov byte ptr [rax+13Bh], 0 +0009A66A: mov rax, [rbp+var_18] +0009A66E: mov esi, 1; bool +0009A673: mov rdi, rax; this +0009A676: call __ZN17ThermalController9enableFFCEb; ThermalController::enableFFC(bool) +0009A67B: mov eax, 1 +0009A680: leave +0009A681: retn + +### FUNC 0009A682 - 0009A69F (29 bytes) name=_ZN17ThermalController21setLimitEventListenerEPFvbE +0009A682: push rbp +0009A683: mov rbp, rsp +0009A686: mov [rbp+var_8], rdi +0009A68A: mov [rbp+var_10], rsi +0009A68E: mov rax, [rbp+var_8] +0009A692: mov rdx, [rbp+var_10] +0009A696: mov [rax+178h], rdx +0009A69D: pop rbp +0009A69E: retn + +### FUNC 0009A6A0 - 0009A6D6 (54 bytes) name=_ZN17ThermalController7onPlaceEb +0009A6A0: push rbp +0009A6A1: mov rbp, rsp +0009A6A4: sub rsp, 10h +0009A6A8: mov [rbp+var_8], rdi +0009A6AC: mov eax, esi +0009A6AE: mov [rbp+var_C], al +0009A6B1: mov rax, [rbp+var_8] +0009A6B5: mov rax, [rax+178h] +0009A6BC: test rax, rax +0009A6BF: jz short locret_9A6D4 +0009A6C1: mov rax, [rbp+var_8] +0009A6C5: mov rax, [rax+178h] +0009A6CC: movzx edx, [rbp+var_C] +0009A6D0: mov edi, edx +0009A6D2: call rax +0009A6D4: leave +0009A6D5: retn + +### FUNC 0009A6D6 - 0009A6DC (6 bytes) name=_ZThn16_N17ThermalController7onPlaceEb +0009A6D6: sub rdi, 10h; this +0009A6DA: jmp short _ZN17ThermalController7onPlaceEb; ThermalController::onPlace(bool) + +### FUNC 0009A6DC - 0009A768 (140 bytes) name=_ZN17ThermalController10limitResetEv +0009A6DC: push rbp +0009A6DD: mov rbp, rsp +0009A6E0: sub rsp, 20h +0009A6E4: mov [rbp+var_18], rdi +0009A6E8: mov rax, [rbp+var_18] +0009A6EC: mov rdi, rax; this +0009A6EF: call __ZN17ThermalController18checkRotateWithFFCEv; ThermalController::checkRotateWithFFC(void) +0009A6F4: test al, al +0009A6F6: jz short loc_9A6FF +0009A6F8: mov eax, 0 +0009A6FD: jmp short locret_9A766 +0009A6FF: mov rax, [rbp+var_18] +0009A703: mov rax, [rax+0A8h] +0009A70A: mov rdi, rax; this +0009A70D: call __ZN16ThermalTCMDevice14getMotorDeviceEv; ThermalTCMDevice::getMotorDevice(void) +0009A712: mov [rbp+var_8], rax +0009A716: cmp [rbp+var_8], 0 +0009A71B: jz short loc_9A761 +0009A71D: mov rax, [rbp+var_18] +0009A721: mov byte ptr [rax+13Bh], 1 +0009A728: mov rax, [rbp+var_18] +0009A72C: mov esi, 0; bool +0009A731: mov rdi, rax; this +0009A734: call __ZN17ThermalController9enableFFCEb; ThermalController::enableFFC(bool) +0009A739: mov rax, [rbp+var_8] +0009A73D: mov rdi, rax; this +0009A740: call __ZN14EloMotorDevice10limitResetEv; EloMotorDevice::limitReset(void) +0009A745: mov rax, [rbp+var_18] +0009A749: mov byte ptr [rax+13Bh], 0 +0009A750: mov rax, [rbp+var_18] +0009A754: mov esi, 1; bool +0009A759: mov rdi, rax; this +0009A75C: call __ZN17ThermalController9enableFFCEb; ThermalController::enableFFC(bool) +0009A761: mov eax, 1 +0009A766: leave +0009A767: retn + +### FUNC 0009A768 - 0009A785 (29 bytes) name=_ZN17ThermalController17setUpdateCallbackEPFvbiE +0009A768: push rbp +0009A769: mov rbp, rsp +0009A76C: mov [rbp+var_8], rdi +0009A770: mov [rbp+var_10], rsi +0009A774: mov rax, [rbp+var_8] +0009A778: mov rdx, [rbp+var_10] +0009A77C: mov [rax+170h], rdx +0009A783: pop rbp +0009A784: retn + +### FUNC 0009A786 - 0009A7C8 (66 bytes) name=_ZN17ThermalController8onUpdateEP19EloTCMUpdaterDevicebi +0009A786: push rbp +0009A787: mov rbp, rsp +0009A78A: sub rsp, 20h +0009A78E: mov [rbp+var_8], rdi +0009A792: mov [rbp+var_10], rsi +0009A796: mov eax, edx +0009A798: mov [rbp+var_18], ecx +0009A79B: mov [rbp+var_14], al +0009A79E: mov rax, [rbp+var_8] +0009A7A2: mov rax, [rax+170h] +0009A7A9: test rax, rax +0009A7AC: jz short locret_9A7C6 +0009A7AE: mov rax, [rbp+var_8] +0009A7B2: mov rax, [rax+170h] +0009A7B9: movzx edx, [rbp+var_14] +0009A7BD: mov ecx, [rbp+var_18] +0009A7C0: mov esi, ecx +0009A7C2: mov edi, edx +0009A7C4: call rax +0009A7C6: leave +0009A7C7: retn + +### FUNC 0009A7C8 - 0009A7CE (6 bytes) name=_ZThn24_N17ThermalController8onUpdateEP19EloTCMUpdaterDevicebi +0009A7C8: sub rdi, 18h +0009A7CC: jmp short _ZN17ThermalController8onUpdateEP19EloTCMUpdaterDevicebi; ThermalController::onUpdate(EloTCMUpdaterDevice *,bool,int) + +### FUNC 0009A7CE - 0009A816 (72 bytes) name=_ZN17ThermalController9enableFFCEb +0009A7CE: push rbp +0009A7CF: mov rbp, rsp +0009A7D2: sub rsp, 10h +0009A7D6: mov [rbp+var_8], rdi +0009A7DA: mov eax, esi +0009A7DC: mov [rbp+var_C], al +0009A7DF: mov rax, [rbp+var_8] +0009A7E3: add rax, 20h ; ' ' +0009A7E7: mov rdi, rax; this +0009A7EA: call __ZN10CMagDevice13IsInitializedEv; CMagDevice::IsInitialized(void) +0009A7EF: test eax, eax +0009A7F1: setnz al +0009A7F4: test al, al +0009A7F6: jz short locret_9A814 +0009A7F8: movzx eax, [rbp+var_C] +0009A7FC: xor eax, 1 +0009A7FF: movzx eax, al +0009A802: mov rdx, [rbp+var_8] +0009A806: add rdx, 20h ; ' ' +0009A80A: mov esi, eax; int +0009A80C: mov rdi, rdx; this +0009A80F: call __ZN10CMagDevice10SetFFCModeEi; CMagDevice::SetFFCMode(int) +0009A814: leave +0009A815: retn + +### FUNC 0009A816 - 0009A85A (68 bytes) name=_ZN17ThermalController18checkRotateWithFFCEv +0009A816: push rbp +0009A817: mov rbp, rsp +0009A81A: mov [rbp+var_8], rdi +0009A81E: mov rax, [rbp+var_8] +0009A822: movzx eax, byte ptr [rax+13Ah] +0009A829: test al, al +0009A82B: jnz short loc_9A83C +0009A82D: mov rax, [rbp+var_8] +0009A831: movzx eax, byte ptr [rax+13Bh] +0009A838: test al, al +0009A83A: jz short loc_9A843 +0009A83C: mov eax, 1 +0009A841: jmp short loc_9A848 +0009A843: mov eax, 0 +0009A848: test al, al +0009A84A: jz short loc_9A853 +0009A84C: mov eax, 0 +0009A851: jmp short loc_9A858 +0009A853: mov eax, 0 +0009A858: pop rbp +0009A859: retn + +### FUNC 0009A85A - 0009A8DF (133 bytes) name=_ZN17ThermalController20getInnerIRCameraTempEv +0009A85A: push rbp +0009A85B: mov rbp, rsp +0009A85E: sub rsp, 20h +0009A862: mov [rbp+var_18], rdi +0009A866: mov rax, [rbp+var_18] +0009A86A: add rax, 20h ; ' ' +0009A86E: mov rdi, rax; this +0009A871: call __ZN10CMagDevice32GetCurrentCameraInnerTemperatureEv; CMagDevice::GetCurrentCameraInnerTemperature(void) +0009A876: mov rdx, [rbp+var_18] +0009A87A: mov [rdx+0C0h], eax +0009A880: mov rax, [rbp+var_18] +0009A884: mov eax, [rax+0C0h] +0009A88A: cvtsi2sd xmm0, eax +0009A88E: movsd xmm1, cs:qword_D3A18 +0009A896: mulsd xmm0, xmm1 +0009A89A: movsd [rbp+var_8], xmm0 +0009A89F: mov rax, [rbp+var_18] +0009A8A3: mov eax, [rax+0FCh] +0009A8A9: cmp eax, 1 +0009A8AC: jnz short loc_9A8D0 +0009A8AE: movsd xmm1, [rbp+var_8] +0009A8B3: movsd xmm0, cs:qword_D3A20 +0009A8BB: mulsd xmm0, xmm1 +0009A8BF: movsd xmm1, cs:qword_D3A08 +0009A8C7: addsd xmm0, xmm1 +0009A8CB: movsd [rbp+var_8], xmm0 +0009A8D0: mov rax, [rbp+var_8] +0009A8D4: mov [rbp+var_20], rax +0009A8D8: movsd xmm0, [rbp+var_20] +0009A8DD: leave +0009A8DE: retn + +### FUNC 0009A8E0 - 0009A97C (156 bytes) name=_ZN17ThermalController22getInnerIRCameraSerialEv +0009A8E0: push rbp +0009A8E1: mov rbp, rsp +0009A8E4: push rbx +0009A8E5: sub rsp, 28h +0009A8E9: mov [rbp+var_28], rdi +0009A8ED: mov [rbp+var_30], rsi +0009A8F1: mov rax, [rbp+var_30] +0009A8F5: add rax, 20h ; ' ' +0009A8F9: mov rdi, rax; this +0009A8FC: call __ZN10CMagDevice13IsInitializedEv; CMagDevice::IsInitialized(void) +0009A901: test eax, eax +0009A903: setz al +0009A906: test al, al +0009A908: jz short loc_9A93B +0009A90A: lea rax, [rbp+var_11] +0009A90E: mov rdi, rax +0009A911: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009A916: lea rdx, [rbp+var_11] +0009A91A: mov rax, [rbp+var_28] +0009A91E: lea rsi, unk_CE84D +0009A925: mov rdi, rax +0009A928: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009A92D: lea rax, [rbp+var_11] +0009A931: mov rdi, rax +0009A934: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009A939: jmp short loc_9A971 +0009A93B: mov rax, [rbp+var_30] +0009A93F: lea rdx, [rax+120h] +0009A946: mov rax, [rbp+var_28] +0009A94A: mov rsi, rdx; std::string * +0009A94D: mov rdi, rax; this +0009A950: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009A955: jmp short loc_9A971 +0009A957: mov rbx, rax +0009A95A: lea rax, [rbp+var_11] +0009A95E: mov rdi, rax +0009A961: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009A966: mov rax, rbx +0009A969: mov rdi, rax; struct _Unwind_Exception * +0009A96C: call __Unwind_Resume +0009A971: mov rax, [rbp+var_28] +0009A975: add rsp, 28h +0009A979: pop rbx +0009A97A: pop rbp +0009A97B: retn + +### FUNC 0009A97C - 0009A9F1 (117 bytes) name=_ZN17ThermalController13setEmissivityEd +0009A97C: push rbp +0009A97D: mov rbp, rsp +0009A980: sub rsp, 10h +0009A984: mov [rbp+var_8], rdi +0009A988: movsd [rbp+var_10], xmm0 +0009A98D: mov rax, [rbp+var_8] +0009A991: add rax, 20h ; ' ' +0009A995: mov rdi, rax; this +0009A998: call __ZN10CMagDevice13IsInitializedEv; CMagDevice::IsInitialized(void) +0009A99D: test eax, eax +0009A99F: setz al +0009A9A2: test al, al +0009A9A4: jz short loc_9A9B7 +0009A9A6: mov rdx, [rbp+var_8] +0009A9AA: mov rax, [rbp+var_10] +0009A9AE: mov [rdx+0C8h], rax +0009A9B5: jmp short locret_9A9EF +0009A9B7: movsd xmm0, [rbp+var_10] +0009A9BC: cvtpd2ps xmm0, xmm0 +0009A9C0: mov rax, [rbp+var_8] +0009A9C4: movss dword ptr [rax+0D4h], xmm0 +0009A9CC: mov rax, [rbp+var_8] +0009A9D0: lea rcx, [rax+0D0h] +0009A9D7: mov rax, [rbp+var_8] +0009A9DB: add rax, 20h ; ' ' +0009A9DF: mov edx, 2 +0009A9E4: mov rsi, rcx +0009A9E7: mov rdi, rax +0009A9EA: call __ZN10CMagDevice10SetFixParaEPK14struct_FixPara12FixSelection; CMagDevice::SetFixPara(struct_FixPara const*,FixSelection) +0009A9EF: leave +0009A9F0: retn + +### FUNC 0009A9F2 - 0009AA56 (100 bytes) name=_ZN17ThermalController7triggerEv +0009A9F2: push rbp +0009A9F3: mov rbp, rsp +0009A9F6: sub rsp, 10h +0009A9FA: mov [rbp+var_8], rdi +0009A9FE: mov rax, [rbp+var_8] +0009AA02: mov rdi, rax; this +0009AA05: call __ZN17ThermalController18checkRotateWithFFCEv; ThermalController::checkRotateWithFFC(void) +0009AA0A: test al, al +0009AA0C: jz short loc_9AA15 +0009AA0E: mov eax, 0 +0009AA13: jmp short locret_9AA54 +0009AA15: mov rax, [rbp+var_8] +0009AA19: add rax, 20h ; ' ' +0009AA1D: mov rdi, rax; this +0009AA20: call __ZN10CMagDevice13IsInitializedEv; CMagDevice::IsInitialized(void) +0009AA25: test eax, eax +0009AA27: setnz al +0009AA2A: test al, al +0009AA2C: jz short loc_9AA4F +0009AA2E: mov rax, [rbp+var_8] +0009AA32: mov esi, 1; bool +0009AA37: mov rdi, rax; this +0009AA3A: call __ZN17ThermalController17updateTriggerTimeEb; ThermalController::updateTriggerTime(bool) +0009AA3F: mov rax, [rbp+var_8] +0009AA43: add rax, 20h ; ' ' +0009AA47: mov rdi, rax; this +0009AA4A: call __ZN10CMagDevice10TriggerFFCEv; CMagDevice::TriggerFFC(void) +0009AA4F: mov eax, 1 +0009AA54: leave +0009AA55: retn + +### FUNC 0009AA56 - 0009AA9C (70 bytes) name=_ZN17ThermalController17updateTriggerTimeEb +0009AA56: push rbp +0009AA57: mov rbp, rsp +0009AA5A: sub rsp, 10h +0009AA5E: mov [rbp+var_8], rdi +0009AA62: mov eax, esi +0009AA64: mov [rbp+var_C], al +0009AA67: mov rax, [rbp+var_8] +0009AA6B: movzx edx, [rbp+var_C] +0009AA6F: mov [rax+13Ah], dl +0009AA75: mov rax, [rbp+var_8] +0009AA79: movzx eax, byte ptr [rax+13Ah] +0009AA80: test al, al +0009AA82: jz short locret_9AA9A +0009AA84: mov rax, [rbp+var_8] +0009AA88: mov rdi, rax; this +0009AA8B: call __ZN17ThermalController14getCurrentTimeEv; ThermalController::getCurrentTime(void) +0009AA90: mov rdx, [rbp+var_8] +0009AA94: mov [rdx+0C4h], eax +0009AA9A: leave +0009AA9B: retn + +### FUNC 0009AA9C - 0009AAEC (80 bytes) name=_ZN17ThermalController14getCurrentTimeEv +0009AA9C: push rbp +0009AA9D: mov rbp, rsp +0009AAA0: sub rsp, 20h +0009AAA4: mov [rbp+var_18], rdi +0009AAA8: lea rax, [rbp+tp] +0009AAAC: mov rsi, rax; tp +0009AAAF: mov edi, 1; clock_id +0009AAB4: call _clock_gettime +0009AAB9: mov rax, [rbp+tp.tv_sec] +0009AABD: imul esi, eax, 3E8h +0009AAC3: mov rcx, [rbp+tp.tv_nsec] +0009AAC7: mov rdx, 431BDE82D7B634DBh +0009AAD1: mov rax, rcx +0009AAD4: imul rdx +0009AAD7: sar rdx, 12h +0009AADB: mov rax, rcx +0009AADE: sar rax, 3Fh +0009AAE2: sub rdx, rax +0009AAE5: mov rax, rdx +0009AAE8: add eax, esi +0009AAEA: leave +0009AAEB: retn + +### FUNC 0009AAEC - 0009ABE2 (246 bytes) name=_ZN17ThermalController10onDistanceEi +0009AAEC: push rbp +0009AAED: mov rbp, rsp +0009AAF0: sub rsp, 20h +0009AAF4: mov [rbp+var_18], rdi +0009AAF8: mov [rbp+var_1C], esi +0009AAFB: mov rax, [rbp+var_18] +0009AAFF: mov edx, [rbp+var_1C] +0009AB02: mov [rax+128h], edx +0009AB08: mov rax, [rbp+var_18] +0009AB0C: mov rax, [rax+0B0h] +0009AB13: test rax, rax +0009AB16: jz locret_9ABE0 +0009AB1C: cmp [rbp+var_1C], 0 +0009AB20: jns short loc_9AB85 +0009AB22: mov rax, [rbp+var_18] +0009AB26: mov rax, [rax+0B0h] +0009AB2D: cvtsi2ss xmm0, [rbp+var_1C] +0009AB32: call rax +0009AB34: mov rax, [rbp+var_18] +0009AB38: mov rdi, rax; this +0009AB3B: call __ZN17ThermalController14getCurrentTimeEv; ThermalController::getCurrentTime(void) +0009AB40: mov [rbp+var_4], eax +0009AB43: mov rax, [rbp+var_18] +0009AB47: mov eax, [rax+0C4h] +0009AB4D: mov edx, [rbp+var_4] +0009AB50: sub edx, eax +0009AB52: mov eax, edx +0009AB54: cmp eax, 0EA60h +0009AB59: jbe short loc_9AB83 +0009AB5B: mov edx, [rbp+var_4] +0009AB5E: mov rax, [rbp+var_18] +0009AB62: mov rax, [rax+130h] +0009AB69: sub rdx, rax +0009AB6C: mov rax, rdx +0009AB6F: cmp rax, 1388h +0009AB75: jle short loc_9AB83 +0009AB77: mov rax, [rbp+var_18] +0009AB7B: mov rdi, rax; this +0009AB7E: call __ZN17ThermalController7triggerEv; ThermalController::trigger(void) +0009AB83: jmp short locret_9ABE0 +0009AB85: mov rax, [rbp+var_18] +0009AB89: mov rdi, rax; this +0009AB8C: call __ZN17ThermalController14getCurrentTimeEv; ThermalController::getCurrentTime(void) +0009AB91: mov edx, eax +0009AB93: mov rax, [rbp+var_18] +0009AB97: mov [rax+130h], rdx +0009AB9E: mov rax, [rbp+var_18] +0009ABA2: mov eax, [rax+0FCh] +0009ABA8: test eax, eax +0009ABAA: jnz short loc_9ABC0 +0009ABAC: mov rax, [rbp+var_18] +0009ABB0: mov rax, [rax+0B0h] +0009ABB7: cvtsi2ss xmm0, [rbp+var_1C] +0009ABBC: call rax +0009ABBE: jmp short locret_9ABE0 +0009ABC0: mov rax, [rbp+var_18] +0009ABC4: mov rax, [rax+0B0h] +0009ABCB: cvtsi2ss xmm0, [rbp+var_1C] +0009ABD0: movss xmm1, cs:dword_D3A28 +0009ABD8: mulss xmm0, xmm1 +0009ABDC: call rax +0009ABDE: jmp short $+2 +0009ABE0: leave +0009ABE1: retn + +### FUNC 0009ABE2 - 0009AC0D (43 bytes) name=_ZN17ThermalController6onFailEv +0009ABE2: push rbp +0009ABE3: mov rbp, rsp +0009ABE6: sub rsp, 10h +0009ABEA: mov [rbp+var_8], rdi +0009ABEE: mov rax, [rbp+var_8] +0009ABF2: mov rax, [rax+0B8h] +0009ABF9: test rax, rax +0009ABFC: jz short locret_9AC0B +0009ABFE: mov rax, [rbp+var_8] +0009AC02: mov rax, [rax+0B8h] +0009AC09: call rax +0009AC0B: leave +0009AC0C: retn + +### FUNC 0009AC0E - 0009AC38 (42 bytes) name=_ZN17ThermalController11onMotorDoneEv +0009AC0E: push rbp +0009AC0F: mov rbp, rsp +0009AC12: sub rsp, 10h +0009AC16: mov [rbp+var_8], rdi +0009AC1A: mov rax, [rbp+var_8] +0009AC1E: mov byte ptr [rax+13Bh], 0 +0009AC25: mov rax, [rbp+var_8] +0009AC29: mov esi, 1; bool +0009AC2E: mov rdi, rax; this +0009AC31: call __ZN17ThermalController9enableFFCEb; ThermalController::enableFFC(bool) +0009AC36: leave +0009AC37: retn + +### FUNC 0009AC38 - 0009AC3E (6 bytes) name=_ZThn8_N17ThermalController11onMotorDoneEv +0009AC38: sub rdi, 8; this +0009AC3C: jmp short _ZN17ThermalController11onMotorDoneEv; ThermalController::onMotorDone(void) + +### FUNC 0009AC3E - 0009ADE5 (423 bytes) name=_ZN17ThermalController20getTemperatureInRectE4Rect +0009AC3E: push rbp +0009AC3F: mov rbp, rsp +0009AC42: sub rsp, 0A0h +0009AC49: mov [rbp+var_78], rdi +0009AC4D: mov qword ptr [rbp+var_80], rsi +0009AC51: mov [rbp+var_90], rdx +0009AC58: mov [rbp+var_88], rcx +0009AC5F: mov qword ptr [rbp+var_40], 0 +0009AC67: mov [rbp+var_38], 0 +0009AC6F: mov [rbp+var_30], 0 +0009AC76: mov eax, dword ptr [rbp+var_90+4] +0009AC7C: mov [rbp+var_4], eax +0009AC7F: cmp [rbp+var_4], 0 +0009AC83: jns short loc_9AC8C +0009AC85: mov [rbp+var_4], 0 +0009AC8C: mov edx, dword ptr [rbp+var_90+4] +0009AC92: mov eax, dword ptr [rbp+var_88+4] +0009AC98: add eax, edx +0009AC9A: mov [rbp+var_8], eax +0009AC9D: cmp [rbp+var_8], 77h ; 'w' +0009ACA1: jle short loc_9ACAA +0009ACA3: mov [rbp+var_8], 77h ; 'w' +0009ACAA: mov eax, dword ptr [rbp+var_90] +0009ACB0: mov [rbp+var_C], eax +0009ACB3: cmp [rbp+var_C], 0 +0009ACB7: jns short loc_9ACC0 +0009ACB9: mov [rbp+var_C], 0 +0009ACC0: mov edx, dword ptr [rbp+var_90] +0009ACC6: mov eax, dword ptr [rbp+var_88] +0009ACCC: add eax, edx +0009ACCE: mov [rbp+var_10], eax +0009ACD1: cmp [rbp+var_10], 9Fh +0009ACD8: jle short loc_9ACE1 +0009ACDA: mov [rbp+var_10], 9Fh +0009ACE1: mov esi, [rbp+var_8] +0009ACE4: mov ecx, [rbp+var_10]; unsigned int +0009ACE7: mov edx, [rbp+var_4]; unsigned int +0009ACEA: mov eax, [rbp+var_C] +0009ACED: mov rdi, qword ptr [rbp+var_80] +0009ACF1: add rdi, 20h ; ' '; this +0009ACF5: lea r8, [rbp+var_40] +0009ACF9: mov r9, r8; int * +0009ACFC: mov r8d, esi; unsigned int +0009ACFF: mov esi, eax; unsigned int +0009AD01: call __ZN10CMagDevice22GetRectTemperatureInfoEjjjjPi; CMagDevice::GetRectTemperatureInfo(uint,uint,uint,uint,int *) +0009AD06: test eax, eax +0009AD08: setnz al +0009AD0B: mov [rbp+var_11], al +0009AD0E: cmp [rbp+var_11], 0 +0009AD12: jz loc_9ADCC +0009AD18: mov eax, [rbp+var_40+4] +0009AD1B: mov [rbp+var_18], eax +0009AD1E: mov eax, [rbp+var_30] +0009AD21: mov [rbp+var_1C], eax +0009AD24: mov ecx, [rbp+var_1C] +0009AD27: mov edx, 66666667h +0009AD2C: mov eax, ecx +0009AD2E: imul edx +0009AD30: sar edx, 6 +0009AD33: mov eax, ecx +0009AD35: sar eax, 1Fh +0009AD38: sub edx, eax +0009AD3A: mov eax, edx +0009AD3C: mov [rbp+var_20], eax +0009AD3F: mov edx, [rbp+var_20] +0009AD42: mov eax, edx +0009AD44: shl eax, 2 +0009AD47: add eax, edx +0009AD49: shl eax, 5 +0009AD4C: neg eax +0009AD4E: mov edx, eax +0009AD50: mov eax, [rbp+var_1C] +0009AD53: add eax, edx +0009AD55: mov [rbp+var_24], eax +0009AD58: mov ecx, [rbp+var_20]; unsigned int +0009AD5B: mov edx, [rbp+var_24]; unsigned int +0009AD5E: mov rax, qword ptr [rbp+var_80] +0009AD62: mov eax, [rax+0D4h] +0009AD68: mov rsi, qword ptr [rbp+var_80] +0009AD6C: lea rdi, [rsi+20h]; this +0009AD70: mov esi, [rbp+var_18]; int +0009AD73: mov [rbp+var_94], eax +0009AD79: movss xmm0, [rbp+var_94]; float +0009AD81: call __ZN10CMagDevice14FixTemperatureEifjj; CMagDevice::FixTemperature(int,float,uint,uint) +0009AD86: mov [rbp+var_28], eax +0009AD89: lea rax, [rbp+var_70] +0009AD8D: mov ecx, [rbp+var_20] +0009AD90: mov edx, [rbp+var_24]; int +0009AD93: mov rsi, qword ptr [rbp+var_80]; int +0009AD97: mov rdi, rax; this +0009AD9A: call __ZN17ThermalController21getTemperatureAtPointEii; ThermalController::getTemperatureAtPoint(int,int) +0009AD9F: mov rax, [rbp+var_78] +0009ADA3: mov rdx, [rbp+var_70] +0009ADA7: mov [rax], rdx +0009ADAA: mov rdx, [rbp+var_68] +0009ADAE: mov [rax+8], rdx +0009ADB2: mov rdx, [rbp+var_60] +0009ADB6: mov [rax+10h], rdx +0009ADBA: mov rdx, [rbp+var_58] +0009ADBE: mov [rax+18h], rdx +0009ADC2: mov rdx, [rbp+var_50] +0009ADC6: mov [rax+20h], rdx +0009ADCA: jmp short loc_9ADDF +0009ADCC: mov rax, [rbp+var_78] +0009ADD0: mov rdx, qword ptr [rbp+var_80] +0009ADD4: mov rsi, rdx +0009ADD7: mov rdi, rax; this +0009ADDA: call __ZN17ThermalController19createIllegalResultEv; ThermalController::createIllegalResult(void) +0009ADDF: mov rax, [rbp+var_78] +0009ADE3: leave +0009ADE4: retn + +### FUNC 0009ADE6 - 0009AF67 (385 bytes) name=_ZN17ThermalController21getTemperatureAtPointEii +0009ADE6: push rbp +0009ADE7: mov rbp, rsp +0009ADEA: sub rsp, 60h +0009ADEE: mov [rbp+var_48], rdi +0009ADF2: mov qword ptr [rbp+var_50], rsi +0009ADF6: mov [rbp+var_54], edx +0009ADF9: mov [rbp+var_58], ecx +0009ADFC: mov eax, [rbp+var_58] +0009ADFF: mov [rbp+var_4], eax +0009AE02: cmp [rbp+var_54], 0 +0009AE06: js short loc_9AE1D +0009AE08: cmp [rbp+var_54], 9Fh +0009AE0F: jg short loc_9AE1D +0009AE11: cmp [rbp+var_58], 0 +0009AE15: js short loc_9AE1D +0009AE17: cmp [rbp+var_58], 77h ; 'w' +0009AE1B: jle short loc_9AE35 +0009AE1D: mov rax, [rbp+var_48] +0009AE21: mov rdx, qword ptr [rbp+var_50] +0009AE25: mov rsi, rdx +0009AE28: mov rdi, rax; this +0009AE2B: call __ZN17ThermalController19createIllegalResultEv; ThermalController::createIllegalResult(void) +0009AE30: jmp loc_9AF61 +0009AE35: mov edx, [rbp+var_58]; unsigned int +0009AE38: mov eax, [rbp+var_54] +0009AE3B: mov rcx, qword ptr [rbp+var_50] +0009AE3F: lea rdi, [rcx+20h]; this +0009AE43: mov ecx, 3; unsigned int +0009AE48: mov esi, eax; unsigned int +0009AE4A: call __ZN10CMagDevice19GetTemperatureProbeEjjj; CMagDevice::GetTemperatureProbe(uint,uint,uint) +0009AE4F: mov [rbp+var_8], eax +0009AE52: mov ecx, [rbp+var_58]; unsigned int +0009AE55: mov edx, [rbp+var_54]; unsigned int +0009AE58: mov rax, qword ptr [rbp+var_50] +0009AE5C: mov eax, [rax+0D4h] +0009AE62: mov rsi, qword ptr [rbp+var_50] +0009AE66: lea rdi, [rsi+20h]; this +0009AE6A: mov esi, [rbp+var_8]; int +0009AE6D: mov [rbp+var_5C], eax +0009AE70: movss xmm0, [rbp+var_5C]; float +0009AE75: call __ZN10CMagDevice14FixTemperatureEifjj; CMagDevice::FixTemperature(int,float,uint,uint) +0009AE7A: mov [rbp+var_C], eax +0009AE7D: mov [rbp+var_40], 0 +0009AE84: mov eax, [rbp+var_54] +0009AE87: sub eax, 1 +0009AE8A: mov [rbp+var_3C], eax +0009AE8D: lea rdx, [rbp+var_40] +0009AE91: lea rax, [rbp+var_3C] +0009AE95: mov rsi, rdx +0009AE98: mov rdi, rax +0009AE9B: call __ZSt3maxIiERKT_S2_S2_; std::max(int const&,int const&) +0009AEA0: mov eax, [rax] +0009AEA2: mov [rbp+var_10], eax +0009AEA5: mov [rbp+var_38], 9Fh +0009AEAC: mov eax, [rbp+var_54] +0009AEAF: add eax, 1 +0009AEB2: mov [rbp+var_34], eax +0009AEB5: lea rdx, [rbp+var_38] +0009AEB9: lea rax, [rbp+var_34] +0009AEBD: mov rsi, rdx +0009AEC0: mov rdi, rax +0009AEC3: call __ZSt3minIiERKT_S2_S2_; std::min(int const&,int const&) +0009AEC8: mov eax, [rax] +0009AECA: mov [rbp+var_14], eax +0009AECD: mov [rbp+var_30], 0 +0009AED4: mov eax, [rbp+var_58] +0009AED7: sub eax, 1 +0009AEDA: mov [rbp+var_2C], eax +0009AEDD: lea rdx, [rbp+var_30] +0009AEE1: lea rax, [rbp+var_2C] +0009AEE5: mov rsi, rdx +0009AEE8: mov rdi, rax +0009AEEB: call __ZSt3maxIiERKT_S2_S2_; std::max(int const&,int const&) +0009AEF0: mov eax, [rax] +0009AEF2: mov [rbp+var_18], eax +0009AEF5: mov [rbp+var_28], 77h ; 'w' +0009AEFC: mov eax, [rbp+var_58] +0009AEFF: add eax, 1 +0009AF02: mov [rbp+var_24], eax +0009AF05: lea rdx, [rbp+var_28] +0009AF09: lea rax, [rbp+var_24] +0009AF0D: mov rsi, rdx +0009AF10: mov rdi, rax +0009AF13: call __ZSt3minIiERKT_S2_S2_; std::min(int const&,int const&) +0009AF18: mov eax, [rax] +0009AF1A: mov [rbp+var_1C], eax +0009AF1D: mov esi, [rbp+var_1C] +0009AF20: mov ecx, [rbp+var_14]; unsigned int +0009AF23: mov edx, [rbp+var_18]; unsigned int +0009AF26: mov eax, [rbp+var_10] +0009AF29: mov rdi, qword ptr [rbp+var_50] +0009AF2D: add rdi, 20h ; ' '; this +0009AF31: mov r8d, esi; unsigned int +0009AF34: mov esi, eax; unsigned int +0009AF36: call __ZN10CMagDevice36EstimateUnderArmTempFromForeheadRectEjjjj; CMagDevice::EstimateUnderArmTempFromForeheadRect(uint,uint,uint,uint) +0009AF3B: mov [rbp+var_20], eax +0009AF3E: mov rax, [rbp+var_48] +0009AF42: mov r8d, [rbp+var_20] +0009AF46: mov edi, [rbp+var_C] +0009AF49: mov ecx, [rbp+var_4]; int +0009AF4C: mov edx, [rbp+var_54]; int +0009AF4F: mov rsi, qword ptr [rbp+var_50]; int +0009AF53: mov r9d, r8d +0009AF56: mov r8d, edi; int +0009AF59: mov rdi, rax; this +0009AF5C: call __ZN17ThermalController17createLegalResultEiiii; ThermalController::createLegalResult(int,int,int,int) +0009AF61: mov rax, [rbp+var_48] +0009AF65: leave +0009AF66: retn + +### FUNC 0009AF68 - 0009AFDE (118 bytes) name=_ZN17ThermalController19createIllegalResultEv +0009AF68: push rbp +0009AF69: mov rbp, rsp +0009AF6C: mov [rbp+var_8], rdi +0009AF70: mov [rbp+var_10], rsi +0009AF74: mov rdx, [rbp+var_8] +0009AF78: mov rax, 0BFF0000000000000h +0009AF82: mov [rdx], rax +0009AF85: mov rdx, [rbp+var_8] +0009AF89: mov rax, 0BFF0000000000000h +0009AF93: mov [rdx+8], rax +0009AF97: mov rdx, [rbp+var_8] +0009AF9B: mov rax, 0C197D78400000000h +0009AFA5: mov [rdx+18h], rax +0009AFA9: mov rdx, [rbp+var_8] +0009AFAD: mov rax, 0C197D78400000000h +0009AFB7: mov [rdx+10h], rax +0009AFBB: mov rax, [rbp+var_10] +0009AFBF: mov edx, [rax+0FCh] +0009AFC5: mov rax, [rbp+var_8] +0009AFC9: mov [rax+20h], edx +0009AFCC: mov rax, [rbp+var_8] +0009AFD0: mov dword ptr [rax+24h], 0FA0A1F00h +0009AFD7: nop +0009AFD8: mov rax, [rbp+var_8] +0009AFDC: pop rbp +0009AFDD: retn + +### FUNC 0009AFDE - 0009B185 (423 bytes) name=_ZN17ThermalController17createLegalResultEiiii +0009AFDE: push rbp +0009AFDF: mov rbp, rsp +0009AFE2: mov [rbp+var_28], rdi +0009AFE6: mov [rbp+var_30], rsi +0009AFEA: mov [rbp+var_34], edx +0009AFED: mov [rbp+var_38], ecx +0009AFF0: mov [rbp+var_3C], r8d +0009AFF4: mov [rbp+var_40], r9d +0009AFF8: cvtsi2sd xmm0, [rbp+var_3C] +0009AFFD: movsd xmm1, cs:qword_D3A18 +0009B005: mulsd xmm0, xmm1 +0009B009: movsd [rbp+var_8], xmm0 +0009B00E: cvtsi2sd xmm0, [rbp+var_40] +0009B013: movsd xmm1, cs:qword_D3A18 +0009B01B: mulsd xmm0, xmm1 +0009B01F: movsd [rbp+var_10], xmm0 +0009B024: mov rax, [rbp+var_30] +0009B028: mov eax, [rax+0FCh] +0009B02E: cmp eax, 1 +0009B031: jnz short loc_9B077 +0009B033: movsd xmm1, [rbp+var_8] +0009B038: movsd xmm0, cs:qword_D3A20 +0009B040: mulsd xmm0, xmm1 +0009B044: movsd xmm1, cs:qword_D3A08 +0009B04C: addsd xmm0, xmm1 +0009B050: movsd [rbp+var_8], xmm0 +0009B055: movsd xmm1, [rbp+var_10] +0009B05A: movsd xmm0, cs:qword_D3A20 +0009B062: mulsd xmm0, xmm1 +0009B066: movsd xmm1, cs:qword_D3A08 +0009B06E: addsd xmm0, xmm1 +0009B072: movsd [rbp+var_10], xmm0 +0009B077: mov rax, [rbp+var_30] +0009B07B: movsd xmm0, qword ptr [rax+118h] +0009B083: movsd xmm1, [rbp+var_8] +0009B088: addsd xmm0, xmm1 +0009B08C: movsd [rbp+var_8], xmm0 +0009B091: mov rax, [rbp+var_30] +0009B095: movsd xmm0, qword ptr [rax+118h] +0009B09D: movsd xmm1, [rbp+var_10] +0009B0A2: addsd xmm0, xmm1 +0009B0A6: movsd [rbp+var_10], xmm0 +0009B0AB: mov [rbp+var_14], 0 +0009B0B2: mov rax, [rbp+var_30] +0009B0B6: movsd xmm1, qword ptr [rax+110h] +0009B0BE: movsd xmm0, [rbp+var_10] +0009B0C3: ucomisd xmm0, xmm1 +0009B0C7: ja short loc_9B0DC +0009B0C9: mov rax, [rbp+var_30] +0009B0CD: movsd xmm0, qword ptr [rax+108h] +0009B0D5: ucomisd xmm0, [rbp+var_10] +0009B0DA: jbe short loc_9B0E5 +0009B0DC: mov [rbp+var_14], 0FFFFFFFFh +0009B0E3: jmp short loc_9B10C +0009B0E5: mov rax, [rbp+var_30] +0009B0E9: movsd xmm1, qword ptr [rax+100h] +0009B0F1: movsd xmm0, [rbp+var_10] +0009B0F6: ucomisd xmm0, xmm1 +0009B0FA: jb short loc_9B105 +0009B0FC: mov [rbp+var_14], 1 +0009B103: jmp short loc_9B10C +0009B105: mov [rbp+var_14], 0 +0009B10C: cvtsi2ss xmm0, [rbp+var_34] +0009B111: movss xmm1, cs:dword_D3A2C +0009B119: divss xmm0, xmm1 +0009B11D: unpcklps xmm0, xmm0 +0009B120: cvtps2pd xmm0, xmm0 +0009B123: mov rax, [rbp+var_28] +0009B127: movsd qword ptr [rax], xmm0 +0009B12B: cvtsi2ss xmm0, [rbp+var_38] +0009B130: movss xmm1, cs:dword_D3A30 +0009B138: divss xmm0, xmm1 +0009B13C: unpcklps xmm0, xmm0 +0009B13F: cvtps2pd xmm0, xmm0 +0009B142: mov rax, [rbp+var_28] +0009B146: movsd qword ptr [rax+8], xmm0 +0009B14B: mov rdx, [rbp+var_28] +0009B14F: mov rax, [rbp+var_10] +0009B153: mov [rdx+18h], rax +0009B157: mov rdx, [rbp+var_28] +0009B15B: mov rax, [rbp+var_8] +0009B15F: mov [rdx+10h], rax +0009B163: mov rax, [rbp+var_30] +0009B167: mov edx, [rax+0FCh] +0009B16D: mov rax, [rbp+var_28] +0009B171: mov [rax+20h], edx +0009B174: mov rax, [rbp+var_28] +0009B178: mov edx, [rbp+var_14] +0009B17B: mov [rax+24h], edx +0009B17E: nop +0009B17F: mov rax, [rbp+var_28] +0009B183: pop rbp +0009B184: retn + +### FUNC 0009B186 - 0009B19B (21 bytes) name=_ZN17ThermalController12getTCMDeviceEv +0009B186: push rbp +0009B187: mov rbp, rsp +0009B18A: mov [rbp+var_8], rdi +0009B18E: mov rax, [rbp+var_8] +0009B192: mov rax, [rax+0A8h] +0009B199: pop rbp +0009B19A: retn + +### FUNC 0009B19C - 0009B28E (242 bytes) name=_ZN17ThermalController12updatePresetEiiSs +0009B19C: push rbp +0009B19D: mov rbp, rsp +0009B1A0: push rbx +0009B1A1: sub rsp, 68h +0009B1A5: mov [rbp+var_58], rdi +0009B1A9: mov [rbp+var_5C], esi +0009B1AC: mov [rbp+var_60], edx +0009B1AF: mov [rbp+var_68], rcx +0009B1B3: lea rax, [rbp+var_50] +0009B1B7: mov rdi, rax; this +0009B1BA: call __ZN13TCMPresetDataC2Ev; TCMPresetData::TCMPresetData(void) +0009B1BF: mov edx, [rbp+var_5C] +0009B1C2: lea rax, [rbp+var_50] +0009B1C6: mov esi, edx; int +0009B1C8: mov rdi, rax; this +0009B1CB: call __ZN13TCMPresetData10setOffsetXEi; TCMPresetData::setOffsetX(int) +0009B1D0: mov edx, [rbp+var_60] +0009B1D3: lea rax, [rbp+var_50] +0009B1D7: mov esi, edx; int +0009B1D9: mov rdi, rax; this +0009B1DC: call __ZN13TCMPresetData10setOffsetYEi; TCMPresetData::setOffsetY(int) +0009B1E1: mov rdx, [rbp+var_68] +0009B1E5: lea rax, [rbp+var_20] +0009B1E9: mov rsi, rdx; std::string * +0009B1EC: mov rdi, rax; this +0009B1EF: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009B1F4: lea rdx, [rbp+var_20] +0009B1F8: lea rax, [rbp+var_50] +0009B1FC: mov rsi, rdx +0009B1FF: mov rdi, rax +0009B202: call __ZN13TCMPresetData9setSerialESs; TCMPresetData::setSerial(std::string) +0009B207: lea rax, [rbp+var_20] +0009B20B: mov rdi, rax; this +0009B20E: call __ZNSsD1Ev; std::string::~string() +0009B213: mov [rbp+var_11], 0 +0009B217: lea rax, [rbp+var_50] +0009B21B: mov rdi, rax; this +0009B21E: call __ZN13TCMPresetData7getDataEv; TCMPresetData::getData(void) +0009B223: mov rbx, rax +0009B226: mov rax, [rbp+var_58] +0009B22A: mov rdi, rax; this +0009B22D: call __ZN17ThermalController12getTCMDeviceEv; ThermalController::getTCMDevice(void) +0009B232: mov rdi, rax; this +0009B235: call __ZN16ThermalTCMDevice14getEERomDeviceEv; ThermalTCMDevice::getEERomDevice(void) +0009B23A: mov rsi, rbx +0009B23D: mov rdi, rax +0009B240: call __ZN14EloEEROMDevice11writePresetERKSt6vectorIhSaIhEE; EloEEROMDevice::writePreset(std::vector> const&) +0009B245: mov [rbp+var_11], al +0009B248: movzx ebx, [rbp+var_11] +0009B24C: lea rax, [rbp+var_50] +0009B250: mov rdi, rax; this +0009B253: call __ZN13TCMPresetDataD2Ev; TCMPresetData::~TCMPresetData() +0009B258: mov eax, ebx +0009B25A: jmp short loc_9B287 +0009B25C: mov rbx, rax +0009B25F: lea rax, [rbp+var_20] +0009B263: mov rdi, rax; this +0009B266: call __ZNSsD1Ev; std::string::~string() +0009B26B: jmp short loc_9B270 +0009B26D: mov rbx, rax +0009B270: lea rax, [rbp+var_50] +0009B274: mov rdi, rax; this +0009B277: call __ZN13TCMPresetDataD2Ev; TCMPresetData::~TCMPresetData() +0009B27C: mov rax, rbx +0009B27F: mov rdi, rax; struct _Unwind_Exception * +0009B282: call __Unwind_Resume +0009B287: add rsp, 68h +0009B28B: pop rbx +0009B28C: pop rbp +0009B28D: retn + +### FUNC 0009B28E - 0009B377 (233 bytes) name=_ZN17ThermalController12preloadEEPOMEv +0009B28E: push rbp +0009B28F: mov rbp, rsp +0009B292: push r12 +0009B294: push rbx +0009B295: sub rsp, 30h +0009B299: mov [rbp+var_38], rdi +0009B29D: mov rax, [rbp+var_38] +0009B2A1: mov rdi, rax; this +0009B2A4: call __ZN17ThermalController12getTCMDeviceEv; ThermalController::getTCMDevice(void) +0009B2A9: mov rdi, rax; this +0009B2AC: call __ZN16ThermalTCMDevice14getEERomDeviceEv; ThermalTCMDevice::getEERomDevice(void) +0009B2B1: mov rdi, rax; this +0009B2B4: call __ZN14EloEEROMDevice10readPresetEv; EloEEROMDevice::readPreset(void) +0009B2B9: mov [rbp+var_18], rax +0009B2BD: mov rax, [rbp+var_38] +0009B2C1: mov rax, [rax+180h] +0009B2C8: test rax, rax +0009B2CB: jz short loc_9B2FC +0009B2CD: mov rax, [rbp+var_38] +0009B2D1: mov rbx, [rax+180h] +0009B2D8: test rbx, rbx +0009B2DB: jz short loc_9B2ED +0009B2DD: mov rdi, rbx; this +0009B2E0: call __ZN13TCMPresetDataD2Ev; TCMPresetData::~TCMPresetData() +0009B2E5: mov rdi, rbx; void * +0009B2E8: call __ZdlPv; operator delete(void *) +0009B2ED: mov rax, [rbp+var_38] +0009B2F1: mov qword ptr [rax+180h], 0 +0009B2FC: mov rdx, [rbp+var_18] +0009B300: lea rax, [rbp+var_30] +0009B304: mov rsi, rdx +0009B307: mov rdi, rax +0009B30A: call __ZNSt6vectorIhSaIhEEC2ERKS1__0; std::vector>::vector(std::vector> const&) +0009B30F: lea r12, [rbp+var_30] +0009B313: mov edi, 30h ; '0'; unsigned __int64 +0009B318: call __Znwm; operator new(ulong) +0009B31D: mov rbx, rax +0009B320: mov rsi, r12 +0009B323: mov rdi, rbx +0009B326: call __ZN13TCMPresetDataC2ESt6vectorIhSaIhEE; TCMPresetData::TCMPresetData(std::vector>) +0009B32B: mov rax, [rbp+var_38] +0009B32F: mov [rax+180h], rbx +0009B336: lea rax, [rbp+var_30] +0009B33A: mov rdi, rax +0009B33D: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +0009B342: jmp short loc_9B36E +0009B344: mov r12, rax +0009B347: mov rdi, rbx; void * +0009B34A: call __ZdlPv; operator delete(void *) +0009B34F: mov rbx, r12 +0009B352: jmp short loc_9B357 +0009B354: mov rbx, rax +0009B357: lea rax, [rbp+var_30] +0009B35B: mov rdi, rax +0009B35E: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +0009B363: mov rax, rbx +0009B366: mov rdi, rax; struct _Unwind_Exception * +0009B369: call __Unwind_Resume +0009B36E: add rsp, 30h +0009B372: pop rbx +0009B373: pop r12 +0009B375: pop rbp +0009B376: retn + +### FUNC 0009B378 - 0009B3C3 (75 bytes) name=_ZN17ThermalController9hasPresetEv +0009B378: push rbp +0009B379: mov rbp, rsp +0009B37C: sub rsp, 20h +0009B380: mov [rbp+var_18], rdi +0009B384: mov rax, [rbp+var_18] +0009B388: mov rdi, rax; this +0009B38B: call __ZN17ThermalController12preloadEEPOMEv; ThermalController::preloadEEPOM(void) +0009B390: mov rax, [rbp+var_18] +0009B394: mov rax, [rax+180h] +0009B39B: test rax, rax +0009B39E: jnz short loc_9B3A7 +0009B3A0: mov eax, 0 +0009B3A5: jmp short locret_9B3C1 +0009B3A7: mov rax, [rbp+var_18] +0009B3AB: mov rax, [rax+180h] +0009B3B2: mov rdi, rax; this +0009B3B5: call __ZN13TCMPresetData7isValidEv; TCMPresetData::isValid(void) +0009B3BA: mov [rbp+var_1], al +0009B3BD: movzx eax, [rbp+var_1] +0009B3C1: leave +0009B3C2: retn + +### FUNC 0009B3C4 - 0009B41F (91 bytes) name=_ZN17ThermalController16getPresetOffsetXEv +0009B3C4: push rbp +0009B3C5: mov rbp, rsp +0009B3C8: sub rsp, 10h +0009B3CC: mov [rbp+var_8], rdi +0009B3D0: mov rax, [rbp+var_8] +0009B3D4: mov rax, [rax+180h] +0009B3DB: test rax, rax +0009B3DE: jnz short loc_9B3EC +0009B3E0: mov rax, [rbp+var_8] +0009B3E4: mov rdi, rax; this +0009B3E7: call __ZN17ThermalController12preloadEEPOMEv; ThermalController::preloadEEPOM(void) +0009B3EC: mov rax, [rbp+var_8] +0009B3F0: mov rax, [rax+180h] +0009B3F7: mov rdi, rax; this +0009B3FA: call __ZN13TCMPresetData7isValidEv; TCMPresetData::isValid(void) +0009B3FF: test al, al +0009B401: jz short loc_9B418 +0009B403: mov rax, [rbp+var_8] +0009B407: mov rax, [rax+180h] +0009B40E: mov rdi, rax; this +0009B411: call __ZN13TCMPresetData10getOffsetXEv; TCMPresetData::getOffsetX(void) +0009B416: jmp short locret_9B41D +0009B418: mov eax, 0 +0009B41D: leave +0009B41E: retn + +### FUNC 0009B420 - 0009B47B (91 bytes) name=_ZN17ThermalController16getPresetOffsetYEv +0009B420: push rbp +0009B421: mov rbp, rsp +0009B424: sub rsp, 10h +0009B428: mov [rbp+var_8], rdi +0009B42C: mov rax, [rbp+var_8] +0009B430: mov rax, [rax+180h] +0009B437: test rax, rax +0009B43A: jnz short loc_9B448 +0009B43C: mov rax, [rbp+var_8] +0009B440: mov rdi, rax; this +0009B443: call __ZN17ThermalController12preloadEEPOMEv; ThermalController::preloadEEPOM(void) +0009B448: mov rax, [rbp+var_8] +0009B44C: mov rax, [rax+180h] +0009B453: mov rdi, rax; this +0009B456: call __ZN13TCMPresetData7isValidEv; TCMPresetData::isValid(void) +0009B45B: test al, al +0009B45D: jz short loc_9B474 +0009B45F: mov rax, [rbp+var_8] +0009B463: mov rax, [rax+180h] +0009B46A: mov rdi, rax; this +0009B46D: call __ZN13TCMPresetData10getOffsetYEv; TCMPresetData::getOffsetY(void) +0009B472: jmp short locret_9B479 +0009B474: mov eax, 0 +0009B479: leave +0009B47A: retn + +### FUNC 0009B47C - 0009B53D (193 bytes) name=_ZN17ThermalController15getPresetSerialEv +0009B47C: push rbp +0009B47D: mov rbp, rsp +0009B480: push rbx +0009B481: sub rsp, 28h +0009B485: mov [rbp+var_28], rdi +0009B489: mov [rbp+var_30], rsi +0009B48D: mov rax, [rbp+var_30] +0009B491: mov rax, [rax+180h] +0009B498: test rax, rax +0009B49B: jnz short loc_9B4A9 +0009B49D: mov rax, [rbp+var_30] +0009B4A1: mov rdi, rax; this +0009B4A4: call __ZN17ThermalController12preloadEEPOMEv; ThermalController::preloadEEPOM(void) +0009B4A9: mov rax, [rbp+var_30] +0009B4AD: mov rax, [rax+180h] +0009B4B4: mov rdi, rax; this +0009B4B7: call __ZN13TCMPresetData7isValidEv; TCMPresetData::isValid(void) +0009B4BC: test al, al +0009B4BE: jz short loc_9B4E7 +0009B4C0: mov rax, [rbp+var_30] +0009B4C4: mov rax, [rax+180h] +0009B4CB: mov rdi, rax; this +0009B4CE: call __ZN13TCMPresetData9getSerialEv; TCMPresetData::getSerial(void) +0009B4D3: mov rdx, rax +0009B4D6: mov rax, [rbp+var_28] +0009B4DA: mov rsi, rdx; std::string * +0009B4DD: mov rdi, rax; this +0009B4E0: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009B4E5: jmp short loc_9B532 +0009B4E7: lea rax, [rbp+var_11] +0009B4EB: mov rdi, rax +0009B4EE: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009B4F3: lea rdx, [rbp+var_11] +0009B4F7: mov rax, [rbp+var_28] +0009B4FB: lea rsi, unk_CE84D +0009B502: mov rdi, rax +0009B505: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009B50A: lea rax, [rbp+var_11] +0009B50E: mov rdi, rax +0009B511: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009B516: jmp short loc_9B532 +0009B518: mov rbx, rax +0009B51B: lea rax, [rbp+var_11] +0009B51F: mov rdi, rax +0009B522: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009B527: mov rax, rbx +0009B52A: mov rdi, rax; struct _Unwind_Exception * +0009B52D: call __Unwind_Resume +0009B532: mov rax, [rbp+var_28] +0009B536: add rsp, 28h +0009B53A: pop rbx +0009B53B: pop rbp +0009B53C: retn + +### FUNC 0009B53E - 0009B568 (42 bytes) name=_ZN17ThermalController9softResetEv +0009B53E: push rbp +0009B53F: mov rbp, rsp +0009B542: sub rsp, 10h +0009B546: mov [rbp+var_8], rdi +0009B54A: mov rax, [rbp+var_8] +0009B54E: mov rdi, rax; this +0009B551: call __ZN17ThermalController12getTCMDeviceEv; ThermalController::getTCMDevice(void) +0009B556: mov rdi, rax; this +0009B559: call __ZN9TCMDevice19getTCMUpdaterDeviceEv; TCMDevice::getTCMUpdaterDevice(void) +0009B55E: mov rdi, rax; this +0009B561: call __ZN19EloTCMUpdaterDevice9softResetEv; EloTCMUpdaterDevice::softReset(void) +0009B566: leave +0009B567: retn + +### FUNC 0009B568 - 0009B890 (808 bytes) name=_ZN17ThermalController19loadCalibrationJsonEv +0009B568: push rbp +0009B569: mov rbp, rsp +0009B56C: push rbx +0009B56D: sub rsp, 128h +0009B574: mov [rbp+var_128], rdi +0009B57B: lea rax, [rbp+var_80] +0009B57F: mov esi, 0 +0009B584: mov rdi, rax +0009B587: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EDn; std::function>> &)>::function(decltype(nullptr)) +0009B58C: lea rax, [rbp+var_90] +0009B593: lea rdx, [rbp+var_80] +0009B597: mov r8d, 0 +0009B59D: mov ecx, 1 +0009B5A2: mov rsi, cs:xy_json_ptr +0009B5A9: mov rdi, rax +0009B5AC: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5parseIRA320659_hEES6_OT_St8functionIFbiNS_6detail13parse_event_tERS6_EEbb; nlohmann::basic_json>>::parse(uchar (&)[320659] &&,std::function>>&)>,bool,bool) +0009B5B1: lea rax, [rbp+var_80] +0009B5B5: mov rdi, rax +0009B5B8: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009B5BD: lea rax, [rbp+var_90] +0009B5C4: lea rsi, aRecords; "RECORDS" +0009B5CB: mov rdi, rax +0009B5CE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_; nlohmann::basic_json>>::operator[](char const *) +0009B5D3: mov rdx, rax +0009B5D6: lea rax, [rbp+var_A0] +0009B5DD: mov rsi, rdx +0009B5E0: mov rdi, rax +0009B5E3: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +0009B5E8: lea rax, [rbp+var_A0] +0009B5EF: mov rdi, rax +0009B5F2: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +0009B5F7: test al, al +0009B5F9: jz loc_9B7BC +0009B5FF: lea rax, [rbp+var_A0] +0009B606: mov rdi, rax +0009B609: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5itemsEv; nlohmann::basic_json>>::items(void) +0009B60E: mov [rbp+var_B0], rax +0009B615: lea rax, [rbp+var_120] +0009B61C: lea rdx, [rbp+var_B0] +0009B623: mov rsi, rdx +0009B626: mov rdi, rax +0009B629: call __ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5beginEv; nlohmann::detail::iteration_proxy>>>>::begin(void) +0009B62E: jmp loc_9B76B +0009B633: lea rax, [rbp+var_120] +0009B63A: mov rdi, rax +0009B63D: call __ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3keyEv; nlohmann::detail::iteration_proxy_value>>>>::key(void) +0009B642: mov rdx, rax +0009B645: lea rax, [rbp+var_C0] +0009B64C: mov rsi, rdx; std::string * +0009B64F: mov rdi, rax; this +0009B652: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009B657: lea rax, [rbp+var_120] +0009B65E: mov rdi, rax +0009B661: call __ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5valueEv; nlohmann::detail::iteration_proxy_value>>>>::value(void) +0009B666: mov rdx, rax +0009B669: lea rax, [rbp+var_D0] +0009B670: mov rsi, rdx +0009B673: mov rdi, rax +0009B676: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +0009B67B: lea rax, [rbp+var_D0] +0009B682: mov rdi, rax +0009B685: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +0009B68A: test al, al +0009B68C: jz loc_9B73E +0009B692: lea rax, [rbp+var_D0] +0009B699: lea rsi, aIrSerial; "IR_SERIAL" +0009B6A0: mov rdi, rax +0009B6A3: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_; nlohmann::basic_json>>::operator[](char const *) +0009B6A8: mov rdx, rax +0009B6AB: lea rax, [rbp+var_E0] +0009B6B2: mov rsi, rdx +0009B6B5: mov rdi, rax +0009B6B8: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getISsSsLi0EEET0_v; nlohmann::basic_json>>::get(void) +0009B6BD: lea rax, [rbp+var_D0] +0009B6C4: lea rsi, aKeyX; "KEY_X" +0009B6CB: mov rdi, rax +0009B6CE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_; nlohmann::basic_json>>::operator[](char const *) +0009B6D3: mov rdi, rax +0009B6D6: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getIiiLi0EEET0_v; nlohmann::basic_json>>::get(void) +0009B6DB: mov [rbp+var_14], eax +0009B6DE: lea rax, [rbp+var_D0] +0009B6E5: lea rsi, aKeyY; "KEY_Y" +0009B6EC: mov rdi, rax +0009B6EF: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_; nlohmann::basic_json>>::operator[](char const *) +0009B6F4: mov rdi, rax +0009B6F7: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getIiiLi0EEET0_v; nlohmann::basic_json>>::get(void) +0009B6FC: mov [rbp+var_18], eax +0009B6FF: mov rax, [rbp+var_128] +0009B706: lea rdx, [rax+140h] +0009B70D: lea rax, [rbp+var_E0] +0009B714: mov rsi, rax +0009B717: mov rdi, rdx +0009B71A: call __ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEixERS5_; std::unordered_map,std::equal_to,std::allocator>>::operator[](std::string const&) +0009B71F: mov edx, [rbp+var_14] +0009B722: imul ecx, edx, 3E8h +0009B728: mov edx, [rbp+var_18] +0009B72B: add edx, ecx +0009B72D: mov [rax], edx +0009B72F: lea rax, [rbp+var_E0] +0009B736: mov rdi, rax; this +0009B739: call __ZNSsD1Ev; std::string::~string() +0009B73E: lea rax, [rbp+var_D0] +0009B745: mov rdi, rax +0009B748: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009B74D: lea rax, [rbp+var_C0] +0009B754: mov rdi, rax; this +0009B757: call __ZNSsD1Ev; std::string::~string() +0009B75C: lea rax, [rbp+var_120] +0009B763: mov rdi, rax +0009B766: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEppEv; nlohmann::detail::iteration_proxy_value>>>>::operator++(void) +0009B76B: lea rax, [rbp+var_60] +0009B76F: lea rdx, [rbp+var_B0] +0009B776: mov rsi, rdx +0009B779: mov rdi, rax +0009B77C: call __ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3endEv; nlohmann::detail::iteration_proxy>>>>::end(void) +0009B781: lea rdx, [rbp+var_60] +0009B785: lea rax, [rbp+var_120] +0009B78C: mov rsi, rdx +0009B78F: mov rdi, rax +0009B792: call __ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEneERKSB_; nlohmann::detail::iteration_proxy_value>>>>::operator!=(nlohmann::detail::iteration_proxy_value>>>> const&) +0009B797: mov ebx, eax +0009B799: lea rax, [rbp+var_60] +0009B79D: mov rdi, rax +0009B7A0: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev; nlohmann::detail::iteration_proxy_value>>>>::~iteration_proxy_value() +0009B7A5: test bl, bl +0009B7A7: jnz loc_9B633 +0009B7AD: lea rax, [rbp+var_120] +0009B7B4: mov rdi, rax +0009B7B7: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev; nlohmann::detail::iteration_proxy_value>>>>::~iteration_proxy_value() +0009B7BC: lea rax, [rbp+var_A0] +0009B7C3: mov rdi, rax +0009B7C6: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009B7CB: lea rax, [rbp+var_90] +0009B7D2: mov rdi, rax +0009B7D5: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009B7DA: jmp loc_9B886 +0009B7DF: mov rbx, rax +0009B7E2: lea rax, [rbp+var_80] +0009B7E6: mov rdi, rax +0009B7E9: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009B7EE: mov rax, rbx +0009B7F1: mov rdi, rax; struct _Unwind_Exception * +0009B7F4: call __Unwind_Resume +0009B7F9: mov rbx, rax +0009B7FC: lea rax, [rbp+var_E0] +0009B803: mov rdi, rax; this +0009B806: call __ZNSsD1Ev; std::string::~string() +0009B80B: jmp short loc_9B810 +0009B80D: mov rbx, rax +0009B810: lea rax, [rbp+var_D0] +0009B817: mov rdi, rax +0009B81A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009B81F: jmp short loc_9B824 +0009B821: mov rbx, rax +0009B824: lea rax, [rbp+var_C0] +0009B82B: mov rdi, rax; this +0009B82E: call __ZNSsD1Ev; std::string::~string() +0009B833: jmp short loc_9B849 +0009B835: mov rbx, rax +0009B838: lea rax, [rbp+var_60] +0009B83C: mov rdi, rax +0009B83F: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev; nlohmann::detail::iteration_proxy_value>>>>::~iteration_proxy_value() +0009B844: jmp short loc_9B849 +0009B846: mov rbx, rax +0009B849: lea rax, [rbp+var_120] +0009B850: mov rdi, rax +0009B853: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev; nlohmann::detail::iteration_proxy_value>>>>::~iteration_proxy_value() +0009B858: lea rax, [rbp+var_A0] +0009B85F: mov rdi, rax +0009B862: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009B867: jmp short loc_9B86C +0009B869: mov rbx, rax +0009B86C: lea rax, [rbp+var_90] +0009B873: mov rdi, rax +0009B876: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009B87B: mov rax, rbx +0009B87E: mov rdi, rax; struct _Unwind_Exception * +0009B881: call __Unwind_Resume +0009B886: add rsp, 128h +0009B88D: pop rbx +0009B88E: pop rbp +0009B88F: retn + +### FUNC 0009B890 - 0009BA8A (506 bytes) name=_ZN17ThermalController21getDefaultCalibrationEv +0009B890: push rbp +0009B891: mov rbp, rsp +0009B894: push rbx +0009B895: sub rsp, 68h +0009B899: mov [rbp+var_68], rdi +0009B89D: mov [rbp+var_70], rsi +0009B8A1: mov rax, [rbp+var_68] +0009B8A5: mov rdi, rax +0009B8A8: call __ZNSt6vectorIiSaIiEEC2Ev; std::vector>::vector(void) +0009B8AD: mov rax, [rbp+var_70] +0009B8B1: mov rax, [rax+180h] +0009B8B8: test rax, rax +0009B8BB: jnz short loc_9B8C9 +0009B8BD: mov rax, [rbp+var_70] +0009B8C1: mov rdi, rax; this +0009B8C4: call __ZN17ThermalController12preloadEEPOMEv; ThermalController::preloadEEPOM(void) +0009B8C9: mov rax, [rbp+var_70] +0009B8CD: mov rax, [rax+180h] +0009B8D4: mov rdi, rax; this +0009B8D7: call __ZN13TCMPresetData7isValidEv; TCMPresetData::isValid(void) +0009B8DC: test al, al +0009B8DE: jz short loc_9B938 +0009B8E0: mov rax, [rbp+var_70] +0009B8E4: mov rax, [rax+180h] +0009B8EB: mov rdi, rax; this +0009B8EE: call __ZN13TCMPresetData10getOffsetXEv; TCMPresetData::getOffsetX(void) +0009B8F3: mov [rbp+var_54], eax +0009B8F6: mov rax, [rbp+var_70] +0009B8FA: mov rax, [rax+180h] +0009B901: mov rdi, rax; this +0009B904: call __ZN13TCMPresetData10getOffsetYEv; TCMPresetData::getOffsetY(void) +0009B909: mov [rbp+var_58], eax +0009B90C: lea rdx, [rbp+var_54] +0009B910: mov rax, [rbp+var_68] +0009B914: mov rsi, rdx +0009B917: mov rdi, rax +0009B91A: call __ZNSt6vectorIiSaIiEE9push_backERKi; std::vector>::push_back(int const&) +0009B91F: lea rdx, [rbp+var_58] +0009B923: mov rax, [rbp+var_68] +0009B927: mov rsi, rdx +0009B92A: mov rdi, rax +0009B92D: call __ZNSt6vectorIiSaIiEE9push_backERKi; std::vector>::push_back(int const&) +0009B932: nop +0009B933: jmp loc_9BA7F +0009B938: lea rax, [rbp+var_40] +0009B93C: mov rdx, [rbp+var_70] +0009B940: mov rsi, rdx +0009B943: mov rdi, rax; this +0009B946: call __ZN17ThermalController22getInnerIRCameraSerialEv; ThermalController::getInnerIRCameraSerial(void) +0009B94B: mov rax, [rbp+var_70] +0009B94F: lea rdx, [rax+140h] +0009B956: lea rax, [rbp+var_40] +0009B95A: mov rsi, rax +0009B95D: mov rdi, rdx +0009B960: call __ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE4findERS5_; std::unordered_map,std::equal_to,std::allocator>>::find(std::string const&) +0009B965: mov [rbp+var_50], rax +0009B969: mov rax, [rbp+var_70] +0009B96D: add rax, 140h +0009B973: mov rdi, rax +0009B976: call __ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE3endEv; std::unordered_map,std::equal_to,std::allocator>>::end(void) +0009B97B: mov [rbp+var_30], rax +0009B97F: lea rdx, [rbp+var_30] +0009B983: lea rax, [rbp+var_50] +0009B987: mov rsi, rdx +0009B98A: mov rdi, rax +0009B98D: call __ZNSt8__detailneISt4pairIKSsiELb1EEEbRKNS_19_Node_iterator_baseIT_XT0_EEES8_; std::__detail::operator!=,true>(std::__detail::_Node_iterator_base,true> const&,std::__detail::_Node_iterator_base,true> const&) +0009B992: test al, al +0009B994: jz short loc_9BA11 +0009B996: lea rax, [rbp+var_50] +0009B99A: mov rdi, rax +0009B99D: call __ZNKSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEptEv; std::__detail::_Node_iterator,false,true>::operator->(void) +0009B9A2: mov eax, [rax+8] +0009B9A5: mov [rbp+var_14], eax +0009B9A8: mov ecx, [rbp+var_14] +0009B9AB: mov edx, 10624DD3h +0009B9B0: mov eax, ecx +0009B9B2: imul edx +0009B9B4: sar edx, 6 +0009B9B7: mov eax, ecx +0009B9B9: sar eax, 1Fh +0009B9BC: sub edx, eax +0009B9BE: mov eax, edx +0009B9C0: mov [rbp+var_5C], eax +0009B9C3: mov ecx, [rbp+var_14] +0009B9C6: mov edx, 10624DD3h +0009B9CB: mov eax, ecx +0009B9CD: imul edx +0009B9CF: sar edx, 6 +0009B9D2: mov eax, ecx +0009B9D4: sar eax, 1Fh +0009B9D7: sub edx, eax +0009B9D9: mov eax, edx +0009B9DB: imul eax, 3E8h +0009B9E1: sub ecx, eax +0009B9E3: mov eax, ecx +0009B9E5: mov [rbp+var_60], eax +0009B9E8: lea rdx, [rbp+var_5C] +0009B9EC: mov rax, [rbp+var_68] +0009B9F0: mov rsi, rdx +0009B9F3: mov rdi, rax +0009B9F6: call __ZNSt6vectorIiSaIiEE9push_backERKi; std::vector>::push_back(int const&) +0009B9FB: lea rdx, [rbp+var_60] +0009B9FF: mov rax, [rbp+var_68] +0009BA03: mov rsi, rdx +0009BA06: mov rdi, rax +0009BA09: call __ZNSt6vectorIiSaIiEE9push_backERKi; std::vector>::push_back(int const&) +0009BA0E: nop +0009BA0F: jmp short loc_9BA46 +0009BA11: mov [rbp+var_1C], 6Bh ; 'k' +0009BA18: lea rdx, [rbp+var_1C] +0009BA1C: mov rax, [rbp+var_68] +0009BA20: mov rsi, rdx +0009BA23: mov rdi, rax +0009BA26: call __ZNSt6vectorIiSaIiEE9push_backEOi; std::vector>::push_back(int &&) +0009BA2B: mov [rbp+var_18], 68h ; 'h' +0009BA32: lea rdx, [rbp+var_18] +0009BA36: mov rax, [rbp+var_68] +0009BA3A: mov rsi, rdx +0009BA3D: mov rdi, rax +0009BA40: call __ZNSt6vectorIiSaIiEE9push_backEOi; std::vector>::push_back(int &&) +0009BA45: nop +0009BA46: lea rax, [rbp+var_40] +0009BA4A: mov rdi, rax; this +0009BA4D: call __ZNSsD1Ev; std::string::~string() +0009BA52: jmp short loc_9BA7F +0009BA54: mov rbx, rax +0009BA57: lea rax, [rbp+var_40] +0009BA5B: mov rdi, rax; this +0009BA5E: call __ZNSsD1Ev; std::string::~string() +0009BA63: jmp short loc_9BA68 +0009BA65: mov rbx, rax +0009BA68: mov rax, [rbp+var_68] +0009BA6C: mov rdi, rax +0009BA6F: call __ZNSt6vectorIiSaIiEED2Ev; std::vector>::~vector() +0009BA74: mov rax, rbx +0009BA77: mov rdi, rax; struct _Unwind_Exception * +0009BA7A: call __Unwind_Resume +0009BA7F: mov rax, [rbp+var_68] +0009BA83: add rsp, 68h +0009BA87: pop rbx +0009BA88: pop rbp +0009BA89: retn + +### FUNC 0009BA8A - 0009BAA6 (28 bytes) name=_ZNSt9exceptionC2Ev +0009BA8A: push rbp; Alternative name is 'std::exception::exception(void)' +0009BA8B: mov rbp, rsp +0009BA8E: mov [rbp+var_8], rdi +0009BA92: mov rax, [rbp+var_8] +0009BA96: mov rdx, cs:_ZTVSt9exception_ptr +0009BA9D: lea rdx, [rdx+10h] +0009BAA1: mov [rax], rdx +0009BAA4: pop rbp +0009BAA5: retn + +### FUNC 0009BAA6 - 0009BAB8 (18 bytes) name=_ZnwmPv +0009BAA6: push rbp +0009BAA7: mov rbp, rsp +0009BAAA: mov [rbp+var_8], rdi +0009BAAE: mov [rbp+var_10], rsi +0009BAB2: mov rax, [rbp+var_10] +0009BAB6: pop rbp +0009BAB7: retn + +### FUNC 0009BAB8 - 0009BAC6 (14 bytes) name=_ZdlPvS_ +0009BAB8: push rbp +0009BAB9: mov rbp, rsp +0009BABC: mov [rbp+var_8], rdi +0009BAC0: mov [rbp+var_10], rsi +0009BAC4: pop rbp +0009BAC5: retn + +### FUNC 0009BAC6 - 0009BAEF (41 bytes) name=_ZNSt14_Bit_referenceC2EPmm +0009BAC6: push rbp; Alternative name is 'std::_Bit_reference::_Bit_reference(unsigned long *, unsigned long)' +0009BAC7: mov rbp, rsp +0009BACA: mov [rbp+var_8], rdi +0009BACE: mov [rbp+var_10], rsi +0009BAD2: mov [rbp+var_18], rdx +0009BAD6: mov rax, [rbp+var_8] +0009BADA: mov rdx, [rbp+var_10] +0009BADE: mov [rax], rdx +0009BAE1: mov rax, [rbp+var_8] +0009BAE5: mov rdx, [rbp+var_18] +0009BAE9: mov [rax+8], rdx +0009BAED: pop rbp +0009BAEE: retn + +### FUNC 0009BAF0 - 0009BB15 (37 bytes) name=_ZNKSt14_Bit_referencecvbEv +0009BAF0: push rbp +0009BAF1: mov rbp, rsp +0009BAF4: mov [rbp+var_8], rdi +0009BAF8: mov rax, [rbp+var_8] +0009BAFC: mov rax, [rax] +0009BAFF: mov rdx, [rax] +0009BB02: mov rax, [rbp+var_8] +0009BB06: mov rax, [rax+8] +0009BB0A: and rax, rdx +0009BB0D: test rax, rax +0009BB10: setnz al +0009BB13: pop rbp +0009BB14: retn + +### FUNC 0009BB16 - 0009BB72 (92 bytes) name=_ZNSt14_Bit_referenceaSEb +0009BB16: push rbp +0009BB17: mov rbp, rsp +0009BB1A: mov [rbp+var_8], rdi +0009BB1E: mov eax, esi +0009BB20: mov [rbp+var_C], al +0009BB23: cmp [rbp+var_C], 0 +0009BB27: jz short loc_9BB4A +0009BB29: mov rax, [rbp+var_8] +0009BB2D: mov rax, [rax] +0009BB30: mov rdx, [rbp+var_8] +0009BB34: mov rdx, [rdx] +0009BB37: mov rcx, [rdx] +0009BB3A: mov rdx, [rbp+var_8] +0009BB3E: mov rdx, [rdx+8] +0009BB42: or rdx, rcx +0009BB45: mov [rax], rdx +0009BB48: jmp short loc_9BB6C +0009BB4A: mov rax, [rbp+var_8] +0009BB4E: mov rax, [rax] +0009BB51: mov rdx, [rbp+var_8] +0009BB55: mov rdx, [rdx] +0009BB58: mov rcx, [rdx] +0009BB5B: mov rdx, [rbp+var_8] +0009BB5F: mov rdx, [rdx+8] +0009BB63: not rdx +0009BB66: and rdx, rcx +0009BB69: mov [rax], rdx +0009BB6C: mov rax, [rbp+var_8] +0009BB70: pop rbp +0009BB71: retn + +### FUNC 0009BB72 - 0009BBA1 (47 bytes) name=_ZNSt14_Bit_referenceaSERKS_ +0009BB72: push rbp +0009BB73: mov rbp, rsp +0009BB76: sub rsp, 10h +0009BB7A: mov [rbp+var_8], rdi +0009BB7E: mov [rbp+var_10], rsi +0009BB82: mov rax, [rbp+var_10] +0009BB86: mov rdi, rax +0009BB89: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +0009BB8E: movzx edx, al +0009BB91: mov rax, [rbp+var_8] +0009BB95: mov esi, edx +0009BB97: mov rdi, rax +0009BB9A: call __ZNSt14_Bit_referenceaSEb; std::_Bit_reference::operator=(bool) +0009BB9F: leave +0009BBA0: retn + +### FUNC 0009BBA2 - 0009BBAC (10 bytes) name=_ZNSt8iteratorISt26random_access_iterator_tagblPbRbEC2Ev +0009BBA2: push rbp; Alternative name is 'std::iterator::iterator(void)' +0009BBA3: mov rbp, rsp +0009BBA6: mov [rbp+var_8], rdi +0009BBAA: pop rbp +0009BBAB: retn + +### FUNC 0009BBAC - 0009BBE2 (54 bytes) name=_ZNSt18_Bit_iterator_baseC2EPmj +0009BBAC: push rbp; Alternative name is 'std::_Bit_iterator_base::_Bit_iterator_base(unsigned long *, unsigned int)' +0009BBAD: mov rbp, rsp +0009BBB0: sub rsp, 20h +0009BBB4: mov [rbp+var_8], rdi +0009BBB8: mov [rbp+var_10], rsi +0009BBBC: mov [rbp+var_14], edx +0009BBBF: mov rax, [rbp+var_8] +0009BBC3: mov rdi, rax +0009BBC6: call __ZNSt8iteratorISt26random_access_iterator_tagblPbRbEC2Ev; std::iterator::iterator(void) +0009BBCB: mov rax, [rbp+var_8] +0009BBCF: mov rdx, [rbp+var_10] +0009BBD3: mov [rax], rdx +0009BBD6: mov rax, [rbp+var_8] +0009BBDA: mov edx, [rbp+var_14] +0009BBDD: mov [rax+8], edx +0009BBE0: leave +0009BBE1: retn + +### FUNC 0009BBE2 - 0009BC24 (66 bytes) name=_ZNSt18_Bit_iterator_base10_M_bump_upEv +0009BBE2: push rbp +0009BBE3: mov rbp, rsp +0009BBE6: mov [rbp+var_8], rdi +0009BBEA: mov rax, [rbp+var_8] +0009BBEE: mov eax, [rax+8] +0009BBF1: lea ecx, [rax+1] +0009BBF4: mov rdx, [rbp+var_8] +0009BBF8: mov [rdx+8], ecx +0009BBFB: cmp eax, 3Fh ; '?' +0009BBFE: setz al +0009BC01: test al, al +0009BC03: jz short loc_9BC22 +0009BC05: mov rax, [rbp+var_8] +0009BC09: mov dword ptr [rax+8], 0 +0009BC10: mov rax, [rbp+var_8] +0009BC14: mov rax, [rax] +0009BC17: lea rdx, [rax+8] +0009BC1B: mov rax, [rbp+var_8] +0009BC1F: mov [rax], rdx +0009BC22: pop rbp +0009BC23: retn + +### FUNC 0009BC24 - 0009BC65 (65 bytes) name=_ZNSt18_Bit_iterator_base12_M_bump_downEv +0009BC24: push rbp +0009BC25: mov rbp, rsp +0009BC28: mov [rbp+var_8], rdi +0009BC2C: mov rax, [rbp+var_8] +0009BC30: mov eax, [rax+8] +0009BC33: lea ecx, [rax-1] +0009BC36: mov rdx, [rbp+var_8] +0009BC3A: mov [rdx+8], ecx +0009BC3D: test eax, eax +0009BC3F: setz al +0009BC42: test al, al +0009BC44: jz short loc_9BC63 +0009BC46: mov rax, [rbp+var_8] +0009BC4A: mov dword ptr [rax+8], 3Fh ; '?' +0009BC51: mov rax, [rbp+var_8] +0009BC55: mov rax, [rax] +0009BC58: lea rdx, [rax-8] +0009BC5C: mov rax, [rbp+var_8] +0009BC60: mov [rax], rdx +0009BC63: pop rbp +0009BC64: retn + +### FUNC 0009BC66 - 0009BCF2 (140 bytes) name=_ZNSt18_Bit_iterator_base7_M_incrEl +0009BC66: push rbp +0009BC67: mov rbp, rsp +0009BC6A: mov [rbp+var_18], rdi +0009BC6E: mov [rbp+var_20], rsi +0009BC72: mov rax, [rbp+var_18] +0009BC76: mov eax, [rax+8] +0009BC79: mov edx, eax +0009BC7B: mov rax, [rbp+var_20] +0009BC7F: add rax, rdx +0009BC82: mov [rbp+var_8], rax +0009BC86: mov rax, [rbp+var_18] +0009BC8A: mov rdx, [rax] +0009BC8D: mov rax, [rbp+var_8] +0009BC91: lea rcx, [rax+3Fh] +0009BC95: test rax, rax +0009BC98: cmovs rax, rcx +0009BC9C: sar rax, 6 +0009BCA0: shl rax, 3 +0009BCA4: add rdx, rax +0009BCA7: mov rax, [rbp+var_18] +0009BCAB: mov [rax], rdx +0009BCAE: mov rax, [rbp+var_8] +0009BCB2: cqo +0009BCB4: shr rdx, 3Ah +0009BCB8: add rax, rdx +0009BCBB: and eax, 3Fh +0009BCBE: sub rax, rdx +0009BCC1: mov [rbp+var_8], rax +0009BCC5: cmp [rbp+var_8], 0 +0009BCCA: jns short loc_9BCE3 +0009BCCC: add [rbp+var_8], 40h ; '@' +0009BCD1: mov rax, [rbp+var_18] +0009BCD5: mov rax, [rax] +0009BCD8: lea rdx, [rax-8] +0009BCDC: mov rax, [rbp+var_18] +0009BCE0: mov [rax], rdx +0009BCE3: mov rax, [rbp+var_8] +0009BCE7: mov edx, eax +0009BCE9: mov rax, [rbp+var_18] +0009BCED: mov [rax+8], edx +0009BCF0: pop rbp +0009BCF1: retn + +### FUNC 0009BCF2 - 0009BD31 (63 bytes) name=_ZNKSt18_Bit_iterator_baseeqERKS_ +0009BCF2: push rbp +0009BCF3: mov rbp, rsp +0009BCF6: mov [rbp+var_8], rdi +0009BCFA: mov [rbp+var_10], rsi +0009BCFE: mov rax, [rbp+var_8] +0009BD02: mov rdx, [rax] +0009BD05: mov rax, [rbp+var_10] +0009BD09: mov rax, [rax] +0009BD0C: cmp rdx, rax +0009BD0F: jnz short loc_9BD2A +0009BD11: mov rax, [rbp+var_8] +0009BD15: mov edx, [rax+8] +0009BD18: mov rax, [rbp+var_10] +0009BD1C: mov eax, [rax+8] +0009BD1F: cmp edx, eax +0009BD21: jnz short loc_9BD2A +0009BD23: mov eax, 1 +0009BD28: jmp short loc_9BD2F +0009BD2A: mov eax, 0 +0009BD2F: pop rbp +0009BD30: retn + +### FUNC 0009BD31 - 0009BD7C (75 bytes) name=_ZStmiRKSt18_Bit_iterator_baseS1_ +0009BD31: push rbp +0009BD32: mov rbp, rsp +0009BD35: mov [rbp+var_8], rdi +0009BD39: mov [rbp+var_10], rsi +0009BD3D: mov rax, [rbp+var_8] +0009BD41: mov rax, [rax] +0009BD44: mov rdx, rax +0009BD47: mov rax, [rbp+var_10] +0009BD4B: mov rax, [rax] +0009BD4E: sub rdx, rax +0009BD51: mov rax, rdx +0009BD54: sar rax, 3 +0009BD58: shl rax, 6 +0009BD5C: mov rdx, rax +0009BD5F: mov rax, [rbp+var_8] +0009BD63: mov eax, [rax+8] +0009BD66: mov eax, eax +0009BD68: add rdx, rax +0009BD6B: mov rax, [rbp+var_10] +0009BD6F: mov eax, [rax+8] +0009BD72: mov eax, eax +0009BD74: sub rdx, rax +0009BD77: mov rax, rdx +0009BD7A: pop rbp +0009BD7B: retn + +### FUNC 0009BD7C - 0009BDA0 (36 bytes) name=_ZNSt13_Bit_iteratorC2Ev +0009BD7C: push rbp; Alternative name is 'std::_Bit_iterator::_Bit_iterator(void)' +0009BD7D: mov rbp, rsp +0009BD80: sub rsp, 10h +0009BD84: mov [rbp+var_8], rdi +0009BD88: mov rax, [rbp+var_8] +0009BD8C: mov edx, 0; unsigned int +0009BD91: mov esi, 0; unsigned __int64 * +0009BD96: mov rdi, rax; this +0009BD99: call __ZNSt18_Bit_iterator_baseC2EPmj; std::_Bit_iterator_base::_Bit_iterator_base(ulong *,uint) +0009BD9E: leave +0009BD9F: retn + +### FUNC 0009BDA0 - 0009BDCB (43 bytes) name=_ZNSt13_Bit_iteratorC2EPmj +0009BDA0: push rbp; Alternative name is 'std::_Bit_iterator::_Bit_iterator(unsigned long *, unsigned int)' +0009BDA1: mov rbp, rsp +0009BDA4: sub rsp, 20h +0009BDA8: mov [rbp+var_8], rdi +0009BDAC: mov [rbp+var_10], rsi +0009BDB0: mov [rbp+var_14], edx +0009BDB3: mov rax, [rbp+var_8] +0009BDB7: mov edx, [rbp+var_14]; unsigned int +0009BDBA: mov rcx, [rbp+var_10] +0009BDBE: mov rsi, rcx; unsigned __int64 * +0009BDC1: mov rdi, rax; this +0009BDC4: call __ZNSt18_Bit_iterator_baseC2EPmj; std::_Bit_iterator_base::_Bit_iterator_base(ulong *,uint) +0009BDC9: leave +0009BDCA: retn + +### FUNC 0009BDCC - 0009BE09 (61 bytes) name=_ZNKSt13_Bit_iteratordeEv +0009BDCC: push rbp +0009BDCD: mov rbp, rsp +0009BDD0: sub rsp, 20h +0009BDD4: mov [rbp+var_18], rdi +0009BDD8: mov rax, [rbp+var_18] +0009BDDC: mov eax, [rax+8] +0009BDDF: mov edx, 1 +0009BDE4: mov ecx, eax +0009BDE6: shl rdx, cl; unsigned __int64 +0009BDE9: mov rax, [rbp+var_18] +0009BDED: mov rcx, [rax] +0009BDF0: lea rax, [rbp+var_10] +0009BDF4: mov rsi, rcx; unsigned __int64 * +0009BDF7: mov rdi, rax; this +0009BDFA: call __ZNSt14_Bit_referenceC2EPmm; std::_Bit_reference::_Bit_reference(ulong *,ulong) +0009BDFF: mov rax, [rbp+var_10] +0009BE03: mov rdx, [rbp+var_8] +0009BE07: leave +0009BE08: retn + +### FUNC 0009BE0A - 0009BE28 (30 bytes) name=_ZNSt13_Bit_iteratorppEv +0009BE0A: push rbp +0009BE0B: mov rbp, rsp +0009BE0E: sub rsp, 10h +0009BE12: mov [rbp+var_8], rdi +0009BE16: mov rax, [rbp+var_8] +0009BE1A: mov rdi, rax; this +0009BE1D: call __ZNSt18_Bit_iterator_base10_M_bump_upEv; std::_Bit_iterator_base::_M_bump_up(void) +0009BE22: mov rax, [rbp+var_8] +0009BE26: leave +0009BE27: retn + +### FUNC 0009BE28 - 0009BE70 (72 bytes) name=_ZNSt13_Bit_iteratorppEi +0009BE28: push rbp +0009BE29: mov rbp, rsp +0009BE2C: sub rsp, 40h +0009BE30: mov [rbp+var_28], rdi +0009BE34: mov [rbp+var_2C], esi +0009BE37: mov rax, [rbp+var_28] +0009BE3B: mov rdx, [rax] +0009BE3E: mov [rbp+var_20], rdx +0009BE42: mov rax, [rax+8] +0009BE46: mov [rbp+var_18], rax +0009BE4A: mov rax, [rbp+var_28] +0009BE4E: mov rdi, rax; this +0009BE51: call __ZNSt18_Bit_iterator_base10_M_bump_upEv; std::_Bit_iterator_base::_M_bump_up(void) +0009BE56: mov rax, [rbp+var_20] +0009BE5A: mov [rbp+var_10], rax +0009BE5E: mov rax, [rbp+var_18] +0009BE62: mov [rbp+var_8], rax +0009BE66: mov rax, [rbp+var_10] +0009BE6A: mov rdx, [rbp+var_8] +0009BE6E: leave +0009BE6F: retn + +### FUNC 0009BE70 - 0009BE8E (30 bytes) name=_ZNSt13_Bit_iteratormmEv +0009BE70: push rbp +0009BE71: mov rbp, rsp +0009BE74: sub rsp, 10h +0009BE78: mov [rbp+var_8], rdi +0009BE7C: mov rax, [rbp+var_8] +0009BE80: mov rdi, rax; this +0009BE83: call __ZNSt18_Bit_iterator_base12_M_bump_downEv; std::_Bit_iterator_base::_M_bump_down(void) +0009BE88: mov rax, [rbp+var_8] +0009BE8C: leave +0009BE8D: retn + +### FUNC 0009BE8E - 0009BEB7 (41 bytes) name=_ZNSt13_Bit_iteratorpLEl +0009BE8E: push rbp +0009BE8F: mov rbp, rsp +0009BE92: sub rsp, 10h +0009BE96: mov [rbp+var_8], rdi +0009BE9A: mov [rbp+var_10], rsi +0009BE9E: mov rax, [rbp+var_8] +0009BEA2: mov rdx, [rbp+var_10] +0009BEA6: mov rsi, rdx; __int64 +0009BEA9: mov rdi, rax; this +0009BEAC: call __ZNSt18_Bit_iterator_base7_M_incrEl; std::_Bit_iterator_base::_M_incr(long) +0009BEB1: mov rax, [rbp+var_8] +0009BEB5: leave +0009BEB6: retn + +### FUNC 0009BEB8 - 0009BEE7 (47 bytes) name=_ZNSt13_Bit_iteratormIEl +0009BEB8: push rbp +0009BEB9: mov rbp, rsp +0009BEBC: sub rsp, 10h +0009BEC0: mov [rbp+var_8], rdi +0009BEC4: mov [rbp+var_10], rsi +0009BEC8: mov rax, [rbp+var_10] +0009BECC: neg rax +0009BECF: mov rdx, rax +0009BED2: mov rax, [rbp+var_8] +0009BED6: mov rsi, rdx +0009BED9: mov rdi, rax +0009BEDC: call __ZNSt13_Bit_iteratorpLEl; std::_Bit_iterator::operator+=(long) +0009BEE1: mov rax, [rbp+var_8] +0009BEE5: leave +0009BEE6: retn + +### FUNC 0009BEE8 - 0009BF37 (79 bytes) name=_ZNKSt13_Bit_iteratorplEl +0009BEE8: push rbp +0009BEE9: mov rbp, rsp +0009BEEC: sub rsp, 40h +0009BEF0: mov [rbp+var_28], rdi +0009BEF4: mov [rbp+var_30], rsi +0009BEF8: mov rax, [rbp+var_28] +0009BEFC: mov rdx, [rax] +0009BEFF: mov [rbp+var_20], rdx +0009BF03: mov rax, [rax+8] +0009BF07: mov [rbp+var_18], rax +0009BF0B: mov rdx, [rbp+var_30] +0009BF0F: lea rax, [rbp+var_20] +0009BF13: mov rsi, rdx +0009BF16: mov rdi, rax +0009BF19: call __ZNSt13_Bit_iteratorpLEl; std::_Bit_iterator::operator+=(long) +0009BF1E: mov rdx, [rax] +0009BF21: mov [rbp+var_10], rdx +0009BF25: mov rax, [rax+8] +0009BF29: mov [rbp+var_8], rax +0009BF2D: mov rax, [rbp+var_10] +0009BF31: mov rdx, [rbp+var_8] +0009BF35: leave +0009BF36: retn + +### FUNC 0009BF38 - 0009BF87 (79 bytes) name=_ZNKSt13_Bit_iteratormiEl +0009BF38: push rbp +0009BF39: mov rbp, rsp +0009BF3C: sub rsp, 40h +0009BF40: mov [rbp+var_28], rdi +0009BF44: mov [rbp+var_30], rsi +0009BF48: mov rax, [rbp+var_28] +0009BF4C: mov rdx, [rax] +0009BF4F: mov [rbp+var_20], rdx +0009BF53: mov rax, [rax+8] +0009BF57: mov [rbp+var_18], rax +0009BF5B: mov rdx, [rbp+var_30] +0009BF5F: lea rax, [rbp+var_20] +0009BF63: mov rsi, rdx +0009BF66: mov rdi, rax +0009BF69: call __ZNSt13_Bit_iteratormIEl; std::_Bit_iterator::operator-=(long) +0009BF6E: mov rdx, [rax] +0009BF71: mov [rbp+var_10], rdx +0009BF75: mov rax, [rax+8] +0009BF79: mov [rbp+var_8], rax +0009BF7D: mov rax, [rbp+var_10] +0009BF81: mov rdx, [rbp+var_8] +0009BF85: leave +0009BF86: retn + +### FUNC 0009BF88 - 0009BFB3 (43 bytes) name=_ZNSt19_Bit_const_iteratorC2EPmj +0009BF88: push rbp; Alternative name is 'std::_Bit_const_iterator::_Bit_const_iterator(unsigned long *, unsigned int)' +0009BF89: mov rbp, rsp +0009BF8C: sub rsp, 20h +0009BF90: mov [rbp+var_8], rdi +0009BF94: mov [rbp+var_10], rsi +0009BF98: mov [rbp+var_14], edx +0009BF9B: mov rax, [rbp+var_8] +0009BF9F: mov edx, [rbp+var_14]; unsigned int +0009BFA2: mov rcx, [rbp+var_10] +0009BFA6: mov rsi, rcx; unsigned __int64 * +0009BFA9: mov rdi, rax; this +0009BFAC: call __ZNSt18_Bit_iterator_baseC2EPmj; std::_Bit_iterator_base::_Bit_iterator_base(ulong *,uint) +0009BFB1: leave +0009BFB2: retn + +### FUNC 0009BFB4 - 0009BFE3 (47 bytes) name=_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator +0009BFB4: push rbp; Alternative name is 'std::_Bit_const_iterator::_Bit_const_iterator(std::_Bit_iterator const&)' +0009BFB5: mov rbp, rsp +0009BFB8: sub rsp, 10h +0009BFBC: mov [rbp+var_8], rdi +0009BFC0: mov [rbp+var_10], rsi +0009BFC4: mov rax, [rbp+var_10] +0009BFC8: mov edx, [rax+8]; unsigned int +0009BFCB: mov rax, [rbp+var_10] +0009BFCF: mov rcx, [rax] +0009BFD2: mov rax, [rbp+var_8] +0009BFD6: mov rsi, rcx; unsigned __int64 * +0009BFD9: mov rdi, rax; this +0009BFDC: call __ZNSt18_Bit_iterator_baseC2EPmj; std::_Bit_iterator_base::_Bit_iterator_base(ulong *,uint) +0009BFE1: leave +0009BFE2: retn + +### FUNC 0009BFE4 - 0009C025 (65 bytes) name=_ZNKSt19_Bit_const_iteratordeEv +0009BFE4: push rbp +0009BFE5: mov rbp, rsp +0009BFE8: sub rsp, 20h +0009BFEC: mov [rbp+var_18], rdi +0009BFF0: mov rax, [rbp+var_18] +0009BFF4: mov eax, [rax+8] +0009BFF7: mov edx, 1 +0009BFFC: mov ecx, eax +0009BFFE: shl rdx, cl; unsigned __int64 +0009C001: mov rax, [rbp+var_18] +0009C005: mov rcx, [rax] +0009C008: lea rax, [rbp+var_10] +0009C00C: mov rsi, rcx; unsigned __int64 * +0009C00F: mov rdi, rax; this +0009C012: call __ZNSt14_Bit_referenceC2EPmm; std::_Bit_reference::_Bit_reference(ulong *,ulong) +0009C017: lea rax, [rbp+var_10] +0009C01B: mov rdi, rax +0009C01E: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +0009C023: leave +0009C024: retn + +### FUNC 0009C026 - 0009C044 (30 bytes) name=_ZNSt19_Bit_const_iteratorppEv +0009C026: push rbp +0009C027: mov rbp, rsp +0009C02A: sub rsp, 10h +0009C02E: mov [rbp+var_8], rdi +0009C032: mov rax, [rbp+var_8] +0009C036: mov rdi, rax; this +0009C039: call __ZNSt18_Bit_iterator_base10_M_bump_upEv; std::_Bit_iterator_base::_M_bump_up(void) +0009C03E: mov rax, [rbp+var_8] +0009C042: leave +0009C043: retn + +### FUNC 0009C044 - 0009C071 (45 bytes) name=_ZNSt10_Hash_impl4hashEPKvmm +0009C044: push rbp +0009C045: mov rbp, rsp +0009C048: sub rsp, 20h +0009C04C: mov [rbp+var_8], rdi +0009C050: mov [rbp+var_10], rsi +0009C054: mov [rbp+var_18], rdx +0009C058: mov rdx, [rbp+var_18]; unsigned __int64 +0009C05C: mov rcx, [rbp+var_10] +0009C060: mov rax, [rbp+var_8] +0009C064: mov rsi, rcx; unsigned __int64 +0009C067: mov rdi, rax; void * +0009C06A: call __ZSt11_Hash_bytesPKvmm; std::_Hash_bytes(void const*,ulong,ulong) +0009C06F: leave +0009C070: retn + +### FUNC 0009C071 - 0009C09E (45 bytes) name=_ZNSt11char_traitsIcE7compareEPKcS2_m +0009C071: push rbp +0009C072: mov rbp, rsp +0009C075: sub rsp, 20h +0009C079: mov [rbp+s1], rdi +0009C07D: mov [rbp+s2], rsi +0009C081: mov [rbp+n], rdx +0009C085: mov rdx, [rbp+n]; n +0009C089: mov rcx, [rbp+s2] +0009C08D: mov rax, [rbp+s1] +0009C091: mov rsi, rcx; s2 +0009C094: mov rdi, rax; s1 +0009C097: call _memcmp +0009C09C: leave +0009C09D: retn + +### FUNC 0009C09E - 0009C0CA (44 bytes) name=_ZNSt11char_traitsIcE6lengthEPKc +0009C09E: push rbp +0009C09F: mov rbp, rsp +0009C0A2: mov [rbp+var_8], rdi +0009C0A6: mov rax, [rbp+var_8] +0009C0AA: mov rcx, 0FFFFFFFFFFFFFFFFh +0009C0B1: mov rdx, rax +0009C0B4: mov eax, 0 +0009C0B9: mov rdi, rdx +0009C0BC: repne scasb +0009C0BE: mov rax, rcx +0009C0C1: not rax +0009C0C4: sub rax, 1 +0009C0C8: pop rbp +0009C0C9: retn + +### FUNC 0009C0CA - 0009C109 (63 bytes) name=_ZSt9to_stringi +0009C0CA: push rbp +0009C0CB: mov rbp, rsp +0009C0CE: sub rsp, 10h +0009C0D2: mov [rbp+var_8], rdi +0009C0D6: mov [rbp+var_C], esi +0009C0D9: mov edx, 10h +0009C0DE: mov rax, [rbp+var_8] +0009C0E2: mov ecx, [rbp+var_C] +0009C0E5: mov r8d, ecx +0009C0E8: lea rcx, aD; "%d" +0009C0EF: mov rsi, cs:vsnprintf_ptr +0009C0F6: mov rdi, rax +0009C0F9: mov eax, 0 +0009C0FE: call __ZN9__gnu_cxx12__to_xstringISscEET_PFiPT0_mPKS2_P13__va_list_tagEmS5_z; __gnu_cxx::__to_xstring(int (*)(char *,ulong,char const*,__va_list_tag *),ulong,char const*,...) +0009C103: mov rax, [rbp+var_8] +0009C107: leave +0009C108: retn + +### FUNC 0009C109 - 0009C14A (65 bytes) name=_ZSt9to_stringm +0009C109: push rbp +0009C10A: mov rbp, rsp +0009C10D: sub rsp, 10h +0009C111: mov [rbp+var_8], rdi +0009C115: mov [rbp+var_10], rsi +0009C119: mov edx, 20h ; ' ' +0009C11E: mov rax, [rbp+var_8] +0009C122: mov rcx, [rbp+var_10] +0009C126: mov r8, rcx +0009C129: lea rcx, aLu; "%lu" +0009C130: mov rsi, cs:vsnprintf_ptr +0009C137: mov rdi, rax +0009C13A: mov eax, 0 +0009C13F: call __ZN9__gnu_cxx12__to_xstringISscEET_PFiPT0_mPKS2_P13__va_list_tagEmS5_z; __gnu_cxx::__to_xstring(int (*)(char *,ulong,char const*,__va_list_tag *),ulong,char const*,...) +0009C144: mov rax, [rbp+var_8] +0009C148: leave +0009C149: retn + +### FUNC 0009C14A - 0009C18D (67 bytes) name=_ZNKSt4hashISsEclERKSs +0009C14A: push rbp +0009C14B: mov rbp, rsp +0009C14E: push rbx +0009C14F: sub rsp, 18h +0009C153: mov [rbp+var_18], rdi +0009C157: mov [rbp+var_20], rsi +0009C15B: mov rax, [rbp+var_20] +0009C15F: mov rdi, rax; this +0009C162: call __ZNKSs6lengthEv; std::string::length(void) +0009C167: mov rbx, rax +0009C16A: mov rax, [rbp+var_20] +0009C16E: mov rdi, rax; this +0009C171: call __ZNKSs4dataEv; std::string::data(void) +0009C176: mov edx, 0C70F6907h; unsigned __int64 +0009C17B: mov rsi, rbx; void * +0009C17E: mov rdi, rax; this +0009C181: call __ZNSt10_Hash_impl4hashEPKvmm; std::_Hash_impl::hash(void const*,ulong,ulong) +0009C186: add rsp, 18h +0009C18A: pop rbx +0009C18B: pop rbp +0009C18C: retn + +### FUNC 0009C18E - 0009C19E (16 bytes) name=_ZN10CMagDevice13IsInitializedEv +0009C18E: push rbp +0009C18F: mov rbp, rsp +0009C192: mov [rbp+var_8], rdi +0009C196: mov rax, [rbp+var_8] +0009C19A: mov eax, [rax] +0009C19C: pop rbp +0009C19D: retn + +### FUNC 0009C19E - 0009C1AE (16 bytes) name=_ZNSt14numeric_limitsIlE3minEv +0009C19E: push rbp +0009C19F: mov rbp, rsp +0009C1A2: mov rax, 8000000000000000h +0009C1AC: pop rbp +0009C1AD: retn + +### FUNC 0009C1AE - 0009C1C4 (22 bytes) name=_ZNSt14_Function_baseC2Ev +0009C1AE: push rbp; Alternative name is 'std::_Function_base::_Function_base(void)' +0009C1AF: mov rbp, rsp +0009C1B2: mov [rbp+var_8], rdi +0009C1B6: mov rax, [rbp+var_8] +0009C1BA: mov qword ptr [rax+10h], 0 +0009C1C2: pop rbp +0009C1C3: retn + +### FUNC 0009C1C4 - 0009C1F9 (53 bytes) name=_ZNSt14_Function_baseD2Ev +0009C1C4: push rbp; Alternative name is 'std::_Function_base::~_Function_base()' +0009C1C5: mov rbp, rsp +0009C1C8: sub rsp, 10h +0009C1CC: mov [rbp+var_8], rdi +0009C1D0: mov rax, [rbp+var_8] +0009C1D4: mov rax, [rax+10h] +0009C1D8: test rax, rax +0009C1DB: jz short locret_9C1F7 +0009C1DD: mov rax, [rbp+var_8] +0009C1E1: mov rax, [rax+10h] +0009C1E5: mov rsi, [rbp+var_8] +0009C1E9: mov rcx, [rbp+var_8] +0009C1ED: mov edx, 3 +0009C1F2: mov rdi, rcx +0009C1F5: call rax +0009C1F7: leave +0009C1F8: retn + +### FUNC 0009C1FA - 0009C212 (24 bytes) name=_ZNKSt14_Function_base8_M_emptyEv +0009C1FA: push rbp +0009C1FB: mov rbp, rsp +0009C1FE: mov [rbp+var_8], rdi +0009C202: mov rax, [rbp+var_8] +0009C206: mov rax, [rax+10h] +0009C20A: test rax, rax +0009C20D: setz al +0009C210: pop rbp +0009C211: retn + +### FUNC 0009C212 - 0009C232 (32 bytes) name=_ZNSt9exceptionC2ERKS_ +0009C212: push rbp; Alternative name is 'std::exception::exception(std::exception const&)' +0009C213: mov rbp, rsp +0009C216: mov [rbp+var_8], rdi +0009C21A: mov [rbp+var_10], rsi +0009C21E: mov rax, [rbp+var_8] +0009C222: mov rdx, cs:_ZTVSt9exception_ptr +0009C229: lea rdx, [rdx+10h] +0009C22D: mov [rax], rdx +0009C230: pop rbp +0009C231: retn + +### FUNC 0009C232 - 0009C247 (21 bytes) name=_ZNSt8__detail15_Hash_node_baseC2Ev +0009C232: push rbp; Alternative name is 'std::__detail::_Hash_node_base::_Hash_node_base(void)' +0009C233: mov rbp, rsp +0009C236: mov [rbp+var_8], rdi +0009C23A: mov rax, [rbp+var_8] +0009C23E: mov qword ptr [rax], 0 +0009C245: pop rbp +0009C246: retn + +### FUNC 0009C248 - 0009C26A (34 bytes) name=_ZNKSt8__detail18_Mod_range_hashingclEmm +0009C248: push rbp +0009C249: mov rbp, rsp +0009C24C: mov [rbp+var_8], rdi +0009C250: mov [rbp+var_10], rsi +0009C254: mov [rbp+var_18], rdx +0009C258: mov rax, [rbp+var_10] +0009C25C: mov edx, 0 +0009C261: div [rbp+var_18] +0009C265: mov rax, rdx +0009C268: pop rbp +0009C269: retn + +### FUNC 0009C26A - 0009C28E (36 bytes) name=_ZNSt8__detail20_Prime_rehash_policyC2Ef +0009C26A: push rbp; Alternative name is 'std::__detail::_Prime_rehash_policy::_Prime_rehash_policy(float)' +0009C26B: mov rbp, rsp +0009C26E: mov [rbp+var_8], rdi +0009C272: movss [rbp+var_C], xmm0 +0009C277: mov rdx, [rbp+var_8] +0009C27B: mov eax, [rbp+var_C] +0009C27E: mov [rdx], eax +0009C280: mov rax, [rbp+var_8] +0009C284: mov qword ptr [rax+8], 0 +0009C28C: pop rbp +0009C28D: retn + +### FUNC 0009C28E - 0009C2A0 (18 bytes) name=_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv +0009C28E: push rbp +0009C28F: mov rbp, rsp +0009C292: mov [rbp+var_8], rdi +0009C296: mov rax, [rbp+var_8] +0009C29A: mov rax, [rax+8] +0009C29E: pop rbp +0009C29F: retn + +### FUNC 0009C2A0 - 0009C2BA (26 bytes) name=_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm +0009C2A0: push rbp +0009C2A1: mov rbp, rsp +0009C2A4: mov [rbp+var_8], rdi +0009C2A8: mov [rbp+var_10], rsi +0009C2AC: mov rax, [rbp+var_8] +0009C2B0: mov rdx, [rbp+var_10] +0009C2B4: mov [rax+8], rdx +0009C2B8: pop rbp +0009C2B9: retn + +### FUNC 0009C2BA - 0009C2E8 (46 bytes) name=_ZSt8isfinited +0009C2BA: push rbp +0009C2BB: mov rbp, rsp +0009C2BE: movsd [rbp+var_8], xmm0 +0009C2C3: movsd xmm1, [rbp+var_8] +0009C2C8: movsd xmm0, cs:qword_D39F0 +0009C2D0: andpd xmm0, xmm1 +0009C2D4: movsd xmm1, cs:qword_D3A00 +0009C2DC: ucomisd xmm1, xmm0 +0009C2E0: setb al +0009C2E3: xor eax, 1 +0009C2E6: pop rbp +0009C2E7: retn + +### FUNC 0009C2E8 - 0009C311 (41 bytes) name=_ZNSt18_Rb_tree_node_base10_S_minimumEPS_ +0009C2E8: push rbp +0009C2E9: mov rbp, rsp +0009C2EC: mov [rbp+var_8], rdi +0009C2F0: jmp short loc_9C2FE +0009C2F2: mov rax, [rbp+var_8] +0009C2F6: mov rax, [rax+10h] +0009C2FA: mov [rbp+var_8], rax +0009C2FE: mov rax, [rbp+var_8] +0009C302: mov rax, [rax+10h] +0009C306: test rax, rax +0009C309: jnz short loc_9C2F2 +0009C30B: mov rax, [rbp+var_8] +0009C30F: pop rbp +0009C310: retn + +### FUNC 0009C311 - 0009C33A (41 bytes) name=_ZNSt18_Rb_tree_node_base10_S_maximumEPS_ +0009C311: push rbp +0009C312: mov rbp, rsp +0009C315: mov [rbp+var_8], rdi +0009C319: jmp short loc_9C327 +0009C31B: mov rax, [rbp+var_8] +0009C31F: mov rax, [rax+18h] +0009C323: mov [rbp+var_8], rax +0009C327: mov rax, [rbp+var_8] +0009C32B: mov rax, [rax+18h] +0009C32F: test rax, rax +0009C332: jnz short loc_9C31B +0009C334: mov rax, [rbp+var_8] +0009C338: pop rbp +0009C339: retn + +### FUNC 0009C33A - 0009C34B (17 bytes) name=_ZNK8nlohmann6detail10position_tcvmEv +0009C33A: push rbp +0009C33B: mov rbp, rsp +0009C33E: mov [rbp+var_8], rdi +0009C342: mov rax, [rbp+var_8] +0009C346: mov rax, [rax] +0009C349: pop rbp +0009C34A: retn + +### FUNC 0009C34C - 0009C36A (30 bytes) name=_ZNK8nlohmann6detail9exception4whatEv +0009C34C: push rbp +0009C34D: mov rbp, rsp +0009C350: sub rsp, 10h +0009C354: mov [rbp+var_8], rdi +0009C358: mov rax, [rbp+var_8] +0009C35C: add rax, 10h +0009C360: mov rdi, rax; this +0009C363: call __ZNKSt13runtime_error4whatEv; std::runtime_error::what(void) +0009C368: leave +0009C369: retn + +### FUNC 0009C36A - 0009C438 (206 bytes) name=_ZN8nlohmann6detail9exceptionC2EiPKc +0009C36A: push rbp; Alternative name is 'nlohmann::detail::exception::exception(int, char const*)' +0009C36B: mov rbp, rsp +0009C36E: push rbx +0009C36F: sub rsp, 38h +0009C373: mov [rbp+var_28], rdi +0009C377: mov [rbp+var_2C], esi +0009C37A: mov [rbp+var_38], rdx +0009C37E: mov rax, [rbp+var_28] +0009C382: mov rdi, rax; this +0009C385: call __ZNSt9exceptionC2Ev; std::exception::exception(void) +0009C38A: mov rax, [rbp+var_28] +0009C38E: mov rdx, cs:_ZTVN8nlohmann6detail9exceptionE_ptr +0009C395: lea rdx, [rdx+10h] +0009C399: mov [rax], rdx +0009C39C: mov rax, [rbp+var_28] +0009C3A0: mov edx, [rbp+var_2C] +0009C3A3: mov [rax+8], edx +0009C3A6: lea rax, [rbp+var_11] +0009C3AA: mov rdi, rax +0009C3AD: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009C3B2: lea rdx, [rbp+var_11] +0009C3B6: mov rcx, [rbp+var_38] +0009C3BA: lea rax, [rbp+var_20] +0009C3BE: mov rsi, rcx +0009C3C1: mov rdi, rax +0009C3C4: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009C3C9: mov rax, [rbp+var_28] +0009C3CD: lea rdx, [rax+10h] +0009C3D1: lea rax, [rbp+var_20] +0009C3D5: mov rsi, rax; std::string * +0009C3D8: mov rdi, rdx; this +0009C3DB: call __ZNSt13runtime_errorC1ERKSs; std::runtime_error::runtime_error(std::string const&) +0009C3E0: lea rax, [rbp+var_20] +0009C3E4: mov rdi, rax; this +0009C3E7: call __ZNSsD1Ev; std::string::~string() +0009C3EC: lea rax, [rbp+var_11] +0009C3F0: mov rdi, rax +0009C3F3: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009C3F8: jmp short loc_9C431 +0009C3FA: mov rbx, rax +0009C3FD: lea rax, [rbp+var_20] +0009C401: mov rdi, rax; this +0009C404: call __ZNSsD1Ev; std::string::~string() +0009C409: jmp short loc_9C40E +0009C40B: mov rbx, rax +0009C40E: lea rax, [rbp+var_11] +0009C412: mov rdi, rax +0009C415: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009C41A: mov rax, [rbp+var_28] +0009C41E: mov rdi, rax; this +0009C421: call __ZNSt9exceptionD2Ev; std::exception::~exception() +0009C426: mov rax, rbx +0009C429: mov rdi, rax; struct _Unwind_Exception * +0009C42C: call __Unwind_Resume +0009C431: add rsp, 38h +0009C435: pop rbx +0009C436: pop rbp +0009C437: retn + +### FUNC 0009C438 - 0009C54A (274 bytes) name=_ZN8nlohmann6detail9exception4nameERKSsi +0009C438: push rbp +0009C439: mov rbp, rsp +0009C43C: push rbx +0009C43D: sub rsp, 68h +0009C441: mov [rbp+var_58], rdi +0009C445: mov [rbp+var_60], rsi +0009C449: mov [rbp+var_64], edx +0009C44C: lea rax, [rbp+var_40] +0009C450: mov edx, [rbp+var_64] +0009C453: mov esi, edx +0009C455: mov rdi, rax; int +0009C458: call __ZSt9to_stringi; std::to_string(int) +0009C45D: lea rax, [rbp+var_20] +0009C461: mov rdx, [rbp+var_60] +0009C465: lea rsi, aJsonException; "[json.exception." +0009C46C: mov rdi, rax +0009C46F: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator> const&) +0009C474: lea rax, [rbp+var_30] +0009C478: lea rcx, [rbp+var_20] +0009C47C: lea rdx, asc_CE7BE; "." +0009C483: mov rsi, rcx +0009C486: mov rdi, rax +0009C489: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +0009C48E: lea rax, [rbp+var_50] +0009C492: lea rdx, [rbp+var_40] +0009C496: lea rcx, [rbp+var_30] +0009C49A: mov rsi, rcx +0009C49D: mov rdi, rax +0009C4A0: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator>&) +0009C4A5: mov rax, [rbp+var_58] +0009C4A9: lea rcx, [rbp+var_50] +0009C4AD: lea rdx, asc_CE7C0; "] " +0009C4B4: mov rsi, rcx +0009C4B7: mov rdi, rax +0009C4BA: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +0009C4BF: nop +0009C4C0: lea rax, [rbp+var_50] +0009C4C4: mov rdi, rax; this +0009C4C7: call __ZNSsD1Ev; std::string::~string() +0009C4CC: lea rax, [rbp+var_30] +0009C4D0: mov rdi, rax; this +0009C4D3: call __ZNSsD1Ev; std::string::~string() +0009C4D8: lea rax, [rbp+var_20] +0009C4DC: mov rdi, rax; this +0009C4DF: call __ZNSsD1Ev; std::string::~string() +0009C4E4: lea rax, [rbp+var_40] +0009C4E8: mov rdi, rax; this +0009C4EB: call __ZNSsD1Ev; std::string::~string() +0009C4F0: jmp short loc_9C53F +0009C4F2: mov rbx, rax +0009C4F5: lea rax, [rbp+var_50] +0009C4F9: mov rdi, rax; this +0009C4FC: call __ZNSsD1Ev; std::string::~string() +0009C501: jmp short loc_9C506 +0009C503: mov rbx, rax +0009C506: lea rax, [rbp+var_30] +0009C50A: mov rdi, rax; this +0009C50D: call __ZNSsD1Ev; std::string::~string() +0009C512: jmp short loc_9C517 +0009C514: mov rbx, rax +0009C517: lea rax, [rbp+var_20] +0009C51B: mov rdi, rax; this +0009C51E: call __ZNSsD1Ev; std::string::~string() +0009C523: jmp short loc_9C528 +0009C525: mov rbx, rax +0009C528: lea rax, [rbp+var_40] +0009C52C: mov rdi, rax; this +0009C52F: call __ZNSsD1Ev; std::string::~string() +0009C534: mov rax, rbx +0009C537: mov rdi, rax; struct _Unwind_Exception * +0009C53A: call __Unwind_Resume +0009C53F: mov rax, [rbp+var_58] +0009C543: add rsp, 68h +0009C547: pop rbx +0009C548: pop rbp +0009C549: retn + +### FUNC 0009C54A - 0009C5BE (116 bytes) name=_ZNSt13runtime_errorC2ERKS_ +0009C54A: push rbp; Alternative name is 'std::runtime_error::runtime_error(std::runtime_error const&)' +0009C54B: mov rbp, rsp +0009C54E: push rbx +0009C54F: sub rsp, 18h +0009C553: mov [rbp+var_18], rdi +0009C557: mov [rbp+var_20], rsi +0009C55B: mov rdx, [rbp+var_20] +0009C55F: mov rax, [rbp+var_18] +0009C563: mov rsi, rdx; std::exception * +0009C566: mov rdi, rax; this +0009C569: call __ZNSt9exceptionC2ERKS_; std::exception::exception(std::exception const&) +0009C56E: mov rax, [rbp+var_18] +0009C572: mov rdx, cs:_ZTVSt13runtime_error_ptr +0009C579: lea rdx, [rdx+10h] +0009C57D: mov [rax], rdx +0009C580: mov rax, [rbp+var_20] +0009C584: lea rdx, [rax+8] +0009C588: mov rax, [rbp+var_18] +0009C58C: add rax, 8 +0009C590: mov rsi, rdx; std::string * +0009C593: mov rdi, rax; this +0009C596: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009C59B: jmp short loc_9C5B7 +0009C59D: mov rbx, rax +0009C5A0: mov rax, [rbp+var_18] +0009C5A4: mov rdi, rax; this +0009C5A7: call __ZNSt9exceptionD2Ev; std::exception::~exception() +0009C5AC: mov rax, rbx +0009C5AF: mov rdi, rax; struct _Unwind_Exception * +0009C5B2: call __Unwind_Resume +0009C5B7: add rsp, 18h +0009C5BB: pop rbx +0009C5BC: pop rbp +0009C5BD: retn + +### FUNC 0009C5BE - 0009C60F (81 bytes) name=_ZN8nlohmann6detail9exceptionD2Ev +0009C5BE: push rbp; Alternative name is 'nlohmann::detail::exception::~exception()' +0009C5BF: mov rbp, rsp +0009C5C2: sub rsp, 10h +0009C5C6: mov [rbp+var_8], rdi +0009C5CA: mov rax, [rbp+var_8] +0009C5CE: mov rdx, cs:_ZTVN8nlohmann6detail9exceptionE_ptr +0009C5D5: lea rdx, [rdx+10h] +0009C5D9: mov [rax], rdx +0009C5DC: mov rax, [rbp+var_8] +0009C5E0: add rax, 10h +0009C5E4: mov rdi, rax; this +0009C5E7: call __ZNSt13runtime_errorD1Ev; std::runtime_error::~runtime_error() +0009C5EC: mov rax, [rbp+var_8] +0009C5F0: mov rdi, rax; this +0009C5F3: call __ZNSt9exceptionD2Ev; std::exception::~exception() +0009C5F8: mov eax, 0 +0009C5FD: test eax, eax +0009C5FF: jz short locret_9C60D +0009C601: mov rax, [rbp+var_8] +0009C605: mov rdi, rax; void * +0009C608: call __ZdlPv; operator delete(void *) +0009C60D: leave +0009C60E: retn + +### FUNC 0009C610 - 0009C636 (38 bytes) name=_ZN8nlohmann6detail9exceptionD0Ev +0009C610: push rbp +0009C611: mov rbp, rsp +0009C614: sub rsp, 10h +0009C618: mov [rbp+var_8], rdi +0009C61C: mov rax, [rbp+var_8] +0009C620: mov rdi, rax; this +0009C623: call __ZN8nlohmann6detail9exceptionD2Ev_0; nlohmann::detail::exception::~exception() +0009C628: mov rax, [rbp+var_8] +0009C62C: mov rdi, rax; void * +0009C62F: call __ZdlPv; operator delete(void *) +0009C634: leave +0009C635: retn + +### FUNC 0009C636 - 0009C84E (536 bytes) name=_ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs +0009C636: push rbp +0009C637: mov rbp, rsp +0009C63A: push rbx +0009C63B: sub rsp, 98h +0009C642: mov [rbp+var_88], rdi +0009C649: mov [rbp+var_8C], esi +0009C64F: mov [rbp+var_98], rdx +0009C656: mov [rbp+var_A0], rcx +0009C65D: lea rax, [rbp+var_50] +0009C661: mov rdx, [rbp+var_98] +0009C668: mov rsi, rdx; nlohmann::detail::position_t * +0009C66B: mov rdi, rax; this +0009C66E: call __ZN8nlohmann6detail11parse_error15position_stringERKNS0_10position_tE; nlohmann::detail::parse_error::position_string(nlohmann::detail::position_t const&) +0009C673: lea rax, [rbp+var_11] +0009C677: mov rdi, rax +0009C67A: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009C67F: lea rdx, [rbp+var_11] +0009C683: lea rax, [rbp+var_20] +0009C687: lea rsi, aParseError; "parse_error" +0009C68E: mov rdi, rax +0009C691: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009C696: lea rax, [rbp+var_30] +0009C69A: mov edx, [rbp+var_8C]; int +0009C6A0: lea rcx, [rbp+var_20] +0009C6A4: mov rsi, rcx; std::string * +0009C6A7: mov rdi, rax; this +0009C6AA: call __ZN8nlohmann6detail9exception4nameERKSsi; nlohmann::detail::exception::name(std::string const&,int) +0009C6AF: lea rax, [rbp+var_40] +0009C6B3: lea rcx, [rbp+var_30] +0009C6B7: lea rdx, aParseError_0; "parse error" +0009C6BE: mov rsi, rcx +0009C6C1: mov rdi, rax +0009C6C4: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +0009C6C9: lea rax, [rbp+var_60] +0009C6CD: lea rdx, [rbp+var_50] +0009C6D1: lea rcx, [rbp+var_40] +0009C6D5: mov rsi, rcx +0009C6D8: mov rdi, rax +0009C6DB: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator>&) +0009C6E0: lea rax, [rbp+var_70] +0009C6E4: lea rcx, [rbp+var_60] +0009C6E8: lea rdx, asc_CE7DB; ": " +0009C6EF: mov rsi, rcx +0009C6F2: mov rdi, rax +0009C6F5: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +0009C6FA: lea rax, [rbp+var_80] +0009C6FE: mov rdx, [rbp+var_A0] +0009C705: lea rcx, [rbp+var_70] +0009C709: mov rsi, rcx +0009C70C: mov rdi, rax +0009C70F: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator> const&) +0009C714: lea rax, [rbp+var_70] +0009C718: mov rdi, rax; this +0009C71B: call __ZNSsD1Ev; std::string::~string() +0009C720: lea rax, [rbp+var_60] +0009C724: mov rdi, rax; this +0009C727: call __ZNSsD1Ev; std::string::~string() +0009C72C: lea rax, [rbp+var_40] +0009C730: mov rdi, rax; this +0009C733: call __ZNSsD1Ev; std::string::~string() +0009C738: lea rax, [rbp+var_30] +0009C73C: mov rdi, rax; this +0009C73F: call __ZNSsD1Ev; std::string::~string() +0009C744: lea rax, [rbp+var_20] +0009C748: mov rdi, rax; this +0009C74B: call __ZNSsD1Ev; std::string::~string() +0009C750: lea rax, [rbp+var_11] +0009C754: mov rdi, rax +0009C757: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009C75C: lea rax, [rbp+var_50] +0009C760: mov rdi, rax; this +0009C763: call __ZNSsD1Ev; std::string::~string() +0009C768: lea rax, [rbp+var_80] +0009C76C: mov rdi, rax; this +0009C76F: call __ZNKSs5c_strEv; std::string::c_str(void) +0009C774: mov rcx, rax; char * +0009C777: mov rax, [rbp+var_98] +0009C77E: mov rdx, [rax]; unsigned __int64 +0009C781: mov esi, [rbp+var_8C]; int +0009C787: mov rax, [rbp+var_88] +0009C78E: mov rdi, rax; this +0009C791: call __ZN8nlohmann6detail11parse_errorC2EimPKc; nlohmann::detail::parse_error::parse_error(int,ulong,char const*) +0009C796: nop +0009C797: lea rax, [rbp+var_80] +0009C79B: mov rdi, rax; this +0009C79E: call __ZNSsD1Ev; std::string::~string() +0009C7A3: jmp loc_9C83D +0009C7A8: mov rbx, rax +0009C7AB: lea rax, [rbp+var_70] +0009C7AF: mov rdi, rax; this +0009C7B2: call __ZNSsD1Ev; std::string::~string() +0009C7B7: jmp short loc_9C7BC +0009C7B9: mov rbx, rax +0009C7BC: lea rax, [rbp+var_60] +0009C7C0: mov rdi, rax; this +0009C7C3: call __ZNSsD1Ev; std::string::~string() +0009C7C8: jmp short loc_9C7CD +0009C7CA: mov rbx, rax +0009C7CD: lea rax, [rbp+var_40] +0009C7D1: mov rdi, rax; this +0009C7D4: call __ZNSsD1Ev; std::string::~string() +0009C7D9: jmp short loc_9C7DE +0009C7DB: mov rbx, rax +0009C7DE: lea rax, [rbp+var_30] +0009C7E2: mov rdi, rax; this +0009C7E5: call __ZNSsD1Ev; std::string::~string() +0009C7EA: jmp short loc_9C7EF +0009C7EC: mov rbx, rax +0009C7EF: lea rax, [rbp+var_20] +0009C7F3: mov rdi, rax; this +0009C7F6: call __ZNSsD1Ev; std::string::~string() +0009C7FB: jmp short loc_9C800 +0009C7FD: mov rbx, rax +0009C800: lea rax, [rbp+var_11] +0009C804: mov rdi, rax +0009C807: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009C80C: lea rax, [rbp+var_50] +0009C810: mov rdi, rax; this +0009C813: call __ZNSsD1Ev; std::string::~string() +0009C818: mov rax, rbx +0009C81B: mov rdi, rax; struct _Unwind_Exception * +0009C81E: call __Unwind_Resume +0009C823: mov rbx, rax +0009C826: lea rax, [rbp+var_80] +0009C82A: mov rdi, rax; this +0009C82D: call __ZNSsD1Ev; std::string::~string() +0009C832: mov rax, rbx +0009C835: mov rdi, rax; struct _Unwind_Exception * +0009C838: call __Unwind_Resume +0009C83D: mov rax, [rbp+var_88] +0009C844: add rsp, 98h +0009C84B: pop rbx +0009C84C: pop rbp +0009C84D: retn + +### FUNC 0009C84E - 0009C89A (76 bytes) name=_ZN8nlohmann6detail11parse_errorC2EimPKc +0009C84E: push rbp; Alternative name is 'nlohmann::detail::parse_error::parse_error(int, unsigned long, char const*)' +0009C84F: mov rbp, rsp +0009C852: sub rsp, 20h +0009C856: mov [rbp+var_8], rdi +0009C85A: mov [rbp+var_C], esi +0009C85D: mov [rbp+var_18], rdx +0009C861: mov [rbp+var_20], rcx +0009C865: mov rax, [rbp+var_8] +0009C869: mov rdx, [rbp+var_20]; char * +0009C86D: mov ecx, [rbp+var_C] +0009C870: mov esi, ecx; int +0009C872: mov rdi, rax; this +0009C875: call __ZN8nlohmann6detail9exceptionC2EiPKc; nlohmann::detail::exception::exception(int,char const*) +0009C87A: mov rax, [rbp+var_8] +0009C87E: mov rdx, cs:_ZTVN8nlohmann6detail11parse_errorE_ptr +0009C885: lea rdx, [rdx+10h] +0009C889: mov [rax], rdx +0009C88C: mov rax, [rbp+var_8] +0009C890: mov rdx, [rbp+var_18] +0009C894: mov [rax+20h], rdx +0009C898: leave +0009C899: retn + +### FUNC 0009C89A - 0009C9B0 (278 bytes) name=_ZN8nlohmann6detail11parse_error15position_stringERKNS0_10position_tE +0009C89A: push rbp +0009C89B: mov rbp, rsp +0009C89E: push rbx +0009C89F: sub rsp, 58h +0009C8A3: mov [rbp+var_58], rdi +0009C8A7: mov [rbp+var_60], rsi +0009C8AB: mov rax, [rbp+var_60] +0009C8AF: mov rdx, [rax+8] +0009C8B3: lea rax, [rbp+var_50] +0009C8B7: mov rsi, rdx +0009C8BA: mov rdi, rax; unsigned __int64 +0009C8BD: call __ZSt9to_stringm; std::to_string(ulong) +0009C8C2: mov rax, [rbp+var_60] +0009C8C6: mov rax, [rax+10h] +0009C8CA: lea rdx, [rax+1] +0009C8CE: lea rax, [rbp+var_20] +0009C8D2: mov rsi, rdx +0009C8D5: mov rdi, rax; unsigned __int64 +0009C8D8: call __ZSt9to_stringm; std::to_string(ulong) +0009C8DD: lea rax, [rbp+var_30] +0009C8E1: lea rdx, [rbp+var_20] +0009C8E5: lea rsi, aAtLine; " at line " +0009C8EC: mov rdi, rax +0009C8EF: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +0009C8F4: lea rax, [rbp+var_40] +0009C8F8: lea rcx, [rbp+var_30] +0009C8FC: lea rdx, aColumn; ", column " +0009C903: mov rsi, rcx +0009C906: mov rdi, rax +0009C909: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +0009C90E: mov rax, [rbp+var_58] +0009C912: lea rdx, [rbp+var_50] +0009C916: lea rcx, [rbp+var_40] +0009C91A: mov rsi, rcx +0009C91D: mov rdi, rax +0009C920: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator>&) +0009C925: nop +0009C926: lea rax, [rbp+var_40] +0009C92A: mov rdi, rax; this +0009C92D: call __ZNSsD1Ev; std::string::~string() +0009C932: lea rax, [rbp+var_30] +0009C936: mov rdi, rax; this +0009C939: call __ZNSsD1Ev; std::string::~string() +0009C93E: lea rax, [rbp+var_20] +0009C942: mov rdi, rax; this +0009C945: call __ZNSsD1Ev; std::string::~string() +0009C94A: lea rax, [rbp+var_50] +0009C94E: mov rdi, rax; this +0009C951: call __ZNSsD1Ev; std::string::~string() +0009C956: jmp short loc_9C9A5 +0009C958: mov rbx, rax +0009C95B: lea rax, [rbp+var_40] +0009C95F: mov rdi, rax; this +0009C962: call __ZNSsD1Ev; std::string::~string() +0009C967: jmp short loc_9C96C +0009C969: mov rbx, rax +0009C96C: lea rax, [rbp+var_30] +0009C970: mov rdi, rax; this +0009C973: call __ZNSsD1Ev; std::string::~string() +0009C978: jmp short loc_9C97D +0009C97A: mov rbx, rax +0009C97D: lea rax, [rbp+var_20] +0009C981: mov rdi, rax; this +0009C984: call __ZNSsD1Ev; std::string::~string() +0009C989: jmp short loc_9C98E +0009C98B: mov rbx, rax +0009C98E: lea rax, [rbp+var_50] +0009C992: mov rdi, rax; this +0009C995: call __ZNSsD1Ev; std::string::~string() +0009C99A: mov rax, rbx +0009C99D: mov rdi, rax; struct _Unwind_Exception * +0009C9A0: call __Unwind_Resume +0009C9A5: mov rax, [rbp+var_58] +0009C9A9: add rsp, 58h +0009C9AD: pop rbx +0009C9AE: pop rbp +0009C9AF: retn + +### FUNC 0009C9B0 - 0009CAC8 (280 bytes) name=_ZN8nlohmann6detail16invalid_iterator6createEiRKSs +0009C9B0: push rbp +0009C9B1: mov rbp, rsp +0009C9B4: push rbx +0009C9B5: sub rsp, 58h +0009C9B9: mov [rbp+var_48], rdi +0009C9BD: mov [rbp+var_4C], esi +0009C9C0: mov [rbp+var_58], rdx +0009C9C4: lea rax, [rbp+var_11] +0009C9C8: mov rdi, rax +0009C9CB: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009C9D0: lea rdx, [rbp+var_11] +0009C9D4: lea rax, [rbp+var_20] +0009C9D8: lea rsi, aInvalidIterato; "invalid_iterator" +0009C9DF: mov rdi, rax +0009C9E2: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009C9E7: lea rax, [rbp+var_30] +0009C9EB: mov edx, [rbp+var_4C]; int +0009C9EE: lea rcx, [rbp+var_20] +0009C9F2: mov rsi, rcx; std::string * +0009C9F5: mov rdi, rax; this +0009C9F8: call __ZN8nlohmann6detail9exception4nameERKSsi; nlohmann::detail::exception::name(std::string const&,int) +0009C9FD: lea rax, [rbp+var_40] +0009CA01: mov rdx, [rbp+var_58] +0009CA05: lea rcx, [rbp+var_30] +0009CA09: mov rsi, rcx +0009CA0C: mov rdi, rax +0009CA0F: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator> const&) +0009CA14: lea rax, [rbp+var_30] +0009CA18: mov rdi, rax; this +0009CA1B: call __ZNSsD1Ev; std::string::~string() +0009CA20: lea rax, [rbp+var_20] +0009CA24: mov rdi, rax; this +0009CA27: call __ZNSsD1Ev; std::string::~string() +0009CA2C: lea rax, [rbp+var_11] +0009CA30: mov rdi, rax +0009CA33: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CA38: lea rax, [rbp+var_40] +0009CA3C: mov rdi, rax; this +0009CA3F: call __ZNKSs5c_strEv; std::string::c_str(void) +0009CA44: mov rdx, rax; char * +0009CA47: mov ecx, [rbp+var_4C] +0009CA4A: mov rax, [rbp+var_48] +0009CA4E: mov esi, ecx; int +0009CA50: mov rdi, rax; this +0009CA53: call __ZN8nlohmann6detail16invalid_iteratorC2EiPKc; nlohmann::detail::invalid_iterator::invalid_iterator(int,char const*) +0009CA58: nop +0009CA59: lea rax, [rbp+var_40] +0009CA5D: mov rdi, rax; this +0009CA60: call __ZNSsD1Ev; std::string::~string() +0009CA65: jmp short loc_9CABD +0009CA67: mov rbx, rax +0009CA6A: lea rax, [rbp+var_30] +0009CA6E: mov rdi, rax; this +0009CA71: call __ZNSsD1Ev; std::string::~string() +0009CA76: jmp short loc_9CA7B +0009CA78: mov rbx, rax +0009CA7B: lea rax, [rbp+var_20] +0009CA7F: mov rdi, rax; this +0009CA82: call __ZNSsD1Ev; std::string::~string() +0009CA87: jmp short loc_9CA8C +0009CA89: mov rbx, rax +0009CA8C: lea rax, [rbp+var_11] +0009CA90: mov rdi, rax +0009CA93: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CA98: mov rax, rbx +0009CA9B: mov rdi, rax; struct _Unwind_Exception * +0009CA9E: call __Unwind_Resume +0009CAA3: mov rbx, rax +0009CAA6: lea rax, [rbp+var_40] +0009CAAA: mov rdi, rax; this +0009CAAD: call __ZNSsD1Ev; std::string::~string() +0009CAB2: mov rax, rbx +0009CAB5: mov rdi, rax; struct _Unwind_Exception * +0009CAB8: call __Unwind_Resume +0009CABD: mov rax, [rbp+var_48] +0009CAC1: add rsp, 58h +0009CAC5: pop rbx +0009CAC6: pop rbp +0009CAC7: retn + +### FUNC 0009CAC8 - 0009CB04 (60 bytes) name=_ZN8nlohmann6detail16invalid_iteratorC2EiPKc +0009CAC8: push rbp; Alternative name is 'nlohmann::detail::invalid_iterator::invalid_iterator(int, char const*)' +0009CAC9: mov rbp, rsp +0009CACC: sub rsp, 20h +0009CAD0: mov [rbp+var_8], rdi +0009CAD4: mov [rbp+var_C], esi +0009CAD7: mov [rbp+var_18], rdx +0009CADB: mov rax, [rbp+var_8] +0009CADF: mov rdx, [rbp+var_18]; char * +0009CAE3: mov ecx, [rbp+var_C] +0009CAE6: mov esi, ecx; int +0009CAE8: mov rdi, rax; this +0009CAEB: call __ZN8nlohmann6detail9exceptionC2EiPKc; nlohmann::detail::exception::exception(int,char const*) +0009CAF0: mov rax, [rbp+var_8] +0009CAF4: mov rdx, cs:_ZTVN8nlohmann6detail16invalid_iteratorE_ptr +0009CAFB: lea rdx, [rdx+10h] +0009CAFF: mov [rax], rdx +0009CB02: leave +0009CB03: retn + +### FUNC 0009CB04 - 0009CC1C (280 bytes) name=_ZN8nlohmann6detail10type_error6createEiRKSs +0009CB04: push rbp +0009CB05: mov rbp, rsp +0009CB08: push rbx +0009CB09: sub rsp, 58h +0009CB0D: mov [rbp+var_48], rdi +0009CB11: mov [rbp+var_4C], esi +0009CB14: mov [rbp+var_58], rdx +0009CB18: lea rax, [rbp+var_11] +0009CB1C: mov rdi, rax +0009CB1F: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009CB24: lea rdx, [rbp+var_11] +0009CB28: lea rax, [rbp+var_20] +0009CB2C: lea rsi, aTypeError; "type_error" +0009CB33: mov rdi, rax +0009CB36: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009CB3B: lea rax, [rbp+var_30] +0009CB3F: mov edx, [rbp+var_4C]; int +0009CB42: lea rcx, [rbp+var_20] +0009CB46: mov rsi, rcx; std::string * +0009CB49: mov rdi, rax; this +0009CB4C: call __ZN8nlohmann6detail9exception4nameERKSsi; nlohmann::detail::exception::name(std::string const&,int) +0009CB51: lea rax, [rbp+var_40] +0009CB55: mov rdx, [rbp+var_58] +0009CB59: lea rcx, [rbp+var_30] +0009CB5D: mov rsi, rcx +0009CB60: mov rdi, rax +0009CB63: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator> const&) +0009CB68: lea rax, [rbp+var_30] +0009CB6C: mov rdi, rax; this +0009CB6F: call __ZNSsD1Ev; std::string::~string() +0009CB74: lea rax, [rbp+var_20] +0009CB78: mov rdi, rax; this +0009CB7B: call __ZNSsD1Ev; std::string::~string() +0009CB80: lea rax, [rbp+var_11] +0009CB84: mov rdi, rax +0009CB87: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CB8C: lea rax, [rbp+var_40] +0009CB90: mov rdi, rax; this +0009CB93: call __ZNKSs5c_strEv; std::string::c_str(void) +0009CB98: mov rdx, rax; char * +0009CB9B: mov ecx, [rbp+var_4C] +0009CB9E: mov rax, [rbp+var_48] +0009CBA2: mov esi, ecx; int +0009CBA4: mov rdi, rax; this +0009CBA7: call __ZN8nlohmann6detail10type_errorC2EiPKc; nlohmann::detail::type_error::type_error(int,char const*) +0009CBAC: nop +0009CBAD: lea rax, [rbp+var_40] +0009CBB1: mov rdi, rax; this +0009CBB4: call __ZNSsD1Ev; std::string::~string() +0009CBB9: jmp short loc_9CC11 +0009CBBB: mov rbx, rax +0009CBBE: lea rax, [rbp+var_30] +0009CBC2: mov rdi, rax; this +0009CBC5: call __ZNSsD1Ev; std::string::~string() +0009CBCA: jmp short loc_9CBCF +0009CBCC: mov rbx, rax +0009CBCF: lea rax, [rbp+var_20] +0009CBD3: mov rdi, rax; this +0009CBD6: call __ZNSsD1Ev; std::string::~string() +0009CBDB: jmp short loc_9CBE0 +0009CBDD: mov rbx, rax +0009CBE0: lea rax, [rbp+var_11] +0009CBE4: mov rdi, rax +0009CBE7: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CBEC: mov rax, rbx +0009CBEF: mov rdi, rax; struct _Unwind_Exception * +0009CBF2: call __Unwind_Resume +0009CBF7: mov rbx, rax +0009CBFA: lea rax, [rbp+var_40] +0009CBFE: mov rdi, rax; this +0009CC01: call __ZNSsD1Ev; std::string::~string() +0009CC06: mov rax, rbx +0009CC09: mov rdi, rax; struct _Unwind_Exception * +0009CC0C: call __Unwind_Resume +0009CC11: mov rax, [rbp+var_48] +0009CC15: add rsp, 58h +0009CC19: pop rbx +0009CC1A: pop rbp +0009CC1B: retn + +### FUNC 0009CC1C - 0009CC58 (60 bytes) name=_ZN8nlohmann6detail10type_errorC2EiPKc +0009CC1C: push rbp; Alternative name is 'nlohmann::detail::type_error::type_error(int, char const*)' +0009CC1D: mov rbp, rsp +0009CC20: sub rsp, 20h +0009CC24: mov [rbp+var_8], rdi +0009CC28: mov [rbp+var_C], esi +0009CC2B: mov [rbp+var_18], rdx +0009CC2F: mov rax, [rbp+var_8] +0009CC33: mov rdx, [rbp+var_18]; char * +0009CC37: mov ecx, [rbp+var_C] +0009CC3A: mov esi, ecx; int +0009CC3C: mov rdi, rax; this +0009CC3F: call __ZN8nlohmann6detail9exceptionC2EiPKc; nlohmann::detail::exception::exception(int,char const*) +0009CC44: mov rax, [rbp+var_8] +0009CC48: mov rdx, cs:_ZTVN8nlohmann6detail10type_errorE_ptr +0009CC4F: lea rdx, [rdx+10h] +0009CC53: mov [rax], rdx +0009CC56: leave +0009CC57: retn + +### FUNC 0009CC58 - 0009CD70 (280 bytes) name=_ZN8nlohmann6detail12out_of_range6createEiRKSs +0009CC58: push rbp +0009CC59: mov rbp, rsp +0009CC5C: push rbx +0009CC5D: sub rsp, 58h +0009CC61: mov [rbp+var_48], rdi +0009CC65: mov [rbp+var_4C], esi +0009CC68: mov [rbp+var_58], rdx +0009CC6C: lea rax, [rbp+var_11] +0009CC70: mov rdi, rax +0009CC73: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009CC78: lea rdx, [rbp+var_11] +0009CC7C: lea rax, [rbp+var_20] +0009CC80: lea rsi, aOutOfRange; "out_of_range" +0009CC87: mov rdi, rax +0009CC8A: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009CC8F: lea rax, [rbp+var_30] +0009CC93: mov edx, [rbp+var_4C]; int +0009CC96: lea rcx, [rbp+var_20] +0009CC9A: mov rsi, rcx; std::string * +0009CC9D: mov rdi, rax; this +0009CCA0: call __ZN8nlohmann6detail9exception4nameERKSsi; nlohmann::detail::exception::name(std::string const&,int) +0009CCA5: lea rax, [rbp+var_40] +0009CCA9: mov rdx, [rbp+var_58] +0009CCAD: lea rcx, [rbp+var_30] +0009CCB1: mov rsi, rcx +0009CCB4: mov rdi, rax +0009CCB7: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator> const&) +0009CCBC: lea rax, [rbp+var_30] +0009CCC0: mov rdi, rax; this +0009CCC3: call __ZNSsD1Ev; std::string::~string() +0009CCC8: lea rax, [rbp+var_20] +0009CCCC: mov rdi, rax; this +0009CCCF: call __ZNSsD1Ev; std::string::~string() +0009CCD4: lea rax, [rbp+var_11] +0009CCD8: mov rdi, rax +0009CCDB: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CCE0: lea rax, [rbp+var_40] +0009CCE4: mov rdi, rax; this +0009CCE7: call __ZNKSs5c_strEv; std::string::c_str(void) +0009CCEC: mov rdx, rax; char * +0009CCEF: mov ecx, [rbp+var_4C] +0009CCF2: mov rax, [rbp+var_48] +0009CCF6: mov esi, ecx; int +0009CCF8: mov rdi, rax; this +0009CCFB: call __ZN8nlohmann6detail12out_of_rangeC2EiPKc; nlohmann::detail::out_of_range::out_of_range(int,char const*) +0009CD00: nop +0009CD01: lea rax, [rbp+var_40] +0009CD05: mov rdi, rax; this +0009CD08: call __ZNSsD1Ev; std::string::~string() +0009CD0D: jmp short loc_9CD65 +0009CD0F: mov rbx, rax +0009CD12: lea rax, [rbp+var_30] +0009CD16: mov rdi, rax; this +0009CD19: call __ZNSsD1Ev; std::string::~string() +0009CD1E: jmp short loc_9CD23 +0009CD20: mov rbx, rax +0009CD23: lea rax, [rbp+var_20] +0009CD27: mov rdi, rax; this +0009CD2A: call __ZNSsD1Ev; std::string::~string() +0009CD2F: jmp short loc_9CD34 +0009CD31: mov rbx, rax +0009CD34: lea rax, [rbp+var_11] +0009CD38: mov rdi, rax +0009CD3B: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CD40: mov rax, rbx +0009CD43: mov rdi, rax; struct _Unwind_Exception * +0009CD46: call __Unwind_Resume +0009CD4B: mov rbx, rax +0009CD4E: lea rax, [rbp+var_40] +0009CD52: mov rdi, rax; this +0009CD55: call __ZNSsD1Ev; std::string::~string() +0009CD5A: mov rax, rbx +0009CD5D: mov rdi, rax; struct _Unwind_Exception * +0009CD60: call __Unwind_Resume +0009CD65: mov rax, [rbp+var_48] +0009CD69: add rsp, 58h +0009CD6D: pop rbx +0009CD6E: pop rbp +0009CD6F: retn + +### FUNC 0009CD70 - 0009CDAC (60 bytes) name=_ZN8nlohmann6detail12out_of_rangeC2EiPKc +0009CD70: push rbp; Alternative name is 'nlohmann::detail::out_of_range::out_of_range(int, char const*)' +0009CD71: mov rbp, rsp +0009CD74: sub rsp, 20h +0009CD78: mov [rbp+var_8], rdi +0009CD7C: mov [rbp+var_C], esi +0009CD7F: mov [rbp+var_18], rdx +0009CD83: mov rax, [rbp+var_8] +0009CD87: mov rdx, [rbp+var_18]; char * +0009CD8B: mov ecx, [rbp+var_C] +0009CD8E: mov esi, ecx; int +0009CD90: mov rdi, rax; this +0009CD93: call __ZN8nlohmann6detail9exceptionC2EiPKc; nlohmann::detail::exception::exception(int,char const*) +0009CD98: mov rax, [rbp+var_8] +0009CD9C: mov rdx, cs:_ZTVN8nlohmann6detail12out_of_rangeE_ptr +0009CDA3: lea rdx, [rdx+10h] +0009CDA7: mov [rax], rdx +0009CDAA: leave +0009CDAB: retn + +### FUNC 0009CDAC - 0009CEC4 (280 bytes) name=_ZN8nlohmann6detail11other_error6createEiRKSs +0009CDAC: push rbp +0009CDAD: mov rbp, rsp +0009CDB0: push rbx +0009CDB1: sub rsp, 58h +0009CDB5: mov [rbp+var_48], rdi +0009CDB9: mov [rbp+var_4C], esi +0009CDBC: mov [rbp+var_58], rdx +0009CDC0: lea rax, [rbp+var_11] +0009CDC4: mov rdi, rax +0009CDC7: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009CDCC: lea rdx, [rbp+var_11] +0009CDD0: lea rax, [rbp+var_20] +0009CDD4: lea rsi, aOtherError; "other_error" +0009CDDB: mov rdi, rax +0009CDDE: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009CDE3: lea rax, [rbp+var_30] +0009CDE7: mov edx, [rbp+var_4C]; int +0009CDEA: lea rcx, [rbp+var_20] +0009CDEE: mov rsi, rcx; std::string * +0009CDF1: mov rdi, rax; this +0009CDF4: call __ZN8nlohmann6detail9exception4nameERKSsi; nlohmann::detail::exception::name(std::string const&,int) +0009CDF9: lea rax, [rbp+var_40] +0009CDFD: mov rdx, [rbp+var_58] +0009CE01: lea rcx, [rbp+var_30] +0009CE05: mov rsi, rcx +0009CE08: mov rdi, rax +0009CE0B: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator> const&) +0009CE10: lea rax, [rbp+var_30] +0009CE14: mov rdi, rax; this +0009CE17: call __ZNSsD1Ev; std::string::~string() +0009CE1C: lea rax, [rbp+var_20] +0009CE20: mov rdi, rax; this +0009CE23: call __ZNSsD1Ev; std::string::~string() +0009CE28: lea rax, [rbp+var_11] +0009CE2C: mov rdi, rax +0009CE2F: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CE34: lea rax, [rbp+var_40] +0009CE38: mov rdi, rax; this +0009CE3B: call __ZNKSs5c_strEv; std::string::c_str(void) +0009CE40: mov rdx, rax; char * +0009CE43: mov ecx, [rbp+var_4C] +0009CE46: mov rax, [rbp+var_48] +0009CE4A: mov esi, ecx; int +0009CE4C: mov rdi, rax; this +0009CE4F: call __ZN8nlohmann6detail11other_errorC2EiPKc; nlohmann::detail::other_error::other_error(int,char const*) +0009CE54: nop +0009CE55: lea rax, [rbp+var_40] +0009CE59: mov rdi, rax; this +0009CE5C: call __ZNSsD1Ev; std::string::~string() +0009CE61: jmp short loc_9CEB9 +0009CE63: mov rbx, rax +0009CE66: lea rax, [rbp+var_30] +0009CE6A: mov rdi, rax; this +0009CE6D: call __ZNSsD1Ev; std::string::~string() +0009CE72: jmp short loc_9CE77 +0009CE74: mov rbx, rax +0009CE77: lea rax, [rbp+var_20] +0009CE7B: mov rdi, rax; this +0009CE7E: call __ZNSsD1Ev; std::string::~string() +0009CE83: jmp short loc_9CE88 +0009CE85: mov rbx, rax +0009CE88: lea rax, [rbp+var_11] +0009CE8C: mov rdi, rax +0009CE8F: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009CE94: mov rax, rbx +0009CE97: mov rdi, rax; struct _Unwind_Exception * +0009CE9A: call __Unwind_Resume +0009CE9F: mov rbx, rax +0009CEA2: lea rax, [rbp+var_40] +0009CEA6: mov rdi, rax; this +0009CEA9: call __ZNSsD1Ev; std::string::~string() +0009CEAE: mov rax, rbx +0009CEB1: mov rdi, rax; struct _Unwind_Exception * +0009CEB4: call __Unwind_Resume +0009CEB9: mov rax, [rbp+var_48] +0009CEBD: add rsp, 58h +0009CEC1: pop rbx +0009CEC2: pop rbp +0009CEC3: retn + +### FUNC 0009CEC4 - 0009CF00 (60 bytes) name=_ZN8nlohmann6detail11other_errorC2EiPKc +0009CEC4: push rbp; Alternative name is 'nlohmann::detail::other_error::other_error(int, char const*)' +0009CEC5: mov rbp, rsp +0009CEC8: sub rsp, 20h +0009CECC: mov [rbp+var_8], rdi +0009CED0: mov [rbp+var_C], esi +0009CED3: mov [rbp+var_18], rdx +0009CED7: mov rax, [rbp+var_8] +0009CEDB: mov rdx, [rbp+var_18]; char * +0009CEDF: mov ecx, [rbp+var_C] +0009CEE2: mov esi, ecx; int +0009CEE4: mov rdi, rax; this +0009CEE7: call __ZN8nlohmann6detail9exceptionC2EiPKc; nlohmann::detail::exception::exception(int,char const*) +0009CEEC: mov rax, [rbp+var_8] +0009CEF0: mov rdx, cs:_ZTVN8nlohmann6detail11other_errorE_ptr +0009CEF7: lea rdx, [rdx+10h] +0009CEFB: mov [rax], rdx +0009CEFE: leave +0009CEFF: retn + +### FUNC 0009CF00 - 0009CF15 (21 bytes) name=_ZN8nlohmann6detail20primitive_iterator_t9set_beginEv +0009CF00: push rbp +0009CF01: mov rbp, rsp +0009CF04: mov [rbp+var_8], rdi +0009CF08: mov rax, [rbp+var_8] +0009CF0C: mov qword ptr [rax], 0 +0009CF13: pop rbp +0009CF14: retn + +### FUNC 0009CF16 - 0009CF2B (21 bytes) name=_ZN8nlohmann6detail20primitive_iterator_t7set_endEv +0009CF16: push rbp +0009CF17: mov rbp, rsp +0009CF1A: mov [rbp+var_8], rdi +0009CF1E: mov rax, [rbp+var_8] +0009CF22: mov qword ptr [rax], 1 +0009CF29: pop rbp +0009CF2A: retn + +### FUNC 0009CF2C - 0009CF43 (23 bytes) name=_ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv +0009CF2C: push rbp +0009CF2D: mov rbp, rsp +0009CF30: mov [rbp+var_8], rdi +0009CF34: mov rax, [rbp+var_8] +0009CF38: mov rax, [rax] +0009CF3B: test rax, rax +0009CF3E: setz al +0009CF41: pop rbp +0009CF42: retn + +### FUNC 0009CF43 - 0009CF5F (28 bytes) name=_ZN8nlohmann6detaileqENS0_20primitive_iterator_tES1_ +0009CF43: push rbp +0009CF44: mov rbp, rsp +0009CF47: mov [rbp+var_10], rdi +0009CF4B: mov [rbp+var_20], rsi +0009CF4F: mov rdx, [rbp+var_10] +0009CF53: mov rax, [rbp+var_20] +0009CF57: cmp rdx, rax +0009CF5A: setz al +0009CF5D: pop rbp +0009CF5E: retn + +### FUNC 0009CF60 - 0009CF80 (32 bytes) name=_ZN8nlohmann6detail20primitive_iterator_tppEv +0009CF60: push rbp +0009CF61: mov rbp, rsp +0009CF64: mov [rbp+var_8], rdi +0009CF68: mov rax, [rbp+var_8] +0009CF6C: mov rax, [rax] +0009CF6F: lea rdx, [rax+1] +0009CF73: mov rax, [rbp+var_8] +0009CF77: mov [rax], rdx +0009CF7A: mov rax, [rbp+var_8] +0009CF7E: pop rbp +0009CF7F: retn + +### FUNC 0009CF80 - 0009CF8E (14 bytes) name=_ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +0009CF80: push rbp +0009CF81: mov rbp, rsp +0009CF84: mov [rbp+var_8], rdi +0009CF88: mov rax, [rbp+var_8] +0009CF8C: pop rbp +0009CF8D: retn + +### FUNC 0009CF8E - 0009CFA8 (26 bytes) name=_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev +0009CF8E: push rbp; Alternative name is 'std::function>> &)>::~function()' +0009CF8F: mov rbp, rsp +0009CF92: sub rsp, 10h +0009CF96: mov [rbp+var_8], rdi +0009CF9A: mov rax, [rbp+var_8] +0009CF9E: mov rdi, rax; this +0009CFA1: call __ZNSt14_Function_baseD2Ev; std::_Function_base::~_Function_base() +0009CFA6: leave +0009CFA7: retn + +### FUNC 0009CFA8 - 0009CFC4 (28 bytes) name=_ZN18IProximityDelegateC2Ev +0009CFA8: push rbp; Alternative name is 'IProximityDelegate::IProximityDelegate(void)' +0009CFA9: mov rbp, rsp +0009CFAC: mov [rbp+var_8], rdi +0009CFB0: mov rax, [rbp+var_8] +0009CFB4: mov rdx, cs:_ZTV18IProximityDelegate_ptr +0009CFBB: lea rdx, [rdx+10h] +0009CFBF: mov [rax], rdx +0009CFC2: pop rbp +0009CFC3: retn + +### FUNC 0009CFC4 - 0009CFE0 (28 bytes) name=_ZN10IMotorDoneC2Ev +0009CFC4: push rbp; Alternative name is 'IMotorDone::IMotorDone(void)' +0009CFC5: mov rbp, rsp +0009CFC8: mov [rbp+var_8], rdi +0009CFCC: mov rax, [rbp+var_8] +0009CFD0: mov rdx, cs:_ZTV10IMotorDone_ptr +0009CFD7: lea rdx, [rdx+10h] +0009CFDB: mov [rax], rdx +0009CFDE: pop rbp +0009CFDF: retn + +### FUNC 0009CFE0 - 0009CFFC (28 bytes) name=_ZN11ILimitEventC2Ev +0009CFE0: push rbp; Alternative name is 'ILimitEvent::ILimitEvent(void)' +0009CFE1: mov rbp, rsp +0009CFE4: mov [rbp+var_8], rdi +0009CFE8: mov rax, [rbp+var_8] +0009CFEC: mov rdx, cs:_ZTV11ILimitEvent_ptr +0009CFF3: lea rdx, [rdx+10h] +0009CFF7: mov [rax], rdx +0009CFFA: pop rbp +0009CFFB: retn + +### FUNC 0009CFFC - 0009D018 (28 bytes) name=_ZN18ITCMUpdateDelegateC2Ev +0009CFFC: push rbp; Alternative name is 'ITCMUpdateDelegate::ITCMUpdateDelegate(void)' +0009CFFD: mov rbp, rsp +0009D000: mov [rbp+var_8], rdi +0009D004: mov rax, [rbp+var_8] +0009D008: mov rdx, cs:_ZTV18ITCMUpdateDelegate_ptr +0009D00F: lea rdx, [rdx+10h] +0009D013: mov [rax], rdx +0009D016: pop rbp +0009D017: retn + +### FUNC 0009D018 - 0009D032 (26 bytes) name=_ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEED2Ev +0009D018: push rbp; Alternative name is 'std::unordered_map, std::equal_to, std::allocator>>::~unordered_map()' +0009D019: mov rbp, rsp +0009D01C: sub rsp, 10h +0009D020: mov [rbp+var_8], rdi +0009D024: mov rax, [rbp+var_8] +0009D028: mov rdi, rax +0009D02B: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEED2Ev; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::~_Hashtable() +0009D030: leave +0009D031: retn + +### FUNC 0009D032 - 0009D0C4 (146 bytes) name=_ZN6serial8PortInfoC2ERKS0_ +0009D032: push rbp; Alternative name is 'serial::PortInfo::PortInfo(serial::PortInfo const&)' +0009D033: mov rbp, rsp +0009D036: push rbx +0009D037: sub rsp, 18h +0009D03B: mov [rbp+var_18], rdi +0009D03F: mov [rbp+var_20], rsi +0009D043: mov rdx, [rbp+var_20] +0009D047: mov rax, [rbp+var_18] +0009D04B: mov rsi, rdx; std::string * +0009D04E: mov rdi, rax; this +0009D051: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009D056: mov rax, [rbp+var_20] +0009D05A: lea rdx, [rax+8] +0009D05E: mov rax, [rbp+var_18] +0009D062: add rax, 8 +0009D066: mov rsi, rdx; std::string * +0009D069: mov rdi, rax; this +0009D06C: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009D071: mov rax, [rbp+var_20] +0009D075: lea rdx, [rax+10h] +0009D079: mov rax, [rbp+var_18] +0009D07D: add rax, 10h +0009D081: mov rsi, rdx; std::string * +0009D084: mov rdi, rax; this +0009D087: call __ZNSsC1ERKSs; std::string::string(std::string const&) +0009D08C: jmp short loc_9D0BD +0009D08E: mov rbx, rax +0009D091: mov rax, [rbp+var_18] +0009D095: add rax, 8 +0009D099: mov rdi, rax; this +0009D09C: call __ZNSsD1Ev; std::string::~string() +0009D0A1: jmp short loc_9D0A6 +0009D0A3: mov rbx, rax +0009D0A6: mov rax, [rbp+var_18] +0009D0AA: mov rdi, rax; this +0009D0AD: call __ZNSsD1Ev; std::string::~string() +0009D0B2: mov rax, rbx +0009D0B5: mov rdi, rax; struct _Unwind_Exception * +0009D0B8: call __Unwind_Resume +0009D0BD: add rsp, 18h +0009D0C1: pop rbx +0009D0C2: pop rbp +0009D0C3: retn + +### FUNC 0009D0C4 - 0009D0FE (58 bytes) name=_ZN6serial8PortInfoD2Ev +0009D0C4: push rbp; Alternative name is 'serial::PortInfo::~PortInfo()' +0009D0C5: mov rbp, rsp +0009D0C8: sub rsp, 10h +0009D0CC: mov [rbp+var_8], rdi +0009D0D0: mov rax, [rbp+var_8] +0009D0D4: add rax, 10h +0009D0D8: mov rdi, rax; this +0009D0DB: call __ZNSsD1Ev; std::string::~string() +0009D0E0: mov rax, [rbp+var_8] +0009D0E4: add rax, 8 +0009D0E8: mov rdi, rax; this +0009D0EB: call __ZNSsD1Ev; std::string::~string() +0009D0F0: mov rax, [rbp+var_8] +0009D0F4: mov rdi, rax; this +0009D0F7: call __ZNSsD1Ev; std::string::~string() +0009D0FC: leave +0009D0FD: retn + +### FUNC 0009D0FE - 0009D128 (42 bytes) name=_ZN13TCMPresetDataD2Ev +0009D0FE: push rbp; Alternative name is 'TCMPresetData::~TCMPresetData()' +0009D0FF: mov rbp, rsp +0009D102: sub rsp, 10h +0009D106: mov [rbp+var_8], rdi +0009D10A: mov rax, [rbp+var_8] +0009D10E: add rax, 28h ; '(' +0009D112: mov rdi, rax; this +0009D115: call __ZNSsD1Ev; std::string::~string() +0009D11A: mov rax, [rbp+var_8] +0009D11E: mov rdi, rax +0009D121: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +0009D126: leave +0009D127: retn + +### FUNC 0009D128 - 0009D156 (46 bytes) name=_ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEED2Ev +0009D128: push rbp; Alternative name is 'nlohmann::detail::iteration_proxy_value>>>>::~iteration_proxy_value()' +0009D129: mov rbp, rsp +0009D12C: sub rsp, 10h +0009D130: mov [rbp+var_8], rdi +0009D134: mov rax, [rbp+var_8] +0009D138: add rax, 38h ; '8' +0009D13C: mov rdi, rax; this +0009D13F: call __ZNSsD1Ev; std::string::~string() +0009D144: mov rax, [rbp+var_8] +0009D148: add rax, 30h ; '0' +0009D14C: mov rdi, rax; this +0009D14F: call __ZNSsD1Ev; std::string::~string() +0009D154: leave +0009D155: retn + +### FUNC 0009D156 - 0009D2CD (375 bytes) name=_ZN9__gnu_cxx12__to_xstringISscEET_PFiPT0_mPKS2_P13__va_list_tagEmS5_z +0009D156: push rbp +0009D157: mov rbp, rsp +0009D15A: push rbx +0009D15B: sub rsp, 108h +0009D162: mov [rbp+var_F8], rdi +0009D169: mov [rbp+var_100], rsi +0009D170: mov [rbp+var_108], rdx +0009D177: mov [rbp+var_A0], r8 +0009D17E: mov [rbp+var_98], r9 +0009D185: test al, al +0009D187: jz short loc_9D1AC +0009D189: movaps [rbp+var_90], xmm0 +0009D190: movaps [rbp+var_80], xmm1 +0009D194: movaps [rbp+var_70], xmm2 +0009D198: movaps [rbp+var_60], xmm3 +0009D19C: movaps [rbp+var_50], xmm4 +0009D1A0: movaps [rbp+var_40], xmm5 +0009D1A4: movaps [rbp+var_30], xmm6 +0009D1A8: movaps [rbp+var_20], xmm7 +0009D1AC: mov [rbp+var_110], rcx +0009D1B3: mov rax, [rbp+var_108] +0009D1BA: lea rdx, [rax+0Fh] +0009D1BE: mov eax, 10h +0009D1C3: sub rax, 1 +0009D1C7: add rax, rdx +0009D1CA: mov ebx, 10h +0009D1CF: mov edx, 0 +0009D1D4: div rbx +0009D1D7: imul rax, 10h +0009D1DB: sub rsp, rax +0009D1DE: mov rax, rsp +0009D1E1: add rax, 0Fh +0009D1E5: shr rax, 4 +0009D1E9: shl rax, 4 +0009D1ED: mov [rbp+var_C8], rax +0009D1F4: mov [rbp+var_E8], 20h ; ' ' +0009D1FE: mov [rbp+var_E4], 30h ; '0' +0009D208: lea rax, [rbp+arg_0] +0009D20C: mov [rbp+var_E0], rax +0009D213: lea rax, [rbp+var_C0] +0009D21A: mov [rbp+var_D8], rax +0009D221: lea rcx, [rbp+var_E8] +0009D228: mov rdx, [rbp+var_110] +0009D22F: mov rsi, [rbp+var_108] +0009D236: mov rdi, [rbp+var_C8] +0009D23D: mov rax, [rbp+var_100] +0009D244: call rax +0009D246: mov [rbp+var_CC], eax +0009D24C: lea rax, [rbp+var_CD] +0009D253: mov rdi, rax +0009D256: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009D25B: mov eax, [rbp+var_CC] +0009D261: movsxd rdx, eax +0009D264: mov rax, [rbp+var_C8] +0009D26B: lea rdi, [rdx+rax] +0009D26F: lea rdx, [rbp+var_CD] +0009D276: mov rsi, [rbp+var_C8] +0009D27D: mov rax, [rbp+var_F8] +0009D284: mov rcx, rdx +0009D287: mov rdx, rdi +0009D28A: mov rdi, rax +0009D28D: call __ZNSsC2IPcEET_S1_RKSaIcE; std::string::string(char *,char *,std::allocator const&) +0009D292: lea rax, [rbp+var_CD] +0009D299: mov rdi, rax +0009D29C: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009D2A1: jmp short loc_9D2C0 +0009D2A3: mov rbx, rax +0009D2A6: lea rax, [rbp+var_CD] +0009D2AD: mov rdi, rax +0009D2B0: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009D2B5: mov rax, rbx +0009D2B8: mov rdi, rax; struct _Unwind_Exception * +0009D2BB: call __Unwind_Resume +0009D2C0: mov rax, [rbp+var_F8] +0009D2C7: mov rbx, [rbp+var_8] +0009D2CB: leave +0009D2CC: retn + +### FUNC 0009D2CD - 0009D2DB (14 bytes) name=_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ +0009D2CD: push rbp +0009D2CE: mov rbp, rsp +0009D2D1: mov [rbp+var_8], rdi +0009D2D5: mov rax, [rbp+var_8] +0009D2D9: pop rbp +0009D2DA: retn + +### FUNC 0009D2DB - 0009D3B5 (218 bytes) name=_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_ +0009D2DB: push rbp +0009D2DC: mov rbp, rsp +0009D2DF: push rbx +0009D2E0: sub rsp, 38h +0009D2E4: mov [rbp+var_28], rdi +0009D2E8: mov [rbp+var_30], rsi +0009D2EC: mov [rbp+var_38], rdx +0009D2F0: mov rax, [rbp+var_30] +0009D2F4: mov rdi, rax; this +0009D2F7: call __ZNKSs4sizeEv; std::string::size(void) +0009D2FC: mov rbx, rax +0009D2FF: mov rax, [rbp+var_38] +0009D303: mov rdi, rax; this +0009D306: call __ZNKSs4sizeEv; std::string::size(void) +0009D30B: add rax, rbx +0009D30E: mov [rbp+var_18], rax +0009D312: mov rax, [rbp+var_30] +0009D316: mov rdi, rax; this +0009D319: call __ZNKSs8capacityEv; std::string::capacity(void) +0009D31E: cmp rax, [rbp+var_18] +0009D322: jnb short loc_9D33D +0009D324: mov rax, [rbp+var_38] +0009D328: mov rdi, rax; this +0009D32B: call __ZNKSs8capacityEv; std::string::capacity(void) +0009D330: cmp rax, [rbp+var_18] +0009D334: jb short loc_9D33D +0009D336: mov eax, 1 +0009D33B: jmp short loc_9D342 +0009D33D: mov eax, 0 +0009D342: mov [rbp+var_19], al +0009D345: cmp [rbp+var_19], 0 +0009D349: jz short loc_9D37C +0009D34B: mov rdx, [rbp+var_30]; std::string * +0009D34F: mov rax, [rbp+var_38] +0009D353: mov esi, 0; unsigned __int64 +0009D358: mov rdi, rax; this +0009D35B: call __ZNSs6insertEmRKSs; std::string::insert(ulong,std::string const&) +0009D360: mov rdi, rax +0009D363: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +0009D368: mov rdx, rax +0009D36B: mov rax, [rbp+var_28] +0009D36F: mov rsi, rdx +0009D372: mov rdi, rax +0009D375: call __ZNSsC1EOSs; std::string::string(std::string &&) +0009D37A: jmp short loc_9D3A9 +0009D37C: mov rdx, [rbp+var_38] +0009D380: mov rax, [rbp+var_30] +0009D384: mov rsi, rdx; std::string * +0009D387: mov rdi, rax; this +0009D38A: call __ZNSs6appendERKSs; std::string::append(std::string const&) +0009D38F: mov rdi, rax +0009D392: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +0009D397: mov rdx, rax +0009D39A: mov rax, [rbp+var_28] +0009D39E: mov rsi, rdx +0009D3A1: mov rdi, rax +0009D3A4: call __ZNSsC1EOSs; std::string::string(std::string &&) +0009D3A9: nop +0009D3AA: mov rax, [rbp+var_28] +0009D3AE: add rsp, 38h +0009D3B2: pop rbx +0009D3B3: pop rbp +0009D3B4: retn + +### FUNC 0009D3B5 - 0009D459 (164 bytes) name=_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ +0009D3B5: push rbp +0009D3B6: mov rbp, rsp +0009D3B9: push rbx +0009D3BA: sub rsp, 38h +0009D3BE: mov [rbp+var_28], rdi +0009D3C2: mov [rbp+var_30], rsi +0009D3C6: mov [rbp+var_38], rdx +0009D3CA: mov rax, [rbp+var_30] +0009D3CE: mov rdi, rax +0009D3D1: call __ZNSt11char_traitsIcE6lengthEPKc; std::char_traits::length(char const*) +0009D3D6: mov [rbp+var_18], rax +0009D3DA: mov rax, [rbp+var_28] +0009D3DE: mov rdi, rax; this +0009D3E1: call __ZNSsC1Ev; std::string::string(void) +0009D3E6: mov rax, [rbp+var_38] +0009D3EA: mov rdi, rax; this +0009D3ED: call __ZNKSs4sizeEv; std::string::size(void) +0009D3F2: mov rdx, [rbp+var_18] +0009D3F6: add rdx, rax +0009D3F9: mov rax, [rbp+var_28] +0009D3FD: mov rsi, rdx; unsigned __int64 +0009D400: mov rdi, rax; this +0009D403: call __ZNSs7reserveEm; std::string::reserve(ulong) +0009D408: mov rdx, [rbp+var_18]; unsigned __int64 +0009D40C: mov rcx, [rbp+var_30] +0009D410: mov rax, [rbp+var_28] +0009D414: mov rsi, rcx; char * +0009D417: mov rdi, rax; this +0009D41A: call __ZNSs6appendEPKcm; std::string::append(char const*,ulong) +0009D41F: mov rdx, [rbp+var_38] +0009D423: mov rax, [rbp+var_28] +0009D427: mov rsi, rdx; std::string * +0009D42A: mov rdi, rax; this +0009D42D: call __ZNSs6appendERKSs; std::string::append(std::string const&) +0009D432: jmp short loc_9D44E +0009D434: mov rbx, rax +0009D437: mov rax, [rbp+var_28] +0009D43B: mov rdi, rax; this +0009D43E: call __ZNSsD1Ev; std::string::~string() +0009D443: mov rax, rbx +0009D446: mov rdi, rax; struct _Unwind_Exception * +0009D449: call __Unwind_Resume +0009D44E: mov rax, [rbp+var_28] +0009D452: add rsp, 38h +0009D456: pop rbx +0009D457: pop rbp +0009D458: retn + +### FUNC 0009D459 - 0009D4A0 (71 bytes) name=_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ +0009D459: push rbp +0009D45A: mov rbp, rsp +0009D45D: sub rsp, 20h +0009D461: mov [rbp+var_8], rdi +0009D465: mov [rbp+var_10], rsi +0009D469: mov [rbp+var_18], rdx +0009D46D: mov rdx, [rbp+var_18] +0009D471: mov rax, [rbp+var_10] +0009D475: mov rsi, rdx; char * +0009D478: mov rdi, rax; this +0009D47B: call __ZNSs6appendEPKc; std::string::append(char const*) +0009D480: mov rdi, rax +0009D483: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +0009D488: mov rdx, rax +0009D48B: mov rax, [rbp+var_8] +0009D48F: mov rsi, rdx +0009D492: mov rdi, rax +0009D495: call __ZNSsC1EOSs; std::string::string(std::string &&) +0009D49A: mov rax, [rbp+var_8] +0009D49E: leave +0009D49F: retn + +### FUNC 0009D4A0 - 0009D4E7 (71 bytes) name=_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_RKS6_ +0009D4A0: push rbp +0009D4A1: mov rbp, rsp +0009D4A4: sub rsp, 20h +0009D4A8: mov [rbp+var_8], rdi +0009D4AC: mov [rbp+var_10], rsi +0009D4B0: mov [rbp+var_18], rdx +0009D4B4: mov rdx, [rbp+var_18] +0009D4B8: mov rax, [rbp+var_10] +0009D4BC: mov rsi, rdx; std::string * +0009D4BF: mov rdi, rax; this +0009D4C2: call __ZNSs6appendERKSs; std::string::append(std::string const&) +0009D4C7: mov rdi, rax +0009D4CA: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +0009D4CF: mov rdx, rax +0009D4D2: mov rax, [rbp+var_8] +0009D4D6: mov rsi, rdx +0009D4D9: mov rdi, rax +0009D4DC: call __ZNSsC1EOSs; std::string::string(std::string &&) +0009D4E1: mov rax, [rbp+var_8] +0009D4E5: leave +0009D4E6: retn + +### FUNC 0009D4E7 - 0009D530 (73 bytes) name=_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_ +0009D4E7: push rbp +0009D4E8: mov rbp, rsp +0009D4EB: sub rsp, 20h +0009D4EF: mov [rbp+var_8], rdi +0009D4F3: mov [rbp+var_10], rsi +0009D4F7: mov [rbp+var_18], rdx +0009D4FB: mov rdx, [rbp+var_10]; char * +0009D4FF: mov rax, [rbp+var_18] +0009D503: mov esi, 0; unsigned __int64 +0009D508: mov rdi, rax; this +0009D50B: call __ZNSs6insertEmPKc; std::string::insert(ulong,char const*) +0009D510: mov rdi, rax +0009D513: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +0009D518: mov rdx, rax +0009D51B: mov rax, [rbp+var_8] +0009D51F: mov rsi, rdx +0009D522: mov rdi, rax +0009D525: call __ZNSsC1EOSs; std::string::string(std::string &&) +0009D52A: mov rax, [rbp+var_8] +0009D52E: leave +0009D52F: retn + +### FUNC 0009D530 - 0009D53E (14 bytes) name=_ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE +0009D530: push rbp +0009D531: mov rbp, rsp +0009D534: mov [rbp+var_8], rdi +0009D538: mov rax, [rbp+var_8] +0009D53C: pop rbp +0009D53D: retn + +### FUNC 0009D53E - 0009D56D (47 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn +0009D53E: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(decltype(nullptr))' +0009D53F: mov rbp, rsp +0009D542: sub rsp, 10h +0009D546: mov [rbp+var_8], rdi +0009D54A: mov [rbp+var_10], rsi +0009D54E: mov rax, [rbp+var_8] +0009D552: mov esi, 0 +0009D557: mov rdi, rax +0009D55A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +0009D55F: mov rax, [rbp+var_8] +0009D563: mov rdi, rax +0009D566: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009D56B: leave +0009D56C: retn + +### FUNC 0009D56E - 0009D5A1 (51 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev +0009D56E: push rbp; Alternative name is 'nlohmann::basic_json>>::~basic_json()' +0009D56F: mov rbp, rsp +0009D572: sub rsp, 10h +0009D576: mov [rbp+var_8], rdi +0009D57A: mov rax, [rbp+var_8] +0009D57E: mov rdi, rax +0009D581: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009D586: mov rax, [rbp+var_8] +0009D58A: movzx eax, byte ptr [rax] +0009D58D: mov rdx, [rbp+var_8] +0009D591: add rdx, 8 +0009D595: mov esi, eax +0009D597: mov rdi, rdx +0009D59A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_value7destroyENS_6detail7value_tE; nlohmann::basic_json>>::json_value::destroy(nlohmann::detail::value_t) +0009D59F: leave +0009D5A0: retn + +### FUNC 0009D5A2 - 0009D5AC (10 bytes) name=_ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev +0009D5A2: push rbp; Alternative name is 'std::_Maybe_unary_or_binary_function>> &>::_Maybe_unary_or_binary_function(void)' +0009D5A3: mov rbp, rsp +0009D5A6: mov [rbp+var_8], rdi +0009D5AA: pop rbp +0009D5AB: retn + +### FUNC 0009D5AC - 0009D5D6 (42 bytes) name=_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EDn +0009D5AC: push rbp; Alternative name is 'std::function>> &)>::function(decltype(nullptr))' +0009D5AD: mov rbp, rsp +0009D5B0: sub rsp, 10h +0009D5B4: mov [rbp+var_8], rdi +0009D5B8: mov [rbp+var_10], rsi +0009D5BC: mov rax, [rbp+var_8] +0009D5C0: mov rdi, rax +0009D5C3: call __ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev; std::_Maybe_unary_or_binary_function>> &>::_Maybe_unary_or_binary_function(void) +0009D5C8: mov rax, [rbp+var_8] +0009D5CC: mov rdi, rax; this +0009D5CF: call __ZNSt14_Function_baseC2Ev; std::_Function_base::_Function_base(void) +0009D5D4: leave +0009D5D5: retn + +### FUNC 0009D5D6 - 0009D635 (95 bytes) name=_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EOSC_ +0009D5D6: push rbp; Alternative name is 'std::function>> &)>::function(std::function>> &)>&&)' +0009D5D7: mov rbp, rsp +0009D5DA: push rbx +0009D5DB: sub rsp, 18h +0009D5DF: mov [rbp+var_18], rdi +0009D5E3: mov [rbp+var_20], rsi +0009D5E7: mov rax, [rbp+var_18] +0009D5EB: mov rdi, rax +0009D5EE: call __ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev; std::_Maybe_unary_or_binary_function>> &>::_Maybe_unary_or_binary_function(void) +0009D5F3: mov rax, [rbp+var_18] +0009D5F7: mov rdi, rax; this +0009D5FA: call __ZNSt14_Function_baseC2Ev; std::_Function_base::_Function_base(void) +0009D5FF: mov rdx, [rbp+var_18] +0009D603: mov rax, [rbp+var_20] +0009D607: mov rsi, rdx +0009D60A: mov rdi, rax +0009D60D: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEE4swapERSC_; std::function>> &)>::swap(std::function>> &)>&) +0009D612: jmp short loc_9D62E +0009D614: mov rbx, rax +0009D617: mov rax, [rbp+var_18] +0009D61B: mov rdi, rax; this +0009D61E: call __ZNSt14_Function_baseD2Ev; std::_Function_base::~_Function_base() +0009D623: mov rax, rbx +0009D626: mov rdi, rax; struct _Unwind_Exception * +0009D629: call __Unwind_Resume +0009D62E: add rsp, 18h +0009D632: pop rbx +0009D633: pop rbp +0009D634: retn + +### FUNC 0009D635 - 0009D643 (14 bytes) name=_ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_ +0009D635: push rbp +0009D636: mov rbp, rsp +0009D639: mov [rbp+var_8], rdi +0009D63D: mov rax, [rbp+var_8] +0009D641: pop rbp +0009D642: retn + +### FUNC 0009D643 - 0009D651 (14 bytes) name=_ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_ +0009D643: push rbp +0009D644: mov rbp, rsp +0009D647: mov [rbp+var_8], rdi +0009D64B: mov rax, [rbp+var_8] +0009D64F: pop rbp +0009D650: retn + +### FUNC 0009D652 - 0009D6BF (109 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_ +0009D652: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&)' +0009D653: mov rbp, rsp +0009D656: sub rsp, 10h +0009D65A: mov [rbp+var_8], rdi +0009D65E: mov [rbp+var_10], rsi +0009D662: mov rax, [rbp+var_10] +0009D666: mov rdi, rax +0009D669: call __ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_; std::move(nlohmann::detail::value_t &&&) +0009D66E: movzx edx, byte ptr [rax] +0009D671: mov rax, [rbp+var_8] +0009D675: mov [rax], dl +0009D677: mov rax, [rbp+var_10] +0009D67B: add rax, 8 +0009D67F: mov rdi, rax +0009D682: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_; std::move>>::json_value &>(nlohmann::basic_json>>::json_value &&&) +0009D687: mov rdx, [rbp+var_8] +0009D68B: mov rax, [rax] +0009D68E: mov [rdx+8], rax +0009D692: mov rax, [rbp+var_10] +0009D696: mov rdi, rax +0009D699: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009D69E: mov rax, [rbp+var_10] +0009D6A2: mov byte ptr [rax], 0 +0009D6A5: mov rax, [rbp+var_10] +0009D6A9: mov qword ptr [rax+8], 0 +0009D6B1: mov rax, [rbp+var_8] +0009D6B5: mov rdi, rax +0009D6B8: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009D6BD: leave +0009D6BE: retn + +### FUNC 0009D6C0 - 0009D6DA (26 bytes) name=_ZNSaISt4pairIKSsiEEC2Ev +0009D6C0: push rbp; Alternative name is 'std::allocator>::allocator(void)' +0009D6C1: mov rbp, rsp +0009D6C4: sub rsp, 10h +0009D6C8: mov [rbp+var_8], rdi +0009D6CC: mov rax, [rbp+var_8] +0009D6D0: mov rdi, rax +0009D6D3: call __ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEEC2Ev; __gnu_cxx::new_allocator>::new_allocator(void) +0009D6D8: leave +0009D6D9: retn + +### FUNC 0009D6DA - 0009D6F4 (26 bytes) name=_ZNSaISt4pairIKSsiEED2Ev +0009D6DA: push rbp; Alternative name is 'std::allocator>::~allocator()' +0009D6DB: mov rbp, rsp +0009D6DE: sub rsp, 10h +0009D6E2: mov [rbp+var_8], rdi +0009D6E6: mov rax, [rbp+var_8] +0009D6EA: mov rdi, rax +0009D6ED: call __ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEED2Ev; __gnu_cxx::new_allocator>::~new_allocator() +0009D6F2: leave +0009D6F3: retn + +### FUNC 0009D6F4 - 0009D6FE (10 bytes) name=_ZNSt17__allow_copy_consILb1EEC2Ev +0009D6F4: push rbp; Alternative name is 'std::__allow_copy_cons::__allow_copy_cons(void)' +0009D6F5: mov rbp, rsp +0009D6F8: mov [rbp+var_8], rdi +0009D6FC: pop rbp +0009D6FD: retn + +### FUNC 0009D6FE - 0009D747 (73 bytes) name=_ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEC2EmRKS1_RKS3_RKS7_ +0009D6FE: push rbp; Alternative name is 'std::unordered_map, std::equal_to, std::allocator>>::unordered_map(unsigned long, std::hash const&, std::equal_to const&, std::allocator> const&)' +0009D6FF: mov rbp, rsp +0009D702: sub rsp, 30h +0009D706: mov [rbp+var_8], rdi +0009D70A: mov [rbp+var_10], rsi +0009D70E: mov [rbp+var_18], rdx +0009D712: mov [rbp+var_20], rcx +0009D716: mov [rbp+var_28], r8 +0009D71A: mov rax, [rbp+var_8] +0009D71E: mov rdi, rax +0009D721: call __ZNSt17__allow_copy_consILb1EEC2Ev; std::__allow_copy_cons::__allow_copy_cons(void) +0009D726: mov rax, [rbp+var_8] +0009D72A: mov rdi, [rbp+var_28] +0009D72E: mov rcx, [rbp+var_20] +0009D732: mov rdx, [rbp+var_18] +0009D736: mov rsi, [rbp+var_10] +0009D73A: mov r8, rdi +0009D73D: mov rdi, rax +0009D740: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKS7_RKS3_; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_Hashtable(ulong,std::hash const&,std::equal_to const&,std::allocator> const&) +0009D745: leave +0009D746: retn + +### FUNC 0009D748 - 0009D762 (26 bytes) name=_ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEED2Ev +0009D748: push rbp; Alternative name is 'std::__detail::_Before_begin, true>>>::~_Before_begin()' +0009D749: mov rbp, rsp +0009D74C: sub rsp, 10h +0009D750: mov [rbp+var_8], rdi +0009D754: mov rax, [rbp+var_8] +0009D758: mov rdi, rax +0009D75B: call __ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev; std::allocator,true>>::~allocator() +0009D760: leave +0009D761: retn + +### FUNC 0009D762 - 0009D7AA (72 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEED2Ev +0009D762: push rbp; Alternative name is 'std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::~_Hashtable()' +0009D763: mov rbp, rsp +0009D766: sub rsp, 10h +0009D76A: mov [rbp+var_8], rdi +0009D76E: mov rax, [rbp+var_8] +0009D772: mov rdi, rax +0009D775: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::clear(void) +0009D77A: mov rax, [rbp+var_8] +0009D77E: mov rdx, [rax+8] +0009D782: mov rax, [rbp+var_8] +0009D786: mov rcx, [rax] +0009D789: mov rax, [rbp+var_8] +0009D78D: mov rsi, rcx +0009D790: mov rdi, rax +0009D793: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_deallocate_buckets(std::__detail::_Hash_node_base **,ulong) +0009D798: mov rax, [rbp+var_8] +0009D79C: add rax, 10h +0009D7A0: mov rdi, rax +0009D7A3: call __ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEED2Ev; std::__detail::_Before_begin,true>>>::~_Before_begin() +0009D7A8: leave +0009D7A9: retn + +### FUNC 0009D7AA - 0009D7C4 (26 bytes) name=_ZNSt6vectorI19struct_TerminalListSaIS0_EEC2Ev +0009D7AA: push rbp; Alternative name is 'std::vector>::vector(void)' +0009D7AB: mov rbp, rsp +0009D7AE: sub rsp, 10h +0009D7B2: mov [rbp+var_8], rdi +0009D7B6: mov rax, [rbp+var_8] +0009D7BA: mov rdi, rax +0009D7BD: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EEC2Ev; std::_Vector_base>::_Vector_base(void) +0009D7C2: leave +0009D7C3: retn + +### FUNC 0009D7C4 - 0009D807 (67 bytes) name=_ZNSt6vectorI19struct_TerminalListSaIS0_EED2Ev +0009D7C4: push rbp; Alternative name is 'std::vector>::~vector()' +0009D7C5: mov rbp, rsp +0009D7C8: sub rsp, 10h +0009D7CC: mov [rbp+var_8], rdi +0009D7D0: mov rax, [rbp+var_8] +0009D7D4: mov rdi, rax +0009D7D7: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009D7DC: mov rdx, rax +0009D7DF: mov rax, [rbp+var_8] +0009D7E3: mov rcx, [rax+8] +0009D7E7: mov rax, [rbp+var_8] +0009D7EB: mov rax, [rax] +0009D7EE: mov rsi, rcx +0009D7F1: mov rdi, rax +0009D7F4: call __ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E; std::_Destroy(struct_TerminalList *,struct_TerminalList *,std::allocator &) +0009D7F9: mov rax, [rbp+var_8] +0009D7FD: mov rdi, rax +0009D800: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EED2Ev; std::_Vector_base>::~_Vector_base() +0009D805: leave +0009D806: retn + +### FUNC 0009D808 - 0009D89A (146 bytes) name=_ZNSt6vectorI19struct_TerminalListSaIS0_EE6resizeEm +0009D808: push rbp +0009D809: mov rbp, rsp +0009D80C: sub rsp, 10h +0009D810: mov [rbp+var_8], rdi +0009D814: mov [rbp+var_10], rsi +0009D818: mov rax, [rbp+var_8] +0009D81C: mov rdi, rax +0009D81F: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +0009D824: cmp rax, [rbp+var_10] +0009D828: setb al +0009D82B: test al, al +0009D82D: jz short loc_9D853 +0009D82F: mov rax, [rbp+var_8] +0009D833: mov rdi, rax +0009D836: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +0009D83B: mov rdx, [rbp+var_10] +0009D83F: sub rdx, rax +0009D842: mov rax, [rbp+var_8] +0009D846: mov rsi, rdx +0009D849: mov rdi, rax +0009D84C: call __ZNSt6vectorI19struct_TerminalListSaIS0_EE17_M_default_appendEm; std::vector>::_M_default_append(ulong) +0009D851: jmp short locret_9D898 +0009D853: mov rax, [rbp+var_8] +0009D857: mov rdi, rax +0009D85A: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +0009D85F: cmp rax, [rbp+var_10] +0009D863: setnbe al +0009D866: test al, al +0009D868: jz short locret_9D898 +0009D86A: mov rax, [rbp+var_8] +0009D86E: mov rdx, [rax] +0009D871: mov rax, [rbp+var_10] +0009D875: shl rax, 2 +0009D879: mov rcx, rax +0009D87C: shl rcx, 4 +0009D880: sub rcx, rax +0009D883: mov rax, rcx +0009D886: add rdx, rax +0009D889: mov rax, [rbp+var_8] +0009D88D: mov rsi, rdx +0009D890: mov rdi, rax +0009D893: call __ZNSt6vectorI19struct_TerminalListSaIS0_EE15_M_erase_at_endEPS0_; std::vector>::_M_erase_at_end(struct_TerminalList*) +0009D898: leave +0009D899: retn + +### FUNC 0009D89A - 0009D8C7 (45 bytes) name=_ZNSt6vectorI19struct_TerminalListSaIS0_EEixEm +0009D89A: push rbp +0009D89B: mov rbp, rsp +0009D89E: mov [rbp+var_8], rdi +0009D8A2: mov [rbp+var_10], rsi +0009D8A6: mov rax, [rbp+var_8] +0009D8AA: mov rdx, [rax] +0009D8AD: mov rax, [rbp+var_10] +0009D8B1: shl rax, 2 +0009D8B5: mov rcx, rax +0009D8B8: shl rcx, 4 +0009D8BC: sub rcx, rax +0009D8BF: mov rax, rcx +0009D8C2: add rax, rdx +0009D8C5: pop rbp +0009D8C6: retn + +### FUNC 0009D8C8 - 0009D8FF (55 bytes) name=_ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv +0009D8C8: push rbp +0009D8C9: mov rbp, rsp +0009D8CC: mov [rbp+var_8], rdi +0009D8D0: mov rax, [rbp+var_8] +0009D8D4: mov rax, [rax+8] +0009D8D8: mov rdx, rax +0009D8DB: mov rax, [rbp+var_8] +0009D8DF: mov rax, [rax] +0009D8E2: sub rdx, rax +0009D8E5: mov rax, rdx +0009D8E8: sar rax, 2 +0009D8EC: mov rdx, rax +0009D8EF: mov rax, 0EEEEEEEEEEEEEEEFh +0009D8F9: imul rax, rdx +0009D8FD: pop rbp +0009D8FE: retn + +### FUNC 0009D900 - 0009D943 (67 bytes) name=_ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev +0009D900: push rbp; Alternative name is 'std::vector>::~vector()' +0009D901: mov rbp, rsp +0009D904: sub rsp, 10h +0009D908: mov [rbp+var_8], rdi +0009D90C: mov rax, [rbp+var_8] +0009D910: mov rdi, rax +0009D913: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009D918: mov rdx, rax +0009D91B: mov rax, [rbp+var_8] +0009D91F: mov rcx, [rax+8] +0009D923: mov rax, [rbp+var_8] +0009D927: mov rax, [rax] +0009D92A: mov rsi, rcx +0009D92D: mov rdi, rax +0009D930: call __ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E; std::_Destroy(serial::PortInfo *,serial::PortInfo *,std::allocator &) +0009D935: mov rax, [rbp+var_8] +0009D939: mov rdi, rax +0009D93C: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EED2Ev; std::_Vector_base>::~_Vector_base() +0009D941: leave +0009D942: retn + +### FUNC 0009D944 - 0009D969 (37 bytes) name=_ZNSt6vectorIN6serial8PortInfoESaIS1_EE5beginEv +0009D944: push rbp +0009D945: mov rbp, rsp +0009D948: sub rsp, 20h +0009D94C: mov [rbp+var_18], rdi +0009D950: mov rdx, [rbp+var_18] +0009D954: lea rax, [rbp+var_10] +0009D958: mov rsi, rdx +0009D95B: mov rdi, rax +0009D95E: call __ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEC2ERKS3_; __gnu_cxx::__normal_iterator>>::__normal_iterator(serial::PortInfo * const&) +0009D963: mov rax, [rbp+var_10] +0009D967: leave +0009D968: retn + +### FUNC 0009D96A - 0009D993 (41 bytes) name=_ZNSt6vectorIN6serial8PortInfoESaIS1_EE3endEv +0009D96A: push rbp +0009D96B: mov rbp, rsp +0009D96E: sub rsp, 20h +0009D972: mov [rbp+var_18], rdi +0009D976: mov rax, [rbp+var_18] +0009D97A: lea rdx, [rax+8] +0009D97E: lea rax, [rbp+var_10] +0009D982: mov rsi, rdx +0009D985: mov rdi, rax +0009D988: call __ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEC2ERKS3_; __gnu_cxx::__normal_iterator>>::__normal_iterator(serial::PortInfo * const&) +0009D98D: mov rax, [rbp+var_10] +0009D991: leave +0009D992: retn + +### FUNC 0009D993 - 0009D9CF (60 bytes) name=_ZN9__gnu_cxxneIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +0009D993: push rbp +0009D994: mov rbp, rsp +0009D997: push rbx +0009D998: sub rsp, 18h +0009D99C: mov [rbp+var_18], rdi +0009D9A0: mov [rbp+var_20], rsi +0009D9A4: mov rax, [rbp+var_18] +0009D9A8: mov rdi, rax +0009D9AB: call __ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +0009D9B0: mov rbx, [rax] +0009D9B3: mov rax, [rbp+var_20] +0009D9B7: mov rdi, rax +0009D9BA: call __ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +0009D9BF: mov rax, [rax] +0009D9C2: cmp rbx, rax +0009D9C5: setnz al +0009D9C8: add rsp, 18h +0009D9CC: pop rbx +0009D9CD: pop rbp +0009D9CE: retn + +### FUNC 0009D9D0 - 0009D9F0 (32 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEppEv +0009D9D0: push rbp +0009D9D1: mov rbp, rsp +0009D9D4: mov [rbp+var_8], rdi +0009D9D8: mov rax, [rbp+var_8] +0009D9DC: mov rax, [rax] +0009D9DF: lea rdx, [rax+18h] +0009D9E3: mov rax, [rbp+var_8] +0009D9E7: mov [rax], rdx +0009D9EA: mov rax, [rbp+var_8] +0009D9EE: pop rbp +0009D9EF: retn + +### FUNC 0009D9F0 - 0009DA01 (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEdeEv +0009D9F0: push rbp +0009D9F1: mov rbp, rsp +0009D9F4: mov [rbp+var_8], rdi +0009D9F8: mov rax, [rbp+var_8] +0009D9FC: mov rax, [rax] +0009D9FF: pop rbp +0009DA00: retn + +### FUNC 0009DA01 - 0009DA29 (40 bytes) name=_ZSt3maxIiERKT_S2_S2_ +0009DA01: push rbp +0009DA02: mov rbp, rsp +0009DA05: mov [rbp+var_8], rdi +0009DA09: mov [rbp+var_10], rsi +0009DA0D: mov rax, [rbp+var_8] +0009DA11: mov edx, [rax] +0009DA13: mov rax, [rbp+var_10] +0009DA17: mov eax, [rax] +0009DA19: cmp edx, eax +0009DA1B: jge short loc_9DA23 +0009DA1D: mov rax, [rbp+var_10] +0009DA21: jmp short loc_9DA27 +0009DA23: mov rax, [rbp+var_8] +0009DA27: pop rbp +0009DA28: retn + +### FUNC 0009DA29 - 0009DA51 (40 bytes) name=_ZSt3minIiERKT_S2_S2_ +0009DA29: push rbp +0009DA2A: mov rbp, rsp +0009DA2D: mov [rbp+var_8], rdi +0009DA31: mov [rbp+var_10], rsi +0009DA35: mov rax, [rbp+var_10] +0009DA39: mov edx, [rax] +0009DA3B: mov rax, [rbp+var_8] +0009DA3F: mov eax, [rax] +0009DA41: cmp edx, eax +0009DA43: jge short loc_9DA4B +0009DA45: mov rax, [rbp+var_10] +0009DA49: jmp short loc_9DA4F +0009DA4B: mov rax, [rbp+var_8] +0009DA4F: pop rbp +0009DA50: retn + +### FUNC 0009DA52 - 0009DB3E (236 bytes) name=_ZNSt6vectorIhSaIhEEC2ERKS1_ +0009DA52: push rbp; Alternative name is 'std::vector>::vector(std::vector> const&)' +0009DA53: mov rbp, rsp +0009DA56: push r13 +0009DA58: push r12 +0009DA5A: push rbx +0009DA5B: sub rsp, 28h +0009DA5F: mov [rbp+var_38], rdi +0009DA63: mov [rbp+var_40], rsi +0009DA67: mov rax, [rbp+var_40] +0009DA6B: mov rdi, rax +0009DA6E: call __ZNKSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009DA73: mov rdx, rax +0009DA76: lea rax, [rbp+var_21] +0009DA7A: mov rsi, rdx +0009DA7D: mov rdi, rax +0009DA80: call __ZN9__gnu_cxx14__alloc_traitsISaIhEE17_S_select_on_copyERKS1_; __gnu_cxx::__alloc_traits>::_S_select_on_copy(std::allocator const&) +0009DA85: mov rax, [rbp+var_40] +0009DA89: mov rdi, rax +0009DA8C: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +0009DA91: mov rcx, rax +0009DA94: mov rax, [rbp+var_38] +0009DA98: lea rdx, [rbp+var_21] +0009DA9C: mov rsi, rcx +0009DA9F: mov rdi, rax +0009DAA2: call __ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_; std::_Vector_base>::_Vector_base(ulong,std::allocator const&) +0009DAA7: lea rax, [rbp+var_21] +0009DAAB: mov rdi, rax +0009DAAE: call __ZNSaIhED2Ev_0; std::allocator::~allocator() +0009DAB3: mov rax, [rbp+var_38] +0009DAB7: mov rdi, rax +0009DABA: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009DABF: mov r13, rax +0009DAC2: mov rax, [rbp+var_38] +0009DAC6: mov r12, [rax] +0009DAC9: mov rax, [rbp+var_40] +0009DACD: mov rdi, rax +0009DAD0: call __ZNKSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +0009DAD5: mov rbx, rax +0009DAD8: mov rax, [rbp+var_40] +0009DADC: mov rdi, rax +0009DADF: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +0009DAE4: mov rcx, r13 +0009DAE7: mov rdx, r12 +0009DAEA: mov rsi, rbx +0009DAED: mov rdi, rax +0009DAF0: call __ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E; std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator>>,uchar *,uchar>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *,std::allocator &) +0009DAF5: mov rdx, [rbp+var_38] +0009DAF9: mov [rdx+8], rax +0009DAFD: jmp short loc_9DB33 +0009DAFF: mov rbx, rax +0009DB02: lea rax, [rbp+var_21] +0009DB06: mov rdi, rax +0009DB09: call __ZNSaIhED2Ev_0; std::allocator::~allocator() +0009DB0E: mov rax, rbx +0009DB11: mov rdi, rax; struct _Unwind_Exception * +0009DB14: call __Unwind_Resume +0009DB19: mov rbx, rax +0009DB1C: mov rax, [rbp+var_38] +0009DB20: mov rdi, rax +0009DB23: call __ZNSt12_Vector_baseIhSaIhEED2Ev; std::_Vector_base>::~_Vector_base() +0009DB28: mov rax, rbx +0009DB2B: mov rdi, rax; struct _Unwind_Exception * +0009DB2E: call __Unwind_Resume +0009DB33: add rsp, 28h +0009DB37: pop rbx +0009DB38: pop r12 +0009DB3A: pop r13 +0009DB3C: pop rbp +0009DB3D: retn + +### FUNC 0009DB3E - 0009DB4C (14 bytes) name=_ZSt7forwardIRA320659_hEOT_RNSt16remove_referenceIS2_E4typeE +0009DB3E: push rbp +0009DB3F: mov rbp, rsp +0009DB42: mov [rbp+var_8], rdi +0009DB46: mov rax, [rbp+var_8] +0009DB4A: pop rbp +0009DB4B: retn + +### FUNC 0009DB4C - 0009DB7A (46 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +0009DB4C: push rbp; Alternative name is 'nlohmann::detail::lexer>>, nlohmann::detail::iterator_input_adapter>::~lexer()' +0009DB4D: mov rbp, rsp +0009DB50: sub rsp, 10h +0009DB54: mov [rbp+var_8], rdi +0009DB58: mov rax, [rbp+var_8] +0009DB5C: add rax, 58h ; 'X' +0009DB60: mov rdi, rax; this +0009DB63: call __ZNSsD1Ev; std::string::~string() +0009DB68: mov rax, [rbp+var_8] +0009DB6C: add rax, 40h ; '@' +0009DB70: mov rdi, rax +0009DB73: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +0009DB78: leave +0009DB79: retn + +### FUNC 0009DB7A - 0009DBA4 (42 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev +0009DB7A: push rbp; Alternative name is 'nlohmann::detail::parser>>, nlohmann::detail::iterator_input_adapter>::~parser()' +0009DB7B: mov rbp, rsp +0009DB7E: sub rsp, 10h +0009DB82: mov [rbp+var_8], rdi +0009DB86: mov rax, [rbp+var_8] +0009DB8A: add rax, 28h ; '(' +0009DB8E: mov rdi, rax +0009DB91: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::~lexer() +0009DB96: mov rax, [rbp+var_8] +0009DB9A: mov rdi, rax +0009DB9D: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009DBA2: leave +0009DBA3: retn + +### FUNC 0009DBA4 - 0009DCE2 (318 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5parseIRA320659_hEES6_OT_St8functionIFbiNS_6detail13parse_event_tERS6_EEbb +0009DBA4: push rbp +0009DBA5: mov rbp, rsp +0009DBA8: push r13 +0009DBAA: push r12 +0009DBAC: push rbx +0009DBAD: sub rsp, 108h +0009DBB4: mov [rbp+var_108], rdi +0009DBBB: mov [rbp+var_110], rsi +0009DBC2: mov [rbp+var_118], rdx +0009DBC9: mov eax, ecx +0009DBCB: mov edx, r8d +0009DBCE: mov [rbp+var_11C], al +0009DBD4: mov [rbp+var_120], dl +0009DBDA: mov rax, [rbp+var_108] +0009DBE1: mov esi, 0 +0009DBE6: mov rdi, rax +0009DBE9: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +0009DBEE: movzx r13d, [rbp+var_120] +0009DBF6: movzx r12d, [rbp+var_11C] +0009DBFE: mov rdx, [rbp+var_118] +0009DC05: lea rax, [rbp+var_40] +0009DC09: mov rsi, rdx +0009DC0C: mov rdi, rax +0009DC0F: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_; std::function>> &)>::function(std::function>> &)> const&) +0009DC14: mov rax, [rbp+var_110] +0009DC1B: mov rdi, rax +0009DC1E: call __ZSt7forwardIRA320659_hEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +0009DC23: mov rdi, rax +0009DC26: call __ZN8nlohmann6detail13input_adapterIhLm320659EEEDTcl13input_adapterfp_plfp_T0_EERAT0__T_ +0009DC2B: lea rdi, [rbp+var_100] +0009DC32: lea r10, [rbp+var_40] +0009DC36: mov rcx, rax +0009DC39: mov rbx, rdx +0009DC3C: mov rsi, rcx +0009DC3F: mov rax, rdx +0009DC42: mov r9d, r13d +0009DC45: mov r8d, r12d +0009DC48: mov rcx, r10 +0009DC4B: mov rdx, rax +0009DC4E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6parserINS_6detail22iterator_input_adapterIPhEEEENS8_6parserIS6_T_EESD_St8functionIFbiNS8_13parse_event_tERS6_EEbb; nlohmann::basic_json>>::parser>(nlohmann::detail::iterator_input_adapter,std::function>>&)>,bool,bool) +0009DC53: mov rdx, [rbp+var_108] +0009DC5A: lea rax, [rbp+var_100] +0009DC61: mov esi, 1 +0009DC66: mov rdi, rax +0009DC69: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5parseEbRS8_; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::parse(bool,nlohmann::basic_json>>&) +0009DC6E: lea rax, [rbp+var_100] +0009DC75: mov rdi, rax +0009DC78: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::~parser() +0009DC7D: lea rax, [rbp+var_40] +0009DC81: mov rdi, rax +0009DC84: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009DC89: jmp short loc_9DCCD +0009DC8B: mov rbx, rax +0009DC8E: lea rax, [rbp+var_100] +0009DC95: mov rdi, rax +0009DC98: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::~parser() +0009DC9D: jmp short loc_9DCA2 +0009DC9F: mov rbx, rax +0009DCA2: lea rax, [rbp+var_40] +0009DCA6: mov rdi, rax +0009DCA9: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009DCAE: jmp short loc_9DCB3 +0009DCB0: mov rbx, rax +0009DCB3: mov rax, [rbp+var_108] +0009DCBA: mov rdi, rax +0009DCBD: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009DCC2: mov rax, rbx +0009DCC5: mov rdi, rax; struct _Unwind_Exception * +0009DCC8: call __Unwind_Resume +0009DCCD: mov rax, [rbp+var_108] +0009DCD4: add rsp, 108h +0009DCDB: pop rbx +0009DCDC: pop r12 +0009DCDE: pop r13 +0009DCE0: pop rbp +0009DCE1: retn + +### FUNC 0009DCE2 - 0009DEC9 (487 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEixIKcEERS6_PT_ +0009DCE2: push rbp +0009DCE3: mov rbp, rsp +0009DCE6: push r12 +0009DCE8: push rbx +0009DCE9: sub rsp, 50h +0009DCED: mov [rbp+var_58], rdi +0009DCF1: mov [rbp+var_60], rsi +0009DCF5: mov rax, [rbp+var_58] +0009DCF9: mov rdi, rax +0009DCFC: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7is_nullEv; nlohmann::basic_json>>::is_null(void) +0009DD01: test al, al +0009DD03: jz short loc_9DD35 +0009DD05: mov rax, [rbp+var_58] +0009DD09: mov byte ptr [rax], 1 +0009DD0C: lea rax, [rbp+var_50] +0009DD10: mov esi, 1 +0009DD15: mov rdi, rax +0009DD18: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ENS_6detail7value_tE; nlohmann::basic_json>>::json_value::json_value(nlohmann::detail::value_t) +0009DD1D: mov rax, [rbp+var_58] +0009DD21: mov rdx, [rbp+var_50] +0009DD25: mov [rax+8], rdx +0009DD29: mov rax, [rbp+var_58] +0009DD2D: mov rdi, rax +0009DD30: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009DD35: mov rax, [rbp+var_58] +0009DD39: mov rdi, rax +0009DD3C: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +0009DD41: movzx eax, al +0009DD44: test rax, rax +0009DD47: setnz al +0009DD4A: test al, al +0009DD4C: jz short loc_9DDAB +0009DD4E: lea rax, [rbp+var_31] +0009DD52: mov rdi, rax +0009DD55: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009DD5A: lea rdx, [rbp+var_31] +0009DD5E: mov rcx, [rbp+var_60] +0009DD62: lea rax, [rbp+var_40] +0009DD66: mov rsi, rcx +0009DD69: mov rdi, rax +0009DD6C: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009DD71: mov rax, [rbp+var_58] +0009DD75: mov rax, [rax+8] +0009DD79: lea rdx, [rbp+var_40] +0009DD7D: mov rsi, rdx +0009DD80: mov rdi, rax +0009DD83: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixEOSs; std::map>>,std::less,std::allocator>>>>>::operator[](std::string &&) +0009DD88: mov rbx, rax +0009DD8B: lea rax, [rbp+var_40] +0009DD8F: mov rdi, rax; this +0009DD92: call __ZNSsD1Ev; std::string::~string() +0009DD97: lea rax, [rbp+var_31] +0009DD9B: mov rdi, rax +0009DD9E: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009DDA3: mov rax, rbx +0009DDA6: jmp loc_9DEC0 +0009DDAB: mov edi, 20h ; ' '; thrown_size +0009DDB0: call ___cxa_allocate_exception +0009DDB5: mov rbx, rax +0009DDB8: lea rax, [rbp+var_11] +0009DDBC: mov rdi, rax +0009DDBF: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009DDC4: mov rax, [rbp+var_58] +0009DDC8: mov rdi, rax +0009DDCB: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv; nlohmann::basic_json>>::type_name(void) +0009DDD0: mov rcx, rax +0009DDD3: lea rdx, [rbp+var_11] +0009DDD7: lea rax, [rbp+var_20] +0009DDDB: mov rsi, rcx +0009DDDE: mov rdi, rax +0009DDE1: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009DDE6: lea rax, [rbp+var_30] +0009DDEA: lea rdx, [rbp+var_20] +0009DDEE: lea rsi, aCannotUseOpera; "cannot use operator[] with a string arg"... +0009DDF5: mov rdi, rax +0009DDF8: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +0009DDFD: lea rax, [rbp+var_30] +0009DE01: mov rdx, rax; std::string * +0009DE04: mov esi, 131h; int +0009DE09: mov rdi, rbx; this +0009DE0C: call __ZN8nlohmann6detail10type_error6createEiRKSs; nlohmann::detail::type_error::create(int,std::string const&) +0009DE11: lea rax, [rbp+var_30] +0009DE15: mov rdi, rax; this +0009DE18: call __ZNSsD1Ev; std::string::~string() +0009DE1D: lea rax, [rbp+var_20] +0009DE21: mov rdi, rax; this +0009DE24: call __ZNSsD1Ev; std::string::~string() +0009DE29: lea rax, [rbp+var_11] +0009DE2D: mov rdi, rax +0009DE30: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009DE35: mov rax, cs:_ZN8nlohmann6detail10type_errorD2Ev_ptr +0009DE3C: mov rdx, rax; void (__fastcall *)(void *) +0009DE3F: mov rax, cs:lptinfo +0009DE46: mov rsi, rax; lptinfo +0009DE49: mov rdi, rbx; void * +0009DE4C: call ___cxa_throw +0009DE51: mov rbx, rax +0009DE54: lea rax, [rbp+var_40] +0009DE58: mov rdi, rax; this +0009DE5B: call __ZNSsD1Ev; std::string::~string() +0009DE60: jmp short loc_9DE65 +0009DE62: mov rbx, rax +0009DE65: lea rax, [rbp+var_31] +0009DE69: mov rdi, rax +0009DE6C: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009DE71: mov rax, rbx +0009DE74: mov rdi, rax; struct _Unwind_Exception * +0009DE77: call __Unwind_Resume +0009DE7C: mov r12, rax +0009DE7F: lea rax, [rbp+var_30] +0009DE83: mov rdi, rax; this +0009DE86: call __ZNSsD1Ev; std::string::~string() +0009DE8B: jmp short loc_9DE90 +0009DE8D: mov r12, rax +0009DE90: lea rax, [rbp+var_20] +0009DE94: mov rdi, rax; this +0009DE97: call __ZNSsD1Ev; std::string::~string() +0009DE9C: jmp short loc_9DEA1 +0009DE9E: mov r12, rax +0009DEA1: lea rax, [rbp+var_11] +0009DEA5: mov rdi, rax +0009DEA8: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009DEAD: mov rdi, rbx; void * +0009DEB0: call ___cxa_free_exception +0009DEB5: mov rax, r12 +0009DEB8: mov rdi, rax; struct _Unwind_Exception * +0009DEBB: call __Unwind_Resume +0009DEC0: add rsp, 50h +0009DEC4: pop rbx +0009DEC5: pop r12 +0009DEC7: pop rbp +0009DEC8: retn + +### FUNC 0009DECA - 0009E0D1 (519 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_ +0009DECA: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&)' +0009DECB: mov rbp, rsp +0009DECE: sub rsp, 0A0h +0009DED5: mov [rbp+var_88], rdi +0009DEDC: mov [rbp+var_90], rsi +0009DEE3: mov rax, [rbp+var_90] +0009DEEA: movzx edx, byte ptr [rax] +0009DEED: mov rax, [rbp+var_88] +0009DEF4: mov [rax], dl +0009DEF6: mov rax, [rbp+var_88] +0009DEFD: mov qword ptr [rax+8], 0 +0009DF05: mov rax, [rbp+var_90] +0009DF0C: mov rdi, rax +0009DF0F: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009DF14: mov rax, [rbp+var_88] +0009DF1B: movzx eax, byte ptr [rax] +0009DF1E: cmp al, 8; switch 9 cases +0009DF20: ja def_9DF48; jumptable 000000000009DF48 default case, case 0 +0009DF26: movzx eax, al +0009DF29: lea rdx, ds:0[rax*4] +0009DF31: lea rax, jpt_9DF48 +0009DF38: mov eax, ds:(jpt_9DF48 - 0D3A38h)[rdx+rax] +0009DF3B: movsxd rdx, eax +0009DF3E: lea rax, jpt_9DF48 +0009DF45: add rax, rdx +0009DF48: jmp rax; switch jump +0009DF4A: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 1 +0009DF51: mov rdx, [rax+8] +0009DF55: lea rax, [rbp+var_80] +0009DF59: mov rsi, rdx +0009DF5C: mov rdi, rax +0009DF5F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEE; nlohmann::basic_json>>::json_value::json_value(std::map const&>>,std::less,std::allocator>>>>>) +0009DF64: mov rax, [rbp+var_88] +0009DF6B: mov rdx, [rbp+var_80] +0009DF6F: mov [rax+8], rdx +0009DF73: jmp loc_9E0C0 +0009DF78: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 2 +0009DF7F: mov rdx, [rax+8] +0009DF83: lea rax, [rbp+var_70] +0009DF87: mov rsi, rdx +0009DF8A: mov rdi, rax +0009DF8D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS2_IS6_SaIS6_EE; nlohmann::basic_json>>::json_value::json_value(std::vector const&>>,std::allocator>>>>) +0009DF92: mov rax, [rbp+var_88] +0009DF99: mov rdx, [rbp+var_70] +0009DF9D: mov [rax+8], rdx +0009DFA1: jmp loc_9E0C0 +0009DFA6: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 3 +0009DFAD: mov rdx, [rax+8] +0009DFB1: lea rax, [rbp+var_60] +0009DFB5: mov rsi, rdx +0009DFB8: mov rdi, rax +0009DFBB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKSs; nlohmann::basic_json>>::json_value::json_value(std::string const&) +0009DFC0: mov rax, [rbp+var_88] +0009DFC7: mov rdx, [rbp+var_60] +0009DFCB: mov [rax+8], rdx +0009DFCF: jmp loc_9E0C0 +0009DFD4: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 4 +0009DFDB: movzx eax, byte ptr [rax+8] +0009DFDF: movzx edx, al +0009DFE2: lea rax, [rbp+var_50] +0009DFE6: mov esi, edx +0009DFE8: mov rdi, rax +0009DFEB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Eb; nlohmann::basic_json>>::json_value::json_value(bool) +0009DFF0: mov rax, [rbp+var_88] +0009DFF7: mov rdx, [rbp+var_50] +0009DFFB: mov [rax+8], rdx +0009DFFF: jmp loc_9E0C0 +0009E004: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 5 +0009E00B: mov rdx, [rax+8] +0009E00F: lea rax, [rbp+var_40] +0009E013: mov rsi, rdx +0009E016: mov rdi, rax +0009E019: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2El; nlohmann::basic_json>>::json_value::json_value(long) +0009E01E: mov rax, [rbp+var_88] +0009E025: mov rdx, [rbp+var_40] +0009E029: mov [rax+8], rdx +0009E02D: jmp loc_9E0C0 +0009E032: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 6 +0009E039: mov rdx, [rax+8] +0009E03D: lea rax, [rbp+var_30] +0009E041: mov rsi, rdx +0009E044: mov rdi, rax +0009E047: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Em; nlohmann::basic_json>>::json_value::json_value(ulong) +0009E04C: mov rax, [rbp+var_88] +0009E053: mov rdx, [rbp+var_30] +0009E057: mov [rax+8], rdx +0009E05B: jmp short loc_9E0C0 +0009E05D: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 7 +0009E064: mov rax, [rax+8] +0009E068: lea rdx, [rbp+var_20] +0009E06C: mov [rbp+var_98], rax +0009E073: movsd xmm0, [rbp+var_98] +0009E07B: mov rdi, rdx +0009E07E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Ed; nlohmann::basic_json>>::json_value::json_value(double) +0009E083: mov rax, [rbp+var_88] +0009E08A: mov rdx, [rbp+var_20] +0009E08E: mov [rax+8], rdx +0009E092: jmp short loc_9E0C0 +0009E094: mov rax, [rbp+var_90]; jumptable 000000000009DF48 case 8 +0009E09B: mov rdx, [rax+8] +0009E09F: lea rax, [rbp+var_10] +0009E0A3: mov rsi, rdx +0009E0A6: mov rdi, rax +0009E0A9: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKNS_27byte_container_with_subtypeIS5_EE; nlohmann::basic_json>>::json_value::json_value(nlohmann::byte_container_with_subtype>> const&) +0009E0AE: mov rax, [rbp+var_88] +0009E0B5: mov rdx, [rbp+var_10] +0009E0B9: mov [rax+8], rdx +0009E0BD: jmp short loc_9E0C0 +0009E0BF: nop; jumptable 000000000009DF48 default case, case 0 +0009E0C0: mov rax, [rbp+var_88] +0009E0C7: mov rdi, rax +0009E0CA: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009E0CF: leave +0009E0D0: retn + +### FUNC 0009E0D2 - 0009E0E8 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv +0009E0D2: push rbp +0009E0D3: mov rbp, rsp +0009E0D6: mov [rbp+var_8], rdi +0009E0DA: mov rax, [rbp+var_8] +0009E0DE: movzx eax, byte ptr [rax] +0009E0E1: cmp al, 2 +0009E0E3: setz al +0009E0E6: pop rbp +0009E0E7: retn + +### FUNC 0009E0E8 - 0009E10D (37 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5itemsEv +0009E0E8: push rbp +0009E0E9: mov rbp, rsp +0009E0EC: sub rsp, 20h +0009E0F0: mov [rbp+var_18], rdi +0009E0F4: mov rdx, [rbp+var_18] +0009E0F8: lea rax, [rbp+var_10] +0009E0FC: mov rsi, rdx +0009E0FF: mov rdi, rax +0009E102: call __ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ERS9_; nlohmann::detail::iteration_proxy>>>>::iteration_proxy(nlohmann::basic_json>>&) +0009E107: mov rax, [rbp+var_10] +0009E10B: leave +0009E10C: retn + +### FUNC 0009E10E - 0009E14D (63 bytes) name=_ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5beginEv +0009E10E: push rbp +0009E10F: mov rbp, rsp +0009E112: sub rsp, 30h +0009E116: mov [rbp+var_28], rdi +0009E11A: mov [rbp+var_30], rsi +0009E11E: mov rax, [rbp+var_30] +0009E122: mov rdx, [rax] +0009E125: lea rax, [rbp+var_20] +0009E129: mov rsi, rdx +0009E12C: mov rdi, rax +0009E12F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5beginEv; nlohmann::basic_json>>::begin(void) +0009E134: lea rdx, [rbp+var_20] +0009E138: mov rax, [rbp+var_28] +0009E13C: mov rsi, rdx +0009E13F: mov rdi, rax +0009E142: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ESA_; nlohmann::detail::iteration_proxy_value>>>>::iteration_proxy_value(nlohmann::detail::iter_impl>>>) +0009E147: mov rax, [rbp+var_28] +0009E14B: leave +0009E14C: retn + +### FUNC 0009E14E - 0009E18A (60 bytes) name=_ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +0009E14E: push rbp; Alternative name is 'nlohmann::detail::iter_impl>>>::iter_impl(nlohmann::detail::iter_impl>>> const&)' +0009E14F: mov rbp, rsp +0009E152: mov [rbp+var_8], rdi +0009E156: mov [rbp+var_10], rsi +0009E15A: mov rax, [rbp+var_10] +0009E15E: mov rdx, [rax] +0009E161: mov rax, [rbp+var_8] +0009E165: mov [rax], rdx +0009E168: mov rax, [rbp+var_8] +0009E16C: mov rdx, [rbp+var_10] +0009E170: mov rcx, [rdx+8] +0009E174: mov [rax+8], rcx +0009E178: mov rcx, [rdx+10h] +0009E17C: mov [rax+10h], rcx +0009E180: mov rdx, [rdx+18h] +0009E184: mov [rax+18h], rdx +0009E188: pop rbp +0009E189: retn + +### FUNC 0009E18A - 0009E1C9 (63 bytes) name=_ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3endEv +0009E18A: push rbp +0009E18B: mov rbp, rsp +0009E18E: sub rsp, 30h +0009E192: mov [rbp+var_28], rdi +0009E196: mov [rbp+var_30], rsi +0009E19A: mov rax, [rbp+var_30] +0009E19E: mov rdx, [rax] +0009E1A1: lea rax, [rbp+var_20] +0009E1A5: mov rsi, rdx +0009E1A8: mov rdi, rax +0009E1AB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv; nlohmann::basic_json>>::end(void) +0009E1B0: lea rdx, [rbp+var_20] +0009E1B4: mov rax, [rbp+var_28] +0009E1B8: mov rsi, rdx +0009E1BB: mov rdi, rax +0009E1BE: call __ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ESA_; nlohmann::detail::iteration_proxy_value>>>>::iteration_proxy_value(nlohmann::detail::iter_impl>>>) +0009E1C3: mov rax, [rbp+var_28] +0009E1C7: leave +0009E1C8: retn + +### FUNC 0009E1CA - 0009E1EF (37 bytes) name=_ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEneERKSB_ +0009E1CA: push rbp +0009E1CB: mov rbp, rsp +0009E1CE: sub rsp, 10h +0009E1D2: mov [rbp+var_8], rdi +0009E1D6: mov [rbp+var_10], rsi +0009E1DA: mov rdx, [rbp+var_10] +0009E1DE: mov rax, [rbp+var_8] +0009E1E2: mov rsi, rdx +0009E1E5: mov rdi, rax +0009E1E8: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEneERKS9_; nlohmann::detail::iter_impl>>>::operator!=(nlohmann::detail::iter_impl>>> const&) +0009E1ED: leave +0009E1EE: retn + +### FUNC 0009E1F0 - 0009E222 (50 bytes) name=_ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEppEv +0009E1F0: push rbp +0009E1F1: mov rbp, rsp +0009E1F4: sub rsp, 10h +0009E1F8: mov [rbp+var_8], rdi +0009E1FC: mov rax, [rbp+var_8] +0009E200: mov rdi, rax +0009E203: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv; nlohmann::detail::iter_impl>>>::operator++(void) +0009E208: mov rax, [rbp+var_8] +0009E20C: mov rax, [rax+20h] +0009E210: lea rdx, [rax+1] +0009E214: mov rax, [rbp+var_8] +0009E218: mov [rax+20h], rdx +0009E21C: mov rax, [rbp+var_8] +0009E220: leave +0009E221: retn + +### FUNC 0009E222 - 0009E2D2 (176 bytes) name=_ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3keyEv +0009E222: push rbp +0009E223: mov rbp, rsp +0009E226: sub rsp, 10h +0009E22A: mov [rbp+var_8], rdi +0009E22E: mov rax, [rbp+var_8] +0009E232: mov rax, [rax] +0009E235: test rax, rax +0009E238: jnz short loc_9E259 +0009E23A: lea rcx, _ZZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE3keyEvE19__PRETTY_FUNCTION__; "const string_type& nlohmann::detail::it"... +0009E241: mov edx, 0F38h; line +0009E246: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +0009E24D: lea rdi, assertion; "anchor.m_object != nullptr" +0009E254: call ___assert_fail +0009E259: mov rax, [rbp+var_8] +0009E25D: mov rax, [rax] +0009E260: mov rdi, rax +0009E263: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4typeEv; nlohmann::basic_json>>::type(void) +0009E268: cmp al, 1 +0009E26A: jz short loc_9E2BA +0009E26C: cmp al, 2 +0009E26E: jnz short loc_9E2C8 +0009E270: mov rax, [rbp+var_8] +0009E274: mov rdx, [rax+20h] +0009E278: mov rax, [rbp+var_8] +0009E27C: mov rax, [rax+28h] +0009E280: cmp rdx, rax +0009E283: jz short loc_9E2B0 +0009E285: mov rax, [rbp+var_8] +0009E289: mov rax, [rax+20h] +0009E28D: mov rdx, [rbp+var_8] +0009E291: add rdx, 30h ; '0' +0009E295: mov rsi, rax +0009E298: mov rdi, rdx +0009E29B: call __ZN8nlohmann6detail13int_to_stringISsEEvRT_m; nlohmann::detail::int_to_string(std::string &,ulong) +0009E2A0: mov rax, [rbp+var_8] +0009E2A4: mov rdx, [rax+20h] +0009E2A8: mov rax, [rbp+var_8] +0009E2AC: mov [rax+28h], rdx +0009E2B0: mov rax, [rbp+var_8] +0009E2B4: add rax, 30h ; '0' +0009E2B8: jmp short locret_9E2D0 +0009E2BA: mov rax, [rbp+var_8] +0009E2BE: mov rdi, rax +0009E2C1: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyEv; nlohmann::detail::iter_impl>>>::key(void) +0009E2C6: jmp short locret_9E2D0 +0009E2C8: mov rax, [rbp+var_8] +0009E2CC: add rax, 38h ; '8' +0009E2D0: leave +0009E2D1: retn + +### FUNC 0009E2D2 - 0009E2EC (26 bytes) name=_ZNK8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEE5valueEv +0009E2D2: push rbp +0009E2D3: mov rbp, rsp +0009E2D6: sub rsp, 10h +0009E2DA: mov [rbp+var_8], rdi +0009E2DE: mov rax, [rbp+var_8] +0009E2E2: mov rdi, rax +0009E2E5: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE5valueEv; nlohmann::detail::iter_impl>>>::value(void) +0009E2EA: leave +0009E2EB: retn + +### FUNC 0009E2EC - 0009E302 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv +0009E2EC: push rbp +0009E2ED: mov rbp, rsp +0009E2F0: mov [rbp+var_8], rdi +0009E2F4: mov rax, [rbp+var_8] +0009E2F8: movzx eax, byte ptr [rax] +0009E2FB: cmp al, 1 +0009E2FD: setz al +0009E300: pop rbp +0009E301: retn + +### FUNC 0009E302 - 0009E359 (87 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getISsSsLi0EEET0_v +0009E302: push rbp +0009E303: mov rbp, rsp +0009E306: push rbx +0009E307: sub rsp, 18h +0009E30B: mov [rbp+var_18], rdi +0009E30F: mov [rbp+var_20], rsi +0009E313: mov rax, [rbp+var_18] +0009E317: mov rdi, rax; this +0009E31A: call __ZNSsC1Ev; std::string::string(void) +0009E31F: mov rdx, [rbp+var_18] +0009E323: mov rax, [rbp+var_20] +0009E327: mov rsi, rdx +0009E32A: mov rdi, rax +0009E32D: call __ZN8nlohmann14adl_serializerISsvE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEESsEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +0009E332: jmp short loc_9E34E +0009E334: mov rbx, rax +0009E337: mov rax, [rbp+var_18] +0009E33B: mov rdi, rax; this +0009E33E: call __ZNSsD1Ev; std::string::~string() +0009E343: mov rax, rbx +0009E346: mov rdi, rax; struct _Unwind_Exception * +0009E349: call __Unwind_Resume +0009E34E: mov rax, [rbp+var_18] +0009E352: add rsp, 18h +0009E356: pop rbx +0009E357: pop rbp +0009E358: retn + +### FUNC 0009E35A - 0009E37E (36 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3getIiiLi0EEET0_v +0009E35A: push rbp +0009E35B: mov rbp, rsp +0009E35E: sub rsp, 20h +0009E362: mov [rbp+var_18], rdi +0009E366: lea rdx, [rbp+var_4] +0009E36A: mov rax, [rbp+var_18] +0009E36E: mov rsi, rdx +0009E371: mov rdi, rax +0009E374: call __ZN8nlohmann14adl_serializerIivE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEEiEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +0009E379: mov eax, [rbp+var_4] +0009E37C: leave +0009E37D: retn + +### FUNC 0009E37E - 0009E3A3 (37 bytes) name=_ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEEixERS5_ +0009E37E: push rbp +0009E37F: mov rbp, rsp +0009E382: sub rsp, 10h +0009E386: mov [rbp+var_8], rdi +0009E38A: mov [rbp+var_10], rsi +0009E38E: mov rax, [rbp+var_8] +0009E392: mov rdx, [rbp+var_10] +0009E396: mov rsi, rdx +0009E399: mov rdi, rax +0009E39C: call __ZNSt8__detail9_Map_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS2_; std::__detail::_Map_base,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits,true>::operator[](std::string const&) +0009E3A1: leave +0009E3A2: retn + +### FUNC 0009E3A4 - 0009E3BE (26 bytes) name=_ZNSt6vectorIiSaIiEEC2Ev +0009E3A4: push rbp; Alternative name is 'std::vector>::vector(void)' +0009E3A5: mov rbp, rsp +0009E3A8: sub rsp, 10h +0009E3AC: mov [rbp+var_8], rdi +0009E3B0: mov rax, [rbp+var_8] +0009E3B4: mov rdi, rax +0009E3B7: call __ZNSt12_Vector_baseIiSaIiEEC2Ev; std::_Vector_base>::_Vector_base(void) +0009E3BC: leave +0009E3BD: retn + +### FUNC 0009E3BE - 0009E3CC (14 bytes) name=_ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE +0009E3BE: push rbp +0009E3BF: mov rbp, rsp +0009E3C2: mov [rbp+var_8], rdi +0009E3C6: mov rax, [rbp+var_8] +0009E3CA: pop rbp +0009E3CB: retn + +### FUNC 0009E3CC - 0009E437 (107 bytes) name=_ZNSt6vectorIiSaIiEE9push_backERKi +0009E3CC: push rbp +0009E3CD: mov rbp, rsp +0009E3D0: sub rsp, 10h +0009E3D4: mov [rbp+var_8], rdi +0009E3D8: mov [rbp+var_10], rsi +0009E3DC: mov rax, [rbp+var_8] +0009E3E0: mov rdx, [rax+8] +0009E3E4: mov rax, [rbp+var_8] +0009E3E8: mov rax, [rax+10h] +0009E3EC: cmp rdx, rax +0009E3EF: jz short loc_9E422 +0009E3F1: mov rax, [rbp+var_8] +0009E3F5: mov rcx, [rax+8] +0009E3F9: mov rax, [rbp+var_8] +0009E3FD: mov rdx, [rbp+var_10] +0009E401: mov rsi, rcx +0009E404: mov rdi, rax +0009E407: call __ZNSt16allocator_traitsISaIiEE9constructIiJRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +0009E40C: mov rax, [rbp+var_8] +0009E410: mov rax, [rax+8] +0009E414: lea rdx, [rax+4] +0009E418: mov rax, [rbp+var_8] +0009E41C: mov [rax+8], rdx +0009E420: jmp short locret_9E435 +0009E422: mov rdx, [rbp+var_10] +0009E426: mov rax, [rbp+var_8] +0009E42A: mov rsi, rdx +0009E42D: mov rdi, rax +0009E430: call __ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJRKiEEEvDpOT_; std::vector>::_M_emplace_back_aux(int const&) +0009E435: leave +0009E436: retn + +### FUNC 0009E438 - 0009E45D (37 bytes) name=_ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE4findERS5_ +0009E438: push rbp +0009E439: mov rbp, rsp +0009E43C: sub rsp, 10h +0009E440: mov [rbp+var_8], rdi +0009E444: mov [rbp+var_10], rsi +0009E448: mov rax, [rbp+var_8] +0009E44C: mov rdx, [rbp+var_10] +0009E450: mov rsi, rdx +0009E453: mov rdi, rax +0009E456: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS1_; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::find(std::string const&) +0009E45B: leave +0009E45C: retn + +### FUNC 0009E45E - 0009E478 (26 bytes) name=_ZNSt13unordered_mapISsiSt4hashISsESt8equal_toISsESaISt4pairIKSsiEEE3endEv +0009E45E: push rbp +0009E45F: mov rbp, rsp +0009E462: sub rsp, 10h +0009E466: mov [rbp+var_8], rdi +0009E46A: mov rax, [rbp+var_8] +0009E46E: mov rdi, rax +0009E471: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE3endEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::end(void) +0009E476: leave +0009E477: retn + +### FUNC 0009E478 - 0009E49A (34 bytes) name=_ZNSt8__detailneISt4pairIKSsiELb1EEEbRKNS_19_Node_iterator_baseIT_XT0_EEES8_ +0009E478: push rbp +0009E479: mov rbp, rsp +0009E47C: mov [rbp+var_8], rdi +0009E480: mov [rbp+var_10], rsi +0009E484: mov rax, [rbp+var_8] +0009E488: mov rdx, [rax] +0009E48B: mov rax, [rbp+var_10] +0009E48F: mov rax, [rax] +0009E492: cmp rdx, rax +0009E495: setnz al +0009E498: pop rbp +0009E499: retn + +### FUNC 0009E49A - 0009E4BB (33 bytes) name=_ZNKSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEptEv +0009E49A: push rbp +0009E49B: mov rbp, rsp +0009E49E: sub rsp, 10h +0009E4A2: mov [rbp+var_8], rdi +0009E4A6: mov rax, [rbp+var_8] +0009E4AA: mov rax, [rax] +0009E4AD: add rax, 8 +0009E4B1: mov rdi, rax +0009E4B4: call __ZSt11__addressofISt4pairIKSsiEEPT_RS3_; std::__addressof>(std::pair&) +0009E4B9: leave +0009E4BA: retn + +### FUNC 0009E4BB - 0009E4C9 (14 bytes) name=_ZSt4moveIRiEONSt16remove_referenceIT_E4typeEOS2_ +0009E4BB: push rbp +0009E4BC: mov rbp, rsp +0009E4BF: mov [rbp+var_8], rdi +0009E4C3: mov rax, [rbp+var_8] +0009E4C7: pop rbp +0009E4C8: retn + +### FUNC 0009E4CA - 0009E4FA (48 bytes) name=_ZNSt6vectorIiSaIiEE9push_backEOi +0009E4CA: push rbp +0009E4CB: mov rbp, rsp +0009E4CE: sub rsp, 10h +0009E4D2: mov [rbp+var_8], rdi +0009E4D6: mov [rbp+var_10], rsi +0009E4DA: mov rax, [rbp+var_10] +0009E4DE: mov rdi, rax +0009E4E1: call __ZSt4moveIRiEONSt16remove_referenceIT_E4typeEOS2_; std::move(int &&&) +0009E4E6: mov rdx, rax +0009E4E9: mov rax, [rbp+var_8] +0009E4ED: mov rsi, rdx +0009E4F0: mov rdi, rax +0009E4F3: call __ZNSt6vectorIiSaIiEE12emplace_backIJiEEEvDpOT_; std::vector>::emplace_back(int &&) +0009E4F8: leave +0009E4F9: retn + +### FUNC 0009E4FA - 0009E514 (26 bytes) name=_ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_ +0009E4FA: push rbp +0009E4FB: mov rbp, rsp +0009E4FE: sub rsp, 10h +0009E502: mov [rbp+var_8], rdi +0009E506: mov rax, [rbp+var_8] +0009E50A: mov rdi, rax +0009E50D: call __ZNSt10_Iter_baseIPmLb0EE7_S_baseES0_; std::_Iter_base::_S_base(ulong *) +0009E512: leave +0009E513: retn + +### FUNC 0009E514 - 0009E55B (71 bytes) name=_ZNSsC2IPcEET_S1_RKSaIcE +0009E514: push rbp; Alternative name is 'std::string::string(char *, char *, std::allocator const&)' +0009E515: mov rbp, rsp +0009E518: sub rsp, 20h +0009E51C: mov [rbp+var_8], rdi +0009E520: mov [rbp+var_10], rsi +0009E524: mov [rbp+var_18], rdx +0009E528: mov [rbp+var_20], rcx +0009E52C: mov rdx, [rbp+var_20] +0009E530: mov rcx, [rbp+var_18] +0009E534: mov rax, [rbp+var_10] +0009E538: mov rsi, rcx +0009E53B: mov rdi, rax +0009E53E: call __ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE; std::string::_S_construct(char *,char *,std::allocator const&) +0009E543: mov rcx, rax +0009E546: mov rax, [rbp+var_8] +0009E54A: mov rdx, [rbp+var_20] +0009E54E: mov rsi, rcx +0009E551: mov rdi, rax +0009E554: call __ZNSs12_Alloc_hiderC1EPcRKSaIcE; std::string::_Alloc_hider::_Alloc_hider(char *,std::allocator const&) +0009E559: leave +0009E55A: retn + +### FUNC 0009E55C - 0009E56D (17 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4typeEv +0009E55C: push rbp +0009E55D: mov rbp, rsp +0009E560: mov [rbp+var_8], rdi +0009E564: mov rax, [rbp+var_8] +0009E568: movzx eax, byte ptr [rax] +0009E56B: pop rbp +0009E56C: retn + +### FUNC 0009E56E - 0009E5C1 (83 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4sizeEv +0009E56E: push rbp +0009E56F: mov rbp, rsp +0009E572: sub rsp, 10h +0009E576: mov [rbp+var_8], rdi +0009E57A: mov rax, [rbp+var_8] +0009E57E: movzx eax, byte ptr [rax] +0009E581: cmp al, 1 +0009E583: jz short loc_9E5A8 +0009E585: cmp al, 1 +0009E587: jb short loc_9E58F +0009E589: cmp al, 2 +0009E58B: jz short loc_9E596 +0009E58D: jmp short loc_9E5BA +0009E58F: mov eax, 0 +0009E594: jmp short locret_9E5BF +0009E596: mov rax, [rbp+var_8] +0009E59A: mov rax, [rax+8] +0009E59E: mov rdi, rax +0009E5A1: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +0009E5A6: jmp short locret_9E5BF +0009E5A8: mov rax, [rbp+var_8] +0009E5AC: mov rax, [rax+8] +0009E5B0: mov rdi, rax +0009E5B3: call __ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE4sizeEv; std::map>>,std::less,std::allocator>>>>>::size(void) +0009E5B8: jmp short locret_9E5BF +0009E5BA: mov eax, 1 +0009E5BF: leave +0009E5C0: retn + +### FUNC 0009E5C1 - 0009E5FD (60 bytes) name=_ZN9__gnu_cxxneIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +0009E5C1: push rbp +0009E5C2: mov rbp, rsp +0009E5C5: push rbx +0009E5C6: sub rsp, 18h +0009E5CA: mov [rbp+var_18], rdi +0009E5CE: mov [rbp+var_20], rsi +0009E5D2: mov rax, [rbp+var_18] +0009E5D6: mov rdi, rax +0009E5D9: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +0009E5DE: mov rbx, [rax] +0009E5E1: mov rax, [rbp+var_20] +0009E5E5: mov rdi, rax +0009E5E8: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +0009E5ED: mov rax, [rax] +0009E5F0: cmp rbx, rax +0009E5F3: setnz al +0009E5F6: add rsp, 18h +0009E5FA: pop rbx +0009E5FB: pop rbp +0009E5FC: retn + +### FUNC 0009E5FE - 0009E61E (32 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEppEv +0009E5FE: push rbp +0009E5FF: mov rbp, rsp +0009E602: mov [rbp+var_8], rdi +0009E606: mov rax, [rbp+var_8] +0009E60A: mov rax, [rax] +0009E60D: lea rdx, [rax+1] +0009E611: mov rax, [rbp+var_8] +0009E615: mov [rax], rdx +0009E618: mov rax, [rbp+var_8] +0009E61C: pop rbp +0009E61D: retn + +### FUNC 0009E61E - 0009E62F (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEdeEv +0009E61E: push rbp +0009E61F: mov rbp, rsp +0009E622: mov [rbp+var_8], rdi +0009E626: mov rax, [rbp+var_8] +0009E62A: mov rax, [rax] +0009E62D: pop rbp +0009E62E: retn + +### FUNC 0009E630 - 0009E66F (63 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE +0009E630: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t)' +0009E631: mov rbp, rsp +0009E634: sub rsp, 10h +0009E638: mov [rbp+var_8], rdi +0009E63C: mov eax, esi +0009E63E: mov [rbp+var_C], al +0009E641: mov rax, [rbp+var_8] +0009E645: movzx edx, [rbp+var_C] +0009E649: mov [rax], dl +0009E64B: mov rax, [rbp+var_8] +0009E64F: lea rdx, [rax+8] +0009E653: movzx eax, [rbp+var_C] +0009E657: mov esi, eax +0009E659: mov rdi, rdx +0009E65C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ENS_6detail7value_tE; nlohmann::basic_json>>::json_value::json_value(nlohmann::detail::value_t) +0009E661: mov rax, [rbp+var_8] +0009E665: mov rdi, rax +0009E668: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009E66D: leave +0009E66E: retn + +### FUNC 0009E670 - 0009E75A (234 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv +0009E670: push rbp +0009E671: mov rbp, rsp +0009E674: sub rsp, 10h +0009E678: mov [rbp+var_8], rdi +0009E67C: mov rax, [rbp+var_8] +0009E680: movzx eax, byte ptr [rax] +0009E683: cmp al, 1 +0009E685: jnz short loc_9E6B3 +0009E687: mov rax, [rbp+var_8] +0009E68B: mov rax, [rax+8] +0009E68F: test rax, rax +0009E692: jnz short loc_9E6B3 +0009E694: lea rcx, _ZZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEvE19__PRETTY_FUNCTION__; "void nlohmann::basic_json>>,std::allocator>>>>::vector(void) +0009E791: cmp [rbp+var_BC], 2 +0009E798: jnz short loc_9E807 +0009E79A: mov rax, [rbp+var_B8] +0009E7A1: mov rax, [rax] +0009E7A4: mov rdi, rax +0009E7A7: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +0009E7AC: mov rdx, rax +0009E7AF: lea rax, [rbp+var_50] +0009E7B3: mov rsi, rdx +0009E7B6: mov rdi, rax +0009E7B9: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE7reserveEm; std::vector>>,std::allocator>>>>::reserve(ulong) +0009E7BE: lea rax, [rbp+var_50] +0009E7C2: mov rdi, rax +0009E7C5: call __ZSt13back_inserterISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEESt20back_insert_iteratorIT_ERSB_; std::back_inserter>>,std::allocator>>>>>(std::vector>>,std::allocator>>>>&) +0009E7CA: mov r12, rax +0009E7CD: mov rax, [rbp+var_B8] +0009E7D4: mov rax, [rax] +0009E7D7: mov rdi, rax +0009E7DA: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +0009E7DF: mov rbx, rax +0009E7E2: mov rax, [rbp+var_B8] +0009E7E9: mov rax, [rax] +0009E7EC: mov rdi, rax +0009E7EF: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv; std::vector>>,std::allocator>>>>::begin(void) +0009E7F4: mov rdx, r12 +0009E7F7: mov rsi, rbx +0009E7FA: mov rdi, rax +0009E7FD: call __ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET0_T_SH_SG_; std::move<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,std::back_insert_iterator>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,std::back_insert_iterator>>,std::allocator>>>>>) +0009E802: jmp loc_9E8BD +0009E807: cmp [rbp+var_BC], 1 +0009E80E: jnz loc_9E8BD +0009E814: mov rax, [rbp+var_B8] +0009E81B: mov rax, [rax] +0009E81E: mov rdi, rax +0009E821: call __ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE4sizeEv; std::map>>,std::less,std::allocator>>>>>::size(void) +0009E826: mov rdx, rax +0009E829: lea rax, [rbp+var_50] +0009E82D: mov rsi, rdx +0009E830: mov rdi, rax +0009E833: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE7reserveEm; std::vector>>,std::allocator>>>>::reserve(ulong) +0009E838: mov rax, [rbp+var_B8] +0009E83F: mov rax, [rax] +0009E842: mov [rbp+var_18], rax +0009E846: mov rax, [rbp+var_18] +0009E84A: mov rdi, rax +0009E84D: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5beginEv; std::map>>,std::less,std::allocator>>>>>::begin(void) +0009E852: mov [rbp+var_60], rax +0009E856: mov rax, [rbp+var_18] +0009E85A: mov rdi, rax +0009E85D: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv; std::map>>,std::less,std::allocator>>>>>::end(void) +0009E862: mov [rbp+var_70], rax +0009E866: jmp short loc_9E8A6 +0009E868: lea rax, [rbp+var_60] +0009E86C: mov rdi, rax +0009E86F: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv; std::_Rb_tree_iterator>>>>::operator*(void) +0009E874: mov [rbp+var_20], rax +0009E878: mov rax, [rbp+var_20] +0009E87C: add rax, 8 +0009E880: mov rdi, rax +0009E883: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +0009E888: mov rdx, rax +0009E88B: lea rax, [rbp+var_50] +0009E88F: mov rsi, rdx +0009E892: mov rdi, rax +0009E895: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +0009E89A: lea rax, [rbp+var_60] +0009E89E: mov rdi, rax +0009E8A1: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv; std::_Rb_tree_iterator>>>>::operator++(void) +0009E8A6: lea rdx, [rbp+var_70] +0009E8AA: lea rax, [rbp+var_60] +0009E8AE: mov rsi, rdx +0009E8B1: mov rdi, rax +0009E8B4: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_; std::_Rb_tree_iterator>>>>::operator!=(std::_Rb_tree_iterator>>>> const&) +0009E8B9: test al, al +0009E8BB: jnz short loc_9E868 +0009E8BD: jmp loc_9EA0A +0009E8C2: lea rax, [rbp+var_50] +0009E8C6: mov rdi, rax +0009E8C9: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +0009E8CE: mov rdi, rax +0009E8D1: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +0009E8D6: mov rdx, rax +0009E8D9: lea rax, [rbp+var_80] +0009E8DD: mov rsi, rdx +0009E8E0: mov rdi, rax +0009E8E3: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +0009E8E8: lea rax, [rbp+var_50] +0009E8EC: mov rdi, rax +0009E8EF: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8pop_backEv; std::vector>>,std::allocator>>>>::pop_back(void) +0009E8F4: lea rax, [rbp+var_80] +0009E8F8: mov rdi, rax +0009E8FB: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +0009E900: test al, al +0009E902: jz short loc_9E94D +0009E904: lea rax, [rbp+var_50] +0009E908: mov rdi, rax +0009E90B: call __ZSt13back_inserterISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEESt20back_insert_iteratorIT_ERSB_; std::back_inserter>>,std::allocator>>>>>(std::vector>>,std::allocator>>>>&) +0009E910: mov r12, rax +0009E913: mov rax, [rbp+var_78] +0009E917: mov rdi, rax +0009E91A: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +0009E91F: mov rbx, rax +0009E922: mov rax, [rbp+var_78] +0009E926: mov rdi, rax +0009E929: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv; std::vector>>,std::allocator>>>>::begin(void) +0009E92E: mov rdx, r12 +0009E931: mov rsi, rbx +0009E934: mov rdi, rax +0009E937: call __ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET0_T_SH_SG_; std::move<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,std::back_insert_iterator>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,std::back_insert_iterator>>,std::allocator>>>>>) +0009E93C: mov rax, [rbp+var_78] +0009E940: mov rdi, rax +0009E943: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5clearEv; std::vector>>,std::allocator>>>>::clear(void) +0009E948: jmp loc_9E9FE +0009E94D: lea rax, [rbp+var_80] +0009E951: mov rdi, rax +0009E954: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +0009E959: test al, al +0009E95B: jz loc_9E9FE +0009E961: mov rax, [rbp+var_78] +0009E965: mov [rbp+var_28], rax +0009E969: mov rax, [rbp+var_28] +0009E96D: mov rdi, rax +0009E970: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5beginEv; std::map>>,std::less,std::allocator>>>>>::begin(void) +0009E975: mov [rbp+var_90], rax +0009E97C: mov rax, [rbp+var_28] +0009E980: mov rdi, rax +0009E983: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv; std::map>>,std::less,std::allocator>>>>>::end(void) +0009E988: mov [rbp+var_A0], rax +0009E98F: jmp short loc_9E9D5 +0009E991: lea rax, [rbp+var_90] +0009E998: mov rdi, rax +0009E99B: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv; std::_Rb_tree_iterator>>>>::operator*(void) +0009E9A0: mov [rbp+var_30], rax +0009E9A4: mov rax, [rbp+var_30] +0009E9A8: add rax, 8 +0009E9AC: mov rdi, rax +0009E9AF: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +0009E9B4: mov rdx, rax +0009E9B7: lea rax, [rbp+var_50] +0009E9BB: mov rsi, rdx +0009E9BE: mov rdi, rax +0009E9C1: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +0009E9C6: lea rax, [rbp+var_90] +0009E9CD: mov rdi, rax +0009E9D0: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv; std::_Rb_tree_iterator>>>>::operator++(void) +0009E9D5: lea rdx, [rbp+var_A0] +0009E9DC: lea rax, [rbp+var_90] +0009E9E3: mov rsi, rdx +0009E9E6: mov rdi, rax +0009E9E9: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_; std::_Rb_tree_iterator>>>>::operator!=(std::_Rb_tree_iterator>>>> const&) +0009E9EE: test al, al +0009E9F0: jnz short loc_9E991 +0009E9F2: mov rax, [rbp+var_78] +0009E9F6: mov rdi, rax +0009E9F9: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5clearEv; std::map>>,std::less,std::allocator>>>>>::clear(void) +0009E9FE: lea rax, [rbp+var_80] +0009EA02: mov rdi, rax +0009EA05: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009EA0A: lea rax, [rbp+var_50] +0009EA0E: mov rdi, rax +0009EA11: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5emptyEv; std::vector>>,std::allocator>>>>::empty(void) +0009EA16: xor eax, 1 +0009EA19: test al, al +0009EA1B: jnz loc_9E8C2 +0009EA21: movzx eax, [rbp+var_BC] +0009EA28: cmp al, 2 +0009EA2A: jz loc_9EAB3 +0009EA30: cmp al, 2 +0009EA32: ja short loc_9EA3D +0009EA34: cmp al, 1 +0009EA36: jz short loc_9EA52 +0009EA38: jmp loc_9EBCE +0009EA3D: cmp al, 3 +0009EA3F: jz loc_9EB14 +0009EA45: cmp al, 8 +0009EA47: jz loc_9EB72 +0009EA4D: jmp loc_9EBCE +0009EA52: lea rax, [rbp+var_A1] +0009EA59: mov rdi, rax +0009EA5C: call __ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEEC2Ev; std::allocator>>,std::less,std::allocator>>>>>>::allocator(void) +0009EA61: mov rax, [rbp+var_B8] +0009EA68: mov rdx, [rax] +0009EA6B: lea rax, [rbp+var_A1] +0009EA72: mov rsi, rdx +0009EA75: mov rdi, rax +0009EA78: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE7destroyISE_EEvRSF_PT_; std::allocator_traits>>,std::less,std::allocator>>>>>>>::destroy>>,std::less,std::allocator>>>>>>(std::allocator>>,std::less,std::allocator>>>>>>&,std::map>>,std::less,std::allocator>>>>> *) +0009EA7D: mov rax, [rbp+var_B8] +0009EA84: mov rcx, [rax] +0009EA87: lea rax, [rbp+var_A1] +0009EA8E: mov edx, 1 +0009EA93: mov rsi, rcx +0009EA96: mov rdi, rax +0009EA99: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m; std::allocator_traits>>,std::less,std::allocator>>>>>>>::deallocate(std::allocator>>,std::less,std::allocator>>>>>>&,std::map>>,std::less,std::allocator>>>>>*,ulong) +0009EA9E: nop +0009EA9F: lea rax, [rbp+var_A1] +0009EAA6: mov rdi, rax +0009EAA9: call __ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev; std::allocator>>,std::less,std::allocator>>>>>>::~allocator() +0009EAAE: jmp loc_9EBCE +0009EAB3: lea rax, [rbp+var_A2] +0009EABA: mov rdi, rax +0009EABD: call __ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEEC2Ev; std::allocator>>,std::allocator>>>>>::allocator(void) +0009EAC2: mov rax, [rbp+var_B8] +0009EAC9: mov rdx, [rax] +0009EACC: lea rax, [rbp+var_A2] +0009EAD3: mov rsi, rdx +0009EAD6: mov rdi, rax +0009EAD9: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE7destroyIS9_EEvRSA_PT_; std::allocator_traits>>,std::allocator>>>>>>::destroy>>,std::allocator>>>>>(std::allocator>>,std::allocator>>>>>&,std::vector>>,std::allocator>>>> *) +0009EADE: mov rax, [rbp+var_B8] +0009EAE5: mov rcx, [rax] +0009EAE8: lea rax, [rbp+var_A2] +0009EAEF: mov edx, 1 +0009EAF4: mov rsi, rcx +0009EAF7: mov rdi, rax +0009EAFA: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m; std::allocator_traits>>,std::allocator>>>>>>::deallocate(std::allocator>>,std::allocator>>>>>&,std::vector>>,std::allocator>>>>*,ulong) +0009EAFF: nop +0009EB00: lea rax, [rbp+var_A2] +0009EB07: mov rdi, rax +0009EB0A: call __ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev; std::allocator>>,std::allocator>>>>>::~allocator() +0009EB0F: jmp loc_9EBCE +0009EB14: lea rax, [rbp+var_A3] +0009EB1B: mov rdi, rax +0009EB1E: call __ZNSaISsEC2Ev_0; std::allocator::allocator(void) +0009EB23: mov rax, [rbp+var_B8] +0009EB2A: mov rdx, [rax] +0009EB2D: lea rax, [rbp+var_A3] +0009EB34: mov rsi, rdx +0009EB37: mov rdi, rax +0009EB3A: call __ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,std::string *) +0009EB3F: mov rax, [rbp+var_B8] +0009EB46: mov rcx, [rax] +0009EB49: lea rax, [rbp+var_A3] +0009EB50: mov edx, 1 +0009EB55: mov rsi, rcx +0009EB58: mov rdi, rax +0009EB5B: call __ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm; std::allocator_traits>::deallocate(std::allocator&,std::string *,ulong) +0009EB60: nop +0009EB61: lea rax, [rbp+var_A3] +0009EB68: mov rdi, rax +0009EB6B: call __ZNSaISsED2Ev; std::allocator::~allocator() +0009EB70: jmp short loc_9EBCE +0009EB72: lea rax, [rbp+var_A4] +0009EB79: mov rdi, rax +0009EB7C: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev; std::allocator>>>::allocator(void) +0009EB81: mov rax, [rbp+var_B8] +0009EB88: mov rdx, [rax] +0009EB8B: lea rax, [rbp+var_A4] +0009EB92: mov rsi, rdx +0009EB95: mov rdi, rax +0009EB98: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE7destroyIS5_EEvRS6_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::byte_container_with_subtype>> *) +0009EB9D: mov rax, [rbp+var_B8] +0009EBA4: mov rcx, [rax] +0009EBA7: lea rax, [rbp+var_A4] +0009EBAE: mov edx, 1 +0009EBB3: mov rsi, rcx +0009EBB6: mov rdi, rax +0009EBB9: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m; std::allocator_traits>>>>::deallocate(std::allocator>>>&,nlohmann::byte_container_with_subtype>>*,ulong) +0009EBBE: nop +0009EBBF: lea rax, [rbp+var_A4] +0009EBC6: mov rdi, rax +0009EBC9: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +0009EBCE: lea rax, [rbp+var_50] +0009EBD2: mov rdi, rax +0009EBD5: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EED2Ev; std::vector>>,std::allocator>>>>::~vector() +0009EBDA: add rsp, 0B0h +0009EBE1: pop rbx +0009EBE2: pop r12 +0009EBE4: pop rbp +0009EBE5: retn + +### FUNC 0009EBE6 - 0009EC34 (78 bytes) name=_ZSt4swapIN8nlohmann6detail7value_tEEvRT_S4_ +0009EBE6: push rbp +0009EBE7: mov rbp, rsp +0009EBEA: sub rsp, 20h +0009EBEE: mov [rbp+var_18], rdi +0009EBF2: mov [rbp+var_20], rsi +0009EBF6: mov rax, [rbp+var_18] +0009EBFA: mov rdi, rax +0009EBFD: call __ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_; std::move(nlohmann::detail::value_t &&&) +0009EC02: movzx eax, byte ptr [rax] +0009EC05: mov [rbp+var_1], al +0009EC08: mov rax, [rbp+var_20] +0009EC0C: mov rdi, rax +0009EC0F: call __ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_; std::move(nlohmann::detail::value_t &&&) +0009EC14: movzx edx, byte ptr [rax] +0009EC17: mov rax, [rbp+var_18] +0009EC1B: mov [rax], dl +0009EC1D: lea rax, [rbp+var_1] +0009EC21: mov rdi, rax +0009EC24: call __ZSt4moveIRN8nlohmann6detail7value_tEEONSt16remove_referenceIT_E4typeEOS5_; std::move(nlohmann::detail::value_t &&&) +0009EC29: movzx edx, byte ptr [rax] +0009EC2C: mov rax, [rbp+var_20] +0009EC30: mov [rax], dl +0009EC32: leave +0009EC33: retn + +### FUNC 0009EC34 - 0009EC85 (81 bytes) name=_ZSt4swapIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEvRT_SA_ +0009EC34: push rbp +0009EC35: mov rbp, rsp +0009EC38: sub rsp, 20h +0009EC3C: mov [rbp+var_18], rdi +0009EC40: mov [rbp+var_20], rsi +0009EC44: mov rax, [rbp+var_18] +0009EC48: mov rdi, rax +0009EC4B: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_; std::move>>::json_value &>(nlohmann::basic_json>>::json_value &&&) +0009EC50: mov rax, [rax] +0009EC53: mov [rbp+var_10], rax +0009EC57: mov rax, [rbp+var_20] +0009EC5B: mov rdi, rax +0009EC5E: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_; std::move>>::json_value &>(nlohmann::basic_json>>::json_value &&&) +0009EC63: mov rdx, [rbp+var_18] +0009EC67: mov rax, [rax] +0009EC6A: mov [rdx], rax +0009EC6D: lea rax, [rbp+var_10] +0009EC71: mov rdi, rax +0009EC74: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEONSt16remove_referenceIT_E4typeEOSB_; std::move>>::json_value &>(nlohmann::basic_json>>::json_value &&&) +0009EC79: mov rdx, [rbp+var_20] +0009EC7D: mov rax, [rax] +0009EC80: mov [rdx], rax +0009EC83: leave +0009EC84: retn + +### FUNC 0009EC86 - 0009ECE1 (91 bytes) name=_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEE4swapERSC_ +0009EC86: push rbp +0009EC87: mov rbp, rsp +0009EC8A: sub rsp, 10h +0009EC8E: mov [rbp+var_8], rdi +0009EC92: mov [rbp+var_10], rsi +0009EC96: mov rdx, [rbp+var_10] +0009EC9A: mov rax, [rbp+var_8] +0009EC9E: mov rsi, rdx +0009ECA1: mov rdi, rax +0009ECA4: call __ZSt4swapISt9_Any_dataEvRT_S2_; std::swap(std::_Any_data &,std::_Any_data &) +0009ECA9: mov rax, [rbp+var_10] +0009ECAD: lea rdx, [rax+10h] +0009ECB1: mov rax, [rbp+var_8] +0009ECB5: add rax, 10h +0009ECB9: mov rsi, rdx +0009ECBC: mov rdi, rax +0009ECBF: call __ZSt4swapIPFbRSt9_Any_dataRKS0_St18_Manager_operationEEvRT_S8_; std::swap(bool (*)(std::_Any_data &,std::_Any_data const&,std::_Manager_operation) &,bool (*)(std::_Any_data &,std::_Any_data const&,std::_Manager_operation) &) +0009ECC4: mov rax, [rbp+var_10] +0009ECC8: lea rdx, [rax+18h] +0009ECCC: mov rax, [rbp+var_8] +0009ECD0: add rax, 18h +0009ECD4: mov rsi, rdx +0009ECD7: mov rdi, rax +0009ECDA: call __ZSt4swapIPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEvRT_SH_; std::swap>> &)>(bool (*)(std::_Any_data const&,int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) &,bool (*)(std::_Any_data const&,int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) &) +0009ECDF: leave +0009ECE0: retn + +### FUNC 0009ECE2 - 0009ED78 (150 bytes) name=_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_ +0009ECE2: push rbp; Alternative name is 'std::function>> &)>::function(std::function>> &)> const&)' +0009ECE3: mov rbp, rsp +0009ECE6: push rbx +0009ECE7: sub rsp, 18h +0009ECEB: mov [rbp+var_18], rdi +0009ECEF: mov [rbp+var_20], rsi +0009ECF3: mov rax, [rbp+var_18] +0009ECF7: mov rdi, rax +0009ECFA: call __ZNSt31_Maybe_unary_or_binary_functionIbJiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2Ev; std::_Maybe_unary_or_binary_function>> &>::_Maybe_unary_or_binary_function(void) +0009ECFF: mov rax, [rbp+var_18] +0009ED03: mov rdi, rax; this +0009ED06: call __ZNSt14_Function_baseC2Ev; std::_Function_base::_Function_base(void) +0009ED0B: mov rax, [rbp+var_20] +0009ED0F: mov rdi, rax +0009ED12: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEcvbEv; std::function>> &)>::operator bool(void) +0009ED17: test al, al +0009ED19: jz short loc_9ED71 +0009ED1B: mov rax, [rbp+var_20] +0009ED1F: mov rax, [rax+10h] +0009ED23: mov rsi, [rbp+var_20] +0009ED27: mov rcx, [rbp+var_18] +0009ED2B: mov edx, 2 +0009ED30: mov rdi, rcx +0009ED33: call rax +0009ED35: mov rax, [rbp+var_20] +0009ED39: mov rdx, [rax+18h] +0009ED3D: mov rax, [rbp+var_18] +0009ED41: mov [rax+18h], rdx +0009ED45: mov rax, [rbp+var_20] +0009ED49: mov rdx, [rax+10h] +0009ED4D: mov rax, [rbp+var_18] +0009ED51: mov [rax+10h], rdx +0009ED55: jmp short loc_9ED71 +0009ED57: mov rbx, rax +0009ED5A: mov rax, [rbp+var_18] +0009ED5E: mov rdi, rax; this +0009ED61: call __ZNSt14_Function_baseD2Ev; std::_Function_base::~_Function_base() +0009ED66: mov rax, rbx +0009ED69: mov rdi, rax; struct _Unwind_Exception * +0009ED6C: call __Unwind_Resume +0009ED71: add rsp, 18h +0009ED75: pop rbx +0009ED76: pop rbp +0009ED77: retn + +### FUNC 0009ED78 - 0009ED86 (14 bytes) name=_ZSt4moveIRSt8functionIFbiN8nlohmann6detail13parse_event_tERNS1_10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES6_IhSaIhEEEEEEEONSt16remove_referenceIT_E4typeEOSG_ +0009ED78: push rbp +0009ED79: mov rbp, rsp +0009ED7C: mov [rbp+var_8], rdi +0009ED80: mov rax, [rbp+var_8] +0009ED84: pop rbp +0009ED85: retn + +### FUNC 0009ED86 - 0009EDE6 (96 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +0009ED86: push rbp; Alternative name is 'nlohmann::detail::json_sax_dom_callback_parser>>>::~json_sax_dom_callback_parser()' +0009ED87: mov rbp, rsp +0009ED8A: sub rsp, 10h +0009ED8E: mov [rbp+var_8], rdi +0009ED92: mov rax, [rbp+var_8] +0009ED96: add rax, 0A8h +0009ED9C: mov rdi, rax +0009ED9F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009EDA4: mov rax, [rbp+var_8] +0009EDA8: sub rax, 0FFFFFFFFFFFFFF80h +0009EDAC: mov rdi, rax +0009EDAF: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009EDB4: mov rax, [rbp+var_8] +0009EDB8: add rax, 48h ; 'H' +0009EDBC: mov rdi, rax +0009EDBF: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +0009EDC4: mov rax, [rbp+var_8] +0009EDC8: add rax, 20h ; ' ' +0009EDCC: mov rdi, rax +0009EDCF: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +0009EDD4: mov rax, [rbp+var_8] +0009EDD8: add rax, 8 +0009EDDC: mov rdi, rax +0009EDDF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev; std::vector>> *,std::allocator>> *>>::~vector() +0009EDE4: leave +0009EDE5: retn + +### FUNC 0009EDE6 - 0009EDF4 (14 bytes) name=_ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE +0009EDE6: push rbp +0009EDE7: mov rbp, rsp +0009EDEA: mov [rbp+var_8], rdi +0009EDEE: mov rax, [rbp+var_8] +0009EDF2: pop rbp +0009EDF3: retn + +### FUNC 0009EDF4 - 0009EE12 (30 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev +0009EDF4: push rbp; Alternative name is 'nlohmann::detail::json_sax_dom_parser>>>::~json_sax_dom_parser()' +0009EDF5: mov rbp, rsp +0009EDF8: sub rsp, 10h +0009EDFC: mov [rbp+var_8], rdi +0009EE00: mov rax, [rbp+var_8] +0009EE04: add rax, 8 +0009EE08: mov rdi, rax +0009EE0B: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev; std::vector>> *,std::allocator>> *>>::~vector() +0009EE10: leave +0009EE11: retn + +### FUNC 0009EE12 - 0009EE1C (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEEC2Ev +0009EE12: push rbp; Alternative name is '__gnu_cxx::new_allocator>::new_allocator(void)' +0009EE13: mov rbp, rsp +0009EE16: mov [rbp+var_8], rdi +0009EE1A: pop rbp +0009EE1B: retn + +### FUNC 0009EE1C - 0009EE26 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt4pairIKSsiEED2Ev +0009EE1C: push rbp; Alternative name is '__gnu_cxx::new_allocator>::~new_allocator()' +0009EE1D: mov rbp, rsp +0009EE20: mov [rbp+var_8], rdi +0009EE24: pop rbp +0009EE25: retn + +### FUNC 0009EE26 - 0009EE75 (79 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKS7_RKS3_ +0009EE26: push rbp; Alternative name is 'std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Hashtable(unsigned long, std::hash const&, std::equal_to const&, std::allocator> const&)' +0009EE27: mov rbp, rsp +0009EE2A: sub rsp, 50h +0009EE2E: mov [rbp+var_18], rdi +0009EE32: mov [rbp+var_20], rsi +0009EE36: mov [rbp+var_28], rdx +0009EE3A: mov [rbp+var_30], rcx +0009EE3E: mov [rbp+var_38], r8 +0009EE42: mov r9, [rbp+var_30] +0009EE46: lea r8, [rbp+var_2] +0009EE4A: lea rcx, [rbp+var_1] +0009EE4E: mov rdx, [rbp+var_28] +0009EE52: mov rsi, [rbp+var_20] +0009EE56: mov rax, [rbp+var_18] +0009EE5A: mov rdi, [rbp+var_38] +0009EE5E: mov [rsp+50h+var_48], rdi +0009EE63: lea rdi, [rbp+var_3] +0009EE67: mov [rsp+50h+var_50], rdi +0009EE6B: mov rdi, rax +0009EE6E: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKSA_RKSB_RKS7_RKS5_RKS3_; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_Hashtable(ulong,std::hash const&,std::__detail::_Mod_range_hashing const&,std::__detail::_Default_ranged_hash const&,std::equal_to const&,std::__detail::_Select1st const&,std::allocator> const&) +0009EE73: leave +0009EE74: retn + +### FUNC 0009EE76 - 0009EE90 (26 bytes) name=_ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +0009EE76: push rbp; Alternative name is 'std::allocator, true>>::~allocator()' +0009EE77: mov rbp, rsp +0009EE7A: sub rsp, 10h +0009EE7E: mov [rbp+var_8], rdi +0009EE82: mov rax, [rbp+var_8] +0009EE86: mov rdi, rax +0009EE89: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev; __gnu_cxx::new_allocator,true>>::~new_allocator() +0009EE8E: leave +0009EE8F: retn + +### FUNC 0009EE90 - 0009EEFF (111 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv +0009EE90: push rbp +0009EE91: mov rbp, rsp +0009EE94: sub rsp, 10h +0009EE98: mov [rbp+var_8], rdi +0009EE9C: mov rax, [rbp+var_8] +0009EEA0: mov rdi, rax +0009EEA3: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE8_M_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_begin(void) +0009EEA8: mov rdx, rax +0009EEAB: mov rax, [rbp+var_8] +0009EEAF: mov rsi, rdx +0009EEB2: mov rdi, rax +0009EEB5: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_deallocate_nodesEPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_deallocate_nodes(std::__detail::_Hash_node,true> *) +0009EEBA: mov rax, [rbp+var_8] +0009EEBE: mov rax, [rax+8] +0009EEC2: lea rdx, ds:0[rax*8]; n +0009EECA: mov rax, [rbp+var_8] +0009EECE: mov rax, [rax] +0009EED1: mov esi, 0; c +0009EED6: mov rdi, rax; s +0009EED9: call _memset +0009EEDE: mov rax, [rbp+var_8] +0009EEE2: mov qword ptr [rax+18h], 0 +0009EEEA: mov rax, [rbp+var_8] +0009EEEE: mov rdi, rax +0009EEF1: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +0009EEF6: mov qword ptr [rax], 0 +0009EEFD: leave +0009EEFE: retn + +### FUNC 0009EF00 - 0009EF79 (121 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm +0009EF00: push rbp +0009EF01: mov rbp, rsp +0009EF04: push rbx +0009EF05: sub rsp, 38h +0009EF09: mov [rbp+var_28], rdi +0009EF0D: mov [rbp+var_30], rsi +0009EF11: mov [rbp+var_38], rdx +0009EF15: mov rax, [rbp+var_28] +0009EF19: mov rdi, rax +0009EF1C: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +0009EF21: mov rdx, rax +0009EF24: lea rax, [rbp+var_11] +0009EF28: mov rsi, rdx +0009EF2B: mov rdi, rax +0009EF2E: call __ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKSsiELb1EEEEERKSaIT_E; std::allocator::allocator,true>>(std::allocator,true>> const&) +0009EF33: mov rdx, [rbp+var_38] +0009EF37: mov rcx, [rbp+var_30] +0009EF3B: lea rax, [rbp+var_11] +0009EF3F: mov rsi, rcx +0009EF42: mov rdi, rax +0009EF45: call __ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m; __gnu_cxx::new_allocator::deallocate(std::__detail::_Hash_node_base **,ulong) +0009EF4A: lea rax, [rbp+var_11] +0009EF4E: mov rdi, rax +0009EF51: call __ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev; std::allocator::~allocator() +0009EF56: jmp short loc_9EF72 +0009EF58: mov rbx, rax +0009EF5B: lea rax, [rbp+var_11] +0009EF5F: mov rdi, rax +0009EF62: call __ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev; std::allocator::~allocator() +0009EF67: mov rax, rbx +0009EF6A: mov rdi, rax; struct _Unwind_Exception * +0009EF6D: call __Unwind_Resume +0009EF72: add rsp, 38h +0009EF76: pop rbx +0009EF77: pop rbp +0009EF78: retn + +### FUNC 0009EF7A - 0009EF94 (26 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implD2Ev +0009EF7A: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::~_Vector_impl()' +0009EF7B: mov rbp, rsp +0009EF7E: sub rsp, 10h +0009EF82: mov [rbp+var_8], rdi +0009EF86: mov rax, [rbp+var_8] +0009EF8A: mov rdi, rax +0009EF8D: call __ZNSaI19struct_TerminalListED2Ev; std::allocator::~allocator() +0009EF92: leave +0009EF93: retn + +### FUNC 0009EF94 - 0009EFAE (26 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EEC2Ev +0009EF94: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(void)' +0009EF95: mov rbp, rsp +0009EF98: sub rsp, 10h +0009EF9C: mov [rbp+var_8], rdi +0009EFA0: mov rax, [rbp+var_8] +0009EFA4: mov rdi, rax +0009EFA7: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implC2Ev; std::_Vector_base>::_Vector_impl::_Vector_impl(void) +0009EFAC: leave +0009EFAD: retn + +### FUNC 0009EFAE - 0009F00E (96 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EED2Ev +0009EFAE: push rbp; Alternative name is 'std::_Vector_base>::~_Vector_base()' +0009EFAF: mov rbp, rsp +0009EFB2: sub rsp, 10h +0009EFB6: mov [rbp+var_8], rdi +0009EFBA: mov rax, [rbp+var_8] +0009EFBE: mov rax, [rax+10h] +0009EFC2: mov rdx, rax +0009EFC5: mov rax, [rbp+var_8] +0009EFC9: mov rax, [rax] +0009EFCC: sub rdx, rax +0009EFCF: mov rax, rdx +0009EFD2: sar rax, 2 +0009EFD6: mov rdx, rax +0009EFD9: mov rax, 0EEEEEEEEEEEEEEEFh +0009EFE3: imul rax, rdx +0009EFE7: mov rdx, rax +0009EFEA: mov rax, [rbp+var_8] +0009EFEE: mov rcx, [rax] +0009EFF1: mov rax, [rbp+var_8] +0009EFF5: mov rsi, rcx +0009EFF8: mov rdi, rax +0009EFFB: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m; std::_Vector_base>::_M_deallocate(struct_TerminalList*,ulong) +0009F000: mov rax, [rbp+var_8] +0009F004: mov rdi, rax +0009F007: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +0009F00C: leave +0009F00D: retn + +### FUNC 0009F00E - 0009F01C (14 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +0009F00E: push rbp +0009F00F: mov rbp, rsp +0009F012: mov [rbp+var_8], rdi +0009F016: mov rax, [rbp+var_8] +0009F01A: pop rbp +0009F01B: retn + +### FUNC 0009F01C - 0009F045 (41 bytes) name=_ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E +0009F01C: push rbp +0009F01D: mov rbp, rsp +0009F020: sub rsp, 20h +0009F024: mov [rbp+var_8], rdi +0009F028: mov [rbp+var_10], rsi +0009F02C: mov [rbp+var_18], rdx +0009F030: mov rdx, [rbp+var_10] +0009F034: mov rax, [rbp+var_8] +0009F038: mov rsi, rdx +0009F03B: mov rdi, rax +0009F03E: call __ZSt8_DestroyIP19struct_TerminalListEvT_S2_; std::_Destroy(struct_TerminalList *,struct_TerminalList *) +0009F043: leave +0009F044: retn + +### FUNC 0009F046 - 0009F2A8 (610 bytes) name=_ZNSt6vectorI19struct_TerminalListSaIS0_EE17_M_default_appendEm +0009F046: push rbp +0009F047: mov rbp, rsp +0009F04A: push rbx +0009F04B: sub rsp, 38h +0009F04F: mov [rbp+var_38], rdi +0009F053: mov [rbp+var_40], rsi +0009F057: cmp [rbp+var_40], 0 +0009F05C: jz loc_9F2A1 +0009F062: mov rax, [rbp+var_38] +0009F066: mov rax, [rax+10h] +0009F06A: mov rdx, rax +0009F06D: mov rax, [rbp+var_38] +0009F071: mov rax, [rax+8] +0009F075: sub rdx, rax +0009F078: mov rax, rdx +0009F07B: sar rax, 2 +0009F07F: mov rdx, rax +0009F082: mov rax, 0EEEEEEEEEEEEEEEFh +0009F08C: imul rax, rdx +0009F090: cmp rax, [rbp+var_40] +0009F094: jb short loc_9F0E9 +0009F096: mov rax, [rbp+var_38] +0009F09A: mov rdi, rax +0009F09D: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009F0A2: mov rdx, rax +0009F0A5: mov rax, [rbp+var_38] +0009F0A9: mov rax, [rax+8] +0009F0AD: mov rcx, [rbp+var_40] +0009F0B1: mov rsi, rcx +0009F0B4: mov rdi, rax +0009F0B7: call __ZSt27__uninitialized_default_n_aIP19struct_TerminalListmS0_EvT_T0_RSaIT1_E; std::__uninitialized_default_n_a(struct_TerminalList *,ulong,std::allocator &) +0009F0BC: mov rax, [rbp+var_38] +0009F0C0: mov rdx, [rax+8] +0009F0C4: mov rax, [rbp+var_40] +0009F0C8: shl rax, 2 +0009F0CC: mov rcx, rax +0009F0CF: shl rcx, 4 +0009F0D3: sub rcx, rax +0009F0D6: mov rax, rcx +0009F0D9: add rdx, rax +0009F0DC: mov rax, [rbp+var_38] +0009F0E0: mov [rax+8], rdx +0009F0E4: jmp loc_9F2A1 +0009F0E9: mov rcx, [rbp+var_40] +0009F0ED: mov rax, [rbp+var_38] +0009F0F1: lea rdx, aVectorMDefault; "vector::_M_default_append" +0009F0F8: mov rsi, rcx +0009F0FB: mov rdi, rax +0009F0FE: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +0009F103: mov [rbp+var_20], rax +0009F107: mov rax, [rbp+var_38] +0009F10B: mov rdi, rax +0009F10E: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +0009F113: mov [rbp+var_28], rax +0009F117: mov rax, [rbp+var_38] +0009F11B: mov rdx, [rbp+var_20] +0009F11F: mov rsi, rdx +0009F122: mov rdi, rax +0009F125: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +0009F12A: mov [rbp+var_30], rax +0009F12E: mov rax, [rbp+var_30] +0009F132: mov [rbp+var_18], rax +0009F136: mov rax, [rbp+var_38] +0009F13A: mov rdi, rax +0009F13D: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009F142: mov rcx, rax +0009F145: mov rax, [rbp+var_38] +0009F149: mov rsi, [rax+8] +0009F14D: mov rax, [rbp+var_38] +0009F151: mov rax, [rax] +0009F154: mov rdx, [rbp+var_30] +0009F158: mov rdi, rax +0009F15B: call __ZSt34__uninitialized_move_if_noexcept_aIP19struct_TerminalListS1_SaIS0_EET0_T_S4_S3_RT1_; std::__uninitialized_move_if_noexcept_a>(struct_TerminalList *,struct_TerminalList *,struct_TerminalList *,std::allocator &) +0009F160: mov [rbp+var_18], rax +0009F164: mov rax, [rbp+var_38] +0009F168: mov rdi, rax +0009F16B: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009F170: mov rdx, rax +0009F173: mov rcx, [rbp+var_40] +0009F177: mov rax, [rbp+var_18] +0009F17B: mov rsi, rcx +0009F17E: mov rdi, rax +0009F181: call __ZSt27__uninitialized_default_n_aIP19struct_TerminalListmS0_EvT_T0_RSaIT1_E; std::__uninitialized_default_n_a(struct_TerminalList *,ulong,std::allocator &) +0009F186: mov rax, [rbp+var_40] +0009F18A: shl rax, 2 +0009F18E: mov rdx, rax +0009F191: shl rdx, 4 +0009F195: sub rdx, rax +0009F198: mov rax, rdx +0009F19B: add [rbp+var_18], rax +0009F19F: mov rax, [rbp+var_38] +0009F1A3: mov rdi, rax +0009F1A6: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009F1AB: mov rdx, rax +0009F1AE: mov rax, [rbp+var_38] +0009F1B2: mov rcx, [rax+8] +0009F1B6: mov rax, [rbp+var_38] +0009F1BA: mov rax, [rax] +0009F1BD: mov rsi, rcx +0009F1C0: mov rdi, rax +0009F1C3: call __ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E; std::_Destroy(struct_TerminalList *,struct_TerminalList *,std::allocator &) +0009F1C8: mov rax, [rbp+var_38] +0009F1CC: mov rax, [rax+10h] +0009F1D0: mov rdx, rax +0009F1D3: mov rax, [rbp+var_38] +0009F1D7: mov rax, [rax] +0009F1DA: sub rdx, rax +0009F1DD: mov rax, rdx +0009F1E0: sar rax, 2 +0009F1E4: mov rdx, rax +0009F1E7: mov rax, 0EEEEEEEEEEEEEEEFh +0009F1F1: imul rax, rdx +0009F1F5: mov rdx, rax +0009F1F8: mov rax, [rbp+var_38] +0009F1FC: mov rcx, [rax] +0009F1FF: mov rax, [rbp+var_38] +0009F203: mov rsi, rcx +0009F206: mov rdi, rax +0009F209: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m; std::_Vector_base>::_M_deallocate(struct_TerminalList*,ulong) +0009F20E: mov rax, [rbp+var_38] +0009F212: mov rdx, [rbp+var_30] +0009F216: mov [rax], rdx +0009F219: mov rax, [rbp+var_38] +0009F21D: mov rdx, [rbp+var_18] +0009F221: mov [rax+8], rdx +0009F225: mov rax, [rbp+var_20] +0009F229: shl rax, 2 +0009F22D: mov rdx, rax +0009F230: shl rdx, 4 +0009F234: sub rdx, rax +0009F237: mov rax, [rbp+var_30] +0009F23B: add rdx, rax +0009F23E: mov rax, [rbp+var_38] +0009F242: mov [rax+10h], rdx +0009F246: jmp short loc_9F2A1 +0009F248: mov rdi, rax; void * +0009F24B: call ___cxa_begin_catch +0009F250: mov rax, [rbp+var_38] +0009F254: mov rdi, rax +0009F257: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009F25C: mov rdx, rax +0009F25F: mov rcx, [rbp+var_18] +0009F263: mov rax, [rbp+var_30] +0009F267: mov rsi, rcx +0009F26A: mov rdi, rax +0009F26D: call __ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E; std::_Destroy(struct_TerminalList *,struct_TerminalList *,std::allocator &) +0009F272: mov rax, [rbp+var_38] +0009F276: mov rdx, [rbp+var_20] +0009F27A: mov rcx, [rbp+var_30] +0009F27E: mov rsi, rcx +0009F281: mov rdi, rax +0009F284: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m; std::_Vector_base>::_M_deallocate(struct_TerminalList*,ulong) +0009F289: call ___cxa_rethrow +0009F28E: mov rbx, rax +0009F291: call ___cxa_end_catch +0009F296: mov rax, rbx +0009F299: mov rdi, rax; struct _Unwind_Exception * +0009F29C: call __Unwind_Resume +0009F2A1: add rsp, 38h +0009F2A5: pop rbx +0009F2A6: pop rbp +0009F2A7: retn + +### FUNC 0009F2A8 - 0009F2EC (68 bytes) name=_ZNSt6vectorI19struct_TerminalListSaIS0_EE15_M_erase_at_endEPS0_ +0009F2A8: push rbp +0009F2A9: mov rbp, rsp +0009F2AC: sub rsp, 10h +0009F2B0: mov [rbp+var_8], rdi +0009F2B4: mov [rbp+var_10], rsi +0009F2B8: mov rax, [rbp+var_8] +0009F2BC: mov rdi, rax +0009F2BF: call __ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +0009F2C4: mov rdx, rax +0009F2C7: mov rax, [rbp+var_8] +0009F2CB: mov rcx, [rax+8] +0009F2CF: mov rax, [rbp+var_10] +0009F2D3: mov rsi, rcx +0009F2D6: mov rdi, rax +0009F2D9: call __ZSt8_DestroyIP19struct_TerminalListS0_EvT_S2_RSaIT0_E; std::_Destroy(struct_TerminalList *,struct_TerminalList *,std::allocator &) +0009F2DE: mov rax, [rbp+var_8] +0009F2E2: mov rdx, [rbp+var_10] +0009F2E6: mov [rax+8], rdx +0009F2EA: leave +0009F2EB: retn + +### FUNC 0009F2EC - 0009F306 (26 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implD2Ev +0009F2EC: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::~_Vector_impl()' +0009F2ED: mov rbp, rsp +0009F2F0: sub rsp, 10h +0009F2F4: mov [rbp+var_8], rdi +0009F2F8: mov rax, [rbp+var_8] +0009F2FC: mov rdi, rax +0009F2FF: call __ZNSaIN6serial8PortInfoEED2Ev; std::allocator::~allocator() +0009F304: leave +0009F305: retn + +### FUNC 0009F306 - 0009F366 (96 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EED2Ev +0009F306: push rbp; Alternative name is 'std::_Vector_base>::~_Vector_base()' +0009F307: mov rbp, rsp +0009F30A: sub rsp, 10h +0009F30E: mov [rbp+var_8], rdi +0009F312: mov rax, [rbp+var_8] +0009F316: mov rax, [rax+10h] +0009F31A: mov rdx, rax +0009F31D: mov rax, [rbp+var_8] +0009F321: mov rax, [rax] +0009F324: sub rdx, rax +0009F327: mov rax, rdx +0009F32A: sar rax, 3 +0009F32E: mov rdx, rax +0009F331: mov rax, 0AAAAAAAAAAAAAAABh +0009F33B: imul rax, rdx +0009F33F: mov rdx, rax +0009F342: mov rax, [rbp+var_8] +0009F346: mov rcx, [rax] +0009F349: mov rax, [rbp+var_8] +0009F34D: mov rsi, rcx +0009F350: mov rdi, rax +0009F353: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m; std::_Vector_base>::_M_deallocate(serial::PortInfo*,ulong) +0009F358: mov rax, [rbp+var_8] +0009F35C: mov rdi, rax +0009F35F: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +0009F364: leave +0009F365: retn + +### FUNC 0009F366 - 0009F374 (14 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +0009F366: push rbp +0009F367: mov rbp, rsp +0009F36A: mov [rbp+var_8], rdi +0009F36E: mov rax, [rbp+var_8] +0009F372: pop rbp +0009F373: retn + +### FUNC 0009F374 - 0009F39D (41 bytes) name=_ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E +0009F374: push rbp +0009F375: mov rbp, rsp +0009F378: sub rsp, 20h +0009F37C: mov [rbp+var_8], rdi +0009F380: mov [rbp+var_10], rsi +0009F384: mov [rbp+var_18], rdx +0009F388: mov rdx, [rbp+var_10] +0009F38C: mov rax, [rbp+var_8] +0009F390: mov rsi, rdx +0009F393: mov rdi, rax +0009F396: call __ZSt8_DestroyIPN6serial8PortInfoEEvT_S3_; std::_Destroy(serial::PortInfo *,serial::PortInfo *) +0009F39B: leave +0009F39C: retn + +### FUNC 0009F39E - 0009F3BA (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEEC2ERKS3_ +0009F39E: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>>::__normal_iterator(serial::PortInfo * const&)' +0009F39F: mov rbp, rsp +0009F3A2: mov [rbp+var_8], rdi +0009F3A6: mov [rbp+var_10], rsi +0009F3AA: mov rax, [rbp+var_10] +0009F3AE: mov rdx, [rax] +0009F3B1: mov rax, [rbp+var_8] +0009F3B5: mov [rax], rdx +0009F3B8: pop rbp +0009F3B9: retn + +### FUNC 0009F3BA - 0009F3C8 (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPN6serial8PortInfoESt6vectorIS2_SaIS2_EEE4baseEv +0009F3BA: push rbp +0009F3BB: mov rbp, rsp +0009F3BE: mov [rbp+var_8], rdi +0009F3C2: mov rax, [rbp+var_8] +0009F3C6: pop rbp +0009F3C7: retn + +### FUNC 0009F3C8 - 0009F3F1 (41 bytes) name=_ZN9__gnu_cxx14__alloc_traitsISaIhEE17_S_select_on_copyERKS1_ +0009F3C8: push rbp +0009F3C9: mov rbp, rsp +0009F3CC: sub rsp, 10h +0009F3D0: mov [rbp+var_8], rdi +0009F3D4: mov [rbp+var_10], rsi +0009F3D8: mov rax, [rbp+var_8] +0009F3DC: mov rdx, [rbp+var_10] +0009F3E0: mov rsi, rdx +0009F3E3: mov rdi, rax +0009F3E6: call __ZNSt16allocator_traitsISaIhEE37select_on_container_copy_constructionERKS0_; std::allocator_traits>::select_on_container_copy_construction(std::allocator const&) +0009F3EB: mov rax, [rbp+var_8] +0009F3EF: leave +0009F3F0: retn + +### FUNC 0009F3F2 - 0009F450 (94 bytes) name=_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_ +0009F3F2: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(unsigned long, std::allocator const&)' +0009F3F3: mov rbp, rsp +0009F3F6: push rbx +0009F3F7: sub rsp, 28h +0009F3FB: mov [rbp+var_18], rdi +0009F3FF: mov [rbp+var_20], rsi +0009F403: mov [rbp+var_28], rdx +0009F407: mov rax, [rbp+var_18] +0009F40B: mov rdx, [rbp+var_28] +0009F40F: mov rsi, rdx +0009F412: mov rdi, rax +0009F415: call __ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2ERKS0_; std::_Vector_base>::_Vector_impl::_Vector_impl(std::allocator const&) +0009F41A: mov rdx, [rbp+var_20] +0009F41E: mov rax, [rbp+var_18] +0009F422: mov rsi, rdx +0009F425: mov rdi, rax +0009F428: call __ZNSt12_Vector_baseIhSaIhEE17_M_create_storageEm; std::_Vector_base>::_M_create_storage(ulong) +0009F42D: jmp short loc_9F449 +0009F42F: mov rbx, rax +0009F432: mov rax, [rbp+var_18] +0009F436: mov rdi, rax +0009F439: call __ZNSt12_Vector_baseIhSaIhEE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +0009F43E: mov rax, rbx +0009F441: mov rdi, rax; struct _Unwind_Exception * +0009F444: call __Unwind_Resume +0009F449: add rsp, 28h +0009F44D: pop rbx +0009F44E: pop rbp +0009F44F: retn + +### FUNC 0009F450 - 0009F478 (40 bytes) name=_ZN8nlohmann6detail13input_adapterIhLm320659EEEDTcl13input_adapterfp_plfp_T0_EERAT0__T_ +0009F450: push rbp +0009F451: mov rbp, rsp +0009F454: sub rsp, 10h +0009F458: mov [rbp+var_8], rdi +0009F45C: mov rax, [rbp+var_8] +0009F460: lea rdx, [rax+4E493h] +0009F467: mov rax, [rbp+var_8] +0009F46B: mov rsi, rdx +0009F46E: mov rdi, rax +0009F471: call __ZN8nlohmann6detail13input_adapterIPhEENS0_30iterator_input_adapter_factoryIT_vE12adapter_typeES4_S4_; nlohmann::detail::input_adapter(uchar *,uchar *) +0009F476: leave +0009F477: retn + +### FUNC 0009F478 - 0009F486 (14 bytes) name=_ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_ +0009F478: push rbp +0009F479: mov rbp, rsp +0009F47C: mov [rbp+var_8], rdi +0009F480: mov rax, [rbp+var_8] +0009F484: pop rbp +0009F485: retn + +### FUNC 0009F486 - 0009F536 (176 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6parserINS_6detail22iterator_input_adapterIPhEEEENS8_6parserIS6_T_EESD_St8functionIFbiNS8_13parse_event_tERS6_EEbb +0009F486: push rbp +0009F487: mov rbp, rsp +0009F48A: push r12 +0009F48C: push rbx +0009F48D: sub rsp, 50h +0009F491: mov [rbp+var_38], rdi +0009F495: mov rax, rsi +0009F498: mov rsi, rdx +0009F49B: mov rdx, rsi +0009F49E: mov [rbp+var_50], rax +0009F4A2: mov [rbp+var_48], rdx +0009F4A6: mov [rbp+var_40], rcx +0009F4AA: mov edx, r8d +0009F4AD: mov eax, r9d +0009F4B0: mov [rbp+var_54], dl +0009F4B3: mov [rbp+var_58], al +0009F4B6: movzx r12d, [rbp+var_58] +0009F4BB: movzx ebx, [rbp+var_54] +0009F4BF: mov rax, [rbp+var_40] +0009F4C3: mov rdi, rax +0009F4C6: call __ZSt4moveIRSt8functionIFbiN8nlohmann6detail13parse_event_tERNS1_10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES6_IhSaIhEEEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move>> &)> &>(std::function>> &)> &&&) +0009F4CB: mov rdx, rax +0009F4CE: lea rax, [rbp+var_30] +0009F4D2: mov rsi, rdx +0009F4D5: mov rdi, rax +0009F4D8: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2EOSC_; std::function>> &)>::function(std::function>> &)>&&) +0009F4DD: lea rax, [rbp+var_50] +0009F4E1: mov rdi, rax +0009F4E4: call __ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_; std::move &>(nlohmann::detail::iterator_input_adapter &&&) +0009F4E9: mov rsi, rax +0009F4EC: lea rdx, [rbp+var_30] +0009F4F0: mov rax, [rbp+var_38] +0009F4F4: mov r8d, r12d +0009F4F7: mov ecx, ebx +0009F4F9: mov rdi, rax +0009F4FC: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_St8functionIFbiNS0_13parse_event_tERS8_EEbb; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::parser(nlohmann::detail::iterator_input_adapter&&,std::function>>&)>,bool,bool) +0009F501: lea rax, [rbp+var_30] +0009F505: mov rdi, rax +0009F508: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009F50D: jmp short loc_9F529 +0009F50F: mov rbx, rax +0009F512: lea rax, [rbp+var_30] +0009F516: mov rdi, rax +0009F519: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009F51E: mov rax, rbx +0009F521: mov rdi, rax; struct _Unwind_Exception * +0009F524: call __Unwind_Resume +0009F529: mov rax, [rbp+var_38] +0009F52D: add rsp, 50h +0009F531: pop rbx +0009F532: pop r12 +0009F534: pop rbp +0009F535: retn + +### FUNC 0009F536 - 0009FB5C (1574 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5parseEbRS8_ +0009F536: push rbp +0009F537: mov rbp, rsp +0009F53A: push rbx +0009F53B: sub rsp, 278h +0009F542: mov [rbp+var_268], rdi +0009F549: mov eax, esi +0009F54B: mov [rbp+var_278], rdx +0009F552: mov [rbp+var_26C], al +0009F558: mov rax, [rbp+var_268] +0009F55F: mov rdi, rax +0009F562: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEcvbEv; std::function>> &)>::operator bool(void) +0009F567: test al, al +0009F569: jz loc_9F82C +0009F56F: mov rax, [rbp+var_268] +0009F576: movzx eax, byte ptr [rax+0B0h] +0009F57D: movzx ebx, al +0009F580: mov rdx, [rbp+var_268] +0009F587: lea rax, [rbp+var_1A0] +0009F58E: mov rsi, rdx +0009F591: mov rdi, rax +0009F594: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_; std::function>> &)>::function(std::function>> &)> const&) +0009F599: lea rdx, [rbp+var_1A0] +0009F5A0: mov rsi, [rbp+var_278] +0009F5A7: lea rax, [rbp+var_260] +0009F5AE: mov ecx, ebx +0009F5B0: mov rdi, rax +0009F5B3: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_St8functionIFbiNS0_13parse_event_tESA_EEb; nlohmann::detail::json_sax_dom_callback_parser>>>::json_sax_dom_callback_parser(nlohmann::basic_json>>&,std::function>>&)>,bool) +0009F5B8: lea rax, [rbp+var_1A0] +0009F5BF: mov rdi, rax +0009F5C2: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009F5C7: lea rdx, [rbp+var_260] +0009F5CE: mov rax, [rbp+var_268] +0009F5D5: mov rsi, rdx +0009F5D8: mov rdi, rax +0009F5DB: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::sax_parse_internal>>>>(nlohmann::detail::json_sax_dom_callback_parser>>> *) +0009F5E0: mov rax, [rbp+var_278] +0009F5E7: mov rdi, rax +0009F5EA: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009F5EF: cmp [rbp+var_26C], 0 +0009F5F6: jz short loc_9F613 +0009F5F8: mov rax, [rbp+var_268] +0009F5FF: mov rdi, rax +0009F602: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +0009F607: cmp eax, 0Fh +0009F60A: jz short loc_9F613 +0009F60C: mov eax, 1 +0009F611: jmp short loc_9F618 +0009F613: mov eax, 0 +0009F618: test al, al +0009F61A: jz loc_9F764 +0009F620: lea rax, [rbp+var_131] +0009F627: mov rdi, rax +0009F62A: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009F62F: lea rdx, [rbp+var_131] +0009F636: lea rax, [rbp+var_140] +0009F63D: lea rsi, aValue; "value" +0009F644: mov rdi, rax +0009F647: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009F64C: lea rax, [rbp+var_150] +0009F653: lea rdx, [rbp+var_140] +0009F65A: mov rsi, [rbp+var_268] +0009F661: mov rcx, rdx +0009F664: mov edx, 0Fh +0009F669: mov rdi, rax +0009F66C: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +0009F671: mov rax, [rbp+var_268] +0009F678: lea rdx, [rax+28h] +0009F67C: lea rax, [rbp+var_130] +0009F683: mov rsi, rdx +0009F686: mov rdi, rax +0009F689: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +0009F68E: lea rax, [rbp+var_180] +0009F695: lea rcx, [rbp+var_150]; std::string * +0009F69C: lea rdx, [rbp+var_130]; nlohmann::detail::position_t * +0009F6A3: mov esi, 65h ; 'e'; int +0009F6A8: mov rdi, rax; this +0009F6AB: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +0009F6B0: mov rax, [rbp+var_268] +0009F6B7: lea rdx, [rax+28h] +0009F6BB: lea rax, [rbp+var_110] +0009F6C2: mov rsi, rdx +0009F6C5: mov rdi, rax +0009F6C8: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +0009F6CD: mov rax, [rbp+var_268] +0009F6D4: lea rdx, [rax+28h] +0009F6D8: lea rax, [rbp+var_100] +0009F6DF: mov rsi, rdx +0009F6E2: mov rdi, rax +0009F6E5: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +0009F6EA: lea rax, [rbp+var_100] +0009F6F1: mov rdi, rax +0009F6F4: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +0009F6F9: mov rsi, rax +0009F6FC: lea rcx, [rbp+var_180] +0009F703: lea rdx, [rbp+var_110] +0009F70A: lea rax, [rbp+var_260] +0009F711: mov rdi, rax +0009F714: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +0009F719: lea rax, [rbp+var_110] +0009F720: mov rdi, rax; this +0009F723: call __ZNSsD1Ev; std::string::~string() +0009F728: lea rax, [rbp+var_180] +0009F72F: mov rdi, rax; this +0009F732: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +0009F737: lea rax, [rbp+var_150] +0009F73E: mov rdi, rax; this +0009F741: call __ZNSsD1Ev; std::string::~string() +0009F746: lea rax, [rbp+var_140] +0009F74D: mov rdi, rax; this +0009F750: call __ZNSsD1Ev; std::string::~string() +0009F755: lea rax, [rbp+var_131] +0009F75C: mov rdi, rax +0009F75F: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009F764: lea rax, [rbp+var_260] +0009F76B: mov rdi, rax +0009F76E: call __ZNK8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv; nlohmann::detail::json_sax_dom_callback_parser>>>::is_errored(void) +0009F773: test al, al +0009F775: jz short loc_9F7BA +0009F777: lea rax, [rbp+var_E0] +0009F77E: mov esi, 9 +0009F783: mov rdi, rax +0009F786: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +0009F78B: lea rdx, [rbp+var_E0] +0009F792: mov rax, [rbp+var_278] +0009F799: mov rsi, rdx +0009F79C: mov rdi, rax +0009F79F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +0009F7A4: lea rax, [rbp+var_E0] +0009F7AB: mov rdi, rax +0009F7AE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009F7B3: mov ebx, 0 +0009F7B8: jmp short loc_9F80E +0009F7BA: mov rax, [rbp+var_278] +0009F7C1: mov rdi, rax +0009F7C4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12is_discardedEv; nlohmann::basic_json>>::is_discarded(void) +0009F7C9: test al, al +0009F7CB: jz short loc_9F809 +0009F7CD: lea rax, [rbp+var_D0] +0009F7D4: mov esi, 0 +0009F7D9: mov rdi, rax +0009F7DC: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +0009F7E1: lea rdx, [rbp+var_D0] +0009F7E8: mov rax, [rbp+var_278] +0009F7EF: mov rsi, rdx +0009F7F2: mov rdi, rax +0009F7F5: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +0009F7FA: lea rax, [rbp+var_D0] +0009F801: mov rdi, rax +0009F804: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009F809: mov ebx, 1 +0009F80E: lea rax, [rbp+var_260] +0009F815: mov rdi, rax +0009F818: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev; nlohmann::detail::json_sax_dom_callback_parser>>>::~json_sax_dom_callback_parser() +0009F81D: cmp ebx, 1 +0009F820: jnz loc_9FB52 +0009F826: nop +0009F827: jmp loc_9FB52 +0009F82C: mov rax, [rbp+var_268] +0009F833: movzx eax, byte ptr [rax+0B0h] +0009F83A: movzx edx, al +0009F83D: mov rcx, [rbp+var_278] +0009F844: lea rax, [rbp+var_260] +0009F84B: mov rsi, rcx +0009F84E: mov rdi, rax +0009F851: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_b; nlohmann::detail::json_sax_dom_parser>>>::json_sax_dom_parser(nlohmann::basic_json>>&,bool) +0009F856: lea rdx, [rbp+var_260] +0009F85D: mov rax, [rbp+var_268] +0009F864: mov rsi, rdx +0009F867: mov rdi, rax +0009F86A: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::sax_parse_internal>>>>(nlohmann::detail::json_sax_dom_parser>>> *) +0009F86F: mov rax, [rbp+var_278] +0009F876: mov rdi, rax +0009F879: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +0009F87E: cmp [rbp+var_26C], 0 +0009F885: jz short loc_9F8A2 +0009F887: mov rax, [rbp+var_268] +0009F88E: mov rdi, rax +0009F891: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +0009F896: cmp eax, 0Fh +0009F899: jz short loc_9F8A2 +0009F89B: mov eax, 1 +0009F8A0: jmp short loc_9F8A7 +0009F8A2: mov eax, 0 +0009F8A7: test al, al +0009F8A9: jz loc_9F9CC +0009F8AF: lea rax, [rbp+var_71] +0009F8B3: mov rdi, rax +0009F8B6: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009F8BB: lea rdx, [rbp+var_71] +0009F8BF: lea rax, [rbp+var_80] +0009F8C3: lea rsi, aValue; "value" +0009F8CA: mov rdi, rax +0009F8CD: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009F8D2: lea rax, [rbp+var_90] +0009F8D9: lea rdx, [rbp+var_80] +0009F8DD: mov rsi, [rbp+var_268] +0009F8E4: mov rcx, rdx +0009F8E7: mov edx, 0Fh +0009F8EC: mov rdi, rax +0009F8EF: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +0009F8F4: mov rax, [rbp+var_268] +0009F8FB: lea rdx, [rax+28h] +0009F8FF: lea rax, [rbp+var_70] +0009F903: mov rsi, rdx +0009F906: mov rdi, rax +0009F909: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +0009F90E: lea rax, [rbp+var_C0] +0009F915: lea rcx, [rbp+var_90]; std::string * +0009F91C: lea rdx, [rbp+var_70]; nlohmann::detail::position_t * +0009F920: mov esi, 65h ; 'e'; int +0009F925: mov rdi, rax; this +0009F928: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +0009F92D: mov rax, [rbp+var_268] +0009F934: lea rdx, [rax+28h] +0009F938: lea rax, [rbp+var_50] +0009F93C: mov rsi, rdx +0009F93F: mov rdi, rax +0009F942: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +0009F947: mov rax, [rbp+var_268] +0009F94E: lea rdx, [rax+28h] +0009F952: lea rax, [rbp+var_40] +0009F956: mov rsi, rdx +0009F959: mov rdi, rax +0009F95C: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +0009F961: lea rax, [rbp+var_40] +0009F965: mov rdi, rax +0009F968: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +0009F96D: mov rsi, rax +0009F970: lea rcx, [rbp+var_C0] +0009F977: lea rdx, [rbp+var_50] +0009F97B: lea rax, [rbp+var_260] +0009F982: mov rdi, rax +0009F985: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +0009F98A: lea rax, [rbp+var_50] +0009F98E: mov rdi, rax; this +0009F991: call __ZNSsD1Ev; std::string::~string() +0009F996: lea rax, [rbp+var_C0] +0009F99D: mov rdi, rax; this +0009F9A0: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +0009F9A5: lea rax, [rbp+var_90] +0009F9AC: mov rdi, rax; this +0009F9AF: call __ZNSsD1Ev; std::string::~string() +0009F9B4: lea rax, [rbp+var_80] +0009F9B8: mov rdi, rax; this +0009F9BB: call __ZNSsD1Ev; std::string::~string() +0009F9C0: lea rax, [rbp+var_71] +0009F9C4: mov rdi, rax +0009F9C7: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009F9CC: lea rax, [rbp+var_260] +0009F9D3: mov rdi, rax +0009F9D6: call __ZNK8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv; nlohmann::detail::json_sax_dom_parser>>>::is_errored(void) +0009F9DB: test al, al +0009F9DD: jz short loc_9FA19 +0009F9DF: lea rax, [rbp+var_20] +0009F9E3: mov esi, 9 +0009F9E8: mov rdi, rax +0009F9EB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +0009F9F0: lea rdx, [rbp+var_20] +0009F9F4: mov rax, [rbp+var_278] +0009F9FB: mov rsi, rdx +0009F9FE: mov rdi, rax +0009FA01: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +0009FA06: lea rax, [rbp+var_20] +0009FA0A: mov rdi, rax +0009FA0D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +0009FA12: mov ebx, 0 +0009FA17: jmp short loc_9FA1E +0009FA19: mov ebx, 1 +0009FA1E: lea rax, [rbp+var_260] +0009FA25: mov rdi, rax +0009FA28: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev; nlohmann::detail::json_sax_dom_parser>>>::~json_sax_dom_parser() +0009FA2D: cmp ebx, 1 +0009FA30: jnz loc_9FB52 +0009FA36: nop +0009FA37: jmp loc_9FB52 +0009FA3C: mov rbx, rax +0009FA3F: lea rax, [rbp+var_1A0] +0009FA46: mov rdi, rax +0009FA49: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +0009FA4E: mov rax, rbx +0009FA51: mov rdi, rax; struct _Unwind_Exception * +0009FA54: call __Unwind_Resume +0009FA59: mov rbx, rax +0009FA5C: lea rax, [rbp+var_110] +0009FA63: mov rdi, rax; this +0009FA66: call __ZNSsD1Ev; std::string::~string() +0009FA6B: jmp short loc_9FA70 +0009FA6D: mov rbx, rax +0009FA70: lea rax, [rbp+var_180] +0009FA77: mov rdi, rax; this +0009FA7A: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +0009FA7F: jmp short loc_9FA84 +0009FA81: mov rbx, rax +0009FA84: lea rax, [rbp+var_150] +0009FA8B: mov rdi, rax; this +0009FA8E: call __ZNSsD1Ev; std::string::~string() +0009FA93: jmp short loc_9FA98 +0009FA95: mov rbx, rax +0009FA98: lea rax, [rbp+var_140] +0009FA9F: mov rdi, rax; this +0009FAA2: call __ZNSsD1Ev; std::string::~string() +0009FAA7: jmp short loc_9FAAC +0009FAA9: mov rbx, rax +0009FAAC: lea rax, [rbp+var_131] +0009FAB3: mov rdi, rax +0009FAB6: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009FABB: jmp short loc_9FAC0 +0009FABD: mov rbx, rax +0009FAC0: lea rax, [rbp+var_260] +0009FAC7: mov rdi, rax +0009FACA: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev; nlohmann::detail::json_sax_dom_callback_parser>>>::~json_sax_dom_callback_parser() +0009FACF: mov rax, rbx +0009FAD2: mov rdi, rax; struct _Unwind_Exception * +0009FAD5: call __Unwind_Resume +0009FADA: mov rbx, rax +0009FADD: lea rax, [rbp+var_50] +0009FAE1: mov rdi, rax; this +0009FAE4: call __ZNSsD1Ev; std::string::~string() +0009FAE9: jmp short loc_9FAEE +0009FAEB: mov rbx, rax +0009FAEE: lea rax, [rbp+var_C0] +0009FAF5: mov rdi, rax; this +0009FAF8: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +0009FAFD: jmp short loc_9FB02 +0009FAFF: mov rbx, rax +0009FB02: lea rax, [rbp+var_90] +0009FB09: mov rdi, rax; this +0009FB0C: call __ZNSsD1Ev; std::string::~string() +0009FB11: jmp short loc_9FB16 +0009FB13: mov rbx, rax +0009FB16: lea rax, [rbp+var_80] +0009FB1A: mov rdi, rax; this +0009FB1D: call __ZNSsD1Ev; std::string::~string() +0009FB22: jmp short loc_9FB27 +0009FB24: mov rbx, rax +0009FB27: lea rax, [rbp+var_71] +0009FB2B: mov rdi, rax +0009FB2E: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009FB33: jmp short loc_9FB38 +0009FB35: mov rbx, rax +0009FB38: lea rax, [rbp+var_260] +0009FB3F: mov rdi, rax +0009FB42: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEED2Ev; nlohmann::detail::json_sax_dom_parser>>>::~json_sax_dom_parser() +0009FB47: mov rax, rbx +0009FB4A: mov rdi, rax; struct _Unwind_Exception * +0009FB4D: call __Unwind_Resume +0009FB52: add rsp, 278h +0009FB59: pop rbx +0009FB5A: pop rbp +0009FB5B: retn + +### FUNC 0009FB5C - 0009FB72 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7is_nullEv +0009FB5C: push rbp +0009FB5D: mov rbp, rsp +0009FB60: mov [rbp+var_8], rdi +0009FB64: mov rax, [rbp+var_8] +0009FB68: movzx eax, byte ptr [rax] +0009FB6B: test al, al +0009FB6D: setz al +0009FB70: pop rbp +0009FB71: retn + +### FUNC 0009FB72 - 0009FD1E (428 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ENS_6detail7value_tE +0009FB72: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(nlohmann::detail::value_t)' +0009FB73: mov rbp, rsp +0009FB76: push r12 +0009FB78: push rbx +0009FB79: sub rsp, 20h +0009FB7D: mov [rbp+var_28], rdi +0009FB81: mov eax, esi +0009FB83: mov [rbp+var_2C], al +0009FB86: cmp [rbp+var_2C], 8; switch 9 cases +0009FB8A: ja def_9FBB3; jumptable 000000000009FBB3 default case +0009FB90: movzx eax, [rbp+var_2C] +0009FB94: lea rdx, ds:0[rax*4] +0009FB9C: lea rax, jpt_9FBB3 +0009FBA3: mov eax, ds:(jpt_9FBB3 - 0D3A5Ch)[rdx+rax] +0009FBA6: movsxd rdx, eax +0009FBA9: lea rax, jpt_9FBB3 +0009FBB0: add rax, rdx +0009FBB3: jmp rax; switch jump +0009FBB5: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJEEEPT_DpOT0_; jumptable 000000000009FBB3 case 1 +0009FBBA: mov rdx, [rbp+var_28] +0009FBBE: mov [rdx], rax +0009FBC1: jmp loc_9FD15 +0009FBC6: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJEEEPT_DpOT0_; jumptable 000000000009FBB3 case 2 +0009FBCB: mov rdx, [rbp+var_28] +0009FBCF: mov [rdx], rax +0009FBD2: jmp loc_9FD15 +0009FBD7: lea rdi, unk_CE84D; jumptable 000000000009FBB3 case 3 +0009FBDE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_; nlohmann::basic_json>>::create(char const(&)[1] &&) +0009FBE3: mov rdx, [rbp+var_28] +0009FBE7: mov [rdx], rax +0009FBEA: jmp loc_9FD15 +0009FBEF: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJEEEPT_DpOT0_; jumptable 000000000009FBB3 case 8 +0009FBF4: mov rdx, [rbp+var_28] +0009FBF8: mov [rdx], rax +0009FBFB: jmp loc_9FD15 +0009FC00: mov rax, [rbp+var_28]; jumptable 000000000009FBB3 case 4 +0009FC04: mov byte ptr [rax], 0 +0009FC07: jmp loc_9FD15 +0009FC0C: mov rax, [rbp+var_28]; jumptable 000000000009FBB3 case 5 +0009FC10: mov qword ptr [rax], 0 +0009FC17: jmp loc_9FD15 +0009FC1C: mov rax, [rbp+var_28]; jumptable 000000000009FBB3 case 6 +0009FC20: mov qword ptr [rax], 0 +0009FC27: jmp loc_9FD15 +0009FC2C: mov rdx, [rbp+var_28]; jumptable 000000000009FBB3 case 7 +0009FC30: mov eax, 0 +0009FC35: mov [rdx], rax +0009FC38: jmp loc_9FD15 +0009FC3D: mov rax, [rbp+var_28]; jumptable 000000000009FBB3 case 0 +0009FC41: mov qword ptr [rax], 0 +0009FC48: jmp loc_9FD15 +0009FC4D: mov rax, [rbp+var_28]; jumptable 000000000009FBB3 default case +0009FC51: mov qword ptr [rax], 0 +0009FC58: cmp [rbp+var_2C], 0 +0009FC5C: setz al +0009FC5F: movzx eax, al +0009FC62: test rax, rax +0009FC65: jz short loc_9FCDF +0009FC67: mov edi, 20h ; ' '; thrown_size +0009FC6C: call ___cxa_allocate_exception +0009FC71: mov rbx, rax +0009FC74: lea rax, [rbp+var_11] +0009FC78: mov rdi, rax +0009FC7B: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +0009FC80: lea rdx, [rbp+var_11] +0009FC84: lea rax, [rbp+var_20] +0009FC88: lea rsi, a961c151d2e87f2; "961c151d2e87f2686a955a9be24d316f1362bf2"... +0009FC8F: mov rdi, rax +0009FC92: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +0009FC97: lea rax, [rbp+var_20] +0009FC9B: mov rdx, rax; std::string * +0009FC9E: mov esi, 1F4h; int +0009FCA3: mov rdi, rbx; this +0009FCA6: call __ZN8nlohmann6detail11other_error6createEiRKSs; nlohmann::detail::other_error::create(int,std::string const&) +0009FCAB: lea rax, [rbp+var_20] +0009FCAF: mov rdi, rax; this +0009FCB2: call __ZNSsD1Ev; std::string::~string() +0009FCB7: lea rax, [rbp+var_11] +0009FCBB: mov rdi, rax +0009FCBE: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009FCC3: mov rax, cs:_ZN8nlohmann6detail11other_errorD2Ev_ptr +0009FCCA: mov rdx, rax; void (__fastcall *)(void *) +0009FCCD: mov rax, cs:_ZTIN8nlohmann6detail11other_errorE_ptr +0009FCD4: mov rsi, rax; lptinfo +0009FCD7: mov rdi, rbx; void * +0009FCDA: call ___cxa_throw +0009FCDF: nop +0009FCE0: jmp short loc_9FD15 +0009FCE2: mov r12, rax +0009FCE5: lea rax, [rbp+var_20] +0009FCE9: mov rdi, rax; this +0009FCEC: call __ZNSsD1Ev; std::string::~string() +0009FCF1: jmp short loc_9FCF6 +0009FCF3: mov r12, rax +0009FCF6: lea rax, [rbp+var_11] +0009FCFA: mov rdi, rax +0009FCFD: call __ZNSaIcED1Ev; std::allocator::~allocator() +0009FD02: mov rdi, rbx; void * +0009FD05: call ___cxa_free_exception +0009FD0A: mov rax, r12 +0009FD0D: mov rdi, rax; struct _Unwind_Exception * +0009FD10: call __Unwind_Resume +0009FD15: add rsp, 20h +0009FD19: pop rbx +0009FD1A: pop r12 +0009FD1C: pop rbp +0009FD1D: retn + +### FUNC 0009FD1E - 0009FE50 (306 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixEOSs +0009FD1E: push rbp +0009FD1F: mov rbp, rsp +0009FD22: push r13 +0009FD24: push r12 +0009FD26: push rbx +0009FD27: sub rsp, 58h +0009FD2B: mov [rbp+var_68], rdi +0009FD2F: mov [rbp+var_70], rsi +0009FD33: mov rdx, [rbp+var_70] +0009FD37: mov rax, [rbp+var_68] +0009FD3B: mov rsi, rdx +0009FD3E: mov rdi, rax +0009FD41: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE11lower_boundERSA_; std::map>>,std::less,std::allocator>>>>>::lower_bound(std::string const&) +0009FD46: mov [rbp+var_60], rax +0009FD4A: mov ebx, 0 +0009FD4F: mov rax, [rbp+var_68] +0009FD53: mov rdi, rax +0009FD56: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv; std::map>>,std::less,std::allocator>>>>>::end(void) +0009FD5B: mov [rbp+var_50], rax +0009FD5F: mov r12d, 1 +0009FD65: lea rdx, [rbp+var_50] +0009FD69: lea rax, [rbp+var_60] +0009FD6D: mov rsi, rdx +0009FD70: mov rdi, rax +0009FD73: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_; std::_Rb_tree_iterator>>>>::operator==(std::_Rb_tree_iterator>>>> const&) +0009FD78: test al, al +0009FD7A: jnz short loc_9FDB6 +0009FD7C: lea rax, [rbp+var_60] +0009FD80: mov rdi, rax +0009FD83: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv; std::_Rb_tree_iterator>>>>::operator*(void) +0009FD88: mov r13, rax +0009FD8B: mov rax, [rbp+var_68] +0009FD8F: mov rdi, rax +0009FD92: call __ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8key_compEv; std::map>>,std::less,std::allocator>>>>>::key_comp(void) +0009FD97: mov ebx, 1 +0009FD9C: mov rcx, [rbp+var_70] +0009FDA0: lea rax, [rbp+var_42] +0009FDA4: mov rdx, r13 +0009FDA7: mov rsi, rcx +0009FDAA: mov rdi, rax +0009FDAD: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +0009FDB2: test al, al +0009FDB4: jz short loc_9FDBD +0009FDB6: mov eax, 1 +0009FDBB: jmp short loc_9FDC2 +0009FDBD: mov eax, 0 +0009FDC2: test bl, bl +0009FDC4: test r12b, r12b +0009FDC7: test al, al +0009FDC9: jz short loc_9FE25 +0009FDCB: mov rax, [rbp+var_70] +0009FDCF: mov rdi, rax +0009FDD2: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +0009FDD7: mov rdx, rax +0009FDDA: lea rax, [rbp+var_40] +0009FDDE: mov rsi, rdx +0009FDE1: mov rdi, rax +0009FDE4: call __ZSt16forward_as_tupleIJSsEESt5tupleIJDpOT_EES3_; std::forward_as_tuple(std::string &&) +0009FDE9: lea rdx, [rbp+var_60] +0009FDED: lea rax, [rbp+var_30] +0009FDF1: mov rsi, rdx +0009FDF4: mov rdi, rax +0009FDF7: call __ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E; std::_Rb_tree_const_iterator>>>>::_Rb_tree_const_iterator(std::_Rb_tree_iterator>>>> const&) +0009FDFC: mov rax, [rbp+var_68] +0009FE00: lea rcx, [rbp+var_41] +0009FE04: lea rdx, [rbp+var_40] +0009FE08: mov rsi, [rbp+var_30] +0009FE0C: mov r8, rcx +0009FE0F: mov rcx, rdx +0009FE12: lea rdx, _ZStL19piecewise_construct_1; std::piecewise_construct +0009FE19: mov rdi, rax +0009FE1C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_emplace_hint_unique,std::tuple<>>(std::_Rb_tree_const_iterator>>>>) +0009FE21: mov [rbp+var_60], rax +0009FE25: lea rax, [rbp+var_60] +0009FE29: mov rdi, rax +0009FE2C: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv; std::_Rb_tree_iterator>>>>::operator*(void) +0009FE31: add rax, 8 +0009FE35: jmp short loc_9FE45 +0009FE37: test bl, bl +0009FE39: test r12b, r12b +0009FE3C: nop +0009FE3D: mov rdi, rax; struct _Unwind_Exception * +0009FE40: call __Unwind_Resume +0009FE45: add rsp, 58h +0009FE49: pop rbx +0009FE4A: pop r12 +0009FE4C: pop r13 +0009FE4E: pop rbp +0009FE4F: retn + +### FUNC 0009FE50 - 0009FECF (127 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv +0009FE50: push rbp +0009FE51: mov rbp, rsp +0009FE54: mov [rbp+var_8], rdi +0009FE58: mov rax, [rbp+var_8] +0009FE5C: movzx eax, byte ptr [rax] +0009FE5F: cmp al, 9; switch 10 cases +0009FE61: ja short def_9FE85; jumptable 000000000009FE85 default case, cases 5-7 +0009FE63: movzx eax, al +0009FE66: lea rdx, ds:0[rax*4] +0009FE6E: lea rax, jpt_9FE85 +0009FE75: mov eax, ds:(jpt_9FE85 - 0D3A80h)[rdx+rax] +0009FE78: movsxd rdx, eax +0009FE7B: lea rax, jpt_9FE85 +0009FE82: add rax, rdx +0009FE85: jmp rax; switch jump +0009FE87: lea rax, aNull; jumptable 000000000009FE85 case 0 +0009FE8E: jmp short loc_9FECD +0009FE90: lea rax, aObject; jumptable 000000000009FE85 case 1 +0009FE97: jmp short loc_9FECD +0009FE99: lea rax, aArray; jumptable 000000000009FE85 case 2 +0009FEA0: jmp short loc_9FECD +0009FEA2: lea rax, aString; jumptable 000000000009FE85 case 3 +0009FEA9: jmp short loc_9FECD +0009FEAB: lea rax, aBoolean; jumptable 000000000009FE85 case 4 +0009FEB2: jmp short loc_9FECD +0009FEB4: lea rax, aBinary; jumptable 000000000009FE85 case 8 +0009FEBB: jmp short loc_9FECD +0009FEBD: lea rax, aDiscarded; jumptable 000000000009FE85 case 9 +0009FEC4: jmp short loc_9FECD +0009FEC6: lea rax, aNumber; jumptable 000000000009FE85 default case, cases 5-7 +0009FECD: pop rbp +0009FECE: retn + +### FUNC 0009FED0 - 0009FEF5 (37 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEE +0009FED0: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(std::map const&>>, std::less, std::allocator>>>>>)' +0009FED1: mov rbp, rsp +0009FED4: sub rsp, 10h +0009FED8: mov [rbp+var_8], rdi +0009FEDC: mov [rbp+var_10], rsi +0009FEE0: mov rax, [rbp+var_10] +0009FEE4: mov rdi, rax +0009FEE7: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJRKSE_EEEPT_DpOT0_; nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&) +0009FEEC: mov rdx, [rbp+var_8] +0009FEF0: mov [rdx], rax +0009FEF3: leave +0009FEF4: retn + +### FUNC 0009FEF6 - 0009FF1B (37 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKS2_IS6_SaIS6_EE +0009FEF6: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(std::vector const&>>, std::allocator>>>>)' +0009FEF7: mov rbp, rsp +0009FEFA: sub rsp, 10h +0009FEFE: mov [rbp+var_8], rdi +0009FF02: mov [rbp+var_10], rsi +0009FF06: mov rax, [rbp+var_10] +0009FF0A: mov rdi, rax +0009FF0D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJRKS9_EEEPT_DpOT0_; nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&) +0009FF12: mov rdx, [rbp+var_8] +0009FF16: mov [rdx], rax +0009FF19: leave +0009FF1A: retn + +### FUNC 0009FF1C - 0009FF41 (37 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKSs +0009FF1C: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(std::string const&)' +0009FF1D: mov rbp, rsp +0009FF20: sub rsp, 10h +0009FF24: mov [rbp+var_8], rdi +0009FF28: mov [rbp+var_10], rsi +0009FF2C: mov rax, [rbp+var_10] +0009FF30: mov rdi, rax +0009FF33: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_; nlohmann::basic_json>>::create(std::string const&) +0009FF38: mov rdx, [rbp+var_8] +0009FF3C: mov [rdx], rax +0009FF3F: leave +0009FF40: retn + +### FUNC 0009FF42 - 0009FF5B (25 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Eb +0009FF42: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(bool)' +0009FF43: mov rbp, rsp +0009FF46: mov [rbp+var_8], rdi +0009FF4A: mov eax, esi +0009FF4C: mov [rbp+var_C], al +0009FF4F: mov rax, [rbp+var_8] +0009FF53: movzx edx, [rbp+var_C] +0009FF57: mov [rax], dl +0009FF59: pop rbp +0009FF5A: retn + +### FUNC 0009FF5C - 0009FF75 (25 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2El +0009FF5C: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(long)' +0009FF5D: mov rbp, rsp +0009FF60: mov [rbp+var_8], rdi +0009FF64: mov [rbp+var_10], rsi +0009FF68: mov rax, [rbp+var_8] +0009FF6C: mov rdx, [rbp+var_10] +0009FF70: mov [rax], rdx +0009FF73: pop rbp +0009FF74: retn + +### FUNC 0009FF76 - 0009FF8F (25 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Em +0009FF76: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(unsigned long)' +0009FF77: mov rbp, rsp +0009FF7A: mov [rbp+var_8], rdi +0009FF7E: mov [rbp+var_10], rsi +0009FF82: mov rax, [rbp+var_8] +0009FF86: mov rdx, [rbp+var_10] +0009FF8A: mov [rax], rdx +0009FF8D: pop rbp +0009FF8E: retn + +### FUNC 0009FF90 - 0009FFAA (26 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Ed +0009FF90: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(double)' +0009FF91: mov rbp, rsp +0009FF94: mov [rbp+var_8], rdi +0009FF98: movsd [rbp+var_10], xmm0 +0009FF9D: mov rdx, [rbp+var_8] +0009FFA1: mov rax, [rbp+var_10] +0009FFA5: mov [rdx], rax +0009FFA8: pop rbp +0009FFA9: retn + +### FUNC 0009FFAA - 0009FFCF (37 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKNS_27byte_container_with_subtypeIS5_EE +0009FFAA: push rbp; Alternative name is 'nlohmann::basic_json>>::json_value::json_value(nlohmann::byte_container_with_subtype>> const&)' +0009FFAB: mov rbp, rsp +0009FFAE: sub rsp, 10h +0009FFB2: mov [rbp+var_8], rdi +0009FFB6: mov [rbp+var_10], rsi +0009FFBA: mov rax, [rbp+var_10] +0009FFBE: mov rdi, rax +0009FFC1: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJRKS9_EEEPT_DpOT0_; nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&) +0009FFC6: mov rdx, [rbp+var_8] +0009FFCA: mov [rdx], rax +0009FFCD: leave +0009FFCE: retn + +### FUNC 0009FFD0 - 0009FFE9 (25 bytes) name=_ZN8nlohmann6detail15iteration_proxyINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ERS9_ +0009FFD0: push rbp; Alternative name is 'nlohmann::detail::iteration_proxy>>>>::iteration_proxy(nlohmann::basic_json>>&)' +0009FFD1: mov rbp, rsp +0009FFD4: mov [rbp+var_8], rdi +0009FFD8: mov [rbp+var_10], rsi +0009FFDC: mov rax, [rbp+var_8] +0009FFE0: mov rdx, [rbp+var_10] +0009FFE4: mov [rax], rdx +0009FFE7: pop rbp +0009FFE8: retn + +### FUNC 0009FFEA - 000A0020 (54 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5beginEv +0009FFEA: push rbp +0009FFEB: mov rbp, rsp +0009FFEE: sub rsp, 10h +0009FFF2: mov [rbp+var_8], rdi +0009FFF6: mov [rbp+var_10], rsi +0009FFFA: mov rdx, [rbp+var_10] +0009FFFE: mov rax, [rbp+var_8] +000A0002: mov rsi, rdx +000A0005: mov rdi, rax +000A0008: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2EPS8_; nlohmann::detail::iter_impl>>>::iter_impl(nlohmann::basic_json>>*) +000A000D: mov rax, [rbp+var_8] +000A0011: mov rdi, rax +000A0014: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9set_beginEv; nlohmann::detail::iter_impl>>>::set_begin(void) +000A0019: nop +000A001A: mov rax, [rbp+var_8] +000A001E: leave +000A001F: retn + +### FUNC 000A0020 - 000A00C9 (169 bytes) name=_ZN8nlohmann6detail21iteration_proxy_valueINS0_9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEEEEC2ESA_ +000A0020: push rbp; Alternative name is 'nlohmann::detail::iteration_proxy_value>>>>::iteration_proxy_value(nlohmann::detail::iter_impl>>>)' +000A0021: mov rbp, rsp +000A0024: sub rsp, 20h +000A0028: mov [rbp+var_18], rdi +000A002C: mov [rbp+var_20], rsi +000A0030: mov rax, [rbp+var_18] +000A0034: mov rdx, [rbp+var_20] +000A0038: mov rsi, rdx +000A003B: mov rdi, rax +000A003E: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_; nlohmann::detail::iter_impl>>>::iter_impl(nlohmann::detail::iter_impl>>> const&) +000A0043: mov rax, [rbp+var_18] +000A0047: mov qword ptr [rax+20h], 0 +000A004F: mov rax, [rbp+var_18] +000A0053: mov qword ptr [rax+28h], 0 +000A005B: lea rax, [rbp+var_2] +000A005F: mov rdi, rax +000A0062: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A0067: mov rax, [rbp+var_18] +000A006B: lea rcx, [rax+30h] +000A006F: lea rax, [rbp+var_2] +000A0073: mov rdx, rax +000A0076: lea rsi, a0; "0" +000A007D: mov rdi, rcx +000A0080: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A0085: lea rax, [rbp+var_2] +000A0089: mov rdi, rax +000A008C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A0091: lea rax, [rbp+var_1] +000A0095: mov rdi, rax +000A0098: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A009D: mov rax, [rbp+var_18] +000A00A1: lea rcx, [rax+38h] +000A00A5: lea rax, [rbp+var_1] +000A00A9: mov rdx, rax +000A00AC: lea rsi, unk_CE84D +000A00B3: mov rdi, rcx +000A00B6: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A00BB: lea rax, [rbp+var_1] +000A00BF: mov rdi, rax +000A00C2: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A00C7: leave +000A00C8: retn + +### FUNC 000A00CA - 000A0100 (54 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv +000A00CA: push rbp +000A00CB: mov rbp, rsp +000A00CE: sub rsp, 10h +000A00D2: mov [rbp+var_8], rdi +000A00D6: mov [rbp+var_10], rsi +000A00DA: mov rdx, [rbp+var_10] +000A00DE: mov rax, [rbp+var_8] +000A00E2: mov rsi, rdx +000A00E5: mov rdi, rax +000A00E8: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2EPS8_; nlohmann::detail::iter_impl>>>::iter_impl(nlohmann::basic_json>>*) +000A00ED: mov rax, [rbp+var_8] +000A00F1: mov rdi, rax +000A00F4: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7set_endEv; nlohmann::detail::iter_impl>>>::set_end(void) +000A00F9: nop +000A00FA: mov rax, [rbp+var_8] +000A00FE: leave +000A00FF: retn + +### FUNC 000A0100 - 000A0128 (40 bytes) name=_ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEneERKS9_ +000A0100: push rbp +000A0101: mov rbp, rsp +000A0104: sub rsp, 10h +000A0108: mov [rbp+var_8], rdi +000A010C: mov [rbp+var_10], rsi +000A0110: mov rdx, [rbp+var_10] +000A0114: mov rax, [rbp+var_8] +000A0118: mov rsi, rdx +000A011B: mov rdi, rax +000A011E: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEeqERKS9_; nlohmann::detail::iter_impl>>>::operator==(nlohmann::detail::iter_impl>>> const&) +000A0123: xor eax, 1 +000A0126: leave +000A0127: retn + +### FUNC 000A0128 - 000A01B8 (144 bytes) name=_ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv +000A0128: push rbp +000A0129: mov rbp, rsp +000A012C: sub rsp, 10h +000A0130: mov [rbp+var_8], rdi +000A0134: mov rax, [rbp+var_8] +000A0138: mov rax, [rax] +000A013B: test rax, rax +000A013E: jnz short loc_A015F +000A0140: lea rcx, _ZZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_impl>>>>,int>(std::_Rb_tree_iterator>>>> &,int) +000A0188: jmp short loc_A01B2 +000A018A: mov rax, [rbp+var_8] +000A018E: add rax, 10h +000A0192: mov esi, 1 +000A0197: mov rdi, rax +000A019A: call __ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEiEvRT_T0_; std::advance<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,int>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> &,int) +000A019F: jmp short loc_A01B2 +000A01A1: mov rax, [rbp+var_8] +000A01A5: add rax, 18h +000A01A9: mov rdi, rax +000A01AC: call __ZN8nlohmann6detail20primitive_iterator_tppEv; nlohmann::detail::primitive_iterator_t::operator++(void) +000A01B1: nop +000A01B2: mov rax, [rbp+var_8] +000A01B6: leave +000A01B7: retn + +### FUNC 000A01B8 - 000A021E (102 bytes) name=_ZN8nlohmann6detail13int_to_stringISsEEvRT_m +000A01B8: push rbp +000A01B9: mov rbp, rsp +000A01BC: push rbx +000A01BD: sub rsp, 28h +000A01C1: mov [rbp+var_28], rdi +000A01C5: mov [rbp+var_30], rsi +000A01C9: lea rax, [rbp+var_20] +000A01CD: mov rdx, [rbp+var_30] +000A01D1: mov rsi, rdx +000A01D4: mov rdi, rax; unsigned __int64 +000A01D7: call __ZSt9to_stringm; std::to_string(ulong) +000A01DC: lea rdx, [rbp+var_20] +000A01E0: mov rax, [rbp+var_28] +000A01E4: mov rsi, rdx +000A01E7: mov rdi, rax +000A01EA: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000A01EF: lea rax, [rbp+var_20] +000A01F3: mov rdi, rax; this +000A01F6: call __ZNSsD1Ev; std::string::~string() +000A01FB: jmp short loc_A0217 +000A01FD: mov rbx, rax +000A0200: lea rax, [rbp+var_20] +000A0204: mov rdi, rax; this +000A0207: call __ZNSsD1Ev; std::string::~string() +000A020C: mov rax, rbx +000A020F: mov rdi, rax; struct _Unwind_Exception * +000A0212: call __Unwind_Resume +000A0217: add rsp, 28h +000A021B: pop rbx +000A021C: pop rbp +000A021D: retn + +### FUNC 000A021E - 000A033D (287 bytes) name=_ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyEv +000A021E: push rbp +000A021F: mov rbp, rsp +000A0222: push r12 +000A0224: push rbx +000A0225: sub rsp, 20h +000A0229: mov [rbp+var_28], rdi +000A022D: mov rax, [rbp+var_28] +000A0231: mov rax, [rax] +000A0234: test rax, rax +000A0237: jnz short loc_A0258 +000A0239: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyEvE19__PRETTY_FUNCTION__; "const typename BasicJsonType::object_t:"... +000A0240: mov edx, 2C74h; line +000A0245: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000A024C: lea rdi, aMObjectNullptr; "m_object != nullptr" +000A0253: call ___assert_fail +000A0258: mov rax, [rbp+var_28] +000A025C: mov rax, [rax] +000A025F: mov rdi, rax +000A0262: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000A0267: movzx eax, al +000A026A: test rax, rax +000A026D: setnz al +000A0270: test al, al +000A0272: jz short loc_A0289 +000A0274: mov rax, [rbp+var_28] +000A0278: add rax, 8 +000A027C: mov rdi, rax +000A027F: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv; std::_Rb_tree_iterator>>>>::operator->(void) +000A0284: jmp loc_A0334 +000A0289: mov edi, 20h ; ' '; thrown_size +000A028E: call ___cxa_allocate_exception +000A0293: mov rbx, rax +000A0296: lea rax, [rbp+var_11] +000A029A: mov rdi, rax +000A029D: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A02A2: lea rdx, [rbp+var_11] +000A02A6: lea rax, [rbp+var_20] +000A02AA: lea rsi, aCannotUseKeyFo; "cannot use key() for non-object iterato"... +000A02B1: mov rdi, rax +000A02B4: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A02B9: lea rax, [rbp+var_20] +000A02BD: mov rdx, rax; std::string * +000A02C0: mov esi, 0CFh; int +000A02C5: mov rdi, rbx; this +000A02C8: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000A02CD: lea rax, [rbp+var_20] +000A02D1: mov rdi, rax; this +000A02D4: call __ZNSsD1Ev; std::string::~string() +000A02D9: lea rax, [rbp+var_11] +000A02DD: mov rdi, rax +000A02E0: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A02E5: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000A02EC: mov rdx, rax; void (__fastcall *)(void *) +000A02EF: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000A02F6: mov rsi, rax; lptinfo +000A02F9: mov rdi, rbx; void * +000A02FC: call ___cxa_throw +000A0301: mov r12, rax +000A0304: lea rax, [rbp+var_20] +000A0308: mov rdi, rax; this +000A030B: call __ZNSsD1Ev; std::string::~string() +000A0310: jmp short loc_A0315 +000A0312: mov r12, rax +000A0315: lea rax, [rbp+var_11] +000A0319: mov rdi, rax +000A031C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A0321: mov rdi, rbx; void * +000A0324: call ___cxa_free_exception +000A0329: mov rax, r12 +000A032C: mov rdi, rax; struct _Unwind_Exception * +000A032F: call __Unwind_Resume +000A0334: add rsp, 20h +000A0338: pop rbx +000A0339: pop r12 +000A033B: pop rbp +000A033C: retn + +### FUNC 000A033E - 000A0358 (26 bytes) name=_ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE5valueEv +000A033E: push rbp +000A033F: mov rbp, rsp +000A0342: sub rsp, 10h +000A0346: mov [rbp+var_8], rdi +000A034A: mov rax, [rbp+var_8] +000A034E: mov rdi, rax +000A0351: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEv; nlohmann::detail::iter_impl>>>::operator*(void) +000A0356: leave +000A0357: retn + +### FUNC 000A0358 - 000A038F (55 bytes) name=_ZN8nlohmann14adl_serializerISsvE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEESsEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +000A0358: push rbp +000A0359: mov rbp, rsp +000A035C: sub rsp, 10h +000A0360: mov [rbp+var_8], rdi +000A0364: mov [rbp+var_10], rsi +000A0368: mov rax, [rbp+var_8] +000A036C: mov rdi, rax +000A036F: call __ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000A0374: mov rcx, rax +000A0377: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_12from_json_fnEE5valueE_ptr +000A037E: mov rdx, [rbp+var_10] +000A0382: mov rsi, rcx +000A0385: mov rdi, rax +000A0388: call __ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEESsEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +000A038D: leave +000A038E: retn + +### FUNC 000A038F - 000A03C6 (55 bytes) name=_ZN8nlohmann14adl_serializerIivE9from_jsonIRKNS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEEiEEDTcmclL_ZNS_12_GLOBAL__N_19from_jsonEEcl7forwardIT_Efp_Efp0_Ecvv_EEOSC_RT0_ +000A038F: push rbp +000A0390: mov rbp, rsp +000A0393: sub rsp, 10h +000A0397: mov [rbp+var_8], rdi +000A039B: mov [rbp+var_10], rsi +000A039F: mov rax, [rbp+var_8] +000A03A3: mov rdi, rax +000A03A6: call __ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000A03AB: mov rcx, rax +000A03AE: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_12from_json_fnEE5valueE_ptr +000A03B5: mov rdx, [rbp+var_10] +000A03B9: mov rsi, rcx +000A03BC: mov rdi, rax +000A03BF: call __ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEiEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +000A03C4: leave +000A03C5: retn + +### FUNC 000A03C6 - 000A03D0 (10 bytes) name=_ZNSt11_Tuple_implILm1EJEEC2Ev +000A03C6: push rbp; Alternative name is 'std::_Tuple_impl<1ul>::_Tuple_impl(void)' +000A03C7: mov rbp, rsp +000A03CA: mov [rbp+var_8], rdi +000A03CE: pop rbp +000A03CF: retn + +### FUNC 000A03D0 - 000A03E9 (25 bytes) name=_ZNSt10_Head_baseILm0ERKSsLb0EEC2ES1_ +000A03D0: push rbp; Alternative name is 'std::_Head_base<0ul, std::string const&, false>::_Head_base(std::string const&)' +000A03D1: mov rbp, rsp +000A03D4: mov [rbp+var_8], rdi +000A03D8: mov [rbp+var_10], rsi +000A03DC: mov rax, [rbp+var_8] +000A03E0: mov rdx, [rbp+var_10] +000A03E4: mov [rax], rdx +000A03E7: pop rbp +000A03E8: retn + +### FUNC 000A03EA - 000A041B (49 bytes) name=_ZNSt11_Tuple_implILm0EJRKSsEEC2ES1_ +000A03EA: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string const&>::_Tuple_impl(std::string const&)' +000A03EB: mov rbp, rsp +000A03EE: sub rsp, 10h +000A03F2: mov [rbp+var_8], rdi +000A03F6: mov [rbp+var_10], rsi +000A03FA: mov rax, [rbp+var_8] +000A03FE: mov rdi, rax +000A0401: call __ZNSt11_Tuple_implILm1EJEEC2Ev; std::_Tuple_impl<1ul>::_Tuple_impl(void) +000A0406: mov rax, [rbp+var_8] +000A040A: mov rdx, [rbp+var_10] +000A040E: mov rsi, rdx +000A0411: mov rdi, rax +000A0414: call __ZNSt10_Head_baseILm0ERKSsLb0EEC2ES1_; std::_Head_base<0ul,std::string const&,false>::_Head_base(std::string const&) +000A0419: leave +000A041A: retn + +### FUNC 000A041C - 000A0441 (37 bytes) name=_ZNSt5tupleIJRKSsEEC2ES1_ +000A041C: push rbp; Alternative name is 'std::tuple::tuple(std::string const&)' +000A041D: mov rbp, rsp +000A0420: sub rsp, 10h +000A0424: mov [rbp+var_8], rdi +000A0428: mov [rbp+var_10], rsi +000A042C: mov rax, [rbp+var_8] +000A0430: mov rdx, [rbp+var_10] +000A0434: mov rsi, rdx +000A0437: mov rdi, rax +000A043A: call __ZNSt11_Tuple_implILm0EJRKSsEEC2ES1_; std::_Tuple_impl<0ul,std::string const&>::_Tuple_impl(std::string const&) +000A043F: leave +000A0440: retn + +### FUNC 000A0442 - 000A0519 (215 bytes) name=_ZNSt8__detail9_Map_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS2_ +000A0442: push rbp +000A0443: mov rbp, rsp +000A0446: sub rsp, 60h +000A044A: mov [rbp+var_58], rdi +000A044E: mov [rbp+var_60], rsi +000A0452: mov rax, [rbp+var_58] +000A0456: mov [rbp+var_8], rax +000A045A: mov rdx, [rbp+var_60] +000A045E: mov rax, [rbp+var_8] +000A0462: mov rsi, rdx +000A0465: mov rdi, rax +000A0468: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS2_; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_hash_code(std::string const&) +000A046D: mov [rbp+var_10], rax +000A0471: mov rdx, [rbp+var_10] +000A0475: mov rcx, [rbp+var_60] +000A0479: mov rax, [rbp+var_8] +000A047D: mov rsi, rcx +000A0480: mov rdi, rax +000A0483: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_bucket_index(std::string const&,ulong) +000A0488: mov [rbp+var_18], rax +000A048C: mov rcx, [rbp+var_10] +000A0490: mov rdx, [rbp+var_60] +000A0494: mov rsi, [rbp+var_18] +000A0498: mov rax, [rbp+var_8] +000A049C: mov rdi, rax +000A049F: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE12_M_find_nodeEmRS1_m; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_find_node(ulong,std::string const&,ulong) +000A04A4: mov [rbp+var_20], rax +000A04A8: cmp [rbp+var_20], 0 +000A04AD: jnz short loc_A050F +000A04AF: mov rdx, [rbp+var_60] +000A04B3: lea rax, [rbp+var_40] +000A04B7: mov rsi, rdx +000A04BA: mov rdi, rax +000A04BD: call __ZNSt5tupleIJRKSsEEC2ES1_; std::tuple::tuple(std::string const&) +000A04C2: lea rcx, [rbp+var_41] +000A04C6: lea rdx, [rbp+var_40] +000A04CA: mov rax, [rbp+var_8] +000A04CE: lea rsi, _ZStL19piecewise_construct_1; std::piecewise_construct +000A04D5: mov rdi, rax +000A04D8: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESK_IJEEEEEPNS4_10_Hash_nodeIS2_Lb1EEEDpOT_; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_allocate_node,std::tuple<>>() +000A04DD: mov [rbp+var_20], rax +000A04E1: mov rcx, [rbp+var_20] +000A04E5: mov rdx, [rbp+var_10] +000A04E9: mov rsi, [rbp+var_18] +000A04ED: mov rax, [rbp+var_8] +000A04F1: mov rdi, rax +000A04F4: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_insert_unique_node(ulong,ulong,std::__detail::_Hash_node,true> *) +000A04F9: mov [rbp+var_30], rax +000A04FD: lea rax, [rbp+var_30] +000A0501: mov rdi, rax +000A0504: call __ZNKSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEptEv; std::__detail::_Node_iterator,false,true>::operator->(void) +000A0509: add rax, 8 +000A050D: jmp short locret_A0517 +000A050F: mov rax, [rbp+var_20] +000A0513: add rax, 10h +000A0517: leave +000A0518: retn + +### FUNC 000A051A - 000A0534 (26 bytes) name=_ZNSt12_Vector_baseIiSaIiEEC2Ev +000A051A: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(void)' +000A051B: mov rbp, rsp +000A051E: sub rsp, 10h +000A0522: mov [rbp+var_8], rdi +000A0526: mov rax, [rbp+var_8] +000A052A: mov rdi, rax +000A052D: call __ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev; std::_Vector_base>::_Vector_impl::_Vector_impl(void) +000A0532: leave +000A0533: retn + +### FUNC 000A0534 - 000A056C (56 bytes) name=_ZNSt16allocator_traitsISaIiEE9constructIiJRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000A0534: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIiEE9constructIiIRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_' +000A0535: mov rbp, rsp +000A0538: sub rsp, 20h +000A053C: mov [rbp+var_8], rdi +000A0540: mov [rbp+var_10], rsi +000A0544: mov [rbp+var_18], rdx +000A0548: mov rax, [rbp+var_18] +000A054C: mov rdi, rax +000A054F: call __ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A0554: mov rdx, rax +000A0557: mov rcx, [rbp+var_10] +000A055B: mov rax, [rbp+var_8] +000A055F: mov rsi, rcx +000A0562: mov rdi, rax +000A0565: call __ZNSt16allocator_traitsISaIiEE12_S_constructIiJRKiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_; std::allocator_traits>::_S_construct(std::allocator&,int*,int const&&&) +000A056A: leave +000A056B: retn + +### FUNC 000A056C - 000A0758 (492 bytes) name=_ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJRKiEEEvDpOT_ +000A056C: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(int const&)' +000A056D: mov rbp, rsp +000A0570: push rbx +000A0571: sub rsp, 38h +000A0575: mov [rbp+var_38], rdi +000A0579: mov [rbp+var_40], rsi +000A057D: mov rax, [rbp+var_38] +000A0581: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000A0588: mov esi, 1 +000A058D: mov rdi, rax +000A0590: call __ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000A0595: mov [rbp+var_20], rax +000A0599: mov rax, [rbp+var_38] +000A059D: mov rdx, [rbp+var_20] +000A05A1: mov rsi, rdx +000A05A4: mov rdi, rax +000A05A7: call __ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000A05AC: mov [rbp+var_28], rax +000A05B0: mov rax, [rbp+var_28] +000A05B4: mov [rbp+var_18], rax +000A05B8: mov rax, [rbp+var_40] +000A05BC: mov rdi, rax +000A05BF: call __ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A05C4: mov rbx, rax +000A05C7: mov rax, [rbp+var_38] +000A05CB: mov rdi, rax +000A05CE: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A05D3: lea rdx, ds:0[rax*4] +000A05DB: mov rax, [rbp+var_28] +000A05DF: lea rcx, [rdx+rax] +000A05E3: mov rax, [rbp+var_38] +000A05E7: mov rdx, rbx +000A05EA: mov rsi, rcx +000A05ED: mov rdi, rax +000A05F0: call __ZNSt16allocator_traitsISaIiEE9constructIiJRKiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000A05F5: mov [rbp+var_18], 0 +000A05FD: mov rax, [rbp+var_38] +000A0601: mov rdi, rax +000A0604: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A0609: mov rcx, rax +000A060C: mov rax, [rbp+var_38] +000A0610: mov rsi, [rax+8] +000A0614: mov rax, [rbp+var_38] +000A0618: mov rax, [rax] +000A061B: mov rdx, [rbp+var_28] +000A061F: mov rdi, rax +000A0622: call __ZSt34__uninitialized_move_if_noexcept_aIPiS0_SaIiEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(int *,int *,int *,std::allocator &) +000A0627: mov [rbp+var_18], rax +000A062B: add [rbp+var_18], 4 +000A0630: mov rax, [rbp+var_38] +000A0634: mov rdi, rax +000A0637: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A063C: mov rdx, rax +000A063F: mov rax, [rbp+var_38] +000A0643: mov rcx, [rax+8] +000A0647: mov rax, [rbp+var_38] +000A064B: mov rax, [rax] +000A064E: mov rsi, rcx +000A0651: mov rdi, rax +000A0654: call __ZSt8_DestroyIPiiEvT_S1_RSaIT0_E; std::_Destroy(int *,int *,std::allocator &) +000A0659: mov rax, [rbp+var_38] +000A065D: mov rax, [rax+10h] +000A0661: mov rdx, rax +000A0664: mov rax, [rbp+var_38] +000A0668: mov rax, [rax] +000A066B: sub rdx, rax +000A066E: mov rax, rdx +000A0671: sar rax, 2 +000A0675: mov rdx, rax +000A0678: mov rax, [rbp+var_38] +000A067C: mov rcx, [rax] +000A067F: mov rax, [rbp+var_38] +000A0683: mov rsi, rcx +000A0686: mov rdi, rax +000A0689: call __ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim; std::_Vector_base>::_M_deallocate(int *,ulong) +000A068E: mov rax, [rbp+var_38] +000A0692: mov rdx, [rbp+var_28] +000A0696: mov [rax], rdx +000A0699: mov rax, [rbp+var_38] +000A069D: mov rdx, [rbp+var_18] +000A06A1: mov [rax+8], rdx +000A06A5: mov rax, [rbp+var_20] +000A06A9: lea rdx, ds:0[rax*4] +000A06B1: mov rax, [rbp+var_28] +000A06B5: add rdx, rax +000A06B8: mov rax, [rbp+var_38] +000A06BC: mov [rax+10h], rdx +000A06C0: jmp loc_A0751 +000A06C5: mov rdi, rax; void * +000A06C8: call ___cxa_begin_catch +000A06CD: cmp [rbp+var_18], 0 +000A06D2: jnz short loc_A0700 +000A06D4: mov rax, [rbp+var_38] +000A06D8: mov rdi, rax +000A06DB: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A06E0: lea rdx, ds:0[rax*4] +000A06E8: mov rax, [rbp+var_28] +000A06EC: add rdx, rax +000A06EF: mov rax, [rbp+var_38] +000A06F3: mov rsi, rdx +000A06F6: mov rdi, rax +000A06F9: call __ZNSt16allocator_traitsISaIiEE7destroyIiEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,int *) +000A06FE: jmp short loc_A0722 +000A0700: mov rax, [rbp+var_38] +000A0704: mov rdi, rax +000A0707: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A070C: mov rdx, rax +000A070F: mov rcx, [rbp+var_18] +000A0713: mov rax, [rbp+var_28] +000A0717: mov rsi, rcx +000A071A: mov rdi, rax +000A071D: call __ZSt8_DestroyIPiiEvT_S1_RSaIT0_E; std::_Destroy(int *,int *,std::allocator &) +000A0722: mov rax, [rbp+var_38] +000A0726: mov rdx, [rbp+var_20] +000A072A: mov rcx, [rbp+var_28] +000A072E: mov rsi, rcx +000A0731: mov rdi, rax +000A0734: call __ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim; std::_Vector_base>::_M_deallocate(int *,ulong) +000A0739: call ___cxa_rethrow +000A073E: mov rbx, rax +000A0741: call ___cxa_end_catch +000A0746: mov rax, rbx +000A0749: mov rdi, rax; struct _Unwind_Exception * +000A074C: call __Unwind_Resume +000A0751: add rsp, 38h +000A0755: pop rbx +000A0756: pop rbp +000A0757: retn + +### FUNC 000A0758 - 000A07E8 (144 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS1_ +000A0758: push rbp +000A0759: mov rbp, rsp +000A075C: sub rsp, 30h +000A0760: mov [rbp+var_28], rdi +000A0764: mov [rbp+var_30], rsi +000A0768: mov rdx, [rbp+var_30] +000A076C: mov rax, [rbp+var_28] +000A0770: mov rsi, rdx +000A0773: mov rdi, rax +000A0776: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS2_; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_hash_code(std::string const&) +000A077B: mov [rbp+var_8], rax +000A077F: mov rdx, [rbp+var_8] +000A0783: mov rcx, [rbp+var_30] +000A0787: mov rax, [rbp+var_28] +000A078B: mov rsi, rcx +000A078E: mov rdi, rax +000A0791: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_bucket_index(std::string const&,ulong) +000A0796: mov [rbp+var_10], rax +000A079A: mov rcx, [rbp+var_8] +000A079E: mov rdx, [rbp+var_30] +000A07A2: mov rsi, [rbp+var_10] +000A07A6: mov rax, [rbp+var_28] +000A07AA: mov rdi, rax +000A07AD: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE12_M_find_nodeEmRS1_m; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_find_node(ulong,std::string const&,ulong) +000A07B2: mov [rbp+var_18], rax +000A07B6: cmp [rbp+var_18], 0 +000A07BB: jz short loc_A07D2 +000A07BD: mov rdx, [rbp+var_18] +000A07C1: lea rax, [rbp+var_20] +000A07C5: mov rsi, rdx +000A07C8: mov rdi, rax +000A07CB: call __ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE; std::__detail::_Node_iterator,false,true>::_Node_iterator(std::__detail::_Hash_node,true> *) +000A07D0: jmp short loc_A07E2 +000A07D2: mov rax, [rbp+var_28] +000A07D6: mov rdi, rax +000A07D9: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE3endEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::end(void) +000A07DE: mov [rbp+var_20], rax +000A07E2: mov rax, [rbp+var_20] +000A07E6: leave +000A07E7: retn + +### FUNC 000A07E8 - 000A080B (35 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE3endEv +000A07E8: push rbp +000A07E9: mov rbp, rsp +000A07EC: sub rsp, 20h +000A07F0: mov [rbp+var_18], rdi +000A07F4: lea rax, [rbp+var_10] +000A07F8: mov esi, 0 +000A07FD: mov rdi, rax +000A0800: call __ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE; std::__detail::_Node_iterator,false,true>::_Node_iterator(std::__detail::_Hash_node,true> *) +000A0805: mov rax, [rbp+var_10] +000A0809: leave +000A080A: retn + +### FUNC 000A080B - 000A0819 (14 bytes) name=_ZSt11__addressofISt4pairIKSsiEEPT_RS3_ +000A080B: push rbp +000A080C: mov rbp, rsp +000A080F: mov [rbp+var_8], rdi +000A0813: mov rax, [rbp+var_8] +000A0817: pop rbp +000A0818: retn + +### FUNC 000A0819 - 000A0827 (14 bytes) name=_ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE +000A0819: push rbp +000A081A: mov rbp, rsp +000A081D: mov [rbp+var_8], rdi +000A0821: mov rax, [rbp+var_8] +000A0825: pop rbp +000A0826: retn + +### FUNC 000A0828 - 000A08A9 (129 bytes) name=_ZNSt6vectorIiSaIiEE12emplace_backIJiEEEvDpOT_ +000A0828: push rbp; Alternative name is 'void std::vector>::emplace_back(int &&)' +000A0829: mov rbp, rsp +000A082C: sub rsp, 10h +000A0830: mov [rbp+var_8], rdi +000A0834: mov [rbp+var_10], rsi +000A0838: mov rax, [rbp+var_8] +000A083C: mov rdx, [rax+8] +000A0840: mov rax, [rbp+var_8] +000A0844: mov rax, [rax+10h] +000A0848: cmp rdx, rax +000A084B: jz short loc_A0889 +000A084D: mov rax, [rbp+var_10] +000A0851: mov rdi, rax +000A0854: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A0859: mov rdx, rax +000A085C: mov rax, [rbp+var_8] +000A0860: mov rcx, [rax+8] +000A0864: mov rax, [rbp+var_8] +000A0868: mov rsi, rcx +000A086B: mov rdi, rax +000A086E: call __ZNSt16allocator_traitsISaIiEE9constructIiJiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000A0873: mov rax, [rbp+var_8] +000A0877: mov rax, [rax+8] +000A087B: lea rdx, [rax+4] +000A087F: mov rax, [rbp+var_8] +000A0883: mov [rax+8], rdx +000A0887: jmp short locret_A08A7 +000A0889: mov rax, [rbp+var_10] +000A088D: mov rdi, rax +000A0890: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A0895: mov rdx, rax +000A0898: mov rax, [rbp+var_8] +000A089C: mov rsi, rdx +000A089F: mov rdi, rax +000A08A2: call __ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJiEEEvDpOT_; std::vector>::_M_emplace_back_aux(int &&) +000A08A7: leave +000A08A8: retn + +### FUNC 000A08A9 - 000A08B7 (14 bytes) name=_ZNSt10_Iter_baseIPmLb0EE7_S_baseES0_ +000A08A9: push rbp +000A08AA: mov rbp, rsp +000A08AD: mov [rbp+var_8], rdi +000A08B1: mov rax, [rbp+var_8] +000A08B5: pop rbp +000A08B6: retn + +### FUNC 000A08B7 - 000A08E8 (49 bytes) name=_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcE +000A08B7: push rbp +000A08B8: mov rbp, rsp +000A08BB: sub rsp, 30h +000A08BF: mov [rbp+var_18], rdi +000A08C3: mov [rbp+var_20], rsi +000A08C7: mov [rbp+var_28], rdx +000A08CB: mov rdx, [rbp+var_28] +000A08CF: mov rcx, [rbp+var_20] +000A08D3: mov rax, [rbp+var_18] +000A08D7: mov [rsp+30h+var_30], r8b +000A08DB: mov rsi, rcx +000A08DE: mov rdi, rax +000A08E1: call __ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type; std::string::_S_construct_aux(char *,char *,std::allocator const&,std::__false_type) +000A08E6: leave +000A08E7: retn + +### FUNC 000A08E8 - 000A090E (38 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv +000A08E8: push rbp +000A08E9: mov rbp, rsp +000A08EC: mov [rbp+var_8], rdi +000A08F0: mov rax, [rbp+var_8] +000A08F4: mov rax, [rax+8] +000A08F8: mov rdx, rax +000A08FB: mov rax, [rbp+var_8] +000A08FF: mov rax, [rax] +000A0902: sub rdx, rax +000A0905: mov rax, rdx +000A0908: sar rax, 4 +000A090C: pop rbp +000A090D: retn + +### FUNC 000A090E - 000A0928 (26 bytes) name=_ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE4sizeEv +000A090E: push rbp +000A090F: mov rbp, rsp +000A0912: sub rsp, 10h +000A0916: mov [rbp+var_8], rdi +000A091A: mov rax, [rbp+var_8] +000A091E: mov rdi, rax +000A0921: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE4sizeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::size(void) +000A0926: leave +000A0927: retn + +### FUNC 000A0928 - 000A096A (66 bytes) name=_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEiEvRT_T0_ +000A0928: push rbp +000A0929: mov rbp, rsp +000A092C: push rbx +000A092D: sub rsp, 38h +000A0931: mov [rbp+var_28], rdi +000A0935: mov [rbp+var_2C], esi +000A0938: mov eax, [rbp+var_2C] +000A093B: cdqe +000A093D: mov [rbp+var_18], rax +000A0941: mov rax, [rbp+var_28] +000A0945: mov rdi, rax +000A0948: call __ZSt19__iterator_categoryISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEENSt15iterator_traitsIT_E17iterator_categoryERKSE_; std::__iterator_category>>>>>(std::_Rb_tree_iterator>>>> const&) +000A094D: mov rdx, [rbp+var_18] +000A0951: mov rax, [rbp+var_28] +000A0955: mov [rsp+40h+var_40], bl +000A0958: mov rsi, rdx +000A095B: mov rdi, rax +000A095E: call __ZSt9__advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEElEvRT_T0_St26bidirectional_iterator_tag; std::__advance>>>>,long>(std::_Rb_tree_iterator>>>> &,long,std::bidirectional_iterator_tag) +000A0963: add rsp, 38h +000A0967: pop rbx +000A0968: pop rbp +000A0969: retn + +### FUNC 000A096A - 000A09AC (66 bytes) name=_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEiEvRT_T0_ +000A096A: push rbp +000A096B: mov rbp, rsp +000A096E: push rbx +000A096F: sub rsp, 38h +000A0973: mov [rbp+var_28], rdi +000A0977: mov [rbp+var_2C], esi +000A097A: mov eax, [rbp+var_2C] +000A097D: cdqe +000A097F: mov [rbp+var_18], rax +000A0983: mov rax, [rbp+var_28] +000A0987: mov rdi, rax +000A098A: call __ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt15iterator_traitsIT_E17iterator_categoryERKSF_; std::__iterator_category<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&) +000A098F: mov rdx, [rbp+var_18] +000A0993: mov rax, [rbp+var_28] +000A0997: mov [rsp+40h+var_40], bl +000A099A: mov rsi, rdx +000A099D: mov rdi, rax +000A09A0: call __ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEElEvRT_T0_St26random_access_iterator_tag; std::__advance<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,long>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> &,long,std::random_access_iterator_tag) +000A09A5: add rsp, 38h +000A09A9: pop rbx +000A09AA: pop rbp +000A09AB: retn + +### FUNC 000A09AC - 000A09C6 (26 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv +000A09AC: push rbp +000A09AD: mov rbp, rsp +000A09B0: sub rsp, 10h +000A09B4: mov [rbp+var_8], rdi +000A09B8: mov rax, [rbp+var_8] +000A09BC: mov rdi, rax +000A09BF: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE3endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::end(void) +000A09C4: leave +000A09C5: retn + +### FUNC 000A09C6 - 000A09E8 (34 bytes) name=_ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_ +000A09C6: push rbp +000A09C7: mov rbp, rsp +000A09CA: mov [rbp+var_8], rdi +000A09CE: mov [rbp+var_10], rsi +000A09D2: mov rax, [rbp+var_8] +000A09D6: mov rdx, [rax] +000A09D9: mov rax, [rbp+var_10] +000A09DD: mov rax, [rax] +000A09E0: cmp rdx, rax +000A09E3: setnz al +000A09E6: pop rbp +000A09E7: retn + +### FUNC 000A09E8 - 000A0A09 (33 bytes) name=_ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv +000A09E8: push rbp +000A09E9: mov rbp, rsp +000A09EC: sub rsp, 10h +000A09F0: mov [rbp+var_8], rdi +000A09F4: mov rax, [rbp+var_8] +000A09F8: mov rax, [rax] +000A09FB: add rax, 20h ; ' ' +000A09FF: mov rdi, rax +000A0A02: call __ZSt11__addressofISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEPT_RSB_; std::__addressof>>>>(std::pair>>>&) +000A0A07: leave +000A0A08: retn + +### FUNC 000A0A0A - 000A0A33 (41 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +000A0A0A: push rbp +000A0A0B: mov rbp, rsp +000A0A0E: sub rsp, 20h +000A0A12: mov [rbp+var_18], rdi +000A0A16: mov rax, [rbp+var_18] +000A0A1A: lea rdx, [rax+8] +000A0A1E: lea rax, [rbp+var_10] +000A0A22: mov rsi, rdx +000A0A25: mov rdi, rax +000A0A28: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> * const&) +000A0A2D: mov rax, [rbp+var_10] +000A0A31: leave +000A0A32: retn + +### FUNC 000A0A33 - 000A0A6F (60 bytes) name=_ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +000A0A33: push rbp +000A0A34: mov rbp, rsp +000A0A37: push rbx +000A0A38: sub rsp, 18h +000A0A3C: mov [rbp+var_18], rdi +000A0A40: mov [rbp+var_20], rsi +000A0A44: mov rax, [rbp+var_18] +000A0A48: mov rdi, rax +000A0A4B: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::base(void) +000A0A50: mov rbx, [rax] +000A0A53: mov rax, [rbp+var_20] +000A0A57: mov rdi, rax +000A0A5A: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::base(void) +000A0A5F: mov rax, [rax] +000A0A62: cmp rbx, rax +000A0A65: setnz al +000A0A68: add rsp, 18h +000A0A6C: pop rbx +000A0A6D: pop rbp +000A0A6E: retn + +### FUNC 000A0A70 - 000A0A81 (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +000A0A70: push rbp +000A0A71: mov rbp, rsp +000A0A74: mov [rbp+var_8], rdi +000A0A78: mov rax, [rbp+var_8] +000A0A7C: mov rax, [rax] +000A0A7F: pop rbp +000A0A80: retn + +### FUNC 000A0A82 - 000A0AA1 (31 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKSsLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000A0A82: push rbp +000A0A83: mov rbp, rsp +000A0A86: sub rsp, 10h +000A0A8A: mov [rbp+var_8], rdi +000A0A8E: mov rax, [rbp+var_8] +000A0A92: mov esi, 0 +000A0A97: mov rdi, rax +000A0A9A: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKSs; nlohmann::basic_json>>::get_impl_ptr(std::string const*) +000A0A9F: leave +000A0AA0: retn + +### FUNC 000A0AA2 - 000A0AB8 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_binaryEv +000A0AA2: push rbp +000A0AA3: mov rbp, rsp +000A0AA6: mov [rbp+var_8], rdi +000A0AAA: mov rax, [rbp+var_8] +000A0AAE: movzx eax, byte ptr [rax] +000A0AB1: cmp al, 8 +000A0AB3: setz al +000A0AB6: pop rbp +000A0AB7: retn + +### FUNC 000A0AB8 - 000A0AD2 (26 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2Ev +000A0AB8: push rbp; Alternative name is 'std::vector>>, std::allocator>>>>::vector(void)' +000A0AB9: mov rbp, rsp +000A0ABC: sub rsp, 10h +000A0AC0: mov [rbp+var_8], rdi +000A0AC4: mov rax, [rbp+var_8] +000A0AC8: mov rdi, rax +000A0ACB: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2Ev; std::_Vector_base>>,std::allocator>>>>::_Vector_base(void) +000A0AD0: leave +000A0AD1: retn + +### FUNC 000A0AD2 - 000A0B15 (67 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EED2Ev +000A0AD2: push rbp; Alternative name is 'std::vector>>, std::allocator>>>>::~vector()' +000A0AD3: mov rbp, rsp +000A0AD6: sub rsp, 10h +000A0ADA: mov [rbp+var_8], rdi +000A0ADE: mov rax, [rbp+var_8] +000A0AE2: mov rdi, rax +000A0AE5: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000A0AEA: mov rdx, rax +000A0AED: mov rax, [rbp+var_8] +000A0AF1: mov rcx, [rax+8] +000A0AF5: mov rax, [rbp+var_8] +000A0AF9: mov rax, [rax] +000A0AFC: mov rsi, rcx +000A0AFF: mov rdi, rax +000A0B02: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000A0B07: mov rax, [rbp+var_8] +000A0B0B: mov rdi, rax +000A0B0E: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EED2Ev; std::_Vector_base>>,std::allocator>>>>::~_Vector_base() +000A0B13: leave +000A0B14: retn + +### FUNC 000A0B16 - 000A0C55 (319 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE7reserveEm +000A0B16: push rbp +000A0B17: mov rbp, rsp +000A0B1A: push rbx +000A0B1B: sub rsp, 28h +000A0B1F: mov [rbp+var_28], rdi +000A0B23: mov [rbp+var_30], rsi +000A0B27: mov rax, [rbp+var_28] +000A0B2B: mov rdi, rax +000A0B2E: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv; std::vector>>,std::allocator>>>>::max_size(void) +000A0B33: cmp rax, [rbp+var_30] +000A0B37: setb al +000A0B3A: test al, al +000A0B3C: jz short loc_A0B4A +000A0B3E: lea rdi, aVectorReserve_0; "vector::reserve" +000A0B45: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000A0B4A: mov rax, [rbp+var_28] +000A0B4E: mov rdi, rax +000A0B51: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8capacityEv; std::vector>>,std::allocator>>>>::capacity(void) +000A0B56: cmp rax, [rbp+var_30] +000A0B5A: setb al +000A0B5D: test al, al +000A0B5F: jz loc_A0C4E +000A0B65: mov rax, [rbp+var_28] +000A0B69: mov rdi, rax +000A0B6C: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000A0B71: mov [rbp+var_18], rax +000A0B75: mov rax, [rbp+var_28] +000A0B79: mov rax, [rax+8] +000A0B7D: mov rdi, rax +000A0B80: call __ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_; std::__make_move_if_noexcept_iterator>> *,std::move_iterator>> *>>(nlohmann::basic_json>> *) +000A0B85: mov rbx, rax +000A0B88: mov rax, [rbp+var_28] +000A0B8C: mov rax, [rax] +000A0B8F: mov rdi, rax +000A0B92: call __ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_; std::__make_move_if_noexcept_iterator>> *,std::move_iterator>> *>>(nlohmann::basic_json>> *) +000A0B97: mov rdx, rax +000A0B9A: mov rsi, [rbp+var_30] +000A0B9E: mov rax, [rbp+var_28] +000A0BA2: mov rcx, rbx +000A0BA5: mov rdi, rax +000A0BA8: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE20_M_allocate_and_copyISt13move_iteratorIPS6_EEESB_mT_SD_; std::vector>>,std::allocator>>>>::_M_allocate_and_copy>>*>>(ulong,std::move_iterator>>*>,std::move_iterator>>*>) +000A0BAD: mov [rbp+var_20], rax +000A0BB1: mov rax, [rbp+var_28] +000A0BB5: mov rdi, rax +000A0BB8: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000A0BBD: mov rdx, rax +000A0BC0: mov rax, [rbp+var_28] +000A0BC4: mov rcx, [rax+8] +000A0BC8: mov rax, [rbp+var_28] +000A0BCC: mov rax, [rax] +000A0BCF: mov rsi, rcx +000A0BD2: mov rdi, rax +000A0BD5: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000A0BDA: mov rax, [rbp+var_28] +000A0BDE: mov rax, [rax+10h] +000A0BE2: mov rdx, rax +000A0BE5: mov rax, [rbp+var_28] +000A0BE9: mov rax, [rax] +000A0BEC: sub rdx, rax +000A0BEF: mov rax, rdx +000A0BF2: sar rax, 4 +000A0BF6: mov rdx, rax +000A0BF9: mov rax, [rbp+var_28] +000A0BFD: mov rcx, [rax] +000A0C00: mov rax, [rbp+var_28] +000A0C04: mov rsi, rcx +000A0C07: mov rdi, rax +000A0C0A: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000A0C0F: mov rax, [rbp+var_28] +000A0C13: mov rdx, [rbp+var_20] +000A0C17: mov [rax], rdx +000A0C1A: mov rax, [rbp+var_18] +000A0C1E: shl rax, 4 +000A0C22: mov rdx, rax +000A0C25: mov rax, [rbp+var_20] +000A0C29: add rdx, rax +000A0C2C: mov rax, [rbp+var_28] +000A0C30: mov [rax+8], rdx +000A0C34: mov rax, [rbp+var_28] +000A0C38: mov rax, [rax] +000A0C3B: mov rdx, [rbp+var_30] +000A0C3F: shl rdx, 4 +000A0C43: add rdx, rax +000A0C46: mov rax, [rbp+var_28] +000A0C4A: mov [rax+10h], rdx +000A0C4E: add rsp, 28h +000A0C52: pop rbx +000A0C53: pop rbp +000A0C54: retn + +### FUNC 000A0C56 - 000A0C7B (37 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +000A0C56: push rbp +000A0C57: mov rbp, rsp +000A0C5A: sub rsp, 20h +000A0C5E: mov [rbp+var_18], rdi +000A0C62: mov rdx, [rbp+var_18] +000A0C66: lea rax, [rbp+var_10] +000A0C6A: mov rsi, rdx +000A0C6D: mov rdi, rax +000A0C70: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> * const&) +000A0C75: mov rax, [rbp+var_10] +000A0C79: leave +000A0C7A: retn + +### FUNC 000A0C7B - 000A0CA0 (37 bytes) name=_ZSt13back_inserterISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEESt20back_insert_iteratorIT_ERSB_ +000A0C7B: push rbp +000A0C7C: mov rbp, rsp +000A0C7F: sub rsp, 20h +000A0C83: mov [rbp+var_18], rdi +000A0C87: mov rdx, [rbp+var_18] +000A0C8B: lea rax, [rbp+var_10] +000A0C8F: mov rsi, rdx +000A0C92: mov rdi, rax +000A0C95: call __ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEC2ERS9_; std::back_insert_iterator>>,std::allocator>>>>>::back_insert_iterator(std::vector>>,std::allocator>>>>&) +000A0C9A: mov rax, [rbp+var_10] +000A0C9E: leave +000A0C9F: retn + +### FUNC 000A0CA0 - 000A0CE6 (70 bytes) name=_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET0_T_SH_SG_ +000A0CA0: push rbp +000A0CA1: mov rbp, rsp +000A0CA4: push rbx +000A0CA5: sub rsp, 38h +000A0CA9: mov [rbp+var_20], rdi +000A0CAD: mov [rbp+var_30], rsi +000A0CB1: mov [rbp+var_40], rdx +000A0CB5: mov rax, [rbp+var_30] +000A0CB9: mov rdi, rax +000A0CBC: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_; std::__miter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000A0CC1: mov rbx, rax +000A0CC4: mov rax, [rbp+var_20] +000A0CC8: mov rdi, rax +000A0CCB: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_; std::__miter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000A0CD0: mov rdx, [rbp+var_40] +000A0CD4: mov rsi, rbx +000A0CD7: mov rdi, rax +000A0CDA: call __ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET1_T0_SH_SG_; std::__copy_move_a2>> *,std::vector>>,std::allocator>>>>>,std::back_insert_iterator>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,std::back_insert_iterator>>,std::allocator>>>>>) +000A0CDF: add rsp, 38h +000A0CE3: pop rbx +000A0CE4: pop rbp +000A0CE5: retn + +### FUNC 000A0CE6 - 000A0D00 (26 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5beginEv +000A0CE6: push rbp +000A0CE7: mov rbp, rsp +000A0CEA: sub rsp, 10h +000A0CEE: mov [rbp+var_8], rdi +000A0CF2: mov rax, [rbp+var_8] +000A0CF6: mov rdi, rax +000A0CF9: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::begin(void) +000A0CFE: leave +000A0CFF: retn + +### FUNC 000A0D00 - 000A0D28 (40 bytes) name=_ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv +000A0D00: push rbp +000A0D01: mov rbp, rsp +000A0D04: sub rsp, 10h +000A0D08: mov [rbp+var_8], rdi +000A0D0C: mov rax, [rbp+var_8] +000A0D10: mov rax, [rax] +000A0D13: mov rdi, rax +000A0D16: call __ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base; std::_Rb_tree_increment(std::_Rb_tree_node_base *) +000A0D1B: mov rdx, [rbp+var_8] +000A0D1F: mov [rdx], rax +000A0D22: mov rax, [rbp+var_8] +000A0D26: leave +000A0D27: retn + +### FUNC 000A0D28 - 000A0D3D (21 bytes) name=_ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv +000A0D28: push rbp +000A0D29: mov rbp, rsp +000A0D2C: mov [rbp+var_8], rdi +000A0D30: mov rax, [rbp+var_8] +000A0D34: mov rax, [rax] +000A0D37: add rax, 20h ; ' ' +000A0D3B: pop rbp +000A0D3C: retn + +### FUNC 000A0D3E - 000A0D6E (48 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_ +000A0D3E: push rbp +000A0D3F: mov rbp, rsp +000A0D42: sub rsp, 10h +000A0D46: mov [rbp+var_8], rdi +000A0D4A: mov [rbp+var_10], rsi +000A0D4E: mov rax, [rbp+var_10] +000A0D52: mov rdi, rax +000A0D55: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000A0D5A: mov rdx, rax +000A0D5D: mov rax, [rbp+var_8] +000A0D61: mov rsi, rdx +000A0D64: mov rdi, rax +000A0D67: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJS6_EEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back>>>(nlohmann::basic_json>> &&) +000A0D6C: leave +000A0D6D: retn + +### FUNC 000A0D6E - 000A0DAF (65 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5emptyEv +000A0D6E: push rbp +000A0D6F: mov rbp, rsp +000A0D72: sub rsp, 30h +000A0D76: mov [rbp+var_28], rdi +000A0D7A: mov rax, [rbp+var_28] +000A0D7E: mov rdi, rax +000A0D81: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000A0D86: mov [rbp+var_20], rax +000A0D8A: mov rax, [rbp+var_28] +000A0D8E: mov rdi, rax +000A0D91: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv; std::vector>>,std::allocator>>>>::begin(void) +000A0D96: mov [rbp+var_10], rax +000A0D9A: lea rdx, [rbp+var_20] +000A0D9E: lea rax, [rbp+var_10] +000A0DA2: mov rsi, rdx +000A0DA5: mov rdi, rax +000A0DA8: call __ZN9__gnu_cxxeqIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_; __gnu_cxx::operator==>> const*,std::vector>>,std::allocator>>>>>(__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>> const&,__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>> const&) +000A0DAD: leave +000A0DAE: retn + +### FUNC 000A0DB0 - 000A0DF9 (73 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv +000A0DB0: push rbp +000A0DB1: mov rbp, rsp +000A0DB4: sub rsp, 30h +000A0DB8: mov [rbp+var_28], rdi +000A0DBC: mov [rbp+var_18], 1 +000A0DC4: mov rax, [rbp+var_28] +000A0DC8: mov rdi, rax +000A0DCB: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000A0DD0: mov [rbp+var_10], rax +000A0DD4: lea rdx, [rbp+var_18] +000A0DD8: lea rax, [rbp+var_10] +000A0DDC: mov rsi, rdx +000A0DDF: mov rdi, rax +000A0DE2: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEmiERKl; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator-(long const&) +000A0DE7: mov [rbp+var_20], rax +000A0DEB: lea rax, [rbp+var_20] +000A0DEF: mov rdi, rax +000A0DF2: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator*(void) +000A0DF7: leave +000A0DF8: retn + +### FUNC 000A0DFA - 000A0E33 (57 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8pop_backEv +000A0DFA: push rbp +000A0DFB: mov rbp, rsp +000A0DFE: sub rsp, 10h +000A0E02: mov [rbp+var_8], rdi +000A0E06: mov rax, [rbp+var_8] +000A0E0A: mov rax, [rax+8] +000A0E0E: lea rdx, [rax-10h] +000A0E12: mov rax, [rbp+var_8] +000A0E16: mov [rax+8], rdx +000A0E1A: mov rax, [rbp+var_8] +000A0E1E: mov rdx, [rax+8] +000A0E22: mov rax, [rbp+var_8] +000A0E26: mov rsi, rdx +000A0E29: mov rdi, rax +000A0E2C: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000A0E31: leave +000A0E32: retn + +### FUNC 000A0E34 - 000A0E58 (36 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5clearEv +000A0E34: push rbp +000A0E35: mov rbp, rsp +000A0E38: sub rsp, 10h +000A0E3C: mov [rbp+var_8], rdi +000A0E40: mov rax, [rbp+var_8] +000A0E44: mov rdx, [rax] +000A0E47: mov rax, [rbp+var_8] +000A0E4B: mov rsi, rdx +000A0E4E: mov rdi, rax +000A0E51: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE15_M_erase_at_endEPS6_; std::vector>>,std::allocator>>>>::_M_erase_at_end(nlohmann::basic_json>>*) +000A0E56: leave +000A0E57: retn + +### FUNC 000A0E58 - 000A0E72 (26 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5clearEv +000A0E58: push rbp +000A0E59: mov rbp, rsp +000A0E5C: sub rsp, 10h +000A0E60: mov [rbp+var_8], rdi +000A0E64: mov rax, [rbp+var_8] +000A0E68: mov rdi, rax +000A0E6B: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5clearEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::clear(void) +000A0E70: leave +000A0E71: retn + +### FUNC 000A0E72 - 000A0E8C (26 bytes) name=_ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEEC2Ev +000A0E72: push rbp; Alternative name is 'std::allocator>>, std::less, std::allocator>>>>>>::allocator(void)' +000A0E73: mov rbp, rsp +000A0E76: sub rsp, 10h +000A0E7A: mov [rbp+var_8], rdi +000A0E7E: mov rax, [rbp+var_8] +000A0E82: mov rdi, rax +000A0E85: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEEC2Ev; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::new_allocator(void) +000A0E8A: leave +000A0E8B: retn + +### FUNC 000A0E8C - 000A0EA6 (26 bytes) name=_ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev +000A0E8C: push rbp; Alternative name is 'std::allocator>>, std::less, std::allocator>>>>>>::~allocator()' +000A0E8D: mov rbp, rsp +000A0E90: sub rsp, 10h +000A0E94: mov [rbp+var_8], rdi +000A0E98: mov rax, [rbp+var_8] +000A0E9C: mov rdi, rax +000A0E9F: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEED2Ev; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::~new_allocator() +000A0EA4: leave +000A0EA5: retn + +### FUNC 000A0EA6 - 000A0ECB (37 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE7destroyISE_EEvRSF_PT_ +000A0EA6: push rbp +000A0EA7: mov rbp, rsp +000A0EAA: sub rsp, 10h +000A0EAE: mov [rbp+var_8], rdi +000A0EB2: mov [rbp+var_10], rsi +000A0EB6: mov rdx, [rbp+var_10] +000A0EBA: mov rax, [rbp+var_8] +000A0EBE: mov rsi, rdx +000A0EC1: mov rdi, rax +000A0EC4: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10_S_destroyISE_EENSt9enable_ifIXsrNSG_16__destroy_helperIT_EE5valueEvE4typeERSF_PSK_; std::allocator_traits>>,std::less,std::allocator>>>>>>>::_S_destroy>>,std::less,std::allocator>>>>>>(std::allocator>>,std::less,std::allocator>>>>>>&,std::map>>,std::less,std::allocator>>>>>*) +000A0EC9: leave +000A0ECA: retn + +### FUNC 000A0ECB - 000A0EF8 (45 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m +000A0ECB: push rbp +000A0ECC: mov rbp, rsp +000A0ECF: sub rsp, 20h +000A0ED3: mov [rbp+var_8], rdi +000A0ED7: mov [rbp+var_10], rsi +000A0EDB: mov [rbp+var_18], rdx +000A0EDF: mov rdx, [rbp+var_18] +000A0EE3: mov rcx, [rbp+var_10] +000A0EE7: mov rax, [rbp+var_8] +000A0EEB: mov rsi, rcx +000A0EEE: mov rdi, rax +000A0EF1: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE10deallocateEPSF_m; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::deallocate(std::map>>,std::less,std::allocator>>>>>*,ulong) +000A0EF6: leave +000A0EF7: retn + +### FUNC 000A0EF8 - 000A0F12 (26 bytes) name=_ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEEC2Ev +000A0EF8: push rbp; Alternative name is 'std::allocator>>, std::allocator>>>>>::allocator(void)' +000A0EF9: mov rbp, rsp +000A0EFC: sub rsp, 10h +000A0F00: mov [rbp+var_8], rdi +000A0F04: mov rax, [rbp+var_8] +000A0F08: mov rdi, rax +000A0F0B: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEC2Ev; __gnu_cxx::new_allocator>>,std::allocator>>>>>::new_allocator(void) +000A0F10: leave +000A0F11: retn + +### FUNC 000A0F12 - 000A0F2C (26 bytes) name=_ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev +000A0F12: push rbp; Alternative name is 'std::allocator>>, std::allocator>>>>>::~allocator()' +000A0F13: mov rbp, rsp +000A0F16: sub rsp, 10h +000A0F1A: mov [rbp+var_8], rdi +000A0F1E: mov rax, [rbp+var_8] +000A0F22: mov rdi, rax +000A0F25: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEED2Ev; __gnu_cxx::new_allocator>>,std::allocator>>>>>::~new_allocator() +000A0F2A: leave +000A0F2B: retn + +### FUNC 000A0F2C - 000A0F51 (37 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE7destroyIS9_EEvRSA_PT_ +000A0F2C: push rbp +000A0F2D: mov rbp, rsp +000A0F30: sub rsp, 10h +000A0F34: mov [rbp+var_8], rdi +000A0F38: mov [rbp+var_10], rsi +000A0F3C: mov rdx, [rbp+var_10] +000A0F40: mov rax, [rbp+var_8] +000A0F44: mov rsi, rdx +000A0F47: mov rdi, rax +000A0F4A: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10_S_destroyIS9_EENSt9enable_ifIXsrNSB_16__destroy_helperIT_EE5valueEvE4typeERSA_PSF_; std::allocator_traits>>,std::allocator>>>>>>::_S_destroy>>,std::allocator>>>>>(std::allocator>>,std::allocator>>>>>&,std::vector>>,std::allocator>>>>*) +000A0F4F: leave +000A0F50: retn + +### FUNC 000A0F51 - 000A0F7E (45 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m +000A0F51: push rbp +000A0F52: mov rbp, rsp +000A0F55: sub rsp, 20h +000A0F59: mov [rbp+var_8], rdi +000A0F5D: mov [rbp+var_10], rsi +000A0F61: mov [rbp+var_18], rdx +000A0F65: mov rdx, [rbp+var_18] +000A0F69: mov rcx, [rbp+var_10] +000A0F6D: mov rax, [rbp+var_8] +000A0F71: mov rsi, rcx +000A0F74: mov rdi, rax +000A0F77: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE10deallocateEPSA_m; __gnu_cxx::new_allocator>>,std::allocator>>>>>::deallocate(std::vector>>,std::allocator>>>>*,ulong) +000A0F7C: leave +000A0F7D: retn + +### FUNC 000A0F7E - 000A0F98 (26 bytes) name=_ZNSaISsEC2Ev +000A0F7E: push rbp; Alternative name is 'std::allocator::allocator(void)' +000A0F7F: mov rbp, rsp +000A0F82: sub rsp, 10h +000A0F86: mov [rbp+var_8], rdi +000A0F8A: mov rax, [rbp+var_8] +000A0F8E: mov rdi, rax +000A0F91: call __ZN9__gnu_cxx13new_allocatorISsEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000A0F96: leave +000A0F97: retn + +### FUNC 000A0F98 - 000A0FB2 (26 bytes) name=_ZNSaISsED2Ev +000A0F98: push rbp; Alternative name is 'std::allocator::~allocator()' +000A0F99: mov rbp, rsp +000A0F9C: sub rsp, 10h +000A0FA0: mov [rbp+var_8], rdi +000A0FA4: mov rax, [rbp+var_8] +000A0FA8: mov rdi, rax +000A0FAB: call __ZN9__gnu_cxx13new_allocatorISsED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000A0FB0: leave +000A0FB1: retn + +### FUNC 000A0FB2 - 000A0FD7 (37 bytes) name=_ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_ +000A0FB2: push rbp +000A0FB3: mov rbp, rsp +000A0FB6: sub rsp, 10h +000A0FBA: mov [rbp+var_8], rdi +000A0FBE: mov [rbp+var_10], rsi +000A0FC2: mov rdx, [rbp+var_10] +000A0FC6: mov rax, [rbp+var_8] +000A0FCA: mov rsi, rdx +000A0FCD: mov rdi, rax +000A0FD0: call __ZNSt16allocator_traitsISaISsEE10_S_destroyISsEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_; std::allocator_traits>::_S_destroy(std::allocator&,std::string*) +000A0FD5: leave +000A0FD6: retn + +### FUNC 000A0FD7 - 000A1004 (45 bytes) name=_ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm +000A0FD7: push rbp +000A0FD8: mov rbp, rsp +000A0FDB: sub rsp, 20h +000A0FDF: mov [rbp+var_8], rdi +000A0FE3: mov [rbp+var_10], rsi +000A0FE7: mov [rbp+var_18], rdx +000A0FEB: mov rdx, [rbp+var_18] +000A0FEF: mov rcx, [rbp+var_10] +000A0FF3: mov rax, [rbp+var_8] +000A0FF7: mov rsi, rcx +000A0FFA: mov rdi, rax +000A0FFD: call __ZN9__gnu_cxx13new_allocatorISsE10deallocateEPSsm; __gnu_cxx::new_allocator::deallocate(std::string *,ulong) +000A1002: leave +000A1003: retn + +### FUNC 000A1004 - 000A101E (26 bytes) name=_ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +000A1004: push rbp; Alternative name is 'std::allocator>>>::allocator(void)' +000A1005: mov rbp, rsp +000A1008: sub rsp, 10h +000A100C: mov [rbp+var_8], rdi +000A1010: mov rax, [rbp+var_8] +000A1014: mov rdi, rax +000A1017: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev; __gnu_cxx::new_allocator>>>::new_allocator(void) +000A101C: leave +000A101D: retn + +### FUNC 000A101E - 000A1038 (26 bytes) name=_ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +000A101E: push rbp; Alternative name is 'std::allocator>>>::~allocator()' +000A101F: mov rbp, rsp +000A1022: sub rsp, 10h +000A1026: mov [rbp+var_8], rdi +000A102A: mov rax, [rbp+var_8] +000A102E: mov rdi, rax +000A1031: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; __gnu_cxx::new_allocator>>>::~new_allocator() +000A1036: leave +000A1037: retn + +### FUNC 000A1038 - 000A105D (37 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE7destroyIS5_EEvRS6_PT_ +000A1038: push rbp +000A1039: mov rbp, rsp +000A103C: sub rsp, 10h +000A1040: mov [rbp+var_8], rdi +000A1044: mov [rbp+var_10], rsi +000A1048: mov rdx, [rbp+var_10] +000A104C: mov rax, [rbp+var_8] +000A1050: mov rsi, rdx +000A1053: mov rdi, rax +000A1056: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10_S_destroyIS5_EENSt9enable_ifIXsrNS7_16__destroy_helperIT_EE5valueEvE4typeERS6_PSB_; std::allocator_traits>>>>::_S_destroy>>>(std::allocator>>>&,nlohmann::byte_container_with_subtype>>*) +000A105B: leave +000A105C: retn + +### FUNC 000A105D - 000A108A (45 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m +000A105D: push rbp +000A105E: mov rbp, rsp +000A1061: sub rsp, 20h +000A1065: mov [rbp+var_8], rdi +000A1069: mov [rbp+var_10], rsi +000A106D: mov [rbp+var_18], rdx +000A1071: mov rdx, [rbp+var_18] +000A1075: mov rcx, [rbp+var_10] +000A1079: mov rax, [rbp+var_8] +000A107D: mov rsi, rcx +000A1080: mov rdi, rax +000A1083: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE10deallocateEPS6_m; __gnu_cxx::new_allocator>>>::deallocate(nlohmann::byte_container_with_subtype>>*,ulong) +000A1088: leave +000A1089: retn + +### FUNC 000A108A - 000A1098 (14 bytes) name=_ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_ +000A108A: push rbp +000A108B: mov rbp, rsp +000A108E: mov [rbp+var_8], rdi +000A1092: mov rax, [rbp+var_8] +000A1096: pop rbp +000A1097: retn + +### FUNC 000A1098 - 000A1101 (105 bytes) name=_ZSt4swapISt9_Any_dataEvRT_S2_ +000A1098: push rbp +000A1099: mov rbp, rsp +000A109C: sub rsp, 20h +000A10A0: mov [rbp+var_18], rdi +000A10A4: mov [rbp+var_20], rsi +000A10A8: mov rax, [rbp+var_18] +000A10AC: mov rdi, rax +000A10AF: call __ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_; std::move(std::_Any_data &&&) +000A10B4: mov rdx, [rax+8] +000A10B8: mov rax, [rax] +000A10BB: mov [rbp+var_10], rax +000A10BF: mov [rbp+var_8], rdx +000A10C3: mov rax, [rbp+var_20] +000A10C7: mov rdi, rax +000A10CA: call __ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_; std::move(std::_Any_data &&&) +000A10CF: mov rcx, [rbp+var_18] +000A10D3: mov rdx, [rax+8] +000A10D7: mov rax, [rax] +000A10DA: mov [rcx], rax +000A10DD: mov [rcx+8], rdx +000A10E1: lea rax, [rbp+var_10] +000A10E5: mov rdi, rax +000A10E8: call __ZSt4moveIRSt9_Any_dataEONSt16remove_referenceIT_E4typeEOS3_; std::move(std::_Any_data &&&) +000A10ED: mov rcx, [rbp+var_20] +000A10F1: mov rdx, [rax+8] +000A10F5: mov rax, [rax] +000A10F8: mov [rcx], rax +000A10FB: mov [rcx+8], rdx +000A10FF: leave +000A1100: retn + +### FUNC 000A1101 - 000A110F (14 bytes) name=_ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_ +000A1101: push rbp +000A1102: mov rbp, rsp +000A1105: mov [rbp+var_8], rdi +000A1109: mov rax, [rbp+var_8] +000A110D: pop rbp +000A110E: retn + +### FUNC 000A110F - 000A1160 (81 bytes) name=_ZSt4swapIPFbRSt9_Any_dataRKS0_St18_Manager_operationEEvRT_S8_ +000A110F: push rbp +000A1110: mov rbp, rsp +000A1113: sub rsp, 20h +000A1117: mov [rbp+var_18], rdi +000A111B: mov [rbp+var_20], rsi +000A111F: mov rax, [rbp+var_18] +000A1123: mov rdi, rax +000A1126: call __ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_; std::move(bool (*&)(std::_Any_data &,std::_Any_data const&,std::_Manager_operation)&&) +000A112B: mov rax, [rax] +000A112E: mov [rbp+var_8], rax +000A1132: mov rax, [rbp+var_20] +000A1136: mov rdi, rax +000A1139: call __ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_; std::move(bool (*&)(std::_Any_data &,std::_Any_data const&,std::_Manager_operation)&&) +000A113E: mov rdx, [rax] +000A1141: mov rax, [rbp+var_18] +000A1145: mov [rax], rdx +000A1148: lea rax, [rbp+var_8] +000A114C: mov rdi, rax +000A114F: call __ZSt4moveIRPFbRSt9_Any_dataRKS0_St18_Manager_operationEEONSt16remove_referenceIT_E4typeEOS9_; std::move(bool (*&)(std::_Any_data &,std::_Any_data const&,std::_Manager_operation)&&) +000A1154: mov rdx, [rax] +000A1157: mov rax, [rbp+var_20] +000A115B: mov [rax], rdx +000A115E: leave +000A115F: retn + +### FUNC 000A1160 - 000A116E (14 bytes) name=_ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_ +000A1160: push rbp +000A1161: mov rbp, rsp +000A1164: mov [rbp+var_8], rdi +000A1168: mov rax, [rbp+var_8] +000A116C: pop rbp +000A116D: retn + +### FUNC 000A116E - 000A11BF (81 bytes) name=_ZSt4swapIPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEvRT_SH_ +000A116E: push rbp +000A116F: mov rbp, rsp +000A1172: sub rsp, 20h +000A1176: mov [rbp+var_18], rdi +000A117A: mov [rbp+var_20], rsi +000A117E: mov rax, [rbp+var_18] +000A1182: mov rdi, rax +000A1185: call __ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_; std::move>> &)>(bool (*&)(std::_Any_data const&,int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &)&&) +000A118A: mov rax, [rax] +000A118D: mov [rbp+var_8], rax +000A1191: mov rax, [rbp+var_20] +000A1195: mov rdi, rax +000A1198: call __ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_; std::move>> &)>(bool (*&)(std::_Any_data const&,int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &)&&) +000A119D: mov rdx, [rax] +000A11A0: mov rax, [rbp+var_18] +000A11A4: mov [rax], rdx +000A11A7: lea rax, [rbp+var_8] +000A11AB: mov rdi, rax +000A11AE: call __ZSt4moveIRPFbRKSt9_Any_dataiN8nlohmann6detail13parse_event_tERNS3_10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES8_IhSaIhEEEEEEONSt16remove_referenceIT_E4typeEOSI_; std::move>> &)>(bool (*&)(std::_Any_data const&,int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &)&&) +000A11B3: mov rdx, [rax] +000A11B6: mov rax, [rbp+var_20] +000A11BA: mov [rax], rdx +000A11BD: leave +000A11BE: retn + +### FUNC 000A11C0 - 000A11DD (29 bytes) name=_ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEcvbEv +000A11C0: push rbp +000A11C1: mov rbp, rsp +000A11C4: sub rsp, 10h +000A11C8: mov [rbp+var_8], rdi +000A11CC: mov rax, [rbp+var_8] +000A11D0: mov rdi, rax; this +000A11D3: call __ZNKSt14_Function_base8_M_emptyEv; std::_Function_base::_M_empty(void) +000A11D8: xor eax, 1 +000A11DB: leave +000A11DC: retn + +### FUNC 000A11DE - 000A1318 (314 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_St8functionIFbiNS0_13parse_event_tESA_EEb +000A11DE: push rbp; Alternative name is 'nlohmann::detail::json_sax_dom_callback_parser>>>::json_sax_dom_callback_parser(nlohmann::basic_json>>&, std::function>>&)>, bool)' +000A11DF: mov rbp, rsp +000A11E2: push rbx +000A11E3: sub rsp, 28h +000A11E7: mov [rbp+var_18], rdi +000A11EB: mov [rbp+var_20], rsi +000A11EF: mov [rbp+var_28], rdx +000A11F3: mov eax, ecx +000A11F5: mov [rbp+var_2C], al +000A11F8: mov rax, [rbp+var_18] +000A11FC: mov rdx, [rbp+var_20] +000A1200: mov [rax], rdx +000A1203: mov rax, [rbp+var_18] +000A1207: add rax, 8 +000A120B: mov rdi, rax +000A120E: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EEC2Ev; std::vector>> *,std::allocator>> *>>::vector(void) +000A1213: mov rax, [rbp+var_18] +000A1217: add rax, 20h ; ' ' +000A121B: mov rdi, rax +000A121E: call __ZNSt6vectorIbSaIbEEC2Ev; std::vector>::vector(void) +000A1223: mov rax, [rbp+var_18] +000A1227: add rax, 48h ; 'H' +000A122B: mov rdi, rax +000A122E: call __ZNSt6vectorIbSaIbEEC2Ev; std::vector>::vector(void) +000A1233: mov rax, [rbp+var_18] +000A1237: mov qword ptr [rax+70h], 0 +000A123F: mov rax, [rbp+var_18] +000A1243: mov byte ptr [rax+78h], 0 +000A1247: mov rax, [rbp+var_18] +000A124B: lea rdx, [rax+80h] +000A1252: mov rax, [rbp+var_28] +000A1256: mov rsi, rax +000A1259: mov rdi, rdx +000A125C: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_; std::function>> &)>::function(std::function>> &)> const&) +000A1261: mov rax, [rbp+var_18] +000A1265: movzx edx, [rbp+var_2C] +000A1269: mov [rax+0A0h], dl +000A126F: mov rax, [rbp+var_18] +000A1273: add rax, 0A8h +000A1279: mov esi, 9 +000A127E: mov rdi, rax +000A1281: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +000A1286: mov rax, [rbp+var_18] +000A128A: add rax, 20h ; ' ' +000A128E: mov esi, 1 +000A1293: mov rdi, rax +000A1296: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A129B: jmp short loc_A1311 +000A129D: mov rbx, rax +000A12A0: mov rax, [rbp+var_18] +000A12A4: add rax, 0A8h +000A12AA: mov rdi, rax +000A12AD: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A12B2: jmp short loc_A12B7 +000A12B4: mov rbx, rax +000A12B7: mov rax, [rbp+var_18] +000A12BB: sub rax, 0FFFFFFFFFFFFFF80h +000A12BF: mov rdi, rax +000A12C2: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +000A12C7: jmp short loc_A12CC +000A12C9: mov rbx, rax +000A12CC: mov rax, [rbp+var_18] +000A12D0: add rax, 48h ; 'H' +000A12D4: mov rdi, rax +000A12D7: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +000A12DC: jmp short loc_A12E1 +000A12DE: mov rbx, rax +000A12E1: mov rax, [rbp+var_18] +000A12E5: add rax, 20h ; ' ' +000A12E9: mov rdi, rax +000A12EC: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +000A12F1: jmp short loc_A12F6 +000A12F3: mov rbx, rax +000A12F6: mov rax, [rbp+var_18] +000A12FA: add rax, 8 +000A12FE: mov rdi, rax +000A1301: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev; std::vector>> *,std::allocator>> *>>::~vector() +000A1306: mov rax, rbx +000A1309: mov rdi, rax; struct _Unwind_Exception * +000A130C: call __Unwind_Resume +000A1311: add rsp, 28h +000A1315: pop rbx +000A1316: pop rbp +000A1317: retn + +### FUNC 000A1318 - 000A135B (67 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EED2Ev +000A1318: push rbp; Alternative name is 'std::vector>> *, std::allocator>> *>>::~vector()' +000A1319: mov rbp, rsp +000A131C: sub rsp, 10h +000A1320: mov [rbp+var_8], rdi +000A1324: mov rax, [rbp+var_8] +000A1328: mov rdi, rax +000A132B: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000A1330: mov rdx, rax +000A1333: mov rax, [rbp+var_8] +000A1337: mov rcx, [rax+8] +000A133B: mov rax, [rbp+var_8] +000A133F: mov rax, [rax] +000A1342: mov rsi, rcx +000A1345: mov rdi, rax +000A1348: call __ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E; std::_Destroy>> **,nlohmann::basic_json>> *>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000A134D: mov rax, [rbp+var_8] +000A1351: mov rdi, rax +000A1354: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EED2Ev; std::_Vector_base>> *,std::allocator>> *>>::~_Vector_base() +000A1359: leave +000A135A: retn + +### FUNC 000A135C - 000A1376 (26 bytes) name=_ZNSt6vectorIbSaIbEED2Ev +000A135C: push rbp; Alternative name is 'std::vector>::~vector()' +000A135D: mov rbp, rsp +000A1360: sub rsp, 10h +000A1364: mov [rbp+var_8], rdi +000A1368: mov rax, [rbp+var_8] +000A136C: mov rdi, rax +000A136F: call __ZNSt13_Bvector_baseISaIbEED2Ev; std::_Bvector_base>::~_Bvector_base() +000A1374: leave +000A1375: retn + +### FUNC 000A1376 - 000A1385 (15 bytes) name=_ZNKSt5arrayIcLm9EE4sizeEv +000A1376: push rbp +000A1377: mov rbp, rsp +000A137A: mov [rbp+var_8], rdi +000A137E: mov eax, 9 +000A1383: pop rbp +000A1384: retn + +### FUNC 000A1386 - 000A1408 (130 bytes) name=_ZN8nlohmann6detail9exceptionC2ERKS1_ +000A1386: push rbp; Alternative name is 'nlohmann::detail::exception::exception(nlohmann::detail::exception const&)' +000A1387: mov rbp, rsp +000A138A: push rbx +000A138B: sub rsp, 18h +000A138F: mov [rbp+var_18], rdi +000A1393: mov [rbp+var_20], rsi +000A1397: mov rdx, [rbp+var_20] +000A139B: mov rax, [rbp+var_18] +000A139F: mov rsi, rdx; std::exception * +000A13A2: mov rdi, rax; this +000A13A5: call __ZNSt9exceptionC2ERKS_; std::exception::exception(std::exception const&) +000A13AA: mov rax, [rbp+var_18] +000A13AE: mov rdx, cs:_ZTVN8nlohmann6detail9exceptionE_ptr +000A13B5: lea rdx, [rdx+10h] +000A13B9: mov [rax], rdx +000A13BC: mov rax, [rbp+var_20] +000A13C0: mov edx, [rax+8] +000A13C3: mov rax, [rbp+var_18] +000A13C7: mov [rax+8], edx +000A13CA: mov rax, [rbp+var_20] +000A13CE: lea rdx, [rax+10h] +000A13D2: mov rax, [rbp+var_18] +000A13D6: add rax, 10h +000A13DA: mov rsi, rdx; std::runtime_error * +000A13DD: mov rdi, rax; this +000A13E0: call __ZNSt13runtime_errorC2ERKS_; std::runtime_error::runtime_error(std::runtime_error const&) +000A13E5: jmp short loc_A1401 +000A13E7: mov rbx, rax +000A13EA: mov rax, [rbp+var_18] +000A13EE: mov rdi, rax; this +000A13F1: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000A13F6: mov rax, rbx +000A13F9: mov rdi, rax; struct _Unwind_Exception * +000A13FC: call __Unwind_Resume +000A1401: add rsp, 18h +000A1405: pop rbx +000A1406: pop rbp +000A1407: retn + +### FUNC 000A1408 - 000A144F (71 bytes) name=_ZN8nlohmann6detail11parse_errorC2ERKS1_ +000A1408: push rbp; Alternative name is 'nlohmann::detail::parse_error::parse_error(nlohmann::detail::parse_error const&)' +000A1409: mov rbp, rsp +000A140C: sub rsp, 10h +000A1410: mov [rbp+var_8], rdi +000A1414: mov [rbp+var_10], rsi +000A1418: mov rdx, [rbp+var_10] +000A141C: mov rax, [rbp+var_8] +000A1420: mov rsi, rdx; nlohmann::detail::exception * +000A1423: mov rdi, rax; this +000A1426: call __ZN8nlohmann6detail9exceptionC2ERKS1_; nlohmann::detail::exception::exception(nlohmann::detail::exception const&) +000A142B: mov rax, [rbp+var_8] +000A142F: mov rdx, cs:_ZTVN8nlohmann6detail11parse_errorE_ptr +000A1436: lea rdx, [rdx+10h] +000A143A: mov [rax], rdx +000A143D: mov rax, [rbp+var_10] +000A1441: mov rdx, [rax+20h] +000A1445: mov rax, [rbp+var_8] +000A1449: mov [rax+20h], rdx +000A144D: leave +000A144E: retn + +### FUNC 000A1450 - 000A14E0 (144 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +000A1450: push rbp +000A1451: mov rbp, rsp +000A1454: push r12 +000A1456: push rbx +000A1457: sub rsp, 20h +000A145B: mov [rbp+var_18], rdi +000A145F: mov [rbp+var_20], rsi +000A1463: mov [rbp+var_28], rdx +000A1467: mov [rbp+var_30], rcx +000A146B: mov rax, [rbp+var_18] +000A146F: mov byte ptr [rax+78h], 1 +000A1473: mov rax, [rbp+var_18] +000A1477: movzx eax, byte ptr [rax+0A0h] +000A147E: test al, al +000A1480: jz short loc_A14BA +000A1482: mov edi, 28h ; '('; thrown_size +000A1487: call ___cxa_allocate_exception +000A148C: mov rbx, rax +000A148F: mov rax, [rbp+var_30] +000A1493: mov rsi, rax; nlohmann::detail::parse_error * +000A1496: mov rdi, rbx; this +000A1499: call __ZN8nlohmann6detail11parse_errorC2ERKS1_; nlohmann::detail::parse_error::parse_error(nlohmann::detail::parse_error const&) +000A149E: mov rax, cs:_ZN8nlohmann6detail11parse_errorD2Ev_ptr +000A14A5: mov rdx, rax; void (__fastcall *)(void *) +000A14A8: mov rax, cs:_ZTIN8nlohmann6detail11parse_errorE_ptr +000A14AF: mov rsi, rax; lptinfo +000A14B2: mov rdi, rbx; void * +000A14B5: call ___cxa_throw +000A14BA: mov eax, 0 +000A14BF: jmp short loc_A14D7 +000A14C1: mov r12, rax +000A14C4: mov rdi, rbx; void * +000A14C7: call ___cxa_free_exception +000A14CC: mov rax, r12 +000A14CF: mov rdi, rax; struct _Unwind_Exception * +000A14D2: call __Unwind_Resume +000A14D7: add rsp, 20h +000A14DB: pop rbx +000A14DC: pop r12 +000A14DE: pop rbp +000A14DF: retn + +### FUNC 000A14E0 - 000A14F2 (18 bytes) name=_ZNK8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +000A14E0: push rbp +000A14E1: mov rbp, rsp +000A14E4: mov [rbp+var_8], rdi +000A14E8: mov rax, [rbp+var_8] +000A14EC: movzx eax, byte ptr [rax+78h] +000A14F0: pop rbp +000A14F1: retn + +### FUNC 000A14F2 - 000A154E (92 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_ +000A14F2: push rbp +000A14F3: mov rbp, rsp +000A14F6: sub rsp, 10h +000A14FA: mov [rbp+var_8], rdi +000A14FE: mov [rbp+var_10], rsi +000A1502: mov rax, [rbp+var_10] +000A1506: mov rdi, rax +000A1509: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000A150E: mov rdx, [rbp+var_10] +000A1512: mov rax, [rbp+var_8] +000A1516: mov rsi, rdx +000A1519: mov rdi, rax +000A151C: call __ZSt4swapIN8nlohmann6detail7value_tEEvRT_S4_; std::swap(nlohmann::detail::value_t &,nlohmann::detail::value_t &) +000A1521: mov rax, [rbp+var_10] +000A1525: lea rdx, [rax+8] +000A1529: mov rax, [rbp+var_8] +000A152D: add rax, 8 +000A1531: mov rsi, rdx +000A1534: mov rdi, rax +000A1537: call __ZSt4swapIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE10json_valueEEvRT_SA_; std::swap>>::json_value>(nlohmann::basic_json>>::json_value &,nlohmann::basic_json>>::json_value &) +000A153C: mov rax, [rbp+var_8] +000A1540: mov rdi, rax +000A1543: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000A1548: mov rax, [rbp+var_8] +000A154C: leave +000A154D: retn + +### FUNC 000A154E - 000A1564 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12is_discardedEv +000A154E: push rbp +000A154F: mov rbp, rsp +000A1552: mov [rbp+var_8], rdi +000A1556: mov rax, [rbp+var_8] +000A155A: movzx eax, byte ptr [rax] +000A155D: cmp al, 9 +000A155F: setz al +000A1562: pop rbp +000A1563: retn + +### FUNC 000A1564 - 000A15B5 (81 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERS8_b +000A1564: push rbp; Alternative name is 'nlohmann::detail::json_sax_dom_parser>>>::json_sax_dom_parser(nlohmann::basic_json>>&, bool)' +000A1565: mov rbp, rsp +000A1568: sub rsp, 20h +000A156C: mov [rbp+var_8], rdi +000A1570: mov [rbp+var_10], rsi +000A1574: mov eax, edx +000A1576: mov [rbp+var_14], al +000A1579: mov rax, [rbp+var_8] +000A157D: mov rdx, [rbp+var_10] +000A1581: mov [rax], rdx +000A1584: mov rax, [rbp+var_8] +000A1588: add rax, 8 +000A158C: mov rdi, rax +000A158F: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EEC2Ev; std::vector>> *,std::allocator>> *>>::vector(void) +000A1594: mov rax, [rbp+var_8] +000A1598: mov qword ptr [rax+20h], 0 +000A15A0: mov rax, [rbp+var_8] +000A15A4: mov byte ptr [rax+28h], 0 +000A15A8: mov rax, [rbp+var_8] +000A15AC: movzx edx, [rbp+var_14] +000A15B0: mov [rax+29h], dl +000A15B3: leave +000A15B4: retn + +### FUNC 000A15B6 - 000A1643 (141 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_ +000A15B6: push rbp +000A15B7: mov rbp, rsp +000A15BA: push r12 +000A15BC: push rbx +000A15BD: sub rsp, 20h +000A15C1: mov [rbp+var_18], rdi +000A15C5: mov [rbp+var_20], rsi +000A15C9: mov [rbp+var_28], rdx +000A15CD: mov [rbp+var_30], rcx +000A15D1: mov rax, [rbp+var_18] +000A15D5: mov byte ptr [rax+28h], 1 +000A15D9: mov rax, [rbp+var_18] +000A15DD: movzx eax, byte ptr [rax+29h] +000A15E1: test al, al +000A15E3: jz short loc_A161D +000A15E5: mov edi, 28h ; '('; thrown_size +000A15EA: call ___cxa_allocate_exception +000A15EF: mov rbx, rax +000A15F2: mov rax, [rbp+var_30] +000A15F6: mov rsi, rax; nlohmann::detail::parse_error * +000A15F9: mov rdi, rbx; this +000A15FC: call __ZN8nlohmann6detail11parse_errorC2ERKS1_; nlohmann::detail::parse_error::parse_error(nlohmann::detail::parse_error const&) +000A1601: mov rax, cs:_ZN8nlohmann6detail11parse_errorD2Ev_ptr +000A1608: mov rdx, rax; void (__fastcall *)(void *) +000A160B: mov rax, cs:_ZTIN8nlohmann6detail11parse_errorE_ptr +000A1612: mov rsi, rax; lptinfo +000A1615: mov rdi, rbx; void * +000A1618: call ___cxa_throw +000A161D: mov eax, 0 +000A1622: jmp short loc_A163A +000A1624: mov r12, rax +000A1627: mov rdi, rbx; void * +000A162A: call ___cxa_free_exception +000A162F: mov rax, r12 +000A1632: mov rdi, rax; struct _Unwind_Exception * +000A1635: call __Unwind_Resume +000A163A: add rsp, 20h +000A163E: pop rbx +000A163F: pop r12 +000A1641: pop rbp +000A1642: retn + +### FUNC 000A1644 - 000A1656 (18 bytes) name=_ZNK8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10is_erroredEv +000A1644: push rbp +000A1645: mov rbp, rsp +000A1648: mov [rbp+var_8], rdi +000A164C: mov rax, [rbp+var_8] +000A1650: movzx eax, byte ptr [rax+28h] +000A1654: pop rbp +000A1655: retn + +### FUNC 000A1656 - 000A1664 (14 bytes) name=_ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE +000A1656: push rbp +000A1657: mov rbp, rsp +000A165A: mov [rbp+var_8], rdi +000A165E: mov rax, [rbp+var_8] +000A1662: pop rbp +000A1663: retn + +### FUNC 000A1664 - 000A166E (10 bytes) name=_ZNSt8__detail12_Insert_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2Ev +000A1664: push rbp; Alternative name is 'std::__detail::_Insert_base, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Insert_base(void)' +000A1665: mov rbp, rsp +000A1668: mov [rbp+var_8], rdi +000A166C: pop rbp +000A166D: retn + +### FUNC 000A166E - 000A1688 (26 bytes) name=_ZNSt8__detail7_InsertISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb0ELb1EEC2Ev +000A166E: push rbp; Alternative name is 'std::__detail::_Insert, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, false, true>::_Insert(void)' +000A166F: mov rbp, rsp +000A1672: sub rsp, 10h +000A1676: mov [rbp+var_8], rdi +000A167A: mov rax, [rbp+var_8] +000A167E: mov rdi, rax +000A1681: call __ZNSt8__detail12_Insert_baseISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2Ev; std::__detail::_Insert_base,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_Insert_base(void) +000A1686: leave +000A1687: retn + +### FUNC 000A1688 - 000A1692 (10 bytes) name=_ZNSt8__detail9_EqualityISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEC2Ev +000A1688: push rbp; Alternative name is 'std::__detail::_Equality, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::_Equality(void)' +000A1689: mov rbp, rsp +000A168C: mov [rbp+var_8], rdi +000A1690: pop rbp +000A1691: retn + +### FUNC 000A1692 - 000A179C (266 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEEC2EmRKS9_RKSA_RKSB_RKS7_RKS5_RKS3_ +000A1692: push rbp; Alternative name is 'std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Hashtable(unsigned long, std::hash const&, std::__detail::_Mod_range_hashing const&, std::__detail::_Default_ranged_hash const&, std::equal_to const&, std::__detail::_Select1st const&, std::allocator> const&)' +000A1693: mov rbp, rsp +000A1696: push rbx +000A1697: sub rsp, 38h +000A169B: mov [rbp+var_18], rdi +000A169F: mov [rbp+var_20], rsi +000A16A3: mov [rbp+var_28], rdx +000A16A7: mov [rbp+var_30], rcx +000A16AB: mov [rbp+var_38], r8 +000A16AF: mov [rbp+var_40], r9 +000A16B3: mov rdi, [rbp+var_40] +000A16B7: mov rsi, [rbp+var_38] +000A16BB: mov rcx, [rbp+var_30] +000A16BF: mov rdx, [rbp+var_28] +000A16C3: mov rax, [rbp+var_18] +000A16C7: mov r9, rdi +000A16CA: mov r8, rsi +000A16CD: mov rsi, [rbp+arg_0] +000A16D1: mov rdi, rax +000A16D4: call __ZNSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2ERKS4_RKS8_RKS9_RKSA_RKS6_; std::__detail::_Hashtable_base,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Hashtable_traits>::_Hashtable_base(std::__detail::_Select1st const&,std::hash const&,std::__detail::_Mod_range_hashing const&,std::__detail::_Default_ranged_hash const&,std::equal_to const&) +000A16D9: mov rax, [rbp+var_18] +000A16DD: mov rdi, rax +000A16E0: call __ZNSt8__detail7_InsertISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb0ELb1EEC2Ev; std::__detail::_Insert,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits,false,true>::_Insert(void) +000A16E5: mov rax, [rbp+var_18] +000A16E9: mov rdi, rax +000A16EC: call __ZNSt8__detail9_EqualityISsSt4pairIKSsiESaIS3_ENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEC2Ev; std::__detail::_Equality,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits,true>::_Equality(void) +000A16F1: mov rax, [rbp+var_18] +000A16F5: mov qword ptr [rax+8], 0 +000A16FD: mov rax, [rbp+var_18] +000A1701: lea rdx, [rax+10h] +000A1705: mov rax, [rbp+arg_8] +000A1709: mov rsi, rax +000A170C: mov rdi, rdx +000A170F: call __ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEEC2IRKSaIS4_EEEOT_; std::__detail::_Before_begin,true>>>::_Before_begin> const&>(std::allocator> const&) +000A1714: mov rax, [rbp+var_18] +000A1718: mov qword ptr [rax+18h], 0 +000A1720: mov rax, [rbp+var_18] +000A1724: add rax, 20h ; ' ' +000A1728: movss xmm0, cs:dword_D3A34; float +000A1730: mov rdi, rax; this +000A1733: call __ZNSt8__detail20_Prime_rehash_policyC2Ef; std::__detail::_Prime_rehash_policy::_Prime_rehash_policy(float) +000A1738: mov rax, [rbp+var_18] +000A173C: lea rdx, [rax+20h] +000A1740: mov rax, [rbp+var_20] +000A1744: mov rsi, rax; unsigned __int64 +000A1747: mov rdi, rdx; this +000A174A: call __ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm; std::__detail::_Prime_rehash_policy::_M_next_bkt(ulong) +000A174F: mov rdx, [rbp+var_18] +000A1753: mov [rdx+8], rax +000A1757: mov rax, [rbp+var_18] +000A175B: mov rdx, [rax+8] +000A175F: mov rax, [rbp+var_18] +000A1763: mov rsi, rdx +000A1766: mov rdi, rax +000A1769: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_allocate_buckets(ulong) +000A176E: mov rdx, [rbp+var_18] +000A1772: mov [rdx], rax +000A1775: jmp short loc_A1795 +000A1777: mov rbx, rax +000A177A: mov rax, [rbp+var_18] +000A177E: add rax, 10h +000A1782: mov rdi, rax +000A1785: call __ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEED2Ev; std::__detail::_Before_begin,true>>>::~_Before_begin() +000A178A: mov rax, rbx +000A178D: mov rdi, rax; struct _Unwind_Exception * +000A1790: call __Unwind_Resume +000A1795: add rsp, 38h +000A1799: pop rbx +000A179A: pop rbp +000A179B: retn + +### FUNC 000A179C - 000A17A6 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEED2Ev +000A179C: push rbp; Alternative name is '__gnu_cxx::new_allocator, true>>::~new_allocator()' +000A179D: mov rbp, rsp +000A17A0: mov [rbp+var_8], rdi +000A17A4: pop rbp +000A17A5: retn + +### FUNC 000A17A6 - 000A17EC (70 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_deallocate_nodesEPNS4_10_Hash_nodeIS2_Lb1EEE +000A17A6: push rbp +000A17A7: mov rbp, rsp +000A17AA: sub rsp, 20h +000A17AE: mov [rbp+var_18], rdi +000A17B2: mov [rbp+var_20], rsi +000A17B6: jmp short loc_A17E3 +000A17B8: mov rax, [rbp+var_20] +000A17BC: mov [rbp+var_8], rax +000A17C0: mov rax, [rbp+var_20] +000A17C4: mov rdi, rax +000A17C7: call __ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv; std::__detail::_Hash_node,true>::_M_next(void) +000A17CC: mov [rbp+var_20], rax +000A17D0: mov rdx, [rbp+var_8] +000A17D4: mov rax, [rbp+var_18] +000A17D8: mov rsi, rdx +000A17DB: mov rdi, rax +000A17DE: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE18_M_deallocate_nodeEPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_deallocate_node(std::__detail::_Hash_node,true> *) +000A17E3: cmp [rbp+var_20], 0 +000A17E8: jnz short loc_A17B8 +000A17EA: leave +000A17EB: retn + +### FUNC 000A17EC - 000A1809 (29 bytes) name=_ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE8_M_beginEv +000A17EC: push rbp +000A17ED: mov rbp, rsp +000A17F0: sub rsp, 10h +000A17F4: mov [rbp+var_8], rdi +000A17F8: mov rax, [rbp+var_8] +000A17FC: mov rdi, rax +000A17FF: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000A1804: mov rax, [rax] +000A1807: leave +000A1808: retn + +### FUNC 000A180A - 000A181C (18 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +000A180A: push rbp +000A180B: mov rbp, rsp +000A180E: mov [rbp+var_8], rdi +000A1812: mov rax, [rbp+var_8] +000A1816: add rax, 10h +000A181A: pop rbp +000A181B: retn + +### FUNC 000A181C - 000A182E (18 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv +000A181C: push rbp +000A181D: mov rbp, rsp +000A1820: mov [rbp+var_8], rdi +000A1824: mov rax, [rbp+var_8] +000A1828: add rax, 10h +000A182C: pop rbp +000A182D: retn + +### FUNC 000A182E - 000A184C (30 bytes) name=_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKSsiELb1EEEEERKSaIT_E +000A182E: push rbp; Alternative name is 'std::allocator::allocator, true>>(std::allocator, true>> const&)' +000A182F: mov rbp, rsp +000A1832: sub rsp, 10h +000A1836: mov [rbp+var_8], rdi +000A183A: mov [rbp+var_10], rsi +000A183E: mov rax, [rbp+var_8] +000A1842: mov rdi, rax +000A1845: call __ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000A184A: leave +000A184B: retn + +### FUNC 000A184C - 000A1866 (26 bytes) name=_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev +000A184C: push rbp; Alternative name is 'std::allocator::~allocator()' +000A184D: mov rbp, rsp +000A1850: sub rsp, 10h +000A1854: mov [rbp+var_8], rdi +000A1858: mov rax, [rbp+var_8] +000A185C: mov rdi, rax +000A185F: call __ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000A1864: leave +000A1865: retn + +### FUNC 000A1866 - 000A1888 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m +000A1866: push rbp +000A1867: mov rbp, rsp +000A186A: sub rsp, 20h +000A186E: mov [rbp+var_8], rdi +000A1872: mov [rbp+var_10], rsi +000A1876: mov [rbp+var_18], rdx +000A187A: mov rax, [rbp+var_10] +000A187E: mov rdi, rax; void * +000A1881: call __ZdlPv; operator delete(void *) +000A1886: leave +000A1887: retn + +### FUNC 000A1888 - 000A18C5 (61 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE12_Vector_implC2Ev +000A1888: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(void)' +000A1889: mov rbp, rsp +000A188C: sub rsp, 10h +000A1890: mov [rbp+var_8], rdi +000A1894: mov rax, [rbp+var_8] +000A1898: mov rdi, rax +000A189B: call __ZNSaI19struct_TerminalListEC2Ev; std::allocator::allocator(void) +000A18A0: mov rax, [rbp+var_8] +000A18A4: mov qword ptr [rax], 0 +000A18AB: mov rax, [rbp+var_8] +000A18AF: mov qword ptr [rax+8], 0 +000A18B7: mov rax, [rbp+var_8] +000A18BB: mov qword ptr [rax+10h], 0 +000A18C3: leave +000A18C4: retn + +### FUNC 000A18C6 - 000A18E0 (26 bytes) name=_ZNSaI19struct_TerminalListED2Ev +000A18C6: push rbp; Alternative name is 'std::allocator::~allocator()' +000A18C7: mov rbp, rsp +000A18CA: sub rsp, 10h +000A18CE: mov [rbp+var_8], rdi +000A18D2: mov rax, [rbp+var_8] +000A18D6: mov rdi, rax +000A18D9: call __ZN9__gnu_cxx13new_allocatorI19struct_TerminalListED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000A18DE: leave +000A18DF: retn + +### FUNC 000A18E0 - 000A1914 (52 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE13_M_deallocateEPS0_m +000A18E0: push rbp +000A18E1: mov rbp, rsp +000A18E4: sub rsp, 20h +000A18E8: mov [rbp+var_8], rdi +000A18EC: mov [rbp+var_10], rsi +000A18F0: mov [rbp+var_18], rdx +000A18F4: cmp [rbp+var_10], 0 +000A18F9: jz short locret_A1912 +000A18FB: mov rax, [rbp+var_8] +000A18FF: mov rdx, [rbp+var_18] +000A1903: mov rcx, [rbp+var_10] +000A1907: mov rsi, rcx +000A190A: mov rdi, rax +000A190D: call __ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE10deallocateEPS1_m; __gnu_cxx::new_allocator::deallocate(struct_TerminalList*,ulong) +000A1912: leave +000A1913: retn + +### FUNC 000A1914 - 000A1939 (37 bytes) name=_ZSt8_DestroyIP19struct_TerminalListEvT_S2_ +000A1914: push rbp +000A1915: mov rbp, rsp +000A1918: sub rsp, 10h +000A191C: mov [rbp+var_8], rdi +000A1920: mov [rbp+var_10], rsi +000A1924: mov rdx, [rbp+var_10] +000A1928: mov rax, [rbp+var_8] +000A192C: mov rsi, rdx +000A192F: mov rdi, rax +000A1932: call __ZNSt12_Destroy_auxILb1EE9__destroyIP19struct_TerminalListEEvT_S4_; std::_Destroy_aux::__destroy(struct_TerminalList *,struct_TerminalList *) +000A1937: leave +000A1938: retn + +### FUNC 000A1939 - 000A1962 (41 bytes) name=_ZSt27__uninitialized_default_n_aIP19struct_TerminalListmS0_EvT_T0_RSaIT1_E +000A1939: push rbp +000A193A: mov rbp, rsp +000A193D: sub rsp, 20h +000A1941: mov [rbp+var_8], rdi +000A1945: mov [rbp+var_10], rsi +000A1949: mov [rbp+var_18], rdx +000A194D: mov rdx, [rbp+var_10] +000A1951: mov rax, [rbp+var_8] +000A1955: mov rsi, rdx +000A1958: mov rdi, rax +000A195B: call __ZSt25__uninitialized_default_nIP19struct_TerminalListmEvT_T0_; std::__uninitialized_default_n(struct_TerminalList *,ulong) +000A1960: leave +000A1961: retn + +### FUNC 000A1962 - 000A1A2B (201 bytes) name=_ZNKSt6vectorI19struct_TerminalListSaIS0_EE12_M_check_lenEmPKc +000A1962: push rbp +000A1963: mov rbp, rsp +000A1966: push rbx +000A1967: sub rsp, 38h +000A196B: mov [rbp+var_28], rdi +000A196F: mov [rbp+var_30], rsi +000A1973: mov [rbp+var_38], rdx +000A1977: mov rax, [rbp+var_28] +000A197B: mov rdi, rax +000A197E: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv; std::vector>::max_size(void) +000A1983: mov rbx, rax +000A1986: mov rax, [rbp+var_28] +000A198A: mov rdi, rax +000A198D: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +000A1992: sub rbx, rax +000A1995: mov rdx, rbx +000A1998: mov rax, [rbp+var_30] +000A199C: cmp rdx, rax +000A199F: setb al +000A19A2: test al, al +000A19A4: jz short loc_A19B2 +000A19A6: mov rax, [rbp+var_38] +000A19AA: mov rdi, rax; char * +000A19AD: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000A19B2: mov rax, [rbp+var_28] +000A19B6: mov rdi, rax +000A19B9: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +000A19BE: mov rbx, rax +000A19C1: mov rax, [rbp+var_28] +000A19C5: mov rdi, rax +000A19C8: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +000A19CD: mov [rbp+var_20], rax +000A19D1: lea rdx, [rbp+var_30] +000A19D5: lea rax, [rbp+var_20] +000A19D9: mov rsi, rdx +000A19DC: mov rdi, rax +000A19DF: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000A19E4: mov rax, [rax] +000A19E7: add rax, rbx +000A19EA: mov [rbp+var_18], rax +000A19EE: mov rax, [rbp+var_28] +000A19F2: mov rdi, rax +000A19F5: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE4sizeEv; std::vector>::size(void) +000A19FA: cmp rax, [rbp+var_18] +000A19FE: ja short loc_A1A12 +000A1A00: mov rax, [rbp+var_28] +000A1A04: mov rdi, rax +000A1A07: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv; std::vector>::max_size(void) +000A1A0C: cmp rax, [rbp+var_18] +000A1A10: jnb short loc_A1A20 +000A1A12: mov rax, [rbp+var_28] +000A1A16: mov rdi, rax +000A1A19: call __ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv; std::vector>::max_size(void) +000A1A1E: jmp short loc_A1A24 +000A1A20: mov rax, [rbp+var_18] +000A1A24: add rsp, 38h +000A1A28: pop rbx +000A1A29: pop rbp +000A1A2A: retn + +### FUNC 000A1A2C - 000A1A64 (56 bytes) name=_ZNSt12_Vector_baseI19struct_TerminalListSaIS0_EE11_M_allocateEm +000A1A2C: push rbp +000A1A2D: mov rbp, rsp +000A1A30: sub rsp, 10h +000A1A34: mov [rbp+var_8], rdi +000A1A38: mov [rbp+var_10], rsi +000A1A3C: cmp [rbp+var_10], 0 +000A1A41: jz short loc_A1A5D +000A1A43: mov rax, [rbp+var_8] +000A1A47: mov rcx, [rbp+var_10] +000A1A4B: mov edx, 0 +000A1A50: mov rsi, rcx +000A1A53: mov rdi, rax +000A1A56: call __ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000A1A5B: jmp short locret_A1A62 +000A1A5D: mov eax, 0 +000A1A62: leave +000A1A63: retn + +### FUNC 000A1A64 - 000A1AB2 (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIP19struct_TerminalListS1_SaIS0_EET0_T_S4_S3_RT1_ +000A1A64: push rbp +000A1A65: mov rbp, rsp +000A1A68: push rbx +000A1A69: sub rsp, 28h +000A1A6D: mov [rbp+var_18], rdi +000A1A71: mov [rbp+var_20], rsi +000A1A75: mov [rbp+var_28], rdx +000A1A79: mov [rbp+var_30], rcx +000A1A7D: mov rax, [rbp+var_20] +000A1A81: mov rdi, rax +000A1A84: call __ZSt32__make_move_if_noexcept_iteratorIP19struct_TerminalListSt13move_iteratorIS1_EET0_T_; std::__make_move_if_noexcept_iterator>(struct_TerminalList *) +000A1A89: mov rbx, rax +000A1A8C: mov rax, [rbp+var_18] +000A1A90: mov rdi, rax +000A1A93: call __ZSt32__make_move_if_noexcept_iteratorIP19struct_TerminalListSt13move_iteratorIS1_EET0_T_; std::__make_move_if_noexcept_iterator>(struct_TerminalList *) +000A1A98: mov rcx, [rbp+var_30] +000A1A9C: mov rdx, [rbp+var_28] +000A1AA0: mov rsi, rbx +000A1AA3: mov rdi, rax +000A1AA6: call __ZSt22__uninitialized_copy_aISt13move_iteratorIP19struct_TerminalListES2_S1_ET0_T_S5_S4_RSaIT1_E; std::__uninitialized_copy_a,struct_TerminalList *,struct_TerminalList>(std::move_iterator,std::move_iterator,struct_TerminalList *,std::allocator &) +000A1AAB: add rsp, 28h +000A1AAF: pop rbx +000A1AB0: pop rbp +000A1AB1: retn + +### FUNC 000A1AB2 - 000A1ACC (26 bytes) name=_ZNSaIN6serial8PortInfoEED2Ev +000A1AB2: push rbp; Alternative name is 'std::allocator::~allocator()' +000A1AB3: mov rbp, rsp +000A1AB6: sub rsp, 10h +000A1ABA: mov [rbp+var_8], rdi +000A1ABE: mov rax, [rbp+var_8] +000A1AC2: mov rdi, rax +000A1AC5: call __ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000A1ACA: leave +000A1ACB: retn + +### FUNC 000A1ACC - 000A1B00 (52 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m +000A1ACC: push rbp +000A1ACD: mov rbp, rsp +000A1AD0: sub rsp, 20h +000A1AD4: mov [rbp+var_8], rdi +000A1AD8: mov [rbp+var_10], rsi +000A1ADC: mov [rbp+var_18], rdx +000A1AE0: cmp [rbp+var_10], 0 +000A1AE5: jz short locret_A1AFE +000A1AE7: mov rax, [rbp+var_8] +000A1AEB: mov rdx, [rbp+var_18] +000A1AEF: mov rcx, [rbp+var_10] +000A1AF3: mov rsi, rcx +000A1AF6: mov rdi, rax +000A1AF9: call __ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE10deallocateEPS2_m; __gnu_cxx::new_allocator::deallocate(serial::PortInfo*,ulong) +000A1AFE: leave +000A1AFF: retn + +### FUNC 000A1B00 - 000A1B25 (37 bytes) name=_ZSt8_DestroyIPN6serial8PortInfoEEvT_S3_ +000A1B00: push rbp +000A1B01: mov rbp, rsp +000A1B04: sub rsp, 10h +000A1B08: mov [rbp+var_8], rdi +000A1B0C: mov [rbp+var_10], rsi +000A1B10: mov rdx, [rbp+var_10] +000A1B14: mov rax, [rbp+var_8] +000A1B18: mov rsi, rdx +000A1B1B: mov rdi, rax +000A1B1E: call __ZNSt12_Destroy_auxILb0EE9__destroyIPN6serial8PortInfoEEEvT_S5_; std::_Destroy_aux::__destroy(serial::PortInfo *,serial::PortInfo *) +000A1B23: leave +000A1B24: retn + +### FUNC 000A1B25 - 000A1B4E (41 bytes) name=_ZNSt16allocator_traitsISaIhEE37select_on_container_copy_constructionERKS0_ +000A1B25: push rbp +000A1B26: mov rbp, rsp +000A1B29: sub rsp, 10h +000A1B2D: mov [rbp+var_8], rdi +000A1B31: mov [rbp+var_10], rsi +000A1B35: mov rax, [rbp+var_8] +000A1B39: mov rdx, [rbp+var_10] +000A1B3D: mov rsi, rdx +000A1B40: mov rdi, rax +000A1B43: call __ZNSt16allocator_traitsISaIhEE9_S_selectIKS0_EENSt9enable_ifIXntsrNS1_15__select_helperIT_EE5valueES6_E4typeERS6_; std::allocator_traits>::_S_select const>(std::allocator const&) +000A1B48: mov rax, [rbp+var_8] +000A1B4C: leave +000A1B4D: retn + +### FUNC 000A1B4E - 000A1B73 (37 bytes) name=_ZNSaIhEC2ERKS_ +000A1B4E: push rbp; Alternative name is 'std::allocator::allocator(std::allocator const&)' +000A1B4F: mov rbp, rsp +000A1B52: sub rsp, 10h +000A1B56: mov [rbp+var_8], rdi +000A1B5A: mov [rbp+var_10], rsi +000A1B5E: mov rdx, [rbp+var_10] +000A1B62: mov rax, [rbp+var_8] +000A1B66: mov rsi, rdx +000A1B69: mov rdi, rax +000A1B6C: call __ZN9__gnu_cxx13new_allocatorIhEC2ERKS1_; __gnu_cxx::new_allocator::new_allocator(__gnu_cxx::new_allocator const&) +000A1B71: leave +000A1B72: retn + +### FUNC 000A1B74 - 000A1BBC (72 bytes) name=_ZNSt12_Vector_baseIhSaIhEE12_Vector_implC2ERKS0_ +000A1B74: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(std::allocator const&)' +000A1B75: mov rbp, rsp +000A1B78: sub rsp, 10h +000A1B7C: mov [rbp+var_8], rdi +000A1B80: mov [rbp+var_10], rsi +000A1B84: mov rdx, [rbp+var_10] +000A1B88: mov rax, [rbp+var_8] +000A1B8C: mov rsi, rdx +000A1B8F: mov rdi, rax +000A1B92: call __ZNSaIhEC2ERKS__0; std::allocator::allocator(std::allocator const&) +000A1B97: mov rax, [rbp+var_8] +000A1B9B: mov qword ptr [rax], 0 +000A1BA2: mov rax, [rbp+var_8] +000A1BA6: mov qword ptr [rax+8], 0 +000A1BAE: mov rax, [rbp+var_8] +000A1BB2: mov qword ptr [rax+10h], 0 +000A1BBA: leave +000A1BBB: retn + +### FUNC 000A1BBC - 000A1C0D (81 bytes) name=_ZNSt12_Vector_baseIhSaIhEE17_M_create_storageEm +000A1BBC: push rbp +000A1BBD: mov rbp, rsp +000A1BC0: sub rsp, 10h +000A1BC4: mov [rbp+var_8], rdi +000A1BC8: mov [rbp+var_10], rsi +000A1BCC: mov rdx, [rbp+var_10] +000A1BD0: mov rax, [rbp+var_8] +000A1BD4: mov rsi, rdx +000A1BD7: mov rdi, rax +000A1BDA: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000A1BDF: mov rdx, [rbp+var_8] +000A1BE3: mov [rdx], rax +000A1BE6: mov rax, [rbp+var_8] +000A1BEA: mov rdx, [rax] +000A1BED: mov rax, [rbp+var_8] +000A1BF1: mov [rax+8], rdx +000A1BF5: mov rax, [rbp+var_8] +000A1BF9: mov rdx, [rax] +000A1BFC: mov rax, [rbp+var_10] +000A1C00: add rdx, rax +000A1C03: mov rax, [rbp+var_8] +000A1C07: mov [rax+10h], rdx +000A1C0B: leave +000A1C0C: retn + +### FUNC 000A1C0D - 000A1C32 (37 bytes) name=_ZN8nlohmann6detail13input_adapterIPhEENS0_30iterator_input_adapter_factoryIT_vE12adapter_typeES4_S4_ +000A1C0D: push rbp +000A1C0E: mov rbp, rsp +000A1C11: sub rsp, 10h +000A1C15: mov [rbp+var_8], rdi +000A1C19: mov [rbp+var_10], rsi +000A1C1D: mov rdx, [rbp+var_10] +000A1C21: mov rax, [rbp+var_8] +000A1C25: mov rsi, rdx +000A1C28: mov rdi, rax +000A1C2B: call __ZN8nlohmann6detail30iterator_input_adapter_factoryIPhvE6createES2_S2_; nlohmann::detail::iterator_input_adapter_factory::create(uchar *,uchar *) +000A1C30: leave +000A1C31: retn + +### FUNC 000A1C32 - 000A1CE7 (181 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_St8functionIFbiNS0_13parse_event_tERS8_EEbb +000A1C32: push rbp; Alternative name is 'nlohmann::detail::parser>>, nlohmann::detail::iterator_input_adapter>::parser(nlohmann::detail::iterator_input_adapter&&, std::function>>&)>, bool, bool)' +000A1C33: mov rbp, rsp +000A1C36: push rbx +000A1C37: sub rsp, 28h +000A1C3B: mov [rbp+var_18], rdi +000A1C3F: mov [rbp+var_20], rsi +000A1C43: mov [rbp+var_28], rdx +000A1C47: mov eax, ecx +000A1C49: mov edx, r8d +000A1C4C: mov [rbp+var_2C], al +000A1C4F: mov [rbp+var_30], dl +000A1C52: mov rax, [rbp+var_18] +000A1C56: mov rdx, [rbp+var_28] +000A1C5A: mov rsi, rdx +000A1C5D: mov rdi, rax +000A1C60: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEC2ERKSC_; std::function>> &)>::function(std::function>> &)> const&) +000A1C65: mov rax, [rbp+var_18] +000A1C69: mov dword ptr [rax+20h], 0 +000A1C70: movzx ebx, [rbp+var_30] +000A1C74: mov rax, [rbp+var_20] +000A1C78: mov rdi, rax +000A1C7B: call __ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_; std::move &>(nlohmann::detail::iterator_input_adapter &&&) +000A1C80: mov rdx, [rbp+var_18] +000A1C84: lea rcx, [rdx+28h] +000A1C88: mov edx, ebx +000A1C8A: mov rsi, rax +000A1C8D: mov rdi, rcx +000A1C90: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_b; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::lexer(nlohmann::detail::iterator_input_adapter&&,bool) +000A1C95: mov rax, [rbp+var_18] +000A1C99: movzx edx, [rbp+var_2C] +000A1C9D: mov [rax+0B0h], dl +000A1CA3: mov rax, [rbp+var_18] +000A1CA7: mov rdi, rax +000A1CAA: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A1CAF: jmp short loc_A1CE0 +000A1CB1: mov rbx, rax +000A1CB4: mov rax, [rbp+var_18] +000A1CB8: add rax, 28h ; '(' +000A1CBC: mov rdi, rax +000A1CBF: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEED2Ev; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::~lexer() +000A1CC4: jmp short loc_A1CC9 +000A1CC6: mov rbx, rax +000A1CC9: mov rax, [rbp+var_18] +000A1CCD: mov rdi, rax +000A1CD0: call __ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::function>> &)>::~function() +000A1CD5: mov rax, rbx +000A1CD8: mov rdi, rax; struct _Unwind_Exception * +000A1CDB: call __Unwind_Resume +000A1CE0: add rsp, 28h +000A1CE4: pop rbx +000A1CE5: pop rbp +000A1CE6: retn + +### FUNC 000A1CE8 - 000A32AB (5571 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_ +000A1CE8: push rbp +000A1CE9: mov rbp, rsp +000A1CEC: push rbx +000A1CED: sub rsp, 5F8h +000A1CF4: mov [rbp+var_5E8], rdi +000A1CFB: mov [rbp+var_5F0], rsi +000A1D02: lea rax, [rbp+var_5E0] +000A1D09: mov rdi, rax +000A1D0C: call __ZNSt6vectorIbSaIbEEC2Ev; std::vector>::vector(void) +000A1D11: mov [rbp+var_11], 0 +000A1D15: movzx eax, [rbp+var_11] +000A1D19: xor eax, 1 +000A1D1C: test al, al +000A1D1E: jz loc_A2780 +000A1D24: mov rax, [rbp+var_5E8] +000A1D2B: mov eax, [rax+20h] +000A1D2E: cmp eax, 0Eh; switch 15 cases +000A1D31: ja def_A1D58; jumptable 00000000000A1D58 default case, cases 0,10-13 +000A1D37: mov eax, eax +000A1D39: lea rdx, ds:0[rax*4] +000A1D41: lea rax, jpt_A1D58 +000A1D48: mov eax, ds:(jpt_A1D58 - 0D3AA8h)[rdx+rax] +000A1D4B: movsxd rdx, eax +000A1D4E: lea rax, jpt_A1D58 +000A1D55: add rax, rdx +000A1D58: jmp rax; switch jump +000A1D5A: mov rax, [rbp+var_5F0]; jumptable 00000000000A1D58 case 9 +000A1D61: mov rsi, 0FFFFFFFFFFFFFFFFh +000A1D68: mov rdi, rax +000A1D6B: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm; nlohmann::detail::json_sax_dom_callback_parser>>>::start_object(ulong) +000A1D70: xor eax, 1 +000A1D73: movzx eax, al +000A1D76: test rax, rax +000A1D79: setnz al +000A1D7C: test al, al +000A1D7E: jz short loc_A1D8A +000A1D80: mov ebx, 0 +000A1D85: jmp loc_A2EDE +000A1D8A: mov rax, [rbp+var_5E8] +000A1D91: mov rdi, rax +000A1D94: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A1D99: cmp eax, 0Bh +000A1D9C: setz al +000A1D9F: test al, al +000A1DA1: jz short loc_A1DD1 +000A1DA3: mov rax, [rbp+var_5F0] +000A1DAA: mov rdi, rax +000A1DAD: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv; nlohmann::detail::json_sax_dom_callback_parser>>>::end_object(void) +000A1DB2: xor eax, 1 +000A1DB5: movzx eax, al +000A1DB8: test rax, rax +000A1DBB: setnz al +000A1DBE: test al, al +000A1DC0: jz short loc_A1DCC +000A1DC2: mov ebx, 0 +000A1DC7: jmp loc_A2EDE +000A1DCC: jmp loc_A277E +000A1DD1: mov rax, [rbp+var_5E8] +000A1DD8: mov eax, [rax+20h] +000A1DDB: cmp eax, 4 +000A1DDE: setnz al +000A1DE1: movzx eax, al +000A1DE4: test rax, rax +000A1DE7: jz loc_A1F38 +000A1DED: lea rax, [rbp+var_561] +000A1DF4: mov rdi, rax +000A1DF7: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A1DFC: lea rdx, [rbp+var_561] +000A1E03: lea rax, [rbp+var_570] +000A1E0A: lea rsi, aObjectKey; "object key" +000A1E11: mov rdi, rax +000A1E14: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A1E19: lea rax, [rbp+var_580] +000A1E20: lea rdx, [rbp+var_570] +000A1E27: mov rsi, [rbp+var_5E8] +000A1E2E: mov rcx, rdx +000A1E31: mov edx, 4 +000A1E36: mov rdi, rax +000A1E39: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A1E3E: mov rax, [rbp+var_5E8] +000A1E45: lea rdx, [rax+28h] +000A1E49: lea rax, [rbp+var_560] +000A1E50: mov rsi, rdx +000A1E53: mov rdi, rax +000A1E56: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A1E5B: lea rax, [rbp+var_5B0] +000A1E62: lea rcx, [rbp+var_580]; std::string * +000A1E69: lea rdx, [rbp+var_560]; nlohmann::detail::position_t * +000A1E70: mov esi, 65h ; 'e'; int +000A1E75: mov rdi, rax; this +000A1E78: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A1E7D: mov rax, [rbp+var_5E8] +000A1E84: lea rdx, [rax+28h] +000A1E88: lea rax, [rbp+var_540] +000A1E8F: mov rsi, rdx +000A1E92: mov rdi, rax +000A1E95: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A1E9A: mov rax, [rbp+var_5E8] +000A1EA1: lea rdx, [rax+28h] +000A1EA5: lea rax, [rbp+var_530] +000A1EAC: mov rsi, rdx +000A1EAF: mov rdi, rax +000A1EB2: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A1EB7: lea rax, [rbp+var_530] +000A1EBE: mov rdi, rax +000A1EC1: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A1EC6: mov rsi, rax +000A1EC9: lea rcx, [rbp+var_5B0] +000A1ED0: lea rdx, [rbp+var_540] +000A1ED7: mov rax, [rbp+var_5F0] +000A1EDE: mov rdi, rax +000A1EE1: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A1EE6: mov ebx, eax +000A1EE8: lea rax, [rbp+var_540] +000A1EEF: mov rdi, rax; this +000A1EF2: call __ZNSsD1Ev; std::string::~string() +000A1EF7: lea rax, [rbp+var_5B0] +000A1EFE: mov rdi, rax; this +000A1F01: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A1F06: lea rax, [rbp+var_580] +000A1F0D: mov rdi, rax; this +000A1F10: call __ZNSsD1Ev; std::string::~string() +000A1F15: lea rax, [rbp+var_570] +000A1F1C: mov rdi, rax; this +000A1F1F: call __ZNSsD1Ev; std::string::~string() +000A1F24: lea rax, [rbp+var_561] +000A1F2B: mov rdi, rax +000A1F2E: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A1F33: jmp loc_A2EDE +000A1F38: mov rax, [rbp+var_5E8] +000A1F3F: add rax, 28h ; '(' +000A1F43: mov rdi, rax +000A1F46: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A1F4B: mov rdx, rax +000A1F4E: mov rax, [rbp+var_5F0] +000A1F55: mov rsi, rdx +000A1F58: mov rdi, rax +000A1F5B: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs; nlohmann::detail::json_sax_dom_callback_parser>>>::key(std::string &) +000A1F60: xor eax, 1 +000A1F63: movzx eax, al +000A1F66: test rax, rax +000A1F69: setnz al +000A1F6C: test al, al +000A1F6E: jz short loc_A1F7A +000A1F70: mov ebx, 0 +000A1F75: jmp loc_A2EDE +000A1F7A: mov rax, [rbp+var_5E8] +000A1F81: mov rdi, rax +000A1F84: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A1F89: cmp eax, 0Ch +000A1F8C: setnz al +000A1F8F: movzx eax, al +000A1F92: test rax, rax +000A1F95: setnz al +000A1F98: test al, al +000A1F9A: jz loc_A20EB +000A1FA0: lea rax, [rbp+var_4C1] +000A1FA7: mov rdi, rax +000A1FAA: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A1FAF: lea rdx, [rbp+var_4C1] +000A1FB6: lea rax, [rbp+var_4D0] +000A1FBD: lea rsi, aObjectSeparato; "object separator" +000A1FC4: mov rdi, rax +000A1FC7: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A1FCC: lea rax, [rbp+var_4E0] +000A1FD3: lea rdx, [rbp+var_4D0] +000A1FDA: mov rsi, [rbp+var_5E8] +000A1FE1: mov rcx, rdx +000A1FE4: mov edx, 0Ch +000A1FE9: mov rdi, rax +000A1FEC: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A1FF1: mov rax, [rbp+var_5E8] +000A1FF8: lea rdx, [rax+28h] +000A1FFC: lea rax, [rbp+var_4C0] +000A2003: mov rsi, rdx +000A2006: mov rdi, rax +000A2009: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A200E: lea rax, [rbp+var_510] +000A2015: lea rcx, [rbp+var_4E0]; std::string * +000A201C: lea rdx, [rbp+var_4C0]; nlohmann::detail::position_t * +000A2023: mov esi, 65h ; 'e'; int +000A2028: mov rdi, rax; this +000A202B: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A2030: mov rax, [rbp+var_5E8] +000A2037: lea rdx, [rax+28h] +000A203B: lea rax, [rbp+var_4A0] +000A2042: mov rsi, rdx +000A2045: mov rdi, rax +000A2048: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A204D: mov rax, [rbp+var_5E8] +000A2054: lea rdx, [rax+28h] +000A2058: lea rax, [rbp+var_490] +000A205F: mov rsi, rdx +000A2062: mov rdi, rax +000A2065: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A206A: lea rax, [rbp+var_490] +000A2071: mov rdi, rax +000A2074: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A2079: mov rsi, rax +000A207C: lea rcx, [rbp+var_510] +000A2083: lea rdx, [rbp+var_4A0] +000A208A: mov rax, [rbp+var_5F0] +000A2091: mov rdi, rax +000A2094: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A2099: mov ebx, eax +000A209B: lea rax, [rbp+var_4A0] +000A20A2: mov rdi, rax; this +000A20A5: call __ZNSsD1Ev; std::string::~string() +000A20AA: lea rax, [rbp+var_510] +000A20B1: mov rdi, rax; this +000A20B4: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A20B9: lea rax, [rbp+var_4E0] +000A20C0: mov rdi, rax; this +000A20C3: call __ZNSsD1Ev; std::string::~string() +000A20C8: lea rax, [rbp+var_4D0] +000A20CF: mov rdi, rax; this +000A20D2: call __ZNSsD1Ev; std::string::~string() +000A20D7: lea rax, [rbp+var_4C1] +000A20DE: mov rdi, rax +000A20E1: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A20E6: jmp loc_A2EDE +000A20EB: lea rax, [rbp+var_5E0] +000A20F2: mov esi, 0 +000A20F7: mov rdi, rax +000A20FA: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A20FF: mov rax, [rbp+var_5E8] +000A2106: mov rdi, rax +000A2109: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A210E: jmp loc_A2ED9 +000A2113: mov rax, [rbp+var_5F0]; jumptable 00000000000A1D58 case 8 +000A211A: mov rsi, 0FFFFFFFFFFFFFFFFh +000A2121: mov rdi, rax +000A2124: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm; nlohmann::detail::json_sax_dom_callback_parser>>>::start_array(ulong) +000A2129: xor eax, 1 +000A212C: movzx eax, al +000A212F: test rax, rax +000A2132: setnz al +000A2135: test al, al +000A2137: jz short loc_A2143 +000A2139: mov ebx, 0 +000A213E: jmp loc_A2EDE +000A2143: mov rax, [rbp+var_5E8] +000A214A: mov rdi, rax +000A214D: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A2152: cmp eax, 0Ah +000A2155: setz al +000A2158: test al, al +000A215A: jz short loc_A218A +000A215C: mov rax, [rbp+var_5F0] +000A2163: mov rdi, rax +000A2166: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv; nlohmann::detail::json_sax_dom_callback_parser>>>::end_array(void) +000A216B: xor eax, 1 +000A216E: movzx eax, al +000A2171: test rax, rax +000A2174: setnz al +000A2177: test al, al +000A2179: jz short loc_A2185 +000A217B: mov ebx, 0 +000A2180: jmp loc_A2EDE +000A2185: jmp loc_A277E +000A218A: lea rax, [rbp+var_5E0] +000A2191: mov esi, 1 +000A2196: mov rdi, rax +000A2199: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A219E: jmp loc_A2ED9 +000A21A3: mov rax, [rbp+var_5E8]; jumptable 00000000000A1D58 case 7 +000A21AA: add rax, 28h ; '(' +000A21AE: mov rdi, rax +000A21B1: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_number_floatEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_number_float(void) +000A21B6: movsd [rbp+var_5F8], xmm0 +000A21BE: mov rax, [rbp+var_5F8] +000A21C5: mov [rbp+var_20], rax +000A21C9: mov rax, [rbp+var_20] +000A21CD: mov [rbp+var_5F8], rax +000A21D4: movsd xmm0, [rbp+var_5F8]; double +000A21DC: call __ZSt8isfinited; std::isfinite(double) +000A21E1: xor eax, 1 +000A21E4: movzx eax, al +000A21E7: test rax, rax +000A21EA: setnz al +000A21ED: test al, al +000A21EF: jz loc_A2325 +000A21F5: mov rax, [rbp+var_5E8] +000A21FC: lea rdx, [rax+28h] +000A2200: lea rax, [rbp+var_430] +000A2207: mov rsi, rdx +000A220A: mov rdi, rax +000A220D: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A2212: lea rax, [rbp+var_440] +000A2219: lea rdx, [rbp+var_430] +000A2220: lea rsi, aNumberOverflow; "number overflow parsing '" +000A2227: mov rdi, rax +000A222A: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A222F: lea rax, [rbp+var_450] +000A2236: lea rcx, [rbp+var_440] +000A223D: lea rdx, asc_CEB1C; "'" +000A2244: mov rsi, rcx +000A2247: mov rdi, rax +000A224A: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +000A224F: lea rax, [rbp+var_470] +000A2256: lea rdx, [rbp+var_450]; std::string * +000A225D: mov esi, 196h; int +000A2262: mov rdi, rax; this +000A2265: call __ZN8nlohmann6detail12out_of_range6createEiRKSs; nlohmann::detail::out_of_range::create(int,std::string const&) +000A226A: mov rax, [rbp+var_5E8] +000A2271: lea rdx, [rax+28h] +000A2275: lea rax, [rbp+var_420] +000A227C: mov rsi, rdx +000A227F: mov rdi, rax +000A2282: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A2287: mov rax, [rbp+var_5E8] +000A228E: lea rdx, [rax+28h] +000A2292: lea rax, [rbp+var_410] +000A2299: mov rsi, rdx +000A229C: mov rdi, rax +000A229F: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A22A4: lea rax, [rbp+var_410] +000A22AB: mov rdi, rax +000A22AE: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A22B3: mov rsi, rax +000A22B6: lea rcx, [rbp+var_470] +000A22BD: lea rdx, [rbp+var_420] +000A22C4: mov rax, [rbp+var_5F0] +000A22CB: mov rdi, rax +000A22CE: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::out_of_range const&) +000A22D3: mov ebx, eax +000A22D5: lea rax, [rbp+var_420] +000A22DC: mov rdi, rax; this +000A22DF: call __ZNSsD1Ev; std::string::~string() +000A22E4: lea rax, [rbp+var_470] +000A22EB: mov rdi, rax; this +000A22EE: call __ZN8nlohmann6detail12out_of_rangeD2Ev; nlohmann::detail::out_of_range::~out_of_range() +000A22F3: lea rax, [rbp+var_450] +000A22FA: mov rdi, rax; this +000A22FD: call __ZNSsD1Ev; std::string::~string() +000A2302: lea rax, [rbp+var_440] +000A2309: mov rdi, rax; this +000A230C: call __ZNSsD1Ev; std::string::~string() +000A2311: lea rax, [rbp+var_430] +000A2318: mov rdi, rax; this +000A231B: call __ZNSsD1Ev; std::string::~string() +000A2320: jmp loc_A2EDE +000A2325: mov rax, [rbp+var_5E8] +000A232C: add rax, 28h ; '(' +000A2330: mov rdi, rax +000A2333: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A2338: mov rcx, rax +000A233B: mov rax, [rbp+var_20] +000A233F: mov rdx, [rbp+var_5F0] +000A2346: mov rsi, rcx +000A2349: mov [rbp+var_5F8], rax +000A2350: movsd xmm0, [rbp+var_5F8] +000A2358: mov rdi, rdx +000A235B: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs; nlohmann::detail::json_sax_dom_callback_parser>>>::number_float(double,std::string const&) +000A2360: xor eax, 1 +000A2363: movzx eax, al +000A2366: test rax, rax +000A2369: setnz al +000A236C: test al, al +000A236E: jz short loc_A237A +000A2370: mov ebx, 0 +000A2375: jmp loc_A2EDE +000A237A: jmp loc_A277E +000A237F: mov rax, [rbp+var_5F0]; jumptable 00000000000A1D58 case 2 +000A2386: mov esi, 0 +000A238B: mov rdi, rax +000A238E: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb; nlohmann::detail::json_sax_dom_callback_parser>>>::boolean(bool) +000A2393: xor eax, 1 +000A2396: movzx eax, al +000A2399: test rax, rax +000A239C: setnz al +000A239F: test al, al +000A23A1: jz short loc_A23AD +000A23A3: mov ebx, 0 +000A23A8: jmp loc_A2EDE +000A23AD: jmp loc_A277E +000A23B2: mov rax, [rbp+var_5F0]; jumptable 00000000000A1D58 case 3 +000A23B9: mov rdi, rax +000A23BC: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv; nlohmann::detail::json_sax_dom_callback_parser>>>::null(void) +000A23C1: xor eax, 1 +000A23C4: movzx eax, al +000A23C7: test rax, rax +000A23CA: setnz al +000A23CD: test al, al +000A23CF: jz short loc_A23DB +000A23D1: mov ebx, 0 +000A23D6: jmp loc_A2EDE +000A23DB: jmp loc_A277E +000A23E0: mov rax, [rbp+var_5F0]; jumptable 00000000000A1D58 case 1 +000A23E7: mov esi, 1 +000A23EC: mov rdi, rax +000A23EF: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb; nlohmann::detail::json_sax_dom_callback_parser>>>::boolean(bool) +000A23F4: xor eax, 1 +000A23F7: movzx eax, al +000A23FA: test rax, rax +000A23FD: setnz al +000A2400: test al, al +000A2402: jz short loc_A240E +000A2404: mov ebx, 0 +000A2409: jmp loc_A2EDE +000A240E: jmp loc_A277E +000A2413: mov rax, [rbp+var_5E8]; jumptable 00000000000A1D58 case 6 +000A241A: add rax, 28h ; '(' +000A241E: mov rdi, rax +000A2421: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18get_number_integerEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_number_integer(void) +000A2426: mov rdx, rax +000A2429: mov rax, [rbp+var_5F0] +000A2430: mov rsi, rdx +000A2433: mov rdi, rax +000A2436: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl; nlohmann::detail::json_sax_dom_callback_parser>>>::number_integer(long) +000A243B: xor eax, 1 +000A243E: movzx eax, al +000A2441: test rax, rax +000A2444: setnz al +000A2447: test al, al +000A2449: jz short loc_A2455 +000A244B: mov ebx, 0 +000A2450: jmp loc_A2EDE +000A2455: jmp loc_A277E +000A245A: mov rax, [rbp+var_5E8]; jumptable 00000000000A1D58 case 4 +000A2461: add rax, 28h ; '(' +000A2465: mov rdi, rax +000A2468: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A246D: mov rdx, rax +000A2470: mov rax, [rbp+var_5F0] +000A2477: mov rsi, rdx +000A247A: mov rdi, rax +000A247D: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs; nlohmann::detail::json_sax_dom_callback_parser>>>::string(std::string &) +000A2482: xor eax, 1 +000A2485: movzx eax, al +000A2488: test rax, rax +000A248B: setnz al +000A248E: test al, al +000A2490: jz short loc_A249C +000A2492: mov ebx, 0 +000A2497: jmp loc_A2EDE +000A249C: jmp loc_A277E +000A24A1: mov rax, [rbp+var_5E8]; jumptable 00000000000A1D58 case 5 +000A24A8: add rax, 28h ; '(' +000A24AC: mov rdi, rax +000A24AF: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE19get_number_unsignedEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_number_unsigned(void) +000A24B4: mov rdx, rax +000A24B7: mov rax, [rbp+var_5F0] +000A24BE: mov rsi, rdx +000A24C1: mov rdi, rax +000A24C4: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm; nlohmann::detail::json_sax_dom_callback_parser>>>::number_unsigned(ulong) +000A24C9: xor eax, 1 +000A24CC: movzx eax, al +000A24CF: test rax, rax +000A24D2: setnz al +000A24D5: test al, al +000A24D7: jz short loc_A24E3 +000A24D9: mov ebx, 0 +000A24DE: jmp loc_A2EDE +000A24E3: jmp loc_A277E +000A24E8: lea rax, [rbp+var_3A1]; jumptable 00000000000A1D58 case 14 +000A24EF: mov rdi, rax +000A24F2: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A24F7: lea rdx, [rbp+var_3A1] +000A24FE: lea rax, [rbp+var_3B0] +000A2505: lea rsi, aValue; "value" +000A250C: mov rdi, rax +000A250F: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A2514: lea rax, [rbp+var_3C0] +000A251B: lea rdx, [rbp+var_3B0] +000A2522: mov rsi, [rbp+var_5E8] +000A2529: mov rcx, rdx +000A252C: mov edx, 0 +000A2531: mov rdi, rax +000A2534: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A2539: mov rax, [rbp+var_5E8] +000A2540: lea rdx, [rax+28h] +000A2544: lea rax, [rbp+var_3A0] +000A254B: mov rsi, rdx +000A254E: mov rdi, rax +000A2551: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2556: lea rax, [rbp+var_3F0] +000A255D: lea rcx, [rbp+var_3C0]; std::string * +000A2564: lea rdx, [rbp+var_3A0]; nlohmann::detail::position_t * +000A256B: mov esi, 65h ; 'e'; int +000A2570: mov rdi, rax; this +000A2573: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A2578: mov rax, [rbp+var_5E8] +000A257F: lea rdx, [rax+28h] +000A2583: lea rax, [rbp+var_380] +000A258A: mov rsi, rdx +000A258D: mov rdi, rax +000A2590: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A2595: mov rax, [rbp+var_5E8] +000A259C: lea rdx, [rax+28h] +000A25A0: lea rax, [rbp+var_370] +000A25A7: mov rsi, rdx +000A25AA: mov rdi, rax +000A25AD: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A25B2: lea rax, [rbp+var_370] +000A25B9: mov rdi, rax +000A25BC: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A25C1: mov rsi, rax +000A25C4: lea rcx, [rbp+var_3F0] +000A25CB: lea rdx, [rbp+var_380] +000A25D2: mov rax, [rbp+var_5F0] +000A25D9: mov rdi, rax +000A25DC: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A25E1: mov ebx, eax +000A25E3: lea rax, [rbp+var_380] +000A25EA: mov rdi, rax; this +000A25ED: call __ZNSsD1Ev; std::string::~string() +000A25F2: lea rax, [rbp+var_3F0] +000A25F9: mov rdi, rax; this +000A25FC: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A2601: lea rax, [rbp+var_3C0] +000A2608: mov rdi, rax; this +000A260B: call __ZNSsD1Ev; std::string::~string() +000A2610: lea rax, [rbp+var_3B0] +000A2617: mov rdi, rax; this +000A261A: call __ZNSsD1Ev; std::string::~string() +000A261F: lea rax, [rbp+var_3A1] +000A2626: mov rdi, rax +000A2629: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A262E: jmp loc_A2EDE +000A2633: lea rax, [rbp+var_301]; jumptable 00000000000A1D58 default case, cases 0,10-13 +000A263A: mov rdi, rax +000A263D: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A2642: lea rdx, [rbp+var_301] +000A2649: lea rax, [rbp+var_310] +000A2650: lea rsi, aValue; "value" +000A2657: mov rdi, rax +000A265A: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A265F: lea rax, [rbp+var_320] +000A2666: lea rdx, [rbp+var_310] +000A266D: mov rsi, [rbp+var_5E8] +000A2674: mov rcx, rdx +000A2677: mov edx, 10h +000A267C: mov rdi, rax +000A267F: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A2684: mov rax, [rbp+var_5E8] +000A268B: lea rdx, [rax+28h] +000A268F: lea rax, [rbp+var_300] +000A2696: mov rsi, rdx +000A2699: mov rdi, rax +000A269C: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A26A1: lea rax, [rbp+var_350] +000A26A8: lea rcx, [rbp+var_320]; std::string * +000A26AF: lea rdx, [rbp+var_300]; nlohmann::detail::position_t * +000A26B6: mov esi, 65h ; 'e'; int +000A26BB: mov rdi, rax; this +000A26BE: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A26C3: mov rax, [rbp+var_5E8] +000A26CA: lea rdx, [rax+28h] +000A26CE: lea rax, [rbp+var_2E0] +000A26D5: mov rsi, rdx +000A26D8: mov rdi, rax +000A26DB: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A26E0: mov rax, [rbp+var_5E8] +000A26E7: lea rdx, [rax+28h] +000A26EB: lea rax, [rbp+var_2D0] +000A26F2: mov rsi, rdx +000A26F5: mov rdi, rax +000A26F8: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A26FD: lea rax, [rbp+var_2D0] +000A2704: mov rdi, rax +000A2707: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A270C: mov rsi, rax +000A270F: lea rcx, [rbp+var_350] +000A2716: lea rdx, [rbp+var_2E0] +000A271D: mov rax, [rbp+var_5F0] +000A2724: mov rdi, rax +000A2727: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A272C: mov ebx, eax +000A272E: lea rax, [rbp+var_2E0] +000A2735: mov rdi, rax; this +000A2738: call __ZNSsD1Ev; std::string::~string() +000A273D: lea rax, [rbp+var_350] +000A2744: mov rdi, rax; this +000A2747: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A274C: lea rax, [rbp+var_320] +000A2753: mov rdi, rax; this +000A2756: call __ZNSsD1Ev; std::string::~string() +000A275B: lea rax, [rbp+var_310] +000A2762: mov rdi, rax; this +000A2765: call __ZNSsD1Ev; std::string::~string() +000A276A: lea rax, [rbp+var_301] +000A2771: mov rdi, rax +000A2774: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A2779: jmp loc_A2EDE +000A277E: jmp short loc_A2784 +000A2780: mov [rbp+var_11], 0 +000A2784: lea rax, [rbp+var_5E0] +000A278B: mov rdi, rax +000A278E: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A2793: test al, al +000A2795: jz short loc_A27A1 +000A2797: mov ebx, 1 +000A279C: jmp loc_A2EDE +000A27A1: lea rax, [rbp+var_5E0] +000A27A8: mov rdi, rax +000A27AB: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000A27B0: mov [rbp+var_2B0], rax +000A27B7: mov [rbp+var_2A8], rdx +000A27BE: lea rax, [rbp+var_2B0] +000A27C5: mov rdi, rax +000A27C8: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000A27CD: test al, al +000A27CF: jz loc_A29D8 +000A27D5: mov rax, [rbp+var_5E8] +000A27DC: mov rdi, rax +000A27DF: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A27E4: cmp eax, 0Dh +000A27E7: setz al +000A27EA: test al, al +000A27EC: jz short loc_A2802 +000A27EE: mov rax, [rbp+var_5E8] +000A27F5: mov rdi, rax +000A27F8: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A27FD: jmp loc_A2ED9 +000A2802: mov rax, [rbp+var_5E8] +000A2809: mov eax, [rax+20h] +000A280C: cmp eax, 0Ah +000A280F: setz al +000A2812: movzx eax, al +000A2815: test rax, rax +000A2818: jz short loc_A288D +000A281A: mov rax, [rbp+var_5F0] +000A2821: mov rdi, rax +000A2824: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv; nlohmann::detail::json_sax_dom_callback_parser>>>::end_array(void) +000A2829: xor eax, 1 +000A282C: movzx eax, al +000A282F: test rax, rax +000A2832: setnz al +000A2835: test al, al +000A2837: jz short loc_A2843 +000A2839: mov ebx, 0 +000A283E: jmp loc_A2EDE +000A2843: lea rax, [rbp+var_5E0] +000A284A: mov rdi, rax +000A284D: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A2852: test al, al +000A2854: jz short loc_A2875 +000A2856: lea rcx, _ZZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_E19__PRETTY_FUNCTION__; "bool nlohmann::detail::parser>::pop_back(void) +000A2884: mov [rbp+var_11], 1 +000A2888: jmp loc_A2ED9 +000A288D: lea rax, [rbp+var_251] +000A2894: mov rdi, rax +000A2897: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A289C: lea rdx, [rbp+var_251] +000A28A3: lea rax, [rbp+var_260] +000A28AA: lea rsi, aArray; "array" +000A28B1: mov rdi, rax +000A28B4: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A28B9: lea rax, [rbp+var_270] +000A28C0: lea rdx, [rbp+var_260] +000A28C7: mov rsi, [rbp+var_5E8] +000A28CE: mov rcx, rdx +000A28D1: mov edx, 0Ah +000A28D6: mov rdi, rax +000A28D9: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A28DE: mov rax, [rbp+var_5E8] +000A28E5: lea rdx, [rax+28h] +000A28E9: lea rax, [rbp+var_250] +000A28F0: mov rsi, rdx +000A28F3: mov rdi, rax +000A28F6: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A28FB: lea rax, [rbp+var_2A0] +000A2902: lea rcx, [rbp+var_270]; std::string * +000A2909: lea rdx, [rbp+var_250]; nlohmann::detail::position_t * +000A2910: mov esi, 65h ; 'e'; int +000A2915: mov rdi, rax; this +000A2918: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A291D: mov rax, [rbp+var_5E8] +000A2924: lea rdx, [rax+28h] +000A2928: lea rax, [rbp+var_230] +000A292F: mov rsi, rdx +000A2932: mov rdi, rax +000A2935: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A293A: mov rax, [rbp+var_5E8] +000A2941: lea rdx, [rax+28h] +000A2945: lea rax, [rbp+var_220] +000A294C: mov rsi, rdx +000A294F: mov rdi, rax +000A2952: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2957: lea rax, [rbp+var_220] +000A295E: mov rdi, rax +000A2961: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A2966: mov rsi, rax +000A2969: lea rcx, [rbp+var_2A0] +000A2970: lea rdx, [rbp+var_230] +000A2977: mov rax, [rbp+var_5F0] +000A297E: mov rdi, rax +000A2981: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A2986: mov ebx, eax +000A2988: lea rax, [rbp+var_230] +000A298F: mov rdi, rax; this +000A2992: call __ZNSsD1Ev; std::string::~string() +000A2997: lea rax, [rbp+var_2A0] +000A299E: mov rdi, rax; this +000A29A1: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A29A6: lea rax, [rbp+var_270] +000A29AD: mov rdi, rax; this +000A29B0: call __ZNSsD1Ev; std::string::~string() +000A29B5: lea rax, [rbp+var_260] +000A29BC: mov rdi, rax; this +000A29BF: call __ZNSsD1Ev; std::string::~string() +000A29C4: lea rax, [rbp+var_251] +000A29CB: mov rdi, rax +000A29CE: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A29D3: jmp loc_A2EDE +000A29D8: mov rax, [rbp+var_5E8] +000A29DF: mov rdi, rax +000A29E2: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A29E7: cmp eax, 0Dh +000A29EA: setz al +000A29ED: test al, al +000A29EF: jz loc_A2D2D +000A29F5: mov rax, [rbp+var_5E8] +000A29FC: mov rdi, rax +000A29FF: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A2A04: cmp eax, 4 +000A2A07: setnz al +000A2A0A: movzx eax, al +000A2A0D: test rax, rax +000A2A10: setnz al +000A2A13: test al, al +000A2A15: jz loc_A2B66 +000A2A1B: lea rax, [rbp+var_1B1] +000A2A22: mov rdi, rax +000A2A25: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A2A2A: lea rdx, [rbp+var_1B1] +000A2A31: lea rax, [rbp+var_1C0] +000A2A38: lea rsi, aObjectKey; "object key" +000A2A3F: mov rdi, rax +000A2A42: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A2A47: lea rax, [rbp+var_1D0] +000A2A4E: lea rdx, [rbp+var_1C0] +000A2A55: mov rsi, [rbp+var_5E8] +000A2A5C: mov rcx, rdx +000A2A5F: mov edx, 4 +000A2A64: mov rdi, rax +000A2A67: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A2A6C: mov rax, [rbp+var_5E8] +000A2A73: lea rdx, [rax+28h] +000A2A77: lea rax, [rbp+var_1B0] +000A2A7E: mov rsi, rdx +000A2A81: mov rdi, rax +000A2A84: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2A89: lea rax, [rbp+var_200] +000A2A90: lea rcx, [rbp+var_1D0]; std::string * +000A2A97: lea rdx, [rbp+var_1B0]; nlohmann::detail::position_t * +000A2A9E: mov esi, 65h ; 'e'; int +000A2AA3: mov rdi, rax; this +000A2AA6: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A2AAB: mov rax, [rbp+var_5E8] +000A2AB2: lea rdx, [rax+28h] +000A2AB6: lea rax, [rbp+var_190] +000A2ABD: mov rsi, rdx +000A2AC0: mov rdi, rax +000A2AC3: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A2AC8: mov rax, [rbp+var_5E8] +000A2ACF: lea rdx, [rax+28h] +000A2AD3: lea rax, [rbp+var_180] +000A2ADA: mov rsi, rdx +000A2ADD: mov rdi, rax +000A2AE0: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2AE5: lea rax, [rbp+var_180] +000A2AEC: mov rdi, rax +000A2AEF: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A2AF4: mov rsi, rax +000A2AF7: lea rcx, [rbp+var_200] +000A2AFE: lea rdx, [rbp+var_190] +000A2B05: mov rax, [rbp+var_5F0] +000A2B0C: mov rdi, rax +000A2B0F: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A2B14: mov ebx, eax +000A2B16: lea rax, [rbp+var_190] +000A2B1D: mov rdi, rax; this +000A2B20: call __ZNSsD1Ev; std::string::~string() +000A2B25: lea rax, [rbp+var_200] +000A2B2C: mov rdi, rax; this +000A2B2F: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A2B34: lea rax, [rbp+var_1D0] +000A2B3B: mov rdi, rax; this +000A2B3E: call __ZNSsD1Ev; std::string::~string() +000A2B43: lea rax, [rbp+var_1C0] +000A2B4A: mov rdi, rax; this +000A2B4D: call __ZNSsD1Ev; std::string::~string() +000A2B52: lea rax, [rbp+var_1B1] +000A2B59: mov rdi, rax +000A2B5C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A2B61: jmp loc_A2EDE +000A2B66: mov rax, [rbp+var_5E8] +000A2B6D: add rax, 28h ; '(' +000A2B71: mov rdi, rax +000A2B74: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A2B79: mov rdx, rax +000A2B7C: mov rax, [rbp+var_5F0] +000A2B83: mov rsi, rdx +000A2B86: mov rdi, rax +000A2B89: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs; nlohmann::detail::json_sax_dom_callback_parser>>>::key(std::string &) +000A2B8E: xor eax, 1 +000A2B91: movzx eax, al +000A2B94: test rax, rax +000A2B97: setnz al +000A2B9A: test al, al +000A2B9C: jz short loc_A2BA8 +000A2B9E: mov ebx, 0 +000A2BA3: jmp loc_A2EDE +000A2BA8: mov rax, [rbp+var_5E8] +000A2BAF: mov rdi, rax +000A2BB2: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A2BB7: cmp eax, 0Ch +000A2BBA: setnz al +000A2BBD: movzx eax, al +000A2BC0: test rax, rax +000A2BC3: setnz al +000A2BC6: test al, al +000A2BC8: jz loc_A2D19 +000A2BCE: lea rax, [rbp+var_111] +000A2BD5: mov rdi, rax +000A2BD8: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A2BDD: lea rdx, [rbp+var_111] +000A2BE4: lea rax, [rbp+var_120] +000A2BEB: lea rsi, aObjectSeparato; "object separator" +000A2BF2: mov rdi, rax +000A2BF5: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A2BFA: lea rax, [rbp+var_130] +000A2C01: lea rdx, [rbp+var_120] +000A2C08: mov rsi, [rbp+var_5E8] +000A2C0F: mov rcx, rdx +000A2C12: mov edx, 0Ch +000A2C17: mov rdi, rax +000A2C1A: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A2C1F: mov rax, [rbp+var_5E8] +000A2C26: lea rdx, [rax+28h] +000A2C2A: lea rax, [rbp+var_110] +000A2C31: mov rsi, rdx +000A2C34: mov rdi, rax +000A2C37: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2C3C: lea rax, [rbp+var_160] +000A2C43: lea rcx, [rbp+var_130]; std::string * +000A2C4A: lea rdx, [rbp+var_110]; nlohmann::detail::position_t * +000A2C51: mov esi, 65h ; 'e'; int +000A2C56: mov rdi, rax; this +000A2C59: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A2C5E: mov rax, [rbp+var_5E8] +000A2C65: lea rdx, [rax+28h] +000A2C69: lea rax, [rbp+var_F0] +000A2C70: mov rsi, rdx +000A2C73: mov rdi, rax +000A2C76: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A2C7B: mov rax, [rbp+var_5E8] +000A2C82: lea rdx, [rax+28h] +000A2C86: lea rax, [rbp+var_E0] +000A2C8D: mov rsi, rdx +000A2C90: mov rdi, rax +000A2C93: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2C98: lea rax, [rbp+var_E0] +000A2C9F: mov rdi, rax +000A2CA2: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A2CA7: mov rsi, rax +000A2CAA: lea rcx, [rbp+var_160] +000A2CB1: lea rdx, [rbp+var_F0] +000A2CB8: mov rax, [rbp+var_5F0] +000A2CBF: mov rdi, rax +000A2CC2: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A2CC7: mov ebx, eax +000A2CC9: lea rax, [rbp+var_F0] +000A2CD0: mov rdi, rax; this +000A2CD3: call __ZNSsD1Ev; std::string::~string() +000A2CD8: lea rax, [rbp+var_160] +000A2CDF: mov rdi, rax; this +000A2CE2: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A2CE7: lea rax, [rbp+var_130] +000A2CEE: mov rdi, rax; this +000A2CF1: call __ZNSsD1Ev; std::string::~string() +000A2CF6: lea rax, [rbp+var_120] +000A2CFD: mov rdi, rax; this +000A2D00: call __ZNSsD1Ev; std::string::~string() +000A2D05: lea rax, [rbp+var_111] +000A2D0C: mov rdi, rax +000A2D0F: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A2D14: jmp loc_A2EDE +000A2D19: mov rax, [rbp+var_5E8] +000A2D20: mov rdi, rax +000A2D23: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A2D28: jmp loc_A2ED9 +000A2D2D: mov rax, [rbp+var_5E8] +000A2D34: mov eax, [rax+20h] +000A2D37: cmp eax, 0Bh +000A2D3A: setz al +000A2D3D: movzx eax, al +000A2D40: test rax, rax +000A2D43: jz short loc_A2DB8 +000A2D45: mov rax, [rbp+var_5F0] +000A2D4C: mov rdi, rax +000A2D4F: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv; nlohmann::detail::json_sax_dom_callback_parser>>>::end_object(void) +000A2D54: xor eax, 1 +000A2D57: movzx eax, al +000A2D5A: test rax, rax +000A2D5D: setnz al +000A2D60: test al, al +000A2D62: jz short loc_A2D6E +000A2D64: mov ebx, 0 +000A2D69: jmp loc_A2EDE +000A2D6E: lea rax, [rbp+var_5E0] +000A2D75: mov rdi, rax +000A2D78: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A2D7D: test al, al +000A2D7F: jz short loc_A2DA0 +000A2D81: lea rcx, _ZZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_28json_sax_dom_callback_parserIS8_EEEEbPT_E19__PRETTY_FUNCTION__; "bool nlohmann::detail::parser>::pop_back(void) +000A2DAF: mov [rbp+var_11], 1 +000A2DB3: jmp loc_A2ED9 +000A2DB8: lea rax, [rbp+var_71] +000A2DBC: mov rdi, rax +000A2DBF: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A2DC4: lea rdx, [rbp+var_71] +000A2DC8: lea rax, [rbp+var_80] +000A2DCC: lea rsi, aObject; "object" +000A2DD3: mov rdi, rax +000A2DD6: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A2DDB: lea rax, [rbp+var_90] +000A2DE2: lea rdx, [rbp+var_80] +000A2DE6: mov rsi, [rbp+var_5E8] +000A2DED: mov rcx, rdx +000A2DF0: mov edx, 0Bh +000A2DF5: mov rdi, rax +000A2DF8: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A2DFD: mov rax, [rbp+var_5E8] +000A2E04: lea rdx, [rax+28h] +000A2E08: lea rax, [rbp+var_70] +000A2E0C: mov rsi, rdx +000A2E0F: mov rdi, rax +000A2E12: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2E17: lea rax, [rbp+var_C0] +000A2E1E: lea rcx, [rbp+var_90]; std::string * +000A2E25: lea rdx, [rbp+var_70]; nlohmann::detail::position_t * +000A2E29: mov esi, 65h ; 'e'; int +000A2E2E: mov rdi, rax; this +000A2E31: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A2E36: mov rax, [rbp+var_5E8] +000A2E3D: lea rdx, [rax+28h] +000A2E41: lea rax, [rbp+var_50] +000A2E45: mov rsi, rdx +000A2E48: mov rdi, rax +000A2E4B: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A2E50: mov rax, [rbp+var_5E8] +000A2E57: lea rdx, [rax+28h] +000A2E5B: lea rax, [rbp+var_40] +000A2E5F: mov rsi, rdx +000A2E62: mov rdi, rax +000A2E65: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A2E6A: lea rax, [rbp+var_40] +000A2E6E: mov rdi, rax +000A2E71: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A2E76: mov rsi, rax +000A2E79: lea rcx, [rbp+var_C0] +000A2E80: lea rdx, [rbp+var_50] +000A2E84: mov rax, [rbp+var_5F0] +000A2E8B: mov rdi, rax +000A2E8E: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_callback_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A2E93: mov ebx, eax +000A2E95: lea rax, [rbp+var_50] +000A2E99: mov rdi, rax; this +000A2E9C: call __ZNSsD1Ev; std::string::~string() +000A2EA1: lea rax, [rbp+var_C0] +000A2EA8: mov rdi, rax; this +000A2EAB: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A2EB0: lea rax, [rbp+var_90] +000A2EB7: mov rdi, rax; this +000A2EBA: call __ZNSsD1Ev; std::string::~string() +000A2EBF: lea rax, [rbp+var_80] +000A2EC3: mov rdi, rax; this +000A2EC6: call __ZNSsD1Ev; std::string::~string() +000A2ECB: lea rax, [rbp+var_71] +000A2ECF: mov rdi, rax +000A2ED2: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A2ED7: jmp short loc_A2EDE +000A2ED9: jmp loc_A1D15 +000A2EDE: lea rax, [rbp+var_5E0] +000A2EE5: mov rdi, rax +000A2EE8: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +000A2EED: mov eax, ebx +000A2EEF: jmp loc_A32A1 +000A2EF4: mov rbx, rax +000A2EF7: lea rax, [rbp+var_540] +000A2EFE: mov rdi, rax; this +000A2F01: call __ZNSsD1Ev; std::string::~string() +000A2F06: jmp short loc_A2F0B +000A2F08: mov rbx, rax +000A2F0B: lea rax, [rbp+var_5B0] +000A2F12: mov rdi, rax; this +000A2F15: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A2F1A: jmp short loc_A2F1F +000A2F1C: mov rbx, rax +000A2F1F: lea rax, [rbp+var_580] +000A2F26: mov rdi, rax; this +000A2F29: call __ZNSsD1Ev; std::string::~string() +000A2F2E: jmp short loc_A2F33 +000A2F30: mov rbx, rax +000A2F33: lea rax, [rbp+var_570] +000A2F3A: mov rdi, rax; this +000A2F3D: call __ZNSsD1Ev; std::string::~string() +000A2F42: jmp short loc_A2F47 +000A2F44: mov rbx, rax +000A2F47: lea rax, [rbp+var_561] +000A2F4E: mov rdi, rax +000A2F51: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A2F56: jmp loc_A3287 +000A2F5B: mov rbx, rax +000A2F5E: lea rax, [rbp+var_4A0] +000A2F65: mov rdi, rax; this +000A2F68: call __ZNSsD1Ev; std::string::~string() +000A2F6D: jmp short loc_A2F72 +000A2F6F: mov rbx, rax +000A2F72: lea rax, [rbp+var_510] +000A2F79: mov rdi, rax; this +000A2F7C: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A2F81: jmp short loc_A2F86 +000A2F83: mov rbx, rax +000A2F86: lea rax, [rbp+var_4E0] +000A2F8D: mov rdi, rax; this +000A2F90: call __ZNSsD1Ev; std::string::~string() +000A2F95: jmp short loc_A2F9A +000A2F97: mov rbx, rax +000A2F9A: lea rax, [rbp+var_4D0] +000A2FA1: mov rdi, rax; this +000A2FA4: call __ZNSsD1Ev; std::string::~string() +000A2FA9: jmp short loc_A2FAE +000A2FAB: mov rbx, rax +000A2FAE: lea rax, [rbp+var_4C1] +000A2FB5: mov rdi, rax +000A2FB8: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A2FBD: jmp loc_A3287 +000A2FC2: mov rbx, rax +000A2FC5: lea rax, [rbp+var_420] +000A2FCC: mov rdi, rax; this +000A2FCF: call __ZNSsD1Ev; std::string::~string() +000A2FD4: jmp short loc_A2FD9 +000A2FD6: mov rbx, rax +000A2FD9: lea rax, [rbp+var_470] +000A2FE0: mov rdi, rax; this +000A2FE3: call __ZN8nlohmann6detail12out_of_rangeD2Ev; nlohmann::detail::out_of_range::~out_of_range() +000A2FE8: jmp short loc_A2FED +000A2FEA: mov rbx, rax +000A2FED: lea rax, [rbp+var_450] +000A2FF4: mov rdi, rax; this +000A2FF7: call __ZNSsD1Ev; std::string::~string() +000A2FFC: jmp short loc_A3001 +000A2FFE: mov rbx, rax +000A3001: lea rax, [rbp+var_440] +000A3008: mov rdi, rax; this +000A300B: call __ZNSsD1Ev; std::string::~string() +000A3010: jmp short loc_A3015 +000A3012: mov rbx, rax +000A3015: lea rax, [rbp+var_430] +000A301C: mov rdi, rax; this +000A301F: call __ZNSsD1Ev; std::string::~string() +000A3024: jmp loc_A3287 +000A3029: mov rbx, rax +000A302C: lea rax, [rbp+var_380] +000A3033: mov rdi, rax; this +000A3036: call __ZNSsD1Ev; std::string::~string() +000A303B: jmp short loc_A3040 +000A303D: mov rbx, rax +000A3040: lea rax, [rbp+var_3F0] +000A3047: mov rdi, rax; this +000A304A: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A304F: jmp short loc_A3054 +000A3051: mov rbx, rax +000A3054: lea rax, [rbp+var_3C0] +000A305B: mov rdi, rax; this +000A305E: call __ZNSsD1Ev; std::string::~string() +000A3063: jmp short loc_A3068 +000A3065: mov rbx, rax +000A3068: lea rax, [rbp+var_3B0] +000A306F: mov rdi, rax; this +000A3072: call __ZNSsD1Ev; std::string::~string() +000A3077: jmp short loc_A307C +000A3079: mov rbx, rax +000A307C: lea rax, [rbp+var_3A1] +000A3083: mov rdi, rax +000A3086: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A308B: jmp loc_A3287 +000A3090: mov rbx, rax +000A3093: lea rax, [rbp+var_2E0] +000A309A: mov rdi, rax; this +000A309D: call __ZNSsD1Ev; std::string::~string() +000A30A2: jmp short loc_A30A7 +000A30A4: mov rbx, rax +000A30A7: lea rax, [rbp+var_350] +000A30AE: mov rdi, rax; this +000A30B1: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A30B6: jmp short loc_A30BB +000A30B8: mov rbx, rax +000A30BB: lea rax, [rbp+var_320] +000A30C2: mov rdi, rax; this +000A30C5: call __ZNSsD1Ev; std::string::~string() +000A30CA: jmp short loc_A30CF +000A30CC: mov rbx, rax +000A30CF: lea rax, [rbp+var_310] +000A30D6: mov rdi, rax; this +000A30D9: call __ZNSsD1Ev; std::string::~string() +000A30DE: jmp short loc_A30E3 +000A30E0: mov rbx, rax +000A30E3: lea rax, [rbp+var_301] +000A30EA: mov rdi, rax +000A30ED: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A30F2: jmp loc_A3287 +000A30F7: mov rbx, rax +000A30FA: lea rax, [rbp+var_230] +000A3101: mov rdi, rax; this +000A3104: call __ZNSsD1Ev; std::string::~string() +000A3109: jmp short loc_A310E +000A310B: mov rbx, rax +000A310E: lea rax, [rbp+var_2A0] +000A3115: mov rdi, rax; this +000A3118: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A311D: jmp short loc_A3122 +000A311F: mov rbx, rax +000A3122: lea rax, [rbp+var_270] +000A3129: mov rdi, rax; this +000A312C: call __ZNSsD1Ev; std::string::~string() +000A3131: jmp short loc_A3136 +000A3133: mov rbx, rax +000A3136: lea rax, [rbp+var_260] +000A313D: mov rdi, rax; this +000A3140: call __ZNSsD1Ev; std::string::~string() +000A3145: jmp short loc_A314A +000A3147: mov rbx, rax +000A314A: lea rax, [rbp+var_251] +000A3151: mov rdi, rax +000A3154: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3159: jmp loc_A3287 +000A315E: mov rbx, rax +000A3161: lea rax, [rbp+var_190] +000A3168: mov rdi, rax; this +000A316B: call __ZNSsD1Ev; std::string::~string() +000A3170: jmp short loc_A3175 +000A3172: mov rbx, rax +000A3175: lea rax, [rbp+var_200] +000A317C: mov rdi, rax; this +000A317F: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A3184: jmp short loc_A3189 +000A3186: mov rbx, rax +000A3189: lea rax, [rbp+var_1D0] +000A3190: mov rdi, rax; this +000A3193: call __ZNSsD1Ev; std::string::~string() +000A3198: jmp short loc_A319D +000A319A: mov rbx, rax +000A319D: lea rax, [rbp+var_1C0] +000A31A4: mov rdi, rax; this +000A31A7: call __ZNSsD1Ev; std::string::~string() +000A31AC: jmp short loc_A31B1 +000A31AE: mov rbx, rax +000A31B1: lea rax, [rbp+var_1B1] +000A31B8: mov rdi, rax +000A31BB: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A31C0: jmp loc_A3287 +000A31C5: mov rbx, rax +000A31C8: lea rax, [rbp+var_F0] +000A31CF: mov rdi, rax; this +000A31D2: call __ZNSsD1Ev; std::string::~string() +000A31D7: jmp short loc_A31DC +000A31D9: mov rbx, rax +000A31DC: lea rax, [rbp+var_160] +000A31E3: mov rdi, rax; this +000A31E6: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A31EB: jmp short loc_A31F0 +000A31ED: mov rbx, rax +000A31F0: lea rax, [rbp+var_130] +000A31F7: mov rdi, rax; this +000A31FA: call __ZNSsD1Ev; std::string::~string() +000A31FF: jmp short loc_A3204 +000A3201: mov rbx, rax +000A3204: lea rax, [rbp+var_120] +000A320B: mov rdi, rax; this +000A320E: call __ZNSsD1Ev; std::string::~string() +000A3213: jmp short loc_A3218 +000A3215: mov rbx, rax +000A3218: lea rax, [rbp+var_111] +000A321F: mov rdi, rax +000A3222: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3227: jmp short loc_A3287 +000A3229: mov rbx, rax +000A322C: lea rax, [rbp+var_50] +000A3230: mov rdi, rax; this +000A3233: call __ZNSsD1Ev; std::string::~string() +000A3238: jmp short loc_A323D +000A323A: mov rbx, rax +000A323D: lea rax, [rbp+var_C0] +000A3244: mov rdi, rax; this +000A3247: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A324C: jmp short loc_A3251 +000A324E: mov rbx, rax +000A3251: lea rax, [rbp+var_90] +000A3258: mov rdi, rax; this +000A325B: call __ZNSsD1Ev; std::string::~string() +000A3260: jmp short loc_A3265 +000A3262: mov rbx, rax +000A3265: lea rax, [rbp+var_80] +000A3269: mov rdi, rax; this +000A326C: call __ZNSsD1Ev; std::string::~string() +000A3271: jmp short loc_A3276 +000A3273: mov rbx, rax +000A3276: lea rax, [rbp+var_71] +000A327A: mov rdi, rax +000A327D: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3282: jmp short loc_A3287 +000A3284: mov rbx, rax +000A3287: lea rax, [rbp+var_5E0] +000A328E: mov rdi, rax +000A3291: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +000A3296: mov rax, rbx +000A3299: mov rdi, rax; struct _Unwind_Exception * +000A329C: call __Unwind_Resume +000A32A1: add rsp, 5F8h +000A32A8: pop rbx +000A32A9: pop rbp +000A32AA: retn + +### FUNC 000A32AC - 000A32D8 (44 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv +000A32AC: push rbp +000A32AD: mov rbp, rsp +000A32B0: sub rsp, 10h +000A32B4: mov [rbp+var_8], rdi +000A32B8: mov rax, [rbp+var_8] +000A32BC: add rax, 28h ; '(' +000A32C0: mov rdi, rax +000A32C3: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE4scanEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan(void) +000A32C8: mov rdx, [rbp+var_8] +000A32CC: mov [rdx+20h], eax +000A32CF: mov rax, [rbp+var_8] +000A32D3: mov eax, [rax+20h] +000A32D6: leave +000A32D7: retn + +### FUNC 000A32D8 - 000A3309 (49 bytes) name=_ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv +000A32D8: push rbp +000A32D9: mov rbp, rsp +000A32DC: mov [rbp+var_8], rdi +000A32E0: mov [rbp+var_10], rsi +000A32E4: mov rax, [rbp+var_8] +000A32E8: mov rdx, [rbp+var_10] +000A32EC: mov rcx, [rdx+28h] +000A32F0: mov [rax], rcx +000A32F3: mov rcx, [rdx+30h] +000A32F7: mov [rax+8], rcx +000A32FB: mov rdx, [rdx+38h] +000A32FF: mov [rax+10h], rdx +000A3303: mov rax, [rbp+var_8] +000A3307: pop rbp +000A3308: retn + +### FUNC 000A330A - 000A343D (307 bytes) name=_ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv +000A330A: push rbp +000A330B: mov rbp, rsp +000A330E: push r12 +000A3310: push rbx +000A3311: sub rsp, 50h +000A3315: mov [rbp+var_58], rdi +000A3319: mov [rbp+var_60], rsi +000A331D: mov rax, [rbp+var_58] +000A3321: mov rdi, rax; this +000A3324: call __ZNSsC1Ev; std::string::string(void) +000A3329: mov rax, [rbp+var_60] +000A332D: add rax, 40h ; '@' +000A3331: mov [rbp+var_18], rax +000A3335: mov rax, [rbp+var_18] +000A3339: mov rdi, rax +000A333C: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000A3341: mov [rbp+var_30], rax +000A3345: mov rax, [rbp+var_18] +000A3349: mov rdi, rax +000A334C: call __ZNKSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +000A3351: mov [rbp+var_40], rax +000A3355: jmp loc_A33F9 +000A335A: lea rax, [rbp+var_30] +000A335E: mov rdi, rax +000A3361: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000A3366: movzx eax, byte ptr [rax] +000A3369: mov [rbp+var_19], al +000A336C: cmp [rbp+var_19], 1Fh +000A3370: ja short loc_A33D8 +000A3372: mov [rbp+var_50], 0 +000A337A: mov [rbp+var_48], 0 +000A337E: movzx r12d, [rbp+var_19] +000A3383: lea rax, [rbp+var_50] +000A3387: mov rdi, rax +000A338A: call __ZNKSt5arrayIcLm9EE4sizeEv; std::array::size(void) +000A338F: mov rbx, rax +000A3392: lea rax, [rbp+var_50] +000A3396: mov rdi, rax +000A3399: call __ZNSt5arrayIcLm9EE4dataEv; std::array::data(void) +000A339E: mov ecx, r12d +000A33A1: lea rdx, aU4x; "" +000A33A8: mov rsi, rbx; maxlen +000A33AB: mov rdi, rax; s +000A33AE: mov eax, 0 +000A33B3: call _snprintf +000A33B8: lea rax, [rbp+var_50] +000A33BC: mov rdi, rax +000A33BF: call __ZNSt5arrayIcLm9EE4dataEv; std::array::data(void) +000A33C4: mov rdx, rax +000A33C7: mov rax, [rbp+var_58] +000A33CB: mov rsi, rdx +000A33CE: mov rdi, rax +000A33D1: call __ZNSspLEPKc; std::string::operator+=(char const*) +000A33D6: jmp short loc_A33ED +000A33D8: movzx eax, [rbp+var_19] +000A33DC: movsx edx, al +000A33DF: mov rax, [rbp+var_58] +000A33E3: mov esi, edx; char +000A33E5: mov rdi, rax; this +000A33E8: call __ZNSs9push_backEc; std::string::push_back(char) +000A33ED: lea rax, [rbp+var_30] +000A33F1: mov rdi, rax +000A33F4: call __ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000A33F9: lea rdx, [rbp+var_40] +000A33FD: lea rax, [rbp+var_30] +000A3401: mov rsi, rdx +000A3404: mov rdi, rax +000A3407: call __ZN9__gnu_cxxneIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000A340C: test al, al +000A340E: jnz loc_A335A +000A3414: jmp short loc_A3430 +000A3416: mov rbx, rax +000A3419: mov rax, [rbp+var_58] +000A341D: mov rdi, rax; this +000A3420: call __ZNSsD1Ev; std::string::~string() +000A3425: mov rax, rbx +000A3428: mov rdi, rax; struct _Unwind_Exception * +000A342B: call __Unwind_Resume +000A3430: mov rax, [rbp+var_58] +000A3434: add rsp, 50h +000A3438: pop rbx +000A3439: pop r12 +000A343B: pop rbp +000A343C: retn + +### FUNC 000A343E - 000A38BB (1149 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs +000A343E: push rbp +000A343F: mov rbp, rsp +000A3442: push rbx +000A3443: sub rsp, 0E8h +000A344A: mov [rbp+var_D8], rdi +000A3451: mov [rbp+var_E0], rsi +000A3458: mov [rbp+var_E4], edx +000A345E: mov [rbp+var_F0], rcx +000A3465: lea rax, [rbp+var_C1] +000A346C: mov rdi, rax +000A346F: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A3474: lea rdx, [rbp+var_C1] +000A347B: mov rax, [rbp+var_D8] +000A3482: lea rsi, aSyntaxError; "syntax error " +000A3489: mov rdi, rax +000A348C: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A3491: lea rax, [rbp+var_C1] +000A3498: mov rdi, rax +000A349B: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A34A0: mov rax, [rbp+var_F0] +000A34A7: mov rdi, rax; this +000A34AA: call __ZNKSs5emptyEv; std::string::empty(void) +000A34AF: xor eax, 1 +000A34B2: test al, al +000A34B4: jz short loc_A352A +000A34B6: lea rax, [rbp+var_B0] +000A34BD: mov rdx, [rbp+var_F0] +000A34C4: lea rsi, aWhileParsing; "while parsing " +000A34CB: mov rdi, rax +000A34CE: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator> const&) +000A34D3: lea rax, [rbp+var_C0] +000A34DA: lea rcx, [rbp+var_B0] +000A34E1: lea rdx, asc_CEB54; " " +000A34E8: mov rsi, rcx +000A34EB: mov rdi, rax +000A34EE: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +000A34F3: lea rdx, [rbp+var_C0] +000A34FA: mov rax, [rbp+var_D8] +000A3501: mov rsi, rdx +000A3504: mov rdi, rax +000A3507: call __ZNSspLERKSs; std::string::operator+=(std::string const&) +000A350C: lea rax, [rbp+var_C0] +000A3513: mov rdi, rax; this +000A3516: call __ZNSsD1Ev; std::string::~string() +000A351B: lea rax, [rbp+var_B0] +000A3522: mov rdi, rax; this +000A3525: call __ZNSsD1Ev; std::string::~string() +000A352A: mov rax, [rbp+var_D8] +000A3531: lea rsi, asc_CEB56; "- " +000A3538: mov rdi, rax +000A353B: call __ZNSspLEPKc; std::string::operator+=(char const*) +000A3540: mov rax, [rbp+var_E0] +000A3547: mov eax, [rax+20h] +000A354A: cmp eax, 0Eh +000A354D: jnz loc_A3662 +000A3553: mov rax, [rbp+var_E0] +000A355A: lea rdx, [rax+28h] +000A355E: lea rax, [rbp+var_80] +000A3562: mov rsi, rdx +000A3565: mov rdi, rax +000A3568: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A356D: lea rax, [rbp+var_51] +000A3571: mov rdi, rax +000A3574: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A3579: mov rax, [rbp+var_E0] +000A3580: add rax, 28h ; '(' +000A3584: mov rdi, rax +000A3587: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_error_messageEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_error_message(void) +000A358C: mov rcx, rax +000A358F: lea rdx, [rbp+var_51] +000A3593: lea rax, [rbp+var_60] +000A3597: mov rsi, rcx +000A359A: mov rdi, rax +000A359D: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A35A2: lea rax, [rbp+var_70] +000A35A6: lea rcx, [rbp+var_60] +000A35AA: lea rdx, aLastRead; "; last read: '" +000A35B1: mov rsi, rcx +000A35B4: mov rdi, rax +000A35B7: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +000A35BC: lea rax, [rbp+var_90] +000A35C3: lea rdx, [rbp+var_80] +000A35C7: lea rcx, [rbp+var_70] +000A35CB: mov rsi, rcx +000A35CE: mov rdi, rax +000A35D1: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_S7_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,std::basic_string,std::allocator>&) +000A35D6: lea rax, [rbp+var_A0] +000A35DD: lea rcx, [rbp+var_90] +000A35E4: lea rdx, asc_CEB1C; "'" +000A35EB: mov rsi, rcx +000A35EE: mov rdi, rax +000A35F1: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +000A35F6: lea rdx, [rbp+var_A0] +000A35FD: mov rax, [rbp+var_D8] +000A3604: mov rsi, rdx +000A3607: mov rdi, rax +000A360A: call __ZNSspLERKSs; std::string::operator+=(std::string const&) +000A360F: lea rax, [rbp+var_A0] +000A3616: mov rdi, rax; this +000A3619: call __ZNSsD1Ev; std::string::~string() +000A361E: lea rax, [rbp+var_90] +000A3625: mov rdi, rax; this +000A3628: call __ZNSsD1Ev; std::string::~string() +000A362D: lea rax, [rbp+var_70] +000A3631: mov rdi, rax; this +000A3634: call __ZNSsD1Ev; std::string::~string() +000A3639: lea rax, [rbp+var_60] +000A363D: mov rdi, rax; this +000A3640: call __ZNSsD1Ev; std::string::~string() +000A3645: lea rax, [rbp+var_51] +000A3649: mov rdi, rax +000A364C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3651: lea rax, [rbp+var_80] +000A3655: mov rdi, rax; this +000A3658: call __ZNSsD1Ev; std::string::~string() +000A365D: jmp loc_A36E6 +000A3662: lea rax, [rbp+var_31] +000A3666: mov rdi, rax +000A3669: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A366E: mov rax, [rbp+var_E0] +000A3675: mov eax, [rax+20h] +000A3678: mov edi, eax +000A367A: call __ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15token_type_nameENS9_10token_typeE; nlohmann::detail::lexer_base>>>::token_type_name(nlohmann::detail::lexer_base>>>::token_type) +000A367F: mov rcx, rax +000A3682: lea rdx, [rbp+var_31] +000A3686: lea rax, [rbp+var_40] +000A368A: mov rsi, rcx +000A368D: mov rdi, rax +000A3690: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A3695: lea rax, [rbp+var_50] +000A3699: lea rdx, [rbp+var_40] +000A369D: lea rsi, aUnexpected; "unexpected " +000A36A4: mov rdi, rax +000A36A7: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A36AC: lea rdx, [rbp+var_50] +000A36B0: mov rax, [rbp+var_D8] +000A36B7: mov rsi, rdx +000A36BA: mov rdi, rax +000A36BD: call __ZNSspLERKSs; std::string::operator+=(std::string const&) +000A36C2: lea rax, [rbp+var_50] +000A36C6: mov rdi, rax; this +000A36C9: call __ZNSsD1Ev; std::string::~string() +000A36CE: lea rax, [rbp+var_40] +000A36D2: mov rdi, rax; this +000A36D5: call __ZNSsD1Ev; std::string::~string() +000A36DA: lea rax, [rbp+var_31] +000A36DE: mov rdi, rax +000A36E1: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A36E6: cmp [rbp+var_E4], 0 +000A36ED: jz loc_A3773 +000A36F3: lea rax, [rbp+var_11] +000A36F7: mov rdi, rax +000A36FA: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A36FF: mov eax, [rbp+var_E4] +000A3705: mov edi, eax +000A3707: call __ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15token_type_nameENS9_10token_typeE; nlohmann::detail::lexer_base>>>::token_type_name(nlohmann::detail::lexer_base>>>::token_type) +000A370C: mov rcx, rax +000A370F: lea rdx, [rbp+var_11] +000A3713: lea rax, [rbp+var_20] +000A3717: mov rsi, rcx +000A371A: mov rdi, rax +000A371D: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A3722: lea rax, [rbp+var_30] +000A3726: lea rdx, [rbp+var_20] +000A372A: lea rsi, aExpected; "; expected " +000A3731: mov rdi, rax +000A3734: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A3739: lea rdx, [rbp+var_30] +000A373D: mov rax, [rbp+var_D8] +000A3744: mov rsi, rdx +000A3747: mov rdi, rax +000A374A: call __ZNSspLERKSs; std::string::operator+=(std::string const&) +000A374F: lea rax, [rbp+var_30] +000A3753: mov rdi, rax; this +000A3756: call __ZNSsD1Ev; std::string::~string() +000A375B: lea rax, [rbp+var_20] +000A375F: mov rdi, rax; this +000A3762: call __ZNSsD1Ev; std::string::~string() +000A3767: lea rax, [rbp+var_11] +000A376B: mov rdi, rax +000A376E: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3773: jmp loc_A38AA +000A3778: mov rbx, rax +000A377B: lea rax, [rbp+var_C1] +000A3782: mov rdi, rax +000A3785: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A378A: mov rax, rbx +000A378D: mov rdi, rax; struct _Unwind_Exception * +000A3790: call __Unwind_Resume +000A3795: mov rbx, rax +000A3798: lea rax, [rbp+var_C0] +000A379F: mov rdi, rax; this +000A37A2: call __ZNSsD1Ev; std::string::~string() +000A37A7: jmp short loc_A37AC +000A37A9: mov rbx, rax +000A37AC: lea rax, [rbp+var_B0] +000A37B3: mov rdi, rax; this +000A37B6: call __ZNSsD1Ev; std::string::~string() +000A37BB: jmp loc_A3890 +000A37C0: mov rbx, rax +000A37C3: lea rax, [rbp+var_A0] +000A37CA: mov rdi, rax; this +000A37CD: call __ZNSsD1Ev; std::string::~string() +000A37D2: jmp short loc_A37D7 +000A37D4: mov rbx, rax +000A37D7: lea rax, [rbp+var_90] +000A37DE: mov rdi, rax; this +000A37E1: call __ZNSsD1Ev; std::string::~string() +000A37E6: jmp short loc_A37EB +000A37E8: mov rbx, rax +000A37EB: lea rax, [rbp+var_70] +000A37EF: mov rdi, rax; this +000A37F2: call __ZNSsD1Ev; std::string::~string() +000A37F7: jmp short loc_A37FC +000A37F9: mov rbx, rax +000A37FC: lea rax, [rbp+var_60] +000A3800: mov rdi, rax; this +000A3803: call __ZNSsD1Ev; std::string::~string() +000A3808: jmp short loc_A380D +000A380A: mov rbx, rax +000A380D: lea rax, [rbp+var_51] +000A3811: mov rdi, rax +000A3814: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3819: lea rax, [rbp+var_80] +000A381D: mov rdi, rax; this +000A3820: call __ZNSsD1Ev; std::string::~string() +000A3825: jmp short loc_A3890 +000A3827: mov rbx, rax +000A382A: lea rax, [rbp+var_50] +000A382E: mov rdi, rax; this +000A3831: call __ZNSsD1Ev; std::string::~string() +000A3836: jmp short loc_A383B +000A3838: mov rbx, rax +000A383B: lea rax, [rbp+var_40] +000A383F: mov rdi, rax; this +000A3842: call __ZNSsD1Ev; std::string::~string() +000A3847: jmp short loc_A384C +000A3849: mov rbx, rax +000A384C: lea rax, [rbp+var_31] +000A3850: mov rdi, rax +000A3853: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3858: jmp short loc_A3890 +000A385A: mov rbx, rax +000A385D: lea rax, [rbp+var_30] +000A3861: mov rdi, rax; this +000A3864: call __ZNSsD1Ev; std::string::~string() +000A3869: jmp short loc_A386E +000A386B: mov rbx, rax +000A386E: lea rax, [rbp+var_20] +000A3872: mov rdi, rax; this +000A3875: call __ZNSsD1Ev; std::string::~string() +000A387A: jmp short loc_A387F +000A387C: mov rbx, rax +000A387F: lea rax, [rbp+var_11] +000A3883: mov rdi, rax +000A3886: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A388B: jmp short loc_A3890 +000A388D: mov rbx, rax +000A3890: mov rax, [rbp+var_D8] +000A3897: mov rdi, rax; this +000A389A: call __ZNSsD1Ev; std::string::~string() +000A389F: mov rax, rbx +000A38A2: mov rdi, rax; struct _Unwind_Exception * +000A38A5: call __Unwind_Resume +000A38AA: mov rax, [rbp+var_D8] +000A38B1: add rsp, 0E8h +000A38B8: pop rbx +000A38B9: pop rbp +000A38BA: retn + +### FUNC 000A38BC - 000A4E7F (5571 bytes) name=_ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_ +000A38BC: push rbp +000A38BD: mov rbp, rsp +000A38C0: push rbx +000A38C1: sub rsp, 5F8h +000A38C8: mov [rbp+var_5E8], rdi +000A38CF: mov [rbp+var_5F0], rsi +000A38D6: lea rax, [rbp+var_5E0] +000A38DD: mov rdi, rax +000A38E0: call __ZNSt6vectorIbSaIbEEC2Ev; std::vector>::vector(void) +000A38E5: mov [rbp+var_11], 0 +000A38E9: movzx eax, [rbp+var_11] +000A38ED: xor eax, 1 +000A38F0: test al, al +000A38F2: jz loc_A4354 +000A38F8: mov rax, [rbp+var_5E8] +000A38FF: mov eax, [rax+20h] +000A3902: cmp eax, 0Eh; switch 15 cases +000A3905: ja def_A392C; jumptable 00000000000A392C default case, cases 0,10-13 +000A390B: mov eax, eax +000A390D: lea rdx, ds:0[rax*4] +000A3915: lea rax, jpt_A392C +000A391C: mov eax, ds:(jpt_A392C - 0D3AE4h)[rdx+rax] +000A391F: movsxd rdx, eax +000A3922: lea rax, jpt_A392C +000A3929: add rax, rdx +000A392C: jmp rax; switch jump +000A392E: mov rax, [rbp+var_5F0]; jumptable 00000000000A392C case 9 +000A3935: mov rsi, 0FFFFFFFFFFFFFFFFh +000A393C: mov rdi, rax +000A393F: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm; nlohmann::detail::json_sax_dom_parser>>>::start_object(ulong) +000A3944: xor eax, 1 +000A3947: movzx eax, al +000A394A: test rax, rax +000A394D: setnz al +000A3950: test al, al +000A3952: jz short loc_A395E +000A3954: mov ebx, 0 +000A3959: jmp loc_A4AB2 +000A395E: mov rax, [rbp+var_5E8] +000A3965: mov rdi, rax +000A3968: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A396D: cmp eax, 0Bh +000A3970: setz al +000A3973: test al, al +000A3975: jz short loc_A39A5 +000A3977: mov rax, [rbp+var_5F0] +000A397E: mov rdi, rax +000A3981: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv; nlohmann::detail::json_sax_dom_parser>>>::end_object(void) +000A3986: xor eax, 1 +000A3989: movzx eax, al +000A398C: test rax, rax +000A398F: setnz al +000A3992: test al, al +000A3994: jz short loc_A39A0 +000A3996: mov ebx, 0 +000A399B: jmp loc_A4AB2 +000A39A0: jmp loc_A4352 +000A39A5: mov rax, [rbp+var_5E8] +000A39AC: mov eax, [rax+20h] +000A39AF: cmp eax, 4 +000A39B2: setnz al +000A39B5: movzx eax, al +000A39B8: test rax, rax +000A39BB: jz loc_A3B0C +000A39C1: lea rax, [rbp+var_561] +000A39C8: mov rdi, rax +000A39CB: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A39D0: lea rdx, [rbp+var_561] +000A39D7: lea rax, [rbp+var_570] +000A39DE: lea rsi, aObjectKey; "object key" +000A39E5: mov rdi, rax +000A39E8: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A39ED: lea rax, [rbp+var_580] +000A39F4: lea rdx, [rbp+var_570] +000A39FB: mov rsi, [rbp+var_5E8] +000A3A02: mov rcx, rdx +000A3A05: mov edx, 4 +000A3A0A: mov rdi, rax +000A3A0D: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A3A12: mov rax, [rbp+var_5E8] +000A3A19: lea rdx, [rax+28h] +000A3A1D: lea rax, [rbp+var_560] +000A3A24: mov rsi, rdx +000A3A27: mov rdi, rax +000A3A2A: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A3A2F: lea rax, [rbp+var_5B0] +000A3A36: lea rcx, [rbp+var_580]; std::string * +000A3A3D: lea rdx, [rbp+var_560]; nlohmann::detail::position_t * +000A3A44: mov esi, 65h ; 'e'; int +000A3A49: mov rdi, rax; this +000A3A4C: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A3A51: mov rax, [rbp+var_5E8] +000A3A58: lea rdx, [rax+28h] +000A3A5C: lea rax, [rbp+var_540] +000A3A63: mov rsi, rdx +000A3A66: mov rdi, rax +000A3A69: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A3A6E: mov rax, [rbp+var_5E8] +000A3A75: lea rdx, [rax+28h] +000A3A79: lea rax, [rbp+var_530] +000A3A80: mov rsi, rdx +000A3A83: mov rdi, rax +000A3A86: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A3A8B: lea rax, [rbp+var_530] +000A3A92: mov rdi, rax +000A3A95: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A3A9A: mov rsi, rax +000A3A9D: lea rcx, [rbp+var_5B0] +000A3AA4: lea rdx, [rbp+var_540] +000A3AAB: mov rax, [rbp+var_5F0] +000A3AB2: mov rdi, rax +000A3AB5: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A3ABA: mov ebx, eax +000A3ABC: lea rax, [rbp+var_540] +000A3AC3: mov rdi, rax; this +000A3AC6: call __ZNSsD1Ev; std::string::~string() +000A3ACB: lea rax, [rbp+var_5B0] +000A3AD2: mov rdi, rax; this +000A3AD5: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A3ADA: lea rax, [rbp+var_580] +000A3AE1: mov rdi, rax; this +000A3AE4: call __ZNSsD1Ev; std::string::~string() +000A3AE9: lea rax, [rbp+var_570] +000A3AF0: mov rdi, rax; this +000A3AF3: call __ZNSsD1Ev; std::string::~string() +000A3AF8: lea rax, [rbp+var_561] +000A3AFF: mov rdi, rax +000A3B02: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3B07: jmp loc_A4AB2 +000A3B0C: mov rax, [rbp+var_5E8] +000A3B13: add rax, 28h ; '(' +000A3B17: mov rdi, rax +000A3B1A: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A3B1F: mov rdx, rax +000A3B22: mov rax, [rbp+var_5F0] +000A3B29: mov rsi, rdx +000A3B2C: mov rdi, rax +000A3B2F: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs; nlohmann::detail::json_sax_dom_parser>>>::key(std::string &) +000A3B34: xor eax, 1 +000A3B37: movzx eax, al +000A3B3A: test rax, rax +000A3B3D: setnz al +000A3B40: test al, al +000A3B42: jz short loc_A3B4E +000A3B44: mov ebx, 0 +000A3B49: jmp loc_A4AB2 +000A3B4E: mov rax, [rbp+var_5E8] +000A3B55: mov rdi, rax +000A3B58: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A3B5D: cmp eax, 0Ch +000A3B60: setnz al +000A3B63: movzx eax, al +000A3B66: test rax, rax +000A3B69: setnz al +000A3B6C: test al, al +000A3B6E: jz loc_A3CBF +000A3B74: lea rax, [rbp+var_4C1] +000A3B7B: mov rdi, rax +000A3B7E: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A3B83: lea rdx, [rbp+var_4C1] +000A3B8A: lea rax, [rbp+var_4D0] +000A3B91: lea rsi, aObjectSeparato; "object separator" +000A3B98: mov rdi, rax +000A3B9B: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A3BA0: lea rax, [rbp+var_4E0] +000A3BA7: lea rdx, [rbp+var_4D0] +000A3BAE: mov rsi, [rbp+var_5E8] +000A3BB5: mov rcx, rdx +000A3BB8: mov edx, 0Ch +000A3BBD: mov rdi, rax +000A3BC0: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A3BC5: mov rax, [rbp+var_5E8] +000A3BCC: lea rdx, [rax+28h] +000A3BD0: lea rax, [rbp+var_4C0] +000A3BD7: mov rsi, rdx +000A3BDA: mov rdi, rax +000A3BDD: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A3BE2: lea rax, [rbp+var_510] +000A3BE9: lea rcx, [rbp+var_4E0]; std::string * +000A3BF0: lea rdx, [rbp+var_4C0]; nlohmann::detail::position_t * +000A3BF7: mov esi, 65h ; 'e'; int +000A3BFC: mov rdi, rax; this +000A3BFF: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A3C04: mov rax, [rbp+var_5E8] +000A3C0B: lea rdx, [rax+28h] +000A3C0F: lea rax, [rbp+var_4A0] +000A3C16: mov rsi, rdx +000A3C19: mov rdi, rax +000A3C1C: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A3C21: mov rax, [rbp+var_5E8] +000A3C28: lea rdx, [rax+28h] +000A3C2C: lea rax, [rbp+var_490] +000A3C33: mov rsi, rdx +000A3C36: mov rdi, rax +000A3C39: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A3C3E: lea rax, [rbp+var_490] +000A3C45: mov rdi, rax +000A3C48: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A3C4D: mov rsi, rax +000A3C50: lea rcx, [rbp+var_510] +000A3C57: lea rdx, [rbp+var_4A0] +000A3C5E: mov rax, [rbp+var_5F0] +000A3C65: mov rdi, rax +000A3C68: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A3C6D: mov ebx, eax +000A3C6F: lea rax, [rbp+var_4A0] +000A3C76: mov rdi, rax; this +000A3C79: call __ZNSsD1Ev; std::string::~string() +000A3C7E: lea rax, [rbp+var_510] +000A3C85: mov rdi, rax; this +000A3C88: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A3C8D: lea rax, [rbp+var_4E0] +000A3C94: mov rdi, rax; this +000A3C97: call __ZNSsD1Ev; std::string::~string() +000A3C9C: lea rax, [rbp+var_4D0] +000A3CA3: mov rdi, rax; this +000A3CA6: call __ZNSsD1Ev; std::string::~string() +000A3CAB: lea rax, [rbp+var_4C1] +000A3CB2: mov rdi, rax +000A3CB5: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A3CBA: jmp loc_A4AB2 +000A3CBF: lea rax, [rbp+var_5E0] +000A3CC6: mov esi, 0 +000A3CCB: mov rdi, rax +000A3CCE: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A3CD3: mov rax, [rbp+var_5E8] +000A3CDA: mov rdi, rax +000A3CDD: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A3CE2: jmp loc_A4AAD +000A3CE7: mov rax, [rbp+var_5F0]; jumptable 00000000000A392C case 8 +000A3CEE: mov rsi, 0FFFFFFFFFFFFFFFFh +000A3CF5: mov rdi, rax +000A3CF8: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm; nlohmann::detail::json_sax_dom_parser>>>::start_array(ulong) +000A3CFD: xor eax, 1 +000A3D00: movzx eax, al +000A3D03: test rax, rax +000A3D06: setnz al +000A3D09: test al, al +000A3D0B: jz short loc_A3D17 +000A3D0D: mov ebx, 0 +000A3D12: jmp loc_A4AB2 +000A3D17: mov rax, [rbp+var_5E8] +000A3D1E: mov rdi, rax +000A3D21: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A3D26: cmp eax, 0Ah +000A3D29: setz al +000A3D2C: test al, al +000A3D2E: jz short loc_A3D5E +000A3D30: mov rax, [rbp+var_5F0] +000A3D37: mov rdi, rax +000A3D3A: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv; nlohmann::detail::json_sax_dom_parser>>>::end_array(void) +000A3D3F: xor eax, 1 +000A3D42: movzx eax, al +000A3D45: test rax, rax +000A3D48: setnz al +000A3D4B: test al, al +000A3D4D: jz short loc_A3D59 +000A3D4F: mov ebx, 0 +000A3D54: jmp loc_A4AB2 +000A3D59: jmp loc_A4352 +000A3D5E: lea rax, [rbp+var_5E0] +000A3D65: mov esi, 1 +000A3D6A: mov rdi, rax +000A3D6D: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A3D72: jmp loc_A4AAD +000A3D77: mov rax, [rbp+var_5E8]; jumptable 00000000000A392C case 7 +000A3D7E: add rax, 28h ; '(' +000A3D82: mov rdi, rax +000A3D85: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_number_floatEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_number_float(void) +000A3D8A: movsd [rbp+var_5F8], xmm0 +000A3D92: mov rax, [rbp+var_5F8] +000A3D99: mov [rbp+var_20], rax +000A3D9D: mov rax, [rbp+var_20] +000A3DA1: mov [rbp+var_5F8], rax +000A3DA8: movsd xmm0, [rbp+var_5F8]; double +000A3DB0: call __ZSt8isfinited; std::isfinite(double) +000A3DB5: xor eax, 1 +000A3DB8: movzx eax, al +000A3DBB: test rax, rax +000A3DBE: setnz al +000A3DC1: test al, al +000A3DC3: jz loc_A3EF9 +000A3DC9: mov rax, [rbp+var_5E8] +000A3DD0: lea rdx, [rax+28h] +000A3DD4: lea rax, [rbp+var_430] +000A3DDB: mov rsi, rdx +000A3DDE: mov rdi, rax +000A3DE1: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A3DE6: lea rax, [rbp+var_440] +000A3DED: lea rdx, [rbp+var_430] +000A3DF4: lea rsi, aNumberOverflow; "number overflow parsing '" +000A3DFB: mov rdi, rax +000A3DFE: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A3E03: lea rax, [rbp+var_450] +000A3E0A: lea rcx, [rbp+var_440] +000A3E11: lea rdx, asc_CEB1C; "'" +000A3E18: mov rsi, rcx +000A3E1B: mov rdi, rax +000A3E1E: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator>&&,char const*) +000A3E23: lea rax, [rbp+var_470] +000A3E2A: lea rdx, [rbp+var_450]; std::string * +000A3E31: mov esi, 196h; int +000A3E36: mov rdi, rax; this +000A3E39: call __ZN8nlohmann6detail12out_of_range6createEiRKSs; nlohmann::detail::out_of_range::create(int,std::string const&) +000A3E3E: mov rax, [rbp+var_5E8] +000A3E45: lea rdx, [rax+28h] +000A3E49: lea rax, [rbp+var_420] +000A3E50: mov rsi, rdx +000A3E53: mov rdi, rax +000A3E56: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A3E5B: mov rax, [rbp+var_5E8] +000A3E62: lea rdx, [rax+28h] +000A3E66: lea rax, [rbp+var_410] +000A3E6D: mov rsi, rdx +000A3E70: mov rdi, rax +000A3E73: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A3E78: lea rax, [rbp+var_410] +000A3E7F: mov rdi, rax +000A3E82: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A3E87: mov rsi, rax +000A3E8A: lea rcx, [rbp+var_470] +000A3E91: lea rdx, [rbp+var_420] +000A3E98: mov rax, [rbp+var_5F0] +000A3E9F: mov rdi, rax +000A3EA2: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::out_of_range const&) +000A3EA7: mov ebx, eax +000A3EA9: lea rax, [rbp+var_420] +000A3EB0: mov rdi, rax; this +000A3EB3: call __ZNSsD1Ev; std::string::~string() +000A3EB8: lea rax, [rbp+var_470] +000A3EBF: mov rdi, rax; this +000A3EC2: call __ZN8nlohmann6detail12out_of_rangeD2Ev; nlohmann::detail::out_of_range::~out_of_range() +000A3EC7: lea rax, [rbp+var_450] +000A3ECE: mov rdi, rax; this +000A3ED1: call __ZNSsD1Ev; std::string::~string() +000A3ED6: lea rax, [rbp+var_440] +000A3EDD: mov rdi, rax; this +000A3EE0: call __ZNSsD1Ev; std::string::~string() +000A3EE5: lea rax, [rbp+var_430] +000A3EEC: mov rdi, rax; this +000A3EEF: call __ZNSsD1Ev; std::string::~string() +000A3EF4: jmp loc_A4AB2 +000A3EF9: mov rax, [rbp+var_5E8] +000A3F00: add rax, 28h ; '(' +000A3F04: mov rdi, rax +000A3F07: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A3F0C: mov rcx, rax +000A3F0F: mov rax, [rbp+var_20] +000A3F13: mov rdx, [rbp+var_5F0] +000A3F1A: mov rsi, rcx +000A3F1D: mov [rbp+var_5F8], rax +000A3F24: movsd xmm0, [rbp+var_5F8] +000A3F2C: mov rdi, rdx +000A3F2F: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs; nlohmann::detail::json_sax_dom_parser>>>::number_float(double,std::string const&) +000A3F34: xor eax, 1 +000A3F37: movzx eax, al +000A3F3A: test rax, rax +000A3F3D: setnz al +000A3F40: test al, al +000A3F42: jz short loc_A3F4E +000A3F44: mov ebx, 0 +000A3F49: jmp loc_A4AB2 +000A3F4E: jmp loc_A4352 +000A3F53: mov rax, [rbp+var_5F0]; jumptable 00000000000A392C case 2 +000A3F5A: mov esi, 0 +000A3F5F: mov rdi, rax +000A3F62: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb; nlohmann::detail::json_sax_dom_parser>>>::boolean(bool) +000A3F67: xor eax, 1 +000A3F6A: movzx eax, al +000A3F6D: test rax, rax +000A3F70: setnz al +000A3F73: test al, al +000A3F75: jz short loc_A3F81 +000A3F77: mov ebx, 0 +000A3F7C: jmp loc_A4AB2 +000A3F81: jmp loc_A4352 +000A3F86: mov rax, [rbp+var_5F0]; jumptable 00000000000A392C case 3 +000A3F8D: mov rdi, rax +000A3F90: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv; nlohmann::detail::json_sax_dom_parser>>>::null(void) +000A3F95: xor eax, 1 +000A3F98: movzx eax, al +000A3F9B: test rax, rax +000A3F9E: setnz al +000A3FA1: test al, al +000A3FA3: jz short loc_A3FAF +000A3FA5: mov ebx, 0 +000A3FAA: jmp loc_A4AB2 +000A3FAF: jmp loc_A4352 +000A3FB4: mov rax, [rbp+var_5F0]; jumptable 00000000000A392C case 1 +000A3FBB: mov esi, 1 +000A3FC0: mov rdi, rax +000A3FC3: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb; nlohmann::detail::json_sax_dom_parser>>>::boolean(bool) +000A3FC8: xor eax, 1 +000A3FCB: movzx eax, al +000A3FCE: test rax, rax +000A3FD1: setnz al +000A3FD4: test al, al +000A3FD6: jz short loc_A3FE2 +000A3FD8: mov ebx, 0 +000A3FDD: jmp loc_A4AB2 +000A3FE2: jmp loc_A4352 +000A3FE7: mov rax, [rbp+var_5E8]; jumptable 00000000000A392C case 6 +000A3FEE: add rax, 28h ; '(' +000A3FF2: mov rdi, rax +000A3FF5: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18get_number_integerEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_number_integer(void) +000A3FFA: mov rdx, rax +000A3FFD: mov rax, [rbp+var_5F0] +000A4004: mov rsi, rdx +000A4007: mov rdi, rax +000A400A: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl; nlohmann::detail::json_sax_dom_parser>>>::number_integer(long) +000A400F: xor eax, 1 +000A4012: movzx eax, al +000A4015: test rax, rax +000A4018: setnz al +000A401B: test al, al +000A401D: jz short loc_A4029 +000A401F: mov ebx, 0 +000A4024: jmp loc_A4AB2 +000A4029: jmp loc_A4352 +000A402E: mov rax, [rbp+var_5E8]; jumptable 00000000000A392C case 4 +000A4035: add rax, 28h ; '(' +000A4039: mov rdi, rax +000A403C: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A4041: mov rdx, rax +000A4044: mov rax, [rbp+var_5F0] +000A404B: mov rsi, rdx +000A404E: mov rdi, rax +000A4051: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs; nlohmann::detail::json_sax_dom_parser>>>::string(std::string &) +000A4056: xor eax, 1 +000A4059: movzx eax, al +000A405C: test rax, rax +000A405F: setnz al +000A4062: test al, al +000A4064: jz short loc_A4070 +000A4066: mov ebx, 0 +000A406B: jmp loc_A4AB2 +000A4070: jmp loc_A4352 +000A4075: mov rax, [rbp+var_5E8]; jumptable 00000000000A392C case 5 +000A407C: add rax, 28h ; '(' +000A4080: mov rdi, rax +000A4083: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE19get_number_unsignedEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_number_unsigned(void) +000A4088: mov rdx, rax +000A408B: mov rax, [rbp+var_5F0] +000A4092: mov rsi, rdx +000A4095: mov rdi, rax +000A4098: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm; nlohmann::detail::json_sax_dom_parser>>>::number_unsigned(ulong) +000A409D: xor eax, 1 +000A40A0: movzx eax, al +000A40A3: test rax, rax +000A40A6: setnz al +000A40A9: test al, al +000A40AB: jz short loc_A40B7 +000A40AD: mov ebx, 0 +000A40B2: jmp loc_A4AB2 +000A40B7: jmp loc_A4352 +000A40BC: lea rax, [rbp+var_3A1]; jumptable 00000000000A392C case 14 +000A40C3: mov rdi, rax +000A40C6: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A40CB: lea rdx, [rbp+var_3A1] +000A40D2: lea rax, [rbp+var_3B0] +000A40D9: lea rsi, aValue; "value" +000A40E0: mov rdi, rax +000A40E3: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A40E8: lea rax, [rbp+var_3C0] +000A40EF: lea rdx, [rbp+var_3B0] +000A40F6: mov rsi, [rbp+var_5E8] +000A40FD: mov rcx, rdx +000A4100: mov edx, 0 +000A4105: mov rdi, rax +000A4108: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A410D: mov rax, [rbp+var_5E8] +000A4114: lea rdx, [rax+28h] +000A4118: lea rax, [rbp+var_3A0] +000A411F: mov rsi, rdx +000A4122: mov rdi, rax +000A4125: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A412A: lea rax, [rbp+var_3F0] +000A4131: lea rcx, [rbp+var_3C0]; std::string * +000A4138: lea rdx, [rbp+var_3A0]; nlohmann::detail::position_t * +000A413F: mov esi, 65h ; 'e'; int +000A4144: mov rdi, rax; this +000A4147: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A414C: mov rax, [rbp+var_5E8] +000A4153: lea rdx, [rax+28h] +000A4157: lea rax, [rbp+var_380] +000A415E: mov rsi, rdx +000A4161: mov rdi, rax +000A4164: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A4169: mov rax, [rbp+var_5E8] +000A4170: lea rdx, [rax+28h] +000A4174: lea rax, [rbp+var_370] +000A417B: mov rsi, rdx +000A417E: mov rdi, rax +000A4181: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A4186: lea rax, [rbp+var_370] +000A418D: mov rdi, rax +000A4190: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A4195: mov rsi, rax +000A4198: lea rcx, [rbp+var_3F0] +000A419F: lea rdx, [rbp+var_380] +000A41A6: mov rax, [rbp+var_5F0] +000A41AD: mov rdi, rax +000A41B0: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A41B5: mov ebx, eax +000A41B7: lea rax, [rbp+var_380] +000A41BE: mov rdi, rax; this +000A41C1: call __ZNSsD1Ev; std::string::~string() +000A41C6: lea rax, [rbp+var_3F0] +000A41CD: mov rdi, rax; this +000A41D0: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A41D5: lea rax, [rbp+var_3C0] +000A41DC: mov rdi, rax; this +000A41DF: call __ZNSsD1Ev; std::string::~string() +000A41E4: lea rax, [rbp+var_3B0] +000A41EB: mov rdi, rax; this +000A41EE: call __ZNSsD1Ev; std::string::~string() +000A41F3: lea rax, [rbp+var_3A1] +000A41FA: mov rdi, rax +000A41FD: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4202: jmp loc_A4AB2 +000A4207: lea rax, [rbp+var_301]; jumptable 00000000000A392C default case, cases 0,10-13 +000A420E: mov rdi, rax +000A4211: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A4216: lea rdx, [rbp+var_301] +000A421D: lea rax, [rbp+var_310] +000A4224: lea rsi, aValue; "value" +000A422B: mov rdi, rax +000A422E: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A4233: lea rax, [rbp+var_320] +000A423A: lea rdx, [rbp+var_310] +000A4241: mov rsi, [rbp+var_5E8] +000A4248: mov rcx, rdx +000A424B: mov edx, 10h +000A4250: mov rdi, rax +000A4253: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A4258: mov rax, [rbp+var_5E8] +000A425F: lea rdx, [rax+28h] +000A4263: lea rax, [rbp+var_300] +000A426A: mov rsi, rdx +000A426D: mov rdi, rax +000A4270: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A4275: lea rax, [rbp+var_350] +000A427C: lea rcx, [rbp+var_320]; std::string * +000A4283: lea rdx, [rbp+var_300]; nlohmann::detail::position_t * +000A428A: mov esi, 65h ; 'e'; int +000A428F: mov rdi, rax; this +000A4292: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A4297: mov rax, [rbp+var_5E8] +000A429E: lea rdx, [rax+28h] +000A42A2: lea rax, [rbp+var_2E0] +000A42A9: mov rsi, rdx +000A42AC: mov rdi, rax +000A42AF: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A42B4: mov rax, [rbp+var_5E8] +000A42BB: lea rdx, [rax+28h] +000A42BF: lea rax, [rbp+var_2D0] +000A42C6: mov rsi, rdx +000A42C9: mov rdi, rax +000A42CC: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A42D1: lea rax, [rbp+var_2D0] +000A42D8: mov rdi, rax +000A42DB: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A42E0: mov rsi, rax +000A42E3: lea rcx, [rbp+var_350] +000A42EA: lea rdx, [rbp+var_2E0] +000A42F1: mov rax, [rbp+var_5F0] +000A42F8: mov rdi, rax +000A42FB: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A4300: mov ebx, eax +000A4302: lea rax, [rbp+var_2E0] +000A4309: mov rdi, rax; this +000A430C: call __ZNSsD1Ev; std::string::~string() +000A4311: lea rax, [rbp+var_350] +000A4318: mov rdi, rax; this +000A431B: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4320: lea rax, [rbp+var_320] +000A4327: mov rdi, rax; this +000A432A: call __ZNSsD1Ev; std::string::~string() +000A432F: lea rax, [rbp+var_310] +000A4336: mov rdi, rax; this +000A4339: call __ZNSsD1Ev; std::string::~string() +000A433E: lea rax, [rbp+var_301] +000A4345: mov rdi, rax +000A4348: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A434D: jmp loc_A4AB2 +000A4352: jmp short loc_A4358 +000A4354: mov [rbp+var_11], 0 +000A4358: lea rax, [rbp+var_5E0] +000A435F: mov rdi, rax +000A4362: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A4367: test al, al +000A4369: jz short loc_A4375 +000A436B: mov ebx, 1 +000A4370: jmp loc_A4AB2 +000A4375: lea rax, [rbp+var_5E0] +000A437C: mov rdi, rax +000A437F: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000A4384: mov [rbp+var_2B0], rax +000A438B: mov [rbp+var_2A8], rdx +000A4392: lea rax, [rbp+var_2B0] +000A4399: mov rdi, rax +000A439C: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000A43A1: test al, al +000A43A3: jz loc_A45AC +000A43A9: mov rax, [rbp+var_5E8] +000A43B0: mov rdi, rax +000A43B3: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A43B8: cmp eax, 0Dh +000A43BB: setz al +000A43BE: test al, al +000A43C0: jz short loc_A43D6 +000A43C2: mov rax, [rbp+var_5E8] +000A43C9: mov rdi, rax +000A43CC: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A43D1: jmp loc_A4AAD +000A43D6: mov rax, [rbp+var_5E8] +000A43DD: mov eax, [rax+20h] +000A43E0: cmp eax, 0Ah +000A43E3: setz al +000A43E6: movzx eax, al +000A43E9: test rax, rax +000A43EC: jz short loc_A4461 +000A43EE: mov rax, [rbp+var_5F0] +000A43F5: mov rdi, rax +000A43F8: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv; nlohmann::detail::json_sax_dom_parser>>>::end_array(void) +000A43FD: xor eax, 1 +000A4400: movzx eax, al +000A4403: test rax, rax +000A4406: setnz al +000A4409: test al, al +000A440B: jz short loc_A4417 +000A440D: mov ebx, 0 +000A4412: jmp loc_A4AB2 +000A4417: lea rax, [rbp+var_5E0] +000A441E: mov rdi, rax +000A4421: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A4426: test al, al +000A4428: jz short loc_A4449 +000A442A: lea rcx, _ZZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_E19__PRETTY_FUNCTION__; "bool nlohmann::detail::parser>::pop_back(void) +000A4458: mov [rbp+var_11], 1 +000A445C: jmp loc_A4AAD +000A4461: lea rax, [rbp+var_251] +000A4468: mov rdi, rax +000A446B: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A4470: lea rdx, [rbp+var_251] +000A4477: lea rax, [rbp+var_260] +000A447E: lea rsi, aArray; "array" +000A4485: mov rdi, rax +000A4488: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A448D: lea rax, [rbp+var_270] +000A4494: lea rdx, [rbp+var_260] +000A449B: mov rsi, [rbp+var_5E8] +000A44A2: mov rcx, rdx +000A44A5: mov edx, 0Ah +000A44AA: mov rdi, rax +000A44AD: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A44B2: mov rax, [rbp+var_5E8] +000A44B9: lea rdx, [rax+28h] +000A44BD: lea rax, [rbp+var_250] +000A44C4: mov rsi, rdx +000A44C7: mov rdi, rax +000A44CA: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A44CF: lea rax, [rbp+var_2A0] +000A44D6: lea rcx, [rbp+var_270]; std::string * +000A44DD: lea rdx, [rbp+var_250]; nlohmann::detail::position_t * +000A44E4: mov esi, 65h ; 'e'; int +000A44E9: mov rdi, rax; this +000A44EC: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A44F1: mov rax, [rbp+var_5E8] +000A44F8: lea rdx, [rax+28h] +000A44FC: lea rax, [rbp+var_230] +000A4503: mov rsi, rdx +000A4506: mov rdi, rax +000A4509: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A450E: mov rax, [rbp+var_5E8] +000A4515: lea rdx, [rax+28h] +000A4519: lea rax, [rbp+var_220] +000A4520: mov rsi, rdx +000A4523: mov rdi, rax +000A4526: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A452B: lea rax, [rbp+var_220] +000A4532: mov rdi, rax +000A4535: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A453A: mov rsi, rax +000A453D: lea rcx, [rbp+var_2A0] +000A4544: lea rdx, [rbp+var_230] +000A454B: mov rax, [rbp+var_5F0] +000A4552: mov rdi, rax +000A4555: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A455A: mov ebx, eax +000A455C: lea rax, [rbp+var_230] +000A4563: mov rdi, rax; this +000A4566: call __ZNSsD1Ev; std::string::~string() +000A456B: lea rax, [rbp+var_2A0] +000A4572: mov rdi, rax; this +000A4575: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A457A: lea rax, [rbp+var_270] +000A4581: mov rdi, rax; this +000A4584: call __ZNSsD1Ev; std::string::~string() +000A4589: lea rax, [rbp+var_260] +000A4590: mov rdi, rax; this +000A4593: call __ZNSsD1Ev; std::string::~string() +000A4598: lea rax, [rbp+var_251] +000A459F: mov rdi, rax +000A45A2: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A45A7: jmp loc_A4AB2 +000A45AC: mov rax, [rbp+var_5E8] +000A45B3: mov rdi, rax +000A45B6: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A45BB: cmp eax, 0Dh +000A45BE: setz al +000A45C1: test al, al +000A45C3: jz loc_A4901 +000A45C9: mov rax, [rbp+var_5E8] +000A45D0: mov rdi, rax +000A45D3: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A45D8: cmp eax, 4 +000A45DB: setnz al +000A45DE: movzx eax, al +000A45E1: test rax, rax +000A45E4: setnz al +000A45E7: test al, al +000A45E9: jz loc_A473A +000A45EF: lea rax, [rbp+var_1B1] +000A45F6: mov rdi, rax +000A45F9: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A45FE: lea rdx, [rbp+var_1B1] +000A4605: lea rax, [rbp+var_1C0] +000A460C: lea rsi, aObjectKey; "object key" +000A4613: mov rdi, rax +000A4616: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A461B: lea rax, [rbp+var_1D0] +000A4622: lea rdx, [rbp+var_1C0] +000A4629: mov rsi, [rbp+var_5E8] +000A4630: mov rcx, rdx +000A4633: mov edx, 4 +000A4638: mov rdi, rax +000A463B: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A4640: mov rax, [rbp+var_5E8] +000A4647: lea rdx, [rax+28h] +000A464B: lea rax, [rbp+var_1B0] +000A4652: mov rsi, rdx +000A4655: mov rdi, rax +000A4658: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A465D: lea rax, [rbp+var_200] +000A4664: lea rcx, [rbp+var_1D0]; std::string * +000A466B: lea rdx, [rbp+var_1B0]; nlohmann::detail::position_t * +000A4672: mov esi, 65h ; 'e'; int +000A4677: mov rdi, rax; this +000A467A: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A467F: mov rax, [rbp+var_5E8] +000A4686: lea rdx, [rax+28h] +000A468A: lea rax, [rbp+var_190] +000A4691: mov rsi, rdx +000A4694: mov rdi, rax +000A4697: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A469C: mov rax, [rbp+var_5E8] +000A46A3: lea rdx, [rax+28h] +000A46A7: lea rax, [rbp+var_180] +000A46AE: mov rsi, rdx +000A46B1: mov rdi, rax +000A46B4: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A46B9: lea rax, [rbp+var_180] +000A46C0: mov rdi, rax +000A46C3: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A46C8: mov rsi, rax +000A46CB: lea rcx, [rbp+var_200] +000A46D2: lea rdx, [rbp+var_190] +000A46D9: mov rax, [rbp+var_5F0] +000A46E0: mov rdi, rax +000A46E3: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A46E8: mov ebx, eax +000A46EA: lea rax, [rbp+var_190] +000A46F1: mov rdi, rax; this +000A46F4: call __ZNSsD1Ev; std::string::~string() +000A46F9: lea rax, [rbp+var_200] +000A4700: mov rdi, rax; this +000A4703: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4708: lea rax, [rbp+var_1D0] +000A470F: mov rdi, rax; this +000A4712: call __ZNSsD1Ev; std::string::~string() +000A4717: lea rax, [rbp+var_1C0] +000A471E: mov rdi, rax; this +000A4721: call __ZNSsD1Ev; std::string::~string() +000A4726: lea rax, [rbp+var_1B1] +000A472D: mov rdi, rax +000A4730: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4735: jmp loc_A4AB2 +000A473A: mov rax, [rbp+var_5E8] +000A4741: add rax, 28h ; '(' +000A4745: mov rdi, rax +000A4748: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_string(void) +000A474D: mov rdx, rax +000A4750: mov rax, [rbp+var_5F0] +000A4757: mov rsi, rdx +000A475A: mov rdi, rax +000A475D: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs; nlohmann::detail::json_sax_dom_parser>>>::key(std::string &) +000A4762: xor eax, 1 +000A4765: movzx eax, al +000A4768: test rax, rax +000A476B: setnz al +000A476E: test al, al +000A4770: jz short loc_A477C +000A4772: mov ebx, 0 +000A4777: jmp loc_A4AB2 +000A477C: mov rax, [rbp+var_5E8] +000A4783: mov rdi, rax +000A4786: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A478B: cmp eax, 0Ch +000A478E: setnz al +000A4791: movzx eax, al +000A4794: test rax, rax +000A4797: setnz al +000A479A: test al, al +000A479C: jz loc_A48ED +000A47A2: lea rax, [rbp+var_111] +000A47A9: mov rdi, rax +000A47AC: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A47B1: lea rdx, [rbp+var_111] +000A47B8: lea rax, [rbp+var_120] +000A47BF: lea rsi, aObjectSeparato; "object separator" +000A47C6: mov rdi, rax +000A47C9: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A47CE: lea rax, [rbp+var_130] +000A47D5: lea rdx, [rbp+var_120] +000A47DC: mov rsi, [rbp+var_5E8] +000A47E3: mov rcx, rdx +000A47E6: mov edx, 0Ch +000A47EB: mov rdi, rax +000A47EE: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A47F3: mov rax, [rbp+var_5E8] +000A47FA: lea rdx, [rax+28h] +000A47FE: lea rax, [rbp+var_110] +000A4805: mov rsi, rdx +000A4808: mov rdi, rax +000A480B: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A4810: lea rax, [rbp+var_160] +000A4817: lea rcx, [rbp+var_130]; std::string * +000A481E: lea rdx, [rbp+var_110]; nlohmann::detail::position_t * +000A4825: mov esi, 65h ; 'e'; int +000A482A: mov rdi, rax; this +000A482D: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A4832: mov rax, [rbp+var_5E8] +000A4839: lea rdx, [rax+28h] +000A483D: lea rax, [rbp+var_F0] +000A4844: mov rsi, rdx +000A4847: mov rdi, rax +000A484A: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A484F: mov rax, [rbp+var_5E8] +000A4856: lea rdx, [rax+28h] +000A485A: lea rax, [rbp+var_E0] +000A4861: mov rsi, rdx +000A4864: mov rdi, rax +000A4867: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A486C: lea rax, [rbp+var_E0] +000A4873: mov rdi, rax +000A4876: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A487B: mov rsi, rax +000A487E: lea rcx, [rbp+var_160] +000A4885: lea rdx, [rbp+var_F0] +000A488C: mov rax, [rbp+var_5F0] +000A4893: mov rdi, rax +000A4896: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A489B: mov ebx, eax +000A489D: lea rax, [rbp+var_F0] +000A48A4: mov rdi, rax; this +000A48A7: call __ZNSsD1Ev; std::string::~string() +000A48AC: lea rax, [rbp+var_160] +000A48B3: mov rdi, rax; this +000A48B6: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A48BB: lea rax, [rbp+var_130] +000A48C2: mov rdi, rax; this +000A48C5: call __ZNSsD1Ev; std::string::~string() +000A48CA: lea rax, [rbp+var_120] +000A48D1: mov rdi, rax; this +000A48D4: call __ZNSsD1Ev; std::string::~string() +000A48D9: lea rax, [rbp+var_111] +000A48E0: mov rdi, rax +000A48E3: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A48E8: jmp loc_A4AB2 +000A48ED: mov rax, [rbp+var_5E8] +000A48F4: mov rdi, rax +000A48F7: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE9get_tokenEv; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::get_token(void) +000A48FC: jmp loc_A4AAD +000A4901: mov rax, [rbp+var_5E8] +000A4908: mov eax, [rax+20h] +000A490B: cmp eax, 0Bh +000A490E: setz al +000A4911: movzx eax, al +000A4914: test rax, rax +000A4917: jz short loc_A498C +000A4919: mov rax, [rbp+var_5F0] +000A4920: mov rdi, rax +000A4923: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv; nlohmann::detail::json_sax_dom_parser>>>::end_object(void) +000A4928: xor eax, 1 +000A492B: movzx eax, al +000A492E: test rax, rax +000A4931: setnz al +000A4934: test al, al +000A4936: jz short loc_A4942 +000A4938: mov ebx, 0 +000A493D: jmp loc_A4AB2 +000A4942: lea rax, [rbp+var_5E0] +000A4949: mov rdi, rax +000A494C: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A4951: test al, al +000A4953: jz short loc_A4974 +000A4955: lea rcx, _ZZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18sax_parse_internalINS0_19json_sax_dom_parserIS8_EEEEbPT_E19__PRETTY_FUNCTION__; "bool nlohmann::detail::parser>::pop_back(void) +000A4983: mov [rbp+var_11], 1 +000A4987: jmp loc_A4AAD +000A498C: lea rax, [rbp+var_71] +000A4990: mov rdi, rax +000A4993: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A4998: lea rdx, [rbp+var_71] +000A499C: lea rax, [rbp+var_80] +000A49A0: lea rsi, aObject; "object" +000A49A7: mov rdi, rax +000A49AA: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A49AF: lea rax, [rbp+var_90] +000A49B6: lea rdx, [rbp+var_80] +000A49BA: mov rsi, [rbp+var_5E8] +000A49C1: mov rcx, rdx +000A49C4: mov edx, 0Bh +000A49C9: mov rdi, rax +000A49CC: call __ZN8nlohmann6detail6parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17exception_messageENS0_10lexer_baseIS8_E10token_typeERKSs; nlohmann::detail::parser>>,nlohmann::detail::iterator_input_adapter>::exception_message(nlohmann::detail::lexer_base>>>::token_type,std::string const&) +000A49D1: mov rax, [rbp+var_5E8] +000A49D8: lea rdx, [rax+28h] +000A49DC: lea rax, [rbp+var_70] +000A49E0: mov rsi, rdx +000A49E3: mov rdi, rax +000A49E6: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A49EB: lea rax, [rbp+var_C0] +000A49F2: lea rcx, [rbp+var_90]; std::string * +000A49F9: lea rdx, [rbp+var_70]; nlohmann::detail::position_t * +000A49FD: mov esi, 65h ; 'e'; int +000A4A02: mov rdi, rax; this +000A4A05: call __ZN8nlohmann6detail11parse_error6createEiRKNS0_10position_tERKSs; nlohmann::detail::parse_error::create(int,nlohmann::detail::position_t const&,std::string const&) +000A4A0A: mov rax, [rbp+var_5E8] +000A4A11: lea rdx, [rax+28h] +000A4A15: lea rax, [rbp+var_50] +000A4A19: mov rsi, rdx +000A4A1C: mov rdi, rax +000A4A1F: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_token_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_token_string(void) +000A4A24: mov rax, [rbp+var_5E8] +000A4A2B: lea rdx, [rax+28h] +000A4A2F: lea rax, [rbp+var_40] +000A4A33: mov rsi, rdx +000A4A36: mov rdi, rax +000A4A39: call __ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12get_positionEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_position(void) +000A4A3E: lea rax, [rbp+var_40] +000A4A42: mov rdi, rax +000A4A45: call __ZNK8nlohmann6detail10position_tcvmEv; nlohmann::detail::position_t::operator ulong(void) +000A4A4A: mov rsi, rax +000A4A4D: lea rcx, [rbp+var_C0] +000A4A54: lea rdx, [rbp+var_50] +000A4A58: mov rax, [rbp+var_5F0] +000A4A5F: mov rdi, rax +000A4A62: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_11parse_errorEEEbmRKSsRKT_; nlohmann::detail::json_sax_dom_parser>>>::parse_error(ulong,std::string const&,nlohmann::detail::parse_error const&) +000A4A67: mov ebx, eax +000A4A69: lea rax, [rbp+var_50] +000A4A6D: mov rdi, rax; this +000A4A70: call __ZNSsD1Ev; std::string::~string() +000A4A75: lea rax, [rbp+var_C0] +000A4A7C: mov rdi, rax; this +000A4A7F: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4A84: lea rax, [rbp+var_90] +000A4A8B: mov rdi, rax; this +000A4A8E: call __ZNSsD1Ev; std::string::~string() +000A4A93: lea rax, [rbp+var_80] +000A4A97: mov rdi, rax; this +000A4A9A: call __ZNSsD1Ev; std::string::~string() +000A4A9F: lea rax, [rbp+var_71] +000A4AA3: mov rdi, rax +000A4AA6: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4AAB: jmp short loc_A4AB2 +000A4AAD: jmp loc_A38E9 +000A4AB2: lea rax, [rbp+var_5E0] +000A4AB9: mov rdi, rax +000A4ABC: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +000A4AC1: mov eax, ebx +000A4AC3: jmp loc_A4E75 +000A4AC8: mov rbx, rax +000A4ACB: lea rax, [rbp+var_540] +000A4AD2: mov rdi, rax; this +000A4AD5: call __ZNSsD1Ev; std::string::~string() +000A4ADA: jmp short loc_A4ADF +000A4ADC: mov rbx, rax +000A4ADF: lea rax, [rbp+var_5B0] +000A4AE6: mov rdi, rax; this +000A4AE9: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4AEE: jmp short loc_A4AF3 +000A4AF0: mov rbx, rax +000A4AF3: lea rax, [rbp+var_580] +000A4AFA: mov rdi, rax; this +000A4AFD: call __ZNSsD1Ev; std::string::~string() +000A4B02: jmp short loc_A4B07 +000A4B04: mov rbx, rax +000A4B07: lea rax, [rbp+var_570] +000A4B0E: mov rdi, rax; this +000A4B11: call __ZNSsD1Ev; std::string::~string() +000A4B16: jmp short loc_A4B1B +000A4B18: mov rbx, rax +000A4B1B: lea rax, [rbp+var_561] +000A4B22: mov rdi, rax +000A4B25: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4B2A: jmp loc_A4E5B +000A4B2F: mov rbx, rax +000A4B32: lea rax, [rbp+var_4A0] +000A4B39: mov rdi, rax; this +000A4B3C: call __ZNSsD1Ev; std::string::~string() +000A4B41: jmp short loc_A4B46 +000A4B43: mov rbx, rax +000A4B46: lea rax, [rbp+var_510] +000A4B4D: mov rdi, rax; this +000A4B50: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4B55: jmp short loc_A4B5A +000A4B57: mov rbx, rax +000A4B5A: lea rax, [rbp+var_4E0] +000A4B61: mov rdi, rax; this +000A4B64: call __ZNSsD1Ev; std::string::~string() +000A4B69: jmp short loc_A4B6E +000A4B6B: mov rbx, rax +000A4B6E: lea rax, [rbp+var_4D0] +000A4B75: mov rdi, rax; this +000A4B78: call __ZNSsD1Ev; std::string::~string() +000A4B7D: jmp short loc_A4B82 +000A4B7F: mov rbx, rax +000A4B82: lea rax, [rbp+var_4C1] +000A4B89: mov rdi, rax +000A4B8C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4B91: jmp loc_A4E5B +000A4B96: mov rbx, rax +000A4B99: lea rax, [rbp+var_420] +000A4BA0: mov rdi, rax; this +000A4BA3: call __ZNSsD1Ev; std::string::~string() +000A4BA8: jmp short loc_A4BAD +000A4BAA: mov rbx, rax +000A4BAD: lea rax, [rbp+var_470] +000A4BB4: mov rdi, rax; this +000A4BB7: call __ZN8nlohmann6detail12out_of_rangeD2Ev; nlohmann::detail::out_of_range::~out_of_range() +000A4BBC: jmp short loc_A4BC1 +000A4BBE: mov rbx, rax +000A4BC1: lea rax, [rbp+var_450] +000A4BC8: mov rdi, rax; this +000A4BCB: call __ZNSsD1Ev; std::string::~string() +000A4BD0: jmp short loc_A4BD5 +000A4BD2: mov rbx, rax +000A4BD5: lea rax, [rbp+var_440] +000A4BDC: mov rdi, rax; this +000A4BDF: call __ZNSsD1Ev; std::string::~string() +000A4BE4: jmp short loc_A4BE9 +000A4BE6: mov rbx, rax +000A4BE9: lea rax, [rbp+var_430] +000A4BF0: mov rdi, rax; this +000A4BF3: call __ZNSsD1Ev; std::string::~string() +000A4BF8: jmp loc_A4E5B +000A4BFD: mov rbx, rax +000A4C00: lea rax, [rbp+var_380] +000A4C07: mov rdi, rax; this +000A4C0A: call __ZNSsD1Ev; std::string::~string() +000A4C0F: jmp short loc_A4C14 +000A4C11: mov rbx, rax +000A4C14: lea rax, [rbp+var_3F0] +000A4C1B: mov rdi, rax; this +000A4C1E: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4C23: jmp short loc_A4C28 +000A4C25: mov rbx, rax +000A4C28: lea rax, [rbp+var_3C0] +000A4C2F: mov rdi, rax; this +000A4C32: call __ZNSsD1Ev; std::string::~string() +000A4C37: jmp short loc_A4C3C +000A4C39: mov rbx, rax +000A4C3C: lea rax, [rbp+var_3B0] +000A4C43: mov rdi, rax; this +000A4C46: call __ZNSsD1Ev; std::string::~string() +000A4C4B: jmp short loc_A4C50 +000A4C4D: mov rbx, rax +000A4C50: lea rax, [rbp+var_3A1] +000A4C57: mov rdi, rax +000A4C5A: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4C5F: jmp loc_A4E5B +000A4C64: mov rbx, rax +000A4C67: lea rax, [rbp+var_2E0] +000A4C6E: mov rdi, rax; this +000A4C71: call __ZNSsD1Ev; std::string::~string() +000A4C76: jmp short loc_A4C7B +000A4C78: mov rbx, rax +000A4C7B: lea rax, [rbp+var_350] +000A4C82: mov rdi, rax; this +000A4C85: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4C8A: jmp short loc_A4C8F +000A4C8C: mov rbx, rax +000A4C8F: lea rax, [rbp+var_320] +000A4C96: mov rdi, rax; this +000A4C99: call __ZNSsD1Ev; std::string::~string() +000A4C9E: jmp short loc_A4CA3 +000A4CA0: mov rbx, rax +000A4CA3: lea rax, [rbp+var_310] +000A4CAA: mov rdi, rax; this +000A4CAD: call __ZNSsD1Ev; std::string::~string() +000A4CB2: jmp short loc_A4CB7 +000A4CB4: mov rbx, rax +000A4CB7: lea rax, [rbp+var_301] +000A4CBE: mov rdi, rax +000A4CC1: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4CC6: jmp loc_A4E5B +000A4CCB: mov rbx, rax +000A4CCE: lea rax, [rbp+var_230] +000A4CD5: mov rdi, rax; this +000A4CD8: call __ZNSsD1Ev; std::string::~string() +000A4CDD: jmp short loc_A4CE2 +000A4CDF: mov rbx, rax +000A4CE2: lea rax, [rbp+var_2A0] +000A4CE9: mov rdi, rax; this +000A4CEC: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4CF1: jmp short loc_A4CF6 +000A4CF3: mov rbx, rax +000A4CF6: lea rax, [rbp+var_270] +000A4CFD: mov rdi, rax; this +000A4D00: call __ZNSsD1Ev; std::string::~string() +000A4D05: jmp short loc_A4D0A +000A4D07: mov rbx, rax +000A4D0A: lea rax, [rbp+var_260] +000A4D11: mov rdi, rax; this +000A4D14: call __ZNSsD1Ev; std::string::~string() +000A4D19: jmp short loc_A4D1E +000A4D1B: mov rbx, rax +000A4D1E: lea rax, [rbp+var_251] +000A4D25: mov rdi, rax +000A4D28: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4D2D: jmp loc_A4E5B +000A4D32: mov rbx, rax +000A4D35: lea rax, [rbp+var_190] +000A4D3C: mov rdi, rax; this +000A4D3F: call __ZNSsD1Ev; std::string::~string() +000A4D44: jmp short loc_A4D49 +000A4D46: mov rbx, rax +000A4D49: lea rax, [rbp+var_200] +000A4D50: mov rdi, rax; this +000A4D53: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4D58: jmp short loc_A4D5D +000A4D5A: mov rbx, rax +000A4D5D: lea rax, [rbp+var_1D0] +000A4D64: mov rdi, rax; this +000A4D67: call __ZNSsD1Ev; std::string::~string() +000A4D6C: jmp short loc_A4D71 +000A4D6E: mov rbx, rax +000A4D71: lea rax, [rbp+var_1C0] +000A4D78: mov rdi, rax; this +000A4D7B: call __ZNSsD1Ev; std::string::~string() +000A4D80: jmp short loc_A4D85 +000A4D82: mov rbx, rax +000A4D85: lea rax, [rbp+var_1B1] +000A4D8C: mov rdi, rax +000A4D8F: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4D94: jmp loc_A4E5B +000A4D99: mov rbx, rax +000A4D9C: lea rax, [rbp+var_F0] +000A4DA3: mov rdi, rax; this +000A4DA6: call __ZNSsD1Ev; std::string::~string() +000A4DAB: jmp short loc_A4DB0 +000A4DAD: mov rbx, rax +000A4DB0: lea rax, [rbp+var_160] +000A4DB7: mov rdi, rax; this +000A4DBA: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4DBF: jmp short loc_A4DC4 +000A4DC1: mov rbx, rax +000A4DC4: lea rax, [rbp+var_130] +000A4DCB: mov rdi, rax; this +000A4DCE: call __ZNSsD1Ev; std::string::~string() +000A4DD3: jmp short loc_A4DD8 +000A4DD5: mov rbx, rax +000A4DD8: lea rax, [rbp+var_120] +000A4DDF: mov rdi, rax; this +000A4DE2: call __ZNSsD1Ev; std::string::~string() +000A4DE7: jmp short loc_A4DEC +000A4DE9: mov rbx, rax +000A4DEC: lea rax, [rbp+var_111] +000A4DF3: mov rdi, rax +000A4DF6: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4DFB: jmp short loc_A4E5B +000A4DFD: mov rbx, rax +000A4E00: lea rax, [rbp+var_50] +000A4E04: mov rdi, rax; this +000A4E07: call __ZNSsD1Ev; std::string::~string() +000A4E0C: jmp short loc_A4E11 +000A4E0E: mov rbx, rax +000A4E11: lea rax, [rbp+var_C0] +000A4E18: mov rdi, rax; this +000A4E1B: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000A4E20: jmp short loc_A4E25 +000A4E22: mov rbx, rax +000A4E25: lea rax, [rbp+var_90] +000A4E2C: mov rdi, rax; this +000A4E2F: call __ZNSsD1Ev; std::string::~string() +000A4E34: jmp short loc_A4E39 +000A4E36: mov rbx, rax +000A4E39: lea rax, [rbp+var_80] +000A4E3D: mov rdi, rax; this +000A4E40: call __ZNSsD1Ev; std::string::~string() +000A4E45: jmp short loc_A4E4A +000A4E47: mov rbx, rax +000A4E4A: lea rax, [rbp+var_71] +000A4E4E: mov rdi, rax +000A4E51: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A4E56: jmp short loc_A4E5B +000A4E58: mov rbx, rax +000A4E5B: lea rax, [rbp+var_5E0] +000A4E62: mov rdi, rax +000A4E65: call __ZNSt6vectorIbSaIbEED2Ev; std::vector>::~vector() +000A4E6A: mov rax, rbx +000A4E6D: mov rdi, rax; struct _Unwind_Exception * +000A4E70: call __Unwind_Resume +000A4E75: add rsp, 5F8h +000A4E7C: pop rbx +000A4E7D: pop rbp +000A4E7E: retn + +### FUNC 000A4E80 - 000A4EAD (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIEEEPT_DpOT0_ENKUlPSE_E_clESK_ +000A4E80: push rbp +000A4E81: mov rbp, rsp +000A4E84: sub rsp, 10h +000A4E88: mov [rbp+var_8], rdi +000A4E8C: mov [rbp+var_10], rsi +000A4E90: mov rax, [rbp+var_8] +000A4E94: mov rax, [rax] +000A4E97: mov rcx, [rbp+var_10] +000A4E9B: mov edx, 1 +000A4EA0: mov rsi, rcx +000A4EA3: mov rdi, rax +000A4EA6: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m; std::allocator_traits>>,std::less,std::allocator>>>>>>>::deallocate(std::allocator>>,std::less,std::allocator>>>>>>&,std::map>>,std::less,std::allocator>>>>>*,ulong) +000A4EAB: leave +000A4EAC: retn + +### FUNC 000A4EAD - 000A4FA1 (244 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJEEEPT_DpOT0_ +000A4EAD: push rbp; Alternative name is 'std::map>>, std::less, std::allocator>>>>> * nlohmann::basic_json>>::create>>, std::less, std::allocator>>,std::less,std::allocator>>>>>>::allocator(void) +000A4EC2: lea rax, [rbp+var_11] +000A4EC6: mov [rbp+var_20], rax +000A4ECA: lea rax, [rbp+var_11] +000A4ECE: mov esi, 1 +000A4ED3: mov rdi, rax +000A4ED6: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE8allocateERSF_m; std::allocator_traits>>,std::less,std::allocator>>>>>>>::allocate(std::allocator>>,std::less,std::allocator>>>>>>&,ulong) +000A4EDB: mov rcx, rax +000A4EDE: lea rdx, [rbp+var_20] +000A4EE2: lea rax, [rbp+var_30] +000A4EE6: mov rsi, rcx +000A4EE9: mov rdi, rax +000A4EEC: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EC2ESL_RKSM_ +000A4EF1: lea rax, [rbp+var_30] +000A4EF5: mov rdi, rax +000A4EF8: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get(void) +000A4EFD: mov rdx, rax +000A4F00: lea rax, [rbp+var_11] +000A4F04: mov rsi, rdx +000A4F07: mov rdi, rax +000A4F0A: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSI_ +000A4F0F: lea rax, [rbp+var_30] +000A4F13: mov esi, 0 +000A4F18: mov rdi, rax +000A4F1B: call __ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>(std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}> const&,decltype(nullptr)) +000A4F20: test al, al +000A4F22: jnz short loc_A4F43 +000A4F24: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIEEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::release(void) +000A4F4F: mov rbx, rax +000A4F52: lea rax, [rbp+var_30] +000A4F56: mov rdi, rax +000A4F59: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_ED2Ev; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::~unique_ptr() +000A4F5E: lea rax, [rbp+var_11] +000A4F62: mov rdi, rax +000A4F65: call __ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev; std::allocator>>,std::less,std::allocator>>>>>>::~allocator() +000A4F6A: mov rax, rbx +000A4F6D: jmp short loc_A4F9A +000A4F6F: mov rbx, rax +000A4F72: lea rax, [rbp+var_30] +000A4F76: mov rdi, rax +000A4F79: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_ED2Ev; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::~unique_ptr() +000A4F7E: jmp short loc_A4F83 +000A4F80: mov rbx, rax +000A4F83: lea rax, [rbp+var_11] +000A4F87: mov rdi, rax +000A4F8A: call __ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev; std::allocator>>,std::less,std::allocator>>>>>>::~allocator() +000A4F8F: mov rax, rbx +000A4F92: mov rdi, rax; struct _Unwind_Exception * +000A4F95: call __Unwind_Resume +000A4F9A: add rsp, 28h +000A4F9E: pop rbx +000A4F9F: pop rbp +000A4FA0: retn + +### FUNC 000A4FA2 - 000A4FCF (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000A4FA2: push rbp +000A4FA3: mov rbp, rsp +000A4FA6: sub rsp, 10h +000A4FAA: mov [rbp+var_8], rdi +000A4FAE: mov [rbp+var_10], rsi +000A4FB2: mov rax, [rbp+var_8] +000A4FB6: mov rax, [rax] +000A4FB9: mov rcx, [rbp+var_10] +000A4FBD: mov edx, 1 +000A4FC2: mov rsi, rcx +000A4FC5: mov rdi, rax +000A4FC8: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m; std::allocator_traits>>,std::allocator>>>>>>::deallocate(std::allocator>>,std::allocator>>>>>&,std::vector>>,std::allocator>>>>*,ulong) +000A4FCD: leave +000A4FCE: retn + +### FUNC 000A4FCF - 000A50C3 (244 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJEEEPT_DpOT0_ +000A4FCF: push rbp; Alternative name is 'std::vector>>, std::allocator>>>> * nlohmann::basic_json>>::create>>, std::allocator>>,std::allocator>>>>>::allocator(void) +000A4FE4: lea rax, [rbp+var_11] +000A4FE8: mov [rbp+var_20], rax +000A4FEC: lea rax, [rbp+var_11] +000A4FF0: mov esi, 1 +000A4FF5: mov rdi, rax +000A4FF8: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE8allocateERSA_m; std::allocator_traits>>,std::allocator>>>>>>::allocate(std::allocator>>,std::allocator>>>>>&,ulong) +000A4FFD: mov rcx, rax +000A5000: lea rdx, [rbp+var_20] +000A5004: lea rax, [rbp+var_30] +000A5008: mov rsi, rcx +000A500B: mov rdi, rax +000A500E: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EC2ESG_RKSH_ +000A5013: lea rax, [rbp+var_30] +000A5017: mov rdi, rax +000A501A: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get(void) +000A501F: mov rdx, rax +000A5022: lea rax, [rbp+var_11] +000A5026: mov rsi, rdx +000A5029: mov rdi, rax +000A502C: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSD_ +000A5031: lea rax, [rbp+var_30] +000A5035: mov esi, 0 +000A503A: mov rdi, rax +000A503D: call __ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>(std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}> const&,decltype(nullptr)) +000A5042: test al, al +000A5044: jnz short loc_A5065 +000A5046: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIEEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::release(void) +000A5071: mov rbx, rax +000A5074: lea rax, [rbp+var_30] +000A5078: mov rdi, rax +000A507B: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_ED2Ev; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::~unique_ptr() +000A5080: lea rax, [rbp+var_11] +000A5084: mov rdi, rax +000A5087: call __ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev; std::allocator>>,std::allocator>>>>>::~allocator() +000A508C: mov rax, rbx +000A508F: jmp short loc_A50BC +000A5091: mov rbx, rax +000A5094: lea rax, [rbp+var_30] +000A5098: mov rdi, rax +000A509B: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_ED2Ev; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::~unique_ptr() +000A50A0: jmp short loc_A50A5 +000A50A2: mov rbx, rax +000A50A5: lea rax, [rbp+var_11] +000A50A9: mov rdi, rax +000A50AC: call __ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev; std::allocator>>,std::allocator>>>>>::~allocator() +000A50B1: mov rax, rbx +000A50B4: mov rdi, rax; struct _Unwind_Exception * +000A50B7: call __Unwind_Resume +000A50BC: add rsp, 28h +000A50C0: pop rbx +000A50C1: pop rbp +000A50C2: retn + +### FUNC 000A50C4 - 000A50F1 (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_ENKUlPSsE_clESG_ +000A50C4: push rbp +000A50C5: mov rbp, rsp +000A50C8: sub rsp, 10h +000A50CC: mov [rbp+var_8], rdi +000A50D0: mov [rbp+var_10], rsi +000A50D4: mov rax, [rbp+var_8] +000A50D8: mov rax, [rax] +000A50DB: mov rcx, [rbp+var_10] +000A50DF: mov edx, 1 +000A50E4: mov rsi, rcx +000A50E7: mov rdi, rax +000A50EA: call __ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm; std::allocator_traits>::deallocate(std::allocator&,std::string *,ulong) +000A50EF: leave +000A50F0: retn + +### FUNC 000A50F1 - 000A50FF (14 bytes) name=_ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE +000A50F1: push rbp +000A50F2: mov rbp, rsp +000A50F5: mov [rbp+var_8], rdi +000A50F9: mov rax, [rbp+var_8] +000A50FD: pop rbp +000A50FE: retn + +### FUNC 000A50FF - 000A5209 (266 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_ +000A50FF: push rbp; Alternative name is '_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_' +000A5100: mov rbp, rsp +000A5103: push rbx +000A5104: sub rsp, 38h +000A5108: mov [rbp+var_38], rdi +000A510C: lea rax, [rbp+var_11] +000A5110: mov rdi, rax +000A5113: call __ZNSaISsEC2Ev_0; std::allocator::allocator(void) +000A5118: lea rax, [rbp+var_11] +000A511C: mov [rbp+var_20], rax +000A5120: lea rax, [rbp+var_11] +000A5124: mov esi, 1 +000A5129: mov rdi, rax +000A512C: call __ZNSt16allocator_traitsISaISsEE8allocateERS0_m; std::allocator_traits>::allocate(std::allocator&,ulong) +000A5131: mov rcx, rax +000A5134: lea rdx, [rbp+var_20] +000A5138: lea rax, [rbp+var_30] +000A513C: mov rsi, rcx +000A513F: mov rdi, rax +000A5142: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EC2ESH_RKSI_; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::unique_ptr(char const(&)[1] &&,std::string * const&) +000A5147: mov rax, [rbp+var_38] +000A514B: mov rdi, rax +000A514E: call __ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A5153: mov rbx, rax +000A5156: lea rax, [rbp+var_30] +000A515A: mov rdi, rax +000A515D: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::get(void) +000A5162: mov rcx, rax +000A5165: lea rax, [rbp+var_11] +000A5169: mov rdx, rbx +000A516C: mov rsi, rcx +000A516F: mov rdi, rax +000A5172: call __ZNSt16allocator_traitsISaISsEE9constructISsJRA1_KcEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS6_ +000A5177: lea rax, [rbp+var_30] +000A517B: mov esi, 0 +000A5180: mov rdi, rax +000A5183: call __ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}> const&,decltype(nullptr)) +000A5188: test al, al +000A518A: jnz short loc_A51AB +000A518C: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::release(void) +000A51B7: mov rbx, rax +000A51BA: lea rax, [rbp+var_30] +000A51BE: mov rdi, rax +000A51C1: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_ED2Ev; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::~unique_ptr() +000A51C6: lea rax, [rbp+var_11] +000A51CA: mov rdi, rax +000A51CD: call __ZNSaISsED2Ev; std::allocator::~allocator() +000A51D2: mov rax, rbx +000A51D5: jmp short loc_A5202 +000A51D7: mov rbx, rax +000A51DA: lea rax, [rbp+var_30] +000A51DE: mov rdi, rax +000A51E1: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_ED2Ev; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::~unique_ptr() +000A51E6: jmp short loc_A51EB +000A51E8: mov rbx, rax +000A51EB: lea rax, [rbp+var_11] +000A51EF: mov rdi, rax +000A51F2: call __ZNSaISsED2Ev; std::allocator::~allocator() +000A51F7: mov rax, rbx +000A51FA: mov rdi, rax; struct _Unwind_Exception * +000A51FD: call __Unwind_Resume +000A5202: add rsp, 38h +000A5206: pop rbx +000A5207: pop rbp +000A5208: retn + +### FUNC 000A520A - 000A5237 (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000A520A: push rbp +000A520B: mov rbp, rsp +000A520E: sub rsp, 10h +000A5212: mov [rbp+var_8], rdi +000A5216: mov [rbp+var_10], rsi +000A521A: mov rax, [rbp+var_8] +000A521E: mov rax, [rax] +000A5221: mov rcx, [rbp+var_10] +000A5225: mov edx, 1 +000A522A: mov rsi, rcx +000A522D: mov rdi, rax +000A5230: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m; std::allocator_traits>>>>::deallocate(std::allocator>>>&,nlohmann::byte_container_with_subtype>>*,ulong) +000A5235: leave +000A5236: retn + +### FUNC 000A5237 - 000A532B (244 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJEEEPT_DpOT0_ +000A5237: push rbp; Alternative name is 'nlohmann::byte_container_with_subtype>> * nlohmann::basic_json>>::create>>>()' +000A5238: mov rbp, rsp +000A523B: push rbx +000A523C: sub rsp, 28h +000A5240: lea rax, [rbp+var_11] +000A5244: mov rdi, rax +000A5247: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev; std::allocator>>>::allocator(void) +000A524C: lea rax, [rbp+var_11] +000A5250: mov [rbp+var_20], rax +000A5254: lea rax, [rbp+var_11] +000A5258: mov esi, 1 +000A525D: mov rdi, rax +000A5260: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE8allocateERS6_m; std::allocator_traits>>>>::allocate(std::allocator>>>&,ulong) +000A5265: mov rcx, rax +000A5268: lea rdx, [rbp+var_20] +000A526C: lea rax, [rbp+var_30] +000A5270: mov rsi, rcx +000A5273: mov rdi, rax +000A5276: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EC2ESG_RKSH_ +000A527B: lea rax, [rbp+var_30] +000A527F: mov rdi, rax +000A5282: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get(void) +000A5287: mov rdx, rax +000A528A: lea rax, [rbp+var_11] +000A528E: mov rsi, rdx +000A5291: mov rdi, rax +000A5294: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOS9_ +000A5299: lea rax, [rbp+var_30] +000A529D: mov esi, 0 +000A52A2: mov rdi, rax +000A52A5: call __ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>(std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}> const&,decltype(nullptr)) +000A52AA: test al, al +000A52AC: jnz short loc_A52CD +000A52AE: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIEEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::release(void) +000A52D9: mov rbx, rax +000A52DC: lea rax, [rbp+var_30] +000A52E0: mov rdi, rax +000A52E3: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_ED2Ev; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::~unique_ptr() +000A52E8: lea rax, [rbp+var_11] +000A52EC: mov rdi, rax +000A52EF: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000A52F4: mov rax, rbx +000A52F7: jmp short loc_A5324 +000A52F9: mov rbx, rax +000A52FC: lea rax, [rbp+var_30] +000A5300: mov rdi, rax +000A5303: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_ED2Ev; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::~unique_ptr() +000A5308: jmp short loc_A530D +000A530A: mov rbx, rax +000A530D: lea rax, [rbp+var_11] +000A5311: mov rdi, rax +000A5314: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000A5319: mov rax, rbx +000A531C: mov rdi, rax; struct _Unwind_Exception * +000A531F: call __Unwind_Resume +000A5324: add rsp, 28h +000A5328: pop rbx +000A5329: pop rbp +000A532A: retn + +### FUNC 000A532C - 000A5351 (37 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE11lower_boundERSA_ +000A532C: push rbp +000A532D: mov rbp, rsp +000A5330: sub rsp, 10h +000A5334: mov [rbp+var_8], rdi +000A5338: mov [rbp+var_10], rsi +000A533C: mov rax, [rbp+var_8] +000A5340: mov rdx, [rbp+var_10] +000A5344: mov rsi, rdx +000A5347: mov rdi, rax +000A534A: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11lower_boundERS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::lower_bound(std::string const&) +000A534F: leave +000A5350: retn + +### FUNC 000A5352 - 000A5374 (34 bytes) name=_ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8key_compEv +000A5352: push rbp +000A5353: mov rbp, rsp +000A5356: push rbx +000A5357: sub rsp, 18h +000A535B: mov [rbp+var_18], rdi +000A535F: mov rax, [rbp+var_18] +000A5363: mov rdi, rax +000A5366: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8key_compEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::key_comp(void) +000A536B: mov eax, ebx +000A536D: add rsp, 18h +000A5371: pop rbx +000A5372: pop rbp +000A5373: retn + +### FUNC 000A5374 - 000A539D (41 bytes) name=_ZNKSt4lessISsEclERKSsS2_ +000A5374: push rbp +000A5375: mov rbp, rsp +000A5378: sub rsp, 20h +000A537C: mov [rbp+var_8], rdi +000A5380: mov [rbp+var_10], rsi +000A5384: mov [rbp+var_18], rdx +000A5388: mov rdx, [rbp+var_18] +000A538C: mov rax, [rbp+var_10] +000A5390: mov rsi, rdx +000A5393: mov rdi, rax +000A5396: call __ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_; std::operator<,std::allocator>(std::basic_string,std::allocator> const&,std::basic_string,std::allocator> const&) +000A539B: leave +000A539C: retn + +### FUNC 000A539E - 000A53C0 (34 bytes) name=_ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_ +000A539E: push rbp +000A539F: mov rbp, rsp +000A53A2: mov [rbp+var_8], rdi +000A53A6: mov [rbp+var_10], rsi +000A53AA: mov rax, [rbp+var_8] +000A53AE: mov rdx, [rax] +000A53B1: mov rax, [rbp+var_10] +000A53B5: mov rax, [rax] +000A53B8: cmp rdx, rax +000A53BB: setz al +000A53BE: pop rbp +000A53BF: retn + +### FUNC 000A53C0 - 000A53CE (14 bytes) name=_ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE +000A53C0: push rbp +000A53C1: mov rbp, rsp +000A53C4: mov [rbp+var_8], rdi +000A53C8: mov rax, [rbp+var_8] +000A53CC: pop rbp +000A53CD: retn + +### FUNC 000A53CE - 000A53F3 (37 bytes) name=_ZNSt10_Head_baseILm0EOSsLb0EEC2ISsEEOT_ +000A53CE: push rbp; Alternative name is 'std::_Head_base<0ul, std::string &&, false>::_Head_base(std::string &&)' +000A53CF: mov rbp, rsp +000A53D2: sub rsp, 10h +000A53D6: mov [rbp+var_8], rdi +000A53DA: mov [rbp+var_10], rsi +000A53DE: mov rax, [rbp+var_10] +000A53E2: mov rdi, rax +000A53E5: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A53EA: mov rdx, [rbp+var_8] +000A53EE: mov [rdx], rax +000A53F1: leave +000A53F2: retn + +### FUNC 000A53F4 - 000A5430 (60 bytes) name=_ZNSt11_Tuple_implILm0EJOSsEEC2ISsJEvEEOT_DpOT0_ +000A53F4: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EJOSsEEC1ISsJEvEEOT_DpOT0_' +000A53F5: mov rbp, rsp +000A53F8: sub rsp, 10h +000A53FC: mov [rbp+var_8], rdi +000A5400: mov [rbp+var_10], rsi +000A5404: mov rax, [rbp+var_8] +000A5408: mov rdi, rax +000A540B: call __ZNSt11_Tuple_implILm1EJEEC2Ev; std::_Tuple_impl<1ul>::_Tuple_impl(void) +000A5410: mov rax, [rbp+var_10] +000A5414: mov rdi, rax +000A5417: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A541C: mov rdx, rax +000A541F: mov rax, [rbp+var_8] +000A5423: mov rsi, rdx +000A5426: mov rdi, rax +000A5429: call __ZNSt10_Head_baseILm0EOSsLb0EEC2ISsEEOT_; std::_Head_base<0ul,std::string &&,false>::_Head_base(std::string &&) +000A542E: leave +000A542F: retn + +### FUNC 000A5430 - 000A5460 (48 bytes) name=_ZNSt5tupleIJOSsEEC2IJSsEvEEDpOT_ +000A5430: push rbp; Alternative name is 'std::tuple::tuple(std::string &&)' +000A5431: mov rbp, rsp +000A5434: sub rsp, 10h +000A5438: mov [rbp+var_8], rdi +000A543C: mov [rbp+var_10], rsi +000A5440: mov rax, [rbp+var_10] +000A5444: mov rdi, rax +000A5447: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A544C: mov rdx, rax +000A544F: mov rax, [rbp+var_8] +000A5453: mov rsi, rdx +000A5456: mov rdi, rax +000A5459: call __ZNSt11_Tuple_implILm0EJOSsEEC2ISsJEvEEOT_DpOT0_ +000A545E: leave +000A545F: retn + +### FUNC 000A5460 - 000A546E (14 bytes) name=_ZNSt11_Tuple_implILm0EJOSsEE7_M_tailERS1_ +000A5460: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string &&>::_M_tail(std::string &&&)' +000A5461: mov rbp, rsp +000A5464: mov [rbp+var_8], rdi +000A5468: mov rax, [rbp+var_8] +000A546C: pop rbp +000A546D: retn + +### FUNC 000A546E - 000A547C (14 bytes) name=_ZSt4moveIRSt11_Tuple_implILm1EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000A546E: push rbp; Alternative name is '_ZSt4moveIRSt11_Tuple_implILm1EIEEEONSt16remove_referenceIT_E4typeEOS4_' +000A546F: mov rbp, rsp +000A5472: mov [rbp+var_8], rdi +000A5476: mov rax, [rbp+var_8] +000A547A: pop rbp +000A547B: retn + +### FUNC 000A547C - 000A548D (17 bytes) name=_ZNSt10_Head_baseILm0EOSsLb0EE7_M_headERS1_ +000A547C: push rbp +000A547D: mov rbp, rsp +000A5480: mov [rbp+var_8], rdi +000A5484: mov rax, [rbp+var_8] +000A5488: mov rax, [rax] +000A548B: pop rbp +000A548C: retn + +### FUNC 000A548D - 000A54A7 (26 bytes) name=_ZNSt11_Tuple_implILm0EJOSsEE7_M_headERS1_ +000A548D: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string &&>::_M_head(std::string &&&)' +000A548E: mov rbp, rsp +000A5491: sub rsp, 10h +000A5495: mov [rbp+var_8], rdi +000A5499: mov rax, [rbp+var_8] +000A549D: mov rdi, rax +000A54A0: call __ZNSt10_Head_baseILm0EOSsLb0EE7_M_headERS1_; std::_Head_base<0ul,std::string &&,false>::_M_head(std::string &&&) +000A54A5: leave +000A54A6: retn + +### FUNC 000A54A7 - 000A54B5 (14 bytes) name=_ZSt7forwardIOSsEOT_RNSt16remove_referenceIS1_E4typeE +000A54A7: push rbp +000A54A8: mov rbp, rsp +000A54AB: mov [rbp+var_8], rdi +000A54AF: mov rax, [rbp+var_8] +000A54B3: pop rbp +000A54B4: retn + +### FUNC 000A54B6 - 000A5502 (76 bytes) name=_ZNSt11_Tuple_implILm0EJOSsEEC2EOS1_ +000A54B6: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string &&>::_Tuple_impl(std::string &&&&)' +000A54B7: mov rbp, rsp +000A54BA: sub rsp, 10h +000A54BE: mov [rbp+var_8], rdi +000A54C2: mov [rbp+var_10], rsi +000A54C6: mov rax, [rbp+var_10] +000A54CA: mov rdi, rax +000A54CD: call __ZNSt11_Tuple_implILm0EJOSsEE7_M_tailERS1_; std::_Tuple_impl<0ul,std::string &&>::_M_tail(std::string &&&) +000A54D2: mov rdi, rax +000A54D5: call __ZSt4moveIRSt11_Tuple_implILm1EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000A54DA: mov rax, [rbp+var_10] +000A54DE: mov rdi, rax +000A54E1: call __ZNSt11_Tuple_implILm0EJOSsEE7_M_headERS1_; std::_Tuple_impl<0ul,std::string &&>::_M_head(std::string &&&) +000A54E6: mov rdi, rax +000A54E9: call __ZSt7forwardIOSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000A54EE: mov rdx, rax +000A54F1: mov rax, [rbp+var_8] +000A54F5: mov rsi, rdx +000A54F8: mov rdi, rax +000A54FB: call __ZNSt10_Head_baseILm0EOSsLb0EEC2ISsEEOT_; std::_Head_base<0ul,std::string &&,false>::_Head_base(std::string &&) +000A5500: leave +000A5501: retn + +### FUNC 000A5502 - 000A5527 (37 bytes) name=_ZNSt5tupleIJOSsEEC2EOS1_ +000A5502: push rbp; Alternative name is 'std::tuple::tuple(std::string &&&&)' +000A5503: mov rbp, rsp +000A5506: sub rsp, 10h +000A550A: mov [rbp+var_8], rdi +000A550E: mov [rbp+var_10], rsi +000A5512: mov rdx, [rbp+var_10] +000A5516: mov rax, [rbp+var_8] +000A551A: mov rsi, rdx +000A551D: mov rdi, rax +000A5520: call __ZNSt11_Tuple_implILm0EJOSsEEC2EOS1_; std::_Tuple_impl<0ul,std::string &&>::_Tuple_impl(std::string &&&&) +000A5525: leave +000A5526: retn + +### FUNC 000A5527 - 000A555B (52 bytes) name=_ZSt16forward_as_tupleIJSsEESt5tupleIJDpOT_EES3_ +000A5527: push rbp; Alternative name is 'std::tuple std::forward_as_tuple(std::string &&)' +000A5528: mov rbp, rsp +000A552B: sub rsp, 10h +000A552F: mov [rbp+var_8], rdi +000A5533: mov [rbp+var_10], rsi +000A5537: mov rax, [rbp+var_10] +000A553B: mov rdi, rax +000A553E: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A5543: mov rdx, rax +000A5546: mov rax, [rbp+var_8] +000A554A: mov rsi, rdx +000A554D: mov rdi, rax +000A5550: call __ZNSt5tupleIJOSsEEC2IJSsEvEEDpOT_; std::tuple::tuple(std::string &&) +000A5555: mov rax, [rbp+var_8] +000A5559: leave +000A555A: retn + +### FUNC 000A555C - 000A5578 (28 bytes) name=_ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E +000A555C: push rbp; Alternative name is 'std::_Rb_tree_const_iterator>>>>::_Rb_tree_const_iterator(std::_Rb_tree_iterator>>>> const&)' +000A555D: mov rbp, rsp +000A5560: mov [rbp+var_8], rdi +000A5564: mov [rbp+var_10], rsi +000A5568: mov rax, [rbp+var_10] +000A556C: mov rdx, [rax] +000A556F: mov rax, [rbp+var_8] +000A5573: mov [rax], rdx +000A5576: pop rbp +000A5577: retn + +### FUNC 000A5578 - 000A5586 (14 bytes) name=_ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE +000A5578: push rbp +000A5579: mov rbp, rsp +000A557C: mov [rbp+var_8], rdi +000A5580: mov rax, [rbp+var_8] +000A5584: pop rbp +000A5585: retn + +### FUNC 000A5586 - 000A5594 (14 bytes) name=_ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE +000A5586: push rbp; Alternative name is 'std::tuple && std::forward>(std::remove_reference>::type &)' +000A5587: mov rbp, rsp +000A558A: mov [rbp+var_8], rdi +000A558E: mov rax, [rbp+var_8] +000A5592: pop rbp +000A5593: retn + +### FUNC 000A5594 - 000A55A2 (14 bytes) name=_ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000A5594: push rbp; Alternative name is '_ZSt7forwardISt5tupleIIEEEOT_RNSt16remove_referenceIS2_E4typeE' +000A5595: mov rbp, rsp +000A5598: mov [rbp+var_8], rdi +000A559C: mov rax, [rbp+var_8] +000A55A0: pop rbp +000A55A1: retn + +### FUNC 000A55A2 - 000A56B9 (279 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +000A55A2: push rbp; Alternative name is 'std::_Rb_tree_iterator>>>> std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>> +000A55A3: mov rbp, rsp +000A55A6: push r12 +000A55A8: push rbx +000A55A9: sub rsp, 50h +000A55AD: mov [rbp+var_38], rdi +000A55B1: mov [rbp+var_40], rsi +000A55B5: mov [rbp+var_48], rdx +000A55B9: mov [rbp+var_50], rcx +000A55BD: mov [rbp+var_58], r8 +000A55C1: mov rax, [rbp+var_58] +000A55C5: mov rdi, rax +000A55C8: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000A55CD: mov r12, rax +000A55D0: mov rax, [rbp+var_50] +000A55D4: mov rdi, rax +000A55D7: call __ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward>(std::remove_reference>::type &) +000A55DC: mov rbx, rax +000A55DF: mov rax, [rbp+var_48] +000A55E3: mov rdi, rax +000A55E6: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A55EB: mov rsi, rax +000A55EE: mov rax, [rbp+var_38] +000A55F2: mov rcx, r12 +000A55F5: mov rdx, rbx +000A55F8: mov rdi, rax +000A55FB: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_create_node,std::tuple<>>() +000A5600: mov [rbp+var_18], rax +000A5604: mov rax, [rbp+var_18] +000A5608: mov rdi, rax +000A560B: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node>>>> const*) +000A5610: mov rdx, rax +000A5613: mov rcx, [rbp+var_40] +000A5617: mov rax, [rbp+var_38] +000A561B: mov rsi, rcx +000A561E: mov rdi, rax +000A5621: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator>>>>,std::string const&) +000A5626: mov [rbp+var_30], rax +000A562A: mov [rbp+var_28], rdx +000A562E: mov rax, [rbp+var_28] +000A5632: test rax, rax +000A5635: jz short loc_A5651 +000A5637: mov rdx, [rbp+var_28] +000A563B: mov rsi, [rbp+var_30] +000A563F: mov rcx, [rbp+var_18] +000A5643: mov rax, [rbp+var_38] +000A5647: mov rdi, rax +000A564A: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_insert_node(std::_Rb_tree_node_base *,std::_Rb_tree_node_base *,std::_Rb_tree_node>>>> *) +000A564F: jmp short loc_A56B0 +000A5651: mov rdx, [rbp+var_18] +000A5655: mov rax, [rbp+var_38] +000A5659: mov rsi, rdx +000A565C: mov rdi, rax +000A565F: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_destroy_node(std::_Rb_tree_node>>>> *) +000A5664: mov rdx, [rbp+var_30] +000A5668: lea rax, [rbp+var_20] +000A566C: mov rsi, rdx +000A566F: mov rdi, rax +000A5672: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000A5677: mov rax, [rbp+var_20] +000A567B: jmp short loc_A56B0 +000A567D: mov rdi, rax; void * +000A5680: call ___cxa_begin_catch +000A5685: mov rdx, [rbp+var_18] +000A5689: mov rax, [rbp+var_38] +000A568D: mov rsi, rdx +000A5690: mov rdi, rax +000A5693: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_destroy_node(std::_Rb_tree_node>>>> *) +000A5698: call ___cxa_rethrow +000A569D: mov rbx, rax +000A56A0: call ___cxa_end_catch +000A56A5: mov rax, rbx +000A56A8: mov rdi, rax; struct _Unwind_Exception * +000A56AB: call __Unwind_Resume +000A56B0: add rsp, 50h +000A56B4: pop rbx +000A56B5: pop r12 +000A56B7: pop rbp +000A56B8: retn + +### FUNC 000A56BA - 000A56E7 (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIRKSE_EEEPT_DpOT0_ENKUlPSE_E_clESM_ +000A56BA: push rbp +000A56BB: mov rbp, rsp +000A56BE: sub rsp, 10h +000A56C2: mov [rbp+var_8], rdi +000A56C6: mov [rbp+var_10], rsi +000A56CA: mov rax, [rbp+var_8] +000A56CE: mov rax, [rax] +000A56D1: mov rcx, [rbp+var_10] +000A56D5: mov edx, 1 +000A56DA: mov rsi, rcx +000A56DD: mov rdi, rax +000A56E0: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10deallocateERSF_PSE_m; std::allocator_traits>>,std::less,std::allocator>>>>>>>::deallocate(std::allocator>>,std::less,std::allocator>>>>>>&,std::map>>,std::less,std::allocator>>>>>*,ulong) +000A56E5: leave +000A56E6: retn + +### FUNC 000A56E7 - 000A56F5 (14 bytes) name=_ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +000A56E7: push rbp +000A56E8: mov rbp, rsp +000A56EB: mov [rbp+var_8], rdi +000A56EF: mov rax, [rbp+var_8] +000A56F3: pop rbp +000A56F4: retn + +### FUNC 000A56F5 - 000A57FF (266 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEJRKSE_EEEPT_DpOT0_ +000A56F5: push rbp; Alternative name is 'std::map>>, std::less, std::allocator>>>>> * nlohmann::basic_json>>::create>>, std::less, std::allocator>>,std::less,std::allocator>>>>>>::allocator(void) +000A570E: lea rax, [rbp+var_11] +000A5712: mov [rbp+var_20], rax +000A5716: lea rax, [rbp+var_11] +000A571A: mov esi, 1 +000A571F: mov rdi, rax +000A5722: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE8allocateERSF_m; std::allocator_traits>>,std::less,std::allocator>>>>>>>::allocate(std::allocator>>,std::less,std::allocator>>>>>>&,ulong) +000A5727: mov rcx, rax +000A572A: lea rdx, [rbp+var_20] +000A572E: lea rax, [rbp+var_30] +000A5732: mov rsi, rcx +000A5735: mov rdi, rax +000A5738: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EC2ESN_RKSO_; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::unique_ptr(nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1},std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}> const&) +000A573D: mov rax, [rbp+var_38] +000A5741: mov rdi, rax +000A5744: call __ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> const&>(std::remove_reference>>,std::less,std::allocator>>>>> const&>::type &) +000A5749: mov rbx, rax +000A574C: lea rax, [rbp+var_30] +000A5750: mov rdi, rax +000A5753: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get(void) +000A5758: mov rcx, rax +000A575B: lea rax, [rbp+var_11] +000A575F: mov rdx, rbx +000A5762: mov rsi, rcx +000A5765: mov rdi, rax +000A5768: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JRKSE_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSK_ +000A576D: lea rax, [rbp+var_30] +000A5771: mov esi, 0 +000A5776: mov rdi, rax +000A5779: call __ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>(std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}> const&,decltype(nullptr)) +000A577E: test al, al +000A5780: jnz short loc_A57A1 +000A5782: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIRKSE_EEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::release(void) +000A57AD: mov rbx, rax +000A57B0: lea rax, [rbp+var_30] +000A57B4: mov rdi, rax +000A57B7: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::~unique_ptr() +000A57BC: lea rax, [rbp+var_11] +000A57C0: mov rdi, rax +000A57C3: call __ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev; std::allocator>>,std::less,std::allocator>>>>>>::~allocator() +000A57C8: mov rax, rbx +000A57CB: jmp short loc_A57F8 +000A57CD: mov rbx, rax +000A57D0: lea rax, [rbp+var_30] +000A57D4: mov rdi, rax +000A57D7: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::~unique_ptr() +000A57DC: jmp short loc_A57E1 +000A57DE: mov rbx, rax +000A57E1: lea rax, [rbp+var_11] +000A57E5: mov rdi, rax +000A57E8: call __ZNSaISt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEED2Ev; std::allocator>>,std::less,std::allocator>>>>>>::~allocator() +000A57ED: mov rax, rbx +000A57F0: mov rdi, rax; struct _Unwind_Exception * +000A57F3: call __Unwind_Resume +000A57F8: add rsp, 38h +000A57FC: pop rbx +000A57FD: pop rbp +000A57FE: retn + +### FUNC 000A5800 - 000A582D (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +000A5800: push rbp +000A5801: mov rbp, rsp +000A5804: sub rsp, 10h +000A5808: mov [rbp+var_8], rdi +000A580C: mov [rbp+var_10], rsi +000A5810: mov rax, [rbp+var_8] +000A5814: mov rax, [rax] +000A5817: mov rcx, [rbp+var_10] +000A581B: mov edx, 1 +000A5820: mov rsi, rcx +000A5823: mov rdi, rax +000A5826: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10deallocateERSA_PS9_m; std::allocator_traits>>,std::allocator>>>>>>::deallocate(std::allocator>>,std::allocator>>>>>&,std::vector>>,std::allocator>>>>*,ulong) +000A582B: leave +000A582C: retn + +### FUNC 000A582D - 000A583B (14 bytes) name=_ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +000A582D: push rbp +000A582E: mov rbp, rsp +000A5831: mov [rbp+var_8], rdi +000A5835: mov rax, [rbp+var_8] +000A5839: pop rbp +000A583A: retn + +### FUNC 000A583B - 000A5945 (266 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEJRKS9_EEEPT_DpOT0_ +000A583B: push rbp; Alternative name is 'std::vector>>, std::allocator>>>> * nlohmann::basic_json>>::create>>, std::allocator>>,std::allocator>>>>>::allocator(void) +000A5854: lea rax, [rbp+var_11] +000A5858: mov [rbp+var_20], rax +000A585C: lea rax, [rbp+var_11] +000A5860: mov esi, 1 +000A5865: mov rdi, rax +000A5868: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE8allocateERSA_m; std::allocator_traits>>,std::allocator>>>>>>::allocate(std::allocator>>,std::allocator>>>>>&,ulong) +000A586D: mov rcx, rax +000A5870: lea rdx, [rbp+var_20] +000A5874: lea rax, [rbp+var_30] +000A5878: mov rsi, rcx +000A587B: mov rdi, rax +000A587E: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EC2ESI_RKSJ_; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::unique_ptr(nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1},std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}> const&) +000A5883: mov rax, [rbp+var_38] +000A5887: mov rdi, rax +000A588A: call __ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> const&>(std::remove_reference>>,std::allocator>>>> const&>::type &) +000A588F: mov rbx, rax +000A5892: lea rax, [rbp+var_30] +000A5896: mov rdi, rax +000A5899: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get(void) +000A589E: mov rcx, rax +000A58A1: lea rax, [rbp+var_11] +000A58A5: mov rdx, rbx +000A58A8: mov rsi, rcx +000A58AB: mov rdi, rax +000A58AE: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JRKS9_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSF_ +000A58B3: lea rax, [rbp+var_30] +000A58B7: mov esi, 0 +000A58BC: mov rdi, rax +000A58BF: call __ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>(std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}> const&,decltype(nullptr)) +000A58C4: test al, al +000A58C6: jnz short loc_A58E7 +000A58C8: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIRKS9_EEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::release(void) +000A58F3: mov rbx, rax +000A58F6: lea rax, [rbp+var_30] +000A58FA: mov rdi, rax +000A58FD: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_ED2Ev; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::~unique_ptr() +000A5902: lea rax, [rbp+var_11] +000A5906: mov rdi, rax +000A5909: call __ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev; std::allocator>>,std::allocator>>>>>::~allocator() +000A590E: mov rax, rbx +000A5911: jmp short loc_A593E +000A5913: mov rbx, rax +000A5916: lea rax, [rbp+var_30] +000A591A: mov rdi, rax +000A591D: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_ED2Ev; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::~unique_ptr() +000A5922: jmp short loc_A5927 +000A5924: mov rbx, rax +000A5927: lea rax, [rbp+var_11] +000A592B: mov rdi, rax +000A592E: call __ZNSaISt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEED2Ev; std::allocator>>,std::allocator>>>>>::~allocator() +000A5933: mov rax, rbx +000A5936: mov rdi, rax; struct _Unwind_Exception * +000A5939: call __Unwind_Resume +000A593E: add rsp, 38h +000A5942: pop rbx +000A5943: pop rbp +000A5944: retn + +### FUNC 000A5946 - 000A5973 (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_ENKUlPSsE_clESF_ +000A5946: push rbp +000A5947: mov rbp, rsp +000A594A: sub rsp, 10h +000A594E: mov [rbp+var_8], rdi +000A5952: mov [rbp+var_10], rsi +000A5956: mov rax, [rbp+var_8] +000A595A: mov rax, [rax] +000A595D: mov rcx, [rbp+var_10] +000A5961: mov edx, 1 +000A5966: mov rsi, rcx +000A5969: mov rdi, rax +000A596C: call __ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm; std::allocator_traits>::deallocate(std::allocator&,std::string *,ulong) +000A5971: leave +000A5972: retn + +### FUNC 000A5973 - 000A5A7D (266 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_ +000A5973: push rbp; Alternative name is '_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_' +000A5974: mov rbp, rsp +000A5977: push rbx +000A5978: sub rsp, 38h +000A597C: mov [rbp+var_38], rdi +000A5980: lea rax, [rbp+var_11] +000A5984: mov rdi, rax +000A5987: call __ZNSaISsEC2Ev_0; std::allocator::allocator(void) +000A598C: lea rax, [rbp+var_11] +000A5990: mov [rbp+var_20], rax +000A5994: lea rax, [rbp+var_11] +000A5998: mov esi, 1 +000A599D: mov rdi, rax +000A59A0: call __ZNSt16allocator_traitsISaISsEE8allocateERS0_m; std::allocator_traits>::allocate(std::allocator&,ulong) +000A59A5: mov rcx, rax +000A59A8: lea rdx, [rbp+var_20] +000A59AC: lea rax, [rbp+var_30] +000A59B0: mov rsi, rcx +000A59B3: mov rdi, rax +000A59B6: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EC2ESG_RKSH_; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::unique_ptr(nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1},std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}> const&) +000A59BB: mov rax, [rbp+var_38] +000A59BF: mov rdi, rax +000A59C2: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A59C7: mov rbx, rax +000A59CA: lea rax, [rbp+var_30] +000A59CE: mov rdi, rax +000A59D1: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::get(void) +000A59D6: mov rcx, rax +000A59D9: lea rax, [rbp+var_11] +000A59DD: mov rdx, rbx +000A59E0: mov rsi, rcx +000A59E3: mov rdi, rax +000A59E6: call __ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000A59EB: lea rax, [rbp+var_30] +000A59EF: mov esi, 0 +000A59F4: mov rdi, rax +000A59F7: call __ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>::create(std::string const&)::{lambda(std::string *)#1}>(std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}> const&,decltype(nullptr)) +000A59FC: test al, al +000A59FE: jnz short loc_A5A1F +000A5A00: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>::release(void) +000A5A2B: mov rbx, rax +000A5A2E: lea rax, [rbp+var_30] +000A5A32: mov rdi, rax +000A5A35: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::~unique_ptr() +000A5A3A: lea rax, [rbp+var_11] +000A5A3E: mov rdi, rax +000A5A41: call __ZNSaISsED2Ev; std::allocator::~allocator() +000A5A46: mov rax, rbx +000A5A49: jmp short loc_A5A76 +000A5A4B: mov rbx, rax +000A5A4E: lea rax, [rbp+var_30] +000A5A52: mov rdi, rax +000A5A55: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::~unique_ptr() +000A5A5A: jmp short loc_A5A5F +000A5A5C: mov rbx, rax +000A5A5F: lea rax, [rbp+var_11] +000A5A63: mov rdi, rax +000A5A66: call __ZNSaISsED2Ev; std::allocator::~allocator() +000A5A6B: mov rax, rbx +000A5A6E: mov rdi, rax; struct _Unwind_Exception * +000A5A71: call __Unwind_Resume +000A5A76: add rsp, 38h +000A5A7A: pop rbx +000A5A7B: pop rbp +000A5A7C: retn + +### FUNC 000A5A7E - 000A5AAB (45 bytes) name=_ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_ +000A5A7E: push rbp +000A5A7F: mov rbp, rsp +000A5A82: sub rsp, 10h +000A5A86: mov [rbp+var_8], rdi +000A5A8A: mov [rbp+var_10], rsi +000A5A8E: mov rax, [rbp+var_8] +000A5A92: mov rax, [rax] +000A5A95: mov rcx, [rbp+var_10] +000A5A99: mov edx, 1 +000A5A9E: mov rsi, rcx +000A5AA1: mov rdi, rax +000A5AA4: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m; std::allocator_traits>>>>::deallocate(std::allocator>>>&,nlohmann::byte_container_with_subtype>>*,ulong) +000A5AA9: leave +000A5AAA: retn + +### FUNC 000A5AAB - 000A5AB9 (14 bytes) name=_ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000A5AAB: push rbp +000A5AAC: mov rbp, rsp +000A5AAF: mov [rbp+var_8], rdi +000A5AB3: mov rax, [rbp+var_8] +000A5AB7: pop rbp +000A5AB8: retn + +### FUNC 000A5AB9 - 000A5BC3 (266 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEJRKS9_EEEPT_DpOT0_ +000A5AB9: push rbp; Alternative name is 'nlohmann::byte_container_with_subtype>> * nlohmann::basic_json>>::create>>, nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)' +000A5ABA: mov rbp, rsp +000A5ABD: push rbx +000A5ABE: sub rsp, 38h +000A5AC2: mov [rbp+var_38], rdi +000A5AC6: lea rax, [rbp+var_11] +000A5ACA: mov rdi, rax +000A5ACD: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev; std::allocator>>>::allocator(void) +000A5AD2: lea rax, [rbp+var_11] +000A5AD6: mov [rbp+var_20], rax +000A5ADA: lea rax, [rbp+var_11] +000A5ADE: mov esi, 1 +000A5AE3: mov rdi, rax +000A5AE6: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE8allocateERS6_m; std::allocator_traits>>>>::allocate(std::allocator>>>&,ulong) +000A5AEB: mov rcx, rax +000A5AEE: lea rdx, [rbp+var_20] +000A5AF2: lea rax, [rbp+var_30] +000A5AF6: mov rsi, rcx +000A5AF9: mov rdi, rax +000A5AFC: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EC2ESI_RKSJ_; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::unique_ptr(nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1},std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}> const&) +000A5B01: mov rax, [rbp+var_38] +000A5B05: mov rdi, rax +000A5B08: call __ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000A5B0D: mov rbx, rax +000A5B10: lea rax, [rbp+var_30] +000A5B14: mov rdi, rax +000A5B17: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get(void) +000A5B1C: mov rcx, rax +000A5B1F: lea rax, [rbp+var_11] +000A5B23: mov rdx, rbx +000A5B26: mov rsi, rcx +000A5B29: mov rdi, rax +000A5B2C: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JRKS5_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOSB_ +000A5B31: lea rax, [rbp+var_30] +000A5B35: mov esi, 0 +000A5B3A: mov rdi, rax +000A5B3D: call __ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn; std::operator!=>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>(std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}> const&,decltype(nullptr)) +000A5B42: test al, al +000A5B44: jnz short loc_A5B65 +000A5B46: lea rcx, _ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIRKS9_EEEPT_DpOT0_E19__PRETTY_FUNCTION__; "static T* nlohmann::basic_json>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::release(void) +000A5B71: mov rbx, rax +000A5B74: lea rax, [rbp+var_30] +000A5B78: mov rdi, rax +000A5B7B: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::~unique_ptr() +000A5B80: lea rax, [rbp+var_11] +000A5B84: mov rdi, rax +000A5B87: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000A5B8C: mov rax, rbx +000A5B8F: jmp short loc_A5BBC +000A5B91: mov rbx, rax +000A5B94: lea rax, [rbp+var_30] +000A5B98: mov rdi, rax +000A5B9B: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::~unique_ptr() +000A5BA0: jmp short loc_A5BA5 +000A5BA2: mov rbx, rax +000A5BA5: lea rax, [rbp+var_11] +000A5BA9: mov rdi, rax +000A5BAC: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000A5BB1: mov rax, rbx +000A5BB4: mov rdi, rax; struct _Unwind_Exception * +000A5BB7: call __Unwind_Resume +000A5BBC: add rsp, 38h +000A5BC0: pop rbx +000A5BC1: pop rbp +000A5BC2: retn + +### FUNC 000A5BC4 - 000A5BD9 (21 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2Ev +000A5BC4: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>> *, std::vector>>, std::allocator>>>>>::__normal_iterator(void)' +000A5BC5: mov rbp, rsp +000A5BC8: mov [rbp+var_8], rdi +000A5BCC: mov rax, [rbp+var_8] +000A5BD0: mov qword ptr [rax], 0 +000A5BD7: pop rbp +000A5BD8: retn + +### FUNC 000A5BDA - 000A5BF4 (26 bytes) name=_ZN8nlohmann6detail20primitive_iterator_tC2Ev +000A5BDA: push rbp; Alternative name is 'nlohmann::detail::primitive_iterator_t::primitive_iterator_t(void)' +000A5BDB: mov rbp, rsp +000A5BDE: sub rsp, 10h +000A5BE2: mov [rbp+var_8], rdi +000A5BE6: call __ZNSt14numeric_limitsIlE3minEv; std::numeric_limits::min(void) +000A5BEB: mov rdx, [rbp+var_8] +000A5BEF: mov [rdx], rax +000A5BF2: leave +000A5BF3: retn + +### FUNC 000A5BF4 - 000A5C36 (66 bytes) name=_ZN8nlohmann6detail17internal_iteratorINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +000A5BF4: push rbp; Alternative name is 'nlohmann::detail::internal_iterator>>>::internal_iterator(void)' +000A5BF5: mov rbp, rsp +000A5BF8: sub rsp, 10h +000A5BFC: mov [rbp+var_8], rdi +000A5C00: mov rax, [rbp+var_8] +000A5C04: mov rdi, rax +000A5C07: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2Ev; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(void) +000A5C0C: mov rax, [rbp+var_8] +000A5C10: mov qword ptr [rax+8], 0 +000A5C18: mov rax, [rbp+var_8] +000A5C1C: mov qword ptr [rax+10h], 0 +000A5C24: mov rax, [rbp+var_8] +000A5C28: add rax, 10h +000A5C2C: mov rdi, rax; this +000A5C2F: call __ZN8nlohmann6detail20primitive_iterator_tC2Ev; nlohmann::detail::primitive_iterator_t::primitive_iterator_t(void) +000A5C34: leave +000A5C35: retn + +### FUNC 000A5C36 - 000A5D1B (229 bytes) name=_ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2EPS8_ +000A5C36: push rbp; Alternative name is 'nlohmann::detail::iter_impl>>>::iter_impl(nlohmann::basic_json>>*)' +000A5C37: mov rbp, rsp +000A5C3A: sub rsp, 40h +000A5C3E: mov [rbp+var_38], rdi +000A5C42: mov [rbp+var_40], rsi +000A5C46: mov rax, [rbp+var_38] +000A5C4A: mov rdx, [rbp+var_40] +000A5C4E: mov [rax], rdx +000A5C51: mov rax, [rbp+var_38] +000A5C55: mov qword ptr [rax+8], 0 +000A5C5D: mov rax, [rbp+var_38] +000A5C61: mov qword ptr [rax+10h], 0 +000A5C69: mov rax, [rbp+var_38] +000A5C6D: mov qword ptr [rax+18h], 0 +000A5C75: mov rax, [rbp+var_38] +000A5C79: add rax, 8 +000A5C7D: mov rdi, rax +000A5C80: call __ZN8nlohmann6detail17internal_iteratorINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev; nlohmann::detail::internal_iterator>>>::internal_iterator(void) +000A5C85: mov rax, [rbp+var_38] +000A5C89: mov rax, [rax] +000A5C8C: test rax, rax +000A5C8F: jnz short loc_A5CB0 +000A5C91: lea rcx, _ZZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC1EPS8_E19__PRETTY_FUNCTION__; "nlohmann::detail::iter_impl>>>>::_Rb_tree_iterator(void) +000A5CD0: mov rax, [rbp+var_38] +000A5CD4: mov rdx, [rbp+var_30] +000A5CD8: mov [rax+8], rdx +000A5CDC: jmp short locret_A5D19 +000A5CDE: lea rax, [rbp+var_20] +000A5CE2: mov rdi, rax +000A5CE5: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2Ev; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::__normal_iterator(void) +000A5CEA: mov rax, [rbp+var_38] +000A5CEE: mov rdx, [rbp+var_20] +000A5CF2: mov [rax+10h], rdx +000A5CF6: jmp short locret_A5D19 +000A5CF8: mov [rbp+var_10], 0 +000A5D00: lea rax, [rbp+var_10] +000A5D04: mov rdi, rax; this +000A5D07: call __ZN8nlohmann6detail20primitive_iterator_tC2Ev; nlohmann::detail::primitive_iterator_t::primitive_iterator_t(void) +000A5D0C: mov rax, [rbp+var_38] +000A5D10: mov rdx, [rbp+var_10] +000A5D14: mov [rax+18h], rdx +000A5D18: nop +000A5D19: leave +000A5D1A: retn + +### FUNC 000A5D1C - 000A5DD0 (180 bytes) name=_ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9set_beginEv +000A5D1C: push rbp +000A5D1D: mov rbp, rsp +000A5D20: push rbx +000A5D21: sub rsp, 18h +000A5D25: mov [rbp+var_18], rdi +000A5D29: mov rax, [rbp+var_18] +000A5D2D: mov rax, [rax] +000A5D30: test rax, rax +000A5D33: jnz short loc_A5D54 +000A5D35: lea rcx, _ZZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9set_beginEvE19__PRETTY_FUNCTION__; "void nlohmann::detail::iter_impl>>,std::less,std::allocator>>>>>::begin(void) +000A5D83: mov [rbx+8], rax +000A5D87: jmp short loc_A5DC9 +000A5D89: mov rax, [rbp+var_18] +000A5D8D: mov rax, [rax] +000A5D90: mov rax, [rax+8] +000A5D94: mov rbx, [rbp+var_18] +000A5D98: mov rdi, rax +000A5D9B: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv; std::vector>>,std::allocator>>>>::begin(void) +000A5DA0: mov [rbx+10h], rax +000A5DA4: jmp short loc_A5DC9 +000A5DA6: mov rax, [rbp+var_18] +000A5DAA: add rax, 18h +000A5DAE: mov rdi, rax; this +000A5DB1: call __ZN8nlohmann6detail20primitive_iterator_t7set_endEv; nlohmann::detail::primitive_iterator_t::set_end(void) +000A5DB6: jmp short loc_A5DC9 +000A5DB8: mov rax, [rbp+var_18] +000A5DBC: add rax, 18h +000A5DC0: mov rdi, rax; this +000A5DC3: call __ZN8nlohmann6detail20primitive_iterator_t9set_beginEv; nlohmann::detail::primitive_iterator_t::set_begin(void) +000A5DC8: nop +000A5DC9: add rsp, 18h +000A5DCD: pop rbx +000A5DCE: pop rbp +000A5DCF: retn + +### FUNC 000A5DD0 - 000A5E6E (158 bytes) name=_ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7set_endEv +000A5DD0: push rbp +000A5DD1: mov rbp, rsp +000A5DD4: push rbx +000A5DD5: sub rsp, 18h +000A5DD9: mov [rbp+var_18], rdi +000A5DDD: mov rax, [rbp+var_18] +000A5DE1: mov rax, [rax] +000A5DE4: test rax, rax +000A5DE7: jnz short loc_A5E08 +000A5DE9: lea rcx, _ZZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7set_endEvE19__PRETTY_FUNCTION__; "void nlohmann::detail::iter_impl>>,std::less,std::allocator>>>>>::end(void) +000A5E33: mov [rbx+8], rax +000A5E37: jmp short loc_A5E67 +000A5E39: mov rax, [rbp+var_18] +000A5E3D: mov rax, [rax] +000A5E40: mov rax, [rax+8] +000A5E44: mov rbx, [rbp+var_18] +000A5E48: mov rdi, rax +000A5E4B: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000A5E50: mov [rbx+10h], rax +000A5E54: jmp short loc_A5E67 +000A5E56: mov rax, [rbp+var_18] +000A5E5A: add rax, 18h +000A5E5E: mov rdi, rax; this +000A5E61: call __ZN8nlohmann6detail20primitive_iterator_t7set_endEv; nlohmann::detail::primitive_iterator_t::set_end(void) +000A5E66: nop +000A5E67: add rsp, 18h +000A5E6B: pop rbx +000A5E6C: pop rbp +000A5E6D: retn + +### FUNC 000A5E6E - 000A5FE7 (377 bytes) name=_ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEeqERKS9_ +000A5E6E: push rbp +000A5E6F: mov rbp, rsp +000A5E72: push r12 +000A5E74: push rbx +000A5E75: sub rsp, 20h +000A5E79: mov [rbp+var_28], rdi +000A5E7D: mov [rbp+var_30], rsi +000A5E81: mov rax, [rbp+var_28] +000A5E85: mov rdx, [rax] +000A5E88: mov rax, [rbp+var_30] +000A5E8C: mov rax, [rax] +000A5E8F: cmp rdx, rax +000A5E92: setnz al +000A5E95: movzx eax, al +000A5E98: test rax, rax +000A5E9B: jz short loc_A5F15 +000A5E9D: mov edi, 20h ; ' '; thrown_size +000A5EA2: call ___cxa_allocate_exception +000A5EA7: mov rbx, rax +000A5EAA: lea rax, [rbp+var_11] +000A5EAE: mov rdi, rax +000A5EB1: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A5EB6: lea rdx, [rbp+var_11] +000A5EBA: lea rax, [rbp+var_20] +000A5EBE: lea rsi, aCannotCompareI; "cannot compare iterators of different c"... +000A5EC5: mov rdi, rax +000A5EC8: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A5ECD: lea rax, [rbp+var_20] +000A5ED1: mov rdx, rax; std::string * +000A5ED4: mov esi, 0D4h; int +000A5ED9: mov rdi, rbx; this +000A5EDC: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000A5EE1: lea rax, [rbp+var_20] +000A5EE5: mov rdi, rax; this +000A5EE8: call __ZNSsD1Ev; std::string::~string() +000A5EED: lea rax, [rbp+var_11] +000A5EF1: mov rdi, rax +000A5EF4: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A5EF9: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000A5F00: mov rdx, rax; void (__fastcall *)(void *) +000A5F03: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000A5F0A: mov rsi, rax; lptinfo +000A5F0D: mov rdi, rbx; void * +000A5F10: call ___cxa_throw +000A5F15: mov rax, [rbp+var_28] +000A5F19: mov rax, [rax] +000A5F1C: test rax, rax +000A5F1F: jnz short loc_A5F40 +000A5F21: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEeqERKS9_E19__PRETTY_FUNCTION__; "bool nlohmann::detail::iter_impl>>>>::operator==(std::_Rb_tree_iterator>>>> const&) +000A5F6F: jmp short loc_A5FDE +000A5F71: mov rax, [rbp+var_30] +000A5F75: lea rdx, [rax+10h] +000A5F79: mov rax, [rbp+var_28] +000A5F7D: add rax, 10h +000A5F81: mov rsi, rdx +000A5F84: mov rdi, rax +000A5F87: call __ZN9__gnu_cxxeqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_; __gnu_cxx::operator==>> *,std::vector>>,std::allocator>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&) +000A5F8C: jmp short loc_A5FDE +000A5F8E: mov rax, [rbp+var_30] +000A5F92: mov rdx, [rax+18h] +000A5F96: mov rax, [rbp+var_28] +000A5F9A: mov rax, [rax+18h] +000A5F9E: mov rsi, rdx +000A5FA1: mov rdi, rax +000A5FA4: call __ZN8nlohmann6detaileqENS0_20primitive_iterator_tES1_; nlohmann::detail::operator==(nlohmann::detail::primitive_iterator_t,nlohmann::detail::primitive_iterator_t) +000A5FA9: jmp short loc_A5FDE +000A5FAB: mov r12, rax +000A5FAE: lea rax, [rbp+var_20] +000A5FB2: mov rdi, rax; this +000A5FB5: call __ZNSsD1Ev; std::string::~string() +000A5FBA: jmp short loc_A5FBF +000A5FBC: mov r12, rax +000A5FBF: lea rax, [rbp+var_11] +000A5FC3: mov rdi, rax +000A5FC6: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A5FCB: mov rdi, rbx; void * +000A5FCE: call ___cxa_free_exception +000A5FD3: mov rax, r12 +000A5FD6: mov rdi, rax; struct _Unwind_Exception * +000A5FD9: call __Unwind_Resume +000A5FDE: add rsp, 20h +000A5FE2: pop rbx +000A5FE3: pop r12 +000A5FE5: pop rbp +000A5FE6: retn + +### FUNC 000A5FE8 - 000A6299 (689 bytes) name=_ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEv +000A5FE8: push rbp +000A5FE9: mov rbp, rsp +000A5FEC: push r12 +000A5FEE: push rbx +000A5FEF: sub rsp, 50h +000A5FF3: mov [rbp+var_58], rdi +000A5FF7: mov rax, [rbp+var_58] +000A5FFB: mov rax, [rax] +000A5FFE: test rax, rax +000A6001: jnz short loc_A6022 +000A6003: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_impl>>,std::less,std::allocator>>>>>::end(void) +000A6054: mov [rbp+var_50], rax +000A6058: mov rax, [rbp+var_58] +000A605C: lea rdx, [rax+8] +000A6060: lea rax, [rbp+var_50] +000A6064: mov rsi, rax +000A6067: mov rdi, rdx +000A606A: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_; std::_Rb_tree_iterator>>>>::operator!=(std::_Rb_tree_iterator>>>> const&) +000A606F: test al, al +000A6071: jnz short loc_A6092 +000A6073: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_implm_val"... +000A608D: call ___assert_fail +000A6092: mov rax, [rbp+var_58] +000A6096: add rax, 8 +000A609A: mov rdi, rax +000A609D: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv; std::_Rb_tree_iterator>>>>::operator->(void) +000A60A2: add rax, 8 +000A60A6: jmp loc_A6290 +000A60AB: mov rax, [rbp+var_58] +000A60AF: mov rax, [rax] +000A60B2: mov rax, [rax+8] +000A60B6: mov rdi, rax +000A60B9: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000A60BE: mov [rbp+var_40], rax +000A60C2: mov rax, [rbp+var_58] +000A60C6: lea rdx, [rax+10h] +000A60CA: lea rax, [rbp+var_40] +000A60CE: mov rsi, rax +000A60D1: mov rdi, rdx +000A60D4: call __ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_; __gnu_cxx::operator!=>> *,std::vector>>,std::allocator>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&) +000A60D9: test al, al +000A60DB: jnz short loc_A60FC +000A60DD: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEdeEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_implm_valu"... +000A60F7: call ___assert_fail +000A60FC: mov rax, [rbp+var_58] +000A6100: add rax, 10h +000A6104: mov rdi, rax +000A6107: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator*(void) +000A610C: jmp loc_A6290 +000A6111: mov edi, 20h ; ' '; thrown_size +000A6116: call ___cxa_allocate_exception +000A611B: mov rbx, rax +000A611E: lea rax, [rbp+var_21] +000A6122: mov rdi, rax +000A6125: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A612A: lea rdx, [rbp+var_21] +000A612E: lea rax, [rbp+var_30] +000A6132: lea rsi, aCannotGetValue; "cannot get value" +000A6139: mov rdi, rax +000A613C: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A6141: lea rax, [rbp+var_30] +000A6145: mov rdx, rax; std::string * +000A6148: mov esi, 0D6h; int +000A614D: mov rdi, rbx; this +000A6150: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000A6155: lea rax, [rbp+var_30] +000A6159: mov rdi, rax; this +000A615C: call __ZNSsD1Ev; std::string::~string() +000A6161: lea rax, [rbp+var_21] +000A6165: mov rdi, rax +000A6168: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A616D: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000A6174: mov rdx, rax; void (__fastcall *)(void *) +000A6177: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000A617E: mov rsi, rax; lptinfo +000A6181: mov rdi, rbx; void * +000A6184: call ___cxa_throw +000A6189: mov rax, [rbp+var_58] +000A618D: add rax, 18h +000A6191: mov rdi, rax; this +000A6194: call __ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv; nlohmann::detail::primitive_iterator_t::is_begin(void) +000A6199: movzx eax, al +000A619C: test rax, rax +000A619F: setnz al +000A61A2: test al, al +000A61A4: jz short loc_A61B2 +000A61A6: mov rax, [rbp+var_58] +000A61AA: mov rax, [rax] +000A61AD: jmp loc_A6290 +000A61B2: mov edi, 20h ; ' '; thrown_size +000A61B7: call ___cxa_allocate_exception +000A61BC: mov rbx, rax +000A61BF: lea rax, [rbp+var_11] +000A61C3: mov rdi, rax +000A61C6: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000A61CB: lea rdx, [rbp+var_11] +000A61CF: lea rax, [rbp+var_20] +000A61D3: lea rsi, aCannotGetValue; "cannot get value" +000A61DA: mov rdi, rax +000A61DD: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000A61E2: lea rax, [rbp+var_20] +000A61E6: mov rdx, rax; std::string * +000A61E9: mov esi, 0D6h; int +000A61EE: mov rdi, rbx; this +000A61F1: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000A61F6: lea rax, [rbp+var_20] +000A61FA: mov rdi, rax; this +000A61FD: call __ZNSsD1Ev; std::string::~string() +000A6202: lea rax, [rbp+var_11] +000A6206: mov rdi, rax +000A6209: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A620E: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000A6215: mov rdx, rax; void (__fastcall *)(void *) +000A6218: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000A621F: mov rsi, rax; lptinfo +000A6222: mov rdi, rbx; void * +000A6225: call ___cxa_throw +000A622A: mov r12, rax +000A622D: lea rax, [rbp+var_30] +000A6231: mov rdi, rax; this +000A6234: call __ZNSsD1Ev; std::string::~string() +000A6239: jmp short loc_A623E +000A623B: mov r12, rax +000A623E: lea rax, [rbp+var_21] +000A6242: mov rdi, rax +000A6245: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A624A: mov rdi, rbx; void * +000A624D: call ___cxa_free_exception +000A6252: mov rax, r12 +000A6255: mov rdi, rax; struct _Unwind_Exception * +000A6258: call __Unwind_Resume +000A625D: mov r12, rax +000A6260: lea rax, [rbp+var_20] +000A6264: mov rdi, rax; this +000A6267: call __ZNSsD1Ev; std::string::~string() +000A626C: jmp short loc_A6271 +000A626E: mov r12, rax +000A6271: lea rax, [rbp+var_11] +000A6275: mov rdi, rax +000A6278: call __ZNSaIcED1Ev; std::allocator::~allocator() +000A627D: mov rdi, rbx; void * +000A6280: call ___cxa_free_exception +000A6285: mov rax, r12 +000A6288: mov rdi, rax; struct _Unwind_Exception * +000A628B: call __Unwind_Resume +000A6290: add rsp, 50h +000A6294: pop rbx +000A6295: pop r12 +000A6297: pop rbp +000A6298: retn + +### FUNC 000A629A - 000A62C3 (41 bytes) name=_ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEESsEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +000A629A: push rbp +000A629B: mov rbp, rsp +000A629E: sub rsp, 20h +000A62A2: mov [rbp+var_8], rdi +000A62A6: mov [rbp+var_10], rsi +000A62AA: mov [rbp+var_18], rdx +000A62AE: mov rdx, [rbp+var_18] +000A62B2: mov rax, [rbp+var_10] +000A62B6: mov rsi, rdx +000A62B9: mov rdi, rax +000A62BC: call __ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEEvRKT_RNS9_8string_tE; nlohmann::detail::from_json>>>(nlohmann::basic_json>> const&,nlohmann::basic_json>>::string_t &) +000A62C1: leave +000A62C2: retn + +### FUNC 000A62C4 - 000A62ED (41 bytes) name=_ZNK8nlohmann6detail12from_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEEiEEDTcmcl9from_jsonfp_fp0_Ecvv_EERKT_RT0_ +000A62C4: push rbp +000A62C5: mov rbp, rsp +000A62C8: sub rsp, 20h +000A62CC: mov [rbp+var_8], rdi +000A62D0: mov [rbp+var_10], rsi +000A62D4: mov [rbp+var_18], rdx +000A62D8: mov rdx, [rbp+var_18] +000A62DC: mov rax, [rbp+var_10] +000A62E0: mov rsi, rdx +000A62E3: mov rdi, rax +000A62E6: call __ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEiLi0EEEvRKT_RT0_; nlohmann::detail::from_json>>,int,0>(nlohmann::basic_json>> const&,int &) +000A62EB: leave +000A62EC: retn + +### FUNC 000A62EE - 000A631B (45 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS2_ +000A62EE: push rbp +000A62EF: mov rbp, rsp +000A62F2: sub rsp, 10h +000A62F6: mov [rbp+var_8], rdi +000A62FA: mov [rbp+var_10], rsi +000A62FE: mov rax, [rbp+var_8] +000A6302: mov rdi, rax +000A6305: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h1Ev; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_h1(void) +000A630A: mov rdx, [rbp+var_10] +000A630E: mov rsi, rdx +000A6311: mov rdi, rax +000A6314: call __ZNKSt4hashISsEclERKSs; std::hash::operator()(std::string const&) +000A6319: leave +000A631A: retn + +### FUNC 000A631C - 000A634E (50 bytes) name=_ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m +000A631C: push rbp +000A631D: mov rbp, rsp +000A6320: sub rsp, 20h +000A6324: mov [rbp+var_8], rdi +000A6328: mov [rbp+var_10], rsi +000A632C: mov [rbp+var_18], rdx +000A6330: mov rax, [rbp+var_8] +000A6334: mov rcx, [rax+8] +000A6338: mov rdx, [rbp+var_18] +000A633C: mov rsi, [rbp+var_10] +000A6340: mov rax, [rbp+var_8] +000A6344: mov rdi, rax +000A6347: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexERS2_mm; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_bucket_index(std::string const&,ulong,ulong) +000A634C: leave +000A634D: retn + +### FUNC 000A634E - 000A6399 (75 bytes) name=_ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE12_M_find_nodeEmRS1_m +000A634E: push rbp +000A634F: mov rbp, rsp +000A6352: sub rsp, 30h +000A6356: mov [rbp+var_18], rdi +000A635A: mov [rbp+var_20], rsi +000A635E: mov [rbp+var_28], rdx +000A6362: mov [rbp+var_30], rcx +000A6366: mov rcx, [rbp+var_30] +000A636A: mov rdx, [rbp+var_28] +000A636E: mov rsi, [rbp+var_20] +000A6372: mov rax, [rbp+var_18] +000A6376: mov rdi, rax +000A6379: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_find_before_node(ulong,std::string const&,ulong) +000A637E: mov [rbp+var_8], rax +000A6382: cmp [rbp+var_8], 0 +000A6387: jz short loc_A6392 +000A6389: mov rax, [rbp+var_8] +000A638D: mov rax, [rax] +000A6390: jmp short locret_A6397 +000A6392: mov eax, 0 +000A6397: leave +000A6398: retn + +### FUNC 000A6399 - 000A63A7 (14 bytes) name=_ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE +000A6399: push rbp; Alternative name is 'std::tuple && std::forward>(std::remove_reference>::type &)' +000A639A: mov rbp, rsp +000A639D: mov [rbp+var_8], rdi +000A63A1: mov rax, [rbp+var_8] +000A63A5: pop rbp +000A63A6: retn + +### FUNC 000A63A8 - 000A6486 (222 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESK_IJEEEEEPNS4_10_Hash_nodeIS2_Lb1EEEDpOT_ +000A63A8: push rbp; Alternative name is 'std::__detail::_Hash_node, true> * std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_M_allocate_node, std::tuple<>>()' +000A63A9: mov rbp, rsp +000A63AC: push r13 +000A63AE: push r12 +000A63B0: push rbx +000A63B1: sub rsp, 38h +000A63B5: mov [rbp+var_38], rdi +000A63B9: mov [rbp+var_40], rsi +000A63BD: mov [rbp+var_48], rdx +000A63C1: mov [rbp+var_50], rcx +000A63C5: mov rax, [rbp+var_38] +000A63C9: mov rdi, rax +000A63CC: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +000A63D1: mov edx, 0 +000A63D6: mov esi, 1 +000A63DB: mov rdi, rax +000A63DE: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8allocateEmPKv; __gnu_cxx::new_allocator,true>>::allocate(ulong,void const*) +000A63E3: mov [rbp+var_28], rax +000A63E7: mov rax, [rbp+var_50] +000A63EB: mov rdi, rax +000A63EE: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000A63F3: mov r13, rax +000A63F6: mov rax, [rbp+var_48] +000A63FA: mov rdi, rax +000A63FD: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000A6402: mov r12, rax +000A6405: mov rax, [rbp+var_40] +000A6409: mov rdi, rax +000A640C: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A6411: mov rbx, rax +000A6414: mov rax, [rbp+var_38] +000A6418: mov rdi, rax +000A641B: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +000A6420: mov rsi, [rbp+var_28] +000A6424: mov r8, r13 +000A6427: mov rcx, r12 +000A642A: mov rdx, rbx +000A642D: mov rdi, rax +000A6430: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJRS4_EESC_IJEEEEEvPT_DpOT0_; __gnu_cxx::new_allocator,true>>::construct,true>,std::piecewise_construct_t const&,std::tuple,std::tuple<>>(std::__detail::_Hash_node,true> *) +000A6435: mov rax, [rbp+var_28] +000A6439: jmp short loc_A647B +000A643B: mov rdi, rax; void * +000A643E: call ___cxa_begin_catch +000A6443: mov rax, [rbp+var_38] +000A6447: mov rdi, rax +000A644A: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +000A644F: mov rcx, [rbp+var_28] +000A6453: mov edx, 1 +000A6458: mov rsi, rcx +000A645B: mov rdi, rax +000A645E: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE10deallocateEPS6_m; __gnu_cxx::new_allocator,true>>::deallocate(std::__detail::_Hash_node,true>*,ulong) +000A6463: call ___cxa_rethrow +000A6468: mov rbx, rax +000A646B: call ___cxa_end_catch +000A6470: mov rax, rbx +000A6473: mov rdi, rax; struct _Unwind_Exception * +000A6476: call __Unwind_Resume +000A647B: add rsp, 38h +000A647F: pop rbx +000A6480: pop r12 +000A6482: pop r13 +000A6484: pop rbp +000A6485: retn + +### FUNC 000A6486 - 000A6494 (14 bytes) name=_ZSt7forwardIRSt4pairIKSsiEEOT_RNSt16remove_referenceIS4_E4typeE +000A6486: push rbp +000A6487: mov rbp, rsp +000A648A: mov [rbp+var_8], rdi +000A648E: mov rax, [rbp+var_8] +000A6492: pop rbp +000A6493: retn + +### FUNC 000A6494 - 000A64A2 (14 bytes) name=_ZNSt10__pair_getILm0EE5__getIKSsiEERT_RSt4pairIS3_T0_E +000A6494: push rbp +000A6495: mov rbp, rsp +000A6498: mov [rbp+var_8], rdi +000A649C: mov rax, [rbp+var_8] +000A64A0: pop rbp +000A64A1: retn + +### FUNC 000A64A2 - 000A64BC (26 bytes) name=_ZSt3getILm0EKSsiERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS5_ +000A64A2: push rbp +000A64A3: mov rbp, rsp +000A64A6: sub rsp, 10h +000A64AA: mov [rbp+var_8], rdi +000A64AE: mov rax, [rbp+var_8] +000A64B2: mov rdi, rax +000A64B5: call __ZNSt10__pair_getILm0EE5__getIKSsiEERT_RSt4pairIS3_T0_E; std::__pair_get<0ul>::__get(std::pair &) +000A64BA: leave +000A64BB: retn + +### FUNC 000A64BC - 000A660F (339 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb1EEE +000A64BC: push rbp +000A64BD: mov rbp, rsp +000A64C0: push rbx +000A64C1: sub rsp, 58h +000A64C5: mov [rbp+var_48], rdi +000A64C9: mov [rbp+var_50], rsi +000A64CD: mov [rbp+var_58], rdx +000A64D1: mov [rbp+var_60], rcx +000A64D5: mov rax, [rbp+var_48] +000A64D9: add rax, 20h ; ' ' +000A64DD: mov rdi, rax; this +000A64E0: call __ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv; std::__detail::_Prime_rehash_policy::_M_state(void) +000A64E5: mov [rbp+var_28], rax +000A64E9: lea rax, [rbp+var_28] +000A64ED: mov [rbp+var_18], rax +000A64F1: mov rax, [rbp+var_48] +000A64F5: mov rdx, [rax+18h]; unsigned __int64 +000A64F9: mov rax, [rbp+var_48] +000A64FD: mov rax, [rax+8] +000A6501: mov rcx, [rbp+var_48] +000A6505: lea rdi, [rcx+20h]; this +000A6509: mov ecx, 1; unsigned __int64 +000A650E: mov rsi, rax; unsigned __int64 +000A6511: call __ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm; std::__detail::_Prime_rehash_policy::_M_need_rehash(ulong,ulong,ulong) +000A6516: mov ecx, eax +000A6518: mov rax, rdx +000A651B: mov [rbp+var_40], ecx +000A651E: mov [rbp+var_38], rax +000A6522: movzx eax, byte ptr [rbp+var_40] +000A6526: test al, al +000A6528: jz short loc_A657A +000A652A: mov rcx, [rbp+var_38] +000A652E: mov rdx, [rbp+var_18] +000A6532: mov rax, [rbp+var_48] +000A6536: mov rsi, rcx +000A6539: mov rdi, rax +000A653C: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_rehash(ulong,ulong const&) +000A6541: mov rax, [rbp+var_60] +000A6545: lea rbx, [rax+8] +000A6549: mov rax, [rbp+var_48] +000A654D: mov rdi, rax +000A6550: call __ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_extract(void) +000A6555: mov rsi, rbx +000A6558: mov rdi, rax +000A655B: call __ZNKSt8__detail10_Select1stclIRSt4pairIKSsiEEEDTcl3getILi0EEcl7forwardIT_Efp_EEEOS6_ +000A6560: mov rcx, rax +000A6563: mov rdx, [rbp+var_58] +000A6567: mov rax, [rbp+var_48] +000A656B: mov rsi, rcx +000A656E: mov rdi, rax +000A6571: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexERS1_m; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_bucket_index(std::string const&,ulong) +000A6576: mov [rbp+var_50], rax +000A657A: mov rdx, [rbp+var_58] +000A657E: mov rcx, [rbp+var_60] +000A6582: mov rax, [rbp+var_48] +000A6586: mov rsi, rcx +000A6589: mov rdi, rax +000A658C: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb1EEEm; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_store_code(std::__detail::_Hash_node,true> *,ulong) +000A6591: mov rdx, [rbp+var_60] +000A6595: mov rcx, [rbp+var_50] +000A6599: mov rax, [rbp+var_48] +000A659D: mov rsi, rcx +000A65A0: mov rdi, rax +000A65A3: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_insert_bucket_begin(ulong,std::__detail::_Hash_node,true> *) +000A65A8: mov rax, [rbp+var_48] +000A65AC: mov rax, [rax+18h] +000A65B0: lea rdx, [rax+1] +000A65B4: mov rax, [rbp+var_48] +000A65B8: mov [rax+18h], rdx +000A65BC: mov rdx, [rbp+var_60] +000A65C0: lea rax, [rbp+var_20] +000A65C4: mov rsi, rdx +000A65C7: mov rdi, rax +000A65CA: call __ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE; std::__detail::_Node_iterator,false,true>::_Node_iterator(std::__detail::_Hash_node,true> *) +000A65CF: mov rax, [rbp+var_20] +000A65D3: jmp short loc_A6608 +000A65D5: mov rdi, rax; void * +000A65D8: call ___cxa_begin_catch +000A65DD: mov rdx, [rbp+var_60] +000A65E1: mov rax, [rbp+var_48] +000A65E5: mov rsi, rdx +000A65E8: mov rdi, rax +000A65EB: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE18_M_deallocate_nodeEPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_deallocate_node(std::__detail::_Hash_node,true> *) +000A65F0: call ___cxa_rethrow +000A65F5: mov rbx, rax +000A65F8: call ___cxa_end_catch +000A65FD: mov rax, rbx +000A6600: mov rdi, rax; struct _Unwind_Exception * +000A6603: call __Unwind_Resume +000A6608: add rsp, 58h +000A660C: pop rbx +000A660D: pop rbp +000A660E: retn + +### FUNC 000A6610 - 000A664D (61 bytes) name=_ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev +000A6610: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(void)' +000A6611: mov rbp, rsp +000A6614: sub rsp, 10h +000A6618: mov [rbp+var_8], rdi +000A661C: mov rax, [rbp+var_8] +000A6620: mov rdi, rax +000A6623: call __ZNSaIiEC2Ev; std::allocator::allocator(void) +000A6628: mov rax, [rbp+var_8] +000A662C: mov qword ptr [rax], 0 +000A6633: mov rax, [rbp+var_8] +000A6637: mov qword ptr [rax+8], 0 +000A663F: mov rax, [rbp+var_8] +000A6643: mov qword ptr [rax+10h], 0 +000A664B: leave +000A664C: retn + +### FUNC 000A664D - 000A6685 (56 bytes) name=_ZNSt16allocator_traitsISaIiEE12_S_constructIiJRKiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +000A664D: push rbp; Alternative name is 'std::enable_if>::__construct_helper>::value, void>::type std::allocator_traits>::_S_construct(std::allocator&, int*, int const&&&)' +000A664E: mov rbp, rsp +000A6651: sub rsp, 20h +000A6655: mov [rbp+var_8], rdi +000A6659: mov [rbp+var_10], rsi +000A665D: mov [rbp+var_18], rdx +000A6661: mov rax, [rbp+var_18] +000A6665: mov rdi, rax +000A6668: call __ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A666D: mov rdx, rax +000A6670: mov rcx, [rbp+var_10] +000A6674: mov rax, [rbp+var_8] +000A6678: mov rsi, rcx +000A667B: mov rdi, rax +000A667E: call __ZN9__gnu_cxx13new_allocatorIiE9constructIiJRKiEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(int *,int const&) +000A6683: leave +000A6684: retn + +### FUNC 000A6686 - 000A674F (201 bytes) name=_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc +000A6686: push rbp +000A6687: mov rbp, rsp +000A668A: push rbx +000A668B: sub rsp, 38h +000A668F: mov [rbp+var_28], rdi +000A6693: mov [rbp+var_30], rsi +000A6697: mov [rbp+var_38], rdx +000A669B: mov rax, [rbp+var_28] +000A669F: mov rdi, rax +000A66A2: call __ZNKSt6vectorIiSaIiEE8max_sizeEv; std::vector>::max_size(void) +000A66A7: mov rbx, rax +000A66AA: mov rax, [rbp+var_28] +000A66AE: mov rdi, rax +000A66B1: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A66B6: sub rbx, rax +000A66B9: mov rdx, rbx +000A66BC: mov rax, [rbp+var_30] +000A66C0: cmp rdx, rax +000A66C3: setb al +000A66C6: test al, al +000A66C8: jz short loc_A66D6 +000A66CA: mov rax, [rbp+var_38] +000A66CE: mov rdi, rax; char * +000A66D1: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000A66D6: mov rax, [rbp+var_28] +000A66DA: mov rdi, rax +000A66DD: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A66E2: mov rbx, rax +000A66E5: mov rax, [rbp+var_28] +000A66E9: mov rdi, rax +000A66EC: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A66F1: mov [rbp+var_20], rax +000A66F5: lea rdx, [rbp+var_30] +000A66F9: lea rax, [rbp+var_20] +000A66FD: mov rsi, rdx +000A6700: mov rdi, rax +000A6703: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000A6708: mov rax, [rax] +000A670B: add rax, rbx +000A670E: mov [rbp+var_18], rax +000A6712: mov rax, [rbp+var_28] +000A6716: mov rdi, rax +000A6719: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A671E: cmp rax, [rbp+var_18] +000A6722: ja short loc_A6736 +000A6724: mov rax, [rbp+var_28] +000A6728: mov rdi, rax +000A672B: call __ZNKSt6vectorIiSaIiEE8max_sizeEv; std::vector>::max_size(void) +000A6730: cmp rax, [rbp+var_18] +000A6734: jnb short loc_A6744 +000A6736: mov rax, [rbp+var_28] +000A673A: mov rdi, rax +000A673D: call __ZNKSt6vectorIiSaIiEE8max_sizeEv; std::vector>::max_size(void) +000A6742: jmp short loc_A6748 +000A6744: mov rax, [rbp+var_18] +000A6748: add rsp, 38h +000A674C: pop rbx +000A674D: pop rbp +000A674E: retn + +### FUNC 000A6750 - 000A6788 (56 bytes) name=_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm +000A6750: push rbp +000A6751: mov rbp, rsp +000A6754: sub rsp, 10h +000A6758: mov [rbp+var_8], rdi +000A675C: mov [rbp+var_10], rsi +000A6760: cmp [rbp+var_10], 0 +000A6765: jz short loc_A6781 +000A6767: mov rax, [rbp+var_8] +000A676B: mov rcx, [rbp+var_10] +000A676F: mov edx, 0 +000A6774: mov rsi, rcx +000A6777: mov rdi, rax +000A677A: call __ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000A677F: jmp short locret_A6786 +000A6781: mov eax, 0 +000A6786: leave +000A6787: retn + +### FUNC 000A6788 - 000A67AE (38 bytes) name=_ZNKSt6vectorIiSaIiEE4sizeEv +000A6788: push rbp +000A6789: mov rbp, rsp +000A678C: mov [rbp+var_8], rdi +000A6790: mov rax, [rbp+var_8] +000A6794: mov rax, [rax+8] +000A6798: mov rdx, rax +000A679B: mov rax, [rbp+var_8] +000A679F: mov rax, [rax] +000A67A2: sub rdx, rax +000A67A5: mov rax, rdx +000A67A8: sar rax, 2 +000A67AC: pop rbp +000A67AD: retn + +### FUNC 000A67AE - 000A67FC (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPiS0_SaIiEET0_T_S3_S2_RT1_ +000A67AE: push rbp +000A67AF: mov rbp, rsp +000A67B2: push rbx +000A67B3: sub rsp, 28h +000A67B7: mov [rbp+var_18], rdi +000A67BB: mov [rbp+var_20], rsi +000A67BF: mov [rbp+var_28], rdx +000A67C3: mov [rbp+var_30], rcx +000A67C7: mov rax, [rbp+var_20] +000A67CB: mov rdi, rax +000A67CE: call __ZSt32__make_move_if_noexcept_iteratorIPiSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(int *) +000A67D3: mov rbx, rax +000A67D6: mov rax, [rbp+var_18] +000A67DA: mov rdi, rax +000A67DD: call __ZSt32__make_move_if_noexcept_iteratorIPiSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(int *) +000A67E2: mov rcx, [rbp+var_30] +000A67E6: mov rdx, [rbp+var_28] +000A67EA: mov rsi, rbx +000A67ED: mov rdi, rax +000A67F0: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPiES1_iET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a,int *,int>(std::move_iterator,std::move_iterator,int *,std::allocator &) +000A67F5: add rsp, 28h +000A67F9: pop rbx +000A67FA: pop rbp +000A67FB: retn + +### FUNC 000A67FC - 000A6821 (37 bytes) name=_ZNSt16allocator_traitsISaIiEE7destroyIiEEvRS0_PT_ +000A67FC: push rbp +000A67FD: mov rbp, rsp +000A6800: sub rsp, 10h +000A6804: mov [rbp+var_8], rdi +000A6808: mov [rbp+var_10], rsi +000A680C: mov rdx, [rbp+var_10] +000A6810: mov rax, [rbp+var_8] +000A6814: mov rsi, rdx +000A6817: mov rdi, rax +000A681A: call __ZNSt16allocator_traitsISaIiEE10_S_destroyIiEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_; std::allocator_traits>::_S_destroy(std::allocator&,int*) +000A681F: leave +000A6820: retn + +### FUNC 000A6822 - 000A6847 (37 bytes) name=_ZNSt8__detail14_Node_iteratorISt4pairIKSsiELb0ELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +000A6822: push rbp; Alternative name is 'std::__detail::_Node_iterator, false, true>::_Node_iterator(std::__detail::_Hash_node, true> *)' +000A6823: mov rbp, rsp +000A6826: sub rsp, 10h +000A682A: mov [rbp+var_8], rdi +000A682E: mov [rbp+var_10], rsi +000A6832: mov rax, [rbp+var_8] +000A6836: mov rdx, [rbp+var_10] +000A683A: mov rsi, rdx +000A683D: mov rdi, rax +000A6840: call __ZNSt8__detail19_Node_iterator_baseISt4pairIKSsiELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE; std::__detail::_Node_iterator_base,true>::_Node_iterator_base(std::__detail::_Hash_node,true> *) +000A6845: leave +000A6846: retn + +### FUNC 000A6847 - 000A687F (56 bytes) name=_ZNSt16allocator_traitsISaIiEE9constructIiJiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000A6847: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIiEE9constructIiIiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_' +000A6848: mov rbp, rsp +000A684B: sub rsp, 20h +000A684F: mov [rbp+var_8], rdi +000A6853: mov [rbp+var_10], rsi +000A6857: mov [rbp+var_18], rdx +000A685B: mov rax, [rbp+var_18] +000A685F: mov rdi, rax +000A6862: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A6867: mov rdx, rax +000A686A: mov rcx, [rbp+var_10] +000A686E: mov rax, [rbp+var_8] +000A6872: mov rsi, rcx +000A6875: mov rdi, rax +000A6878: call __ZNSt16allocator_traitsISaIiEE12_S_constructIiJiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_; std::allocator_traits>::_S_construct(std::allocator&,int*,int&&) +000A687D: leave +000A687E: retn + +### FUNC 000A6880 - 000A6A6C (492 bytes) name=_ZNSt6vectorIiSaIiEE19_M_emplace_back_auxIJiEEEvDpOT_ +000A6880: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(int &&)' +000A6881: mov rbp, rsp +000A6884: push rbx +000A6885: sub rsp, 38h +000A6889: mov [rbp+var_38], rdi +000A688D: mov [rbp+var_40], rsi +000A6891: mov rax, [rbp+var_38] +000A6895: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000A689C: mov esi, 1 +000A68A1: mov rdi, rax +000A68A4: call __ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000A68A9: mov [rbp+var_20], rax +000A68AD: mov rax, [rbp+var_38] +000A68B1: mov rdx, [rbp+var_20] +000A68B5: mov rsi, rdx +000A68B8: mov rdi, rax +000A68BB: call __ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000A68C0: mov [rbp+var_28], rax +000A68C4: mov rax, [rbp+var_28] +000A68C8: mov [rbp+var_18], rax +000A68CC: mov rax, [rbp+var_40] +000A68D0: mov rdi, rax +000A68D3: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000A68D8: mov rbx, rax +000A68DB: mov rax, [rbp+var_38] +000A68DF: mov rdi, rax +000A68E2: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A68E7: lea rdx, ds:0[rax*4] +000A68EF: mov rax, [rbp+var_28] +000A68F3: lea rcx, [rdx+rax] +000A68F7: mov rax, [rbp+var_38] +000A68FB: mov rdx, rbx +000A68FE: mov rsi, rcx +000A6901: mov rdi, rax +000A6904: call __ZNSt16allocator_traitsISaIiEE9constructIiJiEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000A6909: mov [rbp+var_18], 0 +000A6911: mov rax, [rbp+var_38] +000A6915: mov rdi, rax +000A6918: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A691D: mov rcx, rax +000A6920: mov rax, [rbp+var_38] +000A6924: mov rsi, [rax+8] +000A6928: mov rax, [rbp+var_38] +000A692C: mov rax, [rax] +000A692F: mov rdx, [rbp+var_28] +000A6933: mov rdi, rax +000A6936: call __ZSt34__uninitialized_move_if_noexcept_aIPiS0_SaIiEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(int *,int *,int *,std::allocator &) +000A693B: mov [rbp+var_18], rax +000A693F: add [rbp+var_18], 4 +000A6944: mov rax, [rbp+var_38] +000A6948: mov rdi, rax +000A694B: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A6950: mov rdx, rax +000A6953: mov rax, [rbp+var_38] +000A6957: mov rcx, [rax+8] +000A695B: mov rax, [rbp+var_38] +000A695F: mov rax, [rax] +000A6962: mov rsi, rcx +000A6965: mov rdi, rax +000A6968: call __ZSt8_DestroyIPiiEvT_S1_RSaIT0_E; std::_Destroy(int *,int *,std::allocator &) +000A696D: mov rax, [rbp+var_38] +000A6971: mov rax, [rax+10h] +000A6975: mov rdx, rax +000A6978: mov rax, [rbp+var_38] +000A697C: mov rax, [rax] +000A697F: sub rdx, rax +000A6982: mov rax, rdx +000A6985: sar rax, 2 +000A6989: mov rdx, rax +000A698C: mov rax, [rbp+var_38] +000A6990: mov rcx, [rax] +000A6993: mov rax, [rbp+var_38] +000A6997: mov rsi, rcx +000A699A: mov rdi, rax +000A699D: call __ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim; std::_Vector_base>::_M_deallocate(int *,ulong) +000A69A2: mov rax, [rbp+var_38] +000A69A6: mov rdx, [rbp+var_28] +000A69AA: mov [rax], rdx +000A69AD: mov rax, [rbp+var_38] +000A69B1: mov rdx, [rbp+var_18] +000A69B5: mov [rax+8], rdx +000A69B9: mov rax, [rbp+var_20] +000A69BD: lea rdx, ds:0[rax*4] +000A69C5: mov rax, [rbp+var_28] +000A69C9: add rdx, rax +000A69CC: mov rax, [rbp+var_38] +000A69D0: mov [rax+10h], rdx +000A69D4: jmp loc_A6A65 +000A69D9: mov rdi, rax; void * +000A69DC: call ___cxa_begin_catch +000A69E1: cmp [rbp+var_18], 0 +000A69E6: jnz short loc_A6A14 +000A69E8: mov rax, [rbp+var_38] +000A69EC: mov rdi, rax +000A69EF: call __ZNKSt6vectorIiSaIiEE4sizeEv; std::vector>::size(void) +000A69F4: lea rdx, ds:0[rax*4] +000A69FC: mov rax, [rbp+var_28] +000A6A00: add rdx, rax +000A6A03: mov rax, [rbp+var_38] +000A6A07: mov rsi, rdx +000A6A0A: mov rdi, rax +000A6A0D: call __ZNSt16allocator_traitsISaIiEE7destroyIiEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,int *) +000A6A12: jmp short loc_A6A36 +000A6A14: mov rax, [rbp+var_38] +000A6A18: mov rdi, rax +000A6A1B: call __ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A6A20: mov rdx, rax +000A6A23: mov rcx, [rbp+var_18] +000A6A27: mov rax, [rbp+var_28] +000A6A2B: mov rsi, rcx +000A6A2E: mov rdi, rax +000A6A31: call __ZSt8_DestroyIPiiEvT_S1_RSaIT0_E; std::_Destroy(int *,int *,std::allocator &) +000A6A36: mov rax, [rbp+var_38] +000A6A3A: mov rdx, [rbp+var_20] +000A6A3E: mov rcx, [rbp+var_28] +000A6A42: mov rsi, rcx +000A6A45: mov rdi, rax +000A6A48: call __ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim; std::_Vector_base>::_M_deallocate(int *,ulong) +000A6A4D: call ___cxa_rethrow +000A6A52: mov rbx, rax +000A6A55: call ___cxa_end_catch +000A6A5A: mov rax, rbx +000A6A5D: mov rdi, rax; struct _Unwind_Exception * +000A6A60: call __Unwind_Resume +000A6A65: add rsp, 38h +000A6A69: pop rbx +000A6A6A: pop rbp +000A6A6B: retn + +### FUNC 000A6A6C - 000A6A9D (49 bytes) name=_ZNSs16_S_construct_auxIPcEES0_T_S1_RKSaIcESt12__false_type +000A6A6C: push rbp +000A6A6D: mov rbp, rsp +000A6A70: sub rsp, 30h +000A6A74: mov [rbp+var_18], rdi +000A6A78: mov [rbp+var_20], rsi +000A6A7C: mov [rbp+var_28], rdx +000A6A80: mov rdx, [rbp+var_28] +000A6A84: mov rcx, [rbp+var_20] +000A6A88: mov rax, [rbp+var_18] +000A6A8C: mov [rsp+30h+var_30], r8b +000A6A90: mov rsi, rcx +000A6A93: mov rdi, rax +000A6A96: call __ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag; std::string::_S_construct(char *,char *,std::allocator const&,std::forward_iterator_tag) +000A6A9B: leave +000A6A9C: retn + +### FUNC 000A6A9E - 000A6AB0 (18 bytes) name=_ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE4sizeEv +000A6A9E: push rbp +000A6A9F: mov rbp, rsp +000A6AA2: mov [rbp+var_8], rdi +000A6AA6: mov rax, [rbp+var_8] +000A6AAA: mov rax, [rax+28h] +000A6AAE: pop rbp +000A6AAF: retn + +### FUNC 000A6AB0 - 000A6AEC (60 bytes) name=_ZN9__gnu_cxxeqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ +000A6AB0: push rbp +000A6AB1: mov rbp, rsp +000A6AB4: push rbx +000A6AB5: sub rsp, 18h +000A6AB9: mov [rbp+var_18], rdi +000A6ABD: mov [rbp+var_20], rsi +000A6AC1: mov rax, [rbp+var_18] +000A6AC5: mov rdi, rax +000A6AC8: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::base(void) +000A6ACD: mov rbx, [rax] +000A6AD0: mov rax, [rbp+var_20] +000A6AD4: mov rdi, rax +000A6AD7: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::base(void) +000A6ADC: mov rax, [rax] +000A6ADF: cmp rbx, rax +000A6AE2: setz al +000A6AE5: add rsp, 18h +000A6AE9: pop rbx +000A6AEA: pop rbp +000A6AEB: retn + +### FUNC 000A6AEC - 000A6AF6 (10 bytes) name=_ZSt19__iterator_categoryISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEENSt15iterator_traitsIT_E17iterator_categoryERKSE_ +000A6AEC: push rbp +000A6AED: mov rbp, rsp +000A6AF0: mov [rbp+var_8], rdi +000A6AF4: pop rbp +000A6AF5: retn + +### FUNC 000A6AF6 - 000A6B59 (99 bytes) name=_ZSt9__advanceISt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEElEvRT_T0_St26bidirectional_iterator_tag +000A6AF6: push rbp +000A6AF7: mov rbp, rsp +000A6AFA: sub rsp, 10h +000A6AFE: mov [rbp+var_8], rdi +000A6B02: mov [rbp+var_10], rsi +000A6B06: cmp [rbp+var_10], 0 +000A6B0B: jle short loc_A6B33 +000A6B0D: jmp short loc_A6B1B +000A6B0F: mov rax, [rbp+var_8] +000A6B13: mov rdi, rax +000A6B16: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv; std::_Rb_tree_iterator>>>>::operator++(void) +000A6B1B: mov rax, [rbp+var_10] +000A6B1F: lea rdx, [rax-1] +000A6B23: mov [rbp+var_10], rdx +000A6B27: test rax, rax +000A6B2A: setnz al +000A6B2D: test al, al +000A6B2F: jnz short loc_A6B0F +000A6B31: jmp short locret_A6B57 +000A6B33: jmp short loc_A6B41 +000A6B35: mov rax, [rbp+var_8] +000A6B39: mov rdi, rax +000A6B3C: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv; std::_Rb_tree_iterator>>>>::operator--(void) +000A6B41: mov rax, [rbp+var_10] +000A6B45: lea rdx, [rax+1] +000A6B49: mov [rbp+var_10], rdx +000A6B4D: test rax, rax +000A6B50: setnz al +000A6B53: test al, al +000A6B55: jnz short loc_A6B35 +000A6B57: leave +000A6B58: retn + +### FUNC 000A6B59 - 000A6B63 (10 bytes) name=_ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt15iterator_traitsIT_E17iterator_categoryERKSF_ +000A6B59: push rbp +000A6B5A: mov rbp, rsp +000A6B5D: mov [rbp+var_8], rdi +000A6B61: pop rbp +000A6B62: retn + +### FUNC 000A6B63 - 000A6B88 (37 bytes) name=_ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEElEvRT_T0_St26random_access_iterator_tag +000A6B63: push rbp +000A6B64: mov rbp, rsp +000A6B67: sub rsp, 10h +000A6B6B: mov [rbp+var_8], rdi +000A6B6F: mov [rbp+var_10], rsi +000A6B73: lea rdx, [rbp+var_10] +000A6B77: mov rax, [rbp+var_8] +000A6B7B: mov rsi, rdx +000A6B7E: mov rdi, rax +000A6B81: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEpLERKl; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator+=(long const&) +000A6B86: leave +000A6B87: retn + +### FUNC 000A6B88 - 000A6BB1 (41 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE3endEv +000A6B88: push rbp +000A6B89: mov rbp, rsp +000A6B8C: sub rsp, 20h +000A6B90: mov [rbp+var_18], rdi +000A6B94: mov rax, [rbp+var_18] +000A6B98: lea rdx, [rax+8] +000A6B9C: lea rax, [rbp+var_10] +000A6BA0: mov rsi, rdx +000A6BA3: mov rdi, rax +000A6BA6: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000A6BAB: mov rax, [rbp+var_10] +000A6BAF: leave +000A6BB0: retn + +### FUNC 000A6BB1 - 000A6BBF (14 bytes) name=_ZSt11__addressofISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEPT_RSB_ +000A6BB1: push rbp +000A6BB2: mov rbp, rsp +000A6BB5: mov [rbp+var_8], rdi +000A6BB9: mov rax, [rbp+var_8] +000A6BBD: pop rbp +000A6BBE: retn + +### FUNC 000A6BC0 - 000A6BDC (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_ +000A6BC0: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>> *, std::vector>>, std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> * const&)' +000A6BC1: mov rbp, rsp +000A6BC4: mov [rbp+var_8], rdi +000A6BC8: mov [rbp+var_10], rsi +000A6BCC: mov rax, [rbp+var_10] +000A6BD0: mov rdx, [rax] +000A6BD3: mov rax, [rbp+var_8] +000A6BD7: mov [rax], rdx +000A6BDA: pop rbp +000A6BDB: retn + +### FUNC 000A6BDC - 000A6BEA (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +000A6BDC: push rbp +000A6BDD: mov rbp, rsp +000A6BE0: mov [rbp+var_8], rdi +000A6BE4: mov rax, [rbp+var_8] +000A6BE8: pop rbp +000A6BE9: retn + +### FUNC 000A6BEA - 000A6C1B (49 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKSs +000A6BEA: push rbp +000A6BEB: mov rbp, rsp +000A6BEE: sub rsp, 10h +000A6BF2: mov [rbp+var_8], rdi +000A6BF6: mov [rbp+var_10], rsi +000A6BFA: mov rax, [rbp+var_8] +000A6BFE: mov rdi, rax +000A6C01: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv; nlohmann::basic_json>>::is_string(void) +000A6C06: test al, al +000A6C08: jz short loc_A6C14 +000A6C0A: mov rax, [rbp+var_8] +000A6C0E: mov rax, [rax+8] +000A6C12: jmp short locret_A6C19 +000A6C14: mov eax, 0 +000A6C19: leave +000A6C1A: retn + +### FUNC 000A6C1C - 000A6C36 (26 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implD2Ev +000A6C1C: push rbp; Alternative name is 'std::_Vector_base>>, std::allocator>>>>::_Vector_impl::~_Vector_impl()' +000A6C1D: mov rbp, rsp +000A6C20: sub rsp, 10h +000A6C24: mov [rbp+var_8], rdi +000A6C28: mov rax, [rbp+var_8] +000A6C2C: mov rdi, rax +000A6C2F: call __ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev_0; std::allocator>>>::~allocator() +000A6C34: leave +000A6C35: retn + +### FUNC 000A6C36 - 000A6C50 (26 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2Ev +000A6C36: push rbp; Alternative name is 'std::_Vector_base>>, std::allocator>>>>::_Vector_base(void)' +000A6C37: mov rbp, rsp +000A6C3A: sub rsp, 10h +000A6C3E: mov [rbp+var_8], rdi +000A6C42: mov rax, [rbp+var_8] +000A6C46: mov rdi, rax +000A6C49: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2Ev; std::_Vector_base>>,std::allocator>>>>::_Vector_impl::_Vector_impl(void) +000A6C4E: leave +000A6C4F: retn + +### FUNC 000A6C50 - 000A6C9F (79 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EED2Ev +000A6C50: push rbp; Alternative name is 'std::_Vector_base>>, std::allocator>>>>::~_Vector_base()' +000A6C51: mov rbp, rsp +000A6C54: sub rsp, 10h +000A6C58: mov [rbp+var_8], rdi +000A6C5C: mov rax, [rbp+var_8] +000A6C60: mov rax, [rax+10h] +000A6C64: mov rdx, rax +000A6C67: mov rax, [rbp+var_8] +000A6C6B: mov rax, [rax] +000A6C6E: sub rdx, rax +000A6C71: mov rax, rdx +000A6C74: sar rax, 4 +000A6C78: mov rdx, rax +000A6C7B: mov rax, [rbp+var_8] +000A6C7F: mov rcx, [rax] +000A6C82: mov rax, [rbp+var_8] +000A6C86: mov rsi, rcx +000A6C89: mov rdi, rax +000A6C8C: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000A6C91: mov rax, [rbp+var_8] +000A6C95: mov rdi, rax +000A6C98: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implD2Ev; std::_Vector_base>>,std::allocator>>>>::_Vector_impl::~_Vector_impl() +000A6C9D: leave +000A6C9E: retn + +### FUNC 000A6CA0 - 000A6CAE (14 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +000A6CA0: push rbp +000A6CA1: mov rbp, rsp +000A6CA4: mov [rbp+var_8], rdi +000A6CA8: mov rax, [rbp+var_8] +000A6CAC: pop rbp +000A6CAD: retn + +### FUNC 000A6CAE - 000A6CD7 (41 bytes) name=_ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E +000A6CAE: push rbp +000A6CAF: mov rbp, rsp +000A6CB2: sub rsp, 20h +000A6CB6: mov [rbp+var_8], rdi +000A6CBA: mov [rbp+var_10], rsi +000A6CBE: mov [rbp+var_18], rdx +000A6CC2: mov rdx, [rbp+var_10] +000A6CC6: mov rax, [rbp+var_8] +000A6CCA: mov rsi, rdx +000A6CCD: mov rdi, rax +000A6CD0: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_; std::_Destroy>> *>(nlohmann::basic_json>> *,nlohmann::basic_json>> *) +000A6CD5: leave +000A6CD6: retn + +### FUNC 000A6CD8 - 000A6CFA (34 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv +000A6CD8: push rbp +000A6CD9: mov rbp, rsp +000A6CDC: sub rsp, 10h +000A6CE0: mov [rbp+var_8], rdi +000A6CE4: mov rax, [rbp+var_8] +000A6CE8: mov rdi, rax +000A6CEB: call __ZNKSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000A6CF0: mov rdi, rax +000A6CF3: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS8_; std::allocator_traits>>>>::max_size(std::allocator>>> const&) +000A6CF8: leave +000A6CF9: retn + +### FUNC 000A6CFA - 000A6D20 (38 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8capacityEv +000A6CFA: push rbp +000A6CFB: mov rbp, rsp +000A6CFE: mov [rbp+var_8], rdi +000A6D02: mov rax, [rbp+var_8] +000A6D06: mov rax, [rax+10h] +000A6D0A: mov rdx, rax +000A6D0D: mov rax, [rbp+var_8] +000A6D11: mov rax, [rax] +000A6D14: sub rdx, rax +000A6D17: mov rax, rdx +000A6D1A: sar rax, 4 +000A6D1E: pop rbp +000A6D1F: retn + +### FUNC 000A6D20 - 000A6D45 (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_ +000A6D20: push rbp +000A6D21: mov rbp, rsp +000A6D24: sub rsp, 20h +000A6D28: mov [rbp+var_18], rdi +000A6D2C: mov rdx, [rbp+var_18] +000A6D30: lea rax, [rbp+var_10] +000A6D34: mov rsi, rdx +000A6D37: mov rdi, rax +000A6D3A: call __ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES8_; std::move_iterator>> *>::move_iterator(nlohmann::basic_json>> *) +000A6D3F: mov rax, [rbp+var_10] +000A6D43: leave +000A6D44: retn + +### FUNC 000A6D46 - 000A6DDD (151 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE20_M_allocate_and_copyISt13move_iteratorIPS6_EEESB_mT_SD_ +000A6D46: push rbp +000A6D47: mov rbp, rsp +000A6D4A: push rbx +000A6D4B: sub rsp, 48h +000A6D4F: mov [rbp+var_28], rdi +000A6D53: mov [rbp+var_30], rsi +000A6D57: mov [rbp+var_40], rdx +000A6D5B: mov [rbp+var_50], rcx +000A6D5F: mov rax, [rbp+var_28] +000A6D63: mov rdx, [rbp+var_30] +000A6D67: mov rsi, rdx +000A6D6A: mov rdi, rax +000A6D6D: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000A6D72: mov [rbp+var_18], rax +000A6D76: mov rax, [rbp+var_28] +000A6D7A: mov rdi, rax +000A6D7D: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000A6D82: mov rcx, rax +000A6D85: mov rdx, [rbp+var_18] +000A6D89: mov rsi, [rbp+var_50] +000A6D8D: mov rax, [rbp+var_40] +000A6D91: mov rdi, rax +000A6D94: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_S8_ET0_T_SC_SB_RSaIT1_E; std::__uninitialized_copy_a>> *>,nlohmann::basic_json>> *,nlohmann::basic_json>>>(std::move_iterator>> *>,std::move_iterator>> *>,nlohmann::basic_json>> *,std::allocator>>> &) +000A6D99: mov rax, [rbp+var_18] +000A6D9D: jmp short loc_A6DD6 +000A6D9F: mov rdi, rax; void * +000A6DA2: call ___cxa_begin_catch +000A6DA7: mov rax, [rbp+var_28] +000A6DAB: mov rdx, [rbp+var_30] +000A6DAF: mov rcx, [rbp+var_18] +000A6DB3: mov rsi, rcx +000A6DB6: mov rdi, rax +000A6DB9: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000A6DBE: call ___cxa_rethrow +000A6DC3: mov rbx, rax +000A6DC6: call ___cxa_end_catch +000A6DCB: mov rax, rbx +000A6DCE: mov rdi, rax; struct _Unwind_Exception * +000A6DD1: call __Unwind_Resume +000A6DD6: add rsp, 48h +000A6DDA: pop rbx +000A6DDB: pop rbp +000A6DDC: retn + +### FUNC 000A6DDE - 000A6E12 (52 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m +000A6DDE: push rbp +000A6DDF: mov rbp, rsp +000A6DE2: sub rsp, 20h +000A6DE6: mov [rbp+var_8], rdi +000A6DEA: mov [rbp+var_10], rsi +000A6DEE: mov [rbp+var_18], rdx +000A6DF2: cmp [rbp+var_10], 0 +000A6DF7: jz short locret_A6E10 +000A6DF9: mov rax, [rbp+var_8] +000A6DFD: mov rdx, [rbp+var_18] +000A6E01: mov rcx, [rbp+var_10] +000A6E05: mov rsi, rcx +000A6E08: mov rdi, rax +000A6E0B: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS8_m; __gnu_cxx::new_allocator>>>::deallocate(nlohmann::basic_json>>*,ulong) +000A6E10: leave +000A6E11: retn + +### FUNC 000A6E12 - 000A6E1C (10 bytes) name=_ZNSt8iteratorISt19output_iterator_tagvvvvEC2Ev +000A6E12: push rbp; Alternative name is 'std::iterator::iterator(void)' +000A6E13: mov rbp, rsp +000A6E16: mov [rbp+var_8], rdi +000A6E1A: pop rbp +000A6E1B: retn + +### FUNC 000A6E1C - 000A6E45 (41 bytes) name=_ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEC2ERS9_ +000A6E1C: push rbp; Alternative name is 'std::back_insert_iterator>>, std::allocator>>>>>::back_insert_iterator(std::vector>>, std::allocator>>>>&)' +000A6E1D: mov rbp, rsp +000A6E20: sub rsp, 10h +000A6E24: mov [rbp+var_8], rdi +000A6E28: mov [rbp+var_10], rsi +000A6E2C: mov rax, [rbp+var_8] +000A6E30: mov rdi, rax +000A6E33: call __ZNSt8iteratorISt19output_iterator_tagvvvvEC2Ev; std::iterator::iterator(void) +000A6E38: mov rax, [rbp+var_8] +000A6E3C: mov rdx, [rbp+var_10] +000A6E40: mov [rax], rdx +000A6E43: leave +000A6E44: retn + +### FUNC 000A6E45 - 000A6E5F (26 bytes) name=_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_ +000A6E45: push rbp +000A6E46: mov rbp, rsp +000A6E49: sub rsp, 10h +000A6E4D: mov [rbp+var_10], rdi +000A6E51: mov rax, [rbp+var_10] +000A6E55: mov rdi, rax +000A6E58: call __ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb0EE7_S_baseESD_; std::_Iter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,false>::_S_base(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000A6E5D: leave +000A6E5E: retn + +### FUNC 000A6E5F - 000A6EB7 (88 bytes) name=_ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESt20back_insert_iteratorISC_EET1_T0_SH_SG_ +000A6E5F: push rbp +000A6E60: mov rbp, rsp +000A6E63: push r12 +000A6E65: push rbx +000A6E66: sub rsp, 30h +000A6E6A: mov [rbp+var_20], rdi +000A6E6E: mov [rbp+var_30], rsi +000A6E72: mov [rbp+var_40], rdx +000A6E76: mov rax, [rbp+var_40] +000A6E7A: mov rdi, rax +000A6E7D: call __ZSt12__niter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEENSt11_Niter_baseIT_E13iterator_typeESD_; std::__niter_base>>,std::allocator>>>>>>(std::back_insert_iterator>>,std::allocator>>>>>) +000A6E82: mov r12, rax +000A6E85: mov rax, [rbp+var_30] +000A6E89: mov rdi, rax +000A6E8C: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_; std::__niter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000A6E91: mov rbx, rax +000A6E94: mov rax, [rbp+var_20] +000A6E98: mov rdi, rax +000A6E9B: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_; std::__niter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000A6EA0: mov rdx, r12 +000A6EA3: mov rsi, rbx +000A6EA6: mov rdi, rax +000A6EA9: call __ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt20back_insert_iteratorIS3_IS7_SaIS7_EEEET1_T0_SE_SD_; std::__copy_move_a>> *,std::back_insert_iterator>>,std::allocator>>>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::back_insert_iterator>>,std::allocator>>>>>) +000A6EAE: add rsp, 30h +000A6EB2: pop rbx +000A6EB3: pop r12 +000A6EB5: pop rbp +000A6EB6: retn + +### FUNC 000A6EB8 - 000A6EE1 (41 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5beginEv +000A6EB8: push rbp +000A6EB9: mov rbp, rsp +000A6EBC: sub rsp, 20h +000A6EC0: mov [rbp+var_18], rdi +000A6EC4: mov rax, [rbp+var_18] +000A6EC8: mov rdx, [rax+18h] +000A6ECC: lea rax, [rbp+var_10] +000A6ED0: mov rsi, rdx +000A6ED3: mov rdi, rax +000A6ED6: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000A6EDB: mov rax, [rbp+var_10] +000A6EDF: leave +000A6EE0: retn + +### FUNC 000A6EE1 - 000A6EEF (14 bytes) name=_ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000A6EE1: push rbp +000A6EE2: mov rbp, rsp +000A6EE5: mov [rbp+var_8], rdi +000A6EE9: mov rax, [rbp+var_8] +000A6EED: pop rbp +000A6EEE: retn + +### FUNC 000A6EF0 - 000A6F71 (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJS6_EEEvDpOT_ +000A6EF0: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back>>>(nlohmann::basic_json>> &&)' +000A6EF1: mov rbp, rsp +000A6EF4: sub rsp, 10h +000A6EF8: mov [rbp+var_8], rdi +000A6EFC: mov [rbp+var_10], rsi +000A6F00: mov rax, [rbp+var_8] +000A6F04: mov rdx, [rax+8] +000A6F08: mov rax, [rbp+var_8] +000A6F0C: mov rax, [rax+10h] +000A6F10: cmp rdx, rax +000A6F13: jz short loc_A6F51 +000A6F15: mov rax, [rbp+var_10] +000A6F19: mov rdi, rax +000A6F1C: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000A6F21: mov rdx, rax +000A6F24: mov rax, [rbp+var_8] +000A6F28: mov rcx, [rax+8] +000A6F2C: mov rax, [rbp+var_8] +000A6F30: mov rsi, rcx +000A6F33: mov rdi, rax +000A6F36: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000A6F3B: mov rax, [rbp+var_8] +000A6F3F: mov rax, [rax+8] +000A6F43: lea rdx, [rax+10h] +000A6F47: mov rax, [rbp+var_8] +000A6F4B: mov [rax+8], rdx +000A6F4F: jmp short locret_A6F6F +000A6F51: mov rax, [rbp+var_10] +000A6F55: mov rdi, rax +000A6F58: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000A6F5D: mov rdx, rax +000A6F60: mov rax, [rbp+var_8] +000A6F64: mov rsi, rdx +000A6F67: mov rdi, rax +000A6F6A: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJS6_EEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux>>>(nlohmann::basic_json>> &&) +000A6F6F: leave +000A6F70: retn + +### FUNC 000A6F72 - 000A6FA3 (49 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv +000A6F72: push rbp +000A6F73: mov rbp, rsp +000A6F76: sub rsp, 20h +000A6F7A: mov [rbp+var_18], rdi +000A6F7E: mov rax, [rbp+var_18] +000A6F82: mov rax, [rax+8] +000A6F86: mov [rbp+var_8], rax +000A6F8A: lea rdx, [rbp+var_8] +000A6F8E: lea rax, [rbp+var_10] +000A6F92: mov rsi, rdx +000A6F95: mov rdi, rax +000A6F98: call __ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKSA_; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> const* const&) +000A6F9D: mov rax, [rbp+var_10] +000A6FA1: leave +000A6FA2: retn + +### FUNC 000A6FA4 - 000A6FD4 (48 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv +000A6FA4: push rbp +000A6FA5: mov rbp, rsp +000A6FA8: sub rsp, 20h +000A6FAC: mov [rbp+var_18], rdi +000A6FB0: mov rax, [rbp+var_18] +000A6FB4: mov rax, [rax] +000A6FB7: mov [rbp+var_8], rax +000A6FBB: lea rdx, [rbp+var_8] +000A6FBF: lea rax, [rbp+var_10] +000A6FC3: mov rsi, rdx +000A6FC6: mov rdi, rax +000A6FC9: call __ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKSA_; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> const* const&) +000A6FCE: mov rax, [rbp+var_10] +000A6FD2: leave +000A6FD3: retn + +### FUNC 000A6FD4 - 000A7010 (60 bytes) name=_ZN9__gnu_cxxeqIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +000A6FD4: push rbp +000A6FD5: mov rbp, rsp +000A6FD8: push rbx +000A6FD9: sub rsp, 18h +000A6FDD: mov [rbp+var_18], rdi +000A6FE1: mov [rbp+var_20], rsi +000A6FE5: mov rax, [rbp+var_18] +000A6FE9: mov rdi, rax +000A6FEC: call __ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::base(void) +000A6FF1: mov rbx, [rax] +000A6FF4: mov rax, [rbp+var_20] +000A6FF8: mov rdi, rax +000A6FFB: call __ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::base(void) +000A7000: mov rax, [rax] +000A7003: cmp rbx, rax +000A7006: setz al +000A7009: add rsp, 18h +000A700D: pop rbx +000A700E: pop rbp +000A700F: retn + +### FUNC 000A7010 - 000A7055 (69 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEmiERKl +000A7010: push rbp +000A7011: mov rbp, rsp +000A7014: sub rsp, 20h +000A7018: mov [rbp+var_18], rdi +000A701C: mov [rbp+var_20], rsi +000A7020: mov rax, [rbp+var_18] +000A7024: mov rdx, [rax] +000A7027: mov rax, [rbp+var_20] +000A702B: mov rax, [rax] +000A702E: shl rax, 4 +000A7032: neg rax +000A7035: add rax, rdx +000A7038: mov [rbp+var_8], rax +000A703C: lea rdx, [rbp+var_8] +000A7040: lea rax, [rbp+var_10] +000A7044: mov rsi, rdx +000A7047: mov rdi, rax +000A704A: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> * const&) +000A704F: mov rax, [rbp+var_10] +000A7053: leave +000A7054: retn + +### FUNC 000A7055 - 000A707A (37 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_ +000A7055: push rbp +000A7056: mov rbp, rsp +000A7059: sub rsp, 10h +000A705D: mov [rbp+var_8], rdi +000A7061: mov [rbp+var_10], rsi +000A7065: mov rdx, [rbp+var_10] +000A7069: mov rax, [rbp+var_8] +000A706D: mov rsi, rdx +000A7070: mov rdi, rax +000A7073: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS7_EENSt9enable_ifIXsrNS9_16__destroy_helperIT_EE5valueEvE4typeERS8_PSD_; std::allocator_traits>>>>::_S_destroy>>>(std::allocator>>>&,nlohmann::basic_json>>*) +000A7078: leave +000A7079: retn + +### FUNC 000A707A - 000A70BE (68 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE15_M_erase_at_endEPS6_ +000A707A: push rbp +000A707B: mov rbp, rsp +000A707E: sub rsp, 10h +000A7082: mov [rbp+var_8], rdi +000A7086: mov [rbp+var_10], rsi +000A708A: mov rax, [rbp+var_8] +000A708E: mov rdi, rax +000A7091: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000A7096: mov rdx, rax +000A7099: mov rax, [rbp+var_8] +000A709D: mov rcx, [rax+8] +000A70A1: mov rax, [rbp+var_10] +000A70A5: mov rsi, rcx +000A70A8: mov rdi, rax +000A70AB: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000A70B0: mov rax, [rbp+var_8] +000A70B4: mov rdx, [rbp+var_10] +000A70B8: mov [rax+8], rdx +000A70BC: leave +000A70BD: retn + +### FUNC 000A70BE - 000A714B (141 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5clearEv +000A70BE: push rbp +000A70BF: mov rbp, rsp +000A70C2: push rbx +000A70C3: sub rsp, 18h +000A70C7: mov [rbp+var_18], rdi +000A70CB: mov rax, [rbp+var_18] +000A70CF: mov rdi, rax +000A70D2: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_begin(void) +000A70D7: mov rdx, rax +000A70DA: mov rax, [rbp+var_18] +000A70DE: mov rsi, rdx +000A70E1: mov rdi, rax +000A70E4: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_erase(std::_Rb_tree_node>>>> *) +000A70E9: mov rax, [rbp+var_18] +000A70ED: mov rdi, rax +000A70F0: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_leftmost(void) +000A70F5: mov rbx, rax +000A70F8: mov rax, [rbp+var_18] +000A70FC: mov rdi, rax +000A70FF: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000A7104: mov [rbx], rax +000A7107: mov rax, [rbp+var_18] +000A710B: mov rdi, rax +000A710E: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_root(void) +000A7113: mov qword ptr [rax], 0 +000A711A: mov rax, [rbp+var_18] +000A711E: mov rdi, rax +000A7121: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_rightmost(void) +000A7126: mov rbx, rax +000A7129: mov rax, [rbp+var_18] +000A712D: mov rdi, rax +000A7130: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000A7135: mov [rbx], rax +000A7138: mov rax, [rbp+var_18] +000A713C: mov qword ptr [rax+28h], 0 +000A7144: add rsp, 18h +000A7148: pop rbx +000A7149: pop rbp +000A714A: retn + +### FUNC 000A714C - 000A7156 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEEC2Ev +000A714C: push rbp; Alternative name is '__gnu_cxx::new_allocator>>, std::less, std::allocator>>>>>>::new_allocator(void)' +000A714D: mov rbp, rsp +000A7150: mov [rbp+var_8], rdi +000A7154: pop rbp +000A7155: retn + +### FUNC 000A7156 - 000A7160 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEED2Ev +000A7156: push rbp; Alternative name is '__gnu_cxx::new_allocator>>, std::less, std::allocator>>>>>>::~new_allocator()' +000A7157: mov rbp, rsp +000A715A: mov [rbp+var_8], rdi +000A715E: pop rbp +000A715F: retn + +### FUNC 000A7160 - 000A7185 (37 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE10_S_destroyISE_EENSt9enable_ifIXsrNSG_16__destroy_helperIT_EE5valueEvE4typeERSF_PSK_ +000A7160: push rbp +000A7161: mov rbp, rsp +000A7164: sub rsp, 10h +000A7168: mov [rbp+var_8], rdi +000A716C: mov [rbp+var_10], rsi +000A7170: mov rdx, [rbp+var_10] +000A7174: mov rax, [rbp+var_8] +000A7178: mov rsi, rdx +000A717B: mov rdi, rax +000A717E: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE7destroyISF_EEvPT_; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::destroy>>,std::less,std::allocator>>>>>>(std::map>>,std::less,std::allocator>>>>> *) +000A7183: leave +000A7184: retn + +### FUNC 000A7186 - 000A71A8 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE10deallocateEPSF_m +000A7186: push rbp +000A7187: mov rbp, rsp +000A718A: sub rsp, 20h +000A718E: mov [rbp+var_8], rdi +000A7192: mov [rbp+var_10], rsi +000A7196: mov [rbp+var_18], rdx +000A719A: mov rax, [rbp+var_10] +000A719E: mov rdi, rax; void * +000A71A1: call __ZdlPv; operator delete(void *) +000A71A6: leave +000A71A7: retn + +### FUNC 000A71A8 - 000A71B2 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEC2Ev +000A71A8: push rbp; Alternative name is '__gnu_cxx::new_allocator>>, std::allocator>>>>>::new_allocator(void)' +000A71A9: mov rbp, rsp +000A71AC: mov [rbp+var_8], rdi +000A71B0: pop rbp +000A71B1: retn + +### FUNC 000A71B2 - 000A71BC (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEED2Ev +000A71B2: push rbp; Alternative name is '__gnu_cxx::new_allocator>>, std::allocator>>>>>::~new_allocator()' +000A71B3: mov rbp, rsp +000A71B6: mov [rbp+var_8], rdi +000A71BA: pop rbp +000A71BB: retn + +### FUNC 000A71BC - 000A71E1 (37 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE10_S_destroyIS9_EENSt9enable_ifIXsrNSB_16__destroy_helperIT_EE5valueEvE4typeERSA_PSF_ +000A71BC: push rbp +000A71BD: mov rbp, rsp +000A71C0: sub rsp, 10h +000A71C4: mov [rbp+var_8], rdi +000A71C8: mov [rbp+var_10], rsi +000A71CC: mov rdx, [rbp+var_10] +000A71D0: mov rax, [rbp+var_8] +000A71D4: mov rsi, rdx +000A71D7: mov rdi, rax +000A71DA: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE7destroyISA_EEvPT_; __gnu_cxx::new_allocator>>,std::allocator>>>>>::destroy>>,std::allocator>>>>>(std::vector>>,std::allocator>>>> *) +000A71DF: leave +000A71E0: retn + +### FUNC 000A71E2 - 000A7204 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE10deallocateEPSA_m +000A71E2: push rbp +000A71E3: mov rbp, rsp +000A71E6: sub rsp, 20h +000A71EA: mov [rbp+var_8], rdi +000A71EE: mov [rbp+var_10], rsi +000A71F2: mov [rbp+var_18], rdx +000A71F6: mov rax, [rbp+var_10] +000A71FA: mov rdi, rax; void * +000A71FD: call __ZdlPv; operator delete(void *) +000A7202: leave +000A7203: retn + +### FUNC 000A7204 - 000A720E (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISsEC2Ev +000A7204: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000A7205: mov rbp, rsp +000A7208: mov [rbp+var_8], rdi +000A720C: pop rbp +000A720D: retn + +### FUNC 000A720E - 000A7218 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISsED2Ev +000A720E: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000A720F: mov rbp, rsp +000A7212: mov [rbp+var_8], rdi +000A7216: pop rbp +000A7217: retn + +### FUNC 000A7218 - 000A723D (37 bytes) name=_ZNSt16allocator_traitsISaISsEE10_S_destroyISsEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +000A7218: push rbp +000A7219: mov rbp, rsp +000A721C: sub rsp, 10h +000A7220: mov [rbp+var_8], rdi +000A7224: mov [rbp+var_10], rsi +000A7228: mov rdx, [rbp+var_10] +000A722C: mov rax, [rbp+var_8] +000A7230: mov rsi, rdx +000A7233: mov rdi, rax +000A7236: call __ZN9__gnu_cxx13new_allocatorISsE7destroyISsEEvPT_; __gnu_cxx::new_allocator::destroy(std::string *) +000A723B: leave +000A723C: retn + +### FUNC 000A723E - 000A7260 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISsE10deallocateEPSsm +000A723E: push rbp +000A723F: mov rbp, rsp +000A7242: sub rsp, 20h +000A7246: mov [rbp+var_8], rdi +000A724A: mov [rbp+var_10], rsi +000A724E: mov [rbp+var_18], rdx +000A7252: mov rax, [rbp+var_10] +000A7256: mov rdi, rax; void * +000A7259: call __ZdlPv; operator delete(void *) +000A725E: leave +000A725F: retn + +### FUNC 000A7260 - 000A726A (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev +000A7260: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>::new_allocator(void)' +000A7261: mov rbp, rsp +000A7264: mov [rbp+var_8], rdi +000A7268: pop rbp +000A7269: retn + +### FUNC 000A726A - 000A7274 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev +000A726A: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>::~new_allocator()' +000A726B: mov rbp, rsp +000A726E: mov [rbp+var_8], rdi +000A7272: pop rbp +000A7273: retn + +### FUNC 000A7274 - 000A7299 (37 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10_S_destroyIS5_EENSt9enable_ifIXsrNS7_16__destroy_helperIT_EE5valueEvE4typeERS6_PSB_ +000A7274: push rbp +000A7275: mov rbp, rsp +000A7278: sub rsp, 10h +000A727C: mov [rbp+var_8], rdi +000A7280: mov [rbp+var_10], rsi +000A7284: mov rdx, [rbp+var_10] +000A7288: mov rax, [rbp+var_8] +000A728C: mov rsi, rdx +000A728F: mov rdi, rax +000A7292: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE7destroyIS6_EEvPT_; __gnu_cxx::new_allocator>>>::destroy>>>(nlohmann::byte_container_with_subtype>> *) +000A7297: leave +000A7298: retn + +### FUNC 000A729A - 000A72BC (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE10deallocateEPS6_m +000A729A: push rbp +000A729B: mov rbp, rsp +000A729E: sub rsp, 20h +000A72A2: mov [rbp+var_8], rdi +000A72A6: mov [rbp+var_10], rsi +000A72AA: mov [rbp+var_18], rdx +000A72AE: mov rax, [rbp+var_10] +000A72B2: mov rdi, rax; void * +000A72B5: call __ZdlPv; operator delete(void *) +000A72BA: leave +000A72BB: retn + +### FUNC 000A72BC - 000A72C6 (10 bytes) name=_ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev +000A72BC: push rbp; Alternative name is 'nlohmann::detail::lexer_base>>>::lexer_base(void)' +000A72BD: mov rbp, rsp +000A72C0: mov [rbp+var_8], rdi +000A72C4: pop rbp +000A72C5: retn + +### FUNC 000A72C6 - 000A72F3 (45 bytes) name=_ZN8nlohmann6detail10position_tC2Ev +000A72C6: push rbp; Alternative name is 'nlohmann::detail::position_t::position_t(void)' +000A72C7: mov rbp, rsp +000A72CA: mov [rbp+var_8], rdi +000A72CE: mov rax, [rbp+var_8] +000A72D2: mov qword ptr [rax], 0 +000A72D9: mov rax, [rbp+var_8] +000A72DD: mov qword ptr [rax+8], 0 +000A72E5: mov rax, [rbp+var_8] +000A72E9: mov qword ptr [rax+10h], 0 +000A72F1: pop rbp +000A72F2: retn + +### FUNC 000A72F4 - 000A730E (26 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EEC2Ev +000A72F4: push rbp; Alternative name is 'std::vector>> *, std::allocator>> *>>::vector(void)' +000A72F5: mov rbp, rsp +000A72F8: sub rsp, 10h +000A72FC: mov [rbp+var_8], rdi +000A7300: mov rax, [rbp+var_8] +000A7304: mov rdi, rax +000A7307: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EEC2Ev; std::_Vector_base>> *,std::allocator>> *>>::_Vector_base(void) +000A730C: leave +000A730D: retn + +### FUNC 000A730E - 000A7328 (26 bytes) name=_ZNSt6vectorIbSaIbEEC2Ev +000A730E: push rbp; Alternative name is 'std::vector>::vector(void)' +000A730F: mov rbp, rsp +000A7312: sub rsp, 10h +000A7316: mov [rbp+var_8], rdi +000A731A: mov rax, [rbp+var_8] +000A731E: mov rdi, rax +000A7321: call __ZNSt13_Bvector_baseISaIbEEC2Ev; std::_Bvector_base>::_Bvector_base(void) +000A7326: leave +000A7327: retn + +### FUNC 000A7328 - 000A73D5 (173 bytes) name=_ZNSt6vectorIbSaIbEE9push_backEb +000A7328: push rbp +000A7329: mov rbp, rsp +000A732C: push rbx +000A732D: sub rsp, 48h +000A7331: mov [rbp+var_48], rdi +000A7335: mov eax, esi +000A7337: mov [rbp+var_4C], al +000A733A: mov rax, [rbp+var_48] +000A733E: mov rdx, [rax+10h] +000A7342: mov rax, [rbp+var_48] +000A7346: mov rax, [rax+20h] +000A734A: cmp rdx, rax +000A734D: jz short loc_A739A +000A734F: movzx ebx, [rbp+var_4C] +000A7353: mov rax, [rbp+var_48] +000A7357: add rax, 10h +000A735B: mov esi, 0 +000A7360: mov rdi, rax +000A7363: call __ZNSt13_Bit_iteratorppEi; std::_Bit_iterator::operator++(int) +000A7368: mov rcx, rax +000A736B: mov rax, rdx +000A736E: mov [rbp+var_30], rcx +000A7372: mov [rbp+var_28], rax +000A7376: lea rax, [rbp+var_30] +000A737A: mov rdi, rax +000A737D: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000A7382: mov [rbp+var_40], rax +000A7386: mov [rbp+var_38], rdx +000A738A: lea rax, [rbp+var_40] +000A738E: mov esi, ebx +000A7390: mov rdi, rax +000A7393: call __ZNSt14_Bit_referenceaSEb; std::_Bit_reference::operator=(bool) +000A7398: jmp short loc_A73CE +000A739A: movzx ebx, [rbp+var_4C] +000A739E: mov rax, [rbp+var_48] +000A73A2: mov rdi, rax +000A73A5: call __ZNSt6vectorIbSaIbEE3endEv; std::vector>::end(void) +000A73AA: mov rcx, rax +000A73AD: mov rax, rdx +000A73B0: mov [rbp+var_20], rcx +000A73B4: mov [rbp+var_18], rax +000A73B8: mov rsi, [rbp+var_20] +000A73BC: mov rdx, [rbp+var_18] +000A73C0: mov rax, [rbp+var_48] +000A73C4: mov ecx, ebx +000A73C6: mov rdi, rax +000A73C9: call __ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb; std::vector>::_M_insert_aux(std::_Bit_iterator,bool) +000A73CE: add rsp, 48h +000A73D2: pop rbx +000A73D3: pop rbp +000A73D4: retn + +### FUNC 000A73D6 - 000A73F0 (26 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implD2Ev +000A73D6: push rbp; Alternative name is 'std::_Vector_base>> *, std::allocator>> *>>::_Vector_impl::~_Vector_impl()' +000A73D7: mov rbp, rsp +000A73DA: sub rsp, 10h +000A73DE: mov [rbp+var_8], rdi +000A73E2: mov rax, [rbp+var_8] +000A73E6: mov rdi, rax +000A73E9: call __ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev; std::allocator>> *>::~allocator() +000A73EE: leave +000A73EF: retn + +### FUNC 000A73F0 - 000A743F (79 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EED2Ev +000A73F0: push rbp; Alternative name is 'std::_Vector_base>> *, std::allocator>> *>>::~_Vector_base()' +000A73F1: mov rbp, rsp +000A73F4: sub rsp, 10h +000A73F8: mov [rbp+var_8], rdi +000A73FC: mov rax, [rbp+var_8] +000A7400: mov rax, [rax+10h] +000A7404: mov rdx, rax +000A7407: mov rax, [rbp+var_8] +000A740B: mov rax, [rax] +000A740E: sub rdx, rax +000A7411: mov rax, rdx +000A7414: sar rax, 3 +000A7418: mov rdx, rax +000A741B: mov rax, [rbp+var_8] +000A741F: mov rcx, [rax] +000A7422: mov rax, [rbp+var_8] +000A7426: mov rsi, rcx +000A7429: mov rdi, rax +000A742C: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m; std::_Vector_base>> *,std::allocator>> *>>::_M_deallocate(nlohmann::basic_json>> **,ulong) +000A7431: mov rax, [rbp+var_8] +000A7435: mov rdi, rax +000A7438: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implD2Ev; std::_Vector_base>> *,std::allocator>> *>>::_Vector_impl::~_Vector_impl() +000A743D: leave +000A743E: retn + +### FUNC 000A7440 - 000A744E (14 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +000A7440: push rbp +000A7441: mov rbp, rsp +000A7444: mov [rbp+var_8], rdi +000A7448: mov rax, [rbp+var_8] +000A744C: pop rbp +000A744D: retn + +### FUNC 000A744E - 000A7477 (41 bytes) name=_ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E +000A744E: push rbp +000A744F: mov rbp, rsp +000A7452: sub rsp, 20h +000A7456: mov [rbp+var_8], rdi +000A745A: mov [rbp+var_10], rsi +000A745E: mov [rbp+var_18], rdx +000A7462: mov rdx, [rbp+var_10] +000A7466: mov rax, [rbp+var_8] +000A746A: mov rsi, rdx +000A746D: mov rdi, rax +000A7470: call __ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_SA_; std::_Destroy>> **>(nlohmann::basic_json>> **,nlohmann::basic_json>> **) +000A7475: leave +000A7476: retn + +### FUNC 000A7478 - 000A7492 (26 bytes) name=_ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev +000A7478: push rbp; Alternative name is 'std::_Bvector_base>::_Bvector_impl::~_Bvector_impl()' +000A7479: mov rbp, rsp +000A747C: sub rsp, 10h +000A7480: mov [rbp+var_8], rdi +000A7484: mov rax, [rbp+var_8] +000A7488: mov rdi, rax +000A748B: call __ZNSaImED2Ev; std::allocator::~allocator() +000A7490: leave +000A7491: retn + +### FUNC 000A7492 - 000A74B8 (38 bytes) name=_ZNSt13_Bvector_baseISaIbEED2Ev +000A7492: push rbp; Alternative name is 'std::_Bvector_base>::~_Bvector_base()' +000A7493: mov rbp, rsp +000A7496: sub rsp, 10h +000A749A: mov [rbp+var_8], rdi +000A749E: mov rax, [rbp+var_8] +000A74A2: mov rdi, rax +000A74A5: call __ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv; std::_Bvector_base>::_M_deallocate(void) +000A74AA: mov rax, [rbp+var_8] +000A74AE: mov rdi, rax +000A74B1: call __ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev; std::_Bvector_base>::_Bvector_impl::~_Bvector_impl() +000A74B6: leave +000A74B7: retn + +### FUNC 000A74B8 - 000A7687 (463 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +000A74B8: push rbp +000A74B9: mov rbp, rsp +000A74BC: push r12 +000A74BE: push rbx +000A74BF: sub rsp, 50h +000A74C3: mov [rbp+var_58], rdi +000A74C7: mov [rbp+var_60], rsi +000A74CB: mov rax, [rbp+var_58] +000A74CF: lea rbx, [rax+0A8h] +000A74D6: mov rax, [rbp+var_58] +000A74DA: add rax, 8 +000A74DE: mov rdi, rax +000A74E1: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000A74E6: mov rdx, [rbp+var_58] +000A74EA: lea rdi, [rdx+80h] +000A74F1: mov rcx, rbx +000A74F4: mov edx, 0 +000A74F9: mov esi, eax +000A74FB: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000A7500: mov [rbp+var_11], al +000A7503: movzx eax, [rbp+var_11] +000A7507: mov rdx, [rbp+var_58] +000A750B: add rdx, 20h ; ' ' +000A750F: mov esi, eax +000A7511: mov rdi, rdx +000A7514: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A7519: mov [rbp+var_31], 1 +000A751D: lea rcx, [rbp+var_31] +000A7521: mov rax, [rbp+var_58] +000A7525: mov edx, 1 +000A752A: mov rsi, rcx +000A752D: mov rdi, rax +000A7530: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(nlohmann::detail::value_t &&,bool) +000A7535: mov ecx, eax +000A7537: mov rax, rdx +000A753A: mov [rbp+var_50], ecx +000A753D: mov [rbp+var_48], rax +000A7541: mov rax, [rbp+var_58] +000A7545: add rax, 8 +000A7549: lea rdx, [rbp+var_50] +000A754D: add rdx, 8 +000A7551: mov rsi, rdx +000A7554: mov rdi, rax +000A7557: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backERKS7_; std::vector>> *,std::allocator>> *>>::push_back(nlohmann::basic_json>> * const&) +000A755C: mov rax, [rbp+var_58] +000A7560: add rax, 8 +000A7564: mov rdi, rax +000A7567: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A756C: mov rax, [rax] +000A756F: test rax, rax +000A7572: jz short loc_A75B7 +000A7574: cmp [rbp+var_60], 0FFFFFFFFFFFFFFFFh +000A7579: jz short loc_A75A3 +000A757B: mov rax, [rbp+var_58] +000A757F: add rax, 8 +000A7583: mov rdi, rax +000A7586: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A758B: mov rax, [rax] +000A758E: mov rdi, rax +000A7591: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv; nlohmann::basic_json>>::max_size(void) +000A7596: cmp rax, [rbp+var_60] +000A759A: jnb short loc_A75A3 +000A759C: mov eax, 1 +000A75A1: jmp short loc_A75A8 +000A75A3: mov eax, 0 +000A75A8: movzx eax, al +000A75AB: test rax, rax +000A75AE: jz short loc_A75B7 +000A75B0: mov eax, 1 +000A75B5: jmp short loc_A75BC +000A75B7: mov eax, 0 +000A75BC: test al, al +000A75BE: jz short loc_A763F +000A75C0: mov edi, 20h ; ' '; thrown_size +000A75C5: call ___cxa_allocate_exception +000A75CA: mov rbx, rax +000A75CD: lea rax, [rbp+var_20] +000A75D1: mov rdx, [rbp+var_60] +000A75D5: mov rsi, rdx +000A75D8: mov rdi, rax; unsigned __int64 +000A75DB: call __ZSt9to_stringm; std::to_string(ulong) +000A75E0: lea rax, [rbp+var_30] +000A75E4: lea rdx, [rbp+var_20] +000A75E8: lea rsi, aExcessiveObjec; "excessive object size: " +000A75EF: mov rdi, rax +000A75F2: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A75F7: lea rax, [rbp+var_30] +000A75FB: mov rdx, rax; std::string * +000A75FE: mov esi, 198h; int +000A7603: mov rdi, rbx; this +000A7606: call __ZN8nlohmann6detail12out_of_range6createEiRKSs; nlohmann::detail::out_of_range::create(int,std::string const&) +000A760B: lea rax, [rbp+var_30] +000A760F: mov rdi, rax; this +000A7612: call __ZNSsD1Ev; std::string::~string() +000A7617: lea rax, [rbp+var_20] +000A761B: mov rdi, rax; this +000A761E: call __ZNSsD1Ev; std::string::~string() +000A7623: mov rax, cs:_ZN8nlohmann6detail12out_of_rangeD2Ev_ptr +000A762A: mov rdx, rax; void (__fastcall *)(void *) +000A762D: mov rax, cs:_ZTIN8nlohmann6detail12out_of_rangeE_ptr +000A7634: mov rsi, rax; lptinfo +000A7637: mov rdi, rbx; void * +000A763A: call ___cxa_throw +000A763F: mov eax, 1 +000A7644: jmp short loc_A767E +000A7646: mov r12, rax +000A7649: lea rax, [rbp+var_30] +000A764D: mov rdi, rax; this +000A7650: call __ZNSsD1Ev; std::string::~string() +000A7655: jmp short loc_A765A +000A7657: mov r12, rax +000A765A: lea rax, [rbp+var_20] +000A765E: mov rdi, rax; this +000A7661: call __ZNSsD1Ev; std::string::~string() +000A7666: jmp short loc_A766B +000A7668: mov r12, rax +000A766B: mov rdi, rbx; void * +000A766E: call ___cxa_free_exception +000A7673: mov rax, r12 +000A7676: mov rdi, rax; struct _Unwind_Exception * +000A7679: call __Unwind_Resume +000A767E: add rsp, 50h +000A7682: pop rbx +000A7683: pop r12 +000A7685: pop rbp +000A7686: retn + +### FUNC 000A7688 - 000A7956 (718 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +000A7688: push rbp +000A7689: mov rbp, rsp +000A768C: push rbx +000A768D: sub rsp, 0A8h +000A7694: mov [rbp+var_88], rdi +000A769B: mov rax, [rbp+var_88] +000A76A2: add rax, 8 +000A76A6: mov rdi, rax +000A76A9: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A76AE: mov rax, [rax] +000A76B1: test rax, rax +000A76B4: jz short loc_A770B +000A76B6: mov rax, [rbp+var_88] +000A76BD: add rax, 8 +000A76C1: mov rdi, rax +000A76C4: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A76C9: mov rbx, [rax] +000A76CC: mov rax, [rbp+var_88] +000A76D3: add rax, 8 +000A76D7: mov rdi, rax +000A76DA: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000A76DF: lea esi, [rax-1] +000A76E2: mov rax, [rbp+var_88] +000A76E9: sub rax, 0FFFFFFFFFFFFFF80h +000A76ED: mov rcx, rbx +000A76F0: mov edx, 1 +000A76F5: mov rdi, rax +000A76F8: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000A76FD: xor eax, 1 +000A7700: test al, al +000A7702: jz short loc_A770B +000A7704: mov eax, 1 +000A7709: jmp short loc_A7710 +000A770B: mov eax, 0 +000A7710: test al, al +000A7712: jz short loc_A7762 +000A7714: mov rax, [rbp+var_88] +000A771B: lea rdx, [rax+0A8h] +000A7722: lea rax, [rbp+var_60] +000A7726: mov rsi, rdx +000A7729: mov rdi, rax +000A772C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +000A7731: mov rax, [rbp+var_88] +000A7738: add rax, 8 +000A773C: mov rdi, rax +000A773F: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7744: mov rax, [rax] +000A7747: lea rdx, [rbp+var_60] +000A774B: mov rsi, rdx +000A774E: mov rdi, rax +000A7751: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000A7756: lea rax, [rbp+var_60] +000A775A: mov rdi, rax +000A775D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7762: mov rax, [rbp+var_88] +000A7769: add rax, 8 +000A776D: mov rdi, rax +000A7770: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000A7775: test al, al +000A7777: jz short loc_A7798 +000A7779: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEvE19__PRETTY_FUNCTION__; "bool nlohmann::detail::json_sax_dom_cal"... +000A7780: mov edx, 15EDh; line +000A7785: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000A778C: lea rdi, aRefStackEmpty; "!ref_stack.empty()" +000A7793: call ___assert_fail +000A7798: mov rax, [rbp+var_88] +000A779F: add rax, 20h ; ' ' +000A77A3: mov rdi, rax +000A77A6: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A77AB: test al, al +000A77AD: jz short loc_A77CE +000A77AF: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEvE19__PRETTY_FUNCTION__; "bool nlohmann::detail::json_sax_dom_cal"... +000A77B6: mov edx, 15EEh; line +000A77BB: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000A77C2: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000A77C9: call ___assert_fail +000A77CE: mov rax, [rbp+var_88] +000A77D5: add rax, 8 +000A77D9: mov rdi, rax +000A77DC: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv; std::vector>> *,std::allocator>> *>>::pop_back(void) +000A77E1: mov rax, [rbp+var_88] +000A77E8: add rax, 20h ; ' ' +000A77EC: mov rdi, rax +000A77EF: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000A77F4: mov rax, [rbp+var_88] +000A77FB: add rax, 8 +000A77FF: mov rdi, rax +000A7802: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000A7807: xor eax, 1 +000A780A: test al, al +000A780C: jz short loc_A7852 +000A780E: mov rax, [rbp+var_88] +000A7815: add rax, 8 +000A7819: mov rdi, rax +000A781C: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7821: mov rax, [rax] +000A7824: test rax, rax +000A7827: jz short loc_A7852 +000A7829: mov rax, [rbp+var_88] +000A7830: add rax, 8 +000A7834: mov rdi, rax +000A7837: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A783C: mov rax, [rax] +000A783F: mov rdi, rax +000A7842: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE13is_structuredEv; nlohmann::basic_json>>::is_structured(void) +000A7847: test al, al +000A7849: jz short loc_A7852 +000A784B: mov eax, 1 +000A7850: jmp short loc_A7857 +000A7852: mov eax, 0 +000A7857: test al, al +000A7859: jz loc_A792B +000A785F: mov rax, [rbp+var_88] +000A7866: add rax, 8 +000A786A: mov rdi, rax +000A786D: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7872: mov rdx, [rax] +000A7875: lea rax, [rbp+var_80] +000A7879: mov rsi, rdx +000A787C: mov rdi, rax +000A787F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5beginEv; nlohmann::basic_json>>::begin(void) +000A7884: jmp short loc_A78EB +000A7886: lea rax, [rbp+var_80] +000A788A: mov rdi, rax +000A788D: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEv; nlohmann::detail::iter_impl>>>::operator->(void) +000A7892: mov rdi, rax +000A7895: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12is_discardedEv; nlohmann::basic_json>>::is_discarded(void) +000A789A: test al, al +000A789C: jz short loc_A78DF +000A789E: lea rdx, [rbp+var_80] +000A78A2: lea rax, [rbp+var_50] +000A78A6: mov rsi, rdx +000A78A9: mov rdi, rax +000A78AC: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_; nlohmann::detail::iter_impl>>>::iter_impl(nlohmann::detail::iter_impl>>> const&) +000A78B1: mov rax, [rbp+var_88] +000A78B8: add rax, 8 +000A78BC: mov rdi, rax +000A78BF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A78C4: mov rcx, [rax] +000A78C7: lea rax, [rbp+var_B0] +000A78CE: lea rdx, [rbp+var_50] +000A78D2: mov rsi, rcx +000A78D5: mov rdi, rax +000A78D8: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5eraseINS_6detail9iter_implIS6_EELi0EEET_SB_; nlohmann::basic_json>>::erase>>>,0>(nlohmann::detail::iter_impl>>>) +000A78DD: jmp short loc_A792B +000A78DF: lea rax, [rbp+var_80] +000A78E3: mov rdi, rax +000A78E6: call __ZN8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEppEv; nlohmann::detail::iter_impl>>>::operator++(void) +000A78EB: mov rax, [rbp+var_88] +000A78F2: add rax, 8 +000A78F6: mov rdi, rax +000A78F9: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A78FE: mov rdx, [rax] +000A7901: lea rax, [rbp+var_30] +000A7905: mov rsi, rdx +000A7908: mov rdi, rax +000A790B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv; nlohmann::basic_json>>::end(void) +000A7910: lea rdx, [rbp+var_30] +000A7914: lea rax, [rbp+var_80] +000A7918: mov rsi, rdx +000A791B: mov rdi, rax +000A791E: call __ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEneERKS9_; nlohmann::detail::iter_impl>>>::operator!=(nlohmann::detail::iter_impl>>> const&) +000A7923: test al, al +000A7925: jnz loc_A7886 +000A792B: mov eax, 1 +000A7930: jmp short loc_A794C +000A7932: mov rbx, rax +000A7935: lea rax, [rbp+var_60] +000A7939: mov rdi, rax +000A793C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7941: mov rax, rbx +000A7944: mov rdi, rax; struct _Unwind_Exception * +000A7947: call __Unwind_Resume +000A794C: add rsp, 0A8h +000A7953: pop rbx +000A7954: pop rbp +000A7955: retn + +### FUNC 000A7956 - 000A7964 (14 bytes) name=_ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE +000A7956: push rbp +000A7957: mov rbp, rsp +000A795A: mov [rbp+var_8], rdi +000A795E: mov rax, [rbp+var_8] +000A7962: pop rbp +000A7963: retn + +### FUNC 000A7964 - 000A7AA7 (323 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +000A7964: push rbp +000A7965: mov rbp, rsp +000A7968: push rbx +000A7969: sub rsp, 48h +000A796D: mov [rbp+var_48], rdi +000A7971: mov [rbp+var_50], rsi +000A7975: mov rdx, [rbp+var_50] +000A7979: lea rax, [rbp+var_40] +000A797D: mov rsi, rdx +000A7980: mov rdi, rax +000A7983: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_; nlohmann::basic_json>>::basic_json(std::string &) +000A7988: mov rax, [rbp+var_48] +000A798C: add rax, 8 +000A7990: mov rdi, rax +000A7993: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000A7998: mov rdx, [rbp+var_48] +000A799C: lea rdi, [rdx+80h] +000A79A3: lea rdx, [rbp+var_40] +000A79A7: mov rcx, rdx +000A79AA: mov edx, 4 +000A79AF: mov esi, eax +000A79B1: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000A79B6: mov [rbp+var_11], al +000A79B9: movzx eax, [rbp+var_11] +000A79BD: mov rdx, [rbp+var_48] +000A79C1: add rdx, 48h ; 'H' +000A79C5: mov esi, eax +000A79C7: mov rdi, rdx +000A79CA: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A79CF: cmp [rbp+var_11], 0 +000A79D3: jz short loc_A79F4 +000A79D5: mov rax, [rbp+var_48] +000A79D9: add rax, 8 +000A79DD: mov rdi, rax +000A79E0: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A79E5: mov rax, [rax] +000A79E8: test rax, rax +000A79EB: jz short loc_A79F4 +000A79ED: mov eax, 1 +000A79F2: jmp short loc_A79F9 +000A79F4: mov eax, 0 +000A79F9: test al, al +000A79FB: jz short loc_A7A60 +000A79FD: mov rax, [rbp+var_48] +000A7A01: lea rdx, [rax+0A8h] +000A7A08: lea rax, [rbp+var_30] +000A7A0C: mov rsi, rdx +000A7A0F: mov rdi, rax +000A7A12: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +000A7A17: mov rax, [rbp+var_48] +000A7A1B: add rax, 8 +000A7A1F: mov rdi, rax +000A7A22: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7A27: mov rax, [rax] +000A7A2A: mov rax, [rax+8] +000A7A2E: mov rdx, [rbp+var_50] +000A7A32: mov rsi, rdx +000A7A35: mov rdi, rax +000A7A38: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixERSA_; std::map>>,std::less,std::allocator>>>>>::operator[](std::string const&) +000A7A3D: lea rdx, [rbp+var_30] +000A7A41: mov rsi, rdx +000A7A44: mov rdi, rax +000A7A47: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000A7A4C: mov rdx, [rbp+var_48] +000A7A50: mov [rdx+70h], rax +000A7A54: lea rax, [rbp+var_30] +000A7A58: mov rdi, rax +000A7A5B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7A60: mov ebx, 1 +000A7A65: lea rax, [rbp+var_40] +000A7A69: mov rdi, rax +000A7A6C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7A71: mov eax, ebx +000A7A73: jmp short loc_A7AA0 +000A7A75: mov rbx, rax +000A7A78: lea rax, [rbp+var_30] +000A7A7C: mov rdi, rax +000A7A7F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7A84: jmp short loc_A7A89 +000A7A86: mov rbx, rax +000A7A89: lea rax, [rbp+var_40] +000A7A8D: mov rdi, rax +000A7A90: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7A95: mov rax, rbx +000A7A98: mov rdi, rax; struct _Unwind_Exception * +000A7A9B: call __Unwind_Resume +000A7AA0: add rsp, 48h +000A7AA4: pop rbx +000A7AA5: pop rbp +000A7AA6: retn + +### FUNC 000A7AA8 - 000A7C77 (463 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +000A7AA8: push rbp +000A7AA9: mov rbp, rsp +000A7AAC: push r12 +000A7AAE: push rbx +000A7AAF: sub rsp, 50h +000A7AB3: mov [rbp+var_58], rdi +000A7AB7: mov [rbp+var_60], rsi +000A7ABB: mov rax, [rbp+var_58] +000A7ABF: lea rbx, [rax+0A8h] +000A7AC6: mov rax, [rbp+var_58] +000A7ACA: add rax, 8 +000A7ACE: mov rdi, rax +000A7AD1: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000A7AD6: mov rdx, [rbp+var_58] +000A7ADA: lea rdi, [rdx+80h] +000A7AE1: mov rcx, rbx +000A7AE4: mov edx, 2 +000A7AE9: mov esi, eax +000A7AEB: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000A7AF0: mov [rbp+var_11], al +000A7AF3: movzx eax, [rbp+var_11] +000A7AF7: mov rdx, [rbp+var_58] +000A7AFB: add rdx, 20h ; ' ' +000A7AFF: mov esi, eax +000A7B01: mov rdi, rdx +000A7B04: call __ZNSt6vectorIbSaIbEE9push_backEb; std::vector>::push_back(bool) +000A7B09: mov [rbp+var_31], 2 +000A7B0D: lea rcx, [rbp+var_31] +000A7B11: mov rax, [rbp+var_58] +000A7B15: mov edx, 1 +000A7B1A: mov rsi, rcx +000A7B1D: mov rdi, rax +000A7B20: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(nlohmann::detail::value_t &&,bool) +000A7B25: mov ecx, eax +000A7B27: mov rax, rdx +000A7B2A: mov [rbp+var_50], ecx +000A7B2D: mov [rbp+var_48], rax +000A7B31: mov rax, [rbp+var_58] +000A7B35: add rax, 8 +000A7B39: lea rdx, [rbp+var_50] +000A7B3D: add rdx, 8 +000A7B41: mov rsi, rdx +000A7B44: mov rdi, rax +000A7B47: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backERKS7_; std::vector>> *,std::allocator>> *>>::push_back(nlohmann::basic_json>> * const&) +000A7B4C: mov rax, [rbp+var_58] +000A7B50: add rax, 8 +000A7B54: mov rdi, rax +000A7B57: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7B5C: mov rax, [rax] +000A7B5F: test rax, rax +000A7B62: jz short loc_A7BA7 +000A7B64: cmp [rbp+var_60], 0FFFFFFFFFFFFFFFFh +000A7B69: jz short loc_A7B93 +000A7B6B: mov rax, [rbp+var_58] +000A7B6F: add rax, 8 +000A7B73: mov rdi, rax +000A7B76: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7B7B: mov rax, [rax] +000A7B7E: mov rdi, rax +000A7B81: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv; nlohmann::basic_json>>::max_size(void) +000A7B86: cmp rax, [rbp+var_60] +000A7B8A: jnb short loc_A7B93 +000A7B8C: mov eax, 1 +000A7B91: jmp short loc_A7B98 +000A7B93: mov eax, 0 +000A7B98: movzx eax, al +000A7B9B: test rax, rax +000A7B9E: jz short loc_A7BA7 +000A7BA0: mov eax, 1 +000A7BA5: jmp short loc_A7BAC +000A7BA7: mov eax, 0 +000A7BAC: test al, al +000A7BAE: jz short loc_A7C2F +000A7BB0: mov edi, 20h ; ' '; thrown_size +000A7BB5: call ___cxa_allocate_exception +000A7BBA: mov rbx, rax +000A7BBD: lea rax, [rbp+var_20] +000A7BC1: mov rdx, [rbp+var_60] +000A7BC5: mov rsi, rdx +000A7BC8: mov rdi, rax; unsigned __int64 +000A7BCB: call __ZSt9to_stringm; std::to_string(ulong) +000A7BD0: lea rax, [rbp+var_30] +000A7BD4: lea rdx, [rbp+var_20] +000A7BD8: lea rsi, aExcessiveArray; "excessive array size: " +000A7BDF: mov rdi, rax +000A7BE2: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A7BE7: lea rax, [rbp+var_30] +000A7BEB: mov rdx, rax; std::string * +000A7BEE: mov esi, 198h; int +000A7BF3: mov rdi, rbx; this +000A7BF6: call __ZN8nlohmann6detail12out_of_range6createEiRKSs; nlohmann::detail::out_of_range::create(int,std::string const&) +000A7BFB: lea rax, [rbp+var_30] +000A7BFF: mov rdi, rax; this +000A7C02: call __ZNSsD1Ev; std::string::~string() +000A7C07: lea rax, [rbp+var_20] +000A7C0B: mov rdi, rax; this +000A7C0E: call __ZNSsD1Ev; std::string::~string() +000A7C13: mov rax, cs:_ZN8nlohmann6detail12out_of_rangeD2Ev_ptr +000A7C1A: mov rdx, rax; void (__fastcall *)(void *) +000A7C1D: mov rax, cs:_ZTIN8nlohmann6detail12out_of_rangeE_ptr +000A7C24: mov rsi, rax; lptinfo +000A7C27: mov rdi, rbx; void * +000A7C2A: call ___cxa_throw +000A7C2F: mov eax, 1 +000A7C34: jmp short loc_A7C6E +000A7C36: mov r12, rax +000A7C39: lea rax, [rbp+var_30] +000A7C3D: mov rdi, rax; this +000A7C40: call __ZNSsD1Ev; std::string::~string() +000A7C45: jmp short loc_A7C4A +000A7C47: mov r12, rax +000A7C4A: lea rax, [rbp+var_20] +000A7C4E: mov rdi, rax; this +000A7C51: call __ZNSsD1Ev; std::string::~string() +000A7C56: jmp short loc_A7C5B +000A7C58: mov r12, rax +000A7C5B: mov rdi, rbx; void * +000A7C5E: call ___cxa_free_exception +000A7C63: mov rax, r12 +000A7C66: mov rdi, rax; struct _Unwind_Exception * +000A7C69: call __Unwind_Resume +000A7C6E: add rsp, 50h +000A7C72: pop rbx +000A7C73: pop r12 +000A7C75: pop rbp +000A7C76: retn + +### FUNC 000A7C78 - 000A7E5C (484 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +000A7C78: push rbp +000A7C79: mov rbp, rsp +000A7C7C: push rbx +000A7C7D: sub rsp, 38h +000A7C81: mov [rbp+var_38], rdi +000A7C85: mov [rbp+var_11], 1 +000A7C89: mov rax, [rbp+var_38] +000A7C8D: add rax, 8 +000A7C91: mov rdi, rax +000A7C94: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7C99: mov rax, [rax] +000A7C9C: test rax, rax +000A7C9F: setnz al +000A7CA2: test al, al +000A7CA4: jz loc_A7D3E +000A7CAA: mov rax, [rbp+var_38] +000A7CAE: add rax, 8 +000A7CB2: mov rdi, rax +000A7CB5: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7CBA: mov rbx, [rax] +000A7CBD: mov rax, [rbp+var_38] +000A7CC1: add rax, 8 +000A7CC5: mov rdi, rax +000A7CC8: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000A7CCD: lea esi, [rax-1] +000A7CD0: mov rax, [rbp+var_38] +000A7CD4: sub rax, 0FFFFFFFFFFFFFF80h +000A7CD8: mov rcx, rbx +000A7CDB: mov edx, 3 +000A7CE0: mov rdi, rax +000A7CE3: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000A7CE8: mov [rbp+var_11], al +000A7CEB: movzx eax, [rbp+var_11] +000A7CEF: xor eax, 1 +000A7CF2: test al, al +000A7CF4: jz short loc_A7D3E +000A7CF6: mov rax, [rbp+var_38] +000A7CFA: lea rdx, [rax+0A8h] +000A7D01: lea rax, [rbp+var_30] +000A7D05: mov rsi, rdx +000A7D08: mov rdi, rax +000A7D0B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +000A7D10: mov rax, [rbp+var_38] +000A7D14: add rax, 8 +000A7D18: mov rdi, rax +000A7D1B: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7D20: mov rax, [rax] +000A7D23: lea rdx, [rbp+var_30] +000A7D27: mov rsi, rdx +000A7D2A: mov rdi, rax +000A7D2D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000A7D32: lea rax, [rbp+var_30] +000A7D36: mov rdi, rax +000A7D39: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7D3E: mov rax, [rbp+var_38] +000A7D42: add rax, 8 +000A7D46: mov rdi, rax +000A7D49: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000A7D4E: test al, al +000A7D50: jz short loc_A7D71 +000A7D52: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEvE19__PRETTY_FUNCTION__; "bool nlohmann::detail::json_sax_dom_cal"... +000A7D59: mov edx, 1621h; line +000A7D5E: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000A7D65: lea rdi, aRefStackEmpty; "!ref_stack.empty()" +000A7D6C: call ___assert_fail +000A7D71: mov rax, [rbp+var_38] +000A7D75: add rax, 20h ; ' ' +000A7D79: mov rdi, rax +000A7D7C: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000A7D81: test al, al +000A7D83: jz short loc_A7DA4 +000A7D85: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEvE19__PRETTY_FUNCTION__; "bool nlohmann::detail::json_sax_dom_cal"... +000A7D8C: mov edx, 1622h; line +000A7D91: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000A7D98: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000A7D9F: call ___assert_fail +000A7DA4: mov rax, [rbp+var_38] +000A7DA8: add rax, 8 +000A7DAC: mov rdi, rax +000A7DAF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv; std::vector>> *,std::allocator>> *>>::pop_back(void) +000A7DB4: mov rax, [rbp+var_38] +000A7DB8: add rax, 20h ; ' ' +000A7DBC: mov rdi, rax +000A7DBF: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000A7DC4: movzx eax, [rbp+var_11] +000A7DC8: xor eax, 1 +000A7DCB: test al, al +000A7DCD: jz short loc_A7E0C +000A7DCF: mov rax, [rbp+var_38] +000A7DD3: add rax, 8 +000A7DD7: mov rdi, rax +000A7DDA: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000A7DDF: xor eax, 1 +000A7DE2: test al, al +000A7DE4: jz short loc_A7E0C +000A7DE6: mov rax, [rbp+var_38] +000A7DEA: add rax, 8 +000A7DEE: mov rdi, rax +000A7DF1: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7DF6: mov rax, [rax] +000A7DF9: mov rdi, rax +000A7DFC: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000A7E01: test al, al +000A7E03: jz short loc_A7E0C +000A7E05: mov eax, 1 +000A7E0A: jmp short loc_A7E11 +000A7E0C: mov eax, 0 +000A7E11: test al, al +000A7E13: jz short loc_A7E34 +000A7E15: mov rax, [rbp+var_38] +000A7E19: add rax, 8 +000A7E1D: mov rdi, rax +000A7E20: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A7E25: mov rax, [rax] +000A7E28: mov rax, [rax+8] +000A7E2C: mov rdi, rax +000A7E2F: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8pop_backEv; std::vector>>,std::allocator>>>>::pop_back(void) +000A7E34: mov eax, 1 +000A7E39: jmp short loc_A7E55 +000A7E3B: mov rbx, rax +000A7E3E: lea rax, [rbp+var_30] +000A7E42: mov rdi, rax +000A7E45: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000A7E4A: mov rax, rbx +000A7E4D: mov rdi, rax; struct _Unwind_Exception * +000A7E50: call __Unwind_Resume +000A7E55: add rsp, 38h +000A7E59: pop rbx +000A7E5A: pop rbp +000A7E5B: retn + +### FUNC 000A7E5C - 000A7E93 (55 bytes) name=_ZN8nlohmann6detail12out_of_rangeC2ERKS1_ +000A7E5C: push rbp; Alternative name is 'nlohmann::detail::out_of_range::out_of_range(nlohmann::detail::out_of_range const&)' +000A7E5D: mov rbp, rsp +000A7E60: sub rsp, 10h +000A7E64: mov [rbp+var_8], rdi +000A7E68: mov [rbp+var_10], rsi +000A7E6C: mov rdx, [rbp+var_10] +000A7E70: mov rax, [rbp+var_8] +000A7E74: mov rsi, rdx; nlohmann::detail::exception * +000A7E77: mov rdi, rax; this +000A7E7A: call __ZN8nlohmann6detail9exceptionC2ERKS1_; nlohmann::detail::exception::exception(nlohmann::detail::exception const&) +000A7E7F: mov rax, [rbp+var_8] +000A7E83: mov rdx, cs:_ZTVN8nlohmann6detail12out_of_rangeE_ptr +000A7E8A: lea rdx, [rdx+10h] +000A7E8E: mov [rax], rdx +000A7E91: leave +000A7E92: retn + +### FUNC 000A7E94 - 000A7F24 (144 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +000A7E94: push rbp +000A7E95: mov rbp, rsp +000A7E98: push r12 +000A7E9A: push rbx +000A7E9B: sub rsp, 20h +000A7E9F: mov [rbp+var_18], rdi +000A7EA3: mov [rbp+var_20], rsi +000A7EA7: mov [rbp+var_28], rdx +000A7EAB: mov [rbp+var_30], rcx +000A7EAF: mov rax, [rbp+var_18] +000A7EB3: mov byte ptr [rax+78h], 1 +000A7EB7: mov rax, [rbp+var_18] +000A7EBB: movzx eax, byte ptr [rax+0A0h] +000A7EC2: test al, al +000A7EC4: jz short loc_A7EFE +000A7EC6: mov edi, 20h ; ' '; thrown_size +000A7ECB: call ___cxa_allocate_exception +000A7ED0: mov rbx, rax +000A7ED3: mov rax, [rbp+var_30] +000A7ED7: mov rsi, rax; nlohmann::detail::out_of_range * +000A7EDA: mov rdi, rbx; this +000A7EDD: call __ZN8nlohmann6detail12out_of_rangeC2ERKS1_; nlohmann::detail::out_of_range::out_of_range(nlohmann::detail::out_of_range const&) +000A7EE2: mov rax, cs:_ZN8nlohmann6detail12out_of_rangeD2Ev_ptr +000A7EE9: mov rdx, rax; void (__fastcall *)(void *) +000A7EEC: mov rax, cs:_ZTIN8nlohmann6detail12out_of_rangeE_ptr +000A7EF3: mov rsi, rax; lptinfo +000A7EF6: mov rdi, rbx; void * +000A7EF9: call ___cxa_throw +000A7EFE: mov eax, 0 +000A7F03: jmp short loc_A7F1B +000A7F05: mov r12, rax +000A7F08: mov rdi, rbx; void * +000A7F0B: call ___cxa_free_exception +000A7F10: mov rax, r12 +000A7F13: mov rdi, rax; struct _Unwind_Exception * +000A7F16: call __Unwind_Resume +000A7F1B: add rsp, 20h +000A7F1F: pop rbx +000A7F20: pop r12 +000A7F22: pop rbp +000A7F23: retn + +### FUNC 000A7F24 - 000A7F5E (58 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +000A7F24: push rbp +000A7F25: mov rbp, rsp +000A7F28: sub rsp, 20h +000A7F2C: mov [rbp+var_8], rdi +000A7F30: movsd [rbp+var_10], xmm0 +000A7F35: mov [rbp+var_18], rsi +000A7F39: lea rcx, [rbp+var_10] +000A7F3D: mov rax, [rbp+var_8] +000A7F41: mov edx, 0 +000A7F46: mov rsi, rcx +000A7F49: mov rdi, rax +000A7F4C: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(double &,bool) +000A7F51: mov rcx, rdx +000A7F54: mov rdx, rcx +000A7F57: mov eax, 1 +000A7F5C: leave +000A7F5D: retn + +### FUNC 000A7F5E - 000A7F94 (54 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +000A7F5E: push rbp +000A7F5F: mov rbp, rsp +000A7F62: sub rsp, 10h +000A7F66: mov [rbp+var_8], rdi +000A7F6A: mov eax, esi +000A7F6C: mov [rbp+var_C], al +000A7F6F: lea rcx, [rbp+var_C] +000A7F73: mov rax, [rbp+var_8] +000A7F77: mov edx, 0 +000A7F7C: mov rsi, rcx +000A7F7F: mov rdi, rax +000A7F82: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(bool &,bool) +000A7F87: mov rcx, rdx +000A7F8A: mov rdx, rcx +000A7F8D: mov eax, 1 +000A7F92: leave +000A7F93: retn + +### FUNC 000A7F94 - 000A7FCD (57 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +000A7F94: push rbp +000A7F95: mov rbp, rsp +000A7F98: sub rsp, 20h +000A7F9C: mov [rbp+var_18], rdi +000A7FA0: mov [rbp+var_8], 0 +000A7FA8: lea rcx, [rbp+var_8] +000A7FAC: mov rax, [rbp+var_18] +000A7FB0: mov edx, 0 +000A7FB5: mov rsi, rcx +000A7FB8: mov rdi, rax +000A7FBB: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(decltype(nullptr) &&,bool) +000A7FC0: mov rcx, rdx +000A7FC3: mov rdx, rcx +000A7FC6: mov eax, 1 +000A7FCB: leave +000A7FCC: retn + +### FUNC 000A7FCE - 000A8003 (53 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +000A7FCE: push rbp +000A7FCF: mov rbp, rsp +000A7FD2: sub rsp, 10h +000A7FD6: mov [rbp+var_8], rdi +000A7FDA: mov [rbp+var_10], rsi +000A7FDE: lea rcx, [rbp+var_10] +000A7FE2: mov rax, [rbp+var_8] +000A7FE6: mov edx, 0 +000A7FEB: mov rsi, rcx +000A7FEE: mov rdi, rax +000A7FF1: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(long &,bool) +000A7FF6: mov rcx, rdx +000A7FF9: mov rdx, rcx +000A7FFC: mov eax, 1 +000A8001: leave +000A8002: retn + +### FUNC 000A8004 - 000A8039 (53 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +000A8004: push rbp +000A8005: mov rbp, rsp +000A8008: sub rsp, 10h +000A800C: mov [rbp+var_8], rdi +000A8010: mov [rbp+var_10], rsi +000A8014: mov rcx, [rbp+var_10] +000A8018: mov rax, [rbp+var_8] +000A801C: mov edx, 0 +000A8021: mov rsi, rcx +000A8024: mov rdi, rax +000A8027: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(std::string &,bool) +000A802C: mov rcx, rdx +000A802F: mov rdx, rcx +000A8032: mov eax, 1 +000A8037: leave +000A8038: retn + +### FUNC 000A803A - 000A806F (53 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +000A803A: push rbp +000A803B: mov rbp, rsp +000A803E: sub rsp, 10h +000A8042: mov [rbp+var_8], rdi +000A8046: mov [rbp+var_10], rsi +000A804A: lea rcx, [rbp+var_10] +000A804E: mov rax, [rbp+var_8] +000A8052: mov edx, 0 +000A8057: mov rsi, rcx +000A805A: mov rdi, rax +000A805D: call __ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_b; nlohmann::detail::json_sax_dom_callback_parser>>>::handle_value(ulong &,bool) +000A8062: mov rcx, rdx +000A8065: mov rdx, rcx +000A8068: mov eax, 1 +000A806D: leave +000A806E: retn + +### FUNC 000A8070 - 000A80C5 (85 bytes) name=_ZNKSt6vectorIbSaIbEE5emptyEv +000A8070: push rbp +000A8071: mov rbp, rsp +000A8074: sub rsp, 30h +000A8078: mov [rbp+var_28], rdi +000A807C: mov rax, [rbp+var_28] +000A8080: mov rdi, rax +000A8083: call __ZNKSt6vectorIbSaIbEE3endEv; std::vector>::end(void) +000A8088: mov rcx, rax +000A808B: mov rax, rdx +000A808E: mov [rbp+var_20], rcx +000A8092: mov [rbp+var_18], rax +000A8096: mov rax, [rbp+var_28] +000A809A: mov rdi, rax +000A809D: call __ZNKSt6vectorIbSaIbEE5beginEv; std::vector>::begin(void) +000A80A2: mov rcx, rax +000A80A5: mov rax, rdx +000A80A8: mov [rbp+var_10], rcx +000A80AC: mov [rbp+var_8], rax +000A80B0: lea rdx, [rbp+var_20] +000A80B4: lea rax, [rbp+var_10] +000A80B8: mov rsi, rdx +000A80BB: mov rdi, rax +000A80BE: call __ZNKSt18_Bit_iterator_baseeqERKS_; std::_Bit_iterator_base::operator==(std::_Bit_iterator_base const&) +000A80C3: leave +000A80C4: retn + +### FUNC 000A80C6 - 000A8119 (83 bytes) name=_ZNSt6vectorIbSaIbEE4backEv +000A80C6: push rbp +000A80C7: mov rbp, rsp +000A80CA: sub rsp, 30h +000A80CE: mov [rbp+var_28], rdi +000A80D2: mov rax, [rbp+var_28] +000A80D6: mov rdi, rax +000A80D9: call __ZNSt6vectorIbSaIbEE3endEv; std::vector>::end(void) +000A80DE: mov rcx, rax +000A80E1: mov rax, rdx +000A80E4: mov [rbp+var_10], rcx +000A80E8: mov [rbp+var_8], rax +000A80EC: lea rax, [rbp+var_10] +000A80F0: mov esi, 1 +000A80F5: mov rdi, rax +000A80F8: call __ZNKSt13_Bit_iteratormiEl; std::_Bit_iterator::operator-(long) +000A80FD: mov rcx, rax +000A8100: mov rax, rdx +000A8103: mov [rbp+var_20], rcx +000A8107: mov [rbp+var_18], rax +000A810B: lea rax, [rbp+var_20] +000A810F: mov rdi, rax +000A8112: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000A8117: leave +000A8118: retn + +### FUNC 000A811A - 000A8138 (30 bytes) name=_ZNSt6vectorIbSaIbEE8pop_backEv +000A811A: push rbp +000A811B: mov rbp, rsp +000A811E: sub rsp, 10h +000A8122: mov [rbp+var_8], rdi +000A8126: mov rax, [rbp+var_8] +000A812A: add rax, 10h +000A812E: mov rdi, rax +000A8131: call __ZNSt13_Bit_iteratormmEv; std::_Bit_iterator::operator--(void) +000A8136: leave +000A8137: retn + +### FUNC 000A8138 - 000A8151 (25 bytes) name=_ZNSt14__array_traitsIcLm9EE6_S_refERA9_Kcm +000A8138: push rbp +000A8139: mov rbp, rsp +000A813C: mov [rbp+var_8], rdi +000A8140: mov [rbp+var_10], rsi +000A8144: mov rax, [rbp+var_10] +000A8148: mov rdx, [rbp+var_8] +000A814C: add rax, rdx +000A814F: pop rbp +000A8150: retn + +### FUNC 000A8152 - 000A8179 (39 bytes) name=_ZNSt5arrayIcLm9EE4dataEv +000A8152: push rbp +000A8153: mov rbp, rsp +000A8156: sub rsp, 10h +000A815A: mov [rbp+var_8], rdi +000A815E: mov rax, [rbp+var_8] +000A8162: mov esi, 0 +000A8167: mov rdi, rax +000A816A: call __ZNSt14__array_traitsIcLm9EE6_S_refERA9_Kcm; std::__array_traits::_S_ref(char const(&)[9],ulong) +000A816F: mov rdi, rax +000A8172: call __ZSt11__addressofIcEPT_RS0_; std::__addressof(char&) +000A8177: leave +000A8178: retn + +### FUNC 000A8179 - 000A8241 (200 bytes) name=_ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15token_type_nameENS9_10token_typeE +000A8179: push rbp +000A817A: mov rbp, rsp +000A817D: mov [rbp+var_4], edi +000A8180: cmp [rbp+var_4], 10h; switch 17 cases +000A8184: ja def_A81AC; jumptable 00000000000A81AC default case +000A818A: mov eax, [rbp+var_4] +000A818D: lea rdx, ds:0[rax*4] +000A8195: lea rax, jpt_A81AC +000A819C: mov eax, ds:(jpt_A81AC - 0D3B20h)[rdx+rax] +000A819F: movsxd rdx, eax +000A81A2: lea rax, jpt_A81AC +000A81A9: add rax, rdx +000A81AC: jmp rax; switch jump +000A81AE: lea rax, aUninitialized; jumptable 00000000000A81AC case 0 +000A81B5: jmp loc_A823F +000A81BA: lea rax, aTrueLiteral; jumptable 00000000000A81AC case 1 +000A81C1: jmp short loc_A823F +000A81C3: lea rax, aFalseLiteral; jumptable 00000000000A81AC case 2 +000A81CA: jmp short loc_A823F +000A81CC: lea rax, aNullLiteral; jumptable 00000000000A81AC case 3 +000A81D3: jmp short loc_A823F +000A81D5: lea rax, aStringLiteral; jumptable 00000000000A81AC case 4 +000A81DC: jmp short loc_A823F +000A81DE: lea rax, aNumberLiteral; jumptable 00000000000A81AC cases 5-7 +000A81E5: jmp short loc_A823F +000A81E7: lea rax, asc_CECFB; jumptable 00000000000A81AC case 8 +000A81EE: jmp short loc_A823F +000A81F0: lea rax, asc_CECFF; jumptable 00000000000A81AC case 9 +000A81F7: jmp short loc_A823F +000A81F9: lea rax, asc_CED03; jumptable 00000000000A81AC case 10 +000A8200: jmp short loc_A823F +000A8202: lea rax, asc_CED07; jumptable 00000000000A81AC case 11 +000A8209: jmp short loc_A823F +000A820B: lea rax, asc_CED0B; jumptable 00000000000A81AC case 12 +000A8212: jmp short loc_A823F +000A8214: lea rax, asc_CED0F; jumptable 00000000000A81AC case 13 +000A821B: jmp short loc_A823F +000A821D: lea rax, aParseError_1; jumptable 00000000000A81AC case 14 +000A8224: jmp short loc_A823F +000A8226: lea rax, aEndOfInput; jumptable 00000000000A81AC case 15 +000A822D: jmp short loc_A823F +000A822F: lea rax, aOrALiteral; jumptable 00000000000A81AC case 16 +000A8236: jmp short loc_A823F +000A8238: lea rax, aUnknownToken; jumptable 00000000000A81AC default case +000A823F: pop rbp +000A8240: retn + +### FUNC 000A8242 - 000A838F (333 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12start_objectEm +000A8242: push rbp +000A8243: mov rbp, rsp +000A8246: push r12 +000A8248: push rbx +000A8249: sub rsp, 40h +000A824D: mov [rbp+var_48], rdi +000A8251: mov [rbp+var_50], rsi +000A8255: mov [rbp+var_31], 1 +000A8259: lea rdx, [rbp+var_31] +000A825D: mov rax, [rbp+var_48] +000A8261: mov rsi, rdx +000A8264: mov rdi, rax +000A8267: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(nlohmann::detail::value_t &&) +000A826C: mov [rbp+var_40], rax +000A8270: mov rax, [rbp+var_48] +000A8274: lea rdx, [rax+8] +000A8278: lea rax, [rbp+var_40] +000A827C: mov rsi, rax +000A827F: mov rdi, rdx +000A8282: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backEOS7_; std::vector>> *,std::allocator>> *>>::push_back(nlohmann::basic_json>> *&&) +000A8287: cmp [rbp+var_50], 0FFFFFFFFFFFFFFFFh +000A828C: jz short loc_A82B6 +000A828E: mov rax, [rbp+var_48] +000A8292: add rax, 8 +000A8296: mov rdi, rax +000A8299: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A829E: mov rax, [rax] +000A82A1: mov rdi, rax +000A82A4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv; nlohmann::basic_json>>::max_size(void) +000A82A9: cmp rax, [rbp+var_50] +000A82AD: jnb short loc_A82B6 +000A82AF: mov eax, 1 +000A82B4: jmp short loc_A82BB +000A82B6: mov eax, 0 +000A82BB: movzx eax, al +000A82BE: test rax, rax +000A82C1: setnz al +000A82C4: test al, al +000A82C6: jz short loc_A8347 +000A82C8: mov edi, 20h ; ' '; thrown_size +000A82CD: call ___cxa_allocate_exception +000A82D2: mov rbx, rax +000A82D5: lea rax, [rbp+var_20] +000A82D9: mov rdx, [rbp+var_50] +000A82DD: mov rsi, rdx +000A82E0: mov rdi, rax; unsigned __int64 +000A82E3: call __ZSt9to_stringm; std::to_string(ulong) +000A82E8: lea rax, [rbp+var_30] +000A82EC: lea rdx, [rbp+var_20] +000A82F0: lea rsi, aExcessiveObjec; "excessive object size: " +000A82F7: mov rdi, rax +000A82FA: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A82FF: lea rax, [rbp+var_30] +000A8303: mov rdx, rax; std::string * +000A8306: mov esi, 198h; int +000A830B: mov rdi, rbx; this +000A830E: call __ZN8nlohmann6detail12out_of_range6createEiRKSs; nlohmann::detail::out_of_range::create(int,std::string const&) +000A8313: lea rax, [rbp+var_30] +000A8317: mov rdi, rax; this +000A831A: call __ZNSsD1Ev; std::string::~string() +000A831F: lea rax, [rbp+var_20] +000A8323: mov rdi, rax; this +000A8326: call __ZNSsD1Ev; std::string::~string() +000A832B: mov rax, cs:_ZN8nlohmann6detail12out_of_rangeD2Ev_ptr +000A8332: mov rdx, rax; void (__fastcall *)(void *) +000A8335: mov rax, cs:_ZTIN8nlohmann6detail12out_of_rangeE_ptr +000A833C: mov rsi, rax; lptinfo +000A833F: mov rdi, rbx; void * +000A8342: call ___cxa_throw +000A8347: mov eax, 1 +000A834C: jmp short loc_A8386 +000A834E: mov r12, rax +000A8351: lea rax, [rbp+var_30] +000A8355: mov rdi, rax; this +000A8358: call __ZNSsD1Ev; std::string::~string() +000A835D: jmp short loc_A8362 +000A835F: mov r12, rax +000A8362: lea rax, [rbp+var_20] +000A8366: mov rdi, rax; this +000A8369: call __ZNSsD1Ev; std::string::~string() +000A836E: jmp short loc_A8373 +000A8370: mov r12, rax +000A8373: mov rdi, rbx; void * +000A8376: call ___cxa_free_exception +000A837B: mov rax, r12 +000A837E: mov rdi, rax; struct _Unwind_Exception * +000A8381: call __Unwind_Resume +000A8386: add rsp, 40h +000A838A: pop rbx +000A838B: pop r12 +000A838D: pop rbp +000A838E: retn + +### FUNC 000A8390 - 000A83B3 (35 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE10end_objectEv +000A8390: push rbp +000A8391: mov rbp, rsp +000A8394: sub rsp, 10h +000A8398: mov [rbp+var_8], rdi +000A839C: mov rax, [rbp+var_8] +000A83A0: add rax, 8 +000A83A4: mov rdi, rax +000A83A7: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv; std::vector>> *,std::allocator>> *>>::pop_back(void) +000A83AC: mov eax, 1 +000A83B1: leave +000A83B2: retn + +### FUNC 000A83B4 - 000A83F9 (69 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE3keyERSs +000A83B4: push rbp +000A83B5: mov rbp, rsp +000A83B8: sub rsp, 10h +000A83BC: mov [rbp+var_8], rdi +000A83C0: mov [rbp+var_10], rsi +000A83C4: mov rax, [rbp+var_8] +000A83C8: add rax, 8 +000A83CC: mov rdi, rax +000A83CF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A83D4: mov rax, [rax] +000A83D7: mov rax, [rax+8] +000A83DB: mov rdx, [rbp+var_10] +000A83DF: mov rsi, rdx +000A83E2: mov rdi, rax +000A83E5: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixERSA_; std::map>>,std::less,std::allocator>>>>>::operator[](std::string const&) +000A83EA: mov rdx, [rbp+var_8] +000A83EE: mov [rdx+20h], rax +000A83F2: mov eax, 1 +000A83F7: leave +000A83F8: retn + +### FUNC 000A83FA - 000A8547 (333 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11start_arrayEm +000A83FA: push rbp +000A83FB: mov rbp, rsp +000A83FE: push r12 +000A8400: push rbx +000A8401: sub rsp, 40h +000A8405: mov [rbp+var_48], rdi +000A8409: mov [rbp+var_50], rsi +000A840D: mov [rbp+var_31], 2 +000A8411: lea rdx, [rbp+var_31] +000A8415: mov rax, [rbp+var_48] +000A8419: mov rsi, rdx +000A841C: mov rdi, rax +000A841F: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(nlohmann::detail::value_t &&) +000A8424: mov [rbp+var_40], rax +000A8428: mov rax, [rbp+var_48] +000A842C: lea rdx, [rax+8] +000A8430: lea rax, [rbp+var_40] +000A8434: mov rsi, rax +000A8437: mov rdi, rdx +000A843A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backEOS7_; std::vector>> *,std::allocator>> *>>::push_back(nlohmann::basic_json>> *&&) +000A843F: cmp [rbp+var_50], 0FFFFFFFFFFFFFFFFh +000A8444: jz short loc_A846E +000A8446: mov rax, [rbp+var_48] +000A844A: add rax, 8 +000A844E: mov rdi, rax +000A8451: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000A8456: mov rax, [rax] +000A8459: mov rdi, rax +000A845C: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv; nlohmann::basic_json>>::max_size(void) +000A8461: cmp rax, [rbp+var_50] +000A8465: jnb short loc_A846E +000A8467: mov eax, 1 +000A846C: jmp short loc_A8473 +000A846E: mov eax, 0 +000A8473: movzx eax, al +000A8476: test rax, rax +000A8479: setnz al +000A847C: test al, al +000A847E: jz short loc_A84FF +000A8480: mov edi, 20h ; ' '; thrown_size +000A8485: call ___cxa_allocate_exception +000A848A: mov rbx, rax +000A848D: lea rax, [rbp+var_20] +000A8491: mov rdx, [rbp+var_50] +000A8495: mov rsi, rdx +000A8498: mov rdi, rax; unsigned __int64 +000A849B: call __ZSt9to_stringm; std::to_string(ulong) +000A84A0: lea rax, [rbp+var_30] +000A84A4: lea rdx, [rbp+var_20] +000A84A8: lea rsi, aExcessiveArray; "excessive array size: " +000A84AF: mov rdi, rax +000A84B2: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000A84B7: lea rax, [rbp+var_30] +000A84BB: mov rdx, rax; std::string * +000A84BE: mov esi, 198h; int +000A84C3: mov rdi, rbx; this +000A84C6: call __ZN8nlohmann6detail12out_of_range6createEiRKSs; nlohmann::detail::out_of_range::create(int,std::string const&) +000A84CB: lea rax, [rbp+var_30] +000A84CF: mov rdi, rax; this +000A84D2: call __ZNSsD1Ev; std::string::~string() +000A84D7: lea rax, [rbp+var_20] +000A84DB: mov rdi, rax; this +000A84DE: call __ZNSsD1Ev; std::string::~string() +000A84E3: mov rax, cs:_ZN8nlohmann6detail12out_of_rangeD2Ev_ptr +000A84EA: mov rdx, rax; void (__fastcall *)(void *) +000A84ED: mov rax, cs:_ZTIN8nlohmann6detail12out_of_rangeE_ptr +000A84F4: mov rsi, rax; lptinfo +000A84F7: mov rdi, rbx; void * +000A84FA: call ___cxa_throw +000A84FF: mov eax, 1 +000A8504: jmp short loc_A853E +000A8506: mov r12, rax +000A8509: lea rax, [rbp+var_30] +000A850D: mov rdi, rax; this +000A8510: call __ZNSsD1Ev; std::string::~string() +000A8515: jmp short loc_A851A +000A8517: mov r12, rax +000A851A: lea rax, [rbp+var_20] +000A851E: mov rdi, rax; this +000A8521: call __ZNSsD1Ev; std::string::~string() +000A8526: jmp short loc_A852B +000A8528: mov r12, rax +000A852B: mov rdi, rbx; void * +000A852E: call ___cxa_free_exception +000A8533: mov rax, r12 +000A8536: mov rdi, rax; struct _Unwind_Exception * +000A8539: call __Unwind_Resume +000A853E: add rsp, 40h +000A8542: pop rbx +000A8543: pop r12 +000A8545: pop rbp +000A8546: retn + +### FUNC 000A8548 - 000A856B (35 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE9end_arrayEv +000A8548: push rbp +000A8549: mov rbp, rsp +000A854C: sub rsp, 10h +000A8550: mov [rbp+var_8], rdi +000A8554: mov rax, [rbp+var_8] +000A8558: add rax, 8 +000A855C: mov rdi, rax +000A855F: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv; std::vector>> *,std::allocator>> *>>::pop_back(void) +000A8564: mov eax, 1 +000A8569: leave +000A856A: retn + +### FUNC 000A856C - 000A85F9 (141 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE11parse_errorINS0_12out_of_rangeEEEbmRKSsRKT_ +000A856C: push rbp +000A856D: mov rbp, rsp +000A8570: push r12 +000A8572: push rbx +000A8573: sub rsp, 20h +000A8577: mov [rbp+var_18], rdi +000A857B: mov [rbp+var_20], rsi +000A857F: mov [rbp+var_28], rdx +000A8583: mov [rbp+var_30], rcx +000A8587: mov rax, [rbp+var_18] +000A858B: mov byte ptr [rax+28h], 1 +000A858F: mov rax, [rbp+var_18] +000A8593: movzx eax, byte ptr [rax+29h] +000A8597: test al, al +000A8599: jz short loc_A85D3 +000A859B: mov edi, 20h ; ' '; thrown_size +000A85A0: call ___cxa_allocate_exception +000A85A5: mov rbx, rax +000A85A8: mov rax, [rbp+var_30] +000A85AC: mov rsi, rax; nlohmann::detail::out_of_range * +000A85AF: mov rdi, rbx; this +000A85B2: call __ZN8nlohmann6detail12out_of_rangeC2ERKS1_; nlohmann::detail::out_of_range::out_of_range(nlohmann::detail::out_of_range const&) +000A85B7: mov rax, cs:_ZN8nlohmann6detail12out_of_rangeD2Ev_ptr +000A85BE: mov rdx, rax; void (__fastcall *)(void *) +000A85C1: mov rax, cs:_ZTIN8nlohmann6detail12out_of_rangeE_ptr +000A85C8: mov rsi, rax; lptinfo +000A85CB: mov rdi, rbx; void * +000A85CE: call ___cxa_throw +000A85D3: mov eax, 0 +000A85D8: jmp short loc_A85F0 +000A85DA: mov r12, rax +000A85DD: mov rdi, rbx; void * +000A85E0: call ___cxa_free_exception +000A85E5: mov rax, r12 +000A85E8: mov rdi, rax; struct _Unwind_Exception * +000A85EB: call __Unwind_Resume +000A85F0: add rsp, 20h +000A85F4: pop rbx +000A85F5: pop r12 +000A85F7: pop rbp +000A85F8: retn + +### FUNC 000A85FA - 000A8629 (47 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12number_floatEdRKSs +000A85FA: push rbp +000A85FB: mov rbp, rsp +000A85FE: sub rsp, 20h +000A8602: mov [rbp+var_8], rdi +000A8606: movsd [rbp+var_10], xmm0 +000A860B: mov [rbp+var_18], rsi +000A860F: lea rdx, [rbp+var_10] +000A8613: mov rax, [rbp+var_8] +000A8617: mov rsi, rdx +000A861A: mov rdi, rax +000A861D: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(double &) +000A8622: mov eax, 1 +000A8627: leave +000A8628: retn + +### FUNC 000A862A - 000A8655 (43 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE7booleanEb +000A862A: push rbp +000A862B: mov rbp, rsp +000A862E: sub rsp, 10h +000A8632: mov [rbp+var_8], rdi +000A8636: mov eax, esi +000A8638: mov [rbp+var_C], al +000A863B: lea rdx, [rbp+var_C] +000A863F: mov rax, [rbp+var_8] +000A8643: mov rsi, rdx +000A8646: mov rdi, rax +000A8649: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(bool &) +000A864E: mov eax, 1 +000A8653: leave +000A8654: retn + +### FUNC 000A8656 - 000A8684 (46 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE4nullEv +000A8656: push rbp +000A8657: mov rbp, rsp +000A865A: sub rsp, 20h +000A865E: mov [rbp+var_18], rdi +000A8662: mov [rbp+var_8], 0 +000A866A: lea rdx, [rbp+var_8] +000A866E: mov rax, [rbp+var_18] +000A8672: mov rsi, rdx +000A8675: mov rdi, rax +000A8678: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(decltype(nullptr) &&) +000A867D: mov eax, 1 +000A8682: leave +000A8683: retn + +### FUNC 000A8684 - 000A86AE (42 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE14number_integerEl +000A8684: push rbp +000A8685: mov rbp, rsp +000A8688: sub rsp, 10h +000A868C: mov [rbp+var_8], rdi +000A8690: mov [rbp+var_10], rsi +000A8694: lea rdx, [rbp+var_10] +000A8698: mov rax, [rbp+var_8] +000A869C: mov rsi, rdx +000A869F: mov rdi, rax +000A86A2: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(long &) +000A86A7: mov eax, 1 +000A86AC: leave +000A86AD: retn + +### FUNC 000A86AE - 000A86D8 (42 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE6stringERSs +000A86AE: push rbp +000A86AF: mov rbp, rsp +000A86B2: sub rsp, 10h +000A86B6: mov [rbp+var_8], rdi +000A86BA: mov [rbp+var_10], rsi +000A86BE: mov rdx, [rbp+var_10] +000A86C2: mov rax, [rbp+var_8] +000A86C6: mov rsi, rdx +000A86C9: mov rdi, rax +000A86CC: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(std::string &) +000A86D1: mov eax, 1 +000A86D6: leave +000A86D7: retn + +### FUNC 000A86D8 - 000A8702 (42 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE15number_unsignedEm +000A86D8: push rbp +000A86D9: mov rbp, rsp +000A86DC: sub rsp, 10h +000A86E0: mov [rbp+var_8], rdi +000A86E4: mov [rbp+var_10], rsi +000A86E8: lea rdx, [rbp+var_10] +000A86EC: mov rax, [rbp+var_8] +000A86F0: mov rsi, rdx +000A86F3: mov rdi, rax +000A86F6: call __ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_; nlohmann::detail::json_sax_dom_parser>>>::handle_value(ulong &) +000A86FB: mov eax, 1 +000A8700: leave +000A8701: retn + +### FUNC 000A8702 - 000A873A (56 bytes) name=_ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000A8702: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISsEE9constructISsIRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_' +000A8703: mov rbp, rsp +000A8706: sub rsp, 20h +000A870A: mov [rbp+var_8], rdi +000A870E: mov [rbp+var_10], rsi +000A8712: mov [rbp+var_18], rdx +000A8716: mov rax, [rbp+var_18] +000A871A: mov rdi, rax +000A871D: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A8722: mov rdx, rax +000A8725: mov rcx, [rbp+var_10] +000A8729: mov rax, [rbp+var_8] +000A872D: mov rsi, rcx +000A8730: mov rdi, rax +000A8733: call __ZNSt16allocator_traitsISaISsEE12_S_constructISsJRKSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_; std::allocator_traits>::_S_construct(std::allocator&,std::string*,std::string const&&&) +000A8738: leave +000A8739: retn + +### FUNC 000A873A - 000A878E (84 bytes) name=_ZNSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEEC2ERKS4_RKS8_RKS9_RKSA_RKS6_ +000A873A: push rbp; Alternative name is 'std::__detail::_Hashtable_base, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Hashtable_traits>::_Hashtable_base(std::__detail::_Select1st const&, std::hash const&, std::__detail::_Mod_range_hashing const&, std::__detail::_Default_ranged_hash const&, std::equal_to const&)' +000A873B: mov rbp, rsp +000A873E: sub rsp, 30h +000A8742: mov [rbp+var_8], rdi +000A8746: mov [rbp+var_10], rsi +000A874A: mov [rbp+var_18], rdx +000A874E: mov [rbp+var_20], rcx +000A8752: mov [rbp+var_28], r8 +000A8756: mov [rbp+var_30], r9 +000A875A: mov rdi, [rbp+var_28] +000A875E: mov rcx, [rbp+var_20] +000A8762: mov rdx, [rbp+var_18] +000A8766: mov rsi, [rbp+var_10] +000A876A: mov rax, [rbp+var_8] +000A876E: mov r8, rdi +000A8771: mov rdi, rax +000A8774: call __ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEC2ERKS4_RKS6_RKS7_RKS8_; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_Hash_code_base(std::__detail::_Select1st const&,std::hash const&,std::__detail::_Mod_range_hashing const&,std::__detail::_Default_ranged_hash const&) +000A8779: mov rdx, [rbp+var_30] +000A877D: mov rax, [rbp+var_8] +000A8781: mov rsi, rdx +000A8784: mov rdi, rax +000A8787: call __ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EEC2ERKS2_; std::__detail::_Hashtable_ebo_helper<0,std::equal_to,true>::_Hashtable_ebo_helper(std::equal_to const&) +000A878C: leave +000A878D: retn + +### FUNC 000A878E - 000A879C (14 bytes) name=_ZSt7forwardIRKSaISt4pairIKSsiEEEOT_RNSt16remove_referenceIS6_E4typeE +000A878E: push rbp +000A878F: mov rbp, rsp +000A8792: mov [rbp+var_8], rdi +000A8796: mov rax, [rbp+var_8] +000A879A: pop rbp +000A879B: retn + +### FUNC 000A879C - 000A87D8 (60 bytes) name=_ZNSt8__detail13_Before_beginISaINS_10_Hash_nodeISt4pairIKSsiELb1EEEEEC2IRKSaIS4_EEEOT_ +000A879C: push rbp; Alternative name is 'std::__detail::_Before_begin, true>>>::_Before_begin> const&>(std::allocator> const&)' +000A879D: mov rbp, rsp +000A87A0: sub rsp, 10h +000A87A4: mov [rbp+var_8], rdi +000A87A8: mov [rbp+var_10], rsi +000A87AC: mov rax, [rbp+var_10] +000A87B0: mov rdi, rax +000A87B3: call __ZSt7forwardIRKSaISt4pairIKSsiEEEOT_RNSt16remove_referenceIS6_E4typeE; std::forward> const&>(std::remove_reference> const&>::type &) +000A87B8: mov rdx, rax +000A87BB: mov rax, [rbp+var_8] +000A87BF: mov rsi, rdx +000A87C2: mov rdi, rax +000A87C5: call __ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2IS3_EERKSaIT_E; std::allocator,true>>::allocator>(std::allocator> const&) +000A87CA: mov rax, [rbp+var_8] +000A87CE: mov rdi, rax; this +000A87D1: call __ZNSt8__detail15_Hash_node_baseC2Ev; std::__detail::_Hash_node_base::_Hash_node_base(void) +000A87D6: leave +000A87D7: retn + +### FUNC 000A87D8 - 000A8876 (158 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm +000A87D8: push rbp +000A87D9: mov rbp, rsp +000A87DC: push rbx +000A87DD: sub rsp, 28h +000A87E1: mov [rbp+var_28], rdi +000A87E5: mov [rbp+var_30], rsi +000A87E9: mov rax, [rbp+var_28] +000A87ED: mov rdi, rax +000A87F0: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +000A87F5: mov rdx, rax +000A87F8: lea rax, [rbp+var_19] +000A87FC: mov rsi, rdx +000A87FF: mov rdi, rax +000A8802: call __ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKSsiELb1EEEEERKSaIT_E; std::allocator::allocator,true>>(std::allocator,true>> const&) +000A8807: mov rcx, [rbp+var_30] +000A880B: lea rax, [rbp+var_19] +000A880F: mov edx, 0 +000A8814: mov rsi, rcx +000A8817: mov rdi, rax +000A881A: call __ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000A881F: mov [rbp+s], rax +000A8823: mov rax, [rbp+var_30] +000A8827: lea rdx, ds:0[rax*8]; n +000A882F: mov rax, [rbp+s] +000A8833: mov esi, 0; c +000A8838: mov rdi, rax; s +000A883B: call _memset +000A8840: mov rbx, [rbp+s] +000A8844: lea rax, [rbp+var_19] +000A8848: mov rdi, rax +000A884B: call __ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev; std::allocator::~allocator() +000A8850: mov rax, rbx +000A8853: jmp short loc_A886F +000A8855: mov rbx, rax +000A8858: lea rax, [rbp+var_19] +000A885C: mov rdi, rax +000A885F: call __ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev; std::allocator::~allocator() +000A8864: mov rax, rbx +000A8867: mov rdi, rax; struct _Unwind_Exception * +000A886A: call __Unwind_Resume +000A886F: add rsp, 28h +000A8873: pop rbx +000A8874: pop rbp +000A8875: retn + +### FUNC 000A8876 - 000A8887 (17 bytes) name=_ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv +000A8876: push rbp +000A8877: mov rbp, rsp +000A887A: mov [rbp+var_8], rdi +000A887E: mov rax, [rbp+var_8] +000A8882: mov rax, [rax] +000A8885: pop rbp +000A8886: retn + +### FUNC 000A8888 - 000A88D5 (77 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE18_M_deallocate_nodeEPNS4_10_Hash_nodeIS2_Lb1EEE +000A8888: push rbp +000A8889: mov rbp, rsp +000A888C: sub rsp, 10h +000A8890: mov [rbp+var_8], rdi +000A8894: mov [rbp+var_10], rsi +000A8898: mov rax, [rbp+var_8] +000A889C: mov rdi, rax +000A889F: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +000A88A4: mov rdx, [rbp+var_10] +000A88A8: mov rsi, rdx +000A88AB: mov rdi, rax +000A88AE: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE7destroyIS6_EEvPT_; __gnu_cxx::new_allocator,true>>::destroy,true>>(std::__detail::_Hash_node,true> *) +000A88B3: mov rax, [rbp+var_8] +000A88B7: mov rdi, rax +000A88BA: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE17_M_node_allocatorEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_node_allocator(void) +000A88BF: mov rcx, [rbp+var_10] +000A88C3: mov edx, 1 +000A88C8: mov rsi, rcx +000A88CB: mov rdi, rax +000A88CE: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE10deallocateEPS6_m; __gnu_cxx::new_allocator,true>>::deallocate(std::__detail::_Hash_node,true>*,ulong) +000A88D3: leave +000A88D4: retn + +### FUNC 000A88D6 - 000A88E8 (18 bytes) name=_ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv +000A88D6: push rbp +000A88D7: mov rbp, rsp +000A88DA: mov [rbp+var_8], rdi +000A88DE: mov rax, [rbp+var_8] +000A88E2: add rax, 10h +000A88E6: pop rbp +000A88E7: retn + +### FUNC 000A88E8 - 000A88F2 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev +000A88E8: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000A88E9: mov rbp, rsp +000A88EC: mov [rbp+var_8], rdi +000A88F0: pop rbp +000A88F1: retn + +### FUNC 000A88F2 - 000A88FC (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev +000A88F2: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000A88F3: mov rbp, rsp +000A88F6: mov [rbp+var_8], rdi +000A88FA: pop rbp +000A88FB: retn + +### FUNC 000A88FC - 000A8916 (26 bytes) name=_ZNSaI19struct_TerminalListEC2Ev +000A88FC: push rbp; Alternative name is 'std::allocator::allocator(void)' +000A88FD: mov rbp, rsp +000A8900: sub rsp, 10h +000A8904: mov [rbp+var_8], rdi +000A8908: mov rax, [rbp+var_8] +000A890C: mov rdi, rax +000A890F: call __ZN9__gnu_cxx13new_allocatorI19struct_TerminalListEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000A8914: leave +000A8915: retn + +### FUNC 000A8916 - 000A8920 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorI19struct_TerminalListED2Ev +000A8916: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000A8917: mov rbp, rsp +000A891A: mov [rbp+var_8], rdi +000A891E: pop rbp +000A891F: retn + +### FUNC 000A8920 - 000A8942 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE10deallocateEPS1_m +000A8920: push rbp +000A8921: mov rbp, rsp +000A8924: sub rsp, 20h +000A8928: mov [rbp+var_8], rdi +000A892C: mov [rbp+var_10], rsi +000A8930: mov [rbp+var_18], rdx +000A8934: mov rax, [rbp+var_10] +000A8938: mov rdi, rax; void * +000A893B: call __ZdlPv; operator delete(void *) +000A8940: leave +000A8941: retn + +### FUNC 000A8942 - 000A8950 (14 bytes) name=_ZNSt12_Destroy_auxILb1EE9__destroyIP19struct_TerminalListEEvT_S4_ +000A8942: push rbp +000A8943: mov rbp, rsp +000A8946: mov [rbp+var_8], rdi +000A894A: mov [rbp+var_10], rsi +000A894E: pop rbp +000A894F: retn + +### FUNC 000A8950 - 000A8975 (37 bytes) name=_ZSt25__uninitialized_default_nIP19struct_TerminalListmEvT_T0_ +000A8950: push rbp +000A8951: mov rbp, rsp +000A8954: sub rsp, 10h +000A8958: mov [rbp+var_8], rdi +000A895C: mov [rbp+var_10], rsi +000A8960: mov rdx, [rbp+var_10] +000A8964: mov rax, [rbp+var_8] +000A8968: mov rsi, rdx +000A896B: mov rdi, rax +000A896E: call __ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIP19struct_TerminalListmEEvT_T0_; std::__uninitialized_default_n_1::__uninit_default_n(struct_TerminalList *,ulong) +000A8973: leave +000A8974: retn + +### FUNC 000A8976 - 000A8998 (34 bytes) name=_ZNKSt6vectorI19struct_TerminalListSaIS0_EE8max_sizeEv +000A8976: push rbp +000A8977: mov rbp, rsp +000A897A: sub rsp, 10h +000A897E: mov [rbp+var_8], rdi +000A8982: mov rax, [rbp+var_8] +000A8986: mov rdi, rax +000A8989: call __ZNKSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000A898E: mov rdi, rax +000A8991: call __ZNSt16allocator_traitsISaI19struct_TerminalListEE8max_sizeERKS1_; std::allocator_traits>::max_size(std::allocator const&) +000A8996: leave +000A8997: retn + +### FUNC 000A8998 - 000A89E7 (79 bytes) name=_ZN9__gnu_cxx13new_allocatorI19struct_TerminalListE8allocateEmPKv +000A8998: push rbp +000A8999: mov rbp, rsp +000A899C: sub rsp, 20h +000A89A0: mov [rbp+var_8], rdi +000A89A4: mov [rbp+var_10], rsi +000A89A8: mov [rbp+var_18], rdx +000A89AC: mov rax, [rbp+var_8] +000A89B0: mov rdi, rax +000A89B3: call __ZNK9__gnu_cxx13new_allocatorI19struct_TerminalListE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000A89B8: cmp rax, [rbp+var_10] +000A89BC: setb al +000A89BF: test al, al +000A89C1: jz short loc_A89C8 +000A89C3: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000A89C8: mov rax, [rbp+var_10] +000A89CC: shl rax, 2 +000A89D0: mov rdx, rax +000A89D3: shl rdx, 4 +000A89D7: sub rdx, rax +000A89DA: mov rax, rdx +000A89DD: mov rdi, rax; unsigned __int64 +000A89E0: call __Znwm; operator new(ulong) +000A89E5: leave +000A89E6: retn + +### FUNC 000A89E7 - 000A8A0C (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIP19struct_TerminalListSt13move_iteratorIS1_EET0_T_ +000A89E7: push rbp +000A89E8: mov rbp, rsp +000A89EB: sub rsp, 20h +000A89EF: mov [rbp+var_18], rdi +000A89F3: mov rdx, [rbp+var_18] +000A89F7: lea rax, [rbp+var_10] +000A89FB: mov rsi, rdx +000A89FE: mov rdi, rax +000A8A01: call __ZNSt13move_iteratorIP19struct_TerminalListEC2ES1_; std::move_iterator::move_iterator(struct_TerminalList *) +000A8A06: mov rax, [rbp+var_10] +000A8A0A: leave +000A8A0B: retn + +### FUNC 000A8A0C - 000A8A3D (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIP19struct_TerminalListES2_S1_ET0_T_S5_S4_RSaIT1_E +000A8A0C: push rbp +000A8A0D: mov rbp, rsp +000A8A10: sub rsp, 20h +000A8A14: mov [rbp+var_10], rdi +000A8A18: mov [rbp+var_20], rsi +000A8A1C: mov [rbp+var_18], rdx +000A8A20: mov [rbp+var_8], rcx +000A8A24: mov rdx, [rbp+var_18] +000A8A28: mov rcx, [rbp+var_20] +000A8A2C: mov rax, [rbp+var_10] +000A8A30: mov rsi, rcx +000A8A33: mov rdi, rax +000A8A36: call __ZSt18uninitialized_copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_; std::uninitialized_copy,struct_TerminalList *>(std::move_iterator,std::move_iterator,struct_TerminalList *) +000A8A3B: leave +000A8A3C: retn + +### FUNC 000A8A3E - 000A8A48 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEED2Ev +000A8A3E: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000A8A3F: mov rbp, rsp +000A8A42: mov [rbp+var_8], rdi +000A8A46: pop rbp +000A8A47: retn + +### FUNC 000A8A48 - 000A8A6A (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE10deallocateEPS2_m +000A8A48: push rbp +000A8A49: mov rbp, rsp +000A8A4C: sub rsp, 20h +000A8A50: mov [rbp+var_8], rdi +000A8A54: mov [rbp+var_10], rsi +000A8A58: mov [rbp+var_18], rdx +000A8A5C: mov rax, [rbp+var_10] +000A8A60: mov rdi, rax; void * +000A8A63: call __ZdlPv; operator delete(void *) +000A8A68: leave +000A8A69: retn + +### FUNC 000A8A6A - 000A8AA1 (55 bytes) name=_ZNSt12_Destroy_auxILb0EE9__destroyIPN6serial8PortInfoEEEvT_S5_ +000A8A6A: push rbp +000A8A6B: mov rbp, rsp +000A8A6E: sub rsp, 10h +000A8A72: mov [rbp+var_8], rdi +000A8A76: mov [rbp+var_10], rsi +000A8A7A: jmp short loc_A8A95 +000A8A7C: mov rax, [rbp+var_8] +000A8A80: mov rdi, rax +000A8A83: call __ZSt11__addressofIN6serial8PortInfoEEPT_RS2_; std::__addressof(serial::PortInfo&) +000A8A88: mov rdi, rax +000A8A8B: call __ZSt8_DestroyIN6serial8PortInfoEEvPT_; std::_Destroy(serial::PortInfo *) +000A8A90: add [rbp+var_8], 18h +000A8A95: mov rax, [rbp+var_8] +000A8A99: cmp rax, [rbp+var_10] +000A8A9D: jnz short loc_A8A7C +000A8A9F: leave +000A8AA0: retn + +### FUNC 000A8AA1 - 000A8ACA (41 bytes) name=_ZNSt16allocator_traitsISaIhEE9_S_selectIKS0_EENSt9enable_ifIXntsrNS1_15__select_helperIT_EE5valueES6_E4typeERS6_ +000A8AA1: push rbp +000A8AA2: mov rbp, rsp +000A8AA5: sub rsp, 10h +000A8AA9: mov [rbp+var_8], rdi +000A8AAD: mov [rbp+var_10], rsi +000A8AB1: mov rdx, [rbp+var_10] +000A8AB5: mov rax, [rbp+var_8] +000A8AB9: mov rsi, rdx +000A8ABC: mov rdi, rax +000A8ABF: call __ZNSaIhEC2ERKS_; std::allocator::allocator(std::allocator const&) +000A8AC4: mov rax, [rbp+var_8] +000A8AC8: leave +000A8AC9: retn + +### FUNC 000A8ACA - 000A8AD8 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIhEC2ERKS1_ +000A8ACA: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(__gnu_cxx::new_allocator const&)' +000A8ACB: mov rbp, rsp +000A8ACE: mov [rbp+var_8], rdi +000A8AD2: mov [rbp+var_10], rsi +000A8AD6: pop rbp +000A8AD7: retn + +### FUNC 000A8AD8 - 000A8AE6 (14 bytes) name=_ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_ +000A8AD8: push rbp +000A8AD9: mov rbp, rsp +000A8ADC: mov [rbp+var_8], rdi +000A8AE0: mov rax, [rbp+var_8] +000A8AE4: pop rbp +000A8AE5: retn + +### FUNC 000A8AE6 - 000A8B36 (80 bytes) name=_ZN8nlohmann6detail30iterator_input_adapter_factoryIPhvE6createES2_S2_ +000A8AE6: push rbp +000A8AE7: mov rbp, rsp +000A8AEA: push rbx +000A8AEB: sub rsp, 28h +000A8AEF: mov [rbp+var_28], rdi +000A8AF3: mov [rbp+var_30], rsi +000A8AF7: lea rax, [rbp+var_30] +000A8AFB: mov rdi, rax +000A8AFE: call __ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_; std::move(uchar *&&&) +000A8B03: mov rbx, [rax] +000A8B06: lea rax, [rbp+var_28] +000A8B0A: mov rdi, rax +000A8B0D: call __ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_; std::move(uchar *&&&) +000A8B12: mov rcx, [rax] +000A8B15: lea rax, [rbp+var_20] +000A8B19: mov rdx, rbx +000A8B1C: mov rsi, rcx +000A8B1F: mov rdi, rax +000A8B22: call __ZN8nlohmann6detail22iterator_input_adapterIPhEC2ES2_S2_; nlohmann::detail::iterator_input_adapter::iterator_input_adapter(uchar *,uchar *) +000A8B27: mov rax, [rbp+var_20] +000A8B2B: mov rdx, [rbp+var_18] +000A8B2F: add rsp, 28h +000A8B33: pop rbx +000A8B34: pop rbp +000A8B35: retn + +### FUNC 000A8B36 - 000A8B43 (13 bytes) name=_ZN9__gnu_cxx11char_traitsIhE3eofEv +000A8B36: push rbp +000A8B37: mov rbp, rsp +000A8B3A: mov rax, 0FFFFFFFFFFFFFFFFh +000A8B41: pop rbp +000A8B42: retn + +### FUNC 000A8B44 - 000A8C67 (291 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEEC2EOSB_b +000A8B44: push rbp; Alternative name is 'nlohmann::detail::lexer>>, nlohmann::detail::iterator_input_adapter>::lexer(nlohmann::detail::iterator_input_adapter&&, bool)' +000A8B45: mov rbp, rsp +000A8B48: push rbx +000A8B49: sub rsp, 28h +000A8B4D: mov [rbp+var_18], rdi +000A8B51: mov [rbp+var_20], rsi +000A8B55: mov eax, edx +000A8B57: mov [rbp+var_24], al +000A8B5A: mov rax, [rbp+var_18] +000A8B5E: mov rdi, rax +000A8B61: call __ZN8nlohmann6detail10lexer_baseINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEC2Ev; nlohmann::detail::lexer_base>>>::lexer_base(void) +000A8B66: mov rax, [rbp+var_20] +000A8B6A: mov rdi, rax +000A8B6D: call __ZSt4moveIRN8nlohmann6detail22iterator_input_adapterIPhEEEONSt16remove_referenceIT_E4typeEOS7_; std::move &>(nlohmann::detail::iterator_input_adapter &&&) +000A8B72: mov rcx, [rbp+var_18] +000A8B76: mov rdx, [rax+8] +000A8B7A: mov rax, [rax] +000A8B7D: mov [rcx], rax +000A8B80: mov [rcx+8], rdx +000A8B84: mov rax, [rbp+var_18] +000A8B88: movzx edx, [rbp+var_24] +000A8B8C: mov [rax+10h], dl +000A8B8F: call __ZN9__gnu_cxx11char_traitsIhE3eofEv; __gnu_cxx::char_traits::eof(void) +000A8B94: mov rdx, [rbp+var_18] +000A8B98: mov [rdx+18h], rax +000A8B9C: mov rax, [rbp+var_18] +000A8BA0: mov byte ptr [rax+20h], 0 +000A8BA4: mov rax, [rbp+var_18] +000A8BA8: mov qword ptr [rax+28h], 0 +000A8BB0: mov rax, [rbp+var_18] +000A8BB4: mov qword ptr [rax+30h], 0 +000A8BBC: mov rax, [rbp+var_18] +000A8BC0: mov qword ptr [rax+38h], 0 +000A8BC8: mov rax, [rbp+var_18] +000A8BCC: add rax, 28h ; '(' +000A8BD0: mov rdi, rax; this +000A8BD3: call __ZN8nlohmann6detail10position_tC2Ev; nlohmann::detail::position_t::position_t(void) +000A8BD8: mov rax, [rbp+var_18] +000A8BDC: add rax, 40h ; '@' +000A8BE0: mov rdi, rax +000A8BE3: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000A8BE8: mov rax, [rbp+var_18] +000A8BEC: add rax, 58h ; 'X' +000A8BF0: mov rdi, rax; this +000A8BF3: call __ZNSsC1Ev; std::string::string(void) +000A8BF8: mov rax, [rbp+var_18] +000A8BFC: lea rdx, unk_CE84D +000A8C03: mov [rax+60h], rdx +000A8C07: mov rax, [rbp+var_18] +000A8C0B: mov qword ptr [rax+68h], 0 +000A8C13: mov rax, [rbp+var_18] +000A8C17: mov qword ptr [rax+70h], 0 +000A8C1F: mov rdx, [rbp+var_18] +000A8C23: mov eax, 0 +000A8C28: mov [rdx+78h], rax +000A8C2C: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_decimal_pointEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_decimal_point(void) +000A8C31: movsx rdx, al +000A8C35: mov rax, [rbp+var_18] +000A8C39: mov [rax+80h], rdx +000A8C40: jmp short loc_A8C60 +000A8C42: mov rbx, rax +000A8C45: mov rax, [rbp+var_18] +000A8C49: add rax, 40h ; '@' +000A8C4D: mov rdi, rax +000A8C50: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000A8C55: mov rax, rbx +000A8C58: mov rdi, rax; struct _Unwind_Exception * +000A8C5B: call __Unwind_Resume +000A8C60: add rsp, 28h +000A8C64: pop rbx +000A8C65: pop rbp +000A8C66: retn + +### FUNC 000A8C68 - 000A8C7A (18 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE10get_stringEv +000A8C68: push rbp +000A8C69: mov rbp, rsp +000A8C6C: mov [rbp+var_8], rdi +000A8C70: mov rax, [rbp+var_8] +000A8C74: add rax, 58h ; 'X' +000A8C78: pop rbp +000A8C79: retn + +### FUNC 000A8C7A - 000A8C95 (27 bytes) name=_ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE16get_number_floatEv +000A8C7A: push rbp +000A8C7B: mov rbp, rsp +000A8C7E: mov [rbp+var_8], rdi +000A8C82: mov rax, [rbp+var_8] +000A8C86: mov rax, [rax+78h] +000A8C8A: mov [rbp+var_10], rax +000A8C8E: movsd xmm0, [rbp+var_10] +000A8C93: pop rbp +000A8C94: retn + +### FUNC 000A8C96 - 000A8CA8 (18 bytes) name=_ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18get_number_integerEv +000A8C96: push rbp +000A8C97: mov rbp, rsp +000A8C9A: mov [rbp+var_8], rdi +000A8C9E: mov rax, [rbp+var_8] +000A8CA2: mov rax, [rax+68h] +000A8CA6: pop rbp +000A8CA7: retn + +### FUNC 000A8CA8 - 000A8CBA (18 bytes) name=_ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE19get_number_unsignedEv +000A8CA8: push rbp +000A8CA9: mov rbp, rsp +000A8CAC: mov [rbp+var_8], rdi +000A8CB0: mov rax, [rbp+var_8] +000A8CB4: mov rax, [rax+70h] +000A8CB8: pop rbp +000A8CB9: retn + +### FUNC 000A8CBA - 000A8CC9 (15 bytes) name=_ZNKSt5arrayIhLm4EE4sizeEv +000A8CBA: push rbp +000A8CBB: mov rbp, rsp +000A8CBE: mov [rbp+var_8], rdi +000A8CC2: mov eax, 4 +000A8CC7: pop rbp +000A8CC8: retn + +### FUNC 000A8CCA - 000A8CD9 (15 bytes) name=_ZNKSt5arrayIhLm5EE4sizeEv +000A8CCA: push rbp +000A8CCB: mov rbp, rsp +000A8CCE: mov [rbp+var_8], rdi +000A8CD2: mov eax, 5 +000A8CD7: pop rbp +000A8CD8: retn + +### FUNC 000A8CDA - 000A8F7D (675 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE4scanEv +000A8CDA: push rbp +000A8CDB: mov rbp, rsp +000A8CDE: push rbx +000A8CDF: sub rsp, 48h +000A8CE3: mov [rbp+var_48], rdi +000A8CE7: mov rax, [rbp+var_48] +000A8CEB: mov rax, [rax+28h] +000A8CEF: test rax, rax +000A8CF2: jnz short loc_A8D0E +000A8CF4: mov rax, [rbp+var_48] +000A8CF8: mov rdi, rax +000A8CFB: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE8skip_bomEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::skip_bom(void) +000A8D00: xor eax, 1 +000A8D03: test al, al +000A8D05: jz short loc_A8D0E +000A8D07: mov eax, 1 +000A8D0C: jmp short loc_A8D13 +000A8D0E: mov eax, 0 +000A8D13: test al, al +000A8D15: jz short loc_A8D30 +000A8D17: mov rax, [rbp+var_48] +000A8D1B: lea rdx, aInvalidBomMust; "invalid BOM; must be 0xEF 0xBB 0xBF if "... +000A8D22: mov [rax+60h], rdx +000A8D26: mov eax, 0Eh +000A8D2B: jmp loc_A8F76 +000A8D30: mov rax, [rbp+var_48] +000A8D34: mov rdi, rax +000A8D37: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE15skip_whitespaceEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::skip_whitespace(void) +000A8D3C: jmp short loc_A8D67 +000A8D3E: mov rax, [rbp+var_48] +000A8D42: mov rdi, rax +000A8D45: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_commentEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan_comment(void) +000A8D4A: xor eax, 1 +000A8D4D: test al, al +000A8D4F: jz short loc_A8D5B +000A8D51: mov eax, 0Eh +000A8D56: jmp loc_A8F76 +000A8D5B: mov rax, [rbp+var_48] +000A8D5F: mov rdi, rax +000A8D62: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE15skip_whitespaceEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::skip_whitespace(void) +000A8D67: mov rax, [rbp+var_48] +000A8D6B: movzx eax, byte ptr [rax+10h] +000A8D6F: test al, al +000A8D71: jz short loc_A8D81 +000A8D73: mov rax, [rbp+var_48] +000A8D77: mov rax, [rax+18h] +000A8D7B: cmp rax, 2Fh ; '/' +000A8D7F: jz short loc_A8D3E +000A8D81: mov rax, [rbp+var_48] +000A8D85: mov rax, [rax+18h] +000A8D89: cmp rax, 5Bh ; '[' +000A8D8D: jz loc_A8E30 +000A8D93: cmp rax, 5Bh ; '[' +000A8D97: ja short loc_A8DEA +000A8D99: cmp rax, 2Dh ; '-' +000A8D9D: jz loc_A8F4D +000A8DA3: cmp rax, 2Dh ; '-' +000A8DA7: ja short loc_A8DCB +000A8DA9: cmp rax, 22h ; '"' +000A8DAD: jz loc_A8F3F +000A8DB3: cmp rax, 2Ch ; ',' +000A8DB7: jz loc_A8E62 +000A8DBD: test rax, rax +000A8DC0: jz loc_A8F5B +000A8DC6: jmp loc_A8F62 +000A8DCB: cmp rax, 30h ; '0' +000A8DCF: jb loc_A8F62 +000A8DD5: cmp rax, 39h ; '9' +000A8DD9: jbe loc_A8F4D +000A8DDF: cmp rax, 3Ah ; ':' +000A8DE3: jz short loc_A8E58 +000A8DE5: jmp loc_A8F62 +000A8DEA: cmp rax, 74h ; 't' +000A8DEE: jz short loc_A8E6C +000A8DF0: cmp rax, 74h ; 't' +000A8DF4: ja short loc_A8E15 +000A8DF6: cmp rax, 66h ; 'f' +000A8DFA: jz loc_A8EB3 +000A8E00: cmp rax, 6Eh ; 'n' +000A8E04: jz loc_A8EFB +000A8E0A: cmp rax, 5Dh ; ']' +000A8E0E: jz short loc_A8E3A +000A8E10: jmp loc_A8F62 +000A8E15: cmp rax, 7Dh ; '}' +000A8E19: jz short loc_A8E4E +000A8E1B: cmp rax, 0FFFFFFFFFFFFFFFFh +000A8E1F: jz loc_A8F5B +000A8E25: cmp rax, 7Bh ; '{' +000A8E29: jz short loc_A8E44 +000A8E2B: jmp loc_A8F62 +000A8E30: mov eax, 8 +000A8E35: jmp loc_A8F76 +000A8E3A: mov eax, 0Ah +000A8E3F: jmp loc_A8F76 +000A8E44: mov eax, 9 +000A8E49: jmp loc_A8F76 +000A8E4E: mov eax, 0Bh +000A8E53: jmp loc_A8F76 +000A8E58: mov eax, 0Ch +000A8E5D: jmp loc_A8F76 +000A8E62: mov eax, 0Dh +000A8E67: jmp loc_A8F76 +000A8E6C: mov [rbp+var_20], 74h ; 't' +000A8E70: mov [rbp+var_1F], 72h ; 'r' +000A8E74: mov [rbp+var_1E], 75h ; 'u' +000A8E78: mov [rbp+var_1D], 65h ; 'e' +000A8E7C: lea rax, [rbp+var_20] +000A8E80: mov rdi, rax +000A8E83: call __ZNKSt5arrayIhLm4EE4sizeEv; std::array::size(void) +000A8E88: mov rbx, rax +000A8E8B: lea rax, [rbp+var_20] +000A8E8F: mov rdi, rax +000A8E92: call __ZNSt5arrayIhLm4EE4dataEv; std::array::data(void) +000A8E97: mov rsi, rax +000A8E9A: mov rax, [rbp+var_48] +000A8E9E: mov ecx, 1 +000A8EA3: mov rdx, rbx +000A8EA6: mov rdi, rax +000A8EA9: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan_literal(uchar const*,ulong,nlohmann::detail::lexer_base>>>::token_type) +000A8EAE: jmp loc_A8F76 +000A8EB3: mov [rbp+var_30], 66h ; 'f' +000A8EB7: mov [rbp+var_2F], 61h ; 'a' +000A8EBB: mov [rbp+var_2E], 6Ch ; 'l' +000A8EBF: mov [rbp+var_2D], 73h ; 's' +000A8EC3: mov [rbp+var_2C], 65h ; 'e' +000A8EC7: lea rax, [rbp+var_30] +000A8ECB: mov rdi, rax +000A8ECE: call __ZNKSt5arrayIhLm5EE4sizeEv; std::array::size(void) +000A8ED3: mov rbx, rax +000A8ED6: lea rax, [rbp+var_30] +000A8EDA: mov rdi, rax +000A8EDD: call __ZNSt5arrayIhLm5EE4dataEv; std::array::data(void) +000A8EE2: mov rsi, rax +000A8EE5: mov rax, [rbp+var_48] +000A8EE9: mov ecx, 2 +000A8EEE: mov rdx, rbx +000A8EF1: mov rdi, rax +000A8EF4: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan_literal(uchar const*,ulong,nlohmann::detail::lexer_base>>>::token_type) +000A8EF9: jmp short loc_A8F76 +000A8EFB: mov [rbp+var_40], 6Eh ; 'n' +000A8EFF: mov [rbp+var_3F], 75h ; 'u' +000A8F03: mov [rbp+var_3E], 6Ch ; 'l' +000A8F07: mov [rbp+var_3D], 6Ch ; 'l' +000A8F0B: lea rax, [rbp+var_40] +000A8F0F: mov rdi, rax +000A8F12: call __ZNKSt5arrayIhLm4EE4sizeEv; std::array::size(void) +000A8F17: mov rbx, rax +000A8F1A: lea rax, [rbp+var_40] +000A8F1E: mov rdi, rax +000A8F21: call __ZNSt5arrayIhLm4EE4dataEv; std::array::data(void) +000A8F26: mov rsi, rax +000A8F29: mov rax, [rbp+var_48] +000A8F2D: mov ecx, 3 +000A8F32: mov rdx, rbx +000A8F35: mov rdi, rax +000A8F38: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan_literal(uchar const*,ulong,nlohmann::detail::lexer_base>>>::token_type) +000A8F3D: jmp short loc_A8F76 +000A8F3F: mov rax, [rbp+var_48] +000A8F43: mov rdi, rax +000A8F46: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan_string(void) +000A8F4B: jmp short loc_A8F76 +000A8F4D: mov rax, [rbp+var_48] +000A8F51: mov rdi, rax +000A8F54: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::scan_number(void) +000A8F59: jmp short loc_A8F76 +000A8F5B: mov eax, 0Fh +000A8F60: jmp short loc_A8F76 +000A8F62: mov rax, [rbp+var_48] +000A8F66: lea rdx, aInvalidLiteral; "invalid literal" +000A8F6D: mov [rax+60h], rdx +000A8F71: mov eax, 0Eh +000A8F76: add rsp, 48h +000A8F7A: pop rbx +000A8F7B: pop rbp +000A8F7C: retn + +### FUNC 000A8F7E - 000A8F90 (18 bytes) name=_ZNK8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_error_messageEv +000A8F7E: push rbp +000A8F7F: mov rbp, rsp +000A8F82: mov [rbp+var_8], rdi +000A8F86: mov rax, [rbp+var_8] +000A8F8A: mov rax, [rax+60h] +000A8F8E: pop rbp +000A8F8F: retn + +### FUNC 000A8F90 - 000A8FBA (42 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE8allocateERSF_m +000A8F90: push rbp +000A8F91: mov rbp, rsp +000A8F94: sub rsp, 10h +000A8F98: mov [rbp+var_8], rdi +000A8F9C: mov [rbp+var_10], rsi +000A8FA0: mov rcx, [rbp+var_10] +000A8FA4: mov rax, [rbp+var_8] +000A8FA8: mov edx, 0 +000A8FAD: mov rsi, rcx +000A8FB0: mov rdi, rax +000A8FB3: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8allocateEmPKv; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::allocate(ulong,void const*) +000A8FB8: leave +000A8FB9: retn + +### FUNC 000A8FBA - 000A8FC8 (14 bytes) name=_ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE +000A8FBA: push rbp +000A8FBB: mov rbp, rsp +000A8FBE: mov [rbp+var_8], rdi +000A8FC2: mov rax, [rbp+var_8] +000A8FC6: pop rbp +000A8FC7: retn + +### FUNC 000A8FC8 - 000A8FD6 (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE +000A8FC8: push rbp; Alternative name is '_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE' +000A8FC9: mov rbp, rsp +000A8FCC: mov [rbp+var_8], rdi +000A8FD0: mov rax, [rbp+var_8] +000A8FD4: pop rbp +000A8FD5: retn + +### FUNC 000A8FD6 - 000A8FE0 (10 bytes) name=_ZNSt11_Tuple_implILm2EJEEC2Ev +000A8FD6: push rbp; Alternative name is 'std::_Tuple_impl<2ul>::_Tuple_impl(void)' +000A8FD7: mov rbp, rsp +000A8FDA: mov [rbp+var_8], rdi +000A8FDE: pop rbp +000A8FDF: retn + +### FUNC 000A8FE0 - 000A8FFC (28 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSM_ +000A8FE0: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIEEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSM_' +000A8FE1: mov rbp, rsp +000A8FE4: mov [rbp+var_8], rdi +000A8FE8: mov [rbp+var_10], rsi +000A8FEC: mov rax, [rbp+var_8] +000A8FF0: mov rdx, [rbp+var_10] +000A8FF4: mov rdx, [rdx] +000A8FF7: mov [rax], rdx +000A8FFA: pop rbp +000A8FFB: retn + +### FUNC 000A8FFC - 000A902D (49 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EEC2ERKSM_ +000A8FFC: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIEEEPT_DpOT0_EUlPSF_E_EEC1ERKSM_' +000A8FFD: mov rbp, rsp +000A9000: sub rsp, 10h +000A9004: mov [rbp+var_8], rdi +000A9008: mov [rbp+var_10], rsi +000A900C: mov rax, [rbp+var_8] +000A9010: mov rdi, rax +000A9013: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000A9018: mov rax, [rbp+var_8] +000A901C: mov rdx, [rbp+var_10] +000A9020: mov rsi, rdx +000A9023: mov rdi, rax +000A9026: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSM_ +000A902B: leave +000A902C: retn + +### FUNC 000A902E - 000A9056 (40 bytes) name=_ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EEC2IRSF_EEOT_ +000A902E: push rbp; Alternative name is 'std::_Head_base<0ul, std::map>>, std::less, std::allocator>>>>> *, false>::_Head_base>>, std::less, std::allocator>>>>> +000A902F: mov rbp, rsp +000A9032: sub rsp, 10h +000A9036: mov [rbp+var_8], rdi +000A903A: mov [rbp+var_10], rsi +000A903E: mov rax, [rbp+var_10] +000A9042: mov rdi, rax +000A9045: call __ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> *&>(std::remove_reference>>,std::less,std::allocator>>>>> *&>::type &) +000A904A: mov rdx, [rax] +000A904D: mov rax, [rbp+var_8] +000A9051: mov [rax], rdx +000A9054: leave +000A9055: retn + +### FUNC 000A9056 - 000A90A9 (83 bytes) name=_ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSM_EvEEOSH_SL_ +000A9056: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EEC1IRSF_IRKSM_EvEEOSH_SL_' +000A9057: mov rbp, rsp +000A905A: sub rsp, 20h +000A905E: mov [rbp+var_8], rdi +000A9062: mov [rbp+var_10], rsi +000A9066: mov [rbp+var_18], rdx +000A906A: mov rax, [rbp+var_18] +000A906E: mov rdi, rax +000A9071: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE +000A9076: mov rdx, rax +000A9079: mov rax, [rbp+var_8] +000A907D: mov rsi, rdx +000A9080: mov rdi, rax +000A9083: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EEC2ERKSM_ +000A9088: mov rax, [rbp+var_10] +000A908C: mov rdi, rax +000A908F: call __ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> *&>(std::remove_reference>>,std::less,std::allocator>>>>> *&>::type &) +000A9094: mov rdx, [rbp+var_8] +000A9098: add rdx, 8 +000A909C: mov rsi, rax +000A909F: mov rdi, rdx +000A90A2: call __ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EEC2IRSF_EEOT_; std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>::_Head_base>>,std::less,std::allocator>>>>> *&>(std::map>>,std::less,std::allocator>>>>> *&) +000A90A7: leave +000A90A8: retn + +### FUNC 000A90AA - 000A90F6 (76 bytes) name=_ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSM_vEEOSH_OT0_ +000A90AA: push rbp; Alternative name is '_ZNSt5tupleIIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EEC1IRSF_RKSM_vEEOSH_OT0_' +000A90AB: mov rbp, rsp +000A90AE: push rbx +000A90AF: sub rsp, 28h +000A90B3: mov [rbp+var_18], rdi +000A90B7: mov [rbp+var_20], rsi +000A90BB: mov [rbp+var_28], rdx +000A90BF: mov rax, [rbp+var_28] +000A90C3: mov rdi, rax +000A90C6: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISP_E4typeE +000A90CB: mov rbx, rax +000A90CE: mov rax, [rbp+var_20] +000A90D2: mov rdi, rax +000A90D5: call __ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> *&>(std::remove_reference>>,std::less,std::allocator>>>>> *&>::type &) +000A90DA: mov rcx, rax +000A90DD: mov rax, [rbp+var_18] +000A90E1: mov rdx, rbx +000A90E4: mov rsi, rcx +000A90E7: mov rdi, rax +000A90EA: call __ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSM_EvEEOSH_SL_; std::_Tuple_impl<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>::_Tuple_impl>>,std::less,std::allocator>>>>> *&,std::map>>,std::less,std::allocator>>>>> *& const&,void>(std::map>>,std::less,std::allocator>>>>>&&,std::_Tuple_impl<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>::_Tuple_impl) +000A90EF: add rsp, 28h +000A90F3: pop rbx +000A90F4: pop rbp +000A90F5: retn + +### FUNC 000A90F6 - 000A9123 (45 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EC2ESL_RKSM_ +000A90F6: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EC1ESL_RKSM_' +000A90F7: mov rbp, rsp +000A90FA: sub rsp, 20h +000A90FE: mov [rbp+var_8], rdi +000A9102: mov [rbp+var_10], rsi +000A9106: mov [rbp+var_18], rdx +000A910A: mov rax, [rbp+var_8] +000A910E: mov rdx, [rbp+var_18] +000A9112: lea rcx, [rbp+var_10] +000A9116: mov rsi, rcx +000A9119: mov rdi, rax +000A911C: call __ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSM_vEEOSH_OT0_; std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>::tuple>>,std::less,std::allocator>>>>> *&,std::map>>,std::less,std::allocator>>>>> *& const&,void>(std::map>>,std::less,std::allocator>>>>>&&,std::map>>,std::less,std::allocator>>>>> *& const&) +000A9121: leave +000A9122: retn + +### FUNC 000A9123 - 000A9131 (14 bytes) name=_ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERSG_ +000A9123: push rbp +000A9124: mov rbp, rsp +000A9127: mov [rbp+var_8], rdi +000A912B: mov rax, [rbp+var_8] +000A912F: pop rbp +000A9130: retn + +### FUNC 000A9131 - 000A914F (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERSN_ +000A9131: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EE7_M_headERSN_' +000A9132: mov rbp, rsp +000A9135: sub rsp, 10h +000A9139: mov [rbp+var_8], rdi +000A913D: mov rax, [rbp+var_8] +000A9141: add rax, 8 +000A9145: mov rdi, rax +000A9148: call __ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERSG_; std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>::_M_head(std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>&) +000A914D: leave +000A914E: retn + +### FUNC 000A914F - 000A9169 (26 bytes) name=_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +000A914F: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEIZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISO_DpT1_EE' +000A9150: mov rbp, rsp +000A9153: sub rsp, 10h +000A9157: mov [rbp+var_8], rdi +000A915B: mov rax, [rbp+var_8] +000A915F: mov rdi, rax +000A9162: call __ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERSN_ +000A9167: leave +000A9168: retn + +### FUNC 000A9169 - 000A9183 (26 bytes) name=_ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +000A9169: push rbp; Alternative name is '_ZSt3getILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSS_' +000A916A: mov rbp, rsp +000A916D: sub rsp, 10h +000A9171: mov [rbp+var_8], rdi +000A9175: mov rax, [rbp+var_8] +000A9179: mov rdi, rax +000A917C: call __ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE; std::__get_helper<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::_Tuple_impl<0ul,std::_Tuple_impl,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> &) +000A9181: leave +000A9182: retn + +### FUNC 000A9184 - 000A91DD (89 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_ED2Ev +000A9184: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlPSE_E_ED2Ev' +000A9185: mov rbp, rsp +000A9188: push rbx +000A9189: sub rsp, 28h +000A918D: mov [rbp+var_28], rdi +000A9191: mov rax, [rbp+var_28] +000A9195: mov rdi, rax +000A9198: call __ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_; std::get<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::__add_ref>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>::type>&) +000A919D: mov [rbp+var_18], rax +000A91A1: mov rax, [rbp+var_18] +000A91A5: mov rax, [rax] +000A91A8: test rax, rax +000A91AB: jz short loc_A91CB +000A91AD: mov rax, [rbp+var_18] +000A91B1: mov rbx, [rax] +000A91B4: mov rax, [rbp+var_28] +000A91B8: mov rdi, rax +000A91BB: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E11get_deleterEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get_deleter(void) +000A91C0: mov rsi, rbx +000A91C3: mov rdi, rax +000A91C6: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIEEEPT_DpOT0_ENKUlPSE_E_clESK_ +000A91CB: mov rax, [rbp+var_18] +000A91CF: mov qword ptr [rax], 0 +000A91D6: add rsp, 28h +000A91DA: pop rbx +000A91DB: pop rbp +000A91DC: retn + +### FUNC 000A91DD - 000A91EB (14 bytes) name=_ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERKSG_ +000A91DD: push rbp +000A91DE: mov rbp, rsp +000A91E1: mov [rbp+var_8], rdi +000A91E5: mov rax, [rbp+var_8] +000A91E9: pop rbp +000A91EA: retn + +### FUNC 000A91EB - 000A9209 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERKSN_ +000A91EB: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EE7_M_headERKSN_' +000A91EC: mov rbp, rsp +000A91EF: sub rsp, 10h +000A91F3: mov [rbp+var_8], rdi +000A91F7: mov rax, [rbp+var_8] +000A91FB: add rax, 8 +000A91FF: mov rdi, rax +000A9202: call __ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERKSG_; std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>::_M_head(std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false> const&) +000A9207: leave +000A9208: retn + +### FUNC 000A9209 - 000A9223 (26 bytes) name=_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSO_DpT1_EE +000A9209: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEIZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISO_DpT1_EE' +000A920A: mov rbp, rsp +000A920D: sub rsp, 10h +000A9211: mov [rbp+var_8], rdi +000A9215: mov rax, [rbp+var_8] +000A9219: mov rdi, rax +000A921C: call __ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EE7_M_headERKSN_ +000A9221: leave +000A9222: retn + +### FUNC 000A9223 - 000A923D (26 bytes) name=_ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSS_ +000A9223: push rbp; Alternative name is '_ZSt3getILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSS_' +000A9224: mov rbp, rsp +000A9227: sub rsp, 10h +000A922B: mov [rbp+var_8], rdi +000A922F: mov rax, [rbp+var_8] +000A9233: mov rdi, rax +000A9236: call __ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSO_DpT1_EE; std::__get_helper<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::_Tuple_impl<0ul,std::_Tuple_impl,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> const&) +000A923B: leave +000A923C: retn + +### FUNC 000A923E - 000A925B (29 bytes) name=_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv +000A923E: push rbp; Alternative name is '_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlPSE_E_E3getEv' +000A923F: mov rbp, rsp +000A9242: sub rsp, 10h +000A9246: mov [rbp+var_8], rdi +000A924A: mov rax, [rbp+var_8] +000A924E: mov rdi, rax +000A9251: call __ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSS_; std::get<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::__add_c_ref>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>::type> const&) +000A9256: mov rax, [rax] +000A9259: leave +000A925A: retn + +### FUNC 000A925B - 000A9280 (37 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSI_ +000A925B: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_IEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSI_' +000A925C: mov rbp, rsp +000A925F: sub rsp, 10h +000A9263: mov [rbp+var_8], rdi +000A9267: mov [rbp+var_10], rsi +000A926B: mov rdx, [rbp+var_10] +000A926F: mov rax, [rbp+var_8] +000A9273: mov rsi, rdx +000A9276: mov rdi, rax +000A9279: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JEEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSK_DpOSL_ +000A927E: leave +000A927F: retn + +### FUNC 000A9280 - 000A929E (30 bytes) name=_ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +000A9280: push rbp; Alternative name is '_ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn' +000A9281: mov rbp, rsp +000A9284: sub rsp, 10h +000A9288: mov [rbp+var_8], rdi +000A928C: mov [rbp+var_10], rsi +000A9290: mov rax, [rbp+var_8] +000A9294: mov rdi, rax +000A9297: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EcvbEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::operator bool(void) +000A929C: leave +000A929D: retn + +### FUNC 000A929E - 000A92D3 (53 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E7releaseEv +000A929E: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlPSE_E_E7releaseEv' +000A929F: mov rbp, rsp +000A92A2: sub rsp, 20h +000A92A6: mov [rbp+var_18], rdi +000A92AA: mov rax, [rbp+var_18] +000A92AE: mov rdi, rax +000A92B1: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get(void) +000A92B6: mov [rbp+var_8], rax +000A92BA: mov rax, [rbp+var_18] +000A92BE: mov rdi, rax +000A92C1: call __ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_; std::get<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::__add_ref>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>::type>&) +000A92C6: mov qword ptr [rax], 0 +000A92CD: mov rax, [rbp+var_8] +000A92D1: leave +000A92D2: retn + +### FUNC 000A92D3 - 000A92FD (42 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE8allocateERSA_m +000A92D3: push rbp +000A92D4: mov rbp, rsp +000A92D7: sub rsp, 10h +000A92DB: mov [rbp+var_8], rdi +000A92DF: mov [rbp+var_10], rsi +000A92E3: mov rcx, [rbp+var_10] +000A92E7: mov rax, [rbp+var_8] +000A92EB: mov edx, 0 +000A92F0: mov rsi, rcx +000A92F3: mov rdi, rax +000A92F6: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8allocateEmPKv; __gnu_cxx::new_allocator>>,std::allocator>>>>>::allocate(ulong,void const*) +000A92FB: leave +000A92FC: retn + +### FUNC 000A92FD - 000A930B (14 bytes) name=_ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE +000A92FD: push rbp +000A92FE: mov rbp, rsp +000A9301: mov [rbp+var_8], rdi +000A9305: mov rax, [rbp+var_8] +000A9309: pop rbp +000A930A: retn + +### FUNC 000A930B - 000A9319 (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A930B: push rbp; Alternative name is '_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE' +000A930C: mov rbp, rsp +000A930F: mov [rbp+var_8], rdi +000A9313: mov rax, [rbp+var_8] +000A9317: pop rbp +000A9318: retn + +### FUNC 000A931A - 000A9336 (28 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +000A931A: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_' +000A931B: mov rbp, rsp +000A931E: mov [rbp+var_8], rdi +000A9322: mov [rbp+var_10], rsi +000A9326: mov rax, [rbp+var_8] +000A932A: mov rdx, [rbp+var_10] +000A932E: mov rdx, [rdx] +000A9331: mov [rax], rdx +000A9334: pop rbp +000A9335: retn + +### FUNC 000A9336 - 000A9367 (49 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000A9336: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIEEEPT_DpOT0_EUlPSA_E_EEC1ERKSH_' +000A9337: mov rbp, rsp +000A933A: sub rsp, 10h +000A933E: mov [rbp+var_8], rdi +000A9342: mov [rbp+var_10], rsi +000A9346: mov rax, [rbp+var_8] +000A934A: mov rdi, rax +000A934D: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000A9352: mov rax, [rbp+var_8] +000A9356: mov rdx, [rbp+var_10] +000A935A: mov rsi, rdx +000A935D: mov rdi, rax +000A9360: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +000A9365: leave +000A9366: retn + +### FUNC 000A9368 - 000A9390 (40 bytes) name=_ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EEC2IRSA_EEOT_ +000A9368: push rbp; Alternative name is 'std::_Head_base<0ul, std::vector>>, std::allocator>>>> *, false>::_Head_base>>, std::allocator>>>> *&>(std::vector>>,std::allocator>>>> *&>(std::remove_reference>>,std::allocator>>>> *&>::type &) +000A9384: mov rdx, [rax] +000A9387: mov rax, [rbp+var_8] +000A938B: mov [rax], rdx +000A938E: leave +000A938F: retn + +### FUNC 000A9390 - 000A93E3 (83 bytes) name=_ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSH_EvEEOSC_SG_ +000A9390: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EEC1IRSA_IRKSH_EvEEOSC_SG_' +000A9391: mov rbp, rsp +000A9394: sub rsp, 20h +000A9398: mov [rbp+var_8], rdi +000A939C: mov [rbp+var_10], rsi +000A93A0: mov [rbp+var_18], rdx +000A93A4: mov rax, [rbp+var_18] +000A93A8: mov rdi, rax +000A93AB: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A93B0: mov rdx, rax +000A93B3: mov rax, [rbp+var_8] +000A93B7: mov rsi, rdx +000A93BA: mov rdi, rax +000A93BD: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000A93C2: mov rax, [rbp+var_10] +000A93C6: mov rdi, rax +000A93C9: call __ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> *&>(std::remove_reference>>,std::allocator>>>> *&>::type &) +000A93CE: mov rdx, [rbp+var_8] +000A93D2: add rdx, 8 +000A93D6: mov rsi, rax +000A93D9: mov rdi, rdx +000A93DC: call __ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EEC2IRSA_EEOT_; std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>::_Head_base>>,std::allocator>>>> *&>(std::vector>>,std::allocator>>>> *&) +000A93E1: leave +000A93E2: retn + +### FUNC 000A93E4 - 000A9430 (76 bytes) name=_ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSH_vEEOSC_OT0_ +000A93E4: push rbp; Alternative name is '_ZNSt5tupleIIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSH_vEEOSC_OT0_' +000A93E5: mov rbp, rsp +000A93E8: push rbx +000A93E9: sub rsp, 28h +000A93ED: mov [rbp+var_18], rdi +000A93F1: mov [rbp+var_20], rsi +000A93F5: mov [rbp+var_28], rdx +000A93F9: mov rax, [rbp+var_28] +000A93FD: mov rdi, rax +000A9400: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A9405: mov rbx, rax +000A9408: mov rax, [rbp+var_20] +000A940C: mov rdi, rax +000A940F: call __ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> *&>(std::remove_reference>>,std::allocator>>>> *&>::type &) +000A9414: mov rcx, rax +000A9417: mov rax, [rbp+var_18] +000A941B: mov rdx, rbx +000A941E: mov rsi, rcx +000A9421: mov rdi, rax +000A9424: call __ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSH_EvEEOSC_SG_; std::_Tuple_impl<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>::_Tuple_impl>>,std::allocator>>>> *&,std::vector>>,std::allocator>>>> *& const&,void>(std::vector>>,std::allocator>>>>&&,std::_Tuple_impl<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>::_Tuple_impl) +000A9429: add rsp, 28h +000A942D: pop rbx +000A942E: pop rbp +000A942F: retn + +### FUNC 000A9430 - 000A945D (45 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EC2ESG_RKSH_ +000A9430: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlPS9_E_EC1ESG_RKSH_' +000A9431: mov rbp, rsp +000A9434: sub rsp, 20h +000A9438: mov [rbp+var_8], rdi +000A943C: mov [rbp+var_10], rsi +000A9440: mov [rbp+var_18], rdx +000A9444: mov rax, [rbp+var_8] +000A9448: mov rdx, [rbp+var_18] +000A944C: lea rcx, [rbp+var_10] +000A9450: mov rsi, rcx +000A9453: mov rdi, rax +000A9456: call __ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSH_vEEOSC_OT0_; std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>::tuple>>,std::allocator>>>> *&,std::vector>>,std::allocator>>>> *& const&,void>(std::vector>>,std::allocator>>>>&&,std::vector>>,std::allocator>>>> *& const&) +000A945B: leave +000A945C: retn + +### FUNC 000A945D - 000A946B (14 bytes) name=_ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERSB_ +000A945D: push rbp +000A945E: mov rbp, rsp +000A9461: mov [rbp+var_8], rdi +000A9465: mov rax, [rbp+var_8] +000A9469: pop rbp +000A946A: retn + +### FUNC 000A946B - 000A9489 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERSI_ +000A946B: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EE7_M_headERSI_' +000A946C: mov rbp, rsp +000A946F: sub rsp, 10h +000A9473: mov [rbp+var_8], rdi +000A9477: mov rax, [rbp+var_8] +000A947B: add rax, 8 +000A947F: mov rdi, rax +000A9482: call __ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERSB_; std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>::_M_head(std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>&) +000A9487: leave +000A9488: retn + +### FUNC 000A9489 - 000A94A3 (26 bytes) name=_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A9489: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEIZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISJ_DpT1_EE' +000A948A: mov rbp, rsp +000A948D: sub rsp, 10h +000A9491: mov [rbp+var_8], rdi +000A9495: mov rax, [rbp+var_8] +000A9499: mov rdi, rax +000A949C: call __ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERSI_ +000A94A1: leave +000A94A2: retn + +### FUNC 000A94A3 - 000A94BD (26 bytes) name=_ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000A94A3: push rbp; Alternative name is '_ZSt3getILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSN_' +000A94A4: mov rbp, rsp +000A94A7: sub rsp, 10h +000A94AB: mov [rbp+var_8], rdi +000A94AF: mov rax, [rbp+var_8] +000A94B3: mov rdi, rax +000A94B6: call __ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE; std::__get_helper<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::_Tuple_impl<0ul,std::_Tuple_impl,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}> &) +000A94BB: leave +000A94BC: retn + +### FUNC 000A94BE - 000A9517 (89 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_ED2Ev +000A94BE: push rbp; Alternative name is 'std::unique_ptr>>, std::allocator>>>>, std::vector>>, std::allocator>>>> * nlohmann::basic_json>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::__add_ref>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>>::type>&) +000A94D7: mov [rbp+var_18], rax +000A94DB: mov rax, [rbp+var_18] +000A94DF: mov rax, [rax] +000A94E2: test rax, rax +000A94E5: jz short loc_A9505 +000A94E7: mov rax, [rbp+var_18] +000A94EB: mov rbx, [rax] +000A94EE: mov rax, [rbp+var_28] +000A94F2: mov rdi, rax +000A94F5: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E11get_deleterEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get_deleter(void) +000A94FA: mov rsi, rbx +000A94FD: mov rdi, rax +000A9500: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000A9505: mov rax, [rbp+var_18] +000A9509: mov qword ptr [rax], 0 +000A9510: add rsp, 28h +000A9514: pop rbx +000A9515: pop rbp +000A9516: retn + +### FUNC 000A9517 - 000A9525 (14 bytes) name=_ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERKSB_ +000A9517: push rbp +000A9518: mov rbp, rsp +000A951B: mov [rbp+var_8], rdi +000A951F: mov rax, [rbp+var_8] +000A9523: pop rbp +000A9524: retn + +### FUNC 000A9525 - 000A9543 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERKSI_ +000A9525: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EE7_M_headERKSI_' +000A9526: mov rbp, rsp +000A9529: sub rsp, 10h +000A952D: mov [rbp+var_8], rdi +000A9531: mov rax, [rbp+var_8] +000A9535: add rax, 8 +000A9539: mov rdi, rax +000A953C: call __ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERKSB_; std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>::_M_head(std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false> const&) +000A9541: leave +000A9542: retn + +### FUNC 000A9543 - 000A955D (26 bytes) name=_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A9543: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEIZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISJ_DpT1_EE' +000A9544: mov rbp, rsp +000A9547: sub rsp, 10h +000A954B: mov [rbp+var_8], rdi +000A954F: mov rax, [rbp+var_8] +000A9553: mov rdi, rax +000A9556: call __ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EE7_M_headERKSI_ +000A955B: leave +000A955C: retn + +### FUNC 000A955D - 000A9577 (26 bytes) name=_ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000A955D: push rbp; Alternative name is '_ZSt3getILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSN_' +000A955E: mov rbp, rsp +000A9561: sub rsp, 10h +000A9565: mov [rbp+var_8], rdi +000A9569: mov rax, [rbp+var_8] +000A956D: mov rdi, rax +000A9570: call __ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE; std::__get_helper<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::_Tuple_impl<0ul,std::_Tuple_impl,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}> const&) +000A9575: leave +000A9576: retn + +### FUNC 000A9578 - 000A9595 (29 bytes) name=_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv +000A9578: push rbp; Alternative name is '_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlPS9_E_E3getEv' +000A9579: mov rbp, rsp +000A957C: sub rsp, 10h +000A9580: mov [rbp+var_8], rdi +000A9584: mov rax, [rbp+var_8] +000A9588: mov rdi, rax +000A958B: call __ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_; std::get<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::__add_c_ref>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>>::type> const&) +000A9590: mov rax, [rax] +000A9593: leave +000A9594: retn + +### FUNC 000A9595 - 000A95BA (37 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSD_ +000A9595: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_IEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSD_' +000A9596: mov rbp, rsp +000A9599: sub rsp, 10h +000A959D: mov [rbp+var_8], rdi +000A95A1: mov [rbp+var_10], rsi +000A95A5: mov rdx, [rbp+var_10] +000A95A9: mov rax, [rbp+var_8] +000A95AD: mov rsi, rdx +000A95B0: mov rdi, rax +000A95B3: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JEEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSF_DpOSG_ +000A95B8: leave +000A95B9: retn + +### FUNC 000A95BA - 000A95D8 (30 bytes) name=_ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +000A95BA: push rbp; Alternative name is '_ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn' +000A95BB: mov rbp, rsp +000A95BE: sub rsp, 10h +000A95C2: mov [rbp+var_8], rdi +000A95C6: mov [rbp+var_10], rsi +000A95CA: mov rax, [rbp+var_8] +000A95CE: mov rdi, rax +000A95D1: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EcvbEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::operator bool(void) +000A95D6: leave +000A95D7: retn + +### FUNC 000A95D8 - 000A960D (53 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E7releaseEv +000A95D8: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlPS9_E_E7releaseEv' +000A95D9: mov rbp, rsp +000A95DC: sub rsp, 20h +000A95E0: mov [rbp+var_18], rdi +000A95E4: mov rax, [rbp+var_18] +000A95E8: mov rdi, rax +000A95EB: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get(void) +000A95F0: mov [rbp+var_8], rax +000A95F4: mov rax, [rbp+var_18] +000A95F8: mov rdi, rax +000A95FB: call __ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::__add_ref>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>>::type>&) +000A9600: mov qword ptr [rax], 0 +000A9607: mov rax, [rbp+var_8] +000A960B: leave +000A960C: retn + +### FUNC 000A960D - 000A9637 (42 bytes) name=_ZNSt16allocator_traitsISaISsEE8allocateERS0_m +000A960D: push rbp +000A960E: mov rbp, rsp +000A9611: sub rsp, 10h +000A9615: mov [rbp+var_8], rdi +000A9619: mov [rbp+var_10], rsi +000A961D: mov rcx, [rbp+var_10] +000A9621: mov rax, [rbp+var_8] +000A9625: mov edx, 0 +000A962A: mov rsi, rcx +000A962D: mov rdi, rax +000A9630: call __ZN9__gnu_cxx13new_allocatorISsE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000A9635: leave +000A9636: retn + +### FUNC 000A9637 - 000A9645 (14 bytes) name=_ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE +000A9637: push rbp +000A9638: mov rbp, rsp +000A963B: mov [rbp+var_8], rdi +000A963F: mov rax, [rbp+var_8] +000A9643: pop rbp +000A9644: retn + +### FUNC 000A9645 - 000A9653 (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE +000A9645: push rbp; Alternative name is '_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE' +000A9646: mov rbp, rsp +000A9649: mov [rbp+var_8], rdi +000A964D: mov rax, [rbp+var_8] +000A9651: pop rbp +000A9652: retn + +### FUNC 000A9654 - 000A9670 (28 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSI_ +000A9654: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EEC1ERKSI_' +000A9655: mov rbp, rsp +000A9658: mov [rbp+var_8], rdi +000A965C: mov [rbp+var_10], rsi +000A9660: mov rax, [rbp+var_8] +000A9664: mov rdx, [rbp+var_10] +000A9668: mov rdx, [rdx] +000A966B: mov [rax], rdx +000A966E: pop rbp +000A966F: retn + +### FUNC 000A9670 - 000A96A1 (49 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EEC2ERKSI_ +000A9670: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_EEC1ERKSI_' +000A9671: mov rbp, rsp +000A9674: sub rsp, 10h +000A9678: mov [rbp+var_8], rdi +000A967C: mov [rbp+var_10], rsi +000A9680: mov rax, [rbp+var_8] +000A9684: mov rdi, rax +000A9687: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000A968C: mov rax, [rbp+var_8] +000A9690: mov rdx, [rbp+var_10] +000A9694: mov rsi, rdx +000A9697: mov rdi, rax +000A969A: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSI_; std::_Head_base<1ul,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1},false>::_Head_base(std::string * const&) +000A969F: leave +000A96A0: retn + +### FUNC 000A96A2 - 000A96CA (40 bytes) name=_ZNSt10_Head_baseILm0EPSsLb0EEC2IRS0_EEOT_ +000A96A2: push rbp; Alternative name is 'std::_Head_base<0ul, std::string *, false>::_Head_base(std::string *&)' +000A96A3: mov rbp, rsp +000A96A6: sub rsp, 10h +000A96AA: mov [rbp+var_8], rdi +000A96AE: mov [rbp+var_10], rsi +000A96B2: mov rax, [rbp+var_10] +000A96B6: mov rdi, rax +000A96B9: call __ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A96BE: mov rdx, [rax] +000A96C1: mov rax, [rbp+var_8] +000A96C5: mov [rax], rdx +000A96C8: leave +000A96C9: retn + +### FUNC 000A96CA - 000A971D (83 bytes) name=_ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSI_EvEEOSD_SH_ +000A96CA: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_IRKSI_EvEEOSD_SH_' +000A96CB: mov rbp, rsp +000A96CE: sub rsp, 20h +000A96D2: mov [rbp+var_8], rdi +000A96D6: mov [rbp+var_10], rsi +000A96DA: mov [rbp+var_18], rdx +000A96DE: mov rax, [rbp+var_18] +000A96E2: mov rdi, rax +000A96E5: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE; std::forward>>::create(char const(&)[1] &&)::{lambda(std::string *)#1} const&>(std::remove_reference>>::create(char const(&)[1] &&)::{lambda(std::string *)#1} const&>::type &) +000A96EA: mov rdx, rax +000A96ED: mov rax, [rbp+var_8] +000A96F1: mov rsi, rdx +000A96F4: mov rdi, rax +000A96F7: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EEC2ERKSI_; std::_Tuple_impl<1ul,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::_Tuple_impl(std::string * const&) +000A96FC: mov rax, [rbp+var_10] +000A9700: mov rdi, rax +000A9703: call __ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A9708: mov rdx, [rbp+var_8] +000A970C: add rdx, 8 +000A9710: mov rsi, rax +000A9713: mov rdi, rdx +000A9716: call __ZNSt10_Head_baseILm0EPSsLb0EEC2IRS0_EEOT_; std::_Head_base<0ul,std::string *,false>::_Head_base(std::string *&) +000A971B: leave +000A971C: retn + +### FUNC 000A971E - 000A976A (76 bytes) name=_ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSI_vEEOSD_OT0_ +000A971E: push rbp; Alternative name is '_ZNSt5tupleIIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSI_vEEOSD_OT0_' +000A971F: mov rbp, rsp +000A9722: push rbx +000A9723: sub rsp, 28h +000A9727: mov [rbp+var_18], rdi +000A972B: mov [rbp+var_20], rsi +000A972F: mov [rbp+var_28], rdx +000A9733: mov rax, [rbp+var_28] +000A9737: mov rdi, rax +000A973A: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISL_E4typeE; std::forward>>::create(char const(&)[1] &&)::{lambda(std::string *)#1} const&>(std::remove_reference>>::create(char const(&)[1] &&)::{lambda(std::string *)#1} const&>::type &) +000A973F: mov rbx, rax +000A9742: mov rax, [rbp+var_20] +000A9746: mov rdi, rax +000A9749: call __ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000A974E: mov rcx, rax +000A9751: mov rax, [rbp+var_18] +000A9755: mov rdx, rbx +000A9758: mov rsi, rcx +000A975B: mov rdi, rax +000A975E: call __ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSI_EvEEOSD_SH_; std::_Tuple_impl<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::_Tuple_impl(std::string&&,char const(&)[1] &&) +000A9763: add rsp, 28h +000A9767: pop rbx +000A9768: pop rbp +000A9769: retn + +### FUNC 000A976A - 000A9797 (45 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EC2ESH_RKSI_ +000A976A: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_EC1ESH_RKSI_' +000A976B: mov rbp, rsp +000A976E: sub rsp, 20h +000A9772: mov [rbp+var_8], rdi +000A9776: mov [rbp+var_10], rsi +000A977A: mov [rbp+var_18], rdx +000A977E: mov rax, [rbp+var_8] +000A9782: mov rdx, [rbp+var_18] +000A9786: lea rcx, [rbp+var_10] +000A978A: mov rsi, rcx +000A978D: mov rdi, rax +000A9790: call __ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSI_vEEOSD_OT0_; std::tuple>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::tuple(std::string&&,char const(&)[1] && const&) +000A9795: leave +000A9796: retn + +### FUNC 000A9797 - 000A97A5 (14 bytes) name=_ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERS1_ +000A9797: push rbp +000A9798: mov rbp, rsp +000A979B: mov [rbp+var_8], rdi +000A979F: mov rax, [rbp+var_8] +000A97A3: pop rbp +000A97A4: retn + +### FUNC 000A97A5 - 000A97C3 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERSJ_ +000A97A5: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERSJ_' +000A97A6: mov rbp, rsp +000A97A9: sub rsp, 10h +000A97AD: mov [rbp+var_8], rdi +000A97B1: mov rax, [rbp+var_8] +000A97B5: add rax, 8 +000A97B9: mov rdi, rax +000A97BC: call __ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERS1_; std::_Head_base<0ul,std::string *,false>::_M_head(std::_Head_base<0ul,std::string *,false>&) +000A97C1: leave +000A97C2: retn + +### FUNC 000A97C3 - 000A97DD (26 bytes) name=_ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000A97C3: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSsIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISK_DpT1_EE' +000A97C4: mov rbp, rsp +000A97C7: sub rsp, 10h +000A97CB: mov [rbp+var_8], rdi +000A97CF: mov rax, [rbp+var_8] +000A97D3: mov rdi, rax +000A97D6: call __ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERSJ_; std::_Tuple_impl<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::_M_head(nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}&) +000A97DB: leave +000A97DC: retn + +### FUNC 000A97DD - 000A97F7 (26 bytes) name=_ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +000A97DD: push rbp; Alternative name is '_ZSt3getILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSO_' +000A97DE: mov rbp, rsp +000A97E1: sub rsp, 10h +000A97E5: mov [rbp+var_8], rdi +000A97E9: mov rax, [rbp+var_8] +000A97ED: mov rdi, rax +000A97F0: call __ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE; std::__get_helper<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::_Tuple_impl<0ul,std::__add_ref,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}> &) +000A97F5: leave +000A97F6: retn + +### FUNC 000A97F8 - 000A9851 (89 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_ED2Ev +000A97F8: push rbp; Alternative name is 'std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::~unique_ptr()' +000A97F9: mov rbp, rsp +000A97FC: push rbx +000A97FD: sub rsp, 28h +000A9801: mov [rbp+var_28], rdi +000A9805: mov rax, [rbp+var_28] +000A9809: mov rdi, rax +000A980C: call __ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_; std::get<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}&) +000A9811: mov [rbp+var_18], rax +000A9815: mov rax, [rbp+var_18] +000A9819: mov rax, [rax] +000A981C: test rax, rax +000A981F: jz short loc_A983F +000A9821: mov rax, [rbp+var_18] +000A9825: mov rbx, [rax] +000A9828: mov rax, [rbp+var_28] +000A982C: mov rdi, rax +000A982F: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E11get_deleterEv; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::get_deleter(void) +000A9834: mov rsi, rbx +000A9837: mov rdi, rax +000A983A: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_ENKUlPSsE_clESG_ +000A983F: mov rax, [rbp+var_18] +000A9843: mov qword ptr [rax], 0 +000A984A: add rsp, 28h +000A984E: pop rbx +000A984F: pop rbp +000A9850: retn + +### FUNC 000A9851 - 000A985F (14 bytes) name=_ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERKS1_ +000A9851: push rbp +000A9852: mov rbp, rsp +000A9855: mov [rbp+var_8], rdi +000A9859: mov rax, [rbp+var_8] +000A985D: pop rbp +000A985E: retn + +### FUNC 000A985F - 000A987D (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSJ_ +000A985F: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSJ_' +000A9860: mov rbp, rsp +000A9863: sub rsp, 10h +000A9867: mov [rbp+var_8], rdi +000A986B: mov rax, [rbp+var_8] +000A986F: add rax, 8 +000A9873: mov rdi, rax +000A9876: call __ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERKS1_; std::_Head_base<0ul,std::string *,false>::_M_head(std::_Head_base<0ul,std::string *,false> const&) +000A987B: leave +000A987C: retn + +### FUNC 000A987D - 000A9897 (26 bytes) name=_ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSK_DpT1_EE +000A987D: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSsIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISK_DpT1_EE' +000A987E: mov rbp, rsp +000A9881: sub rsp, 10h +000A9885: mov [rbp+var_8], rdi +000A9889: mov rax, [rbp+var_8] +000A988D: mov rdi, rax +000A9890: call __ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSJ_; std::_Tuple_impl<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::_M_head(nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1} const&) +000A9895: leave +000A9896: retn + +### FUNC 000A9897 - 000A98B1 (26 bytes) name=_ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSO_ +000A9897: push rbp; Alternative name is '_ZSt3getILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSO_' +000A9898: mov rbp, rsp +000A989B: sub rsp, 10h +000A989F: mov [rbp+var_8], rdi +000A98A3: mov rax, [rbp+var_8] +000A98A7: mov rdi, rax +000A98AA: call __ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSK_DpT1_EE; std::__get_helper<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::_Tuple_impl<0ul,std::__add_c_ref,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}> const&) +000A98AF: leave +000A98B0: retn + +### FUNC 000A98B2 - 000A98CF (29 bytes) name=_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv +000A98B2: push rbp; Alternative name is '_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv' +000A98B3: mov rbp, rsp +000A98B6: sub rsp, 10h +000A98BA: mov [rbp+var_8], rdi +000A98BE: mov rax, [rbp+var_8] +000A98C2: mov rdi, rax +000A98C5: call __ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSO_; std::get<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1} const&) +000A98CA: mov rax, [rax] +000A98CD: leave +000A98CE: retn + +### FUNC 000A98CF - 000A9907 (56 bytes) name=_ZNSt16allocator_traitsISaISsEE9constructISsJRA1_KcEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS6_ +000A98CF: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISsEE9constructISsIRA1_KcEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS6_' +000A98D0: mov rbp, rsp +000A98D3: sub rsp, 20h +000A98D7: mov [rbp+var_8], rdi +000A98DB: mov [rbp+var_10], rsi +000A98DF: mov [rbp+var_18], rdx +000A98E3: mov rax, [rbp+var_18] +000A98E7: mov rdi, rax +000A98EA: call __ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A98EF: mov rdx, rax +000A98F2: mov rcx, [rbp+var_10] +000A98F6: mov rax, [rbp+var_8] +000A98FA: mov rsi, rcx +000A98FD: mov rdi, rax +000A9900: call __ZNSt16allocator_traitsISaISsEE12_S_constructISsJRA1_KcEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS8_DpOS9_; std::allocator_traits>::_S_construct(std::allocator&,std::string*,char const(&)[1]&&) +000A9905: leave +000A9906: retn + +### FUNC 000A9907 - 000A9925 (30 bytes) name=_ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +000A9907: push rbp; Alternative name is '_ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn' +000A9908: mov rbp, rsp +000A990B: sub rsp, 10h +000A990F: mov [rbp+var_8], rdi +000A9913: mov [rbp+var_10], rsi +000A9917: mov rax, [rbp+var_8] +000A991B: mov rdi, rax +000A991E: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EcvbEv; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::operator bool(void) +000A9923: leave +000A9924: retn + +### FUNC 000A9926 - 000A995B (53 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E7releaseEv +000A9926: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_E7releaseEv' +000A9927: mov rbp, rsp +000A992A: sub rsp, 20h +000A992E: mov [rbp+var_18], rdi +000A9932: mov rax, [rbp+var_18] +000A9936: mov rdi, rax +000A9939: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::get(void) +000A993E: mov [rbp+var_8], rax +000A9942: mov rax, [rbp+var_18] +000A9946: mov rdi, rax +000A9949: call __ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_; std::get<0ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}&) +000A994E: mov qword ptr [rax], 0 +000A9955: mov rax, [rbp+var_8] +000A9959: leave +000A995A: retn + +### FUNC 000A995B - 000A9985 (42 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE8allocateERS6_m +000A995B: push rbp +000A995C: mov rbp, rsp +000A995F: sub rsp, 10h +000A9963: mov [rbp+var_8], rdi +000A9967: mov [rbp+var_10], rsi +000A996B: mov rcx, [rbp+var_10] +000A996F: mov rax, [rbp+var_8] +000A9973: mov edx, 0 +000A9978: mov rsi, rcx +000A997B: mov rdi, rax +000A997E: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8allocateEmPKv; __gnu_cxx::new_allocator>>>::allocate(ulong,void const*) +000A9983: leave +000A9984: retn + +### FUNC 000A9985 - 000A9993 (14 bytes) name=_ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE +000A9985: push rbp +000A9986: mov rbp, rsp +000A9989: mov [rbp+var_8], rdi +000A998D: mov rax, [rbp+var_8] +000A9991: pop rbp +000A9992: retn + +### FUNC 000A9993 - 000A99A1 (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A9993: push rbp; Alternative name is '_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE' +000A9994: mov rbp, rsp +000A9997: mov [rbp+var_8], rdi +000A999B: mov rax, [rbp+var_8] +000A999F: pop rbp +000A99A0: retn + +### FUNC 000A99A2 - 000A99BE (28 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +000A99A2: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC1ERKSH_' +000A99A3: mov rbp, rsp +000A99A6: mov [rbp+var_8], rdi +000A99AA: mov [rbp+var_10], rsi +000A99AE: mov rax, [rbp+var_8] +000A99B2: mov rdx, [rbp+var_10] +000A99B6: mov rdx, [rdx] +000A99B9: mov [rax], rdx +000A99BC: pop rbp +000A99BD: retn + +### FUNC 000A99BE - 000A99EF (49 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000A99BE: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_' +000A99BF: mov rbp, rsp +000A99C2: sub rsp, 10h +000A99C6: mov [rbp+var_8], rdi +000A99CA: mov [rbp+var_10], rsi +000A99CE: mov rax, [rbp+var_8] +000A99D2: mov rdi, rax +000A99D5: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000A99DA: mov rax, [rbp+var_8] +000A99DE: mov rdx, [rbp+var_10] +000A99E2: mov rsi, rdx +000A99E5: mov rdi, rax +000A99E8: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSH_ +000A99ED: leave +000A99EE: retn + +### FUNC 000A99F0 - 000A9A18 (40 bytes) name=_ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EEC2IRS6_EEOT_ +000A99F0: push rbp; Alternative name is 'std::_Head_base<0ul, nlohmann::byte_container_with_subtype>> *, false>::_Head_base>> *&>(nlohmann::byte_container_with_subtype>> *&)' +000A99F1: mov rbp, rsp +000A99F4: sub rsp, 10h +000A99F8: mov [rbp+var_8], rdi +000A99FC: mov [rbp+var_10], rsi +000A9A00: mov rax, [rbp+var_10] +000A9A04: mov rdi, rax +000A9A07: call __ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> *&>(std::remove_reference>> *&>::type &) +000A9A0C: mov rdx, [rax] +000A9A0F: mov rax, [rbp+var_8] +000A9A13: mov [rax], rdx +000A9A16: leave +000A9A17: retn + +### FUNC 000A9A18 - 000A9A6B (83 bytes) name=_ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSH_EvEEOSC_SG_ +000A9A18: push rbp; Alternative name is 'std::_Tuple_impl<0ul, nlohmann::byte_container_with_subtype>> *, nlohmann::byte_container_with_subtype>> * nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::_Tuple_impl>> *&, nlohmann::byte_container_with_subtype>> *& const&, void>(nlohmann::byte_container_with_subtype>>&&, std::_Tuple_impl<0ul, nlohmann::byte_co +000A9A19: mov rbp, rsp +000A9A1C: sub rsp, 20h +000A9A20: mov [rbp+var_8], rdi +000A9A24: mov [rbp+var_10], rsi +000A9A28: mov [rbp+var_18], rdx +000A9A2C: mov rax, [rbp+var_18] +000A9A30: mov rdi, rax +000A9A33: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISK_E4typeE +000A9A38: mov rdx, rax +000A9A3B: mov rax, [rbp+var_8] +000A9A3F: mov rsi, rdx +000A9A42: mov rdi, rax +000A9A45: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EEC2ERKSH_ +000A9A4A: mov rax, [rbp+var_10] +000A9A4E: mov rdi, rax +000A9A51: call __ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> *&>(std::remove_reference>> *&>::type &) +000A9A56: mov rdx, [rbp+var_8] +000A9A5A: add rdx, 8 +000A9A5E: mov rsi, rax +000A9A61: mov rdi, rdx +000A9A64: call __ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EEC2IRS6_EEOT_; std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>::_Head_base>> *&>(nlohmann::byte_container_with_subtype>> *&) +000A9A69: leave +000A9A6A: retn + +### FUNC 000A9A6C - 000A9AB8 (76 bytes) name=_ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSH_vEEOSC_OT0_ +000A9A6C: push rbp; Alternative name is 'std::tuple>> *, nlohmann::byte_container_with_subtype>> * nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::tuple>> *&, nlohmann::byte_container_with_subtype>> *& const&, void>(nlohmann::byte_container_with_subtype>>&&, nlohmann::byte_container_with_subtype>> *&>(std::remove_reference>> *&>::type &) +000A9A9C: mov rcx, rax +000A9A9F: mov rax, [rbp+var_18] +000A9AA3: mov rdx, rbx +000A9AA6: mov rsi, rcx +000A9AA9: mov rdi, rax +000A9AAC: call __ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSH_EvEEOSC_SG_; std::_Tuple_impl<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::_Tuple_impl>> *&,nlohmann::byte_container_with_subtype>> *& const&,void>(nlohmann::byte_container_with_subtype>>&&,std::_Tuple_impl<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::_Tuple_impl) +000A9AB1: add rsp, 28h +000A9AB5: pop rbx +000A9AB6: pop rbp +000A9AB7: retn + +### FUNC 000A9AB8 - 000A9AE5 (45 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EC2ESG_RKSH_ +000A9AB8: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EC1ESG_RKSH_' +000A9AB9: mov rbp, rsp +000A9ABC: sub rsp, 20h +000A9AC0: mov [rbp+var_8], rdi +000A9AC4: mov [rbp+var_10], rsi +000A9AC8: mov [rbp+var_18], rdx +000A9ACC: mov rax, [rbp+var_8] +000A9AD0: mov rdx, [rbp+var_18] +000A9AD4: lea rcx, [rbp+var_10] +000A9AD8: mov rsi, rcx +000A9ADB: mov rdi, rax +000A9ADE: call __ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSH_vEEOSC_OT0_; std::tuple>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::tuple>> *&,nlohmann::byte_container_with_subtype>> *& const&,void>(nlohmann::byte_container_with_subtype>>&&,nlohmann::byte_container_with_subtype>> *& const&) +000A9AE3: leave +000A9AE4: retn + +### FUNC 000A9AE5 - 000A9AF3 (14 bytes) name=_ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERS7_ +000A9AE5: push rbp +000A9AE6: mov rbp, rsp +000A9AE9: mov [rbp+var_8], rdi +000A9AED: mov rax, [rbp+var_8] +000A9AF1: pop rbp +000A9AF2: retn + +### FUNC 000A9AF3 - 000A9B11 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERSI_ +000A9AF3: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EE7_M_headERSI_' +000A9AF4: mov rbp, rsp +000A9AF7: sub rsp, 10h +000A9AFB: mov [rbp+var_8], rdi +000A9AFF: mov rax, [rbp+var_8] +000A9B03: add rax, 8 +000A9B07: mov rdi, rax +000A9B0A: call __ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERS7_; std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>::_M_head(std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>&) +000A9B0F: leave +000A9B10: retn + +### FUNC 000A9B11 - 000A9B2B (26 bytes) name=_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A9B11: push rbp; Alternative name is '_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEIZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISJ_DpT1_EE' +000A9B12: mov rbp, rsp +000A9B15: sub rsp, 10h +000A9B19: mov [rbp+var_8], rdi +000A9B1D: mov rax, [rbp+var_8] +000A9B21: mov rdi, rax +000A9B24: call __ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERSI_ +000A9B29: leave +000A9B2A: retn + +### FUNC 000A9B2B - 000A9B45 (26 bytes) name=_ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000A9B2B: push rbp; Alternative name is '_ZSt3getILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSN_' +000A9B2C: mov rbp, rsp +000A9B2F: sub rsp, 10h +000A9B33: mov [rbp+var_8], rdi +000A9B37: mov rax, [rbp+var_8] +000A9B3B: mov rdi, rax +000A9B3E: call __ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE; std::__get_helper<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::_Tuple_impl<0ul,std::_Tuple_impl,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> &) +000A9B43: leave +000A9B44: retn + +### FUNC 000A9B46 - 000A9B9F (89 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_ED2Ev +000A9B46: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlPS5_E_ED1Ev' +000A9B47: mov rbp, rsp +000A9B4A: push rbx +000A9B4B: sub rsp, 28h +000A9B4F: mov [rbp+var_28], rdi +000A9B53: mov rax, [rbp+var_28] +000A9B57: mov rdi, rax +000A9B5A: call __ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::__add_ref>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>::type>&) +000A9B5F: mov [rbp+var_18], rax +000A9B63: mov rax, [rbp+var_18] +000A9B67: mov rax, [rax] +000A9B6A: test rax, rax +000A9B6D: jz short loc_A9B8D +000A9B6F: mov rax, [rbp+var_18] +000A9B73: mov rbx, [rax] +000A9B76: mov rax, [rbp+var_28] +000A9B7A: mov rdi, rax +000A9B7D: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E11get_deleterEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get_deleter(void) +000A9B82: mov rsi, rbx +000A9B85: mov rdi, rax +000A9B88: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIEEEPT_DpOT0_ENKUlPS9_E_clESF_ +000A9B8D: mov rax, [rbp+var_18] +000A9B91: mov qword ptr [rax], 0 +000A9B98: add rsp, 28h +000A9B9C: pop rbx +000A9B9D: pop rbp +000A9B9E: retn + +### FUNC 000A9B9F - 000A9BAD (14 bytes) name=_ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERKS7_ +000A9B9F: push rbp +000A9BA0: mov rbp, rsp +000A9BA3: mov [rbp+var_8], rdi +000A9BA7: mov rax, [rbp+var_8] +000A9BAB: pop rbp +000A9BAC: retn + +### FUNC 000A9BAD - 000A9BCB (30 bytes) name=_ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERKSI_ +000A9BAD: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EE7_M_headERKSI_' +000A9BAE: mov rbp, rsp +000A9BB1: sub rsp, 10h +000A9BB5: mov [rbp+var_8], rdi +000A9BB9: mov rax, [rbp+var_8] +000A9BBD: add rax, 8 +000A9BC1: mov rdi, rax +000A9BC4: call __ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERKS7_; std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>::_M_head(std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false> const&) +000A9BC9: leave +000A9BCA: retn + +### FUNC 000A9BCB - 000A9BE5 (26 bytes) name=_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000A9BCB: push rbp; Alternative name is '_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEIZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISJ_DpT1_EE' +000A9BCC: mov rbp, rsp +000A9BCF: sub rsp, 10h +000A9BD3: mov [rbp+var_8], rdi +000A9BD7: mov rax, [rbp+var_8] +000A9BDB: mov rdi, rax +000A9BDE: call __ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EE7_M_headERKSI_ +000A9BE3: leave +000A9BE4: retn + +### FUNC 000A9BE5 - 000A9BFF (26 bytes) name=_ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000A9BE5: push rbp; Alternative name is '_ZSt3getILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSN_' +000A9BE6: mov rbp, rsp +000A9BE9: sub rsp, 10h +000A9BED: mov [rbp+var_8], rdi +000A9BF1: mov rax, [rbp+var_8] +000A9BF5: mov rdi, rax +000A9BF8: call __ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE; std::__get_helper<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::_Tuple_impl<0ul,std::_Tuple_impl,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> const&) +000A9BFD: leave +000A9BFE: retn + +### FUNC 000A9C00 - 000A9C1D (29 bytes) name=_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv +000A9C00: push rbp; Alternative name is '_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlPS5_E_E3getEv' +000A9C01: mov rbp, rsp +000A9C04: sub rsp, 10h +000A9C08: mov [rbp+var_8], rdi +000A9C0C: mov rax, [rbp+var_8] +000A9C10: mov rdi, rax +000A9C13: call __ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_; std::get<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::__add_c_ref>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>::type> const&) +000A9C18: mov rax, [rax] +000A9C1B: leave +000A9C1C: retn + +### FUNC 000A9C1D - 000A9C42 (37 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOS9_ +000A9C1D: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_IEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOS9_' +000A9C1E: mov rbp, rsp +000A9C21: sub rsp, 10h +000A9C25: mov [rbp+var_8], rdi +000A9C29: mov [rbp+var_10], rsi +000A9C2D: mov rdx, [rbp+var_10] +000A9C31: mov rax, [rbp+var_8] +000A9C35: mov rsi, rdx +000A9C38: mov rdi, rax +000A9C3B: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JEEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSB_DpOSC_ +000A9C40: leave +000A9C41: retn + +### FUNC 000A9C42 - 000A9C60 (30 bytes) name=_ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +000A9C42: push rbp; Alternative name is '_ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn' +000A9C43: mov rbp, rsp +000A9C46: sub rsp, 10h +000A9C4A: mov [rbp+var_8], rdi +000A9C4E: mov [rbp+var_10], rsi +000A9C52: mov rax, [rbp+var_8] +000A9C56: mov rdi, rax +000A9C59: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EcvbEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::operator bool(void) +000A9C5E: leave +000A9C5F: retn + +### FUNC 000A9C60 - 000A9C95 (53 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E7releaseEv +000A9C60: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlPS5_E_E7releaseEv' +000A9C61: mov rbp, rsp +000A9C64: sub rsp, 20h +000A9C68: mov [rbp+var_18], rdi +000A9C6C: mov rax, [rbp+var_18] +000A9C70: mov rdi, rax +000A9C73: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get(void) +000A9C78: mov [rbp+var_8], rax +000A9C7C: mov rax, [rbp+var_18] +000A9C80: mov rdi, rax +000A9C83: call __ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::__add_ref>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>::type>&) +000A9C88: mov qword ptr [rax], 0 +000A9C8F: mov rax, [rbp+var_8] +000A9C93: leave +000A9C94: retn + +### FUNC 000A9C96 - 000A9CE2 (76 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11lower_boundERS1_ +000A9C96: push rbp +000A9C97: mov rbp, rsp +000A9C9A: push rbx +000A9C9B: sub rsp, 18h +000A9C9F: mov [rbp+var_18], rdi +000A9CA3: mov [rbp+var_20], rsi +000A9CA7: mov rax, [rbp+var_18] +000A9CAB: mov rdi, rax +000A9CAE: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000A9CB3: mov rbx, rax +000A9CB6: mov rax, [rbp+var_18] +000A9CBA: mov rdi, rax +000A9CBD: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_begin(void) +000A9CC2: mov rsi, rax +000A9CC5: mov rdx, [rbp+var_20] +000A9CC9: mov rax, [rbp+var_18] +000A9CCD: mov rcx, rdx +000A9CD0: mov rdx, rbx +000A9CD3: mov rdi, rax +000A9CD6: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_ESJ_RS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_lower_bound(std::_Rb_tree_node>>>> *,std::_Rb_tree_node>>>> *,std::string const&) +000A9CDB: add rsp, 18h +000A9CDF: pop rbx +000A9CE0: pop rbp +000A9CE1: retn + +### FUNC 000A9CE2 - 000A9CEC (10 bytes) name=_ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8key_compEv +000A9CE2: push rbp +000A9CE3: mov rbp, rsp +000A9CE6: mov [rbp+var_8], rdi +000A9CEA: pop rbp +000A9CEB: retn + +### FUNC 000A9CEC - 000A9D14 (40 bytes) name=_ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_ +000A9CEC: push rbp +000A9CED: mov rbp, rsp +000A9CF0: sub rsp, 10h +000A9CF4: mov [rbp+var_8], rdi +000A9CF8: mov [rbp+var_10], rsi +000A9CFC: mov rdx, [rbp+var_10] +000A9D00: mov rax, [rbp+var_8] +000A9D04: mov rsi, rdx; std::string * +000A9D07: mov rdi, rax; this +000A9D0A: call __ZNKSs7compareERKSs; std::string::compare(std::string const&) +000A9D0F: shr eax, 1Fh +000A9D12: leave +000A9D13: retn + +### FUNC 000A9D14 - 000A9DD3 (191 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJOSsEESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +000A9D14: push rbp; Alternative name is 'std::_Rb_tree_node>>>> * std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>:: +000A9D15: mov rbp, rsp +000A9D18: push r13 +000A9D1A: push r12 +000A9D1C: push rbx +000A9D1D: sub rsp, 38h +000A9D21: mov [rbp+var_38], rdi +000A9D25: mov [rbp+var_40], rsi +000A9D29: mov [rbp+var_48], rdx +000A9D2D: mov [rbp+var_50], rcx +000A9D31: mov rax, [rbp+var_38] +000A9D35: mov rdi, rax +000A9D38: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_node(void) +000A9D3D: mov [rbp+var_28], rax +000A9D41: mov rax, [rbp+var_50] +000A9D45: mov rdi, rax +000A9D48: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000A9D4D: mov r13, rax +000A9D50: mov rax, [rbp+var_48] +000A9D54: mov rdi, rax +000A9D57: call __ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward>(std::remove_reference>::type &) +000A9D5C: mov r12, rax +000A9D5F: mov rax, [rbp+var_40] +000A9D63: mov rdi, rax +000A9D66: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A9D6B: mov rbx, rax +000A9D6E: mov rax, [rbp+var_38] +000A9D72: mov rdi, rax +000A9D75: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_Node_allocator(void) +000A9D7A: mov rsi, [rbp+var_28] +000A9D7E: mov r8, r13 +000A9D81: mov rcx, r12 +000A9D84: mov rdx, rbx +000A9D87: mov rdi, rax +000A9D8A: call __ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +000A9D8F: mov rax, [rbp+var_28] +000A9D93: jmp short loc_A9DC8 +000A9D95: mov rdi, rax; void * +000A9D98: call ___cxa_begin_catch +000A9D9D: mov rdx, [rbp+var_28] +000A9DA1: mov rax, [rbp+var_38] +000A9DA5: mov rsi, rdx +000A9DA8: mov rdi, rax +000A9DAB: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_put_node(std::_Rb_tree_node>>>> *) +000A9DB0: call ___cxa_rethrow +000A9DB5: mov rbx, rax +000A9DB8: call ___cxa_end_catch +000A9DBD: mov rax, rbx +000A9DC0: mov rdi, rax; struct _Unwind_Exception * +000A9DC3: call __Unwind_Resume +000A9DC8: add rsp, 38h +000A9DCC: pop rbx +000A9DCD: pop r12 +000A9DCF: pop r13 +000A9DD1: pop rbp +000A9DD2: retn + +### FUNC 000A9DD3 - 000A9DE1 (14 bytes) name=_ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE +000A9DD3: push rbp +000A9DD4: mov rbp, rsp +000A9DD7: mov [rbp+var_8], rdi +000A9DDB: mov rax, [rbp+var_8] +000A9DDF: pop rbp +000A9DE0: retn + +### FUNC 000A9DE2 - 000A9E1D (59 bytes) name=_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_ +000A9DE2: push rbp; Alternative name is 'std::pair::pair(std::_Rb_tree_node_base * const&, std::_Rb_tree_node_base *&)' +000A9DE3: mov rbp, rsp +000A9DE6: sub rsp, 20h +000A9DEA: mov [rbp+var_8], rdi +000A9DEE: mov [rbp+var_10], rsi +000A9DF2: mov [rbp+var_18], rdx +000A9DF6: mov rax, [rbp+var_10] +000A9DFA: mov rdx, [rax] +000A9DFD: mov rax, [rbp+var_8] +000A9E01: mov [rax], rdx +000A9E04: mov rax, [rbp+var_18] +000A9E08: mov rdi, rax +000A9E0B: call __ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A9E10: mov rdx, [rax] +000A9E13: mov rax, [rbp+var_8] +000A9E17: mov [rax+8], rdx +000A9E1B: leave +000A9E1C: retn + +### FUNC 000A9E1E - 000A9E61 (67 bytes) name=_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_ +000A9E1E: push rbp; Alternative name is 'std::pair::pair(std::_Rb_tree_node_base *&, std::_Rb_tree_node_base *&)' +000A9E1F: mov rbp, rsp +000A9E22: sub rsp, 20h +000A9E26: mov [rbp+var_8], rdi +000A9E2A: mov [rbp+var_10], rsi +000A9E2E: mov [rbp+var_18], rdx +000A9E32: mov rax, [rbp+var_10] +000A9E36: mov rdi, rax +000A9E39: call __ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A9E3E: mov rdx, [rax] +000A9E41: mov rax, [rbp+var_8] +000A9E45: mov [rax], rdx +000A9E48: mov rax, [rbp+var_18] +000A9E4C: mov rdi, rax +000A9E4F: call __ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A9E54: mov rdx, [rax] +000A9E57: mov rax, [rbp+var_8] +000A9E5B: mov [rax+8], rdx +000A9E5F: leave +000A9E60: retn + +### FUNC 000A9E62 - 000A9E9D (59 bytes) name=_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEEOT_RKS1_ +000A9E62: push rbp; Alternative name is 'std::pair::pair(std::_Rb_tree_node_base *&, std::_Rb_tree_node_base * const&)' +000A9E63: mov rbp, rsp +000A9E66: sub rsp, 20h +000A9E6A: mov [rbp+var_8], rdi +000A9E6E: mov [rbp+var_10], rsi +000A9E72: mov [rbp+var_18], rdx +000A9E76: mov rax, [rbp+var_10] +000A9E7A: mov rdi, rax +000A9E7D: call __ZSt7forwardIRPSt18_Rb_tree_node_baseEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000A9E82: mov rdx, [rax] +000A9E85: mov rax, [rbp+var_8] +000A9E89: mov [rax], rdx +000A9E8C: mov rax, [rbp+var_18] +000A9E90: mov rdx, [rax] +000A9E93: mov rax, [rbp+var_8] +000A9E97: mov [rax+8], rdx +000A9E9B: leave +000A9E9C: retn + +### FUNC 000A9E9E - 000AA2E7 (1097 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS1_ +000A9E9E: push rbp +000A9E9F: mov rbp, rsp +000A9EA2: push rbx +000A9EA3: sub rsp, 128h +000A9EAA: mov [rbp+var_118], rdi +000A9EB1: mov [rbp+var_120], rsi +000A9EB8: mov [rbp+var_128], rdx +000A9EBF: lea rax, [rbp+var_120] +000A9EC6: mov rdi, rax +000A9EC9: call __ZNKSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEE13_M_const_castEv; std::_Rb_tree_const_iterator>>>>::_M_const_cast(void) +000A9ECE: mov [rbp+var_F0], rax +000A9ED5: mov rbx, [rbp+var_F0] +000A9EDC: mov rax, [rbp+var_118] +000A9EE3: mov rdi, rax +000A9EE6: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000A9EEB: cmp rbx, rax +000A9EEE: setz al +000A9EF1: test al, al +000A9EF3: jz loc_A9FBE +000A9EF9: mov rax, [rbp+var_118] +000A9F00: mov rdi, rax +000A9F03: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE4sizeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::size(void) +000A9F08: test rax, rax +000A9F0B: jz short loc_A9F4E +000A9F0D: mov rax, [rbp+var_118] +000A9F14: mov rdi, rax +000A9F17: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_rightmost(void) +000A9F1C: mov rax, [rax] +000A9F1F: mov rdi, rax +000A9F22: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000A9F27: mov rcx, rax +000A9F2A: mov rax, [rbp+var_118] +000A9F31: mov rdx, [rbp+var_128] +000A9F38: mov rsi, rcx +000A9F3B: mov rdi, rax +000A9F3E: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000A9F43: test al, al +000A9F45: jz short loc_A9F4E +000A9F47: mov eax, 1 +000A9F4C: jmp short loc_A9F53 +000A9F4E: mov eax, 0 +000A9F53: test al, al +000A9F55: jz short loc_A9FA0 +000A9F57: mov rax, [rbp+var_118] +000A9F5E: mov rdi, rax +000A9F61: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_rightmost(void) +000A9F66: mov rdx, rax +000A9F69: mov [rbp+var_C8], 0 +000A9F74: lea rcx, [rbp+var_C8] +000A9F7B: lea rax, [rbp+var_E0] +000A9F82: mov rsi, rcx +000A9F85: mov rdi, rax +000A9F88: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_; std::pair::pair(std::_Rb_tree_node_base * const&,std::_Rb_tree_node_base *&) +000A9F8D: mov rax, [rbp+var_E0] +000A9F94: mov rdx, [rbp+var_D8] +000A9F9B: jmp loc_AA2DD +000A9FA0: mov rdx, [rbp+var_128] +000A9FA7: mov rax, [rbp+var_118] +000A9FAE: mov rsi, rdx +000A9FB1: mov rdi, rax +000A9FB4: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_insert_unique_pos(std::string const&) +000A9FB9: jmp loc_AA2DD +000A9FBE: mov rax, [rbp+var_F0] +000A9FC5: mov rdi, rax +000A9FC8: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000A9FCD: mov rdx, rax +000A9FD0: mov rax, [rbp+var_118] +000A9FD7: mov rcx, [rbp+var_128] +000A9FDE: mov rsi, rcx +000A9FE1: mov rdi, rax +000A9FE4: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000A9FE9: test al, al +000A9FEB: jz loc_AA154 +000A9FF1: mov rax, [rbp+var_F0] +000A9FF8: mov [rbp+var_100], rax +000A9FFF: mov rbx, [rbp+var_F0] +000AA006: mov rax, [rbp+var_118] +000AA00D: mov rdi, rax +000AA010: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_leftmost(void) +000AA015: mov rax, [rax] +000AA018: cmp rbx, rax +000AA01B: setz al +000AA01E: test al, al +000AA020: jz short loc_AA06E +000AA022: mov rax, [rbp+var_118] +000AA029: mov rdi, rax +000AA02C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_leftmost(void) +000AA031: mov rbx, rax +000AA034: mov rax, [rbp+var_118] +000AA03B: mov rdi, rax +000AA03E: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_leftmost(void) +000AA043: mov rcx, rax +000AA046: lea rax, [rbp+var_C0] +000AA04D: mov rdx, rbx +000AA050: mov rsi, rcx +000AA053: mov rdi, rax +000AA056: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_; std::pair::pair(std::_Rb_tree_node_base *&,std::_Rb_tree_node_base *&) +000AA05B: mov rax, [rbp+var_C0] +000AA062: mov rdx, [rbp+var_B8] +000AA069: jmp loc_AA2DD +000AA06E: lea rax, [rbp+var_100] +000AA075: mov rdi, rax +000AA078: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv; std::_Rb_tree_iterator>>>>::operator--(void) +000AA07D: mov rax, [rax] +000AA080: mov rdi, rax +000AA083: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000AA088: mov rcx, rax +000AA08B: mov rax, [rbp+var_118] +000AA092: mov rdx, [rbp+var_128] +000AA099: mov rsi, rcx +000AA09C: mov rdi, rax +000AA09F: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000AA0A4: test al, al +000AA0A6: jz loc_AA136 +000AA0AC: mov rax, [rbp+var_100] +000AA0B3: mov rdi, rax +000AA0B6: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base *) +000AA0BB: test rax, rax +000AA0BE: setz al +000AA0C1: test al, al +000AA0C3: jz short loc_AA103 +000AA0C5: mov [rbp+var_98], 0 +000AA0D0: lea rdx, [rbp+var_100] +000AA0D7: lea rcx, [rbp+var_98] +000AA0DE: lea rax, [rbp+var_B0] +000AA0E5: mov rsi, rcx +000AA0E8: mov rdi, rax +000AA0EB: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_; std::pair::pair(std::_Rb_tree_node_base * const&,std::_Rb_tree_node_base *&) +000AA0F0: mov rax, [rbp+var_B0] +000AA0F7: mov rdx, [rbp+var_A8] +000AA0FE: jmp loc_AA2DD +000AA103: lea rdx, [rbp+var_F0] +000AA10A: lea rcx, [rbp+var_F0] +000AA111: lea rax, [rbp+var_90] +000AA118: mov rsi, rcx +000AA11B: mov rdi, rax +000AA11E: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_; std::pair::pair(std::_Rb_tree_node_base *&,std::_Rb_tree_node_base *&) +000AA123: mov rax, [rbp+var_90] +000AA12A: mov rdx, [rbp+var_88] +000AA131: jmp loc_AA2DD +000AA136: mov rdx, [rbp+var_128] +000AA13D: mov rax, [rbp+var_118] +000AA144: mov rsi, rdx +000AA147: mov rdi, rax +000AA14A: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_insert_unique_pos(std::string const&) +000AA14F: jmp loc_AA2DD +000AA154: mov rax, [rbp+var_F0] +000AA15B: mov rdi, rax +000AA15E: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000AA163: mov rcx, rax +000AA166: mov rax, [rbp+var_118] +000AA16D: mov rdx, [rbp+var_128] +000AA174: mov rsi, rcx +000AA177: mov rdi, rax +000AA17A: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000AA17F: test al, al +000AA181: jz loc_AA2B3 +000AA187: mov rax, [rbp+var_F0] +000AA18E: mov [rbp+var_110], rax +000AA195: mov rbx, [rbp+var_F0] +000AA19C: mov rax, [rbp+var_118] +000AA1A3: mov rdi, rax +000AA1A6: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_rightmost(void) +000AA1AB: mov rax, [rax] +000AA1AE: cmp rbx, rax +000AA1B1: setz al +000AA1B4: test al, al +000AA1B6: jz short loc_AA1F2 +000AA1B8: mov rax, [rbp+var_118] +000AA1BF: mov rdi, rax +000AA1C2: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_rightmost(void) +000AA1C7: mov rdx, rax +000AA1CA: mov [rbp+var_68], 0 +000AA1D2: lea rcx, [rbp+var_68] +000AA1D6: lea rax, [rbp+var_80] +000AA1DA: mov rsi, rcx +000AA1DD: mov rdi, rax +000AA1E0: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_; std::pair::pair(std::_Rb_tree_node_base * const&,std::_Rb_tree_node_base *&) +000AA1E5: mov rax, [rbp+var_80] +000AA1E9: mov rdx, [rbp+var_78] +000AA1ED: jmp loc_AA2DD +000AA1F2: lea rax, [rbp+var_110] +000AA1F9: mov rdi, rax +000AA1FC: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv; std::_Rb_tree_iterator>>>>::operator++(void) +000AA201: mov rax, [rax] +000AA204: mov rdi, rax +000AA207: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000AA20C: mov rdx, rax +000AA20F: mov rax, [rbp+var_118] +000AA216: mov rcx, [rbp+var_128] +000AA21D: mov rsi, rcx +000AA220: mov rdi, rax +000AA223: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000AA228: test al, al +000AA22A: jz short loc_AA298 +000AA22C: mov rax, [rbp+var_F0] +000AA233: mov rdi, rax +000AA236: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base *) +000AA23B: test rax, rax +000AA23E: setz al +000AA241: test al, al +000AA243: jz short loc_AA271 +000AA245: mov [rbp+var_48], 0 +000AA24D: lea rdx, [rbp+var_F0] +000AA254: lea rcx, [rbp+var_48] +000AA258: lea rax, [rbp+var_60] +000AA25C: mov rsi, rcx +000AA25F: mov rdi, rax +000AA262: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEERKS1_OT_; std::pair::pair(std::_Rb_tree_node_base * const&,std::_Rb_tree_node_base *&) +000AA267: mov rax, [rbp+var_60] +000AA26B: mov rdx, [rbp+var_58] +000AA26F: jmp short loc_AA2DD +000AA271: lea rdx, [rbp+var_110] +000AA278: lea rcx, [rbp+var_110] +000AA27F: lea rax, [rbp+var_40] +000AA283: mov rsi, rcx +000AA286: mov rdi, rax +000AA289: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_vEEOT_OT0_; std::pair::pair(std::_Rb_tree_node_base *&,std::_Rb_tree_node_base *&) +000AA28E: mov rax, [rbp+var_40] +000AA292: mov rdx, [rbp+var_38] +000AA296: jmp short loc_AA2DD +000AA298: mov rdx, [rbp+var_128] +000AA29F: mov rax, [rbp+var_118] +000AA2A6: mov rsi, rdx +000AA2A9: mov rdi, rax +000AA2AC: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_insert_unique_pos(std::string const&) +000AA2B1: jmp short loc_AA2DD +000AA2B3: mov [rbp+var_18], 0 +000AA2BB: lea rdx, [rbp+var_18] +000AA2BF: lea rcx, [rbp+var_F0] +000AA2C6: lea rax, [rbp+var_30] +000AA2CA: mov rsi, rcx +000AA2CD: mov rdi, rax +000AA2D0: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEEOT_RKS1_; std::pair::pair(std::_Rb_tree_node_base *&,std::_Rb_tree_node_base * const&) +000AA2D5: mov rax, [rbp+var_30] +000AA2D9: mov rdx, [rbp+var_28] +000AA2DD: add rsp, 128h +000AA2E4: pop rbx +000AA2E5: pop rbp +000AA2E6: retn + +### FUNC 000AA2E7 - 000AA313 (44 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E +000AA2E7: push rbp +000AA2E8: mov rbp, rsp +000AA2EB: sub rsp, 20h +000AA2EF: mov [rbp+var_18], rdi +000AA2F3: mov rax, [rbp+var_18] +000AA2F7: mov rdi, rax +000AA2FA: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_value(std::_Rb_tree_node>>>> const*) +000AA2FF: mov rdx, rax +000AA302: lea rax, [rbp+var_1] +000AA306: mov rsi, rdx +000AA309: mov rdi, rax +000AA30C: call __ZNKSt10_Select1stISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEclERKSA_; std::_Select1st>>>>::operator()(std::pair>>> const&) +000AA311: leave +000AA312: retn + +### FUNC 000AA314 - 000AA3D6 (194 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E +000AA314: push rbp +000AA315: mov rbp, rsp +000AA318: push rbx +000AA319: sub rsp, 38h +000AA31D: mov [rbp+var_28], rdi +000AA321: mov [rbp+var_30], rsi +000AA325: mov [rbp+var_38], rdx +000AA329: mov [rbp+var_40], rcx +000AA32D: cmp [rbp+var_30], 0 +000AA332: jnz short loc_AA37A +000AA334: mov rax, [rbp+var_28] +000AA338: mov rdi, rax +000AA33B: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000AA340: cmp rax, [rbp+var_38] +000AA344: jz short loc_AA37A +000AA346: mov rax, [rbp+var_38] +000AA34A: mov rdi, rax +000AA34D: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000AA352: mov rbx, rax +000AA355: mov rax, [rbp+var_40] +000AA359: mov rdi, rax +000AA35C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node>>>> const*) +000AA361: mov rcx, rax +000AA364: mov rax, [rbp+var_28] +000AA368: mov rdx, rbx +000AA36B: mov rsi, rcx +000AA36E: mov rdi, rax +000AA371: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000AA376: test al, al +000AA378: jz short loc_AA381 +000AA37A: mov eax, 1 +000AA37F: jmp short loc_AA386 +000AA381: mov eax, 0 +000AA386: mov [rbp+var_11], al +000AA389: mov rax, [rbp+var_28] +000AA38D: lea rcx, [rax+8] +000AA391: movzx eax, [rbp+var_11] +000AA395: mov rdx, [rbp+var_38] +000AA399: mov rsi, [rbp+var_40] +000AA39D: mov edi, eax +000AA39F: call __ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_; std::_Rb_tree_insert_and_rebalance(bool,std::_Rb_tree_node_base *,std::_Rb_tree_node_base *,std::_Rb_tree_node_base&) +000AA3A4: mov rax, [rbp+var_28] +000AA3A8: mov rax, [rax+28h] +000AA3AC: lea rdx, [rax+1] +000AA3B0: mov rax, [rbp+var_28] +000AA3B4: mov [rax+28h], rdx +000AA3B8: mov rdx, [rbp+var_40] +000AA3BC: lea rax, [rbp+var_20] +000AA3C0: mov rsi, rdx +000AA3C3: mov rdi, rax +000AA3C6: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000AA3CB: mov rax, [rbp+var_20] +000AA3CF: add rsp, 38h +000AA3D3: pop rbx +000AA3D4: pop rbp +000AA3D5: retn + +### FUNC 000AA3D6 - 000AA416 (64 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E +000AA3D6: push rbp +000AA3D7: mov rbp, rsp +000AA3DA: sub rsp, 10h +000AA3DE: mov [rbp+var_8], rdi +000AA3E2: mov [rbp+var_10], rsi +000AA3E6: mov rax, [rbp+var_8] +000AA3EA: mov rdi, rax +000AA3ED: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_Node_allocator(void) +000AA3F2: mov rdx, [rbp+var_10] +000AA3F6: mov rsi, rdx +000AA3F9: mov rdi, rax +000AA3FC: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE7destroyISD_EEvPT_; __gnu_cxx::new_allocator>>>>>::destroy>>>>>(std::_Rb_tree_node>>>> *) +000AA401: mov rdx, [rbp+var_10] +000AA405: mov rax, [rbp+var_8] +000AA409: mov rsi, rdx +000AA40C: mov rdi, rax +000AA40F: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_put_node(std::_Rb_tree_node>>>> *) +000AA414: leave +000AA415: retn + +### FUNC 000AA416 - 000AA42F (25 bytes) name=_ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E +000AA416: push rbp; Alternative name is 'std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *)' +000AA417: mov rbp, rsp +000AA41A: mov [rbp+var_8], rdi +000AA41E: mov [rbp+var_10], rsi +000AA422: mov rax, [rbp+var_8] +000AA426: mov rdx, [rbp+var_10] +000AA42A: mov [rax], rdx +000AA42D: pop rbp +000AA42E: retn + +### FUNC 000AA42F - 000AA43D (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISR_E4typeE +000AA42F: push rbp; Alternative name is 'std::map>>, std::less, std::allocator>>>>> * nlohmann::basic_json>>::create>>, std::less, std::allocator>>, std::less, std::allocator>>>>> * nlohmann::basic_json>>::create>>, std::less, std::allocator>>, std::less, std::allocator>>>>> * nlohmann::basic_json>>::create>>, std::less, std::allocator::_Tuple_impl(void) +000AA476: mov rax, [rbp+var_8] +000AA47A: mov rdx, [rbp+var_10] +000AA47E: mov rsi, rdx +000AA481: mov rdi, rax +000AA484: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EEC2ERKSO_; std::_Head_base<1ul,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1},false>::_Head_base(std::_Head_base<1ul,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1},false> const&) +000AA489: leave +000AA48A: retn + +### FUNC 000AA48C - 000AA4DF (83 bytes) name=_ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSO_EvEEOSJ_SN_ +000AA48C: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::map>>, std::less, std::allocator>>>>> *, std::map>>, std::less, std::allocator>>>>> * nlohmann::basic +000AA48D: mov rbp, rsp +000AA490: sub rsp, 20h +000AA494: mov [rbp+var_8], rdi +000AA498: mov [rbp+var_10], rsi +000AA49C: mov [rbp+var_18], rdx +000AA4A0: mov rax, [rbp+var_18] +000AA4A4: mov rdi, rax +000AA4A7: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISR_E4typeE; std::forward>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1} const&>(std::remove_reference::type &) +000AA4AC: mov rdx, rax +000AA4AF: mov rax, [rbp+var_8] +000AA4B3: mov rsi, rdx +000AA4B6: mov rdi, rax +000AA4B9: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EEC2ERKSO_; std::_Tuple_impl<1ul,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::_Tuple_impl(std::_Tuple_impl<1ul,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}> const&) +000AA4BE: mov rax, [rbp+var_10] +000AA4C2: mov rdi, rax +000AA4C5: call __ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> *&>(std::remove_reference>>,std::less,std::allocator>>>>> *&>::type &) +000AA4CA: mov rdx, [rbp+var_8] +000AA4CE: add rdx, 8 +000AA4D2: mov rsi, rax +000AA4D5: mov rdi, rdx +000AA4D8: call __ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EEC2IRSF_EEOT_; std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>::_Head_base>>,std::less,std::allocator>>>>> *&>(std::map>>,std::less,std::allocator>>>>> *&) +000AA4DD: leave +000AA4DE: retn + +### FUNC 000AA4E0 - 000AA52C (76 bytes) name=_ZNSt5tupleIJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_RKSO_vEEOSJ_OT0_ +000AA4E0: push rbp; Alternative name is '_ZNSt5tupleIIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EEC1IRSF_RKSO_vEEOSJ_OT0_' +000AA4E1: mov rbp, rsp +000AA4E4: push rbx +000AA4E5: sub rsp, 28h +000AA4E9: mov [rbp+var_18], rdi +000AA4ED: mov [rbp+var_20], rsi +000AA4F1: mov [rbp+var_28], rdx +000AA4F5: mov rax, [rbp+var_28] +000AA4F9: mov rdi, rax +000AA4FC: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EOT_RNSt16remove_referenceISR_E4typeE; std::forward>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1} const&>(std::remove_reference::type &) +000AA501: mov rbx, rax +000AA504: mov rax, [rbp+var_20] +000AA508: mov rdi, rax +000AA50B: call __ZSt7forwardIRPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> *&>(std::remove_reference>>,std::less,std::allocator>>>>> *&>::type &) +000AA510: mov rcx, rax +000AA513: mov rax, [rbp+var_18] +000AA517: mov rdx, rbx +000AA51A: mov rsi, rcx +000AA51D: mov rdi, rax +000AA520: call __ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EEC2IRSF_JRKSO_EvEEOSJ_SN_; std::_Tuple_impl<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>::_Tuple_impl>>,std::less,std::allocator>>>>> *&,std::_Tuple_impl<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> const&,void>(std::map>>,std::less,std::allocator>>>>>&&,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}) +000AA525: add rsp, 28h +000AA529: pop rbx +000AA52A: pop rbp +000AA52B: retn + +### FUNC 000AA52C - 000AA559 (45 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EC2ESN_RKSO_ +000AA52C: push rbp; Alternative name is 'std::unique_ptr>>, std::less, std::allocator>>>>>, std::map>>, std::less, std::allocator>>>>> * nlohmann::basic_json>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>::tuple>>,std::less,std::allocator>>>>> *&,std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> const&,void>(std::map>>,std::less,std::allocator>>>>>&&,std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> const&) +000AA557: leave +000AA558: retn + +### FUNC 000AA559 - 000AA577 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERSP_ +000AA559: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERSP_' +000AA55A: mov rbp, rsp +000AA55D: sub rsp, 10h +000AA561: mov [rbp+var_8], rdi +000AA565: mov rax, [rbp+var_8] +000AA569: add rax, 8 +000AA56D: mov rdi, rax +000AA570: call __ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERSG_; std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>::_M_head(std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>&) +000AA575: leave +000AA576: retn + +### FUNC 000AA577 - 000AA591 (26 bytes) name=_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000AA577: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEIZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISQ_DpT1_EE' +000AA578: mov rbp, rsp +000AA57B: sub rsp, 10h +000AA57F: mov [rbp+var_8], rdi +000AA583: mov rax, [rbp+var_8] +000AA587: mov rdi, rax +000AA58A: call __ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERSP_ +000AA58F: leave +000AA590: retn + +### FUNC 000AA591 - 000AA5AB (26 bytes) name=_ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +000AA591: push rbp; Alternative name is '_ZSt3getILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSU_' +000AA592: mov rbp, rsp +000AA595: sub rsp, 10h +000AA599: mov [rbp+var_8], rdi +000AA59D: mov rax, [rbp+var_8] +000AA5A1: mov rdi, rax +000AA5A4: call __ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE; std::__get_helper<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::_Tuple_impl<0ul,std::__add_ref>>,std::less,std::allocator>>>>> *>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> &) +000AA5A9: leave +000AA5AA: retn + +### FUNC 000AA5AC - 000AA605 (89 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev +000AA5AC: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlPSE_E_ED2Ev' +000AA5AD: mov rbp, rsp +000AA5B0: push rbx +000AA5B1: sub rsp, 28h +000AA5B5: mov [rbp+var_28], rdi +000AA5B9: mov rax, [rbp+var_28] +000AA5BD: mov rdi, rax +000AA5C0: call __ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_; std::get<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::tuple_element<0ul,std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>&) +000AA5C5: mov [rbp+var_18], rax +000AA5C9: mov rax, [rbp+var_18] +000AA5CD: mov rax, [rax] +000AA5D0: test rax, rax +000AA5D3: jz short loc_AA5F3 +000AA5D5: mov rax, [rbp+var_18] +000AA5D9: mov rbx, [rax] +000AA5DC: mov rax, [rbp+var_28] +000AA5E0: mov rdi, rax +000AA5E3: call __ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E11get_deleterEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get_deleter(void) +000AA5E8: mov rsi, rbx +000AA5EB: mov rdi, rax +000AA5EE: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS1_ISsS6_St4lessISsESaISt4pairIKSsS6_EEEIRKSE_EEEPT_DpOT0_ENKUlPSE_E_clESM_; nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}::operator()({lambda(std::map>>,std::less,std::allocator>>>>>*)#1}) +000AA5F3: mov rax, [rbp+var_18] +000AA5F7: mov qword ptr [rax], 0 +000AA5FE: add rsp, 28h +000AA602: pop rbx +000AA603: pop rbp +000AA604: retn + +### FUNC 000AA605 - 000AA623 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERKSP_ +000AA605: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERKSP_' +000AA606: mov rbp, rsp +000AA609: sub rsp, 10h +000AA60D: mov [rbp+var_8], rdi +000AA611: mov rax, [rbp+var_8] +000AA615: add rax, 8 +000AA619: mov rdi, rax +000AA61C: call __ZNSt10_Head_baseILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEELb0EE7_M_headERKSG_; std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false>::_M_head(std::_Head_base<0ul,std::map>>,std::less,std::allocator>>>>> *,false> const&) +000AA621: leave +000AA622: retn + +### FUNC 000AA623 - 000AA63D (26 bytes) name=_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSQ_DpT1_EE +000AA623: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEIZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISQ_DpT1_EE' +000AA624: mov rbp, rsp +000AA627: sub rsp, 10h +000AA62B: mov [rbp+var_8], rdi +000AA62F: mov rax, [rbp+var_8] +000AA633: mov rdi, rax +000AA636: call __ZNSt11_Tuple_implILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EE7_M_headERKSP_ +000AA63B: leave +000AA63C: retn + +### FUNC 000AA63D - 000AA657 (26 bytes) name=_ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSU_ +000AA63D: push rbp; Alternative name is '_ZSt3getILm0EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSU_' +000AA63E: mov rbp, rsp +000AA641: sub rsp, 10h +000AA645: mov [rbp+var_8], rdi +000AA649: mov rax, [rbp+var_8] +000AA64D: mov rdi, rax +000AA650: call __ZSt12__get_helperILm0EPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEJZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSQ_DpT1_EE; std::__get_helper<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::_Tuple_impl<0ul,std::__add_c_ref>>,std::less,std::allocator>>>>> *>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}> const&) +000AA655: leave +000AA656: retn + +### FUNC 000AA658 - 000AA675 (29 bytes) name=_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv +000AA658: push rbp; Alternative name is '_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv' +000AA659: mov rbp, rsp +000AA65C: sub rsp, 10h +000AA660: mov [rbp+var_8], rdi +000AA664: mov rax, [rbp+var_8] +000AA668: mov rdi, rax +000AA66B: call __ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSU_; std::get<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::tuple_element<0ul,std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>> const&) +000AA670: mov rax, [rax] +000AA673: leave +000AA674: retn + +### FUNC 000AA675 - 000AA6AD (56 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_JRKSE_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSK_ +000AA675: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE9constructISE_IRKSE_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSF_PT_DpOSK_' +000AA676: mov rbp, rsp +000AA679: sub rsp, 20h +000AA67D: mov [rbp+var_8], rdi +000AA681: mov [rbp+var_10], rsi +000AA685: mov [rbp+var_18], rdx +000AA689: mov rax, [rbp+var_18] +000AA68D: mov rdi, rax +000AA690: call __ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> const&>(std::remove_reference>>,std::less,std::allocator>>>>> const&>::type &) +000AA695: mov rdx, rax +000AA698: mov rcx, [rbp+var_10] +000AA69C: mov rax, [rbp+var_8] +000AA6A0: mov rsi, rcx +000AA6A3: mov rdi, rax +000AA6A6: call __ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JRKSE_EEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSM_DpOSN_; std::allocator_traits>>,std::less,std::allocator>>>>>>>::_S_construct>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::allocator>>,std::less,std::allocator>>>>>>&,std::map>>,std::less,std::allocator>>>>>*,std::map>>,std::less,std::allocator>>>>> const&&&) +000AA6AB: leave +000AA6AC: retn + +### FUNC 000AA6AD - 000AA6CB (30 bytes) name=_ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn +000AA6AD: push rbp; Alternative name is '_ZStneISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlPSE_E_EbRKSt10unique_ptrIT_T0_EDn' +000AA6AE: mov rbp, rsp +000AA6B1: sub rsp, 10h +000AA6B5: mov [rbp+var_8], rdi +000AA6B9: mov [rbp+var_10], rsi +000AA6BD: mov rax, [rbp+var_8] +000AA6C1: mov rdi, rax +000AA6C4: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EcvbEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::operator bool(void) +000AA6C9: leave +000AA6CA: retn + +### FUNC 000AA6CC - 000AA701 (53 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E7releaseEv +000AA6CC: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlPSE_E_E7releaseEv' +000AA6CD: mov rbp, rsp +000AA6D0: sub rsp, 20h +000AA6D4: mov [rbp+var_18], rdi +000AA6D8: mov rax, [rbp+var_18] +000AA6DC: mov rdi, rax +000AA6DF: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get(void) +000AA6E4: mov [rbp+var_8], rax +000AA6E8: mov rax, [rbp+var_18] +000AA6EC: mov rdi, rax +000AA6EF: call __ZSt3getILm0EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_; std::get<0ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::tuple_element<0ul,std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>&) +000AA6F4: mov qword ptr [rax], 0 +000AA6FB: mov rax, [rbp+var_8] +000AA6FF: leave +000AA700: retn + +### FUNC 000AA701 - 000AA70F (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +000AA701: push rbp; Alternative name is 'std::vector>>, std::allocator>>>> * nlohmann::basic_json>>::create>>, std::allocator>>, std::allocator>>>> * nlohmann::basic_json>>::create>>, std::allocator>>, std::allocator>>>> * nlohmann::basic_json>>::create>>, std::allocator::_Tuple_impl(void) +000AA748: mov rax, [rbp+var_8] +000AA74C: mov rdx, [rbp+var_10] +000AA750: mov rsi, rdx +000AA753: mov rdi, rax +000AA756: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_; std::_Head_base<1ul,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1},false>::_Head_base(std::_Head_base<1ul,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1},false> const&) +000AA75B: leave +000AA75C: retn + +### FUNC 000AA75E - 000AA7B1 (83 bytes) name=_ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSJ_EvEEOSE_SI_ +000AA75E: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_IRKSJ_EvEEOSE_SI_' +000AA75F: mov rbp, rsp +000AA762: sub rsp, 20h +000AA766: mov [rbp+var_8], rdi +000AA76A: mov [rbp+var_10], rsi +000AA76E: mov [rbp+var_18], rdx +000AA772: mov rax, [rbp+var_18] +000AA776: mov rdi, rax +000AA779: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE; std::forward>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1} const&>(std::remove_reference::type &) +000AA77E: mov rdx, rax +000AA781: mov rax, [rbp+var_8] +000AA785: mov rsi, rdx +000AA788: mov rdi, rax +000AA78B: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_; std::_Tuple_impl<1ul,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::_Tuple_impl(std::_Tuple_impl<1ul,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}> const&) +000AA790: mov rax, [rbp+var_10] +000AA794: mov rdi, rax +000AA797: call __ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> *&>(std::remove_reference>>,std::allocator>>>> *&>::type &) +000AA79C: mov rdx, [rbp+var_8] +000AA7A0: add rdx, 8 +000AA7A4: mov rsi, rax +000AA7A7: mov rdi, rdx +000AA7AA: call __ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EEC2IRSA_EEOT_; std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>::_Head_base>>,std::allocator>>>> *&>(std::vector>>,std::allocator>>>> *&) +000AA7AF: leave +000AA7B0: retn + +### FUNC 000AA7B2 - 000AA7FE (76 bytes) name=_ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSJ_vEEOSE_OT0_ +000AA7B2: push rbp; Alternative name is 'std::tuple>>, std::allocator>>>> *, std::vector>>, std::allocator>>>> * nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1} const&>(std::remove_reference::type &) +000AA7D3: mov rbx, rax +000AA7D6: mov rax, [rbp+var_20] +000AA7DA: mov rdi, rax +000AA7DD: call __ZSt7forwardIRPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> *&>(std::remove_reference>>,std::allocator>>>> *&>::type &) +000AA7E2: mov rcx, rax +000AA7E5: mov rax, [rbp+var_18] +000AA7E9: mov rdx, rbx +000AA7EC: mov rsi, rcx +000AA7EF: mov rdi, rax +000AA7F2: call __ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_JRKSJ_EvEEOSE_SI_; std::_Tuple_impl<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>::_Tuple_impl>>,std::allocator>>>> *&,std::_Tuple_impl<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}> const&,void>(std::vector>>,std::allocator>>>>&&,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}) +000AA7F7: add rsp, 28h +000AA7FB: pop rbx +000AA7FC: pop rbp +000AA7FD: retn + +### FUNC 000AA7FE - 000AA82B (45 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EC2ESI_RKSJ_ +000AA7FE: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_EC2ESI_RKSJ_' +000AA7FF: mov rbp, rsp +000AA802: sub rsp, 20h +000AA806: mov [rbp+var_8], rdi +000AA80A: mov [rbp+var_10], rsi +000AA80E: mov [rbp+var_18], rdx +000AA812: mov rax, [rbp+var_8] +000AA816: mov rdx, [rbp+var_18] +000AA81A: lea rcx, [rbp+var_10] +000AA81E: mov rsi, rcx +000AA821: mov rdi, rax +000AA824: call __ZNSt5tupleIJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EEC2IRSA_RKSJ_vEEOSE_OT0_; std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>::tuple>>,std::allocator>>>> *&,std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}> const&,void>(std::vector>>,std::allocator>>>>&&,std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}> const&) +000AA829: leave +000AA82A: retn + +### FUNC 000AA82B - 000AA849 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERSK_ +000AA82B: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERSK_' +000AA82C: mov rbp, rsp +000AA82F: sub rsp, 10h +000AA833: mov [rbp+var_8], rdi +000AA837: mov rax, [rbp+var_8] +000AA83B: add rax, 8 +000AA83F: mov rdi, rax +000AA842: call __ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERSB_; std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>::_M_head(std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>&) +000AA847: leave +000AA848: retn + +### FUNC 000AA849 - 000AA863 (26 bytes) name=_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000AA849: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEIZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISL_DpT1_EE' +000AA84A: mov rbp, rsp +000AA84D: sub rsp, 10h +000AA851: mov [rbp+var_8], rdi +000AA855: mov rax, [rbp+var_8] +000AA859: mov rdi, rax +000AA85C: call __ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERSK_ +000AA861: leave +000AA862: retn + +### FUNC 000AA863 - 000AA87D (26 bytes) name=_ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000AA863: push rbp; Alternative name is '_ZSt3getILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSP_' +000AA864: mov rbp, rsp +000AA867: sub rsp, 10h +000AA86B: mov [rbp+var_8], rdi +000AA86F: mov rax, [rbp+var_8] +000AA873: mov rdi, rax +000AA876: call __ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE; std::__get_helper<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::_Tuple_impl<0ul,std::__add_ref>>,std::allocator>>>> *>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}> &) +000AA87B: leave +000AA87C: retn + +### FUNC 000AA87E - 000AA8D7 (89 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_ED2Ev +000AA87E: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_ED1Ev' +000AA87F: mov rbp, rsp +000AA882: push rbx +000AA883: sub rsp, 28h +000AA887: mov [rbp+var_28], rdi +000AA88B: mov rax, [rbp+var_28] +000AA88F: mov rdi, rax +000AA892: call __ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_; std::get<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::tuple_element<0ul,std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>>&) +000AA897: mov [rbp+var_18], rax +000AA89B: mov rax, [rbp+var_18] +000AA89F: mov rax, [rax] +000AA8A2: test rax, rax +000AA8A5: jz short loc_AA8C5 +000AA8A7: mov rax, [rbp+var_18] +000AA8AB: mov rbx, [rax] +000AA8AE: mov rax, [rbp+var_28] +000AA8B2: mov rdi, rax +000AA8B5: call __ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E11get_deleterEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get_deleter(void) +000AA8BA: mov rsi, rbx +000AA8BD: mov rdi, rax +000AA8C0: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createIS2_IS6_SaIS6_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_; nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}::operator()({lambda(std::vector>>,std::allocator>>>>*)#1}) +000AA8C5: mov rax, [rbp+var_18] +000AA8C9: mov qword ptr [rax], 0 +000AA8D0: add rsp, 28h +000AA8D4: pop rbx +000AA8D5: pop rbp +000AA8D6: retn + +### FUNC 000AA8D7 - 000AA8F5 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERKSK_ +000AA8D7: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERKSK_' +000AA8D8: mov rbp, rsp +000AA8DB: sub rsp, 10h +000AA8DF: mov [rbp+var_8], rdi +000AA8E3: mov rax, [rbp+var_8] +000AA8E7: add rax, 8 +000AA8EB: mov rdi, rax +000AA8EE: call __ZNSt10_Head_baseILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EELb0EE7_M_headERKSB_; std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false>::_M_head(std::_Head_base<0ul,std::vector>>,std::allocator>>>> *,false> const&) +000AA8F3: leave +000AA8F4: retn + +### FUNC 000AA8F5 - 000AA90F (26 bytes) name=_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +000AA8F5: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEIZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISL_DpT1_EE' +000AA8F6: mov rbp, rsp +000AA8F9: sub rsp, 10h +000AA8FD: mov [rbp+var_8], rdi +000AA901: mov rax, [rbp+var_8] +000AA905: mov rdi, rax +000AA908: call __ZNSt11_Tuple_implILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EE7_M_headERKSK_ +000AA90D: leave +000AA90E: retn + +### FUNC 000AA90F - 000AA929 (26 bytes) name=_ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +000AA90F: push rbp; Alternative name is '_ZSt3getILm0EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSP_' +000AA910: mov rbp, rsp +000AA913: sub rsp, 10h +000AA917: mov [rbp+var_8], rdi +000AA91B: mov rax, [rbp+var_8] +000AA91F: mov rdi, rax +000AA922: call __ZSt12__get_helperILm0EPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEJZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE; std::__get_helper<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::_Tuple_impl<0ul,std::__add_c_ref>>,std::allocator>>>> *>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}> const&) +000AA927: leave +000AA928: retn + +### FUNC 000AA92A - 000AA947 (29 bytes) name=_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv +000AA92A: push rbp; Alternative name is '_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv' +000AA92B: mov rbp, rsp +000AA92E: sub rsp, 10h +000AA932: mov [rbp+var_8], rdi +000AA936: mov rax, [rbp+var_8] +000AA93A: mov rdi, rax +000AA93D: call __ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_; std::get<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::tuple_element<0ul,std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>> const&) +000AA942: mov rax, [rax] +000AA945: leave +000AA946: retn + +### FUNC 000AA947 - 000AA97F (56 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_JRKS9_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSF_ +000AA947: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE9constructIS9_IRKS9_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSA_PT_DpOSF_' +000AA948: mov rbp, rsp +000AA94B: sub rsp, 20h +000AA94F: mov [rbp+var_8], rdi +000AA953: mov [rbp+var_10], rsi +000AA957: mov [rbp+var_18], rdx +000AA95B: mov rax, [rbp+var_18] +000AA95F: mov rdi, rax +000AA962: call __ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> const&>(std::remove_reference>>,std::allocator>>>> const&>::type &) +000AA967: mov rdx, rax +000AA96A: mov rcx, [rbp+var_10] +000AA96E: mov rax, [rbp+var_8] +000AA972: mov rsi, rcx +000AA975: mov rdi, rax +000AA978: call __ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JRKS9_EEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSH_DpOSI_; std::allocator_traits>>,std::allocator>>>>>>::_S_construct>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::allocator>>,std::allocator>>>>>&,std::vector>>,std::allocator>>>>*,std::vector>>,std::allocator>>>> const&&&) +000AA97D: leave +000AA97E: retn + +### FUNC 000AA97F - 000AA99D (30 bytes) name=_ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn +000AA97F: push rbp; Alternative name is '_ZStneISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_EbRKSt10unique_ptrIT_T0_EDn' +000AA980: mov rbp, rsp +000AA983: sub rsp, 10h +000AA987: mov [rbp+var_8], rdi +000AA98B: mov [rbp+var_10], rsi +000AA98F: mov rax, [rbp+var_8] +000AA993: mov rdi, rax +000AA996: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EcvbEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::operator bool(void) +000AA99B: leave +000AA99C: retn + +### FUNC 000AA99E - 000AA9D3 (53 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E7releaseEv +000AA99E: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_E7releaseEv' +000AA99F: mov rbp, rsp +000AA9A2: sub rsp, 20h +000AA9A6: mov [rbp+var_18], rdi +000AA9AA: mov rax, [rbp+var_18] +000AA9AE: mov rdi, rax +000AA9B1: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get(void) +000AA9B6: mov [rbp+var_8], rax +000AA9BA: mov rax, [rbp+var_18] +000AA9BE: mov rdi, rax +000AA9C1: call __ZSt3getILm0EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_; std::get<0ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::tuple_element<0ul,std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>>&) +000AA9C6: mov qword ptr [rax], 0 +000AA9CD: mov rax, [rbp+var_8] +000AA9D1: leave +000AA9D2: retn + +### FUNC 000AA9D3 - 000AA9E1 (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE +000AA9D3: push rbp; Alternative name is '_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE' +000AA9D4: mov rbp, rsp +000AA9D7: mov [rbp+var_8], rdi +000AA9DB: mov rax, [rbp+var_8] +000AA9DF: pop rbp +000AA9E0: retn + +### FUNC 000AA9E2 - 000AA9FE (28 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSH_ +000AA9E2: push rbp; Alternative name is 'std::_Head_base<1ul, std::string * nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}, false>::_Head_base(std::_Head_base<1ul, std::string * nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}, false> const&)' +000AA9E3: mov rbp, rsp +000AA9E6: mov [rbp+var_8], rdi +000AA9EA: mov [rbp+var_10], rsi +000AA9EE: mov rax, [rbp+var_8] +000AA9F2: mov rdx, [rbp+var_10] +000AA9F6: mov rdx, [rdx] +000AA9F9: mov [rax], rdx +000AA9FC: pop rbp +000AA9FD: retn + +### FUNC 000AA9FE - 000AAA2F (49 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EEC2ERKSH_ +000AA9FE: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_EEC2ERKSH_' +000AA9FF: mov rbp, rsp +000AAA02: sub rsp, 10h +000AAA06: mov [rbp+var_8], rdi +000AAA0A: mov [rbp+var_10], rsi +000AAA0E: mov rax, [rbp+var_8] +000AAA12: mov rdi, rax +000AAA15: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000AAA1A: mov rax, [rbp+var_8] +000AAA1E: mov rdx, [rbp+var_10] +000AAA22: mov rsi, rdx +000AAA25: mov rdi, rax +000AAA28: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EEC2ERKSH_; std::_Head_base<1ul,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1},false>::_Head_base(std::_Head_base<1ul,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1},false> const&) +000AAA2D: leave +000AAA2E: retn + +### FUNC 000AAA30 - 000AAA83 (83 bytes) name=_ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSH_EvEEOSC_SG_ +000AAA30: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EEC1IRS0_IRKSH_EvEEOSC_SG_' +000AAA31: mov rbp, rsp +000AAA34: sub rsp, 20h +000AAA38: mov [rbp+var_8], rdi +000AAA3C: mov [rbp+var_10], rsi +000AAA40: mov [rbp+var_18], rdx +000AAA44: mov rax, [rbp+var_18] +000AAA48: mov rdi, rax +000AAA4B: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE; std::forward>>::create(std::string const&)::{lambda(std::string *)#1} const&>(std::remove_reference::type &) +000AAA50: mov rdx, rax +000AAA53: mov rax, [rbp+var_8] +000AAA57: mov rsi, rdx +000AAA5A: mov rdi, rax +000AAA5D: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EEC2ERKSH_; std::_Tuple_impl<1ul,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>::_Tuple_impl(std::_Tuple_impl<1ul,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}> const&) +000AAA62: mov rax, [rbp+var_10] +000AAA66: mov rdi, rax +000AAA69: call __ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000AAA6E: mov rdx, [rbp+var_8] +000AAA72: add rdx, 8 +000AAA76: mov rsi, rax +000AAA79: mov rdi, rdx +000AAA7C: call __ZNSt10_Head_baseILm0EPSsLb0EEC2IRS0_EEOT_; std::_Head_base<0ul,std::string *,false>::_Head_base(std::string *&) +000AAA81: leave +000AAA82: retn + +### FUNC 000AAA84 - 000AAAD0 (76 bytes) name=_ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSH_vEEOSC_OT0_ +000AAA84: push rbp; Alternative name is '_ZNSt5tupleIIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSH_vEEOSC_OT0_' +000AAA85: mov rbp, rsp +000AAA88: push rbx +000AAA89: sub rsp, 28h +000AAA8D: mov [rbp+var_18], rdi +000AAA91: mov [rbp+var_20], rsi +000AAA95: mov [rbp+var_28], rdx +000AAA99: mov rax, [rbp+var_28] +000AAA9D: mov rdi, rax +000AAAA0: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EOT_RNSt16remove_referenceISK_E4typeE; std::forward>>::create(std::string const&)::{lambda(std::string *)#1} const&>(std::remove_reference::type &) +000AAAA5: mov rbx, rax +000AAAA8: mov rax, [rbp+var_20] +000AAAAC: mov rdi, rax +000AAAAF: call __ZSt7forwardIRPSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000AAAB4: mov rcx, rax +000AAAB7: mov rax, [rbp+var_18] +000AAABB: mov rdx, rbx +000AAABE: mov rsi, rcx +000AAAC1: mov rdi, rax +000AAAC4: call __ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_JRKSH_EvEEOSC_SG_; std::_Tuple_impl<0ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>::_Tuple_impl>>::create(std::string const&)::{lambda(std::string *)#1}> const&,void>(std::string&&,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}) +000AAAC9: add rsp, 28h +000AAACD: pop rbx +000AAACE: pop rbp +000AAACF: retn + +### FUNC 000AAAD0 - 000AAAFD (45 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EC2ESG_RKSH_ +000AAAD0: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_EC1ESG_RKSH_' +000AAAD1: mov rbp, rsp +000AAAD4: sub rsp, 20h +000AAAD8: mov [rbp+var_8], rdi +000AAADC: mov [rbp+var_10], rsi +000AAAE0: mov [rbp+var_18], rdx +000AAAE4: mov rax, [rbp+var_8] +000AAAE8: mov rdx, [rbp+var_18] +000AAAEC: lea rcx, [rbp+var_10] +000AAAF0: mov rsi, rcx +000AAAF3: mov rdi, rax +000AAAF6: call __ZNSt5tupleIJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EEC2IRS0_RKSH_vEEOSC_OT0_; std::tuple>>::create(std::string const&)::{lambda(std::string *)#1}>::tuple>>::create(std::string const&)::{lambda(std::string *)#1}> const&,void>(std::string&&,std::tuple>>::create(std::string const&)::{lambda(std::string *)#1}> const&) +000AAAFB: leave +000AAAFC: retn + +### FUNC 000AAAFD - 000AAB1B (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERSI_ +000AAAFD: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERSI_' +000AAAFE: mov rbp, rsp +000AAB01: sub rsp, 10h +000AAB05: mov [rbp+var_8], rdi +000AAB09: mov rax, [rbp+var_8] +000AAB0D: add rax, 8 +000AAB11: mov rdi, rax +000AAB14: call __ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERS1_; std::_Head_base<0ul,std::string *,false>::_M_head(std::_Head_base<0ul,std::string *,false>&) +000AAB19: leave +000AAB1A: retn + +### FUNC 000AAB1B - 000AAB35 (26 bytes) name=_ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000AAB1B: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSsIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISJ_DpT1_EE' +000AAB1C: mov rbp, rsp +000AAB1F: sub rsp, 10h +000AAB23: mov [rbp+var_8], rdi +000AAB27: mov rax, [rbp+var_8] +000AAB2B: mov rdi, rax +000AAB2E: call __ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERSI_ +000AAB33: leave +000AAB34: retn + +### FUNC 000AAB35 - 000AAB4F (26 bytes) name=_ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000AAB35: push rbp; Alternative name is '_ZSt3getILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSN_' +000AAB36: mov rbp, rsp +000AAB39: sub rsp, 10h +000AAB3D: mov [rbp+var_8], rdi +000AAB41: mov rax, [rbp+var_8] +000AAB45: mov rdi, rax +000AAB48: call __ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE; std::__get_helper<0ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>(std::_Tuple_impl<0ul,std::__add_ref,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}> &) +000AAB4D: leave +000AAB4E: retn + +### FUNC 000AAB50 - 000AABA9 (89 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev +000AAB50: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_ED2Ev' +000AAB51: mov rbp, rsp +000AAB54: push rbx +000AAB55: sub rsp, 28h +000AAB59: mov [rbp+var_28], rdi +000AAB5D: mov rax, [rbp+var_28] +000AAB61: mov rdi, rax +000AAB64: call __ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<0ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>(std::tuple_element<0ul,std::tuple>>::create(std::string const&)::{lambda(std::string *)#1}>>&) +000AAB69: mov [rbp+var_18], rax +000AAB6D: mov rax, [rbp+var_18] +000AAB71: mov rax, [rax] +000AAB74: test rax, rax +000AAB77: jz short loc_AAB97 +000AAB79: mov rax, [rbp+var_18] +000AAB7D: mov rbx, [rax] +000AAB80: mov rax, [rbp+var_28] +000AAB84: mov rdi, rax +000AAB87: call __ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E11get_deleterEv; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::get_deleter(void) +000AAB8C: mov rsi, rbx +000AAB8F: mov rdi, rax +000AAB92: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_ENKUlPSsE_clESF_ +000AAB97: mov rax, [rbp+var_18] +000AAB9B: mov qword ptr [rax], 0 +000AABA2: add rsp, 28h +000AABA6: pop rbx +000AABA7: pop rbp +000AABA8: retn + +### FUNC 000AABA9 - 000AABC7 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSI_ +000AABA9: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSI_' +000AABAA: mov rbp, rsp +000AABAD: sub rsp, 10h +000AABB1: mov [rbp+var_8], rdi +000AABB5: mov rax, [rbp+var_8] +000AABB9: add rax, 8 +000AABBD: mov rdi, rax +000AABC0: call __ZNSt10_Head_baseILm0EPSsLb0EE7_M_headERKS1_; std::_Head_base<0ul,std::string *,false>::_M_head(std::_Head_base<0ul,std::string *,false> const&) +000AABC5: leave +000AABC6: retn + +### FUNC 000AABC7 - 000AABE1 (26 bytes) name=_ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE +000AABC7: push rbp; Alternative name is '_ZSt12__get_helperILm0EPSsIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISJ_DpT1_EE' +000AABC8: mov rbp, rsp +000AABCB: sub rsp, 10h +000AABCF: mov [rbp+var_8], rdi +000AABD3: mov rax, [rbp+var_8] +000AABD7: mov rdi, rax +000AABDA: call __ZNSt11_Tuple_implILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EE7_M_headERKSI_ +000AABDF: leave +000AABE0: retn + +### FUNC 000AABE1 - 000AABFB (26 bytes) name=_ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_ +000AABE1: push rbp; Alternative name is '_ZSt3getILm0EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSN_' +000AABE2: mov rbp, rsp +000AABE5: sub rsp, 10h +000AABE9: mov [rbp+var_8], rdi +000AABED: mov rax, [rbp+var_8] +000AABF1: mov rdi, rax +000AABF4: call __ZSt12__get_helperILm0EPSsJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSJ_DpT1_EE; std::__get_helper<0ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>(std::_Tuple_impl<0ul,std::__add_c_ref,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}> const&) +000AABF9: leave +000AABFA: retn + +### FUNC 000AABFC - 000AAC19 (29 bytes) name=_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv +000AABFC: push rbp; Alternative name is '_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_E3getEv' +000AABFD: mov rbp, rsp +000AAC00: sub rsp, 10h +000AAC04: mov [rbp+var_8], rdi +000AAC08: mov rax, [rbp+var_8] +000AAC0C: mov rdi, rax +000AAC0F: call __ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSN_; std::get<0ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>(std::tuple_element<0ul,std::tuple>>::create(std::string const&)::{lambda(std::string *)#1}>> const&) +000AAC14: mov rax, [rax] +000AAC17: leave +000AAC18: retn + +### FUNC 000AAC19 - 000AAC37 (30 bytes) name=_ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn +000AAC19: push rbp; Alternative name is '_ZStneISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_EbRKSt10unique_ptrIT_T0_EDn' +000AAC1A: mov rbp, rsp +000AAC1D: sub rsp, 10h +000AAC21: mov [rbp+var_8], rdi +000AAC25: mov [rbp+var_10], rsi +000AAC29: mov rax, [rbp+var_8] +000AAC2D: mov rdi, rax +000AAC30: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EcvbEv; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::operator bool(void) +000AAC35: leave +000AAC36: retn + +### FUNC 000AAC38 - 000AAC6D (53 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E7releaseEv +000AAC38: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_E7releaseEv' +000AAC39: mov rbp, rsp +000AAC3C: sub rsp, 20h +000AAC40: mov [rbp+var_18], rdi +000AAC44: mov rax, [rbp+var_18] +000AAC48: mov rdi, rax +000AAC4B: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::get(void) +000AAC50: mov [rbp+var_8], rax +000AAC54: mov rax, [rbp+var_18] +000AAC58: mov rdi, rax +000AAC5B: call __ZSt3getILm0EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<0ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>(std::tuple_element<0ul,std::tuple>>::create(std::string const&)::{lambda(std::string *)#1}>>&) +000AAC60: mov qword ptr [rax], 0 +000AAC67: mov rax, [rbp+var_8] +000AAC6B: leave +000AAC6C: retn + +### FUNC 000AAC6D - 000AAC7B (14 bytes) name=_ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE +000AAC6D: push rbp; Alternative name is 'nlohmann::byte_container_with_subtype>> * nlohmann::basic_json>>::create>>, nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1} const& std::forward>> * nlohmann::basic_json>> * nlohmann::basic_json>>::create>>, nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}, false>::_Head_base(std::_Head_base<1ul, nlohmann::byte_container_with_subtype>> * nlohmann::basic_json>> * nlohmann::basic_json>>::create>>, nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::_Tuple_impl(std::_Tuple_impl<1ul, nlohmann::byte_container_with_subtype>> * nlohmann::basic_json::_Tuple_impl(void) +000AACB4: mov rax, [rbp+var_8] +000AACB8: mov rdx, [rbp+var_10] +000AACBC: mov rsi, rdx +000AACBF: mov rdi, rax +000AACC2: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EEC2ERKSJ_; std::_Head_base<1ul,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1},false>::_Head_base(std::_Head_base<1ul,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1},false> const&) +000AACC7: leave +000AACC8: retn + +### FUNC 000AACCA - 000AAD1D (83 bytes) name=_ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSJ_EvEEOSE_SI_ +000AACCA: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_IRKSJ_EvEEOSE_SI_' +000AACCB: mov rbp, rsp +000AACCE: sub rsp, 20h +000AACD2: mov [rbp+var_8], rdi +000AACD6: mov [rbp+var_10], rsi +000AACDA: mov [rbp+var_18], rdx +000AACDE: mov rax, [rbp+var_18] +000AACE2: mov rdi, rax +000AACE5: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE; std::forward>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1} const&>(std::remove_reference::type &) +000AACEA: mov rdx, rax +000AACED: mov rax, [rbp+var_8] +000AACF1: mov rsi, rdx +000AACF4: mov rdi, rax +000AACF7: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EEC2ERKSJ_; std::_Tuple_impl<1ul,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::_Tuple_impl(std::_Tuple_impl<1ul,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}> const&) +000AACFC: mov rax, [rbp+var_10] +000AAD00: mov rdi, rax +000AAD03: call __ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> *&>(std::remove_reference>> *&>::type &) +000AAD08: mov rdx, [rbp+var_8] +000AAD0C: add rdx, 8 +000AAD10: mov rsi, rax +000AAD13: mov rdi, rdx +000AAD16: call __ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EEC2IRS6_EEOT_; std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>::_Head_base>> *&>(nlohmann::byte_container_with_subtype>> *&) +000AAD1B: leave +000AAD1C: retn + +### FUNC 000AAD1E - 000AAD6A (76 bytes) name=_ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSJ_vEEOSE_OT0_ +000AAD1E: push rbp; Alternative name is '_ZNSt5tupleIIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSJ_vEEOSE_OT0_' +000AAD1F: mov rbp, rsp +000AAD22: push rbx +000AAD23: sub rsp, 28h +000AAD27: mov [rbp+var_18], rdi +000AAD2B: mov [rbp+var_20], rsi +000AAD2F: mov [rbp+var_28], rdx +000AAD33: mov rax, [rbp+var_28] +000AAD37: mov rdi, rax +000AAD3A: call __ZSt7forwardIRKZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EOT_RNSt16remove_referenceISM_E4typeE; std::forward>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1} const&>(std::remove_reference::type &) +000AAD3F: mov rbx, rax +000AAD42: mov rax, [rbp+var_20] +000AAD46: mov rdi, rax +000AAD49: call __ZSt7forwardIRPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> *&>(std::remove_reference>> *&>::type &) +000AAD4E: mov rcx, rax +000AAD51: mov rax, [rbp+var_18] +000AAD55: mov rdx, rbx +000AAD58: mov rsi, rcx +000AAD5B: mov rdi, rax +000AAD5E: call __ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_JRKSJ_EvEEOSE_SI_; std::_Tuple_impl<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::_Tuple_impl>> *&,std::_Tuple_impl<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> const&,void>(nlohmann::byte_container_with_subtype>>&&,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}) +000AAD63: add rsp, 28h +000AAD67: pop rbx +000AAD68: pop rbp +000AAD69: retn + +### FUNC 000AAD6A - 000AAD97 (45 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EC2ESI_RKSJ_ +000AAD6A: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_EC1ESI_RKSJ_' +000AAD6B: mov rbp, rsp +000AAD6E: sub rsp, 20h +000AAD72: mov [rbp+var_8], rdi +000AAD76: mov [rbp+var_10], rsi +000AAD7A: mov [rbp+var_18], rdx +000AAD7E: mov rax, [rbp+var_8] +000AAD82: mov rdx, [rbp+var_18] +000AAD86: lea rcx, [rbp+var_10] +000AAD8A: mov rsi, rcx +000AAD8D: mov rdi, rax +000AAD90: call __ZNSt5tupleIJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EEC2IRS6_RKSJ_vEEOSE_OT0_; std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>::tuple>> *&,std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> const&,void>(nlohmann::byte_container_with_subtype>>&&,std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> const&) +000AAD95: leave +000AAD96: retn + +### FUNC 000AAD97 - 000AADB5 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERSK_ +000AAD97: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERSK_' +000AAD98: mov rbp, rsp +000AAD9B: sub rsp, 10h +000AAD9F: mov [rbp+var_8], rdi +000AADA3: mov rax, [rbp+var_8] +000AADA7: add rax, 8 +000AADAB: mov rdi, rax +000AADAE: call __ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERS7_; std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>::_M_head(std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>&) +000AADB3: leave +000AADB4: retn + +### FUNC 000AADB5 - 000AADCF (26 bytes) name=_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000AADB5: push rbp; Alternative name is '_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEIZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISL_DpT1_EE' +000AADB6: mov rbp, rsp +000AADB9: sub rsp, 10h +000AADBD: mov [rbp+var_8], rdi +000AADC1: mov rax, [rbp+var_8] +000AADC5: mov rdi, rax +000AADC8: call __ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERSK_ +000AADCD: leave +000AADCE: retn + +### FUNC 000AADCF - 000AADE9 (26 bytes) name=_ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000AADCF: push rbp; Alternative name is '_ZSt3getILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSP_' +000AADD0: mov rbp, rsp +000AADD3: sub rsp, 10h +000AADD7: mov [rbp+var_8], rdi +000AADDB: mov rax, [rbp+var_8] +000AADDF: mov rdi, rax +000AADE2: call __ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE; std::__get_helper<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::_Tuple_impl<0ul,std::__add_ref>> *>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> &) +000AADE7: leave +000AADE8: retn + +### FUNC 000AADEA - 000AAE43 (89 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev +000AADEA: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_ED2Ev' +000AADEB: mov rbp, rsp +000AADEE: push rbx +000AADEF: sub rsp, 28h +000AADF3: mov [rbp+var_28], rdi +000AADF7: mov rax, [rbp+var_28] +000AADFB: mov rdi, rax +000AADFE: call __ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_; std::get<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::tuple_element<0ul,std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>&) +000AAE03: mov [rbp+var_18], rax +000AAE07: mov rax, [rbp+var_18] +000AAE0B: mov rax, [rax] +000AAE0E: test rax, rax +000AAE11: jz short loc_AAE31 +000AAE13: mov rax, [rbp+var_18] +000AAE17: mov rbx, [rax] +000AAE1A: mov rax, [rbp+var_28] +000AAE1E: mov rdi, rax +000AAE21: call __ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E11get_deleterEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get_deleter(void) +000AAE26: mov rsi, rbx +000AAE29: mov rdi, rax +000AAE2C: call __ZZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE6createINS_27byte_container_with_subtypeIS5_EEIRKS9_EEEPT_DpOT0_ENKUlPS9_E_clESH_; nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}::operator()({lambda(nlohmann::byte_container_with_subtype>>*)#1}) +000AAE31: mov rax, [rbp+var_18] +000AAE35: mov qword ptr [rax], 0 +000AAE3C: add rsp, 28h +000AAE40: pop rbx +000AAE41: pop rbp +000AAE42: retn + +### FUNC 000AAE43 - 000AAE61 (30 bytes) name=_ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERKSK_ +000AAE43: push rbp; Alternative name is '_ZNSt11_Tuple_implILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERKSK_' +000AAE44: mov rbp, rsp +000AAE47: sub rsp, 10h +000AAE4B: mov [rbp+var_8], rdi +000AAE4F: mov rax, [rbp+var_8] +000AAE53: add rax, 8 +000AAE57: mov rdi, rax +000AAE5A: call __ZNSt10_Head_baseILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEELb0EE7_M_headERKS7_; std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false>::_M_head(std::_Head_base<0ul,nlohmann::byte_container_with_subtype>> *,false> const&) +000AAE5F: leave +000AAE60: retn + +### FUNC 000AAE61 - 000AAE7B (26 bytes) name=_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE +000AAE61: push rbp; Alternative name is '_ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEIZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EISL_DpT1_EE' +000AAE62: mov rbp, rsp +000AAE65: sub rsp, 10h +000AAE69: mov [rbp+var_8], rdi +000AAE6D: mov rax, [rbp+var_8] +000AAE71: mov rdi, rax +000AAE74: call __ZNSt11_Tuple_implILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EE7_M_headERKSK_ +000AAE79: leave +000AAE7A: retn + +### FUNC 000AAE7B - 000AAE95 (26 bytes) name=_ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_ +000AAE7B: push rbp; Alternative name is '_ZSt3getILm0EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERKSP_' +000AAE7C: mov rbp, rsp +000AAE7F: sub rsp, 10h +000AAE83: mov [rbp+var_8], rdi +000AAE87: mov rax, [rbp+var_8] +000AAE8B: mov rdi, rax +000AAE8E: call __ZSt12__get_helperILm0EPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEJZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refIT0_E4typeERKSt11_Tuple_implIXT_EJSL_DpT1_EE; std::__get_helper<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::_Tuple_impl<0ul,std::__add_c_ref>> *>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}> const&) +000AAE93: leave +000AAE94: retn + +### FUNC 000AAE96 - 000AAEB3 (29 bytes) name=_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv +000AAE96: push rbp; Alternative name is '_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv' +000AAE97: mov rbp, rsp +000AAE9A: sub rsp, 10h +000AAE9E: mov [rbp+var_8], rdi +000AAEA2: mov rax, [rbp+var_8] +000AAEA6: mov rdi, rax +000AAEA9: call __ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt11__add_c_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERKSP_; std::get<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::tuple_element<0ul,std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>> const&) +000AAEAE: mov rax, [rax] +000AAEB1: leave +000AAEB2: retn + +### FUNC 000AAEB3 - 000AAEEB (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_JRKS5_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOSB_ +000AAEB3: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE9constructIS5_IRKS5_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS6_PT_DpOSB_' +000AAEB4: mov rbp, rsp +000AAEB7: sub rsp, 20h +000AAEBB: mov [rbp+var_8], rdi +000AAEBF: mov [rbp+var_10], rsi +000AAEC3: mov [rbp+var_18], rdx +000AAEC7: mov rax, [rbp+var_18] +000AAECB: mov rdi, rax +000AAECE: call __ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000AAED3: mov rdx, rax +000AAED6: mov rcx, [rbp+var_10] +000AAEDA: mov rax, [rbp+var_8] +000AAEDE: mov rsi, rcx +000AAEE1: mov rdi, rax +000AAEE4: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JRKS5_EEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSD_DpOSE_; std::allocator_traits>>>>::_S_construct>>,nlohmann::byte_container_with_subtype>> const&>(std::allocator>>>&,nlohmann::byte_container_with_subtype>>*,nlohmann::byte_container_with_subtype>> const&&&) +000AAEE9: leave +000AAEEA: retn + +### FUNC 000AAEEB - 000AAF09 (30 bytes) name=_ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn +000AAEEB: push rbp; Alternative name is '_ZStneIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_EbRKSt10unique_ptrIT_T0_EDn' +000AAEEC: mov rbp, rsp +000AAEEF: sub rsp, 10h +000AAEF3: mov [rbp+var_8], rdi +000AAEF7: mov [rbp+var_10], rsi +000AAEFB: mov rax, [rbp+var_8] +000AAEFF: mov rdi, rax +000AAF02: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EcvbEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::operator bool(void) +000AAF07: leave +000AAF08: retn + +### FUNC 000AAF0A - 000AAF3F (53 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E7releaseEv +000AAF0A: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_E7releaseEv' +000AAF0B: mov rbp, rsp +000AAF0E: sub rsp, 20h +000AAF12: mov [rbp+var_18], rdi +000AAF16: mov rax, [rbp+var_18] +000AAF1A: mov rdi, rax +000AAF1D: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get(void) +000AAF22: mov [rbp+var_8], rax +000AAF26: mov rax, [rbp+var_18] +000AAF2A: mov rdi, rax +000AAF2D: call __ZSt3getILm0EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_; std::get<0ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::tuple_element<0ul,std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>&) +000AAF32: mov qword ptr [rax], 0 +000AAF39: mov rax, [rbp+var_8] +000AAF3D: leave +000AAF3E: retn + +### FUNC 000AAF40 - 000AAF55 (21 bytes) name=_ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2Ev +000AAF40: push rbp; Alternative name is 'std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(void)' +000AAF41: mov rbp, rsp +000AAF44: mov [rbp+var_8], rdi +000AAF48: mov rax, [rbp+var_8] +000AAF4C: mov qword ptr [rax], 0 +000AAF53: pop rbp +000AAF54: retn + +### FUNC 000AAF55 - 000AB09B (326 bytes) name=_ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEEvRKT_RNS9_8string_tE +000AAF55: push rbp +000AAF56: mov rbp, rsp +000AAF59: push r12 +000AAF5B: push rbx +000AAF5C: sub rsp, 30h +000AAF60: mov [rbp+var_38], rdi +000AAF64: mov [rbp+var_40], rsi +000AAF68: mov rax, [rbp+var_38] +000AAF6C: mov rdi, rax +000AAF6F: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv; nlohmann::basic_json>>::is_string(void) +000AAF74: xor eax, 1 +000AAF77: movzx eax, al +000AAF7A: test rax, rax +000AAF7D: setnz al +000AAF80: test al, al +000AAF82: jz loc_AB02E +000AAF88: mov edi, 20h ; ' '; thrown_size +000AAF8D: call ___cxa_allocate_exception +000AAF92: mov rbx, rax +000AAF95: lea rax, [rbp+var_11] +000AAF99: mov rdi, rax +000AAF9C: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000AAFA1: mov rax, [rbp+var_38] +000AAFA5: mov rdi, rax +000AAFA8: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv; nlohmann::basic_json>>::type_name(void) +000AAFAD: mov rcx, rax +000AAFB0: lea rdx, [rbp+var_11] +000AAFB4: lea rax, [rbp+var_20] +000AAFB8: mov rsi, rcx +000AAFBB: mov rdi, rax +000AAFBE: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000AAFC3: lea rax, [rbp+var_30] +000AAFC7: lea rdx, [rbp+var_20] +000AAFCB: lea rsi, aTypeMustBeStri; "type must be string, but is " +000AAFD2: mov rdi, rax +000AAFD5: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000AAFDA: lea rax, [rbp+var_30] +000AAFDE: mov rdx, rax; std::string * +000AAFE1: mov esi, 12Eh; int +000AAFE6: mov rdi, rbx; this +000AAFE9: call __ZN8nlohmann6detail10type_error6createEiRKSs; nlohmann::detail::type_error::create(int,std::string const&) +000AAFEE: lea rax, [rbp+var_30] +000AAFF2: mov rdi, rax; this +000AAFF5: call __ZNSsD1Ev; std::string::~string() +000AAFFA: lea rax, [rbp+var_20] +000AAFFE: mov rdi, rax; this +000AB001: call __ZNSsD1Ev; std::string::~string() +000AB006: lea rax, [rbp+var_11] +000AB00A: mov rdi, rax +000AB00D: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AB012: mov rax, cs:_ZN8nlohmann6detail10type_errorD2Ev_ptr +000AB019: mov rdx, rax; void (__fastcall *)(void *) +000AB01C: mov rax, cs:lptinfo +000AB023: mov rsi, rax; lptinfo +000AB026: mov rdi, rbx; void * +000AB029: call ___cxa_throw +000AB02E: mov rax, [rbp+var_38] +000AB032: mov rdi, rax +000AB035: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKSsLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB03A: mov rdx, rax +000AB03D: mov rax, [rbp+var_40] +000AB041: mov rsi, rdx +000AB044: mov rdi, rax +000AB047: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +000AB04C: jmp short loc_AB092 +000AB04E: mov r12, rax +000AB051: lea rax, [rbp+var_30] +000AB055: mov rdi, rax; this +000AB058: call __ZNSsD1Ev; std::string::~string() +000AB05D: jmp short loc_AB062 +000AB05F: mov r12, rax +000AB062: lea rax, [rbp+var_20] +000AB066: mov rdi, rax; this +000AB069: call __ZNSsD1Ev; std::string::~string() +000AB06E: jmp short loc_AB073 +000AB070: mov r12, rax +000AB073: lea rax, [rbp+var_11] +000AB077: mov rdi, rax +000AB07A: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AB07F: mov rdi, rbx; void * +000AB082: call ___cxa_free_exception +000AB087: mov rax, r12 +000AB08A: mov rdi, rax; struct _Unwind_Exception * +000AB08D: call __Unwind_Resume +000AB092: add rsp, 30h +000AB096: pop rbx +000AB097: pop r12 +000AB099: pop rbp +000AB09A: retn + +### FUNC 000AB09C - 000AB0BB (31 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKmLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB09C: push rbp +000AB09D: mov rbp, rsp +000AB0A0: sub rsp, 10h +000AB0A4: mov [rbp+var_8], rdi +000AB0A8: mov rax, [rbp+var_8] +000AB0AC: mov esi, 0 +000AB0B1: mov rdi, rax +000AB0B4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKm; nlohmann::basic_json>>::get_impl_ptr(ulong const*) +000AB0B9: leave +000AB0BA: retn + +### FUNC 000AB0BC - 000AB0DB (31 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKlLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB0BC: push rbp +000AB0BD: mov rbp, rsp +000AB0C0: sub rsp, 10h +000AB0C4: mov [rbp+var_8], rdi +000AB0C8: mov rax, [rbp+var_8] +000AB0CC: mov esi, 0 +000AB0D1: mov rdi, rax +000AB0D4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKl; nlohmann::basic_json>>::get_impl_ptr(long const*) +000AB0D9: leave +000AB0DA: retn + +### FUNC 000AB0DC - 000AB0FB (31 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKdLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB0DC: push rbp +000AB0DD: mov rbp, rsp +000AB0E0: sub rsp, 10h +000AB0E4: mov [rbp+var_8], rdi +000AB0E8: mov rax, [rbp+var_8] +000AB0EC: mov esi, 0 +000AB0F1: mov rdi, rax +000AB0F4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKd; nlohmann::basic_json>>::get_impl_ptr(double const*) +000AB0F9: leave +000AB0FA: retn + +### FUNC 000AB0FC - 000AB11B (31 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKbLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB0FC: push rbp +000AB0FD: mov rbp, rsp +000AB100: sub rsp, 10h +000AB104: mov [rbp+var_8], rdi +000AB108: mov rax, [rbp+var_8] +000AB10C: mov esi, 0 +000AB111: mov rdi, rax +000AB114: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKb; nlohmann::basic_json>>::get_impl_ptr(bool const*) +000AB119: leave +000AB11A: retn + +### FUNC 000AB11B - 000AB2BA (415 bytes) name=_ZN8nlohmann6detail9from_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEiLi0EEEvRKT_RT0_ +000AB11B: push rbp +000AB11C: mov rbp, rsp +000AB11F: push r12 +000AB121: push rbx +000AB122: sub rsp, 30h +000AB126: mov [rbp+var_38], rdi +000AB12A: mov [rbp+var_40], rsi +000AB12E: mov rax, [rbp+var_38] +000AB132: mov rdi, rax +000AB135: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEcvNS_6detail7value_tEEv; nlohmann::basic_json>>::operator nlohmann::detail::value_t(void) +000AB13A: cmp al, 5 +000AB13C: jz short loc_AB16E +000AB13E: cmp al, 5 +000AB140: ja short loc_AB148 +000AB142: cmp al, 4 +000AB144: jz short loc_AB1A9 +000AB146: jmp short loc_AB1C7 +000AB148: cmp al, 6 +000AB14A: jz short loc_AB152 +000AB14C: cmp al, 7 +000AB14E: jz short loc_AB18A +000AB150: jmp short loc_AB1C7 +000AB152: mov rax, [rbp+var_38] +000AB156: mov rdi, rax +000AB159: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKmLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB15E: mov rax, [rax] +000AB161: mov edx, eax +000AB163: mov rax, [rbp+var_40] +000AB167: mov [rax], edx +000AB169: jmp loc_AB2B1 +000AB16E: mov rax, [rbp+var_38] +000AB172: mov rdi, rax +000AB175: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKlLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB17A: mov rax, [rax] +000AB17D: mov edx, eax +000AB17F: mov rax, [rbp+var_40] +000AB183: mov [rax], edx +000AB185: jmp loc_AB2B1 +000AB18A: mov rax, [rbp+var_38] +000AB18E: mov rdi, rax +000AB191: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKdLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB196: movsd xmm0, qword ptr [rax] +000AB19A: cvttsd2si edx, xmm0 +000AB19E: mov rax, [rbp+var_40] +000AB1A2: mov [rax], edx +000AB1A4: jmp loc_AB2B1 +000AB1A9: mov rax, [rbp+var_38] +000AB1AD: mov rdi, rax +000AB1B0: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE7get_ptrIPKbLi0EEEDTcldtcl7declvalIRKS6_EE12get_impl_ptrcl7declvalIT_EEEEv +000AB1B5: movzx eax, byte ptr [rax] +000AB1B8: movzx edx, al +000AB1BB: mov rax, [rbp+var_40] +000AB1BF: mov [rax], edx +000AB1C1: nop +000AB1C2: jmp loc_AB2B1 +000AB1C7: mov edi, 20h ; ' '; thrown_size +000AB1CC: call ___cxa_allocate_exception +000AB1D1: mov rbx, rax +000AB1D4: lea rax, [rbp+var_11] +000AB1D8: mov rdi, rax +000AB1DB: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000AB1E0: mov rax, [rbp+var_38] +000AB1E4: mov rdi, rax +000AB1E7: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv; nlohmann::basic_json>>::type_name(void) +000AB1EC: mov rcx, rax +000AB1EF: lea rdx, [rbp+var_11] +000AB1F3: lea rax, [rbp+var_20] +000AB1F7: mov rsi, rcx +000AB1FA: mov rdi, rax +000AB1FD: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000AB202: lea rax, [rbp+var_30] +000AB206: lea rdx, [rbp+var_20] +000AB20A: lea rsi, aTypeMustBeNumb; "type must be number, but is " +000AB211: mov rdi, rax +000AB214: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000AB219: lea rax, [rbp+var_30] +000AB21D: mov rdx, rax; std::string * +000AB220: mov esi, 12Eh; int +000AB225: mov rdi, rbx; this +000AB228: call __ZN8nlohmann6detail10type_error6createEiRKSs; nlohmann::detail::type_error::create(int,std::string const&) +000AB22D: lea rax, [rbp+var_30] +000AB231: mov rdi, rax; this +000AB234: call __ZNSsD1Ev; std::string::~string() +000AB239: lea rax, [rbp+var_20] +000AB23D: mov rdi, rax; this +000AB240: call __ZNSsD1Ev; std::string::~string() +000AB245: lea rax, [rbp+var_11] +000AB249: mov rdi, rax +000AB24C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AB251: mov rax, cs:_ZN8nlohmann6detail10type_errorD2Ev_ptr +000AB258: mov rdx, rax; void (__fastcall *)(void *) +000AB25B: mov rax, cs:lptinfo +000AB262: mov rsi, rax; lptinfo +000AB265: mov rdi, rbx; void * +000AB268: call ___cxa_throw +000AB26D: mov r12, rax +000AB270: lea rax, [rbp+var_30] +000AB274: mov rdi, rax; this +000AB277: call __ZNSsD1Ev; std::string::~string() +000AB27C: jmp short loc_AB281 +000AB27E: mov r12, rax +000AB281: lea rax, [rbp+var_20] +000AB285: mov rdi, rax; this +000AB288: call __ZNSsD1Ev; std::string::~string() +000AB28D: jmp short loc_AB292 +000AB28F: mov r12, rax +000AB292: lea rax, [rbp+var_11] +000AB296: mov rdi, rax +000AB299: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AB29E: mov rdi, rbx; void * +000AB2A1: call ___cxa_free_exception +000AB2A6: mov rax, r12 +000AB2A9: mov rdi, rax; struct _Unwind_Exception * +000AB2AC: call __Unwind_Resume +000AB2B1: add rsp, 30h +000AB2B5: pop rbx +000AB2B6: pop r12 +000AB2B8: pop rbp +000AB2B9: retn + +### FUNC 000AB2BA - 000AB2D4 (26 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h1Ev +000AB2BA: push rbp +000AB2BB: mov rbp, rsp +000AB2BE: sub rsp, 10h +000AB2C2: mov [rbp+var_8], rdi +000AB2C6: mov rax, [rbp+var_8] +000AB2CA: mov rdi, rax +000AB2CD: call __ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EE7_S_cgetERKS3_; std::__detail::_Hashtable_ebo_helper<1,std::hash,true>::_S_cget(std::__detail::_Hashtable_ebo_helper<1,std::hash,true> const&) +000AB2D2: leave +000AB2D3: retn + +### FUNC 000AB2D4 - 000AB30D (57 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexERS2_mm +000AB2D4: push rbp +000AB2D5: mov rbp, rsp +000AB2D8: sub rsp, 20h +000AB2DC: mov [rbp+var_8], rdi +000AB2E0: mov [rbp+var_10], rsi +000AB2E4: mov [rbp+var_18], rdx +000AB2E8: mov [rbp+var_20], rcx +000AB2EC: mov rax, [rbp+var_8] +000AB2F0: mov rdi, rax +000AB2F3: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h2Ev; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_h2(void) +000AB2F8: mov rdx, [rbp+var_20] +000AB2FC: mov rcx, [rbp+var_18] +000AB300: mov rsi, rcx +000AB303: mov rdi, rax +000AB306: call __ZNKSt8__detail18_Mod_range_hashingclEmm; std::__detail::_Mod_range_hashing::operator()(ulong,ulong) +000AB30B: leave +000AB30C: retn + +### FUNC 000AB30E - 000AB3E4 (214 bytes) name=_ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m +000AB30E: push rbp +000AB30F: mov rbp, rsp +000AB312: sub rsp, 30h +000AB316: mov [rbp+var_18], rdi +000AB31A: mov [rbp+var_20], rsi +000AB31E: mov [rbp+var_28], rdx +000AB322: mov [rbp+var_30], rcx +000AB326: mov rax, [rbp+var_18] +000AB32A: mov rax, [rax] +000AB32D: mov rdx, [rbp+var_20] +000AB331: shl rdx, 3 +000AB335: add rax, rdx +000AB338: mov rax, [rax] +000AB33B: mov [rbp+var_8], rax +000AB33F: cmp [rbp+var_8], 0 +000AB344: jnz short loc_AB350 +000AB346: mov eax, 0 +000AB34B: jmp locret_AB3E2 +000AB350: mov rax, [rbp+var_8] +000AB354: mov rax, [rax] +000AB357: mov [rbp+var_10], rax +000AB35B: mov rcx, [rbp+var_10] +000AB35F: mov rdx, [rbp+var_30] +000AB363: mov rsi, [rbp+var_28] +000AB367: mov rax, [rbp+var_18] +000AB36B: mov rdi, rax +000AB36E: call __ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS3_Lb1EEE; std::__detail::_Hashtable_base,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Hashtable_traits>::_M_equals(std::string const&,ulong,std::__detail::_Hash_node,true> *) +000AB373: test al, al +000AB375: jz short loc_AB37D +000AB377: mov rax, [rbp+var_8] +000AB37B: jmp short locret_AB3E2 +000AB37D: mov rax, [rbp+var_10] +000AB381: mov rax, [rax] +000AB384: test rax, rax +000AB387: jz short loc_AB3AD +000AB389: mov rax, [rbp+var_10] +000AB38D: mov rdi, rax +000AB390: call __ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv; std::__detail::_Hash_node,true>::_M_next(void) +000AB395: mov rdx, rax +000AB398: mov rax, [rbp+var_18] +000AB39C: mov rsi, rdx +000AB39F: mov rdi, rax +000AB3A2: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_bucket_index(std::__detail::_Hash_node,true> *) +000AB3A7: cmp rax, [rbp+var_20] +000AB3AB: jz short loc_AB3B4 +000AB3AD: mov eax, 1 +000AB3B2: jmp short loc_AB3B9 +000AB3B4: mov eax, 0 +000AB3B9: test al, al +000AB3BB: jz short loc_AB3C5 +000AB3BD: nop +000AB3BE: mov eax, 0 +000AB3C3: jmp short locret_AB3E2 +000AB3C5: mov rax, [rbp+var_10] +000AB3C9: mov [rbp+var_8], rax +000AB3CD: mov rax, [rbp+var_10] +000AB3D1: mov rdi, rax +000AB3D4: call __ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv; std::__detail::_Hash_node,true>::_M_next(void) +000AB3D9: mov [rbp+var_10], rax +000AB3DD: jmp loc_AB35B +000AB3E2: leave +000AB3E3: retn + +### FUNC 000AB3E4 - 000AB426 (66 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8allocateEmPKv +000AB3E4: push rbp +000AB3E5: mov rbp, rsp +000AB3E8: sub rsp, 20h +000AB3EC: mov [rbp+var_8], rdi +000AB3F0: mov [rbp+var_10], rsi +000AB3F4: mov [rbp+var_18], rdx +000AB3F8: mov rax, [rbp+var_8] +000AB3FC: mov rdi, rax +000AB3FF: call __ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8max_sizeEv; __gnu_cxx::new_allocator,true>>::max_size(void) +000AB404: cmp rax, [rbp+var_10] +000AB408: setb al +000AB40B: test al, al +000AB40D: jz short loc_AB414 +000AB40F: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000AB414: mov rax, [rbp+var_10] +000AB418: shl rax, 5 +000AB41C: mov rdi, rax; unsigned __int64 +000AB41F: call __Znwm; operator new(ulong) +000AB424: leave +000AB425: retn + +### FUNC 000AB426 - 000AB4CE (168 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJRS4_EESC_IJEEEEEvPT_DpOT0_ +000AB426: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE9constructIS6_IRKSt21piecewise_construct_tSt5tupleIIRS4_EESC_IIEEEEEvPT_DpOT0_' +000AB427: mov rbp, rsp +000AB42A: push r15 +000AB42C: push r14 +000AB42E: push r13 +000AB430: push r12 +000AB432: push rbx +000AB433: sub rsp, 38h +000AB437: mov [rbp+var_38], rdi +000AB43B: mov [rbp+var_40], rsi +000AB43F: mov [rbp+var_48], rdx +000AB443: mov [rbp+var_50], rcx +000AB447: mov [rbp+var_58], r8 +000AB44B: mov rax, [rbp+var_48] +000AB44F: mov rdi, rax +000AB452: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000AB457: mov r13, rax +000AB45A: mov rax, [rbp+var_50] +000AB45E: mov rdi, rax +000AB461: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000AB466: mov r14, rax +000AB469: mov rax, [rbp+var_58] +000AB46D: mov rdi, rax +000AB470: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000AB475: mov r15, rax +000AB478: mov r12, [rbp+var_40] +000AB47C: mov rsi, r12; void * +000AB47F: mov edi, 20h ; ' '; unsigned __int64 +000AB484: call __ZnwmPv; operator new(ulong,void *) +000AB489: mov rbx, rax +000AB48C: test rbx, rbx +000AB48F: jz short loc_AB4A4 +000AB491: mov rcx, r15 +000AB494: mov rdx, r14 +000AB497: mov rsi, r13 +000AB49A: mov rdi, rbx +000AB49D: call __ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEC2IJRKSt21piecewise_construct_tSt5tupleIJRS2_EES9_IJEEEEEDpOT_; std::__detail::_Hash_node,true>::_Hash_node,std::tuple<>>() +000AB4A2: jmp short loc_AB4BF +000AB4A4: jmp short loc_AB4BF +000AB4A6: mov r13, rax +000AB4A9: mov rsi, r12; void * +000AB4AC: mov rdi, rbx; void * +000AB4AF: call __ZdlPvS_; operator delete(void *,void *) +000AB4B4: mov rax, r13 +000AB4B7: mov rdi, rax; struct _Unwind_Exception * +000AB4BA: call __Unwind_Resume +000AB4BF: add rsp, 38h +000AB4C3: pop rbx +000AB4C4: pop r12 +000AB4C6: pop r13 +000AB4C8: pop r14 +000AB4CA: pop r15 +000AB4CC: pop rbp +000AB4CD: retn + +### FUNC 000AB4CE - 000AB4F0 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE10deallocateEPS6_m +000AB4CE: push rbp +000AB4CF: mov rbp, rsp +000AB4D2: sub rsp, 20h +000AB4D6: mov [rbp+var_8], rdi +000AB4DA: mov [rbp+var_10], rsi +000AB4DE: mov [rbp+var_18], rdx +000AB4E2: mov rax, [rbp+var_10] +000AB4E6: mov rdi, rax; void * +000AB4E9: call __ZdlPv; operator delete(void *) +000AB4EE: leave +000AB4EF: retn + +### FUNC 000AB4F0 - 000AB55E (110 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm +000AB4F0: push rbp +000AB4F1: mov rbp, rsp +000AB4F4: push rbx +000AB4F5: sub rsp, 38h +000AB4F9: mov [rbp+var_28], rdi +000AB4FD: mov [rbp+var_30], rsi +000AB501: mov [rbp+var_38], rdx +000AB505: mov rdx, [rbp+var_30] +000AB509: mov rax, [rbp+var_28] +000AB50D: mov [rsp+40h+var_40], cl +000AB510: mov rsi, rdx +000AB513: mov rdi, rax +000AB516: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_rehash_aux(ulong,std::integral_constant) +000AB51B: jmp short loc_AB557 +000AB51D: mov rdi, rax; void * +000AB520: call ___cxa_begin_catch +000AB525: mov rax, [rbp+var_38] +000AB529: mov rax, [rax] +000AB52C: mov rdx, [rbp+var_28] +000AB530: add rdx, 20h ; ' ' +000AB534: mov rsi, rax; unsigned __int64 +000AB537: mov rdi, rdx; this +000AB53A: call __ZNSt8__detail20_Prime_rehash_policy8_M_resetEm; std::__detail::_Prime_rehash_policy::_M_reset(ulong) +000AB53F: call ___cxa_rethrow +000AB544: mov rbx, rax +000AB547: call ___cxa_end_catch +000AB54C: mov rax, rbx +000AB54F: mov rdi, rax; struct _Unwind_Exception * +000AB552: call __Unwind_Resume +000AB557: add rsp, 38h +000AB55B: pop rbx +000AB55C: pop rbp +000AB55D: retn + +### FUNC 000AB55E - 000AB578 (26 bytes) name=_ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +000AB55E: push rbp +000AB55F: mov rbp, rsp +000AB562: sub rsp, 10h +000AB566: mov [rbp+var_8], rdi +000AB56A: mov rax, [rbp+var_8] +000AB56E: mov rdi, rax +000AB571: call __ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE6_S_getERS2_; std::__detail::_Hashtable_ebo_helper<0,std::__detail::_Select1st,true>::_S_get(std::__detail::_Hashtable_ebo_helper<0,std::__detail::_Select1st,true>&) +000AB576: leave +000AB577: retn + +### FUNC 000AB578 - 000AB59E (38 bytes) name=_ZNKSt8__detail10_Select1stclIRSt4pairIKSsiEEEDTcl3getILi0EEcl7forwardIT_Efp_EEEOS6_ +000AB578: push rbp +000AB579: mov rbp, rsp +000AB57C: sub rsp, 10h +000AB580: mov [rbp+var_8], rdi +000AB584: mov [rbp+var_10], rsi +000AB588: mov rax, [rbp+var_10] +000AB58C: mov rdi, rax +000AB58F: call __ZSt7forwardIRSt4pairIKSsiEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward &>(std::remove_reference &>::type &) +000AB594: mov rdi, rax +000AB597: call __ZSt3getILm0EKSsiERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS5_; std::get<0ul,std::string const,int>(std::pair&) +000AB59C: leave +000AB59D: retn + +### FUNC 000AB59E - 000AB5BC (30 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb1EEEm +000AB59E: push rbp +000AB59F: mov rbp, rsp +000AB5A2: mov [rbp+var_8], rdi +000AB5A6: mov [rbp+var_10], rsi +000AB5AA: mov [rbp+var_18], rdx +000AB5AE: mov rax, [rbp+var_10] +000AB5B2: mov rdx, [rbp+var_18] +000AB5B6: mov [rax+18h], rdx +000AB5BA: pop rbp +000AB5BB: retn + +### FUNC 000AB5BC - 000AB6BD (257 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb1EEE +000AB5BC: push rbp +000AB5BD: mov rbp, rsp +000AB5C0: push rbx +000AB5C1: sub rsp, 28h +000AB5C5: mov [rbp+var_18], rdi +000AB5C9: mov [rbp+var_20], rsi +000AB5CD: mov [rbp+var_28], rdx +000AB5D1: mov rax, [rbp+var_18] +000AB5D5: mov rax, [rax] +000AB5D8: mov rdx, [rbp+var_20] +000AB5DC: shl rdx, 3 +000AB5E0: add rax, rdx +000AB5E3: mov rax, [rax] +000AB5E6: test rax, rax +000AB5E9: jz short loc_AB62B +000AB5EB: mov rax, [rbp+var_18] +000AB5EF: mov rax, [rax] +000AB5F2: mov rdx, [rbp+var_20] +000AB5F6: shl rdx, 3 +000AB5FA: add rax, rdx +000AB5FD: mov rax, [rax] +000AB600: mov rdx, [rax] +000AB603: mov rax, [rbp+var_28] +000AB607: mov [rax], rdx +000AB60A: mov rax, [rbp+var_18] +000AB60E: mov rax, [rax] +000AB611: mov rdx, [rbp+var_20] +000AB615: shl rdx, 3 +000AB619: add rax, rdx +000AB61C: mov rax, [rax] +000AB61F: mov rdx, [rbp+var_28] +000AB623: mov [rax], rdx +000AB626: jmp loc_AB6B6 +000AB62B: mov rax, [rbp+var_18] +000AB62F: mov rdi, rax +000AB632: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000AB637: mov rdx, [rax] +000AB63A: mov rax, [rbp+var_28] +000AB63E: mov [rax], rdx +000AB641: mov rax, [rbp+var_18] +000AB645: mov rdi, rax +000AB648: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000AB64D: mov rdx, [rbp+var_28] +000AB651: mov [rax], rdx +000AB654: mov rax, [rbp+var_28] +000AB658: mov rax, [rax] +000AB65B: test rax, rax +000AB65E: jz short loc_AB694 +000AB660: mov rax, [rbp+var_18] +000AB664: mov rbx, [rax] +000AB667: mov rax, [rbp+var_28] +000AB66B: mov rdi, rax +000AB66E: call __ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv; std::__detail::_Hash_node,true>::_M_next(void) +000AB673: mov rdx, rax +000AB676: mov rax, [rbp+var_18] +000AB67A: mov rsi, rdx +000AB67D: mov rdi, rax +000AB680: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb1EEE; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_bucket_index(std::__detail::_Hash_node,true> *) +000AB685: shl rax, 3 +000AB689: lea rdx, [rbx+rax] +000AB68D: mov rax, [rbp+var_28] +000AB691: mov [rdx], rax +000AB694: mov rax, [rbp+var_18] +000AB698: mov rax, [rax] +000AB69B: mov rdx, [rbp+var_20] +000AB69F: shl rdx, 3 +000AB6A3: lea rbx, [rax+rdx] +000AB6A7: mov rax, [rbp+var_18] +000AB6AB: mov rdi, rax +000AB6AE: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000AB6B3: mov [rbx], rax +000AB6B6: add rsp, 28h +000AB6BA: pop rbx +000AB6BB: pop rbp +000AB6BC: retn + +### FUNC 000AB6BE - 000AB6D8 (26 bytes) name=_ZNSaIiEC2Ev +000AB6BE: push rbp; Alternative name is 'std::allocator::allocator(void)' +000AB6BF: mov rbp, rsp +000AB6C2: sub rsp, 10h +000AB6C6: mov [rbp+var_8], rdi +000AB6CA: mov rax, [rbp+var_8] +000AB6CE: mov rdi, rax +000AB6D1: call __ZN9__gnu_cxx13new_allocatorIiEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000AB6D6: leave +000AB6D7: retn + +### FUNC 000AB6D8 - 000AB71A (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIiE9constructIiJRKiEEEvPT_DpOT0_ +000AB6D8: push rbp; Alternative name is 'void __gnu_cxx::new_allocator::construct(int *, int const&)' +000AB6D9: mov rbp, rsp +000AB6DC: push rbx +000AB6DD: sub rsp, 28h +000AB6E1: mov [rbp+var_18], rdi +000AB6E5: mov [rbp+var_20], rsi +000AB6E9: mov [rbp+var_28], rdx +000AB6ED: mov rax, [rbp+var_28] +000AB6F1: mov rdi, rax +000AB6F4: call __ZSt7forwardIRKiEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000AB6F9: mov ebx, [rax] +000AB6FB: mov rax, [rbp+var_20] +000AB6FF: mov rsi, rax; void * +000AB702: mov edi, 4; unsigned __int64 +000AB707: call __ZnwmPv; operator new(ulong,void *) +000AB70C: test rax, rax +000AB70F: jz short loc_AB713 +000AB711: mov [rax], ebx +000AB713: add rsp, 28h +000AB717: pop rbx +000AB718: pop rbp +000AB719: retn + +### FUNC 000AB71A - 000AB73C (34 bytes) name=_ZNKSt6vectorIiSaIiEE8max_sizeEv +000AB71A: push rbp +000AB71B: mov rbp, rsp +000AB71E: sub rsp, 10h +000AB722: mov [rbp+var_8], rdi +000AB726: mov rax, [rbp+var_8] +000AB72A: mov rdi, rax +000AB72D: call __ZNKSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000AB732: mov rdi, rax +000AB735: call __ZNSt16allocator_traitsISaIiEE8max_sizeERKS0_; std::allocator_traits>::max_size(std::allocator const&) +000AB73A: leave +000AB73B: retn + +### FUNC 000AB73C - 000AB77E (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIiE8allocateEmPKv +000AB73C: push rbp +000AB73D: mov rbp, rsp +000AB740: sub rsp, 20h +000AB744: mov [rbp+var_8], rdi +000AB748: mov [rbp+var_10], rsi +000AB74C: mov [rbp+var_18], rdx +000AB750: mov rax, [rbp+var_8] +000AB754: mov rdi, rax +000AB757: call __ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000AB75C: cmp rax, [rbp+var_10] +000AB760: setb al +000AB763: test al, al +000AB765: jz short loc_AB76C +000AB767: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000AB76C: mov rax, [rbp+var_10] +000AB770: shl rax, 2 +000AB774: mov rdi, rax; unsigned __int64 +000AB777: call __Znwm; operator new(ulong) +000AB77C: leave +000AB77D: retn + +### FUNC 000AB77E - 000AB7A3 (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPiSt13move_iteratorIS0_EET0_T_ +000AB77E: push rbp +000AB77F: mov rbp, rsp +000AB782: sub rsp, 20h +000AB786: mov [rbp+var_18], rdi +000AB78A: mov rdx, [rbp+var_18] +000AB78E: lea rax, [rbp+var_10] +000AB792: mov rsi, rdx +000AB795: mov rdi, rax +000AB798: call __ZNSt13move_iteratorIPiEC2ES0_; std::move_iterator::move_iterator(int *) +000AB79D: mov rax, [rbp+var_10] +000AB7A1: leave +000AB7A2: retn + +### FUNC 000AB7A3 - 000AB7D4 (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPiES1_iET0_T_S4_S3_RSaIT1_E +000AB7A3: push rbp +000AB7A4: mov rbp, rsp +000AB7A7: sub rsp, 20h +000AB7AB: mov [rbp+var_10], rdi +000AB7AF: mov [rbp+var_20], rsi +000AB7B3: mov [rbp+var_18], rdx +000AB7B7: mov [rbp+var_8], rcx +000AB7BB: mov rdx, [rbp+var_18] +000AB7BF: mov rcx, [rbp+var_20] +000AB7C3: mov rax, [rbp+var_10] +000AB7C7: mov rsi, rcx +000AB7CA: mov rdi, rax +000AB7CD: call __ZSt18uninitialized_copyISt13move_iteratorIPiES1_ET0_T_S4_S3_; std::uninitialized_copy,int *>(std::move_iterator,std::move_iterator,int *) +000AB7D2: leave +000AB7D3: retn + +### FUNC 000AB7D4 - 000AB7F9 (37 bytes) name=_ZNSt16allocator_traitsISaIiEE10_S_destroyIiEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +000AB7D4: push rbp +000AB7D5: mov rbp, rsp +000AB7D8: sub rsp, 10h +000AB7DC: mov [rbp+var_8], rdi +000AB7E0: mov [rbp+var_10], rsi +000AB7E4: mov rdx, [rbp+var_10] +000AB7E8: mov rax, [rbp+var_8] +000AB7EC: mov rsi, rdx +000AB7EF: mov rdi, rax +000AB7F2: call __ZN9__gnu_cxx13new_allocatorIiE7destroyIiEEvPT_; __gnu_cxx::new_allocator::destroy(int *) +000AB7F7: leave +000AB7F8: retn + +### FUNC 000AB7FA - 000AB813 (25 bytes) name=_ZNSt8__detail19_Node_iterator_baseISt4pairIKSsiELb1EEC2EPNS_10_Hash_nodeIS3_Lb1EEE +000AB7FA: push rbp; Alternative name is 'std::__detail::_Node_iterator_base, true>::_Node_iterator_base(std::__detail::_Hash_node, true> *)' +000AB7FB: mov rbp, rsp +000AB7FE: mov [rbp+var_8], rdi +000AB802: mov [rbp+var_10], rsi +000AB806: mov rax, [rbp+var_8] +000AB80A: mov rdx, [rbp+var_10] +000AB80E: mov [rax], rdx +000AB811: pop rbp +000AB812: retn + +### FUNC 000AB813 - 000AB84B (56 bytes) name=_ZNSt16allocator_traitsISaIiEE12_S_constructIiJiEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +000AB813: push rbp; Alternative name is 'std::enable_if>::__construct_helper>::value, void>::type std::allocator_traits>::_S_construct(std::allocator&, int*, int&&)' +000AB814: mov rbp, rsp +000AB817: sub rsp, 20h +000AB81B: mov [rbp+var_8], rdi +000AB81F: mov [rbp+var_10], rsi +000AB823: mov [rbp+var_18], rdx +000AB827: mov rax, [rbp+var_18] +000AB82B: mov rdi, rax +000AB82E: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000AB833: mov rdx, rax +000AB836: mov rcx, [rbp+var_10] +000AB83A: mov rax, [rbp+var_8] +000AB83E: mov rsi, rcx +000AB841: mov rdi, rax +000AB844: call __ZN9__gnu_cxx13new_allocatorIiE9constructIiJiEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(int *,int &&) +000AB849: leave +000AB84A: retn + +### FUNC 000AB84C - 000AB9D5 (393 bytes) name=_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag +000AB84C: push rbp +000AB84D: mov rbp, rsp +000AB850: push r12 +000AB852: push rbx +000AB853: sub rsp, 40h +000AB857: mov [rbp+var_38], rdi +000AB85B: mov [rbp+var_40], rsi +000AB85F: mov [rbp+var_48], rdx +000AB863: mov ebx, 0 +000AB868: mov rax, [rbp+var_38] +000AB86C: cmp rax, [rbp+var_40] +000AB870: jnz short loc_AB8A1 +000AB872: lea rax, [rbp+var_21] +000AB876: mov rdi, rax +000AB879: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000AB87E: mov ebx, 1 +000AB883: lea rdx, [rbp+var_21] +000AB887: mov rax, [rbp+var_48] +000AB88B: mov rsi, rdx +000AB88E: mov rdi, rax +000AB891: call __ZSteqIcEbRKSaIT_ES3_; std::operator==(std::allocator const&,std::allocator const&) +000AB896: test al, al +000AB898: jz short loc_AB8A1 +000AB89A: mov eax, 1 +000AB89F: jmp short loc_AB8A6 +000AB8A1: mov eax, 0 +000AB8A6: mov r12d, eax +000AB8A9: test bl, bl +000AB8AB: jz short loc_AB8BA +000AB8AD: nop +000AB8AE: lea rax, [rbp+var_21] +000AB8B2: mov rdi, rax; this +000AB8B5: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AB8BA: test r12b, r12b +000AB8BD: jz short loc_AB8D1 +000AB8BF: call __ZNSs12_S_empty_repEv; std::string::_S_empty_rep(void) +000AB8C4: mov rdi, rax; this +000AB8C7: call __ZNSs4_Rep10_M_refdataEv; std::string::_Rep::_M_refdata(void) +000AB8CC: jmp loc_AB9CC +000AB8D1: mov rax, [rbp+var_38] +000AB8D5: mov rdi, rax +000AB8D8: call __ZN9__gnu_cxx17__is_null_pointerIcEEbPT_; __gnu_cxx::__is_null_pointer(char *) +000AB8DD: test al, al +000AB8DF: jz short loc_AB8F2 +000AB8E1: mov rax, [rbp+var_38] +000AB8E5: cmp rax, [rbp+var_40] +000AB8E9: jz short loc_AB8F2 +000AB8EB: mov eax, 1 +000AB8F0: jmp short loc_AB8F7 +000AB8F2: mov eax, 0 +000AB8F7: test al, al +000AB8F9: jz short loc_AB907 +000AB8FB: lea rdi, aBasicStringSCo; "basic_string::_S_construct null not val"... +000AB902: call __ZSt19__throw_logic_errorPKc; std::__throw_logic_error(char const*) +000AB907: mov rdx, [rbp+var_40] +000AB90B: mov rax, [rbp+var_38] +000AB90F: mov rsi, rdx +000AB912: mov rdi, rax +000AB915: call __ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_; std::distance(char *,char *) +000AB91A: mov [rbp+var_18], rax +000AB91E: mov rdx, [rbp+var_48] +000AB922: mov rax, [rbp+var_18] +000AB926: mov esi, 0 +000AB92B: mov rdi, rax +000AB92E: call __ZNSs4_Rep9_S_createEmmRKSaIcE; std::string::_Rep::_S_create(ulong,ulong,std::allocator const&) +000AB933: mov [rbp+var_20], rax +000AB937: mov rax, [rbp+var_20] +000AB93B: mov rdi, rax; this +000AB93E: call __ZNSs4_Rep10_M_refdataEv; std::string::_Rep::_M_refdata(void) +000AB943: mov rdx, [rbp+var_40]; char * +000AB947: mov rcx, [rbp+var_38]; char * +000AB94B: mov rsi, rcx; char * +000AB94E: mov rdi, rax; this +000AB951: call __ZNSs13_S_copy_charsEPcS_S_; std::string::_S_copy_chars(char *,char *,char *) +000AB956: mov rdx, [rbp+var_18] +000AB95A: mov rax, [rbp+var_20] +000AB95E: mov rsi, rdx; unsigned __int64 +000AB961: mov rdi, rax; this +000AB964: call __ZNSs4_Rep26_M_set_length_and_sharableEm; std::string::_Rep::_M_set_length_and_sharable(ulong) +000AB969: mov rax, [rbp+var_20] +000AB96D: mov rdi, rax; this +000AB970: call __ZNSs4_Rep10_M_refdataEv; std::string::_Rep::_M_refdata(void) +000AB975: jmp short loc_AB9CC +000AB977: mov r12, rax +000AB97A: test bl, bl +000AB97C: jz short loc_AB98D +000AB97E: nop +000AB97F: lea rax, [rbp+var_21] +000AB983: mov rdi, rax +000AB986: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AB98B: jmp short loc_AB98E +000AB98D: nop +000AB98E: mov rax, r12 +000AB991: mov rdi, rax; struct _Unwind_Exception * +000AB994: call __Unwind_Resume +000AB999: mov rdi, rax; void * +000AB99C: call ___cxa_begin_catch +000AB9A1: mov rdx, [rbp+var_48] +000AB9A5: mov rax, [rbp+var_20] +000AB9A9: mov rsi, rdx +000AB9AC: mov rdi, rax +000AB9AF: call __ZNSs4_Rep10_M_destroyERKSaIcE; std::string::_Rep::_M_destroy(std::allocator const&) +000AB9B4: call ___cxa_rethrow +000AB9B9: mov rbx, rax +000AB9BC: call ___cxa_end_catch +000AB9C1: mov rax, rbx +000AB9C4: mov rdi, rax; struct _Unwind_Exception * +000AB9C7: call __Unwind_Resume +000AB9CC: add rsp, 40h +000AB9D0: pop rbx +000AB9D1: pop r12 +000AB9D3: pop rbp +000AB9D4: retn + +### FUNC 000AB9D6 - 000AB9FE (40 bytes) name=_ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv +000AB9D6: push rbp +000AB9D7: mov rbp, rsp +000AB9DA: sub rsp, 10h +000AB9DE: mov [rbp+var_8], rdi +000AB9E2: mov rax, [rbp+var_8] +000AB9E6: mov rax, [rax] +000AB9E9: mov rdi, rax +000AB9EC: call __ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base; std::_Rb_tree_decrement(std::_Rb_tree_node_base *) +000AB9F1: mov rdx, [rbp+var_8] +000AB9F5: mov [rdx], rax +000AB9F8: mov rax, [rbp+var_8] +000AB9FC: leave +000AB9FD: retn + +### FUNC 000AB9FE - 000ABA2C (46 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEpLERKl +000AB9FE: push rbp +000AB9FF: mov rbp, rsp +000ABA02: mov [rbp+var_8], rdi +000ABA06: mov [rbp+var_10], rsi +000ABA0A: mov rax, [rbp+var_8] +000ABA0E: mov rdx, [rax] +000ABA11: mov rax, [rbp+var_10] +000ABA15: mov rax, [rax] +000ABA18: shl rax, 4 +000ABA1C: add rdx, rax +000ABA1F: mov rax, [rbp+var_8] +000ABA23: mov [rax], rdx +000ABA26: mov rax, [rbp+var_8] +000ABA2A: pop rbp +000ABA2B: retn + +### FUNC 000ABA2C - 000ABA42 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv +000ABA2C: push rbp +000ABA2D: mov rbp, rsp +000ABA30: mov [rbp+var_8], rdi +000ABA34: mov rax, [rbp+var_8] +000ABA38: movzx eax, byte ptr [rax] +000ABA3B: cmp al, 3 +000ABA3D: setz al +000ABA40: pop rbp +000ABA41: retn + +### FUNC 000ABA42 - 000ABA7F (61 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2Ev +000ABA42: push rbp; Alternative name is 'std::_Vector_base>>, std::allocator>>>>::_Vector_impl::_Vector_impl(void)' +000ABA43: mov rbp, rsp +000ABA46: sub rsp, 10h +000ABA4A: mov [rbp+var_8], rdi +000ABA4E: mov rax, [rbp+var_8] +000ABA52: mov rdi, rax +000ABA55: call __ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev; std::allocator>>>::allocator(void) +000ABA5A: mov rax, [rbp+var_8] +000ABA5E: mov qword ptr [rax], 0 +000ABA65: mov rax, [rbp+var_8] +000ABA69: mov qword ptr [rax+8], 0 +000ABA71: mov rax, [rbp+var_8] +000ABA75: mov qword ptr [rax+10h], 0 +000ABA7D: leave +000ABA7E: retn + +### FUNC 000ABA80 - 000ABA9A (26 bytes) name=_ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +000ABA80: push rbp; Alternative name is 'std::allocator>>>::~allocator()' +000ABA81: mov rbp, rsp +000ABA84: sub rsp, 10h +000ABA88: mov [rbp+var_8], rdi +000ABA8C: mov rax, [rbp+var_8] +000ABA90: mov rdi, rax +000ABA93: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev; __gnu_cxx::new_allocator>>>::~new_allocator() +000ABA98: leave +000ABA99: retn + +### FUNC 000ABA9A - 000ABABF (37 bytes) name=_ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_ +000ABA9A: push rbp +000ABA9B: mov rbp, rsp +000ABA9E: sub rsp, 10h +000ABAA2: mov [rbp+var_8], rdi +000ABAA6: mov [rbp+var_10], rsi +000ABAAA: mov rdx, [rbp+var_10] +000ABAAE: mov rax, [rbp+var_8] +000ABAB2: mov rsi, rdx +000ABAB5: mov rdi, rax +000ABAB8: call __ZNSt12_Destroy_auxILb0EE9__destroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SB_; std::_Destroy_aux::__destroy>> *>(nlohmann::basic_json>> *,nlohmann::basic_json>> *) +000ABABD: leave +000ABABE: retn + +### FUNC 000ABABF - 000ABAD9 (26 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS8_ +000ABABF: push rbp +000ABAC0: mov rbp, rsp +000ABAC3: sub rsp, 10h +000ABAC7: mov [rbp+var_8], rdi +000ABACB: mov rax, [rbp+var_8] +000ABACF: mov rdi, rax +000ABAD2: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS8_EENSt9enable_ifIXsrNS9_16__maxsize_helperIT_EE5valueEmE4typeERSE_; std::allocator_traits>>>>::_S_max_size>>> const>(std::allocator>>> const&) +000ABAD7: leave +000ABAD8: retn + +### FUNC 000ABADA - 000ABAE8 (14 bytes) name=_ZNKSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv +000ABADA: push rbp +000ABADB: mov rbp, rsp +000ABADE: mov [rbp+var_8], rdi +000ABAE2: mov rax, [rbp+var_8] +000ABAE6: pop rbp +000ABAE7: retn + +### FUNC 000ABAE8 - 000ABB01 (25 bytes) name=_ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES8_ +000ABAE8: push rbp; Alternative name is 'std::move_iterator>> *>::move_iterator(nlohmann::basic_json>> *)' +000ABAE9: mov rbp, rsp +000ABAEC: mov [rbp+var_8], rdi +000ABAF0: mov [rbp+var_10], rsi +000ABAF4: mov rax, [rbp+var_8] +000ABAF8: mov rdx, [rbp+var_10] +000ABAFC: mov [rax], rdx +000ABAFF: pop rbp +000ABB00: retn + +### FUNC 000ABB02 - 000ABB3A (56 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm +000ABB02: push rbp +000ABB03: mov rbp, rsp +000ABB06: sub rsp, 10h +000ABB0A: mov [rbp+var_8], rdi +000ABB0E: mov [rbp+var_10], rsi +000ABB12: cmp [rbp+var_10], 0 +000ABB17: jz short loc_ABB33 +000ABB19: mov rax, [rbp+var_8] +000ABB1D: mov rcx, [rbp+var_10] +000ABB21: mov edx, 0 +000ABB26: mov rsi, rcx +000ABB29: mov rdi, rax +000ABB2C: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv; __gnu_cxx::new_allocator>>>::allocate(ulong,void const*) +000ABB31: jmp short locret_ABB38 +000ABB33: mov eax, 0 +000ABB38: leave +000ABB39: retn + +### FUNC 000ABB3A - 000ABB6B (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_S8_ET0_T_SC_SB_RSaIT1_E +000ABB3A: push rbp +000ABB3B: mov rbp, rsp +000ABB3E: sub rsp, 20h +000ABB42: mov [rbp+var_10], rdi +000ABB46: mov [rbp+var_20], rsi +000ABB4A: mov [rbp+var_18], rdx +000ABB4E: mov [rbp+var_8], rcx +000ABB52: mov rdx, [rbp+var_18] +000ABB56: mov rcx, [rbp+var_20] +000ABB5A: mov rax, [rbp+var_10] +000ABB5E: mov rsi, rcx +000ABB61: mov rdi, rax +000ABB64: call __ZSt18uninitialized_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_ET0_T_SC_SB_; std::uninitialized_copy>> *>,nlohmann::basic_json>> *>(std::move_iterator>> *>,std::move_iterator>> *>,nlohmann::basic_json>> *) +000ABB69: leave +000ABB6A: retn + +### FUNC 000ABB6C - 000ABB8E (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS8_m +000ABB6C: push rbp +000ABB6D: mov rbp, rsp +000ABB70: sub rsp, 20h +000ABB74: mov [rbp+var_8], rdi +000ABB78: mov [rbp+var_10], rsi +000ABB7C: mov [rbp+var_18], rdx +000ABB80: mov rax, [rbp+var_10] +000ABB84: mov rdi, rax; void * +000ABB87: call __ZdlPv; operator delete(void *) +000ABB8C: leave +000ABB8D: retn + +### FUNC 000ABB8E - 000ABB9C (14 bytes) name=_ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb0EE7_S_baseESD_ +000ABB8E: push rbp +000ABB8F: mov rbp, rsp +000ABB92: mov [rbp+var_10], rdi +000ABB96: mov rax, [rbp+var_10] +000ABB9A: pop rbp +000ABB9B: retn + +### FUNC 000ABB9C - 000ABBB6 (26 bytes) name=_ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_ +000ABB9C: push rbp +000ABB9D: mov rbp, rsp +000ABBA0: sub rsp, 10h +000ABBA4: mov [rbp+var_10], rdi +000ABBA8: mov rax, [rbp+var_10] +000ABBAC: mov rdi, rax +000ABBAF: call __ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb1EE7_S_baseESD_; std::_Iter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,true>::_S_base(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000ABBB4: leave +000ABBB5: retn + +### FUNC 000ABBB6 - 000ABBD0 (26 bytes) name=_ZSt12__niter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEEENSt11_Niter_baseIT_E13iterator_typeESD_ +000ABBB6: push rbp +000ABBB7: mov rbp, rsp +000ABBBA: sub rsp, 10h +000ABBBE: mov [rbp+var_10], rdi +000ABBC2: mov rax, [rbp+var_10] +000ABBC6: mov rdi, rax +000ABBC9: call __ZNSt10_Iter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEELb0EE7_S_baseESB_; std::_Iter_base>>,std::allocator>>>>>,false>::_S_base(std::back_insert_iterator>>,std::allocator>>>>>) +000ABBCE: leave +000ABBCF: retn + +### FUNC 000ABBD0 - 000ABC01 (49 bytes) name=_ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt20back_insert_iteratorIS3_IS7_SaIS7_EEEET1_T0_SE_SD_ +000ABBD0: push rbp +000ABBD1: mov rbp, rsp +000ABBD4: sub rsp, 30h +000ABBD8: mov [rbp+var_18], rdi +000ABBDC: mov [rbp+var_20], rsi +000ABBE0: mov [rbp+var_30], rdx +000ABBE4: mov [rbp+var_1], 0 +000ABBE8: mov rdx, [rbp+var_30] +000ABBEC: mov rcx, [rbp+var_20] +000ABBF0: mov rax, [rbp+var_18] +000ABBF4: mov rsi, rcx +000ABBF7: mov rdi, rax +000ABBFA: call __ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESt20back_insert_iteratorIS6_ISA_SaISA_EEEEET0_T_SH_SG_; std::__copy_move::__copy_m>> *,std::back_insert_iterator>>,std::allocator>>>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::back_insert_iterator>>,std::allocator>>>>>) +000ABBFF: leave +000ABC00: retn + +### FUNC 000ABC01 - 000ABC39 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000ABC01: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_' +000ABC02: mov rbp, rsp +000ABC05: sub rsp, 20h +000ABC09: mov [rbp+var_8], rdi +000ABC0D: mov [rbp+var_10], rsi +000ABC11: mov [rbp+var_18], rdx +000ABC15: mov rax, [rbp+var_18] +000ABC19: mov rdi, rax +000ABC1C: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000ABC21: mov rdx, rax +000ABC24: mov rcx, [rbp+var_10] +000ABC28: mov rax, [rbp+var_8] +000ABC2C: mov rsi, rcx +000ABC2F: mov rdi, rax +000ABC32: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JS7_EEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_; std::allocator_traits>>>>::_S_construct>>,nlohmann::basic_json>>>(std::allocator>>>&,nlohmann::basic_json>>*,nlohmann::basic_json>>&&) +000ABC37: leave +000ABC38: retn + +### FUNC 000ABC3A - 000ABE23 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJS6_EEEvDpOT_ +000ABC3A: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux>>>(nlohmann::basic_json>> &&)' +000ABC3B: mov rbp, rsp +000ABC3E: push rbx +000ABC3F: sub rsp, 38h +000ABC43: mov [rbp+var_38], rdi +000ABC47: mov [rbp+var_40], rsi +000ABC4B: mov rax, [rbp+var_38] +000ABC4F: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000ABC56: mov esi, 1 +000ABC5B: mov rdi, rax +000ABC5E: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000ABC63: mov [rbp+var_20], rax +000ABC67: mov rax, [rbp+var_38] +000ABC6B: mov rdx, [rbp+var_20] +000ABC6F: mov rsi, rdx +000ABC72: mov rdi, rax +000ABC75: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000ABC7A: mov [rbp+var_28], rax +000ABC7E: mov rax, [rbp+var_28] +000ABC82: mov [rbp+var_18], rax +000ABC86: mov rax, [rbp+var_40] +000ABC8A: mov rdi, rax +000ABC8D: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000ABC92: mov rbx, rax +000ABC95: mov rax, [rbp+var_38] +000ABC99: mov rdi, rax +000ABC9C: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000ABCA1: shl rax, 4 +000ABCA5: mov rdx, rax +000ABCA8: mov rax, [rbp+var_28] +000ABCAC: lea rcx, [rdx+rax] +000ABCB0: mov rax, [rbp+var_38] +000ABCB4: mov rdx, rbx +000ABCB7: mov rsi, rcx +000ABCBA: mov rdi, rax +000ABCBD: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JS7_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000ABCC2: mov [rbp+var_18], 0 +000ABCCA: mov rax, [rbp+var_38] +000ABCCE: mov rdi, rax +000ABCD1: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000ABCD6: mov rcx, rax +000ABCD9: mov rax, [rbp+var_38] +000ABCDD: mov rsi, [rax+8] +000ABCE1: mov rax, [rbp+var_38] +000ABCE5: mov rax, [rax] +000ABCE8: mov rdx, [rbp+var_28] +000ABCEC: mov rdi, rax +000ABCEF: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000ABCF4: mov [rbp+var_18], rax +000ABCF8: add [rbp+var_18], 10h +000ABCFD: mov rax, [rbp+var_38] +000ABD01: mov rdi, rax +000ABD04: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000ABD09: mov rdx, rax +000ABD0C: mov rax, [rbp+var_38] +000ABD10: mov rcx, [rax+8] +000ABD14: mov rax, [rbp+var_38] +000ABD18: mov rax, [rax] +000ABD1B: mov rsi, rcx +000ABD1E: mov rdi, rax +000ABD21: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000ABD26: mov rax, [rbp+var_38] +000ABD2A: mov rax, [rax+10h] +000ABD2E: mov rdx, rax +000ABD31: mov rax, [rbp+var_38] +000ABD35: mov rax, [rax] +000ABD38: sub rdx, rax +000ABD3B: mov rax, rdx +000ABD3E: sar rax, 4 +000ABD42: mov rdx, rax +000ABD45: mov rax, [rbp+var_38] +000ABD49: mov rcx, [rax] +000ABD4C: mov rax, [rbp+var_38] +000ABD50: mov rsi, rcx +000ABD53: mov rdi, rax +000ABD56: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000ABD5B: mov rax, [rbp+var_38] +000ABD5F: mov rdx, [rbp+var_28] +000ABD63: mov [rax], rdx +000ABD66: mov rax, [rbp+var_38] +000ABD6A: mov rdx, [rbp+var_18] +000ABD6E: mov [rax+8], rdx +000ABD72: mov rax, [rbp+var_20] +000ABD76: shl rax, 4 +000ABD7A: mov rdx, rax +000ABD7D: mov rax, [rbp+var_28] +000ABD81: add rdx, rax +000ABD84: mov rax, [rbp+var_38] +000ABD88: mov [rax+10h], rdx +000ABD8C: jmp loc_ABE1C +000ABD91: mov rdi, rax; void * +000ABD94: call ___cxa_begin_catch +000ABD99: cmp [rbp+var_18], 0 +000ABD9E: jnz short loc_ABDCB +000ABDA0: mov rax, [rbp+var_38] +000ABDA4: mov rdi, rax +000ABDA7: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000ABDAC: shl rax, 4 +000ABDB0: mov rdx, rax +000ABDB3: mov rax, [rbp+var_28] +000ABDB7: add rdx, rax +000ABDBA: mov rax, [rbp+var_38] +000ABDBE: mov rsi, rdx +000ABDC1: mov rdi, rax +000ABDC4: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000ABDC9: jmp short loc_ABDED +000ABDCB: mov rax, [rbp+var_38] +000ABDCF: mov rdi, rax +000ABDD2: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000ABDD7: mov rdx, rax +000ABDDA: mov rcx, [rbp+var_18] +000ABDDE: mov rax, [rbp+var_28] +000ABDE2: mov rsi, rcx +000ABDE5: mov rdi, rax +000ABDE8: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000ABDED: mov rax, [rbp+var_38] +000ABDF1: mov rdx, [rbp+var_20] +000ABDF5: mov rcx, [rbp+var_28] +000ABDF9: mov rsi, rcx +000ABDFC: mov rdi, rax +000ABDFF: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000ABE04: call ___cxa_rethrow +000ABE09: mov rbx, rax +000ABE0C: call ___cxa_end_catch +000ABE11: mov rax, rbx +000ABE14: mov rdi, rax; struct _Unwind_Exception * +000ABE17: call __Unwind_Resume +000ABE1C: add rsp, 38h +000ABE20: pop rbx +000ABE21: pop rbp +000ABE22: retn + +### FUNC 000ABE24 - 000ABE40 (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKSA_ +000ABE24: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>> const*, std::vector>>, std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> const* const&)' +000ABE25: mov rbp, rsp +000ABE28: mov [rbp+var_8], rdi +000ABE2C: mov [rbp+var_10], rsi +000ABE30: mov rax, [rbp+var_10] +000ABE34: mov rdx, [rax] +000ABE37: mov rax, [rbp+var_8] +000ABE3B: mov [rax], rdx +000ABE3E: pop rbp +000ABE3F: retn + +### FUNC 000ABE40 - 000ABE4E (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv +000ABE40: push rbp +000ABE41: mov rbp, rsp +000ABE44: mov [rbp+var_8], rdi +000ABE48: mov rax, [rbp+var_8] +000ABE4C: pop rbp +000ABE4D: retn + +### FUNC 000ABE4E - 000ABE73 (37 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS7_EENSt9enable_ifIXsrNS9_16__destroy_helperIT_EE5valueEvE4typeERS8_PSD_ +000ABE4E: push rbp +000ABE4F: mov rbp, rsp +000ABE52: sub rsp, 10h +000ABE56: mov [rbp+var_8], rdi +000ABE5A: mov [rbp+var_10], rsi +000ABE5E: mov rdx, [rbp+var_10] +000ABE62: mov rax, [rbp+var_8] +000ABE66: mov rsi, rdx +000ABE69: mov rdi, rax +000ABE6C: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS8_EEvPT_; __gnu_cxx::new_allocator>>>::destroy>>>(nlohmann::basic_json>> *) +000ABE71: leave +000ABE72: retn + +### FUNC 000ABE74 - 000ABED8 (100 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E +000ABE74: push rbp +000ABE75: mov rbp, rsp +000ABE78: sub rsp, 20h +000ABE7C: mov [rbp+var_18], rdi +000ABE80: mov [rbp+var_20], rsi +000ABE84: jmp short loc_ABECF +000ABE86: mov rax, [rbp+var_20] +000ABE8A: mov rdi, rax +000ABE8D: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base *) +000ABE92: mov rdx, rax +000ABE95: mov rax, [rbp+var_18] +000ABE99: mov rsi, rdx +000ABE9C: mov rdi, rax +000ABE9F: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_erase(std::_Rb_tree_node>>>> *) +000ABEA4: mov rax, [rbp+var_20] +000ABEA8: mov rdi, rax +000ABEAB: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_left(std::_Rb_tree_node_base *) +000ABEB0: mov [rbp+var_8], rax +000ABEB4: mov rdx, [rbp+var_20] +000ABEB8: mov rax, [rbp+var_18] +000ABEBC: mov rsi, rdx +000ABEBF: mov rdi, rax +000ABEC2: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_destroy_node(std::_Rb_tree_node>>>> *) +000ABEC7: mov rax, [rbp+var_8] +000ABECB: mov [rbp+var_20], rax +000ABECF: cmp [rbp+var_20], 0 +000ABED4: jnz short loc_ABE86 +000ABED6: leave +000ABED7: retn + +### FUNC 000ABED8 - 000ABEEA (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +000ABED8: push rbp +000ABED9: mov rbp, rsp +000ABEDC: mov [rbp+var_8], rdi +000ABEE0: mov rax, [rbp+var_8] +000ABEE4: mov rax, [rax+10h] +000ABEE8: pop rbp +000ABEE9: retn + +### FUNC 000ABEEA - 000ABEFC (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv +000ABEEA: push rbp +000ABEEB: mov rbp, rsp +000ABEEE: mov [rbp+var_8], rdi +000ABEF2: mov rax, [rbp+var_8] +000ABEF6: add rax, 8 +000ABEFA: pop rbp +000ABEFB: retn + +### FUNC 000ABEFC - 000ABF0E (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv +000ABEFC: push rbp +000ABEFD: mov rbp, rsp +000ABF00: mov [rbp+var_8], rdi +000ABF04: mov rax, [rbp+var_8] +000ABF08: add rax, 18h +000ABF0C: pop rbp +000ABF0D: retn + +### FUNC 000ABF0E - 000ABF20 (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +000ABF0E: push rbp +000ABF0F: mov rbp, rsp +000ABF12: mov [rbp+var_8], rdi +000ABF16: mov rax, [rbp+var_8] +000ABF1A: add rax, 10h +000ABF1E: pop rbp +000ABF1F: retn + +### FUNC 000ABF20 - 000ABF32 (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv +000ABF20: push rbp +000ABF21: mov rbp, rsp +000ABF24: mov [rbp+var_8], rdi +000ABF28: mov rax, [rbp+var_8] +000ABF2C: add rax, 20h ; ' ' +000ABF30: pop rbp +000ABF31: retn + +### FUNC 000ABF32 - 000ABF4C (26 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEED2Ev +000ABF32: push rbp; Alternative name is 'std::map>>, std::less, std::allocator>>>>>::~map()' +000ABF33: mov rbp, rsp +000ABF36: sub rsp, 10h +000ABF3A: mov [rbp+var_8], rdi +000ABF3E: mov rax, [rbp+var_8] +000ABF42: mov rdi, rax +000ABF45: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EED2Ev; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::~_Rb_tree() +000ABF4A: leave +000ABF4B: retn + +### FUNC 000ABF4C - 000ABF6A (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE7destroyISF_EEvPT_ +000ABF4C: push rbp +000ABF4D: mov rbp, rsp +000ABF50: sub rsp, 10h +000ABF54: mov [rbp+var_8], rdi +000ABF58: mov [rbp+var_10], rsi +000ABF5C: mov rax, [rbp+var_10] +000ABF60: mov rdi, rax +000ABF63: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEED2Ev; std::map>>,std::less,std::allocator>>>>>::~map() +000ABF68: leave +000ABF69: retn + +### FUNC 000ABF6A - 000ABF88 (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE7destroyISA_EEvPT_ +000ABF6A: push rbp +000ABF6B: mov rbp, rsp +000ABF6E: sub rsp, 10h +000ABF72: mov [rbp+var_8], rdi +000ABF76: mov [rbp+var_10], rsi +000ABF7A: mov rax, [rbp+var_10] +000ABF7E: mov rdi, rax +000ABF81: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EED2Ev; std::vector>>,std::allocator>>>>::~vector() +000ABF86: leave +000ABF87: retn + +### FUNC 000ABF88 - 000ABFA6 (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISsE7destroyISsEEvPT_ +000ABF88: push rbp +000ABF89: mov rbp, rsp +000ABF8C: sub rsp, 10h +000ABF90: mov [rbp+var_8], rdi +000ABF94: mov [rbp+var_10], rsi +000ABF98: mov rax, [rbp+var_10] +000ABF9C: mov rdi, rax; this +000ABF9F: call __ZNSsD1Ev; std::string::~string() +000ABFA4: leave +000ABFA5: retn + +### FUNC 000ABFA6 - 000ABFC0 (26 bytes) name=_ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEED2Ev +000ABFA6: push rbp; Alternative name is 'nlohmann::byte_container_with_subtype>>::~byte_container_with_subtype()' +000ABFA7: mov rbp, rsp +000ABFAA: sub rsp, 10h +000ABFAE: mov [rbp+var_8], rdi +000ABFB2: mov rax, [rbp+var_8] +000ABFB6: mov rdi, rax +000ABFB9: call __ZNSt6vectorIhSaIhEED2Ev; std::vector>::~vector() +000ABFBE: leave +000ABFBF: retn + +### FUNC 000ABFC0 - 000ABFDE (30 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE7destroyIS6_EEvPT_ +000ABFC0: push rbp +000ABFC1: mov rbp, rsp +000ABFC4: sub rsp, 10h +000ABFC8: mov [rbp+var_8], rdi +000ABFCC: mov [rbp+var_10], rsi +000ABFD0: mov rax, [rbp+var_10] +000ABFD4: mov rdi, rax +000ABFD7: call __ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEED2Ev; nlohmann::byte_container_with_subtype>>::~byte_container_with_subtype() +000ABFDC: leave +000ABFDD: retn + +### FUNC 000ABFDE - 000ABFF8 (26 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EEC2Ev +000ABFDE: push rbp; Alternative name is 'std::_Vector_base>> *, std::allocator>> *>>::_Vector_base(void)' +000ABFDF: mov rbp, rsp +000ABFE2: sub rsp, 10h +000ABFE6: mov [rbp+var_8], rdi +000ABFEA: mov rax, [rbp+var_8] +000ABFEE: mov rdi, rax +000ABFF1: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implC2Ev; std::_Vector_base>> *,std::allocator>> *>>::_Vector_impl::_Vector_impl(void) +000ABFF6: leave +000ABFF7: retn + +### FUNC 000ABFF8 - 000AC012 (26 bytes) name=_ZNSt13_Bvector_baseISaIbEEC2Ev +000ABFF8: push rbp; Alternative name is 'std::_Bvector_base>::_Bvector_base(void)' +000ABFF9: mov rbp, rsp +000ABFFC: sub rsp, 10h +000AC000: mov [rbp+var_8], rdi +000AC004: mov rax, [rbp+var_8] +000AC008: mov rdi, rax +000AC00B: call __ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev; std::_Bvector_base>::_Bvector_impl::_Bvector_impl(void) +000AC010: leave +000AC011: retn + +### FUNC 000AC012 - 000AC33E (812 bytes) name=_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb +000AC012: push rbp +000AC013: mov rbp, rsp +000AC016: push rbx +000AC017: sub rsp, 118h +000AC01E: mov [rbp+var_F8], rdi +000AC025: mov eax, ecx +000AC027: mov [rbp+var_108], rsi +000AC02E: mov [rbp+var_100], rdx +000AC035: mov [rbp+var_10C], al +000AC03B: mov rax, [rbp+var_F8] +000AC042: mov rdx, [rax+10h] +000AC046: mov rax, [rbp+var_F8] +000AC04D: mov rax, [rax+20h] +000AC051: cmp rdx, rax +000AC054: jz loc_AC120 +000AC05A: mov rax, [rbp+var_F8] +000AC061: add rax, 10h +000AC065: mov esi, 1 +000AC06A: mov rdi, rax +000AC06D: call __ZNKSt13_Bit_iteratorplEl; std::_Bit_iterator::operator+(long) +000AC072: mov rcx, rax +000AC075: mov rax, rdx +000AC078: mov [rbp+var_D0], rcx +000AC07F: mov [rbp+var_C8], rax +000AC086: mov r8, [rbp+var_D0] +000AC08D: mov rdi, [rbp+var_C8] +000AC094: mov rax, [rbp+var_F8] +000AC09B: mov rdx, [rax+10h] +000AC09F: mov rcx, [rax+18h] +000AC0A3: mov rsi, [rbp+var_108] +000AC0AA: mov rax, [rbp+var_100] +000AC0B1: mov r9, rdi +000AC0B4: mov rdi, rsi +000AC0B7: mov rsi, rax +000AC0BA: call __ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_; std::copy_backward(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000AC0BF: mov rcx, rax +000AC0C2: mov rax, rdx +000AC0C5: mov [rbp+var_E0], rcx +000AC0CC: mov [rbp+var_D8], rax +000AC0D3: movzx ebx, [rbp+var_10C] +000AC0DA: lea rax, [rbp+var_108] +000AC0E1: mov rdi, rax +000AC0E4: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000AC0E9: mov [rbp+var_C0], rax +000AC0F0: mov [rbp+var_B8], rdx +000AC0F7: lea rax, [rbp+var_C0] +000AC0FE: mov esi, ebx +000AC100: mov rdi, rax +000AC103: call __ZNSt14_Bit_referenceaSEb; std::_Bit_reference::operator=(bool) +000AC108: mov rax, [rbp+var_F8] +000AC10F: add rax, 10h +000AC113: mov rdi, rax +000AC116: call __ZNSt13_Bit_iteratorppEv; std::_Bit_iterator::operator++(void) +000AC11B: jmp loc_AC334 +000AC120: mov rax, [rbp+var_F8] +000AC127: lea rdx, aVectorBoolMIns; "vector::_M_insert_aux" +000AC12E: mov esi, 1 +000AC133: mov rdi, rax +000AC136: call __ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000AC13B: mov [rbp+var_18], rax +000AC13F: mov rax, [rbp+var_F8] +000AC146: mov rdx, [rbp+var_18] +000AC14A: mov rsi, rdx +000AC14D: mov rdi, rax +000AC150: call __ZNSt13_Bvector_baseISaIbEE11_M_allocateEm; std::_Bvector_base>::_M_allocate(ulong) +000AC155: mov [rbp+var_20], rax +000AC159: mov rcx, [rbp+var_20] +000AC15D: lea rax, [rbp+var_B0] +000AC164: mov edx, 0; unsigned int +000AC169: mov rsi, rcx; unsigned __int64 * +000AC16C: mov rdi, rax; this +000AC16F: call __ZNSt13_Bit_iteratorC2EPmj; std::_Bit_iterator::_Bit_iterator(ulong *,uint) +000AC174: lea rdx, [rbp+var_108] +000AC17B: lea rax, [rbp+var_A0] +000AC182: mov rsi, rdx; std::_Bit_iterator * +000AC185: mov rdi, rax; this +000AC188: call __ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator; std::_Bit_const_iterator::_Bit_const_iterator(std::_Bit_iterator const&) +000AC18D: mov rax, [rbp+var_F8] +000AC194: mov rdi, rax +000AC197: call __ZNSt6vectorIbSaIbEE5beginEv; std::vector>::begin(void) +000AC19C: mov rcx, rax +000AC19F: mov rax, rdx +000AC1A2: mov [rbp+var_80], rcx +000AC1A6: mov [rbp+var_78], rax +000AC1AA: lea rdx, [rbp+var_80] +000AC1AE: lea rax, [rbp+var_90] +000AC1B5: mov rsi, rdx; std::_Bit_iterator * +000AC1B8: mov rdi, rax; this +000AC1BB: call __ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator; std::_Bit_const_iterator::_Bit_const_iterator(std::_Bit_iterator const&) +000AC1C0: mov rcx, [rbp+var_A0] +000AC1C7: mov r8, [rbp+var_98] +000AC1CE: mov rsi, [rbp+var_90] +000AC1D5: mov rdx, [rbp+var_88] +000AC1DC: mov rax, [rbp+var_F8] +000AC1E3: mov rdi, [rbp+var_B0] +000AC1EA: mov [rsp+120h+var_120], rdi +000AC1EE: mov rdi, [rbp+var_A8] +000AC1F5: mov [rsp+120h+var_118], rdi +000AC1FA: mov rdi, rax +000AC1FD: call __ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator; std::vector>::_M_copy_aligned(std::_Bit_const_iterator,std::_Bit_const_iterator,std::_Bit_iterator) +000AC202: mov rcx, rax +000AC205: mov rax, rdx +000AC208: mov [rbp+var_F0], rcx +000AC20F: mov [rbp+var_E8], rax +000AC216: movzx ebx, [rbp+var_10C] +000AC21D: lea rax, [rbp+var_F0] +000AC224: mov esi, 0 +000AC229: mov rdi, rax +000AC22C: call __ZNSt13_Bit_iteratorppEi; std::_Bit_iterator::operator++(int) +000AC231: mov rcx, rax +000AC234: mov rax, rdx +000AC237: mov [rbp+var_60], rcx +000AC23B: mov [rbp+var_58], rax +000AC23F: lea rax, [rbp+var_60] +000AC243: mov rdi, rax +000AC246: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000AC24B: mov [rbp+var_70], rax +000AC24F: mov [rbp+var_68], rdx +000AC253: lea rax, [rbp+var_70] +000AC257: mov esi, ebx +000AC259: mov rdi, rax +000AC25C: call __ZNSt14_Bit_referenceaSEb; std::_Bit_reference::operator=(bool) +000AC261: mov rax, [rbp+var_F8] +000AC268: mov rdi, rax +000AC26B: call __ZNSt6vectorIbSaIbEE3endEv; std::vector>::end(void) +000AC270: mov rcx, rax +000AC273: mov rax, rdx +000AC276: mov [rbp+var_40], rcx +000AC27A: mov [rbp+var_38], rax +000AC27E: mov r8, [rbp+var_F0] +000AC285: mov rdi, [rbp+var_E8] +000AC28C: mov rdx, [rbp+var_40] +000AC290: mov rcx, [rbp+var_38] +000AC294: mov rsi, [rbp+var_108] +000AC29B: mov rax, [rbp+var_100] +000AC2A2: mov r9, rdi +000AC2A5: mov rdi, rsi +000AC2A8: mov rsi, rax +000AC2AB: call __ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_; std::copy(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000AC2B0: mov rcx, rax +000AC2B3: mov rax, rdx +000AC2B6: mov [rbp+var_50], rcx +000AC2BA: mov [rbp+var_48], rax +000AC2BE: mov rax, [rbp+var_F8] +000AC2C5: mov rdx, [rbp+var_50] +000AC2C9: mov [rax+10h], rdx +000AC2CD: mov edx, dword ptr [rbp+var_48] +000AC2D0: mov [rax+18h], edx +000AC2D3: mov rax, [rbp+var_F8] +000AC2DA: mov rdi, rax +000AC2DD: call __ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv; std::_Bvector_base>::_M_deallocate(void) +000AC2E2: mov rax, [rbp+var_18] +000AC2E6: mov rdi, rax +000AC2E9: call __ZNSt13_Bvector_baseISaIbEE8_S_nwordEm; std::_Bvector_base>::_S_nword(ulong) +000AC2EE: lea rdx, ds:0[rax*8] +000AC2F6: mov rax, [rbp+var_20] +000AC2FA: add rdx, rax +000AC2FD: mov rax, [rbp+var_F8] +000AC304: mov [rax+20h], rdx +000AC308: mov rcx, [rbp+var_20] +000AC30C: lea rax, [rbp+var_30] +000AC310: mov edx, 0; unsigned int +000AC315: mov rsi, rcx; unsigned __int64 * +000AC318: mov rdi, rax; this +000AC31B: call __ZNSt13_Bit_iteratorC2EPmj; std::_Bit_iterator::_Bit_iterator(ulong *,uint) +000AC320: mov rax, [rbp+var_F8] +000AC327: mov rdx, [rbp+var_30] +000AC32B: mov [rax], rdx +000AC32E: mov edx, [rbp+var_28] +000AC331: mov [rax+8], edx +000AC334: add rsp, 118h +000AC33B: pop rbx +000AC33C: pop rbp +000AC33D: retn + +### FUNC 000AC33E - 000AC364 (38 bytes) name=_ZNSt6vectorIbSaIbEE3endEv +000AC33E: push rbp +000AC33F: mov rbp, rsp +000AC342: mov [rbp+var_18], rdi +000AC346: mov rax, [rbp+var_18] +000AC34A: mov rdx, [rax+10h] +000AC34E: mov [rbp+var_10], rdx +000AC352: mov rax, [rax+18h] +000AC356: mov [rbp+var_8], rax +000AC35A: mov rax, [rbp+var_10] +000AC35E: mov rdx, [rbp+var_8] +000AC362: pop rbp +000AC363: retn + +### FUNC 000AC364 - 000AC37E (26 bytes) name=_ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev +000AC364: push rbp; Alternative name is 'std::allocator>> *>::~allocator()' +000AC365: mov rbp, rsp +000AC368: sub rsp, 10h +000AC36C: mov [rbp+var_8], rdi +000AC370: mov rax, [rbp+var_8] +000AC374: mov rdi, rax +000AC377: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev; __gnu_cxx::new_allocator>> *>::~new_allocator() +000AC37C: leave +000AC37D: retn + +### FUNC 000AC37E - 000AC3B2 (52 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m +000AC37E: push rbp +000AC37F: mov rbp, rsp +000AC382: sub rsp, 20h +000AC386: mov [rbp+var_8], rdi +000AC38A: mov [rbp+var_10], rsi +000AC38E: mov [rbp+var_18], rdx +000AC392: cmp [rbp+var_10], 0 +000AC397: jz short locret_AC3B0 +000AC399: mov rax, [rbp+var_8] +000AC39D: mov rdx, [rbp+var_18] +000AC3A1: mov rcx, [rbp+var_10] +000AC3A5: mov rsi, rcx +000AC3A8: mov rdi, rax +000AC3AB: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS9_m; __gnu_cxx::new_allocator>> *>::deallocate(nlohmann::basic_json>> **,ulong) +000AC3B0: leave +000AC3B1: retn + +### FUNC 000AC3B2 - 000AC3D7 (37 bytes) name=_ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_SA_ +000AC3B2: push rbp +000AC3B3: mov rbp, rsp +000AC3B6: sub rsp, 10h +000AC3BA: mov [rbp+var_8], rdi +000AC3BE: mov [rbp+var_10], rsi +000AC3C2: mov rdx, [rbp+var_10] +000AC3C6: mov rax, [rbp+var_8] +000AC3CA: mov rsi, rdx +000AC3CD: mov rdi, rax +000AC3D0: call __ZNSt12_Destroy_auxILb1EE9__destroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SC_; std::_Destroy_aux::__destroy>> **>(nlohmann::basic_json>> **,nlohmann::basic_json>> **) +000AC3D5: leave +000AC3D6: retn + +### FUNC 000AC3D8 - 000AC3F2 (26 bytes) name=_ZNSaImED2Ev +000AC3D8: push rbp; Alternative name is 'std::allocator::~allocator()' +000AC3D9: mov rbp, rsp +000AC3DC: sub rsp, 10h +000AC3E0: mov [rbp+var_8], rdi +000AC3E4: mov rax, [rbp+var_8] +000AC3E8: mov rdi, rax +000AC3EB: call __ZN9__gnu_cxx13new_allocatorImED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000AC3F0: leave +000AC3F1: retn + +### FUNC 000AC3F2 - 000AC441 (79 bytes) name=_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv +000AC3F2: push rbp +000AC3F3: mov rbp, rsp +000AC3F6: sub rsp, 10h +000AC3FA: mov [rbp+var_8], rdi +000AC3FE: mov rax, [rbp+var_8] +000AC402: mov rax, [rax] +000AC405: test rax, rax +000AC408: jz short locret_AC43F +000AC40A: mov rax, [rbp+var_8] +000AC40E: mov rax, [rax+20h] +000AC412: mov rdx, rax +000AC415: mov rax, [rbp+var_8] +000AC419: mov rax, [rax] +000AC41C: sub rdx, rax +000AC41F: mov rax, rdx +000AC422: sar rax, 3 +000AC426: mov rdx, rax +000AC429: mov rax, [rbp+var_8] +000AC42D: mov rcx, [rax] +000AC430: mov rax, [rbp+var_8] +000AC434: mov rsi, rcx +000AC437: mov rdi, rax +000AC43A: call __ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm; __gnu_cxx::new_allocator::deallocate(ulong *,ulong) +000AC43F: leave +000AC440: retn + +### FUNC 000AC442 - 000AC468 (38 bytes) name=_ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv +000AC442: push rbp +000AC443: mov rbp, rsp +000AC446: mov [rbp+var_8], rdi +000AC44A: mov rax, [rbp+var_8] +000AC44E: mov rax, [rax+8] +000AC452: mov rdx, rax +000AC455: mov rax, [rbp+var_8] +000AC459: mov rax, [rax] +000AC45C: sub rdx, rax +000AC45F: mov rax, rdx +000AC462: sar rax, 3 +000AC466: pop rbp +000AC467: retn + +### FUNC 000AC468 - 000AC476 (14 bytes) name=_ZSt7forwardIN8nlohmann6detail13parse_event_tEEOT_RNSt16remove_referenceIS3_E4typeE +000AC468: push rbp +000AC469: mov rbp, rsp +000AC46C: mov [rbp+var_8], rdi +000AC470: mov rax, [rbp+var_8] +000AC474: pop rbp +000AC475: retn + +### FUNC 000AC476 - 000AC484 (14 bytes) name=_ZSt7forwardIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +000AC476: push rbp +000AC477: mov rbp, rsp +000AC47A: mov [rbp+var_8], rdi +000AC47E: mov rax, [rbp+var_8] +000AC482: pop rbp +000AC483: retn + +### FUNC 000AC484 - 000AC505 (129 bytes) name=_ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_ +000AC484: push rbp +000AC485: mov rbp, rsp +000AC488: push r13 +000AC48A: push r12 +000AC48C: push rbx +000AC48D: sub rsp, 28h +000AC491: mov [rbp+var_28], rdi +000AC495: mov [rbp+var_2C], esi +000AC498: mov eax, edx +000AC49A: mov [rbp+var_38], rcx +000AC49E: mov [rbp+var_30], al +000AC4A1: mov rax, [rbp+var_28] +000AC4A5: mov rdi, rax; this +000AC4A8: call __ZNKSt14_Function_base8_M_emptyEv; std::_Function_base::_M_empty(void) +000AC4AD: test al, al +000AC4AF: jz short loc_AC4B6 +000AC4B1: call __ZSt25__throw_bad_function_callv; std::__throw_bad_function_call(void) +000AC4B6: mov rax, [rbp+var_28] +000AC4BA: mov rbx, [rax+18h] +000AC4BE: mov rax, [rbp+var_38] +000AC4C2: mov rdi, rax +000AC4C5: call __ZSt7forwardIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> &>(std::remove_reference>> &>::type &) +000AC4CA: mov r13, rax +000AC4CD: lea rax, [rbp+var_30] +000AC4D1: mov rdi, rax +000AC4D4: call __ZSt7forwardIN8nlohmann6detail13parse_event_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000AC4D9: movzx r12d, byte ptr [rax] +000AC4DD: lea rax, [rbp+var_2C] +000AC4E1: mov rdi, rax +000AC4E4: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000AC4E9: mov esi, [rax] +000AC4EB: mov rax, [rbp+var_28] +000AC4EF: mov rcx, r13 +000AC4F2: mov edx, r12d +000AC4F5: mov rdi, rax +000AC4F8: call rbx +000AC4FA: add rsp, 28h +000AC4FE: pop rbx +000AC4FF: pop r12 +000AC501: pop r13 +000AC503: pop rbp +000AC504: retn + +### FUNC 000AC505 - 000AC513 (14 bytes) name=_ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE +000AC505: push rbp +000AC506: mov rbp, rsp +000AC509: mov [rbp+var_8], rdi +000AC50D: mov rax, [rbp+var_8] +000AC511: pop rbp +000AC512: retn + +### FUNC 000AC514 - 000AC557 (67 bytes) name=_ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_ +000AC514: push rbp; Alternative name is 'std::pair>> *>::pair(bool &&, decltype(nullptr) &&)' +000AC515: mov rbp, rsp +000AC518: sub rsp, 20h +000AC51C: mov [rbp+var_8], rdi +000AC520: mov [rbp+var_10], rsi +000AC524: mov [rbp+var_18], rdx +000AC528: mov rax, [rbp+var_10] +000AC52C: mov rdi, rax +000AC52F: call __ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000AC534: movzx edx, byte ptr [rax] +000AC537: mov rax, [rbp+var_8] +000AC53B: mov [rax], dl +000AC53D: mov rax, [rbp+var_18] +000AC541: mov rdi, rax +000AC544: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AC549: mov rax, [rbp+var_8] +000AC54D: mov qword ptr [rax+8], 0 +000AC555: leave +000AC556: retn + +### FUNC 000AC557 - 000AC565 (14 bytes) name=_ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE +000AC557: push rbp +000AC558: mov rbp, rsp +000AC55B: mov [rbp+var_8], rdi +000AC55F: mov rax, [rbp+var_8] +000AC563: pop rbp +000AC564: retn + +### FUNC 000AC566 - 000AC5A8 (66 bytes) name=_ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_ +000AC566: push rbp; Alternative name is 'std::pair>> *>::pair>> *, void>(bool &&, nlohmann::basic_json>> * &&)' +000AC567: mov rbp, rsp +000AC56A: sub rsp, 20h +000AC56E: mov [rbp+var_8], rdi +000AC572: mov [rbp+var_10], rsi +000AC576: mov [rbp+var_18], rdx +000AC57A: mov rax, [rbp+var_10] +000AC57E: mov rdi, rax +000AC581: call __ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000AC586: movzx edx, byte ptr [rax] +000AC589: mov rax, [rbp+var_8] +000AC58D: mov [rax], dl +000AC58F: mov rax, [rbp+var_18] +000AC593: mov rdi, rax +000AC596: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000AC59B: mov rdx, [rax] +000AC59E: mov rax, [rbp+var_8] +000AC5A2: mov [rax+8], rdx +000AC5A6: leave +000AC5A7: retn + +### FUNC 000AC5A8 - 000AC5B6 (14 bytes) name=_ZSt7forwardIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE +000AC5A8: push rbp +000AC5A9: mov rbp, rsp +000AC5AC: mov [rbp+var_8], rdi +000AC5B0: mov rax, [rbp+var_8] +000AC5B4: pop rbp +000AC5B5: retn + +### FUNC 000AC5B6 - 000AC5F8 (66 bytes) name=_ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_ +000AC5B6: push rbp; Alternative name is 'std::pair>> *>::pair>> *&, void>(bool &&, nlohmann::basic_json>> *&)' +000AC5B7: mov rbp, rsp +000AC5BA: sub rsp, 20h +000AC5BE: mov [rbp+var_8], rdi +000AC5C2: mov [rbp+var_10], rsi +000AC5C6: mov [rbp+var_18], rdx +000AC5CA: mov rax, [rbp+var_10] +000AC5CE: mov rdi, rax +000AC5D1: call __ZSt7forwardIbEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000AC5D6: movzx edx, byte ptr [rax] +000AC5D9: mov rax, [rbp+var_8] +000AC5DD: mov [rax], dl +000AC5DF: mov rax, [rbp+var_18] +000AC5E3: mov rdi, rax +000AC5E6: call __ZSt7forwardIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE; std::forward>> *&>(std::remove_reference>> *&>::type &) +000AC5EB: mov rdx, [rax] +000AC5EE: mov rax, [rbp+var_8] +000AC5F2: mov [rax+8], rdx +000AC5F6: leave +000AC5F7: retn + +### FUNC 000AC5F8 - 000ACBB2 (1466 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_b +000AC5F8: push rbp +000AC5F9: mov rbp, rsp +000AC5FC: push r13 +000AC5FE: push r12 +000AC600: push rbx +000AC601: sub rsp, 158h +000AC608: mov [rbp+var_158], rdi +000AC60F: mov [rbp+var_160], rsi +000AC616: mov eax, edx +000AC618: mov [rbp+var_164], al +000AC61E: mov rax, [rbp+var_158] +000AC625: add rax, 20h ; ' ' +000AC629: mov rdi, rax +000AC62C: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AC631: test al, al +000AC633: jz short loc_AC654 +000AC635: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AC63C: mov edx, 1654h; line +000AC641: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AC648: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000AC64F: call ___assert_fail +000AC654: mov rax, [rbp+var_158] +000AC65B: add rax, 20h ; ' ' +000AC65F: mov rdi, rax +000AC662: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AC667: mov [rbp+var_140], rax +000AC66E: mov [rbp+var_138], rdx +000AC675: lea rax, [rbp+var_140] +000AC67C: mov rdi, rax +000AC67F: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AC684: xor eax, 1 +000AC687: test al, al +000AC689: jz short loc_AC6D0 +000AC68B: mov [rbp+var_119], 0 +000AC696: mov [rbp+var_111], 0 +000AC69D: lea rdx, [rbp+var_119] +000AC6A4: lea rcx, [rbp+var_111] +000AC6AB: lea rax, [rbp+var_130] +000AC6B2: mov rsi, rcx +000AC6B5: mov rdi, rax +000AC6B8: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AC6BD: mov r12, [rbp+var_130] +000AC6C4: mov r13, [rbp+var_128] +000AC6CB: jmp loc_ACB77 +000AC6D0: mov rax, [rbp+var_160] +000AC6D7: mov rdi, rax +000AC6DA: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000AC6DF: movzx edx, byte ptr [rax] +000AC6E2: lea rax, [rbp+var_150] +000AC6E9: mov esi, edx +000AC6EB: mov rdi, rax +000AC6EE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +000AC6F3: cmp [rbp+var_164], 0 +000AC6FA: jnz short loc_AC737 +000AC6FC: mov rax, [rbp+var_158] +000AC703: add rax, 8 +000AC707: mov rdi, rax +000AC70A: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000AC70F: mov rdx, [rbp+var_158] +000AC716: lea rdi, [rdx+80h] +000AC71D: lea rdx, [rbp+var_150] +000AC724: mov rcx, rdx +000AC727: mov edx, 5 +000AC72C: mov esi, eax +000AC72E: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000AC733: test al, al +000AC735: jz short loc_AC73E +000AC737: mov eax, 1 +000AC73C: jmp short loc_AC743 +000AC73E: mov eax, 0 +000AC743: mov [rbp+var_21], al +000AC746: movzx eax, [rbp+var_21] +000AC74A: xor eax, 1 +000AC74D: test al, al +000AC74F: jz short loc_AC796 +000AC751: mov [rbp+var_F9], 0 +000AC75C: mov [rbp+var_F1], 0 +000AC763: lea rdx, [rbp+var_F9] +000AC76A: lea rcx, [rbp+var_F1] +000AC771: lea rax, [rbp+var_110] +000AC778: mov rsi, rcx +000AC77B: mov rdi, rax +000AC77E: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AC783: mov r12, [rbp+var_110] +000AC78A: mov r13, [rbp+var_108] +000AC791: jmp loc_ACB68 +000AC796: mov rax, [rbp+var_158] +000AC79D: add rax, 8 +000AC7A1: mov rdi, rax +000AC7A4: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AC7A9: test al, al +000AC7AB: jz loc_AC84B +000AC7B1: lea rax, [rbp+var_150] +000AC7B8: mov rdi, rax +000AC7BB: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AC7C0: mov rdx, rax +000AC7C3: lea rax, [rbp+var_F0] +000AC7CA: mov rsi, rdx +000AC7CD: mov rdi, rax +000AC7D0: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AC7D5: mov rax, [rbp+var_158] +000AC7DC: mov rax, [rax] +000AC7DF: lea rdx, [rbp+var_F0] +000AC7E6: mov rsi, rdx +000AC7E9: mov rdi, rax +000AC7EC: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AC7F1: lea rax, [rbp+var_F0] +000AC7F8: mov rdi, rax +000AC7FB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AC800: mov rax, [rbp+var_158] +000AC807: mov rax, [rax] +000AC80A: mov [rbp+var_D0], rax +000AC811: mov [rbp+var_C1], 1 +000AC818: lea rdx, [rbp+var_D0] +000AC81F: lea rcx, [rbp+var_C1] +000AC826: lea rax, [rbp+var_E0] +000AC82D: mov rsi, rcx +000AC830: mov rdi, rax +000AC833: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AC838: mov r12, [rbp+var_E0] +000AC83F: mov r13, [rbp+var_D8] +000AC846: jmp loc_ACB68 +000AC84B: mov rax, [rbp+var_158] +000AC852: add rax, 8 +000AC856: mov rdi, rax +000AC859: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC85E: mov rax, [rax] +000AC861: test rax, rax +000AC864: setz al +000AC867: test al, al +000AC869: jz short loc_AC8B0 +000AC86B: mov [rbp+var_A9], 0 +000AC876: mov [rbp+var_A1], 0 +000AC87D: lea rdx, [rbp+var_A9] +000AC884: lea rcx, [rbp+var_A1] +000AC88B: lea rax, [rbp+var_C0] +000AC892: mov rsi, rcx +000AC895: mov rdi, rax +000AC898: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AC89D: mov r12, [rbp+var_C0] +000AC8A4: mov r13, [rbp+var_B8] +000AC8AB: jmp loc_ACB68 +000AC8B0: mov rax, [rbp+var_158] +000AC8B7: add rax, 8 +000AC8BB: mov rdi, rax +000AC8BE: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC8C3: mov rax, [rax] +000AC8C6: mov rdi, rax +000AC8C9: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AC8CE: xor eax, 1 +000AC8D1: test al, al +000AC8D3: jz short loc_AC919 +000AC8D5: mov rax, [rbp+var_158] +000AC8DC: add rax, 8 +000AC8E0: mov rdi, rax +000AC8E3: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC8E8: mov rax, [rax] +000AC8EB: mov rdi, rax +000AC8EE: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AC8F3: xor eax, 1 +000AC8F6: test al, al +000AC8F8: jz short loc_AC919 +000AC8FA: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AC901: mov edx, 1677h; line +000AC906: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AC90D: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AC914: call ___assert_fail +000AC919: mov rax, [rbp+var_158] +000AC920: add rax, 8 +000AC924: mov rdi, rax +000AC927: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC92C: mov rax, [rax] +000AC92F: mov rdi, rax +000AC932: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AC937: test al, al +000AC939: jz loc_AC9D9 +000AC93F: lea rax, [rbp+var_150] +000AC946: mov rdi, rax +000AC949: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AC94E: mov rbx, rax +000AC951: mov rax, [rbp+var_158] +000AC958: add rax, 8 +000AC95C: mov rdi, rax +000AC95F: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC964: mov rax, [rax] +000AC967: mov rax, [rax+8] +000AC96B: mov rsi, rbx +000AC96E: mov rdi, rax +000AC971: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000AC976: mov rax, [rbp+var_158] +000AC97D: add rax, 8 +000AC981: mov rdi, rax +000AC984: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC989: mov rax, [rax] +000AC98C: mov rax, [rax+8] +000AC990: mov rdi, rax +000AC993: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AC998: mov [rbp+var_90], rax +000AC99F: mov [rbp+var_81], 1 +000AC9A6: lea rdx, [rbp+var_90] +000AC9AD: lea rcx, [rbp+var_81] +000AC9B4: lea rax, [rbp+var_A0] +000AC9BB: mov rsi, rcx +000AC9BE: mov rdi, rax +000AC9C1: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AC9C6: mov r12, [rbp+var_A0] +000AC9CD: mov r13, [rbp+var_98] +000AC9D4: jmp loc_ACB68 +000AC9D9: mov rax, [rbp+var_158] +000AC9E0: add rax, 8 +000AC9E4: mov rdi, rax +000AC9E7: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AC9EC: mov rax, [rax] +000AC9EF: mov rdi, rax +000AC9F2: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AC9F7: test al, al +000AC9F9: jnz short loc_ACA1A +000AC9FB: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ACA02: mov edx, 1681h; line +000ACA07: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ACA0E: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000ACA15: call ___assert_fail +000ACA1A: mov rax, [rbp+var_158] +000ACA21: add rax, 48h ; 'H' +000ACA25: mov rdi, rax +000ACA28: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000ACA2D: test al, al +000ACA2F: jz short loc_ACA50 +000ACA31: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ACA38: mov edx, 1683h; line +000ACA3D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ACA44: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000ACA4B: call ___assert_fail +000ACA50: mov rax, [rbp+var_158] +000ACA57: add rax, 48h ; 'H' +000ACA5B: mov rdi, rax +000ACA5E: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000ACA63: mov [rbp+var_80], rax +000ACA67: mov [rbp+var_78], rdx +000ACA6B: lea rax, [rbp+var_80] +000ACA6F: mov rdi, rax +000ACA72: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000ACA77: mov [rbp+var_22], al +000ACA7A: mov rax, [rbp+var_158] +000ACA81: add rax, 48h ; 'H' +000ACA85: mov rdi, rax +000ACA88: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000ACA8D: movzx eax, [rbp+var_22] +000ACA91: xor eax, 1 +000ACA94: test al, al +000ACA96: jz short loc_ACAC8 +000ACA98: mov [rbp+var_59], 0 +000ACAA0: mov [rbp+var_51], 0 +000ACAA4: lea rdx, [rbp+var_59] +000ACAA8: lea rcx, [rbp+var_51] +000ACAAC: lea rax, [rbp+var_70] +000ACAB0: mov rsi, rcx +000ACAB3: mov rdi, rax +000ACAB6: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000ACABB: mov r12, [rbp+var_70] +000ACABF: mov r13, [rbp+var_68] +000ACAC3: jmp loc_ACB68 +000ACAC8: mov rax, [rbp+var_158] +000ACACF: mov rax, [rax+70h] +000ACAD3: test rax, rax +000ACAD6: jnz short loc_ACAF7 +000ACAD8: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ACADF: mov edx, 168Ch; line +000ACAE4: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ACAEB: lea rdi, aObjectElement; "object_element" +000ACAF2: call ___assert_fail +000ACAF7: lea rax, [rbp+var_150] +000ACAFE: mov rdi, rax +000ACB01: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000ACB06: mov rdx, rax +000ACB09: lea rax, [rbp+var_50] +000ACB0D: mov rsi, rdx +000ACB10: mov rdi, rax +000ACB13: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000ACB18: mov rax, [rbp+var_158] +000ACB1F: mov rax, [rax+70h] +000ACB23: lea rdx, [rbp+var_50] +000ACB27: mov rsi, rdx +000ACB2A: mov rdi, rax +000ACB2D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000ACB32: lea rax, [rbp+var_50] +000ACB36: mov rdi, rax +000ACB39: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ACB3E: mov rax, [rbp+var_158] +000ACB45: lea rdx, [rax+70h] +000ACB49: mov [rbp+var_23], 1 +000ACB4D: lea rcx, [rbp+var_23] +000ACB51: lea rax, [rbp+var_40] +000ACB55: mov rsi, rcx +000ACB58: mov rdi, rax +000ACB5B: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000ACB60: mov r12, [rbp+var_40] +000ACB64: mov r13, [rbp+var_38] +000ACB68: lea rax, [rbp+var_150] +000ACB6F: mov rdi, rax +000ACB72: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ACB77: mov rcx, r12 +000ACB7A: mov rbx, r13 +000ACB7D: mov rax, r12 +000ACB80: mov rdx, r13 +000ACB83: jmp short loc_ACBA2 +000ACB85: mov rbx, rax +000ACB88: lea rax, [rbp+var_150] +000ACB8F: mov rdi, rax +000ACB92: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ACB97: mov rax, rbx +000ACB9A: mov rdi, rax; struct _Unwind_Exception * +000ACB9D: call __Unwind_Resume +000ACBA2: mov eax, ecx +000ACBA4: add rsp, 158h +000ACBAB: pop rbx +000ACBAC: pop r12 +000ACBAE: pop r13 +000ACBB0: pop rbp +000ACBB1: retn + +### FUNC 000ACBB2 - 000ACBC0 (14 bytes) name=_ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE +000ACBB2: push rbp +000ACBB3: mov rbp, rsp +000ACBB6: mov [rbp+var_8], rdi +000ACBBA: mov rax, [rbp+var_8] +000ACBBE: pop rbp +000ACBBF: retn + +### FUNC 000ACBC0 - 000ACC2B (107 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backERKS7_ +000ACBC0: push rbp +000ACBC1: mov rbp, rsp +000ACBC4: sub rsp, 10h +000ACBC8: mov [rbp+var_8], rdi +000ACBCC: mov [rbp+var_10], rsi +000ACBD0: mov rax, [rbp+var_8] +000ACBD4: mov rdx, [rax+8] +000ACBD8: mov rax, [rbp+var_8] +000ACBDC: mov rax, [rax+10h] +000ACBE0: cmp rdx, rax +000ACBE3: jz short loc_ACC16 +000ACBE5: mov rax, [rbp+var_8] +000ACBE9: mov rcx, [rax+8] +000ACBED: mov rax, [rbp+var_8] +000ACBF1: mov rdx, [rbp+var_10] +000ACBF5: mov rsi, rcx +000ACBF8: mov rdi, rax +000ACBFB: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_ +000ACC00: mov rax, [rbp+var_8] +000ACC04: mov rax, [rax+8] +000ACC08: lea rdx, [rax+8] +000ACC0C: mov rax, [rbp+var_8] +000ACC10: mov [rax+8], rdx +000ACC14: jmp short locret_ACC29 +000ACC16: mov rdx, [rbp+var_10] +000ACC1A: mov rax, [rbp+var_8] +000ACC1E: mov rsi, rdx +000ACC21: mov rdi, rax +000ACC24: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJRKS7_EEEvDpOT_; std::vector>> *,std::allocator>> *>>::_M_emplace_back_aux>> * const&>(nlohmann::basic_json>> * const&) +000ACC29: leave +000ACC2A: retn + +### FUNC 000ACC2C - 000ACC75 (73 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv +000ACC2C: push rbp +000ACC2D: mov rbp, rsp +000ACC30: sub rsp, 30h +000ACC34: mov [rbp+var_28], rdi +000ACC38: mov [rbp+var_18], 1 +000ACC40: mov rax, [rbp+var_28] +000ACC44: mov rdi, rax +000ACC47: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv; std::vector>> *,std::allocator>> *>>::end(void) +000ACC4C: mov [rbp+var_10], rax +000ACC50: lea rdx, [rbp+var_18] +000ACC54: lea rax, [rbp+var_10] +000ACC58: mov rsi, rdx +000ACC5B: mov rdi, rax +000ACC5E: call __ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEmiERKl; __gnu_cxx::__normal_iterator>> **,std::vector>> *,std::allocator>> *>>>::operator-(long const&) +000ACC63: mov [rbp+var_20], rax +000ACC67: lea rax, [rbp+var_20] +000ACC6B: mov rdi, rax +000ACC6E: call __ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEdeEv; __gnu_cxx::__normal_iterator>> **,std::vector>> *,std::allocator>> *>>>::operator*(void) +000ACC73: leave +000ACC74: retn + +### FUNC 000ACC76 - 000ACCC3 (77 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8max_sizeEv +000ACC76: push rbp +000ACC77: mov rbp, rsp +000ACC7A: sub rsp, 10h +000ACC7E: mov [rbp+var_8], rdi +000ACC82: mov rax, [rbp+var_8] +000ACC86: movzx eax, byte ptr [rax] +000ACC89: cmp al, 1 +000ACC8B: jz short loc_ACCA3 +000ACC8D: cmp al, 2 +000ACC8F: jnz short loc_ACCB5 +000ACC91: mov rax, [rbp+var_8] +000ACC95: mov rax, [rax+8] +000ACC99: mov rdi, rax +000ACC9C: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv; std::vector>>,std::allocator>>>>::max_size(void) +000ACCA1: jmp short locret_ACCC1 +000ACCA3: mov rax, [rbp+var_8] +000ACCA7: mov rax, [rax+8] +000ACCAB: mov rdi, rax +000ACCAE: call __ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8max_sizeEv; std::map>>,std::less,std::allocator>>>>>::max_size(void) +000ACCB3: jmp short locret_ACCC1 +000ACCB5: mov rax, [rbp+var_8] +000ACCB9: mov rdi, rax +000ACCBC: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE4sizeEv; nlohmann::basic_json>>::size(void) +000ACCC1: leave +000ACCC2: retn + +### FUNC 000ACCC4 - 000ACD05 (65 bytes) name=_ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv +000ACCC4: push rbp +000ACCC5: mov rbp, rsp +000ACCC8: sub rsp, 30h +000ACCCC: mov [rbp+var_28], rdi +000ACCD0: mov rax, [rbp+var_28] +000ACCD4: mov rdi, rax +000ACCD7: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv; std::vector>> *,std::allocator>> *>>::end(void) +000ACCDC: mov [rbp+var_20], rax +000ACCE0: mov rax, [rbp+var_28] +000ACCE4: mov rdi, rax +000ACCE7: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5beginEv; std::vector>> *,std::allocator>> *>>::begin(void) +000ACCEC: mov [rbp+var_10], rax +000ACCF0: lea rdx, [rbp+var_20] +000ACCF4: lea rax, [rbp+var_10] +000ACCF8: mov rsi, rdx +000ACCFB: mov rdi, rax +000ACCFE: call __ZN9__gnu_cxxeqIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_; __gnu_cxx::operator==>> * const*,std::vector>> *,std::allocator>> *>>>(__gnu_cxx::__normal_iterator>> * const*,std::vector>> *,std::allocator>> *>>> const&,__gnu_cxx::__normal_iterator>> * const*,std::vector>> *,std::allocator>> *>>> const&) +000ACD03: leave +000ACD04: retn + +### FUNC 000ACD06 - 000ACD3F (57 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8pop_backEv +000ACD06: push rbp +000ACD07: mov rbp, rsp +000ACD0A: sub rsp, 10h +000ACD0E: mov [rbp+var_8], rdi +000ACD12: mov rax, [rbp+var_8] +000ACD16: mov rax, [rax+8] +000ACD1A: lea rdx, [rax-8] +000ACD1E: mov rax, [rbp+var_8] +000ACD22: mov [rax+8], rdx +000ACD26: mov rax, [rbp+var_8] +000ACD2A: mov rdx, [rax+8] +000ACD2E: mov rax, [rbp+var_8] +000ACD32: mov rsi, rdx +000ACD35: mov rdi, rax +000ACD38: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_; std::allocator_traits>> *>>::destroy>> *>(std::allocator>> *>&,nlohmann::basic_json>> * *) +000ACD3D: leave +000ACD3E: retn + +### FUNC 000ACD40 - 000ACD7A (58 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE13is_structuredEv +000ACD40: push rbp +000ACD41: mov rbp, rsp +000ACD44: sub rsp, 10h +000ACD48: mov [rbp+var_8], rdi +000ACD4C: mov rax, [rbp+var_8] +000ACD50: mov rdi, rax +000ACD53: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000ACD58: test al, al +000ACD5A: jnz short loc_ACD6C +000ACD5C: mov rax, [rbp+var_8] +000ACD60: mov rdi, rax +000ACD63: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000ACD68: test al, al +000ACD6A: jz short loc_ACD73 +000ACD6C: mov eax, 1 +000ACD71: jmp short locret_ACD78 +000ACD73: mov eax, 0 +000ACD78: leave +000ACD79: retn + +### FUNC 000ACD7A - 000ACF78 (510 bytes) name=_ZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEv +000ACD7A: push rbp +000ACD7B: mov rbp, rsp +000ACD7E: push r12 +000ACD80: push rbx +000ACD81: sub rsp, 40h +000ACD85: mov [rbp+var_48], rdi +000ACD89: mov rax, [rbp+var_48] +000ACD8D: mov rax, [rax] +000ACD90: test rax, rax +000ACD93: jnz short loc_ACDB4 +000ACD95: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_impl>>,std::less,std::allocator>>>>>::end(void) +000ACDDE: mov [rbp+var_40], rax +000ACDE2: mov rax, [rbp+var_48] +000ACDE6: lea rdx, [rax+8] +000ACDEA: lea rax, [rbp+var_40] +000ACDEE: mov rsi, rax +000ACDF1: mov rdi, rdx +000ACDF4: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEneERKSB_; std::_Rb_tree_iterator>>>>::operator!=(std::_Rb_tree_iterator>>>> const&) +000ACDF9: test al, al +000ACDFB: jnz short loc_ACE1C +000ACDFD: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_implm_val"... +000ACE17: call ___assert_fail +000ACE1C: mov rax, [rbp+var_48] +000ACE20: add rax, 8 +000ACE24: mov rdi, rax +000ACE27: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEptEv; std::_Rb_tree_iterator>>>>::operator->(void) +000ACE2C: add rax, 8 +000ACE30: jmp loc_ACF6F +000ACE35: mov rax, [rbp+var_48] +000ACE39: mov rax, [rax] +000ACE3C: mov rax, [rax+8] +000ACE40: mov rdi, rax +000ACE43: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000ACE48: mov [rbp+var_30], rax +000ACE4C: mov rax, [rbp+var_48] +000ACE50: lea rdx, [rax+10h] +000ACE54: lea rax, [rbp+var_30] +000ACE58: mov rsi, rax +000ACE5B: mov rdi, rdx +000ACE5E: call __ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_; __gnu_cxx::operator!=>> *,std::vector>>,std::allocator>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&) +000ACE63: test al, al +000ACE65: jnz short loc_ACE86 +000ACE67: lea rcx, _ZZNK8nlohmann6detail9iter_implINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEEptEvE19__PRETTY_FUNCTION__; "nlohmann::detail::iter_implm_valu"... +000ACE81: call ___assert_fail +000ACE86: mov rax, [rbp+var_48] +000ACE8A: add rax, 10h +000ACE8E: mov rdi, rax +000ACE91: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator*(void) +000ACE96: jmp loc_ACF6F +000ACE9B: mov rax, [rbp+var_48] +000ACE9F: add rax, 18h +000ACEA3: mov rdi, rax; this +000ACEA6: call __ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv; nlohmann::detail::primitive_iterator_t::is_begin(void) +000ACEAB: movzx eax, al +000ACEAE: test rax, rax +000ACEB1: setnz al +000ACEB4: test al, al +000ACEB6: jz short loc_ACEC4 +000ACEB8: mov rax, [rbp+var_48] +000ACEBC: mov rax, [rax] +000ACEBF: jmp loc_ACF6F +000ACEC4: mov edi, 20h ; ' '; thrown_size +000ACEC9: call ___cxa_allocate_exception +000ACECE: mov rbx, rax +000ACED1: lea rax, [rbp+var_11] +000ACED5: mov rdi, rax +000ACED8: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000ACEDD: lea rdx, [rbp+var_11] +000ACEE1: lea rax, [rbp+var_20] +000ACEE5: lea rsi, aCannotGetValue; "cannot get value" +000ACEEC: mov rdi, rax +000ACEEF: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000ACEF4: lea rax, [rbp+var_20] +000ACEF8: mov rdx, rax; std::string * +000ACEFB: mov esi, 0D6h; int +000ACF00: mov rdi, rbx; this +000ACF03: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000ACF08: lea rax, [rbp+var_20] +000ACF0C: mov rdi, rax; this +000ACF0F: call __ZNSsD1Ev; std::string::~string() +000ACF14: lea rax, [rbp+var_11] +000ACF18: mov rdi, rax +000ACF1B: call __ZNSaIcED1Ev; std::allocator::~allocator() +000ACF20: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000ACF27: mov rdx, rax; void (__fastcall *)(void *) +000ACF2A: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000ACF31: mov rsi, rax; lptinfo +000ACF34: mov rdi, rbx; void * +000ACF37: call ___cxa_throw +000ACF3C: mov r12, rax +000ACF3F: lea rax, [rbp+var_20] +000ACF43: mov rdi, rax; this +000ACF46: call __ZNSsD1Ev; std::string::~string() +000ACF4B: jmp short loc_ACF50 +000ACF4D: mov r12, rax +000ACF50: lea rax, [rbp+var_11] +000ACF54: mov rdi, rax +000ACF57: call __ZNSaIcED1Ev; std::allocator::~allocator() +000ACF5C: mov rdi, rbx; void * +000ACF5F: call ___cxa_free_exception +000ACF64: mov rax, r12 +000ACF67: mov rdi, rax; struct _Unwind_Exception * +000ACF6A: call __Unwind_Resume +000ACF6F: add rsp, 40h +000ACF73: pop rbx +000ACF74: pop r12 +000ACF76: pop rbp +000ACF77: retn + +### FUNC 000ACF78 - 000AD3BE (1094 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE5eraseINS_6detail9iter_implIS6_EELi0EEET_SB_ +000ACF78: push rbp +000ACF79: mov rbp, rsp +000ACF7C: push r12 +000ACF7E: push rbx +000ACF7F: sub rsp, 70h +000ACF83: mov [rbp+var_68], rdi +000ACF87: mov [rbp+var_70], rsi +000ACF8B: mov [rbp+var_78], rdx +000ACF8F: mov rax, [rbp+var_78] +000ACF93: mov rax, [rax] +000ACF96: cmp rax, [rbp+var_70] +000ACF9A: setnz al +000ACF9D: movzx eax, al +000ACFA0: test rax, rax +000ACFA3: jz short loc_AD01D +000ACFA5: mov edi, 20h ; ' '; thrown_size +000ACFAA: call ___cxa_allocate_exception +000ACFAF: mov rbx, rax +000ACFB2: lea rax, [rbp+var_41] +000ACFB6: mov rdi, rax +000ACFB9: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000ACFBE: lea rdx, [rbp+var_41] +000ACFC2: lea rax, [rbp+var_50] +000ACFC6: lea rsi, aIteratorDoesNo; "iterator does not fit current value" +000ACFCD: mov rdi, rax +000ACFD0: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000ACFD5: lea rax, [rbp+var_50] +000ACFD9: mov rdx, rax; std::string * +000ACFDC: mov esi, 0CAh; int +000ACFE1: mov rdi, rbx; this +000ACFE4: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000ACFE9: lea rax, [rbp+var_50] +000ACFED: mov rdi, rax; this +000ACFF0: call __ZNSsD1Ev; std::string::~string() +000ACFF5: lea rax, [rbp+var_41] +000ACFF9: mov rdi, rax +000ACFFC: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AD001: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000AD008: mov rdx, rax; void (__fastcall *)(void *) +000AD00B: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000AD012: mov rsi, rax; lptinfo +000AD015: mov rdi, rbx; void * +000AD018: call ___cxa_throw +000AD01D: mov rax, [rbp+var_68] +000AD021: mov rdx, [rbp+var_70] +000AD025: mov rsi, rdx +000AD028: mov rdi, rax +000AD02B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE3endEv; nlohmann::basic_json>>::end(void) +000AD030: mov rax, [rbp+var_70] +000AD034: movzx eax, byte ptr [rax] +000AD037: cmp al, 2 +000AD039: jz loc_AD200 +000AD03F: cmp al, 2 +000AD041: ja short loc_AD050 +000AD043: cmp al, 1 +000AD045: jz loc_AD1D8 +000AD04B: jmp loc_AD228 +000AD050: cmp al, 8 +000AD052: ja loc_AD228 +000AD058: mov rax, [rbp+var_78] +000AD05C: add rax, 18h +000AD060: mov rdi, rax; this +000AD063: call __ZNK8nlohmann6detail20primitive_iterator_t8is_beginEv; nlohmann::detail::primitive_iterator_t::is_begin(void) +000AD068: xor eax, 1 +000AD06B: movzx eax, al +000AD06E: test rax, rax +000AD071: setnz al +000AD074: test al, al +000AD076: jz short loc_AD0F0 +000AD078: mov edi, 20h ; ' '; thrown_size +000AD07D: call ___cxa_allocate_exception +000AD082: mov rbx, rax +000AD085: lea rax, [rbp+var_31] +000AD089: mov rdi, rax +000AD08C: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000AD091: lea rdx, [rbp+var_31] +000AD095: lea rax, [rbp+var_40] +000AD099: lea rsi, aIteratorOutOfR; "iterator out of range" +000AD0A0: mov rdi, rax +000AD0A3: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000AD0A8: lea rax, [rbp+var_40] +000AD0AC: mov rdx, rax; std::string * +000AD0AF: mov esi, 0CDh; int +000AD0B4: mov rdi, rbx; this +000AD0B7: call __ZN8nlohmann6detail16invalid_iterator6createEiRKSs; nlohmann::detail::invalid_iterator::create(int,std::string const&) +000AD0BC: lea rax, [rbp+var_40] +000AD0C0: mov rdi, rax; this +000AD0C3: call __ZNSsD1Ev; std::string::~string() +000AD0C8: lea rax, [rbp+var_31] +000AD0CC: mov rdi, rax +000AD0CF: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AD0D4: mov rax, cs:_ZN8nlohmann6detail16invalid_iteratorD2Ev_ptr +000AD0DB: mov rdx, rax; void (__fastcall *)(void *) +000AD0DE: mov rax, cs:_ZTIN8nlohmann6detail16invalid_iteratorE_ptr +000AD0E5: mov rsi, rax; lptinfo +000AD0E8: mov rdi, rbx; void * +000AD0EB: call ___cxa_throw +000AD0F0: mov rax, [rbp+var_70] +000AD0F4: mov rdi, rax +000AD0F7: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_stringEv; nlohmann::basic_json>>::is_string(void) +000AD0FC: test al, al +000AD0FE: jz short loc_AD159 +000AD100: lea rax, [rbp+var_51] +000AD104: mov rdi, rax +000AD107: call __ZNSaISsEC2Ev_0; std::allocator::allocator(void) +000AD10C: mov rax, [rbp+var_70] +000AD110: mov rdx, [rax+8] +000AD114: lea rax, [rbp+var_51] +000AD118: mov rsi, rdx +000AD11B: mov rdi, rax +000AD11E: call __ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,std::string *) +000AD123: mov rax, [rbp+var_70] +000AD127: mov rcx, [rax+8] +000AD12B: lea rax, [rbp+var_51] +000AD12F: mov edx, 1 +000AD134: mov rsi, rcx +000AD137: mov rdi, rax +000AD13A: call __ZNSt16allocator_traitsISaISsEE10deallocateERS0_PSsm; std::allocator_traits>::deallocate(std::allocator&,std::string *,ulong) +000AD13F: mov rax, [rbp+var_70] +000AD143: mov qword ptr [rax+8], 0 +000AD14B: lea rax, [rbp+var_51] +000AD14F: mov rdi, rax +000AD152: call __ZNSaISsED2Ev; std::allocator::~allocator() +000AD157: jmp short loc_AD1C0 +000AD159: mov rax, [rbp+var_70] +000AD15D: mov rdi, rax +000AD160: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_binaryEv; nlohmann::basic_json>>::is_binary(void) +000AD165: test al, al +000AD167: jz short loc_AD1C0 +000AD169: lea rax, [rbp+var_52] +000AD16D: mov rdi, rax +000AD170: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEC2Ev; std::allocator>>>::allocator(void) +000AD175: mov rax, [rbp+var_70] +000AD179: mov rdx, [rax+8] +000AD17D: lea rax, [rbp+var_52] +000AD181: mov rsi, rdx +000AD184: mov rdi, rax +000AD187: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE7destroyIS5_EEvRS6_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::byte_container_with_subtype>> *) +000AD18C: mov rax, [rbp+var_70] +000AD190: mov rcx, [rax+8] +000AD194: lea rax, [rbp+var_52] +000AD198: mov edx, 1 +000AD19D: mov rsi, rcx +000AD1A0: mov rdi, rax +000AD1A3: call __ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE10deallocateERS6_PS5_m; std::allocator_traits>>>>::deallocate(std::allocator>>>&,nlohmann::byte_container_with_subtype>>*,ulong) +000AD1A8: mov rax, [rbp+var_70] +000AD1AC: mov qword ptr [rax+8], 0 +000AD1B4: lea rax, [rbp+var_52] +000AD1B8: mov rdi, rax +000AD1BB: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000AD1C0: mov rax, [rbp+var_70] +000AD1C4: mov byte ptr [rax], 0 +000AD1C7: mov rax, [rbp+var_70] +000AD1CB: mov rdi, rax +000AD1CE: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000AD1D3: jmp loc_AD2CE +000AD1D8: mov rax, [rbp+var_70] +000AD1DC: mov rax, [rax+8] +000AD1E0: mov rbx, [rbp+var_68] +000AD1E4: mov rdx, [rbp+var_78] +000AD1E8: mov rdx, [rdx+8] +000AD1EC: mov rsi, rdx +000AD1EF: mov rdi, rax +000AD1F2: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorISB_E; std::map>>,std::less,std::allocator>>>>>::erase(std::_Rb_tree_iterator>>>>) +000AD1F7: mov [rbx+8], rax +000AD1FB: jmp loc_AD2CE +000AD200: mov rax, [rbp+var_70] +000AD204: mov rax, [rax+8] +000AD208: mov rbx, [rbp+var_68] +000AD20C: mov rdx, [rbp+var_78] +000AD210: mov rdx, [rdx+10h] +000AD214: mov rsi, rdx +000AD217: mov rdi, rax +000AD21A: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS6_S8_EE; std::vector>>,std::allocator>>>>::erase(__gnu_cxx::__normal_iterator>>*,std::vector>>,std::allocator>>>>>) +000AD21F: mov [rbx+10h], rax +000AD223: jmp loc_AD2CE +000AD228: mov edi, 20h ; ' '; thrown_size +000AD22D: call ___cxa_allocate_exception +000AD232: mov rbx, rax +000AD235: lea rax, [rbp+var_11] +000AD239: mov rdi, rax +000AD23C: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000AD241: mov rax, [rbp+var_70] +000AD245: mov rdi, rax +000AD248: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9type_nameEv; nlohmann::basic_json>>::type_name(void) +000AD24D: mov rcx, rax +000AD250: lea rdx, [rbp+var_11] +000AD254: lea rax, [rbp+var_20] +000AD258: mov rsi, rcx +000AD25B: mov rdi, rax +000AD25E: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000AD263: lea rax, [rbp+var_30] +000AD267: lea rdx, [rbp+var_20] +000AD26B: lea rsi, aCannotUseErase; "cannot use erase() with " +000AD272: mov rdi, rax +000AD275: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_OS6_; std::operator+,std::allocator>(char const*,std::basic_string,std::allocator>&&) +000AD27A: lea rax, [rbp+var_30] +000AD27E: mov rdx, rax; std::string * +000AD281: mov esi, 133h; int +000AD286: mov rdi, rbx; this +000AD289: call __ZN8nlohmann6detail10type_error6createEiRKSs; nlohmann::detail::type_error::create(int,std::string const&) +000AD28E: lea rax, [rbp+var_30] +000AD292: mov rdi, rax; this +000AD295: call __ZNSsD1Ev; std::string::~string() +000AD29A: lea rax, [rbp+var_20] +000AD29E: mov rdi, rax; this +000AD2A1: call __ZNSsD1Ev; std::string::~string() +000AD2A6: lea rax, [rbp+var_11] +000AD2AA: mov rdi, rax +000AD2AD: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AD2B2: mov rax, cs:_ZN8nlohmann6detail10type_errorD2Ev_ptr +000AD2B9: mov rdx, rax; void (__fastcall *)(void *) +000AD2BC: mov rax, cs:lptinfo +000AD2C3: mov rsi, rax; lptinfo +000AD2C6: mov rdi, rbx; void * +000AD2C9: call ___cxa_throw +000AD2CE: jmp loc_AD3B1 +000AD2D3: mov r12, rax +000AD2D6: lea rax, [rbp+var_50] +000AD2DA: mov rdi, rax; this +000AD2DD: call __ZNSsD1Ev; std::string::~string() +000AD2E2: jmp short loc_AD2E7 +000AD2E4: mov r12, rax +000AD2E7: lea rax, [rbp+var_41] +000AD2EB: mov rdi, rax +000AD2EE: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AD2F3: mov rdi, rbx; void * +000AD2F6: call ___cxa_free_exception +000AD2FB: mov rax, r12 +000AD2FE: mov rdi, rax; struct _Unwind_Exception * +000AD301: call __Unwind_Resume +000AD306: mov r12, rax +000AD309: lea rax, [rbp+var_40] +000AD30D: mov rdi, rax; this +000AD310: call __ZNSsD1Ev; std::string::~string() +000AD315: jmp short loc_AD31A +000AD317: mov r12, rax +000AD31A: lea rax, [rbp+var_31] +000AD31E: mov rdi, rax +000AD321: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AD326: mov rdi, rbx; void * +000AD329: call ___cxa_free_exception +000AD32E: mov rax, r12 +000AD331: mov rdi, rax; struct _Unwind_Exception * +000AD334: call __Unwind_Resume +000AD339: mov rbx, rax +000AD33C: lea rax, [rbp+var_51] +000AD340: mov rdi, rax +000AD343: call __ZNSaISsED2Ev; std::allocator::~allocator() +000AD348: mov rax, rbx +000AD34B: mov rdi, rax; struct _Unwind_Exception * +000AD34E: call __Unwind_Resume +000AD353: mov rbx, rax +000AD356: lea rax, [rbp+var_52] +000AD35A: mov rdi, rax +000AD35D: call __ZNSaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000AD362: mov rax, rbx +000AD365: mov rdi, rax; struct _Unwind_Exception * +000AD368: call __Unwind_Resume +000AD36D: mov r12, rax +000AD370: lea rax, [rbp+var_30] +000AD374: mov rdi, rax; this +000AD377: call __ZNSsD1Ev; std::string::~string() +000AD37C: jmp short loc_AD381 +000AD37E: mov r12, rax +000AD381: lea rax, [rbp+var_20] +000AD385: mov rdi, rax; this +000AD388: call __ZNSsD1Ev; std::string::~string() +000AD38D: jmp short loc_AD392 +000AD38F: mov r12, rax +000AD392: lea rax, [rbp+var_11] +000AD396: mov rdi, rax +000AD399: call __ZNSaIcED1Ev; std::allocator::~allocator() +000AD39E: mov rdi, rbx; void * +000AD3A1: call ___cxa_free_exception +000AD3A6: mov rax, r12 +000AD3A9: mov rdi, rax; struct _Unwind_Exception * +000AD3AC: call __Unwind_Resume +000AD3B1: mov rax, [rbp+var_68] +000AD3B5: add rsp, 70h +000AD3B9: pop rbx +000AD3BA: pop r12 +000AD3BC: pop rbp +000AD3BD: retn + +### FUNC 000AD3BE - 000AD40D (79 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_ +000AD3BE: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(std::string &)' +000AD3BF: mov rbp, rsp +000AD3C2: sub rsp, 10h +000AD3C6: mov [rbp+var_8], rdi +000AD3CA: mov [rbp+var_10], rsi +000AD3CE: mov rax, [rbp+var_8] +000AD3D2: mov byte ptr [rax], 0 +000AD3D5: mov rax, [rbp+var_8] +000AD3D9: mov qword ptr [rax+8], 0 +000AD3E1: mov rax, [rbp+var_10] +000AD3E5: mov rdi, rax +000AD3E8: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AD3ED: mov rdx, rax +000AD3F0: mov rax, [rbp+var_8] +000AD3F4: mov rsi, rdx +000AD3F7: mov rdi, rax +000AD3FA: call __ZN8nlohmann14adl_serializerISsvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERSsEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000AD3FF: mov rax, [rbp+var_8] +000AD403: mov rdi, rax +000AD406: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000AD40B: leave +000AD40C: retn + +### FUNC 000AD40E - 000AD535 (295 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEixERSA_ +000AD40E: push rbp +000AD40F: mov rbp, rsp +000AD412: push r13 +000AD414: push r12 +000AD416: push rbx +000AD417: sub rsp, 58h +000AD41B: mov [rbp+var_68], rdi +000AD41F: mov [rbp+var_70], rsi +000AD423: mov rdx, [rbp+var_70] +000AD427: mov rax, [rbp+var_68] +000AD42B: mov rsi, rdx +000AD42E: mov rdi, rax +000AD431: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE11lower_boundERSA_; std::map>>,std::less,std::allocator>>>>>::lower_bound(std::string const&) +000AD436: mov [rbp+var_60], rax +000AD43A: mov ebx, 0 +000AD43F: mov rax, [rbp+var_68] +000AD443: mov rdi, rax +000AD446: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE3endEv; std::map>>,std::less,std::allocator>>>>>::end(void) +000AD44B: mov [rbp+var_50], rax +000AD44F: mov r12d, 1 +000AD455: lea rdx, [rbp+var_50] +000AD459: lea rax, [rbp+var_60] +000AD45D: mov rsi, rdx +000AD460: mov rdi, rax +000AD463: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_; std::_Rb_tree_iterator>>>>::operator==(std::_Rb_tree_iterator>>>> const&) +000AD468: test al, al +000AD46A: jnz short loc_AD4A6 +000AD46C: lea rax, [rbp+var_60] +000AD470: mov rdi, rax +000AD473: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv; std::_Rb_tree_iterator>>>>::operator*(void) +000AD478: mov r13, rax +000AD47B: mov rax, [rbp+var_68] +000AD47F: mov rdi, rax +000AD482: call __ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8key_compEv; std::map>>,std::less,std::allocator>>>>>::key_comp(void) +000AD487: mov ebx, 1 +000AD48C: mov rcx, [rbp+var_70] +000AD490: lea rax, [rbp+var_42] +000AD494: mov rdx, r13 +000AD497: mov rsi, rcx +000AD49A: mov rdi, rax +000AD49D: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000AD4A2: test al, al +000AD4A4: jz short loc_AD4AD +000AD4A6: mov eax, 1 +000AD4AB: jmp short loc_AD4B2 +000AD4AD: mov eax, 0 +000AD4B2: test bl, bl +000AD4B4: test r12b, r12b +000AD4B7: test al, al +000AD4B9: jz short loc_AD50A +000AD4BB: mov rdx, [rbp+var_70] +000AD4BF: lea rax, [rbp+var_40] +000AD4C3: mov rsi, rdx +000AD4C6: mov rdi, rax +000AD4C9: call __ZNSt5tupleIJRKSsEEC2ES1_; std::tuple::tuple(std::string const&) +000AD4CE: lea rdx, [rbp+var_60] +000AD4D2: lea rax, [rbp+var_30] +000AD4D6: mov rsi, rdx +000AD4D9: mov rdi, rax +000AD4DC: call __ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E; std::_Rb_tree_const_iterator>>>>::_Rb_tree_const_iterator(std::_Rb_tree_iterator>>>> const&) +000AD4E1: mov rax, [rbp+var_68] +000AD4E5: lea rcx, [rbp+var_41] +000AD4E9: lea rdx, [rbp+var_40] +000AD4ED: mov rsi, [rbp+var_30] +000AD4F1: mov r8, rcx +000AD4F4: mov rcx, rdx +000AD4F7: lea rdx, _ZStL19piecewise_construct_1; std::piecewise_construct +000AD4FE: mov rdi, rax +000AD501: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_emplace_hint_unique,std::tuple<>>(std::_Rb_tree_const_iterator>>>>) +000AD506: mov [rbp+var_60], rax +000AD50A: lea rax, [rbp+var_60] +000AD50E: mov rdi, rax +000AD511: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEdeEv; std::_Rb_tree_iterator>>>>::operator*(void) +000AD516: add rax, 8 +000AD51A: jmp short loc_AD52A +000AD51C: test bl, bl +000AD51E: test r12b, r12b +000AD521: nop +000AD522: mov rdi, rax; struct _Unwind_Exception * +000AD525: call __Unwind_Resume +000AD52A: add rsp, 58h +000AD52E: pop rbx +000AD52F: pop r12 +000AD531: pop r13 +000AD533: pop rbp +000AD534: retn + +### FUNC 000AD535 - 000AD543 (14 bytes) name=_ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE +000AD535: push rbp +000AD536: mov rbp, rsp +000AD539: mov [rbp+var_8], rdi +000AD53D: mov rax, [rbp+var_8] +000AD541: pop rbp +000AD542: retn + +### FUNC 000AD544 - 000ADAFF (1467 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_b +000AD544: push rbp +000AD545: mov rbp, rsp +000AD548: push r13 +000AD54A: push r12 +000AD54C: push rbx +000AD54D: sub rsp, 158h +000AD554: mov [rbp+var_158], rdi +000AD55B: mov [rbp+var_160], rsi +000AD562: mov eax, edx +000AD564: mov [rbp+var_164], al +000AD56A: mov rax, [rbp+var_158] +000AD571: add rax, 20h ; ' ' +000AD575: mov rdi, rax +000AD578: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AD57D: test al, al +000AD57F: jz short loc_AD5A0 +000AD581: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AD588: mov edx, 1654h; line +000AD58D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AD594: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000AD59B: call ___assert_fail +000AD5A0: mov rax, [rbp+var_158] +000AD5A7: add rax, 20h ; ' ' +000AD5AB: mov rdi, rax +000AD5AE: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AD5B3: mov [rbp+var_140], rax +000AD5BA: mov [rbp+var_138], rdx +000AD5C1: lea rax, [rbp+var_140] +000AD5C8: mov rdi, rax +000AD5CB: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AD5D0: xor eax, 1 +000AD5D3: test al, al +000AD5D5: jz short loc_AD61C +000AD5D7: mov [rbp+var_119], 0 +000AD5E2: mov [rbp+var_111], 0 +000AD5E9: lea rdx, [rbp+var_119] +000AD5F0: lea rcx, [rbp+var_111] +000AD5F7: lea rax, [rbp+var_130] +000AD5FE: mov rsi, rcx +000AD601: mov rdi, rax +000AD604: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AD609: mov r12, [rbp+var_130] +000AD610: mov r13, [rbp+var_128] +000AD617: jmp loc_ADAC4 +000AD61C: mov rax, [rbp+var_160] +000AD623: mov rdi, rax +000AD626: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AD62B: mov rdx, rax +000AD62E: lea rax, [rbp+var_150] +000AD635: mov rsi, rdx +000AD638: mov rdi, rax +000AD63B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_; nlohmann::basic_json>>::basic_json(double &) +000AD640: cmp [rbp+var_164], 0 +000AD647: jnz short loc_AD684 +000AD649: mov rax, [rbp+var_158] +000AD650: add rax, 8 +000AD654: mov rdi, rax +000AD657: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000AD65C: mov rdx, [rbp+var_158] +000AD663: lea rdi, [rdx+80h] +000AD66A: lea rdx, [rbp+var_150] +000AD671: mov rcx, rdx +000AD674: mov edx, 5 +000AD679: mov esi, eax +000AD67B: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000AD680: test al, al +000AD682: jz short loc_AD68B +000AD684: mov eax, 1 +000AD689: jmp short loc_AD690 +000AD68B: mov eax, 0 +000AD690: mov [rbp+var_21], al +000AD693: movzx eax, [rbp+var_21] +000AD697: xor eax, 1 +000AD69A: test al, al +000AD69C: jz short loc_AD6E3 +000AD69E: mov [rbp+var_F9], 0 +000AD6A9: mov [rbp+var_F1], 0 +000AD6B0: lea rdx, [rbp+var_F9] +000AD6B7: lea rcx, [rbp+var_F1] +000AD6BE: lea rax, [rbp+var_110] +000AD6C5: mov rsi, rcx +000AD6C8: mov rdi, rax +000AD6CB: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AD6D0: mov r12, [rbp+var_110] +000AD6D7: mov r13, [rbp+var_108] +000AD6DE: jmp loc_ADAB5 +000AD6E3: mov rax, [rbp+var_158] +000AD6EA: add rax, 8 +000AD6EE: mov rdi, rax +000AD6F1: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AD6F6: test al, al +000AD6F8: jz loc_AD798 +000AD6FE: lea rax, [rbp+var_150] +000AD705: mov rdi, rax +000AD708: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AD70D: mov rdx, rax +000AD710: lea rax, [rbp+var_F0] +000AD717: mov rsi, rdx +000AD71A: mov rdi, rax +000AD71D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AD722: mov rax, [rbp+var_158] +000AD729: mov rax, [rax] +000AD72C: lea rdx, [rbp+var_F0] +000AD733: mov rsi, rdx +000AD736: mov rdi, rax +000AD739: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AD73E: lea rax, [rbp+var_F0] +000AD745: mov rdi, rax +000AD748: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AD74D: mov rax, [rbp+var_158] +000AD754: mov rax, [rax] +000AD757: mov [rbp+var_D0], rax +000AD75E: mov [rbp+var_C1], 1 +000AD765: lea rdx, [rbp+var_D0] +000AD76C: lea rcx, [rbp+var_C1] +000AD773: lea rax, [rbp+var_E0] +000AD77A: mov rsi, rcx +000AD77D: mov rdi, rax +000AD780: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AD785: mov r12, [rbp+var_E0] +000AD78C: mov r13, [rbp+var_D8] +000AD793: jmp loc_ADAB5 +000AD798: mov rax, [rbp+var_158] +000AD79F: add rax, 8 +000AD7A3: mov rdi, rax +000AD7A6: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD7AB: mov rax, [rax] +000AD7AE: test rax, rax +000AD7B1: setz al +000AD7B4: test al, al +000AD7B6: jz short loc_AD7FD +000AD7B8: mov [rbp+var_A9], 0 +000AD7C3: mov [rbp+var_A1], 0 +000AD7CA: lea rdx, [rbp+var_A9] +000AD7D1: lea rcx, [rbp+var_A1] +000AD7D8: lea rax, [rbp+var_C0] +000AD7DF: mov rsi, rcx +000AD7E2: mov rdi, rax +000AD7E5: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AD7EA: mov r12, [rbp+var_C0] +000AD7F1: mov r13, [rbp+var_B8] +000AD7F8: jmp loc_ADAB5 +000AD7FD: mov rax, [rbp+var_158] +000AD804: add rax, 8 +000AD808: mov rdi, rax +000AD80B: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD810: mov rax, [rax] +000AD813: mov rdi, rax +000AD816: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AD81B: xor eax, 1 +000AD81E: test al, al +000AD820: jz short loc_AD866 +000AD822: mov rax, [rbp+var_158] +000AD829: add rax, 8 +000AD82D: mov rdi, rax +000AD830: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD835: mov rax, [rax] +000AD838: mov rdi, rax +000AD83B: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AD840: xor eax, 1 +000AD843: test al, al +000AD845: jz short loc_AD866 +000AD847: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AD84E: mov edx, 1677h; line +000AD853: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AD85A: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AD861: call ___assert_fail +000AD866: mov rax, [rbp+var_158] +000AD86D: add rax, 8 +000AD871: mov rdi, rax +000AD874: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD879: mov rax, [rax] +000AD87C: mov rdi, rax +000AD87F: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AD884: test al, al +000AD886: jz loc_AD926 +000AD88C: lea rax, [rbp+var_150] +000AD893: mov rdi, rax +000AD896: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AD89B: mov rbx, rax +000AD89E: mov rax, [rbp+var_158] +000AD8A5: add rax, 8 +000AD8A9: mov rdi, rax +000AD8AC: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD8B1: mov rax, [rax] +000AD8B4: mov rax, [rax+8] +000AD8B8: mov rsi, rbx +000AD8BB: mov rdi, rax +000AD8BE: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000AD8C3: mov rax, [rbp+var_158] +000AD8CA: add rax, 8 +000AD8CE: mov rdi, rax +000AD8D1: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD8D6: mov rax, [rax] +000AD8D9: mov rax, [rax+8] +000AD8DD: mov rdi, rax +000AD8E0: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AD8E5: mov [rbp+var_90], rax +000AD8EC: mov [rbp+var_81], 1 +000AD8F3: lea rdx, [rbp+var_90] +000AD8FA: lea rcx, [rbp+var_81] +000AD901: lea rax, [rbp+var_A0] +000AD908: mov rsi, rcx +000AD90B: mov rdi, rax +000AD90E: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AD913: mov r12, [rbp+var_A0] +000AD91A: mov r13, [rbp+var_98] +000AD921: jmp loc_ADAB5 +000AD926: mov rax, [rbp+var_158] +000AD92D: add rax, 8 +000AD931: mov rdi, rax +000AD934: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AD939: mov rax, [rax] +000AD93C: mov rdi, rax +000AD93F: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AD944: test al, al +000AD946: jnz short loc_AD967 +000AD948: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AD94F: mov edx, 1681h; line +000AD954: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AD95B: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AD962: call ___assert_fail +000AD967: mov rax, [rbp+var_158] +000AD96E: add rax, 48h ; 'H' +000AD972: mov rdi, rax +000AD975: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AD97A: test al, al +000AD97C: jz short loc_AD99D +000AD97E: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AD985: mov edx, 1683h; line +000AD98A: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AD991: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000AD998: call ___assert_fail +000AD99D: mov rax, [rbp+var_158] +000AD9A4: add rax, 48h ; 'H' +000AD9A8: mov rdi, rax +000AD9AB: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AD9B0: mov [rbp+var_80], rax +000AD9B4: mov [rbp+var_78], rdx +000AD9B8: lea rax, [rbp+var_80] +000AD9BC: mov rdi, rax +000AD9BF: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AD9C4: mov [rbp+var_22], al +000AD9C7: mov rax, [rbp+var_158] +000AD9CE: add rax, 48h ; 'H' +000AD9D2: mov rdi, rax +000AD9D5: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000AD9DA: movzx eax, [rbp+var_22] +000AD9DE: xor eax, 1 +000AD9E1: test al, al +000AD9E3: jz short loc_ADA15 +000AD9E5: mov [rbp+var_59], 0 +000AD9ED: mov [rbp+var_51], 0 +000AD9F1: lea rdx, [rbp+var_59] +000AD9F5: lea rcx, [rbp+var_51] +000AD9F9: lea rax, [rbp+var_70] +000AD9FD: mov rsi, rcx +000ADA00: mov rdi, rax +000ADA03: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000ADA08: mov r12, [rbp+var_70] +000ADA0C: mov r13, [rbp+var_68] +000ADA10: jmp loc_ADAB5 +000ADA15: mov rax, [rbp+var_158] +000ADA1C: mov rax, [rax+70h] +000ADA20: test rax, rax +000ADA23: jnz short loc_ADA44 +000ADA25: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ADA2C: mov edx, 168Ch; line +000ADA31: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ADA38: lea rdi, aObjectElement; "object_element" +000ADA3F: call ___assert_fail +000ADA44: lea rax, [rbp+var_150] +000ADA4B: mov rdi, rax +000ADA4E: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000ADA53: mov rdx, rax +000ADA56: lea rax, [rbp+var_50] +000ADA5A: mov rsi, rdx +000ADA5D: mov rdi, rax +000ADA60: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000ADA65: mov rax, [rbp+var_158] +000ADA6C: mov rax, [rax+70h] +000ADA70: lea rdx, [rbp+var_50] +000ADA74: mov rsi, rdx +000ADA77: mov rdi, rax +000ADA7A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000ADA7F: lea rax, [rbp+var_50] +000ADA83: mov rdi, rax +000ADA86: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ADA8B: mov rax, [rbp+var_158] +000ADA92: lea rdx, [rax+70h] +000ADA96: mov [rbp+var_23], 1 +000ADA9A: lea rcx, [rbp+var_23] +000ADA9E: lea rax, [rbp+var_40] +000ADAA2: mov rsi, rcx +000ADAA5: mov rdi, rax +000ADAA8: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000ADAAD: mov r12, [rbp+var_40] +000ADAB1: mov r13, [rbp+var_38] +000ADAB5: lea rax, [rbp+var_150] +000ADABC: mov rdi, rax +000ADABF: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ADAC4: mov rcx, r12 +000ADAC7: mov rbx, r13 +000ADACA: mov rax, r12 +000ADACD: mov rdx, r13 +000ADAD0: jmp short loc_ADAEF +000ADAD2: mov rbx, rax +000ADAD5: lea rax, [rbp+var_150] +000ADADC: mov rdi, rax +000ADADF: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ADAE4: mov rax, rbx +000ADAE7: mov rdi, rax; struct _Unwind_Exception * +000ADAEA: call __Unwind_Resume +000ADAEF: mov eax, ecx +000ADAF1: add rsp, 158h +000ADAF8: pop rbx +000ADAF9: pop r12 +000ADAFB: pop r13 +000ADAFD: pop rbp +000ADAFE: retn + +### FUNC 000ADAFF - 000ADB0D (14 bytes) name=_ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE +000ADAFF: push rbp +000ADB00: mov rbp, rsp +000ADB03: mov [rbp+var_8], rdi +000ADB07: mov rax, [rbp+var_8] +000ADB0B: pop rbp +000ADB0C: retn + +### FUNC 000ADB0E - 000AE0C9 (1467 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_b +000ADB0E: push rbp +000ADB0F: mov rbp, rsp +000ADB12: push r13 +000ADB14: push r12 +000ADB16: push rbx +000ADB17: sub rsp, 158h +000ADB1E: mov [rbp+var_158], rdi +000ADB25: mov [rbp+var_160], rsi +000ADB2C: mov eax, edx +000ADB2E: mov [rbp+var_164], al +000ADB34: mov rax, [rbp+var_158] +000ADB3B: add rax, 20h ; ' ' +000ADB3F: mov rdi, rax +000ADB42: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000ADB47: test al, al +000ADB49: jz short loc_ADB6A +000ADB4B: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ADB52: mov edx, 1654h; line +000ADB57: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ADB5E: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000ADB65: call ___assert_fail +000ADB6A: mov rax, [rbp+var_158] +000ADB71: add rax, 20h ; ' ' +000ADB75: mov rdi, rax +000ADB78: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000ADB7D: mov [rbp+var_140], rax +000ADB84: mov [rbp+var_138], rdx +000ADB8B: lea rax, [rbp+var_140] +000ADB92: mov rdi, rax +000ADB95: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000ADB9A: xor eax, 1 +000ADB9D: test al, al +000ADB9F: jz short loc_ADBE6 +000ADBA1: mov [rbp+var_119], 0 +000ADBAC: mov [rbp+var_111], 0 +000ADBB3: lea rdx, [rbp+var_119] +000ADBBA: lea rcx, [rbp+var_111] +000ADBC1: lea rax, [rbp+var_130] +000ADBC8: mov rsi, rcx +000ADBCB: mov rdi, rax +000ADBCE: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000ADBD3: mov r12, [rbp+var_130] +000ADBDA: mov r13, [rbp+var_128] +000ADBE1: jmp loc_AE08E +000ADBE6: mov rax, [rbp+var_160] +000ADBED: mov rdi, rax +000ADBF0: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000ADBF5: mov rdx, rax +000ADBF8: lea rax, [rbp+var_150] +000ADBFF: mov rsi, rdx +000ADC02: mov rdi, rax +000ADC05: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_; nlohmann::basic_json>>::basic_json(bool &) +000ADC0A: cmp [rbp+var_164], 0 +000ADC11: jnz short loc_ADC4E +000ADC13: mov rax, [rbp+var_158] +000ADC1A: add rax, 8 +000ADC1E: mov rdi, rax +000ADC21: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000ADC26: mov rdx, [rbp+var_158] +000ADC2D: lea rdi, [rdx+80h] +000ADC34: lea rdx, [rbp+var_150] +000ADC3B: mov rcx, rdx +000ADC3E: mov edx, 5 +000ADC43: mov esi, eax +000ADC45: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000ADC4A: test al, al +000ADC4C: jz short loc_ADC55 +000ADC4E: mov eax, 1 +000ADC53: jmp short loc_ADC5A +000ADC55: mov eax, 0 +000ADC5A: mov [rbp+var_21], al +000ADC5D: movzx eax, [rbp+var_21] +000ADC61: xor eax, 1 +000ADC64: test al, al +000ADC66: jz short loc_ADCAD +000ADC68: mov [rbp+var_F9], 0 +000ADC73: mov [rbp+var_F1], 0 +000ADC7A: lea rdx, [rbp+var_F9] +000ADC81: lea rcx, [rbp+var_F1] +000ADC88: lea rax, [rbp+var_110] +000ADC8F: mov rsi, rcx +000ADC92: mov rdi, rax +000ADC95: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000ADC9A: mov r12, [rbp+var_110] +000ADCA1: mov r13, [rbp+var_108] +000ADCA8: jmp loc_AE07F +000ADCAD: mov rax, [rbp+var_158] +000ADCB4: add rax, 8 +000ADCB8: mov rdi, rax +000ADCBB: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000ADCC0: test al, al +000ADCC2: jz loc_ADD62 +000ADCC8: lea rax, [rbp+var_150] +000ADCCF: mov rdi, rax +000ADCD2: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000ADCD7: mov rdx, rax +000ADCDA: lea rax, [rbp+var_F0] +000ADCE1: mov rsi, rdx +000ADCE4: mov rdi, rax +000ADCE7: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000ADCEC: mov rax, [rbp+var_158] +000ADCF3: mov rax, [rax] +000ADCF6: lea rdx, [rbp+var_F0] +000ADCFD: mov rsi, rdx +000ADD00: mov rdi, rax +000ADD03: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000ADD08: lea rax, [rbp+var_F0] +000ADD0F: mov rdi, rax +000ADD12: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000ADD17: mov rax, [rbp+var_158] +000ADD1E: mov rax, [rax] +000ADD21: mov [rbp+var_D0], rax +000ADD28: mov [rbp+var_C1], 1 +000ADD2F: lea rdx, [rbp+var_D0] +000ADD36: lea rcx, [rbp+var_C1] +000ADD3D: lea rax, [rbp+var_E0] +000ADD44: mov rsi, rcx +000ADD47: mov rdi, rax +000ADD4A: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000ADD4F: mov r12, [rbp+var_E0] +000ADD56: mov r13, [rbp+var_D8] +000ADD5D: jmp loc_AE07F +000ADD62: mov rax, [rbp+var_158] +000ADD69: add rax, 8 +000ADD6D: mov rdi, rax +000ADD70: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADD75: mov rax, [rax] +000ADD78: test rax, rax +000ADD7B: setz al +000ADD7E: test al, al +000ADD80: jz short loc_ADDC7 +000ADD82: mov [rbp+var_A9], 0 +000ADD8D: mov [rbp+var_A1], 0 +000ADD94: lea rdx, [rbp+var_A9] +000ADD9B: lea rcx, [rbp+var_A1] +000ADDA2: lea rax, [rbp+var_C0] +000ADDA9: mov rsi, rcx +000ADDAC: mov rdi, rax +000ADDAF: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000ADDB4: mov r12, [rbp+var_C0] +000ADDBB: mov r13, [rbp+var_B8] +000ADDC2: jmp loc_AE07F +000ADDC7: mov rax, [rbp+var_158] +000ADDCE: add rax, 8 +000ADDD2: mov rdi, rax +000ADDD5: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADDDA: mov rax, [rax] +000ADDDD: mov rdi, rax +000ADDE0: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000ADDE5: xor eax, 1 +000ADDE8: test al, al +000ADDEA: jz short loc_ADE30 +000ADDEC: mov rax, [rbp+var_158] +000ADDF3: add rax, 8 +000ADDF7: mov rdi, rax +000ADDFA: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADDFF: mov rax, [rax] +000ADE02: mov rdi, rax +000ADE05: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000ADE0A: xor eax, 1 +000ADE0D: test al, al +000ADE0F: jz short loc_ADE30 +000ADE11: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ADE18: mov edx, 1677h; line +000ADE1D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ADE24: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000ADE2B: call ___assert_fail +000ADE30: mov rax, [rbp+var_158] +000ADE37: add rax, 8 +000ADE3B: mov rdi, rax +000ADE3E: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADE43: mov rax, [rax] +000ADE46: mov rdi, rax +000ADE49: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000ADE4E: test al, al +000ADE50: jz loc_ADEF0 +000ADE56: lea rax, [rbp+var_150] +000ADE5D: mov rdi, rax +000ADE60: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000ADE65: mov rbx, rax +000ADE68: mov rax, [rbp+var_158] +000ADE6F: add rax, 8 +000ADE73: mov rdi, rax +000ADE76: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADE7B: mov rax, [rax] +000ADE7E: mov rax, [rax+8] +000ADE82: mov rsi, rbx +000ADE85: mov rdi, rax +000ADE88: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000ADE8D: mov rax, [rbp+var_158] +000ADE94: add rax, 8 +000ADE98: mov rdi, rax +000ADE9B: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADEA0: mov rax, [rax] +000ADEA3: mov rax, [rax+8] +000ADEA7: mov rdi, rax +000ADEAA: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000ADEAF: mov [rbp+var_90], rax +000ADEB6: mov [rbp+var_81], 1 +000ADEBD: lea rdx, [rbp+var_90] +000ADEC4: lea rcx, [rbp+var_81] +000ADECB: lea rax, [rbp+var_A0] +000ADED2: mov rsi, rcx +000ADED5: mov rdi, rax +000ADED8: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000ADEDD: mov r12, [rbp+var_A0] +000ADEE4: mov r13, [rbp+var_98] +000ADEEB: jmp loc_AE07F +000ADEF0: mov rax, [rbp+var_158] +000ADEF7: add rax, 8 +000ADEFB: mov rdi, rax +000ADEFE: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000ADF03: mov rax, [rax] +000ADF06: mov rdi, rax +000ADF09: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000ADF0E: test al, al +000ADF10: jnz short loc_ADF31 +000ADF12: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ADF19: mov edx, 1681h; line +000ADF1E: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ADF25: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000ADF2C: call ___assert_fail +000ADF31: mov rax, [rbp+var_158] +000ADF38: add rax, 48h ; 'H' +000ADF3C: mov rdi, rax +000ADF3F: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000ADF44: test al, al +000ADF46: jz short loc_ADF67 +000ADF48: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ADF4F: mov edx, 1683h; line +000ADF54: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000ADF5B: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000ADF62: call ___assert_fail +000ADF67: mov rax, [rbp+var_158] +000ADF6E: add rax, 48h ; 'H' +000ADF72: mov rdi, rax +000ADF75: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000ADF7A: mov [rbp+var_80], rax +000ADF7E: mov [rbp+var_78], rdx +000ADF82: lea rax, [rbp+var_80] +000ADF86: mov rdi, rax +000ADF89: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000ADF8E: mov [rbp+var_22], al +000ADF91: mov rax, [rbp+var_158] +000ADF98: add rax, 48h ; 'H' +000ADF9C: mov rdi, rax +000ADF9F: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000ADFA4: movzx eax, [rbp+var_22] +000ADFA8: xor eax, 1 +000ADFAB: test al, al +000ADFAD: jz short loc_ADFDF +000ADFAF: mov [rbp+var_59], 0 +000ADFB7: mov [rbp+var_51], 0 +000ADFBB: lea rdx, [rbp+var_59] +000ADFBF: lea rcx, [rbp+var_51] +000ADFC3: lea rax, [rbp+var_70] +000ADFC7: mov rsi, rcx +000ADFCA: mov rdi, rax +000ADFCD: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000ADFD2: mov r12, [rbp+var_70] +000ADFD6: mov r13, [rbp+var_68] +000ADFDA: jmp loc_AE07F +000ADFDF: mov rax, [rbp+var_158] +000ADFE6: mov rax, [rax+70h] +000ADFEA: test rax, rax +000ADFED: jnz short loc_AE00E +000ADFEF: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000ADFF6: mov edx, 168Ch; line +000ADFFB: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE002: lea rdi, aObjectElement; "object_element" +000AE009: call ___assert_fail +000AE00E: lea rax, [rbp+var_150] +000AE015: mov rdi, rax +000AE018: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AE01D: mov rdx, rax +000AE020: lea rax, [rbp+var_50] +000AE024: mov rsi, rdx +000AE027: mov rdi, rax +000AE02A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AE02F: mov rax, [rbp+var_158] +000AE036: mov rax, [rax+70h] +000AE03A: lea rdx, [rbp+var_50] +000AE03E: mov rsi, rdx +000AE041: mov rdi, rax +000AE044: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AE049: lea rax, [rbp+var_50] +000AE04D: mov rdi, rax +000AE050: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE055: mov rax, [rbp+var_158] +000AE05C: lea rdx, [rax+70h] +000AE060: mov [rbp+var_23], 1 +000AE064: lea rcx, [rbp+var_23] +000AE068: lea rax, [rbp+var_40] +000AE06C: mov rsi, rcx +000AE06F: mov rdi, rax +000AE072: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000AE077: mov r12, [rbp+var_40] +000AE07B: mov r13, [rbp+var_38] +000AE07F: lea rax, [rbp+var_150] +000AE086: mov rdi, rax +000AE089: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE08E: mov rcx, r12 +000AE091: mov rbx, r13 +000AE094: mov rax, r12 +000AE097: mov rdx, r13 +000AE09A: jmp short loc_AE0B9 +000AE09C: mov rbx, rax +000AE09F: lea rax, [rbp+var_150] +000AE0A6: mov rdi, rax +000AE0A9: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE0AE: mov rax, rbx +000AE0B1: mov rdi, rax; struct _Unwind_Exception * +000AE0B4: call __Unwind_Resume +000AE0B9: mov eax, ecx +000AE0BB: add rsp, 158h +000AE0C2: pop rbx +000AE0C3: pop r12 +000AE0C5: pop r13 +000AE0C7: pop rbp +000AE0C8: retn + +### FUNC 000AE0CA - 000AE685 (1467 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_b +000AE0CA: push rbp +000AE0CB: mov rbp, rsp +000AE0CE: push r13 +000AE0D0: push r12 +000AE0D2: push rbx +000AE0D3: sub rsp, 158h +000AE0DA: mov [rbp+var_158], rdi +000AE0E1: mov [rbp+var_160], rsi +000AE0E8: mov eax, edx +000AE0EA: mov [rbp+var_164], al +000AE0F0: mov rax, [rbp+var_158] +000AE0F7: add rax, 20h ; ' ' +000AE0FB: mov rdi, rax +000AE0FE: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AE103: test al, al +000AE105: jz short loc_AE126 +000AE107: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE10E: mov edx, 1654h; line +000AE113: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE11A: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000AE121: call ___assert_fail +000AE126: mov rax, [rbp+var_158] +000AE12D: add rax, 20h ; ' ' +000AE131: mov rdi, rax +000AE134: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AE139: mov [rbp+var_140], rax +000AE140: mov [rbp+var_138], rdx +000AE147: lea rax, [rbp+var_140] +000AE14E: mov rdi, rax +000AE151: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AE156: xor eax, 1 +000AE159: test al, al +000AE15B: jz short loc_AE1A2 +000AE15D: mov [rbp+var_119], 0 +000AE168: mov [rbp+var_111], 0 +000AE16F: lea rdx, [rbp+var_119] +000AE176: lea rcx, [rbp+var_111] +000AE17D: lea rax, [rbp+var_130] +000AE184: mov rsi, rcx +000AE187: mov rdi, rax +000AE18A: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE18F: mov r12, [rbp+var_130] +000AE196: mov r13, [rbp+var_128] +000AE19D: jmp loc_AE64A +000AE1A2: mov rax, [rbp+var_160] +000AE1A9: mov rdi, rax +000AE1AC: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AE1B1: mov rdx, [rax] +000AE1B4: lea rax, [rbp+var_150] +000AE1BB: mov rsi, rdx +000AE1BE: mov rdi, rax +000AE1C1: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +000AE1C6: cmp [rbp+var_164], 0 +000AE1CD: jnz short loc_AE20A +000AE1CF: mov rax, [rbp+var_158] +000AE1D6: add rax, 8 +000AE1DA: mov rdi, rax +000AE1DD: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000AE1E2: mov rdx, [rbp+var_158] +000AE1E9: lea rdi, [rdx+80h] +000AE1F0: lea rdx, [rbp+var_150] +000AE1F7: mov rcx, rdx +000AE1FA: mov edx, 5 +000AE1FF: mov esi, eax +000AE201: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000AE206: test al, al +000AE208: jz short loc_AE211 +000AE20A: mov eax, 1 +000AE20F: jmp short loc_AE216 +000AE211: mov eax, 0 +000AE216: mov [rbp+var_21], al +000AE219: movzx eax, [rbp+var_21] +000AE21D: xor eax, 1 +000AE220: test al, al +000AE222: jz short loc_AE269 +000AE224: mov [rbp+var_F9], 0 +000AE22F: mov [rbp+var_F1], 0 +000AE236: lea rdx, [rbp+var_F9] +000AE23D: lea rcx, [rbp+var_F1] +000AE244: lea rax, [rbp+var_110] +000AE24B: mov rsi, rcx +000AE24E: mov rdi, rax +000AE251: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE256: mov r12, [rbp+var_110] +000AE25D: mov r13, [rbp+var_108] +000AE264: jmp loc_AE63B +000AE269: mov rax, [rbp+var_158] +000AE270: add rax, 8 +000AE274: mov rdi, rax +000AE277: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AE27C: test al, al +000AE27E: jz loc_AE31E +000AE284: lea rax, [rbp+var_150] +000AE28B: mov rdi, rax +000AE28E: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AE293: mov rdx, rax +000AE296: lea rax, [rbp+var_F0] +000AE29D: mov rsi, rdx +000AE2A0: mov rdi, rax +000AE2A3: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AE2A8: mov rax, [rbp+var_158] +000AE2AF: mov rax, [rax] +000AE2B2: lea rdx, [rbp+var_F0] +000AE2B9: mov rsi, rdx +000AE2BC: mov rdi, rax +000AE2BF: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AE2C4: lea rax, [rbp+var_F0] +000AE2CB: mov rdi, rax +000AE2CE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE2D3: mov rax, [rbp+var_158] +000AE2DA: mov rax, [rax] +000AE2DD: mov [rbp+var_D0], rax +000AE2E4: mov [rbp+var_C1], 1 +000AE2EB: lea rdx, [rbp+var_D0] +000AE2F2: lea rcx, [rbp+var_C1] +000AE2F9: lea rax, [rbp+var_E0] +000AE300: mov rsi, rcx +000AE303: mov rdi, rax +000AE306: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AE30B: mov r12, [rbp+var_E0] +000AE312: mov r13, [rbp+var_D8] +000AE319: jmp loc_AE63B +000AE31E: mov rax, [rbp+var_158] +000AE325: add rax, 8 +000AE329: mov rdi, rax +000AE32C: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE331: mov rax, [rax] +000AE334: test rax, rax +000AE337: setz al +000AE33A: test al, al +000AE33C: jz short loc_AE383 +000AE33E: mov [rbp+var_A9], 0 +000AE349: mov [rbp+var_A1], 0 +000AE350: lea rdx, [rbp+var_A9] +000AE357: lea rcx, [rbp+var_A1] +000AE35E: lea rax, [rbp+var_C0] +000AE365: mov rsi, rcx +000AE368: mov rdi, rax +000AE36B: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE370: mov r12, [rbp+var_C0] +000AE377: mov r13, [rbp+var_B8] +000AE37E: jmp loc_AE63B +000AE383: mov rax, [rbp+var_158] +000AE38A: add rax, 8 +000AE38E: mov rdi, rax +000AE391: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE396: mov rax, [rax] +000AE399: mov rdi, rax +000AE39C: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AE3A1: xor eax, 1 +000AE3A4: test al, al +000AE3A6: jz short loc_AE3EC +000AE3A8: mov rax, [rbp+var_158] +000AE3AF: add rax, 8 +000AE3B3: mov rdi, rax +000AE3B6: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE3BB: mov rax, [rax] +000AE3BE: mov rdi, rax +000AE3C1: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AE3C6: xor eax, 1 +000AE3C9: test al, al +000AE3CB: jz short loc_AE3EC +000AE3CD: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE3D4: mov edx, 1677h; line +000AE3D9: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE3E0: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AE3E7: call ___assert_fail +000AE3EC: mov rax, [rbp+var_158] +000AE3F3: add rax, 8 +000AE3F7: mov rdi, rax +000AE3FA: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE3FF: mov rax, [rax] +000AE402: mov rdi, rax +000AE405: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AE40A: test al, al +000AE40C: jz loc_AE4AC +000AE412: lea rax, [rbp+var_150] +000AE419: mov rdi, rax +000AE41C: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AE421: mov rbx, rax +000AE424: mov rax, [rbp+var_158] +000AE42B: add rax, 8 +000AE42F: mov rdi, rax +000AE432: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE437: mov rax, [rax] +000AE43A: mov rax, [rax+8] +000AE43E: mov rsi, rbx +000AE441: mov rdi, rax +000AE444: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000AE449: mov rax, [rbp+var_158] +000AE450: add rax, 8 +000AE454: mov rdi, rax +000AE457: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE45C: mov rax, [rax] +000AE45F: mov rax, [rax+8] +000AE463: mov rdi, rax +000AE466: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AE46B: mov [rbp+var_90], rax +000AE472: mov [rbp+var_81], 1 +000AE479: lea rdx, [rbp+var_90] +000AE480: lea rcx, [rbp+var_81] +000AE487: lea rax, [rbp+var_A0] +000AE48E: mov rsi, rcx +000AE491: mov rdi, rax +000AE494: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AE499: mov r12, [rbp+var_A0] +000AE4A0: mov r13, [rbp+var_98] +000AE4A7: jmp loc_AE63B +000AE4AC: mov rax, [rbp+var_158] +000AE4B3: add rax, 8 +000AE4B7: mov rdi, rax +000AE4BA: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE4BF: mov rax, [rax] +000AE4C2: mov rdi, rax +000AE4C5: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AE4CA: test al, al +000AE4CC: jnz short loc_AE4ED +000AE4CE: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE4D5: mov edx, 1681h; line +000AE4DA: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE4E1: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AE4E8: call ___assert_fail +000AE4ED: mov rax, [rbp+var_158] +000AE4F4: add rax, 48h ; 'H' +000AE4F8: mov rdi, rax +000AE4FB: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AE500: test al, al +000AE502: jz short loc_AE523 +000AE504: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE50B: mov edx, 1683h; line +000AE510: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE517: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000AE51E: call ___assert_fail +000AE523: mov rax, [rbp+var_158] +000AE52A: add rax, 48h ; 'H' +000AE52E: mov rdi, rax +000AE531: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AE536: mov [rbp+var_80], rax +000AE53A: mov [rbp+var_78], rdx +000AE53E: lea rax, [rbp+var_80] +000AE542: mov rdi, rax +000AE545: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AE54A: mov [rbp+var_22], al +000AE54D: mov rax, [rbp+var_158] +000AE554: add rax, 48h ; 'H' +000AE558: mov rdi, rax +000AE55B: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000AE560: movzx eax, [rbp+var_22] +000AE564: xor eax, 1 +000AE567: test al, al +000AE569: jz short loc_AE59B +000AE56B: mov [rbp+var_59], 0 +000AE573: mov [rbp+var_51], 0 +000AE577: lea rdx, [rbp+var_59] +000AE57B: lea rcx, [rbp+var_51] +000AE57F: lea rax, [rbp+var_70] +000AE583: mov rsi, rcx +000AE586: mov rdi, rax +000AE589: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE58E: mov r12, [rbp+var_70] +000AE592: mov r13, [rbp+var_68] +000AE596: jmp loc_AE63B +000AE59B: mov rax, [rbp+var_158] +000AE5A2: mov rax, [rax+70h] +000AE5A6: test rax, rax +000AE5A9: jnz short loc_AE5CA +000AE5AB: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE5B2: mov edx, 168Ch; line +000AE5B7: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE5BE: lea rdi, aObjectElement; "object_element" +000AE5C5: call ___assert_fail +000AE5CA: lea rax, [rbp+var_150] +000AE5D1: mov rdi, rax +000AE5D4: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AE5D9: mov rdx, rax +000AE5DC: lea rax, [rbp+var_50] +000AE5E0: mov rsi, rdx +000AE5E3: mov rdi, rax +000AE5E6: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AE5EB: mov rax, [rbp+var_158] +000AE5F2: mov rax, [rax+70h] +000AE5F6: lea rdx, [rbp+var_50] +000AE5FA: mov rsi, rdx +000AE5FD: mov rdi, rax +000AE600: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AE605: lea rax, [rbp+var_50] +000AE609: mov rdi, rax +000AE60C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE611: mov rax, [rbp+var_158] +000AE618: lea rdx, [rax+70h] +000AE61C: mov [rbp+var_23], 1 +000AE620: lea rcx, [rbp+var_23] +000AE624: lea rax, [rbp+var_40] +000AE628: mov rsi, rcx +000AE62B: mov rdi, rax +000AE62E: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000AE633: mov r12, [rbp+var_40] +000AE637: mov r13, [rbp+var_38] +000AE63B: lea rax, [rbp+var_150] +000AE642: mov rdi, rax +000AE645: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE64A: mov rcx, r12 +000AE64D: mov rbx, r13 +000AE650: mov rax, r12 +000AE653: mov rdx, r13 +000AE656: jmp short loc_AE675 +000AE658: mov rbx, rax +000AE65B: lea rax, [rbp+var_150] +000AE662: mov rdi, rax +000AE665: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE66A: mov rax, rbx +000AE66D: mov rdi, rax; struct _Unwind_Exception * +000AE670: call __Unwind_Resume +000AE675: mov eax, ecx +000AE677: add rsp, 158h +000AE67E: pop rbx +000AE67F: pop r12 +000AE681: pop r13 +000AE683: pop rbp +000AE684: retn + +### FUNC 000AE685 - 000AE693 (14 bytes) name=_ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE +000AE685: push rbp +000AE686: mov rbp, rsp +000AE689: mov [rbp+var_8], rdi +000AE68D: mov rax, [rbp+var_8] +000AE691: pop rbp +000AE692: retn + +### FUNC 000AE694 - 000AEC4F (1467 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_b +000AE694: push rbp +000AE695: mov rbp, rsp +000AE698: push r13 +000AE69A: push r12 +000AE69C: push rbx +000AE69D: sub rsp, 158h +000AE6A4: mov [rbp+var_158], rdi +000AE6AB: mov [rbp+var_160], rsi +000AE6B2: mov eax, edx +000AE6B4: mov [rbp+var_164], al +000AE6BA: mov rax, [rbp+var_158] +000AE6C1: add rax, 20h ; ' ' +000AE6C5: mov rdi, rax +000AE6C8: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AE6CD: test al, al +000AE6CF: jz short loc_AE6F0 +000AE6D1: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE6D8: mov edx, 1654h; line +000AE6DD: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE6E4: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000AE6EB: call ___assert_fail +000AE6F0: mov rax, [rbp+var_158] +000AE6F7: add rax, 20h ; ' ' +000AE6FB: mov rdi, rax +000AE6FE: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AE703: mov [rbp+var_140], rax +000AE70A: mov [rbp+var_138], rdx +000AE711: lea rax, [rbp+var_140] +000AE718: mov rdi, rax +000AE71B: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AE720: xor eax, 1 +000AE723: test al, al +000AE725: jz short loc_AE76C +000AE727: mov [rbp+var_119], 0 +000AE732: mov [rbp+var_111], 0 +000AE739: lea rdx, [rbp+var_119] +000AE740: lea rcx, [rbp+var_111] +000AE747: lea rax, [rbp+var_130] +000AE74E: mov rsi, rcx +000AE751: mov rdi, rax +000AE754: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE759: mov r12, [rbp+var_130] +000AE760: mov r13, [rbp+var_128] +000AE767: jmp loc_AEC14 +000AE76C: mov rax, [rbp+var_160] +000AE773: mov rdi, rax +000AE776: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AE77B: mov rdx, rax +000AE77E: lea rax, [rbp+var_150] +000AE785: mov rsi, rdx +000AE788: mov rdi, rax +000AE78B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_; nlohmann::basic_json>>::basic_json(long &) +000AE790: cmp [rbp+var_164], 0 +000AE797: jnz short loc_AE7D4 +000AE799: mov rax, [rbp+var_158] +000AE7A0: add rax, 8 +000AE7A4: mov rdi, rax +000AE7A7: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000AE7AC: mov rdx, [rbp+var_158] +000AE7B3: lea rdi, [rdx+80h] +000AE7BA: lea rdx, [rbp+var_150] +000AE7C1: mov rcx, rdx +000AE7C4: mov edx, 5 +000AE7C9: mov esi, eax +000AE7CB: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000AE7D0: test al, al +000AE7D2: jz short loc_AE7DB +000AE7D4: mov eax, 1 +000AE7D9: jmp short loc_AE7E0 +000AE7DB: mov eax, 0 +000AE7E0: mov [rbp+var_21], al +000AE7E3: movzx eax, [rbp+var_21] +000AE7E7: xor eax, 1 +000AE7EA: test al, al +000AE7EC: jz short loc_AE833 +000AE7EE: mov [rbp+var_F9], 0 +000AE7F9: mov [rbp+var_F1], 0 +000AE800: lea rdx, [rbp+var_F9] +000AE807: lea rcx, [rbp+var_F1] +000AE80E: lea rax, [rbp+var_110] +000AE815: mov rsi, rcx +000AE818: mov rdi, rax +000AE81B: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE820: mov r12, [rbp+var_110] +000AE827: mov r13, [rbp+var_108] +000AE82E: jmp loc_AEC05 +000AE833: mov rax, [rbp+var_158] +000AE83A: add rax, 8 +000AE83E: mov rdi, rax +000AE841: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AE846: test al, al +000AE848: jz loc_AE8E8 +000AE84E: lea rax, [rbp+var_150] +000AE855: mov rdi, rax +000AE858: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AE85D: mov rdx, rax +000AE860: lea rax, [rbp+var_F0] +000AE867: mov rsi, rdx +000AE86A: mov rdi, rax +000AE86D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AE872: mov rax, [rbp+var_158] +000AE879: mov rax, [rax] +000AE87C: lea rdx, [rbp+var_F0] +000AE883: mov rsi, rdx +000AE886: mov rdi, rax +000AE889: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AE88E: lea rax, [rbp+var_F0] +000AE895: mov rdi, rax +000AE898: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AE89D: mov rax, [rbp+var_158] +000AE8A4: mov rax, [rax] +000AE8A7: mov [rbp+var_D0], rax +000AE8AE: mov [rbp+var_C1], 1 +000AE8B5: lea rdx, [rbp+var_D0] +000AE8BC: lea rcx, [rbp+var_C1] +000AE8C3: lea rax, [rbp+var_E0] +000AE8CA: mov rsi, rcx +000AE8CD: mov rdi, rax +000AE8D0: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AE8D5: mov r12, [rbp+var_E0] +000AE8DC: mov r13, [rbp+var_D8] +000AE8E3: jmp loc_AEC05 +000AE8E8: mov rax, [rbp+var_158] +000AE8EF: add rax, 8 +000AE8F3: mov rdi, rax +000AE8F6: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE8FB: mov rax, [rax] +000AE8FE: test rax, rax +000AE901: setz al +000AE904: test al, al +000AE906: jz short loc_AE94D +000AE908: mov [rbp+var_A9], 0 +000AE913: mov [rbp+var_A1], 0 +000AE91A: lea rdx, [rbp+var_A9] +000AE921: lea rcx, [rbp+var_A1] +000AE928: lea rax, [rbp+var_C0] +000AE92F: mov rsi, rcx +000AE932: mov rdi, rax +000AE935: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AE93A: mov r12, [rbp+var_C0] +000AE941: mov r13, [rbp+var_B8] +000AE948: jmp loc_AEC05 +000AE94D: mov rax, [rbp+var_158] +000AE954: add rax, 8 +000AE958: mov rdi, rax +000AE95B: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE960: mov rax, [rax] +000AE963: mov rdi, rax +000AE966: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AE96B: xor eax, 1 +000AE96E: test al, al +000AE970: jz short loc_AE9B6 +000AE972: mov rax, [rbp+var_158] +000AE979: add rax, 8 +000AE97D: mov rdi, rax +000AE980: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE985: mov rax, [rax] +000AE988: mov rdi, rax +000AE98B: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AE990: xor eax, 1 +000AE993: test al, al +000AE995: jz short loc_AE9B6 +000AE997: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AE99E: mov edx, 1677h; line +000AE9A3: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AE9AA: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AE9B1: call ___assert_fail +000AE9B6: mov rax, [rbp+var_158] +000AE9BD: add rax, 8 +000AE9C1: mov rdi, rax +000AE9C4: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AE9C9: mov rax, [rax] +000AE9CC: mov rdi, rax +000AE9CF: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AE9D4: test al, al +000AE9D6: jz loc_AEA76 +000AE9DC: lea rax, [rbp+var_150] +000AE9E3: mov rdi, rax +000AE9E6: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AE9EB: mov rbx, rax +000AE9EE: mov rax, [rbp+var_158] +000AE9F5: add rax, 8 +000AE9F9: mov rdi, rax +000AE9FC: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEA01: mov rax, [rax] +000AEA04: mov rax, [rax+8] +000AEA08: mov rsi, rbx +000AEA0B: mov rdi, rax +000AEA0E: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000AEA13: mov rax, [rbp+var_158] +000AEA1A: add rax, 8 +000AEA1E: mov rdi, rax +000AEA21: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEA26: mov rax, [rax] +000AEA29: mov rax, [rax+8] +000AEA2D: mov rdi, rax +000AEA30: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AEA35: mov [rbp+var_90], rax +000AEA3C: mov [rbp+var_81], 1 +000AEA43: lea rdx, [rbp+var_90] +000AEA4A: lea rcx, [rbp+var_81] +000AEA51: lea rax, [rbp+var_A0] +000AEA58: mov rsi, rcx +000AEA5B: mov rdi, rax +000AEA5E: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AEA63: mov r12, [rbp+var_A0] +000AEA6A: mov r13, [rbp+var_98] +000AEA71: jmp loc_AEC05 +000AEA76: mov rax, [rbp+var_158] +000AEA7D: add rax, 8 +000AEA81: mov rdi, rax +000AEA84: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEA89: mov rax, [rax] +000AEA8C: mov rdi, rax +000AEA8F: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AEA94: test al, al +000AEA96: jnz short loc_AEAB7 +000AEA98: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AEA9F: mov edx, 1681h; line +000AEAA4: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AEAAB: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AEAB2: call ___assert_fail +000AEAB7: mov rax, [rbp+var_158] +000AEABE: add rax, 48h ; 'H' +000AEAC2: mov rdi, rax +000AEAC5: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AEACA: test al, al +000AEACC: jz short loc_AEAED +000AEACE: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AEAD5: mov edx, 1683h; line +000AEADA: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AEAE1: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000AEAE8: call ___assert_fail +000AEAED: mov rax, [rbp+var_158] +000AEAF4: add rax, 48h ; 'H' +000AEAF8: mov rdi, rax +000AEAFB: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AEB00: mov [rbp+var_80], rax +000AEB04: mov [rbp+var_78], rdx +000AEB08: lea rax, [rbp+var_80] +000AEB0C: mov rdi, rax +000AEB0F: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AEB14: mov [rbp+var_22], al +000AEB17: mov rax, [rbp+var_158] +000AEB1E: add rax, 48h ; 'H' +000AEB22: mov rdi, rax +000AEB25: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000AEB2A: movzx eax, [rbp+var_22] +000AEB2E: xor eax, 1 +000AEB31: test al, al +000AEB33: jz short loc_AEB65 +000AEB35: mov [rbp+var_59], 0 +000AEB3D: mov [rbp+var_51], 0 +000AEB41: lea rdx, [rbp+var_59] +000AEB45: lea rcx, [rbp+var_51] +000AEB49: lea rax, [rbp+var_70] +000AEB4D: mov rsi, rcx +000AEB50: mov rdi, rax +000AEB53: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AEB58: mov r12, [rbp+var_70] +000AEB5C: mov r13, [rbp+var_68] +000AEB60: jmp loc_AEC05 +000AEB65: mov rax, [rbp+var_158] +000AEB6C: mov rax, [rax+70h] +000AEB70: test rax, rax +000AEB73: jnz short loc_AEB94 +000AEB75: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AEB7C: mov edx, 168Ch; line +000AEB81: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AEB88: lea rdi, aObjectElement; "object_element" +000AEB8F: call ___assert_fail +000AEB94: lea rax, [rbp+var_150] +000AEB9B: mov rdi, rax +000AEB9E: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AEBA3: mov rdx, rax +000AEBA6: lea rax, [rbp+var_50] +000AEBAA: mov rsi, rdx +000AEBAD: mov rdi, rax +000AEBB0: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AEBB5: mov rax, [rbp+var_158] +000AEBBC: mov rax, [rax+70h] +000AEBC0: lea rdx, [rbp+var_50] +000AEBC4: mov rsi, rdx +000AEBC7: mov rdi, rax +000AEBCA: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AEBCF: lea rax, [rbp+var_50] +000AEBD3: mov rdi, rax +000AEBD6: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AEBDB: mov rax, [rbp+var_158] +000AEBE2: lea rdx, [rax+70h] +000AEBE6: mov [rbp+var_23], 1 +000AEBEA: lea rcx, [rbp+var_23] +000AEBEE: lea rax, [rbp+var_40] +000AEBF2: mov rsi, rcx +000AEBF5: mov rdi, rax +000AEBF8: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000AEBFD: mov r12, [rbp+var_40] +000AEC01: mov r13, [rbp+var_38] +000AEC05: lea rax, [rbp+var_150] +000AEC0C: mov rdi, rax +000AEC0F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AEC14: mov rcx, r12 +000AEC17: mov rbx, r13 +000AEC1A: mov rax, r12 +000AEC1D: mov rdx, r13 +000AEC20: jmp short loc_AEC3F +000AEC22: mov rbx, rax +000AEC25: lea rax, [rbp+var_150] +000AEC2C: mov rdi, rax +000AEC2F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AEC34: mov rax, rbx +000AEC37: mov rdi, rax; struct _Unwind_Exception * +000AEC3A: call __Unwind_Resume +000AEC3F: mov eax, ecx +000AEC41: add rsp, 158h +000AEC48: pop rbx +000AEC49: pop r12 +000AEC4B: pop r13 +000AEC4D: pop rbp +000AEC4E: retn + +### FUNC 000AEC50 - 000AF20B (1467 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_b +000AEC50: push rbp +000AEC51: mov rbp, rsp +000AEC54: push r13 +000AEC56: push r12 +000AEC58: push rbx +000AEC59: sub rsp, 158h +000AEC60: mov [rbp+var_158], rdi +000AEC67: mov [rbp+var_160], rsi +000AEC6E: mov eax, edx +000AEC70: mov [rbp+var_164], al +000AEC76: mov rax, [rbp+var_158] +000AEC7D: add rax, 20h ; ' ' +000AEC81: mov rdi, rax +000AEC84: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AEC89: test al, al +000AEC8B: jz short loc_AECAC +000AEC8D: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AEC94: mov edx, 1654h; line +000AEC99: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AECA0: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000AECA7: call ___assert_fail +000AECAC: mov rax, [rbp+var_158] +000AECB3: add rax, 20h ; ' ' +000AECB7: mov rdi, rax +000AECBA: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AECBF: mov [rbp+var_140], rax +000AECC6: mov [rbp+var_138], rdx +000AECCD: lea rax, [rbp+var_140] +000AECD4: mov rdi, rax +000AECD7: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AECDC: xor eax, 1 +000AECDF: test al, al +000AECE1: jz short loc_AED28 +000AECE3: mov [rbp+var_119], 0 +000AECEE: mov [rbp+var_111], 0 +000AECF5: lea rdx, [rbp+var_119] +000AECFC: lea rcx, [rbp+var_111] +000AED03: lea rax, [rbp+var_130] +000AED0A: mov rsi, rcx +000AED0D: mov rdi, rax +000AED10: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AED15: mov r12, [rbp+var_130] +000AED1C: mov r13, [rbp+var_128] +000AED23: jmp loc_AF1D0 +000AED28: mov rax, [rbp+var_160] +000AED2F: mov rdi, rax +000AED32: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AED37: mov rdx, rax +000AED3A: lea rax, [rbp+var_150] +000AED41: mov rsi, rdx +000AED44: mov rdi, rax +000AED47: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_; nlohmann::basic_json>>::basic_json(std::string &) +000AED4C: cmp [rbp+var_164], 0 +000AED53: jnz short loc_AED90 +000AED55: mov rax, [rbp+var_158] +000AED5C: add rax, 8 +000AED60: mov rdi, rax +000AED63: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000AED68: mov rdx, [rbp+var_158] +000AED6F: lea rdi, [rdx+80h] +000AED76: lea rdx, [rbp+var_150] +000AED7D: mov rcx, rdx +000AED80: mov edx, 5 +000AED85: mov esi, eax +000AED87: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000AED8C: test al, al +000AED8E: jz short loc_AED97 +000AED90: mov eax, 1 +000AED95: jmp short loc_AED9C +000AED97: mov eax, 0 +000AED9C: mov [rbp+var_21], al +000AED9F: movzx eax, [rbp+var_21] +000AEDA3: xor eax, 1 +000AEDA6: test al, al +000AEDA8: jz short loc_AEDEF +000AEDAA: mov [rbp+var_F9], 0 +000AEDB5: mov [rbp+var_F1], 0 +000AEDBC: lea rdx, [rbp+var_F9] +000AEDC3: lea rcx, [rbp+var_F1] +000AEDCA: lea rax, [rbp+var_110] +000AEDD1: mov rsi, rcx +000AEDD4: mov rdi, rax +000AEDD7: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AEDDC: mov r12, [rbp+var_110] +000AEDE3: mov r13, [rbp+var_108] +000AEDEA: jmp loc_AF1C1 +000AEDEF: mov rax, [rbp+var_158] +000AEDF6: add rax, 8 +000AEDFA: mov rdi, rax +000AEDFD: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AEE02: test al, al +000AEE04: jz loc_AEEA4 +000AEE0A: lea rax, [rbp+var_150] +000AEE11: mov rdi, rax +000AEE14: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AEE19: mov rdx, rax +000AEE1C: lea rax, [rbp+var_F0] +000AEE23: mov rsi, rdx +000AEE26: mov rdi, rax +000AEE29: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AEE2E: mov rax, [rbp+var_158] +000AEE35: mov rax, [rax] +000AEE38: lea rdx, [rbp+var_F0] +000AEE3F: mov rsi, rdx +000AEE42: mov rdi, rax +000AEE45: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AEE4A: lea rax, [rbp+var_F0] +000AEE51: mov rdi, rax +000AEE54: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AEE59: mov rax, [rbp+var_158] +000AEE60: mov rax, [rax] +000AEE63: mov [rbp+var_D0], rax +000AEE6A: mov [rbp+var_C1], 1 +000AEE71: lea rdx, [rbp+var_D0] +000AEE78: lea rcx, [rbp+var_C1] +000AEE7F: lea rax, [rbp+var_E0] +000AEE86: mov rsi, rcx +000AEE89: mov rdi, rax +000AEE8C: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AEE91: mov r12, [rbp+var_E0] +000AEE98: mov r13, [rbp+var_D8] +000AEE9F: jmp loc_AF1C1 +000AEEA4: mov rax, [rbp+var_158] +000AEEAB: add rax, 8 +000AEEAF: mov rdi, rax +000AEEB2: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEEB7: mov rax, [rax] +000AEEBA: test rax, rax +000AEEBD: setz al +000AEEC0: test al, al +000AEEC2: jz short loc_AEF09 +000AEEC4: mov [rbp+var_A9], 0 +000AEECF: mov [rbp+var_A1], 0 +000AEED6: lea rdx, [rbp+var_A9] +000AEEDD: lea rcx, [rbp+var_A1] +000AEEE4: lea rax, [rbp+var_C0] +000AEEEB: mov rsi, rcx +000AEEEE: mov rdi, rax +000AEEF1: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AEEF6: mov r12, [rbp+var_C0] +000AEEFD: mov r13, [rbp+var_B8] +000AEF04: jmp loc_AF1C1 +000AEF09: mov rax, [rbp+var_158] +000AEF10: add rax, 8 +000AEF14: mov rdi, rax +000AEF17: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEF1C: mov rax, [rax] +000AEF1F: mov rdi, rax +000AEF22: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AEF27: xor eax, 1 +000AEF2A: test al, al +000AEF2C: jz short loc_AEF72 +000AEF2E: mov rax, [rbp+var_158] +000AEF35: add rax, 8 +000AEF39: mov rdi, rax +000AEF3C: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEF41: mov rax, [rax] +000AEF44: mov rdi, rax +000AEF47: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AEF4C: xor eax, 1 +000AEF4F: test al, al +000AEF51: jz short loc_AEF72 +000AEF53: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AEF5A: mov edx, 1677h; line +000AEF5F: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AEF66: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AEF6D: call ___assert_fail +000AEF72: mov rax, [rbp+var_158] +000AEF79: add rax, 8 +000AEF7D: mov rdi, rax +000AEF80: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEF85: mov rax, [rax] +000AEF88: mov rdi, rax +000AEF8B: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AEF90: test al, al +000AEF92: jz loc_AF032 +000AEF98: lea rax, [rbp+var_150] +000AEF9F: mov rdi, rax +000AEFA2: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AEFA7: mov rbx, rax +000AEFAA: mov rax, [rbp+var_158] +000AEFB1: add rax, 8 +000AEFB5: mov rdi, rax +000AEFB8: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEFBD: mov rax, [rax] +000AEFC0: mov rax, [rax+8] +000AEFC4: mov rsi, rbx +000AEFC7: mov rdi, rax +000AEFCA: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000AEFCF: mov rax, [rbp+var_158] +000AEFD6: add rax, 8 +000AEFDA: mov rdi, rax +000AEFDD: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AEFE2: mov rax, [rax] +000AEFE5: mov rax, [rax+8] +000AEFE9: mov rdi, rax +000AEFEC: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AEFF1: mov [rbp+var_90], rax +000AEFF8: mov [rbp+var_81], 1 +000AEFFF: lea rdx, [rbp+var_90] +000AF006: lea rcx, [rbp+var_81] +000AF00D: lea rax, [rbp+var_A0] +000AF014: mov rsi, rcx +000AF017: mov rdi, rax +000AF01A: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AF01F: mov r12, [rbp+var_A0] +000AF026: mov r13, [rbp+var_98] +000AF02D: jmp loc_AF1C1 +000AF032: mov rax, [rbp+var_158] +000AF039: add rax, 8 +000AF03D: mov rdi, rax +000AF040: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF045: mov rax, [rax] +000AF048: mov rdi, rax +000AF04B: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AF050: test al, al +000AF052: jnz short loc_AF073 +000AF054: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF05B: mov edx, 1681h; line +000AF060: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF067: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AF06E: call ___assert_fail +000AF073: mov rax, [rbp+var_158] +000AF07A: add rax, 48h ; 'H' +000AF07E: mov rdi, rax +000AF081: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AF086: test al, al +000AF088: jz short loc_AF0A9 +000AF08A: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF091: mov edx, 1683h; line +000AF096: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF09D: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000AF0A4: call ___assert_fail +000AF0A9: mov rax, [rbp+var_158] +000AF0B0: add rax, 48h ; 'H' +000AF0B4: mov rdi, rax +000AF0B7: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AF0BC: mov [rbp+var_80], rax +000AF0C0: mov [rbp+var_78], rdx +000AF0C4: lea rax, [rbp+var_80] +000AF0C8: mov rdi, rax +000AF0CB: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AF0D0: mov [rbp+var_22], al +000AF0D3: mov rax, [rbp+var_158] +000AF0DA: add rax, 48h ; 'H' +000AF0DE: mov rdi, rax +000AF0E1: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000AF0E6: movzx eax, [rbp+var_22] +000AF0EA: xor eax, 1 +000AF0ED: test al, al +000AF0EF: jz short loc_AF121 +000AF0F1: mov [rbp+var_59], 0 +000AF0F9: mov [rbp+var_51], 0 +000AF0FD: lea rdx, [rbp+var_59] +000AF101: lea rcx, [rbp+var_51] +000AF105: lea rax, [rbp+var_70] +000AF109: mov rsi, rcx +000AF10C: mov rdi, rax +000AF10F: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AF114: mov r12, [rbp+var_70] +000AF118: mov r13, [rbp+var_68] +000AF11C: jmp loc_AF1C1 +000AF121: mov rax, [rbp+var_158] +000AF128: mov rax, [rax+70h] +000AF12C: test rax, rax +000AF12F: jnz short loc_AF150 +000AF131: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF138: mov edx, 168Ch; line +000AF13D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF144: lea rdi, aObjectElement; "object_element" +000AF14B: call ___assert_fail +000AF150: lea rax, [rbp+var_150] +000AF157: mov rdi, rax +000AF15A: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AF15F: mov rdx, rax +000AF162: lea rax, [rbp+var_50] +000AF166: mov rsi, rdx +000AF169: mov rdi, rax +000AF16C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AF171: mov rax, [rbp+var_158] +000AF178: mov rax, [rax+70h] +000AF17C: lea rdx, [rbp+var_50] +000AF180: mov rsi, rdx +000AF183: mov rdi, rax +000AF186: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AF18B: lea rax, [rbp+var_50] +000AF18F: mov rdi, rax +000AF192: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF197: mov rax, [rbp+var_158] +000AF19E: lea rdx, [rax+70h] +000AF1A2: mov [rbp+var_23], 1 +000AF1A6: lea rcx, [rbp+var_23] +000AF1AA: lea rax, [rbp+var_40] +000AF1AE: mov rsi, rcx +000AF1B1: mov rdi, rax +000AF1B4: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000AF1B9: mov r12, [rbp+var_40] +000AF1BD: mov r13, [rbp+var_38] +000AF1C1: lea rax, [rbp+var_150] +000AF1C8: mov rdi, rax +000AF1CB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF1D0: mov rcx, r12 +000AF1D3: mov rbx, r13 +000AF1D6: mov rax, r12 +000AF1D9: mov rdx, r13 +000AF1DC: jmp short loc_AF1FB +000AF1DE: mov rbx, rax +000AF1E1: lea rax, [rbp+var_150] +000AF1E8: mov rdi, rax +000AF1EB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF1F0: mov rax, rbx +000AF1F3: mov rdi, rax; struct _Unwind_Exception * +000AF1F6: call __Unwind_Resume +000AF1FB: mov eax, ecx +000AF1FD: add rsp, 158h +000AF204: pop rbx +000AF205: pop r12 +000AF207: pop r13 +000AF209: pop rbp +000AF20A: retn + +### FUNC 000AF20B - 000AF219 (14 bytes) name=_ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE +000AF20B: push rbp +000AF20C: mov rbp, rsp +000AF20F: mov [rbp+var_8], rdi +000AF213: mov rax, [rbp+var_8] +000AF217: pop rbp +000AF218: retn + +### FUNC 000AF21A - 000AF7D5 (1467 bytes) name=_ZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_b +000AF21A: push rbp +000AF21B: mov rbp, rsp +000AF21E: push r13 +000AF220: push r12 +000AF222: push rbx +000AF223: sub rsp, 158h +000AF22A: mov [rbp+var_158], rdi +000AF231: mov [rbp+var_160], rsi +000AF238: mov eax, edx +000AF23A: mov [rbp+var_164], al +000AF240: mov rax, [rbp+var_158] +000AF247: add rax, 20h ; ' ' +000AF24B: mov rdi, rax +000AF24E: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AF253: test al, al +000AF255: jz short loc_AF276 +000AF257: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF25E: mov edx, 1654h; line +000AF263: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF26A: lea rdi, aKeepStackEmpty; "!keep_stack.empty()" +000AF271: call ___assert_fail +000AF276: mov rax, [rbp+var_158] +000AF27D: add rax, 20h ; ' ' +000AF281: mov rdi, rax +000AF284: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AF289: mov [rbp+var_140], rax +000AF290: mov [rbp+var_138], rdx +000AF297: lea rax, [rbp+var_140] +000AF29E: mov rdi, rax +000AF2A1: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AF2A6: xor eax, 1 +000AF2A9: test al, al +000AF2AB: jz short loc_AF2F2 +000AF2AD: mov [rbp+var_119], 0 +000AF2B8: mov [rbp+var_111], 0 +000AF2BF: lea rdx, [rbp+var_119] +000AF2C6: lea rcx, [rbp+var_111] +000AF2CD: lea rax, [rbp+var_130] +000AF2D4: mov rsi, rcx +000AF2D7: mov rdi, rax +000AF2DA: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AF2DF: mov r12, [rbp+var_130] +000AF2E6: mov r13, [rbp+var_128] +000AF2ED: jmp loc_AF79A +000AF2F2: mov rax, [rbp+var_160] +000AF2F9: mov rdi, rax +000AF2FC: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AF301: mov rdx, rax +000AF304: lea rax, [rbp+var_150] +000AF30B: mov rsi, rdx +000AF30E: mov rdi, rax +000AF311: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_; nlohmann::basic_json>>::basic_json(ulong &) +000AF316: cmp [rbp+var_164], 0 +000AF31D: jnz short loc_AF35A +000AF31F: mov rax, [rbp+var_158] +000AF326: add rax, 8 +000AF32A: mov rdi, rax +000AF32D: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000AF332: mov rdx, [rbp+var_158] +000AF339: lea rdi, [rdx+80h] +000AF340: lea rdx, [rbp+var_150] +000AF347: mov rcx, rdx +000AF34A: mov edx, 5 +000AF34F: mov esi, eax +000AF351: call __ZNKSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEEclEiS2_SA_; std::function>> &)>::operator()(int,nlohmann::detail::parse_event_t,nlohmann::basic_json>> &) +000AF356: test al, al +000AF358: jz short loc_AF361 +000AF35A: mov eax, 1 +000AF35F: jmp short loc_AF366 +000AF361: mov eax, 0 +000AF366: mov [rbp+var_21], al +000AF369: movzx eax, [rbp+var_21] +000AF36D: xor eax, 1 +000AF370: test al, al +000AF372: jz short loc_AF3B9 +000AF374: mov [rbp+var_F9], 0 +000AF37F: mov [rbp+var_F1], 0 +000AF386: lea rdx, [rbp+var_F9] +000AF38D: lea rcx, [rbp+var_F1] +000AF394: lea rax, [rbp+var_110] +000AF39B: mov rsi, rcx +000AF39E: mov rdi, rax +000AF3A1: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AF3A6: mov r12, [rbp+var_110] +000AF3AD: mov r13, [rbp+var_108] +000AF3B4: jmp loc_AF78B +000AF3B9: mov rax, [rbp+var_158] +000AF3C0: add rax, 8 +000AF3C4: mov rdi, rax +000AF3C7: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AF3CC: test al, al +000AF3CE: jz loc_AF46E +000AF3D4: lea rax, [rbp+var_150] +000AF3DB: mov rdi, rax +000AF3DE: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AF3E3: mov rdx, rax +000AF3E6: lea rax, [rbp+var_F0] +000AF3ED: mov rsi, rdx +000AF3F0: mov rdi, rax +000AF3F3: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AF3F8: mov rax, [rbp+var_158] +000AF3FF: mov rax, [rax] +000AF402: lea rdx, [rbp+var_F0] +000AF409: mov rsi, rdx +000AF40C: mov rdi, rax +000AF40F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AF414: lea rax, [rbp+var_F0] +000AF41B: mov rdi, rax +000AF41E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF423: mov rax, [rbp+var_158] +000AF42A: mov rax, [rax] +000AF42D: mov [rbp+var_D0], rax +000AF434: mov [rbp+var_C1], 1 +000AF43B: lea rdx, [rbp+var_D0] +000AF442: lea rcx, [rbp+var_C1] +000AF449: lea rax, [rbp+var_E0] +000AF450: mov rsi, rcx +000AF453: mov rdi, rax +000AF456: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AF45B: mov r12, [rbp+var_E0] +000AF462: mov r13, [rbp+var_D8] +000AF469: jmp loc_AF78B +000AF46E: mov rax, [rbp+var_158] +000AF475: add rax, 8 +000AF479: mov rdi, rax +000AF47C: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF481: mov rax, [rax] +000AF484: test rax, rax +000AF487: setz al +000AF48A: test al, al +000AF48C: jz short loc_AF4D3 +000AF48E: mov [rbp+var_A9], 0 +000AF499: mov [rbp+var_A1], 0 +000AF4A0: lea rdx, [rbp+var_A9] +000AF4A7: lea rcx, [rbp+var_A1] +000AF4AE: lea rax, [rbp+var_C0] +000AF4B5: mov rsi, rcx +000AF4B8: mov rdi, rax +000AF4BB: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AF4C0: mov r12, [rbp+var_C0] +000AF4C7: mov r13, [rbp+var_B8] +000AF4CE: jmp loc_AF78B +000AF4D3: mov rax, [rbp+var_158] +000AF4DA: add rax, 8 +000AF4DE: mov rdi, rax +000AF4E1: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF4E6: mov rax, [rax] +000AF4E9: mov rdi, rax +000AF4EC: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AF4F1: xor eax, 1 +000AF4F4: test al, al +000AF4F6: jz short loc_AF53C +000AF4F8: mov rax, [rbp+var_158] +000AF4FF: add rax, 8 +000AF503: mov rdi, rax +000AF506: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF50B: mov rax, [rax] +000AF50E: mov rdi, rax +000AF511: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AF516: xor eax, 1 +000AF519: test al, al +000AF51B: jz short loc_AF53C +000AF51D: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF524: mov edx, 1677h; line +000AF529: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF530: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AF537: call ___assert_fail +000AF53C: mov rax, [rbp+var_158] +000AF543: add rax, 8 +000AF547: mov rdi, rax +000AF54A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF54F: mov rax, [rax] +000AF552: mov rdi, rax +000AF555: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AF55A: test al, al +000AF55C: jz loc_AF5FC +000AF562: lea rax, [rbp+var_150] +000AF569: mov rdi, rax +000AF56C: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AF571: mov rbx, rax +000AF574: mov rax, [rbp+var_158] +000AF57B: add rax, 8 +000AF57F: mov rdi, rax +000AF582: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF587: mov rax, [rax] +000AF58A: mov rax, [rax+8] +000AF58E: mov rsi, rbx +000AF591: mov rdi, rax +000AF594: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000AF599: mov rax, [rbp+var_158] +000AF5A0: add rax, 8 +000AF5A4: mov rdi, rax +000AF5A7: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF5AC: mov rax, [rax] +000AF5AF: mov rax, [rax+8] +000AF5B3: mov rdi, rax +000AF5B6: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AF5BB: mov [rbp+var_90], rax +000AF5C2: mov [rbp+var_81], 1 +000AF5C9: lea rdx, [rbp+var_90] +000AF5D0: lea rcx, [rbp+var_81] +000AF5D7: lea rax, [rbp+var_A0] +000AF5DE: mov rsi, rcx +000AF5E1: mov rdi, rax +000AF5E4: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbS8_vEEOT_OT0_; std::pair>> *>::pair>> *,void>(bool &&,nlohmann::basic_json>> * &&) +000AF5E9: mov r12, [rbp+var_A0] +000AF5F0: mov r13, [rbp+var_98] +000AF5F7: jmp loc_AF78B +000AF5FC: mov rax, [rbp+var_158] +000AF603: add rax, 8 +000AF607: mov rdi, rax +000AF60A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF60F: mov rax, [rax] +000AF612: mov rdi, rax +000AF615: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AF61A: test al, al +000AF61C: jnz short loc_AF63D +000AF61E: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF625: mov edx, 1681h; line +000AF62A: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF631: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AF638: call ___assert_fail +000AF63D: mov rax, [rbp+var_158] +000AF644: add rax, 48h ; 'H' +000AF648: mov rdi, rax +000AF64B: call __ZNKSt6vectorIbSaIbEE5emptyEv; std::vector>::empty(void) +000AF650: test al, al +000AF652: jz short loc_AF673 +000AF654: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF65B: mov edx, 1683h; line +000AF660: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF667: lea rdi, aKeyKeepStackEm; "!key_keep_stack.empty()" +000AF66E: call ___assert_fail +000AF673: mov rax, [rbp+var_158] +000AF67A: add rax, 48h ; 'H' +000AF67E: mov rdi, rax +000AF681: call __ZNSt6vectorIbSaIbEE4backEv; std::vector>::back(void) +000AF686: mov [rbp+var_80], rax +000AF68A: mov [rbp+var_78], rdx +000AF68E: lea rax, [rbp+var_80] +000AF692: mov rdi, rax +000AF695: call __ZNKSt14_Bit_referencecvbEv; std::_Bit_reference::operator bool(void) +000AF69A: mov [rbp+var_22], al +000AF69D: mov rax, [rbp+var_158] +000AF6A4: add rax, 48h ; 'H' +000AF6A8: mov rdi, rax +000AF6AB: call __ZNSt6vectorIbSaIbEE8pop_backEv; std::vector>::pop_back(void) +000AF6B0: movzx eax, [rbp+var_22] +000AF6B4: xor eax, 1 +000AF6B7: test al, al +000AF6B9: jz short loc_AF6EB +000AF6BB: mov [rbp+var_59], 0 +000AF6C3: mov [rbp+var_51], 0 +000AF6C7: lea rdx, [rbp+var_59] +000AF6CB: lea rcx, [rbp+var_51] +000AF6CF: lea rax, [rbp+var_70] +000AF6D3: mov rsi, rcx +000AF6D6: mov rdi, rax +000AF6D9: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbDnvEEOT_OT0_; std::pair>> *>::pair(bool &&,decltype(nullptr) &&) +000AF6DE: mov r12, [rbp+var_70] +000AF6E2: mov r13, [rbp+var_68] +000AF6E6: jmp loc_AF78B +000AF6EB: mov rax, [rbp+var_158] +000AF6F2: mov rax, [rax+70h] +000AF6F6: test rax, rax +000AF6F9: jnz short loc_AF71A +000AF6FB: lea rcx, _ZZN8nlohmann6detail28json_sax_dom_callback_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEESt4pairIbPS8_EOT_bE19__PRETTY_FUNCTION__; "std::pair nlohman"... +000AF702: mov edx, 168Ch; line +000AF707: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF70E: lea rdi, aObjectElement; "object_element" +000AF715: call ___assert_fail +000AF71A: lea rax, [rbp+var_150] +000AF721: mov rdi, rax +000AF724: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000AF729: mov rdx, rax +000AF72C: lea rax, [rbp+var_50] +000AF730: mov rsi, rdx +000AF733: mov rdi, rax +000AF736: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000AF73B: mov rax, [rbp+var_158] +000AF742: mov rax, [rax+70h] +000AF746: lea rdx, [rbp+var_50] +000AF74A: mov rsi, rdx +000AF74D: mov rdi, rax +000AF750: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AF755: lea rax, [rbp+var_50] +000AF759: mov rdi, rax +000AF75C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF761: mov rax, [rbp+var_158] +000AF768: lea rdx, [rax+70h] +000AF76C: mov [rbp+var_23], 1 +000AF770: lea rcx, [rbp+var_23] +000AF774: lea rax, [rbp+var_40] +000AF778: mov rsi, rcx +000AF77B: mov rdi, rax +000AF77E: call __ZNSt4pairIbPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2IbRS8_vEEOT_OT0_; std::pair>> *>::pair>> *&,void>(bool &&,nlohmann::basic_json>> *&) +000AF783: mov r12, [rbp+var_40] +000AF787: mov r13, [rbp+var_38] +000AF78B: lea rax, [rbp+var_150] +000AF792: mov rdi, rax +000AF795: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF79A: mov rcx, r12 +000AF79D: mov rbx, r13 +000AF7A0: mov rax, r12 +000AF7A3: mov rdx, r13 +000AF7A6: jmp short loc_AF7C5 +000AF7A8: mov rbx, rax +000AF7AB: lea rax, [rbp+var_150] +000AF7B2: mov rdi, rax +000AF7B5: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF7BA: mov rax, rbx +000AF7BD: mov rdi, rax; struct _Unwind_Exception * +000AF7C0: call __Unwind_Resume +000AF7C5: mov eax, ecx +000AF7C7: add rsp, 158h +000AF7CE: pop rbx +000AF7CF: pop r12 +000AF7D1: pop r13 +000AF7D3: pop rbp +000AF7D4: retn + +### FUNC 000AF7D6 - 000AF813 (61 bytes) name=_ZNKSt6vectorIbSaIbEE3endEv +000AF7D6: push rbp +000AF7D7: mov rbp, rsp +000AF7DA: sub rsp, 40h +000AF7DE: mov [rbp+var_28], rdi +000AF7E2: mov rax, [rbp+var_28] +000AF7E6: lea rdx, [rax+10h] +000AF7EA: lea rax, [rbp+var_10] +000AF7EE: mov rsi, rdx; std::_Bit_iterator * +000AF7F1: mov rdi, rax; this +000AF7F4: call __ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator; std::_Bit_const_iterator::_Bit_const_iterator(std::_Bit_iterator const&) +000AF7F9: mov rax, [rbp+var_10] +000AF7FD: mov [rbp+var_20], rax +000AF801: mov rax, [rbp+var_8] +000AF805: mov [rbp+var_18], rax +000AF809: mov rax, [rbp+var_20] +000AF80D: mov rdx, [rbp+var_18] +000AF811: leave +000AF812: retn + +### FUNC 000AF814 - 000AF84D (57 bytes) name=_ZNKSt6vectorIbSaIbEE5beginEv +000AF814: push rbp +000AF815: mov rbp, rsp +000AF818: sub rsp, 40h +000AF81C: mov [rbp+var_28], rdi +000AF820: mov rdx, [rbp+var_28] +000AF824: lea rax, [rbp+var_10] +000AF828: mov rsi, rdx; std::_Bit_iterator * +000AF82B: mov rdi, rax; this +000AF82E: call __ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator; std::_Bit_const_iterator::_Bit_const_iterator(std::_Bit_iterator const&) +000AF833: mov rax, [rbp+var_10] +000AF837: mov [rbp+var_20], rax +000AF83B: mov rax, [rbp+var_8] +000AF83F: mov [rbp+var_18], rax +000AF843: mov rax, [rbp+var_20] +000AF847: mov rdx, [rbp+var_18] +000AF84B: leave +000AF84C: retn + +### FUNC 000AF84D - 000AF85B (14 bytes) name=_ZSt11__addressofIcEPT_RS0_ +000AF84D: push rbp +000AF84E: mov rbp, rsp +000AF851: mov [rbp+var_8], rdi +000AF855: mov rax, [rbp+var_8] +000AF859: pop rbp +000AF85A: retn + +### FUNC 000AF85C - 000AFA5C (512 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_ +000AF85C: push rbp +000AF85D: mov rbp, rsp +000AF860: push rbx +000AF861: sub rsp, 38h +000AF865: mov [rbp+var_38], rdi +000AF869: mov [rbp+var_40], rsi +000AF86D: mov rax, [rbp+var_38] +000AF871: add rax, 8 +000AF875: mov rdi, rax +000AF878: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AF87D: test al, al +000AF87F: jz short loc_AF8CC +000AF881: mov rax, [rbp+var_40] +000AF885: mov rdi, rax +000AF888: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000AF88D: movzx edx, byte ptr [rax] +000AF890: lea rax, [rbp+var_30] +000AF894: mov esi, edx +000AF896: mov rdi, rax +000AF899: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +000AF89E: mov rax, [rbp+var_38] +000AF8A2: mov rax, [rax] +000AF8A5: lea rdx, [rbp+var_30] +000AF8A9: mov rsi, rdx +000AF8AC: mov rdi, rax +000AF8AF: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AF8B4: lea rax, [rbp+var_30] +000AF8B8: mov rdi, rax +000AF8BB: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AF8C0: mov rax, [rbp+var_38] +000AF8C4: mov rax, [rax] +000AF8C7: jmp loc_AFA55 +000AF8CC: mov rax, [rbp+var_38] +000AF8D0: add rax, 8 +000AF8D4: mov rdi, rax +000AF8D7: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF8DC: mov rax, [rax] +000AF8DF: mov rdi, rax +000AF8E2: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AF8E7: xor eax, 1 +000AF8EA: test al, al +000AF8EC: jz short loc_AF92F +000AF8EE: mov rax, [rbp+var_38] +000AF8F2: add rax, 8 +000AF8F6: mov rdi, rax +000AF8F9: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF8FE: mov rax, [rax] +000AF901: mov rdi, rax +000AF904: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AF909: xor eax, 1 +000AF90C: test al, al +000AF90E: jz short loc_AF92F +000AF910: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AF917: mov edx, 1563h; line +000AF91C: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF923: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AF92A: call ___assert_fail +000AF92F: mov rax, [rbp+var_38] +000AF933: add rax, 8 +000AF937: mov rdi, rax +000AF93A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF93F: mov rax, [rax] +000AF942: mov rdi, rax +000AF945: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AF94A: test al, al +000AF94C: jz short loc_AF9A3 +000AF94E: mov rax, [rbp+var_40] +000AF952: mov rdi, rax +000AF955: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000AF95A: mov rbx, rax +000AF95D: mov rax, [rbp+var_38] +000AF961: add rax, 8 +000AF965: mov rdi, rax +000AF968: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF96D: mov rax, [rax] +000AF970: mov rax, [rax+8] +000AF974: mov rsi, rbx +000AF977: mov rdi, rax +000AF97A: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJNS0_6detail7value_tEEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(nlohmann::detail::value_t &&) +000AF97F: mov rax, [rbp+var_38] +000AF983: add rax, 8 +000AF987: mov rdi, rax +000AF98A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF98F: mov rax, [rax] +000AF992: mov rax, [rax+8] +000AF996: mov rdi, rax +000AF999: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AF99E: jmp loc_AFA55 +000AF9A3: mov rax, [rbp+var_38] +000AF9A7: add rax, 8 +000AF9AB: mov rdi, rax +000AF9AE: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AF9B3: mov rax, [rax] +000AF9B6: mov rdi, rax +000AF9B9: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AF9BE: test al, al +000AF9C0: jnz short loc_AF9E1 +000AF9C2: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AF9C9: mov edx, 156Bh; line +000AF9CE: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AF9D5: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AF9DC: call ___assert_fail +000AF9E1: mov rax, [rbp+var_38] +000AF9E5: mov rax, [rax+20h] +000AF9E9: test rax, rax +000AF9EC: jnz short loc_AFA0D +000AF9EE: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueINS0_7value_tEEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AF9F5: mov edx, 156Ch; line +000AF9FA: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFA01: lea rdi, aObjectElement; "object_element" +000AFA08: call ___assert_fail +000AFA0D: mov rax, [rbp+var_40] +000AFA11: mov rdi, rax +000AFA14: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000AFA19: movzx edx, byte ptr [rax] +000AFA1C: lea rax, [rbp+var_20] +000AFA20: mov esi, edx +000AFA22: mov rdi, rax +000AFA25: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +000AFA2A: mov rax, [rbp+var_38] +000AFA2E: mov rax, [rax+20h] +000AFA32: lea rdx, [rbp+var_20] +000AFA36: mov rsi, rdx +000AFA39: mov rdi, rax +000AFA3C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AFA41: lea rax, [rbp+var_20] +000AFA45: mov rdi, rax +000AFA48: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AFA4D: mov rax, [rbp+var_38] +000AFA51: mov rax, [rax+20h] +000AFA55: add rsp, 38h +000AFA59: pop rbx +000AFA5A: pop rbp +000AFA5B: retn + +### FUNC 000AFA5C - 000AFA6A (14 bytes) name=_ZSt4moveIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSB_ +000AFA5C: push rbp +000AFA5D: mov rbp, rsp +000AFA60: mov [rbp+var_8], rdi +000AFA64: mov rax, [rbp+var_8] +000AFA68: pop rbp +000AFA69: retn + +### FUNC 000AFA6A - 000AFA9A (48 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE9push_backEOS7_ +000AFA6A: push rbp +000AFA6B: mov rbp, rsp +000AFA6E: sub rsp, 10h +000AFA72: mov [rbp+var_8], rdi +000AFA76: mov [rbp+var_10], rsi +000AFA7A: mov rax, [rbp+var_10] +000AFA7E: mov rdi, rax +000AFA81: call __ZSt4moveIRPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSB_; std::move>> *&>(nlohmann::basic_json>> *&&&) +000AFA86: mov rdx, rax +000AFA89: mov rax, [rbp+var_8] +000AFA8D: mov rsi, rdx +000AFA90: mov rdi, rax +000AFA93: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12emplace_backIJS7_EEEvDpOT_; std::vector>> *,std::allocator>> *>>::emplace_back>> *>(nlohmann::basic_json>> * &&) +000AFA98: leave +000AFA99: retn + +### FUNC 000AFA9A - 000AFC9C (514 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_ +000AFA9A: push rbp +000AFA9B: mov rbp, rsp +000AFA9E: push rbx +000AFA9F: sub rsp, 38h +000AFAA3: mov [rbp+var_38], rdi +000AFAA7: mov [rbp+var_40], rsi +000AFAAB: mov rax, [rbp+var_38] +000AFAAF: add rax, 8 +000AFAB3: mov rdi, rax +000AFAB6: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AFABB: test al, al +000AFABD: jz short loc_AFB0B +000AFABF: mov rax, [rbp+var_40] +000AFAC3: mov rdi, rax +000AFAC6: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFACB: mov rdx, rax +000AFACE: lea rax, [rbp+var_30] +000AFAD2: mov rsi, rdx +000AFAD5: mov rdi, rax +000AFAD8: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_; nlohmann::basic_json>>::basic_json(double &) +000AFADD: mov rax, [rbp+var_38] +000AFAE1: mov rax, [rax] +000AFAE4: lea rdx, [rbp+var_30] +000AFAE8: mov rsi, rdx +000AFAEB: mov rdi, rax +000AFAEE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AFAF3: lea rax, [rbp+var_30] +000AFAF7: mov rdi, rax +000AFAFA: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AFAFF: mov rax, [rbp+var_38] +000AFB03: mov rax, [rax] +000AFB06: jmp loc_AFC95 +000AFB0B: mov rax, [rbp+var_38] +000AFB0F: add rax, 8 +000AFB13: mov rdi, rax +000AFB16: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFB1B: mov rax, [rax] +000AFB1E: mov rdi, rax +000AFB21: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AFB26: xor eax, 1 +000AFB29: test al, al +000AFB2B: jz short loc_AFB6E +000AFB2D: mov rax, [rbp+var_38] +000AFB31: add rax, 8 +000AFB35: mov rdi, rax +000AFB38: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFB3D: mov rax, [rax] +000AFB40: mov rdi, rax +000AFB43: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AFB48: xor eax, 1 +000AFB4B: test al, al +000AFB4D: jz short loc_AFB6E +000AFB4F: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFB56: mov edx, 1563h; line +000AFB5B: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFB62: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AFB69: call ___assert_fail +000AFB6E: mov rax, [rbp+var_38] +000AFB72: add rax, 8 +000AFB76: mov rdi, rax +000AFB79: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFB7E: mov rax, [rax] +000AFB81: mov rdi, rax +000AFB84: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AFB89: test al, al +000AFB8B: jz short loc_AFBE2 +000AFB8D: mov rax, [rbp+var_40] +000AFB91: mov rdi, rax +000AFB94: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFB99: mov rbx, rax +000AFB9C: mov rax, [rbp+var_38] +000AFBA0: add rax, 8 +000AFBA4: mov rdi, rax +000AFBA7: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFBAC: mov rax, [rax] +000AFBAF: mov rax, [rax+8] +000AFBB3: mov rsi, rbx +000AFBB6: mov rdi, rax +000AFBB9: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRdEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(double &) +000AFBBE: mov rax, [rbp+var_38] +000AFBC2: add rax, 8 +000AFBC6: mov rdi, rax +000AFBC9: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFBCE: mov rax, [rax] +000AFBD1: mov rax, [rax+8] +000AFBD5: mov rdi, rax +000AFBD8: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AFBDD: jmp loc_AFC95 +000AFBE2: mov rax, [rbp+var_38] +000AFBE6: add rax, 8 +000AFBEA: mov rdi, rax +000AFBED: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFBF2: mov rax, [rax] +000AFBF5: mov rdi, rax +000AFBF8: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AFBFD: test al, al +000AFBFF: jnz short loc_AFC20 +000AFC01: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFC08: mov edx, 156Bh; line +000AFC0D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFC14: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AFC1B: call ___assert_fail +000AFC20: mov rax, [rbp+var_38] +000AFC24: mov rax, [rax+20h] +000AFC28: test rax, rax +000AFC2B: jnz short loc_AFC4C +000AFC2D: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRdEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFC34: mov edx, 156Ch; line +000AFC39: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFC40: lea rdi, aObjectElement; "object_element" +000AFC47: call ___assert_fail +000AFC4C: mov rax, [rbp+var_40] +000AFC50: mov rdi, rax +000AFC53: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFC58: mov rdx, rax +000AFC5B: lea rax, [rbp+var_20] +000AFC5F: mov rsi, rdx +000AFC62: mov rdi, rax +000AFC65: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_; nlohmann::basic_json>>::basic_json(double &) +000AFC6A: mov rax, [rbp+var_38] +000AFC6E: mov rax, [rax+20h] +000AFC72: lea rdx, [rbp+var_20] +000AFC76: mov rsi, rdx +000AFC79: mov rdi, rax +000AFC7C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AFC81: lea rax, [rbp+var_20] +000AFC85: mov rdi, rax +000AFC88: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AFC8D: mov rax, [rbp+var_38] +000AFC91: mov rax, [rax+20h] +000AFC95: add rsp, 38h +000AFC99: pop rbx +000AFC9A: pop rbp +000AFC9B: retn + +### FUNC 000AFC9C - 000AFE9E (514 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_ +000AFC9C: push rbp +000AFC9D: mov rbp, rsp +000AFCA0: push rbx +000AFCA1: sub rsp, 38h +000AFCA5: mov [rbp+var_38], rdi +000AFCA9: mov [rbp+var_40], rsi +000AFCAD: mov rax, [rbp+var_38] +000AFCB1: add rax, 8 +000AFCB5: mov rdi, rax +000AFCB8: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AFCBD: test al, al +000AFCBF: jz short loc_AFD0D +000AFCC1: mov rax, [rbp+var_40] +000AFCC5: mov rdi, rax +000AFCC8: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFCCD: mov rdx, rax +000AFCD0: lea rax, [rbp+var_30] +000AFCD4: mov rsi, rdx +000AFCD7: mov rdi, rax +000AFCDA: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_; nlohmann::basic_json>>::basic_json(bool &) +000AFCDF: mov rax, [rbp+var_38] +000AFCE3: mov rax, [rax] +000AFCE6: lea rdx, [rbp+var_30] +000AFCEA: mov rsi, rdx +000AFCED: mov rdi, rax +000AFCF0: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AFCF5: lea rax, [rbp+var_30] +000AFCF9: mov rdi, rax +000AFCFC: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AFD01: mov rax, [rbp+var_38] +000AFD05: mov rax, [rax] +000AFD08: jmp loc_AFE97 +000AFD0D: mov rax, [rbp+var_38] +000AFD11: add rax, 8 +000AFD15: mov rdi, rax +000AFD18: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFD1D: mov rax, [rax] +000AFD20: mov rdi, rax +000AFD23: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AFD28: xor eax, 1 +000AFD2B: test al, al +000AFD2D: jz short loc_AFD70 +000AFD2F: mov rax, [rbp+var_38] +000AFD33: add rax, 8 +000AFD37: mov rdi, rax +000AFD3A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFD3F: mov rax, [rax] +000AFD42: mov rdi, rax +000AFD45: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AFD4A: xor eax, 1 +000AFD4D: test al, al +000AFD4F: jz short loc_AFD70 +000AFD51: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFD58: mov edx, 1563h; line +000AFD5D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFD64: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AFD6B: call ___assert_fail +000AFD70: mov rax, [rbp+var_38] +000AFD74: add rax, 8 +000AFD78: mov rdi, rax +000AFD7B: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFD80: mov rax, [rax] +000AFD83: mov rdi, rax +000AFD86: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AFD8B: test al, al +000AFD8D: jz short loc_AFDE4 +000AFD8F: mov rax, [rbp+var_40] +000AFD93: mov rdi, rax +000AFD96: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFD9B: mov rbx, rax +000AFD9E: mov rax, [rbp+var_38] +000AFDA2: add rax, 8 +000AFDA6: mov rdi, rax +000AFDA9: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFDAE: mov rax, [rax] +000AFDB1: mov rax, [rax+8] +000AFDB5: mov rsi, rbx +000AFDB8: mov rdi, rax +000AFDBB: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRbEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(bool &) +000AFDC0: mov rax, [rbp+var_38] +000AFDC4: add rax, 8 +000AFDC8: mov rdi, rax +000AFDCB: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFDD0: mov rax, [rax] +000AFDD3: mov rax, [rax+8] +000AFDD7: mov rdi, rax +000AFDDA: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AFDDF: jmp loc_AFE97 +000AFDE4: mov rax, [rbp+var_38] +000AFDE8: add rax, 8 +000AFDEC: mov rdi, rax +000AFDEF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFDF4: mov rax, [rax] +000AFDF7: mov rdi, rax +000AFDFA: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AFDFF: test al, al +000AFE01: jnz short loc_AFE22 +000AFE03: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFE0A: mov edx, 156Bh; line +000AFE0F: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFE16: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000AFE1D: call ___assert_fail +000AFE22: mov rax, [rbp+var_38] +000AFE26: mov rax, [rax+20h] +000AFE2A: test rax, rax +000AFE2D: jnz short loc_AFE4E +000AFE2F: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRbEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFE36: mov edx, 156Ch; line +000AFE3B: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFE42: lea rdi, aObjectElement; "object_element" +000AFE49: call ___assert_fail +000AFE4E: mov rax, [rbp+var_40] +000AFE52: mov rdi, rax +000AFE55: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFE5A: mov rdx, rax +000AFE5D: lea rax, [rbp+var_20] +000AFE61: mov rsi, rdx +000AFE64: mov rdi, rax +000AFE67: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_; nlohmann::basic_json>>::basic_json(bool &) +000AFE6C: mov rax, [rbp+var_38] +000AFE70: mov rax, [rax+20h] +000AFE74: lea rdx, [rbp+var_20] +000AFE78: mov rsi, rdx +000AFE7B: mov rdi, rax +000AFE7E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AFE83: lea rax, [rbp+var_20] +000AFE87: mov rdi, rax +000AFE8A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AFE8F: mov rax, [rbp+var_38] +000AFE93: mov rax, [rax+20h] +000AFE97: add rsp, 38h +000AFE9B: pop rbx +000AFE9C: pop rbp +000AFE9D: retn + +### FUNC 000AFE9E - 000B00A0 (514 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_ +000AFE9E: push rbp +000AFE9F: mov rbp, rsp +000AFEA2: push rbx +000AFEA3: sub rsp, 38h +000AFEA7: mov [rbp+var_38], rdi +000AFEAB: mov [rbp+var_40], rsi +000AFEAF: mov rax, [rbp+var_38] +000AFEB3: add rax, 8 +000AFEB7: mov rdi, rax +000AFEBA: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000AFEBF: test al, al +000AFEC1: jz short loc_AFF0F +000AFEC3: mov rax, [rbp+var_40] +000AFEC7: mov rdi, rax +000AFECA: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFECF: mov rdx, [rax] +000AFED2: lea rax, [rbp+var_30] +000AFED6: mov rsi, rdx +000AFED9: mov rdi, rax +000AFEDC: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +000AFEE1: mov rax, [rbp+var_38] +000AFEE5: mov rax, [rax] +000AFEE8: lea rdx, [rbp+var_30] +000AFEEC: mov rsi, rdx +000AFEEF: mov rdi, rax +000AFEF2: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000AFEF7: lea rax, [rbp+var_30] +000AFEFB: mov rdi, rax +000AFEFE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000AFF03: mov rax, [rbp+var_38] +000AFF07: mov rax, [rax] +000AFF0A: jmp loc_B0099 +000AFF0F: mov rax, [rbp+var_38] +000AFF13: add rax, 8 +000AFF17: mov rdi, rax +000AFF1A: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFF1F: mov rax, [rax] +000AFF22: mov rdi, rax +000AFF25: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AFF2A: xor eax, 1 +000AFF2D: test al, al +000AFF2F: jz short loc_AFF72 +000AFF31: mov rax, [rbp+var_38] +000AFF35: add rax, 8 +000AFF39: mov rdi, rax +000AFF3C: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFF41: mov rax, [rax] +000AFF44: mov rdi, rax +000AFF47: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000AFF4C: xor eax, 1 +000AFF4F: test al, al +000AFF51: jz short loc_AFF72 +000AFF53: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000AFF5A: mov edx, 1563h; line +000AFF5F: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000AFF66: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000AFF6D: call ___assert_fail +000AFF72: mov rax, [rbp+var_38] +000AFF76: add rax, 8 +000AFF7A: mov rdi, rax +000AFF7D: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFF82: mov rax, [rax] +000AFF85: mov rdi, rax +000AFF88: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000AFF8D: test al, al +000AFF8F: jz short loc_AFFE6 +000AFF91: mov rax, [rbp+var_40] +000AFF95: mov rdi, rax +000AFF98: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000AFF9D: mov rbx, rax +000AFFA0: mov rax, [rbp+var_38] +000AFFA4: add rax, 8 +000AFFA8: mov rdi, rax +000AFFAB: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFFB0: mov rax, [rax] +000AFFB3: mov rax, [rax+8] +000AFFB7: mov rsi, rbx +000AFFBA: mov rdi, rax +000AFFBD: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJDnEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(decltype(nullptr) &&) +000AFFC2: mov rax, [rbp+var_38] +000AFFC6: add rax, 8 +000AFFCA: mov rdi, rax +000AFFCD: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFFD2: mov rax, [rax] +000AFFD5: mov rax, [rax+8] +000AFFD9: mov rdi, rax +000AFFDC: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000AFFE1: jmp loc_B0099 +000AFFE6: mov rax, [rbp+var_38] +000AFFEA: add rax, 8 +000AFFEE: mov rdi, rax +000AFFF1: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000AFFF6: mov rax, [rax] +000AFFF9: mov rdi, rax +000AFFFC: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B0001: test al, al +000B0003: jnz short loc_B0024 +000B0005: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B000C: mov edx, 156Bh; line +000B0011: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B0018: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000B001F: call ___assert_fail +000B0024: mov rax, [rbp+var_38] +000B0028: mov rax, [rax+20h] +000B002C: test rax, rax +000B002F: jnz short loc_B0050 +000B0031: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIDnEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B0038: mov edx, 156Ch; line +000B003D: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B0044: lea rdi, aObjectElement; "object_element" +000B004B: call ___assert_fail +000B0050: mov rax, [rbp+var_40] +000B0054: mov rdi, rax +000B0057: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B005C: mov rdx, [rax] +000B005F: lea rax, [rbp+var_20] +000B0063: mov rsi, rdx +000B0066: mov rdi, rax +000B0069: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +000B006E: mov rax, [rbp+var_38] +000B0072: mov rax, [rax+20h] +000B0076: lea rdx, [rbp+var_20] +000B007A: mov rsi, rdx +000B007D: mov rdi, rax +000B0080: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B0085: lea rax, [rbp+var_20] +000B0089: mov rdi, rax +000B008C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0091: mov rax, [rbp+var_38] +000B0095: mov rax, [rax+20h] +000B0099: add rsp, 38h +000B009D: pop rbx +000B009E: pop rbp +000B009F: retn + +### FUNC 000B00A0 - 000B02A2 (514 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_ +000B00A0: push rbp +000B00A1: mov rbp, rsp +000B00A4: push rbx +000B00A5: sub rsp, 38h +000B00A9: mov [rbp+var_38], rdi +000B00AD: mov [rbp+var_40], rsi +000B00B1: mov rax, [rbp+var_38] +000B00B5: add rax, 8 +000B00B9: mov rdi, rax +000B00BC: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000B00C1: test al, al +000B00C3: jz short loc_B0111 +000B00C5: mov rax, [rbp+var_40] +000B00C9: mov rdi, rax +000B00CC: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B00D1: mov rdx, rax +000B00D4: lea rax, [rbp+var_30] +000B00D8: mov rsi, rdx +000B00DB: mov rdi, rax +000B00DE: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_; nlohmann::basic_json>>::basic_json(long &) +000B00E3: mov rax, [rbp+var_38] +000B00E7: mov rax, [rax] +000B00EA: lea rdx, [rbp+var_30] +000B00EE: mov rsi, rdx +000B00F1: mov rdi, rax +000B00F4: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B00F9: lea rax, [rbp+var_30] +000B00FD: mov rdi, rax +000B0100: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0105: mov rax, [rbp+var_38] +000B0109: mov rax, [rax] +000B010C: jmp loc_B029B +000B0111: mov rax, [rbp+var_38] +000B0115: add rax, 8 +000B0119: mov rdi, rax +000B011C: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0121: mov rax, [rax] +000B0124: mov rdi, rax +000B0127: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000B012C: xor eax, 1 +000B012F: test al, al +000B0131: jz short loc_B0174 +000B0133: mov rax, [rbp+var_38] +000B0137: add rax, 8 +000B013B: mov rdi, rax +000B013E: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0143: mov rax, [rax] +000B0146: mov rdi, rax +000B0149: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B014E: xor eax, 1 +000B0151: test al, al +000B0153: jz short loc_B0174 +000B0155: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B015C: mov edx, 1563h; line +000B0161: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B0168: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000B016F: call ___assert_fail +000B0174: mov rax, [rbp+var_38] +000B0178: add rax, 8 +000B017C: mov rdi, rax +000B017F: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0184: mov rax, [rax] +000B0187: mov rdi, rax +000B018A: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000B018F: test al, al +000B0191: jz short loc_B01E8 +000B0193: mov rax, [rbp+var_40] +000B0197: mov rdi, rax +000B019A: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B019F: mov rbx, rax +000B01A2: mov rax, [rbp+var_38] +000B01A6: add rax, 8 +000B01AA: mov rdi, rax +000B01AD: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B01B2: mov rax, [rax] +000B01B5: mov rax, [rax+8] +000B01B9: mov rsi, rbx +000B01BC: mov rdi, rax +000B01BF: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRlEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(long &) +000B01C4: mov rax, [rbp+var_38] +000B01C8: add rax, 8 +000B01CC: mov rdi, rax +000B01CF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B01D4: mov rax, [rax] +000B01D7: mov rax, [rax+8] +000B01DB: mov rdi, rax +000B01DE: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000B01E3: jmp loc_B029B +000B01E8: mov rax, [rbp+var_38] +000B01EC: add rax, 8 +000B01F0: mov rdi, rax +000B01F3: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B01F8: mov rax, [rax] +000B01FB: mov rdi, rax +000B01FE: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B0203: test al, al +000B0205: jnz short loc_B0226 +000B0207: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B020E: mov edx, 156Bh; line +000B0213: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B021A: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000B0221: call ___assert_fail +000B0226: mov rax, [rbp+var_38] +000B022A: mov rax, [rax+20h] +000B022E: test rax, rax +000B0231: jnz short loc_B0252 +000B0233: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRlEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B023A: mov edx, 156Ch; line +000B023F: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B0246: lea rdi, aObjectElement; "object_element" +000B024D: call ___assert_fail +000B0252: mov rax, [rbp+var_40] +000B0256: mov rdi, rax +000B0259: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B025E: mov rdx, rax +000B0261: lea rax, [rbp+var_20] +000B0265: mov rsi, rdx +000B0268: mov rdi, rax +000B026B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_; nlohmann::basic_json>>::basic_json(long &) +000B0270: mov rax, [rbp+var_38] +000B0274: mov rax, [rax+20h] +000B0278: lea rdx, [rbp+var_20] +000B027C: mov rsi, rdx +000B027F: mov rdi, rax +000B0282: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B0287: lea rax, [rbp+var_20] +000B028B: mov rdi, rax +000B028E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0293: mov rax, [rbp+var_38] +000B0297: mov rax, [rax+20h] +000B029B: add rsp, 38h +000B029F: pop rbx +000B02A0: pop rbp +000B02A1: retn + +### FUNC 000B02A2 - 000B04A4 (514 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_ +000B02A2: push rbp +000B02A3: mov rbp, rsp +000B02A6: push rbx +000B02A7: sub rsp, 38h +000B02AB: mov [rbp+var_38], rdi +000B02AF: mov [rbp+var_40], rsi +000B02B3: mov rax, [rbp+var_38] +000B02B7: add rax, 8 +000B02BB: mov rdi, rax +000B02BE: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000B02C3: test al, al +000B02C5: jz short loc_B0313 +000B02C7: mov rax, [rbp+var_40] +000B02CB: mov rdi, rax +000B02CE: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B02D3: mov rdx, rax +000B02D6: lea rax, [rbp+var_30] +000B02DA: mov rsi, rdx +000B02DD: mov rdi, rax +000B02E0: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_; nlohmann::basic_json>>::basic_json(std::string &) +000B02E5: mov rax, [rbp+var_38] +000B02E9: mov rax, [rax] +000B02EC: lea rdx, [rbp+var_30] +000B02F0: mov rsi, rdx +000B02F3: mov rdi, rax +000B02F6: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B02FB: lea rax, [rbp+var_30] +000B02FF: mov rdi, rax +000B0302: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0307: mov rax, [rbp+var_38] +000B030B: mov rax, [rax] +000B030E: jmp loc_B049D +000B0313: mov rax, [rbp+var_38] +000B0317: add rax, 8 +000B031B: mov rdi, rax +000B031E: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0323: mov rax, [rax] +000B0326: mov rdi, rax +000B0329: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000B032E: xor eax, 1 +000B0331: test al, al +000B0333: jz short loc_B0376 +000B0335: mov rax, [rbp+var_38] +000B0339: add rax, 8 +000B033D: mov rdi, rax +000B0340: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0345: mov rax, [rax] +000B0348: mov rdi, rax +000B034B: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B0350: xor eax, 1 +000B0353: test al, al +000B0355: jz short loc_B0376 +000B0357: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B035E: mov edx, 1563h; line +000B0363: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B036A: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000B0371: call ___assert_fail +000B0376: mov rax, [rbp+var_38] +000B037A: add rax, 8 +000B037E: mov rdi, rax +000B0381: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0386: mov rax, [rax] +000B0389: mov rdi, rax +000B038C: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000B0391: test al, al +000B0393: jz short loc_B03EA +000B0395: mov rax, [rbp+var_40] +000B0399: mov rdi, rax +000B039C: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B03A1: mov rbx, rax +000B03A4: mov rax, [rbp+var_38] +000B03A8: add rax, 8 +000B03AC: mov rdi, rax +000B03AF: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B03B4: mov rax, [rax] +000B03B7: mov rax, [rax+8] +000B03BB: mov rsi, rbx +000B03BE: mov rdi, rax +000B03C1: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRSsEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(std::string &) +000B03C6: mov rax, [rbp+var_38] +000B03CA: add rax, 8 +000B03CE: mov rdi, rax +000B03D1: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B03D6: mov rax, [rax] +000B03D9: mov rax, [rax+8] +000B03DD: mov rdi, rax +000B03E0: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000B03E5: jmp loc_B049D +000B03EA: mov rax, [rbp+var_38] +000B03EE: add rax, 8 +000B03F2: mov rdi, rax +000B03F5: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B03FA: mov rax, [rax] +000B03FD: mov rdi, rax +000B0400: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B0405: test al, al +000B0407: jnz short loc_B0428 +000B0409: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B0410: mov edx, 156Bh; line +000B0415: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B041C: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000B0423: call ___assert_fail +000B0428: mov rax, [rbp+var_38] +000B042C: mov rax, [rax+20h] +000B0430: test rax, rax +000B0433: jnz short loc_B0454 +000B0435: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRSsEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B043C: mov edx, 156Ch; line +000B0441: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B0448: lea rdi, aObjectElement; "object_element" +000B044F: call ___assert_fail +000B0454: mov rax, [rbp+var_40] +000B0458: mov rdi, rax +000B045B: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B0460: mov rdx, rax +000B0463: lea rax, [rbp+var_20] +000B0467: mov rsi, rdx +000B046A: mov rdi, rax +000B046D: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_; nlohmann::basic_json>>::basic_json(std::string &) +000B0472: mov rax, [rbp+var_38] +000B0476: mov rax, [rax+20h] +000B047A: lea rdx, [rbp+var_20] +000B047E: mov rsi, rdx +000B0481: mov rdi, rax +000B0484: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B0489: lea rax, [rbp+var_20] +000B048D: mov rdi, rax +000B0490: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0495: mov rax, [rbp+var_38] +000B0499: mov rax, [rax+20h] +000B049D: add rsp, 38h +000B04A1: pop rbx +000B04A2: pop rbp +000B04A3: retn + +### FUNC 000B04A4 - 000B06A6 (514 bytes) name=_ZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_ +000B04A4: push rbp +000B04A5: mov rbp, rsp +000B04A8: push rbx +000B04A9: sub rsp, 38h +000B04AD: mov [rbp+var_38], rdi +000B04B1: mov [rbp+var_40], rsi +000B04B5: mov rax, [rbp+var_38] +000B04B9: add rax, 8 +000B04BD: mov rdi, rax +000B04C0: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5emptyEv; std::vector>> *,std::allocator>> *>>::empty(void) +000B04C5: test al, al +000B04C7: jz short loc_B0515 +000B04C9: mov rax, [rbp+var_40] +000B04CD: mov rdi, rax +000B04D0: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B04D5: mov rdx, rax +000B04D8: lea rax, [rbp+var_30] +000B04DC: mov rsi, rdx +000B04DF: mov rdi, rax +000B04E2: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_; nlohmann::basic_json>>::basic_json(ulong &) +000B04E7: mov rax, [rbp+var_38] +000B04EB: mov rax, [rax] +000B04EE: lea rdx, [rbp+var_30] +000B04F2: mov rsi, rdx +000B04F5: mov rdi, rax +000B04F8: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B04FD: lea rax, [rbp+var_30] +000B0501: mov rdi, rax +000B0504: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0509: mov rax, [rbp+var_38] +000B050D: mov rax, [rax] +000B0510: jmp loc_B069F +000B0515: mov rax, [rbp+var_38] +000B0519: add rax, 8 +000B051D: mov rdi, rax +000B0520: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0525: mov rax, [rax] +000B0528: mov rdi, rax +000B052B: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000B0530: xor eax, 1 +000B0533: test al, al +000B0535: jz short loc_B0578 +000B0537: mov rax, [rbp+var_38] +000B053B: add rax, 8 +000B053F: mov rdi, rax +000B0542: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0547: mov rax, [rax] +000B054A: mov rdi, rax +000B054D: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B0552: xor eax, 1 +000B0555: test al, al +000B0557: jz short loc_B0578 +000B0559: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B0560: mov edx, 1563h; line +000B0565: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B056C: lea rdi, aRefStackBackIs; "ref_stack.back()->is_array() || ref_sta"... +000B0573: call ___assert_fail +000B0578: mov rax, [rbp+var_38] +000B057C: add rax, 8 +000B0580: mov rdi, rax +000B0583: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B0588: mov rax, [rax] +000B058B: mov rdi, rax +000B058E: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE8is_arrayEv; nlohmann::basic_json>>::is_array(void) +000B0593: test al, al +000B0595: jz short loc_B05EC +000B0597: mov rax, [rbp+var_40] +000B059B: mov rdi, rax +000B059E: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B05A3: mov rbx, rax +000B05A6: mov rax, [rbp+var_38] +000B05AA: add rax, 8 +000B05AE: mov rdi, rax +000B05B1: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B05B6: mov rax, [rax] +000B05B9: mov rax, [rax+8] +000B05BD: mov rsi, rbx +000B05C0: mov rdi, rax +000B05C3: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRmEEEvDpOT_; std::vector>>,std::allocator>>>>::emplace_back(ulong &) +000B05C8: mov rax, [rbp+var_38] +000B05CC: add rax, 8 +000B05D0: mov rdi, rax +000B05D3: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B05D8: mov rax, [rax] +000B05DB: mov rax, [rax+8] +000B05DF: mov rdi, rax +000B05E2: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4backEv; std::vector>>,std::allocator>>>>::back(void) +000B05E7: jmp loc_B069F +000B05EC: mov rax, [rbp+var_38] +000B05F0: add rax, 8 +000B05F4: mov rdi, rax +000B05F7: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4backEv; std::vector>> *,std::allocator>> *>>::back(void) +000B05FC: mov rax, [rax] +000B05FF: mov rdi, rax +000B0602: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE9is_objectEv; nlohmann::basic_json>>::is_object(void) +000B0607: test al, al +000B0609: jnz short loc_B062A +000B060B: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B0612: mov edx, 156Bh; line +000B0617: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B061E: lea rdi, aRefStackBackIs_0; "ref_stack.back()->is_object()" +000B0625: call ___assert_fail +000B062A: mov rax, [rbp+var_38] +000B062E: mov rax, [rax+20h] +000B0632: test rax, rax +000B0635: jnz short loc_B0656 +000B0637: lea rcx, _ZZN8nlohmann6detail19json_sax_dom_parserINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEE12handle_valueIRmEEPS8_OT_E19__PRETTY_FUNCTION__; "BasicJsonType* nlohmann::detail::json_s"... +000B063E: mov edx, 156Ch; line +000B0643: lea rsi, file; "/home/derek/Documents/proj/EloThermal-w"... +000B064A: lea rdi, aObjectElement; "object_element" +000B0651: call ___assert_fail +000B0656: mov rax, [rbp+var_40] +000B065A: mov rdi, rax +000B065D: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B0662: mov rdx, rax +000B0665: lea rax, [rbp+var_20] +000B0669: mov rsi, rdx +000B066C: mov rdi, rax +000B066F: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_; nlohmann::basic_json>>::basic_json(ulong &) +000B0674: mov rax, [rbp+var_38] +000B0678: mov rax, [rax+20h] +000B067C: lea rdx, [rbp+var_20] +000B0680: mov rsi, rdx +000B0683: mov rdi, rax +000B0686: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B068B: lea rax, [rbp+var_20] +000B068F: mov rdi, rax +000B0692: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B0697: mov rax, [rbp+var_38] +000B069B: mov rax, [rax+20h] +000B069F: add rsp, 38h +000B06A3: pop rbx +000B06A4: pop rbp +000B06A5: retn + +### FUNC 000B06A6 - 000B06DE (56 bytes) name=_ZNSt16allocator_traitsISaISsEE12_S_constructISsJRKSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +000B06A6: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISsEE12_S_constructISsIRKSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_' +000B06A7: mov rbp, rsp +000B06AA: sub rsp, 20h +000B06AE: mov [rbp+var_8], rdi +000B06B2: mov [rbp+var_10], rsi +000B06B6: mov [rbp+var_18], rdx +000B06BA: mov rax, [rbp+var_18] +000B06BE: mov rdi, rax +000B06C1: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000B06C6: mov rdx, rax +000B06C9: mov rcx, [rbp+var_10] +000B06CD: mov rax, [rbp+var_8] +000B06D1: mov rsi, rcx +000B06D4: mov rdi, rax +000B06D7: call __ZN9__gnu_cxx13new_allocatorISsE9constructISsJRKSsEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(std::string *,std::string const&) +000B06DC: leave +000B06DD: retn + +### FUNC 000B06DE - 000B0735 (87 bytes) name=_ZNSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EEC2ERKS4_RKS6_RKS7_RKS8_ +000B06DE: push rbp; Alternative name is 'std::__detail::_Hash_code_base, std::__detail::_Select1st, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, true>::_Hash_code_base(std::__detail::_Select1st const&, std::hash const&, std::__detail::_Mod_range_hashing const&, std::__detail::_Default_ranged_hash const&)' +000B06DF: mov rbp, rsp +000B06E2: sub rsp, 30h +000B06E6: mov [rbp+var_8], rdi +000B06EA: mov [rbp+var_10], rsi +000B06EE: mov [rbp+var_18], rdx +000B06F2: mov [rbp+var_20], rcx +000B06F6: mov [rbp+var_28], r8 +000B06FA: mov rdx, [rbp+var_10] +000B06FE: mov rax, [rbp+var_8] +000B0702: mov rsi, rdx +000B0705: mov rdi, rax +000B0708: call __ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2ERKS1_; std::__detail::_Hashtable_ebo_helper<0,std::__detail::_Select1st,true>::_Hashtable_ebo_helper(std::__detail::_Select1st const&) +000B070D: mov rdx, [rbp+var_18] +000B0711: mov rax, [rbp+var_8] +000B0715: mov rsi, rdx +000B0718: mov rdi, rax +000B071B: call __ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EEC2ERKS2_; std::__detail::_Hashtable_ebo_helper<1,std::hash,true>::_Hashtable_ebo_helper(std::hash const&) +000B0720: mov rdx, [rbp+var_20] +000B0724: mov rax, [rbp+var_8] +000B0728: mov rsi, rdx +000B072B: mov rdi, rax +000B072E: call __ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2ERKS1_; std::__detail::_Hashtable_ebo_helper<2,std::__detail::_Mod_range_hashing,true>::_Hashtable_ebo_helper(std::__detail::_Mod_range_hashing const&) +000B0733: leave +000B0734: retn + +### FUNC 000B0736 - 000B0744 (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EEC2ERKS2_ +000B0736: push rbp; Alternative name is 'std::__detail::_Hashtable_ebo_helper<0, std::equal_to, true>::_Hashtable_ebo_helper(std::equal_to const&)' +000B0737: mov rbp, rsp +000B073A: mov [rbp+var_8], rdi +000B073E: mov [rbp+var_10], rsi +000B0742: pop rbp +000B0743: retn + +### FUNC 000B0744 - 000B0762 (30 bytes) name=_ZNSaINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2IS3_EERKSaIT_E +000B0744: push rbp; Alternative name is 'std::allocator, true>>::allocator>(std::allocator> const&)' +000B0745: mov rbp, rsp +000B0748: sub rsp, 10h +000B074C: mov [rbp+var_8], rdi +000B0750: mov [rbp+var_10], rsi +000B0754: mov rax, [rbp+var_8] +000B0758: mov rdi, rax +000B075B: call __ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2Ev; __gnu_cxx::new_allocator,true>>::new_allocator(void) +000B0760: leave +000B0761: retn + +### FUNC 000B0762 - 000B07A4 (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv +000B0762: push rbp +000B0763: mov rbp, rsp +000B0766: sub rsp, 20h +000B076A: mov [rbp+var_8], rdi +000B076E: mov [rbp+var_10], rsi +000B0772: mov [rbp+var_18], rdx +000B0776: mov rax, [rbp+var_8] +000B077A: mov rdi, rax +000B077D: call __ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000B0782: cmp rax, [rbp+var_10] +000B0786: setb al +000B0789: test al, al +000B078B: jz short loc_B0792 +000B078D: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B0792: mov rax, [rbp+var_10] +000B0796: shl rax, 3 +000B079A: mov rdi, rax; unsigned __int64 +000B079D: call __Znwm; operator new(ulong) +000B07A2: leave +000B07A3: retn + +### FUNC 000B07A4 - 000B07BE (26 bytes) name=_ZNSt4pairIKSsiED2Ev +000B07A4: push rbp; Alternative name is 'std::pair::~pair()' +000B07A5: mov rbp, rsp +000B07A8: sub rsp, 10h +000B07AC: mov [rbp+var_8], rdi +000B07B0: mov rax, [rbp+var_8] +000B07B4: mov rdi, rax; this +000B07B7: call __ZNSsD1Ev; std::string::~string() +000B07BC: leave +000B07BD: retn + +### FUNC 000B07BE - 000B07DC (30 bytes) name=_ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EED2Ev +000B07BE: push rbp; Alternative name is 'std::__detail::_Hash_node, true>::~_Hash_node()' +000B07BF: mov rbp, rsp +000B07C2: sub rsp, 10h +000B07C6: mov [rbp+var_8], rdi +000B07CA: mov rax, [rbp+var_8] +000B07CE: add rax, 8 +000B07D2: mov rdi, rax +000B07D5: call __ZNSt4pairIKSsiED2Ev; std::pair::~pair() +000B07DA: leave +000B07DB: retn + +### FUNC 000B07DC - 000B07FA (30 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE7destroyIS6_EEvPT_ +000B07DC: push rbp +000B07DD: mov rbp, rsp +000B07E0: sub rsp, 10h +000B07E4: mov [rbp+var_8], rdi +000B07E8: mov [rbp+var_10], rsi +000B07EC: mov rax, [rbp+var_10] +000B07F0: mov rdi, rax +000B07F3: call __ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EED2Ev; std::__detail::_Hash_node,true>::~_Hash_node() +000B07F8: leave +000B07F9: retn + +### FUNC 000B07FA - 000B0804 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorI19struct_TerminalListEC2Ev +000B07FA: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000B07FB: mov rbp, rsp +000B07FE: mov [rbp+var_8], rdi +000B0802: pop rbp +000B0803: retn + +### FUNC 000B0804 - 000B084A (70 bytes) name=_ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIP19struct_TerminalListmEEvT_T0_ +000B0804: push rbp +000B0805: mov rbp, rsp +000B0808: sub rsp, 50h +000B080C: mov [rbp+var_48], rdi +000B0810: mov [rbp+var_50], rsi +000B0814: lea rdx, [rbp+var_40] +000B0818: mov eax, 0 +000B081D: mov ecx, 7 +000B0822: mov rdi, rdx +000B0825: rep stosq +000B0828: mov rdx, rdi +000B082B: mov [rdx], eax +000B082D: add rdx, 4 +000B0831: lea rdx, [rbp+var_40] +000B0835: mov rcx, [rbp+var_50] +000B0839: mov rax, [rbp+var_48] +000B083D: mov rsi, rcx +000B0840: mov rdi, rax +000B0843: call __ZSt6fill_nIP19struct_TerminalListmS0_ET_S2_T0_RKT1_; std::fill_n(struct_TerminalList *,ulong,struct_TerminalList const&) +000B0848: leave +000B0849: retn + +### FUNC 000B084A - 000B0864 (26 bytes) name=_ZNSt16allocator_traitsISaI19struct_TerminalListEE8max_sizeERKS1_ +000B084A: push rbp +000B084B: mov rbp, rsp +000B084E: sub rsp, 10h +000B0852: mov [rbp+var_8], rdi +000B0856: mov rax, [rbp+var_8] +000B085A: mov rdi, rax +000B085D: call __ZNSt16allocator_traitsISaI19struct_TerminalListEE11_S_max_sizeIKS1_EENSt9enable_ifIXsrNS2_16__maxsize_helperIT_EE5valueEmE4typeERS7_; std::allocator_traits>::_S_max_size const>(std::allocator const&) +000B0862: leave +000B0863: retn + +### FUNC 000B0864 - 000B0872 (14 bytes) name=_ZNKSt12_Vector_baseI19struct_TerminalListSaIS0_EE19_M_get_Tp_allocatorEv +000B0864: push rbp +000B0865: mov rbp, rsp +000B0868: mov [rbp+var_8], rdi +000B086C: mov rax, [rbp+var_8] +000B0870: pop rbp +000B0871: retn + +### FUNC 000B0872 - 000B0886 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorI19struct_TerminalListE8max_sizeEv +000B0872: push rbp +000B0873: mov rbp, rsp +000B0876: mov [rbp+var_8], rdi +000B087A: mov rax, 444444444444444h +000B0884: pop rbp +000B0885: retn + +### FUNC 000B0886 - 000B089F (25 bytes) name=_ZNSt13move_iteratorIP19struct_TerminalListEC2ES1_ +000B0886: push rbp; Alternative name is 'std::move_iterator::move_iterator(struct_TerminalList *)' +000B0887: mov rbp, rsp +000B088A: mov [rbp+var_8], rdi +000B088E: mov [rbp+var_10], rsi +000B0892: mov rax, [rbp+var_8] +000B0896: mov rdx, [rbp+var_10] +000B089A: mov [rax], rdx +000B089D: pop rbp +000B089E: retn + +### FUNC 000B089F - 000B08CC (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +000B089F: push rbp +000B08A0: mov rbp, rsp +000B08A3: sub rsp, 20h +000B08A7: mov [rbp+var_10], rdi +000B08AB: mov [rbp+var_20], rsi +000B08AF: mov [rbp+var_18], rdx +000B08B3: mov rdx, [rbp+var_18] +000B08B7: mov rcx, [rbp+var_20] +000B08BB: mov rax, [rbp+var_10] +000B08BF: mov rsi, rcx +000B08C2: mov rdi, rax +000B08C5: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIP19struct_TerminalListES4_EET0_T_S7_S6_; std::__uninitialized_copy::__uninit_copy,struct_TerminalList *>(std::move_iterator,std::move_iterator,struct_TerminalList *) +000B08CA: leave +000B08CB: retn + +### FUNC 000B08CC - 000B08DA (14 bytes) name=_ZSt11__addressofIN6serial8PortInfoEEPT_RS2_ +000B08CC: push rbp +000B08CD: mov rbp, rsp +000B08D0: mov [rbp+var_8], rdi +000B08D4: mov rax, [rbp+var_8] +000B08D8: pop rbp +000B08D9: retn + +### FUNC 000B08DA - 000B08F4 (26 bytes) name=_ZSt8_DestroyIN6serial8PortInfoEEvPT_ +000B08DA: push rbp +000B08DB: mov rbp, rsp +000B08DE: sub rsp, 10h +000B08E2: mov [rbp+var_8], rdi +000B08E6: mov rax, [rbp+var_8] +000B08EA: mov rdi, rax; this +000B08ED: call __ZN6serial8PortInfoD2Ev; serial::PortInfo::~PortInfo() +000B08F2: leave +000B08F3: retn + +### FUNC 000B08F4 - 000B0937 (67 bytes) name=_ZN8nlohmann6detail22iterator_input_adapterIPhEC2ES2_S2_ +000B08F4: push rbp; Alternative name is 'nlohmann::detail::iterator_input_adapter::iterator_input_adapter(unsigned char *, unsigned char *)' +000B08F5: mov rbp, rsp +000B08F8: sub rsp, 20h +000B08FC: mov [rbp+var_8], rdi +000B0900: mov [rbp+var_10], rsi +000B0904: mov [rbp+var_18], rdx +000B0908: lea rax, [rbp+var_10] +000B090C: mov rdi, rax +000B090F: call __ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_; std::move(uchar *&&&) +000B0914: mov rdx, [rax] +000B0917: mov rax, [rbp+var_8] +000B091B: mov [rax], rdx +000B091E: lea rax, [rbp+var_18] +000B0922: mov rdi, rax +000B0925: call __ZSt4moveIRPhEONSt16remove_referenceIT_E4typeEOS3_; std::move(uchar *&&&) +000B092A: mov rdx, [rax] +000B092D: mov rax, [rbp+var_8] +000B0931: mov [rax+8], rdx +000B0935: leave +000B0936: retn + +### FUNC 000B0937 - 000B098D (86 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_decimal_pointEv +000B0937: push rbp +000B0938: mov rbp, rsp +000B093B: sub rsp, 10h +000B093F: call _localeconv +000B0944: mov [rbp+var_8], rax +000B0948: cmp [rbp+var_8], 0 +000B094D: jnz short loc_B096E +000B094F: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE17get_decimal_pointEvE19__PRETTY_FUNCTION__; "static char nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B09A6: cmp rax, 0EFh +000B09AC: setz al +000B09AF: test al, al +000B09B1: jz short loc_B09E9 +000B09B3: mov rax, [rbp+var_8] +000B09B7: mov rdi, rax +000B09BA: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B09BF: cmp rax, 0BBh +000B09C5: jnz short loc_B09E2 +000B09C7: mov rax, [rbp+var_8] +000B09CB: mov rdi, rax +000B09CE: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B09D3: cmp rax, 0BFh +000B09D9: jnz short loc_B09E2 +000B09DB: mov eax, 1 +000B09E0: jmp short locret_B09FA +000B09E2: mov eax, 0 +000B09E7: jmp short locret_B09FA +000B09E9: mov rax, [rbp+var_8] +000B09ED: mov rdi, rax +000B09F0: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::unget(void) +000B09F5: mov eax, 1 +000B09FA: leave +000B09FB: retn + +### FUNC 000B09FC - 000B0A4E (82 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE15skip_whitespaceEv +000B09FC: push rbp +000B09FD: mov rbp, rsp +000B0A00: sub rsp, 10h +000B0A04: mov [rbp+var_8], rdi +000B0A08: mov rax, [rbp+var_8] +000B0A0C: mov rdi, rax +000B0A0F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0A14: mov rax, [rbp+var_8] +000B0A18: mov rax, [rax+18h] +000B0A1C: cmp rax, 20h ; ' ' +000B0A20: jz short loc_B0A08 +000B0A22: mov rax, [rbp+var_8] +000B0A26: mov rax, [rax+18h] +000B0A2A: cmp rax, 9 +000B0A2E: jz short loc_B0A08 +000B0A30: mov rax, [rbp+var_8] +000B0A34: mov rax, [rax+18h] +000B0A38: cmp rax, 0Ah +000B0A3C: jz short loc_B0A08 +000B0A3E: mov rax, [rbp+var_8] +000B0A42: mov rax, [rax+18h] +000B0A46: cmp rax, 0Dh +000B0A4A: jz short loc_B0A08 +000B0A4C: leave +000B0A4D: retn + +### FUNC 000B0A4E - 000B0B1F (209 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_commentEv +000B0A4E: push rbp +000B0A4F: mov rbp, rsp +000B0A52: sub rsp, 10h +000B0A56: mov [rbp+var_8], rdi +000B0A5A: mov rax, [rbp+var_8] +000B0A5E: mov rdi, rax +000B0A61: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0A66: cmp rax, 2Ah ; '*' +000B0A6A: jz short loc_B0AAC +000B0A6C: cmp rax, 2Fh ; '/' +000B0A70: jnz loc_B0B09 +000B0A76: mov rax, [rbp+var_8] +000B0A7A: mov rdi, rax +000B0A7D: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0A82: cmp rax, 0Ah +000B0A86: jz short loc_B0AA3 +000B0A88: cmp rax, 0Ah +000B0A8C: ja short loc_B0A95 +000B0A8E: test rax, rax +000B0A91: jz short loc_B0AA3 +000B0A93: jmp short loc_B0AAA +000B0A95: cmp rax, 0Dh +000B0A99: jz short loc_B0AA3 +000B0A9B: cmp rax, 0FFFFFFFFFFFFFFFFh +000B0A9F: jz short loc_B0AA3 +000B0AA1: jmp short loc_B0AAA +000B0AA3: mov eax, 1 +000B0AA8: jmp short locret_B0B1D +000B0AAA: jmp short loc_B0A76 +000B0AAC: mov rax, [rbp+var_8] +000B0AB0: mov rdi, rax +000B0AB3: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0AB8: cmp rax, 2Ah ; '*' +000B0ABC: jz short loc_B0AE1 +000B0ABE: cmp rax, 0FFFFFFFFFFFFFFFFh +000B0AC2: jz short loc_B0ACB +000B0AC4: test rax, rax +000B0AC7: jz short loc_B0ACB +000B0AC9: jmp short loc_B0B07 +000B0ACB: mov rax, [rbp+var_8] +000B0ACF: lea rdx, aInvalidComment; "invalid comment; missing closing '*/'" +000B0AD6: mov [rax+60h], rdx +000B0ADA: mov eax, 0 +000B0ADF: jmp short locret_B0B1D +000B0AE1: mov rax, [rbp+var_8] +000B0AE5: mov rdi, rax +000B0AE8: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0AED: cmp rax, 2Fh ; '/' +000B0AF1: jnz short loc_B0AFA +000B0AF3: mov eax, 1 +000B0AF8: jmp short locret_B0B1D +000B0AFA: mov rax, [rbp+var_8] +000B0AFE: mov rdi, rax +000B0B01: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::unget(void) +000B0B06: nop +000B0B07: jmp short loc_B0AAC +000B0B09: mov rax, [rbp+var_8] +000B0B0D: lea rdx, aInvalidComment_0; "invalid comment; expecting '/' or '*' a"... +000B0B14: mov [rax+60h], rdx +000B0B18: mov eax, 0 +000B0B1D: leave +000B0B1E: retn + +### FUNC 000B0B1F - 000B0B30 (17 bytes) name=_ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm +000B0B1F: push rbp +000B0B20: mov rbp, rsp +000B0B23: mov [rbp+var_8], rdi +000B0B27: mov rax, [rbp+var_8] +000B0B2B: mov rax, [rax] +000B0B2E: pop rbp +000B0B2F: retn + +### FUNC 000B0B30 - 000B0BF1 (193 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeE +000B0B30: push rbp +000B0B31: mov rbp, rsp +000B0B34: sub rsp, 30h +000B0B38: mov [rbp+var_18], rdi +000B0B3C: mov [rbp+var_20], rsi +000B0B40: mov [rbp+var_28], rdx +000B0B44: mov [rbp+var_2C], ecx +000B0B47: mov rax, [rbp+var_18] +000B0B4B: add rax, 18h +000B0B4F: mov rdi, rax +000B0B52: call __ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm; __gnu_cxx::char_traits::to_char_type(ulong const&) +000B0B57: mov rdx, [rbp+var_20] +000B0B5B: movzx edx, byte ptr [rdx] +000B0B5E: cmp al, dl +000B0B60: jz short loc_B0B81 +000B0B62: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE12scan_literalEPKhmNS0_10lexer_baseIS8_E10token_typeEE19__PRETTY_FUNCTION__; "nlohmann::detail::lexer::to_char_ty"... +000B0B7C: call ___assert_fail +000B0B81: mov [rbp+var_8], 1 +000B0B89: jmp short loc_B0BE2 +000B0B8B: mov rax, [rbp+var_18] +000B0B8F: mov rdi, rax +000B0B92: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0B97: mov [rbp+var_10], rax +000B0B9B: lea rax, [rbp+var_10] +000B0B9F: mov rdi, rax +000B0BA2: call __ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm; __gnu_cxx::char_traits::to_char_type(ulong const&) +000B0BA7: mov rdx, [rbp+var_8] +000B0BAB: mov rcx, [rbp+var_20] +000B0BAF: add rdx, rcx +000B0BB2: movzx edx, byte ptr [rdx] +000B0BB5: cmp al, dl +000B0BB7: setnz al +000B0BBA: movzx eax, al +000B0BBD: test rax, rax +000B0BC0: setnz al +000B0BC3: test al, al +000B0BC5: jz short loc_B0BDD +000B0BC7: mov rax, [rbp+var_18] +000B0BCB: lea rdx, aInvalidLiteral; "invalid literal" +000B0BD2: mov [rax+60h], rdx +000B0BD6: mov eax, 0Eh +000B0BDB: jmp short locret_B0BEF +000B0BDD: add [rbp+var_8], 1 +000B0BE2: mov rax, [rbp+var_8] +000B0BE6: cmp rax, [rbp+var_28] +000B0BEA: jb short loc_B0B8B +000B0BEC: mov eax, [rbp+var_2C] +000B0BEF: leave +000B0BF0: retn + +### FUNC 000B0BF1 - 000B0C0A (25 bytes) name=_ZNSt14__array_traitsIhLm4EE6_S_refERA4_Khm +000B0BF1: push rbp +000B0BF2: mov rbp, rsp +000B0BF5: mov [rbp+var_8], rdi +000B0BF9: mov [rbp+var_10], rsi +000B0BFD: mov rax, [rbp+var_10] +000B0C01: mov rdx, [rbp+var_8] +000B0C05: add rax, rdx +000B0C08: pop rbp +000B0C09: retn + +### FUNC 000B0C0A - 000B0C31 (39 bytes) name=_ZNSt5arrayIhLm4EE4dataEv +000B0C0A: push rbp +000B0C0B: mov rbp, rsp +000B0C0E: sub rsp, 10h +000B0C12: mov [rbp+var_8], rdi +000B0C16: mov rax, [rbp+var_8] +000B0C1A: mov esi, 0 +000B0C1F: mov rdi, rax +000B0C22: call __ZNSt14__array_traitsIhLm4EE6_S_refERA4_Khm; std::__array_traits::_S_ref(uchar const(&)[4],ulong) +000B0C27: mov rdi, rax +000B0C2A: call __ZSt11__addressofIhEPT_RS0_; std::__addressof(uchar&) +000B0C2F: leave +000B0C30: retn + +### FUNC 000B0C31 - 000B0C4A (25 bytes) name=_ZNSt14__array_traitsIhLm5EE6_S_refERA5_Khm +000B0C31: push rbp +000B0C32: mov rbp, rsp +000B0C35: mov [rbp+var_8], rdi +000B0C39: mov [rbp+var_10], rsi +000B0C3D: mov rax, [rbp+var_10] +000B0C41: mov rdx, [rbp+var_8] +000B0C45: add rax, rdx +000B0C48: pop rbp +000B0C49: retn + +### FUNC 000B0C4A - 000B0C71 (39 bytes) name=_ZNSt5arrayIhLm5EE4dataEv +000B0C4A: push rbp +000B0C4B: mov rbp, rsp +000B0C4E: sub rsp, 10h +000B0C52: mov [rbp+var_8], rdi +000B0C56: mov rax, [rbp+var_8] +000B0C5A: mov esi, 0 +000B0C5F: mov rdi, rax +000B0C62: call __ZNSt14__array_traitsIhLm5EE6_S_refERA5_Khm; std::__array_traits::_S_ref(uchar const(&)[5],ulong) +000B0C67: mov rdi, rax +000B0C6A: call __ZSt11__addressofIhEPT_RS0_; std::__addressof(uchar&) +000B0C6F: leave +000B0C70: retn + +### FUNC 000B0C72 - 000B1898 (3110 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEv +000B0C72: push rbp +000B0C73: mov rbp, rsp +000B0C76: push r15 +000B0C78: push r14 +000B0C7A: push r13 +000B0C7C: push r12 +000B0C7E: push rbx +000B0C7F: sub rsp, 78h +000B0C83: mov [rbp+var_48], rdi +000B0C87: mov rax, [rbp+var_48] +000B0C8B: mov rdi, rax +000B0C8E: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5resetEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::reset(void) +000B0C93: mov rax, [rbp+var_48] +000B0C97: mov rax, [rax+18h] +000B0C9B: cmp rax, 22h ; '"' +000B0C9F: jz short loc_B0CC0 +000B0CA1: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEvE19__PRETTY_FUNCTION__; "nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0CCC: cmp rax, 1Ah +000B0CD0: jz loc_B1597 +000B0CD6: cmp rax, 1Ah +000B0CDA: ja loc_B0E1B +000B0CE0: cmp rax, 0Ch +000B0CE4: jz loc_B1439 +000B0CEA: cmp rax, 0Ch +000B0CEE: ja loc_B0D87 +000B0CF4: cmp rax, 5 +000B0CF8: jz loc_B138A +000B0CFE: cmp rax, 5 +000B0D02: ja short loc_B0D45 +000B0D04: cmp rax, 2 +000B0D08: jz loc_B133F +000B0D0E: cmp rax, 2 +000B0D12: ja short loc_B0D2C +000B0D14: test rax, rax +000B0D17: jz loc_B130D +000B0D1D: cmp rax, 1 +000B0D21: jz loc_B1326 +000B0D27: jmp loc_B186E +000B0D2C: cmp rax, 3 +000B0D30: jz loc_B1358 +000B0D36: cmp rax, 4 +000B0D3A: jz loc_B1371 +000B0D40: jmp loc_B186E +000B0D45: cmp rax, 8 +000B0D49: jz loc_B13D5 +000B0D4F: cmp rax, 8 +000B0D53: ja short loc_B0D6E +000B0D55: cmp rax, 6 +000B0D59: jz loc_B13A3 +000B0D5F: cmp rax, 7 +000B0D63: jz loc_B13BC +000B0D69: jmp loc_B186E +000B0D6E: cmp rax, 0Ah +000B0D72: jz loc_B1407 +000B0D78: cmp rax, 0Ah +000B0D7C: ja loc_B1420 +000B0D82: jmp loc_B13EE +000B0D87: cmp rax, 13h +000B0D8B: jz loc_B14E8 +000B0D91: cmp rax, 13h +000B0D95: ja short loc_B0DD9 +000B0D97: cmp rax, 0Fh +000B0D9B: jz loc_B1484 +000B0DA1: cmp rax, 0Fh +000B0DA5: ja short loc_B0DC0 +000B0DA7: cmp rax, 0Dh +000B0DAB: jz loc_B1452 +000B0DB1: cmp rax, 0Eh +000B0DB5: jz loc_B146B +000B0DBB: jmp loc_B186E +000B0DC0: cmp rax, 11h +000B0DC4: jz loc_B14B6 +000B0DCA: cmp rax, 11h +000B0DCE: ja loc_B14CF +000B0DD4: jmp loc_B149D +000B0DD9: cmp rax, 16h +000B0DDD: jz loc_B1533 +000B0DE3: cmp rax, 16h +000B0DE7: ja short loc_B0E02 +000B0DE9: cmp rax, 14h +000B0DED: jz loc_B1501 +000B0DF3: cmp rax, 15h +000B0DF7: jz loc_B151A +000B0DFD: jmp loc_B186E +000B0E02: cmp rax, 18h +000B0E06: jz loc_B1565 +000B0E0C: cmp rax, 18h +000B0E10: ja loc_B157E +000B0E16: jmp loc_B154C +000B0E1B: cmp rax, 7Fh +000B0E1F: ja short loc_B0E96 +000B0E21: cmp rax, 5Dh ; ']' +000B0E25: jnb loc_B162D +000B0E2B: cmp rax, 21h ; '!' +000B0E2F: ja short loc_B0E7D +000B0E31: cmp rax, 20h ; ' ' +000B0E35: jnb loc_B162D +000B0E3B: cmp rax, 1Dh +000B0E3F: jz loc_B15E2 +000B0E45: cmp rax, 1Dh +000B0E49: ja short loc_B0E64 +000B0E4B: cmp rax, 1Bh +000B0E4F: jz loc_B15B0 +000B0E55: cmp rax, 1Ch +000B0E59: jz loc_B15C9 +000B0E5F: jmp loc_B186E +000B0E64: cmp rax, 1Eh +000B0E68: jz loc_B15FB +000B0E6E: cmp rax, 1Fh +000B0E72: jz loc_B1614 +000B0E78: jmp loc_B186E +000B0E7D: cmp rax, 5Bh ; '[' +000B0E81: ja loc_B0F32 +000B0E87: cmp rax, 23h ; '#' +000B0E8B: jnb loc_B162D +000B0E91: jmp loc_B0F28 +000B0E96: cmp rax, 0EFh +000B0E9C: ja short loc_B0EE0 +000B0E9E: cmp rax, 0EEh +000B0EA4: jnb loc_B16FF +000B0EAA: cmp rax, 0E0h +000B0EB0: jz loc_B16A4 +000B0EB6: cmp rax, 0E0h +000B0EBC: ja short loc_B0ECF +000B0EBE: cmp rax, 0C2h +000B0EC4: jb loc_B186E +000B0ECA: jmp loc_B1649 +000B0ECF: cmp rax, 0ECh +000B0ED5: jbe loc_B16FF +000B0EDB: jmp loc_B174E +000B0EE0: cmp rax, 0F3h +000B0EE6: ja short loc_B0EF9 +000B0EE8: cmp rax, 0F1h +000B0EEE: jnb loc_B17EC +000B0EF4: jmp loc_B179D +000B0EF9: cmp rax, 0F4h +000B0EFF: jz loc_B182D +000B0F05: cmp rax, 0FFFFFFFFFFFFFFFFh +000B0F09: jnz loc_B186E +000B0F0F: mov rax, [rbp+var_48] +000B0F13: lea rdx, aInvalidStringM; "invalid string: missing closing quote" +000B0F1A: mov [rax+60h], rdx +000B0F1E: mov eax, 0Eh +000B0F23: jmp loc_B1889 +000B0F28: mov eax, 4 +000B0F2D: jmp loc_B1889 +000B0F32: mov rax, [rbp+var_48] +000B0F36: mov rdi, rax +000B0F39: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B0F3E: sub rax, 22h ; '"'; switch 84 cases +000B0F42: cmp rax, 53h +000B0F46: ja def_B0F6B; jumptable 00000000000B0F6B default case, cases 35-46,48-91,93-97,99-101,103-109,111-113,115 +000B0F4C: lea rdx, ds:0[rax*4] +000B0F54: lea rax, jpt_B0F6B +000B0F5B: mov eax, ds:(jpt_B0F6B - 0D3B64h)[rdx+rax] +000B0F5E: movsxd rdx, eax +000B0F61: lea rax, jpt_B0F6B +000B0F68: add rax, rdx +000B0F6B: jmp rax; switch jump +000B0F6D: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 34 +000B0F71: mov esi, 22h ; '"' +000B0F76: mov rdi, rax +000B0F79: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B0F7E: jmp loc_B1308 +000B0F83: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 92 +000B0F87: mov esi, 5Ch ; '\' +000B0F8C: mov rdi, rax +000B0F8F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B0F94: jmp loc_B1308 +000B0F99: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 47 +000B0F9D: mov esi, 2Fh ; '/' +000B0FA2: mov rdi, rax +000B0FA5: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B0FAA: jmp loc_B1308 +000B0FAF: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 98 +000B0FB3: mov esi, 8 +000B0FB8: mov rdi, rax +000B0FBB: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B0FC0: jmp loc_B1308 +000B0FC5: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 102 +000B0FC9: mov esi, 0Ch +000B0FCE: mov rdi, rax +000B0FD1: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B0FD6: jmp loc_B1308 +000B0FDB: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 110 +000B0FDF: mov esi, 0Ah +000B0FE4: mov rdi, rax +000B0FE7: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B0FEC: jmp loc_B1308 +000B0FF1: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 114 +000B0FF5: mov esi, 0Dh +000B0FFA: mov rdi, rax +000B0FFD: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1002: jmp loc_B1308 +000B1007: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 116 +000B100B: mov esi, 9 +000B1010: mov rdi, rax +000B1013: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1018: jmp loc_B1308 +000B101D: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B case 117 +000B1021: mov rdi, rax +000B1024: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_codepoint(void) +000B1029: mov [rbp+var_38], eax +000B102C: mov eax, [rbp+var_38] +000B102F: mov [rbp+var_34], eax +000B1032: cmp [rbp+var_38], 0FFFFFFFFh +000B1036: setz al +000B1039: movzx eax, al +000B103C: test rax, rax +000B103F: jz short loc_B105A +000B1041: mov rax, [rbp+var_48] +000B1045: lea rdx, aInvalidStringU; "invalid string: '\\u' must be followed "... +000B104C: mov [rax+60h], rdx +000B1050: mov eax, 0Eh +000B1055: jmp loc_B1889 +000B105A: cmp [rbp+var_38], 0D7FFh +000B1061: jle loc_B115B +000B1067: cmp [rbp+var_38], 0DBFFh +000B106E: jg loc_B115B +000B1074: mov rax, [rbp+var_48] +000B1078: mov rdi, rax +000B107B: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1080: cmp rax, 5Ch ; '\' +000B1084: jnz short loc_B109F +000B1086: mov rax, [rbp+var_48] +000B108A: mov rdi, rax +000B108D: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1092: cmp rax, 75h ; 'u' +000B1096: jnz short loc_B109F +000B1098: mov eax, 1 +000B109D: jmp short loc_B10A4 +000B109F: mov eax, 0 +000B10A4: movzx eax, al +000B10A7: test rax, rax +000B10AA: setnz al +000B10AD: test al, al +000B10AF: jz loc_B1142 +000B10B5: mov rax, [rbp+var_48] +000B10B9: mov rdi, rax +000B10BC: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get_codepoint(void) +000B10C1: mov [rbp+var_3C], eax +000B10C4: cmp [rbp+var_3C], 0FFFFFFFFh +000B10C8: setz al +000B10CB: movzx eax, al +000B10CE: test rax, rax +000B10D1: jz short loc_B10EC +000B10D3: mov rax, [rbp+var_48] +000B10D7: lea rdx, aInvalidStringU; "invalid string: '\\u' must be followed "... +000B10DE: mov [rax+60h], rdx +000B10E2: mov eax, 0Eh +000B10E7: jmp loc_B1889 +000B10EC: cmp [rbp+var_3C], 0DBFFh +000B10F3: jle short loc_B1105 +000B10F5: cmp [rbp+var_3C], 0DFFFh +000B10FC: jg short loc_B1105 +000B10FE: mov eax, 1 +000B1103: jmp short loc_B110A +000B1105: mov eax, 0 +000B110A: movzx eax, al +000B110D: test rax, rax +000B1110: jz short loc_B1129 +000B1112: mov eax, [rbp+var_38] +000B1115: shl eax, 0Ah +000B1118: mov edx, eax +000B111A: mov eax, [rbp+var_3C] +000B111D: add eax, edx +000B111F: sub eax, 35FDC00h +000B1124: mov [rbp+var_34], eax +000B1127: jmp short loc_B119A +000B1129: mov rax, [rbp+var_48] +000B112D: lea rdx, aInvalidStringS; "invalid string: surrogate U+D800..U+DBF"... +000B1134: mov [rax+60h], rdx +000B1138: mov eax, 0Eh +000B113D: jmp loc_B1889 +000B1142: mov rax, [rbp+var_48] +000B1146: lea rdx, aInvalidStringS; "invalid string: surrogate U+D800..U+DBF"... +000B114D: mov [rax+60h], rdx +000B1151: mov eax, 0Eh +000B1156: jmp loc_B1889 +000B115B: cmp [rbp+var_38], 0DBFFh +000B1162: jle short loc_B1174 +000B1164: cmp [rbp+var_38], 0DFFFh +000B116B: jg short loc_B1174 +000B116D: mov eax, 1 +000B1172: jmp short loc_B1179 +000B1174: mov eax, 0 +000B1179: movzx eax, al +000B117C: test rax, rax +000B117F: jz short loc_B119A +000B1181: mov rax, [rbp+var_48] +000B1185: lea rdx, aInvalidStringS_0; "invalid string: surrogate U+DC00..U+DFF"... +000B118C: mov [rax+60h], rdx +000B1190: mov eax, 0Eh +000B1195: jmp loc_B1889 +000B119A: cmp [rbp+var_34], 0 +000B119E: js short loc_B11A9 +000B11A0: cmp [rbp+var_34], 10FFFFh +000B11A7: jle short loc_B11C8 +000B11A9: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_stringEvE19__PRETTY_FUNCTION__; "nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B11E3: jmp loc_B12ED +000B11E8: cmp [rbp+var_34], 7FFh +000B11EF: jg short loc_B1228 +000B11F1: mov eax, [rbp+var_34] +000B11F4: shr eax, 6 +000B11F7: or al, 0C0h +000B11F9: mov edx, eax +000B11FB: mov rax, [rbp+var_48] +000B11FF: mov rsi, rdx +000B1202: mov rdi, rax +000B1205: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B120A: mov eax, [rbp+var_34] +000B120D: and eax, 3Fh +000B1210: or al, 80h +000B1212: mov edx, eax +000B1214: mov rax, [rbp+var_48] +000B1218: mov rsi, rdx +000B121B: mov rdi, rax +000B121E: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1223: jmp loc_B12ED +000B1228: cmp [rbp+var_34], 0FFFFh +000B122F: jg short loc_B1281 +000B1231: mov eax, [rbp+var_34] +000B1234: shr eax, 0Ch +000B1237: or al, 0E0h +000B1239: mov edx, eax +000B123B: mov rax, [rbp+var_48] +000B123F: mov rsi, rdx +000B1242: mov rdi, rax +000B1245: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B124A: mov eax, [rbp+var_34] +000B124D: shr eax, 6 +000B1250: and eax, 3Fh +000B1253: or al, 80h +000B1255: mov edx, eax +000B1257: mov rax, [rbp+var_48] +000B125B: mov rsi, rdx +000B125E: mov rdi, rax +000B1261: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1266: mov eax, [rbp+var_34] +000B1269: and eax, 3Fh +000B126C: or al, 80h +000B126E: mov edx, eax +000B1270: mov rax, [rbp+var_48] +000B1274: mov rsi, rdx +000B1277: mov rdi, rax +000B127A: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B127F: jmp short loc_B12ED +000B1281: mov eax, [rbp+var_34] +000B1284: shr eax, 12h +000B1287: or al, 0F0h +000B1289: mov edx, eax +000B128B: mov rax, [rbp+var_48] +000B128F: mov rsi, rdx +000B1292: mov rdi, rax +000B1295: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B129A: mov eax, [rbp+var_34] +000B129D: shr eax, 0Ch +000B12A0: and eax, 3Fh +000B12A3: or al, 80h +000B12A5: mov edx, eax +000B12A7: mov rax, [rbp+var_48] +000B12AB: mov rsi, rdx +000B12AE: mov rdi, rax +000B12B1: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B12B6: mov eax, [rbp+var_34] +000B12B9: shr eax, 6 +000B12BC: and eax, 3Fh +000B12BF: or al, 80h +000B12C1: mov edx, eax +000B12C3: mov rax, [rbp+var_48] +000B12C7: mov rsi, rdx +000B12CA: mov rdi, rax +000B12CD: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B12D2: mov eax, [rbp+var_34] +000B12D5: and eax, 3Fh +000B12D8: or al, 80h +000B12DA: mov edx, eax +000B12DC: mov rax, [rbp+var_48] +000B12E0: mov rsi, rdx +000B12E3: mov rdi, rax +000B12E6: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B12EB: jmp short loc_B1308 +000B12ED: jmp short loc_B1308 +000B12EF: mov rax, [rbp+var_48]; jumptable 00000000000B0F6B default case, cases 35-46,48-91,93-97,99-101,103-109,111-113,115 +000B12F3: lea rdx, aInvalidStringF; "invalid string: forbidden character aft"... +000B12FA: mov [rax+60h], rdx +000B12FE: mov eax, 0Eh +000B1303: jmp loc_B1889 +000B1308: jmp loc_B1884 +000B130D: mov rax, [rbp+var_48] +000B1311: lea rdx, aInvalidStringC; "invalid string: control character U+000"... +000B1318: mov [rax+60h], rdx +000B131C: mov eax, 0Eh +000B1321: jmp loc_B1889 +000B1326: mov rax, [rbp+var_48] +000B132A: lea rdx, aInvalidStringC_0; "invalid string: control character U+000"... +000B1331: mov [rax+60h], rdx +000B1335: mov eax, 0Eh +000B133A: jmp loc_B1889 +000B133F: mov rax, [rbp+var_48] +000B1343: lea rdx, aInvalidStringC_1; "invalid string: control character U+000"... +000B134A: mov [rax+60h], rdx +000B134E: mov eax, 0Eh +000B1353: jmp loc_B1889 +000B1358: mov rax, [rbp+var_48] +000B135C: lea rdx, aInvalidStringC_2; "invalid string: control character U+000"... +000B1363: mov [rax+60h], rdx +000B1367: mov eax, 0Eh +000B136C: jmp loc_B1889 +000B1371: mov rax, [rbp+var_48] +000B1375: lea rdx, aInvalidStringC_3; "invalid string: control character U+000"... +000B137C: mov [rax+60h], rdx +000B1380: mov eax, 0Eh +000B1385: jmp loc_B1889 +000B138A: mov rax, [rbp+var_48] +000B138E: lea rdx, aInvalidStringC_4; "invalid string: control character U+000"... +000B1395: mov [rax+60h], rdx +000B1399: mov eax, 0Eh +000B139E: jmp loc_B1889 +000B13A3: mov rax, [rbp+var_48] +000B13A7: lea rdx, aInvalidStringC_5; "invalid string: control character U+000"... +000B13AE: mov [rax+60h], rdx +000B13B2: mov eax, 0Eh +000B13B7: jmp loc_B1889 +000B13BC: mov rax, [rbp+var_48] +000B13C0: lea rdx, aInvalidStringC_6; "invalid string: control character U+000"... +000B13C7: mov [rax+60h], rdx +000B13CB: mov eax, 0Eh +000B13D0: jmp loc_B1889 +000B13D5: mov rax, [rbp+var_48] +000B13D9: lea rdx, aInvalidStringC_7; "invalid string: control character U+000"... +000B13E0: mov [rax+60h], rdx +000B13E4: mov eax, 0Eh +000B13E9: jmp loc_B1889 +000B13EE: mov rax, [rbp+var_48] +000B13F2: lea rdx, aInvalidStringC_8; "invalid string: control character U+000"... +000B13F9: mov [rax+60h], rdx +000B13FD: mov eax, 0Eh +000B1402: jmp loc_B1889 +000B1407: mov rax, [rbp+var_48] +000B140B: lea rdx, aInvalidStringC_9; "invalid string: control character U+000"... +000B1412: mov [rax+60h], rdx +000B1416: mov eax, 0Eh +000B141B: jmp loc_B1889 +000B1420: mov rax, [rbp+var_48] +000B1424: lea rdx, aInvalidStringC_10; "invalid string: control character U+000"... +000B142B: mov [rax+60h], rdx +000B142F: mov eax, 0Eh +000B1434: jmp loc_B1889 +000B1439: mov rax, [rbp+var_48] +000B143D: lea rdx, aInvalidStringC_11; "invalid string: control character U+000"... +000B1444: mov [rax+60h], rdx +000B1448: mov eax, 0Eh +000B144D: jmp loc_B1889 +000B1452: mov rax, [rbp+var_48] +000B1456: lea rdx, aInvalidStringC_12; "invalid string: control character U+000"... +000B145D: mov [rax+60h], rdx +000B1461: mov eax, 0Eh +000B1466: jmp loc_B1889 +000B146B: mov rax, [rbp+var_48] +000B146F: lea rdx, aInvalidStringC_13; "invalid string: control character U+000"... +000B1476: mov [rax+60h], rdx +000B147A: mov eax, 0Eh +000B147F: jmp loc_B1889 +000B1484: mov rax, [rbp+var_48] +000B1488: lea rdx, aInvalidStringC_14; "invalid string: control character U+000"... +000B148F: mov [rax+60h], rdx +000B1493: mov eax, 0Eh +000B1498: jmp loc_B1889 +000B149D: mov rax, [rbp+var_48] +000B14A1: lea rdx, aInvalidStringC_15; "invalid string: control character U+001"... +000B14A8: mov [rax+60h], rdx +000B14AC: mov eax, 0Eh +000B14B1: jmp loc_B1889 +000B14B6: mov rax, [rbp+var_48] +000B14BA: lea rdx, aInvalidStringC_16; "invalid string: control character U+001"... +000B14C1: mov [rax+60h], rdx +000B14C5: mov eax, 0Eh +000B14CA: jmp loc_B1889 +000B14CF: mov rax, [rbp+var_48] +000B14D3: lea rdx, aInvalidStringC_17; "invalid string: control character U+001"... +000B14DA: mov [rax+60h], rdx +000B14DE: mov eax, 0Eh +000B14E3: jmp loc_B1889 +000B14E8: mov rax, [rbp+var_48] +000B14EC: lea rdx, aInvalidStringC_18; "invalid string: control character U+001"... +000B14F3: mov [rax+60h], rdx +000B14F7: mov eax, 0Eh +000B14FC: jmp loc_B1889 +000B1501: mov rax, [rbp+var_48] +000B1505: lea rdx, aInvalidStringC_19; "invalid string: control character U+001"... +000B150C: mov [rax+60h], rdx +000B1510: mov eax, 0Eh +000B1515: jmp loc_B1889 +000B151A: mov rax, [rbp+var_48] +000B151E: lea rdx, aInvalidStringC_20; "invalid string: control character U+001"... +000B1525: mov [rax+60h], rdx +000B1529: mov eax, 0Eh +000B152E: jmp loc_B1889 +000B1533: mov rax, [rbp+var_48] +000B1537: lea rdx, aInvalidStringC_21; "invalid string: control character U+001"... +000B153E: mov [rax+60h], rdx +000B1542: mov eax, 0Eh +000B1547: jmp loc_B1889 +000B154C: mov rax, [rbp+var_48] +000B1550: lea rdx, aInvalidStringC_22; "invalid string: control character U+001"... +000B1557: mov [rax+60h], rdx +000B155B: mov eax, 0Eh +000B1560: jmp loc_B1889 +000B1565: mov rax, [rbp+var_48] +000B1569: lea rdx, aInvalidStringC_23; "invalid string: control character U+001"... +000B1570: mov [rax+60h], rdx +000B1574: mov eax, 0Eh +000B1579: jmp loc_B1889 +000B157E: mov rax, [rbp+var_48] +000B1582: lea rdx, aInvalidStringC_24; "invalid string: control character U+001"... +000B1589: mov [rax+60h], rdx +000B158D: mov eax, 0Eh +000B1592: jmp loc_B1889 +000B1597: mov rax, [rbp+var_48] +000B159B: lea rdx, aInvalidStringC_25; "invalid string: control character U+001"... +000B15A2: mov [rax+60h], rdx +000B15A6: mov eax, 0Eh +000B15AB: jmp loc_B1889 +000B15B0: mov rax, [rbp+var_48] +000B15B4: lea rdx, aInvalidStringC_26; "invalid string: control character U+001"... +000B15BB: mov [rax+60h], rdx +000B15BF: mov eax, 0Eh +000B15C4: jmp loc_B1889 +000B15C9: mov rax, [rbp+var_48] +000B15CD: lea rdx, aInvalidStringC_27; "invalid string: control character U+001"... +000B15D4: mov [rax+60h], rdx +000B15D8: mov eax, 0Eh +000B15DD: jmp loc_B1889 +000B15E2: mov rax, [rbp+var_48] +000B15E6: lea rdx, aInvalidStringC_28; "invalid string: control character U+001"... +000B15ED: mov [rax+60h], rdx +000B15F1: mov eax, 0Eh +000B15F6: jmp loc_B1889 +000B15FB: mov rax, [rbp+var_48] +000B15FF: lea rdx, aInvalidStringC_29; "invalid string: control character U+001"... +000B1606: mov [rax+60h], rdx +000B160A: mov eax, 0Eh +000B160F: jmp loc_B1889 +000B1614: mov rax, [rbp+var_48] +000B1618: lea rdx, aInvalidStringC_30; "invalid string: control character U+001"... +000B161F: mov [rax+60h], rdx +000B1623: mov eax, 0Eh +000B1628: jmp loc_B1889 +000B162D: mov rax, [rbp+var_48] +000B1631: mov rdx, [rax+18h] +000B1635: mov rax, [rbp+var_48] +000B1639: mov rsi, rdx +000B163C: mov rdi, rax +000B163F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1644: jmp loc_B1884 +000B1649: lea rax, __116 +000B1650: mov [rbp+var_A0], rax +000B1657: mov [rbp+var_98], 2 +000B1662: mov rax, [rbp+var_A0] +000B1669: mov rdx, [rbp+var_98] +000B1670: mov rcx, rax +000B1673: mov rbx, rdx +000B1676: mov rax, [rbp+var_48] +000B167A: mov rsi, rcx +000B167D: mov rdi, rax +000B1680: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B1685: xor eax, 1 +000B1688: movzx eax, al +000B168B: test rax, rax +000B168E: setnz al +000B1691: test al, al +000B1693: jz short loc_B169F +000B1695: mov eax, 0Eh +000B169A: jmp loc_B1889 +000B169F: jmp loc_B1884 +000B16A4: lea rax, __117 +000B16AB: mov [rbp+var_90], rax +000B16B2: mov [rbp+var_88], 4 +000B16BD: mov rax, [rbp+var_90] +000B16C4: mov rdx, [rbp+var_88] +000B16CB: mov rcx, rax +000B16CE: mov rbx, rdx +000B16D1: mov rax, [rbp+var_48] +000B16D5: mov rsi, rcx +000B16D8: mov rdi, rax +000B16DB: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B16E0: xor eax, 1 +000B16E3: movzx eax, al +000B16E6: test rax, rax +000B16E9: setnz al +000B16EC: test al, al +000B16EE: jz short loc_B16FA +000B16F0: mov eax, 0Eh +000B16F5: jmp loc_B1889 +000B16FA: jmp loc_B1884 +000B16FF: lea rax, __118 +000B1706: mov [rbp+var_80], rax +000B170A: mov [rbp+var_78], 4 +000B1712: mov rax, [rbp+var_80] +000B1716: mov rdx, [rbp+var_78] +000B171A: mov rcx, rax +000B171D: mov rbx, rdx +000B1720: mov rax, [rbp+var_48] +000B1724: mov rsi, rcx +000B1727: mov rdi, rax +000B172A: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B172F: xor eax, 1 +000B1732: movzx eax, al +000B1735: test rax, rax +000B1738: setnz al +000B173B: test al, al +000B173D: jz short loc_B1749 +000B173F: mov eax, 0Eh +000B1744: jmp loc_B1889 +000B1749: jmp loc_B1884 +000B174E: lea rax, __119 +000B1755: mov [rbp+var_70], rax +000B1759: mov [rbp+var_68], 4 +000B1761: mov rax, [rbp+var_70] +000B1765: mov rdx, [rbp+var_68] +000B1769: mov rcx, rax +000B176C: mov rbx, rdx +000B176F: mov rax, [rbp+var_48] +000B1773: mov rsi, rcx +000B1776: mov rdi, rax +000B1779: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B177E: xor eax, 1 +000B1781: movzx eax, al +000B1784: test rax, rax +000B1787: setnz al +000B178A: test al, al +000B178C: jz short loc_B1798 +000B178E: mov eax, 0Eh +000B1793: jmp loc_B1889 +000B1798: jmp loc_B1884 +000B179D: lea rax, __120 +000B17A4: mov [rbp+var_60], rax +000B17A8: mov [rbp+var_58], 6 +000B17B0: mov rax, [rbp+var_60] +000B17B4: mov rdx, [rbp+var_58] +000B17B8: mov rcx, rax +000B17BB: mov rbx, rdx +000B17BE: mov rax, [rbp+var_48] +000B17C2: mov rsi, rcx +000B17C5: mov rdi, rax +000B17C8: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B17CD: xor eax, 1 +000B17D0: movzx eax, al +000B17D3: test rax, rax +000B17D6: setnz al +000B17D9: test al, al +000B17DB: jz short loc_B17E7 +000B17DD: mov eax, 0Eh +000B17E2: jmp loc_B1889 +000B17E7: jmp loc_B1884 +000B17EC: lea r14, __121 +000B17F3: mov r15d, 6 +000B17F9: mov rcx, r14 +000B17FC: mov rbx, r15 +000B17FF: mov rax, r14 +000B1802: mov rdx, r15 +000B1805: mov rax, [rbp+var_48] +000B1809: mov rsi, rcx +000B180C: mov rdi, rax +000B180F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B1814: xor eax, 1 +000B1817: movzx eax, al +000B181A: test rax, rax +000B181D: setnz al +000B1820: test al, al +000B1822: jz short loc_B182B +000B1824: mov eax, 0Eh +000B1829: jmp short loc_B1889 +000B182B: jmp short loc_B1884 +000B182D: lea r12, __122 +000B1834: mov r13d, 6 +000B183A: mov rcx, r12 +000B183D: mov rbx, r13 +000B1840: mov rax, r12 +000B1843: mov rdx, r13 +000B1846: mov rax, [rbp+var_48] +000B184A: mov rsi, rcx +000B184D: mov rdi, rax +000B1850: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::next_byte_in_range(std::initializer_list) +000B1855: xor eax, 1 +000B1858: movzx eax, al +000B185B: test rax, rax +000B185E: setnz al +000B1861: test al, al +000B1863: jz short loc_B186C +000B1865: mov eax, 0Eh +000B186A: jmp short loc_B1889 +000B186C: jmp short loc_B1884 +000B186E: mov rax, [rbp+var_48] +000B1872: lea rdx, aInvalidStringI; "invalid string: ill-formed UTF-8 byte" +000B1879: mov [rax+60h], rdx +000B187D: mov eax, 0Eh +000B1882: jmp short loc_B1889 +000B1884: jmp loc_B0CC0 +000B1889: add rsp, 78h +000B188D: pop rbx +000B188E: pop r12 +000B1890: pop r13 +000B1892: pop r14 +000B1894: pop r15 +000B1896: pop rbp +000B1897: retn + +### FUNC 000B1898 - 000B1E52 (1466 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEv +000B1898: push rbp +000B1899: mov rbp, rsp +000B189C: push rbx +000B189D: sub rsp, 38h +000B18A1: mov [rbp+var_38], rdi +000B18A5: mov rax, [rbp+var_38] +000B18A9: mov rdi, rax +000B18AC: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5resetEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::reset(void) +000B18B1: mov [rbp+var_14], 5 +000B18B8: mov rax, [rbp+var_38] +000B18BC: mov rax, [rax+18h] +000B18C0: cmp rax, 30h ; '0' +000B18C4: jz short loc_B190F +000B18C6: cmp rax, 30h ; '0' +000B18CA: ja short loc_B18D4 +000B18CC: cmp rax, 2Dh ; '-' +000B18D0: jz short loc_B18DC +000B18D2: jmp short loc_B1947 +000B18D4: cmp rax, 39h ; '9' +000B18D8: ja short loc_B1947 +000B18DA: jmp short loc_B192B +000B18DC: mov rax, [rbp+var_38] +000B18E0: mov rdx, [rax+18h] +000B18E4: mov rax, [rbp+var_38] +000B18E8: mov rsi, rdx +000B18EB: mov rdi, rax +000B18EE: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B18F3: nop +000B18F4: mov [rbp+var_14], 6 +000B18FB: mov rax, [rbp+var_38] +000B18FF: mov rdi, rax +000B1902: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1907: cmp rax, 30h ; '0' +000B190B: jz short loc_B1974 +000B190D: jmp short loc_B1966 +000B190F: mov rax, [rbp+var_38] +000B1913: mov rdx, [rax+18h] +000B1917: mov rax, [rbp+var_38] +000B191B: mov rsi, rdx +000B191E: mov rdi, rax +000B1921: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1926: jmp loc_B19BF +000B192B: mov rax, [rbp+var_38] +000B192F: mov rdx, [rax+18h] +000B1933: mov rax, [rbp+var_38] +000B1937: mov rsi, rdx +000B193A: mov rdi, rax +000B193D: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1942: jmp loc_B1A1D +000B1947: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEvE19__PRETTY_FUNCTION__; "nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B198B: jmp short loc_B19BF +000B198D: mov rax, [rbp+var_38] +000B1991: mov rdx, [rax+18h] +000B1995: mov rax, [rbp+var_38] +000B1999: mov rsi, rdx +000B199C: mov rdi, rax +000B199F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B19A4: jmp short loc_B1A1D +000B19A6: mov rax, [rbp+var_38] +000B19AA: lea rdx, aInvalidNumberE; "invalid number; expected digit after '-"... +000B19B1: mov [rax+60h], rdx +000B19B5: mov eax, 0Eh +000B19BA: jmp loc_B1E4B +000B19BF: mov rax, [rbp+var_38] +000B19C3: mov rdi, rax +000B19C6: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B19CB: cmp rax, 45h ; 'E' +000B19CF: jz short loc_B1A01 +000B19D1: cmp rax, 65h ; 'e' +000B19D5: jz short loc_B1A01 +000B19D7: cmp rax, 2Eh ; '.' +000B19DB: jz short loc_B19E2 +000B19DD: jmp loc_B1C4F +000B19E2: mov rax, [rbp+var_38] +000B19E6: mov rdx, [rax+80h] +000B19ED: mov rax, [rbp+var_38] +000B19F1: mov rsi, rdx +000B19F4: mov rdi, rax +000B19F7: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B19FC: jmp loc_B1AA2 +000B1A01: mov rax, [rbp+var_38] +000B1A05: mov rdx, [rax+18h] +000B1A09: mov rax, [rbp+var_38] +000B1A0D: mov rsi, rdx +000B1A10: mov rdi, rax +000B1A13: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1A18: jmp loc_B1B55 +000B1A1D: mov rax, [rbp+var_38] +000B1A21: mov rdi, rax +000B1A24: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1A29: cmp rax, 39h ; '9' +000B1A2D: ja short loc_B1A40 +000B1A2F: cmp rax, 30h ; '0' +000B1A33: jnb short loc_B1A51 +000B1A35: cmp rax, 2Eh ; '.' +000B1A39: jz short loc_B1A6A +000B1A3B: jmp loc_B1C4F +000B1A40: cmp rax, 45h ; 'E' +000B1A44: jz short loc_B1A86 +000B1A46: cmp rax, 65h ; 'e' +000B1A4A: jz short loc_B1A86 +000B1A4C: jmp loc_B1C4F +000B1A51: mov rax, [rbp+var_38] +000B1A55: mov rdx, [rax+18h] +000B1A59: mov rax, [rbp+var_38] +000B1A5D: mov rsi, rdx +000B1A60: mov rdi, rax +000B1A63: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1A68: jmp short loc_B1A1D +000B1A6A: mov rax, [rbp+var_38] +000B1A6E: mov rdx, [rax+80h] +000B1A75: mov rax, [rbp+var_38] +000B1A79: mov rsi, rdx +000B1A7C: mov rdi, rax +000B1A7F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1A84: jmp short loc_B1AA2 +000B1A86: mov rax, [rbp+var_38] +000B1A8A: mov rdx, [rax+18h] +000B1A8E: mov rax, [rbp+var_38] +000B1A92: mov rsi, rdx +000B1A95: mov rdi, rax +000B1A98: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1A9D: jmp loc_B1B55 +000B1AA2: mov [rbp+var_14], 7 +000B1AA9: mov rax, [rbp+var_38] +000B1AAD: mov rdi, rax +000B1AB0: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1AB5: sub rax, 30h ; '0' +000B1AB9: cmp rax, 9 +000B1ABD: ja short loc_B1AD8 +000B1ABF: mov rax, [rbp+var_38] +000B1AC3: mov rdx, [rax+18h] +000B1AC7: mov rax, [rbp+var_38] +000B1ACB: mov rsi, rdx +000B1ACE: mov rdi, rax +000B1AD1: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1AD6: jmp short loc_B1AF1 +000B1AD8: mov rax, [rbp+var_38] +000B1ADC: lea rdx, aInvalidNumberE_0; "invalid number; expected digit after '."... +000B1AE3: mov [rax+60h], rdx +000B1AE7: mov eax, 0Eh +000B1AEC: jmp loc_B1E4B +000B1AF1: mov rax, [rbp+var_38] +000B1AF5: mov rdi, rax +000B1AF8: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1AFD: cmp rax, 45h ; 'E' +000B1B01: jz short loc_B1B3D +000B1B03: cmp rax, 45h ; 'E' +000B1B07: ja short loc_B1B19 +000B1B09: sub rax, 30h ; '0' +000B1B0D: cmp rax, 9 +000B1B11: ja loc_B1C4B +000B1B17: jmp short loc_B1B24 +000B1B19: cmp rax, 65h ; 'e' +000B1B1D: jz short loc_B1B3D +000B1B1F: jmp loc_B1C4B +000B1B24: mov rax, [rbp+var_38] +000B1B28: mov rdx, [rax+18h] +000B1B2C: mov rax, [rbp+var_38] +000B1B30: mov rsi, rdx +000B1B33: mov rdi, rax +000B1B36: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1B3B: jmp short loc_B1AF1 +000B1B3D: mov rax, [rbp+var_38] +000B1B41: mov rdx, [rax+18h] +000B1B45: mov rax, [rbp+var_38] +000B1B49: mov rsi, rdx +000B1B4C: mov rdi, rax +000B1B4F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1B54: nop +000B1B55: mov [rbp+var_14], 7 +000B1B5C: mov rax, [rbp+var_38] +000B1B60: mov rdi, rax +000B1B63: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1B68: cmp rax, 2Dh ; '-' +000B1B6C: jz short loc_B1B88 +000B1B6E: cmp rax, 2Dh ; '-' +000B1B72: ja short loc_B1B7C +000B1B74: cmp rax, 2Bh ; '+' +000B1B78: jz short loc_B1B88 +000B1B7A: jmp short loc_B1BD1 +000B1B7C: sub rax, 30h ; '0' +000B1B80: cmp rax, 9 +000B1B84: ja short loc_B1BD1 +000B1B86: jmp short loc_B1BB8 +000B1B88: mov rax, [rbp+var_38] +000B1B8C: mov rdx, [rax+18h] +000B1B90: mov rax, [rbp+var_38] +000B1B94: mov rsi, rdx +000B1B97: mov rdi, rax +000B1B9A: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1B9F: nop +000B1BA0: mov rax, [rbp+var_38] +000B1BA4: mov rdi, rax +000B1BA7: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1BAC: sub rax, 30h ; '0' +000B1BB0: cmp rax, 9 +000B1BB4: ja short loc_B1C03 +000B1BB6: jmp short loc_B1BEA +000B1BB8: mov rax, [rbp+var_38] +000B1BBC: mov rdx, [rax+18h] +000B1BC0: mov rax, [rbp+var_38] +000B1BC4: mov rsi, rdx +000B1BC7: mov rdi, rax +000B1BCA: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1BCF: jmp short loc_B1C1C +000B1BD1: mov rax, [rbp+var_38] +000B1BD5: lea rdx, aInvalidNumberE_1; "invalid number; expected '+', '-', or d"... +000B1BDC: mov [rax+60h], rdx +000B1BE0: mov eax, 0Eh +000B1BE5: jmp loc_B1E4B +000B1BEA: mov rax, [rbp+var_38] +000B1BEE: mov rdx, [rax+18h] +000B1BF2: mov rax, [rbp+var_38] +000B1BF6: mov rsi, rdx +000B1BF9: mov rdi, rax +000B1BFC: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1C01: jmp short loc_B1C1C +000B1C03: mov rax, [rbp+var_38] +000B1C07: lea rdx, aInvalidNumberE_2; "invalid number; expected digit after ex"... +000B1C0E: mov [rax+60h], rdx +000B1C12: mov eax, 0Eh +000B1C17: jmp loc_B1E4B +000B1C1C: mov rax, [rbp+var_38] +000B1C20: mov rdi, rax +000B1C23: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B1C28: sub rax, 30h ; '0' +000B1C2C: cmp rax, 9 +000B1C30: ja short loc_B1C4E +000B1C32: mov rax, [rbp+var_38] +000B1C36: mov rdx, [rax+18h] +000B1C3A: mov rax, [rbp+var_38] +000B1C3E: mov rsi, rdx +000B1C41: mov rdi, rax +000B1C44: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B1C49: jmp short loc_B1C1C +000B1C4B: nop +000B1C4C: jmp short loc_B1C4F +000B1C4E: nop +000B1C4F: mov rax, [rbp+var_38] +000B1C53: mov rdi, rax +000B1C56: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::unget(void) +000B1C5B: mov [rbp+endptr], 0 +000B1C63: call ___errno_location +000B1C68: mov dword ptr [rax], 0 +000B1C6E: cmp [rbp+var_14], 5 +000B1C72: jnz loc_B1D23 +000B1C78: mov rax, [rbp+var_38] +000B1C7C: add rax, 58h ; 'X' +000B1C80: mov rdi, rax; this +000B1C83: call __ZNKSs4dataEv; std::string::data(void) +000B1C88: lea rcx, [rbp+endptr] +000B1C8C: mov edx, 0Ah; base +000B1C91: mov rsi, rcx; endptr +000B1C94: mov rdi, rax; nptr +000B1C97: call _strtoull +000B1C9C: mov [rbp+var_20], rax +000B1CA0: mov rax, [rbp+var_38] +000B1CA4: add rax, 58h ; 'X' +000B1CA8: mov rdi, rax; this +000B1CAB: call __ZNKSs4dataEv; std::string::data(void) +000B1CB0: mov rbx, rax +000B1CB3: mov rax, [rbp+var_38] +000B1CB7: add rax, 58h ; 'X' +000B1CBB: mov rdi, rax; this +000B1CBE: call __ZNKSs4sizeEv; std::string::size(void) +000B1CC3: lea rdx, [rbx+rax] +000B1CC7: mov rax, [rbp+endptr] +000B1CCB: cmp rdx, rax +000B1CCE: jz short loc_B1CEF +000B1CD0: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEvE19__PRETTY_FUNCTION__; "nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::strtof(double &,char const*,char **) +000B1DF7: mov rax, [rbp+var_38] +000B1DFB: add rax, 58h ; 'X' +000B1DFF: mov rdi, rax; this +000B1E02: call __ZNKSs4dataEv; std::string::data(void) +000B1E07: mov rbx, rax +000B1E0A: mov rax, [rbp+var_38] +000B1E0E: add rax, 58h ; 'X' +000B1E12: mov rdi, rax; this +000B1E15: call __ZNKSs4sizeEv; std::string::size(void) +000B1E1A: lea rdx, [rbx+rax] +000B1E1E: mov rax, [rbp+endptr] +000B1E22: cmp rdx, rax +000B1E25: jz short loc_B1E46 +000B1E27: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE11scan_numberEvE19__PRETTY_FUNCTION__; "nlohmann::detail::lexer>>,std::less,std::allocator>>>>>>::max_size(void) +000B1E72: cmp rax, [rbp+var_10] +000B1E76: setb al +000B1E79: test al, al +000B1E7B: jz short loc_B1E82 +000B1E7D: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B1E82: mov rdx, [rbp+var_10] +000B1E86: mov rax, rdx +000B1E89: add rax, rax +000B1E8C: add rax, rdx +000B1E8F: shl rax, 4 +000B1E93: mov rdi, rax; unsigned __int64 +000B1E96: call __Znwm; operator new(ulong) +000B1E9B: leave +000B1E9C: retn + +### FUNC 000B1E9D - 000B1EAB (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSN_ +000B1E9D: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIEEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSN_' +000B1E9E: mov rbp, rsp +000B1EA1: mov [rbp+var_8], rdi +000B1EA5: mov rax, [rbp+var_8] +000B1EA9: pop rbp +000B1EAA: retn + +### FUNC 000B1EAB - 000B1EC5 (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EE7_M_headERSN_ +000B1EAB: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIEEEPT_DpOT0_EUlPSF_E_EE7_M_headERSN_' +000B1EAC: mov rbp, rsp +000B1EAF: sub rsp, 10h +000B1EB3: mov [rbp+var_8], rdi +000B1EB7: mov rax, [rbp+var_8] +000B1EBB: mov rdi, rax +000B1EBE: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSN_ +000B1EC3: leave +000B1EC4: retn + +### FUNC 000B1EC5 - 000B1EDF (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +000B1EC5: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIEEEPT_DpOT0_EUlPSF_E_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISO_DpT1_EE' +000B1EC6: mov rbp, rsp +000B1EC9: sub rsp, 10h +000B1ECD: mov [rbp+var_8], rdi +000B1ED1: mov rax, [rbp+var_8] +000B1ED5: mov rdi, rax +000B1ED8: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_EE7_M_headERSN_ +000B1EDD: leave +000B1EDE: retn + +### FUNC 000B1EDF - 000B1EF9 (26 bytes) name=_ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_ +000B1EDF: push rbp; Alternative name is '_ZSt3getILm1EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSS_' +000B1EE0: mov rbp, rsp +000B1EE3: sub rsp, 10h +000B1EE7: mov [rbp+var_8], rdi +000B1EEB: mov rax, [rbp+var_8] +000B1EEF: mov rdi, rax +000B1EF2: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJEEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSO_DpT1_EE +000B1EF7: leave +000B1EF8: retn + +### FUNC 000B1EFA - 000B1F14 (26 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +000B1EFA: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlPSE_E_E11get_deleterEv' +000B1EFB: mov rbp, rsp +000B1EFE: sub rsp, 10h +000B1F02: mov [rbp+var_8], rdi +000B1F06: mov rax, [rbp+var_8] +000B1F0A: mov rdi, rax +000B1F0D: call __ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSS_; std::get<1ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::__add_ref>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>::type>&) +000B1F12: leave +000B1F13: retn + +### FUNC 000B1F14 - 000B1F39 (37 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JEEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSK_DpOSL_ +000B1F14: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_IEEENSt9enable_ifIXsrNSG_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSF_PSK_DpOSL_' +000B1F15: mov rbp, rsp +000B1F18: sub rsp, 10h +000B1F1C: mov [rbp+var_8], rdi +000B1F20: mov [rbp+var_10], rsi +000B1F24: mov rdx, [rbp+var_10] +000B1F28: mov rax, [rbp+var_8] +000B1F2C: mov rsi, rdx +000B1F2F: mov rdi, rax +000B1F32: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::construct>>,std::less,std::allocator>>>>>>(std::map>>,std::less,std::allocator>>>>> *) +000B1F37: leave +000B1F38: retn + +### FUNC 000B1F3A - 000B1F5A (32 bytes) name=_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_EcvbEv +000B1F3A: push rbp; Alternative name is '_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IEEEPT_DpOT0_EUlPSE_E_EcvbEv' +000B1F3B: mov rbp, rsp +000B1F3E: sub rsp, 10h +000B1F42: mov [rbp+var_8], rdi +000B1F46: mov rax, [rbp+var_8] +000B1F4A: mov rdi, rax +000B1F4D: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JEEEPT_DpOT0_EUlPSE_E_E3getEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>>()::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get(void) +000B1F52: test rax, rax +000B1F55: setnz al +000B1F58: leave +000B1F59: retn + +### FUNC 000B1F5A - 000B1FA5 (75 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8allocateEmPKv +000B1F5A: push rbp +000B1F5B: mov rbp, rsp +000B1F5E: sub rsp, 20h +000B1F62: mov [rbp+var_8], rdi +000B1F66: mov [rbp+var_10], rsi +000B1F6A: mov [rbp+var_18], rdx +000B1F6E: mov rax, [rbp+var_8] +000B1F72: mov rdi, rax +000B1F75: call __ZNK9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8max_sizeEv; __gnu_cxx::new_allocator>>,std::allocator>>>>>::max_size(void) +000B1F7A: cmp rax, [rbp+var_10] +000B1F7E: setb al +000B1F81: test al, al +000B1F83: jz short loc_B1F8A +000B1F85: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B1F8A: mov rdx, [rbp+var_10] +000B1F8E: mov rax, rdx +000B1F91: add rax, rax +000B1F94: add rax, rdx +000B1F97: shl rax, 3 +000B1F9B: mov rdi, rax; unsigned __int64 +000B1F9E: call __Znwm; operator new(ulong) +000B1FA3: leave +000B1FA4: retn + +### FUNC 000B1FA5 - 000B1FB3 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000B1FA5: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_' +000B1FA6: mov rbp, rsp +000B1FA9: mov [rbp+var_8], rdi +000B1FAD: mov rax, [rbp+var_8] +000B1FB1: pop rbp +000B1FB2: retn + +### FUNC 000B1FB3 - 000B1FCD (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +000B1FB3: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_' +000B1FB4: mov rbp, rsp +000B1FB7: sub rsp, 10h +000B1FBB: mov [rbp+var_8], rdi +000B1FBF: mov rax, [rbp+var_8] +000B1FC3: mov rdi, rax +000B1FC6: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000B1FCB: leave +000B1FCC: retn + +### FUNC 000B1FCD - 000B1FE7 (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B1FCD: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIEEEPT_DpOT0_EUlPSA_E_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISJ_DpT1_EE' +000B1FCE: mov rbp, rsp +000B1FD1: sub rsp, 10h +000B1FD5: mov [rbp+var_8], rdi +000B1FD9: mov rax, [rbp+var_8] +000B1FDD: mov rdi, rax +000B1FE0: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +000B1FE5: leave +000B1FE6: retn + +### FUNC 000B1FE7 - 000B2001 (26 bytes) name=_ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000B1FE7: push rbp; Alternative name is '_ZSt3getILm1EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSN_' +000B1FE8: mov rbp, rsp +000B1FEB: sub rsp, 10h +000B1FEF: mov [rbp+var_8], rdi +000B1FF3: mov rax, [rbp+var_8] +000B1FF7: mov rdi, rax +000B1FFA: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B1FFF: leave +000B2000: retn + +### FUNC 000B2002 - 000B201C (26 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +000B2002: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlPS9_E_E11get_deleterEv' +000B2003: mov rbp, rsp +000B2006: sub rsp, 10h +000B200A: mov [rbp+var_8], rdi +000B200E: mov rax, [rbp+var_8] +000B2012: mov rdi, rax +000B2015: call __ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<1ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::__add_ref>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>> *)#1}>>::type>&) +000B201A: leave +000B201B: retn + +### FUNC 000B201C - 000B2041 (37 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JEEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSF_DpOSG_ +000B201C: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_IEEENSt9enable_ifIXsrNSB_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSA_PSF_DpOSG_' +000B201D: mov rbp, rsp +000B2020: sub rsp, 10h +000B2024: mov [rbp+var_8], rdi +000B2028: mov [rbp+var_10], rsi +000B202C: mov rdx, [rbp+var_10] +000B2030: mov rax, [rbp+var_8] +000B2034: mov rsi, rdx +000B2037: mov rdi, rax +000B203A: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>,std::allocator>>>>>::construct>>,std::allocator>>>>>(std::vector>>,std::allocator>>>> *) +000B203F: leave +000B2040: retn + +### FUNC 000B2042 - 000B2062 (32 bytes) name=_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_EcvbEv +000B2042: push rbp; Alternative name is '_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IEEEPT_DpOT0_EUlPS9_E_EcvbEv' +000B2043: mov rbp, rsp +000B2046: sub rsp, 10h +000B204A: mov [rbp+var_8], rdi +000B204E: mov rax, [rbp+var_8] +000B2052: mov rdi, rax +000B2055: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JEEEPT_DpOT0_EUlPS9_E_E3getEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>>()::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get(void) +000B205A: test rax, rax +000B205D: setnz al +000B2060: leave +000B2061: retn + +### FUNC 000B2062 - 000B20A4 (66 bytes) name=_ZN9__gnu_cxx13new_allocatorISsE8allocateEmPKv +000B2062: push rbp +000B2063: mov rbp, rsp +000B2066: sub rsp, 20h +000B206A: mov [rbp+var_8], rdi +000B206E: mov [rbp+var_10], rsi +000B2072: mov [rbp+var_18], rdx +000B2076: mov rax, [rbp+var_8] +000B207A: mov rdi, rax +000B207D: call __ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000B2082: cmp rax, [rbp+var_10] +000B2086: setb al +000B2089: test al, al +000B208B: jz short loc_B2092 +000B208D: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B2092: mov rax, [rbp+var_10] +000B2096: shl rax, 3 +000B209A: mov rdi, rax; unsigned __int64 +000B209D: call __Znwm; operator new(ulong) +000B20A2: leave +000B20A3: retn + +### FUNC 000B20A4 - 000B20B2 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSJ_ +000B20A4: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSJ_' +000B20A5: mov rbp, rsp +000B20A8: mov [rbp+var_8], rdi +000B20AC: mov rax, [rbp+var_8] +000B20B0: pop rbp +000B20B1: retn + +### FUNC 000B20B2 - 000B20CC (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EE7_M_headERSJ_ +000B20B2: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_EE7_M_headERSJ_' +000B20B3: mov rbp, rsp +000B20B6: sub rsp, 10h +000B20BA: mov [rbp+var_8], rdi +000B20BE: mov rax, [rbp+var_8] +000B20C2: mov rdi, rax +000B20C5: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSJ_; std::_Head_base<1ul,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1},false>::_M_head(nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}&) +000B20CA: leave +000B20CB: retn + +### FUNC 000B20CC - 000B20E6 (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000B20CC: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISK_DpT1_EE' +000B20CD: mov rbp, rsp +000B20D0: sub rsp, 10h +000B20D4: mov [rbp+var_8], rdi +000B20D8: mov rax, [rbp+var_8] +000B20DC: mov rdi, rax +000B20DF: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EE7_M_headERSJ_; std::_Tuple_impl<1ul,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::_M_head(nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}&) +000B20E4: leave +000B20E5: retn + +### FUNC 000B20E6 - 000B2100 (26 bytes) name=_ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_ +000B20E6: push rbp; Alternative name is '_ZSt3getILm1EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSO_' +000B20E7: mov rbp, rsp +000B20EA: sub rsp, 10h +000B20EE: mov [rbp+var_8], rdi +000B20F2: mov rax, [rbp+var_8] +000B20F6: mov rdi, rax +000B20F9: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSK_DpT1_EE +000B20FE: leave +000B20FF: retn + +### FUNC 000B2100 - 000B211A (26 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +000B2100: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_E11get_deleterEv' +000B2101: mov rbp, rsp +000B2104: sub rsp, 10h +000B2108: mov [rbp+var_8], rdi +000B210C: mov rax, [rbp+var_8] +000B2110: mov rdi, rax +000B2113: call __ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSO_; std::get<1ul,std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>(std::string *,nlohmann::basic_json>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}&) +000B2118: leave +000B2119: retn + +### FUNC 000B211A - 000B2152 (56 bytes) name=_ZNSt16allocator_traitsISaISsEE12_S_constructISsJRA1_KcEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS8_DpOS9_ +000B211A: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISsEE12_S_constructISsIRA1_KcEEENSt9enable_ifIXsrNS1_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS0_PS8_DpOS9_' +000B211B: mov rbp, rsp +000B211E: sub rsp, 20h +000B2122: mov [rbp+var_8], rdi +000B2126: mov [rbp+var_10], rsi +000B212A: mov [rbp+var_18], rdx +000B212E: mov rax, [rbp+var_18] +000B2132: mov rdi, rax +000B2135: call __ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B213A: mov rdx, rax +000B213D: mov rcx, [rbp+var_10] +000B2141: mov rax, [rbp+var_8] +000B2145: mov rsi, rcx +000B2148: mov rdi, rax +000B214B: call __ZN9__gnu_cxx13new_allocatorISsE9constructISsJRA1_KcEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(std::string *,char const(&)[1] &&) +000B2150: leave +000B2151: retn + +### FUNC 000B2152 - 000B2172 (32 bytes) name=_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_EcvbEv +000B2152: push rbp; Alternative name is '_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRA1_KcEEEPT_DpOT0_EUlPSsE_EcvbEv' +000B2153: mov rbp, rsp +000B2156: sub rsp, 10h +000B215A: mov [rbp+var_8], rdi +000B215E: mov rax, [rbp+var_8] +000B2162: mov rdi, rax +000B2165: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRA1_KcEEEPT_DpOT0_EUlPSsE_E3getEv; std::unique_ptr>>::create(char const(&)[1] &&)::{lambda(std::string *)#1}>::get(void) +000B216A: test rax, rax +000B216D: setnz al +000B2170: leave +000B2171: retn + +### FUNC 000B2172 - 000B21B4 (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8allocateEmPKv +000B2172: push rbp +000B2173: mov rbp, rsp +000B2176: sub rsp, 20h +000B217A: mov [rbp+var_8], rdi +000B217E: mov [rbp+var_10], rsi +000B2182: mov [rbp+var_18], rdx +000B2186: mov rax, [rbp+var_8] +000B218A: mov rdi, rax +000B218D: call __ZNK9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8max_sizeEv; __gnu_cxx::new_allocator>>>::max_size(void) +000B2192: cmp rax, [rbp+var_10] +000B2196: setb al +000B2199: test al, al +000B219B: jz short loc_B21A2 +000B219D: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B21A2: mov rax, [rbp+var_10] +000B21A6: shl rax, 5 +000B21AA: mov rdi, rax; unsigned __int64 +000B21AD: call __Znwm; operator new(ulong) +000B21B2: leave +000B21B3: retn + +### FUNC 000B21B4 - 000B21C2 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000B21B4: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_' +000B21B5: mov rbp, rsp +000B21B8: mov [rbp+var_8], rdi +000B21BC: mov rax, [rbp+var_8] +000B21C0: pop rbp +000B21C1: retn + +### FUNC 000B21C2 - 000B21DC (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +000B21C2: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_' +000B21C3: mov rbp, rsp +000B21C6: sub rsp, 10h +000B21CA: mov [rbp+var_8], rdi +000B21CE: mov rax, [rbp+var_8] +000B21D2: mov rdi, rax +000B21D5: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSI_ +000B21DA: leave +000B21DB: retn + +### FUNC 000B21DC - 000B21F6 (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B21DC: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIEEEPT_DpOT0_EUlPSA_E_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISJ_DpT1_EE' +000B21DD: mov rbp, rsp +000B21E0: sub rsp, 10h +000B21E4: mov [rbp+var_8], rdi +000B21E8: mov rax, [rbp+var_8] +000B21EC: mov rdi, rax +000B21EF: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_EE7_M_headERSI_ +000B21F4: leave +000B21F5: retn + +### FUNC 000B21F6 - 000B2210 (26 bytes) name=_ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000B21F6: push rbp; Alternative name is '_ZSt3getILm1EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSN_' +000B21F7: mov rbp, rsp +000B21FA: sub rsp, 10h +000B21FE: mov [rbp+var_8], rdi +000B2202: mov rax, [rbp+var_8] +000B2206: mov rdi, rax +000B2209: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJEEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B220E: leave +000B220F: retn + +### FUNC 000B2210 - 000B222A (26 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +000B2210: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlPS5_E_E11get_deleterEv' +000B2211: mov rbp, rsp +000B2214: sub rsp, 10h +000B2218: mov [rbp+var_8], rdi +000B221C: mov rax, [rbp+var_8] +000B2220: mov rdi, rax +000B2223: call __ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<1ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::__add_ref>> *,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>::type>&) +000B2228: leave +000B2229: retn + +### FUNC 000B222A - 000B224F (37 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JEEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSB_DpOSC_ +000B222A: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_IEEENSt9enable_ifIXsrNS7_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS6_PSB_DpOSC_' +000B222B: mov rbp, rsp +000B222E: sub rsp, 10h +000B2232: mov [rbp+var_8], rdi +000B2236: mov [rbp+var_10], rsi +000B223A: mov rdx, [rbp+var_10] +000B223E: mov rax, [rbp+var_8] +000B2242: mov rsi, rdx +000B2245: mov rdi, rax +000B2248: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>>(nlohmann::byte_container_with_subtype>> *) +000B224D: leave +000B224E: retn + +### FUNC 000B2250 - 000B2270 (32 bytes) name=_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_EcvbEv +000B2250: push rbp; Alternative name is '_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IEEEPT_DpOT0_EUlPS5_E_EcvbEv' +000B2251: mov rbp, rsp +000B2254: sub rsp, 10h +000B2258: mov [rbp+var_8], rdi +000B225C: mov rax, [rbp+var_8] +000B2260: mov rdi, rax +000B2263: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JEEEPT_DpOT0_EUlPS5_E_E3getEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>>()::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get(void) +000B2268: test rax, rax +000B226B: setnz al +000B226E: leave +000B226F: retn + +### FUNC 000B2270 - 000B22FD (141 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_ESJ_RS1_ +000B2270: push rbp +000B2271: mov rbp, rsp +000B2274: sub rsp, 30h +000B2278: mov [rbp+var_18], rdi +000B227C: mov [rbp+var_20], rsi +000B2280: mov [rbp+var_28], rdx +000B2284: mov [rbp+var_30], rcx +000B2288: jmp short loc_B22DD +000B228A: mov rax, [rbp+var_20] +000B228E: mov rdi, rax +000B2291: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node>>>> const*) +000B2296: mov rcx, rax +000B2299: mov rax, [rbp+var_18] +000B229D: mov rdx, [rbp+var_30] +000B22A1: mov rsi, rcx +000B22A4: mov rdi, rax +000B22A7: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000B22AC: xor eax, 1 +000B22AF: test al, al +000B22B1: jz short loc_B22CD +000B22B3: mov rax, [rbp+var_20] +000B22B7: mov [rbp+var_28], rax +000B22BB: mov rax, [rbp+var_20] +000B22BF: mov rdi, rax +000B22C2: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_left(std::_Rb_tree_node_base *) +000B22C7: mov [rbp+var_20], rax +000B22CB: jmp short loc_B22DD +000B22CD: mov rax, [rbp+var_20] +000B22D1: mov rdi, rax +000B22D4: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base *) +000B22D9: mov [rbp+var_20], rax +000B22DD: cmp [rbp+var_20], 0 +000B22E2: jnz short loc_B228A +000B22E4: mov rdx, [rbp+var_28] +000B22E8: lea rax, [rbp+var_10] +000B22EC: mov rsi, rdx +000B22EF: mov rdi, rax +000B22F2: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000B22F7: mov rax, [rbp+var_10] +000B22FB: leave +000B22FC: retn + +### FUNC 000B22FE - 000B2322 (36 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv +000B22FE: push rbp +000B22FF: mov rbp, rsp +000B2302: sub rsp, 10h +000B2306: mov [rbp+var_8], rdi +000B230A: mov rax, [rbp+var_8] +000B230E: mov edx, 0 +000B2313: mov esi, 1 +000B2318: mov rdi, rax +000B231B: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8allocateEmPKv; __gnu_cxx::new_allocator>>>>>::allocate(ulong,void const*) +000B2320: leave +000B2321: retn + +### FUNC 000B2322 - 000B2330 (14 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +000B2322: push rbp +000B2323: mov rbp, rsp +000B2326: mov [rbp+var_8], rdi +000B232A: mov rax, [rbp+var_8] +000B232E: pop rbp +000B232F: retn + +### FUNC 000B2330 - 000B239B (107 bytes) name=_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +000B2330: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_IRKSt21piecewise_construct_tSt5tupleIIOSsEESJ_IIEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_' +000B2331: mov rbp, rsp +000B2334: push r12 +000B2336: push rbx +000B2337: sub rsp, 30h +000B233B: mov [rbp+var_18], rdi +000B233F: mov [rbp+var_20], rsi +000B2343: mov [rbp+var_28], rdx +000B2347: mov [rbp+var_30], rcx +000B234B: mov [rbp+var_38], r8 +000B234F: mov rax, [rbp+var_38] +000B2353: mov rdi, rax +000B2356: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B235B: mov r12, rax +000B235E: mov rax, [rbp+var_30] +000B2362: mov rdi, rax +000B2365: call __ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward>(std::remove_reference>::type &) +000B236A: mov rbx, rax +000B236D: mov rax, [rbp+var_28] +000B2371: mov rdi, rax +000B2374: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B2379: mov rdx, rax +000B237C: mov rsi, [rbp+var_20] +000B2380: mov rax, [rbp+var_18] +000B2384: mov r8, r12 +000B2387: mov rcx, rbx +000B238A: mov rdi, rax +000B238D: call __ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +000B2392: add rsp, 30h +000B2396: pop rbx +000B2397: pop r12 +000B2399: pop rbp +000B239A: retn + +### FUNC 000B239C - 000B23C6 (42 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E +000B239C: push rbp +000B239D: mov rbp, rsp +000B23A0: sub rsp, 10h +000B23A4: mov [rbp+var_8], rdi +000B23A8: mov [rbp+var_10], rsi +000B23AC: mov rax, [rbp+var_8] +000B23B0: mov rcx, [rbp+var_10] +000B23B4: mov edx, 1 +000B23B9: mov rsi, rcx +000B23BC: mov rdi, rax +000B23BF: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE10deallocateEPSD_m; __gnu_cxx::new_allocator>>>>>::deallocate(std::_Rb_tree_node>>>>*,ulong) +000B23C4: leave +000B23C5: retn + +### FUNC 000B23C6 - 000B23EE (40 bytes) name=_ZNKSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEE13_M_const_castEv +000B23C6: push rbp +000B23C7: mov rbp, rsp +000B23CA: sub rsp, 20h +000B23CE: mov [rbp+var_18], rdi +000B23D2: mov rax, [rbp+var_18] +000B23D6: mov rdx, [rax] +000B23D9: lea rax, [rbp+var_10] +000B23DD: mov rsi, rdx +000B23E0: mov rdi, rax +000B23E3: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000B23E8: mov rax, [rbp+var_10] +000B23EC: leave +000B23ED: retn + +### FUNC 000B23EE - 000B241A (44 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base +000B23EE: push rbp +000B23EF: mov rbp, rsp +000B23F2: sub rsp, 20h +000B23F6: mov [rbp+var_18], rdi +000B23FA: mov rax, [rbp+var_18] +000B23FE: mov rdi, rax +000B2401: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_value(std::_Rb_tree_node_base const*) +000B2406: mov rdx, rax +000B2409: lea rax, [rbp+var_1] +000B240D: mov rsi, rdx +000B2410: mov rdi, rax +000B2413: call __ZNKSt10_Select1stISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEclERKSA_; std::_Select1st>>>>::operator()(std::pair>>> const&) +000B2418: leave +000B2419: retn + +### FUNC 000B241A - 000B2428 (14 bytes) name=_ZSt7forwardIRPSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEOT_RNSt16remove_referenceISF_E4typeE +000B241A: push rbp +000B241B: mov rbp, rsp +000B241E: mov [rbp+var_8], rdi +000B2422: mov rax, [rbp+var_8] +000B2426: pop rbp +000B2427: retn + +### FUNC 000B2428 - 000B246B (67 bytes) name=_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS6_14adl_serializerES9_IhSaIhEEEEEESH_vEEOT_OT0_ +000B2428: push rbp; Alternative name is 'std::pair::pair>>>> *&, std::_Rb_tree_node>>>> *&, void>(std::_Rb_tree_node>>>> *&, std::_Rb_tree_node>>>> *&>(std::remove_reference>>>> *&>::type &) +000B2448: mov rdx, [rax] +000B244B: mov rax, [rbp+var_8] +000B244F: mov [rax], rdx +000B2452: mov rax, [rbp+var_18] +000B2456: mov rdi, rax +000B2459: call __ZSt7forwardIRPSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEOT_RNSt16remove_referenceISF_E4typeE; std::forward>>>> *&>(std::remove_reference>>>> *&>::type &) +000B245E: mov rdx, [rax] +000B2461: mov rax, [rbp+var_8] +000B2465: mov [rax+8], rdx +000B2469: leave +000B246A: retn + +### FUNC 000B246C - 000B25D9 (365 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE24_M_get_insert_unique_posERS1_ +000B246C: push rbp +000B246D: mov rbp, rsp +000B2470: add rsp, 0FFFFFFFFFFFFFF80h +000B2474: mov [rbp+var_78], rdi +000B2478: mov [rbp+var_80], rsi +000B247C: mov rax, [rbp+var_78] +000B2480: mov rdi, rax +000B2483: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_begin(void) +000B2488: mov [rbp+var_58], rax +000B248C: mov rax, [rbp+var_78] +000B2490: mov rdi, rax +000B2493: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000B2498: mov [rbp+var_60], rax +000B249C: mov [rbp+var_1], 1 +000B24A0: jmp short loc_B24F3 +000B24A2: mov rax, [rbp+var_58] +000B24A6: mov [rbp+var_60], rax +000B24AA: mov rax, [rbp+var_58] +000B24AE: mov rdi, rax +000B24B1: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node>>>> const*) +000B24B6: mov rdx, rax +000B24B9: mov rax, [rbp+var_78] +000B24BD: mov rcx, [rbp+var_80] +000B24C1: mov rsi, rcx +000B24C4: mov rdi, rax +000B24C7: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000B24CC: mov [rbp+var_1], al +000B24CF: cmp [rbp+var_1], 0 +000B24D3: jz short loc_B24E3 +000B24D5: mov rax, [rbp+var_58] +000B24D9: mov rdi, rax +000B24DC: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_left(std::_Rb_tree_node_base *) +000B24E1: jmp short loc_B24EF +000B24E3: mov rax, [rbp+var_58] +000B24E7: mov rdi, rax +000B24EA: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base *) +000B24EF: mov [rbp+var_58], rax +000B24F3: mov rax, [rbp+var_58] +000B24F7: test rax, rax +000B24FA: jnz short loc_B24A2 +000B24FC: mov rdx, [rbp+var_60] +000B2500: lea rax, [rbp+var_70] +000B2504: mov rsi, rdx +000B2507: mov rdi, rax +000B250A: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000B250F: cmp [rbp+var_1], 0 +000B2513: jz short loc_B2569 +000B2515: mov rax, [rbp+var_78] +000B2519: mov rdi, rax +000B251C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::begin(void) +000B2521: mov [rbp+var_50], rax +000B2525: lea rdx, [rbp+var_50] +000B2529: lea rax, [rbp+var_70] +000B252D: mov rsi, rdx +000B2530: mov rdi, rax +000B2533: call __ZNKSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEeqERKSB_; std::_Rb_tree_iterator>>>>::operator==(std::_Rb_tree_iterator>>>> const&) +000B2538: test al, al +000B253A: jz short loc_B255D +000B253C: lea rdx, [rbp+var_60] +000B2540: lea rcx, [rbp+var_58] +000B2544: lea rax, [rbp+var_40] +000B2548: mov rsi, rcx +000B254B: mov rdi, rax +000B254E: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS6_14adl_serializerES9_IhSaIhEEEEEESH_vEEOT_OT0_; std::pair::pair>>>> *&,std::_Rb_tree_node>>>> *&,void>(std::_Rb_tree_node>>>> *&,std::_Rb_tree_node>>>> *&) +000B2553: mov rax, [rbp+var_40] +000B2557: mov rdx, [rbp+var_38] +000B255B: jmp short locret_B25D7 +000B255D: lea rax, [rbp+var_70] +000B2561: mov rdi, rax +000B2564: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEmmEv; std::_Rb_tree_iterator>>>>::operator--(void) +000B2569: mov rax, [rbp+var_70] +000B256D: mov rdi, rax +000B2570: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node_base const*) +000B2575: mov rcx, rax +000B2578: mov rax, [rbp+var_78] +000B257C: mov rdx, [rbp+var_80] +000B2580: mov rsi, rcx +000B2583: mov rdi, rax +000B2586: call __ZNKSt4lessISsEclERKSsS2_; std::less::operator()(std::string const&,std::string const&) +000B258B: test al, al +000B258D: jz short loc_B25B0 +000B258F: lea rdx, [rbp+var_60] +000B2593: lea rcx, [rbp+var_58] +000B2597: lea rax, [rbp+var_30] +000B259B: mov rsi, rcx +000B259E: mov rdi, rax +000B25A1: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS6_14adl_serializerES9_IhSaIhEEEEEESH_vEEOT_OT0_; std::pair::pair>>>> *&,std::_Rb_tree_node>>>> *&,void>(std::_Rb_tree_node>>>> *&,std::_Rb_tree_node>>>> *&) +000B25A6: mov rax, [rbp+var_30] +000B25AA: mov rdx, [rbp+var_28] +000B25AE: jmp short locret_B25D7 +000B25B0: mov [rbp+var_10], 0 +000B25B8: lea rdx, [rbp+var_10] +000B25BC: lea rcx, [rbp+var_70] +000B25C0: lea rax, [rbp+var_20] +000B25C4: mov rsi, rcx +000B25C7: mov rdi, rax +000B25CA: call __ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_vEEOT_RKS1_; std::pair::pair(std::_Rb_tree_node_base *&,std::_Rb_tree_node_base * const&) +000B25CF: mov rax, [rbp+var_20] +000B25D3: mov rdx, [rbp+var_18] +000B25D7: leave +000B25D8: retn + +### FUNC 000B25D9 - 000B25EB (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPSt18_Rb_tree_node_base +000B25D9: push rbp +000B25DA: mov rbp, rsp +000B25DD: mov [rbp+var_8], rdi +000B25E1: mov rax, [rbp+var_8] +000B25E5: mov rax, [rax+18h] +000B25E9: pop rbp +000B25EA: retn + +### FUNC 000B25EB - 000B25FD (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt13_Rb_tree_nodeISA_E +000B25EB: push rbp +000B25EC: mov rbp, rsp +000B25EF: mov [rbp+var_8], rdi +000B25F3: mov rax, [rbp+var_8] +000B25F7: add rax, 20h ; ' ' +000B25FB: pop rbp +000B25FC: retn + +### FUNC 000B25FE - 000B2610 (18 bytes) name=_ZNKSt10_Select1stISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEclERKSA_ +000B25FE: push rbp +000B25FF: mov rbp, rsp +000B2602: mov [rbp+var_8], rdi +000B2606: mov [rbp+var_10], rsi +000B260A: mov rax, [rbp+var_10] +000B260E: pop rbp +000B260F: retn + +### FUNC 000B2610 - 000B263A (42 bytes) name=_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +000B2610: push rbp; Alternative name is 'std::pair>>>::~pair()' +000B2611: mov rbp, rsp +000B2614: sub rsp, 10h +000B2618: mov [rbp+var_8], rdi +000B261C: mov rax, [rbp+var_8] +000B2620: add rax, 8 +000B2624: mov rdi, rax +000B2627: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B262C: mov rax, [rbp+var_8] +000B2630: mov rdi, rax; this +000B2633: call __ZNSsD1Ev; std::string::~string() +000B2638: leave +000B2639: retn + +### FUNC 000B263A - 000B2658 (30 bytes) name=_ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEED2Ev +000B263A: push rbp; Alternative name is 'std::_Rb_tree_node>>>>::~_Rb_tree_node()' +000B263B: mov rbp, rsp +000B263E: sub rsp, 10h +000B2642: mov [rbp+var_8], rdi +000B2646: mov rax, [rbp+var_8] +000B264A: add rax, 20h ; ' ' +000B264E: mov rdi, rax +000B2651: call __ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev; std::pair>>>::~pair() +000B2656: leave +000B2657: retn + +### FUNC 000B2658 - 000B2676 (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE7destroyISD_EEvPT_ +000B2658: push rbp +000B2659: mov rbp, rsp +000B265C: sub rsp, 10h +000B2660: mov [rbp+var_8], rdi +000B2664: mov [rbp+var_10], rsi +000B2668: mov rax, [rbp+var_10] +000B266C: mov rdi, rax +000B266F: call __ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEED2Ev; std::_Rb_tree_node>>>>::~_Rb_tree_node() +000B2674: leave +000B2675: retn + +### FUNC 000B2676 - 000B2684 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSP_ +000B2676: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSP_' +000B2677: mov rbp, rsp +000B267A: mov [rbp+var_8], rdi +000B267E: mov rax, [rbp+var_8] +000B2682: pop rbp +000B2683: retn + +### FUNC 000B2684 - 000B269E (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EE7_M_headERSP_ +000B2684: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIRKSF_EEEPT_DpOT0_EUlPSF_E_EE7_M_headERSP_' +000B2685: mov rbp, rsp +000B2688: sub rsp, 10h +000B268C: mov [rbp+var_8], rdi +000B2690: mov rax, [rbp+var_8] +000B2694: mov rdi, rax +000B2697: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_Lb0EE7_M_headERSP_ +000B269C: leave +000B269D: retn + +### FUNC 000B269E - 000B26B8 (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000B269E: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEIRKSF_EEEPT_DpOT0_EUlPSF_E_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISQ_DpT1_EE' +000B269F: mov rbp, rsp +000B26A2: sub rsp, 10h +000B26A6: mov [rbp+var_8], rdi +000B26AA: mov rax, [rbp+var_8] +000B26AE: mov rdi, rax +000B26B1: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_EE7_M_headERSP_ +000B26B6: leave +000B26B7: retn + +### FUNC 000B26B8 - 000B26D2 (26 bytes) name=_ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_ +000B26B8: push rbp; Alternative name is '_ZSt3getILm1EIPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSU_' +000B26B9: mov rbp, rsp +000B26BC: sub rsp, 10h +000B26C0: mov [rbp+var_8], rdi +000B26C4: mov rax, [rbp+var_8] +000B26C8: mov rdi, rax +000B26CB: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS2_ISsS7_St4lessISsESaISt4pairIKSsS7_EEEJRKSF_EEEPT_DpOT0_EUlPSF_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSQ_DpT1_EE +000B26D0: leave +000B26D1: retn + +### FUNC 000B26D2 - 000B26EC (26 bytes) name=_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E11get_deleterEv +000B26D2: push rbp; Alternative name is '_ZNSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlPSE_E_E11get_deleterEv' +000B26D3: mov rbp, rsp +000B26D6: sub rsp, 10h +000B26DA: mov [rbp+var_8], rdi +000B26DE: mov rax, [rbp+var_8] +000B26E2: mov rdi, rax +000B26E5: call __ZSt3getILm1EJPSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlSF_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSU_; std::get<1ul,std::map>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>(std::tuple_element<1ul,std::tuple>>,std::less,std::allocator>>>>> *,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>> *)#1}>>&) +000B26EA: leave +000B26EB: retn + +### FUNC 000B26EC - 000B2724 (56 bytes) name=_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_JRKSE_EEENSt9enable_ifIXsrNSG_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSF_PSM_DpOSN_ +000B26EC: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEE12_S_constructISE_IRKSE_EEENSt9enable_ifIXsrNSG_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSF_PSM_DpOSN_' +000B26ED: mov rbp, rsp +000B26F0: sub rsp, 20h +000B26F4: mov [rbp+var_8], rdi +000B26F8: mov [rbp+var_10], rsi +000B26FC: mov [rbp+var_18], rdx +000B2700: mov rax, [rbp+var_18] +000B2704: mov rdi, rax +000B2707: call __ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> const&>(std::remove_reference>>,std::less,std::allocator>>>>> const&>::type &) +000B270C: mov rdx, rax +000B270F: mov rcx, [rbp+var_10] +000B2713: mov rax, [rbp+var_8] +000B2717: mov rsi, rcx +000B271A: mov rdi, rax +000B271D: call __ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JRKSF_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>>,std::less,std::allocator>>>>>>::construct>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> *,std::map>>,std::less,std::allocator>>>>> const&) +000B2722: leave +000B2723: retn + +### FUNC 000B2724 - 000B2744 (32 bytes) name=_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_EcvbEv +000B2724: push rbp; Alternative name is '_ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_IRKSE_EEEPT_DpOT0_EUlPSE_E_EcvbEv' +000B2725: mov rbp, rsp +000B2728: sub rsp, 10h +000B272C: mov [rbp+var_8], rdi +000B2730: mov rax, [rbp+var_8] +000B2734: mov rdi, rax +000B2737: call __ZNKSt10unique_ptrISt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEZNS7_6createISE_JRKSE_EEEPT_DpOT0_EUlPSE_E_E3getEv; std::unique_ptr>>,std::less,std::allocator>>>>>,nlohmann::basic_json>>::create>>,std::less,std::allocator>>>>>,std::map>>,std::less,std::allocator>>>>> const&>(std::map>>,std::less,std::allocator>>>>> const&)::{lambda(std::map>>,std::less,std::allocator>>>>>*)#1}>::get(void) +000B273C: test rax, rax +000B273F: setnz al +000B2742: leave +000B2743: retn + +### FUNC 000B2744 - 000B2752 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +000B2744: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_' +000B2745: mov rbp, rsp +000B2748: mov [rbp+var_8], rdi +000B274C: mov rax, [rbp+var_8] +000B2750: pop rbp +000B2751: retn + +### FUNC 000B2752 - 000B276C (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +000B2752: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_' +000B2753: mov rbp, rsp +000B2756: sub rsp, 10h +000B275A: mov [rbp+var_8], rdi +000B275E: mov rax, [rbp+var_8] +000B2762: mov rdi, rax +000B2765: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +000B276A: leave +000B276B: retn + +### FUNC 000B276C - 000B2786 (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000B276C: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEIRKSA_EEEPT_DpOT0_EUlPSA_E_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISL_DpT1_EE' +000B276D: mov rbp, rsp +000B2770: sub rsp, 10h +000B2774: mov [rbp+var_8], rdi +000B2778: mov rax, [rbp+var_8] +000B277C: mov rdi, rax +000B277F: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +000B2784: leave +000B2785: retn + +### FUNC 000B2786 - 000B27A0 (26 bytes) name=_ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000B2786: push rbp; Alternative name is '_ZSt3getILm1EIPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSP_' +000B2787: mov rbp, rsp +000B278A: sub rsp, 10h +000B278E: mov [rbp+var_8], rdi +000B2792: mov rax, [rbp+var_8] +000B2796: mov rdi, rax +000B2799: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createIS3_IS7_SaIS7_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000B279E: leave +000B279F: retn + +### FUNC 000B27A0 - 000B27BA (26 bytes) name=_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E11get_deleterEv +000B27A0: push rbp; Alternative name is '_ZNSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_E11get_deleterEv' +000B27A1: mov rbp, rsp +000B27A4: sub rsp, 10h +000B27A8: mov [rbp+var_8], rdi +000B27AC: mov rax, [rbp+var_8] +000B27B0: mov rdi, rax +000B27B3: call __ZSt3getILm1EJPSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlSA_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_; std::get<1ul,std::vector>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>(std::tuple_element<1ul,std::tuple>>,std::allocator>>>> *,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>> *)#1}>>&) +000B27B8: leave +000B27B9: retn + +### FUNC 000B27BA - 000B27F2 (56 bytes) name=_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_JRKS9_EEENSt9enable_ifIXsrNSB_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSA_PSH_DpOSI_ +000B27BA: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEE12_S_constructIS9_IRKS9_EEENSt9enable_ifIXsrNSB_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSA_PSH_DpOSI_' +000B27BB: mov rbp, rsp +000B27BE: sub rsp, 20h +000B27C2: mov [rbp+var_8], rdi +000B27C6: mov [rbp+var_10], rsi +000B27CA: mov [rbp+var_18], rdx +000B27CE: mov rax, [rbp+var_18] +000B27D2: mov rdi, rax +000B27D5: call __ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> const&>(std::remove_reference>>,std::allocator>>>> const&>::type &) +000B27DA: mov rdx, rax +000B27DD: mov rcx, [rbp+var_10] +000B27E1: mov rax, [rbp+var_8] +000B27E5: mov rsi, rcx +000B27E8: mov rdi, rax +000B27EB: call __ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JRKSA_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>>,std::allocator>>>>>::construct>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> *,std::vector>>,std::allocator>>>> const&) +000B27F0: leave +000B27F1: retn + +### FUNC 000B27F2 - 000B2812 (32 bytes) name=_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_EcvbEv +000B27F2: push rbp; Alternative name is '_ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_IRKS9_EEEPT_DpOT0_EUlPS9_E_EcvbEv' +000B27F3: mov rbp, rsp +000B27F6: sub rsp, 10h +000B27FA: mov [rbp+var_8], rdi +000B27FE: mov rax, [rbp+var_8] +000B2802: mov rdi, rax +000B2805: call __ZNKSt10unique_ptrISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEZNS7_6createIS9_JRKS9_EEEPT_DpOT0_EUlPS9_E_E3getEv; std::unique_ptr>>,std::allocator>>>>,nlohmann::basic_json>>::create>>,std::allocator>>>>,std::vector>>,std::allocator>>>> const&>(std::vector>>,std::allocator>>>> const&)::{lambda(std::vector>>,std::allocator>>>>*)#1}>::get(void) +000B280A: test rax, rax +000B280D: setnz al +000B2810: leave +000B2811: retn + +### FUNC 000B2812 - 000B2820 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSI_ +000B2812: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSI_' +000B2813: mov rbp, rsp +000B2816: mov [rbp+var_8], rdi +000B281A: mov rax, [rbp+var_8] +000B281E: pop rbp +000B281F: retn + +### FUNC 000B2820 - 000B283A (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EE7_M_headERSI_ +000B2820: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_EE7_M_headERSI_' +000B2821: mov rbp, rsp +000B2824: sub rsp, 10h +000B2828: mov [rbp+var_8], rdi +000B282C: mov rax, [rbp+var_8] +000B2830: mov rdi, rax +000B2833: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_Lb0EE7_M_headERSI_ +000B2838: leave +000B2839: retn + +### FUNC 000B283A - 000B2854 (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B283A: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISJ_DpT1_EE' +000B283B: mov rbp, rsp +000B283E: sub rsp, 10h +000B2842: mov [rbp+var_8], rdi +000B2846: mov rax, [rbp+var_8] +000B284A: mov rdi, rax +000B284D: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EE7_M_headERSI_ +000B2852: leave +000B2853: retn + +### FUNC 000B2854 - 000B286E (26 bytes) name=_ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_ +000B2854: push rbp; Alternative name is '_ZSt3getILm1EIPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSN_' +000B2855: mov rbp, rsp +000B2858: sub rsp, 10h +000B285C: mov [rbp+var_8], rdi +000B2860: mov rax, [rbp+var_8] +000B2864: mov rdi, rax +000B2867: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSJ_DpT1_EE +000B286C: leave +000B286D: retn + +### FUNC 000B286E - 000B2888 (26 bytes) name=_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E11get_deleterEv +000B286E: push rbp; Alternative name is '_ZNSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_E11get_deleterEv' +000B286F: mov rbp, rsp +000B2872: sub rsp, 10h +000B2876: mov [rbp+var_8], rdi +000B287A: mov rax, [rbp+var_8] +000B287E: mov rdi, rax +000B2881: call __ZSt3getILm1EJPSsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlS0_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSN_; std::get<1ul,std::string *,nlohmann::basic_json>>::create(std::string const&)::{lambda(std::string *)#1}>(std::tuple_element<1ul,std::tuple>>::create(std::string const&)::{lambda(std::string *)#1}>>&) +000B2886: leave +000B2887: retn + +### FUNC 000B2888 - 000B28A8 (32 bytes) name=_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_EcvbEv +000B2888: push rbp; Alternative name is '_ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsIRKSsEEEPT_DpOT0_EUlPSsE_EcvbEv' +000B2889: mov rbp, rsp +000B288C: sub rsp, 10h +000B2890: mov [rbp+var_8], rdi +000B2894: mov rax, [rbp+var_8] +000B2898: mov rdi, rax +000B289B: call __ZNKSt10unique_ptrISsZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createISsJRKSsEEEPT_DpOT0_EUlPSsE_E3getEv; std::unique_ptr>>::create(std::string const&)::{lambda(std::string *)#1}>::get(void) +000B28A0: test rax, rax +000B28A3: setnz al +000B28A6: leave +000B28A7: retn + +### FUNC 000B28A8 - 000B28B6 (14 bytes) name=_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +000B28A8: push rbp; Alternative name is '_ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_' +000B28A9: mov rbp, rsp +000B28AC: mov [rbp+var_8], rdi +000B28B0: mov rax, [rbp+var_8] +000B28B4: pop rbp +000B28B5: retn + +### FUNC 000B28B6 - 000B28D0 (26 bytes) name=_ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +000B28B6: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_' +000B28B7: mov rbp, rsp +000B28BA: sub rsp, 10h +000B28BE: mov [rbp+var_8], rdi +000B28C2: mov rax, [rbp+var_8] +000B28C6: mov rdi, rax +000B28C9: call __ZNSt10_Head_baseILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_Lb0EE7_M_headERSK_ +000B28CE: leave +000B28CF: retn + +### FUNC 000B28D0 - 000B28EA (26 bytes) name=_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000B28D0: push rbp; Alternative name is '_ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEIRKSA_EEEPT_DpOT0_EUlPSA_E_IEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EISL_DpT1_EE' +000B28D1: mov rbp, rsp +000B28D4: sub rsp, 10h +000B28D8: mov [rbp+var_8], rdi +000B28DC: mov rax, [rbp+var_8] +000B28E0: mov rdi, rax +000B28E3: call __ZNSt11_Tuple_implILm1EJZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_EE7_M_headERSK_ +000B28E8: leave +000B28E9: retn + +### FUNC 000B28EA - 000B2904 (26 bytes) name=_ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_ +000B28EA: push rbp; Alternative name is '_ZSt3getILm1EIPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIIDpT0_EEE4typeEE4typeERSP_' +000B28EB: mov rbp, rsp +000B28EE: sub rsp, 10h +000B28F2: mov [rbp+var_8], rdi +000B28F6: mov rax, [rbp+var_8] +000B28FA: mov rdi, rax +000B28FD: call __ZSt12__get_helperILm1EZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEE6createINS0_27byte_container_with_subtypeIS6_EEJRKSA_EEEPT_DpOT0_EUlPSA_E_JEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJSL_DpT1_EE +000B2902: leave +000B2903: retn + +### FUNC 000B2904 - 000B291E (26 bytes) name=_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E11get_deleterEv +000B2904: push rbp; Alternative name is '_ZNSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_E11get_deleterEv' +000B2905: mov rbp, rsp +000B2908: sub rsp, 10h +000B290C: mov [rbp+var_8], rdi +000B2910: mov rax, [rbp+var_8] +000B2914: mov rdi, rax +000B2917: call __ZSt3getILm1EJPN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlS6_E_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSP_; std::get<1ul,nlohmann::byte_container_with_subtype>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>(std::tuple_element<1ul,std::tuple>> *,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>> *)#1}>>&) +000B291C: leave +000B291D: retn + +### FUNC 000B291E - 000B2956 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_JRKS5_EEENSt9enable_ifIXsrNS7_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS6_PSD_DpOSE_ +000B291E: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEE12_S_constructIS5_IRKS5_EEENSt9enable_ifIXsrNS7_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS6_PSD_DpOSE_' +000B291F: mov rbp, rsp +000B2922: sub rsp, 20h +000B2926: mov [rbp+var_8], rdi +000B292A: mov [rbp+var_10], rsi +000B292E: mov [rbp+var_18], rdx +000B2932: mov rax, [rbp+var_18] +000B2936: mov rdi, rax +000B2939: call __ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000B293E: mov rdx, rax +000B2941: mov rcx, [rbp+var_10] +000B2945: mov rax, [rbp+var_8] +000B2949: mov rsi, rcx +000B294C: mov rdi, rax +000B294F: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JRKS6_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> *,nlohmann::byte_container_with_subtype>> const&) +000B2954: leave +000B2955: retn + +### FUNC 000B2956 - 000B2976 (32 bytes) name=_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_EcvbEv +000B2956: push rbp; Alternative name is '_ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_IRKS5_EEEPT_DpOT0_EUlPS5_E_EcvbEv' +000B2957: mov rbp, rsp +000B295A: sub rsp, 10h +000B295E: mov [rbp+var_8], rdi +000B2962: mov rax, [rbp+var_8] +000B2966: mov rdi, rax +000B2969: call __ZNKSt10unique_ptrIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEZNS0_10basic_jsonISt3mapS2_SsblmdSaNS0_14adl_serializerES4_E6createIS5_JRKS5_EEEPT_DpOT0_EUlPS5_E_E3getEv; std::unique_ptr>>,nlohmann::basic_json>>::create>>,nlohmann::byte_container_with_subtype>> const&>(nlohmann::byte_container_with_subtype>> const&)::{lambda(nlohmann::byte_container_with_subtype>>*)#1}>::get(void) +000B296E: test rax, rax +000B2971: setnz al +000B2974: leave +000B2975: retn + +### FUNC 000B2976 - 000B2987 (17 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEcvNS_6detail7value_tEEv +000B2976: push rbp +000B2977: mov rbp, rsp +000B297A: mov [rbp+var_8], rdi +000B297E: mov rax, [rbp+var_8] +000B2982: movzx eax, byte ptr [rax] +000B2985: pop rbp +000B2986: retn + +### FUNC 000B2988 - 000B29B9 (49 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKm +000B2988: push rbp +000B2989: mov rbp, rsp +000B298C: sub rsp, 10h +000B2990: mov [rbp+var_8], rdi +000B2994: mov [rbp+var_10], rsi +000B2998: mov rax, [rbp+var_8] +000B299C: mov rdi, rax +000B299F: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE18is_number_unsignedEv; nlohmann::basic_json>>::is_number_unsigned(void) +000B29A4: test al, al +000B29A6: jz short loc_B29B2 +000B29A8: mov rax, [rbp+var_8] +000B29AC: add rax, 8 +000B29B0: jmp short locret_B29B7 +000B29B2: mov eax, 0 +000B29B7: leave +000B29B8: retn + +### FUNC 000B29BA - 000B29EB (49 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKl +000B29BA: push rbp +000B29BB: mov rbp, rsp +000B29BE: sub rsp, 10h +000B29C2: mov [rbp+var_8], rdi +000B29C6: mov [rbp+var_10], rsi +000B29CA: mov rax, [rbp+var_8] +000B29CE: mov rdi, rax +000B29D1: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE17is_number_integerEv; nlohmann::basic_json>>::is_number_integer(void) +000B29D6: test al, al +000B29D8: jz short loc_B29E4 +000B29DA: mov rax, [rbp+var_8] +000B29DE: add rax, 8 +000B29E2: jmp short locret_B29E9 +000B29E4: mov eax, 0 +000B29E9: leave +000B29EA: retn + +### FUNC 000B29EC - 000B2A1D (49 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKd +000B29EC: push rbp +000B29ED: mov rbp, rsp +000B29F0: sub rsp, 10h +000B29F4: mov [rbp+var_8], rdi +000B29F8: mov [rbp+var_10], rsi +000B29FC: mov rax, [rbp+var_8] +000B2A00: mov rdi, rax +000B2A03: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE15is_number_floatEv; nlohmann::basic_json>>::is_number_float(void) +000B2A08: test al, al +000B2A0A: jz short loc_B2A16 +000B2A0C: mov rax, [rbp+var_8] +000B2A10: add rax, 8 +000B2A14: jmp short locret_B2A1B +000B2A16: mov eax, 0 +000B2A1B: leave +000B2A1C: retn + +### FUNC 000B2A1E - 000B2A4F (49 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE12get_impl_ptrEPKb +000B2A1E: push rbp +000B2A1F: mov rbp, rsp +000B2A22: sub rsp, 10h +000B2A26: mov [rbp+var_8], rdi +000B2A2A: mov [rbp+var_10], rsi +000B2A2E: mov rax, [rbp+var_8] +000B2A32: mov rdi, rax +000B2A35: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10is_booleanEv; nlohmann::basic_json>>::is_boolean(void) +000B2A3A: test al, al +000B2A3C: jz short loc_B2A48 +000B2A3E: mov rax, [rbp+var_8] +000B2A42: add rax, 8 +000B2A46: jmp short locret_B2A4D +000B2A48: mov eax, 0 +000B2A4D: leave +000B2A4E: retn + +### FUNC 000B2A4F - 000B2A5D (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EE7_S_cgetERKS3_ +000B2A4F: push rbp +000B2A50: mov rbp, rsp +000B2A53: mov [rbp+var_8], rdi +000B2A57: mov rax, [rbp+var_8] +000B2A5B: pop rbp +000B2A5C: retn + +### FUNC 000B2A5E - 000B2A78 (26 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h2Ev +000B2A5E: push rbp +000B2A5F: mov rbp, rsp +000B2A62: sub rsp, 10h +000B2A66: mov [rbp+var_8], rdi +000B2A6A: mov rax, [rbp+var_8] +000B2A6E: mov rdi, rax +000B2A71: call __ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_S_cgetERKS2_; std::__detail::_Hashtable_ebo_helper<2,std::__detail::_Mod_range_hashing,true>::_S_cget(std::__detail::_Hashtable_ebo_helper<2,std::__detail::_Mod_range_hashing,true> const&) +000B2A76: leave +000B2A77: retn + +### FUNC 000B2A78 - 000B2ACD (85 bytes) name=_ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS3_Lb1EEE +000B2A78: push rbp +000B2A79: mov rbp, rsp +000B2A7C: push rbx +000B2A7D: sub rsp, 28h +000B2A81: mov [rbp+var_18], rdi +000B2A85: mov [rbp+var_20], rsi +000B2A89: mov [rbp+var_28], rdx +000B2A8D: mov [rbp+var_30], rcx +000B2A91: mov rax, [rbp+var_18] +000B2A95: mov rdi, rax +000B2A98: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_extract(void) +000B2A9D: mov rbx, rax +000B2AA0: mov rax, [rbp+var_18] +000B2AA4: mov rdi, rax +000B2AA7: call __ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE5_M_eqEv; std::__detail::_Hashtable_base,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Hashtable_traits>::_M_eq(void) +000B2AAC: mov rsi, [rbp+var_30] +000B2AB0: mov rcx, [rbp+var_28] +000B2AB4: mov rdx, [rbp+var_20] +000B2AB8: mov r8, rsi +000B2ABB: mov rsi, rbx +000B2ABE: mov rdi, rax +000B2AC1: call __ZNSt8__detail13_Equal_helperISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsEmLb1EE9_S_equalsERKS6_RKS4_RS2_mPNS_10_Hash_nodeIS3_Lb1EEE; std::__detail::_Equal_helper,std::__detail::_Select1st,std::equal_to,ulong,true>::_S_equals(std::equal_to const&,std::__detail::_Select1st const&,std::string const&,ulong,std::__detail::_Hash_node,true> *) +000B2AC6: add rsp, 28h +000B2ACA: pop rbx +000B2ACB: pop rbp +000B2ACC: retn + +### FUNC 000B2ACE - 000B2AFB (45 bytes) name=_ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb1EEE +000B2ACE: push rbp +000B2ACF: mov rbp, rsp +000B2AD2: sub rsp, 10h +000B2AD6: mov [rbp+var_8], rdi +000B2ADA: mov [rbp+var_10], rsi +000B2ADE: mov rax, [rbp+var_8] +000B2AE2: mov rdx, [rax+8] +000B2AE6: mov rcx, [rbp+var_10] +000B2AEA: mov rax, [rbp+var_8] +000B2AEE: mov rsi, rcx +000B2AF1: mov rdi, rax +000B2AF4: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb1EEEm; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_bucket_index(std::__detail::_Hash_node,true> const*,ulong) +000B2AF9: leave +000B2AFA: retn + +### FUNC 000B2AFC - 000B2B10 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEE8max_sizeEv +000B2AFC: push rbp +000B2AFD: mov rbp, rsp +000B2B00: mov [rbp+var_8], rdi +000B2B04: mov rax, 7FFFFFFFFFFFFFFh +000B2B0E: pop rbp +000B2B0F: retn + +### FUNC 000B2B10 - 000B2B1E (14 bytes) name=_ZNSt11_Tuple_implILm0EJRKSsEE7_M_tailERS2_ +000B2B10: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string const&>::_M_tail(std::_Tuple_impl<0ul, std::string const&>&)' +000B2B11: mov rbp, rsp +000B2B14: mov [rbp+var_8], rdi +000B2B18: mov rax, [rbp+var_8] +000B2B1C: pop rbp +000B2B1D: retn + +### FUNC 000B2B1E - 000B2B2F (17 bytes) name=_ZNSt10_Head_baseILm0ERKSsLb0EE7_M_headERS2_ +000B2B1E: push rbp +000B2B1F: mov rbp, rsp +000B2B22: mov [rbp+var_8], rdi +000B2B26: mov rax, [rbp+var_8] +000B2B2A: mov rax, [rax] +000B2B2D: pop rbp +000B2B2E: retn + +### FUNC 000B2B2F - 000B2B49 (26 bytes) name=_ZNSt11_Tuple_implILm0EJRKSsEE7_M_headERS2_ +000B2B2F: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string const&>::_M_head(std::_Tuple_impl<0ul, std::string const&>&)' +000B2B30: mov rbp, rsp +000B2B33: sub rsp, 10h +000B2B37: mov [rbp+var_8], rdi +000B2B3B: mov rax, [rbp+var_8] +000B2B3F: mov rdi, rax +000B2B42: call __ZNSt10_Head_baseILm0ERKSsLb0EE7_M_headERS2_; std::_Head_base<0ul,std::string const&,false>::_M_head(std::_Head_base<0ul,std::string const&,false>&) +000B2B47: leave +000B2B48: retn + +### FUNC 000B2B4A - 000B2B96 (76 bytes) name=_ZNSt11_Tuple_implILm0EJRKSsEEC2EOS2_ +000B2B4A: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::string const&>::_Tuple_impl(std::_Tuple_impl<0ul, std::string const&>&&)' +000B2B4B: mov rbp, rsp +000B2B4E: sub rsp, 10h +000B2B52: mov [rbp+var_8], rdi +000B2B56: mov [rbp+var_10], rsi +000B2B5A: mov rax, [rbp+var_10] +000B2B5E: mov rdi, rax +000B2B61: call __ZNSt11_Tuple_implILm0EJRKSsEE7_M_tailERS2_; std::_Tuple_impl<0ul,std::string const&>::_M_tail(std::_Tuple_impl<0ul,std::string const&>&) +000B2B66: mov rdi, rax +000B2B69: call __ZSt4moveIRSt11_Tuple_implILm1EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000B2B6E: mov rax, [rbp+var_10] +000B2B72: mov rdi, rax +000B2B75: call __ZNSt11_Tuple_implILm0EJRKSsEE7_M_headERS2_; std::_Tuple_impl<0ul,std::string const&>::_M_head(std::_Tuple_impl<0ul,std::string const&>&) +000B2B7A: mov rdi, rax +000B2B7D: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000B2B82: mov rdx, rax +000B2B85: mov rax, [rbp+var_8] +000B2B89: mov rsi, rdx +000B2B8C: mov rdi, rax +000B2B8F: call __ZNSt10_Head_baseILm0ERKSsLb0EEC2ES1_; std::_Head_base<0ul,std::string const&,false>::_Head_base(std::string const&) +000B2B94: leave +000B2B95: retn + +### FUNC 000B2B96 - 000B2BBB (37 bytes) name=_ZNSt5tupleIJRKSsEEC2EOS2_ +000B2B96: push rbp; Alternative name is 'std::tuple::tuple(std::tuple&&)' +000B2B97: mov rbp, rsp +000B2B9A: sub rsp, 10h +000B2B9E: mov [rbp+var_8], rdi +000B2BA2: mov [rbp+var_10], rsi +000B2BA6: mov rdx, [rbp+var_10] +000B2BAA: mov rax, [rbp+var_8] +000B2BAE: mov rsi, rdx +000B2BB1: mov rdi, rax +000B2BB4: call __ZNSt11_Tuple_implILm0EJRKSsEEC2EOS2_; std::_Tuple_impl<0ul,std::string const&>::_Tuple_impl(std::_Tuple_impl<0ul,std::string const&>&&) +000B2BB9: leave +000B2BBA: retn + +### FUNC 000B2BBC - 000B2C4D (145 bytes) name=_ZNSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEC2IJRKSt21piecewise_construct_tSt5tupleIJRS2_EES9_IJEEEEEDpOT_ +000B2BBC: push rbp; Alternative name is 'std::__detail::_Hash_node, true>::_Hash_node, std::tuple<>>()' +000B2BBD: mov rbp, rsp +000B2BC0: push r12 +000B2BC2: push rbx +000B2BC3: sub rsp, 40h +000B2BC7: mov [rbp+var_28], rdi +000B2BCB: mov [rbp+var_30], rsi +000B2BCF: mov [rbp+var_38], rdx +000B2BD3: mov [rbp+var_40], rcx +000B2BD7: mov rax, [rbp+var_28] +000B2BDB: mov rdi, rax; this +000B2BDE: call __ZNSt8__detail15_Hash_node_baseC2Ev_0; std::__detail::_Hash_node_base::_Hash_node_base(void) +000B2BE3: mov rax, [rbp+var_40] +000B2BE7: mov rdi, rax +000B2BEA: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B2BEF: mov rax, [rbp+var_38] +000B2BF3: mov rdi, rax +000B2BF6: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B2BFB: mov rdx, rax +000B2BFE: lea rax, [rbp+var_20] +000B2C02: mov rsi, rdx +000B2C05: mov rdi, rax +000B2C08: call __ZNSt5tupleIJRKSsEEC2EOS2_; std::tuple::tuple(std::tuple&&) +000B2C0D: mov rax, [rbp+var_30] +000B2C11: mov rdi, rax +000B2C14: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B2C19: mov rax, [rbp+var_28] +000B2C1D: lea rdx, [rax+8] +000B2C21: lea rax, [rbp+var_20] +000B2C25: mov [rsp+50h+var_48], r12b +000B2C2A: mov [rsp+50h+var_50], bl +000B2C2D: mov rsi, rax +000B2C30: mov rdi, rdx +000B2C33: call __ZNSt4pairIKSsiEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EES5_IJDpT0_EE +000B2C38: mov rax, [rbp+var_28] +000B2C3C: mov qword ptr [rax+18h], 0 +000B2C44: add rsp, 40h +000B2C48: pop rbx +000B2C49: pop r12 +000B2C4B: pop rbp +000B2C4C: retn + +### FUNC 000B2C4E - 000B2DF4 (422 bytes) name=_ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE +000B2C4E: push rbp +000B2C4F: mov rbp, rsp +000B2C52: push rbx +000B2C53: sub rsp, 48h +000B2C57: mov [rbp+var_48], rdi +000B2C5B: mov [rbp+var_50], rsi +000B2C5F: mov rdx, [rbp+var_50] +000B2C63: mov rax, [rbp+var_48] +000B2C67: mov rsi, rdx +000B2C6A: mov rdi, rax +000B2C6D: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_allocate_buckets(ulong) +000B2C72: mov [rbp+var_28], rax +000B2C76: mov rax, [rbp+var_48] +000B2C7A: mov rdi, rax +000B2C7D: call __ZNKSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE8_M_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_begin(void) +000B2C82: mov [rbp+var_18], rax +000B2C86: mov rax, [rbp+var_48] +000B2C8A: mov rdi, rax +000B2C8D: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000B2C92: mov qword ptr [rax], 0 +000B2C99: mov [rbp+var_20], 0 +000B2CA1: jmp loc_B2DAD +000B2CA6: mov rax, [rbp+var_18] +000B2CAA: mov rdi, rax +000B2CAD: call __ZNKSt8__detail10_Hash_nodeISt4pairIKSsiELb1EE7_M_nextEv; std::__detail::_Hash_node,true>::_M_next(void) +000B2CB2: mov [rbp+var_30], rax +000B2CB6: mov rdx, [rbp+var_50] +000B2CBA: mov rcx, [rbp+var_18] +000B2CBE: mov rax, [rbp+var_48] +000B2CC2: mov rsi, rcx +000B2CC5: mov rdi, rax +000B2CC8: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb1EEEm; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_bucket_index(std::__detail::_Hash_node,true> const*,ulong) +000B2CCD: mov [rbp+var_38], rax +000B2CD1: mov rax, [rbp+var_38] +000B2CD5: lea rdx, ds:0[rax*8] +000B2CDD: mov rax, [rbp+var_28] +000B2CE1: add rax, rdx +000B2CE4: mov rax, [rax] +000B2CE7: test rax, rax +000B2CEA: jnz short loc_B2D68 +000B2CEC: mov rax, [rbp+var_48] +000B2CF0: mov rdi, rax +000B2CF3: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000B2CF8: mov rdx, [rax] +000B2CFB: mov rax, [rbp+var_18] +000B2CFF: mov [rax], rdx +000B2D02: mov rax, [rbp+var_48] +000B2D06: mov rdi, rax +000B2D09: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000B2D0E: mov rdx, [rbp+var_18] +000B2D12: mov [rax], rdx +000B2D15: mov rax, [rbp+var_38] +000B2D19: lea rdx, ds:0[rax*8] +000B2D21: mov rax, [rbp+var_28] +000B2D25: lea rbx, [rdx+rax] +000B2D29: mov rax, [rbp+var_48] +000B2D2D: mov rdi, rax +000B2D30: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE15_M_before_beginEv; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_before_begin(void) +000B2D35: mov [rbx], rax +000B2D38: mov rax, [rbp+var_18] +000B2D3C: mov rax, [rax] +000B2D3F: test rax, rax +000B2D42: jz short loc_B2D5E +000B2D44: mov rax, [rbp+var_20] +000B2D48: lea rdx, ds:0[rax*8] +000B2D50: mov rax, [rbp+var_28] +000B2D54: add rdx, rax +000B2D57: mov rax, [rbp+var_18] +000B2D5B: mov [rdx], rax +000B2D5E: mov rax, [rbp+var_38] +000B2D62: mov [rbp+var_20], rax +000B2D66: jmp short loc_B2DA5 +000B2D68: mov rax, [rbp+var_38] +000B2D6C: lea rdx, ds:0[rax*8] +000B2D74: mov rax, [rbp+var_28] +000B2D78: add rax, rdx +000B2D7B: mov rax, [rax] +000B2D7E: mov rdx, [rax] +000B2D81: mov rax, [rbp+var_18] +000B2D85: mov [rax], rdx +000B2D88: mov rax, [rbp+var_38] +000B2D8C: lea rdx, ds:0[rax*8] +000B2D94: mov rax, [rbp+var_28] +000B2D98: add rax, rdx +000B2D9B: mov rax, [rax] +000B2D9E: mov rdx, [rbp+var_18] +000B2DA2: mov [rax], rdx +000B2DA5: mov rax, [rbp+var_30] +000B2DA9: mov [rbp+var_18], rax +000B2DAD: cmp [rbp+var_18], 0 +000B2DB2: jnz loc_B2CA6 +000B2DB8: mov rax, [rbp+var_48] +000B2DBC: mov rdx, [rax+8] +000B2DC0: mov rax, [rbp+var_48] +000B2DC4: mov rcx, [rax] +000B2DC7: mov rax, [rbp+var_48] +000B2DCB: mov rsi, rcx +000B2DCE: mov rdi, rax +000B2DD1: call __ZNSt10_HashtableISsSt4pairIKSsiESaIS2_ENSt8__detail10_Select1stESt8equal_toISsESt4hashISsENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm; std::_Hashtable,std::allocator>,std::__detail::_Select1st,std::equal_to,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits>::_M_deallocate_buckets(std::__detail::_Hash_node_base **,ulong) +000B2DD6: mov rax, [rbp+var_48] +000B2DDA: mov rdx, [rbp+var_50] +000B2DDE: mov [rax+8], rdx +000B2DE2: mov rax, [rbp+var_48] +000B2DE6: mov rdx, [rbp+var_28] +000B2DEA: mov [rax], rdx +000B2DED: add rsp, 48h +000B2DF1: pop rbx +000B2DF2: pop rbp +000B2DF3: retn + +### FUNC 000B2DF4 - 000B2E02 (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE6_S_getERS2_ +000B2DF4: push rbp +000B2DF5: mov rbp, rsp +000B2DF8: mov [rbp+var_8], rdi +000B2DFC: mov rax, [rbp+var_8] +000B2E00: pop rbp +000B2E01: retn + +### FUNC 000B2E02 - 000B2E0C (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIiEC2Ev +000B2E02: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000B2E03: mov rbp, rsp +000B2E06: mov [rbp+var_8], rdi +000B2E0A: pop rbp +000B2E0B: retn + +### FUNC 000B2E0C - 000B2E26 (26 bytes) name=_ZNSt16allocator_traitsISaIiEE8max_sizeERKS0_ +000B2E0C: push rbp +000B2E0D: mov rbp, rsp +000B2E10: sub rsp, 10h +000B2E14: mov [rbp+var_8], rdi +000B2E18: mov rax, [rbp+var_8] +000B2E1C: mov rdi, rax +000B2E1F: call __ZNSt16allocator_traitsISaIiEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_; std::allocator_traits>::_S_max_size const>(std::allocator const&) +000B2E24: leave +000B2E25: retn + +### FUNC 000B2E26 - 000B2E34 (14 bytes) name=_ZNKSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv +000B2E26: push rbp +000B2E27: mov rbp, rsp +000B2E2A: mov [rbp+var_8], rdi +000B2E2E: mov rax, [rbp+var_8] +000B2E32: pop rbp +000B2E33: retn + +### FUNC 000B2E34 - 000B2E48 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv +000B2E34: push rbp +000B2E35: mov rbp, rsp +000B2E38: mov [rbp+var_8], rdi +000B2E3C: mov rax, 3FFFFFFFFFFFFFFFh +000B2E46: pop rbp +000B2E47: retn + +### FUNC 000B2E48 - 000B2E61 (25 bytes) name=_ZNSt13move_iteratorIPiEC2ES0_ +000B2E48: push rbp; Alternative name is 'std::move_iterator::move_iterator(int *)' +000B2E49: mov rbp, rsp +000B2E4C: mov [rbp+var_8], rdi +000B2E50: mov [rbp+var_10], rsi +000B2E54: mov rax, [rbp+var_8] +000B2E58: mov rdx, [rbp+var_10] +000B2E5C: mov [rax], rdx +000B2E5F: pop rbp +000B2E60: retn + +### FUNC 000B2E61 - 000B2E8E (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +000B2E61: push rbp +000B2E62: mov rbp, rsp +000B2E65: sub rsp, 20h +000B2E69: mov [rbp+var_10], rdi +000B2E6D: mov [rbp+var_20], rsi +000B2E71: mov [rbp+var_18], rdx +000B2E75: mov rdx, [rbp+var_18] +000B2E79: mov rcx, [rbp+var_20] +000B2E7D: mov rax, [rbp+var_10] +000B2E81: mov rsi, rcx +000B2E84: mov rdi, rax +000B2E87: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPiES3_EET0_T_S6_S5_; std::__uninitialized_copy::__uninit_copy,int *>(std::move_iterator,std::move_iterator,int *) +000B2E8C: leave +000B2E8D: retn + +### FUNC 000B2E8E - 000B2E9C (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIiE7destroyIiEEvPT_ +000B2E8E: push rbp +000B2E8F: mov rbp, rsp +000B2E92: mov [rbp+var_8], rdi +000B2E96: mov [rbp+var_10], rsi +000B2E9A: pop rbp +000B2E9B: retn + +### FUNC 000B2E9C - 000B2EDE (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIiE9constructIiJiEEEvPT_DpOT0_ +000B2E9C: push rbp; Alternative name is 'void __gnu_cxx::new_allocator::construct(int *, int &&)' +000B2E9D: mov rbp, rsp +000B2EA0: push rbx +000B2EA1: sub rsp, 28h +000B2EA5: mov [rbp+var_18], rdi +000B2EA9: mov [rbp+var_20], rsi +000B2EAD: mov [rbp+var_28], rdx +000B2EB1: mov rax, [rbp+var_28] +000B2EB5: mov rdi, rax +000B2EB8: call __ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B2EBD: mov ebx, [rax] +000B2EBF: mov rax, [rbp+var_20] +000B2EC3: mov rsi, rax; void * +000B2EC6: mov edi, 4; unsigned __int64 +000B2ECB: call __ZnwmPv; operator new(ulong,void *) +000B2ED0: test rax, rax +000B2ED3: jz short loc_B2ED7 +000B2ED5: mov [rax], ebx +000B2ED7: add rsp, 28h +000B2EDB: pop rbx +000B2EDC: pop rbp +000B2EDD: retn + +### FUNC 000B2EDE - 000B2EF1 (19 bytes) name=_ZSteqIcEbRKSaIT_ES3_ +000B2EDE: push rbp +000B2EDF: mov rbp, rsp +000B2EE2: mov [rbp+var_8], rdi +000B2EE6: mov [rbp+var_10], rsi +000B2EEA: mov eax, 1 +000B2EEF: pop rbp +000B2EF0: retn + +### FUNC 000B2EF1 - 000B2F03 (18 bytes) name=_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_ +000B2EF1: push rbp +000B2EF2: mov rbp, rsp +000B2EF5: mov [rbp+var_8], rdi +000B2EF9: cmp [rbp+var_8], 0 +000B2EFE: setz al +000B2F01: pop rbp +000B2F02: retn + +### FUNC 000B2F03 - 000B2F3D (58 bytes) name=_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_ +000B2F03: push rbp +000B2F04: mov rbp, rsp +000B2F07: push rbx +000B2F08: sub rsp, 38h +000B2F0C: mov [rbp+var_28], rdi +000B2F10: mov [rbp+var_30], rsi +000B2F14: lea rax, [rbp+var_28] +000B2F18: mov rdi, rax +000B2F1B: call __ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_; std::__iterator_category(char * const&) +000B2F20: mov rax, [rbp+var_28] +000B2F24: mov rdx, [rbp+var_30] +000B2F28: mov [rsp+40h+var_40], bl +000B2F2B: mov rsi, rdx +000B2F2E: mov rdi, rax +000B2F31: call __ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag; std::__distance(char *,char *,std::random_access_iterator_tag) +000B2F36: add rsp, 38h +000B2F3A: pop rbx +000B2F3B: pop rbp +000B2F3C: retn + +### FUNC 000B2F3E - 000B2F54 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10is_booleanEv +000B2F3E: push rbp +000B2F3F: mov rbp, rsp +000B2F42: mov [rbp+var_8], rdi +000B2F46: mov rax, [rbp+var_8] +000B2F4A: movzx eax, byte ptr [rax] +000B2F4D: cmp al, 4 +000B2F4F: setz al +000B2F52: pop rbp +000B2F53: retn + +### FUNC 000B2F54 - 000B2F6E (26 bytes) name=_ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +000B2F54: push rbp; Alternative name is 'std::allocator>>>::allocator(void)' +000B2F55: mov rbp, rsp +000B2F58: sub rsp, 10h +000B2F5C: mov [rbp+var_8], rdi +000B2F60: mov rax, [rbp+var_8] +000B2F64: mov rdi, rax +000B2F67: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev; __gnu_cxx::new_allocator>>>::new_allocator(void) +000B2F6C: leave +000B2F6D: retn + +### FUNC 000B2F6E - 000B2F78 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +000B2F6E: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>::~new_allocator()' +000B2F6F: mov rbp, rsp +000B2F72: mov [rbp+var_8], rdi +000B2F76: pop rbp +000B2F77: retn + +### FUNC 000B2F78 - 000B2FAF (55 bytes) name=_ZNSt12_Destroy_auxILb0EE9__destroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SB_ +000B2F78: push rbp +000B2F79: mov rbp, rsp +000B2F7C: sub rsp, 10h +000B2F80: mov [rbp+var_8], rdi +000B2F84: mov [rbp+var_10], rsi +000B2F88: jmp short loc_B2FA3 +000B2F8A: mov rax, [rbp+var_8] +000B2F8E: mov rdi, rax +000B2F91: call __ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_; std::__addressof>>>(nlohmann::basic_json>>&) +000B2F96: mov rdi, rax +000B2F99: call __ZSt8_DestroyIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvPT_; std::_Destroy>>>(nlohmann::basic_json>> *) +000B2F9E: add [rbp+var_8], 10h +000B2FA3: mov rax, [rbp+var_8] +000B2FA7: cmp rax, [rbp+var_10] +000B2FAB: jnz short loc_B2F8A +000B2FAD: leave +000B2FAE: retn + +### FUNC 000B2FAF - 000B2FC9 (26 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS8_EENSt9enable_ifIXsrNS9_16__maxsize_helperIT_EE5valueEmE4typeERSE_ +000B2FAF: push rbp +000B2FB0: mov rbp, rsp +000B2FB3: sub rsp, 10h +000B2FB7: mov [rbp+var_8], rdi +000B2FBB: mov rax, [rbp+var_8] +000B2FBF: mov rdi, rax +000B2FC2: call __ZNK9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv; __gnu_cxx::new_allocator>>>::max_size(void) +000B2FC7: leave +000B2FC8: retn + +### FUNC 000B2FCA - 000B300C (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +000B2FCA: push rbp +000B2FCB: mov rbp, rsp +000B2FCE: sub rsp, 20h +000B2FD2: mov [rbp+var_8], rdi +000B2FD6: mov [rbp+var_10], rsi +000B2FDA: mov [rbp+var_18], rdx +000B2FDE: mov rax, [rbp+var_8] +000B2FE2: mov rdi, rax +000B2FE5: call __ZNK9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv; __gnu_cxx::new_allocator>>>::max_size(void) +000B2FEA: cmp rax, [rbp+var_10] +000B2FEE: setb al +000B2FF1: test al, al +000B2FF3: jz short loc_B2FFA +000B2FF5: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B2FFA: mov rax, [rbp+var_10] +000B2FFE: shl rax, 4 +000B3002: mov rdi, rax; unsigned __int64 +000B3005: call __Znwm; operator new(ulong) +000B300A: leave +000B300B: retn + +### FUNC 000B300C - 000B3039 (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_ET0_T_SC_SB_ +000B300C: push rbp +000B300D: mov rbp, rsp +000B3010: sub rsp, 20h +000B3014: mov [rbp+var_10], rdi +000B3018: mov [rbp+var_20], rsi +000B301C: mov [rbp+var_18], rdx +000B3020: mov rdx, [rbp+var_18] +000B3024: mov rcx, [rbp+var_20] +000B3028: mov rax, [rbp+var_10] +000B302C: mov rsi, rcx +000B302F: mov rdi, rax +000B3032: call __ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESB_EET0_T_SE_SD_; std::__uninitialized_copy::__uninit_copy>> *>,nlohmann::basic_json>> *>(std::move_iterator>> *>,std::move_iterator>> *>,nlohmann::basic_json>> *) +000B3037: leave +000B3038: retn + +### FUNC 000B3039 - 000B3056 (29 bytes) name=_ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEELb1EE7_S_baseESD_ +000B3039: push rbp +000B303A: mov rbp, rsp +000B303D: sub rsp, 10h +000B3041: mov [rbp+var_10], rdi +000B3045: lea rax, [rbp+var_10] +000B3049: mov rdi, rax +000B304C: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::base(void) +000B3051: mov rax, [rax] +000B3054: leave +000B3055: retn + +### FUNC 000B3056 - 000B3064 (14 bytes) name=_ZNSt10_Iter_baseISt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEELb0EE7_S_baseESB_ +000B3056: push rbp +000B3057: mov rbp, rsp +000B305A: mov [rbp+var_10], rdi +000B305E: mov rax, [rbp+var_10] +000B3062: pop rbp +000B3063: retn + +### FUNC 000B3064 - 000B30DF (123 bytes) name=_ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESt20back_insert_iteratorIS6_ISA_SaISA_EEEEET0_T_SH_SG_ +000B3064: push rbp +000B3065: mov rbp, rsp +000B3068: push rbx +000B3069: sub rsp, 38h +000B306D: mov [rbp+var_28], rdi +000B3071: mov [rbp+var_30], rsi +000B3075: mov [rbp+var_40], rdx +000B3079: mov rdx, [rbp+var_30] +000B307D: mov rax, [rbp+var_28] +000B3081: sub rdx, rax +000B3084: mov rax, rdx +000B3087: sar rax, 4 +000B308B: mov [rbp+var_18], rax +000B308F: jmp short loc_B30CD +000B3091: mov rax, [rbp+var_28] +000B3095: mov rdi, rax +000B3098: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000B309D: mov rbx, rax +000B30A0: lea rax, [rbp+var_40] +000B30A4: mov rdi, rax +000B30A7: call __ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEdeEv; std::back_insert_iterator>>,std::allocator>>>>>::operator*(void) +000B30AC: mov rsi, rbx +000B30AF: mov rdi, rax +000B30B2: call __ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEaSEOS7_; std::back_insert_iterator>>,std::allocator>>>>>::operator=(nlohmann::basic_json>>&&) +000B30B7: add [rbp+var_28], 10h +000B30BC: lea rax, [rbp+var_40] +000B30C0: mov rdi, rax +000B30C3: call __ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEppEv; std::back_insert_iterator>>,std::allocator>>>>>::operator++(void) +000B30C8: sub [rbp+var_18], 1 +000B30CD: cmp [rbp+var_18], 0 +000B30D2: jg short loc_B3091 +000B30D4: mov rax, [rbp+var_40] +000B30D8: add rsp, 38h +000B30DC: pop rbx +000B30DD: pop rbp +000B30DE: retn + +### FUNC 000B30DF - 000B3117 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JS7_EEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +000B30DF: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IS7_EEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_' +000B30E0: mov rbp, rsp +000B30E3: sub rsp, 20h +000B30E7: mov [rbp+var_8], rdi +000B30EB: mov [rbp+var_10], rsi +000B30EF: mov [rbp+var_18], rdx +000B30F3: mov rax, [rbp+var_18] +000B30F7: mov rdi, rax +000B30FA: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000B30FF: mov rdx, rax +000B3102: mov rcx, [rbp+var_10] +000B3106: mov rax, [rbp+var_8] +000B310A: mov rsi, rcx +000B310D: mov rdi, rax +000B3110: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JS8_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> &&) +000B3115: leave +000B3116: retn + +### FUNC 000B3118 - 000B31E1 (201 bytes) name=_ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc +000B3118: push rbp +000B3119: mov rbp, rsp +000B311C: push rbx +000B311D: sub rsp, 38h +000B3121: mov [rbp+var_28], rdi +000B3125: mov [rbp+var_30], rsi +000B3129: mov [rbp+var_38], rdx +000B312D: mov rax, [rbp+var_28] +000B3131: mov rdi, rax +000B3134: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv; std::vector>>,std::allocator>>>>::max_size(void) +000B3139: mov rbx, rax +000B313C: mov rax, [rbp+var_28] +000B3140: mov rdi, rax +000B3143: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B3148: sub rbx, rax +000B314B: mov rdx, rbx +000B314E: mov rax, [rbp+var_30] +000B3152: cmp rdx, rax +000B3155: setb al +000B3158: test al, al +000B315A: jz short loc_B3168 +000B315C: mov rax, [rbp+var_38] +000B3160: mov rdi, rax; char * +000B3163: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000B3168: mov rax, [rbp+var_28] +000B316C: mov rdi, rax +000B316F: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B3174: mov rbx, rax +000B3177: mov rax, [rbp+var_28] +000B317B: mov rdi, rax +000B317E: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B3183: mov [rbp+var_20], rax +000B3187: lea rdx, [rbp+var_30] +000B318B: lea rax, [rbp+var_20] +000B318F: mov rsi, rdx +000B3192: mov rdi, rax +000B3195: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000B319A: mov rax, [rax] +000B319D: add rax, rbx +000B31A0: mov [rbp+var_18], rax +000B31A4: mov rax, [rbp+var_28] +000B31A8: mov rdi, rax +000B31AB: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B31B0: cmp rax, [rbp+var_18] +000B31B4: ja short loc_B31C8 +000B31B6: mov rax, [rbp+var_28] +000B31BA: mov rdi, rax +000B31BD: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv; std::vector>>,std::allocator>>>>::max_size(void) +000B31C2: cmp rax, [rbp+var_18] +000B31C6: jnb short loc_B31D6 +000B31C8: mov rax, [rbp+var_28] +000B31CC: mov rdi, rax +000B31CF: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE8max_sizeEv; std::vector>>,std::allocator>>>>::max_size(void) +000B31D4: jmp short loc_B31DA +000B31D6: mov rax, [rbp+var_18] +000B31DA: add rsp, 38h +000B31DE: pop rbx +000B31DF: pop rbp +000B31E0: retn + +### FUNC 000B31E1 - 000B322F (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_ +000B31E1: push rbp +000B31E2: mov rbp, rsp +000B31E5: push rbx +000B31E6: sub rsp, 28h +000B31EA: mov [rbp+var_18], rdi +000B31EE: mov [rbp+var_20], rsi +000B31F2: mov [rbp+var_28], rdx +000B31F6: mov [rbp+var_30], rcx +000B31FA: mov rax, [rbp+var_20] +000B31FE: mov rdi, rax +000B3201: call __ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_; std::__make_move_if_noexcept_iterator>> *,std::move_iterator>> *>>(nlohmann::basic_json>> *) +000B3206: mov rbx, rax +000B3209: mov rax, [rbp+var_18] +000B320D: mov rdi, rax +000B3210: call __ZSt32__make_move_if_noexcept_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS8_EET0_T_; std::__make_move_if_noexcept_iterator>> *,std::move_iterator>> *>>(nlohmann::basic_json>> *) +000B3215: mov rcx, [rbp+var_30] +000B3219: mov rdx, [rbp+var_28] +000B321D: mov rsi, rbx +000B3220: mov rdi, rax +000B3223: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEES9_S8_ET0_T_SC_SB_RSaIT1_E; std::__uninitialized_copy_a>> *>,nlohmann::basic_json>> *,nlohmann::basic_json>>>(std::move_iterator>> *>,std::move_iterator>> *>,nlohmann::basic_json>> *,std::allocator>>> &) +000B3228: add rsp, 28h +000B322C: pop rbx +000B322D: pop rbp +000B322E: retn + +### FUNC 000B3230 - 000B324E (30 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS8_EEvPT_ +000B3230: push rbp +000B3231: mov rbp, rsp +000B3234: sub rsp, 10h +000B3238: mov [rbp+var_8], rdi +000B323C: mov [rbp+var_10], rsi +000B3240: mov rax, [rbp+var_10] +000B3244: mov rdi, rax +000B3247: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B324C: leave +000B324D: retn + +### FUNC 000B324E - 000B3260 (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPSt18_Rb_tree_node_base +000B324E: push rbp +000B324F: mov rbp, rsp +000B3252: mov [rbp+var_8], rdi +000B3256: mov rax, [rbp+var_8] +000B325A: mov rax, [rax+10h] +000B325E: pop rbp +000B325F: retn + +### FUNC 000B3260 - 000B327A (26 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EED2Ev +000B3260: push rbp; Alternative name is 'std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>::_Rb_tree_impl, true>::~_Rb_tree_impl()' +000B3261: mov rbp, rsp +000B3264: sub rsp, 10h +000B3268: mov [rbp+var_8], rdi +000B326C: mov rax, [rbp+var_8] +000B3270: mov rdi, rax +000B3273: call __ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev; std::allocator>>>>>::~allocator() +000B3278: leave +000B3279: retn + +### FUNC 000B327A - 000B32B2 (56 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EED2Ev +000B327A: push rbp; Alternative name is 'std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>::~_Rb_tree()' +000B327B: mov rbp, rsp +000B327E: sub rsp, 10h +000B3282: mov [rbp+var_8], rdi +000B3286: mov rax, [rbp+var_8] +000B328A: mov rdi, rax +000B328D: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_begin(void) +000B3292: mov rdx, rax +000B3295: mov rax, [rbp+var_8] +000B3299: mov rsi, rdx +000B329C: mov rdi, rax +000B329F: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_erase(std::_Rb_tree_node>>>> *) +000B32A4: mov rax, [rbp+var_8] +000B32A8: mov rdi, rax +000B32AB: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EED2Ev; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree_impl,true>::~_Rb_tree_impl() +000B32B0: leave +000B32B1: retn + +### FUNC 000B32B2 - 000B32EF (61 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE12_Vector_implC2Ev +000B32B2: push rbp; Alternative name is 'std::_Vector_base>> *, std::allocator>> *>>::_Vector_impl::_Vector_impl(void)' +000B32B3: mov rbp, rsp +000B32B6: sub rsp, 10h +000B32BA: mov [rbp+var_8], rdi +000B32BE: mov rax, [rbp+var_8] +000B32C2: mov rdi, rax +000B32C5: call __ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev; std::allocator>> *>::allocator(void) +000B32CA: mov rax, [rbp+var_8] +000B32CE: mov qword ptr [rax], 0 +000B32D5: mov rax, [rbp+var_8] +000B32D9: mov qword ptr [rax+8], 0 +000B32E1: mov rax, [rbp+var_8] +000B32E5: mov qword ptr [rax+10h], 0 +000B32ED: leave +000B32EE: retn + +### FUNC 000B32F0 - 000B3332 (66 bytes) name=_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev +000B32F0: push rbp; Alternative name is 'std::_Bvector_base>::_Bvector_impl::_Bvector_impl(void)' +000B32F1: mov rbp, rsp +000B32F4: sub rsp, 10h +000B32F8: mov [rbp+var_8], rdi +000B32FC: mov rax, [rbp+var_8] +000B3300: mov rdi, rax +000B3303: call __ZNSaImEC2Ev; std::allocator::allocator(void) +000B3308: mov rax, [rbp+var_8] +000B330C: mov rdi, rax; this +000B330F: call __ZNSt13_Bit_iteratorC2Ev; std::_Bit_iterator::_Bit_iterator(void) +000B3314: mov rax, [rbp+var_8] +000B3318: add rax, 10h +000B331C: mov rdi, rax; this +000B331F: call __ZNSt13_Bit_iteratorC2Ev; std::_Bit_iterator::_Bit_iterator(void) +000B3324: mov rax, [rbp+var_8] +000B3328: mov qword ptr [rax+20h], 0 +000B3330: leave +000B3331: retn + +### FUNC 000B3332 - 000B33D8 (166 bytes) name=_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_ +000B3332: push rbp +000B3333: mov rbp, rsp +000B3336: sub rsp, 70h +000B333A: mov rax, rcx +000B333D: mov rcx, r9 +000B3340: mov [rbp+var_40], rdi +000B3344: mov [rbp+var_38], rsi +000B3348: mov [rbp+var_50], rdx +000B334C: mov [rbp+var_48], rax +000B3350: mov [rbp+var_60], r8 +000B3354: mov [rbp+var_58], rcx +000B3358: mov rdx, [rbp+var_50] +000B335C: mov rax, [rbp+var_48] +000B3360: mov rdi, rdx +000B3363: mov rsi, rax +000B3366: call __ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(std::_Bit_iterator) +000B336B: mov rcx, rax +000B336E: mov rax, rdx +000B3371: mov [rbp+var_20], rcx +000B3375: mov [rbp+var_18], rax +000B3379: mov rdx, [rbp+var_40] +000B337D: mov rax, [rbp+var_38] +000B3381: mov rdi, rdx +000B3384: mov rsi, rax +000B3387: call __ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(std::_Bit_iterator) +000B338C: mov rcx, rax +000B338F: mov rax, rdx +000B3392: mov [rbp+var_10], rcx +000B3396: mov [rbp+var_8], rax +000B339A: mov r8, [rbp+var_60] +000B339E: mov rdi, [rbp+var_58] +000B33A2: mov rdx, [rbp+var_20] +000B33A6: mov rcx, [rbp+var_18] +000B33AA: mov rsi, [rbp+var_10] +000B33AE: mov rax, [rbp+var_8] +000B33B2: mov r9, rdi +000B33B5: mov rdi, rsi +000B33B8: mov rsi, rax +000B33BB: call __ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_; std::__copy_move_backward_a2(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000B33C0: mov rcx, rax +000B33C3: mov rax, rdx +000B33C6: mov [rbp+var_30], rcx +000B33CA: mov [rbp+var_28], rax +000B33CE: mov rax, [rbp+var_30] +000B33D2: mov rdx, [rbp+var_28] +000B33D6: leave +000B33D7: retn + +### FUNC 000B33D8 - 000B34A1 (201 bytes) name=_ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc +000B33D8: push rbp +000B33D9: mov rbp, rsp +000B33DC: push rbx +000B33DD: sub rsp, 38h +000B33E1: mov [rbp+var_28], rdi +000B33E5: mov [rbp+var_30], rsi +000B33E9: mov [rbp+var_38], rdx +000B33ED: mov rax, [rbp+var_28] +000B33F1: mov rdi, rax +000B33F4: call __ZNKSt6vectorIbSaIbEE8max_sizeEv; std::vector>::max_size(void) +000B33F9: mov rbx, rax +000B33FC: mov rax, [rbp+var_28] +000B3400: mov rdi, rax +000B3403: call __ZNKSt6vectorIbSaIbEE4sizeEv; std::vector>::size(void) +000B3408: sub rbx, rax +000B340B: mov rdx, rbx +000B340E: mov rax, [rbp+var_30] +000B3412: cmp rdx, rax +000B3415: setb al +000B3418: test al, al +000B341A: jz short loc_B3428 +000B341C: mov rax, [rbp+var_38] +000B3420: mov rdi, rax; char * +000B3423: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000B3428: mov rax, [rbp+var_28] +000B342C: mov rdi, rax +000B342F: call __ZNKSt6vectorIbSaIbEE4sizeEv; std::vector>::size(void) +000B3434: mov rbx, rax +000B3437: mov rax, [rbp+var_28] +000B343B: mov rdi, rax +000B343E: call __ZNKSt6vectorIbSaIbEE4sizeEv; std::vector>::size(void) +000B3443: mov [rbp+var_20], rax +000B3447: lea rdx, [rbp+var_30] +000B344B: lea rax, [rbp+var_20] +000B344F: mov rsi, rdx +000B3452: mov rdi, rax +000B3455: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000B345A: mov rax, [rax] +000B345D: add rax, rbx +000B3460: mov [rbp+var_18], rax +000B3464: mov rax, [rbp+var_28] +000B3468: mov rdi, rax +000B346B: call __ZNKSt6vectorIbSaIbEE4sizeEv; std::vector>::size(void) +000B3470: cmp rax, [rbp+var_18] +000B3474: ja short loc_B3488 +000B3476: mov rax, [rbp+var_28] +000B347A: mov rdi, rax +000B347D: call __ZNKSt6vectorIbSaIbEE8max_sizeEv; std::vector>::max_size(void) +000B3482: cmp rax, [rbp+var_18] +000B3486: jnb short loc_B3496 +000B3488: mov rax, [rbp+var_28] +000B348C: mov rdi, rax +000B348F: call __ZNKSt6vectorIbSaIbEE8max_sizeEv; std::vector>::max_size(void) +000B3494: jmp short loc_B349A +000B3496: mov rax, [rbp+var_18] +000B349A: add rsp, 38h +000B349E: pop rbx +000B349F: pop rbp +000B34A0: retn + +### FUNC 000B34A2 - 000B34D7 (53 bytes) name=_ZNSt13_Bvector_baseISaIbEE11_M_allocateEm +000B34A2: push rbp +000B34A3: mov rbp, rsp +000B34A6: sub rsp, 10h +000B34AA: mov [rbp+var_8], rdi +000B34AE: mov [rbp+var_10], rsi +000B34B2: mov rax, [rbp+var_10] +000B34B6: mov rdi, rax +000B34B9: call __ZNSt13_Bvector_baseISaIbEE8_S_nwordEm; std::_Bvector_base>::_S_nword(ulong) +000B34BE: mov rcx, rax +000B34C1: mov rax, [rbp+var_8] +000B34C5: mov edx, 0 +000B34CA: mov rsi, rcx +000B34CD: mov rdi, rax +000B34D0: call __ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000B34D5: leave +000B34D6: retn + +### FUNC 000B34D8 - 000B3583 (171 bytes) name=_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator +000B34D8: push rbp +000B34D9: mov rbp, rsp +000B34DC: add rsp, 0FFFFFFFFFFFFFF80h +000B34E0: mov [rbp+var_48], rdi +000B34E4: mov rax, rcx +000B34E7: mov rcx, r8 +000B34EA: mov [rbp+var_58], rsi +000B34EE: mov [rbp+var_50], rdx +000B34F2: mov [rbp+var_68], rax +000B34F6: mov [rbp+var_60], rcx +000B34FA: mov rdx, [rbp+arg_0] +000B34FE: mov rcx, [rbp+var_68] +000B3502: mov rax, [rbp+var_58] +000B3506: mov rsi, rcx +000B3509: mov rdi, rax +000B350C: call __ZSt4copyIPmS0_ET0_T_S2_S1_; std::copy(ulong *,ulong *,ulong *) +000B3511: mov [rbp+var_8], rax +000B3515: mov rcx, [rbp+var_8] +000B3519: lea rax, [rbp+var_30] +000B351D: mov edx, 0; unsigned int +000B3522: mov rsi, rcx; unsigned __int64 * +000B3525: mov rdi, rax; this +000B3528: call __ZNSt13_Bit_iteratorC2EPmj; std::_Bit_iterator::_Bit_iterator(ulong *,uint) +000B352D: mov rcx, [rbp+var_68] +000B3531: lea rax, [rbp+var_20] +000B3535: mov edx, 0; unsigned int +000B353A: mov rsi, rcx; unsigned __int64 * +000B353D: mov rdi, rax; this +000B3540: call __ZNSt19_Bit_const_iteratorC2EPmj; std::_Bit_const_iterator::_Bit_const_iterator(ulong *,uint) +000B3545: mov r8, [rbp+var_30] +000B3549: mov rdi, [rbp+var_28] +000B354D: mov rdx, [rbp+var_68] +000B3551: mov rcx, [rbp+var_60] +000B3555: mov rsi, [rbp+var_20] +000B3559: mov rax, [rbp+var_18] +000B355D: mov r9, rdi +000B3560: mov rdi, rsi +000B3563: mov rsi, rax +000B3566: call __ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_; std::copy(std::_Bit_const_iterator,std::_Bit_const_iterator,std::_Bit_iterator) +000B356B: mov rcx, rax +000B356E: mov rax, rdx +000B3571: mov [rbp+var_40], rcx +000B3575: mov [rbp+var_38], rax +000B3579: mov rax, [rbp+var_40] +000B357D: mov rdx, [rbp+var_38] +000B3581: leave +000B3582: retn + +### FUNC 000B3584 - 000B35A9 (37 bytes) name=_ZNSt6vectorIbSaIbEE5beginEv +000B3584: push rbp +000B3585: mov rbp, rsp +000B3588: mov [rbp+var_18], rdi +000B358C: mov rax, [rbp+var_18] +000B3590: mov rdx, [rax] +000B3593: mov [rbp+var_10], rdx +000B3597: mov rax, [rax+8] +000B359B: mov [rbp+var_8], rax +000B359F: mov rax, [rbp+var_10] +000B35A3: mov rdx, [rbp+var_8] +000B35A7: pop rbp +000B35A8: retn + +### FUNC 000B35A9 - 000B364F (166 bytes) name=_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_ +000B35A9: push rbp +000B35AA: mov rbp, rsp +000B35AD: sub rsp, 70h +000B35B1: mov rax, rcx +000B35B4: mov rcx, r9 +000B35B7: mov [rbp+var_40], rdi +000B35BB: mov [rbp+var_38], rsi +000B35BF: mov [rbp+var_50], rdx +000B35C3: mov [rbp+var_48], rax +000B35C7: mov [rbp+var_60], r8 +000B35CB: mov [rbp+var_58], rcx +000B35CF: mov rdx, [rbp+var_50] +000B35D3: mov rax, [rbp+var_48] +000B35D7: mov rdi, rdx +000B35DA: mov rsi, rax +000B35DD: call __ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(std::_Bit_iterator) +000B35E2: mov rcx, rax +000B35E5: mov rax, rdx +000B35E8: mov [rbp+var_20], rcx +000B35EC: mov [rbp+var_18], rax +000B35F0: mov rdx, [rbp+var_40] +000B35F4: mov rax, [rbp+var_38] +000B35F8: mov rdi, rdx +000B35FB: mov rsi, rax +000B35FE: call __ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(std::_Bit_iterator) +000B3603: mov rcx, rax +000B3606: mov rax, rdx +000B3609: mov [rbp+var_10], rcx +000B360D: mov [rbp+var_8], rax +000B3611: mov r8, [rbp+var_60] +000B3615: mov rdi, [rbp+var_58] +000B3619: mov rdx, [rbp+var_20] +000B361D: mov rcx, [rbp+var_18] +000B3621: mov rsi, [rbp+var_10] +000B3625: mov rax, [rbp+var_8] +000B3629: mov r9, rdi +000B362C: mov rdi, rsi +000B362F: mov rsi, rax +000B3632: call __ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_; std::__copy_move_a2(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000B3637: mov rcx, rax +000B363A: mov rax, rdx +000B363D: mov [rbp+var_30], rcx +000B3641: mov [rbp+var_28], rax +000B3645: mov rax, [rbp+var_30] +000B3649: mov rdx, [rbp+var_28] +000B364D: leave +000B364E: retn + +### FUNC 000B364F - 000B3665 (22 bytes) name=_ZNSt13_Bvector_baseISaIbEE8_S_nwordEm +000B364F: push rbp +000B3650: mov rbp, rsp +000B3653: mov [rbp+var_8], rdi +000B3657: mov rax, [rbp+var_8] +000B365B: add rax, 3Fh ; '?' +000B365F: shr rax, 6 +000B3663: pop rbp +000B3664: retn + +### FUNC 000B3666 - 000B3670 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEED2Ev +000B3666: push rbp; Alternative name is '__gnu_cxx::new_allocator>> *>::~new_allocator()' +000B3667: mov rbp, rsp +000B366A: mov [rbp+var_8], rdi +000B366E: pop rbp +000B366F: retn + +### FUNC 000B3670 - 000B3692 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE10deallocateEPS9_m +000B3670: push rbp +000B3671: mov rbp, rsp +000B3674: sub rsp, 20h +000B3678: mov [rbp+var_8], rdi +000B367C: mov [rbp+var_10], rsi +000B3680: mov [rbp+var_18], rdx +000B3684: mov rax, [rbp+var_10] +000B3688: mov rdi, rax; void * +000B368B: call __ZdlPv; operator delete(void *) +000B3690: leave +000B3691: retn + +### FUNC 000B3692 - 000B36A0 (14 bytes) name=_ZNSt12_Destroy_auxILb1EE9__destroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEvT_SC_ +000B3692: push rbp +000B3693: mov rbp, rsp +000B3696: mov [rbp+var_8], rdi +000B369A: mov [rbp+var_10], rsi +000B369E: pop rbp +000B369F: retn + +### FUNC 000B36A0 - 000B36AA (10 bytes) name=_ZN9__gnu_cxx13new_allocatorImED2Ev +000B36A0: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000B36A1: mov rbp, rsp +000B36A4: mov [rbp+var_8], rdi +000B36A8: pop rbp +000B36A9: retn + +### FUNC 000B36AA - 000B36CC (34 bytes) name=_ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm +000B36AA: push rbp +000B36AB: mov rbp, rsp +000B36AE: sub rsp, 20h +000B36B2: mov [rbp+var_8], rdi +000B36B6: mov [rbp+var_10], rsi +000B36BA: mov [rbp+var_18], rdx +000B36BE: mov rax, [rbp+var_10] +000B36C2: mov rdi, rax; void * +000B36C5: call __ZdlPv; operator delete(void *) +000B36CA: leave +000B36CB: retn + +### FUNC 000B36CC - 000B3704 (56 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_ +000B36CC: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_IRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_' +000B36CD: mov rbp, rsp +000B36D0: sub rsp, 20h +000B36D4: mov [rbp+var_8], rdi +000B36D8: mov [rbp+var_10], rsi +000B36DC: mov [rbp+var_18], rdx +000B36E0: mov rax, [rbp+var_18] +000B36E4: mov rdi, rax +000B36E7: call __ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE; std::forward>> * const&>(std::remove_reference>> * const&>::type &) +000B36EC: mov rdx, rax +000B36EF: mov rcx, [rbp+var_10] +000B36F3: mov rax, [rbp+var_8] +000B36F7: mov rsi, rcx +000B36FA: mov rdi, rax +000B36FD: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JRKS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSG_DpOSH_; std::allocator_traits>> *>>::_S_construct>> *,nlohmann::basic_json>> * const&>(std::allocator>> *>&,nlohmann::basic_json>> **,nlohmann::basic_json>> * const&&&) +000B3702: leave +000B3703: retn + +### FUNC 000B3704 - 000B38F0 (492 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJRKS7_EEEvDpOT_ +000B3704: push rbp; Alternative name is 'void std::vector>> *, std::allocator>> *>>::_M_emplace_back_aux>> * const&>(nlohmann::basic_json>> * const&)' +000B3705: mov rbp, rsp +000B3708: push rbx +000B3709: sub rsp, 38h +000B370D: mov [rbp+var_38], rdi +000B3711: mov [rbp+var_40], rsi +000B3715: mov rax, [rbp+var_38] +000B3719: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B3720: mov esi, 1 +000B3725: mov rdi, rax +000B3728: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12_M_check_lenEmPKc; std::vector>> *,std::allocator>> *>>::_M_check_len(ulong,char const*) +000B372D: mov [rbp+var_20], rax +000B3731: mov rax, [rbp+var_38] +000B3735: mov rdx, [rbp+var_20] +000B3739: mov rsi, rdx +000B373C: mov rdi, rax +000B373F: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE11_M_allocateEm; std::_Vector_base>> *,std::allocator>> *>>::_M_allocate(ulong) +000B3744: mov [rbp+var_28], rax +000B3748: mov rax, [rbp+var_28] +000B374C: mov [rbp+var_18], rax +000B3750: mov rax, [rbp+var_40] +000B3754: mov rdi, rax +000B3757: call __ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE; std::forward>> * const&>(std::remove_reference>> * const&>::type &) +000B375C: mov rbx, rax +000B375F: mov rax, [rbp+var_38] +000B3763: mov rdi, rax +000B3766: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B376B: lea rdx, ds:0[rax*8] +000B3773: mov rax, [rbp+var_28] +000B3777: lea rcx, [rdx+rax] +000B377B: mov rax, [rbp+var_38] +000B377F: mov rdx, rbx +000B3782: mov rsi, rcx +000B3785: mov rdi, rax +000B3788: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JRKS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSE_ +000B378D: mov [rbp+var_18], 0 +000B3795: mov rax, [rbp+var_38] +000B3799: mov rdi, rax +000B379C: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B37A1: mov rcx, rax +000B37A4: mov rax, [rbp+var_38] +000B37A8: mov rsi, [rax+8] +000B37AC: mov rax, [rbp+var_38] +000B37B0: mov rax, [rax] +000B37B3: mov rdx, [rbp+var_28] +000B37B7: mov rdi, rax +000B37BA: call __ZSt34__uninitialized_move_if_noexcept_aIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_SaIS8_EET0_T_SC_SB_RT1_; std::__uninitialized_move_if_noexcept_a>> **,nlohmann::basic_json>> **,std::allocator>> *>>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000B37BF: mov [rbp+var_18], rax +000B37C3: add [rbp+var_18], 8 +000B37C8: mov rax, [rbp+var_38] +000B37CC: mov rdi, rax +000B37CF: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B37D4: mov rdx, rax +000B37D7: mov rax, [rbp+var_38] +000B37DB: mov rcx, [rax+8] +000B37DF: mov rax, [rbp+var_38] +000B37E3: mov rax, [rax] +000B37E6: mov rsi, rcx +000B37E9: mov rdi, rax +000B37EC: call __ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E; std::_Destroy>> **,nlohmann::basic_json>> *>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000B37F1: mov rax, [rbp+var_38] +000B37F5: mov rax, [rax+10h] +000B37F9: mov rdx, rax +000B37FC: mov rax, [rbp+var_38] +000B3800: mov rax, [rax] +000B3803: sub rdx, rax +000B3806: mov rax, rdx +000B3809: sar rax, 3 +000B380D: mov rdx, rax +000B3810: mov rax, [rbp+var_38] +000B3814: mov rcx, [rax] +000B3817: mov rax, [rbp+var_38] +000B381B: mov rsi, rcx +000B381E: mov rdi, rax +000B3821: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m; std::_Vector_base>> *,std::allocator>> *>>::_M_deallocate(nlohmann::basic_json>> **,ulong) +000B3826: mov rax, [rbp+var_38] +000B382A: mov rdx, [rbp+var_28] +000B382E: mov [rax], rdx +000B3831: mov rax, [rbp+var_38] +000B3835: mov rdx, [rbp+var_18] +000B3839: mov [rax+8], rdx +000B383D: mov rax, [rbp+var_20] +000B3841: lea rdx, ds:0[rax*8] +000B3849: mov rax, [rbp+var_28] +000B384D: add rdx, rax +000B3850: mov rax, [rbp+var_38] +000B3854: mov [rax+10h], rdx +000B3858: jmp loc_B38E9 +000B385D: mov rdi, rax; void * +000B3860: call ___cxa_begin_catch +000B3865: cmp [rbp+var_18], 0 +000B386A: jnz short loc_B3898 +000B386C: mov rax, [rbp+var_38] +000B3870: mov rdi, rax +000B3873: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B3878: lea rdx, ds:0[rax*8] +000B3880: mov rax, [rbp+var_28] +000B3884: add rdx, rax +000B3887: mov rax, [rbp+var_38] +000B388B: mov rsi, rdx +000B388E: mov rdi, rax +000B3891: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_; std::allocator_traits>> *>>::destroy>> *>(std::allocator>> *>&,nlohmann::basic_json>> * *) +000B3896: jmp short loc_B38BA +000B3898: mov rax, [rbp+var_38] +000B389C: mov rdi, rax +000B389F: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B38A4: mov rdx, rax +000B38A7: mov rcx, [rbp+var_18] +000B38AB: mov rax, [rbp+var_28] +000B38AF: mov rsi, rcx +000B38B2: mov rdi, rax +000B38B5: call __ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E; std::_Destroy>> **,nlohmann::basic_json>> *>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000B38BA: mov rax, [rbp+var_38] +000B38BE: mov rdx, [rbp+var_20] +000B38C2: mov rcx, [rbp+var_28] +000B38C6: mov rsi, rcx +000B38C9: mov rdi, rax +000B38CC: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m; std::_Vector_base>> *,std::allocator>> *>>::_M_deallocate(nlohmann::basic_json>> **,ulong) +000B38D1: call ___cxa_rethrow +000B38D6: mov rbx, rax +000B38D9: call ___cxa_end_catch +000B38DE: mov rax, rbx +000B38E1: mov rdi, rax; struct _Unwind_Exception * +000B38E4: call __Unwind_Resume +000B38E9: add rsp, 38h +000B38ED: pop rbx +000B38EE: pop rbp +000B38EF: retn + +### FUNC 000B38F0 - 000B3919 (41 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +000B38F0: push rbp +000B38F1: mov rbp, rsp +000B38F4: sub rsp, 20h +000B38F8: mov [rbp+var_18], rdi +000B38FC: mov rax, [rbp+var_18] +000B3900: lea rdx, [rax+8] +000B3904: lea rax, [rbp+var_10] +000B3908: mov rsi, rdx +000B390B: mov rdi, rax +000B390E: call __ZN9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSA_; __gnu_cxx::__normal_iterator>> **,std::vector>> *,std::allocator>> *>>>::__normal_iterator(nlohmann::basic_json>> ** const&) +000B3913: mov rax, [rbp+var_10] +000B3917: leave +000B3918: retn + +### FUNC 000B391A - 000B395F (69 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEmiERKl +000B391A: push rbp +000B391B: mov rbp, rsp +000B391E: sub rsp, 20h +000B3922: mov [rbp+var_18], rdi +000B3926: mov [rbp+var_20], rsi +000B392A: mov rax, [rbp+var_18] +000B392E: mov rdx, [rax] +000B3931: mov rax, [rbp+var_20] +000B3935: mov rax, [rax] +000B3938: shl rax, 3 +000B393C: neg rax +000B393F: add rax, rdx +000B3942: mov [rbp+var_8], rax +000B3946: lea rdx, [rbp+var_8] +000B394A: lea rax, [rbp+var_10] +000B394E: mov rsi, rdx +000B3951: mov rdi, rax +000B3954: call __ZN9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSA_; __gnu_cxx::__normal_iterator>> **,std::vector>> *,std::allocator>> *>>>::__normal_iterator(nlohmann::basic_json>> ** const&) +000B3959: mov rax, [rbp+var_10] +000B395D: leave +000B395E: retn + +### FUNC 000B3960 - 000B3971 (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEdeEv +000B3960: push rbp +000B3961: mov rbp, rsp +000B3964: mov [rbp+var_8], rdi +000B3968: mov rax, [rbp+var_8] +000B396C: mov rax, [rax] +000B396F: pop rbp +000B3970: retn + +### FUNC 000B3972 - 000B398C (26 bytes) name=_ZNKSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE8max_sizeEv +000B3972: push rbp +000B3973: mov rbp, rsp +000B3976: sub rsp, 10h +000B397A: mov [rbp+var_8], rdi +000B397E: mov rax, [rbp+var_8] +000B3982: mov rdi, rax +000B3985: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8max_sizeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::max_size(void) +000B398A: leave +000B398B: retn + +### FUNC 000B398C - 000B39BD (49 bytes) name=_ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE3endEv +000B398C: push rbp +000B398D: mov rbp, rsp +000B3990: sub rsp, 20h +000B3994: mov [rbp+var_18], rdi +000B3998: mov rax, [rbp+var_18] +000B399C: mov rax, [rax+8] +000B39A0: mov [rbp+var_8], rax +000B39A4: lea rdx, [rbp+var_8] +000B39A8: lea rax, [rbp+var_10] +000B39AC: mov rsi, rdx +000B39AF: mov rdi, rax +000B39B2: call __ZN9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSB_; __gnu_cxx::__normal_iterator>> * const*,std::vector>> *,std::allocator>> *>>>::__normal_iterator(nlohmann::basic_json>> * const* const&) +000B39B7: mov rax, [rbp+var_10] +000B39BB: leave +000B39BC: retn + +### FUNC 000B39BE - 000B39EE (48 bytes) name=_ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE5beginEv +000B39BE: push rbp +000B39BF: mov rbp, rsp +000B39C2: sub rsp, 20h +000B39C6: mov [rbp+var_18], rdi +000B39CA: mov rax, [rbp+var_18] +000B39CE: mov rax, [rax] +000B39D1: mov [rbp+var_8], rax +000B39D5: lea rdx, [rbp+var_8] +000B39D9: lea rax, [rbp+var_10] +000B39DD: mov rsi, rdx +000B39E0: mov rdi, rax +000B39E3: call __ZN9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSB_; __gnu_cxx::__normal_iterator>> * const*,std::vector>> *,std::allocator>> *>>>::__normal_iterator(nlohmann::basic_json>> * const* const&) +000B39E8: mov rax, [rbp+var_10] +000B39EC: leave +000B39ED: retn + +### FUNC 000B39EE - 000B3A2A (60 bytes) name=_ZN9__gnu_cxxeqIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_ +000B39EE: push rbp +000B39EF: mov rbp, rsp +000B39F2: push rbx +000B39F3: sub rsp, 18h +000B39F7: mov [rbp+var_18], rdi +000B39FB: mov [rbp+var_20], rsi +000B39FF: mov rax, [rbp+var_18] +000B3A03: mov rdi, rax +000B3A06: call __ZNK9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEE4baseEv; __gnu_cxx::__normal_iterator>> * const*,std::vector>> *,std::allocator>> *>>>::base(void) +000B3A0B: mov rbx, [rax] +000B3A0E: mov rax, [rbp+var_20] +000B3A12: mov rdi, rax +000B3A15: call __ZNK9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEE4baseEv; __gnu_cxx::__normal_iterator>> * const*,std::vector>> *,std::allocator>> *>>>::base(void) +000B3A1A: mov rax, [rax] +000B3A1D: cmp rbx, rax +000B3A20: setz al +000B3A23: add rsp, 18h +000B3A27: pop rbx +000B3A28: pop rbp +000B3A29: retn + +### FUNC 000B3A2A - 000B3A4F (37 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_ +000B3A2A: push rbp +000B3A2B: mov rbp, rsp +000B3A2E: sub rsp, 10h +000B3A32: mov [rbp+var_8], rdi +000B3A36: mov [rbp+var_10], rsi +000B3A3A: mov rdx, [rbp+var_10] +000B3A3E: mov rax, [rbp+var_8] +000B3A42: mov rsi, rdx +000B3A45: mov rdi, rax +000B3A48: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS8_EENSt9enable_ifIXsrNSA_16__destroy_helperIT_EE5valueEvE4typeERS9_PSE_; std::allocator_traits>> *>>::_S_destroy>> *>(std::allocator>> *>&,nlohmann::basic_json>> **) +000B3A4D: leave +000B3A4E: retn + +### FUNC 000B3A50 - 000B3A75 (37 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorISB_E +000B3A50: push rbp +000B3A51: mov rbp, rsp +000B3A54: sub rsp, 10h +000B3A58: mov [rbp+var_8], rdi +000B3A5C: mov [rbp+var_10], rsi +000B3A60: mov rax, [rbp+var_8] +000B3A64: mov rdx, [rbp+var_10] +000B3A68: mov rsi, rdx +000B3A6B: mov rdi, rax +000B3A6E: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5eraseB5cxx11ESt17_Rb_tree_iteratorISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::erase(std::_Rb_tree_iterator>>>>) +000B3A73: leave +000B3A74: retn + +### FUNC 000B3A76 - 000B3B3C (198 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS6_S8_EE +000B3A76: push rbp +000B3A77: mov rbp, rsp +000B3A7A: push rbx +000B3A7B: sub rsp, 48h +000B3A7F: mov [rbp+var_48], rdi +000B3A83: mov [rbp+var_50], rsi +000B3A87: mov rax, [rbp+var_48] +000B3A8B: mov rdi, rax +000B3A8E: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000B3A93: mov [rbp+var_40], rax +000B3A97: mov [rbp+var_20], 1 +000B3A9F: lea rdx, [rbp+var_20] +000B3AA3: lea rax, [rbp+var_50] +000B3AA7: mov rsi, rdx +000B3AAA: mov rdi, rax +000B3AAD: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEplERKl; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator+(long const&) +000B3AB2: mov [rbp+var_30], rax +000B3AB6: lea rdx, [rbp+var_40] +000B3ABA: lea rax, [rbp+var_30] +000B3ABE: mov rsi, rdx +000B3AC1: mov rdi, rax +000B3AC4: call __ZN9__gnu_cxxneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_; __gnu_cxx::operator!=>> *,std::vector>>,std::allocator>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>> const&) +000B3AC9: test al, al +000B3ACB: jz short loc_B3B06 +000B3ACD: mov rax, [rbp+var_48] +000B3AD1: mov rdi, rax +000B3AD4: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000B3AD9: mov rbx, rax +000B3ADC: mov [rbp+var_18], 1 +000B3AE4: lea rdx, [rbp+var_18] +000B3AE8: lea rax, [rbp+var_50] +000B3AEC: mov rsi, rdx +000B3AEF: mov rdi, rax +000B3AF2: call __ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEplERKl; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::operator+(long const&) +000B3AF7: mov rdx, [rbp+var_50] +000B3AFB: mov rsi, rbx +000B3AFE: mov rdi, rax +000B3B01: call __ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET0_T_SF_SE_; std::move<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B3B06: mov rax, [rbp+var_48] +000B3B0A: mov rax, [rax+8] +000B3B0E: lea rdx, [rax-10h] +000B3B12: mov rax, [rbp+var_48] +000B3B16: mov [rax+8], rdx +000B3B1A: mov rax, [rbp+var_48] +000B3B1E: mov rdx, [rax+8] +000B3B22: mov rax, [rbp+var_48] +000B3B26: mov rsi, rdx +000B3B29: mov rdi, rax +000B3B2C: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B3B31: mov rax, [rbp+var_50] +000B3B35: add rsp, 48h +000B3B39: pop rbx +000B3B3A: pop rbp +000B3B3B: retn + +### FUNC 000B3B3C - 000B3B73 (55 bytes) name=_ZN8nlohmann14adl_serializerISsvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERSsEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3B3C: push rbp +000B3B3D: mov rbp, rsp +000B3B40: sub rsp, 10h +000B3B44: mov [rbp+var_8], rdi +000B3B48: mov [rbp+var_10], rsi +000B3B4C: mov rax, [rbp+var_10] +000B3B50: mov rdi, rax +000B3B53: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3B58: mov rdx, rax +000B3B5B: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_10to_json_fnEE5valueE_ptr +000B3B62: mov rcx, [rbp+var_8] +000B3B66: mov rsi, rcx +000B3B69: mov rdi, rax +000B3B6C: call __ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERSsEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3B71: leave +000B3B72: retn + +### FUNC 000B3B74 - 000B3C8B (279 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_ +000B3B74: push rbp; Alternative name is 'std::_Rb_tree_iterator>>>> std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>> +000B3B75: mov rbp, rsp +000B3B78: push r12 +000B3B7A: push rbx +000B3B7B: sub rsp, 50h +000B3B7F: mov [rbp+var_38], rdi +000B3B83: mov [rbp+var_40], rsi +000B3B87: mov [rbp+var_48], rdx +000B3B8B: mov [rbp+var_50], rcx +000B3B8F: mov [rbp+var_58], r8 +000B3B93: mov rax, [rbp+var_58] +000B3B97: mov rdi, rax +000B3B9A: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B3B9F: mov r12, rax +000B3BA2: mov rax, [rbp+var_50] +000B3BA6: mov rdi, rax +000B3BA9: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B3BAE: mov rbx, rax +000B3BB1: mov rax, [rbp+var_48] +000B3BB5: mov rdi, rax +000B3BB8: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B3BBD: mov rsi, rax +000B3BC0: mov rax, [rbp+var_38] +000B3BC4: mov rcx, r12 +000B3BC7: mov rdx, rbx +000B3BCA: mov rdi, rax +000B3BCD: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_create_node,std::tuple<>>() +000B3BD2: mov [rbp+var_18], rax +000B3BD6: mov rax, [rbp+var_18] +000B3BDA: mov rdi, rax +000B3BDD: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_S_keyEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_key(std::_Rb_tree_node>>>> const*) +000B3BE2: mov rdx, rax +000B3BE5: mov rcx, [rbp+var_40] +000B3BE9: mov rax, [rbp+var_38] +000B3BED: mov rsi, rcx +000B3BF0: mov rdi, rax +000B3BF3: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS1_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator>>>>,std::string const&) +000B3BF8: mov [rbp+var_30], rax +000B3BFC: mov [rbp+var_28], rdx +000B3C00: mov rax, [rbp+var_28] +000B3C04: test rax, rax +000B3C07: jz short loc_B3C23 +000B3C09: mov rdx, [rbp+var_28] +000B3C0D: mov rsi, [rbp+var_30] +000B3C11: mov rcx, [rbp+var_18] +000B3C15: mov rax, [rbp+var_38] +000B3C19: mov rdi, rax +000B3C1C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_insert_node(std::_Rb_tree_node_base *,std::_Rb_tree_node_base *,std::_Rb_tree_node>>>> *) +000B3C21: jmp short loc_B3C82 +000B3C23: mov rdx, [rbp+var_18] +000B3C27: mov rax, [rbp+var_38] +000B3C2B: mov rsi, rdx +000B3C2E: mov rdi, rax +000B3C31: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_destroy_node(std::_Rb_tree_node>>>> *) +000B3C36: mov rdx, [rbp+var_30] +000B3C3A: lea rax, [rbp+var_20] +000B3C3E: mov rsi, rdx +000B3C41: mov rdi, rax +000B3C44: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2EPSt13_Rb_tree_nodeISA_E; std::_Rb_tree_iterator>>>>::_Rb_tree_iterator(std::_Rb_tree_node>>>> *) +000B3C49: mov rax, [rbp+var_20] +000B3C4D: jmp short loc_B3C82 +000B3C4F: mov rdi, rax; void * +000B3C52: call ___cxa_begin_catch +000B3C57: mov rdx, [rbp+var_18] +000B3C5B: mov rax, [rbp+var_38] +000B3C5F: mov rsi, rdx +000B3C62: mov rdi, rax +000B3C65: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_destroy_node(std::_Rb_tree_node>>>> *) +000B3C6A: call ___cxa_rethrow +000B3C6F: mov rbx, rax +000B3C72: call ___cxa_end_catch +000B3C77: mov rax, rbx +000B3C7A: mov rdi, rax; struct _Unwind_Exception * +000B3C7D: call __Unwind_Resume +000B3C82: add rsp, 50h +000B3C86: pop rbx +000B3C87: pop r12 +000B3C89: pop rbp +000B3C8A: retn + +### FUNC 000B3C8C - 000B3CDB (79 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_ +000B3C8C: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(double &)' +000B3C8D: mov rbp, rsp +000B3C90: sub rsp, 10h +000B3C94: mov [rbp+var_8], rdi +000B3C98: mov [rbp+var_10], rsi +000B3C9C: mov rax, [rbp+var_8] +000B3CA0: mov byte ptr [rax], 0 +000B3CA3: mov rax, [rbp+var_8] +000B3CA7: mov qword ptr [rax+8], 0 +000B3CAF: mov rax, [rbp+var_10] +000B3CB3: mov rdi, rax +000B3CB6: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3CBB: mov rdx, rax +000B3CBE: mov rax, [rbp+var_8] +000B3CC2: mov rsi, rdx +000B3CC5: mov rdi, rax +000B3CC8: call __ZN8nlohmann14adl_serializerIdvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERdEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3CCD: mov rax, [rbp+var_8] +000B3CD1: mov rdi, rax +000B3CD4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B3CD9: leave +000B3CDA: retn + +### FUNC 000B3CDC - 000B3D2B (79 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_ +000B3CDC: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(bool &)' +000B3CDD: mov rbp, rsp +000B3CE0: sub rsp, 10h +000B3CE4: mov [rbp+var_8], rdi +000B3CE8: mov [rbp+var_10], rsi +000B3CEC: mov rax, [rbp+var_8] +000B3CF0: mov byte ptr [rax], 0 +000B3CF3: mov rax, [rbp+var_8] +000B3CF7: mov qword ptr [rax+8], 0 +000B3CFF: mov rax, [rbp+var_10] +000B3D03: mov rdi, rax +000B3D06: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3D0B: mov rdx, rax +000B3D0E: mov rax, [rbp+var_8] +000B3D12: mov rsi, rdx +000B3D15: mov rdi, rax +000B3D18: call __ZN8nlohmann14adl_serializerIbvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERbEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3D1D: mov rax, [rbp+var_8] +000B3D21: mov rdi, rax +000B3D24: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B3D29: leave +000B3D2A: retn + +### FUNC 000B3D2C - 000B3D7B (79 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_ +000B3D2C: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(long &)' +000B3D2D: mov rbp, rsp +000B3D30: sub rsp, 10h +000B3D34: mov [rbp+var_8], rdi +000B3D38: mov [rbp+var_10], rsi +000B3D3C: mov rax, [rbp+var_8] +000B3D40: mov byte ptr [rax], 0 +000B3D43: mov rax, [rbp+var_8] +000B3D47: mov qword ptr [rax+8], 0 +000B3D4F: mov rax, [rbp+var_10] +000B3D53: mov rdi, rax +000B3D56: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3D5B: mov rdx, rax +000B3D5E: mov rax, [rbp+var_8] +000B3D62: mov rsi, rdx +000B3D65: mov rdi, rax +000B3D68: call __ZN8nlohmann14adl_serializerIlvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERlEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3D6D: mov rax, [rbp+var_8] +000B3D71: mov rdi, rax +000B3D74: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B3D79: leave +000B3D7A: retn + +### FUNC 000B3D7C - 000B3DCB (79 bytes) name=_ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_ +000B3D7C: push rbp; Alternative name is 'nlohmann::basic_json>>::basic_json(unsigned long &)' +000B3D7D: mov rbp, rsp +000B3D80: sub rsp, 10h +000B3D84: mov [rbp+var_8], rdi +000B3D88: mov [rbp+var_10], rsi +000B3D8C: mov rax, [rbp+var_8] +000B3D90: mov byte ptr [rax], 0 +000B3D93: mov rax, [rbp+var_8] +000B3D97: mov qword ptr [rax+8], 0 +000B3D9F: mov rax, [rbp+var_10] +000B3DA3: mov rdi, rax +000B3DA6: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3DAB: mov rdx, rax +000B3DAE: mov rax, [rbp+var_8] +000B3DB2: mov rsi, rdx +000B3DB5: mov rdi, rax +000B3DB8: call __ZN8nlohmann14adl_serializerImvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERmEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B3DBD: mov rax, [rbp+var_8] +000B3DC1: mov rdi, rax +000B3DC4: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B3DC9: leave +000B3DCA: retn + +### FUNC 000B3DCC - 000B3DDD (17 bytes) name=_ZNKSt16initializer_listIKjE5beginEv +000B3DCC: push rbp +000B3DCD: mov rbp, rsp +000B3DD0: mov [rbp+var_8], rdi +000B3DD4: mov rax, [rbp+var_8] +000B3DD8: mov rax, [rax] +000B3DDB: pop rbp +000B3DDC: retn + +### FUNC 000B3DDE - 000B3DF0 (18 bytes) name=_ZNKSt16initializer_listIKjE4sizeEv +000B3DDE: push rbp +000B3DDF: mov rbp, rsp +000B3DE2: mov [rbp+var_8], rdi +000B3DE6: mov rax, [rbp+var_8] +000B3DEA: mov rax, [rax+8] +000B3DEE: pop rbp +000B3DEF: retn + +### FUNC 000B3DF0 - 000B3E26 (54 bytes) name=_ZNKSt16initializer_listIKjE3endEv +000B3DF0: push rbp +000B3DF1: mov rbp, rsp +000B3DF4: push rbx +000B3DF5: sub rsp, 18h +000B3DF9: mov [rbp+var_18], rdi +000B3DFD: mov rax, [rbp+var_18] +000B3E01: mov rdi, rax +000B3E04: call __ZNKSt16initializer_listIKjE5beginEv; std::initializer_list::begin(void) +000B3E09: mov rbx, rax +000B3E0C: mov rax, [rbp+var_18] +000B3E10: mov rdi, rax +000B3E13: call __ZNKSt16initializer_listIKjE4sizeEv; std::initializer_list::size(void) +000B3E18: shl rax, 2 +000B3E1C: add rax, rbx +000B3E1F: add rsp, 18h +000B3E23: pop rbx +000B3E24: pop rbp +000B3E25: retn + +### FUNC 000B3E26 - 000B3EA7 (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJNS0_6detail7value_tEEEEvDpOT_ +000B3E26: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(nlohmann::detail::value_t &&)' +000B3E27: mov rbp, rsp +000B3E2A: sub rsp, 10h +000B3E2E: mov [rbp+var_8], rdi +000B3E32: mov [rbp+var_10], rsi +000B3E36: mov rax, [rbp+var_8] +000B3E3A: mov rdx, [rax+8] +000B3E3E: mov rax, [rbp+var_8] +000B3E42: mov rax, [rax+10h] +000B3E46: cmp rdx, rax +000B3E49: jz short loc_B3E87 +000B3E4B: mov rax, [rbp+var_10] +000B3E4F: mov rdi, rax +000B3E52: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B3E57: mov rdx, rax +000B3E5A: mov rax, [rbp+var_8] +000B3E5E: mov rcx, [rax+8] +000B3E62: mov rax, [rbp+var_8] +000B3E66: mov rsi, rcx +000B3E69: mov rdi, rax +000B3E6C: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JNS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_ +000B3E71: mov rax, [rbp+var_8] +000B3E75: mov rax, [rax+8] +000B3E79: lea rdx, [rax+10h] +000B3E7D: mov rax, [rbp+var_8] +000B3E81: mov [rax+8], rdx +000B3E85: jmp short locret_B3EA5 +000B3E87: mov rax, [rbp+var_10] +000B3E8B: mov rdi, rax +000B3E8E: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B3E93: mov rdx, rax +000B3E96: mov rax, [rbp+var_8] +000B3E9A: mov rsi, rdx +000B3E9D: mov rdi, rax +000B3EA0: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJNS0_6detail7value_tEEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(nlohmann::detail::value_t &&) +000B3EA5: leave +000B3EA6: retn + +### FUNC 000B3EA8 - 000B3F29 (129 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12emplace_backIJS7_EEEvDpOT_ +000B3EA8: push rbp; Alternative name is 'void std::vector>> *, std::allocator>> *>>::emplace_back>> *>(nlohmann::basic_json>> * &&)' +000B3EA9: mov rbp, rsp +000B3EAC: sub rsp, 10h +000B3EB0: mov [rbp+var_8], rdi +000B3EB4: mov [rbp+var_10], rsi +000B3EB8: mov rax, [rbp+var_8] +000B3EBC: mov rdx, [rax+8] +000B3EC0: mov rax, [rbp+var_8] +000B3EC4: mov rax, [rax+10h] +000B3EC8: cmp rdx, rax +000B3ECB: jz short loc_B3F09 +000B3ECD: mov rax, [rbp+var_10] +000B3ED1: mov rdi, rax +000B3ED4: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000B3ED9: mov rdx, rax +000B3EDC: mov rax, [rbp+var_8] +000B3EE0: mov rcx, [rax+8] +000B3EE4: mov rax, [rbp+var_8] +000B3EE8: mov rsi, rcx +000B3EEB: mov rdi, rax +000B3EEE: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_ +000B3EF3: mov rax, [rbp+var_8] +000B3EF7: mov rax, [rax+8] +000B3EFB: lea rdx, [rax+8] +000B3EFF: mov rax, [rbp+var_8] +000B3F03: mov [rax+8], rdx +000B3F07: jmp short locret_B3F27 +000B3F09: mov rax, [rbp+var_10] +000B3F0D: mov rdi, rax +000B3F10: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000B3F15: mov rdx, rax +000B3F18: mov rax, [rbp+var_8] +000B3F1C: mov rsi, rdx +000B3F1F: mov rdi, rax +000B3F22: call __ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJS7_EEEvDpOT_; std::vector>> *,std::allocator>> *>>::_M_emplace_back_aux>> *>(nlohmann::basic_json>> * &&) +000B3F27: leave +000B3F28: retn + +### FUNC 000B3F2A - 000B3FAB (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRdEEEvDpOT_ +000B3F2A: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(double &)' +000B3F2B: mov rbp, rsp +000B3F2E: sub rsp, 10h +000B3F32: mov [rbp+var_8], rdi +000B3F36: mov [rbp+var_10], rsi +000B3F3A: mov rax, [rbp+var_8] +000B3F3E: mov rdx, [rax+8] +000B3F42: mov rax, [rbp+var_8] +000B3F46: mov rax, [rax+10h] +000B3F4A: cmp rdx, rax +000B3F4D: jz short loc_B3F8B +000B3F4F: mov rax, [rbp+var_10] +000B3F53: mov rdi, rax +000B3F56: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3F5B: mov rdx, rax +000B3F5E: mov rax, [rbp+var_8] +000B3F62: mov rcx, [rax+8] +000B3F66: mov rax, [rbp+var_8] +000B3F6A: mov rsi, rcx +000B3F6D: mov rdi, rax +000B3F70: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B3F75: mov rax, [rbp+var_8] +000B3F79: mov rax, [rax+8] +000B3F7D: lea rdx, [rax+10h] +000B3F81: mov rax, [rbp+var_8] +000B3F85: mov [rax+8], rdx +000B3F89: jmp short locret_B3FA9 +000B3F8B: mov rax, [rbp+var_10] +000B3F8F: mov rdi, rax +000B3F92: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3F97: mov rdx, rax +000B3F9A: mov rax, [rbp+var_8] +000B3F9E: mov rsi, rdx +000B3FA1: mov rdi, rax +000B3FA4: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRdEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(double &) +000B3FA9: leave +000B3FAA: retn + +### FUNC 000B3FAC - 000B402D (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRbEEEvDpOT_ +000B3FAC: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(bool &)' +000B3FAD: mov rbp, rsp +000B3FB0: sub rsp, 10h +000B3FB4: mov [rbp+var_8], rdi +000B3FB8: mov [rbp+var_10], rsi +000B3FBC: mov rax, [rbp+var_8] +000B3FC0: mov rdx, [rax+8] +000B3FC4: mov rax, [rbp+var_8] +000B3FC8: mov rax, [rax+10h] +000B3FCC: cmp rdx, rax +000B3FCF: jz short loc_B400D +000B3FD1: mov rax, [rbp+var_10] +000B3FD5: mov rdi, rax +000B3FD8: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B3FDD: mov rdx, rax +000B3FE0: mov rax, [rbp+var_8] +000B3FE4: mov rcx, [rax+8] +000B3FE8: mov rax, [rbp+var_8] +000B3FEC: mov rsi, rcx +000B3FEF: mov rdi, rax +000B3FF2: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B3FF7: mov rax, [rbp+var_8] +000B3FFB: mov rax, [rax+8] +000B3FFF: lea rdx, [rax+10h] +000B4003: mov rax, [rbp+var_8] +000B4007: mov [rax+8], rdx +000B400B: jmp short locret_B402B +000B400D: mov rax, [rbp+var_10] +000B4011: mov rdi, rax +000B4014: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B4019: mov rdx, rax +000B401C: mov rax, [rbp+var_8] +000B4020: mov rsi, rdx +000B4023: mov rdi, rax +000B4026: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRbEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(bool &) +000B402B: leave +000B402C: retn + +### FUNC 000B402E - 000B40AF (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJDnEEEvDpOT_ +000B402E: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(decltype(nullptr) &&)' +000B402F: mov rbp, rsp +000B4032: sub rsp, 10h +000B4036: mov [rbp+var_8], rdi +000B403A: mov [rbp+var_10], rsi +000B403E: mov rax, [rbp+var_8] +000B4042: mov rdx, [rax+8] +000B4046: mov rax, [rbp+var_8] +000B404A: mov rax, [rax+10h] +000B404E: cmp rdx, rax +000B4051: jz short loc_B408F +000B4053: mov rax, [rbp+var_10] +000B4057: mov rdi, rax +000B405A: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B405F: mov rdx, rax +000B4062: mov rax, [rbp+var_8] +000B4066: mov rcx, [rax+8] +000B406A: mov rax, [rbp+var_8] +000B406E: mov rsi, rcx +000B4071: mov rdi, rax +000B4074: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000B4079: mov rax, [rbp+var_8] +000B407D: mov rax, [rax+8] +000B4081: lea rdx, [rax+10h] +000B4085: mov rax, [rbp+var_8] +000B4089: mov [rax+8], rdx +000B408D: jmp short locret_B40AD +000B408F: mov rax, [rbp+var_10] +000B4093: mov rdi, rax +000B4096: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B409B: mov rdx, rax +000B409E: mov rax, [rbp+var_8] +000B40A2: mov rsi, rdx +000B40A5: mov rdi, rax +000B40A8: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJDnEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(decltype(nullptr) &&) +000B40AD: leave +000B40AE: retn + +### FUNC 000B40B0 - 000B4131 (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRlEEEvDpOT_ +000B40B0: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(long &)' +000B40B1: mov rbp, rsp +000B40B4: sub rsp, 10h +000B40B8: mov [rbp+var_8], rdi +000B40BC: mov [rbp+var_10], rsi +000B40C0: mov rax, [rbp+var_8] +000B40C4: mov rdx, [rax+8] +000B40C8: mov rax, [rbp+var_8] +000B40CC: mov rax, [rax+10h] +000B40D0: cmp rdx, rax +000B40D3: jz short loc_B4111 +000B40D5: mov rax, [rbp+var_10] +000B40D9: mov rdi, rax +000B40DC: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B40E1: mov rdx, rax +000B40E4: mov rax, [rbp+var_8] +000B40E8: mov rcx, [rax+8] +000B40EC: mov rax, [rbp+var_8] +000B40F0: mov rsi, rcx +000B40F3: mov rdi, rax +000B40F6: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B40FB: mov rax, [rbp+var_8] +000B40FF: mov rax, [rax+8] +000B4103: lea rdx, [rax+10h] +000B4107: mov rax, [rbp+var_8] +000B410B: mov [rax+8], rdx +000B410F: jmp short locret_B412F +000B4111: mov rax, [rbp+var_10] +000B4115: mov rdi, rax +000B4118: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B411D: mov rdx, rax +000B4120: mov rax, [rbp+var_8] +000B4124: mov rsi, rdx +000B4127: mov rdi, rax +000B412A: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRlEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(long &) +000B412F: leave +000B4130: retn + +### FUNC 000B4132 - 000B41B3 (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRSsEEEvDpOT_ +000B4132: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(std::string &)' +000B4133: mov rbp, rsp +000B4136: sub rsp, 10h +000B413A: mov [rbp+var_8], rdi +000B413E: mov [rbp+var_10], rsi +000B4142: mov rax, [rbp+var_8] +000B4146: mov rdx, [rax+8] +000B414A: mov rax, [rbp+var_8] +000B414E: mov rax, [rax+10h] +000B4152: cmp rdx, rax +000B4155: jz short loc_B4193 +000B4157: mov rax, [rbp+var_10] +000B415B: mov rdi, rax +000B415E: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B4163: mov rdx, rax +000B4166: mov rax, [rbp+var_8] +000B416A: mov rcx, [rax+8] +000B416E: mov rax, [rbp+var_8] +000B4172: mov rsi, rcx +000B4175: mov rdi, rax +000B4178: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B417D: mov rax, [rbp+var_8] +000B4181: mov rax, [rax+8] +000B4185: lea rdx, [rax+10h] +000B4189: mov rax, [rbp+var_8] +000B418D: mov [rax+8], rdx +000B4191: jmp short locret_B41B1 +000B4193: mov rax, [rbp+var_10] +000B4197: mov rdi, rax +000B419A: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B419F: mov rdx, rax +000B41A2: mov rax, [rbp+var_8] +000B41A6: mov rsi, rdx +000B41A9: mov rdi, rax +000B41AC: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRSsEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(std::string &) +000B41B1: leave +000B41B2: retn + +### FUNC 000B41B4 - 000B4235 (129 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12emplace_backIJRmEEEvDpOT_ +000B41B4: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::emplace_back(unsigned long &)' +000B41B5: mov rbp, rsp +000B41B8: sub rsp, 10h +000B41BC: mov [rbp+var_8], rdi +000B41C0: mov [rbp+var_10], rsi +000B41C4: mov rax, [rbp+var_8] +000B41C8: mov rdx, [rax+8] +000B41CC: mov rax, [rbp+var_8] +000B41D0: mov rax, [rax+10h] +000B41D4: cmp rdx, rax +000B41D7: jz short loc_B4215 +000B41D9: mov rax, [rbp+var_10] +000B41DD: mov rdi, rax +000B41E0: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B41E5: mov rdx, rax +000B41E8: mov rax, [rbp+var_8] +000B41EC: mov rcx, [rax+8] +000B41F0: mov rax, [rbp+var_8] +000B41F4: mov rsi, rcx +000B41F7: mov rdi, rax +000B41FA: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B41FF: mov rax, [rbp+var_8] +000B4203: mov rax, [rax+8] +000B4207: lea rdx, [rax+10h] +000B420B: mov rax, [rbp+var_8] +000B420F: mov [rax+8], rdx +000B4213: jmp short locret_B4233 +000B4215: mov rax, [rbp+var_10] +000B4219: mov rdi, rax +000B421C: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B4221: mov rdx, rax +000B4224: mov rax, [rbp+var_8] +000B4228: mov rsi, rdx +000B422B: mov rdi, rax +000B422E: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRmEEEvDpOT_; std::vector>>,std::allocator>>>>::_M_emplace_back_aux(ulong &) +000B4233: leave +000B4234: retn + +### FUNC 000B4236 - 000B42AA (116 bytes) name=_ZN9__gnu_cxx13new_allocatorISsE9constructISsJRKSsEEEvPT_DpOT0_ +000B4236: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISsE9constructISsIRKSsEEEvPT_DpOT0_' +000B4237: mov rbp, rsp +000B423A: push r13 +000B423C: push r12 +000B423E: push rbx +000B423F: sub rsp, 28h +000B4243: mov [rbp+var_28], rdi +000B4247: mov [rbp+var_30], rsi +000B424B: mov [rbp+var_38], rdx +000B424F: mov rax, [rbp+var_38] +000B4253: mov rdi, rax +000B4256: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000B425B: mov r13, rax +000B425E: mov r12, [rbp+var_30] +000B4262: mov rsi, r12; void * +000B4265: mov edi, 8; unsigned __int64 +000B426A: call __ZnwmPv; operator new(ulong,void *) +000B426F: mov rbx, rax +000B4272: test rbx, rbx +000B4275: jz short loc_B4284 +000B4277: mov rsi, r13; std::string * +000B427A: mov rdi, rbx; this +000B427D: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000B4282: jmp short loc_B429F +000B4284: jmp short loc_B429F +000B4286: mov r13, rax +000B4289: mov rsi, r12; void * +000B428C: mov rdi, rbx; void * +000B428F: call __ZdlPvS_; operator delete(void *,void *) +000B4294: mov rax, r13 +000B4297: mov rdi, rax; struct _Unwind_Exception * +000B429A: call __Unwind_Resume +000B429F: add rsp, 28h +000B42A3: pop rbx +000B42A4: pop r12 +000B42A6: pop r13 +000B42A8: pop rbp +000B42A9: retn + +### FUNC 000B42AA - 000B42B8 (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2ERKS1_ +000B42AA: push rbp; Alternative name is 'std::__detail::_Hashtable_ebo_helper<0, std::__detail::_Select1st, true>::_Hashtable_ebo_helper(std::__detail::_Select1st const&)' +000B42AB: mov rbp, rsp +000B42AE: mov [rbp+var_8], rdi +000B42B2: mov [rbp+var_10], rsi +000B42B6: pop rbp +000B42B7: retn + +### FUNC 000B42B8 - 000B42C6 (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashISsELb1EEC2ERKS2_ +000B42B8: push rbp; Alternative name is 'std::__detail::_Hashtable_ebo_helper<1, std::hash, true>::_Hashtable_ebo_helper(std::hash const&)' +000B42B9: mov rbp, rsp +000B42BC: mov [rbp+var_8], rdi +000B42C0: mov [rbp+var_10], rsi +000B42C4: pop rbp +000B42C5: retn + +### FUNC 000B42C6 - 000B42D4 (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2ERKS1_ +000B42C6: push rbp; Alternative name is 'std::__detail::_Hashtable_ebo_helper<2, std::__detail::_Mod_range_hashing, true>::_Hashtable_ebo_helper(std::__detail::_Mod_range_hashing const&)' +000B42C7: mov rbp, rsp +000B42CA: mov [rbp+var_8], rdi +000B42CE: mov [rbp+var_10], rsi +000B42D2: pop rbp +000B42D3: retn + +### FUNC 000B42D4 - 000B42DE (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKSsiELb1EEEEC2Ev +000B42D4: push rbp; Alternative name is '__gnu_cxx::new_allocator, true>>::new_allocator(void)' +000B42D5: mov rbp, rsp +000B42D8: mov [rbp+var_8], rdi +000B42DC: pop rbp +000B42DD: retn + +### FUNC 000B42DE - 000B42F2 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8max_sizeEv +000B42DE: push rbp +000B42DF: mov rbp, rsp +000B42E2: mov [rbp+var_8], rdi +000B42E6: mov rax, 1FFFFFFFFFFFFFFFh +000B42F0: pop rbp +000B42F1: retn + +### FUNC 000B42F2 - 000B4327 (53 bytes) name=_ZSt6fill_nIP19struct_TerminalListmS0_ET_S2_T0_RKT1_ +000B42F2: push rbp +000B42F3: mov rbp, rsp +000B42F6: sub rsp, 20h +000B42FA: mov [rbp+var_8], rdi +000B42FE: mov [rbp+var_10], rsi +000B4302: mov [rbp+var_18], rdx +000B4306: mov rax, [rbp+var_8] +000B430A: mov rdi, rax +000B430D: call __ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(struct_TerminalList *) +000B4312: mov rdx, [rbp+var_18] +000B4316: mov rcx, [rbp+var_10] +000B431A: mov rsi, rcx +000B431D: mov rdi, rax +000B4320: call __ZSt10__fill_n_aIP19struct_TerminalListmS0_EN9__gnu_cxx11__enable_ifIXntsrSt11__is_scalarIT1_E7__valueET_E6__typeES7_T0_RKS5_; std::__fill_n_a(struct_TerminalList *,ulong,struct_TerminalList const&) +000B4325: leave +000B4326: retn + +### FUNC 000B4327 - 000B4341 (26 bytes) name=_ZNSt16allocator_traitsISaI19struct_TerminalListEE11_S_max_sizeIKS1_EENSt9enable_ifIXsrNS2_16__maxsize_helperIT_EE5valueEmE4typeERS7_ +000B4327: push rbp +000B4328: mov rbp, rsp +000B432B: sub rsp, 10h +000B432F: mov [rbp+var_8], rdi +000B4333: mov rax, [rbp+var_8] +000B4337: mov rdi, rax +000B433A: call __ZNK9__gnu_cxx13new_allocatorI19struct_TerminalListE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000B433F: leave +000B4340: retn + +### FUNC 000B4341 - 000B436E (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIP19struct_TerminalListES4_EET0_T_S7_S6_ +000B4341: push rbp +000B4342: mov rbp, rsp +000B4345: sub rsp, 20h +000B4349: mov [rbp+var_10], rdi +000B434D: mov [rbp+var_20], rsi +000B4351: mov [rbp+var_18], rdx +000B4355: mov rdx, [rbp+var_18] +000B4359: mov rcx, [rbp+var_20] +000B435D: mov rax, [rbp+var_10] +000B4361: mov rsi, rcx +000B4364: mov rdi, rax +000B4367: call __ZSt4copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_; std::copy,struct_TerminalList *>(std::move_iterator,std::move_iterator,struct_TerminalList *) +000B436C: leave +000B436D: retn + +### FUNC 000B436E - 000B4454 (230 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv +000B436E: push rbp +000B436F: mov rbp, rsp +000B4372: push rbx +000B4373: sub rsp, 28h +000B4377: mov [rbp+var_28], rdi +000B437B: mov rax, [rbp+var_28] +000B437F: mov rax, [rax+28h] +000B4383: lea rdx, [rax+1] +000B4387: mov rax, [rbp+var_28] +000B438B: mov [rax+28h], rdx +000B438F: mov rax, [rbp+var_28] +000B4393: mov rax, [rax+30h] +000B4397: lea rdx, [rax+1] +000B439B: mov rax, [rbp+var_28] +000B439F: mov [rax+30h], rdx +000B43A3: mov rax, [rbp+var_28] +000B43A7: movzx eax, byte ptr [rax+20h] +000B43AB: test al, al +000B43AD: jz short loc_B43B9 +000B43AF: mov rax, [rbp+var_28] +000B43B3: mov byte ptr [rax+20h], 0 +000B43B7: jmp short loc_B43CD +000B43B9: mov rax, [rbp+var_28] +000B43BD: mov rdi, rax +000B43C0: call __ZN8nlohmann6detail22iterator_input_adapterIPhE13get_characterEv; nlohmann::detail::iterator_input_adapter::get_character(void) +000B43C5: mov rdx, [rbp+var_28] +000B43C9: mov [rdx+18h], rax +000B43CD: mov rax, [rbp+var_28] +000B43D1: mov rbx, [rax+18h] +000B43D5: call __ZN9__gnu_cxx11char_traitsIhE3eofEv; __gnu_cxx::char_traits::eof(void) +000B43DA: cmp rbx, rax +000B43DD: setnz al +000B43E0: movzx eax, al +000B43E3: test rax, rax +000B43E6: setnz al +000B43E9: test al, al +000B43EB: jz short loc_B4417 +000B43ED: mov rax, [rbp+var_28] +000B43F1: add rax, 18h +000B43F5: mov rdi, rax +000B43F8: call __ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm; __gnu_cxx::char_traits::to_char_type(ulong const&) +000B43FD: mov [rbp+var_11], al +000B4400: mov rax, [rbp+var_28] +000B4404: lea rdx, [rax+40h] +000B4408: lea rax, [rbp+var_11] +000B440C: mov rsi, rax +000B440F: mov rdi, rdx +000B4412: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000B4417: mov rax, [rbp+var_28] +000B441B: mov rax, [rax+18h] +000B441F: cmp rax, 0Ah +000B4423: jnz short loc_B4445 +000B4425: mov rax, [rbp+var_28] +000B4429: mov rax, [rax+38h] +000B442D: lea rdx, [rax+1] +000B4431: mov rax, [rbp+var_28] +000B4435: mov [rax+38h], rdx +000B4439: mov rax, [rbp+var_28] +000B443D: mov qword ptr [rax+30h], 0 +000B4445: mov rax, [rbp+var_28] +000B4449: mov rax, [rax+18h] +000B444D: add rsp, 28h +000B4451: pop rbx +000B4452: pop rbp +000B4453: retn + +### FUNC 000B4454 - 000B452B (215 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEv +000B4454: push rbp +000B4455: mov rbp, rsp +000B4458: push rbx +000B4459: sub rsp, 18h +000B445D: mov [rbp+var_18], rdi +000B4461: mov rax, [rbp+var_18] +000B4465: mov byte ptr [rax+20h], 1 +000B4469: mov rax, [rbp+var_18] +000B446D: mov rax, [rax+28h] +000B4471: lea rdx, [rax-1] +000B4475: mov rax, [rbp+var_18] +000B4479: mov [rax+28h], rdx +000B447D: mov rax, [rbp+var_18] +000B4481: mov rax, [rax+30h] +000B4485: test rax, rax +000B4488: jnz short loc_B44AD +000B448A: mov rax, [rbp+var_18] +000B448E: mov rax, [rax+38h] +000B4492: test rax, rax +000B4495: jz short loc_B44C1 +000B4497: mov rax, [rbp+var_18] +000B449B: mov rax, [rax+38h] +000B449F: lea rdx, [rax-1] +000B44A3: mov rax, [rbp+var_18] +000B44A7: mov [rax+38h], rdx +000B44AB: jmp short loc_B44C1 +000B44AD: mov rax, [rbp+var_18] +000B44B1: mov rax, [rax+30h] +000B44B5: lea rdx, [rax-1] +000B44B9: mov rax, [rbp+var_18] +000B44BD: mov [rax+30h], rdx +000B44C1: mov rax, [rbp+var_18] +000B44C5: mov rbx, [rax+18h] +000B44C9: call __ZN9__gnu_cxx11char_traitsIhE3eofEv; __gnu_cxx::char_traits::eof(void) +000B44CE: cmp rbx, rax +000B44D1: setnz al +000B44D4: movzx eax, al +000B44D7: test rax, rax +000B44DA: setnz al +000B44DD: test al, al +000B44DF: jz short loc_B4524 +000B44E1: mov rax, [rbp+var_18] +000B44E5: add rax, 40h ; '@' +000B44E9: mov rdi, rax +000B44EC: call __ZNKSt6vectorIhSaIhEE5emptyEv; std::vector>::empty(void) +000B44F1: test al, al +000B44F3: jz short loc_B4514 +000B44F5: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5ungetEvE19__PRETTY_FUNCTION__; "void nlohmann::detail::lexer>::pop_back(void) +000B4524: add rsp, 18h +000B4528: pop rbx +000B4529: pop rbp +000B452A: retn + +### FUNC 000B452B - 000B4539 (14 bytes) name=_ZSt11__addressofIhEPT_RS0_ +000B452B: push rbp +000B452C: mov rbp, rsp +000B452F: mov [rbp+var_8], rdi +000B4533: mov rax, [rbp+var_8] +000B4537: pop rbp +000B4538: retn + +### FUNC 000B453A - 000B4592 (88 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE5resetEv +000B453A: push rbp +000B453B: mov rbp, rsp +000B453E: sub rsp, 20h +000B4542: mov [rbp+var_18], rdi +000B4546: mov rax, [rbp+var_18] +000B454A: add rax, 58h ; 'X' +000B454E: mov rdi, rax; this +000B4551: call __ZNSs5clearEv; std::string::clear(void) +000B4556: mov rax, [rbp+var_18] +000B455A: add rax, 40h ; '@' +000B455E: mov rdi, rax +000B4561: call __ZNSt6vectorIhSaIhEE5clearEv; std::vector>::clear(void) +000B4566: mov rax, [rbp+var_18] +000B456A: add rax, 18h +000B456E: mov rdi, rax +000B4571: call __ZN9__gnu_cxx11char_traitsIhE12to_char_typeERKm; __gnu_cxx::char_traits::to_char_type(ulong const&) +000B4576: mov [rbp+var_1], al +000B4579: mov rax, [rbp+var_18] +000B457D: lea rdx, [rax+40h] +000B4581: lea rax, [rbp+var_1] +000B4585: mov rsi, rax +000B4588: mov rdi, rdx +000B458B: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000B4590: leave +000B4591: retn + +### FUNC 000B4592 - 000B45BD (43 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm +000B4592: push rbp +000B4593: mov rbp, rsp +000B4596: sub rsp, 10h +000B459A: mov [rbp+var_8], rdi +000B459E: mov [rbp+var_10], rsi +000B45A2: mov rax, [rbp+var_10] +000B45A6: movsx eax, al +000B45A9: mov rdx, [rbp+var_8] +000B45AD: add rdx, 58h ; 'X' +000B45B1: mov esi, eax; char +000B45B3: mov rdi, rdx; this +000B45B6: call __ZNSs9push_backEc; std::string::push_back(char) +000B45BB: leave +000B45BC: retn + +### FUNC 000B45BE - 000B473F (385 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEv +000B45BE: push rbp +000B45BF: mov rbp, rsp +000B45C2: sub rsp, 50h +000B45C6: mov [rbp+var_48], rdi +000B45CA: mov rax, [rbp+var_48] +000B45CE: mov rax, [rax+18h] +000B45D2: cmp rax, 75h ; 'u' +000B45D6: jz short loc_B45F7 +000B45D8: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEvE19__PRETTY_FUNCTION__; "int nlohmann::detail::lexer::begin(void) +000B4625: mov [rbp+var_10], rax +000B4629: mov rax, [rbp+var_18] +000B462D: mov rdi, rax +000B4630: call __ZNKSt16initializer_listIKjE3endEv; std::initializer_list::end(void) +000B4635: mov [rbp+var_20], rax +000B4639: jmp loc_B46FE +000B463E: mov rax, [rbp+var_10] +000B4642: mov eax, [rax] +000B4644: mov [rbp+var_24], eax +000B4647: mov rax, [rbp+var_48] +000B464B: mov rdi, rax +000B464E: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B4653: mov rax, [rbp+var_48] +000B4657: mov rax, [rax+18h] +000B465B: cmp rax, 2Fh ; '/' +000B465F: jbe short loc_B4688 +000B4661: mov rax, [rbp+var_48] +000B4665: mov rax, [rax+18h] +000B4669: cmp rax, 39h ; '9' +000B466D: ja short loc_B4688 +000B466F: mov rax, [rbp+var_48] +000B4673: mov rax, [rax+18h] +000B4677: lea edx, [rax-30h] +000B467A: mov eax, [rbp+var_24] +000B467D: mov ecx, eax +000B467F: shl edx, cl +000B4681: mov eax, edx +000B4683: add [rbp+var_4], eax +000B4686: jmp short loc_B46F9 +000B4688: mov rax, [rbp+var_48] +000B468C: mov rax, [rax+18h] +000B4690: cmp rax, 40h ; '@' +000B4694: jbe short loc_B46BD +000B4696: mov rax, [rbp+var_48] +000B469A: mov rax, [rax+18h] +000B469E: cmp rax, 46h ; 'F' +000B46A2: ja short loc_B46BD +000B46A4: mov rax, [rbp+var_48] +000B46A8: mov rax, [rax+18h] +000B46AC: lea edx, [rax-37h] +000B46AF: mov eax, [rbp+var_24] +000B46B2: mov ecx, eax +000B46B4: shl edx, cl +000B46B6: mov eax, edx +000B46B8: add [rbp+var_4], eax +000B46BB: jmp short loc_B46F9 +000B46BD: mov rax, [rbp+var_48] +000B46C1: mov rax, [rax+18h] +000B46C5: cmp rax, 60h ; '`' +000B46C9: jbe short loc_B46F2 +000B46CB: mov rax, [rbp+var_48] +000B46CF: mov rax, [rax+18h] +000B46D3: cmp rax, 66h ; 'f' +000B46D7: ja short loc_B46F2 +000B46D9: mov rax, [rbp+var_48] +000B46DD: mov rax, [rax+18h] +000B46E1: lea edx, [rax-57h] +000B46E4: mov eax, [rbp+var_24] +000B46E7: mov ecx, eax +000B46E9: shl edx, cl +000B46EB: mov eax, edx +000B46ED: add [rbp+var_4], eax +000B46F0: jmp short loc_B46F9 +000B46F2: mov eax, 0FFFFFFFFh +000B46F7: jmp short locret_B473D +000B46F9: add [rbp+var_10], 4 +000B46FE: mov rax, [rbp+var_10] +000B4702: cmp rax, [rbp+var_20] +000B4706: jnz loc_B463E +000B470C: cmp [rbp+var_4], 0 +000B4710: js short loc_B471B +000B4712: cmp [rbp+var_4], 0FFFFh +000B4719: jle short loc_B473A +000B471B: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE13get_codepointEvE19__PRETTY_FUNCTION__; "int nlohmann::detail::lexer::begin(void) +000B477D: mov rbx, rax +000B4780: mov rax, [rbp+var_18] +000B4784: mov rdi, rax +000B4787: call __ZNKSt16initializer_listImE4sizeEv; std::initializer_list::size(void) +000B478C: shl rax, 3 +000B4790: add rax, rbx +000B4793: add rsp, 18h +000B4797: pop rbx +000B4798: pop rbp +000B4799: retn + +### FUNC 000B479A - 000B48E0 (326 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImE +000B479A: push rbp +000B479B: mov rbp, rsp +000B479E: sub rsp, 30h +000B47A2: mov [rbp+var_18], rdi +000B47A6: mov rax, rsi +000B47A9: mov rcx, rdx +000B47AC: mov rdx, rcx +000B47AF: mov [rbp+var_30], rax +000B47B3: mov [rbp+var_28], rdx +000B47B7: lea rax, [rbp+var_30] +000B47BB: mov rdi, rax +000B47BE: call __ZNKSt16initializer_listImE4sizeEv; std::initializer_list::size(void) +000B47C3: cmp rax, 2 +000B47C7: jz short loc_B480C +000B47C9: lea rax, [rbp+var_30] +000B47CD: mov rdi, rax +000B47D0: call __ZNKSt16initializer_listImE4sizeEv; std::initializer_list::size(void) +000B47D5: cmp rax, 4 +000B47D9: jz short loc_B480C +000B47DB: lea rax, [rbp+var_30] +000B47DF: mov rdi, rax +000B47E2: call __ZNKSt16initializer_listImE4sizeEv; std::initializer_list::size(void) +000B47E7: cmp rax, 6 +000B47EB: jz short loc_B480C +000B47ED: lea rcx, _ZZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE18next_byte_in_rangeESt16initializer_listImEE19__PRETTY_FUNCTION__; "bool nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B4823: lea rax, [rbp+var_30] +000B4827: mov rdi, rax +000B482A: call __ZNKSt16initializer_listImE5beginEv; std::initializer_list::begin(void) +000B482F: mov [rbp+var_8], rax +000B4833: jmp loc_B48BE +000B4838: mov rax, [rbp+var_18] +000B483C: mov rdi, rax +000B483F: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3getEv; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::get(void) +000B4844: mov rax, [rbp+var_8] +000B4848: mov rdx, [rax] +000B484B: mov rax, [rbp+var_18] +000B484F: mov rax, [rax+18h] +000B4853: cmp rdx, rax +000B4856: ja short loc_B4878 +000B4858: mov rax, [rbp+var_18] +000B485C: mov rdx, [rax+18h] +000B4860: add [rbp+var_8], 8 +000B4865: mov rax, [rbp+var_8] +000B4869: mov rax, [rax] +000B486C: cmp rdx, rax +000B486F: ja short loc_B4878 +000B4871: mov eax, 1 +000B4876: jmp short loc_B487D +000B4878: mov eax, 0 +000B487D: movzx eax, al +000B4880: test rax, rax +000B4883: setnz al +000B4886: test al, al +000B4888: jz short loc_B48A8 +000B488A: mov rax, [rbp+var_18] +000B488E: mov rdx, [rax+18h] +000B4892: mov rax, [rbp+var_18] +000B4896: mov rsi, rdx +000B4899: mov rdi, rax +000B489C: call __ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE3addEm; nlohmann::detail::lexer>>,nlohmann::detail::iterator_input_adapter>::add(ulong) +000B48A1: add [rbp+var_8], 8 +000B48A6: jmp short loc_B48BE +000B48A8: mov rax, [rbp+var_18] +000B48AC: lea rdx, aInvalidStringI; "invalid string: ill-formed UTF-8 byte" +000B48B3: mov [rax+60h], rdx +000B48B7: mov eax, 0 +000B48BC: jmp short locret_B48DE +000B48BE: lea rax, [rbp+var_30] +000B48C2: mov rdi, rax +000B48C5: call __ZNKSt16initializer_listImE3endEv; std::initializer_list::end(void) +000B48CA: cmp rax, [rbp+var_8] +000B48CE: setnz al +000B48D1: test al, al +000B48D3: jnz loc_B4838 +000B48D9: mov eax, 1 +000B48DE: leave +000B48DF: retn + +### FUNC 000B48E0 - 000B4919 (57 bytes) name=_ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPhEEE6strtofERdPKcPPc +000B48E0: push rbp +000B48E1: mov rbp, rsp +000B48E4: sub rsp, 20h +000B48E8: mov [rbp+var_8], rdi +000B48EC: mov [rbp+nptr], rsi +000B48F0: mov [rbp+endptr], rdx +000B48F4: mov rdx, [rbp+endptr] +000B48F8: mov rax, [rbp+nptr] +000B48FC: mov rsi, rdx; endptr +000B48FF: mov rdi, rax; nptr +000B4902: call _strtod +000B4907: movsd [rbp+var_20], xmm0 +000B490C: mov rax, [rbp+var_20] +000B4910: mov rdx, [rbp+var_8] +000B4914: mov [rdx], rax +000B4917: leave +000B4918: retn + +### FUNC 000B491A - 000B492E (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE8max_sizeEv +000B491A: push rbp +000B491B: mov rbp, rsp +000B491E: mov [rbp+var_8], rdi +000B4922: mov rax, 555555555555555h +000B492C: pop rbp +000B492D: retn + +### FUNC 000B492E - 000B498C (94 bytes) name=_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JEEEvPT_DpOT0_ +000B492E: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_IEEEvPT_DpOT0_' +000B492F: mov rbp, rsp +000B4932: push r13 +000B4934: push r12 +000B4936: push rbx +000B4937: sub rsp, 18h +000B493B: mov [rbp+var_28], rdi +000B493F: mov [rbp+var_30], rsi +000B4943: mov r12, [rbp+var_30] +000B4947: mov rsi, r12; void * +000B494A: mov edi, 30h ; '0'; unsigned __int64 +000B494F: call __ZnwmPv; operator new(ulong,void *) +000B4954: mov rbx, rax +000B4957: test rbx, rbx +000B495A: jz short loc_B4966 +000B495C: mov rdi, rbx +000B495F: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2Ev; std::map>>,std::less,std::allocator>>>>>::map(void) +000B4964: jmp short loc_B4981 +000B4966: jmp short loc_B4981 +000B4968: mov r13, rax +000B496B: mov rsi, r12; void * +000B496E: mov rdi, rbx; void * +000B4971: call __ZdlPvS_; operator delete(void *,void *) +000B4976: mov rax, r13 +000B4979: mov rdi, rax; struct _Unwind_Exception * +000B497C: call __Unwind_Resume +000B4981: add rsp, 18h +000B4985: pop rbx +000B4986: pop r12 +000B4988: pop r13 +000B498A: pop rbp +000B498B: retn + +### FUNC 000B498C - 000B49A0 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE8max_sizeEv +000B498C: push rbp +000B498D: mov rbp, rsp +000B4990: mov [rbp+var_8], rdi +000B4994: mov rax, 0AAAAAAAAAAAAAAAh +000B499E: pop rbp +000B499F: retn + +### FUNC 000B49A0 - 000B49FE (94 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JEEEvPT_DpOT0_ +000B49A0: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_IEEEvPT_DpOT0_' +000B49A1: mov rbp, rsp +000B49A4: push r13 +000B49A6: push r12 +000B49A8: push rbx +000B49A9: sub rsp, 18h +000B49AD: mov [rbp+var_28], rdi +000B49B1: mov [rbp+var_30], rsi +000B49B5: mov r12, [rbp+var_30] +000B49B9: mov rsi, r12; void * +000B49BC: mov edi, 18h; unsigned __int64 +000B49C1: call __ZnwmPv; operator new(ulong,void *) +000B49C6: mov rbx, rax +000B49C9: test rbx, rbx +000B49CC: jz short loc_B49D8 +000B49CE: mov rdi, rbx +000B49D1: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2Ev; std::vector>>,std::allocator>>>>::vector(void) +000B49D6: jmp short loc_B49F3 +000B49D8: jmp short loc_B49F3 +000B49DA: mov r13, rax +000B49DD: mov rsi, r12; void * +000B49E0: mov rdi, rbx; void * +000B49E3: call __ZdlPvS_; operator delete(void *,void *) +000B49E8: mov rax, r13 +000B49EB: mov rdi, rax; struct _Unwind_Exception * +000B49EE: call __Unwind_Resume +000B49F3: add rsp, 18h +000B49F7: pop rbx +000B49F8: pop r12 +000B49FA: pop r13 +000B49FC: pop rbp +000B49FD: retn + +### FUNC 000B49FE - 000B4A12 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv +000B49FE: push rbp +000B49FF: mov rbp, rsp +000B4A02: mov [rbp+var_8], rdi +000B4A06: mov rax, 1FFFFFFFFFFFFFFFh +000B4A10: pop rbp +000B4A11: retn + +### FUNC 000B4A12 - 000B4AB6 (164 bytes) name=_ZN9__gnu_cxx13new_allocatorISsE9constructISsJRA1_KcEEEvPT_DpOT0_ +000B4A12: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISsE9constructISsIRA1_KcEEEvPT_DpOT0_' +000B4A13: mov rbp, rsp +000B4A16: push r14 +000B4A18: push r13 +000B4A1A: push r12 +000B4A1C: push rbx +000B4A1D: sub rsp, 30h +000B4A21: mov [rbp+var_38], rdi +000B4A25: mov [rbp+var_40], rsi +000B4A29: mov [rbp+var_48], rdx +000B4A2D: mov rax, [rbp+var_48] +000B4A31: mov rdi, rax +000B4A34: call __ZSt7forwardIRA1_KcEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B4A39: mov r13, rax +000B4A3C: lea rax, [rbp+var_21] +000B4A40: mov rdi, rax +000B4A43: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000B4A48: lea r14, [rbp+var_21] +000B4A4C: mov r12, [rbp+var_40] +000B4A50: mov rsi, r12; void * +000B4A53: mov edi, 8; unsigned __int64 +000B4A58: call __ZnwmPv; operator new(ulong,void *) +000B4A5D: mov rbx, rax +000B4A60: test rbx, rbx +000B4A63: jz short loc_B4A73 +000B4A65: mov rdx, r14 +000B4A68: mov rsi, r13 +000B4A6B: mov rdi, rbx +000B4A6E: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000B4A73: lea rax, [rbp+var_21] +000B4A77: mov rdi, rax +000B4A7A: call __ZNSaIcED1Ev; std::allocator::~allocator() +000B4A7F: jmp short loc_B4AA9 +000B4A81: mov r13, rax +000B4A84: mov rsi, r12; void * +000B4A87: mov rdi, rbx; void * +000B4A8A: call __ZdlPvS_; operator delete(void *,void *) +000B4A8F: mov rbx, r13 +000B4A92: lea rax, [rbp+var_21] +000B4A96: mov rdi, rax +000B4A99: call __ZNSaIcED1Ev; std::allocator::~allocator() +000B4A9E: mov rax, rbx +000B4AA1: mov rdi, rax; struct _Unwind_Exception * +000B4AA4: call __Unwind_Resume +000B4AA9: add rsp, 30h +000B4AAD: pop rbx +000B4AAE: pop r12 +000B4AB0: pop r13 +000B4AB2: pop r14 +000B4AB4: pop rbp +000B4AB5: retn + +### FUNC 000B4AB6 - 000B4ACA (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE8max_sizeEv +000B4AB6: push rbp +000B4AB7: mov rbp, rsp +000B4ABA: mov [rbp+var_8], rdi +000B4ABE: mov rax, 7FFFFFFFFFFFFFFh +000B4AC8: pop rbp +000B4AC9: retn + +### FUNC 000B4ACA - 000B4B28 (94 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JEEEvPT_DpOT0_ +000B4ACA: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_IEEEvPT_DpOT0_' +000B4ACB: mov rbp, rsp +000B4ACE: push r13 +000B4AD0: push r12 +000B4AD2: push rbx +000B4AD3: sub rsp, 18h +000B4AD7: mov [rbp+var_28], rdi +000B4ADB: mov [rbp+var_30], rsi +000B4ADF: mov r12, [rbp+var_30] +000B4AE3: mov rsi, r12; void * +000B4AE6: mov edi, 20h ; ' '; unsigned __int64 +000B4AEB: call __ZnwmPv; operator new(ulong,void *) +000B4AF0: mov rbx, rax +000B4AF3: test rbx, rbx +000B4AF6: jz short loc_B4B02 +000B4AF8: mov rdi, rbx +000B4AFB: call __ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2Ev; nlohmann::byte_container_with_subtype>>::byte_container_with_subtype(void) +000B4B00: jmp short loc_B4B1D +000B4B02: jmp short loc_B4B1D +000B4B04: mov r13, rax +000B4B07: mov rsi, r12; void * +000B4B0A: mov rdi, rbx; void * +000B4B0D: call __ZdlPvS_; operator delete(void *,void *) +000B4B12: mov rax, r13 +000B4B15: mov rdi, rax; struct _Unwind_Exception * +000B4B18: call __Unwind_Resume +000B4B1D: add rsp, 18h +000B4B21: pop rbx +000B4B22: pop r12 +000B4B24: pop r13 +000B4B26: pop rbp +000B4B27: retn + +### FUNC 000B4B28 - 000B4B78 (80 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8allocateEmPKv +000B4B28: push rbp +000B4B29: mov rbp, rsp +000B4B2C: sub rsp, 20h +000B4B30: mov [rbp+var_8], rdi +000B4B34: mov [rbp+var_10], rsi +000B4B38: mov [rbp+var_18], rdx +000B4B3C: mov rax, [rbp+var_8] +000B4B40: mov rdi, rax +000B4B43: call __ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8max_sizeEv; __gnu_cxx::new_allocator>>>>>::max_size(void) +000B4B48: cmp rax, [rbp+var_10] +000B4B4C: setb al +000B4B4F: test al, al +000B4B51: jz short loc_B4B58 +000B4B53: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B4B58: mov rax, [rbp+var_10] +000B4B5C: shl rax, 3 +000B4B60: lea rdx, ds:0[rax*8] +000B4B68: sub rdx, rax +000B4B6B: mov rax, rdx +000B4B6E: mov rdi, rax; unsigned __int64 +000B4B71: call __Znwm; operator new(ulong) +000B4B76: leave +000B4B77: retn + +### FUNC 000B4B78 - 000B4BE3 (107 bytes) name=_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +000B4B78: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_IRKSt21piecewise_construct_tSt5tupleIIOSsEESJ_IIEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_' +000B4B79: mov rbp, rsp +000B4B7C: push r12 +000B4B7E: push rbx +000B4B7F: sub rsp, 30h +000B4B83: mov [rbp+var_18], rdi +000B4B87: mov [rbp+var_20], rsi +000B4B8B: mov [rbp+var_28], rdx +000B4B8F: mov [rbp+var_30], rcx +000B4B93: mov [rbp+var_38], r8 +000B4B97: mov rax, [rbp+var_38] +000B4B9B: mov rdi, rax +000B4B9E: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B4BA3: mov r12, rax +000B4BA6: mov rax, [rbp+var_30] +000B4BAA: mov rdi, rax +000B4BAD: call __ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward>(std::remove_reference>::type &) +000B4BB2: mov rbx, rax +000B4BB5: mov rax, [rbp+var_28] +000B4BB9: mov rdi, rax +000B4BBC: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B4BC1: mov rdx, rax +000B4BC4: mov rsi, [rbp+var_20] +000B4BC8: mov rax, [rbp+var_18] +000B4BCC: mov r8, r12 +000B4BCF: mov rcx, rbx +000B4BD2: mov rdi, rax +000B4BD5: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>>>::construct>>>>,std::piecewise_construct_t const&,std::tuple,std::tuple<>>(std::_Rb_tree_node>>>> *) +000B4BDA: add rsp, 30h +000B4BDE: pop rbx +000B4BDF: pop r12 +000B4BE1: pop rbp +000B4BE2: retn + +### FUNC 000B4BE4 - 000B4C06 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE10deallocateEPSD_m +000B4BE4: push rbp +000B4BE5: mov rbp, rsp +000B4BE8: sub rsp, 20h +000B4BEC: mov [rbp+var_8], rdi +000B4BF0: mov [rbp+var_10], rsi +000B4BF4: mov [rbp+var_18], rdx +000B4BF8: mov rax, [rbp+var_10] +000B4BFC: mov rdi, rax; void * +000B4BFF: call __ZdlPv; operator delete(void *) +000B4C04: leave +000B4C05: retn + +### FUNC 000B4C06 - 000B4C18 (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_valueEPKSt18_Rb_tree_node_base +000B4C06: push rbp +000B4C07: mov rbp, rsp +000B4C0A: mov [rbp+var_8], rdi +000B4C0E: mov rax, [rbp+var_8] +000B4C12: add rax, 20h ; ' ' +000B4C16: pop rbp +000B4C17: retn + +### FUNC 000B4C18 - 000B4C8C (116 bytes) name=_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_JRKSF_EEEvPT_DpOT0_ +000B4C18: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt3mapISsN8nlohmann10basic_jsonIS1_St6vectorSsblmdSaNS2_14adl_serializerES4_IhSaIhEEEESt4lessISsESaISt4pairIKSsS8_EEEE9constructISF_IRKSF_EEEvPT_DpOT0_' +000B4C19: mov rbp, rsp +000B4C1C: push r13 +000B4C1E: push r12 +000B4C20: push rbx +000B4C21: sub rsp, 28h +000B4C25: mov [rbp+var_28], rdi +000B4C29: mov [rbp+var_30], rsi +000B4C2D: mov [rbp+var_38], rdx +000B4C31: mov rax, [rbp+var_38] +000B4C35: mov rdi, rax +000B4C38: call __ZSt7forwardIRKSt3mapISsN8nlohmann10basic_jsonIS0_St6vectorSsblmdSaNS1_14adl_serializerES3_IhSaIhEEEESt4lessISsESaISt4pairIKSsS7_EEEEOT_RNSt16remove_referenceISH_E4typeE; std::forward>>,std::less,std::allocator>>>>> const&>(std::remove_reference>>,std::less,std::allocator>>>>> const&>::type &) +000B4C3D: mov r13, rax +000B4C40: mov r12, [rbp+var_30] +000B4C44: mov rsi, r12; void * +000B4C47: mov edi, 30h ; '0'; unsigned __int64 +000B4C4C: call __ZnwmPv; operator new(ulong,void *) +000B4C51: mov rbx, rax +000B4C54: test rbx, rbx +000B4C57: jz short loc_B4C66 +000B4C59: mov rsi, r13 +000B4C5C: mov rdi, rbx +000B4C5F: call __ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2ERKSD_; std::map>>,std::less,std::allocator>>>>>::map(std::map>>,std::less,std::allocator>>>>> const&) +000B4C64: jmp short loc_B4C81 +000B4C66: jmp short loc_B4C81 +000B4C68: mov r13, rax +000B4C6B: mov rsi, r12; void * +000B4C6E: mov rdi, rbx; void * +000B4C71: call __ZdlPvS_; operator delete(void *,void *) +000B4C76: mov rax, r13 +000B4C79: mov rdi, rax; struct _Unwind_Exception * +000B4C7C: call __Unwind_Resume +000B4C81: add rsp, 28h +000B4C85: pop rbx +000B4C86: pop r12 +000B4C88: pop r13 +000B4C8A: pop rbp +000B4C8B: retn + +### FUNC 000B4C8C - 000B4D00 (116 bytes) name=_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_JRKSA_EEEvPT_DpOT0_ +000B4C8C: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt6vectorIN8nlohmann10basic_jsonISt3mapS1_SsblmdSaNS2_14adl_serializerES1_IhSaIhEEEESaIS8_EEE9constructISA_IRKSA_EEEvPT_DpOT0_' +000B4C8D: mov rbp, rsp +000B4C90: push r13 +000B4C92: push r12 +000B4C94: push rbx +000B4C95: sub rsp, 28h +000B4C99: mov [rbp+var_28], rdi +000B4C9D: mov [rbp+var_30], rsi +000B4CA1: mov [rbp+var_38], rdx +000B4CA5: mov rax, [rbp+var_38] +000B4CA9: mov rdi, rax +000B4CAC: call __ZSt7forwardIRKSt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEOT_RNSt16remove_referenceISC_E4typeE; std::forward>>,std::allocator>>>> const&>(std::remove_reference>>,std::allocator>>>> const&>::type &) +000B4CB1: mov r13, rax +000B4CB4: mov r12, [rbp+var_30] +000B4CB8: mov rsi, r12; void * +000B4CBB: mov edi, 18h; unsigned __int64 +000B4CC0: call __ZnwmPv; operator new(ulong,void *) +000B4CC5: mov rbx, rax +000B4CC8: test rbx, rbx +000B4CCB: jz short loc_B4CDA +000B4CCD: mov rsi, r13 +000B4CD0: mov rdi, rbx +000B4CD3: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2ERKS8_; std::vector>>,std::allocator>>>>::vector(std::vector>>,std::allocator>>>> const&) +000B4CD8: jmp short loc_B4CF5 +000B4CDA: jmp short loc_B4CF5 +000B4CDC: mov r13, rax +000B4CDF: mov rsi, r12; void * +000B4CE2: mov rdi, rbx; void * +000B4CE5: call __ZdlPvS_; operator delete(void *,void *) +000B4CEA: mov rax, r13 +000B4CED: mov rdi, rax; struct _Unwind_Exception * +000B4CF0: call __Unwind_Resume +000B4CF5: add rsp, 28h +000B4CF9: pop rbx +000B4CFA: pop r12 +000B4CFC: pop r13 +000B4CFE: pop rbp +000B4CFF: retn + +### FUNC 000B4D00 - 000B4D43 (67 bytes) name=_ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2ERKS4_ +000B4D00: push rbp; Alternative name is 'nlohmann::byte_container_with_subtype>>::byte_container_with_subtype(nlohmann::byte_container_with_subtype>> const&)' +000B4D01: mov rbp, rsp +000B4D04: sub rsp, 10h +000B4D08: mov [rbp+var_8], rdi +000B4D0C: mov [rbp+var_10], rsi +000B4D10: mov rdx, [rbp+var_10] +000B4D14: mov rax, [rbp+var_8] +000B4D18: mov rsi, rdx +000B4D1B: mov rdi, rax +000B4D1E: call __ZNSt6vectorIhSaIhEEC2ERKS1_; std::vector>::vector(std::vector> const&) +000B4D23: mov rax, [rbp+var_10] +000B4D27: movzx edx, byte ptr [rax+18h] +000B4D2B: mov rax, [rbp+var_8] +000B4D2F: mov [rax+18h], dl +000B4D32: mov rax, [rbp+var_10] +000B4D36: movzx edx, byte ptr [rax+19h] +000B4D3A: mov rax, [rbp+var_8] +000B4D3E: mov [rax+19h], dl +000B4D41: leave +000B4D42: retn + +### FUNC 000B4D44 - 000B4DB8 (116 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_JRKS6_EEEvPT_DpOT0_ +000B4D44: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEE9constructIS6_IRKS6_EEEvPT_DpOT0_' +000B4D45: mov rbp, rsp +000B4D48: push r13 +000B4D4A: push r12 +000B4D4C: push rbx +000B4D4D: sub rsp, 28h +000B4D51: mov [rbp+var_28], rdi +000B4D55: mov [rbp+var_30], rsi +000B4D59: mov [rbp+var_38], rdx +000B4D5D: mov rax, [rbp+var_38] +000B4D61: mov rdi, rax +000B4D64: call __ZSt7forwardIRKN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000B4D69: mov r13, rax +000B4D6C: mov r12, [rbp+var_30] +000B4D70: mov rsi, r12; void * +000B4D73: mov edi, 20h ; ' '; unsigned __int64 +000B4D78: call __ZnwmPv; operator new(ulong,void *) +000B4D7D: mov rbx, rax +000B4D80: test rbx, rbx +000B4D83: jz short loc_B4D92 +000B4D85: mov rsi, r13 +000B4D88: mov rdi, rbx +000B4D8B: call __ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2ERKS4_; nlohmann::byte_container_with_subtype>>::byte_container_with_subtype(nlohmann::byte_container_with_subtype>> const&) +000B4D90: jmp short loc_B4DAD +000B4D92: jmp short loc_B4DAD +000B4D94: mov r13, rax +000B4D97: mov rsi, r12; void * +000B4D9A: mov rdi, rbx; void * +000B4D9D: call __ZdlPvS_; operator delete(void *,void *) +000B4DA2: mov rax, r13 +000B4DA5: mov rdi, rax; struct _Unwind_Exception * +000B4DA8: call __Unwind_Resume +000B4DAD: add rsp, 28h +000B4DB1: pop rbx +000B4DB2: pop r12 +000B4DB4: pop r13 +000B4DB6: pop rbp +000B4DB7: retn + +### FUNC 000B4DB8 - 000B4DCE (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE18is_number_unsignedEv +000B4DB8: push rbp +000B4DB9: mov rbp, rsp +000B4DBC: mov [rbp+var_8], rdi +000B4DC0: mov rax, [rbp+var_8] +000B4DC4: movzx eax, byte ptr [rax] +000B4DC7: cmp al, 6 +000B4DC9: setz al +000B4DCC: pop rbp +000B4DCD: retn + +### FUNC 000B4DCE - 000B4DFA (44 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE17is_number_integerEv +000B4DCE: push rbp +000B4DCF: mov rbp, rsp +000B4DD2: mov [rbp+var_8], rdi +000B4DD6: mov rax, [rbp+var_8] +000B4DDA: movzx eax, byte ptr [rax] +000B4DDD: cmp al, 5 +000B4DDF: jz short loc_B4DEC +000B4DE1: mov rax, [rbp+var_8] +000B4DE5: movzx eax, byte ptr [rax] +000B4DE8: cmp al, 6 +000B4DEA: jnz short loc_B4DF3 +000B4DEC: mov eax, 1 +000B4DF1: jmp short loc_B4DF8 +000B4DF3: mov eax, 0 +000B4DF8: pop rbp +000B4DF9: retn + +### FUNC 000B4DFA - 000B4E10 (22 bytes) name=_ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE15is_number_floatEv +000B4DFA: push rbp +000B4DFB: mov rbp, rsp +000B4DFE: mov [rbp+var_8], rdi +000B4E02: mov rax, [rbp+var_8] +000B4E06: movzx eax, byte ptr [rax] +000B4E09: cmp al, 7 +000B4E0B: setz al +000B4E0E: pop rbp +000B4E0F: retn + +### FUNC 000B4E10 - 000B4E1E (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_S_cgetERKS2_ +000B4E10: push rbp +000B4E11: mov rbp, rsp +000B4E14: mov [rbp+var_8], rdi +000B4E18: mov rax, [rbp+var_8] +000B4E1C: pop rbp +000B4E1D: retn + +### FUNC 000B4E1E - 000B4E87 (105 bytes) name=_ZNSt8__detail13_Equal_helperISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsEmLb1EE9_S_equalsERKS6_RKS4_RS2_mPNS_10_Hash_nodeIS3_Lb1EEE +000B4E1E: push rbp +000B4E1F: mov rbp, rsp +000B4E22: sub rsp, 30h +000B4E26: mov [rbp+var_8], rdi +000B4E2A: mov [rbp+var_10], rsi +000B4E2E: mov [rbp+var_18], rdx +000B4E32: mov [rbp+var_20], rcx +000B4E36: mov [rbp+var_28], r8 +000B4E3A: mov rax, [rbp+var_28] +000B4E3E: mov rax, [rax+18h] +000B4E42: cmp rax, [rbp+var_20] +000B4E46: jnz short loc_B4E80 +000B4E48: mov rax, [rbp+var_28] +000B4E4C: lea rdx, [rax+8] +000B4E50: mov rax, [rbp+var_10] +000B4E54: mov rsi, rdx +000B4E57: mov rdi, rax +000B4E5A: call __ZNKSt8__detail10_Select1stclIRSt4pairIKSsiEEEDTcl3getILi0EEcl7forwardIT_Efp_EEEOS6_ +000B4E5F: mov rdx, rax +000B4E62: mov rcx, [rbp+var_18] +000B4E66: mov rax, [rbp+var_8] +000B4E6A: mov rsi, rcx +000B4E6D: mov rdi, rax +000B4E70: call __ZNKSt8equal_toISsEclERKSsS2_; std::equal_to::operator()(std::string const&,std::string const&) +000B4E75: test al, al +000B4E77: jz short loc_B4E80 +000B4E79: mov eax, 1 +000B4E7E: jmp short locret_B4E85 +000B4E80: mov eax, 0 +000B4E85: leave +000B4E86: retn + +### FUNC 000B4E88 - 000B4EA2 (26 bytes) name=_ZNKSt8__detail15_Hashtable_baseISsSt4pairIKSsiENS_10_Select1stESt8equal_toISsESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE5_M_eqEv +000B4E88: push rbp +000B4E89: mov rbp, rsp +000B4E8C: sub rsp, 10h +000B4E90: mov [rbp+var_8], rdi +000B4E94: mov rax, [rbp+var_8] +000B4E98: mov rdi, rax +000B4E9B: call __ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EE7_S_cgetERKS3_; std::__detail::_Hashtable_ebo_helper<0,std::equal_to,true>::_S_cget(std::__detail::_Hashtable_ebo_helper<0,std::equal_to,true> const&) +000B4EA0: leave +000B4EA1: retn + +### FUNC 000B4EA2 - 000B4EBC (26 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE10_M_extractEv +000B4EA2: push rbp +000B4EA3: mov rbp, rsp +000B4EA6: sub rsp, 10h +000B4EAA: mov [rbp+var_8], rdi +000B4EAE: mov rax, [rbp+var_8] +000B4EB2: mov rdi, rax +000B4EB5: call __ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_S_cgetERKS2_; std::__detail::_Hashtable_ebo_helper<0,std::__detail::_Select1st,true>::_S_cget(std::__detail::_Hashtable_ebo_helper<0,std::__detail::_Select1st,true> const&) +000B4EBA: leave +000B4EBB: retn + +### FUNC 000B4EBC - 000B4EFB (63 bytes) name=_ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb1EEEm +000B4EBC: push rbp +000B4EBD: mov rbp, rsp +000B4EC0: push rbx +000B4EC1: sub rsp, 28h +000B4EC5: mov [rbp+var_18], rdi +000B4EC9: mov [rbp+var_20], rsi +000B4ECD: mov [rbp+var_28], rdx +000B4ED1: mov rax, [rbp+var_20] +000B4ED5: mov rbx, [rax+18h] +000B4ED9: mov rax, [rbp+var_18] +000B4EDD: mov rdi, rax +000B4EE0: call __ZNKSt8__detail15_Hash_code_baseISsSt4pairIKSsiENS_10_Select1stESt4hashISsENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE5_M_h2Ev; std::__detail::_Hash_code_base,std::__detail::_Select1st,std::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,true>::_M_h2(void) +000B4EE5: mov rdx, [rbp+var_28] +000B4EE9: mov rsi, rbx +000B4EEC: mov rdi, rax +000B4EEF: call __ZNKSt8__detail18_Mod_range_hashingclEmm; std::__detail::_Mod_range_hashing::operator()(ulong,ulong) +000B4EF4: add rsp, 28h +000B4EF8: pop rbx +000B4EF9: pop rbp +000B4EFA: retn + +### FUNC 000B4EFC - 000B4F2E (50 bytes) name=_ZNSt4pairIKSsiEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EES5_IJDpT0_EE +000B4EFC: push rbp; Alternative name is '_ZNSt4pairIKSsiEC1IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EES5_IJDpT0_EE' +000B4EFD: mov rbp, rsp +000B4F00: sub rsp, 30h +000B4F04: mov [rbp+var_18], rdi +000B4F08: mov [rbp+var_20], rsi +000B4F0C: lea rdx, [rbp+arg_8] +000B4F10: mov rcx, [rbp+var_20] +000B4F14: mov rax, [rbp+var_18] +000B4F18: mov [rsp+30h+var_28], r9b +000B4F1D: mov [rsp+30h+var_30], r8b +000B4F21: mov rsi, rcx +000B4F24: mov rdi, rax +000B4F27: call __ZNSt4pairIKSsiEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERS4_IJDpT1_EESt12_Index_tupleIJXspT0_EEESD_IJXspT2_EEE +000B4F2C: leave +000B4F2D: retn + +### FUNC 000B4F2E - 000B4F48 (26 bytes) name=_ZNSt16allocator_traitsISaIiEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +000B4F2E: push rbp +000B4F2F: mov rbp, rsp +000B4F32: sub rsp, 10h +000B4F36: mov [rbp+var_8], rdi +000B4F3A: mov rax, [rbp+var_8] +000B4F3E: mov rdi, rax +000B4F41: call __ZNK9__gnu_cxx13new_allocatorIiE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000B4F46: leave +000B4F47: retn + +### FUNC 000B4F48 - 000B4F75 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPiES3_EET0_T_S6_S5_ +000B4F48: push rbp +000B4F49: mov rbp, rsp +000B4F4C: sub rsp, 20h +000B4F50: mov [rbp+var_10], rdi +000B4F54: mov [rbp+var_20], rsi +000B4F58: mov [rbp+var_18], rdx +000B4F5C: mov rdx, [rbp+var_18] +000B4F60: mov rcx, [rbp+var_20] +000B4F64: mov rax, [rbp+var_10] +000B4F68: mov rsi, rcx +000B4F6B: mov rdi, rax +000B4F6E: call __ZSt4copyISt13move_iteratorIPiES1_ET0_T_S4_S3_; std::copy,int *>(std::move_iterator,std::move_iterator,int *) +000B4F73: leave +000B4F74: retn + +### FUNC 000B4F75 - 000B4F7F (10 bytes) name=_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +000B4F75: push rbp +000B4F76: mov rbp, rsp +000B4F79: mov [rbp+var_8], rdi +000B4F7D: pop rbp +000B4F7E: retn + +### FUNC 000B4F7F - 000B4F9B (28 bytes) name=_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +000B4F7F: push rbp +000B4F80: mov rbp, rsp +000B4F83: mov [rbp+var_8], rdi +000B4F87: mov [rbp+var_10], rsi +000B4F8B: mov rdx, [rbp+var_10] +000B4F8F: mov rax, [rbp+var_8] +000B4F93: sub rdx, rax +000B4F96: mov rax, rdx +000B4F99: pop rbp +000B4F9A: retn + +### FUNC 000B4F9C - 000B4FA6 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +000B4F9C: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>::new_allocator(void)' +000B4F9D: mov rbp, rsp +000B4FA0: mov [rbp+var_8], rdi +000B4FA4: pop rbp +000B4FA5: retn + +### FUNC 000B4FA6 - 000B4FB4 (14 bytes) name=_ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_ +000B4FA6: push rbp +000B4FA7: mov rbp, rsp +000B4FAA: mov [rbp+var_8], rdi +000B4FAE: mov rax, [rbp+var_8] +000B4FB2: pop rbp +000B4FB3: retn + +### FUNC 000B4FB4 - 000B4FCE (26 bytes) name=_ZSt8_DestroyIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvPT_ +000B4FB4: push rbp +000B4FB5: mov rbp, rsp +000B4FB8: sub rsp, 10h +000B4FBC: mov [rbp+var_8], rdi +000B4FC0: mov rax, [rbp+var_8] +000B4FC4: mov rdi, rax +000B4FC7: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B4FCC: leave +000B4FCD: retn + +### FUNC 000B4FCE - 000B4FE2 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +000B4FCE: push rbp +000B4FCF: mov rbp, rsp +000B4FD2: mov [rbp+var_8], rdi +000B4FD6: mov rax, 0FFFFFFFFFFFFFFFh +000B4FE0: pop rbp +000B4FE1: retn + +### FUNC 000B4FE2 - 000B508F (173 bytes) name=_ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESB_EET0_T_SE_SD_ +000B4FE2: push rbp +000B4FE3: mov rbp, rsp +000B4FE6: push rbx +000B4FE7: sub rsp, 38h +000B4FEB: mov [rbp+var_30], rdi +000B4FEF: mov [rbp+var_40], rsi +000B4FF3: mov [rbp+var_38], rdx +000B4FF7: mov rax, [rbp+var_38] +000B4FFB: mov [rbp+var_18], rax +000B4FFF: jmp short loc_B5038 +000B5001: lea rax, [rbp+var_30] +000B5005: mov rdi, rax +000B5008: call __ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEdeEv; std::move_iterator>> *>::operator*(void) +000B500D: mov rbx, rax +000B5010: mov rax, [rbp+var_18] +000B5014: mov rdi, rax +000B5017: call __ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_; std::__addressof>>>(nlohmann::basic_json>>&) +000B501C: mov rsi, rbx +000B501F: mov rdi, rax +000B5022: call __ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJS7_EEvPT_DpOT0_; std::_Construct>>,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> &&) +000B5027: lea rax, [rbp+var_30] +000B502B: mov rdi, rax +000B502E: call __ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEppEv; std::move_iterator>> *>::operator++(void) +000B5033: add [rbp+var_18], 10h +000B5038: lea rdx, [rbp+var_40] +000B503C: lea rax, [rbp+var_30] +000B5040: mov rsi, rdx +000B5043: mov rdi, rax +000B5046: call __ZStneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_; std::operator!=>> *>(std::move_iterator>> *> const&,std::move_iterator>> *> const&) +000B504B: test al, al +000B504D: jnz short loc_B5001 +000B504F: mov rax, [rbp+var_18] +000B5053: jmp short loc_B5088 +000B5055: mov rdi, rax; void * +000B5058: call ___cxa_begin_catch +000B505D: mov rdx, [rbp+var_18] +000B5061: mov rax, [rbp+var_38] +000B5065: mov rsi, rdx +000B5068: mov rdi, rax +000B506B: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_; std::_Destroy>> *>(nlohmann::basic_json>> *,nlohmann::basic_json>> *) +000B5070: call ___cxa_rethrow +000B5075: mov rbx, rax +000B5078: call ___cxa_end_catch +000B507D: mov rax, rbx +000B5080: mov rdi, rax; struct _Unwind_Exception * +000B5083: call __Unwind_Resume +000B5088: add rsp, 38h +000B508C: pop rbx +000B508D: pop rbp +000B508E: retn + +### FUNC 000B5090 - 000B509E (14 bytes) name=_ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEdeEv +000B5090: push rbp +000B5091: mov rbp, rsp +000B5094: mov [rbp+var_8], rdi +000B5098: mov rax, [rbp+var_8] +000B509C: pop rbp +000B509D: retn + +### FUNC 000B509E - 000B50D5 (55 bytes) name=_ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEaSEOS7_ +000B509E: push rbp +000B509F: mov rbp, rsp +000B50A2: sub rsp, 10h +000B50A6: mov [rbp+var_8], rdi +000B50AA: mov [rbp+var_10], rsi +000B50AE: mov rax, [rbp+var_10] +000B50B2: mov rdi, rax +000B50B5: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000B50BA: mov rdx, rax +000B50BD: mov rax, [rbp+var_8] +000B50C1: mov rax, [rax] +000B50C4: mov rsi, rdx +000B50C7: mov rdi, rax +000B50CA: call __ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE9push_backEOS6_; std::vector>>,std::allocator>>>>::push_back(nlohmann::basic_json>>&&) +000B50CF: mov rax, [rbp+var_8] +000B50D3: leave +000B50D4: retn + +### FUNC 000B50D6 - 000B50E4 (14 bytes) name=_ZNSt20back_insert_iteratorISt6vectorIN8nlohmann10basic_jsonISt3mapS0_SsblmdSaNS1_14adl_serializerES0_IhSaIhEEEESaIS7_EEEppEv +000B50D6: push rbp +000B50D7: mov rbp, rsp +000B50DA: mov [rbp+var_8], rdi +000B50DE: mov rax, [rbp+var_8] +000B50E2: pop rbp +000B50E3: retn + +### FUNC 000B50E4 - 000B5130 (76 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JS8_EEEvPT_DpOT0_ +000B50E4: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IS8_EEEvPT_DpOT0_' +000B50E5: mov rbp, rsp +000B50E8: push rbx +000B50E9: sub rsp, 28h +000B50ED: mov [rbp+var_18], rdi +000B50F1: mov [rbp+var_20], rsi +000B50F5: mov [rbp+var_28], rdx +000B50F9: mov rax, [rbp+var_28] +000B50FD: mov rdi, rax +000B5100: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000B5105: mov rbx, rax +000B5108: mov rax, [rbp+var_20] +000B510C: mov rsi, rax; void * +000B510F: mov edi, 10h; unsigned __int64 +000B5114: call __ZnwmPv; operator new(ulong,void *) +000B5119: test rax, rax +000B511C: jz short loc_B5129 +000B511E: mov rsi, rbx +000B5121: mov rdi, rax +000B5124: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000B5129: add rsp, 28h +000B512D: pop rbx +000B512E: pop rbp +000B512F: retn + +### FUNC 000B5130 - 000B514A (26 bytes) name=_ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev +000B5130: push rbp; Alternative name is 'std::allocator>>>>>::~allocator()' +000B5131: mov rbp, rsp +000B5134: sub rsp, 10h +000B5138: mov [rbp+var_8], rdi +000B513C: mov rax, [rbp+var_8] +000B5140: mov rdi, rax +000B5143: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEED2Ev; __gnu_cxx::new_allocator>>>>>::~new_allocator() +000B5148: leave +000B5149: retn + +### FUNC 000B514A - 000B5164 (26 bytes) name=_ZNSaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2Ev +000B514A: push rbp; Alternative name is 'std::allocator>> *>::allocator(void)' +000B514B: mov rbp, rsp +000B514E: sub rsp, 10h +000B5152: mov [rbp+var_8], rdi +000B5156: mov rax, [rbp+var_8] +000B515A: mov rdi, rax +000B515D: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev; __gnu_cxx::new_allocator>> *>::new_allocator(void) +000B5162: leave +000B5163: retn + +### FUNC 000B5164 - 000B517E (26 bytes) name=_ZNSaImEC2Ev +000B5164: push rbp; Alternative name is 'std::allocator::allocator(void)' +000B5165: mov rbp, rsp +000B5168: sub rsp, 10h +000B516C: mov [rbp+var_8], rdi +000B5170: mov rax, [rbp+var_8] +000B5174: mov rdi, rax +000B5177: call __ZN9__gnu_cxx13new_allocatorImEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000B517C: leave +000B517D: retn + +### FUNC 000B517E - 000B51BF (65 bytes) name=_ZSt12__miter_baseISt13_Bit_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +000B517E: push rbp +000B517F: mov rbp, rsp +000B5182: sub rsp, 30h +000B5186: mov rdx, rdi +000B5189: mov rax, rsi +000B518C: mov [rbp+var_20], rdx +000B5190: mov [rbp+var_18], rax +000B5194: mov rdx, [rbp+var_20] +000B5198: mov rax, [rbp+var_18] +000B519C: mov rdi, rdx +000B519F: mov rsi, rax +000B51A2: call __ZNSt10_Iter_baseISt13_Bit_iteratorLb0EE7_S_baseES0_; std::_Iter_base::_S_base(std::_Bit_iterator) +000B51A7: mov rcx, rax +000B51AA: mov rax, rdx +000B51AD: mov [rbp+var_10], rcx +000B51B1: mov [rbp+var_8], rax +000B51B5: mov rax, [rbp+var_10] +000B51B9: mov rdx, [rbp+var_8] +000B51BD: leave +000B51BE: retn + +### FUNC 000B51BF - 000B5286 (199 bytes) name=_ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B51BF: push rbp +000B51C0: mov rbp, rsp +000B51C3: add rsp, 0FFFFFFFFFFFFFF80h +000B51C7: mov rax, rcx +000B51CA: mov rcx, r9 +000B51CD: mov [rbp+var_50], rdi +000B51D1: mov [rbp+var_48], rsi +000B51D5: mov [rbp+var_60], rdx +000B51D9: mov [rbp+var_58], rax +000B51DD: mov [rbp+var_70], r8 +000B51E1: mov [rbp+var_68], rcx +000B51E5: mov rdx, [rbp+var_70] +000B51E9: mov rax, [rbp+var_68] +000B51ED: mov rdi, rdx +000B51F0: mov rsi, rax +000B51F3: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B51F8: mov rcx, rax +000B51FB: mov rax, rdx +000B51FE: mov [rbp+var_30], rcx +000B5202: mov [rbp+var_28], rax +000B5206: mov rdx, [rbp+var_60] +000B520A: mov rax, [rbp+var_58] +000B520E: mov rdi, rdx +000B5211: mov rsi, rax +000B5214: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B5219: mov rcx, rax +000B521C: mov rax, rdx +000B521F: mov [rbp+var_20], rcx +000B5223: mov [rbp+var_18], rax +000B5227: mov rdx, [rbp+var_50] +000B522B: mov rax, [rbp+var_48] +000B522F: mov rdi, rdx +000B5232: mov rsi, rax +000B5235: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B523A: mov rcx, rax +000B523D: mov rax, rdx +000B5240: mov [rbp+var_10], rcx +000B5244: mov [rbp+var_8], rax +000B5248: mov r8, [rbp+var_30] +000B524C: mov rdi, [rbp+var_28] +000B5250: mov rdx, [rbp+var_20] +000B5254: mov rcx, [rbp+var_18] +000B5258: mov rsi, [rbp+var_10] +000B525C: mov rax, [rbp+var_8] +000B5260: mov r9, rdi +000B5263: mov rdi, rsi +000B5266: mov rsi, rax +000B5269: call __ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_; std::__copy_move_backward_a(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000B526E: mov rcx, rax +000B5271: mov rax, rdx +000B5274: mov [rbp+var_40], rcx +000B5278: mov [rbp+var_38], rax +000B527C: mov rax, [rbp+var_40] +000B5280: mov rdx, [rbp+var_38] +000B5284: leave +000B5285: retn + +### FUNC 000B5286 - 000B52DB (85 bytes) name=_ZNKSt6vectorIbSaIbEE4sizeEv +000B5286: push rbp +000B5287: mov rbp, rsp +000B528A: sub rsp, 30h +000B528E: mov [rbp+var_28], rdi +000B5292: mov rax, [rbp+var_28] +000B5296: mov rdi, rax +000B5299: call __ZNKSt6vectorIbSaIbEE5beginEv; std::vector>::begin(void) +000B529E: mov rcx, rax +000B52A1: mov rax, rdx +000B52A4: mov [rbp+var_20], rcx +000B52A8: mov [rbp+var_18], rax +000B52AC: mov rax, [rbp+var_28] +000B52B0: mov rdi, rax +000B52B3: call __ZNKSt6vectorIbSaIbEE3endEv; std::vector>::end(void) +000B52B8: mov rcx, rax +000B52BB: mov rax, rdx +000B52BE: mov [rbp+var_10], rcx +000B52C2: mov [rbp+var_8], rax +000B52C6: lea rdx, [rbp+var_20] +000B52CA: lea rax, [rbp+var_10] +000B52CE: mov rsi, rdx +000B52D1: mov rdi, rax +000B52D4: call __ZStmiRKSt18_Bit_iterator_baseS1_; std::operator-(std::_Bit_iterator_base const&,std::_Bit_iterator_base const&) +000B52D9: leave +000B52DA: retn + +### FUNC 000B52DC - 000B5334 (88 bytes) name=_ZNKSt6vectorIbSaIbEE8max_sizeEv +000B52DC: push rbp +000B52DD: mov rbp, rsp +000B52E0: sub rsp, 20h +000B52E4: mov [rbp+var_18], rdi +000B52E8: mov rax, 7FFFFFFFFFFFFFC0h +000B52F2: mov [rbp+var_8], rax +000B52F6: mov rax, [rbp+var_18] +000B52FA: mov rdi, rax +000B52FD: call __ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv; std::_Bvector_base>::_M_get_Bit_allocator(void) +000B5302: mov rdi, rax +000B5305: call __ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000B530A: mov [rbp+var_10], rax +000B530E: mov rax, 1FFFFFFFFFFFFFFh +000B5318: cmp [rbp+var_10], rax +000B531C: ja short loc_B5328 +000B531E: mov rax, [rbp+var_10] +000B5322: shl rax, 6 +000B5326: jmp short locret_B5332 +000B5328: mov rax, 7FFFFFFFFFFFFFC0h +000B5332: leave +000B5333: retn + +### FUNC 000B5334 - 000B5376 (66 bytes) name=_ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv +000B5334: push rbp +000B5335: mov rbp, rsp +000B5338: sub rsp, 20h +000B533C: mov [rbp+var_8], rdi +000B5340: mov [rbp+var_10], rsi +000B5344: mov [rbp+var_18], rdx +000B5348: mov rax, [rbp+var_8] +000B534C: mov rdi, rax +000B534F: call __ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000B5354: cmp rax, [rbp+var_10] +000B5358: setb al +000B535B: test al, al +000B535D: jz short loc_B5364 +000B535F: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B5364: mov rax, [rbp+var_10] +000B5368: shl rax, 3 +000B536C: mov rdi, rax; unsigned __int64 +000B536F: call __Znwm; operator new(ulong) +000B5374: leave +000B5375: retn + +### FUNC 000B5376 - 000B53BC (70 bytes) name=_ZSt4copyIPmS0_ET0_T_S2_S1_ +000B5376: push rbp +000B5377: mov rbp, rsp +000B537A: push rbx +000B537B: sub rsp, 28h +000B537F: mov [rbp+var_18], rdi +000B5383: mov [rbp+var_20], rsi +000B5387: mov [rbp+var_28], rdx +000B538B: mov rax, [rbp+var_20] +000B538F: mov rdi, rax +000B5392: call __ZSt12__miter_baseIPmENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(ulong *) +000B5397: mov rbx, rax +000B539A: mov rax, [rbp+var_18] +000B539E: mov rdi, rax +000B53A1: call __ZSt12__miter_baseIPmENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(ulong *) +000B53A6: mov rdx, [rbp+var_28] +000B53AA: mov rsi, rbx +000B53AD: mov rdi, rax +000B53B0: call __ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_; std::__copy_move_a2(ulong *,ulong *,ulong *) +000B53B5: add rsp, 28h +000B53B9: pop rbx +000B53BA: pop rbp +000B53BB: retn + +### FUNC 000B53BC - 000B5462 (166 bytes) name=_ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_ +000B53BC: push rbp +000B53BD: mov rbp, rsp +000B53C0: sub rsp, 70h +000B53C4: mov rax, rcx +000B53C7: mov rcx, r9 +000B53CA: mov [rbp+var_40], rdi +000B53CE: mov [rbp+var_38], rsi +000B53D2: mov [rbp+var_50], rdx +000B53D6: mov [rbp+var_48], rax +000B53DA: mov [rbp+var_60], r8 +000B53DE: mov [rbp+var_58], rcx +000B53E2: mov rdx, [rbp+var_50] +000B53E6: mov rax, [rbp+var_48] +000B53EA: mov rdi, rdx +000B53ED: mov rsi, rax +000B53F0: call __ZSt12__miter_baseISt19_Bit_const_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(std::_Bit_const_iterator) +000B53F5: mov rcx, rax +000B53F8: mov rax, rdx +000B53FB: mov [rbp+var_20], rcx +000B53FF: mov [rbp+var_18], rax +000B5403: mov rdx, [rbp+var_40] +000B5407: mov rax, [rbp+var_38] +000B540B: mov rdi, rdx +000B540E: mov rsi, rax +000B5411: call __ZSt12__miter_baseISt19_Bit_const_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(std::_Bit_const_iterator) +000B5416: mov rcx, rax +000B5419: mov rax, rdx +000B541C: mov [rbp+var_10], rcx +000B5420: mov [rbp+var_8], rax +000B5424: mov r8, [rbp+var_60] +000B5428: mov rdi, [rbp+var_58] +000B542C: mov rdx, [rbp+var_20] +000B5430: mov rcx, [rbp+var_18] +000B5434: mov rsi, [rbp+var_10] +000B5438: mov rax, [rbp+var_8] +000B543C: mov r9, rdi +000B543F: mov rdi, rsi +000B5442: mov rsi, rax +000B5445: call __ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_; std::__copy_move_a2(std::_Bit_const_iterator,std::_Bit_const_iterator,std::_Bit_iterator) +000B544A: mov rcx, rax +000B544D: mov rax, rdx +000B5450: mov [rbp+var_30], rcx +000B5454: mov [rbp+var_28], rax +000B5458: mov rax, [rbp+var_30] +000B545C: mov rdx, [rbp+var_28] +000B5460: leave +000B5461: retn + +### FUNC 000B5462 - 000B5529 (199 bytes) name=_ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B5462: push rbp +000B5463: mov rbp, rsp +000B5466: add rsp, 0FFFFFFFFFFFFFF80h +000B546A: mov rax, rcx +000B546D: mov rcx, r9 +000B5470: mov [rbp+var_50], rdi +000B5474: mov [rbp+var_48], rsi +000B5478: mov [rbp+var_60], rdx +000B547C: mov [rbp+var_58], rax +000B5480: mov [rbp+var_70], r8 +000B5484: mov [rbp+var_68], rcx +000B5488: mov rdx, [rbp+var_70] +000B548C: mov rax, [rbp+var_68] +000B5490: mov rdi, rdx +000B5493: mov rsi, rax +000B5496: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B549B: mov rcx, rax +000B549E: mov rax, rdx +000B54A1: mov [rbp+var_30], rcx +000B54A5: mov [rbp+var_28], rax +000B54A9: mov rdx, [rbp+var_60] +000B54AD: mov rax, [rbp+var_58] +000B54B1: mov rdi, rdx +000B54B4: mov rsi, rax +000B54B7: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B54BC: mov rcx, rax +000B54BF: mov rax, rdx +000B54C2: mov [rbp+var_20], rcx +000B54C6: mov [rbp+var_18], rax +000B54CA: mov rdx, [rbp+var_50] +000B54CE: mov rax, [rbp+var_48] +000B54D2: mov rdi, rdx +000B54D5: mov rsi, rax +000B54D8: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B54DD: mov rcx, rax +000B54E0: mov rax, rdx +000B54E3: mov [rbp+var_10], rcx +000B54E7: mov [rbp+var_8], rax +000B54EB: mov r8, [rbp+var_30] +000B54EF: mov rdi, [rbp+var_28] +000B54F3: mov rdx, [rbp+var_20] +000B54F7: mov rcx, [rbp+var_18] +000B54FB: mov rsi, [rbp+var_10] +000B54FF: mov rax, [rbp+var_8] +000B5503: mov r9, rdi +000B5506: mov rdi, rsi +000B5509: mov rsi, rax +000B550C: call __ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_; std::__copy_move_a(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000B5511: mov rcx, rax +000B5514: mov rax, rdx +000B5517: mov [rbp+var_40], rcx +000B551B: mov [rbp+var_38], rax +000B551F: mov rax, [rbp+var_40] +000B5523: mov rdx, [rbp+var_38] +000B5527: leave +000B5528: retn + +### FUNC 000B5529 - 000B5561 (56 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JRKS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSG_DpOSH_ +000B5529: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_IRKS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS9_PSG_DpOSH_' +000B552A: mov rbp, rsp +000B552D: sub rsp, 20h +000B5531: mov [rbp+var_8], rdi +000B5535: mov [rbp+var_10], rsi +000B5539: mov [rbp+var_18], rdx +000B553D: mov rax, [rbp+var_18] +000B5541: mov rdi, rax +000B5544: call __ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE; std::forward>> * const&>(std::remove_reference>> * const&>::type &) +000B5549: mov rdx, rax +000B554C: mov rcx, [rbp+var_10] +000B5550: mov rax, [rbp+var_8] +000B5554: mov rsi, rcx +000B5557: mov rdi, rax +000B555A: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JRKS9_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>> *>::construct>> *,nlohmann::basic_json>> * const&>(nlohmann::basic_json>> * *,nlohmann::basic_json>> * const&) +000B555F: leave +000B5560: retn + +### FUNC 000B5562 - 000B562B (201 bytes) name=_ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12_M_check_lenEmPKc +000B5562: push rbp +000B5563: mov rbp, rsp +000B5566: push rbx +000B5567: sub rsp, 38h +000B556B: mov [rbp+var_28], rdi +000B556F: mov [rbp+var_30], rsi +000B5573: mov [rbp+var_38], rdx +000B5577: mov rax, [rbp+var_28] +000B557B: mov rdi, rax +000B557E: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv; std::vector>> *,std::allocator>> *>>::max_size(void) +000B5583: mov rbx, rax +000B5586: mov rax, [rbp+var_28] +000B558A: mov rdi, rax +000B558D: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B5592: sub rbx, rax +000B5595: mov rdx, rbx +000B5598: mov rax, [rbp+var_30] +000B559C: cmp rdx, rax +000B559F: setb al +000B55A2: test al, al +000B55A4: jz short loc_B55B2 +000B55A6: mov rax, [rbp+var_38] +000B55AA: mov rdi, rax; char * +000B55AD: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000B55B2: mov rax, [rbp+var_28] +000B55B6: mov rdi, rax +000B55B9: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B55BE: mov rbx, rax +000B55C1: mov rax, [rbp+var_28] +000B55C5: mov rdi, rax +000B55C8: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B55CD: mov [rbp+var_20], rax +000B55D1: lea rdx, [rbp+var_30] +000B55D5: lea rax, [rbp+var_20] +000B55D9: mov rsi, rdx +000B55DC: mov rdi, rax +000B55DF: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000B55E4: mov rax, [rax] +000B55E7: add rax, rbx +000B55EA: mov [rbp+var_18], rax +000B55EE: mov rax, [rbp+var_28] +000B55F2: mov rdi, rax +000B55F5: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B55FA: cmp rax, [rbp+var_18] +000B55FE: ja short loc_B5612 +000B5600: mov rax, [rbp+var_28] +000B5604: mov rdi, rax +000B5607: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv; std::vector>> *,std::allocator>> *>>::max_size(void) +000B560C: cmp rax, [rbp+var_18] +000B5610: jnb short loc_B5620 +000B5612: mov rax, [rbp+var_28] +000B5616: mov rdi, rax +000B5619: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv; std::vector>> *,std::allocator>> *>>::max_size(void) +000B561E: jmp short loc_B5624 +000B5620: mov rax, [rbp+var_18] +000B5624: add rsp, 38h +000B5628: pop rbx +000B5629: pop rbp +000B562A: retn + +### FUNC 000B562C - 000B5664 (56 bytes) name=_ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE11_M_allocateEm +000B562C: push rbp +000B562D: mov rbp, rsp +000B5630: sub rsp, 10h +000B5634: mov [rbp+var_8], rdi +000B5638: mov [rbp+var_10], rsi +000B563C: cmp [rbp+var_10], 0 +000B5641: jz short loc_B565D +000B5643: mov rax, [rbp+var_8] +000B5647: mov rcx, [rbp+var_10] +000B564B: mov edx, 0 +000B5650: mov rsi, rcx +000B5653: mov rdi, rax +000B5656: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv; __gnu_cxx::new_allocator>> *>::allocate(ulong,void const*) +000B565B: jmp short locret_B5662 +000B565D: mov eax, 0 +000B5662: leave +000B5663: retn + +### FUNC 000B5664 - 000B56B2 (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_SaIS8_EET0_T_SC_SB_RT1_ +000B5664: push rbp +000B5665: mov rbp, rsp +000B5668: push rbx +000B5669: sub rsp, 28h +000B566D: mov [rbp+var_18], rdi +000B5671: mov [rbp+var_20], rsi +000B5675: mov [rbp+var_28], rdx +000B5679: mov [rbp+var_30], rcx +000B567D: mov rax, [rbp+var_20] +000B5681: mov rdi, rax +000B5684: call __ZSt32__make_move_if_noexcept_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS9_EET0_T_; std::__make_move_if_noexcept_iterator>> **,std::move_iterator>> **>>(nlohmann::basic_json>> **) +000B5689: mov rbx, rax +000B568C: mov rax, [rbp+var_18] +000B5690: mov rdi, rax +000B5693: call __ZSt32__make_move_if_noexcept_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS9_EET0_T_; std::__make_move_if_noexcept_iterator>> **,std::move_iterator>> **>>(nlohmann::basic_json>> **) +000B5698: mov rcx, [rbp+var_30] +000B569C: mov rdx, [rbp+var_28] +000B56A0: mov rsi, rbx +000B56A3: mov rdi, rax +000B56A6: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_S9_ET0_T_SD_SC_RSaIT1_E; std::__uninitialized_copy_a>> **>,nlohmann::basic_json>> **,nlohmann::basic_json>> *>(std::move_iterator>> **>,std::move_iterator>> **>,nlohmann::basic_json>> **,std::allocator>> *> &) +000B56AB: add rsp, 28h +000B56AF: pop rbx +000B56B0: pop rbp +000B56B1: retn + +### FUNC 000B56B2 - 000B56CE (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSA_ +000B56B2: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>> **, std::vector>> *, std::allocator>> *>>>::__normal_iterator(nlohmann::basic_json>> ** const&)' +000B56B3: mov rbp, rsp +000B56B6: mov [rbp+var_8], rdi +000B56BA: mov [rbp+var_10], rsi +000B56BE: mov rax, [rbp+var_10] +000B56C2: mov rdx, [rax] +000B56C5: mov rax, [rbp+var_8] +000B56C9: mov [rax], rdx +000B56CC: pop rbp +000B56CD: retn + +### FUNC 000B56CE - 000B56F0 (34 bytes) name=_ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8max_sizeEv +000B56CE: push rbp +000B56CF: mov rbp, rsp +000B56D2: sub rsp, 10h +000B56D6: mov [rbp+var_8], rdi +000B56DA: mov rax, [rbp+var_8] +000B56DE: mov rdi, rax +000B56E1: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_Node_allocator(void) +000B56E6: mov rdi, rax +000B56E9: call __ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8max_sizeEv; __gnu_cxx::new_allocator>>>>>::max_size(void) +000B56EE: leave +000B56EF: retn + +### FUNC 000B56F0 - 000B570C (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEEC2ERKSB_ +000B56F0: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>> * const*, std::vector>> *, std::allocator>> *>>>::__normal_iterator(nlohmann::basic_json>> * const* const&)' +000B56F1: mov rbp, rsp +000B56F4: mov [rbp+var_8], rdi +000B56F8: mov [rbp+var_10], rsi +000B56FC: mov rax, [rbp+var_10] +000B5700: mov rdx, [rax] +000B5703: mov rax, [rbp+var_8] +000B5707: mov [rax], rdx +000B570A: pop rbp +000B570B: retn + +### FUNC 000B570C - 000B571A (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS9_SaIS9_EEE4baseEv +000B570C: push rbp +000B570D: mov rbp, rsp +000B5710: mov [rbp+var_8], rdi +000B5714: mov rax, [rbp+var_8] +000B5718: pop rbp +000B5719: retn + +### FUNC 000B571A - 000B573F (37 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE10_S_destroyIS8_EENSt9enable_ifIXsrNSA_16__destroy_helperIT_EE5valueEvE4typeERS9_PSE_ +000B571A: push rbp +000B571B: mov rbp, rsp +000B571E: sub rsp, 10h +000B5722: mov [rbp+var_8], rdi +000B5726: mov [rbp+var_10], rsi +000B572A: mov rdx, [rbp+var_10] +000B572E: mov rax, [rbp+var_8] +000B5732: mov rsi, rdx +000B5735: mov rdi, rax +000B5738: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS9_EEvPT_; __gnu_cxx::new_allocator>> *>::destroy>> *>(nlohmann::basic_json>> * *) +000B573D: leave +000B573E: retn + +### FUNC 000B5740 - 000B5790 (80 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE5eraseB5cxx11ESt17_Rb_tree_iteratorISA_E +000B5740: push rbp +000B5741: mov rbp, rsp +000B5744: sub rsp, 30h +000B5748: mov [rbp+var_28], rdi +000B574C: mov [rbp+var_30], rsi +000B5750: mov rax, [rbp+var_30] +000B5754: mov [rbp+var_20], rax +000B5758: lea rax, [rbp+var_20] +000B575C: mov rdi, rax +000B575F: call __ZNSt17_Rb_tree_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEppEv; std::_Rb_tree_iterator>>>>::operator++(void) +000B5764: lea rdx, [rbp+var_30] +000B5768: lea rax, [rbp+var_10] +000B576C: mov rsi, rdx +000B576F: mov rdi, rax +000B5772: call __ZNSt23_Rb_tree_const_iteratorISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2ERKSt17_Rb_tree_iteratorISA_E; std::_Rb_tree_const_iterator>>>>::_Rb_tree_const_iterator(std::_Rb_tree_iterator>>>> const&) +000B5777: mov rdx, [rbp+var_10] +000B577B: mov rax, [rbp+var_28] +000B577F: mov rsi, rdx +000B5782: mov rdi, rax +000B5785: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_erase_auxESt23_Rb_tree_const_iteratorISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_erase_aux(std::_Rb_tree_const_iterator>>>>) +000B578A: mov rax, [rbp+var_20] +000B578E: leave +000B578F: retn + +### FUNC 000B5790 - 000B57D2 (66 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEplERKl +000B5790: push rbp +000B5791: mov rbp, rsp +000B5794: sub rsp, 20h +000B5798: mov [rbp+var_18], rdi +000B579C: mov [rbp+var_20], rsi +000B57A0: mov rax, [rbp+var_18] +000B57A4: mov rdx, [rax] +000B57A7: mov rax, [rbp+var_20] +000B57AB: mov rax, [rax] +000B57AE: shl rax, 4 +000B57B2: add rax, rdx +000B57B5: mov [rbp+var_8], rax +000B57B9: lea rdx, [rbp+var_8] +000B57BD: lea rax, [rbp+var_10] +000B57C1: mov rsi, rdx +000B57C4: mov rdi, rax +000B57C7: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> * const&) +000B57CC: mov rax, [rbp+var_10] +000B57D0: leave +000B57D1: retn + +### FUNC 000B57D2 - 000B5818 (70 bytes) name=_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET0_T_SF_SE_ +000B57D2: push rbp +000B57D3: mov rbp, rsp +000B57D6: push rbx +000B57D7: sub rsp, 38h +000B57DB: mov [rbp+var_20], rdi +000B57DF: mov [rbp+var_30], rsi +000B57E3: mov [rbp+var_40], rdx +000B57E7: mov rax, [rbp+var_30] +000B57EB: mov rdi, rax +000B57EE: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_; std::__miter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B57F3: mov rbx, rax +000B57F6: mov rax, [rbp+var_20] +000B57FA: mov rdi, rax +000B57FD: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Miter_baseIT_E13iterator_typeESF_; std::__miter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B5802: mov rdx, [rbp+var_40] +000B5806: mov rsi, rbx +000B5809: mov rdi, rax +000B580C: call __ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET1_T0_SF_SE_; std::__copy_move_a2>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B5811: add rsp, 38h +000B5815: pop rbx +000B5816: pop rbp +000B5817: retn + +### FUNC 000B5818 - 000B584C (52 bytes) name=_ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERSsEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5818: push rbp +000B5819: mov rbp, rsp +000B581C: sub rsp, 20h +000B5820: mov [rbp+var_8], rdi +000B5824: mov [rbp+var_10], rsi +000B5828: mov [rbp+var_18], rdx +000B582C: mov rax, [rbp+var_18] +000B5830: mov rdi, rax +000B5833: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B5838: mov rdx, rax +000B583B: mov rax, [rbp+var_10] +000B583F: mov rsi, rdx +000B5842: mov rdi, rax +000B5845: call __ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEESsLi0EEEvRT_RKT0_; nlohmann::detail::to_json>>,std::string,0>(nlohmann::basic_json>> &,std::string const&) +000B584A: leave +000B584B: retn + +### FUNC 000B584C - 000B590B (191 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS1_EESL_IJEEEEEPSt13_Rb_tree_nodeISA_EDpOT_ +000B584C: push rbp; Alternative name is 'std::_Rb_tree_node>>>> * std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>:: +000B584D: mov rbp, rsp +000B5850: push r13 +000B5852: push r12 +000B5854: push rbx +000B5855: sub rsp, 38h +000B5859: mov [rbp+var_38], rdi +000B585D: mov [rbp+var_40], rsi +000B5861: mov [rbp+var_48], rdx +000B5865: mov [rbp+var_50], rcx +000B5869: mov rax, [rbp+var_38] +000B586D: mov rdi, rax +000B5870: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_node(void) +000B5875: mov [rbp+var_28], rax +000B5879: mov rax, [rbp+var_50] +000B587D: mov rdi, rax +000B5880: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B5885: mov r13, rax +000B5888: mov rax, [rbp+var_48] +000B588C: mov rdi, rax +000B588F: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B5894: mov r12, rax +000B5897: mov rax, [rbp+var_40] +000B589B: mov rdi, rax +000B589E: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B58A3: mov rbx, rax +000B58A6: mov rax, [rbp+var_38] +000B58AA: mov rdi, rax +000B58AD: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_Node_allocator(void) +000B58B2: mov rsi, [rbp+var_28] +000B58B6: mov r8, r13 +000B58B9: mov rcx, r12 +000B58BC: mov rdx, rbx +000B58BF: mov rdi, rax +000B58C2: call __ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +000B58C7: mov rax, [rbp+var_28] +000B58CB: jmp short loc_B5900 +000B58CD: mov rdi, rax; void * +000B58D0: call ___cxa_begin_catch +000B58D5: mov rdx, [rbp+var_28] +000B58D9: mov rax, [rbp+var_38] +000B58DD: mov rsi, rdx +000B58E0: mov rdi, rax +000B58E3: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_put_node(std::_Rb_tree_node>>>> *) +000B58E8: call ___cxa_rethrow +000B58ED: mov rbx, rax +000B58F0: call ___cxa_end_catch +000B58F5: mov rax, rbx +000B58F8: mov rdi, rax; struct _Unwind_Exception * +000B58FB: call __Unwind_Resume +000B5900: add rsp, 38h +000B5904: pop rbx +000B5905: pop r12 +000B5907: pop r13 +000B5909: pop rbp +000B590A: retn + +### FUNC 000B590B - 000B5942 (55 bytes) name=_ZN8nlohmann14adl_serializerIdvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERdEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B590B: push rbp +000B590C: mov rbp, rsp +000B590F: sub rsp, 10h +000B5913: mov [rbp+var_8], rdi +000B5917: mov [rbp+var_10], rsi +000B591B: mov rax, [rbp+var_10] +000B591F: mov rdi, rax +000B5922: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B5927: mov rdx, rax +000B592A: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_10to_json_fnEE5valueE_ptr +000B5931: mov rcx, [rbp+var_8] +000B5935: mov rsi, rcx +000B5938: mov rdi, rax +000B593B: call __ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERdEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5940: leave +000B5941: retn + +### FUNC 000B5942 - 000B5979 (55 bytes) name=_ZN8nlohmann14adl_serializerIbvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERbEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5942: push rbp +000B5943: mov rbp, rsp +000B5946: sub rsp, 10h +000B594A: mov [rbp+var_8], rdi +000B594E: mov [rbp+var_10], rsi +000B5952: mov rax, [rbp+var_10] +000B5956: mov rdi, rax +000B5959: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B595E: mov rdx, rax +000B5961: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_10to_json_fnEE5valueE_ptr +000B5968: mov rcx, [rbp+var_8] +000B596C: mov rsi, rcx +000B596F: mov rdi, rax +000B5972: call __ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERbEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5977: leave +000B5978: retn + +### FUNC 000B5979 - 000B59B0 (55 bytes) name=_ZN8nlohmann14adl_serializerIlvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERlEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B5979: push rbp +000B597A: mov rbp, rsp +000B597D: sub rsp, 10h +000B5981: mov [rbp+var_8], rdi +000B5985: mov [rbp+var_10], rsi +000B5989: mov rax, [rbp+var_10] +000B598D: mov rdi, rax +000B5990: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B5995: mov rdx, rax +000B5998: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_10to_json_fnEE5valueE_ptr +000B599F: mov rcx, [rbp+var_8] +000B59A3: mov rsi, rcx +000B59A6: mov rdi, rax +000B59A9: call __ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERlEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B59AE: leave +000B59AF: retn + +### FUNC 000B59B0 - 000B59E7 (55 bytes) name=_ZN8nlohmann14adl_serializerImvE7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaS0_S5_IhSaIhEEEERmEEDTcmclL_ZNS_12_GLOBAL__N_17to_jsonEEfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B59B0: push rbp +000B59B1: mov rbp, rsp +000B59B4: sub rsp, 10h +000B59B8: mov [rbp+var_8], rdi +000B59BC: mov [rbp+var_10], rsi +000B59C0: mov rax, [rbp+var_10] +000B59C4: mov rdi, rax +000B59C7: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B59CC: mov rdx, rax +000B59CF: mov rax, cs:_ZN8nlohmann6detail12static_constINS0_10to_json_fnEE5valueE_ptr +000B59D6: mov rcx, [rbp+var_8] +000B59DA: mov rsi, rcx +000B59DD: mov rdi, rax +000B59E0: call __ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERmEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B59E5: leave +000B59E6: retn + +### FUNC 000B59E7 - 000B5A1F (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JNS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_ +000B59E7: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_INS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_' +000B59E8: mov rbp, rsp +000B59EB: sub rsp, 20h +000B59EF: mov [rbp+var_8], rdi +000B59F3: mov [rbp+var_10], rsi +000B59F7: mov [rbp+var_18], rdx +000B59FB: mov rax, [rbp+var_18] +000B59FF: mov rdi, rax +000B5A02: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B5A07: mov rdx, rax +000B5A0A: mov rcx, [rbp+var_10] +000B5A0E: mov rax, [rbp+var_8] +000B5A12: mov rsi, rcx +000B5A15: mov rdi, rax +000B5A18: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JNS0_6detail7value_tEEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSF_DpOSG_; std::allocator_traits>>>>::_S_construct>>,nlohmann::detail::value_t>(std::allocator>>>&,nlohmann::basic_json>>*,nlohmann::detail::value_t&&) +000B5A1D: leave +000B5A1E: retn + +### FUNC 000B5A20 - 000B5C09 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJNS0_6detail7value_tEEEEvDpOT_ +000B5A20: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(nlohmann::detail::value_t &&)' +000B5A21: mov rbp, rsp +000B5A24: push rbx +000B5A25: sub rsp, 38h +000B5A29: mov [rbp+var_38], rdi +000B5A2D: mov [rbp+var_40], rsi +000B5A31: mov rax, [rbp+var_38] +000B5A35: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B5A3C: mov esi, 1 +000B5A41: mov rdi, rax +000B5A44: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B5A49: mov [rbp+var_20], rax +000B5A4D: mov rax, [rbp+var_38] +000B5A51: mov rdx, [rbp+var_20] +000B5A55: mov rsi, rdx +000B5A58: mov rdi, rax +000B5A5B: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B5A60: mov [rbp+var_28], rax +000B5A64: mov rax, [rbp+var_28] +000B5A68: mov [rbp+var_18], rax +000B5A6C: mov rax, [rbp+var_40] +000B5A70: mov rdi, rax +000B5A73: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B5A78: mov rbx, rax +000B5A7B: mov rax, [rbp+var_38] +000B5A7F: mov rdi, rax +000B5A82: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B5A87: shl rax, 4 +000B5A8B: mov rdx, rax +000B5A8E: mov rax, [rbp+var_28] +000B5A92: lea rcx, [rdx+rax] +000B5A96: mov rax, [rbp+var_38] +000B5A9A: mov rdx, rbx +000B5A9D: mov rsi, rcx +000B5AA0: mov rdi, rax +000B5AA3: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JNS0_6detail7value_tEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSD_ +000B5AA8: mov [rbp+var_18], 0 +000B5AB0: mov rax, [rbp+var_38] +000B5AB4: mov rdi, rax +000B5AB7: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B5ABC: mov rcx, rax +000B5ABF: mov rax, [rbp+var_38] +000B5AC3: mov rsi, [rax+8] +000B5AC7: mov rax, [rbp+var_38] +000B5ACB: mov rax, [rax] +000B5ACE: mov rdx, [rbp+var_28] +000B5AD2: mov rdi, rax +000B5AD5: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B5ADA: mov [rbp+var_18], rax +000B5ADE: add [rbp+var_18], 10h +000B5AE3: mov rax, [rbp+var_38] +000B5AE7: mov rdi, rax +000B5AEA: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B5AEF: mov rdx, rax +000B5AF2: mov rax, [rbp+var_38] +000B5AF6: mov rcx, [rax+8] +000B5AFA: mov rax, [rbp+var_38] +000B5AFE: mov rax, [rax] +000B5B01: mov rsi, rcx +000B5B04: mov rdi, rax +000B5B07: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B5B0C: mov rax, [rbp+var_38] +000B5B10: mov rax, [rax+10h] +000B5B14: mov rdx, rax +000B5B17: mov rax, [rbp+var_38] +000B5B1B: mov rax, [rax] +000B5B1E: sub rdx, rax +000B5B21: mov rax, rdx +000B5B24: sar rax, 4 +000B5B28: mov rdx, rax +000B5B2B: mov rax, [rbp+var_38] +000B5B2F: mov rcx, [rax] +000B5B32: mov rax, [rbp+var_38] +000B5B36: mov rsi, rcx +000B5B39: mov rdi, rax +000B5B3C: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B5B41: mov rax, [rbp+var_38] +000B5B45: mov rdx, [rbp+var_28] +000B5B49: mov [rax], rdx +000B5B4C: mov rax, [rbp+var_38] +000B5B50: mov rdx, [rbp+var_18] +000B5B54: mov [rax+8], rdx +000B5B58: mov rax, [rbp+var_20] +000B5B5C: shl rax, 4 +000B5B60: mov rdx, rax +000B5B63: mov rax, [rbp+var_28] +000B5B67: add rdx, rax +000B5B6A: mov rax, [rbp+var_38] +000B5B6E: mov [rax+10h], rdx +000B5B72: jmp loc_B5C02 +000B5B77: mov rdi, rax; void * +000B5B7A: call ___cxa_begin_catch +000B5B7F: cmp [rbp+var_18], 0 +000B5B84: jnz short loc_B5BB1 +000B5B86: mov rax, [rbp+var_38] +000B5B8A: mov rdi, rax +000B5B8D: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B5B92: shl rax, 4 +000B5B96: mov rdx, rax +000B5B99: mov rax, [rbp+var_28] +000B5B9D: add rdx, rax +000B5BA0: mov rax, [rbp+var_38] +000B5BA4: mov rsi, rdx +000B5BA7: mov rdi, rax +000B5BAA: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B5BAF: jmp short loc_B5BD3 +000B5BB1: mov rax, [rbp+var_38] +000B5BB5: mov rdi, rax +000B5BB8: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B5BBD: mov rdx, rax +000B5BC0: mov rcx, [rbp+var_18] +000B5BC4: mov rax, [rbp+var_28] +000B5BC8: mov rsi, rcx +000B5BCB: mov rdi, rax +000B5BCE: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B5BD3: mov rax, [rbp+var_38] +000B5BD7: mov rdx, [rbp+var_20] +000B5BDB: mov rcx, [rbp+var_28] +000B5BDF: mov rsi, rcx +000B5BE2: mov rdi, rax +000B5BE5: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B5BEA: call ___cxa_rethrow +000B5BEF: mov rbx, rax +000B5BF2: call ___cxa_end_catch +000B5BF7: mov rax, rbx +000B5BFA: mov rdi, rax; struct _Unwind_Exception * +000B5BFD: call __Unwind_Resume +000B5C02: add rsp, 38h +000B5C06: pop rbx +000B5C07: pop rbp +000B5C08: retn + +### FUNC 000B5C09 - 000B5C41 (56 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_ +000B5C09: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_IS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_' +000B5C0A: mov rbp, rsp +000B5C0D: sub rsp, 20h +000B5C11: mov [rbp+var_8], rdi +000B5C15: mov [rbp+var_10], rsi +000B5C19: mov [rbp+var_18], rdx +000B5C1D: mov rax, [rbp+var_18] +000B5C21: mov rdi, rax +000B5C24: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000B5C29: mov rdx, rax +000B5C2C: mov rcx, [rbp+var_10] +000B5C30: mov rax, [rbp+var_8] +000B5C34: mov rsi, rcx +000B5C37: mov rdi, rax +000B5C3A: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSE_DpOSF_; std::allocator_traits>> *>>::_S_construct>> *,nlohmann::basic_json>> *>(std::allocator>> *>&,nlohmann::basic_json>> **,nlohmann::basic_json>> *&&) +000B5C3F: leave +000B5C40: retn + +### FUNC 000B5C42 - 000B5E2E (492 bytes) name=_ZNSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE19_M_emplace_back_auxIJS7_EEEvDpOT_ +000B5C42: push rbp; Alternative name is 'void std::vector>> *, std::allocator>> *>>::_M_emplace_back_aux>> *>(nlohmann::basic_json>> * &&)' +000B5C43: mov rbp, rsp +000B5C46: push rbx +000B5C47: sub rsp, 38h +000B5C4B: mov [rbp+var_38], rdi +000B5C4F: mov [rbp+var_40], rsi +000B5C53: mov rax, [rbp+var_38] +000B5C57: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B5C5E: mov esi, 1 +000B5C63: mov rdi, rax +000B5C66: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE12_M_check_lenEmPKc; std::vector>> *,std::allocator>> *>>::_M_check_len(ulong,char const*) +000B5C6B: mov [rbp+var_20], rax +000B5C6F: mov rax, [rbp+var_38] +000B5C73: mov rdx, [rbp+var_20] +000B5C77: mov rsi, rdx +000B5C7A: mov rdi, rax +000B5C7D: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE11_M_allocateEm; std::_Vector_base>> *,std::allocator>> *>>::_M_allocate(ulong) +000B5C82: mov [rbp+var_28], rax +000B5C86: mov rax, [rbp+var_28] +000B5C8A: mov [rbp+var_18], rax +000B5C8E: mov rax, [rbp+var_40] +000B5C92: mov rdi, rax +000B5C95: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000B5C9A: mov rbx, rax +000B5C9D: mov rax, [rbp+var_38] +000B5CA1: mov rdi, rax +000B5CA4: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B5CA9: lea rdx, ds:0[rax*8] +000B5CB1: mov rax, [rbp+var_28] +000B5CB5: lea rcx, [rdx+rax] +000B5CB9: mov rax, [rbp+var_38] +000B5CBD: mov rdx, rbx +000B5CC0: mov rsi, rcx +000B5CC3: mov rdi, rax +000B5CC6: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS8_JS8_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS9_PT_DpOSC_ +000B5CCB: mov [rbp+var_18], 0 +000B5CD3: mov rax, [rbp+var_38] +000B5CD7: mov rdi, rax +000B5CDA: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B5CDF: mov rcx, rax +000B5CE2: mov rax, [rbp+var_38] +000B5CE6: mov rsi, [rax+8] +000B5CEA: mov rax, [rbp+var_38] +000B5CEE: mov rax, [rax] +000B5CF1: mov rdx, [rbp+var_28] +000B5CF5: mov rdi, rax +000B5CF8: call __ZSt34__uninitialized_move_if_noexcept_aIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_SaIS8_EET0_T_SC_SB_RT1_; std::__uninitialized_move_if_noexcept_a>> **,nlohmann::basic_json>> **,std::allocator>> *>>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000B5CFD: mov [rbp+var_18], rax +000B5D01: add [rbp+var_18], 8 +000B5D06: mov rax, [rbp+var_38] +000B5D0A: mov rdi, rax +000B5D0D: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B5D12: mov rdx, rax +000B5D15: mov rax, [rbp+var_38] +000B5D19: mov rcx, [rax+8] +000B5D1D: mov rax, [rbp+var_38] +000B5D21: mov rax, [rax] +000B5D24: mov rsi, rcx +000B5D27: mov rdi, rax +000B5D2A: call __ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E; std::_Destroy>> **,nlohmann::basic_json>> *>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000B5D2F: mov rax, [rbp+var_38] +000B5D33: mov rax, [rax+10h] +000B5D37: mov rdx, rax +000B5D3A: mov rax, [rbp+var_38] +000B5D3E: mov rax, [rax] +000B5D41: sub rdx, rax +000B5D44: mov rax, rdx +000B5D47: sar rax, 3 +000B5D4B: mov rdx, rax +000B5D4E: mov rax, [rbp+var_38] +000B5D52: mov rcx, [rax] +000B5D55: mov rax, [rbp+var_38] +000B5D59: mov rsi, rcx +000B5D5C: mov rdi, rax +000B5D5F: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m; std::_Vector_base>> *,std::allocator>> *>>::_M_deallocate(nlohmann::basic_json>> **,ulong) +000B5D64: mov rax, [rbp+var_38] +000B5D68: mov rdx, [rbp+var_28] +000B5D6C: mov [rax], rdx +000B5D6F: mov rax, [rbp+var_38] +000B5D73: mov rdx, [rbp+var_18] +000B5D77: mov [rax+8], rdx +000B5D7B: mov rax, [rbp+var_20] +000B5D7F: lea rdx, ds:0[rax*8] +000B5D87: mov rax, [rbp+var_28] +000B5D8B: add rdx, rax +000B5D8E: mov rax, [rbp+var_38] +000B5D92: mov [rax+10h], rdx +000B5D96: jmp loc_B5E27 +000B5D9B: mov rdi, rax; void * +000B5D9E: call ___cxa_begin_catch +000B5DA3: cmp [rbp+var_18], 0 +000B5DA8: jnz short loc_B5DD6 +000B5DAA: mov rax, [rbp+var_38] +000B5DAE: mov rdi, rax +000B5DB1: call __ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE4sizeEv; std::vector>> *,std::allocator>> *>>::size(void) +000B5DB6: lea rdx, ds:0[rax*8] +000B5DBE: mov rax, [rbp+var_28] +000B5DC2: add rdx, rax +000B5DC5: mov rax, [rbp+var_38] +000B5DC9: mov rsi, rdx +000B5DCC: mov rdi, rax +000B5DCF: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS8_EEvRS9_PT_; std::allocator_traits>> *>>::destroy>> *>(std::allocator>> *>&,nlohmann::basic_json>> * *) +000B5DD4: jmp short loc_B5DF8 +000B5DD6: mov rax, [rbp+var_38] +000B5DDA: mov rdi, rax +000B5DDD: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B5DE2: mov rdx, rax +000B5DE5: mov rcx, [rbp+var_18] +000B5DE9: mov rax, [rbp+var_28] +000B5DED: mov rsi, rcx +000B5DF0: mov rdi, rax +000B5DF3: call __ZSt8_DestroyIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_EvT_SA_RSaIT0_E; std::_Destroy>> **,nlohmann::basic_json>> *>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,std::allocator>> *> &) +000B5DF8: mov rax, [rbp+var_38] +000B5DFC: mov rdx, [rbp+var_20] +000B5E00: mov rcx, [rbp+var_28] +000B5E04: mov rsi, rcx +000B5E07: mov rdi, rax +000B5E0A: call __ZNSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE13_M_deallocateEPS8_m; std::_Vector_base>> *,std::allocator>> *>>::_M_deallocate(nlohmann::basic_json>> **,ulong) +000B5E0F: call ___cxa_rethrow +000B5E14: mov rbx, rax +000B5E17: call ___cxa_end_catch +000B5E1C: mov rax, rbx +000B5E1F: mov rdi, rax; struct _Unwind_Exception * +000B5E22: call __Unwind_Resume +000B5E27: add rsp, 38h +000B5E2B: pop rbx +000B5E2C: pop rbp +000B5E2D: retn + +### FUNC 000B5E2E - 000B5E66 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B5E2E: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_' +000B5E2F: mov rbp, rsp +000B5E32: sub rsp, 20h +000B5E36: mov [rbp+var_8], rdi +000B5E3A: mov [rbp+var_10], rsi +000B5E3E: mov [rbp+var_18], rdx +000B5E42: mov rax, [rbp+var_18] +000B5E46: mov rdi, rax +000B5E49: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B5E4E: mov rdx, rax +000B5E51: mov rcx, [rbp+var_10] +000B5E55: mov rax, [rbp+var_8] +000B5E59: mov rsi, rcx +000B5E5C: mov rdi, rax +000B5E5F: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRdEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_; std::allocator_traits>>>>::_S_construct>>,double &>(std::allocator>>>&,nlohmann::basic_json>>*,double &&&) +000B5E64: leave +000B5E65: retn + +### FUNC 000B5E66 - 000B604F (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRdEEEvDpOT_ +000B5E66: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(double &)' +000B5E67: mov rbp, rsp +000B5E6A: push rbx +000B5E6B: sub rsp, 38h +000B5E6F: mov [rbp+var_38], rdi +000B5E73: mov [rbp+var_40], rsi +000B5E77: mov rax, [rbp+var_38] +000B5E7B: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B5E82: mov esi, 1 +000B5E87: mov rdi, rax +000B5E8A: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B5E8F: mov [rbp+var_20], rax +000B5E93: mov rax, [rbp+var_38] +000B5E97: mov rdx, [rbp+var_20] +000B5E9B: mov rsi, rdx +000B5E9E: mov rdi, rax +000B5EA1: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B5EA6: mov [rbp+var_28], rax +000B5EAA: mov rax, [rbp+var_28] +000B5EAE: mov [rbp+var_18], rax +000B5EB2: mov rax, [rbp+var_40] +000B5EB6: mov rdi, rax +000B5EB9: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B5EBE: mov rbx, rax +000B5EC1: mov rax, [rbp+var_38] +000B5EC5: mov rdi, rax +000B5EC8: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B5ECD: shl rax, 4 +000B5ED1: mov rdx, rax +000B5ED4: mov rax, [rbp+var_28] +000B5ED8: lea rcx, [rdx+rax] +000B5EDC: mov rax, [rbp+var_38] +000B5EE0: mov rdx, rbx +000B5EE3: mov rsi, rcx +000B5EE6: mov rdi, rax +000B5EE9: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRdEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B5EEE: mov [rbp+var_18], 0 +000B5EF6: mov rax, [rbp+var_38] +000B5EFA: mov rdi, rax +000B5EFD: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B5F02: mov rcx, rax +000B5F05: mov rax, [rbp+var_38] +000B5F09: mov rsi, [rax+8] +000B5F0D: mov rax, [rbp+var_38] +000B5F11: mov rax, [rax] +000B5F14: mov rdx, [rbp+var_28] +000B5F18: mov rdi, rax +000B5F1B: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B5F20: mov [rbp+var_18], rax +000B5F24: add [rbp+var_18], 10h +000B5F29: mov rax, [rbp+var_38] +000B5F2D: mov rdi, rax +000B5F30: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B5F35: mov rdx, rax +000B5F38: mov rax, [rbp+var_38] +000B5F3C: mov rcx, [rax+8] +000B5F40: mov rax, [rbp+var_38] +000B5F44: mov rax, [rax] +000B5F47: mov rsi, rcx +000B5F4A: mov rdi, rax +000B5F4D: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B5F52: mov rax, [rbp+var_38] +000B5F56: mov rax, [rax+10h] +000B5F5A: mov rdx, rax +000B5F5D: mov rax, [rbp+var_38] +000B5F61: mov rax, [rax] +000B5F64: sub rdx, rax +000B5F67: mov rax, rdx +000B5F6A: sar rax, 4 +000B5F6E: mov rdx, rax +000B5F71: mov rax, [rbp+var_38] +000B5F75: mov rcx, [rax] +000B5F78: mov rax, [rbp+var_38] +000B5F7C: mov rsi, rcx +000B5F7F: mov rdi, rax +000B5F82: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B5F87: mov rax, [rbp+var_38] +000B5F8B: mov rdx, [rbp+var_28] +000B5F8F: mov [rax], rdx +000B5F92: mov rax, [rbp+var_38] +000B5F96: mov rdx, [rbp+var_18] +000B5F9A: mov [rax+8], rdx +000B5F9E: mov rax, [rbp+var_20] +000B5FA2: shl rax, 4 +000B5FA6: mov rdx, rax +000B5FA9: mov rax, [rbp+var_28] +000B5FAD: add rdx, rax +000B5FB0: mov rax, [rbp+var_38] +000B5FB4: mov [rax+10h], rdx +000B5FB8: jmp loc_B6048 +000B5FBD: mov rdi, rax; void * +000B5FC0: call ___cxa_begin_catch +000B5FC5: cmp [rbp+var_18], 0 +000B5FCA: jnz short loc_B5FF7 +000B5FCC: mov rax, [rbp+var_38] +000B5FD0: mov rdi, rax +000B5FD3: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B5FD8: shl rax, 4 +000B5FDC: mov rdx, rax +000B5FDF: mov rax, [rbp+var_28] +000B5FE3: add rdx, rax +000B5FE6: mov rax, [rbp+var_38] +000B5FEA: mov rsi, rdx +000B5FED: mov rdi, rax +000B5FF0: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B5FF5: jmp short loc_B6019 +000B5FF7: mov rax, [rbp+var_38] +000B5FFB: mov rdi, rax +000B5FFE: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6003: mov rdx, rax +000B6006: mov rcx, [rbp+var_18] +000B600A: mov rax, [rbp+var_28] +000B600E: mov rsi, rcx +000B6011: mov rdi, rax +000B6014: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6019: mov rax, [rbp+var_38] +000B601D: mov rdx, [rbp+var_20] +000B6021: mov rcx, [rbp+var_28] +000B6025: mov rsi, rcx +000B6028: mov rdi, rax +000B602B: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B6030: call ___cxa_rethrow +000B6035: mov rbx, rax +000B6038: call ___cxa_end_catch +000B603D: mov rax, rbx +000B6040: mov rdi, rax; struct _Unwind_Exception * +000B6043: call __Unwind_Resume +000B6048: add rsp, 38h +000B604C: pop rbx +000B604D: pop rbp +000B604E: retn + +### FUNC 000B604F - 000B6087 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B604F: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_' +000B6050: mov rbp, rsp +000B6053: sub rsp, 20h +000B6057: mov [rbp+var_8], rdi +000B605B: mov [rbp+var_10], rsi +000B605F: mov [rbp+var_18], rdx +000B6063: mov rax, [rbp+var_18] +000B6067: mov rdi, rax +000B606A: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B606F: mov rdx, rax +000B6072: mov rcx, [rbp+var_10] +000B6076: mov rax, [rbp+var_8] +000B607A: mov rsi, rcx +000B607D: mov rdi, rax +000B6080: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRbEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_; std::allocator_traits>>>>::_S_construct>>,bool &>(std::allocator>>>&,nlohmann::basic_json>>*,bool &&&) +000B6085: leave +000B6086: retn + +### FUNC 000B6088 - 000B6271 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRbEEEvDpOT_ +000B6088: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(bool &)' +000B6089: mov rbp, rsp +000B608C: push rbx +000B608D: sub rsp, 38h +000B6091: mov [rbp+var_38], rdi +000B6095: mov [rbp+var_40], rsi +000B6099: mov rax, [rbp+var_38] +000B609D: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B60A4: mov esi, 1 +000B60A9: mov rdi, rax +000B60AC: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B60B1: mov [rbp+var_20], rax +000B60B5: mov rax, [rbp+var_38] +000B60B9: mov rdx, [rbp+var_20] +000B60BD: mov rsi, rdx +000B60C0: mov rdi, rax +000B60C3: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B60C8: mov [rbp+var_28], rax +000B60CC: mov rax, [rbp+var_28] +000B60D0: mov [rbp+var_18], rax +000B60D4: mov rax, [rbp+var_40] +000B60D8: mov rdi, rax +000B60DB: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B60E0: mov rbx, rax +000B60E3: mov rax, [rbp+var_38] +000B60E7: mov rdi, rax +000B60EA: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B60EF: shl rax, 4 +000B60F3: mov rdx, rax +000B60F6: mov rax, [rbp+var_28] +000B60FA: lea rcx, [rdx+rax] +000B60FE: mov rax, [rbp+var_38] +000B6102: mov rdx, rbx +000B6105: mov rsi, rcx +000B6108: mov rdi, rax +000B610B: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRbEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6110: mov [rbp+var_18], 0 +000B6118: mov rax, [rbp+var_38] +000B611C: mov rdi, rax +000B611F: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6124: mov rcx, rax +000B6127: mov rax, [rbp+var_38] +000B612B: mov rsi, [rax+8] +000B612F: mov rax, [rbp+var_38] +000B6133: mov rax, [rax] +000B6136: mov rdx, [rbp+var_28] +000B613A: mov rdi, rax +000B613D: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6142: mov [rbp+var_18], rax +000B6146: add [rbp+var_18], 10h +000B614B: mov rax, [rbp+var_38] +000B614F: mov rdi, rax +000B6152: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6157: mov rdx, rax +000B615A: mov rax, [rbp+var_38] +000B615E: mov rcx, [rax+8] +000B6162: mov rax, [rbp+var_38] +000B6166: mov rax, [rax] +000B6169: mov rsi, rcx +000B616C: mov rdi, rax +000B616F: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6174: mov rax, [rbp+var_38] +000B6178: mov rax, [rax+10h] +000B617C: mov rdx, rax +000B617F: mov rax, [rbp+var_38] +000B6183: mov rax, [rax] +000B6186: sub rdx, rax +000B6189: mov rax, rdx +000B618C: sar rax, 4 +000B6190: mov rdx, rax +000B6193: mov rax, [rbp+var_38] +000B6197: mov rcx, [rax] +000B619A: mov rax, [rbp+var_38] +000B619E: mov rsi, rcx +000B61A1: mov rdi, rax +000B61A4: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B61A9: mov rax, [rbp+var_38] +000B61AD: mov rdx, [rbp+var_28] +000B61B1: mov [rax], rdx +000B61B4: mov rax, [rbp+var_38] +000B61B8: mov rdx, [rbp+var_18] +000B61BC: mov [rax+8], rdx +000B61C0: mov rax, [rbp+var_20] +000B61C4: shl rax, 4 +000B61C8: mov rdx, rax +000B61CB: mov rax, [rbp+var_28] +000B61CF: add rdx, rax +000B61D2: mov rax, [rbp+var_38] +000B61D6: mov [rax+10h], rdx +000B61DA: jmp loc_B626A +000B61DF: mov rdi, rax; void * +000B61E2: call ___cxa_begin_catch +000B61E7: cmp [rbp+var_18], 0 +000B61EC: jnz short loc_B6219 +000B61EE: mov rax, [rbp+var_38] +000B61F2: mov rdi, rax +000B61F5: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B61FA: shl rax, 4 +000B61FE: mov rdx, rax +000B6201: mov rax, [rbp+var_28] +000B6205: add rdx, rax +000B6208: mov rax, [rbp+var_38] +000B620C: mov rsi, rdx +000B620F: mov rdi, rax +000B6212: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B6217: jmp short loc_B623B +000B6219: mov rax, [rbp+var_38] +000B621D: mov rdi, rax +000B6220: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6225: mov rdx, rax +000B6228: mov rcx, [rbp+var_18] +000B622C: mov rax, [rbp+var_28] +000B6230: mov rsi, rcx +000B6233: mov rdi, rax +000B6236: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B623B: mov rax, [rbp+var_38] +000B623F: mov rdx, [rbp+var_20] +000B6243: mov rcx, [rbp+var_28] +000B6247: mov rsi, rcx +000B624A: mov rdi, rax +000B624D: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B6252: call ___cxa_rethrow +000B6257: mov rbx, rax +000B625A: call ___cxa_end_catch +000B625F: mov rax, rbx +000B6262: mov rdi, rax; struct _Unwind_Exception * +000B6265: call __Unwind_Resume +000B626A: add rsp, 38h +000B626E: pop rbx +000B626F: pop rbp +000B6270: retn + +### FUNC 000B6271 - 000B62A9 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000B6271: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_' +000B6272: mov rbp, rsp +000B6275: sub rsp, 20h +000B6279: mov [rbp+var_8], rdi +000B627D: mov [rbp+var_10], rsi +000B6281: mov [rbp+var_18], rdx +000B6285: mov rax, [rbp+var_18] +000B6289: mov rdi, rax +000B628C: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B6291: mov rdx, rax +000B6294: mov rcx, [rbp+var_10] +000B6298: mov rax, [rbp+var_8] +000B629C: mov rsi, rcx +000B629F: mov rdi, rax +000B62A2: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JDnEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_; std::allocator_traits>>>>::_S_construct>>,decltype(nullptr)>(std::allocator>>>&,nlohmann::basic_json>>*,decltype(nullptr)&&) +000B62A7: leave +000B62A8: retn + +### FUNC 000B62AA - 000B6493 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJDnEEEvDpOT_ +000B62AA: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(decltype(nullptr) &&)' +000B62AB: mov rbp, rsp +000B62AE: push rbx +000B62AF: sub rsp, 38h +000B62B3: mov [rbp+var_38], rdi +000B62B7: mov [rbp+var_40], rsi +000B62BB: mov rax, [rbp+var_38] +000B62BF: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B62C6: mov esi, 1 +000B62CB: mov rdi, rax +000B62CE: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B62D3: mov [rbp+var_20], rax +000B62D7: mov rax, [rbp+var_38] +000B62DB: mov rdx, [rbp+var_20] +000B62DF: mov rsi, rdx +000B62E2: mov rdi, rax +000B62E5: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B62EA: mov [rbp+var_28], rax +000B62EE: mov rax, [rbp+var_28] +000B62F2: mov [rbp+var_18], rax +000B62F6: mov rax, [rbp+var_40] +000B62FA: mov rdi, rax +000B62FD: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B6302: mov rbx, rax +000B6305: mov rax, [rbp+var_38] +000B6309: mov rdi, rax +000B630C: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6311: shl rax, 4 +000B6315: mov rdx, rax +000B6318: mov rax, [rbp+var_28] +000B631C: lea rcx, [rdx+rax] +000B6320: mov rax, [rbp+var_38] +000B6324: mov rdx, rbx +000B6327: mov rsi, rcx +000B632A: mov rdi, rax +000B632D: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JDnEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSB_ +000B6332: mov [rbp+var_18], 0 +000B633A: mov rax, [rbp+var_38] +000B633E: mov rdi, rax +000B6341: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6346: mov rcx, rax +000B6349: mov rax, [rbp+var_38] +000B634D: mov rsi, [rax+8] +000B6351: mov rax, [rbp+var_38] +000B6355: mov rax, [rax] +000B6358: mov rdx, [rbp+var_28] +000B635C: mov rdi, rax +000B635F: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6364: mov [rbp+var_18], rax +000B6368: add [rbp+var_18], 10h +000B636D: mov rax, [rbp+var_38] +000B6371: mov rdi, rax +000B6374: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6379: mov rdx, rax +000B637C: mov rax, [rbp+var_38] +000B6380: mov rcx, [rax+8] +000B6384: mov rax, [rbp+var_38] +000B6388: mov rax, [rax] +000B638B: mov rsi, rcx +000B638E: mov rdi, rax +000B6391: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6396: mov rax, [rbp+var_38] +000B639A: mov rax, [rax+10h] +000B639E: mov rdx, rax +000B63A1: mov rax, [rbp+var_38] +000B63A5: mov rax, [rax] +000B63A8: sub rdx, rax +000B63AB: mov rax, rdx +000B63AE: sar rax, 4 +000B63B2: mov rdx, rax +000B63B5: mov rax, [rbp+var_38] +000B63B9: mov rcx, [rax] +000B63BC: mov rax, [rbp+var_38] +000B63C0: mov rsi, rcx +000B63C3: mov rdi, rax +000B63C6: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B63CB: mov rax, [rbp+var_38] +000B63CF: mov rdx, [rbp+var_28] +000B63D3: mov [rax], rdx +000B63D6: mov rax, [rbp+var_38] +000B63DA: mov rdx, [rbp+var_18] +000B63DE: mov [rax+8], rdx +000B63E2: mov rax, [rbp+var_20] +000B63E6: shl rax, 4 +000B63EA: mov rdx, rax +000B63ED: mov rax, [rbp+var_28] +000B63F1: add rdx, rax +000B63F4: mov rax, [rbp+var_38] +000B63F8: mov [rax+10h], rdx +000B63FC: jmp loc_B648C +000B6401: mov rdi, rax; void * +000B6404: call ___cxa_begin_catch +000B6409: cmp [rbp+var_18], 0 +000B640E: jnz short loc_B643B +000B6410: mov rax, [rbp+var_38] +000B6414: mov rdi, rax +000B6417: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B641C: shl rax, 4 +000B6420: mov rdx, rax +000B6423: mov rax, [rbp+var_28] +000B6427: add rdx, rax +000B642A: mov rax, [rbp+var_38] +000B642E: mov rsi, rdx +000B6431: mov rdi, rax +000B6434: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B6439: jmp short loc_B645D +000B643B: mov rax, [rbp+var_38] +000B643F: mov rdi, rax +000B6442: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6447: mov rdx, rax +000B644A: mov rcx, [rbp+var_18] +000B644E: mov rax, [rbp+var_28] +000B6452: mov rsi, rcx +000B6455: mov rdi, rax +000B6458: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B645D: mov rax, [rbp+var_38] +000B6461: mov rdx, [rbp+var_20] +000B6465: mov rcx, [rbp+var_28] +000B6469: mov rsi, rcx +000B646C: mov rdi, rax +000B646F: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B6474: call ___cxa_rethrow +000B6479: mov rbx, rax +000B647C: call ___cxa_end_catch +000B6481: mov rax, rbx +000B6484: mov rdi, rax; struct _Unwind_Exception * +000B6487: call __Unwind_Resume +000B648C: add rsp, 38h +000B6490: pop rbx +000B6491: pop rbp +000B6492: retn + +### FUNC 000B6493 - 000B64CB (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6493: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_' +000B6494: mov rbp, rsp +000B6497: sub rsp, 20h +000B649B: mov [rbp+var_8], rdi +000B649F: mov [rbp+var_10], rsi +000B64A3: mov [rbp+var_18], rdx +000B64A7: mov rax, [rbp+var_18] +000B64AB: mov rdi, rax +000B64AE: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B64B3: mov rdx, rax +000B64B6: mov rcx, [rbp+var_10] +000B64BA: mov rax, [rbp+var_8] +000B64BE: mov rsi, rcx +000B64C1: mov rdi, rax +000B64C4: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRlEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_; std::allocator_traits>>>>::_S_construct>>,long &>(std::allocator>>>&,nlohmann::basic_json>>*,long &&&) +000B64C9: leave +000B64CA: retn + +### FUNC 000B64CC - 000B66B5 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRlEEEvDpOT_ +000B64CC: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(long &)' +000B64CD: mov rbp, rsp +000B64D0: push rbx +000B64D1: sub rsp, 38h +000B64D5: mov [rbp+var_38], rdi +000B64D9: mov [rbp+var_40], rsi +000B64DD: mov rax, [rbp+var_38] +000B64E1: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B64E8: mov esi, 1 +000B64ED: mov rdi, rax +000B64F0: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B64F5: mov [rbp+var_20], rax +000B64F9: mov rax, [rbp+var_38] +000B64FD: mov rdx, [rbp+var_20] +000B6501: mov rsi, rdx +000B6504: mov rdi, rax +000B6507: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B650C: mov [rbp+var_28], rax +000B6510: mov rax, [rbp+var_28] +000B6514: mov [rbp+var_18], rax +000B6518: mov rax, [rbp+var_40] +000B651C: mov rdi, rax +000B651F: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B6524: mov rbx, rax +000B6527: mov rax, [rbp+var_38] +000B652B: mov rdi, rax +000B652E: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6533: shl rax, 4 +000B6537: mov rdx, rax +000B653A: mov rax, [rbp+var_28] +000B653E: lea rcx, [rdx+rax] +000B6542: mov rax, [rbp+var_38] +000B6546: mov rdx, rbx +000B6549: mov rsi, rcx +000B654C: mov rdi, rax +000B654F: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRlEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6554: mov [rbp+var_18], 0 +000B655C: mov rax, [rbp+var_38] +000B6560: mov rdi, rax +000B6563: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6568: mov rcx, rax +000B656B: mov rax, [rbp+var_38] +000B656F: mov rsi, [rax+8] +000B6573: mov rax, [rbp+var_38] +000B6577: mov rax, [rax] +000B657A: mov rdx, [rbp+var_28] +000B657E: mov rdi, rax +000B6581: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6586: mov [rbp+var_18], rax +000B658A: add [rbp+var_18], 10h +000B658F: mov rax, [rbp+var_38] +000B6593: mov rdi, rax +000B6596: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B659B: mov rdx, rax +000B659E: mov rax, [rbp+var_38] +000B65A2: mov rcx, [rax+8] +000B65A6: mov rax, [rbp+var_38] +000B65AA: mov rax, [rax] +000B65AD: mov rsi, rcx +000B65B0: mov rdi, rax +000B65B3: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B65B8: mov rax, [rbp+var_38] +000B65BC: mov rax, [rax+10h] +000B65C0: mov rdx, rax +000B65C3: mov rax, [rbp+var_38] +000B65C7: mov rax, [rax] +000B65CA: sub rdx, rax +000B65CD: mov rax, rdx +000B65D0: sar rax, 4 +000B65D4: mov rdx, rax +000B65D7: mov rax, [rbp+var_38] +000B65DB: mov rcx, [rax] +000B65DE: mov rax, [rbp+var_38] +000B65E2: mov rsi, rcx +000B65E5: mov rdi, rax +000B65E8: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B65ED: mov rax, [rbp+var_38] +000B65F1: mov rdx, [rbp+var_28] +000B65F5: mov [rax], rdx +000B65F8: mov rax, [rbp+var_38] +000B65FC: mov rdx, [rbp+var_18] +000B6600: mov [rax+8], rdx +000B6604: mov rax, [rbp+var_20] +000B6608: shl rax, 4 +000B660C: mov rdx, rax +000B660F: mov rax, [rbp+var_28] +000B6613: add rdx, rax +000B6616: mov rax, [rbp+var_38] +000B661A: mov [rax+10h], rdx +000B661E: jmp loc_B66AE +000B6623: mov rdi, rax; void * +000B6626: call ___cxa_begin_catch +000B662B: cmp [rbp+var_18], 0 +000B6630: jnz short loc_B665D +000B6632: mov rax, [rbp+var_38] +000B6636: mov rdi, rax +000B6639: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B663E: shl rax, 4 +000B6642: mov rdx, rax +000B6645: mov rax, [rbp+var_28] +000B6649: add rdx, rax +000B664C: mov rax, [rbp+var_38] +000B6650: mov rsi, rdx +000B6653: mov rdi, rax +000B6656: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B665B: jmp short loc_B667F +000B665D: mov rax, [rbp+var_38] +000B6661: mov rdi, rax +000B6664: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6669: mov rdx, rax +000B666C: mov rcx, [rbp+var_18] +000B6670: mov rax, [rbp+var_28] +000B6674: mov rsi, rcx +000B6677: mov rdi, rax +000B667A: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B667F: mov rax, [rbp+var_38] +000B6683: mov rdx, [rbp+var_20] +000B6687: mov rcx, [rbp+var_28] +000B668B: mov rsi, rcx +000B668E: mov rdi, rax +000B6691: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B6696: call ___cxa_rethrow +000B669B: mov rbx, rax +000B669E: call ___cxa_end_catch +000B66A3: mov rax, rbx +000B66A6: mov rdi, rax; struct _Unwind_Exception * +000B66A9: call __Unwind_Resume +000B66AE: add rsp, 38h +000B66B2: pop rbx +000B66B3: pop rbp +000B66B4: retn + +### FUNC 000B66B5 - 000B66ED (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B66B5: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_' +000B66B6: mov rbp, rsp +000B66B9: sub rsp, 20h +000B66BD: mov [rbp+var_8], rdi +000B66C1: mov [rbp+var_10], rsi +000B66C5: mov [rbp+var_18], rdx +000B66C9: mov rax, [rbp+var_18] +000B66CD: mov rdi, rax +000B66D0: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B66D5: mov rdx, rax +000B66D8: mov rcx, [rbp+var_10] +000B66DC: mov rax, [rbp+var_8] +000B66E0: mov rsi, rcx +000B66E3: mov rdi, rax +000B66E6: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRSsEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_; std::allocator_traits>>>>::_S_construct>>,std::string &>(std::allocator>>>&,nlohmann::basic_json>>*,std::string &&&) +000B66EB: leave +000B66EC: retn + +### FUNC 000B66EE - 000B68D7 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRSsEEEvDpOT_ +000B66EE: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(std::string &)' +000B66EF: mov rbp, rsp +000B66F2: push rbx +000B66F3: sub rsp, 38h +000B66F7: mov [rbp+var_38], rdi +000B66FB: mov [rbp+var_40], rsi +000B66FF: mov rax, [rbp+var_38] +000B6703: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B670A: mov esi, 1 +000B670F: mov rdi, rax +000B6712: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B6717: mov [rbp+var_20], rax +000B671B: mov rax, [rbp+var_38] +000B671F: mov rdx, [rbp+var_20] +000B6723: mov rsi, rdx +000B6726: mov rdi, rax +000B6729: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B672E: mov [rbp+var_28], rax +000B6732: mov rax, [rbp+var_28] +000B6736: mov [rbp+var_18], rax +000B673A: mov rax, [rbp+var_40] +000B673E: mov rdi, rax +000B6741: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B6746: mov rbx, rax +000B6749: mov rax, [rbp+var_38] +000B674D: mov rdi, rax +000B6750: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6755: shl rax, 4 +000B6759: mov rdx, rax +000B675C: mov rax, [rbp+var_28] +000B6760: lea rcx, [rdx+rax] +000B6764: mov rax, [rbp+var_38] +000B6768: mov rdx, rbx +000B676B: mov rsi, rcx +000B676E: mov rdi, rax +000B6771: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6776: mov [rbp+var_18], 0 +000B677E: mov rax, [rbp+var_38] +000B6782: mov rdi, rax +000B6785: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B678A: mov rcx, rax +000B678D: mov rax, [rbp+var_38] +000B6791: mov rsi, [rax+8] +000B6795: mov rax, [rbp+var_38] +000B6799: mov rax, [rax] +000B679C: mov rdx, [rbp+var_28] +000B67A0: mov rdi, rax +000B67A3: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B67A8: mov [rbp+var_18], rax +000B67AC: add [rbp+var_18], 10h +000B67B1: mov rax, [rbp+var_38] +000B67B5: mov rdi, rax +000B67B8: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B67BD: mov rdx, rax +000B67C0: mov rax, [rbp+var_38] +000B67C4: mov rcx, [rax+8] +000B67C8: mov rax, [rbp+var_38] +000B67CC: mov rax, [rax] +000B67CF: mov rsi, rcx +000B67D2: mov rdi, rax +000B67D5: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B67DA: mov rax, [rbp+var_38] +000B67DE: mov rax, [rax+10h] +000B67E2: mov rdx, rax +000B67E5: mov rax, [rbp+var_38] +000B67E9: mov rax, [rax] +000B67EC: sub rdx, rax +000B67EF: mov rax, rdx +000B67F2: sar rax, 4 +000B67F6: mov rdx, rax +000B67F9: mov rax, [rbp+var_38] +000B67FD: mov rcx, [rax] +000B6800: mov rax, [rbp+var_38] +000B6804: mov rsi, rcx +000B6807: mov rdi, rax +000B680A: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B680F: mov rax, [rbp+var_38] +000B6813: mov rdx, [rbp+var_28] +000B6817: mov [rax], rdx +000B681A: mov rax, [rbp+var_38] +000B681E: mov rdx, [rbp+var_18] +000B6822: mov [rax+8], rdx +000B6826: mov rax, [rbp+var_20] +000B682A: shl rax, 4 +000B682E: mov rdx, rax +000B6831: mov rax, [rbp+var_28] +000B6835: add rdx, rax +000B6838: mov rax, [rbp+var_38] +000B683C: mov [rax+10h], rdx +000B6840: jmp loc_B68D0 +000B6845: mov rdi, rax; void * +000B6848: call ___cxa_begin_catch +000B684D: cmp [rbp+var_18], 0 +000B6852: jnz short loc_B687F +000B6854: mov rax, [rbp+var_38] +000B6858: mov rdi, rax +000B685B: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6860: shl rax, 4 +000B6864: mov rdx, rax +000B6867: mov rax, [rbp+var_28] +000B686B: add rdx, rax +000B686E: mov rax, [rbp+var_38] +000B6872: mov rsi, rdx +000B6875: mov rdi, rax +000B6878: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B687D: jmp short loc_B68A1 +000B687F: mov rax, [rbp+var_38] +000B6883: mov rdi, rax +000B6886: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B688B: mov rdx, rax +000B688E: mov rcx, [rbp+var_18] +000B6892: mov rax, [rbp+var_28] +000B6896: mov rsi, rcx +000B6899: mov rdi, rax +000B689C: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B68A1: mov rax, [rbp+var_38] +000B68A5: mov rdx, [rbp+var_20] +000B68A9: mov rcx, [rbp+var_28] +000B68AD: mov rsi, rcx +000B68B0: mov rdi, rax +000B68B3: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B68B8: call ___cxa_rethrow +000B68BD: mov rbx, rax +000B68C0: call ___cxa_end_catch +000B68C5: mov rax, rbx +000B68C8: mov rdi, rax; struct _Unwind_Exception * +000B68CB: call __Unwind_Resume +000B68D0: add rsp, 38h +000B68D4: pop rbx +000B68D5: pop rbp +000B68D6: retn + +### FUNC 000B68D7 - 000B690F (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B68D7: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_IRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_' +000B68D8: mov rbp, rsp +000B68DB: sub rsp, 20h +000B68DF: mov [rbp+var_8], rdi +000B68E3: mov [rbp+var_10], rsi +000B68E7: mov [rbp+var_18], rdx +000B68EB: mov rax, [rbp+var_18] +000B68EF: mov rdi, rax +000B68F2: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B68F7: mov rdx, rax +000B68FA: mov rcx, [rbp+var_10] +000B68FE: mov rax, [rbp+var_8] +000B6902: mov rsi, rcx +000B6905: mov rdi, rax +000B6908: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRmEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_; std::allocator_traits>>>>::_S_construct>>,ulong &>(std::allocator>>>&,nlohmann::basic_json>>*,ulong &&&) +000B690D: leave +000B690E: retn + +### FUNC 000B6910 - 000B6AF9 (489 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE19_M_emplace_back_auxIJRmEEEvDpOT_ +000B6910: push rbp; Alternative name is 'void std::vector>>, std::allocator>>>>::_M_emplace_back_aux(unsigned long &)' +000B6911: mov rbp, rsp +000B6914: push rbx +000B6915: sub rsp, 38h +000B6919: mov [rbp+var_38], rdi +000B691D: mov [rbp+var_40], rsi +000B6921: mov rax, [rbp+var_38] +000B6925: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B692C: mov esi, 1 +000B6931: mov rdi, rax +000B6934: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE12_M_check_lenEmPKc; std::vector>>,std::allocator>>>>::_M_check_len(ulong,char const*) +000B6939: mov [rbp+var_20], rax +000B693D: mov rax, [rbp+var_38] +000B6941: mov rdx, [rbp+var_20] +000B6945: mov rsi, rdx +000B6948: mov rdi, rax +000B694B: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B6950: mov [rbp+var_28], rax +000B6954: mov rax, [rbp+var_28] +000B6958: mov [rbp+var_18], rax +000B695C: mov rax, [rbp+var_40] +000B6960: mov rdi, rax +000B6963: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B6968: mov rbx, rax +000B696B: mov rax, [rbp+var_38] +000B696F: mov rdi, rax +000B6972: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6977: shl rax, 4 +000B697B: mov rdx, rax +000B697E: mov rax, [rbp+var_28] +000B6982: lea rcx, [rdx+rax] +000B6986: mov rax, [rbp+var_38] +000B698A: mov rdx, rbx +000B698D: mov rsi, rcx +000B6990: mov rdi, rax +000B6993: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9constructIS7_JRmEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS8_PT_DpOSC_ +000B6998: mov [rbp+var_18], 0 +000B69A0: mov rax, [rbp+var_38] +000B69A4: mov rdi, rax +000B69A7: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B69AC: mov rcx, rax +000B69AF: mov rax, [rbp+var_38] +000B69B3: mov rsi, [rax+8] +000B69B7: mov rax, [rbp+var_38] +000B69BB: mov rax, [rax] +000B69BE: mov rdx, [rbp+var_28] +000B69C2: mov rdi, rax +000B69C5: call __ZSt34__uninitialized_move_if_noexcept_aIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_SaIS7_EET0_T_SB_SA_RT1_; std::__uninitialized_move_if_noexcept_a>> *,nlohmann::basic_json>> *,std::allocator>>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B69CA: mov [rbp+var_18], rax +000B69CE: add [rbp+var_18], 10h +000B69D3: mov rax, [rbp+var_38] +000B69D7: mov rdi, rax +000B69DA: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B69DF: mov rdx, rax +000B69E2: mov rax, [rbp+var_38] +000B69E6: mov rcx, [rax+8] +000B69EA: mov rax, [rbp+var_38] +000B69EE: mov rax, [rax] +000B69F1: mov rsi, rcx +000B69F4: mov rdi, rax +000B69F7: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B69FC: mov rax, [rbp+var_38] +000B6A00: mov rax, [rax+10h] +000B6A04: mov rdx, rax +000B6A07: mov rax, [rbp+var_38] +000B6A0B: mov rax, [rax] +000B6A0E: sub rdx, rax +000B6A11: mov rax, rdx +000B6A14: sar rax, 4 +000B6A18: mov rdx, rax +000B6A1B: mov rax, [rbp+var_38] +000B6A1F: mov rcx, [rax] +000B6A22: mov rax, [rbp+var_38] +000B6A26: mov rsi, rcx +000B6A29: mov rdi, rax +000B6A2C: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B6A31: mov rax, [rbp+var_38] +000B6A35: mov rdx, [rbp+var_28] +000B6A39: mov [rax], rdx +000B6A3C: mov rax, [rbp+var_38] +000B6A40: mov rdx, [rbp+var_18] +000B6A44: mov [rax+8], rdx +000B6A48: mov rax, [rbp+var_20] +000B6A4C: shl rax, 4 +000B6A50: mov rdx, rax +000B6A53: mov rax, [rbp+var_28] +000B6A57: add rdx, rax +000B6A5A: mov rax, [rbp+var_38] +000B6A5E: mov [rax+10h], rdx +000B6A62: jmp loc_B6AF2 +000B6A67: mov rdi, rax; void * +000B6A6A: call ___cxa_begin_catch +000B6A6F: cmp [rbp+var_18], 0 +000B6A74: jnz short loc_B6AA1 +000B6A76: mov rax, [rbp+var_38] +000B6A7A: mov rdi, rax +000B6A7D: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6A82: shl rax, 4 +000B6A86: mov rdx, rax +000B6A89: mov rax, [rbp+var_28] +000B6A8D: add rdx, rax +000B6A90: mov rax, [rbp+var_38] +000B6A94: mov rsi, rdx +000B6A97: mov rdi, rax +000B6A9A: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE7destroyIS7_EEvRS8_PT_; std::allocator_traits>>>>::destroy>>>(std::allocator>>>&,nlohmann::basic_json>> *) +000B6A9F: jmp short loc_B6AC3 +000B6AA1: mov rax, [rbp+var_38] +000B6AA5: mov rdi, rax +000B6AA8: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6AAD: mov rdx, rax +000B6AB0: mov rcx, [rbp+var_18] +000B6AB4: mov rax, [rbp+var_28] +000B6AB8: mov rsi, rcx +000B6ABB: mov rdi, rax +000B6ABE: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES7_EvT_S9_RSaIT0_E; std::_Destroy>> *,nlohmann::basic_json>>>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,std::allocator>>> &) +000B6AC3: mov rax, [rbp+var_38] +000B6AC7: mov rdx, [rbp+var_20] +000B6ACB: mov rcx, [rbp+var_28] +000B6ACF: mov rsi, rcx +000B6AD2: mov rdi, rax +000B6AD5: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE13_M_deallocateEPS7_m; std::_Vector_base>>,std::allocator>>>>::_M_deallocate(nlohmann::basic_json>>*,ulong) +000B6ADA: call ___cxa_rethrow +000B6ADF: mov rbx, rax +000B6AE2: call ___cxa_end_catch +000B6AE7: mov rax, rbx +000B6AEA: mov rdi, rax; struct _Unwind_Exception * +000B6AED: call __Unwind_Resume +000B6AF2: add rsp, 38h +000B6AF6: pop rbx +000B6AF7: pop rbp +000B6AF8: retn + +### FUNC 000B6AF9 - 000B6B13 (26 bytes) name=_ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_ +000B6AF9: push rbp +000B6AFA: mov rbp, rsp +000B6AFD: sub rsp, 10h +000B6B01: mov [rbp+var_8], rdi +000B6B05: mov rax, [rbp+var_8] +000B6B09: mov rdi, rax +000B6B0C: call __ZNSt10_Iter_baseIP19struct_TerminalListLb0EE7_S_baseES1_; std::_Iter_base::_S_base(struct_TerminalList *) +000B6B11: leave +000B6B12: retn + +### FUNC 000B6B13 - 000B6B88 (117 bytes) name=_ZSt10__fill_n_aIP19struct_TerminalListmS0_EN9__gnu_cxx11__enable_ifIXntsrSt11__is_scalarIT1_E7__valueET_E6__typeES7_T0_RKS5_ +000B6B13: push rbp +000B6B14: mov rbp, rsp +000B6B17: mov [rbp+var_18], rdi +000B6B1B: mov [rbp+var_20], rsi +000B6B1F: mov [rbp+var_28], rdx +000B6B23: mov rax, [rbp+var_20] +000B6B27: mov [rbp+var_8], rax +000B6B2B: jmp short loc_B6B7B +000B6B2D: mov rax, [rbp+var_18] +000B6B31: mov rdx, [rbp+var_28] +000B6B35: mov rcx, [rdx] +000B6B38: mov [rax], rcx +000B6B3B: mov rcx, [rdx+8] +000B6B3F: mov [rax+8], rcx +000B6B43: mov rcx, [rdx+10h] +000B6B47: mov [rax+10h], rcx +000B6B4B: mov rcx, [rdx+18h] +000B6B4F: mov [rax+18h], rcx +000B6B53: mov rcx, [rdx+20h] +000B6B57: mov [rax+20h], rcx +000B6B5B: mov rcx, [rdx+28h] +000B6B5F: mov [rax+28h], rcx +000B6B63: mov rcx, [rdx+30h] +000B6B67: mov [rax+30h], rcx +000B6B6B: mov edx, [rdx+38h] +000B6B6E: mov [rax+38h], edx +000B6B71: sub [rbp+var_8], 1 +000B6B76: add [rbp+var_18], 3Ch ; '<' +000B6B7B: cmp [rbp+var_8], 0 +000B6B80: jnz short loc_B6B2D +000B6B82: mov rax, [rbp+var_18] +000B6B86: pop rbp +000B6B87: retn + +### FUNC 000B6B88 - 000B6BCE (70 bytes) name=_ZSt4copyISt13move_iteratorIP19struct_TerminalListES2_ET0_T_S5_S4_ +000B6B88: push rbp +000B6B89: mov rbp, rsp +000B6B8C: push rbx +000B6B8D: sub rsp, 28h +000B6B91: mov [rbp+var_20], rdi +000B6B95: mov [rbp+var_30], rsi +000B6B99: mov [rbp+var_28], rdx +000B6B9D: mov rax, [rbp+var_30] +000B6BA1: mov rdi, rax +000B6BA4: call __ZSt12__miter_baseISt13move_iteratorIP19struct_TerminalListEENSt11_Miter_baseIT_E13iterator_typeES5_; std::__miter_base>(std::move_iterator) +000B6BA9: mov rbx, rax +000B6BAC: mov rax, [rbp+var_20] +000B6BB0: mov rdi, rax +000B6BB3: call __ZSt12__miter_baseISt13move_iteratorIP19struct_TerminalListEENSt11_Miter_baseIT_E13iterator_typeES5_; std::__miter_base>(std::move_iterator) +000B6BB8: mov rdx, [rbp+var_28] +000B6BBC: mov rsi, rbx +000B6BBF: mov rdi, rax +000B6BC2: call __ZSt14__copy_move_a2ILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_; std::__copy_move_a2(struct_TerminalList *,struct_TerminalList *,struct_TerminalList *) +000B6BC7: add rsp, 28h +000B6BCB: pop rbx +000B6BCC: pop rbp +000B6BCD: retn + +### FUNC 000B6BCE - 000B6BE2 (20 bytes) name=_ZN9__gnu_cxx11char_traitsIhE11to_int_typeERKh +000B6BCE: push rbp +000B6BCF: mov rbp, rsp +000B6BD2: mov [rbp+var_8], rdi +000B6BD6: mov rax, [rbp+var_8] +000B6BDA: movzx eax, byte ptr [rax] +000B6BDD: movzx eax, al +000B6BE0: pop rbp +000B6BE1: retn + +### FUNC 000B6BE2 - 000B6C3C (90 bytes) name=_ZN8nlohmann6detail22iterator_input_adapterIPhE13get_characterEv +000B6BE2: push rbp +000B6BE3: mov rbp, rsp +000B6BE6: sub rsp, 20h +000B6BEA: mov [rbp+var_18], rdi +000B6BEE: mov rax, [rbp+var_18] +000B6BF2: mov rdx, [rax] +000B6BF5: mov rax, [rbp+var_18] +000B6BF9: mov rax, [rax+8] +000B6BFD: cmp rdx, rax +000B6C00: setnz al +000B6C03: movzx eax, al +000B6C06: test rax, rax +000B6C09: jz short loc_B6C35 +000B6C0B: mov rax, [rbp+var_18] +000B6C0F: mov rax, [rax] +000B6C12: mov rdi, rax +000B6C15: call __ZN9__gnu_cxx11char_traitsIhE11to_int_typeERKh; __gnu_cxx::char_traits::to_int_type(uchar const&) +000B6C1A: mov [rbp+var_8], rax +000B6C1E: mov rax, [rbp+var_18] +000B6C22: mov esi, 1 +000B6C27: mov rdi, rax +000B6C2A: call __ZSt7advanceIPhiEvRT_T0_; std::advance(uchar * &,int) +000B6C2F: mov rax, [rbp+var_8] +000B6C33: jmp short locret_B6C3A +000B6C35: call __ZN9__gnu_cxx11char_traitsIhE3eofEv; __gnu_cxx::char_traits::eof(void) +000B6C3A: leave +000B6C3B: retn + +### FUNC 000B6C3C - 000B6C4A (14 bytes) name=_ZSt4moveIRhEONSt16remove_referenceIT_E4typeEOS2_ +000B6C3C: push rbp +000B6C3D: mov rbp, rsp +000B6C40: mov [rbp+var_8], rdi +000B6C44: mov rax, [rbp+var_8] +000B6C48: pop rbp +000B6C49: retn + +### FUNC 000B6C4A - 000B6C7A (48 bytes) name=_ZNSt6vectorIhSaIhEE9push_backEOh +000B6C4A: push rbp +000B6C4B: mov rbp, rsp +000B6C4E: sub rsp, 10h +000B6C52: mov [rbp+var_8], rdi +000B6C56: mov [rbp+var_10], rsi +000B6C5A: mov rax, [rbp+var_10] +000B6C5E: mov rdi, rax +000B6C61: call __ZSt4moveIRhEONSt16remove_referenceIT_E4typeEOS2_; std::move(uchar &&&) +000B6C66: mov rdx, rax +000B6C69: mov rax, [rbp+var_8] +000B6C6D: mov rsi, rdx +000B6C70: mov rdi, rax +000B6C73: call __ZNSt6vectorIhSaIhEE12emplace_backIJhEEEvDpOT_; std::vector>::emplace_back(uchar &&) +000B6C78: leave +000B6C79: retn + +### FUNC 000B6C7A - 000B6CBB (65 bytes) name=_ZNKSt6vectorIhSaIhEE5emptyEv +000B6C7A: push rbp +000B6C7B: mov rbp, rsp +000B6C7E: sub rsp, 30h +000B6C82: mov [rbp+var_28], rdi +000B6C86: mov rax, [rbp+var_28] +000B6C8A: mov rdi, rax +000B6C8D: call __ZNKSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +000B6C92: mov [rbp+var_20], rax +000B6C96: mov rax, [rbp+var_28] +000B6C9A: mov rdi, rax +000B6C9D: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000B6CA2: mov [rbp+var_10], rax +000B6CA6: lea rdx, [rbp+var_20] +000B6CAA: lea rax, [rbp+var_10] +000B6CAE: mov rsi, rdx +000B6CB1: mov rdi, rax +000B6CB4: call __ZN9__gnu_cxxeqIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_; __gnu_cxx::operator==>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000B6CB9: leave +000B6CBA: retn + +### FUNC 000B6CBC - 000B6CF5 (57 bytes) name=_ZNSt6vectorIhSaIhEE8pop_backEv +000B6CBC: push rbp +000B6CBD: mov rbp, rsp +000B6CC0: sub rsp, 10h +000B6CC4: mov [rbp+var_8], rdi +000B6CC8: mov rax, [rbp+var_8] +000B6CCC: mov rax, [rax+8] +000B6CD0: lea rdx, [rax-1] +000B6CD4: mov rax, [rbp+var_8] +000B6CD8: mov [rax+8], rdx +000B6CDC: mov rax, [rbp+var_8] +000B6CE0: mov rdx, [rax+8] +000B6CE4: mov rax, [rbp+var_8] +000B6CE8: mov rsi, rdx +000B6CEB: mov rdi, rax +000B6CEE: call __ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,uchar *) +000B6CF3: leave +000B6CF4: retn + +### FUNC 000B6CF6 - 000B6D10 (26 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2Ev +000B6CF6: push rbp; Alternative name is 'std::map>>, std::less, std::allocator>>>>>::map(void)' +000B6CF7: mov rbp, rsp +000B6CFA: sub rsp, 10h +000B6CFE: mov [rbp+var_8], rdi +000B6D02: mov rax, [rbp+var_8] +000B6D06: mov rdi, rax +000B6D09: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2Ev; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree(void) +000B6D0E: leave +000B6D0F: retn + +### FUNC 000B6D10 - 000B6D3A (42 bytes) name=_ZN8nlohmann27byte_container_with_subtypeISt6vectorIhSaIhEEEC2Ev +000B6D10: push rbp; Alternative name is 'nlohmann::byte_container_with_subtype>>::byte_container_with_subtype(void)' +000B6D11: mov rbp, rsp +000B6D14: sub rsp, 10h +000B6D18: mov [rbp+var_8], rdi +000B6D1C: mov rax, [rbp+var_8] +000B6D20: mov rdi, rax +000B6D23: call __ZNSt6vectorIhSaIhEEC2Ev; std::vector>::vector(void) +000B6D28: mov rax, [rbp+var_8] +000B6D2C: mov byte ptr [rax+18h], 0 +000B6D30: mov rax, [rbp+var_8] +000B6D34: mov byte ptr [rax+19h], 0 +000B6D38: leave +000B6D39: retn + +### FUNC 000B6D3A - 000B6D4E (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE8max_sizeEv +000B6D3A: push rbp +000B6D3B: mov rbp, rsp +000B6D3E: mov [rbp+var_8], rdi +000B6D42: mov rax, 492492492492492h +000B6D4C: pop rbp +000B6D4D: retn + +### FUNC 000B6D4E - 000B6DF6 (168 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJOSsEESJ_IJEEEEEvPT_DpOT0_ +000B6D4E: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_IRKSt21piecewise_construct_tSt5tupleIIOSsEESJ_IIEEEEEvPT_DpOT0_' +000B6D4F: mov rbp, rsp +000B6D52: push r15 +000B6D54: push r14 +000B6D56: push r13 +000B6D58: push r12 +000B6D5A: push rbx +000B6D5B: sub rsp, 38h +000B6D5F: mov [rbp+var_38], rdi +000B6D63: mov [rbp+var_40], rsi +000B6D67: mov [rbp+var_48], rdx +000B6D6B: mov [rbp+var_50], rcx +000B6D6F: mov [rbp+var_58], r8 +000B6D73: mov rax, [rbp+var_48] +000B6D77: mov rdi, rax +000B6D7A: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B6D7F: mov r13, rax +000B6D82: mov rax, [rbp+var_50] +000B6D86: mov rdi, rax +000B6D89: call __ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward>(std::remove_reference>::type &) +000B6D8E: mov r14, rax +000B6D91: mov rax, [rbp+var_58] +000B6D95: mov rdi, rax +000B6D98: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B6D9D: mov r15, rax +000B6DA0: mov r12, [rbp+var_40] +000B6DA4: mov rsi, r12; void * +000B6DA7: mov edi, 38h ; '8'; unsigned __int64 +000B6DAC: call __ZnwmPv; operator new(ulong,void *) +000B6DB1: mov rbx, rax +000B6DB4: test rbx, rbx +000B6DB7: jz short loc_B6DCC +000B6DB9: mov rcx, r15 +000B6DBC: mov rdx, r14 +000B6DBF: mov rsi, r13 +000B6DC2: mov rdi, rbx +000B6DC5: call __ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJOSsEESG_IJEEEEEDpOT_; std::_Rb_tree_node>>>>::_Rb_tree_node,std::tuple<>>() +000B6DCA: jmp short loc_B6DE7 +000B6DCC: jmp short loc_B6DE7 +000B6DCE: mov r13, rax +000B6DD1: mov rsi, r12; void * +000B6DD4: mov rdi, rbx; void * +000B6DD7: call __ZdlPvS_; operator delete(void *,void *) +000B6DDC: mov rax, r13 +000B6DDF: mov rdi, rax; struct _Unwind_Exception * +000B6DE2: call __Unwind_Resume +000B6DE7: add rsp, 38h +000B6DEB: pop rbx +000B6DEC: pop r12 +000B6DEE: pop r13 +000B6DF0: pop r14 +000B6DF2: pop r15 +000B6DF4: pop rbp +000B6DF5: retn + +### FUNC 000B6DF6 - 000B6E1B (37 bytes) name=_ZNSt3mapISsN8nlohmann10basic_jsonIS_St6vectorSsblmdSaNS0_14adl_serializerES2_IhSaIhEEEESt4lessISsESaISt4pairIKSsS6_EEEC2ERKSD_ +000B6DF6: push rbp; Alternative name is 'std::map>>, std::less, std::allocator>>>>>::map(std::map>>, std::less, std::allocator>>>>> const&)' +000B6DF7: mov rbp, rsp +000B6DFA: sub rsp, 10h +000B6DFE: mov [rbp+var_8], rdi +000B6E02: mov [rbp+var_10], rsi +000B6E06: mov rdx, [rbp+var_10] +000B6E0A: mov rax, [rbp+var_8] +000B6E0E: mov rsi, rdx +000B6E11: mov rdi, rax +000B6E14: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2ERKSG_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree(std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>> const&) +000B6E19: leave +000B6E1A: retn + +### FUNC 000B6E1C - 000B6F08 (236 bytes) name=_ZNSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EEC2ERKS8_ +000B6E1C: push rbp; Alternative name is 'std::vector>>, std::allocator>>>>::vector(std::vector>>, std::allocator>>>> const&)' +000B6E1D: mov rbp, rsp +000B6E20: push r13 +000B6E22: push r12 +000B6E24: push rbx +000B6E25: sub rsp, 28h +000B6E29: mov [rbp+var_38], rdi +000B6E2D: mov [rbp+var_40], rsi +000B6E31: mov rax, [rbp+var_40] +000B6E35: mov rdi, rax +000B6E38: call __ZNKSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6E3D: mov rdx, rax +000B6E40: lea rax, [rbp+var_21] +000B6E44: mov rsi, rdx +000B6E47: mov rdi, rax +000B6E4A: call __ZN9__gnu_cxx14__alloc_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEE17_S_select_on_copyERKS9_; __gnu_cxx::__alloc_traits>>>>::_S_select_on_copy(std::allocator>>> const&) +000B6E4F: mov rax, [rbp+var_40] +000B6E53: mov rdi, rax +000B6E56: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE4sizeEv; std::vector>>,std::allocator>>>>::size(void) +000B6E5B: mov rcx, rax +000B6E5E: mov rax, [rbp+var_38] +000B6E62: lea rdx, [rbp+var_21] +000B6E66: mov rsi, rcx +000B6E69: mov rdi, rax +000B6E6C: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2EmRKS8_; std::_Vector_base>>,std::allocator>>>>::_Vector_base(ulong,std::allocator>>> const&) +000B6E71: lea rax, [rbp+var_21] +000B6E75: mov rdi, rax +000B6E78: call __ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000B6E7D: mov rax, [rbp+var_38] +000B6E81: mov rdi, rax +000B6E84: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE19_M_get_Tp_allocatorEv; std::_Vector_base>>,std::allocator>>>>::_M_get_Tp_allocator(void) +000B6E89: mov r13, rax +000B6E8C: mov rax, [rbp+var_38] +000B6E90: mov r12, [rax] +000B6E93: mov rax, [rbp+var_40] +000B6E97: mov rdi, rax +000B6E9A: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE3endEv; std::vector>>,std::allocator>>>>::end(void) +000B6E9F: mov rbx, rax +000B6EA2: mov rax, [rbp+var_40] +000B6EA6: mov rdi, rax +000B6EA9: call __ZNKSt6vectorIN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS6_EE5beginEv; std::vector>>,std::allocator>>>>::begin(void) +000B6EAE: mov rcx, r13 +000B6EB1: mov rdx, r12 +000B6EB4: mov rsi, rbx +000B6EB7: mov rdi, rax +000B6EBA: call __ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_S9_ET0_T_SH_SG_RSaIT1_E; std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,nlohmann::basic_json>>*,nlohmann::basic_json>>>(__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,nlohmann::basic_json>>*,std::allocator>>> &) +000B6EBF: mov rdx, [rbp+var_38] +000B6EC3: mov [rdx+8], rax +000B6EC7: jmp short loc_B6EFD +000B6EC9: mov rbx, rax +000B6ECC: lea rax, [rbp+var_21] +000B6ED0: mov rdi, rax +000B6ED3: call __ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEED2Ev; std::allocator>>>::~allocator() +000B6ED8: mov rax, rbx +000B6EDB: mov rdi, rax; struct _Unwind_Exception * +000B6EDE: call __Unwind_Resume +000B6EE3: mov rbx, rax +000B6EE6: mov rax, [rbp+var_38] +000B6EEA: mov rdi, rax +000B6EED: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EED2Ev; std::_Vector_base>>,std::allocator>>>>::~_Vector_base() +000B6EF2: mov rax, rbx +000B6EF5: mov rdi, rax; struct _Unwind_Exception * +000B6EF8: call __Unwind_Resume +000B6EFD: add rsp, 28h +000B6F01: pop rbx +000B6F02: pop r12 +000B6F04: pop r13 +000B6F06: pop rbp +000B6F07: retn + +### FUNC 000B6F08 - 000B6F31 (41 bytes) name=_ZNKSt8equal_toISsEclERKSsS2_ +000B6F08: push rbp +000B6F09: mov rbp, rsp +000B6F0C: sub rsp, 20h +000B6F10: mov [rbp+var_8], rdi +000B6F14: mov [rbp+var_10], rsi +000B6F18: mov [rbp+var_18], rdx +000B6F1C: mov rdx, [rbp+var_18] +000B6F20: mov rax, [rbp+var_10] +000B6F24: mov rsi, rdx +000B6F27: mov rdi, rax +000B6F2A: call __ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_; std::operator==(std::basic_string,std::allocator> const&,std::basic_string,std::allocator> const&) +000B6F2F: leave +000B6F30: retn + +### FUNC 000B6F31 - 000B6F3F (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toISsELb1EE7_S_cgetERKS3_ +000B6F31: push rbp +000B6F32: mov rbp, rsp +000B6F35: mov [rbp+var_8], rdi +000B6F39: mov rax, [rbp+var_8] +000B6F3D: pop rbp +000B6F3E: retn + +### FUNC 000B6F3F - 000B6F4D (14 bytes) name=_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_S_cgetERKS2_ +000B6F3F: push rbp +000B6F40: mov rbp, rsp +000B6F43: mov [rbp+var_8], rdi +000B6F47: mov rax, [rbp+var_8] +000B6F4B: pop rbp +000B6F4C: retn + +### FUNC 000B6F4D - 000B6F67 (26 bytes) name=_ZSt12__get_helperILm0ERKSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000B6F4D: push rbp; Alternative name is '_ZSt12__get_helperILm0ERKSsIEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EIS3_DpT1_EE' +000B6F4E: mov rbp, rsp +000B6F51: sub rsp, 10h +000B6F55: mov [rbp+var_8], rdi +000B6F59: mov rax, [rbp+var_8] +000B6F5D: mov rdi, rax +000B6F60: call __ZNSt11_Tuple_implILm0EJRKSsEE7_M_headERS2_; std::_Tuple_impl<0ul,std::string const&>::_M_head(std::_Tuple_impl<0ul,std::string const&>&) +000B6F65: leave +000B6F66: retn + +### FUNC 000B6F67 - 000B6F81 (26 bytes) name=_ZSt3getILm0EJRKSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS7_ +000B6F67: push rbp; Alternative name is 'std::__add_ref>::type>::type std::get<0ul, std::string const&>(std::tuple&)' +000B6F68: mov rbp, rsp +000B6F6B: sub rsp, 10h +000B6F6F: mov [rbp+var_8], rdi +000B6F73: mov rax, [rbp+var_8] +000B6F77: mov rdi, rax +000B6F7A: call __ZSt12__get_helperILm0ERKSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000B6F7F: leave +000B6F80: retn + +### FUNC 000B6F82 - 000B6FC9 (71 bytes) name=_ZNSt4pairIKSsiEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERS4_IJDpT1_EESt12_Index_tupleIJXspT0_EEESD_IJXspT2_EEE +000B6F82: push rbp; Alternative name is '_ZNSt4pairIKSsiEC2IIRS0_EILm0EEIEIEEERSt5tupleIIDpT_EERS4_IIDpT1_EESt12_Index_tupleIIXspT0_EEESD_IIXspT2_EEE' +000B6F83: mov rbp, rsp +000B6F86: sub rsp, 20h +000B6F8A: mov [rbp+var_8], rdi +000B6F8E: mov [rbp+var_10], rsi +000B6F92: mov [rbp+var_18], rdx +000B6F96: mov rax, [rbp+var_10] +000B6F9A: mov rdi, rax +000B6F9D: call __ZSt3getILm0EJRKSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS7_; std::get<0ul,std::string const&>(std::tuple&) +000B6FA2: mov rdi, rax +000B6FA5: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000B6FAA: mov rdx, rax +000B6FAD: mov rax, [rbp+var_8] +000B6FB1: mov rsi, rdx; std::string * +000B6FB4: mov rdi, rax; this +000B6FB7: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000B6FBC: mov rax, [rbp+var_8] +000B6FC0: mov dword ptr [rax+8], 0 +000B6FC7: leave +000B6FC8: retn + +### FUNC 000B6FC9 - 000B700F (70 bytes) name=_ZSt4copyISt13move_iteratorIPiES1_ET0_T_S4_S3_ +000B6FC9: push rbp +000B6FCA: mov rbp, rsp +000B6FCD: push rbx +000B6FCE: sub rsp, 28h +000B6FD2: mov [rbp+var_20], rdi +000B6FD6: mov [rbp+var_30], rsi +000B6FDA: mov [rbp+var_28], rdx +000B6FDE: mov rax, [rbp+var_30] +000B6FE2: mov rdi, rax +000B6FE5: call __ZSt12__miter_baseISt13move_iteratorIPiEENSt11_Miter_baseIT_E13iterator_typeES4_; std::__miter_base>(std::move_iterator) +000B6FEA: mov rbx, rax +000B6FED: mov rax, [rbp+var_20] +000B6FF1: mov rdi, rax +000B6FF4: call __ZSt12__miter_baseISt13move_iteratorIPiEENSt11_Miter_baseIT_E13iterator_typeES4_; std::__miter_base>(std::move_iterator) +000B6FF9: mov rdx, [rbp+var_28] +000B6FFD: mov rsi, rbx +000B7000: mov rdi, rax +000B7003: call __ZSt14__copy_move_a2ILb1EPiS0_ET1_T0_S2_S1_; std::__copy_move_a2(int *,int *,int *) +000B7008: add rsp, 28h +000B700C: pop rbx +000B700D: pop rbp +000B700E: retn + +### FUNC 000B700F - 000B7037 (40 bytes) name=_ZStneIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +000B700F: push rbp +000B7010: mov rbp, rsp +000B7013: sub rsp, 10h +000B7017: mov [rbp+var_8], rdi +000B701B: mov [rbp+var_10], rsi +000B701F: mov rdx, [rbp+var_10] +000B7023: mov rax, [rbp+var_8] +000B7027: mov rsi, rdx +000B702A: mov rdi, rax +000B702D: call __ZSteqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_; std::operator==>> *>(std::move_iterator>> *> const&,std::move_iterator>> *> const&) +000B7032: xor eax, 1 +000B7035: leave +000B7036: retn + +### FUNC 000B7038 - 000B7058 (32 bytes) name=_ZNSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEppEv +000B7038: push rbp +000B7039: mov rbp, rsp +000B703C: mov [rbp+var_8], rdi +000B7040: mov rax, [rbp+var_8] +000B7044: mov rax, [rax] +000B7047: lea rdx, [rax+10h] +000B704B: mov rax, [rbp+var_8] +000B704F: mov [rax], rdx +000B7052: mov rax, [rbp+var_8] +000B7056: pop rbp +000B7057: retn + +### FUNC 000B7058 - 000B7075 (29 bytes) name=_ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEdeEv +000B7058: push rbp +000B7059: mov rbp, rsp +000B705C: sub rsp, 10h +000B7060: mov [rbp+var_8], rdi +000B7064: mov rax, [rbp+var_8] +000B7068: mov rax, [rax] +000B706B: mov rdi, rax +000B706E: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000B7073: leave +000B7074: retn + +### FUNC 000B7075 - 000B70BD (72 bytes) name=_ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJS7_EEvPT_DpOT0_ +000B7075: push rbp; Alternative name is 'void std::_Construct>>, nlohmann::basic_json>>>(nlohmann::basic_json>> *, nlohmann::basic_json>> &&)' +000B7076: mov rbp, rsp +000B7079: push rbx +000B707A: sub rsp, 18h +000B707E: mov [rbp+var_18], rdi +000B7082: mov [rbp+var_20], rsi +000B7086: mov rax, [rbp+var_20] +000B708A: mov rdi, rax +000B708D: call __ZSt7forwardIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS8_E4typeE; std::forward>>>(std::remove_reference>>>::type &) +000B7092: mov rbx, rax +000B7095: mov rax, [rbp+var_18] +000B7099: mov rsi, rax; void * +000B709C: mov edi, 10h; unsigned __int64 +000B70A1: call __ZnwmPv; operator new(ulong,void *) +000B70A6: test rax, rax +000B70A9: jz short loc_B70B6 +000B70AB: mov rsi, rbx +000B70AE: mov rdi, rax +000B70B1: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000B70B6: add rsp, 18h +000B70BA: pop rbx +000B70BB: pop rbp +000B70BC: retn + +### FUNC 000B70BE - 000B70C8 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEED2Ev +000B70BE: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>>>::~new_allocator()' +000B70BF: mov rbp, rsp +000B70C2: mov [rbp+var_8], rdi +000B70C6: pop rbp +000B70C7: retn + +### FUNC 000B70C8 - 000B70D2 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2Ev +000B70C8: push rbp; Alternative name is '__gnu_cxx::new_allocator>> *>::new_allocator(void)' +000B70C9: mov rbp, rsp +000B70CC: mov [rbp+var_8], rdi +000B70D0: pop rbp +000B70D1: retn + +### FUNC 000B70D2 - 000B70DC (10 bytes) name=_ZN9__gnu_cxx13new_allocatorImEC2Ev +000B70D2: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000B70D3: mov rbp, rsp +000B70D6: mov [rbp+var_8], rdi +000B70DA: pop rbp +000B70DB: retn + +### FUNC 000B70DC - 000B7108 (44 bytes) name=_ZNSt10_Iter_baseISt13_Bit_iteratorLb0EE7_S_baseES0_ +000B70DC: push rbp +000B70DD: mov rbp, rsp +000B70E0: mov rdx, rdi +000B70E3: mov rax, rsi +000B70E6: mov [rbp+var_20], rdx +000B70EA: mov [rbp+var_18], rax +000B70EE: mov rax, [rbp+var_20] +000B70F2: mov [rbp+var_10], rax +000B70F6: mov rax, [rbp+var_18] +000B70FA: mov [rbp+var_8], rax +000B70FE: mov rax, [rbp+var_10] +000B7102: mov rdx, [rbp+var_8] +000B7106: pop rbp +000B7107: retn + +### FUNC 000B7108 - 000B7149 (65 bytes) name=_ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +000B7108: push rbp +000B7109: mov rbp, rsp +000B710C: sub rsp, 30h +000B7110: mov rdx, rdi +000B7113: mov rax, rsi +000B7116: mov [rbp+var_20], rdx +000B711A: mov [rbp+var_18], rax +000B711E: mov rdx, [rbp+var_20] +000B7122: mov rax, [rbp+var_18] +000B7126: mov rdi, rdx +000B7129: mov rsi, rax +000B712C: call __ZNSt10_Iter_baseISt13_Bit_iteratorLb0EE7_S_baseES0_; std::_Iter_base::_S_base(std::_Bit_iterator) +000B7131: mov rcx, rax +000B7134: mov rax, rdx +000B7137: mov [rbp+var_10], rcx +000B713B: mov [rbp+var_8], rax +000B713F: mov rax, [rbp+var_10] +000B7143: mov rdx, [rbp+var_8] +000B7147: leave +000B7148: retn + +### FUNC 000B7149 - 000B71B1 (104 bytes) name=_ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B7149: push rbp +000B714A: mov rbp, rsp +000B714D: sub rsp, 60h +000B7151: mov rax, rcx +000B7154: mov rcx, r9 +000B7157: mov [rbp+var_30], rdi +000B715B: mov [rbp+var_28], rsi +000B715F: mov [rbp+var_40], rdx +000B7163: mov [rbp+var_38], rax +000B7167: mov [rbp+var_50], r8 +000B716B: mov [rbp+var_48], rcx +000B716F: mov [rbp+var_1], 0 +000B7173: mov r8, [rbp+var_50] +000B7177: mov rdi, [rbp+var_48] +000B717B: mov rdx, [rbp+var_40] +000B717F: mov rcx, [rbp+var_38] +000B7183: mov rsi, [rbp+var_30] +000B7187: mov rax, [rbp+var_28] +000B718B: mov r9, rdi +000B718E: mov rdi, rsi +000B7191: mov rsi, rax +000B7194: call __ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_; std::__copy_move_backward::__copy_move_b(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000B7199: mov rcx, rax +000B719C: mov rax, rdx +000B719F: mov [rbp+var_20], rcx +000B71A3: mov [rbp+var_18], rax +000B71A7: mov rax, [rbp+var_20] +000B71AB: mov rdx, [rbp+var_18] +000B71AF: leave +000B71B0: retn + +### FUNC 000B71B2 - 000B71C0 (14 bytes) name=_ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv +000B71B2: push rbp +000B71B3: mov rbp, rsp +000B71B6: mov [rbp+var_8], rdi +000B71BA: mov rax, [rbp+var_8] +000B71BE: pop rbp +000B71BF: retn + +### FUNC 000B71C0 - 000B71D4 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv +000B71C0: push rbp +000B71C1: mov rbp, rsp +000B71C4: mov [rbp+var_8], rdi +000B71C8: mov rax, 1FFFFFFFFFFFFFFFh +000B71D2: pop rbp +000B71D3: retn + +### FUNC 000B71D4 - 000B71EE (26 bytes) name=_ZSt12__miter_baseIPmENSt11_Miter_baseIT_E13iterator_typeES2_ +000B71D4: push rbp +000B71D5: mov rbp, rsp +000B71D8: sub rsp, 10h +000B71DC: mov [rbp+var_8], rdi +000B71E0: mov rax, [rbp+var_8] +000B71E4: mov rdi, rax +000B71E7: call __ZNSt10_Iter_baseIPmLb0EE7_S_baseES0_; std::_Iter_base::_S_base(ulong *) +000B71EC: leave +000B71ED: retn + +### FUNC 000B71EE - 000B7246 (88 bytes) name=_ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_ +000B71EE: push rbp +000B71EF: mov rbp, rsp +000B71F2: push r12 +000B71F4: push rbx +000B71F5: sub rsp, 20h +000B71F9: mov [rbp+var_18], rdi +000B71FD: mov [rbp+var_20], rsi +000B7201: mov [rbp+var_28], rdx +000B7205: mov rax, [rbp+var_28] +000B7209: mov rdi, rax +000B720C: call __ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(ulong *) +000B7211: mov r12, rax +000B7214: mov rax, [rbp+var_20] +000B7218: mov rdi, rax +000B721B: call __ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(ulong *) +000B7220: mov rbx, rax +000B7223: mov rax, [rbp+var_18] +000B7227: mov rdi, rax +000B722A: call __ZSt12__niter_baseIPmENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(ulong *) +000B722F: mov rdx, r12 +000B7232: mov rsi, rbx +000B7235: mov rdi, rax +000B7238: call __ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_; std::__copy_move_a(ulong *,ulong *,ulong *) +000B723D: add rsp, 20h +000B7241: pop rbx +000B7242: pop r12 +000B7244: pop rbp +000B7245: retn + +### FUNC 000B7246 - 000B7287 (65 bytes) name=_ZSt12__miter_baseISt19_Bit_const_iteratorENSt11_Miter_baseIT_E13iterator_typeES2_ +000B7246: push rbp +000B7247: mov rbp, rsp +000B724A: sub rsp, 30h +000B724E: mov rdx, rdi +000B7251: mov rax, rsi +000B7254: mov [rbp+var_20], rdx +000B7258: mov [rbp+var_18], rax +000B725C: mov rdx, [rbp+var_20] +000B7260: mov rax, [rbp+var_18] +000B7264: mov rdi, rdx +000B7267: mov rsi, rax +000B726A: call __ZNSt10_Iter_baseISt19_Bit_const_iteratorLb0EE7_S_baseES0_; std::_Iter_base::_S_base(std::_Bit_const_iterator) +000B726F: mov rcx, rax +000B7272: mov rax, rdx +000B7275: mov [rbp+var_10], rcx +000B7279: mov [rbp+var_8], rax +000B727D: mov rax, [rbp+var_10] +000B7281: mov rdx, [rbp+var_8] +000B7285: leave +000B7286: retn + +### FUNC 000B7287 - 000B734E (199 bytes) name=_ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +000B7287: push rbp +000B7288: mov rbp, rsp +000B728B: add rsp, 0FFFFFFFFFFFFFF80h +000B728F: mov rax, rcx +000B7292: mov rcx, r9 +000B7295: mov [rbp+var_50], rdi +000B7299: mov [rbp+var_48], rsi +000B729D: mov [rbp+var_60], rdx +000B72A1: mov [rbp+var_58], rax +000B72A5: mov [rbp+var_70], r8 +000B72A9: mov [rbp+var_68], rcx +000B72AD: mov rdx, [rbp+var_70] +000B72B1: mov rax, [rbp+var_68] +000B72B5: mov rdi, rdx +000B72B8: mov rsi, rax +000B72BB: call __ZSt12__niter_baseISt13_Bit_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_iterator) +000B72C0: mov rcx, rax +000B72C3: mov rax, rdx +000B72C6: mov [rbp+var_30], rcx +000B72CA: mov [rbp+var_28], rax +000B72CE: mov rdx, [rbp+var_60] +000B72D2: mov rax, [rbp+var_58] +000B72D6: mov rdi, rdx +000B72D9: mov rsi, rax +000B72DC: call __ZSt12__niter_baseISt19_Bit_const_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_const_iterator) +000B72E1: mov rcx, rax +000B72E4: mov rax, rdx +000B72E7: mov [rbp+var_20], rcx +000B72EB: mov [rbp+var_18], rax +000B72EF: mov rdx, [rbp+var_50] +000B72F3: mov rax, [rbp+var_48] +000B72F7: mov rdi, rdx +000B72FA: mov rsi, rax +000B72FD: call __ZSt12__niter_baseISt19_Bit_const_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(std::_Bit_const_iterator) +000B7302: mov rcx, rax +000B7305: mov rax, rdx +000B7308: mov [rbp+var_10], rcx +000B730C: mov [rbp+var_8], rax +000B7310: mov r8, [rbp+var_30] +000B7314: mov rdi, [rbp+var_28] +000B7318: mov rdx, [rbp+var_20] +000B731C: mov rcx, [rbp+var_18] +000B7320: mov rsi, [rbp+var_10] +000B7324: mov rax, [rbp+var_8] +000B7328: mov r9, rdi +000B732B: mov rdi, rsi +000B732E: mov rsi, rax +000B7331: call __ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_; std::__copy_move_a(std::_Bit_const_iterator,std::_Bit_const_iterator,std::_Bit_iterator) +000B7336: mov rcx, rax +000B7339: mov rax, rdx +000B733C: mov [rbp+var_40], rcx +000B7340: mov [rbp+var_38], rax +000B7344: mov rax, [rbp+var_40] +000B7348: mov rdx, [rbp+var_38] +000B734C: leave +000B734D: retn + +### FUNC 000B734E - 000B73B6 (104 bytes) name=_ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ +000B734E: push rbp +000B734F: mov rbp, rsp +000B7352: sub rsp, 60h +000B7356: mov rax, rcx +000B7359: mov rcx, r9 +000B735C: mov [rbp+var_30], rdi +000B7360: mov [rbp+var_28], rsi +000B7364: mov [rbp+var_40], rdx +000B7368: mov [rbp+var_38], rax +000B736C: mov [rbp+var_50], r8 +000B7370: mov [rbp+var_48], rcx +000B7374: mov [rbp+var_1], 0 +000B7378: mov r8, [rbp+var_50] +000B737C: mov rdi, [rbp+var_48] +000B7380: mov rdx, [rbp+var_40] +000B7384: mov rcx, [rbp+var_38] +000B7388: mov rsi, [rbp+var_30] +000B738C: mov rax, [rbp+var_28] +000B7390: mov r9, rdi +000B7393: mov rdi, rsi +000B7396: mov rsi, rax +000B7399: call __ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_; std::__copy_move::__copy_m(std::_Bit_iterator,std::_Bit_iterator,std::_Bit_iterator) +000B739E: mov rcx, rax +000B73A1: mov rax, rdx +000B73A4: mov [rbp+var_20], rcx +000B73A8: mov [rbp+var_18], rax +000B73AC: mov rax, [rbp+var_20] +000B73B0: mov rdx, [rbp+var_18] +000B73B4: leave +000B73B5: retn + +### FUNC 000B73B6 - 000B73FA (68 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JRKS9_EEEvPT_DpOT0_ +000B73B6: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_IRKS9_EEEvPT_DpOT0_' +000B73B7: mov rbp, rsp +000B73BA: push rbx +000B73BB: sub rsp, 28h +000B73BF: mov [rbp+var_18], rdi +000B73C3: mov [rbp+var_20], rsi +000B73C7: mov [rbp+var_28], rdx +000B73CB: mov rax, [rbp+var_28] +000B73CF: mov rdi, rax +000B73D2: call __ZSt7forwardIRKPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISB_E4typeE; std::forward>> * const&>(std::remove_reference>> * const&>::type &) +000B73D7: mov rbx, [rax] +000B73DA: mov rax, [rbp+var_20] +000B73DE: mov rsi, rax; void * +000B73E1: mov edi, 8; unsigned __int64 +000B73E6: call __ZnwmPv; operator new(ulong,void *) +000B73EB: test rax, rax +000B73EE: jz short loc_B73F3 +000B73F0: mov [rax], rbx +000B73F3: add rsp, 28h +000B73F7: pop rbx +000B73F8: pop rbp +000B73F9: retn + +### FUNC 000B73FA - 000B741C (34 bytes) name=_ZNKSt6vectorIPN8nlohmann10basic_jsonISt3mapS_SsblmdSaNS0_14adl_serializerES_IhSaIhEEEESaIS7_EE8max_sizeEv +000B73FA: push rbp +000B73FB: mov rbp, rsp +000B73FE: sub rsp, 10h +000B7402: mov [rbp+var_8], rdi +000B7406: mov rax, [rbp+var_8] +000B740A: mov rdi, rax +000B740D: call __ZNKSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv; std::_Vector_base>> *,std::allocator>> *>>::_M_get_Tp_allocator(void) +000B7412: mov rdi, rax +000B7415: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS9_; std::allocator_traits>> *>>::max_size(std::allocator>> *> const&) +000B741A: leave +000B741B: retn + +### FUNC 000B741C - 000B745E (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8allocateEmPKv +000B741C: push rbp +000B741D: mov rbp, rsp +000B7420: sub rsp, 20h +000B7424: mov [rbp+var_8], rdi +000B7428: mov [rbp+var_10], rsi +000B742C: mov [rbp+var_18], rdx +000B7430: mov rax, [rbp+var_8] +000B7434: mov rdi, rax +000B7437: call __ZNK9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv; __gnu_cxx::new_allocator>> *>::max_size(void) +000B743C: cmp rax, [rbp+var_10] +000B7440: setb al +000B7443: test al, al +000B7445: jz short loc_B744C +000B7447: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000B744C: mov rax, [rbp+var_10] +000B7450: shl rax, 3 +000B7454: mov rdi, rax; unsigned __int64 +000B7457: call __Znwm; operator new(ulong) +000B745C: leave +000B745D: retn + +### FUNC 000B745E - 000B7483 (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESt13move_iteratorIS9_EET0_T_ +000B745E: push rbp +000B745F: mov rbp, rsp +000B7462: sub rsp, 20h +000B7466: mov [rbp+var_18], rdi +000B746A: mov rdx, [rbp+var_18] +000B746E: lea rax, [rbp+var_10] +000B7472: mov rsi, rdx +000B7475: mov rdi, rax +000B7478: call __ZNSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES9_; std::move_iterator>> **>::move_iterator(nlohmann::basic_json>> **) +000B747D: mov rax, [rbp+var_10] +000B7481: leave +000B7482: retn + +### FUNC 000B7483 - 000B74B4 (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_S9_ET0_T_SD_SC_RSaIT1_E +000B7483: push rbp +000B7484: mov rbp, rsp +000B7487: sub rsp, 20h +000B748B: mov [rbp+var_10], rdi +000B748F: mov [rbp+var_20], rsi +000B7493: mov [rbp+var_18], rdx +000B7497: mov [rbp+var_8], rcx +000B749B: mov rdx, [rbp+var_18] +000B749F: mov rcx, [rbp+var_20] +000B74A3: mov rax, [rbp+var_10] +000B74A7: mov rsi, rcx +000B74AA: mov rdi, rax +000B74AD: call __ZSt18uninitialized_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_; std::uninitialized_copy>> **>,nlohmann::basic_json>> **>(std::move_iterator>> **>,std::move_iterator>> **>,nlohmann::basic_json>> **) +000B74B2: leave +000B74B3: retn + +### FUNC 000B74B4 - 000B74C2 (14 bytes) name=_ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv +000B74B4: push rbp +000B74B5: mov rbp, rsp +000B74B8: mov [rbp+var_8], rdi +000B74BC: mov rax, [rbp+var_8] +000B74C0: pop rbp +000B74C1: retn + +### FUNC 000B74C2 - 000B74D0 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE7destroyIS9_EEvPT_ +000B74C2: push rbp +000B74C3: mov rbp, rsp +000B74C6: mov [rbp+var_8], rdi +000B74CA: mov [rbp+var_10], rsi +000B74CE: pop rbp +000B74CF: retn + +### FUNC 000B74D0 - 000B7524 (84 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_erase_auxESt23_Rb_tree_const_iteratorISA_E +000B74D0: push rbp +000B74D1: mov rbp, rsp +000B74D4: sub rsp, 20h +000B74D8: mov [rbp+var_18], rdi +000B74DC: mov [rbp+var_20], rsi +000B74E0: mov rax, [rbp+var_18] +000B74E4: lea rdx, [rax+8] +000B74E8: mov rax, [rbp+var_20] +000B74EC: mov rsi, rdx +000B74EF: mov rdi, rax +000B74F2: call __ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_; std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base *,std::_Rb_tree_node_base&) +000B74F7: mov [rbp+var_8], rax +000B74FB: mov rdx, [rbp+var_8] +000B74FF: mov rax, [rbp+var_18] +000B7503: mov rsi, rdx +000B7506: mov rdi, rax +000B7509: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_destroy_node(std::_Rb_tree_node>>>> *) +000B750E: mov rax, [rbp+var_18] +000B7512: mov rax, [rax+28h] +000B7516: lea rdx, [rax-1] +000B751A: mov rax, [rbp+var_18] +000B751E: mov [rax+28h], rdx +000B7522: leave +000B7523: retn + +### FUNC 000B7524 - 000B7597 (115 bytes) name=_ZSt14__copy_move_a2ILb1EN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEESD_ET1_T0_SF_SE_ +000B7524: push rbp +000B7525: mov rbp, rsp +000B7528: push r12 +000B752A: push rbx +000B752B: sub rsp, 40h +000B752F: mov [rbp+var_30], rdi +000B7533: mov [rbp+var_40], rsi +000B7537: mov [rbp+var_50], rdx +000B753B: mov rax, [rbp+var_50] +000B753F: mov rdi, rax +000B7542: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_; std::__niter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B7547: mov r12, rax +000B754A: mov rax, [rbp+var_40] +000B754E: mov rdi, rax +000B7551: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_; std::__niter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B7556: mov rbx, rax +000B7559: mov rax, [rbp+var_30] +000B755D: mov rdi, rax +000B7560: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEENSt11_Niter_baseIT_E13iterator_typeESF_; std::__niter_base<__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>>(__gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>) +000B7565: mov rdx, r12 +000B7568: mov rsi, rbx +000B756B: mov rdi, rax +000B756E: call __ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_ET1_T0_SA_S9_; std::__copy_move_a>> *,nlohmann::basic_json>> *>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *) +000B7573: mov [rbp+var_18], rax +000B7577: lea rdx, [rbp+var_18] +000B757B: lea rax, [rbp+var_20] +000B757F: mov rsi, rdx +000B7582: mov rdi, rax +000B7585: call __ZN9__gnu_cxx17__normal_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEC2ERKS9_; __gnu_cxx::__normal_iterator>> *,std::vector>>,std::allocator>>>>>::__normal_iterator(nlohmann::basic_json>> * const&) +000B758A: mov rax, [rbp+var_20] +000B758E: add rsp, 40h +000B7592: pop rbx +000B7593: pop r12 +000B7595: pop rbp +000B7596: retn + +### FUNC 000B7597 - 000B75BC (37 bytes) name=_ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEESsLi0EEEvRT_RKT0_ +000B7597: push rbp +000B7598: mov rbp, rsp +000B759B: sub rsp, 10h +000B759F: mov [rbp+var_8], rdi +000B75A3: mov [rbp+var_10], rsi +000B75A7: mov rdx, [rbp+var_10] +000B75AB: mov rax, [rbp+var_8] +000B75AF: mov rsi, rdx +000B75B2: mov rdi, rax +000B75B5: call __ZN8nlohmann6detail20external_constructorILNS0_7value_tE3EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_RKNSC_8string_tE; nlohmann::detail::external_constructor<(nlohmann::detail::value_t)3>::construct>>>(nlohmann::basic_json>> &,nlohmann::basic_json>>::string_t const&) +000B75BA: leave +000B75BB: retn + +### FUNC 000B75BC - 000B7627 (107 bytes) name=_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_ +000B75BC: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_IRKSt21piecewise_construct_tSt5tupleIIRS2_EESJ_IIEEEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSN_' +000B75BD: mov rbp, rsp +000B75C0: push r12 +000B75C2: push rbx +000B75C3: sub rsp, 30h +000B75C7: mov [rbp+var_18], rdi +000B75CB: mov [rbp+var_20], rsi +000B75CF: mov [rbp+var_28], rdx +000B75D3: mov [rbp+var_30], rcx +000B75D7: mov [rbp+var_38], r8 +000B75DB: mov rax, [rbp+var_38] +000B75DF: mov rdi, rax +000B75E2: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B75E7: mov r12, rax +000B75EA: mov rax, [rbp+var_30] +000B75EE: mov rdi, rax +000B75F1: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B75F6: mov rbx, rax +000B75F9: mov rax, [rbp+var_28] +000B75FD: mov rdi, rax +000B7600: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B7605: mov rdx, rax +000B7608: mov rsi, [rbp+var_20] +000B760C: mov rax, [rbp+var_18] +000B7610: mov r8, r12 +000B7613: mov rcx, rbx +000B7616: mov rdi, rax +000B7619: call __ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +000B761E: add rsp, 30h +000B7622: pop rbx +000B7623: pop r12 +000B7625: pop rbp +000B7626: retn + +### FUNC 000B7628 - 000B7662 (58 bytes) name=_ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERdEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B7628: push rbp +000B7629: mov rbp, rsp +000B762C: sub rsp, 20h +000B7630: mov [rbp+var_8], rdi +000B7634: mov [rbp+var_10], rsi +000B7638: mov [rbp+var_18], rdx +000B763C: mov rax, [rbp+var_18] +000B7640: mov rdi, rax +000B7643: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B7648: mov rax, [rax] +000B764B: mov rdx, [rbp+var_10] +000B764F: mov [rbp+var_20], rax +000B7653: movsd xmm0, [rbp+var_20] +000B7658: mov rdi, rdx +000B765B: call __ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEdLi0EEEvRT_T0_; nlohmann::detail::to_json>>,double,0>(nlohmann::basic_json>> &,double) +000B7660: leave +000B7661: retn + +### FUNC 000B7662 - 000B7698 (54 bytes) name=_ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERbEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B7662: push rbp +000B7663: mov rbp, rsp +000B7666: sub rsp, 20h +000B766A: mov [rbp+var_8], rdi +000B766E: mov [rbp+var_10], rsi +000B7672: mov [rbp+var_18], rdx +000B7676: mov rax, [rbp+var_18] +000B767A: mov rdi, rax +000B767D: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B7682: movzx eax, byte ptr [rax] +000B7685: movzx edx, al +000B7688: mov rax, [rbp+var_10] +000B768C: mov esi, edx +000B768E: mov rdi, rax +000B7691: call __ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEbLi0EEEvRT_T0_; nlohmann::detail::to_json>>,bool,0>(nlohmann::basic_json>> &,bool) +000B7696: leave +000B7697: retn + +### FUNC 000B7698 - 000B76CC (52 bytes) name=_ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERlEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B7698: push rbp +000B7699: mov rbp, rsp +000B769C: sub rsp, 20h +000B76A0: mov [rbp+var_8], rdi +000B76A4: mov [rbp+var_10], rsi +000B76A8: mov [rbp+var_18], rdx +000B76AC: mov rax, [rbp+var_18] +000B76B0: mov rdi, rax +000B76B3: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B76B8: mov rdx, [rax] +000B76BB: mov rax, [rbp+var_10] +000B76BF: mov rsi, rdx +000B76C2: mov rdi, rax +000B76C5: call __ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEElLi0EEEvRT_T0_; nlohmann::detail::to_json>>,long,0>(nlohmann::basic_json>> &,long) +000B76CA: leave +000B76CB: retn + +### FUNC 000B76CC - 000B7700 (52 bytes) name=_ZNK8nlohmann6detail10to_json_fnclINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES5_IhSaIhEEEERmEEDTcmcl7to_jsonfp_cl7forwardIT0_Efp0_EEcvv_EERT_OSB_ +000B76CC: push rbp +000B76CD: mov rbp, rsp +000B76D0: sub rsp, 20h +000B76D4: mov [rbp+var_8], rdi +000B76D8: mov [rbp+var_10], rsi +000B76DC: mov [rbp+var_18], rdx +000B76E0: mov rax, [rbp+var_18] +000B76E4: mov rdi, rax +000B76E7: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B76EC: mov rdx, [rax] +000B76EF: mov rax, [rbp+var_10] +000B76F3: mov rsi, rdx +000B76F6: mov rdi, rax +000B76F9: call __ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEmLi0EEEvRT_T0_; nlohmann::detail::to_json>>,ulong,0>(nlohmann::basic_json>> &,ulong) +000B76FE: leave +000B76FF: retn + +### FUNC 000B7700 - 000B7738 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JNS0_6detail7value_tEEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSF_DpOSG_ +000B7700: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_INS0_6detail7value_tEEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSF_DpOSG_' +000B7701: mov rbp, rsp +000B7704: sub rsp, 20h +000B7708: mov [rbp+var_8], rdi +000B770C: mov [rbp+var_10], rsi +000B7710: mov [rbp+var_18], rdx +000B7714: mov rax, [rbp+var_18] +000B7718: mov rdi, rax +000B771B: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B7720: mov rdx, rax +000B7723: mov rcx, [rbp+var_10] +000B7727: mov rax, [rbp+var_8] +000B772B: mov rsi, rcx +000B772E: mov rdi, rax +000B7731: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JNS1_6detail7value_tEEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,nlohmann::detail::value_t>(nlohmann::basic_json>> *,nlohmann::detail::value_t &&) +000B7736: leave +000B7737: retn + +### FUNC 000B7738 - 000B7770 (56 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_JS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS9_PSE_DpOSF_ +000B7738: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS8_IS8_EEENSt9enable_ifIXsrNSA_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS9_PSE_DpOSF_' +000B7739: mov rbp, rsp +000B773C: sub rsp, 20h +000B7740: mov [rbp+var_8], rdi +000B7744: mov [rbp+var_10], rsi +000B7748: mov [rbp+var_18], rdx +000B774C: mov rax, [rbp+var_18] +000B7750: mov rdi, rax +000B7753: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000B7758: mov rdx, rax +000B775B: mov rcx, [rbp+var_10] +000B775F: mov rax, [rbp+var_8] +000B7763: mov rsi, rcx +000B7766: mov rdi, rax +000B7769: call __ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JS9_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>> *>::construct>> *,nlohmann::basic_json>> *>(nlohmann::basic_json>> * *,nlohmann::basic_json>> * &&) +000B776E: leave +000B776F: retn + +### FUNC 000B7770 - 000B77A8 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRdEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B7770: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IRdEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_' +000B7771: mov rbp, rsp +000B7774: sub rsp, 20h +000B7778: mov [rbp+var_8], rdi +000B777C: mov [rbp+var_10], rsi +000B7780: mov [rbp+var_18], rdx +000B7784: mov rax, [rbp+var_18] +000B7788: mov rdi, rax +000B778B: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B7790: mov rdx, rax +000B7793: mov rcx, [rbp+var_10] +000B7797: mov rax, [rbp+var_8] +000B779B: mov rsi, rcx +000B779E: mov rdi, rax +000B77A1: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRdEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,double &>(nlohmann::basic_json>> *,double &) +000B77A6: leave +000B77A7: retn + +### FUNC 000B77A8 - 000B77E0 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRbEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B77A8: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IRbEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_' +000B77A9: mov rbp, rsp +000B77AC: sub rsp, 20h +000B77B0: mov [rbp+var_8], rdi +000B77B4: mov [rbp+var_10], rsi +000B77B8: mov [rbp+var_18], rdx +000B77BC: mov rax, [rbp+var_18] +000B77C0: mov rdi, rax +000B77C3: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B77C8: mov rdx, rax +000B77CB: mov rcx, [rbp+var_10] +000B77CF: mov rax, [rbp+var_8] +000B77D3: mov rsi, rcx +000B77D6: mov rdi, rax +000B77D9: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRbEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,bool &>(nlohmann::basic_json>> *,bool &) +000B77DE: leave +000B77DF: retn + +### FUNC 000B77E0 - 000B7818 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JDnEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSD_DpOSE_ +000B77E0: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IDnEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_' +000B77E1: mov rbp, rsp +000B77E4: sub rsp, 20h +000B77E8: mov [rbp+var_8], rdi +000B77EC: mov [rbp+var_10], rsi +000B77F0: mov [rbp+var_18], rdx +000B77F4: mov rax, [rbp+var_18] +000B77F8: mov rdi, rax +000B77FB: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B7800: mov rdx, rax +000B7803: mov rcx, [rbp+var_10] +000B7807: mov rax, [rbp+var_8] +000B780B: mov rsi, rcx +000B780E: mov rdi, rax +000B7811: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JDnEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,decltype(nullptr)>(nlohmann::basic_json>> *,decltype(nullptr) &&) +000B7816: leave +000B7817: retn + +### FUNC 000B7818 - 000B7850 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRlEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B7818: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IRlEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_' +000B7819: mov rbp, rsp +000B781C: sub rsp, 20h +000B7820: mov [rbp+var_8], rdi +000B7824: mov [rbp+var_10], rsi +000B7828: mov [rbp+var_18], rdx +000B782C: mov rax, [rbp+var_18] +000B7830: mov rdi, rax +000B7833: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B7838: mov rdx, rax +000B783B: mov rcx, [rbp+var_10] +000B783F: mov rax, [rbp+var_8] +000B7843: mov rsi, rcx +000B7846: mov rdi, rax +000B7849: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRlEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,long &>(nlohmann::basic_json>> *,long &) +000B784E: leave +000B784F: retn + +### FUNC 000B7850 - 000B7888 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRSsEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B7850: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IRSsEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_' +000B7851: mov rbp, rsp +000B7854: sub rsp, 20h +000B7858: mov [rbp+var_8], rdi +000B785C: mov [rbp+var_10], rsi +000B7860: mov [rbp+var_18], rdx +000B7864: mov rax, [rbp+var_18] +000B7868: mov rdi, rax +000B786B: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B7870: mov rdx, rax +000B7873: mov rcx, [rbp+var_10] +000B7877: mov rax, [rbp+var_8] +000B787B: mov rsi, rcx +000B787E: mov rdi, rax +000B7881: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRSsEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,std::string &>(nlohmann::basic_json>> *,std::string &) +000B7886: leave +000B7887: retn + +### FUNC 000B7888 - 000B78C0 (56 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_JRmEEENSt9enable_ifIXsrNS9_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_ +000B7888: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE12_S_constructIS7_IRmEEENSt9enable_ifIXsrNS9_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS8_PSE_DpOSF_' +000B7889: mov rbp, rsp +000B788C: sub rsp, 20h +000B7890: mov [rbp+var_8], rdi +000B7894: mov [rbp+var_10], rsi +000B7898: mov [rbp+var_18], rdx +000B789C: mov rax, [rbp+var_18] +000B78A0: mov rdi, rax +000B78A3: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B78A8: mov rdx, rax +000B78AB: mov rcx, [rbp+var_10] +000B78AF: mov rax, [rbp+var_8] +000B78B3: mov rsi, rcx +000B78B6: mov rdi, rax +000B78B9: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRmEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>::construct>>,ulong &>(nlohmann::basic_json>> *,ulong &) +000B78BE: leave +000B78BF: retn + +### FUNC 000B78C0 - 000B78CE (14 bytes) name=_ZNSt10_Iter_baseIP19struct_TerminalListLb0EE7_S_baseES1_ +000B78C0: push rbp +000B78C1: mov rbp, rsp +000B78C4: mov [rbp+var_8], rdi +000B78C8: mov rax, [rbp+var_8] +000B78CC: pop rbp +000B78CD: retn + +### FUNC 000B78CE - 000B78E8 (26 bytes) name=_ZSt12__miter_baseISt13move_iteratorIP19struct_TerminalListEENSt11_Miter_baseIT_E13iterator_typeES5_ +000B78CE: push rbp +000B78CF: mov rbp, rsp +000B78D2: sub rsp, 10h +000B78D6: mov [rbp+var_10], rdi +000B78DA: mov rax, [rbp+var_10] +000B78DE: mov rdi, rax +000B78E1: call __ZNSt10_Iter_baseISt13move_iteratorIP19struct_TerminalListELb1EE7_S_baseES3_; std::_Iter_base,true>::_S_base(std::move_iterator) +000B78E6: leave +000B78E7: retn + +### FUNC 000B78E8 - 000B7940 (88 bytes) name=_ZSt14__copy_move_a2ILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +000B78E8: push rbp +000B78E9: mov rbp, rsp +000B78EC: push r12 +000B78EE: push rbx +000B78EF: sub rsp, 20h +000B78F3: mov [rbp+var_18], rdi +000B78F7: mov [rbp+var_20], rsi +000B78FB: mov [rbp+var_28], rdx +000B78FF: mov rax, [rbp+var_28] +000B7903: mov rdi, rax +000B7906: call __ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(struct_TerminalList *) +000B790B: mov r12, rax +000B790E: mov rax, [rbp+var_20] +000B7912: mov rdi, rax +000B7915: call __ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(struct_TerminalList *) +000B791A: mov rbx, rax +000B791D: mov rax, [rbp+var_18] +000B7921: mov rdi, rax +000B7924: call __ZSt12__niter_baseIP19struct_TerminalListENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(struct_TerminalList *) +000B7929: mov rdx, r12 +000B792C: mov rsi, rbx +000B792F: mov rdi, rax +000B7932: call __ZSt13__copy_move_aILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_; std::__copy_move_a(struct_TerminalList *,struct_TerminalList *,struct_TerminalList *) +000B7937: add rsp, 20h +000B793B: pop rbx +000B793C: pop r12 +000B793E: pop rbp +000B793F: retn + +### FUNC 000B7940 - 000B7982 (66 bytes) name=_ZSt7advanceIPhiEvRT_T0_ +000B7940: push rbp +000B7941: mov rbp, rsp +000B7944: push rbx +000B7945: sub rsp, 38h +000B7949: mov [rbp+var_28], rdi +000B794D: mov [rbp+var_2C], esi +000B7950: mov eax, [rbp+var_2C] +000B7953: cdqe +000B7955: mov [rbp+var_18], rax +000B7959: mov rax, [rbp+var_28] +000B795D: mov rdi, rax +000B7960: call __ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_; std::__iterator_category(uchar * const&) +000B7965: mov rdx, [rbp+var_18] +000B7969: mov rax, [rbp+var_28] +000B796D: mov [rsp+40h+var_40], bl +000B7970: mov rsi, rdx +000B7973: mov rdi, rax +000B7976: call __ZSt9__advanceIPhlEvRT_T0_St26random_access_iterator_tag; std::__advance(uchar * &,long,std::random_access_iterator_tag) +000B797B: add rsp, 38h +000B797F: pop rbx +000B7980: pop rbp +000B7981: retn + +### FUNC 000B7982 - 000B7990 (14 bytes) name=_ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE +000B7982: push rbp +000B7983: mov rbp, rsp +000B7986: mov [rbp+var_8], rdi +000B798A: mov rax, [rbp+var_8] +000B798E: pop rbp +000B798F: retn + +### FUNC 000B7990 - 000B7A11 (129 bytes) name=_ZNSt6vectorIhSaIhEE12emplace_backIJhEEEvDpOT_ +000B7990: push rbp; Alternative name is 'void std::vector>::emplace_back(unsigned char &&)' +000B7991: mov rbp, rsp +000B7994: sub rsp, 10h +000B7998: mov [rbp+var_8], rdi +000B799C: mov [rbp+var_10], rsi +000B79A0: mov rax, [rbp+var_8] +000B79A4: mov rdx, [rax+8] +000B79A8: mov rax, [rbp+var_8] +000B79AC: mov rax, [rax+10h] +000B79B0: cmp rdx, rax +000B79B3: jz short loc_B79F1 +000B79B5: mov rax, [rbp+var_10] +000B79B9: mov rdi, rax +000B79BC: call __ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B79C1: mov rdx, rax +000B79C4: mov rax, [rbp+var_8] +000B79C8: mov rcx, [rax+8] +000B79CC: mov rax, [rbp+var_8] +000B79D0: mov rsi, rcx +000B79D3: mov rdi, rax +000B79D6: call __ZNSt16allocator_traitsISaIhEE9constructIhJhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000B79DB: mov rax, [rbp+var_8] +000B79DF: mov rax, [rax+8] +000B79E3: lea rdx, [rax+1] +000B79E7: mov rax, [rbp+var_8] +000B79EB: mov [rax+8], rdx +000B79EF: jmp short locret_B7A0F +000B79F1: mov rax, [rbp+var_10] +000B79F5: mov rdi, rax +000B79F8: call __ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B79FD: mov rdx, rax +000B7A00: mov rax, [rbp+var_8] +000B7A04: mov rsi, rdx +000B7A07: mov rdi, rax +000B7A0A: call __ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJhEEEvDpOT_; std::vector>::_M_emplace_back_aux(uchar &&) +000B7A0F: leave +000B7A10: retn + +### FUNC 000B7A11 - 000B7A4D (60 bytes) name=_ZN9__gnu_cxxeqIPKhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +000B7A11: push rbp +000B7A12: mov rbp, rsp +000B7A15: push rbx +000B7A16: sub rsp, 18h +000B7A1A: mov [rbp+var_18], rdi +000B7A1E: mov [rbp+var_20], rsi +000B7A22: mov rax, [rbp+var_18] +000B7A26: mov rdi, rax +000B7A29: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000B7A2E: mov rbx, [rax] +000B7A31: mov rax, [rbp+var_20] +000B7A35: mov rdi, rax +000B7A38: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000B7A3D: mov rax, [rax] +000B7A40: cmp rbx, rax +000B7A43: setz al +000B7A46: add rsp, 18h +000B7A4A: pop rbx +000B7A4B: pop rbp +000B7A4C: retn + +### FUNC 000B7A4D - 000B7A72 (37 bytes) name=_ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_ +000B7A4D: push rbp +000B7A4E: mov rbp, rsp +000B7A51: sub rsp, 10h +000B7A55: mov [rbp+var_8], rdi +000B7A59: mov [rbp+var_10], rsi +000B7A5D: mov rdx, [rbp+var_10] +000B7A61: mov rax, [rbp+var_8] +000B7A65: mov rsi, rdx +000B7A68: mov rdi, rax +000B7A6B: call __ZNSt16allocator_traitsISaIhEE10_S_destroyIhEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_; std::allocator_traits>::_S_destroy(std::allocator&,uchar*) +000B7A70: leave +000B7A71: retn + +### FUNC 000B7A72 - 000B7A8C (26 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2Ev +000B7A72: push rbp; Alternative name is 'std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>::_Rb_tree(void)' +000B7A73: mov rbp, rsp +000B7A76: sub rsp, 10h +000B7A7A: mov [rbp+var_8], rdi +000B7A7E: mov rax, [rbp+var_8] +000B7A82: mov rdi, rax +000B7A85: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2Ev; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree_impl,true>::_Rb_tree_impl(void) +000B7A8A: leave +000B7A8B: retn + +### FUNC 000B7A8C - 000B7B33 (167 bytes) name=_ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJOSsEESG_IJEEEEEDpOT_ +000B7A8C: push rbp; Alternative name is 'std::_Rb_tree_node>>>>::_Rb_tree_node, std::tuple<>>()' +000B7A8D: mov rbp, rsp +000B7A90: push r12 +000B7A92: push rbx +000B7A93: sub rsp, 40h +000B7A97: mov [rbp+var_28], rdi +000B7A9B: mov [rbp+var_30], rsi +000B7A9F: mov [rbp+var_38], rdx +000B7AA3: mov [rbp+var_40], rcx +000B7AA7: mov rax, [rbp+var_28] +000B7AAB: mov dword ptr [rax], 0 +000B7AB1: mov rax, [rbp+var_28] +000B7AB5: mov qword ptr [rax+8], 0 +000B7ABD: mov rax, [rbp+var_28] +000B7AC1: mov qword ptr [rax+10h], 0 +000B7AC9: mov rax, [rbp+var_28] +000B7ACD: mov qword ptr [rax+18h], 0 +000B7AD5: mov rax, [rbp+var_40] +000B7AD9: mov rdi, rax +000B7ADC: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B7AE1: mov rax, [rbp+var_38] +000B7AE5: mov rdi, rax +000B7AE8: call __ZSt7forwardISt5tupleIJOSsEEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward>(std::remove_reference>::type &) +000B7AED: mov rdx, rax +000B7AF0: lea rax, [rbp+var_20] +000B7AF4: mov rsi, rdx +000B7AF7: mov rdi, rax +000B7AFA: call __ZNSt5tupleIJOSsEEC2EOS1_; std::tuple::tuple(std::string &&&&) +000B7AFF: mov rax, [rbp+var_30] +000B7B03: mov rdi, rax +000B7B06: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B7B0B: mov rax, [rbp+var_28] +000B7B0F: lea rdx, [rax+20h] +000B7B13: lea rax, [rbp+var_20] +000B7B17: mov [rsp+50h+var_48], r12b +000B7B1C: mov [rsp+50h+var_50], bl +000B7B1F: mov rsi, rax +000B7B22: mov rdi, rdx +000B7B25: call __ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +000B7B2A: add rsp, 40h +000B7B2E: pop rbx +000B7B2F: pop r12 +000B7B31: pop rbp +000B7B32: retn + +### FUNC 000B7B34 - 000B7C4C (280 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EEC2ERKSG_ +000B7B34: push rbp; Alternative name is 'std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>::_Rb_tree(std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_Node_allocator(void) +000B7B53: mov rdx, rax +000B7B56: mov rcx, [rbp+var_20] +000B7B5A: mov rax, [rbp+var_18] +000B7B5E: mov rsi, rcx +000B7B61: mov rdi, rax +000B7B64: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2ERKSE_RKSaISt13_Rb_tree_nodeISA_EE; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree_impl,true>::_Rb_tree_impl(std::less const&,std::allocator>>>>> const&) +000B7B69: mov rax, [rbp+var_20] +000B7B6D: mov rdi, rax +000B7B70: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_root(void) +000B7B75: test rax, rax +000B7B78: setnz al +000B7B7B: test al, al +000B7B7D: jz loc_B7C43 +000B7B83: mov rax, [rbp+var_18] +000B7B87: mov rdi, rax +000B7B8A: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_root(void) +000B7B8F: mov rbx, rax +000B7B92: mov rax, [rbp+var_18] +000B7B96: mov rdi, rax +000B7B99: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE6_M_endEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_end(void) +000B7B9E: mov r12, rax +000B7BA1: mov rax, [rbp+var_20] +000B7BA5: mov rdi, rax +000B7BA8: call __ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_begin(void) +000B7BAD: mov rcx, rax +000B7BB0: mov rax, [rbp+var_18] +000B7BB4: mov rdx, r12 +000B7BB7: mov rsi, rcx +000B7BBA: mov rdi, rax +000B7BBD: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_copy(std::_Rb_tree_node>>>> const*,std::_Rb_tree_node>>>>*) +000B7BC2: mov [rbx], rax +000B7BC5: mov rax, [rbp+var_18] +000B7BC9: mov rdi, rax +000B7BCC: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_leftmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_leftmost(void) +000B7BD1: mov rbx, rax +000B7BD4: mov rax, [rbp+var_18] +000B7BD8: mov rdi, rax +000B7BDB: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_root(void) +000B7BE0: mov rax, [rax] +000B7BE3: mov rdi, rax +000B7BE6: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_minimumEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_minimum(std::_Rb_tree_node_base *) +000B7BEB: mov [rbx], rax +000B7BEE: mov rax, [rbp+var_18] +000B7BF2: mov rdi, rax +000B7BF5: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE12_M_rightmostEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_rightmost(void) +000B7BFA: mov rbx, rax +000B7BFD: mov rax, [rbp+var_18] +000B7C01: mov rdi, rax +000B7C04: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_root(void) +000B7C09: mov rax, [rax] +000B7C0C: mov rdi, rax +000B7C0F: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_maximumEPSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_maximum(std::_Rb_tree_node_base *) +000B7C14: mov [rbx], rax +000B7C17: mov rax, [rbp+var_20] +000B7C1B: mov rdx, [rax+28h] +000B7C1F: mov rax, [rbp+var_18] +000B7C23: mov [rax+28h], rdx +000B7C27: jmp short loc_B7C43 +000B7C29: mov rbx, rax +000B7C2C: mov rax, [rbp+var_18] +000B7C30: mov rdi, rax +000B7C33: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EED2Ev; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree_impl,true>::~_Rb_tree_impl() +000B7C38: mov rax, rbx +000B7C3B: mov rdi, rax; struct _Unwind_Exception * +000B7C3E: call __Unwind_Resume +000B7C43: add rsp, 10h +000B7C47: pop rbx +000B7C48: pop r12 +000B7C4A: pop rbp +000B7C4B: retn + +### FUNC 000B7C4C - 000B7C75 (41 bytes) name=_ZN9__gnu_cxx14__alloc_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEE17_S_select_on_copyERKS9_ +000B7C4C: push rbp +000B7C4D: mov rbp, rsp +000B7C50: sub rsp, 10h +000B7C54: mov [rbp+var_8], rdi +000B7C58: mov [rbp+var_10], rsi +000B7C5C: mov rax, [rbp+var_8] +000B7C60: mov rdx, [rbp+var_10] +000B7C64: mov rsi, rdx +000B7C67: mov rdi, rax +000B7C6A: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE37select_on_container_copy_constructionERKS8_; std::allocator_traits>>>>::select_on_container_copy_construction(std::allocator>>> const&) +000B7C6F: mov rax, [rbp+var_8] +000B7C73: leave +000B7C74: retn + +### FUNC 000B7C76 - 000B7CD4 (94 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EEC2EmRKS8_ +000B7C76: push rbp; Alternative name is 'std::_Vector_base>>, std::allocator>>>>::_Vector_base(unsigned long, std::allocator>>> const&)' +000B7C77: mov rbp, rsp +000B7C7A: push rbx +000B7C7B: sub rsp, 28h +000B7C7F: mov [rbp+var_18], rdi +000B7C83: mov [rbp+var_20], rsi +000B7C87: mov [rbp+var_28], rdx +000B7C8B: mov rax, [rbp+var_18] +000B7C8F: mov rdx, [rbp+var_28] +000B7C93: mov rsi, rdx +000B7C96: mov rdi, rax +000B7C99: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2ERKS8_; std::_Vector_base>>,std::allocator>>>>::_Vector_impl::_Vector_impl(std::allocator>>> const&) +000B7C9E: mov rdx, [rbp+var_20] +000B7CA2: mov rax, [rbp+var_18] +000B7CA6: mov rsi, rdx +000B7CA9: mov rdi, rax +000B7CAC: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE17_M_create_storageEm; std::_Vector_base>>,std::allocator>>>>::_M_create_storage(ulong) +000B7CB1: jmp short loc_B7CCD +000B7CB3: mov rbx, rax +000B7CB6: mov rax, [rbp+var_18] +000B7CBA: mov rdi, rax +000B7CBD: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implD2Ev; std::_Vector_base>>,std::allocator>>>>::_Vector_impl::~_Vector_impl() +000B7CC2: mov rax, rbx +000B7CC5: mov rdi, rax; struct _Unwind_Exception * +000B7CC8: call __Unwind_Resume +000B7CCD: add rsp, 28h +000B7CD1: pop rbx +000B7CD2: pop rbp +000B7CD3: retn + +### FUNC 000B7CD4 - 000B7D05 (49 bytes) name=_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_S9_ET0_T_SH_SG_RSaIT1_E +000B7CD4: push rbp +000B7CD5: mov rbp, rsp +000B7CD8: sub rsp, 20h +000B7CDC: mov [rbp+var_10], rdi +000B7CE0: mov [rbp+var_20], rsi +000B7CE4: mov [rbp+var_18], rdx +000B7CE8: mov [rbp+var_8], rcx +000B7CEC: mov rdx, [rbp+var_18] +000B7CF0: mov rcx, [rbp+var_20] +000B7CF4: mov rax, [rbp+var_10] +000B7CF8: mov rsi, rcx +000B7CFB: mov rdi, rax +000B7CFE: call __ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_ET0_T_SH_SG_; std::uninitialized_copy<__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,nlohmann::basic_json>>*>(__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,nlohmann::basic_json>>*) +000B7D03: leave +000B7D04: retn + +### FUNC 000B7D05 - 000B7D89 (132 bytes) name=_ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_ +000B7D05: push rbp +000B7D06: mov rbp, rsp +000B7D09: push r12 +000B7D0B: push rbx +000B7D0C: sub rsp, 10h +000B7D10: mov [rbp+var_18], rdi +000B7D14: mov [rbp+var_20], rsi +000B7D18: mov rax, [rbp+var_18] +000B7D1C: mov rdi, rax; this +000B7D1F: call __ZNKSs4sizeEv; std::string::size(void) +000B7D24: mov rbx, rax +000B7D27: mov rax, [rbp+var_20] +000B7D2B: mov rdi, rax; this +000B7D2E: call __ZNKSs4sizeEv; std::string::size(void) +000B7D33: cmp rbx, rax +000B7D36: jnz short loc_B7D7B +000B7D38: mov rax, [rbp+var_18] +000B7D3C: mov rdi, rax; this +000B7D3F: call __ZNKSs4sizeEv; std::string::size(void) +000B7D44: mov r12, rax +000B7D47: mov rax, [rbp+var_20] +000B7D4B: mov rdi, rax; this +000B7D4E: call __ZNKSs4dataEv; std::string::data(void) +000B7D53: mov rbx, rax +000B7D56: mov rax, [rbp+var_18] +000B7D5A: mov rdi, rax; this +000B7D5D: call __ZNKSs4dataEv; std::string::data(void) +000B7D62: mov rdx, r12 +000B7D65: mov rsi, rbx +000B7D68: mov rdi, rax +000B7D6B: call __ZNSt11char_traitsIcE7compareEPKcS2_m; std::char_traits::compare(char const*,char const*,ulong) +000B7D70: test eax, eax +000B7D72: jnz short loc_B7D7B +000B7D74: mov eax, 1 +000B7D79: jmp short loc_B7D80 +000B7D7B: mov eax, 0 +000B7D80: add rsp, 10h +000B7D84: pop rbx +000B7D85: pop r12 +000B7D87: pop rbp +000B7D88: retn + +### FUNC 000B7D89 - 000B7DA3 (26 bytes) name=_ZSt12__miter_baseISt13move_iteratorIPiEENSt11_Miter_baseIT_E13iterator_typeES4_ +000B7D89: push rbp +000B7D8A: mov rbp, rsp +000B7D8D: sub rsp, 10h +000B7D91: mov [rbp+var_10], rdi +000B7D95: mov rax, [rbp+var_10] +000B7D99: mov rdi, rax +000B7D9C: call __ZNSt10_Iter_baseISt13move_iteratorIPiELb1EE7_S_baseES2_; std::_Iter_base,true>::_S_base(std::move_iterator) +000B7DA1: leave +000B7DA2: retn + +### FUNC 000B7DA3 - 000B7DFB (88 bytes) name=_ZSt14__copy_move_a2ILb1EPiS0_ET1_T0_S2_S1_ +000B7DA3: push rbp +000B7DA4: mov rbp, rsp +000B7DA7: push r12 +000B7DA9: push rbx +000B7DAA: sub rsp, 20h +000B7DAE: mov [rbp+var_18], rdi +000B7DB2: mov [rbp+var_20], rsi +000B7DB6: mov [rbp+var_28], rdx +000B7DBA: mov rax, [rbp+var_28] +000B7DBE: mov rdi, rax +000B7DC1: call __ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(int *) +000B7DC6: mov r12, rax +000B7DC9: mov rax, [rbp+var_20] +000B7DCD: mov rdi, rax +000B7DD0: call __ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(int *) +000B7DD5: mov rbx, rax +000B7DD8: mov rax, [rbp+var_18] +000B7DDC: mov rdi, rax +000B7DDF: call __ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(int *) +000B7DE4: mov rdx, r12 +000B7DE7: mov rsi, rbx +000B7DEA: mov rdi, rax +000B7DED: call __ZSt13__copy_move_aILb1EPiS0_ET1_T0_S2_S1_; std::__copy_move_a(int *,int *,int *) +000B7DF2: add rsp, 20h +000B7DF6: pop rbx +000B7DF7: pop r12 +000B7DF9: pop rbp +000B7DFA: retn + +### FUNC 000B7DFB - 000B7E34 (57 bytes) name=_ZSteqIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEbRKSt13move_iteratorIT_ESD_ +000B7DFB: push rbp +000B7DFC: mov rbp, rsp +000B7DFF: push rbx +000B7E00: sub rsp, 18h +000B7E04: mov [rbp+var_18], rdi +000B7E08: mov [rbp+var_20], rsi +000B7E0C: mov rax, [rbp+var_18] +000B7E10: mov rdi, rax +000B7E13: call __ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv; std::move_iterator>> *>::base(void) +000B7E18: mov rbx, rax +000B7E1B: mov rax, [rbp+var_20] +000B7E1F: mov rdi, rax +000B7E22: call __ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv; std::move_iterator>> *>::base(void) +000B7E27: cmp rbx, rax +000B7E2A: setz al +000B7E2D: add rsp, 18h +000B7E31: pop rbx +000B7E32: pop rbp +000B7E33: retn + +### FUNC 000B7E34 - 000B7EE4 (176 bytes) name=_ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_ +000B7E34: push rbp +000B7E35: mov rbp, rsp +000B7E38: add rsp, 0FFFFFFFFFFFFFF80h +000B7E3C: mov rax, rcx +000B7E3F: mov rcx, r9 +000B7E42: mov [rbp+var_50], rdi +000B7E46: mov [rbp+var_48], rsi +000B7E4A: mov [rbp+var_60], rdx +000B7E4E: mov [rbp+var_58], rax +000B7E52: mov [rbp+var_70], r8 +000B7E56: mov [rbp+var_68], rcx +000B7E5A: lea rdx, [rbp+var_50] +000B7E5E: lea rax, [rbp+var_60] +000B7E62: mov rsi, rdx +000B7E65: mov rdi, rax +000B7E68: call __ZStmiRKSt18_Bit_iterator_baseS1_; std::operator-(std::_Bit_iterator_base const&,std::_Bit_iterator_base const&) +000B7E6D: mov [rbp+var_8], rax +000B7E71: jmp short loc_B7EC3 +000B7E73: lea rax, [rbp+var_60] +000B7E77: mov rdi, rax +000B7E7A: call __ZNSt13_Bit_iteratormmEv; std::_Bit_iterator::operator--(void) +000B7E7F: mov rdi, rax +000B7E82: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000B7E87: mov [rbp+var_40], rax +000B7E8B: mov [rbp+var_38], rdx +000B7E8F: lea rax, [rbp+var_70] +000B7E93: mov rdi, rax +000B7E96: call __ZNSt13_Bit_iteratormmEv; std::_Bit_iterator::operator--(void) +000B7E9B: mov rdi, rax +000B7E9E: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000B7EA3: mov [rbp+var_30], rax +000B7EA7: mov [rbp+var_28], rdx +000B7EAB: lea rdx, [rbp+var_40] +000B7EAF: lea rax, [rbp+var_30] +000B7EB3: mov rsi, rdx +000B7EB6: mov rdi, rax +000B7EB9: call __ZNSt14_Bit_referenceaSERKS_; std::_Bit_reference::operator=(std::_Bit_reference const&) +000B7EBE: sub [rbp+var_8], 1 +000B7EC3: cmp [rbp+var_8], 0 +000B7EC8: jg short loc_B7E73 +000B7ECA: mov rax, [rbp+var_70] +000B7ECE: mov [rbp+var_20], rax +000B7ED2: mov rax, [rbp+var_68] +000B7ED6: mov [rbp+var_18], rax +000B7EDA: mov rax, [rbp+var_20] +000B7EDE: mov rdx, [rbp+var_18] +000B7EE2: leave +000B7EE3: retn + +### FUNC 000B7EE4 - 000B7F15 (49 bytes) name=_ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_ +000B7EE4: push rbp +000B7EE5: mov rbp, rsp +000B7EE8: sub rsp, 30h +000B7EEC: mov [rbp+var_18], rdi +000B7EF0: mov [rbp+var_20], rsi +000B7EF4: mov [rbp+var_28], rdx +000B7EF8: mov [rbp+var_1], 1 +000B7EFC: mov rdx, [rbp+var_28] +000B7F00: mov rcx, [rbp+var_20] +000B7F04: mov rax, [rbp+var_18] +000B7F08: mov rsi, rcx +000B7F0B: mov rdi, rax +000B7F0E: call __ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_; std::__copy_move::__copy_m(ulong const*,ulong const*,ulong *) +000B7F13: leave +000B7F14: retn + +### FUNC 000B7F15 - 000B7F41 (44 bytes) name=_ZNSt10_Iter_baseISt19_Bit_const_iteratorLb0EE7_S_baseES0_ +000B7F15: push rbp +000B7F16: mov rbp, rsp +000B7F19: mov rdx, rdi +000B7F1C: mov rax, rsi +000B7F1F: mov [rbp+var_20], rdx +000B7F23: mov [rbp+var_18], rax +000B7F27: mov rax, [rbp+var_20] +000B7F2B: mov [rbp+var_10], rax +000B7F2F: mov rax, [rbp+var_18] +000B7F33: mov [rbp+var_8], rax +000B7F37: mov rax, [rbp+var_10] +000B7F3B: mov rdx, [rbp+var_8] +000B7F3F: pop rbp +000B7F40: retn + +### FUNC 000B7F41 - 000B7F82 (65 bytes) name=_ZSt12__niter_baseISt19_Bit_const_iteratorENSt11_Niter_baseIT_E13iterator_typeES2_ +000B7F41: push rbp +000B7F42: mov rbp, rsp +000B7F45: sub rsp, 30h +000B7F49: mov rdx, rdi +000B7F4C: mov rax, rsi +000B7F4F: mov [rbp+var_20], rdx +000B7F53: mov [rbp+var_18], rax +000B7F57: mov rdx, [rbp+var_20] +000B7F5B: mov rax, [rbp+var_18] +000B7F5F: mov rdi, rdx +000B7F62: mov rsi, rax +000B7F65: call __ZNSt10_Iter_baseISt19_Bit_const_iteratorLb0EE7_S_baseES0_; std::_Iter_base::_S_base(std::_Bit_const_iterator) +000B7F6A: mov rcx, rax +000B7F6D: mov rax, rdx +000B7F70: mov [rbp+var_10], rcx +000B7F74: mov [rbp+var_8], rax +000B7F78: mov rax, [rbp+var_10] +000B7F7C: mov rdx, [rbp+var_8] +000B7F80: leave +000B7F81: retn + +### FUNC 000B7F82 - 000B7FEA (104 bytes) name=_ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ +000B7F82: push rbp +000B7F83: mov rbp, rsp +000B7F86: sub rsp, 60h +000B7F8A: mov rax, rcx +000B7F8D: mov rcx, r9 +000B7F90: mov [rbp+var_30], rdi +000B7F94: mov [rbp+var_28], rsi +000B7F98: mov [rbp+var_40], rdx +000B7F9C: mov [rbp+var_38], rax +000B7FA0: mov [rbp+var_50], r8 +000B7FA4: mov [rbp+var_48], rcx +000B7FA8: mov [rbp+var_1], 0 +000B7FAC: mov r8, [rbp+var_50] +000B7FB0: mov rdi, [rbp+var_48] +000B7FB4: mov rdx, [rbp+var_40] +000B7FB8: mov rcx, [rbp+var_38] +000B7FBC: mov rsi, [rbp+var_30] +000B7FC0: mov rax, [rbp+var_28] +000B7FC4: mov r9, rdi +000B7FC7: mov rdi, rsi +000B7FCA: mov rsi, rax +000B7FCD: call __ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_; std::__copy_move::__copy_m(std::_Bit_const_iterator,std::_Bit_const_iterator,std::_Bit_iterator) +000B7FD2: mov rcx, rax +000B7FD5: mov rax, rdx +000B7FD8: mov [rbp+var_20], rcx +000B7FDC: mov [rbp+var_18], rax +000B7FE0: mov rax, [rbp+var_20] +000B7FE4: mov rdx, [rbp+var_18] +000B7FE8: leave +000B7FE9: retn + +### FUNC 000B7FEA - 000B80A2 (184 bytes) name=_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_ +000B7FEA: push rbp +000B7FEB: mov rbp, rsp +000B7FEE: add rsp, 0FFFFFFFFFFFFFF80h +000B7FF2: mov rax, rcx +000B7FF5: mov rcx, r9 +000B7FF8: mov [rbp+var_50], rdi +000B7FFC: mov [rbp+var_48], rsi +000B8000: mov [rbp+var_60], rdx +000B8004: mov [rbp+var_58], rax +000B8008: mov [rbp+var_70], r8 +000B800C: mov [rbp+var_68], rcx +000B8010: lea rdx, [rbp+var_50] +000B8014: lea rax, [rbp+var_60] +000B8018: mov rsi, rdx +000B801B: mov rdi, rax +000B801E: call __ZStmiRKSt18_Bit_iterator_baseS1_; std::operator-(std::_Bit_iterator_base const&,std::_Bit_iterator_base const&) +000B8023: mov [rbp+var_8], rax +000B8027: jmp short loc_B8081 +000B8029: lea rax, [rbp+var_50] +000B802D: mov rdi, rax +000B8030: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000B8035: mov [rbp+var_40], rax +000B8039: mov [rbp+var_38], rdx +000B803D: lea rax, [rbp+var_70] +000B8041: mov rdi, rax +000B8044: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000B8049: mov [rbp+var_30], rax +000B804D: mov [rbp+var_28], rdx +000B8051: lea rdx, [rbp+var_40] +000B8055: lea rax, [rbp+var_30] +000B8059: mov rsi, rdx +000B805C: mov rdi, rax +000B805F: call __ZNSt14_Bit_referenceaSERKS_; std::_Bit_reference::operator=(std::_Bit_reference const&) +000B8064: lea rax, [rbp+var_50] +000B8068: mov rdi, rax +000B806B: call __ZNSt13_Bit_iteratorppEv; std::_Bit_iterator::operator++(void) +000B8070: lea rax, [rbp+var_70] +000B8074: mov rdi, rax +000B8077: call __ZNSt13_Bit_iteratorppEv; std::_Bit_iterator::operator++(void) +000B807C: sub [rbp+var_8], 1 +000B8081: cmp [rbp+var_8], 0 +000B8086: jg short loc_B8029 +000B8088: mov rax, [rbp+var_70] +000B808C: mov [rbp+var_20], rax +000B8090: mov rax, [rbp+var_68] +000B8094: mov [rbp+var_18], rax +000B8098: mov rax, [rbp+var_20] +000B809C: mov rdx, [rbp+var_18] +000B80A0: leave +000B80A1: retn + +### FUNC 000B80A2 - 000B80BC (26 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE8max_sizeERKS9_ +000B80A2: push rbp +000B80A3: mov rbp, rsp +000B80A6: sub rsp, 10h +000B80AA: mov [rbp+var_8], rdi +000B80AE: mov rax, [rbp+var_8] +000B80B2: mov rdi, rax +000B80B5: call __ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS9_EENSt9enable_ifIXsrNSA_16__maxsize_helperIT_EE5valueEmE4typeERSF_; std::allocator_traits>> *>>::_S_max_size>> *> const>(std::allocator>> *> const&) +000B80BA: leave +000B80BB: retn + +### FUNC 000B80BC - 000B80CA (14 bytes) name=_ZNKSt12_Vector_baseIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS8_EE19_M_get_Tp_allocatorEv +000B80BC: push rbp +000B80BD: mov rbp, rsp +000B80C0: mov [rbp+var_8], rdi +000B80C4: mov rax, [rbp+var_8] +000B80C8: pop rbp +000B80C9: retn + +### FUNC 000B80CA - 000B80DE (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv +000B80CA: push rbp +000B80CB: mov rbp, rsp +000B80CE: mov [rbp+var_8], rdi +000B80D2: mov rax, 1FFFFFFFFFFFFFFFh +000B80DC: pop rbp +000B80DD: retn + +### FUNC 000B80DE - 000B80F7 (25 bytes) name=_ZNSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEC2ES9_ +000B80DE: push rbp; Alternative name is 'std::move_iterator>> **>::move_iterator(nlohmann::basic_json>> **)' +000B80DF: mov rbp, rsp +000B80E2: mov [rbp+var_8], rdi +000B80E6: mov [rbp+var_10], rsi +000B80EA: mov rax, [rbp+var_8] +000B80EE: mov rdx, [rbp+var_10] +000B80F2: mov [rax], rdx +000B80F5: pop rbp +000B80F6: retn + +### FUNC 000B80F7 - 000B8124 (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +000B80F7: push rbp +000B80F8: mov rbp, rsp +000B80FB: sub rsp, 20h +000B80FF: mov [rbp+var_10], rdi +000B8103: mov [rbp+var_20], rsi +000B8107: mov [rbp+var_18], rdx +000B810B: mov rdx, [rbp+var_18] +000B810F: mov rcx, [rbp+var_20] +000B8113: mov rax, [rbp+var_10] +000B8117: mov rsi, rcx +000B811A: mov rdi, rax +000B811D: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESC_EET0_T_SF_SE_; std::__uninitialized_copy::__uninit_copy>> **>,nlohmann::basic_json>> **>(std::move_iterator>> **>,std::move_iterator>> **>,nlohmann::basic_json>> **) +000B8122: leave +000B8123: retn + +### FUNC 000B8124 - 000B8155 (49 bytes) name=_ZSt13__copy_move_aILb1EPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES8_ET1_T0_SA_S9_ +000B8124: push rbp +000B8125: mov rbp, rsp +000B8128: sub rsp, 30h +000B812C: mov [rbp+var_18], rdi +000B8130: mov [rbp+var_20], rsi +000B8134: mov [rbp+var_28], rdx +000B8138: mov [rbp+var_1], 0 +000B813C: mov rdx, [rbp+var_28] +000B8140: mov rcx, [rbp+var_20] +000B8144: mov rax, [rbp+var_18] +000B8148: mov rsi, rcx +000B814B: mov rdi, rax +000B814E: call __ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESB_EET0_T_SD_SC_; std::__copy_move::__copy_m>> *,nlohmann::basic_json>> *>(nlohmann::basic_json>> *,nlohmann::basic_json>> *,nlohmann::basic_json>> *) +000B8153: leave +000B8154: retn + +### FUNC 000B8155 - 000B8199 (68 bytes) name=_ZN8nlohmann6detail20external_constructorILNS0_7value_tE3EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_RKNSC_8string_tE +000B8155: push rbp +000B8156: mov rbp, rsp +000B8159: sub rsp, 20h +000B815D: mov [rbp+var_18], rdi +000B8161: mov [rbp+var_20], rsi +000B8165: mov rax, [rbp+var_18] +000B8169: mov byte ptr [rax], 3 +000B816C: mov rdx, [rbp+var_20] +000B8170: lea rax, [rbp+var_10] +000B8174: mov rsi, rdx +000B8177: mov rdi, rax +000B817A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2ERKSs; nlohmann::basic_json>>::json_value::json_value(std::string const&) +000B817F: mov rax, [rbp+var_18] +000B8183: mov rdx, [rbp+var_10] +000B8187: mov [rax+8], rdx +000B818B: mov rax, [rbp+var_18] +000B818F: mov rdi, rax +000B8192: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B8197: leave +000B8198: retn + +### FUNC 000B8199 - 000B8204 (107 bytes) name=_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSt21piecewise_construct_tSt5tupleIJRS2_EESJ_IJEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_ +000B8199: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_IRKSt21piecewise_construct_tSt5tupleIIRS2_EESJ_IIEEEEENSt9enable_ifIXsrNSE_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSD_PSP_DpOSQ_' +000B819A: mov rbp, rsp +000B819D: push r12 +000B819F: push rbx +000B81A0: sub rsp, 30h +000B81A4: mov [rbp+var_18], rdi +000B81A8: mov [rbp+var_20], rsi +000B81AC: mov [rbp+var_28], rdx +000B81B0: mov [rbp+var_30], rcx +000B81B4: mov [rbp+var_38], r8 +000B81B8: mov rax, [rbp+var_38] +000B81BC: mov rdi, rax +000B81BF: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B81C4: mov r12, rax +000B81C7: mov rax, [rbp+var_30] +000B81CB: mov rdi, rax +000B81CE: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B81D3: mov rbx, rax +000B81D6: mov rax, [rbp+var_28] +000B81DA: mov rdi, rax +000B81DD: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B81E2: mov rdx, rax +000B81E5: mov rsi, [rbp+var_20] +000B81E9: mov rax, [rbp+var_18] +000B81ED: mov r8, r12 +000B81F0: mov rcx, rbx +000B81F3: mov rdi, rax +000B81F6: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJRS3_EESJ_IJEEEEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>>>::construct>>>>,std::piecewise_construct_t const&,std::tuple,std::tuple<>>(std::_Rb_tree_node>>>> *) +000B81FB: add rsp, 30h +000B81FF: pop rbx +000B8200: pop r12 +000B8202: pop rbp +000B8203: retn + +### FUNC 000B8204 - 000B8230 (44 bytes) name=_ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEdLi0EEEvRT_T0_ +000B8204: push rbp +000B8205: mov rbp, rsp +000B8208: sub rsp, 20h +000B820C: mov [rbp+var_8], rdi +000B8210: movsd [rbp+var_10], xmm0 +000B8215: mov rax, [rbp+var_10] +000B8219: mov rdx, [rbp+var_8] +000B821D: mov [rbp+var_18], rax +000B8221: movsd xmm0, [rbp+var_18] +000B8226: mov rdi, rdx +000B8229: call __ZN8nlohmann6detail20external_constructorILNS0_7value_tE7EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_14number_float_tE; nlohmann::detail::external_constructor<(nlohmann::detail::value_t)7>::construct>>>(nlohmann::basic_json>> &,nlohmann::basic_json>>::number_float_t) +000B822E: leave +000B822F: retn + +### FUNC 000B8230 - 000B8255 (37 bytes) name=_ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEbLi0EEEvRT_T0_ +000B8230: push rbp +000B8231: mov rbp, rsp +000B8234: sub rsp, 10h +000B8238: mov [rbp+var_8], rdi +000B823C: mov eax, esi +000B823E: mov [rbp+var_C], al +000B8241: movzx edx, [rbp+var_C] +000B8245: mov rax, [rbp+var_8] +000B8249: mov esi, edx +000B824B: mov rdi, rax +000B824E: call __ZN8nlohmann6detail20external_constructorILNS0_7value_tE4EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_9boolean_tE; nlohmann::detail::external_constructor<(nlohmann::detail::value_t)4>::construct>>>(nlohmann::basic_json>> &,nlohmann::basic_json>>::boolean_t) +000B8253: leave +000B8254: retn + +### FUNC 000B8255 - 000B827A (37 bytes) name=_ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEElLi0EEEvRT_T0_ +000B8255: push rbp +000B8256: mov rbp, rsp +000B8259: sub rsp, 10h +000B825D: mov [rbp+var_8], rdi +000B8261: mov [rbp+var_10], rsi +000B8265: mov rdx, [rbp+var_10] +000B8269: mov rax, [rbp+var_8] +000B826D: mov rsi, rdx +000B8270: mov rdi, rax +000B8273: call __ZN8nlohmann6detail20external_constructorILNS0_7value_tE5EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_16number_integer_tE; nlohmann::detail::external_constructor<(nlohmann::detail::value_t)5>::construct>>>(nlohmann::basic_json>> &,nlohmann::basic_json>>::number_integer_t) +000B8278: leave +000B8279: retn + +### FUNC 000B827A - 000B829F (37 bytes) name=_ZN8nlohmann6detail7to_jsonINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES4_IhSaIhEEEEmLi0EEEvRT_T0_ +000B827A: push rbp +000B827B: mov rbp, rsp +000B827E: sub rsp, 10h +000B8282: mov [rbp+var_8], rdi +000B8286: mov [rbp+var_10], rsi +000B828A: mov rdx, [rbp+var_10] +000B828E: mov rax, [rbp+var_8] +000B8292: mov rsi, rdx +000B8295: mov rdi, rax +000B8298: call __ZN8nlohmann6detail20external_constructorILNS0_7value_tE6EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_17number_unsigned_tE; nlohmann::detail::external_constructor<(nlohmann::detail::value_t)6>::construct>>>(nlohmann::basic_json>> &,nlohmann::basic_json>>::number_unsigned_t) +000B829D: leave +000B829E: retn + +### FUNC 000B82A0 - 000B8315 (117 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JNS1_6detail7value_tEEEEvPT_DpOT0_ +000B82A0: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_INS1_6detail7value_tEEEEvPT_DpOT0_' +000B82A1: mov rbp, rsp +000B82A4: push r13 +000B82A6: push r12 +000B82A8: push rbx +000B82A9: sub rsp, 28h +000B82AD: mov [rbp+var_28], rdi +000B82B1: mov [rbp+var_30], rsi +000B82B5: mov [rbp+var_38], rdx +000B82B9: mov rax, [rbp+var_38] +000B82BD: mov rdi, rax +000B82C0: call __ZSt7forwardIN8nlohmann6detail7value_tEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B82C5: movzx r13d, byte ptr [rax] +000B82C9: mov r12, [rbp+var_30] +000B82CD: mov rsi, r12; void * +000B82D0: mov edi, 10h; unsigned __int64 +000B82D5: call __ZnwmPv; operator new(ulong,void *) +000B82DA: mov rbx, rax +000B82DD: test rbx, rbx +000B82E0: jz short loc_B82EF +000B82E2: mov esi, r13d +000B82E5: mov rdi, rbx +000B82E8: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ENS_6detail7value_tE; nlohmann::basic_json>>::basic_json(nlohmann::detail::value_t) +000B82ED: jmp short loc_B830A +000B82EF: jmp short loc_B830A +000B82F1: mov r13, rax +000B82F4: mov rsi, r12; void * +000B82F7: mov rdi, rbx; void * +000B82FA: call __ZdlPvS_; operator delete(void *,void *) +000B82FF: mov rax, r13 +000B8302: mov rdi, rax; struct _Unwind_Exception * +000B8305: call __Unwind_Resume +000B830A: add rsp, 28h +000B830E: pop rbx +000B830F: pop r12 +000B8311: pop r13 +000B8313: pop rbp +000B8314: retn + +### FUNC 000B8316 - 000B835A (68 bytes) name=_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_JS9_EEEvPT_DpOT0_ +000B8316: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS9_IS9_EEEvPT_DpOT0_' +000B8317: mov rbp, rsp +000B831A: push rbx +000B831B: sub rsp, 28h +000B831F: mov [rbp+var_18], rdi +000B8323: mov [rbp+var_20], rsi +000B8327: mov [rbp+var_28], rdx +000B832B: mov rax, [rbp+var_28] +000B832F: mov rdi, rax +000B8332: call __ZSt7forwardIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward>> *>(std::remove_reference>> *>::type &) +000B8337: mov rbx, [rax] +000B833A: mov rax, [rbp+var_20] +000B833E: mov rsi, rax; void * +000B8341: mov edi, 8; unsigned __int64 +000B8346: call __ZnwmPv; operator new(ulong,void *) +000B834B: test rax, rax +000B834E: jz short loc_B8353 +000B8350: mov [rax], rbx +000B8353: add rsp, 28h +000B8357: pop rbx +000B8358: pop rbp +000B8359: retn + +### FUNC 000B835A - 000B83A6 (76 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRdEEEvPT_DpOT0_ +000B835A: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IRdEEEvPT_DpOT0_' +000B835B: mov rbp, rsp +000B835E: push rbx +000B835F: sub rsp, 28h +000B8363: mov [rbp+var_18], rdi +000B8367: mov [rbp+var_20], rsi +000B836B: mov [rbp+var_28], rdx +000B836F: mov rax, [rbp+var_28] +000B8373: mov rdi, rax +000B8376: call __ZSt7forwardIRdEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B837B: mov rbx, rax +000B837E: mov rax, [rbp+var_20] +000B8382: mov rsi, rax; void * +000B8385: mov edi, 10h; unsigned __int64 +000B838A: call __ZnwmPv; operator new(ulong,void *) +000B838F: test rax, rax +000B8392: jz short loc_B839F +000B8394: mov rsi, rbx +000B8397: mov rdi, rax +000B839A: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRddLi0EEEOT_; nlohmann::basic_json>>::basic_json(double &) +000B839F: add rsp, 28h +000B83A3: pop rbx +000B83A4: pop rbp +000B83A5: retn + +### FUNC 000B83A6 - 000B83F2 (76 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRbEEEvPT_DpOT0_ +000B83A6: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IRbEEEvPT_DpOT0_' +000B83A7: mov rbp, rsp +000B83AA: push rbx +000B83AB: sub rsp, 28h +000B83AF: mov [rbp+var_18], rdi +000B83B3: mov [rbp+var_20], rsi +000B83B7: mov [rbp+var_28], rdx +000B83BB: mov rax, [rbp+var_28] +000B83BF: mov rdi, rax +000B83C2: call __ZSt7forwardIRbEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B83C7: mov rbx, rax +000B83CA: mov rax, [rbp+var_20] +000B83CE: mov rsi, rax; void * +000B83D1: mov edi, 10h; unsigned __int64 +000B83D6: call __ZnwmPv; operator new(ulong,void *) +000B83DB: test rax, rax +000B83DE: jz short loc_B83EB +000B83E0: mov rsi, rbx +000B83E3: mov rdi, rax +000B83E6: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRbbLi0EEEOT_; nlohmann::basic_json>>::basic_json(bool &) +000B83EB: add rsp, 28h +000B83EF: pop rbx +000B83F0: pop rbp +000B83F1: retn + +### FUNC 000B83F2 - 000B843E (76 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JDnEEEvPT_DpOT0_ +000B83F2: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IDnEEEvPT_DpOT0_' +000B83F3: mov rbp, rsp +000B83F6: push rbx +000B83F7: sub rsp, 28h +000B83FB: mov [rbp+var_18], rdi +000B83FF: mov [rbp+var_20], rsi +000B8403: mov [rbp+var_28], rdx +000B8407: mov rax, [rbp+var_28] +000B840B: mov rdi, rax +000B840E: call __ZSt7forwardIDnEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B8413: mov rbx, [rax] +000B8416: mov rax, [rbp+var_20] +000B841A: mov rsi, rax; void * +000B841D: mov edi, 10h; unsigned __int64 +000B8422: call __ZnwmPv; operator new(ulong,void *) +000B8427: test rax, rax +000B842A: jz short loc_B8437 +000B842C: mov rsi, rbx +000B842F: mov rdi, rax +000B8432: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +000B8437: add rsp, 28h +000B843B: pop rbx +000B843C: pop rbp +000B843D: retn + +### FUNC 000B843E - 000B848A (76 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRlEEEvPT_DpOT0_ +000B843E: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IRlEEEvPT_DpOT0_' +000B843F: mov rbp, rsp +000B8442: push rbx +000B8443: sub rsp, 28h +000B8447: mov [rbp+var_18], rdi +000B844B: mov [rbp+var_20], rsi +000B844F: mov [rbp+var_28], rdx +000B8453: mov rax, [rbp+var_28] +000B8457: mov rdi, rax +000B845A: call __ZSt7forwardIRlEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B845F: mov rbx, rax +000B8462: mov rax, [rbp+var_20] +000B8466: mov rsi, rax; void * +000B8469: mov edi, 10h; unsigned __int64 +000B846E: call __ZnwmPv; operator new(ulong,void *) +000B8473: test rax, rax +000B8476: jz short loc_B8483 +000B8478: mov rsi, rbx +000B847B: mov rdi, rax +000B847E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRllLi0EEEOT_; nlohmann::basic_json>>::basic_json(long &) +000B8483: add rsp, 28h +000B8487: pop rbx +000B8488: pop rbp +000B8489: retn + +### FUNC 000B848A - 000B84FE (116 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRSsEEEvPT_DpOT0_ +000B848A: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IRSsEEEvPT_DpOT0_' +000B848B: mov rbp, rsp +000B848E: push r13 +000B8490: push r12 +000B8492: push rbx +000B8493: sub rsp, 28h +000B8497: mov [rbp+var_28], rdi +000B849B: mov [rbp+var_30], rsi +000B849F: mov [rbp+var_38], rdx +000B84A3: mov rax, [rbp+var_38] +000B84A7: mov rdi, rax +000B84AA: call __ZSt7forwardIRSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B84AF: mov r13, rax +000B84B2: mov r12, [rbp+var_30] +000B84B6: mov rsi, r12; void * +000B84B9: mov edi, 10h; unsigned __int64 +000B84BE: call __ZnwmPv; operator new(ulong,void *) +000B84C3: mov rbx, rax +000B84C6: test rbx, rbx +000B84C9: jz short loc_B84D8 +000B84CB: mov rsi, r13 +000B84CE: mov rdi, rbx +000B84D1: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRSsSsLi0EEEOT_; nlohmann::basic_json>>::basic_json(std::string &) +000B84D6: jmp short loc_B84F3 +000B84D8: jmp short loc_B84F3 +000B84DA: mov r13, rax +000B84DD: mov rsi, r12; void * +000B84E0: mov rdi, rbx; void * +000B84E3: call __ZdlPvS_; operator delete(void *,void *) +000B84E8: mov rax, r13 +000B84EB: mov rdi, rax; struct _Unwind_Exception * +000B84EE: call __Unwind_Resume +000B84F3: add rsp, 28h +000B84F7: pop rbx +000B84F8: pop r12 +000B84FA: pop r13 +000B84FC: pop rbp +000B84FD: retn + +### FUNC 000B84FE - 000B854A (76 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_JRmEEEvPT_DpOT0_ +000B84FE: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE9constructIS8_IRmEEEvPT_DpOT0_' +000B84FF: mov rbp, rsp +000B8502: push rbx +000B8503: sub rsp, 28h +000B8507: mov [rbp+var_18], rdi +000B850B: mov [rbp+var_20], rsi +000B850F: mov [rbp+var_28], rdx +000B8513: mov rax, [rbp+var_28] +000B8517: mov rdi, rax +000B851A: call __ZSt7forwardIRmEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B851F: mov rbx, rax +000B8522: mov rax, [rbp+var_20] +000B8526: mov rsi, rax; void * +000B8529: mov edi, 10h; unsigned __int64 +000B852E: call __ZnwmPv; operator new(ulong,void *) +000B8533: test rax, rax +000B8536: jz short loc_B8543 +000B8538: mov rsi, rbx +000B853B: mov rdi, rax +000B853E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2IRmmLi0EEEOT_; nlohmann::basic_json>>::basic_json(ulong &) +000B8543: add rsp, 28h +000B8547: pop rbx +000B8548: pop rbp +000B8549: retn + +### FUNC 000B854A - 000B8564 (26 bytes) name=_ZNSt10_Iter_baseISt13move_iteratorIP19struct_TerminalListELb1EE7_S_baseES3_ +000B854A: push rbp +000B854B: mov rbp, rsp +000B854E: sub rsp, 10h +000B8552: mov [rbp+var_10], rdi +000B8556: lea rax, [rbp+var_10] +000B855A: mov rdi, rax +000B855D: call __ZNKSt13move_iteratorIP19struct_TerminalListE4baseEv; std::move_iterator::base(void) +000B8562: leave +000B8563: retn + +### FUNC 000B8564 - 000B8595 (49 bytes) name=_ZSt13__copy_move_aILb1EP19struct_TerminalListS1_ET1_T0_S3_S2_ +000B8564: push rbp +000B8565: mov rbp, rsp +000B8568: sub rsp, 30h +000B856C: mov [rbp+var_18], rdi +000B8570: mov [rbp+var_20], rsi +000B8574: mov [rbp+var_28], rdx +000B8578: mov [rbp+var_1], 1 +000B857C: mov rdx, [rbp+var_28] +000B8580: mov rcx, [rbp+var_20] +000B8584: mov rax, [rbp+var_18] +000B8588: mov rsi, rcx +000B858B: mov rdi, rax +000B858E: call __ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mI19struct_TerminalListEEPT_PKS4_S7_S5_; std::__copy_move::__copy_m(struct_TerminalList const*,struct_TerminalList const*,struct_TerminalList *) +000B8593: leave +000B8594: retn + +### FUNC 000B8595 - 000B859F (10 bytes) name=_ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_ +000B8595: push rbp +000B8596: mov rbp, rsp +000B8599: mov [rbp+var_8], rdi +000B859D: pop rbp +000B859E: retn + +### FUNC 000B859F - 000B85C2 (35 bytes) name=_ZSt9__advanceIPhlEvRT_T0_St26random_access_iterator_tag +000B859F: push rbp +000B85A0: mov rbp, rsp +000B85A3: mov [rbp+var_8], rdi +000B85A7: mov [rbp+var_10], rsi +000B85AB: mov rax, [rbp+var_8] +000B85AF: mov rdx, [rax] +000B85B2: mov rax, [rbp+var_10] +000B85B6: add rdx, rax +000B85B9: mov rax, [rbp+var_8] +000B85BD: mov [rax], rdx +000B85C0: pop rbp +000B85C1: retn + +### FUNC 000B85C2 - 000B85FA (56 bytes) name=_ZNSt16allocator_traitsISaIhEE9constructIhJhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000B85C2: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIhEE9constructIhIhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_' +000B85C3: mov rbp, rsp +000B85C6: sub rsp, 20h +000B85CA: mov [rbp+var_8], rdi +000B85CE: mov [rbp+var_10], rsi +000B85D2: mov [rbp+var_18], rdx +000B85D6: mov rax, [rbp+var_18] +000B85DA: mov rdi, rax +000B85DD: call __ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B85E2: mov rdx, rax +000B85E5: mov rcx, [rbp+var_10] +000B85E9: mov rax, [rbp+var_8] +000B85ED: mov rsi, rcx +000B85F0: mov rdi, rax +000B85F3: call __ZNSt16allocator_traitsISaIhEE12_S_constructIhJhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_; std::allocator_traits>::_S_construct(std::allocator&,uchar*,uchar&&) +000B85F8: leave +000B85F9: retn + +### FUNC 000B85FA - 000B87CA (464 bytes) name=_ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJhEEEvDpOT_ +000B85FA: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(unsigned char &&)' +000B85FB: mov rbp, rsp +000B85FE: push rbx +000B85FF: sub rsp, 38h +000B8603: mov [rbp+var_38], rdi +000B8607: mov [rbp+var_40], rsi +000B860B: mov rax, [rbp+var_38] +000B860F: lea rdx, aVectorMEmplace; "vector::_M_emplace_back_aux" +000B8616: mov esi, 1 +000B861B: mov rdi, rax +000B861E: call __ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000B8623: mov [rbp+var_20], rax +000B8627: mov rax, [rbp+var_38] +000B862B: mov rdx, [rbp+var_20] +000B862F: mov rsi, rdx +000B8632: mov rdi, rax +000B8635: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000B863A: mov [rbp+var_28], rax +000B863E: mov rax, [rbp+var_28] +000B8642: mov [rbp+var_18], rax +000B8646: mov rax, [rbp+var_40] +000B864A: mov rdi, rax +000B864D: call __ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B8652: mov rbx, rax +000B8655: mov rax, [rbp+var_38] +000B8659: mov rdi, rax +000B865C: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000B8661: mov rdx, [rbp+var_28] +000B8665: lea rcx, [rax+rdx] +000B8669: mov rax, [rbp+var_38] +000B866D: mov rdx, rbx +000B8670: mov rsi, rcx +000B8673: mov rdi, rax +000B8676: call __ZNSt16allocator_traitsISaIhEE9constructIhJhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000B867B: mov [rbp+var_18], 0 +000B8683: mov rax, [rbp+var_38] +000B8687: mov rdi, rax +000B868A: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000B868F: mov rcx, rax +000B8692: mov rax, [rbp+var_38] +000B8696: mov rsi, [rax+8] +000B869A: mov rax, [rbp+var_38] +000B869E: mov rax, [rax] +000B86A1: mov rdx, [rbp+var_28] +000B86A5: mov rdi, rax +000B86A8: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +000B86AD: mov [rbp+var_18], rax +000B86B1: add [rbp+var_18], 1 +000B86B6: mov rax, [rbp+var_38] +000B86BA: mov rdi, rax +000B86BD: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000B86C2: mov rdx, rax +000B86C5: mov rax, [rbp+var_38] +000B86C9: mov rcx, [rax+8] +000B86CD: mov rax, [rbp+var_38] +000B86D1: mov rax, [rax] +000B86D4: mov rsi, rcx +000B86D7: mov rdi, rax +000B86DA: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000B86DF: mov rax, [rbp+var_38] +000B86E3: mov rax, [rax+10h] +000B86E7: mov rdx, rax +000B86EA: mov rax, [rbp+var_38] +000B86EE: mov rax, [rax] +000B86F1: sub rdx, rax +000B86F4: mov rax, rdx +000B86F7: mov rdx, rax +000B86FA: mov rax, [rbp+var_38] +000B86FE: mov rcx, [rax] +000B8701: mov rax, [rbp+var_38] +000B8705: mov rsi, rcx +000B8708: mov rdi, rax +000B870B: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000B8710: mov rax, [rbp+var_38] +000B8714: mov rdx, [rbp+var_28] +000B8718: mov [rax], rdx +000B871B: mov rax, [rbp+var_38] +000B871F: mov rdx, [rbp+var_18] +000B8723: mov [rax+8], rdx +000B8727: mov rax, [rbp+var_20] +000B872B: mov rdx, [rbp+var_28] +000B872F: add rdx, rax +000B8732: mov rax, [rbp+var_38] +000B8736: mov [rax+10h], rdx +000B873A: jmp loc_B87C3 +000B873F: mov rdi, rax; void * +000B8742: call ___cxa_begin_catch +000B8747: cmp [rbp+var_18], 0 +000B874C: jnz short loc_B8772 +000B874E: mov rax, [rbp+var_38] +000B8752: mov rdi, rax +000B8755: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000B875A: mov rdx, [rbp+var_28] +000B875E: add rdx, rax +000B8761: mov rax, [rbp+var_38] +000B8765: mov rsi, rdx +000B8768: mov rdi, rax +000B876B: call __ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,uchar *) +000B8770: jmp short loc_B8794 +000B8772: mov rax, [rbp+var_38] +000B8776: mov rdi, rax +000B8779: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000B877E: mov rdx, rax +000B8781: mov rcx, [rbp+var_18] +000B8785: mov rax, [rbp+var_28] +000B8789: mov rsi, rcx +000B878C: mov rdi, rax +000B878F: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000B8794: mov rax, [rbp+var_38] +000B8798: mov rdx, [rbp+var_20] +000B879C: mov rcx, [rbp+var_28] +000B87A0: mov rsi, rcx +000B87A3: mov rdi, rax +000B87A6: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000B87AB: call ___cxa_rethrow +000B87B0: mov rbx, rax +000B87B3: call ___cxa_end_catch +000B87B8: mov rax, rbx +000B87BB: mov rdi, rax; struct _Unwind_Exception * +000B87BE: call __Unwind_Resume +000B87C3: add rsp, 38h +000B87C7: pop rbx +000B87C8: pop rbp +000B87C9: retn + +### FUNC 000B87CA - 000B87EF (37 bytes) name=_ZNSt16allocator_traitsISaIhEE10_S_destroyIhEENSt9enable_ifIXsrNS1_16__destroy_helperIT_EE5valueEvE4typeERS0_PS5_ +000B87CA: push rbp +000B87CB: mov rbp, rsp +000B87CE: sub rsp, 10h +000B87D2: mov [rbp+var_8], rdi +000B87D6: mov [rbp+var_10], rsi +000B87DA: mov rdx, [rbp+var_10] +000B87DE: mov rax, [rbp+var_8] +000B87E2: mov rsi, rdx +000B87E5: mov rdi, rax +000B87E8: call __ZN9__gnu_cxx13new_allocatorIhE7destroyIhEEvPT_; __gnu_cxx::new_allocator::destroy(uchar *) +000B87ED: leave +000B87EE: retn + +### FUNC 000B87F0 - 000B8873 (131 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2Ev +000B87F0: push rbp; Alternative name is 'std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>::_Rb_tree_impl, true>::_Rb_tree_impl(void)' +000B87F1: mov rbp, rsp +000B87F4: push rbx +000B87F5: sub rsp, 18h +000B87F9: mov [rbp+var_18], rdi +000B87FD: mov rax, [rbp+var_18] +000B8801: mov rdi, rax +000B8804: call __ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2Ev; std::allocator>>>>>::allocator(void) +000B8809: mov rax, [rbp+var_18] +000B880D: mov dword ptr [rax+8], 0 +000B8814: mov rax, [rbp+var_18] +000B8818: mov qword ptr [rax+10h], 0 +000B8820: mov rax, [rbp+var_18] +000B8824: mov qword ptr [rax+18h], 0 +000B882C: mov rax, [rbp+var_18] +000B8830: mov qword ptr [rax+20h], 0 +000B8838: mov rax, [rbp+var_18] +000B883C: mov qword ptr [rax+28h], 0 +000B8844: mov rax, [rbp+var_18] +000B8848: mov rdi, rax +000B884B: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EE13_M_initializeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree_impl,true>::_M_initialize(void) +000B8850: jmp short loc_B886C +000B8852: mov rbx, rax +000B8855: mov rax, [rbp+var_18] +000B8859: mov rdi, rax +000B885C: call __ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev; std::allocator>>>>>::~allocator() +000B8861: mov rax, rbx +000B8864: mov rdi, rax; struct _Unwind_Exception * +000B8867: call __Unwind_Resume +000B886C: add rsp, 18h +000B8870: pop rbx +000B8871: pop rbp +000B8872: retn + +### FUNC 000B8874 - 000B88A6 (50 bytes) name=_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +000B8874: push rbp; Alternative name is '_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC1IIOSsEIEEESt21piecewise_construct_tSt5tupleIIDpT_EESD_IIDpT0_EE' +000B8875: mov rbp, rsp +000B8878: sub rsp, 30h +000B887C: mov [rbp+var_18], rdi +000B8880: mov [rbp+var_20], rsi +000B8884: lea rdx, [rbp+arg_8] +000B8888: mov rcx, [rbp+var_20] +000B888C: mov rax, [rbp+var_18] +000B8890: mov [rsp+30h+var_28], r9b +000B8895: mov [rsp+30h+var_30], r8b +000B8899: mov rsi, rcx +000B889C: mov rdi, rax +000B889F: call __ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000B88A4: leave +000B88A5: retn + +### FUNC 000B88A6 - 000B8938 (146 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EEC2ERKSE_RKSaISt13_Rb_tree_nodeISA_EE +000B88A6: push rbp; Alternative name is 'std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>::_Rb_tree_impl, true>::_Rb_tree_impl(std::less const&, std::allocator>>>>>::allocator(std::allocator>>>>> const&) +000B88CE: mov rax, [rbp+var_18] +000B88D2: mov dword ptr [rax+8], 0 +000B88D9: mov rax, [rbp+var_18] +000B88DD: mov qword ptr [rax+10h], 0 +000B88E5: mov rax, [rbp+var_18] +000B88E9: mov qword ptr [rax+18h], 0 +000B88F1: mov rax, [rbp+var_18] +000B88F5: mov qword ptr [rax+20h], 0 +000B88FD: mov rax, [rbp+var_18] +000B8901: mov qword ptr [rax+28h], 0 +000B8909: mov rax, [rbp+var_18] +000B890D: mov rdi, rax +000B8910: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EE13_M_initializeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_Rb_tree_impl,true>::_M_initialize(void) +000B8915: jmp short loc_B8931 +000B8917: mov rbx, rax +000B891A: mov rax, [rbp+var_18] +000B891E: mov rdi, rax +000B8921: call __ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEED2Ev; std::allocator>>>>>::~allocator() +000B8926: mov rax, rbx +000B8929: mov rdi, rax; struct _Unwind_Exception * +000B892C: call __Unwind_Resume +000B8931: add rsp, 28h +000B8935: pop rbx +000B8936: pop rbp +000B8937: retn + +### FUNC 000B8938 - 000B894A (18 bytes) name=_ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_rootEv +000B8938: push rbp +000B8939: mov rbp, rsp +000B893C: mov [rbp+var_8], rdi +000B8940: mov rax, [rbp+var_8] +000B8944: mov rax, [rax+10h] +000B8948: pop rbp +000B8949: retn + +### FUNC 000B894A - 000B8A9C (338 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_ +000B894A: push rbp +000B894B: mov rbp, rsp +000B894E: push rbx +000B894F: sub rsp, 38h +000B8953: mov [rbp+var_28], rdi +000B8957: mov [rbp+var_30], rsi +000B895B: mov [rbp+var_38], rdx +000B895F: mov rdx, [rbp+var_30] +000B8963: mov rax, [rbp+var_28] +000B8967: mov rsi, rdx +000B896A: mov rdi, rax +000B896D: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_clone_node(std::_Rb_tree_node>>>> const*) +000B8972: mov [rbp+var_18], rax +000B8976: mov rax, [rbp+var_18] +000B897A: mov rdx, [rbp+var_38] +000B897E: mov [rax+8], rdx +000B8982: mov rax, [rbp+var_30] +000B8986: mov rax, [rax+18h] +000B898A: test rax, rax +000B898D: jz short loc_B89B9 +000B898F: mov rax, [rbp+var_30] +000B8993: mov rdi, rax +000B8996: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base const*) +000B899B: mov rcx, rax +000B899E: mov rdx, [rbp+var_18] +000B89A2: mov rax, [rbp+var_28] +000B89A6: mov rsi, rcx +000B89A9: mov rdi, rax +000B89AC: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_copy(std::_Rb_tree_node>>>> const*,std::_Rb_tree_node>>>>*) +000B89B1: mov rdx, [rbp+var_18] +000B89B5: mov [rdx+18h], rax +000B89B9: mov rax, [rbp+var_18] +000B89BD: mov [rbp+var_38], rax +000B89C1: mov rax, [rbp+var_30] +000B89C5: mov rdi, rax +000B89C8: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_left(std::_Rb_tree_node_base const*) +000B89CD: mov [rbp+var_30], rax +000B89D1: jmp short loc_B8A51 +000B89D3: mov rdx, [rbp+var_30] +000B89D7: mov rax, [rbp+var_28] +000B89DB: mov rsi, rdx +000B89DE: mov rdi, rax +000B89E1: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_clone_node(std::_Rb_tree_node>>>> const*) +000B89E6: mov [rbp+var_20], rax +000B89EA: mov rax, [rbp+var_38] +000B89EE: mov rdx, [rbp+var_20] +000B89F2: mov [rax+10h], rdx +000B89F6: mov rax, [rbp+var_20] +000B89FA: mov rdx, [rbp+var_38] +000B89FE: mov [rax+8], rdx +000B8A02: mov rax, [rbp+var_30] +000B8A06: mov rax, [rax+18h] +000B8A0A: test rax, rax +000B8A0D: jz short loc_B8A39 +000B8A0F: mov rax, [rbp+var_30] +000B8A13: mov rdi, rax +000B8A16: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_right(std::_Rb_tree_node_base const*) +000B8A1B: mov rcx, rax +000B8A1E: mov rdx, [rbp+var_20] +000B8A22: mov rax, [rbp+var_28] +000B8A26: mov rsi, rcx +000B8A29: mov rdi, rax +000B8A2C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_M_copyEPKSt13_Rb_tree_nodeISA_EPSI_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_copy(std::_Rb_tree_node>>>> const*,std::_Rb_tree_node>>>>*) +000B8A31: mov rdx, [rbp+var_20] +000B8A35: mov [rdx+18h], rax +000B8A39: mov rax, [rbp+var_20] +000B8A3D: mov [rbp+var_38], rax +000B8A41: mov rax, [rbp+var_30] +000B8A45: mov rdi, rax +000B8A48: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPKSt18_Rb_tree_node_base; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_S_left(std::_Rb_tree_node_base const*) +000B8A4D: mov [rbp+var_30], rax +000B8A51: cmp [rbp+var_30], 0 +000B8A56: jnz loc_B89D3 +000B8A5C: mov rax, [rbp+var_18] +000B8A60: jmp short loc_B8A95 +000B8A62: mov rdi, rax; void * +000B8A65: call ___cxa_begin_catch +000B8A6A: mov rdx, [rbp+var_18] +000B8A6E: mov rax, [rbp+var_28] +000B8A72: mov rsi, rdx +000B8A75: mov rdi, rax +000B8A78: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_erase(std::_Rb_tree_node>>>> *) +000B8A7D: call ___cxa_rethrow +000B8A82: mov rbx, rax +000B8A85: call ___cxa_end_catch +000B8A8A: mov rax, rbx +000B8A8D: mov rdi, rax; struct _Unwind_Exception * +000B8A90: call __Unwind_Resume +000B8A95: add rsp, 38h +000B8A99: pop rbx +000B8A9A: pop rbp +000B8A9B: retn + +### FUNC 000B8A9C - 000B8AAE (18 bytes) name=_ZNKSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_M_beginEv +000B8A9C: push rbp +000B8A9D: mov rbp, rsp +000B8AA0: mov [rbp+var_8], rdi +000B8AA4: mov rax, [rbp+var_8] +000B8AA8: mov rax, [rax+10h] +000B8AAC: pop rbp +000B8AAD: retn + +### FUNC 000B8AAE - 000B8AC8 (26 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_minimumEPSt18_Rb_tree_node_base +000B8AAE: push rbp +000B8AAF: mov rbp, rsp +000B8AB2: sub rsp, 10h +000B8AB6: mov [rbp+var_8], rdi +000B8ABA: mov rax, [rbp+var_8] +000B8ABE: mov rdi, rax +000B8AC1: call __ZNSt18_Rb_tree_node_base10_S_minimumEPS_; std::_Rb_tree_node_base::_S_minimum(std::_Rb_tree_node_base*) +000B8AC6: leave +000B8AC7: retn + +### FUNC 000B8AC8 - 000B8AE2 (26 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE10_S_maximumEPSt18_Rb_tree_node_base +000B8AC8: push rbp +000B8AC9: mov rbp, rsp +000B8ACC: sub rsp, 10h +000B8AD0: mov [rbp+var_8], rdi +000B8AD4: mov rax, [rbp+var_8] +000B8AD8: mov rdi, rax +000B8ADB: call __ZNSt18_Rb_tree_node_base10_S_maximumEPS_; std::_Rb_tree_node_base::_S_maximum(std::_Rb_tree_node_base*) +000B8AE0: leave +000B8AE1: retn + +### FUNC 000B8AE2 - 000B8B0B (41 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE37select_on_container_copy_constructionERKS8_ +000B8AE2: push rbp +000B8AE3: mov rbp, rsp +000B8AE6: sub rsp, 10h +000B8AEA: mov [rbp+var_8], rdi +000B8AEE: mov [rbp+var_10], rsi +000B8AF2: mov rax, [rbp+var_8] +000B8AF6: mov rdx, [rbp+var_10] +000B8AFA: mov rsi, rdx +000B8AFD: mov rdi, rax +000B8B00: call __ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9_S_selectIKS8_EENSt9enable_ifIXntsrNS9_15__select_helperIT_EE5valueESE_E4typeERSE_; std::allocator_traits>>>>::_S_select>>> const>(std::allocator>>> const&) +000B8B05: mov rax, [rbp+var_8] +000B8B09: leave +000B8B0A: retn + +### FUNC 000B8B0C - 000B8B31 (37 bytes) name=_ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7_ +000B8B0C: push rbp; Alternative name is 'std::allocator>>>::allocator(std::allocator>>> const&)' +000B8B0D: mov rbp, rsp +000B8B10: sub rsp, 10h +000B8B14: mov [rbp+var_8], rdi +000B8B18: mov [rbp+var_10], rsi +000B8B1C: mov rdx, [rbp+var_10] +000B8B20: mov rax, [rbp+var_8] +000B8B24: mov rsi, rdx +000B8B27: mov rdi, rax +000B8B2A: call __ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_; __gnu_cxx::new_allocator>>>::new_allocator(__gnu_cxx::new_allocator>>> const&) +000B8B2F: leave +000B8B30: retn + +### FUNC 000B8B32 - 000B8B7A (72 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE12_Vector_implC2ERKS8_ +000B8B32: push rbp; Alternative name is 'std::_Vector_base>>, std::allocator>>>>::_Vector_impl::_Vector_impl(std::allocator>>> const&)' +000B8B33: mov rbp, rsp +000B8B36: sub rsp, 10h +000B8B3A: mov [rbp+var_8], rdi +000B8B3E: mov [rbp+var_10], rsi +000B8B42: mov rdx, [rbp+var_10] +000B8B46: mov rax, [rbp+var_8] +000B8B4A: mov rsi, rdx +000B8B4D: mov rdi, rax +000B8B50: call __ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7_; std::allocator>>>::allocator(std::allocator>>> const&) +000B8B55: mov rax, [rbp+var_8] +000B8B59: mov qword ptr [rax], 0 +000B8B60: mov rax, [rbp+var_8] +000B8B64: mov qword ptr [rax+8], 0 +000B8B6C: mov rax, [rbp+var_8] +000B8B70: mov qword ptr [rax+10h], 0 +000B8B78: leave +000B8B79: retn + +### FUNC 000B8B7A - 000B8BCF (85 bytes) name=_ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE17_M_create_storageEm +000B8B7A: push rbp +000B8B7B: mov rbp, rsp +000B8B7E: sub rsp, 10h +000B8B82: mov [rbp+var_8], rdi +000B8B86: mov [rbp+var_10], rsi +000B8B8A: mov rdx, [rbp+var_10] +000B8B8E: mov rax, [rbp+var_8] +000B8B92: mov rsi, rdx +000B8B95: mov rdi, rax +000B8B98: call __ZNSt12_Vector_baseIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEESaIS7_EE11_M_allocateEm; std::_Vector_base>>,std::allocator>>>>::_M_allocate(ulong) +000B8B9D: mov rdx, [rbp+var_8] +000B8BA1: mov [rdx], rax +000B8BA4: mov rax, [rbp+var_8] +000B8BA8: mov rdx, [rax] +000B8BAB: mov rax, [rbp+var_8] +000B8BAF: mov [rax+8], rdx +000B8BB3: mov rax, [rbp+var_8] +000B8BB7: mov rax, [rax] +000B8BBA: mov rdx, [rbp+var_10] +000B8BBE: shl rdx, 4 +000B8BC2: add rdx, rax +000B8BC5: mov rax, [rbp+var_8] +000B8BC9: mov [rax+10h], rdx +000B8BCD: leave +000B8BCE: retn + +### FUNC 000B8BCF - 000B8BFC (45 bytes) name=_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEES5_IS9_SaIS9_EEEEPS9_ET0_T_SH_SG_ +000B8BCF: push rbp +000B8BD0: mov rbp, rsp +000B8BD3: sub rsp, 20h +000B8BD7: mov [rbp+var_10], rdi +000B8BDB: mov [rbp+var_20], rsi +000B8BDF: mov [rbp+var_18], rdx +000B8BE3: mov rdx, [rbp+var_18] +000B8BE7: mov rcx, [rbp+var_20] +000B8BEB: mov rax, [rbp+var_10] +000B8BEF: mov rsi, rcx +000B8BF2: mov rdi, rax +000B8BF5: call __ZNSt20__uninitialized_copyILb0EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEES7_ISB_SaISB_EEEEPSB_EET0_T_SJ_SI_; std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,nlohmann::basic_json>>*>(__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>,nlohmann::basic_json>>*) +000B8BFA: leave +000B8BFB: retn + +### FUNC 000B8BFC - 000B8C16 (26 bytes) name=_ZNSt10_Iter_baseISt13move_iteratorIPiELb1EE7_S_baseES2_ +000B8BFC: push rbp +000B8BFD: mov rbp, rsp +000B8C00: sub rsp, 10h +000B8C04: mov [rbp+var_10], rdi +000B8C08: lea rax, [rbp+var_10] +000B8C0C: mov rdi, rax +000B8C0F: call __ZNKSt13move_iteratorIPiE4baseEv; std::move_iterator::base(void) +000B8C14: leave +000B8C15: retn + +### FUNC 000B8C16 - 000B8C30 (26 bytes) name=_ZSt12__niter_baseIPiENSt11_Niter_baseIT_E13iterator_typeES2_ +000B8C16: push rbp +000B8C17: mov rbp, rsp +000B8C1A: sub rsp, 10h +000B8C1E: mov [rbp+var_8], rdi +000B8C22: mov rax, [rbp+var_8] +000B8C26: mov rdi, rax +000B8C29: call __ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_; std::_Iter_base::_S_base(int *) +000B8C2E: leave +000B8C2F: retn + +### FUNC 000B8C30 - 000B8C61 (49 bytes) name=_ZSt13__copy_move_aILb1EPiS0_ET1_T0_S2_S1_ +000B8C30: push rbp +000B8C31: mov rbp, rsp +000B8C34: sub rsp, 30h +000B8C38: mov [rbp+var_18], rdi +000B8C3C: mov [rbp+var_20], rsi +000B8C40: mov [rbp+var_28], rdx +000B8C44: mov [rbp+var_1], 1 +000B8C48: mov rdx, [rbp+var_28] +000B8C4C: mov rcx, [rbp+var_20] +000B8C50: mov rax, [rbp+var_18] +000B8C54: mov rsi, rcx +000B8C57: mov rdi, rax +000B8C5A: call __ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_; std::__copy_move::__copy_m(int const*,int const*,int *) +000B8C5F: leave +000B8C60: retn + +### FUNC 000B8C62 - 000B8C73 (17 bytes) name=_ZNKSt13move_iteratorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +000B8C62: push rbp +000B8C63: mov rbp, rsp +000B8C66: mov [rbp+var_8], rdi +000B8C6A: mov rax, [rbp+var_8] +000B8C6E: mov rax, [rax] +000B8C71: pop rbp +000B8C72: retn + +### FUNC 000B8C73 - 000B8CD8 (101 bytes) name=_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_ +000B8C73: push rbp +000B8C74: mov rbp, rsp +000B8C77: sub rsp, 30h +000B8C7B: mov [rbp+src], rdi +000B8C7F: mov [rbp+var_20], rsi +000B8C83: mov [rbp+dest], rdx +000B8C87: mov rdx, [rbp+var_20] +000B8C8B: mov rax, [rbp+src] +000B8C8F: sub rdx, rax +000B8C92: mov rax, rdx +000B8C95: sar rax, 3 +000B8C99: mov [rbp+var_8], rax +000B8C9D: cmp [rbp+var_8], 0 +000B8CA2: jz short loc_B8CC3 +000B8CA4: mov rax, [rbp+var_8] +000B8CA8: lea rdx, ds:0[rax*8]; n +000B8CB0: mov rcx, [rbp+src] +000B8CB4: mov rax, [rbp+dest] +000B8CB8: mov rsi, rcx; src +000B8CBB: mov rdi, rax; dest +000B8CBE: call _memmove +000B8CC3: mov rax, [rbp+var_8] +000B8CC7: lea rdx, ds:0[rax*8] +000B8CCF: mov rax, [rbp+dest] +000B8CD3: add rax, rdx +000B8CD6: leave +000B8CD7: retn + +### FUNC 000B8CD8 - 000B8D8C (180 bytes) name=_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_ +000B8CD8: push rbp +000B8CD9: mov rbp, rsp +000B8CDC: push rbx +000B8CDD: sub rsp, 78h +000B8CE1: mov rax, rcx +000B8CE4: mov rcx, r9 +000B8CE7: mov [rbp+var_50], rdi +000B8CEB: mov [rbp+var_48], rsi +000B8CEF: mov [rbp+var_60], rdx +000B8CF3: mov [rbp+var_58], rax +000B8CF7: mov [rbp+var_70], r8 +000B8CFB: mov [rbp+var_68], rcx +000B8CFF: lea rdx, [rbp+var_50] +000B8D03: lea rax, [rbp+var_60] +000B8D07: mov rsi, rdx +000B8D0A: mov rdi, rax +000B8D0D: call __ZStmiRKSt18_Bit_iterator_baseS1_; std::operator-(std::_Bit_iterator_base const&,std::_Bit_iterator_base const&) +000B8D12: mov [rbp+var_18], rax +000B8D16: jmp short loc_B8D66 +000B8D18: lea rax, [rbp+var_50] +000B8D1C: mov rdi, rax +000B8D1F: call __ZNKSt19_Bit_const_iteratordeEv; std::_Bit_const_iterator::operator*(void) +000B8D24: movzx ebx, al +000B8D27: lea rax, [rbp+var_70] +000B8D2B: mov rdi, rax +000B8D2E: call __ZNKSt13_Bit_iteratordeEv; std::_Bit_iterator::operator*(void) +000B8D33: mov [rbp+var_40], rax +000B8D37: mov [rbp+var_38], rdx +000B8D3B: lea rax, [rbp+var_40] +000B8D3F: mov esi, ebx +000B8D41: mov rdi, rax +000B8D44: call __ZNSt14_Bit_referenceaSEb; std::_Bit_reference::operator=(bool) +000B8D49: lea rax, [rbp+var_50] +000B8D4D: mov rdi, rax +000B8D50: call __ZNSt19_Bit_const_iteratorppEv; std::_Bit_const_iterator::operator++(void) +000B8D55: lea rax, [rbp+var_70] +000B8D59: mov rdi, rax +000B8D5C: call __ZNSt13_Bit_iteratorppEv; std::_Bit_iterator::operator++(void) +000B8D61: sub [rbp+var_18], 1 +000B8D66: cmp [rbp+var_18], 0 +000B8D6B: jg short loc_B8D18 +000B8D6D: mov rax, [rbp+var_70] +000B8D71: mov [rbp+var_30], rax +000B8D75: mov rax, [rbp+var_68] +000B8D79: mov [rbp+var_28], rax +000B8D7D: mov rax, [rbp+var_30] +000B8D81: mov rdx, [rbp+var_28] +000B8D85: add rsp, 78h +000B8D89: pop rbx +000B8D8A: pop rbp +000B8D8B: retn + +### FUNC 000B8D8C - 000B8DA6 (26 bytes) name=_ZNSt16allocator_traitsISaIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE11_S_max_sizeIKS9_EENSt9enable_ifIXsrNSA_16__maxsize_helperIT_EE5valueEmE4typeERSF_ +000B8D8C: push rbp +000B8D8D: mov rbp, rsp +000B8D90: sub rsp, 10h +000B8D94: mov [rbp+var_8], rdi +000B8D98: mov rax, [rbp+var_8] +000B8D9C: mov rdi, rax +000B8D9F: call __ZNK9__gnu_cxx13new_allocatorIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEE8max_sizeEv; __gnu_cxx::new_allocator>> *>::max_size(void) +000B8DA4: leave +000B8DA5: retn + +### FUNC 000B8DA6 - 000B8DD3 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEESC_EET0_T_SF_SE_ +000B8DA6: push rbp +000B8DA7: mov rbp, rsp +000B8DAA: sub rsp, 20h +000B8DAE: mov [rbp+var_10], rdi +000B8DB2: mov [rbp+var_20], rsi +000B8DB6: mov [rbp+var_18], rdx +000B8DBA: mov rdx, [rbp+var_18] +000B8DBE: mov rcx, [rbp+var_20] +000B8DC2: mov rax, [rbp+var_10] +000B8DC6: mov rsi, rcx +000B8DC9: mov rdi, rax +000B8DCC: call __ZSt4copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_; std::copy>> **>,nlohmann::basic_json>> **>(std::move_iterator>> **>,std::move_iterator>> **>,nlohmann::basic_json>> **) +000B8DD1: leave +000B8DD2: retn + +### FUNC 000B8DD3 - 000B8E58 (133 bytes) name=_ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEESB_EET0_T_SD_SC_ +000B8DD3: push rbp +000B8DD4: mov rbp, rsp +000B8DD7: sub rsp, 40h +000B8DDB: mov [rbp+var_28], rdi +000B8DDF: mov [rbp+var_30], rsi +000B8DE3: mov [rbp+var_38], rdx +000B8DE7: mov rdx, [rbp+var_30] +000B8DEB: mov rax, [rbp+var_28] +000B8DEF: sub rdx, rax +000B8DF2: mov rax, rdx +000B8DF5: sar rax, 4 +000B8DF9: mov [rbp+var_8], rax +000B8DFD: jmp short loc_B8E4B +000B8DFF: mov rax, [rbp+var_28] +000B8E03: mov rdi, rax +000B8E06: call __ZSt4moveIRN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEONSt16remove_referenceIT_E4typeEOSA_; std::move>> &>(nlohmann::basic_json>> &&&) +000B8E0B: mov rdx, rax +000B8E0E: lea rax, [rbp+var_20] +000B8E12: mov rsi, rdx +000B8E15: mov rdi, rax +000B8E18: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EOS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>>&&) +000B8E1D: lea rdx, [rbp+var_20] +000B8E21: mov rax, [rbp+var_38] +000B8E25: mov rsi, rdx +000B8E28: mov rdi, rax +000B8E2B: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEaSES6_; nlohmann::basic_json>>::operator=(nlohmann::basic_json>>) +000B8E30: lea rax, [rbp+var_20] +000B8E34: mov rdi, rax +000B8E37: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev; nlohmann::basic_json>>::~basic_json() +000B8E3C: add [rbp+var_28], 10h +000B8E41: add [rbp+var_38], 10h +000B8E46: sub [rbp+var_8], 1 +000B8E4B: cmp [rbp+var_8], 0 +000B8E50: jg short loc_B8DFF +000B8E52: mov rax, [rbp+var_38] +000B8E56: leave +000B8E57: retn + +### FUNC 000B8E58 - 000B8F00 (168 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSt21piecewise_construct_tSt5tupleIJRS3_EESJ_IJEEEEEvPT_DpOT0_ +000B8E58: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_IRKSt21piecewise_construct_tSt5tupleIIRS3_EESJ_IIEEEEEvPT_DpOT0_' +000B8E59: mov rbp, rsp +000B8E5C: push r15 +000B8E5E: push r14 +000B8E60: push r13 +000B8E62: push r12 +000B8E64: push rbx +000B8E65: sub rsp, 38h +000B8E69: mov [rbp+var_38], rdi +000B8E6D: mov [rbp+var_40], rsi +000B8E71: mov [rbp+var_48], rdx +000B8E75: mov [rbp+var_50], rcx +000B8E79: mov [rbp+var_58], r8 +000B8E7D: mov rax, [rbp+var_48] +000B8E81: mov rdi, rax +000B8E84: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B8E89: mov r13, rax +000B8E8C: mov rax, [rbp+var_50] +000B8E90: mov rdi, rax +000B8E93: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B8E98: mov r14, rax +000B8E9B: mov rax, [rbp+var_58] +000B8E9F: mov rdi, rax +000B8EA2: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B8EA7: mov r15, rax +000B8EAA: mov r12, [rbp+var_40] +000B8EAE: mov rsi, r12; void * +000B8EB1: mov edi, 38h ; '8'; unsigned __int64 +000B8EB6: call __ZnwmPv; operator new(ulong,void *) +000B8EBB: mov rbx, rax +000B8EBE: test rbx, rbx +000B8EC1: jz short loc_B8ED6 +000B8EC3: mov rcx, r15 +000B8EC6: mov rdx, r14 +000B8EC9: mov rsi, r13 +000B8ECC: mov rdi, rbx +000B8ECF: call __ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJRS1_EESG_IJEEEEEDpOT_; std::_Rb_tree_node>>>>::_Rb_tree_node,std::tuple<>>() +000B8ED4: jmp short loc_B8EF1 +000B8ED6: jmp short loc_B8EF1 +000B8ED8: mov r13, rax +000B8EDB: mov rsi, r12; void * +000B8EDE: mov rdi, rbx; void * +000B8EE1: call __ZdlPvS_; operator delete(void *,void *) +000B8EE6: mov rax, r13 +000B8EE9: mov rdi, rax; struct _Unwind_Exception * +000B8EEC: call __Unwind_Resume +000B8EF1: add rsp, 38h +000B8EF5: pop rbx +000B8EF6: pop r12 +000B8EF8: pop r13 +000B8EFA: pop r14 +000B8EFC: pop r15 +000B8EFE: pop rbp +000B8EFF: retn + +### FUNC 000B8F00 - 000B8F4B (75 bytes) name=_ZN8nlohmann6detail20external_constructorILNS0_7value_tE7EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_14number_float_tE +000B8F00: push rbp +000B8F01: mov rbp, rsp +000B8F04: sub rsp, 30h +000B8F08: mov [rbp+var_18], rdi +000B8F0C: movsd [rbp+var_20], xmm0 +000B8F11: mov rax, [rbp+var_18] +000B8F15: mov byte ptr [rax], 7 +000B8F18: mov rax, [rbp+var_20] +000B8F1C: lea rdx, [rbp+var_10] +000B8F20: mov [rbp+var_28], rax +000B8F24: movsd xmm0, [rbp+var_28] +000B8F29: mov rdi, rdx +000B8F2C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Ed; nlohmann::basic_json>>::json_value::json_value(double) +000B8F31: mov rax, [rbp+var_18] +000B8F35: mov rdx, [rbp+var_10] +000B8F39: mov [rax+8], rdx +000B8F3D: mov rax, [rbp+var_18] +000B8F41: mov rdi, rax +000B8F44: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B8F49: leave +000B8F4A: retn + +### FUNC 000B8F4B - 000B8F8F (68 bytes) name=_ZN8nlohmann6detail20external_constructorILNS0_7value_tE4EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_9boolean_tE +000B8F4B: push rbp +000B8F4C: mov rbp, rsp +000B8F4F: sub rsp, 20h +000B8F53: mov [rbp+var_18], rdi +000B8F57: mov eax, esi +000B8F59: mov [rbp+var_1C], al +000B8F5C: mov rax, [rbp+var_18] +000B8F60: mov byte ptr [rax], 4 +000B8F63: movzx edx, [rbp+var_1C] +000B8F67: lea rax, [rbp+var_10] +000B8F6B: mov esi, edx +000B8F6D: mov rdi, rax +000B8F70: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Eb; nlohmann::basic_json>>::json_value::json_value(bool) +000B8F75: mov rax, [rbp+var_18] +000B8F79: mov rdx, [rbp+var_10] +000B8F7D: mov [rax+8], rdx +000B8F81: mov rax, [rbp+var_18] +000B8F85: mov rdi, rax +000B8F88: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B8F8D: leave +000B8F8E: retn + +### FUNC 000B8F8F - 000B8FD3 (68 bytes) name=_ZN8nlohmann6detail20external_constructorILNS0_7value_tE5EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_16number_integer_tE +000B8F8F: push rbp +000B8F90: mov rbp, rsp +000B8F93: sub rsp, 20h +000B8F97: mov [rbp+var_18], rdi +000B8F9B: mov [rbp+var_20], rsi +000B8F9F: mov rax, [rbp+var_18] +000B8FA3: mov byte ptr [rax], 5 +000B8FA6: mov rdx, [rbp+var_20] +000B8FAA: lea rax, [rbp+var_10] +000B8FAE: mov rsi, rdx +000B8FB1: mov rdi, rax +000B8FB4: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2El; nlohmann::basic_json>>::json_value::json_value(long) +000B8FB9: mov rax, [rbp+var_18] +000B8FBD: mov rdx, [rbp+var_10] +000B8FC1: mov [rax+8], rdx +000B8FC5: mov rax, [rbp+var_18] +000B8FC9: mov rdi, rax +000B8FCC: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B8FD1: leave +000B8FD2: retn + +### FUNC 000B8FD3 - 000B9017 (68 bytes) name=_ZN8nlohmann6detail20external_constructorILNS0_7value_tE6EE9constructINS_10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES7_IhSaIhEEEEEEvRT_NSC_17number_unsigned_tE +000B8FD3: push rbp +000B8FD4: mov rbp, rsp +000B8FD7: sub rsp, 20h +000B8FDB: mov [rbp+var_18], rdi +000B8FDF: mov [rbp+var_20], rsi +000B8FE3: mov rax, [rbp+var_18] +000B8FE7: mov byte ptr [rax], 6 +000B8FEA: mov rdx, [rbp+var_20] +000B8FEE: lea rax, [rbp+var_10] +000B8FF2: mov rsi, rdx +000B8FF5: mov rdi, rax +000B8FF8: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE10json_valueC2Em; nlohmann::basic_json>>::json_value::json_value(ulong) +000B8FFD: mov rax, [rbp+var_18] +000B9001: mov rdx, [rbp+var_10] +000B9005: mov [rax+8], rdx +000B9009: mov rax, [rbp+var_18] +000B900D: mov rdi, rax +000B9010: call __ZNK8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEE16assert_invariantEv; nlohmann::basic_json>>::assert_invariant(void) +000B9015: leave +000B9016: retn + +### FUNC 000B9018 - 000B9029 (17 bytes) name=_ZNKSt13move_iteratorIP19struct_TerminalListE4baseEv +000B9018: push rbp +000B9019: mov rbp, rsp +000B901C: mov [rbp+var_8], rdi +000B9020: mov rax, [rbp+var_8] +000B9024: mov rax, [rax] +000B9027: pop rbp +000B9028: retn + +### FUNC 000B9029 - 000B90AB (130 bytes) name=_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mI19struct_TerminalListEEPT_PKS4_S7_S5_ +000B9029: push rbp +000B902A: mov rbp, rsp +000B902D: sub rsp, 30h +000B9031: mov [rbp+src], rdi +000B9035: mov [rbp+var_20], rsi +000B9039: mov [rbp+dest], rdx +000B903D: mov rdx, [rbp+var_20] +000B9041: mov rax, [rbp+src] +000B9045: sub rdx, rax +000B9048: mov rax, rdx +000B904B: sar rax, 2 +000B904F: mov rdx, rax +000B9052: mov rax, 0EEEEEEEEEEEEEEEFh +000B905C: imul rax, rdx +000B9060: mov [rbp+var_8], rax +000B9064: cmp [rbp+var_8], 0 +000B9069: jz short loc_B9090 +000B906B: mov rax, [rbp+var_8] +000B906F: shl rax, 2 +000B9073: mov rdx, rax +000B9076: shl rdx, 4 +000B907A: sub rdx, rax; n +000B907D: mov rcx, [rbp+src] +000B9081: mov rax, [rbp+dest] +000B9085: mov rsi, rcx; src +000B9088: mov rdi, rax; dest +000B908B: call _memmove +000B9090: mov rax, [rbp+var_8] +000B9094: shl rax, 2 +000B9098: mov rdx, rax +000B909B: shl rdx, 4 +000B909F: sub rdx, rax +000B90A2: mov rax, [rbp+dest] +000B90A6: add rax, rdx +000B90A9: leave +000B90AA: retn + +### FUNC 000B90AB - 000B90E3 (56 bytes) name=_ZNSt16allocator_traitsISaIhEE12_S_constructIhJhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +000B90AB: push rbp; Alternative name is 'std::enable_if>::__construct_helper>::value, void>::type std::allocator_traits>::_S_construct(std::allocator&, unsigned char*, unsigned char&&)' +000B90AC: mov rbp, rsp +000B90AF: sub rsp, 20h +000B90B3: mov [rbp+var_8], rdi +000B90B7: mov [rbp+var_10], rsi +000B90BB: mov [rbp+var_18], rdx +000B90BF: mov rax, [rbp+var_18] +000B90C3: mov rdi, rax +000B90C6: call __ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B90CB: mov rdx, rax +000B90CE: mov rcx, [rbp+var_10] +000B90D2: mov rax, [rbp+var_8] +000B90D6: mov rsi, rcx +000B90D9: mov rdi, rax +000B90DC: call __ZN9__gnu_cxx13new_allocatorIhE9constructIhJhEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(uchar *,uchar &&) +000B90E1: leave +000B90E2: retn + +### FUNC 000B90E4 - 000B90F2 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIhE7destroyIhEEvPT_ +000B90E4: push rbp +000B90E5: mov rbp, rsp +000B90E8: mov [rbp+var_8], rdi +000B90EC: mov [rbp+var_10], rsi +000B90F0: pop rbp +000B90F1: retn + +### FUNC 000B90F2 - 000B910C (26 bytes) name=_ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2Ev +000B90F2: push rbp; Alternative name is 'std::allocator>>>>>::allocator(void)' +000B90F3: mov rbp, rsp +000B90F6: sub rsp, 10h +000B90FA: mov [rbp+var_8], rdi +000B90FE: mov rax, [rbp+var_8] +000B9102: mov rdi, rax +000B9105: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2Ev; __gnu_cxx::new_allocator>>>>>::new_allocator(void) +000B910A: leave +000B910B: retn + +### FUNC 000B910C - 000B914D (65 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_Rb_tree_implISE_Lb1EE13_M_initializeEv +000B910C: push rbp +000B910D: mov rbp, rsp +000B9110: mov [rbp+var_8], rdi +000B9114: mov rax, [rbp+var_8] +000B9118: mov dword ptr [rax+8], 0 +000B911F: mov rax, [rbp+var_8] +000B9123: mov qword ptr [rax+10h], 0 +000B912B: mov rax, [rbp+var_8] +000B912F: lea rdx, [rax+8] +000B9133: mov rax, [rbp+var_8] +000B9137: mov [rax+18h], rdx +000B913B: mov rax, [rbp+var_8] +000B913F: lea rdx, [rax+8] +000B9143: mov rax, [rbp+var_8] +000B9147: mov [rax+20h], rdx +000B914B: pop rbp +000B914C: retn + +### FUNC 000B914D - 000B9167 (26 bytes) name=_ZSt12__get_helperILm0EOSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS2_DpT1_EE +000B914D: push rbp; Alternative name is '_ZSt12__get_helperILm0EOSsIEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EIS2_DpT1_EE' +000B914E: mov rbp, rsp +000B9151: sub rsp, 10h +000B9155: mov [rbp+var_8], rdi +000B9159: mov rax, [rbp+var_8] +000B915D: mov rdi, rax +000B9160: call __ZNSt11_Tuple_implILm0EJOSsEE7_M_headERS1_; std::_Tuple_impl<0ul,std::string &&>::_M_head(std::string &&&) +000B9165: leave +000B9166: retn + +### FUNC 000B9167 - 000B9181 (26 bytes) name=_ZSt3getILm0EJOSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS6_ +000B9167: push rbp; Alternative name is 'std::__add_ref>::type>::type std::get<0ul, std::string &&>(std::string &&&)' +000B9168: mov rbp, rsp +000B916B: sub rsp, 10h +000B916F: mov [rbp+var_8], rdi +000B9173: mov rax, [rbp+var_8] +000B9177: mov rdi, rax +000B917A: call __ZSt12__get_helperILm0EOSsJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS2_DpT1_EE +000B917F: leave +000B9180: retn + +### FUNC 000B9182 - 000B91D3 (81 bytes) name=_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJOSsEJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000B9182: push rbp; Alternative name is '_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC1IIOSsEILm0EEIEIEEERSt5tupleIIDpT_EERSC_IIDpT1_EESt12_Index_tupleIIXspT0_EEESL_IIXspT2_EEE' +000B9183: mov rbp, rsp +000B9186: sub rsp, 20h +000B918A: mov [rbp+var_8], rdi +000B918E: mov [rbp+var_10], rsi +000B9192: mov [rbp+var_18], rdx +000B9196: mov rax, [rbp+var_10] +000B919A: mov rdi, rax +000B919D: call __ZSt3getILm0EJOSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS6_; std::get<0ul,std::string &&>(std::string &&&) +000B91A2: mov rdi, rax +000B91A5: call __ZSt7forwardIOSsEOT_RNSt16remove_referenceIS1_E4typeE; std::forward(std::remove_reference::type &) +000B91AA: mov rdx, rax +000B91AD: mov rax, [rbp+var_8] +000B91B1: mov rsi, rdx +000B91B4: mov rdi, rax +000B91B7: call __ZNSsC1EOSs; std::string::string(std::string &&) +000B91BC: mov rax, [rbp+var_8] +000B91C0: add rax, 8 +000B91C4: mov esi, 0 +000B91C9: mov rdi, rax +000B91CC: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +000B91D1: leave +000B91D2: retn + +### FUNC 000B91D4 - 000B91F9 (37 bytes) name=_ZNSaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEEC2ERKSC_ +000B91D4: push rbp; Alternative name is 'std::allocator>>>>>::allocator(std::allocator>>>>> const&)' +000B91D5: mov rbp, rsp +000B91D8: sub rsp, 10h +000B91DC: mov [rbp+var_8], rdi +000B91E0: mov [rbp+var_10], rsi +000B91E4: mov rdx, [rbp+var_10] +000B91E8: mov rax, [rbp+var_8] +000B91EC: mov rsi, rdx +000B91EF: mov rdi, rax +000B91F2: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2ERKSE_; __gnu_cxx::new_allocator>>>>>::new_allocator(__gnu_cxx::new_allocator>>>>> const&) +000B91F7: leave +000B91F8: retn + +### FUNC 000B91FA - 000B924F (85 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE13_M_clone_nodeEPKSt13_Rb_tree_nodeISA_E +000B91FA: push rbp +000B91FB: mov rbp, rsp +000B91FE: sub rsp, 20h +000B9202: mov [rbp+var_18], rdi +000B9206: mov [rbp+var_20], rsi +000B920A: mov rax, [rbp+var_20] +000B920E: lea rdx, [rax+20h] +000B9212: mov rax, [rbp+var_18] +000B9216: mov rsi, rdx +000B9219: mov rdi, rax +000B921C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSA_EEEPSt13_Rb_tree_nodeISA_EDpOT_; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_create_node>>> const&>(std::pair>>> const&) +000B9221: mov [rbp+var_8], rax +000B9225: mov rax, [rbp+var_20] +000B9229: mov edx, [rax] +000B922B: mov rax, [rbp+var_8] +000B922F: mov [rax], edx +000B9231: mov rax, [rbp+var_8] +000B9235: mov qword ptr [rax+10h], 0 +000B923D: mov rax, [rbp+var_8] +000B9241: mov qword ptr [rax+18h], 0 +000B9249: mov rax, [rbp+var_8] +000B924D: leave +000B924E: retn + +### FUNC 000B924F - 000B9261 (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE8_S_rightEPKSt18_Rb_tree_node_base +000B924F: push rbp +000B9250: mov rbp, rsp +000B9253: mov [rbp+var_8], rdi +000B9257: mov rax, [rbp+var_8] +000B925B: mov rax, [rax+18h] +000B925F: pop rbp +000B9260: retn + +### FUNC 000B9261 - 000B9273 (18 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE7_S_leftEPKSt18_Rb_tree_node_base +000B9261: push rbp +000B9262: mov rbp, rsp +000B9265: mov [rbp+var_8], rdi +000B9269: mov rax, [rbp+var_8] +000B926D: mov rax, [rax+10h] +000B9271: pop rbp +000B9272: retn + +### FUNC 000B9273 - 000B929C (41 bytes) name=_ZNSt16allocator_traitsISaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEE9_S_selectIKS8_EENSt9enable_ifIXntsrNS9_15__select_helperIT_EE5valueESE_E4typeERSE_ +000B9273: push rbp +000B9274: mov rbp, rsp +000B9277: sub rsp, 10h +000B927B: mov [rbp+var_8], rdi +000B927F: mov [rbp+var_10], rsi +000B9283: mov rdx, [rbp+var_10] +000B9287: mov rax, [rbp+var_8] +000B928B: mov rsi, rdx +000B928E: mov rdi, rax +000B9291: call __ZNSaIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEEEC2ERKS7__0; std::allocator>>>::allocator(std::allocator>>> const&) +000B9296: mov rax, [rbp+var_8] +000B929A: leave +000B929B: retn + +### FUNC 000B929C - 000B92AA (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +000B929C: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>::new_allocator(__gnu_cxx::new_allocator>>> const&)' +000B929D: mov rbp, rsp +000B92A0: mov [rbp+var_8], rdi +000B92A4: mov [rbp+var_10], rsi +000B92A8: pop rbp +000B92A9: retn + +### FUNC 000B92AA - 000B9357 (173 bytes) name=_ZNSt20__uninitialized_copyILb0EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEES7_ISB_SaISB_EEEEPSB_EET0_T_SJ_SI_ +000B92AA: push rbp +000B92AB: mov rbp, rsp +000B92AE: push rbx +000B92AF: sub rsp, 38h +000B92B3: mov [rbp+var_30], rdi +000B92B7: mov [rbp+var_40], rsi +000B92BB: mov [rbp+var_38], rdx +000B92BF: mov rax, [rbp+var_38] +000B92C3: mov [rbp+var_18], rax +000B92C7: jmp short loc_B9300 +000B92C9: lea rax, [rbp+var_30] +000B92CD: mov rdi, rax +000B92D0: call __ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::operator*(void) +000B92D5: mov rbx, rax +000B92D8: mov rax, [rbp+var_18] +000B92DC: mov rdi, rax +000B92DF: call __ZSt11__addressofIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEPT_RS8_; std::__addressof>>>(nlohmann::basic_json>>&) +000B92E4: mov rsi, rbx +000B92E7: mov rdi, rax +000B92EA: call __ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJRKS7_EEvPT_DpOT0_; std::_Construct>>,nlohmann::basic_json>> const&>(nlohmann::basic_json>> *,nlohmann::basic_json>> const&) +000B92EF: lea rax, [rbp+var_30] +000B92F3: mov rdi, rax +000B92F6: call __ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEppEv; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::operator++(void) +000B92FB: add [rbp+var_18], 10h +000B9300: lea rdx, [rbp+var_40] +000B9304: lea rax, [rbp+var_30] +000B9308: mov rsi, rdx +000B930B: mov rdi, rax +000B930E: call __ZN9__gnu_cxxneIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_; __gnu_cxx::operator!=>> const*,std::vector>>,std::allocator>>>>>(__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>> const&,__gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>> const&) +000B9313: test al, al +000B9315: jnz short loc_B92C9 +000B9317: mov rax, [rbp+var_18] +000B931B: jmp short loc_B9350 +000B931D: mov rdi, rax; void * +000B9320: call ___cxa_begin_catch +000B9325: mov rdx, [rbp+var_18] +000B9329: mov rax, [rbp+var_38] +000B932D: mov rsi, rdx +000B9330: mov rdi, rax +000B9333: call __ZSt8_DestroyIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEvT_S9_; std::_Destroy>> *>(nlohmann::basic_json>> *,nlohmann::basic_json>> *) +000B9338: call ___cxa_rethrow +000B933D: mov rbx, rax +000B9340: call ___cxa_end_catch +000B9345: mov rax, rbx +000B9348: mov rdi, rax; struct _Unwind_Exception * +000B934B: call __Unwind_Resume +000B9350: add rsp, 38h +000B9354: pop rbx +000B9355: pop rbp +000B9356: retn + +### FUNC 000B9358 - 000B9369 (17 bytes) name=_ZNKSt13move_iteratorIPiE4baseEv +000B9358: push rbp +000B9359: mov rbp, rsp +000B935C: mov [rbp+var_8], rdi +000B9360: mov rax, [rbp+var_8] +000B9364: mov rax, [rax] +000B9367: pop rbp +000B9368: retn + +### FUNC 000B9369 - 000B9377 (14 bytes) name=_ZNSt10_Iter_baseIPiLb0EE7_S_baseES0_ +000B9369: push rbp +000B936A: mov rbp, rsp +000B936D: mov [rbp+var_8], rdi +000B9371: mov rax, [rbp+var_8] +000B9375: pop rbp +000B9376: retn + +### FUNC 000B9377 - 000B93DC (101 bytes) name=_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_ +000B9377: push rbp +000B9378: mov rbp, rsp +000B937B: sub rsp, 30h +000B937F: mov [rbp+src], rdi +000B9383: mov [rbp+var_20], rsi +000B9387: mov [rbp+dest], rdx +000B938B: mov rdx, [rbp+var_20] +000B938F: mov rax, [rbp+src] +000B9393: sub rdx, rax +000B9396: mov rax, rdx +000B9399: sar rax, 2 +000B939D: mov [rbp+var_8], rax +000B93A1: cmp [rbp+var_8], 0 +000B93A6: jz short loc_B93C7 +000B93A8: mov rax, [rbp+var_8] +000B93AC: lea rdx, ds:0[rax*4]; n +000B93B4: mov rcx, [rbp+src] +000B93B8: mov rax, [rbp+dest] +000B93BC: mov rsi, rcx; src +000B93BF: mov rdi, rax; dest +000B93C2: call _memmove +000B93C7: mov rax, [rbp+var_8] +000B93CB: lea rdx, ds:0[rax*4] +000B93D3: mov rax, [rbp+dest] +000B93D7: add rax, rdx +000B93DA: leave +000B93DB: retn + +### FUNC 000B93DC - 000B9422 (70 bytes) name=_ZSt4copyISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEESA_ET0_T_SD_SC_ +000B93DC: push rbp +000B93DD: mov rbp, rsp +000B93E0: push rbx +000B93E1: sub rsp, 28h +000B93E5: mov [rbp+var_20], rdi +000B93E9: mov [rbp+var_30], rsi +000B93ED: mov [rbp+var_28], rdx +000B93F1: mov rax, [rbp+var_30] +000B93F5: mov rdi, rax +000B93F8: call __ZSt12__miter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEENSt11_Miter_baseIT_E13iterator_typeESD_; std::__miter_base>> **>>(std::move_iterator>> **>) +000B93FD: mov rbx, rax +000B9400: mov rax, [rbp+var_20] +000B9404: mov rdi, rax +000B9407: call __ZSt12__miter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEENSt11_Miter_baseIT_E13iterator_typeESD_; std::__miter_base>> **>>(std::move_iterator>> **>) +000B940C: mov rdx, [rbp+var_28] +000B9410: mov rsi, rbx +000B9413: mov rdi, rax +000B9416: call __ZSt14__copy_move_a2ILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_; std::__copy_move_a2>> **,nlohmann::basic_json>> **>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,nlohmann::basic_json>> **) +000B941B: add rsp, 28h +000B941F: pop rbx +000B9420: pop rbp +000B9421: retn + +### FUNC 000B9422 - 000B94C9 (167 bytes) name=_ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSt21piecewise_construct_tSt5tupleIJRS1_EESG_IJEEEEEDpOT_ +000B9422: push rbp; Alternative name is 'std::_Rb_tree_node>>>>::_Rb_tree_node, std::tuple<>>()' +000B9423: mov rbp, rsp +000B9426: push r12 +000B9428: push rbx +000B9429: sub rsp, 40h +000B942D: mov [rbp+var_28], rdi +000B9431: mov [rbp+var_30], rsi +000B9435: mov [rbp+var_38], rdx +000B9439: mov [rbp+var_40], rcx +000B943D: mov rax, [rbp+var_28] +000B9441: mov dword ptr [rax], 0 +000B9447: mov rax, [rbp+var_28] +000B944B: mov qword ptr [rax+8], 0 +000B9453: mov rax, [rbp+var_28] +000B9457: mov qword ptr [rax+10h], 0 +000B945F: mov rax, [rbp+var_28] +000B9463: mov qword ptr [rax+18h], 0 +000B946B: mov rax, [rbp+var_40] +000B946F: mov rdi, rax +000B9472: call __ZSt7forwardISt5tupleIJEEEOT_RNSt16remove_referenceIS2_E4typeE +000B9477: mov rax, [rbp+var_38] +000B947B: mov rdi, rax +000B947E: call __ZSt7forwardISt5tupleIJRKSsEEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward>(std::remove_reference>::type &) +000B9483: mov rdx, rax +000B9486: lea rax, [rbp+var_20] +000B948A: mov rsi, rdx +000B948D: mov rdi, rax +000B9490: call __ZNSt5tupleIJRKSsEEC2EOS2_; std::tuple::tuple(std::tuple&&) +000B9495: mov rax, [rbp+var_30] +000B9499: mov rdi, rax +000B949C: call __ZSt7forwardIRKSt21piecewise_construct_tEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000B94A1: mov rax, [rbp+var_28] +000B94A5: lea rdx, [rax+20h] +000B94A9: lea rax, [rbp+var_20] +000B94AD: mov [rsp+50h+var_48], r12b +000B94B2: mov [rsp+50h+var_50], bl +000B94B5: mov rsi, rax +000B94B8: mov rdi, rdx +000B94BB: call __ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +000B94C0: add rsp, 40h +000B94C4: pop rbx +000B94C5: pop r12 +000B94C7: pop rbp +000B94C8: retn + +### FUNC 000B94CA - 000B950D (67 bytes) name=_ZN9__gnu_cxx13new_allocatorIhE9constructIhJhEEEvPT_DpOT0_ +000B94CA: push rbp; Alternative name is 'void __gnu_cxx::new_allocator::construct(unsigned char *, unsigned char &&)' +000B94CB: mov rbp, rsp +000B94CE: push rbx +000B94CF: sub rsp, 28h +000B94D3: mov [rbp+var_18], rdi +000B94D7: mov [rbp+var_20], rsi +000B94DB: mov [rbp+var_28], rdx +000B94DF: mov rax, [rbp+var_28] +000B94E3: mov rdi, rax +000B94E6: call __ZSt7forwardIhEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000B94EB: movzx ebx, byte ptr [rax] +000B94EE: mov rax, [rbp+var_20] +000B94F2: mov rsi, rax; void * +000B94F5: mov edi, 1; unsigned __int64 +000B94FA: call __ZnwmPv; operator new(ulong,void *) +000B94FF: test rax, rax +000B9502: jz short loc_B9506 +000B9504: mov [rax], bl +000B9506: add rsp, 28h +000B950A: pop rbx +000B950B: pop rbp +000B950C: retn + +### FUNC 000B950E - 000B9518 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2Ev +000B950E: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>>>::new_allocator(void)' +000B950F: mov rbp, rsp +000B9512: mov [rbp+var_8], rdi +000B9516: pop rbp +000B9517: retn + +### FUNC 000B9518 - 000B9526 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEEC2ERKSE_ +000B9518: push rbp; Alternative name is '__gnu_cxx::new_allocator>>>>>::new_allocator(__gnu_cxx::new_allocator>>>>> const&)' +000B9519: mov rbp, rsp +000B951C: mov [rbp+var_8], rdi +000B9520: mov [rbp+var_10], rsi +000B9524: pop rbp +000B9525: retn + +### FUNC 000B9526 - 000B9534 (14 bytes) name=_ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE +000B9526: push rbp +000B9527: mov rbp, rsp +000B952A: mov [rbp+var_8], rdi +000B952E: mov rax, [rbp+var_8] +000B9532: pop rbp +000B9533: retn + +### FUNC 000B9534 - 000B95C2 (142 bytes) name=_ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE14_M_create_nodeIJRKSA_EEEPSt13_Rb_tree_nodeISA_EDpOT_ +000B9534: push rbp; Alternative name is 'std::_Rb_tree_node>>>> * std::_Rb_tree>>>, std::_Select1st>>>>, std::less, std::allocator>>>>>:: +000B9535: mov rbp, rsp +000B9538: push rbx +000B9539: sub rsp, 28h +000B953D: mov [rbp+var_28], rdi +000B9541: mov [rbp+var_30], rsi +000B9545: mov rax, [rbp+var_28] +000B9549: mov rdi, rax +000B954C: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_get_nodeEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_node(void) +000B9551: mov [rbp+var_18], rax +000B9555: mov rax, [rbp+var_30] +000B9559: mov rdi, rax +000B955C: call __ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE; std::forward>>> const&>(std::remove_reference>>> const&>::type &) +000B9561: mov rbx, rax +000B9564: mov rax, [rbp+var_28] +000B9568: mov rdi, rax +000B956B: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE21_M_get_Node_allocatorEv; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_get_Node_allocator(void) +000B9570: mov rcx, [rbp+var_18] +000B9574: mov rdx, rbx +000B9577: mov rsi, rcx +000B957A: mov rdi, rax +000B957D: call __ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSI_ +000B9582: mov rax, [rbp+var_18] +000B9586: jmp short loc_B95BB +000B9588: mov rdi, rax; void * +000B958B: call ___cxa_begin_catch +000B9590: mov rdx, [rbp+var_18] +000B9594: mov rax, [rbp+var_28] +000B9598: mov rsi, rdx +000B959B: mov rdi, rax +000B959E: call __ZNSt8_Rb_treeISsSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEESt10_Select1stISA_ESt4lessISsESaISA_EE11_M_put_nodeEPSt13_Rb_tree_nodeISA_E; std::_Rb_tree>>>,std::_Select1st>>>>,std::less,std::allocator>>>>>::_M_put_node(std::_Rb_tree_node>>>> *) +000B95A3: call ___cxa_rethrow +000B95A8: mov rbx, rax +000B95AB: call ___cxa_end_catch +000B95B0: mov rax, rbx +000B95B3: mov rdi, rax; struct _Unwind_Exception * +000B95B6: call __Unwind_Resume +000B95BB: add rsp, 28h +000B95BF: pop rbx +000B95C0: pop rbp +000B95C1: retn + +### FUNC 000B95C2 - 000B95FE (60 bytes) name=_ZN9__gnu_cxxneIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_ +000B95C2: push rbp +000B95C3: mov rbp, rsp +000B95C6: push rbx +000B95C7: sub rsp, 18h +000B95CB: mov [rbp+var_18], rdi +000B95CF: mov [rbp+var_20], rsi +000B95D3: mov rax, [rbp+var_18] +000B95D7: mov rdi, rax +000B95DA: call __ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::base(void) +000B95DF: mov rbx, [rax] +000B95E2: mov rax, [rbp+var_20] +000B95E6: mov rdi, rax +000B95E9: call __ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEE4baseEv; __gnu_cxx::__normal_iterator>> const*,std::vector>>,std::allocator>>>>>::base(void) +000B95EE: mov rax, [rax] +000B95F1: cmp rbx, rax +000B95F4: setnz al +000B95F7: add rsp, 18h +000B95FB: pop rbx +000B95FC: pop rbp +000B95FD: retn + +### FUNC 000B95FE - 000B961E (32 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEppEv +000B95FE: push rbp +000B95FF: mov rbp, rsp +000B9602: mov [rbp+var_8], rdi +000B9606: mov rax, [rbp+var_8] +000B960A: mov rax, [rax] +000B960D: lea rdx, [rax+10h] +000B9611: mov rax, [rbp+var_8] +000B9615: mov [rax], rdx +000B9618: mov rax, [rbp+var_8] +000B961C: pop rbp +000B961D: retn + +### FUNC 000B961E - 000B962F (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEES4_IS8_SaIS8_EEEdeEv +000B961E: push rbp +000B961F: mov rbp, rsp +000B9622: mov [rbp+var_8], rdi +000B9626: mov rax, [rbp+var_8] +000B962A: mov rax, [rax] +000B962D: pop rbp +000B962E: retn + +### FUNC 000B962F - 000B969F (112 bytes) name=_ZSt10_ConstructIN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEJRKS7_EEvPT_DpOT0_ +000B962F: push rbp; Alternative name is 'void std::_Construct>>, nlohmann::basic_json>> const&>(nlohmann::basic_json>> *, nlohmann::basic_json>> const&)' +000B9630: mov rbp, rsp +000B9633: push r13 +000B9635: push r12 +000B9637: push rbx +000B9638: sub rsp, 18h +000B963C: mov [rbp+var_28], rdi +000B9640: mov [rbp+var_30], rsi +000B9644: mov rax, [rbp+var_30] +000B9648: mov rdi, rax +000B964B: call __ZSt7forwardIRKN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEEOT_RNSt16remove_referenceISA_E4typeE; std::forward>> const&>(std::remove_reference>> const&>::type &) +000B9650: mov r13, rax +000B9653: mov r12, [rbp+var_28] +000B9657: mov rsi, r12; void * +000B965A: mov edi, 10h; unsigned __int64 +000B965F: call __ZnwmPv; operator new(ulong,void *) +000B9664: mov rbx, rax +000B9667: test rbx, rbx +000B966A: jz short loc_B9679 +000B966C: mov rsi, r13 +000B966F: mov rdi, rbx +000B9672: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +000B9677: jmp short loc_B9694 +000B9679: jmp short loc_B9694 +000B967B: mov r13, rax +000B967E: mov rsi, r12; void * +000B9681: mov rdi, rbx; void * +000B9684: call __ZdlPvS_; operator delete(void *,void *) +000B9689: mov rax, r13 +000B968C: mov rdi, rax; struct _Unwind_Exception * +000B968F: call __Unwind_Resume +000B9694: add rsp, 18h +000B9698: pop rbx +000B9699: pop r12 +000B969B: pop r13 +000B969D: pop rbp +000B969E: retn + +### FUNC 000B969F - 000B96B9 (26 bytes) name=_ZSt12__miter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEENSt11_Miter_baseIT_E13iterator_typeESD_ +000B969F: push rbp +000B96A0: mov rbp, rsp +000B96A3: sub rsp, 10h +000B96A7: mov [rbp+var_10], rdi +000B96AB: mov rax, [rbp+var_10] +000B96AF: mov rdi, rax +000B96B2: call __ZNSt10_Iter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEELb1EE7_S_baseESB_; std::_Iter_base>> **>,true>::_S_base(std::move_iterator>> **>) +000B96B7: leave +000B96B8: retn + +### FUNC 000B96B9 - 000B9711 (88 bytes) name=_ZSt14__copy_move_a2ILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +000B96B9: push rbp +000B96BA: mov rbp, rsp +000B96BD: push r12 +000B96BF: push rbx +000B96C0: sub rsp, 20h +000B96C4: mov [rbp+var_18], rdi +000B96C8: mov [rbp+var_20], rsi +000B96CC: mov [rbp+var_28], rdx +000B96D0: mov rax, [rbp+var_28] +000B96D4: mov rdi, rax +000B96D7: call __ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_; std::__niter_base>> **>(nlohmann::basic_json>> **) +000B96DC: mov r12, rax +000B96DF: mov rax, [rbp+var_20] +000B96E3: mov rdi, rax +000B96E6: call __ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_; std::__niter_base>> **>(nlohmann::basic_json>> **) +000B96EB: mov rbx, rax +000B96EE: mov rax, [rbp+var_18] +000B96F2: mov rdi, rax +000B96F5: call __ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_; std::__niter_base>> **>(nlohmann::basic_json>> **) +000B96FA: mov rdx, r12 +000B96FD: mov rsi, rbx +000B9700: mov rdi, rax +000B9703: call __ZSt13__copy_move_aILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_; std::__copy_move_a>> **,nlohmann::basic_json>> **>(nlohmann::basic_json>> **,nlohmann::basic_json>> **,nlohmann::basic_json>> **) +000B9708: add rsp, 20h +000B970C: pop rbx +000B970D: pop r12 +000B970F: pop rbp +000B9710: retn + +### FUNC 000B9712 - 000B9744 (50 bytes) name=_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE +000B9712: push rbp; Alternative name is '_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC1IJRS0_EJEEESt21piecewise_construct_tSt5tupleIJDpT_EESD_IJDpT0_EE' +000B9713: mov rbp, rsp +000B9716: sub rsp, 30h +000B971A: mov [rbp+var_18], rdi +000B971E: mov [rbp+var_20], rsi +000B9722: lea rdx, [rbp+arg_8] +000B9726: mov rcx, [rbp+var_20] +000B972A: mov rax, [rbp+var_18] +000B972E: mov [rsp+30h+var_28], r9b +000B9733: mov [rsp+30h+var_30], r8b +000B9737: mov rsi, rcx +000B973A: mov rdi, rax +000B973D: call __ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000B9742: leave +000B9743: retn + +### FUNC 000B9744 - 000B977C (56 bytes) name=_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_JRKSB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSI_ +000B9744: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE9constructISC_IRKSB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSD_PT_DpOSI_' +000B9745: mov rbp, rsp +000B9748: sub rsp, 20h +000B974C: mov [rbp+var_8], rdi +000B9750: mov [rbp+var_10], rsi +000B9754: mov [rbp+var_18], rdx +000B9758: mov rax, [rbp+var_18] +000B975C: mov rdi, rax +000B975F: call __ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE; std::forward>>> const&>(std::remove_reference>>> const&>::type &) +000B9764: mov rdx, rax +000B9767: mov rcx, [rbp+var_10] +000B976B: mov rax, [rbp+var_8] +000B976F: mov rsi, rcx +000B9772: mov rdi, rax +000B9775: call __ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSB_EEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSK_DpOSL_; std::allocator_traits>>>>>>::_S_construct>>>>,std::pair>>> const&>(std::allocator>>>>>&,std::_Rb_tree_node>>>>*,std::pair>>> const&&&) +000B977A: leave +000B977B: retn + +### FUNC 000B977C - 000B9796 (26 bytes) name=_ZNSt10_Iter_baseISt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEELb1EE7_S_baseESB_ +000B977C: push rbp +000B977D: mov rbp, rsp +000B9780: sub rsp, 10h +000B9784: mov [rbp+var_10], rdi +000B9788: lea rax, [rbp+var_10] +000B978C: mov rdi, rax +000B978F: call __ZNKSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv; std::move_iterator>> **>::base(void) +000B9794: leave +000B9795: retn + +### FUNC 000B9796 - 000B97B0 (26 bytes) name=_ZSt12__niter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeESB_ +000B9796: push rbp +000B9797: mov rbp, rsp +000B979A: sub rsp, 10h +000B979E: mov [rbp+var_8], rdi +000B97A2: mov rax, [rbp+var_8] +000B97A6: mov rdi, rax +000B97A9: call __ZNSt10_Iter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEELb0EE7_S_baseES9_; std::_Iter_base>> **,false>::_S_base(nlohmann::basic_json>> **) +000B97AE: leave +000B97AF: retn + +### FUNC 000B97B0 - 000B97E1 (49 bytes) name=_ZSt13__copy_move_aILb1EPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEES9_ET1_T0_SB_SA_ +000B97B0: push rbp +000B97B1: mov rbp, rsp +000B97B4: sub rsp, 30h +000B97B8: mov [rbp+var_18], rdi +000B97BC: mov [rbp+var_20], rsi +000B97C0: mov [rbp+var_28], rdx +000B97C4: mov [rbp+var_1], 1 +000B97C8: mov rdx, [rbp+var_28] +000B97CC: mov rcx, [rbp+var_20] +000B97D0: mov rax, [rbp+var_18] +000B97D4: mov rsi, rcx +000B97D7: mov rdi, rax +000B97DA: call __ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEPT_PKSC_SF_SD_; std::__copy_move::__copy_m>> *>(nlohmann::basic_json>> * const*,nlohmann::basic_json>> * const*,nlohmann::basic_json>> * *) +000B97DF: leave +000B97E0: retn + +### FUNC 000B97E2 - 000B9833 (81 bytes) name=_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE +000B97E2: push rbp; Alternative name is '_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC1IJRS0_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE' +000B97E3: mov rbp, rsp +000B97E6: sub rsp, 20h +000B97EA: mov [rbp+var_8], rdi +000B97EE: mov [rbp+var_10], rsi +000B97F2: mov [rbp+var_18], rdx +000B97F6: mov rax, [rbp+var_10] +000B97FA: mov rdi, rax +000B97FD: call __ZSt3getILm0EJRKSsEENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERS7_; std::get<0ul,std::string const&>(std::tuple&) +000B9802: mov rdi, rax +000B9805: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000B980A: mov rdx, rax +000B980D: mov rax, [rbp+var_8] +000B9811: mov rsi, rdx; std::string * +000B9814: mov rdi, rax; this +000B9817: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000B981C: mov rax, [rbp+var_8] +000B9820: add rax, 8 +000B9824: mov esi, 0 +000B9829: mov rdi, rax +000B982C: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2EDn; nlohmann::basic_json>>::basic_json(decltype(nullptr)) +000B9831: leave +000B9832: retn + +### FUNC 000B9833 - 000B986B (56 bytes) name=_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_JRKSB_EEENSt9enable_ifIXsrNSE_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSD_PSK_DpOSL_ +000B9833: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEEE12_S_constructISC_IRKSB_EEENSt9enable_ifIXsrNSE_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSD_PSK_DpOSL_' +000B9834: mov rbp, rsp +000B9837: sub rsp, 20h +000B983B: mov [rbp+var_8], rdi +000B983F: mov [rbp+var_10], rsi +000B9843: mov [rbp+var_18], rdx +000B9847: mov rax, [rbp+var_18] +000B984B: mov rdi, rax +000B984E: call __ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE; std::forward>>> const&>(std::remove_reference>>> const&>::type &) +000B9853: mov rdx, rax +000B9856: mov rcx, [rbp+var_10] +000B985A: mov rax, [rbp+var_8] +000B985E: mov rsi, rcx +000B9861: mov rdi, rax +000B9864: call __ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSC_EEEvPT_DpOT0_; __gnu_cxx::new_allocator>>>>>::construct>>>>,std::pair>>> const&>(std::_Rb_tree_node>>>> *,std::pair>>> const&) +000B9869: leave +000B986A: retn + +### FUNC 000B986C - 000B987D (17 bytes) name=_ZNKSt13move_iteratorIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEEE4baseEv +000B986C: push rbp +000B986D: mov rbp, rsp +000B9870: mov [rbp+var_8], rdi +000B9874: mov rax, [rbp+var_8] +000B9878: mov rax, [rax] +000B987B: pop rbp +000B987C: retn + +### FUNC 000B987D - 000B988B (14 bytes) name=_ZNSt10_Iter_baseIPPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS0_14adl_serializerES3_IhSaIhEEEELb0EE7_S_baseES9_ +000B987D: push rbp +000B987E: mov rbp, rsp +000B9881: mov [rbp+var_8], rdi +000B9885: mov rax, [rbp+var_8] +000B9889: pop rbp +000B988A: retn + +### FUNC 000B988B - 000B98F0 (101 bytes) name=_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIPN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS3_14adl_serializerES6_IhSaIhEEEEEEPT_PKSC_SF_SD_ +000B988B: push rbp +000B988C: mov rbp, rsp +000B988F: sub rsp, 30h +000B9893: mov [rbp+src], rdi +000B9897: mov [rbp+var_20], rsi +000B989B: mov [rbp+dest], rdx +000B989F: mov rdx, [rbp+var_20] +000B98A3: mov rax, [rbp+src] +000B98A7: sub rdx, rax +000B98AA: mov rax, rdx +000B98AD: sar rax, 3 +000B98B1: mov [rbp+var_8], rax +000B98B5: cmp [rbp+var_8], 0 +000B98BA: jz short loc_B98DB +000B98BC: mov rax, [rbp+var_8] +000B98C0: lea rdx, ds:0[rax*8]; n +000B98C8: mov rcx, [rbp+src] +000B98CC: mov rax, [rbp+dest] +000B98D0: mov rsi, rcx; src +000B98D3: mov rdi, rax; dest +000B98D6: call _memmove +000B98DB: mov rax, [rbp+var_8] +000B98DF: lea rdx, ds:0[rax*8] +000B98E7: mov rax, [rbp+dest] +000B98EB: add rax, rdx +000B98EE: leave +000B98EF: retn + +### FUNC 000B98F0 - 000B9964 (116 bytes) name=_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_JRKSC_EEEvPT_DpOT0_ +000B98F0: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS4_14adl_serializerES7_IhSaIhEEEEEEE9constructISD_IRKSC_EEEvPT_DpOT0_' +000B98F1: mov rbp, rsp +000B98F4: push r13 +000B98F6: push r12 +000B98F8: push rbx +000B98F9: sub rsp, 28h +000B98FD: mov [rbp+var_28], rdi +000B9901: mov [rbp+var_30], rsi +000B9905: mov [rbp+var_38], rdx +000B9909: mov rax, [rbp+var_38] +000B990D: mov rdi, rax +000B9910: call __ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE; std::forward>>> const&>(std::remove_reference>>> const&>::type &) +000B9915: mov r13, rax +000B9918: mov r12, [rbp+var_30] +000B991C: mov rsi, r12; void * +000B991F: mov edi, 38h ; '8'; unsigned __int64 +000B9924: call __ZnwmPv; operator new(ulong,void *) +000B9929: mov rbx, rax +000B992C: test rbx, rbx +000B992F: jz short loc_B993E +000B9931: mov rsi, r13 +000B9934: mov rdi, rbx +000B9937: call __ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSA_EEEDpOT_; std::_Rb_tree_node>>>>::_Rb_tree_node>>> const&>(std::pair>>> const&) +000B993C: jmp short loc_B9959 +000B993E: jmp short loc_B9959 +000B9940: mov r13, rax +000B9943: mov rsi, r12; void * +000B9946: mov rdi, rbx; void * +000B9949: call __ZdlPvS_; operator delete(void *,void *) +000B994E: mov rax, r13 +000B9951: mov rdi, rax; struct _Unwind_Exception * +000B9954: call __Unwind_Resume +000B9959: add rsp, 28h +000B995D: pop rbx +000B995E: pop r12 +000B9960: pop r13 +000B9962: pop rbp +000B9963: retn + +### FUNC 000B9964 - 000B99C6 (98 bytes) name=_ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_ +000B9964: push rbp; Alternative name is 'std::pair>>>::pair(std::pair>>> const&)' +000B9965: mov rbp, rsp +000B9968: push rbx +000B9969: sub rsp, 18h +000B996D: mov [rbp+var_18], rdi +000B9971: mov [rbp+var_20], rsi +000B9975: mov rdx, [rbp+var_20] +000B9979: mov rax, [rbp+var_18] +000B997D: mov rsi, rdx; std::string * +000B9980: mov rdi, rax; this +000B9983: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000B9988: mov rax, [rbp+var_20] +000B998C: lea rdx, [rax+8] +000B9990: mov rax, [rbp+var_18] +000B9994: add rax, 8 +000B9998: mov rsi, rdx +000B999B: mov rdi, rax +000B999E: call __ZN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS_14adl_serializerES2_IhSaIhEEEC2ERKS6_; nlohmann::basic_json>>::basic_json(nlohmann::basic_json>> const&) +000B99A3: jmp short loc_B99BF +000B99A5: mov rbx, rax +000B99A8: mov rax, [rbp+var_18] +000B99AC: mov rdi, rax; this +000B99AF: call __ZNSsD1Ev; std::string::~string() +000B99B4: mov rax, rbx +000B99B7: mov rdi, rax; struct _Unwind_Exception * +000B99BA: call __Unwind_Resume +000B99BF: add rsp, 18h +000B99C3: pop rbx +000B99C4: pop rbp +000B99C5: retn + +### FUNC 000B99C6 - 000B9A25 (95 bytes) name=_ZNSt13_Rb_tree_nodeISt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEC2IJRKSA_EEEDpOT_ +000B99C6: push rbp; Alternative name is 'std::_Rb_tree_node>>>>::_Rb_tree_node>>> const&>(std::pair>>> const&)' +000B99C7: mov rbp, rsp +000B99CA: sub rsp, 10h +000B99CE: mov [rbp+var_8], rdi +000B99D2: mov [rbp+var_10], rsi +000B99D6: mov rax, [rbp+var_8] +000B99DA: mov dword ptr [rax], 0 +000B99E0: mov rax, [rbp+var_8] +000B99E4: mov qword ptr [rax+8], 0 +000B99EC: mov rax, [rbp+var_8] +000B99F0: mov qword ptr [rax+10h], 0 +000B99F8: mov rax, [rbp+var_8] +000B99FC: mov qword ptr [rax+18h], 0 +000B9A04: mov rax, [rbp+var_10] +000B9A08: mov rdi, rax +000B9A0B: call __ZSt7forwardIRKSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS2_14adl_serializerES5_IhSaIhEEEEEEOT_RNSt16remove_referenceISD_E4typeE; std::forward>>> const&>(std::remove_reference>>> const&>::type &) +000B9A10: mov rdx, [rbp+var_8] +000B9A14: add rdx, 20h ; ' ' +000B9A18: mov rsi, rax +000B9A1B: mov rdi, rdx +000B9A1E: call __ZNSt4pairIKSsN8nlohmann10basic_jsonISt3mapSt6vectorSsblmdSaNS1_14adl_serializerES4_IhSaIhEEEEEC2ERKS9_; std::pair>>>::pair(std::pair>>> const&) +000B9A23: leave +000B9A24: retn + +### FUNC 000B9A26 - 000B9A67 (65 bytes) name=_ZN8nlohmann6detail11other_errorD2Ev +000B9A26: push rbp; Alternative name is 'nlohmann::detail::other_error::~other_error()' +000B9A27: mov rbp, rsp +000B9A2A: sub rsp, 10h +000B9A2E: mov [rbp+var_8], rdi +000B9A32: mov rax, [rbp+var_8] +000B9A36: mov rdx, cs:_ZTVN8nlohmann6detail11other_errorE_ptr +000B9A3D: lea rdx, [rdx+10h] +000B9A41: mov [rax], rdx +000B9A44: mov rax, [rbp+var_8] +000B9A48: mov rdi, rax; this +000B9A4B: call __ZN8nlohmann6detail9exceptionD2Ev; nlohmann::detail::exception::~exception() +000B9A50: mov eax, 0 +000B9A55: test eax, eax +000B9A57: jz short locret_B9A65 +000B9A59: mov rax, [rbp+var_8] +000B9A5D: mov rdi, rax; void * +000B9A60: call __ZdlPv; operator delete(void *) +000B9A65: leave +000B9A66: retn + +### FUNC 000B9A68 - 000B9A8E (38 bytes) name=_ZN8nlohmann6detail11other_errorD0Ev +000B9A68: push rbp +000B9A69: mov rbp, rsp +000B9A6C: sub rsp, 10h +000B9A70: mov [rbp+var_8], rdi +000B9A74: mov rax, [rbp+var_8] +000B9A78: mov rdi, rax; this +000B9A7B: call __ZN8nlohmann6detail11other_errorD2Ev; nlohmann::detail::other_error::~other_error() +000B9A80: mov rax, [rbp+var_8] +000B9A84: mov rdi, rax; void * +000B9A87: call __ZdlPv; operator delete(void *) +000B9A8C: leave +000B9A8D: retn + +### FUNC 000B9A8E - 000B9ACF (65 bytes) name=_ZN8nlohmann6detail12out_of_rangeD2Ev +000B9A8E: push rbp; Alternative name is 'nlohmann::detail::out_of_range::~out_of_range()' +000B9A8F: mov rbp, rsp +000B9A92: sub rsp, 10h +000B9A96: mov [rbp+var_8], rdi +000B9A9A: mov rax, [rbp+var_8] +000B9A9E: mov rdx, cs:_ZTVN8nlohmann6detail12out_of_rangeE_ptr +000B9AA5: lea rdx, [rdx+10h] +000B9AA9: mov [rax], rdx +000B9AAC: mov rax, [rbp+var_8] +000B9AB0: mov rdi, rax; this +000B9AB3: call __ZN8nlohmann6detail9exceptionD2Ev; nlohmann::detail::exception::~exception() +000B9AB8: mov eax, 0 +000B9ABD: test eax, eax +000B9ABF: jz short locret_B9ACD +000B9AC1: mov rax, [rbp+var_8] +000B9AC5: mov rdi, rax; void * +000B9AC8: call __ZdlPv; operator delete(void *) +000B9ACD: leave +000B9ACE: retn + +### FUNC 000B9AD0 - 000B9AF6 (38 bytes) name=_ZN8nlohmann6detail12out_of_rangeD0Ev +000B9AD0: push rbp +000B9AD1: mov rbp, rsp +000B9AD4: sub rsp, 10h +000B9AD8: mov [rbp+var_8], rdi +000B9ADC: mov rax, [rbp+var_8] +000B9AE0: mov rdi, rax; this +000B9AE3: call __ZN8nlohmann6detail12out_of_rangeD2Ev; nlohmann::detail::out_of_range::~out_of_range() +000B9AE8: mov rax, [rbp+var_8] +000B9AEC: mov rdi, rax; void * +000B9AEF: call __ZdlPv; operator delete(void *) +000B9AF4: leave +000B9AF5: retn + +### FUNC 000B9AF6 - 000B9B37 (65 bytes) name=_ZN8nlohmann6detail10type_errorD2Ev +000B9AF6: push rbp; Alternative name is 'nlohmann::detail::type_error::~type_error()' +000B9AF7: mov rbp, rsp +000B9AFA: sub rsp, 10h +000B9AFE: mov [rbp+var_8], rdi +000B9B02: mov rax, [rbp+var_8] +000B9B06: mov rdx, cs:_ZTVN8nlohmann6detail10type_errorE_ptr +000B9B0D: lea rdx, [rdx+10h] +000B9B11: mov [rax], rdx +000B9B14: mov rax, [rbp+var_8] +000B9B18: mov rdi, rax; this +000B9B1B: call __ZN8nlohmann6detail9exceptionD2Ev; nlohmann::detail::exception::~exception() +000B9B20: mov eax, 0 +000B9B25: test eax, eax +000B9B27: jz short locret_B9B35 +000B9B29: mov rax, [rbp+var_8] +000B9B2D: mov rdi, rax; void * +000B9B30: call __ZdlPv; operator delete(void *) +000B9B35: leave +000B9B36: retn + +### FUNC 000B9B38 - 000B9B5E (38 bytes) name=_ZN8nlohmann6detail10type_errorD0Ev +000B9B38: push rbp +000B9B39: mov rbp, rsp +000B9B3C: sub rsp, 10h +000B9B40: mov [rbp+var_8], rdi +000B9B44: mov rax, [rbp+var_8] +000B9B48: mov rdi, rax; this +000B9B4B: call __ZN8nlohmann6detail10type_errorD2Ev; nlohmann::detail::type_error::~type_error() +000B9B50: mov rax, [rbp+var_8] +000B9B54: mov rdi, rax; void * +000B9B57: call __ZdlPv; operator delete(void *) +000B9B5C: leave +000B9B5D: retn + +### FUNC 000B9B5E - 000B9B9F (65 bytes) name=_ZN8nlohmann6detail16invalid_iteratorD2Ev +000B9B5E: push rbp; Alternative name is 'nlohmann::detail::invalid_iterator::~invalid_iterator()' +000B9B5F: mov rbp, rsp +000B9B62: sub rsp, 10h +000B9B66: mov [rbp+var_8], rdi +000B9B6A: mov rax, [rbp+var_8] +000B9B6E: mov rdx, cs:_ZTVN8nlohmann6detail16invalid_iteratorE_ptr +000B9B75: lea rdx, [rdx+10h] +000B9B79: mov [rax], rdx +000B9B7C: mov rax, [rbp+var_8] +000B9B80: mov rdi, rax; this +000B9B83: call __ZN8nlohmann6detail9exceptionD2Ev; nlohmann::detail::exception::~exception() +000B9B88: mov eax, 0 +000B9B8D: test eax, eax +000B9B8F: jz short locret_B9B9D +000B9B91: mov rax, [rbp+var_8] +000B9B95: mov rdi, rax; void * +000B9B98: call __ZdlPv; operator delete(void *) +000B9B9D: leave +000B9B9E: retn + +### FUNC 000B9BA0 - 000B9BC6 (38 bytes) name=_ZN8nlohmann6detail16invalid_iteratorD0Ev +000B9BA0: push rbp +000B9BA1: mov rbp, rsp +000B9BA4: sub rsp, 10h +000B9BA8: mov [rbp+var_8], rdi +000B9BAC: mov rax, [rbp+var_8] +000B9BB0: mov rdi, rax; this +000B9BB3: call __ZN8nlohmann6detail16invalid_iteratorD2Ev; nlohmann::detail::invalid_iterator::~invalid_iterator() +000B9BB8: mov rax, [rbp+var_8] +000B9BBC: mov rdi, rax; void * +000B9BBF: call __ZdlPv; operator delete(void *) +000B9BC4: leave +000B9BC5: retn + +### FUNC 000B9BC6 - 000B9C07 (65 bytes) name=_ZN8nlohmann6detail11parse_errorD2Ev +000B9BC6: push rbp; Alternative name is 'nlohmann::detail::parse_error::~parse_error()' +000B9BC7: mov rbp, rsp +000B9BCA: sub rsp, 10h +000B9BCE: mov [rbp+var_8], rdi +000B9BD2: mov rax, [rbp+var_8] +000B9BD6: mov rdx, cs:_ZTVN8nlohmann6detail11parse_errorE_ptr +000B9BDD: lea rdx, [rdx+10h] +000B9BE1: mov [rax], rdx +000B9BE4: mov rax, [rbp+var_8] +000B9BE8: mov rdi, rax; this +000B9BEB: call __ZN8nlohmann6detail9exceptionD2Ev; nlohmann::detail::exception::~exception() +000B9BF0: mov eax, 0 +000B9BF5: test eax, eax +000B9BF7: jz short locret_B9C05 +000B9BF9: mov rax, [rbp+var_8] +000B9BFD: mov rdi, rax; void * +000B9C00: call __ZdlPv; operator delete(void *) +000B9C05: leave +000B9C06: retn + +### FUNC 000B9C08 - 000B9C2E (38 bytes) name=_ZN8nlohmann6detail11parse_errorD0Ev +000B9C08: push rbp +000B9C09: mov rbp, rsp +000B9C0C: sub rsp, 10h +000B9C10: mov [rbp+var_8], rdi +000B9C14: mov rax, [rbp+var_8] +000B9C18: mov rdi, rax; this +000B9C1B: call __ZN8nlohmann6detail11parse_errorD2Ev; nlohmann::detail::parse_error::~parse_error() +000B9C20: mov rax, [rbp+var_8] +000B9C24: mov rdi, rax; void * +000B9C27: call __ZdlPv; operator delete(void *) +000B9C2C: leave +000B9C2D: retn + +### FUNC 000B9C2E - 000B9C6D (63 bytes) name=_ZN16ThermalTCMDeviceC2Ev +000B9C2E: push rbp; Alternative name is 'ThermalTCMDevice::ThermalTCMDevice(void)' +000B9C2F: mov rbp, rsp +000B9C32: sub rsp, 10h +000B9C36: mov [rbp+var_8], rdi +000B9C3A: mov rax, [rbp+var_8] +000B9C3E: mov rdi, rax; this +000B9C41: call __ZN9TCMDeviceC2Ev; TCMDevice::TCMDevice(void) +000B9C46: mov rax, [rbp+var_8] +000B9C4A: mov rdx, cs:_ZTV16ThermalTCMDevice_ptr +000B9C51: lea rdx, [rdx+10h] +000B9C55: mov [rax], rdx +000B9C58: mov rax, [rbp+var_8] +000B9C5C: mov rdx, cs:_ZTV16ThermalTCMDevice_ptr +000B9C63: lea rdx, [rdx+60h] +000B9C67: mov [rax+8], rdx +000B9C6B: leave +000B9C6C: retn + +### FUNC 000B9C6E - 000B9CC2 (84 bytes) name=_ZN16ThermalTCMDeviceD2Ev +000B9C6E: push rbp; Alternative name is 'ThermalTCMDevice::~ThermalTCMDevice()' +000B9C6F: mov rbp, rsp +000B9C72: sub rsp, 10h +000B9C76: mov [rbp+var_8], rdi +000B9C7A: mov rax, [rbp+var_8] +000B9C7E: mov rdx, cs:_ZTV16ThermalTCMDevice_ptr +000B9C85: lea rdx, [rdx+10h] +000B9C89: mov [rax], rdx +000B9C8C: mov rax, [rbp+var_8] +000B9C90: mov rdx, cs:_ZTV16ThermalTCMDevice_ptr +000B9C97: lea rdx, [rdx+60h] +000B9C9B: mov [rax+8], rdx +000B9C9F: mov rax, [rbp+var_8] +000B9CA3: mov rdi, rax; this +000B9CA6: call __ZN9TCMDeviceD2Ev_0; TCMDevice::~TCMDevice() +000B9CAB: mov eax, 0 +000B9CB0: test eax, eax +000B9CB2: jz short locret_B9CC0 +000B9CB4: mov rax, [rbp+var_8] +000B9CB8: mov rdi, rax; void * +000B9CBB: call __ZdlPv; operator delete(void *) +000B9CC0: leave +000B9CC1: retn + +### FUNC 000B9CC2 - 000B9CE8 (38 bytes) name=_ZN16ThermalTCMDeviceD0Ev +000B9CC2: push rbp +000B9CC3: mov rbp, rsp +000B9CC6: sub rsp, 10h +000B9CCA: mov [rbp+var_8], rdi +000B9CCE: mov rax, [rbp+var_8] +000B9CD2: mov rdi, rax; this +000B9CD5: call __ZN16ThermalTCMDeviceD2Ev; ThermalTCMDevice::~ThermalTCMDevice() +000B9CDA: mov rax, [rbp+var_8] +000B9CDE: mov rdi, rax; void * +000B9CE1: call __ZdlPv; operator delete(void *) +000B9CE6: leave +000B9CE7: retn + +### FUNC 000B9CE8 - 000B9EBA (466 bytes) name=_ZN16ThermalTCMDevice4initEv +000B9CE8: push rbp +000B9CE9: mov rbp, rsp +000B9CEC: push r12 +000B9CEE: push rbx +000B9CEF: sub rsp, 60h +000B9CF3: mov [rbp+var_68], rdi +000B9CF7: mov edi, 0F8h; unsigned __int64 +000B9CFC: call __Znwm; operator new(ulong) +000B9D01: mov rbx, rax +000B9D04: mov rdi, rbx; this +000B9D07: call __ZN19EloTCMUpdaterDeviceC2Ev; EloTCMUpdaterDevice::EloTCMUpdaterDevice(void) +000B9D0C: mov [rbp+var_40], rbx +000B9D10: mov rax, [rbp+var_68] +000B9D14: lea rdx, [rax+88h] +000B9D1B: lea rax, [rbp+var_40] +000B9D1F: mov rsi, rax +000B9D22: mov rdi, rdx +000B9D25: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_; std::vector>::push_back(TCMVirtualDevice *&&) +000B9D2A: mov edi, 0D8h; unsigned __int64 +000B9D2F: call __Znwm; operator new(ulong) +000B9D34: mov rbx, rax +000B9D37: mov rdi, rbx; this +000B9D3A: call __ZN14EloMotorDeviceC2Ev; EloMotorDevice::EloMotorDevice(void) +000B9D3F: mov [rbp+var_38], rbx +000B9D43: mov rax, [rbp+var_68] +000B9D47: lea rdx, [rax+88h] +000B9D4E: lea rax, [rbp+var_38] +000B9D52: mov rsi, rax +000B9D55: mov rdi, rdx +000B9D58: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_; std::vector>::push_back(TCMVirtualDevice *&&) +000B9D5D: mov edi, 0D0h; unsigned __int64 +000B9D62: call __Znwm; operator new(ulong) +000B9D67: mov rbx, rax +000B9D6A: mov rdi, rbx; this +000B9D6D: call __ZN18EloProximityDeviceC2Ev; EloProximityDevice::EloProximityDevice(void) +000B9D72: mov [rbp+var_30], rbx +000B9D76: mov rax, [rbp+var_68] +000B9D7A: lea rdx, [rax+88h] +000B9D81: lea rax, [rbp+var_30] +000B9D85: mov rsi, rax +000B9D88: mov rdi, rdx +000B9D8B: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_; std::vector>::push_back(TCMVirtualDevice *&&) +000B9D90: mov edi, 0E0h; unsigned __int64 +000B9D95: call __Znwm; operator new(ulong) +000B9D9A: mov rbx, rax +000B9D9D: mov rdi, rbx; this +000B9DA0: call __ZN14EloEEROMDeviceC2Ev; EloEEROMDevice::EloEEROMDevice(void) +000B9DA5: mov [rbp+var_28], rbx +000B9DA9: mov rax, [rbp+var_68] +000B9DAD: lea rdx, [rax+88h] +000B9DB4: lea rax, [rbp+var_28] +000B9DB8: mov rsi, rax +000B9DBB: mov rdi, rdx +000B9DBE: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_; std::vector>::push_back(TCMVirtualDevice *&&) +000B9DC3: mov rax, [rbp+var_68] +000B9DC7: add rax, 88h +000B9DCD: mov [rbp+var_18], rax +000B9DD1: mov rax, [rbp+var_18] +000B9DD5: mov rdi, rax +000B9DD8: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000B9DDD: mov [rbp+var_50], rax +000B9DE1: mov rax, [rbp+var_18] +000B9DE5: mov rdi, rax +000B9DE8: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000B9DED: mov [rbp+var_60], rax +000B9DF1: jmp short loc_B9E40 +000B9DF3: lea rax, [rbp+var_50] +000B9DF7: mov rdi, rax +000B9DFA: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000B9DFF: mov rax, [rax] +000B9E02: mov [rbp+var_20], rax +000B9E06: mov rax, [rbp+var_68] +000B9E0A: lea rdx, [rax+10h] +000B9E0E: mov rax, [rbp+var_20] +000B9E12: mov rsi, rdx; IDataComm * +000B9E15: mov rdi, rax; this +000B9E18: call __ZN16TCMVirtualDevice11setDataCommEP9IDataComm; TCMVirtualDevice::setDataComm(IDataComm *) +000B9E1D: mov rax, [rbp+var_68] +000B9E21: lea rdx, [rax+8] +000B9E25: mov rax, [rbp+var_20] +000B9E29: mov rsi, rdx; TCMFrameDelegate * +000B9E2C: mov rdi, rax; this +000B9E2F: call __ZN16TCMVirtualDevice16setFrameDelegateEP16TCMFrameDelegate; TCMVirtualDevice::setFrameDelegate(TCMFrameDelegate *) +000B9E34: lea rax, [rbp+var_50] +000B9E38: mov rdi, rax +000B9E3B: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000B9E40: lea rdx, [rbp+var_60] +000B9E44: lea rax, [rbp+var_50] +000B9E48: mov rsi, rdx +000B9E4B: mov rdi, rax +000B9E4E: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000B9E53: test al, al +000B9E55: jnz short loc_B9DF3 +000B9E57: jmp short loc_B9EB1 +000B9E59: mov r12, rax +000B9E5C: mov rdi, rbx; void * +000B9E5F: call __ZdlPv; operator delete(void *) +000B9E64: mov rax, r12 +000B9E67: mov rdi, rax; struct _Unwind_Exception * +000B9E6A: call __Unwind_Resume +000B9E6F: mov r12, rax +000B9E72: mov rdi, rbx; void * +000B9E75: call __ZdlPv; operator delete(void *) +000B9E7A: mov rax, r12 +000B9E7D: mov rdi, rax; struct _Unwind_Exception * +000B9E80: call __Unwind_Resume +000B9E85: mov r12, rax +000B9E88: mov rdi, rbx; void * +000B9E8B: call __ZdlPv; operator delete(void *) +000B9E90: mov rax, r12 +000B9E93: mov rdi, rax; struct _Unwind_Exception * +000B9E96: call __Unwind_Resume +000B9E9B: mov r12, rax +000B9E9E: mov rdi, rbx; void * +000B9EA1: call __ZdlPv; operator delete(void *) +000B9EA6: mov rax, r12 +000B9EA9: mov rdi, rax; struct _Unwind_Exception * +000B9EAC: call __Unwind_Resume +000B9EB1: add rsp, 60h +000B9EB5: pop rbx +000B9EB6: pop r12 +000B9EB8: pop rbp +000B9EB9: retn + +### FUNC 000B9EBA - 000B9F6F (181 bytes) name=_ZN16ThermalTCMDevice18getProximityDeviceEv +000B9EBA: push rbp +000B9EBB: mov rbp, rsp +000B9EBE: sub rsp, 40h +000B9EC2: mov [rbp+var_38], rdi +000B9EC6: mov rax, [rbp+var_38] +000B9ECA: add rax, 88h +000B9ED0: mov [rbp+var_8], rax +000B9ED4: mov rax, [rbp+var_8] +000B9ED8: mov rdi, rax +000B9EDB: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000B9EE0: mov [rbp+var_20], rax +000B9EE4: mov rax, [rbp+var_8] +000B9EE8: mov rdi, rax +000B9EEB: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000B9EF0: mov [rbp+var_30], rax +000B9EF4: jmp short loc_B9F51 +000B9EF6: lea rax, [rbp+var_20] +000B9EFA: mov rdi, rax +000B9EFD: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000B9F02: mov rax, [rax] +000B9F05: mov [rbp+lpsrc], rax +000B9F09: mov rax, [rbp+lpsrc] +000B9F0D: test rax, rax +000B9F10: jnz short loc_B9F19 +000B9F12: mov eax, 0 +000B9F17: jmp short loc_B9F34 +000B9F19: mov ecx, 0; s2d +000B9F1E: mov rdx, cs:lpdtype; lpdtype +000B9F25: mov rsi, cs:lpstype; lpstype +000B9F2C: mov rdi, rax; lpsrc +000B9F2F: call ___dynamic_cast +000B9F34: mov [rbp+var_18], rax +000B9F38: cmp [rbp+var_18], 0 +000B9F3D: jz short loc_B9F45 +000B9F3F: mov rax, [rbp+var_18] +000B9F43: jmp short locret_B9F6D +000B9F45: lea rax, [rbp+var_20] +000B9F49: mov rdi, rax +000B9F4C: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000B9F51: lea rdx, [rbp+var_30] +000B9F55: lea rax, [rbp+var_20] +000B9F59: mov rsi, rdx +000B9F5C: mov rdi, rax +000B9F5F: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000B9F64: test al, al +000B9F66: jnz short loc_B9EF6 +000B9F68: mov eax, 0 +000B9F6D: leave +000B9F6E: retn + +### FUNC 000B9F70 - 000BA025 (181 bytes) name=_ZN16ThermalTCMDevice14getMotorDeviceEv +000B9F70: push rbp +000B9F71: mov rbp, rsp +000B9F74: sub rsp, 40h +000B9F78: mov [rbp+var_38], rdi +000B9F7C: mov rax, [rbp+var_38] +000B9F80: add rax, 88h +000B9F86: mov [rbp+var_8], rax +000B9F8A: mov rax, [rbp+var_8] +000B9F8E: mov rdi, rax +000B9F91: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000B9F96: mov [rbp+var_20], rax +000B9F9A: mov rax, [rbp+var_8] +000B9F9E: mov rdi, rax +000B9FA1: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000B9FA6: mov [rbp+var_30], rax +000B9FAA: jmp short loc_BA007 +000B9FAC: lea rax, [rbp+var_20] +000B9FB0: mov rdi, rax +000B9FB3: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000B9FB8: mov rax, [rax] +000B9FBB: mov [rbp+lpsrc], rax +000B9FBF: mov rax, [rbp+lpsrc] +000B9FC3: test rax, rax +000B9FC6: jnz short loc_B9FCF +000B9FC8: mov eax, 0 +000B9FCD: jmp short loc_B9FEA +000B9FCF: mov ecx, 0; s2d +000B9FD4: mov rdx, cs:_ZTI14EloMotorDevice_ptr; lpdtype +000B9FDB: mov rsi, cs:lpstype; lpstype +000B9FE2: mov rdi, rax; lpsrc +000B9FE5: call ___dynamic_cast +000B9FEA: mov [rbp+var_18], rax +000B9FEE: cmp [rbp+var_18], 0 +000B9FF3: jz short loc_B9FFB +000B9FF5: mov rax, [rbp+var_18] +000B9FF9: jmp short locret_BA023 +000B9FFB: lea rax, [rbp+var_20] +000B9FFF: mov rdi, rax +000BA002: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000BA007: lea rdx, [rbp+var_30] +000BA00B: lea rax, [rbp+var_20] +000BA00F: mov rsi, rdx +000BA012: mov rdi, rax +000BA015: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000BA01A: test al, al +000BA01C: jnz short loc_B9FAC +000BA01E: mov eax, 0 +000BA023: leave +000BA024: retn + +### FUNC 000BA026 - 000BA0DB (181 bytes) name=_ZN16ThermalTCMDevice14getEERomDeviceEv +000BA026: push rbp +000BA027: mov rbp, rsp +000BA02A: sub rsp, 40h +000BA02E: mov [rbp+var_38], rdi +000BA032: mov rax, [rbp+var_38] +000BA036: add rax, 88h +000BA03C: mov [rbp+var_8], rax +000BA040: mov rax, [rbp+var_8] +000BA044: mov rdi, rax +000BA047: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000BA04C: mov [rbp+var_20], rax +000BA050: mov rax, [rbp+var_8] +000BA054: mov rdi, rax +000BA057: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000BA05C: mov [rbp+var_30], rax +000BA060: jmp short loc_BA0BD +000BA062: lea rax, [rbp+var_20] +000BA066: mov rdi, rax +000BA069: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000BA06E: mov rax, [rax] +000BA071: mov [rbp+lpsrc], rax +000BA075: mov rax, [rbp+lpsrc] +000BA079: test rax, rax +000BA07C: jnz short loc_BA085 +000BA07E: mov eax, 0 +000BA083: jmp short loc_BA0A0 +000BA085: mov ecx, 0; s2d +000BA08A: mov rdx, cs:_ZTI14EloEEROMDevice_ptr; lpdtype +000BA091: mov rsi, cs:lpstype; lpstype +000BA098: mov rdi, rax; lpsrc +000BA09B: call ___dynamic_cast +000BA0A0: mov [rbp+var_18], rax +000BA0A4: cmp [rbp+var_18], 0 +000BA0A9: jz short loc_BA0B1 +000BA0AB: mov rax, [rbp+var_18] +000BA0AF: jmp short locret_BA0D9 +000BA0B1: lea rax, [rbp+var_20] +000BA0B5: mov rdi, rax +000BA0B8: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000BA0BD: lea rdx, [rbp+var_30] +000BA0C1: lea rax, [rbp+var_20] +000BA0C5: mov rsi, rdx +000BA0C8: mov rdi, rax +000BA0CB: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000BA0D0: test al, al +000BA0D2: jnz short loc_BA062 +000BA0D4: mov eax, 0 +000BA0D9: leave +000BA0DA: retn + +### FUNC 000BA0DB - 000BA0E9 (14 bytes) name=_ZSt4moveIRP16TCMVirtualDeviceEONSt16remove_referenceIT_E4typeEOS4_ +000BA0DB: push rbp +000BA0DC: mov rbp, rsp +000BA0DF: mov [rbp+var_8], rdi +000BA0E3: mov rax, [rbp+var_8] +000BA0E7: pop rbp +000BA0E8: retn + +### FUNC 000BA0EA - 000BA11A (48 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE9push_backEOS1_ +000BA0EA: push rbp +000BA0EB: mov rbp, rsp +000BA0EE: sub rsp, 10h +000BA0F2: mov [rbp+var_8], rdi +000BA0F6: mov [rbp+var_10], rsi +000BA0FA: mov rax, [rbp+var_10] +000BA0FE: mov rdi, rax +000BA101: call __ZSt4moveIRP16TCMVirtualDeviceEONSt16remove_referenceIT_E4typeEOS4_; std::move(TCMVirtualDevice *&&&) +000BA106: mov rdx, rax +000BA109: mov rax, [rbp+var_8] +000BA10D: mov rsi, rdx +000BA110: mov rdi, rax +000BA113: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE12emplace_backIJS1_EEEvDpOT_; std::vector>::emplace_back(TCMVirtualDevice * &&) +000BA118: leave +000BA119: retn + +### FUNC 000BA11A - 000BA13F (37 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv +000BA11A: push rbp +000BA11B: mov rbp, rsp +000BA11E: sub rsp, 20h +000BA122: mov [rbp+var_18], rdi +000BA126: mov rdx, [rbp+var_18] +000BA12A: lea rax, [rbp+var_10] +000BA12E: mov rsi, rdx +000BA131: mov rdi, rax +000BA134: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEC2ERKS3_; __gnu_cxx::__normal_iterator>>::__normal_iterator(TCMVirtualDevice ** const&) +000BA139: mov rax, [rbp+var_10] +000BA13D: leave +000BA13E: retn + +### FUNC 000BA140 - 000BA169 (41 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv +000BA140: push rbp +000BA141: mov rbp, rsp +000BA144: sub rsp, 20h +000BA148: mov [rbp+var_18], rdi +000BA14C: mov rax, [rbp+var_18] +000BA150: lea rdx, [rax+8] +000BA154: lea rax, [rbp+var_10] +000BA158: mov rsi, rdx +000BA15B: mov rdi, rax +000BA15E: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEC2ERKS3_; __gnu_cxx::__normal_iterator>>::__normal_iterator(TCMVirtualDevice ** const&) +000BA163: mov rax, [rbp+var_10] +000BA167: leave +000BA168: retn + +### FUNC 000BA169 - 000BA1A5 (60 bytes) name=_ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_ +000BA169: push rbp +000BA16A: mov rbp, rsp +000BA16D: push rbx +000BA16E: sub rsp, 18h +000BA172: mov [rbp+var_18], rdi +000BA176: mov [rbp+var_20], rsi +000BA17A: mov rax, [rbp+var_18] +000BA17E: mov rdi, rax +000BA181: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000BA186: mov rbx, [rax] +000BA189: mov rax, [rbp+var_20] +000BA18D: mov rdi, rax +000BA190: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000BA195: mov rax, [rax] +000BA198: cmp rbx, rax +000BA19B: setnz al +000BA19E: add rsp, 18h +000BA1A2: pop rbx +000BA1A3: pop rbp +000BA1A4: retn + +### FUNC 000BA1A6 - 000BA1C6 (32 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv +000BA1A6: push rbp +000BA1A7: mov rbp, rsp +000BA1AA: mov [rbp+var_8], rdi +000BA1AE: mov rax, [rbp+var_8] +000BA1B2: mov rax, [rax] +000BA1B5: lea rdx, [rax+8] +000BA1B9: mov rax, [rbp+var_8] +000BA1BD: mov [rax], rdx +000BA1C0: mov rax, [rbp+var_8] +000BA1C4: pop rbp +000BA1C5: retn + +### FUNC 000BA1C6 - 000BA1D7 (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv +000BA1C6: push rbp +000BA1C7: mov rbp, rsp +000BA1CA: mov [rbp+var_8], rdi +000BA1CE: mov rax, [rbp+var_8] +000BA1D2: mov rax, [rax] +000BA1D5: pop rbp +000BA1D6: retn + +### FUNC 000BA1D7 - 000BA1E5 (14 bytes) name=_ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE +000BA1D7: push rbp +000BA1D8: mov rbp, rsp +000BA1DB: mov [rbp+var_8], rdi +000BA1DF: mov rax, [rbp+var_8] +000BA1E3: pop rbp +000BA1E4: retn + +### FUNC 000BA1E6 - 000BA267 (129 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE12emplace_backIJS1_EEEvDpOT_ +000BA1E6: push rbp; Alternative name is 'void std::vector>::emplace_back(TCMVirtualDevice * &&)' +000BA1E7: mov rbp, rsp +000BA1EA: sub rsp, 10h +000BA1EE: mov [rbp+var_8], rdi +000BA1F2: mov [rbp+var_10], rsi +000BA1F6: mov rax, [rbp+var_8] +000BA1FA: mov rdx, [rax+8] +000BA1FE: mov rax, [rbp+var_8] +000BA202: mov rax, [rax+10h] +000BA206: cmp rdx, rax +000BA209: jz short loc_BA247 +000BA20B: mov rax, [rbp+var_10] +000BA20F: mov rdi, rax +000BA212: call __ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BA217: mov rdx, rax +000BA21A: mov rax, [rbp+var_8] +000BA21E: mov rcx, [rax+8] +000BA222: mov rax, [rbp+var_8] +000BA226: mov rsi, rcx +000BA229: mov rdi, rax +000BA22C: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_JS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ +000BA231: mov rax, [rbp+var_8] +000BA235: mov rax, [rax+8] +000BA239: lea rdx, [rax+8] +000BA23D: mov rax, [rbp+var_8] +000BA241: mov [rax+8], rdx +000BA245: jmp short locret_BA265 +000BA247: mov rax, [rbp+var_10] +000BA24B: mov rdi, rax +000BA24E: call __ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BA253: mov rdx, rax +000BA256: mov rax, [rbp+var_8] +000BA25A: mov rsi, rdx +000BA25D: mov rdi, rax +000BA260: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE19_M_emplace_back_auxIJS1_EEEvDpOT_; std::vector>::_M_emplace_back_aux(TCMVirtualDevice * &&) +000BA265: leave +000BA266: retn + +### FUNC 000BA268 - 000BA284 (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEC2ERKS3_ +000BA268: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>>::__normal_iterator(TCMVirtualDevice ** const&)' +000BA269: mov rbp, rsp +000BA26C: mov [rbp+var_8], rdi +000BA270: mov [rbp+var_10], rsi +000BA274: mov rax, [rbp+var_10] +000BA278: mov rdx, [rax] +000BA27B: mov rax, [rbp+var_8] +000BA27F: mov [rax], rdx +000BA282: pop rbp +000BA283: retn + +### FUNC 000BA284 - 000BA292 (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEE4baseEv +000BA284: push rbp +000BA285: mov rbp, rsp +000BA288: mov [rbp+var_8], rdi +000BA28C: mov rax, [rbp+var_8] +000BA290: pop rbp +000BA291: retn + +### FUNC 000BA292 - 000BA2CA (56 bytes) name=_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_JS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ +000BA292: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_IS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_' +000BA293: mov rbp, rsp +000BA296: sub rsp, 20h +000BA29A: mov [rbp+var_8], rdi +000BA29E: mov [rbp+var_10], rsi +000BA2A2: mov [rbp+var_18], rdx +000BA2A6: mov rax, [rbp+var_18] +000BA2AA: mov rdi, rax +000BA2AD: call __ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BA2B2: mov rdx, rax +000BA2B5: mov rcx, [rbp+var_10] +000BA2B9: mov rax, [rbp+var_8] +000BA2BD: mov rsi, rcx +000BA2C0: mov rdi, rax +000BA2C3: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE12_S_constructIS1_JS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_; std::allocator_traits>::_S_construct(std::allocator&,TCMVirtualDevice **,TCMVirtualDevice *&&) +000BA2C8: leave +000BA2C9: retn + +### FUNC 000BA2CA - 000BA4B6 (492 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE19_M_emplace_back_auxIJS1_EEEvDpOT_ +000BA2CA: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(TCMVirtualDevice * &&)' +000BA2CB: mov rbp, rsp +000BA2CE: push rbx +000BA2CF: sub rsp, 38h +000BA2D3: mov [rbp+var_38], rdi +000BA2D7: mov [rbp+var_40], rsi +000BA2DB: mov rax, [rbp+var_38] +000BA2DF: lea rdx, aVectorMEmplace_0; "vector::_M_emplace_back_aux" +000BA2E6: mov esi, 1 +000BA2EB: mov rdi, rax +000BA2EE: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000BA2F3: mov [rbp+var_20], rax +000BA2F7: mov rax, [rbp+var_38] +000BA2FB: mov rdx, [rbp+var_20] +000BA2FF: mov rsi, rdx +000BA302: mov rdi, rax +000BA305: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000BA30A: mov [rbp+var_28], rax +000BA30E: mov rax, [rbp+var_28] +000BA312: mov [rbp+var_18], rax +000BA316: mov rax, [rbp+var_40] +000BA31A: mov rdi, rax +000BA31D: call __ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BA322: mov rbx, rax +000BA325: mov rax, [rbp+var_38] +000BA329: mov rdi, rax +000BA32C: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv; std::vector>::size(void) +000BA331: lea rdx, ds:0[rax*8] +000BA339: mov rax, [rbp+var_28] +000BA33D: lea rcx, [rdx+rax] +000BA341: mov rax, [rbp+var_38] +000BA345: mov rdx, rbx +000BA348: mov rsi, rcx +000BA34B: mov rdi, rax +000BA34E: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE9constructIS1_JS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ +000BA353: mov [rbp+var_18], 0 +000BA35B: mov rax, [rbp+var_38] +000BA35F: mov rdi, rax +000BA362: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BA367: mov rcx, rax +000BA36A: mov rax, [rbp+var_38] +000BA36E: mov rsi, [rax+8] +000BA372: mov rax, [rbp+var_38] +000BA376: mov rax, [rax] +000BA379: mov rdx, [rbp+var_28] +000BA37D: mov rdi, rax +000BA380: call __ZSt34__uninitialized_move_if_noexcept_aIPP16TCMVirtualDeviceS2_SaIS1_EET0_T_S5_S4_RT1_; std::__uninitialized_move_if_noexcept_a>(TCMVirtualDevice **,TCMVirtualDevice **,TCMVirtualDevice **,std::allocator &) +000BA385: mov [rbp+var_18], rax +000BA389: add [rbp+var_18], 8 +000BA38E: mov rax, [rbp+var_38] +000BA392: mov rdi, rax +000BA395: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BA39A: mov rdx, rax +000BA39D: mov rax, [rbp+var_38] +000BA3A1: mov rcx, [rax+8] +000BA3A5: mov rax, [rbp+var_38] +000BA3A9: mov rax, [rax] +000BA3AC: mov rsi, rcx +000BA3AF: mov rdi, rax +000BA3B2: call __ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E; std::_Destroy(TCMVirtualDevice **,TCMVirtualDevice **,std::allocator &) +000BA3B7: mov rax, [rbp+var_38] +000BA3BB: mov rax, [rax+10h] +000BA3BF: mov rdx, rax +000BA3C2: mov rax, [rbp+var_38] +000BA3C6: mov rax, [rax] +000BA3C9: sub rdx, rax +000BA3CC: mov rax, rdx +000BA3CF: sar rax, 3 +000BA3D3: mov rdx, rax +000BA3D6: mov rax, [rbp+var_38] +000BA3DA: mov rcx, [rax] +000BA3DD: mov rax, [rbp+var_38] +000BA3E1: mov rsi, rcx +000BA3E4: mov rdi, rax +000BA3E7: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m; std::_Vector_base>::_M_deallocate(TCMVirtualDevice **,ulong) +000BA3EC: mov rax, [rbp+var_38] +000BA3F0: mov rdx, [rbp+var_28] +000BA3F4: mov [rax], rdx +000BA3F7: mov rax, [rbp+var_38] +000BA3FB: mov rdx, [rbp+var_18] +000BA3FF: mov [rax+8], rdx +000BA403: mov rax, [rbp+var_20] +000BA407: lea rdx, ds:0[rax*8] +000BA40F: mov rax, [rbp+var_28] +000BA413: add rdx, rax +000BA416: mov rax, [rbp+var_38] +000BA41A: mov [rax+10h], rdx +000BA41E: jmp loc_BA4AF +000BA423: mov rdi, rax; void * +000BA426: call ___cxa_begin_catch +000BA42B: cmp [rbp+var_18], 0 +000BA430: jnz short loc_BA45E +000BA432: mov rax, [rbp+var_38] +000BA436: mov rdi, rax +000BA439: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv; std::vector>::size(void) +000BA43E: lea rdx, ds:0[rax*8] +000BA446: mov rax, [rbp+var_28] +000BA44A: add rdx, rax +000BA44D: mov rax, [rbp+var_38] +000BA451: mov rsi, rdx +000BA454: mov rdi, rax +000BA457: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE7destroyIS1_EEvRS2_PT_; std::allocator_traits>::destroy(std::allocator&,TCMVirtualDevice * *) +000BA45C: jmp short loc_BA480 +000BA45E: mov rax, [rbp+var_38] +000BA462: mov rdi, rax +000BA465: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BA46A: mov rdx, rax +000BA46D: mov rcx, [rbp+var_18] +000BA471: mov rax, [rbp+var_28] +000BA475: mov rsi, rcx +000BA478: mov rdi, rax +000BA47B: call __ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E; std::_Destroy(TCMVirtualDevice **,TCMVirtualDevice **,std::allocator &) +000BA480: mov rax, [rbp+var_38] +000BA484: mov rdx, [rbp+var_20] +000BA488: mov rcx, [rbp+var_28] +000BA48C: mov rsi, rcx +000BA48F: mov rdi, rax +000BA492: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m; std::_Vector_base>::_M_deallocate(TCMVirtualDevice **,ulong) +000BA497: call ___cxa_rethrow +000BA49C: mov rbx, rax +000BA49F: call ___cxa_end_catch +000BA4A4: mov rax, rbx +000BA4A7: mov rdi, rax; struct _Unwind_Exception * +000BA4AA: call __Unwind_Resume +000BA4AF: add rsp, 38h +000BA4B3: pop rbx +000BA4B4: pop rbp +000BA4B5: retn + +### FUNC 000BA4B6 - 000BA4EE (56 bytes) name=_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE12_S_constructIS1_JS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_ +000BA4B6: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE12_S_constructIS1_IS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_' +000BA4B7: mov rbp, rsp +000BA4BA: sub rsp, 20h +000BA4BE: mov [rbp+var_8], rdi +000BA4C2: mov [rbp+var_10], rsi +000BA4C6: mov [rbp+var_18], rdx +000BA4CA: mov rax, [rbp+var_18] +000BA4CE: mov rdi, rax +000BA4D1: call __ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BA4D6: mov rdx, rax +000BA4D9: mov rcx, [rbp+var_10] +000BA4DD: mov rax, [rbp+var_8] +000BA4E1: mov rsi, rcx +000BA4E4: mov rdi, rax +000BA4E7: call __ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE9constructIS2_JS2_EEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(TCMVirtualDevice * *,TCMVirtualDevice * &&) +000BA4EC: leave +000BA4ED: retn + +### FUNC 000BA4EE - 000BA5B7 (201 bytes) name=_ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE12_M_check_lenEmPKc +000BA4EE: push rbp +000BA4EF: mov rbp, rsp +000BA4F2: push rbx +000BA4F3: sub rsp, 38h +000BA4F7: mov [rbp+var_28], rdi +000BA4FB: mov [rbp+var_30], rsi +000BA4FF: mov [rbp+var_38], rdx +000BA503: mov rax, [rbp+var_28] +000BA507: mov rdi, rax +000BA50A: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv; std::vector>::max_size(void) +000BA50F: mov rbx, rax +000BA512: mov rax, [rbp+var_28] +000BA516: mov rdi, rax +000BA519: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv; std::vector>::size(void) +000BA51E: sub rbx, rax +000BA521: mov rdx, rbx +000BA524: mov rax, [rbp+var_30] +000BA528: cmp rdx, rax +000BA52B: setb al +000BA52E: test al, al +000BA530: jz short loc_BA53E +000BA532: mov rax, [rbp+var_38] +000BA536: mov rdi, rax; char * +000BA539: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000BA53E: mov rax, [rbp+var_28] +000BA542: mov rdi, rax +000BA545: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv; std::vector>::size(void) +000BA54A: mov rbx, rax +000BA54D: mov rax, [rbp+var_28] +000BA551: mov rdi, rax +000BA554: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv; std::vector>::size(void) +000BA559: mov [rbp+var_20], rax +000BA55D: lea rdx, [rbp+var_30] +000BA561: lea rax, [rbp+var_20] +000BA565: mov rsi, rdx +000BA568: mov rdi, rax +000BA56B: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000BA570: mov rax, [rax] +000BA573: add rax, rbx +000BA576: mov [rbp+var_18], rax +000BA57A: mov rax, [rbp+var_28] +000BA57E: mov rdi, rax +000BA581: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv; std::vector>::size(void) +000BA586: cmp rax, [rbp+var_18] +000BA58A: ja short loc_BA59E +000BA58C: mov rax, [rbp+var_28] +000BA590: mov rdi, rax +000BA593: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv; std::vector>::max_size(void) +000BA598: cmp rax, [rbp+var_18] +000BA59C: jnb short loc_BA5AC +000BA59E: mov rax, [rbp+var_28] +000BA5A2: mov rdi, rax +000BA5A5: call __ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv; std::vector>::max_size(void) +000BA5AA: jmp short loc_BA5B0 +000BA5AC: mov rax, [rbp+var_18] +000BA5B0: add rsp, 38h +000BA5B4: pop rbx +000BA5B5: pop rbp +000BA5B6: retn + +### FUNC 000BA5B8 - 000BA5F0 (56 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE11_M_allocateEm +000BA5B8: push rbp +000BA5B9: mov rbp, rsp +000BA5BC: sub rsp, 10h +000BA5C0: mov [rbp+var_8], rdi +000BA5C4: mov [rbp+var_10], rsi +000BA5C8: cmp [rbp+var_10], 0 +000BA5CD: jz short loc_BA5E9 +000BA5CF: mov rax, [rbp+var_8] +000BA5D3: mov rcx, [rbp+var_10] +000BA5D7: mov edx, 0 +000BA5DC: mov rsi, rcx +000BA5DF: mov rdi, rax +000BA5E2: call __ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000BA5E7: jmp short locret_BA5EE +000BA5E9: mov eax, 0 +000BA5EE: leave +000BA5EF: retn + +### FUNC 000BA5F0 - 000BA616 (38 bytes) name=_ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE4sizeEv +000BA5F0: push rbp +000BA5F1: mov rbp, rsp +000BA5F4: mov [rbp+var_8], rdi +000BA5F8: mov rax, [rbp+var_8] +000BA5FC: mov rax, [rax+8] +000BA600: mov rdx, rax +000BA603: mov rax, [rbp+var_8] +000BA607: mov rax, [rax] +000BA60A: sub rdx, rax +000BA60D: mov rax, rdx +000BA610: sar rax, 3 +000BA614: pop rbp +000BA615: retn + +### FUNC 000BA616 - 000BA624 (14 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +000BA616: push rbp +000BA617: mov rbp, rsp +000BA61A: mov [rbp+var_8], rdi +000BA61E: mov rax, [rbp+var_8] +000BA622: pop rbp +000BA623: retn + +### FUNC 000BA624 - 000BA672 (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPP16TCMVirtualDeviceS2_SaIS1_EET0_T_S5_S4_RT1_ +000BA624: push rbp +000BA625: mov rbp, rsp +000BA628: push rbx +000BA629: sub rsp, 28h +000BA62D: mov [rbp+var_18], rdi +000BA631: mov [rbp+var_20], rsi +000BA635: mov [rbp+var_28], rdx +000BA639: mov [rbp+var_30], rcx +000BA63D: mov rax, [rbp+var_20] +000BA641: mov rdi, rax +000BA644: call __ZSt32__make_move_if_noexcept_iteratorIPP16TCMVirtualDeviceSt13move_iteratorIS2_EET0_T_; std::__make_move_if_noexcept_iterator>(TCMVirtualDevice **) +000BA649: mov rbx, rax +000BA64C: mov rax, [rbp+var_18] +000BA650: mov rdi, rax +000BA653: call __ZSt32__make_move_if_noexcept_iteratorIPP16TCMVirtualDeviceSt13move_iteratorIS2_EET0_T_; std::__make_move_if_noexcept_iterator>(TCMVirtualDevice **) +000BA658: mov rcx, [rbp+var_30] +000BA65C: mov rdx, [rbp+var_28] +000BA660: mov rsi, rbx +000BA663: mov rdi, rax +000BA666: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPP16TCMVirtualDeviceES3_S2_ET0_T_S6_S5_RSaIT1_E; std::__uninitialized_copy_a,TCMVirtualDevice **,TCMVirtualDevice *>(std::move_iterator,std::move_iterator,TCMVirtualDevice **,std::allocator &) +000BA66B: add rsp, 28h +000BA66F: pop rbx +000BA670: pop rbp +000BA671: retn + +### FUNC 000BA672 - 000BA697 (37 bytes) name=_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE7destroyIS1_EEvRS2_PT_ +000BA672: push rbp +000BA673: mov rbp, rsp +000BA676: sub rsp, 10h +000BA67A: mov [rbp+var_8], rdi +000BA67E: mov [rbp+var_10], rsi +000BA682: mov rdx, [rbp+var_10] +000BA686: mov rax, [rbp+var_8] +000BA68A: mov rsi, rdx +000BA68D: mov rdi, rax +000BA690: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_; std::allocator_traits>::_S_destroy(std::allocator&,TCMVirtualDevice **) +000BA695: leave +000BA696: retn + +### FUNC 000BA697 - 000BA6C0 (41 bytes) name=_ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E +000BA697: push rbp +000BA698: mov rbp, rsp +000BA69B: sub rsp, 20h +000BA69F: mov [rbp+var_8], rdi +000BA6A3: mov [rbp+var_10], rsi +000BA6A7: mov [rbp+var_18], rdx +000BA6AB: mov rdx, [rbp+var_10] +000BA6AF: mov rax, [rbp+var_8] +000BA6B3: mov rsi, rdx +000BA6B6: mov rdi, rax +000BA6B9: call __ZSt8_DestroyIPP16TCMVirtualDeviceEvT_S3_; std::_Destroy(TCMVirtualDevice **,TCMVirtualDevice **) +000BA6BE: leave +000BA6BF: retn + +### FUNC 000BA6C0 - 000BA6F4 (52 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m +000BA6C0: push rbp +000BA6C1: mov rbp, rsp +000BA6C4: sub rsp, 20h +000BA6C8: mov [rbp+var_8], rdi +000BA6CC: mov [rbp+var_10], rsi +000BA6D0: mov [rbp+var_18], rdx +000BA6D4: cmp [rbp+var_10], 0 +000BA6D9: jz short locret_BA6F2 +000BA6DB: mov rax, [rbp+var_8] +000BA6DF: mov rdx, [rbp+var_18] +000BA6E3: mov rcx, [rbp+var_10] +000BA6E7: mov rsi, rcx +000BA6EA: mov rdi, rax +000BA6ED: call __ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE10deallocateEPS2_m; __gnu_cxx::new_allocator::deallocate(TCMVirtualDevice **,ulong) +000BA6F2: leave +000BA6F3: retn + +### FUNC 000BA6F4 - 000BA738 (68 bytes) name=_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE9constructIS2_JS2_EEEvPT_DpOT0_ +000BA6F4: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE9constructIS2_IS2_EEEvPT_DpOT0_' +000BA6F5: mov rbp, rsp +000BA6F8: push rbx +000BA6F9: sub rsp, 28h +000BA6FD: mov [rbp+var_18], rdi +000BA701: mov [rbp+var_20], rsi +000BA705: mov [rbp+var_28], rdx +000BA709: mov rax, [rbp+var_28] +000BA70D: mov rdi, rax +000BA710: call __ZSt7forwardIP16TCMVirtualDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BA715: mov rbx, [rax] +000BA718: mov rax, [rbp+var_20] +000BA71C: mov rsi, rax; void * +000BA71F: mov edi, 8; unsigned __int64 +000BA724: call __ZnwmPv; operator new(ulong,void *) +000BA729: test rax, rax +000BA72C: jz short loc_BA731 +000BA72E: mov [rax], rbx +000BA731: add rsp, 28h +000BA735: pop rbx +000BA736: pop rbp +000BA737: retn + +### FUNC 000BA738 - 000BA75A (34 bytes) name=_ZNKSt6vectorIP16TCMVirtualDeviceSaIS1_EE8max_sizeEv +000BA738: push rbp +000BA739: mov rbp, rsp +000BA73C: sub rsp, 10h +000BA740: mov [rbp+var_8], rdi +000BA744: mov rax, [rbp+var_8] +000BA748: mov rdi, rax +000BA74B: call __ZNKSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BA750: mov rdi, rax +000BA753: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE8max_sizeERKS2_; std::allocator_traits>::max_size(std::allocator const&) +000BA758: leave +000BA759: retn + +### FUNC 000BA75A - 000BA79C (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8allocateEmPKv +000BA75A: push rbp +000BA75B: mov rbp, rsp +000BA75E: sub rsp, 20h +000BA762: mov [rbp+var_8], rdi +000BA766: mov [rbp+var_10], rsi +000BA76A: mov [rbp+var_18], rdx +000BA76E: mov rax, [rbp+var_8] +000BA772: mov rdi, rax +000BA775: call __ZNK9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000BA77A: cmp rax, [rbp+var_10] +000BA77E: setb al +000BA781: test al, al +000BA783: jz short loc_BA78A +000BA785: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000BA78A: mov rax, [rbp+var_10] +000BA78E: shl rax, 3 +000BA792: mov rdi, rax; unsigned __int64 +000BA795: call __Znwm; operator new(ulong) +000BA79A: leave +000BA79B: retn + +### FUNC 000BA79C - 000BA7C1 (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPP16TCMVirtualDeviceSt13move_iteratorIS2_EET0_T_ +000BA79C: push rbp +000BA79D: mov rbp, rsp +000BA7A0: sub rsp, 20h +000BA7A4: mov [rbp+var_18], rdi +000BA7A8: mov rdx, [rbp+var_18] +000BA7AC: lea rax, [rbp+var_10] +000BA7B0: mov rsi, rdx +000BA7B3: mov rdi, rax +000BA7B6: call __ZNSt13move_iteratorIPP16TCMVirtualDeviceEC2ES2_; std::move_iterator::move_iterator(TCMVirtualDevice **) +000BA7BB: mov rax, [rbp+var_10] +000BA7BF: leave +000BA7C0: retn + +### FUNC 000BA7C1 - 000BA7F2 (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPP16TCMVirtualDeviceES3_S2_ET0_T_S6_S5_RSaIT1_E +000BA7C1: push rbp +000BA7C2: mov rbp, rsp +000BA7C5: sub rsp, 20h +000BA7C9: mov [rbp+var_10], rdi +000BA7CD: mov [rbp+var_20], rsi +000BA7D1: mov [rbp+var_18], rdx +000BA7D5: mov [rbp+var_8], rcx +000BA7D9: mov rdx, [rbp+var_18] +000BA7DD: mov rcx, [rbp+var_20] +000BA7E1: mov rax, [rbp+var_10] +000BA7E5: mov rsi, rcx +000BA7E8: mov rdi, rax +000BA7EB: call __ZSt18uninitialized_copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_; std::uninitialized_copy,TCMVirtualDevice **>(std::move_iterator,std::move_iterator,TCMVirtualDevice **) +000BA7F0: leave +000BA7F1: retn + +### FUNC 000BA7F2 - 000BA817 (37 bytes) name=_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +000BA7F2: push rbp +000BA7F3: mov rbp, rsp +000BA7F6: sub rsp, 10h +000BA7FA: mov [rbp+var_8], rdi +000BA7FE: mov [rbp+var_10], rsi +000BA802: mov rdx, [rbp+var_10] +000BA806: mov rax, [rbp+var_8] +000BA80A: mov rsi, rdx +000BA80D: mov rdi, rax +000BA810: call __ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE7destroyIS2_EEvPT_; __gnu_cxx::new_allocator::destroy(TCMVirtualDevice * *) +000BA815: leave +000BA816: retn + +### FUNC 000BA817 - 000BA83C (37 bytes) name=_ZSt8_DestroyIPP16TCMVirtualDeviceEvT_S3_ +000BA817: push rbp +000BA818: mov rbp, rsp +000BA81B: sub rsp, 10h +000BA81F: mov [rbp+var_8], rdi +000BA823: mov [rbp+var_10], rsi +000BA827: mov rdx, [rbp+var_10] +000BA82B: mov rax, [rbp+var_8] +000BA82F: mov rsi, rdx +000BA832: mov rdi, rax +000BA835: call __ZNSt12_Destroy_auxILb1EE9__destroyIPP16TCMVirtualDeviceEEvT_S5_; std::_Destroy_aux::__destroy(TCMVirtualDevice **,TCMVirtualDevice **) +000BA83A: leave +000BA83B: retn + +### FUNC 000BA83C - 000BA85E (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE10deallocateEPS2_m +000BA83C: push rbp +000BA83D: mov rbp, rsp +000BA840: sub rsp, 20h +000BA844: mov [rbp+var_8], rdi +000BA848: mov [rbp+var_10], rsi +000BA84C: mov [rbp+var_18], rdx +000BA850: mov rax, [rbp+var_10] +000BA854: mov rdi, rax; void * +000BA857: call __ZdlPv; operator delete(void *) +000BA85C: leave +000BA85D: retn + +### FUNC 000BA85E - 000BA878 (26 bytes) name=_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE8max_sizeERKS2_ +000BA85E: push rbp +000BA85F: mov rbp, rsp +000BA862: sub rsp, 10h +000BA866: mov [rbp+var_8], rdi +000BA86A: mov rax, [rbp+var_8] +000BA86E: mov rdi, rax +000BA871: call __ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_; std::allocator_traits>::_S_max_size const>(std::allocator const&) +000BA876: leave +000BA877: retn + +### FUNC 000BA878 - 000BA886 (14 bytes) name=_ZNKSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv +000BA878: push rbp +000BA879: mov rbp, rsp +000BA87C: mov [rbp+var_8], rdi +000BA880: mov rax, [rbp+var_8] +000BA884: pop rbp +000BA885: retn + +### FUNC 000BA886 - 000BA89A (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8max_sizeEv +000BA886: push rbp +000BA887: mov rbp, rsp +000BA88A: mov [rbp+var_8], rdi +000BA88E: mov rax, 1FFFFFFFFFFFFFFFh +000BA898: pop rbp +000BA899: retn + +### FUNC 000BA89A - 000BA8B3 (25 bytes) name=_ZNSt13move_iteratorIPP16TCMVirtualDeviceEC2ES2_ +000BA89A: push rbp; Alternative name is 'std::move_iterator::move_iterator(TCMVirtualDevice **)' +000BA89B: mov rbp, rsp +000BA89E: mov [rbp+var_8], rdi +000BA8A2: mov [rbp+var_10], rsi +000BA8A6: mov rax, [rbp+var_8] +000BA8AA: mov rdx, [rbp+var_10] +000BA8AE: mov [rax], rdx +000BA8B1: pop rbp +000BA8B2: retn + +### FUNC 000BA8B3 - 000BA8E0 (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +000BA8B3: push rbp +000BA8B4: mov rbp, rsp +000BA8B7: sub rsp, 20h +000BA8BB: mov [rbp+var_10], rdi +000BA8BF: mov [rbp+var_20], rsi +000BA8C3: mov [rbp+var_18], rdx +000BA8C7: mov rdx, [rbp+var_18] +000BA8CB: mov rcx, [rbp+var_20] +000BA8CF: mov rax, [rbp+var_10] +000BA8D3: mov rsi, rcx +000BA8D6: mov rdi, rax +000BA8D9: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPP16TCMVirtualDeviceES5_EET0_T_S8_S7_; std::__uninitialized_copy::__uninit_copy,TCMVirtualDevice **>(std::move_iterator,std::move_iterator,TCMVirtualDevice **) +000BA8DE: leave +000BA8DF: retn + +### FUNC 000BA8E0 - 000BA8EE (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE7destroyIS2_EEvPT_ +000BA8E0: push rbp +000BA8E1: mov rbp, rsp +000BA8E4: mov [rbp+var_8], rdi +000BA8E8: mov [rbp+var_10], rsi +000BA8EC: pop rbp +000BA8ED: retn + +### FUNC 000BA8EE - 000BA8FC (14 bytes) name=_ZNSt12_Destroy_auxILb1EE9__destroyIPP16TCMVirtualDeviceEEvT_S5_ +000BA8EE: push rbp +000BA8EF: mov rbp, rsp +000BA8F2: mov [rbp+var_8], rdi +000BA8F6: mov [rbp+var_10], rsi +000BA8FA: pop rbp +000BA8FB: retn + +### FUNC 000BA8FC - 000BA916 (26 bytes) name=_ZNSt16allocator_traitsISaIP16TCMVirtualDeviceEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +000BA8FC: push rbp +000BA8FD: mov rbp, rsp +000BA900: sub rsp, 10h +000BA904: mov [rbp+var_8], rdi +000BA908: mov rax, [rbp+var_8] +000BA90C: mov rdi, rax +000BA90F: call __ZNK9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000BA914: leave +000BA915: retn + +### FUNC 000BA916 - 000BA943 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyISt13move_iteratorIPP16TCMVirtualDeviceES5_EET0_T_S8_S7_ +000BA916: push rbp +000BA917: mov rbp, rsp +000BA91A: sub rsp, 20h +000BA91E: mov [rbp+var_10], rdi +000BA922: mov [rbp+var_20], rsi +000BA926: mov [rbp+var_18], rdx +000BA92A: mov rdx, [rbp+var_18] +000BA92E: mov rcx, [rbp+var_20] +000BA932: mov rax, [rbp+var_10] +000BA936: mov rsi, rcx +000BA939: mov rdi, rax +000BA93C: call __ZSt4copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_; std::copy,TCMVirtualDevice **>(std::move_iterator,std::move_iterator,TCMVirtualDevice **) +000BA941: leave +000BA942: retn + +### FUNC 000BA943 - 000BA989 (70 bytes) name=_ZSt4copyISt13move_iteratorIPP16TCMVirtualDeviceES3_ET0_T_S6_S5_ +000BA943: push rbp +000BA944: mov rbp, rsp +000BA947: push rbx +000BA948: sub rsp, 28h +000BA94C: mov [rbp+var_20], rdi +000BA950: mov [rbp+var_30], rsi +000BA954: mov [rbp+var_28], rdx +000BA958: mov rax, [rbp+var_30] +000BA95C: mov rdi, rax +000BA95F: call __ZSt12__miter_baseISt13move_iteratorIPP16TCMVirtualDeviceEENSt11_Miter_baseIT_E13iterator_typeES6_; std::__miter_base>(std::move_iterator) +000BA964: mov rbx, rax +000BA967: mov rax, [rbp+var_20] +000BA96B: mov rdi, rax +000BA96E: call __ZSt12__miter_baseISt13move_iteratorIPP16TCMVirtualDeviceEENSt11_Miter_baseIT_E13iterator_typeES6_; std::__miter_base>(std::move_iterator) +000BA973: mov rdx, [rbp+var_28] +000BA977: mov rsi, rbx +000BA97A: mov rdi, rax +000BA97D: call __ZSt14__copy_move_a2ILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_; std::__copy_move_a2(TCMVirtualDevice **,TCMVirtualDevice **,TCMVirtualDevice **) +000BA982: add rsp, 28h +000BA986: pop rbx +000BA987: pop rbp +000BA988: retn + +### FUNC 000BA989 - 000BA9A3 (26 bytes) name=_ZSt12__miter_baseISt13move_iteratorIPP16TCMVirtualDeviceEENSt11_Miter_baseIT_E13iterator_typeES6_ +000BA989: push rbp +000BA98A: mov rbp, rsp +000BA98D: sub rsp, 10h +000BA991: mov [rbp+var_10], rdi +000BA995: mov rax, [rbp+var_10] +000BA999: mov rdi, rax +000BA99C: call __ZNSt10_Iter_baseISt13move_iteratorIPP16TCMVirtualDeviceELb1EE7_S_baseES4_; std::_Iter_base,true>::_S_base(std::move_iterator) +000BA9A1: leave +000BA9A2: retn + +### FUNC 000BA9A3 - 000BA9FB (88 bytes) name=_ZSt14__copy_move_a2ILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +000BA9A3: push rbp +000BA9A4: mov rbp, rsp +000BA9A7: push r12 +000BA9A9: push rbx +000BA9AA: sub rsp, 20h +000BA9AE: mov [rbp+var_18], rdi +000BA9B2: mov [rbp+var_20], rsi +000BA9B6: mov [rbp+var_28], rdx +000BA9BA: mov rax, [rbp+var_28] +000BA9BE: mov rdi, rax +000BA9C1: call __ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_; std::__niter_base(TCMVirtualDevice **) +000BA9C6: mov r12, rax +000BA9C9: mov rax, [rbp+var_20] +000BA9CD: mov rdi, rax +000BA9D0: call __ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_; std::__niter_base(TCMVirtualDevice **) +000BA9D5: mov rbx, rax +000BA9D8: mov rax, [rbp+var_18] +000BA9DC: mov rdi, rax +000BA9DF: call __ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_; std::__niter_base(TCMVirtualDevice **) +000BA9E4: mov rdx, r12 +000BA9E7: mov rsi, rbx +000BA9EA: mov rdi, rax +000BA9ED: call __ZSt13__copy_move_aILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_; std::__copy_move_a(TCMVirtualDevice **,TCMVirtualDevice **,TCMVirtualDevice **) +000BA9F2: add rsp, 20h +000BA9F6: pop rbx +000BA9F7: pop r12 +000BA9F9: pop rbp +000BA9FA: retn + +### FUNC 000BA9FB - 000BAA15 (26 bytes) name=_ZNSt10_Iter_baseISt13move_iteratorIPP16TCMVirtualDeviceELb1EE7_S_baseES4_ +000BA9FB: push rbp +000BA9FC: mov rbp, rsp +000BA9FF: sub rsp, 10h +000BAA03: mov [rbp+var_10], rdi +000BAA07: lea rax, [rbp+var_10] +000BAA0B: mov rdi, rax +000BAA0E: call __ZNKSt13move_iteratorIPP16TCMVirtualDeviceE4baseEv; std::move_iterator::base(void) +000BAA13: leave +000BAA14: retn + +### FUNC 000BAA15 - 000BAA2F (26 bytes) name=_ZSt12__niter_baseIPP16TCMVirtualDeviceENSt11_Niter_baseIT_E13iterator_typeES4_ +000BAA15: push rbp +000BAA16: mov rbp, rsp +000BAA19: sub rsp, 10h +000BAA1D: mov [rbp+var_8], rdi +000BAA21: mov rax, [rbp+var_8] +000BAA25: mov rdi, rax +000BAA28: call __ZNSt10_Iter_baseIPP16TCMVirtualDeviceLb0EE7_S_baseES2_; std::_Iter_base::_S_base(TCMVirtualDevice **) +000BAA2D: leave +000BAA2E: retn + +### FUNC 000BAA2F - 000BAA60 (49 bytes) name=_ZSt13__copy_move_aILb1EPP16TCMVirtualDeviceS2_ET1_T0_S4_S3_ +000BAA2F: push rbp +000BAA30: mov rbp, rsp +000BAA33: sub rsp, 30h +000BAA37: mov [rbp+var_18], rdi +000BAA3B: mov [rbp+var_20], rsi +000BAA3F: mov [rbp+var_28], rdx +000BAA43: mov [rbp+var_1], 1 +000BAA47: mov rdx, [rbp+var_28] +000BAA4B: mov rcx, [rbp+var_20] +000BAA4F: mov rax, [rbp+var_18] +000BAA53: mov rsi, rcx +000BAA56: mov rdi, rax +000BAA59: call __ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIP16TCMVirtualDeviceEEPT_PKS5_S8_S6_; std::__copy_move::__copy_m(TCMVirtualDevice * const*,TCMVirtualDevice * const*,TCMVirtualDevice * *) +000BAA5E: leave +000BAA5F: retn + +### FUNC 000BAA60 - 000BAA71 (17 bytes) name=_ZNKSt13move_iteratorIPP16TCMVirtualDeviceE4baseEv +000BAA60: push rbp +000BAA61: mov rbp, rsp +000BAA64: mov [rbp+var_8], rdi +000BAA68: mov rax, [rbp+var_8] +000BAA6C: mov rax, [rax] +000BAA6F: pop rbp +000BAA70: retn + +### FUNC 000BAA71 - 000BAA7F (14 bytes) name=_ZNSt10_Iter_baseIPP16TCMVirtualDeviceLb0EE7_S_baseES2_ +000BAA71: push rbp +000BAA72: mov rbp, rsp +000BAA75: mov [rbp+var_8], rdi +000BAA79: mov rax, [rbp+var_8] +000BAA7D: pop rbp +000BAA7E: retn + +### FUNC 000BAA7F - 000BAAE4 (101 bytes) name=_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIP16TCMVirtualDeviceEEPT_PKS5_S8_S6_ +000BAA7F: push rbp +000BAA80: mov rbp, rsp +000BAA83: sub rsp, 30h +000BAA87: mov [rbp+src], rdi +000BAA8B: mov [rbp+var_20], rsi +000BAA8F: mov [rbp+dest], rdx +000BAA93: mov rdx, [rbp+var_20] +000BAA97: mov rax, [rbp+src] +000BAA9B: sub rdx, rax +000BAA9E: mov rax, rdx +000BAAA1: sar rax, 3 +000BAAA5: mov [rbp+var_8], rax +000BAAA9: cmp [rbp+var_8], 0 +000BAAAE: jz short loc_BAACF +000BAAB0: mov rax, [rbp+var_8] +000BAAB4: lea rdx, ds:0[rax*8]; n +000BAABC: mov rcx, [rbp+src] +000BAAC0: mov rax, [rbp+dest] +000BAAC4: mov rsi, rcx; src +000BAAC7: mov rdi, rax; dest +000BAACA: call _memmove +000BAACF: mov rax, [rbp+var_8] +000BAAD3: lea rdx, ds:0[rax*8] +000BAADB: mov rax, [rbp+dest] +000BAADF: add rax, rdx +000BAAE2: leave +000BAAE3: retn + +### FUNC 000BAAE4 - 000BACC5 (481 bytes) name=_ZL4globRKSt6vectorISsSaISsEE +000BAAE4: push rbp +000BAAE5: mov rbp, rsp +000BAAE8: push rbx +000BAAE9: sub rsp, 0A8h +000BAAF0: mov [rbp+var_A8], rdi +000BAAF7: mov [rbp+var_B0], rsi +000BAAFE: mov rax, [rbp+var_A8] +000BAB05: mov rdi, rax +000BAB08: call __ZNSt6vectorISsSaISsEEC2Ev; std::vector>::vector(void) +000BAB0D: mov rax, [rbp+var_B0] +000BAB14: mov rdi, rax +000BAB17: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BAB1C: test rax, rax +000BAB1F: setz al +000BAB22: test al, al +000BAB24: jz short loc_BAB2B +000BAB26: jmp loc_BACB4 +000BAB2B: mov rax, [rbp+var_B0] +000BAB32: mov esi, 0 +000BAB37: mov rdi, rax +000BAB3A: call __ZNKSt6vectorISsSaISsEEixEm; std::vector>::operator[](ulong) +000BAB3F: mov rdi, rax; this +000BAB42: call __ZNKSs5c_strEv; std::string::c_str(void) +000BAB47: lea rdx, [rbp+pglob] +000BAB4E: mov rcx, rdx; pglob +000BAB51: mov edx, 0; errfunc +000BAB56: mov esi, 0; flags +000BAB5B: mov rdi, rax; pattern +000BAB5E: call _glob +000BAB63: mov [rbp+var_18], eax +000BAB66: mov rax, [rbp+var_B0] +000BAB6D: mov rdi, rax +000BAB70: call __ZNKSt6vectorISsSaISsEE5beginEv; std::vector>::begin(void) +000BAB75: mov [rbp+var_50], rax +000BAB79: jmp short loc_BABAE +000BAB7B: lea rax, [rbp+var_50] +000BAB7F: mov rdi, rax +000BAB82: call __ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEptEv; __gnu_cxx::__normal_iterator>>::operator->(void) +000BAB87: mov rdi, rax; this +000BAB8A: call __ZNKSs5c_strEv; std::string::c_str(void) +000BAB8F: lea rdx, [rbp+pglob] +000BAB96: mov rcx, rdx; pglob +000BAB99: mov edx, 0; errfunc +000BAB9E: mov esi, 20h ; ' '; flags +000BABA3: mov rdi, rax; pattern +000BABA6: call _glob +000BABAB: mov [rbp+var_18], eax +000BABAE: mov rax, [rbp+var_B0] +000BABB5: mov rdi, rax +000BABB8: call __ZNKSt6vectorISsSaISsEE3endEv; std::vector>::end(void) +000BABBD: mov [rbp+var_40], rax +000BABC1: lea rax, [rbp+var_50] +000BABC5: mov rdi, rax +000BABC8: call __ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000BABCD: lea rdx, [rbp+var_40] +000BABD1: mov rsi, rdx +000BABD4: mov rdi, rax +000BABD7: call __ZN9__gnu_cxxneIPKSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESB_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000BABDC: test al, al +000BABDE: jnz short loc_BAB7B +000BABE0: mov [rbp+var_14], 0 +000BABE7: jmp short loc_BAC51 +000BABE9: lea rax, [rbp+var_19] +000BABED: mov rdi, rax +000BABF0: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BABF5: mov rax, [rbp+pglob.gl_pathv] +000BABFC: mov edx, [rbp+var_14] +000BABFF: movsxd rdx, edx +000BAC02: shl rdx, 3 +000BAC06: add rax, rdx +000BAC09: mov rcx, [rax] +000BAC0C: lea rdx, [rbp+var_19] +000BAC10: lea rax, [rbp+var_30] +000BAC14: mov rsi, rcx +000BAC17: mov rdi, rax +000BAC1A: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BAC1F: lea rdx, [rbp+var_30] +000BAC23: mov rax, [rbp+var_A8] +000BAC2A: mov rsi, rdx +000BAC2D: mov rdi, rax +000BAC30: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000BAC35: lea rax, [rbp+var_30] +000BAC39: mov rdi, rax; this +000BAC3C: call __ZNSsD1Ev; std::string::~string() +000BAC41: lea rax, [rbp+var_19] +000BAC45: mov rdi, rax +000BAC48: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BAC4D: add [rbp+var_14], 1 +000BAC51: mov eax, [rbp+var_14] +000BAC54: movsxd rdx, eax +000BAC57: mov rax, [rbp+pglob.gl_pathc] +000BAC5E: cmp rdx, rax +000BAC61: jb short loc_BABE9 +000BAC63: lea rax, [rbp+pglob] +000BAC6A: mov rdi, rax; pglob +000BAC6D: call _globfree +000BAC72: nop +000BAC73: jmp short loc_BACB4 +000BAC75: mov rbx, rax +000BAC78: lea rax, [rbp+var_30] +000BAC7C: mov rdi, rax; this +000BAC7F: call __ZNSsD1Ev; std::string::~string() +000BAC84: jmp short loc_BAC89 +000BAC86: mov rbx, rax +000BAC89: lea rax, [rbp+var_19] +000BAC8D: mov rdi, rax +000BAC90: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BAC95: jmp short loc_BAC9A +000BAC97: mov rbx, rax +000BAC9A: mov rax, [rbp+var_A8] +000BACA1: mov rdi, rax +000BACA4: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BACA9: mov rax, rbx +000BACAC: mov rdi, rax; struct _Unwind_Exception * +000BACAF: call __Unwind_Resume +000BACB4: mov rax, [rbp+var_A8] +000BACBB: add rsp, 0A8h +000BACC2: pop rbx +000BACC3: pop rbp +000BACC4: retn + +### FUNC 000BACC5 - 000BAD34 (111 bytes) name=_ZL8basenameRKSs +000BACC5: push rbp +000BACC6: mov rbp, rsp +000BACC9: sub rsp, 20h +000BACCD: mov [rbp+var_18], rdi +000BACD1: mov [rbp+var_20], rsi +000BACD5: mov rax, [rbp+var_20] +000BACD9: mov rdx, 0FFFFFFFFFFFFFFFFh; unsigned __int64 +000BACE0: lea rsi, asc_D3E94; "/" +000BACE7: mov rdi, rax; this +000BACEA: call __ZNKSs5rfindEPKcm; std::string::rfind(char const*,ulong) +000BACEF: mov [rbp+var_8], rax +000BACF3: cmp [rbp+var_8], 0FFFFFFFFFFFFFFFFh +000BACF8: jnz short loc_BAD0F +000BACFA: mov rdx, [rbp+var_20] +000BACFE: mov rax, [rbp+var_18] +000BAD02: mov rsi, rdx; std::string * +000BAD05: mov rdi, rax; this +000BAD08: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BAD0D: jmp short loc_BAD2E +000BAD0F: mov rax, [rbp+var_8] +000BAD13: lea rdx, [rax+1]; unsigned __int64 +000BAD17: mov rsi, [rbp+var_20]; std::string * +000BAD1B: mov rax, [rbp+var_18] +000BAD1F: mov rcx, 0FFFFFFFFFFFFFFFFh; unsigned __int64 +000BAD26: mov rdi, rax; this +000BAD29: call __ZNSsC1ERKSsmm; std::string::string(std::string const&,ulong,ulong) +000BAD2E: mov rax, [rbp+var_18] +000BAD32: leave +000BAD33: retn + +### FUNC 000BAD34 - 000BADFA (198 bytes) name=_ZL7dirnameRKSs +000BAD34: push rbp +000BAD35: mov rbp, rsp +000BAD38: push rbx +000BAD39: sub rsp, 28h +000BAD3D: mov [rbp+var_28], rdi +000BAD41: mov [rbp+var_30], rsi +000BAD45: mov rax, [rbp+var_30] +000BAD49: mov rdx, 0FFFFFFFFFFFFFFFFh; unsigned __int64 +000BAD50: lea rsi, asc_D3E94; "/" +000BAD57: mov rdi, rax; this +000BAD5A: call __ZNKSs5rfindEPKcm; std::string::rfind(char const*,ulong) +000BAD5F: mov [rbp+var_18], rax +000BAD63: cmp [rbp+var_18], 0FFFFFFFFFFFFFFFFh +000BAD68: jnz short loc_BAD7F +000BAD6A: mov rdx, [rbp+var_30] +000BAD6E: mov rax, [rbp+var_28] +000BAD72: mov rsi, rdx; std::string * +000BAD75: mov rdi, rax; this +000BAD78: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BAD7D: jmp short loc_BADEF +000BAD7F: cmp [rbp+var_18], 0 +000BAD84: jnz short loc_BADB7 +000BAD86: lea rax, [rbp+var_19] +000BAD8A: mov rdi, rax +000BAD8D: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BAD92: lea rdx, [rbp+var_19] +000BAD96: mov rax, [rbp+var_28] +000BAD9A: lea rsi, asc_D3E94; "/" +000BADA1: mov rdi, rax +000BADA4: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BADA9: lea rax, [rbp+var_19] +000BADAD: mov rdi, rax +000BADB0: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BADB5: jmp short loc_BADEF +000BADB7: mov rdx, [rbp+var_18] +000BADBB: mov rsi, [rbp+var_30]; std::string * +000BADBF: mov rax, [rbp+var_28] +000BADC3: mov rcx, rdx; unsigned __int64 +000BADC6: mov edx, 0; unsigned __int64 +000BADCB: mov rdi, rax; this +000BADCE: call __ZNSsC1ERKSsmm; std::string::string(std::string const&,ulong,ulong) +000BADD3: jmp short loc_BADEF +000BADD5: mov rbx, rax +000BADD8: lea rax, [rbp+var_19] +000BADDC: mov rdi, rax +000BADDF: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BADE4: mov rax, rbx +000BADE7: mov rdi, rax; struct _Unwind_Exception * +000BADEA: call __Unwind_Resume +000BADEF: mov rax, [rbp+var_28] +000BADF3: add rsp, 28h +000BADF7: pop rbx +000BADF8: pop rbp +000BADF9: retn + +### FUNC 000BADFA - 000BAE44 (74 bytes) name=_ZL11path_existsRKSs +000BADFA: push rbp +000BADFB: mov rbp, rsp +000BADFE: sub rsp, 0A0h +000BAE05: mov [rbp+var_98], rdi +000BAE0C: mov rax, [rbp+var_98] +000BAE13: mov rdi, rax; this +000BAE16: call __ZNKSs5c_strEv; std::string::c_str(void) +000BAE1B: lea rdx, [rbp+stat_buf] +000BAE22: mov rsi, rdx; stat_buf +000BAE25: mov rdi, rax; filename +000BAE28: call stat +000BAE2D: test eax, eax +000BAE2F: setz al +000BAE32: test al, al +000BAE34: jz short loc_BAE3D +000BAE36: mov eax, 1 +000BAE3B: jmp short locret_BAE42 +000BAE3D: mov eax, 0 +000BAE42: leave +000BAE43: retn + +### FUNC 000BAE44 - 000BAECB (135 bytes) name=_ZL8realpathRKSs +000BAE44: push rbp +000BAE45: mov rbp, rsp +000BAE48: push rbx +000BAE49: sub rsp, 28h +000BAE4D: mov [rbp+var_28], rdi +000BAE51: mov [rbp+var_30], rsi +000BAE55: mov rax, [rbp+var_30] +000BAE59: mov rdi, rax; this +000BAE5C: call __ZNKSs5c_strEv; std::string::c_str(void) +000BAE61: mov esi, 0; resolved +000BAE66: mov rdi, rax; name +000BAE69: call _realpath +000BAE6E: mov [rbp+ptr], rax +000BAE72: mov rax, [rbp+var_28] +000BAE76: mov rdi, rax; this +000BAE79: call __ZNSsC1Ev; std::string::string(void) +000BAE7E: cmp [rbp+ptr], 0 +000BAE83: jz short loc_BAEA4 +000BAE85: mov rdx, [rbp+ptr] +000BAE89: mov rax, [rbp+var_28] +000BAE8D: mov rsi, rdx +000BAE90: mov rdi, rax +000BAE93: call __ZNSsaSEPKc; std::string::operator=(char const*) +000BAE98: mov rax, [rbp+ptr] +000BAE9C: mov rdi, rax; ptr +000BAE9F: call _free +000BAEA4: jmp short loc_BAEC0 +000BAEA6: mov rbx, rax +000BAEA9: mov rax, [rbp+var_28] +000BAEAD: mov rdi, rax; this +000BAEB0: call __ZNSsD1Ev; std::string::~string() +000BAEB5: mov rax, rbx +000BAEB8: mov rdi, rax; struct _Unwind_Exception * +000BAEBB: call __Unwind_Resume +000BAEC0: mov rax, [rbp+var_28] +000BAEC4: add rsp, 28h +000BAEC8: pop rbx +000BAEC9: pop rbp +000BAECA: retn + +### FUNC 000BAECB - 000BB223 (856 bytes) name=_ZL23usb_sysfs_friendly_nameRKSs +000BAECB: push rbp +000BAECC: mov rbp, rsp +000BAECF: push r12 +000BAED1: push rbx +000BAED2: sub rsp, 200h +000BAED9: mov [rbp+var_208], rdi +000BAEE0: mov [rbp+var_210], rsi +000BAEE7: mov [rbp+var_1D4], 0 +000BAEF1: lea rax, [rbp+var_50] +000BAEF5: mov rcx, [rbp+var_210] +000BAEFC: lea rdx, aDevnum; "/devnum" +000BAF03: mov rsi, rcx +000BAF06: mov rdi, rax +000BAF09: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BAF0E: lea rax, [rbp+var_60] +000BAF12: lea rdx, [rbp+var_50] +000BAF16: mov rsi, rdx +000BAF19: mov rdi, rax; std::string * +000BAF1C: call _ZL9read_lineRKSs; read_line(std::string const&) +000BAF21: lea rcx, [rbp+var_60] +000BAF25: lea rax, [rbp+var_1D0] +000BAF2C: mov edx, 8 +000BAF31: mov rsi, rcx +000BAF34: mov rdi, rax +000BAF37: call __ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode; std::basic_istringstream,std::allocator>::basic_istringstream(std::string const&,std::_Ios_Openmode) +000BAF3C: lea rdx, [rbp+var_1D4] +000BAF43: lea rax, [rbp+var_1D0] +000BAF4A: mov rsi, rdx +000BAF4D: mov rdi, rax +000BAF50: call __ZNSirsERj; std::istream::operator>>(uint &) +000BAF55: lea rax, [rbp+var_1D0] +000BAF5C: mov rdi, rax +000BAF5F: call __ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_istringstream,std::allocator>::~basic_istringstream() +000BAF64: lea rax, [rbp+var_60] +000BAF68: mov rdi, rax; this +000BAF6B: call __ZNSsD1Ev; std::string::~string() +000BAF70: lea rax, [rbp+var_50] +000BAF74: mov rdi, rax; this +000BAF77: call __ZNSsD1Ev; std::string::~string() +000BAF7C: lea rax, [rbp+var_40] +000BAF80: mov rcx, [rbp+var_210] +000BAF87: lea rdx, aManufacturer; "/manufacturer" +000BAF8E: mov rsi, rcx +000BAF91: mov rdi, rax +000BAF94: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BAF99: lea rax, [rbp+var_1E0] +000BAFA0: lea rdx, [rbp+var_40] +000BAFA4: mov rsi, rdx +000BAFA7: mov rdi, rax; std::string * +000BAFAA: call _ZL9read_lineRKSs; read_line(std::string const&) +000BAFAF: lea rax, [rbp+var_40] +000BAFB3: mov rdi, rax; this +000BAFB6: call __ZNSsD1Ev; std::string::~string() +000BAFBB: lea rax, [rbp+var_30] +000BAFBF: mov rcx, [rbp+var_210] +000BAFC6: lea rdx, aProduct; "/product" +000BAFCD: mov rsi, rcx +000BAFD0: mov rdi, rax +000BAFD3: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BAFD8: lea rax, [rbp+var_1F0] +000BAFDF: lea rdx, [rbp+var_30] +000BAFE3: mov rsi, rdx +000BAFE6: mov rdi, rax; std::string * +000BAFE9: call _ZL9read_lineRKSs; read_line(std::string const&) +000BAFEE: lea rax, [rbp+var_30] +000BAFF2: mov rdi, rax; this +000BAFF5: call __ZNSsD1Ev; std::string::~string() +000BAFFA: lea rax, [rbp+var_20] +000BAFFE: mov rcx, [rbp+var_210] +000BB005: lea rdx, aSerial; "/serial" +000BB00C: mov rsi, rcx +000BB00F: mov rdi, rax +000BB012: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BB017: lea rax, [rbp+var_200] +000BB01E: lea rdx, [rbp+var_20] +000BB022: mov rsi, rdx +000BB025: mov rdi, rax; std::string * +000BB028: call _ZL9read_lineRKSs; read_line(std::string const&) +000BB02D: lea rax, [rbp+var_20] +000BB031: mov rdi, rax; this +000BB034: call __ZNSsD1Ev; std::string::~string() +000BB039: lea rax, [rbp+var_1E0] +000BB040: mov rdi, rax; this +000BB043: call __ZNKSs5emptyEv; std::string::empty(void) +000BB048: test al, al +000BB04A: jz short loc_BB079 +000BB04C: lea rax, [rbp+var_1F0] +000BB053: mov rdi, rax; this +000BB056: call __ZNKSs5emptyEv; std::string::empty(void) +000BB05B: test al, al +000BB05D: jz short loc_BB079 +000BB05F: lea rax, [rbp+var_200] +000BB066: mov rdi, rax; this +000BB069: call __ZNKSs5emptyEv; std::string::empty(void) +000BB06E: test al, al +000BB070: jz short loc_BB079 +000BB072: mov eax, 1 +000BB077: jmp short loc_BB07E +000BB079: mov eax, 0 +000BB07E: test al, al +000BB080: jz short loc_BB0B6 +000BB082: lea rax, [rbp+var_11] +000BB086: mov rdi, rax +000BB089: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BB08E: lea rdx, [rbp+var_11] +000BB092: mov rax, [rbp+var_208] +000BB099: lea rsi, unk_D3EBD +000BB0A0: mov rdi, rax +000BB0A3: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BB0A8: lea rax, [rbp+var_11] +000BB0AC: mov rdi, rax +000BB0AF: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BB0B4: jmp short loc_BB10D +000BB0B6: lea rax, [rbp+var_200] +000BB0BD: mov rdi, rax; this +000BB0C0: call __ZNKSs5c_strEv; std::string::c_str(void) +000BB0C5: mov r12, rax +000BB0C8: lea rax, [rbp+var_1F0] +000BB0CF: mov rdi, rax; this +000BB0D2: call __ZNKSs5c_strEv; std::string::c_str(void) +000BB0D7: mov rbx, rax +000BB0DA: lea rax, [rbp+var_1E0] +000BB0E1: mov rdi, rax; this +000BB0E4: call __ZNKSs5c_strEv; std::string::c_str(void) +000BB0E9: mov rdx, rax +000BB0EC: mov rax, [rbp+var_208] +000BB0F3: mov r8, r12 +000BB0F6: mov rcx, rbx +000BB0F9: lea rsi, aSSS; "%s %s %s" +000BB100: mov rdi, rax; char * +000BB103: mov eax, 0 +000BB108: call _ZL6formatPKcz; format(char const*,...) +000BB10D: lea rax, [rbp+var_200] +000BB114: mov rdi, rax; this +000BB117: call __ZNSsD1Ev; std::string::~string() +000BB11C: lea rax, [rbp+var_1F0] +000BB123: mov rdi, rax; this +000BB126: call __ZNSsD1Ev; std::string::~string() +000BB12B: lea rax, [rbp+var_1E0] +000BB132: mov rdi, rax; this +000BB135: call __ZNSsD1Ev; std::string::~string() +000BB13A: jmp loc_BB210 +000BB13F: mov rbx, rax +000BB142: lea rax, [rbp+var_1D0] +000BB149: mov rdi, rax +000BB14C: call __ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_istringstream,std::allocator>::~basic_istringstream() +000BB151: jmp short loc_BB156 +000BB153: mov rbx, rax +000BB156: lea rax, [rbp+var_60] +000BB15A: mov rdi, rax; this +000BB15D: call __ZNSsD1Ev; std::string::~string() +000BB162: jmp short loc_BB167 +000BB164: mov rbx, rax +000BB167: lea rax, [rbp+var_50] +000BB16B: mov rdi, rax; this +000BB16E: call __ZNSsD1Ev; std::string::~string() +000BB173: mov rax, rbx +000BB176: mov rdi, rax; struct _Unwind_Exception * +000BB179: call __Unwind_Resume +000BB17E: mov rbx, rax +000BB181: lea rax, [rbp+var_40] +000BB185: mov rdi, rax; this +000BB188: call __ZNSsD1Ev; std::string::~string() +000BB18D: mov rax, rbx +000BB190: mov rdi, rax; struct _Unwind_Exception * +000BB193: call __Unwind_Resume +000BB198: mov rbx, rax +000BB19B: lea rax, [rbp+var_30] +000BB19F: mov rdi, rax; this +000BB1A2: call __ZNSsD1Ev; std::string::~string() +000BB1A7: jmp short loc_BB1F6 +000BB1A9: mov rbx, rax +000BB1AC: lea rax, [rbp+var_20] +000BB1B0: mov rdi, rax; this +000BB1B3: call __ZNSsD1Ev; std::string::~string() +000BB1B8: jmp short loc_BB1E2 +000BB1BA: mov rbx, rax +000BB1BD: lea rax, [rbp+var_11] +000BB1C1: mov rdi, rax +000BB1C4: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BB1C9: jmp short loc_BB1CE +000BB1CB: mov rbx, rax +000BB1CE: lea rax, [rbp+var_200] +000BB1D5: mov rdi, rax; this +000BB1D8: call __ZNSsD1Ev; std::string::~string() +000BB1DD: jmp short loc_BB1E2 +000BB1DF: mov rbx, rax +000BB1E2: lea rax, [rbp+var_1F0] +000BB1E9: mov rdi, rax; this +000BB1EC: call __ZNSsD1Ev; std::string::~string() +000BB1F1: jmp short loc_BB1F6 +000BB1F3: mov rbx, rax +000BB1F6: lea rax, [rbp+var_1E0] +000BB1FD: mov rdi, rax; this +000BB200: call __ZNSsD1Ev; std::string::~string() +000BB205: mov rax, rbx +000BB208: mov rdi, rax; struct _Unwind_Exception * +000BB20B: call __Unwind_Resume +000BB210: mov rax, [rbp+var_208] +000BB217: add rsp, 200h +000BB21E: pop rbx +000BB21F: pop r12 +000BB221: pop rbp +000BB222: retn + +### FUNC 000BB223 - 000BB798 (1397 bytes) name=_ZL14get_sysfs_infoRKSs +000BB223: push rbp +000BB224: mov rbp, rsp +000BB227: push rbx +000BB228: sub rsp, 108h +000BB22F: mov [rbp+var_108], rdi +000BB236: mov [rbp+var_110], rsi +000BB23D: lea rax, [rbp+var_C0] +000BB244: mov rdx, [rbp+var_110] +000BB24B: mov rsi, rdx +000BB24E: mov rdi, rax; std::string * +000BB251: call _ZL8basenameRKSs; basename(std::string const&) +000BB256: lea rax, [rbp+var_D0] +000BB25D: mov rdi, rax; this +000BB260: call __ZNSsC1Ev; std::string::string(void) +000BB265: lea rax, [rbp+var_E0] +000BB26C: mov rdi, rax; this +000BB26F: call __ZNSsC1Ev; std::string::string(void) +000BB274: lea rax, [rbp+var_C0] +000BB27B: mov rdi, rax; this +000BB27E: call __ZNKSs5c_strEv; std::string::c_str(void) +000BB283: mov rdx, rax +000BB286: lea rax, [rbp+var_F0] +000BB28D: lea rsi, aSysClassTtySDe; "/sys/class/tty/%s/device" +000BB294: mov rdi, rax; char * +000BB297: mov eax, 0 +000BB29C: call _ZL6formatPKcz; format(char const*,...) +000BB2A1: lea rax, [rbp+var_C0] +000BB2A8: lea rcx, aTtyusb; "ttyUSB" +000BB2AF: mov edx, 6; unsigned __int64 +000BB2B4: mov esi, 0; unsigned __int64 +000BB2B9: mov rdi, rax; this +000BB2BC: call __ZNKSs7compareEmmPKc; std::string::compare(ulong,ulong,char const*) +000BB2C1: test eax, eax +000BB2C3: setz al +000BB2C6: test al, al +000BB2C8: jz loc_BB3EB +000BB2CE: lea rax, [rbp+var_90] +000BB2D5: lea rdx, [rbp+var_F0] +000BB2DC: mov rsi, rdx +000BB2DF: mov rdi, rax; std::string * +000BB2E2: call _ZL8realpathRKSs; realpath(std::string const&) +000BB2E7: lea rax, [rbp+var_A0] +000BB2EE: lea rdx, [rbp+var_90] +000BB2F5: mov rsi, rdx +000BB2F8: mov rdi, rax; std::string * +000BB2FB: call _ZL7dirnameRKSs; dirname(std::string const&) +000BB300: lea rax, [rbp+var_B0] +000BB307: lea rdx, [rbp+var_A0] +000BB30E: mov rsi, rdx +000BB311: mov rdi, rax; std::string * +000BB314: call _ZL7dirnameRKSs; dirname(std::string const&) +000BB319: lea rdx, [rbp+var_B0] +000BB320: lea rax, [rbp+var_F0] +000BB327: mov rsi, rdx +000BB32A: mov rdi, rax +000BB32D: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB332: lea rax, [rbp+var_B0] +000BB339: mov rdi, rax; this +000BB33C: call __ZNSsD1Ev; std::string::~string() +000BB341: lea rax, [rbp+var_A0] +000BB348: mov rdi, rax; this +000BB34B: call __ZNSsD1Ev; std::string::~string() +000BB350: lea rax, [rbp+var_90] +000BB357: mov rdi, rax; this +000BB35A: call __ZNSsD1Ev; std::string::~string() +000BB35F: lea rax, [rbp+var_F0] +000BB366: mov rdi, rax; std::string * +000BB369: call _ZL11path_existsRKSs; path_exists(std::string const&) +000BB36E: test al, al +000BB370: jz loc_BB572 +000BB376: lea rax, [rbp+var_80] +000BB37A: lea rdx, [rbp+var_F0] +000BB381: mov rsi, rdx +000BB384: mov rdi, rax; std::string * +000BB387: call _ZL23usb_sysfs_friendly_nameRKSs; usb_sysfs_friendly_name(std::string const&) +000BB38C: lea rdx, [rbp+var_80] +000BB390: lea rax, [rbp+var_D0] +000BB397: mov rsi, rdx +000BB39A: mov rdi, rax +000BB39D: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB3A2: lea rax, [rbp+var_80] +000BB3A6: mov rdi, rax; this +000BB3A9: call __ZNSsD1Ev; std::string::~string() +000BB3AE: lea rax, [rbp+var_70] +000BB3B2: lea rdx, [rbp+var_F0] +000BB3B9: mov rsi, rdx +000BB3BC: mov rdi, rax; std::string * +000BB3BF: call _ZL19usb_sysfs_hw_stringRKSs; usb_sysfs_hw_string(std::string const&) +000BB3C4: lea rdx, [rbp+var_70] +000BB3C8: lea rax, [rbp+var_E0] +000BB3CF: mov rsi, rdx +000BB3D2: mov rdi, rax +000BB3D5: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB3DA: lea rax, [rbp+var_70] +000BB3DE: mov rdi, rax; this +000BB3E1: call __ZNSsD1Ev; std::string::~string() +000BB3E6: jmp loc_BB572 +000BB3EB: lea rax, [rbp+var_C0] +000BB3F2: lea rcx, aTtyacm; "ttyACM" +000BB3F9: mov edx, 6; unsigned __int64 +000BB3FE: mov esi, 0; unsigned __int64 +000BB403: mov rdi, rax; this +000BB406: call __ZNKSs7compareEmmPKc; std::string::compare(ulong,ulong,char const*) +000BB40B: test eax, eax +000BB40D: setz al +000BB410: test al, al +000BB412: jz loc_BB4F8 +000BB418: lea rax, [rbp+var_50] +000BB41C: lea rdx, [rbp+var_F0] +000BB423: mov rsi, rdx +000BB426: mov rdi, rax; std::string * +000BB429: call _ZL8realpathRKSs; realpath(std::string const&) +000BB42E: lea rax, [rbp+var_60] +000BB432: lea rdx, [rbp+var_50] +000BB436: mov rsi, rdx +000BB439: mov rdi, rax; std::string * +000BB43C: call _ZL7dirnameRKSs; dirname(std::string const&) +000BB441: lea rdx, [rbp+var_60] +000BB445: lea rax, [rbp+var_F0] +000BB44C: mov rsi, rdx +000BB44F: mov rdi, rax +000BB452: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB457: lea rax, [rbp+var_60] +000BB45B: mov rdi, rax; this +000BB45E: call __ZNSsD1Ev; std::string::~string() +000BB463: lea rax, [rbp+var_50] +000BB467: mov rdi, rax; this +000BB46A: call __ZNSsD1Ev; std::string::~string() +000BB46F: lea rax, [rbp+var_F0] +000BB476: mov rdi, rax; std::string * +000BB479: call _ZL11path_existsRKSs; path_exists(std::string const&) +000BB47E: test al, al +000BB480: jz loc_BB572 +000BB486: lea rax, [rbp+var_40] +000BB48A: lea rdx, [rbp+var_F0] +000BB491: mov rsi, rdx +000BB494: mov rdi, rax; std::string * +000BB497: call _ZL23usb_sysfs_friendly_nameRKSs; usb_sysfs_friendly_name(std::string const&) +000BB49C: lea rdx, [rbp+var_40] +000BB4A0: lea rax, [rbp+var_D0] +000BB4A7: mov rsi, rdx +000BB4AA: mov rdi, rax +000BB4AD: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB4B2: lea rax, [rbp+var_40] +000BB4B6: mov rdi, rax; this +000BB4B9: call __ZNSsD1Ev; std::string::~string() +000BB4BE: lea rax, [rbp+var_30] +000BB4C2: lea rdx, [rbp+var_F0] +000BB4C9: mov rsi, rdx +000BB4CC: mov rdi, rax; std::string * +000BB4CF: call _ZL19usb_sysfs_hw_stringRKSs; usb_sysfs_hw_string(std::string const&) +000BB4D4: lea rdx, [rbp+var_30] +000BB4D8: lea rax, [rbp+var_E0] +000BB4DF: mov rsi, rdx +000BB4E2: mov rdi, rax +000BB4E5: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB4EA: lea rax, [rbp+var_30] +000BB4EE: mov rdi, rax; this +000BB4F1: call __ZNSsD1Ev; std::string::~string() +000BB4F6: jmp short loc_BB572 +000BB4F8: lea rax, [rbp+var_100] +000BB4FF: lea rcx, [rbp+var_F0] +000BB506: lea rdx, aId; "/id" +000BB50D: mov rsi, rcx +000BB510: mov rdi, rax +000BB513: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BB518: lea rax, [rbp+var_100] +000BB51F: mov rdi, rax; std::string * +000BB522: call _ZL11path_existsRKSs; path_exists(std::string const&) +000BB527: test al, al +000BB529: jz short loc_BB563 +000BB52B: lea rax, [rbp+var_20] +000BB52F: lea rdx, [rbp+var_100] +000BB536: mov rsi, rdx +000BB539: mov rdi, rax; std::string * +000BB53C: call _ZL9read_lineRKSs; read_line(std::string const&) +000BB541: lea rdx, [rbp+var_20] +000BB545: lea rax, [rbp+var_E0] +000BB54C: mov rsi, rdx +000BB54F: mov rdi, rax +000BB552: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BB557: lea rax, [rbp+var_20] +000BB55B: mov rdi, rax; this +000BB55E: call __ZNSsD1Ev; std::string::~string() +000BB563: lea rax, [rbp+var_100] +000BB56A: mov rdi, rax; this +000BB56D: call __ZNSsD1Ev; std::string::~string() +000BB572: lea rax, [rbp+var_D0] +000BB579: mov rdi, rax; this +000BB57C: call __ZNKSs5emptyEv; std::string::empty(void) +000BB581: test al, al +000BB583: jz short loc_BB59E +000BB585: lea rdx, [rbp+var_C0] +000BB58C: lea rax, [rbp+var_D0] +000BB593: mov rsi, rdx +000BB596: mov rdi, rax +000BB599: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +000BB59E: lea rax, [rbp+var_E0] +000BB5A5: mov rdi, rax; this +000BB5A8: call __ZNKSs5emptyEv; std::string::empty(void) +000BB5AD: test al, al +000BB5AF: jz short loc_BB5C7 +000BB5B1: lea rax, [rbp+var_E0] +000BB5B8: lea rsi, aNA; "n/a" +000BB5BF: mov rdi, rax +000BB5C2: call __ZNSsaSEPKc; std::string::operator=(char const*) +000BB5C7: mov rax, [rbp+var_108] +000BB5CE: mov rdi, rax +000BB5D1: call __ZNSt6vectorISsSaISsEEC2Ev; std::vector>::vector(void) +000BB5D6: lea rdx, [rbp+var_D0] +000BB5DD: mov rax, [rbp+var_108] +000BB5E4: mov rsi, rdx +000BB5E7: mov rdi, rax +000BB5EA: call __ZNSt6vectorISsSaISsEE9push_backERKSs; std::vector>::push_back(std::string const&) +000BB5EF: lea rdx, [rbp+var_E0] +000BB5F6: mov rax, [rbp+var_108] +000BB5FD: mov rsi, rdx +000BB600: mov rdi, rax +000BB603: call __ZNSt6vectorISsSaISsEE9push_backERKSs; std::vector>::push_back(std::string const&) +000BB608: nop +000BB609: lea rax, [rbp+var_F0] +000BB610: mov rdi, rax; this +000BB613: call __ZNSsD1Ev; std::string::~string() +000BB618: lea rax, [rbp+var_E0] +000BB61F: mov rdi, rax; this +000BB622: call __ZNSsD1Ev; std::string::~string() +000BB627: lea rax, [rbp+var_D0] +000BB62E: mov rdi, rax; this +000BB631: call __ZNSsD1Ev; std::string::~string() +000BB636: lea rax, [rbp+var_C0] +000BB63D: mov rdi, rax; this +000BB640: call __ZNSsD1Ev; std::string::~string() +000BB645: jmp loc_BB787 +000BB64A: mov rbx, rax +000BB64D: lea rax, [rbp+var_B0] +000BB654: mov rdi, rax; this +000BB657: call __ZNSsD1Ev; std::string::~string() +000BB65C: jmp short loc_BB661 +000BB65E: mov rbx, rax +000BB661: lea rax, [rbp+var_A0] +000BB668: mov rdi, rax; this +000BB66B: call __ZNSsD1Ev; std::string::~string() +000BB670: jmp short loc_BB675 +000BB672: mov rbx, rax +000BB675: lea rax, [rbp+var_90] +000BB67C: mov rdi, rax; this +000BB67F: call __ZNSsD1Ev; std::string::~string() +000BB684: jmp loc_BB731 +000BB689: mov rbx, rax +000BB68C: lea rax, [rbp+var_80] +000BB690: mov rdi, rax; this +000BB693: call __ZNSsD1Ev; std::string::~string() +000BB698: jmp loc_BB731 +000BB69D: mov rbx, rax +000BB6A0: lea rax, [rbp+var_70] +000BB6A4: mov rdi, rax; this +000BB6A7: call __ZNSsD1Ev; std::string::~string() +000BB6AC: jmp loc_BB731 +000BB6B1: mov rbx, rax +000BB6B4: lea rax, [rbp+var_60] +000BB6B8: mov rdi, rax; this +000BB6BB: call __ZNSsD1Ev; std::string::~string() +000BB6C0: jmp short loc_BB6C5 +000BB6C2: mov rbx, rax +000BB6C5: lea rax, [rbp+var_50] +000BB6C9: mov rdi, rax; this +000BB6CC: call __ZNSsD1Ev; std::string::~string() +000BB6D1: jmp short loc_BB731 +000BB6D3: mov rbx, rax +000BB6D6: lea rax, [rbp+var_40] +000BB6DA: mov rdi, rax; this +000BB6DD: call __ZNSsD1Ev; std::string::~string() +000BB6E2: jmp short loc_BB731 +000BB6E4: mov rbx, rax +000BB6E7: lea rax, [rbp+var_30] +000BB6EB: mov rdi, rax; this +000BB6EE: call __ZNSsD1Ev; std::string::~string() +000BB6F3: jmp short loc_BB731 +000BB6F5: mov rbx, rax +000BB6F8: lea rax, [rbp+var_20] +000BB6FC: mov rdi, rax; this +000BB6FF: call __ZNSsD1Ev; std::string::~string() +000BB704: jmp short loc_BB709 +000BB706: mov rbx, rax +000BB709: lea rax, [rbp+var_100] +000BB710: mov rdi, rax; this +000BB713: call __ZNSsD1Ev; std::string::~string() +000BB718: jmp short loc_BB731 +000BB71A: mov rbx, rax +000BB71D: mov rax, [rbp+var_108] +000BB724: mov rdi, rax +000BB727: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BB72C: jmp short loc_BB731 +000BB72E: mov rbx, rax +000BB731: lea rax, [rbp+var_F0] +000BB738: mov rdi, rax; this +000BB73B: call __ZNSsD1Ev; std::string::~string() +000BB740: jmp short loc_BB745 +000BB742: mov rbx, rax +000BB745: lea rax, [rbp+var_E0] +000BB74C: mov rdi, rax; this +000BB74F: call __ZNSsD1Ev; std::string::~string() +000BB754: jmp short loc_BB759 +000BB756: mov rbx, rax +000BB759: lea rax, [rbp+var_D0] +000BB760: mov rdi, rax; this +000BB763: call __ZNSsD1Ev; std::string::~string() +000BB768: jmp short loc_BB76D +000BB76A: mov rbx, rax +000BB76D: lea rax, [rbp+var_C0] +000BB774: mov rdi, rax; this +000BB777: call __ZNSsD1Ev; std::string::~string() +000BB77C: mov rax, rbx +000BB77F: mov rdi, rax; struct _Unwind_Exception * +000BB782: call __Unwind_Resume +000BB787: mov rax, [rbp+var_108] +000BB78E: add rsp, 108h +000BB795: pop rbx +000BB796: pop rbp +000BB797: retn + +### FUNC 000BB798 - 000BB876 (222 bytes) name=_ZL9read_lineRKSs +000BB798: push rbp +000BB799: mov rbp, rsp +000BB79C: push rbx +000BB79D: sub rsp, 228h +000BB7A4: mov [rbp+var_228], rdi +000BB7AB: mov [rbp+var_230], rsi +000BB7B2: mov rax, [rbp+var_230] +000BB7B9: mov rdi, rax; this +000BB7BC: call __ZNKSs5c_strEv; std::string::c_str(void) +000BB7C1: mov rcx, rax +000BB7C4: lea rax, [rbp+var_220] +000BB7CB: mov edx, 8 +000BB7D0: mov rsi, rcx +000BB7D3: mov rdi, rax +000BB7D6: call __ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode; std::basic_ifstream>::basic_ifstream(char const*,std::_Ios_Openmode) +000BB7DB: mov rax, [rbp+var_228] +000BB7E2: mov rdi, rax; this +000BB7E5: call __ZNSsC1Ev; std::string::string(void) +000BB7EA: lea rax, [rbp+var_220] +000BB7F1: add rax, 100h +000BB7F7: mov rdi, rax +000BB7FA: call __ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv; std::basic_ios>::operator void *(void) +000BB7FF: test rax, rax +000BB802: setnz al +000BB805: test al, al +000BB807: jz short loc_BB822 +000BB809: mov rdx, [rbp+var_228] +000BB810: lea rax, [rbp+var_220] +000BB817: mov rsi, rdx +000BB81A: mov rdi, rax +000BB81D: call __ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E; std::getline,std::allocator>(std::basic_istream> &,std::basic_string,std::allocator> &) +000BB822: nop +000BB823: lea rax, [rbp+var_220] +000BB82A: mov rdi, rax +000BB82D: call __ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev; std::basic_ifstream>::~basic_ifstream() +000BB832: jmp short loc_BB865 +000BB834: mov rbx, rax +000BB837: mov rax, [rbp+var_228] +000BB83E: mov rdi, rax; this +000BB841: call __ZNSsD1Ev; std::string::~string() +000BB846: jmp short loc_BB84B +000BB848: mov rbx, rax +000BB84B: lea rax, [rbp+var_220] +000BB852: mov rdi, rax +000BB855: call __ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev; std::basic_ifstream>::~basic_ifstream() +000BB85A: mov rax, rbx +000BB85D: mov rdi, rax; struct _Unwind_Exception * +000BB860: call __Unwind_Resume +000BB865: mov rax, [rbp+var_228] +000BB86C: add rsp, 228h +000BB873: pop rbx +000BB874: pop rbp +000BB875: retn + +### FUNC 000BB876 - 000BBA88 (530 bytes) name=_ZL6formatPKcz +000BB876: push rbp +000BB877: mov rbp, rsp +000BB87A: push rbx +000BB87B: sub rsp, 108h +000BB882: mov [rbp+var_108], rdi +000BB889: mov [rbp+var_B0], rdx +000BB890: mov [rbp+var_A8], rcx +000BB897: mov [rbp+var_A0], r8 +000BB89E: mov [rbp+var_98], r9 +000BB8A5: test al, al +000BB8A7: jz short loc_BB8CC +000BB8A9: movaps [rbp+var_90], xmm0 +000BB8B0: movaps [rbp+var_80], xmm1 +000BB8B4: movaps [rbp+var_70], xmm2 +000BB8B8: movaps [rbp+var_60], xmm3 +000BB8BC: movaps [rbp+var_50], xmm4 +000BB8C0: movaps [rbp+var_40], xmm5 +000BB8C4: movaps [rbp+var_30], xmm6 +000BB8C8: movaps [rbp+var_20], xmm7 +000BB8CC: mov [rbp+format], rsi +000BB8D3: mov [rbp+size], 100h +000BB8DE: mov rax, [rbp+var_108] +000BB8E5: mov rdi, rax; this +000BB8E8: call __ZNSsC1Ev; std::string::string(void) +000BB8ED: mov rax, [rbp+size] +000BB8F4: mov rdi, rax; size +000BB8F7: call _malloc +000BB8FC: mov [rbp+s], rax +000BB903: cmp [rbp+s], 0 +000BB90B: jnz short loc_BB912 +000BB90D: jmp loc_BBA77 +000BB912: mov [rbp+var_D1], 0 +000BB919: mov [rbp+var_D8], 0 +000BB923: jmp loc_BBA36 +000BB928: mov [rbp+arg], 10h +000BB932: mov [rbp+var_FC], 30h ; '0' +000BB93C: lea rax, [rbp+arg_0] +000BB940: mov [rbp+var_F8], rax +000BB947: lea rax, [rbp+var_C0] +000BB94E: mov [rbp+var_F0], rax +000BB955: lea rcx, [rbp+arg]; arg +000BB95C: mov rdx, [rbp+format]; format +000BB963: mov rsi, [rbp+size]; maxlen +000BB96A: mov rax, [rbp+s] +000BB971: mov rdi, rax; s +000BB974: call _vsnprintf +000BB979: mov [rbp+var_DC], eax +000BB97F: cmp [rbp+var_DC], 0 +000BB986: jns short loc_BB994 +000BB988: mov [rbp+var_D1], 1 +000BB98F: jmp loc_BBA1A +000BB994: mov eax, [rbp+var_DC] +000BB99A: cdqe +000BB99C: cmp rax, [rbp+size] +000BB9A3: jb short loc_BB9FA +000BB9A5: mov eax, [rbp+var_DC] +000BB9AB: add eax, 1 +000BB9AE: cdqe +000BB9B0: mov [rbp+size], rax +000BB9B7: mov rdx, [rbp+size] +000BB9BE: mov rax, [rbp+s] +000BB9C5: mov rsi, rdx; size +000BB9C8: mov rdi, rax; ptr +000BB9CB: call _realloc +000BB9D0: mov [rbp+var_E8], rax +000BB9D7: cmp [rbp+var_E8], 0 +000BB9DF: jnz short loc_BB9EA +000BB9E1: mov [rbp+var_D1], 1 +000BB9E8: jmp short loc_BBA1A +000BB9EA: mov rax, [rbp+var_E8] +000BB9F1: mov [rbp+s], rax +000BB9F8: jmp short loc_BBA1A +000BB9FA: mov rdx, [rbp+s] +000BBA01: mov rax, [rbp+var_108] +000BBA08: mov rsi, rdx +000BBA0B: mov rdi, rax +000BBA0E: call __ZNSsaSEPKc; std::string::operator=(char const*) +000BBA13: mov [rbp+var_D1], 1 +000BBA1A: add [rbp+var_D8], 1 +000BBA21: cmp [rbp+var_D8], 5 +000BBA28: setnbe al +000BBA2B: test al, al +000BBA2D: jz short loc_BBA36 +000BBA2F: mov [rbp+var_D1], 1 +000BBA36: movzx eax, [rbp+var_D1] +000BBA3D: xor eax, 1 +000BBA40: test al, al +000BBA42: jnz loc_BB928 +000BBA48: mov rax, [rbp+s] +000BBA4F: mov rdi, rax; ptr +000BBA52: call _free +000BBA57: nop +000BBA58: jmp short loc_BBA77 +000BBA5A: mov rbx, rax +000BBA5D: mov rax, [rbp+var_108] +000BBA64: mov rdi, rax; this +000BBA67: call __ZNSsD1Ev; std::string::~string() +000BBA6C: mov rax, rbx +000BBA6F: mov rdi, rax; struct _Unwind_Exception * +000BBA72: call __Unwind_Resume +000BBA77: mov rax, [rbp+var_108] +000BBA7E: add rsp, 108h +000BBA85: pop rbx +000BBA86: pop rbp +000BBA87: retn + +### FUNC 000BBA88 - 000BBCC2 (570 bytes) name=_ZL19usb_sysfs_hw_stringRKSs +000BBA88: push rbp +000BBA89: mov rbp, rsp +000BBA8C: push r12 +000BBA8E: push rbx +000BBA8F: add rsp, 0FFFFFFFFFFFFFF80h +000BBA93: mov [rbp+var_88], rdi +000BBA9A: mov [rbp+var_90], rsi +000BBAA1: lea rax, [rbp+var_50] +000BBAA5: mov rcx, [rbp+var_90] +000BBAAC: lea rdx, aSerial; "/serial" +000BBAB3: mov rsi, rcx +000BBAB6: mov rdi, rax +000BBAB9: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BBABE: lea rax, [rbp+var_60] +000BBAC2: lea rdx, [rbp+var_50] +000BBAC6: mov rsi, rdx +000BBAC9: mov rdi, rax; std::string * +000BBACC: call _ZL9read_lineRKSs; read_line(std::string const&) +000BBAD1: lea rax, [rbp+var_50] +000BBAD5: mov rdi, rax; this +000BBAD8: call __ZNSsD1Ev; std::string::~string() +000BBADD: lea rax, [rbp+var_60] +000BBAE1: mov rdi, rax; this +000BBAE4: call __ZNKSs6lengthEv; std::string::length(void) +000BBAE9: test rax, rax +000BBAEC: setnz al +000BBAEF: test al, al +000BBAF1: jz short loc_BBB39 +000BBAF3: lea rax, [rbp+var_60] +000BBAF7: mov rdi, rax; this +000BBAFA: call __ZNKSs5c_strEv; std::string::c_str(void) +000BBAFF: mov rdx, rax +000BBB02: lea rax, [rbp+var_40] +000BBB06: lea rsi, aSnrS; "SNR=%s" +000BBB0D: mov rdi, rax; char * +000BBB10: mov eax, 0 +000BBB15: call _ZL6formatPKcz; format(char const*,...) +000BBB1A: lea rdx, [rbp+var_40] +000BBB1E: lea rax, [rbp+var_60] +000BBB22: mov rsi, rdx +000BBB25: mov rdi, rax +000BBB28: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000BBB2D: lea rax, [rbp+var_40] +000BBB31: mov rdi, rax; this +000BBB34: call __ZNSsD1Ev; std::string::~string() +000BBB39: lea rax, [rbp+var_30] +000BBB3D: mov rcx, [rbp+var_90] +000BBB44: lea rdx, aIdvendor; "/idVendor" +000BBB4B: mov rsi, rcx +000BBB4E: mov rdi, rax +000BBB51: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BBB56: lea rax, [rbp+var_70] +000BBB5A: lea rdx, [rbp+var_30] +000BBB5E: mov rsi, rdx +000BBB61: mov rdi, rax; std::string * +000BBB64: call _ZL9read_lineRKSs; read_line(std::string const&) +000BBB69: lea rax, [rbp+var_30] +000BBB6D: mov rdi, rax; this +000BBB70: call __ZNSsD1Ev; std::string::~string() +000BBB75: lea rax, [rbp+var_20] +000BBB79: mov rcx, [rbp+var_90] +000BBB80: lea rdx, aIdproduct; "/idProduct" +000BBB87: mov rsi, rcx +000BBB8A: mov rdi, rax +000BBB8D: call __ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_; std::operator+,std::allocator>(std::basic_string,std::allocator> const&,char const*) +000BBB92: lea rax, [rbp+var_80] +000BBB96: lea rdx, [rbp+var_20] +000BBB9A: mov rsi, rdx +000BBB9D: mov rdi, rax; std::string * +000BBBA0: call _ZL9read_lineRKSs; read_line(std::string const&) +000BBBA5: lea rax, [rbp+var_20] +000BBBA9: mov rdi, rax; this +000BBBAC: call __ZNSsD1Ev; std::string::~string() +000BBBB1: lea rax, [rbp+var_60] +000BBBB5: mov rdi, rax; this +000BBBB8: call __ZNKSs5c_strEv; std::string::c_str(void) +000BBBBD: mov r12, rax +000BBBC0: lea rax, [rbp+var_80] +000BBBC4: mov rdi, rax; this +000BBBC7: call __ZNKSs5c_strEv; std::string::c_str(void) +000BBBCC: mov rbx, rax +000BBBCF: lea rax, [rbp+var_70] +000BBBD3: mov rdi, rax; this +000BBBD6: call __ZNKSs5c_strEv; std::string::c_str(void) +000BBBDB: mov rdx, rax +000BBBDE: mov rax, [rbp+var_88] +000BBBE5: mov r8, r12 +000BBBE8: mov rcx, rbx +000BBBEB: lea rsi, aUsbVidPidSSS; "USB VID:PID=%s:%s %s" +000BBBF2: mov rdi, rax; char * +000BBBF5: mov eax, 0 +000BBBFA: call _ZL6formatPKcz; format(char const*,...) +000BBBFF: nop +000BBC00: lea rax, [rbp+var_80] +000BBC04: mov rdi, rax; this +000BBC07: call __ZNSsD1Ev; std::string::~string() +000BBC0C: lea rax, [rbp+var_70] +000BBC10: mov rdi, rax; this +000BBC13: call __ZNSsD1Ev; std::string::~string() +000BBC18: lea rax, [rbp+var_60] +000BBC1C: mov rdi, rax; this +000BBC1F: call __ZNSsD1Ev; std::string::~string() +000BBC24: jmp loc_BBCB2 +000BBC29: mov rbx, rax +000BBC2C: lea rax, [rbp+var_50] +000BBC30: mov rdi, rax; this +000BBC33: call __ZNSsD1Ev; std::string::~string() +000BBC38: mov rax, rbx +000BBC3B: mov rdi, rax; struct _Unwind_Exception * +000BBC3E: call __Unwind_Resume +000BBC43: mov rbx, rax +000BBC46: lea rax, [rbp+var_40] +000BBC4A: mov rdi, rax; this +000BBC4D: call __ZNSsD1Ev; std::string::~string() +000BBC52: jmp short loc_BBC9B +000BBC54: mov rbx, rax +000BBC57: lea rax, [rbp+var_30] +000BBC5B: mov rdi, rax; this +000BBC5E: call __ZNSsD1Ev; std::string::~string() +000BBC63: jmp short loc_BBC9B +000BBC65: mov rbx, rax +000BBC68: lea rax, [rbp+var_20] +000BBC6C: mov rdi, rax; this +000BBC6F: call __ZNSsD1Ev; std::string::~string() +000BBC74: jmp short loc_BBC8A +000BBC76: mov rbx, rax +000BBC79: lea rax, [rbp+var_80] +000BBC7D: mov rdi, rax; this +000BBC80: call __ZNSsD1Ev; std::string::~string() +000BBC85: jmp short loc_BBC8A +000BBC87: mov rbx, rax +000BBC8A: lea rax, [rbp+var_70] +000BBC8E: mov rdi, rax; this +000BBC91: call __ZNSsD1Ev; std::string::~string() +000BBC96: jmp short loc_BBC9B +000BBC98: mov rbx, rax +000BBC9B: lea rax, [rbp+var_60] +000BBC9F: mov rdi, rax; this +000BBCA2: call __ZNSsD1Ev; std::string::~string() +000BBCA7: mov rax, rbx +000BBCAA: mov rdi, rax; struct _Unwind_Exception * +000BBCAD: call __Unwind_Resume +000BBCB2: mov rax, [rbp+var_88] +000BBCB9: sub rsp, 0FFFFFFFFFFFFFF80h +000BBCBD: pop rbx +000BBCBE: pop r12 +000BBCC0: pop rbp +000BBCC1: retn + +### FUNC 000BBCC2 - 000BC1EB (1321 bytes) name=_ZN6serial10list_portsEv +000BBCC2: push rbp +000BBCC3: mov rbp, rsp +000BBCC6: push rbx +000BBCC7: sub rsp, 148h +000BBCCE: mov [rbp+var_148], rdi +000BBCD5: mov rax, [rbp+var_148] +000BBCDC: mov rdi, rax +000BBCDF: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EEC2Ev; std::vector>::vector(void) +000BBCE4: lea rax, [rbp+var_A0] +000BBCEB: mov rdi, rax +000BBCEE: call __ZNSt6vectorISsSaISsEEC2Ev; std::vector>::vector(void) +000BBCF3: lea rax, [rbp+var_71] +000BBCF7: mov rdi, rax +000BBCFA: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BBCFF: lea rdx, [rbp+var_71] +000BBD03: lea rax, [rbp+var_80] +000BBD07: lea rsi, aDevTtyacm; "/dev/ttyACM*" +000BBD0E: mov rdi, rax +000BBD11: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BBD16: lea rdx, [rbp+var_80] +000BBD1A: lea rax, [rbp+var_A0] +000BBD21: mov rsi, rdx +000BBD24: mov rdi, rax +000BBD27: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000BBD2C: lea rax, [rbp+var_80] +000BBD30: mov rdi, rax; this +000BBD33: call __ZNSsD1Ev; std::string::~string() +000BBD38: lea rax, [rbp+var_71] +000BBD3C: mov rdi, rax +000BBD3F: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BBD44: lea rax, [rbp+var_61] +000BBD48: mov rdi, rax +000BBD4B: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BBD50: lea rdx, [rbp+var_61] +000BBD54: lea rax, [rbp+var_70] +000BBD58: lea rsi, aDevTtys; "/dev/ttyS*" +000BBD5F: mov rdi, rax +000BBD62: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BBD67: lea rdx, [rbp+var_70] +000BBD6B: lea rax, [rbp+var_A0] +000BBD72: mov rsi, rdx +000BBD75: mov rdi, rax +000BBD78: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000BBD7D: lea rax, [rbp+var_70] +000BBD81: mov rdi, rax; this +000BBD84: call __ZNSsD1Ev; std::string::~string() +000BBD89: lea rax, [rbp+var_61] +000BBD8D: mov rdi, rax +000BBD90: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BBD95: lea rax, [rbp+var_51] +000BBD99: mov rdi, rax +000BBD9C: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BBDA1: lea rdx, [rbp+var_51] +000BBDA5: lea rax, [rbp+var_60] +000BBDA9: lea rsi, aDevTtyusb; "/dev/ttyUSB*" +000BBDB0: mov rdi, rax +000BBDB3: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BBDB8: lea rdx, [rbp+var_60] +000BBDBC: lea rax, [rbp+var_A0] +000BBDC3: mov rsi, rdx +000BBDC6: mov rdi, rax +000BBDC9: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000BBDCE: lea rax, [rbp+var_60] +000BBDD2: mov rdi, rax; this +000BBDD5: call __ZNSsD1Ev; std::string::~string() +000BBDDA: lea rax, [rbp+var_51] +000BBDDE: mov rdi, rax +000BBDE1: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BBDE6: lea rax, [rbp+var_41] +000BBDEA: mov rdi, rax +000BBDED: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BBDF2: lea rdx, [rbp+var_41] +000BBDF6: lea rax, [rbp+var_50] +000BBDFA: lea rsi, aDevTty; "/dev/tty.*" +000BBE01: mov rdi, rax +000BBE04: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BBE09: lea rdx, [rbp+var_50] +000BBE0D: lea rax, [rbp+var_A0] +000BBE14: mov rsi, rdx +000BBE17: mov rdi, rax +000BBE1A: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000BBE1F: lea rax, [rbp+var_50] +000BBE23: mov rdi, rax; this +000BBE26: call __ZNSsD1Ev; std::string::~string() +000BBE2B: lea rax, [rbp+var_41] +000BBE2F: mov rdi, rax +000BBE32: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BBE37: lea rax, [rbp+var_31] +000BBE3B: mov rdi, rax +000BBE3E: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000BBE43: lea rdx, [rbp+var_31] +000BBE47: lea rax, [rbp+var_40] +000BBE4B: lea rsi, aDevCu; "/dev/cu.*" +000BBE52: mov rdi, rax +000BBE55: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000BBE5A: lea rdx, [rbp+var_40] +000BBE5E: lea rax, [rbp+var_A0] +000BBE65: mov rsi, rdx +000BBE68: mov rdi, rax +000BBE6B: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000BBE70: lea rax, [rbp+var_40] +000BBE74: mov rdi, rax; this +000BBE77: call __ZNSsD1Ev; std::string::~string() +000BBE7C: lea rax, [rbp+var_31] +000BBE80: mov rdi, rax +000BBE83: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BBE88: lea rax, [rbp+var_C0] +000BBE8F: lea rdx, [rbp+var_A0] +000BBE96: mov rsi, rdx +000BBE99: mov rdi, rax +000BBE9C: call _ZL4globRKSt6vectorISsSaISsEE; glob(std::vector> const&) +000BBEA1: lea rax, [rbp+var_C0] +000BBEA8: mov rdi, rax +000BBEAB: call __ZNSt6vectorISsSaISsEE5beginEv; std::vector>::begin(void) +000BBEB0: mov [rbp+var_D0], rax +000BBEB7: jmp loc_BC026 +000BBEBC: lea rax, [rbp+var_D0] +000BBEC3: mov esi, 0 +000BBEC8: mov rdi, rax +000BBECB: call __ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEppEi; __gnu_cxx::__normal_iterator>>::operator++(int) +000BBED0: mov [rbp+var_30], rax +000BBED4: lea rax, [rbp+var_30] +000BBED8: mov rdi, rax +000BBEDB: call __ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000BBEE0: mov rdx, rax +000BBEE3: lea rax, [rbp+var_E0] +000BBEEA: mov rsi, rdx; std::string * +000BBEED: mov rdi, rax; this +000BBEF0: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BBEF5: lea rax, [rbp+var_100] +000BBEFC: lea rdx, [rbp+var_E0] +000BBF03: mov rsi, rdx +000BBF06: mov rdi, rax; std::string * +000BBF09: call _ZL14get_sysfs_infoRKSs; get_sysfs_info(std::string const&) +000BBF0E: lea rax, [rbp+var_100] +000BBF15: mov esi, 0 +000BBF1A: mov rdi, rax +000BBF1D: call __ZNSt6vectorISsSaISsEEixEm; std::vector>::operator[](ulong) +000BBF22: mov rdx, rax +000BBF25: lea rax, [rbp+var_110] +000BBF2C: mov rsi, rdx; std::string * +000BBF2F: mov rdi, rax; this +000BBF32: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BBF37: lea rax, [rbp+var_100] +000BBF3E: mov esi, 1 +000BBF43: mov rdi, rax +000BBF46: call __ZNSt6vectorISsSaISsEEixEm; std::vector>::operator[](ulong) +000BBF4B: mov rdx, rax +000BBF4E: lea rax, [rbp+var_120] +000BBF55: mov rsi, rdx; std::string * +000BBF58: mov rdi, rax; this +000BBF5B: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BBF60: lea rax, [rbp+var_140] +000BBF67: mov rdi, rax; this +000BBF6A: call __ZN6serial8PortInfoC2Ev; serial::PortInfo::PortInfo(void) +000BBF6F: lea rdx, [rbp+var_E0] +000BBF76: lea rax, [rbp+var_140] +000BBF7D: mov rsi, rdx +000BBF80: mov rdi, rax +000BBF83: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +000BBF88: lea rax, [rbp+var_110] +000BBF8F: lea rdx, [rbp+var_140] +000BBF96: add rdx, 8 +000BBF9A: mov rsi, rax +000BBF9D: mov rdi, rdx +000BBFA0: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +000BBFA5: lea rax, [rbp+var_120] +000BBFAC: lea rdx, [rbp+var_140] +000BBFB3: add rdx, 10h +000BBFB7: mov rsi, rax +000BBFBA: mov rdi, rdx +000BBFBD: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +000BBFC2: lea rdx, [rbp+var_140] +000BBFC9: mov rax, [rbp+var_148] +000BBFD0: mov rsi, rdx +000BBFD3: mov rdi, rax +000BBFD6: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EE9push_backERKS1_; std::vector>::push_back(serial::PortInfo const&) +000BBFDB: lea rax, [rbp+var_140] +000BBFE2: mov rdi, rax; this +000BBFE5: call __ZN6serial8PortInfoD2Ev; serial::PortInfo::~PortInfo() +000BBFEA: lea rax, [rbp+var_120] +000BBFF1: mov rdi, rax; this +000BBFF4: call __ZNSsD1Ev; std::string::~string() +000BBFF9: lea rax, [rbp+var_110] +000BC000: mov rdi, rax; this +000BC003: call __ZNSsD1Ev; std::string::~string() +000BC008: lea rax, [rbp+var_100] +000BC00F: mov rdi, rax +000BC012: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BC017: lea rax, [rbp+var_E0] +000BC01E: mov rdi, rax; this +000BC021: call __ZNSsD1Ev; std::string::~string() +000BC026: lea rax, [rbp+var_C0] +000BC02D: mov rdi, rax +000BC030: call __ZNSt6vectorISsSaISsEE3endEv; std::vector>::end(void) +000BC035: mov [rbp+var_20], rax +000BC039: lea rdx, [rbp+var_20] +000BC03D: lea rax, [rbp+var_D0] +000BC044: mov rsi, rdx +000BC047: mov rdi, rax +000BC04A: call __ZN9__gnu_cxxneIPSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESA_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000BC04F: test al, al +000BC051: jnz loc_BBEBC +000BC057: nop +000BC058: lea rax, [rbp+var_C0] +000BC05F: mov rdi, rax +000BC062: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BC067: lea rax, [rbp+var_A0] +000BC06E: mov rdi, rax +000BC071: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BC076: jmp loc_BC1DA +000BC07B: mov rbx, rax +000BC07E: lea rax, [rbp+var_80] +000BC082: mov rdi, rax; this +000BC085: call __ZNSsD1Ev; std::string::~string() +000BC08A: jmp short loc_BC08F +000BC08C: mov rbx, rax +000BC08F: lea rax, [rbp+var_71] +000BC093: mov rdi, rax +000BC096: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BC09B: jmp loc_BC1AC +000BC0A0: mov rbx, rax +000BC0A3: lea rax, [rbp+var_70] +000BC0A7: mov rdi, rax; this +000BC0AA: call __ZNSsD1Ev; std::string::~string() +000BC0AF: jmp short loc_BC0B4 +000BC0B1: mov rbx, rax +000BC0B4: lea rax, [rbp+var_61] +000BC0B8: mov rdi, rax +000BC0BB: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BC0C0: jmp loc_BC1AC +000BC0C5: mov rbx, rax +000BC0C8: lea rax, [rbp+var_60] +000BC0CC: mov rdi, rax; this +000BC0CF: call __ZNSsD1Ev; std::string::~string() +000BC0D4: jmp short loc_BC0D9 +000BC0D6: mov rbx, rax +000BC0D9: lea rax, [rbp+var_51] +000BC0DD: mov rdi, rax +000BC0E0: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BC0E5: jmp loc_BC1AC +000BC0EA: mov rbx, rax +000BC0ED: lea rax, [rbp+var_50] +000BC0F1: mov rdi, rax; this +000BC0F4: call __ZNSsD1Ev; std::string::~string() +000BC0F9: jmp short loc_BC0FE +000BC0FB: mov rbx, rax +000BC0FE: lea rax, [rbp+var_41] +000BC102: mov rdi, rax +000BC105: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BC10A: jmp loc_BC1AC +000BC10F: mov rbx, rax +000BC112: lea rax, [rbp+var_40] +000BC116: mov rdi, rax; this +000BC119: call __ZNSsD1Ev; std::string::~string() +000BC11E: jmp short loc_BC123 +000BC120: mov rbx, rax +000BC123: lea rax, [rbp+var_31] +000BC127: mov rdi, rax +000BC12A: call __ZNSaIcED1Ev; std::allocator::~allocator() +000BC12F: jmp short loc_BC1AC +000BC131: mov rbx, rax +000BC134: lea rax, [rbp+var_140] +000BC13B: mov rdi, rax; this +000BC13E: call __ZN6serial8PortInfoD2Ev; serial::PortInfo::~PortInfo() +000BC143: jmp short loc_BC148 +000BC145: mov rbx, rax +000BC148: lea rax, [rbp+var_120] +000BC14F: mov rdi, rax; this +000BC152: call __ZNSsD1Ev; std::string::~string() +000BC157: jmp short loc_BC15C +000BC159: mov rbx, rax +000BC15C: lea rax, [rbp+var_110] +000BC163: mov rdi, rax; this +000BC166: call __ZNSsD1Ev; std::string::~string() +000BC16B: jmp short loc_BC170 +000BC16D: mov rbx, rax +000BC170: lea rax, [rbp+var_100] +000BC177: mov rdi, rax +000BC17A: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BC17F: jmp short loc_BC184 +000BC181: mov rbx, rax +000BC184: lea rax, [rbp+var_E0] +000BC18B: mov rdi, rax; this +000BC18E: call __ZNSsD1Ev; std::string::~string() +000BC193: jmp short loc_BC198 +000BC195: mov rbx, rax +000BC198: lea rax, [rbp+var_C0] +000BC19F: mov rdi, rax +000BC1A2: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BC1A7: jmp short loc_BC1AC +000BC1A9: mov rbx, rax +000BC1AC: lea rax, [rbp+var_A0] +000BC1B3: mov rdi, rax +000BC1B6: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000BC1BB: jmp short loc_BC1C0 +000BC1BD: mov rbx, rax +000BC1C0: mov rax, [rbp+var_148] +000BC1C7: mov rdi, rax +000BC1CA: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EED2Ev; std::vector>::~vector() +000BC1CF: mov rax, rbx +000BC1D2: mov rdi, rax; struct _Unwind_Exception * +000BC1D5: call __Unwind_Resume +000BC1DA: mov rax, [rbp+var_148] +000BC1E1: add rsp, 148h +000BC1E8: pop rbx +000BC1E9: pop rbp +000BC1EA: retn + +### FUNC 000BC1EB - 000BC233 (72 bytes) name=_Z41__static_initialization_and_destruction_0ii +000BC1EB: push rbp +000BC1EC: mov rbp, rsp +000BC1EF: sub rsp, 10h +000BC1F3: mov [rbp+var_4], edi +000BC1F6: mov [rbp+var_8], esi +000BC1F9: cmp [rbp+var_4], 1 +000BC1FD: jnz short locret_BC231 +000BC1FF: cmp [rbp+var_8], 0FFFFh +000BC206: jnz short locret_BC231 +000BC208: lea rdi, _ZStL8__ioinit; this +000BC20F: call __ZNSt8ios_base4InitC1Ev; std::ios_base::Init::Init(void) +000BC214: lea rdx, __dso_handle; lpdso_handle +000BC21B: lea rsi, _ZStL8__ioinit; obj +000BC222: mov rax, cs:lpfunc +000BC229: mov rdi, rax; lpfunc +000BC22C: call ___cxa_atexit +000BC231: leave +000BC232: retn + +### FUNC 000BC233 - 000BC248 (21 bytes) name=_GLOBAL__sub_I_list_ports_linux.cc +000BC233: push rbp +000BC234: mov rbp, rsp +000BC237: mov esi, 0FFFFh; int +000BC23C: mov edi, 1; int +000BC241: call _Z41__static_initialization_and_destruction_0ii; __static_initialization_and_destruction_0(int,int) +000BC246: pop rbp +000BC247: retn + +### FUNC 000BC248 - 000BC2B9 (113 bytes) name=_ZN6serial8PortInfoC2Ev +000BC248: push rbp; Alternative name is 'serial::PortInfo::PortInfo(void)' +000BC249: mov rbp, rsp +000BC24C: push rbx +000BC24D: sub rsp, 18h +000BC251: mov [rbp+var_18], rdi +000BC255: mov rax, [rbp+var_18] +000BC259: mov rdi, rax; this +000BC25C: call __ZNSsC1Ev; std::string::string(void) +000BC261: mov rax, [rbp+var_18] +000BC265: add rax, 8 +000BC269: mov rdi, rax; this +000BC26C: call __ZNSsC1Ev; std::string::string(void) +000BC271: mov rax, [rbp+var_18] +000BC275: add rax, 10h +000BC279: mov rdi, rax; this +000BC27C: call __ZNSsC1Ev; std::string::string(void) +000BC281: jmp short loc_BC2B2 +000BC283: mov rbx, rax +000BC286: mov rax, [rbp+var_18] +000BC28A: add rax, 8 +000BC28E: mov rdi, rax; this +000BC291: call __ZNSsD1Ev; std::string::~string() +000BC296: jmp short loc_BC29B +000BC298: mov rbx, rax +000BC29B: mov rax, [rbp+var_18] +000BC29F: mov rdi, rax; this +000BC2A2: call __ZNSsD1Ev; std::string::~string() +000BC2A7: mov rax, rbx +000BC2AA: mov rdi, rax; struct _Unwind_Exception * +000BC2AD: call __Unwind_Resume +000BC2B2: add rsp, 18h +000BC2B6: pop rbx +000BC2B7: pop rbp +000BC2B8: retn + +### FUNC 000BC2BA - 000BC2D4 (26 bytes) name=_ZNSt6vectorISsSaISsEEC2Ev +000BC2BA: push rbp; Alternative name is 'std::vector>::vector(void)' +000BC2BB: mov rbp, rsp +000BC2BE: sub rsp, 10h +000BC2C2: mov [rbp+var_8], rdi +000BC2C6: mov rax, [rbp+var_8] +000BC2CA: mov rdi, rax +000BC2CD: call __ZNSt12_Vector_baseISsSaISsEEC2Ev; std::_Vector_base>::_Vector_base(void) +000BC2D2: leave +000BC2D3: retn + +### FUNC 000BC2D4 - 000BC317 (67 bytes) name=_ZNSt6vectorISsSaISsEED2Ev +000BC2D4: push rbp; Alternative name is 'std::vector>::~vector()' +000BC2D5: mov rbp, rsp +000BC2D8: sub rsp, 10h +000BC2DC: mov [rbp+var_8], rdi +000BC2E0: mov rax, [rbp+var_8] +000BC2E4: mov rdi, rax +000BC2E7: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BC2EC: mov rdx, rax +000BC2EF: mov rax, [rbp+var_8] +000BC2F3: mov rcx, [rax+8] +000BC2F7: mov rax, [rbp+var_8] +000BC2FB: mov rax, [rax] +000BC2FE: mov rsi, rcx +000BC301: mov rdi, rax +000BC304: call __ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E; std::_Destroy(std::string *,std::string *,std::allocator &) +000BC309: mov rax, [rbp+var_8] +000BC30D: mov rdi, rax +000BC310: call __ZNSt12_Vector_baseISsSaISsEED2Ev; std::_Vector_base>::~_Vector_base() +000BC315: leave +000BC316: retn + +### FUNC 000BC318 - 000BC33E (38 bytes) name=_ZNKSt6vectorISsSaISsEE4sizeEv +000BC318: push rbp +000BC319: mov rbp, rsp +000BC31C: mov [rbp+var_8], rdi +000BC320: mov rax, [rbp+var_8] +000BC324: mov rax, [rax+8] +000BC328: mov rdx, rax +000BC32B: mov rax, [rbp+var_8] +000BC32F: mov rax, [rax] +000BC332: sub rdx, rax +000BC335: mov rax, rdx +000BC338: sar rax, 3 +000BC33C: pop rbp +000BC33D: retn + +### FUNC 000BC33E - 000BC35E (32 bytes) name=_ZNKSt6vectorISsSaISsEEixEm +000BC33E: push rbp +000BC33F: mov rbp, rsp +000BC342: mov [rbp+var_8], rdi +000BC346: mov [rbp+var_10], rsi +000BC34A: mov rax, [rbp+var_8] +000BC34E: mov rax, [rax] +000BC351: mov rdx, [rbp+var_10] +000BC355: shl rdx, 3 +000BC359: add rax, rdx +000BC35C: pop rbp +000BC35D: retn + +### FUNC 000BC35E - 000BC38E (48 bytes) name=_ZNKSt6vectorISsSaISsEE5beginEv +000BC35E: push rbp +000BC35F: mov rbp, rsp +000BC362: sub rsp, 20h +000BC366: mov [rbp+var_18], rdi +000BC36A: mov rax, [rbp+var_18] +000BC36E: mov rax, [rax] +000BC371: mov [rbp+var_8], rax +000BC375: lea rdx, [rbp+var_8] +000BC379: lea rax, [rbp+var_10] +000BC37D: mov rsi, rdx +000BC380: mov rdi, rax +000BC383: call __ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC2ERKS2_; __gnu_cxx::__normal_iterator>>::__normal_iterator(std::string const* const&) +000BC388: mov rax, [rbp+var_10] +000BC38C: leave +000BC38D: retn + +### FUNC 000BC38E - 000BC3AE (32 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEppEv +000BC38E: push rbp +000BC38F: mov rbp, rsp +000BC392: mov [rbp+var_8], rdi +000BC396: mov rax, [rbp+var_8] +000BC39A: mov rax, [rax] +000BC39D: lea rdx, [rax+8] +000BC3A1: mov rax, [rbp+var_8] +000BC3A5: mov [rax], rdx +000BC3A8: mov rax, [rbp+var_8] +000BC3AC: pop rbp +000BC3AD: retn + +### FUNC 000BC3AE - 000BC3DF (49 bytes) name=_ZNKSt6vectorISsSaISsEE3endEv +000BC3AE: push rbp +000BC3AF: mov rbp, rsp +000BC3B2: sub rsp, 20h +000BC3B6: mov [rbp+var_18], rdi +000BC3BA: mov rax, [rbp+var_18] +000BC3BE: mov rax, [rax+8] +000BC3C2: mov [rbp+var_8], rax +000BC3C6: lea rdx, [rbp+var_8] +000BC3CA: lea rax, [rbp+var_10] +000BC3CE: mov rsi, rdx +000BC3D1: mov rdi, rax +000BC3D4: call __ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC2ERKS2_; __gnu_cxx::__normal_iterator>>::__normal_iterator(std::string const* const&) +000BC3D9: mov rax, [rbp+var_10] +000BC3DD: leave +000BC3DE: retn + +### FUNC 000BC3DF - 000BC41B (60 bytes) name=_ZN9__gnu_cxxneIPKSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ +000BC3DF: push rbp +000BC3E0: mov rbp, rsp +000BC3E3: push rbx +000BC3E4: sub rsp, 18h +000BC3E8: mov [rbp+var_18], rdi +000BC3EC: mov [rbp+var_20], rsi +000BC3F0: mov rax, [rbp+var_18] +000BC3F4: mov rdi, rax +000BC3F7: call __ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000BC3FC: mov rbx, [rax] +000BC3FF: mov rax, [rbp+var_20] +000BC403: mov rdi, rax +000BC406: call __ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000BC40B: mov rax, [rax] +000BC40E: cmp rbx, rax +000BC411: setnz al +000BC414: add rsp, 18h +000BC418: pop rbx +000BC419: pop rbp +000BC41A: retn + +### FUNC 000BC41C - 000BC42D (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEptEv +000BC41C: push rbp +000BC41D: mov rbp, rsp +000BC420: mov [rbp+var_8], rdi +000BC424: mov rax, [rbp+var_8] +000BC428: mov rax, [rax] +000BC42B: pop rbp +000BC42C: retn + +### FUNC 000BC42E - 000BC45E (48 bytes) name=_ZNSt6vectorISsSaISsEE9push_backEOSs +000BC42E: push rbp +000BC42F: mov rbp, rsp +000BC432: sub rsp, 10h +000BC436: mov [rbp+var_8], rdi +000BC43A: mov [rbp+var_10], rsi +000BC43E: mov rax, [rbp+var_10] +000BC442: mov rdi, rax +000BC445: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +000BC44A: mov rdx, rax +000BC44D: mov rax, [rbp+var_8] +000BC451: mov rsi, rdx +000BC454: mov rdi, rax +000BC457: call __ZNSt6vectorISsSaISsEE12emplace_backIJSsEEEvDpOT_; std::vector>::emplace_back(std::string &&) +000BC45C: leave +000BC45D: retn + +### FUNC 000BC45E - 000BC4C0 (98 bytes) name=_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ +000BC45E: push rbp +000BC45F: mov rbp, rsp +000BC462: push rbx +000BC463: sub rsp, 28h +000BC467: mov [rbp+var_18], rdi +000BC46B: mov [rbp+var_20], rsi +000BC46F: mov [rbp+var_28], rdx +000BC473: mov rdx, [rbp+var_20] +000BC477: mov rax, [rbp+var_18] +000BC47B: mov rsi, rdx; std::string * +000BC47E: mov rdi, rax; this +000BC481: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BC486: mov rdx, [rbp+var_28] +000BC48A: mov rax, [rbp+var_18] +000BC48E: mov rsi, rdx; char * +000BC491: mov rdi, rax; this +000BC494: call __ZNSs6appendEPKc; std::string::append(char const*) +000BC499: jmp short loc_BC4B5 +000BC49B: mov rbx, rax +000BC49E: mov rax, [rbp+var_18] +000BC4A2: mov rdi, rax; this +000BC4A5: call __ZNSsD1Ev; std::string::~string() +000BC4AA: mov rax, rbx +000BC4AD: mov rdi, rax; struct _Unwind_Exception * +000BC4B0: call __Unwind_Resume +000BC4B5: mov rax, [rbp+var_18] +000BC4B9: add rsp, 28h +000BC4BD: pop rbx +000BC4BE: pop rbp +000BC4BF: retn + +### FUNC 000BC4C0 - 000BC52B (107 bytes) name=_ZNSt6vectorISsSaISsEE9push_backERKSs +000BC4C0: push rbp +000BC4C1: mov rbp, rsp +000BC4C4: sub rsp, 10h +000BC4C8: mov [rbp+var_8], rdi +000BC4CC: mov [rbp+var_10], rsi +000BC4D0: mov rax, [rbp+var_8] +000BC4D4: mov rdx, [rax+8] +000BC4D8: mov rax, [rbp+var_8] +000BC4DC: mov rax, [rax+10h] +000BC4E0: cmp rdx, rax +000BC4E3: jz short loc_BC516 +000BC4E5: mov rax, [rbp+var_8] +000BC4E9: mov rcx, [rax+8] +000BC4ED: mov rax, [rbp+var_8] +000BC4F1: mov rdx, [rbp+var_10] +000BC4F5: mov rsi, rcx +000BC4F8: mov rdi, rax +000BC4FB: call __ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000BC500: mov rax, [rbp+var_8] +000BC504: mov rax, [rax+8] +000BC508: lea rdx, [rax+8] +000BC50C: mov rax, [rbp+var_8] +000BC510: mov [rax+8], rdx +000BC514: jmp short locret_BC529 +000BC516: mov rdx, [rbp+var_10] +000BC51A: mov rax, [rbp+var_8] +000BC51E: mov rsi, rdx +000BC521: mov rdi, rax +000BC524: call __ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJRKSsEEEvDpOT_; std::vector>::_M_emplace_back_aux(std::string const&) +000BC529: leave +000BC52A: retn + +### FUNC 000BC52C - 000BC546 (26 bytes) name=_ZNSt6vectorIN6serial8PortInfoESaIS1_EEC2Ev +000BC52C: push rbp; Alternative name is 'std::vector>::vector(void)' +000BC52D: mov rbp, rsp +000BC530: sub rsp, 10h +000BC534: mov [rbp+var_8], rdi +000BC538: mov rax, [rbp+var_8] +000BC53C: mov rdi, rax +000BC53F: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EEC2Ev; std::_Vector_base>::_Vector_base(void) +000BC544: leave +000BC545: retn + +### FUNC 000BC546 - 000BC56B (37 bytes) name=_ZNSt6vectorISsSaISsEE5beginEv +000BC546: push rbp +000BC547: mov rbp, rsp +000BC54A: sub rsp, 20h +000BC54E: mov [rbp+var_18], rdi +000BC552: mov rdx, [rbp+var_18] +000BC556: lea rax, [rbp+var_10] +000BC55A: mov rsi, rdx +000BC55D: mov rdi, rax +000BC560: call __ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(std::string * const&) +000BC565: mov rax, [rbp+var_10] +000BC569: leave +000BC56A: retn + +### FUNC 000BC56C - 000BC595 (41 bytes) name=_ZNSt6vectorISsSaISsEE3endEv +000BC56C: push rbp +000BC56D: mov rbp, rsp +000BC570: sub rsp, 20h +000BC574: mov [rbp+var_18], rdi +000BC578: mov rax, [rbp+var_18] +000BC57C: lea rdx, [rax+8] +000BC580: lea rax, [rbp+var_10] +000BC584: mov rsi, rdx +000BC587: mov rdi, rax +000BC58A: call __ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(std::string * const&) +000BC58F: mov rax, [rbp+var_10] +000BC593: leave +000BC594: retn + +### FUNC 000BC595 - 000BC5D1 (60 bytes) name=_ZN9__gnu_cxxneIPSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +000BC595: push rbp +000BC596: mov rbp, rsp +000BC599: push rbx +000BC59A: sub rsp, 18h +000BC59E: mov [rbp+var_18], rdi +000BC5A2: mov [rbp+var_20], rsi +000BC5A6: mov rax, [rbp+var_18] +000BC5AA: mov rdi, rax +000BC5AD: call __ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000BC5B2: mov rbx, [rax] +000BC5B5: mov rax, [rbp+var_20] +000BC5B9: mov rdi, rax +000BC5BC: call __ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000BC5C1: mov rax, [rax] +000BC5C4: cmp rbx, rax +000BC5C7: setnz al +000BC5CA: add rsp, 18h +000BC5CE: pop rbx +000BC5CF: pop rbp +000BC5D0: retn + +### FUNC 000BC5D2 - 000BC610 (62 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEppEi +000BC5D2: push rbp +000BC5D3: mov rbp, rsp +000BC5D6: sub rsp, 20h +000BC5DA: mov [rbp+var_18], rdi +000BC5DE: mov [rbp+var_1C], esi +000BC5E1: mov rax, [rbp+var_18] +000BC5E5: mov rax, [rax] +000BC5E8: lea rcx, [rax+8] +000BC5EC: mov rdx, [rbp+var_18] +000BC5F0: mov [rdx], rcx +000BC5F3: mov [rbp+var_8], rax +000BC5F7: lea rdx, [rbp+var_8] +000BC5FB: lea rax, [rbp+var_10] +000BC5FF: mov rsi, rdx +000BC602: mov rdi, rax +000BC605: call __ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(std::string * const&) +000BC60A: mov rax, [rbp+var_10] +000BC60E: leave +000BC60F: retn + +### FUNC 000BC610 - 000BC621 (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEdeEv +000BC610: push rbp +000BC611: mov rbp, rsp +000BC614: mov [rbp+var_8], rdi +000BC618: mov rax, [rbp+var_8] +000BC61C: mov rax, [rax] +000BC61F: pop rbp +000BC620: retn + +### FUNC 000BC622 - 000BC642 (32 bytes) name=_ZNSt6vectorISsSaISsEEixEm +000BC622: push rbp +000BC623: mov rbp, rsp +000BC626: mov [rbp+var_8], rdi +000BC62A: mov [rbp+var_10], rsi +000BC62E: mov rax, [rbp+var_8] +000BC632: mov rax, [rax] +000BC635: mov rdx, [rbp+var_10] +000BC639: shl rdx, 3 +000BC63D: add rax, rdx +000BC640: pop rbp +000BC641: retn + +### FUNC 000BC642 - 000BC650 (14 bytes) name=_ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE +000BC642: push rbp +000BC643: mov rbp, rsp +000BC646: mov [rbp+var_8], rdi +000BC64A: mov rax, [rbp+var_8] +000BC64E: pop rbp +000BC64F: retn + +### FUNC 000BC650 - 000BC6BB (107 bytes) name=_ZNSt6vectorIN6serial8PortInfoESaIS1_EE9push_backERKS1_ +000BC650: push rbp +000BC651: mov rbp, rsp +000BC654: sub rsp, 10h +000BC658: mov [rbp+var_8], rdi +000BC65C: mov [rbp+var_10], rsi +000BC660: mov rax, [rbp+var_8] +000BC664: mov rdx, [rax+8] +000BC668: mov rax, [rbp+var_8] +000BC66C: mov rax, [rax+10h] +000BC670: cmp rdx, rax +000BC673: jz short loc_BC6A6 +000BC675: mov rax, [rbp+var_8] +000BC679: mov rcx, [rax+8] +000BC67D: mov rax, [rbp+var_8] +000BC681: mov rdx, [rbp+var_10] +000BC685: mov rsi, rcx +000BC688: mov rdi, rax +000BC68B: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_JRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ +000BC690: mov rax, [rbp+var_8] +000BC694: mov rax, [rax+8] +000BC698: lea rdx, [rax+18h] +000BC69C: mov rax, [rbp+var_8] +000BC6A0: mov [rax+8], rdx +000BC6A4: jmp short locret_BC6B9 +000BC6A6: mov rdx, [rbp+var_10] +000BC6AA: mov rax, [rbp+var_8] +000BC6AE: mov rsi, rdx +000BC6B1: mov rdi, rax +000BC6B4: call __ZNSt6vectorIN6serial8PortInfoESaIS1_EE19_M_emplace_back_auxIJRKS1_EEEvDpOT_; std::vector>::_M_emplace_back_aux(serial::PortInfo const&) +000BC6B9: leave +000BC6BA: retn + +### FUNC 000BC6BC - 000BC6D6 (26 bytes) name=_ZNSt12_Vector_baseISsSaISsEE12_Vector_implD2Ev +000BC6BC: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::~_Vector_impl()' +000BC6BD: mov rbp, rsp +000BC6C0: sub rsp, 10h +000BC6C4: mov [rbp+var_8], rdi +000BC6C8: mov rax, [rbp+var_8] +000BC6CC: mov rdi, rax +000BC6CF: call __ZNSaISsED2Ev_0; std::allocator::~allocator() +000BC6D4: leave +000BC6D5: retn + +### FUNC 000BC6D6 - 000BC6F0 (26 bytes) name=_ZNSt12_Vector_baseISsSaISsEEC2Ev +000BC6D6: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(void)' +000BC6D7: mov rbp, rsp +000BC6DA: sub rsp, 10h +000BC6DE: mov [rbp+var_8], rdi +000BC6E2: mov rax, [rbp+var_8] +000BC6E6: mov rdi, rax +000BC6E9: call __ZNSt12_Vector_baseISsSaISsEE12_Vector_implC2Ev; std::_Vector_base>::_Vector_impl::_Vector_impl(void) +000BC6EE: leave +000BC6EF: retn + +### FUNC 000BC6F0 - 000BC73F (79 bytes) name=_ZNSt12_Vector_baseISsSaISsEED2Ev +000BC6F0: push rbp; Alternative name is 'std::_Vector_base>::~_Vector_base()' +000BC6F1: mov rbp, rsp +000BC6F4: sub rsp, 10h +000BC6F8: mov [rbp+var_8], rdi +000BC6FC: mov rax, [rbp+var_8] +000BC700: mov rax, [rax+10h] +000BC704: mov rdx, rax +000BC707: mov rax, [rbp+var_8] +000BC70B: mov rax, [rax] +000BC70E: sub rdx, rax +000BC711: mov rax, rdx +000BC714: sar rax, 3 +000BC718: mov rdx, rax +000BC71B: mov rax, [rbp+var_8] +000BC71F: mov rcx, [rax] +000BC722: mov rax, [rbp+var_8] +000BC726: mov rsi, rcx +000BC729: mov rdi, rax +000BC72C: call __ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm; std::_Vector_base>::_M_deallocate(std::string *,ulong) +000BC731: mov rax, [rbp+var_8] +000BC735: mov rdi, rax +000BC738: call __ZNSt12_Vector_baseISsSaISsEE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +000BC73D: leave +000BC73E: retn + +### FUNC 000BC740 - 000BC74E (14 bytes) name=_ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +000BC740: push rbp +000BC741: mov rbp, rsp +000BC744: mov [rbp+var_8], rdi +000BC748: mov rax, [rbp+var_8] +000BC74C: pop rbp +000BC74D: retn + +### FUNC 000BC74E - 000BC777 (41 bytes) name=_ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E +000BC74E: push rbp +000BC74F: mov rbp, rsp +000BC752: sub rsp, 20h +000BC756: mov [rbp+var_8], rdi +000BC75A: mov [rbp+var_10], rsi +000BC75E: mov [rbp+var_18], rdx +000BC762: mov rdx, [rbp+var_10] +000BC766: mov rax, [rbp+var_8] +000BC76A: mov rsi, rdx +000BC76D: mov rdi, rax +000BC770: call __ZSt8_DestroyIPSsEvT_S1_; std::_Destroy(std::string *,std::string *) +000BC775: leave +000BC776: retn + +### FUNC 000BC778 - 000BC794 (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC2ERKS2_ +000BC778: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>>::__normal_iterator(std::string const* const&)' +000BC779: mov rbp, rsp +000BC77C: mov [rbp+var_8], rdi +000BC780: mov [rbp+var_10], rsi +000BC784: mov rax, [rbp+var_10] +000BC788: mov rdx, [rax] +000BC78B: mov rax, [rbp+var_8] +000BC78F: mov [rax], rdx +000BC792: pop rbp +000BC793: retn + +### FUNC 000BC794 - 000BC7A2 (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv +000BC794: push rbp +000BC795: mov rbp, rsp +000BC798: mov [rbp+var_8], rdi +000BC79C: mov rax, [rbp+var_8] +000BC7A0: pop rbp +000BC7A1: retn + +### FUNC 000BC7A2 - 000BC823 (129 bytes) name=_ZNSt6vectorISsSaISsEE12emplace_backIJSsEEEvDpOT_ +000BC7A2: push rbp; Alternative name is 'void std::vector>::emplace_back(std::string &&)' +000BC7A3: mov rbp, rsp +000BC7A6: sub rsp, 10h +000BC7AA: mov [rbp+var_8], rdi +000BC7AE: mov [rbp+var_10], rsi +000BC7B2: mov rax, [rbp+var_8] +000BC7B6: mov rdx, [rax+8] +000BC7BA: mov rax, [rbp+var_8] +000BC7BE: mov rax, [rax+10h] +000BC7C2: cmp rdx, rax +000BC7C5: jz short loc_BC803 +000BC7C7: mov rax, [rbp+var_10] +000BC7CB: mov rdi, rax +000BC7CE: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BC7D3: mov rdx, rax +000BC7D6: mov rax, [rbp+var_8] +000BC7DA: mov rcx, [rax+8] +000BC7DE: mov rax, [rbp+var_8] +000BC7E2: mov rsi, rcx +000BC7E5: mov rdi, rax +000BC7E8: call __ZNSt16allocator_traitsISaISsEE9constructISsJSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000BC7ED: mov rax, [rbp+var_8] +000BC7F1: mov rax, [rax+8] +000BC7F5: lea rdx, [rax+8] +000BC7F9: mov rax, [rbp+var_8] +000BC7FD: mov [rax+8], rdx +000BC801: jmp short locret_BC821 +000BC803: mov rax, [rbp+var_10] +000BC807: mov rdi, rax +000BC80A: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BC80F: mov rdx, rax +000BC812: mov rax, [rbp+var_8] +000BC816: mov rsi, rdx +000BC819: mov rdi, rax +000BC81C: call __ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJSsEEEvDpOT_; std::vector>::_M_emplace_back_aux(std::string &&) +000BC821: leave +000BC822: retn + +### FUNC 000BC824 - 000BCA10 (492 bytes) name=_ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJRKSsEEEvDpOT_ +000BC824: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(std::string const&)' +000BC825: mov rbp, rsp +000BC828: push rbx +000BC829: sub rsp, 38h +000BC82D: mov [rbp+var_38], rdi +000BC831: mov [rbp+var_40], rsi +000BC835: mov rax, [rbp+var_38] +000BC839: lea rdx, aVectorMEmplace_1; "vector::_M_emplace_back_aux" +000BC840: mov esi, 1 +000BC845: mov rdi, rax +000BC848: call __ZNKSt6vectorISsSaISsEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000BC84D: mov [rbp+var_20], rax +000BC851: mov rax, [rbp+var_38] +000BC855: mov rdx, [rbp+var_20] +000BC859: mov rsi, rdx +000BC85C: mov rdi, rax +000BC85F: call __ZNSt12_Vector_baseISsSaISsEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000BC864: mov [rbp+var_28], rax +000BC868: mov rax, [rbp+var_28] +000BC86C: mov [rbp+var_18], rax +000BC870: mov rax, [rbp+var_40] +000BC874: mov rdi, rax +000BC877: call __ZSt7forwardIRKSsEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BC87C: mov rbx, rax +000BC87F: mov rax, [rbp+var_38] +000BC883: mov rdi, rax +000BC886: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BC88B: lea rdx, ds:0[rax*8] +000BC893: mov rax, [rbp+var_28] +000BC897: lea rcx, [rdx+rax] +000BC89B: mov rax, [rbp+var_38] +000BC89F: mov rdx, rbx +000BC8A2: mov rsi, rcx +000BC8A5: mov rdi, rax +000BC8A8: call __ZNSt16allocator_traitsISaISsEE9constructISsJRKSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000BC8AD: mov [rbp+var_18], 0 +000BC8B5: mov rax, [rbp+var_38] +000BC8B9: mov rdi, rax +000BC8BC: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BC8C1: mov rcx, rax +000BC8C4: mov rax, [rbp+var_38] +000BC8C8: mov rsi, [rax+8] +000BC8CC: mov rax, [rbp+var_38] +000BC8D0: mov rax, [rax] +000BC8D3: mov rdx, [rbp+var_28] +000BC8D7: mov rdi, rax +000BC8DA: call __ZSt34__uninitialized_move_if_noexcept_aIPSsS0_SaISsEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(std::string *,std::string *,std::string *,std::allocator &) +000BC8DF: mov [rbp+var_18], rax +000BC8E3: add [rbp+var_18], 8 +000BC8E8: mov rax, [rbp+var_38] +000BC8EC: mov rdi, rax +000BC8EF: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BC8F4: mov rdx, rax +000BC8F7: mov rax, [rbp+var_38] +000BC8FB: mov rcx, [rax+8] +000BC8FF: mov rax, [rbp+var_38] +000BC903: mov rax, [rax] +000BC906: mov rsi, rcx +000BC909: mov rdi, rax +000BC90C: call __ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E; std::_Destroy(std::string *,std::string *,std::allocator &) +000BC911: mov rax, [rbp+var_38] +000BC915: mov rax, [rax+10h] +000BC919: mov rdx, rax +000BC91C: mov rax, [rbp+var_38] +000BC920: mov rax, [rax] +000BC923: sub rdx, rax +000BC926: mov rax, rdx +000BC929: sar rax, 3 +000BC92D: mov rdx, rax +000BC930: mov rax, [rbp+var_38] +000BC934: mov rcx, [rax] +000BC937: mov rax, [rbp+var_38] +000BC93B: mov rsi, rcx +000BC93E: mov rdi, rax +000BC941: call __ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm; std::_Vector_base>::_M_deallocate(std::string *,ulong) +000BC946: mov rax, [rbp+var_38] +000BC94A: mov rdx, [rbp+var_28] +000BC94E: mov [rax], rdx +000BC951: mov rax, [rbp+var_38] +000BC955: mov rdx, [rbp+var_18] +000BC959: mov [rax+8], rdx +000BC95D: mov rax, [rbp+var_20] +000BC961: lea rdx, ds:0[rax*8] +000BC969: mov rax, [rbp+var_28] +000BC96D: add rdx, rax +000BC970: mov rax, [rbp+var_38] +000BC974: mov [rax+10h], rdx +000BC978: jmp loc_BCA09 +000BC97D: mov rdi, rax; void * +000BC980: call ___cxa_begin_catch +000BC985: cmp [rbp+var_18], 0 +000BC98A: jnz short loc_BC9B8 +000BC98C: mov rax, [rbp+var_38] +000BC990: mov rdi, rax +000BC993: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BC998: lea rdx, ds:0[rax*8] +000BC9A0: mov rax, [rbp+var_28] +000BC9A4: add rdx, rax +000BC9A7: mov rax, [rbp+var_38] +000BC9AB: mov rsi, rdx +000BC9AE: mov rdi, rax +000BC9B1: call __ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,std::string *) +000BC9B6: jmp short loc_BC9DA +000BC9B8: mov rax, [rbp+var_38] +000BC9BC: mov rdi, rax +000BC9BF: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BC9C4: mov rdx, rax +000BC9C7: mov rcx, [rbp+var_18] +000BC9CB: mov rax, [rbp+var_28] +000BC9CF: mov rsi, rcx +000BC9D2: mov rdi, rax +000BC9D5: call __ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E; std::_Destroy(std::string *,std::string *,std::allocator &) +000BC9DA: mov rax, [rbp+var_38] +000BC9DE: mov rdx, [rbp+var_20] +000BC9E2: mov rcx, [rbp+var_28] +000BC9E6: mov rsi, rcx +000BC9E9: mov rdi, rax +000BC9EC: call __ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm; std::_Vector_base>::_M_deallocate(std::string *,ulong) +000BC9F1: call ___cxa_rethrow +000BC9F6: mov rbx, rax +000BC9F9: call ___cxa_end_catch +000BC9FE: mov rax, rbx +000BCA01: mov rdi, rax; struct _Unwind_Exception * +000BCA04: call __Unwind_Resume +000BCA09: add rsp, 38h +000BCA0D: pop rbx +000BCA0E: pop rbp +000BCA0F: retn + +### FUNC 000BCA10 - 000BCA2A (26 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EEC2Ev +000BCA10: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(void)' +000BCA11: mov rbp, rsp +000BCA14: sub rsp, 10h +000BCA18: mov [rbp+var_8], rdi +000BCA1C: mov rax, [rbp+var_8] +000BCA20: mov rdi, rax +000BCA23: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implC2Ev; std::_Vector_base>::_Vector_impl::_Vector_impl(void) +000BCA28: leave +000BCA29: retn + +### FUNC 000BCA2A - 000BCA46 (28 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC2ERKS1_ +000BCA2A: push rbp; Alternative name is '__gnu_cxx::__normal_iterator>>::__normal_iterator(std::string * const&)' +000BCA2B: mov rbp, rsp +000BCA2E: mov [rbp+var_8], rdi +000BCA32: mov [rbp+var_10], rsi +000BCA36: mov rax, [rbp+var_10] +000BCA3A: mov rdx, [rax] +000BCA3D: mov rax, [rbp+var_8] +000BCA41: mov [rax], rdx +000BCA44: pop rbp +000BCA45: retn + +### FUNC 000BCA46 - 000BCA54 (14 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv +000BCA46: push rbp +000BCA47: mov rbp, rsp +000BCA4A: mov [rbp+var_8], rdi +000BCA4E: mov rax, [rbp+var_8] +000BCA52: pop rbp +000BCA53: retn + +### FUNC 000BCA54 - 000BCA8C (56 bytes) name=_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_JRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ +000BCA54: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_IRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_' +000BCA55: mov rbp, rsp +000BCA58: sub rsp, 20h +000BCA5C: mov [rbp+var_8], rdi +000BCA60: mov [rbp+var_10], rsi +000BCA64: mov [rbp+var_18], rdx +000BCA68: mov rax, [rbp+var_18] +000BCA6C: mov rdi, rax +000BCA6F: call __ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward(std::remove_reference::type &) +000BCA74: mov rdx, rax +000BCA77: mov rcx, [rbp+var_10] +000BCA7B: mov rax, [rbp+var_8] +000BCA7F: mov rsi, rcx +000BCA82: mov rdi, rax +000BCA85: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE12_S_constructIS1_JRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_; std::allocator_traits>::_S_construct(std::allocator&,serial::PortInfo*,serial::PortInfo const&&&) +000BCA8A: leave +000BCA8B: retn + +### FUNC 000BCA8C - 000BCCA7 (539 bytes) name=_ZNSt6vectorIN6serial8PortInfoESaIS1_EE19_M_emplace_back_auxIJRKS1_EEEvDpOT_ +000BCA8C: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(serial::PortInfo const&)' +000BCA8D: mov rbp, rsp +000BCA90: push rbx +000BCA91: sub rsp, 38h +000BCA95: mov [rbp+var_38], rdi +000BCA99: mov [rbp+var_40], rsi +000BCA9D: mov rax, [rbp+var_38] +000BCAA1: lea rdx, aVectorMEmplace_1; "vector::_M_emplace_back_aux" +000BCAA8: mov esi, 1 +000BCAAD: mov rdi, rax +000BCAB0: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000BCAB5: mov [rbp+var_20], rax +000BCAB9: mov rax, [rbp+var_38] +000BCABD: mov rdx, [rbp+var_20] +000BCAC1: mov rsi, rdx +000BCAC4: mov rdi, rax +000BCAC7: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000BCACC: mov [rbp+var_28], rax +000BCAD0: mov rax, [rbp+var_28] +000BCAD4: mov [rbp+var_18], rax +000BCAD8: mov rax, [rbp+var_40] +000BCADC: mov rdi, rax +000BCADF: call __ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward(std::remove_reference::type &) +000BCAE4: mov rbx, rax +000BCAE7: mov rax, [rbp+var_38] +000BCAEB: mov rdi, rax +000BCAEE: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv; std::vector>::size(void) +000BCAF3: mov rdx, rax +000BCAF6: mov rax, rdx +000BCAF9: add rax, rax +000BCAFC: add rax, rdx +000BCAFF: shl rax, 3 +000BCB03: mov rdx, rax +000BCB06: mov rax, [rbp+var_28] +000BCB0A: lea rcx, [rdx+rax] +000BCB0E: mov rax, [rbp+var_38] +000BCB12: mov rdx, rbx +000BCB15: mov rsi, rcx +000BCB18: mov rdi, rax +000BCB1B: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE9constructIS1_JRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ +000BCB20: mov [rbp+var_18], 0 +000BCB28: mov rax, [rbp+var_38] +000BCB2C: mov rdi, rax +000BCB2F: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BCB34: mov rcx, rax +000BCB37: mov rax, [rbp+var_38] +000BCB3B: mov rsi, [rax+8] +000BCB3F: mov rax, [rbp+var_38] +000BCB43: mov rax, [rax] +000BCB46: mov rdx, [rbp+var_28] +000BCB4A: mov rdi, rax +000BCB4D: call __ZSt34__uninitialized_move_if_noexcept_aIPN6serial8PortInfoES2_SaIS1_EET0_T_S5_S4_RT1_; std::__uninitialized_move_if_noexcept_a>(serial::PortInfo *,serial::PortInfo *,serial::PortInfo *,std::allocator &) +000BCB52: mov [rbp+var_18], rax +000BCB56: add [rbp+var_18], 18h +000BCB5B: mov rax, [rbp+var_38] +000BCB5F: mov rdi, rax +000BCB62: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BCB67: mov rdx, rax +000BCB6A: mov rax, [rbp+var_38] +000BCB6E: mov rcx, [rax+8] +000BCB72: mov rax, [rbp+var_38] +000BCB76: mov rax, [rax] +000BCB79: mov rsi, rcx +000BCB7C: mov rdi, rax +000BCB7F: call __ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E; std::_Destroy(serial::PortInfo *,serial::PortInfo *,std::allocator &) +000BCB84: mov rax, [rbp+var_38] +000BCB88: mov rax, [rax+10h] +000BCB8C: mov rdx, rax +000BCB8F: mov rax, [rbp+var_38] +000BCB93: mov rax, [rax] +000BCB96: sub rdx, rax +000BCB99: mov rax, rdx +000BCB9C: sar rax, 3 +000BCBA0: mov rdx, rax +000BCBA3: mov rax, 0AAAAAAAAAAAAAAABh +000BCBAD: imul rax, rdx +000BCBB1: mov rdx, rax +000BCBB4: mov rax, [rbp+var_38] +000BCBB8: mov rcx, [rax] +000BCBBB: mov rax, [rbp+var_38] +000BCBBF: mov rsi, rcx +000BCBC2: mov rdi, rax +000BCBC5: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m; std::_Vector_base>::_M_deallocate(serial::PortInfo*,ulong) +000BCBCA: mov rax, [rbp+var_38] +000BCBCE: mov rdx, [rbp+var_28] +000BCBD2: mov [rax], rdx +000BCBD5: mov rax, [rbp+var_38] +000BCBD9: mov rdx, [rbp+var_18] +000BCBDD: mov [rax+8], rdx +000BCBE1: mov rdx, [rbp+var_20] +000BCBE5: mov rax, rdx +000BCBE8: add rax, rax +000BCBEB: add rax, rdx +000BCBEE: shl rax, 3 +000BCBF2: mov rdx, rax +000BCBF5: mov rax, [rbp+var_28] +000BCBF9: add rdx, rax +000BCBFC: mov rax, [rbp+var_38] +000BCC00: mov [rax+10h], rdx +000BCC04: jmp loc_BCCA0 +000BCC09: mov rdi, rax; void * +000BCC0C: call ___cxa_begin_catch +000BCC11: cmp [rbp+var_18], 0 +000BCC16: jnz short loc_BCC4F +000BCC18: mov rax, [rbp+var_38] +000BCC1C: mov rdi, rax +000BCC1F: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv; std::vector>::size(void) +000BCC24: mov rdx, rax +000BCC27: mov rax, rdx +000BCC2A: add rax, rax +000BCC2D: add rax, rdx +000BCC30: shl rax, 3 +000BCC34: mov rdx, rax +000BCC37: mov rax, [rbp+var_28] +000BCC3B: add rdx, rax +000BCC3E: mov rax, [rbp+var_38] +000BCC42: mov rsi, rdx +000BCC45: mov rdi, rax +000BCC48: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE7destroyIS1_EEvRS2_PT_; std::allocator_traits>::destroy(std::allocator&,serial::PortInfo *) +000BCC4D: jmp short loc_BCC71 +000BCC4F: mov rax, [rbp+var_38] +000BCC53: mov rdi, rax +000BCC56: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BCC5B: mov rdx, rax +000BCC5E: mov rcx, [rbp+var_18] +000BCC62: mov rax, [rbp+var_28] +000BCC66: mov rsi, rcx +000BCC69: mov rdi, rax +000BCC6C: call __ZSt8_DestroyIPN6serial8PortInfoES1_EvT_S3_RSaIT0_E; std::_Destroy(serial::PortInfo *,serial::PortInfo *,std::allocator &) +000BCC71: mov rax, [rbp+var_38] +000BCC75: mov rdx, [rbp+var_20] +000BCC79: mov rcx, [rbp+var_28] +000BCC7D: mov rsi, rcx +000BCC80: mov rdi, rax +000BCC83: call __ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE13_M_deallocateEPS1_m; std::_Vector_base>::_M_deallocate(serial::PortInfo*,ulong) +000BCC88: call ___cxa_rethrow +000BCC8D: mov rbx, rax +000BCC90: call ___cxa_end_catch +000BCC95: mov rax, rbx +000BCC98: mov rdi, rax; struct _Unwind_Exception * +000BCC9B: call __Unwind_Resume +000BCCA0: add rsp, 38h +000BCCA4: pop rbx +000BCCA5: pop rbp +000BCCA6: retn + +### FUNC 000BCCA8 - 000BCCE5 (61 bytes) name=_ZNSt12_Vector_baseISsSaISsEE12_Vector_implC2Ev +000BCCA8: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(void)' +000BCCA9: mov rbp, rsp +000BCCAC: sub rsp, 10h +000BCCB0: mov [rbp+var_8], rdi +000BCCB4: mov rax, [rbp+var_8] +000BCCB8: mov rdi, rax +000BCCBB: call __ZNSaISsEC2Ev; std::allocator::allocator(void) +000BCCC0: mov rax, [rbp+var_8] +000BCCC4: mov qword ptr [rax], 0 +000BCCCB: mov rax, [rbp+var_8] +000BCCCF: mov qword ptr [rax+8], 0 +000BCCD7: mov rax, [rbp+var_8] +000BCCDB: mov qword ptr [rax+10h], 0 +000BCCE3: leave +000BCCE4: retn + +### FUNC 000BCCE6 - 000BCD1A (52 bytes) name=_ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm +000BCCE6: push rbp +000BCCE7: mov rbp, rsp +000BCCEA: sub rsp, 20h +000BCCEE: mov [rbp+var_8], rdi +000BCCF2: mov [rbp+var_10], rsi +000BCCF6: mov [rbp+var_18], rdx +000BCCFA: cmp [rbp+var_10], 0 +000BCCFF: jz short locret_BCD18 +000BCD01: mov rax, [rbp+var_8] +000BCD05: mov rdx, [rbp+var_18] +000BCD09: mov rcx, [rbp+var_10] +000BCD0D: mov rsi, rcx +000BCD10: mov rdi, rax +000BCD13: call __ZN9__gnu_cxx13new_allocatorISsE10deallocateEPSsm; __gnu_cxx::new_allocator::deallocate(std::string *,ulong) +000BCD18: leave +000BCD19: retn + +### FUNC 000BCD1A - 000BCD3F (37 bytes) name=_ZSt8_DestroyIPSsEvT_S1_ +000BCD1A: push rbp +000BCD1B: mov rbp, rsp +000BCD1E: sub rsp, 10h +000BCD22: mov [rbp+var_8], rdi +000BCD26: mov [rbp+var_10], rsi +000BCD2A: mov rdx, [rbp+var_10] +000BCD2E: mov rax, [rbp+var_8] +000BCD32: mov rsi, rdx +000BCD35: mov rdi, rax +000BCD38: call __ZNSt12_Destroy_auxILb0EE9__destroyIPSsEEvT_S3_; std::_Destroy_aux::__destroy(std::string *,std::string *) +000BCD3D: leave +000BCD3E: retn + +### FUNC 000BCD3F - 000BCD77 (56 bytes) name=_ZNSt16allocator_traitsISaISsEE9constructISsJSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000BCD3F: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISsEE9constructISsISsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_' +000BCD40: mov rbp, rsp +000BCD43: sub rsp, 20h +000BCD47: mov [rbp+var_8], rdi +000BCD4B: mov [rbp+var_10], rsi +000BCD4F: mov [rbp+var_18], rdx +000BCD53: mov rax, [rbp+var_18] +000BCD57: mov rdi, rax +000BCD5A: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BCD5F: mov rdx, rax +000BCD62: mov rcx, [rbp+var_10] +000BCD66: mov rax, [rbp+var_8] +000BCD6A: mov rsi, rcx +000BCD6D: mov rdi, rax +000BCD70: call __ZNSt16allocator_traitsISaISsEE12_S_constructISsJSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_; std::allocator_traits>::_S_construct(std::allocator&,std::string*,std::string&&) +000BCD75: leave +000BCD76: retn + +### FUNC 000BCD78 - 000BCF64 (492 bytes) name=_ZNSt6vectorISsSaISsEE19_M_emplace_back_auxIJSsEEEvDpOT_ +000BCD78: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(std::string &&)' +000BCD79: mov rbp, rsp +000BCD7C: push rbx +000BCD7D: sub rsp, 38h +000BCD81: mov [rbp+var_38], rdi +000BCD85: mov [rbp+var_40], rsi +000BCD89: mov rax, [rbp+var_38] +000BCD8D: lea rdx, aVectorMEmplace_1; "vector::_M_emplace_back_aux" +000BCD94: mov esi, 1 +000BCD99: mov rdi, rax +000BCD9C: call __ZNKSt6vectorISsSaISsEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000BCDA1: mov [rbp+var_20], rax +000BCDA5: mov rax, [rbp+var_38] +000BCDA9: mov rdx, [rbp+var_20] +000BCDAD: mov rsi, rdx +000BCDB0: mov rdi, rax +000BCDB3: call __ZNSt12_Vector_baseISsSaISsEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000BCDB8: mov [rbp+var_28], rax +000BCDBC: mov rax, [rbp+var_28] +000BCDC0: mov [rbp+var_18], rax +000BCDC4: mov rax, [rbp+var_40] +000BCDC8: mov rdi, rax +000BCDCB: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BCDD0: mov rbx, rax +000BCDD3: mov rax, [rbp+var_38] +000BCDD7: mov rdi, rax +000BCDDA: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BCDDF: lea rdx, ds:0[rax*8] +000BCDE7: mov rax, [rbp+var_28] +000BCDEB: lea rcx, [rdx+rax] +000BCDEF: mov rax, [rbp+var_38] +000BCDF3: mov rdx, rbx +000BCDF6: mov rsi, rcx +000BCDF9: mov rdi, rax +000BCDFC: call __ZNSt16allocator_traitsISaISsEE9constructISsJSsEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS3_ +000BCE01: mov [rbp+var_18], 0 +000BCE09: mov rax, [rbp+var_38] +000BCE0D: mov rdi, rax +000BCE10: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BCE15: mov rcx, rax +000BCE18: mov rax, [rbp+var_38] +000BCE1C: mov rsi, [rax+8] +000BCE20: mov rax, [rbp+var_38] +000BCE24: mov rax, [rax] +000BCE27: mov rdx, [rbp+var_28] +000BCE2B: mov rdi, rax +000BCE2E: call __ZSt34__uninitialized_move_if_noexcept_aIPSsS0_SaISsEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(std::string *,std::string *,std::string *,std::allocator &) +000BCE33: mov [rbp+var_18], rax +000BCE37: add [rbp+var_18], 8 +000BCE3C: mov rax, [rbp+var_38] +000BCE40: mov rdi, rax +000BCE43: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BCE48: mov rdx, rax +000BCE4B: mov rax, [rbp+var_38] +000BCE4F: mov rcx, [rax+8] +000BCE53: mov rax, [rbp+var_38] +000BCE57: mov rax, [rax] +000BCE5A: mov rsi, rcx +000BCE5D: mov rdi, rax +000BCE60: call __ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E; std::_Destroy(std::string *,std::string *,std::allocator &) +000BCE65: mov rax, [rbp+var_38] +000BCE69: mov rax, [rax+10h] +000BCE6D: mov rdx, rax +000BCE70: mov rax, [rbp+var_38] +000BCE74: mov rax, [rax] +000BCE77: sub rdx, rax +000BCE7A: mov rax, rdx +000BCE7D: sar rax, 3 +000BCE81: mov rdx, rax +000BCE84: mov rax, [rbp+var_38] +000BCE88: mov rcx, [rax] +000BCE8B: mov rax, [rbp+var_38] +000BCE8F: mov rsi, rcx +000BCE92: mov rdi, rax +000BCE95: call __ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm; std::_Vector_base>::_M_deallocate(std::string *,ulong) +000BCE9A: mov rax, [rbp+var_38] +000BCE9E: mov rdx, [rbp+var_28] +000BCEA2: mov [rax], rdx +000BCEA5: mov rax, [rbp+var_38] +000BCEA9: mov rdx, [rbp+var_18] +000BCEAD: mov [rax+8], rdx +000BCEB1: mov rax, [rbp+var_20] +000BCEB5: lea rdx, ds:0[rax*8] +000BCEBD: mov rax, [rbp+var_28] +000BCEC1: add rdx, rax +000BCEC4: mov rax, [rbp+var_38] +000BCEC8: mov [rax+10h], rdx +000BCECC: jmp loc_BCF5D +000BCED1: mov rdi, rax; void * +000BCED4: call ___cxa_begin_catch +000BCED9: cmp [rbp+var_18], 0 +000BCEDE: jnz short loc_BCF0C +000BCEE0: mov rax, [rbp+var_38] +000BCEE4: mov rdi, rax +000BCEE7: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BCEEC: lea rdx, ds:0[rax*8] +000BCEF4: mov rax, [rbp+var_28] +000BCEF8: add rdx, rax +000BCEFB: mov rax, [rbp+var_38] +000BCEFF: mov rsi, rdx +000BCF02: mov rdi, rax +000BCF05: call __ZNSt16allocator_traitsISaISsEE7destroyISsEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,std::string *) +000BCF0A: jmp short loc_BCF2E +000BCF0C: mov rax, [rbp+var_38] +000BCF10: mov rdi, rax +000BCF13: call __ZNSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BCF18: mov rdx, rax +000BCF1B: mov rcx, [rbp+var_18] +000BCF1F: mov rax, [rbp+var_28] +000BCF23: mov rsi, rcx +000BCF26: mov rdi, rax +000BCF29: call __ZSt8_DestroyIPSsSsEvT_S1_RSaIT0_E; std::_Destroy(std::string *,std::string *,std::allocator &) +000BCF2E: mov rax, [rbp+var_38] +000BCF32: mov rdx, [rbp+var_20] +000BCF36: mov rcx, [rbp+var_28] +000BCF3A: mov rsi, rcx +000BCF3D: mov rdi, rax +000BCF40: call __ZNSt12_Vector_baseISsSaISsEE13_M_deallocateEPSsm; std::_Vector_base>::_M_deallocate(std::string *,ulong) +000BCF45: call ___cxa_rethrow +000BCF4A: mov rbx, rax +000BCF4D: call ___cxa_end_catch +000BCF52: mov rax, rbx +000BCF55: mov rdi, rax; struct _Unwind_Exception * +000BCF58: call __Unwind_Resume +000BCF5D: add rsp, 38h +000BCF61: pop rbx +000BCF62: pop rbp +000BCF63: retn + +### FUNC 000BCF64 - 000BD02D (201 bytes) name=_ZNKSt6vectorISsSaISsEE12_M_check_lenEmPKc +000BCF64: push rbp +000BCF65: mov rbp, rsp +000BCF68: push rbx +000BCF69: sub rsp, 38h +000BCF6D: mov [rbp+var_28], rdi +000BCF71: mov [rbp+var_30], rsi +000BCF75: mov [rbp+var_38], rdx +000BCF79: mov rax, [rbp+var_28] +000BCF7D: mov rdi, rax +000BCF80: call __ZNKSt6vectorISsSaISsEE8max_sizeEv; std::vector>::max_size(void) +000BCF85: mov rbx, rax +000BCF88: mov rax, [rbp+var_28] +000BCF8C: mov rdi, rax +000BCF8F: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BCF94: sub rbx, rax +000BCF97: mov rdx, rbx +000BCF9A: mov rax, [rbp+var_30] +000BCF9E: cmp rdx, rax +000BCFA1: setb al +000BCFA4: test al, al +000BCFA6: jz short loc_BCFB4 +000BCFA8: mov rax, [rbp+var_38] +000BCFAC: mov rdi, rax; char * +000BCFAF: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000BCFB4: mov rax, [rbp+var_28] +000BCFB8: mov rdi, rax +000BCFBB: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BCFC0: mov rbx, rax +000BCFC3: mov rax, [rbp+var_28] +000BCFC7: mov rdi, rax +000BCFCA: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BCFCF: mov [rbp+var_20], rax +000BCFD3: lea rdx, [rbp+var_30] +000BCFD7: lea rax, [rbp+var_20] +000BCFDB: mov rsi, rdx +000BCFDE: mov rdi, rax +000BCFE1: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000BCFE6: mov rax, [rax] +000BCFE9: add rax, rbx +000BCFEC: mov [rbp+var_18], rax +000BCFF0: mov rax, [rbp+var_28] +000BCFF4: mov rdi, rax +000BCFF7: call __ZNKSt6vectorISsSaISsEE4sizeEv; std::vector>::size(void) +000BCFFC: cmp rax, [rbp+var_18] +000BD000: ja short loc_BD014 +000BD002: mov rax, [rbp+var_28] +000BD006: mov rdi, rax +000BD009: call __ZNKSt6vectorISsSaISsEE8max_sizeEv; std::vector>::max_size(void) +000BD00E: cmp rax, [rbp+var_18] +000BD012: jnb short loc_BD022 +000BD014: mov rax, [rbp+var_28] +000BD018: mov rdi, rax +000BD01B: call __ZNKSt6vectorISsSaISsEE8max_sizeEv; std::vector>::max_size(void) +000BD020: jmp short loc_BD026 +000BD022: mov rax, [rbp+var_18] +000BD026: add rsp, 38h +000BD02A: pop rbx +000BD02B: pop rbp +000BD02C: retn + +### FUNC 000BD02E - 000BD066 (56 bytes) name=_ZNSt12_Vector_baseISsSaISsEE11_M_allocateEm +000BD02E: push rbp +000BD02F: mov rbp, rsp +000BD032: sub rsp, 10h +000BD036: mov [rbp+var_8], rdi +000BD03A: mov [rbp+var_10], rsi +000BD03E: cmp [rbp+var_10], 0 +000BD043: jz short loc_BD05F +000BD045: mov rax, [rbp+var_8] +000BD049: mov rcx, [rbp+var_10] +000BD04D: mov edx, 0 +000BD052: mov rsi, rcx +000BD055: mov rdi, rax +000BD058: call __ZN9__gnu_cxx13new_allocatorISsE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000BD05D: jmp short locret_BD064 +000BD05F: mov eax, 0 +000BD064: leave +000BD065: retn + +### FUNC 000BD066 - 000BD0B4 (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPSsS0_SaISsEET0_T_S3_S2_RT1_ +000BD066: push rbp +000BD067: mov rbp, rsp +000BD06A: push rbx +000BD06B: sub rsp, 28h +000BD06F: mov [rbp+var_18], rdi +000BD073: mov [rbp+var_20], rsi +000BD077: mov [rbp+var_28], rdx +000BD07B: mov [rbp+var_30], rcx +000BD07F: mov rax, [rbp+var_20] +000BD083: mov rdi, rax +000BD086: call __ZSt32__make_move_if_noexcept_iteratorIPSsSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(std::string *) +000BD08B: mov rbx, rax +000BD08E: mov rax, [rbp+var_18] +000BD092: mov rdi, rax +000BD095: call __ZSt32__make_move_if_noexcept_iteratorIPSsSt13move_iteratorIS0_EET0_T_; std::__make_move_if_noexcept_iterator>(std::string *) +000BD09A: mov rcx, [rbp+var_30] +000BD09E: mov rdx, [rbp+var_28] +000BD0A2: mov rsi, rbx +000BD0A5: mov rdi, rax +000BD0A8: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPSsES1_SsET0_T_S4_S3_RSaIT1_E; std::__uninitialized_copy_a,std::string *,std::string>(std::move_iterator,std::move_iterator,std::string *,std::allocator &) +000BD0AD: add rsp, 28h +000BD0B1: pop rbx +000BD0B2: pop rbp +000BD0B3: retn + +### FUNC 000BD0B4 - 000BD0F1 (61 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE12_Vector_implC2Ev +000BD0B4: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(void)' +000BD0B5: mov rbp, rsp +000BD0B8: sub rsp, 10h +000BD0BC: mov [rbp+var_8], rdi +000BD0C0: mov rax, [rbp+var_8] +000BD0C4: mov rdi, rax +000BD0C7: call __ZNSaIN6serial8PortInfoEEC2Ev; std::allocator::allocator(void) +000BD0CC: mov rax, [rbp+var_8] +000BD0D0: mov qword ptr [rax], 0 +000BD0D7: mov rax, [rbp+var_8] +000BD0DB: mov qword ptr [rax+8], 0 +000BD0E3: mov rax, [rbp+var_8] +000BD0E7: mov qword ptr [rax+10h], 0 +000BD0EF: leave +000BD0F0: retn + +### FUNC 000BD0F1 - 000BD129 (56 bytes) name=_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE12_S_constructIS1_JRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_ +000BD0F1: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE12_S_constructIS1_IRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_' +000BD0F2: mov rbp, rsp +000BD0F5: sub rsp, 20h +000BD0F9: mov [rbp+var_8], rdi +000BD0FD: mov [rbp+var_10], rsi +000BD101: mov [rbp+var_18], rdx +000BD105: mov rax, [rbp+var_18] +000BD109: mov rdi, rax +000BD10C: call __ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward(std::remove_reference::type &) +000BD111: mov rdx, rax +000BD114: mov rcx, [rbp+var_10] +000BD118: mov rax, [rbp+var_8] +000BD11C: mov rsi, rcx +000BD11F: mov rdi, rax +000BD122: call __ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE9constructIS2_JRKS2_EEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(serial::PortInfo *,serial::PortInfo const&) +000BD127: leave +000BD128: retn + +### FUNC 000BD12A - 000BD1F3 (201 bytes) name=_ZNKSt6vectorIN6serial8PortInfoESaIS1_EE12_M_check_lenEmPKc +000BD12A: push rbp +000BD12B: mov rbp, rsp +000BD12E: push rbx +000BD12F: sub rsp, 38h +000BD133: mov [rbp+var_28], rdi +000BD137: mov [rbp+var_30], rsi +000BD13B: mov [rbp+var_38], rdx +000BD13F: mov rax, [rbp+var_28] +000BD143: mov rdi, rax +000BD146: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv; std::vector>::max_size(void) +000BD14B: mov rbx, rax +000BD14E: mov rax, [rbp+var_28] +000BD152: mov rdi, rax +000BD155: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv; std::vector>::size(void) +000BD15A: sub rbx, rax +000BD15D: mov rdx, rbx +000BD160: mov rax, [rbp+var_30] +000BD164: cmp rdx, rax +000BD167: setb al +000BD16A: test al, al +000BD16C: jz short loc_BD17A +000BD16E: mov rax, [rbp+var_38] +000BD172: mov rdi, rax; char * +000BD175: call __ZSt20__throw_length_errorPKc; std::__throw_length_error(char const*) +000BD17A: mov rax, [rbp+var_28] +000BD17E: mov rdi, rax +000BD181: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv; std::vector>::size(void) +000BD186: mov rbx, rax +000BD189: mov rax, [rbp+var_28] +000BD18D: mov rdi, rax +000BD190: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv; std::vector>::size(void) +000BD195: mov [rbp+var_20], rax +000BD199: lea rdx, [rbp+var_30] +000BD19D: lea rax, [rbp+var_20] +000BD1A1: mov rsi, rdx +000BD1A4: mov rdi, rax +000BD1A7: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000BD1AC: mov rax, [rax] +000BD1AF: add rax, rbx +000BD1B2: mov [rbp+var_18], rax +000BD1B6: mov rax, [rbp+var_28] +000BD1BA: mov rdi, rax +000BD1BD: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv; std::vector>::size(void) +000BD1C2: cmp rax, [rbp+var_18] +000BD1C6: ja short loc_BD1DA +000BD1C8: mov rax, [rbp+var_28] +000BD1CC: mov rdi, rax +000BD1CF: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv; std::vector>::max_size(void) +000BD1D4: cmp rax, [rbp+var_18] +000BD1D8: jnb short loc_BD1E8 +000BD1DA: mov rax, [rbp+var_28] +000BD1DE: mov rdi, rax +000BD1E1: call __ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv; std::vector>::max_size(void) +000BD1E6: jmp short loc_BD1EC +000BD1E8: mov rax, [rbp+var_18] +000BD1EC: add rsp, 38h +000BD1F0: pop rbx +000BD1F1: pop rbp +000BD1F2: retn + +### FUNC 000BD1F4 - 000BD22C (56 bytes) name=_ZNSt12_Vector_baseIN6serial8PortInfoESaIS1_EE11_M_allocateEm +000BD1F4: push rbp +000BD1F5: mov rbp, rsp +000BD1F8: sub rsp, 10h +000BD1FC: mov [rbp+var_8], rdi +000BD200: mov [rbp+var_10], rsi +000BD204: cmp [rbp+var_10], 0 +000BD209: jz short loc_BD225 +000BD20B: mov rax, [rbp+var_8] +000BD20F: mov rcx, [rbp+var_10] +000BD213: mov edx, 0 +000BD218: mov rsi, rcx +000BD21B: mov rdi, rax +000BD21E: call __ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000BD223: jmp short locret_BD22A +000BD225: mov eax, 0 +000BD22A: leave +000BD22B: retn + +### FUNC 000BD22C - 000BD263 (55 bytes) name=_ZNKSt6vectorIN6serial8PortInfoESaIS1_EE4sizeEv +000BD22C: push rbp +000BD22D: mov rbp, rsp +000BD230: mov [rbp+var_8], rdi +000BD234: mov rax, [rbp+var_8] +000BD238: mov rax, [rax+8] +000BD23C: mov rdx, rax +000BD23F: mov rax, [rbp+var_8] +000BD243: mov rax, [rax] +000BD246: sub rdx, rax +000BD249: mov rax, rdx +000BD24C: sar rax, 3 +000BD250: mov rdx, rax +000BD253: mov rax, 0AAAAAAAAAAAAAAABh +000BD25D: imul rax, rdx +000BD261: pop rbp +000BD262: retn + +### FUNC 000BD263 - 000BD2B1 (78 bytes) name=_ZSt34__uninitialized_move_if_noexcept_aIPN6serial8PortInfoES2_SaIS1_EET0_T_S5_S4_RT1_ +000BD263: push rbp +000BD264: mov rbp, rsp +000BD267: push rbx +000BD268: sub rsp, 28h +000BD26C: mov [rbp+var_18], rdi +000BD270: mov [rbp+var_20], rsi +000BD274: mov [rbp+var_28], rdx +000BD278: mov [rbp+var_30], rcx +000BD27C: mov rax, [rbp+var_20] +000BD280: mov rdi, rax +000BD283: call __ZSt32__make_move_if_noexcept_iteratorIPN6serial8PortInfoESt13move_iteratorIS2_EET0_T_; std::__make_move_if_noexcept_iterator>(serial::PortInfo *) +000BD288: mov rbx, rax +000BD28B: mov rax, [rbp+var_18] +000BD28F: mov rdi, rax +000BD292: call __ZSt32__make_move_if_noexcept_iteratorIPN6serial8PortInfoESt13move_iteratorIS2_EET0_T_; std::__make_move_if_noexcept_iterator>(serial::PortInfo *) +000BD297: mov rcx, [rbp+var_30] +000BD29B: mov rdx, [rbp+var_28] +000BD29F: mov rsi, rbx +000BD2A2: mov rdi, rax +000BD2A5: call __ZSt22__uninitialized_copy_aISt13move_iteratorIPN6serial8PortInfoEES3_S2_ET0_T_S6_S5_RSaIT1_E; std::__uninitialized_copy_a,serial::PortInfo *,serial::PortInfo>(std::move_iterator,std::move_iterator,serial::PortInfo *,std::allocator &) +000BD2AA: add rsp, 28h +000BD2AE: pop rbx +000BD2AF: pop rbp +000BD2B0: retn + +### FUNC 000BD2B1 - 000BD2D6 (37 bytes) name=_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE7destroyIS1_EEvRS2_PT_ +000BD2B1: push rbp +000BD2B2: mov rbp, rsp +000BD2B5: sub rsp, 10h +000BD2B9: mov [rbp+var_8], rdi +000BD2BD: mov [rbp+var_10], rsi +000BD2C1: mov rdx, [rbp+var_10] +000BD2C5: mov rax, [rbp+var_8] +000BD2C9: mov rsi, rdx +000BD2CC: mov rdi, rax +000BD2CF: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_; std::allocator_traits>::_S_destroy(std::allocator&,serial::PortInfo*) +000BD2D4: leave +000BD2D5: retn + +### FUNC 000BD2D6 - 000BD30D (55 bytes) name=_ZNSt12_Destroy_auxILb0EE9__destroyIPSsEEvT_S3_ +000BD2D6: push rbp +000BD2D7: mov rbp, rsp +000BD2DA: sub rsp, 10h +000BD2DE: mov [rbp+var_8], rdi +000BD2E2: mov [rbp+var_10], rsi +000BD2E6: jmp short loc_BD301 +000BD2E8: mov rax, [rbp+var_8] +000BD2EC: mov rdi, rax +000BD2EF: call __ZSt11__addressofISsEPT_RS0_; std::__addressof(std::string&) +000BD2F4: mov rdi, rax +000BD2F7: call __ZSt8_DestroyISsEvPT_; std::_Destroy(std::string *) +000BD2FC: add [rbp+var_8], 8 +000BD301: mov rax, [rbp+var_8] +000BD305: cmp rax, [rbp+var_10] +000BD309: jnz short loc_BD2E8 +000BD30B: leave +000BD30C: retn + +### FUNC 000BD30D - 000BD345 (56 bytes) name=_ZNSt16allocator_traitsISaISsEE12_S_constructISsJSsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_ +000BD30D: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISsEE12_S_constructISsISsEEENSt9enable_ifIXsrNS1_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS0_PS5_DpOS6_' +000BD30E: mov rbp, rsp +000BD311: sub rsp, 20h +000BD315: mov [rbp+var_8], rdi +000BD319: mov [rbp+var_10], rsi +000BD31D: mov [rbp+var_18], rdx +000BD321: mov rax, [rbp+var_18] +000BD325: mov rdi, rax +000BD328: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BD32D: mov rdx, rax +000BD330: mov rcx, [rbp+var_10] +000BD334: mov rax, [rbp+var_8] +000BD338: mov rsi, rcx +000BD33B: mov rdi, rax +000BD33E: call __ZN9__gnu_cxx13new_allocatorISsE9constructISsJSsEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(std::string *,std::string &&) +000BD343: leave +000BD344: retn + +### FUNC 000BD346 - 000BD368 (34 bytes) name=_ZNKSt6vectorISsSaISsEE8max_sizeEv +000BD346: push rbp +000BD347: mov rbp, rsp +000BD34A: sub rsp, 10h +000BD34E: mov [rbp+var_8], rdi +000BD352: mov rax, [rbp+var_8] +000BD356: mov rdi, rax +000BD359: call __ZNKSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BD35E: mov rdi, rax +000BD361: call __ZNSt16allocator_traitsISaISsEE8max_sizeERKS0_; std::allocator_traits>::max_size(std::allocator const&) +000BD366: leave +000BD367: retn + +### FUNC 000BD368 - 000BD38D (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPSsSt13move_iteratorIS0_EET0_T_ +000BD368: push rbp +000BD369: mov rbp, rsp +000BD36C: sub rsp, 20h +000BD370: mov [rbp+var_18], rdi +000BD374: mov rdx, [rbp+var_18] +000BD378: lea rax, [rbp+var_10] +000BD37C: mov rsi, rdx +000BD37F: mov rdi, rax +000BD382: call __ZNSt13move_iteratorIPSsEC2ES0_; std::move_iterator::move_iterator(std::string *) +000BD387: mov rax, [rbp+var_10] +000BD38B: leave +000BD38C: retn + +### FUNC 000BD38D - 000BD3BE (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPSsES1_SsET0_T_S4_S3_RSaIT1_E +000BD38D: push rbp +000BD38E: mov rbp, rsp +000BD391: sub rsp, 20h +000BD395: mov [rbp+var_10], rdi +000BD399: mov [rbp+var_20], rsi +000BD39D: mov [rbp+var_18], rdx +000BD3A1: mov [rbp+var_8], rcx +000BD3A5: mov rdx, [rbp+var_18] +000BD3A9: mov rcx, [rbp+var_20] +000BD3AD: mov rax, [rbp+var_10] +000BD3B1: mov rsi, rcx +000BD3B4: mov rdi, rax +000BD3B7: call __ZSt18uninitialized_copyISt13move_iteratorIPSsES1_ET0_T_S4_S3_; std::uninitialized_copy,std::string *>(std::move_iterator,std::move_iterator,std::string *) +000BD3BC: leave +000BD3BD: retn + +### FUNC 000BD3BE - 000BD3D8 (26 bytes) name=_ZNSaIN6serial8PortInfoEEC2Ev +000BD3BE: push rbp; Alternative name is 'std::allocator::allocator(void)' +000BD3BF: mov rbp, rsp +000BD3C2: sub rsp, 10h +000BD3C6: mov [rbp+var_8], rdi +000BD3CA: mov rax, [rbp+var_8] +000BD3CE: mov rdi, rax +000BD3D1: call __ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000BD3D6: leave +000BD3D7: retn + +### FUNC 000BD3D8 - 000BD44C (116 bytes) name=_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE9constructIS2_JRKS2_EEEvPT_DpOT0_ +000BD3D8: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE9constructIS2_IRKS2_EEEvPT_DpOT0_' +000BD3D9: mov rbp, rsp +000BD3DC: push r13 +000BD3DE: push r12 +000BD3E0: push rbx +000BD3E1: sub rsp, 28h +000BD3E5: mov [rbp+var_28], rdi +000BD3E9: mov [rbp+var_30], rsi +000BD3ED: mov [rbp+var_38], rdx +000BD3F1: mov rax, [rbp+var_38] +000BD3F5: mov rdi, rax +000BD3F8: call __ZSt7forwardIRKN6serial8PortInfoEEOT_RNSt16remove_referenceIS4_E4typeE; std::forward(std::remove_reference::type &) +000BD3FD: mov r13, rax +000BD400: mov r12, [rbp+var_30] +000BD404: mov rsi, r12; void * +000BD407: mov edi, 18h; unsigned __int64 +000BD40C: call __ZnwmPv; operator new(ulong,void *) +000BD411: mov rbx, rax +000BD414: test rbx, rbx +000BD417: jz short loc_BD426 +000BD419: mov rsi, r13; serial::PortInfo * +000BD41C: mov rdi, rbx; this +000BD41F: call __ZN6serial8PortInfoC2ERKS0_; serial::PortInfo::PortInfo(serial::PortInfo const&) +000BD424: jmp short loc_BD441 +000BD426: jmp short loc_BD441 +000BD428: mov r13, rax +000BD42B: mov rsi, r12; void * +000BD42E: mov rdi, rbx; void * +000BD431: call __ZdlPvS_; operator delete(void *,void *) +000BD436: mov rax, r13 +000BD439: mov rdi, rax; struct _Unwind_Exception * +000BD43C: call __Unwind_Resume +000BD441: add rsp, 28h +000BD445: pop rbx +000BD446: pop r12 +000BD448: pop r13 +000BD44A: pop rbp +000BD44B: retn + +### FUNC 000BD44C - 000BD46E (34 bytes) name=_ZNKSt6vectorIN6serial8PortInfoESaIS1_EE8max_sizeEv +000BD44C: push rbp +000BD44D: mov rbp, rsp +000BD450: sub rsp, 10h +000BD454: mov [rbp+var_8], rdi +000BD458: mov rax, [rbp+var_8] +000BD45C: mov rdi, rax +000BD45F: call __ZNKSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000BD464: mov rdi, rax +000BD467: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE8max_sizeERKS2_; std::allocator_traits>::max_size(std::allocator const&) +000BD46C: leave +000BD46D: retn + +### FUNC 000BD46E - 000BD4B9 (75 bytes) name=_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8allocateEmPKv +000BD46E: push rbp +000BD46F: mov rbp, rsp +000BD472: sub rsp, 20h +000BD476: mov [rbp+var_8], rdi +000BD47A: mov [rbp+var_10], rsi +000BD47E: mov [rbp+var_18], rdx +000BD482: mov rax, [rbp+var_8] +000BD486: mov rdi, rax +000BD489: call __ZNK9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000BD48E: cmp rax, [rbp+var_10] +000BD492: setb al +000BD495: test al, al +000BD497: jz short loc_BD49E +000BD499: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000BD49E: mov rdx, [rbp+var_10] +000BD4A2: mov rax, rdx +000BD4A5: add rax, rax +000BD4A8: add rax, rdx +000BD4AB: shl rax, 3 +000BD4AF: mov rdi, rax; unsigned __int64 +000BD4B2: call __Znwm; operator new(ulong) +000BD4B7: leave +000BD4B8: retn + +### FUNC 000BD4B9 - 000BD4DE (37 bytes) name=_ZSt32__make_move_if_noexcept_iteratorIPN6serial8PortInfoESt13move_iteratorIS2_EET0_T_ +000BD4B9: push rbp +000BD4BA: mov rbp, rsp +000BD4BD: sub rsp, 20h +000BD4C1: mov [rbp+var_18], rdi +000BD4C5: mov rdx, [rbp+var_18] +000BD4C9: lea rax, [rbp+var_10] +000BD4CD: mov rsi, rdx +000BD4D0: mov rdi, rax +000BD4D3: call __ZNSt13move_iteratorIPN6serial8PortInfoEEC2ES2_; std::move_iterator::move_iterator(serial::PortInfo *) +000BD4D8: mov rax, [rbp+var_10] +000BD4DC: leave +000BD4DD: retn + +### FUNC 000BD4DE - 000BD50F (49 bytes) name=_ZSt22__uninitialized_copy_aISt13move_iteratorIPN6serial8PortInfoEES3_S2_ET0_T_S6_S5_RSaIT1_E +000BD4DE: push rbp +000BD4DF: mov rbp, rsp +000BD4E2: sub rsp, 20h +000BD4E6: mov [rbp+var_10], rdi +000BD4EA: mov [rbp+var_20], rsi +000BD4EE: mov [rbp+var_18], rdx +000BD4F2: mov [rbp+var_8], rcx +000BD4F6: mov rdx, [rbp+var_18] +000BD4FA: mov rcx, [rbp+var_20] +000BD4FE: mov rax, [rbp+var_10] +000BD502: mov rsi, rcx +000BD505: mov rdi, rax +000BD508: call __ZSt18uninitialized_copyISt13move_iteratorIPN6serial8PortInfoEES3_ET0_T_S6_S5_; std::uninitialized_copy,serial::PortInfo *>(std::move_iterator,std::move_iterator,serial::PortInfo *) +000BD50D: leave +000BD50E: retn + +### FUNC 000BD50F - 000BD534 (37 bytes) name=_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE10_S_destroyIS1_EENSt9enable_ifIXsrNS3_16__destroy_helperIT_EE5valueEvE4typeERS2_PS7_ +000BD50F: push rbp +000BD510: mov rbp, rsp +000BD513: sub rsp, 10h +000BD517: mov [rbp+var_8], rdi +000BD51B: mov [rbp+var_10], rsi +000BD51F: mov rdx, [rbp+var_10] +000BD523: mov rax, [rbp+var_8] +000BD527: mov rsi, rdx +000BD52A: mov rdi, rax +000BD52D: call __ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE7destroyIS2_EEvPT_; __gnu_cxx::new_allocator::destroy(serial::PortInfo *) +000BD532: leave +000BD533: retn + +### FUNC 000BD534 - 000BD542 (14 bytes) name=_ZSt11__addressofISsEPT_RS0_ +000BD534: push rbp +000BD535: mov rbp, rsp +000BD538: mov [rbp+var_8], rdi +000BD53C: mov rax, [rbp+var_8] +000BD540: pop rbp +000BD541: retn + +### FUNC 000BD542 - 000BD55C (26 bytes) name=_ZSt8_DestroyISsEvPT_ +000BD542: push rbp +000BD543: mov rbp, rsp +000BD546: sub rsp, 10h +000BD54A: mov [rbp+var_8], rdi +000BD54E: mov rax, [rbp+var_8] +000BD552: mov rdi, rax; this +000BD555: call __ZNSsD1Ev; std::string::~string() +000BD55A: leave +000BD55B: retn + +### FUNC 000BD55C - 000BD5A8 (76 bytes) name=_ZN9__gnu_cxx13new_allocatorISsE9constructISsJSsEEEvPT_DpOT0_ +000BD55C: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISsE9constructISsISsEEEvPT_DpOT0_' +000BD55D: mov rbp, rsp +000BD560: push rbx +000BD561: sub rsp, 28h +000BD565: mov [rbp+var_18], rdi +000BD569: mov [rbp+var_20], rsi +000BD56D: mov [rbp+var_28], rdx +000BD571: mov rax, [rbp+var_28] +000BD575: mov rdi, rax +000BD578: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BD57D: mov rbx, rax +000BD580: mov rax, [rbp+var_20] +000BD584: mov rsi, rax; void * +000BD587: mov edi, 8; unsigned __int64 +000BD58C: call __ZnwmPv; operator new(ulong,void *) +000BD591: test rax, rax +000BD594: jz short loc_BD5A1 +000BD596: mov rsi, rbx +000BD599: mov rdi, rax +000BD59C: call __ZNSsC1EOSs; std::string::string(std::string &&) +000BD5A1: add rsp, 28h +000BD5A5: pop rbx +000BD5A6: pop rbp +000BD5A7: retn + +### FUNC 000BD5A8 - 000BD5C2 (26 bytes) name=_ZNSt16allocator_traitsISaISsEE8max_sizeERKS0_ +000BD5A8: push rbp +000BD5A9: mov rbp, rsp +000BD5AC: sub rsp, 10h +000BD5B0: mov [rbp+var_8], rdi +000BD5B4: mov rax, [rbp+var_8] +000BD5B8: mov rdi, rax +000BD5BB: call __ZNSt16allocator_traitsISaISsEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_; std::allocator_traits>::_S_max_size const>(std::allocator const&) +000BD5C0: leave +000BD5C1: retn + +### FUNC 000BD5C2 - 000BD5D0 (14 bytes) name=_ZNKSt12_Vector_baseISsSaISsEE19_M_get_Tp_allocatorEv +000BD5C2: push rbp +000BD5C3: mov rbp, rsp +000BD5C6: mov [rbp+var_8], rdi +000BD5CA: mov rax, [rbp+var_8] +000BD5CE: pop rbp +000BD5CF: retn + +### FUNC 000BD5D0 - 000BD5E9 (25 bytes) name=_ZNSt13move_iteratorIPSsEC2ES0_ +000BD5D0: push rbp; Alternative name is 'std::move_iterator::move_iterator(std::string *)' +000BD5D1: mov rbp, rsp +000BD5D4: mov [rbp+var_8], rdi +000BD5D8: mov [rbp+var_10], rsi +000BD5DC: mov rax, [rbp+var_8] +000BD5E0: mov rdx, [rbp+var_10] +000BD5E4: mov [rax], rdx +000BD5E7: pop rbp +000BD5E8: retn + +### FUNC 000BD5E9 - 000BD616 (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPSsES1_ET0_T_S4_S3_ +000BD5E9: push rbp +000BD5EA: mov rbp, rsp +000BD5ED: sub rsp, 20h +000BD5F1: mov [rbp+var_10], rdi +000BD5F5: mov [rbp+var_20], rsi +000BD5F9: mov [rbp+var_18], rdx +000BD5FD: mov rdx, [rbp+var_18] +000BD601: mov rcx, [rbp+var_20] +000BD605: mov rax, [rbp+var_10] +000BD609: mov rsi, rcx +000BD60C: mov rdi, rax +000BD60F: call __ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPSsES3_EET0_T_S6_S5_; std::__uninitialized_copy::__uninit_copy,std::string *>(std::move_iterator,std::move_iterator,std::string *) +000BD614: leave +000BD615: retn + +### FUNC 000BD616 - 000BD620 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEEC2Ev +000BD616: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000BD617: mov rbp, rsp +000BD61A: mov [rbp+var_8], rdi +000BD61E: pop rbp +000BD61F: retn + +### FUNC 000BD620 - 000BD63A (26 bytes) name=_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE8max_sizeERKS2_ +000BD620: push rbp +000BD621: mov rbp, rsp +000BD624: sub rsp, 10h +000BD628: mov [rbp+var_8], rdi +000BD62C: mov rax, [rbp+var_8] +000BD630: mov rdi, rax +000BD633: call __ZNSt16allocator_traitsISaIN6serial8PortInfoEEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_; std::allocator_traits>::_S_max_size const>(std::allocator const&) +000BD638: leave +000BD639: retn + +### FUNC 000BD63A - 000BD648 (14 bytes) name=_ZNKSt12_Vector_baseIN6serial8PortInfoESaIS1_EE19_M_get_Tp_allocatorEv +000BD63A: push rbp +000BD63B: mov rbp, rsp +000BD63E: mov [rbp+var_8], rdi +000BD642: mov rax, [rbp+var_8] +000BD646: pop rbp +000BD647: retn + +### FUNC 000BD648 - 000BD65C (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8max_sizeEv +000BD648: push rbp +000BD649: mov rbp, rsp +000BD64C: mov [rbp+var_8], rdi +000BD650: mov rax, 0AAAAAAAAAAAAAAAh +000BD65A: pop rbp +000BD65B: retn + +### FUNC 000BD65C - 000BD675 (25 bytes) name=_ZNSt13move_iteratorIPN6serial8PortInfoEEC2ES2_ +000BD65C: push rbp; Alternative name is 'std::move_iterator::move_iterator(serial::PortInfo *)' +000BD65D: mov rbp, rsp +000BD660: mov [rbp+var_8], rdi +000BD664: mov [rbp+var_10], rsi +000BD668: mov rax, [rbp+var_8] +000BD66C: mov rdx, [rbp+var_10] +000BD670: mov [rax], rdx +000BD673: pop rbp +000BD674: retn + +### FUNC 000BD675 - 000BD6A2 (45 bytes) name=_ZSt18uninitialized_copyISt13move_iteratorIPN6serial8PortInfoEES3_ET0_T_S6_S5_ +000BD675: push rbp +000BD676: mov rbp, rsp +000BD679: sub rsp, 20h +000BD67D: mov [rbp+var_10], rdi +000BD681: mov [rbp+var_20], rsi +000BD685: mov [rbp+var_18], rdx +000BD689: mov rdx, [rbp+var_18] +000BD68D: mov rcx, [rbp+var_20] +000BD691: mov rax, [rbp+var_10] +000BD695: mov rsi, rcx +000BD698: mov rdi, rax +000BD69B: call __ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN6serial8PortInfoEES5_EET0_T_S8_S7_; std::__uninitialized_copy::__uninit_copy,serial::PortInfo *>(std::move_iterator,std::move_iterator,serial::PortInfo *) +000BD6A0: leave +000BD6A1: retn + +### FUNC 000BD6A2 - 000BD6C0 (30 bytes) name=_ZN9__gnu_cxx13new_allocatorIN6serial8PortInfoEE7destroyIS2_EEvPT_ +000BD6A2: push rbp +000BD6A3: mov rbp, rsp +000BD6A6: sub rsp, 10h +000BD6AA: mov [rbp+var_8], rdi +000BD6AE: mov [rbp+var_10], rsi +000BD6B2: mov rax, [rbp+var_10] +000BD6B6: mov rdi, rax; this +000BD6B9: call __ZN6serial8PortInfoD2Ev; serial::PortInfo::~PortInfo() +000BD6BE: leave +000BD6BF: retn + +### FUNC 000BD6C0 - 000BD6DA (26 bytes) name=_ZNSt16allocator_traitsISaISsEE11_S_max_sizeIKS0_EENSt9enable_ifIXsrNS1_16__maxsize_helperIT_EE5valueEmE4typeERS6_ +000BD6C0: push rbp +000BD6C1: mov rbp, rsp +000BD6C4: sub rsp, 10h +000BD6C8: mov [rbp+var_8], rdi +000BD6CC: mov rax, [rbp+var_8] +000BD6D0: mov rdi, rax +000BD6D3: call __ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000BD6D8: leave +000BD6D9: retn + +### FUNC 000BD6DA - 000BD787 (173 bytes) name=_ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPSsES3_EET0_T_S6_S5_ +000BD6DA: push rbp +000BD6DB: mov rbp, rsp +000BD6DE: push rbx +000BD6DF: sub rsp, 38h +000BD6E3: mov [rbp+var_30], rdi +000BD6E7: mov [rbp+var_40], rsi +000BD6EB: mov [rbp+var_38], rdx +000BD6EF: mov rax, [rbp+var_38] +000BD6F3: mov [rbp+var_18], rax +000BD6F7: jmp short loc_BD730 +000BD6F9: lea rax, [rbp+var_30] +000BD6FD: mov rdi, rax +000BD700: call __ZNKSt13move_iteratorIPSsEdeEv; std::move_iterator::operator*(void) +000BD705: mov rbx, rax +000BD708: mov rax, [rbp+var_18] +000BD70C: mov rdi, rax +000BD70F: call __ZSt11__addressofISsEPT_RS0_; std::__addressof(std::string&) +000BD714: mov rsi, rbx +000BD717: mov rdi, rax +000BD71A: call __ZSt10_ConstructISsJSsEEvPT_DpOT0_; std::_Construct(std::string *,std::string &&) +000BD71F: lea rax, [rbp+var_30] +000BD723: mov rdi, rax +000BD726: call __ZNSt13move_iteratorIPSsEppEv; std::move_iterator::operator++(void) +000BD72B: add [rbp+var_18], 8 +000BD730: lea rdx, [rbp+var_40] +000BD734: lea rax, [rbp+var_30] +000BD738: mov rsi, rdx +000BD73B: mov rdi, rax +000BD73E: call __ZStneIPSsEbRKSt13move_iteratorIT_ES5_; std::operator!=(std::move_iterator const&,std::move_iterator const&) +000BD743: test al, al +000BD745: jnz short loc_BD6F9 +000BD747: mov rax, [rbp+var_18] +000BD74B: jmp short loc_BD780 +000BD74D: mov rdi, rax; void * +000BD750: call ___cxa_begin_catch +000BD755: mov rdx, [rbp+var_18] +000BD759: mov rax, [rbp+var_38] +000BD75D: mov rsi, rdx +000BD760: mov rdi, rax +000BD763: call __ZSt8_DestroyIPSsEvT_S1_; std::_Destroy(std::string *,std::string *) +000BD768: call ___cxa_rethrow +000BD76D: mov rbx, rax +000BD770: call ___cxa_end_catch +000BD775: mov rax, rbx +000BD778: mov rdi, rax; struct _Unwind_Exception * +000BD77B: call __Unwind_Resume +000BD780: add rsp, 38h +000BD784: pop rbx +000BD785: pop rbp +000BD786: retn + +### FUNC 000BD787 - 000BD7A1 (26 bytes) name=_ZNSt16allocator_traitsISaIN6serial8PortInfoEEE11_S_max_sizeIKS2_EENSt9enable_ifIXsrNS3_16__maxsize_helperIT_EE5valueEmE4typeERS8_ +000BD787: push rbp +000BD788: mov rbp, rsp +000BD78B: sub rsp, 10h +000BD78F: mov [rbp+var_8], rdi +000BD793: mov rax, [rbp+var_8] +000BD797: mov rdi, rax +000BD79A: call __ZNK9__gnu_cxx13new_allocatorIN6serial8PortInfoEE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000BD79F: leave +000BD7A0: retn + +### FUNC 000BD7A1 - 000BD84E (173 bytes) name=_ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt13move_iteratorIPN6serial8PortInfoEES5_EET0_T_S8_S7_ +000BD7A1: push rbp +000BD7A2: mov rbp, rsp +000BD7A5: push rbx +000BD7A6: sub rsp, 38h +000BD7AA: mov [rbp+var_30], rdi +000BD7AE: mov [rbp+var_40], rsi +000BD7B2: mov [rbp+var_38], rdx +000BD7B6: mov rax, [rbp+var_38] +000BD7BA: mov [rbp+var_18], rax +000BD7BE: jmp short loc_BD7F7 +000BD7C0: lea rax, [rbp+var_30] +000BD7C4: mov rdi, rax +000BD7C7: call __ZNKSt13move_iteratorIPN6serial8PortInfoEEdeEv; std::move_iterator::operator*(void) +000BD7CC: mov rbx, rax +000BD7CF: mov rax, [rbp+var_18] +000BD7D3: mov rdi, rax +000BD7D6: call __ZSt11__addressofIN6serial8PortInfoEEPT_RS2_; std::__addressof(serial::PortInfo&) +000BD7DB: mov rsi, rbx +000BD7DE: mov rdi, rax +000BD7E1: call __ZSt10_ConstructIN6serial8PortInfoEJS1_EEvPT_DpOT0_; std::_Construct(serial::PortInfo *,serial::PortInfo &&) +000BD7E6: lea rax, [rbp+var_30] +000BD7EA: mov rdi, rax +000BD7ED: call __ZNSt13move_iteratorIPN6serial8PortInfoEEppEv; std::move_iterator::operator++(void) +000BD7F2: add [rbp+var_18], 18h +000BD7F7: lea rdx, [rbp+var_40] +000BD7FB: lea rax, [rbp+var_30] +000BD7FF: mov rsi, rdx +000BD802: mov rdi, rax +000BD805: call __ZStneIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_; std::operator!=(std::move_iterator const&,std::move_iterator const&) +000BD80A: test al, al +000BD80C: jnz short loc_BD7C0 +000BD80E: mov rax, [rbp+var_18] +000BD812: jmp short loc_BD847 +000BD814: mov rdi, rax; void * +000BD817: call ___cxa_begin_catch +000BD81C: mov rdx, [rbp+var_18] +000BD820: mov rax, [rbp+var_38] +000BD824: mov rsi, rdx +000BD827: mov rdi, rax +000BD82A: call __ZSt8_DestroyIPN6serial8PortInfoEEvT_S3_; std::_Destroy(serial::PortInfo *,serial::PortInfo *) +000BD82F: call ___cxa_rethrow +000BD834: mov rbx, rax +000BD837: call ___cxa_end_catch +000BD83C: mov rax, rbx +000BD83F: mov rdi, rax; struct _Unwind_Exception * +000BD842: call __Unwind_Resume +000BD847: add rsp, 38h +000BD84B: pop rbx +000BD84C: pop rbp +000BD84D: retn + +### FUNC 000BD84E - 000BD876 (40 bytes) name=_ZStneIPSsEbRKSt13move_iteratorIT_ES5_ +000BD84E: push rbp +000BD84F: mov rbp, rsp +000BD852: sub rsp, 10h +000BD856: mov [rbp+var_8], rdi +000BD85A: mov [rbp+var_10], rsi +000BD85E: mov rdx, [rbp+var_10] +000BD862: mov rax, [rbp+var_8] +000BD866: mov rsi, rdx +000BD869: mov rdi, rax +000BD86C: call __ZSteqIPSsEbRKSt13move_iteratorIT_ES5_; std::operator==(std::move_iterator const&,std::move_iterator const&) +000BD871: xor eax, 1 +000BD874: leave +000BD875: retn + +### FUNC 000BD876 - 000BD896 (32 bytes) name=_ZNSt13move_iteratorIPSsEppEv +000BD876: push rbp +000BD877: mov rbp, rsp +000BD87A: mov [rbp+var_8], rdi +000BD87E: mov rax, [rbp+var_8] +000BD882: mov rax, [rax] +000BD885: lea rdx, [rax+8] +000BD889: mov rax, [rbp+var_8] +000BD88D: mov [rax], rdx +000BD890: mov rax, [rbp+var_8] +000BD894: pop rbp +000BD895: retn + +### FUNC 000BD896 - 000BD8B3 (29 bytes) name=_ZNKSt13move_iteratorIPSsEdeEv +000BD896: push rbp +000BD897: mov rbp, rsp +000BD89A: sub rsp, 10h +000BD89E: mov [rbp+var_8], rdi +000BD8A2: mov rax, [rbp+var_8] +000BD8A6: mov rax, [rax] +000BD8A9: mov rdi, rax +000BD8AC: call __ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_; std::move(std::string &&&) +000BD8B1: leave +000BD8B2: retn + +### FUNC 000BD8B3 - 000BD8FB (72 bytes) name=_ZSt10_ConstructISsJSsEEvPT_DpOT0_ +000BD8B3: push rbp; Alternative name is '_ZSt10_ConstructISsISsEEvPT_DpOT0_' +000BD8B4: mov rbp, rsp +000BD8B7: push rbx +000BD8B8: sub rsp, 18h +000BD8BC: mov [rbp+var_18], rdi +000BD8C0: mov [rbp+var_20], rsi +000BD8C4: mov rax, [rbp+var_20] +000BD8C8: mov rdi, rax +000BD8CB: call __ZSt7forwardISsEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000BD8D0: mov rbx, rax +000BD8D3: mov rax, [rbp+var_18] +000BD8D7: mov rsi, rax; void * +000BD8DA: mov edi, 8; unsigned __int64 +000BD8DF: call __ZnwmPv; operator new(ulong,void *) +000BD8E4: test rax, rax +000BD8E7: jz short loc_BD8F4 +000BD8E9: mov rsi, rbx +000BD8EC: mov rdi, rax +000BD8EF: call __ZNSsC1EOSs; std::string::string(std::string &&) +000BD8F4: add rsp, 18h +000BD8F8: pop rbx +000BD8F9: pop rbp +000BD8FA: retn + +### FUNC 000BD8FB - 000BD923 (40 bytes) name=_ZStneIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +000BD8FB: push rbp +000BD8FC: mov rbp, rsp +000BD8FF: sub rsp, 10h +000BD903: mov [rbp+var_8], rdi +000BD907: mov [rbp+var_10], rsi +000BD90B: mov rdx, [rbp+var_10] +000BD90F: mov rax, [rbp+var_8] +000BD913: mov rsi, rdx +000BD916: mov rdi, rax +000BD919: call __ZSteqIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_; std::operator==(std::move_iterator const&,std::move_iterator const&) +000BD91E: xor eax, 1 +000BD921: leave +000BD922: retn + +### FUNC 000BD924 - 000BD944 (32 bytes) name=_ZNSt13move_iteratorIPN6serial8PortInfoEEppEv +000BD924: push rbp +000BD925: mov rbp, rsp +000BD928: mov [rbp+var_8], rdi +000BD92C: mov rax, [rbp+var_8] +000BD930: mov rax, [rax] +000BD933: lea rdx, [rax+18h] +000BD937: mov rax, [rbp+var_8] +000BD93B: mov [rax], rdx +000BD93E: mov rax, [rbp+var_8] +000BD942: pop rbp +000BD943: retn + +### FUNC 000BD944 - 000BD952 (14 bytes) name=_ZSt4moveIRN6serial8PortInfoEEONSt16remove_referenceIT_E4typeEOS4_ +000BD944: push rbp +000BD945: mov rbp, rsp +000BD948: mov [rbp+var_8], rdi +000BD94C: mov rax, [rbp+var_8] +000BD950: pop rbp +000BD951: retn + +### FUNC 000BD952 - 000BD96F (29 bytes) name=_ZNKSt13move_iteratorIPN6serial8PortInfoEEdeEv +000BD952: push rbp +000BD953: mov rbp, rsp +000BD956: sub rsp, 10h +000BD95A: mov [rbp+var_8], rdi +000BD95E: mov rax, [rbp+var_8] +000BD962: mov rax, [rax] +000BD965: mov rdi, rax +000BD968: call __ZSt4moveIRN6serial8PortInfoEEONSt16remove_referenceIT_E4typeEOS4_; std::move(serial::PortInfo &&&) +000BD96D: leave +000BD96E: retn + +### FUNC 000BD96F - 000BD97D (14 bytes) name=_ZSt7forwardIN6serial8PortInfoEEOT_RNSt16remove_referenceIS2_E4typeE +000BD96F: push rbp +000BD970: mov rbp, rsp +000BD973: mov [rbp+var_8], rdi +000BD977: mov rax, [rbp+var_8] +000BD97B: pop rbp +000BD97C: retn + +### FUNC 000BD97E - 000BD9D9 (91 bytes) name=_ZN6serial8PortInfoC2EOS0_ +000BD97E: push rbp; Alternative name is 'serial::PortInfo::PortInfo(serial::PortInfo&&)' +000BD97F: mov rbp, rsp +000BD982: sub rsp, 10h +000BD986: mov [rbp+var_8], rdi +000BD98A: mov [rbp+var_10], rsi +000BD98E: mov rdx, [rbp+var_10] +000BD992: mov rax, [rbp+var_8] +000BD996: mov rsi, rdx +000BD999: mov rdi, rax +000BD99C: call __ZNSsC1EOSs; std::string::string(std::string &&) +000BD9A1: mov rax, [rbp+var_10] +000BD9A5: lea rdx, [rax+8] +000BD9A9: mov rax, [rbp+var_8] +000BD9AD: add rax, 8 +000BD9B1: mov rsi, rdx +000BD9B4: mov rdi, rax +000BD9B7: call __ZNSsC1EOSs; std::string::string(std::string &&) +000BD9BC: mov rax, [rbp+var_10] +000BD9C0: lea rdx, [rax+10h] +000BD9C4: mov rax, [rbp+var_8] +000BD9C8: add rax, 10h +000BD9CC: mov rsi, rdx +000BD9CF: mov rdi, rax +000BD9D2: call __ZNSsC1EOSs; std::string::string(std::string &&) +000BD9D7: leave +000BD9D8: retn + +### FUNC 000BD9D9 - 000BDA21 (72 bytes) name=_ZSt10_ConstructIN6serial8PortInfoEJS1_EEvPT_DpOT0_ +000BD9D9: push rbp; Alternative name is 'void std::_Construct(serial::PortInfo *, serial::PortInfo &&)' +000BD9DA: mov rbp, rsp +000BD9DD: push rbx +000BD9DE: sub rsp, 18h +000BD9E2: mov [rbp+var_18], rdi +000BD9E6: mov [rbp+var_20], rsi +000BD9EA: mov rax, [rbp+var_20] +000BD9EE: mov rdi, rax +000BD9F1: call __ZSt7forwardIN6serial8PortInfoEEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000BD9F6: mov rbx, rax +000BD9F9: mov rax, [rbp+var_18] +000BD9FD: mov rsi, rax; void * +000BDA00: mov edi, 18h; unsigned __int64 +000BDA05: call __ZnwmPv; operator new(ulong,void *) +000BDA0A: test rax, rax +000BDA0D: jz short loc_BDA1A +000BDA0F: mov rsi, rbx +000BDA12: mov rdi, rax +000BDA15: call __ZN6serial8PortInfoC2EOS0_; serial::PortInfo::PortInfo(serial::PortInfo&&) +000BDA1A: add rsp, 18h +000BDA1E: pop rbx +000BDA1F: pop rbp +000BDA20: retn + +### FUNC 000BDA21 - 000BDA5A (57 bytes) name=_ZSteqIPSsEbRKSt13move_iteratorIT_ES5_ +000BDA21: push rbp +000BDA22: mov rbp, rsp +000BDA25: push rbx +000BDA26: sub rsp, 18h +000BDA2A: mov [rbp+var_18], rdi +000BDA2E: mov [rbp+var_20], rsi +000BDA32: mov rax, [rbp+var_18] +000BDA36: mov rdi, rax +000BDA39: call __ZNKSt13move_iteratorIPSsE4baseEv; std::move_iterator::base(void) +000BDA3E: mov rbx, rax +000BDA41: mov rax, [rbp+var_20] +000BDA45: mov rdi, rax +000BDA48: call __ZNKSt13move_iteratorIPSsE4baseEv; std::move_iterator::base(void) +000BDA4D: cmp rbx, rax +000BDA50: setz al +000BDA53: add rsp, 18h +000BDA57: pop rbx +000BDA58: pop rbp +000BDA59: retn + +### FUNC 000BDA5A - 000BDA93 (57 bytes) name=_ZSteqIPN6serial8PortInfoEEbRKSt13move_iteratorIT_ES7_ +000BDA5A: push rbp +000BDA5B: mov rbp, rsp +000BDA5E: push rbx +000BDA5F: sub rsp, 18h +000BDA63: mov [rbp+var_18], rdi +000BDA67: mov [rbp+var_20], rsi +000BDA6B: mov rax, [rbp+var_18] +000BDA6F: mov rdi, rax +000BDA72: call __ZNKSt13move_iteratorIPN6serial8PortInfoEE4baseEv; std::move_iterator::base(void) +000BDA77: mov rbx, rax +000BDA7A: mov rax, [rbp+var_20] +000BDA7E: mov rdi, rax +000BDA81: call __ZNKSt13move_iteratorIPN6serial8PortInfoEE4baseEv; std::move_iterator::base(void) +000BDA86: cmp rbx, rax +000BDA89: setz al +000BDA8C: add rsp, 18h +000BDA90: pop rbx +000BDA91: pop rbp +000BDA92: retn + +### FUNC 000BDA94 - 000BDAA5 (17 bytes) name=_ZNKSt13move_iteratorIPSsE4baseEv +000BDA94: push rbp +000BDA95: mov rbp, rsp +000BDA98: mov [rbp+var_8], rdi +000BDA9C: mov rax, [rbp+var_8] +000BDAA0: mov rax, [rax] +000BDAA3: pop rbp +000BDAA4: retn + +### FUNC 000BDAA6 - 000BDAB7 (17 bytes) name=_ZNKSt13move_iteratorIPN6serial8PortInfoEE4baseEv +000BDAA6: push rbp +000BDAA7: mov rbp, rsp +000BDAAA: mov [rbp+var_8], rdi +000BDAAE: mov rax, [rbp+var_8] +000BDAB2: mov rax, [rax] +000BDAB5: pop rbp +000BDAB6: retn + +### FUNC 000BDAB8 - 000BDACE (22 bytes) name=_ZL18__gthread_active_pv +000BDAB8: push rbp +000BDAB9: mov rbp, rsp +000BDABC: mov rax, cs:__pthread_key_create_ptr +000BDAC3: test rax, rax +000BDAC6: setnz al +000BDAC9: movzx eax, al +000BDACC: pop rbp +000BDACD: retn + +### FUNC 000BDACE - 000BDAFD (47 bytes) name=_ZL20__gthread_mutex_lockP15pthread_mutex_t +000BDACE: push rbp +000BDACF: mov rbp, rsp +000BDAD2: sub rsp, 10h +000BDAD6: mov [rbp+mutex], rdi +000BDADA: call _ZL18__gthread_active_pv; __gthread_active_p(void) +000BDADF: test eax, eax +000BDAE1: setnz al +000BDAE4: test al, al +000BDAE6: jz short loc_BDAF6 +000BDAE8: mov rax, [rbp+mutex] +000BDAEC: mov rdi, rax; mutex +000BDAEF: call _pthread_mutex_lock +000BDAF4: jmp short locret_BDAFB +000BDAF6: mov eax, 0 +000BDAFB: leave +000BDAFC: retn + +### FUNC 000BDAFD - 000BDB2C (47 bytes) name=_ZL22__gthread_mutex_unlockP15pthread_mutex_t +000BDAFD: push rbp +000BDAFE: mov rbp, rsp +000BDB01: sub rsp, 10h +000BDB05: mov [rbp+mutex], rdi +000BDB09: call _ZL18__gthread_active_pv; __gthread_active_p(void) +000BDB0E: test eax, eax +000BDB10: setnz al +000BDB13: test al, al +000BDB15: jz short loc_BDB25 +000BDB17: mov rax, [rbp+mutex] +000BDB1B: mov rdi, rax; mutex +000BDB1E: call _pthread_mutex_unlock +000BDB23: jmp short locret_BDB2A +000BDB25: mov eax, 0 +000BDB2A: leave +000BDB2B: retn + +### FUNC 000BDB2C - 000BDB59 (45 bytes) name=_ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec +000BDB2C: push rbp +000BDB2D: mov rbp, rsp +000BDB30: sub rsp, 20h +000BDB34: mov [rbp+cond], rdi +000BDB38: mov [rbp+mutex], rsi +000BDB3C: mov [rbp+abstime], rdx +000BDB40: mov rdx, [rbp+abstime]; abstime +000BDB44: mov rcx, [rbp+mutex] +000BDB48: mov rax, [rbp+cond] +000BDB4C: mov rsi, rcx; mutex +000BDB4F: mov rdi, rax; cond +000BDB52: call _pthread_cond_timedwait +000BDB57: leave +000BDB58: retn + +### FUNC 000BDB5A - 000BDBFC (162 bytes) name=_ZN14EloEEROMDeviceC2Ev +000BDB5A: push rbp; Alternative name is 'EloEEROMDevice::EloEEROMDevice(void)' +000BDB5B: mov rbp, rsp +000BDB5E: push rbx +000BDB5F: sub rsp, 28h +000BDB63: mov [rbp+var_28], rdi +000BDB67: mov rax, [rbp+var_28] +000BDB6B: mov rdi, rax; this +000BDB6E: call __ZN16TCMVirtualDeviceC2Ev; TCMVirtualDevice::TCMVirtualDevice(void) +000BDB73: mov rax, [rbp+var_28] +000BDB77: mov rdx, cs:_ZTV14EloEEROMDevice_ptr +000BDB7E: lea rdx, [rdx+10h] +000BDB82: mov [rax], rdx +000BDB85: mov rax, [rbp+var_28] +000BDB89: add rax, 0C8h +000BDB8F: mov rdi, rax +000BDB92: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000BDB97: mov rax, [rbp+var_28] +000BDB9B: mov byte ptr [rax+58h], 0 +000BDB9F: mov [rbp+var_11], 0FFh +000BDBA3: mov rax, [rbp+var_28] +000BDBA7: lea rcx, [rax+0C8h] +000BDBAE: lea rax, [rbp+var_11] +000BDBB2: mov rdx, rax +000BDBB5: mov esi, 60h ; '`' +000BDBBA: mov rdi, rcx +000BDBBD: call __ZNSt6vectorIhSaIhEE6resizeEmRKh; std::vector>::resize(ulong,uchar const&) +000BDBC2: jmp short loc_BDBF5 +000BDBC4: mov rbx, rax +000BDBC7: mov rax, [rbp+var_28] +000BDBCB: add rax, 0C8h +000BDBD1: mov rdi, rax +000BDBD4: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BDBD9: jmp short loc_BDBDE +000BDBDB: mov rbx, rax +000BDBDE: mov rax, [rbp+var_28] +000BDBE2: mov rdi, rax; this +000BDBE5: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000BDBEA: mov rax, rbx +000BDBED: mov rdi, rax; struct _Unwind_Exception * +000BDBF0: call __Unwind_Resume +000BDBF5: add rsp, 28h +000BDBF9: pop rbx +000BDBFA: pop rbp +000BDBFB: retn + +### FUNC 000BDBFC - 000BDC4F (83 bytes) name=_ZN14EloEEROMDeviceD2Ev +000BDBFC: push rbp; Alternative name is 'EloEEROMDevice::~EloEEROMDevice()' +000BDBFD: mov rbp, rsp +000BDC00: sub rsp, 10h +000BDC04: mov [rbp+var_8], rdi +000BDC08: mov rax, [rbp+var_8] +000BDC0C: mov rdx, cs:_ZTV14EloEEROMDevice_ptr +000BDC13: lea rdx, [rdx+10h] +000BDC17: mov [rax], rdx +000BDC1A: mov rax, [rbp+var_8] +000BDC1E: add rax, 0C8h +000BDC24: mov rdi, rax +000BDC27: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BDC2C: mov rax, [rbp+var_8] +000BDC30: mov rdi, rax; this +000BDC33: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000BDC38: mov eax, 0 +000BDC3D: test eax, eax +000BDC3F: jz short locret_BDC4D +000BDC41: mov rax, [rbp+var_8] +000BDC45: mov rdi, rax; void * +000BDC48: call __ZdlPv; operator delete(void *) +000BDC4D: leave +000BDC4E: retn + +### FUNC 000BDC50 - 000BDC76 (38 bytes) name=_ZN14EloEEROMDeviceD0Ev +000BDC50: push rbp +000BDC51: mov rbp, rsp +000BDC54: sub rsp, 10h +000BDC58: mov [rbp+var_8], rdi +000BDC5C: mov rax, [rbp+var_8] +000BDC60: mov rdi, rax; this +000BDC63: call __ZN14EloEEROMDeviceD2Ev; EloEEROMDevice::~EloEEROMDevice() +000BDC68: mov rax, [rbp+var_8] +000BDC6C: mov rdi, rax; void * +000BDC6F: call __ZdlPv; operator delete(void *) +000BDC74: leave +000BDC75: retn + +### FUNC 000BDC76 - 000BDE09 (403 bytes) name=_ZN14EloEEROMDevice10readPresetEv +000BDC76: push rbp +000BDC77: mov rbp, rsp +000BDC7A: push r12 +000BDC7C: push rbx +000BDC7D: sub rsp, 40h +000BDC81: mov [rbp+var_48], rdi +000BDC85: mov [rbp+var_14], 0 +000BDC8C: jmp short loc_BDCB0 +000BDC8E: mov eax, [rbp+var_14] +000BDC91: cdqe +000BDC93: mov rdx, [rbp+var_48] +000BDC97: add rdx, 0C8h +000BDC9E: mov rsi, rax +000BDCA1: mov rdi, rdx +000BDCA4: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BDCA9: mov byte ptr [rax], 0FFh +000BDCAC: add [rbp+var_14], 1 +000BDCB0: mov eax, [rbp+var_14] +000BDCB3: movsxd rbx, eax +000BDCB6: mov rax, [rbp+var_48] +000BDCBA: add rax, 0C8h +000BDCC0: mov rdi, rax +000BDCC3: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000BDCC8: cmp rbx, rax +000BDCCB: setb al +000BDCCE: test al, al +000BDCD0: jnz short loc_BDC8E +000BDCD2: mov rax, [rbp+var_48] +000BDCD6: mov byte ptr [rax+58h], 0 +000BDCDA: mov rax, [rbp+var_48] +000BDCDE: mov rdi, rax; this +000BDCE1: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BDCE6: mov r12d, eax +000BDCE9: mov edi, 28h ; '('; unsigned __int64 +000BDCEE: call __Znwm; operator new(ulong) +000BDCF3: mov rbx, rax +000BDCF6: mov ecx, r12d; int +000BDCF9: mov edx, 10h; unsigned __int8 +000BDCFE: mov esi, 2; unsigned __int8 +000BDD03: mov rdi, rbx; this +000BDD06: call __ZN11FTDICommandC2Ehhi; FTDICommand::FTDICommand(uchar,uchar,int) +000BDD0B: mov [rbp+var_20], rbx +000BDD0F: mov rax, [rbp+var_48] +000BDD13: mov rdx, [rbp+var_20] +000BDD17: mov rsi, rdx; FTDICommand * +000BDD1A: mov rdi, rax; this +000BDD1D: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BDD22: mov rax, [rbp+var_48] +000BDD26: lea rdx, [rax+90h] +000BDD2D: lea rax, [rbp+var_40] +000BDD31: mov rsi, rdx +000BDD34: mov rdi, rax +000BDD37: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BDD3C: mov [rbp+var_28], 0C8h +000BDD43: lea rdx, [rbp+var_28] +000BDD47: lea rax, [rbp+var_30] +000BDD4B: mov rsi, rdx +000BDD4E: mov rdi, rax +000BDD51: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BDD56: mov rax, [rbp+var_48] +000BDD5A: lea rcx, [rax+60h] +000BDD5E: lea rdx, [rbp+var_30] +000BDD62: lea rax, [rbp+var_40] +000BDD66: mov rsi, rax +000BDD69: mov rdi, rcx +000BDD6C: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BDD71: mov [rbp+var_24], eax +000BDD74: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BDD7B: movzx eax, byte ptr [rax] +000BDD7E: test al, al +000BDD80: jz short loc_BDDB4 +000BDD82: cmp [rbp+var_24], 1 +000BDD86: jnz short loc_BDD96 +000BDD88: lea rdi, s; "EloEEROMDevice timeout" +000BDD8F: call _puts +000BDD94: jmp short loc_BDDB4 +000BDD96: mov rax, [rbp+var_48] +000BDD9A: movzx eax, byte ptr [rax+58h] +000BDD9E: movzx eax, al +000BDDA1: mov esi, eax +000BDDA3: lea rdi, aEloeeromdevice_0; "EloEEROMDevice:%d\n" +000BDDAA: mov eax, 0 +000BDDAF: call _printf +000BDDB4: mov rax, [rbp+var_48] +000BDDB8: lea rbx, [rax+0C8h] +000BDDBF: lea rax, [rbp+var_40] +000BDDC3: mov rdi, rax +000BDDC6: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BDDCB: mov rax, rbx +000BDDCE: jmp short loc_BDE00 +000BDDD0: mov r12, rax +000BDDD3: mov rdi, rbx; void * +000BDDD6: call __ZdlPv; operator delete(void *) +000BDDDB: mov rax, r12 +000BDDDE: mov rdi, rax; struct _Unwind_Exception * +000BDDE1: call __Unwind_Resume +000BDDE6: mov rbx, rax +000BDDE9: lea rax, [rbp+var_40] +000BDDED: mov rdi, rax +000BDDF0: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BDDF5: mov rax, rbx +000BDDF8: mov rdi, rax; struct _Unwind_Exception * +000BDDFB: call __Unwind_Resume +000BDE00: add rsp, 40h +000BDE04: pop rbx +000BDE05: pop r12 +000BDE07: pop rbp +000BDE08: retn + +### FUNC 000BDE0A - 000BDF57 (333 bytes) name=_ZN14EloEEROMDevice11writePresetERKSt6vectorIhSaIhEE +000BDE0A: push rbp +000BDE0B: mov rbp, rsp +000BDE0E: push r12 +000BDE10: push rbx +000BDE11: sub rsp, 40h +000BDE15: mov [rbp+var_48], rdi +000BDE19: mov [rbp+var_50], rsi +000BDE1D: mov rax, [rbp+var_48] +000BDE21: mov byte ptr [rax+58h], 0 +000BDE25: mov rax, [rbp+var_48] +000BDE29: mov rdi, rax; this +000BDE2C: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BDE31: mov r12d, eax +000BDE34: mov edi, 28h ; '('; unsigned __int64 +000BDE39: call __Znwm; operator new(ulong) +000BDE3E: mov rbx, rax +000BDE41: mov rax, [rbp+var_50] +000BDE45: mov r8d, r12d +000BDE48: mov rcx, rax +000BDE4B: mov edx, 11h +000BDE50: mov esi, 2 +000BDE55: mov rdi, rbx +000BDE58: call __ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi; FTDICommand::FTDICommand(uchar,uchar,std::vector> const&,int) +000BDE5D: mov [rbp+var_18], rbx +000BDE61: mov rax, [rbp+var_48] +000BDE65: mov rdx, [rbp+var_18] +000BDE69: mov rsi, rdx; FTDICommand * +000BDE6C: mov rdi, rax; this +000BDE6F: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BDE74: mov rax, [rbp+var_48] +000BDE78: lea rdx, [rax+90h] +000BDE7F: lea rax, [rbp+var_40] +000BDE83: mov rsi, rdx +000BDE86: mov rdi, rax +000BDE89: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BDE8E: mov [rbp+var_20], 0C8h +000BDE95: lea rdx, [rbp+var_20] +000BDE99: lea rax, [rbp+var_30] +000BDE9D: mov rsi, rdx +000BDEA0: mov rdi, rax +000BDEA3: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BDEA8: mov rax, [rbp+var_48] +000BDEAC: lea rcx, [rax+60h] +000BDEB0: lea rdx, [rbp+var_30] +000BDEB4: lea rax, [rbp+var_40] +000BDEB8: mov rsi, rax +000BDEBB: mov rdi, rcx +000BDEBE: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BDEC3: mov [rbp+var_1C], eax +000BDEC6: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BDECD: movzx eax, byte ptr [rax] +000BDED0: test al, al +000BDED2: jz short loc_BDF06 +000BDED4: cmp [rbp+var_1C], 1 +000BDED8: jnz short loc_BDEE8 +000BDEDA: lea rdi, s; "EloEEROMDevice timeout" +000BDEE1: call _puts +000BDEE6: jmp short loc_BDF06 +000BDEE8: mov rax, [rbp+var_48] +000BDEEC: movzx eax, byte ptr [rax+58h] +000BDEF0: movzx eax, al +000BDEF3: mov esi, eax +000BDEF5: lea rdi, aEloeeromdevice_0; "EloEEROMDevice:%d\n" +000BDEFC: mov eax, 0 +000BDF01: call _printf +000BDF06: mov rax, [rbp+var_48] +000BDF0A: movzx ebx, byte ptr [rax+58h] +000BDF0E: lea rax, [rbp+var_40] +000BDF12: mov rdi, rax +000BDF15: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BDF1A: mov eax, ebx +000BDF1C: jmp short loc_BDF4E +000BDF1E: mov r12, rax +000BDF21: mov rdi, rbx; void * +000BDF24: call __ZdlPv; operator delete(void *) +000BDF29: mov rax, r12 +000BDF2C: mov rdi, rax; struct _Unwind_Exception * +000BDF2F: call __Unwind_Resume +000BDF34: mov rbx, rax +000BDF37: lea rax, [rbp+var_40] +000BDF3B: mov rdi, rax +000BDF3E: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BDF43: mov rax, rbx +000BDF46: mov rdi, rax; struct _Unwind_Exception * +000BDF49: call __Unwind_Resume +000BDF4E: add rsp, 40h +000BDF52: pop rbx +000BDF53: pop r12 +000BDF55: pop rbp +000BDF56: retn + +### FUNC 000BDF58 - 000BDF91 (57 bytes) name=_ZN14EloEEROMDevice20canHandleFTDICommandEhh +000BDF58: push rbp +000BDF59: mov rbp, rsp +000BDF5C: mov [rbp+var_8], rdi +000BDF60: mov ecx, esi +000BDF62: mov eax, edx +000BDF64: mov [rbp+var_C], cl +000BDF67: mov [rbp+var_10], al +000BDF6A: cmp [rbp+var_C], 2 +000BDF6E: jnz short loc_BDF8A +000BDF70: cmp [rbp+var_10], 10h +000BDF74: jnz short loc_BDF7D +000BDF76: mov eax, 1 +000BDF7B: jmp short loc_BDF8F +000BDF7D: cmp [rbp+var_10], 11h +000BDF81: jnz short loc_BDF8A +000BDF83: mov eax, 1 +000BDF88: jmp short loc_BDF8F +000BDF8A: mov eax, 0 +000BDF8F: pop rbp +000BDF90: retn + +### FUNC 000BDF92 - 000BE0BE (300 bytes) name=_ZN14EloEEROMDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000BDF92: push rbp +000BDF93: mov rbp, rsp +000BDF96: push rbx +000BDF97: sub rsp, 28h +000BDF9B: mov [rbp+var_28], rdi +000BDF9F: mov [rbp+var_30], rsi +000BDFA3: mov rax, [rbp+var_30] +000BDFA7: mov esi, 4 +000BDFAC: mov rdi, rax +000BDFAF: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BDFB4: movzx eax, byte ptr [rax] +000BDFB7: mov [rbp+var_15], al +000BDFBA: mov rax, [rbp+var_30] +000BDFBE: mov esi, 5 +000BDFC3: mov rdi, rax +000BDFC6: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BDFCB: movzx eax, byte ptr [rax] +000BDFCE: mov [rbp+var_16], al +000BDFD1: mov rax, [rbp+var_30] +000BDFD5: mov esi, 6 +000BDFDA: mov rdi, rax +000BDFDD: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BDFE2: movzx eax, byte ptr [rax] +000BDFE5: movzx eax, al +000BDFE8: shl eax, 8 +000BDFEB: mov ebx, eax +000BDFED: mov rax, [rbp+var_30] +000BDFF1: mov esi, 7 +000BDFF6: mov rdi, rax +000BDFF9: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BDFFE: movzx eax, byte ptr [rax] +000BE001: movzx eax, al +000BE004: or eax, ebx +000BE006: mov [rbp+var_1C], eax +000BE009: cmp [rbp+var_15], 2 +000BE00D: jnz loc_BE0B7 +000BE013: cmp [rbp+var_16], 10h +000BE017: jnz short loc_BE081 +000BE019: mov [rbp+var_14], 0 +000BE020: jmp short loc_BE061 +000BE022: mov eax, [rbp+var_14] +000BE025: cdqe +000BE027: mov rdx, [rbp+var_28] +000BE02B: add rdx, 0C8h +000BE032: mov rsi, rax +000BE035: mov rdi, rdx +000BE038: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BE03D: mov rbx, rax +000BE040: mov eax, [rbp+var_14] +000BE043: add eax, 8 +000BE046: movsxd rdx, eax +000BE049: mov rax, [rbp+var_30] +000BE04D: mov rsi, rdx +000BE050: mov rdi, rax +000BE053: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BE058: movzx eax, byte ptr [rax] +000BE05B: mov [rbx], al +000BE05D: add [rbp+var_14], 1 +000BE061: cmp [rbp+var_14], 5Fh ; '_' +000BE065: jle short loc_BE022 +000BE067: mov rax, [rbp+var_28] +000BE06B: mov byte ptr [rax+58h], 1 +000BE06F: mov rax, [rbp+var_28] +000BE073: add rax, 60h ; '`' +000BE077: mov rdi, rax; this +000BE07A: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000BE07F: jmp short loc_BE0B7 +000BE081: cmp [rbp+var_16], 11h +000BE085: jnz short loc_BE0B7 +000BE087: mov rax, [rbp+var_30] +000BE08B: mov esi, 8 +000BE090: mov rdi, rax +000BE093: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BE098: movzx eax, byte ptr [rax] +000BE09B: cmp al, 1 +000BE09D: setz dl +000BE0A0: mov rax, [rbp+var_28] +000BE0A4: mov [rax+58h], dl +000BE0A7: mov rax, [rbp+var_28] +000BE0AB: add rax, 60h ; '`' +000BE0AF: mov rdi, rax; this +000BE0B2: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000BE0B7: add rsp, 28h +000BE0BB: pop rbx +000BE0BC: pop rbp +000BE0BD: retn + +### FUNC 000BE0BE - 000BE0DA (28 bytes) name=_ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_ +000BE0BE: push rbp +000BE0BF: mov rbp, rsp +000BE0C2: mov [rbp+var_8], rdi +000BE0C6: mov [rbp+var_10], rsi +000BE0CA: mov rax, [rbp+var_10] +000BE0CE: mov rdx, [rax] +000BE0D1: mov rax, [rbp+var_8] +000BE0D5: mov [rax], rdx +000BE0D8: pop rbp +000BE0D9: retn + +### FUNC 000BE0DA - 000BE0EB (17 bytes) name=_ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv +000BE0DA: push rbp +000BE0DB: mov rbp, rsp +000BE0DE: mov [rbp+var_8], rdi +000BE0E2: mov rax, [rbp+var_8] +000BE0E6: mov rax, [rax] +000BE0E9: pop rbp +000BE0EA: retn + +### FUNC 000BE0EB - 000BE13A (79 bytes) name=_ZNSt6chronoltIlSt5ratioILl1ELl1000000000EElS2_EEbRKNS_8durationIT_T0_EERKNS3_IT1_T2_EE +000BE0EB: push rbp +000BE0EC: mov rbp, rsp +000BE0EF: push rbx +000BE0F0: sub rsp, 38h +000BE0F4: mov [rbp+var_38], rdi +000BE0F8: mov [rbp+var_40], rsi +000BE0FC: mov rax, [rbp+var_38] +000BE100: mov rax, [rax] +000BE103: mov [rbp+var_30], rax +000BE107: lea rax, [rbp+var_30] +000BE10B: mov rdi, rax +000BE10E: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE113: mov rbx, rax +000BE116: mov rax, [rbp+var_40] +000BE11A: mov rax, [rax] +000BE11D: mov [rbp+var_20], rax +000BE121: lea rax, [rbp+var_20] +000BE125: mov rdi, rax +000BE128: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE12D: cmp rbx, rax +000BE130: setl al +000BE133: add rsp, 38h +000BE137: pop rbx +000BE138: pop rbp +000BE139: retn + +### FUNC 000BE13A - 000BE14B (17 bytes) name=_ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv +000BE13A: push rbp +000BE13B: mov rbp, rsp +000BE13E: mov [rbp+var_8], rdi +000BE142: mov rax, [rbp+var_8] +000BE146: mov rax, [rax] +000BE149: pop rbp +000BE14A: retn + +### FUNC 000BE14C - 000BE168 (28 bytes) name=_ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IlvEERKT_ +000BE14C: push rbp +000BE14D: mov rbp, rsp +000BE150: mov [rbp+var_8], rdi +000BE154: mov [rbp+var_10], rsi +000BE158: mov rax, [rbp+var_10] +000BE15C: mov rdx, [rax] +000BE15F: mov rax, [rbp+var_8] +000BE163: mov [rax], rdx +000BE166: pop rbp +000BE167: retn + +### FUNC 000BE168 - 000BE1C1 (89 bytes) name=_ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1EEEES2_ILl1ELl1000000000EElLb1ELb0EE6__castIlS5_EES4_RKNS1_IT_T0_EE +000BE168: push rbp +000BE169: mov rbp, rsp +000BE16C: sub rsp, 20h +000BE170: mov [rbp+var_18], rdi +000BE174: mov rax, [rbp+var_18] +000BE178: mov rdi, rax +000BE17B: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE180: mov rcx, rax +000BE183: mov rdx, 112E0BE826D694B3h +000BE18D: mov rax, rcx +000BE190: imul rdx +000BE193: sar rdx, 1Ah +000BE197: mov rax, rcx +000BE19A: sar rax, 3Fh +000BE19E: sub rdx, rax +000BE1A1: mov rax, rdx +000BE1A4: mov [rbp+var_8], rax +000BE1A8: lea rdx, [rbp+var_8] +000BE1AC: lea rax, [rbp+var_10] +000BE1B0: mov rsi, rdx +000BE1B3: mov rdi, rax +000BE1B6: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000BE1BB: mov rax, [rbp+var_10] +000BE1BF: leave +000BE1C0: retn + +### FUNC 000BE1C1 - 000BE1DB (26 bytes) name=_ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +000BE1C1: push rbp +000BE1C2: mov rbp, rsp +000BE1C5: sub rsp, 10h +000BE1C9: mov [rbp+var_8], rdi +000BE1CD: mov rax, [rbp+var_8] +000BE1D1: mov rdi, rax +000BE1D4: call __ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1EEEES2_ILl1ELl1000000000EElLb1ELb0EE6__castIlS5_EES4_RKNS1_IT_T0_EE; std::chrono::__duration_cast_impl>,std::ratio<1l,1000000000l>,long,true,false>::__cast>(std::chrono::duration> const&) +000BE1D9: leave +000BE1DA: retn + +### FUNC 000BE1DC - 000BE1ED (17 bytes) name=_ZNKSt6chrono8durationIlSt5ratioILl1ELl1EEE5countEv +000BE1DC: push rbp +000BE1DD: mov rbp, rsp +000BE1E0: mov [rbp+var_8], rdi +000BE1E4: mov rax, [rbp+var_8] +000BE1E8: mov rax, [rax] +000BE1EB: pop rbp +000BE1EC: retn + +### FUNC 000BE1EE - 000BE20A (28 bytes) name=_ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEEC1ERKS6_ +000BE1EE: push rbp +000BE1EF: mov rbp, rsp +000BE1F2: mov [rbp+var_8], rdi +000BE1F6: mov [rbp+var_10], rsi +000BE1FA: mov rax, [rbp+var_8] +000BE1FE: mov rdx, [rbp+var_10] +000BE202: mov rdx, [rdx] +000BE205: mov [rax], rdx +000BE208: pop rbp +000BE209: retn + +### FUNC 000BE20A - 000BE21B (17 bytes) name=_ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEE16time_since_epochEv +000BE20A: push rbp +000BE20B: mov rbp, rsp +000BE20E: mov [rbp+var_8], rdi +000BE212: mov rax, [rbp+var_8] +000BE216: mov rax, [rax] +000BE219: pop rbp +000BE21A: retn + +### FUNC 000BE21B - 000BE257 (60 bytes) name=_ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1EEEES4_RKNS1_IT_T0_EE +000BE21B: push rbp +000BE21C: mov rbp, rsp +000BE21F: sub rsp, 20h +000BE223: mov [rbp+var_18], rdi +000BE227: mov rax, [rbp+var_18] +000BE22B: mov rdi, rax +000BE22E: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1EEE5countEv; std::chrono::duration>::count(void) +000BE233: imul rax, 3B9ACA00h +000BE23A: mov [rbp+var_8], rax +000BE23E: lea rdx, [rbp+var_8] +000BE242: lea rax, [rbp+var_10] +000BE246: mov rsi, rdx +000BE249: mov rdi, rax +000BE24C: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000BE251: mov rax, [rbp+var_10] +000BE255: leave +000BE256: retn + +### FUNC 000BE257 - 000BE271 (26 bytes) name=_ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +000BE257: push rbp +000BE258: mov rbp, rsp +000BE25B: sub rsp, 10h +000BE25F: mov [rbp+var_8], rdi +000BE263: mov rax, [rbp+var_8] +000BE267: mov rdi, rax +000BE26A: call __ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1EEEES4_RKNS1_IT_T0_EE; std::chrono::__duration_cast_impl>,std::ratio<1000000000l,1l>,long,false,true>::__cast>(std::chrono::duration> const&) +000BE26F: leave +000BE270: retn + +### FUNC 000BE272 - 000BE28E (28 bytes) name=_ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEC1ERKS6_ +000BE272: push rbp +000BE273: mov rbp, rsp +000BE276: mov [rbp+var_8], rdi +000BE27A: mov [rbp+var_10], rsi +000BE27E: mov rax, [rbp+var_8] +000BE282: mov rdx, [rbp+var_10] +000BE286: mov rdx, [rdx] +000BE289: mov [rax], rdx +000BE28C: pop rbp +000BE28D: retn + +### FUNC 000BE28E - 000BE2BB (45 bytes) name=_ZNSt5mutex4lockEv +000BE28E: push rbp +000BE28F: mov rbp, rsp +000BE292: sub rsp, 20h +000BE296: mov [rbp+var_18], rdi +000BE29A: mov rax, [rbp+var_18] +000BE29E: mov rdi, rax; pthread_mutex_t * +000BE2A1: call _ZL20__gthread_mutex_lockP15pthread_mutex_t; __gthread_mutex_lock(pthread_mutex_t *) +000BE2A6: mov [rbp+var_4], eax +000BE2A9: cmp [rbp+var_4], 0 +000BE2AD: jz short locret_BE2B9 +000BE2AF: mov eax, [rbp+var_4] +000BE2B2: mov edi, eax; int +000BE2B4: call __ZSt20__throw_system_errori; std::__throw_system_error(int) +000BE2B9: leave +000BE2BA: retn + +### FUNC 000BE2BC - 000BE2D6 (26 bytes) name=_ZNSt5mutex6unlockEv +000BE2BC: push rbp +000BE2BD: mov rbp, rsp +000BE2C0: sub rsp, 10h +000BE2C4: mov [rbp+var_8], rdi +000BE2C8: mov rax, [rbp+var_8] +000BE2CC: mov rdi, rax; pthread_mutex_t * +000BE2CF: call _ZL22__gthread_mutex_unlockP15pthread_mutex_t; __gthread_mutex_unlock(pthread_mutex_t *) +000BE2D4: leave +000BE2D5: retn + +### FUNC 000BE2D6 - 000BE2E4 (14 bytes) name=_ZNSt5mutex13native_handleEv +000BE2D6: push rbp +000BE2D7: mov rbp, rsp +000BE2DA: mov [rbp+var_8], rdi +000BE2DE: mov rax, [rbp+var_8] +000BE2E2: pop rbp +000BE2E3: retn + +### FUNC 000BE2E4 - 000BE302 (30 bytes) name=_ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_ +000BE2E4: push rbp +000BE2E5: mov rbp, rsp +000BE2E8: mov [rbp+var_8], rdi +000BE2EC: mov [rbp+var_10], rsi +000BE2F0: mov rax, [rbp+var_10] +000BE2F4: mov eax, [rax] +000BE2F6: movsxd rdx, eax +000BE2F9: mov rax, [rbp+var_8] +000BE2FD: mov [rax], rdx +000BE300: pop rbp +000BE301: retn + +### FUNC 000BE302 - 000BE33B (57 bytes) name=_ZNSt11unique_lockISt5mutexEC2ERS0_ +000BE302: push rbp; Alternative name is 'std::unique_lock::unique_lock(std::mutex&)' +000BE303: mov rbp, rsp +000BE306: sub rsp, 10h +000BE30A: mov [rbp+var_8], rdi +000BE30E: mov [rbp+var_10], rsi +000BE312: mov rax, [rbp+var_8] +000BE316: mov rdx, [rbp+var_10] +000BE31A: mov [rax], rdx +000BE31D: mov rax, [rbp+var_8] +000BE321: mov byte ptr [rax+8], 0 +000BE325: mov rax, [rbp+var_8] +000BE329: mov rdi, rax +000BE32C: call __ZNSt11unique_lockISt5mutexE4lockEv; std::unique_lock::lock(void) +000BE331: mov rax, [rbp+var_8] +000BE335: mov byte ptr [rax+8], 1 +000BE339: leave +000BE33A: retn + +### FUNC 000BE33C - 000BE362 (38 bytes) name=_ZNSt11unique_lockISt5mutexED2Ev +000BE33C: push rbp; Alternative name is 'std::unique_lock::~unique_lock()' +000BE33D: mov rbp, rsp +000BE340: sub rsp, 10h +000BE344: mov [rbp+var_8], rdi +000BE348: mov rax, [rbp+var_8] +000BE34C: movzx eax, byte ptr [rax+8] +000BE350: test al, al +000BE352: jz short locret_BE360 +000BE354: mov rax, [rbp+var_8] +000BE358: mov rdi, rax +000BE35B: call __ZNSt11unique_lockISt5mutexE6unlockEv; std::unique_lock::unlock(void) +000BE360: leave +000BE361: retn + +### FUNC 000BE362 - 000BE373 (17 bytes) name=_ZNKSt6chrono8durationIlSt5ratioILl1ELl1000EEE5countEv +000BE362: push rbp +000BE363: mov rbp, rsp +000BE366: mov [rbp+var_8], rdi +000BE36A: mov rax, [rbp+var_8] +000BE36E: mov rax, [rax] +000BE371: pop rbp +000BE372: retn + +### FUNC 000BE373 - 000BE3AF (60 bytes) name=_ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1000EEEES4_RKNS1_IT_T0_EE +000BE373: push rbp +000BE374: mov rbp, rsp +000BE377: sub rsp, 20h +000BE37B: mov [rbp+var_18], rdi +000BE37F: mov rax, [rbp+var_18] +000BE383: mov rdi, rax +000BE386: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000EEE5countEv; std::chrono::duration>::count(void) +000BE38B: imul rax, 0F4240h +000BE392: mov [rbp+var_8], rax +000BE396: lea rdx, [rbp+var_8] +000BE39A: lea rax, [rbp+var_10] +000BE39E: mov rsi, rdx +000BE3A1: mov rdi, rax +000BE3A4: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000BE3A9: mov rax, [rbp+var_10] +000BE3AD: leave +000BE3AE: retn + +### FUNC 000BE3AF - 000BE3C9 (26 bytes) name=_ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE +000BE3AF: push rbp +000BE3B0: mov rbp, rsp +000BE3B3: sub rsp, 10h +000BE3B7: mov [rbp+var_8], rdi +000BE3BB: mov rax, [rbp+var_8] +000BE3BF: mov rdi, rax +000BE3C2: call __ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1000000ELl1EElLb0ELb1EE6__castIlS2_ILl1ELl1000EEEES4_RKNS1_IT_T0_EE; std::chrono::__duration_cast_impl>,std::ratio<1000000l,1l>,long,false,true>::__cast>(std::chrono::duration> const&) +000BE3C7: leave +000BE3C8: retn + +### FUNC 000BE3CA - 000BE3FF (53 bytes) name=_ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1000EEvEERKNS0_IT_T0_EE +000BE3CA: push rbp; Alternative name is 'std::chrono::duration>::duration, void>(std::chrono::duration> const&)' +000BE3CB: mov rbp, rsp +000BE3CE: sub rsp, 20h +000BE3D2: mov [rbp+var_18], rdi +000BE3D6: mov [rbp+var_20], rsi +000BE3DA: mov rax, [rbp+var_20] +000BE3DE: mov rdi, rax +000BE3E1: call __ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE; std::chrono::duration_cast>,long,std::ratio<1l,1000l>>(std::chrono::duration> const&) +000BE3E6: mov [rbp+var_10], rax +000BE3EA: lea rax, [rbp+var_10] +000BE3EE: mov rdi, rax +000BE3F1: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE3F6: mov rdx, [rbp+var_18] +000BE3FA: mov [rdx], rax +000BE3FD: leave +000BE3FE: retn + +### FUNC 000BE3FF - 000BE46E (111 bytes) name=_ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1000EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000BE3FF: push rbp; Alternative name is 'std::common_type>, std::chrono::duration>>::type std::chrono::operator+, long, std::ratio<1l, 1000l>>(std::chrono::duration> const&, std::chrono::duration> const&)' +000BE400: mov rbp, rsp +000BE403: push rbx +000BE404: sub rsp, 48h +000BE408: mov [rbp+var_48], rdi +000BE40C: mov [rbp+var_50], rsi +000BE410: mov rax, [rbp+var_48] +000BE414: mov rax, [rax] +000BE417: mov [rbp+var_30], rax +000BE41B: lea rax, [rbp+var_30] +000BE41F: mov rdi, rax +000BE422: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE427: mov rbx, rax +000BE42A: mov rdx, [rbp+var_50] +000BE42E: lea rax, [rbp+var_20] +000BE432: mov rsi, rdx +000BE435: mov rdi, rax +000BE438: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1000EEvEERKNS0_IT_T0_EE; std::chrono::duration>::duration,void>(std::chrono::duration> const&) +000BE43D: lea rax, [rbp+var_20] +000BE441: mov rdi, rax +000BE444: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE449: add rax, rbx +000BE44C: mov [rbp+var_38], rax +000BE450: lea rdx, [rbp+var_38] +000BE454: lea rax, [rbp+var_40] +000BE458: mov rsi, rdx +000BE45B: mov rdi, rax +000BE45E: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000BE463: mov rax, [rbp+var_40] +000BE467: add rsp, 48h +000BE46B: pop rbx +000BE46C: pop rbp +000BE46D: retn + +### FUNC 000BE46E - 000BE4BE (80 bytes) name=_ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1000EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +000BE46E: push rbp; Alternative name is 'std::chrono::time_point>, std::chrono::duration>>::type> std::chrono::operator+>, long, std::ratio<1l, 1000l>>(std::chrono::time_point>> const&, std::chrono::duration> const&)' +000BE46F: mov rbp, rsp +000BE472: sub rsp, 40h +000BE476: mov [rbp+var_38], rdi +000BE47A: mov [rbp+var_40], rsi +000BE47E: mov rax, [rbp+var_38] +000BE482: mov rdi, rax +000BE485: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE48A: mov [rbp+var_10], rax +000BE48E: mov rdx, [rbp+var_40] +000BE492: lea rax, [rbp+var_10] +000BE496: mov rsi, rdx +000BE499: mov rdi, rax +000BE49C: call __ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1000EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_; std::chrono::operator+,long,std::ratio<1l,1000l>>(std::chrono::duration> const&,std::chrono::duration> const&) +000BE4A1: mov [rbp+var_20], rax +000BE4A5: lea rdx, [rbp+var_20] +000BE4A9: lea rax, [rbp+var_30] +000BE4AD: mov rsi, rdx +000BE4B0: mov rdi, rax +000BE4B3: call __ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEC1ERKS6_; std::chrono::time_point>>::time_point(std::chrono::duration> const&) +000BE4B8: mov rax, [rbp+var_30] +000BE4BC: leave +000BE4BD: retn + +### FUNC 000BE4BE - 000BE50B (77 bytes) name=_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +000BE4BE: push rbp +000BE4BF: mov rbp, rsp +000BE4C2: sub rsp, 40h +000BE4C6: mov [rbp+var_28], rdi +000BE4CA: mov [rbp+var_30], rsi +000BE4CE: mov [rbp+var_38], rdx +000BE4D2: call __ZNSt6chrono3_V212system_clock3nowEv; std::chrono::_V2::system_clock::now(void) +000BE4D7: mov [rbp+var_10], rax +000BE4DB: mov rdx, [rbp+var_38] +000BE4DF: lea rax, [rbp+var_10] +000BE4E3: mov rsi, rdx +000BE4E6: mov rdi, rax +000BE4E9: call __ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1000EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_; std::chrono::operator+>,long,std::ratio<1l,1000l>>(std::chrono::time_point>> const&,std::chrono::duration> const&) +000BE4EE: mov [rbp+var_20], rax +000BE4F2: lea rdx, [rbp+var_20] +000BE4F6: mov rcx, [rbp+var_30] +000BE4FA: mov rax, [rbp+var_28] +000BE4FE: mov rsi, rcx +000BE501: mov rdi, rax +000BE504: call __ZNSt18condition_variable10wait_untilINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE; std::condition_variable::wait_until>>(std::unique_lock &,std::chrono::time_point>> const&) +000BE509: leave +000BE50A: retn + +### FUNC 000BE50C - 000BE528 (28 bytes) name=_ZNKSt6vectorIhSaIhEEixEm +000BE50C: push rbp +000BE50D: mov rbp, rsp +000BE510: mov [rbp+var_8], rdi +000BE514: mov [rbp+var_10], rsi +000BE518: mov rax, [rbp+var_8] +000BE51C: mov rdx, [rax] +000BE51F: mov rax, [rbp+var_10] +000BE523: add rax, rdx +000BE526: pop rbp +000BE527: retn + +### FUNC 000BE528 - 000BE579 (81 bytes) name=_ZNSt11unique_lockISt5mutexE4lockEv +000BE528: push rbp +000BE529: mov rbp, rsp +000BE52C: sub rsp, 10h +000BE530: mov [rbp+var_8], rdi +000BE534: mov rax, [rbp+var_8] +000BE538: mov rax, [rax] +000BE53B: test rax, rax +000BE53E: jnz short loc_BE54A +000BE540: mov edi, 1; int +000BE545: call __ZSt20__throw_system_errori; std::__throw_system_error(int) +000BE54A: mov rax, [rbp+var_8] +000BE54E: movzx eax, byte ptr [rax+8] +000BE552: test al, al +000BE554: jz short loc_BE560 +000BE556: mov edi, 23h ; '#'; int +000BE55B: call __ZSt20__throw_system_errori; std::__throw_system_error(int) +000BE560: mov rax, [rbp+var_8] +000BE564: mov rax, [rax] +000BE567: mov rdi, rax; this +000BE56A: call __ZNSt5mutex4lockEv; std::mutex::lock(void) +000BE56F: mov rax, [rbp+var_8] +000BE573: mov byte ptr [rax+8], 1 +000BE577: leave +000BE578: retn + +### FUNC 000BE57A - 000BE5C4 (74 bytes) name=_ZNSt11unique_lockISt5mutexE6unlockEv +000BE57A: push rbp +000BE57B: mov rbp, rsp +000BE57E: sub rsp, 10h +000BE582: mov [rbp+var_8], rdi +000BE586: mov rax, [rbp+var_8] +000BE58A: movzx eax, byte ptr [rax+8] +000BE58E: xor eax, 1 +000BE591: test al, al +000BE593: jz short loc_BE59F +000BE595: mov edi, 1; int +000BE59A: call __ZSt20__throw_system_errori; std::__throw_system_error(int) +000BE59F: mov rax, [rbp+var_8] +000BE5A3: mov rax, [rax] +000BE5A6: test rax, rax +000BE5A9: jz short locret_BE5C2 +000BE5AB: mov rax, [rbp+var_8] +000BE5AF: mov rax, [rax] +000BE5B2: mov rdi, rax; this +000BE5B5: call __ZNSt5mutex6unlockEv; std::mutex::unlock(void) +000BE5BA: mov rax, [rbp+var_8] +000BE5BE: mov byte ptr [rax+8], 0 +000BE5C2: leave +000BE5C3: retn + +### FUNC 000BE5C4 - 000BE5F1 (45 bytes) name=_ZNSt18condition_variable10wait_untilINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +000BE5C4: push rbp +000BE5C5: mov rbp, rsp +000BE5C8: sub rsp, 20h +000BE5CC: mov [rbp+var_8], rdi +000BE5D0: mov [rbp+var_10], rsi +000BE5D4: mov [rbp+var_18], rdx +000BE5D8: mov rdx, [rbp+var_18] +000BE5DC: mov rcx, [rbp+var_10] +000BE5E0: mov rax, [rbp+var_8] +000BE5E4: mov rsi, rcx +000BE5E7: mov rdi, rax +000BE5EA: call __ZNSt18condition_variable17__wait_until_implINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE; std::condition_variable::__wait_until_impl>>(std::unique_lock &,std::chrono::time_point>> const&) +000BE5EF: leave +000BE5F0: retn + +### FUNC 000BE5F1 - 000BE636 (69 bytes) name=_ZNSt6chrono15time_point_castINS_8durationIlSt5ratioILl1ELl1EEEENS_3_V212system_clockENS1_IlS2_ILl1ELl1000000000EEEEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueENS_10time_pointIT0_SB_EEE4typeERKNSD_ISE_T1_EE +000BE5F1: push rbp +000BE5F2: mov rbp, rsp +000BE5F5: sub rsp, 40h +000BE5F9: mov [rbp+var_38], rdi +000BE5FD: mov rax, [rbp+var_38] +000BE601: mov rdi, rax +000BE604: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE609: mov [rbp+var_10], rax +000BE60D: lea rax, [rbp+var_10] +000BE611: mov rdi, rax +000BE614: call __ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE; std::chrono::duration_cast>,long,std::ratio<1l,1000000000l>>(std::chrono::duration> const&) +000BE619: mov [rbp+var_20], rax +000BE61D: lea rdx, [rbp+var_20] +000BE621: lea rax, [rbp+var_30] +000BE625: mov rsi, rdx +000BE628: mov rdi, rax +000BE62B: call __ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEEC1ERKS6_; std::chrono::time_point>>::time_point(std::chrono::duration> const&) +000BE630: mov rax, [rbp+var_30] +000BE634: leave +000BE635: retn + +### FUNC 000BE636 - 000BE66B (53 bytes) name=_ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1EEvEERKNS0_IT_T0_EE +000BE636: push rbp; Alternative name is 'std::chrono::duration>::duration, void>(std::chrono::duration> const&)' +000BE637: mov rbp, rsp +000BE63A: sub rsp, 20h +000BE63E: mov [rbp+var_18], rdi +000BE642: mov [rbp+var_20], rsi +000BE646: mov rax, [rbp+var_20] +000BE64A: mov rdi, rax +000BE64D: call __ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE; std::chrono::duration_cast>,long,std::ratio<1l,1l>>(std::chrono::duration> const&) +000BE652: mov [rbp+var_10], rax +000BE656: lea rax, [rbp+var_10] +000BE65A: mov rdi, rax +000BE65D: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE662: mov rdx, [rbp+var_18] +000BE666: mov [rdx], rax +000BE669: leave +000BE66A: retn + +### FUNC 000BE66B - 000BE6DD (114 bytes) name=_ZNSt6chronomiIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000BE66B: push rbp; Alternative name is 'std::common_type>, std::chrono::duration>>::type std::chrono::operator-, long, std::ratio<1l, 1l>>(std::chrono::duration> const&, std::chrono::duration> const&)' +000BE66C: mov rbp, rsp +000BE66F: push rbx +000BE670: sub rsp, 48h +000BE674: mov [rbp+var_48], rdi +000BE678: mov [rbp+var_50], rsi +000BE67C: mov rax, [rbp+var_48] +000BE680: mov rax, [rax] +000BE683: mov [rbp+var_30], rax +000BE687: lea rax, [rbp+var_30] +000BE68B: mov rdi, rax +000BE68E: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE693: mov rbx, rax +000BE696: mov rdx, [rbp+var_50] +000BE69A: lea rax, [rbp+var_20] +000BE69E: mov rsi, rdx +000BE6A1: mov rdi, rax +000BE6A4: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1EEvEERKNS0_IT_T0_EE; std::chrono::duration>::duration,void>(std::chrono::duration> const&) +000BE6A9: lea rax, [rbp+var_20] +000BE6AD: mov rdi, rax +000BE6B0: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE6B5: sub rbx, rax +000BE6B8: mov rax, rbx +000BE6BB: mov [rbp+var_38], rax +000BE6BF: lea rdx, [rbp+var_38] +000BE6C3: lea rax, [rbp+var_40] +000BE6C7: mov rsi, rdx +000BE6CA: mov rdi, rax +000BE6CD: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000BE6D2: mov rax, [rbp+var_40] +000BE6D6: add rsp, 48h +000BE6DA: pop rbx +000BE6DB: pop rbp +000BE6DC: retn + +### FUNC 000BE6DD - 000BE722 (69 bytes) name=_ZNSt6chronomiINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEENS3_IlS4_ILl1ELl1EEEEEENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_SA_EERKNSE_ISF_SB_EE +000BE6DD: push rbp; Alternative name is 'std::common_type>, std::chrono::duration>>::type std::chrono::operator->, std::chrono::duration>>(std::chrono::time_point>> const&, std::chrono::time_point>> const&)' +000BE6DE: mov rbp, rsp +000BE6E1: sub rsp, 30h +000BE6E5: mov [rbp+var_28], rdi +000BE6E9: mov [rbp+var_30], rsi +000BE6ED: mov rax, [rbp+var_30] +000BE6F1: mov rdi, rax +000BE6F4: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE6F9: mov [rbp+var_20], rax +000BE6FD: mov rax, [rbp+var_28] +000BE701: mov rdi, rax +000BE704: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE709: mov [rbp+var_10], rax +000BE70D: lea rdx, [rbp+var_20] +000BE711: lea rax, [rbp+var_10] +000BE715: mov rsi, rdx +000BE718: mov rdi, rax +000BE71B: call __ZNSt6chronomiIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_; std::chrono::operator-,long,std::ratio<1l,1l>>(std::chrono::duration> const&,std::chrono::duration> const&) +000BE720: leave +000BE721: retn + +### FUNC 000BE722 - 000BE757 (53 bytes) name=_ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1ELl1EElLb1ELb1EE6__castIlS3_EES4_RKNS1_IT_T0_EE +000BE722: push rbp +000BE723: mov rbp, rsp +000BE726: sub rsp, 20h +000BE72A: mov [rbp+var_18], rdi +000BE72E: mov rax, [rbp+var_18] +000BE732: mov rdi, rax +000BE735: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE73A: mov [rbp+var_8], rax +000BE73E: lea rdx, [rbp+var_8] +000BE742: lea rax, [rbp+var_10] +000BE746: mov rsi, rdx +000BE749: mov rdi, rax +000BE74C: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000BE751: mov rax, [rbp+var_10] +000BE755: leave +000BE756: retn + +### FUNC 000BE757 - 000BE771 (26 bytes) name=_ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS3_EENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE +000BE757: push rbp +000BE758: mov rbp, rsp +000BE75B: sub rsp, 10h +000BE75F: mov [rbp+var_8], rdi +000BE763: mov rax, [rbp+var_8] +000BE767: mov rdi, rax +000BE76A: call __ZNSt6chrono20__duration_cast_implINS_8durationIlSt5ratioILl1ELl1000000000EEEES2_ILl1ELl1EElLb1ELb1EE6__castIlS3_EES4_RKNS1_IT_T0_EE; std::chrono::__duration_cast_impl>,std::ratio<1l,1l>,long,true,true>::__cast>(std::chrono::duration> const&) +000BE76F: leave +000BE770: retn + +### FUNC 000BE771 - 000BE7B6 (69 bytes) name=_ZNSt6chronoltINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EEbRKNS_10time_pointIT_T0_EERKNS7_IS8_T1_EE +000BE771: push rbp +000BE772: mov rbp, rsp +000BE775: sub rsp, 30h +000BE779: mov [rbp+var_28], rdi +000BE77D: mov [rbp+var_30], rsi +000BE781: mov rax, [rbp+var_30] +000BE785: mov rdi, rax +000BE788: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE78D: mov [rbp+var_20], rax +000BE791: mov rax, [rbp+var_28] +000BE795: mov rdi, rax +000BE798: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE79D: mov [rbp+var_10], rax +000BE7A1: lea rdx, [rbp+var_20] +000BE7A5: lea rax, [rbp+var_10] +000BE7A9: mov rsi, rdx +000BE7AC: mov rdi, rax +000BE7AF: call __ZNSt6chronoltIlSt5ratioILl1ELl1000000000EElS2_EEbRKNS_8durationIT_T0_EERKNS3_IT1_T2_EE; std::chrono::operator<,long,std::ratio<1l,1000000000l>>(std::chrono::duration> const&,std::chrono::duration> const&) +000BE7B4: leave +000BE7B5: retn + +### FUNC 000BE7B6 - 000BE889 (211 bytes) name=_ZNSt18condition_variable17__wait_until_implINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE +000BE7B6: push rbp +000BE7B7: mov rbp, rsp +000BE7BA: add rsp, 0FFFFFFFFFFFFFF80h +000BE7BE: mov [rbp+var_68], rdi +000BE7C2: mov [rbp+var_70], rsi +000BE7C6: mov [rbp+var_78], rdx +000BE7CA: mov rax, [rbp+var_78] +000BE7CE: mov rdi, rax +000BE7D1: call __ZNSt6chrono15time_point_castINS_8durationIlSt5ratioILl1ELl1EEEENS_3_V212system_clockENS1_IlS2_ILl1ELl1000000000EEEEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueENS_10time_pointIT0_SB_EEE4typeERKNSD_ISE_T1_EE; std::chrono::time_point_cast>,std::chrono::_V2::system_clock,std::chrono::duration>>(std::chrono::time_point>> const&) +000BE7D6: mov [rbp+var_40], rax +000BE7DA: lea rdx, [rbp+var_40] +000BE7DE: mov rax, [rbp+var_78] +000BE7E2: mov rsi, rdx +000BE7E5: mov rdi, rax +000BE7E8: call __ZNSt6chronomiINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEENS3_IlS4_ILl1ELl1EEEEEENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_SA_EERKNSE_ISF_SB_EE; std::chrono::operator->,std::chrono::duration>>(std::chrono::time_point>> const&,std::chrono::time_point>> const&) +000BE7ED: mov [rbp+var_30], rax +000BE7F1: lea rax, [rbp+var_30] +000BE7F5: mov rdi, rax +000BE7F8: call __ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS3_EENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE; std::chrono::duration_cast>,long,std::ratio<1l,1000000000l>>(std::chrono::duration> const&) +000BE7FD: mov [rbp+var_50], rax +000BE801: lea rax, [rbp+var_40] +000BE805: mov rdi, rax +000BE808: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000BE80D: mov [rbp+var_20], rax +000BE811: lea rax, [rbp+var_20] +000BE815: mov rdi, rax +000BE818: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1EEE5countEv; std::chrono::duration>::count(void) +000BE81D: mov [rbp+var_60.tv_sec], rax +000BE821: lea rax, [rbp+var_50] +000BE825: mov rdi, rax +000BE828: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000BE82D: mov [rbp+var_60.tv_nsec], rax +000BE831: mov rax, [rbp+var_70] +000BE835: mov rdi, rax +000BE838: call __ZNKSt11unique_lockISt5mutexE5mutexEv; std::unique_lock::mutex(void) +000BE83D: mov rdi, rax; this +000BE840: call __ZNSt5mutex13native_handleEv; std::mutex::native_handle(void) +000BE845: mov rcx, rax +000BE848: mov rax, [rbp+var_68] +000BE84C: lea rdx, [rbp+var_60]; timespec * +000BE850: mov rsi, rcx; pthread_mutex_t * +000BE853: mov rdi, rax; this +000BE856: call _ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec; __gthread_cond_timedwait(pthread_cond_t *,pthread_mutex_t *,timespec const*) +000BE85B: call __ZNSt6chrono3_V212system_clock3nowEv; std::chrono::_V2::system_clock::now(void) +000BE860: mov [rbp+var_10], rax +000BE864: mov rdx, [rbp+var_78] +000BE868: lea rax, [rbp+var_10] +000BE86C: mov rsi, rdx +000BE86F: mov rdi, rax +000BE872: call __ZNSt6chronoltINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EEbRKNS_10time_pointIT_T0_EERKNS7_IS8_T1_EE; std::chrono::operator<>,std::chrono::duration>>(std::chrono::time_point>> const&,std::chrono::time_point>> const&) +000BE877: test al, al +000BE879: jz short loc_BE882 +000BE87B: mov eax, 0 +000BE880: jmp short locret_BE887 +000BE882: mov eax, 1 +000BE887: leave +000BE888: retn + +### FUNC 000BE88A - 000BE89B (17 bytes) name=_ZNKSt11unique_lockISt5mutexE5mutexEv +000BE88A: push rbp +000BE88B: mov rbp, rsp +000BE88E: mov [rbp+var_8], rdi +000BE892: mov rax, [rbp+var_8] +000BE896: mov rax, [rax] +000BE899: pop rbp +000BE89A: retn + +### FUNC 000BE89C - 000BE8B2 (22 bytes) name=_ZL18__gthread_active_pv_0 +000BE89C: push rbp +000BE89D: mov rbp, rsp +000BE8A0: mov rax, cs:__pthread_key_create_ptr +000BE8A7: test rax, rax +000BE8AA: setnz al +000BE8AD: movzx eax, al +000BE8B0: pop rbp +000BE8B1: retn + +### FUNC 000BE8B2 - 000BE8E1 (47 bytes) name=_ZL20__gthread_mutex_lockP15pthread_mutex_t_0 +000BE8B2: push rbp +000BE8B3: mov rbp, rsp +000BE8B6: sub rsp, 10h +000BE8BA: mov [rbp+mutex], rdi +000BE8BE: call _ZL18__gthread_active_pv_0; __gthread_active_p(void) +000BE8C3: test eax, eax +000BE8C5: setnz al +000BE8C8: test al, al +000BE8CA: jz short loc_BE8DA +000BE8CC: mov rax, [rbp+mutex] +000BE8D0: mov rdi, rax; mutex +000BE8D3: call _pthread_mutex_lock +000BE8D8: jmp short locret_BE8DF +000BE8DA: mov eax, 0 +000BE8DF: leave +000BE8E0: retn + +### FUNC 000BE8E1 - 000BE910 (47 bytes) name=_ZL22__gthread_mutex_unlockP15pthread_mutex_t_0 +000BE8E1: push rbp +000BE8E2: mov rbp, rsp +000BE8E5: sub rsp, 10h +000BE8E9: mov [rbp+mutex], rdi +000BE8ED: call _ZL18__gthread_active_pv_0; __gthread_active_p(void) +000BE8F2: test eax, eax +000BE8F4: setnz al +000BE8F7: test al, al +000BE8F9: jz short loc_BE909 +000BE8FB: mov rax, [rbp+mutex] +000BE8FF: mov rdi, rax; mutex +000BE902: call _pthread_mutex_unlock +000BE907: jmp short locret_BE90E +000BE909: mov eax, 0 +000BE90E: leave +000BE90F: retn + +### FUNC 000BE910 - 000BE93D (45 bytes) name=_ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec_0 +000BE910: push rbp +000BE911: mov rbp, rsp +000BE914: sub rsp, 20h +000BE918: mov [rbp+cond], rdi +000BE91C: mov [rbp+mutex], rsi +000BE920: mov [rbp+abstime], rdx +000BE924: mov rdx, [rbp+abstime]; abstime +000BE928: mov rcx, [rbp+mutex] +000BE92C: mov rax, [rbp+cond] +000BE930: mov rsi, rcx; mutex +000BE933: mov rdi, rax; cond +000BE936: call _pthread_cond_timedwait +000BE93B: leave +000BE93C: retn + +### FUNC 000BE93E - 000BE990 (82 bytes) name=_ZN14EloMotorDeviceC2Ev +000BE93E: push rbp; Alternative name is 'EloMotorDevice::EloMotorDevice(void)' +000BE93F: mov rbp, rsp +000BE942: sub rsp, 10h +000BE946: mov [rbp+var_8], rdi +000BE94A: mov rax, [rbp+var_8] +000BE94E: mov rdi, rax; this +000BE951: call __ZN16TCMVirtualDeviceC2Ev; TCMVirtualDevice::TCMVirtualDevice(void) +000BE956: mov rax, [rbp+var_8] +000BE95A: mov rdx, cs:_ZTV14EloMotorDevice_ptr +000BE961: lea rdx, [rdx+10h] +000BE965: mov [rax], rdx +000BE968: mov rax, [rbp+var_8] +000BE96C: mov byte ptr [rax+58h], 0 +000BE970: mov rax, [rbp+var_8] +000BE974: mov qword ptr [rax+0C8h], 0 +000BE97F: mov rax, [rbp+var_8] +000BE983: mov qword ptr [rax+0D0h], 0 +000BE98E: leave +000BE98F: retn + +### FUNC 000BE990 - 000BE9D1 (65 bytes) name=_ZN14EloMotorDeviceD2Ev +000BE990: push rbp; Alternative name is 'EloMotorDevice::~EloMotorDevice()' +000BE991: mov rbp, rsp +000BE994: sub rsp, 10h +000BE998: mov [rbp+var_8], rdi +000BE99C: mov rax, [rbp+var_8] +000BE9A0: mov rdx, cs:_ZTV14EloMotorDevice_ptr +000BE9A7: lea rdx, [rdx+10h] +000BE9AB: mov [rax], rdx +000BE9AE: mov rax, [rbp+var_8] +000BE9B2: mov rdi, rax; this +000BE9B5: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000BE9BA: mov eax, 0 +000BE9BF: test eax, eax +000BE9C1: jz short locret_BE9CF +000BE9C3: mov rax, [rbp+var_8] +000BE9C7: mov rdi, rax; void * +000BE9CA: call __ZdlPv; operator delete(void *) +000BE9CF: leave +000BE9D0: retn + +### FUNC 000BE9D2 - 000BE9F8 (38 bytes) name=_ZN14EloMotorDeviceD0Ev +000BE9D2: push rbp +000BE9D3: mov rbp, rsp +000BE9D6: sub rsp, 10h +000BE9DA: mov [rbp+var_8], rdi +000BE9DE: mov rax, [rbp+var_8] +000BE9E2: mov rdi, rax; this +000BE9E5: call __ZN14EloMotorDeviceD2Ev; EloMotorDevice::~EloMotorDevice() +000BE9EA: mov rax, [rbp+var_8] +000BE9EE: mov rdi, rax; void * +000BE9F1: call __ZdlPv; operator delete(void *) +000BE9F6: leave +000BE9F7: retn + +### FUNC 000BE9F8 - 000BEC03 (523 bytes) name=_ZN14EloMotorDevice6rotateEi +000BE9F8: push rbp +000BE9F9: mov rbp, rsp +000BE9FC: push r12 +000BE9FE: push rbx +000BE9FF: sub rsp, 60h +000BEA03: mov [rbp+var_68], rdi +000BEA07: mov [rbp+var_6C], esi +000BEA0A: cmp [rbp+var_6C], 0 +000BEA0E: jnz short loc_BEA1A +000BEA10: mov ebx, 1 +000BEA15: jmp loc_BEBBB +000BEA1A: cmp [rbp+var_6C], 0FAh +000BEA21: jle short loc_BEA2C +000BEA23: mov [rbp+var_6C], 0FAh +000BEA2A: jmp short loc_BEA3C +000BEA2C: cmp [rbp+var_6C], 0FFFFFF06h +000BEA33: jge short loc_BEA3C +000BEA35: mov [rbp+var_6C], 0FFFFFF06h +000BEA3C: lea rax, [rbp+var_50] +000BEA40: mov rdi, rax +000BEA43: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000BEA48: cmp [rbp+var_6C], 0 +000BEA4C: jns short loc_BEA82 +000BEA4E: mov [rbp+var_34], 1 +000BEA52: lea rdx, [rbp+var_34] +000BEA56: lea rax, [rbp+var_50] +000BEA5A: mov rsi, rdx +000BEA5D: mov rdi, rax +000BEA60: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000BEA65: mov eax, [rbp+var_6C] +000BEA68: neg eax +000BEA6A: mov [rbp+var_33], al +000BEA6D: lea rdx, [rbp+var_33] +000BEA71: lea rax, [rbp+var_50] +000BEA75: mov rsi, rdx +000BEA78: mov rdi, rax +000BEA7B: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000BEA80: jmp short loc_BEAB2 +000BEA82: mov [rbp+var_32], 0 +000BEA86: lea rdx, [rbp+var_32] +000BEA8A: lea rax, [rbp+var_50] +000BEA8E: mov rsi, rdx +000BEA91: mov rdi, rax +000BEA94: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000BEA99: mov eax, [rbp+var_6C] +000BEA9C: mov [rbp+var_31], al +000BEA9F: lea rdx, [rbp+var_31] +000BEAA3: lea rax, [rbp+var_50] +000BEAA7: mov rsi, rdx +000BEAAA: mov rdi, rax +000BEAAD: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000BEAB2: mov rax, [rbp+var_68] +000BEAB6: mov byte ptr [rax+58h], 0 +000BEABA: mov rax, [rbp+var_68] +000BEABE: mov rdi, rax; this +000BEAC1: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BEAC6: mov r12d, eax +000BEAC9: mov edi, 28h ; '('; unsigned __int64 +000BEACE: call __Znwm; operator new(ulong) +000BEAD3: mov rbx, rax +000BEAD6: lea rax, [rbp+var_50] +000BEADA: mov r8d, r12d +000BEADD: mov rcx, rax +000BEAE0: mov edx, 77h ; 'w' +000BEAE5: mov esi, 2 +000BEAEA: mov rdi, rbx +000BEAED: call __ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi; FTDICommand::FTDICommand(uchar,uchar,std::vector> const&,int) +000BEAF2: mov [rbp+var_18], rbx +000BEAF6: mov rax, [rbp+var_68] +000BEAFA: mov rdx, [rbp+var_18] +000BEAFE: mov rsi, rdx; FTDICommand * +000BEB01: mov rdi, rax; this +000BEB04: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BEB09: mov rax, [rbp+var_68] +000BEB0D: lea rdx, [rax+90h] +000BEB14: lea rax, [rbp+var_60] +000BEB18: mov rsi, rdx +000BEB1B: mov rdi, rax +000BEB1E: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BEB23: mov [rbp+var_20], 64h ; 'd' +000BEB2A: lea rdx, [rbp+var_20] +000BEB2E: lea rax, [rbp+var_30] +000BEB32: mov rsi, rdx +000BEB35: mov rdi, rax +000BEB38: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BEB3D: mov rax, [rbp+var_68] +000BEB41: lea rcx, [rax+60h] +000BEB45: lea rdx, [rbp+var_30] +000BEB49: lea rax, [rbp+var_60] +000BEB4D: mov rsi, rax +000BEB50: mov rdi, rcx +000BEB53: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BEB58: mov [rbp+var_1C], eax +000BEB5B: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BEB62: movzx eax, byte ptr [rax] +000BEB65: test al, al +000BEB67: jz short loc_BEB9B +000BEB69: cmp [rbp+var_1C], 1 +000BEB6D: jnz short loc_BEB7D +000BEB6F: lea rdi, aElomotordevice; "EloMotorDevice timeout" +000BEB76: call _puts +000BEB7B: jmp short loc_BEB9B +000BEB7D: mov rax, [rbp+var_68] +000BEB81: movzx eax, byte ptr [rax+58h] +000BEB85: movzx eax, al +000BEB88: mov esi, eax +000BEB8A: lea rdi, aElomotordevice_0; "EloMotorDevice:%d\n" +000BEB91: mov eax, 0 +000BEB96: call _printf +000BEB9B: mov rax, [rbp+var_68] +000BEB9F: movzx ebx, byte ptr [rax+58h] +000BEBA3: lea rax, [rbp+var_60] +000BEBA7: mov rdi, rax +000BEBAA: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BEBAF: lea rax, [rbp+var_50] +000BEBB3: mov rdi, rax +000BEBB6: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BEBBB: mov eax, ebx +000BEBBD: jmp short loc_BEBFA +000BEBBF: mov r12, rax +000BEBC2: mov rdi, rbx; void * +000BEBC5: call __ZdlPv; operator delete(void *) +000BEBCA: mov rbx, r12 +000BEBCD: jmp short loc_BEBE3 +000BEBCF: mov rbx, rax +000BEBD2: lea rax, [rbp+var_60] +000BEBD6: mov rdi, rax +000BEBD9: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BEBDE: jmp short loc_BEBE3 +000BEBE0: mov rbx, rax +000BEBE3: lea rax, [rbp+var_50] +000BEBE7: mov rdi, rax +000BEBEA: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BEBEF: mov rax, rbx +000BEBF2: mov rdi, rax; struct _Unwind_Exception * +000BEBF5: call __Unwind_Resume +000BEBFA: add rsp, 60h +000BEBFE: pop rbx +000BEBFF: pop r12 +000BEC01: pop rbp +000BEC02: retn + +### FUNC 000BEC04 - 000BEC21 (29 bytes) name=_ZN14EloMotorDevice21setLimitEventListenerEP11ILimitEvent +000BEC04: push rbp +000BEC05: mov rbp, rsp +000BEC08: mov [rbp+var_8], rdi +000BEC0C: mov [rbp+var_10], rsi +000BEC10: mov rax, [rbp+var_8] +000BEC14: mov rdx, [rbp+var_10] +000BEC18: mov [rax+0C8h], rdx +000BEC1F: pop rbp +000BEC20: retn + +### FUNC 000BEC22 - 000BEC3F (29 bytes) name=_ZN14EloMotorDevice20setMotorDoneListenerEP10IMotorDone +000BEC22: push rbp +000BEC23: mov rbp, rsp +000BEC26: mov [rbp+var_8], rdi +000BEC2A: mov [rbp+var_10], rsi +000BEC2E: mov rax, [rbp+var_8] +000BEC32: mov rdx, [rbp+var_10] +000BEC36: mov [rax+0D0h], rdx +000BEC3D: pop rbp +000BEC3E: retn + +### FUNC 000BEC40 - 000BEDAC (364 bytes) name=_ZN14EloMotorDevice10limitResetEv +000BEC40: push rbp +000BEC41: mov rbp, rsp +000BEC44: push r12 +000BEC46: push rbx +000BEC47: sub rsp, 60h +000BEC4B: mov [rbp+var_68], rdi +000BEC4F: lea rax, [rbp+var_50] +000BEC53: mov rdi, rax +000BEC56: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000BEC5B: mov rax, [rbp+var_68] +000BEC5F: mov byte ptr [rax+58h], 0 +000BEC63: mov rax, [rbp+var_68] +000BEC67: mov rdi, rax; this +000BEC6A: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BEC6F: mov r12d, eax +000BEC72: mov edi, 28h ; '('; unsigned __int64 +000BEC77: call __Znwm; operator new(ulong) +000BEC7C: mov rbx, rax +000BEC7F: lea rax, [rbp+var_50] +000BEC83: mov r8d, r12d +000BEC86: mov rcx, rax +000BEC89: mov edx, 76h ; 'v' +000BEC8E: mov esi, 2 +000BEC93: mov rdi, rbx +000BEC96: call __ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi; FTDICommand::FTDICommand(uchar,uchar,std::vector> const&,int) +000BEC9B: mov [rbp+var_18], rbx +000BEC9F: mov rax, [rbp+var_68] +000BECA3: mov rdx, [rbp+var_18] +000BECA7: mov rsi, rdx; FTDICommand * +000BECAA: mov rdi, rax; this +000BECAD: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BECB2: mov rax, [rbp+var_68] +000BECB6: lea rdx, [rax+90h] +000BECBD: lea rax, [rbp+var_60] +000BECC1: mov rsi, rdx +000BECC4: mov rdi, rax +000BECC7: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BECCC: mov [rbp+var_20], 3E8h +000BECD3: lea rdx, [rbp+var_20] +000BECD7: lea rax, [rbp+var_30] +000BECDB: mov rsi, rdx +000BECDE: mov rdi, rax +000BECE1: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BECE6: mov rax, [rbp+var_68] +000BECEA: lea rcx, [rax+60h] +000BECEE: lea rdx, [rbp+var_30] +000BECF2: lea rax, [rbp+var_60] +000BECF6: mov rsi, rax +000BECF9: mov rdi, rcx +000BECFC: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BED01: mov [rbp+var_1C], eax +000BED04: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BED0B: movzx eax, byte ptr [rax] +000BED0E: test al, al +000BED10: jz short loc_BED44 +000BED12: cmp [rbp+var_1C], 1 +000BED16: jnz short loc_BED26 +000BED18: lea rdi, aElomotordevice; "EloMotorDevice timeout" +000BED1F: call _puts +000BED24: jmp short loc_BED44 +000BED26: mov rax, [rbp+var_68] +000BED2A: movzx eax, byte ptr [rax+58h] +000BED2E: movzx eax, al +000BED31: mov esi, eax +000BED33: lea rdi, aElomotordevice_0; "EloMotorDevice:%d\n" +000BED3A: mov eax, 0 +000BED3F: call _printf +000BED44: mov rax, [rbp+var_68] +000BED48: movzx ebx, byte ptr [rax+58h] +000BED4C: lea rax, [rbp+var_60] +000BED50: mov rdi, rax +000BED53: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BED58: lea rax, [rbp+var_50] +000BED5C: mov rdi, rax +000BED5F: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BED64: mov eax, ebx +000BED66: jmp short loc_BEDA3 +000BED68: mov r12, rax +000BED6B: mov rdi, rbx; void * +000BED6E: call __ZdlPv; operator delete(void *) +000BED73: mov rbx, r12 +000BED76: jmp short loc_BED8C +000BED78: mov rbx, rax +000BED7B: lea rax, [rbp+var_60] +000BED7F: mov rdi, rax +000BED82: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BED87: jmp short loc_BED8C +000BED89: mov rbx, rax +000BED8C: lea rax, [rbp+var_50] +000BED90: mov rdi, rax +000BED93: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BED98: mov rax, rbx +000BED9B: mov rdi, rax; struct _Unwind_Exception * +000BED9E: call __Unwind_Resume +000BEDA3: add rsp, 60h +000BEDA7: pop rbx +000BEDA8: pop r12 +000BEDAA: pop rbp +000BEDAB: retn + +### FUNC 000BEDAC - 000BEDFF (83 bytes) name=_ZN14EloMotorDevice20canHandleFTDICommandEhh +000BEDAC: push rbp +000BEDAD: mov rbp, rsp +000BEDB0: mov [rbp+var_8], rdi +000BEDB4: mov ecx, esi +000BEDB6: mov eax, edx +000BEDB8: mov [rbp+var_C], cl +000BEDBB: mov [rbp+var_10], al +000BEDBE: cmp [rbp+var_C], 2 +000BEDC2: jnz short loc_BEDF8 +000BEDC4: cmp [rbp+var_10], 77h ; 'w' +000BEDC8: jnz short loc_BEDD1 +000BEDCA: mov eax, 1 +000BEDCF: jmp short loc_BEDFD +000BEDD1: cmp [rbp+var_10], 76h ; 'v' +000BEDD5: jnz short loc_BEDDE +000BEDD7: mov eax, 1 +000BEDDC: jmp short loc_BEDFD +000BEDDE: cmp [rbp+var_10], 75h ; 'u' +000BEDE2: jnz short loc_BEDEB +000BEDE4: mov eax, 1 +000BEDE9: jmp short loc_BEDFD +000BEDEB: cmp [rbp+var_10], 74h ; 't' +000BEDEF: jnz short loc_BEDF8 +000BEDF1: mov eax, 1 +000BEDF6: jmp short loc_BEDFD +000BEDF8: mov eax, 0 +000BEDFD: pop rbp +000BEDFE: retn + +### FUNC 000BEE00 - 000BEFC0 (448 bytes) name=_ZN14EloMotorDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000BEE00: push rbp +000BEE01: mov rbp, rsp +000BEE04: push rbx +000BEE05: sub rsp, 28h +000BEE09: mov [rbp+var_28], rdi +000BEE0D: mov [rbp+var_30], rsi +000BEE11: mov rax, [rbp+var_30] +000BEE15: mov esi, 4 +000BEE1A: mov rdi, rax +000BEE1D: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEE22: movzx eax, byte ptr [rax] +000BEE25: mov [rbp+var_11], al +000BEE28: mov rax, [rbp+var_30] +000BEE2C: mov esi, 5 +000BEE31: mov rdi, rax +000BEE34: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEE39: movzx eax, byte ptr [rax] +000BEE3C: mov [rbp+var_12], al +000BEE3F: mov rax, [rbp+var_30] +000BEE43: mov esi, 6 +000BEE48: mov rdi, rax +000BEE4B: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEE50: movzx eax, byte ptr [rax] +000BEE53: movzx eax, al +000BEE56: shl eax, 8 +000BEE59: mov ebx, eax +000BEE5B: mov rax, [rbp+var_30] +000BEE5F: mov esi, 7 +000BEE64: mov rdi, rax +000BEE67: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEE6C: movzx eax, byte ptr [rax] +000BEE6F: movzx eax, al +000BEE72: or eax, ebx +000BEE74: mov [rbp+var_18], eax +000BEE77: cmp [rbp+var_11], 2 +000BEE7B: jnz loc_BEFB9 +000BEE81: cmp [rbp+var_12], 77h ; 'w' +000BEE85: jnz short loc_BEEBC +000BEE87: mov rax, [rbp+var_30] +000BEE8B: mov esi, 8 +000BEE90: mov rdi, rax +000BEE93: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEE98: movzx eax, byte ptr [rax] +000BEE9B: cmp al, 1 +000BEE9D: setz dl +000BEEA0: mov rax, [rbp+var_28] +000BEEA4: mov [rax+58h], dl +000BEEA7: mov rax, [rbp+var_28] +000BEEAB: add rax, 60h ; '`' +000BEEAF: mov rdi, rax; this +000BEEB2: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000BEEB7: jmp loc_BEFB9 +000BEEBC: cmp [rbp+var_12], 76h ; 'v' +000BEEC0: jnz short loc_BEEF7 +000BEEC2: mov rax, [rbp+var_30] +000BEEC6: mov esi, 8 +000BEECB: mov rdi, rax +000BEECE: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEED3: movzx eax, byte ptr [rax] +000BEED6: cmp al, 1 +000BEED8: setz dl +000BEEDB: mov rax, [rbp+var_28] +000BEEDF: mov [rax+58h], dl +000BEEE2: mov rax, [rbp+var_28] +000BEEE6: add rax, 60h ; '`' +000BEEEA: mov rdi, rax; this +000BEEED: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000BEEF2: jmp loc_BEFB9 +000BEEF7: cmp [rbp+var_12], 75h ; 'u' +000BEEFB: jnz short loc_BEF6A +000BEEFD: mov rax, [rbp+var_30] +000BEF01: mov esi, 8 +000BEF06: mov rdi, rax +000BEF09: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BEF0E: movzx eax, byte ptr [rax] +000BEF11: test al, al +000BEF13: setz al +000BEF16: mov [rbp+var_19], al +000BEF19: mov rax, [rbp+var_28] +000BEF1D: mov byte ptr [rax+58h], 1 +000BEF21: mov rax, [rbp+var_28] +000BEF25: add rax, 60h ; '`' +000BEF29: mov rdi, rax; this +000BEF2C: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000BEF31: mov rax, [rbp+var_28] +000BEF35: mov rax, [rax+0C8h] +000BEF3C: test rax, rax +000BEF3F: jz short loc_BEF68 +000BEF41: mov rax, [rbp+var_28] +000BEF45: mov rax, [rax+0C8h] +000BEF4C: mov rax, [rax] +000BEF4F: mov rax, [rax] +000BEF52: movzx ecx, [rbp+var_19] +000BEF56: mov rdx, [rbp+var_28] +000BEF5A: mov rdx, [rdx+0C8h] +000BEF61: mov esi, ecx +000BEF63: mov rdi, rdx +000BEF66: call rax +000BEF68: jmp short loc_BEFB9 +000BEF6A: cmp [rbp+var_12], 74h ; 't' +000BEF6E: jnz short loc_BEFB9 +000BEF70: mov rax, [rbp+var_28] +000BEF74: mov byte ptr [rax+58h], 1 +000BEF78: mov rax, [rbp+var_28] +000BEF7C: add rax, 60h ; '`' +000BEF80: mov rdi, rax; this +000BEF83: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000BEF88: mov rax, [rbp+var_28] +000BEF8C: mov rax, [rax+0D0h] +000BEF93: test rax, rax +000BEF96: jz short loc_BEFB9 +000BEF98: mov rax, [rbp+var_28] +000BEF9C: mov rax, [rax+0D0h] +000BEFA3: mov rax, [rax] +000BEFA6: mov rax, [rax] +000BEFA9: mov rdx, [rbp+var_28] +000BEFAD: mov rdx, [rdx+0D0h] +000BEFB4: mov rdi, rdx +000BEFB7: call rax +000BEFB9: add rsp, 28h +000BEFBD: pop rbx +000BEFBE: pop rbp +000BEFBF: retn + +### FUNC 000BEFC0 - 000BF003 (67 bytes) name=_ZN18EloProximityDeviceC2Ev +000BEFC0: push rbp; Alternative name is 'EloProximityDevice::EloProximityDevice(void)' +000BEFC1: mov rbp, rsp +000BEFC4: sub rsp, 10h +000BEFC8: mov [rbp+var_8], rdi +000BEFCC: mov rax, [rbp+var_8] +000BEFD0: mov rdi, rax; this +000BEFD3: call __ZN16TCMVirtualDeviceC2Ev; TCMVirtualDevice::TCMVirtualDevice(void) +000BEFD8: mov rax, [rbp+var_8] +000BEFDC: mov rdx, cs:_ZTV18EloProximityDevice_ptr +000BEFE3: lea rdx, [rdx+10h] +000BEFE7: mov [rax], rdx +000BEFEA: mov rax, [rbp+var_8] +000BEFEE: mov byte ptr [rax+58h], 0 +000BEFF2: mov rax, [rbp+var_8] +000BEFF6: mov qword ptr [rax+0C8h], 0 +000BF001: leave +000BF002: retn + +### FUNC 000BF004 - 000BF045 (65 bytes) name=_ZN18EloProximityDeviceD2Ev +000BF004: push rbp; Alternative name is 'EloProximityDevice::~EloProximityDevice()' +000BF005: mov rbp, rsp +000BF008: sub rsp, 10h +000BF00C: mov [rbp+var_8], rdi +000BF010: mov rax, [rbp+var_8] +000BF014: mov rdx, cs:_ZTV18EloProximityDevice_ptr +000BF01B: lea rdx, [rdx+10h] +000BF01F: mov [rax], rdx +000BF022: mov rax, [rbp+var_8] +000BF026: mov rdi, rax; this +000BF029: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000BF02E: mov eax, 0 +000BF033: test eax, eax +000BF035: jz short locret_BF043 +000BF037: mov rax, [rbp+var_8] +000BF03B: mov rdi, rax; void * +000BF03E: call __ZdlPv; operator delete(void *) +000BF043: leave +000BF044: retn + +### FUNC 000BF046 - 000BF06C (38 bytes) name=_ZN18EloProximityDeviceD0Ev +000BF046: push rbp +000BF047: mov rbp, rsp +000BF04A: sub rsp, 10h +000BF04E: mov [rbp+var_8], rdi +000BF052: mov rax, [rbp+var_8] +000BF056: mov rdi, rax; this +000BF059: call __ZN18EloProximityDeviceD2Ev; EloProximityDevice::~EloProximityDevice() +000BF05E: mov rax, [rbp+var_8] +000BF062: mov rdi, rax; void * +000BF065: call __ZdlPv; operator delete(void *) +000BF06A: leave +000BF06B: retn + +### FUNC 000BF06C - 000BF089 (29 bytes) name=_ZN18EloProximityDevice20setProximityDelegateEP18IProximityDelegate +000BF06C: push rbp +000BF06D: mov rbp, rsp +000BF070: mov [rbp+var_8], rdi +000BF074: mov [rbp+var_10], rsi +000BF078: mov rax, [rbp+var_8] +000BF07C: mov rdx, [rbp+var_10] +000BF080: mov [rax+0C8h], rdx +000BF087: pop rbp +000BF088: retn + +### FUNC 000BF08A - 000BF0B6 (44 bytes) name=_ZN18EloProximityDevice20canHandleFTDICommandEhh +000BF08A: push rbp +000BF08B: mov rbp, rsp +000BF08E: mov [rbp+var_8], rdi +000BF092: mov ecx, esi +000BF094: mov eax, edx +000BF096: mov [rbp+var_C], cl +000BF099: mov [rbp+var_10], al +000BF09C: cmp [rbp+var_C], 2 +000BF0A0: jnz short loc_BF0AF +000BF0A2: cmp [rbp+var_10], 78h ; 'x' +000BF0A6: jnz short loc_BF0AF +000BF0A8: mov eax, 1 +000BF0AD: jmp short loc_BF0B4 +000BF0AF: mov eax, 0 +000BF0B4: pop rbp +000BF0B5: retn + +### FUNC 000BF0B6 - 000BF290 (474 bytes) name=_ZN18EloProximityDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000BF0B6: push rbp +000BF0B7: mov rbp, rsp +000BF0BA: push rbx +000BF0BB: sub rsp, 28h +000BF0BF: mov [rbp+var_28], rdi +000BF0C3: mov [rbp+var_30], rsi +000BF0C7: mov rax, [rbp+var_30] +000BF0CB: mov esi, 4 +000BF0D0: mov rdi, rax +000BF0D3: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF0D8: movzx eax, byte ptr [rax] +000BF0DB: mov [rbp+var_11], al +000BF0DE: mov rax, [rbp+var_30] +000BF0E2: mov esi, 5 +000BF0E7: mov rdi, rax +000BF0EA: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF0EF: movzx eax, byte ptr [rax] +000BF0F2: mov [rbp+var_12], al +000BF0F5: mov rax, [rbp+var_30] +000BF0F9: mov esi, 6 +000BF0FE: mov rdi, rax +000BF101: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF106: movzx eax, byte ptr [rax] +000BF109: movzx eax, al +000BF10C: shl eax, 8 +000BF10F: mov ebx, eax +000BF111: mov rax, [rbp+var_30] +000BF115: mov esi, 7 +000BF11A: mov rdi, rax +000BF11D: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF122: movzx eax, byte ptr [rax] +000BF125: movzx eax, al +000BF128: or eax, ebx +000BF12A: mov [rbp+var_18], eax +000BF12D: cmp [rbp+var_11], 2 +000BF131: jnz loc_BF289 +000BF137: cmp [rbp+var_12], 78h ; 'x' +000BF13B: jnz loc_BF289 +000BF141: mov [rbp+var_1C], 0FFFFFFFFh +000BF148: mov rax, [rbp+var_30] +000BF14C: mov esi, 8 +000BF151: mov rdi, rax +000BF154: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF159: movzx eax, byte ptr [rax] +000BF15C: test al, al +000BF15E: setz al +000BF161: test al, al +000BF163: jz short loc_BF1A4 +000BF165: mov rax, [rbp+var_28] +000BF169: mov rax, [rax+0C8h] +000BF170: test rax, rax +000BF173: jz loc_BF289 +000BF179: mov rax, [rbp+var_28] +000BF17D: mov rax, [rax+0C8h] +000BF184: mov rax, [rax] +000BF187: mov rax, [rax] +000BF18A: mov rdx, [rbp+var_28] +000BF18E: mov rdx, [rdx+0C8h] +000BF195: mov esi, 0FFFFFFFFh +000BF19A: mov rdi, rdx +000BF19D: call rax +000BF19F: jmp loc_BF289 +000BF1A4: mov rax, [rbp+var_30] +000BF1A8: mov esi, 8 +000BF1AD: mov rdi, rax +000BF1B0: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF1B5: movzx eax, byte ptr [rax] +000BF1B8: cmp al, 1 +000BF1BA: setz al +000BF1BD: test al, al +000BF1BF: jz short loc_BF237 +000BF1C1: mov [rbp+var_1C], 0 +000BF1C8: mov rax, [rbp+var_30] +000BF1CC: mov esi, 9 +000BF1D1: mov rdi, rax +000BF1D4: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF1D9: movzx eax, byte ptr [rax] +000BF1DC: movzx eax, al +000BF1DF: shl eax, 8 +000BF1E2: or [rbp+var_1C], eax +000BF1E5: mov rax, [rbp+var_30] +000BF1E9: mov esi, 0Ah +000BF1EE: mov rdi, rax +000BF1F1: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF1F6: movzx eax, byte ptr [rax] +000BF1F9: movzx eax, al +000BF1FC: or [rbp+var_1C], eax +000BF1FF: mov rax, [rbp+var_28] +000BF203: mov rax, [rax+0C8h] +000BF20A: test rax, rax +000BF20D: jz short loc_BF289 +000BF20F: mov rax, [rbp+var_28] +000BF213: mov rax, [rax+0C8h] +000BF21A: mov rax, [rax] +000BF21D: mov rax, [rax] +000BF220: mov rdx, [rbp+var_28] +000BF224: mov rdx, [rdx+0C8h] +000BF22B: mov ecx, [rbp+var_1C] +000BF22E: mov esi, ecx +000BF230: mov rdi, rdx +000BF233: call rax +000BF235: jmp short loc_BF289 +000BF237: mov rax, [rbp+var_30] +000BF23B: mov esi, 8 +000BF240: mov rdi, rax +000BF243: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000BF248: movzx eax, byte ptr [rax] +000BF24B: cmp al, 2 +000BF24D: setz al +000BF250: test al, al +000BF252: jz short loc_BF289 +000BF254: mov rax, [rbp+var_28] +000BF258: mov rax, [rax+0C8h] +000BF25F: test rax, rax +000BF262: jz short loc_BF289 +000BF264: mov rax, [rbp+var_28] +000BF268: mov rax, [rax+0C8h] +000BF26F: mov rax, [rax] +000BF272: add rax, 8 +000BF276: mov rax, [rax] +000BF279: mov rdx, [rbp+var_28] +000BF27D: mov rdx, [rdx+0C8h] +000BF284: mov rdi, rdx +000BF287: call rax +000BF289: add rsp, 28h +000BF28D: pop rbx +000BF28E: pop rbp +000BF28F: retn + +### FUNC 000BF290 - 000BF2A6 (22 bytes) name=_ZL18__gthread_active_pv_1 +000BF290: push rbp +000BF291: mov rbp, rsp +000BF294: mov rax, cs:__pthread_key_create_ptr +000BF29B: test rax, rax +000BF29E: setnz al +000BF2A1: movzx eax, al +000BF2A4: pop rbp +000BF2A5: retn + +### FUNC 000BF2A6 - 000BF2CB (37 bytes) name=_ZL15__gthread_equalmm +000BF2A6: push rbp +000BF2A7: mov rbp, rsp +000BF2AA: sub rsp, 10h +000BF2AE: mov [rbp+thread1], rdi +000BF2B2: mov [rbp+thread2], rsi +000BF2B6: mov rdx, [rbp+thread2] +000BF2BA: mov rax, [rbp+thread1] +000BF2BE: mov rsi, rdx; thread2 +000BF2C1: mov rdi, rax; thread1 +000BF2C4: call _pthread_equal +000BF2C9: leave +000BF2CA: retn + +### FUNC 000BF2CB - 000BF2FA (47 bytes) name=_ZL20__gthread_mutex_lockP15pthread_mutex_t_1 +000BF2CB: push rbp +000BF2CC: mov rbp, rsp +000BF2CF: sub rsp, 10h +000BF2D3: mov [rbp+mutex], rdi +000BF2D7: call _ZL18__gthread_active_pv_1; __gthread_active_p(void) +000BF2DC: test eax, eax +000BF2DE: setnz al +000BF2E1: test al, al +000BF2E3: jz short loc_BF2F3 +000BF2E5: mov rax, [rbp+mutex] +000BF2E9: mov rdi, rax; mutex +000BF2EC: call _pthread_mutex_lock +000BF2F1: jmp short locret_BF2F8 +000BF2F3: mov eax, 0 +000BF2F8: leave +000BF2F9: retn + +### FUNC 000BF2FA - 000BF329 (47 bytes) name=_ZL22__gthread_mutex_unlockP15pthread_mutex_t_1 +000BF2FA: push rbp +000BF2FB: mov rbp, rsp +000BF2FE: sub rsp, 10h +000BF302: mov [rbp+mutex], rdi +000BF306: call _ZL18__gthread_active_pv_1; __gthread_active_p(void) +000BF30B: test eax, eax +000BF30D: setnz al +000BF310: test al, al +000BF312: jz short loc_BF322 +000BF314: mov rax, [rbp+mutex] +000BF318: mov rdi, rax; mutex +000BF31B: call _pthread_mutex_unlock +000BF320: jmp short locret_BF327 +000BF322: mov eax, 0 +000BF327: leave +000BF328: retn + +### FUNC 000BF329 - 000BF356 (45 bytes) name=_ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec_1 +000BF329: push rbp +000BF32A: mov rbp, rsp +000BF32D: sub rsp, 20h +000BF331: mov [rbp+cond], rdi +000BF335: mov [rbp+mutex], rsi +000BF339: mov [rbp+abstime], rdx +000BF33D: mov rdx, [rbp+abstime]; abstime +000BF341: mov rcx, [rbp+mutex] +000BF345: mov rax, [rbp+cond] +000BF349: mov rsi, rcx; mutex +000BF34C: mov rdi, rax; cond +000BF34F: call _pthread_cond_timedwait +000BF354: leave +000BF355: retn + +### FUNC 000BF356 - 000BF370 (26 bytes) name=_ZN9__gnu_cxxL18__exchange_and_addEPVii +000BF356: push rbp +000BF357: mov rbp, rsp +000BF35A: mov [rbp+var_8], rdi +000BF35E: mov [rbp+var_C], esi +000BF361: mov edx, [rbp+var_C] +000BF364: mov rax, [rbp+var_8] +000BF368: lock xadd [rax], edx +000BF36C: mov eax, edx +000BF36E: pop rbp +000BF36F: retn + +### FUNC 000BF370 - 000BF39A (42 bytes) name=_ZN9__gnu_cxxL25__exchange_and_add_singleEPii +000BF370: push rbp +000BF371: mov rbp, rsp +000BF374: mov [rbp+var_18], rdi +000BF378: mov [rbp+var_1C], esi +000BF37B: mov rax, [rbp+var_18] +000BF37F: mov eax, [rax] +000BF381: mov [rbp+var_4], eax +000BF384: mov rax, [rbp+var_18] +000BF388: mov edx, [rax] +000BF38A: mov eax, [rbp+var_1C] +000BF38D: add edx, eax +000BF38F: mov rax, [rbp+var_18] +000BF393: mov [rax], edx +000BF395: mov eax, [rbp+var_4] +000BF398: pop rbp +000BF399: retn + +### FUNC 000BF39A - 000BF3DD (67 bytes) name=_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii +000BF39A: push rbp +000BF39B: mov rbp, rsp +000BF39E: sub rsp, 10h +000BF3A2: mov [rbp+var_8], rdi +000BF3A6: mov [rbp+var_C], esi +000BF3A9: call _ZL18__gthread_active_pv_1; __gthread_active_p(void) +000BF3AE: test eax, eax +000BF3B0: setnz al +000BF3B3: test al, al +000BF3B5: jz short loc_BF3CA +000BF3B7: mov edx, [rbp+var_C] +000BF3BA: mov rax, [rbp+var_8] +000BF3BE: mov esi, edx; int +000BF3C0: mov rdi, rax; volatile int * +000BF3C3: call _ZN9__gnu_cxxL18__exchange_and_addEPVii; __gnu_cxx::__exchange_and_add(int volatile*,int) +000BF3C8: jmp short locret_BF3DB +000BF3CA: mov edx, [rbp+var_C] +000BF3CD: mov rax, [rbp+var_8] +000BF3D1: mov esi, edx; int +000BF3D3: mov rdi, rax; int * +000BF3D6: call _ZN9__gnu_cxxL25__exchange_and_add_singleEPii; __gnu_cxx::__exchange_and_add_single(int *,int) +000BF3DB: leave +000BF3DC: retn + +### FUNC 000BF3DE - 000BF488 (170 bytes) name=_ZN19EloTCMUpdaterDeviceC2Ev +000BF3DE: push rbp; Alternative name is 'EloTCMUpdaterDevice::EloTCMUpdaterDevice(void)' +000BF3DF: mov rbp, rsp +000BF3E2: push rbx +000BF3E3: sub rsp, 18h +000BF3E7: mov [rbp+var_18], rdi +000BF3EB: mov rax, [rbp+var_18] +000BF3EF: mov rdi, rax; this +000BF3F2: call __ZN16TCMVirtualDeviceC2Ev; TCMVirtualDevice::TCMVirtualDevice(void) +000BF3F7: mov rax, [rbp+var_18] +000BF3FB: mov rdx, cs:_ZTV19EloTCMUpdaterDevice_ptr +000BF402: lea rdx, [rdx+10h] +000BF406: mov [rax], rdx +000BF409: mov rax, [rbp+var_18] +000BF40D: add rax, 0D0h +000BF413: mov rdi, rax; this +000BF416: call __ZNSsC1Ev; std::string::string(void) +000BF41B: mov rax, [rbp+var_18] +000BF41F: add rax, 0D8h +000BF425: mov rdi, rax +000BF428: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000BF42D: mov rax, [rbp+var_18] +000BF431: add rax, 0F0h +000BF437: mov rdi, rax; this +000BF43A: call __ZNSt6threadC2Ev; std::thread::thread(void) +000BF43F: mov rax, [rbp+var_18] +000BF443: mov qword ptr [rax+0C8h], 0 +000BF44E: jmp short loc_BF481 +000BF450: mov rbx, rax +000BF453: mov rax, [rbp+var_18] +000BF457: add rax, 0D0h +000BF45D: mov rdi, rax; this +000BF460: call __ZNSsD1Ev; std::string::~string() +000BF465: jmp short loc_BF46A +000BF467: mov rbx, rax +000BF46A: mov rax, [rbp+var_18] +000BF46E: mov rdi, rax; this +000BF471: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000BF476: mov rax, rbx +000BF479: mov rdi, rax; struct _Unwind_Exception * +000BF47C: call __Unwind_Resume +000BF481: add rsp, 18h +000BF485: pop rbx +000BF486: pop rbp +000BF487: retn + +### FUNC 000BF488 - 000BF4FF (119 bytes) name=_ZN19EloTCMUpdaterDeviceD2Ev +000BF488: push rbp; Alternative name is 'EloTCMUpdaterDevice::~EloTCMUpdaterDevice()' +000BF489: mov rbp, rsp +000BF48C: sub rsp, 10h +000BF490: mov [rbp+var_8], rdi +000BF494: mov rax, [rbp+var_8] +000BF498: mov rdx, cs:_ZTV19EloTCMUpdaterDevice_ptr +000BF49F: lea rdx, [rdx+10h] +000BF4A3: mov [rax], rdx +000BF4A6: mov rax, [rbp+var_8] +000BF4AA: add rax, 0F0h +000BF4B0: mov rdi, rax; this +000BF4B3: call __ZNSt6threadD2Ev; std::thread::~thread() +000BF4B8: mov rax, [rbp+var_8] +000BF4BC: add rax, 0D8h +000BF4C2: mov rdi, rax +000BF4C5: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BF4CA: mov rax, [rbp+var_8] +000BF4CE: add rax, 0D0h +000BF4D4: mov rdi, rax; this +000BF4D7: call __ZNSsD1Ev; std::string::~string() +000BF4DC: mov rax, [rbp+var_8] +000BF4E0: mov rdi, rax; this +000BF4E3: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000BF4E8: mov eax, 0 +000BF4ED: test eax, eax +000BF4EF: jz short locret_BF4FD +000BF4F1: mov rax, [rbp+var_8] +000BF4F5: mov rdi, rax; void * +000BF4F8: call __ZdlPv; operator delete(void *) +000BF4FD: leave +000BF4FE: retn + +### FUNC 000BF500 - 000BF526 (38 bytes) name=_ZN19EloTCMUpdaterDeviceD0Ev +000BF500: push rbp +000BF501: mov rbp, rsp +000BF504: sub rsp, 10h +000BF508: mov [rbp+var_8], rdi +000BF50C: mov rax, [rbp+var_8] +000BF510: mov rdi, rax; this +000BF513: call __ZN19EloTCMUpdaterDeviceD2Ev; EloTCMUpdaterDevice::~EloTCMUpdaterDevice() +000BF518: mov rax, [rbp+var_8] +000BF51C: mov rdi, rax; void * +000BF51F: call __ZdlPv; operator delete(void *) +000BF524: leave +000BF525: retn + +### FUNC 000BF526 - 000BF552 (44 bytes) name=_ZN19EloTCMUpdaterDevice11setFirmDataERKSt6vectorIhSaIhEE +000BF526: push rbp +000BF527: mov rbp, rsp +000BF52A: sub rsp, 10h +000BF52E: mov [rbp+var_8], rdi +000BF532: mov [rbp+var_10], rsi +000BF536: mov rax, [rbp+var_8] +000BF53A: lea rdx, [rax+0D8h] +000BF541: mov rax, [rbp+var_10] +000BF545: mov rsi, rax +000BF548: mov rdi, rdx +000BF54B: call __ZNSt6vectorIhSaIhEEaSERKS1_; std::vector>::operator=(std::vector> const&) +000BF550: leave +000BF551: retn + +### FUNC 000BF552 - 000BF6D2 (384 bytes) name=_ZN19EloTCMUpdaterDevice10askVersionEv +000BF552: push rbp +000BF553: mov rbp, rsp +000BF556: push r12 +000BF558: push rbx +000BF559: sub rsp, 40h +000BF55D: mov [rbp+var_48], rdi +000BF561: mov [rbp+var_50], rsi +000BF565: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BF56C: movzx eax, byte ptr [rax] +000BF56F: test al, al +000BF571: jz short loc_BF57F +000BF573: lea rdi, aAskversion; "askVersion" +000BF57A: call _puts +000BF57F: mov rax, [rbp+var_50] +000BF583: add rax, 0D0h +000BF589: lea rsi, unk_D4179 +000BF590: mov rdi, rax +000BF593: call __ZNSsaSEPKc; std::string::operator=(char const*) +000BF598: mov rax, [rbp+var_50] +000BF59C: mov rdi, rax; this +000BF59F: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BF5A4: mov r12d, eax +000BF5A7: mov edi, 28h ; '('; unsigned __int64 +000BF5AC: call __Znwm; operator new(ulong) +000BF5B1: mov rbx, rax +000BF5B4: mov ecx, r12d; int +000BF5B7: mov edx, 4; unsigned __int8 +000BF5BC: mov esi, 2; unsigned __int8 +000BF5C1: mov rdi, rbx; this +000BF5C4: call __ZN11FTDICommandC2Ehhi; FTDICommand::FTDICommand(uchar,uchar,int) +000BF5C9: mov [rbp+var_18], rbx +000BF5CD: mov rax, [rbp+var_50] +000BF5D1: mov rdx, [rbp+var_18] +000BF5D5: mov rsi, rdx; FTDICommand * +000BF5D8: mov rdi, rax; this +000BF5DB: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BF5E0: mov rax, [rbp+var_50] +000BF5E4: lea rdx, [rax+90h] +000BF5EB: lea rax, [rbp+var_40] +000BF5EF: mov rsi, rdx +000BF5F2: mov rdi, rax +000BF5F5: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BF5FA: mov [rbp+var_20], 0C8h +000BF601: lea rdx, [rbp+var_20] +000BF605: lea rax, [rbp+var_30] +000BF609: mov rsi, rdx +000BF60C: mov rdi, rax +000BF60F: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BF614: mov rax, [rbp+var_50] +000BF618: lea rcx, [rax+60h] +000BF61C: lea rdx, [rbp+var_30] +000BF620: lea rax, [rbp+var_40] +000BF624: mov rsi, rax +000BF627: mov rdi, rcx +000BF62A: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BF62F: mov [rbp+var_1C], eax +000BF632: cmp [rbp+var_1C], 1 +000BF636: jnz short loc_BF646 +000BF638: lea rdi, aAskversionTime; "askVersion timeout" +000BF63F: call _puts +000BF644: jmp short loc_BF66C +000BF646: mov rax, [rbp+var_50] +000BF64A: add rax, 0D0h +000BF650: mov rdi, rax; this +000BF653: call __ZNKSs4dataEv; std::string::data(void) +000BF658: mov rsi, rax +000BF65B: lea rdi, aAskversionS; "askVersion:%s\n" +000BF662: mov eax, 0 +000BF667: call _printf +000BF66C: mov rax, [rbp+var_50] +000BF670: lea rdx, [rax+0D0h] +000BF677: mov rax, [rbp+var_48] +000BF67B: mov rsi, rdx; std::string * +000BF67E: mov rdi, rax; this +000BF681: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000BF686: nop +000BF687: lea rax, [rbp+var_40] +000BF68B: mov rdi, rax +000BF68E: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BF693: jmp short loc_BF6C5 +000BF695: mov r12, rax +000BF698: mov rdi, rbx; void * +000BF69B: call __ZdlPv; operator delete(void *) +000BF6A0: mov rax, r12 +000BF6A3: mov rdi, rax; struct _Unwind_Exception * +000BF6A6: call __Unwind_Resume +000BF6AB: mov rbx, rax +000BF6AE: lea rax, [rbp+var_40] +000BF6B2: mov rdi, rax +000BF6B5: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BF6BA: mov rax, rbx +000BF6BD: mov rdi, rax; struct _Unwind_Exception * +000BF6C0: call __Unwind_Resume +000BF6C5: mov rax, [rbp+var_48] +000BF6C9: add rsp, 40h +000BF6CD: pop rbx +000BF6CE: pop r12 +000BF6D0: pop rbp +000BF6D1: retn + +### FUNC 000BF6D2 - 000BF74E (124 bytes) name=_ZN19EloTCMUpdaterDevice11startUpdateEv +000BF6D2: push rbp +000BF6D3: mov rbp, rsp +000BF6D6: sub rsp, 30h +000BF6DA: mov [rbp+var_28], rdi +000BF6DE: mov rcx, [rbp+var_28] +000BF6E2: mov [rbp+var_18], rcx +000BF6E6: mov rcx, cs:_ZN19EloTCMUpdaterDevice8doUpdateEv_ptr +000BF6ED: mov rax, rcx +000BF6F0: mov edx, 0 +000BF6F5: mov [rbp+var_10], rax +000BF6F9: mov [rbp+var_8], rdx +000BF6FD: lea rdx, [rbp+var_18] +000BF701: lea rcx, [rbp+var_10] +000BF705: lea rax, [rbp+var_20] +000BF709: mov rsi, rcx +000BF70C: mov rdi, rax +000BF70F: call __ZNSt6threadC2IM19EloTCMUpdaterDeviceFbvEJKPS1_EEEOT_DpOT0_; std::thread::thread(bool (EloTCMUpdaterDevice::*)(void) &&,EloTCMUpdaterDevice* const &&) +000BF714: mov rax, [rbp+var_28] +000BF718: lea rdx, [rax+0F0h] +000BF71F: lea rax, [rbp+var_20] +000BF723: mov rsi, rax +000BF726: mov rdi, rdx +000BF729: call __ZNSt6threadaSEOS_; std::thread::operator=(std::thread&&) +000BF72E: lea rax, [rbp+var_20] +000BF732: mov rdi, rax; this +000BF735: call __ZNSt6threadD2Ev; std::thread::~thread() +000BF73A: mov rax, [rbp+var_28] +000BF73E: add rax, 0F0h +000BF744: mov rdi, rax; this +000BF747: call __ZNSt6thread6detachEv; std::thread::detach(void) +000BF74C: leave +000BF74D: retn + +### FUNC 000BF74E - 000BFAA1 (851 bytes) name=_ZN19EloTCMUpdaterDevice8doUpdateEv +000BF74E: push rbp +000BF74F: mov rbp, rsp +000BF752: push r12 +000BF754: push rbx +000BF755: sub rsp, 90h +000BF75C: mov [rbp+var_98], rdi +000BF763: mov rax, [rbp+var_98] +000BF76A: add rax, 0D8h +000BF770: mov rdi, rax +000BF773: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000BF778: test rax, rax +000BF77B: setz al +000BF77E: test al, al +000BF780: jz short loc_BF7A5 +000BF782: mov rax, [rbp+var_98] +000BF789: mov edx, 0; int +000BF78E: mov esi, 0; bool +000BF793: mov rdi, rax; this +000BF796: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BF79B: mov ebx, 0 +000BF7A0: jmp loc_BFA63 +000BF7A5: mov [rbp+var_19], 0 +000BF7A9: mov rax, [rbp+var_98] +000BF7B0: mov rdi, rax; this +000BF7B3: call __ZN19EloTCMUpdaterDevice11beginUpdateEv; EloTCMUpdaterDevice::beginUpdate(void) +000BF7B8: mov [rbp+var_19], al +000BF7BB: movzx eax, [rbp+var_19] +000BF7BF: xor eax, 1 +000BF7C2: test al, al +000BF7C4: jz short loc_BF7F5 +000BF7C6: lea rdi, aBeginupdateFai; "beginUpdate fail" +000BF7CD: call _puts +000BF7D2: mov rax, [rbp+var_98] +000BF7D9: mov edx, 1; int +000BF7DE: mov esi, 0; bool +000BF7E3: mov rdi, rax; this +000BF7E6: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BF7EB: mov ebx, 0 +000BF7F0: jmp loc_BFA63 +000BF7F5: mov rax, [rbp+var_98] +000BF7FC: mov edx, 1; int +000BF801: mov esi, 1; bool +000BF806: mov rdi, rax; this +000BF809: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BF80E: mov rax, [rbp+var_98] +000BF815: add rax, 0D8h +000BF81B: mov rdi, rax +000BF81E: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000BF823: add rax, 7Fh +000BF827: shr rax, 7 +000BF82B: mov [rbp+var_20], eax +000BF82E: mov [rbp+var_14], 0 +000BF835: jmp loc_BF9F0 +000BF83A: mov rax, [rbp+var_98] +000BF841: add rax, 0D8h +000BF847: mov rdi, rax +000BF84A: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000BF84F: mov edx, eax +000BF851: mov ecx, [rbp+var_14] +000BF854: mov eax, 0 +000BF859: sub eax, ecx +000BF85B: shl eax, 7 +000BF85E: add eax, edx +000BF860: mov [rbp+var_18], eax +000BF863: cmp [rbp+var_18], 80h +000BF86A: jle short loc_BF873 +000BF86C: mov [rbp+var_18], 80h +000BF873: lea rax, [rbp+var_90] +000BF87A: mov rdi, rax +000BF87D: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000BF882: mov eax, [rbp+var_18] +000BF885: cdqe +000BF887: mov [rbp+var_78], rax +000BF88B: mov eax, [rbp+var_14] +000BF88E: shl eax, 7 +000BF891: cdqe +000BF893: mov [rbp+var_68], rax +000BF897: mov rax, [rbp+var_98] +000BF89E: add rax, 0D8h +000BF8A4: mov rdi, rax +000BF8A7: call __ZNSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000BF8AC: mov [rbp+var_60], rax +000BF8B0: lea rdx, [rbp+var_68] +000BF8B4: lea rax, [rbp+var_60] +000BF8B8: mov rsi, rdx +000BF8BB: mov rdi, rax +000BF8BE: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl; __gnu_cxx::__normal_iterator>>::operator+(long const&) +000BF8C3: mov [rbp+var_70], rax +000BF8C7: lea rdx, [rbp+var_78] +000BF8CB: lea rax, [rbp+var_70] +000BF8CF: mov rsi, rdx +000BF8D2: mov rdi, rax +000BF8D5: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl; __gnu_cxx::__normal_iterator>>::operator+(long const&) +000BF8DA: mov r12, rax +000BF8DD: mov eax, [rbp+var_14] +000BF8E0: shl eax, 7 +000BF8E3: cdqe +000BF8E5: mov [rbp+var_58], rax +000BF8E9: mov rax, [rbp+var_98] +000BF8F0: add rax, 0D8h +000BF8F6: mov rdi, rax +000BF8F9: call __ZNSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000BF8FE: mov [rbp+var_50], rax +000BF902: lea rdx, [rbp+var_58] +000BF906: lea rax, [rbp+var_50] +000BF90A: mov rsi, rdx +000BF90D: mov rdi, rax +000BF910: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl; __gnu_cxx::__normal_iterator>>::operator+(long const&) +000BF915: mov rcx, rax +000BF918: lea rax, [rbp+var_90] +000BF91F: mov rdx, r12 +000BF922: mov rsi, rcx +000BF925: mov rdi, rax +000BF928: call __ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPhS1_EEvEEvT_S7_; std::vector>::assign<__gnu_cxx::__normal_iterator>>,void>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000BF92D: lea rdx, [rbp+var_90] +000BF934: lea rax, [rbp+var_40] +000BF938: mov rsi, rdx +000BF93B: mov rdi, rax +000BF93E: call __ZNSt6vectorIhSaIhEEC2ERKS1__0; std::vector>::vector(std::vector> const&) +000BF943: mov edx, [rbp+var_14] +000BF946: lea rcx, [rbp+var_40] +000BF94A: mov rax, [rbp+var_98] +000BF951: mov rsi, rcx +000BF954: mov rdi, rax +000BF957: call __ZN19EloTCMUpdaterDevice12transmitDataESt6vectorIhSaIhEEi; EloTCMUpdaterDevice::transmitData(std::vector>,int) +000BF95C: mov [rbp+var_19], al +000BF95F: lea rax, [rbp+var_40] +000BF963: mov rdi, rax +000BF966: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BF96B: mov eax, [rbp+var_14] +000BF96E: add eax, 1 +000BF971: imul eax, 62h ; 'b' +000BF974: cdq +000BF975: idiv [rbp+var_20] +000BF978: add eax, 1 +000BF97B: mov [rbp+var_24], eax +000BF97E: movzx eax, [rbp+var_19] +000BF982: xor eax, 1 +000BF985: test al, al +000BF987: jz short loc_BF9B9 +000BF989: lea rdi, aTransmitdataFa; "transmitData fail" +000BF990: call _puts +000BF995: mov edx, [rbp+var_24]; int +000BF998: mov rax, [rbp+var_98] +000BF99F: mov esi, 0; bool +000BF9A4: mov rdi, rax; this +000BF9A7: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BF9AC: mov ebx, 0 +000BF9B1: mov r12d, 0 +000BF9B7: jmp short loc_BF9D6 +000BF9B9: mov edx, [rbp+var_24]; int +000BF9BC: mov rax, [rbp+var_98] +000BF9C3: mov esi, 1; bool +000BF9C8: mov rdi, rax; this +000BF9CB: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BF9D0: mov r12d, 1 +000BF9D6: lea rax, [rbp+var_90] +000BF9DD: mov rdi, rax +000BF9E0: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BF9E5: cmp r12d, 1 +000BF9E9: jnz short loc_BFA63 +000BF9EB: nop +000BF9EC: add [rbp+var_14], 1 +000BF9F0: mov eax, [rbp+var_14] +000BF9F3: cmp eax, [rbp+var_20] +000BF9F6: jl loc_BF83A +000BF9FC: mov rax, [rbp+var_98] +000BFA03: mov rdi, rax; this +000BFA06: call __ZN19EloTCMUpdaterDevice14completeUpdateEv; EloTCMUpdaterDevice::completeUpdate(void) +000BFA0B: mov [rbp+var_19], al +000BFA0E: movzx eax, [rbp+var_19] +000BFA12: xor eax, 1 +000BFA15: test al, al +000BFA17: jz short loc_BFA45 +000BFA19: lea rdi, aCompleteupdate; "completeUpdate fail" +000BFA20: call _puts +000BFA25: mov rax, [rbp+var_98] +000BFA2C: mov edx, 63h ; 'c'; int +000BFA31: mov esi, 0; bool +000BFA36: mov rdi, rax; this +000BFA39: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BFA3E: mov ebx, 0 +000BFA43: jmp short loc_BFA63 +000BFA45: mov rax, [rbp+var_98] +000BFA4C: mov edx, 64h ; 'd'; int +000BFA51: mov esi, 1; bool +000BFA56: mov rdi, rax; this +000BFA59: call __ZN19EloTCMUpdaterDevice14updateProgressEbi; EloTCMUpdaterDevice::updateProgress(bool,int) +000BFA5E: mov ebx, 1 +000BFA63: mov eax, ebx +000BFA65: jmp short loc_BFA95 +000BFA67: mov rbx, rax +000BFA6A: lea rax, [rbp+var_40] +000BFA6E: mov rdi, rax +000BFA71: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BFA76: jmp short loc_BFA7B +000BFA78: mov rbx, rax +000BFA7B: lea rax, [rbp+var_90] +000BFA82: mov rdi, rax +000BFA85: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000BFA8A: mov rax, rbx +000BFA8D: mov rdi, rax; struct _Unwind_Exception * +000BFA90: call __Unwind_Resume +000BFA95: add rsp, 90h +000BFA9C: pop rbx +000BFA9D: pop r12 +000BFA9F: pop rbp +000BFAA0: retn + +### FUNC 000BFAA2 - 000BFBF0 (334 bytes) name=_ZN19EloTCMUpdaterDevice11beginUpdateEv +000BFAA2: push rbp +000BFAA3: mov rbp, rsp +000BFAA6: push r12 +000BFAA8: push rbx +000BFAA9: sub rsp, 40h +000BFAAD: mov [rbp+var_48], rdi +000BFAB1: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BFAB8: movzx eax, byte ptr [rax] +000BFABB: test al, al +000BFABD: jz short loc_BFACB +000BFABF: lea rdi, aBeginupdate; "beginUpdate" +000BFAC6: call _puts +000BFACB: mov rax, [rbp+var_48] +000BFACF: mov byte ptr [rax+58h], 0 +000BFAD3: mov rax, [rbp+var_48] +000BFAD7: mov rdi, rax; this +000BFADA: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BFADF: mov r12d, eax +000BFAE2: mov edi, 28h ; '('; unsigned __int64 +000BFAE7: call __Znwm; operator new(ulong) +000BFAEC: mov rbx, rax +000BFAEF: mov ecx, r12d; int +000BFAF2: mov edx, 5; unsigned __int8 +000BFAF7: mov esi, 2; unsigned __int8 +000BFAFC: mov rdi, rbx; this +000BFAFF: call __ZN11FTDICommandC2Ehhi; FTDICommand::FTDICommand(uchar,uchar,int) +000BFB04: mov [rbp+var_18], rbx +000BFB08: mov rax, [rbp+var_48] +000BFB0C: mov rdx, [rbp+var_18] +000BFB10: mov rsi, rdx; FTDICommand * +000BFB13: mov rdi, rax; this +000BFB16: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BFB1B: mov rax, [rbp+var_48] +000BFB1F: lea rdx, [rax+90h] +000BFB26: lea rax, [rbp+var_40] +000BFB2A: mov rsi, rdx +000BFB2D: mov rdi, rax +000BFB30: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BFB35: mov [rbp+var_20], 0BB8h +000BFB3C: lea rdx, [rbp+var_20] +000BFB40: lea rax, [rbp+var_30] +000BFB44: mov rsi, rdx +000BFB47: mov rdi, rax +000BFB4A: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BFB4F: mov rax, [rbp+var_48] +000BFB53: lea rcx, [rax+60h] +000BFB57: lea rdx, [rbp+var_30] +000BFB5B: lea rax, [rbp+var_40] +000BFB5F: mov rsi, rax +000BFB62: mov rdi, rcx +000BFB65: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BFB6A: mov [rbp+var_1C], eax +000BFB6D: cmp [rbp+var_1C], 1 +000BFB71: jnz short loc_BFB81 +000BFB73: lea rdi, aBeginupdateTim; "beginUpdate timeout" +000BFB7A: call _puts +000BFB7F: jmp short loc_BFB9F +000BFB81: mov rax, [rbp+var_48] +000BFB85: movzx eax, byte ptr [rax+58h] +000BFB89: movzx eax, al +000BFB8C: mov esi, eax +000BFB8E: lea rdi, aBeginupdateD; "beginUpdate:%d\n" +000BFB95: mov eax, 0 +000BFB9A: call _printf +000BFB9F: mov rax, [rbp+var_48] +000BFBA3: movzx ebx, byte ptr [rax+58h] +000BFBA7: lea rax, [rbp+var_40] +000BFBAB: mov rdi, rax +000BFBAE: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFBB3: mov eax, ebx +000BFBB5: jmp short loc_BFBE7 +000BFBB7: mov r12, rax +000BFBBA: mov rdi, rbx; void * +000BFBBD: call __ZdlPv; operator delete(void *) +000BFBC2: mov rax, r12 +000BFBC5: mov rdi, rax; struct _Unwind_Exception * +000BFBC8: call __Unwind_Resume +000BFBCD: mov rbx, rax +000BFBD0: lea rax, [rbp+var_40] +000BFBD4: mov rdi, rax +000BFBD7: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFBDC: mov rax, rbx +000BFBDF: mov rdi, rax; struct _Unwind_Exception * +000BFBE2: call __Unwind_Resume +000BFBE7: add rsp, 40h +000BFBEB: pop rbx +000BFBEC: pop r12 +000BFBEE: pop rbp +000BFBEF: retn + +### FUNC 000BFBF0 - 000BFD3E (334 bytes) name=_ZN19EloTCMUpdaterDevice14completeUpdateEv +000BFBF0: push rbp +000BFBF1: mov rbp, rsp +000BFBF4: push r12 +000BFBF6: push rbx +000BFBF7: sub rsp, 40h +000BFBFB: mov [rbp+var_48], rdi +000BFBFF: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BFC06: movzx eax, byte ptr [rax] +000BFC09: test al, al +000BFC0B: jz short loc_BFC19 +000BFC0D: lea rdi, aCompleteupdate_0; "completeUpdate" +000BFC14: call _puts +000BFC19: mov rax, [rbp+var_48] +000BFC1D: mov byte ptr [rax+58h], 0 +000BFC21: mov rax, [rbp+var_48] +000BFC25: mov rdi, rax; this +000BFC28: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BFC2D: mov r12d, eax +000BFC30: mov edi, 28h ; '('; unsigned __int64 +000BFC35: call __Znwm; operator new(ulong) +000BFC3A: mov rbx, rax +000BFC3D: mov ecx, r12d; int +000BFC40: mov edx, 6; unsigned __int8 +000BFC45: mov esi, 2; unsigned __int8 +000BFC4A: mov rdi, rbx; this +000BFC4D: call __ZN11FTDICommandC2Ehhi; FTDICommand::FTDICommand(uchar,uchar,int) +000BFC52: mov [rbp+var_18], rbx +000BFC56: mov rax, [rbp+var_48] +000BFC5A: mov rdx, [rbp+var_18] +000BFC5E: mov rsi, rdx; FTDICommand * +000BFC61: mov rdi, rax; this +000BFC64: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BFC69: mov rax, [rbp+var_48] +000BFC6D: lea rdx, [rax+90h] +000BFC74: lea rax, [rbp+var_40] +000BFC78: mov rsi, rdx +000BFC7B: mov rdi, rax +000BFC7E: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BFC83: mov [rbp+var_20], 3A98h +000BFC8A: lea rdx, [rbp+var_20] +000BFC8E: lea rax, [rbp+var_30] +000BFC92: mov rsi, rdx +000BFC95: mov rdi, rax +000BFC98: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BFC9D: mov rax, [rbp+var_48] +000BFCA1: lea rcx, [rax+60h] +000BFCA5: lea rdx, [rbp+var_30] +000BFCA9: lea rax, [rbp+var_40] +000BFCAD: mov rsi, rax +000BFCB0: mov rdi, rcx +000BFCB3: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BFCB8: mov [rbp+var_1C], eax +000BFCBB: cmp [rbp+var_1C], 1 +000BFCBF: jnz short loc_BFCCF +000BFCC1: lea rdi, aCompleteupdate_1; "completeUpdate timeout" +000BFCC8: call _puts +000BFCCD: jmp short loc_BFCED +000BFCCF: mov rax, [rbp+var_48] +000BFCD3: movzx eax, byte ptr [rax+58h] +000BFCD7: movzx eax, al +000BFCDA: mov esi, eax +000BFCDC: lea rdi, aCompleteupdate_2; "completeUpdate:%d\n" +000BFCE3: mov eax, 0 +000BFCE8: call _printf +000BFCED: mov rax, [rbp+var_48] +000BFCF1: movzx ebx, byte ptr [rax+58h] +000BFCF5: lea rax, [rbp+var_40] +000BFCF9: mov rdi, rax +000BFCFC: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFD01: mov eax, ebx +000BFD03: jmp short loc_BFD35 +000BFD05: mov r12, rax +000BFD08: mov rdi, rbx; void * +000BFD0B: call __ZdlPv; operator delete(void *) +000BFD10: mov rax, r12 +000BFD13: mov rdi, rax; struct _Unwind_Exception * +000BFD16: call __Unwind_Resume +000BFD1B: mov rbx, rax +000BFD1E: lea rax, [rbp+var_40] +000BFD22: mov rdi, rax +000BFD25: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFD2A: mov rax, rbx +000BFD2D: mov rdi, rax; struct _Unwind_Exception * +000BFD30: call __Unwind_Resume +000BFD35: add rsp, 40h +000BFD39: pop rbx +000BFD3A: pop r12 +000BFD3C: pop rbp +000BFD3D: retn + +### FUNC 000BFD3E - 000BFE9E (352 bytes) name=_ZN19EloTCMUpdaterDevice12transmitDataESt6vectorIhSaIhEEi +000BFD3E: push rbp +000BFD3F: mov rbp, rsp +000BFD42: push r12 +000BFD44: push rbx +000BFD45: sub rsp, 50h +000BFD49: mov [rbp+var_48], rdi +000BFD4D: mov [rbp+var_50], rsi +000BFD51: mov [rbp+var_54], edx +000BFD54: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000BFD5B: movzx eax, byte ptr [rax] +000BFD5E: test al, al +000BFD60: jz short loc_BFD78 +000BFD62: mov eax, [rbp+var_54] +000BFD65: mov esi, eax +000BFD67: lea rdi, aTransmitdataD; "transmitData %d\n" +000BFD6E: mov eax, 0 +000BFD73: call _printf +000BFD78: mov rax, [rbp+var_48] +000BFD7C: mov byte ptr [rax+58h], 0 +000BFD80: mov edi, 28h ; '('; unsigned __int64 +000BFD85: call __Znwm; operator new(ulong) +000BFD8A: mov rbx, rax +000BFD8D: mov eax, [rbp+var_54] +000BFD90: lea edx, [rax+8001h] +000BFD96: mov rax, [rbp+var_50] +000BFD9A: mov r8d, edx +000BFD9D: mov rcx, rax +000BFDA0: mov edx, 7 +000BFDA5: mov esi, 2 +000BFDAA: mov rdi, rbx +000BFDAD: call __ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi; FTDICommand::FTDICommand(uchar,uchar,std::vector> const&,int) +000BFDB2: mov [rbp+var_18], rbx +000BFDB6: mov rax, [rbp+var_48] +000BFDBA: mov rdx, [rbp+var_18] +000BFDBE: mov rsi, rdx; FTDICommand * +000BFDC1: mov rdi, rax; this +000BFDC4: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BFDC9: mov rax, [rbp+var_48] +000BFDCD: lea rdx, [rax+90h] +000BFDD4: lea rax, [rbp+var_40] +000BFDD8: mov rsi, rdx +000BFDDB: mov rdi, rax +000BFDDE: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BFDE3: mov [rbp+var_20], 1F4h +000BFDEA: lea rdx, [rbp+var_20] +000BFDEE: lea rax, [rbp+var_30] +000BFDF2: mov rsi, rdx +000BFDF5: mov rdi, rax +000BFDF8: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BFDFD: mov rax, [rbp+var_48] +000BFE01: lea rcx, [rax+60h] +000BFE05: lea rdx, [rbp+var_30] +000BFE09: lea rax, [rbp+var_40] +000BFE0D: mov rsi, rax +000BFE10: mov rdi, rcx +000BFE13: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BFE18: mov [rbp+var_1C], eax +000BFE1B: cmp [rbp+var_1C], 1 +000BFE1F: jnz short loc_BFE2F +000BFE21: lea rdi, aTransmitdataTi; "transmitData timeout" +000BFE28: call _puts +000BFE2D: jmp short loc_BFE4D +000BFE2F: mov rax, [rbp+var_48] +000BFE33: movzx eax, byte ptr [rax+58h] +000BFE37: movzx eax, al +000BFE3A: mov esi, eax +000BFE3C: lea rdi, aTransmitdataD_0; "transmitData:%d\n" +000BFE43: mov eax, 0 +000BFE48: call _printf +000BFE4D: mov rax, [rbp+var_48] +000BFE51: movzx ebx, byte ptr [rax+58h] +000BFE55: lea rax, [rbp+var_40] +000BFE59: mov rdi, rax +000BFE5C: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFE61: mov eax, ebx +000BFE63: jmp short loc_BFE95 +000BFE65: mov r12, rax +000BFE68: mov rdi, rbx; void * +000BFE6B: call __ZdlPv; operator delete(void *) +000BFE70: mov rax, r12 +000BFE73: mov rdi, rax; struct _Unwind_Exception * +000BFE76: call __Unwind_Resume +000BFE7B: mov rbx, rax +000BFE7E: lea rax, [rbp+var_40] +000BFE82: mov rdi, rax +000BFE85: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFE8A: mov rax, rbx +000BFE8D: mov rdi, rax; struct _Unwind_Exception * +000BFE90: call __Unwind_Resume +000BFE95: add rsp, 50h +000BFE99: pop rbx +000BFE9A: pop r12 +000BFE9C: pop rbp +000BFE9D: retn + +### FUNC 000BFE9E - 000BFFD2 (308 bytes) name=_ZN19EloTCMUpdaterDevice9softResetEv +000BFE9E: push rbp +000BFE9F: mov rbp, rsp +000BFEA2: push r12 +000BFEA4: push rbx +000BFEA5: sub rsp, 40h +000BFEA9: mov [rbp+var_48], rdi +000BFEAD: mov rax, [rbp+var_48] +000BFEB1: mov byte ptr [rax+58h], 0 +000BFEB5: mov rax, [rbp+var_48] +000BFEB9: mov rdi, rax; this +000BFEBC: call __ZN16TCMVirtualDevice8getFrameEv; TCMVirtualDevice::getFrame(void) +000BFEC1: mov r12d, eax +000BFEC4: mov edi, 28h ; '('; unsigned __int64 +000BFEC9: call __Znwm; operator new(ulong) +000BFECE: mov rbx, rax +000BFED1: mov ecx, r12d; int +000BFED4: mov edx, 12h; unsigned __int8 +000BFED9: mov esi, 2; unsigned __int8 +000BFEDE: mov rdi, rbx; this +000BFEE1: call __ZN11FTDICommandC2Ehhi; FTDICommand::FTDICommand(uchar,uchar,int) +000BFEE6: mov [rbp+var_18], rbx +000BFEEA: mov rax, [rbp+var_48] +000BFEEE: mov rdx, [rbp+var_18] +000BFEF2: mov rsi, rdx; FTDICommand * +000BFEF5: mov rdi, rax; this +000BFEF8: call __ZN16TCMVirtualDevice8sendDataEP11FTDICommand; TCMVirtualDevice::sendData(FTDICommand *) +000BFEFD: mov rax, [rbp+var_48] +000BFF01: lea rdx, [rax+90h] +000BFF08: lea rax, [rbp+var_40] +000BFF0C: mov rsi, rdx +000BFF0F: mov rdi, rax +000BFF12: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000BFF17: mov [rbp+var_20], 1F4h +000BFF1E: lea rdx, [rbp+var_20] +000BFF22: lea rax, [rbp+var_30] +000BFF26: mov rsi, rdx +000BFF29: mov rdi, rax +000BFF2C: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000BFF31: mov rax, [rbp+var_48] +000BFF35: lea rcx, [rax+60h] +000BFF39: lea rdx, [rbp+var_30] +000BFF3D: lea rax, [rbp+var_40] +000BFF41: mov rsi, rax +000BFF44: mov rdi, rcx +000BFF47: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1000EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000BFF4C: mov [rbp+var_1C], eax +000BFF4F: cmp [rbp+var_1C], 1 +000BFF53: jnz short loc_BFF63 +000BFF55: lea rdi, aSoftresetTimeo; "softReset timeout" +000BFF5C: call _puts +000BFF61: jmp short loc_BFF81 +000BFF63: mov rax, [rbp+var_48] +000BFF67: movzx eax, byte ptr [rax+58h] +000BFF6B: movzx eax, al +000BFF6E: mov esi, eax +000BFF70: lea rdi, aSoftresetD; "softReset:%d\n" +000BFF77: mov eax, 0 +000BFF7C: call _printf +000BFF81: mov rax, [rbp+var_48] +000BFF85: movzx ebx, byte ptr [rax+58h] +000BFF89: lea rax, [rbp+var_40] +000BFF8D: mov rdi, rax +000BFF90: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFF95: mov eax, ebx +000BFF97: jmp short loc_BFFC9 +000BFF99: mov r12, rax +000BFF9C: mov rdi, rbx; void * +000BFF9F: call __ZdlPv; operator delete(void *) +000BFFA4: mov rax, r12 +000BFFA7: mov rdi, rax; struct _Unwind_Exception * +000BFFAA: call __Unwind_Resume +000BFFAF: mov rbx, rax +000BFFB2: lea rax, [rbp+var_40] +000BFFB6: mov rdi, rax +000BFFB9: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000BFFBE: mov rax, rbx +000BFFC1: mov rdi, rax; struct _Unwind_Exception * +000BFFC4: call __Unwind_Resume +000BFFC9: add rsp, 40h +000BFFCD: pop rbx +000BFFCE: pop r12 +000BFFD0: pop rbp +000BFFD1: retn + +### FUNC 000BFFD2 - 000C005F (141 bytes) name=_ZN19EloTCMUpdaterDevice20canHandleFTDICommandEhh +000BFFD2: push rbp +000BFFD3: mov rbp, rsp +000BFFD6: mov [rbp+var_8], rdi +000BFFDA: mov ecx, esi +000BFFDC: mov eax, edx +000BFFDE: mov [rbp+var_C], cl +000BFFE1: mov [rbp+var_10], al +000BFFE4: cmp [rbp+var_C], 2 +000BFFE8: jnz short loc_C002B +000BFFEA: cmp [rbp+var_10], 4 +000BFFEE: jnz short loc_BFFF7 +000BFFF0: mov eax, 1 +000BFFF5: jmp short loc_C005D +000BFFF7: cmp [rbp+var_10], 5 +000BFFFB: jnz short loc_C0004 +000BFFFD: mov eax, 1 +000C0002: jmp short loc_C005D +000C0004: cmp [rbp+var_10], 6 +000C0008: jnz short loc_C0011 +000C000A: mov eax, 1 +000C000F: jmp short loc_C005D +000C0011: cmp [rbp+var_10], 7 +000C0015: jnz short loc_C001E +000C0017: mov eax, 1 +000C001C: jmp short loc_C005D +000C001E: cmp [rbp+var_10], 12h +000C0022: jnz short loc_C0058 +000C0024: mov eax, 1 +000C0029: jmp short loc_C005D +000C002B: cmp [rbp+var_C], 81h +000C002F: jnz short loc_C0058 +000C0031: cmp [rbp+var_10], 0Ah +000C0035: jnz short loc_C003E +000C0037: mov eax, 1 +000C003C: jmp short loc_C005D +000C003E: cmp [rbp+var_10], 0Bh +000C0042: jnz short loc_C004B +000C0044: mov eax, 1 +000C0049: jmp short loc_C005D +000C004B: cmp [rbp+var_10], 0Ch +000C004F: jnz short loc_C0058 +000C0051: mov eax, 1 +000C0056: jmp short loc_C005D +000C0058: mov eax, 0 +000C005D: pop rbp +000C005E: retn + +### FUNC 000C0060 - 000C03EC (908 bytes) name=_ZN19EloTCMUpdaterDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000C0060: push rbp +000C0061: mov rbp, rsp +000C0064: push rbx +000C0065: sub rsp, 98h +000C006C: mov [rbp+var_98], rdi +000C0073: mov [rbp+var_A0], rsi +000C007A: mov rax, [rbp+var_A0] +000C0081: mov esi, 4 +000C0086: mov rdi, rax +000C0089: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C008E: movzx eax, byte ptr [rax] +000C0091: mov [rbp+var_11], al +000C0094: mov rax, [rbp+var_A0] +000C009B: mov esi, 5 +000C00A0: mov rdi, rax +000C00A3: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C00A8: movzx eax, byte ptr [rax] +000C00AB: mov [rbp+var_12], al +000C00AE: mov rax, [rbp+var_A0] +000C00B5: mov esi, 6 +000C00BA: mov rdi, rax +000C00BD: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C00C2: movzx eax, byte ptr [rax] +000C00C5: movzx eax, al +000C00C8: shl eax, 8 +000C00CB: mov ebx, eax +000C00CD: mov rax, [rbp+var_A0] +000C00D4: mov esi, 7 +000C00D9: mov rdi, rax +000C00DC: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C00E1: movzx eax, byte ptr [rax] +000C00E4: movzx eax, al +000C00E7: or eax, ebx +000C00E9: mov [rbp+var_18], eax +000C00EC: cmp [rbp+var_11], 2 +000C00F0: jnz loc_C02E4 +000C00F6: cmp [rbp+var_12], 4 +000C00FA: jnz loc_C01F5 +000C0100: mov rdx, [rbp+var_A0] +000C0107: lea rax, [rbp+var_90] +000C010E: mov rsi, rdx +000C0111: mov rdi, rax +000C0114: call __ZN11FTDICommandC2ERKSt6vectorIhSaIhEE; FTDICommand::FTDICommand(std::vector> const&) +000C0119: lea rax, [rbp+var_40] +000C011D: lea rdx, [rbp+var_90] +000C0124: mov rsi, rdx +000C0127: mov rdi, rax; this +000C012A: call __ZN11FTDICommand8getExtraEv; FTDICommand::getExtra(void) +000C012F: mov rax, [rbp+var_98] +000C0136: add rax, 0D0h +000C013C: mov rdi, rax; this +000C013F: call __ZNSs5clearEv; std::string::clear(void) +000C0144: lea rax, [rbp+var_40] +000C0148: mov [rbp+var_20], rax +000C014C: mov rax, [rbp+var_20] +000C0150: mov rdi, rax +000C0153: call __ZNSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000C0158: mov [rbp+var_50], rax +000C015C: mov rax, [rbp+var_20] +000C0160: mov rdi, rax +000C0163: call __ZNSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +000C0168: mov [rbp+var_60], rax +000C016C: jmp short loc_C01AB +000C016E: lea rax, [rbp+var_50] +000C0172: mov rdi, rax +000C0175: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000C017A: movzx eax, byte ptr [rax] +000C017D: mov [rbp+var_21], al +000C0180: movzx eax, [rbp+var_21] +000C0184: movsx eax, al +000C0187: mov rdx, [rbp+var_98] +000C018E: add rdx, 0D0h +000C0195: mov esi, eax; char +000C0197: mov rdi, rdx; this +000C019A: call __ZNSs9push_backEc; std::string::push_back(char) +000C019F: lea rax, [rbp+var_50] +000C01A3: mov rdi, rax +000C01A6: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000C01AB: lea rdx, [rbp+var_60] +000C01AF: lea rax, [rbp+var_50] +000C01B3: mov rsi, rdx +000C01B6: mov rdi, rax +000C01B9: call __ZN9__gnu_cxxneIPhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESA_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C01BE: test al, al +000C01C0: jnz short loc_C016E +000C01C2: mov rax, [rbp+var_98] +000C01C9: add rax, 60h ; '`' +000C01CD: mov rdi, rax; this +000C01D0: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C01D5: lea rax, [rbp+var_40] +000C01D9: mov rdi, rax +000C01DC: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C01E1: lea rax, [rbp+var_90] +000C01E8: mov rdi, rax; this +000C01EB: call __ZN11FTDICommandD2Ev; FTDICommand::~FTDICommand() +000C01F0: jmp loc_C02DF +000C01F5: cmp [rbp+var_12], 5 +000C01F9: jnz short loc_C0239 +000C01FB: mov rax, [rbp+var_A0] +000C0202: mov esi, 8 +000C0207: mov rdi, rax +000C020A: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C020F: movzx eax, byte ptr [rax] +000C0212: cmp al, 1 +000C0214: setz dl +000C0217: mov rax, [rbp+var_98] +000C021E: mov [rax+58h], dl +000C0221: mov rax, [rbp+var_98] +000C0228: add rax, 60h ; '`' +000C022C: mov rdi, rax; this +000C022F: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C0234: jmp loc_C02DF +000C0239: cmp [rbp+var_12], 6 +000C023D: jnz short loc_C027A +000C023F: mov rax, [rbp+var_A0] +000C0246: mov esi, 8 +000C024B: mov rdi, rax +000C024E: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C0253: movzx eax, byte ptr [rax] +000C0256: cmp al, 1 +000C0258: setz dl +000C025B: mov rax, [rbp+var_98] +000C0262: mov [rax+58h], dl +000C0265: mov rax, [rbp+var_98] +000C026C: add rax, 60h ; '`' +000C0270: mov rdi, rax; this +000C0273: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C0278: jmp short loc_C02DF +000C027A: cmp [rbp+var_12], 7 +000C027E: jnz short loc_C02BB +000C0280: mov rax, [rbp+var_A0] +000C0287: mov esi, 8 +000C028C: mov rdi, rax +000C028F: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C0294: movzx eax, byte ptr [rax] +000C0297: cmp al, 1 +000C0299: setz dl +000C029C: mov rax, [rbp+var_98] +000C02A3: mov [rax+58h], dl +000C02A6: mov rax, [rbp+var_98] +000C02AD: add rax, 60h ; '`' +000C02B1: mov rdi, rax; this +000C02B4: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C02B9: jmp short loc_C02DF +000C02BB: cmp [rbp+var_12], 12h +000C02BF: jnz short loc_C02DF +000C02C1: mov rax, [rbp+var_98] +000C02C8: mov byte ptr [rax+58h], 1 +000C02CC: mov rax, [rbp+var_98] +000C02D3: add rax, 60h ; '`' +000C02D7: mov rdi, rax; this +000C02DA: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C02DF: jmp loc_C03E2 +000C02E4: cmp [rbp+var_11], 81h +000C02E8: jnz loc_C03E2 +000C02EE: cmp [rbp+var_12], 0Ch +000C02F2: jnz short loc_C0332 +000C02F4: mov rax, [rbp+var_A0] +000C02FB: mov esi, 8 +000C0300: mov rdi, rax +000C0303: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C0308: movzx eax, byte ptr [rax] +000C030B: cmp al, 1 +000C030D: setz dl +000C0310: mov rax, [rbp+var_98] +000C0317: mov [rax+58h], dl +000C031A: mov rax, [rbp+var_98] +000C0321: add rax, 60h ; '`' +000C0325: mov rdi, rax; this +000C0328: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C032D: jmp loc_C03E2 +000C0332: cmp [rbp+var_12], 0Ah +000C0336: jnz short loc_C0373 +000C0338: mov rax, [rbp+var_A0] +000C033F: mov esi, 8 +000C0344: mov rdi, rax +000C0347: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C034C: movzx eax, byte ptr [rax] +000C034F: cmp al, 1 +000C0351: setz dl +000C0354: mov rax, [rbp+var_98] +000C035B: mov [rax+58h], dl +000C035E: mov rax, [rbp+var_98] +000C0365: add rax, 60h ; '`' +000C0369: mov rdi, rax; this +000C036C: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C0371: jmp short loc_C03E2 +000C0373: cmp [rbp+var_12], 0Bh +000C0377: jnz short loc_C03E2 +000C0379: mov rax, [rbp+var_A0] +000C0380: mov esi, 8 +000C0385: mov rdi, rax +000C0388: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C038D: movzx eax, byte ptr [rax] +000C0390: cmp al, 1 +000C0392: setz dl +000C0395: mov rax, [rbp+var_98] +000C039C: mov [rax+58h], dl +000C039F: mov rax, [rbp+var_98] +000C03A6: add rax, 60h ; '`' +000C03AA: mov rdi, rax; this +000C03AD: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000C03B2: jmp short loc_C03E2 +000C03B4: mov rbx, rax +000C03B7: lea rax, [rbp+var_40] +000C03BB: mov rdi, rax +000C03BE: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C03C3: jmp short loc_C03C8 +000C03C5: mov rbx, rax +000C03C8: lea rax, [rbp+var_90] +000C03CF: mov rdi, rax; this +000C03D2: call __ZN11FTDICommandD2Ev; FTDICommand::~FTDICommand() +000C03D7: mov rax, rbx +000C03DA: mov rdi, rax; struct _Unwind_Exception * +000C03DD: call __Unwind_Resume +000C03E2: add rsp, 98h +000C03E9: pop rbx +000C03EA: pop rbp +000C03EB: retn + +### FUNC 000C03EC - 000C0409 (29 bytes) name=_ZN19EloTCMUpdaterDevice17setUpdateDelegateEP18ITCMUpdateDelegate +000C03EC: push rbp +000C03ED: mov rbp, rsp +000C03F0: mov [rbp+var_8], rdi +000C03F4: mov [rbp+var_10], rsi +000C03F8: mov rax, [rbp+var_8] +000C03FC: mov rdx, [rbp+var_10] +000C0400: mov [rax+0C8h], rdx +000C0407: pop rbp +000C0408: retn + +### FUNC 000C040A - 000C0459 (79 bytes) name=_ZN19EloTCMUpdaterDevice14updateProgressEbi +000C040A: push rbp +000C040B: mov rbp, rsp +000C040E: sub rsp, 10h +000C0412: mov [rbp+var_8], rdi +000C0416: mov eax, esi +000C0418: mov [rbp+var_10], edx +000C041B: mov [rbp+var_C], al +000C041E: mov rax, [rbp+var_8] +000C0422: mov rax, [rax+0C8h] +000C0429: test rax, rax +000C042C: jz short locret_C0457 +000C042E: mov rax, [rbp+var_8] +000C0432: mov rax, [rax+0C8h] +000C0439: mov rax, [rax] +000C043C: mov rax, [rax] +000C043F: movzx edx, [rbp+var_C] +000C0443: mov rcx, [rbp+var_8] +000C0447: mov rdi, [rcx+0C8h] +000C044E: mov ecx, [rbp+var_10] +000C0451: mov rsi, [rbp+var_8] +000C0455: call rax +000C0457: leave +000C0458: retn + +### FUNC 000C045A - 000C04BB (97 bytes) name=_ZNKSt9type_infoeqERKS_ +000C045A: push rbp +000C045B: mov rbp, rsp +000C045E: sub rsp, 10h +000C0462: mov [rbp+var_8], rdi +000C0466: mov [rbp+var_10], rsi +000C046A: mov rax, [rbp+var_8] +000C046E: mov rdx, [rax+8] +000C0472: mov rax, [rbp+var_10] +000C0476: mov rax, [rax+8] +000C047A: cmp rdx, rax +000C047D: jz short loc_C04AD +000C047F: mov rax, [rbp+var_8] +000C0483: mov rax, [rax+8] +000C0487: movzx eax, byte ptr [rax] +000C048A: cmp al, 2Ah ; '*' +000C048C: jz short loc_C04B4 +000C048E: mov rax, [rbp+var_10] +000C0492: mov rdx, [rax+8] +000C0496: mov rax, [rbp+var_8] +000C049A: mov rax, [rax+8] +000C049E: mov rsi, rdx; s2 +000C04A1: mov rdi, rax; s1 +000C04A4: call _strcmp +000C04A9: test eax, eax +000C04AB: jnz short loc_C04B4 +000C04AD: mov eax, 1 +000C04B2: jmp short locret_C04B9 +000C04B4: mov eax, 0 +000C04B9: leave +000C04BA: retn + +### FUNC 000C04BC - 000C04D1 (21 bytes) name=_ZNSt6thread2idC2Ev +000C04BC: push rbp; Alternative name is 'std::thread::id::id(void)' +000C04BD: mov rbp, rsp +000C04C0: mov [rbp+var_8], rdi +000C04C4: mov rax, [rbp+var_8] +000C04C8: mov qword ptr [rax], 0 +000C04CF: pop rbp +000C04D0: retn + +### FUNC 000C04D1 - 000C04FB (42 bytes) name=_ZSteqNSt6thread2idES0_ +000C04D1: push rbp +000C04D2: mov rbp, rsp +000C04D5: sub rsp, 20h +000C04D9: mov [rbp+var_10], rdi +000C04DD: mov [rbp+var_20], rsi +000C04E1: mov rdx, [rbp+var_20] +000C04E5: mov rax, [rbp+var_10] +000C04E9: mov rsi, rdx; unsigned __int64 +000C04EC: mov rdi, rax; unsigned __int64 +000C04EF: call _ZL15__gthread_equalmm; __gthread_equal(ulong,ulong) +000C04F4: test eax, eax +000C04F6: setnz al +000C04F9: leave +000C04FA: retn + +### FUNC 000C04FC - 000C051F (35 bytes) name=_ZNSt6threadD2Ev +000C04FC: push rbp; Alternative name is 'std::thread::~thread()' +000C04FD: mov rbp, rsp +000C0500: sub rsp, 10h +000C0504: mov [rbp+var_8], rdi +000C0508: mov rax, [rbp+var_8] +000C050C: mov rdi, rax; this +000C050F: call __ZNKSt6thread8joinableEv; std::thread::joinable(void) +000C0514: test al, al +000C0516: jz short locret_C051D +000C0518: call __ZSt9terminatev; std::terminate(void) +000C051D: leave +000C051E: retn + +### FUNC 000C0520 - 000C055E (62 bytes) name=_ZNSt6threadaSEOS_ +000C0520: push rbp +000C0521: mov rbp, rsp +000C0524: sub rsp, 10h +000C0528: mov [rbp+var_8], rdi +000C052C: mov [rbp+var_10], rsi +000C0530: mov rax, [rbp+var_8] +000C0534: mov rdi, rax; this +000C0537: call __ZNKSt6thread8joinableEv; std::thread::joinable(void) +000C053C: test al, al +000C053E: jz short loc_C0545 +000C0540: call __ZSt9terminatev; std::terminate(void) +000C0545: mov rdx, [rbp+var_10] +000C0549: mov rax, [rbp+var_8] +000C054D: mov rsi, rdx; std::thread * +000C0550: mov rdi, rax; this +000C0553: call __ZNSt6thread4swapERS_; std::thread::swap(std::thread&) +000C0558: mov rax, [rbp+var_8] +000C055C: leave +000C055D: retn + +### FUNC 000C055E - 000C0583 (37 bytes) name=_ZNSt6thread4swapERS_ +000C055E: push rbp +000C055F: mov rbp, rsp +000C0562: sub rsp, 10h +000C0566: mov [rbp+var_8], rdi +000C056A: mov [rbp+var_10], rsi +000C056E: mov rdx, [rbp+var_10] +000C0572: mov rax, [rbp+var_8] +000C0576: mov rsi, rdx +000C0579: mov rdi, rax +000C057C: call __ZSt4swapINSt6thread2idEEvRT_S3_; std::swap(std::thread::id &,std::thread::id &) +000C0581: leave +000C0582: retn + +### FUNC 000C0584 - 000C05B4 (48 bytes) name=_ZNKSt6thread8joinableEv +000C0584: push rbp +000C0585: mov rbp, rsp +000C0588: sub rsp, 20h +000C058C: mov [rbp+var_18], rdi +000C0590: lea rax, [rbp+var_10] +000C0594: mov rdi, rax; this +000C0597: call __ZNSt6thread2idC2Ev; std::thread::id::id(void) +000C059C: mov rdx, [rbp+var_10] +000C05A0: mov rax, [rbp+var_18] +000C05A4: mov rsi, rdx +000C05A7: mov rdi, [rax] +000C05AA: call __ZSteqNSt6thread2idES0_; std::operator==(std::thread::id,std::thread::id) +000C05AF: xor eax, 1 +000C05B2: leave +000C05B3: retn + +### FUNC 000C05B4 - 000C05D2 (30 bytes) name=_ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C05B4: push rbp; Alternative name is 'std::__shared_ptr::~__shared_ptr()' +000C05B5: mov rbp, rsp +000C05B8: sub rsp, 10h +000C05BC: mov [rbp+var_8], rdi +000C05C0: mov rax, [rbp+var_8] +000C05C4: add rax, 8 +000C05C8: mov rdi, rax +000C05CB: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() +000C05D0: leave +000C05D1: retn + +### FUNC 000C05D2 - 000C05EC (26 bytes) name=_ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev +000C05D2: push rbp; Alternative name is 'std::shared_ptr::~shared_ptr()' +000C05D3: mov rbp, rsp +000C05D6: sub rsp, 10h +000C05DA: mov [rbp+var_8], rdi +000C05DE: mov rax, [rbp+var_8] +000C05E2: mov rdi, rax +000C05E5: call __ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_ptr::~__shared_ptr() +000C05EA: leave +000C05EB: retn + +### FUNC 000C05EC - 000C0631 (69 bytes) name=_ZNSt6thread10_Impl_baseD2Ev +000C05EC: push rbp; Alternative name is 'std::thread::_Impl_base::~_Impl_base()' +000C05ED: mov rbp, rsp +000C05F0: sub rsp, 10h +000C05F4: mov [rbp+var_8], rdi +000C05F8: mov rax, [rbp+var_8] +000C05FC: mov rdx, cs:_ZTVNSt6thread10_Impl_baseE_ptr +000C0603: lea rdx, [rdx+10h] +000C0607: mov [rax], rdx +000C060A: mov rax, [rbp+var_8] +000C060E: add rax, 8 +000C0612: mov rdi, rax +000C0615: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000C061A: mov eax, 0 +000C061F: test eax, eax +000C0621: jz short locret_C062F +000C0623: mov rax, [rbp+var_8] +000C0627: mov rdi, rax; void * +000C062A: call __ZdlPv; operator delete(void *) +000C062F: leave +000C0630: retn + +### FUNC 000C0632 - 000C0658 (38 bytes) name=_ZNSt6thread10_Impl_baseD0Ev +000C0632: push rbp +000C0633: mov rbp, rsp +000C0636: sub rsp, 10h +000C063A: mov [rbp+var_8], rdi +000C063E: mov rax, [rbp+var_8] +000C0642: mov rdi, rax; this +000C0645: call __ZNSt6thread10_Impl_baseD2Ev; std::thread::_Impl_base::~_Impl_base() +000C064A: mov rax, [rbp+var_8] +000C064E: mov rdi, rax; void * +000C0651: call __ZdlPv; operator delete(void *) +000C0656: leave +000C0657: retn + +### FUNC 000C0658 - 000C0672 (26 bytes) name=_ZNSt6threadC2Ev +000C0658: push rbp; Alternative name is 'std::thread::thread(void)' +000C0659: mov rbp, rsp +000C065C: sub rsp, 10h +000C0660: mov [rbp+var_8], rdi +000C0664: mov rax, [rbp+var_8] +000C0668: mov rdi, rax; this +000C066B: call __ZNSt6thread2idC2Ev; std::thread::id::id(void) +000C0670: leave +000C0671: retn + +### FUNC 000C0672 - 000C0680 (14 bytes) name=_ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_ +000C0672: push rbp +000C0673: mov rbp, rsp +000C0676: mov [rbp+var_8], rdi +000C067A: mov rax, [rbp+var_8] +000C067E: pop rbp +000C067F: retn + +### FUNC 000C0680 - 000C06D1 (81 bytes) name=_ZSt4swapINSt6thread2idEEvRT_S3_ +000C0680: push rbp +000C0681: mov rbp, rsp +000C0684: sub rsp, 20h +000C0688: mov [rbp+var_18], rdi +000C068C: mov [rbp+var_20], rsi +000C0690: mov rax, [rbp+var_18] +000C0694: mov rdi, rax +000C0697: call __ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_; std::move(std::thread::id &&&) +000C069C: mov rax, [rax] +000C069F: mov [rbp+var_10], rax +000C06A3: mov rax, [rbp+var_20] +000C06A7: mov rdi, rax +000C06AA: call __ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_; std::move(std::thread::id &&&) +000C06AF: mov rdx, [rbp+var_18] +000C06B3: mov rax, [rax] +000C06B6: mov [rdx], rax +000C06B9: lea rax, [rbp+var_10] +000C06BD: mov rdi, rax +000C06C0: call __ZSt4moveIRNSt6thread2idEEONSt16remove_referenceIT_E4typeEOS4_; std::move(std::thread::id &&&) +000C06C5: mov rdx, [rbp+var_20] +000C06C9: mov rax, [rax] +000C06CC: mov [rdx], rax +000C06CF: leave +000C06D0: retn + +### FUNC 000C06D2 - 000C06FB (41 bytes) name=_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev +000C06D2: push rbp; Alternative name is 'std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count()' +000C06D3: mov rbp, rsp +000C06D6: sub rsp, 10h +000C06DA: mov [rbp+var_8], rdi +000C06DE: mov rax, [rbp+var_8] +000C06E2: mov rax, [rax] +000C06E5: test rax, rax +000C06E8: jz short locret_C06F9 +000C06EA: mov rax, [rbp+var_8] +000C06EE: mov rax, [rax] +000C06F1: mov rdi, rax +000C06F4: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(void) +000C06F9: leave +000C06FA: retn + +### FUNC 000C06FB - 000C0709 (14 bytes) name=_ZSt7forwardIM19EloTCMUpdaterDeviceFbvEEOT_RNSt16remove_referenceIS3_E4typeE +000C06FB: push rbp +000C06FC: mov rbp, rsp +000C06FF: mov [rbp+var_8], rdi +000C0703: mov rax, [rbp+var_8] +000C0707: pop rbp +000C0708: retn + +### FUNC 000C0709 - 000C0717 (14 bytes) name=_ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE +000C0709: push rbp +000C070A: mov rbp, rsp +000C070D: mov [rbp+var_8], rdi +000C0711: mov rax, [rbp+var_8] +000C0715: pop rbp +000C0716: retn + +### FUNC 000C0718 - 000C0736 (30 bytes) name=_ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C0718: push rbp; Alternative name is 'std::__shared_ptr ()(EloTCMUpdaterDevice*)>>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr()' +000C0719: mov rbp, rsp +000C071C: sub rsp, 10h +000C0720: mov [rbp+var_8], rdi +000C0724: mov rax, [rbp+var_8] +000C0728: add rax, 8 +000C072C: mov rdi, rax +000C072F: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() +000C0734: leave +000C0735: retn + +### FUNC 000C0736 - 000C0750 (26 bytes) name=_ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEED2Ev +000C0736: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMUpdaterDevice*)>>>::~shared_ptr()' +000C0737: mov rbp, rsp +000C073A: sub rsp, 10h +000C073E: mov [rbp+var_8], rdi +000C0742: mov rax, [rbp+var_8] +000C0746: mov rdi, rax +000C0749: call __ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_ptr ()(EloTCMUpdaterDevice*)>>,(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() +000C074E: leave +000C074F: retn + +### FUNC 000C0750 - 000C0825 (213 bytes) name=_ZNSt6threadC2IM19EloTCMUpdaterDeviceFbvEJKPS1_EEEOT_DpOT0_ +000C0750: push rbp; Alternative name is 'std::thread::thread(bool (EloTCMUpdaterDevice::*)(void) &&, EloTCMUpdaterDevice* const &&)' +000C0751: mov rbp, rsp +000C0754: push rbx +000C0755: sub rsp, 68h +000C0759: mov [rbp+var_58], rdi +000C075D: mov [rbp+var_60], rsi +000C0761: mov [rbp+var_68], rdx +000C0765: mov rax, [rbp+var_58] +000C0769: mov rdi, rax; this +000C076C: call __ZNSt6thread2idC2Ev; std::thread::id::id(void) +000C0771: mov rax, [rbp+var_68] +000C0775: mov rdi, rax +000C0778: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C077D: mov rbx, rax +000C0780: mov rax, [rbp+var_60] +000C0784: mov rdi, rax +000C0787: call __ZSt7forwardIM19EloTCMUpdaterDeviceFbvEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C078C: mov rcx, rax +000C078F: lea rax, [rbp+var_30] +000C0793: mov rdx, rbx +000C0796: mov rsi, rcx +000C0799: mov rdi, rax +000C079C: call __ZSt13__bind_simpleIM19EloTCMUpdaterDeviceFbvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_; std::__bind_simple(bool (EloTCMUpdaterDevice::*)(void)&&,EloTCMUpdaterDevice* const&&) +000C07A1: lea rax, [rbp+var_40] +000C07A5: lea rdx, [rbp+var_30] +000C07A9: mov rcx, [rbp+var_58] +000C07AD: mov rsi, rcx +000C07B0: mov rdi, rax +000C07B3: call __ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_; std::thread::_M_make_routine ()(EloTCMUpdaterDevice*)>>(std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&) +000C07B8: lea rdx, [rbp+var_40] +000C07BC: lea rax, [rbp+var_50] +000C07C0: mov rsi, rdx +000C07C3: mov rdi, rax +000C07C6: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS7_EEEEvEEOS_IT_E; std::shared_ptr::shared_ptr ()(EloTCMUpdaterDevice*)>>,void>(std::shared_ptr&& ()(EloTCMUpdaterDevice*)>>>) +000C07CB: lea rdx, [rbp+var_50] +000C07CF: mov rax, [rbp+var_58] +000C07D3: mov rsi, rdx +000C07D6: mov rdi, rax +000C07D9: call __ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE; std::thread::_M_start_thread(std::shared_ptr) +000C07DE: lea rax, [rbp+var_50] +000C07E2: mov rdi, rax +000C07E5: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000C07EA: lea rax, [rbp+var_40] +000C07EE: mov rdi, rax +000C07F1: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEED2Ev; std::shared_ptr ()(EloTCMUpdaterDevice*)>>>::~shared_ptr() +000C07F6: jmp short loc_C081E +000C07F8: mov rbx, rax +000C07FB: lea rax, [rbp+var_50] +000C07FF: mov rdi, rax +000C0802: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000C0807: lea rax, [rbp+var_40] +000C080B: mov rdi, rax +000C080E: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEED2Ev; std::shared_ptr ()(EloTCMUpdaterDevice*)>>>::~shared_ptr() +000C0813: mov rax, rbx +000C0816: mov rdi, rax; struct _Unwind_Exception * +000C0819: call __Unwind_Resume +000C081E: add rsp, 68h +000C0822: pop rbx +000C0823: pop rbp +000C0824: retn + +### FUNC 000C0826 - 000C0864 (62 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEplERKl +000C0826: push rbp +000C0827: mov rbp, rsp +000C082A: sub rsp, 20h +000C082E: mov [rbp+var_18], rdi +000C0832: mov [rbp+var_20], rsi +000C0836: mov rax, [rbp+var_18] +000C083A: mov rdx, [rax] +000C083D: mov rax, [rbp+var_20] +000C0841: mov rax, [rax] +000C0844: add rax, rdx +000C0847: mov [rbp+var_8], rax +000C084B: lea rdx, [rbp+var_8] +000C084F: lea rax, [rbp+var_10] +000C0853: mov rsi, rdx +000C0856: mov rdi, rax +000C0859: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar * const&) +000C085E: mov rax, [rbp+var_10] +000C0862: leave +000C0863: retn + +### FUNC 000C0864 - 000C0895 (49 bytes) name=_ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPhS1_EEvEEvT_S7_ +000C0864: push rbp +000C0865: mov rbp, rsp +000C0868: sub rsp, 40h +000C086C: mov [rbp+var_18], rdi +000C0870: mov [rbp+var_20], rsi +000C0874: mov [rbp+var_30], rdx +000C0878: mov rdx, [rbp+var_30] +000C087C: mov rcx, [rbp+var_20] +000C0880: mov rax, [rbp+var_18] +000C0884: mov [rsp+40h+var_40], r8b +000C0888: mov rsi, rcx +000C088B: mov rdi, rax +000C088E: call __ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St12__false_type; std::vector>::_M_assign_dispatch<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::__false_type) +000C0893: leave +000C0894: retn + +### FUNC 000C0895 - 000C08D1 (60 bytes) name=_ZN9__gnu_cxxneIPhSt6vectorIhSaIhEEEEbRKNS_17__normal_iteratorIT_T0_EESA_ +000C0895: push rbp +000C0896: mov rbp, rsp +000C0899: push rbx +000C089A: sub rsp, 18h +000C089E: mov [rbp+var_18], rdi +000C08A2: mov [rbp+var_20], rsi +000C08A6: mov rax, [rbp+var_18] +000C08AA: mov rdi, rax +000C08AD: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C08B2: mov rbx, [rax] +000C08B5: mov rax, [rbp+var_20] +000C08B9: mov rdi, rax +000C08BC: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C08C1: mov rax, [rax] +000C08C4: cmp rbx, rax +000C08C7: setnz al +000C08CA: add rsp, 18h +000C08CE: pop rbx +000C08CF: pop rbp +000C08D0: retn + +### FUNC 000C08D2 - 000C08F2 (32 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEppEv +000C08D2: push rbp +000C08D3: mov rbp, rsp +000C08D6: mov [rbp+var_8], rdi +000C08DA: mov rax, [rbp+var_8] +000C08DE: mov rax, [rax] +000C08E1: lea rdx, [rax+1] +000C08E5: mov rax, [rbp+var_8] +000C08E9: mov [rax], rdx +000C08EC: mov rax, [rbp+var_8] +000C08F0: pop rbp +000C08F1: retn + +### FUNC 000C08F2 - 000C0903 (17 bytes) name=_ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEdeEv +000C08F2: push rbp +000C08F3: mov rbp, rsp +000C08F6: mov [rbp+var_8], rdi +000C08FA: mov rax, [rbp+var_8] +000C08FE: mov rax, [rax] +000C0901: pop rbp +000C0902: retn + +### FUNC 000C0904 - 000C097E (122 bytes) name=_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv +000C0904: push rbp +000C0905: mov rbp, rsp +000C0908: sub rsp, 10h +000C090C: mov [rbp+var_8], rdi +000C0910: mov rax, [rbp+var_8] +000C0914: add rax, 8 +000C0918: mov esi, 0FFFFFFFFh; int +000C091D: mov rdi, rax; int * +000C0920: call _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii; __gnu_cxx::__exchange_and_add_dispatch(int *,int) +000C0925: cmp eax, 1 +000C0928: setz al +000C092B: test al, al +000C092D: jz short locret_C097C +000C092F: mov rax, [rbp+var_8] +000C0933: mov rax, [rax] +000C0936: add rax, 10h +000C093A: mov rax, [rax] +000C093D: mov rdx, [rbp+var_8] +000C0941: mov rdi, rdx +000C0944: call rax +000C0946: mov rax, [rbp+var_8] +000C094A: add rax, 0Ch +000C094E: mov esi, 0FFFFFFFFh; int +000C0953: mov rdi, rax; int * +000C0956: call _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii; __gnu_cxx::__exchange_and_add_dispatch(int *,int) +000C095B: cmp eax, 1 +000C095E: setz al +000C0961: test al, al +000C0963: jz short locret_C097C +000C0965: mov rax, [rbp+var_8] +000C0969: mov rax, [rax] +000C096C: add rax, 18h +000C0970: mov rax, [rax] +000C0973: mov rdx, [rbp+var_8] +000C0977: mov rdi, rdx +000C097A: call rax +000C097C: leave +000C097D: retn + +### FUNC 000C097E - 000C098C (14 bytes) name=_ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_tailERS2_ +000C097E: push rbp; Alternative name is 'std::_Tuple_impl<1ul, EloTCMUpdaterDevice *>::_M_tail(std::_Tuple_impl<1ul, EloTCMUpdaterDevice *>&)' +000C097F: mov rbp, rsp +000C0982: mov [rbp+var_8], rdi +000C0986: mov rax, [rbp+var_8] +000C098A: pop rbp +000C098B: retn + +### FUNC 000C098C - 000C099A (14 bytes) name=_ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000C098C: push rbp; Alternative name is '_ZSt4moveIRSt11_Tuple_implILm2EIEEEONSt16remove_referenceIT_E4typeEOS4_' +000C098D: mov rbp, rsp +000C0990: mov [rbp+var_8], rdi +000C0994: mov rax, [rbp+var_8] +000C0998: pop rbp +000C0999: retn + +### FUNC 000C099A - 000C09A8 (14 bytes) name=_ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EE7_M_headERS2_ +000C099A: push rbp +000C099B: mov rbp, rsp +000C099E: mov [rbp+var_8], rdi +000C09A2: mov rax, [rbp+var_8] +000C09A6: pop rbp +000C09A7: retn + +### FUNC 000C09A8 - 000C09C2 (26 bytes) name=_ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_headERS2_ +000C09A8: push rbp; Alternative name is 'std::_Tuple_impl<1ul, EloTCMUpdaterDevice *>::_M_head(std::_Tuple_impl<1ul, EloTCMUpdaterDevice *>&)' +000C09A9: mov rbp, rsp +000C09AC: sub rsp, 10h +000C09B0: mov [rbp+var_8], rdi +000C09B4: mov rax, [rbp+var_8] +000C09B8: mov rdi, rax +000C09BB: call __ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EE7_M_headERS2_; std::_Head_base<1ul,EloTCMUpdaterDevice *,false>::_M_head(std::_Head_base<1ul,EloTCMUpdaterDevice *,false>&) +000C09C0: leave +000C09C1: retn + +### FUNC 000C09C2 - 000C09D0 (14 bytes) name=_ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE +000C09C2: push rbp +000C09C3: mov rbp, rsp +000C09C6: mov [rbp+var_8], rdi +000C09CA: mov rax, [rbp+var_8] +000C09CE: pop rbp +000C09CF: retn + +### FUNC 000C09D0 - 000C09F8 (40 bytes) name=_ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IS1_EEOT_ +000C09D0: push rbp; Alternative name is 'std::_Head_base<1ul, EloTCMUpdaterDevice *, false>::_Head_base(EloTCMUpdaterDevice * &&)' +000C09D1: mov rbp, rsp +000C09D4: sub rsp, 10h +000C09D8: mov [rbp+var_8], rdi +000C09DC: mov [rbp+var_10], rsi +000C09E0: mov rax, [rbp+var_10] +000C09E4: mov rdi, rax +000C09E7: call __ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C09EC: mov rdx, [rax] +000C09EF: mov rax, [rbp+var_8] +000C09F3: mov [rax], rdx +000C09F6: leave +000C09F7: retn + +### FUNC 000C09F8 - 000C0A44 (76 bytes) name=_ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2EOS2_ +000C09F8: push rbp; Alternative name is 'std::_Tuple_impl<1ul, EloTCMUpdaterDevice *>::_Tuple_impl(std::_Tuple_impl<1ul, EloTCMUpdaterDevice *>&&)' +000C09F9: mov rbp, rsp +000C09FC: sub rsp, 10h +000C0A00: mov [rbp+var_8], rdi +000C0A04: mov [rbp+var_10], rsi +000C0A08: mov rax, [rbp+var_10] +000C0A0C: mov rdi, rax +000C0A0F: call __ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_tailERS2_; std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>::_M_tail(std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>&) +000C0A14: mov rdi, rax +000C0A17: call __ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000C0A1C: mov rax, [rbp+var_10] +000C0A20: mov rdi, rax +000C0A23: call __ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_headERS2_; std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>::_M_head(std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>&) +000C0A28: mov rdi, rax +000C0A2B: call __ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C0A30: mov rdx, rax +000C0A33: mov rax, [rbp+var_8] +000C0A37: mov rsi, rdx +000C0A3A: mov rdi, rax +000C0A3D: call __ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IS1_EEOT_; std::_Head_base<1ul,EloTCMUpdaterDevice *,false>::_Head_base(EloTCMUpdaterDevice * &&) +000C0A42: leave +000C0A43: retn + +### FUNC 000C0A44 - 000C0A52 (14 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_tailERS6_ +000C0A44: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>::_M_tail(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>&)' +000C0A45: mov rbp, rsp +000C0A48: mov [rbp+var_8], rdi +000C0A4C: mov rax, [rbp+var_8] +000C0A50: pop rbp +000C0A51: retn + +### FUNC 000C0A52 - 000C0A60 (14 bytes) name=_ZSt4moveIRSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +000C0A52: push rbp; Alternative name is 'std::remove_reference &>::type && std::move &>(std::_Tuple_impl<1ul, EloTCMUpdaterDevice *> &&&)' +000C0A53: mov rbp, rsp +000C0A56: mov [rbp+var_8], rdi +000C0A5A: mov rax, [rbp+var_8] +000C0A5E: pop rbp +000C0A5F: retn + +### FUNC 000C0A60 - 000C0A6E (14 bytes) name=_ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EE7_M_headERS5_ +000C0A60: push rbp +000C0A61: mov rbp, rsp +000C0A64: mov [rbp+var_8], rdi +000C0A68: mov rax, [rbp+var_8] +000C0A6C: pop rbp +000C0A6D: retn + +### FUNC 000C0A6E - 000C0A8C (30 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_headERS6_ +000C0A6E: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>::_M_head(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>&)' +000C0A6F: mov rbp, rsp +000C0A72: sub rsp, 10h +000C0A76: mov [rbp+var_8], rdi +000C0A7A: mov rax, [rbp+var_8] +000C0A7E: add rax, 8 +000C0A82: mov rdi, rax +000C0A85: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EE7_M_headERS5_; std::_Head_base<0ul,std::_Mem_fn,false>::_M_head(std::_Head_base<0ul,std::_Mem_fn,false>&) +000C0A8A: leave +000C0A8B: retn + +### FUNC 000C0A8C - 000C0A9A (14 bytes) name=_ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE +000C0A8C: push rbp +000C0A8D: mov rbp, rsp +000C0A90: mov [rbp+var_8], rdi +000C0A94: mov rax, [rbp+var_8] +000C0A98: pop rbp +000C0A99: retn + +### FUNC 000C0A9A - 000C0ACA (48 bytes) name=_ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EEC2IS4_EEOT_ +000C0A9A: push rbp; Alternative name is 'std::_Head_base<0ul, std::_Mem_fn, false>::_Head_base>(std::_Mem_fn &&)' +000C0A9B: mov rbp, rsp +000C0A9E: sub rsp, 10h +000C0AA2: mov [rbp+var_8], rdi +000C0AA6: mov [rbp+var_10], rsi +000C0AAA: mov rax, [rbp+var_10] +000C0AAE: mov rdi, rax +000C0AB1: call __ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C0AB6: mov rcx, [rbp+var_8] +000C0ABA: mov rdx, [rax+8] +000C0ABE: mov rax, [rax] +000C0AC1: mov [rcx], rax +000C0AC4: mov [rcx+8], rdx +000C0AC8: leave +000C0AC9: retn + +### FUNC 000C0ACA - 000C0B29 (95 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +000C0ACA: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>::_Tuple_impl(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>&&)' +000C0ACB: mov rbp, rsp +000C0ACE: sub rsp, 10h +000C0AD2: mov [rbp+var_8], rdi +000C0AD6: mov [rbp+var_10], rsi +000C0ADA: mov rax, [rbp+var_10] +000C0ADE: mov rdi, rax +000C0AE1: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_tailERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>::_M_tail(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>&) +000C0AE6: mov rdi, rax +000C0AE9: call __ZSt4moveIRSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEEONSt16remove_referenceIT_E4typeEOS6_; std::move &>(std::_Tuple_impl<1ul,EloTCMUpdaterDevice *> &&&) +000C0AEE: mov rdx, rax +000C0AF1: mov rax, [rbp+var_8] +000C0AF5: mov rsi, rdx +000C0AF8: mov rdi, rax +000C0AFB: call __ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2EOS2_; std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>::_Tuple_impl(std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>&&) +000C0B00: mov rax, [rbp+var_10] +000C0B04: mov rdi, rax +000C0B07: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_headERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>::_M_head(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>&) +000C0B0C: mov rdi, rax +000C0B0F: call __ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C0B14: mov rdx, [rbp+var_8] +000C0B18: add rdx, 8 +000C0B1C: mov rsi, rax +000C0B1F: mov rdi, rdx +000C0B22: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EEC2IS4_EEOT_; std::_Head_base<0ul,std::_Mem_fn,false>::_Head_base>(std::_Mem_fn &&) +000C0B27: leave +000C0B28: retn + +### FUNC 000C0B2A - 000C0B4F (37 bytes) name=_ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_ +000C0B2A: push rbp; Alternative name is 'std::tuple, EloTCMUpdaterDevice*>::tuple(std::tuple, EloTCMUpdaterDevice*>&&)' +000C0B2B: mov rbp, rsp +000C0B2E: sub rsp, 10h +000C0B32: mov [rbp+var_8], rdi +000C0B36: mov [rbp+var_10], rsi +000C0B3A: mov rdx, [rbp+var_10] +000C0B3E: mov rax, [rbp+var_8] +000C0B42: mov rsi, rdx +000C0B45: mov rdi, rax +000C0B48: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>::_Tuple_impl(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>&&) +000C0B4D: leave +000C0B4E: retn + +### FUNC 000C0B50 - 000C0B75 (37 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS7_ +000C0B50: push rbp; Alternative name is 'std::_Bind_simple ()(EloTCMUpdaterDevice*)>::_Bind_simple(std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&)' +000C0B51: mov rbp, rsp +000C0B54: sub rsp, 10h +000C0B58: mov [rbp+var_8], rdi +000C0B5C: mov [rbp+var_10], rsi +000C0B60: mov rdx, [rbp+var_10] +000C0B64: mov rax, [rbp+var_8] +000C0B68: mov rsi, rdx +000C0B6B: mov rdi, rax +000C0B6E: call __ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS6_; std::tuple,EloTCMUpdaterDevice*>::tuple(std::tuple,EloTCMUpdaterDevice*>&&) +000C0B73: leave +000C0B74: retn + +### FUNC 000C0B75 - 000C0BE0 (107 bytes) name=_ZSt13__bind_simpleIM19EloTCMUpdaterDeviceFbvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000C0B75: push rbp; Alternative name is 'std::_Bind_simple_helper>::__type std::__bind_simple(bool (EloTCMUpdaterDevice::*)(void)&&, EloTCMUpdaterDevice* const&&)' +000C0B76: mov rbp, rsp +000C0B79: push rbx +000C0B7A: sub rsp, 38h +000C0B7E: mov [rbp+var_28], rdi +000C0B82: mov [rbp+var_30], rsi +000C0B86: mov [rbp+var_38], rdx +000C0B8A: mov rax, [rbp+var_38] +000C0B8E: mov rdi, rax +000C0B91: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0B96: mov rbx, rax +000C0B99: mov rax, [rbp+var_30] +000C0B9D: mov rdi, rax +000C0BA0: call __ZSt7forwardIM19EloTCMUpdaterDeviceFbvEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0BA5: mov rdx, [rax] +000C0BA8: mov rax, [rax+8] +000C0BAC: mov rdi, rdx +000C0BAF: mov rsi, rax +000C0BB2: call __ZNSt26_Maybe_wrap_member_pointerIM19EloTCMUpdaterDeviceFbvEE9__do_wrapES2_; std::_Maybe_wrap_member_pointer::__do_wrap(bool (EloTCMUpdaterDevice::*)(void)) +000C0BB7: mov [rbp+var_20], rax +000C0BBB: mov [rbp+var_18], rdx +000C0BBF: lea rcx, [rbp+var_20] +000C0BC3: mov rax, [rbp+var_28] +000C0BC7: mov rdx, rbx +000C0BCA: mov rsi, rcx +000C0BCD: mov rdi, rax +000C0BD0: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_; std::_Bind_simple ()(EloTCMUpdaterDevice*)>::_Bind_simple(std::_Mem_fn&&,EloTCMUpdaterDevice* const &&) +000C0BD5: mov rax, [rbp+var_28] +000C0BD9: add rsp, 38h +000C0BDD: pop rbx +000C0BDE: pop rbp +000C0BDF: retn + +### FUNC 000C0BE0 - 000C0BEE (14 bytes) name=_ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +000C0BE0: push rbp +000C0BE1: mov rbp, rsp +000C0BE4: mov [rbp+var_8], rdi +000C0BE8: mov rax, [rbp+var_8] +000C0BEC: pop rbp +000C0BED: retn + +### FUNC 000C0BEE - 000C0C26 (56 bytes) name=_ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000C0BEE: push rbp +000C0BEF: mov rbp, rsp +000C0BF2: sub rsp, 20h +000C0BF6: mov [rbp+var_8], rdi +000C0BFA: mov [rbp+var_10], rsi +000C0BFE: mov [rbp+var_18], rdx +000C0C02: mov rax, [rbp+var_18] +000C0C06: mov rdi, rax +000C0C09: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C0C0E: mov rdx, rax +000C0C11: mov rax, [rbp+var_8] +000C0C15: mov rsi, rdx +000C0C18: mov rdi, rax +000C0C1B: call __ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_; std::make_shared ()(EloTCMUpdaterDevice*)>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C0C20: mov rax, [rbp+var_8] +000C0C24: leave +000C0C25: retn + +### FUNC 000C0C26 - 000C0C34 (14 bytes) name=_ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C0C26: push rbp +000C0C27: mov rbp, rsp +000C0C2A: mov [rbp+var_8], rdi +000C0C2E: mov rax, [rbp+var_8] +000C0C32: pop rbp +000C0C33: retn + +### FUNC 000C0C34 - 000C0C64 (48 bytes) name=_ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS7_EEEEvEEOS_IT_E +000C0C34: push rbp; Alternative name is 'std::shared_ptr::shared_ptr ()(EloTCMUpdaterDevice*)>>, void>(std::shared_ptr&& ()(EloTCMUpdaterDevice*)>>>)' +000C0C35: mov rbp, rsp +000C0C38: sub rsp, 10h +000C0C3C: mov [rbp+var_8], rdi +000C0C40: mov [rbp+var_10], rsi +000C0C44: mov rax, [rbp+var_10] +000C0C48: mov rdi, rax +000C0C4B: call __ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move ()(EloTCMUpdaterDevice*)>>> &>(std::shared_ptr ()(EloTCMUpdaterDevice*)>>> &&&) +000C0C50: mov rdx, rax +000C0C53: mov rax, [rbp+var_8] +000C0C57: mov rsi, rdx +000C0C5A: mov rdi, rax +000C0C5D: call __ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS9_EEEEvEEOS_IT_LS3_2EE; std::__shared_ptr::__shared_ptr ()(EloTCMUpdaterDevice*)>>,void>(std::__shared_ptr&& ()(EloTCMUpdaterDevice*)>>,(__gnu_cxx::_Lock_policy)2>) +000C0C62: leave +000C0C63: retn + +### FUNC 000C0C64 - 000C0C95 (49 bytes) name=_ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St12__false_type +000C0C64: push rbp +000C0C65: mov rbp, rsp +000C0C68: sub rsp, 40h +000C0C6C: mov [rbp+var_18], rdi +000C0C70: mov [rbp+var_20], rsi +000C0C74: mov [rbp+var_30], rdx +000C0C78: mov rdx, [rbp+var_30] +000C0C7C: mov rcx, [rbp+var_20] +000C0C80: mov rax, [rbp+var_18] +000C0C84: mov [rsp+40h+var_40], r8b +000C0C88: mov rsi, rcx +000C0C8B: mov rdi, rax +000C0C8E: call __ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St20forward_iterator_tag; std::vector>::_M_assign_aux<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::forward_iterator_tag) +000C0C93: leave +000C0C94: retn + +### FUNC 000C0C96 - 000C0CC2 (44 bytes) name=_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000C0C96: push rbp +000C0C97: mov rbp, rsp +000C0C9A: sub rsp, 10h +000C0C9E: mov [rbp+var_8], rdi +000C0CA2: cmp [rbp+var_8], 0 +000C0CA7: jz short locret_C0CC0 +000C0CA9: mov rax, [rbp+var_8] +000C0CAD: mov rax, [rax] +000C0CB0: add rax, 8 +000C0CB4: mov rax, [rax] +000C0CB7: mov rdx, [rbp+var_8] +000C0CBB: mov rdi, rdx +000C0CBE: call rax +000C0CC0: leave +000C0CC1: retn + +### FUNC 000C0CC2 - 000C0CFC (58 bytes) name=_ZNSt26_Maybe_wrap_member_pointerIM19EloTCMUpdaterDeviceFbvEE9__do_wrapES2_ +000C0CC2: push rbp +000C0CC3: mov rbp, rsp +000C0CC6: sub rsp, 20h +000C0CCA: mov rax, rdi +000C0CCD: mov rcx, rsi +000C0CD0: mov rdx, rcx +000C0CD3: mov [rbp+var_20], rax +000C0CD7: mov [rbp+var_18], rdx +000C0CDB: mov rcx, [rbp+var_20] +000C0CDF: mov rdx, [rbp+var_18] +000C0CE3: lea rax, [rbp+var_10] +000C0CE7: mov rsi, rcx +000C0CEA: mov rdi, rax +000C0CED: call __ZNSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEC2ES2_; std::_Mem_fn::_Mem_fn(bool (EloTCMUpdaterDevice::*)(void)) +000C0CF2: mov rax, [rbp+var_10] +000C0CF6: mov rdx, [rbp+var_8] +000C0CFA: leave +000C0CFB: retn + +### FUNC 000C0CFC - 000C0D0A (14 bytes) name=_ZSt4moveIRSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEONSt16remove_referenceIT_E4typeEOS7_ +000C0CFC: push rbp +000C0CFD: mov rbp, rsp +000C0D00: mov [rbp+var_8], rdi +000C0D04: mov rax, [rbp+var_8] +000C0D08: pop rbp +000C0D09: retn + +### FUNC 000C0D0A - 000C0D32 (40 bytes) name=_ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IKS1_EEOT_ +000C0D0A: push rbp; Alternative name is 'std::_Head_base<1ul, EloTCMUpdaterDevice *, false>::_Head_base(EloTCMUpdaterDevice * const &&)' +000C0D0B: mov rbp, rsp +000C0D0E: sub rsp, 10h +000C0D12: mov [rbp+var_8], rdi +000C0D16: mov [rbp+var_10], rsi +000C0D1A: mov rax, [rbp+var_10] +000C0D1E: mov rdi, rax +000C0D21: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0D26: mov rdx, [rax] +000C0D29: mov rax, [rbp+var_8] +000C0D2D: mov [rax], rdx +000C0D30: leave +000C0D31: retn + +### FUNC 000C0D32 - 000C0D6E (60 bytes) name=_ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2IKS1_JEvEEOT_DpOT0_ +000C0D32: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC1IKS1_JEvEEOT_DpOT0_' +000C0D33: mov rbp, rsp +000C0D36: sub rsp, 10h +000C0D3A: mov [rbp+var_8], rdi +000C0D3E: mov [rbp+var_10], rsi +000C0D42: mov rax, [rbp+var_8] +000C0D46: mov rdi, rax +000C0D49: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000C0D4E: mov rax, [rbp+var_10] +000C0D52: mov rdi, rax +000C0D55: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0D5A: mov rdx, rax +000C0D5D: mov rax, [rbp+var_8] +000C0D61: mov rsi, rdx +000C0D64: mov rdi, rax +000C0D67: call __ZNSt10_Head_baseILm1EP19EloTCMUpdaterDeviceLb0EEC2IKS1_EEOT_; std::_Head_base<1ul,EloTCMUpdaterDevice *,false>::_Head_base(EloTCMUpdaterDevice * const &&) +000C0D6C: leave +000C0D6D: retn + +### FUNC 000C0D6E - 000C0DC1 (83 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +000C0D6E: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>::_Tuple_impl, void>(std::_Mem_fn &&, void &&)' +000C0D6F: mov rbp, rsp +000C0D72: sub rsp, 20h +000C0D76: mov [rbp+var_8], rdi +000C0D7A: mov [rbp+var_10], rsi +000C0D7E: mov [rbp+var_18], rdx +000C0D82: mov rax, [rbp+var_18] +000C0D86: mov rdi, rax +000C0D89: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0D8E: mov rdx, rax +000C0D91: mov rax, [rbp+var_8] +000C0D95: mov rsi, rdx +000C0D98: mov rdi, rax +000C0D9B: call __ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEEC2IKS1_JEvEEOT_DpOT0_ +000C0DA0: mov rax, [rbp+var_10] +000C0DA4: mov rdi, rax +000C0DA7: call __ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C0DAC: mov rdx, [rbp+var_8] +000C0DB0: add rdx, 8 +000C0DB4: mov rsi, rax +000C0DB7: mov rdi, rdx +000C0DBA: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEELb0EEC2IS4_EEOT_; std::_Head_base<0ul,std::_Mem_fn,false>::_Head_base>(std::_Mem_fn &&) +000C0DBF: leave +000C0DC0: retn + +### FUNC 000C0DC2 - 000C0E0E (76 bytes) name=_ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000C0DC2: push rbp; Alternative name is 'std::tuple, EloTCMUpdaterDevice*>::tuple, EloTCMUpdaterDevice* const, void>(std::_Mem_fn &&, EloTCMUpdaterDevice* const &&)' +000C0DC3: mov rbp, rsp +000C0DC6: push rbx +000C0DC7: sub rsp, 28h +000C0DCB: mov [rbp+var_18], rdi +000C0DCF: mov [rbp+var_20], rsi +000C0DD3: mov [rbp+var_28], rdx +000C0DD7: mov rax, [rbp+var_28] +000C0DDB: mov rdi, rax +000C0DDE: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0DE3: mov rbx, rax +000C0DE6: mov rax, [rbp+var_20] +000C0DEA: mov rdi, rax +000C0DED: call __ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C0DF2: mov rcx, rax +000C0DF5: mov rax, [rbp+var_18] +000C0DF9: mov rdx, rbx +000C0DFC: mov rsi, rcx +000C0DFF: mov rdi, rax +000C0E02: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>::_Tuple_impl,EloTCMUpdaterDevice* const,void>(std::_Mem_fn &&,EloTCMUpdaterDevice* const &&) +000C0E07: add rsp, 28h +000C0E0B: pop rbx +000C0E0C: pop rbp +000C0E0D: retn + +### FUNC 000C0E0E - 000C0E5A (76 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +000C0E0E: push rbp; Alternative name is 'std::_Bind_simple ()(EloTCMUpdaterDevice*)>::_Bind_simple(std::_Mem_fn&&, EloTCMUpdaterDevice* const &&)' +000C0E0F: mov rbp, rsp +000C0E12: push rbx +000C0E13: sub rsp, 28h +000C0E17: mov [rbp+var_18], rdi +000C0E1B: mov [rbp+var_20], rsi +000C0E1F: mov [rbp+var_28], rdx +000C0E23: mov rax, [rbp+var_28] +000C0E27: mov rdi, rax +000C0E2A: call __ZSt7forwardIKP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C0E2F: mov rbx, rax +000C0E32: mov rax, [rbp+var_20] +000C0E36: mov rdi, rax +000C0E39: call __ZSt4moveIRSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEONSt16remove_referenceIT_E4typeEOS7_; std::move &>(std::_Mem_fn &&&) +000C0E3E: mov rcx, rax +000C0E41: mov rax, [rbp+var_18] +000C0E45: mov rdx, rbx +000C0E48: mov rsi, rcx +000C0E4B: mov rdi, rax +000C0E4E: call __ZNSt5tupleIJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2IS4_KS5_vEEOT_OT0_; std::tuple,EloTCMUpdaterDevice*>::tuple,EloTCMUpdaterDevice* const,void>(std::_Mem_fn &&,EloTCMUpdaterDevice* const &&) +000C0E53: add rsp, 28h +000C0E57: pop rbx +000C0E58: pop rbp +000C0E59: retn + +### FUNC 000C0E5A - 000C0ECF (117 bytes) name=_ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000C0E5A: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMUpdaterDevice*)>>> std::make_shared ()(EloTCMUpdaterDevice*)>>, std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&)' +000C0E5B: mov rbp, rsp +000C0E5E: push rbx +000C0E5F: sub rsp, 28h +000C0E63: mov [rbp+var_28], rdi +000C0E67: mov [rbp+var_30], rsi +000C0E6B: mov rax, [rbp+var_30] +000C0E6F: mov rdi, rax +000C0E72: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C0E77: mov rbx, rax +000C0E7A: lea rax, [rbp+var_11] +000C0E7E: mov rdi, rax +000C0E81: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2Ev; std::allocator ()(EloTCMUpdaterDevice*)>>>::allocator(void) +000C0E86: mov rax, [rbp+var_28] +000C0E8A: lea rcx, [rbp+var_11] +000C0E8E: mov rdx, rbx +000C0E91: mov rsi, rcx +000C0E94: mov rdi, rax +000C0E97: call __ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_; std::allocate_shared ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::allocator ()(EloTCMUpdaterDevice*)>>> const&,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C0E9C: lea rax, [rbp+var_11] +000C0EA0: mov rdi, rax +000C0EA3: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C0EA8: jmp short loc_C0EC4 +000C0EAA: mov rbx, rax +000C0EAD: lea rax, [rbp+var_11] +000C0EB1: mov rdi, rax +000C0EB4: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C0EB9: mov rax, rbx +000C0EBC: mov rdi, rax; struct _Unwind_Exception * +000C0EBF: call __Unwind_Resume +000C0EC4: mov rax, [rbp+var_28] +000C0EC8: add rsp, 28h +000C0ECC: pop rbx +000C0ECD: pop rbp +000C0ECE: retn + +### FUNC 000C0ED0 - 000C0EE5 (21 bytes) name=_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev +000C0ED0: push rbp; Alternative name is 'std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(void)' +000C0ED1: mov rbp, rsp +000C0ED4: mov [rbp+var_8], rdi +000C0ED8: mov rax, [rbp+var_8] +000C0EDC: mov qword ptr [rax], 0 +000C0EE3: pop rbp +000C0EE4: retn + +### FUNC 000C0EE6 - 000C0F3C (86 bytes) name=_ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS9_EEEEvEEOS_IT_LS3_2EE +000C0EE6: push rbp; Alternative name is 'std::__shared_ptr::__shared_ptr ()(EloTCMUpdaterDevice*)>>, void>(std::__shared_ptr&& ()(EloTCMUpdaterDevice*)>>, (__gnu_cxx::_Lock_policy)2>)' +000C0EE7: mov rbp, rsp +000C0EEA: sub rsp, 10h +000C0EEE: mov [rbp+var_8], rdi +000C0EF2: mov [rbp+var_10], rsi +000C0EF6: mov rax, [rbp+var_10] +000C0EFA: mov rdx, [rax] +000C0EFD: mov rax, [rbp+var_8] +000C0F01: mov [rax], rdx +000C0F04: mov rax, [rbp+var_8] +000C0F08: add rax, 8 +000C0F0C: mov rdi, rax +000C0F0F: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(void) +000C0F14: mov rax, [rbp+var_10] +000C0F18: lea rdx, [rax+8] +000C0F1C: mov rax, [rbp+var_8] +000C0F20: add rax, 8 +000C0F24: mov rsi, rdx +000C0F27: mov rdi, rax +000C0F2A: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::_M_swap(std::__shared_count<(__gnu_cxx::_Lock_policy)2>&) +000C0F2F: mov rax, [rbp+var_10] +000C0F33: mov qword ptr [rax], 0 +000C0F3A: leave +000C0F3B: retn + +### FUNC 000C0F3C - 000C10E4 (424 bytes) name=_ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvT_S7_St20forward_iterator_tag +000C0F3C: push rbp +000C0F3D: mov rbp, rsp +000C0F40: sub rsp, 40h +000C0F44: mov [rbp+var_28], rdi +000C0F48: mov [rbp+var_30], rsi +000C0F4C: mov [rbp+var_40], rdx +000C0F50: mov rdx, [rbp+var_40] +000C0F54: mov rax, [rbp+var_30] +000C0F58: mov rsi, rdx +000C0F5B: mov rdi, rax +000C0F5E: call __ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_; std::distance<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000C0F63: mov [rbp+var_8], rax +000C0F67: mov rax, [rbp+var_28] +000C0F6B: mov rdi, rax +000C0F6E: call __ZNKSt6vectorIhSaIhEE8capacityEv; std::vector>::capacity(void) +000C0F73: cmp rax, [rbp+var_8] +000C0F77: setb al +000C0F7A: test al, al +000C0F7C: jz loc_C102E +000C0F82: mov rcx, [rbp+var_40] +000C0F86: mov rdx, [rbp+var_30] +000C0F8A: mov rsi, [rbp+var_8] +000C0F8E: mov rax, [rbp+var_28] +000C0F92: mov rdi, rax +000C0F95: call __ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPhS1_EEEES5_mT_S7_; std::vector>::_M_allocate_and_copy<__gnu_cxx::__normal_iterator>>>(ulong,__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000C0F9A: mov [rbp+var_10], rax +000C0F9E: mov rax, [rbp+var_28] +000C0FA2: mov rdi, rax +000C0FA5: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C0FAA: mov rdx, rax +000C0FAD: mov rax, [rbp+var_28] +000C0FB1: mov rcx, [rax+8] +000C0FB5: mov rax, [rbp+var_28] +000C0FB9: mov rax, [rax] +000C0FBC: mov rsi, rcx +000C0FBF: mov rdi, rax +000C0FC2: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C0FC7: mov rax, [rbp+var_28] +000C0FCB: mov rax, [rax+10h] +000C0FCF: mov rdx, rax +000C0FD2: mov rax, [rbp+var_28] +000C0FD6: mov rax, [rax] +000C0FD9: sub rdx, rax +000C0FDC: mov rax, rdx +000C0FDF: mov rdx, rax +000C0FE2: mov rax, [rbp+var_28] +000C0FE6: mov rcx, [rax] +000C0FE9: mov rax, [rbp+var_28] +000C0FED: mov rsi, rcx +000C0FF0: mov rdi, rax +000C0FF3: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C0FF8: mov rax, [rbp+var_28] +000C0FFC: mov rdx, [rbp+var_10] +000C1000: mov [rax], rdx +000C1003: mov rax, [rbp+var_28] +000C1007: mov rdx, [rax] +000C100A: mov rax, [rbp+var_8] +000C100E: add rdx, rax +000C1011: mov rax, [rbp+var_28] +000C1015: mov [rax+8], rdx +000C1019: mov rax, [rbp+var_28] +000C101D: mov rdx, [rax+8] +000C1021: mov rax, [rbp+var_28] +000C1025: mov [rax+10h], rdx +000C1029: jmp locret_C10E2 +000C102E: mov rax, [rbp+var_28] +000C1032: mov rdi, rax +000C1035: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C103A: cmp rax, [rbp+var_8] +000C103E: setnb al +000C1041: test al, al +000C1043: jz short loc_C1073 +000C1045: mov rax, [rbp+var_28] +000C1049: mov rdx, [rax] +000C104C: mov rcx, [rbp+var_40] +000C1050: mov rax, [rbp+var_30] +000C1054: mov rsi, rcx +000C1057: mov rdi, rax +000C105A: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_; std::copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C105F: mov rdx, rax +000C1062: mov rax, [rbp+var_28] +000C1066: mov rsi, rdx +000C1069: mov rdi, rax +000C106C: call __ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh; std::vector>::_M_erase_at_end(uchar *) +000C1071: jmp short locret_C10E2 +000C1073: mov rax, [rbp+var_30] +000C1077: mov [rbp+var_20], rax +000C107B: mov rax, [rbp+var_28] +000C107F: mov rdi, rax +000C1082: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C1087: mov rdx, rax +000C108A: lea rax, [rbp+var_20] +000C108E: mov rsi, rdx +000C1091: mov rdi, rax +000C1094: call __ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_; std::advance<__gnu_cxx::__normal_iterator>>,ulong>(__gnu_cxx::__normal_iterator>> &,ulong) +000C1099: mov rax, [rbp+var_28] +000C109D: mov rdx, [rax] +000C10A0: mov rcx, [rbp+var_20] +000C10A4: mov rax, [rbp+var_30] +000C10A8: mov rsi, rcx +000C10AB: mov rdi, rax +000C10AE: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_; std::copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C10B3: mov rax, [rbp+var_28] +000C10B7: mov rdi, rax +000C10BA: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C10BF: mov rcx, rax +000C10C2: mov rax, [rbp+var_28] +000C10C6: mov rdx, [rax+8] +000C10CA: mov rsi, [rbp+var_40] +000C10CE: mov rax, [rbp+var_20] +000C10D2: mov rdi, rax +000C10D5: call __ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E; std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator>>,uchar *,uchar>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *,std::allocator &) +000C10DA: mov rdx, [rbp+var_28] +000C10DE: mov [rdx+8], rax +000C10E2: leave +000C10E3: retn + +### FUNC 000C10E4 - 000C1119 (53 bytes) name=_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev +000C10E4: push rbp; Alternative name is 'std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base()' +000C10E5: mov rbp, rsp +000C10E8: sub rsp, 10h +000C10EC: mov [rbp+var_8], rdi +000C10F0: mov rax, [rbp+var_8] +000C10F4: mov rdx, cs:_ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE_ptr +000C10FB: lea rdx, [rdx+10h] +000C10FF: mov [rax], rdx +000C1102: mov eax, 0 +000C1107: test eax, eax +000C1109: jz short locret_C1117 +000C110B: mov rax, [rbp+var_8] +000C110F: mov rdi, rax; void * +000C1112: call __ZdlPv; operator delete(void *) +000C1117: leave +000C1118: retn + +### FUNC 000C111A - 000C1140 (38 bytes) name=_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED0Ev +000C111A: push rbp +000C111B: mov rbp, rsp +000C111E: sub rsp, 10h +000C1122: mov [rbp+var_8], rdi +000C1126: mov rax, [rbp+var_8] +000C112A: mov rdi, rax +000C112D: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000C1132: mov rax, [rbp+var_8] +000C1136: mov rdi, rax; void * +000C1139: call __ZdlPv; operator delete(void *) +000C113E: leave +000C113F: retn + +### FUNC 000C1140 - 000C114A (10 bytes) name=_ZNSt14unary_functionIP19EloTCMUpdaterDevicebEC2Ev +000C1140: push rbp; Alternative name is 'std::unary_function::unary_function(void)' +000C1141: mov rbp, rsp +000C1144: mov [rbp+var_8], rdi +000C1148: pop rbp +000C1149: retn + +### FUNC 000C114A - 000C1164 (26 bytes) name=_ZNSt31_Maybe_unary_or_binary_functionIbJP19EloTCMUpdaterDeviceEEC2Ev +000C114A: push rbp; Alternative name is 'std::_Maybe_unary_or_binary_function::_Maybe_unary_or_binary_function(void)' +000C114B: mov rbp, rsp +000C114E: sub rsp, 10h +000C1152: mov [rbp+var_8], rdi +000C1156: mov rax, [rbp+var_8] +000C115A: mov rdi, rax +000C115D: call __ZNSt14unary_functionIP19EloTCMUpdaterDevicebEC2Ev; std::unary_function::unary_function(void) +000C1162: leave +000C1163: retn + +### FUNC 000C1164 - 000C11A2 (62 bytes) name=_ZNSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEC2ES2_ +000C1164: push rbp; Alternative name is 'std::_Mem_fn::_Mem_fn(bool (EloTCMUpdaterDevice::*)(void))' +000C1165: mov rbp, rsp +000C1168: sub rsp, 20h +000C116C: mov [rbp+var_8], rdi +000C1170: mov rax, rsi +000C1173: mov rcx, rdx +000C1176: mov rdx, rcx +000C1179: mov [rbp+var_20], rax +000C117D: mov [rbp+var_18], rdx +000C1181: mov rax, [rbp+var_8] +000C1185: mov rdi, rax +000C1188: call __ZNSt31_Maybe_unary_or_binary_functionIbJP19EloTCMUpdaterDeviceEEC2Ev; std::_Maybe_unary_or_binary_function::_Maybe_unary_or_binary_function(void) +000C118D: mov rcx, [rbp+var_8] +000C1191: mov rax, [rbp+var_20] +000C1195: mov rdx, [rbp+var_18] +000C1199: mov [rcx], rax +000C119C: mov [rcx+8], rdx +000C11A0: leave +000C11A1: retn + +### FUNC 000C11A2 - 000C11BC (26 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2Ev +000C11A2: push rbp; Alternative name is 'std::allocator ()(EloTCMUpdaterDevice*)>>>::allocator(void)' +000C11A3: mov rbp, rsp +000C11A6: sub rsp, 10h +000C11AA: mov [rbp+var_8], rdi +000C11AE: mov rax, [rbp+var_8] +000C11B2: mov rdi, rax +000C11B5: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2Ev; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::new_allocator(void) +000C11BA: leave +000C11BB: retn + +### FUNC 000C11BC - 000C11D6 (26 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev +000C11BC: push rbp; Alternative name is 'std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator()' +000C11BD: mov rbp, rsp +000C11C0: sub rsp, 10h +000C11C4: mov [rbp+var_8], rdi +000C11C8: mov rax, [rbp+var_8] +000C11CC: mov rdi, rax +000C11CF: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEED2Ev; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::~new_allocator() +000C11D4: leave +000C11D5: retn + +### FUNC 000C11D6 - 000C121B (69 bytes) name=_ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +000C11D6: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMUpdaterDevice*)>>> std::allocate_shared ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::allocator ()(EloTCMUpdaterDevice*)>>> const&, std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&)' +000C11D7: mov rbp, rsp +000C11DA: push rbx +000C11DB: sub rsp, 38h +000C11DF: mov [rbp+var_28], rdi +000C11E3: mov [rbp+var_30], rsi +000C11E7: mov [rbp+var_38], rdx +000C11EB: mov rax, [rbp+var_38] +000C11EF: mov rdi, rax +000C11F2: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C11F7: mov rdx, rax +000C11FA: mov rcx, [rbp+var_30] +000C11FE: mov rax, [rbp+var_28] +000C1202: mov [rsp+40h+var_40], bl +000C1205: mov rsi, rcx +000C1208: mov rdi, rax +000C120B: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_; std::shared_ptr ()(EloTCMUpdaterDevice*)>>>::shared_ptr ()(EloTCMUpdaterDevice*)>>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_make_shared_tag,std::allocator ()(EloTCMUpdaterDevice*)>>> const&,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C1210: mov rax, [rbp+var_28] +000C1214: add rsp, 38h +000C1218: pop rbx +000C1219: pop rbp +000C121A: retn + +### FUNC 000C121C - 000C124E (50 bytes) name=_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_ +000C121C: push rbp +000C121D: mov rbp, rsp +000C1220: mov [rbp+var_18], rdi +000C1224: mov [rbp+var_20], rsi +000C1228: mov rax, [rbp+var_20] +000C122C: mov rax, [rax] +000C122F: mov [rbp+var_8], rax +000C1233: mov rax, [rbp+var_18] +000C1237: mov rdx, [rax] +000C123A: mov rax, [rbp+var_20] +000C123E: mov [rax], rdx +000C1241: mov rax, [rbp+var_18] +000C1245: mov rdx, [rbp+var_8] +000C1249: mov [rax], rdx +000C124C: pop rbp +000C124D: retn + +### FUNC 000C124E - 000C1288 (58 bytes) name=_ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_ +000C124E: push rbp +000C124F: mov rbp, rsp +000C1252: push rbx +000C1253: sub rsp, 48h +000C1257: mov [rbp+var_30], rdi +000C125B: mov [rbp+var_40], rsi +000C125F: lea rax, [rbp+var_30] +000C1263: mov rdi, rax +000C1266: call __ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS8_; std::__iterator_category<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>> const&) +000C126B: mov rdx, [rbp+var_40] +000C126F: mov rax, [rbp+var_30] +000C1273: mov [rsp+50h+var_50], bl +000C1276: mov rsi, rdx +000C1279: mov rdi, rax +000C127C: call __ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_St26random_access_iterator_tag; std::__distance<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::random_access_iterator_tag) +000C1281: add rsp, 48h +000C1285: pop rbx +000C1286: pop rbp +000C1287: retn + +### FUNC 000C1288 - 000C131F (151 bytes) name=_ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPhS1_EEEES5_mT_S7_ +000C1288: push rbp +000C1289: mov rbp, rsp +000C128C: push rbx +000C128D: sub rsp, 48h +000C1291: mov [rbp+var_28], rdi +000C1295: mov [rbp+var_30], rsi +000C1299: mov [rbp+var_40], rdx +000C129D: mov [rbp+var_50], rcx +000C12A1: mov rax, [rbp+var_28] +000C12A5: mov rdx, [rbp+var_30] +000C12A9: mov rsi, rdx +000C12AC: mov rdi, rax +000C12AF: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000C12B4: mov [rbp+var_18], rax +000C12B8: mov rax, [rbp+var_28] +000C12BC: mov rdi, rax +000C12BF: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C12C4: mov rcx, rax +000C12C7: mov rdx, [rbp+var_18] +000C12CB: mov rsi, [rbp+var_50] +000C12CF: mov rax, [rbp+var_40] +000C12D3: mov rdi, rax +000C12D6: call __ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E; std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator>>,uchar *,uchar>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *,std::allocator &) +000C12DB: mov rax, [rbp+var_18] +000C12DF: jmp short loc_C1318 +000C12E1: mov rdi, rax; void * +000C12E4: call ___cxa_begin_catch +000C12E9: mov rax, [rbp+var_28] +000C12ED: mov rdx, [rbp+var_30] +000C12F1: mov rcx, [rbp+var_18] +000C12F5: mov rsi, rcx +000C12F8: mov rdi, rax +000C12FB: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C1300: call ___cxa_rethrow +000C1305: mov rbx, rax +000C1308: call ___cxa_end_catch +000C130D: mov rax, rbx +000C1310: mov rdi, rax; struct _Unwind_Exception * +000C1313: call __Unwind_Resume +000C1318: add rsp, 48h +000C131C: pop rbx +000C131D: pop rbp +000C131E: retn + +### FUNC 000C131F - 000C1365 (70 bytes) name=_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +000C131F: push rbp +000C1320: mov rbp, rsp +000C1323: push rbx +000C1324: sub rsp, 28h +000C1328: mov [rbp+var_20], rdi +000C132C: mov [rbp+var_30], rsi +000C1330: mov [rbp+var_28], rdx +000C1334: mov rax, [rbp+var_30] +000C1338: mov rdi, rax +000C133B: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES8_; std::__miter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000C1340: mov rbx, rax +000C1343: mov rax, [rbp+var_20] +000C1347: mov rdi, rax +000C134A: call __ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES8_; std::__miter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000C134F: mov rdx, [rbp+var_28] +000C1353: mov rsi, rbx +000C1356: mov rdi, rax +000C1359: call __ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET1_T0_S8_S7_; std::__copy_move_a2>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C135E: add rsp, 28h +000C1362: pop rbx +000C1363: pop rbp +000C1364: retn + +### FUNC 000C1365 - 000C13A7 (66 bytes) name=_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEmEvRT_T0_ +000C1365: push rbp +000C1366: mov rbp, rsp +000C1369: push rbx +000C136A: sub rsp, 38h +000C136E: mov [rbp+var_28], rdi +000C1372: mov [rbp+var_30], rsi +000C1376: mov rax, [rbp+var_30] +000C137A: mov [rbp+var_18], rax +000C137E: mov rax, [rbp+var_28] +000C1382: mov rdi, rax +000C1385: call __ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS8_; std::__iterator_category<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>> const&) +000C138A: mov rdx, [rbp+var_18] +000C138E: mov rax, [rbp+var_28] +000C1392: mov [rsp+40h+var_40], bl +000C1395: mov rsi, rdx +000C1398: mov rdi, rax +000C139B: call __ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag; std::__advance<__gnu_cxx::__normal_iterator>>,long>(__gnu_cxx::__normal_iterator>> &,long,std::random_access_iterator_tag) +000C13A0: add rsp, 38h +000C13A4: pop rbx +000C13A5: pop rbp +000C13A6: retn + +### FUNC 000C13A7 - 000C13D8 (49 bytes) name=_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_hET0_T_S8_S7_RSaIT1_E +000C13A7: push rbp +000C13A8: mov rbp, rsp +000C13AB: sub rsp, 20h +000C13AF: mov [rbp+var_10], rdi +000C13B3: mov [rbp+var_20], rsi +000C13B7: mov [rbp+var_18], rdx +000C13BB: mov [rbp+var_8], rcx +000C13BF: mov rdx, [rbp+var_18] +000C13C3: mov rcx, [rbp+var_20] +000C13C7: mov rax, [rbp+var_10] +000C13CB: mov rsi, rcx +000C13CE: mov rdi, rax +000C13D1: call __ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_; std::uninitialized_copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C13D6: leave +000C13D7: retn + +### FUNC 000C13D8 - 000C13E2 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2Ev +000C13D8: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::new_allocator(void)' +000C13D9: mov rbp, rsp +000C13DC: mov [rbp+var_8], rdi +000C13E0: pop rbp +000C13E1: retn + +### FUNC 000C13E2 - 000C13EC (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEED2Ev +000C13E2: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::~new_allocator()' +000C13E3: mov rbp, rsp +000C13E6: mov [rbp+var_8], rdi +000C13EA: pop rbp +000C13EB: retn + +### FUNC 000C13EC - 000C142D (65 bytes) name=_ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C13EC: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMUpdaterDevice*)>>>::shared_ptr ()(EloTCMUpdaterDevice*)>>>, std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_make_shared_tag, std::allocator ()(EloTCMUpdaterDevice*)>>> const&, std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&)' +000C13ED: mov rbp, rsp +000C13F0: push rbx +000C13F1: sub rsp, 28h +000C13F5: mov [rbp+var_18], rdi +000C13F9: mov [rbp+var_20], rsi +000C13FD: mov [rbp+var_28], rdx +000C1401: mov rax, [rbp+var_28] +000C1405: mov rdi, rax +000C1408: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C140D: mov rdx, rax +000C1410: mov rax, [rbp+var_18] +000C1414: mov rcx, [rbp+var_20] +000C1418: mov [rsp+30h+var_30], bl +000C141B: mov rsi, rcx +000C141E: mov rdi, rax +000C1421: call __ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_; std::__shared_ptr ()(EloTCMUpdaterDevice*)>>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr ()(EloTCMUpdaterDevice*)>>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_make_shared_tag,std::allocator ()(EloTCMUpdaterDevice*)>>> const&,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C1426: add rsp, 28h +000C142A: pop rbx +000C142B: pop rbp +000C142C: retn + +### FUNC 000C142D - 000C1437 (10 bytes) name=_ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS8_ +000C142D: push rbp +000C142E: mov rbp, rsp +000C1431: mov [rbp+var_8], rdi +000C1435: pop rbp +000C1436: retn + +### FUNC 000C1437 - 000C145C (37 bytes) name=_ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_St26random_access_iterator_tag +000C1437: push rbp +000C1438: mov rbp, rsp +000C143B: sub rsp, 20h +000C143F: mov [rbp+var_10], rdi +000C1443: mov [rbp+var_20], rsi +000C1447: lea rdx, [rbp+var_10] +000C144B: lea rax, [rbp+var_20] +000C144F: mov rsi, rdx +000C1452: mov rdi, rax +000C1455: call __ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_; __gnu_cxx::operator->>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C145A: leave +000C145B: retn + +### FUNC 000C145C - 000C1476 (26 bytes) name=_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Miter_baseIT_E13iterator_typeES8_ +000C145C: push rbp +000C145D: mov rbp, rsp +000C1460: sub rsp, 10h +000C1464: mov [rbp+var_10], rdi +000C1468: mov rax, [rbp+var_10] +000C146C: mov rdi, rax +000C146F: call __ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb0EE7_S_baseES6_; std::_Iter_base<__gnu_cxx::__normal_iterator>>,false>::_S_base(__gnu_cxx::__normal_iterator>>) +000C1474: leave +000C1475: retn + +### FUNC 000C1476 - 000C14CE (88 bytes) name=_ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET1_T0_S8_S7_ +000C1476: push rbp +000C1477: mov rbp, rsp +000C147A: push r12 +000C147C: push rbx +000C147D: sub rsp, 20h +000C1481: mov [rbp+var_20], rdi +000C1485: mov [rbp+var_30], rsi +000C1489: mov [rbp+var_28], rdx +000C148D: mov rax, [rbp+var_28] +000C1491: mov rdi, rax +000C1494: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000C1499: mov r12, rax +000C149C: mov rax, [rbp+var_30] +000C14A0: mov rdi, rax +000C14A3: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000C14A8: mov rbx, rax +000C14AB: mov rax, [rbp+var_20] +000C14AF: mov rdi, rax +000C14B2: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000C14B7: mov rdx, r12 +000C14BA: mov rsi, rbx +000C14BD: mov rdi, rax +000C14C0: call __ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_; std::__copy_move_a(uchar *,uchar *,uchar *) +000C14C5: add rsp, 20h +000C14C9: pop rbx +000C14CA: pop r12 +000C14CC: pop rbp +000C14CD: retn + +### FUNC 000C14CE - 000C14F3 (37 bytes) name=_ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +000C14CE: push rbp +000C14CF: mov rbp, rsp +000C14D2: sub rsp, 10h +000C14D6: mov [rbp+var_8], rdi +000C14DA: mov [rbp+var_10], rsi +000C14DE: lea rdx, [rbp+var_10] +000C14E2: mov rax, [rbp+var_8] +000C14E6: mov rsi, rdx +000C14E9: mov rdi, rax +000C14EC: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEpLERKl; __gnu_cxx::__normal_iterator>>::operator+=(long const&) +000C14F1: leave +000C14F2: retn + +### FUNC 000C14F3 - 000C1520 (45 bytes) name=_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_ +000C14F3: push rbp +000C14F4: mov rbp, rsp +000C14F7: sub rsp, 20h +000C14FB: mov [rbp+var_10], rdi +000C14FF: mov [rbp+var_20], rsi +000C1503: mov [rbp+var_18], rdx +000C1507: mov rdx, [rbp+var_18] +000C150B: mov rcx, [rbp+var_20] +000C150F: mov rax, [rbp+var_10] +000C1513: mov rsi, rcx +000C1516: mov rdi, rax +000C1519: call __ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES4_EET0_T_SA_S9_; std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C151E: leave +000C151F: retn + +### FUNC 000C1520 - 000C15C4 (164 bytes) name=_ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C1520: push rbp; Alternative name is 'std::__shared_ptr ()(EloTCMUpdaterDevice*)>>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr ()(EloTCMUpdaterDevice*)>>>, std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_make_shared_tag, std::allocator ()(EloTCMUpdaterDevice*)>>> const&, std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&)' +000C1521: mov rbp, rsp +000C1524: push rbx +000C1525: sub rsp, 38h +000C1529: mov [rbp+var_28], rdi +000C152D: mov [rbp+var_30], rsi +000C1531: mov [rbp+var_38], rdx +000C1535: mov rax, [rbp+var_28] +000C1539: mov qword ptr [rax], 0 +000C1540: mov rax, [rbp+var_38] +000C1544: mov rdi, rax +000C1547: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C154C: mov rdx, rax +000C154F: mov rax, [rbp+var_28] +000C1553: lea rdi, [rax+8] +000C1557: mov rax, [rbp+var_30] +000C155B: mov [rsp+40h+var_40], bl +000C155E: mov rcx, rdx +000C1561: mov rdx, rax +000C1564: mov esi, 0 +000C1569: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_make_shared_tag,std::thread::_Impl ()(EloTCMUpdaterDevice*)>> *,std::allocator ()(EloTCMUpdaterDevice*)>>> const&,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C156E: mov rax, [rbp+var_28] +000C1572: lea rdx, [rax+8] +000C1576: mov rax, cs:_ZTISt19_Sp_make_shared_tag_ptr +000C157D: mov rsi, rax +000C1580: mov rdi, rdx +000C1583: call __ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) +000C1588: mov [rbp+var_18], rax +000C158C: mov rax, [rbp+var_28] +000C1590: mov rdx, [rbp+var_18] +000C1594: mov [rax], rdx +000C1597: mov rax, [rbp+var_28] +000C159B: mov rdx, [rax] +000C159E: mov rax, [rbp+var_28] +000C15A2: mov rax, [rax] +000C15A5: mov rcx, [rbp+var_28] +000C15A9: add rcx, 8 +000C15AD: mov rsi, rax +000C15B0: mov rdi, rcx +000C15B3: mov eax, 0 +000C15B8: call __ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz; std::__enable_shared_from_this_helper<(__gnu_cxx::_Lock_policy)2>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&,...) +000C15BD: add rsp, 38h +000C15C1: pop rbx +000C15C2: pop rbp +000C15C3: retn + +### FUNC 000C15C4 - 000C15D2 (14 bytes) name=_ZNSt10_Iter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEELb0EE7_S_baseES6_ +000C15C4: push rbp +000C15C5: mov rbp, rsp +000C15C8: mov [rbp+var_10], rdi +000C15CC: mov rax, [rbp+var_10] +000C15D0: pop rbp +000C15D1: retn + +### FUNC 000C15D2 - 000C15FC (42 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEpLERKl +000C15D2: push rbp +000C15D3: mov rbp, rsp +000C15D6: mov [rbp+var_8], rdi +000C15DA: mov [rbp+var_10], rsi +000C15DE: mov rax, [rbp+var_8] +000C15E2: mov rdx, [rax] +000C15E5: mov rax, [rbp+var_10] +000C15E9: mov rax, [rax] +000C15EC: add rdx, rax +000C15EF: mov rax, [rbp+var_8] +000C15F3: mov [rax], rdx +000C15F6: mov rax, [rbp+var_8] +000C15FA: pop rbp +000C15FB: retn + +### FUNC 000C15FC - 000C1629 (45 bytes) name=_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES4_EET0_T_SA_S9_ +000C15FC: push rbp +000C15FD: mov rbp, rsp +000C1600: sub rsp, 20h +000C1604: mov [rbp+var_10], rdi +000C1608: mov [rbp+var_20], rsi +000C160C: mov [rbp+var_18], rdx +000C1610: mov rdx, [rbp+var_18] +000C1614: mov rcx, [rbp+var_20] +000C1618: mov rax, [rbp+var_10] +000C161C: mov rsi, rcx +000C161F: mov rdi, rax +000C1622: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEES2_ET0_T_S8_S7_; std::copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C1627: leave +000C1628: retn + +### FUNC 000C1629 - 000C1637 (14 bytes) name=_ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C1629: push rbp +000C162A: mov rbp, rsp +000C162D: mov [rbp+var_8], rdi +000C1631: mov rax, [rbp+var_8] +000C1635: pop rbp +000C1636: retn + +### FUNC 000C1637 - 000C1645 (14 bytes) name=_ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +000C1637: push rbp +000C1638: mov rbp, rsp +000C163B: mov [rbp+var_8], rdi +000C163F: mov rax, [rbp+var_8] +000C1643: pop rbp +000C1644: retn + +### FUNC 000C1646 - 000C172C (230 bytes) name=_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +000C1646: push rbp; Alternative name is 'std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_make_shared_tag, std::thread::_Impl ()(EloTCMUpdaterDevice*)>> *, std::allocator ()(EloTCMUpdaterDevice*)>>> const&, std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&)' +000C1647: mov rbp, rsp +000C164A: push rbx +000C164B: sub rsp, 38h +000C164F: mov [rbp+var_28], rdi +000C1653: mov [rbp+var_30], rsi +000C1657: mov [rbp+var_38], rdx +000C165B: mov [rbp+var_40], rcx +000C165F: mov rax, [rbp+var_28] +000C1663: mov qword ptr [rax], 0 +000C166A: mov rdx, [rbp+var_38] +000C166E: lea rax, [rbp+var_19] +000C1672: mov rsi, rdx +000C1675: mov rdi, rax +000C1678: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E; std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocator ()(EloTCMUpdaterDevice*)>>>(std::allocator ()(EloTCMUpdaterDevice*)>>> const&) +000C167D: lea rax, [rbp+var_19] +000C1681: mov esi, 1 +000C1686: mov rdi, rax +000C1689: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m; std::allocator_traits ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::allocate(std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,ulong) +000C168E: mov [rbp+var_18], rax +000C1692: mov rax, [rbp+var_40] +000C1696: mov rdi, rax +000C1699: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C169E: mov rbx, rax +000C16A1: mov rax, [rbp+var_38] +000C16A5: mov rdi, rax +000C16A8: call __ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move ()(EloTCMUpdaterDevice*)>>> const&>(std::allocator ()(EloTCMUpdaterDevice*)>>> const&&&) +000C16AD: mov rdx, rax +000C16B0: mov rsi, [rbp+var_18] +000C16B4: lea rax, [rbp+var_19] +000C16B8: mov rcx, rbx +000C16BB: mov rdi, rax +000C16BE: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000C16C3: mov rax, [rbp+var_28] +000C16C7: mov rdx, [rbp+var_18] +000C16CB: mov [rax], rdx +000C16CE: lea rax, [rbp+var_19] +000C16D2: mov rdi, rax +000C16D5: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000C16DA: jmp short loc_C1725 +000C16DC: mov rdi, rax; void * +000C16DF: call ___cxa_begin_catch +000C16E4: mov rcx, [rbp+var_18] +000C16E8: lea rax, [rbp+var_19] +000C16EC: mov edx, 1 +000C16F1: mov rsi, rcx +000C16F4: mov rdi, rax +000C16F7: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m; std::allocator_traits ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::deallocate(std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000C16FC: call ___cxa_rethrow +000C1701: mov rbx, rax +000C1704: call ___cxa_end_catch +000C1709: jmp short loc_C170E +000C170B: mov rbx, rax +000C170E: lea rax, [rbp+var_19] +000C1712: mov rdi, rax +000C1715: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000C171A: mov rax, rbx +000C171D: mov rdi, rax; struct _Unwind_Exception * +000C1720: call __Unwind_Resume +000C1725: add rsp, 38h +000C1729: pop rbx +000C172A: pop rbp +000C172B: retn + +### FUNC 000C172C - 000C1775 (73 bytes) name=_ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000C172C: push rbp +000C172D: mov rbp, rsp +000C1730: sub rsp, 10h +000C1734: mov [rbp+var_8], rdi +000C1738: mov [rbp+var_10], rsi +000C173C: mov rax, [rbp+var_8] +000C1740: mov rax, [rax] +000C1743: test rax, rax +000C1746: jz short loc_C176E +000C1748: mov rax, [rbp+var_8] +000C174C: mov rax, [rax] +000C174F: mov rax, [rax] +000C1752: add rax, 20h ; ' ' +000C1756: mov rax, [rax] +000C1759: mov rdx, [rbp+var_8] +000C175D: mov rdx, [rdx] +000C1760: mov rcx, [rbp+var_10] +000C1764: mov rsi, rcx +000C1767: mov rdi, rdx +000C176A: call rax +000C176C: jmp short locret_C1773 +000C176E: mov eax, 0 +000C1773: leave +000C1774: retn + +### FUNC 000C1775 - 000C17CD (88 bytes) name=_ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz +000C1775: push rbp +000C1776: mov rbp, rsp +000C1779: sub rsp, 40h +000C177D: mov [rbp+var_A8], rsi +000C1784: mov [rbp+var_A0], rdx +000C178B: mov [rbp+var_98], rcx +000C1792: mov [rbp+var_90], r8 +000C1799: mov [rbp+var_88], r9 +000C17A0: test al, al +000C17A2: jz short loc_C17C4 +000C17A4: movaps [rbp+var_80], xmm0 +000C17A8: movaps [rbp+var_70], xmm1 +000C17AC: movaps [rbp+var_60], xmm2 +000C17B0: movaps [rbp+var_50], xmm3 +000C17B4: movaps [rbp+var_40], xmm4 +000C17B8: movaps [rbp+var_30], xmm5 +000C17BC: movaps [rbp+var_20], xmm6 +000C17C0: movaps [rbp+var_10], xmm7 +000C17C4: mov [rbp+var_B8], rdi +000C17CB: leave +000C17CC: retn + +### FUNC 000C17CE - 000C17EC (30 bytes) name=_ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000C17CE: push rbp; Alternative name is 'std::allocator ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::allocator ()(EloTCMUpdaterDevice*)>>>(std::allocator ()(EloTCMUpdaterDevice*)>>> const&)' +000C17CF: mov rbp, rsp +000C17D2: sub rsp, 10h +000C17D6: mov [rbp+var_8], rdi +000C17DA: mov [rbp+var_10], rsi +000C17DE: mov rax, [rbp+var_8] +000C17E2: mov rdi, rax +000C17E5: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::new_allocator(void) +000C17EA: leave +000C17EB: retn + +### FUNC 000C17EC - 000C1806 (26 bytes) name=_ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +000C17EC: push rbp; Alternative name is 'std::allocator ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::~allocator()' +000C17ED: mov rbp, rsp +000C17F0: sub rsp, 10h +000C17F4: mov [rbp+var_8], rdi +000C17F8: mov rax, [rbp+var_8] +000C17FC: mov rdi, rax +000C17FF: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~new_allocator() +000C1804: leave +000C1805: retn + +### FUNC 000C1806 - 000C1830 (42 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000C1806: push rbp +000C1807: mov rbp, rsp +000C180A: sub rsp, 10h +000C180E: mov [rbp+var_8], rdi +000C1812: mov [rbp+var_10], rsi +000C1816: mov rcx, [rbp+var_10] +000C181A: mov rax, [rbp+var_8] +000C181E: mov edx, 0 +000C1823: mov rsi, rcx +000C1826: mov rdi, rax +000C1829: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocate(ulong,void const*) +000C182E: leave +000C182F: retn + +### FUNC 000C1830 - 000C1881 (81 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000C1830: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_IKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_' +000C1831: mov rbp, rsp +000C1834: push rbx +000C1835: sub rsp, 28h +000C1839: mov [rbp+var_18], rdi +000C183D: mov [rbp+var_20], rsi +000C1841: mov [rbp+var_28], rdx +000C1845: mov [rbp+var_30], rcx +000C1849: mov rax, [rbp+var_30] +000C184D: mov rdi, rax +000C1850: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1855: mov rbx, rax +000C1858: mov rax, [rbp+var_28] +000C185C: mov rdi, rax +000C185F: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>> const>(std::remove_reference ()(EloTCMUpdaterDevice*)>>> const>::type &) +000C1864: mov rdx, rax +000C1867: mov rsi, [rbp+var_20] +000C186B: mov rax, [rbp+var_18] +000C186F: mov rcx, rbx +000C1872: mov rdi, rax +000C1875: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_; std::allocator_traits ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::_S_construct ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>,std::allocator ()(EloTCMUpdaterDevice*)>>> const,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,std::allocator ()(EloTCMUpdaterDevice*)>>> const,std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&) +000C187A: add rsp, 28h +000C187E: pop rbx +000C187F: pop rbp +000C1880: retn + +### FUNC 000C1881 - 000C18AE (45 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +000C1881: push rbp +000C1882: mov rbp, rsp +000C1885: sub rsp, 20h +000C1889: mov [rbp+var_8], rdi +000C188D: mov [rbp+var_10], rsi +000C1891: mov [rbp+var_18], rdx +000C1895: mov rdx, [rbp+var_18] +000C1899: mov rcx, [rbp+var_10] +000C189D: mov rax, [rbp+var_8] +000C18A1: mov rsi, rcx +000C18A4: mov rdi, rax +000C18A7: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::deallocate(std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000C18AC: leave +000C18AD: retn + +### FUNC 000C18AE - 000C18B8 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +000C18AE: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::new_allocator(void)' +000C18AF: mov rbp, rsp +000C18B2: mov [rbp+var_8], rdi +000C18B6: pop rbp +000C18B7: retn + +### FUNC 000C18B8 - 000C18C2 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +000C18B8: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::~new_allocator()' +000C18B9: mov rbp, rsp +000C18BC: mov [rbp+var_8], rdi +000C18C0: pop rbp +000C18C1: retn + +### FUNC 000C18C2 - 000C190E (76 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +000C18C2: push rbp +000C18C3: mov rbp, rsp +000C18C6: sub rsp, 20h +000C18CA: mov [rbp+var_8], rdi +000C18CE: mov [rbp+var_10], rsi +000C18D2: mov [rbp+var_18], rdx +000C18D6: mov rax, [rbp+var_8] +000C18DA: mov rdi, rax +000C18DD: call __ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::max_size(void) +000C18E2: cmp rax, [rbp+var_10] +000C18E6: setb al +000C18E9: test al, al +000C18EB: jz short loc_C18F2 +000C18ED: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000C18F2: mov rdx, [rbp+var_10] +000C18F6: mov rax, rdx +000C18F9: shl rax, 3 +000C18FD: add rax, rdx +000C1900: shl rax, 3 +000C1904: mov rdi, rax; unsigned __int64 +000C1907: call __Znwm; operator new(ulong) +000C190C: leave +000C190D: retn + +### FUNC 000C190E - 000C195F (81 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +000C190E: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_IKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_' +000C190F: mov rbp, rsp +000C1912: push rbx +000C1913: sub rsp, 28h +000C1917: mov [rbp+var_18], rdi +000C191B: mov [rbp+var_20], rsi +000C191F: mov [rbp+var_28], rdx +000C1923: mov [rbp+var_30], rcx +000C1927: mov rax, [rbp+var_30] +000C192B: mov rdi, rax +000C192E: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1933: mov rbx, rax +000C1936: mov rax, [rbp+var_28] +000C193A: mov rdi, rax +000C193D: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>> const>(std::remove_reference ()(EloTCMUpdaterDevice*)>>> const>::type &) +000C1942: mov rdx, rax +000C1945: mov rsi, [rbp+var_20] +000C1949: mov rax, [rbp+var_18] +000C194D: mov rcx, rbx +000C1950: mov rdi, rax +000C1953: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::construct ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>,std::allocator ()(EloTCMUpdaterDevice*)>>> const,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2> *,std::allocator ()(EloTCMUpdaterDevice*)>>> const,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C1958: add rsp, 28h +000C195C: pop rbx +000C195D: pop rbp +000C195E: retn + +### FUNC 000C1960 - 000C1982 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +000C1960: push rbp +000C1961: mov rbp, rsp +000C1964: sub rsp, 20h +000C1968: mov [rbp+var_8], rdi +000C196C: mov [rbp+var_10], rsi +000C1970: mov [rbp+var_18], rdx +000C1974: mov rax, [rbp+var_10] +000C1978: mov rdi, rax; void * +000C197B: call __ZdlPv; operator delete(void *) +000C1980: leave +000C1981: retn + +### FUNC 000C1982 - 000C1996 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +000C1982: push rbp +000C1983: mov rbp, rsp +000C1986: mov [rbp+var_8], rdi +000C198A: mov rax, 38E38E38E38E38Eh +000C1994: pop rbp +000C1995: retn + +### FUNC 000C1996 - 000C1A50 (186 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +000C1996: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_IKSE_SC_EEEvPT_DpOT0_' +000C1997: mov rbp, rsp +000C199A: push r14 +000C199C: push r13 +000C199E: push r12 +000C19A0: push rbx +000C19A1: sub rsp, 30h +000C19A5: mov [rbp+var_38], rdi +000C19A9: mov [rbp+var_40], rsi +000C19AD: mov [rbp+var_48], rdx +000C19B1: mov [rbp+var_50], rcx +000C19B5: mov rax, [rbp+var_48] +000C19B9: mov rdi, rax +000C19BC: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>> const>(std::remove_reference ()(EloTCMUpdaterDevice*)>>> const>::type &) +000C19C1: mov rdx, rax +000C19C4: lea rax, [rbp+var_21] +000C19C8: mov rsi, rdx +000C19CB: mov rdi, rax +000C19CE: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB_; std::allocator ()(EloTCMUpdaterDevice*)>>>::allocator(std::allocator ()(EloTCMUpdaterDevice*)>>> const&) +000C19D3: lea r13, [rbp+var_21] +000C19D7: mov rax, [rbp+var_50] +000C19DB: mov rdi, rax +000C19DE: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C19E3: mov r14, rax +000C19E6: mov r12, [rbp+var_40] +000C19EA: mov rsi, r12; void * +000C19ED: mov edi, 48h ; 'H'; unsigned __int64 +000C19F2: call __ZnwmPv; operator new(ulong,void *) +000C19F7: mov rbx, rax +000C19FA: test rbx, rbx +000C19FD: jz short loc_C1A0D +000C19FF: mov rdx, r14 +000C1A02: mov rsi, r13 +000C1A05: mov rdi, rbx +000C1A08: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_; std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>(std::allocator ()(EloTCMUpdaterDevice*)>>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C1A0D: lea rax, [rbp+var_21] +000C1A11: mov rdi, rax +000C1A14: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C1A19: jmp short loc_C1A43 +000C1A1B: mov r13, rax +000C1A1E: mov rsi, r12; void * +000C1A21: mov rdi, rbx; void * +000C1A24: call __ZdlPvS_; operator delete(void *,void *) +000C1A29: mov rbx, r13 +000C1A2C: lea rax, [rbp+var_21] +000C1A30: mov rdi, rax +000C1A33: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C1A38: mov rax, rbx +000C1A3B: mov rdi, rax; struct _Unwind_Exception * +000C1A3E: call __Unwind_Resume +000C1A43: add rsp, 30h +000C1A47: pop rbx +000C1A48: pop r12 +000C1A4A: pop r13 +000C1A4C: pop r14 +000C1A4E: pop rbp +000C1A4F: retn + +### FUNC 000C1A50 - 000C1A75 (37 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB_ +000C1A50: push rbp; Alternative name is 'std::allocator ()(EloTCMUpdaterDevice*)>>>::allocator(std::allocator ()(EloTCMUpdaterDevice*)>>> const&)' +000C1A51: mov rbp, rsp +000C1A54: sub rsp, 10h +000C1A58: mov [rbp+var_8], rdi +000C1A5C: mov [rbp+var_10], rsi +000C1A60: mov rdx, [rbp+var_10] +000C1A64: mov rax, [rbp+var_8] +000C1A68: mov rsi, rdx +000C1A6B: mov rdi, rax +000C1A6E: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2ERKSD_; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::new_allocator(__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>> const&) +000C1A73: leave +000C1A74: retn + +### FUNC 000C1A76 - 000C1A90 (26 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +000C1A76: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl()' +000C1A77: mov rbp, rsp +000C1A7A: sub rsp, 10h +000C1A7E: mov [rbp+var_8], rdi +000C1A82: mov rax, [rbp+var_8] +000C1A86: mov rdi, rax +000C1A89: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C1A8E: leave +000C1A8F: retn + +### FUNC 000C1A90 - 000C1B73 (227 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000C1A90: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>(std::allocator ()(EloTCMUpdaterDevice*)>>>, std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&)' +000C1A91: mov rbp, rsp +000C1A94: push rbx +000C1A95: sub rsp, 38h +000C1A99: mov [rbp+var_28], rdi +000C1A9D: mov [rbp+var_30], rsi +000C1AA1: mov [rbp+var_38], rdx +000C1AA5: mov rax, [rbp+var_28] +000C1AA9: mov rdi, rax +000C1AAC: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_Sp_counted_base(void) +000C1AB1: mov rax, [rbp+var_28] +000C1AB5: mov rdx, cs:_ZTVSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE_ptr +000C1ABC: lea rdx, [rdx+10h] +000C1AC0: mov [rax], rdx +000C1AC3: mov rdx, [rbp+var_30] +000C1AC7: lea rax, [rbp+var_11] +000C1ACB: mov rsi, rdx +000C1ACE: mov rdi, rax +000C1AD1: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB_; std::allocator ()(EloTCMUpdaterDevice*)>>>::allocator(std::allocator ()(EloTCMUpdaterDevice*)>>> const&) +000C1AD6: mov rax, [rbp+var_28] +000C1ADA: lea rdx, [rax+10h] +000C1ADE: lea rax, [rbp+var_11] +000C1AE2: mov rsi, rax +000C1AE5: mov rdi, rdx +000C1AE8: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_; std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::_Impl(std::allocator ()(EloTCMUpdaterDevice*)>>>) +000C1AED: lea rax, [rbp+var_11] +000C1AF1: mov rdi, rax +000C1AF4: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C1AF9: mov rax, [rbp+var_28] +000C1AFD: lea rdx, [rax+18h] +000C1B01: mov rax, [rbp+var_28] +000C1B05: mov [rax+10h], rdx +000C1B09: mov rax, [rbp+var_38] +000C1B0D: mov rdi, rax +000C1B10: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1B15: mov rdx, rax +000C1B18: mov rax, [rbp+var_28] +000C1B1C: mov rcx, [rax+10h] +000C1B20: mov rax, [rbp+var_30] +000C1B24: mov rsi, rcx +000C1B27: mov rdi, rax +000C1B2A: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000C1B2F: jmp short loc_C1B6C +000C1B31: mov rbx, rax +000C1B34: lea rax, [rbp+var_11] +000C1B38: mov rdi, rax +000C1B3B: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMUpdaterDevice*)>>>::~allocator() +000C1B40: jmp short loc_C1B55 +000C1B42: mov rbx, rax +000C1B45: mov rax, [rbp+var_28] +000C1B49: add rax, 10h +000C1B4D: mov rdi, rax +000C1B50: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl() +000C1B55: mov rax, [rbp+var_28] +000C1B59: mov rdi, rax +000C1B5C: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000C1B61: mov rax, rbx +000C1B64: mov rdi, rax; struct _Unwind_Exception * +000C1B67: call __Unwind_Resume +000C1B6C: add rsp, 38h +000C1B70: pop rbx +000C1B71: pop rbp +000C1B72: retn + +### FUNC 000C1B74 - 000C1B82 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEEC2ERKSD_ +000C1B74: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::new_allocator(__gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>> const&)' +000C1B75: mov rbp, rsp +000C1B78: mov [rbp+var_8], rdi +000C1B7C: mov [rbp+var_10], rsi +000C1B80: pop rbp +000C1B81: retn + +### FUNC 000C1B82 - 000C1B8C (10 bytes) name=_ZNSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +000C1B82: push rbp; Alternative name is 'std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>::_Mutex_base(void)' +000C1B83: mov rbp, rsp +000C1B86: mov [rbp+var_8], rdi +000C1B8A: pop rbp +000C1B8B: retn + +### FUNC 000C1B8C - 000C1BCE (66 bytes) name=_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev +000C1B8C: push rbp; Alternative name is 'std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_Sp_counted_base(void)' +000C1B8D: mov rbp, rsp +000C1B90: sub rsp, 10h +000C1B94: mov [rbp+var_8], rdi +000C1B98: mov rax, [rbp+var_8] +000C1B9C: mov rdi, rax +000C1B9F: call __ZNSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>::_Mutex_base(void) +000C1BA4: mov rax, [rbp+var_8] +000C1BA8: mov rdx, cs:_ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE_ptr +000C1BAF: lea rdx, [rdx+10h] +000C1BB3: mov [rax], rdx +000C1BB6: mov rax, [rbp+var_8] +000C1BBA: mov dword ptr [rax+8], 1 +000C1BC1: mov rax, [rbp+var_8] +000C1BC5: mov dword ptr [rax+0Ch], 1 +000C1BCC: leave +000C1BCD: retn + +### FUNC 000C1BCE - 000C1BFE (48 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +000C1BCE: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::_Impl::_Impl(std::allocator ()(EloTCMUpdaterDevice*)>>>)' +000C1BCF: mov rbp, rsp +000C1BD2: sub rsp, 10h +000C1BD6: mov [rbp+var_8], rdi +000C1BDA: mov [rbp+var_10], rsi +000C1BDE: mov rdx, [rbp+var_10] +000C1BE2: mov rax, [rbp+var_8] +000C1BE6: mov rsi, rdx +000C1BE9: mov rdi, rax +000C1BEC: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEEEC2ERKSB__0; std::allocator ()(EloTCMUpdaterDevice*)>>>::allocator(std::allocator ()(EloTCMUpdaterDevice*)>>> const&) +000C1BF1: mov rax, [rbp+var_8] +000C1BF5: mov qword ptr [rax], 0 +000C1BFC: leave +000C1BFD: retn + +### FUNC 000C1BFE - 000C1C36 (56 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000C1BFE: push rbp; Alternative name is '_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE9constructISB_ISA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_' +000C1BFF: mov rbp, rsp +000C1C02: sub rsp, 20h +000C1C06: mov [rbp+var_8], rdi +000C1C0A: mov [rbp+var_10], rsi +000C1C0E: mov [rbp+var_18], rdx +000C1C12: mov rax, [rbp+var_18] +000C1C16: mov rdi, rax +000C1C19: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1C1E: mov rdx, rax +000C1C21: mov rcx, [rbp+var_10] +000C1C25: mov rax, [rbp+var_8] +000C1C29: mov rsi, rcx +000C1C2C: mov rdi, rax +000C1C2F: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_; std::allocator_traits ()(EloTCMUpdaterDevice*)>>>>::_S_construct ()(EloTCMUpdaterDevice*)>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::allocator ()(EloTCMUpdaterDevice*)>>>&,std::thread::_Impl ()(EloTCMUpdaterDevice*)>>*,std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&) +000C1C34: leave +000C1C35: retn + +### FUNC 000C1C36 - 000C1C6E (56 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +000C1C36: push rbp; Alternative name is '_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE12_S_constructISB_ISA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_' +000C1C37: mov rbp, rsp +000C1C3A: sub rsp, 20h +000C1C3E: mov [rbp+var_8], rdi +000C1C42: mov [rbp+var_10], rsi +000C1C46: mov [rbp+var_18], rdx +000C1C4A: mov rax, [rbp+var_18] +000C1C4E: mov rdi, rax +000C1C51: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1C56: mov rdx, rax +000C1C59: mov rcx, [rbp+var_10] +000C1C5D: mov rax, [rbp+var_8] +000C1C61: mov rsi, rcx +000C1C64: mov rdi, rax +000C1C67: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::construct ()(EloTCMUpdaterDevice*)>>,std::_Bind_simple ()(EloTCMUpdaterDevice*)>>(std::thread::_Impl ()(EloTCMUpdaterDevice*)>> *,std::_Bind_simple ()(EloTCMUpdaterDevice*)> &&) +000C1C6C: leave +000C1C6D: retn + +### FUNC 000C1C6E - 000C1CE2 (116 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000C1C6E: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE9constructISC_ISB_EEEvPT_DpOT0_' +000C1C6F: mov rbp, rsp +000C1C72: push r13 +000C1C74: push r12 +000C1C76: push rbx +000C1C77: sub rsp, 28h +000C1C7B: mov [rbp+var_28], rdi +000C1C7F: mov [rbp+var_30], rsi +000C1C83: mov [rbp+var_38], rdx +000C1C87: mov rax, [rbp+var_38] +000C1C8B: mov rdi, rax +000C1C8E: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1C93: mov r13, rax +000C1C96: mov r12, [rbp+var_30] +000C1C9A: mov rsi, r12; void * +000C1C9D: mov edi, 30h ; '0'; unsigned __int64 +000C1CA2: call __ZnwmPv; operator new(ulong,void *) +000C1CA7: mov rbx, rax +000C1CAA: test rbx, rbx +000C1CAD: jz short loc_C1CBC +000C1CAF: mov rsi, r13 +000C1CB2: mov rdi, rbx +000C1CB5: call __ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEC2EOS9_; std::thread::_Impl ()(EloTCMUpdaterDevice*)>>::_Impl(std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&) +000C1CBA: jmp short loc_C1CD7 +000C1CBC: jmp short loc_C1CD7 +000C1CBE: mov r13, rax +000C1CC1: mov rsi, r12; void * +000C1CC4: mov rdi, rbx; void * +000C1CC7: call __ZdlPvS_; operator delete(void *,void *) +000C1CCC: mov rax, r13 +000C1CCF: mov rdi, rax; struct _Unwind_Exception * +000C1CD2: call __Unwind_Resume +000C1CD7: add rsp, 28h +000C1CDB: pop rbx +000C1CDC: pop r12 +000C1CDE: pop r13 +000C1CE0: pop rbp +000C1CE1: retn + +### FUNC 000C1CE2 - 000C1D16 (52 bytes) name=_ZNSt6thread10_Impl_baseC2Ev +000C1CE2: push rbp; Alternative name is 'std::thread::_Impl_base::_Impl_base(void)' +000C1CE3: mov rbp, rsp +000C1CE6: mov [rbp+var_8], rdi +000C1CEA: mov rax, [rbp+var_8] +000C1CEE: mov rdx, cs:_ZTVNSt6thread10_Impl_baseE_ptr +000C1CF5: lea rdx, [rdx+10h] +000C1CF9: mov [rax], rdx +000C1CFC: mov rax, [rbp+var_8] +000C1D00: mov qword ptr [rax+8], 0 +000C1D08: mov rax, [rbp+var_8] +000C1D0C: mov qword ptr [rax+10h], 0 +000C1D14: pop rbp +000C1D15: retn + +### FUNC 000C1D16 - 000C1D65 (79 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEC2EOS9_ +000C1D16: push rbp; Alternative name is 'std::thread::_Impl ()(EloTCMUpdaterDevice*)>>::_Impl(std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&)' +000C1D17: mov rbp, rsp +000C1D1A: sub rsp, 10h +000C1D1E: mov [rbp+var_8], rdi +000C1D22: mov [rbp+var_10], rsi +000C1D26: mov rax, [rbp+var_8] +000C1D2A: mov rdi, rax; this +000C1D2D: call __ZNSt6thread10_Impl_baseC2Ev; std::thread::_Impl_base::_Impl_base(void) +000C1D32: mov rax, [rbp+var_8] +000C1D36: mov rdx, cs:_ZTVNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEE_ptr +000C1D3D: lea rdx, [rdx+10h] +000C1D41: mov [rax], rdx +000C1D44: mov rax, [rbp+var_10] +000C1D48: mov rdi, rax +000C1D4B: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMUpdaterDevice*)>>(std::remove_reference ()(EloTCMUpdaterDevice*)>>::type &) +000C1D50: mov rdx, [rbp+var_8] +000C1D54: add rdx, 18h +000C1D58: mov rsi, rax +000C1D5B: mov rdi, rdx +000C1D5E: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEC2EOS7_; std::_Bind_simple ()(EloTCMUpdaterDevice*)>::_Bind_simple(std::_Bind_simple ()(EloTCMUpdaterDevice*)>&&) +000C1D63: leave +000C1D64: retn + +### FUNC 000C1D66 - 000C1DA7 (65 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED2Ev +000C1D66: push rbp; Alternative name is 'std::thread::_Impl ()(EloTCMUpdaterDevice*)>>::~_Impl()' +000C1D67: mov rbp, rsp +000C1D6A: sub rsp, 10h +000C1D6E: mov [rbp+var_8], rdi +000C1D72: mov rax, [rbp+var_8] +000C1D76: mov rdx, cs:_ZTVNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEEE_ptr +000C1D7D: lea rdx, [rdx+10h] +000C1D81: mov [rax], rdx +000C1D84: mov rax, [rbp+var_8] +000C1D88: mov rdi, rax; this +000C1D8B: call __ZNSt6thread10_Impl_baseD2Ev_0; std::thread::_Impl_base::~_Impl_base() +000C1D90: mov eax, 0 +000C1D95: test eax, eax +000C1D97: jz short locret_C1DA5 +000C1D99: mov rax, [rbp+var_8] +000C1D9D: mov rdi, rax; void * +000C1DA0: call __ZdlPv; operator delete(void *) +000C1DA5: leave +000C1DA6: retn + +### FUNC 000C1DA8 - 000C1DCE (38 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED0Ev +000C1DA8: push rbp +000C1DA9: mov rbp, rsp +000C1DAC: sub rsp, 10h +000C1DB0: mov [rbp+var_8], rdi +000C1DB4: mov rax, [rbp+var_8] +000C1DB8: mov rdi, rax +000C1DBB: call __ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEED2Ev; std::thread::_Impl ()(EloTCMUpdaterDevice*)>>::~_Impl() +000C1DC0: mov rax, [rbp+var_8] +000C1DC4: mov rdi, rax; void * +000C1DC7: call __ZdlPv; operator delete(void *) +000C1DCC: leave +000C1DCD: retn + +### FUNC 000C1DCE - 000C1E1F (81 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C1DCE: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>, std::allocator ()(EloTCMUpdaterDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()' +000C1DCF: mov rbp, rsp +000C1DD2: sub rsp, 10h +000C1DD6: mov [rbp+var_8], rdi +000C1DDA: mov rax, [rbp+var_8] +000C1DDE: mov rdx, cs:_ZTVSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE_ptr +000C1DE5: lea rdx, [rdx+10h] +000C1DE9: mov [rax], rdx +000C1DEC: mov rax, [rbp+var_8] +000C1DF0: add rax, 10h +000C1DF4: mov rdi, rax +000C1DF7: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl() +000C1DFC: mov rax, [rbp+var_8] +000C1E00: mov rdi, rax +000C1E03: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000C1E08: mov eax, 0 +000C1E0D: test eax, eax +000C1E0F: jz short locret_C1E1D +000C1E11: mov rax, [rbp+var_8] +000C1E15: mov rdi, rax; void * +000C1E18: call __ZdlPv; operator delete(void *) +000C1E1D: leave +000C1E1E: retn + +### FUNC 000C1E20 - 000C1E46 (38 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED0Ev +000C1E20: push rbp +000C1E21: mov rbp, rsp +000C1E24: sub rsp, 10h +000C1E28: mov [rbp+var_8], rdi +000C1E2C: mov rax, [rbp+var_8] +000C1E30: mov rdi, rax +000C1E33: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace() +000C1E38: mov rax, [rbp+var_8] +000C1E3C: mov rdi, rax; void * +000C1E3F: call __ZdlPv; operator delete(void *) +000C1E44: leave +000C1E45: retn + +### FUNC 000C1E46 - 000C1E6F (41 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv +000C1E46: push rbp +000C1E47: mov rbp, rsp +000C1E4A: sub rsp, 10h +000C1E4E: mov [rbp+var_8], rdi +000C1E52: mov rax, [rbp+var_8] +000C1E56: mov rax, [rax+10h] +000C1E5A: mov rdx, [rbp+var_8] +000C1E5E: add rdx, 10h +000C1E62: mov rsi, rax +000C1E65: mov rdi, rdx +000C1E68: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_; std::allocator_traits ()(EloTCMUpdaterDevice*)>>>>::destroy ()(EloTCMUpdaterDevice*)>>>(std::allocator ()(EloTCMUpdaterDevice*)>>>&,std::thread::_Impl ()(EloTCMUpdaterDevice*)>> *) +000C1E6D: leave +000C1E6E: retn + +### FUNC 000C1E70 - 000C1ECC (92 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000C1E70: push rbp +000C1E71: mov rbp, rsp +000C1E74: sub rsp, 20h +000C1E78: mov [rbp+var_18], rdi +000C1E7C: mov rax, [rbp+var_18] +000C1E80: lea rdx, [rax+10h] +000C1E84: lea rax, [rbp+var_1] +000C1E88: mov rsi, rdx +000C1E8B: mov rdi, rax +000C1E8E: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E; std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocator ()(EloTCMUpdaterDevice*)>>>(std::allocator ()(EloTCMUpdaterDevice*)>>> const&) +000C1E93: mov rdx, [rbp+var_18] +000C1E97: lea rax, [rbp+var_1] +000C1E9B: mov rsi, rdx +000C1E9E: mov rdi, rax +000C1EA1: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_; std::allocator_traits ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::destroy ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2> *) +000C1EA6: mov rcx, [rbp+var_18] +000C1EAA: lea rax, [rbp+var_1] +000C1EAE: mov edx, 1 +000C1EB3: mov rsi, rcx +000C1EB6: mov rdi, rax +000C1EB9: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m; std::allocator_traits ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::deallocate(std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000C1EBE: lea rax, [rbp+var_1] +000C1EC2: mov rdi, rax +000C1EC5: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000C1ECA: leave +000C1ECB: retn + +### FUNC 000C1ECC - 000C1F07 (59 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000C1ECC: push rbp +000C1ECD: mov rbp, rsp +000C1ED0: sub rsp, 10h +000C1ED4: mov [rbp+var_8], rdi +000C1ED8: mov [rbp+var_10], rsi +000C1EDC: mov rax, [rbp+var_10] +000C1EE0: mov rdx, cs:_ZTISt19_Sp_make_shared_tag_ptr +000C1EE7: mov rsi, rdx +000C1EEA: mov rdi, rax +000C1EED: call __ZNKSt9type_infoeqERKS_; std::type_info::operator==(std::type_info const&) +000C1EF2: test al, al +000C1EF4: jz short loc_C1F00 +000C1EF6: mov rax, [rbp+var_8] +000C1EFA: add rax, 18h +000C1EFE: jmp short locret_C1F05 +000C1F00: mov eax, 0 +000C1F05: leave +000C1F06: retn + +### FUNC 000C1F08 - 000C1F26 (30 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS3_EEE6_M_runEv +000C1F08: push rbp +000C1F09: mov rbp, rsp +000C1F0C: sub rsp, 10h +000C1F10: mov [rbp+var_8], rdi +000C1F14: mov rax, [rbp+var_8] +000C1F18: add rax, 18h +000C1F1C: mov rdi, rax +000C1F1F: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEclEv; std::_Bind_simple ()(EloTCMUpdaterDevice*)>::operator()(void) +000C1F24: leave +000C1F25: retn + +### FUNC 000C1F26 - 000C1F4B (37 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +000C1F26: push rbp +000C1F27: mov rbp, rsp +000C1F2A: sub rsp, 10h +000C1F2E: mov [rbp+var_8], rdi +000C1F32: mov [rbp+var_10], rsi +000C1F36: mov rdx, [rbp+var_10] +000C1F3A: mov rax, [rbp+var_8] +000C1F3E: mov rsi, rdx +000C1F41: mov rdi, rax +000C1F44: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_; std::allocator_traits ()(EloTCMUpdaterDevice*)>>>>::_S_destroy ()(EloTCMUpdaterDevice*)>>>(std::allocator ()(EloTCMUpdaterDevice*)>>>&,std::thread::_Impl ()(EloTCMUpdaterDevice*)>>*) +000C1F49: leave +000C1F4A: retn + +### FUNC 000C1F4B - 000C1F70 (37 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000C1F4B: push rbp +000C1F4C: mov rbp, rsp +000C1F4F: sub rsp, 10h +000C1F53: mov [rbp+var_8], rdi +000C1F57: mov [rbp+var_10], rsi +000C1F5B: mov rdx, [rbp+var_10] +000C1F5F: mov rax, [rbp+var_8] +000C1F63: mov rsi, rdx +000C1F66: mov rdi, rax +000C1F69: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_; std::allocator_traits ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::_S_destroy ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*) +000C1F6E: leave +000C1F6F: retn + +### FUNC 000C1F70 - 000C1F8D (29 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EEclEv +000C1F70: push rbp +000C1F71: mov rbp, rsp +000C1F74: sub rsp, 20h +000C1F78: mov [rbp+var_18], rdi +000C1F7C: mov rax, [rbp+var_18] +000C1F80: mov [rsp+20h+var_20], dl +000C1F83: mov rdi, rax +000C1F86: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE9_M_invokeIJLm0EEEEbSt12_Index_tupleIJXspT_EEE +000C1F8B: leave +000C1F8C: retn + +### FUNC 000C1F8D - 000C1FB2 (37 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000C1F8D: push rbp +000C1F8E: mov rbp, rsp +000C1F91: sub rsp, 10h +000C1F95: mov [rbp+var_8], rdi +000C1F99: mov [rbp+var_10], rsi +000C1F9D: mov rdx, [rbp+var_10] +000C1FA1: mov rax, [rbp+var_8] +000C1FA5: mov rsi, rdx +000C1FA8: mov rdi, rax +000C1FAB: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE7destroyISC_EEvPT_; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>>::destroy ()(EloTCMUpdaterDevice*)>>>(std::thread::_Impl ()(EloTCMUpdaterDevice*)>> *) +000C1FB0: leave +000C1FB1: retn + +### FUNC 000C1FB2 - 000C1FD7 (37 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +000C1FB2: push rbp +000C1FB3: mov rbp, rsp +000C1FB6: sub rsp, 10h +000C1FBA: mov [rbp+var_8], rdi +000C1FBE: mov [rbp+var_10], rsi +000C1FC2: mov rdx, [rbp+var_10] +000C1FC6: mov rax, [rbp+var_8] +000C1FCA: mov rsi, rdx +000C1FCD: mov rdi, rax +000C1FD0: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_; __gnu_cxx::new_allocator ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::destroy ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2> *) +000C1FD5: leave +000C1FD6: retn + +### FUNC 000C1FD7 - 000C1FF1 (26 bytes) name=_ZSt12__get_helperILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +000C1FD7: push rbp; Alternative name is 'std::__add_ref>::type std::__get_helper<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMUpdaterDevice*> &)' +000C1FD8: mov rbp, rsp +000C1FDB: sub rsp, 10h +000C1FDF: mov [rbp+var_8], rdi +000C1FE3: mov rax, [rbp+var_8] +000C1FE7: mov rdi, rax +000C1FEA: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE7_M_headERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>::_M_head(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>&) +000C1FEF: leave +000C1FF0: retn + +### FUNC 000C1FF1 - 000C200B (26 bytes) name=_ZSt3getILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C1FF1: push rbp; Alternative name is 'std::__add_ref, EloTCMUpdaterDevice*>>::type>::type std::get<0ul, std::_Mem_fn, EloTCMUpdaterDevice*>(std::tuple, EloTCMUpdaterDevice*>&)' +000C1FF2: mov rbp, rsp +000C1FF5: sub rsp, 10h +000C1FF9: mov [rbp+var_8], rdi +000C1FFD: mov rax, [rbp+var_8] +000C2001: mov rdi, rax +000C2004: call __ZSt12__get_helperILm0ESt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE; std::__get_helper<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMUpdaterDevice*> &) +000C2009: leave +000C200A: retn + +### FUNC 000C200B - 000C2025 (26 bytes) name=_ZSt12__get_helperILm1EP19EloTCMUpdaterDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000C200B: push rbp; Alternative name is '_ZSt12__get_helperILm1EP19EloTCMUpdaterDeviceIEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EIS3_DpT1_EE' +000C200C: mov rbp, rsp +000C200F: sub rsp, 10h +000C2013: mov [rbp+var_8], rdi +000C2017: mov rax, [rbp+var_8] +000C201B: mov rdi, rax +000C201E: call __ZNSt11_Tuple_implILm1EJP19EloTCMUpdaterDeviceEE7_M_headERS2_; std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>::_M_head(std::_Tuple_impl<1ul,EloTCMUpdaterDevice *>&) +000C2023: leave +000C2024: retn + +### FUNC 000C2025 - 000C203F (26 bytes) name=_ZSt3getILm1EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C2025: push rbp; Alternative name is 'std::__add_ref, EloTCMUpdaterDevice*>>::type>::type std::get<1ul, std::_Mem_fn, EloTCMUpdaterDevice*>(std::tuple, EloTCMUpdaterDevice*>&)' +000C2026: mov rbp, rsp +000C2029: sub rsp, 10h +000C202D: mov [rbp+var_8], rdi +000C2031: mov rax, [rbp+var_8] +000C2035: mov rdi, rax +000C2038: call __ZSt12__get_helperILm1EP19EloTCMUpdaterDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000C203D: leave +000C203E: retn + +### FUNC 000C2040 - 000C208A (74 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE9_M_invokeIJLm0EEEEbSt12_Index_tupleIJXspT_EEE +000C2040: push rbp; Alternative name is '_ZNSt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EE9_M_invokeIILm0EEEEbSt12_Index_tupleIIXspT_EEE' +000C2041: mov rbp, rsp +000C2044: push rbx +000C2045: sub rsp, 18h +000C2049: mov [rbp+var_18], rdi +000C204D: mov rax, [rbp+var_18] +000C2051: mov rdi, rax +000C2054: call __ZSt3getILm1EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_; std::get<1ul,std::_Mem_fn,EloTCMUpdaterDevice*>(std::tuple,EloTCMUpdaterDevice*>&) +000C2059: mov rdi, rax +000C205C: call __ZSt7forwardIP19EloTCMUpdaterDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C2061: mov rbx, [rax] +000C2064: mov rax, [rbp+var_18] +000C2068: mov rdi, rax +000C206B: call __ZSt3getILm0EJSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_; std::get<0ul,std::_Mem_fn,EloTCMUpdaterDevice*>(std::tuple,EloTCMUpdaterDevice*>&) +000C2070: mov rdi, rax +000C2073: call __ZSt7forwardISt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C2078: mov rsi, rbx +000C207B: mov rdi, rax +000C207E: call __ZNKSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEclIJEvEEbPS0_DpOT_ +000C2083: add rsp, 18h +000C2087: pop rbx +000C2088: pop rbp +000C2089: retn + +### FUNC 000C208A - 000C20AF (37 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS5_EEEEE7destroyISC_EEvPT_ +000C208A: push rbp +000C208B: mov rbp, rsp +000C208E: sub rsp, 10h +000C2092: mov [rbp+var_8], rdi +000C2096: mov [rbp+var_10], rsi +000C209A: mov rax, [rbp+var_10] +000C209E: mov rax, [rax] +000C20A1: mov rax, [rax] +000C20A4: mov rdx, [rbp+var_10] +000C20A8: mov rdi, rdx +000C20AB: call rax +000C20AD: leave +000C20AE: retn + +### FUNC 000C20B0 - 000C20CE (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +000C20B0: push rbp +000C20B1: mov rbp, rsp +000C20B4: sub rsp, 10h +000C20B8: mov [rbp+var_8], rdi +000C20BC: mov [rbp+var_10], rsi +000C20C0: mov rax, [rbp+var_10] +000C20C4: mov rdi, rax +000C20C7: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMUpdaterDevice*)>>,std::allocator ()(EloTCMUpdaterDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace() +000C20CC: leave +000C20CD: retn + +### FUNC 000C20CE - 000C2135 (103 bytes) name=_ZNKSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEclIJEvEEbPS0_DpOT_ +000C20CE: push rbp; Alternative name is '_ZNKSt7_Mem_fnIM19EloTCMUpdaterDeviceFbvEEclIIEvEEbPS0_DpOT_' +000C20CF: mov rbp, rsp +000C20D2: sub rsp, 10h +000C20D6: mov [rbp+var_8], rdi +000C20DA: mov [rbp+var_10], rsi +000C20DE: mov rax, [rbp+var_8] +000C20E2: mov rax, [rax] +000C20E5: and eax, 1 +000C20E8: test rax, rax +000C20EB: jnz short loc_C20F6 +000C20ED: mov rax, [rbp+var_8] +000C20F1: mov rax, [rax] +000C20F4: jmp short loc_C211C +000C20F6: mov rax, [rbp+var_8] +000C20FA: mov rax, [rax+8] +000C20FE: mov rdx, rax +000C2101: mov rax, [rbp+var_10] +000C2105: add rax, rdx +000C2108: mov rdx, [rax] +000C210B: mov rax, [rbp+var_8] +000C210F: mov rax, [rax] +000C2112: sub rax, 1 +000C2116: add rax, rdx +000C2119: mov rax, [rax] +000C211C: mov rdx, [rbp+var_8] +000C2120: mov rdx, [rdx+8] +000C2124: mov rcx, rdx +000C2127: mov rdx, [rbp+var_10] +000C212B: add rdx, rcx +000C212E: mov rdi, rdx +000C2131: call rax +000C2133: leave +000C2134: retn + +### FUNC 000C2136 - 000C23B9 (643 bytes) name=_ZN11FTDICommand4initEhhRKSt6vectorIhSaIhEEi +000C2136: push rbp +000C2137: mov rbp, rsp +000C213A: push rbx +000C213B: sub rsp, 38h +000C213F: mov [rbp+var_28], rdi +000C2143: mov eax, edx +000C2145: mov [rbp+var_38], rcx +000C2149: mov [rbp+var_3C], r8d +000C214D: mov [rbp+var_2C], sil +000C2151: mov [rbp+var_30], al +000C2154: mov rax, [rbp+var_38] +000C2158: mov rdi, rax +000C215B: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2160: mov edx, eax +000C2162: mov rax, [rbp+var_28] +000C2166: mov [rax+20h], edx +000C2169: mov rax, [rbp+var_28] +000C216D: movzx edx, [rbp+var_2C] +000C2171: mov [rax+24h], dl +000C2174: mov rax, [rbp+var_28] +000C2178: movzx edx, [rbp+var_30] +000C217C: mov [rax+25h], dl +000C217F: mov rax, [rbp+var_28] +000C2183: mov eax, [rax+20h] +000C2186: add eax, 5 +000C2189: mov [rbp+var_1C], eax +000C218C: mov eax, [rbp+var_1C] +000C218F: add eax, 4 +000C2192: mov [rbp+var_20], eax +000C2195: mov eax, [rbp+var_20] +000C2198: cdqe +000C219A: mov rdx, [rbp+var_28] +000C219E: add rdx, 8 +000C21A2: mov rsi, rax +000C21A5: mov rdi, rdx +000C21A8: call __ZNSt6vectorIhSaIhEE6resizeEm; std::vector>::resize(ulong) +000C21AD: mov [rbp+var_14], 0 +000C21B4: mov [rbp+var_14], 0 +000C21BB: jmp short loc_C21E0 +000C21BD: mov eax, [rbp+var_14] +000C21C0: cdqe +000C21C2: mov rdx, [rbp+var_28] +000C21C6: add rdx, 8 +000C21CA: mov rsi, rax +000C21CD: mov rdi, rdx +000C21D0: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C21D5: mov edx, 7Eh ; '~' +000C21DA: mov [rax], dl +000C21DC: add [rbp+var_14], 1 +000C21E0: cmp [rbp+var_14], 0 +000C21E4: jle short loc_C21BD +000C21E6: mov eax, [rbp+var_14] +000C21E9: lea edx, [rax+1] +000C21EC: mov [rbp+var_14], edx +000C21EF: cdqe +000C21F1: mov rdx, [rbp+var_28] +000C21F5: add rdx, 8 +000C21F9: mov rsi, rax +000C21FC: mov rdi, rdx +000C21FF: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2204: mov edx, [rbp+var_1C] +000C2207: sar edx, 8 +000C220A: mov [rax], dl +000C220C: mov eax, [rbp+var_14] +000C220F: lea edx, [rax+1] +000C2212: mov [rbp+var_14], edx +000C2215: cdqe +000C2217: mov rdx, [rbp+var_28] +000C221B: add rdx, 8 +000C221F: mov rsi, rax +000C2222: mov rdi, rdx +000C2225: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C222A: mov edx, [rbp+var_1C] +000C222D: mov [rax], dl +000C222F: mov eax, [rbp+var_14] +000C2232: lea edx, [rax+1] +000C2235: mov [rbp+var_14], edx +000C2238: cdqe +000C223A: mov rdx, [rbp+var_28] +000C223E: add rdx, 8 +000C2242: mov rsi, rax +000C2245: mov rdi, rdx +000C2248: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C224D: mov rbx, rax +000C2250: mov rax, [rbp+var_28] +000C2254: add rax, 8 +000C2258: mov edx, 3 +000C225D: mov esi, 0 +000C2262: mov rdi, rax +000C2265: call __ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii; FTDICommand::checksum(std::vector> const&,int,int) +000C226A: mov [rbx], al +000C226C: mov eax, [rbp+var_14] +000C226F: lea edx, [rax+1] +000C2272: mov [rbp+var_14], edx +000C2275: cdqe +000C2277: mov rdx, [rbp+var_28] +000C227B: add rdx, 8 +000C227F: mov rsi, rax +000C2282: mov rdi, rdx +000C2285: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C228A: movzx edx, [rbp+var_2C] +000C228E: mov [rax], dl +000C2290: mov eax, [rbp+var_14] +000C2293: lea edx, [rax+1] +000C2296: mov [rbp+var_14], edx +000C2299: cdqe +000C229B: mov rdx, [rbp+var_28] +000C229F: add rdx, 8 +000C22A3: mov rsi, rax +000C22A6: mov rdi, rdx +000C22A9: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C22AE: movzx edx, [rbp+var_30] +000C22B2: mov [rax], dl +000C22B4: mov eax, [rbp+var_14] +000C22B7: lea edx, [rax+1] +000C22BA: mov [rbp+var_14], edx +000C22BD: cdqe +000C22BF: mov rdx, [rbp+var_28] +000C22C3: add rdx, 8 +000C22C7: mov rsi, rax +000C22CA: mov rdi, rdx +000C22CD: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C22D2: mov edx, [rbp+var_3C] +000C22D5: sar edx, 8 +000C22D8: mov [rax], dl +000C22DA: mov eax, [rbp+var_14] +000C22DD: lea edx, [rax+1] +000C22E0: mov [rbp+var_14], edx +000C22E3: cdqe +000C22E5: mov rdx, [rbp+var_28] +000C22E9: add rdx, 8 +000C22ED: mov rsi, rax +000C22F0: mov rdi, rdx +000C22F3: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C22F8: mov edx, [rbp+var_3C] +000C22FB: mov [rax], dl +000C22FD: mov rax, [rbp+var_38] +000C2301: mov rdi, rax +000C2304: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2309: test rax, rax +000C230C: setnz al +000C230F: test al, al +000C2311: jz short loc_C2377 +000C2313: mov [rbp+var_18], 0 +000C231A: jmp short loc_C235B +000C231C: mov eax, [rbp+var_14] +000C231F: lea edx, [rax+1] +000C2322: mov [rbp+var_14], edx +000C2325: cdqe +000C2327: mov rdx, [rbp+var_28] +000C232B: add rdx, 8 +000C232F: mov rsi, rax +000C2332: mov rdi, rdx +000C2335: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C233A: mov rbx, rax +000C233D: mov eax, [rbp+var_18] +000C2340: movsxd rdx, eax +000C2343: mov rax, [rbp+var_38] +000C2347: mov rsi, rdx +000C234A: mov rdi, rax +000C234D: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2352: movzx eax, byte ptr [rax] +000C2355: mov [rbx], al +000C2357: add [rbp+var_18], 1 +000C235B: mov eax, [rbp+var_18] +000C235E: movsxd rbx, eax +000C2361: mov rax, [rbp+var_38] +000C2365: mov rdi, rax +000C2368: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C236D: cmp rbx, rax +000C2370: setb al +000C2373: test al, al +000C2375: jnz short loc_C231C +000C2377: mov eax, [rbp+var_20] +000C237A: sub eax, 1 +000C237D: cdqe +000C237F: mov rdx, [rbp+var_28] +000C2383: add rdx, 8 +000C2387: mov rsi, rax +000C238A: mov rdi, rdx +000C238D: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2392: mov rbx, rax +000C2395: mov eax, [rbp+var_20] +000C2398: lea edx, [rax-1] +000C239B: mov rax, [rbp+var_28] +000C239F: add rax, 8 +000C23A3: mov esi, 4 +000C23A8: mov rdi, rax +000C23AB: call __ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii; FTDICommand::checksum(std::vector> const&,int,int) +000C23B0: mov [rbx], al +000C23B2: add rsp, 38h +000C23B6: pop rbx +000C23B7: pop rbp +000C23B8: retn + +### FUNC 000C23BA - 000C267F (709 bytes) name=_ZN11FTDICommandC2EhhRKSt6vectorIhSaIhEEi +000C23BA: push rbp; Alternative name is 'FTDICommand::FTDICommand(unsigned char, unsigned char, std::vector> const&, int)' +000C23BB: mov rbp, rsp +000C23BE: push rbx +000C23BF: sub rsp, 38h +000C23C3: mov [rbp+var_28], rdi +000C23C7: mov eax, edx +000C23C9: mov [rbp+var_38], rcx +000C23CD: mov [rbp+var_3C], r8d +000C23D1: mov [rbp+var_2C], sil +000C23D5: mov [rbp+var_30], al +000C23D8: mov rax, [rbp+var_28] +000C23DC: mov rdx, cs:_ZTV11FTDICommand_ptr +000C23E3: lea rdx, [rdx+10h] +000C23E7: mov [rax], rdx +000C23EA: mov rax, [rbp+var_28] +000C23EE: add rax, 8 +000C23F2: mov rdi, rax +000C23F5: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C23FA: mov rax, [rbp+var_38] +000C23FE: mov rdi, rax +000C2401: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2406: mov edx, eax +000C2408: mov rax, [rbp+var_28] +000C240C: mov [rax+20h], edx +000C240F: mov rax, [rbp+var_28] +000C2413: movzx edx, [rbp+var_2C] +000C2417: mov [rax+24h], dl +000C241A: mov rax, [rbp+var_28] +000C241E: movzx edx, [rbp+var_30] +000C2422: mov [rax+25h], dl +000C2425: mov rax, [rbp+var_28] +000C2429: mov eax, [rax+20h] +000C242C: add eax, 5 +000C242F: mov [rbp+var_1C], eax +000C2432: mov eax, [rbp+var_1C] +000C2435: add eax, 4 +000C2438: mov [rbp+var_20], eax +000C243B: mov eax, [rbp+var_20] +000C243E: cdqe +000C2440: mov rdx, [rbp+var_28] +000C2444: add rdx, 8 +000C2448: mov rsi, rax +000C244B: mov rdi, rdx +000C244E: call __ZNSt6vectorIhSaIhEE6resizeEm; std::vector>::resize(ulong) +000C2453: mov [rbp+var_14], 0 +000C245A: mov [rbp+var_14], 0 +000C2461: jmp short loc_C2486 +000C2463: mov eax, [rbp+var_14] +000C2466: cdqe +000C2468: mov rdx, [rbp+var_28] +000C246C: add rdx, 8 +000C2470: mov rsi, rax +000C2473: mov rdi, rdx +000C2476: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C247B: mov edx, 7Eh ; '~' +000C2480: mov [rax], dl +000C2482: add [rbp+var_14], 1 +000C2486: cmp [rbp+var_14], 0 +000C248A: jle short loc_C2463 +000C248C: mov eax, [rbp+var_14] +000C248F: lea edx, [rax+1] +000C2492: mov [rbp+var_14], edx +000C2495: cdqe +000C2497: mov rdx, [rbp+var_28] +000C249B: add rdx, 8 +000C249F: mov rsi, rax +000C24A2: mov rdi, rdx +000C24A5: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C24AA: mov edx, [rbp+var_1C] +000C24AD: sar edx, 8 +000C24B0: mov [rax], dl +000C24B2: mov eax, [rbp+var_14] +000C24B5: lea edx, [rax+1] +000C24B8: mov [rbp+var_14], edx +000C24BB: cdqe +000C24BD: mov rdx, [rbp+var_28] +000C24C1: add rdx, 8 +000C24C5: mov rsi, rax +000C24C8: mov rdi, rdx +000C24CB: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C24D0: mov edx, [rbp+var_1C] +000C24D3: mov [rax], dl +000C24D5: mov eax, [rbp+var_14] +000C24D8: lea edx, [rax+1] +000C24DB: mov [rbp+var_14], edx +000C24DE: cdqe +000C24E0: mov rdx, [rbp+var_28] +000C24E4: add rdx, 8 +000C24E8: mov rsi, rax +000C24EB: mov rdi, rdx +000C24EE: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C24F3: mov rbx, rax +000C24F6: mov rax, [rbp+var_28] +000C24FA: add rax, 8 +000C24FE: mov edx, 3 +000C2503: mov esi, 0 +000C2508: mov rdi, rax +000C250B: call __ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii; FTDICommand::checksum(std::vector> const&,int,int) +000C2510: mov [rbx], al +000C2512: mov eax, [rbp+var_14] +000C2515: lea edx, [rax+1] +000C2518: mov [rbp+var_14], edx +000C251B: cdqe +000C251D: mov rdx, [rbp+var_28] +000C2521: add rdx, 8 +000C2525: mov rsi, rax +000C2528: mov rdi, rdx +000C252B: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2530: movzx edx, [rbp+var_2C] +000C2534: mov [rax], dl +000C2536: mov eax, [rbp+var_14] +000C2539: lea edx, [rax+1] +000C253C: mov [rbp+var_14], edx +000C253F: cdqe +000C2541: mov rdx, [rbp+var_28] +000C2545: add rdx, 8 +000C2549: mov rsi, rax +000C254C: mov rdi, rdx +000C254F: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2554: movzx edx, [rbp+var_30] +000C2558: mov [rax], dl +000C255A: mov eax, [rbp+var_14] +000C255D: lea edx, [rax+1] +000C2560: mov [rbp+var_14], edx +000C2563: cdqe +000C2565: mov rdx, [rbp+var_28] +000C2569: add rdx, 8 +000C256D: mov rsi, rax +000C2570: mov rdi, rdx +000C2573: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2578: mov edx, [rbp+var_3C] +000C257B: sar edx, 8 +000C257E: mov [rax], dl +000C2580: mov eax, [rbp+var_14] +000C2583: lea edx, [rax+1] +000C2586: mov [rbp+var_14], edx +000C2589: cdqe +000C258B: mov rdx, [rbp+var_28] +000C258F: add rdx, 8 +000C2593: mov rsi, rax +000C2596: mov rdi, rdx +000C2599: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C259E: mov edx, [rbp+var_3C] +000C25A1: mov [rax], dl +000C25A3: mov rax, [rbp+var_38] +000C25A7: mov rdi, rax +000C25AA: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C25AF: test rax, rax +000C25B2: setnz al +000C25B5: test al, al +000C25B7: jz short loc_C261D +000C25B9: mov [rbp+var_18], 0 +000C25C0: jmp short loc_C2601 +000C25C2: mov eax, [rbp+var_14] +000C25C5: lea edx, [rax+1] +000C25C8: mov [rbp+var_14], edx +000C25CB: cdqe +000C25CD: mov rdx, [rbp+var_28] +000C25D1: add rdx, 8 +000C25D5: mov rsi, rax +000C25D8: mov rdi, rdx +000C25DB: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C25E0: mov rbx, rax +000C25E3: mov eax, [rbp+var_18] +000C25E6: movsxd rdx, eax +000C25E9: mov rax, [rbp+var_38] +000C25ED: mov rsi, rdx +000C25F0: mov rdi, rax +000C25F3: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C25F8: movzx eax, byte ptr [rax] +000C25FB: mov [rbx], al +000C25FD: add [rbp+var_18], 1 +000C2601: mov eax, [rbp+var_18] +000C2604: movsxd rbx, eax +000C2607: mov rax, [rbp+var_38] +000C260B: mov rdi, rax +000C260E: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2613: cmp rbx, rax +000C2616: setb al +000C2619: test al, al +000C261B: jnz short loc_C25C2 +000C261D: mov eax, [rbp+var_20] +000C2620: sub eax, 1 +000C2623: cdqe +000C2625: mov rdx, [rbp+var_28] +000C2629: add rdx, 8 +000C262D: mov rsi, rax +000C2630: mov rdi, rdx +000C2633: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2638: mov rbx, rax +000C263B: mov eax, [rbp+var_20] +000C263E: lea edx, [rax-1] +000C2641: mov rax, [rbp+var_28] +000C2645: add rax, 8 +000C2649: mov esi, 4 +000C264E: mov rdi, rax +000C2651: call __ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii; FTDICommand::checksum(std::vector> const&,int,int) +000C2656: mov [rbx], al +000C2658: jmp short loc_C2678 +000C265A: mov rbx, rax +000C265D: mov rax, [rbp+var_28] +000C2661: add rax, 8 +000C2665: mov rdi, rax +000C2668: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C266D: mov rax, rbx +000C2670: mov rdi, rax; struct _Unwind_Exception * +000C2673: call __Unwind_Resume +000C2678: add rsp, 38h +000C267C: pop rbx +000C267D: pop rbp +000C267E: retn + +### FUNC 000C2680 - 000C2729 (169 bytes) name=_ZN11FTDICommandC2Ehhi +000C2680: push rbp; Alternative name is 'FTDICommand::FTDICommand(unsigned char, unsigned char, int)' +000C2681: mov rbp, rsp +000C2684: push rbx +000C2685: sub rsp, 48h +000C2689: mov [rbp+var_38], rdi +000C268D: mov eax, edx +000C268F: mov [rbp+var_44], ecx +000C2692: mov [rbp+var_3C], sil +000C2696: mov [rbp+var_40], al +000C2699: mov rax, [rbp+var_38] +000C269D: mov rdx, cs:_ZTV11FTDICommand_ptr +000C26A4: lea rdx, [rdx+10h] +000C26A8: mov [rax], rdx +000C26AB: mov rax, [rbp+var_38] +000C26AF: add rax, 8 +000C26B3: mov rdi, rax +000C26B6: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C26BB: lea rax, [rbp+var_30] +000C26BF: mov rdi, rax +000C26C2: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C26C7: movzx edx, [rbp+var_40] +000C26CB: movzx esi, [rbp+var_3C] +000C26CF: mov edi, [rbp+var_44] +000C26D2: lea rcx, [rbp+var_30] +000C26D6: mov rax, [rbp+var_38] +000C26DA: mov r8d, edi +000C26DD: mov rdi, rax +000C26E0: call __ZN11FTDICommand4initEhhRKSt6vectorIhSaIhEEi; FTDICommand::init(uchar,uchar,std::vector> const&,int) +000C26E5: lea rax, [rbp+var_30] +000C26E9: mov rdi, rax +000C26EC: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C26F1: jmp short loc_C2722 +000C26F3: mov rbx, rax +000C26F6: lea rax, [rbp+var_30] +000C26FA: mov rdi, rax +000C26FD: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C2702: jmp short loc_C2707 +000C2704: mov rbx, rax +000C2707: mov rax, [rbp+var_38] +000C270B: add rax, 8 +000C270F: mov rdi, rax +000C2712: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C2717: mov rax, rbx +000C271A: mov rdi, rax; struct _Unwind_Exception * +000C271D: call __Unwind_Resume +000C2722: add rsp, 48h +000C2726: pop rbx +000C2727: pop rbp +000C2728: retn + +### FUNC 000C272A - 000C2819 (239 bytes) name=_ZN11FTDICommandC2ERKSt6vectorIhSaIhEE +000C272A: push rbp; Alternative name is 'FTDICommand::FTDICommand(std::vector> const&)' +000C272B: mov rbp, rsp +000C272E: push rbx +000C272F: sub rsp, 18h +000C2733: mov [rbp+var_18], rdi +000C2737: mov [rbp+var_20], rsi +000C273B: mov rax, [rbp+var_18] +000C273F: mov rdx, cs:_ZTV11FTDICommand_ptr +000C2746: lea rdx, [rdx+10h] +000C274A: mov [rax], rdx +000C274D: mov rax, [rbp+var_18] +000C2751: add rax, 8 +000C2755: mov rdi, rax +000C2758: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C275D: mov rax, [rbp+var_20] +000C2761: mov esi, 4 +000C2766: mov rdi, rax +000C2769: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C276E: movzx edx, byte ptr [rax] +000C2771: mov rax, [rbp+var_18] +000C2775: mov [rax+24h], dl +000C2778: mov rax, [rbp+var_20] +000C277C: mov esi, 5 +000C2781: mov rdi, rax +000C2784: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2789: movzx edx, byte ptr [rax] +000C278C: mov rax, [rbp+var_18] +000C2790: mov [rax+25h], dl +000C2793: mov rax, [rbp+var_20] +000C2797: mov rdi, rax +000C279A: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C279F: sub eax, 9 +000C27A2: mov edx, eax +000C27A4: mov rax, [rbp+var_18] +000C27A8: mov [rax+20h], edx +000C27AB: mov rax, [rbp+var_18] +000C27AF: mov eax, [rax+20h] +000C27B2: test eax, eax +000C27B4: jns short loc_C27C1 +000C27B6: mov rax, [rbp+var_18] +000C27BA: mov dword ptr [rax+20h], 0 +000C27C1: mov rax, [rbp+var_20] +000C27C5: mov rdi, rax +000C27C8: call __ZNKSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +000C27CD: mov rbx, rax +000C27D0: mov rax, [rbp+var_20] +000C27D4: mov rdi, rax +000C27D7: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000C27DC: mov rdx, [rbp+var_18] +000C27E0: lea rcx, [rdx+8] +000C27E4: mov rdx, rbx +000C27E7: mov rsi, rax +000C27EA: mov rdi, rcx +000C27ED: call __ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPKhS1_EEvEEvT_S8_; std::vector>::assign<__gnu_cxx::__normal_iterator>>,void>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000C27F2: jmp short loc_C2812 +000C27F4: mov rbx, rax +000C27F7: mov rax, [rbp+var_18] +000C27FB: add rax, 8 +000C27FF: mov rdi, rax +000C2802: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C2807: mov rax, rbx +000C280A: mov rdi, rax; struct _Unwind_Exception * +000C280D: call __Unwind_Resume +000C2812: add rsp, 18h +000C2816: pop rbx +000C2817: pop rbp +000C2818: retn + +### FUNC 000C281A - 000C285F (69 bytes) name=_ZN11FTDICommandD2Ev +000C281A: push rbp; Alternative name is 'FTDICommand::~FTDICommand()' +000C281B: mov rbp, rsp +000C281E: sub rsp, 10h +000C2822: mov [rbp+var_8], rdi +000C2826: mov rax, [rbp+var_8] +000C282A: mov rdx, cs:_ZTV11FTDICommand_ptr +000C2831: lea rdx, [rdx+10h] +000C2835: mov [rax], rdx +000C2838: mov rax, [rbp+var_8] +000C283C: add rax, 8 +000C2840: mov rdi, rax +000C2843: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C2848: mov eax, 0 +000C284D: test eax, eax +000C284F: jz short locret_C285D +000C2851: mov rax, [rbp+var_8] +000C2855: mov rdi, rax; void * +000C2858: call __ZdlPv; operator delete(void *) +000C285D: leave +000C285E: retn + +### FUNC 000C2860 - 000C2886 (38 bytes) name=_ZN11FTDICommandD0Ev +000C2860: push rbp +000C2861: mov rbp, rsp +000C2864: sub rsp, 10h +000C2868: mov [rbp+var_8], rdi +000C286C: mov rax, [rbp+var_8] +000C2870: mov rdi, rax; this +000C2873: call __ZN11FTDICommandD2Ev; FTDICommand::~FTDICommand() +000C2878: mov rax, [rbp+var_8] +000C287C: mov rdi, rax; void * +000C287F: call __ZdlPv; operator delete(void *) +000C2884: leave +000C2885: retn + +### FUNC 000C2886 - 000C290F (137 bytes) name=_ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii +000C2886: push rbp +000C2887: mov rbp, rsp +000C288A: push rbx +000C288B: sub rsp, 28h +000C288F: mov [rbp+var_28], rdi +000C2893: mov [rbp+var_2C], esi +000C2896: mov [rbp+var_30], edx +000C2899: mov [rbp+var_11], 0 +000C289D: cmp [rbp+var_2C], 0 +000C28A1: jns short loc_C28AA +000C28A3: mov [rbp+var_2C], 0 +000C28AA: mov eax, [rbp+var_30] +000C28AD: movsxd rbx, eax +000C28B0: mov rax, [rbp+var_28] +000C28B4: mov rdi, rax +000C28B7: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C28BC: cmp rbx, rax +000C28BF: setnbe al +000C28C2: test al, al +000C28C4: jz short loc_C28D5 +000C28C6: mov rax, [rbp+var_28] +000C28CA: mov rdi, rax +000C28CD: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C28D2: mov [rbp+var_30], eax +000C28D5: mov eax, [rbp+var_2C] +000C28D8: mov [rbp+var_18], eax +000C28DB: jmp short loc_C28FC +000C28DD: mov eax, [rbp+var_18] +000C28E0: movsxd rdx, eax +000C28E3: mov rax, [rbp+var_28] +000C28E7: mov rsi, rdx +000C28EA: mov rdi, rax +000C28ED: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C28F2: movzx eax, byte ptr [rax] +000C28F5: add [rbp+var_11], al +000C28F8: add [rbp+var_18], 1 +000C28FC: mov eax, [rbp+var_18] +000C28FF: cmp eax, [rbp+var_30] +000C2902: jl short loc_C28DD +000C2904: movzx eax, [rbp+var_11] +000C2908: add rsp, 28h +000C290C: pop rbx +000C290D: pop rbp +000C290E: retn + +### FUNC 000C2910 - 000C2922 (18 bytes) name=_ZN11FTDICommand10getCommandEv +000C2910: push rbp +000C2911: mov rbp, rsp +000C2914: mov [rbp+var_8], rdi +000C2918: mov rax, [rbp+var_8] +000C291C: add rax, 8 +000C2920: pop rbp +000C2921: retn + +### FUNC 000C2922 - 000C29AC (138 bytes) name=_ZN11FTDICommand8getExtraEv +000C2922: push rbp +000C2923: mov rbp, rsp +000C2926: push rbx +000C2927: sub rsp, 28h +000C292B: mov [rbp+var_28], rdi +000C292F: mov [rbp+var_30], rsi +000C2933: mov rax, [rbp+var_28] +000C2937: mov rdi, rax +000C293A: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C293F: mov [rbp+var_14], 0 +000C2946: jmp short loc_C2979 +000C2948: mov eax, [rbp+var_14] +000C294B: add eax, 8 +000C294E: cdqe +000C2950: mov rdx, [rbp+var_30] +000C2954: add rdx, 8 +000C2958: mov rsi, rax +000C295B: mov rdi, rdx +000C295E: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C2963: mov rdx, rax +000C2966: mov rax, [rbp+var_28] +000C296A: mov rsi, rdx +000C296D: mov rdi, rax +000C2970: call __ZNSt6vectorIhSaIhEE9push_backERKh; std::vector>::push_back(uchar const&) +000C2975: add [rbp+var_14], 1 +000C2979: mov rax, [rbp+var_30] +000C297D: mov eax, [rax+20h] +000C2980: cmp eax, [rbp+var_14] +000C2983: jg short loc_C2948 +000C2985: jmp short loc_C29A1 +000C2987: mov rbx, rax +000C298A: mov rax, [rbp+var_28] +000C298E: mov rdi, rax +000C2991: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C2996: mov rax, rbx +000C2999: mov rdi, rax; struct _Unwind_Exception * +000C299C: call __Unwind_Resume +000C29A1: mov rax, [rbp+var_28] +000C29A5: add rsp, 28h +000C29A9: pop rbx +000C29AA: pop rbp +000C29AB: retn + +### FUNC 000C29AC - 000C2A2D (129 bytes) name=_ZNSt6vectorIhSaIhEE6resizeEm +000C29AC: push rbp +000C29AD: mov rbp, rsp +000C29B0: sub rsp, 10h +000C29B4: mov [rbp+var_8], rdi +000C29B8: mov [rbp+var_10], rsi +000C29BC: mov rax, [rbp+var_8] +000C29C0: mov rdi, rax +000C29C3: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C29C8: cmp rax, [rbp+var_10] +000C29CC: setb al +000C29CF: test al, al +000C29D1: jz short loc_C29F7 +000C29D3: mov rax, [rbp+var_8] +000C29D7: mov rdi, rax +000C29DA: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C29DF: mov rdx, [rbp+var_10] +000C29E3: sub rdx, rax +000C29E6: mov rax, [rbp+var_8] +000C29EA: mov rsi, rdx +000C29ED: mov rdi, rax +000C29F0: call __ZNSt6vectorIhSaIhEE17_M_default_appendEm; std::vector>::_M_default_append(ulong) +000C29F5: jmp short locret_C2A2B +000C29F7: mov rax, [rbp+var_8] +000C29FB: mov rdi, rax +000C29FE: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2A03: cmp rax, [rbp+var_10] +000C2A07: setnbe al +000C2A0A: test al, al +000C2A0C: jz short locret_C2A2B +000C2A0E: mov rax, [rbp+var_8] +000C2A12: mov rdx, [rax] +000C2A15: mov rax, [rbp+var_10] +000C2A19: add rdx, rax +000C2A1C: mov rax, [rbp+var_8] +000C2A20: mov rsi, rdx +000C2A23: mov rdi, rax +000C2A26: call __ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh; std::vector>::_M_erase_at_end(uchar *) +000C2A2B: leave +000C2A2C: retn + +### FUNC 000C2A2E - 000C2A5F (49 bytes) name=_ZNSt6vectorIhSaIhEE6assignIN9__gnu_cxx17__normal_iteratorIPKhS1_EEvEEvT_S8_ +000C2A2E: push rbp +000C2A2F: mov rbp, rsp +000C2A32: sub rsp, 40h +000C2A36: mov [rbp+var_18], rdi +000C2A3A: mov [rbp+var_20], rsi +000C2A3E: mov [rbp+var_30], rdx +000C2A42: mov rdx, [rbp+var_30] +000C2A46: mov rcx, [rbp+var_20] +000C2A4A: mov rax, [rbp+var_18] +000C2A4E: mov [rsp+40h+var_40], r8b +000C2A52: mov rsi, rcx +000C2A55: mov rdi, rax +000C2A58: call __ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St12__false_type; std::vector>::_M_assign_dispatch<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::__false_type) +000C2A5D: leave +000C2A5E: retn + +### FUNC 000C2A5F - 000C2A6D (14 bytes) name=_ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE +000C2A5F: push rbp +000C2A60: mov rbp, rsp +000C2A63: mov [rbp+var_8], rdi +000C2A67: mov rax, [rbp+var_8] +000C2A6B: pop rbp +000C2A6C: retn + +### FUNC 000C2A6E - 000C2AD9 (107 bytes) name=_ZNSt6vectorIhSaIhEE9push_backERKh +000C2A6E: push rbp +000C2A6F: mov rbp, rsp +000C2A72: sub rsp, 10h +000C2A76: mov [rbp+var_8], rdi +000C2A7A: mov [rbp+var_10], rsi +000C2A7E: mov rax, [rbp+var_8] +000C2A82: mov rdx, [rax+8] +000C2A86: mov rax, [rbp+var_8] +000C2A8A: mov rax, [rax+10h] +000C2A8E: cmp rdx, rax +000C2A91: jz short loc_C2AC4 +000C2A93: mov rax, [rbp+var_8] +000C2A97: mov rcx, [rax+8] +000C2A9B: mov rax, [rbp+var_8] +000C2A9F: mov rdx, [rbp+var_10] +000C2AA3: mov rsi, rcx +000C2AA6: mov rdi, rax +000C2AA9: call __ZNSt16allocator_traitsISaIhEE9constructIhJRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000C2AAE: mov rax, [rbp+var_8] +000C2AB2: mov rax, [rax+8] +000C2AB6: lea rdx, [rax+1] +000C2ABA: mov rax, [rbp+var_8] +000C2ABE: mov [rax+8], rdx +000C2AC2: jmp short locret_C2AD7 +000C2AC4: mov rdx, [rbp+var_10] +000C2AC8: mov rax, [rbp+var_8] +000C2ACC: mov rsi, rdx +000C2ACF: mov rdi, rax +000C2AD2: call __ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJRKhEEEvDpOT_; std::vector>::_M_emplace_back_aux(uchar const&) +000C2AD7: leave +000C2AD8: retn + +### FUNC 000C2ADA - 000C2CE2 (520 bytes) name=_ZNSt6vectorIhSaIhEE17_M_default_appendEm +000C2ADA: push rbp +000C2ADB: mov rbp, rsp +000C2ADE: push rbx +000C2ADF: sub rsp, 38h +000C2AE3: mov [rbp+var_38], rdi +000C2AE7: mov [rbp+var_40], rsi +000C2AEB: cmp [rbp+var_40], 0 +000C2AF0: jz loc_C2CDB +000C2AF6: mov rax, [rbp+var_38] +000C2AFA: mov rax, [rax+10h] +000C2AFE: mov rdx, rax +000C2B01: mov rax, [rbp+var_38] +000C2B05: mov rax, [rax+8] +000C2B09: sub rdx, rax +000C2B0C: mov rax, rdx +000C2B0F: cmp rax, [rbp+var_40] +000C2B13: jb short loc_C2B57 +000C2B15: mov rax, [rbp+var_38] +000C2B19: mov rdi, rax +000C2B1C: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2B21: mov rdx, rax +000C2B24: mov rax, [rbp+var_38] +000C2B28: mov rax, [rax+8] +000C2B2C: mov rcx, [rbp+var_40] +000C2B30: mov rsi, rcx +000C2B33: mov rdi, rax +000C2B36: call __ZSt27__uninitialized_default_n_aIPhmhEvT_T0_RSaIT1_E; std::__uninitialized_default_n_a(uchar *,ulong,std::allocator &) +000C2B3B: mov rax, [rbp+var_38] +000C2B3F: mov rdx, [rax+8] +000C2B43: mov rax, [rbp+var_40] +000C2B47: add rdx, rax +000C2B4A: mov rax, [rbp+var_38] +000C2B4E: mov [rax+8], rdx +000C2B52: jmp loc_C2CDB +000C2B57: mov rcx, [rbp+var_40] +000C2B5B: mov rax, [rbp+var_38] +000C2B5F: lea rdx, aVectorMDefault_0; "vector::_M_default_append" +000C2B66: mov rsi, rcx +000C2B69: mov rdi, rax +000C2B6C: call __ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000C2B71: mov [rbp+var_20], rax +000C2B75: mov rax, [rbp+var_38] +000C2B79: mov rdi, rax +000C2B7C: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2B81: mov [rbp+var_28], rax +000C2B85: mov rax, [rbp+var_38] +000C2B89: mov rdx, [rbp+var_20] +000C2B8D: mov rsi, rdx +000C2B90: mov rdi, rax +000C2B93: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000C2B98: mov [rbp+var_30], rax +000C2B9C: mov rax, [rbp+var_30] +000C2BA0: mov [rbp+var_18], rax +000C2BA4: mov rax, [rbp+var_38] +000C2BA8: mov rdi, rax +000C2BAB: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2BB0: mov rcx, rax +000C2BB3: mov rax, [rbp+var_38] +000C2BB7: mov rsi, [rax+8] +000C2BBB: mov rax, [rbp+var_38] +000C2BBF: mov rax, [rax] +000C2BC2: mov rdx, [rbp+var_30] +000C2BC6: mov rdi, rax +000C2BC9: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +000C2BCE: mov [rbp+var_18], rax +000C2BD2: mov rax, [rbp+var_38] +000C2BD6: mov rdi, rax +000C2BD9: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2BDE: mov rdx, rax +000C2BE1: mov rcx, [rbp+var_40] +000C2BE5: mov rax, [rbp+var_18] +000C2BE9: mov rsi, rcx +000C2BEC: mov rdi, rax +000C2BEF: call __ZSt27__uninitialized_default_n_aIPhmhEvT_T0_RSaIT1_E; std::__uninitialized_default_n_a(uchar *,ulong,std::allocator &) +000C2BF4: mov rax, [rbp+var_40] +000C2BF8: add [rbp+var_18], rax +000C2BFC: mov rax, [rbp+var_38] +000C2C00: mov rdi, rax +000C2C03: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2C08: mov rdx, rax +000C2C0B: mov rax, [rbp+var_38] +000C2C0F: mov rcx, [rax+8] +000C2C13: mov rax, [rbp+var_38] +000C2C17: mov rax, [rax] +000C2C1A: mov rsi, rcx +000C2C1D: mov rdi, rax +000C2C20: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C2C25: mov rax, [rbp+var_38] +000C2C29: mov rax, [rax+10h] +000C2C2D: mov rdx, rax +000C2C30: mov rax, [rbp+var_38] +000C2C34: mov rax, [rax] +000C2C37: sub rdx, rax +000C2C3A: mov rax, rdx +000C2C3D: mov rdx, rax +000C2C40: mov rax, [rbp+var_38] +000C2C44: mov rcx, [rax] +000C2C47: mov rax, [rbp+var_38] +000C2C4B: mov rsi, rcx +000C2C4E: mov rdi, rax +000C2C51: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C2C56: mov rax, [rbp+var_38] +000C2C5A: mov rdx, [rbp+var_30] +000C2C5E: mov [rax], rdx +000C2C61: mov rax, [rbp+var_38] +000C2C65: mov rdx, [rbp+var_18] +000C2C69: mov [rax+8], rdx +000C2C6D: mov rax, [rbp+var_20] +000C2C71: mov rdx, [rbp+var_30] +000C2C75: add rdx, rax +000C2C78: mov rax, [rbp+var_38] +000C2C7C: mov [rax+10h], rdx +000C2C80: jmp short loc_C2CDB +000C2C82: mov rdi, rax; void * +000C2C85: call ___cxa_begin_catch +000C2C8A: mov rax, [rbp+var_38] +000C2C8E: mov rdi, rax +000C2C91: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2C96: mov rdx, rax +000C2C99: mov rcx, [rbp+var_18] +000C2C9D: mov rax, [rbp+var_30] +000C2CA1: mov rsi, rcx +000C2CA4: mov rdi, rax +000C2CA7: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C2CAC: mov rax, [rbp+var_38] +000C2CB0: mov rdx, [rbp+var_20] +000C2CB4: mov rcx, [rbp+var_30] +000C2CB8: mov rsi, rcx +000C2CBB: mov rdi, rax +000C2CBE: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C2CC3: call ___cxa_rethrow +000C2CC8: mov rbx, rax +000C2CCB: call ___cxa_end_catch +000C2CD0: mov rax, rbx +000C2CD3: mov rdi, rax; struct _Unwind_Exception * +000C2CD6: call __Unwind_Resume +000C2CDB: add rsp, 38h +000C2CDF: pop rbx +000C2CE0: pop rbp +000C2CE1: retn + +### FUNC 000C2CE2 - 000C2D13 (49 bytes) name=_ZNSt6vectorIhSaIhEE18_M_assign_dispatchIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St12__false_type +000C2CE2: push rbp +000C2CE3: mov rbp, rsp +000C2CE6: sub rsp, 40h +000C2CEA: mov [rbp+var_18], rdi +000C2CEE: mov [rbp+var_20], rsi +000C2CF2: mov [rbp+var_30], rdx +000C2CF6: mov rdx, [rbp+var_30] +000C2CFA: mov rcx, [rbp+var_20] +000C2CFE: mov rax, [rbp+var_18] +000C2D02: mov [rsp+40h+var_40], r8b +000C2D06: mov rsi, rcx +000C2D09: mov rdi, rax +000C2D0C: call __ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St20forward_iterator_tag; std::vector>::_M_assign_aux<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::forward_iterator_tag) +000C2D11: leave +000C2D12: retn + +### FUNC 000C2D13 - 000C2D4B (56 bytes) name=_ZNSt16allocator_traitsISaIhEE9constructIhJRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000C2D13: push rbp; Alternative name is '_ZNSt16allocator_traitsISaIhEE9constructIhIRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_' +000C2D14: mov rbp, rsp +000C2D17: sub rsp, 20h +000C2D1B: mov [rbp+var_8], rdi +000C2D1F: mov [rbp+var_10], rsi +000C2D23: mov [rbp+var_18], rdx +000C2D27: mov rax, [rbp+var_18] +000C2D2B: mov rdi, rax +000C2D2E: call __ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C2D33: mov rdx, rax +000C2D36: mov rcx, [rbp+var_10] +000C2D3A: mov rax, [rbp+var_8] +000C2D3E: mov rsi, rcx +000C2D41: mov rdi, rax +000C2D44: call __ZNSt16allocator_traitsISaIhEE12_S_constructIhJRKhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_; std::allocator_traits>::_S_construct(std::allocator&,uchar*,uchar const&&&) +000C2D49: leave +000C2D4A: retn + +### FUNC 000C2D4C - 000C2F1C (464 bytes) name=_ZNSt6vectorIhSaIhEE19_M_emplace_back_auxIJRKhEEEvDpOT_ +000C2D4C: push rbp; Alternative name is 'void std::vector>::_M_emplace_back_aux(unsigned char const&)' +000C2D4D: mov rbp, rsp +000C2D50: push rbx +000C2D51: sub rsp, 38h +000C2D55: mov [rbp+var_38], rdi +000C2D59: mov [rbp+var_40], rsi +000C2D5D: mov rax, [rbp+var_38] +000C2D61: lea rdx, aVectorMEmplace_2; "vector::_M_emplace_back_aux" +000C2D68: mov esi, 1 +000C2D6D: mov rdi, rax +000C2D70: call __ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000C2D75: mov [rbp+var_20], rax +000C2D79: mov rax, [rbp+var_38] +000C2D7D: mov rdx, [rbp+var_20] +000C2D81: mov rsi, rdx +000C2D84: mov rdi, rax +000C2D87: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000C2D8C: mov [rbp+var_28], rax +000C2D90: mov rax, [rbp+var_28] +000C2D94: mov [rbp+var_18], rax +000C2D98: mov rax, [rbp+var_40] +000C2D9C: mov rdi, rax +000C2D9F: call __ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C2DA4: mov rbx, rax +000C2DA7: mov rax, [rbp+var_38] +000C2DAB: mov rdi, rax +000C2DAE: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2DB3: mov rdx, [rbp+var_28] +000C2DB7: lea rcx, [rax+rdx] +000C2DBB: mov rax, [rbp+var_38] +000C2DBF: mov rdx, rbx +000C2DC2: mov rsi, rcx +000C2DC5: mov rdi, rax +000C2DC8: call __ZNSt16allocator_traitsISaIhEE9constructIhJRKhEEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS0_PT_DpOS5_ +000C2DCD: mov [rbp+var_18], 0 +000C2DD5: mov rax, [rbp+var_38] +000C2DD9: mov rdi, rax +000C2DDC: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2DE1: mov rcx, rax +000C2DE4: mov rax, [rbp+var_38] +000C2DE8: mov rsi, [rax+8] +000C2DEC: mov rax, [rbp+var_38] +000C2DF0: mov rax, [rax] +000C2DF3: mov rdx, [rbp+var_28] +000C2DF7: mov rdi, rax +000C2DFA: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +000C2DFF: mov [rbp+var_18], rax +000C2E03: add [rbp+var_18], 1 +000C2E08: mov rax, [rbp+var_38] +000C2E0C: mov rdi, rax +000C2E0F: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2E14: mov rdx, rax +000C2E17: mov rax, [rbp+var_38] +000C2E1B: mov rcx, [rax+8] +000C2E1F: mov rax, [rbp+var_38] +000C2E23: mov rax, [rax] +000C2E26: mov rsi, rcx +000C2E29: mov rdi, rax +000C2E2C: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C2E31: mov rax, [rbp+var_38] +000C2E35: mov rax, [rax+10h] +000C2E39: mov rdx, rax +000C2E3C: mov rax, [rbp+var_38] +000C2E40: mov rax, [rax] +000C2E43: sub rdx, rax +000C2E46: mov rax, rdx +000C2E49: mov rdx, rax +000C2E4C: mov rax, [rbp+var_38] +000C2E50: mov rcx, [rax] +000C2E53: mov rax, [rbp+var_38] +000C2E57: mov rsi, rcx +000C2E5A: mov rdi, rax +000C2E5D: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C2E62: mov rax, [rbp+var_38] +000C2E66: mov rdx, [rbp+var_28] +000C2E6A: mov [rax], rdx +000C2E6D: mov rax, [rbp+var_38] +000C2E71: mov rdx, [rbp+var_18] +000C2E75: mov [rax+8], rdx +000C2E79: mov rax, [rbp+var_20] +000C2E7D: mov rdx, [rbp+var_28] +000C2E81: add rdx, rax +000C2E84: mov rax, [rbp+var_38] +000C2E88: mov [rax+10h], rdx +000C2E8C: jmp loc_C2F15 +000C2E91: mov rdi, rax; void * +000C2E94: call ___cxa_begin_catch +000C2E99: cmp [rbp+var_18], 0 +000C2E9E: jnz short loc_C2EC4 +000C2EA0: mov rax, [rbp+var_38] +000C2EA4: mov rdi, rax +000C2EA7: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C2EAC: mov rdx, [rbp+var_28] +000C2EB0: add rdx, rax +000C2EB3: mov rax, [rbp+var_38] +000C2EB7: mov rsi, rdx +000C2EBA: mov rdi, rax +000C2EBD: call __ZNSt16allocator_traitsISaIhEE7destroyIhEEvRS0_PT_; std::allocator_traits>::destroy(std::allocator&,uchar *) +000C2EC2: jmp short loc_C2EE6 +000C2EC4: mov rax, [rbp+var_38] +000C2EC8: mov rdi, rax +000C2ECB: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2ED0: mov rdx, rax +000C2ED3: mov rcx, [rbp+var_18] +000C2ED7: mov rax, [rbp+var_28] +000C2EDB: mov rsi, rcx +000C2EDE: mov rdi, rax +000C2EE1: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C2EE6: mov rax, [rbp+var_38] +000C2EEA: mov rdx, [rbp+var_20] +000C2EEE: mov rcx, [rbp+var_28] +000C2EF2: mov rsi, rcx +000C2EF5: mov rdi, rax +000C2EF8: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C2EFD: call ___cxa_rethrow +000C2F02: mov rbx, rax +000C2F05: call ___cxa_end_catch +000C2F0A: mov rax, rbx +000C2F0D: mov rdi, rax; struct _Unwind_Exception * +000C2F10: call __Unwind_Resume +000C2F15: add rsp, 38h +000C2F19: pop rbx +000C2F1A: pop rbp +000C2F1B: retn + +### FUNC 000C2F1C - 000C2F45 (41 bytes) name=_ZSt27__uninitialized_default_n_aIPhmhEvT_T0_RSaIT1_E +000C2F1C: push rbp +000C2F1D: mov rbp, rsp +000C2F20: sub rsp, 20h +000C2F24: mov [rbp+var_8], rdi +000C2F28: mov [rbp+var_10], rsi +000C2F2C: mov [rbp+var_18], rdx +000C2F30: mov rdx, [rbp+var_10] +000C2F34: mov rax, [rbp+var_8] +000C2F38: mov rsi, rdx +000C2F3B: mov rdi, rax +000C2F3E: call __ZSt25__uninitialized_default_nIPhmEvT_T0_; std::__uninitialized_default_n(uchar *,ulong) +000C2F43: leave +000C2F44: retn + +### FUNC 000C2F46 - 000C30EE (424 bytes) name=_ZNSt6vectorIhSaIhEE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEvT_S8_St20forward_iterator_tag +000C2F46: push rbp +000C2F47: mov rbp, rsp +000C2F4A: sub rsp, 40h +000C2F4E: mov [rbp+var_28], rdi +000C2F52: mov [rbp+var_30], rsi +000C2F56: mov [rbp+var_40], rdx +000C2F5A: mov rdx, [rbp+var_40] +000C2F5E: mov rax, [rbp+var_30] +000C2F62: mov rsi, rdx +000C2F65: mov rdi, rax +000C2F68: call __ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_; std::distance<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000C2F6D: mov [rbp+var_8], rax +000C2F71: mov rax, [rbp+var_28] +000C2F75: mov rdi, rax +000C2F78: call __ZNKSt6vectorIhSaIhEE8capacityEv; std::vector>::capacity(void) +000C2F7D: cmp rax, [rbp+var_8] +000C2F81: setb al +000C2F84: test al, al +000C2F86: jz loc_C3038 +000C2F8C: mov rcx, [rbp+var_40] +000C2F90: mov rdx, [rbp+var_30] +000C2F94: mov rsi, [rbp+var_8] +000C2F98: mov rax, [rbp+var_28] +000C2F9C: mov rdi, rax +000C2F9F: call __ZNSt6vectorIhSaIhEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKhS1_EEEEPhmT_S9_; std::vector>::_M_allocate_and_copy<__gnu_cxx::__normal_iterator>>>(ulong,__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>) +000C2FA4: mov [rbp+var_10], rax +000C2FA8: mov rax, [rbp+var_28] +000C2FAC: mov rdi, rax +000C2FAF: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C2FB4: mov rdx, rax +000C2FB7: mov rax, [rbp+var_28] +000C2FBB: mov rcx, [rax+8] +000C2FBF: mov rax, [rbp+var_28] +000C2FC3: mov rax, [rax] +000C2FC6: mov rsi, rcx +000C2FC9: mov rdi, rax +000C2FCC: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C2FD1: mov rax, [rbp+var_28] +000C2FD5: mov rax, [rax+10h] +000C2FD9: mov rdx, rax +000C2FDC: mov rax, [rbp+var_28] +000C2FE0: mov rax, [rax] +000C2FE3: sub rdx, rax +000C2FE6: mov rax, rdx +000C2FE9: mov rdx, rax +000C2FEC: mov rax, [rbp+var_28] +000C2FF0: mov rcx, [rax] +000C2FF3: mov rax, [rbp+var_28] +000C2FF7: mov rsi, rcx +000C2FFA: mov rdi, rax +000C2FFD: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C3002: mov rax, [rbp+var_28] +000C3006: mov rdx, [rbp+var_10] +000C300A: mov [rax], rdx +000C300D: mov rax, [rbp+var_28] +000C3011: mov rdx, [rax] +000C3014: mov rax, [rbp+var_8] +000C3018: add rdx, rax +000C301B: mov rax, [rbp+var_28] +000C301F: mov [rax+8], rdx +000C3023: mov rax, [rbp+var_28] +000C3027: mov rdx, [rax+8] +000C302B: mov rax, [rbp+var_28] +000C302F: mov [rax+10h], rdx +000C3033: jmp locret_C30EC +000C3038: mov rax, [rbp+var_28] +000C303C: mov rdi, rax +000C303F: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C3044: cmp rax, [rbp+var_8] +000C3048: setnb al +000C304B: test al, al +000C304D: jz short loc_C307D +000C304F: mov rax, [rbp+var_28] +000C3053: mov rdx, [rax] +000C3056: mov rcx, [rbp+var_40] +000C305A: mov rax, [rbp+var_30] +000C305E: mov rsi, rcx +000C3061: mov rdi, rax +000C3064: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_; std::copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C3069: mov rdx, rax +000C306C: mov rax, [rbp+var_28] +000C3070: mov rsi, rdx +000C3073: mov rdi, rax +000C3076: call __ZNSt6vectorIhSaIhEE15_M_erase_at_endEPh; std::vector>::_M_erase_at_end(uchar *) +000C307B: jmp short locret_C30EC +000C307D: mov rax, [rbp+var_30] +000C3081: mov [rbp+var_20], rax +000C3085: mov rax, [rbp+var_28] +000C3089: mov rdi, rax +000C308C: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C3091: mov rdx, rax +000C3094: lea rax, [rbp+var_20] +000C3098: mov rsi, rdx +000C309B: mov rdi, rax +000C309E: call __ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_; std::advance<__gnu_cxx::__normal_iterator>>,ulong>(__gnu_cxx::__normal_iterator>> &,ulong) +000C30A3: mov rax, [rbp+var_28] +000C30A7: mov rdx, [rax] +000C30AA: mov rcx, [rbp+var_20] +000C30AE: mov rax, [rbp+var_30] +000C30B2: mov rsi, rcx +000C30B5: mov rdi, rax +000C30B8: call __ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhET0_T_SA_S9_; std::copy<__gnu_cxx::__normal_iterator>>,uchar *>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *) +000C30BD: mov rax, [rbp+var_28] +000C30C1: mov rdi, rax +000C30C4: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C30C9: mov rcx, rax +000C30CC: mov rax, [rbp+var_28] +000C30D0: mov rdx, [rax+8] +000C30D4: mov rsi, [rbp+var_40] +000C30D8: mov rax, [rbp+var_20] +000C30DC: mov rdi, rax +000C30DF: call __ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEPhhET0_T_SA_S9_RSaIT1_E; std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator>>,uchar *,uchar>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,uchar *,std::allocator &) +000C30E4: mov rdx, [rbp+var_28] +000C30E8: mov [rdx+8], rax +000C30EC: leave +000C30ED: retn + +### FUNC 000C30EE - 000C3126 (56 bytes) name=_ZNSt16allocator_traitsISaIhEE12_S_constructIhJRKhEEENSt9enable_ifIXsrNS1_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERS0_PS7_DpOS8_ +000C30EE: push rbp; Alternative name is 'std::enable_if>::__construct_helper>::value, void>::type std::allocator_traits>::_S_construct(std::allocator&, unsigned char*, unsigned char const&&&)' +000C30EF: mov rbp, rsp +000C30F2: sub rsp, 20h +000C30F6: mov [rbp+var_8], rdi +000C30FA: mov [rbp+var_10], rsi +000C30FE: mov [rbp+var_18], rdx +000C3102: mov rax, [rbp+var_18] +000C3106: mov rdi, rax +000C3109: call __ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C310E: mov rdx, rax +000C3111: mov rcx, [rbp+var_10] +000C3115: mov rax, [rbp+var_8] +000C3119: mov rsi, rcx +000C311C: mov rdi, rax +000C311F: call __ZN9__gnu_cxx13new_allocatorIhE9constructIhJRKhEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(uchar *,uchar const&) +000C3124: leave +000C3125: retn + +### FUNC 000C3126 - 000C314B (37 bytes) name=_ZSt25__uninitialized_default_nIPhmEvT_T0_ +000C3126: push rbp +000C3127: mov rbp, rsp +000C312A: sub rsp, 10h +000C312E: mov [rbp+var_8], rdi +000C3132: mov [rbp+var_10], rsi +000C3136: mov rdx, [rbp+var_10] +000C313A: mov rax, [rbp+var_8] +000C313E: mov rsi, rdx +000C3141: mov rdi, rax +000C3144: call __ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIPhmEEvT_T0_; std::__uninitialized_default_n_1::__uninit_default_n(uchar *,ulong) +000C3149: leave +000C314A: retn + +### FUNC 000C314B - 000C3185 (58 bytes) name=_ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_ +000C314B: push rbp +000C314C: mov rbp, rsp +000C314F: push rbx +000C3150: sub rsp, 48h +000C3154: mov [rbp+var_30], rdi +000C3158: mov [rbp+var_40], rsi +000C315C: lea rax, [rbp+var_30] +000C3160: mov rdi, rax +000C3163: call __ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS9_; std::__iterator_category<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>> const&) +000C3168: mov rdx, [rbp+var_40] +000C316C: mov rax, [rbp+var_30] +000C3170: mov [rsp+50h+var_50], bl +000C3173: mov rsi, rdx +000C3176: mov rdi, rax +000C3179: call __ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_St26random_access_iterator_tag; std::__distance<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,std::random_access_iterator_tag) +000C317E: add rsp, 48h +000C3182: pop rbx +000C3183: pop rbp +000C3184: retn + +### FUNC 000C3185 - 000C31C7 (66 bytes) name=_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEmEvRT_T0_ +000C3185: push rbp +000C3186: mov rbp, rsp +000C3189: push rbx +000C318A: sub rsp, 38h +000C318E: mov [rbp+var_28], rdi +000C3192: mov [rbp+var_30], rsi +000C3196: mov rax, [rbp+var_30] +000C319A: mov [rbp+var_18], rax +000C319E: mov rax, [rbp+var_28] +000C31A2: mov rdi, rax +000C31A5: call __ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS9_; std::__iterator_category<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>> const&) +000C31AA: mov rdx, [rbp+var_18] +000C31AE: mov rax, [rbp+var_28] +000C31B2: mov [rsp+40h+var_40], bl +000C31B5: mov rsi, rdx +000C31B8: mov rdi, rax +000C31BB: call __ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag; std::__advance<__gnu_cxx::__normal_iterator>>,long>(__gnu_cxx::__normal_iterator>> &,long,std::random_access_iterator_tag) +000C31C0: add rsp, 38h +000C31C4: pop rbx +000C31C5: pop rbp +000C31C6: retn + +### FUNC 000C31C8 - 000C320B (67 bytes) name=_ZN9__gnu_cxx13new_allocatorIhE9constructIhJRKhEEEvPT_DpOT0_ +000C31C8: push rbp; Alternative name is 'void __gnu_cxx::new_allocator::construct(unsigned char *, unsigned char const&)' +000C31C9: mov rbp, rsp +000C31CC: push rbx +000C31CD: sub rsp, 28h +000C31D1: mov [rbp+var_18], rdi +000C31D5: mov [rbp+var_20], rsi +000C31D9: mov [rbp+var_28], rdx +000C31DD: mov rax, [rbp+var_28] +000C31E1: mov rdi, rax +000C31E4: call __ZSt7forwardIRKhEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C31E9: movzx ebx, byte ptr [rax] +000C31EC: mov rax, [rbp+var_20] +000C31F0: mov rsi, rax; void * +000C31F3: mov edi, 1; unsigned __int64 +000C31F8: call __ZnwmPv; operator new(ulong,void *) +000C31FD: test rax, rax +000C3200: jz short loc_C3204 +000C3202: mov [rax], bl +000C3204: add rsp, 28h +000C3208: pop rbx +000C3209: pop rbp +000C320A: retn + +### FUNC 000C320B - 000C3238 (45 bytes) name=_ZNSt27__uninitialized_default_n_1ILb1EE18__uninit_default_nIPhmEEvT_T0_ +000C320B: push rbp +000C320C: mov rbp, rsp +000C320F: sub rsp, 20h +000C3213: mov [rbp+var_18], rdi +000C3217: mov [rbp+var_20], rsi +000C321B: mov [rbp+var_1], 0 +000C321F: lea rdx, [rbp+var_1] +000C3223: mov rcx, [rbp+var_20] +000C3227: mov rax, [rbp+var_18] +000C322B: mov rsi, rcx +000C322E: mov rdi, rax +000C3231: call __ZSt6fill_nIPhmhET_S1_T0_RKT1_; std::fill_n(uchar *,ulong,uchar const&) +000C3236: leave +000C3237: retn + +### FUNC 000C3238 - 000C3242 (10 bytes) name=_ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E17iterator_categoryERKS9_ +000C3238: push rbp +000C3239: mov rbp, rsp +000C323C: mov [rbp+var_8], rdi +000C3240: pop rbp +000C3241: retn + +### FUNC 000C3242 - 000C3267 (37 bytes) name=_ZSt10__distanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEENSt15iterator_traitsIT_E15difference_typeES9_S9_St26random_access_iterator_tag +000C3242: push rbp +000C3243: mov rbp, rsp +000C3246: sub rsp, 20h +000C324A: mov [rbp+var_10], rdi +000C324E: mov [rbp+var_20], rsi +000C3252: lea rdx, [rbp+var_10] +000C3256: lea rax, [rbp+var_20] +000C325A: mov rsi, rdx +000C325D: mov rdi, rax +000C3260: call __ZN9__gnu_cxxmiIPKhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_; __gnu_cxx::operator->>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C3265: leave +000C3266: retn + +### FUNC 000C3267 - 000C328C (37 bytes) name=_ZSt9__advanceIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEElEvRT_T0_St26random_access_iterator_tag +000C3267: push rbp +000C3268: mov rbp, rsp +000C326B: sub rsp, 10h +000C326F: mov [rbp+var_8], rdi +000C3273: mov [rbp+var_10], rsi +000C3277: lea rdx, [rbp+var_10] +000C327B: mov rax, [rbp+var_8] +000C327F: mov rsi, rdx +000C3282: mov rdi, rax +000C3285: call __ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEpLERKl; __gnu_cxx::__normal_iterator>>::operator+=(long const&) +000C328A: leave +000C328B: retn + +### FUNC 000C328C - 000C32CB (63 bytes) name=_ZN9__gnu_cxxmiIPKhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ +000C328C: push rbp +000C328D: mov rbp, rsp +000C3290: push rbx +000C3291: sub rsp, 18h +000C3295: mov [rbp+var_18], rdi +000C3299: mov [rbp+var_20], rsi +000C329D: mov rax, [rbp+var_18] +000C32A1: mov rdi, rax +000C32A4: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C32A9: mov rax, [rax] +000C32AC: mov rbx, rax +000C32AF: mov rax, [rbp+var_20] +000C32B3: mov rdi, rax +000C32B6: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C32BB: mov rax, [rax] +000C32BE: sub rbx, rax +000C32C1: mov rax, rbx +000C32C4: add rsp, 18h +000C32C8: pop rbx +000C32C9: pop rbp +000C32CA: retn + +### FUNC 000C32CC - 000C32F6 (42 bytes) name=_ZN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEpLERKl +000C32CC: push rbp +000C32CD: mov rbp, rsp +000C32D0: mov [rbp+var_8], rdi +000C32D4: mov [rbp+var_10], rsi +000C32D8: mov rax, [rbp+var_8] +000C32DC: mov rdx, [rax] +000C32DF: mov rax, [rbp+var_10] +000C32E3: mov rax, [rax] +000C32E6: add rdx, rax +000C32E9: mov rax, [rbp+var_8] +000C32ED: mov [rax], rdx +000C32F0: mov rax, [rbp+var_8] +000C32F4: pop rbp +000C32F5: retn + +### FUNC 000C32F6 - 000C33EE (248 bytes) name=_ZN9TCMDeviceC2Ev +000C32F6: push rbp; Alternative name is 'TCMDevice::TCMDevice(void)' +000C32F7: mov rbp, rsp +000C32FA: push rbx +000C32FB: sub rsp, 18h +000C32FF: mov [rbp+var_18], rdi +000C3303: mov rax, [rbp+var_18] +000C3307: mov rdi, rax; this +000C330A: call __ZN19IHandleDataDelegateC2Ev; IHandleDataDelegate::IHandleDataDelegate(void) +000C330F: mov rax, [rbp+var_18] +000C3313: add rax, 8 +000C3317: mov rdi, rax; this +000C331A: call __ZN16TCMFrameDelegateC2Ev; TCMFrameDelegate::TCMFrameDelegate(void) +000C331F: mov rax, [rbp+var_18] +000C3323: mov rdx, cs:_ZTV9TCMDevice_ptr +000C332A: lea rdx, [rdx+10h] +000C332E: mov [rax], rdx +000C3331: mov rax, [rbp+var_18] +000C3335: mov rdx, cs:_ZTV9TCMDevice_ptr +000C333C: lea rdx, [rdx+60h] +000C3340: mov [rax+8], rdx +000C3344: mov rax, [rbp+var_18] +000C3348: add rax, 10h +000C334C: mov rdi, rax; this +000C334F: call __ZN10SerialPortC2Ev; SerialPort::SerialPort(void) +000C3354: mov rax, [rbp+var_18] +000C3358: add rax, 38h ; '8' +000C335C: mov rdi, rax +000C335F: call __ZNSt5dequeIcSaIcEEC2Ev; std::deque>::deque(void) +000C3364: mov rax, [rbp+var_18] +000C3368: add rax, 88h +000C336E: mov rdi, rax +000C3371: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EEC2Ev; std::vector>::vector(void) +000C3376: mov rax, [rbp+var_18] +000C337A: mov rdx, [rbp+var_18] +000C337E: add rdx, 10h +000C3382: mov rsi, rax; IHandleDataDelegate * +000C3385: mov rdi, rdx; this +000C3388: call __ZN10SerialPort11setDelegateEP19IHandleDataDelegate; SerialPort::setDelegate(IHandleDataDelegate *) +000C338D: mov rax, [rbp+var_18] +000C3391: mov dword ptr [rax+0A0h], 1 +000C339B: jmp short loc_C33E7 +000C339D: mov rbx, rax +000C33A0: mov rax, [rbp+var_18] +000C33A4: add rax, 88h +000C33AA: mov rdi, rax +000C33AD: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EED2Ev; std::vector>::~vector() +000C33B2: jmp short loc_C33B7 +000C33B4: mov rbx, rax +000C33B7: mov rax, [rbp+var_18] +000C33BB: add rax, 38h ; '8' +000C33BF: mov rdi, rax +000C33C2: call __ZNSt5dequeIcSaIcEED2Ev; std::deque>::~deque() +000C33C7: jmp short loc_C33CC +000C33C9: mov rbx, rax +000C33CC: mov rax, [rbp+var_18] +000C33D0: add rax, 10h +000C33D4: mov rdi, rax; this +000C33D7: call __ZN10SerialPortD2Ev; SerialPort::~SerialPort() +000C33DC: mov rax, rbx +000C33DF: mov rdi, rax; struct _Unwind_Exception * +000C33E2: call __Unwind_Resume +000C33E7: add rsp, 18h +000C33EB: pop rbx +000C33EC: pop rbp +000C33ED: retn + +### FUNC 000C33EE - 000C3511 (291 bytes) name=_ZN9TCMDeviceD2Ev +000C33EE: push rbp; Alternative name is 'TCMDevice::~TCMDevice()' +000C33EF: mov rbp, rsp +000C33F2: sub rsp, 40h +000C33F6: mov [rbp+var_38], rdi +000C33FA: mov rax, [rbp+var_38] +000C33FE: mov rdx, cs:_ZTV9TCMDevice_ptr +000C3405: lea rdx, [rdx+10h] +000C3409: mov [rax], rdx +000C340C: mov rax, [rbp+var_38] +000C3410: mov rdx, cs:_ZTV9TCMDevice_ptr +000C3417: lea rdx, [rdx+60h] +000C341B: mov [rax+8], rdx +000C341F: mov rax, [rbp+var_38] +000C3423: add rax, 88h +000C3429: mov [rbp+var_8], rax +000C342D: mov rax, [rbp+var_8] +000C3431: mov rdi, rax +000C3434: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000C3439: mov [rbp+var_20], rax +000C343D: mov rax, [rbp+var_8] +000C3441: mov rdi, rax +000C3444: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000C3449: mov [rbp+var_30], rax +000C344D: jmp short loc_C348C +000C344F: lea rax, [rbp+var_20] +000C3453: mov rdi, rax +000C3456: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000C345B: mov rax, [rax] +000C345E: mov [rbp+var_10], rax +000C3462: cmp [rbp+var_10], 0 +000C3467: jz short loc_C3480 +000C3469: mov rax, [rbp+var_10] +000C346D: mov rax, [rax] +000C3470: add rax, 18h +000C3474: mov rax, [rax] +000C3477: mov rdx, [rbp+var_10] +000C347B: mov rdi, rdx +000C347E: call rax +000C3480: lea rax, [rbp+var_20] +000C3484: mov rdi, rax +000C3487: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000C348C: lea rdx, [rbp+var_30] +000C3490: lea rax, [rbp+var_20] +000C3494: mov rsi, rdx +000C3497: mov rdi, rax +000C349A: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C349F: test al, al +000C34A1: jnz short loc_C344F +000C34A3: mov rax, [rbp+var_38] +000C34A7: add rax, 10h +000C34AB: mov rdi, rax; this +000C34AE: call __ZN10SerialPort9closePortEv; SerialPort::closePort(void) +000C34B3: mov rax, [rbp+var_38] +000C34B7: add rax, 10h +000C34BB: mov esi, 0; IHandleDataDelegate * +000C34C0: mov rdi, rax; this +000C34C3: call __ZN10SerialPort11setDelegateEP19IHandleDataDelegate; SerialPort::setDelegate(IHandleDataDelegate *) +000C34C8: mov rax, [rbp+var_38] +000C34CC: add rax, 88h +000C34D2: mov rdi, rax +000C34D5: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EED2Ev; std::vector>::~vector() +000C34DA: mov rax, [rbp+var_38] +000C34DE: add rax, 38h ; '8' +000C34E2: mov rdi, rax +000C34E5: call __ZNSt5dequeIcSaIcEED2Ev; std::deque>::~deque() +000C34EA: mov rax, [rbp+var_38] +000C34EE: add rax, 10h +000C34F2: mov rdi, rax; this +000C34F5: call __ZN10SerialPortD2Ev; SerialPort::~SerialPort() +000C34FA: mov eax, 0 +000C34FF: test eax, eax +000C3501: jz short locret_C350F +000C3503: mov rax, [rbp+var_38] +000C3507: mov rdi, rax; void * +000C350A: call __ZdlPv; operator delete(void *) +000C350F: leave +000C3510: retn + +### FUNC 000C3512 - 000C3538 (38 bytes) name=_ZN9TCMDeviceD0Ev +000C3512: push rbp +000C3513: mov rbp, rsp +000C3516: sub rsp, 10h +000C351A: mov [rbp+var_8], rdi +000C351E: mov rax, [rbp+var_8] +000C3522: mov rdi, rax; this +000C3525: call __ZN9TCMDeviceD2Ev; TCMDevice::~TCMDevice() +000C352A: mov rax, [rbp+var_8] +000C352E: mov rdi, rax; void * +000C3531: call __ZdlPv; operator delete(void *) +000C3536: leave +000C3537: retn + +### FUNC 000C3538 - 000C3542 (10 bytes) name=_ZN9TCMDevice4initEv +000C3538: push rbp +000C3539: mov rbp, rsp +000C353C: mov [rbp+var_8], rdi +000C3540: pop rbp +000C3541: retn + +### FUNC 000C3542 - 000C3598 (86 bytes) name=_ZN9TCMDevice4openESs +000C3542: push rbp +000C3543: mov rbp, rsp +000C3546: sub rsp, 20h +000C354A: mov [rbp+var_18], rdi +000C354E: mov [rbp+var_20], rsi +000C3552: mov [rbp+var_1], 0 +000C3556: mov rax, [rbp+var_18] +000C355A: lea rcx, [rax+10h] +000C355E: mov rax, [rbp+var_20] +000C3562: mov edx, offset stru_1C200; unsigned int +000C3567: mov rsi, rax; std::string * +000C356A: mov rdi, rcx; this +000C356D: call __ZN10SerialPort8openPortERKSsj; SerialPort::openPort(std::string const&,uint) +000C3572: mov [rbp+var_1], al +000C3575: cmp [rbp+var_1], 0 +000C3579: jz short loc_C3592 +000C357B: mov rax, [rbp+var_18] +000C357F: mov rax, [rax] +000C3582: add rax, 28h ; '(' +000C3586: mov rax, [rax] +000C3589: mov rdx, [rbp+var_18] +000C358D: mov rdi, rdx +000C3590: call rax +000C3592: movzx eax, [rbp+var_1] +000C3596: leave +000C3597: retn + +### FUNC 000C3598 - 000C35B6 (30 bytes) name=_ZN9TCMDevice8isOpenedEv +000C3598: push rbp +000C3599: mov rbp, rsp +000C359C: sub rsp, 10h +000C35A0: mov [rbp+var_8], rdi +000C35A4: mov rax, [rbp+var_8] +000C35A8: add rax, 10h +000C35AC: mov rdi, rax; this +000C35AF: call __ZN10SerialPort8isOpenedEv; SerialPort::isOpened(void) +000C35B4: leave +000C35B5: retn + +### FUNC 000C35B6 - 000C35EB (53 bytes) name=_ZN9TCMDevice5closeEv +000C35B6: push rbp +000C35B7: mov rbp, rsp +000C35BA: sub rsp, 10h +000C35BE: mov [rbp+var_8], rdi +000C35C2: mov rax, [rbp+var_8] +000C35C6: mov rax, [rax] +000C35C9: add rax, 30h ; '0' +000C35CD: mov rax, [rax] +000C35D0: mov rdx, [rbp+var_8] +000C35D4: mov rdi, rdx +000C35D7: call rax +000C35D9: mov rax, [rbp+var_8] +000C35DD: add rax, 10h +000C35E1: mov rdi, rax; this +000C35E4: call __ZN10SerialPort9closePortEv; SerialPort::closePort(void) +000C35E9: leave +000C35EA: retn + +### FUNC 000C35EC - 000C36A1 (181 bytes) name=_ZN9TCMDevice19getTCMUpdaterDeviceEv +000C35EC: push rbp +000C35ED: mov rbp, rsp +000C35F0: sub rsp, 40h +000C35F4: mov [rbp+var_38], rdi +000C35F8: mov rax, [rbp+var_38] +000C35FC: add rax, 88h +000C3602: mov [rbp+var_8], rax +000C3606: mov rax, [rbp+var_8] +000C360A: mov rdi, rax +000C360D: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000C3612: mov [rbp+var_20], rax +000C3616: mov rax, [rbp+var_8] +000C361A: mov rdi, rax +000C361D: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000C3622: mov [rbp+var_30], rax +000C3626: jmp short loc_C3683 +000C3628: lea rax, [rbp+var_20] +000C362C: mov rdi, rax +000C362F: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000C3634: mov rax, [rax] +000C3637: mov [rbp+lpsrc], rax +000C363B: mov rax, [rbp+lpsrc] +000C363F: test rax, rax +000C3642: jnz short loc_C364B +000C3644: mov eax, 0 +000C3649: jmp short loc_C3666 +000C364B: mov ecx, 0; s2d +000C3650: mov rdx, cs:_ZTI19EloTCMUpdaterDevice_ptr; lpdtype +000C3657: mov rsi, cs:lpstype; lpstype +000C365E: mov rdi, rax; lpsrc +000C3661: call ___dynamic_cast +000C3666: mov [rbp+var_18], rax +000C366A: cmp [rbp+var_18], 0 +000C366F: jz short loc_C3677 +000C3671: mov rax, [rbp+var_18] +000C3675: jmp short locret_C369F +000C3677: lea rax, [rbp+var_20] +000C367B: mov rdi, rax +000C367E: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000C3683: lea rdx, [rbp+var_30] +000C3687: lea rax, [rbp+var_20] +000C368B: mov rsi, rdx +000C368E: mov rdi, rax +000C3691: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C3696: test al, al +000C3698: jnz short loc_C3628 +000C369A: mov eax, 0 +000C369F: leave +000C36A0: retn + +### FUNC 000C36A2 - 000C3757 (181 bytes) name=_ZN9TCMDevice21getTCMHeartBeatDeviceEv +000C36A2: push rbp +000C36A3: mov rbp, rsp +000C36A6: sub rsp, 40h +000C36AA: mov [rbp+var_38], rdi +000C36AE: mov rax, [rbp+var_38] +000C36B2: add rax, 88h +000C36B8: mov [rbp+var_8], rax +000C36BC: mov rax, [rbp+var_8] +000C36C0: mov rdi, rax +000C36C3: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000C36C8: mov [rbp+var_20], rax +000C36CC: mov rax, [rbp+var_8] +000C36D0: mov rdi, rax +000C36D3: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000C36D8: mov [rbp+var_30], rax +000C36DC: jmp short loc_C3739 +000C36DE: lea rax, [rbp+var_20] +000C36E2: mov rdi, rax +000C36E5: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000C36EA: mov rax, [rax] +000C36ED: mov [rbp+lpsrc], rax +000C36F1: mov rax, [rbp+lpsrc] +000C36F5: test rax, rax +000C36F8: jnz short loc_C3701 +000C36FA: mov eax, 0 +000C36FF: jmp short loc_C371C +000C3701: mov ecx, 0; s2d +000C3706: mov rdx, cs:_ZTI21EloTCMHeartBeatDevice_ptr; lpdtype +000C370D: mov rsi, cs:lpstype; lpstype +000C3714: mov rdi, rax; lpsrc +000C3717: call ___dynamic_cast +000C371C: mov [rbp+var_18], rax +000C3720: cmp [rbp+var_18], 0 +000C3725: jz short loc_C372D +000C3727: mov rax, [rbp+var_18] +000C372B: jmp short locret_C3755 +000C372D: lea rax, [rbp+var_20] +000C3731: mov rdi, rax +000C3734: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000C3739: lea rdx, [rbp+var_30] +000C373D: lea rax, [rbp+var_20] +000C3741: mov rsi, rdx +000C3744: mov rdi, rax +000C3747: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C374C: test al, al +000C374E: jnz short loc_C36DE +000C3750: mov eax, 0 +000C3755: leave +000C3756: retn + +### FUNC 000C3758 - 000C3789 (49 bytes) name=_ZN9TCMDevice10startCheckEv +000C3758: push rbp +000C3759: mov rbp, rsp +000C375C: sub rsp, 20h +000C3760: mov [rbp+var_18], rdi +000C3764: mov rax, [rbp+var_18] +000C3768: mov rdi, rax; this +000C376B: call __ZN9TCMDevice21getTCMHeartBeatDeviceEv; TCMDevice::getTCMHeartBeatDevice(void) +000C3770: mov [rbp+var_8], rax +000C3774: cmp [rbp+var_8], 0 +000C3779: jz short locret_C3787 +000C377B: mov rax, [rbp+var_8] +000C377F: mov rdi, rax; this +000C3782: call __ZN21EloTCMHeartBeatDevice10startCheckEv; EloTCMHeartBeatDevice::startCheck(void) +000C3787: leave +000C3788: retn + +### FUNC 000C378A - 000C37BB (49 bytes) name=_ZN9TCMDevice9stopCheckEv +000C378A: push rbp +000C378B: mov rbp, rsp +000C378E: sub rsp, 20h +000C3792: mov [rbp+var_18], rdi +000C3796: mov rax, [rbp+var_18] +000C379A: mov rdi, rax; this +000C379D: call __ZN9TCMDevice21getTCMHeartBeatDeviceEv; TCMDevice::getTCMHeartBeatDevice(void) +000C37A2: mov [rbp+var_8], rax +000C37A6: cmp [rbp+var_8], 0 +000C37AB: jz short locret_C37B9 +000C37AD: mov rax, [rbp+var_8] +000C37B1: mov rdi, rax; this +000C37B4: call __ZN21EloTCMHeartBeatDevice9stopCheckEv; EloTCMHeartBeatDevice::stopCheck(void) +000C37B9: leave +000C37BA: retn + +### FUNC 000C37BC - 000C37D6 (26 bytes) name=_ZN9TCMDevice11onCommErrorEv +000C37BC: push rbp +000C37BD: mov rbp, rsp +000C37C0: sub rsp, 10h +000C37C4: mov [rbp+var_8], rdi +000C37C8: mov rax, [rbp+var_8] +000C37CC: mov rdi, rax; this +000C37CF: call __ZN9TCMDevice5closeEv; TCMDevice::close(void) +000C37D4: leave +000C37D5: retn + +### FUNC 000C37D6 - 000C3863 (141 bytes) name=_ZN9TCMDevice13getFirstNDataEi +000C37D6: push rbp +000C37D7: mov rbp, rsp +000C37DA: push rbx +000C37DB: sub rsp, 38h +000C37DF: mov [rbp+var_28], rdi +000C37E3: mov [rbp+var_30], rsi +000C37E7: mov [rbp+var_34], edx +000C37EA: mov rax, [rbp+var_28] +000C37EE: mov rdi, rax +000C37F1: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C37F6: mov [rbp+var_14], 0 +000C37FD: jmp short loc_C3834 +000C37FF: mov eax, [rbp+var_14] +000C3802: cdqe +000C3804: mov rdx, [rbp+var_30] +000C3808: add rdx, 38h ; '8' +000C380C: mov rsi, rax +000C380F: mov rdi, rdx +000C3812: call __ZNSt5dequeIcSaIcEEixEm; std::deque>::operator[](ulong) +000C3817: movzx eax, byte ptr [rax] +000C381A: mov [rbp+var_15], al +000C381D: lea rdx, [rbp+var_15] +000C3821: mov rax, [rbp+var_28] +000C3825: mov rsi, rdx +000C3828: mov rdi, rax +000C382B: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000C3830: add [rbp+var_14], 1 +000C3834: mov eax, [rbp+var_14] +000C3837: cmp eax, [rbp+var_34] +000C383A: jl short loc_C37FF +000C383C: jmp short loc_C3858 +000C383E: mov rbx, rax +000C3841: mov rax, [rbp+var_28] +000C3845: mov rdi, rax +000C3848: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C384D: mov rax, rbx +000C3850: mov rdi, rax; struct _Unwind_Exception * +000C3853: call __Unwind_Resume +000C3858: mov rax, [rbp+var_28] +000C385C: add rsp, 38h +000C3860: pop rbx +000C3861: pop rbp +000C3862: retn + +### FUNC 000C3864 - 000C3915 (177 bytes) name=_ZN9TCMDevice11checkHeaderERKSt6vectorIhSaIhEE +000C3864: push rbp +000C3865: mov rbp, rsp +000C3868: push rbx +000C3869: sub rsp, 28h +000C386D: mov [rbp+var_28], rdi +000C3871: mov [rbp+var_30], rsi +000C3875: mov [rbp+var_14], 0 +000C387C: jmp short loc_C38AF +000C387E: mov eax, [rbp+var_14] +000C3881: movsxd rdx, eax +000C3884: mov rax, [rbp+var_30] +000C3888: mov rsi, rdx +000C388B: mov rdi, rax +000C388E: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3893: movzx edx, byte ptr [rax] +000C3896: mov eax, 7Eh ; '~' +000C389B: cmp dl, al +000C389D: setnz al +000C38A0: test al, al +000C38A2: jz short loc_C38AB +000C38A4: mov eax, 0 +000C38A9: jmp short loc_C390E +000C38AB: add [rbp+var_14], 1 +000C38AF: cmp [rbp+var_14], 0 +000C38B3: jle short loc_C387E +000C38B5: mov rax, [rbp+var_30] +000C38B9: mov rdi, rax +000C38BC: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C38C1: lea rdx, [rax-1] +000C38C5: mov rax, [rbp+var_30] +000C38C9: mov rsi, rdx +000C38CC: mov rdi, rax +000C38CF: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C38D4: movzx ebx, byte ptr [rax] +000C38D7: mov rax, [rbp+var_30] +000C38DB: mov rdi, rax +000C38DE: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C38E3: sub eax, 1 +000C38E6: mov edx, eax +000C38E8: mov rax, [rbp+var_30] +000C38EC: mov esi, 0 +000C38F1: mov rdi, rax +000C38F4: call __ZN11FTDICommand8checksumERKSt6vectorIhSaIhEEii; FTDICommand::checksum(std::vector> const&,int,int) +000C38F9: cmp bl, al +000C38FB: setnz al +000C38FE: test al, al +000C3900: jz short loc_C3909 +000C3902: mov eax, 0 +000C3907: jmp short loc_C390E +000C3909: mov eax, 1 +000C390E: add rsp, 28h +000C3912: pop rbx +000C3913: pop rbp +000C3914: retn + +### FUNC 000C3916 - 000C3BBB (677 bytes) name=_ZN9TCMDevice16onHandleDataRecvEPKhi +000C3916: push rbp +000C3917: mov rbp, rsp +000C391A: push rbx +000C391B: sub rsp, 88h +000C3922: mov qword ptr [rbp+var_78], rdi +000C3926: mov [rbp+var_80], rsi +000C392A: mov [rbp+var_84], edx +000C3930: mov [rbp+var_14], 0 +000C3937: jmp short loc_C3967 +000C3939: mov eax, [rbp+var_14] +000C393C: movsxd rdx, eax +000C393F: mov rax, [rbp+var_80] +000C3943: add rax, rdx +000C3946: movzx eax, byte ptr [rax] +000C3949: mov [rbp+var_36], al +000C394C: mov rax, qword ptr [rbp+var_78] +000C3950: lea rdx, [rax+38h] +000C3954: lea rax, [rbp+var_36] +000C3958: mov rsi, rax +000C395B: mov rdi, rdx +000C395E: call __ZNSt5dequeIcSaIcEE9push_backEOc; std::deque>::push_back(char &&) +000C3963: add [rbp+var_14], 1 +000C3967: mov eax, [rbp+var_14] +000C396A: cmp eax, [rbp+var_84] +000C3970: jl short loc_C3939 +000C3972: jmp short loc_C3975 +000C3974: nop +000C3975: mov rax, qword ptr [rbp+var_78] +000C3979: add rax, 38h ; '8' +000C397D: mov rdi, rax +000C3980: call __ZNKSt5dequeIcSaIcEE4sizeEv; std::deque>::size(void) +000C3985: mov [rbp+var_28], eax +000C3988: cmp [rbp+var_28], 8 +000C398C: jg short loc_C3994 +000C398E: nop +000C398F: jmp loc_C3BB1 +000C3994: lea rax, [rbp+var_50] +000C3998: mov rcx, qword ptr [rbp+var_78] +000C399C: mov edx, 4 +000C39A1: mov rsi, rcx; int +000C39A4: mov rdi, rax; this +000C39A7: call __ZN9TCMDevice13getFirstNDataEi; TCMDevice::getFirstNData(int) +000C39AC: lea rdx, [rbp+var_50] +000C39B0: mov rax, qword ptr [rbp+var_78] +000C39B4: mov rsi, rdx +000C39B7: mov rdi, rax +000C39BA: call __ZN9TCMDevice11checkHeaderERKSt6vectorIhSaIhEE; TCMDevice::checkHeader(std::vector> const&) +000C39BF: xor eax, 1 +000C39C2: test al, al +000C39C4: jz short loc_C39E0 +000C39C6: mov rax, qword ptr [rbp+var_78] +000C39CA: add rax, 38h ; '8' +000C39CE: mov rdi, rax +000C39D1: call __ZNSt5dequeIcSaIcEE9pop_frontEv; std::deque>::pop_front(void) +000C39D6: mov ebx, 0 +000C39DB: jmp loc_C3B65 +000C39E0: lea rax, [rbp+var_50] +000C39E4: mov esi, 1 +000C39E9: mov rdi, rax +000C39EC: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C39F1: movzx eax, byte ptr [rax] +000C39F4: movzx eax, al +000C39F7: shl eax, 8 +000C39FA: mov ebx, eax +000C39FC: lea rax, [rbp+var_50] +000C3A00: mov esi, 2 +000C3A05: mov rdi, rax +000C3A08: call __ZNSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3A0D: movzx eax, byte ptr [rax] +000C3A10: movzx eax, al +000C3A13: or eax, ebx +000C3A15: mov [rbp+var_2C], eax +000C3A18: mov eax, [rbp+var_2C] +000C3A1B: add eax, 4 +000C3A1E: cmp eax, [rbp+var_28] +000C3A21: jle short loc_C3A2D +000C3A23: mov ebx, 1 +000C3A28: jmp loc_C3B65 +000C3A2D: mov [rbp+var_18], 4 +000C3A34: mov [rbp+var_19], 0 +000C3A38: mov [rbp+var_20], 0 +000C3A3F: jmp short loc_C3A69 +000C3A41: mov eax, [rbp+var_18] +000C3A44: lea edx, [rax+1] +000C3A47: mov [rbp+var_18], edx +000C3A4A: cdqe +000C3A4C: mov rdx, qword ptr [rbp+var_78] +000C3A50: add rdx, 38h ; '8' +000C3A54: mov rsi, rax +000C3A57: mov rdi, rdx +000C3A5A: call __ZNSt5dequeIcSaIcEEixEm; std::deque>::operator[](ulong) +000C3A5F: movzx eax, byte ptr [rax] +000C3A62: add [rbp+var_19], al +000C3A65: add [rbp+var_20], 1 +000C3A69: mov eax, [rbp+var_2C] +000C3A6C: sub eax, 1 +000C3A6F: cmp eax, [rbp+var_20] +000C3A72: jg short loc_C3A41 +000C3A74: mov eax, [rbp+var_18] +000C3A77: cdqe +000C3A79: mov rdx, qword ptr [rbp+var_78] +000C3A7D: add rdx, 38h ; '8' +000C3A81: mov rsi, rax +000C3A84: mov rdi, rdx +000C3A87: call __ZNSt5dequeIcSaIcEEixEm; std::deque>::operator[](ulong) +000C3A8C: movzx eax, byte ptr [rax] +000C3A8F: mov [rbp+var_2D], al +000C3A92: movzx eax, [rbp+var_19] +000C3A96: cmp al, [rbp+var_2D] +000C3A99: jz short loc_C3ADE +000C3A9B: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000C3AA2: movzx eax, byte ptr [rax] +000C3AA5: test al, al +000C3AA7: jz short loc_C3AC4 +000C3AA9: movzx edx, [rbp+var_2D] +000C3AAD: movzx eax, [rbp+var_19] +000C3AB1: mov esi, eax +000C3AB3: lea rdi, aChecksumNotSam; "checksum not same:%.2x, %.2x" +000C3ABA: mov eax, 0 +000C3ABF: call _printf +000C3AC4: mov rax, qword ptr [rbp+var_78] +000C3AC8: add rax, 38h ; '8' +000C3ACC: mov rdi, rax +000C3ACF: call __ZNSt5dequeIcSaIcEE9pop_frontEv; std::deque>::pop_front(void) +000C3AD4: mov ebx, 0 +000C3AD9: jmp loc_C3B65 +000C3ADE: lea rax, [rbp+var_70] +000C3AE2: mov rdi, rax +000C3AE5: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C3AEA: mov eax, [rbp+var_2C] +000C3AED: add eax, 4 +000C3AF0: mov [rbp+var_34], eax +000C3AF3: mov [rbp+var_24], 0 +000C3AFA: jmp short loc_C3B39 +000C3AFC: mov rax, qword ptr [rbp+var_78] +000C3B00: add rax, 38h ; '8' +000C3B04: mov rdi, rax +000C3B07: call __ZNSt5dequeIcSaIcEE5frontEv; std::deque>::front(void) +000C3B0C: movzx eax, byte ptr [rax] +000C3B0F: mov [rbp+var_35], al +000C3B12: lea rdx, [rbp+var_35] +000C3B16: lea rax, [rbp+var_70] +000C3B1A: mov rsi, rdx +000C3B1D: mov rdi, rax +000C3B20: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000C3B25: mov rax, qword ptr [rbp+var_78] +000C3B29: add rax, 38h ; '8' +000C3B2D: mov rdi, rax +000C3B30: call __ZNSt5dequeIcSaIcEE9pop_frontEv; std::deque>::pop_front(void) +000C3B35: add [rbp+var_24], 1 +000C3B39: mov eax, [rbp+var_24] +000C3B3C: cmp eax, [rbp+var_34] +000C3B3F: jl short loc_C3AFC +000C3B41: lea rdx, [rbp+var_70] +000C3B45: mov rax, qword ptr [rbp+var_78] +000C3B49: mov rsi, rdx +000C3B4C: mov rdi, rax +000C3B4F: call __ZN9TCMDevice16handleValidFrameERKSt6vectorIhSaIhEE; TCMDevice::handleValidFrame(std::vector> const&) +000C3B54: lea rax, [rbp+var_70] +000C3B58: mov rdi, rax +000C3B5B: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C3B60: mov ebx, 2 +000C3B65: lea rax, [rbp+var_50] +000C3B69: mov rdi, rax +000C3B6C: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C3B71: test ebx, ebx +000C3B73: jz loc_C3974 +000C3B79: cmp ebx, 2 +000C3B7C: jz short loc_C3B80 +000C3B7E: jmp short loc_C3BB1 +000C3B80: nop +000C3B81: jmp loc_C3974 +000C3B86: mov rbx, rax +000C3B89: lea rax, [rbp+var_70] +000C3B8D: mov rdi, rax +000C3B90: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C3B95: jmp short loc_C3B9A +000C3B97: mov rbx, rax +000C3B9A: lea rax, [rbp+var_50] +000C3B9E: mov rdi, rax +000C3BA1: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C3BA6: mov rax, rbx +000C3BA9: mov rdi, rax; struct _Unwind_Exception * +000C3BAC: call __Unwind_Resume +000C3BB1: add rsp, 88h +000C3BB8: pop rbx +000C3BB9: pop rbp +000C3BBA: retn + +### FUNC 000C3BBC - 000C3E1A (606 bytes) name=_ZN9TCMDevice16handleValidFrameERKSt6vectorIhSaIhEE +000C3BBC: push rbp +000C3BBD: mov rbp, rsp +000C3BC0: push rbx +000C3BC1: sub rsp, 58h +000C3BC5: mov [rbp+var_58], rdi +000C3BC9: mov [rbp+var_60], rsi +000C3BCD: mov rax, [rbp+var_60] +000C3BD1: mov esi, 4 +000C3BD6: mov rdi, rax +000C3BD9: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3BDE: movzx eax, byte ptr [rax] +000C3BE1: mov [rbp+var_1D], al +000C3BE4: mov rax, [rbp+var_60] +000C3BE8: mov esi, 5 +000C3BED: mov rdi, rax +000C3BF0: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3BF5: movzx eax, byte ptr [rax] +000C3BF8: mov [rbp+var_1E], al +000C3BFB: mov rax, [rbp+var_60] +000C3BFF: mov esi, 6 +000C3C04: mov rdi, rax +000C3C07: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3C0C: movzx eax, byte ptr [rax] +000C3C0F: movzx eax, al +000C3C12: shl eax, 8 +000C3C15: mov ebx, eax +000C3C17: mov rax, [rbp+var_60] +000C3C1B: mov esi, 7 +000C3C20: mov rdi, rax +000C3C23: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3C28: movzx eax, byte ptr [rax] +000C3C2B: movzx eax, al +000C3C2E: or eax, ebx +000C3C30: mov [rbp+var_24], eax +000C3C33: mov rax, cs:_ZN16TCMVirtualDevice18LOG_FTDI_SEND_RECVE_ptr +000C3C3A: movzx eax, byte ptr [rax] +000C3C3D: test al, al +000C3C3F: jz loc_C3CC5 +000C3C45: lea rdi, aRecv; "\nRecv:" +000C3C4C: mov eax, 0 +000C3C51: call _printf +000C3C56: mov [rbp+var_14], 0 +000C3C5D: jmp short loc_C3C91 +000C3C5F: mov eax, [rbp+var_14] +000C3C62: movsxd rdx, eax +000C3C65: mov rax, [rbp+var_60] +000C3C69: mov rsi, rdx +000C3C6C: mov rdi, rax +000C3C6F: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3C74: movzx eax, byte ptr [rax] +000C3C77: movzx eax, al +000C3C7A: mov esi, eax +000C3C7C: lea rdi, a2x; "%.2X " +000C3C83: mov eax, 0 +000C3C88: call _printf +000C3C8D: add [rbp+var_14], 1 +000C3C91: mov rax, [rbp+var_60] +000C3C95: mov rdi, rax +000C3C98: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C3C9D: cmp eax, [rbp+var_14] +000C3CA0: setnle al +000C3CA3: test al, al +000C3CA5: jnz short loc_C3C5F +000C3CA7: movzx edx, [rbp+var_1E] +000C3CAB: movzx eax, [rbp+var_1D] +000C3CAF: mov ecx, [rbp+var_24] +000C3CB2: mov esi, eax +000C3CB4: lea rdi, aMain2xSub2xFra; "Main:%.2X Sub:%.2X Frame:%d \n" +000C3CBB: mov eax, 0 +000C3CC0: call _printf +000C3CC5: mov eax, [rbp+var_24] +000C3CC8: lea edx, [rax+1] +000C3CCB: mov rax, [rbp+var_58] +000C3CCF: mov esi, edx; int +000C3CD1: mov rdi, rax; this +000C3CD4: call __ZN9TCMDevice11updateFrameEi; TCMDevice::updateFrame(int) +000C3CD9: mov [rbp+var_15], 0 +000C3CDD: mov rax, [rbp+var_58] +000C3CE1: add rax, 88h +000C3CE7: mov [rbp+var_30], rax +000C3CEB: mov rax, [rbp+var_30] +000C3CEF: mov rdi, rax +000C3CF2: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE5beginEv; std::vector>::begin(void) +000C3CF7: mov [rbp+var_40], rax +000C3CFB: mov rax, [rbp+var_30] +000C3CFF: mov rdi, rax +000C3D02: call __ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EE3endEv; std::vector>::end(void) +000C3D07: mov [rbp+var_50], rax +000C3D0B: jmp short loc_C3D6D +000C3D0D: lea rax, [rbp+var_40] +000C3D11: mov rdi, rax +000C3D14: call __ZNK9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000C3D19: mov rax, [rax] +000C3D1C: mov [rbp+var_38], rax +000C3D20: mov rax, [rbp+var_38] +000C3D24: mov rax, [rax] +000C3D27: mov rax, [rax] +000C3D2A: movzx edx, [rbp+var_1E] +000C3D2E: movzx esi, [rbp+var_1D] +000C3D32: mov rcx, [rbp+var_38] +000C3D36: mov rdi, rcx +000C3D39: call rax +000C3D3B: test al, al +000C3D3D: jz short loc_C3D61 +000C3D3F: mov [rbp+var_15], 1 +000C3D43: mov rax, [rbp+var_38] +000C3D47: mov rax, [rax] +000C3D4A: add rax, 8 +000C3D4E: mov rax, [rax] +000C3D51: mov rcx, [rbp+var_60] +000C3D55: mov rdx, [rbp+var_38] +000C3D59: mov rsi, rcx +000C3D5C: mov rdi, rdx +000C3D5F: call rax +000C3D61: lea rax, [rbp+var_40] +000C3D65: mov rdi, rax +000C3D68: call __ZN9__gnu_cxx17__normal_iteratorIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEppEv; __gnu_cxx::__normal_iterator>>::operator++(void) +000C3D6D: lea rdx, [rbp+var_50] +000C3D71: lea rax, [rbp+var_40] +000C3D75: mov rsi, rdx +000C3D78: mov rdi, rax +000C3D7B: call __ZN9__gnu_cxxneIPP16TCMVirtualDeviceSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_; __gnu_cxx::operator!=>>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C3D80: test al, al +000C3D82: jnz short loc_C3D0D +000C3D84: movzx eax, [rbp+var_15] +000C3D88: xor eax, 1 +000C3D8B: test al, al +000C3D8D: jz loc_C3E13 +000C3D93: lea rdi, aUnhandled; "Unhandled:" +000C3D9A: mov eax, 0 +000C3D9F: call _printf +000C3DA4: mov [rbp+var_1C], 0 +000C3DAB: jmp short loc_C3DDF +000C3DAD: mov eax, [rbp+var_1C] +000C3DB0: movsxd rdx, eax +000C3DB3: mov rax, [rbp+var_60] +000C3DB7: mov rsi, rdx +000C3DBA: mov rdi, rax +000C3DBD: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C3DC2: movzx eax, byte ptr [rax] +000C3DC5: movzx eax, al +000C3DC8: mov esi, eax +000C3DCA: lea rdi, a2x; "%.2X " +000C3DD1: mov eax, 0 +000C3DD6: call _printf +000C3DDB: add [rbp+var_1C], 1 +000C3DDF: mov rax, [rbp+var_60] +000C3DE3: mov rdi, rax +000C3DE6: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C3DEB: cmp eax, [rbp+var_1C] +000C3DEE: setnle al +000C3DF1: test al, al +000C3DF3: jnz short loc_C3DAD +000C3DF5: movzx edx, [rbp+var_1E] +000C3DF9: movzx eax, [rbp+var_1D] +000C3DFD: mov ecx, [rbp+var_24] +000C3E00: mov esi, eax +000C3E02: lea rdi, aMain2xSub2xFra; "Main:%.2X Sub:%.2X Frame:%d \n" +000C3E09: mov eax, 0 +000C3E0E: call _printf +000C3E13: add rsp, 58h +000C3E17: pop rbx +000C3E18: pop rbp +000C3E19: retn + +### FUNC 000C3E1A - 000C3E2E (20 bytes) name=_ZN9TCMDevice13getFrameValueEv +000C3E1A: push rbp +000C3E1B: mov rbp, rsp +000C3E1E: mov [rbp+var_8], rdi +000C3E22: mov rax, [rbp+var_8] +000C3E26: mov eax, [rax+0A0h] +000C3E2C: pop rbp +000C3E2D: retn + +### FUNC 000C3E2E - 000C3E34 (6 bytes) name=_ZThn8_N9TCMDevice13getFrameValueEv +000C3E2E: sub rdi, 8; this +000C3E32: jmp short _ZN9TCMDevice13getFrameValueEv; TCMDevice::getFrameValue(void) + +### FUNC 000C3E34 - 000C3E6D (57 bytes) name=_ZN9TCMDevice11updateFrameEi +000C3E34: push rbp +000C3E35: mov rbp, rsp +000C3E38: mov [rbp+var_8], rdi +000C3E3C: mov [rbp+var_C], esi +000C3E3F: mov rax, [rbp+var_8] +000C3E43: mov edx, [rbp+var_C] +000C3E46: mov [rax+0A0h], edx +000C3E4C: mov rax, [rbp+var_8] +000C3E50: mov eax, [rax+0A0h] +000C3E56: cmp eax, 7FFFh +000C3E5B: jle short loc_C3E6B +000C3E5D: mov rax, [rbp+var_8] +000C3E61: mov dword ptr [rax+0A0h], 1 +000C3E6B: pop rbp +000C3E6C: retn + +### FUNC 000C3E6D - 000C3E96 (41 bytes) name=_ZSt16__deque_buf_sizem +000C3E6D: push rbp +000C3E6E: mov rbp, rsp +000C3E71: mov [rbp+var_8], rdi +000C3E75: cmp [rbp+var_8], 1FFh +000C3E7D: ja short loc_C3E8F +000C3E7F: mov eax, 200h +000C3E84: mov edx, 0 +000C3E89: div [rbp+var_8] +000C3E8D: jmp short loc_C3E94 +000C3E8F: mov eax, 1 +000C3E94: pop rbp +000C3E95: retn + +### FUNC 000C3E96 - 000C3EB2 (28 bytes) name=_ZN19IHandleDataDelegateC2Ev +000C3E96: push rbp; Alternative name is 'IHandleDataDelegate::IHandleDataDelegate(void)' +000C3E97: mov rbp, rsp +000C3E9A: mov [rbp+var_8], rdi +000C3E9E: mov rax, [rbp+var_8] +000C3EA2: mov rdx, cs:_ZTV19IHandleDataDelegate_ptr +000C3EA9: lea rdx, [rdx+10h] +000C3EAD: mov [rax], rdx +000C3EB0: pop rbp +000C3EB1: retn + +### FUNC 000C3EB2 - 000C3ECE (28 bytes) name=_ZN16TCMFrameDelegateC2Ev +000C3EB2: push rbp; Alternative name is 'TCMFrameDelegate::TCMFrameDelegate(void)' +000C3EB3: mov rbp, rsp +000C3EB6: mov [rbp+var_8], rdi +000C3EBA: mov rax, [rbp+var_8] +000C3EBE: mov rdx, cs:_ZTV16TCMFrameDelegate_ptr +000C3EC5: lea rdx, [rdx+10h] +000C3EC9: mov [rax], rdx +000C3ECC: pop rbp +000C3ECD: retn + +### FUNC 000C3ECE - 000C3EE8 (26 bytes) name=_ZNSt5dequeIcSaIcEEC2Ev +000C3ECE: push rbp; Alternative name is 'std::deque>::deque(void)' +000C3ECF: mov rbp, rsp +000C3ED2: sub rsp, 10h +000C3ED6: mov [rbp+var_8], rdi +000C3EDA: mov rax, [rbp+var_8] +000C3EDE: mov rdi, rax +000C3EE1: call __ZNSt11_Deque_baseIcSaIcEEC2Ev; std::_Deque_base>::_Deque_base(void) +000C3EE6: leave +000C3EE7: retn + +### FUNC 000C3EE8 - 000C3F54 (108 bytes) name=_ZNSt5dequeIcSaIcEED2Ev +000C3EE8: push rbp; Alternative name is 'std::deque>::~deque()' +000C3EE9: mov rbp, rsp +000C3EEC: push rbx +000C3EED: sub rsp, 58h +000C3EF1: mov [rbp+var_58], rdi +000C3EF5: mov rax, [rbp+var_58] +000C3EF9: mov rdi, rax +000C3EFC: call __ZNSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv; std::_Deque_base>::_M_get_Tp_allocator(void) +000C3F01: mov rbx, rax +000C3F04: lea rax, [rbp+var_50] +000C3F08: mov rdx, [rbp+var_58] +000C3F0C: mov rsi, rdx +000C3F0F: mov rdi, rax +000C3F12: call __ZNSt5dequeIcSaIcEE3endEv; std::deque>::end(void) +000C3F17: lea rax, [rbp+var_30] +000C3F1B: mov rdx, [rbp+var_58] +000C3F1F: mov rsi, rdx +000C3F22: mov rdi, rax +000C3F25: call __ZNSt5dequeIcSaIcEE5beginEv; std::deque>::begin(void) +000C3F2A: lea rdx, [rbp+var_50] +000C3F2E: lea rsi, [rbp+var_30] +000C3F32: mov rax, [rbp+var_58] +000C3F36: mov rcx, rbx +000C3F39: mov rdi, rax +000C3F3C: call __ZNSt5dequeIcSaIcEE15_M_destroy_dataESt15_Deque_iteratorIcRcPcES5_RKS0_; std::deque>::_M_destroy_data(std::_Deque_iterator,std::_Deque_iterator,std::allocator const&) +000C3F41: mov rax, [rbp+var_58] +000C3F45: mov rdi, rax +000C3F48: call __ZNSt11_Deque_baseIcSaIcEED2Ev; std::_Deque_base>::~_Deque_base() +000C3F4D: add rsp, 58h +000C3F51: pop rbx +000C3F52: pop rbp +000C3F53: retn + +### FUNC 000C3F54 - 000C3F6E (26 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EEC2Ev +000C3F54: push rbp; Alternative name is 'std::vector>::vector(void)' +000C3F55: mov rbp, rsp +000C3F58: sub rsp, 10h +000C3F5C: mov [rbp+var_8], rdi +000C3F60: mov rax, [rbp+var_8] +000C3F64: mov rdi, rax +000C3F67: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EEC2Ev; std::_Vector_base>::_Vector_base(void) +000C3F6C: leave +000C3F6D: retn + +### FUNC 000C3F6E - 000C3FB1 (67 bytes) name=_ZNSt6vectorIP16TCMVirtualDeviceSaIS1_EED2Ev +000C3F6E: push rbp; Alternative name is 'std::vector>::~vector()' +000C3F6F: mov rbp, rsp +000C3F72: sub rsp, 10h +000C3F76: mov [rbp+var_8], rdi +000C3F7A: mov rax, [rbp+var_8] +000C3F7E: mov rdi, rax +000C3F81: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C3F86: mov rdx, rax +000C3F89: mov rax, [rbp+var_8] +000C3F8D: mov rcx, [rax+8] +000C3F91: mov rax, [rbp+var_8] +000C3F95: mov rax, [rax] +000C3F98: mov rsi, rcx +000C3F9B: mov rdi, rax +000C3F9E: call __ZSt8_DestroyIPP16TCMVirtualDeviceS1_EvT_S3_RSaIT0_E; std::_Destroy(TCMVirtualDevice **,TCMVirtualDevice **,std::allocator &) +000C3FA3: mov rax, [rbp+var_8] +000C3FA7: mov rdi, rax +000C3FAA: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EED2Ev; std::_Vector_base>::~_Vector_base() +000C3FAF: leave +000C3FB0: retn + +### FUNC 000C3FB2 - 000C3FDB (41 bytes) name=_ZNSt5dequeIcSaIcEEixEm +000C3FB2: push rbp +000C3FB3: mov rbp, rsp +000C3FB6: sub rsp, 10h +000C3FBA: mov [rbp+var_8], rdi +000C3FBE: mov [rbp+var_10], rsi +000C3FC2: mov rax, [rbp+var_10] +000C3FC6: mov rdx, [rbp+var_8] +000C3FCA: add rdx, 10h +000C3FCE: mov rsi, rax +000C3FD1: mov rdi, rdx +000C3FD4: call __ZNKSt15_Deque_iteratorIcRcPcEixEl; std::_Deque_iterator::operator[](long) +000C3FD9: leave +000C3FDA: retn + +### FUNC 000C3FDB - 000C3FE9 (14 bytes) name=_ZSt4moveIRcEONSt16remove_referenceIT_E4typeEOS2_ +000C3FDB: push rbp +000C3FDC: mov rbp, rsp +000C3FDF: mov [rbp+var_8], rdi +000C3FE3: mov rax, [rbp+var_8] +000C3FE7: pop rbp +000C3FE8: retn + +### FUNC 000C3FEA - 000C401A (48 bytes) name=_ZNSt5dequeIcSaIcEE9push_backEOc +000C3FEA: push rbp +000C3FEB: mov rbp, rsp +000C3FEE: sub rsp, 10h +000C3FF2: mov [rbp+var_8], rdi +000C3FF6: mov [rbp+var_10], rsi +000C3FFA: mov rax, [rbp+var_10] +000C3FFE: mov rdi, rax +000C4001: call __ZSt4moveIRcEONSt16remove_referenceIT_E4typeEOS2_; std::move(char &&&) +000C4006: mov rdx, rax +000C4009: mov rax, [rbp+var_8] +000C400D: mov rsi, rdx +000C4010: mov rdi, rax +000C4013: call __ZNSt5dequeIcSaIcEE12emplace_backIJcEEEvDpOT_; std::deque>::emplace_back(char &&) +000C4018: leave +000C4019: retn + +### FUNC 000C401A - 000C4043 (41 bytes) name=_ZNKSt5dequeIcSaIcEE4sizeEv +000C401A: push rbp +000C401B: mov rbp, rsp +000C401E: sub rsp, 10h +000C4022: mov [rbp+var_8], rdi +000C4026: mov rax, [rbp+var_8] +000C402A: lea rdx, [rax+10h] +000C402E: mov rax, [rbp+var_8] +000C4032: add rax, 30h ; '0' +000C4036: mov rsi, rdx +000C4039: mov rdi, rax +000C403C: call __ZStmiIcRcPcENSt15_Deque_iteratorIT_T0_T1_E15difference_typeERKS6_S9_; std::operator-(std::_Deque_iterator const&,std::_Deque_iterator const&) +000C4041: leave +000C4042: retn + +### FUNC 000C4044 - 000C40A4 (96 bytes) name=_ZNSt5dequeIcSaIcEE9pop_frontEv +000C4044: push rbp +000C4045: mov rbp, rsp +000C4048: sub rsp, 10h +000C404C: mov [rbp+var_8], rdi +000C4050: mov rax, [rbp+var_8] +000C4054: mov rdx, [rax+10h] +000C4058: mov rax, [rbp+var_8] +000C405C: mov rax, [rax+20h] +000C4060: sub rax, 1 +000C4064: cmp rdx, rax +000C4067: jz short loc_C4096 +000C4069: mov rax, [rbp+var_8] +000C406D: mov rdx, [rax+10h] +000C4071: mov rax, [rbp+var_8] +000C4075: mov rsi, rdx +000C4078: mov rdi, rax +000C407B: call __ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_; __gnu_cxx::new_allocator::destroy(char *) +000C4080: mov rax, [rbp+var_8] +000C4084: mov rax, [rax+10h] +000C4088: lea rdx, [rax+1] +000C408C: mov rax, [rbp+var_8] +000C4090: mov [rax+10h], rdx +000C4094: jmp short locret_C40A2 +000C4096: mov rax, [rbp+var_8] +000C409A: mov rdi, rax +000C409D: call __ZNSt5dequeIcSaIcEE16_M_pop_front_auxEv; std::deque>::_M_pop_front_aux(void) +000C40A2: leave +000C40A3: retn + +### FUNC 000C40A4 - 000C40D1 (45 bytes) name=_ZNSt5dequeIcSaIcEE5frontEv +000C40A4: push rbp +000C40A5: mov rbp, rsp +000C40A8: sub rsp, 30h +000C40AC: mov [rbp+var_28], rdi +000C40B0: lea rax, [rbp+var_20] +000C40B4: mov rdx, [rbp+var_28] +000C40B8: mov rsi, rdx +000C40BB: mov rdi, rax +000C40BE: call __ZNSt5dequeIcSaIcEE5beginEv; std::deque>::begin(void) +000C40C3: lea rax, [rbp+var_20] +000C40C7: mov rdi, rax +000C40CA: call __ZNKSt15_Deque_iteratorIcRcPcEdeEv; std::_Deque_iterator::operator*(void) +000C40CF: leave +000C40D0: retn + +### FUNC 000C40D2 - 000C40EC (26 bytes) name=_ZNSt11_Deque_baseIcSaIcEE11_Deque_implD2Ev +000C40D2: push rbp; Alternative name is 'std::_Deque_base>::_Deque_impl::~_Deque_impl()' +000C40D3: mov rbp, rsp +000C40D6: sub rsp, 10h +000C40DA: mov [rbp+var_8], rdi +000C40DE: mov rax, [rbp+var_8] +000C40E2: mov rdi, rax +000C40E5: call __ZNSaIcED2Ev; std::allocator::~allocator() +000C40EA: leave +000C40EB: retn + +### FUNC 000C40EC - 000C4139 (77 bytes) name=_ZNSt11_Deque_baseIcSaIcEEC2Ev +000C40EC: push rbp; Alternative name is 'std::_Deque_base>::_Deque_base(void)' +000C40ED: mov rbp, rsp +000C40F0: push rbx +000C40F1: sub rsp, 18h +000C40F5: mov [rbp+var_18], rdi +000C40F9: mov rax, [rbp+var_18] +000C40FD: mov rdi, rax +000C4100: call __ZNSt11_Deque_baseIcSaIcEE11_Deque_implC2Ev; std::_Deque_base>::_Deque_impl::_Deque_impl(void) +000C4105: mov rax, [rbp+var_18] +000C4109: mov esi, 0 +000C410E: mov rdi, rax +000C4111: call __ZNSt11_Deque_baseIcSaIcEE17_M_initialize_mapEm; std::_Deque_base>::_M_initialize_map(ulong) +000C4116: jmp short loc_C4132 +000C4118: mov rbx, rax +000C411B: mov rax, [rbp+var_18] +000C411F: mov rdi, rax +000C4122: call __ZNSt11_Deque_baseIcSaIcEE11_Deque_implD2Ev; std::_Deque_base>::_Deque_impl::~_Deque_impl() +000C4127: mov rax, rbx +000C412A: mov rdi, rax; struct _Unwind_Exception * +000C412D: call __Unwind_Resume +000C4132: add rsp, 18h +000C4136: pop rbx +000C4137: pop rbp +000C4138: retn + +### FUNC 000C413A - 000C41A1 (103 bytes) name=_ZNSt11_Deque_baseIcSaIcEED2Ev +000C413A: push rbp; Alternative name is 'std::_Deque_base>::~_Deque_base()' +000C413B: mov rbp, rsp +000C413E: sub rsp, 10h +000C4142: mov [rbp+var_8], rdi +000C4146: mov rax, [rbp+var_8] +000C414A: mov rax, [rax] +000C414D: test rax, rax +000C4150: jz short loc_C4193 +000C4152: mov rax, [rbp+var_8] +000C4156: mov rax, [rax+48h] +000C415A: lea rdx, [rax+8] +000C415E: mov rax, [rbp+var_8] +000C4162: mov rcx, [rax+28h] +000C4166: mov rax, [rbp+var_8] +000C416A: mov rsi, rcx +000C416D: mov rdi, rax +000C4170: call __ZNSt11_Deque_baseIcSaIcEE16_M_destroy_nodesEPPcS3_; std::_Deque_base>::_M_destroy_nodes(char **,char **) +000C4175: mov rax, [rbp+var_8] +000C4179: mov rdx, [rax+8] +000C417D: mov rax, [rbp+var_8] +000C4181: mov rcx, [rax] +000C4184: mov rax, [rbp+var_8] +000C4188: mov rsi, rcx +000C418B: mov rdi, rax +000C418E: call __ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm; std::_Deque_base>::_M_deallocate_map(char **,ulong) +000C4193: mov rax, [rbp+var_8] +000C4197: mov rdi, rax +000C419A: call __ZNSt11_Deque_baseIcSaIcEE11_Deque_implD2Ev; std::_Deque_base>::_Deque_impl::~_Deque_impl() +000C419F: leave +000C41A0: retn + +### FUNC 000C41A2 - 000C41CF (45 bytes) name=_ZNSt5dequeIcSaIcEE5beginEv +000C41A2: push rbp +000C41A3: mov rbp, rsp +000C41A6: sub rsp, 10h +000C41AA: mov [rbp+var_8], rdi +000C41AE: mov [rbp+var_10], rsi +000C41B2: mov rax, [rbp+var_10] +000C41B6: lea rdx, [rax+10h] +000C41BA: mov rax, [rbp+var_8] +000C41BE: mov rsi, rdx +000C41C1: mov rdi, rax +000C41C4: call __ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_; std::_Deque_iterator::_Deque_iterator(std::_Deque_iterator const&) +000C41C9: mov rax, [rbp+var_8] +000C41CD: leave +000C41CE: retn + +### FUNC 000C41D0 - 000C41FD (45 bytes) name=_ZNSt5dequeIcSaIcEE3endEv +000C41D0: push rbp +000C41D1: mov rbp, rsp +000C41D4: sub rsp, 10h +000C41D8: mov [rbp+var_8], rdi +000C41DC: mov [rbp+var_10], rsi +000C41E0: mov rax, [rbp+var_10] +000C41E4: lea rdx, [rax+30h] +000C41E8: mov rax, [rbp+var_8] +000C41EC: mov rsi, rdx +000C41EF: mov rdi, rax +000C41F2: call __ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_; std::_Deque_iterator::_Deque_iterator(std::_Deque_iterator const&) +000C41F7: mov rax, [rbp+var_8] +000C41FB: leave +000C41FC: retn + +### FUNC 000C41FE - 000C420C (14 bytes) name=_ZNSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +000C41FE: push rbp +000C41FF: mov rbp, rsp +000C4202: mov [rbp+var_8], rdi +000C4206: mov rax, [rbp+var_8] +000C420A: pop rbp +000C420B: retn + +### FUNC 000C420C - 000C4258 (76 bytes) name=_ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_ +000C420C: push rbp; Alternative name is 'std::_Deque_iterator::_Deque_iterator(std::_Deque_iterator const&)' +000C420D: mov rbp, rsp +000C4210: mov [rbp+var_8], rdi +000C4214: mov [rbp+var_10], rsi +000C4218: mov rax, [rbp+var_10] +000C421C: mov rdx, [rax] +000C421F: mov rax, [rbp+var_8] +000C4223: mov [rax], rdx +000C4226: mov rax, [rbp+var_10] +000C422A: mov rdx, [rax+8] +000C422E: mov rax, [rbp+var_8] +000C4232: mov [rax+8], rdx +000C4236: mov rax, [rbp+var_10] +000C423A: mov rdx, [rax+10h] +000C423E: mov rax, [rbp+var_8] +000C4242: mov [rax+10h], rdx +000C4246: mov rax, [rbp+var_10] +000C424A: mov rdx, [rax+18h] +000C424E: mov rax, [rbp+var_8] +000C4252: mov [rax+18h], rdx +000C4256: pop rbp +000C4257: retn + +### FUNC 000C4258 - 000C426E (22 bytes) name=_ZNSt5dequeIcSaIcEE15_M_destroy_dataESt15_Deque_iteratorIcRcPcES5_RKS0_ +000C4258: push rbp +000C4259: mov rbp, rsp +000C425C: mov [rbp+var_48], rdi +000C4260: mov [rbp+var_50], rsi +000C4264: mov [rbp+var_58], rdx +000C4268: mov [rbp+var_60], rcx +000C426C: pop rbp +000C426D: retn + +### FUNC 000C426E - 000C4288 (26 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implD2Ev +000C426E: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::~_Vector_impl()' +000C426F: mov rbp, rsp +000C4272: sub rsp, 10h +000C4276: mov [rbp+var_8], rdi +000C427A: mov rax, [rbp+var_8] +000C427E: mov rdi, rax +000C4281: call __ZNSaIP16TCMVirtualDeviceED2Ev; std::allocator::~allocator() +000C4286: leave +000C4287: retn + +### FUNC 000C4288 - 000C42A2 (26 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EEC2Ev +000C4288: push rbp; Alternative name is 'std::_Vector_base>::_Vector_base(void)' +000C4289: mov rbp, rsp +000C428C: sub rsp, 10h +000C4290: mov [rbp+var_8], rdi +000C4294: mov rax, [rbp+var_8] +000C4298: mov rdi, rax +000C429B: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implC2Ev; std::_Vector_base>::_Vector_impl::_Vector_impl(void) +000C42A0: leave +000C42A1: retn + +### FUNC 000C42A2 - 000C42F1 (79 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EED2Ev +000C42A2: push rbp; Alternative name is 'std::_Vector_base>::~_Vector_base()' +000C42A3: mov rbp, rsp +000C42A6: sub rsp, 10h +000C42AA: mov [rbp+var_8], rdi +000C42AE: mov rax, [rbp+var_8] +000C42B2: mov rax, [rax+10h] +000C42B6: mov rdx, rax +000C42B9: mov rax, [rbp+var_8] +000C42BD: mov rax, [rax] +000C42C0: sub rdx, rax +000C42C3: mov rax, rdx +000C42C6: sar rax, 3 +000C42CA: mov rdx, rax +000C42CD: mov rax, [rbp+var_8] +000C42D1: mov rcx, [rax] +000C42D4: mov rax, [rbp+var_8] +000C42D8: mov rsi, rcx +000C42DB: mov rdi, rax +000C42DE: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE13_M_deallocateEPS1_m; std::_Vector_base>::_M_deallocate(TCMVirtualDevice **,ulong) +000C42E3: mov rax, [rbp+var_8] +000C42E7: mov rdi, rax +000C42EA: call __ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implD2Ev; std::_Vector_base>::_Vector_impl::~_Vector_impl() +000C42EF: leave +000C42F0: retn + +### FUNC 000C42F2 - 000C4327 (53 bytes) name=_ZNKSt15_Deque_iteratorIcRcPcEixEl +000C42F2: push rbp +000C42F3: mov rbp, rsp +000C42F6: sub rsp, 30h +000C42FA: mov [rbp+var_28], rdi +000C42FE: mov [rbp+var_30], rsi +000C4302: lea rax, [rbp+var_20] +000C4306: mov rdx, [rbp+var_30] +000C430A: mov rcx, [rbp+var_28] +000C430E: mov rsi, rcx +000C4311: mov rdi, rax +000C4314: call __ZNKSt15_Deque_iteratorIcRcPcEplEl; std::_Deque_iterator::operator+(long) +000C4319: lea rax, [rbp+var_20] +000C431D: mov rdi, rax +000C4320: call __ZNKSt15_Deque_iteratorIcRcPcEdeEv; std::_Deque_iterator::operator*(void) +000C4325: leave +000C4326: retn + +### FUNC 000C4327 - 000C4335 (14 bytes) name=_ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE +000C4327: push rbp +000C4328: mov rbp, rsp +000C432B: mov [rbp+var_8], rdi +000C432F: mov rax, [rbp+var_8] +000C4333: pop rbp +000C4334: retn + +### FUNC 000C4336 - 000C43BB (133 bytes) name=_ZNSt5dequeIcSaIcEE12emplace_backIJcEEEvDpOT_ +000C4336: push rbp; Alternative name is 'void std::deque>::emplace_back(char &&)' +000C4337: mov rbp, rsp +000C433A: sub rsp, 10h +000C433E: mov [rbp+var_8], rdi +000C4342: mov [rbp+var_10], rsi +000C4346: mov rax, [rbp+var_8] +000C434A: mov rdx, [rax+30h] +000C434E: mov rax, [rbp+var_8] +000C4352: mov rax, [rax+40h] +000C4356: sub rax, 1 +000C435A: cmp rdx, rax +000C435D: jz short loc_C439B +000C435F: mov rax, [rbp+var_10] +000C4363: mov rdi, rax +000C4366: call __ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000C436B: mov rdx, rax +000C436E: mov rax, [rbp+var_8] +000C4372: mov rcx, [rax+30h] +000C4376: mov rax, [rbp+var_8] +000C437A: mov rsi, rcx +000C437D: mov rdi, rax +000C4380: call __ZN9__gnu_cxx13new_allocatorIcE9constructIcJcEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(char *,char &&) +000C4385: mov rax, [rbp+var_8] +000C4389: mov rax, [rax+30h] +000C438D: lea rdx, [rax+1] +000C4391: mov rax, [rbp+var_8] +000C4395: mov [rax+30h], rdx +000C4399: jmp short locret_C43B9 +000C439B: mov rax, [rbp+var_10] +000C439F: mov rdi, rax +000C43A2: call __ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000C43A7: mov rdx, rax +000C43AA: mov rax, [rbp+var_8] +000C43AE: mov rsi, rdx +000C43B1: mov rdi, rax +000C43B4: call __ZNSt5dequeIcSaIcEE16_M_push_back_auxIJcEEEvDpOT_; std::deque>::_M_push_back_aux(char &&) +000C43B9: leave +000C43BA: retn + +### FUNC 000C43BB - 000C4431 (118 bytes) name=_ZStmiIcRcPcENSt15_Deque_iteratorIT_T0_T1_E15difference_typeERKS6_S9_ +000C43BB: push rbp +000C43BC: mov rbp, rsp +000C43BF: sub rsp, 10h +000C43C3: mov [rbp+var_8], rdi +000C43C7: mov [rbp+var_10], rsi +000C43CB: call __ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv; std::_Deque_iterator::_S_buffer_size(void) +000C43D0: mov rdx, rax +000C43D3: mov rax, [rbp+var_8] +000C43D7: mov rax, [rax+18h] +000C43DB: mov rcx, rax +000C43DE: mov rax, [rbp+var_10] +000C43E2: mov rax, [rax+18h] +000C43E6: sub rcx, rax +000C43E9: mov rax, rcx +000C43EC: sar rax, 3 +000C43F0: sub rax, 1 +000C43F4: imul rdx, rax +000C43F8: mov rax, [rbp+var_8] +000C43FC: mov rax, [rax] +000C43FF: mov rcx, rax +000C4402: mov rax, [rbp+var_8] +000C4406: mov rax, [rax+8] +000C440A: sub rcx, rax +000C440D: mov rax, rcx +000C4410: lea rcx, [rdx+rax] +000C4414: mov rax, [rbp+var_10] +000C4418: mov rax, [rax+10h] +000C441C: mov rdx, rax +000C441F: mov rax, [rbp+var_10] +000C4423: mov rax, [rax] +000C4426: sub rdx, rax +000C4429: mov rax, rdx +000C442C: add rax, rcx +000C442F: leave +000C4430: retn + +### FUNC 000C4432 - 000C4440 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_ +000C4432: push rbp +000C4433: mov rbp, rsp +000C4436: mov [rbp+var_8], rdi +000C443A: mov [rbp+var_10], rsi +000C443E: pop rbp +000C443F: retn + +### FUNC 000C4440 - 000C44AB (107 bytes) name=_ZNSt5dequeIcSaIcEE16_M_pop_front_auxEv +000C4440: push rbp +000C4441: mov rbp, rsp +000C4444: sub rsp, 10h +000C4448: mov [rbp+var_8], rdi +000C444C: mov rax, [rbp+var_8] +000C4450: mov rdx, [rax+10h] +000C4454: mov rax, [rbp+var_8] +000C4458: mov rsi, rdx +000C445B: mov rdi, rax +000C445E: call __ZN9__gnu_cxx13new_allocatorIcE7destroyIcEEvPT_; __gnu_cxx::new_allocator::destroy(char *) +000C4463: mov rax, [rbp+var_8] +000C4467: mov rdx, [rax+18h] +000C446B: mov rax, [rbp+var_8] +000C446F: mov rsi, rdx +000C4472: mov rdi, rax +000C4475: call __ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc; std::_Deque_base>::_M_deallocate_node(char *) +000C447A: mov rax, [rbp+var_8] +000C447E: mov rax, [rax+28h] +000C4482: lea rdx, [rax+8] +000C4486: mov rax, [rbp+var_8] +000C448A: add rax, 10h +000C448E: mov rsi, rdx +000C4491: mov rdi, rax +000C4494: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C4499: mov rax, [rbp+var_8] +000C449D: mov rdx, [rax+18h] +000C44A1: mov rax, [rbp+var_8] +000C44A5: mov [rax+10h], rdx +000C44A9: leave +000C44AA: retn + +### FUNC 000C44AC - 000C44BD (17 bytes) name=_ZNKSt15_Deque_iteratorIcRcPcEdeEv +000C44AC: push rbp +000C44AD: mov rbp, rsp +000C44B0: mov [rbp+var_8], rdi +000C44B4: mov rax, [rbp+var_8] +000C44B8: mov rax, [rax] +000C44BB: pop rbp +000C44BC: retn + +### FUNC 000C44BE - 000C4531 (115 bytes) name=_ZNSt11_Deque_baseIcSaIcEE11_Deque_implC2Ev +000C44BE: push rbp; Alternative name is 'std::_Deque_base>::_Deque_impl::_Deque_impl(void)' +000C44BF: mov rbp, rsp +000C44C2: push rbx +000C44C3: sub rsp, 18h +000C44C7: mov [rbp+var_18], rdi +000C44CB: mov rax, [rbp+var_18] +000C44CF: mov rdi, rax +000C44D2: call __ZNSaIcEC2Ev; std::allocator::allocator(void) +000C44D7: mov rax, [rbp+var_18] +000C44DB: mov qword ptr [rax], 0 +000C44E2: mov rax, [rbp+var_18] +000C44E6: mov qword ptr [rax+8], 0 +000C44EE: mov rax, [rbp+var_18] +000C44F2: add rax, 10h +000C44F6: mov rdi, rax +000C44F9: call __ZNSt15_Deque_iteratorIcRcPcEC2Ev; std::_Deque_iterator::_Deque_iterator(void) +000C44FE: mov rax, [rbp+var_18] +000C4502: add rax, 30h ; '0' +000C4506: mov rdi, rax +000C4509: call __ZNSt15_Deque_iteratorIcRcPcEC2Ev; std::_Deque_iterator::_Deque_iterator(void) +000C450E: jmp short loc_C452A +000C4510: mov rbx, rax +000C4513: mov rax, [rbp+var_18] +000C4517: mov rdi, rax +000C451A: call __ZNSaIcED2Ev; std::allocator::~allocator() +000C451F: mov rax, rbx +000C4522: mov rdi, rax; struct _Unwind_Exception * +000C4525: call __Unwind_Resume +000C452A: add rsp, 18h +000C452E: pop rbx +000C452F: pop rbp +000C4530: retn + +### FUNC 000C4532 - 000C46D6 (420 bytes) name=_ZNSt11_Deque_baseIcSaIcEE17_M_initialize_mapEm +000C4532: push rbp +000C4533: mov rbp, rsp +000C4536: push rbx +000C4537: sub rsp, 48h +000C453B: mov [rbp+var_48], rdi +000C453F: mov [rbp+var_50], rsi +000C4543: mov edi, 1; unsigned __int64 +000C4548: call __ZSt16__deque_buf_sizem; std::__deque_buf_size(ulong) +000C454D: mov rbx, rax +000C4550: mov rax, [rbp+var_50] +000C4554: mov edx, 0 +000C4559: div rbx +000C455C: add rax, 1 +000C4560: mov [rbp+var_18], rax +000C4564: mov rax, [rbp+var_18] +000C4568: add rax, 2 +000C456C: mov [rbp+var_38], rax +000C4570: mov [rbp+var_30], 8 +000C4578: lea rdx, [rbp+var_38] +000C457C: lea rax, [rbp+var_30] +000C4580: mov rsi, rdx +000C4583: mov rdi, rax +000C4586: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000C458B: mov rdx, [rax] +000C458E: mov rax, [rbp+var_48] +000C4592: mov [rax+8], rdx +000C4596: mov rax, [rbp+var_48] +000C459A: mov rdx, [rax+8] +000C459E: mov rax, [rbp+var_48] +000C45A2: mov rsi, rdx +000C45A5: mov rdi, rax +000C45A8: call __ZNSt11_Deque_baseIcSaIcEE15_M_allocate_mapEm; std::_Deque_base>::_M_allocate_map(ulong) +000C45AD: mov rdx, [rbp+var_48] +000C45B1: mov [rdx], rax +000C45B4: mov rax, [rbp+var_48] +000C45B8: mov rdx, [rax] +000C45BB: mov rax, [rbp+var_48] +000C45BF: mov rax, [rax+8] +000C45C3: sub rax, [rbp+var_18] +000C45C7: shr rax, 1 +000C45CA: shl rax, 3 +000C45CE: add rax, rdx +000C45D1: mov [rbp+var_20], rax +000C45D5: mov rax, [rbp+var_18] +000C45D9: lea rdx, ds:0[rax*8] +000C45E1: mov rax, [rbp+var_20] +000C45E5: add rax, rdx +000C45E8: mov [rbp+var_28], rax +000C45EC: mov rdx, [rbp+var_28] +000C45F0: mov rcx, [rbp+var_20] +000C45F4: mov rax, [rbp+var_48] +000C45F8: mov rsi, rcx +000C45FB: mov rdi, rax +000C45FE: call __ZNSt11_Deque_baseIcSaIcEE15_M_create_nodesEPPcS3_; std::_Deque_base>::_M_create_nodes(char **,char **) +000C4603: mov rax, [rbp+var_48] +000C4607: lea rdx, [rax+10h] +000C460B: mov rax, [rbp+var_20] +000C460F: mov rsi, rax +000C4612: mov rdi, rdx +000C4615: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C461A: mov rax, [rbp+var_28] +000C461E: lea rdx, [rax-8] +000C4622: mov rax, [rbp+var_48] +000C4626: add rax, 30h ; '0' +000C462A: mov rsi, rdx +000C462D: mov rdi, rax +000C4630: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C4635: mov rax, [rbp+var_48] +000C4639: mov rdx, [rax+18h] +000C463D: mov rax, [rbp+var_48] +000C4641: mov [rax+10h], rdx +000C4645: mov rax, [rbp+var_48] +000C4649: mov rbx, [rax+38h] +000C464D: mov edi, 1; unsigned __int64 +000C4652: call __ZSt16__deque_buf_sizem; std::__deque_buf_size(ulong) +000C4657: mov rcx, rax +000C465A: mov rax, [rbp+var_50] +000C465E: mov edx, 0 +000C4663: div rcx +000C4666: mov rcx, rdx +000C4669: mov rax, rcx +000C466C: lea rdx, [rbx+rax] +000C4670: mov rax, [rbp+var_48] +000C4674: mov [rax+30h], rdx +000C4678: jmp short loc_C46CF +000C467A: mov rdi, rax; void * +000C467D: call ___cxa_begin_catch +000C4682: mov rax, [rbp+var_48] +000C4686: mov rdx, [rax+8] +000C468A: mov rax, [rbp+var_48] +000C468E: mov rcx, [rax] +000C4691: mov rax, [rbp+var_48] +000C4695: mov rsi, rcx +000C4698: mov rdi, rax +000C469B: call __ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm; std::_Deque_base>::_M_deallocate_map(char **,ulong) +000C46A0: mov rax, [rbp+var_48] +000C46A4: mov qword ptr [rax], 0 +000C46AB: mov rax, [rbp+var_48] +000C46AF: mov qword ptr [rax+8], 0 +000C46B7: call ___cxa_rethrow +000C46BC: mov rbx, rax +000C46BF: call ___cxa_end_catch +000C46C4: mov rax, rbx +000C46C7: mov rdi, rax; struct _Unwind_Exception * +000C46CA: call __Unwind_Resume +000C46CF: add rsp, 48h +000C46D3: pop rbx +000C46D4: pop rbp +000C46D5: retn + +### FUNC 000C46D6 - 000C471B (69 bytes) name=_ZNSt11_Deque_baseIcSaIcEE16_M_destroy_nodesEPPcS3_ +000C46D6: push rbp +000C46D7: mov rbp, rsp +000C46DA: sub rsp, 30h +000C46DE: mov [rbp+var_18], rdi +000C46E2: mov [rbp+var_20], rsi +000C46E6: mov [rbp+var_28], rdx +000C46EA: mov rax, [rbp+var_20] +000C46EE: mov [rbp+var_8], rax +000C46F2: jmp short loc_C470F +000C46F4: mov rax, [rbp+var_8] +000C46F8: mov rdx, [rax] +000C46FB: mov rax, [rbp+var_18] +000C46FF: mov rsi, rdx +000C4702: mov rdi, rax +000C4705: call __ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc; std::_Deque_base>::_M_deallocate_node(char *) +000C470A: add [rbp+var_8], 8 +000C470F: mov rax, [rbp+var_8] +000C4713: cmp rax, [rbp+var_28] +000C4717: jb short loc_C46F4 +000C4719: leave +000C471A: retn + +### FUNC 000C471C - 000C478A (110 bytes) name=_ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm +000C471C: push rbp +000C471D: mov rbp, rsp +000C4720: push rbx +000C4721: sub rsp, 38h +000C4725: mov [rbp+var_28], rdi +000C4729: mov [rbp+var_30], rsi +000C472D: mov [rbp+var_38], rdx +000C4731: lea rax, [rbp+var_11] +000C4735: mov rdx, [rbp+var_28] +000C4739: mov rsi, rdx +000C473C: mov rdi, rax +000C473F: call __ZNKSt11_Deque_baseIcSaIcEE20_M_get_map_allocatorEv; std::_Deque_base>::_M_get_map_allocator(void) +000C4744: mov rdx, [rbp+var_38] +000C4748: mov rcx, [rbp+var_30] +000C474C: lea rax, [rbp+var_11] +000C4750: mov rsi, rcx +000C4753: mov rdi, rax +000C4756: call __ZN9__gnu_cxx13new_allocatorIPcE10deallocateEPS1_m; __gnu_cxx::new_allocator::deallocate(char **,ulong) +000C475B: lea rax, [rbp+var_11] +000C475F: mov rdi, rax +000C4762: call __ZNSaIPcED2Ev; std::allocator::~allocator() +000C4767: jmp short loc_C4783 +000C4769: mov rbx, rax +000C476C: lea rax, [rbp+var_11] +000C4770: mov rdi, rax +000C4773: call __ZNSaIPcED2Ev; std::allocator::~allocator() +000C4778: mov rax, rbx +000C477B: mov rdi, rax; struct _Unwind_Exception * +000C477E: call __Unwind_Resume +000C4783: add rsp, 38h +000C4787: pop rbx +000C4788: pop rbp +000C4789: retn + +### FUNC 000C478A - 000C47C7 (61 bytes) name=_ZNSt12_Vector_baseIP16TCMVirtualDeviceSaIS1_EE12_Vector_implC2Ev +000C478A: push rbp; Alternative name is 'std::_Vector_base>::_Vector_impl::_Vector_impl(void)' +000C478B: mov rbp, rsp +000C478E: sub rsp, 10h +000C4792: mov [rbp+var_8], rdi +000C4796: mov rax, [rbp+var_8] +000C479A: mov rdi, rax +000C479D: call __ZNSaIP16TCMVirtualDeviceEC2Ev; std::allocator::allocator(void) +000C47A2: mov rax, [rbp+var_8] +000C47A6: mov qword ptr [rax], 0 +000C47AD: mov rax, [rbp+var_8] +000C47B1: mov qword ptr [rax+8], 0 +000C47B9: mov rax, [rbp+var_8] +000C47BD: mov qword ptr [rax+10h], 0 +000C47C5: leave +000C47C6: retn + +### FUNC 000C47C8 - 000C47E2 (26 bytes) name=_ZNSaIP16TCMVirtualDeviceED2Ev +000C47C8: push rbp; Alternative name is 'std::allocator::~allocator()' +000C47C9: mov rbp, rsp +000C47CC: sub rsp, 10h +000C47D0: mov [rbp+var_8], rdi +000C47D4: mov rax, [rbp+var_8] +000C47D8: mov rdi, rax +000C47DB: call __ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000C47E0: leave +000C47E1: retn + +### FUNC 000C47E2 - 000C4834 (82 bytes) name=_ZNKSt15_Deque_iteratorIcRcPcEplEl +000C47E2: push rbp +000C47E3: mov rbp, rsp +000C47E6: sub rsp, 40h +000C47EA: mov [rbp+var_28], rdi +000C47EE: mov [rbp+var_30], rsi +000C47F2: mov [rbp+var_38], rdx +000C47F6: mov rdx, [rbp+var_30] +000C47FA: lea rax, [rbp+var_20] +000C47FE: mov rsi, rdx +000C4801: mov rdi, rax +000C4804: call __ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_; std::_Deque_iterator::_Deque_iterator(std::_Deque_iterator const&) +000C4809: mov rdx, [rbp+var_38] +000C480D: lea rax, [rbp+var_20] +000C4811: mov rsi, rdx +000C4814: mov rdi, rax +000C4817: call __ZNSt15_Deque_iteratorIcRcPcEpLEl; std::_Deque_iterator::operator+=(long) +000C481C: mov rdx, rax +000C481F: mov rax, [rbp+var_28] +000C4823: mov rsi, rdx +000C4826: mov rdi, rax +000C4829: call __ZNSt15_Deque_iteratorIcRcPcEC2ERKS2_; std::_Deque_iterator::_Deque_iterator(std::_Deque_iterator const&) +000C482E: mov rax, [rbp+var_28] +000C4832: leave +000C4833: retn + +### FUNC 000C4834 - 000C4877 (67 bytes) name=_ZN9__gnu_cxx13new_allocatorIcE9constructIcJcEEEvPT_DpOT0_ +000C4834: push rbp; Alternative name is 'void __gnu_cxx::new_allocator::construct(char *, char &&)' +000C4835: mov rbp, rsp +000C4838: push rbx +000C4839: sub rsp, 28h +000C483D: mov [rbp+var_18], rdi +000C4841: mov [rbp+var_20], rsi +000C4845: mov [rbp+var_28], rdx +000C4849: mov rax, [rbp+var_28] +000C484D: mov rdi, rax +000C4850: call __ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000C4855: movzx ebx, byte ptr [rax] +000C4858: mov rax, [rbp+var_20] +000C485C: mov rsi, rax; void * +000C485F: mov edi, 1; unsigned __int64 +000C4864: call __ZnwmPv; operator new(ulong,void *) +000C4869: test rax, rax +000C486C: jz short loc_C4870 +000C486E: mov [rax], bl +000C4870: add rsp, 28h +000C4874: pop rbx +000C4875: pop rbp +000C4876: retn + +### FUNC 000C4878 - 000C4951 (217 bytes) name=_ZNSt5dequeIcSaIcEE16_M_push_back_auxIJcEEEvDpOT_ +000C4878: push rbp; Alternative name is 'void std::deque>::_M_push_back_aux(char &&)' +000C4879: mov rbp, rsp +000C487C: push rbx +000C487D: sub rsp, 18h +000C4881: mov [rbp+var_18], rdi +000C4885: mov [rbp+var_20], rsi +000C4889: mov rax, [rbp+var_18] +000C488D: mov esi, 1 +000C4892: mov rdi, rax +000C4895: call __ZNSt5dequeIcSaIcEE22_M_reserve_map_at_backEm; std::deque>::_M_reserve_map_at_back(ulong) +000C489A: mov rax, [rbp+var_18] +000C489E: mov rax, [rax+48h] +000C48A2: lea rbx, [rax+8] +000C48A6: mov rax, [rbp+var_18] +000C48AA: mov rdi, rax +000C48AD: call __ZNSt11_Deque_baseIcSaIcEE16_M_allocate_nodeEv; std::_Deque_base>::_M_allocate_node(void) +000C48B2: mov [rbx], rax +000C48B5: mov rax, [rbp+var_20] +000C48B9: mov rdi, rax +000C48BC: call __ZSt7forwardIcEOT_RNSt16remove_referenceIS0_E4typeE; std::forward(std::remove_reference::type &) +000C48C1: mov rdx, rax +000C48C4: mov rax, [rbp+var_18] +000C48C8: mov rcx, [rax+30h] +000C48CC: mov rax, [rbp+var_18] +000C48D0: mov rsi, rcx +000C48D3: mov rdi, rax +000C48D6: call __ZN9__gnu_cxx13new_allocatorIcE9constructIcJcEEEvPT_DpOT0_; __gnu_cxx::new_allocator::construct(char *,char &&) +000C48DB: mov rax, [rbp+var_18] +000C48DF: mov rax, [rax+48h] +000C48E3: lea rdx, [rax+8] +000C48E7: mov rax, [rbp+var_18] +000C48EB: add rax, 30h ; '0' +000C48EF: mov rsi, rdx +000C48F2: mov rdi, rax +000C48F5: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C48FA: mov rax, [rbp+var_18] +000C48FE: mov rdx, [rax+38h] +000C4902: mov rax, [rbp+var_18] +000C4906: mov [rax+30h], rdx +000C490A: jmp short loc_C494A +000C490C: mov rdi, rax; void * +000C490F: call ___cxa_begin_catch +000C4914: mov rax, [rbp+var_18] +000C4918: mov rax, [rax+48h] +000C491C: add rax, 8 +000C4920: mov rdx, [rax] +000C4923: mov rax, [rbp+var_18] +000C4927: mov rsi, rdx +000C492A: mov rdi, rax +000C492D: call __ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc; std::_Deque_base>::_M_deallocate_node(char *) +000C4932: call ___cxa_rethrow +000C4937: mov rbx, rax +000C493A: call ___cxa_end_catch +000C493F: mov rax, rbx +000C4942: mov rdi, rax; struct _Unwind_Exception * +000C4945: call __Unwind_Resume +000C494A: add rsp, 18h +000C494E: pop rbx +000C494F: pop rbp +000C4950: retn + +### FUNC 000C4951 - 000C4961 (16 bytes) name=_ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv +000C4951: push rbp +000C4952: mov rbp, rsp +000C4955: mov edi, 1; unsigned __int64 +000C495A: call __ZSt16__deque_buf_sizem; std::__deque_buf_size(ulong) +000C495F: pop rbp +000C4960: retn + +### FUNC 000C4962 - 000C4994 (50 bytes) name=_ZNSt11_Deque_baseIcSaIcEE18_M_deallocate_nodeEPc +000C4962: push rbp +000C4963: mov rbp, rsp +000C4966: sub rsp, 10h +000C496A: mov [rbp+var_8], rdi +000C496E: mov [rbp+var_10], rsi +000C4972: mov edi, 1; unsigned __int64 +000C4977: call __ZSt16__deque_buf_sizem; std::__deque_buf_size(ulong) +000C497C: mov rdx, rax +000C497F: mov rax, [rbp+var_8] +000C4983: mov rcx, [rbp+var_10] +000C4987: mov rsi, rcx +000C498A: mov rdi, rax +000C498D: call __ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm; __gnu_cxx::new_allocator::deallocate(char *,ulong) +000C4992: leave +000C4993: retn + +### FUNC 000C4994 - 000C49E0 (76 bytes) name=_ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_ +000C4994: push rbp +000C4995: mov rbp, rsp +000C4998: push rbx +000C4999: sub rsp, 18h +000C499D: mov [rbp+var_18], rdi +000C49A1: mov [rbp+var_20], rsi +000C49A5: mov rax, [rbp+var_18] +000C49A9: mov rdx, [rbp+var_20] +000C49AD: mov [rax+18h], rdx +000C49B1: mov rax, [rbp+var_20] +000C49B5: mov rdx, [rax] +000C49B8: mov rax, [rbp+var_18] +000C49BC: mov [rax+8], rdx +000C49C0: mov rax, [rbp+var_18] +000C49C4: mov rbx, [rax+8] +000C49C8: call __ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv; std::_Deque_iterator::_S_buffer_size(void) +000C49CD: lea rdx, [rbx+rax] +000C49D1: mov rax, [rbp+var_18] +000C49D5: mov [rax+10h], rdx +000C49D9: add rsp, 18h +000C49DD: pop rbx +000C49DE: pop rbp +000C49DF: retn + +### FUNC 000C49E0 - 000C4A19 (57 bytes) name=_ZNSt15_Deque_iteratorIcRcPcEC2Ev +000C49E0: push rbp; Alternative name is 'std::_Deque_iterator::_Deque_iterator(void)' +000C49E1: mov rbp, rsp +000C49E4: mov [rbp+var_8], rdi +000C49E8: mov rax, [rbp+var_8] +000C49EC: mov qword ptr [rax], 0 +000C49F3: mov rax, [rbp+var_8] +000C49F7: mov qword ptr [rax+8], 0 +000C49FF: mov rax, [rbp+var_8] +000C4A03: mov qword ptr [rax+10h], 0 +000C4A0B: mov rax, [rbp+var_8] +000C4A0F: mov qword ptr [rax+18h], 0 +000C4A17: pop rbp +000C4A18: retn + +### FUNC 000C4A1A - 000C4A8B (113 bytes) name=_ZNSt11_Deque_baseIcSaIcEE15_M_allocate_mapEm +000C4A1A: push rbp +000C4A1B: mov rbp, rsp +000C4A1E: push rbx +000C4A1F: sub rsp, 28h +000C4A23: mov [rbp+var_28], rdi +000C4A27: mov [rbp+var_30], rsi +000C4A2B: lea rax, [rbp+var_11] +000C4A2F: mov rdx, [rbp+var_28] +000C4A33: mov rsi, rdx +000C4A36: mov rdi, rax +000C4A39: call __ZNKSt11_Deque_baseIcSaIcEE20_M_get_map_allocatorEv; std::_Deque_base>::_M_get_map_allocator(void) +000C4A3E: mov rcx, [rbp+var_30] +000C4A42: lea rax, [rbp+var_11] +000C4A46: mov edx, 0 +000C4A4B: mov rsi, rcx +000C4A4E: mov rdi, rax +000C4A51: call __ZN9__gnu_cxx13new_allocatorIPcE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000C4A56: mov rbx, rax +000C4A59: lea rax, [rbp+var_11] +000C4A5D: mov rdi, rax +000C4A60: call __ZNSaIPcED2Ev; std::allocator::~allocator() +000C4A65: mov rax, rbx +000C4A68: jmp short loc_C4A84 +000C4A6A: mov rbx, rax +000C4A6D: lea rax, [rbp+var_11] +000C4A71: mov rdi, rax +000C4A74: call __ZNSaIPcED2Ev; std::allocator::~allocator() +000C4A79: mov rax, rbx +000C4A7C: mov rdi, rax; struct _Unwind_Exception * +000C4A7F: call __Unwind_Resume +000C4A84: add rsp, 28h +000C4A88: pop rbx +000C4A89: pop rbp +000C4A8A: retn + +### FUNC 000C4A8C - 000C4B0D (129 bytes) name=_ZNSt11_Deque_baseIcSaIcEE15_M_create_nodesEPPcS3_ +000C4A8C: push rbp +000C4A8D: mov rbp, rsp +000C4A90: push rbx +000C4A91: sub rsp, 38h +000C4A95: mov [rbp+var_28], rdi +000C4A99: mov [rbp+var_30], rsi +000C4A9D: mov [rbp+var_38], rdx +000C4AA1: mov rax, [rbp+var_30] +000C4AA5: mov [rbp+var_18], rax +000C4AA9: jmp short loc_C4AC3 +000C4AAB: mov rax, [rbp+var_28] +000C4AAF: mov rdi, rax +000C4AB2: call __ZNSt11_Deque_baseIcSaIcEE16_M_allocate_nodeEv; std::_Deque_base>::_M_allocate_node(void) +000C4AB7: mov rdx, [rbp+var_18] +000C4ABB: mov [rdx], rax +000C4ABE: add [rbp+var_18], 8 +000C4AC3: mov rax, [rbp+var_18] +000C4AC7: cmp rax, [rbp+var_38] +000C4ACB: jb short loc_C4AAB +000C4ACD: jmp short loc_C4B06 +000C4ACF: mov rdi, rax; void * +000C4AD2: call ___cxa_begin_catch +000C4AD7: mov rdx, [rbp+var_18] +000C4ADB: mov rcx, [rbp+var_30] +000C4ADF: mov rax, [rbp+var_28] +000C4AE3: mov rsi, rcx +000C4AE6: mov rdi, rax +000C4AE9: call __ZNSt11_Deque_baseIcSaIcEE16_M_destroy_nodesEPPcS3_; std::_Deque_base>::_M_destroy_nodes(char **,char **) +000C4AEE: call ___cxa_rethrow +000C4AF3: mov rbx, rax +000C4AF6: call ___cxa_end_catch +000C4AFB: mov rax, rbx +000C4AFE: mov rdi, rax; struct _Unwind_Exception * +000C4B01: call __Unwind_Resume +000C4B06: add rsp, 38h +000C4B0A: pop rbx +000C4B0B: pop rbp +000C4B0C: retn + +### FUNC 000C4B0E - 000C4B42 (52 bytes) name=_ZNKSt11_Deque_baseIcSaIcEE20_M_get_map_allocatorEv +000C4B0E: push rbp +000C4B0F: mov rbp, rsp +000C4B12: sub rsp, 10h +000C4B16: mov [rbp+var_8], rdi +000C4B1A: mov [rbp+var_10], rsi +000C4B1E: mov rax, [rbp+var_10] +000C4B22: mov rdi, rax +000C4B25: call __ZNKSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv; std::_Deque_base>::_M_get_Tp_allocator(void) +000C4B2A: mov rdx, rax +000C4B2D: mov rax, [rbp+var_8] +000C4B31: mov rsi, rdx +000C4B34: mov rdi, rax +000C4B37: call __ZNSaIPcEC2IcEERKSaIT_E; std::allocator::allocator(std::allocator const&) +000C4B3C: mov rax, [rbp+var_8] +000C4B40: leave +000C4B41: retn + +### FUNC 000C4B42 - 000C4B5C (26 bytes) name=_ZNSaIPcED2Ev +000C4B42: push rbp; Alternative name is 'std::allocator::~allocator()' +000C4B43: mov rbp, rsp +000C4B46: sub rsp, 10h +000C4B4A: mov [rbp+var_8], rdi +000C4B4E: mov rax, [rbp+var_8] +000C4B52: mov rdi, rax +000C4B55: call __ZN9__gnu_cxx13new_allocatorIPcED2Ev; __gnu_cxx::new_allocator::~new_allocator() +000C4B5A: leave +000C4B5B: retn + +### FUNC 000C4B5C - 000C4B7E (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIPcE10deallocateEPS1_m +000C4B5C: push rbp +000C4B5D: mov rbp, rsp +000C4B60: sub rsp, 20h +000C4B64: mov [rbp+var_8], rdi +000C4B68: mov [rbp+var_10], rsi +000C4B6C: mov [rbp+var_18], rdx +000C4B70: mov rax, [rbp+var_10] +000C4B74: mov rdi, rax; void * +000C4B77: call __ZdlPv; operator delete(void *) +000C4B7C: leave +000C4B7D: retn + +### FUNC 000C4B7E - 000C4B98 (26 bytes) name=_ZNSaIP16TCMVirtualDeviceEC2Ev +000C4B7E: push rbp; Alternative name is 'std::allocator::allocator(void)' +000C4B7F: mov rbp, rsp +000C4B82: sub rsp, 10h +000C4B86: mov [rbp+var_8], rdi +000C4B8A: mov rax, [rbp+var_8] +000C4B8E: mov rdi, rax +000C4B91: call __ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000C4B96: leave +000C4B97: retn + +### FUNC 000C4B98 - 000C4BA2 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceED2Ev +000C4B98: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000C4B99: mov rbp, rsp +000C4B9C: mov [rbp+var_8], rdi +000C4BA0: pop rbp +000C4BA1: retn + +### FUNC 000C4BA2 - 000C4CA1 (255 bytes) name=_ZNSt15_Deque_iteratorIcRcPcEpLEl +000C4BA2: push rbp +000C4BA3: mov rbp, rsp +000C4BA6: push rbx +000C4BA7: sub rsp, 28h +000C4BAB: mov [rbp+var_28], rdi +000C4BAF: mov [rbp+var_30], rsi +000C4BB3: mov rax, [rbp+var_28] +000C4BB7: mov rax, [rax] +000C4BBA: mov rdx, rax +000C4BBD: mov rax, [rbp+var_28] +000C4BC1: mov rax, [rax+8] +000C4BC5: sub rdx, rax +000C4BC8: mov rax, [rbp+var_30] +000C4BCC: add rax, rdx +000C4BCF: mov [rbp+var_18], rax +000C4BD3: cmp [rbp+var_18], 0 +000C4BD8: js short loc_C4BEC +000C4BDA: call __ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv; std::_Deque_iterator::_S_buffer_size(void) +000C4BDF: cmp rax, [rbp+var_18] +000C4BE3: jle short loc_C4BEC +000C4BE5: mov eax, 1 +000C4BEA: jmp short loc_C4BF1 +000C4BEC: mov eax, 0 +000C4BF1: test al, al +000C4BF3: jz short loc_C4C0F +000C4BF5: mov rax, [rbp+var_28] +000C4BF9: mov rdx, [rax] +000C4BFC: mov rax, [rbp+var_30] +000C4C00: add rdx, rax +000C4C03: mov rax, [rbp+var_28] +000C4C07: mov [rax], rdx +000C4C0A: jmp loc_C4C96 +000C4C0F: cmp [rbp+var_18], 0 +000C4C14: jle short loc_C4C29 +000C4C16: call __ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv; std::_Deque_iterator::_S_buffer_size(void) +000C4C1B: mov rcx, rax +000C4C1E: mov rax, [rbp+var_18] +000C4C22: cqo +000C4C24: idiv rcx +000C4C27: jmp short loc_C4C49 +000C4C29: mov rax, [rbp+var_18] +000C4C2D: not rax +000C4C30: mov rbx, rax +000C4C33: call __ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv; std::_Deque_iterator::_S_buffer_size(void) +000C4C38: mov rcx, rax +000C4C3B: mov rax, rbx +000C4C3E: mov edx, 0 +000C4C43: div rcx +000C4C46: not rax +000C4C49: mov [rbp+var_20], rax +000C4C4D: mov rax, [rbp+var_28] +000C4C51: mov rax, [rax+18h] +000C4C55: mov rdx, [rbp+var_20] +000C4C59: shl rdx, 3 +000C4C5D: add rdx, rax +000C4C60: mov rax, [rbp+var_28] +000C4C64: mov rsi, rdx +000C4C67: mov rdi, rax +000C4C6A: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C4C6F: mov rax, [rbp+var_28] +000C4C73: mov rbx, [rax+8] +000C4C77: call __ZNSt15_Deque_iteratorIcRcPcE14_S_buffer_sizeEv; std::_Deque_iterator::_S_buffer_size(void) +000C4C7C: imul rax, [rbp+var_20] +000C4C81: mov rdx, [rbp+var_18] +000C4C85: sub rdx, rax +000C4C88: mov rax, rdx +000C4C8B: lea rdx, [rbx+rax] +000C4C8F: mov rax, [rbp+var_28] +000C4C93: mov [rax], rdx +000C4C96: mov rax, [rbp+var_28] +000C4C9A: add rsp, 28h +000C4C9E: pop rbx +000C4C9F: pop rbp +000C4CA0: retn + +### FUNC 000C4CA2 - 000C4D03 (97 bytes) name=_ZNSt5dequeIcSaIcEE22_M_reserve_map_at_backEm +000C4CA2: push rbp +000C4CA3: mov rbp, rsp +000C4CA6: sub rsp, 10h +000C4CAA: mov [rbp+var_8], rdi +000C4CAE: mov [rbp+var_10], rsi +000C4CB2: mov rax, [rbp+var_10] +000C4CB6: lea rsi, [rax+1] +000C4CBA: mov rax, [rbp+var_8] +000C4CBE: mov rdx, [rax+8] +000C4CC2: mov rax, [rbp+var_8] +000C4CC6: mov rax, [rax+48h] +000C4CCA: mov rcx, rax +000C4CCD: mov rax, [rbp+var_8] +000C4CD1: mov rax, [rax] +000C4CD4: sub rcx, rax +000C4CD7: mov rax, rcx +000C4CDA: sar rax, 3 +000C4CDE: sub rdx, rax +000C4CE1: mov rax, rdx +000C4CE4: cmp rsi, rax +000C4CE7: jbe short locret_C4D01 +000C4CE9: mov rcx, [rbp+var_10] +000C4CED: mov rax, [rbp+var_8] +000C4CF1: mov edx, 0 +000C4CF6: mov rsi, rcx +000C4CF9: mov rdi, rax +000C4CFC: call __ZNSt5dequeIcSaIcEE17_M_reallocate_mapEmb; std::deque>::_M_reallocate_map(ulong,bool) +000C4D01: leave +000C4D02: retn + +### FUNC 000C4D04 - 000C4D33 (47 bytes) name=_ZNSt11_Deque_baseIcSaIcEE16_M_allocate_nodeEv +000C4D04: push rbp +000C4D05: mov rbp, rsp +000C4D08: sub rsp, 10h +000C4D0C: mov [rbp+var_8], rdi +000C4D10: mov edi, 1; unsigned __int64 +000C4D15: call __ZSt16__deque_buf_sizem; std::__deque_buf_size(ulong) +000C4D1A: mov rcx, rax +000C4D1D: mov rax, [rbp+var_8] +000C4D21: mov edx, 0 +000C4D26: mov rsi, rcx +000C4D29: mov rdi, rax +000C4D2C: call __ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv; __gnu_cxx::new_allocator::allocate(ulong,void const*) +000C4D31: leave +000C4D32: retn + +### FUNC 000C4D34 - 000C4D56 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm +000C4D34: push rbp +000C4D35: mov rbp, rsp +000C4D38: sub rsp, 20h +000C4D3C: mov [rbp+var_8], rdi +000C4D40: mov [rbp+var_10], rsi +000C4D44: mov [rbp+var_18], rdx +000C4D48: mov rax, [rbp+var_10] +000C4D4C: mov rdi, rax; void * +000C4D4F: call __ZdlPv; operator delete(void *) +000C4D54: leave +000C4D55: retn + +### FUNC 000C4D56 - 000C4D98 (66 bytes) name=_ZN9__gnu_cxx13new_allocatorIPcE8allocateEmPKv +000C4D56: push rbp +000C4D57: mov rbp, rsp +000C4D5A: sub rsp, 20h +000C4D5E: mov [rbp+var_8], rdi +000C4D62: mov [rbp+var_10], rsi +000C4D66: mov [rbp+var_18], rdx +000C4D6A: mov rax, [rbp+var_8] +000C4D6E: mov rdi, rax +000C4D71: call __ZNK9__gnu_cxx13new_allocatorIPcE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000C4D76: cmp rax, [rbp+var_10] +000C4D7A: setb al +000C4D7D: test al, al +000C4D7F: jz short loc_C4D86 +000C4D81: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000C4D86: mov rax, [rbp+var_10] +000C4D8A: shl rax, 3 +000C4D8E: mov rdi, rax; unsigned __int64 +000C4D91: call __Znwm; operator new(ulong) +000C4D96: leave +000C4D97: retn + +### FUNC 000C4D98 - 000C4DA6 (14 bytes) name=_ZNKSt11_Deque_baseIcSaIcEE19_M_get_Tp_allocatorEv +000C4D98: push rbp +000C4D99: mov rbp, rsp +000C4D9C: mov [rbp+var_8], rdi +000C4DA0: mov rax, [rbp+var_8] +000C4DA4: pop rbp +000C4DA5: retn + +### FUNC 000C4DA6 - 000C4DC4 (30 bytes) name=_ZNSaIPcEC2IcEERKSaIT_E +000C4DA6: push rbp; Alternative name is 'std::allocator::allocator(std::allocator const&)' +000C4DA7: mov rbp, rsp +000C4DAA: sub rsp, 10h +000C4DAE: mov [rbp+var_8], rdi +000C4DB2: mov [rbp+var_10], rsi +000C4DB6: mov rax, [rbp+var_8] +000C4DBA: mov rdi, rax +000C4DBD: call __ZN9__gnu_cxx13new_allocatorIPcEC2Ev; __gnu_cxx::new_allocator::new_allocator(void) +000C4DC2: leave +000C4DC3: retn + +### FUNC 000C4DC4 - 000C4DCE (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIPcED2Ev +000C4DC4: push rbp; Alternative name is '__gnu_cxx::new_allocator::~new_allocator()' +000C4DC5: mov rbp, rsp +000C4DC8: mov [rbp+var_8], rdi +000C4DCC: pop rbp +000C4DCD: retn + +### FUNC 000C4DCE - 000C4DD8 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIP16TCMVirtualDeviceEC2Ev +000C4DCE: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000C4DCF: mov rbp, rsp +000C4DD2: mov [rbp+var_8], rdi +000C4DD6: pop rbp +000C4DD7: retn + +### FUNC 000C4DD8 - 000C5000 (552 bytes) name=_ZNSt5dequeIcSaIcEE17_M_reallocate_mapEmb +000C4DD8: push rbp +000C4DD9: mov rbp, rsp +000C4DDC: push rbx +000C4DDD: sub rsp, 58h +000C4DE1: mov [rbp+var_48], rdi +000C4DE5: mov [rbp+var_50], rsi +000C4DE9: mov eax, edx +000C4DEB: mov [rbp+var_54], al +000C4DEE: mov rax, [rbp+var_48] +000C4DF2: mov rax, [rax+48h] +000C4DF6: mov rdx, rax +000C4DF9: mov rax, [rbp+var_48] +000C4DFD: mov rax, [rax+28h] +000C4E01: sub rdx, rax +000C4E04: mov rax, rdx +000C4E07: sar rax, 3 +000C4E0B: add rax, 1 +000C4E0F: mov [rbp+var_20], rax +000C4E13: mov rdx, [rbp+var_50] +000C4E17: mov rax, [rbp+var_20] +000C4E1B: add rax, rdx +000C4E1E: mov [rbp+var_28], rax +000C4E22: mov rax, [rbp+var_48] +000C4E26: mov rax, [rax+8] +000C4E2A: mov rdx, [rbp+var_28] +000C4E2E: add rdx, rdx +000C4E31: cmp rax, rdx +000C4E34: jbe loc_C4EE4 +000C4E3A: mov rax, [rbp+var_48] +000C4E3E: mov rdx, [rax] +000C4E41: mov rax, [rbp+var_48] +000C4E45: mov rax, [rax+8] +000C4E49: sub rax, [rbp+var_28] +000C4E4D: shr rax, 1 +000C4E50: lea rcx, ds:0[rax*8] +000C4E58: cmp [rbp+var_54], 0 +000C4E5C: jz short loc_C4E68 +000C4E5E: mov rax, [rbp+var_50] +000C4E62: shl rax, 3 +000C4E66: jmp short loc_C4E6D +000C4E68: mov eax, 0 +000C4E6D: add rax, rcx +000C4E70: add rax, rdx +000C4E73: mov [rbp+var_18], rax +000C4E77: mov rax, [rbp+var_48] +000C4E7B: mov rax, [rax+28h] +000C4E7F: cmp rax, [rbp+var_18] +000C4E83: jbe short loc_C4EAD +000C4E85: mov rax, [rbp+var_48] +000C4E89: mov rax, [rax+48h] +000C4E8D: lea rcx, [rax+8] +000C4E91: mov rax, [rbp+var_48] +000C4E95: mov rax, [rax+28h] +000C4E99: mov rdx, [rbp+var_18] +000C4E9D: mov rsi, rcx +000C4EA0: mov rdi, rax +000C4EA3: call __ZSt4copyIPPcS1_ET0_T_S3_S2_; std::copy(char **,char **,char **) +000C4EA8: jmp loc_C4FBC +000C4EAD: mov rax, [rbp+var_20] +000C4EB1: lea rdx, ds:0[rax*8] +000C4EB9: mov rax, [rbp+var_18] +000C4EBD: add rdx, rax +000C4EC0: mov rax, [rbp+var_48] +000C4EC4: mov rax, [rax+48h] +000C4EC8: lea rcx, [rax+8] +000C4ECC: mov rax, [rbp+var_48] +000C4ED0: mov rax, [rax+28h] +000C4ED4: mov rsi, rcx +000C4ED7: mov rdi, rax +000C4EDA: call __ZSt13copy_backwardIPPcS1_ET0_T_S3_S2_; std::copy_backward(char **,char **,char **) +000C4EDF: jmp loc_C4FBC +000C4EE4: mov rax, [rbp+var_48] +000C4EE8: mov rbx, [rax+8] +000C4EEC: mov rax, [rbp+var_48] +000C4EF0: lea rdx, [rax+8] +000C4EF4: lea rax, [rbp+var_50] +000C4EF8: mov rsi, rax +000C4EFB: mov rdi, rdx +000C4EFE: call __ZSt3maxImERKT_S2_S2_; std::max(ulong const&,ulong const&) +000C4F03: mov rax, [rax] +000C4F06: add rax, rbx +000C4F09: add rax, 2 +000C4F0D: mov [rbp+var_30], rax +000C4F11: mov rax, [rbp+var_48] +000C4F15: mov rdx, [rbp+var_30] +000C4F19: mov rsi, rdx +000C4F1C: mov rdi, rax +000C4F1F: call __ZNSt11_Deque_baseIcSaIcEE15_M_allocate_mapEm; std::_Deque_base>::_M_allocate_map(ulong) +000C4F24: mov [rbp+var_38], rax +000C4F28: mov rax, [rbp+var_28] +000C4F2C: mov rdx, [rbp+var_30] +000C4F30: sub rdx, rax +000C4F33: mov rax, rdx +000C4F36: shr rax, 1 +000C4F39: lea rdx, ds:0[rax*8] +000C4F41: cmp [rbp+var_54], 0 +000C4F45: jz short loc_C4F51 +000C4F47: mov rax, [rbp+var_50] +000C4F4B: shl rax, 3 +000C4F4F: jmp short loc_C4F56 +000C4F51: mov eax, 0 +000C4F56: add rdx, rax +000C4F59: mov rax, [rbp+var_38] +000C4F5D: add rax, rdx +000C4F60: mov [rbp+var_18], rax +000C4F64: mov rax, [rbp+var_48] +000C4F68: mov rax, [rax+48h] +000C4F6C: lea rcx, [rax+8] +000C4F70: mov rax, [rbp+var_48] +000C4F74: mov rax, [rax+28h] +000C4F78: mov rdx, [rbp+var_18] +000C4F7C: mov rsi, rcx +000C4F7F: mov rdi, rax +000C4F82: call __ZSt4copyIPPcS1_ET0_T_S3_S2_; std::copy(char **,char **,char **) +000C4F87: mov rax, [rbp+var_48] +000C4F8B: mov rdx, [rax+8] +000C4F8F: mov rax, [rbp+var_48] +000C4F93: mov rcx, [rax] +000C4F96: mov rax, [rbp+var_48] +000C4F9A: mov rsi, rcx +000C4F9D: mov rdi, rax +000C4FA0: call __ZNSt11_Deque_baseIcSaIcEE17_M_deallocate_mapEPPcm; std::_Deque_base>::_M_deallocate_map(char **,ulong) +000C4FA5: mov rax, [rbp+var_48] +000C4FA9: mov rdx, [rbp+var_38] +000C4FAD: mov [rax], rdx +000C4FB0: mov rax, [rbp+var_48] +000C4FB4: mov rdx, [rbp+var_30] +000C4FB8: mov [rax+8], rdx +000C4FBC: mov rax, [rbp+var_48] +000C4FC0: lea rdx, [rax+10h] +000C4FC4: mov rax, [rbp+var_18] +000C4FC8: mov rsi, rax +000C4FCB: mov rdi, rdx +000C4FCE: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C4FD3: mov rax, [rbp+var_20] +000C4FD7: shl rax, 3 +000C4FDB: lea rdx, [rax-8] +000C4FDF: mov rax, [rbp+var_18] +000C4FE3: add rdx, rax +000C4FE6: mov rax, [rbp+var_48] +000C4FEA: add rax, 30h ; '0' +000C4FEE: mov rsi, rdx +000C4FF1: mov rdi, rax +000C4FF4: call __ZNSt15_Deque_iteratorIcRcPcE11_M_set_nodeEPS1_; std::_Deque_iterator::_M_set_node(char **) +000C4FF9: add rsp, 58h +000C4FFD: pop rbx +000C4FFE: pop rbp +000C4FFF: retn + +### FUNC 000C5000 - 000C503E (62 bytes) name=_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv +000C5000: push rbp +000C5001: mov rbp, rsp +000C5004: sub rsp, 20h +000C5008: mov [rbp+var_8], rdi +000C500C: mov [rbp+var_10], rsi +000C5010: mov [rbp+var_18], rdx +000C5014: mov rax, [rbp+var_8] +000C5018: mov rdi, rax +000C501B: call __ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv; __gnu_cxx::new_allocator::max_size(void) +000C5020: cmp rax, [rbp+var_10] +000C5024: setb al +000C5027: test al, al +000C5029: jz short loc_C5030 +000C502B: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000C5030: mov rax, [rbp+var_10] +000C5034: mov rdi, rax; unsigned __int64 +000C5037: call __Znwm; operator new(ulong) +000C503C: leave +000C503D: retn + +### FUNC 000C503E - 000C5052 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorIPcE8max_sizeEv +000C503E: push rbp +000C503F: mov rbp, rsp +000C5042: mov [rbp+var_8], rdi +000C5046: mov rax, 1FFFFFFFFFFFFFFFh +000C5050: pop rbp +000C5051: retn + +### FUNC 000C5052 - 000C505C (10 bytes) name=_ZN9__gnu_cxx13new_allocatorIPcEC2Ev +000C5052: push rbp; Alternative name is '__gnu_cxx::new_allocator::new_allocator(void)' +000C5053: mov rbp, rsp +000C5056: mov [rbp+var_8], rdi +000C505A: pop rbp +000C505B: retn + +### FUNC 000C505C - 000C50A2 (70 bytes) name=_ZSt4copyIPPcS1_ET0_T_S3_S2_ +000C505C: push rbp +000C505D: mov rbp, rsp +000C5060: push rbx +000C5061: sub rsp, 28h +000C5065: mov [rbp+var_18], rdi +000C5069: mov [rbp+var_20], rsi +000C506D: mov [rbp+var_28], rdx +000C5071: mov rax, [rbp+var_20] +000C5075: mov rdi, rax +000C5078: call __ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_; std::__miter_base(char **) +000C507D: mov rbx, rax +000C5080: mov rax, [rbp+var_18] +000C5084: mov rdi, rax +000C5087: call __ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_; std::__miter_base(char **) +000C508C: mov rdx, [rbp+var_28] +000C5090: mov rsi, rbx +000C5093: mov rdi, rax +000C5096: call __ZSt14__copy_move_a2ILb0EPPcS1_ET1_T0_S3_S2_; std::__copy_move_a2(char **,char **,char **) +000C509B: add rsp, 28h +000C509F: pop rbx +000C50A0: pop rbp +000C50A1: retn + +### FUNC 000C50A2 - 000C50E8 (70 bytes) name=_ZSt13copy_backwardIPPcS1_ET0_T_S3_S2_ +000C50A2: push rbp +000C50A3: mov rbp, rsp +000C50A6: push rbx +000C50A7: sub rsp, 28h +000C50AB: mov [rbp+var_18], rdi +000C50AF: mov [rbp+var_20], rsi +000C50B3: mov [rbp+var_28], rdx +000C50B7: mov rax, [rbp+var_20] +000C50BB: mov rdi, rax +000C50BE: call __ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_; std::__miter_base(char **) +000C50C3: mov rbx, rax +000C50C6: mov rax, [rbp+var_18] +000C50CA: mov rdi, rax +000C50CD: call __ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_; std::__miter_base(char **) +000C50D2: mov rdx, [rbp+var_28] +000C50D6: mov rsi, rbx +000C50D9: mov rdi, rax +000C50DC: call __ZSt23__copy_move_backward_a2ILb0EPPcS1_ET1_T0_S3_S2_; std::__copy_move_backward_a2(char **,char **,char **) +000C50E1: add rsp, 28h +000C50E5: pop rbx +000C50E6: pop rbp +000C50E7: retn + +### FUNC 000C50E8 - 000C50F9 (17 bytes) name=_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv +000C50E8: push rbp +000C50E9: mov rbp, rsp +000C50EC: mov [rbp+var_8], rdi +000C50F0: mov rax, 0FFFFFFFFFFFFFFFFh +000C50F7: pop rbp +000C50F8: retn + +### FUNC 000C50F9 - 000C5113 (26 bytes) name=_ZSt12__miter_baseIPPcENSt11_Miter_baseIT_E13iterator_typeES3_ +000C50F9: push rbp +000C50FA: mov rbp, rsp +000C50FD: sub rsp, 10h +000C5101: mov [rbp+var_8], rdi +000C5105: mov rax, [rbp+var_8] +000C5109: mov rdi, rax +000C510C: call __ZNSt10_Iter_baseIPPcLb0EE7_S_baseES1_; std::_Iter_base::_S_base(char **) +000C5111: leave +000C5112: retn + +### FUNC 000C5113 - 000C516B (88 bytes) name=_ZSt14__copy_move_a2ILb0EPPcS1_ET1_T0_S3_S2_ +000C5113: push rbp +000C5114: mov rbp, rsp +000C5117: push r12 +000C5119: push rbx +000C511A: sub rsp, 20h +000C511E: mov [rbp+var_18], rdi +000C5122: mov [rbp+var_20], rsi +000C5126: mov [rbp+var_28], rdx +000C512A: mov rax, [rbp+var_28] +000C512E: mov rdi, rax +000C5131: call __ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(char **) +000C5136: mov r12, rax +000C5139: mov rax, [rbp+var_20] +000C513D: mov rdi, rax +000C5140: call __ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(char **) +000C5145: mov rbx, rax +000C5148: mov rax, [rbp+var_18] +000C514C: mov rdi, rax +000C514F: call __ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(char **) +000C5154: mov rdx, r12 +000C5157: mov rsi, rbx +000C515A: mov rdi, rax +000C515D: call __ZSt13__copy_move_aILb0EPPcS1_ET1_T0_S3_S2_; std::__copy_move_a(char **,char **,char **) +000C5162: add rsp, 20h +000C5166: pop rbx +000C5167: pop r12 +000C5169: pop rbp +000C516A: retn + +### FUNC 000C516B - 000C51C3 (88 bytes) name=_ZSt23__copy_move_backward_a2ILb0EPPcS1_ET1_T0_S3_S2_ +000C516B: push rbp +000C516C: mov rbp, rsp +000C516F: push r12 +000C5171: push rbx +000C5172: sub rsp, 20h +000C5176: mov [rbp+var_18], rdi +000C517A: mov [rbp+var_20], rsi +000C517E: mov [rbp+var_28], rdx +000C5182: mov rax, [rbp+var_28] +000C5186: mov rdi, rax +000C5189: call __ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(char **) +000C518E: mov r12, rax +000C5191: mov rax, [rbp+var_20] +000C5195: mov rdi, rax +000C5198: call __ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(char **) +000C519D: mov rbx, rax +000C51A0: mov rax, [rbp+var_18] +000C51A4: mov rdi, rax +000C51A7: call __ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_; std::__niter_base(char **) +000C51AC: mov rdx, r12 +000C51AF: mov rsi, rbx +000C51B2: mov rdi, rax +000C51B5: call __ZSt22__copy_move_backward_aILb0EPPcS1_ET1_T0_S3_S2_; std::__copy_move_backward_a(char **,char **,char **) +000C51BA: add rsp, 20h +000C51BE: pop rbx +000C51BF: pop r12 +000C51C1: pop rbp +000C51C2: retn + +### FUNC 000C51C3 - 000C51D1 (14 bytes) name=_ZNSt10_Iter_baseIPPcLb0EE7_S_baseES1_ +000C51C3: push rbp +000C51C4: mov rbp, rsp +000C51C7: mov [rbp+var_8], rdi +000C51CB: mov rax, [rbp+var_8] +000C51CF: pop rbp +000C51D0: retn + +### FUNC 000C51D1 - 000C51EB (26 bytes) name=_ZSt12__niter_baseIPPcENSt11_Niter_baseIT_E13iterator_typeES3_ +000C51D1: push rbp +000C51D2: mov rbp, rsp +000C51D5: sub rsp, 10h +000C51D9: mov [rbp+var_8], rdi +000C51DD: mov rax, [rbp+var_8] +000C51E1: mov rdi, rax +000C51E4: call __ZNSt10_Iter_baseIPPcLb0EE7_S_baseES1_; std::_Iter_base::_S_base(char **) +000C51E9: leave +000C51EA: retn + +### FUNC 000C51EB - 000C521C (49 bytes) name=_ZSt13__copy_move_aILb0EPPcS1_ET1_T0_S3_S2_ +000C51EB: push rbp +000C51EC: mov rbp, rsp +000C51EF: sub rsp, 30h +000C51F3: mov [rbp+var_18], rdi +000C51F7: mov [rbp+var_20], rsi +000C51FB: mov [rbp+var_28], rdx +000C51FF: mov [rbp+var_1], 1 +000C5203: mov rdx, [rbp+var_28] +000C5207: mov rcx, [rbp+var_20] +000C520B: mov rax, [rbp+var_18] +000C520F: mov rsi, rcx +000C5212: mov rdi, rax +000C5215: call __ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPcEEPT_PKS4_S7_S5_; std::__copy_move::__copy_m(char * const*,char * const*,char * *) +000C521A: leave +000C521B: retn + +### FUNC 000C521C - 000C524D (49 bytes) name=_ZSt22__copy_move_backward_aILb0EPPcS1_ET1_T0_S3_S2_ +000C521C: push rbp +000C521D: mov rbp, rsp +000C5220: sub rsp, 30h +000C5224: mov [rbp+var_18], rdi +000C5228: mov [rbp+var_20], rsi +000C522C: mov [rbp+var_28], rdx +000C5230: mov [rbp+var_1], 1 +000C5234: mov rdx, [rbp+var_28] +000C5238: mov rcx, [rbp+var_20] +000C523C: mov rax, [rbp+var_18] +000C5240: mov rsi, rcx +000C5243: mov rdi, rax +000C5246: call __ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPcEEPT_PKS4_S7_S5_; std::__copy_move_backward::__copy_move_b(char * const*,char * const*,char * *) +000C524B: leave +000C524C: retn + +### FUNC 000C524D - 000C52B2 (101 bytes) name=_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPcEEPT_PKS4_S7_S5_ +000C524D: push rbp +000C524E: mov rbp, rsp +000C5251: sub rsp, 30h +000C5255: mov [rbp+src], rdi +000C5259: mov [rbp+var_20], rsi +000C525D: mov [rbp+dest], rdx +000C5261: mov rdx, [rbp+var_20] +000C5265: mov rax, [rbp+src] +000C5269: sub rdx, rax +000C526C: mov rax, rdx +000C526F: sar rax, 3 +000C5273: mov [rbp+var_8], rax +000C5277: cmp [rbp+var_8], 0 +000C527C: jz short loc_C529D +000C527E: mov rax, [rbp+var_8] +000C5282: lea rdx, ds:0[rax*8]; n +000C528A: mov rcx, [rbp+src] +000C528E: mov rax, [rbp+dest] +000C5292: mov rsi, rcx; src +000C5295: mov rdi, rax; dest +000C5298: call _memmove +000C529D: mov rax, [rbp+var_8] +000C52A1: lea rdx, ds:0[rax*8] +000C52A9: mov rax, [rbp+dest] +000C52AD: add rax, rdx +000C52B0: leave +000C52B1: retn + +### FUNC 000C52B2 - 000C532A (120 bytes) name=_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPcEEPT_PKS4_S7_S5_ +000C52B2: push rbp +000C52B3: mov rbp, rsp +000C52B6: sub rsp, 30h +000C52BA: mov [rbp+src], rdi +000C52BE: mov [rbp+var_20], rsi +000C52C2: mov [rbp+var_28], rdx +000C52C6: mov rdx, [rbp+var_20] +000C52CA: mov rax, [rbp+src] +000C52CE: sub rdx, rax +000C52D1: mov rax, rdx +000C52D4: sar rax, 3 +000C52D8: mov [rbp+var_8], rax +000C52DC: cmp [rbp+var_8], 0 +000C52E1: jz short loc_C5313 +000C52E3: mov rax, [rbp+var_8] +000C52E7: lea rdx, ds:0[rax*8]; n +000C52EF: mov rax, [rbp+var_8] +000C52F3: shl rax, 3 +000C52F7: neg rax +000C52FA: mov rcx, rax +000C52FD: mov rax, [rbp+var_28] +000C5301: add rcx, rax +000C5304: mov rax, [rbp+src] +000C5308: mov rsi, rax; src +000C530B: mov rdi, rcx; dest +000C530E: call _memmove +000C5313: mov rax, [rbp+var_8] +000C5317: shl rax, 3 +000C531B: neg rax +000C531E: mov rdx, rax +000C5321: mov rax, [rbp+var_28] +000C5325: add rax, rdx +000C5328: leave +000C5329: retn + +### FUNC 000C532A - 000C53D7 (173 bytes) name=_ZN16TCMVirtualDeviceC2Ev +000C532A: push rbp; Alternative name is 'TCMVirtualDevice::TCMVirtualDevice(void)' +000C532B: mov rbp, rsp +000C532E: sub rsp, 10h +000C5332: mov [rbp+var_8], rdi +000C5336: mov rax, [rbp+var_8] +000C533A: mov rdi, rax; this +000C533D: call __ZN19FTDICommandDelegateC2Ev; FTDICommandDelegate::FTDICommandDelegate(void) +000C5342: mov rax, [rbp+var_8] +000C5346: mov rdx, cs:_ZTV16TCMVirtualDevice_ptr +000C534D: lea rdx, [rdx+10h] +000C5351: mov [rax], rdx +000C5354: mov rax, [rbp+var_8] +000C5358: add rax, 8 +000C535C: mov rdi, rax +000C535F: call __ZNSt5dequeIcSaIcEEC2Ev; std::deque>::deque(void) +000C5364: mov rax, [rbp+var_8] +000C5368: add rax, 60h ; '`' +000C536C: mov rdi, rax; this +000C536F: call __ZNSt18condition_variableC1Ev; std::condition_variable::condition_variable(void) +000C5374: mov rax, [rbp+var_8] +000C5378: mov qword ptr [rax+90h], 0 +000C5383: mov qword ptr [rax+98h], 0 +000C538E: mov qword ptr [rax+0A0h], 0 +000C5399: mov qword ptr [rax+0A8h], 0 +000C53A4: mov qword ptr [rax+0B0h], 0 +000C53AF: mov rax, [rbp+var_8] +000C53B3: mov qword ptr [rax+0B8h], 0 +000C53BE: mov rax, [rbp+var_8] +000C53C2: mov qword ptr [rax+0C0h], 0 +000C53CD: mov rax, [rbp+var_8] +000C53D1: mov byte ptr [rax+58h], 0 +000C53D5: leave +000C53D6: retn + +### FUNC 000C53D8 - 000C542D (85 bytes) name=_ZN16TCMVirtualDeviceD2Ev +000C53D8: push rbp; Alternative name is 'TCMVirtualDevice::~TCMVirtualDevice()' +000C53D9: mov rbp, rsp +000C53DC: sub rsp, 10h +000C53E0: mov [rbp+var_8], rdi +000C53E4: mov rax, [rbp+var_8] +000C53E8: mov rdx, cs:_ZTV16TCMVirtualDevice_ptr +000C53EF: lea rdx, [rdx+10h] +000C53F3: mov [rax], rdx +000C53F6: mov rax, [rbp+var_8] +000C53FA: add rax, 60h ; '`' +000C53FE: mov rdi, rax; this +000C5401: call __ZNSt18condition_variableD1Ev; std::condition_variable::~condition_variable() +000C5406: mov rax, [rbp+var_8] +000C540A: add rax, 8 +000C540E: mov rdi, rax +000C5411: call __ZNSt5dequeIcSaIcEED2Ev; std::deque>::~deque() +000C5416: mov eax, 0 +000C541B: test eax, eax +000C541D: jz short locret_C542B +000C541F: mov rax, [rbp+var_8] +000C5423: mov rdi, rax; void * +000C5426: call __ZdlPv; operator delete(void *) +000C542B: leave +000C542C: retn + +### FUNC 000C542E - 000C5454 (38 bytes) name=_ZN16TCMVirtualDeviceD0Ev +000C542E: push rbp +000C542F: mov rbp, rsp +000C5432: sub rsp, 10h +000C5436: mov [rbp+var_8], rdi +000C543A: mov rax, [rbp+var_8] +000C543E: mov rdi, rax; this +000C5441: call __ZN16TCMVirtualDeviceD2Ev; TCMVirtualDevice::~TCMVirtualDevice() +000C5446: mov rax, [rbp+var_8] +000C544A: mov rdi, rax; void * +000C544D: call __ZdlPv; operator delete(void *) +000C5452: leave +000C5453: retn + +### FUNC 000C5454 - 000C5471 (29 bytes) name=_ZN16TCMVirtualDevice11setDataCommEP9IDataComm +000C5454: push rbp +000C5455: mov rbp, rsp +000C5458: mov [rbp+var_8], rdi +000C545C: mov [rbp+var_10], rsi +000C5460: mov rax, [rbp+var_8] +000C5464: mov rdx, [rbp+var_10] +000C5468: mov [rax+0B8h], rdx +000C546F: pop rbp +000C5470: retn + +### FUNC 000C5472 - 000C548F (29 bytes) name=_ZN16TCMVirtualDevice16setFrameDelegateEP16TCMFrameDelegate +000C5472: push rbp +000C5473: mov rbp, rsp +000C5476: mov [rbp+var_8], rdi +000C547A: mov [rbp+var_10], rsi +000C547E: mov rax, [rbp+var_8] +000C5482: mov rdx, [rbp+var_10] +000C5486: mov [rax+0C0h], rdx +000C548D: pop rbp +000C548E: retn + +### FUNC 000C5490 - 000C54D6 (70 bytes) name=_ZN16TCMVirtualDevice8getFrameEv +000C5490: push rbp +000C5491: mov rbp, rsp +000C5494: sub rsp, 10h +000C5498: mov [rbp+var_8], rdi +000C549C: mov rax, [rbp+var_8] +000C54A0: mov rax, [rax+0C0h] +000C54A7: test rax, rax +000C54AA: jz short loc_C54CF +000C54AC: mov rax, [rbp+var_8] +000C54B0: mov rax, [rax+0C0h] +000C54B7: mov rax, [rax] +000C54BA: mov rax, [rax] +000C54BD: mov rdx, [rbp+var_8] +000C54C1: mov rdx, [rdx+0C0h] +000C54C8: mov rdi, rdx +000C54CB: call rax +000C54CD: jmp short locret_C54D4 +000C54CF: mov eax, 0 +000C54D4: leave +000C54D5: retn + +### FUNC 000C54D6 - 000C5584 (174 bytes) name=_ZN16TCMVirtualDevice8sendDataEP11FTDICommand +000C54D6: push rbp +000C54D7: mov rbp, rsp +000C54DA: push r12 +000C54DC: push rbx +000C54DD: sub rsp, 20h +000C54E1: mov [rbp+var_28], rdi +000C54E5: mov [rbp+var_30], rsi +000C54E9: cmp [rbp+var_30], 0 +000C54EE: jz loc_C557B +000C54F4: mov rax, [rbp+var_30] +000C54F8: mov rdi, rax; this +000C54FB: call __ZN11FTDICommand10getCommandEv; FTDICommand::getCommand(void) +000C5500: mov [rbp+var_18], rax +000C5504: mov rax, [rbp+var_28] +000C5508: mov rax, [rax+0B8h] +000C550F: test rax, rax +000C5512: jz short loc_C555D +000C5514: mov rax, [rbp+var_28] +000C5518: mov rax, [rax+0B8h] +000C551F: mov rax, [rax] +000C5522: add rax, 8 +000C5526: mov rbx, [rax] +000C5529: mov rax, [rbp+var_18] +000C552D: mov rdi, rax +000C5530: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C5535: mov r12d, eax +000C5538: mov rax, [rbp+var_18] +000C553C: mov rdi, rax +000C553F: call __ZNKSt6vectorIhSaIhEE4dataEv; std::vector>::data(void) +000C5544: mov rcx, rax +000C5547: mov rax, [rbp+var_28] +000C554B: mov rax, [rax+0B8h] +000C5552: mov edx, r12d +000C5555: mov rsi, rcx +000C5558: mov rdi, rax +000C555B: call rbx +000C555D: cmp [rbp+var_30], 0 +000C5562: jz short loc_C557B +000C5564: mov rax, [rbp+var_30] +000C5568: mov rax, [rax] +000C556B: add rax, 8 +000C556F: mov rax, [rax] +000C5572: mov rdx, [rbp+var_30] +000C5576: mov rdi, rdx +000C5579: call rax +000C557B: add rsp, 20h +000C557F: pop rbx +000C5580: pop r12 +000C5582: pop rbp +000C5583: retn + +### FUNC 000C5584 - 000C5592 (14 bytes) name=_ZN16TCMVirtualDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000C5584: push rbp +000C5585: mov rbp, rsp +000C5588: mov [rbp+var_8], rdi +000C558C: mov [rbp+var_10], rsi +000C5590: pop rbp +000C5591: retn + +### FUNC 000C5592 - 000C55AB (25 bytes) name=_ZN16TCMVirtualDevice20canHandleFTDICommandEhh +000C5592: push rbp +000C5593: mov rbp, rsp +000C5596: mov [rbp+var_8], rdi +000C559A: mov ecx, esi +000C559C: mov eax, edx +000C559E: mov [rbp+var_C], cl +000C55A1: mov [rbp+var_10], al +000C55A4: mov eax, 0 +000C55A9: pop rbp +000C55AA: retn + +### FUNC 000C55AC - 000C565C (176 bytes) name=_ZN16TCMVirtualDevice13integer2BytesEi +000C55AC: push rbp +000C55AD: mov rbp, rsp +000C55B0: push rbx +000C55B1: sub rsp, 28h +000C55B5: mov [rbp+var_28], rdi +000C55B9: mov [rbp+var_2C], esi +000C55BC: mov rax, [rbp+var_28] +000C55C0: mov rdi, rax +000C55C3: call __ZNSt6vectorIhSaIhEEC2Ev_0; std::vector>::vector(void) +000C55C8: mov eax, [rbp+var_2C] +000C55CB: shr eax, 18h +000C55CE: mov [rbp+var_14], al +000C55D1: lea rdx, [rbp+var_14] +000C55D5: mov rax, [rbp+var_28] +000C55D9: mov rsi, rdx +000C55DC: mov rdi, rax +000C55DF: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000C55E4: mov eax, [rbp+var_2C] +000C55E7: sar eax, 10h +000C55EA: mov [rbp+var_13], al +000C55ED: lea rdx, [rbp+var_13] +000C55F1: mov rax, [rbp+var_28] +000C55F5: mov rsi, rdx +000C55F8: mov rdi, rax +000C55FB: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000C5600: mov eax, [rbp+var_2C] +000C5603: sar eax, 8 +000C5606: mov [rbp+var_12], al +000C5609: lea rdx, [rbp+var_12] +000C560D: mov rax, [rbp+var_28] +000C5611: mov rsi, rdx +000C5614: mov rdi, rax +000C5617: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000C561C: mov eax, [rbp+var_2C] +000C561F: mov [rbp+var_11], al +000C5622: lea rdx, [rbp+var_11] +000C5626: mov rax, [rbp+var_28] +000C562A: mov rsi, rdx +000C562D: mov rdi, rax +000C5630: call __ZNSt6vectorIhSaIhEE9push_backEOh; std::vector>::push_back(uchar &&) +000C5635: jmp short loc_C5651 +000C5637: mov rbx, rax +000C563A: mov rax, [rbp+var_28] +000C563E: mov rdi, rax +000C5641: call __ZNSt6vectorIhSaIhEED2Ev_0; std::vector>::~vector() +000C5646: mov rax, rbx +000C5649: mov rdi, rax; struct _Unwind_Exception * +000C564C: call __Unwind_Resume +000C5651: mov rax, [rbp+var_28] +000C5655: add rsp, 28h +000C5659: pop rbx +000C565A: pop rbp +000C565B: retn + +### FUNC 000C565C - 000C5701 (165 bytes) name=_ZN16TCMVirtualDevice13bytes2IntegerERKSt6vectorIhSaIhEEi +000C565C: push rbp +000C565D: mov rbp, rsp +000C5660: sub rsp, 20h +000C5664: mov [rbp+var_18], rdi +000C5668: mov [rbp+var_1C], esi +000C566B: mov [rbp+var_4], 0 +000C5672: mov eax, [rbp+var_1C] +000C5675: movsxd rdx, eax +000C5678: mov rax, [rbp+var_18] +000C567C: mov rsi, rdx +000C567F: mov rdi, rax +000C5682: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C5687: movzx eax, byte ptr [rax] +000C568A: movzx eax, al +000C568D: shl eax, 18h +000C5690: or [rbp+var_4], eax +000C5693: mov eax, [rbp+var_1C] +000C5696: add eax, 1 +000C5699: movsxd rdx, eax +000C569C: mov rax, [rbp+var_18] +000C56A0: mov rsi, rdx +000C56A3: mov rdi, rax +000C56A6: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C56AB: movzx eax, byte ptr [rax] +000C56AE: movzx eax, al +000C56B1: shl eax, 10h +000C56B4: or [rbp+var_4], eax +000C56B7: mov eax, [rbp+var_1C] +000C56BA: add eax, 2 +000C56BD: movsxd rdx, eax +000C56C0: mov rax, [rbp+var_18] +000C56C4: mov rsi, rdx +000C56C7: mov rdi, rax +000C56CA: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C56CF: movzx eax, byte ptr [rax] +000C56D2: movzx eax, al +000C56D5: shl eax, 8 +000C56D8: or [rbp+var_4], eax +000C56DB: mov eax, [rbp+var_1C] +000C56DE: add eax, 3 +000C56E1: movsxd rdx, eax +000C56E4: mov rax, [rbp+var_18] +000C56E8: mov rsi, rdx +000C56EB: mov rdi, rax +000C56EE: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C56F3: movzx eax, byte ptr [rax] +000C56F6: movzx eax, al +000C56F9: or [rbp+var_4], eax +000C56FC: mov eax, [rbp+var_4] +000C56FF: leave +000C5700: retn + +### FUNC 000C5702 - 000C571E (28 bytes) name=_ZN19FTDICommandDelegateC2Ev +000C5702: push rbp; Alternative name is 'FTDICommandDelegate::FTDICommandDelegate(void)' +000C5703: mov rbp, rsp +000C5706: mov [rbp+var_8], rdi +000C570A: mov rax, [rbp+var_8] +000C570E: mov rdx, cs:_ZTV19FTDICommandDelegate_ptr +000C5715: lea rdx, [rdx+10h] +000C5719: mov [rax], rdx +000C571C: pop rbp +000C571D: retn + +### FUNC 000C571E - 000C5740 (34 bytes) name=_ZNKSt6vectorIhSaIhEE4dataEv +000C571E: push rbp +000C571F: mov rbp, rsp +000C5722: sub rsp, 10h +000C5726: mov [rbp+var_8], rdi +000C572A: mov rax, [rbp+var_8] +000C572E: mov rdi, rax +000C5731: call __ZNKSt6vectorIhSaIhEE5frontEv; std::vector>::front(void) +000C5736: mov rdi, rax +000C5739: call __ZSt11__addressofIKhEPT_RS1_; std::__addressof(uchar const&) +000C573E: leave +000C573F: retn + +### FUNC 000C5740 - 000C576A (42 bytes) name=_ZNKSt6vectorIhSaIhEE5frontEv +000C5740: push rbp +000C5741: mov rbp, rsp +000C5744: sub rsp, 20h +000C5748: mov [rbp+var_18], rdi +000C574C: mov rax, [rbp+var_18] +000C5750: mov rdi, rax +000C5753: call __ZNKSt6vectorIhSaIhEE5beginEv; std::vector>::begin(void) +000C5758: mov [rbp+var_10], rax +000C575C: lea rax, [rbp+var_10] +000C5760: mov rdi, rax +000C5763: call __ZNK9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEdeEv; __gnu_cxx::__normal_iterator>>::operator*(void) +000C5768: leave +000C5769: retn + +### FUNC 000C576A - 000C5778 (14 bytes) name=_ZSt11__addressofIKhEPT_RS1_ +000C576A: push rbp +000C576B: mov rbp, rsp +000C576E: mov [rbp+var_8], rdi +000C5772: mov rax, [rbp+var_8] +000C5776: pop rbp +000C5777: retn + +### FUNC 000C5778 - 000C578E (22 bytes) name=_ZL18__gthread_active_pv_2 +000C5778: push rbp +000C5779: mov rbp, rsp +000C577C: mov rax, cs:__pthread_key_create_ptr +000C5783: test rax, rax +000C5786: setnz al +000C5789: movzx eax, al +000C578C: pop rbp +000C578D: retn + +### FUNC 000C578E - 000C57B3 (37 bytes) name=_ZL15__gthread_equalmm_0 +000C578E: push rbp +000C578F: mov rbp, rsp +000C5792: sub rsp, 10h +000C5796: mov [rbp+thread1], rdi +000C579A: mov [rbp+thread2], rsi +000C579E: mov rdx, [rbp+thread2] +000C57A2: mov rax, [rbp+thread1] +000C57A6: mov rsi, rdx; thread2 +000C57A9: mov rdi, rax; thread1 +000C57AC: call _pthread_equal +000C57B1: leave +000C57B2: retn + +### FUNC 000C57B3 - 000C57CD (26 bytes) name=_ZN9__gnu_cxxL18__exchange_and_addEPVii_0 +000C57B3: push rbp +000C57B4: mov rbp, rsp +000C57B7: mov [rbp+var_8], rdi +000C57BB: mov [rbp+var_C], esi +000C57BE: mov edx, [rbp+var_C] +000C57C1: mov rax, [rbp+var_8] +000C57C5: lock xadd [rax], edx +000C57C9: mov eax, edx +000C57CB: pop rbp +000C57CC: retn + +### FUNC 000C57CD - 000C57F7 (42 bytes) name=_ZN9__gnu_cxxL25__exchange_and_add_singleEPii_0 +000C57CD: push rbp +000C57CE: mov rbp, rsp +000C57D1: mov [rbp+var_18], rdi +000C57D5: mov [rbp+var_1C], esi +000C57D8: mov rax, [rbp+var_18] +000C57DC: mov eax, [rax] +000C57DE: mov [rbp+var_4], eax +000C57E1: mov rax, [rbp+var_18] +000C57E5: mov edx, [rax] +000C57E7: mov eax, [rbp+var_1C] +000C57EA: add edx, eax +000C57EC: mov rax, [rbp+var_18] +000C57F0: mov [rax], edx +000C57F2: mov eax, [rbp+var_4] +000C57F5: pop rbp +000C57F6: retn + +### FUNC 000C57F7 - 000C583A (67 bytes) name=_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii_0 +000C57F7: push rbp +000C57F8: mov rbp, rsp +000C57FB: sub rsp, 10h +000C57FF: mov [rbp+var_8], rdi +000C5803: mov [rbp+var_C], esi +000C5806: call _ZL18__gthread_active_pv_2; __gthread_active_p(void) +000C580B: test eax, eax +000C580D: setnz al +000C5810: test al, al +000C5812: jz short loc_C5827 +000C5814: mov edx, [rbp+var_C] +000C5817: mov rax, [rbp+var_8] +000C581B: mov esi, edx; int +000C581D: mov rdi, rax; volatile int * +000C5820: call _ZN9__gnu_cxxL18__exchange_and_addEPVii_0; __gnu_cxx::__exchange_and_add(int volatile*,int) +000C5825: jmp short locret_C5838 +000C5827: mov edx, [rbp+var_C] +000C582A: mov rax, [rbp+var_8] +000C582E: mov esi, edx; int +000C5830: mov rdi, rax; int * +000C5833: call _ZN9__gnu_cxxL25__exchange_and_add_singleEPii_0; __gnu_cxx::__exchange_and_add_single(int *,int) +000C5838: leave +000C5839: retn + +### FUNC 000C583A - 000C58C2 (136 bytes) name=_ZN10SerialPort10readThreadEv +000C583A: push rbp +000C583B: mov rbp, rsp +000C583E: push rbx +000C583F: sub rsp, 18h +000C5843: mov [rbp+var_18], rdi +000C5847: mov rax, [rbp+var_18] +000C584B: mov rax, [rax] +000C584E: mov rax, [rax] +000C5851: mov rdx, [rbp+var_18] +000C5855: mov rdi, rdx +000C5858: call rax +000C585A: jmp short loc_C58BB +000C585C: mov rdi, rax; void * +000C585F: call ___cxa_begin_catch +000C5864: lea rdi, aError; "error" +000C586B: mov eax, 0 +000C5870: call _printf +000C5875: mov rax, [rbp+var_18] +000C5879: mov rax, [rax+20h] +000C587D: test rax, rax +000C5880: jz short loc_C58A1 +000C5882: mov rax, [rbp+var_18] +000C5886: mov rax, [rax+20h] +000C588A: mov rax, [rax] +000C588D: add rax, 8 +000C5891: mov rax, [rax] +000C5894: mov rdx, [rbp+var_18] +000C5898: mov rdx, [rdx+20h] +000C589C: mov rdi, rdx +000C589F: call rax +000C58A1: call ___cxa_end_catch +000C58A6: jmp short loc_C58BB +000C58A8: mov rbx, rax +000C58AB: call ___cxa_end_catch +000C58B0: mov rax, rbx +000C58B3: mov rdi, rax; struct _Unwind_Exception * +000C58B6: call __Unwind_Resume +000C58BB: add rsp, 18h +000C58BF: pop rbx +000C58C0: pop rbp +000C58C1: retn + +### FUNC 000C58C2 - 000C591E (92 bytes) name=_ZN10SerialPortC2Ev +000C58C2: push rbp; Alternative name is 'SerialPort::SerialPort(void)' +000C58C3: mov rbp, rsp +000C58C6: sub rsp, 10h +000C58CA: mov [rbp+var_8], rdi +000C58CE: mov rax, [rbp+var_8] +000C58D2: mov rdi, rax; this +000C58D5: call __ZN9IDataCommC2Ev; IDataComm::IDataComm(void) +000C58DA: mov rax, [rbp+var_8] +000C58DE: mov rdx, cs:_ZTV10SerialPort_ptr +000C58E5: lea rdx, [rdx+10h] +000C58E9: mov [rax], rdx +000C58EC: mov rax, [rbp+var_8] +000C58F0: add rax, 8 +000C58F4: mov rdi, rax; this +000C58F7: call __ZNSt6threadC2Ev; std::thread::thread(void) +000C58FC: mov rax, [rbp+var_8] +000C5900: mov byte ptr [rax+10h], 0 +000C5904: mov rax, [rbp+var_8] +000C5908: mov qword ptr [rax+18h], 0 +000C5910: mov rax, [rbp+var_8] +000C5914: mov qword ptr [rax+20h], 0 +000C591C: leave +000C591D: retn + +### FUNC 000C591E - 000C597F (97 bytes) name=_ZN10SerialPortD2Ev +000C591E: push rbp; Alternative name is 'SerialPort::~SerialPort()' +000C591F: mov rbp, rsp +000C5922: sub rsp, 10h +000C5926: mov [rbp+var_8], rdi +000C592A: mov rax, [rbp+var_8] +000C592E: mov rdx, cs:_ZTV10SerialPort_ptr +000C5935: lea rdx, [rdx+10h] +000C5939: mov [rax], rdx +000C593C: mov rax, [rbp+var_8] +000C5940: mov rdi, rax; this +000C5943: call __ZN10SerialPort8isOpenedEv; SerialPort::isOpened(void) +000C5948: test al, al +000C594A: jz short loc_C5958 +000C594C: mov rax, [rbp+var_8] +000C5950: mov rdi, rax; this +000C5953: call __ZN10SerialPort9closePortEv; SerialPort::closePort(void) +000C5958: mov rax, [rbp+var_8] +000C595C: add rax, 8 +000C5960: mov rdi, rax; this +000C5963: call __ZNSt6threadD2Ev; std::thread::~thread() +000C5968: mov eax, 0 +000C596D: test eax, eax +000C596F: jz short locret_C597D +000C5971: mov rax, [rbp+var_8] +000C5975: mov rdi, rax; void * +000C5978: call __ZdlPv; operator delete(void *) +000C597D: leave +000C597E: retn + +### FUNC 000C5980 - 000C59A6 (38 bytes) name=_ZN10SerialPortD0Ev +000C5980: push rbp +000C5981: mov rbp, rsp +000C5984: sub rsp, 10h +000C5988: mov [rbp+var_8], rdi +000C598C: mov rax, [rbp+var_8] +000C5990: mov rdi, rax; this +000C5993: call __ZN10SerialPortD2Ev; SerialPort::~SerialPort() +000C5998: mov rax, [rbp+var_8] +000C599C: mov rdi, rax; void * +000C599F: call __ZdlPv; operator delete(void *) +000C59A4: leave +000C59A5: retn + +### FUNC 000C59A6 - 000C59C0 (26 bytes) name=_ZN10SerialPort11setDelegateEP19IHandleDataDelegate +000C59A6: push rbp +000C59A7: mov rbp, rsp +000C59AA: mov [rbp+var_8], rdi +000C59AE: mov [rbp+var_10], rsi +000C59B2: mov rax, [rbp+var_8] +000C59B6: mov rdx, [rbp+var_10] +000C59BA: mov [rax+20h], rdx +000C59BE: pop rbp +000C59BF: retn + +### FUNC 000C59C0 - 000C5B3D (381 bytes) name=_ZN10SerialPort8openPortERKSsj +000C59C0: push rbp +000C59C1: mov rbp, rsp +000C59C4: push r13 +000C59C6: push r12 +000C59C8: push rbx +000C59C9: sub rsp, 88h +000C59D0: mov [rbp+var_68], rdi +000C59D4: mov [rbp+var_70], rsi +000C59D8: mov [rbp+var_74], edx +000C59DB: mov rax, [rbp+var_68] +000C59DF: mov rax, [rax] +000C59E2: add rax, 30h ; '0' +000C59E6: mov rax, [rax] +000C59E9: mov rdx, [rbp+var_68] +000C59ED: mov rdi, rdx +000C59F0: call rax +000C59F2: test al, al +000C59F4: jz short loc_C5A0D +000C59F6: mov rax, [rbp+var_68] +000C59FA: mov rax, [rax] +000C59FD: add rax, 28h ; '(' +000C5A01: mov rax, [rax] +000C5A04: mov rdx, [rbp+var_68] +000C5A08: mov rdi, rdx +000C5A0B: call rax +000C5A0D: lea rax, [rbp+var_60] +000C5A11: mov r9d, 0; unsigned int +000C5A17: mov r8d, 0; unsigned int +000C5A1D: mov ecx, 0; unsigned int +000C5A22: mov edx, 0; unsigned int +000C5A27: mov esi, 0; unsigned int +000C5A2C: mov rdi, rax; this +000C5A2F: call __ZN6serial7TimeoutC2Ejjjjj; serial::Timeout::Timeout(uint,uint,uint,uint,uint) +000C5A34: mov edi, 10h; unsigned __int64 +000C5A39: call __Znwm; operator new(ulong) +000C5A3E: mov rbx, rax +000C5A41: mov edx, [rbp+var_74] +000C5A44: mov rax, [rbp+var_70] +000C5A48: mov [rsp+0A0h+var_88], 0 +000C5A50: mov rcx, [rbp+var_60] +000C5A54: mov [rsp+0A0h+var_A0], rcx +000C5A58: mov rcx, [rbp+var_58] +000C5A5C: mov [rsp+0A0h+var_98], rcx +000C5A61: mov ecx, [rbp+var_50] +000C5A64: mov [rsp+0A0h+var_90], ecx +000C5A68: mov r9d, 1 +000C5A6E: mov r8d, 0 +000C5A74: mov ecx, 8 +000C5A79: mov rsi, rax +000C5A7C: mov rdi, rbx +000C5A7F: call __ZN6serial6SerialC2ERKSsjNS_7TimeoutENS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE; serial::Serial::Serial(std::string const&,uint,serial::Timeout,serial::bytesize_t,serial::parity_t,serial::stopbits_t,serial::flowcontrol_t) +000C5A84: mov rax, [rbp+var_68] +000C5A88: mov [rax+18h], rbx +000C5A8C: mov rax, [rbp+var_68] +000C5A90: mov [rbp+var_38], rax +000C5A94: mov rax, cs:_ZN10SerialPort10readThreadEv_ptr +000C5A9B: mov r12, rax +000C5A9E: mov r13d, 0 +000C5AA4: mov [rbp+var_30], r12 +000C5AA8: mov [rbp+var_28], r13 +000C5AAC: lea rdx, [rbp+var_38] +000C5AB0: lea rcx, [rbp+var_30] +000C5AB4: lea rax, [rbp+var_40] +000C5AB8: mov rsi, rcx +000C5ABB: mov rdi, rax +000C5ABE: call __ZNSt6threadC2IM10SerialPortFvvEJKPS1_EEEOT_DpOT0_; std::thread::thread(void (SerialPort::*)(void) &&,SerialPort* const &&) +000C5AC3: mov rax, [rbp+var_68] +000C5AC7: lea rdx, [rax+8] +000C5ACB: lea rax, [rbp+var_40] +000C5ACF: mov rsi, rax +000C5AD2: mov rdi, rdx +000C5AD5: call __ZNSt6threadaSEOS_; std::thread::operator=(std::thread&&) +000C5ADA: lea rax, [rbp+var_40] +000C5ADE: mov rdi, rax; this +000C5AE1: call __ZNSt6threadD2Ev; std::thread::~thread() +000C5AE6: mov rax, [rbp+var_68] +000C5AEA: add rax, 8 +000C5AEE: mov rdi, rax; this +000C5AF1: call __ZNSt6thread6detachEv; std::thread::detach(void) +000C5AF6: mov ebx, 1 +000C5AFB: mov eax, ebx +000C5AFD: jmp short loc_C5B2F +000C5AFF: mov r12, rax +000C5B02: mov rdi, rbx; void * +000C5B05: call __ZdlPv; operator delete(void *) +000C5B0A: mov rax, r12 +000C5B0D: jmp short $+2 +000C5B0F: mov rdi, rax; void * +000C5B12: call ___cxa_begin_catch +000C5B17: mov rax, [rbp+var_68] +000C5B1B: mov qword ptr [rax+18h], 0 +000C5B23: mov ebx, 0 +000C5B28: call ___cxa_end_catch +000C5B2D: jmp short loc_C5AFB +000C5B2F: add rsp, 88h +000C5B36: pop rbx +000C5B37: pop r12 +000C5B39: pop r13 +000C5B3B: pop rbp +000C5B3C: retn + +### FUNC 000C5B3E - 000C5BB7 (121 bytes) name=_ZN10SerialPort9closePortEv +000C5B3E: push rbp +000C5B3F: mov rbp, rsp +000C5B42: sub rsp, 10h +000C5B46: mov [rbp+var_8], rdi +000C5B4A: mov rax, [rbp+var_8] +000C5B4E: mov rax, [rax] +000C5B51: add rax, 30h ; '0' +000C5B55: mov rax, [rax] +000C5B58: mov rdx, [rbp+var_8] +000C5B5C: mov rdi, rdx +000C5B5F: call rax +000C5B61: test al, al +000C5B63: jz short locret_C5BB5 +000C5B65: mov rax, [rbp+var_8] +000C5B69: mov byte ptr [rax+10h], 0 +000C5B6D: mov rax, [rbp+var_8] +000C5B71: mov rax, [rax+18h] +000C5B75: mov rdi, rax; this +000C5B78: call __ZN6serial6Serial5closeEv; serial::Serial::close(void) +000C5B7D: mov rax, [rbp+var_8] +000C5B81: mov rax, [rax+18h] +000C5B85: test rax, rax +000C5B88: jz short loc_C5BA9 +000C5B8A: mov rax, [rbp+var_8] +000C5B8E: mov rax, [rax+18h] +000C5B92: mov rax, [rax] +000C5B95: add rax, 8 +000C5B99: mov rax, [rax] +000C5B9C: mov rdx, [rbp+var_8] +000C5BA0: mov rdx, [rdx+18h] +000C5BA4: mov rdi, rdx +000C5BA7: call rax +000C5BA9: mov rax, [rbp+var_8] +000C5BAD: mov qword ptr [rax+18h], 0 +000C5BB5: leave +000C5BB6: retn + +### FUNC 000C5BB8 - 000C5BE7 (47 bytes) name=_ZN10SerialPort8isOpenedEv +000C5BB8: push rbp +000C5BB9: mov rbp, rsp +000C5BBC: mov [rbp+var_8], rdi +000C5BC0: mov rax, [rbp+var_8] +000C5BC4: mov rax, [rax+18h] +000C5BC8: test rax, rax +000C5BCB: jz short loc_C5BE0 +000C5BCD: mov rax, [rbp+var_8] +000C5BD1: movzx eax, byte ptr [rax+10h] +000C5BD5: test al, al +000C5BD7: jz short loc_C5BE0 +000C5BD9: mov eax, 1 +000C5BDE: jmp short loc_C5BE5 +000C5BE0: mov eax, 0 +000C5BE5: pop rbp +000C5BE6: retn + +### FUNC 000C5BE8 - 000C5C63 (123 bytes) name=_ZN10SerialPort9writeDataEPKhi +000C5BE8: push rbp +000C5BE9: mov rbp, rsp +000C5BEC: push rbx +000C5BED: sub rsp, 38h +000C5BF1: mov [rbp+var_28], rdi +000C5BF5: mov [rbp+var_30], rsi +000C5BF9: mov [rbp+var_34], edx +000C5BFC: mov rax, [rbp+var_28] +000C5C00: mov rax, [rax] +000C5C03: add rax, 30h ; '0' +000C5C07: mov rax, [rax] +000C5C0A: mov rdx, [rbp+var_28] +000C5C0E: mov rdi, rdx +000C5C11: call rax +000C5C13: xor eax, 1 +000C5C16: test al, al +000C5C18: jz short loc_C5C21 +000C5C1A: mov ebx, 0FFFFFFFFh +000C5C1F: jmp short loc_C5C44 +000C5C21: mov eax, [rbp+var_34] +000C5C24: movsxd rdx, eax; unsigned __int64 +000C5C27: mov rax, [rbp+var_28] +000C5C2B: mov rax, [rax+18h] +000C5C2F: mov rcx, [rbp+var_30] +000C5C33: mov rsi, rcx; unsigned __int8 * +000C5C36: mov rdi, rax; this +000C5C39: call __ZN6serial6Serial5writeEPKhm; serial::Serial::write(uchar const*,ulong) +000C5C3E: mov [rbp+var_14], eax +000C5C41: mov ebx, [rbp+var_14] +000C5C44: mov eax, ebx +000C5C46: jmp short loc_C5C5C +000C5C48: mov rdi, rax; void * +000C5C4B: call ___cxa_begin_catch +000C5C50: mov ebx, 0FFFFFFFFh +000C5C55: call ___cxa_end_catch +000C5C5A: jmp short loc_C5C44 +000C5C5C: add rsp, 38h +000C5C60: pop rbx +000C5C61: pop rbp +000C5C62: retn + +### FUNC 000C5C64 - 000C5D82 (286 bytes) name=_ZN10SerialPort8readDataEv +000C5C64: push rbp +000C5C65: mov rbp, rsp +000C5C68: sub rsp, 420h +000C5C6F: mov [rbp+var_418], rdi +000C5C76: mov rax, [rbp+var_418] +000C5C7D: mov byte ptr [rax+10h], 1 +000C5C81: mov [rbp+var_4], 0 +000C5C88: mov [rbp+var_8], 0 +000C5C8F: jmp loc_C5D6D +000C5C94: mov rax, [rbp+var_418] +000C5C9B: mov rax, [rax+18h] +000C5C9F: mov rdi, rax; this +000C5CA2: call __ZN6serial6Serial9availableEv; serial::Serial::available(void) +000C5CA7: mov [rbp+var_4], eax +000C5CAA: cmp [rbp+var_4], 0 +000C5CAE: jle loc_C5D40 +000C5CB4: lea rax, [rbp+s] +000C5CBB: mov edx, 400h; n +000C5CC0: mov esi, 0; c +000C5CC5: mov rdi, rax; s +000C5CC8: call _memset +000C5CCD: cmp [rbp+var_4], 400h +000C5CD4: jle short loc_C5CDD +000C5CD6: mov [rbp+var_4], 400h +000C5CDD: mov eax, [rbp+var_4] +000C5CE0: movsxd rdx, eax; unsigned __int64 +000C5CE3: mov rax, [rbp+var_418] +000C5CEA: mov rax, [rax+18h] +000C5CEE: lea rcx, [rbp+s] +000C5CF5: mov rsi, rcx; unsigned __int8 * +000C5CF8: mov rdi, rax; this +000C5CFB: call __ZN6serial6Serial4readEPhm; serial::Serial::read(uchar *,ulong) +000C5D00: mov [rbp+var_8], eax +000C5D03: mov rax, [rbp+var_418] +000C5D0A: mov rax, [rax+20h] +000C5D0E: test rax, rax +000C5D11: jz short loc_C5D6D +000C5D13: mov rax, [rbp+var_418] +000C5D1A: mov rax, [rax+20h] +000C5D1E: mov rax, [rax] +000C5D21: mov rax, [rax] +000C5D24: mov rdx, [rbp+var_418] +000C5D2B: mov rcx, [rdx+20h] +000C5D2F: mov edx, [rbp+var_8] +000C5D32: lea rsi, [rbp+s] +000C5D39: mov rdi, rcx +000C5D3C: call rax +000C5D3E: jmp short loc_C5D6D +000C5D40: cmp [rbp+var_4], 0 +000C5D44: jns short loc_C5D6D +000C5D46: mov edi, 4; thrown_size +000C5D4B: call ___cxa_allocate_exception +000C5D50: mov dword ptr [rax], 0FFFFFFFFh +000C5D56: mov edx, 0; void (__fastcall *)(void *) +000C5D5B: mov rcx, cs:_ZTIi_ptr +000C5D62: mov rsi, rcx; lptinfo +000C5D65: mov rdi, rax; void * +000C5D68: call ___cxa_throw +000C5D6D: mov rax, [rbp+var_418] +000C5D74: movzx eax, byte ptr [rax+10h] +000C5D78: test al, al +000C5D7A: jnz loc_C5C94 +000C5D80: leave +000C5D81: retn + +### FUNC 000C5D82 - 000C5DCE (76 bytes) name=_ZN6serial7TimeoutC2Ejjjjj +000C5D82: push rbp; Alternative name is 'serial::Timeout::Timeout(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)' +000C5D83: mov rbp, rsp +000C5D86: mov [rbp+var_8], rdi +000C5D8A: mov [rbp+var_C], esi +000C5D8D: mov [rbp+var_10], edx +000C5D90: mov [rbp+var_14], ecx +000C5D93: mov [rbp+var_18], r8d +000C5D97: mov [rbp+var_1C], r9d +000C5D9B: mov rax, [rbp+var_8] +000C5D9F: mov edx, [rbp+var_C] +000C5DA2: mov [rax], edx +000C5DA4: mov rax, [rbp+var_8] +000C5DA8: mov edx, [rbp+var_10] +000C5DAB: mov [rax+4], edx +000C5DAE: mov rax, [rbp+var_8] +000C5DB2: mov edx, [rbp+var_14] +000C5DB5: mov [rax+8], edx +000C5DB8: mov rax, [rbp+var_8] +000C5DBC: mov edx, [rbp+var_18] +000C5DBF: mov [rax+0Ch], edx +000C5DC2: mov rax, [rbp+var_8] +000C5DC6: mov edx, [rbp+var_1C] +000C5DC9: mov [rax+10h], edx +000C5DCC: pop rbp +000C5DCD: retn + +### FUNC 000C5DCE - 000C5DEA (28 bytes) name=_ZN9IDataCommC2Ev +000C5DCE: push rbp; Alternative name is 'IDataComm::IDataComm(void)' +000C5DCF: mov rbp, rsp +000C5DD2: mov [rbp+var_8], rdi +000C5DD6: mov rax, [rbp+var_8] +000C5DDA: mov rdx, cs:_ZTV9IDataComm_ptr +000C5DE1: lea rdx, [rdx+10h] +000C5DE5: mov [rax], rdx +000C5DE8: pop rbp +000C5DE9: retn + +### FUNC 000C5DEA - 000C5DF8 (14 bytes) name=_ZSt7forwardIM10SerialPortFvvEEOT_RNSt16remove_referenceIS3_E4typeE +000C5DEA: push rbp +000C5DEB: mov rbp, rsp +000C5DEE: mov [rbp+var_8], rdi +000C5DF2: mov rax, [rbp+var_8] +000C5DF6: pop rbp +000C5DF7: retn + +### FUNC 000C5DF8 - 000C5E06 (14 bytes) name=_ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE +000C5DF8: push rbp +000C5DF9: mov rbp, rsp +000C5DFC: mov [rbp+var_8], rdi +000C5E00: mov rax, [rbp+var_8] +000C5E04: pop rbp +000C5E05: retn + +### FUNC 000C5E06 - 000C5E24 (30 bytes) name=_ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C5E06: push rbp; Alternative name is 'std::__shared_ptr ()(SerialPort*)>>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr()' +000C5E07: mov rbp, rsp +000C5E0A: sub rsp, 10h +000C5E0E: mov [rbp+var_8], rdi +000C5E12: mov rax, [rbp+var_8] +000C5E16: add rax, 8 +000C5E1A: mov rdi, rax +000C5E1D: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() +000C5E22: leave +000C5E23: retn + +### FUNC 000C5E24 - 000C5E3E (26 bytes) name=_ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEED2Ev +000C5E24: push rbp; Alternative name is 'std::shared_ptr ()(SerialPort*)>>>::~shared_ptr()' +000C5E25: mov rbp, rsp +000C5E28: sub rsp, 10h +000C5E2C: mov [rbp+var_8], rdi +000C5E30: mov rax, [rbp+var_8] +000C5E34: mov rdi, rax +000C5E37: call __ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_ptr ()(SerialPort*)>>,(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() +000C5E3C: leave +000C5E3D: retn + +### FUNC 000C5E3E - 000C5F13 (213 bytes) name=_ZNSt6threadC2IM10SerialPortFvvEJKPS1_EEEOT_DpOT0_ +000C5E3E: push rbp; Alternative name is 'std::thread::thread(void (SerialPort::*)(void) &&, SerialPort* const &&)' +000C5E3F: mov rbp, rsp +000C5E42: push rbx +000C5E43: sub rsp, 68h +000C5E47: mov [rbp+var_58], rdi +000C5E4B: mov [rbp+var_60], rsi +000C5E4F: mov [rbp+var_68], rdx +000C5E53: mov rax, [rbp+var_58] +000C5E57: mov rdi, rax; this +000C5E5A: call __ZNSt6thread2idC2Ev; std::thread::id::id(void) +000C5E5F: mov rax, [rbp+var_68] +000C5E63: mov rdi, rax +000C5E66: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C5E6B: mov rbx, rax +000C5E6E: mov rax, [rbp+var_60] +000C5E72: mov rdi, rax +000C5E75: call __ZSt7forwardIM10SerialPortFvvEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C5E7A: mov rcx, rax +000C5E7D: lea rax, [rbp+var_30] +000C5E81: mov rdx, rbx +000C5E84: mov rsi, rcx +000C5E87: mov rdi, rax +000C5E8A: call __ZSt13__bind_simpleIM10SerialPortFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_; std::__bind_simple(void (SerialPort::*)(void)&&,SerialPort* const&&) +000C5E8F: lea rax, [rbp+var_40] +000C5E93: lea rdx, [rbp+var_30] +000C5E97: mov rcx, [rbp+var_58] +000C5E9B: mov rsi, rcx +000C5E9E: mov rdi, rax +000C5EA1: call __ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_; std::thread::_M_make_routine ()(SerialPort*)>>(std::_Bind_simple ()(SerialPort*)>&&) +000C5EA6: lea rdx, [rbp+var_40] +000C5EAA: lea rax, [rbp+var_50] +000C5EAE: mov rsi, rdx +000C5EB1: mov rdi, rax +000C5EB4: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS7_EEEEvEEOS_IT_E; std::shared_ptr::shared_ptr ()(SerialPort*)>>,void>(std::shared_ptr&& ()(SerialPort*)>>>) +000C5EB9: lea rdx, [rbp+var_50] +000C5EBD: mov rax, [rbp+var_58] +000C5EC1: mov rsi, rdx +000C5EC4: mov rdi, rax +000C5EC7: call __ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE; std::thread::_M_start_thread(std::shared_ptr) +000C5ECC: lea rax, [rbp+var_50] +000C5ED0: mov rdi, rax +000C5ED3: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000C5ED8: lea rax, [rbp+var_40] +000C5EDC: mov rdi, rax +000C5EDF: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEED2Ev; std::shared_ptr ()(SerialPort*)>>>::~shared_ptr() +000C5EE4: jmp short loc_C5F0C +000C5EE6: mov rbx, rax +000C5EE9: lea rax, [rbp+var_50] +000C5EED: mov rdi, rax +000C5EF0: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000C5EF5: lea rax, [rbp+var_40] +000C5EF9: mov rdi, rax +000C5EFC: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEED2Ev; std::shared_ptr ()(SerialPort*)>>>::~shared_ptr() +000C5F01: mov rax, rbx +000C5F04: mov rdi, rax; struct _Unwind_Exception * +000C5F07: call __Unwind_Resume +000C5F0C: add rsp, 68h +000C5F10: pop rbx +000C5F11: pop rbp +000C5F12: retn + +### FUNC 000C5F13 - 000C5F21 (14 bytes) name=_ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_tailERS2_ +000C5F13: push rbp; Alternative name is 'std::_Tuple_impl<1ul, SerialPort *>::_M_tail(std::_Tuple_impl<1ul, SerialPort *>&)' +000C5F14: mov rbp, rsp +000C5F17: mov [rbp+var_8], rdi +000C5F1B: mov rax, [rbp+var_8] +000C5F1F: pop rbp +000C5F20: retn + +### FUNC 000C5F21 - 000C5F2F (14 bytes) name=_ZNSt10_Head_baseILm1EP10SerialPortLb0EE7_M_headERS2_ +000C5F21: push rbp +000C5F22: mov rbp, rsp +000C5F25: mov [rbp+var_8], rdi +000C5F29: mov rax, [rbp+var_8] +000C5F2D: pop rbp +000C5F2E: retn + +### FUNC 000C5F2F - 000C5F49 (26 bytes) name=_ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_headERS2_ +000C5F2F: push rbp; Alternative name is 'std::_Tuple_impl<1ul, SerialPort *>::_M_head(std::_Tuple_impl<1ul, SerialPort *>&)' +000C5F30: mov rbp, rsp +000C5F33: sub rsp, 10h +000C5F37: mov [rbp+var_8], rdi +000C5F3B: mov rax, [rbp+var_8] +000C5F3F: mov rdi, rax +000C5F42: call __ZNSt10_Head_baseILm1EP10SerialPortLb0EE7_M_headERS2_; std::_Head_base<1ul,SerialPort *,false>::_M_head(std::_Head_base<1ul,SerialPort *,false>&) +000C5F47: leave +000C5F48: retn + +### FUNC 000C5F49 - 000C5F57 (14 bytes) name=_ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE +000C5F49: push rbp +000C5F4A: mov rbp, rsp +000C5F4D: mov [rbp+var_8], rdi +000C5F51: mov rax, [rbp+var_8] +000C5F55: pop rbp +000C5F56: retn + +### FUNC 000C5F58 - 000C5F80 (40 bytes) name=_ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IS1_EEOT_ +000C5F58: push rbp; Alternative name is 'std::_Head_base<1ul, SerialPort *, false>::_Head_base(SerialPort * &&)' +000C5F59: mov rbp, rsp +000C5F5C: sub rsp, 10h +000C5F60: mov [rbp+var_8], rdi +000C5F64: mov [rbp+var_10], rsi +000C5F68: mov rax, [rbp+var_10] +000C5F6C: mov rdi, rax +000C5F6F: call __ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C5F74: mov rdx, [rax] +000C5F77: mov rax, [rbp+var_8] +000C5F7B: mov [rax], rdx +000C5F7E: leave +000C5F7F: retn + +### FUNC 000C5F80 - 000C5FCC (76 bytes) name=_ZNSt11_Tuple_implILm1EJP10SerialPortEEC2EOS2_ +000C5F80: push rbp; Alternative name is 'std::_Tuple_impl<1ul, SerialPort *>::_Tuple_impl(std::_Tuple_impl<1ul, SerialPort *>&&)' +000C5F81: mov rbp, rsp +000C5F84: sub rsp, 10h +000C5F88: mov [rbp+var_8], rdi +000C5F8C: mov [rbp+var_10], rsi +000C5F90: mov rax, [rbp+var_10] +000C5F94: mov rdi, rax +000C5F97: call __ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_tailERS2_; std::_Tuple_impl<1ul,SerialPort *>::_M_tail(std::_Tuple_impl<1ul,SerialPort *>&) +000C5F9C: mov rdi, rax +000C5F9F: call __ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000C5FA4: mov rax, [rbp+var_10] +000C5FA8: mov rdi, rax +000C5FAB: call __ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_headERS2_; std::_Tuple_impl<1ul,SerialPort *>::_M_head(std::_Tuple_impl<1ul,SerialPort *>&) +000C5FB0: mov rdi, rax +000C5FB3: call __ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C5FB8: mov rdx, rax +000C5FBB: mov rax, [rbp+var_8] +000C5FBF: mov rsi, rdx +000C5FC2: mov rdi, rax +000C5FC5: call __ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IS1_EEOT_; std::_Head_base<1ul,SerialPort *,false>::_Head_base(SerialPort * &&) +000C5FCA: leave +000C5FCB: retn + +### FUNC 000C5FCC - 000C5FDA (14 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_tailERS6_ +000C5FCC: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>::_M_tail(std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>&)' +000C5FCD: mov rbp, rsp +000C5FD0: mov [rbp+var_8], rdi +000C5FD4: mov rax, [rbp+var_8] +000C5FD8: pop rbp +000C5FD9: retn + +### FUNC 000C5FDA - 000C5FE8 (14 bytes) name=_ZSt4moveIRSt11_Tuple_implILm1EJP10SerialPortEEEONSt16remove_referenceIT_E4typeEOS6_ +000C5FDA: push rbp; Alternative name is 'std::remove_reference &>::type && std::move &>(std::_Tuple_impl<1ul, SerialPort *> &&&)' +000C5FDB: mov rbp, rsp +000C5FDE: mov [rbp+var_8], rdi +000C5FE2: mov rax, [rbp+var_8] +000C5FE6: pop rbp +000C5FE7: retn + +### FUNC 000C5FE8 - 000C5FF6 (14 bytes) name=_ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EE7_M_headERS5_ +000C5FE8: push rbp +000C5FE9: mov rbp, rsp +000C5FEC: mov [rbp+var_8], rdi +000C5FF0: mov rax, [rbp+var_8] +000C5FF4: pop rbp +000C5FF5: retn + +### FUNC 000C5FF6 - 000C6014 (30 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_headERS6_ +000C5FF6: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>::_M_head(std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>&)' +000C5FF7: mov rbp, rsp +000C5FFA: sub rsp, 10h +000C5FFE: mov [rbp+var_8], rdi +000C6002: mov rax, [rbp+var_8] +000C6006: add rax, 8 +000C600A: mov rdi, rax +000C600D: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EE7_M_headERS5_; std::_Head_base<0ul,std::_Mem_fn,false>::_M_head(std::_Head_base<0ul,std::_Mem_fn,false>&) +000C6012: leave +000C6013: retn + +### FUNC 000C6014 - 000C6022 (14 bytes) name=_ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +000C6014: push rbp +000C6015: mov rbp, rsp +000C6018: mov [rbp+var_8], rdi +000C601C: mov rax, [rbp+var_8] +000C6020: pop rbp +000C6021: retn + +### FUNC 000C6022 - 000C6052 (48 bytes) name=_ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EEC2IS4_EEOT_ +000C6022: push rbp; Alternative name is 'std::_Head_base<0ul, std::_Mem_fn, false>::_Head_base>(std::_Mem_fn &&)' +000C6023: mov rbp, rsp +000C6026: sub rsp, 10h +000C602A: mov [rbp+var_8], rdi +000C602E: mov [rbp+var_10], rsi +000C6032: mov rax, [rbp+var_10] +000C6036: mov rdi, rax +000C6039: call __ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C603E: mov rcx, [rbp+var_8] +000C6042: mov rdx, [rax+8] +000C6046: mov rax, [rax] +000C6049: mov [rcx], rax +000C604C: mov [rcx+8], rdx +000C6050: leave +000C6051: retn + +### FUNC 000C6052 - 000C60B1 (95 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +000C6052: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>::_Tuple_impl(std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>&&)' +000C6053: mov rbp, rsp +000C6056: sub rsp, 10h +000C605A: mov [rbp+var_8], rdi +000C605E: mov [rbp+var_10], rsi +000C6062: mov rax, [rbp+var_10] +000C6066: mov rdi, rax +000C6069: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_tailERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>::_M_tail(std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>&) +000C606E: mov rdi, rax +000C6071: call __ZSt4moveIRSt11_Tuple_implILm1EJP10SerialPortEEEONSt16remove_referenceIT_E4typeEOS6_; std::move &>(std::_Tuple_impl<1ul,SerialPort *> &&&) +000C6076: mov rdx, rax +000C6079: mov rax, [rbp+var_8] +000C607D: mov rsi, rdx +000C6080: mov rdi, rax +000C6083: call __ZNSt11_Tuple_implILm1EJP10SerialPortEEC2EOS2_; std::_Tuple_impl<1ul,SerialPort *>::_Tuple_impl(std::_Tuple_impl<1ul,SerialPort *>&&) +000C6088: mov rax, [rbp+var_10] +000C608C: mov rdi, rax +000C608F: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_headERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>::_M_head(std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>&) +000C6094: mov rdi, rax +000C6097: call __ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C609C: mov rdx, [rbp+var_8] +000C60A0: add rdx, 8 +000C60A4: mov rsi, rax +000C60A7: mov rdi, rdx +000C60AA: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EEC2IS4_EEOT_; std::_Head_base<0ul,std::_Mem_fn,false>::_Head_base>(std::_Mem_fn &&) +000C60AF: leave +000C60B0: retn + +### FUNC 000C60B2 - 000C60D7 (37 bytes) name=_ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_ +000C60B2: push rbp; Alternative name is 'std::tuple, SerialPort*>::tuple(std::tuple, SerialPort*>&&)' +000C60B3: mov rbp, rsp +000C60B6: sub rsp, 10h +000C60BA: mov [rbp+var_8], rdi +000C60BE: mov [rbp+var_10], rsi +000C60C2: mov rdx, [rbp+var_10] +000C60C6: mov rax, [rbp+var_8] +000C60CA: mov rsi, rdx +000C60CD: mov rdi, rax +000C60D0: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_; std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>::_Tuple_impl(std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>&&) +000C60D5: leave +000C60D6: retn + +### FUNC 000C60D8 - 000C60FD (37 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS7_ +000C60D8: push rbp; Alternative name is 'std::_Bind_simple ()(SerialPort*)>::_Bind_simple(std::_Bind_simple ()(SerialPort*)>&&)' +000C60D9: mov rbp, rsp +000C60DC: sub rsp, 10h +000C60E0: mov [rbp+var_8], rdi +000C60E4: mov [rbp+var_10], rsi +000C60E8: mov rdx, [rbp+var_10] +000C60EC: mov rax, [rbp+var_8] +000C60F0: mov rsi, rdx +000C60F3: mov rdi, rax +000C60F6: call __ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS6_; std::tuple,SerialPort*>::tuple(std::tuple,SerialPort*>&&) +000C60FB: leave +000C60FC: retn + +### FUNC 000C60FD - 000C6168 (107 bytes) name=_ZSt13__bind_simpleIM10SerialPortFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000C60FD: push rbp; Alternative name is 'std::_Bind_simple_helper>::__type std::__bind_simple(void (SerialPort::*)(void)&&, SerialPort* const&&)' +000C60FE: mov rbp, rsp +000C6101: push rbx +000C6102: sub rsp, 38h +000C6106: mov [rbp+var_28], rdi +000C610A: mov [rbp+var_30], rsi +000C610E: mov [rbp+var_38], rdx +000C6112: mov rax, [rbp+var_38] +000C6116: mov rdi, rax +000C6119: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C611E: mov rbx, rax +000C6121: mov rax, [rbp+var_30] +000C6125: mov rdi, rax +000C6128: call __ZSt7forwardIM10SerialPortFvvEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C612D: mov rdx, [rax] +000C6130: mov rax, [rax+8] +000C6134: mov rdi, rdx +000C6137: mov rsi, rax +000C613A: call __ZNSt26_Maybe_wrap_member_pointerIM10SerialPortFvvEE9__do_wrapES2_; std::_Maybe_wrap_member_pointer::__do_wrap(void (SerialPort::*)(void)) +000C613F: mov [rbp+var_20], rax +000C6143: mov [rbp+var_18], rdx +000C6147: lea rcx, [rbp+var_20] +000C614B: mov rax, [rbp+var_28] +000C614F: mov rdx, rbx +000C6152: mov rsi, rcx +000C6155: mov rdi, rax +000C6158: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_; std::_Bind_simple ()(SerialPort*)>::_Bind_simple(std::_Mem_fn&&,SerialPort* const &&) +000C615D: mov rax, [rbp+var_28] +000C6161: add rsp, 38h +000C6165: pop rbx +000C6166: pop rbp +000C6167: retn + +### FUNC 000C6168 - 000C6176 (14 bytes) name=_ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +000C6168: push rbp +000C6169: mov rbp, rsp +000C616C: mov [rbp+var_8], rdi +000C6170: mov rax, [rbp+var_8] +000C6174: pop rbp +000C6175: retn + +### FUNC 000C6176 - 000C61AE (56 bytes) name=_ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000C6176: push rbp +000C6177: mov rbp, rsp +000C617A: sub rsp, 20h +000C617E: mov [rbp+var_8], rdi +000C6182: mov [rbp+var_10], rsi +000C6186: mov [rbp+var_18], rdx +000C618A: mov rax, [rbp+var_18] +000C618E: mov rdi, rax +000C6191: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6196: mov rdx, rax +000C6199: mov rax, [rbp+var_8] +000C619D: mov rsi, rdx +000C61A0: mov rdi, rax +000C61A3: call __ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_; std::make_shared ()(SerialPort*)>>,std::_Bind_simple ()(SerialPort*)>>(std::_Bind_simple ()(SerialPort*)> &&) +000C61A8: mov rax, [rbp+var_8] +000C61AC: leave +000C61AD: retn + +### FUNC 000C61AE - 000C61BC (14 bytes) name=_ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C61AE: push rbp +000C61AF: mov rbp, rsp +000C61B2: mov [rbp+var_8], rdi +000C61B6: mov rax, [rbp+var_8] +000C61BA: pop rbp +000C61BB: retn + +### FUNC 000C61BC - 000C61EC (48 bytes) name=_ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS7_EEEEvEEOS_IT_E +000C61BC: push rbp; Alternative name is 'std::shared_ptr::shared_ptr ()(SerialPort*)>>, void>(std::shared_ptr&& ()(SerialPort*)>>>)' +000C61BD: mov rbp, rsp +000C61C0: sub rsp, 10h +000C61C4: mov [rbp+var_8], rdi +000C61C8: mov [rbp+var_10], rsi +000C61CC: mov rax, [rbp+var_10] +000C61D0: mov rdi, rax +000C61D3: call __ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move ()(SerialPort*)>>> &>(std::shared_ptr ()(SerialPort*)>>> &&&) +000C61D8: mov rdx, rax +000C61DB: mov rax, [rbp+var_8] +000C61DF: mov rsi, rdx +000C61E2: mov rdi, rax +000C61E5: call __ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS9_EEEEvEEOS_IT_LS3_2EE; std::__shared_ptr::__shared_ptr ()(SerialPort*)>>,void>(std::__shared_ptr&& ()(SerialPort*)>>,(__gnu_cxx::_Lock_policy)2>) +000C61EA: leave +000C61EB: retn + +### FUNC 000C61EC - 000C6226 (58 bytes) name=_ZNSt26_Maybe_wrap_member_pointerIM10SerialPortFvvEE9__do_wrapES2_ +000C61EC: push rbp +000C61ED: mov rbp, rsp +000C61F0: sub rsp, 20h +000C61F4: mov rax, rdi +000C61F7: mov rcx, rsi +000C61FA: mov rdx, rcx +000C61FD: mov [rbp+var_20], rax +000C6201: mov [rbp+var_18], rdx +000C6205: mov rcx, [rbp+var_20] +000C6209: mov rdx, [rbp+var_18] +000C620D: lea rax, [rbp+var_10] +000C6211: mov rsi, rcx +000C6214: mov rdi, rax +000C6217: call __ZNSt7_Mem_fnIM10SerialPortFvvEEC2ES2_; std::_Mem_fn::_Mem_fn(void (SerialPort::*)(void)) +000C621C: mov rax, [rbp+var_10] +000C6220: mov rdx, [rbp+var_8] +000C6224: leave +000C6225: retn + +### FUNC 000C6226 - 000C6234 (14 bytes) name=_ZSt4moveIRSt7_Mem_fnIM10SerialPortFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +000C6226: push rbp +000C6227: mov rbp, rsp +000C622A: mov [rbp+var_8], rdi +000C622E: mov rax, [rbp+var_8] +000C6232: pop rbp +000C6233: retn + +### FUNC 000C6234 - 000C625C (40 bytes) name=_ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IKS1_EEOT_ +000C6234: push rbp; Alternative name is 'std::_Head_base<1ul, SerialPort *, false>::_Head_base(SerialPort * const &&)' +000C6235: mov rbp, rsp +000C6238: sub rsp, 10h +000C623C: mov [rbp+var_8], rdi +000C6240: mov [rbp+var_10], rsi +000C6244: mov rax, [rbp+var_10] +000C6248: mov rdi, rax +000C624B: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C6250: mov rdx, [rax] +000C6253: mov rax, [rbp+var_8] +000C6257: mov [rax], rdx +000C625A: leave +000C625B: retn + +### FUNC 000C625C - 000C6298 (60 bytes) name=_ZNSt11_Tuple_implILm1EJP10SerialPortEEC2IKS1_JEvEEOT_DpOT0_ +000C625C: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EIP10SerialPortEEC1IKS1_IEvEEOT_DpOT0_' +000C625D: mov rbp, rsp +000C6260: sub rsp, 10h +000C6264: mov [rbp+var_8], rdi +000C6268: mov [rbp+var_10], rsi +000C626C: mov rax, [rbp+var_8] +000C6270: mov rdi, rax +000C6273: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000C6278: mov rax, [rbp+var_10] +000C627C: mov rdi, rax +000C627F: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C6284: mov rdx, rax +000C6287: mov rax, [rbp+var_8] +000C628B: mov rsi, rdx +000C628E: mov rdi, rax +000C6291: call __ZNSt10_Head_baseILm1EP10SerialPortLb0EEC2IKS1_EEOT_; std::_Head_base<1ul,SerialPort *,false>::_Head_base(SerialPort * const &&) +000C6296: leave +000C6297: retn + +### FUNC 000C6298 - 000C62EB (83 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +000C6298: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*>::_Tuple_impl, SerialPort* const, void>(std::_Mem_fn &&, SerialPort* const &&)' +000C6299: mov rbp, rsp +000C629C: sub rsp, 20h +000C62A0: mov [rbp+var_8], rdi +000C62A4: mov [rbp+var_10], rsi +000C62A8: mov [rbp+var_18], rdx +000C62AC: mov rax, [rbp+var_18] +000C62B0: mov rdi, rax +000C62B3: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C62B8: mov rdx, rax +000C62BB: mov rax, [rbp+var_8] +000C62BF: mov rsi, rdx +000C62C2: mov rdi, rax +000C62C5: call __ZNSt11_Tuple_implILm1EJP10SerialPortEEC2IKS1_JEvEEOT_DpOT0_ +000C62CA: mov rax, [rbp+var_10] +000C62CE: mov rdi, rax +000C62D1: call __ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C62D6: mov rdx, [rbp+var_8] +000C62DA: add rdx, 8 +000C62DE: mov rsi, rax +000C62E1: mov rdi, rdx +000C62E4: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM10SerialPortFvvEELb0EEC2IS4_EEOT_; std::_Head_base<0ul,std::_Mem_fn,false>::_Head_base>(std::_Mem_fn &&) +000C62E9: leave +000C62EA: retn + +### FUNC 000C62EC - 000C6338 (76 bytes) name=_ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000C62EC: push rbp; Alternative name is 'std::tuple, SerialPort*>::tuple, SerialPort* const, void>(std::_Mem_fn &&, SerialPort* const &&)' +000C62ED: mov rbp, rsp +000C62F0: push rbx +000C62F1: sub rsp, 28h +000C62F5: mov [rbp+var_18], rdi +000C62F9: mov [rbp+var_20], rsi +000C62FD: mov [rbp+var_28], rdx +000C6301: mov rax, [rbp+var_28] +000C6305: mov rdi, rax +000C6308: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C630D: mov rbx, rax +000C6310: mov rax, [rbp+var_20] +000C6314: mov rdi, rax +000C6317: call __ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C631C: mov rcx, rax +000C631F: mov rax, [rbp+var_18] +000C6323: mov rdx, rbx +000C6326: mov rsi, rcx +000C6329: mov rdi, rax +000C632C: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_; std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>::_Tuple_impl,SerialPort* const,void>(std::_Mem_fn &&,SerialPort* const &&) +000C6331: add rsp, 28h +000C6335: pop rbx +000C6336: pop rbp +000C6337: retn + +### FUNC 000C6338 - 000C6384 (76 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +000C6338: push rbp; Alternative name is 'std::_Bind_simple ()(SerialPort*)>::_Bind_simple(std::_Mem_fn&&, SerialPort* const &&)' +000C6339: mov rbp, rsp +000C633C: push rbx +000C633D: sub rsp, 28h +000C6341: mov [rbp+var_18], rdi +000C6345: mov [rbp+var_20], rsi +000C6349: mov [rbp+var_28], rdx +000C634D: mov rax, [rbp+var_28] +000C6351: mov rdi, rax +000C6354: call __ZSt7forwardIKP10SerialPortEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000C6359: mov rbx, rax +000C635C: mov rax, [rbp+var_20] +000C6360: mov rdi, rax +000C6363: call __ZSt4moveIRSt7_Mem_fnIM10SerialPortFvvEEEONSt16remove_referenceIT_E4typeEOS7_; std::move &>(std::_Mem_fn &&&) +000C6368: mov rcx, rax +000C636B: mov rax, [rbp+var_18] +000C636F: mov rdx, rbx +000C6372: mov rsi, rcx +000C6375: mov rdi, rax +000C6378: call __ZNSt5tupleIJSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_; std::tuple,SerialPort*>::tuple,SerialPort* const,void>(std::_Mem_fn &&,SerialPort* const &&) +000C637D: add rsp, 28h +000C6381: pop rbx +000C6382: pop rbp +000C6383: retn + +### FUNC 000C6384 - 000C63F9 (117 bytes) name=_ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000C6384: push rbp; Alternative name is 'std::shared_ptr ()(SerialPort*)>>> std::make_shared ()(SerialPort*)>>, std::_Bind_simple ()(SerialPort*)>>(std::_Bind_simple ()(SerialPort*)> &&)' +000C6385: mov rbp, rsp +000C6388: push rbx +000C6389: sub rsp, 28h +000C638D: mov [rbp+var_28], rdi +000C6391: mov [rbp+var_30], rsi +000C6395: mov rax, [rbp+var_30] +000C6399: mov rdi, rax +000C639C: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C63A1: mov rbx, rax +000C63A4: lea rax, [rbp+var_11] +000C63A8: mov rdi, rax +000C63AB: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2Ev; std::allocator ()(SerialPort*)>>>::allocator(void) +000C63B0: mov rax, [rbp+var_28] +000C63B4: lea rcx, [rbp+var_11] +000C63B8: mov rdx, rbx +000C63BB: mov rsi, rcx +000C63BE: mov rdi, rax +000C63C1: call __ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_; std::allocate_shared ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,std::_Bind_simple ()(SerialPort*)>>(std::allocator ()(SerialPort*)>>> const&,std::_Bind_simple ()(SerialPort*)> &&) +000C63C6: lea rax, [rbp+var_11] +000C63CA: mov rdi, rax +000C63CD: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev; std::allocator ()(SerialPort*)>>>::~allocator() +000C63D2: jmp short loc_C63EE +000C63D4: mov rbx, rax +000C63D7: lea rax, [rbp+var_11] +000C63DB: mov rdi, rax +000C63DE: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev; std::allocator ()(SerialPort*)>>>::~allocator() +000C63E3: mov rax, rbx +000C63E6: mov rdi, rax; struct _Unwind_Exception * +000C63E9: call __Unwind_Resume +000C63EE: mov rax, [rbp+var_28] +000C63F2: add rsp, 28h +000C63F6: pop rbx +000C63F7: pop rbp +000C63F8: retn + +### FUNC 000C63FA - 000C6450 (86 bytes) name=_ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +000C63FA: push rbp; Alternative name is 'std::__shared_ptr::__shared_ptr ()(SerialPort*)>>, void>(std::__shared_ptr&& ()(SerialPort*)>>, (__gnu_cxx::_Lock_policy)2>)' +000C63FB: mov rbp, rsp +000C63FE: sub rsp, 10h +000C6402: mov [rbp+var_8], rdi +000C6406: mov [rbp+var_10], rsi +000C640A: mov rax, [rbp+var_10] +000C640E: mov rdx, [rax] +000C6411: mov rax, [rbp+var_8] +000C6415: mov [rax], rdx +000C6418: mov rax, [rbp+var_8] +000C641C: add rax, 8 +000C6420: mov rdi, rax +000C6423: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(void) +000C6428: mov rax, [rbp+var_10] +000C642C: lea rdx, [rax+8] +000C6430: mov rax, [rbp+var_8] +000C6434: add rax, 8 +000C6438: mov rsi, rdx +000C643B: mov rdi, rax +000C643E: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::_M_swap(std::__shared_count<(__gnu_cxx::_Lock_policy)2>&) +000C6443: mov rax, [rbp+var_10] +000C6447: mov qword ptr [rax], 0 +000C644E: leave +000C644F: retn + +### FUNC 000C6450 - 000C645A (10 bytes) name=_ZNSt14unary_functionIP10SerialPortvEC2Ev +000C6450: push rbp; Alternative name is 'std::unary_function::unary_function(void)' +000C6451: mov rbp, rsp +000C6454: mov [rbp+var_8], rdi +000C6458: pop rbp +000C6459: retn + +### FUNC 000C645A - 000C6474 (26 bytes) name=_ZNSt31_Maybe_unary_or_binary_functionIvJP10SerialPortEEC2Ev +000C645A: push rbp; Alternative name is 'std::_Maybe_unary_or_binary_function::_Maybe_unary_or_binary_function(void)' +000C645B: mov rbp, rsp +000C645E: sub rsp, 10h +000C6462: mov [rbp+var_8], rdi +000C6466: mov rax, [rbp+var_8] +000C646A: mov rdi, rax +000C646D: call __ZNSt14unary_functionIP10SerialPortvEC2Ev; std::unary_function::unary_function(void) +000C6472: leave +000C6473: retn + +### FUNC 000C6474 - 000C64B2 (62 bytes) name=_ZNSt7_Mem_fnIM10SerialPortFvvEEC2ES2_ +000C6474: push rbp; Alternative name is 'std::_Mem_fn::_Mem_fn(void (SerialPort::*)(void))' +000C6475: mov rbp, rsp +000C6478: sub rsp, 20h +000C647C: mov [rbp+var_8], rdi +000C6480: mov rax, rsi +000C6483: mov rcx, rdx +000C6486: mov rdx, rcx +000C6489: mov [rbp+var_20], rax +000C648D: mov [rbp+var_18], rdx +000C6491: mov rax, [rbp+var_8] +000C6495: mov rdi, rax +000C6498: call __ZNSt31_Maybe_unary_or_binary_functionIvJP10SerialPortEEC2Ev; std::_Maybe_unary_or_binary_function::_Maybe_unary_or_binary_function(void) +000C649D: mov rcx, [rbp+var_8] +000C64A1: mov rax, [rbp+var_20] +000C64A5: mov rdx, [rbp+var_18] +000C64A9: mov [rcx], rax +000C64AC: mov [rcx+8], rdx +000C64B0: leave +000C64B1: retn + +### FUNC 000C64B2 - 000C64CC (26 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2Ev +000C64B2: push rbp; Alternative name is 'std::allocator ()(SerialPort*)>>>::allocator(void)' +000C64B3: mov rbp, rsp +000C64B6: sub rsp, 10h +000C64BA: mov [rbp+var_8], rdi +000C64BE: mov rax, [rbp+var_8] +000C64C2: mov rdi, rax +000C64C5: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2Ev; __gnu_cxx::new_allocator ()(SerialPort*)>>>::new_allocator(void) +000C64CA: leave +000C64CB: retn + +### FUNC 000C64CC - 000C64E6 (26 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev +000C64CC: push rbp; Alternative name is 'std::allocator ()(SerialPort*)>>>::~allocator()' +000C64CD: mov rbp, rsp +000C64D0: sub rsp, 10h +000C64D4: mov [rbp+var_8], rdi +000C64D8: mov rax, [rbp+var_8] +000C64DC: mov rdi, rax +000C64DF: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEED2Ev; __gnu_cxx::new_allocator ()(SerialPort*)>>>::~new_allocator() +000C64E4: leave +000C64E5: retn + +### FUNC 000C64E6 - 000C652B (69 bytes) name=_ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +000C64E6: push rbp; Alternative name is 'std::shared_ptr ()(SerialPort*)>>> std::allocate_shared ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, std::_Bind_simple ()(SerialPort*)>>(std::allocator ()(SerialPort*)>>> const&, std::_Bind_simple ()(SerialPort*)> &&)' +000C64E7: mov rbp, rsp +000C64EA: push rbx +000C64EB: sub rsp, 38h +000C64EF: mov [rbp+var_28], rdi +000C64F3: mov [rbp+var_30], rsi +000C64F7: mov [rbp+var_38], rdx +000C64FB: mov rax, [rbp+var_38] +000C64FF: mov rdi, rax +000C6502: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6507: mov rdx, rax +000C650A: mov rcx, [rbp+var_30] +000C650E: mov rax, [rbp+var_28] +000C6512: mov [rsp+40h+var_40], bl +000C6515: mov rsi, rcx +000C6518: mov rdi, rax +000C651B: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_; std::shared_ptr ()(SerialPort*)>>>::shared_ptr ()(SerialPort*)>>>,std::_Bind_simple ()(SerialPort*)>>(std::_Sp_make_shared_tag,std::allocator ()(SerialPort*)>>> const&,std::_Bind_simple ()(SerialPort*)> &&) +000C6520: mov rax, [rbp+var_28] +000C6524: add rsp, 38h +000C6528: pop rbx +000C6529: pop rbp +000C652A: retn + +### FUNC 000C652C - 000C6536 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2Ev +000C652C: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(SerialPort*)>>>::new_allocator(void)' +000C652D: mov rbp, rsp +000C6530: mov [rbp+var_8], rdi +000C6534: pop rbp +000C6535: retn + +### FUNC 000C6536 - 000C6540 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEED2Ev +000C6536: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(SerialPort*)>>>::~new_allocator()' +000C6537: mov rbp, rsp +000C653A: mov [rbp+var_8], rdi +000C653E: pop rbp +000C653F: retn + +### FUNC 000C6540 - 000C6581 (65 bytes) name=_ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C6540: push rbp; Alternative name is 'std::shared_ptr ()(SerialPort*)>>>::shared_ptr ()(SerialPort*)>>>, std::_Bind_simple ()(SerialPort*)>>(std::_Sp_make_shared_tag, std::allocator ()(SerialPort*)>>> const&, std::_Bind_simple ()(SerialPort*)> &&)' +000C6541: mov rbp, rsp +000C6544: push rbx +000C6545: sub rsp, 28h +000C6549: mov [rbp+var_18], rdi +000C654D: mov [rbp+var_20], rsi +000C6551: mov [rbp+var_28], rdx +000C6555: mov rax, [rbp+var_28] +000C6559: mov rdi, rax +000C655C: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6561: mov rdx, rax +000C6564: mov rax, [rbp+var_18] +000C6568: mov rcx, [rbp+var_20] +000C656C: mov [rsp+30h+var_30], bl +000C656F: mov rsi, rcx +000C6572: mov rdi, rax +000C6575: call __ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_; std::__shared_ptr ()(SerialPort*)>>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr ()(SerialPort*)>>>,std::_Bind_simple ()(SerialPort*)>>(std::_Sp_make_shared_tag,std::allocator ()(SerialPort*)>>> const&,std::_Bind_simple ()(SerialPort*)> &&) +000C657A: add rsp, 28h +000C657E: pop rbx +000C657F: pop rbp +000C6580: retn + +### FUNC 000C6582 - 000C6626 (164 bytes) name=_ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000C6582: push rbp; Alternative name is 'std::__shared_ptr ()(SerialPort*)>>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr ()(SerialPort*)>>>, std::_Bind_simple ()(SerialPort*)>>(std::_Sp_make_shared_tag, std::allocator ()(SerialPort*)>>> const&, std::_Bind_simple ()(SerialPort*)> &&)' +000C6583: mov rbp, rsp +000C6586: push rbx +000C6587: sub rsp, 38h +000C658B: mov [rbp+var_28], rdi +000C658F: mov [rbp+var_30], rsi +000C6593: mov [rbp+var_38], rdx +000C6597: mov rax, [rbp+var_28] +000C659B: mov qword ptr [rax], 0 +000C65A2: mov rax, [rbp+var_38] +000C65A6: mov rdi, rax +000C65A9: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C65AE: mov rdx, rax +000C65B1: mov rax, [rbp+var_28] +000C65B5: lea rdi, [rax+8] +000C65B9: mov rax, [rbp+var_30] +000C65BD: mov [rsp+40h+var_40], bl +000C65C0: mov rcx, rdx +000C65C3: mov rdx, rax +000C65C6: mov esi, 0 +000C65CB: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,std::_Bind_simple ()(SerialPort*)>>(std::_Sp_make_shared_tag,std::thread::_Impl ()(SerialPort*)>> *,std::allocator ()(SerialPort*)>>> const&,std::_Bind_simple ()(SerialPort*)> &&) +000C65D0: mov rax, [rbp+var_28] +000C65D4: lea rdx, [rax+8] +000C65D8: mov rax, cs:_ZTISt19_Sp_make_shared_tag_ptr +000C65DF: mov rsi, rax +000C65E2: mov rdi, rdx +000C65E5: call __ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) +000C65EA: mov [rbp+var_18], rax +000C65EE: mov rax, [rbp+var_28] +000C65F2: mov rdx, [rbp+var_18] +000C65F6: mov [rax], rdx +000C65F9: mov rax, [rbp+var_28] +000C65FD: mov rdx, [rax] +000C6600: mov rax, [rbp+var_28] +000C6604: mov rax, [rax] +000C6607: mov rcx, [rbp+var_28] +000C660B: add rcx, 8 +000C660F: mov rsi, rax +000C6612: mov rdi, rcx +000C6615: mov eax, 0 +000C661A: call __ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz; std::__enable_shared_from_this_helper<(__gnu_cxx::_Lock_policy)2>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&,...) +000C661F: add rsp, 38h +000C6623: pop rbx +000C6624: pop rbp +000C6625: retn + +### FUNC 000C6626 - 000C6634 (14 bytes) name=_ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000C6626: push rbp +000C6627: mov rbp, rsp +000C662A: mov [rbp+var_8], rdi +000C662E: mov rax, [rbp+var_8] +000C6632: pop rbp +000C6633: retn + +### FUNC 000C6634 - 000C6642 (14 bytes) name=_ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +000C6634: push rbp +000C6635: mov rbp, rsp +000C6638: mov [rbp+var_8], rdi +000C663C: mov rax, [rbp+var_8] +000C6640: pop rbp +000C6641: retn + +### FUNC 000C6642 - 000C6728 (230 bytes) name=_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +000C6642: push rbp; Alternative name is 'std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, std::_Bind_simple ()(SerialPort*)>>(std::_Sp_make_shared_tag, std::thread::_Impl ()(SerialPort*)>> *, std::allocator ()(SerialPort*)>>> const&, std::_Bind_simple ()(SerialPort*)> &&)' +000C6643: mov rbp, rsp +000C6646: push rbx +000C6647: sub rsp, 38h +000C664B: mov [rbp+var_28], rdi +000C664F: mov [rbp+var_30], rsi +000C6653: mov [rbp+var_38], rdx +000C6657: mov [rbp+var_40], rcx +000C665B: mov rax, [rbp+var_28] +000C665F: mov qword ptr [rax], 0 +000C6666: mov rdx, [rbp+var_38] +000C666A: lea rax, [rbp+var_19] +000C666E: mov rsi, rdx +000C6671: mov rdi, rax +000C6674: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E; std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocator ()(SerialPort*)>>>(std::allocator ()(SerialPort*)>>> const&) +000C6679: lea rax, [rbp+var_19] +000C667D: mov esi, 1 +000C6682: mov rdi, rax +000C6685: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m; std::allocator_traits ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>>::allocate(std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>&,ulong) +000C668A: mov [rbp+var_18], rax +000C668E: mov rax, [rbp+var_40] +000C6692: mov rdi, rax +000C6695: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C669A: mov rbx, rax +000C669D: mov rax, [rbp+var_38] +000C66A1: mov rdi, rax +000C66A4: call __ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move ()(SerialPort*)>>> const&>(std::allocator ()(SerialPort*)>>> const&&&) +000C66A9: mov rdx, rax +000C66AC: mov rsi, [rbp+var_18] +000C66B0: lea rax, [rbp+var_19] +000C66B4: mov rcx, rbx +000C66B7: mov rdi, rax +000C66BA: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000C66BF: mov rax, [rbp+var_28] +000C66C3: mov rdx, [rbp+var_18] +000C66C7: mov [rax], rdx +000C66CA: lea rax, [rbp+var_19] +000C66CE: mov rdi, rax +000C66D1: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000C66D6: jmp short loc_C6721 +000C66D8: mov rdi, rax; void * +000C66DB: call ___cxa_begin_catch +000C66E0: mov rcx, [rbp+var_18] +000C66E4: lea rax, [rbp+var_19] +000C66E8: mov edx, 1 +000C66ED: mov rsi, rcx +000C66F0: mov rdi, rax +000C66F3: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m; std::allocator_traits ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>>::deallocate(std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000C66F8: call ___cxa_rethrow +000C66FD: mov rbx, rax +000C6700: call ___cxa_end_catch +000C6705: jmp short loc_C670A +000C6707: mov rbx, rax +000C670A: lea rax, [rbp+var_19] +000C670E: mov rdi, rax +000C6711: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000C6716: mov rax, rbx +000C6719: mov rdi, rax; struct _Unwind_Exception * +000C671C: call __Unwind_Resume +000C6721: add rsp, 38h +000C6725: pop rbx +000C6726: pop rbp +000C6727: retn + +### FUNC 000C6728 - 000C6746 (30 bytes) name=_ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000C6728: push rbp; Alternative name is 'std::allocator ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>>::allocator ()(SerialPort*)>>>(std::allocator ()(SerialPort*)>>> const&)' +000C6729: mov rbp, rsp +000C672C: sub rsp, 10h +000C6730: mov [rbp+var_8], rdi +000C6734: mov [rbp+var_10], rsi +000C6738: mov rax, [rbp+var_8] +000C673C: mov rdi, rax +000C673F: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::new_allocator(void) +000C6744: leave +000C6745: retn + +### FUNC 000C6746 - 000C6760 (26 bytes) name=_ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +000C6746: push rbp; Alternative name is 'std::allocator ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>>::~allocator()' +000C6747: mov rbp, rsp +000C674A: sub rsp, 10h +000C674E: mov [rbp+var_8], rdi +000C6752: mov rax, [rbp+var_8] +000C6756: mov rdi, rax +000C6759: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::~new_allocator() +000C675E: leave +000C675F: retn + +### FUNC 000C6760 - 000C678A (42 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000C6760: push rbp +000C6761: mov rbp, rsp +000C6764: sub rsp, 10h +000C6768: mov [rbp+var_8], rdi +000C676C: mov [rbp+var_10], rsi +000C6770: mov rcx, [rbp+var_10] +000C6774: mov rax, [rbp+var_8] +000C6778: mov edx, 0 +000C677D: mov rsi, rcx +000C6780: mov rdi, rax +000C6783: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocate(ulong,void const*) +000C6788: leave +000C6789: retn + +### FUNC 000C678A - 000C67DB (81 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000C678A: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_IKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_' +000C678B: mov rbp, rsp +000C678E: push rbx +000C678F: sub rsp, 28h +000C6793: mov [rbp+var_18], rdi +000C6797: mov [rbp+var_20], rsi +000C679B: mov [rbp+var_28], rdx +000C679F: mov [rbp+var_30], rcx +000C67A3: mov rax, [rbp+var_30] +000C67A7: mov rdi, rax +000C67AA: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C67AF: mov rbx, rax +000C67B2: mov rax, [rbp+var_28] +000C67B6: mov rdi, rax +000C67B9: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(SerialPort*)>>> const>(std::remove_reference ()(SerialPort*)>>> const>::type &) +000C67BE: mov rdx, rax +000C67C1: mov rsi, [rbp+var_20] +000C67C5: mov rax, [rbp+var_18] +000C67C9: mov rcx, rbx +000C67CC: mov rdi, rax +000C67CF: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_; std::allocator_traits ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>>::_S_construct ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>,std::allocator ()(SerialPort*)>>> const,std::_Bind_simple ()(SerialPort*)>>(std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>*,std::allocator ()(SerialPort*)>>> const,std::_Bind_simple ()(SerialPort*)>&&) +000C67D4: add rsp, 28h +000C67D8: pop rbx +000C67D9: pop rbp +000C67DA: retn + +### FUNC 000C67DB - 000C6808 (45 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +000C67DB: push rbp +000C67DC: mov rbp, rsp +000C67DF: sub rsp, 20h +000C67E3: mov [rbp+var_8], rdi +000C67E7: mov [rbp+var_10], rsi +000C67EB: mov [rbp+var_18], rdx +000C67EF: mov rdx, [rbp+var_18] +000C67F3: mov rcx, [rbp+var_10] +000C67F7: mov rax, [rbp+var_8] +000C67FB: mov rsi, rcx +000C67FE: mov rdi, rax +000C6801: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::deallocate(std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000C6806: leave +000C6807: retn + +### FUNC 000C6808 - 000C6812 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +000C6808: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>>::new_allocator(void)' +000C6809: mov rbp, rsp +000C680C: mov [rbp+var_8], rdi +000C6810: pop rbp +000C6811: retn + +### FUNC 000C6812 - 000C681C (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +000C6812: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>>::~new_allocator()' +000C6813: mov rbp, rsp +000C6816: mov [rbp+var_8], rdi +000C681A: pop rbp +000C681B: retn + +### FUNC 000C681C - 000C6868 (76 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +000C681C: push rbp +000C681D: mov rbp, rsp +000C6820: sub rsp, 20h +000C6824: mov [rbp+var_8], rdi +000C6828: mov [rbp+var_10], rsi +000C682C: mov [rbp+var_18], rdx +000C6830: mov rax, [rbp+var_8] +000C6834: mov rdi, rax +000C6837: call __ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::max_size(void) +000C683C: cmp rax, [rbp+var_10] +000C6840: setb al +000C6843: test al, al +000C6845: jz short loc_C684C +000C6847: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000C684C: mov rdx, [rbp+var_10] +000C6850: mov rax, rdx +000C6853: shl rax, 3 +000C6857: add rax, rdx +000C685A: shl rax, 3 +000C685E: mov rdi, rax; unsigned __int64 +000C6861: call __Znwm; operator new(ulong) +000C6866: leave +000C6867: retn + +### FUNC 000C6868 - 000C68B9 (81 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +000C6868: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_IKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_' +000C6869: mov rbp, rsp +000C686C: push rbx +000C686D: sub rsp, 28h +000C6871: mov [rbp+var_18], rdi +000C6875: mov [rbp+var_20], rsi +000C6879: mov [rbp+var_28], rdx +000C687D: mov [rbp+var_30], rcx +000C6881: mov rax, [rbp+var_30] +000C6885: mov rdi, rax +000C6888: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C688D: mov rbx, rax +000C6890: mov rax, [rbp+var_28] +000C6894: mov rdi, rax +000C6897: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(SerialPort*)>>> const>(std::remove_reference ()(SerialPort*)>>> const>::type &) +000C689C: mov rdx, rax +000C689F: mov rsi, [rbp+var_20] +000C68A3: mov rax, [rbp+var_18] +000C68A7: mov rcx, rbx +000C68AA: mov rdi, rax +000C68AD: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::construct ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>,std::allocator ()(SerialPort*)>>> const,std::_Bind_simple ()(SerialPort*)>>(std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2> *,std::allocator ()(SerialPort*)>>> const,std::_Bind_simple ()(SerialPort*)> &&) +000C68B2: add rsp, 28h +000C68B6: pop rbx +000C68B7: pop rbp +000C68B8: retn + +### FUNC 000C68BA - 000C68DC (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +000C68BA: push rbp +000C68BB: mov rbp, rsp +000C68BE: sub rsp, 20h +000C68C2: mov [rbp+var_8], rdi +000C68C6: mov [rbp+var_10], rsi +000C68CA: mov [rbp+var_18], rdx +000C68CE: mov rax, [rbp+var_10] +000C68D2: mov rdi, rax; void * +000C68D5: call __ZdlPv; operator delete(void *) +000C68DA: leave +000C68DB: retn + +### FUNC 000C68DC - 000C68F0 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +000C68DC: push rbp +000C68DD: mov rbp, rsp +000C68E0: mov [rbp+var_8], rdi +000C68E4: mov rax, 38E38E38E38E38Eh +000C68EE: pop rbp +000C68EF: retn + +### FUNC 000C68F0 - 000C69AA (186 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +000C68F0: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_IKSE_SC_EEEvPT_DpOT0_' +000C68F1: mov rbp, rsp +000C68F4: push r14 +000C68F6: push r13 +000C68F8: push r12 +000C68FA: push rbx +000C68FB: sub rsp, 30h +000C68FF: mov [rbp+var_38], rdi +000C6903: mov [rbp+var_40], rsi +000C6907: mov [rbp+var_48], rdx +000C690B: mov [rbp+var_50], rcx +000C690F: mov rax, [rbp+var_48] +000C6913: mov rdi, rax +000C6916: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(SerialPort*)>>> const>(std::remove_reference ()(SerialPort*)>>> const>::type &) +000C691B: mov rdx, rax +000C691E: lea rax, [rbp+var_21] +000C6922: mov rsi, rdx +000C6925: mov rdi, rax +000C6928: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB__0; std::allocator ()(SerialPort*)>>>::allocator(std::allocator ()(SerialPort*)>>> const&) +000C692D: lea r13, [rbp+var_21] +000C6931: mov rax, [rbp+var_50] +000C6935: mov rdi, rax +000C6938: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C693D: mov r14, rax +000C6940: mov r12, [rbp+var_40] +000C6944: mov rsi, r12; void * +000C6947: mov edi, 48h ; 'H'; unsigned __int64 +000C694C: call __ZnwmPv; operator new(ulong,void *) +000C6951: mov rbx, rax +000C6954: test rbx, rbx +000C6957: jz short loc_C6967 +000C6959: mov rdx, r14 +000C695C: mov rsi, r13 +000C695F: mov rdi, rbx +000C6962: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_; std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace ()(SerialPort*)>>(std::allocator ()(SerialPort*)>>>,std::_Bind_simple ()(SerialPort*)> &&) +000C6967: lea rax, [rbp+var_21] +000C696B: mov rdi, rax +000C696E: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev; std::allocator ()(SerialPort*)>>>::~allocator() +000C6973: jmp short loc_C699D +000C6975: mov r13, rax +000C6978: mov rsi, r12; void * +000C697B: mov rdi, rbx; void * +000C697E: call __ZdlPvS_; operator delete(void *,void *) +000C6983: mov rbx, r13 +000C6986: lea rax, [rbp+var_21] +000C698A: mov rdi, rax +000C698D: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev; std::allocator ()(SerialPort*)>>>::~allocator() +000C6992: mov rax, rbx +000C6995: mov rdi, rax; struct _Unwind_Exception * +000C6998: call __Unwind_Resume +000C699D: add rsp, 30h +000C69A1: pop rbx +000C69A2: pop r12 +000C69A4: pop r13 +000C69A6: pop r14 +000C69A8: pop rbp +000C69A9: retn + +### FUNC 000C69AA - 000C69CF (37 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB_ +000C69AA: push rbp; Alternative name is 'std::allocator ()(SerialPort*)>>>::allocator(std::allocator ()(SerialPort*)>>> const&)' +000C69AB: mov rbp, rsp +000C69AE: sub rsp, 10h +000C69B2: mov [rbp+var_8], rdi +000C69B6: mov [rbp+var_10], rsi +000C69BA: mov rdx, [rbp+var_10] +000C69BE: mov rax, [rbp+var_8] +000C69C2: mov rsi, rdx +000C69C5: mov rdi, rax +000C69C8: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2ERKSD_; __gnu_cxx::new_allocator ()(SerialPort*)>>>::new_allocator(__gnu_cxx::new_allocator ()(SerialPort*)>>> const&) +000C69CD: leave +000C69CE: retn + +### FUNC 000C69D0 - 000C69EA (26 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +000C69D0: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl()' +000C69D1: mov rbp, rsp +000C69D4: sub rsp, 10h +000C69D8: mov [rbp+var_8], rdi +000C69DC: mov rax, [rbp+var_8] +000C69E0: mov rdi, rax +000C69E3: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev_0; std::allocator ()(SerialPort*)>>>::~allocator() +000C69E8: leave +000C69E9: retn + +### FUNC 000C69EA - 000C6ACD (227 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000C69EA: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace ()(SerialPort*)>>(std::allocator ()(SerialPort*)>>>, std::_Bind_simple ()(SerialPort*)> &&)' +000C69EB: mov rbp, rsp +000C69EE: push rbx +000C69EF: sub rsp, 38h +000C69F3: mov [rbp+var_28], rdi +000C69F7: mov [rbp+var_30], rsi +000C69FB: mov [rbp+var_38], rdx +000C69FF: mov rax, [rbp+var_28] +000C6A03: mov rdi, rax +000C6A06: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_Sp_counted_base(void) +000C6A0B: mov rax, [rbp+var_28] +000C6A0F: mov rdx, cs:_ZTVSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE_ptr +000C6A16: lea rdx, [rdx+10h] +000C6A1A: mov [rax], rdx +000C6A1D: mov rdx, [rbp+var_30] +000C6A21: lea rax, [rbp+var_11] +000C6A25: mov rsi, rdx +000C6A28: mov rdi, rax +000C6A2B: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB__0; std::allocator ()(SerialPort*)>>>::allocator(std::allocator ()(SerialPort*)>>> const&) +000C6A30: mov rax, [rbp+var_28] +000C6A34: lea rdx, [rax+10h] +000C6A38: lea rax, [rbp+var_11] +000C6A3C: mov rsi, rax +000C6A3F: mov rdi, rdx +000C6A42: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_; std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::_Impl(std::allocator ()(SerialPort*)>>>) +000C6A47: lea rax, [rbp+var_11] +000C6A4B: mov rdi, rax +000C6A4E: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev; std::allocator ()(SerialPort*)>>>::~allocator() +000C6A53: mov rax, [rbp+var_28] +000C6A57: lea rdx, [rax+18h] +000C6A5B: mov rax, [rbp+var_28] +000C6A5F: mov [rax+10h], rdx +000C6A63: mov rax, [rbp+var_38] +000C6A67: mov rdi, rax +000C6A6A: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6A6F: mov rdx, rax +000C6A72: mov rax, [rbp+var_28] +000C6A76: mov rcx, [rax+10h] +000C6A7A: mov rax, [rbp+var_30] +000C6A7E: mov rsi, rcx +000C6A81: mov rdi, rax +000C6A84: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000C6A89: jmp short loc_C6AC6 +000C6A8B: mov rbx, rax +000C6A8E: lea rax, [rbp+var_11] +000C6A92: mov rdi, rax +000C6A95: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEED2Ev; std::allocator ()(SerialPort*)>>>::~allocator() +000C6A9A: jmp short loc_C6AAF +000C6A9C: mov rbx, rax +000C6A9F: mov rax, [rbp+var_28] +000C6AA3: add rax, 10h +000C6AA7: mov rdi, rax +000C6AAA: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev; std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl() +000C6AAF: mov rax, [rbp+var_28] +000C6AB3: mov rdi, rax +000C6AB6: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000C6ABB: mov rax, rbx +000C6ABE: mov rdi, rax; struct _Unwind_Exception * +000C6AC1: call __Unwind_Resume +000C6AC6: add rsp, 38h +000C6ACA: pop rbx +000C6ACB: pop rbp +000C6ACC: retn + +### FUNC 000C6ACE - 000C6ADC (14 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEEC2ERKSD_ +000C6ACE: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(SerialPort*)>>>::new_allocator(__gnu_cxx::new_allocator ()(SerialPort*)>>> const&)' +000C6ACF: mov rbp, rsp +000C6AD2: mov [rbp+var_8], rdi +000C6AD6: mov [rbp+var_10], rsi +000C6ADA: pop rbp +000C6ADB: retn + +### FUNC 000C6ADC - 000C6B0C (48 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +000C6ADC: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>::_Impl::_Impl(std::allocator ()(SerialPort*)>>>)' +000C6ADD: mov rbp, rsp +000C6AE0: sub rsp, 10h +000C6AE4: mov [rbp+var_8], rdi +000C6AE8: mov [rbp+var_10], rsi +000C6AEC: mov rdx, [rbp+var_10] +000C6AF0: mov rax, [rbp+var_8] +000C6AF4: mov rsi, rdx +000C6AF7: mov rdi, rax +000C6AFA: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEEEC2ERKSB_; std::allocator ()(SerialPort*)>>>::allocator(std::allocator ()(SerialPort*)>>> const&) +000C6AFF: mov rax, [rbp+var_8] +000C6B03: mov qword ptr [rax], 0 +000C6B0A: leave +000C6B0B: retn + +### FUNC 000C6B0C - 000C6B44 (56 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000C6B0C: push rbp; Alternative name is '_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE9constructISB_ISA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_' +000C6B0D: mov rbp, rsp +000C6B10: sub rsp, 20h +000C6B14: mov [rbp+var_8], rdi +000C6B18: mov [rbp+var_10], rsi +000C6B1C: mov [rbp+var_18], rdx +000C6B20: mov rax, [rbp+var_18] +000C6B24: mov rdi, rax +000C6B27: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6B2C: mov rdx, rax +000C6B2F: mov rcx, [rbp+var_10] +000C6B33: mov rax, [rbp+var_8] +000C6B37: mov rsi, rcx +000C6B3A: mov rdi, rax +000C6B3D: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_; std::allocator_traits ()(SerialPort*)>>>>::_S_construct ()(SerialPort*)>>,std::_Bind_simple ()(SerialPort*)>>(std::allocator ()(SerialPort*)>>>&,std::thread::_Impl ()(SerialPort*)>>*,std::_Bind_simple ()(SerialPort*)>&&) +000C6B42: leave +000C6B43: retn + +### FUNC 000C6B44 - 000C6B7C (56 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +000C6B44: push rbp; Alternative name is '_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE12_S_constructISB_ISA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_' +000C6B45: mov rbp, rsp +000C6B48: sub rsp, 20h +000C6B4C: mov [rbp+var_8], rdi +000C6B50: mov [rbp+var_10], rsi +000C6B54: mov [rbp+var_18], rdx +000C6B58: mov rax, [rbp+var_18] +000C6B5C: mov rdi, rax +000C6B5F: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6B64: mov rdx, rax +000C6B67: mov rcx, [rbp+var_10] +000C6B6B: mov rax, [rbp+var_8] +000C6B6F: mov rsi, rcx +000C6B72: mov rdi, rax +000C6B75: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_; __gnu_cxx::new_allocator ()(SerialPort*)>>>::construct ()(SerialPort*)>>,std::_Bind_simple ()(SerialPort*)>>(std::thread::_Impl ()(SerialPort*)>> *,std::_Bind_simple ()(SerialPort*)> &&) +000C6B7A: leave +000C6B7B: retn + +### FUNC 000C6B7C - 000C6BF0 (116 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000C6B7C: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE9constructISC_ISB_EEEvPT_DpOT0_' +000C6B7D: mov rbp, rsp +000C6B80: push r13 +000C6B82: push r12 +000C6B84: push rbx +000C6B85: sub rsp, 28h +000C6B89: mov [rbp+var_28], rdi +000C6B8D: mov [rbp+var_30], rsi +000C6B91: mov [rbp+var_38], rdx +000C6B95: mov rax, [rbp+var_38] +000C6B99: mov rdi, rax +000C6B9C: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6BA1: mov r13, rax +000C6BA4: mov r12, [rbp+var_30] +000C6BA8: mov rsi, r12; void * +000C6BAB: mov edi, 30h ; '0'; unsigned __int64 +000C6BB0: call __ZnwmPv; operator new(ulong,void *) +000C6BB5: mov rbx, rax +000C6BB8: test rbx, rbx +000C6BBB: jz short loc_C6BCA +000C6BBD: mov rsi, r13 +000C6BC0: mov rdi, rbx +000C6BC3: call __ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEC2EOS9_; std::thread::_Impl ()(SerialPort*)>>::_Impl(std::_Bind_simple ()(SerialPort*)>&&) +000C6BC8: jmp short loc_C6BE5 +000C6BCA: jmp short loc_C6BE5 +000C6BCC: mov r13, rax +000C6BCF: mov rsi, r12; void * +000C6BD2: mov rdi, rbx; void * +000C6BD5: call __ZdlPvS_; operator delete(void *,void *) +000C6BDA: mov rax, r13 +000C6BDD: mov rdi, rax; struct _Unwind_Exception * +000C6BE0: call __Unwind_Resume +000C6BE5: add rsp, 28h +000C6BE9: pop rbx +000C6BEA: pop r12 +000C6BEC: pop r13 +000C6BEE: pop rbp +000C6BEF: retn + +### FUNC 000C6BF0 - 000C6C3F (79 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEC2EOS9_ +000C6BF0: push rbp; Alternative name is 'std::thread::_Impl ()(SerialPort*)>>::_Impl(std::_Bind_simple ()(SerialPort*)>&&)' +000C6BF1: mov rbp, rsp +000C6BF4: sub rsp, 10h +000C6BF8: mov [rbp+var_8], rdi +000C6BFC: mov [rbp+var_10], rsi +000C6C00: mov rax, [rbp+var_8] +000C6C04: mov rdi, rax; this +000C6C07: call __ZNSt6thread10_Impl_baseC2Ev; std::thread::_Impl_base::_Impl_base(void) +000C6C0C: mov rax, [rbp+var_8] +000C6C10: mov rdx, cs:_ZTVNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEE_ptr +000C6C17: lea rdx, [rdx+10h] +000C6C1B: mov [rax], rdx +000C6C1E: mov rax, [rbp+var_10] +000C6C22: mov rdi, rax +000C6C25: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(SerialPort*)>>(std::remove_reference ()(SerialPort*)>>::type &) +000C6C2A: mov rdx, [rbp+var_8] +000C6C2E: add rdx, 18h +000C6C32: mov rsi, rax +000C6C35: mov rdi, rdx +000C6C38: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEC2EOS7_; std::_Bind_simple ()(SerialPort*)>::_Bind_simple(std::_Bind_simple ()(SerialPort*)>&&) +000C6C3D: leave +000C6C3E: retn + +### FUNC 000C6C40 - 000C6C81 (65 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED2Ev +000C6C40: push rbp; Alternative name is 'std::thread::_Impl ()(SerialPort*)>>::~_Impl()' +000C6C41: mov rbp, rsp +000C6C44: sub rsp, 10h +000C6C48: mov [rbp+var_8], rdi +000C6C4C: mov rax, [rbp+var_8] +000C6C50: mov rdx, cs:_ZTVNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEEE_ptr +000C6C57: lea rdx, [rdx+10h] +000C6C5B: mov [rax], rdx +000C6C5E: mov rax, [rbp+var_8] +000C6C62: mov rdi, rax; this +000C6C65: call __ZNSt6thread10_Impl_baseD2Ev_0; std::thread::_Impl_base::~_Impl_base() +000C6C6A: mov eax, 0 +000C6C6F: test eax, eax +000C6C71: jz short locret_C6C7F +000C6C73: mov rax, [rbp+var_8] +000C6C77: mov rdi, rax; void * +000C6C7A: call __ZdlPv; operator delete(void *) +000C6C7F: leave +000C6C80: retn + +### FUNC 000C6C82 - 000C6CA8 (38 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED0Ev +000C6C82: push rbp +000C6C83: mov rbp, rsp +000C6C86: sub rsp, 10h +000C6C8A: mov [rbp+var_8], rdi +000C6C8E: mov rax, [rbp+var_8] +000C6C92: mov rdi, rax +000C6C95: call __ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEED2Ev; std::thread::_Impl ()(SerialPort*)>>::~_Impl() +000C6C9A: mov rax, [rbp+var_8] +000C6C9E: mov rdi, rax; void * +000C6CA1: call __ZdlPv; operator delete(void *) +000C6CA6: leave +000C6CA7: retn + +### FUNC 000C6CA8 - 000C6CF9 (81 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000C6CA8: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(SerialPort*)>>, std::allocator ()(SerialPort*)>>>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()' +000C6CA9: mov rbp, rsp +000C6CAC: sub rsp, 10h +000C6CB0: mov [rbp+var_8], rdi +000C6CB4: mov rax, [rbp+var_8] +000C6CB8: mov rdx, cs:_ZTVSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE_ptr +000C6CBF: lea rdx, [rdx+10h] +000C6CC3: mov [rax], rdx +000C6CC6: mov rax, [rbp+var_8] +000C6CCA: add rax, 10h +000C6CCE: mov rdi, rax +000C6CD1: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev; std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl() +000C6CD6: mov rax, [rbp+var_8] +000C6CDA: mov rdi, rax +000C6CDD: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000C6CE2: mov eax, 0 +000C6CE7: test eax, eax +000C6CE9: jz short locret_C6CF7 +000C6CEB: mov rax, [rbp+var_8] +000C6CEF: mov rdi, rax; void * +000C6CF2: call __ZdlPv; operator delete(void *) +000C6CF7: leave +000C6CF8: retn + +### FUNC 000C6CFA - 000C6D20 (38 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED0Ev +000C6CFA: push rbp +000C6CFB: mov rbp, rsp +000C6CFE: sub rsp, 10h +000C6D02: mov [rbp+var_8], rdi +000C6D06: mov rax, [rbp+var_8] +000C6D0A: mov rdi, rax +000C6D0D: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace() +000C6D12: mov rax, [rbp+var_8] +000C6D16: mov rdi, rax; void * +000C6D19: call __ZdlPv; operator delete(void *) +000C6D1E: leave +000C6D1F: retn + +### FUNC 000C6D20 - 000C6D49 (41 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv +000C6D20: push rbp +000C6D21: mov rbp, rsp +000C6D24: sub rsp, 10h +000C6D28: mov [rbp+var_8], rdi +000C6D2C: mov rax, [rbp+var_8] +000C6D30: mov rax, [rax+10h] +000C6D34: mov rdx, [rbp+var_8] +000C6D38: add rdx, 10h +000C6D3C: mov rsi, rax +000C6D3F: mov rdi, rdx +000C6D42: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_; std::allocator_traits ()(SerialPort*)>>>>::destroy ()(SerialPort*)>>>(std::allocator ()(SerialPort*)>>>&,std::thread::_Impl ()(SerialPort*)>> *) +000C6D47: leave +000C6D48: retn + +### FUNC 000C6D4A - 000C6DA6 (92 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000C6D4A: push rbp +000C6D4B: mov rbp, rsp +000C6D4E: sub rsp, 20h +000C6D52: mov [rbp+var_18], rdi +000C6D56: mov rax, [rbp+var_18] +000C6D5A: lea rdx, [rax+10h] +000C6D5E: lea rax, [rbp+var_1] +000C6D62: mov rsi, rdx +000C6D65: mov rdi, rax +000C6D68: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E; std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocator ()(SerialPort*)>>>(std::allocator ()(SerialPort*)>>> const&) +000C6D6D: mov rdx, [rbp+var_18] +000C6D71: lea rax, [rbp+var_1] +000C6D75: mov rsi, rdx +000C6D78: mov rdi, rax +000C6D7B: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_; std::allocator_traits ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>>::destroy ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2> *) +000C6D80: mov rcx, [rbp+var_18] +000C6D84: lea rax, [rbp+var_1] +000C6D88: mov edx, 1 +000C6D8D: mov rsi, rcx +000C6D90: mov rdi, rax +000C6D93: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m; std::allocator_traits ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>>::deallocate(std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000C6D98: lea rax, [rbp+var_1] +000C6D9C: mov rdi, rax +000C6D9F: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000C6DA4: leave +000C6DA5: retn + +### FUNC 000C6DA6 - 000C6DE1 (59 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000C6DA6: push rbp +000C6DA7: mov rbp, rsp +000C6DAA: sub rsp, 10h +000C6DAE: mov [rbp+var_8], rdi +000C6DB2: mov [rbp+var_10], rsi +000C6DB6: mov rax, [rbp+var_10] +000C6DBA: mov rdx, cs:_ZTISt19_Sp_make_shared_tag_ptr +000C6DC1: mov rsi, rdx +000C6DC4: mov rdi, rax +000C6DC7: call __ZNKSt9type_infoeqERKS_; std::type_info::operator==(std::type_info const&) +000C6DCC: test al, al +000C6DCE: jz short loc_C6DDA +000C6DD0: mov rax, [rbp+var_8] +000C6DD4: add rax, 18h +000C6DD8: jmp short locret_C6DDF +000C6DDA: mov eax, 0 +000C6DDF: leave +000C6DE0: retn + +### FUNC 000C6DE2 - 000C6E00 (30 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS3_EEE6_M_runEv +000C6DE2: push rbp +000C6DE3: mov rbp, rsp +000C6DE6: sub rsp, 10h +000C6DEA: mov [rbp+var_8], rdi +000C6DEE: mov rax, [rbp+var_8] +000C6DF2: add rax, 18h +000C6DF6: mov rdi, rax +000C6DF9: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEclEv; std::_Bind_simple ()(SerialPort*)>::operator()(void) +000C6DFE: leave +000C6DFF: retn + +### FUNC 000C6E00 - 000C6E25 (37 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +000C6E00: push rbp +000C6E01: mov rbp, rsp +000C6E04: sub rsp, 10h +000C6E08: mov [rbp+var_8], rdi +000C6E0C: mov [rbp+var_10], rsi +000C6E10: mov rdx, [rbp+var_10] +000C6E14: mov rax, [rbp+var_8] +000C6E18: mov rsi, rdx +000C6E1B: mov rdi, rax +000C6E1E: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_; std::allocator_traits ()(SerialPort*)>>>>::_S_destroy ()(SerialPort*)>>>(std::allocator ()(SerialPort*)>>>&,std::thread::_Impl ()(SerialPort*)>>*) +000C6E23: leave +000C6E24: retn + +### FUNC 000C6E25 - 000C6E4A (37 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000C6E25: push rbp +000C6E26: mov rbp, rsp +000C6E29: sub rsp, 10h +000C6E2D: mov [rbp+var_8], rdi +000C6E31: mov [rbp+var_10], rsi +000C6E35: mov rdx, [rbp+var_10] +000C6E39: mov rax, [rbp+var_8] +000C6E3D: mov rsi, rdx +000C6E40: mov rdi, rax +000C6E43: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_; std::allocator_traits ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>>::_S_destroy ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>*) +000C6E48: leave +000C6E49: retn + +### FUNC 000C6E4A - 000C6E67 (29 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EEclEv +000C6E4A: push rbp +000C6E4B: mov rbp, rsp +000C6E4E: sub rsp, 20h +000C6E52: mov [rbp+var_18], rdi +000C6E56: mov rax, [rbp+var_18] +000C6E5A: mov [rsp+20h+var_20], dl +000C6E5D: mov rdi, rax +000C6E60: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +000C6E65: leave +000C6E66: retn + +### FUNC 000C6E67 - 000C6E8C (37 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000C6E67: push rbp +000C6E68: mov rbp, rsp +000C6E6B: sub rsp, 10h +000C6E6F: mov [rbp+var_8], rdi +000C6E73: mov [rbp+var_10], rsi +000C6E77: mov rdx, [rbp+var_10] +000C6E7B: mov rax, [rbp+var_8] +000C6E7F: mov rsi, rdx +000C6E82: mov rdi, rax +000C6E85: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE7destroyISC_EEvPT_; __gnu_cxx::new_allocator ()(SerialPort*)>>>::destroy ()(SerialPort*)>>>(std::thread::_Impl ()(SerialPort*)>> *) +000C6E8A: leave +000C6E8B: retn + +### FUNC 000C6E8C - 000C6EB1 (37 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +000C6E8C: push rbp +000C6E8D: mov rbp, rsp +000C6E90: sub rsp, 10h +000C6E94: mov [rbp+var_8], rdi +000C6E98: mov [rbp+var_10], rsi +000C6E9C: mov rdx, [rbp+var_10] +000C6EA0: mov rax, [rbp+var_8] +000C6EA4: mov rsi, rdx +000C6EA7: mov rdi, rax +000C6EAA: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_; __gnu_cxx::new_allocator ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>::destroy ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2> *) +000C6EAF: leave +000C6EB0: retn + +### FUNC 000C6EB1 - 000C6ECB (26 bytes) name=_ZSt12__get_helperILm0ESt7_Mem_fnIM10SerialPortFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +000C6EB1: push rbp; Alternative name is 'std::__add_ref>::type std::__get_helper<0ul, std::_Mem_fn, SerialPort*>(std::_Tuple_impl<0ul, std::_Mem_fn, SerialPort*> &)' +000C6EB2: mov rbp, rsp +000C6EB5: sub rsp, 10h +000C6EB9: mov [rbp+var_8], rdi +000C6EBD: mov rax, [rbp+var_8] +000C6EC1: mov rdi, rax +000C6EC4: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EE7_M_headERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>::_M_head(std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*>&) +000C6EC9: leave +000C6ECA: retn + +### FUNC 000C6ECB - 000C6EE5 (26 bytes) name=_ZSt3getILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C6ECB: push rbp; Alternative name is 'std::__add_ref, SerialPort*>>::type>::type std::get<0ul, std::_Mem_fn, SerialPort*>(std::tuple, SerialPort*>&)' +000C6ECC: mov rbp, rsp +000C6ECF: sub rsp, 10h +000C6ED3: mov [rbp+var_8], rdi +000C6ED7: mov rax, [rbp+var_8] +000C6EDB: mov rdi, rax +000C6EDE: call __ZSt12__get_helperILm0ESt7_Mem_fnIM10SerialPortFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE; std::__get_helper<0ul,std::_Mem_fn,SerialPort*>(std::_Tuple_impl<0ul,std::_Mem_fn,SerialPort*> &) +000C6EE3: leave +000C6EE4: retn + +### FUNC 000C6EE5 - 000C6EFF (26 bytes) name=_ZSt12__get_helperILm1EP10SerialPortJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000C6EE5: push rbp; Alternative name is '_ZSt12__get_helperILm1EP10SerialPortIEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EIS3_DpT1_EE' +000C6EE6: mov rbp, rsp +000C6EE9: sub rsp, 10h +000C6EED: mov [rbp+var_8], rdi +000C6EF1: mov rax, [rbp+var_8] +000C6EF5: mov rdi, rax +000C6EF8: call __ZNSt11_Tuple_implILm1EJP10SerialPortEE7_M_headERS2_; std::_Tuple_impl<1ul,SerialPort *>::_M_head(std::_Tuple_impl<1ul,SerialPort *>&) +000C6EFD: leave +000C6EFE: retn + +### FUNC 000C6EFF - 000C6F19 (26 bytes) name=_ZSt3getILm1EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000C6EFF: push rbp; Alternative name is 'std::__add_ref, SerialPort*>>::type>::type std::get<1ul, std::_Mem_fn, SerialPort*>(std::tuple, SerialPort*>&)' +000C6F00: mov rbp, rsp +000C6F03: sub rsp, 10h +000C6F07: mov [rbp+var_8], rdi +000C6F0B: mov rax, [rbp+var_8] +000C6F0F: mov rdi, rax +000C6F12: call __ZSt12__get_helperILm1EP10SerialPortJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000C6F17: leave +000C6F18: retn + +### FUNC 000C6F1A - 000C6F64 (74 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +000C6F1A: push rbp; Alternative name is '_ZNSt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS1_EE9_M_invokeIILm0EEEEvSt12_Index_tupleIIXspT_EEE' +000C6F1B: mov rbp, rsp +000C6F1E: push rbx +000C6F1F: sub rsp, 18h +000C6F23: mov [rbp+var_18], rdi +000C6F27: mov rax, [rbp+var_18] +000C6F2B: mov rdi, rax +000C6F2E: call __ZSt3getILm1EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_; std::get<1ul,std::_Mem_fn,SerialPort*>(std::tuple,SerialPort*>&) +000C6F33: mov rdi, rax +000C6F36: call __ZSt7forwardIP10SerialPortEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000C6F3B: mov rbx, [rax] +000C6F3E: mov rax, [rbp+var_18] +000C6F42: mov rdi, rax +000C6F45: call __ZSt3getILm0EJSt7_Mem_fnIM10SerialPortFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_; std::get<0ul,std::_Mem_fn,SerialPort*>(std::tuple,SerialPort*>&) +000C6F4A: mov rdi, rax +000C6F4D: call __ZSt7forwardISt7_Mem_fnIM10SerialPortFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000C6F52: mov rsi, rbx +000C6F55: mov rdi, rax +000C6F58: call __ZNKSt7_Mem_fnIM10SerialPortFvvEEclIJEvEEvPS0_DpOT_ +000C6F5D: add rsp, 18h +000C6F61: pop rbx +000C6F62: pop rbp +000C6F63: retn + +### FUNC 000C6F64 - 000C6F89 (37 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS5_EEEEE7destroyISC_EEvPT_ +000C6F64: push rbp +000C6F65: mov rbp, rsp +000C6F68: sub rsp, 10h +000C6F6C: mov [rbp+var_8], rdi +000C6F70: mov [rbp+var_10], rsi +000C6F74: mov rax, [rbp+var_10] +000C6F78: mov rax, [rax] +000C6F7B: mov rax, [rax] +000C6F7E: mov rdx, [rbp+var_10] +000C6F82: mov rdi, rdx +000C6F85: call rax +000C6F87: leave +000C6F88: retn + +### FUNC 000C6F8A - 000C6FA8 (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +000C6F8A: push rbp +000C6F8B: mov rbp, rsp +000C6F8E: sub rsp, 10h +000C6F92: mov [rbp+var_8], rdi +000C6F96: mov [rbp+var_10], rsi +000C6F9A: mov rax, [rbp+var_10] +000C6F9E: mov rdi, rax +000C6FA1: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM10SerialPortFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_ptr_inplace ()(SerialPort*)>>,std::allocator ()(SerialPort*)>>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace() +000C6FA6: leave +000C6FA7: retn + +### FUNC 000C6FA8 - 000C700F (103 bytes) name=_ZNKSt7_Mem_fnIM10SerialPortFvvEEclIJEvEEvPS0_DpOT_ +000C6FA8: push rbp; Alternative name is '_ZNKSt7_Mem_fnIM10SerialPortFvvEEclIIEvEEvPS0_DpOT_' +000C6FA9: mov rbp, rsp +000C6FAC: sub rsp, 10h +000C6FB0: mov [rbp+var_8], rdi +000C6FB4: mov [rbp+var_10], rsi +000C6FB8: mov rax, [rbp+var_8] +000C6FBC: mov rax, [rax] +000C6FBF: and eax, 1 +000C6FC2: test rax, rax +000C6FC5: jnz short loc_C6FD0 +000C6FC7: mov rax, [rbp+var_8] +000C6FCB: mov rax, [rax] +000C6FCE: jmp short loc_C6FF6 +000C6FD0: mov rax, [rbp+var_8] +000C6FD4: mov rax, [rax+8] +000C6FD8: mov rdx, rax +000C6FDB: mov rax, [rbp+var_10] +000C6FDF: add rax, rdx +000C6FE2: mov rdx, [rax] +000C6FE5: mov rax, [rbp+var_8] +000C6FE9: mov rax, [rax] +000C6FEC: sub rax, 1 +000C6FF0: add rax, rdx +000C6FF3: mov rax, [rax] +000C6FF6: mov rdx, [rbp+var_8] +000C6FFA: mov rdx, [rdx+8] +000C6FFE: mov rcx, rdx +000C7001: mov rdx, [rbp+var_10] +000C7005: add rdx, rcx +000C7008: mov rdi, rdx +000C700B: call rax +000C700D: leave +000C700E: retn + +### FUNC 000C7010 - 000C70B5 (165 bytes) name=_ZN6serial6SerialC2ERKSsjNS_7TimeoutENS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +000C7010: push rbp; Alternative name is 'serial::Serial::Serial(std::string const&, unsigned int, serial::Timeout, serial::bytesize_t, serial::parity_t, serial::stopbits_t, serial::flowcontrol_t)' +000C7011: mov rbp, rsp +000C7014: push r12 +000C7016: push rbx +000C7017: sub rsp, 30h +000C701B: mov [rbp+var_18], rdi +000C701F: mov [rbp+var_20], rsi +000C7023: mov [rbp+var_24], edx +000C7026: mov [rbp+var_28], ecx +000C7029: mov [rbp+var_2C], r8d +000C702D: mov [rbp+var_30], r9d +000C7031: mov rax, [rbp+var_18] +000C7035: mov rdx, cs:_ZTVN6serial6SerialE_ptr +000C703C: lea rdx, [rdx+10h] +000C7040: mov [rax], rdx +000C7043: mov edi, 0A0h; unsigned __int64 +000C7048: call __Znwm; operator new(ulong) +000C704D: mov rbx, rax +000C7050: mov edx, [rbp+var_24] +000C7053: mov r8d, [rbp+var_30] +000C7057: mov edi, [rbp+var_2C] +000C705A: mov ecx, [rbp+var_28] +000C705D: mov rax, [rbp+var_20] +000C7061: mov esi, [rbp+arg_18] +000C7064: mov [rsp+40h+var_40], esi +000C7067: mov r9d, r8d +000C706A: mov r8d, edi +000C706D: mov rsi, rax +000C7070: mov rdi, rbx +000C7073: call __ZN6serial6Serial10SerialImplC2ERKSsmNS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE; serial::Serial::SerialImpl::SerialImpl(std::string const&,ulong,serial::bytesize_t,serial::parity_t,serial::stopbits_t,serial::flowcontrol_t) +000C7078: mov rax, [rbp+var_18] +000C707C: mov [rax+8], rbx +000C7080: mov rax, [rbp+var_18] +000C7084: mov rax, [rax+8] +000C7088: lea rsi, [rbp+arg_0]; serial::Timeout * +000C708C: mov rdi, rax; this +000C708F: call __ZN6serial6Serial10SerialImpl10setTimeoutERNS_7TimeoutE; serial::Serial::SerialImpl::setTimeout(serial::Timeout &) +000C7094: jmp short loc_C70AC +000C7096: mov r12, rax +000C7099: mov rdi, rbx; void * +000C709C: call __ZdlPv; operator delete(void *) +000C70A1: mov rax, r12 +000C70A4: mov rdi, rax; struct _Unwind_Exception * +000C70A7: call __Unwind_Resume +000C70AC: add rsp, 30h +000C70B0: pop rbx +000C70B1: pop r12 +000C70B3: pop rbp +000C70B4: retn + +### FUNC 000C70B6 - 000C7117 (97 bytes) name=_ZN6serial6SerialD2Ev +000C70B6: push rbp; Alternative name is 'serial::Serial::~Serial()' +000C70B7: mov rbp, rsp +000C70BA: sub rsp, 10h +000C70BE: mov [rbp+var_8], rdi +000C70C2: mov rax, [rbp+var_8] +000C70C6: mov rdx, cs:_ZTVN6serial6SerialE_ptr +000C70CD: lea rdx, [rdx+10h] +000C70D1: mov [rax], rdx +000C70D4: mov rax, [rbp+var_8] +000C70D8: mov rax, [rax+8] +000C70DC: test rax, rax +000C70DF: jz short loc_C7100 +000C70E1: mov rax, [rbp+var_8] +000C70E5: mov rax, [rax+8] +000C70E9: mov rax, [rax] +000C70EC: add rax, 8 +000C70F0: mov rax, [rax] +000C70F3: mov rdx, [rbp+var_8] +000C70F7: mov rdx, [rdx+8] +000C70FB: mov rdi, rdx +000C70FE: call rax +000C7100: mov eax, 0 +000C7105: test eax, eax +000C7107: jz short locret_C7115 +000C7109: mov rax, [rbp+var_8] +000C710D: mov rdi, rax; void * +000C7110: call __ZdlPv; operator delete(void *) +000C7115: leave +000C7116: retn + +### FUNC 000C7118 - 000C713E (38 bytes) name=_ZN6serial6SerialD0Ev +000C7118: push rbp +000C7119: mov rbp, rsp +000C711C: sub rsp, 10h +000C7120: mov [rbp+var_8], rdi +000C7124: mov rax, [rbp+var_8] +000C7128: mov rdi, rax; this +000C712B: call __ZN6serial6SerialD2Ev; serial::Serial::~Serial() +000C7130: mov rax, [rbp+var_8] +000C7134: mov rdi, rax; void * +000C7137: call __ZdlPv; operator delete(void *) +000C713C: leave +000C713D: retn + +### FUNC 000C713E - 000C715C (30 bytes) name=_ZN6serial6Serial4openEv +000C713E: push rbp +000C713F: mov rbp, rsp +000C7142: sub rsp, 10h +000C7146: mov [rbp+var_8], rdi +000C714A: mov rax, [rbp+var_8] +000C714E: mov rax, [rax+8] +000C7152: mov rdi, rax; this +000C7155: call __ZN6serial6Serial10SerialImpl4openEv; serial::Serial::SerialImpl::open(void) +000C715A: leave +000C715B: retn + +### FUNC 000C715C - 000C717A (30 bytes) name=_ZN6serial6Serial5closeEv +000C715C: push rbp +000C715D: mov rbp, rsp +000C7160: sub rsp, 10h +000C7164: mov [rbp+var_8], rdi +000C7168: mov rax, [rbp+var_8] +000C716C: mov rax, [rax+8] +000C7170: mov rdi, rax; this +000C7173: call __ZN6serial6Serial10SerialImpl5closeEv; serial::Serial::SerialImpl::close(void) +000C7178: leave +000C7179: retn + +### FUNC 000C717A - 000C7198 (30 bytes) name=_ZNK6serial6Serial6isOpenEv +000C717A: push rbp +000C717B: mov rbp, rsp +000C717E: sub rsp, 10h +000C7182: mov [rbp+var_8], rdi +000C7186: mov rax, [rbp+var_8] +000C718A: mov rax, [rax+8] +000C718E: mov rdi, rax; this +000C7191: call __ZNK6serial6Serial10SerialImpl6isOpenEv; serial::Serial::SerialImpl::isOpen(void) +000C7196: leave +000C7197: retn + +### FUNC 000C7198 - 000C71B6 (30 bytes) name=_ZN6serial6Serial9availableEv +000C7198: push rbp +000C7199: mov rbp, rsp +000C719C: sub rsp, 10h +000C71A0: mov [rbp+var_8], rdi +000C71A4: mov rax, [rbp+var_8] +000C71A8: mov rax, [rax+8] +000C71AC: mov rdi, rax; this +000C71AF: call __ZN6serial6Serial10SerialImpl9availableEv; serial::Serial::SerialImpl::available(void) +000C71B4: leave +000C71B5: retn + +### FUNC 000C71B6 - 000C71F0 (58 bytes) name=_ZN6serial6Serial12waitReadableEv +000C71B6: push rbp +000C71B7: mov rbp, rsp +000C71BA: sub rsp, 30h +000C71BE: mov [rbp+var_28], rdi +000C71C2: mov rax, [rbp+var_28] +000C71C6: mov rdx, [rax+8] +000C71CA: lea rax, [rbp+var_20] +000C71CE: mov rsi, rdx +000C71D1: mov rdi, rax; this +000C71D4: call __ZNK6serial6Serial10SerialImpl10getTimeoutEv; serial::Serial::SerialImpl::getTimeout(void) +000C71D9: mov edx, [rbp+var_1C] +000C71DC: mov rax, [rbp+var_28] +000C71E0: mov rax, [rax+8] +000C71E4: mov esi, edx; unsigned int +000C71E6: mov rdi, rax; this +000C71E9: call __ZN6serial6Serial10SerialImpl12waitReadableEj; serial::Serial::SerialImpl::waitReadable(uint) +000C71EE: leave +000C71EF: retn + +### FUNC 000C71F0 - 000C7219 (41 bytes) name=_ZN6serial6Serial13waitByteTimesEm +000C71F0: push rbp +000C71F1: mov rbp, rsp +000C71F4: sub rsp, 10h +000C71F8: mov [rbp+var_8], rdi +000C71FC: mov [rbp+var_10], rsi +000C7200: mov rax, [rbp+var_8] +000C7204: mov rax, [rax+8] +000C7208: mov rdx, [rbp+var_10] +000C720C: mov rsi, rdx; unsigned __int64 +000C720F: mov rdi, rax; this +000C7212: call __ZN6serial6Serial10SerialImpl13waitByteTimesEm; serial::Serial::SerialImpl::waitByteTimes(ulong) +000C7217: leave +000C7218: retn + +### FUNC 000C721A - 000C724B (49 bytes) name=_ZN6serial6Serial5read_EPhm +000C721A: push rbp +000C721B: mov rbp, rsp +000C721E: sub rsp, 20h +000C7222: mov [rbp+var_8], rdi +000C7226: mov [rbp+var_10], rsi +000C722A: mov [rbp+var_18], rdx +000C722E: mov rax, [rbp+var_8] +000C7232: mov rax, [rax+8] +000C7236: mov rdx, [rbp+var_18]; unsigned __int64 +000C723A: mov rcx, [rbp+var_10] +000C723E: mov rsi, rcx; unsigned __int8 * +000C7241: mov rdi, rax; this +000C7244: call __ZN6serial6Serial10SerialImpl4readEPhm; serial::Serial::SerialImpl::read(uchar *,ulong) +000C7249: leave +000C724A: retn + +### FUNC 000C724C - 000C72C8 (124 bytes) name=_ZN6serial6Serial4readEPhm +000C724C: push rbp +000C724D: mov rbp, rsp +000C7250: push rbx +000C7251: sub rsp, 38h +000C7255: mov [rbp+var_28], rdi +000C7259: mov [rbp+var_30], rsi +000C725D: mov [rbp+var_38], rdx +000C7261: mov rax, [rbp+var_28] +000C7265: mov rdx, [rax+8] +000C7269: lea rax, [rbp+var_20] +000C726D: mov rsi, rdx; serial::Serial::SerialImpl * +000C7270: mov rdi, rax; this +000C7273: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C7278: mov rax, [rbp+var_28] +000C727C: mov rax, [rax+8] +000C7280: mov rdx, [rbp+var_38]; unsigned __int64 +000C7284: mov rcx, [rbp+var_30] +000C7288: mov rsi, rcx; unsigned __int8 * +000C728B: mov rdi, rax; this +000C728E: call __ZN6serial6Serial10SerialImpl4readEPhm; serial::Serial::SerialImpl::read(uchar *,ulong) +000C7293: mov rbx, rax +000C7296: lea rax, [rbp+var_20] +000C729A: mov rdi, rax; this +000C729D: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C72A2: mov rax, rbx +000C72A5: jmp short loc_C72C1 +000C72A7: mov rbx, rax +000C72AA: lea rax, [rbp+var_20] +000C72AE: mov rdi, rax; this +000C72B1: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C72B6: mov rax, rbx +000C72B9: mov rdi, rax; struct _Unwind_Exception * +000C72BC: call __Unwind_Resume +000C72C1: add rsp, 38h +000C72C5: pop rbx +000C72C6: pop rbp +000C72C7: retn + +### FUNC 000C72C8 - 000C73DB (275 bytes) name=_ZN6serial6Serial4readERSt6vectorIhSaIhEEm +000C72C8: push rbp +000C72C9: mov rbp, rsp +000C72CC: push rbx +000C72CD: sub rsp, 48h +000C72D1: mov [rbp+var_38], rdi +000C72D5: mov [rbp+var_40], rsi +000C72D9: mov [rbp+var_48], rdx +000C72DD: mov rax, [rbp+var_38] +000C72E1: mov rdx, [rax+8] +000C72E5: lea rax, [rbp+var_30] +000C72E9: mov rsi, rdx; serial::Serial::SerialImpl * +000C72EC: mov rdi, rax; this +000C72EF: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C72F4: mov rax, [rbp+var_48] +000C72F8: mov rdi, rax; unsigned __int64 +000C72FB: call __Znam; operator new[](ulong) +000C7300: mov [rbp+var_18], rax +000C7304: mov [rbp+var_20], 0 +000C730C: mov rax, [rbp+var_38] +000C7310: mov rax, [rax+8] +000C7314: mov rdx, [rbp+var_48]; unsigned __int64 +000C7318: mov rcx, [rbp+var_18] +000C731C: mov rsi, rcx; unsigned __int8 * +000C731F: mov rdi, rax; this +000C7322: call __ZN6serial6Serial10SerialImpl4readEPhm; serial::Serial::SerialImpl::read(uchar *,ulong) +000C7327: mov [rbp+var_20], rax +000C732B: mov rax, [rbp+var_20] +000C732F: mov rdx, [rbp+var_18] +000C7333: lea rbx, [rdx+rax] +000C7337: mov rax, [rbp+var_40] +000C733B: mov rdi, rax +000C733E: call __ZNSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +000C7343: mov rsi, rax +000C7346: mov rdx, [rbp+var_18] +000C734A: mov rax, [rbp+var_40] +000C734E: mov rcx, rbx +000C7351: mov rdi, rax +000C7354: call __ZNSt6vectorIhSaIhEE6insertIPhvEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_; std::vector>::insert(__gnu_cxx::__normal_iterator>>,uchar *,uchar *) +000C7359: cmp [rbp+var_18], 0 +000C735E: jz short loc_C736C +000C7360: mov rax, [rbp+var_18] +000C7364: mov rdi, rax; void * +000C7367: call __ZdaPv; operator delete[](void *) +000C736C: mov rbx, [rbp+var_20] +000C7370: lea rax, [rbp+var_30] +000C7374: mov rdi, rax; this +000C7377: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C737C: mov rax, rbx +000C737F: jmp short loc_C73D4 +000C7381: cmp rdx, 1 +000C7385: jz short loc_C738C +000C7387: mov rbx, rax +000C738A: jmp short loc_C73BD +000C738C: mov rdi, rax; void * +000C738F: call ___cxa_begin_catch +000C7394: mov [rbp+var_28], rax +000C7398: cmp [rbp+var_18], 0 +000C739D: jz short loc_C73AB +000C739F: mov rax, [rbp+var_18] +000C73A3: mov rdi, rax; void * +000C73A6: call __ZdaPv; operator delete[](void *) +000C73AB: call ___cxa_rethrow +000C73B0: mov rbx, rax +000C73B3: call ___cxa_end_catch +000C73B8: jmp short loc_C73BD +000C73BA: mov rbx, rax +000C73BD: lea rax, [rbp+var_30] +000C73C1: mov rdi, rax; this +000C73C4: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C73C9: mov rax, rbx +000C73CC: mov rdi, rax; struct _Unwind_Exception * +000C73CF: call __Unwind_Resume +000C73D4: add rsp, 48h +000C73D8: pop rbx +000C73D9: pop rbp +000C73DA: retn + +### FUNC 000C73DC - 000C74D8 (252 bytes) name=_ZN6serial6Serial4readERSsm +000C73DC: push rbp +000C73DD: mov rbp, rsp +000C73E0: push rbx +000C73E1: sub rsp, 48h +000C73E5: mov [rbp+var_38], rdi +000C73E9: mov [rbp+var_40], rsi +000C73ED: mov [rbp+var_48], rdx +000C73F1: mov rax, [rbp+var_38] +000C73F5: mov rdx, [rax+8] +000C73F9: lea rax, [rbp+var_30] +000C73FD: mov rsi, rdx; serial::Serial::SerialImpl * +000C7400: mov rdi, rax; this +000C7403: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C7408: mov rax, [rbp+var_48] +000C740C: mov rdi, rax; unsigned __int64 +000C740F: call __Znam; operator new[](ulong) +000C7414: mov [rbp+var_18], rax +000C7418: mov [rbp+var_20], 0 +000C7420: mov rax, [rbp+var_38] +000C7424: mov rax, [rax+8] +000C7428: mov rdx, [rbp+var_48]; unsigned __int64 +000C742C: mov rcx, [rbp+var_18] +000C7430: mov rsi, rcx; unsigned __int8 * +000C7433: mov rdi, rax; this +000C7436: call __ZN6serial6Serial10SerialImpl4readEPhm; serial::Serial::SerialImpl::read(uchar *,ulong) +000C743B: mov [rbp+var_20], rax +000C743F: mov rdx, [rbp+var_20]; unsigned __int64 +000C7443: mov rcx, [rbp+var_18] +000C7447: mov rax, [rbp+var_40] +000C744B: mov rsi, rcx; char * +000C744E: mov rdi, rax; this +000C7451: call __ZNSs6appendEPKcm; std::string::append(char const*,ulong) +000C7456: cmp [rbp+var_18], 0 +000C745B: jz short loc_C7469 +000C745D: mov rax, [rbp+var_18] +000C7461: mov rdi, rax; void * +000C7464: call __ZdaPv; operator delete[](void *) +000C7469: mov rbx, [rbp+var_20] +000C746D: lea rax, [rbp+var_30] +000C7471: mov rdi, rax; this +000C7474: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C7479: mov rax, rbx +000C747C: jmp short loc_C74D1 +000C747E: cmp rdx, 1 +000C7482: jz short loc_C7489 +000C7484: mov rbx, rax +000C7487: jmp short loc_C74BA +000C7489: mov rdi, rax; void * +000C748C: call ___cxa_begin_catch +000C7491: mov [rbp+var_28], rax +000C7495: cmp [rbp+var_18], 0 +000C749A: jz short loc_C74A8 +000C749C: mov rax, [rbp+var_18] +000C74A0: mov rdi, rax; void * +000C74A3: call __ZdaPv; operator delete[](void *) +000C74A8: call ___cxa_rethrow +000C74AD: mov rbx, rax +000C74B0: call ___cxa_end_catch +000C74B5: jmp short loc_C74BA +000C74B7: mov rbx, rax +000C74BA: lea rax, [rbp+var_30] +000C74BE: mov rdi, rax; this +000C74C1: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C74C6: mov rax, rbx +000C74C9: mov rdi, rax; struct _Unwind_Exception * +000C74CC: call __Unwind_Resume +000C74D1: add rsp, 48h +000C74D5: pop rbx +000C74D6: pop rbp +000C74D7: retn + +### FUNC 000C74D8 - 000C7537 (95 bytes) name=_ZN6serial6Serial4readEm +000C74D8: push rbp +000C74D9: mov rbp, rsp +000C74DC: push rbx +000C74DD: sub rsp, 28h +000C74E1: mov [rbp+var_18], rdi +000C74E5: mov [rbp+var_20], rsi +000C74E9: mov [rbp+var_28], rdx +000C74ED: mov rax, [rbp+var_18] +000C74F1: mov rdi, rax; this +000C74F4: call __ZNSsC1Ev; std::string::string(void) +000C74F9: mov rdx, [rbp+var_28]; unsigned __int64 +000C74FD: mov rcx, [rbp+var_18] +000C7501: mov rax, [rbp+var_20] +000C7505: mov rsi, rcx; std::string * +000C7508: mov rdi, rax; this +000C750B: call __ZN6serial6Serial4readERSsm; serial::Serial::read(std::string &,ulong) +000C7510: jmp short loc_C752C +000C7512: mov rbx, rax +000C7515: mov rax, [rbp+var_18] +000C7519: mov rdi, rax; this +000C751C: call __ZNSsD1Ev; std::string::~string() +000C7521: mov rax, rbx +000C7524: mov rdi, rax; struct _Unwind_Exception * +000C7527: call __Unwind_Resume +000C752C: mov rax, [rbp+var_18] +000C7530: add rsp, 28h +000C7534: pop rbx +000C7535: pop rbp +000C7536: retn + +### FUNC 000C7538 - 000C76D5 (413 bytes) name=_ZN6serial6Serial8readlineERSsmSs +000C7538: push rbp +000C7539: mov rbp, rsp +000C753C: push rbx +000C753D: sub rsp, 68h +000C7541: mov [rbp+var_58], rdi +000C7545: mov [rbp+var_60], rsi +000C7549: mov [rbp+var_68], rdx +000C754D: mov [rbp+var_70], rcx +000C7551: mov rax, [rbp+var_58] +000C7555: mov rdx, [rax+8] +000C7559: lea rax, [rbp+var_50] +000C755D: mov rsi, rdx; serial::Serial::SerialImpl * +000C7560: mov rdi, rax; this +000C7563: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C7568: mov rax, [rbp+var_70] +000C756C: mov rdi, rax; this +000C756F: call __ZNKSs6lengthEv; std::string::length(void) +000C7574: mov [rbp+var_20], rax +000C7578: mov rax, [rbp+var_68] +000C757C: lea rdx, [rax+0Fh] +000C7580: mov eax, 10h +000C7585: sub rax, 1 +000C7589: add rax, rdx +000C758C: mov ecx, 10h +000C7591: mov edx, 0 +000C7596: div rcx +000C7599: imul rax, 10h +000C759D: sub rsp, rax +000C75A0: mov rax, rsp +000C75A3: add rax, 0Fh +000C75A7: shr rax, 4 +000C75AB: shl rax, 4 +000C75AF: mov [rbp+var_28], rax +000C75B3: mov [rbp+var_18], 0 +000C75BB: mov rax, [rbp+var_18] +000C75BF: mov rdx, [rbp+var_28] +000C75C3: lea rcx, [rdx+rax] +000C75C7: mov rax, [rbp+var_58] +000C75CB: mov edx, 1; unsigned __int64 +000C75D0: mov rsi, rcx; unsigned __int8 * +000C75D3: mov rdi, rax; this +000C75D6: call __ZN6serial6Serial5read_EPhm; serial::Serial::read_(uchar *,ulong) +000C75DB: mov [rbp+var_30], rax +000C75DF: mov rax, [rbp+var_30] +000C75E3: add [rbp+var_18], rax +000C75E7: cmp [rbp+var_30], 0 +000C75EC: jnz short loc_C75F0 +000C75EE: jmp short loc_C7667 +000C75F0: lea rax, [rbp+var_31] +000C75F4: mov rdi, rax +000C75F7: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C75FC: mov rax, [rbp+var_20] +000C7600: mov rdx, [rbp+var_18] +000C7604: sub rdx, rax +000C7607: mov rax, [rbp+var_28] +000C760B: lea rsi, [rdx+rax] +000C760F: lea rcx, [rbp+var_31] +000C7613: mov rdx, [rbp+var_20] +000C7617: lea rax, [rbp+var_40] +000C761B: mov rdi, rax +000C761E: call __ZNSsC1EPKcmRKSaIcE; std::string::string(char const*,ulong,std::allocator const&) +000C7623: mov rdx, [rbp+var_70] +000C7627: lea rax, [rbp+var_40] +000C762B: mov rsi, rdx +000C762E: mov rdi, rax +000C7631: call __ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_; std::operator==(std::basic_string,std::allocator> const&,std::basic_string,std::allocator> const&) +000C7636: mov ebx, eax +000C7638: lea rax, [rbp+var_40] +000C763C: mov rdi, rax; this +000C763F: call __ZNSsD1Ev; std::string::~string() +000C7644: lea rax, [rbp+var_31] +000C7648: mov rdi, rax +000C764B: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7650: test bl, bl +000C7652: jz short loc_C7656 +000C7654: jmp short loc_C7667 +000C7656: mov rax, [rbp+var_18] +000C765A: cmp rax, [rbp+var_68] +000C765E: jnz short loc_C7662 +000C7660: jmp short loc_C7667 +000C7662: jmp loc_C75BB +000C7667: mov rdx, [rbp+var_18]; unsigned __int64 +000C766B: mov rcx, [rbp+var_28] +000C766F: mov rax, [rbp+var_60] +000C7673: mov rsi, rcx; char * +000C7676: mov rdi, rax; this +000C7679: call __ZNSs6appendEPKcm; std::string::append(char const*,ulong) +000C767E: mov rbx, [rbp+var_18] +000C7682: lea rax, [rbp+var_50] +000C7686: mov rdi, rax; this +000C7689: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C768E: mov rax, rbx +000C7691: jmp short loc_C76CF +000C7693: mov rbx, rax +000C7696: lea rax, [rbp+var_40] +000C769A: mov rdi, rax; this +000C769D: call __ZNSsD1Ev; std::string::~string() +000C76A2: jmp short loc_C76A7 +000C76A4: mov rbx, rax +000C76A7: lea rax, [rbp+var_31] +000C76AB: mov rdi, rax +000C76AE: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C76B3: jmp short loc_C76B8 +000C76B5: mov rbx, rax +000C76B8: lea rax, [rbp+var_50] +000C76BC: mov rdi, rax; this +000C76BF: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C76C4: mov rax, rbx +000C76C7: mov rdi, rax; struct _Unwind_Exception * +000C76CA: call __Unwind_Resume +000C76CF: mov rbx, [rbp+var_8] +000C76D3: leave +000C76D4: retn + +### FUNC 000C76D6 - 000C776A (148 bytes) name=_ZN6serial6Serial8readlineEmSs +000C76D6: push rbp +000C76D7: mov rbp, rsp +000C76DA: push rbx +000C76DB: sub rsp, 38h +000C76DF: mov [rbp+var_28], rdi +000C76E3: mov [rbp+var_30], rsi +000C76E7: mov [rbp+var_38], rdx +000C76EB: mov [rbp+var_40], rcx +000C76EF: mov rax, [rbp+var_28] +000C76F3: mov rdi, rax; this +000C76F6: call __ZNSsC1Ev; std::string::string(void) +000C76FB: mov rdx, [rbp+var_40] +000C76FF: lea rax, [rbp+var_20] +000C7703: mov rsi, rdx; std::string * +000C7706: mov rdi, rax; this +000C7709: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000C770E: lea rcx, [rbp+var_20] +000C7712: mov rdx, [rbp+var_38] +000C7716: mov rsi, [rbp+var_28] +000C771A: mov rax, [rbp+var_30] +000C771E: mov rdi, rax +000C7721: call __ZN6serial6Serial8readlineERSsmSs; serial::Serial::readline(std::string &,ulong,std::string) +000C7726: lea rax, [rbp+var_20] +000C772A: mov rdi, rax; this +000C772D: call __ZNSsD1Ev; std::string::~string() +000C7732: jmp short loc_C775F +000C7734: mov rbx, rax +000C7737: lea rax, [rbp+var_20] +000C773B: mov rdi, rax; this +000C773E: call __ZNSsD1Ev; std::string::~string() +000C7743: jmp short loc_C7748 +000C7745: mov rbx, rax +000C7748: mov rax, [rbp+var_28] +000C774C: mov rdi, rax; this +000C774F: call __ZNSsD1Ev; std::string::~string() +000C7754: mov rax, rbx +000C7757: mov rdi, rax; struct _Unwind_Exception * +000C775A: call __Unwind_Resume +000C775F: mov rax, [rbp+var_28] +000C7763: add rsp, 38h +000C7767: pop rbx +000C7768: pop rbp +000C7769: retn + +### FUNC 000C776A - 000C7B1B (945 bytes) name=_ZN6serial6Serial9readlinesEmSs +000C776A: push rbp +000C776B: mov rbp, rsp +000C776E: push rbx +000C776F: sub rsp, 0A8h +000C7776: mov [rbp+var_98], rdi +000C777D: mov [rbp+var_A0], rsi +000C7784: mov [rbp+var_A8], rdx +000C778B: mov [rbp+var_B0], rcx +000C7792: mov rax, [rbp+var_A0] +000C7799: mov rdx, [rax+8] +000C779D: lea rax, [rbp+var_90] +000C77A4: mov rsi, rdx; serial::Serial::SerialImpl * +000C77A7: mov rdi, rax; this +000C77AA: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C77AF: mov rax, [rbp+var_98] +000C77B6: mov rdi, rax +000C77B9: call __ZNSt6vectorISsSaISsEEC2Ev; std::vector>::vector(void) +000C77BE: mov rax, [rbp+var_B0] +000C77C5: mov rdi, rax; this +000C77C8: call __ZNKSs6lengthEv; std::string::length(void) +000C77CD: mov [rbp+var_28], rax +000C77D1: mov rax, [rbp+var_A8] +000C77D8: lea rdx, [rax+0Fh] +000C77DC: mov eax, 10h +000C77E1: sub rax, 1 +000C77E5: add rax, rdx +000C77E8: mov ecx, 10h +000C77ED: mov edx, 0 +000C77F2: div rcx +000C77F5: imul rax, 10h +000C77F9: sub rsp, rax +000C77FC: mov rax, rsp +000C77FF: add rax, 0Fh +000C7803: shr rax, 4 +000C7807: shl rax, 4 +000C780B: mov [rbp+var_30], rax +000C780F: mov [rbp+var_18], 0 +000C7817: mov [rbp+var_20], 0 +000C781F: jmp loc_C7A2F +000C7824: mov rax, [rbp+var_18] +000C7828: mov rdx, [rbp+var_30] +000C782C: lea rcx, [rdx+rax] +000C7830: mov rax, [rbp+var_A0] +000C7837: mov edx, 1; unsigned __int64 +000C783C: mov rsi, rcx; unsigned __int8 * +000C783F: mov rdi, rax; this +000C7842: call __ZN6serial6Serial5read_EPhm; serial::Serial::read_(uchar *,ulong) +000C7847: mov [rbp+var_38], rax +000C784B: mov rax, [rbp+var_38] +000C784F: add [rbp+var_18], rax +000C7853: cmp [rbp+var_38], 0 +000C7858: jnz short loc_C78D3 +000C785A: mov rax, [rbp+var_20] +000C785E: cmp rax, [rbp+var_18] +000C7862: jz short loc_C78CE +000C7864: lea rax, [rbp+var_71] +000C7868: mov rdi, rax +000C786B: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C7870: mov rax, [rbp+var_20] +000C7874: mov rdx, [rbp+var_18] +000C7878: mov rdi, rdx +000C787B: sub rdi, rax +000C787E: mov rax, [rbp+var_20] +000C7882: mov rdx, [rbp+var_30] +000C7886: lea rsi, [rdx+rax] +000C788A: lea rdx, [rbp+var_71] +000C788E: lea rax, [rbp+var_80] +000C7892: mov rcx, rdx +000C7895: mov rdx, rdi +000C7898: mov rdi, rax +000C789B: call __ZNSsC1EPKcmRKSaIcE; std::string::string(char const*,ulong,std::allocator const&) +000C78A0: lea rdx, [rbp+var_80] +000C78A4: mov rax, [rbp+var_98] +000C78AB: mov rsi, rdx +000C78AE: mov rdi, rax +000C78B1: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000C78B6: lea rax, [rbp+var_80] +000C78BA: mov rdi, rax; this +000C78BD: call __ZNSsD1Ev; std::string::~string() +000C78C2: lea rax, [rbp+var_71] +000C78C6: mov rdi, rax +000C78C9: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C78CE: jmp loc_C7A40 +000C78D3: lea rax, [rbp+var_61] +000C78D7: mov rdi, rax +000C78DA: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C78DF: mov rax, [rbp+var_28] +000C78E3: mov rdx, [rbp+var_18] +000C78E7: sub rdx, rax +000C78EA: mov rax, [rbp+var_30] +000C78EE: lea rsi, [rdx+rax] +000C78F2: lea rcx, [rbp+var_61] +000C78F6: mov rdx, [rbp+var_28] +000C78FA: lea rax, [rbp+var_70] +000C78FE: mov rdi, rax +000C7901: call __ZNSsC1EPKcmRKSaIcE; std::string::string(char const*,ulong,std::allocator const&) +000C7906: mov rdx, [rbp+var_B0] +000C790D: lea rax, [rbp+var_70] +000C7911: mov rsi, rdx +000C7914: mov rdi, rax +000C7917: call __ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_; std::operator==(std::basic_string,std::allocator> const&,std::basic_string,std::allocator> const&) +000C791C: mov ebx, eax +000C791E: lea rax, [rbp+var_70] +000C7922: mov rdi, rax; this +000C7925: call __ZNSsD1Ev; std::string::~string() +000C792A: lea rax, [rbp+var_61] +000C792E: mov rdi, rax +000C7931: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7936: test bl, bl +000C7938: jz short loc_C79AC +000C793A: lea rax, [rbp+var_51] +000C793E: mov rdi, rax +000C7941: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C7946: mov rax, [rbp+var_20] +000C794A: mov rdx, [rbp+var_18] +000C794E: sub rdx, rax +000C7951: mov rdi, rdx +000C7954: mov rax, [rbp+var_20] +000C7958: mov rdx, [rbp+var_30] +000C795C: lea rsi, [rdx+rax] +000C7960: lea rdx, [rbp+var_51] +000C7964: lea rax, [rbp+var_60] +000C7968: mov rcx, rdx +000C796B: mov rdx, rdi +000C796E: mov rdi, rax +000C7971: call __ZNSsC1EPKcmRKSaIcE; std::string::string(char const*,ulong,std::allocator const&) +000C7976: lea rdx, [rbp+var_60] +000C797A: mov rax, [rbp+var_98] +000C7981: mov rsi, rdx +000C7984: mov rdi, rax +000C7987: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000C798C: lea rax, [rbp+var_60] +000C7990: mov rdi, rax; this +000C7993: call __ZNSsD1Ev; std::string::~string() +000C7998: lea rax, [rbp+var_51] +000C799C: mov rdi, rax +000C799F: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C79A4: mov rax, [rbp+var_18] +000C79A8: mov [rbp+var_20], rax +000C79AC: mov rax, [rbp+var_18] +000C79B0: cmp rax, [rbp+var_A8] +000C79B7: jnz short loc_C7A2F +000C79B9: mov rax, [rbp+var_20] +000C79BD: cmp rax, [rbp+var_18] +000C79C1: jz short loc_C7A2D +000C79C3: lea rax, [rbp+var_39] +000C79C7: mov rdi, rax +000C79CA: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C79CF: mov rax, [rbp+var_20] +000C79D3: mov rdx, [rbp+var_18] +000C79D7: mov rdi, rdx +000C79DA: sub rdi, rax +000C79DD: mov rax, [rbp+var_20] +000C79E1: mov rdx, [rbp+var_30] +000C79E5: lea rsi, [rdx+rax] +000C79E9: lea rdx, [rbp+var_39] +000C79ED: lea rax, [rbp+var_50] +000C79F1: mov rcx, rdx +000C79F4: mov rdx, rdi +000C79F7: mov rdi, rax +000C79FA: call __ZNSsC1EPKcmRKSaIcE; std::string::string(char const*,ulong,std::allocator const&) +000C79FF: lea rdx, [rbp+var_50] +000C7A03: mov rax, [rbp+var_98] +000C7A0A: mov rsi, rdx +000C7A0D: mov rdi, rax +000C7A10: call __ZNSt6vectorISsSaISsEE9push_backEOSs; std::vector>::push_back(std::string &&) +000C7A15: lea rax, [rbp+var_50] +000C7A19: mov rdi, rax; this +000C7A1C: call __ZNSsD1Ev; std::string::~string() +000C7A21: lea rax, [rbp+var_39] +000C7A25: mov rdi, rax +000C7A28: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7A2D: jmp short loc_C7A40 +000C7A2F: mov rax, [rbp+var_18] +000C7A33: cmp rax, [rbp+var_A8] +000C7A3A: jb loc_C7824 +000C7A40: nop +000C7A41: lea rax, [rbp+var_90] +000C7A48: mov rdi, rax; this +000C7A4B: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C7A50: jmp loc_C7B0E +000C7A55: mov rbx, rax +000C7A58: lea rax, [rbp+var_80] +000C7A5C: mov rdi, rax; this +000C7A5F: call __ZNSsD1Ev; std::string::~string() +000C7A64: jmp short loc_C7A69 +000C7A66: mov rbx, rax +000C7A69: lea rax, [rbp+var_71] +000C7A6D: mov rdi, rax +000C7A70: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7A75: jmp short loc_C7AE0 +000C7A77: mov rbx, rax +000C7A7A: lea rax, [rbp+var_70] +000C7A7E: mov rdi, rax; this +000C7A81: call __ZNSsD1Ev; std::string::~string() +000C7A86: jmp short loc_C7A8B +000C7A88: mov rbx, rax +000C7A8B: lea rax, [rbp+var_61] +000C7A8F: mov rdi, rax +000C7A92: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7A97: jmp short loc_C7AE0 +000C7A99: mov rbx, rax +000C7A9C: lea rax, [rbp+var_60] +000C7AA0: mov rdi, rax; this +000C7AA3: call __ZNSsD1Ev; std::string::~string() +000C7AA8: jmp short loc_C7AAD +000C7AAA: mov rbx, rax +000C7AAD: lea rax, [rbp+var_51] +000C7AB1: mov rdi, rax +000C7AB4: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7AB9: jmp short loc_C7AE0 +000C7ABB: mov rbx, rax +000C7ABE: lea rax, [rbp+var_50] +000C7AC2: mov rdi, rax; this +000C7AC5: call __ZNSsD1Ev; std::string::~string() +000C7ACA: jmp short loc_C7ACF +000C7ACC: mov rbx, rax +000C7ACF: lea rax, [rbp+var_39] +000C7AD3: mov rdi, rax +000C7AD6: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C7ADB: jmp short loc_C7AE0 +000C7ADD: mov rbx, rax +000C7AE0: mov rax, [rbp+var_98] +000C7AE7: mov rdi, rax +000C7AEA: call __ZNSt6vectorISsSaISsEED2Ev; std::vector>::~vector() +000C7AEF: jmp short loc_C7AF4 +000C7AF1: mov rbx, rax +000C7AF4: lea rax, [rbp+var_90] +000C7AFB: mov rdi, rax; this +000C7AFE: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C7B03: mov rax, rbx +000C7B06: mov rdi, rax; struct _Unwind_Exception * +000C7B09: call __Unwind_Resume +000C7B0E: mov rax, [rbp+var_98] +000C7B15: mov rbx, [rbp+var_8] +000C7B19: leave +000C7B1A: retn + +### FUNC 000C7B1C - 000C7BA9 (141 bytes) name=_ZN6serial6Serial5writeERKSs +000C7B1C: push rbp +000C7B1D: mov rbp, rsp +000C7B20: push rbx +000C7B21: sub rsp, 28h +000C7B25: mov [rbp+var_28], rdi +000C7B29: mov [rbp+var_30], rsi +000C7B2D: mov rax, [rbp+var_28] +000C7B31: mov rdx, [rax+8] +000C7B35: lea rax, [rbp+var_20] +000C7B39: mov rsi, rdx; serial::Serial::SerialImpl * +000C7B3C: mov rdi, rax; this +000C7B3F: call __ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE; serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *) +000C7B44: mov rax, [rbp+var_30] +000C7B48: mov rdi, rax; this +000C7B4B: call __ZNKSs6lengthEv; std::string::length(void) +000C7B50: mov rbx, rax +000C7B53: mov rax, [rbp+var_30] +000C7B57: mov rdi, rax; this +000C7B5A: call __ZNKSs5c_strEv; std::string::c_str(void) +000C7B5F: mov rcx, rax +000C7B62: mov rax, [rbp+var_28] +000C7B66: mov rdx, rbx; unsigned __int64 +000C7B69: mov rsi, rcx; unsigned __int8 * +000C7B6C: mov rdi, rax; this +000C7B6F: call __ZN6serial6Serial6write_EPKhm; serial::Serial::write_(uchar const*,ulong) +000C7B74: mov rbx, rax +000C7B77: lea rax, [rbp+var_20] +000C7B7B: mov rdi, rax; this +000C7B7E: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7B83: mov rax, rbx +000C7B86: jmp short loc_C7BA2 +000C7B88: mov rbx, rax +000C7B8B: lea rax, [rbp+var_20] +000C7B8F: mov rdi, rax; this +000C7B92: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7B97: mov rax, rbx +000C7B9A: mov rdi, rax; struct _Unwind_Exception * +000C7B9D: call __Unwind_Resume +000C7BA2: add rsp, 28h +000C7BA6: pop rbx +000C7BA7: pop rbp +000C7BA8: retn + +### FUNC 000C7BAA - 000C7C3C (146 bytes) name=_ZN6serial6Serial5writeERKSt6vectorIhSaIhEE +000C7BAA: push rbp +000C7BAB: mov rbp, rsp +000C7BAE: push rbx +000C7BAF: sub rsp, 28h +000C7BB3: mov [rbp+var_28], rdi +000C7BB7: mov [rbp+var_30], rsi +000C7BBB: mov rax, [rbp+var_28] +000C7BBF: mov rdx, [rax+8] +000C7BC3: lea rax, [rbp+var_20] +000C7BC7: mov rsi, rdx; serial::Serial::SerialImpl * +000C7BCA: mov rdi, rax; this +000C7BCD: call __ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE; serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *) +000C7BD2: mov rax, [rbp+var_30] +000C7BD6: mov rdi, rax +000C7BD9: call __ZNKSt6vectorIhSaIhEE4sizeEv; std::vector>::size(void) +000C7BDE: mov rbx, rax +000C7BE1: mov rax, [rbp+var_30] +000C7BE5: mov esi, 0 +000C7BEA: mov rdi, rax +000C7BED: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000C7BF2: mov rcx, rax +000C7BF5: mov rax, [rbp+var_28] +000C7BF9: mov rdx, rbx; unsigned __int64 +000C7BFC: mov rsi, rcx; unsigned __int8 * +000C7BFF: mov rdi, rax; this +000C7C02: call __ZN6serial6Serial6write_EPKhm; serial::Serial::write_(uchar const*,ulong) +000C7C07: mov rbx, rax +000C7C0A: lea rax, [rbp+var_20] +000C7C0E: mov rdi, rax; this +000C7C11: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7C16: mov rax, rbx +000C7C19: jmp short loc_C7C35 +000C7C1B: mov rbx, rax +000C7C1E: lea rax, [rbp+var_20] +000C7C22: mov rdi, rax; this +000C7C25: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7C2A: mov rax, rbx +000C7C2D: mov rdi, rax; struct _Unwind_Exception * +000C7C30: call __Unwind_Resume +000C7C35: add rsp, 28h +000C7C39: pop rbx +000C7C3A: pop rbp +000C7C3B: retn + +### FUNC 000C7C3C - 000C7CB4 (120 bytes) name=_ZN6serial6Serial5writeEPKhm +000C7C3C: push rbp +000C7C3D: mov rbp, rsp +000C7C40: push rbx +000C7C41: sub rsp, 38h +000C7C45: mov [rbp+var_28], rdi +000C7C49: mov [rbp+var_30], rsi +000C7C4D: mov [rbp+var_38], rdx +000C7C51: mov rax, [rbp+var_28] +000C7C55: mov rdx, [rax+8] +000C7C59: lea rax, [rbp+var_20] +000C7C5D: mov rsi, rdx; serial::Serial::SerialImpl * +000C7C60: mov rdi, rax; this +000C7C63: call __ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE; serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *) +000C7C68: mov rdx, [rbp+var_38]; unsigned __int64 +000C7C6C: mov rcx, [rbp+var_30] +000C7C70: mov rax, [rbp+var_28] +000C7C74: mov rsi, rcx; unsigned __int8 * +000C7C77: mov rdi, rax; this +000C7C7A: call __ZN6serial6Serial6write_EPKhm; serial::Serial::write_(uchar const*,ulong) +000C7C7F: mov rbx, rax +000C7C82: lea rax, [rbp+var_20] +000C7C86: mov rdi, rax; this +000C7C89: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7C8E: mov rax, rbx +000C7C91: jmp short loc_C7CAD +000C7C93: mov rbx, rax +000C7C96: lea rax, [rbp+var_20] +000C7C9A: mov rdi, rax; this +000C7C9D: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7CA2: mov rax, rbx +000C7CA5: mov rdi, rax; struct _Unwind_Exception * +000C7CA8: call __Unwind_Resume +000C7CAD: add rsp, 38h +000C7CB1: pop rbx +000C7CB2: pop rbp +000C7CB3: retn + +### FUNC 000C7CB4 - 000C7CE5 (49 bytes) name=_ZN6serial6Serial6write_EPKhm +000C7CB4: push rbp +000C7CB5: mov rbp, rsp +000C7CB8: sub rsp, 20h +000C7CBC: mov [rbp+var_8], rdi +000C7CC0: mov [rbp+var_10], rsi +000C7CC4: mov [rbp+var_18], rdx +000C7CC8: mov rax, [rbp+var_8] +000C7CCC: mov rax, [rax+8] +000C7CD0: mov rdx, [rbp+var_18]; unsigned __int64 +000C7CD4: mov rcx, [rbp+var_10] +000C7CD8: mov rsi, rcx; unsigned __int8 * +000C7CDB: mov rdi, rax; this +000C7CDE: call __ZN6serial6Serial10SerialImpl5writeEPKhm; serial::Serial::SerialImpl::write(uchar const*,ulong) +000C7CE3: leave +000C7CE4: retn + +### FUNC 000C7CE6 - 000C7DBF (217 bytes) name=_ZN6serial6Serial7setPortERKSs +000C7CE6: push rbp +000C7CE7: mov rbp, rsp +000C7CEA: push rbx +000C7CEB: sub rsp, 38h +000C7CEF: mov [rbp+var_38], rdi +000C7CF3: mov [rbp+var_40], rsi +000C7CF7: mov rax, [rbp+var_38] +000C7CFB: mov rdx, [rax+8] +000C7CFF: lea rax, [rbp+var_20] +000C7D03: mov rsi, rdx; serial::Serial::SerialImpl * +000C7D06: mov rdi, rax; this +000C7D09: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C7D0E: mov rax, [rbp+var_38] +000C7D12: mov rdx, [rax+8] +000C7D16: lea rax, [rbp+var_30] +000C7D1A: mov rsi, rdx; serial::Serial::SerialImpl * +000C7D1D: mov rdi, rax; this +000C7D20: call __ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE; serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *) +000C7D25: mov rax, [rbp+var_38] +000C7D29: mov rax, [rax+8] +000C7D2D: mov rdi, rax; this +000C7D30: call __ZNK6serial6Serial10SerialImpl6isOpenEv; serial::Serial::SerialImpl::isOpen(void) +000C7D35: mov [rbp+var_11], al +000C7D38: cmp [rbp+var_11], 0 +000C7D3C: jz short loc_C7D4A +000C7D3E: mov rax, [rbp+var_38] +000C7D42: mov rdi, rax; this +000C7D45: call __ZN6serial6Serial5closeEv; serial::Serial::close(void) +000C7D4A: mov rax, [rbp+var_38] +000C7D4E: mov rax, [rax+8] +000C7D52: mov rdx, [rbp+var_40] +000C7D56: mov rsi, rdx; std::string * +000C7D59: mov rdi, rax; this +000C7D5C: call __ZN6serial6Serial10SerialImpl7setPortERKSs; serial::Serial::SerialImpl::setPort(std::string const&) +000C7D61: cmp [rbp+var_11], 0 +000C7D65: jz short loc_C7D73 +000C7D67: mov rax, [rbp+var_38] +000C7D6B: mov rdi, rax; this +000C7D6E: call __ZN6serial6Serial4openEv; serial::Serial::open(void) +000C7D73: lea rax, [rbp+var_30] +000C7D77: mov rdi, rax; this +000C7D7A: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7D7F: lea rax, [rbp+var_20] +000C7D83: mov rdi, rax; this +000C7D86: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C7D8B: jmp short loc_C7DB8 +000C7D8D: mov rbx, rax +000C7D90: lea rax, [rbp+var_30] +000C7D94: mov rdi, rax; this +000C7D97: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7D9C: jmp short loc_C7DA1 +000C7D9E: mov rbx, rax +000C7DA1: lea rax, [rbp+var_20] +000C7DA5: mov rdi, rax; this +000C7DA8: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C7DAD: mov rax, rbx +000C7DB0: mov rdi, rax; struct _Unwind_Exception * +000C7DB3: call __Unwind_Resume +000C7DB8: add rsp, 38h +000C7DBC: pop rbx +000C7DBD: pop rbp +000C7DBE: retn + +### FUNC 000C7DC0 - 000C7DED (45 bytes) name=_ZNK6serial6Serial7getPortEv +000C7DC0: push rbp +000C7DC1: mov rbp, rsp +000C7DC4: sub rsp, 10h +000C7DC8: mov [rbp+var_8], rdi +000C7DCC: mov [rbp+var_10], rsi +000C7DD0: mov rax, [rbp+var_10] +000C7DD4: mov rdx, [rax+8] +000C7DD8: mov rax, [rbp+var_8] +000C7DDC: mov rsi, rdx +000C7DDF: mov rdi, rax; this +000C7DE2: call __ZNK6serial6Serial10SerialImpl7getPortEv; serial::Serial::SerialImpl::getPort(void) +000C7DE7: mov rax, [rbp+var_8] +000C7DEB: leave +000C7DEC: retn + +### FUNC 000C7DEE - 000C7E17 (41 bytes) name=_ZN6serial6Serial10setTimeoutERNS_7TimeoutE +000C7DEE: push rbp +000C7DEF: mov rbp, rsp +000C7DF2: sub rsp, 10h +000C7DF6: mov [rbp+var_8], rdi +000C7DFA: mov [rbp+var_10], rsi +000C7DFE: mov rax, [rbp+var_8] +000C7E02: mov rax, [rax+8] +000C7E06: mov rdx, [rbp+var_10] +000C7E0A: mov rsi, rdx; serial::Timeout * +000C7E0D: mov rdi, rax; this +000C7E10: call __ZN6serial6Serial10SerialImpl10setTimeoutERNS_7TimeoutE; serial::Serial::SerialImpl::setTimeout(serial::Timeout &) +000C7E15: leave +000C7E16: retn + +### FUNC 000C7E18 - 000C7E45 (45 bytes) name=_ZNK6serial6Serial10getTimeoutEv +000C7E18: push rbp +000C7E19: mov rbp, rsp +000C7E1C: sub rsp, 10h +000C7E20: mov [rbp+var_8], rdi +000C7E24: mov [rbp+var_10], rsi +000C7E28: mov rax, [rbp+var_10] +000C7E2C: mov rdx, [rax+8] +000C7E30: mov rax, [rbp+var_8] +000C7E34: mov rsi, rdx +000C7E37: mov rdi, rax; this +000C7E3A: call __ZNK6serial6Serial10SerialImpl10getTimeoutEv; serial::Serial::SerialImpl::getTimeout(void) +000C7E3F: mov rax, [rbp+var_8] +000C7E43: leave +000C7E44: retn + +### FUNC 000C7E46 - 000C7E6D (39 bytes) name=_ZN6serial6Serial11setBaudrateEj +000C7E46: push rbp +000C7E47: mov rbp, rsp +000C7E4A: sub rsp, 10h +000C7E4E: mov [rbp+var_C+4], rdi +000C7E52: mov dword ptr [rbp+var_C], esi +000C7E55: mov edx, dword ptr [rbp+var_C] +000C7E58: mov rax, [rbp+var_C+4] +000C7E5C: mov rax, [rax+8] +000C7E60: mov rsi, rdx; unsigned __int64 +000C7E63: mov rdi, rax; this +000C7E66: call __ZN6serial6Serial10SerialImpl11setBaudrateEm; serial::Serial::SerialImpl::setBaudrate(ulong) +000C7E6B: leave +000C7E6C: retn + +### FUNC 000C7E6E - 000C7E8C (30 bytes) name=_ZNK6serial6Serial11getBaudrateEv +000C7E6E: push rbp +000C7E6F: mov rbp, rsp +000C7E72: sub rsp, 10h +000C7E76: mov [rbp+var_8], rdi +000C7E7A: mov rax, [rbp+var_8] +000C7E7E: mov rax, [rax+8] +000C7E82: mov rdi, rax; this +000C7E85: call __ZNK6serial6Serial10SerialImpl11getBaudrateEv; serial::Serial::SerialImpl::getBaudrate(void) +000C7E8A: leave +000C7E8B: retn + +### FUNC 000C7E8C - 000C7EB2 (38 bytes) name=_ZN6serial6Serial11setBytesizeENS_10bytesize_tE +000C7E8C: push rbp +000C7E8D: mov rbp, rsp +000C7E90: sub rsp, 10h +000C7E94: mov [rbp+var_8], rdi +000C7E98: mov [rbp+var_C], esi +000C7E9B: mov rax, [rbp+var_8] +000C7E9F: mov rax, [rax+8] +000C7EA3: mov edx, [rbp+var_C] +000C7EA6: mov esi, edx +000C7EA8: mov rdi, rax +000C7EAB: call __ZN6serial6Serial10SerialImpl11setBytesizeENS_10bytesize_tE; serial::Serial::SerialImpl::setBytesize(serial::bytesize_t) +000C7EB0: leave +000C7EB1: retn + +### FUNC 000C7EB2 - 000C7ED0 (30 bytes) name=_ZNK6serial6Serial11getBytesizeEv +000C7EB2: push rbp +000C7EB3: mov rbp, rsp +000C7EB6: sub rsp, 10h +000C7EBA: mov [rbp+var_8], rdi +000C7EBE: mov rax, [rbp+var_8] +000C7EC2: mov rax, [rax+8] +000C7EC6: mov rdi, rax; this +000C7EC9: call __ZNK6serial6Serial10SerialImpl11getBytesizeEv; serial::Serial::SerialImpl::getBytesize(void) +000C7ECE: leave +000C7ECF: retn + +### FUNC 000C7ED0 - 000C7EF6 (38 bytes) name=_ZN6serial6Serial9setParityENS_8parity_tE +000C7ED0: push rbp +000C7ED1: mov rbp, rsp +000C7ED4: sub rsp, 10h +000C7ED8: mov [rbp+var_8], rdi +000C7EDC: mov [rbp+var_C], esi +000C7EDF: mov rax, [rbp+var_8] +000C7EE3: mov rax, [rax+8] +000C7EE7: mov edx, [rbp+var_C] +000C7EEA: mov esi, edx +000C7EEC: mov rdi, rax +000C7EEF: call __ZN6serial6Serial10SerialImpl9setParityENS_8parity_tE; serial::Serial::SerialImpl::setParity(serial::parity_t) +000C7EF4: leave +000C7EF5: retn + +### FUNC 000C7EF6 - 000C7F14 (30 bytes) name=_ZNK6serial6Serial9getParityEv +000C7EF6: push rbp +000C7EF7: mov rbp, rsp +000C7EFA: sub rsp, 10h +000C7EFE: mov [rbp+var_8], rdi +000C7F02: mov rax, [rbp+var_8] +000C7F06: mov rax, [rax+8] +000C7F0A: mov rdi, rax; this +000C7F0D: call __ZNK6serial6Serial10SerialImpl9getParityEv; serial::Serial::SerialImpl::getParity(void) +000C7F12: leave +000C7F13: retn + +### FUNC 000C7F14 - 000C7F3A (38 bytes) name=_ZN6serial6Serial11setStopbitsENS_10stopbits_tE +000C7F14: push rbp +000C7F15: mov rbp, rsp +000C7F18: sub rsp, 10h +000C7F1C: mov [rbp+var_8], rdi +000C7F20: mov [rbp+var_C], esi +000C7F23: mov rax, [rbp+var_8] +000C7F27: mov rax, [rax+8] +000C7F2B: mov edx, [rbp+var_C] +000C7F2E: mov esi, edx +000C7F30: mov rdi, rax +000C7F33: call __ZN6serial6Serial10SerialImpl11setStopbitsENS_10stopbits_tE; serial::Serial::SerialImpl::setStopbits(serial::stopbits_t) +000C7F38: leave +000C7F39: retn + +### FUNC 000C7F3A - 000C7F58 (30 bytes) name=_ZNK6serial6Serial11getStopbitsEv +000C7F3A: push rbp +000C7F3B: mov rbp, rsp +000C7F3E: sub rsp, 10h +000C7F42: mov [rbp+var_8], rdi +000C7F46: mov rax, [rbp+var_8] +000C7F4A: mov rax, [rax+8] +000C7F4E: mov rdi, rax; this +000C7F51: call __ZNK6serial6Serial10SerialImpl11getStopbitsEv; serial::Serial::SerialImpl::getStopbits(void) +000C7F56: leave +000C7F57: retn + +### FUNC 000C7F58 - 000C7F7E (38 bytes) name=_ZN6serial6Serial14setFlowcontrolENS_13flowcontrol_tE +000C7F58: push rbp +000C7F59: mov rbp, rsp +000C7F5C: sub rsp, 10h +000C7F60: mov [rbp+var_8], rdi +000C7F64: mov [rbp+var_C], esi +000C7F67: mov rax, [rbp+var_8] +000C7F6B: mov rax, [rax+8] +000C7F6F: mov edx, [rbp+var_C] +000C7F72: mov esi, edx +000C7F74: mov rdi, rax +000C7F77: call __ZN6serial6Serial10SerialImpl14setFlowcontrolENS_13flowcontrol_tE; serial::Serial::SerialImpl::setFlowcontrol(serial::flowcontrol_t) +000C7F7C: leave +000C7F7D: retn + +### FUNC 000C7F7E - 000C7F9C (30 bytes) name=_ZNK6serial6Serial14getFlowcontrolEv +000C7F7E: push rbp +000C7F7F: mov rbp, rsp +000C7F82: sub rsp, 10h +000C7F86: mov [rbp+var_8], rdi +000C7F8A: mov rax, [rbp+var_8] +000C7F8E: mov rax, [rax+8] +000C7F92: mov rdi, rax; this +000C7F95: call __ZNK6serial6Serial10SerialImpl14getFlowcontrolEv; serial::Serial::SerialImpl::getFlowcontrol(void) +000C7F9A: leave +000C7F9B: retn + +### FUNC 000C7F9C - 000C8033 (151 bytes) name=_ZN6serial6Serial5flushEv +000C7F9C: push rbp +000C7F9D: mov rbp, rsp +000C7FA0: push rbx +000C7FA1: sub rsp, 38h +000C7FA5: mov [rbp+var_38], rdi +000C7FA9: mov rax, [rbp+var_38] +000C7FAD: mov rdx, [rax+8] +000C7FB1: lea rax, [rbp+var_20] +000C7FB5: mov rsi, rdx; serial::Serial::SerialImpl * +000C7FB8: mov rdi, rax; this +000C7FBB: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C7FC0: mov rax, [rbp+var_38] +000C7FC4: mov rdx, [rax+8] +000C7FC8: lea rax, [rbp+var_30] +000C7FCC: mov rsi, rdx; serial::Serial::SerialImpl * +000C7FCF: mov rdi, rax; this +000C7FD2: call __ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE; serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *) +000C7FD7: mov rax, [rbp+var_38] +000C7FDB: mov rax, [rax+8] +000C7FDF: mov rdi, rax; this +000C7FE2: call __ZN6serial6Serial10SerialImpl5flushEv; serial::Serial::SerialImpl::flush(void) +000C7FE7: lea rax, [rbp+var_30] +000C7FEB: mov rdi, rax; this +000C7FEE: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C7FF3: lea rax, [rbp+var_20] +000C7FF7: mov rdi, rax; this +000C7FFA: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C7FFF: jmp short loc_C802C +000C8001: mov rbx, rax +000C8004: lea rax, [rbp+var_30] +000C8008: mov rdi, rax; this +000C800B: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C8010: jmp short loc_C8015 +000C8012: mov rbx, rax +000C8015: lea rax, [rbp+var_20] +000C8019: mov rdi, rax; this +000C801C: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C8021: mov rax, rbx +000C8024: mov rdi, rax; struct _Unwind_Exception * +000C8027: call __Unwind_Resume +000C802C: add rsp, 38h +000C8030: pop rbx +000C8031: pop rbp +000C8032: retn + +### FUNC 000C8034 - 000C8097 (99 bytes) name=_ZN6serial6Serial10flushInputEv +000C8034: push rbp +000C8035: mov rbp, rsp +000C8038: push rbx +000C8039: sub rsp, 28h +000C803D: mov [rbp+var_28], rdi +000C8041: mov rax, [rbp+var_28] +000C8045: mov rdx, [rax+8] +000C8049: lea rax, [rbp+var_20] +000C804D: mov rsi, rdx; serial::Serial::SerialImpl * +000C8050: mov rdi, rax; this +000C8053: call __ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE; serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *) +000C8058: mov rax, [rbp+var_28] +000C805C: mov rax, [rax+8] +000C8060: mov rdi, rax; this +000C8063: call __ZN6serial6Serial10SerialImpl10flushInputEv; serial::Serial::SerialImpl::flushInput(void) +000C8068: lea rax, [rbp+var_20] +000C806C: mov rdi, rax; this +000C806F: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C8074: jmp short loc_C8090 +000C8076: mov rbx, rax +000C8079: lea rax, [rbp+var_20] +000C807D: mov rdi, rax; this +000C8080: call __ZN6serial6Serial14ScopedReadLockD2Ev; serial::Serial::ScopedReadLock::~ScopedReadLock() +000C8085: mov rax, rbx +000C8088: mov rdi, rax; struct _Unwind_Exception * +000C808B: call __Unwind_Resume +000C8090: add rsp, 28h +000C8094: pop rbx +000C8095: pop rbp +000C8096: retn + +### FUNC 000C8098 - 000C80FB (99 bytes) name=_ZN6serial6Serial11flushOutputEv +000C8098: push rbp +000C8099: mov rbp, rsp +000C809C: push rbx +000C809D: sub rsp, 28h +000C80A1: mov [rbp+var_28], rdi +000C80A5: mov rax, [rbp+var_28] +000C80A9: mov rdx, [rax+8] +000C80AD: lea rax, [rbp+var_20] +000C80B1: mov rsi, rdx; serial::Serial::SerialImpl * +000C80B4: mov rdi, rax; this +000C80B7: call __ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE; serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *) +000C80BC: mov rax, [rbp+var_28] +000C80C0: mov rax, [rax+8] +000C80C4: mov rdi, rax; this +000C80C7: call __ZN6serial6Serial10SerialImpl11flushOutputEv; serial::Serial::SerialImpl::flushOutput(void) +000C80CC: lea rax, [rbp+var_20] +000C80D0: mov rdi, rax; this +000C80D3: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C80D8: jmp short loc_C80F4 +000C80DA: mov rbx, rax +000C80DD: lea rax, [rbp+var_20] +000C80E1: mov rdi, rax; this +000C80E4: call __ZN6serial6Serial15ScopedWriteLockD2Ev; serial::Serial::ScopedWriteLock::~ScopedWriteLock() +000C80E9: mov rax, rbx +000C80EC: mov rdi, rax; struct _Unwind_Exception * +000C80EF: call __Unwind_Resume +000C80F4: add rsp, 28h +000C80F8: pop rbx +000C80F9: pop rbp +000C80FA: retn + +### FUNC 000C80FC - 000C8122 (38 bytes) name=_ZN6serial6Serial9sendBreakEi +000C80FC: push rbp +000C80FD: mov rbp, rsp +000C8100: sub rsp, 10h +000C8104: mov [rbp+var_8], rdi +000C8108: mov [rbp+var_C], esi +000C810B: mov rax, [rbp+var_8] +000C810F: mov rax, [rax+8] +000C8113: mov edx, [rbp+var_C] +000C8116: mov esi, edx; int +000C8118: mov rdi, rax; this +000C811B: call __ZN6serial6Serial10SerialImpl9sendBreakEi; serial::Serial::SerialImpl::sendBreak(int) +000C8120: leave +000C8121: retn + +### FUNC 000C8122 - 000C814B (41 bytes) name=_ZN6serial6Serial8setBreakEb +000C8122: push rbp +000C8123: mov rbp, rsp +000C8126: sub rsp, 10h +000C812A: mov [rbp+var_8], rdi +000C812E: mov eax, esi +000C8130: mov [rbp+var_C], al +000C8133: movzx edx, [rbp+var_C] +000C8137: mov rax, [rbp+var_8] +000C813B: mov rax, [rax+8] +000C813F: mov esi, edx; bool +000C8141: mov rdi, rax; this +000C8144: call __ZN6serial6Serial10SerialImpl8setBreakEb; serial::Serial::SerialImpl::setBreak(bool) +000C8149: leave +000C814A: retn + +### FUNC 000C814C - 000C8175 (41 bytes) name=_ZN6serial6Serial6setRTSEb +000C814C: push rbp +000C814D: mov rbp, rsp +000C8150: sub rsp, 10h +000C8154: mov [rbp+var_8], rdi +000C8158: mov eax, esi +000C815A: mov [rbp+var_C], al +000C815D: movzx edx, [rbp+var_C] +000C8161: mov rax, [rbp+var_8] +000C8165: mov rax, [rax+8] +000C8169: mov esi, edx; bool +000C816B: mov rdi, rax; this +000C816E: call __ZN6serial6Serial10SerialImpl6setRTSEb; serial::Serial::SerialImpl::setRTS(bool) +000C8173: leave +000C8174: retn + +### FUNC 000C8176 - 000C819F (41 bytes) name=_ZN6serial6Serial6setDTREb +000C8176: push rbp +000C8177: mov rbp, rsp +000C817A: sub rsp, 10h +000C817E: mov [rbp+var_8], rdi +000C8182: mov eax, esi +000C8184: mov [rbp+var_C], al +000C8187: movzx edx, [rbp+var_C] +000C818B: mov rax, [rbp+var_8] +000C818F: mov rax, [rax+8] +000C8193: mov esi, edx; bool +000C8195: mov rdi, rax; this +000C8198: call __ZN6serial6Serial10SerialImpl6setDTREb; serial::Serial::SerialImpl::setDTR(bool) +000C819D: leave +000C819E: retn + +### FUNC 000C81A0 - 000C81BE (30 bytes) name=_ZN6serial6Serial13waitForChangeEv +000C81A0: push rbp +000C81A1: mov rbp, rsp +000C81A4: sub rsp, 10h +000C81A8: mov [rbp+var_8], rdi +000C81AC: mov rax, [rbp+var_8] +000C81B0: mov rax, [rax+8] +000C81B4: mov rdi, rax; this +000C81B7: call __ZN6serial6Serial10SerialImpl13waitForChangeEv; serial::Serial::SerialImpl::waitForChange(void) +000C81BC: leave +000C81BD: retn + +### FUNC 000C81BE - 000C81DC (30 bytes) name=_ZN6serial6Serial6getCTSEv +000C81BE: push rbp +000C81BF: mov rbp, rsp +000C81C2: sub rsp, 10h +000C81C6: mov [rbp+var_8], rdi +000C81CA: mov rax, [rbp+var_8] +000C81CE: mov rax, [rax+8] +000C81D2: mov rdi, rax; this +000C81D5: call __ZN6serial6Serial10SerialImpl6getCTSEv; serial::Serial::SerialImpl::getCTS(void) +000C81DA: leave +000C81DB: retn + +### FUNC 000C81DC - 000C81FA (30 bytes) name=_ZN6serial6Serial6getDSREv +000C81DC: push rbp +000C81DD: mov rbp, rsp +000C81E0: sub rsp, 10h +000C81E4: mov [rbp+var_8], rdi +000C81E8: mov rax, [rbp+var_8] +000C81EC: mov rax, [rax+8] +000C81F0: mov rdi, rax; this +000C81F3: call __ZN6serial6Serial10SerialImpl6getDSREv; serial::Serial::SerialImpl::getDSR(void) +000C81F8: leave +000C81F9: retn + +### FUNC 000C81FA - 000C8218 (30 bytes) name=_ZN6serial6Serial5getRIEv +000C81FA: push rbp +000C81FB: mov rbp, rsp +000C81FE: sub rsp, 10h +000C8202: mov [rbp+var_8], rdi +000C8206: mov rax, [rbp+var_8] +000C820A: mov rax, [rax+8] +000C820E: mov rdi, rax; this +000C8211: call __ZN6serial6Serial10SerialImpl5getRIEv; serial::Serial::SerialImpl::getRI(void) +000C8216: leave +000C8217: retn + +### FUNC 000C8218 - 000C8236 (30 bytes) name=_ZN6serial6Serial5getCDEv +000C8218: push rbp +000C8219: mov rbp, rsp +000C821C: sub rsp, 10h +000C8220: mov [rbp+var_8], rdi +000C8224: mov rax, [rbp+var_8] +000C8228: mov rax, [rax+8] +000C822C: mov rdi, rax; this +000C822F: call __ZN6serial6Serial10SerialImpl5getCDEv; serial::Serial::SerialImpl::getCD(void) +000C8234: leave +000C8235: retn + +### FUNC 000C8236 - 000C8262 (44 bytes) name=_ZN6serial6Serial14ScopedReadLockC2EPNS0_10SerialImplE +000C8236: push rbp; Alternative name is 'serial::Serial::ScopedReadLock::ScopedReadLock(serial::Serial::SerialImpl *)' +000C8237: mov rbp, rsp +000C823A: sub rsp, 10h +000C823E: mov [rbp+var_8], rdi +000C8242: mov [rbp+var_10], rsi +000C8246: mov rax, [rbp+var_8] +000C824A: mov rdx, [rbp+var_10] +000C824E: mov [rax], rdx +000C8251: mov rax, [rbp+var_8] +000C8255: mov rax, [rax] +000C8258: mov rdi, rax; this +000C825B: call __ZN6serial6Serial10SerialImpl8readLockEv; serial::Serial::SerialImpl::readLock(void) +000C8260: leave +000C8261: retn + +### FUNC 000C8262 - 000C827F (29 bytes) name=_ZN6serial6Serial14ScopedReadLockD2Ev +000C8262: push rbp; Alternative name is 'serial::Serial::ScopedReadLock::~ScopedReadLock()' +000C8263: mov rbp, rsp +000C8266: sub rsp, 10h +000C826A: mov [rbp+var_8], rdi +000C826E: mov rax, [rbp+var_8] +000C8272: mov rax, [rax] +000C8275: mov rdi, rax; this +000C8278: call __ZN6serial6Serial10SerialImpl10readUnlockEv; serial::Serial::SerialImpl::readUnlock(void) +000C827D: leave +000C827E: retn + +### FUNC 000C8280 - 000C82AC (44 bytes) name=_ZN6serial6Serial15ScopedWriteLockC2EPNS0_10SerialImplE +000C8280: push rbp; Alternative name is 'serial::Serial::ScopedWriteLock::ScopedWriteLock(serial::Serial::SerialImpl *)' +000C8281: mov rbp, rsp +000C8284: sub rsp, 10h +000C8288: mov [rbp+var_8], rdi +000C828C: mov [rbp+var_10], rsi +000C8290: mov rax, [rbp+var_8] +000C8294: mov rdx, [rbp+var_10] +000C8298: mov [rax], rdx +000C829B: mov rax, [rbp+var_8] +000C829F: mov rax, [rax] +000C82A2: mov rdi, rax; this +000C82A5: call __ZN6serial6Serial10SerialImpl9writeLockEv; serial::Serial::SerialImpl::writeLock(void) +000C82AA: leave +000C82AB: retn + +### FUNC 000C82AC - 000C82C9 (29 bytes) name=_ZN6serial6Serial15ScopedWriteLockD2Ev +000C82AC: push rbp; Alternative name is 'serial::Serial::ScopedWriteLock::~ScopedWriteLock()' +000C82AD: mov rbp, rsp +000C82B0: sub rsp, 10h +000C82B4: mov [rbp+var_8], rdi +000C82B8: mov rax, [rbp+var_8] +000C82BC: mov rax, [rax] +000C82BF: mov rdi, rax; this +000C82C2: call __ZN6serial6Serial10SerialImpl11writeUnlockEv; serial::Serial::SerialImpl::writeUnlock(void) +000C82C7: leave +000C82C8: retn + +### FUNC 000C82CA - 000C8300 (54 bytes) name=_ZNSt6vectorIhSaIhEE6insertIPhvEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_ +000C82CA: push rbp +000C82CB: mov rbp, rsp +000C82CE: sub rsp, 40h +000C82D2: mov [rbp+var_18], rdi +000C82D6: mov [rbp+var_20], rsi +000C82DA: mov [rbp+var_28], rdx +000C82DE: mov [rbp+var_30], rcx +000C82E2: mov rcx, [rbp+var_30] +000C82E6: mov rdx, [rbp+var_28] +000C82EA: mov rsi, [rbp+var_20] +000C82EE: mov rax, [rbp+var_18] +000C82F2: mov [rsp+40h+var_40], r8b +000C82F6: mov rdi, rax +000C82F9: call __ZNSt6vectorIhSaIhEE18_M_insert_dispatchIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St12__false_type; std::vector>::_M_insert_dispatch(__gnu_cxx::__normal_iterator>>,uchar *,uchar *,std::__false_type) +000C82FE: leave +000C82FF: retn + +### FUNC 000C8300 - 000C8336 (54 bytes) name=_ZNSt6vectorIhSaIhEE18_M_insert_dispatchIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St12__false_type +000C8300: push rbp +000C8301: mov rbp, rsp +000C8304: sub rsp, 40h +000C8308: mov [rbp+var_18], rdi +000C830C: mov [rbp+var_20], rsi +000C8310: mov [rbp+var_28], rdx +000C8314: mov [rbp+var_30], rcx +000C8318: mov rcx, [rbp+var_30] +000C831C: mov rdx, [rbp+var_28] +000C8320: mov rsi, [rbp+var_20] +000C8324: mov rax, [rbp+var_18] +000C8328: mov [rsp+40h+var_40], r8b +000C832C: mov rdi, rax +000C832F: call __ZNSt6vectorIhSaIhEE15_M_range_insertIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St20forward_iterator_tag; std::vector>::_M_range_insert(__gnu_cxx::__normal_iterator>>,uchar *,uchar *,std::forward_iterator_tag) +000C8334: leave +000C8335: retn + +### FUNC 000C8336 - 000C8706 (976 bytes) name=_ZNSt6vectorIhSaIhEE15_M_range_insertIPhEEvN9__gnu_cxx17__normal_iteratorIS3_S1_EET_S7_St20forward_iterator_tag +000C8336: push rbp +000C8337: mov rbp, rsp +000C833A: push r12 +000C833C: push rbx +000C833D: sub rsp, 70h +000C8341: mov [rbp+var_68], rdi +000C8345: mov [rbp+var_70], rsi +000C8349: mov [rbp+var_78], rdx +000C834D: mov [rbp+var_80], rcx +000C8351: mov rax, [rbp+var_78] +000C8355: cmp rax, [rbp+var_80] +000C8359: jz loc_C86FD +000C835F: mov rdx, [rbp+var_80] +000C8363: mov rax, [rbp+var_78] +000C8367: mov rsi, rdx +000C836A: mov rdi, rax +000C836D: call __ZSt8distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_; std::distance(uchar *,uchar *) +000C8372: mov [rbp+var_20], rax +000C8376: mov rax, [rbp+var_68] +000C837A: mov rax, [rax+10h] +000C837E: mov rdx, rax +000C8381: mov rax, [rbp+var_68] +000C8385: mov rax, [rax+8] +000C8389: sub rdx, rax +000C838C: mov rax, rdx +000C838F: cmp rax, [rbp+var_20] +000C8393: jb loc_C8544 +000C8399: mov rax, [rbp+var_68] +000C839D: mov rdi, rax +000C83A0: call __ZNSt6vectorIhSaIhEE3endEv; std::vector>::end(void) +000C83A5: mov [rbp+var_50], rax +000C83A9: lea rdx, [rbp+var_70] +000C83AD: lea rax, [rbp+var_50] +000C83B1: mov rsi, rdx +000C83B4: mov rdi, rax +000C83B7: call __ZN9__gnu_cxxmiIPhSt6vectorIhSaIhEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS8_SB_; __gnu_cxx::operator->>(__gnu_cxx::__normal_iterator>> const&,__gnu_cxx::__normal_iterator>> const&) +000C83BC: mov [rbp+var_28], rax +000C83C0: mov rax, [rbp+var_68] +000C83C4: mov rax, [rax+8] +000C83C8: mov [rbp+var_30], rax +000C83CC: mov rax, [rbp+var_28] +000C83D0: cmp rax, [rbp+var_20] +000C83D4: jbe loc_C8476 +000C83DA: mov rax, [rbp+var_68] +000C83DE: mov rdi, rax +000C83E1: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C83E6: mov rcx, rax +000C83E9: mov rax, [rbp+var_68] +000C83ED: mov rdx, [rax+8] +000C83F1: mov rax, [rbp+var_68] +000C83F5: mov rax, [rax+8] +000C83F9: mov rsi, [rbp+var_68] +000C83FD: mov rsi, [rsi+8] +000C8401: mov rdi, [rbp+var_20] +000C8405: neg rdi +000C8408: add rdi, rsi +000C840B: mov rsi, rax +000C840E: call __ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_a>(uchar *,uchar *,uchar *,std::allocator &) +000C8413: mov rax, [rbp+var_68] +000C8417: mov rdx, [rax+8] +000C841B: mov rax, [rbp+var_20] +000C841F: add rdx, rax +000C8422: mov rax, [rbp+var_68] +000C8426: mov [rax+8], rdx +000C842A: mov rax, [rbp+var_20] +000C842E: neg rax +000C8431: mov rdx, rax +000C8434: mov rax, [rbp+var_30] +000C8438: lea rbx, [rdx+rax] +000C843C: lea rax, [rbp+var_70] +000C8440: mov rdi, rax +000C8443: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C8448: mov rax, [rax] +000C844B: mov rdx, [rbp+var_30] +000C844F: mov rsi, rbx +000C8452: mov rdi, rax +000C8455: call __ZSt13move_backwardIPhS0_ET0_T_S2_S1_; std::move_backward(uchar *,uchar *,uchar *) +000C845A: mov rdx, [rbp+var_70] +000C845E: mov rcx, [rbp+var_80] +000C8462: mov rax, [rbp+var_78] +000C8466: mov rsi, rcx +000C8469: mov rdi, rax +000C846C: call __ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_; std::copy>>>(uchar *,uchar *,__gnu_cxx::__normal_iterator>>) +000C8471: jmp loc_C86A2 +000C8476: mov rax, [rbp+var_78] +000C847A: mov [rbp+var_58], rax +000C847E: mov rdx, [rbp+var_28] +000C8482: lea rax, [rbp+var_58] +000C8486: mov rsi, rdx +000C8489: mov rdi, rax +000C848C: call __ZSt7advanceIPhmEvRT_T0_; std::advance(uchar * &,ulong) +000C8491: mov rax, [rbp+var_68] +000C8495: mov rdi, rax +000C8498: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C849D: mov rcx, rax +000C84A0: mov rax, [rbp+var_68] +000C84A4: mov rdx, [rax+8] +000C84A8: mov rax, [rbp+var_58] +000C84AC: mov rsi, [rbp+var_80] +000C84B0: mov rdi, rax +000C84B3: call __ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E; std::__uninitialized_copy_a(uchar *,uchar *,uchar *,std::allocator &) +000C84B8: mov rax, [rbp+var_68] +000C84BC: mov rax, [rax+8] +000C84C0: mov rdx, [rbp+var_28] +000C84C4: mov rcx, [rbp+var_20] +000C84C8: sub rcx, rdx +000C84CB: mov rdx, rcx +000C84CE: add rdx, rax +000C84D1: mov rax, [rbp+var_68] +000C84D5: mov [rax+8], rdx +000C84D9: mov rax, [rbp+var_68] +000C84DD: mov rdi, rax +000C84E0: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C84E5: mov r12, rax +000C84E8: mov rax, [rbp+var_68] +000C84EC: mov rbx, [rax+8] +000C84F0: lea rax, [rbp+var_70] +000C84F4: mov rdi, rax +000C84F7: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C84FC: mov rax, [rax] +000C84FF: mov rsi, [rbp+var_30] +000C8503: mov rcx, r12 +000C8506: mov rdx, rbx +000C8509: mov rdi, rax +000C850C: call __ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_a>(uchar *,uchar *,uchar *,std::allocator &) +000C8511: mov rax, [rbp+var_68] +000C8515: mov rdx, [rax+8] +000C8519: mov rax, [rbp+var_28] +000C851D: add rdx, rax +000C8520: mov rax, [rbp+var_68] +000C8524: mov [rax+8], rdx +000C8528: mov rcx, [rbp+var_58] +000C852C: mov rdx, [rbp+var_70] +000C8530: mov rax, [rbp+var_78] +000C8534: mov rsi, rcx +000C8537: mov rdi, rax +000C853A: call __ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_; std::copy>>>(uchar *,uchar *,__gnu_cxx::__normal_iterator>>) +000C853F: jmp loc_C86A2 +000C8544: mov rcx, [rbp+var_20] +000C8548: mov rax, [rbp+var_68] +000C854C: lea rdx, aVectorMRangeIn; "vector::_M_range_insert" +000C8553: mov rsi, rcx +000C8556: mov rdi, rax +000C8559: call __ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc; std::vector>::_M_check_len(ulong,char const*) +000C855E: mov [rbp+var_38], rax +000C8562: mov rax, [rbp+var_68] +000C8566: mov rdx, [rbp+var_38] +000C856A: mov rsi, rdx +000C856D: mov rdi, rax +000C8570: call __ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm; std::_Vector_base>::_M_allocate(ulong) +000C8575: mov [rbp+var_40], rax +000C8579: mov rax, [rbp+var_40] +000C857D: mov [rbp+var_18], rax +000C8581: mov rax, [rbp+var_68] +000C8585: mov rdi, rax +000C8588: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C858D: mov rbx, rax +000C8590: lea rax, [rbp+var_70] +000C8594: mov rdi, rax +000C8597: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C859C: mov rsi, [rax] +000C859F: mov rax, [rbp+var_68] +000C85A3: mov rax, [rax] +000C85A6: mov rdx, [rbp+var_40] +000C85AA: mov rcx, rbx +000C85AD: mov rdi, rax +000C85B0: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +000C85B5: mov [rbp+var_18], rax +000C85B9: mov rax, [rbp+var_68] +000C85BD: mov rdi, rax +000C85C0: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C85C5: mov rcx, rax +000C85C8: mov rdx, [rbp+var_18] +000C85CC: mov rsi, [rbp+var_80] +000C85D0: mov rax, [rbp+var_78] +000C85D4: mov rdi, rax +000C85D7: call __ZSt22__uninitialized_copy_aIPhS0_hET0_T_S2_S1_RSaIT1_E; std::__uninitialized_copy_a(uchar *,uchar *,uchar *,std::allocator &) +000C85DC: mov [rbp+var_18], rax +000C85E0: mov rax, [rbp+var_68] +000C85E4: mov rdi, rax +000C85E7: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C85EC: mov r12, rax +000C85EF: mov rax, [rbp+var_68] +000C85F3: mov rbx, [rax+8] +000C85F7: lea rax, [rbp+var_70] +000C85FB: mov rdi, rax +000C85FE: call __ZNK9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEE4baseEv; __gnu_cxx::__normal_iterator>>::base(void) +000C8603: mov rax, [rax] +000C8606: mov rdx, [rbp+var_18] +000C860A: mov rcx, r12 +000C860D: mov rsi, rbx +000C8610: mov rdi, rax +000C8613: call __ZSt34__uninitialized_move_if_noexcept_aIPhS0_SaIhEET0_T_S3_S2_RT1_; std::__uninitialized_move_if_noexcept_a>(uchar *,uchar *,uchar *,std::allocator &) +000C8618: mov [rbp+var_18], rax +000C861C: mov rax, [rbp+var_68] +000C8620: mov rdi, rax +000C8623: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C8628: mov rdx, rax +000C862B: mov rax, [rbp+var_68] +000C862F: mov rcx, [rax+8] +000C8633: mov rax, [rbp+var_68] +000C8637: mov rax, [rax] +000C863A: mov rsi, rcx +000C863D: mov rdi, rax +000C8640: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C8645: mov rax, [rbp+var_68] +000C8649: mov rax, [rax+10h] +000C864D: mov rdx, rax +000C8650: mov rax, [rbp+var_68] +000C8654: mov rax, [rax] +000C8657: sub rdx, rax +000C865A: mov rax, rdx +000C865D: mov rdx, rax +000C8660: mov rax, [rbp+var_68] +000C8664: mov rcx, [rax] +000C8667: mov rax, [rbp+var_68] +000C866B: mov rsi, rcx +000C866E: mov rdi, rax +000C8671: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C8676: mov rax, [rbp+var_68] +000C867A: mov rdx, [rbp+var_40] +000C867E: mov [rax], rdx +000C8681: mov rax, [rbp+var_68] +000C8685: mov rdx, [rbp+var_18] +000C8689: mov [rax+8], rdx +000C868D: mov rax, [rbp+var_38] +000C8691: mov rdx, [rbp+var_40] +000C8695: add rdx, rax +000C8698: mov rax, [rbp+var_68] +000C869C: mov [rax+10h], rdx +000C86A0: jmp short loc_C86FD +000C86A2: jmp short loc_C86FD +000C86A4: mov rdi, rax; void * +000C86A7: call ___cxa_begin_catch +000C86AC: mov rax, [rbp+var_68] +000C86B0: mov rdi, rax +000C86B3: call __ZNSt12_Vector_baseIhSaIhEE19_M_get_Tp_allocatorEv; std::_Vector_base>::_M_get_Tp_allocator(void) +000C86B8: mov rdx, rax +000C86BB: mov rcx, [rbp+var_18] +000C86BF: mov rax, [rbp+var_40] +000C86C3: mov rsi, rcx +000C86C6: mov rdi, rax +000C86C9: call __ZSt8_DestroyIPhhEvT_S1_RSaIT0_E; std::_Destroy(uchar *,uchar *,std::allocator &) +000C86CE: mov rax, [rbp+var_68] +000C86D2: mov rdx, [rbp+var_38] +000C86D6: mov rcx, [rbp+var_40] +000C86DA: mov rsi, rcx +000C86DD: mov rdi, rax +000C86E0: call __ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm; std::_Vector_base>::_M_deallocate(uchar *,ulong) +000C86E5: call ___cxa_rethrow +000C86EA: mov rbx, rax +000C86ED: call ___cxa_end_catch +000C86F2: mov rax, rbx +000C86F5: mov rdi, rax; struct _Unwind_Exception * +000C86F8: call __Unwind_Resume +000C86FD: add rsp, 70h +000C8701: pop rbx +000C8702: pop r12 +000C8704: pop rbp +000C8705: retn + +### FUNC 000C8706 - 000C8740 (58 bytes) name=_ZSt8distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_ +000C8706: push rbp +000C8707: mov rbp, rsp +000C870A: push rbx +000C870B: sub rsp, 38h +000C870F: mov [rbp+var_28], rdi +000C8713: mov [rbp+var_30], rsi +000C8717: lea rax, [rbp+var_28] +000C871B: mov rdi, rax +000C871E: call __ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_; std::__iterator_category(uchar * const&) +000C8723: mov rax, [rbp+var_28] +000C8727: mov rdx, [rbp+var_30] +000C872B: mov [rsp+40h+var_40], bl +000C872E: mov rsi, rdx +000C8731: mov rdi, rax +000C8734: call __ZSt10__distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag; std::__distance(uchar *,uchar *,std::random_access_iterator_tag) +000C8739: add rsp, 38h +000C873D: pop rbx +000C873E: pop rbp +000C873F: retn + +### FUNC 000C8740 - 000C8786 (70 bytes) name=_ZSt4copyIPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET0_T_S8_S7_ +000C8740: push rbp +000C8741: mov rbp, rsp +000C8744: push rbx +000C8745: sub rsp, 28h +000C8749: mov [rbp+var_18], rdi +000C874D: mov [rbp+var_20], rsi +000C8751: mov [rbp+var_30], rdx +000C8755: mov rax, [rbp+var_20] +000C8759: mov rdi, rax +000C875C: call __ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(uchar *) +000C8761: mov rbx, rax +000C8764: mov rax, [rbp+var_18] +000C8768: mov rdi, rax +000C876B: call __ZSt12__miter_baseIPhENSt11_Miter_baseIT_E13iterator_typeES2_; std::__miter_base(uchar *) +000C8770: mov rdx, [rbp+var_30] +000C8774: mov rsi, rbx +000C8777: mov rdi, rax +000C877A: call __ZSt14__copy_move_a2ILb0EPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET1_T0_S8_S7_; std::__copy_move_a2>>>(uchar *,uchar *,__gnu_cxx::__normal_iterator>>) +000C877F: add rsp, 28h +000C8783: pop rbx +000C8784: pop rbp +000C8785: retn + +### FUNC 000C8786 - 000C87C8 (66 bytes) name=_ZSt7advanceIPhmEvRT_T0_ +000C8786: push rbp +000C8787: mov rbp, rsp +000C878A: push rbx +000C878B: sub rsp, 38h +000C878F: mov [rbp+var_28], rdi +000C8793: mov [rbp+var_30], rsi +000C8797: mov rax, [rbp+var_30] +000C879B: mov [rbp+var_18], rax +000C879F: mov rax, [rbp+var_28] +000C87A3: mov rdi, rax +000C87A6: call __ZSt19__iterator_categoryIPhENSt15iterator_traitsIT_E17iterator_categoryERKS2_; std::__iterator_category(uchar * const&) +000C87AB: mov rdx, [rbp+var_18] +000C87AF: mov rax, [rbp+var_28] +000C87B3: mov [rsp+40h+var_40], bl +000C87B6: mov rsi, rdx +000C87B9: mov rdi, rax +000C87BC: call __ZSt9__advanceIPhlEvRT_T0_St26random_access_iterator_tag; std::__advance(uchar * &,long,std::random_access_iterator_tag) +000C87C1: add rsp, 38h +000C87C5: pop rbx +000C87C6: pop rbp +000C87C7: retn + +### FUNC 000C87C8 - 000C87E4 (28 bytes) name=_ZSt10__distanceIPhENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag +000C87C8: push rbp +000C87C9: mov rbp, rsp +000C87CC: mov [rbp+var_8], rdi +000C87D0: mov [rbp+var_10], rsi +000C87D4: mov rdx, [rbp+var_10] +000C87D8: mov rax, [rbp+var_8] +000C87DC: sub rdx, rax +000C87DF: mov rax, rdx +000C87E2: pop rbp +000C87E3: retn + +### FUNC 000C87E4 - 000C8857 (115 bytes) name=_ZSt14__copy_move_a2ILb0EPhN9__gnu_cxx17__normal_iteratorIS0_St6vectorIhSaIhEEEEET1_T0_S8_S7_ +000C87E4: push rbp +000C87E5: mov rbp, rsp +000C87E8: push r12 +000C87EA: push rbx +000C87EB: sub rsp, 30h +000C87EF: mov [rbp+var_28], rdi +000C87F3: mov [rbp+var_30], rsi +000C87F7: mov [rbp+var_40], rdx +000C87FB: mov rax, [rbp+var_40] +000C87FF: mov rdi, rax +000C8802: call __ZSt12__niter_baseIN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEENSt11_Niter_baseIT_E13iterator_typeES8_; std::__niter_base<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>) +000C8807: mov r12, rax +000C880A: mov rax, [rbp+var_30] +000C880E: mov rdi, rax +000C8811: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000C8816: mov rbx, rax +000C8819: mov rax, [rbp+var_28] +000C881D: mov rdi, rax +000C8820: call __ZSt12__niter_baseIPhENSt11_Niter_baseIT_E13iterator_typeES2_; std::__niter_base(uchar *) +000C8825: mov rdx, r12 +000C8828: mov rsi, rbx +000C882B: mov rdi, rax +000C882E: call __ZSt13__copy_move_aILb0EPhS0_ET1_T0_S2_S1_; std::__copy_move_a(uchar *,uchar *,uchar *) +000C8833: mov [rbp+var_18], rax +000C8837: lea rdx, [rbp+var_18] +000C883B: lea rax, [rbp+var_20] +000C883F: mov rsi, rdx +000C8842: mov rdi, rax +000C8845: call __ZN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEC2ERKS1_; __gnu_cxx::__normal_iterator>>::__normal_iterator(uchar * const&) +000C884A: mov rax, [rbp+var_20] +000C884E: add rsp, 30h +000C8852: pop rbx +000C8853: pop r12 +000C8855: pop rbp +000C8856: retn + +### FUNC 000C8858 - 000C895F (263 bytes) name=_ZN6serial16MillisecondTimerC2Ej +000C8858: push rbp; Alternative name is 'serial::MillisecondTimer::MillisecondTimer(unsigned int)' +000C8859: mov rbp, rsp +000C885C: push rbx +000C885D: sub rsp, 28h +000C8861: mov [rbp+var_28], rdi +000C8865: mov [rbp+var_2C], esi +000C8868: mov rbx, [rbp+var_28] +000C886C: call __ZN6serial16MillisecondTimer12timespec_nowEv; serial::MillisecondTimer::timespec_now(void) +000C8871: mov [rbx], rax +000C8874: mov [rbx+8], rdx +000C8878: mov rax, [rbp+var_28] +000C887C: mov rax, [rax+8] +000C8880: cvtsi2sd xmm1, rax +000C8885: mov eax, [rbp+var_2C] +000C8888: test rax, rax +000C888B: js short loc_C8894 +000C888D: cvtsi2sd xmm0, rax +000C8892: jmp short loc_C88A9 +000C8894: mov rdx, rax +000C8897: shr rdx, 1 +000C889A: and eax, 1 +000C889D: or rdx, rax +000C88A0: cvtsi2sd xmm0, rdx +000C88A5: addsd xmm0, xmm0 +000C88A9: movsd xmm2, cs:qword_D4EB0 +000C88B1: mulsd xmm0, xmm2 +000C88B5: addsd xmm0, xmm1 +000C88B9: cvttsd2si rax, xmm0 +000C88BE: mov [rbp+var_18], rax +000C88C2: cvtsi2sd xmm0, [rbp+var_18] +000C88C8: ucomisd xmm0, cs:qword_D4EB8 +000C88D0: jb short loc_C894C +000C88D2: mov rcx, [rbp+var_18] +000C88D6: mov rdx, 112E0BE826D694B3h +000C88E0: mov rax, rcx +000C88E3: imul rdx +000C88E6: sar rdx, 1Ah +000C88EA: mov rax, rcx +000C88ED: sar rax, 3Fh +000C88F1: sub rdx, rax +000C88F4: mov rax, rdx +000C88F7: mov [rbp+var_20], rax +000C88FB: mov rcx, [rbp+var_18] +000C88FF: mov rdx, 112E0BE826D694B3h +000C8909: mov rax, rcx +000C890C: imul rdx +000C890F: sar rdx, 1Ah +000C8913: mov rax, rcx +000C8916: sar rax, 3Fh +000C891A: sub rdx, rax +000C891D: mov rax, rdx +000C8920: imul rax, 3B9ACA00h +000C8927: sub rcx, rax +000C892A: mov rax, rcx +000C892D: mov rdx, [rbp+var_28] +000C8931: mov [rdx+8], rax +000C8935: mov rax, [rbp+var_28] +000C8939: mov rdx, [rax] +000C893C: mov rax, [rbp+var_20] +000C8940: add rdx, rax +000C8943: mov rax, [rbp+var_28] +000C8947: mov [rax], rdx +000C894A: jmp short loc_C8958 +000C894C: mov rax, [rbp+var_28] +000C8950: mov rdx, [rbp+var_18] +000C8954: mov [rax+8], rdx +000C8958: add rsp, 28h +000C895C: pop rbx +000C895D: pop rbp +000C895E: retn + +### FUNC 000C8960 - 000C89E0 (128 bytes) name=_ZN6serial16MillisecondTimer9remainingEv +000C8960: push rbp +000C8961: mov rbp, rsp +000C8964: sub rsp, 30h +000C8968: mov [rbp+var_28], rdi +000C896C: call __ZN6serial16MillisecondTimer12timespec_nowEv; serial::MillisecondTimer::timespec_now(void) +000C8971: mov [rbp+var_20], rax +000C8975: mov [rbp+var_18], rdx +000C8979: mov rax, [rbp+var_28] +000C897D: mov rdx, [rax] +000C8980: mov rax, [rbp+var_20] +000C8984: sub rdx, rax +000C8987: mov rax, rdx +000C898A: cvtsi2sd xmm0, rax +000C898F: movsd xmm1, cs:qword_D4EC0 +000C8997: mulsd xmm0, xmm1 +000C899B: cvttsd2si rax, xmm0 +000C89A0: mov [rbp+var_8], rax +000C89A4: cvtsi2sd xmm1, [rbp+var_8] +000C89AA: mov rax, [rbp+var_28] +000C89AE: mov rdx, [rax+8] +000C89B2: mov rax, [rbp+var_18] +000C89B6: sub rdx, rax +000C89B9: mov rax, rdx +000C89BC: cvtsi2sd xmm0, rax +000C89C1: movsd xmm2, cs:qword_D4EB0 +000C89C9: divsd xmm0, xmm2 +000C89CD: addsd xmm0, xmm1 +000C89D1: cvttsd2si rax, xmm0 +000C89D6: mov [rbp+var_8], rax +000C89DA: mov rax, [rbp+var_8] +000C89DE: leave +000C89DF: retn + +### FUNC 000C89E0 - 000C8A03 (35 bytes) name=_ZN6serial16MillisecondTimer12timespec_nowEv +000C89E0: push rbp +000C89E1: mov rbp, rsp +000C89E4: sub rsp, 10h +000C89E8: lea rax, [rbp+tp] +000C89EC: mov rsi, rax; tp +000C89EF: mov edi, 1; clock_id +000C89F4: call _clock_gettime +000C89F9: mov rax, [rbp+tp.tv_sec] +000C89FD: mov rdx, [rbp+tp.tv_nsec] +000C8A01: leave +000C8A02: retn + +### FUNC 000C8A03 - 000C8A9F (156 bytes) name=_Z16timespec_from_msj +000C8A03: push rbp +000C8A04: mov rbp, rsp +000C8A07: mov [rbp+var_14], edi +000C8A0A: mov eax, [rbp+var_14] +000C8A0D: test rax, rax +000C8A10: js short loc_C8A19 +000C8A12: cvtsi2sd xmm0, rax +000C8A17: jmp short loc_C8A2E +000C8A19: mov rdx, rax +000C8A1C: shr rdx, 1 +000C8A1F: and eax, 1 +000C8A22: or rdx, rax +000C8A25: cvtsi2sd xmm0, rdx +000C8A2A: addsd xmm0, xmm0 +000C8A2E: movsd xmm1, cs:qword_D4EC0 +000C8A36: divsd xmm0, xmm1 +000C8A3A: cvttsd2si rax, xmm0 +000C8A3F: mov [rbp+var_10], rax +000C8A43: mov eax, [rbp+var_14] +000C8A46: test rax, rax +000C8A49: js short loc_C8A52 +000C8A4B: cvtsi2sd xmm0, rax +000C8A50: jmp short loc_C8A67 +000C8A52: mov rdx, rax +000C8A55: shr rdx, 1 +000C8A58: and eax, 1 +000C8A5B: or rdx, rax +000C8A5E: cvtsi2sd xmm0, rdx +000C8A63: addsd xmm0, xmm0 +000C8A67: mov rax, [rbp+var_10] +000C8A6B: cvtsi2sd xmm1, rax +000C8A70: movsd xmm2, cs:qword_D4EC0 +000C8A78: mulsd xmm1, xmm2 +000C8A7C: subsd xmm0, xmm1 +000C8A80: movsd xmm1, cs:qword_D4EB0 +000C8A88: mulsd xmm0, xmm1 +000C8A8C: cvttsd2si rax, xmm0 +000C8A91: mov [rbp+var_8], rax +000C8A95: mov rax, [rbp+var_10] +000C8A99: mov rdx, [rbp+var_8] +000C8A9D: pop rbp +000C8A9E: retn + +### FUNC 000C8AA0 - 000C8BDF (319 bytes) name=_ZN6serial6Serial10SerialImplC2ERKSsmNS_10bytesize_tENS_8parity_tENS_10stopbits_tENS_13flowcontrol_tE +000C8AA0: push rbp; Alternative name is 'serial::Serial::SerialImpl::SerialImpl(std::string const&, unsigned long, serial::bytesize_t, serial::parity_t, serial::stopbits_t, serial::flowcontrol_t)' +000C8AA1: mov rbp, rsp +000C8AA4: push rbx +000C8AA5: sub rsp, 38h +000C8AA9: mov [rbp+var_18], rdi +000C8AAD: mov [rbp+var_20], rsi +000C8AB1: mov [rbp+var_28], rdx +000C8AB5: mov [rbp+var_2C], ecx +000C8AB8: mov [rbp+var_30], r8d +000C8ABC: mov [rbp+var_34], r9d +000C8AC0: mov rax, [rbp+var_18] +000C8AC4: mov rdx, cs:_ZTVN6serial6Serial10SerialImplE_ptr +000C8ACB: lea rdx, [rdx+10h] +000C8ACF: mov [rax], rdx +000C8AD2: mov rax, [rbp+var_18] +000C8AD6: lea rdx, [rax+8] +000C8ADA: mov rax, [rbp+var_20] +000C8ADE: mov rsi, rax; std::string * +000C8AE1: mov rdi, rdx; this +000C8AE4: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000C8AE9: mov rax, [rbp+var_18] +000C8AED: mov dword ptr [rax+10h], 0FFFFFFFFh +000C8AF4: mov rax, [rbp+var_18] +000C8AF8: mov byte ptr [rax+14h], 0 +000C8AFC: mov rax, [rbp+var_18] +000C8B00: mov byte ptr [rax+15h], 0 +000C8B04: mov rax, [rbp+var_18] +000C8B08: mov byte ptr [rax+16h], 0 +000C8B0C: mov rax, [rbp+var_18] +000C8B10: add rax, 18h +000C8B14: mov r9d, 0; unsigned int +000C8B1A: mov r8d, 0; unsigned int +000C8B20: mov ecx, 0; unsigned int +000C8B25: mov edx, 0; unsigned int +000C8B2A: mov esi, 0; unsigned int +000C8B2F: mov rdi, rax; this +000C8B32: call __ZN6serial7TimeoutC2Ejjjjj; serial::Timeout::Timeout(uint,uint,uint,uint,uint) +000C8B37: mov rax, [rbp+var_18] +000C8B3B: mov rdx, [rbp+var_28] +000C8B3F: mov [rax+30h], rdx +000C8B43: mov rax, [rbp+var_18] +000C8B47: mov edx, [rbp+var_30] +000C8B4A: mov [rax+3Ch], edx +000C8B4D: mov rax, [rbp+var_18] +000C8B51: mov edx, [rbp+var_2C] +000C8B54: mov [rax+40h], edx +000C8B57: mov rax, [rbp+var_18] +000C8B5B: mov edx, [rbp+var_34] +000C8B5E: mov [rax+44h], edx +000C8B61: mov rax, [rbp+var_18] +000C8B65: mov edx, [rbp+arg_0] +000C8B68: mov [rax+48h], edx +000C8B6B: mov rax, [rbp+var_18] +000C8B6F: add rax, 50h ; 'P' +000C8B73: mov esi, 0; mutexattr +000C8B78: mov rdi, rax; mutex +000C8B7B: call _pthread_mutex_init +000C8B80: mov rax, [rbp+var_18] +000C8B84: add rax, 78h ; 'x' +000C8B88: mov esi, 0; mutexattr +000C8B8D: mov rdi, rax; mutex +000C8B90: call _pthread_mutex_init +000C8B95: mov rax, [rbp+var_18] +000C8B99: add rax, 8 +000C8B9D: mov rdi, rax; this +000C8BA0: call __ZNKSs5emptyEv; std::string::empty(void) +000C8BA5: xor eax, 1 +000C8BA8: test al, al +000C8BAA: jz short loc_C8BD8 +000C8BAC: mov rax, [rbp+var_18] +000C8BB0: mov rdi, rax; this +000C8BB3: call __ZN6serial6Serial10SerialImpl4openEv; serial::Serial::SerialImpl::open(void) +000C8BB8: jmp short loc_C8BD8 +000C8BBA: mov rbx, rax +000C8BBD: mov rax, [rbp+var_18] +000C8BC1: add rax, 8 +000C8BC5: mov rdi, rax; this +000C8BC8: call __ZNSsD1Ev; std::string::~string() +000C8BCD: mov rax, rbx +000C8BD0: mov rdi, rax; struct _Unwind_Exception * +000C8BD3: call __Unwind_Resume +000C8BD8: add rsp, 38h +000C8BDC: pop rbx +000C8BDD: pop rbp +000C8BDE: retn + +### FUNC 000C8BE0 - 000C8C51 (113 bytes) name=_ZN6serial6Serial10SerialImplD2Ev +000C8BE0: push rbp; Alternative name is 'serial::Serial::SerialImpl::~SerialImpl()' +000C8BE1: mov rbp, rsp +000C8BE4: sub rsp, 10h +000C8BE8: mov [rbp+var_8], rdi +000C8BEC: mov rax, [rbp+var_8] +000C8BF0: mov rdx, cs:_ZTVN6serial6Serial10SerialImplE_ptr +000C8BF7: lea rdx, [rdx+10h] +000C8BFB: mov [rax], rdx +000C8BFE: mov rax, [rbp+var_8] +000C8C02: mov rdi, rax; this +000C8C05: call __ZN6serial6Serial10SerialImpl5closeEv; serial::Serial::SerialImpl::close(void) +000C8C0A: mov rax, [rbp+var_8] +000C8C0E: add rax, 50h ; 'P' +000C8C12: mov rdi, rax; mutex +000C8C15: call _pthread_mutex_destroy +000C8C1A: mov rax, [rbp+var_8] +000C8C1E: add rax, 78h ; 'x' +000C8C22: mov rdi, rax; mutex +000C8C25: call _pthread_mutex_destroy +000C8C2A: mov rax, [rbp+var_8] +000C8C2E: add rax, 8 +000C8C32: mov rdi, rax; this +000C8C35: call __ZNSsD1Ev; std::string::~string() +000C8C3A: mov eax, 0 +000C8C3F: test eax, eax +000C8C41: jz short locret_C8C4F +000C8C43: mov rax, [rbp+var_8] +000C8C47: mov rdi, rax; void * +000C8C4A: call __ZdlPv; operator delete(void *) +000C8C4F: leave +000C8C50: retn + +### FUNC 000C8C52 - 000C8C78 (38 bytes) name=_ZN6serial6Serial10SerialImplD0Ev +000C8C52: push rbp +000C8C53: mov rbp, rsp +000C8C56: sub rsp, 10h +000C8C5A: mov [rbp+var_8], rdi +000C8C5E: mov rax, [rbp+var_8] +000C8C62: mov rdi, rax; this +000C8C65: call __ZN6serial6Serial10SerialImplD2Ev; serial::Serial::SerialImpl::~SerialImpl() +000C8C6A: mov rax, [rbp+var_8] +000C8C6E: mov rdi, rax; void * +000C8C71: call __ZdlPv; operator delete(void *) +000C8C76: leave +000C8C77: retn + +### FUNC 000C8C78 - 000C8F92 (794 bytes) name=_ZN6serial6Serial10SerialImpl4openEv +000C8C78: push rbp +000C8C79: mov rbp, rsp +000C8C7C: push r12 +000C8C7E: push rbx +000C8C7F: sub rsp, 40h +000C8C83: mov [rbp+var_48], rdi +000C8C87: mov rax, [rbp+var_48] +000C8C8B: add rax, 8 +000C8C8F: mov rdi, rax; this +000C8C92: call __ZNKSs5emptyEv; std::string::empty(void) +000C8C97: test al, al +000C8C99: jz short loc_C8D0E +000C8C9B: mov edi, 10h; thrown_size +000C8CA0: call ___cxa_allocate_exception +000C8CA5: mov rbx, rax +000C8CA8: lea rax, [rbp+var_31] +000C8CAC: mov rdi, rax +000C8CAF: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C8CB4: lea rdx, [rbp+var_31] +000C8CB8: lea rax, [rbp+var_40] +000C8CBC: lea rsi, aEmptyPortIsInv; "Empty port is invalid." +000C8CC3: mov rdi, rax +000C8CC6: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C8CCB: lea rax, [rbp+var_40] +000C8CCF: mov rsi, rax; std::string * +000C8CD2: mov rdi, rbx; this +000C8CD5: call __ZNSt16invalid_argumentC1ERKSs; std::invalid_argument::invalid_argument(std::string const&) +000C8CDA: lea rax, [rbp+var_40] +000C8CDE: mov rdi, rax; this +000C8CE1: call __ZNSsD1Ev; std::string::~string() +000C8CE6: lea rax, [rbp+var_31] +000C8CEA: mov rdi, rax +000C8CED: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C8CF2: mov rax, cs:_ZNSt16invalid_argumentD1Ev_ptr +000C8CF9: mov rdx, rax; void (__fastcall *)(void *) +000C8CFC: mov rax, cs:_ZTISt16invalid_argument_ptr +000C8D03: mov rsi, rax; lptinfo +000C8D06: mov rdi, rbx; void * +000C8D09: call ___cxa_throw +000C8D0E: mov rax, [rbp+var_48] +000C8D12: movzx eax, byte ptr [rax+14h] +000C8D16: test al, al +000C8D18: jz short loc_C8D52 +000C8D1A: mov edi, 10h; thrown_size +000C8D1F: call ___cxa_allocate_exception +000C8D24: mov rbx, rax +000C8D27: lea rsi, aSerialPortAlre; "Serial port already open." +000C8D2E: mov rdi, rbx; this +000C8D31: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000C8D36: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000C8D3D: mov rdx, rax; void (__fastcall *)(void *) +000C8D40: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000C8D47: mov rsi, rax; lptinfo +000C8D4A: mov rdi, rbx; void * +000C8D4D: call ___cxa_throw +000C8D52: mov rax, [rbp+var_48] +000C8D56: add rax, 8 +000C8D5A: mov rdi, rax; this +000C8D5D: call __ZNKSs5c_strEv; std::string::c_str(void) +000C8D62: mov esi, 902h; oflag +000C8D67: mov rdi, rax; file +000C8D6A: mov eax, 0 +000C8D6F: call _open +000C8D74: mov rdx, [rbp+var_48] +000C8D78: mov [rdx+10h], eax +000C8D7B: mov rax, [rbp+var_48] +000C8D7F: mov eax, [rax+10h] +000C8D82: cmp eax, 0FFFFFFFFh +000C8D85: jnz loc_C8EC1 +000C8D8B: call ___errno_location +000C8D90: mov eax, [rax] +000C8D92: cmp eax, 4 +000C8D95: jz short loc_C8DAE +000C8D97: cmp eax, 4 +000C8D9A: jl loc_C8E3E +000C8DA0: sub eax, 17h +000C8DA3: cmp eax, 1 +000C8DA6: ja loc_C8E3E +000C8DAC: jmp short loc_C8DBF +000C8DAE: mov rax, [rbp+var_48] +000C8DB2: mov rdi, rax; this +000C8DB5: call __ZN6serial6Serial10SerialImpl4openEv; serial::Serial::SerialImpl::open(void) +000C8DBA: jmp loc_C8F89 +000C8DBF: mov edi, 28h ; '('; thrown_size +000C8DC4: call ___cxa_allocate_exception +000C8DC9: mov rbx, rax +000C8DCC: lea rax, [rbp+var_21] +000C8DD0: mov rdi, rax +000C8DD3: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C8DD8: lea rdx, [rbp+var_21] +000C8DDC: lea rax, [rbp+var_30] +000C8DE0: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C8DE7: mov rdi, rax +000C8DEA: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C8DEF: lea rax, [rbp+var_30] +000C8DF3: lea rcx, aTooManyFileHan; "Too many file handles open." +000C8DFA: mov edx, 95h +000C8DFF: mov rsi, rax +000C8E02: mov rdi, rbx +000C8E05: call __ZN6serial11IOExceptionC2ESsiPKc; serial::IOException::IOException(std::string,int,char const*) +000C8E0A: lea rax, [rbp+var_30] +000C8E0E: mov rdi, rax; this +000C8E11: call __ZNSsD1Ev; std::string::~string() +000C8E16: lea rax, [rbp+var_21] +000C8E1A: mov rdi, rax +000C8E1D: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C8E22: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C8E29: mov rdx, rax; void (__fastcall *)(void *) +000C8E2C: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C8E33: mov rsi, rax; lptinfo +000C8E36: mov rdi, rbx; void * +000C8E39: call ___cxa_throw +000C8E3E: mov edi, 28h ; '('; thrown_size +000C8E43: call ___cxa_allocate_exception +000C8E48: mov rbx, rax +000C8E4B: call ___errno_location +000C8E50: mov r12d, [rax] +000C8E53: lea rax, [rbp+var_11] +000C8E57: mov rdi, rax +000C8E5A: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C8E5F: lea rdx, [rbp+var_11] +000C8E63: lea rax, [rbp+var_20] +000C8E67: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C8E6E: mov rdi, rax +000C8E71: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C8E76: lea rax, [rbp+var_20] +000C8E7A: mov ecx, r12d +000C8E7D: mov edx, 97h +000C8E82: mov rsi, rax +000C8E85: mov rdi, rbx +000C8E88: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000C8E8D: lea rax, [rbp+var_20] +000C8E91: mov rdi, rax; this +000C8E94: call __ZNSsD1Ev; std::string::~string() +000C8E99: lea rax, [rbp+var_11] +000C8E9D: mov rdi, rax +000C8EA0: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C8EA5: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C8EAC: mov rdx, rax; void (__fastcall *)(void *) +000C8EAF: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C8EB6: mov rsi, rax; lptinfo +000C8EB9: mov rdi, rbx; void * +000C8EBC: call ___cxa_throw +000C8EC1: mov rax, [rbp+var_48] +000C8EC5: mov rdi, rax; this +000C8EC8: call __ZN6serial6Serial10SerialImpl15reconfigurePortEv; serial::Serial::SerialImpl::reconfigurePort(void) +000C8ECD: mov rax, [rbp+var_48] +000C8ED1: mov byte ptr [rax+14h], 1 +000C8ED5: jmp loc_C8F89 +000C8EDA: mov r12, rax +000C8EDD: lea rax, [rbp+var_40] +000C8EE1: mov rdi, rax; this +000C8EE4: call __ZNSsD1Ev; std::string::~string() +000C8EE9: jmp short loc_C8EEE +000C8EEB: mov r12, rax +000C8EEE: lea rax, [rbp+var_31] +000C8EF2: mov rdi, rax +000C8EF5: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C8EFA: mov rdi, rbx; void * +000C8EFD: call ___cxa_free_exception +000C8F02: mov rax, r12 +000C8F05: mov rdi, rax; struct _Unwind_Exception * +000C8F08: call __Unwind_Resume +000C8F0D: mov r12, rax +000C8F10: mov rdi, rbx; void * +000C8F13: call ___cxa_free_exception +000C8F18: mov rax, r12 +000C8F1B: mov rdi, rax; struct _Unwind_Exception * +000C8F1E: call __Unwind_Resume +000C8F23: mov r12, rax +000C8F26: lea rax, [rbp+var_30] +000C8F2A: mov rdi, rax; this +000C8F2D: call __ZNSsD1Ev; std::string::~string() +000C8F32: jmp short loc_C8F37 +000C8F34: mov r12, rax +000C8F37: lea rax, [rbp+var_21] +000C8F3B: mov rdi, rax +000C8F3E: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C8F43: mov rdi, rbx; void * +000C8F46: call ___cxa_free_exception +000C8F4B: mov rax, r12 +000C8F4E: mov rdi, rax; struct _Unwind_Exception * +000C8F51: call __Unwind_Resume +000C8F56: mov r12, rax +000C8F59: lea rax, [rbp+var_20] +000C8F5D: mov rdi, rax; this +000C8F60: call __ZNSsD1Ev; std::string::~string() +000C8F65: jmp short loc_C8F6A +000C8F67: mov r12, rax +000C8F6A: lea rax, [rbp+var_11] +000C8F6E: mov rdi, rax +000C8F71: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C8F76: mov rdi, rbx; void * +000C8F79: call ___cxa_free_exception +000C8F7E: mov rax, r12 +000C8F81: mov rdi, rax; struct _Unwind_Exception * +000C8F84: call __Unwind_Resume +000C8F89: add rsp, 40h +000C8F8D: pop rbx +000C8F8E: pop r12 +000C8F90: pop rbp +000C8F91: retn + +### FUNC 000C8F92 - 000C9D09 (3447 bytes) name=_ZN6serial6Serial10SerialImpl15reconfigurePortEv +000C8F92: push rbp +000C8F93: mov rbp, rsp +000C8F96: push r12 +000C8F98: push rbx +000C8F99: sub rsp, 120h +000C8FA0: mov [rbp+var_128], rdi +000C8FA7: mov rax, [rbp+var_128] +000C8FAE: mov eax, [rax+10h] +000C8FB1: cmp eax, 0FFFFFFFFh +000C8FB4: jnz loc_C904B +000C8FBA: mov edi, 28h ; '('; thrown_size +000C8FBF: call ___cxa_allocate_exception +000C8FC4: mov rbx, rax +000C8FC7: lea rax, [rbp+var_81] +000C8FCE: mov rdi, rax +000C8FD1: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C8FD6: lea rdx, [rbp+var_81] +000C8FDD: lea rax, [rbp+var_90] +000C8FE4: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C8FEB: mov rdi, rax +000C8FEE: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C8FF3: lea rax, [rbp+var_90] +000C8FFA: lea rcx, aInvalidFileDes; "Invalid file descriptor, is the serial "... +000C9001: mov edx, 0A4h +000C9006: mov rsi, rax +000C9009: mov rdi, rbx +000C900C: call __ZN6serial11IOExceptionC2ESsiPKc; serial::IOException::IOException(std::string,int,char const*) +000C9011: lea rax, [rbp+var_90] +000C9018: mov rdi, rax; this +000C901B: call __ZNSsD1Ev; std::string::~string() +000C9020: lea rax, [rbp+var_81] +000C9027: mov rdi, rax +000C902A: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C902F: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C9036: mov rdx, rax; void (__fastcall *)(void *) +000C9039: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C9040: mov rsi, rax; lptinfo +000C9043: mov rdi, rbx; void * +000C9046: call ___cxa_throw +000C904B: mov rax, [rbp+var_128] +000C9052: mov eax, [rax+10h] +000C9055: lea rdx, [rbp+termios_p] +000C905C: mov rsi, rdx; termios_p +000C905F: mov edi, eax; fd +000C9061: call _tcgetattr +000C9066: cmp eax, 0FFFFFFFFh +000C9069: setz al +000C906C: test al, al +000C906E: jz short loc_C90EF +000C9070: mov edi, 28h ; '('; thrown_size +000C9075: call ___cxa_allocate_exception +000C907A: mov rbx, rax +000C907D: lea rax, [rbp+var_71] +000C9081: mov rdi, rax +000C9084: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C9089: lea rdx, [rbp+var_71] +000C908D: lea rax, [rbp+var_80] +000C9091: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C9098: mov rdi, rax +000C909B: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C90A0: lea rax, [rbp+var_80] +000C90A4: lea rcx, aTcgetattr_0; "::tcgetattr" +000C90AB: mov edx, 0AAh +000C90B0: mov rsi, rax +000C90B3: mov rdi, rbx +000C90B6: call __ZN6serial11IOExceptionC2ESsiPKc; serial::IOException::IOException(std::string,int,char const*) +000C90BB: lea rax, [rbp+var_80] +000C90BF: mov rdi, rax; this +000C90C2: call __ZNSsD1Ev; std::string::~string() +000C90C7: lea rax, [rbp+var_71] +000C90CB: mov rdi, rax +000C90CE: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C90D3: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C90DA: mov rdx, rax; void (__fastcall *)(void *) +000C90DD: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C90E4: mov rsi, rax; lptinfo +000C90E7: mov rdi, rbx; void * +000C90EA: call ___cxa_throw +000C90EF: mov eax, [rbp+termios_p.c_cflag] +000C90F5: or eax, 880h +000C90FA: mov [rbp+termios_p.c_cflag], eax +000C9100: mov eax, [rbp+termios_p.c_lflag] +000C9106: and eax, 0FFFF7F84h +000C910B: mov [rbp+termios_p.c_lflag], eax +000C9111: mov eax, [rbp+termios_p.c_oflag] +000C9117: and eax, 0FFFFFFFEh +000C911A: mov [rbp+termios_p.c_oflag], eax +000C9120: mov eax, [rbp+termios_p.c_iflag] +000C9126: and eax, 0FFFFFE3Eh +000C912B: mov [rbp+termios_p.c_iflag], eax +000C9131: mov eax, [rbp+termios_p.c_iflag] +000C9137: and ah, 0FDh +000C913A: mov [rbp+termios_p.c_iflag], eax +000C9140: mov eax, [rbp+termios_p.c_iflag] +000C9146: and eax, 0FFFFFFF7h +000C9149: mov [rbp+termios_p.c_iflag], eax +000C914F: mov [rbp+var_11], 0 +000C9153: mov rax, [rbp+var_128] +000C915A: mov rax, [rax+30h] +000C915E: cmp rax, 9600h +000C9164: jz loc_C93EB +000C916A: cmp rax, 9600h +000C9170: ja loc_C924B +000C9176: cmp rax, 12Ch +000C917C: jz loc_C937F +000C9182: cmp rax, 12Ch +000C9188: ja short loc_C91E5 +000C918A: cmp rax, 6Eh ; 'n' +000C918E: jz loc_C934F +000C9194: cmp rax, 6Eh ; 'n' +000C9198: ja short loc_C91BC +000C919A: cmp rax, 32h ; '2' +000C919E: jz loc_C9337 +000C91A4: cmp rax, 4Bh ; 'K' +000C91A8: jz loc_C9343 +000C91AE: test rax, rax +000C91B1: jz loc_C932B +000C91B7: jmp loc_C949F +000C91BC: cmp rax, 96h +000C91C2: jz loc_C9367 +000C91C8: cmp rax, 0C8h +000C91CE: jz loc_C9373 +000C91D4: cmp rax, 86h +000C91DA: jz loc_C935B +000C91E0: jmp loc_C949F +000C91E5: cmp rax, 960h +000C91EB: jz loc_C93AF +000C91F1: cmp rax, 960h +000C91F7: ja short loc_C9222 +000C91F9: cmp rax, 4B0h +000C91FF: jz loc_C9397 +000C9205: cmp rax, 708h +000C920B: jz loc_C93A3 +000C9211: cmp rax, 258h +000C9217: jz loc_C938B +000C921D: jmp loc_C949F +000C9222: cmp rax, 2580h +000C9228: jz loc_C93C7 +000C922E: cmp rax, 4B00h +000C9234: jz loc_C93D3 +000C923A: cmp rax, 12C0h +000C9240: jz loc_C93BB +000C9246: jmp loc_C949F +000C924B: cmp rax, 0F4240h +000C9251: jz loc_C943F +000C9257: cmp rax, 0F4240h +000C925D: ja short loc_C92C5 +000C925F: cmp rax, 70800h +000C9265: jz loc_C940F +000C926B: cmp rax, 70800h +000C9271: ja short loc_C929C +000C9273: cmp rax, offset stru_1C200 +000C9279: jz loc_C93F7 +000C927F: cmp rax, 38400h +000C9285: jz loc_C9403 +000C928B: cmp rax, 0E100h +000C9291: jz loc_C93DF +000C9297: jmp loc_C949F +000C929C: cmp rax, offset _close +000C92A2: jz loc_C9427 +000C92A8: cmp rax, offset unk_E1000 +000C92AE: jz loc_C9433 +000C92B4: cmp rax, offset word_7A120 +000C92BA: jz loc_C941B +000C92C0: jmp loc_C949F +000C92C5: cmp rax, 2625A0h +000C92CB: jz loc_C946F +000C92D1: cmp rax, 2625A0h +000C92D7: ja short loc_C9302 +000C92D9: cmp rax, 16E360h +000C92DF: jz loc_C9457 +000C92E5: cmp rax, 1E8480h +000C92EB: jz loc_C9463 +000C92F1: cmp rax, 119400h +000C92F7: jz loc_C944B +000C92FD: jmp loc_C949F +000C9302: cmp rax, 3567E0h +000C9308: jz loc_C9487 +000C930E: cmp rax, 3D0900h +000C9314: jz loc_C9493 +000C931A: cmp rax, 2DC6C0h +000C9320: jz loc_C947B +000C9326: jmp loc_C949F +000C932B: mov [rbp+speed], 0 +000C9332: jmp loc_C9645 +000C9337: mov [rbp+speed], 1 +000C933E: jmp loc_C9645 +000C9343: mov [rbp+speed], 2 +000C934A: jmp loc_C9645 +000C934F: mov [rbp+speed], 3 +000C9356: jmp loc_C9645 +000C935B: mov [rbp+speed], 4 +000C9362: jmp loc_C9645 +000C9367: mov [rbp+speed], 5 +000C936E: jmp loc_C9645 +000C9373: mov [rbp+speed], 6 +000C937A: jmp loc_C9645 +000C937F: mov [rbp+speed], 7 +000C9386: jmp loc_C9645 +000C938B: mov [rbp+speed], 8 +000C9392: jmp loc_C9645 +000C9397: mov [rbp+speed], 9 +000C939E: jmp loc_C9645 +000C93A3: mov [rbp+speed], 0Ah +000C93AA: jmp loc_C9645 +000C93AF: mov [rbp+speed], 0Bh +000C93B6: jmp loc_C9645 +000C93BB: mov [rbp+speed], 0Ch +000C93C2: jmp loc_C9645 +000C93C7: mov [rbp+speed], 0Dh +000C93CE: jmp loc_C9645 +000C93D3: mov [rbp+speed], 0Eh +000C93DA: jmp loc_C9645 +000C93DF: mov [rbp+speed], 1001h +000C93E6: jmp loc_C9645 +000C93EB: mov [rbp+speed], 0Fh +000C93F2: jmp loc_C9645 +000C93F7: mov [rbp+speed], 1002h +000C93FE: jmp loc_C9645 +000C9403: mov [rbp+speed], 1003h +000C940A: jmp loc_C9645 +000C940F: mov [rbp+speed], 1004h +000C9416: jmp loc_C9645 +000C941B: mov [rbp+speed], 1005h +000C9422: jmp loc_C9645 +000C9427: mov [rbp+speed], 1006h +000C942E: jmp loc_C9645 +000C9433: mov [rbp+speed], 1007h +000C943A: jmp loc_C9645 +000C943F: mov [rbp+speed], 1008h +000C9446: jmp loc_C9645 +000C944B: mov [rbp+speed], 1009h +000C9452: jmp loc_C9645 +000C9457: mov [rbp+speed], 100Ah +000C945E: jmp loc_C9645 +000C9463: mov [rbp+speed], 100Bh +000C946A: jmp loc_C9645 +000C946F: mov [rbp+speed], 100Ch +000C9476: jmp loc_C9645 +000C947B: mov [rbp+speed], 100Dh +000C9482: jmp loc_C9645 +000C9487: mov [rbp+speed], 100Eh +000C948E: jmp loc_C9645 +000C9493: mov [rbp+speed], 100Fh +000C949A: jmp loc_C9645 +000C949F: mov [rbp+var_11], 1 +000C94A3: mov rax, [rbp+var_128] +000C94AA: mov eax, [rax+10h] +000C94AD: lea rdx, [rbp+var_E0] +000C94B4: mov esi, 541Eh; request +000C94B9: mov edi, eax; fd +000C94BB: mov eax, 0 +000C94C0: call _ioctl +000C94C5: cmp eax, 0FFFFFFFFh +000C94C8: setz al +000C94CB: test al, al +000C94CD: jz loc_C9556 +000C94D3: mov edi, 28h ; '('; thrown_size +000C94D8: call ___cxa_allocate_exception +000C94DD: mov rbx, rax +000C94E0: call ___errno_location +000C94E5: mov r12d, [rax] +000C94E8: lea rax, [rbp+var_61] +000C94EC: mov rdi, rax +000C94EF: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C94F4: lea rdx, [rbp+var_61] +000C94F8: lea rax, [rbp+var_70] +000C94FC: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C9503: mov rdi, rax +000C9506: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C950B: lea rax, [rbp+var_70] +000C950F: mov ecx, r12d +000C9512: mov edx, 142h +000C9517: mov rsi, rax +000C951A: mov rdi, rbx +000C951D: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000C9522: lea rax, [rbp+var_70] +000C9526: mov rdi, rax; this +000C9529: call __ZNSsD1Ev; std::string::~string() +000C952E: lea rax, [rbp+var_61] +000C9532: mov rdi, rax +000C9535: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C953A: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C9541: mov rdx, rax; void (__fastcall *)(void *) +000C9544: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C954B: mov rsi, rax; lptinfo +000C954E: mov rdi, rbx; void * +000C9551: call ___cxa_throw +000C9556: mov eax, [rbp+var_C4] +000C955C: mov rdx, [rbp+var_128] +000C9563: mov rdx, [rdx+30h] +000C9567: mov ecx, edx +000C9569: cdq +000C956A: idiv ecx +000C956C: mov [rbp+var_C8], eax +000C9572: mov eax, [rbp+var_D0] +000C9578: and eax, 0FFFFEFCFh +000C957D: mov [rbp+var_D0], eax +000C9583: mov eax, [rbp+var_D0] +000C9589: or eax, 30h +000C958C: mov [rbp+var_D0], eax +000C9592: mov rax, [rbp+var_128] +000C9599: mov eax, [rax+10h] +000C959C: lea rdx, [rbp+var_E0] +000C95A3: mov esi, 541Fh; request +000C95A8: mov edi, eax; fd +000C95AA: mov eax, 0 +000C95AF: call _ioctl +000C95B4: cmp eax, 0FFFFFFFFh +000C95B7: setz al +000C95BA: test al, al +000C95BC: jz loc_C9645 +000C95C2: mov edi, 28h ; '('; thrown_size +000C95C7: call ___cxa_allocate_exception +000C95CC: mov rbx, rax +000C95CF: call ___errno_location +000C95D4: mov r12d, [rax] +000C95D7: lea rax, [rbp+var_51] +000C95DB: mov rdi, rax +000C95DE: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C95E3: lea rdx, [rbp+var_51] +000C95E7: lea rax, [rbp+var_60] +000C95EB: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C95F2: mov rdi, rax +000C95F5: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C95FA: lea rax, [rbp+var_60] +000C95FE: mov ecx, r12d +000C9601: mov edx, 14Ch +000C9606: mov rsi, rax +000C9609: mov rdi, rbx +000C960C: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000C9611: lea rax, [rbp+var_60] +000C9615: mov rdi, rax; this +000C9618: call __ZNSsD1Ev; std::string::~string() +000C961D: lea rax, [rbp+var_51] +000C9621: mov rdi, rax +000C9624: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9629: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C9630: mov rdx, rax; void (__fastcall *)(void *) +000C9633: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C963A: mov rsi, rax; lptinfo +000C963D: mov rdi, rbx; void * +000C9640: call ___cxa_throw +000C9645: movzx eax, [rbp+var_11] +000C9649: xor eax, 1 +000C964C: test al, al +000C964E: jz short loc_C9664 +000C9650: mov edx, [rbp+speed] +000C9653: lea rax, [rbp+termios_p] +000C965A: mov esi, edx; speed +000C965C: mov rdi, rax; termios_p +000C965F: call _cfsetspeed +000C9664: mov eax, [rbp+termios_p.c_cflag] +000C966A: and eax, 0FFFFFFCFh +000C966D: mov [rbp+termios_p.c_cflag], eax +000C9673: mov rax, [rbp+var_128] +000C967A: mov eax, [rax+40h] +000C967D: cmp eax, 8 +000C9680: jnz short loc_C9696 +000C9682: mov eax, [rbp+termios_p.c_cflag] +000C9688: or eax, 30h +000C968B: mov [rbp+termios_p.c_cflag], eax +000C9691: jmp loc_C976C +000C9696: mov rax, [rbp+var_128] +000C969D: mov eax, [rax+40h] +000C96A0: cmp eax, 7 +000C96A3: jnz short loc_C96B9 +000C96A5: mov eax, [rbp+termios_p.c_cflag] +000C96AB: or eax, 20h +000C96AE: mov [rbp+termios_p.c_cflag], eax +000C96B4: jmp loc_C976C +000C96B9: mov rax, [rbp+var_128] +000C96C0: mov eax, [rax+40h] +000C96C3: cmp eax, 6 +000C96C6: jnz short loc_C96DC +000C96C8: mov eax, [rbp+termios_p.c_cflag] +000C96CE: or eax, 10h +000C96D1: mov [rbp+termios_p.c_cflag], eax +000C96D7: jmp loc_C976C +000C96DC: mov rax, [rbp+var_128] +000C96E3: mov eax, [rax+40h] +000C96E6: cmp eax, 5 +000C96E9: jnz short loc_C96F9 +000C96EB: mov eax, [rbp+termios_p.c_cflag] +000C96F1: mov [rbp+termios_p.c_cflag], eax +000C96F7: jmp short loc_C976C +000C96F9: mov edi, 10h; thrown_size +000C96FE: call ___cxa_allocate_exception +000C9703: mov rbx, rax +000C9706: lea rax, [rbp+var_41] +000C970A: mov rdi, rax +000C970D: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C9712: lea rdx, [rbp+var_41] +000C9716: lea rax, [rbp+var_50] +000C971A: lea rsi, aInvalidCharLen; "invalid char len" +000C9721: mov rdi, rax +000C9724: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C9729: lea rax, [rbp+var_50] +000C972D: mov rsi, rax; std::string * +000C9730: mov rdi, rbx; this +000C9733: call __ZNSt16invalid_argumentC1ERKSs; std::invalid_argument::invalid_argument(std::string const&) +000C9738: lea rax, [rbp+var_50] +000C973C: mov rdi, rax; this +000C973F: call __ZNSsD1Ev; std::string::~string() +000C9744: lea rax, [rbp+var_41] +000C9748: mov rdi, rax +000C974B: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9750: mov rax, cs:_ZNSt16invalid_argumentD1Ev_ptr +000C9757: mov rdx, rax; void (__fastcall *)(void *) +000C975A: mov rax, cs:_ZTISt16invalid_argument_ptr +000C9761: mov rsi, rax; lptinfo +000C9764: mov rdi, rbx; void * +000C9767: call ___cxa_throw +000C976C: mov rax, [rbp+var_128] +000C9773: mov eax, [rax+44h] +000C9776: cmp eax, 1 +000C9779: jnz short loc_C978F +000C977B: mov eax, [rbp+termios_p.c_cflag] +000C9781: and eax, 0FFFFFFBFh +000C9784: mov [rbp+termios_p.c_cflag], eax +000C978A: jmp loc_C9845 +000C978F: mov rax, [rbp+var_128] +000C9796: mov eax, [rax+44h] +000C9799: cmp eax, 3 +000C979C: jnz short loc_C97B2 +000C979E: mov eax, [rbp+termios_p.c_cflag] +000C97A4: or eax, 40h +000C97A7: mov [rbp+termios_p.c_cflag], eax +000C97AD: jmp loc_C9845 +000C97B2: mov rax, [rbp+var_128] +000C97B9: mov eax, [rax+44h] +000C97BC: cmp eax, 2 +000C97BF: jnz short loc_C97D2 +000C97C1: mov eax, [rbp+termios_p.c_cflag] +000C97C7: or eax, 40h +000C97CA: mov [rbp+termios_p.c_cflag], eax +000C97D0: jmp short loc_C9845 +000C97D2: mov edi, 10h; thrown_size +000C97D7: call ___cxa_allocate_exception +000C97DC: mov rbx, rax +000C97DF: lea rax, [rbp+var_31] +000C97E3: mov rdi, rax +000C97E6: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C97EB: lea rdx, [rbp+var_31] +000C97EF: lea rax, [rbp+var_40] +000C97F3: lea rsi, aInvalidStopBit; "invalid stop bit" +000C97FA: mov rdi, rax +000C97FD: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C9802: lea rax, [rbp+var_40] +000C9806: mov rsi, rax; std::string * +000C9809: mov rdi, rbx; this +000C980C: call __ZNSt16invalid_argumentC1ERKSs; std::invalid_argument::invalid_argument(std::string const&) +000C9811: lea rax, [rbp+var_40] +000C9815: mov rdi, rax; this +000C9818: call __ZNSsD1Ev; std::string::~string() +000C981D: lea rax, [rbp+var_31] +000C9821: mov rdi, rax +000C9824: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9829: mov rax, cs:_ZNSt16invalid_argumentD1Ev_ptr +000C9830: mov rdx, rax; void (__fastcall *)(void *) +000C9833: mov rax, cs:_ZTISt16invalid_argument_ptr +000C983A: mov rsi, rax; lptinfo +000C983D: mov rdi, rbx; void * +000C9840: call ___cxa_throw +000C9845: mov eax, [rbp+termios_p.c_iflag] +000C984B: and eax, 0FFFFFFCFh +000C984E: mov [rbp+termios_p.c_iflag], eax +000C9854: mov rax, [rbp+var_128] +000C985B: mov eax, [rax+3Ch] +000C985E: test eax, eax +000C9860: jnz short loc_C9876 +000C9862: mov eax, [rbp+termios_p.c_cflag] +000C9868: and ah, 0FCh +000C986B: mov [rbp+termios_p.c_cflag], eax +000C9871: jmp loc_C9994 +000C9876: mov rax, [rbp+var_128] +000C987D: mov eax, [rax+3Ch] +000C9880: cmp eax, 2 +000C9883: jnz short loc_C98A8 +000C9885: mov eax, [rbp+termios_p.c_cflag] +000C988B: and ah, 0FDh +000C988E: mov [rbp+termios_p.c_cflag], eax +000C9894: mov eax, [rbp+termios_p.c_cflag] +000C989A: or ah, 1 +000C989D: mov [rbp+termios_p.c_cflag], eax +000C98A3: jmp loc_C9994 +000C98A8: mov rax, [rbp+var_128] +000C98AF: mov eax, [rax+3Ch] +000C98B2: cmp eax, 1 +000C98B5: jnz short loc_C98CB +000C98B7: mov eax, [rbp+termios_p.c_cflag] +000C98BD: or ah, 3 +000C98C0: mov [rbp+termios_p.c_cflag], eax +000C98C6: jmp loc_C9994 +000C98CB: mov rax, [rbp+var_128] +000C98D2: mov eax, [rax+3Ch] +000C98D5: cmp eax, 3 +000C98D8: jnz short loc_C98F0 +000C98DA: mov eax, [rbp+termios_p.c_cflag] +000C98E0: or eax, 40000300h +000C98E5: mov [rbp+termios_p.c_cflag], eax +000C98EB: jmp loc_C9994 +000C98F0: mov rax, [rbp+var_128] +000C98F7: mov eax, [rax+3Ch] +000C98FA: cmp eax, 4 +000C98FD: jnz short loc_C9921 +000C98FF: mov eax, [rbp+termios_p.c_cflag] +000C9905: or eax, 40000100h +000C990A: mov [rbp+termios_p.c_cflag], eax +000C9910: mov eax, [rbp+termios_p.c_cflag] +000C9916: and ah, 0FDh +000C9919: mov [rbp+termios_p.c_cflag], eax +000C991F: jmp short loc_C9994 +000C9921: mov edi, 10h; thrown_size +000C9926: call ___cxa_allocate_exception +000C992B: mov rbx, rax +000C992E: lea rax, [rbp+var_1D] +000C9932: mov rdi, rax +000C9935: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C993A: lea rdx, [rbp+var_1D] +000C993E: lea rax, [rbp+var_30] +000C9942: lea rsi, aInvalidParity; "invalid parity" +000C9949: mov rdi, rax +000C994C: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C9951: lea rax, [rbp+var_30] +000C9955: mov rsi, rax; std::string * +000C9958: mov rdi, rbx; this +000C995B: call __ZNSt16invalid_argumentC1ERKSs; std::invalid_argument::invalid_argument(std::string const&) +000C9960: lea rax, [rbp+var_30] +000C9964: mov rdi, rax; this +000C9967: call __ZNSsD1Ev; std::string::~string() +000C996C: lea rax, [rbp+var_1D] +000C9970: mov rdi, rax +000C9973: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9978: mov rax, cs:_ZNSt16invalid_argumentD1Ev_ptr +000C997F: mov rdx, rax; void (__fastcall *)(void *) +000C9982: mov rax, cs:_ZTISt16invalid_argument_ptr +000C9989: mov rsi, rax; lptinfo +000C998C: mov rdi, rbx; void * +000C998F: call ___cxa_throw +000C9994: mov rax, [rbp+var_128] +000C999B: mov eax, [rax+48h] +000C999E: test eax, eax +000C99A0: jnz short loc_C99B8 +000C99A2: mov rax, [rbp+var_128] +000C99A9: mov byte ptr [rax+15h], 0 +000C99AD: mov rax, [rbp+var_128] +000C99B4: mov byte ptr [rax+16h], 0 +000C99B8: mov rax, [rbp+var_128] +000C99BF: mov eax, [rax+48h] +000C99C2: cmp eax, 1 +000C99C5: jnz short loc_C99DD +000C99C7: mov rax, [rbp+var_128] +000C99CE: mov byte ptr [rax+15h], 1 +000C99D2: mov rax, [rbp+var_128] +000C99D9: mov byte ptr [rax+16h], 0 +000C99DD: mov rax, [rbp+var_128] +000C99E4: mov eax, [rax+48h] +000C99E7: cmp eax, 2 +000C99EA: jnz short loc_C9A02 +000C99EC: mov rax, [rbp+var_128] +000C99F3: mov byte ptr [rax+15h], 0 +000C99F7: mov rax, [rbp+var_128] +000C99FE: mov byte ptr [rax+16h], 1 +000C9A02: mov rax, [rbp+var_128] +000C9A09: movzx eax, byte ptr [rax+15h] +000C9A0D: test al, al +000C9A0F: jz short loc_C9A22 +000C9A11: mov eax, [rbp+termios_p.c_iflag] +000C9A17: or ah, 14h +000C9A1A: mov [rbp+termios_p.c_iflag], eax +000C9A20: jmp short loc_C9A31 +000C9A22: mov eax, [rbp+termios_p.c_iflag] +000C9A28: and ah, 0E3h +000C9A2B: mov [rbp+termios_p.c_iflag], eax +000C9A31: mov rax, [rbp+var_128] +000C9A38: movzx eax, byte ptr [rax+16h] +000C9A3C: test al, al +000C9A3E: jz short loc_C9A53 +000C9A40: mov eax, [rbp+termios_p.c_cflag] +000C9A46: or eax, 80000000h +000C9A4B: mov [rbp+termios_p.c_cflag], eax +000C9A51: jmp short loc_C9A64 +000C9A53: mov eax, [rbp+termios_p.c_cflag] +000C9A59: and eax, 7FFFFFFFh +000C9A5E: mov [rbp+termios_p.c_cflag], eax +000C9A64: mov [rbp+termios_p.c_cc+6], 0 +000C9A6B: mov [rbp+termios_p.c_cc+5], 0 +000C9A72: mov rax, [rbp+var_128] +000C9A79: mov eax, [rax+10h] +000C9A7C: lea rdx, [rbp+termios_p]; termios_p +000C9A83: mov esi, 0; optional_actions +000C9A88: mov edi, eax; fd +000C9A8A: call _tcsetattr +000C9A8F: mov rax, [rbp+var_128] +000C9A96: mov rax, [rax+30h] +000C9A9A: test rax, rax +000C9A9D: js short loc_C9AA6 +000C9A9F: cvtsi2sd xmm0, rax +000C9AA4: jmp short loc_C9ABB +000C9AA6: mov rdx, rax +000C9AA9: shr rdx, 1 +000C9AAC: and eax, 1 +000C9AAF: or rdx, rax +000C9AB2: cvtsi2sd xmm0, rdx +000C9AB7: addsd xmm0, xmm0 +000C9ABB: movsd xmm1, cs:qword_D4EB8 +000C9AC3: divsd xmm1, xmm0 +000C9AC7: movapd xmm0, xmm1 +000C9ACB: cvttsd2si rax, xmm0 +000C9AD0: mov [rbp+var_1C], eax +000C9AD3: mov rax, [rbp+var_128] +000C9ADA: mov edx, [rax+40h] +000C9ADD: mov rax, [rbp+var_128] +000C9AE4: mov eax, [rax+3Ch] +000C9AE7: add edx, eax +000C9AE9: mov rax, [rbp+var_128] +000C9AF0: mov eax, [rax+44h] +000C9AF3: add eax, edx +000C9AF5: add eax, 1 +000C9AF8: imul eax, [rbp+var_1C] +000C9AFC: mov edx, eax +000C9AFE: mov rax, [rbp+var_128] +000C9B05: mov [rax+38h], edx +000C9B08: mov rax, [rbp+var_128] +000C9B0F: mov eax, [rax+44h] +000C9B12: cmp eax, 3 +000C9B15: jnz loc_C9CFD +000C9B1B: mov rax, [rbp+var_128] +000C9B22: mov eax, [rax+38h] +000C9B25: mov eax, eax +000C9B27: test rax, rax +000C9B2A: js short loc_C9B33 +000C9B2C: cvtsi2sd xmm0, rax +000C9B31: jmp short loc_C9B48 +000C9B33: mov rdx, rax +000C9B36: shr rdx, 1 +000C9B39: and eax, 1 +000C9B3C: or rdx, rax +000C9B3F: cvtsi2sd xmm0, rdx +000C9B44: addsd xmm0, xmm0 +000C9B48: mov eax, [rbp+var_1C] +000C9B4B: test rax, rax +000C9B4E: js short loc_C9B57 +000C9B50: cvtsi2sd xmm1, rax +000C9B55: jmp short loc_C9B6C +000C9B57: mov rdx, rax +000C9B5A: shr rdx, 1 +000C9B5D: and eax, 1 +000C9B60: or rdx, rax +000C9B63: cvtsi2sd xmm1, rdx +000C9B68: addsd xmm1, xmm1 +000C9B6C: movsd xmm2, cs:qword_D4EC8 +000C9B74: mulsd xmm1, xmm2 +000C9B78: addsd xmm0, xmm1 +000C9B7C: cvttsd2si rax, xmm0 +000C9B81: mov edx, eax +000C9B83: mov rax, [rbp+var_128] +000C9B8A: mov [rax+38h], edx +000C9B8D: jmp loc_C9CFD +000C9B92: mov r12, rax +000C9B95: lea rax, [rbp+var_90] +000C9B9C: mov rdi, rax; this +000C9B9F: call __ZNSsD1Ev; std::string::~string() +000C9BA4: jmp short loc_C9BA9 +000C9BA6: mov r12, rax +000C9BA9: lea rax, [rbp+var_81] +000C9BB0: mov rdi, rax +000C9BB3: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9BB8: mov rdi, rbx; void * +000C9BBB: call ___cxa_free_exception +000C9BC0: mov rax, r12 +000C9BC3: mov rdi, rax; struct _Unwind_Exception * +000C9BC6: call __Unwind_Resume +000C9BCB: mov r12, rax +000C9BCE: lea rax, [rbp+var_80] +000C9BD2: mov rdi, rax; this +000C9BD5: call __ZNSsD1Ev; std::string::~string() +000C9BDA: jmp short loc_C9BDF +000C9BDC: mov r12, rax +000C9BDF: lea rax, [rbp+var_71] +000C9BE3: mov rdi, rax +000C9BE6: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9BEB: mov rdi, rbx; void * +000C9BEE: call ___cxa_free_exception +000C9BF3: mov rax, r12 +000C9BF6: mov rdi, rax; struct _Unwind_Exception * +000C9BF9: call __Unwind_Resume +000C9BFE: mov r12, rax +000C9C01: lea rax, [rbp+var_70] +000C9C05: mov rdi, rax; this +000C9C08: call __ZNSsD1Ev; std::string::~string() +000C9C0D: jmp short loc_C9C12 +000C9C0F: mov r12, rax +000C9C12: lea rax, [rbp+var_61] +000C9C16: mov rdi, rax +000C9C19: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9C1E: mov rdi, rbx; void * +000C9C21: call ___cxa_free_exception +000C9C26: mov rax, r12 +000C9C29: mov rdi, rax; struct _Unwind_Exception * +000C9C2C: call __Unwind_Resume +000C9C31: mov r12, rax +000C9C34: lea rax, [rbp+var_60] +000C9C38: mov rdi, rax; this +000C9C3B: call __ZNSsD1Ev; std::string::~string() +000C9C40: jmp short loc_C9C45 +000C9C42: mov r12, rax +000C9C45: lea rax, [rbp+var_51] +000C9C49: mov rdi, rax +000C9C4C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9C51: mov rdi, rbx; void * +000C9C54: call ___cxa_free_exception +000C9C59: mov rax, r12 +000C9C5C: mov rdi, rax; struct _Unwind_Exception * +000C9C5F: call __Unwind_Resume +000C9C64: mov r12, rax +000C9C67: lea rax, [rbp+var_50] +000C9C6B: mov rdi, rax; this +000C9C6E: call __ZNSsD1Ev; std::string::~string() +000C9C73: jmp short loc_C9C78 +000C9C75: mov r12, rax +000C9C78: lea rax, [rbp+var_41] +000C9C7C: mov rdi, rax +000C9C7F: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9C84: mov rdi, rbx; void * +000C9C87: call ___cxa_free_exception +000C9C8C: mov rax, r12 +000C9C8F: mov rdi, rax; struct _Unwind_Exception * +000C9C92: call __Unwind_Resume +000C9C97: mov r12, rax +000C9C9A: lea rax, [rbp+var_40] +000C9C9E: mov rdi, rax; this +000C9CA1: call __ZNSsD1Ev; std::string::~string() +000C9CA6: jmp short loc_C9CAB +000C9CA8: mov r12, rax +000C9CAB: lea rax, [rbp+var_31] +000C9CAF: mov rdi, rax +000C9CB2: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9CB7: mov rdi, rbx; void * +000C9CBA: call ___cxa_free_exception +000C9CBF: mov rax, r12 +000C9CC2: mov rdi, rax; struct _Unwind_Exception * +000C9CC5: call __Unwind_Resume +000C9CCA: mov r12, rax +000C9CCD: lea rax, [rbp+var_30] +000C9CD1: mov rdi, rax; this +000C9CD4: call __ZNSsD1Ev; std::string::~string() +000C9CD9: jmp short loc_C9CDE +000C9CDB: mov r12, rax +000C9CDE: lea rax, [rbp+var_1D] +000C9CE2: mov rdi, rax +000C9CE5: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9CEA: mov rdi, rbx; void * +000C9CED: call ___cxa_free_exception +000C9CF2: mov rax, r12 +000C9CF5: mov rdi, rax; struct _Unwind_Exception * +000C9CF8: call __Unwind_Resume +000C9CFD: add rsp, 120h +000C9D04: pop rbx +000C9D05: pop r12 +000C9D07: pop rbp +000C9D08: retn + +### FUNC 000C9D0A - 000C9E29 (287 bytes) name=_ZN6serial6Serial10SerialImpl5closeEv +000C9D0A: push rbp +000C9D0B: mov rbp, rsp +000C9D0E: push r12 +000C9D10: push rbx +000C9D11: sub rsp, 20h +000C9D15: mov [rbp+var_28], rdi +000C9D19: mov rax, [rbp+var_28] +000C9D1D: movzx eax, byte ptr [rax+14h] +000C9D21: test al, al +000C9D23: jz loc_C9E20 +000C9D29: mov rax, [rbp+var_28] +000C9D2D: mov eax, [rax+10h] +000C9D30: cmp eax, 0FFFFFFFFh +000C9D33: jz loc_C9DE3 +000C9D39: mov rax, [rbp+var_28] +000C9D3D: mov eax, [rax+10h] +000C9D40: mov edi, eax; fd +000C9D42: call _close +000C9D47: mov [rbp+var_14], eax +000C9D4A: cmp [rbp+var_14], 0 +000C9D4E: jnz short loc_C9D60 +000C9D50: mov rax, [rbp+var_28] +000C9D54: mov dword ptr [rax+10h], 0FFFFFFFFh +000C9D5B: jmp loc_C9DE3 +000C9D60: mov edi, 28h ; '('; thrown_size +000C9D65: call ___cxa_allocate_exception +000C9D6A: mov rbx, rax +000C9D6D: call ___errno_location +000C9D72: mov r12d, [rax] +000C9D75: lea rax, [rbp+var_15] +000C9D79: mov rdi, rax +000C9D7C: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C9D81: lea rdx, [rbp+var_15] +000C9D85: lea rax, [rbp+var_20] +000C9D89: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C9D90: mov rdi, rax +000C9D93: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C9D98: lea rax, [rbp+var_20] +000C9D9C: mov ecx, r12d +000C9D9F: mov edx, 1D3h +000C9DA4: mov rsi, rax +000C9DA7: mov rdi, rbx +000C9DAA: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000C9DAF: lea rax, [rbp+var_20] +000C9DB3: mov rdi, rax; this +000C9DB6: call __ZNSsD1Ev; std::string::~string() +000C9DBB: lea rax, [rbp+var_15] +000C9DBF: mov rdi, rax +000C9DC2: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9DC7: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C9DCE: mov rdx, rax; void (__fastcall *)(void *) +000C9DD1: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C9DD8: mov rsi, rax; lptinfo +000C9DDB: mov rdi, rbx; void * +000C9DDE: call ___cxa_throw +000C9DE3: mov rax, [rbp+var_28] +000C9DE7: mov byte ptr [rax+14h], 0 +000C9DEB: jmp short loc_C9E20 +000C9DED: mov r12, rax +000C9DF0: lea rax, [rbp+var_20] +000C9DF4: mov rdi, rax; this +000C9DF7: call __ZNSsD1Ev; std::string::~string() +000C9DFC: jmp short loc_C9E01 +000C9DFE: mov r12, rax +000C9E01: lea rax, [rbp+var_15] +000C9E05: mov rdi, rax +000C9E08: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9E0D: mov rdi, rbx; void * +000C9E10: call ___cxa_free_exception +000C9E15: mov rax, r12 +000C9E18: mov rdi, rax; struct _Unwind_Exception * +000C9E1B: call __Unwind_Resume +000C9E20: add rsp, 20h +000C9E24: pop rbx +000C9E25: pop r12 +000C9E27: pop rbp +000C9E28: retn + +### FUNC 000C9E2A - 000C9E3C (18 bytes) name=_ZNK6serial6Serial10SerialImpl6isOpenEv +000C9E2A: push rbp +000C9E2B: mov rbp, rsp +000C9E2E: mov [rbp+var_8], rdi +000C9E32: mov rax, [rbp+var_8] +000C9E36: movzx eax, byte ptr [rax+14h] +000C9E3A: pop rbp +000C9E3B: retn + +### FUNC 000C9E3C - 000C9F5B (287 bytes) name=_ZN6serial6Serial10SerialImpl9availableEv +000C9E3C: push rbp +000C9E3D: mov rbp, rsp +000C9E40: push r12 +000C9E42: push rbx +000C9E43: sub rsp, 30h +000C9E47: mov [rbp+var_38], rdi +000C9E4B: mov rax, [rbp+var_38] +000C9E4F: movzx eax, byte ptr [rax+14h] +000C9E53: xor eax, 1 +000C9E56: test al, al +000C9E58: jz short loc_C9E64 +000C9E5A: mov eax, 0 +000C9E5F: jmp loc_C9F52 +000C9E64: mov [rbp+var_24], 0 +000C9E6B: mov rax, [rbp+var_38] +000C9E6F: mov eax, [rax+10h] +000C9E72: lea rdx, [rbp+var_24] +000C9E76: mov esi, 541Bh; request +000C9E7B: mov edi, eax; fd +000C9E7D: mov eax, 0 +000C9E82: call _ioctl +000C9E87: cmp eax, 0FFFFFFFFh +000C9E8A: setz al +000C9E8D: test al, al +000C9E8F: jz loc_C9F18 +000C9E95: mov edi, 28h ; '('; thrown_size +000C9E9A: call ___cxa_allocate_exception +000C9E9F: mov rbx, rax +000C9EA2: call ___errno_location +000C9EA7: mov r12d, [rax] +000C9EAA: lea rax, [rbp+var_11] +000C9EAE: mov rdi, rax +000C9EB1: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000C9EB6: lea rdx, [rbp+var_11] +000C9EBA: lea rax, [rbp+var_20] +000C9EBE: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000C9EC5: mov rdi, rax +000C9EC8: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000C9ECD: lea rax, [rbp+var_20] +000C9ED1: mov ecx, r12d +000C9ED4: mov edx, 1E8h +000C9ED9: mov rsi, rax +000C9EDC: mov rdi, rbx +000C9EDF: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000C9EE4: lea rax, [rbp+var_20] +000C9EE8: mov rdi, rax; this +000C9EEB: call __ZNSsD1Ev; std::string::~string() +000C9EF0: lea rax, [rbp+var_11] +000C9EF4: mov rdi, rax +000C9EF7: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9EFC: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000C9F03: mov rdx, rax; void (__fastcall *)(void *) +000C9F06: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000C9F0D: mov rsi, rax; lptinfo +000C9F10: mov rdi, rbx; void * +000C9F13: call ___cxa_throw +000C9F18: mov eax, [rbp+var_24] +000C9F1B: cdqe +000C9F1D: jmp short loc_C9F52 +000C9F1F: mov r12, rax +000C9F22: lea rax, [rbp+var_20] +000C9F26: mov rdi, rax; this +000C9F29: call __ZNSsD1Ev; std::string::~string() +000C9F2E: jmp short loc_C9F33 +000C9F30: mov r12, rax +000C9F33: lea rax, [rbp+var_11] +000C9F37: mov rdi, rax +000C9F3A: call __ZNSaIcED1Ev; std::allocator::~allocator() +000C9F3F: mov rdi, rbx; void * +000C9F42: call ___cxa_free_exception +000C9F47: mov rax, r12 +000C9F4A: mov rdi, rax; struct _Unwind_Exception * +000C9F4D: call __Unwind_Resume +000C9F52: add rsp, 30h +000C9F56: pop rbx +000C9F57: pop r12 +000C9F59: pop rbp +000C9F5A: retn + +### FUNC 000C9F5C - 000CA23F (739 bytes) name=_ZN6serial6Serial10SerialImpl12waitReadableEj +000C9F5C: push rbp +000C9F5D: mov rbp, rsp +000C9F60: push r12 +000C9F62: push rbx +000C9F63: sub rsp, 0D0h +000C9F6A: mov [rbp+var_D8], rdi +000C9F71: mov [rbp+var_DC], esi +000C9F77: mov edx, 10h +000C9F7C: mov eax, 0 +000C9F81: lea rsi, [rbp+readfds] +000C9F88: mov rcx, rdx +000C9F8B: mov rdi, rsi +000C9F8E: cld +000C9F8F: rep stosq +000C9F92: mov eax, edi +000C9F94: mov edx, ecx +000C9F96: mov [rbp+var_14], edx +000C9F99: mov [rbp+var_18], eax +000C9F9C: mov rax, [rbp+var_D8] +000C9FA3: mov eax, [rax+10h] +000C9FA6: mov edx, 8 +000C9FAB: lea ebx, ds:0[rdx*8] +000C9FB2: cdq +000C9FB3: idiv ebx +000C9FB5: mov esi, eax +000C9FB7: movsxd rax, esi +000C9FBA: mov rdi, [rbp+rax*8+readfds.fds_bits] +000C9FC2: mov rax, [rbp+var_D8] +000C9FC9: mov eax, [rax+10h] +000C9FCC: mov edx, 8 +000C9FD1: lea ecx, ds:0[rdx*8] +000C9FD8: cdq +000C9FD9: idiv ecx +000C9FDB: mov eax, edx +000C9FDD: mov edx, 1 +000C9FE2: mov ecx, eax +000C9FE4: shl rdx, cl +000C9FE7: mov rax, rdx +000C9FEA: or rdi, rax +000C9FED: mov rdx, rdi +000C9FF0: movsxd rax, esi +000C9FF3: mov [rbp+rax*8+readfds.fds_bits], rdx +000C9FFB: mov eax, [rbp+var_DC] +000CA001: mov edi, eax; unsigned int +000CA003: call __Z16timespec_from_msj; timespec_from_ms(uint) +000CA008: mov [rbp+timeout.tv_sec], rax +000CA00C: mov [rbp+timeout.tv_nsec], rdx +000CA010: mov rax, [rbp+var_D8] +000CA017: mov eax, [rax+10h] +000CA01A: lea edi, [rax+1]; nfds +000CA01D: lea rdx, [rbp+timeout] +000CA021: lea rax, [rbp+readfds] +000CA028: mov r9d, 0; sigmask +000CA02E: mov r8, rdx; timeout +000CA031: mov ecx, 0; exceptfds +000CA036: mov edx, 0; writefds +000CA03B: mov rsi, rax; readfds +000CA03E: call _pselect +000CA043: mov [rbp+var_1C], eax +000CA046: cmp [rbp+var_1C], 0 +000CA04A: jns loc_CA0E9 +000CA050: call ___errno_location +000CA055: mov eax, [rax] +000CA057: cmp eax, 4 +000CA05A: jnz short loc_CA066 +000CA05C: mov eax, 0 +000CA061: jmp loc_CA233 +000CA066: mov edi, 28h ; '('; thrown_size +000CA06B: call ___cxa_allocate_exception +000CA070: mov rbx, rax +000CA073: call ___errno_location +000CA078: mov r12d, [rax] +000CA07B: lea rax, [rbp+var_31] +000CA07F: mov rdi, rax +000CA082: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CA087: lea rdx, [rbp+var_31] +000CA08B: lea rax, [rbp+var_40] +000CA08F: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CA096: mov rdi, rax +000CA099: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CA09E: lea rax, [rbp+var_40] +000CA0A2: mov ecx, r12d +000CA0A5: mov edx, 1FEh +000CA0AA: mov rsi, rax +000CA0AD: mov rdi, rbx +000CA0B0: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000CA0B5: lea rax, [rbp+var_40] +000CA0B9: mov rdi, rax; this +000CA0BC: call __ZNSsD1Ev; std::string::~string() +000CA0C1: lea rax, [rbp+var_31] +000CA0C5: mov rdi, rax +000CA0C8: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA0CD: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CA0D4: mov rdx, rax; void (__fastcall *)(void *) +000CA0D7: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CA0DE: mov rsi, rax; lptinfo +000CA0E1: mov rdi, rbx; void * +000CA0E4: call ___cxa_throw +000CA0E9: cmp [rbp+var_1C], 0 +000CA0ED: jnz short loc_CA0F9 +000CA0EF: mov eax, 0 +000CA0F4: jmp loc_CA233 +000CA0F9: mov rax, [rbp+var_D8] +000CA100: mov eax, [rax+10h] +000CA103: mov edx, 8 +000CA108: lea ebx, ds:0[rdx*8] +000CA10F: cdq +000CA110: idiv ebx +000CA112: cdqe +000CA114: mov rsi, [rbp+rax*8+readfds.fds_bits] +000CA11C: mov rax, [rbp+var_D8] +000CA123: mov eax, [rax+10h] +000CA126: mov edx, 8 +000CA12B: lea ecx, ds:0[rdx*8] +000CA132: cdq +000CA133: idiv ecx +000CA135: mov eax, edx +000CA137: mov ecx, eax +000CA139: sar rsi, cl +000CA13C: mov rax, rsi +000CA13F: and eax, 1 +000CA142: test rax, rax +000CA145: jnz short loc_CA1C6 +000CA147: mov edi, 28h ; '('; thrown_size +000CA14C: call ___cxa_allocate_exception +000CA151: mov rbx, rax +000CA154: lea rax, [rbp+var_1D] +000CA158: mov rdi, rax +000CA15B: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CA160: lea rdx, [rbp+var_1D] +000CA164: lea rax, [rbp+var_30] +000CA168: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CA16F: mov rdi, rax +000CA172: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CA177: lea rax, [rbp+var_30] +000CA17B: lea rcx, aSelectReportsR; "select reports ready to read, but our f"... +000CA182: mov edx, 207h +000CA187: mov rsi, rax +000CA18A: mov rdi, rbx +000CA18D: call __ZN6serial11IOExceptionC2ESsiPKc; serial::IOException::IOException(std::string,int,char const*) +000CA192: lea rax, [rbp+var_30] +000CA196: mov rdi, rax; this +000CA199: call __ZNSsD1Ev; std::string::~string() +000CA19E: lea rax, [rbp+var_1D] +000CA1A2: mov rdi, rax +000CA1A5: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA1AA: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CA1B1: mov rdx, rax; void (__fastcall *)(void *) +000CA1B4: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CA1BB: mov rsi, rax; lptinfo +000CA1BE: mov rdi, rbx; void * +000CA1C1: call ___cxa_throw +000CA1C6: mov eax, 1 +000CA1CB: jmp short loc_CA233 +000CA1CD: mov r12, rax +000CA1D0: lea rax, [rbp+var_40] +000CA1D4: mov rdi, rax; this +000CA1D7: call __ZNSsD1Ev; std::string::~string() +000CA1DC: jmp short loc_CA1E1 +000CA1DE: mov r12, rax +000CA1E1: lea rax, [rbp+var_31] +000CA1E5: mov rdi, rax +000CA1E8: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA1ED: mov rdi, rbx; void * +000CA1F0: call ___cxa_free_exception +000CA1F5: mov rax, r12 +000CA1F8: mov rdi, rax; struct _Unwind_Exception * +000CA1FB: call __Unwind_Resume +000CA200: mov r12, rax +000CA203: lea rax, [rbp+var_30] +000CA207: mov rdi, rax; this +000CA20A: call __ZNSsD1Ev; std::string::~string() +000CA20F: jmp short loc_CA214 +000CA211: mov r12, rax +000CA214: lea rax, [rbp+var_1D] +000CA218: mov rdi, rax +000CA21B: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA220: mov rdi, rbx; void * +000CA223: call ___cxa_free_exception +000CA228: mov rax, r12 +000CA22B: mov rdi, rax; struct _Unwind_Exception * +000CA22E: call __Unwind_Resume +000CA233: add rsp, 0D0h +000CA23A: pop rbx +000CA23B: pop r12 +000CA23D: pop rbp +000CA23E: retn + +### FUNC 000CA240 - 000CA29A (90 bytes) name=_ZN6serial6Serial10SerialImpl13waitByteTimesEm +000CA240: push rbp +000CA241: mov rbp, rsp +000CA244: sub rsp, 20h +000CA248: mov [rbp+var_18], rdi +000CA24C: mov [rbp+var_20], rsi +000CA250: mov [rbp+timeout.tv_sec], 0 +000CA258: mov [rbp+timeout.tv_nsec], 0 +000CA260: mov rax, [rbp+var_18] +000CA264: mov eax, [rax+38h] +000CA267: mov eax, eax +000CA269: imul rax, [rbp+var_20] +000CA26E: mov [rbp+timeout.tv_nsec], rax +000CA272: lea rax, [rbp+timeout] +000CA276: mov r9d, 0; sigmask +000CA27C: mov r8, rax; timeout +000CA27F: mov ecx, 0; exceptfds +000CA284: mov edx, 0; writefds +000CA289: mov esi, 0; readfds +000CA28E: mov edi, 0; nfds +000CA293: call _pselect +000CA298: leave +000CA299: retn + +### FUNC 000CA29A - 000CA556 (700 bytes) name=_ZN6serial6Serial10SerialImpl4readEPhm +000CA29A: push rbp +000CA29B: mov rbp, rsp +000CA29E: push r12 +000CA2A0: push rbx +000CA2A1: sub rsp, 70h +000CA2A5: mov [rbp+var_68], rdi +000CA2A9: mov [rbp+buf], rsi +000CA2AD: mov [rbp+nbytes], rdx +000CA2B1: mov rax, [rbp+var_68] +000CA2B5: movzx eax, byte ptr [rax+14h] +000CA2B9: xor eax, 1 +000CA2BC: test al, al +000CA2BE: jz short loc_CA2F8 +000CA2C0: mov edi, 10h; thrown_size +000CA2C5: call ___cxa_allocate_exception +000CA2CA: mov rbx, rax +000CA2CD: lea rsi, aSerialRead; "Serial::read" +000CA2D4: mov rdi, rbx; this +000CA2D7: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CA2DC: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CA2E3: mov rdx, rax; void (__fastcall *)(void *) +000CA2E6: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CA2ED: mov rsi, rax; lptinfo +000CA2F0: mov rdi, rbx; void * +000CA2F3: call ___cxa_throw +000CA2F8: mov [rbp+var_18], 0 +000CA300: mov rax, [rbp+var_68] +000CA304: mov eax, [rax+1Ch] +000CA307: mov eax, eax +000CA309: mov qword ptr [rbp+var_20], rax +000CA30D: mov rax, [rbp+var_68] +000CA311: mov eax, [rax+20h] +000CA314: mov edx, eax +000CA316: mov rax, [rbp+nbytes] +000CA31A: imul rax, rdx +000CA31E: add qword ptr [rbp+var_20], rax +000CA322: mov rax, qword ptr [rbp+var_20] +000CA326: mov edx, eax +000CA328: lea rax, [rbp+var_60] +000CA32C: mov esi, edx; unsigned int +000CA32E: mov rdi, rax; this +000CA331: call __ZN6serial16MillisecondTimerC2Ej; serial::MillisecondTimer::MillisecondTimer(uint) +000CA336: mov rax, [rbp+var_68] +000CA33A: mov eax, [rax+10h] +000CA33D: mov rdx, [rbp+nbytes]; nbytes +000CA341: mov rcx, [rbp+buf] +000CA345: mov rsi, rcx; buf +000CA348: mov edi, eax; fd +000CA34A: call _read +000CA34F: mov [rbp+var_28], rax +000CA353: cmp [rbp+var_28], 0 +000CA358: jle short loc_CA362 +000CA35A: mov rax, [rbp+var_28] +000CA35E: mov [rbp+var_18], rax +000CA362: jmp loc_CA4F7 +000CA367: lea rax, [rbp+var_60] +000CA36B: mov rdi, rax; this +000CA36E: call __ZN6serial16MillisecondTimer9remainingEv; serial::MillisecondTimer::remaining(void) +000CA373: mov [rbp+var_30], rax +000CA377: cmp [rbp+var_30], 0 +000CA37C: jg short loc_CA383 +000CA37E: jmp loc_CA505 +000CA383: mov rax, [rbp+var_68] +000CA387: lea rdx, [rax+18h] +000CA38B: mov rax, [rbp+var_30] +000CA38F: mov [rbp+var_4C], eax +000CA392: lea rax, [rbp+var_4C] +000CA396: mov rsi, rdx +000CA399: mov rdi, rax +000CA39C: call __ZSt3minIjERKT_S2_S2_; std::min(uint const&,uint const&) +000CA3A1: mov eax, [rax] +000CA3A3: mov [rbp+var_34], eax +000CA3A6: mov edx, [rbp+var_34] +000CA3A9: mov rax, [rbp+var_68] +000CA3AD: mov esi, edx; unsigned int +000CA3AF: mov rdi, rax; this +000CA3B2: call __ZN6serial6Serial10SerialImpl12waitReadableEj; serial::Serial::SerialImpl::waitReadable(uint) +000CA3B7: test al, al +000CA3B9: jz loc_CA4F7 +000CA3BF: cmp [rbp+nbytes], 1 +000CA3C4: jbe short loc_CA3DD +000CA3C6: mov rax, [rbp+var_68] +000CA3CA: mov ebx, [rax+18h] +000CA3CD: call __ZN6serial7Timeout3maxEv; serial::Timeout::max(void) +000CA3D2: cmp ebx, eax +000CA3D4: jnz short loc_CA3DD +000CA3D6: mov eax, 1 +000CA3DB: jmp short loc_CA3E2 +000CA3DD: mov eax, 0 +000CA3E2: test al, al +000CA3E4: jz short loc_CA42B +000CA3E6: mov rax, [rbp+var_68] +000CA3EA: mov rdi, rax; this +000CA3ED: call __ZN6serial6Serial10SerialImpl9availableEv; serial::Serial::SerialImpl::available(void) +000CA3F2: mov [rbp+var_40], rax +000CA3F6: mov rax, [rbp+var_18] +000CA3FA: mov rdx, [rbp+var_40] +000CA3FE: add rax, rdx +000CA401: cmp rax, [rbp+nbytes] +000CA405: jnb short loc_CA42B +000CA407: mov rax, [rbp+var_18] +000CA40B: mov rdx, [rbp+var_40] +000CA40F: add rdx, rax +000CA412: mov rax, [rbp+nbytes] +000CA416: sub rax, rdx +000CA419: mov rdx, rax +000CA41C: mov rax, [rbp+var_68] +000CA420: mov rsi, rdx; unsigned __int64 +000CA423: mov rdi, rax; this +000CA426: call __ZN6serial6Serial10SerialImpl13waitByteTimesEm; serial::Serial::SerialImpl::waitByteTimes(ulong) +000CA42B: mov rax, [rbp+var_18] +000CA42F: mov rdx, [rbp+nbytes] +000CA433: sub rdx, rax; nbytes +000CA436: mov rax, [rbp+var_18] +000CA43A: mov rcx, [rbp+buf] +000CA43E: add rcx, rax +000CA441: mov rax, [rbp+var_68] +000CA445: mov eax, [rax+10h] +000CA448: mov rsi, rcx; buf +000CA44B: mov edi, eax; fd +000CA44D: call _read +000CA452: mov [rbp+var_48], rax +000CA456: cmp [rbp+var_48], 0 +000CA45B: jg short loc_CA495 +000CA45D: mov edi, 10h; thrown_size +000CA462: call ___cxa_allocate_exception +000CA467: mov rbx, rax +000CA46A: lea rsi, aDeviceReportsR; "device reports readiness to read but re"... +000CA471: mov rdi, rbx; this +000CA474: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CA479: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CA480: mov rdx, rax; void (__fastcall *)(void *) +000CA483: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CA48A: mov rsi, rax; lptinfo +000CA48D: mov rdi, rbx; void * +000CA490: call ___cxa_throw +000CA495: mov rax, [rbp+var_48] +000CA499: add [rbp+var_18], rax +000CA49D: mov rax, [rbp+var_18] +000CA4A1: cmp rax, [rbp+nbytes] +000CA4A5: jnz short loc_CA4A9 +000CA4A7: jmp short loc_CA505 +000CA4A9: mov rax, [rbp+var_18] +000CA4AD: cmp rax, [rbp+nbytes] +000CA4B1: jnb short loc_CA4B5 +000CA4B3: jmp short loc_CA4F7 +000CA4B5: mov rax, [rbp+var_18] +000CA4B9: cmp rax, [rbp+nbytes] +000CA4BD: jbe short loc_CA4F7 +000CA4BF: mov edi, 10h; thrown_size +000CA4C4: call ___cxa_allocate_exception +000CA4C9: mov rbx, rax +000CA4CC: lea rsi, aReadOverReadTo; "read over read, too many bytes where re"... +000CA4D3: mov rdi, rbx; this +000CA4D6: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CA4DB: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CA4E2: mov rdx, rax; void (__fastcall *)(void *) +000CA4E5: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CA4EC: mov rsi, rax; lptinfo +000CA4EF: mov rdi, rbx; void * +000CA4F2: call ___cxa_throw +000CA4F7: mov rax, [rbp+var_18] +000CA4FB: cmp rax, [rbp+nbytes] +000CA4FF: jb loc_CA367 +000CA505: mov rax, [rbp+var_18] +000CA509: jmp short loc_CA54D +000CA50B: mov r12, rax +000CA50E: mov rdi, rbx; void * +000CA511: call ___cxa_free_exception +000CA516: mov rax, r12 +000CA519: mov rdi, rax; struct _Unwind_Exception * +000CA51C: call __Unwind_Resume +000CA521: mov r12, rax +000CA524: mov rdi, rbx; void * +000CA527: call ___cxa_free_exception +000CA52C: mov rax, r12 +000CA52F: mov rdi, rax; struct _Unwind_Exception * +000CA532: call __Unwind_Resume +000CA537: mov r12, rax +000CA53A: mov rdi, rbx; void * +000CA53D: call ___cxa_free_exception +000CA542: mov rax, r12 +000CA545: mov rdi, rax; struct _Unwind_Exception * +000CA548: call __Unwind_Resume +000CA54D: add rsp, 70h +000CA551: pop rbx +000CA552: pop r12 +000CA554: pop rbp +000CA555: retn + +### FUNC 000CA556 - 000CAA4B (1269 bytes) name=_ZN6serial6Serial10SerialImpl5writeEPKhm +000CA556: push rbp +000CA557: mov rbp, rsp +000CA55A: push r12 +000CA55C: push rbx +000CA55D: sub rsp, 120h +000CA564: mov [rbp+var_118], rdi +000CA56B: mov [rbp+var_120], rsi +000CA572: mov [rbp+var_128], rdx +000CA579: mov rax, [rbp+var_118] +000CA580: movzx eax, byte ptr [rax+14h] +000CA584: xor eax, 1 +000CA587: test al, al +000CA589: jz short loc_CA5C3 +000CA58B: mov edi, 10h; thrown_size +000CA590: call ___cxa_allocate_exception +000CA595: mov rbx, rax +000CA598: lea rsi, aSerialWrite; "Serial::write" +000CA59F: mov rdi, rbx; this +000CA5A2: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CA5A7: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CA5AE: mov rdx, rax; void (__fastcall *)(void *) +000CA5B1: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CA5B8: mov rsi, rax; lptinfo +000CA5BB: mov rdi, rbx; void * +000CA5BE: call ___cxa_throw +000CA5C3: mov [rbp+var_18], 0 +000CA5CB: mov rax, [rbp+var_118] +000CA5D2: mov eax, [rax+24h] +000CA5D5: mov eax, eax +000CA5D7: mov qword ptr [rbp+var_28], rax +000CA5DB: mov rax, [rbp+var_118] +000CA5E2: mov eax, [rax+28h] +000CA5E5: mov edx, eax +000CA5E7: mov rax, [rbp+var_128] +000CA5EE: imul rax, rdx +000CA5F2: add qword ptr [rbp+var_28], rax +000CA5F6: mov rax, qword ptr [rbp+var_28] +000CA5FA: mov edx, eax +000CA5FC: lea rax, [rbp+var_80] +000CA600: mov esi, edx; unsigned int +000CA602: mov rdi, rax; this +000CA605: call __ZN6serial16MillisecondTimerC2Ej; serial::MillisecondTimer::MillisecondTimer(uint) +000CA60A: mov [rbp+var_19], 1 +000CA60E: jmp loc_CA97D +000CA613: lea rax, [rbp+var_80] +000CA617: mov rdi, rax; this +000CA61A: call __ZN6serial16MillisecondTimer9remainingEv; serial::MillisecondTimer::remaining(void) +000CA61F: mov qword ptr [rbp+var_30], rax +000CA623: movzx eax, [rbp+var_19] +000CA627: xor eax, 1 +000CA62A: test al, al +000CA62C: jz short loc_CA63A +000CA62E: cmp qword ptr [rbp+var_30], 0 +000CA633: jg short loc_CA63A +000CA635: jmp loc_CA98E +000CA63A: mov [rbp+var_19], 0 +000CA63E: mov rax, qword ptr [rbp+var_30] +000CA642: mov edi, eax; unsigned int +000CA644: call __Z16timespec_from_msj; timespec_from_ms(uint) +000CA649: mov [rbp+timeout.tv_sec], rax +000CA650: mov [rbp+timeout.tv_nsec], rdx +000CA657: mov edx, 10h +000CA65C: mov eax, 0 +000CA661: lea rsi, [rbp+writefds] +000CA668: mov rcx, rdx +000CA66B: mov rdi, rsi +000CA66E: cld +000CA66F: rep stosq +000CA672: mov eax, edi +000CA674: mov edx, ecx +000CA676: mov [rbp+var_34], edx +000CA679: mov [rbp+var_38], eax +000CA67C: mov rax, [rbp+var_118] +000CA683: mov eax, [rax+10h] +000CA686: mov edx, 8 +000CA68B: lea ecx, ds:0[rdx*8] +000CA692: cdq +000CA693: idiv ecx +000CA695: mov esi, eax +000CA697: movsxd rax, esi +000CA69A: mov rdi, [rbp+rax*8+writefds.fds_bits] +000CA6A2: mov rax, [rbp+var_118] +000CA6A9: mov eax, [rax+10h] +000CA6AC: mov edx, 8 +000CA6B1: lea ecx, ds:0[rdx*8] +000CA6B8: cdq +000CA6B9: idiv ecx +000CA6BB: mov eax, edx +000CA6BD: mov edx, 1 +000CA6C2: mov ecx, eax +000CA6C4: shl rdx, cl +000CA6C7: mov rax, rdx +000CA6CA: or rdi, rax +000CA6CD: mov rdx, rdi +000CA6D0: movsxd rax, esi +000CA6D3: mov [rbp+rax*8+writefds.fds_bits], rdx +000CA6DB: mov rax, [rbp+var_118] +000CA6E2: mov eax, [rax+10h] +000CA6E5: lea edi, [rax+1]; nfds +000CA6E8: lea rdx, [rbp+timeout] +000CA6EF: lea rax, [rbp+writefds] +000CA6F6: mov r9d, 0; sigmask +000CA6FC: mov r8, rdx; timeout +000CA6FF: mov ecx, 0; exceptfds +000CA704: mov rdx, rax; writefds +000CA707: mov esi, 0; readfds +000CA70C: call _pselect +000CA711: mov [rbp+var_3C], eax +000CA714: cmp [rbp+var_3C], 0 +000CA718: jns loc_CA7B2 +000CA71E: call ___errno_location +000CA723: mov eax, [rax] +000CA725: cmp eax, 4 +000CA728: jnz short loc_CA72F +000CA72A: jmp loc_CA97D +000CA72F: mov edi, 28h ; '('; thrown_size +000CA734: call ___cxa_allocate_exception +000CA739: mov rbx, rax +000CA73C: call ___errno_location +000CA741: mov r12d, [rax] +000CA744: lea rax, [rbp+var_61] +000CA748: mov rdi, rax +000CA74B: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CA750: lea rdx, [rbp+var_61] +000CA754: lea rax, [rbp+var_70] +000CA758: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CA75F: mov rdi, rax +000CA762: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CA767: lea rax, [rbp+var_70] +000CA76B: mov ecx, r12d +000CA76E: mov edx, 28Ah +000CA773: mov rsi, rax +000CA776: mov rdi, rbx +000CA779: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000CA77E: lea rax, [rbp+var_70] +000CA782: mov rdi, rax; this +000CA785: call __ZNSsD1Ev; std::string::~string() +000CA78A: lea rax, [rbp+var_61] +000CA78E: mov rdi, rax +000CA791: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA796: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CA79D: mov rdx, rax; void (__fastcall *)(void *) +000CA7A0: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CA7A7: mov rsi, rax; lptinfo +000CA7AA: mov rdi, rbx; void * +000CA7AD: call ___cxa_throw +000CA7B2: cmp [rbp+var_3C], 0 +000CA7B6: jnz short loc_CA7BD +000CA7B8: jmp loc_CA98E +000CA7BD: cmp [rbp+var_3C], 0 +000CA7C1: jle loc_CA97D +000CA7C7: mov rax, [rbp+var_118] +000CA7CE: mov eax, [rax+10h] +000CA7D1: mov edx, 8 +000CA7D6: lea ecx, ds:0[rdx*8] +000CA7DD: cdq +000CA7DE: idiv ecx +000CA7E0: cdqe +000CA7E2: mov rsi, [rbp+rax*8+writefds.fds_bits] +000CA7EA: mov rax, [rbp+var_118] +000CA7F1: mov eax, [rax+10h] +000CA7F4: mov edx, 8 +000CA7F9: lea ecx, ds:0[rdx*8] +000CA800: cdq +000CA801: idiv ecx +000CA803: mov eax, edx +000CA805: mov ecx, eax +000CA807: sar rsi, cl +000CA80A: mov rax, rsi +000CA80D: and eax, 1 +000CA810: test rax, rax +000CA813: jz loc_CA8FE +000CA819: mov rax, [rbp+var_18] +000CA81D: mov rdx, [rbp+var_128] +000CA824: sub rdx, rax; n +000CA827: mov rax, [rbp+var_18] +000CA82B: mov rcx, [rbp+var_120] +000CA832: add rcx, rax +000CA835: mov rax, [rbp+var_118] +000CA83C: mov eax, [rax+10h] +000CA83F: mov rsi, rcx; buf +000CA842: mov edi, eax; fd +000CA844: call _write +000CA849: mov [rbp+var_48], rax +000CA84D: cmp [rbp+var_48], 0 +000CA852: jg short loc_CA88C +000CA854: mov edi, 10h; thrown_size +000CA859: call ___cxa_allocate_exception +000CA85E: mov rbx, rax +000CA861: lea rsi, aDeviceReportsR_0; "device reports readiness to write but r"... +000CA868: mov rdi, rbx; this +000CA86B: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CA870: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CA877: mov rdx, rax; void (__fastcall *)(void *) +000CA87A: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CA881: mov rsi, rax; lptinfo +000CA884: mov rdi, rbx; void * +000CA887: call ___cxa_throw +000CA88C: mov rax, [rbp+var_48] +000CA890: add [rbp+var_18], rax +000CA894: mov rax, [rbp+var_18] +000CA898: cmp rax, [rbp+var_128] +000CA89F: jnz short loc_CA8A7 +000CA8A1: nop +000CA8A2: jmp loc_CA98E +000CA8A7: mov rax, [rbp+var_18] +000CA8AB: cmp rax, [rbp+var_128] +000CA8B2: jnb short loc_CA8B9 +000CA8B4: jmp loc_CA97D +000CA8B9: mov rax, [rbp+var_18] +000CA8BD: cmp rax, [rbp+var_128] +000CA8C4: jbe short loc_CA8FE +000CA8C6: mov edi, 10h; thrown_size +000CA8CB: call ___cxa_allocate_exception +000CA8D0: mov rbx, rax +000CA8D3: lea rsi, aWriteOverWrote; "write over wrote, too many bytes where "... +000CA8DA: mov rdi, rbx; this +000CA8DD: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CA8E2: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CA8E9: mov rdx, rax; void (__fastcall *)(void *) +000CA8EC: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CA8F3: mov rsi, rax; lptinfo +000CA8F6: mov rdi, rbx; void * +000CA8F9: call ___cxa_throw +000CA8FE: mov edi, 28h ; '('; thrown_size +000CA903: call ___cxa_allocate_exception +000CA908: mov rbx, rax +000CA90B: lea rax, [rbp+var_49] +000CA90F: mov rdi, rax +000CA912: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CA917: lea rdx, [rbp+var_49] +000CA91B: lea rax, [rbp+var_60] +000CA91F: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CA926: mov rdi, rax +000CA929: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CA92E: lea rax, [rbp+var_60] +000CA932: lea rcx, aSelectReportsR_0; "select reports ready to write, but our "... +000CA939: mov edx, 2B3h +000CA93E: mov rsi, rax +000CA941: mov rdi, rbx +000CA944: call __ZN6serial11IOExceptionC2ESsiPKc; serial::IOException::IOException(std::string,int,char const*) +000CA949: lea rax, [rbp+var_60] +000CA94D: mov rdi, rax; this +000CA950: call __ZNSsD1Ev; std::string::~string() +000CA955: lea rax, [rbp+var_49] +000CA959: mov rdi, rax +000CA95C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA961: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CA968: mov rdx, rax; void (__fastcall *)(void *) +000CA96B: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CA972: mov rsi, rax; lptinfo +000CA975: mov rdi, rbx; void * +000CA978: call ___cxa_throw +000CA97D: mov rax, [rbp+var_18] +000CA981: cmp rax, [rbp+var_128] +000CA988: jb loc_CA613 +000CA98E: mov rax, [rbp+var_18] +000CA992: jmp loc_CAA3F +000CA997: mov r12, rax +000CA99A: mov rdi, rbx; void * +000CA99D: call ___cxa_free_exception +000CA9A2: mov rax, r12 +000CA9A5: mov rdi, rax; struct _Unwind_Exception * +000CA9A8: call __Unwind_Resume +000CA9AD: mov r12, rax +000CA9B0: lea rax, [rbp+var_70] +000CA9B4: mov rdi, rax; this +000CA9B7: call __ZNSsD1Ev; std::string::~string() +000CA9BC: jmp short loc_CA9C1 +000CA9BE: mov r12, rax +000CA9C1: lea rax, [rbp+var_61] +000CA9C5: mov rdi, rax +000CA9C8: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CA9CD: mov rdi, rbx; void * +000CA9D0: call ___cxa_free_exception +000CA9D5: mov rax, r12 +000CA9D8: mov rdi, rax; struct _Unwind_Exception * +000CA9DB: call __Unwind_Resume +000CA9E0: mov r12, rax +000CA9E3: mov rdi, rbx; void * +000CA9E6: call ___cxa_free_exception +000CA9EB: mov rax, r12 +000CA9EE: mov rdi, rax; struct _Unwind_Exception * +000CA9F1: call __Unwind_Resume +000CA9F6: mov r12, rax +000CA9F9: mov rdi, rbx; void * +000CA9FC: call ___cxa_free_exception +000CAA01: mov rax, r12 +000CAA04: mov rdi, rax; struct _Unwind_Exception * +000CAA07: call __Unwind_Resume +000CAA0C: mov r12, rax +000CAA0F: lea rax, [rbp+var_60] +000CAA13: mov rdi, rax; this +000CAA16: call __ZNSsD1Ev; std::string::~string() +000CAA1B: jmp short loc_CAA20 +000CAA1D: mov r12, rax +000CAA20: lea rax, [rbp+var_49] +000CAA24: mov rdi, rax +000CAA27: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CAA2C: mov rdi, rbx; void * +000CAA2F: call ___cxa_free_exception +000CAA34: mov rax, r12 +000CAA37: mov rdi, rax; struct _Unwind_Exception * +000CAA3A: call __Unwind_Resume +000CAA3F: add rsp, 120h +000CAA46: pop rbx +000CAA47: pop r12 +000CAA49: pop rbp +000CAA4A: retn + +### FUNC 000CAA4C - 000CAA75 (41 bytes) name=_ZN6serial6Serial10SerialImpl7setPortERKSs +000CAA4C: push rbp +000CAA4D: mov rbp, rsp +000CAA50: sub rsp, 10h +000CAA54: mov [rbp+var_8], rdi +000CAA58: mov [rbp+var_10], rsi +000CAA5C: mov rax, [rbp+var_8] +000CAA60: lea rdx, [rax+8] +000CAA64: mov rax, [rbp+var_10] +000CAA68: mov rsi, rax +000CAA6B: mov rdi, rdx +000CAA6E: call __ZNSsaSERKSs; std::string::operator=(std::string const&) +000CAA73: leave +000CAA74: retn + +### FUNC 000CAA76 - 000CAAA3 (45 bytes) name=_ZNK6serial6Serial10SerialImpl7getPortEv +000CAA76: push rbp +000CAA77: mov rbp, rsp +000CAA7A: sub rsp, 10h +000CAA7E: mov [rbp+var_8], rdi +000CAA82: mov [rbp+var_10], rsi +000CAA86: mov rax, [rbp+var_10] +000CAA8A: lea rdx, [rax+8] +000CAA8E: mov rax, [rbp+var_8] +000CAA92: mov rsi, rdx; std::string * +000CAA95: mov rdi, rax; this +000CAA98: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000CAA9D: mov rax, [rbp+var_8] +000CAAA1: leave +000CAAA2: retn + +### FUNC 000CAAA4 - 000CAACF (43 bytes) name=_ZN6serial6Serial10SerialImpl10setTimeoutERNS_7TimeoutE +000CAAA4: push rbp +000CAAA5: mov rbp, rsp +000CAAA8: mov [rbp+var_8], rdi +000CAAAC: mov [rbp+var_10], rsi +000CAAB0: mov rax, [rbp+var_8] +000CAAB4: mov rdx, [rbp+var_10] +000CAAB8: mov rcx, [rdx] +000CAABB: mov [rax+18h], rcx +000CAABF: mov rcx, [rdx+8] +000CAAC3: mov [rax+20h], rcx +000CAAC7: mov edx, [rdx+10h] +000CAACA: mov [rax+28h], edx +000CAACD: pop rbp +000CAACE: retn + +### FUNC 000CAAD0 - 000CAAFF (47 bytes) name=_ZNK6serial6Serial10SerialImpl10getTimeoutEv +000CAAD0: push rbp +000CAAD1: mov rbp, rsp +000CAAD4: mov [rbp+var_8], rdi +000CAAD8: mov [rbp+var_10], rsi +000CAADC: mov rax, [rbp+var_8] +000CAAE0: mov rdx, [rbp+var_10] +000CAAE4: mov rcx, [rdx+18h] +000CAAE8: mov [rax], rcx +000CAAEB: mov rcx, [rdx+20h] +000CAAEF: mov [rax+8], rcx +000CAAF3: mov edx, [rdx+28h] +000CAAF6: mov [rax+10h], edx +000CAAF9: mov rax, [rbp+var_8] +000CAAFD: pop rbp +000CAAFE: retn + +### FUNC 000CAB00 - 000CAB36 (54 bytes) name=_ZN6serial6Serial10SerialImpl11setBaudrateEm +000CAB00: push rbp +000CAB01: mov rbp, rsp +000CAB04: sub rsp, 10h +000CAB08: mov [rbp+var_8], rdi +000CAB0C: mov [rbp+var_10], rsi +000CAB10: mov rax, [rbp+var_8] +000CAB14: mov rdx, [rbp+var_10] +000CAB18: mov [rax+30h], rdx +000CAB1C: mov rax, [rbp+var_8] +000CAB20: movzx eax, byte ptr [rax+14h] +000CAB24: test al, al +000CAB26: jz short locret_CAB34 +000CAB28: mov rax, [rbp+var_8] +000CAB2C: mov rdi, rax; this +000CAB2F: call __ZN6serial6Serial10SerialImpl15reconfigurePortEv; serial::Serial::SerialImpl::reconfigurePort(void) +000CAB34: leave +000CAB35: retn + +### FUNC 000CAB36 - 000CAB48 (18 bytes) name=_ZNK6serial6Serial10SerialImpl11getBaudrateEv +000CAB36: push rbp +000CAB37: mov rbp, rsp +000CAB3A: mov [rbp+var_8], rdi +000CAB3E: mov rax, [rbp+var_8] +000CAB42: mov rax, [rax+30h] +000CAB46: pop rbp +000CAB47: retn + +### FUNC 000CAB48 - 000CAB7B (51 bytes) name=_ZN6serial6Serial10SerialImpl11setBytesizeENS_10bytesize_tE +000CAB48: push rbp +000CAB49: mov rbp, rsp +000CAB4C: sub rsp, 10h +000CAB50: mov [rbp+var_8], rdi +000CAB54: mov [rbp+var_C], esi +000CAB57: mov rax, [rbp+var_8] +000CAB5B: mov edx, [rbp+var_C] +000CAB5E: mov [rax+40h], edx +000CAB61: mov rax, [rbp+var_8] +000CAB65: movzx eax, byte ptr [rax+14h] +000CAB69: test al, al +000CAB6B: jz short locret_CAB79 +000CAB6D: mov rax, [rbp+var_8] +000CAB71: mov rdi, rax; this +000CAB74: call __ZN6serial6Serial10SerialImpl15reconfigurePortEv; serial::Serial::SerialImpl::reconfigurePort(void) +000CAB79: leave +000CAB7A: retn + +### FUNC 000CAB7C - 000CAB8D (17 bytes) name=_ZNK6serial6Serial10SerialImpl11getBytesizeEv +000CAB7C: push rbp +000CAB7D: mov rbp, rsp +000CAB80: mov [rbp+var_8], rdi +000CAB84: mov rax, [rbp+var_8] +000CAB88: mov eax, [rax+40h] +000CAB8B: pop rbp +000CAB8C: retn + +### FUNC 000CAB8E - 000CABC1 (51 bytes) name=_ZN6serial6Serial10SerialImpl9setParityENS_8parity_tE +000CAB8E: push rbp +000CAB8F: mov rbp, rsp +000CAB92: sub rsp, 10h +000CAB96: mov [rbp+var_8], rdi +000CAB9A: mov [rbp+var_C], esi +000CAB9D: mov rax, [rbp+var_8] +000CABA1: mov edx, [rbp+var_C] +000CABA4: mov [rax+3Ch], edx +000CABA7: mov rax, [rbp+var_8] +000CABAB: movzx eax, byte ptr [rax+14h] +000CABAF: test al, al +000CABB1: jz short locret_CABBF +000CABB3: mov rax, [rbp+var_8] +000CABB7: mov rdi, rax; this +000CABBA: call __ZN6serial6Serial10SerialImpl15reconfigurePortEv; serial::Serial::SerialImpl::reconfigurePort(void) +000CABBF: leave +000CABC0: retn + +### FUNC 000CABC2 - 000CABD3 (17 bytes) name=_ZNK6serial6Serial10SerialImpl9getParityEv +000CABC2: push rbp +000CABC3: mov rbp, rsp +000CABC6: mov [rbp+var_8], rdi +000CABCA: mov rax, [rbp+var_8] +000CABCE: mov eax, [rax+3Ch] +000CABD1: pop rbp +000CABD2: retn + +### FUNC 000CABD4 - 000CAC07 (51 bytes) name=_ZN6serial6Serial10SerialImpl11setStopbitsENS_10stopbits_tE +000CABD4: push rbp +000CABD5: mov rbp, rsp +000CABD8: sub rsp, 10h +000CABDC: mov [rbp+var_8], rdi +000CABE0: mov [rbp+var_C], esi +000CABE3: mov rax, [rbp+var_8] +000CABE7: mov edx, [rbp+var_C] +000CABEA: mov [rax+44h], edx +000CABED: mov rax, [rbp+var_8] +000CABF1: movzx eax, byte ptr [rax+14h] +000CABF5: test al, al +000CABF7: jz short locret_CAC05 +000CABF9: mov rax, [rbp+var_8] +000CABFD: mov rdi, rax; this +000CAC00: call __ZN6serial6Serial10SerialImpl15reconfigurePortEv; serial::Serial::SerialImpl::reconfigurePort(void) +000CAC05: leave +000CAC06: retn + +### FUNC 000CAC08 - 000CAC19 (17 bytes) name=_ZNK6serial6Serial10SerialImpl11getStopbitsEv +000CAC08: push rbp +000CAC09: mov rbp, rsp +000CAC0C: mov [rbp+var_8], rdi +000CAC10: mov rax, [rbp+var_8] +000CAC14: mov eax, [rax+44h] +000CAC17: pop rbp +000CAC18: retn + +### FUNC 000CAC1A - 000CAC4D (51 bytes) name=_ZN6serial6Serial10SerialImpl14setFlowcontrolENS_13flowcontrol_tE +000CAC1A: push rbp +000CAC1B: mov rbp, rsp +000CAC1E: sub rsp, 10h +000CAC22: mov [rbp+var_8], rdi +000CAC26: mov [rbp+var_C], esi +000CAC29: mov rax, [rbp+var_8] +000CAC2D: mov edx, [rbp+var_C] +000CAC30: mov [rax+48h], edx +000CAC33: mov rax, [rbp+var_8] +000CAC37: movzx eax, byte ptr [rax+14h] +000CAC3B: test al, al +000CAC3D: jz short locret_CAC4B +000CAC3F: mov rax, [rbp+var_8] +000CAC43: mov rdi, rax; this +000CAC46: call __ZN6serial6Serial10SerialImpl15reconfigurePortEv; serial::Serial::SerialImpl::reconfigurePort(void) +000CAC4B: leave +000CAC4C: retn + +### FUNC 000CAC4E - 000CAC5F (17 bytes) name=_ZNK6serial6Serial10SerialImpl14getFlowcontrolEv +000CAC4E: push rbp +000CAC4F: mov rbp, rsp +000CAC52: mov [rbp+var_8], rdi +000CAC56: mov rax, [rbp+var_8] +000CAC5A: mov eax, [rax+48h] +000CAC5D: pop rbp +000CAC5E: retn + +### FUNC 000CAC60 - 000CACE5 (133 bytes) name=_ZN6serial6Serial10SerialImpl5flushEv +000CAC60: push rbp +000CAC61: mov rbp, rsp +000CAC64: push r12 +000CAC66: push rbx +000CAC67: sub rsp, 10h +000CAC6B: mov [rbp+var_18], rdi +000CAC6F: mov rax, [rbp+var_18] +000CAC73: movzx eax, byte ptr [rax+14h] +000CAC77: xor eax, 1 +000CAC7A: test al, al +000CAC7C: jz short loc_CACB6 +000CAC7E: mov edi, 10h; thrown_size +000CAC83: call ___cxa_allocate_exception +000CAC88: mov rbx, rax +000CAC8B: lea rsi, aSerialFlush; "Serial::flush" +000CAC92: mov rdi, rbx; this +000CAC95: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CAC9A: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CACA1: mov rdx, rax; void (__fastcall *)(void *) +000CACA4: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CACAB: mov rsi, rax; lptinfo +000CACAE: mov rdi, rbx; void * +000CACB1: call ___cxa_throw +000CACB6: mov rax, [rbp+var_18] +000CACBA: mov eax, [rax+10h] +000CACBD: mov edi, eax; fd +000CACBF: call _tcdrain +000CACC4: jmp short loc_CACDC +000CACC6: mov r12, rax +000CACC9: mov rdi, rbx; void * +000CACCC: call ___cxa_free_exception +000CACD1: mov rax, r12 +000CACD4: mov rdi, rax; struct _Unwind_Exception * +000CACD7: call __Unwind_Resume +000CACDC: add rsp, 10h +000CACE0: pop rbx +000CACE1: pop r12 +000CACE3: pop rbp +000CACE4: retn + +### FUNC 000CACE6 - 000CAD70 (138 bytes) name=_ZN6serial6Serial10SerialImpl10flushInputEv +000CACE6: push rbp +000CACE7: mov rbp, rsp +000CACEA: push r12 +000CACEC: push rbx +000CACED: sub rsp, 10h +000CACF1: mov [rbp+var_18], rdi +000CACF5: mov rax, [rbp+var_18] +000CACF9: movzx eax, byte ptr [rax+14h] +000CACFD: xor eax, 1 +000CAD00: test al, al +000CAD02: jz short loc_CAD3C +000CAD04: mov edi, 10h; thrown_size +000CAD09: call ___cxa_allocate_exception +000CAD0E: mov rbx, rax +000CAD11: lea rsi, aSerialFlushinp; "Serial::flushInput" +000CAD18: mov rdi, rbx; this +000CAD1B: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CAD20: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CAD27: mov rdx, rax; void (__fastcall *)(void *) +000CAD2A: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CAD31: mov rsi, rax; lptinfo +000CAD34: mov rdi, rbx; void * +000CAD37: call ___cxa_throw +000CAD3C: mov rax, [rbp+var_18] +000CAD40: mov eax, [rax+10h] +000CAD43: mov esi, 0; queue_selector +000CAD48: mov edi, eax; fd +000CAD4A: call _tcflush +000CAD4F: jmp short loc_CAD67 +000CAD51: mov r12, rax +000CAD54: mov rdi, rbx; void * +000CAD57: call ___cxa_free_exception +000CAD5C: mov rax, r12 +000CAD5F: mov rdi, rax; struct _Unwind_Exception * +000CAD62: call __Unwind_Resume +000CAD67: add rsp, 10h +000CAD6B: pop rbx +000CAD6C: pop r12 +000CAD6E: pop rbp +000CAD6F: retn + +### FUNC 000CAD70 - 000CADFA (138 bytes) name=_ZN6serial6Serial10SerialImpl11flushOutputEv +000CAD70: push rbp +000CAD71: mov rbp, rsp +000CAD74: push r12 +000CAD76: push rbx +000CAD77: sub rsp, 10h +000CAD7B: mov [rbp+var_18], rdi +000CAD7F: mov rax, [rbp+var_18] +000CAD83: movzx eax, byte ptr [rax+14h] +000CAD87: xor eax, 1 +000CAD8A: test al, al +000CAD8C: jz short loc_CADC6 +000CAD8E: mov edi, 10h; thrown_size +000CAD93: call ___cxa_allocate_exception +000CAD98: mov rbx, rax +000CAD9B: lea rsi, aSerialFlushout; "Serial::flushOutput" +000CADA2: mov rdi, rbx; this +000CADA5: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CADAA: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CADB1: mov rdx, rax; void (__fastcall *)(void *) +000CADB4: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CADBB: mov rsi, rax; lptinfo +000CADBE: mov rdi, rbx; void * +000CADC1: call ___cxa_throw +000CADC6: mov rax, [rbp+var_18] +000CADCA: mov eax, [rax+10h] +000CADCD: mov esi, 1; queue_selector +000CADD2: mov edi, eax; fd +000CADD4: call _tcflush +000CADD9: jmp short loc_CADF1 +000CADDB: mov r12, rax +000CADDE: mov rdi, rbx; void * +000CADE1: call ___cxa_free_exception +000CADE6: mov rax, r12 +000CADE9: mov rdi, rax; struct _Unwind_Exception * +000CADEC: call __Unwind_Resume +000CADF1: add rsp, 10h +000CADF5: pop rbx +000CADF6: pop r12 +000CADF8: pop rbp +000CADF9: retn + +### FUNC 000CADFA - 000CAE94 (154 bytes) name=_ZN6serial6Serial10SerialImpl9sendBreakEi +000CADFA: push rbp +000CADFB: mov rbp, rsp +000CADFE: push r12 +000CAE00: push rbx +000CAE01: sub rsp, 10h +000CAE05: mov [rbp+var_18], rdi +000CAE09: mov [rbp+var_1C], esi +000CAE0C: mov rax, [rbp+var_18] +000CAE10: movzx eax, byte ptr [rax+14h] +000CAE14: xor eax, 1 +000CAE17: test al, al +000CAE19: jz short loc_CAE53 +000CAE1B: mov edi, 10h; thrown_size +000CAE20: call ___cxa_allocate_exception +000CAE25: mov rbx, rax +000CAE28: lea rsi, aSerialSendbrea; "Serial::sendBreak" +000CAE2F: mov rdi, rbx; this +000CAE32: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CAE37: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CAE3E: mov rdx, rax; void (__fastcall *)(void *) +000CAE41: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CAE48: mov rsi, rax; lptinfo +000CAE4B: mov rdi, rbx; void * +000CAE4E: call ___cxa_throw +000CAE53: mov eax, [rbp+var_1C] +000CAE56: lea edx, [rax+3] +000CAE59: test eax, eax +000CAE5B: cmovs eax, edx +000CAE5E: sar eax, 2 +000CAE61: mov edx, eax +000CAE63: mov rax, [rbp+var_18] +000CAE67: mov eax, [rax+10h] +000CAE6A: mov esi, edx; duration +000CAE6C: mov edi, eax; fd +000CAE6E: call _tcsendbreak +000CAE73: jmp short loc_CAE8B +000CAE75: mov r12, rax +000CAE78: mov rdi, rbx; void * +000CAE7B: call ___cxa_free_exception +000CAE80: mov rax, r12 +000CAE83: mov rdi, rax; struct _Unwind_Exception * +000CAE86: call __Unwind_Resume +000CAE8B: add rsp, 10h +000CAE8F: pop rbx +000CAE90: pop r12 +000CAE92: pop rbp +000CAE93: retn + +### FUNC 000CAE94 - 000CB1B5 (801 bytes) name=_ZN6serial6Serial10SerialImpl8setBreakEb +000CAE94: push rbp +000CAE95: mov rbp, rsp +000CAE98: push r12 +000CAE9A: push rbx +000CAE9B: sub rsp, 1A0h +000CAEA2: mov [rbp+var_1A8], rdi +000CAEA9: mov eax, esi +000CAEAB: mov [rbp+var_1AC], al +000CAEB1: mov rax, [rbp+var_1A8] +000CAEB8: movzx eax, byte ptr [rax+14h] +000CAEBC: xor eax, 1 +000CAEBF: test al, al +000CAEC1: jz short loc_CAEFB +000CAEC3: mov edi, 10h; thrown_size +000CAEC8: call ___cxa_allocate_exception +000CAECD: mov rbx, rax +000CAED0: lea rsi, aSerialSetbreak; "Serial::setBreak" +000CAED7: mov rdi, rbx; this +000CAEDA: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CAEDF: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CAEE6: mov rdx, rax; void (__fastcall *)(void *) +000CAEE9: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CAEF0: mov rsi, rax; lptinfo +000CAEF3: mov rdi, rbx; void * +000CAEF6: call ___cxa_throw +000CAEFB: cmp [rbp+var_1AC], 0 +000CAF02: jz loc_CB012 +000CAF08: mov rax, [rbp+var_1A8] +000CAF0F: mov eax, [rax+10h] +000CAF12: mov esi, 5427h; request +000CAF17: mov edi, eax; fd +000CAF19: mov eax, 0 +000CAF1E: call _ioctl +000CAF23: cmp eax, 0FFFFFFFFh +000CAF26: setz al +000CAF29: test al, al +000CAF2B: jz loc_CB00D +000CAF31: mov esi, 8 +000CAF36: mov edi, 10h +000CAF3B: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CAF40: mov edx, eax +000CAF42: lea rax, [rbp+var_1A0] +000CAF49: mov esi, edx +000CAF4B: mov rdi, rax +000CAF4E: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CAF53: call ___errno_location +000CAF58: mov eax, [rax] +000CAF5A: mov edi, eax; errnum +000CAF5C: call _strerror +000CAF61: mov rbx, rax +000CAF64: call ___errno_location +000CAF69: mov r12d, [rax] +000CAF6C: lea rax, [rbp+var_1A0] +000CAF73: add rax, 10h +000CAF77: lea rsi, aSetbreakFailed; "setBreak failed on a call to ioctl(TIOC"... +000CAF7E: mov rdi, rax +000CAF81: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CAF86: mov esi, r12d +000CAF89: mov rdi, rax +000CAF8C: call __ZNSolsEi; std::ostream::operator<<(int) +000CAF91: lea rsi, asc_D4C5F; " " +000CAF98: mov rdi, rax +000CAF9B: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CAFA0: mov rsi, rbx +000CAFA3: mov rdi, rax +000CAFA6: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CAFAB: mov edi, 10h; thrown_size +000CAFB0: call ___cxa_allocate_exception +000CAFB5: mov rbx, rax +000CAFB8: lea rax, [rbp+var_30] +000CAFBC: lea rdx, [rbp+var_1A0] +000CAFC3: mov rsi, rdx +000CAFC6: mov rdi, rax +000CAFC9: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CAFCE: lea rax, [rbp+var_30] +000CAFD2: mov rdi, rax; this +000CAFD5: call __ZNKSs5c_strEv; std::string::c_str(void) +000CAFDA: mov rsi, rax; char * +000CAFDD: mov rdi, rbx; this +000CAFE0: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CAFE5: lea rax, [rbp+var_30] +000CAFE9: mov rdi, rax; this +000CAFEC: call __ZNSsD1Ev; std::string::~string() +000CAFF1: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CAFF8: mov rdx, rax; void (__fastcall *)(void *) +000CAFFB: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB002: mov rsi, rax; lptinfo +000CB005: mov rdi, rbx; void * +000CB008: call ___cxa_throw +000CB00D: jmp loc_CB1A9 +000CB012: mov rax, [rbp+var_1A8] +000CB019: mov eax, [rax+10h] +000CB01C: mov esi, 5428h; request +000CB021: mov edi, eax; fd +000CB023: mov eax, 0 +000CB028: call _ioctl +000CB02D: cmp eax, 0FFFFFFFFh +000CB030: setz al +000CB033: test al, al +000CB035: jz loc_CB1A9 +000CB03B: mov esi, 8 +000CB040: mov edi, 10h +000CB045: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CB04A: mov edx, eax +000CB04C: lea rax, [rbp+var_1A0] +000CB053: mov esi, edx +000CB055: mov rdi, rax +000CB058: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CB05D: call ___errno_location +000CB062: mov eax, [rax] +000CB064: mov edi, eax; errnum +000CB066: call _strerror +000CB06B: mov rbx, rax +000CB06E: call ___errno_location +000CB073: mov r12d, [rax] +000CB076: lea rax, [rbp+var_1A0] +000CB07D: add rax, 10h +000CB081: lea rsi, aSetbreakFailed_0; "setBreak failed on a call to ioctl(TIOC"... +000CB088: mov rdi, rax +000CB08B: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB090: mov esi, r12d +000CB093: mov rdi, rax +000CB096: call __ZNSolsEi; std::ostream::operator<<(int) +000CB09B: lea rsi, asc_D4C5F; " " +000CB0A2: mov rdi, rax +000CB0A5: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB0AA: mov rsi, rbx +000CB0AD: mov rdi, rax +000CB0B0: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB0B5: mov edi, 10h; thrown_size +000CB0BA: call ___cxa_allocate_exception +000CB0BF: mov rbx, rax +000CB0C2: lea rax, [rbp+var_20] +000CB0C6: lea rdx, [rbp+var_1A0] +000CB0CD: mov rsi, rdx +000CB0D0: mov rdi, rax +000CB0D3: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CB0D8: lea rax, [rbp+var_20] +000CB0DC: mov rdi, rax; this +000CB0DF: call __ZNKSs5c_strEv; std::string::c_str(void) +000CB0E4: mov rsi, rax; char * +000CB0E7: mov rdi, rbx; this +000CB0EA: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CB0EF: lea rax, [rbp+var_20] +000CB0F3: mov rdi, rax; this +000CB0F6: call __ZNSsD1Ev; std::string::~string() +000CB0FB: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CB102: mov rdx, rax; void (__fastcall *)(void *) +000CB105: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB10C: mov rsi, rax; lptinfo +000CB10F: mov rdi, rbx; void * +000CB112: call ___cxa_throw +000CB117: mov r12, rax +000CB11A: mov rdi, rbx; void * +000CB11D: call ___cxa_free_exception +000CB122: mov rax, r12 +000CB125: mov rdi, rax; struct _Unwind_Exception * +000CB128: call __Unwind_Resume +000CB12D: mov r12, rax +000CB130: lea rax, [rbp+var_30] +000CB134: mov rdi, rax; this +000CB137: call __ZNSsD1Ev; std::string::~string() +000CB13C: jmp short loc_CB141 +000CB13E: mov r12, rax +000CB141: mov rdi, rbx; void * +000CB144: call ___cxa_free_exception +000CB149: mov rbx, r12 +000CB14C: jmp short loc_CB151 +000CB14E: mov rbx, rax +000CB151: lea rax, [rbp+var_1A0] +000CB158: mov rdi, rax +000CB15B: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB160: mov rax, rbx +000CB163: mov rdi, rax; struct _Unwind_Exception * +000CB166: call __Unwind_Resume +000CB16B: mov r12, rax +000CB16E: lea rax, [rbp+var_20] +000CB172: mov rdi, rax; this +000CB175: call __ZNSsD1Ev; std::string::~string() +000CB17A: jmp short loc_CB17F +000CB17C: mov r12, rax +000CB17F: mov rdi, rbx; void * +000CB182: call ___cxa_free_exception +000CB187: mov rbx, r12 +000CB18A: jmp short loc_CB18F +000CB18C: mov rbx, rax +000CB18F: lea rax, [rbp+var_1A0] +000CB196: mov rdi, rax +000CB199: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB19E: mov rax, rbx +000CB1A1: mov rdi, rax; struct _Unwind_Exception * +000CB1A4: call __Unwind_Resume +000CB1A9: add rsp, 1A0h +000CB1B0: pop rbx +000CB1B1: pop r12 +000CB1B3: pop rbp +000CB1B4: retn + +### FUNC 000CB1B6 - 000CB4E6 (816 bytes) name=_ZN6serial6Serial10SerialImpl6setRTSEb +000CB1B6: push rbp +000CB1B7: mov rbp, rsp +000CB1BA: push r12 +000CB1BC: push rbx +000CB1BD: sub rsp, 1B0h +000CB1C4: mov [rbp+var_1B8], rdi +000CB1CB: mov eax, esi +000CB1CD: mov [rbp+var_1BC], al +000CB1D3: mov rax, [rbp+var_1B8] +000CB1DA: movzx eax, byte ptr [rax+14h] +000CB1DE: xor eax, 1 +000CB1E1: test al, al +000CB1E3: jz short loc_CB21D +000CB1E5: mov edi, 10h; thrown_size +000CB1EA: call ___cxa_allocate_exception +000CB1EF: mov rbx, rax +000CB1F2: lea rsi, aSerialSetrts; "Serial::setRTS" +000CB1F9: mov rdi, rbx; this +000CB1FC: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CB201: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CB208: mov rdx, rax; void (__fastcall *)(void *) +000CB20B: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CB212: mov rsi, rax; lptinfo +000CB215: mov rdi, rbx; void * +000CB218: call ___cxa_throw +000CB21D: mov [rbp+var_34], 4 +000CB224: cmp [rbp+var_1BC], 0 +000CB22B: jz loc_CB33F +000CB231: mov rax, [rbp+var_1B8] +000CB238: mov eax, [rax+10h] +000CB23B: lea rdx, [rbp+var_34] +000CB23F: mov esi, 5416h; request +000CB244: mov edi, eax; fd +000CB246: mov eax, 0 +000CB24B: call _ioctl +000CB250: cmp eax, 0FFFFFFFFh +000CB253: setz al +000CB256: test al, al +000CB258: jz loc_CB33A +000CB25E: mov esi, 8 +000CB263: mov edi, 10h +000CB268: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CB26D: mov edx, eax +000CB26F: lea rax, [rbp+var_1B0] +000CB276: mov esi, edx +000CB278: mov rdi, rax +000CB27B: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CB280: call ___errno_location +000CB285: mov eax, [rax] +000CB287: mov edi, eax; errnum +000CB289: call _strerror +000CB28E: mov rbx, rax +000CB291: call ___errno_location +000CB296: mov r12d, [rax] +000CB299: lea rax, [rbp+var_1B0] +000CB2A0: add rax, 10h +000CB2A4: lea rsi, aSetrtsFailedOn; "setRTS failed on a call to ioctl(TIOCMB"... +000CB2AB: mov rdi, rax +000CB2AE: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB2B3: mov esi, r12d +000CB2B6: mov rdi, rax +000CB2B9: call __ZNSolsEi; std::ostream::operator<<(int) +000CB2BE: lea rsi, asc_D4C5F; " " +000CB2C5: mov rdi, rax +000CB2C8: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB2CD: mov rsi, rbx +000CB2D0: mov rdi, rax +000CB2D3: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB2D8: mov edi, 10h; thrown_size +000CB2DD: call ___cxa_allocate_exception +000CB2E2: mov rbx, rax +000CB2E5: lea rax, [rbp+var_30] +000CB2E9: lea rdx, [rbp+var_1B0] +000CB2F0: mov rsi, rdx +000CB2F3: mov rdi, rax +000CB2F6: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CB2FB: lea rax, [rbp+var_30] +000CB2FF: mov rdi, rax; this +000CB302: call __ZNKSs5c_strEv; std::string::c_str(void) +000CB307: mov rsi, rax; char * +000CB30A: mov rdi, rbx; this +000CB30D: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CB312: lea rax, [rbp+var_30] +000CB316: mov rdi, rax; this +000CB319: call __ZNSsD1Ev; std::string::~string() +000CB31E: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CB325: mov rdx, rax; void (__fastcall *)(void *) +000CB328: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB32F: mov rsi, rax; lptinfo +000CB332: mov rdi, rbx; void * +000CB335: call ___cxa_throw +000CB33A: jmp loc_CB4DA +000CB33F: mov rax, [rbp+var_1B8] +000CB346: mov eax, [rax+10h] +000CB349: lea rdx, [rbp+var_34] +000CB34D: mov esi, 5417h; request +000CB352: mov edi, eax; fd +000CB354: mov eax, 0 +000CB359: call _ioctl +000CB35E: cmp eax, 0FFFFFFFFh +000CB361: setz al +000CB364: test al, al +000CB366: jz loc_CB4DA +000CB36C: mov esi, 8 +000CB371: mov edi, 10h +000CB376: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CB37B: mov edx, eax +000CB37D: lea rax, [rbp+var_1B0] +000CB384: mov esi, edx +000CB386: mov rdi, rax +000CB389: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CB38E: call ___errno_location +000CB393: mov eax, [rax] +000CB395: mov edi, eax; errnum +000CB397: call _strerror +000CB39C: mov rbx, rax +000CB39F: call ___errno_location +000CB3A4: mov r12d, [rax] +000CB3A7: lea rax, [rbp+var_1B0] +000CB3AE: add rax, 10h +000CB3B2: lea rsi, aSetrtsFailedOn_0; "setRTS failed on a call to ioctl(TIOCMB"... +000CB3B9: mov rdi, rax +000CB3BC: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB3C1: mov esi, r12d +000CB3C4: mov rdi, rax +000CB3C7: call __ZNSolsEi; std::ostream::operator<<(int) +000CB3CC: lea rsi, asc_D4C5F; " " +000CB3D3: mov rdi, rax +000CB3D6: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB3DB: mov rsi, rbx +000CB3DE: mov rdi, rax +000CB3E1: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB3E6: mov edi, 10h; thrown_size +000CB3EB: call ___cxa_allocate_exception +000CB3F0: mov rbx, rax +000CB3F3: lea rax, [rbp+var_20] +000CB3F7: lea rdx, [rbp+var_1B0] +000CB3FE: mov rsi, rdx +000CB401: mov rdi, rax +000CB404: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CB409: lea rax, [rbp+var_20] +000CB40D: mov rdi, rax; this +000CB410: call __ZNKSs5c_strEv; std::string::c_str(void) +000CB415: mov rsi, rax; char * +000CB418: mov rdi, rbx; this +000CB41B: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CB420: lea rax, [rbp+var_20] +000CB424: mov rdi, rax; this +000CB427: call __ZNSsD1Ev; std::string::~string() +000CB42C: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CB433: mov rdx, rax; void (__fastcall *)(void *) +000CB436: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB43D: mov rsi, rax; lptinfo +000CB440: mov rdi, rbx; void * +000CB443: call ___cxa_throw +000CB448: mov r12, rax +000CB44B: mov rdi, rbx; void * +000CB44E: call ___cxa_free_exception +000CB453: mov rax, r12 +000CB456: mov rdi, rax; struct _Unwind_Exception * +000CB459: call __Unwind_Resume +000CB45E: mov r12, rax +000CB461: lea rax, [rbp+var_30] +000CB465: mov rdi, rax; this +000CB468: call __ZNSsD1Ev; std::string::~string() +000CB46D: jmp short loc_CB472 +000CB46F: mov r12, rax +000CB472: mov rdi, rbx; void * +000CB475: call ___cxa_free_exception +000CB47A: mov rbx, r12 +000CB47D: jmp short loc_CB482 +000CB47F: mov rbx, rax +000CB482: lea rax, [rbp+var_1B0] +000CB489: mov rdi, rax +000CB48C: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB491: mov rax, rbx +000CB494: mov rdi, rax; struct _Unwind_Exception * +000CB497: call __Unwind_Resume +000CB49C: mov r12, rax +000CB49F: lea rax, [rbp+var_20] +000CB4A3: mov rdi, rax; this +000CB4A6: call __ZNSsD1Ev; std::string::~string() +000CB4AB: jmp short loc_CB4B0 +000CB4AD: mov r12, rax +000CB4B0: mov rdi, rbx; void * +000CB4B3: call ___cxa_free_exception +000CB4B8: mov rbx, r12 +000CB4BB: jmp short loc_CB4C0 +000CB4BD: mov rbx, rax +000CB4C0: lea rax, [rbp+var_1B0] +000CB4C7: mov rdi, rax +000CB4CA: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB4CF: mov rax, rbx +000CB4D2: mov rdi, rax; struct _Unwind_Exception * +000CB4D5: call __Unwind_Resume +000CB4DA: add rsp, 1B0h +000CB4E1: pop rbx +000CB4E2: pop r12 +000CB4E4: pop rbp +000CB4E5: retn + +### FUNC 000CB4E6 - 000CB816 (816 bytes) name=_ZN6serial6Serial10SerialImpl6setDTREb +000CB4E6: push rbp +000CB4E7: mov rbp, rsp +000CB4EA: push r12 +000CB4EC: push rbx +000CB4ED: sub rsp, 1B0h +000CB4F4: mov [rbp+var_1B8], rdi +000CB4FB: mov eax, esi +000CB4FD: mov [rbp+var_1BC], al +000CB503: mov rax, [rbp+var_1B8] +000CB50A: movzx eax, byte ptr [rax+14h] +000CB50E: xor eax, 1 +000CB511: test al, al +000CB513: jz short loc_CB54D +000CB515: mov edi, 10h; thrown_size +000CB51A: call ___cxa_allocate_exception +000CB51F: mov rbx, rax +000CB522: lea rsi, aSerialSetdtr; "Serial::setDTR" +000CB529: mov rdi, rbx; this +000CB52C: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CB531: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CB538: mov rdx, rax; void (__fastcall *)(void *) +000CB53B: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CB542: mov rsi, rax; lptinfo +000CB545: mov rdi, rbx; void * +000CB548: call ___cxa_throw +000CB54D: mov [rbp+var_34], 2 +000CB554: cmp [rbp+var_1BC], 0 +000CB55B: jz loc_CB66F +000CB561: mov rax, [rbp+var_1B8] +000CB568: mov eax, [rax+10h] +000CB56B: lea rdx, [rbp+var_34] +000CB56F: mov esi, 5416h; request +000CB574: mov edi, eax; fd +000CB576: mov eax, 0 +000CB57B: call _ioctl +000CB580: cmp eax, 0FFFFFFFFh +000CB583: setz al +000CB586: test al, al +000CB588: jz loc_CB66A +000CB58E: mov esi, 8 +000CB593: mov edi, 10h +000CB598: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CB59D: mov edx, eax +000CB59F: lea rax, [rbp+var_1B0] +000CB5A6: mov esi, edx +000CB5A8: mov rdi, rax +000CB5AB: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CB5B0: call ___errno_location +000CB5B5: mov eax, [rax] +000CB5B7: mov edi, eax; errnum +000CB5B9: call _strerror +000CB5BE: mov rbx, rax +000CB5C1: call ___errno_location +000CB5C6: mov r12d, [rax] +000CB5C9: lea rax, [rbp+var_1B0] +000CB5D0: add rax, 10h +000CB5D4: lea rsi, aSetdtrFailedOn; "setDTR failed on a call to ioctl(TIOCMB"... +000CB5DB: mov rdi, rax +000CB5DE: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB5E3: mov esi, r12d +000CB5E6: mov rdi, rax +000CB5E9: call __ZNSolsEi; std::ostream::operator<<(int) +000CB5EE: lea rsi, asc_D4C5F; " " +000CB5F5: mov rdi, rax +000CB5F8: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB5FD: mov rsi, rbx +000CB600: mov rdi, rax +000CB603: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB608: mov edi, 10h; thrown_size +000CB60D: call ___cxa_allocate_exception +000CB612: mov rbx, rax +000CB615: lea rax, [rbp+var_30] +000CB619: lea rdx, [rbp+var_1B0] +000CB620: mov rsi, rdx +000CB623: mov rdi, rax +000CB626: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CB62B: lea rax, [rbp+var_30] +000CB62F: mov rdi, rax; this +000CB632: call __ZNKSs5c_strEv; std::string::c_str(void) +000CB637: mov rsi, rax; char * +000CB63A: mov rdi, rbx; this +000CB63D: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CB642: lea rax, [rbp+var_30] +000CB646: mov rdi, rax; this +000CB649: call __ZNSsD1Ev; std::string::~string() +000CB64E: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CB655: mov rdx, rax; void (__fastcall *)(void *) +000CB658: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB65F: mov rsi, rax; lptinfo +000CB662: mov rdi, rbx; void * +000CB665: call ___cxa_throw +000CB66A: jmp loc_CB80A +000CB66F: mov rax, [rbp+var_1B8] +000CB676: mov eax, [rax+10h] +000CB679: lea rdx, [rbp+var_34] +000CB67D: mov esi, 5417h; request +000CB682: mov edi, eax; fd +000CB684: mov eax, 0 +000CB689: call _ioctl +000CB68E: cmp eax, 0FFFFFFFFh +000CB691: setz al +000CB694: test al, al +000CB696: jz loc_CB80A +000CB69C: mov esi, 8 +000CB6A1: mov edi, 10h +000CB6A6: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CB6AB: mov edx, eax +000CB6AD: lea rax, [rbp+var_1B0] +000CB6B4: mov esi, edx +000CB6B6: mov rdi, rax +000CB6B9: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CB6BE: call ___errno_location +000CB6C3: mov eax, [rax] +000CB6C5: mov edi, eax; errnum +000CB6C7: call _strerror +000CB6CC: mov rbx, rax +000CB6CF: call ___errno_location +000CB6D4: mov r12d, [rax] +000CB6D7: lea rax, [rbp+var_1B0] +000CB6DE: add rax, 10h +000CB6E2: lea rsi, aSetdtrFailedOn_0; "setDTR failed on a call to ioctl(TIOCMB"... +000CB6E9: mov rdi, rax +000CB6EC: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB6F1: mov esi, r12d +000CB6F4: mov rdi, rax +000CB6F7: call __ZNSolsEi; std::ostream::operator<<(int) +000CB6FC: lea rsi, asc_D4C5F; " " +000CB703: mov rdi, rax +000CB706: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB70B: mov rsi, rbx +000CB70E: mov rdi, rax +000CB711: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB716: mov edi, 10h; thrown_size +000CB71B: call ___cxa_allocate_exception +000CB720: mov rbx, rax +000CB723: lea rax, [rbp+var_20] +000CB727: lea rdx, [rbp+var_1B0] +000CB72E: mov rsi, rdx +000CB731: mov rdi, rax +000CB734: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CB739: lea rax, [rbp+var_20] +000CB73D: mov rdi, rax; this +000CB740: call __ZNKSs5c_strEv; std::string::c_str(void) +000CB745: mov rsi, rax; char * +000CB748: mov rdi, rbx; this +000CB74B: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CB750: lea rax, [rbp+var_20] +000CB754: mov rdi, rax; this +000CB757: call __ZNSsD1Ev; std::string::~string() +000CB75C: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CB763: mov rdx, rax; void (__fastcall *)(void *) +000CB766: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB76D: mov rsi, rax; lptinfo +000CB770: mov rdi, rbx; void * +000CB773: call ___cxa_throw +000CB778: mov r12, rax +000CB77B: mov rdi, rbx; void * +000CB77E: call ___cxa_free_exception +000CB783: mov rax, r12 +000CB786: mov rdi, rax; struct _Unwind_Exception * +000CB789: call __Unwind_Resume +000CB78E: mov r12, rax +000CB791: lea rax, [rbp+var_30] +000CB795: mov rdi, rax; this +000CB798: call __ZNSsD1Ev; std::string::~string() +000CB79D: jmp short loc_CB7A2 +000CB79F: mov r12, rax +000CB7A2: mov rdi, rbx; void * +000CB7A5: call ___cxa_free_exception +000CB7AA: mov rbx, r12 +000CB7AD: jmp short loc_CB7B2 +000CB7AF: mov rbx, rax +000CB7B2: lea rax, [rbp+var_1B0] +000CB7B9: mov rdi, rax +000CB7BC: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB7C1: mov rax, rbx +000CB7C4: mov rdi, rax; struct _Unwind_Exception * +000CB7C7: call __Unwind_Resume +000CB7CC: mov r12, rax +000CB7CF: lea rax, [rbp+var_20] +000CB7D3: mov rdi, rax; this +000CB7D6: call __ZNSsD1Ev; std::string::~string() +000CB7DB: jmp short loc_CB7E0 +000CB7DD: mov r12, rax +000CB7E0: mov rdi, rbx; void * +000CB7E3: call ___cxa_free_exception +000CB7E8: mov rbx, r12 +000CB7EB: jmp short loc_CB7F0 +000CB7ED: mov rbx, rax +000CB7F0: lea rax, [rbp+var_1B0] +000CB7F7: mov rdi, rax +000CB7FA: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB7FF: mov rax, rbx +000CB802: mov rdi, rax; struct _Unwind_Exception * +000CB805: call __Unwind_Resume +000CB80A: add rsp, 1B0h +000CB811: pop rbx +000CB812: pop r12 +000CB814: pop rbp +000CB815: retn + +### FUNC 000CB816 - 000CB98C (374 bytes) name=_ZN6serial6Serial10SerialImpl13waitForChangeEv +000CB816: push rbp +000CB817: mov rbp, rsp +000CB81A: push r12 +000CB81C: push rbx +000CB81D: sub rsp, 1A0h +000CB824: mov [rbp+var_1A8], rdi +000CB82B: mov [rbp+var_24], 1E0h +000CB832: mov rax, [rbp+var_1A8] +000CB839: mov eax, [rax+10h] +000CB83C: lea rdx, [rbp+var_24] +000CB840: mov esi, 545Ch; request +000CB845: mov edi, eax; fd +000CB847: mov eax, 0 +000CB84C: call _ioctl +000CB851: cmp eax, 0FFFFFFFFh +000CB854: setz al +000CB857: test al, al +000CB859: jz loc_CB93B +000CB85F: mov esi, 8 +000CB864: mov edi, 10h +000CB869: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CB86E: mov edx, eax +000CB870: lea rax, [rbp+var_1A0] +000CB877: mov esi, edx +000CB879: mov rdi, rax +000CB87C: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CB881: call ___errno_location +000CB886: mov eax, [rax] +000CB888: mov edi, eax; errnum +000CB88A: call _strerror +000CB88F: mov rbx, rax +000CB892: call ___errno_location +000CB897: mov r12d, [rax] +000CB89A: lea rax, [rbp+var_1A0] +000CB8A1: add rax, 10h +000CB8A5: lea rsi, aWaitfordsrFail; "waitForDSR failed on a call to ioctl(TI"... +000CB8AC: mov rdi, rax +000CB8AF: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB8B4: mov esi, r12d +000CB8B7: mov rdi, rax +000CB8BA: call __ZNSolsEi; std::ostream::operator<<(int) +000CB8BF: lea rsi, asc_D4C5F; " " +000CB8C6: mov rdi, rax +000CB8C9: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB8CE: mov rsi, rbx +000CB8D1: mov rdi, rax +000CB8D4: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CB8D9: mov edi, 10h; thrown_size +000CB8DE: call ___cxa_allocate_exception +000CB8E3: mov rbx, rax +000CB8E6: lea rax, [rbp+var_20] +000CB8EA: lea rdx, [rbp+var_1A0] +000CB8F1: mov rsi, rdx +000CB8F4: mov rdi, rax +000CB8F7: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CB8FC: lea rax, [rbp+var_20] +000CB900: mov rdi, rax; this +000CB903: call __ZNKSs5c_strEv; std::string::c_str(void) +000CB908: mov rsi, rax; char * +000CB90B: mov rdi, rbx; this +000CB90E: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CB913: lea rax, [rbp+var_20] +000CB917: mov rdi, rax; this +000CB91A: call __ZNSsD1Ev; std::string::~string() +000CB91F: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CB926: mov rdx, rax; void (__fastcall *)(void *) +000CB929: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CB930: mov rsi, rax; lptinfo +000CB933: mov rdi, rbx; void * +000CB936: call ___cxa_throw +000CB93B: mov eax, 1 +000CB940: jmp short loc_CB980 +000CB942: mov r12, rax +000CB945: lea rax, [rbp+var_20] +000CB949: mov rdi, rax; this +000CB94C: call __ZNSsD1Ev; std::string::~string() +000CB951: jmp short loc_CB956 +000CB953: mov r12, rax +000CB956: mov rdi, rbx; void * +000CB959: call ___cxa_free_exception +000CB95E: mov rbx, r12 +000CB961: jmp short loc_CB966 +000CB963: mov rbx, rax +000CB966: lea rax, [rbp+var_1A0] +000CB96D: mov rdi, rax +000CB970: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CB975: mov rax, rbx +000CB978: mov rdi, rax; struct _Unwind_Exception * +000CB97B: call __Unwind_Resume +000CB980: add rsp, 1A0h +000CB987: pop rbx +000CB988: pop r12 +000CB98A: pop rbp +000CB98B: retn + +### FUNC 000CB98C - 000CBB61 (469 bytes) name=_ZN6serial6Serial10SerialImpl6getCTSEv +000CB98C: push rbp +000CB98D: mov rbp, rsp +000CB990: push r12 +000CB992: push rbx +000CB993: sub rsp, 1A0h +000CB99A: mov [rbp+var_1A8], rdi +000CB9A1: mov rax, [rbp+var_1A8] +000CB9A8: movzx eax, byte ptr [rax+14h] +000CB9AC: xor eax, 1 +000CB9AF: test al, al +000CB9B1: jz short loc_CB9EB +000CB9B3: mov edi, 10h; thrown_size +000CB9B8: call ___cxa_allocate_exception +000CB9BD: mov rbx, rax +000CB9C0: lea rsi, aSerialGetcts; "Serial::getCTS" +000CB9C7: mov rdi, rbx; this +000CB9CA: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CB9CF: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CB9D6: mov rdx, rax; void (__fastcall *)(void *) +000CB9D9: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CB9E0: mov rsi, rax; lptinfo +000CB9E3: mov rdi, rbx; void * +000CB9E6: call ___cxa_throw +000CB9EB: mov rax, [rbp+var_1A8] +000CB9F2: mov eax, [rax+10h] +000CB9F5: lea rdx, [rbp+var_24] +000CB9F9: mov esi, 5415h; request +000CB9FE: mov edi, eax; fd +000CBA00: mov eax, 0 +000CBA05: call _ioctl +000CBA0A: cmp eax, 0FFFFFFFFh +000CBA0D: setz al +000CBA10: test al, al +000CBA12: jz loc_CBAF4 +000CBA18: mov esi, 8 +000CBA1D: mov edi, 10h +000CBA22: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CBA27: mov edx, eax +000CBA29: lea rax, [rbp+var_1A0] +000CBA30: mov esi, edx +000CBA32: mov rdi, rax +000CBA35: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CBA3A: call ___errno_location +000CBA3F: mov eax, [rax] +000CBA41: mov edi, eax; errnum +000CBA43: call _strerror +000CBA48: mov rbx, rax +000CBA4B: call ___errno_location +000CBA50: mov r12d, [rax] +000CBA53: lea rax, [rbp+var_1A0] +000CBA5A: add rax, 10h +000CBA5E: lea rsi, aGetctsFailedOn; "getCTS failed on a call to ioctl(TIOCMG"... +000CBA65: mov rdi, rax +000CBA68: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBA6D: mov esi, r12d +000CBA70: mov rdi, rax +000CBA73: call __ZNSolsEi; std::ostream::operator<<(int) +000CBA78: lea rsi, asc_D4C5F; " " +000CBA7F: mov rdi, rax +000CBA82: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBA87: mov rsi, rbx +000CBA8A: mov rdi, rax +000CBA8D: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBA92: mov edi, 10h; thrown_size +000CBA97: call ___cxa_allocate_exception +000CBA9C: mov rbx, rax +000CBA9F: lea rax, [rbp+var_20] +000CBAA3: lea rdx, [rbp+var_1A0] +000CBAAA: mov rsi, rdx +000CBAAD: mov rdi, rax +000CBAB0: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CBAB5: lea rax, [rbp+var_20] +000CBAB9: mov rdi, rax; this +000CBABC: call __ZNKSs5c_strEv; std::string::c_str(void) +000CBAC1: mov rsi, rax; char * +000CBAC4: mov rdi, rbx; this +000CBAC7: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CBACC: lea rax, [rbp+var_20] +000CBAD0: mov rdi, rax; this +000CBAD3: call __ZNSsD1Ev; std::string::~string() +000CBAD8: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CBADF: mov rdx, rax; void (__fastcall *)(void *) +000CBAE2: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CBAE9: mov rsi, rax; lptinfo +000CBAEC: mov rdi, rbx; void * +000CBAEF: call ___cxa_throw +000CBAF4: mov eax, [rbp+var_24] +000CBAF7: and eax, 20h +000CBAFA: test eax, eax +000CBAFC: setnz al +000CBAFF: jmp short loc_CBB55 +000CBB01: mov r12, rax +000CBB04: mov rdi, rbx; void * +000CBB07: call ___cxa_free_exception +000CBB0C: mov rax, r12 +000CBB0F: mov rdi, rax; struct _Unwind_Exception * +000CBB12: call __Unwind_Resume +000CBB17: mov r12, rax +000CBB1A: lea rax, [rbp+var_20] +000CBB1E: mov rdi, rax; this +000CBB21: call __ZNSsD1Ev; std::string::~string() +000CBB26: jmp short loc_CBB2B +000CBB28: mov r12, rax +000CBB2B: mov rdi, rbx; void * +000CBB2E: call ___cxa_free_exception +000CBB33: mov rbx, r12 +000CBB36: jmp short loc_CBB3B +000CBB38: mov rbx, rax +000CBB3B: lea rax, [rbp+var_1A0] +000CBB42: mov rdi, rax +000CBB45: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CBB4A: mov rax, rbx +000CBB4D: mov rdi, rax; struct _Unwind_Exception * +000CBB50: call __Unwind_Resume +000CBB55: add rsp, 1A0h +000CBB5C: pop rbx +000CBB5D: pop r12 +000CBB5F: pop rbp +000CBB60: retn + +### FUNC 000CBB62 - 000CBD39 (471 bytes) name=_ZN6serial6Serial10SerialImpl6getDSREv +000CBB62: push rbp +000CBB63: mov rbp, rsp +000CBB66: push r12 +000CBB68: push rbx +000CBB69: sub rsp, 1A0h +000CBB70: mov [rbp+var_1A8], rdi +000CBB77: mov rax, [rbp+var_1A8] +000CBB7E: movzx eax, byte ptr [rax+14h] +000CBB82: xor eax, 1 +000CBB85: test al, al +000CBB87: jz short loc_CBBC1 +000CBB89: mov edi, 10h; thrown_size +000CBB8E: call ___cxa_allocate_exception +000CBB93: mov rbx, rax +000CBB96: lea rsi, aSerialGetdsr; "Serial::getDSR" +000CBB9D: mov rdi, rbx; this +000CBBA0: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CBBA5: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CBBAC: mov rdx, rax; void (__fastcall *)(void *) +000CBBAF: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CBBB6: mov rsi, rax; lptinfo +000CBBB9: mov rdi, rbx; void * +000CBBBC: call ___cxa_throw +000CBBC1: mov rax, [rbp+var_1A8] +000CBBC8: mov eax, [rax+10h] +000CBBCB: lea rdx, [rbp+var_24] +000CBBCF: mov esi, 5415h; request +000CBBD4: mov edi, eax; fd +000CBBD6: mov eax, 0 +000CBBDB: call _ioctl +000CBBE0: cmp eax, 0FFFFFFFFh +000CBBE3: setz al +000CBBE6: test al, al +000CBBE8: jz loc_CBCCA +000CBBEE: mov esi, 8 +000CBBF3: mov edi, 10h +000CBBF8: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CBBFD: mov edx, eax +000CBBFF: lea rax, [rbp+var_1A0] +000CBC06: mov esi, edx +000CBC08: mov rdi, rax +000CBC0B: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CBC10: call ___errno_location +000CBC15: mov eax, [rax] +000CBC17: mov edi, eax; errnum +000CBC19: call _strerror +000CBC1E: mov rbx, rax +000CBC21: call ___errno_location +000CBC26: mov r12d, [rax] +000CBC29: lea rax, [rbp+var_1A0] +000CBC30: add rax, 10h +000CBC34: lea rsi, aGetdsrFailedOn; "getDSR failed on a call to ioctl(TIOCMG"... +000CBC3B: mov rdi, rax +000CBC3E: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBC43: mov esi, r12d +000CBC46: mov rdi, rax +000CBC49: call __ZNSolsEi; std::ostream::operator<<(int) +000CBC4E: lea rsi, asc_D4C5F; " " +000CBC55: mov rdi, rax +000CBC58: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBC5D: mov rsi, rbx +000CBC60: mov rdi, rax +000CBC63: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBC68: mov edi, 10h; thrown_size +000CBC6D: call ___cxa_allocate_exception +000CBC72: mov rbx, rax +000CBC75: lea rax, [rbp+var_20] +000CBC79: lea rdx, [rbp+var_1A0] +000CBC80: mov rsi, rdx +000CBC83: mov rdi, rax +000CBC86: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CBC8B: lea rax, [rbp+var_20] +000CBC8F: mov rdi, rax; this +000CBC92: call __ZNKSs5c_strEv; std::string::c_str(void) +000CBC97: mov rsi, rax; char * +000CBC9A: mov rdi, rbx; this +000CBC9D: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CBCA2: lea rax, [rbp+var_20] +000CBCA6: mov rdi, rax; this +000CBCA9: call __ZNSsD1Ev; std::string::~string() +000CBCAE: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CBCB5: mov rdx, rax; void (__fastcall *)(void *) +000CBCB8: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CBCBF: mov rsi, rax; lptinfo +000CBCC2: mov rdi, rbx; void * +000CBCC5: call ___cxa_throw +000CBCCA: mov eax, [rbp+var_24] +000CBCCD: and eax, 100h +000CBCD2: test eax, eax +000CBCD4: setnz al +000CBCD7: jmp short loc_CBD2D +000CBCD9: mov r12, rax +000CBCDC: mov rdi, rbx; void * +000CBCDF: call ___cxa_free_exception +000CBCE4: mov rax, r12 +000CBCE7: mov rdi, rax; struct _Unwind_Exception * +000CBCEA: call __Unwind_Resume +000CBCEF: mov r12, rax +000CBCF2: lea rax, [rbp+var_20] +000CBCF6: mov rdi, rax; this +000CBCF9: call __ZNSsD1Ev; std::string::~string() +000CBCFE: jmp short loc_CBD03 +000CBD00: mov r12, rax +000CBD03: mov rdi, rbx; void * +000CBD06: call ___cxa_free_exception +000CBD0B: mov rbx, r12 +000CBD0E: jmp short loc_CBD13 +000CBD10: mov rbx, rax +000CBD13: lea rax, [rbp+var_1A0] +000CBD1A: mov rdi, rax +000CBD1D: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CBD22: mov rax, rbx +000CBD25: mov rdi, rax; struct _Unwind_Exception * +000CBD28: call __Unwind_Resume +000CBD2D: add rsp, 1A0h +000CBD34: pop rbx +000CBD35: pop r12 +000CBD37: pop rbp +000CBD38: retn + +### FUNC 000CBD3A - 000CBF11 (471 bytes) name=_ZN6serial6Serial10SerialImpl5getRIEv +000CBD3A: push rbp +000CBD3B: mov rbp, rsp +000CBD3E: push r12 +000CBD40: push rbx +000CBD41: sub rsp, 1A0h +000CBD48: mov [rbp+var_1A8], rdi +000CBD4F: mov rax, [rbp+var_1A8] +000CBD56: movzx eax, byte ptr [rax+14h] +000CBD5A: xor eax, 1 +000CBD5D: test al, al +000CBD5F: jz short loc_CBD99 +000CBD61: mov edi, 10h; thrown_size +000CBD66: call ___cxa_allocate_exception +000CBD6B: mov rbx, rax +000CBD6E: lea rsi, aSerialGetri; "Serial::getRI" +000CBD75: mov rdi, rbx; this +000CBD78: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CBD7D: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CBD84: mov rdx, rax; void (__fastcall *)(void *) +000CBD87: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CBD8E: mov rsi, rax; lptinfo +000CBD91: mov rdi, rbx; void * +000CBD94: call ___cxa_throw +000CBD99: mov rax, [rbp+var_1A8] +000CBDA0: mov eax, [rax+10h] +000CBDA3: lea rdx, [rbp+var_24] +000CBDA7: mov esi, 5415h; request +000CBDAC: mov edi, eax; fd +000CBDAE: mov eax, 0 +000CBDB3: call _ioctl +000CBDB8: cmp eax, 0FFFFFFFFh +000CBDBB: setz al +000CBDBE: test al, al +000CBDC0: jz loc_CBEA2 +000CBDC6: mov esi, 8 +000CBDCB: mov edi, 10h +000CBDD0: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CBDD5: mov edx, eax +000CBDD7: lea rax, [rbp+var_1A0] +000CBDDE: mov esi, edx +000CBDE0: mov rdi, rax +000CBDE3: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CBDE8: call ___errno_location +000CBDED: mov eax, [rax] +000CBDEF: mov edi, eax; errnum +000CBDF1: call _strerror +000CBDF6: mov rbx, rax +000CBDF9: call ___errno_location +000CBDFE: mov r12d, [rax] +000CBE01: lea rax, [rbp+var_1A0] +000CBE08: add rax, 10h +000CBE0C: lea rsi, aGetriFailedOnA; "getRI failed on a call to ioctl(TIOCMGE"... +000CBE13: mov rdi, rax +000CBE16: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBE1B: mov esi, r12d +000CBE1E: mov rdi, rax +000CBE21: call __ZNSolsEi; std::ostream::operator<<(int) +000CBE26: lea rsi, asc_D4C5F; " " +000CBE2D: mov rdi, rax +000CBE30: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBE35: mov rsi, rbx +000CBE38: mov rdi, rax +000CBE3B: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBE40: mov edi, 10h; thrown_size +000CBE45: call ___cxa_allocate_exception +000CBE4A: mov rbx, rax +000CBE4D: lea rax, [rbp+var_20] +000CBE51: lea rdx, [rbp+var_1A0] +000CBE58: mov rsi, rdx +000CBE5B: mov rdi, rax +000CBE5E: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CBE63: lea rax, [rbp+var_20] +000CBE67: mov rdi, rax; this +000CBE6A: call __ZNKSs5c_strEv; std::string::c_str(void) +000CBE6F: mov rsi, rax; char * +000CBE72: mov rdi, rbx; this +000CBE75: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CBE7A: lea rax, [rbp+var_20] +000CBE7E: mov rdi, rax; this +000CBE81: call __ZNSsD1Ev; std::string::~string() +000CBE86: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CBE8D: mov rdx, rax; void (__fastcall *)(void *) +000CBE90: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CBE97: mov rsi, rax; lptinfo +000CBE9A: mov rdi, rbx; void * +000CBE9D: call ___cxa_throw +000CBEA2: mov eax, [rbp+var_24] +000CBEA5: and eax, 80h +000CBEAA: test eax, eax +000CBEAC: setnz al +000CBEAF: jmp short loc_CBF05 +000CBEB1: mov r12, rax +000CBEB4: mov rdi, rbx; void * +000CBEB7: call ___cxa_free_exception +000CBEBC: mov rax, r12 +000CBEBF: mov rdi, rax; struct _Unwind_Exception * +000CBEC2: call __Unwind_Resume +000CBEC7: mov r12, rax +000CBECA: lea rax, [rbp+var_20] +000CBECE: mov rdi, rax; this +000CBED1: call __ZNSsD1Ev; std::string::~string() +000CBED6: jmp short loc_CBEDB +000CBED8: mov r12, rax +000CBEDB: mov rdi, rbx; void * +000CBEDE: call ___cxa_free_exception +000CBEE3: mov rbx, r12 +000CBEE6: jmp short loc_CBEEB +000CBEE8: mov rbx, rax +000CBEEB: lea rax, [rbp+var_1A0] +000CBEF2: mov rdi, rax +000CBEF5: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CBEFA: mov rax, rbx +000CBEFD: mov rdi, rax; struct _Unwind_Exception * +000CBF00: call __Unwind_Resume +000CBF05: add rsp, 1A0h +000CBF0C: pop rbx +000CBF0D: pop r12 +000CBF0F: pop rbp +000CBF10: retn + +### FUNC 000CBF12 - 000CC0E7 (469 bytes) name=_ZN6serial6Serial10SerialImpl5getCDEv +000CBF12: push rbp +000CBF13: mov rbp, rsp +000CBF16: push r12 +000CBF18: push rbx +000CBF19: sub rsp, 1A0h +000CBF20: mov [rbp+var_1A8], rdi +000CBF27: mov rax, [rbp+var_1A8] +000CBF2E: movzx eax, byte ptr [rax+14h] +000CBF32: xor eax, 1 +000CBF35: test al, al +000CBF37: jz short loc_CBF71 +000CBF39: mov edi, 10h; thrown_size +000CBF3E: call ___cxa_allocate_exception +000CBF43: mov rbx, rax +000CBF46: lea rsi, aSerialGetcd; "Serial::getCD" +000CBF4D: mov rdi, rbx; this +000CBF50: call __ZN6serial22PortNotOpenedExceptionC2EPKc; serial::PortNotOpenedException::PortNotOpenedException(char const*) +000CBF55: mov rax, cs:_ZN6serial22PortNotOpenedExceptionD2Ev_ptr +000CBF5C: mov rdx, rax; void (__fastcall *)(void *) +000CBF5F: mov rax, cs:_ZTIN6serial22PortNotOpenedExceptionE_ptr +000CBF66: mov rsi, rax; lptinfo +000CBF69: mov rdi, rbx; void * +000CBF6C: call ___cxa_throw +000CBF71: mov rax, [rbp+var_1A8] +000CBF78: mov eax, [rax+10h] +000CBF7B: lea rdx, [rbp+var_24] +000CBF7F: mov esi, 5415h; request +000CBF84: mov edi, eax; fd +000CBF86: mov eax, 0 +000CBF8B: call _ioctl +000CBF90: cmp eax, 0FFFFFFFFh +000CBF93: setz al +000CBF96: test al, al +000CBF98: jz loc_CC07A +000CBF9E: mov esi, 8 +000CBFA3: mov edi, 10h +000CBFA8: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CBFAD: mov edx, eax +000CBFAF: lea rax, [rbp+var_1A0] +000CBFB6: mov esi, edx +000CBFB8: mov rdi, rax +000CBFBB: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CBFC0: call ___errno_location +000CBFC5: mov eax, [rax] +000CBFC7: mov edi, eax; errnum +000CBFC9: call _strerror +000CBFCE: mov rbx, rax +000CBFD1: call ___errno_location +000CBFD6: mov r12d, [rax] +000CBFD9: lea rax, [rbp+var_1A0] +000CBFE0: add rax, 10h +000CBFE4: lea rsi, aGetcdFailedOnA; "getCD failed on a call to ioctl(TIOCMGE"... +000CBFEB: mov rdi, rax +000CBFEE: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CBFF3: mov esi, r12d +000CBFF6: mov rdi, rax +000CBFF9: call __ZNSolsEi; std::ostream::operator<<(int) +000CBFFE: lea rsi, asc_D4C5F; " " +000CC005: mov rdi, rax +000CC008: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC00D: mov rsi, rbx +000CC010: mov rdi, rax +000CC013: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC018: mov edi, 10h; thrown_size +000CC01D: call ___cxa_allocate_exception +000CC022: mov rbx, rax +000CC025: lea rax, [rbp+var_20] +000CC029: lea rdx, [rbp+var_1A0] +000CC030: mov rsi, rdx +000CC033: mov rdi, rax +000CC036: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CC03B: lea rax, [rbp+var_20] +000CC03F: mov rdi, rax; this +000CC042: call __ZNKSs5c_strEv; std::string::c_str(void) +000CC047: mov rsi, rax; char * +000CC04A: mov rdi, rbx; this +000CC04D: call __ZN6serial15SerialExceptionC2EPKc; serial::SerialException::SerialException(char const*) +000CC052: lea rax, [rbp+var_20] +000CC056: mov rdi, rax; this +000CC059: call __ZNSsD1Ev; std::string::~string() +000CC05E: mov rax, cs:_ZN6serial15SerialExceptionD2Ev_ptr +000CC065: mov rdx, rax; void (__fastcall *)(void *) +000CC068: mov rax, cs:_ZTIN6serial15SerialExceptionE_ptr +000CC06F: mov rsi, rax; lptinfo +000CC072: mov rdi, rbx; void * +000CC075: call ___cxa_throw +000CC07A: mov eax, [rbp+var_24] +000CC07D: and eax, 40h +000CC080: test eax, eax +000CC082: setnz al +000CC085: jmp short loc_CC0DB +000CC087: mov r12, rax +000CC08A: mov rdi, rbx; void * +000CC08D: call ___cxa_free_exception +000CC092: mov rax, r12 +000CC095: mov rdi, rax; struct _Unwind_Exception * +000CC098: call __Unwind_Resume +000CC09D: mov r12, rax +000CC0A0: lea rax, [rbp+var_20] +000CC0A4: mov rdi, rax; this +000CC0A7: call __ZNSsD1Ev; std::string::~string() +000CC0AC: jmp short loc_CC0B1 +000CC0AE: mov r12, rax +000CC0B1: mov rdi, rbx; void * +000CC0B4: call ___cxa_free_exception +000CC0B9: mov rbx, r12 +000CC0BC: jmp short loc_CC0C1 +000CC0BE: mov rbx, rax +000CC0C1: lea rax, [rbp+var_1A0] +000CC0C8: mov rdi, rax +000CC0CB: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CC0D0: mov rax, rbx +000CC0D3: mov rdi, rax; struct _Unwind_Exception * +000CC0D6: call __Unwind_Resume +000CC0DB: add rsp, 1A0h +000CC0E2: pop rbx +000CC0E3: pop r12 +000CC0E5: pop rbp +000CC0E6: retn + +### FUNC 000CC0E8 - 000CC1CD (229 bytes) name=_ZN6serial6Serial10SerialImpl8readLockEv +000CC0E8: push rbp +000CC0E9: mov rbp, rsp +000CC0EC: push r12 +000CC0EE: push rbx +000CC0EF: sub rsp, 20h +000CC0F3: mov [rbp+var_28], rdi +000CC0F7: mov rax, [rbp+var_28] +000CC0FB: add rax, 50h ; 'P' +000CC0FF: mov rdi, rax; mutex +000CC102: call _pthread_mutex_lock +000CC107: mov [rbp+var_14], eax +000CC10A: cmp [rbp+var_14], 0 +000CC10E: jz loc_CC1C4 +000CC114: mov edi, 28h ; '('; thrown_size +000CC119: call ___cxa_allocate_exception +000CC11E: mov rbx, rax +000CC121: lea rax, [rbp+var_15] +000CC125: mov rdi, rax +000CC128: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CC12D: lea rdx, [rbp+var_15] +000CC131: lea rax, [rbp+var_20] +000CC135: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CC13C: mov rdi, rax +000CC13F: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CC144: mov edx, [rbp+var_14] +000CC147: lea rax, [rbp+var_20] +000CC14B: mov ecx, edx +000CC14D: mov edx, 40Bh +000CC152: mov rsi, rax +000CC155: mov rdi, rbx +000CC158: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000CC15D: lea rax, [rbp+var_20] +000CC161: mov rdi, rax; this +000CC164: call __ZNSsD1Ev; std::string::~string() +000CC169: lea rax, [rbp+var_15] +000CC16D: mov rdi, rax +000CC170: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC175: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CC17C: mov rdx, rax; void (__fastcall *)(void *) +000CC17F: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CC186: mov rsi, rax; lptinfo +000CC189: mov rdi, rbx; void * +000CC18C: call ___cxa_throw +000CC191: mov r12, rax +000CC194: lea rax, [rbp+var_20] +000CC198: mov rdi, rax; this +000CC19B: call __ZNSsD1Ev; std::string::~string() +000CC1A0: jmp short loc_CC1A5 +000CC1A2: mov r12, rax +000CC1A5: lea rax, [rbp+var_15] +000CC1A9: mov rdi, rax +000CC1AC: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC1B1: mov rdi, rbx; void * +000CC1B4: call ___cxa_free_exception +000CC1B9: mov rax, r12 +000CC1BC: mov rdi, rax; struct _Unwind_Exception * +000CC1BF: call __Unwind_Resume +000CC1C4: add rsp, 20h +000CC1C8: pop rbx +000CC1C9: pop r12 +000CC1CB: pop rbp +000CC1CC: retn + +### FUNC 000CC1CE - 000CC2B3 (229 bytes) name=_ZN6serial6Serial10SerialImpl10readUnlockEv +000CC1CE: push rbp +000CC1CF: mov rbp, rsp +000CC1D2: push r12 +000CC1D4: push rbx +000CC1D5: sub rsp, 20h +000CC1D9: mov [rbp+var_28], rdi +000CC1DD: mov rax, [rbp+var_28] +000CC1E1: add rax, 50h ; 'P' +000CC1E5: mov rdi, rax; mutex +000CC1E8: call _pthread_mutex_unlock +000CC1ED: mov [rbp+var_14], eax +000CC1F0: cmp [rbp+var_14], 0 +000CC1F4: jz loc_CC2AA +000CC1FA: mov edi, 28h ; '('; thrown_size +000CC1FF: call ___cxa_allocate_exception +000CC204: mov rbx, rax +000CC207: lea rax, [rbp+var_15] +000CC20B: mov rdi, rax +000CC20E: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CC213: lea rdx, [rbp+var_15] +000CC217: lea rax, [rbp+var_20] +000CC21B: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CC222: mov rdi, rax +000CC225: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CC22A: mov edx, [rbp+var_14] +000CC22D: lea rax, [rbp+var_20] +000CC231: mov ecx, edx +000CC233: mov edx, 414h +000CC238: mov rsi, rax +000CC23B: mov rdi, rbx +000CC23E: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000CC243: lea rax, [rbp+var_20] +000CC247: mov rdi, rax; this +000CC24A: call __ZNSsD1Ev; std::string::~string() +000CC24F: lea rax, [rbp+var_15] +000CC253: mov rdi, rax +000CC256: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC25B: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CC262: mov rdx, rax; void (__fastcall *)(void *) +000CC265: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CC26C: mov rsi, rax; lptinfo +000CC26F: mov rdi, rbx; void * +000CC272: call ___cxa_throw +000CC277: mov r12, rax +000CC27A: lea rax, [rbp+var_20] +000CC27E: mov rdi, rax; this +000CC281: call __ZNSsD1Ev; std::string::~string() +000CC286: jmp short loc_CC28B +000CC288: mov r12, rax +000CC28B: lea rax, [rbp+var_15] +000CC28F: mov rdi, rax +000CC292: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC297: mov rdi, rbx; void * +000CC29A: call ___cxa_free_exception +000CC29F: mov rax, r12 +000CC2A2: mov rdi, rax; struct _Unwind_Exception * +000CC2A5: call __Unwind_Resume +000CC2AA: add rsp, 20h +000CC2AE: pop rbx +000CC2AF: pop r12 +000CC2B1: pop rbp +000CC2B2: retn + +### FUNC 000CC2B4 - 000CC399 (229 bytes) name=_ZN6serial6Serial10SerialImpl9writeLockEv +000CC2B4: push rbp +000CC2B5: mov rbp, rsp +000CC2B8: push r12 +000CC2BA: push rbx +000CC2BB: sub rsp, 20h +000CC2BF: mov [rbp+var_28], rdi +000CC2C3: mov rax, [rbp+var_28] +000CC2C7: add rax, 78h ; 'x' +000CC2CB: mov rdi, rax; mutex +000CC2CE: call _pthread_mutex_lock +000CC2D3: mov [rbp+var_14], eax +000CC2D6: cmp [rbp+var_14], 0 +000CC2DA: jz loc_CC390 +000CC2E0: mov edi, 28h ; '('; thrown_size +000CC2E5: call ___cxa_allocate_exception +000CC2EA: mov rbx, rax +000CC2ED: lea rax, [rbp+var_15] +000CC2F1: mov rdi, rax +000CC2F4: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CC2F9: lea rdx, [rbp+var_15] +000CC2FD: lea rax, [rbp+var_20] +000CC301: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CC308: mov rdi, rax +000CC30B: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CC310: mov edx, [rbp+var_14] +000CC313: lea rax, [rbp+var_20] +000CC317: mov ecx, edx +000CC319: mov edx, 41Dh +000CC31E: mov rsi, rax +000CC321: mov rdi, rbx +000CC324: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000CC329: lea rax, [rbp+var_20] +000CC32D: mov rdi, rax; this +000CC330: call __ZNSsD1Ev; std::string::~string() +000CC335: lea rax, [rbp+var_15] +000CC339: mov rdi, rax +000CC33C: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC341: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CC348: mov rdx, rax; void (__fastcall *)(void *) +000CC34B: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CC352: mov rsi, rax; lptinfo +000CC355: mov rdi, rbx; void * +000CC358: call ___cxa_throw +000CC35D: mov r12, rax +000CC360: lea rax, [rbp+var_20] +000CC364: mov rdi, rax; this +000CC367: call __ZNSsD1Ev; std::string::~string() +000CC36C: jmp short loc_CC371 +000CC36E: mov r12, rax +000CC371: lea rax, [rbp+var_15] +000CC375: mov rdi, rax +000CC378: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC37D: mov rdi, rbx; void * +000CC380: call ___cxa_free_exception +000CC385: mov rax, r12 +000CC388: mov rdi, rax; struct _Unwind_Exception * +000CC38B: call __Unwind_Resume +000CC390: add rsp, 20h +000CC394: pop rbx +000CC395: pop r12 +000CC397: pop rbp +000CC398: retn + +### FUNC 000CC39A - 000CC47F (229 bytes) name=_ZN6serial6Serial10SerialImpl11writeUnlockEv +000CC39A: push rbp +000CC39B: mov rbp, rsp +000CC39E: push r12 +000CC3A0: push rbx +000CC3A1: sub rsp, 20h +000CC3A5: mov [rbp+var_28], rdi +000CC3A9: mov rax, [rbp+var_28] +000CC3AD: add rax, 78h ; 'x' +000CC3B1: mov rdi, rax; mutex +000CC3B4: call _pthread_mutex_unlock +000CC3B9: mov [rbp+var_14], eax +000CC3BC: cmp [rbp+var_14], 0 +000CC3C0: jz loc_CC476 +000CC3C6: mov edi, 28h ; '('; thrown_size +000CC3CB: call ___cxa_allocate_exception +000CC3D0: mov rbx, rax +000CC3D3: lea rax, [rbp+var_15] +000CC3D7: mov rdi, rax +000CC3DA: call __ZNSaIcEC1Ev; std::allocator::allocator(void) +000CC3DF: lea rdx, [rbp+var_15] +000CC3E3: lea rax, [rbp+var_20] +000CC3E7: lea rsi, aHomeDerekDocum_0; "/home/derek/Documents/proj/EloThermal-w"... +000CC3EE: mov rdi, rax +000CC3F1: call __ZNSsC1EPKcRKSaIcE; std::string::string(char const*,std::allocator const&) +000CC3F6: mov edx, [rbp+var_14] +000CC3F9: lea rax, [rbp+var_20] +000CC3FD: mov ecx, edx +000CC3FF: mov edx, 426h +000CC404: mov rsi, rax +000CC407: mov rdi, rbx +000CC40A: call __ZN6serial11IOExceptionC2ESsii; serial::IOException::IOException(std::string,int,int) +000CC40F: lea rax, [rbp+var_20] +000CC413: mov rdi, rax; this +000CC416: call __ZNSsD1Ev; std::string::~string() +000CC41B: lea rax, [rbp+var_15] +000CC41F: mov rdi, rax +000CC422: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC427: mov rax, cs:_ZN6serial11IOExceptionD2Ev_ptr +000CC42E: mov rdx, rax; void (__fastcall *)(void *) +000CC431: mov rax, cs:_ZTIN6serial11IOExceptionE_ptr +000CC438: mov rsi, rax; lptinfo +000CC43B: mov rdi, rbx; void * +000CC43E: call ___cxa_throw +000CC443: mov r12, rax +000CC446: lea rax, [rbp+var_20] +000CC44A: mov rdi, rax; this +000CC44D: call __ZNSsD1Ev; std::string::~string() +000CC452: jmp short loc_CC457 +000CC454: mov r12, rax +000CC457: lea rax, [rbp+var_15] +000CC45B: mov rdi, rax +000CC45E: call __ZNSaIcED1Ev; std::allocator::~allocator() +000CC463: mov rdi, rbx; void * +000CC466: call ___cxa_free_exception +000CC46B: mov rax, r12 +000CC46E: mov rdi, rax; struct _Unwind_Exception * +000CC471: call __Unwind_Resume +000CC476: add rsp, 20h +000CC47A: pop rbx +000CC47B: pop r12 +000CC47D: pop rbp +000CC47E: retn + +### FUNC 000CC47F - 000CC493 (20 bytes) name=_ZStorSt13_Ios_OpenmodeS_ +000CC47F: push rbp +000CC480: mov rbp, rsp +000CC483: mov [rbp+var_4], edi +000CC486: mov [rbp+var_8], esi +000CC489: mov edx, [rbp+var_4] +000CC48C: mov eax, [rbp+var_8] +000CC48F: or eax, edx +000CC491: pop rbp +000CC492: retn + +### FUNC 000CC493 - 000CC49E (11 bytes) name=_ZNSt14numeric_limitsIjE3maxEv +000CC493: push rbp +000CC494: mov rbp, rsp +000CC497: mov eax, 0FFFFFFFFh +000CC49C: pop rbp +000CC49D: retn + +### FUNC 000CC49E - 000CC4A9 (11 bytes) name=_ZN6serial7Timeout3maxEv +000CC49E: push rbp +000CC49F: mov rbp, rsp +000CC4A2: call __ZNSt14numeric_limitsIjE3maxEv; std::numeric_limits::max(void) +000CC4A7: pop rbp +000CC4A8: retn + +### FUNC 000CC4AA - 000CC609 (351 bytes) name=_ZN6serial15SerialExceptionC2EPKc +000CC4AA: push rbp; Alternative name is 'serial::SerialException::SerialException(char const*)' +000CC4AB: mov rbp, rsp +000CC4AE: push rbx +000CC4AF: sub rsp, 198h +000CC4B6: mov [rbp+var_198], rdi +000CC4BD: mov [rbp+var_1A0], rsi +000CC4C4: mov rax, [rbp+var_198] +000CC4CB: mov rdi, rax; this +000CC4CE: call __ZNSt9exceptionC2Ev; std::exception::exception(void) +000CC4D3: mov rax, [rbp+var_198] +000CC4DA: mov rdx, cs:_ZTVN6serial15SerialExceptionE_ptr +000CC4E1: lea rdx, [rdx+10h] +000CC4E5: mov [rax], rdx +000CC4E8: mov rax, [rbp+var_198] +000CC4EF: add rax, 8 +000CC4F3: mov rdi, rax; this +000CC4F6: call __ZNSsC1Ev; std::string::string(void) +000CC4FB: mov esi, 8 +000CC500: mov edi, 10h +000CC505: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CC50A: mov edx, eax +000CC50C: lea rax, [rbp+var_190] +000CC513: mov esi, edx +000CC515: mov rdi, rax +000CC518: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CC51D: lea rax, [rbp+var_190] +000CC524: add rax, 10h +000CC528: lea rsi, aSerialexceptio; "SerialException " +000CC52F: mov rdi, rax +000CC532: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC537: mov rdx, [rbp+var_1A0] +000CC53E: mov rsi, rdx +000CC541: mov rdi, rax +000CC544: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC549: lea rsi, aFailed; " failed." +000CC550: mov rdi, rax +000CC553: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC558: lea rax, [rbp+var_20] +000CC55C: lea rdx, [rbp+var_190] +000CC563: mov rsi, rdx +000CC566: mov rdi, rax +000CC569: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CC56E: mov rax, [rbp+var_198] +000CC575: lea rdx, [rax+8] +000CC579: lea rax, [rbp+var_20] +000CC57D: mov rsi, rax +000CC580: mov rdi, rdx +000CC583: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000CC588: lea rax, [rbp+var_20] +000CC58C: mov rdi, rax; this +000CC58F: call __ZNSsD1Ev; std::string::~string() +000CC594: lea rax, [rbp+var_190] +000CC59B: mov rdi, rax +000CC59E: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CC5A3: jmp short loc_CC5FF +000CC5A5: mov rbx, rax +000CC5A8: lea rax, [rbp+var_20] +000CC5AC: mov rdi, rax; this +000CC5AF: call __ZNSsD1Ev; std::string::~string() +000CC5B4: jmp short loc_CC5B9 +000CC5B6: mov rbx, rax +000CC5B9: lea rax, [rbp+var_190] +000CC5C0: mov rdi, rax +000CC5C3: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CC5C8: jmp short loc_CC5CD +000CC5CA: mov rbx, rax +000CC5CD: mov rax, [rbp+var_198] +000CC5D4: add rax, 8 +000CC5D8: mov rdi, rax; this +000CC5DB: call __ZNSsD1Ev; std::string::~string() +000CC5E0: jmp short loc_CC5E5 +000CC5E2: mov rbx, rax +000CC5E5: mov rax, [rbp+var_198] +000CC5EC: mov rdi, rax; this +000CC5EF: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CC5F4: mov rax, rbx +000CC5F7: mov rdi, rax; struct _Unwind_Exception * +000CC5FA: call __Unwind_Resume +000CC5FF: add rsp, 198h +000CC606: pop rbx +000CC607: pop rbp +000CC608: retn + +### FUNC 000CC60A - 000CC65B (81 bytes) name=_ZN6serial15SerialExceptionD2Ev +000CC60A: push rbp; Alternative name is 'serial::SerialException::~SerialException()' +000CC60B: mov rbp, rsp +000CC60E: sub rsp, 10h +000CC612: mov [rbp+var_8], rdi +000CC616: mov rax, [rbp+var_8] +000CC61A: mov rdx, cs:_ZTVN6serial15SerialExceptionE_ptr +000CC621: lea rdx, [rdx+10h] +000CC625: mov [rax], rdx +000CC628: mov rax, [rbp+var_8] +000CC62C: add rax, 8 +000CC630: mov rdi, rax; this +000CC633: call __ZNSsD1Ev; std::string::~string() +000CC638: mov rax, [rbp+var_8] +000CC63C: mov rdi, rax; this +000CC63F: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CC644: mov eax, 0 +000CC649: test eax, eax +000CC64B: jz short locret_CC659 +000CC64D: mov rax, [rbp+var_8] +000CC651: mov rdi, rax; void * +000CC654: call __ZdlPv; operator delete(void *) +000CC659: leave +000CC65A: retn + +### FUNC 000CC65C - 000CC682 (38 bytes) name=_ZN6serial15SerialExceptionD0Ev +000CC65C: push rbp +000CC65D: mov rbp, rsp +000CC660: sub rsp, 10h +000CC664: mov [rbp+var_8], rdi +000CC668: mov rax, [rbp+var_8] +000CC66C: mov rdi, rax; this +000CC66F: call __ZN6serial15SerialExceptionD2Ev; serial::SerialException::~SerialException() +000CC674: mov rax, [rbp+var_8] +000CC678: mov rdi, rax; void * +000CC67B: call __ZdlPv; operator delete(void *) +000CC680: leave +000CC681: retn + +### FUNC 000CC682 - 000CC6A0 (30 bytes) name=_ZNK6serial15SerialException4whatEv +000CC682: push rbp +000CC683: mov rbp, rsp +000CC686: sub rsp, 10h +000CC68A: mov [rbp+var_8], rdi +000CC68E: mov rax, [rbp+var_8] +000CC692: add rax, 8 +000CC696: mov rdi, rax; this +000CC699: call __ZNKSs5c_strEv; std::string::c_str(void) +000CC69E: leave +000CC69F: retn + +### FUNC 000CC6A0 - 000CC8E8 (584 bytes) name=_ZN6serial11IOExceptionC2ESsii +000CC6A0: push rbp; Alternative name is 'serial::IOException::IOException(std::string, int, int)' +000CC6A1: mov rbp, rsp +000CC6A4: push r12 +000CC6A6: push rbx +000CC6A7: sub rsp, 1A0h +000CC6AE: mov [rbp+var_198], rdi +000CC6B5: mov [rbp+var_1A0], rsi +000CC6BC: mov [rbp+var_1A4], edx +000CC6C2: mov [rbp+errnum], ecx +000CC6C8: mov rax, [rbp+var_198] +000CC6CF: mov rdi, rax; this +000CC6D2: call __ZNSt9exceptionC2Ev; std::exception::exception(void) +000CC6D7: mov rax, [rbp+var_198] +000CC6DE: mov rdx, cs:_ZTVN6serial11IOExceptionE_ptr +000CC6E5: lea rdx, [rdx+10h] +000CC6E9: mov [rax], rdx +000CC6EC: mov rax, [rbp+var_198] +000CC6F3: lea rdx, [rax+8] +000CC6F7: mov rax, [rbp+var_1A0] +000CC6FE: mov rsi, rax; std::string * +000CC701: mov rdi, rdx; this +000CC704: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000CC709: mov rax, [rbp+var_198] +000CC710: mov edx, [rbp+var_1A4] +000CC716: mov [rax+10h], edx +000CC719: mov rax, [rbp+var_198] +000CC720: add rax, 18h +000CC724: mov rdi, rax; this +000CC727: call __ZNSsC1Ev; std::string::string(void) +000CC72C: mov rax, [rbp+var_198] +000CC733: mov edx, [rbp+errnum] +000CC739: mov [rax+20h], edx +000CC73C: mov esi, 8 +000CC741: mov edi, 10h +000CC746: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CC74B: mov edx, eax +000CC74D: lea rax, [rbp+var_190] +000CC754: mov esi, edx +000CC756: mov rdi, rax +000CC759: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CC75E: mov eax, [rbp+errnum] +000CC764: mov edi, eax; errnum +000CC766: call _strerror +000CC76B: mov [rbp+var_18], rax +000CC76F: mov rax, [rbp+var_198] +000CC776: mov ebx, [rax+20h] +000CC779: lea rax, [rbp+var_190] +000CC780: add rax, 10h +000CC784: lea rsi, aIoException; "IO Exception (" +000CC78B: mov rdi, rax +000CC78E: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC793: mov esi, ebx +000CC795: mov rdi, rax +000CC798: call __ZNSolsEi; std::ostream::operator<<(int) +000CC79D: lea rsi, asc_D4862; "): " +000CC7A4: mov rdi, rax +000CC7A7: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC7AC: mov rdx, [rbp+var_18] +000CC7B0: mov rsi, rdx +000CC7B3: mov rdi, rax +000CC7B6: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC7BB: mov rax, [rbp+var_198] +000CC7C2: mov ebx, [rax+10h] +000CC7C5: mov rax, [rbp+var_198] +000CC7CC: lea r12, [rax+8] +000CC7D0: lea rax, [rbp+var_190] +000CC7D7: add rax, 10h +000CC7DB: lea rsi, aFile; ", file " +000CC7E2: mov rdi, rax +000CC7E5: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC7EA: mov rsi, r12 +000CC7ED: mov rdi, rax +000CC7F0: call __ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E; std::operator<<,std::allocator>(std::basic_ostream> &,std::basic_string,std::allocator> const&) +000CC7F5: lea rsi, aLine; ", line " +000CC7FC: mov rdi, rax +000CC7FF: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC804: mov esi, ebx +000CC806: mov rdi, rax +000CC809: call __ZNSolsEi; std::ostream::operator<<(int) +000CC80E: lea rsi, asc_D4876; "." +000CC815: mov rdi, rax +000CC818: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC81D: lea rax, [rbp+var_20] +000CC821: lea rdx, [rbp+var_190] +000CC828: mov rsi, rdx +000CC82B: mov rdi, rax +000CC82E: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CC833: mov rax, [rbp+var_198] +000CC83A: lea rdx, [rax+18h] +000CC83E: lea rax, [rbp+var_20] +000CC842: mov rsi, rax +000CC845: mov rdi, rdx +000CC848: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000CC84D: lea rax, [rbp+var_20] +000CC851: mov rdi, rax; this +000CC854: call __ZNSsD1Ev; std::string::~string() +000CC859: lea rax, [rbp+var_190] +000CC860: mov rdi, rax +000CC863: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CC868: jmp short loc_CC8DC +000CC86A: mov rbx, rax +000CC86D: lea rax, [rbp+var_20] +000CC871: mov rdi, rax; this +000CC874: call __ZNSsD1Ev; std::string::~string() +000CC879: jmp short loc_CC87E +000CC87B: mov rbx, rax +000CC87E: lea rax, [rbp+var_190] +000CC885: mov rdi, rax +000CC888: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CC88D: jmp short loc_CC892 +000CC88F: mov rbx, rax +000CC892: mov rax, [rbp+var_198] +000CC899: add rax, 18h +000CC89D: mov rdi, rax; this +000CC8A0: call __ZNSsD1Ev; std::string::~string() +000CC8A5: jmp short loc_CC8AA +000CC8A7: mov rbx, rax +000CC8AA: mov rax, [rbp+var_198] +000CC8B1: add rax, 8 +000CC8B5: mov rdi, rax; this +000CC8B8: call __ZNSsD1Ev; std::string::~string() +000CC8BD: jmp short loc_CC8C2 +000CC8BF: mov rbx, rax +000CC8C2: mov rax, [rbp+var_198] +000CC8C9: mov rdi, rax; this +000CC8CC: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CC8D1: mov rax, rbx +000CC8D4: mov rdi, rax; struct _Unwind_Exception * +000CC8D7: call __Unwind_Resume +000CC8DC: add rsp, 1A0h +000CC8E3: pop rbx +000CC8E4: pop r12 +000CC8E6: pop rbp +000CC8E7: retn + +### FUNC 000CC8E8 - 000CCAFE (534 bytes) name=_ZN6serial11IOExceptionC2ESsiPKc +000CC8E8: push rbp; Alternative name is 'serial::IOException::IOException(std::string, int, char const*)' +000CC8E9: mov rbp, rsp +000CC8EC: push r12 +000CC8EE: push rbx +000CC8EF: sub rsp, 1A0h +000CC8F6: mov [rbp+var_198], rdi +000CC8FD: mov [rbp+var_1A0], rsi +000CC904: mov [rbp+var_1A4], edx +000CC90A: mov [rbp+var_1B0], rcx +000CC911: mov rax, [rbp+var_198] +000CC918: mov rdi, rax; this +000CC91B: call __ZNSt9exceptionC2Ev; std::exception::exception(void) +000CC920: mov rax, [rbp+var_198] +000CC927: mov rdx, cs:_ZTVN6serial11IOExceptionE_ptr +000CC92E: lea rdx, [rdx+10h] +000CC932: mov [rax], rdx +000CC935: mov rax, [rbp+var_198] +000CC93C: lea rdx, [rax+8] +000CC940: mov rax, [rbp+var_1A0] +000CC947: mov rsi, rax; std::string * +000CC94A: mov rdi, rdx; this +000CC94D: call __ZNSsC1ERKSs; std::string::string(std::string const&) +000CC952: mov rax, [rbp+var_198] +000CC959: mov edx, [rbp+var_1A4] +000CC95F: mov [rax+10h], edx +000CC962: mov rax, [rbp+var_198] +000CC969: add rax, 18h +000CC96D: mov rdi, rax; this +000CC970: call __ZNSsC1Ev; std::string::string(void) +000CC975: mov rax, [rbp+var_198] +000CC97C: mov dword ptr [rax+20h], 0 +000CC983: mov esi, 8 +000CC988: mov edi, 10h +000CC98D: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CC992: mov edx, eax +000CC994: lea rax, [rbp+var_190] +000CC99B: mov esi, edx +000CC99D: mov rdi, rax +000CC9A0: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CC9A5: lea rax, [rbp+var_190] +000CC9AC: add rax, 10h +000CC9B0: lea rsi, aIoException_0; "IO Exception: " +000CC9B7: mov rdi, rax +000CC9BA: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC9BF: mov rdx, [rbp+var_1B0] +000CC9C6: mov rsi, rdx +000CC9C9: mov rdi, rax +000CC9CC: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CC9D1: mov rax, [rbp+var_198] +000CC9D8: mov ebx, [rax+10h] +000CC9DB: mov rax, [rbp+var_198] +000CC9E2: lea r12, [rax+8] +000CC9E6: lea rax, [rbp+var_190] +000CC9ED: add rax, 10h +000CC9F1: lea rsi, aFile; ", file " +000CC9F8: mov rdi, rax +000CC9FB: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CCA00: mov rsi, r12 +000CCA03: mov rdi, rax +000CCA06: call __ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E; std::operator<<,std::allocator>(std::basic_ostream> &,std::basic_string,std::allocator> const&) +000CCA0B: lea rsi, aLine; ", line " +000CCA12: mov rdi, rax +000CCA15: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CCA1A: mov esi, ebx +000CCA1C: mov rdi, rax +000CCA1F: call __ZNSolsEi; std::ostream::operator<<(int) +000CCA24: lea rsi, asc_D4876; "." +000CCA2B: mov rdi, rax +000CCA2E: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CCA33: lea rax, [rbp+var_20] +000CCA37: lea rdx, [rbp+var_190] +000CCA3E: mov rsi, rdx +000CCA41: mov rdi, rax +000CCA44: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CCA49: mov rax, [rbp+var_198] +000CCA50: lea rdx, [rax+18h] +000CCA54: lea rax, [rbp+var_20] +000CCA58: mov rsi, rax +000CCA5B: mov rdi, rdx +000CCA5E: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000CCA63: lea rax, [rbp+var_20] +000CCA67: mov rdi, rax; this +000CCA6A: call __ZNSsD1Ev; std::string::~string() +000CCA6F: lea rax, [rbp+var_190] +000CCA76: mov rdi, rax +000CCA79: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CCA7E: jmp short loc_CCAF2 +000CCA80: mov rbx, rax +000CCA83: lea rax, [rbp+var_20] +000CCA87: mov rdi, rax; this +000CCA8A: call __ZNSsD1Ev; std::string::~string() +000CCA8F: jmp short loc_CCA94 +000CCA91: mov rbx, rax +000CCA94: lea rax, [rbp+var_190] +000CCA9B: mov rdi, rax +000CCA9E: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CCAA3: jmp short loc_CCAA8 +000CCAA5: mov rbx, rax +000CCAA8: mov rax, [rbp+var_198] +000CCAAF: add rax, 18h +000CCAB3: mov rdi, rax; this +000CCAB6: call __ZNSsD1Ev; std::string::~string() +000CCABB: jmp short loc_CCAC0 +000CCABD: mov rbx, rax +000CCAC0: mov rax, [rbp+var_198] +000CCAC7: add rax, 8 +000CCACB: mov rdi, rax; this +000CCACE: call __ZNSsD1Ev; std::string::~string() +000CCAD3: jmp short loc_CCAD8 +000CCAD5: mov rbx, rax +000CCAD8: mov rax, [rbp+var_198] +000CCADF: mov rdi, rax; this +000CCAE2: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CCAE7: mov rax, rbx +000CCAEA: mov rdi, rax; struct _Unwind_Exception * +000CCAED: call __Unwind_Resume +000CCAF2: add rsp, 1A0h +000CCAF9: pop rbx +000CCAFA: pop r12 +000CCAFC: pop rbp +000CCAFD: retn + +### FUNC 000CCAFE - 000CCB5F (97 bytes) name=_ZN6serial11IOExceptionD2Ev +000CCAFE: push rbp; Alternative name is 'serial::IOException::~IOException()' +000CCAFF: mov rbp, rsp +000CCB02: sub rsp, 10h +000CCB06: mov [rbp+var_8], rdi +000CCB0A: mov rax, [rbp+var_8] +000CCB0E: mov rdx, cs:_ZTVN6serial11IOExceptionE_ptr +000CCB15: lea rdx, [rdx+10h] +000CCB19: mov [rax], rdx +000CCB1C: mov rax, [rbp+var_8] +000CCB20: add rax, 18h +000CCB24: mov rdi, rax; this +000CCB27: call __ZNSsD1Ev; std::string::~string() +000CCB2C: mov rax, [rbp+var_8] +000CCB30: add rax, 8 +000CCB34: mov rdi, rax; this +000CCB37: call __ZNSsD1Ev; std::string::~string() +000CCB3C: mov rax, [rbp+var_8] +000CCB40: mov rdi, rax; this +000CCB43: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CCB48: mov eax, 0 +000CCB4D: test eax, eax +000CCB4F: jz short locret_CCB5D +000CCB51: mov rax, [rbp+var_8] +000CCB55: mov rdi, rax; void * +000CCB58: call __ZdlPv; operator delete(void *) +000CCB5D: leave +000CCB5E: retn + +### FUNC 000CCB60 - 000CCB86 (38 bytes) name=_ZN6serial11IOExceptionD0Ev +000CCB60: push rbp +000CCB61: mov rbp, rsp +000CCB64: sub rsp, 10h +000CCB68: mov [rbp+var_8], rdi +000CCB6C: mov rax, [rbp+var_8] +000CCB70: mov rdi, rax; this +000CCB73: call __ZN6serial11IOExceptionD2Ev; serial::IOException::~IOException() +000CCB78: mov rax, [rbp+var_8] +000CCB7C: mov rdi, rax; void * +000CCB7F: call __ZdlPv; operator delete(void *) +000CCB84: leave +000CCB85: retn + +### FUNC 000CCB86 - 000CCBA4 (30 bytes) name=_ZNK6serial11IOException4whatEv +000CCB86: push rbp +000CCB87: mov rbp, rsp +000CCB8A: sub rsp, 10h +000CCB8E: mov [rbp+var_8], rdi +000CCB92: mov rax, [rbp+var_8] +000CCB96: add rax, 18h +000CCB9A: mov rdi, rax; this +000CCB9D: call __ZNKSs5c_strEv; std::string::c_str(void) +000CCBA2: leave +000CCBA3: retn + +### FUNC 000CCBA4 - 000CCD03 (351 bytes) name=_ZN6serial22PortNotOpenedExceptionC2EPKc +000CCBA4: push rbp; Alternative name is 'serial::PortNotOpenedException::PortNotOpenedException(char const*)' +000CCBA5: mov rbp, rsp +000CCBA8: push rbx +000CCBA9: sub rsp, 198h +000CCBB0: mov [rbp+var_198], rdi +000CCBB7: mov [rbp+var_1A0], rsi +000CCBBE: mov rax, [rbp+var_198] +000CCBC5: mov rdi, rax; this +000CCBC8: call __ZNSt9exceptionC2Ev; std::exception::exception(void) +000CCBCD: mov rax, [rbp+var_198] +000CCBD4: mov rdx, cs:_ZTVN6serial22PortNotOpenedExceptionE_ptr +000CCBDB: lea rdx, [rdx+10h] +000CCBDF: mov [rax], rdx +000CCBE2: mov rax, [rbp+var_198] +000CCBE9: add rax, 8 +000CCBED: mov rdi, rax; this +000CCBF0: call __ZNSsC1Ev; std::string::string(void) +000CCBF5: mov esi, 8 +000CCBFA: mov edi, 10h +000CCBFF: call __ZStorSt13_Ios_OpenmodeS_; std::operator|(std::_Ios_Openmode,std::_Ios_Openmode) +000CCC04: mov edx, eax +000CCC06: lea rax, [rbp+var_190] +000CCC0D: mov esi, edx +000CCC0F: mov rdi, rax +000CCC12: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode; std::basic_stringstream,std::allocator>::basic_stringstream(std::_Ios_Openmode) +000CCC17: lea rax, [rbp+var_190] +000CCC1E: add rax, 10h +000CCC22: lea rsi, aPortnotopenede; "PortNotOpenedException " +000CCC29: mov rdi, rax +000CCC2C: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CCC31: mov rdx, [rbp+var_1A0] +000CCC38: mov rsi, rdx +000CCC3B: mov rdi, rax +000CCC3E: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CCC43: lea rsi, aFailed; " failed." +000CCC4A: mov rdi, rax +000CCC4D: call __ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; std::operator<<>(std::basic_ostream> &,char const*) +000CCC52: lea rax, [rbp+var_20] +000CCC56: lea rdx, [rbp+var_190] +000CCC5D: mov rsi, rdx +000CCC60: mov rdi, rax +000CCC63: call __ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv; std::basic_stringstream,std::allocator>::str(void) +000CCC68: mov rax, [rbp+var_198] +000CCC6F: lea rdx, [rax+8] +000CCC73: lea rax, [rbp+var_20] +000CCC77: mov rsi, rax +000CCC7A: mov rdi, rdx +000CCC7D: call __ZNSsaSEOSs; std::string::operator=(std::string &&) +000CCC82: lea rax, [rbp+var_20] +000CCC86: mov rdi, rax; this +000CCC89: call __ZNSsD1Ev; std::string::~string() +000CCC8E: lea rax, [rbp+var_190] +000CCC95: mov rdi, rax +000CCC98: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CCC9D: jmp short loc_CCCF9 +000CCC9F: mov rbx, rax +000CCCA2: lea rax, [rbp+var_20] +000CCCA6: mov rdi, rax; this +000CCCA9: call __ZNSsD1Ev; std::string::~string() +000CCCAE: jmp short loc_CCCB3 +000CCCB0: mov rbx, rax +000CCCB3: lea rax, [rbp+var_190] +000CCCBA: mov rdi, rax +000CCCBD: call __ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev; std::basic_stringstream,std::allocator>::~basic_stringstream() +000CCCC2: jmp short loc_CCCC7 +000CCCC4: mov rbx, rax +000CCCC7: mov rax, [rbp+var_198] +000CCCCE: add rax, 8 +000CCCD2: mov rdi, rax; this +000CCCD5: call __ZNSsD1Ev; std::string::~string() +000CCCDA: jmp short loc_CCCDF +000CCCDC: mov rbx, rax +000CCCDF: mov rax, [rbp+var_198] +000CCCE6: mov rdi, rax; this +000CCCE9: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CCCEE: mov rax, rbx +000CCCF1: mov rdi, rax; struct _Unwind_Exception * +000CCCF4: call __Unwind_Resume +000CCCF9: add rsp, 198h +000CCD00: pop rbx +000CCD01: pop rbp +000CCD02: retn + +### FUNC 000CCD04 - 000CCD55 (81 bytes) name=_ZN6serial22PortNotOpenedExceptionD2Ev +000CCD04: push rbp; Alternative name is 'serial::PortNotOpenedException::~PortNotOpenedException()' +000CCD05: mov rbp, rsp +000CCD08: sub rsp, 10h +000CCD0C: mov [rbp+var_8], rdi +000CCD10: mov rax, [rbp+var_8] +000CCD14: mov rdx, cs:_ZTVN6serial22PortNotOpenedExceptionE_ptr +000CCD1B: lea rdx, [rdx+10h] +000CCD1F: mov [rax], rdx +000CCD22: mov rax, [rbp+var_8] +000CCD26: add rax, 8 +000CCD2A: mov rdi, rax; this +000CCD2D: call __ZNSsD1Ev; std::string::~string() +000CCD32: mov rax, [rbp+var_8] +000CCD36: mov rdi, rax; this +000CCD39: call __ZNSt9exceptionD2Ev; std::exception::~exception() +000CCD3E: mov eax, 0 +000CCD43: test eax, eax +000CCD45: jz short locret_CCD53 +000CCD47: mov rax, [rbp+var_8] +000CCD4B: mov rdi, rax; void * +000CCD4E: call __ZdlPv; operator delete(void *) +000CCD53: leave +000CCD54: retn + +### FUNC 000CCD56 - 000CCD7C (38 bytes) name=_ZN6serial22PortNotOpenedExceptionD0Ev +000CCD56: push rbp +000CCD57: mov rbp, rsp +000CCD5A: sub rsp, 10h +000CCD5E: mov [rbp+var_8], rdi +000CCD62: mov rax, [rbp+var_8] +000CCD66: mov rdi, rax; this +000CCD69: call __ZN6serial22PortNotOpenedExceptionD2Ev; serial::PortNotOpenedException::~PortNotOpenedException() +000CCD6E: mov rax, [rbp+var_8] +000CCD72: mov rdi, rax; void * +000CCD75: call __ZdlPv; operator delete(void *) +000CCD7A: leave +000CCD7B: retn + +### FUNC 000CCD7C - 000CCD9A (30 bytes) name=_ZNK6serial22PortNotOpenedException4whatEv +000CCD7C: push rbp +000CCD7D: mov rbp, rsp +000CCD80: sub rsp, 10h +000CCD84: mov [rbp+var_8], rdi +000CCD88: mov rax, [rbp+var_8] +000CCD8C: add rax, 8 +000CCD90: mov rdi, rax; this +000CCD93: call __ZNKSs5c_strEv; std::string::c_str(void) +000CCD98: leave +000CCD99: retn + +### FUNC 000CCD9A - 000CCDC2 (40 bytes) name=_ZSt3minIjERKT_S2_S2_ +000CCD9A: push rbp +000CCD9B: mov rbp, rsp +000CCD9E: mov [rbp+var_8], rdi +000CCDA2: mov [rbp+var_10], rsi +000CCDA6: mov rax, [rbp+var_10] +000CCDAA: mov edx, [rax] +000CCDAC: mov rax, [rbp+var_8] +000CCDB0: mov eax, [rax] +000CCDB2: cmp edx, eax +000CCDB4: jnb short loc_CCDBC +000CCDB6: mov rax, [rbp+var_10] +000CCDBA: jmp short loc_CCDC0 +000CCDBC: mov rax, [rbp+var_8] +000CCDC0: pop rbp +000CCDC1: retn + +### FUNC 000CCDC2 - 000CCDD8 (22 bytes) name=_ZL18__gthread_active_pv_3 +000CCDC2: push rbp +000CCDC3: mov rbp, rsp +000CCDC6: mov rax, cs:__pthread_key_create_ptr +000CCDCD: test rax, rax +000CCDD0: setnz al +000CCDD3: movzx eax, al +000CCDD6: pop rbp +000CCDD7: retn + +### FUNC 000CCDD8 - 000CCDFD (37 bytes) name=_ZL15__gthread_equalmm_1 +000CCDD8: push rbp +000CCDD9: mov rbp, rsp +000CCDDC: sub rsp, 10h +000CCDE0: mov [rbp+thread1], rdi +000CCDE4: mov [rbp+thread2], rsi +000CCDE8: mov rdx, [rbp+thread2] +000CCDEC: mov rax, [rbp+thread1] +000CCDF0: mov rsi, rdx; thread2 +000CCDF3: mov rdi, rax; thread1 +000CCDF6: call _pthread_equal +000CCDFB: leave +000CCDFC: retn + +### FUNC 000CCDFD - 000CCE2C (47 bytes) name=_ZL20__gthread_mutex_lockP15pthread_mutex_t_2 +000CCDFD: push rbp +000CCDFE: mov rbp, rsp +000CCE01: sub rsp, 10h +000CCE05: mov [rbp+mutex], rdi +000CCE09: call _ZL18__gthread_active_pv_3; __gthread_active_p(void) +000CCE0E: test eax, eax +000CCE10: setnz al +000CCE13: test al, al +000CCE15: jz short loc_CCE25 +000CCE17: mov rax, [rbp+mutex] +000CCE1B: mov rdi, rax; mutex +000CCE1E: call _pthread_mutex_lock +000CCE23: jmp short locret_CCE2A +000CCE25: mov eax, 0 +000CCE2A: leave +000CCE2B: retn + +### FUNC 000CCE2C - 000CCE5B (47 bytes) name=_ZL22__gthread_mutex_unlockP15pthread_mutex_t_2 +000CCE2C: push rbp +000CCE2D: mov rbp, rsp +000CCE30: sub rsp, 10h +000CCE34: mov [rbp+mutex], rdi +000CCE38: call _ZL18__gthread_active_pv_3; __gthread_active_p(void) +000CCE3D: test eax, eax +000CCE3F: setnz al +000CCE42: test al, al +000CCE44: jz short loc_CCE54 +000CCE46: mov rax, [rbp+mutex] +000CCE4A: mov rdi, rax; mutex +000CCE4D: call _pthread_mutex_unlock +000CCE52: jmp short locret_CCE59 +000CCE54: mov eax, 0 +000CCE59: leave +000CCE5A: retn + +### FUNC 000CCE5B - 000CCE88 (45 bytes) name=_ZL24__gthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec_2 +000CCE5B: push rbp +000CCE5C: mov rbp, rsp +000CCE5F: sub rsp, 20h +000CCE63: mov [rbp+cond], rdi +000CCE67: mov [rbp+mutex], rsi +000CCE6B: mov [rbp+abstime], rdx +000CCE6F: mov rdx, [rbp+abstime]; abstime +000CCE73: mov rcx, [rbp+mutex] +000CCE77: mov rax, [rbp+cond] +000CCE7B: mov rsi, rcx; mutex +000CCE7E: mov rdi, rax; cond +000CCE81: call _pthread_cond_timedwait +000CCE86: leave +000CCE87: retn + +### FUNC 000CCE88 - 000CCEA2 (26 bytes) name=_ZN9__gnu_cxxL18__exchange_and_addEPVii_1 +000CCE88: push rbp +000CCE89: mov rbp, rsp +000CCE8C: mov [rbp+var_8], rdi +000CCE90: mov [rbp+var_C], esi +000CCE93: mov edx, [rbp+var_C] +000CCE96: mov rax, [rbp+var_8] +000CCE9A: lock xadd [rax], edx +000CCE9E: mov eax, edx +000CCEA0: pop rbp +000CCEA1: retn + +### FUNC 000CCEA2 - 000CCECC (42 bytes) name=_ZN9__gnu_cxxL25__exchange_and_add_singleEPii_1 +000CCEA2: push rbp +000CCEA3: mov rbp, rsp +000CCEA6: mov [rbp+var_18], rdi +000CCEAA: mov [rbp+var_1C], esi +000CCEAD: mov rax, [rbp+var_18] +000CCEB1: mov eax, [rax] +000CCEB3: mov [rbp+var_4], eax +000CCEB6: mov rax, [rbp+var_18] +000CCEBA: mov edx, [rax] +000CCEBC: mov eax, [rbp+var_1C] +000CCEBF: add edx, eax +000CCEC1: mov rax, [rbp+var_18] +000CCEC5: mov [rax], edx +000CCEC7: mov eax, [rbp+var_4] +000CCECA: pop rbp +000CCECB: retn + +### FUNC 000CCECC - 000CCF0F (67 bytes) name=_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii_1 +000CCECC: push rbp +000CCECD: mov rbp, rsp +000CCED0: sub rsp, 10h +000CCED4: mov [rbp+var_8], rdi +000CCED8: mov [rbp+var_C], esi +000CCEDB: call _ZL18__gthread_active_pv_3; __gthread_active_p(void) +000CCEE0: test eax, eax +000CCEE2: setnz al +000CCEE5: test al, al +000CCEE7: jz short loc_CCEFC +000CCEE9: mov edx, [rbp+var_C] +000CCEEC: mov rax, [rbp+var_8] +000CCEF0: mov esi, edx; int +000CCEF2: mov rdi, rax; volatile int * +000CCEF5: call _ZN9__gnu_cxxL18__exchange_and_addEPVii_1; __gnu_cxx::__exchange_and_add(int volatile*,int) +000CCEFA: jmp short locret_CCF0D +000CCEFC: mov edx, [rbp+var_C] +000CCEFF: mov rax, [rbp+var_8] +000CCF03: mov esi, edx; int +000CCF05: mov rdi, rax; int * +000CCF08: call _ZN9__gnu_cxxL25__exchange_and_add_singleEPii_1; __gnu_cxx::__exchange_and_add_single(int *,int) +000CCF0D: leave +000CCF0E: retn + +### FUNC 000CCF10 - 000CCFB2 (162 bytes) name=_ZN21EloTCMHeartBeatDeviceC2Ev +000CCF10: push rbp; Alternative name is 'EloTCMHeartBeatDevice::EloTCMHeartBeatDevice(void)' +000CCF11: mov rbp, rsp +000CCF14: sub rsp, 10h +000CCF18: mov [rbp+var_8], rdi +000CCF1C: mov rax, [rbp+var_8] +000CCF20: mov rdi, rax; this +000CCF23: call __ZN16TCMVirtualDeviceC2Ev; TCMVirtualDevice::TCMVirtualDevice(void) +000CCF28: mov rax, [rbp+var_8] +000CCF2C: mov rdx, cs:_ZTV21EloTCMHeartBeatDevice_ptr +000CCF33: lea rdx, [rdx+10h] +000CCF37: mov [rax], rdx +000CCF3A: mov rax, [rbp+var_8] +000CCF3E: add rax, 0D0h +000CCF44: mov rdi, rax; this +000CCF47: call __ZNSt6threadC2Ev; std::thread::thread(void) +000CCF4C: mov rax, [rbp+var_8] +000CCF50: add rax, 0E0h +000CCF56: mov rdi, rax; this +000CCF59: call __ZNSt18condition_variableC1Ev; std::condition_variable::condition_variable(void) +000CCF5E: mov rax, [rbp+var_8] +000CCF62: mov qword ptr [rax+110h], 0 +000CCF6D: mov qword ptr [rax+118h], 0 +000CCF78: mov qword ptr [rax+120h], 0 +000CCF83: mov qword ptr [rax+128h], 0 +000CCF8E: mov qword ptr [rax+130h], 0 +000CCF99: mov rax, [rbp+var_8] +000CCF9D: mov byte ptr [rax+58h], 0 +000CCFA1: mov rax, [rbp+var_8] +000CCFA5: mov qword ptr [rax+0C8h], 0 +000CCFB0: leave +000CCFB1: retn + +### FUNC 000CCFB2 - 000CD023 (113 bytes) name=_ZN21EloTCMHeartBeatDeviceD2Ev +000CCFB2: push rbp; Alternative name is 'EloTCMHeartBeatDevice::~EloTCMHeartBeatDevice()' +000CCFB3: mov rbp, rsp +000CCFB6: sub rsp, 10h +000CCFBA: mov [rbp+var_8], rdi +000CCFBE: mov rax, [rbp+var_8] +000CCFC2: mov rdx, cs:_ZTV21EloTCMHeartBeatDevice_ptr +000CCFC9: lea rdx, [rdx+10h] +000CCFCD: mov [rax], rdx +000CCFD0: mov rax, [rbp+var_8] +000CCFD4: mov rdi, rax; this +000CCFD7: call __ZN21EloTCMHeartBeatDevice9stopCheckEv; EloTCMHeartBeatDevice::stopCheck(void) +000CCFDC: mov rax, [rbp+var_8] +000CCFE0: add rax, 0E0h +000CCFE6: mov rdi, rax; this +000CCFE9: call __ZNSt18condition_variableD1Ev; std::condition_variable::~condition_variable() +000CCFEE: mov rax, [rbp+var_8] +000CCFF2: add rax, 0D0h +000CCFF8: mov rdi, rax; this +000CCFFB: call __ZNSt6threadD2Ev; std::thread::~thread() +000CD000: mov rax, [rbp+var_8] +000CD004: mov rdi, rax; this +000CD007: call __ZN16TCMVirtualDeviceD2Ev_0; TCMVirtualDevice::~TCMVirtualDevice() +000CD00C: mov eax, 0 +000CD011: test eax, eax +000CD013: jz short locret_CD021 +000CD015: mov rax, [rbp+var_8] +000CD019: mov rdi, rax; void * +000CD01C: call __ZdlPv; operator delete(void *) +000CD021: leave +000CD022: retn + +### FUNC 000CD024 - 000CD04A (38 bytes) name=_ZN21EloTCMHeartBeatDeviceD0Ev +000CD024: push rbp +000CD025: mov rbp, rsp +000CD028: sub rsp, 10h +000CD02C: mov [rbp+var_8], rdi +000CD030: mov rax, [rbp+var_8] +000CD034: mov rdi, rax; this +000CD037: call __ZN21EloTCMHeartBeatDeviceD2Ev; EloTCMHeartBeatDevice::~EloTCMHeartBeatDevice() +000CD03C: mov rax, [rbp+var_8] +000CD040: mov rdi, rax; void * +000CD043: call __ZdlPv; operator delete(void *) +000CD048: leave +000CD049: retn + +### FUNC 000CD04A - 000CD067 (29 bytes) name=_ZN21EloTCMHeartBeatDevice20setHeartBeatDelegateEP18IHeartBeatDelegate +000CD04A: push rbp +000CD04B: mov rbp, rsp +000CD04E: mov [rbp+var_8], rdi +000CD052: mov [rbp+var_10], rsi +000CD056: mov rax, [rbp+var_8] +000CD05A: mov rdx, [rbp+var_10] +000CD05E: mov [rax+0C8h], rdx +000CD065: pop rbp +000CD066: retn + +### FUNC 000CD068 - 000CD0EF (135 bytes) name=_ZN21EloTCMHeartBeatDevice10startCheckEv +000CD068: push rbp +000CD069: mov rbp, rsp +000CD06C: sub rsp, 30h +000CD070: mov [rbp+var_28], rdi +000CD074: mov rcx, [rbp+var_28] +000CD078: movzx ecx, byte ptr [rcx+0D8h] +000CD07F: xor ecx, 1 +000CD082: test cl, cl +000CD084: jz short locret_CD0ED +000CD086: mov rcx, [rbp+var_28] +000CD08A: mov byte ptr [rcx+0D8h], 1 +000CD091: mov rcx, [rbp+var_28] +000CD095: mov [rbp+var_18], rcx +000CD099: mov rcx, cs:_ZN21EloTCMHeartBeatDevice11checkThreadEv_ptr +000CD0A0: mov rax, rcx +000CD0A3: mov edx, 0 +000CD0A8: mov [rbp+var_10], rax +000CD0AC: mov [rbp+var_8], rdx +000CD0B0: lea rdx, [rbp+var_18] +000CD0B4: lea rcx, [rbp+var_10] +000CD0B8: lea rax, [rbp+var_20] +000CD0BC: mov rsi, rcx +000CD0BF: mov rdi, rax +000CD0C2: call __ZNSt6threadC2IM21EloTCMHeartBeatDeviceFvvEJKPS1_EEEOT_DpOT0_; std::thread::thread(void (EloTCMHeartBeatDevice::*)(void) &&,EloTCMHeartBeatDevice* const &&) +000CD0C7: mov rax, [rbp+var_28] +000CD0CB: lea rdx, [rax+0D0h] +000CD0D2: lea rax, [rbp+var_20] +000CD0D6: mov rsi, rax +000CD0D9: mov rdi, rdx +000CD0DC: call __ZNSt6threadaSEOS_; std::thread::operator=(std::thread&&) +000CD0E1: lea rax, [rbp+var_20] +000CD0E5: mov rdi, rax; this +000CD0E8: call __ZNSt6threadD2Ev; std::thread::~thread() +000CD0ED: leave +000CD0EE: retn + +### FUNC 000CD0F0 - 000CD162 (114 bytes) name=_ZN21EloTCMHeartBeatDevice9stopCheckEv +000CD0F0: push rbp +000CD0F1: mov rbp, rsp +000CD0F4: sub rsp, 20h +000CD0F8: mov [rbp+var_18], rdi +000CD0FC: mov rax, [rbp+var_18] +000CD100: movzx eax, byte ptr [rax+0D8h] +000CD107: test al, al +000CD109: jz short locret_CD160 +000CD10B: mov rax, [rbp+var_18] +000CD10F: mov byte ptr [rax+0D8h], 0 +000CD116: mov rax, [rbp+var_18] +000CD11A: lea rdx, [rax+110h] +000CD121: lea rax, [rbp+var_10] +000CD125: mov rsi, rdx +000CD128: mov rdi, rax +000CD12B: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000CD130: mov rax, [rbp+var_18] +000CD134: add rax, 0E0h +000CD13A: mov rdi, rax; this +000CD13D: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000CD142: lea rax, [rbp+var_10] +000CD146: mov rdi, rax +000CD149: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000CD14E: mov rax, [rbp+var_18] +000CD152: add rax, 0D0h +000CD158: mov rdi, rax; this +000CD15B: call __ZNSt6thread4joinEv; std::thread::join(void) +000CD160: leave +000CD161: retn + +### FUNC 000CD162 - 000CD18E (44 bytes) name=_ZN21EloTCMHeartBeatDevice20canHandleFTDICommandEhh +000CD162: push rbp +000CD163: mov rbp, rsp +000CD166: mov [rbp+var_8], rdi +000CD16A: mov ecx, esi +000CD16C: mov eax, edx +000CD16E: mov [rbp+var_C], cl +000CD171: mov [rbp+var_10], al +000CD174: cmp [rbp+var_C], 2 +000CD178: jnz short loc_CD187 +000CD17A: cmp [rbp+var_10], 1 +000CD17E: jnz short loc_CD187 +000CD180: mov eax, 1 +000CD185: jmp short loc_CD18C +000CD187: mov eax, 0 +000CD18C: pop rbp +000CD18D: retn + +### FUNC 000CD18E - 000CD235 (167 bytes) name=_ZN21EloTCMHeartBeatDevice19onHandleFTDICommandERKSt6vectorIhSaIhEE +000CD18E: push rbp +000CD18F: mov rbp, rsp +000CD192: push rbx +000CD193: sub rsp, 28h +000CD197: mov [rbp+var_28], rdi +000CD19B: mov [rbp+var_30], rsi +000CD19F: mov rax, [rbp+var_30] +000CD1A3: mov esi, 4 +000CD1A8: mov rdi, rax +000CD1AB: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000CD1B0: movzx eax, byte ptr [rax] +000CD1B3: mov [rbp+var_11], al +000CD1B6: mov rax, [rbp+var_30] +000CD1BA: mov esi, 5 +000CD1BF: mov rdi, rax +000CD1C2: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000CD1C7: movzx eax, byte ptr [rax] +000CD1CA: mov [rbp+var_12], al +000CD1CD: mov rax, [rbp+var_30] +000CD1D1: mov esi, 6 +000CD1D6: mov rdi, rax +000CD1D9: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000CD1DE: movzx eax, byte ptr [rax] +000CD1E1: movzx eax, al +000CD1E4: shl eax, 8 +000CD1E7: mov ebx, eax +000CD1E9: mov rax, [rbp+var_30] +000CD1ED: mov esi, 7 +000CD1F2: mov rdi, rax +000CD1F5: call __ZNKSt6vectorIhSaIhEEixEm; std::vector>::operator[](ulong) +000CD1FA: movzx eax, byte ptr [rax] +000CD1FD: movzx eax, al +000CD200: or eax, ebx +000CD202: mov [rbp+var_18], eax +000CD205: cmp [rbp+var_11], 2 +000CD209: jnz short loc_CD22E +000CD20B: cmp [rbp+var_12], 1 +000CD20F: jnz short loc_CD22E +000CD211: mov rax, [rbp+var_28] +000CD215: mov byte ptr [rax+138h], 1 +000CD21C: mov rax, [rbp+var_28] +000CD220: add rax, 0E0h +000CD226: mov rdi, rax; this +000CD229: call __ZNSt18condition_variable10notify_allEv; std::condition_variable::notify_all(void) +000CD22E: add rsp, 28h +000CD232: pop rbx +000CD233: pop rbp +000CD234: retn + +### FUNC 000CD236 - 000CD353 (285 bytes) name=_ZN21EloTCMHeartBeatDevice11checkThreadEv +000CD236: push rbp +000CD237: mov rbp, rsp +000CD23A: push rbx +000CD23B: sub rsp, 38h +000CD23F: mov [rbp+var_38], rdi +000CD243: jmp loc_CD31D +000CD248: mov rax, [rbp+var_38] +000CD24C: mov byte ptr [rax+138h], 0 +000CD253: mov rax, [rbp+var_38] +000CD257: lea rdx, [rax+110h] +000CD25E: lea rax, [rbp+var_30] +000CD262: mov rsi, rdx +000CD265: mov rdi, rax +000CD268: call __ZNSt11unique_lockISt5mutexEC2ERS0_; std::unique_lock::unique_lock(std::mutex&) +000CD26D: mov [rbp+var_18], 7Dh ; '}' +000CD274: lea rdx, [rbp+var_18] +000CD278: lea rax, [rbp+var_20] +000CD27C: mov rsi, rdx +000CD27F: mov rdi, rax +000CD282: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IivEERKT_; std::chrono::duration>::duration(int const&) +000CD287: mov rax, [rbp+var_38] +000CD28B: lea rcx, [rax+0E0h] +000CD292: lea rdx, [rbp+var_20] +000CD296: lea rax, [rbp+var_30] +000CD29A: mov rsi, rax +000CD29D: mov rdi, rcx +000CD2A0: call __ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE; std::condition_variable::wait_for>(std::unique_lock &,std::chrono::duration> const&) +000CD2A5: mov [rbp+var_14], eax +000CD2A8: mov rax, [rbp+var_38] +000CD2AC: movzx eax, byte ptr [rax+138h] +000CD2B3: xor eax, 1 +000CD2B6: test al, al +000CD2B8: jz short loc_CD2D0 +000CD2BA: mov rax, [rbp+var_38] +000CD2BE: movzx eax, byte ptr [rax+0D8h] +000CD2C5: test al, al +000CD2C7: jz short loc_CD2D0 +000CD2C9: mov eax, 1 +000CD2CE: jmp short loc_CD2D5 +000CD2D0: mov eax, 0 +000CD2D5: test al, al +000CD2D7: jz short loc_CD311 +000CD2D9: mov rax, [rbp+var_38] +000CD2DD: mov rax, [rax+0C8h] +000CD2E4: test rax, rax +000CD2E7: jz short loc_CD311 +000CD2E9: mov rax, [rbp+var_38] +000CD2ED: mov rax, [rax+0C8h] +000CD2F4: mov rax, [rax] +000CD2F7: mov rax, [rax] +000CD2FA: mov rdx, [rbp+var_38] +000CD2FE: mov rdx, [rdx+0C8h] +000CD305: mov rcx, [rbp+var_38] +000CD309: mov rsi, rcx +000CD30C: mov rdi, rdx +000CD30F: call rax +000CD311: lea rax, [rbp+var_30] +000CD315: mov rdi, rax +000CD318: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000CD31D: mov rax, [rbp+var_38] +000CD321: movzx eax, byte ptr [rax+0D8h] +000CD328: test al, al +000CD32A: jnz loc_CD248 +000CD330: jmp short loc_CD34C +000CD332: mov rbx, rax +000CD335: lea rax, [rbp+var_30] +000CD339: mov rdi, rax +000CD33C: call __ZNSt11unique_lockISt5mutexED2Ev; std::unique_lock::~unique_lock() +000CD341: mov rax, rbx +000CD344: mov rdi, rax; struct _Unwind_Exception * +000CD347: call __Unwind_Resume +000CD34C: add rsp, 38h +000CD350: pop rbx +000CD351: pop rbp +000CD352: retn + +### FUNC 000CD354 - 000CD372 (30 bytes) name=_ZNSt6chrono8durationIlSt5ratioILl1ELl1EEEC1IivEERKT_ +000CD354: push rbp +000CD355: mov rbp, rsp +000CD358: mov [rbp+var_8], rdi +000CD35C: mov [rbp+var_10], rsi +000CD360: mov rax, [rbp+var_10] +000CD364: mov eax, [rax] +000CD366: movsxd rdx, eax +000CD369: mov rax, [rbp+var_8] +000CD36D: mov [rax], rdx +000CD370: pop rbp +000CD371: retn + +### FUNC 000CD372 - 000CD380 (14 bytes) name=_ZSt7forwardIM21EloTCMHeartBeatDeviceFvvEEOT_RNSt16remove_referenceIS3_E4typeE +000CD372: push rbp +000CD373: mov rbp, rsp +000CD376: mov [rbp+var_8], rdi +000CD37A: mov rax, [rbp+var_8] +000CD37E: pop rbp +000CD37F: retn + +### FUNC 000CD380 - 000CD38E (14 bytes) name=_ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE +000CD380: push rbp +000CD381: mov rbp, rsp +000CD384: mov [rbp+var_8], rdi +000CD388: mov rax, [rbp+var_8] +000CD38C: pop rbp +000CD38D: retn + +### FUNC 000CD38E - 000CD3AC (30 bytes) name=_ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev +000CD38E: push rbp; Alternative name is 'std::__shared_ptr ()(EloTCMHeartBeatDevice*)>>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr()' +000CD38F: mov rbp, rsp +000CD392: sub rsp, 10h +000CD396: mov [rbp+var_8], rdi +000CD39A: mov rax, [rbp+var_8] +000CD39E: add rax, 8 +000CD3A2: mov rdi, rax +000CD3A5: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() +000CD3AA: leave +000CD3AB: retn + +### FUNC 000CD3AC - 000CD3C6 (26 bytes) name=_ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEED2Ev +000CD3AC: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMHeartBeatDevice*)>>>::~shared_ptr()' +000CD3AD: mov rbp, rsp +000CD3B0: sub rsp, 10h +000CD3B4: mov [rbp+var_8], rdi +000CD3B8: mov rax, [rbp+var_8] +000CD3BC: mov rdi, rax +000CD3BF: call __ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::__shared_ptr ()(EloTCMHeartBeatDevice*)>>,(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() +000CD3C4: leave +000CD3C5: retn + +### FUNC 000CD3C6 - 000CD49B (213 bytes) name=_ZNSt6threadC2IM21EloTCMHeartBeatDeviceFvvEJKPS1_EEEOT_DpOT0_ +000CD3C6: push rbp; Alternative name is 'std::thread::thread(void (EloTCMHeartBeatDevice::*)(void) &&, EloTCMHeartBeatDevice* const &&)' +000CD3C7: mov rbp, rsp +000CD3CA: push rbx +000CD3CB: sub rsp, 68h +000CD3CF: mov [rbp+var_58], rdi +000CD3D3: mov [rbp+var_60], rsi +000CD3D7: mov [rbp+var_68], rdx +000CD3DB: mov rax, [rbp+var_58] +000CD3DF: mov rdi, rax; this +000CD3E2: call __ZNSt6thread2idC2Ev; std::thread::id::id(void) +000CD3E7: mov rax, [rbp+var_68] +000CD3EB: mov rdi, rax +000CD3EE: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD3F3: mov rbx, rax +000CD3F6: mov rax, [rbp+var_60] +000CD3FA: mov rdi, rax +000CD3FD: call __ZSt7forwardIM21EloTCMHeartBeatDeviceFvvEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD402: mov rcx, rax +000CD405: lea rax, [rbp+var_30] +000CD409: mov rdx, rbx +000CD40C: mov rsi, rcx +000CD40F: mov rdi, rax +000CD412: call __ZSt13__bind_simpleIM21EloTCMHeartBeatDeviceFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_; std::__bind_simple(void (EloTCMHeartBeatDevice::*)(void)&&,EloTCMHeartBeatDevice* const&&) +000CD417: lea rax, [rbp+var_40] +000CD41B: lea rdx, [rbp+var_30] +000CD41F: mov rcx, [rbp+var_58] +000CD423: mov rsi, rcx +000CD426: mov rdi, rax +000CD429: call __ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_; std::thread::_M_make_routine ()(EloTCMHeartBeatDevice*)>>(std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&) +000CD42E: lea rdx, [rbp+var_40] +000CD432: lea rax, [rbp+var_50] +000CD436: mov rsi, rdx +000CD439: mov rdi, rax +000CD43C: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS7_EEEEvEEOS_IT_E; std::shared_ptr::shared_ptr ()(EloTCMHeartBeatDevice*)>>,void>(std::shared_ptr&& ()(EloTCMHeartBeatDevice*)>>>) +000CD441: lea rdx, [rbp+var_50] +000CD445: mov rax, [rbp+var_58] +000CD449: mov rsi, rdx +000CD44C: mov rdi, rax +000CD44F: call __ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE; std::thread::_M_start_thread(std::shared_ptr) +000CD454: lea rax, [rbp+var_50] +000CD458: mov rdi, rax +000CD45B: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000CD460: lea rax, [rbp+var_40] +000CD464: mov rdi, rax +000CD467: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEED2Ev; std::shared_ptr ()(EloTCMHeartBeatDevice*)>>>::~shared_ptr() +000CD46C: jmp short loc_CD494 +000CD46E: mov rbx, rax +000CD471: lea rax, [rbp+var_50] +000CD475: mov rdi, rax +000CD478: call __ZNSt10shared_ptrINSt6thread10_Impl_baseEED2Ev; std::shared_ptr::~shared_ptr() +000CD47D: lea rax, [rbp+var_40] +000CD481: mov rdi, rax +000CD484: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEED2Ev; std::shared_ptr ()(EloTCMHeartBeatDevice*)>>>::~shared_ptr() +000CD489: mov rax, rbx +000CD48C: mov rdi, rax; struct _Unwind_Exception * +000CD48F: call __Unwind_Resume +000CD494: add rsp, 68h +000CD498: pop rbx +000CD499: pop rbp +000CD49A: retn + +### FUNC 000CD49B - 000CD50A (111 bytes) name=_ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_ +000CD49B: push rbp; Alternative name is 'std::common_type>, std::chrono::duration>>::type std::chrono::operator+, long, std::ratio<1l, 1l>>(std::chrono::duration> const&, std::chrono::duration> const&)' +000CD49C: mov rbp, rsp +000CD49F: push rbx +000CD4A0: sub rsp, 48h +000CD4A4: mov [rbp+var_48], rdi +000CD4A8: mov [rbp+var_50], rsi +000CD4AC: mov rax, [rbp+var_48] +000CD4B0: mov rax, [rax] +000CD4B3: mov [rbp+var_30], rax +000CD4B7: lea rax, [rbp+var_30] +000CD4BB: mov rdi, rax +000CD4BE: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000CD4C3: mov rbx, rax +000CD4C6: mov rdx, [rbp+var_50] +000CD4CA: lea rax, [rbp+var_20] +000CD4CE: mov rsi, rdx +000CD4D1: mov rdi, rax +000CD4D4: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC2IlS1_ILl1ELl1EEvEERKNS0_IT_T0_EE; std::chrono::duration>::duration,void>(std::chrono::duration> const&) +000CD4D9: lea rax, [rbp+var_20] +000CD4DD: mov rdi, rax +000CD4E0: call __ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000000EEE5countEv; std::chrono::duration>::count(void) +000CD4E5: add rax, rbx +000CD4E8: mov [rbp+var_38], rax +000CD4EC: lea rdx, [rbp+var_38] +000CD4F0: lea rax, [rbp+var_40] +000CD4F4: mov rsi, rdx +000CD4F7: mov rdi, rax +000CD4FA: call __ZNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEC1IlvEERKT_; std::chrono::duration>::duration(long const&) +000CD4FF: mov rax, [rbp+var_40] +000CD503: add rsp, 48h +000CD507: pop rbx +000CD508: pop rbp +000CD509: retn + +### FUNC 000CD50A - 000CD55A (80 bytes) name=_ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_ +000CD50A: push rbp; Alternative name is 'std::chrono::time_point>, std::chrono::duration>>::type> std::chrono::operator+>, long, std::ratio<1l, 1l>>(std::chrono::time_point>> const&, std::chrono::duration> const&)' +000CD50B: mov rbp, rsp +000CD50E: sub rsp, 40h +000CD512: mov [rbp+var_38], rdi +000CD516: mov [rbp+var_40], rsi +000CD51A: mov rax, [rbp+var_38] +000CD51E: mov rdi, rax +000CD521: call __ZNKSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEE16time_since_epochEv; std::chrono::time_point>>::time_since_epoch(void) +000CD526: mov [rbp+var_10], rax +000CD52A: mov rdx, [rbp+var_40] +000CD52E: lea rax, [rbp+var_10] +000CD532: mov rsi, rdx +000CD535: mov rdi, rax +000CD538: call __ZNSt6chronoplIlSt5ratioILl1ELl1000000000EElS1_ILl1ELl1EEEENSt11common_typeIJNS_8durationIT_T0_EENS5_IT1_T2_EEEE4typeERKS8_RKSB_; std::chrono::operator+,long,std::ratio<1l,1l>>(std::chrono::duration> const&,std::chrono::duration> const&) +000CD53D: mov [rbp+var_20], rax +000CD541: lea rdx, [rbp+var_20] +000CD545: lea rax, [rbp+var_30] +000CD549: mov rsi, rdx +000CD54C: mov rdi, rax +000CD54F: call __ZNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEC1ERKS6_; std::chrono::time_point>>::time_point(std::chrono::duration> const&) +000CD554: mov rax, [rbp+var_30] +000CD558: leave +000CD559: retn + +### FUNC 000CD55A - 000CD5A7 (77 bytes) name=_ZNSt18condition_variable8wait_forIlSt5ratioILl1ELl1EEEESt9cv_statusRSt11unique_lockISt5mutexERKNSt6chrono8durationIT_T0_EE +000CD55A: push rbp +000CD55B: mov rbp, rsp +000CD55E: sub rsp, 40h +000CD562: mov [rbp+var_28], rdi +000CD566: mov [rbp+var_30], rsi +000CD56A: mov [rbp+var_38], rdx +000CD56E: call __ZNSt6chrono3_V212system_clock3nowEv; std::chrono::_V2::system_clock::now(void) +000CD573: mov [rbp+var_10], rax +000CD577: mov rdx, [rbp+var_38] +000CD57B: lea rax, [rbp+var_10] +000CD57F: mov rsi, rdx +000CD582: mov rdi, rax +000CD585: call __ZNSt6chronoplINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEElS4_ILl1ELl1EEEENS_10time_pointIT_NSt11common_typeIJT0_NS3_IT1_T2_EEEE4typeEEERKNS8_IS9_SB_EERKSE_; std::chrono::operator+>,long,std::ratio<1l,1l>>(std::chrono::time_point>> const&,std::chrono::duration> const&) +000CD58A: mov [rbp+var_20], rax +000CD58E: lea rdx, [rbp+var_20] +000CD592: mov rcx, [rbp+var_30] +000CD596: mov rax, [rbp+var_28] +000CD59A: mov rsi, rcx +000CD59D: mov rdi, rax +000CD5A0: call __ZNSt18condition_variable10wait_untilINSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEEEESt9cv_statusRSt11unique_lockISt5mutexERKNS1_10time_pointINS1_3_V212system_clockET_EE; std::condition_variable::wait_until>>(std::unique_lock &,std::chrono::time_point>> const&) +000CD5A5: leave +000CD5A6: retn + +### FUNC 000CD5A7 - 000CD5B5 (14 bytes) name=_ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_tailERS2_ +000CD5A7: push rbp; Alternative name is 'std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *>::_M_tail(std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *>&)' +000CD5A8: mov rbp, rsp +000CD5AB: mov [rbp+var_8], rdi +000CD5AF: mov rax, [rbp+var_8] +000CD5B3: pop rbp +000CD5B4: retn + +### FUNC 000CD5B5 - 000CD5C3 (14 bytes) name=_ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EE7_M_headERS2_ +000CD5B5: push rbp +000CD5B6: mov rbp, rsp +000CD5B9: mov [rbp+var_8], rdi +000CD5BD: mov rax, [rbp+var_8] +000CD5C1: pop rbp +000CD5C2: retn + +### FUNC 000CD5C3 - 000CD5DD (26 bytes) name=_ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_headERS2_ +000CD5C3: push rbp; Alternative name is 'std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *>::_M_head(std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *>&)' +000CD5C4: mov rbp, rsp +000CD5C7: sub rsp, 10h +000CD5CB: mov [rbp+var_8], rdi +000CD5CF: mov rax, [rbp+var_8] +000CD5D3: mov rdi, rax +000CD5D6: call __ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EE7_M_headERS2_; std::_Head_base<1ul,EloTCMHeartBeatDevice *,false>::_M_head(std::_Head_base<1ul,EloTCMHeartBeatDevice *,false>&) +000CD5DB: leave +000CD5DC: retn + +### FUNC 000CD5DD - 000CD5EB (14 bytes) name=_ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE +000CD5DD: push rbp +000CD5DE: mov rbp, rsp +000CD5E1: mov [rbp+var_8], rdi +000CD5E5: mov rax, [rbp+var_8] +000CD5E9: pop rbp +000CD5EA: retn + +### FUNC 000CD5EC - 000CD614 (40 bytes) name=_ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IS1_EEOT_ +000CD5EC: push rbp; Alternative name is 'std::_Head_base<1ul, EloTCMHeartBeatDevice *, false>::_Head_base(EloTCMHeartBeatDevice * &&)' +000CD5ED: mov rbp, rsp +000CD5F0: sub rsp, 10h +000CD5F4: mov [rbp+var_8], rdi +000CD5F8: mov [rbp+var_10], rsi +000CD5FC: mov rax, [rbp+var_10] +000CD600: mov rdi, rax +000CD603: call __ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000CD608: mov rdx, [rax] +000CD60B: mov rax, [rbp+var_8] +000CD60F: mov [rax], rdx +000CD612: leave +000CD613: retn + +### FUNC 000CD614 - 000CD660 (76 bytes) name=_ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2EOS2_ +000CD614: push rbp; Alternative name is 'std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *>::_Tuple_impl(std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *>&&)' +000CD615: mov rbp, rsp +000CD618: sub rsp, 10h +000CD61C: mov [rbp+var_8], rdi +000CD620: mov [rbp+var_10], rsi +000CD624: mov rax, [rbp+var_10] +000CD628: mov rdi, rax +000CD62B: call __ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_tailERS2_; std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>::_M_tail(std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>&) +000CD630: mov rdi, rax +000CD633: call __ZSt4moveIRSt11_Tuple_implILm2EJEEEONSt16remove_referenceIT_E4typeEOS4_ +000CD638: mov rax, [rbp+var_10] +000CD63C: mov rdi, rax +000CD63F: call __ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_headERS2_; std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>::_M_head(std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>&) +000CD644: mov rdi, rax +000CD647: call __ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000CD64C: mov rdx, rax +000CD64F: mov rax, [rbp+var_8] +000CD653: mov rsi, rdx +000CD656: mov rdi, rax +000CD659: call __ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IS1_EEOT_; std::_Head_base<1ul,EloTCMHeartBeatDevice *,false>::_Head_base(EloTCMHeartBeatDevice * &&) +000CD65E: leave +000CD65F: retn + +### FUNC 000CD660 - 000CD66E (14 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_tailERS6_ +000CD660: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>::_M_tail(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>&)' +000CD661: mov rbp, rsp +000CD664: mov [rbp+var_8], rdi +000CD668: mov rax, [rbp+var_8] +000CD66C: pop rbp +000CD66D: retn + +### FUNC 000CD66E - 000CD67C (14 bytes) name=_ZSt4moveIRSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEEONSt16remove_referenceIT_E4typeEOS6_ +000CD66E: push rbp; Alternative name is 'std::remove_reference &>::type && std::move &>(std::_Tuple_impl<1ul, EloTCMHeartBeatDevice *> &&&)' +000CD66F: mov rbp, rsp +000CD672: mov [rbp+var_8], rdi +000CD676: mov rax, [rbp+var_8] +000CD67A: pop rbp +000CD67B: retn + +### FUNC 000CD67C - 000CD68A (14 bytes) name=_ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EE7_M_headERS5_ +000CD67C: push rbp +000CD67D: mov rbp, rsp +000CD680: mov [rbp+var_8], rdi +000CD684: mov rax, [rbp+var_8] +000CD688: pop rbp +000CD689: retn + +### FUNC 000CD68A - 000CD6A8 (30 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_headERS6_ +000CD68A: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>::_M_head(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>&)' +000CD68B: mov rbp, rsp +000CD68E: sub rsp, 10h +000CD692: mov [rbp+var_8], rdi +000CD696: mov rax, [rbp+var_8] +000CD69A: add rax, 8 +000CD69E: mov rdi, rax +000CD6A1: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EE7_M_headERS5_; std::_Head_base<0ul,std::_Mem_fn,false>::_M_head(std::_Head_base<0ul,std::_Mem_fn,false>&) +000CD6A6: leave +000CD6A7: retn + +### FUNC 000CD6A8 - 000CD6B6 (14 bytes) name=_ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE +000CD6A8: push rbp +000CD6A9: mov rbp, rsp +000CD6AC: mov [rbp+var_8], rdi +000CD6B0: mov rax, [rbp+var_8] +000CD6B4: pop rbp +000CD6B5: retn + +### FUNC 000CD6B6 - 000CD6E6 (48 bytes) name=_ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EEC2IS4_EEOT_ +000CD6B6: push rbp; Alternative name is 'std::_Head_base<0ul, std::_Mem_fn, false>::_Head_base>(std::_Mem_fn &&)' +000CD6B7: mov rbp, rsp +000CD6BA: sub rsp, 10h +000CD6BE: mov [rbp+var_8], rdi +000CD6C2: mov [rbp+var_10], rsi +000CD6C6: mov rax, [rbp+var_10] +000CD6CA: mov rdi, rax +000CD6CD: call __ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000CD6D2: mov rcx, [rbp+var_8] +000CD6D6: mov rdx, [rax+8] +000CD6DA: mov rax, [rax] +000CD6DD: mov [rcx], rax +000CD6E0: mov [rcx+8], rdx +000CD6E4: leave +000CD6E5: retn + +### FUNC 000CD6E6 - 000CD745 (95 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +000CD6E6: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>::_Tuple_impl(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>&&)' +000CD6E7: mov rbp, rsp +000CD6EA: sub rsp, 10h +000CD6EE: mov [rbp+var_8], rdi +000CD6F2: mov [rbp+var_10], rsi +000CD6F6: mov rax, [rbp+var_10] +000CD6FA: mov rdi, rax +000CD6FD: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_tailERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>::_M_tail(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>&) +000CD702: mov rdi, rax +000CD705: call __ZSt4moveIRSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEEONSt16remove_referenceIT_E4typeEOS6_; std::move &>(std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *> &&&) +000CD70A: mov rdx, rax +000CD70D: mov rax, [rbp+var_8] +000CD711: mov rsi, rdx +000CD714: mov rdi, rax +000CD717: call __ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2EOS2_; std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>::_Tuple_impl(std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>&&) +000CD71C: mov rax, [rbp+var_10] +000CD720: mov rdi, rax +000CD723: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_headERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>::_M_head(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>&) +000CD728: mov rdi, rax +000CD72B: call __ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000CD730: mov rdx, [rbp+var_8] +000CD734: add rdx, 8 +000CD738: mov rsi, rax +000CD73B: mov rdi, rdx +000CD73E: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EEC2IS4_EEOT_; std::_Head_base<0ul,std::_Mem_fn,false>::_Head_base>(std::_Mem_fn &&) +000CD743: leave +000CD744: retn + +### FUNC 000CD746 - 000CD76B (37 bytes) name=_ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_ +000CD746: push rbp; Alternative name is 'std::tuple, EloTCMHeartBeatDevice*>::tuple(std::tuple, EloTCMHeartBeatDevice*>&&)' +000CD747: mov rbp, rsp +000CD74A: sub rsp, 10h +000CD74E: mov [rbp+var_8], rdi +000CD752: mov [rbp+var_10], rsi +000CD756: mov rdx, [rbp+var_10] +000CD75A: mov rax, [rbp+var_8] +000CD75E: mov rsi, rdx +000CD761: mov rdi, rax +000CD764: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>::_Tuple_impl(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>&&) +000CD769: leave +000CD76A: retn + +### FUNC 000CD76C - 000CD791 (37 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS7_ +000CD76C: push rbp; Alternative name is 'std::_Bind_simple ()(EloTCMHeartBeatDevice*)>::_Bind_simple(std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&)' +000CD76D: mov rbp, rsp +000CD770: sub rsp, 10h +000CD774: mov [rbp+var_8], rdi +000CD778: mov [rbp+var_10], rsi +000CD77C: mov rdx, [rbp+var_10] +000CD780: mov rax, [rbp+var_8] +000CD784: mov rsi, rdx +000CD787: mov rdi, rax +000CD78A: call __ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS6_; std::tuple,EloTCMHeartBeatDevice*>::tuple(std::tuple,EloTCMHeartBeatDevice*>&&) +000CD78F: leave +000CD790: retn + +### FUNC 000CD791 - 000CD7FC (107 bytes) name=_ZSt13__bind_simpleIM21EloTCMHeartBeatDeviceFvvEJKPS0_EENSt19_Bind_simple_helperIT_JDpT0_EE6__typeEOS6_DpOS7_ +000CD791: push rbp; Alternative name is 'std::_Bind_simple_helper>::__type std::__bind_simple(void (EloTCMHeartBeatDevice::*)(void)&&, EloTCMHeartBeatDevice* const&&)' +000CD792: mov rbp, rsp +000CD795: push rbx +000CD796: sub rsp, 38h +000CD79A: mov [rbp+var_28], rdi +000CD79E: mov [rbp+var_30], rsi +000CD7A2: mov [rbp+var_38], rdx +000CD7A6: mov rax, [rbp+var_38] +000CD7AA: mov rdi, rax +000CD7AD: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD7B2: mov rbx, rax +000CD7B5: mov rax, [rbp+var_30] +000CD7B9: mov rdi, rax +000CD7BC: call __ZSt7forwardIM21EloTCMHeartBeatDeviceFvvEEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD7C1: mov rdx, [rax] +000CD7C4: mov rax, [rax+8] +000CD7C8: mov rdi, rdx +000CD7CB: mov rsi, rax +000CD7CE: call __ZNSt26_Maybe_wrap_member_pointerIM21EloTCMHeartBeatDeviceFvvEE9__do_wrapES2_; std::_Maybe_wrap_member_pointer::__do_wrap(void (EloTCMHeartBeatDevice::*)(void)) +000CD7D3: mov [rbp+var_20], rax +000CD7D7: mov [rbp+var_18], rdx +000CD7DB: lea rcx, [rbp+var_20] +000CD7DF: mov rax, [rbp+var_28] +000CD7E3: mov rdx, rbx +000CD7E6: mov rsi, rcx +000CD7E9: mov rdi, rax +000CD7EC: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_; std::_Bind_simple ()(EloTCMHeartBeatDevice*)>::_Bind_simple(std::_Mem_fn&&,EloTCMHeartBeatDevice* const &&) +000CD7F1: mov rax, [rbp+var_28] +000CD7F5: add rsp, 38h +000CD7F9: pop rbx +000CD7FA: pop rbp +000CD7FB: retn + +### FUNC 000CD7FC - 000CD80A (14 bytes) name=_ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE +000CD7FC: push rbp +000CD7FD: mov rbp, rsp +000CD800: mov [rbp+var_8], rdi +000CD804: mov rax, [rbp+var_8] +000CD808: pop rbp +000CD809: retn + +### FUNC 000CD80A - 000CD842 (56 bytes) name=_ZNSt6thread15_M_make_routineISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEESt10shared_ptrINS_5_ImplIT_EEEOSC_ +000CD80A: push rbp +000CD80B: mov rbp, rsp +000CD80E: sub rsp, 20h +000CD812: mov [rbp+var_8], rdi +000CD816: mov [rbp+var_10], rsi +000CD81A: mov [rbp+var_18], rdx +000CD81E: mov rax, [rbp+var_18] +000CD822: mov rdi, rax +000CD825: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CD82A: mov rdx, rax +000CD82D: mov rax, [rbp+var_8] +000CD831: mov rsi, rdx +000CD834: mov rdi, rax +000CD837: call __ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_; std::make_shared ()(EloTCMHeartBeatDevice*)>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CD83C: mov rax, [rbp+var_8] +000CD840: leave +000CD841: retn + +### FUNC 000CD842 - 000CD850 (14 bytes) name=_ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000CD842: push rbp +000CD843: mov rbp, rsp +000CD846: mov [rbp+var_8], rdi +000CD84A: mov rax, [rbp+var_8] +000CD84E: pop rbp +000CD84F: retn + +### FUNC 000CD850 - 000CD880 (48 bytes) name=_ZNSt10shared_ptrINSt6thread10_Impl_baseEEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS7_EEEEvEEOS_IT_E +000CD850: push rbp; Alternative name is 'std::shared_ptr::shared_ptr ()(EloTCMHeartBeatDevice*)>>, void>(std::shared_ptr&& ()(EloTCMHeartBeatDevice*)>>>)' +000CD851: mov rbp, rsp +000CD854: sub rsp, 10h +000CD858: mov [rbp+var_8], rdi +000CD85C: mov [rbp+var_10], rsi +000CD860: mov rax, [rbp+var_10] +000CD864: mov rdi, rax +000CD867: call __ZSt4moveIRSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move ()(EloTCMHeartBeatDevice*)>>> &>(std::shared_ptr ()(EloTCMHeartBeatDevice*)>>> &&&) +000CD86C: mov rdx, rax +000CD86F: mov rax, [rbp+var_8] +000CD873: mov rsi, rdx +000CD876: mov rdi, rax +000CD879: call __ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS9_EEEEvEEOS_IT_LS3_2EE; std::__shared_ptr::__shared_ptr ()(EloTCMHeartBeatDevice*)>>,void>(std::__shared_ptr&& ()(EloTCMHeartBeatDevice*)>>,(__gnu_cxx::_Lock_policy)2>) +000CD87E: leave +000CD87F: retn + +### FUNC 000CD880 - 000CD8BA (58 bytes) name=_ZNSt26_Maybe_wrap_member_pointerIM21EloTCMHeartBeatDeviceFvvEE9__do_wrapES2_ +000CD880: push rbp +000CD881: mov rbp, rsp +000CD884: sub rsp, 20h +000CD888: mov rax, rdi +000CD88B: mov rcx, rsi +000CD88E: mov rdx, rcx +000CD891: mov [rbp+var_20], rax +000CD895: mov [rbp+var_18], rdx +000CD899: mov rcx, [rbp+var_20] +000CD89D: mov rdx, [rbp+var_18] +000CD8A1: lea rax, [rbp+var_10] +000CD8A5: mov rsi, rcx +000CD8A8: mov rdi, rax +000CD8AB: call __ZNSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEC2ES2_; std::_Mem_fn::_Mem_fn(void (EloTCMHeartBeatDevice::*)(void)) +000CD8B0: mov rax, [rbp+var_10] +000CD8B4: mov rdx, [rbp+var_8] +000CD8B8: leave +000CD8B9: retn + +### FUNC 000CD8BA - 000CD8C8 (14 bytes) name=_ZSt4moveIRSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEONSt16remove_referenceIT_E4typeEOS7_ +000CD8BA: push rbp +000CD8BB: mov rbp, rsp +000CD8BE: mov [rbp+var_8], rdi +000CD8C2: mov rax, [rbp+var_8] +000CD8C6: pop rbp +000CD8C7: retn + +### FUNC 000CD8C8 - 000CD8F0 (40 bytes) name=_ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IKS1_EEOT_ +000CD8C8: push rbp; Alternative name is 'std::_Head_base<1ul, EloTCMHeartBeatDevice *, false>::_Head_base(EloTCMHeartBeatDevice * const &&)' +000CD8C9: mov rbp, rsp +000CD8CC: sub rsp, 10h +000CD8D0: mov [rbp+var_8], rdi +000CD8D4: mov [rbp+var_10], rsi +000CD8D8: mov rax, [rbp+var_10] +000CD8DC: mov rdi, rax +000CD8DF: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD8E4: mov rdx, [rax] +000CD8E7: mov rax, [rbp+var_8] +000CD8EB: mov [rax], rdx +000CD8EE: leave +000CD8EF: retn + +### FUNC 000CD8F0 - 000CD92C (60 bytes) name=_ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2IKS1_JEvEEOT_DpOT0_ +000CD8F0: push rbp; Alternative name is '_ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC1IKS1_JEvEEOT_DpOT0_' +000CD8F1: mov rbp, rsp +000CD8F4: sub rsp, 10h +000CD8F8: mov [rbp+var_8], rdi +000CD8FC: mov [rbp+var_10], rsi +000CD900: mov rax, [rbp+var_8] +000CD904: mov rdi, rax +000CD907: call __ZNSt11_Tuple_implILm2EJEEC2Ev; std::_Tuple_impl<2ul>::_Tuple_impl(void) +000CD90C: mov rax, [rbp+var_10] +000CD910: mov rdi, rax +000CD913: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD918: mov rdx, rax +000CD91B: mov rax, [rbp+var_8] +000CD91F: mov rsi, rdx +000CD922: mov rdi, rax +000CD925: call __ZNSt10_Head_baseILm1EP21EloTCMHeartBeatDeviceLb0EEC2IKS1_EEOT_; std::_Head_base<1ul,EloTCMHeartBeatDevice *,false>::_Head_base(EloTCMHeartBeatDevice * const &&) +000CD92A: leave +000CD92B: retn + +### FUNC 000CD92C - 000CD97F (83 bytes) name=_ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_ +000CD92C: push rbp; Alternative name is 'std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>::_Tuple_impl, void>(std::_Mem_fn &&, void &&)' +000CD92D: mov rbp, rsp +000CD930: sub rsp, 20h +000CD934: mov [rbp+var_8], rdi +000CD938: mov [rbp+var_10], rsi +000CD93C: mov [rbp+var_18], rdx +000CD940: mov rax, [rbp+var_18] +000CD944: mov rdi, rax +000CD947: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD94C: mov rdx, rax +000CD94F: mov rax, [rbp+var_8] +000CD953: mov rsi, rdx +000CD956: mov rdi, rax +000CD959: call __ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEEC2IKS1_JEvEEOT_DpOT0_ +000CD95E: mov rax, [rbp+var_10] +000CD962: mov rdi, rax +000CD965: call __ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000CD96A: mov rdx, [rbp+var_8] +000CD96E: add rdx, 8 +000CD972: mov rsi, rax +000CD975: mov rdi, rdx +000CD978: call __ZNSt10_Head_baseILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEELb0EEC2IS4_EEOT_; std::_Head_base<0ul,std::_Mem_fn,false>::_Head_base>(std::_Mem_fn &&) +000CD97D: leave +000CD97E: retn + +### FUNC 000CD980 - 000CD9CC (76 bytes) name=_ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_ +000CD980: push rbp; Alternative name is 'std::tuple, EloTCMHeartBeatDevice*>::tuple, EloTCMHeartBeatDevice* const, void>(std::_Mem_fn &&, EloTCMHeartBeatDevice* const &&)' +000CD981: mov rbp, rsp +000CD984: push rbx +000CD985: sub rsp, 28h +000CD989: mov [rbp+var_18], rdi +000CD98D: mov [rbp+var_20], rsi +000CD991: mov [rbp+var_28], rdx +000CD995: mov rax, [rbp+var_28] +000CD999: mov rdi, rax +000CD99C: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD9A1: mov rbx, rax +000CD9A4: mov rax, [rbp+var_20] +000CD9A8: mov rdi, rax +000CD9AB: call __ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000CD9B0: mov rcx, rax +000CD9B3: mov rax, [rbp+var_18] +000CD9B7: mov rdx, rbx +000CD9BA: mov rsi, rcx +000CD9BD: mov rdi, rax +000CD9C0: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_JKS5_EvEEOT_DpOT0_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>::_Tuple_impl,EloTCMHeartBeatDevice* const,void>(std::_Mem_fn &&,EloTCMHeartBeatDevice* const &&) +000CD9C5: add rsp, 28h +000CD9C9: pop rbx +000CD9CA: pop rbp +000CD9CB: retn + +### FUNC 000CD9CC - 000CDA18 (76 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IJKS5_EvEEOS4_DpOT_ +000CD9CC: push rbp; Alternative name is 'std::_Bind_simple ()(EloTCMHeartBeatDevice*)>::_Bind_simple(std::_Mem_fn&&, EloTCMHeartBeatDevice* const &&)' +000CD9CD: mov rbp, rsp +000CD9D0: push rbx +000CD9D1: sub rsp, 28h +000CD9D5: mov [rbp+var_18], rdi +000CD9D9: mov [rbp+var_20], rsi +000CD9DD: mov [rbp+var_28], rdx +000CD9E1: mov rax, [rbp+var_28] +000CD9E5: mov rdi, rax +000CD9E8: call __ZSt7forwardIKP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS3_E4typeE; std::forward(std::remove_reference::type &) +000CD9ED: mov rbx, rax +000CD9F0: mov rax, [rbp+var_20] +000CD9F4: mov rdi, rax +000CD9F7: call __ZSt4moveIRSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEONSt16remove_referenceIT_E4typeEOS7_; std::move &>(std::_Mem_fn &&&) +000CD9FC: mov rcx, rax +000CD9FF: mov rax, [rbp+var_18] +000CDA03: mov rdx, rbx +000CDA06: mov rsi, rcx +000CDA09: mov rdi, rax +000CDA0C: call __ZNSt5tupleIJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2IS4_KS5_vEEOT_OT0_; std::tuple,EloTCMHeartBeatDevice*>::tuple,EloTCMHeartBeatDevice* const,void>(std::_Mem_fn &&,EloTCMHeartBeatDevice* const &&) +000CDA11: add rsp, 28h +000CDA15: pop rbx +000CDA16: pop rbp +000CDA17: retn + +### FUNC 000CDA18 - 000CDA8D (117 bytes) name=_ZSt11make_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEJSA_EESt10shared_ptrIT_EDpOT0_ +000CDA18: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMHeartBeatDevice*)>>> std::make_shared ()(EloTCMHeartBeatDevice*)>>, std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&)' +000CDA19: mov rbp, rsp +000CDA1C: push rbx +000CDA1D: sub rsp, 28h +000CDA21: mov [rbp+var_28], rdi +000CDA25: mov [rbp+var_30], rsi +000CDA29: mov rax, [rbp+var_30] +000CDA2D: mov rdi, rax +000CDA30: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDA35: mov rbx, rax +000CDA38: lea rax, [rbp+var_11] +000CDA3C: mov rdi, rax +000CDA3F: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::allocator(void) +000CDA44: mov rax, [rbp+var_28] +000CDA48: lea rcx, [rbp+var_11] +000CDA4C: mov rdx, rbx +000CDA4F: mov rsi, rcx +000CDA52: mov rdi, rax +000CDA55: call __ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_; std::allocate_shared ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CDA5A: lea rax, [rbp+var_11] +000CDA5E: mov rdi, rax +000CDA61: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CDA66: jmp short loc_CDA82 +000CDA68: mov rbx, rax +000CDA6B: lea rax, [rbp+var_11] +000CDA6F: mov rdi, rax +000CDA72: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CDA77: mov rax, rbx +000CDA7A: mov rdi, rax; struct _Unwind_Exception * +000CDA7D: call __Unwind_Resume +000CDA82: mov rax, [rbp+var_28] +000CDA86: add rsp, 28h +000CDA8A: pop rbx +000CDA8B: pop rbp +000CDA8C: retn + +### FUNC 000CDA8E - 000CDAE4 (86 bytes) name=_ZNSt12__shared_ptrINSt6thread10_Impl_baseELN9__gnu_cxx12_Lock_policyE2EEC2INS0_5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS9_EEEEvEEOS_IT_LS3_2EE +000CDA8E: push rbp; Alternative name is 'std::__shared_ptr::__shared_ptr ()(EloTCMHeartBeatDevice*)>>, void>(std::__shared_ptr&& ()(EloTCMHeartBeatDevice*)>>, (__gnu_cxx::_Lock_policy)2>)' +000CDA8F: mov rbp, rsp +000CDA92: sub rsp, 10h +000CDA96: mov [rbp+var_8], rdi +000CDA9A: mov [rbp+var_10], rsi +000CDA9E: mov rax, [rbp+var_10] +000CDAA2: mov rdx, [rax] +000CDAA5: mov rax, [rbp+var_8] +000CDAA9: mov [rax], rdx +000CDAAC: mov rax, [rbp+var_8] +000CDAB0: add rax, 8 +000CDAB4: mov rdi, rax +000CDAB7: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(void) +000CDABC: mov rax, [rbp+var_10] +000CDAC0: lea rdx, [rax+8] +000CDAC4: mov rax, [rbp+var_8] +000CDAC8: add rax, 8 +000CDACC: mov rsi, rdx +000CDACF: mov rdi, rax +000CDAD2: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE7_M_swapERS2_; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::_M_swap(std::__shared_count<(__gnu_cxx::_Lock_policy)2>&) +000CDAD7: mov rax, [rbp+var_10] +000CDADB: mov qword ptr [rax], 0 +000CDAE2: leave +000CDAE3: retn + +### FUNC 000CDAE4 - 000CDAEE (10 bytes) name=_ZNSt14unary_functionIP21EloTCMHeartBeatDevicevEC2Ev +000CDAE4: push rbp; Alternative name is 'std::unary_function::unary_function(void)' +000CDAE5: mov rbp, rsp +000CDAE8: mov [rbp+var_8], rdi +000CDAEC: pop rbp +000CDAED: retn + +### FUNC 000CDAEE - 000CDB08 (26 bytes) name=_ZNSt31_Maybe_unary_or_binary_functionIvJP21EloTCMHeartBeatDeviceEEC2Ev +000CDAEE: push rbp; Alternative name is 'std::_Maybe_unary_or_binary_function::_Maybe_unary_or_binary_function(void)' +000CDAEF: mov rbp, rsp +000CDAF2: sub rsp, 10h +000CDAF6: mov [rbp+var_8], rdi +000CDAFA: mov rax, [rbp+var_8] +000CDAFE: mov rdi, rax +000CDB01: call __ZNSt14unary_functionIP21EloTCMHeartBeatDevicevEC2Ev; std::unary_function::unary_function(void) +000CDB06: leave +000CDB07: retn + +### FUNC 000CDB08 - 000CDB46 (62 bytes) name=_ZNSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEC2ES2_ +000CDB08: push rbp; Alternative name is 'std::_Mem_fn::_Mem_fn(void (EloTCMHeartBeatDevice::*)(void))' +000CDB09: mov rbp, rsp +000CDB0C: sub rsp, 20h +000CDB10: mov [rbp+var_8], rdi +000CDB14: mov rax, rsi +000CDB17: mov rcx, rdx +000CDB1A: mov rdx, rcx +000CDB1D: mov [rbp+var_20], rax +000CDB21: mov [rbp+var_18], rdx +000CDB25: mov rax, [rbp+var_8] +000CDB29: mov rdi, rax +000CDB2C: call __ZNSt31_Maybe_unary_or_binary_functionIvJP21EloTCMHeartBeatDeviceEEC2Ev; std::_Maybe_unary_or_binary_function::_Maybe_unary_or_binary_function(void) +000CDB31: mov rcx, [rbp+var_8] +000CDB35: mov rax, [rbp+var_20] +000CDB39: mov rdx, [rbp+var_18] +000CDB3D: mov [rcx], rax +000CDB40: mov [rcx+8], rdx +000CDB44: leave +000CDB45: retn + +### FUNC 000CDB46 - 000CDB60 (26 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2Ev +000CDB46: push rbp; Alternative name is 'std::allocator ()(EloTCMHeartBeatDevice*)>>>::allocator(void)' +000CDB47: mov rbp, rsp +000CDB4A: sub rsp, 10h +000CDB4E: mov [rbp+var_8], rdi +000CDB52: mov rax, [rbp+var_8] +000CDB56: mov rdi, rax +000CDB59: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2Ev; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::new_allocator(void) +000CDB5E: leave +000CDB5F: retn + +### FUNC 000CDB60 - 000CDB7A (26 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev +000CDB60: push rbp; Alternative name is 'std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator()' +000CDB61: mov rbp, rsp +000CDB64: sub rsp, 10h +000CDB68: mov [rbp+var_8], rdi +000CDB6C: mov rax, [rbp+var_8] +000CDB70: mov rdi, rax +000CDB73: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEED2Ev; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::~new_allocator() +000CDB78: leave +000CDB79: retn + +### FUNC 000CDB7A - 000CDBBF (69 bytes) name=_ZSt15allocate_sharedINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_EJSA_EESt10shared_ptrIT_ERKT0_DpOT1_ +000CDB7A: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMHeartBeatDevice*)>>> std::allocate_shared ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&, std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&)' +000CDB7B: mov rbp, rsp +000CDB7E: push rbx +000CDB7F: sub rsp, 38h +000CDB83: mov [rbp+var_28], rdi +000CDB87: mov [rbp+var_30], rsi +000CDB8B: mov [rbp+var_38], rdx +000CDB8F: mov rax, [rbp+var_38] +000CDB93: mov rdi, rax +000CDB96: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDB9B: mov rdx, rax +000CDB9E: mov rcx, [rbp+var_30] +000CDBA2: mov rax, [rbp+var_28] +000CDBA6: mov [rsp+40h+var_40], bl +000CDBA9: mov rsi, rcx +000CDBAC: mov rdi, rax +000CDBAF: call __ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_; std::shared_ptr ()(EloTCMHeartBeatDevice*)>>>::shared_ptr ()(EloTCMHeartBeatDevice*)>>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_make_shared_tag,std::allocator ()(EloTCMHeartBeatDevice*)>>> const&,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CDBB4: mov rax, [rbp+var_28] +000CDBB8: add rsp, 38h +000CDBBC: pop rbx +000CDBBD: pop rbp +000CDBBE: retn + +### FUNC 000CDBC0 - 000CDBCA (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2Ev +000CDBC0: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::new_allocator(void)' +000CDBC1: mov rbp, rsp +000CDBC4: mov [rbp+var_8], rdi +000CDBC8: pop rbp +000CDBC9: retn + +### FUNC 000CDBCA - 000CDBD4 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEED2Ev +000CDBCA: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::~new_allocator()' +000CDBCB: mov rbp, rsp +000CDBCE: mov [rbp+var_8], rdi +000CDBD2: pop rbp +000CDBD3: retn + +### FUNC 000CDBD4 - 000CDC15 (65 bytes) name=_ZNSt10shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000CDBD4: push rbp; Alternative name is 'std::shared_ptr ()(EloTCMHeartBeatDevice*)>>>::shared_ptr ()(EloTCMHeartBeatDevice*)>>>, std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_make_shared_tag, std::allocator ()(EloTCMHeartBeatDevice*)>>> const&, std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&)' +000CDBD5: mov rbp, rsp +000CDBD8: push rbx +000CDBD9: sub rsp, 28h +000CDBDD: mov [rbp+var_18], rdi +000CDBE1: mov [rbp+var_20], rsi +000CDBE5: mov [rbp+var_28], rdx +000CDBE9: mov rax, [rbp+var_28] +000CDBED: mov rdi, rax +000CDBF0: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDBF5: mov rdx, rax +000CDBF8: mov rax, [rbp+var_18] +000CDBFC: mov rcx, [rbp+var_20] +000CDC00: mov [rsp+30h+var_30], bl +000CDC03: mov rsi, rcx +000CDC06: mov rdi, rax +000CDC09: call __ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_; std::__shared_ptr ()(EloTCMHeartBeatDevice*)>>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr ()(EloTCMHeartBeatDevice*)>>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_make_shared_tag,std::allocator ()(EloTCMHeartBeatDevice*)>>> const&,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CDC0E: add rsp, 28h +000CDC12: pop rbx +000CDC13: pop rbp +000CDC14: retn + +### FUNC 000CDC16 - 000CDCBA (164 bytes) name=_ZNSt12__shared_ptrINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEELN9__gnu_cxx12_Lock_policyE2EEC2ISaISB_EJSA_EEESt19_Sp_make_shared_tagRKT_DpOT0_ +000CDC16: push rbp; Alternative name is 'std::__shared_ptr ()(EloTCMHeartBeatDevice*)>>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr ()(EloTCMHeartBeatDevice*)>>>, std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_make_shared_tag, std::allocator ()(EloTCMHeartBeatDevice*)>>> const&, std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&)' +000CDC17: mov rbp, rsp +000CDC1A: push rbx +000CDC1B: sub rsp, 38h +000CDC1F: mov [rbp+var_28], rdi +000CDC23: mov [rbp+var_30], rsi +000CDC27: mov [rbp+var_38], rdx +000CDC2B: mov rax, [rbp+var_28] +000CDC2F: mov qword ptr [rax], 0 +000CDC36: mov rax, [rbp+var_38] +000CDC3A: mov rdi, rax +000CDC3D: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDC42: mov rdx, rax +000CDC45: mov rax, [rbp+var_28] +000CDC49: lea rdi, [rax+8] +000CDC4D: mov rax, [rbp+var_30] +000CDC51: mov [rsp+40h+var_40], bl +000CDC54: mov rcx, rdx +000CDC57: mov rdx, rax +000CDC5A: mov esi, 0 +000CDC5F: call __ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_make_shared_tag,std::thread::_Impl ()(EloTCMHeartBeatDevice*)>> *,std::allocator ()(EloTCMHeartBeatDevice*)>>> const&,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CDC64: mov rax, [rbp+var_28] +000CDC68: lea rdx, [rax+8] +000CDC6C: mov rax, cs:_ZTISt19_Sp_make_shared_tag_ptr +000CDC73: mov rsi, rax +000CDC76: mov rdi, rdx +000CDC79: call __ZNKSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) +000CDC7E: mov [rbp+var_18], rax +000CDC82: mov rax, [rbp+var_28] +000CDC86: mov rdx, [rbp+var_18] +000CDC8A: mov [rax], rdx +000CDC8D: mov rax, [rbp+var_28] +000CDC91: mov rdx, [rax] +000CDC94: mov rax, [rbp+var_28] +000CDC98: mov rax, [rax] +000CDC9B: mov rcx, [rbp+var_28] +000CDC9F: add rcx, 8 +000CDCA3: mov rsi, rax +000CDCA6: mov rdi, rcx +000CDCA9: mov eax, 0 +000CDCAE: call __ZSt32__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEvRKSt14__shared_countIXT_EEz; std::__enable_shared_from_this_helper<(__gnu_cxx::_Lock_policy)2>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&,...) +000CDCB3: add rsp, 38h +000CDCB7: pop rbx +000CDCB8: pop rbp +000CDCB9: retn + +### FUNC 000CDCBA - 000CDCC8 (14 bytes) name=_ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_ +000CDCBA: push rbp +000CDCBB: mov rbp, rsp +000CDCBE: mov [rbp+var_8], rdi +000CDCC2: mov rax, [rbp+var_8] +000CDCC6: pop rbp +000CDCC7: retn + +### FUNC 000CDCC8 - 000CDCD6 (14 bytes) name=_ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE +000CDCC8: push rbp +000CDCC9: mov rbp, rsp +000CDCCC: mov [rbp+var_8], rdi +000CDCD0: mov rax, [rbp+var_8] +000CDCD4: pop rbp +000CDCD5: retn + +### FUNC 000CDCD6 - 000CDDBC (230 bytes) name=_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2INSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS8_EEEESaISF_EJSE_EEESt19_Sp_make_shared_tagPT_RKT0_DpOT1_ +000CDCD6: push rbp; Alternative name is 'std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_make_shared_tag, std::thread::_Impl ()(EloTCMHeartBeatDevice*)>> *, std::allocator ()(EloTCMHeartBeatDevice*)>>> const&, std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&)' +000CDCD7: mov rbp, rsp +000CDCDA: push rbx +000CDCDB: sub rsp, 38h +000CDCDF: mov [rbp+var_28], rdi +000CDCE3: mov [rbp+var_30], rsi +000CDCE7: mov [rbp+var_38], rdx +000CDCEB: mov [rbp+var_40], rcx +000CDCEF: mov rax, [rbp+var_28] +000CDCF3: mov qword ptr [rax], 0 +000CDCFA: mov rdx, [rbp+var_38] +000CDCFE: lea rax, [rbp+var_19] +000CDD02: mov rsi, rdx +000CDD05: mov rdi, rax +000CDD08: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E; std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocator ()(EloTCMHeartBeatDevice*)>>>(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&) +000CDD0D: lea rax, [rbp+var_19] +000CDD11: mov esi, 1 +000CDD16: mov rdi, rax +000CDD19: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::allocate(std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,ulong) +000CDD1E: mov [rbp+var_18], rax +000CDD22: mov rax, [rbp+var_40] +000CDD26: mov rdi, rax +000CDD29: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDD2E: mov rbx, rax +000CDD31: mov rax, [rbp+var_38] +000CDD35: mov rdi, rax +000CDD38: call __ZSt4moveIRKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEONSt16remove_referenceIT_E4typeEOSG_; std::move ()(EloTCMHeartBeatDevice*)>>> const&>(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&&&) +000CDD3D: mov rdx, rax +000CDD40: mov rsi, [rbp+var_18] +000CDD44: lea rax, [rbp+var_19] +000CDD48: mov rcx, rbx +000CDD4B: mov rdi, rax +000CDD4E: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000CDD53: mov rax, [rbp+var_28] +000CDD57: mov rdx, [rbp+var_18] +000CDD5B: mov [rax], rdx +000CDD5E: lea rax, [rbp+var_19] +000CDD62: mov rdi, rax +000CDD65: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000CDD6A: jmp short loc_CDDB5 +000CDD6C: mov rdi, rax; void * +000CDD6F: call ___cxa_begin_catch +000CDD74: mov rcx, [rbp+var_18] +000CDD78: lea rax, [rbp+var_19] +000CDD7C: mov edx, 1 +000CDD81: mov rsi, rcx +000CDD84: mov rdi, rax +000CDD87: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::deallocate(std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000CDD8C: call ___cxa_rethrow +000CDD91: mov rbx, rax +000CDD94: call ___cxa_end_catch +000CDD99: jmp short loc_CDD9E +000CDD9B: mov rbx, rax +000CDD9E: lea rax, [rbp+var_19] +000CDDA2: mov rdi, rax +000CDDA5: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000CDDAA: mov rax, rbx +000CDDAD: mov rdi, rax; struct _Unwind_Exception * +000CDDB0: call __Unwind_Resume +000CDDB5: add rsp, 38h +000CDDB9: pop rbx +000CDDBA: pop rbp +000CDDBB: retn + +### FUNC 000CDDBC - 000CDDDA (30 bytes) name=_ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E +000CDDBC: push rbp; Alternative name is 'std::allocator ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::allocator ()(EloTCMHeartBeatDevice*)>>>(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&)' +000CDDBD: mov rbp, rsp +000CDDC0: sub rsp, 10h +000CDDC4: mov [rbp+var_8], rdi +000CDDC8: mov [rbp+var_10], rsi +000CDDCC: mov rax, [rbp+var_8] +000CDDD0: mov rdi, rax +000CDDD3: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::new_allocator(void) +000CDDD8: leave +000CDDD9: retn + +### FUNC 000CDDDA - 000CDDF4 (26 bytes) name=_ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev +000CDDDA: push rbp; Alternative name is 'std::allocator ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::~allocator()' +000CDDDB: mov rbp, rsp +000CDDDE: sub rsp, 10h +000CDDE2: mov [rbp+var_8], rdi +000CDDE6: mov rax, [rbp+var_8] +000CDDEA: mov rdi, rax +000CDDED: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~new_allocator() +000CDDF2: leave +000CDDF3: retn + +### FUNC 000CDDF4 - 000CDE1E (42 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE8allocateERSH_m +000CDDF4: push rbp +000CDDF5: mov rbp, rsp +000CDDF8: sub rsp, 10h +000CDDFC: mov [rbp+var_8], rdi +000CDE00: mov [rbp+var_10], rsi +000CDE04: mov rcx, [rbp+var_10] +000CDE08: mov rax, [rbp+var_8] +000CDE0C: mov edx, 0 +000CDE11: mov rsi, rcx +000CDE14: mov rdi, rax +000CDE17: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocate(ulong,void const*) +000CDE1C: leave +000CDE1D: retn + +### FUNC 000CDE1E - 000CDE6F (81 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_JKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_ +000CDE1E: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE9constructISG_IKSD_SB_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSH_PT_DpOSL_' +000CDE1F: mov rbp, rsp +000CDE22: push rbx +000CDE23: sub rsp, 28h +000CDE27: mov [rbp+var_18], rdi +000CDE2B: mov [rbp+var_20], rsi +000CDE2F: mov [rbp+var_28], rdx +000CDE33: mov [rbp+var_30], rcx +000CDE37: mov rax, [rbp+var_30] +000CDE3B: mov rdi, rax +000CDE3E: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDE43: mov rbx, rax +000CDE46: mov rax, [rbp+var_28] +000CDE4A: mov rdi, rax +000CDE4D: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>> const>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>> const>::type &) +000CDE52: mov rdx, rax +000CDE55: mov rsi, [rbp+var_20] +000CDE59: mov rax, [rbp+var_18] +000CDE5D: mov rcx, rbx +000CDE60: mov rdi, rax +000CDE63: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::_S_construct ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>,std::allocator ()(EloTCMHeartBeatDevice*)>>> const,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,std::allocator ()(EloTCMHeartBeatDevice*)>>> const,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&) +000CDE68: add rsp, 28h +000CDE6C: pop rbx +000CDE6D: pop rbp +000CDE6E: retn + +### FUNC 000CDE6F - 000CDE9C (45 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m +000CDE6F: push rbp +000CDE70: mov rbp, rsp +000CDE73: sub rsp, 20h +000CDE77: mov [rbp+var_8], rdi +000CDE7B: mov [rbp+var_10], rsi +000CDE7F: mov [rbp+var_18], rdx +000CDE83: mov rdx, [rbp+var_18] +000CDE87: mov rcx, [rbp+var_10] +000CDE8B: mov rax, [rbp+var_8] +000CDE8F: mov rsi, rcx +000CDE92: mov rdi, rax +000CDE95: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::deallocate(std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000CDE9A: leave +000CDE9B: retn + +### FUNC 000CDE9C - 000CDEA6 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEEC2Ev +000CDE9C: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::new_allocator(void)' +000CDE9D: mov rbp, rsp +000CDEA0: mov [rbp+var_8], rdi +000CDEA4: pop rbp +000CDEA5: retn + +### FUNC 000CDEA6 - 000CDEB0 (10 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEED2Ev +000CDEA6: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>>::~new_allocator()' +000CDEA7: mov rbp, rsp +000CDEAA: mov [rbp+var_8], rdi +000CDEAE: pop rbp +000CDEAF: retn + +### FUNC 000CDEB0 - 000CDEFC (76 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8allocateEmPKv +000CDEB0: push rbp +000CDEB1: mov rbp, rsp +000CDEB4: sub rsp, 20h +000CDEB8: mov [rbp+var_8], rdi +000CDEBC: mov [rbp+var_10], rsi +000CDEC0: mov [rbp+var_18], rdx +000CDEC4: mov rax, [rbp+var_8] +000CDEC8: mov rdi, rax +000CDECB: call __ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::max_size(void) +000CDED0: cmp rax, [rbp+var_10] +000CDED4: setb al +000CDED7: test al, al +000CDED9: jz short loc_CDEE0 +000CDEDB: call __ZSt17__throw_bad_allocv; std::__throw_bad_alloc(void) +000CDEE0: mov rdx, [rbp+var_10] +000CDEE4: mov rax, rdx +000CDEE7: shl rax, 3 +000CDEEB: add rax, rdx +000CDEEE: shl rax, 3 +000CDEF2: mov rdi, rax; unsigned __int64 +000CDEF5: call __Znwm; operator new(ulong) +000CDEFA: leave +000CDEFB: retn + +### FUNC 000CDEFC - 000CDF4D (81 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_JKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_ +000CDEFC: push rbp; Alternative name is '_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE12_S_constructISG_IKSD_SB_EEENSt9enable_ifIXsrNSI_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSH_PSN_DpOSO_' +000CDEFD: mov rbp, rsp +000CDF00: push rbx +000CDF01: sub rsp, 28h +000CDF05: mov [rbp+var_18], rdi +000CDF09: mov [rbp+var_20], rsi +000CDF0D: mov [rbp+var_28], rdx +000CDF11: mov [rbp+var_30], rcx +000CDF15: mov rax, [rbp+var_30] +000CDF19: mov rdi, rax +000CDF1C: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDF21: mov rbx, rax +000CDF24: mov rax, [rbp+var_28] +000CDF28: mov rdi, rax +000CDF2B: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>> const>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>> const>::type &) +000CDF30: mov rdx, rax +000CDF33: mov rsi, [rbp+var_20] +000CDF37: mov rax, [rbp+var_18] +000CDF3B: mov rcx, rbx +000CDF3E: mov rdi, rax +000CDF41: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::construct ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>,std::allocator ()(EloTCMHeartBeatDevice*)>>> const,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2> *,std::allocator ()(EloTCMHeartBeatDevice*)>>> const,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CDF46: add rsp, 28h +000CDF4A: pop rbx +000CDF4B: pop rbp +000CDF4C: retn + +### FUNC 000CDF4E - 000CDF70 (34 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE10deallocateEPSG_m +000CDF4E: push rbp +000CDF4F: mov rbp, rsp +000CDF52: sub rsp, 20h +000CDF56: mov [rbp+var_8], rdi +000CDF5A: mov [rbp+var_10], rsi +000CDF5E: mov [rbp+var_18], rdx +000CDF62: mov rax, [rbp+var_10] +000CDF66: mov rdi, rax; void * +000CDF69: call __ZdlPv; operator delete(void *) +000CDF6E: leave +000CDF6F: retn + +### FUNC 000CDF70 - 000CDF84 (20 bytes) name=_ZNK9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE8max_sizeEv +000CDF70: push rbp +000CDF71: mov rbp, rsp +000CDF74: mov [rbp+var_8], rdi +000CDF78: mov rax, 38E38E38E38E38Eh +000CDF82: pop rbp +000CDF83: retn + +### FUNC 000CDF84 - 000CE03E (186 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_JKSE_SC_EEEvPT_DpOT0_ +000CDF84: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE9constructISG_IKSE_SC_EEEvPT_DpOT0_' +000CDF85: mov rbp, rsp +000CDF88: push r14 +000CDF8A: push r13 +000CDF8C: push r12 +000CDF8E: push rbx +000CDF8F: sub rsp, 30h +000CDF93: mov [rbp+var_38], rdi +000CDF97: mov [rbp+var_40], rsi +000CDF9B: mov [rbp+var_48], rdx +000CDF9F: mov [rbp+var_50], rcx +000CDFA3: mov rax, [rbp+var_48] +000CDFA7: mov rdi, rax +000CDFAA: call __ZSt7forwardIKSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEEOT_RNSt16remove_referenceISE_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>> const>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>> const>::type &) +000CDFAF: mov rdx, rax +000CDFB2: lea rax, [rbp+var_21] +000CDFB6: mov rsi, rdx +000CDFB9: mov rdi, rax +000CDFBC: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB_; std::allocator ()(EloTCMHeartBeatDevice*)>>>::allocator(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&) +000CDFC1: lea r13, [rbp+var_21] +000CDFC5: mov rax, [rbp+var_50] +000CDFC9: mov rdi, rax +000CDFCC: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CDFD1: mov r14, rax +000CDFD4: mov r12, [rbp+var_40] +000CDFD8: mov rsi, r12; void * +000CDFDB: mov edi, 48h ; 'H'; unsigned __int64 +000CDFE0: call __ZnwmPv; operator new(ulong,void *) +000CDFE5: mov rbx, rax +000CDFE8: test rbx, rbx +000CDFEB: jz short loc_CDFFB +000CDFED: mov rdx, r14 +000CDFF0: mov rsi, r13 +000CDFF3: mov rdi, rbx +000CDFF6: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_; std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>(std::allocator ()(EloTCMHeartBeatDevice*)>>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CDFFB: lea rax, [rbp+var_21] +000CDFFF: mov rdi, rax +000CE002: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CE007: jmp short loc_CE031 +000CE009: mov r13, rax +000CE00C: mov rsi, r12; void * +000CE00F: mov rdi, rbx; void * +000CE012: call __ZdlPvS_; operator delete(void *,void *) +000CE017: mov rbx, r13 +000CE01A: lea rax, [rbp+var_21] +000CE01E: mov rdi, rax +000CE021: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CE026: mov rax, rbx +000CE029: mov rdi, rax; struct _Unwind_Exception * +000CE02C: call __Unwind_Resume +000CE031: add rsp, 30h +000CE035: pop rbx +000CE036: pop r12 +000CE038: pop r13 +000CE03A: pop r14 +000CE03C: pop rbp +000CE03D: retn + +### FUNC 000CE03E - 000CE063 (37 bytes) name=_ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB_ +000CE03E: push rbp; Alternative name is 'std::allocator ()(EloTCMHeartBeatDevice*)>>>::allocator(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&)' +000CE03F: mov rbp, rsp +000CE042: sub rsp, 10h +000CE046: mov [rbp+var_8], rdi +000CE04A: mov [rbp+var_10], rsi +000CE04E: mov rdx, [rbp+var_10] +000CE052: mov rax, [rbp+var_8] +000CE056: mov rsi, rdx +000CE059: mov rdi, rax +000CE05C: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2ERKSD_; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::new_allocator(__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>> const&) +000CE061: leave +000CE062: retn + +### FUNC 000CE064 - 000CE07E (26 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev +000CE064: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl()' +000CE065: mov rbp, rsp +000CE068: sub rsp, 10h +000CE06C: mov [rbp+var_8], rdi +000CE070: mov rax, [rbp+var_8] +000CE074: mov rdi, rax +000CE077: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev_0; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CE07C: leave +000CE07D: retn + +### FUNC 000CE07E - 000CE161 (227 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEC2IJSA_EEESC_DpOT_ +000CE07E: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>(std::allocator ()(EloTCMHeartBeatDevice*)>>>, std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&)' +000CE07F: mov rbp, rsp +000CE082: push rbx +000CE083: sub rsp, 38h +000CE087: mov [rbp+var_28], rdi +000CE08B: mov [rbp+var_30], rsi +000CE08F: mov [rbp+var_38], rdx +000CE093: mov rax, [rbp+var_28] +000CE097: mov rdi, rax +000CE09A: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EEC2Ev; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_Sp_counted_base(void) +000CE09F: mov rax, [rbp+var_28] +000CE0A3: mov rdx, cs:_ZTVSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE_ptr +000CE0AA: lea rdx, [rdx+10h] +000CE0AE: mov [rax], rdx +000CE0B1: mov rdx, [rbp+var_30] +000CE0B5: lea rax, [rbp+var_11] +000CE0B9: mov rsi, rdx +000CE0BC: mov rdi, rax +000CE0BF: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB_; std::allocator ()(EloTCMHeartBeatDevice*)>>>::allocator(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&) +000CE0C4: mov rax, [rbp+var_28] +000CE0C8: lea rdx, [rax+10h] +000CE0CC: lea rax, [rbp+var_11] +000CE0D0: mov rsi, rax +000CE0D3: mov rdi, rdx +000CE0D6: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_; std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::_Impl(std::allocator ()(EloTCMHeartBeatDevice*)>>>) +000CE0DB: lea rax, [rbp+var_11] +000CE0DF: mov rdi, rax +000CE0E2: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CE0E7: mov rax, [rbp+var_28] +000CE0EB: lea rdx, [rax+18h] +000CE0EF: mov rax, [rbp+var_28] +000CE0F3: mov [rax+10h], rdx +000CE0F7: mov rax, [rbp+var_38] +000CE0FB: mov rdi, rax +000CE0FE: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CE103: mov rdx, rax +000CE106: mov rax, [rbp+var_28] +000CE10A: mov rcx, [rax+10h] +000CE10E: mov rax, [rbp+var_30] +000CE112: mov rsi, rcx +000CE115: mov rdi, rax +000CE118: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000CE11D: jmp short loc_CE15A +000CE11F: mov rbx, rax +000CE122: lea rax, [rbp+var_11] +000CE126: mov rdi, rax +000CE129: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>>::~allocator() +000CE12E: jmp short loc_CE143 +000CE130: mov rbx, rax +000CE133: mov rax, [rbp+var_28] +000CE137: add rax, 10h +000CE13B: mov rdi, rax +000CE13E: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl() +000CE143: mov rax, [rbp+var_28] +000CE147: mov rdi, rax +000CE14A: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000CE14F: mov rax, rbx +000CE152: mov rdi, rax; struct _Unwind_Exception * +000CE155: call __Unwind_Resume +000CE15A: add rsp, 38h +000CE15E: pop rbx +000CE15F: pop rbp +000CE160: retn + +### FUNC 000CE162 - 000CE170 (14 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEEC2ERKSD_ +000CE162: push rbp; Alternative name is '__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::new_allocator(__gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>> const&)' +000CE163: mov rbp, rsp +000CE166: mov [rbp+var_8], rdi +000CE16A: mov [rbp+var_10], rsi +000CE16E: pop rbp +000CE16F: retn + +### FUNC 000CE170 - 000CE1A0 (48 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplC2ESC_ +000CE170: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::_Impl::_Impl(std::allocator ()(EloTCMHeartBeatDevice*)>>>)' +000CE171: mov rbp, rsp +000CE174: sub rsp, 10h +000CE178: mov [rbp+var_8], rdi +000CE17C: mov [rbp+var_10], rsi +000CE180: mov rdx, [rbp+var_10] +000CE184: mov rax, [rbp+var_8] +000CE188: mov rsi, rdx +000CE18B: mov rdi, rax +000CE18E: call __ZNSaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEEEC2ERKSB__0; std::allocator ()(EloTCMHeartBeatDevice*)>>>::allocator(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&) +000CE193: mov rax, [rbp+var_8] +000CE197: mov qword ptr [rax], 0 +000CE19E: leave +000CE19F: retn + +### FUNC 000CE1A0 - 000CE1D8 (56 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE9constructISB_JSA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_ +000CE1A0: push rbp; Alternative name is '_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE9constructISB_ISA_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERSC_PT_DpOSF_' +000CE1A1: mov rbp, rsp +000CE1A4: sub rsp, 20h +000CE1A8: mov [rbp+var_8], rdi +000CE1AC: mov [rbp+var_10], rsi +000CE1B0: mov [rbp+var_18], rdx +000CE1B4: mov rax, [rbp+var_18] +000CE1B8: mov rdi, rax +000CE1BB: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CE1C0: mov rdx, rax +000CE1C3: mov rcx, [rbp+var_10] +000CE1C7: mov rax, [rbp+var_8] +000CE1CB: mov rsi, rcx +000CE1CE: mov rdi, rax +000CE1D1: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>>>::_S_construct ()(EloTCMHeartBeatDevice*)>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::allocator ()(EloTCMHeartBeatDevice*)>>>&,std::thread::_Impl ()(EloTCMHeartBeatDevice*)>>*,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&) +000CE1D6: leave +000CE1D7: retn + +### FUNC 000CE1D8 - 000CE210 (56 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE12_S_constructISB_JSA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_JDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_ +000CE1D8: push rbp; Alternative name is '_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE12_S_constructISB_ISA_EEENSt9enable_ifIXsrNSD_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERSC_PSH_DpOSI_' +000CE1D9: mov rbp, rsp +000CE1DC: sub rsp, 20h +000CE1E0: mov [rbp+var_8], rdi +000CE1E4: mov [rbp+var_10], rsi +000CE1E8: mov [rbp+var_18], rdx +000CE1EC: mov rax, [rbp+var_18] +000CE1F0: mov rdi, rax +000CE1F3: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CE1F8: mov rdx, rax +000CE1FB: mov rcx, [rbp+var_10] +000CE1FF: mov rax, [rbp+var_8] +000CE203: mov rsi, rcx +000CE206: mov rdi, rax +000CE209: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::construct ()(EloTCMHeartBeatDevice*)>>,std::_Bind_simple ()(EloTCMHeartBeatDevice*)>>(std::thread::_Impl ()(EloTCMHeartBeatDevice*)>> *,std::_Bind_simple ()(EloTCMHeartBeatDevice*)> &&) +000CE20E: leave +000CE20F: retn + +### FUNC 000CE210 - 000CE284 (116 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE9constructISC_JSB_EEEvPT_DpOT0_ +000CE210: push rbp; Alternative name is '_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE9constructISC_ISB_EEEvPT_DpOT0_' +000CE211: mov rbp, rsp +000CE214: push r13 +000CE216: push r12 +000CE218: push rbx +000CE219: sub rsp, 28h +000CE21D: mov [rbp+var_28], rdi +000CE221: mov [rbp+var_30], rsi +000CE225: mov [rbp+var_38], rdx +000CE229: mov rax, [rbp+var_38] +000CE22D: mov rdi, rax +000CE230: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CE235: mov r13, rax +000CE238: mov r12, [rbp+var_30] +000CE23C: mov rsi, r12; void * +000CE23F: mov edi, 30h ; '0'; unsigned __int64 +000CE244: call __ZnwmPv; operator new(ulong,void *) +000CE249: mov rbx, rax +000CE24C: test rbx, rbx +000CE24F: jz short loc_CE25E +000CE251: mov rsi, r13 +000CE254: mov rdi, rbx +000CE257: call __ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEC2EOS9_; std::thread::_Impl ()(EloTCMHeartBeatDevice*)>>::_Impl(std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&) +000CE25C: jmp short loc_CE279 +000CE25E: jmp short loc_CE279 +000CE260: mov r13, rax +000CE263: mov rsi, r12; void * +000CE266: mov rdi, rbx; void * +000CE269: call __ZdlPvS_; operator delete(void *,void *) +000CE26E: mov rax, r13 +000CE271: mov rdi, rax; struct _Unwind_Exception * +000CE274: call __Unwind_Resume +000CE279: add rsp, 28h +000CE27D: pop rbx +000CE27E: pop r12 +000CE280: pop r13 +000CE282: pop rbp +000CE283: retn + +### FUNC 000CE284 - 000CE2D3 (79 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEC2EOS9_ +000CE284: push rbp; Alternative name is 'std::thread::_Impl ()(EloTCMHeartBeatDevice*)>>::_Impl(std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&)' +000CE285: mov rbp, rsp +000CE288: sub rsp, 10h +000CE28C: mov [rbp+var_8], rdi +000CE290: mov [rbp+var_10], rsi +000CE294: mov rax, [rbp+var_8] +000CE298: mov rdi, rax; this +000CE29B: call __ZNSt6thread10_Impl_baseC2Ev; std::thread::_Impl_base::_Impl_base(void) +000CE2A0: mov rax, [rbp+var_8] +000CE2A4: mov rdx, cs:_ZTVNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEE_ptr +000CE2AB: lea rdx, [rdx+10h] +000CE2AF: mov [rax], rdx +000CE2B2: mov rax, [rbp+var_10] +000CE2B6: mov rdi, rax +000CE2B9: call __ZSt7forwardISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS2_EEEOT_RNSt16remove_referenceIS9_E4typeE; std::forward ()(EloTCMHeartBeatDevice*)>>(std::remove_reference ()(EloTCMHeartBeatDevice*)>>::type &) +000CE2BE: mov rdx, [rbp+var_8] +000CE2C2: add rdx, 18h +000CE2C6: mov rsi, rax +000CE2C9: mov rdi, rdx +000CE2CC: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEC2EOS7_; std::_Bind_simple ()(EloTCMHeartBeatDevice*)>::_Bind_simple(std::_Bind_simple ()(EloTCMHeartBeatDevice*)>&&) +000CE2D1: leave +000CE2D2: retn + +### FUNC 000CE2D4 - 000CE315 (65 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED2Ev +000CE2D4: push rbp; Alternative name is 'std::thread::_Impl ()(EloTCMHeartBeatDevice*)>>::~_Impl()' +000CE2D5: mov rbp, rsp +000CE2D8: sub rsp, 10h +000CE2DC: mov [rbp+var_8], rdi +000CE2E0: mov rax, [rbp+var_8] +000CE2E4: mov rdx, cs:_ZTVNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEEE_ptr +000CE2EB: lea rdx, [rdx+10h] +000CE2EF: mov [rax], rdx +000CE2F2: mov rax, [rbp+var_8] +000CE2F6: mov rdi, rax; this +000CE2F9: call __ZNSt6thread10_Impl_baseD2Ev_0; std::thread::_Impl_base::~_Impl_base() +000CE2FE: mov eax, 0 +000CE303: test eax, eax +000CE305: jz short locret_CE313 +000CE307: mov rax, [rbp+var_8] +000CE30B: mov rdi, rax; void * +000CE30E: call __ZdlPv; operator delete(void *) +000CE313: leave +000CE314: retn + +### FUNC 000CE316 - 000CE33C (38 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED0Ev +000CE316: push rbp +000CE317: mov rbp, rsp +000CE31A: sub rsp, 10h +000CE31E: mov [rbp+var_8], rdi +000CE322: mov rax, [rbp+var_8] +000CE326: mov rdi, rax +000CE329: call __ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEED2Ev; std::thread::_Impl ()(EloTCMHeartBeatDevice*)>>::~_Impl() +000CE32E: mov rax, [rbp+var_8] +000CE332: mov rdi, rax; void * +000CE335: call __ZdlPv; operator delete(void *) +000CE33A: leave +000CE33B: retn + +### FUNC 000CE33C - 000CE38D (81 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev +000CE33C: push rbp; Alternative name is 'std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>, std::allocator ()(EloTCMHeartBeatDevice*)>>>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()' +000CE33D: mov rbp, rsp +000CE340: sub rsp, 10h +000CE344: mov [rbp+var_8], rdi +000CE348: mov rax, [rbp+var_8] +000CE34C: mov rdx, cs:_ZTVSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE_ptr +000CE353: lea rdx, [rdx+10h] +000CE357: mov [rax], rdx +000CE35A: mov rax, [rbp+var_8] +000CE35E: add rax, 10h +000CE362: mov rdi, rax +000CE365: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE5_ImplD2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::_Impl::~_Impl() +000CE36A: mov rax, [rbp+var_8] +000CE36E: mov rdi, rax +000CE371: call __ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev_0; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base() +000CE376: mov eax, 0 +000CE37B: test eax, eax +000CE37D: jz short locret_CE38B +000CE37F: mov rax, [rbp+var_8] +000CE383: mov rdi, rax; void * +000CE386: call __ZdlPv; operator delete(void *) +000CE38B: leave +000CE38C: retn + +### FUNC 000CE38E - 000CE3B4 (38 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED0Ev +000CE38E: push rbp +000CE38F: mov rbp, rsp +000CE392: sub rsp, 10h +000CE396: mov [rbp+var_8], rdi +000CE39A: mov rax, [rbp+var_8] +000CE39E: mov rdi, rax +000CE3A1: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace() +000CE3A6: mov rax, [rbp+var_8] +000CE3AA: mov rdi, rax; void * +000CE3AD: call __ZdlPv; operator delete(void *) +000CE3B2: leave +000CE3B3: retn + +### FUNC 000CE3B4 - 000CE3DD (41 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv +000CE3B4: push rbp +000CE3B5: mov rbp, rsp +000CE3B8: sub rsp, 10h +000CE3BC: mov [rbp+var_8], rdi +000CE3C0: mov rax, [rbp+var_8] +000CE3C4: mov rax, [rax+10h] +000CE3C8: mov rdx, [rbp+var_8] +000CE3CC: add rdx, 10h +000CE3D0: mov rsi, rax +000CE3D3: mov rdi, rdx +000CE3D6: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>>>::destroy ()(EloTCMHeartBeatDevice*)>>>(std::allocator ()(EloTCMHeartBeatDevice*)>>>&,std::thread::_Impl ()(EloTCMHeartBeatDevice*)>> *) +000CE3DB: leave +000CE3DC: retn + +### FUNC 000CE3DE - 000CE43A (92 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv +000CE3DE: push rbp +000CE3DF: mov rbp, rsp +000CE3E2: sub rsp, 20h +000CE3E6: mov [rbp+var_18], rdi +000CE3EA: mov rax, [rbp+var_18] +000CE3EE: lea rdx, [rax+10h] +000CE3F2: lea rax, [rbp+var_1] +000CE3F6: mov rsi, rdx +000CE3F9: mov rdi, rax +000CE3FC: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEEC2ISB_EERKSaIT_E; std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::allocator ()(EloTCMHeartBeatDevice*)>>>(std::allocator ()(EloTCMHeartBeatDevice*)>>> const&) +000CE401: mov rdx, [rbp+var_18] +000CE405: lea rax, [rbp+var_1] +000CE409: mov rsi, rdx +000CE40C: mov rdi, rax +000CE40F: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::destroy ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2> *) +000CE414: mov rcx, [rbp+var_18] +000CE418: lea rax, [rbp+var_1] +000CE41C: mov edx, 1 +000CE421: mov rsi, rcx +000CE424: mov rdi, rax +000CE427: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10deallocateERSH_PSG_m; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::deallocate(std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*,ulong) +000CE42C: lea rax, [rbp+var_1] +000CE430: mov rdi, rax +000CE433: call __ZNSaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EEED2Ev; std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::~allocator() +000CE438: leave +000CE439: retn + +### FUNC 000CE43A - 000CE475 (59 bytes) name=_ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info +000CE43A: push rbp +000CE43B: mov rbp, rsp +000CE43E: sub rsp, 10h +000CE442: mov [rbp+var_8], rdi +000CE446: mov [rbp+var_10], rsi +000CE44A: mov rax, [rbp+var_10] +000CE44E: mov rdx, cs:_ZTISt19_Sp_make_shared_tag_ptr +000CE455: mov rsi, rdx +000CE458: mov rdi, rax +000CE45B: call __ZNKSt9type_infoeqERKS_; std::type_info::operator==(std::type_info const&) +000CE460: test al, al +000CE462: jz short loc_CE46E +000CE464: mov rax, [rbp+var_8] +000CE468: add rax, 18h +000CE46C: jmp short locret_CE473 +000CE46E: mov eax, 0 +000CE473: leave +000CE474: retn + +### FUNC 000CE476 - 000CE494 (30 bytes) name=_ZNSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS3_EEE6_M_runEv +000CE476: push rbp +000CE477: mov rbp, rsp +000CE47A: sub rsp, 10h +000CE47E: mov [rbp+var_8], rdi +000CE482: mov rax, [rbp+var_8] +000CE486: add rax, 18h +000CE48A: mov rdi, rax +000CE48D: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEclEv; std::_Bind_simple ()(EloTCMHeartBeatDevice*)>::operator()(void) +000CE492: leave +000CE493: retn + +### FUNC 000CE494 - 000CE4B9 (37 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE7destroyISB_EEvRSC_PT_ +000CE494: push rbp +000CE495: mov rbp, rsp +000CE498: sub rsp, 10h +000CE49C: mov [rbp+var_8], rdi +000CE4A0: mov [rbp+var_10], rsi +000CE4A4: mov rdx, [rbp+var_10] +000CE4A8: mov rax, [rbp+var_8] +000CE4AC: mov rsi, rdx +000CE4AF: mov rdi, rax +000CE4B2: call __ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>>>::_S_destroy ()(EloTCMHeartBeatDevice*)>>>(std::allocator ()(EloTCMHeartBeatDevice*)>>>&,std::thread::_Impl ()(EloTCMHeartBeatDevice*)>>*) +000CE4B7: leave +000CE4B8: retn + +### FUNC 000CE4B9 - 000CE4DE (37 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE7destroyISG_EEvRSH_PT_ +000CE4B9: push rbp +000CE4BA: mov rbp, rsp +000CE4BD: sub rsp, 10h +000CE4C1: mov [rbp+var_8], rdi +000CE4C5: mov [rbp+var_10], rsi +000CE4C9: mov rdx, [rbp+var_10] +000CE4CD: mov rax, [rbp+var_8] +000CE4D1: mov rsi, rdx +000CE4D4: mov rdi, rax +000CE4D7: call __ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_; std::allocator_traits ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>>::_S_destroy ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>&,std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>*) +000CE4DC: leave +000CE4DD: retn + +### FUNC 000CE4DE - 000CE4FB (29 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EEclEv +000CE4DE: push rbp +000CE4DF: mov rbp, rsp +000CE4E2: sub rsp, 20h +000CE4E6: mov [rbp+var_18], rdi +000CE4EA: mov rax, [rbp+var_18] +000CE4EE: mov [rsp+20h+var_20], dl +000CE4F1: mov rdi, rax +000CE4F4: call __ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +000CE4F9: leave +000CE4FA: retn + +### FUNC 000CE4FB - 000CE520 (37 bytes) name=_ZNSt16allocator_traitsISaINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEEEE10_S_destroyISB_EENSt9enable_ifIXsrNSD_16__destroy_helperIT_EE5valueEvE4typeERSC_PSH_ +000CE4FB: push rbp +000CE4FC: mov rbp, rsp +000CE4FF: sub rsp, 10h +000CE503: mov [rbp+var_8], rdi +000CE507: mov [rbp+var_10], rsi +000CE50B: mov rdx, [rbp+var_10] +000CE50F: mov rax, [rbp+var_8] +000CE513: mov rsi, rdx +000CE516: mov rdi, rax +000CE519: call __ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE7destroyISC_EEvPT_; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>>::destroy ()(EloTCMHeartBeatDevice*)>>>(std::thread::_Impl ()(EloTCMHeartBeatDevice*)>> *) +000CE51E: leave +000CE51F: retn + +### FUNC 000CE520 - 000CE545 (37 bytes) name=_ZNSt16allocator_traitsISaISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEESaISC_ELN9__gnu_cxx12_Lock_policyE2EEEE10_S_destroyISG_EENSt9enable_ifIXsrNSI_16__destroy_helperIT_EE5valueEvE4typeERSH_PSM_ +000CE520: push rbp +000CE521: mov rbp, rsp +000CE524: sub rsp, 10h +000CE528: mov [rbp+var_8], rdi +000CE52C: mov [rbp+var_10], rsi +000CE530: mov rdx, [rbp+var_10] +000CE534: mov rax, [rbp+var_8] +000CE538: mov rsi, rdx +000CE53B: mov rdi, rax +000CE53E: call __ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_; __gnu_cxx::new_allocator ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>::destroy ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>>(std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2> *) +000CE543: leave +000CE544: retn + +### FUNC 000CE545 - 000CE55F (26 bytes) name=_ZSt12__get_helperILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE +000CE545: push rbp; Alternative name is 'std::__add_ref>::type std::__get_helper<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>(std::_Tuple_impl<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*> &)' +000CE546: mov rbp, rsp +000CE549: sub rsp, 10h +000CE54D: mov [rbp+var_8], rdi +000CE551: mov rax, [rbp+var_8] +000CE555: mov rdi, rax +000CE558: call __ZNSt11_Tuple_implILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE7_M_headERS6_; std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>::_M_head(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>&) +000CE55D: leave +000CE55E: retn + +### FUNC 000CE55F - 000CE579 (26 bytes) name=_ZSt3getILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000CE55F: push rbp; Alternative name is 'std::__add_ref, EloTCMHeartBeatDevice*>>::type>::type std::get<0ul, std::_Mem_fn, EloTCMHeartBeatDevice*>(std::tuple, EloTCMHeartBeatDevice*>&)' +000CE560: mov rbp, rsp +000CE563: sub rsp, 10h +000CE567: mov [rbp+var_8], rdi +000CE56B: mov rax, [rbp+var_8] +000CE56F: mov rdi, rax +000CE572: call __ZSt12__get_helperILm0ESt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEJPS1_EENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS7_DpT1_EE; std::__get_helper<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>(std::_Tuple_impl<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*> &) +000CE577: leave +000CE578: retn + +### FUNC 000CE579 - 000CE593 (26 bytes) name=_ZSt12__get_helperILm1EP21EloTCMHeartBeatDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000CE579: push rbp; Alternative name is '_ZSt12__get_helperILm1EP21EloTCMHeartBeatDeviceIEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EIS3_DpT1_EE' +000CE57A: mov rbp, rsp +000CE57D: sub rsp, 10h +000CE581: mov [rbp+var_8], rdi +000CE585: mov rax, [rbp+var_8] +000CE589: mov rdi, rax +000CE58C: call __ZNSt11_Tuple_implILm1EJP21EloTCMHeartBeatDeviceEE7_M_headERS2_; std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>::_M_head(std::_Tuple_impl<1ul,EloTCMHeartBeatDevice *>&) +000CE591: leave +000CE592: retn + +### FUNC 000CE593 - 000CE5AD (26 bytes) name=_ZSt3getILm1EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_ +000CE593: push rbp; Alternative name is 'std::__add_ref, EloTCMHeartBeatDevice*>>::type>::type std::get<1ul, std::_Mem_fn, EloTCMHeartBeatDevice*>(std::tuple, EloTCMHeartBeatDevice*>&)' +000CE594: mov rbp, rsp +000CE597: sub rsp, 10h +000CE59B: mov [rbp+var_8], rdi +000CE59F: mov rax, [rbp+var_8] +000CE5A3: mov rdi, rax +000CE5A6: call __ZSt12__get_helperILm1EP21EloTCMHeartBeatDeviceJEENSt9__add_refIT0_E4typeERSt11_Tuple_implIXT_EJS3_DpT1_EE +000CE5AB: leave +000CE5AC: retn + +### FUNC 000CE5AE - 000CE5F8 (74 bytes) name=_ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE +000CE5AE: push rbp; Alternative name is '_ZNSt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EE9_M_invokeIILm0EEEEvSt12_Index_tupleIIXspT_EEE' +000CE5AF: mov rbp, rsp +000CE5B2: push rbx +000CE5B3: sub rsp, 18h +000CE5B7: mov [rbp+var_18], rdi +000CE5BB: mov rax, [rbp+var_18] +000CE5BF: mov rdi, rax +000CE5C2: call __ZSt3getILm1EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_; std::get<1ul,std::_Mem_fn,EloTCMHeartBeatDevice*>(std::tuple,EloTCMHeartBeatDevice*>&) +000CE5C7: mov rdi, rax +000CE5CA: call __ZSt7forwardIP21EloTCMHeartBeatDeviceEOT_RNSt16remove_referenceIS2_E4typeE; std::forward(std::remove_reference::type &) +000CE5CF: mov rbx, [rax] +000CE5D2: mov rax, [rbp+var_18] +000CE5D6: mov rdi, rax +000CE5D9: call __ZSt3getILm0EJSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS1_EENSt9__add_refINSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeEE4typeERSB_; std::get<0ul,std::_Mem_fn,EloTCMHeartBeatDevice*>(std::tuple,EloTCMHeartBeatDevice*>&) +000CE5DE: mov rdi, rax +000CE5E1: call __ZSt7forwardISt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEEOT_RNSt16remove_referenceIS5_E4typeE; std::forward>(std::remove_reference>::type &) +000CE5E6: mov rsi, rbx +000CE5E9: mov rdi, rax +000CE5EC: call __ZNKSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEclIJEvEEvPS0_DpOT_ +000CE5F1: add rsp, 18h +000CE5F5: pop rbx +000CE5F6: pop rbp +000CE5F7: retn + +### FUNC 000CE5F8 - 000CE61D (37 bytes) name=_ZN9__gnu_cxx13new_allocatorINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS5_EEEEE7destroyISC_EEvPT_ +000CE5F8: push rbp +000CE5F9: mov rbp, rsp +000CE5FC: sub rsp, 10h +000CE600: mov [rbp+var_8], rdi +000CE604: mov [rbp+var_10], rsi +000CE608: mov rax, [rbp+var_10] +000CE60C: mov rax, [rax] +000CE60F: mov rax, [rax] +000CE612: mov rdx, [rbp+var_10] +000CE616: mov rdi, rdx +000CE619: call rax +000CE61B: leave +000CE61C: retn + +### FUNC 000CE61E - 000CE63C (30 bytes) name=_ZN9__gnu_cxx13new_allocatorISt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS6_EEEESaISD_ELNS_12_Lock_policyE2EEE7destroyISG_EEvPT_ +000CE61E: push rbp +000CE61F: mov rbp, rsp +000CE622: sub rsp, 10h +000CE626: mov [rbp+var_8], rdi +000CE62A: mov [rbp+var_10], rsi +000CE62E: mov rax, [rbp+var_10] +000CE632: mov rdi, rax +000CE635: call __ZNSt23_Sp_counted_ptr_inplaceINSt6thread5_ImplISt12_Bind_simpleIFSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEPS4_EEEESaISB_ELN9__gnu_cxx12_Lock_policyE2EED2Ev; std::_Sp_counted_ptr_inplace ()(EloTCMHeartBeatDevice*)>>,std::allocator ()(EloTCMHeartBeatDevice*)>>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace() +000CE63A: leave +000CE63B: retn + +### FUNC 000CE63C - 000CE6A3 (103 bytes) name=_ZNKSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEclIJEvEEvPS0_DpOT_ +000CE63C: push rbp; Alternative name is '_ZNKSt7_Mem_fnIM21EloTCMHeartBeatDeviceFvvEEclIIEvEEvPS0_DpOT_' +000CE63D: mov rbp, rsp +000CE640: sub rsp, 10h +000CE644: mov [rbp+var_8], rdi +000CE648: mov [rbp+var_10], rsi +000CE64C: mov rax, [rbp+var_8] +000CE650: mov rax, [rax] +000CE653: and eax, 1 +000CE656: test rax, rax +000CE659: jnz short loc_CE664 +000CE65B: mov rax, [rbp+var_8] +000CE65F: mov rax, [rax] +000CE662: jmp short loc_CE68A +000CE664: mov rax, [rbp+var_8] +000CE668: mov rax, [rax+8] +000CE66C: mov rdx, rax +000CE66F: mov rax, [rbp+var_10] +000CE673: add rax, rdx +000CE676: mov rdx, [rax] +000CE679: mov rax, [rbp+var_8] +000CE67D: mov rax, [rax] +000CE680: sub rax, 1 +000CE684: add rax, rdx +000CE687: mov rax, [rax] +000CE68A: mov rdx, [rbp+var_8] +000CE68E: mov rdx, [rdx+8] +000CE692: mov rcx, rdx +000CE695: mov rdx, [rbp+var_10] +000CE699: add rdx, rcx +000CE69C: mov rdi, rdx +000CE69F: call rax +000CE6A1: leave +000CE6A2: retn + +### FUNC 000CE6B0 - 000CE6C0 (16 bytes) name=stat +000CE6B0: mov rdx, rsi; stat_buf +000CE6B3: mov rsi, rdi; filename +000CE6B6: mov edi, 1; ver +000CE6BB: jmp ___xstat + +### FUNC 000CE6C0 - 000CE6C9 (9 bytes) name=.term_proc +000CE6C0: sub rsp, 8; _fini +000CE6C4: add rsp, 8 +000CE6C8: retn + +### FUNC 00345230 - 00345238 (8 bytes) name=_ZNSs6appendEPKcm +00345230: extrn _ZNSs6appendEPKcm:near + +### FUNC 00345238 - 00345240 (8 bytes) name=tcsetattr +00345238: extrn tcsetattr:near + +### FUNC 00345240 - 00345248 (8 bytes) name=_ZSt20__throw_length_errorPKc +00345240: extrn _ZSt20__throw_length_errorPKc:near + +### FUNC 00345248 - 00345250 (8 bytes) name=_ZNSsaSEPKc +00345248: extrn _ZNSsaSEPKc:near + +### FUNC 00345258 - 00345260 (8 bytes) name=_ZNSsC1Ev +00345258: extrn _ZNSsC1Ev:near + +### FUNC 00345260 - 00345268 (8 bytes) name=printf +00345260: extrn printf:near + +### FUNC 00345268 - 00345270 (8 bytes) name=_ZNSaIcED2Ev +00345268: extrn _ZNSaIcED2Ev:near + +### FUNC 00345270 - 00345278 (8 bytes) name=_ZNSolsEi +00345270: extrn _ZNSolsEi:near + +### FUNC 00345278 - 00345280 (8 bytes) name=_ZNSspLEPKc +00345278: extrn _ZNSspLEPKc:near + +### FUNC 00345280 - 00345288 (8 bytes) name=memset +00345280: extrn memset:near + +### FUNC 00345288 - 00345290 (8 bytes) name=snprintf +00345288: extrn snprintf:near + +### FUNC 00345290 - 00345298 (8 bytes) name=_ZNSs5clearEv +00345290: extrn _ZNSs5clearEv:near + +### FUNC 00345298 - 003452A0 (8 bytes) name=close +00345298: extrn close:near + +### FUNC 003452A0 - 003452A8 (8 bytes) name=_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv +003452A0: extrn _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv:near + +### FUNC 003452A8 - 003452B0 (8 bytes) name=ioctl +003452A8: extrn ioctl:near + +### FUNC 003452B0 - 003452B8 (8 bytes) name=clock_gettime +003452B0: extrn clock_gettime:near + +### FUNC 003452B8 - 003452C0 (8 bytes) name=_ZNSsC1EPKcmRKSaIcE +003452B8: extrn _ZNSsC1EPKcmRKSaIcE:near + +### FUNC 003452C0 - 003452C8 (8 bytes) name=_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E +003452C0: extrn _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E:near + +### FUNC 003452C8 - 003452D0 (8 bytes) name=puts +003452C8: extrn puts:near + +### FUNC 003452D0 - 003452D8 (8 bytes) name=_ZSt20__throw_system_errori +003452D0: extrn _ZSt20__throw_system_errori:near + +### FUNC 003452D8 - 003452E0 (8 bytes) name=_ZNKSs5c_strEv +003452D8: extrn _ZNKSs5c_strEv:near + +### FUNC 003452E0 - 003452E8 (8 bytes) name=_Znam +003452E0: extrn _Znam:near + +### FUNC 003452E8 - 003452F0 (8 bytes) name=_ZdlPv +003452E8: extrn _ZdlPv:near + +### FUNC 003452F0 - 003452F8 (8 bytes) name=_ZNSs7reserveEm +003452F0: extrn _ZNSs7reserveEm:near + +### FUNC 003452F8 - 00345300 (8 bytes) name=_ZNSt18condition_variable10notify_allEv +003452F8: extrn _ZNSt18condition_variable10notify_allEv:near + +### FUNC 00345300 - 00345308 (8 bytes) name=__assert_fail +00345300: extrn __assert_fail:near + +### FUNC 00345308 - 00345310 (8 bytes) name=__cxa_rethrow +00345308: extrn __cxa_rethrow:near + +### FUNC 00345310 - 00345318 (8 bytes) name=_ZNKSs4sizeEv +00345310: extrn _ZNKSs4sizeEv:near + +### FUNC 00345318 - 00345320 (8 bytes) name=cfsetspeed +00345318: extrn cfsetspeed:near + +### FUNC 00345320 - 00345328 (8 bytes) name=_ZNSt8ios_base4InitC1Ev +00345320: extrn _ZNSt8ios_base4InitC1Ev:near + +### FUNC 00345328 - 00345330 (8 bytes) name=_ZNSs4_Rep10_M_refdataEv +00345328: extrn _ZNSs4_Rep10_M_refdataEv:near + +### FUNC 00345330 - 00345338 (8 bytes) name=read +00345330: extrn read:near + +### FUNC 00345338 - 00345340 (8 bytes) name=malloc +00345338: extrn malloc:near + +### FUNC 00345340 - 00345348 (8 bytes) name=tcsendbreak +00345340: extrn tcsendbreak:near + +### FUNC 00345348 - 00345350 (8 bytes) name=_ZNSt6chrono3_V212system_clock3nowEv +00345348: extrn _ZNSt6chrono3_V212system_clock3nowEv:near + +### FUNC 00345350 - 00345358 (8 bytes) name=_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base +00345350: extrn _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base:near + +### FUNC 00345358 - 00345360 (8 bytes) name=_ZNSs4_Rep9_S_createEmmRKSaIcE +00345358: extrn _ZNSs4_Rep9_S_createEmmRKSaIcE:near + +### FUNC 00345360 - 00345368 (8 bytes) name=pthread_cond_timedwait +00345360: extrn pthread_cond_timedwait:near ; weak + +### FUNC 00345368 - 00345370 (8 bytes) name=_ZNKSs7compareERKSs +00345368: extrn _ZNKSs7compareERKSs:near + +### FUNC 00345370 - 00345378 (8 bytes) name=_ZNSsC1ERKSs +00345370: extrn _ZNSsC1ERKSs:near + +### FUNC 00345378 - 00345380 (8 bytes) name=__cxa_atexit +00345378: extrn __cxa_atexit:near + +### FUNC 00345380 - 00345388 (8 bytes) name=_ZNSt13runtime_errorC1ERKSs +00345380: extrn _ZNSt13runtime_errorC1ERKSs:near + +### FUNC 00345388 - 00345390 (8 bytes) name=_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE +00345388: extrn _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE:near + +### FUNC 00345390 - 00345398 (8 bytes) name=_ZNSs13_S_copy_charsEPcS_S_ +00345390: extrn _ZNSs13_S_copy_charsEPcS_S_:near + +### FUNC 00345398 - 003453A0 (8 bytes) name=pthread_mutex_init +00345398: extrn pthread_mutex_init:near + +### FUNC 003453A0 - 003453A8 (8 bytes) name=_ZNKSs6lengthEv +003453A0: extrn _ZNKSs6lengthEv:near + +### FUNC 003453A8 - 003453B0 (8 bytes) name=_ZNSaIcEC2Ev +003453A8: extrn _ZNSaIcEC2Ev:near + +### FUNC 003453B0 - 003453B8 (8 bytes) name=_ZNSt8ios_base4InitD1Ev +003453B0: extrn _ZNSt8ios_base4InitD1Ev:near + +### FUNC 003453B8 - 003453C0 (8 bytes) name=_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc +003453B8: extrn _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc:near + +### FUNC 003453C0 - 003453C8 (8 bytes) name=_ZNKSs5rfindEPKcm +003453C0: extrn _ZNKSs5rfindEPKcm:near + +### FUNC 003453C8 - 003453D0 (8 bytes) name=pselect +003453C8: extrn pselect:near + +### FUNC 003453D0 - 003453D8 (8 bytes) name=_ZNSsD1Ev +003453D0: extrn _ZNSsD1Ev:near + +### FUNC 003453D8 - 003453E0 (8 bytes) name=tcflush +003453D8: extrn tcflush:near + +### FUNC 003453E0 - 003453E8 (8 bytes) name=free +003453E0: extrn free:near + +### FUNC 003453E8 - 003453F0 (8 bytes) name=_ZNSs4_Rep10_M_destroyERKSaIcE +003453E8: extrn _ZNSs4_Rep10_M_destroyERKSaIcE:near + +### FUNC 003453F0 - 003453F8 (8 bytes) name=_ZNKSs5emptyEv +003453F0: extrn _ZNKSs5emptyEv:near + +### FUNC 003453F8 - 00345400 (8 bytes) name=__xstat +003453F8: extrn __xstat:near + +### FUNC 00345400 - 00345408 (8 bytes) name=tcdrain +00345400: extrn tcdrain:near + +### FUNC 00345408 - 00345410 (8 bytes) name=__cxa_finalize +00345408: extrn __cxa_finalize:near ; weak + +### FUNC 00345410 - 00345418 (8 bytes) name=realpath +00345410: extrn realpath:near + +### FUNC 00345420 - 00345428 (8 bytes) name=_ZNSs6insertEmPKc +00345420: extrn _ZNSs6insertEmPKc:near + +### FUNC 00345428 - 00345430 (8 bytes) name=_ZNSspLERKSs +00345428: extrn _ZNSspLERKSs:near + +### FUNC 00345430 - 00345438 (8 bytes) name=_ZNSsC1EPKcRKSaIcE +00345430: extrn _ZNSsC1EPKcRKSaIcE:near + +### FUNC 00345438 - 00345440 (8 bytes) name=usleep +00345438: extrn usleep:near + +### FUNC 00345440 - 00345448 (8 bytes) name=strerror +00345440: extrn strerror:near + +### FUNC 00345448 - 00345450 (8 bytes) name=_ZNSsaSEOSs +00345448: extrn _ZNSsaSEOSs:near + +### FUNC 00345450 - 00345458 (8 bytes) name=_ZNSt6thread4joinEv +00345450: extrn _ZNSt6thread4joinEv:near + +### FUNC 00345458 - 00345460 (8 bytes) name=_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev +00345458: extrn _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev:near + +### FUNC 00345460 - 00345468 (8 bytes) name=_ZNSt18condition_variableC1Ev +00345460: extrn _ZNSt18condition_variableC1Ev:near + +### FUNC 00345468 - 00345470 (8 bytes) name=_ZSt9terminatev +00345468: extrn _ZSt9terminatev:near + +### FUNC 00345470 - 00345478 (8 bytes) name=__dynamic_cast +00345470: extrn __dynamic_cast:near + +### FUNC 00345478 - 00345480 (8 bytes) name=_ZNSsixEm +00345478: extrn _ZNSsixEm:near + +### FUNC 00345480 - 00345488 (8 bytes) name=_ZNSs6insertEmRKSs +00345480: extrn _ZNSs6insertEmRKSs:near + +### FUNC 00345488 - 00345490 (8 bytes) name=_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode +00345488: extrn _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode:near + +### FUNC 00345490 - 00345498 (8 bytes) name=tcgetattr +00345490: extrn tcgetattr:near + +### FUNC 00345498 - 003454A0 (8 bytes) name=__cxa_pure_virtual +00345498: extrn __cxa_pure_virtual:near + +### FUNC 003454A0 - 003454A8 (8 bytes) name=_ZNSt6thread6detachEv +003454A0: extrn _ZNSt6thread6detachEv:near + +### FUNC 003454A8 - 003454B0 (8 bytes) name=_ZNSt18condition_variableD1Ev +003454A8: extrn _ZNSt18condition_variableD1Ev:near + +### FUNC 003454B0 - 003454B8 (8 bytes) name=_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev +003454B0: extrn _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev:near + +### FUNC 003454B8 - 003454C0 (8 bytes) name=memmove +003454B8: extrn memmove:near + +### FUNC 003454C0 - 003454C8 (8 bytes) name=vsnprintf +003454C0: extrn vsnprintf:near + +### FUNC 003454E0 - 003454E8 (8 bytes) name=__errno_location +003454E0: extrn __errno_location:near + +### FUNC 003454E8 - 003454F0 (8 bytes) name=pthread_equal +003454E8: extrn pthread_equal:near ; weak + +### FUNC 003454F0 - 003454F8 (8 bytes) name=_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_ +003454F0: extrn _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_:near + +### FUNC 00345500 - 00345508 (8 bytes) name=_ZSt25__throw_bad_function_callv +00345500: extrn _ZSt25__throw_bad_function_callv:near + +### FUNC 00345508 - 00345510 (8 bytes) name=_ZNKSs4dataEv +00345508: extrn _ZNKSs4dataEv:near + +### FUNC 00345510 - 00345518 (8 bytes) name=_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E +00345510: extrn _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E:near + +### FUNC 00345518 - 00345520 (8 bytes) name=_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_ +00345518: extrn _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_:near + +### FUNC 00345520 - 00345528 (8 bytes) name=strcmp +00345520: extrn strcmp:near + +### FUNC 00345528 - 00345530 (8 bytes) name=__cxa_allocate_exception +00345528: extrn __cxa_allocate_exception:near + +### FUNC 00345530 - 00345538 (8 bytes) name=_ZNSaIcED1Ev +00345530: extrn _ZNSaIcED1Ev:near + +### FUNC 00345538 - 00345540 (8 bytes) name=localeconv +00345538: extrn localeconv:near + +### FUNC 00345540 - 00345548 (8 bytes) name=_ZNSt9exceptionD2Ev +00345540: extrn _ZNSt9exceptionD2Ev:near + +### FUNC 00345548 - 00345550 (8 bytes) name=__cxa_free_exception +00345548: extrn __cxa_free_exception:near + +### FUNC 00345550 - 00345558 (8 bytes) name=_ZSt11_Hash_bytesPKvmm +00345550: extrn _ZSt11_Hash_bytesPKvmm:near + +### FUNC 00345558 - 00345560 (8 bytes) name=_ZSt19__throw_logic_errorPKc +00345558: extrn _ZSt19__throw_logic_errorPKc:near + +### FUNC 00345560 - 00345568 (8 bytes) name=_ZNSt13runtime_errorD1Ev +00345560: extrn _ZNSt13runtime_errorD1Ev:near + +### FUNC 00345568 - 00345570 (8 bytes) name=_ZdaPv +00345568: extrn _ZdaPv:near + +### FUNC 00345570 - 00345578 (8 bytes) name=_ZNSs6appendEPKc +00345570: extrn _ZNSs6appendEPKc:near + +### FUNC 00345578 - 00345580 (8 bytes) name=memcmp +00345578: extrn memcmp:near + +### FUNC 00345588 - 00345590 (8 bytes) name=_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode +00345588: extrn _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode:near + +### FUNC 00345590 - 00345598 (8 bytes) name=globfree +00345590: extrn globfree:near + +### FUNC 00345598 - 003455A0 (8 bytes) name=__cxa_throw +00345598: extrn __cxa_throw:near + +### FUNC 003455A0 - 003455A8 (8 bytes) name=_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode +003455A0: extrn _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode:near + +### FUNC 003455A8 - 003455B0 (8 bytes) name=strtoull +003455A8: extrn strtoull:near + +### FUNC 003455B0 - 003455B8 (8 bytes) name=_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base +003455B0: extrn _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base:near + +### FUNC 003455B8 - 003455C0 (8 bytes) name=_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm +003455B8: extrn _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm:near + +### FUNC 003455C0 - 003455C8 (8 bytes) name=_ZNSt16invalid_argumentC1ERKSs +003455C0: extrn _ZNSt16invalid_argumentC1ERKSs:near + +### FUNC 003455C8 - 003455D0 (8 bytes) name=_ZNKSs8capacityEv +003455C8: extrn _ZNKSs8capacityEv:near + +### FUNC 003455D0 - 003455D8 (8 bytes) name=__cxa_end_catch +003455D0: extrn __cxa_end_catch:near + +### FUNC 003455D8 - 003455E0 (8 bytes) name=_ZSt17__throw_bad_allocv +003455D8: extrn _ZSt17__throw_bad_allocv:near + +### FUNC 003455E0 - 003455E8 (8 bytes) name=_ZNKSs7compareEmmPKc +003455E0: extrn _ZNKSs7compareEmmPKc:near + +### FUNC 003455E8 - 003455F0 (8 bytes) name=strtoll +003455E8: extrn strtoll:near + +### FUNC 003455F0 - 003455F8 (8 bytes) name=__cxa_begin_catch +003455F0: extrn __cxa_begin_catch:near + +### FUNC 003455F8 - 00345600 (8 bytes) name=_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev +003455F8: extrn _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev:near + +### FUNC 00345600 - 00345608 (8 bytes) name=_ZNSs9push_backEc +00345600: extrn _ZNSs9push_backEc:near + +### FUNC 00345608 - 00345610 (8 bytes) name=pthread_mutex_lock +00345608: extrn pthread_mutex_lock:near + +### FUNC 00345610 - 00345618 (8 bytes) name=_ZNSt16invalid_argumentD1Ev +00345610: extrn _ZNSt16invalid_argumentD1Ev:near + +### FUNC 00345618 - 00345620 (8 bytes) name=realloc +00345618: extrn realloc:near + +### FUNC 00345620 - 00345628 (8 bytes) name=_ZNSaIcEC1Ev +00345620: extrn _ZNSaIcEC1Ev:near + +### FUNC 00345628 - 00345630 (8 bytes) name=__gxx_personality_v0 +00345628: extrn __gxx_personality_v0:near + +### FUNC 00345630 - 00345638 (8 bytes) name=_ZNSsC1EOSs +00345630: extrn _ZNSsC1EOSs:near + +### FUNC 00345638 - 00345640 (8 bytes) name=_ZNSs12_Alloc_hiderC1EPcRKSaIcE +00345638: extrn _ZNSs12_Alloc_hiderC1EPcRKSaIcE:near + +### FUNC 00345640 - 00345648 (8 bytes) name=pthread_mutex_destroy +00345640: extrn pthread_mutex_destroy:near + +### FUNC 00345648 - 00345650 (8 bytes) name=write +00345648: extrn write:near + +### FUNC 00345650 - 00345658 (8 bytes) name=_Znwm +00345650: extrn _Znwm:near + +### FUNC 00345658 - 00345660 (8 bytes) name=_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv +00345658: extrn _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv:near + +### FUNC 00345660 - 00345668 (8 bytes) name=_ZNSsC1ERKSsmm +00345660: extrn _ZNSsC1ERKSsmm:near + +### FUNC 00345668 - 00345670 (8 bytes) name=_Unwind_Resume +00345668: extrn _Unwind_Resume:near + +### FUNC 00345670 - 00345678 (8 bytes) name=_ZNSs12_S_empty_repEv +00345670: extrn _ZNSs12_S_empty_repEv:near + +### FUNC 00345678 - 00345680 (8 bytes) name=pthread_mutex_unlock +00345678: extrn pthread_mutex_unlock:near + +### FUNC 00345680 - 00345688 (8 bytes) name=_ZNSsaSERKSs +00345680: extrn _ZNSsaSERKSs:near + +### FUNC 00345688 - 00345690 (8 bytes) name=memcpy +00345688: extrn memcpy:near + +### FUNC 00345698 - 003456A0 (8 bytes) name=_ZNSs6appendERKSs +00345698: extrn _ZNSs6appendERKSs:near + +### FUNC 003456A0 - 003456A8 (8 bytes) name=glob +003456A0: extrn glob:near + +### FUNC 003456A8 - 003456B0 (8 bytes) name=open +003456A8: extrn open:near + +### FUNC 003456B0 - 003456B8 (8 bytes) name=_ZNKSs4findEPKcm +003456B0: extrn _ZNKSs4findEPKcm:near + +### FUNC 003456B8 - 003456C0 (8 bytes) name=_ZNSs4_Rep26_M_set_length_and_sharableEm +003456B8: extrn _ZNSs4_Rep26_M_set_length_and_sharableEm:near + +### FUNC 003456C0 - 003456C8 (8 bytes) name=_ZNKSt13runtime_error4whatEv +003456C0: extrn _ZNKSt13runtime_error4whatEv:near + +### FUNC 003456C8 - 003456D0 (8 bytes) name=strtod +003456C8: extrn strtod:near + +### FUNC 003456D0 - 003456D8 (8 bytes) name=_ZNSirsERj +003456D0: extrn _ZNSirsERj:near + +### FUNC 003456D8 - 003456E0 (8 bytes) name=_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm +003456D8: extrn _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm:near + +### FUNC 003456E0 - 003456E8 (8 bytes) name=MAG_Initialize +003456E0: extrn MAG_Initialize:near + +### FUNC 003456E8 - 003456F0 (8 bytes) name=MAG_SetDetailEnhancement +003456E8: extrn MAG_SetDetailEnhancement:near + +### FUNC 003456F0 - 003456F8 (8 bytes) name=MAG_SetEXLevel +003456F0: extrn MAG_SetEXLevel:near + +### FUNC 003456F8 - 00345700 (8 bytes) name=MAG_GetCameraTemperature +003456F8: extrn MAG_GetCameraTemperature:near + +### FUNC 00345700 - 00345708 (8 bytes) name=MAG_Free +00345700: extrn MAG_Free:near + +### FUNC 00345708 - 00345710 (8 bytes) name=MAG_GetSenorTemperature +00345708: extrn MAG_GetSenorTemperature:near + +### FUNC 00345710 - 00345718 (8 bytes) name=MAG_PrepareProcessImage +00345710: extrn MAG_PrepareProcessImage:near + +### FUNC 00345718 - 00345720 (8 bytes) name=__gmon_start__ +00345718: extrn __gmon_start__:near ; weak + +### FUNC 00345720 - 00345728 (8 bytes) name=_Jv_RegisterClasses +00345720: extrn _Jv_RegisterClasses:near ; weak + +### FUNC 00345728 - 00345730 (8 bytes) name=MAG_GetFrameStatisticalData +00345728: extrn MAG_GetFrameStatisticalData:near + +### FUNC 00345730 - 00345738 (8 bytes) name=MAG_GetRectTemperatureInfo +00345730: extrn MAG_GetRectTemperatureInfo:near + +### FUNC 00345738 - 00345740 (8 bytes) name=MAG_GetTerminalList +00345738: extrn MAG_GetTerminalList:near + +### FUNC 00345740 - 00345748 (8 bytes) name=MAG_GetCamInfo +00345740: extrn MAG_GetCamInfo:near + +### FUNC 00345748 - 00345750 (8 bytes) name=MAG_SetFixPara +00345748: extrn MAG_SetFixPara:near + +### FUNC 00345750 - 00345758 (8 bytes) name=MAG_SetFFCMode +00345750: extrn MAG_SetFFCMode:near + +### FUNC 00345758 - 00345760 (8 bytes) name=MAG_GetLineTemperatureInfo +00345758: extrn MAG_GetLineTemperatureInfo:near + +### FUNC 00345760 - 00345768 (8 bytes) name=MAG_DisLinkCamera +00345760: extrn MAG_DisLinkCamera:near + +### FUNC 00345768 - 00345770 (8 bytes) name=MAG_GetEstimatedEnvTemp +00345768: extrn MAG_GetEstimatedEnvTemp:near + +### FUNC 00345770 - 00345778 (8 bytes) name=MAG_StopProcessImage +00345770: extrn MAG_StopProcessImage:near + +### FUNC 00345778 - 00345780 (8 bytes) name=MAG_SetEnvTempEstimateMode +00345778: extrn MAG_SetEnvTempEstimateMode:near + +### FUNC 00345780 - 00345788 (8 bytes) name=MAG_EnumCameras +00345780: extrn MAG_EnumCameras:near + +### FUNC 00345790 - 00345798 (8 bytes) name=MAG_EstimateUnderArmTempFromForeheadRect +00345790: extrn MAG_EstimateUnderArmTempFromForeheadRect:near + +### FUNC 00345798 - 003457A0 (8 bytes) name=MAG_SaveBMP +00345798: extrn MAG_SaveBMP:near + +### FUNC 003457A8 - 003457B0 (8 bytes) name=MAG_SaveDDT2Buffer +003457A8: extrn MAG_SaveDDT2Buffer:near + +### FUNC 003457B0 - 003457B8 (8 bytes) name=MAG_TriggerFFC +003457B0: extrn MAG_TriggerFFC:near + +### FUNC 003457B8 - 003457C0 (8 bytes) name=MAG_GetFixPara +003457B8: extrn MAG_GetFixPara:near + +### FUNC 003457C0 - 003457C8 (8 bytes) name=MAG_GetOutputColorBardata +003457C0: extrn MAG_GetOutputColorBardata:near + +### FUNC 003457C8 - 003457D0 (8 bytes) name=MAG_LoadDDT +003457C8: extrn MAG_LoadDDT:near + +### FUNC 003457D0 - 003457D8 (8 bytes) name=MAG_GetTemperatureData +003457D0: extrn MAG_GetTemperatureData:near + +### FUNC 003457D8 - 003457E0 (8 bytes) name=MAG_SetSubsectionEnlargePara +003457D8: extrn MAG_SetSubsectionEnlargePara:near + +### FUNC 003457E0 - 003457E8 (8 bytes) name=MAG_WillStartImmediately +003457E0: extrn MAG_WillStartImmediately:near + +### FUNC 003457E8 - 003457F0 (8 bytes) name=MAG_IsProcessingImage +003457E8: extrn MAG_IsProcessingImage:near + +### FUNC 003457F0 - 003457F8 (8 bytes) name=MAG_GetEllipseTemperatureInfo +003457F0: extrn MAG_GetEllipseTemperatureInfo:near + +### FUNC 003457F8 - 00345800 (8 bytes) name=MAG_GetRgnTemperatureInfo +003457F8: extrn MAG_GetRgnTemperatureInfo:near + +### FUNC 00345800 - 00345808 (8 bytes) name=MAG_StartProcessImage +00345800: extrn MAG_StartProcessImage:near + +### FUNC 00345808 - 00345810 (8 bytes) name=MAG_IsLinked +00345808: extrn MAG_IsLinked:near + +### FUNC 00345810 - 00345818 (8 bytes) name=MAG_SetColorPalette +00345810: extrn MAG_SetColorPalette:near + +### FUNC 00345818 - 00345820 (8 bytes) name=MAG_UnLockFrame +00345818: extrn MAG_UnLockFrame:near + +### FUNC 00345820 - 00345828 (8 bytes) name=MAG_LoadBufferedDDT +00345820: extrn MAG_LoadBufferedDDT:near + +### FUNC 00345828 - 00345830 (8 bytes) name=MAG_SaveDDT +00345828: extrn MAG_SaveDDT:near + +### FUNC 00345830 - 00345838 (8 bytes) name=MAG_GetRemoteInfo +00345830: extrn MAG_GetRemoteInfo:near + +### FUNC 00345838 - 00345840 (8 bytes) name=MAG_SetAutoEnlargePara +00345838: extrn MAG_SetAutoEnlargePara:near + +### FUNC 00345840 - 00345848 (8 bytes) name=MAG_GetEXLevel +00345840: extrn MAG_GetEXLevel:near + +### FUNC 00345850 - 00345858 (8 bytes) name=MAG_LockFrame +00345850: extrn MAG_LockFrame:near + +### FUNC 00345858 - 00345860 (8 bytes) name=MAG_IsChannelAvailable +00345858: extrn MAG_IsChannelAvailable:near + +### FUNC 00345860 - 00345868 (8 bytes) name=MAG_GetOutputBMPdataRGB24 +00345860: extrn MAG_GetOutputBMPdataRGB24:near + +### FUNC 00345868 - 00345870 (8 bytes) name=MAG_GetOutputBMPdata +00345868: extrn MAG_GetOutputBMPdata:near + +### FUNC 00345870 - 00345878 (8 bytes) name=MAG_LinkCamera +00345870: extrn MAG_LinkCamera:near + +### FUNC 00345878 - 00345880 (8 bytes) name=MAG_GetCurrentCameraInnerTemperature +00345878: extrn MAG_GetCurrentCameraInnerTemperature:near + +### FUNC 00345880 - 00345888 (8 bytes) name=MAG_FixTemperature +00345880: extrn MAG_FixTemperature:near + +### FUNC 00345888 - 00345890 (8 bytes) name=MAG_GetEstimateUnderArmTempMode +00345888: extrn MAG_GetEstimateUnderArmTempMode:near + +### FUNC 00345890 - 00345898 (8 bytes) name=MAG_DelChannel +00345890: extrn MAG_DelChannel:near + +### FUNC 00345898 - 003458A0 (8 bytes) name=MAG_GetTemperatureProbe2 +00345898: extrn MAG_GetTemperatureProbe2:near + +### FUNC 003458A0 - 003458A8 (8 bytes) name=MAG_SetEstimateUnderArmTempMode +003458A0: extrn MAG_SetEstimateUnderArmTempMode:near + +### FUNC 003458A8 - 003458B0 (8 bytes) name=MAG_IsInitialized +003458A8: extrn MAG_IsInitialized:near + +### FUNC 003458B0 - 003458B8 (8 bytes) name=MAG_SetIoAlarmState +003458B0: extrn MAG_SetIoAlarmState:near + +### FUNC 003458B8 - 003458C0 (8 bytes) name=MAG_SetIsothermalPara +003458B8: extrn MAG_SetIsothermalPara:near + +### FUNC 003458C0 - 003458C8 (8 bytes) name=MAG_GetOutputRawData +003458C0: extrn MAG_GetOutputRawData:near + +### FUNC 003458C8 - 003458D0 (8 bytes) name=MAG_GetTemperatureProbe +003458C8: extrn MAG_GetTemperatureProbe:near + +### FUNC 003458D0 - 003458D8 (8 bytes) name=MAG_FixTemperature2 +003458D0: extrn MAG_FixTemperature2:near + +### FUNC 003458D8 - 003458E0 (8 bytes) name=MAG_GetTemperatureData_Raw +003458D8: extrn MAG_GetTemperatureData_Raw:near + +### FUNC 003458E0 - 003458E8 (8 bytes) name=MAG_NewChannel +003458E0: extrn MAG_NewChannel:near + diff --git a/analysis/ida/export_all.idc b/analysis/ida/export_all.idc new file mode 100644 index 0000000..7b0c417 --- /dev/null +++ b/analysis/ida/export_all.idc @@ -0,0 +1,85 @@ +#include + +static first_func() +{ + auto seed, ea; + seed = get_func_attr(0x180001000, FUNCATTR_START); + if (seed == BADADDR) + { + ea = get_first_seg(); + while (ea != BADADDR) + { + if (get_segm_name(ea) == ".text" || get_segm_name(ea) == "CODE" || + get_segm_name(ea) == "text" || get_segm_name(ea) == ".plt") + break; + ea = get_next_seg(ea); + } + if (ea != BADADDR) + seed = ea; + } + if (seed == BADADDR) + seed = get_func_attr(get_imagebase() + 0x1000, FUNCATTR_START); + if (seed == BADADDR) + { + warning("cannot find seed function"); + return BADADDR; + } + ea = get_prev_func(seed); + while (ea != BADADDR) + { + seed = ea; + ea = get_prev_func(seed); + } + return seed; +} + +static dump_func_disasm(f, from, to) +{ + auto ea; + ea = from; + while (ea != BADADDR && ea < to) + { + fprintf(f, "%08X: %s\n", ea, generate_disasm_line(ea, 0)); + ea = next_head(ea, to); + } + fprintf(f, "\n"); +} + +static main() +{ + auto f, of, ea, n, end; + f = fopen("C:\\Project\\MAG160C\\analysis\\ida\\export\\all_functions_disasm.txt", "w"); + if (f == 0) + { + warning("cannot open output"); + return; + } + of = fopen("C:\\Project\\MAG160C\\analysis\\ida\\export\\all_functions.txt", "w"); + if (of == 0) + { + warning("cannot open map output"); + fclose(f); + return; + } + ea = first_func(); + if (ea == BADADDR) + { + fclose(f); + fclose(of); + return; + } + n = 0; + while (ea != BADADDR) + { + end = get_func_attr(ea, FUNCATTR_END); + fprintf(f, "### FUNC %08X - %08X (%d bytes) name=%s\n", ea, end, end - ea, get_func_name(ea)); + dump_func_disasm(f, ea, end); + fprintf(of, "%08X %08X %s\n", ea, end, get_func_name(ea)); + ea = get_next_func(ea); + n = n + 1; + } + fprintf(of, "TOTAL %d\n", n); + fclose(f); + fclose(of); + msg("all export done: %d funcs\n", n); +} diff --git a/analysis/ida/export_core.idc b/analysis/ida/export_core.idc new file mode 100644 index 0000000..0efa3b6 --- /dev/null +++ b/analysis/ida/export_core.idc @@ -0,0 +1,110 @@ +#include + +static dump_range(out, from, to) +{ + auto ea; + ea = from; + while (ea != BADADDR && ea < to) + { + fprintf(out, "%08X: %s\n", ea, generate_disasm_line(ea, 0)); + ea = next_head(ea, to); + } +} + +static dump_xrefs(out, ea) +{ + auto x, caller, from_ea, to_ea; + from_ea = ea - 0x80; + to_ea = ea + 0x80; + x = get_first_dref_to(ea); + if (x != BADADDR) + { + fprintf(out, " data refs from:\n"); + while (x != BADADDR) + { + fprintf(out, " %08X\n", x); + x = get_next_dref_to(ea, x); + } + } + x = get_first_cref_to(ea); + if (x != BADADDR) + { + fprintf(out, " code refs from:\n"); + while (x != BADADDR) + { + fprintf(out, " %08X (func %08X)\n", x, get_func_attr(x, FUNCATTR_START)); + x = get_next_cref_to(ea, x); + } + } +} + +static dump_fn(out, ea, decomp) +{ + auto f, end, s, i, name; + f = get_func(ea); + if (f == 0) + { + fprintf(out, "### %08X NOT A FUNCTION (dumping 0x200 bytes)\n", ea); + dump_range(out, ea, ea + 0x200); + fprintf(out, "\n==================================================================\n\n"); + return; + } + end = get_func_attr(f, FUNCATTR_END); + name = get_func_name(ea); + fprintf(out, "### FUNC %08X - %08X (%d bytes) name=%s\n", ea, end, end - ea, name); + dump_range(out, ea, end); + fprintf(out, "\n"); + dump_xrefs(out, ea); + if (decomp) + { + s = decompile(ea); + if (s != 0) + { + fprintf(out, "\n;; DECOMPILED:\n%s\n", s); + } + else + { + fprintf(out, "\n;; DECOMPILE FAILED\n"); + } + } + fprintf(out, "\n==================================================================\n\n"); +} + +static main() +{ + auto dir, out, f, i, ea; + dir = "C:\\Project\\MAG160C\\analysis\\ida\\export\\"; + f = fopen(dir + "coresdk_keyfuncs.txt", "w"); + if (f == 0) + { + warning("cannot open output file"); + return; + } + dump_fn(f, 0x180017200, 1); // NUC lookup + dump_fn(f, 0x180017330, 1); // blind pixel compensation + dump_fn(f, 0x180016ae0, 1); // sensor temp endpoint selection + dump_fn(f, 0x180016dd0, 1); // threshold Q12 interp + dump_fn(f, 0x180016f10, 1); // gain/off Q12 interp + dump_fn(f, 0x18000c760, 1); // table rebuild chunked write + dump_fn(f, 0x18000c620, 1); // ref push / smoother feed + dump_fn(f, 0x1800011a0, 1); // generic smoother + dump_fn(f, 0x18001e920, 1); // temporal filter + dump_fn(f, 0x18000a1d2, 1); // FFC trigger A + dump_fn(f, 0x180002f50, 1); // FFC trigger B + dump_fn(f, 0x180010780, 1); // temperature + fclose(f); + + out = fopen(dir + "all_functions.txt", "w"); + if (out != 0) + { + ea = get_first_func(); + while (ea != BADADDR) + { + fprintf(out, "%08X %08X %s\n", ea, get_func_attr(ea, FUNCATTR_END), + get_func_name(ea)); + ea = get_next_func(ea); + } + fclose(out); + } + msg("export done\n"); +} diff --git a/analysis/ida/export_core_decomp.idc b/analysis/ida/export_core_decomp.idc new file mode 100644 index 0000000..930f81a --- /dev/null +++ b/analysis/ida/export_core_decomp.idc @@ -0,0 +1,50 @@ +#include + +static decomp_one(out, ea) +{ + auto f, end, s, name; + f = get_func_attr(ea, FUNCATTR_START); + if (f == BADADDR) + { + fprintf(out, "### %08X NOT A FUNCTION\n", ea); + return; + } + end = get_func_attr(f, FUNCATTR_END); + name = get_func_name(f); + fprintf(out, "### FUNC %08X - %08X (%d bytes) name=%s\n", f, end, end - f, name); + s = decompile(f); + if (s != 0) + { + fprintf(out, "%s\n", s); + } + else + { + fprintf(out, ";; DECOMPILE FAILED\n"); + } + fprintf(out, "\n==================================================================\n\n"); +} + +static main() +{ + auto f; + f = fopen("C:\\Project\\MAG160C\\analysis\\ida\\export\\coresdk_keyfuncs_decomp.txt", "w"); + if (f == 0) + { + warning("cannot open decomp output"); + return; + } + decomp_one(f, 0x180017200); + decomp_one(f, 0x180017330); + decomp_one(f, 0x180016ae0); + decomp_one(f, 0x180016dd0); + decomp_one(f, 0x180016f10); + decomp_one(f, 0x18000c760); + decomp_one(f, 0x18000c620); + decomp_one(f, 0x1800011a0); + decomp_one(f, 0x18001e920); + decomp_one(f, 0x18000a1d2); + decomp_one(f, 0x180002f50); + decomp_one(f, 0x180010780); + fclose(f); + msg("decomp export done\n"); +} diff --git a/analysis/ida/export_core_disasm.idc b/analysis/ida/export_core_disasm.idc new file mode 100644 index 0000000..38bf98e --- /dev/null +++ b/analysis/ida/export_core_disasm.idc @@ -0,0 +1,111 @@ +#include + +static dump_range(out, from, to) +{ + auto ea; + ea = from; + while (ea != BADADDR && ea < to) + { + fprintf(out, "%08X: %s\n", ea, generate_disasm_line(ea, 0)); + ea = next_head(ea, to); + } +} + +static dump_xrefs(out, ea) +{ + auto x; + x = get_first_dref_to(ea); + if (x != BADADDR) + { + fprintf(out, " data refs from:\n"); + while (x != BADADDR) + { + fprintf(out, " %08X\n", x); + x = get_next_dref_to(ea, x); + } + } + x = get_first_cref_to(ea); + if (x != BADADDR) + { + fprintf(out, " code refs from:\n"); + while (x != BADADDR) + { + fprintf(out, " %08X (func %08X)\n", x, get_func_attr(x, FUNCATTR_START)); + x = get_next_cref_to(ea, x); + } + } +} + +static dump_fn(out, ea) +{ + auto f, end, name; + f = get_func_attr(ea, FUNCATTR_START); + if (f == BADADDR) + { + fprintf(out, "### %08X NOT A FUNCTION (dumping 0x200 bytes)\n", ea); + dump_range(out, ea, ea + 0x200); + fprintf(out, "\n==================================================================\n\n"); + return; + } + end = get_func_attr(f, FUNCATTR_END); + name = get_func_name(f); + fprintf(out, "### FUNC %08X - %08X (%d bytes) name=%s\n", f, end, end - f, name); + dump_range(out, f, end); + fprintf(out, "\n"); + dump_xrefs(out, f); + fprintf(out, "\n==================================================================\n\n"); +} + +static main() +{ + auto dir, f, i, ea, n, seed, first; + dir = "C:\\Project\\MAG160C\\analysis\\ida\\export\\"; + + f = fopen(dir + "coresdk_keyfuncs_disasm.txt", "w"); + if (f == 0) + { + warning("cannot open keyfuncs output"); + return; + } + dump_fn(f, 0x180017200); + dump_fn(f, 0x180017330); + dump_fn(f, 0x180016ae0); + dump_fn(f, 0x180016dd0); + dump_fn(f, 0x180016f10); + dump_fn(f, 0x18000c760); + dump_fn(f, 0x18000c620); + dump_fn(f, 0x1800011a0); + dump_fn(f, 0x18001e920); + dump_fn(f, 0x18000a1d2); + dump_fn(f, 0x180002f50); + dump_fn(f, 0x180010780); + fclose(f); + + seed = get_func_attr(0x180001000, FUNCATTR_START); + if (seed == BADADDR) + seed = 0x180017200; + first = seed; + ea = get_prev_func(first); + while (ea != BADADDR) + { + first = ea; + ea = get_prev_func(first); + } + f = fopen(dir + "all_functions.txt", "w"); + if (f == 0) + { + warning("cannot open allfuncs output"); + return; + } + ea = first; + n = 0; + while (ea != BADADDR) + { + fprintf(f, "%08X %08X %s\n", ea, get_func_attr(ea, FUNCATTR_END), get_func_name(ea)); + ea = get_next_func(ea); + n = n + 1; + } + fprintf(f, "TOTAL %d\n", n); + fclose(f); + msg("disasm export done: %d funcs\n", n); +} diff --git a/analysis/ida/libcoresdk_arm64.so b/analysis/ida/libcoresdk_arm64.so new file mode 100644 index 0000000..a834977 --- /dev/null +++ b/analysis/ida/libcoresdk_arm64.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd72878f5e8e7a5d2fabcc8e30bab5ea0df43ad3d87608ec4c755078c5e37536 +size 4169232 diff --git a/analysis/ida/libmagcore.so b/analysis/ida/libmagcore.so new file mode 100644 index 0000000..7400223 --- /dev/null +++ b/analysis/ida/libmagcore.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd6d56a96058bf54cc7890616c70f6937a02f05593fe5ee5f34eea94f99bad92 +size 261736 diff --git a/analysis/ida/libthermalSDK.so b/analysis/ida/libthermalSDK.so new file mode 100644 index 0000000..f7c2b02 --- /dev/null +++ b/analysis/ida/libthermalSDK.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58dcfca4a35f1830e5dec33fe0b212c4b6b67c6ebe7f3d360a58b7c2e7e6a9ef +size 1826304 diff --git a/analysis/ida/libthermalSDK.so.i64 b/analysis/ida/libthermalSDK.so.i64 new file mode 100644 index 0000000..0ccdcb1 Binary files /dev/null and b/analysis/ida/libthermalSDK.so.i64 differ diff --git a/analysis/pairs_final_20260813/config.txt b/analysis/pairs_final_20260813/config.txt new file mode 100644 index 0000000..539e06c --- /dev/null +++ b/analysis/pairs_final_20260813/config.txt @@ -0,0 +1,17 @@ +dev24=5 dev48=0 dev4c=0 dev54=31821 dev58=31321 dev5c=31880 dev60=31380 +11c=12 41340=1 41344=0 41348=1 4134c=C:\Users\ZXC\AppData\Local\Temp\Core160043865 +41558=6 41554=3 4155c=1024 41560=0 47944=8 47948=-50000 4794c=3 47950=0 47954=0 47938=19200 +T: 8304 18390 28495 33637 38730 47664 +B: 7804 17890 27995 33137 38230 47164 +C: 7987 9245 10566 11309 11944 13468 +D(blind cnt): 32 32 32 32 32 +loaded: 0 0 1 1 0 0 +offsets(41708): 128 308352 616576 924800 1233024 1541248 +thr_off(41758): 0 308224 616448 924672 1232896 1541120 +blind_off(417a8): 1849472 1850752 1852032 1853312 1854592 0 +blind_off2(417f4): 0 1280 2560 3840 5120 0 +bases: 416a0=000001baa2677040 416a8=000001baa24cddc0 416b0=000001baa1f7c820 +41840=2 41848=000001baa270d840 41850=000001baa2758c40 41858=000001baa24cddc0 41860=000001baa2720840 41868=000001baa276bc40 41870=000001baa24e0dc0 41878=000001baa1f7d220 +41f0c=1 41f3c=1 41fdc=1 41fe0=1 41fe4=5 41fe8=0 +2d47=0 2d86=0 2d78=0 2d88=0 2d8c=0 2d90=0 2d94=0 2d98=0 2d9c=0 +47940=3840 44c50=0 44c60=0 44c64=0 44c68=0 42010=10730 42014=8765 diff --git a/analysis/pairs_final_20260813/official.ddt b/analysis/pairs_final_20260813/official.ddt new file mode 100644 index 0000000..1289070 Binary files /dev/null and b/analysis/pairs_final_20260813/official.ddt differ diff --git a/analysis/pairs_final_20260813/pair_000.blind b/analysis/pairs_final_20260813/pair_000.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.blind differ diff --git a/analysis/pairs_final_20260813/pair_000.cbrgb b/analysis/pairs_final_20260813/pair_000.cbrgb new file mode 100644 index 0000000..b331cc9 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd74b97628296025078bbd0023efa7c6a4d67969779d396d3fc50d9ffec4932c +size 230400 diff --git a/analysis/pairs_final_20260813/pair_000.cdf b/analysis/pairs_final_20260813/pair_000.cdf new file mode 100644 index 0000000..4ae1d11 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.cdf differ diff --git a/analysis/pairs_final_20260813/pair_000.f20 b/analysis/pairs_final_20260813/pair_000.f20 new file mode 100644 index 0000000..3a78e8c --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e48fc5544f20793f85da11c10f5d004f9c7cab3a7a18376b5779bd29ba4f5b79 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_000.g0 b/analysis/pairs_final_20260813/pair_000.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.g0 differ diff --git a/analysis/pairs_final_20260813/pair_000.g1 b/analysis/pairs_final_20260813/pair_000.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.g1 differ diff --git a/analysis/pairs_final_20260813/pair_000.gray b/analysis/pairs_final_20260813/pair_000.gray new file mode 100644 index 0000000..c5340a2 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:447efbdee29aaa65d3df8f2741478310aa00020f4faadc008d3ea5db36237b28 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_000.gw b/analysis/pairs_final_20260813/pair_000.gw new file mode 100644 index 0000000..e9a7f82 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.gw differ diff --git a/analysis/pairs_final_20260813/pair_000.h1024 b/analysis/pairs_final_20260813/pair_000.h1024 new file mode 100644 index 0000000..a652bf1 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_000.hist b/analysis/pairs_final_20260813/pair_000.hist new file mode 100644 index 0000000..f6f5ffa Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.hist differ diff --git a/analysis/pairs_final_20260813/pair_000.lut b/analysis/pairs_final_20260813/pair_000.lut new file mode 100644 index 0000000..277e68d --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3826cab445a0168cfcb05b0a184a9f0238a4e85a8528c8b5aa43490228d0b31 +size 1024 diff --git a/analysis/pairs_final_20260813/pair_000.meta b/analysis/pairs_final_20260813/pair_000.meta new file mode 100644 index 0000000..7583d0b Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.meta differ diff --git a/analysis/pairs_final_20260813/pair_000.pal b/analysis/pairs_final_20260813/pair_000.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_000.raw b/analysis/pairs_final_20260813/pair_000.raw new file mode 100644 index 0000000..7695454 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36134e43ff226298b2ca9fc8f30b6bac75e231456dd072ceb08d6d502030086d +size 38400 diff --git a/analysis/pairs_final_20260813/pair_000.ref b/analysis/pairs_final_20260813/pair_000.ref new file mode 100644 index 0000000..0053298 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48413bc62b4bedaddcb6297f0e909696cce94495e6a3eac024bc54f5916159f1 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_000.rgb b/analysis/pairs_final_20260813/pair_000.rgb new file mode 100644 index 0000000..b331cc9 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd74b97628296025078bbd0023efa7c6a4d67969779d396d3fc50d9ffec4932c +size 230400 diff --git a/analysis/pairs_final_20260813/pair_000.t32 b/analysis/pairs_final_20260813/pair_000.t32 new file mode 100644 index 0000000..5a8e7f0 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7a45c80269f69bcf5b3174751081afdd878918a8b282a53250d8cd41dc37305 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_000.thr0 b/analysis/pairs_final_20260813/pair_000.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_000.thr1 b/analysis/pairs_final_20260813/pair_000.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_000.thrw b/analysis/pairs_final_20260813/pair_000.thrw new file mode 100644 index 0000000..a52a489 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_000.thrw differ diff --git a/analysis/pairs_final_20260813/pair_000.win b/analysis/pairs_final_20260813/pair_000.win new file mode 100644 index 0000000..61b2d03 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_000.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a98eb951123253b90252d78fe992a03d71ab727beec2955268babe74d4afe77 +size 32 diff --git a/analysis/pairs_final_20260813/pair_001.blind b/analysis/pairs_final_20260813/pair_001.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.blind differ diff --git a/analysis/pairs_final_20260813/pair_001.cbrgb b/analysis/pairs_final_20260813/pair_001.cbrgb new file mode 100644 index 0000000..d9c1ce6 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fcd8d54d630c54dc08beb03e76d5bac48dda2ba919bd2172184ccbf65796d97 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_001.cdf b/analysis/pairs_final_20260813/pair_001.cdf new file mode 100644 index 0000000..52c0152 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.cdf differ diff --git a/analysis/pairs_final_20260813/pair_001.f20 b/analysis/pairs_final_20260813/pair_001.f20 new file mode 100644 index 0000000..049d730 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc119a94505d4219ed6cbcd545858a0a877d6535d4e8063b8cb3134a91cbda94 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_001.g0 b/analysis/pairs_final_20260813/pair_001.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.g0 differ diff --git a/analysis/pairs_final_20260813/pair_001.g1 b/analysis/pairs_final_20260813/pair_001.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.g1 differ diff --git a/analysis/pairs_final_20260813/pair_001.gray b/analysis/pairs_final_20260813/pair_001.gray new file mode 100644 index 0000000..6803930 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f153ddce5fddec74c9bb0cee93ee293543dd65023379189d31d3787fcf693d0 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_001.gw b/analysis/pairs_final_20260813/pair_001.gw new file mode 100644 index 0000000..e9a7f82 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.gw differ diff --git a/analysis/pairs_final_20260813/pair_001.h1024 b/analysis/pairs_final_20260813/pair_001.h1024 new file mode 100644 index 0000000..b83ff55 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_001.hist b/analysis/pairs_final_20260813/pair_001.hist new file mode 100644 index 0000000..1fbf0f3 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.hist differ diff --git a/analysis/pairs_final_20260813/pair_001.lut b/analysis/pairs_final_20260813/pair_001.lut new file mode 100644 index 0000000..430825b --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a31570c00d110c80883db87e150db9e65c0ed6dee8d3dfe0c6054520e1ec176 +size 1024 diff --git a/analysis/pairs_final_20260813/pair_001.meta b/analysis/pairs_final_20260813/pair_001.meta new file mode 100644 index 0000000..5e59808 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.meta differ diff --git a/analysis/pairs_final_20260813/pair_001.pal b/analysis/pairs_final_20260813/pair_001.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_001.raw b/analysis/pairs_final_20260813/pair_001.raw new file mode 100644 index 0000000..7846674 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d605a1be69c5585432474c05ebba09c2d28c2e4ba4672a054bde803d2d28ee5a +size 38400 diff --git a/analysis/pairs_final_20260813/pair_001.ref b/analysis/pairs_final_20260813/pair_001.ref new file mode 100644 index 0000000..0053298 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48413bc62b4bedaddcb6297f0e909696cce94495e6a3eac024bc54f5916159f1 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_001.rgb b/analysis/pairs_final_20260813/pair_001.rgb new file mode 100644 index 0000000..d9c1ce6 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fcd8d54d630c54dc08beb03e76d5bac48dda2ba919bd2172184ccbf65796d97 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_001.t32 b/analysis/pairs_final_20260813/pair_001.t32 new file mode 100644 index 0000000..df40d1c --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a710a24b95c0e7ae119eec7316357e6bb07819fe173cb3c96d8f0354e7a2957 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_001.thr0 b/analysis/pairs_final_20260813/pair_001.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_001.thr1 b/analysis/pairs_final_20260813/pair_001.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_001.thrw b/analysis/pairs_final_20260813/pair_001.thrw new file mode 100644 index 0000000..a52a489 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_001.thrw differ diff --git a/analysis/pairs_final_20260813/pair_001.win b/analysis/pairs_final_20260813/pair_001.win new file mode 100644 index 0000000..11c6daf --- /dev/null +++ b/analysis/pairs_final_20260813/pair_001.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cf0ce2e4cfb27a179cec83b3606e87db4aa134b4ee1db6bb19b0987af517a21 +size 32 diff --git a/analysis/pairs_final_20260813/pair_002.blind b/analysis/pairs_final_20260813/pair_002.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.blind differ diff --git a/analysis/pairs_final_20260813/pair_002.cbrgb b/analysis/pairs_final_20260813/pair_002.cbrgb new file mode 100644 index 0000000..7d11ff3 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e24f53af24a9335fc7fa7c194eeb676a98b8ccc542733ea30963a3d8d225da02 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_002.cdf b/analysis/pairs_final_20260813/pair_002.cdf new file mode 100644 index 0000000..a131bc7 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.cdf differ diff --git a/analysis/pairs_final_20260813/pair_002.f20 b/analysis/pairs_final_20260813/pair_002.f20 new file mode 100644 index 0000000..51ef80a --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d03d2734dfe48fd9b55f77d27e8903bfa7d2f598d9865e8fbd2d802a5a66d85 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_002.g0 b/analysis/pairs_final_20260813/pair_002.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.g0 differ diff --git a/analysis/pairs_final_20260813/pair_002.g1 b/analysis/pairs_final_20260813/pair_002.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.g1 differ diff --git a/analysis/pairs_final_20260813/pair_002.gray b/analysis/pairs_final_20260813/pair_002.gray new file mode 100644 index 0000000..945ad22 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35984457da713264899924231582736af2143ea235fe6c5949d0cc739e8e19e0 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_002.gw b/analysis/pairs_final_20260813/pair_002.gw new file mode 100644 index 0000000..5ce20ba Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.gw differ diff --git a/analysis/pairs_final_20260813/pair_002.h1024 b/analysis/pairs_final_20260813/pair_002.h1024 new file mode 100644 index 0000000..345d493 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_002.hist b/analysis/pairs_final_20260813/pair_002.hist new file mode 100644 index 0000000..ca7debb Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.hist differ diff --git a/analysis/pairs_final_20260813/pair_002.lut b/analysis/pairs_final_20260813/pair_002.lut new file mode 100644 index 0000000..b44e90f --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7656ae994c0c44c4168796abc69137069085b0d5d8115617a299862ed19e9794 +size 1024 diff --git a/analysis/pairs_final_20260813/pair_002.meta b/analysis/pairs_final_20260813/pair_002.meta new file mode 100644 index 0000000..91a945f Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.meta differ diff --git a/analysis/pairs_final_20260813/pair_002.pal b/analysis/pairs_final_20260813/pair_002.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_002.raw b/analysis/pairs_final_20260813/pair_002.raw new file mode 100644 index 0000000..5e77b34 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:422e4cbdafd850b7d6df1e310a06ef5362136fe2682e3a8ddaa416754a03bafe +size 38400 diff --git a/analysis/pairs_final_20260813/pair_002.ref b/analysis/pairs_final_20260813/pair_002.ref new file mode 100644 index 0000000..14c8bc0 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44ac8d3de76c52dab8c5013fc06621d090570f68dd9b929680b0360c3c06ba14 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_002.rgb b/analysis/pairs_final_20260813/pair_002.rgb new file mode 100644 index 0000000..7d11ff3 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e24f53af24a9335fc7fa7c194eeb676a98b8ccc542733ea30963a3d8d225da02 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_002.t32 b/analysis/pairs_final_20260813/pair_002.t32 new file mode 100644 index 0000000..81eb626 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5621406231375ca7547af8f822766c47bcb7971d43b3c618990d2b8380407c83 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_002.thr0 b/analysis/pairs_final_20260813/pair_002.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_002.thr1 b/analysis/pairs_final_20260813/pair_002.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_002.thrw b/analysis/pairs_final_20260813/pair_002.thrw new file mode 100644 index 0000000..ce4f72f Binary files /dev/null and b/analysis/pairs_final_20260813/pair_002.thrw differ diff --git a/analysis/pairs_final_20260813/pair_002.win b/analysis/pairs_final_20260813/pair_002.win new file mode 100644 index 0000000..6e858a7 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_002.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afdf780c84a50a3a30aaf17662e01ad92d57a199ac285a80cff912308c2aca20 +size 32 diff --git a/analysis/pairs_final_20260813/pair_003.blind b/analysis/pairs_final_20260813/pair_003.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.blind differ diff --git a/analysis/pairs_final_20260813/pair_003.cbrgb b/analysis/pairs_final_20260813/pair_003.cbrgb new file mode 100644 index 0000000..b7b64af --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a676469bbb6c80b4ebf96417d115407a7092d748ed17d4879f14e23863a523da +size 230400 diff --git a/analysis/pairs_final_20260813/pair_003.cdf b/analysis/pairs_final_20260813/pair_003.cdf new file mode 100644 index 0000000..19f0edc Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.cdf differ diff --git a/analysis/pairs_final_20260813/pair_003.f20 b/analysis/pairs_final_20260813/pair_003.f20 new file mode 100644 index 0000000..34661c4 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aaf7c5914f6c3ba3a0bf7d783763b8a907ff4dc7f9766f97cc05549eeb478a6 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_003.g0 b/analysis/pairs_final_20260813/pair_003.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.g0 differ diff --git a/analysis/pairs_final_20260813/pair_003.g1 b/analysis/pairs_final_20260813/pair_003.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.g1 differ diff --git a/analysis/pairs_final_20260813/pair_003.gray b/analysis/pairs_final_20260813/pair_003.gray new file mode 100644 index 0000000..cbab5ef --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:437000c8a3d3c815431860f271f5bae4609ac520535f058dd0aa8511ff80cb5f +size 76800 diff --git a/analysis/pairs_final_20260813/pair_003.gw b/analysis/pairs_final_20260813/pair_003.gw new file mode 100644 index 0000000..5ce20ba Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.gw differ diff --git a/analysis/pairs_final_20260813/pair_003.h1024 b/analysis/pairs_final_20260813/pair_003.h1024 new file mode 100644 index 0000000..4bfbb90 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_003.hist b/analysis/pairs_final_20260813/pair_003.hist new file mode 100644 index 0000000..7ddb8f8 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.hist differ diff --git a/analysis/pairs_final_20260813/pair_003.lut b/analysis/pairs_final_20260813/pair_003.lut new file mode 100644 index 0000000..c72cb21 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fb54f1df52c9e20e55b7a2611fdc3adcfd671e58cbbd9eec23c12ba0e4474cf +size 1024 diff --git a/analysis/pairs_final_20260813/pair_003.meta b/analysis/pairs_final_20260813/pair_003.meta new file mode 100644 index 0000000..29a6342 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.meta differ diff --git a/analysis/pairs_final_20260813/pair_003.pal b/analysis/pairs_final_20260813/pair_003.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_003.raw b/analysis/pairs_final_20260813/pair_003.raw new file mode 100644 index 0000000..14fb972 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f331c873442777f8b5ab0bff784b88efe6f94762fa215bdd05792dd2167becd8 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_003.ref b/analysis/pairs_final_20260813/pair_003.ref new file mode 100644 index 0000000..14c8bc0 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44ac8d3de76c52dab8c5013fc06621d090570f68dd9b929680b0360c3c06ba14 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_003.rgb b/analysis/pairs_final_20260813/pair_003.rgb new file mode 100644 index 0000000..b7b64af --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a676469bbb6c80b4ebf96417d115407a7092d748ed17d4879f14e23863a523da +size 230400 diff --git a/analysis/pairs_final_20260813/pair_003.t32 b/analysis/pairs_final_20260813/pair_003.t32 new file mode 100644 index 0000000..ed77bc4 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:035f8beb68dfd61a0e24e374e13e9658ee09f54e6b474e7a0d0aacb238802c77 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_003.thr0 b/analysis/pairs_final_20260813/pair_003.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_003.thr1 b/analysis/pairs_final_20260813/pair_003.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_003.thrw b/analysis/pairs_final_20260813/pair_003.thrw new file mode 100644 index 0000000..ce4f72f Binary files /dev/null and b/analysis/pairs_final_20260813/pair_003.thrw differ diff --git a/analysis/pairs_final_20260813/pair_003.win b/analysis/pairs_final_20260813/pair_003.win new file mode 100644 index 0000000..3ae7202 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_003.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97dd77c38a132e1db6887519381148818bbe92908d1d83fa089c6e3b2dd08c27 +size 32 diff --git a/analysis/pairs_final_20260813/pair_004.blind b/analysis/pairs_final_20260813/pair_004.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.blind differ diff --git a/analysis/pairs_final_20260813/pair_004.cbrgb b/analysis/pairs_final_20260813/pair_004.cbrgb new file mode 100644 index 0000000..13086c3 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f958176af59ea41da7f54617e6454f7ed04d02f492980da82b58a7e426a17a8 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_004.cdf b/analysis/pairs_final_20260813/pair_004.cdf new file mode 100644 index 0000000..7fb96da Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.cdf differ diff --git a/analysis/pairs_final_20260813/pair_004.f20 b/analysis/pairs_final_20260813/pair_004.f20 new file mode 100644 index 0000000..b6f7faf --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d693c3824acd47b8006d9e1706d4faebf294d153587c1f059d320785a42a6fa +size 38400 diff --git a/analysis/pairs_final_20260813/pair_004.g0 b/analysis/pairs_final_20260813/pair_004.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.g0 differ diff --git a/analysis/pairs_final_20260813/pair_004.g1 b/analysis/pairs_final_20260813/pair_004.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.g1 differ diff --git a/analysis/pairs_final_20260813/pair_004.gray b/analysis/pairs_final_20260813/pair_004.gray new file mode 100644 index 0000000..907b90c --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d2d8efc8435e5d9640524cd5e9c843616a672975ce3c895063a330f79be0d5e +size 76800 diff --git a/analysis/pairs_final_20260813/pair_004.gw b/analysis/pairs_final_20260813/pair_004.gw new file mode 100644 index 0000000..5ce20ba Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.gw differ diff --git a/analysis/pairs_final_20260813/pair_004.h1024 b/analysis/pairs_final_20260813/pair_004.h1024 new file mode 100644 index 0000000..392b96a Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_004.hist b/analysis/pairs_final_20260813/pair_004.hist new file mode 100644 index 0000000..c07573d Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.hist differ diff --git a/analysis/pairs_final_20260813/pair_004.lut b/analysis/pairs_final_20260813/pair_004.lut new file mode 100644 index 0000000..5ac9159 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f20108eddb76f248fb55e02e6753971cf731ca5999e90d287842447fa759a879 +size 1024 diff --git a/analysis/pairs_final_20260813/pair_004.meta b/analysis/pairs_final_20260813/pair_004.meta new file mode 100644 index 0000000..69ae4e1 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.meta differ diff --git a/analysis/pairs_final_20260813/pair_004.pal b/analysis/pairs_final_20260813/pair_004.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_004.raw b/analysis/pairs_final_20260813/pair_004.raw new file mode 100644 index 0000000..92b09e3 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787fa5d66037b346d3fd84500ae782bfceec9ffc7d9ddc02cf0ddcb8d9fcf646 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_004.ref b/analysis/pairs_final_20260813/pair_004.ref new file mode 100644 index 0000000..14c8bc0 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44ac8d3de76c52dab8c5013fc06621d090570f68dd9b929680b0360c3c06ba14 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_004.rgb b/analysis/pairs_final_20260813/pair_004.rgb new file mode 100644 index 0000000..13086c3 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f958176af59ea41da7f54617e6454f7ed04d02f492980da82b58a7e426a17a8 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_004.t32 b/analysis/pairs_final_20260813/pair_004.t32 new file mode 100644 index 0000000..ff13433 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee2e8b509ba977b520e5ae542cf57156d14f40604a727573183e834acfc85119 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_004.thr0 b/analysis/pairs_final_20260813/pair_004.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_004.thr1 b/analysis/pairs_final_20260813/pair_004.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_004.thrw b/analysis/pairs_final_20260813/pair_004.thrw new file mode 100644 index 0000000..ce4f72f Binary files /dev/null and b/analysis/pairs_final_20260813/pair_004.thrw differ diff --git a/analysis/pairs_final_20260813/pair_004.win b/analysis/pairs_final_20260813/pair_004.win new file mode 100644 index 0000000..45a9cd6 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_004.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7027405a8f8b8a13c4b642c6dd9dc6d7918d1f4b8c26814f69d771e10bfd1b4 +size 32 diff --git a/analysis/pairs_final_20260813/pair_005.blind b/analysis/pairs_final_20260813/pair_005.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.blind differ diff --git a/analysis/pairs_final_20260813/pair_005.cbrgb b/analysis/pairs_final_20260813/pair_005.cbrgb new file mode 100644 index 0000000..4fdd15b --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0109f3f4277ba5287bbbb17fa6d06891ddb4e2e12a879dbebd4ae918b956ee04 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_005.cdf b/analysis/pairs_final_20260813/pair_005.cdf new file mode 100644 index 0000000..1db3a33 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.cdf differ diff --git a/analysis/pairs_final_20260813/pair_005.f20 b/analysis/pairs_final_20260813/pair_005.f20 new file mode 100644 index 0000000..34c204e --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1023ba43ac828f2bade4f13fa271e1aaaa883ab8dbc0a9c6e395cefa3d718f41 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_005.g0 b/analysis/pairs_final_20260813/pair_005.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.g0 differ diff --git a/analysis/pairs_final_20260813/pair_005.g1 b/analysis/pairs_final_20260813/pair_005.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.g1 differ diff --git a/analysis/pairs_final_20260813/pair_005.gray b/analysis/pairs_final_20260813/pair_005.gray new file mode 100644 index 0000000..b6d2337 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d5540ef5662e35eddcf79f01ebc578f26820110d25b41627528ebb7a6f1797b +size 76800 diff --git a/analysis/pairs_final_20260813/pair_005.gw b/analysis/pairs_final_20260813/pair_005.gw new file mode 100644 index 0000000..56c0cd3 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.gw differ diff --git a/analysis/pairs_final_20260813/pair_005.h1024 b/analysis/pairs_final_20260813/pair_005.h1024 new file mode 100644 index 0000000..8b8f002 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_005.hist b/analysis/pairs_final_20260813/pair_005.hist new file mode 100644 index 0000000..9e8072d Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.hist differ diff --git a/analysis/pairs_final_20260813/pair_005.lut b/analysis/pairs_final_20260813/pair_005.lut new file mode 100644 index 0000000..63147ce --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81ba00a1cb5bb971cb5082935c11db51d93d72b6e8d3b6703e7352c95e1cdb6c +size 1024 diff --git a/analysis/pairs_final_20260813/pair_005.meta b/analysis/pairs_final_20260813/pair_005.meta new file mode 100644 index 0000000..eaedc38 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.meta differ diff --git a/analysis/pairs_final_20260813/pair_005.pal b/analysis/pairs_final_20260813/pair_005.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_005.raw b/analysis/pairs_final_20260813/pair_005.raw new file mode 100644 index 0000000..6cc8d30 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:431165ed4f6446f1ffb7e5a31259e8209926ed31bbbf71a60aa29b7ab9848818 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_005.ref b/analysis/pairs_final_20260813/pair_005.ref new file mode 100644 index 0000000..05c59b6 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa3d66d4187ad0ee92683c0f4aef1e66b7774deb6d8612ca725a6e163906ac40 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_005.rgb b/analysis/pairs_final_20260813/pair_005.rgb new file mode 100644 index 0000000..4fdd15b --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0109f3f4277ba5287bbbb17fa6d06891ddb4e2e12a879dbebd4ae918b956ee04 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_005.t32 b/analysis/pairs_final_20260813/pair_005.t32 new file mode 100644 index 0000000..d34a19f --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3ccb9470ffda5a8fabdfb68c20f7bbf79a56f646993315562869f98a236dc00 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_005.thr0 b/analysis/pairs_final_20260813/pair_005.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_005.thr1 b/analysis/pairs_final_20260813/pair_005.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_005.thrw b/analysis/pairs_final_20260813/pair_005.thrw new file mode 100644 index 0000000..8c73b04 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_005.thrw differ diff --git a/analysis/pairs_final_20260813/pair_005.win b/analysis/pairs_final_20260813/pair_005.win new file mode 100644 index 0000000..468fa81 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_005.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dec11d189bf84661620604233804900cab81436720e219b08e702e720254e97 +size 32 diff --git a/analysis/pairs_final_20260813/pair_006.blind b/analysis/pairs_final_20260813/pair_006.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.blind differ diff --git a/analysis/pairs_final_20260813/pair_006.cbrgb b/analysis/pairs_final_20260813/pair_006.cbrgb new file mode 100644 index 0000000..65334bd --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cbed3685f1f962bb31a07bbc3cfb808e9022acd364d39cf93b3c6fd7a11e2d0 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_006.cdf b/analysis/pairs_final_20260813/pair_006.cdf new file mode 100644 index 0000000..90de3ae Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.cdf differ diff --git a/analysis/pairs_final_20260813/pair_006.f20 b/analysis/pairs_final_20260813/pair_006.f20 new file mode 100644 index 0000000..c4b5f06 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a127fe4eab0bd90d6ba732025660e442c9dc0fdd6ce40ba207ae29ecda5c76ef +size 38400 diff --git a/analysis/pairs_final_20260813/pair_006.g0 b/analysis/pairs_final_20260813/pair_006.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.g0 differ diff --git a/analysis/pairs_final_20260813/pair_006.g1 b/analysis/pairs_final_20260813/pair_006.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.g1 differ diff --git a/analysis/pairs_final_20260813/pair_006.gray b/analysis/pairs_final_20260813/pair_006.gray new file mode 100644 index 0000000..b637c7c --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edd46329c70091f8410c05f9ff505134bef9360238b2489c4a0da0ff74e5093d +size 76800 diff --git a/analysis/pairs_final_20260813/pair_006.gw b/analysis/pairs_final_20260813/pair_006.gw new file mode 100644 index 0000000..56c0cd3 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.gw differ diff --git a/analysis/pairs_final_20260813/pair_006.h1024 b/analysis/pairs_final_20260813/pair_006.h1024 new file mode 100644 index 0000000..b54e69c Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_006.hist b/analysis/pairs_final_20260813/pair_006.hist new file mode 100644 index 0000000..f8a2cd0 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.hist differ diff --git a/analysis/pairs_final_20260813/pair_006.lut b/analysis/pairs_final_20260813/pair_006.lut new file mode 100644 index 0000000..24a8154 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aefc070deb84f25e4fe2ac861d80d288ee72d333dd0af724283c8ad480df11f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_006.meta b/analysis/pairs_final_20260813/pair_006.meta new file mode 100644 index 0000000..2650f8c Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.meta differ diff --git a/analysis/pairs_final_20260813/pair_006.pal b/analysis/pairs_final_20260813/pair_006.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_006.raw b/analysis/pairs_final_20260813/pair_006.raw new file mode 100644 index 0000000..0048fbc --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7be020c461c7dc1b700fd83ceec3219d78df40e7b2fba145441ca8a10d66e4e9 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_006.ref b/analysis/pairs_final_20260813/pair_006.ref new file mode 100644 index 0000000..05c59b6 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa3d66d4187ad0ee92683c0f4aef1e66b7774deb6d8612ca725a6e163906ac40 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_006.rgb b/analysis/pairs_final_20260813/pair_006.rgb new file mode 100644 index 0000000..65334bd --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cbed3685f1f962bb31a07bbc3cfb808e9022acd364d39cf93b3c6fd7a11e2d0 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_006.t32 b/analysis/pairs_final_20260813/pair_006.t32 new file mode 100644 index 0000000..ebe7f95 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a8db3c383ae63259297e90f903ef6477b27f954467582dd2e4ee73eb09e961 +size 76800 diff --git a/analysis/pairs_final_20260813/pair_006.thr0 b/analysis/pairs_final_20260813/pair_006.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_006.thr1 b/analysis/pairs_final_20260813/pair_006.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_006.thrw b/analysis/pairs_final_20260813/pair_006.thrw new file mode 100644 index 0000000..8c73b04 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_006.thrw differ diff --git a/analysis/pairs_final_20260813/pair_006.win b/analysis/pairs_final_20260813/pair_006.win new file mode 100644 index 0000000..650abe3 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_006.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05d785b1df31824d8c9f824e8b5d8e1d8e61a044d32014a748d4042fc347dd2e +size 32 diff --git a/analysis/pairs_final_20260813/pair_007.blind b/analysis/pairs_final_20260813/pair_007.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.blind differ diff --git a/analysis/pairs_final_20260813/pair_007.cbrgb b/analysis/pairs_final_20260813/pair_007.cbrgb new file mode 100644 index 0000000..3e78347 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bedb7bce692196b3af4dd8345d1c78be1531775e9d5f5ca66b89efbfdae77f16 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_007.cdf b/analysis/pairs_final_20260813/pair_007.cdf new file mode 100644 index 0000000..457030c Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.cdf differ diff --git a/analysis/pairs_final_20260813/pair_007.f20 b/analysis/pairs_final_20260813/pair_007.f20 new file mode 100644 index 0000000..069aec7 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95f284f8b5af0b9b02902a42b6bcc8b644946a333373bdf2628da15f6fcacd71 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_007.g0 b/analysis/pairs_final_20260813/pair_007.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.g0 differ diff --git a/analysis/pairs_final_20260813/pair_007.g1 b/analysis/pairs_final_20260813/pair_007.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.g1 differ diff --git a/analysis/pairs_final_20260813/pair_007.gray b/analysis/pairs_final_20260813/pair_007.gray new file mode 100644 index 0000000..e539ee8 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7983dfe54a8d2730901870d99477f7ed09b378625aa3f652840e42b5c220be6f +size 76800 diff --git a/analysis/pairs_final_20260813/pair_007.gw b/analysis/pairs_final_20260813/pair_007.gw new file mode 100644 index 0000000..56c0cd3 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.gw differ diff --git a/analysis/pairs_final_20260813/pair_007.h1024 b/analysis/pairs_final_20260813/pair_007.h1024 new file mode 100644 index 0000000..697a4e5 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.h1024 differ diff --git a/analysis/pairs_final_20260813/pair_007.hist b/analysis/pairs_final_20260813/pair_007.hist new file mode 100644 index 0000000..2dfa1d4 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.hist differ diff --git a/analysis/pairs_final_20260813/pair_007.lut b/analysis/pairs_final_20260813/pair_007.lut new file mode 100644 index 0000000..077035c --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58fef61ce40e67cd2995dd828acb33b94e1d448ab8acb6390e12c22b53a41d08 +size 1024 diff --git a/analysis/pairs_final_20260813/pair_007.meta b/analysis/pairs_final_20260813/pair_007.meta new file mode 100644 index 0000000..f681625 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.meta differ diff --git a/analysis/pairs_final_20260813/pair_007.pal b/analysis/pairs_final_20260813/pair_007.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_final_20260813/pair_007.raw b/analysis/pairs_final_20260813/pair_007.raw new file mode 100644 index 0000000..06f92af --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25eaa2c63b0dcb811a6fbf29e57be177f6337cc28920b6bdfefc6a6d2f007062 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_007.ref b/analysis/pairs_final_20260813/pair_007.ref new file mode 100644 index 0000000..05c59b6 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa3d66d4187ad0ee92683c0f4aef1e66b7774deb6d8612ca725a6e163906ac40 +size 38400 diff --git a/analysis/pairs_final_20260813/pair_007.rgb b/analysis/pairs_final_20260813/pair_007.rgb new file mode 100644 index 0000000..3e78347 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bedb7bce692196b3af4dd8345d1c78be1531775e9d5f5ca66b89efbfdae77f16 +size 230400 diff --git a/analysis/pairs_final_20260813/pair_007.t32 b/analysis/pairs_final_20260813/pair_007.t32 new file mode 100644 index 0000000..70fddc4 --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e2b986aa12ee379b009490aaa42784226a523df0daab2f13e345abff73b377c +size 76800 diff --git a/analysis/pairs_final_20260813/pair_007.thr0 b/analysis/pairs_final_20260813/pair_007.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.thr0 differ diff --git a/analysis/pairs_final_20260813/pair_007.thr1 b/analysis/pairs_final_20260813/pair_007.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.thr1 differ diff --git a/analysis/pairs_final_20260813/pair_007.thrw b/analysis/pairs_final_20260813/pair_007.thrw new file mode 100644 index 0000000..8c73b04 Binary files /dev/null and b/analysis/pairs_final_20260813/pair_007.thrw differ diff --git a/analysis/pairs_final_20260813/pair_007.win b/analysis/pairs_final_20260813/pair_007.win new file mode 100644 index 0000000..ec0087a --- /dev/null +++ b/analysis/pairs_final_20260813/pair_007.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87bda8cc96405ec0c178ace5e930540e1b2f3f44df5bfb05c313a183b7b7557f +size 32 diff --git a/analysis/pairs_final_20260813/run.log b/analysis/pairs_final_20260813/run.log new file mode 100644 index 0000000..9f85068 Binary files /dev/null and b/analysis/pairs_final_20260813/run.log differ diff --git a/analysis/pairs_verify_20260813/config.txt b/analysis/pairs_verify_20260813/config.txt new file mode 100644 index 0000000..a2dd6c1 --- /dev/null +++ b/analysis/pairs_verify_20260813/config.txt @@ -0,0 +1,17 @@ +dev24=5 dev48=0 dev4c=0 dev54=31582 dev58=31082 dev5c=31612 dev60=31112 +11c=12 41340=1 41344=0 41348=1 4134c=C:\Users\ZXC\AppData\Local\Temp\Core160043865 +41558=6 41554=3 4155c=1024 41560=0 47944=8 47948=-50000 4794c=3 47950=0 47954=0 47938=19200 +T: 8304 18390 28495 33637 38730 47664 +B: 7804 17890 27995 33137 38230 47164 +C: 7987 9245 10566 11309 11944 13468 +D(blind cnt): 32 32 32 32 32 +loaded: 0 0 1 1 0 0 +offsets(41708): 128 308352 616576 924800 1233024 1541248 +thr_off(41758): 0 308224 616448 924672 1232896 1541120 +blind_off(417a8): 1849472 1850752 1852032 1853312 1854592 0 +blind_off2(417f4): 0 1280 2560 3840 5120 0 +bases: 416a0=000001e0c36b5040 416a8=000001e0c350ddc0 416b0=000001e0c2fbc820 +41840=2 41848=000001e0c374b840 41850=000001e0c3796c40 41858=000001e0c350ddc0 41860=000001e0c375e840 41868=000001e0c37a9c40 41870=000001e0c3520dc0 41878=000001e0c2fbd220 +41f0c=1 41f3c=1 41fdc=1 41fe0=1 41fe4=5 41fe8=0 +2d47=0 2d86=0 2d78=0 2d88=0 2d8c=0 2d90=0 2d94=0 2d98=0 2d9c=0 +47940=3840 44c50=0 44c60=0 44c64=0 44c68=0 42010=10733 42014=9455 diff --git a/analysis/pairs_verify_20260813/official.ddt b/analysis/pairs_verify_20260813/official.ddt new file mode 100644 index 0000000..1289070 Binary files /dev/null and b/analysis/pairs_verify_20260813/official.ddt differ diff --git a/analysis/pairs_verify_20260813/pair_000.blind b/analysis/pairs_verify_20260813/pair_000.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.blind differ diff --git a/analysis/pairs_verify_20260813/pair_000.cbrgb b/analysis/pairs_verify_20260813/pair_000.cbrgb new file mode 100644 index 0000000..92aec33 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d3433e914543c6a2f74974c7549335e6a31ebf2b08912c7de1e5044e37487ca +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_000.cdf b/analysis/pairs_verify_20260813/pair_000.cdf new file mode 100644 index 0000000..eb55360 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_000.f20 b/analysis/pairs_verify_20260813/pair_000.f20 new file mode 100644 index 0000000..d63fcc2 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e553562d8fe1d13613293f56933426958d908e7355fc86b5db7cfa6a267ac010 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_000.g0 b/analysis/pairs_verify_20260813/pair_000.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_000.g1 b/analysis/pairs_verify_20260813/pair_000.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_000.gray b/analysis/pairs_verify_20260813/pair_000.gray new file mode 100644 index 0000000..0dbc80c --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d7ba701cceb599d2533b3e6f5075fd0a0aca25b456475a2e72f1d7443267182 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_000.gw b/analysis/pairs_verify_20260813/pair_000.gw new file mode 100644 index 0000000..79d6e8c Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.gw differ diff --git a/analysis/pairs_verify_20260813/pair_000.h1024 b/analysis/pairs_verify_20260813/pair_000.h1024 new file mode 100644 index 0000000..386b470 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_000.hist b/analysis/pairs_verify_20260813/pair_000.hist new file mode 100644 index 0000000..4d52344 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.hist differ diff --git a/analysis/pairs_verify_20260813/pair_000.lut b/analysis/pairs_verify_20260813/pair_000.lut new file mode 100644 index 0000000..28db93e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1017671940acfda6d00f78121e29586d7eae5e927833e97d41a399b425c02779 +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_000.meta b/analysis/pairs_verify_20260813/pair_000.meta new file mode 100644 index 0000000..aa2e771 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.meta differ diff --git a/analysis/pairs_verify_20260813/pair_000.pal b/analysis/pairs_verify_20260813/pair_000.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_000.raw b/analysis/pairs_verify_20260813/pair_000.raw new file mode 100644 index 0000000..0ab4ab6 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0afbf3c344ca5538d2b8edcc1dac4a0dca2546f47f340918aeb609b73387a066 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_000.ref b/analysis/pairs_verify_20260813/pair_000.ref new file mode 100644 index 0000000..9d4a14b --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e86ef104e9ded0e573f49c64ae8516a16687d1882678963860b3894d6bdfda79 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_000.rgb b/analysis/pairs_verify_20260813/pair_000.rgb new file mode 100644 index 0000000..92aec33 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d3433e914543c6a2f74974c7549335e6a31ebf2b08912c7de1e5044e37487ca +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_000.t32 b/analysis/pairs_verify_20260813/pair_000.t32 new file mode 100644 index 0000000..7a4ada1 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c1b0d62bab59643c3fbb54d0ae5f5cab5117cdaef1dbd5049a9e19ad3fcb673 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_000.thr0 b/analysis/pairs_verify_20260813/pair_000.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_000.thr1 b/analysis/pairs_verify_20260813/pair_000.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_000.thrw b/analysis/pairs_verify_20260813/pair_000.thrw new file mode 100644 index 0000000..06eef7f Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_000.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_000.win b/analysis/pairs_verify_20260813/pair_000.win new file mode 100644 index 0000000..890d05e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_000.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cdb6b9ff831e986135a1833a41dd2a6cca9fd16023373f10de52632bffa83f5 +size 32 diff --git a/analysis/pairs_verify_20260813/pair_001.blind b/analysis/pairs_verify_20260813/pair_001.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.blind differ diff --git a/analysis/pairs_verify_20260813/pair_001.cbrgb b/analysis/pairs_verify_20260813/pair_001.cbrgb new file mode 100644 index 0000000..7ea418a --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce1d3b259addf51ef8461784eb2142645d001be3d2caa89db4d507fe4e995708 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_001.cdf b/analysis/pairs_verify_20260813/pair_001.cdf new file mode 100644 index 0000000..144ca25 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_001.f20 b/analysis/pairs_verify_20260813/pair_001.f20 new file mode 100644 index 0000000..a94519c --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24191c0d5def7fece5b2d4388a7fcd2ba037be6ae48c806010ddb4d5481d913a +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_001.g0 b/analysis/pairs_verify_20260813/pair_001.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_001.g1 b/analysis/pairs_verify_20260813/pair_001.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_001.gray b/analysis/pairs_verify_20260813/pair_001.gray new file mode 100644 index 0000000..abe6002 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:129bf17c141d3c9c3d8d512642bfdf9de6fdc6246a2dd0afd4187ab58f6bed1f +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_001.gw b/analysis/pairs_verify_20260813/pair_001.gw new file mode 100644 index 0000000..79d6e8c Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.gw differ diff --git a/analysis/pairs_verify_20260813/pair_001.h1024 b/analysis/pairs_verify_20260813/pair_001.h1024 new file mode 100644 index 0000000..9db567f Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_001.hist b/analysis/pairs_verify_20260813/pair_001.hist new file mode 100644 index 0000000..84fe7cd Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.hist differ diff --git a/analysis/pairs_verify_20260813/pair_001.lut b/analysis/pairs_verify_20260813/pair_001.lut new file mode 100644 index 0000000..017bb5a --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91e5af727f3eaf555178710890409f5dbd70547aae9a15e7c785b9dc8559cdb0 +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_001.meta b/analysis/pairs_verify_20260813/pair_001.meta new file mode 100644 index 0000000..35f4473 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.meta differ diff --git a/analysis/pairs_verify_20260813/pair_001.pal b/analysis/pairs_verify_20260813/pair_001.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_001.raw b/analysis/pairs_verify_20260813/pair_001.raw new file mode 100644 index 0000000..de03ad1 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fb55bdc169f03f2169518df7b04370ff76f45c956bd31e452562cea0bc7b6c7 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_001.ref b/analysis/pairs_verify_20260813/pair_001.ref new file mode 100644 index 0000000..9d4a14b --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e86ef104e9ded0e573f49c64ae8516a16687d1882678963860b3894d6bdfda79 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_001.rgb b/analysis/pairs_verify_20260813/pair_001.rgb new file mode 100644 index 0000000..7ea418a --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce1d3b259addf51ef8461784eb2142645d001be3d2caa89db4d507fe4e995708 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_001.t32 b/analysis/pairs_verify_20260813/pair_001.t32 new file mode 100644 index 0000000..485acae --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63b32ae0477d915cd37c1dcda3411b804b5481fb6252818e4a5f932b83eed9df +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_001.thr0 b/analysis/pairs_verify_20260813/pair_001.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_001.thr1 b/analysis/pairs_verify_20260813/pair_001.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_001.thrw b/analysis/pairs_verify_20260813/pair_001.thrw new file mode 100644 index 0000000..06eef7f Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_001.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_001.win b/analysis/pairs_verify_20260813/pair_001.win new file mode 100644 index 0000000..954ea43 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_001.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0eae4920c8bc2dc8f1d6860488c5280d219cc79780872773db4f0f65312bb90 +size 32 diff --git a/analysis/pairs_verify_20260813/pair_002.blind b/analysis/pairs_verify_20260813/pair_002.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.blind differ diff --git a/analysis/pairs_verify_20260813/pair_002.cbrgb b/analysis/pairs_verify_20260813/pair_002.cbrgb new file mode 100644 index 0000000..0c0fc6a --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab034649fca0146ca7a17beeee547601cc11a283a70ed2579c327e463933b99d +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_002.cdf b/analysis/pairs_verify_20260813/pair_002.cdf new file mode 100644 index 0000000..9009254 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_002.f20 b/analysis/pairs_verify_20260813/pair_002.f20 new file mode 100644 index 0000000..dd58872 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ab5e2bb67099809c0f742753fc595e043ffc0a0019ee0ebf7bda6c869ee4876 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_002.g0 b/analysis/pairs_verify_20260813/pair_002.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_002.g1 b/analysis/pairs_verify_20260813/pair_002.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_002.gray b/analysis/pairs_verify_20260813/pair_002.gray new file mode 100644 index 0000000..0520b2e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f75bb46a601282cffee5a0602c93d95b022a0ddd1a6ce74c7cf58ba1fe97ed24 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_002.gw b/analysis/pairs_verify_20260813/pair_002.gw new file mode 100644 index 0000000..79d6e8c Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.gw differ diff --git a/analysis/pairs_verify_20260813/pair_002.h1024 b/analysis/pairs_verify_20260813/pair_002.h1024 new file mode 100644 index 0000000..a5a9b39 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_002.hist b/analysis/pairs_verify_20260813/pair_002.hist new file mode 100644 index 0000000..3f759c8 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.hist differ diff --git a/analysis/pairs_verify_20260813/pair_002.lut b/analysis/pairs_verify_20260813/pair_002.lut new file mode 100644 index 0000000..4339669 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2611bf9cdc730004b5688661434521414ac0fcc10103985d4bdad5551e3955bc +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_002.meta b/analysis/pairs_verify_20260813/pair_002.meta new file mode 100644 index 0000000..cf3aec8 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.meta differ diff --git a/analysis/pairs_verify_20260813/pair_002.pal b/analysis/pairs_verify_20260813/pair_002.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_002.raw b/analysis/pairs_verify_20260813/pair_002.raw new file mode 100644 index 0000000..44d0f07 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56cd46e5d445b767adbd079f35605e3bb5a04e6fa2b71b763511b5c71710f469 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_002.ref b/analysis/pairs_verify_20260813/pair_002.ref new file mode 100644 index 0000000..9d4a14b --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e86ef104e9ded0e573f49c64ae8516a16687d1882678963860b3894d6bdfda79 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_002.rgb b/analysis/pairs_verify_20260813/pair_002.rgb new file mode 100644 index 0000000..0c0fc6a --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab034649fca0146ca7a17beeee547601cc11a283a70ed2579c327e463933b99d +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_002.t32 b/analysis/pairs_verify_20260813/pair_002.t32 new file mode 100644 index 0000000..a5bfd1d --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba39538f9d8a34b0b91f92b26fba59ca355581f74bdf2e648edf27b8ddd06098 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_002.thr0 b/analysis/pairs_verify_20260813/pair_002.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_002.thr1 b/analysis/pairs_verify_20260813/pair_002.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_002.thrw b/analysis/pairs_verify_20260813/pair_002.thrw new file mode 100644 index 0000000..06eef7f Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_002.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_002.win b/analysis/pairs_verify_20260813/pair_002.win new file mode 100644 index 0000000..1489fe4 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_002.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bcaf84b6001c35798824a87179429c19edf32c97d9406f377b0ec6117a460ea +size 32 diff --git a/analysis/pairs_verify_20260813/pair_003.blind b/analysis/pairs_verify_20260813/pair_003.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.blind differ diff --git a/analysis/pairs_verify_20260813/pair_003.cbrgb b/analysis/pairs_verify_20260813/pair_003.cbrgb new file mode 100644 index 0000000..1d03e6e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ecbf9d44618d8f9ead2c14a7ce8d7b127b4a994684d734d2c5c48825c717147 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_003.cdf b/analysis/pairs_verify_20260813/pair_003.cdf new file mode 100644 index 0000000..10fd251 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_003.f20 b/analysis/pairs_verify_20260813/pair_003.f20 new file mode 100644 index 0000000..c1fb0e3 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5359988a789e47a465f14185537363d69eeba4e40a06a0217bb2b96e41e50512 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_003.g0 b/analysis/pairs_verify_20260813/pair_003.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_003.g1 b/analysis/pairs_verify_20260813/pair_003.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_003.gray b/analysis/pairs_verify_20260813/pair_003.gray new file mode 100644 index 0000000..5599c3a --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b62f557861fa063cfaa8bc4cd744fe4ce5e65eea42152cc5d48e90a37e31e184 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_003.gw b/analysis/pairs_verify_20260813/pair_003.gw new file mode 100644 index 0000000..d711e69 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.gw differ diff --git a/analysis/pairs_verify_20260813/pair_003.h1024 b/analysis/pairs_verify_20260813/pair_003.h1024 new file mode 100644 index 0000000..aae404b Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_003.hist b/analysis/pairs_verify_20260813/pair_003.hist new file mode 100644 index 0000000..c573bc4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.hist differ diff --git a/analysis/pairs_verify_20260813/pair_003.lut b/analysis/pairs_verify_20260813/pair_003.lut new file mode 100644 index 0000000..fcdb466 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2957c911c32d4d5c972283d5f3f2c60979592ff991ae7c0a35cb1635cab17084 +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_003.meta b/analysis/pairs_verify_20260813/pair_003.meta new file mode 100644 index 0000000..b36c501 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.meta differ diff --git a/analysis/pairs_verify_20260813/pair_003.pal b/analysis/pairs_verify_20260813/pair_003.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_003.raw b/analysis/pairs_verify_20260813/pair_003.raw new file mode 100644 index 0000000..3dbc70e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36517d3d8badac3373e983357a9ca4b48c7f6a239b7897d2ee984054fb7d048b +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_003.ref b/analysis/pairs_verify_20260813/pair_003.ref new file mode 100644 index 0000000..a5110bd --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8907ad20a758e86631d49d16f5ebfed4817559e9087425075cd1542796c14587 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_003.rgb b/analysis/pairs_verify_20260813/pair_003.rgb new file mode 100644 index 0000000..1d03e6e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ecbf9d44618d8f9ead2c14a7ce8d7b127b4a994684d734d2c5c48825c717147 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_003.t32 b/analysis/pairs_verify_20260813/pair_003.t32 new file mode 100644 index 0000000..0286995 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f0fa86a6af4860dbaefc75713cd889b04048f7ae3b795a9677be398dc7f3d96 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_003.thr0 b/analysis/pairs_verify_20260813/pair_003.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_003.thr1 b/analysis/pairs_verify_20260813/pair_003.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_003.thrw b/analysis/pairs_verify_20260813/pair_003.thrw new file mode 100644 index 0000000..ea4c292 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_003.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_003.win b/analysis/pairs_verify_20260813/pair_003.win new file mode 100644 index 0000000..7b3452b --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_003.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:119b06e78d5814617d8c82b12f52e325b5dc5bf6470fa16940c245a7e5168f8b +size 32 diff --git a/analysis/pairs_verify_20260813/pair_004.blind b/analysis/pairs_verify_20260813/pair_004.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.blind differ diff --git a/analysis/pairs_verify_20260813/pair_004.cbrgb b/analysis/pairs_verify_20260813/pair_004.cbrgb new file mode 100644 index 0000000..397fe0c --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b003e5a8f4da17147383825672311b774a5211fa08af6570d617b70196c86f4b +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_004.cdf b/analysis/pairs_verify_20260813/pair_004.cdf new file mode 100644 index 0000000..7bec184 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_004.f20 b/analysis/pairs_verify_20260813/pair_004.f20 new file mode 100644 index 0000000..150b645 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4817727fcf28f621e4e3d506c7f9d068c71ea5e90cd5230adc02848a1dcc81dd +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_004.g0 b/analysis/pairs_verify_20260813/pair_004.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_004.g1 b/analysis/pairs_verify_20260813/pair_004.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_004.gray b/analysis/pairs_verify_20260813/pair_004.gray new file mode 100644 index 0000000..cd70150 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93e111f974062e46006e6816ed9863fc867a8d1e38ba7c2c06d119f0c2a1c76c +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_004.gw b/analysis/pairs_verify_20260813/pair_004.gw new file mode 100644 index 0000000..d711e69 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.gw differ diff --git a/analysis/pairs_verify_20260813/pair_004.h1024 b/analysis/pairs_verify_20260813/pair_004.h1024 new file mode 100644 index 0000000..5eae19e Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_004.hist b/analysis/pairs_verify_20260813/pair_004.hist new file mode 100644 index 0000000..ebc6d51 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.hist differ diff --git a/analysis/pairs_verify_20260813/pair_004.lut b/analysis/pairs_verify_20260813/pair_004.lut new file mode 100644 index 0000000..fa5d2c9 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e30244cbabc12a6223f5201c4a3fc4f2438e2e05830a810bd0d7884bc7c8196 +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_004.meta b/analysis/pairs_verify_20260813/pair_004.meta new file mode 100644 index 0000000..16a34ee Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.meta differ diff --git a/analysis/pairs_verify_20260813/pair_004.pal b/analysis/pairs_verify_20260813/pair_004.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_004.raw b/analysis/pairs_verify_20260813/pair_004.raw new file mode 100644 index 0000000..fb11000 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7af81a5132cf049f59340c64a97d595723cfcf0899ef4ab9546564105ed79940 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_004.ref b/analysis/pairs_verify_20260813/pair_004.ref new file mode 100644 index 0000000..a5110bd --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8907ad20a758e86631d49d16f5ebfed4817559e9087425075cd1542796c14587 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_004.rgb b/analysis/pairs_verify_20260813/pair_004.rgb new file mode 100644 index 0000000..397fe0c --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b003e5a8f4da17147383825672311b774a5211fa08af6570d617b70196c86f4b +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_004.t32 b/analysis/pairs_verify_20260813/pair_004.t32 new file mode 100644 index 0000000..8275c7d --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a200506b9a4773f756bdcd3bb986f764b5e560677c875b8c26a82e2a797a86c +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_004.thr0 b/analysis/pairs_verify_20260813/pair_004.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_004.thr1 b/analysis/pairs_verify_20260813/pair_004.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_004.thrw b/analysis/pairs_verify_20260813/pair_004.thrw new file mode 100644 index 0000000..ea4c292 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_004.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_004.win b/analysis/pairs_verify_20260813/pair_004.win new file mode 100644 index 0000000..d9e1c42 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_004.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caf9de46e963731701500aebf3264ecb5c0dd7aa8a0f1964d15bd6868fc01ebc +size 32 diff --git a/analysis/pairs_verify_20260813/pair_005.blind b/analysis/pairs_verify_20260813/pair_005.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.blind differ diff --git a/analysis/pairs_verify_20260813/pair_005.cbrgb b/analysis/pairs_verify_20260813/pair_005.cbrgb new file mode 100644 index 0000000..c994842 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:565984adb65ef1eac94684ea2674e7e22f3dd18a2783ccb83ebf3ab4af9a079b +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_005.cdf b/analysis/pairs_verify_20260813/pair_005.cdf new file mode 100644 index 0000000..042bb7a Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_005.f20 b/analysis/pairs_verify_20260813/pair_005.f20 new file mode 100644 index 0000000..f2054de --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:535945dfe642d30e4f8a92b75ed5ac7674647a8685105f72db921cc32abed2fa +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_005.g0 b/analysis/pairs_verify_20260813/pair_005.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_005.g1 b/analysis/pairs_verify_20260813/pair_005.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_005.gray b/analysis/pairs_verify_20260813/pair_005.gray new file mode 100644 index 0000000..8b86397 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b43a999b2919356a6eba8fa4280237f15eec222456679e7663abe7dde010002d +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_005.gw b/analysis/pairs_verify_20260813/pair_005.gw new file mode 100644 index 0000000..d711e69 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.gw differ diff --git a/analysis/pairs_verify_20260813/pair_005.h1024 b/analysis/pairs_verify_20260813/pair_005.h1024 new file mode 100644 index 0000000..1b79c74 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_005.hist b/analysis/pairs_verify_20260813/pair_005.hist new file mode 100644 index 0000000..85446a0 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.hist differ diff --git a/analysis/pairs_verify_20260813/pair_005.lut b/analysis/pairs_verify_20260813/pair_005.lut new file mode 100644 index 0000000..437ec20 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63bbf6bba520fcb0a8fd83c63b920d93e883b5548e1336b0cef70773509a29cd +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_005.meta b/analysis/pairs_verify_20260813/pair_005.meta new file mode 100644 index 0000000..6c6bba1 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.meta differ diff --git a/analysis/pairs_verify_20260813/pair_005.pal b/analysis/pairs_verify_20260813/pair_005.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_005.raw b/analysis/pairs_verify_20260813/pair_005.raw new file mode 100644 index 0000000..d05a6f2 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c192c483277f548a0e407d22212ac7023d77eb0a215ec66f31cc6681924cb5a +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_005.ref b/analysis/pairs_verify_20260813/pair_005.ref new file mode 100644 index 0000000..a5110bd --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8907ad20a758e86631d49d16f5ebfed4817559e9087425075cd1542796c14587 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_005.rgb b/analysis/pairs_verify_20260813/pair_005.rgb new file mode 100644 index 0000000..c994842 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:565984adb65ef1eac94684ea2674e7e22f3dd18a2783ccb83ebf3ab4af9a079b +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_005.t32 b/analysis/pairs_verify_20260813/pair_005.t32 new file mode 100644 index 0000000..f6a0775 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e08878016a84d3ad7ae564ed88165ebf28213b29b0e7991a624b88a0d79ce16 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_005.thr0 b/analysis/pairs_verify_20260813/pair_005.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_005.thr1 b/analysis/pairs_verify_20260813/pair_005.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_005.thrw b/analysis/pairs_verify_20260813/pair_005.thrw new file mode 100644 index 0000000..ea4c292 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_005.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_005.win b/analysis/pairs_verify_20260813/pair_005.win new file mode 100644 index 0000000..059b1a1 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_005.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee1113af0d8f758c3f404f2006ea419344f3a7b049aab5ee52c53c9f15999420 +size 32 diff --git a/analysis/pairs_verify_20260813/pair_006.blind b/analysis/pairs_verify_20260813/pair_006.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.blind differ diff --git a/analysis/pairs_verify_20260813/pair_006.cbrgb b/analysis/pairs_verify_20260813/pair_006.cbrgb new file mode 100644 index 0000000..a98c81e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e25cce35c087e44b65d55808e6664a44edb56b92df28d9799ac57c9f90b888 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_006.cdf b/analysis/pairs_verify_20260813/pair_006.cdf new file mode 100644 index 0000000..06d319a Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_006.f20 b/analysis/pairs_verify_20260813/pair_006.f20 new file mode 100644 index 0000000..8949709 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:707cd0111102574ff66cd5d98308d2cd1bba3e3917f882edbf43dc9fea0d44e6 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_006.g0 b/analysis/pairs_verify_20260813/pair_006.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_006.g1 b/analysis/pairs_verify_20260813/pair_006.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_006.gray b/analysis/pairs_verify_20260813/pair_006.gray new file mode 100644 index 0000000..49e175e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:299c752f920255c9799f746ccb7906bbac06e779612067a49a634e8adcf145e8 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_006.gw b/analysis/pairs_verify_20260813/pair_006.gw new file mode 100644 index 0000000..aa26734 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.gw differ diff --git a/analysis/pairs_verify_20260813/pair_006.h1024 b/analysis/pairs_verify_20260813/pair_006.h1024 new file mode 100644 index 0000000..0331b34 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_006.hist b/analysis/pairs_verify_20260813/pair_006.hist new file mode 100644 index 0000000..2af6972 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.hist differ diff --git a/analysis/pairs_verify_20260813/pair_006.lut b/analysis/pairs_verify_20260813/pair_006.lut new file mode 100644 index 0000000..58f7ddc --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b164d0dfb95a2c43090ac1c648f04c543312c7eee0866a556bc878ce503f174 +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_006.meta b/analysis/pairs_verify_20260813/pair_006.meta new file mode 100644 index 0000000..b4d85e7 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.meta differ diff --git a/analysis/pairs_verify_20260813/pair_006.pal b/analysis/pairs_verify_20260813/pair_006.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_006.raw b/analysis/pairs_verify_20260813/pair_006.raw new file mode 100644 index 0000000..5f05b4e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86bd14e1a5c74b5859559d1c73dbd84202fd72cc29174c4026c8b020617f583a +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_006.ref b/analysis/pairs_verify_20260813/pair_006.ref new file mode 100644 index 0000000..93f4503 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a85642dbe3942422ade280c0d4101fecde8be42305718de8617a7e787ae88d +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_006.rgb b/analysis/pairs_verify_20260813/pair_006.rgb new file mode 100644 index 0000000..a98c81e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e25cce35c087e44b65d55808e6664a44edb56b92df28d9799ac57c9f90b888 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_006.t32 b/analysis/pairs_verify_20260813/pair_006.t32 new file mode 100644 index 0000000..d844752 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01c0c7840c981f03816a698045581f42f97ac10b0e8ce81383d67b8ca70eba4a +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_006.thr0 b/analysis/pairs_verify_20260813/pair_006.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_006.thr1 b/analysis/pairs_verify_20260813/pair_006.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_006.thrw b/analysis/pairs_verify_20260813/pair_006.thrw new file mode 100644 index 0000000..c1e9bc1 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_006.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_006.win b/analysis/pairs_verify_20260813/pair_006.win new file mode 100644 index 0000000..3f9ae67 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_006.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06d406453f45a462a89fe23fb25c7127d2417bc6577e22ab6d84c021915254b9 +size 32 diff --git a/analysis/pairs_verify_20260813/pair_007.blind b/analysis/pairs_verify_20260813/pair_007.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.blind differ diff --git a/analysis/pairs_verify_20260813/pair_007.cbrgb b/analysis/pairs_verify_20260813/pair_007.cbrgb new file mode 100644 index 0000000..f463a7d --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bf4f47645188e8002623436c8a5408d4a8b567651a81d6542e51ff3cb4de413 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_007.cdf b/analysis/pairs_verify_20260813/pair_007.cdf new file mode 100644 index 0000000..89acbbf Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_007.f20 b/analysis/pairs_verify_20260813/pair_007.f20 new file mode 100644 index 0000000..0d09b91 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a6b59312287548b653c19a7775abe618e67b2ce761363f06e2d20a4e310f2b9 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_007.g0 b/analysis/pairs_verify_20260813/pair_007.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_007.g1 b/analysis/pairs_verify_20260813/pair_007.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_007.gray b/analysis/pairs_verify_20260813/pair_007.gray new file mode 100644 index 0000000..fe0e1c0 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8f8a83bb61d24c25ae1e654c25929964f2100456d1cd0b38f7032c008cfd004 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_007.gw b/analysis/pairs_verify_20260813/pair_007.gw new file mode 100644 index 0000000..aa26734 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.gw differ diff --git a/analysis/pairs_verify_20260813/pair_007.h1024 b/analysis/pairs_verify_20260813/pair_007.h1024 new file mode 100644 index 0000000..79b881c Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_007.hist b/analysis/pairs_verify_20260813/pair_007.hist new file mode 100644 index 0000000..2d9668f Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.hist differ diff --git a/analysis/pairs_verify_20260813/pair_007.lut b/analysis/pairs_verify_20260813/pair_007.lut new file mode 100644 index 0000000..0bd6b5c --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e95dab48bed41afc4775d8090881a23ba80de04aef0c0cdc502e10e136b1e43c +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_007.meta b/analysis/pairs_verify_20260813/pair_007.meta new file mode 100644 index 0000000..3d7987d Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.meta differ diff --git a/analysis/pairs_verify_20260813/pair_007.pal b/analysis/pairs_verify_20260813/pair_007.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_007.raw b/analysis/pairs_verify_20260813/pair_007.raw new file mode 100644 index 0000000..667b4fd --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a35637c29c2aad7d052ea3cfa5f1e8d1449012343fd4226167365fb69f6ddcbd +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_007.ref b/analysis/pairs_verify_20260813/pair_007.ref new file mode 100644 index 0000000..93f4503 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a85642dbe3942422ade280c0d4101fecde8be42305718de8617a7e787ae88d +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_007.rgb b/analysis/pairs_verify_20260813/pair_007.rgb new file mode 100644 index 0000000..f463a7d --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bf4f47645188e8002623436c8a5408d4a8b567651a81d6542e51ff3cb4de413 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_007.t32 b/analysis/pairs_verify_20260813/pair_007.t32 new file mode 100644 index 0000000..f0fde8d --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3572e955987ea243f375e5b99cb37056349cf09a4907196e31b28cdb0eda8ed0 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_007.thr0 b/analysis/pairs_verify_20260813/pair_007.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_007.thr1 b/analysis/pairs_verify_20260813/pair_007.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_007.thrw b/analysis/pairs_verify_20260813/pair_007.thrw new file mode 100644 index 0000000..c1e9bc1 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_007.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_007.win b/analysis/pairs_verify_20260813/pair_007.win new file mode 100644 index 0000000..bb06103 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_007.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a4c3465a0a56fccb77c8edcbc3467c328758f198f5670a0201aca0baacda899 +size 32 diff --git a/analysis/pairs_verify_20260813/pair_008.blind b/analysis/pairs_verify_20260813/pair_008.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.blind differ diff --git a/analysis/pairs_verify_20260813/pair_008.cbrgb b/analysis/pairs_verify_20260813/pair_008.cbrgb new file mode 100644 index 0000000..166c532 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:650bde411acfe84e2ff401d1246b5cee3b572befd97eb6119c2c3f70edecb622 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_008.cdf b/analysis/pairs_verify_20260813/pair_008.cdf new file mode 100644 index 0000000..a7ec5c5 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_008.f20 b/analysis/pairs_verify_20260813/pair_008.f20 new file mode 100644 index 0000000..26f7d9f --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cef4d168408babd2be1a0bfeb17c611125f9569060e6fd632badcaad6e9d8ff9 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_008.g0 b/analysis/pairs_verify_20260813/pair_008.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_008.g1 b/analysis/pairs_verify_20260813/pair_008.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_008.gray b/analysis/pairs_verify_20260813/pair_008.gray new file mode 100644 index 0000000..370c45f --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e417ee5e5e7898f3484795134548ed5efff4e1b72adb769498ef8179c2b449c7 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_008.gw b/analysis/pairs_verify_20260813/pair_008.gw new file mode 100644 index 0000000..aa26734 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.gw differ diff --git a/analysis/pairs_verify_20260813/pair_008.h1024 b/analysis/pairs_verify_20260813/pair_008.h1024 new file mode 100644 index 0000000..ab59de2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_008.hist b/analysis/pairs_verify_20260813/pair_008.hist new file mode 100644 index 0000000..11db751 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.hist differ diff --git a/analysis/pairs_verify_20260813/pair_008.lut b/analysis/pairs_verify_20260813/pair_008.lut new file mode 100644 index 0000000..8309805 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68daea0a6e7d7ddd5f35c46b35e14f0acb1119c6235c66cd3717505ec263dfe2 +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_008.meta b/analysis/pairs_verify_20260813/pair_008.meta new file mode 100644 index 0000000..1b64d1f Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.meta differ diff --git a/analysis/pairs_verify_20260813/pair_008.pal b/analysis/pairs_verify_20260813/pair_008.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_008.raw b/analysis/pairs_verify_20260813/pair_008.raw new file mode 100644 index 0000000..e6259fb --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:779f305d76595d0596057043e596fc6265e23ce276100ce43179fb04fa7bdf86 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_008.ref b/analysis/pairs_verify_20260813/pair_008.ref new file mode 100644 index 0000000..93f4503 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a85642dbe3942422ade280c0d4101fecde8be42305718de8617a7e787ae88d +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_008.rgb b/analysis/pairs_verify_20260813/pair_008.rgb new file mode 100644 index 0000000..166c532 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:650bde411acfe84e2ff401d1246b5cee3b572befd97eb6119c2c3f70edecb622 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_008.t32 b/analysis/pairs_verify_20260813/pair_008.t32 new file mode 100644 index 0000000..8c4aaaf --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84d6a469bfd820a58d3dec3faaa269c5c7ebdc5217091d5670f257220573cb0b +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_008.thr0 b/analysis/pairs_verify_20260813/pair_008.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_008.thr1 b/analysis/pairs_verify_20260813/pair_008.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_008.thrw b/analysis/pairs_verify_20260813/pair_008.thrw new file mode 100644 index 0000000..c1e9bc1 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_008.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_008.win b/analysis/pairs_verify_20260813/pair_008.win new file mode 100644 index 0000000..2a8ab19 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_008.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95b4442cd634c8e32b91eb5d5bc17c05693dd89e09abce4582c101371ca3e775 +size 32 diff --git a/analysis/pairs_verify_20260813/pair_009.blind b/analysis/pairs_verify_20260813/pair_009.blind new file mode 100644 index 0000000..aad4233 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.blind differ diff --git a/analysis/pairs_verify_20260813/pair_009.cbrgb b/analysis/pairs_verify_20260813/pair_009.cbrgb new file mode 100644 index 0000000..11ebb38 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.cbrgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b51f8330149e386e974703d0473cd6c5d3f2d7ec17679ddfb7ba61ec065da5d0 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_009.cdf b/analysis/pairs_verify_20260813/pair_009.cdf new file mode 100644 index 0000000..53805b8 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.cdf differ diff --git a/analysis/pairs_verify_20260813/pair_009.f20 b/analysis/pairs_verify_20260813/pair_009.f20 new file mode 100644 index 0000000..56d8094 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.f20 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93a179d0689441524d3b811f924687c348e6cab00572a869d68bc519625012fa +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_009.g0 b/analysis/pairs_verify_20260813/pair_009.g0 new file mode 100644 index 0000000..cfc06e4 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.g0 differ diff --git a/analysis/pairs_verify_20260813/pair_009.g1 b/analysis/pairs_verify_20260813/pair_009.g1 new file mode 100644 index 0000000..5ed8f81 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.g1 differ diff --git a/analysis/pairs_verify_20260813/pair_009.gray b/analysis/pairs_verify_20260813/pair_009.gray new file mode 100644 index 0000000..72e1e16 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.gray @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cccfeb66e3efbe4476511038504cb9c27e4af59799885f63d8211b825f539b50 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_009.gw b/analysis/pairs_verify_20260813/pair_009.gw new file mode 100644 index 0000000..aa26734 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.gw differ diff --git a/analysis/pairs_verify_20260813/pair_009.h1024 b/analysis/pairs_verify_20260813/pair_009.h1024 new file mode 100644 index 0000000..50b2e9c Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.h1024 differ diff --git a/analysis/pairs_verify_20260813/pair_009.hist b/analysis/pairs_verify_20260813/pair_009.hist new file mode 100644 index 0000000..2be6fad Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.hist differ diff --git a/analysis/pairs_verify_20260813/pair_009.lut b/analysis/pairs_verify_20260813/pair_009.lut new file mode 100644 index 0000000..1017e4e --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.lut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b1ddb300bbbf5841cb514431da92a491910b6dca4da9f504210ae6dfbfc5cee +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_009.meta b/analysis/pairs_verify_20260813/pair_009.meta new file mode 100644 index 0000000..7438887 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.meta differ diff --git a/analysis/pairs_verify_20260813/pair_009.pal b/analysis/pairs_verify_20260813/pair_009.pal new file mode 100644 index 0000000..7d44606 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.pal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d1e1c6204b74d13809e249efd06c6dd946030f303ba61565ab5f6b42ecc04f +size 1024 diff --git a/analysis/pairs_verify_20260813/pair_009.raw b/analysis/pairs_verify_20260813/pair_009.raw new file mode 100644 index 0000000..04021be --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.raw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2c849eafc4f83242ea7a6fb15760a55f668840bd2bae882de0fe8583fe9a9e9 +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_009.ref b/analysis/pairs_verify_20260813/pair_009.ref new file mode 100644 index 0000000..93f4503 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.ref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a85642dbe3942422ade280c0d4101fecde8be42305718de8617a7e787ae88d +size 38400 diff --git a/analysis/pairs_verify_20260813/pair_009.rgb b/analysis/pairs_verify_20260813/pair_009.rgb new file mode 100644 index 0000000..11ebb38 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.rgb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b51f8330149e386e974703d0473cd6c5d3f2d7ec17679ddfb7ba61ec065da5d0 +size 230400 diff --git a/analysis/pairs_verify_20260813/pair_009.t32 b/analysis/pairs_verify_20260813/pair_009.t32 new file mode 100644 index 0000000..7b244f2 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.t32 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8251c4801c401d15c6519075e49f94c8fcc1e98223e1d1948335e2237cced67 +size 76800 diff --git a/analysis/pairs_verify_20260813/pair_009.thr0 b/analysis/pairs_verify_20260813/pair_009.thr0 new file mode 100644 index 0000000..4123775 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.thr0 differ diff --git a/analysis/pairs_verify_20260813/pair_009.thr1 b/analysis/pairs_verify_20260813/pair_009.thr1 new file mode 100644 index 0000000..5e4d2b2 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.thr1 differ diff --git a/analysis/pairs_verify_20260813/pair_009.thrw b/analysis/pairs_verify_20260813/pair_009.thrw new file mode 100644 index 0000000..c1e9bc1 Binary files /dev/null and b/analysis/pairs_verify_20260813/pair_009.thrw differ diff --git a/analysis/pairs_verify_20260813/pair_009.win b/analysis/pairs_verify_20260813/pair_009.win new file mode 100644 index 0000000..6c34377 --- /dev/null +++ b/analysis/pairs_verify_20260813/pair_009.win @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:412701532bd33e3e6eec1d2f1423e839e43f6b916c94df4f9a3e872acde3e7db +size 32 diff --git a/analysis/pairs_verify_20260813/run.log b/analysis/pairs_verify_20260813/run.log new file mode 100644 index 0000000..045dd21 Binary files /dev/null and b/analysis/pairs_verify_20260813/run.log differ diff --git a/analysis/reverse_20260813_full.md b/analysis/reverse_20260813_full.md new file mode 100644 index 0000000..4221532 --- /dev/null +++ b/analysis/reverse_20260813_full.md @@ -0,0 +1,228 @@ +# MAG160C 官方管线完整逆向结果(Ghidra 全量,2026-08-13) + +> 本文档记录 CoreSDKLib.dll 官方渲染管线的完整反编译结论、逐像素验证结果, +> 以及 demo3 旧版"鬼影"问题的根因分析。所有结论均有 Ghidra 反编译代码和 +> 官方活体抓帧数据的双重证据,不是推测。 +> +> 工具链:Ghidra 12.1.2(headless 批处理反编译)+ IDA Free 8.4(交互确认)。 +> 反编译产物:`analysis/ida/export/ghidra_dump/`(keyfuncs / callers / exports)。 + +--- + +## 1. 官方管线(Ghidra 反编译确认) + +``` +USB 帧 (type=0, 0x1bb1b11b 标记) + → 帧解析器 0x18001d930 + 验证: [0x08]=len, [0x1c+len]=0x1bb1b11c, type∈{0,1} + 快门: width=160 时 = 帧尾字 frame[len+0x24] + metadata 0x4c 字节: {0, counter, len, 1, 0, w, dev54, 8, 0, -50000, + shutter-500, shutter, 0, 0, type, 0, 0} + → 帧调度 0x180009ee0(FFC 状态机 + ref/表重建时序, 见 §3) + → 主渲染 0x18000ca30 + → 0x18000c950: f20 平滑器 0x41f10 (mode=1: 直通) → NUC + → NUC 查表 0x180017200: + d2 = (f20[i] - ref[i]) >> 1 + seg: 每像素 (nsegs-1) 个 signed 阈值顺序比较 + out = off + ((gain * d2) >> shift), shift=0x11c=12 + clamp [0, 65535] + → 盲元补偿 0x180017330: + 固定记录表 dev+0x41878, 数量 dev+0x41654[sel] + 每条 40 字节: {u32 target, u32 type(3..8=邻域数), u32 neigh[8]} + out[target] = mean(neigh) (type 8/4 用移位, 其余用除法) + → temporal filter 0x18001e920: 仅 dev+0x41fe0>1 时启用, 当前=1 跳过 + → 统计 0x180010780: min/max/mean/std → dev+0x42010..0x42024 + → 窗口 0x1800109c0 + 半宽 0x1800108a0: + half = max(128, dev24*1000 >> dev4c_shift) / 2 (live: 5*1000>>3 /2 = 312) + lo = min(fmin, mean-half) >= 0 + hi = max(fmax, mean+half) <= 65535 + → LUT1024 重建 0x180011950 + 0x180011ee0(直方图均衡, 见 §5) + → 灰度: gray = LUT[(nuc-lo) * 0xffc00000/(hi-lo) >> 22] + → 2x 升采样 0x180019740(2-tap 双线性 + 边缘外推, 见 §6) + → 调色板 dev+0xb18 (256×4 BGR) +``` + +## 2. DDT 校准文件(表的数据源) + +- 位置:`%TEMP%\Core<序列号>`(无扩展名),由 app 用 MAG_SaveDDT 保存、 + MAG_StartProcessImage → 0x18000f130 在启动时加载;文件路径存 dev+0x4134c。 +- 本机文件已复制:`build-artifacts/mag160c_official.ddt`(1,856,416 字节,v3)。 + +``` +v3 格式 (magic 0x5aa50003): ++0 u32 magic ++4 u32 width (160) ++8 u32 height (120) ++12 u32 端点数量 (0x41558, live=6) ++16 u32 nsegs (0x41554, live=3) ++20 u32 0x47944 (8, 2 的幂) ++24 u32 0x47948 (-50000) ++28 u32 0x4155c (1024) ++32 u32 0x41560 (0) ++36 i32 T[count] 端点温度: [8304, 18390, 28495, 33637, 38730, 47664] ++.. u32 0x415b4[count] (偏移基准) ++.. u32 0x41604[count] ++.. u32 0x41654[count-1] 每端点盲元记录数 (live: 32×5) ++128 端点表块 × count: + thr (nsegs-1)*npix + 0x4155c/2 个 int16 (像素主序) + gain nsegs*npix*2 个 uint16 (seg 主序: [seg][pix].gain/.off) ++.. 盲元记录 × count (每端点 40 字节 × 数量) ++.. trailer: 0x6bb60001, "lens f6.5" +``` + +## 3. 端点选择 + 表插值 + ref 时序(0x180009ee0 / 0x180016ae0) + +### 3.1 快门温度 = 设备温度代理 +- 快门 = 帧尾字(width=160 时 frame[len+0x24]),每帧进入 metadata。 +- dev+0x5c = 当前快门,dev+0x54 = 上次 FFC(0) 时的快门。 +- FFC 条件:`idx >= N0+1800`(周期)或 `(|dev54 - 快门累加| > 250 && idx >= 冷却)`。 + +### 3.2 端点选择(实测验证) +``` +sel = 0 +while (sel < count-2 && 快门 > T[sel+1]) sel++ +``` +live 实测:快门 29289 → sel=2(T[2]=28495 < 29289 ≤ T[3]=33637)✓ + +### 3.3 Q12 插值(0x180016dd0 / 0x180016f10) +``` +t = ((快门 - T[sel]) << 12) / (T[sel+1] - T[sel]) clamp ±0x3fff +work[i] = a[i] + ((b[i] - a[i]) * t >> 12) +``` +验证:阈值 0/38400 误差,gain 0/115200 误差。 + +### 3.4 ref 采集时序(关键!) +``` +FFC(0) 后帧计数复位: + idx 1..5 : 表重建(分块) + idx 6..9 : 采集 ref —— 4 个 type=1 校准帧的均值(累加 >> 2) + (idx 6 复位平滑器,idx 9 发 FFC(1)) + idx 10..13 : 表重建 + idx 14+ : 正常渲染(ref 冻结,直到下次 FFC) +``` +- **ref = 4 个 type=1 帧的均值**,不是场景帧! +- type=1 帧均值实测 ~15000-16300,type=0 场景帧 ~11700-13700, + 因此官方 d = f20 - ref ≈ **-2200 ~ -2700,恒 ≤ 0**。 +- ref 在每次 FFC 对之后重新采集;FFC 之间完全冻结。 + +## 4. 逐像素验证(官方抓帧 vs 反推重建) + +用官方同帧抓帧(`analysis/pairs_verify_20260813/`)+ DDT 离线复算: + +| 环节 | 结果 | +|---|---| +| 阈值插值 (t 由快门算) | diff 0/38400 | +| gain/off 插值 | diff 0/115200 | +| NUC 查表 | diff 30/19200(MAE 0.118)| +| NUC + 盲元补偿 | **diff 0/19200(MAE 0.0000)** | +| 窗口 [lo,hi] | 与官方完全一致 | +| 灰度 (LUT+idx) | 160 层 19200/19200 | +| 2x 升采样 | **diff 0/76800** | +| demo3 C 实现离线复算官方数据 | NUC/窗口/灰度全部 0 误差 | + +LUT 填充公式:在正确 center 下 834/1024 精确,其余 ±1~±58 为 +跨帧捕获偏差(h1024/cdf/lut 不同帧)+ center 时域平滑所致。 + +## 5. LUT1024 重建算法(0x180011950 + 0x180011ee0) + +1. 1024-bin 直方图:bin = ((nuc-lo) * 0xffc00000/(hi-lo)) >> 22(u32 算术) +2. 3-tap 就地平滑(bin 0..1022) +3. 双向 CDF(从 mean-bin 向两侧累积): + - 向下:每累积 u21(=total>>12) 个计数 +0x100 + - 向上:<8*u21 时每 u21 个 +0x100,>=8*u21 时每 bin +0x200 +4. 对比度曲线 curve[k] = max(1, (0x300000 + k*0x800)>>13) +5. 中心值二分搜索(fmin/fmax 对应 LUT 端约束) +6. center 时域平滑 + 重填 + +## 6. 2x 升采样(0x180019740,逐像素验证) + +``` +内部: out[2y][2x]=a out[2y][2x+1]=(a+b)>>1 out[2y][2x+2]=b out[2y][2x+3]=(c+b)>>1 + out[2y+1][2x]=(d+a)>>1 out[2y+1][2x+1]=(d+e+a+b)>>2 + out[2y+1][2x+2]=(e+b)>>1 out[2y+1][2x+3]=(f+e+c+b)>>2 +右缘: out[2y][2W-1] = (3a>>2)+(l>>2)(外推) +底缘: out[2H-1][2x] = (3a>>2)+(u>>2) +角落: (3a+l)>>2 / (3a+u)>>2 / 三者均值 +``` + +## 7. 鬼影根因分析(为什么旧 demo3 有鬼影) + +旧 demo3(v4,SBNUC 版)与官方的差异,每一条都有上面的证据: + +### 7.1 ref 语义完全不同(最根本) +| | 官方 | 旧 demo3 | +|---|---|---| +| ref 来源 | FFC 窗口 4 个 **type=1 校准帧**均值 | 启动场景 12 帧中值 | +| ref 值域 | 场景 + ~2200 counts(d 恒负)| ≈ 场景(d ≈ 0)| +| 刷新时机 | **每次 FFC 对之后** | 仅启动一次(FFC 后只 rebase 全局偏置)| +| FFC 之间 | 冻结 | 冻结 + SBNUC 自愈 | + +后果: +- 官方 NUC 输出 ≈ 9800(off 段配合 d 恒负),旧 demo3 输出 ≈ 10900+(d≈0), + 两者对同一场景的画面等级都不同,更谈不上残影行为一致。 +- 旧 demo3 启动采集一次 ref 后永不刷新 → 场景基线漂移(如设备升温、 + 环境温度变化)后 ref 失配 → 旧位置出现"黑洞/黑拖影",且只能等手动 FFC。 +- 官方每次 FFC 重采 ref → 残影最多持续到下次 FFC(周期 120s 或快门漂移 250 触发), + 且表也按新快门重建,匹配始终成立。 + +### 7.2 NUC 表不是静态的 +- 官方:表 = DDT 端点按快门温度 Q12 插值,FFC 后重建。 +- 旧 demo3:静态抓取表(某次会话的插值结果),温度漂移后失配, + 表现为"小温差残影擦除慢"——本质是表与当前温度不匹配造成的残差, + 不是真正的显示层鬼影。 + +### 7.3 SBNUC 是非官方 hack,引入次级鬼影 +- 旧 demo3 的"曾热变冷快速吸收/低温静止不吸收"状态机,会把低温物体 + 排除在 ref 之外 → 物体离开后留下亮残影;把曾热像素写回 ref → + 改变局部基线 → 新黑洞。 +- 官方没有 SBNUC:ref 冻结 + 定期 FFC 刷新是官方唯一的"去鬼影"机制。 + +### 7.4 盲元补偿缺失 +- 官方有 32 条固定盲元记录(邻域平均),旧 demo3 完全没接 → 死像素 + 直接显示(0 值黑点),曾用动态 badmap 尝试 → 反而把场景结构钉在 + 屏幕坐标(BADMAP_ENABLE=0 后残留黑点)。 + +### 7.5 窗口/灰度差异 +- 官方窗口 = [min(fmin, mean-312), max(fmax, mean+312)]; + 旧 demo3 用 P2..P98 自适应 → 对比度行为不同,但不是鬼影主因。 + +### 7.6 结论 +旧 demo3 的"鬼影"是 ref 语义错误 + ref/表不随 FFC 刷新 + 静态表 + +非官方 SBNUC 共同造成的,与官方"冻结 ref 的轻微旧位置偏暗"不是 +同一个现象。修复 = 完整复刻官方管线(demo3 v5 已实现,见下)。 + +## 8. demo3 v5(官方复刻)实现状态 + +- DDT 加载(v3 解析,含端点表/盲元记录) +- 端点选择 + Q12 插值(快门驱动,FFC 后重建) +- ref = FFC 窗口 4 个 type=1 帧均值(u32 累加器) +- NUC + 盲元补偿(32 条固定记录) +- 窗口/统计(官方公式) +- LUT1024 重建(直方图均衡 + center 平滑) +- 灰度 + 2x 升采样 + 官方调色板 +- FFC:周期 1800 / 快门漂移 250 / 13 帧隐藏周期 +- 实机运行:sel=2、FFC 自动触发正常、画面统计接近官方 + (demo3 mean 9377 vs 官方 9640) + +### 遗留问题 +1. ~~demo3 NUC 输出有 2 个零像素~~ **已修复(2026-08-13 晚)**: + 根因是 demo3 `load_ddt` 读取布局错误——blind 记录区在文件所有端点块之后, + 代码却在每个端点块内读了 blind,导致 EP1+ 表整体错位 1280 字节。 + 错位表在死像素列附近 seg0 gain=35321(应为 ~4000),d2 踩中后 NUC clamp 到 0。 + 修复后全帧 0 个零像素,(65,25) nuc=9814,gain=4000 正常值。 +2. LUT 重建的跨帧一致性:算法已按反编译实现并实机运行,同场景 gray 直方图 + 与官方相关性 0.9197(跨会话),剩余差异来自会话间 ref/快门温度差异, + 属官方物理机制,不是 bug。 + +## 9. 关键文件 + +- 反编译全量:`analysis/ida/export/ghidra_dump/` + - `keyfuncs_decomp_CoreSDKLib.dll.txt`(核心函数伪代码) + - `callers_decomp_CoreSDKLib.dll.txt`(调用关系 + 主管线) + - `exports_decomp_CoreSDKLib.dll.txt`(全部导出函数) + - `exports_decomp_ThermalSDK.dll.txt` + - `all_functions_decomp_libcoresdk_arm64.so_00100000.txt`(ARM64 21.6MB) +- DDT 文件:`build-artifacts/mag160c_official.ddt`、`analysis/ida/Core160043865.ddt` +- 官方抓帧:`analysis/pairs_verify_20260813/`、`analysis/pairs_final_20260813/` +- demo3 v5:`csdk/tools/mag160c_demo3.c` +- 采集工具:`csdk/tools/tsdk_pair3.c`(含 DDT 复制、表/盲元/快门/窗口抓取) diff --git a/analysis/session_state.md b/analysis/session_state.md new file mode 100644 index 0000000..aa789aa --- /dev/null +++ b/analysis/session_state.md @@ -0,0 +1,64 @@ +# MAG160C 会话状态与恢复点(2026-08-13) + +> 本文件是"心跳"锚点:每个里程碑更新一次。若会话中断,新会话先读本文件 + +> `analysis/reverse_20260813_full.md`,然后运行 `tools/resume_rev.ps1` 继续。 + +## 当前阶段 + +**阶段 5/5:全部完成(2026-08-13 晚)** + +## 已完成的里程碑 + +- [x] 工具链:Ghidra 12.1.2(headless)+ IDA Free 8.4 部署,5 个二进制全量导出 +- [x] 官方管线完整反编译(DDT 加载 / 端点选择 / Q12 插值 / ref=4×type1 帧均值 / + NUC / 盲元 / 窗口 / LUT1024 / 2x 升采样 / FFC 状态机) +- [x] DDT 文件解析(%TEMP%\Core160043865 → build-artifacts/mag160c_official.ddt) +- [x] 逐像素验证:NUC+盲元 0/19200、插值 0 误差、2x 0/76800、窗口一致 +- [x] 鬼影根因文档:analysis/reverse_20260813_full.md §7 +- [x] demo3 v5 官方复刻实现并实机运行 +- [x] **零像素根因定位与修复**:load_ddt 在端点块内多读 blind 记录导致 + EP1+ 表错位 1280 字节 → 修好后全帧 0 个零像素,gain=4000 正常值 +- [x] demo3 vs 官方同场景对比:gray 直方图相关性 0.9197(跨会话) +- [ ] 提交(用户未要求,等待指示) + +## 零像素问题(已解决,记录在案) + +- 现象:demo3 的 nuc 在 (65,25)/(66,25) 为 0,官方同坐标 9987/9989。 +- 根因:**demo3 的 load_ddt 读取布局错误**——blind 记录区在文件所有端点块 + 之后,但代码在每个端点块内读了 blind,导致 EP1+ 的 thr/gain 表整体 + 错位 1280 字节。错位表在死像素列附近的 seg0 gain=35321(应为 ~4000), + d2 踩中后 NUC 输出 clamp 到 0。 +- 修复:thr+gain 按端点块顺序读完后再统一读 blind(csdk/tools/mag160c_demo3.c + load_ddt)。 +- 验证:修复后全帧 0 个零像素;(65,25) nuc=9814、盲元目标 9740/9732; + gain0=4000 正常值;窗口/统计正常([8493,10554] m9409 s258)。 + +## 常用命令 + +```powershell +# 编译 demo3 v5(工作表捕获版) +gcc -O2 -w -DMAG160C_STATIC -I"C:\Project\MAG160C\csdk\third_party\libusb\win64" -I"C:\Project\MAG160C\csdk\include" -I"C:\Project\MAG160C\csdk\src" -o "C:\Project\MAG160C\build-artifacts\mag160c_demo3.exe" "C:\Project\MAG160C\csdk\tools\mag160c_demo3.c" "C:\Project\MAG160C\csdk\src\mag160c_display.c" "C:\Project\MAG160C\csdk\src\mag160c_error.c" "C:\Project\MAG160C\csdk\third_party\libusb\win64\libusb-1.0.x64.a" -lgdi32 -luser32 + +# 运行/停止 +Start-Process "C:\Project\MAG160C\build-artifacts\mag160c_demo3.exe" -WorkingDirectory "C:\Project\MAG160C\build-artifacts" +Stop-Process -Name mag160c_demo3 -Force -ErrorAction SilentlyContinue + +# 官方采集(先停 demo3) +& "C:\Project\MAG160C\build-artifacts\tsdk_pair3.exe" "C:\Project\MAG160C\analysis\pairs_final_20260813" 8 6000 +# 注意:tsdk_pair3 的 config.txt / pair_*.meta / pair_*.win 写在进程 CWD, +# 跑完要把 C:\Project\MAG160C 下的 config.txt 和 pair_0*.meta/win 移回目录。 + +# 对比/复算脚本(Python) +# C:\Users\ZXC\AppData\Local\Temp\opencode\compare_live.py demo3捕获 vs 官方同场景 +# C:\Users\ZXC\AppData\Local\Temp\opencode\verify_nuc.py 官方抓帧重建验证 +# C:\Users\ZXC\AppData\Local\Temp\opencode\verify_full.py 全链路验证 +# C:\Users\ZXC\AppData\Local\Temp\opencode\verify_c_pipeline.exe C实现离线复算 +``` + +## 心跳约定 + +- 每完成一个里程碑,更新本文件"已完成的里程碑"勾选。 +- 会话中断恢复流程: + 1. 读本文件 + `analysis/reverse_20260813_full.md` + 2. 运行 `tools/resume_rev.ps1`(自动检查设备/进程/编译/采集) + 3. 按"零像素问题现场"继续 diff --git a/build-artifacts/broken15.png b/build-artifacts/broken15.png deleted file mode 100644 index 30f2619..0000000 --- a/build-artifacts/broken15.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ed87c199af95bcfa6514e8783abb0587b8475606a76468ea34b1ac6f9b4b0994 -size 42078 diff --git a/build-artifacts/broken15_smooth.png b/build-artifacts/broken15_smooth.png deleted file mode 100644 index 416a6e6..0000000 --- a/build-artifacts/broken15_smooth.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f1200dbd1dda66666adb9703eeb82359c18e2551808f556a78c1effdb44ea43 -size 302038 diff --git a/build-artifacts/broken_frame.png b/build-artifacts/broken_frame.png deleted file mode 100644 index ce62122..0000000 --- a/build-artifacts/broken_frame.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:888eecf768a68467ef1d5ad5f098b042d5c1877181cebfde2ec0893f08f796ca -size 23873 diff --git a/build-artifacts/csdk_cli_libusb.exe b/build-artifacts/csdk_cli_libusb.exe deleted file mode 100644 index 84f141f..0000000 --- a/build-artifacts/csdk_cli_libusb.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:343af85228e32c11950cd3d2e6b43a2df2c24624f7e4d5071640e70a10911e60 -size 136720 diff --git a/build-artifacts/csdk_mag160c-cli.exe b/build-artifacts/csdk_mag160c-cli.exe deleted file mode 100644 index 2ea0e1a..0000000 --- a/build-artifacts/csdk_mag160c-cli.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9e0260586464952623eb76962ce61c694c8ace0c3e85b2ab6312bcad814fd1f -size 113170 diff --git a/build-artifacts/csdk_stream_test.exe b/build-artifacts/csdk_stream_test.exe deleted file mode 100644 index db1b382..0000000 --- a/build-artifacts/csdk_stream_test.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40f015b40a38a2496fa6af1be9931ec7708c59745614569d34bd3bdf5287a89c -size 120094 diff --git a/build-artifacts/csdk_test_api.exe b/build-artifacts/csdk_test_api.exe deleted file mode 100644 index f9520b8..0000000 --- a/build-artifacts/csdk_test_api.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:feb21663ad07239c8b373b36fb1e7952d7f9958929697f7bc4514ecab5076779 -size 113075 diff --git a/build-artifacts/csdk_test_api_threads.exe b/build-artifacts/csdk_test_api_threads.exe deleted file mode 100644 index b2fa1eb..0000000 --- a/build-artifacts/csdk_test_api_threads.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15f680104ab456ae94ca0b54eea5e43c66996026046d023fadeac12c44900e44 -size 109826 diff --git a/build-artifacts/csdk_test_display.exe b/build-artifacts/csdk_test_display.exe deleted file mode 100644 index 95d29c6..0000000 --- a/build-artifacts/csdk_test_display.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:68d5d8153bd05f9b2ce5df37e04cd7cf757d2e0dc346e01f163da068baec6ab0 -size 117969 diff --git a/build-artifacts/csdk_test_frame.exe b/build-artifacts/csdk_test_frame.exe deleted file mode 100644 index d807ac5..0000000 --- a/build-artifacts/csdk_test_frame.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:457f8a47a1f01e8358b76609feb47d1467ed6e471700c38c6151d3e6776e542e -size 115021 diff --git a/build-artifacts/csdk_test_tcm.exe b/build-artifacts/csdk_test_tcm.exe deleted file mode 100644 index f62f773..0000000 --- a/build-artifacts/csdk_test_tcm.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1bf072806341ae0021a4a988a1e8ad83cb14aa79c9a1e0b8cc3bf66799114845 -size 114436 diff --git a/build-artifacts/csdk_test_temp.exe b/build-artifacts/csdk_test_temp.exe deleted file mode 100644 index 0f730f0..0000000 --- a/build-artifacts/csdk_test_temp.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df362aad5c4a5790bf8b6e23dec802b9259f36510858728d866844c4e7a3ab73 -size 113924 diff --git a/build-artifacts/demo3_auto_001.bmp b/build-artifacts/demo3_auto_001.bmp deleted file mode 100644 index aa252a9..0000000 --- a/build-artifacts/demo3_auto_001.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78f458a166a5b94704736c2b295509beff6a99f84583fe33feb251a0aa18e167 -size 57654 diff --git a/build-artifacts/demo3_auto_002.bmp b/build-artifacts/demo3_auto_002.bmp deleted file mode 100644 index 06ef4ec..0000000 --- a/build-artifacts/demo3_auto_002.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ebb24712245fe8fa15dc29cd30ad02626f60055b8c5321cae9f169fbd009a1a -size 57654 diff --git a/build-artifacts/demo3_auto_003.bmp b/build-artifacts/demo3_auto_003.bmp deleted file mode 100644 index 7a6f32e..0000000 --- a/build-artifacts/demo3_auto_003.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8c57a7e28d49a5806290eb09f32fd5d1eb6228fed891786a1f374928fb6146e8 -size 57654 diff --git a/build-artifacts/demo3_auto_004.bmp b/build-artifacts/demo3_auto_004.bmp deleted file mode 100644 index aa6a0ec..0000000 --- a/build-artifacts/demo3_auto_004.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dc50dd992e0c0c0c27323be613d3738780e8d4542e7a1556944db66ad9a0497e -size 57654 diff --git a/build-artifacts/demo3_auto_005.bmp b/build-artifacts/demo3_auto_005.bmp deleted file mode 100644 index ac06c64..0000000 --- a/build-artifacts/demo3_auto_005.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8539ae2af6c9b5e59165e380f8d735dc6c42e3f8ba09167d41b1afea70a8e2f2 -size 57654 diff --git a/build-artifacts/demo3_auto_006.bmp b/build-artifacts/demo3_auto_006.bmp deleted file mode 100644 index a579f70..0000000 --- a/build-artifacts/demo3_auto_006.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1593ac488c7f65ee2eef6d9d32fb92abf463a9f70c9909b5babd9e53d806fbf5 -size 57654 diff --git a/build-artifacts/demo3_auto_007.bmp b/build-artifacts/demo3_auto_007.bmp deleted file mode 100644 index d59089a..0000000 --- a/build-artifacts/demo3_auto_007.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:182f624817189338e6175199a2cc4d8b98831b91c8fa1d3c58c244ea4c37fa29 -size 57654 diff --git a/build-artifacts/demo3_auto_008.bmp b/build-artifacts/demo3_auto_008.bmp deleted file mode 100644 index 9e7c7fa..0000000 --- a/build-artifacts/demo3_auto_008.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f442ed441144619c07fc50e6be4ed9fd3f6eeb79ed7a5b4a23847a0ba6aebd16 -size 57654 diff --git a/build-artifacts/demo3_auto_009.bmp b/build-artifacts/demo3_auto_009.bmp deleted file mode 100644 index 8eb22ba..0000000 --- a/build-artifacts/demo3_auto_009.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:23a64bcf1f89aabb2e024f5b47fa921b5863319772dc3c8d2fa975932383b93a -size 57654 diff --git a/build-artifacts/demo3_auto_010.bmp b/build-artifacts/demo3_auto_010.bmp deleted file mode 100644 index 1317937..0000000 --- a/build-artifacts/demo3_auto_010.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a419a80332bc0a5fc726fc5fa02e8de65e7c69573b6f3aa675c914faa6f457e -size 57654 diff --git a/build-artifacts/demo3_auto_011.bmp b/build-artifacts/demo3_auto_011.bmp deleted file mode 100644 index 33fe1f7..0000000 --- a/build-artifacts/demo3_auto_011.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6a680a2ce4f051279f91b2da72000457bddd5212e80e4d1f89c80cffcfb6659 -size 57654 diff --git a/build-artifacts/demo3_auto_012.bmp b/build-artifacts/demo3_auto_012.bmp deleted file mode 100644 index 725a1fc..0000000 --- a/build-artifacts/demo3_auto_012.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:befa7e039769502204a4467b43591ddbd40f22460ad1e1b067b5a34d7dd66f25 -size 57654 diff --git a/build-artifacts/demo3_auto_013.bmp b/build-artifacts/demo3_auto_013.bmp deleted file mode 100644 index 7ff5835..0000000 --- a/build-artifacts/demo3_auto_013.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:49189ace479d67162f2649f190cf484a654abdd7eecd6d338b10d0452059ad81 -size 57654 diff --git a/build-artifacts/demo3_auto_014.bmp b/build-artifacts/demo3_auto_014.bmp deleted file mode 100644 index 10044de..0000000 --- a/build-artifacts/demo3_auto_014.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03f88c63a647a885bfd7cb882785d7defe2eae901c1894647b693342618d5727 -size 57654 diff --git a/build-artifacts/demo3_auto_015.bmp b/build-artifacts/demo3_auto_015.bmp deleted file mode 100644 index a373c36..0000000 --- a/build-artifacts/demo3_auto_015.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dcb554e33db6d33c6ec34a82025286d53d837217d6b915275191266941bf1ef1 -size 57654 diff --git a/build-artifacts/demo3_auto_016.bmp b/build-artifacts/demo3_auto_016.bmp deleted file mode 100644 index a46a7b6..0000000 --- a/build-artifacts/demo3_auto_016.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a13bb1405702c260f5b9ce8554b016f7c6a058adf4245f21ad720b33d7461f8b -size 57654 diff --git a/build-artifacts/demo3_auto_017.bmp b/build-artifacts/demo3_auto_017.bmp deleted file mode 100644 index 4f686cd..0000000 --- a/build-artifacts/demo3_auto_017.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e07eb7830eea19c6dfed8f118f6388acb5ed7fc0f65e97f10c9ae6ca663cdec -size 57654 diff --git a/build-artifacts/demo3_auto_018.bmp b/build-artifacts/demo3_auto_018.bmp deleted file mode 100644 index 4fb0c9d..0000000 --- a/build-artifacts/demo3_auto_018.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:960815fdd13e0668eb5ab9d9c4eba2de802cdef71a07f0be37558b39584d7c4c -size 57654 diff --git a/build-artifacts/demo3_auto_019.bmp b/build-artifacts/demo3_auto_019.bmp deleted file mode 100644 index da3e2db..0000000 --- a/build-artifacts/demo3_auto_019.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7e98a8765adbd229e2bd189a3a1fd9356dc9b39fe260a07ff06e1094ed103a26 -size 57654 diff --git a/build-artifacts/demo3_auto_020.bmp b/build-artifacts/demo3_auto_020.bmp deleted file mode 100644 index 23a7b7d..0000000 --- a/build-artifacts/demo3_auto_020.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e00a8fc6c316918e28adf8d65ebc12121d6dfa2c2e67e9a4db9d7cf50cd42932 -size 57654 diff --git a/build-artifacts/demo3_auto_021.bmp b/build-artifacts/demo3_auto_021.bmp deleted file mode 100644 index 4ba402f..0000000 --- a/build-artifacts/demo3_auto_021.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1b95df33040f2725abe2aa96578160a3c0c06b4fa6e4ec6b90da0013dca08c4 -size 57654 diff --git a/build-artifacts/demo3_auto_022.bmp b/build-artifacts/demo3_auto_022.bmp deleted file mode 100644 index f64cd3a..0000000 --- a/build-artifacts/demo3_auto_022.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca35803ca4c340a01710f148adc802544025b966a30725ee52ee1c93c5e0234a -size 57654 diff --git a/build-artifacts/demo3_auto_023.bmp b/build-artifacts/demo3_auto_023.bmp deleted file mode 100644 index f5c837d..0000000 --- a/build-artifacts/demo3_auto_023.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ef866da42af97440551bc79e4ee47b37f49bf552cc1842bb4f89f24a54ca13d -size 57654 diff --git a/build-artifacts/demo3_auto_024.bmp b/build-artifacts/demo3_auto_024.bmp deleted file mode 100644 index 467c07e..0000000 --- a/build-artifacts/demo3_auto_024.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3eaba13588baefd7ab61dae8ce4fd03aa684afb11e890522f42c7781c0efb57b -size 57654 diff --git a/build-artifacts/demo3_auto_025.bmp b/build-artifacts/demo3_auto_025.bmp deleted file mode 100644 index 1e4dfad..0000000 --- a/build-artifacts/demo3_auto_025.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0be0e7e070cb557c9d38e39158613bf452e91364565636698d842285881aa025 -size 57654 diff --git a/build-artifacts/demo3_auto_026.bmp b/build-artifacts/demo3_auto_026.bmp deleted file mode 100644 index e573895..0000000 --- a/build-artifacts/demo3_auto_026.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45387ab08f7a5644de936da1eeb3025526dd078b02f7d42a8c5fa38b4a36d857 -size 57654 diff --git a/build-artifacts/demo3_auto_027.bmp b/build-artifacts/demo3_auto_027.bmp deleted file mode 100644 index 5db47c1..0000000 --- a/build-artifacts/demo3_auto_027.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0e4c0f0b0ce72424d98b08826b2e629f5799cb6cd4ae4f1499e2b2a038c071f -size 57654 diff --git a/build-artifacts/demo3_auto_028.bmp b/build-artifacts/demo3_auto_028.bmp deleted file mode 100644 index f2fdd5f..0000000 --- a/build-artifacts/demo3_auto_028.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5ec129c50293d92a2c32e95a5f3fe5148e57672200e176c86164ecd2d949a66 -size 57654 diff --git a/build-artifacts/demo3_auto_029.bmp b/build-artifacts/demo3_auto_029.bmp deleted file mode 100644 index 9d8d3ff..0000000 --- a/build-artifacts/demo3_auto_029.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:28563785b55290db0bbba26035d4d2f7789b1701e242a01834352f7907729ae9 -size 57654 diff --git a/build-artifacts/demo3_auto_030.bmp b/build-artifacts/demo3_auto_030.bmp deleted file mode 100644 index 331c349..0000000 --- a/build-artifacts/demo3_auto_030.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b12a216270f02f5df963eaa3015269e12d6789e60c1b137aea0a73a254b36824 -size 57654 diff --git a/build-artifacts/demo3_auto_031.bmp b/build-artifacts/demo3_auto_031.bmp deleted file mode 100644 index 104e76f..0000000 --- a/build-artifacts/demo3_auto_031.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ee2794ae2969e1a119d9906acb6b26045214bec9912907f055c437c7b04e4c6 -size 57654 diff --git a/build-artifacts/demo3_auto_032.bmp b/build-artifacts/demo3_auto_032.bmp deleted file mode 100644 index 58d9431..0000000 --- a/build-artifacts/demo3_auto_032.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:55d2d355757fcbc5110d0cbae1d63172d611373d28bfc866f02d962ba5701868 -size 57654 diff --git a/build-artifacts/demo3_auto_033.bmp b/build-artifacts/demo3_auto_033.bmp deleted file mode 100644 index b9cf3be..0000000 --- a/build-artifacts/demo3_auto_033.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e838be3cc03637a1986c0ebf0352699d8a9db1796f80223e0c6e7f17dcaf04dc -size 57654 diff --git a/build-artifacts/demo3_auto_034.bmp b/build-artifacts/demo3_auto_034.bmp deleted file mode 100644 index c219f66..0000000 --- a/build-artifacts/demo3_auto_034.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a5c2026f2e6ffc8acd3b0860ce0d9f86b853c7283de608836c75514235921e8 -size 57654 diff --git a/build-artifacts/demo3_auto_035.bmp b/build-artifacts/demo3_auto_035.bmp deleted file mode 100644 index 359769e..0000000 --- a/build-artifacts/demo3_auto_035.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1484420c538601e0eddca4e796c34e2d5689130ac1941156f8f79f4c85edc06 -size 57654 diff --git a/build-artifacts/demo3_auto_036.bmp b/build-artifacts/demo3_auto_036.bmp deleted file mode 100644 index abc6088..0000000 --- a/build-artifacts/demo3_auto_036.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c4089e8b7c3057c87439172eb4685f54fa1e8c4ff38aa2c3612d57f7d4c9d368 -size 57654 diff --git a/build-artifacts/demo3_auto_037.bmp b/build-artifacts/demo3_auto_037.bmp deleted file mode 100644 index b822c63..0000000 --- a/build-artifacts/demo3_auto_037.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:175b83f640774de889a7f5a05d2968f4c6477d909d78229565c5b72c11cbe64e -size 57654 diff --git a/build-artifacts/demo3_auto_038.bmp b/build-artifacts/demo3_auto_038.bmp deleted file mode 100644 index 91aa84a..0000000 --- a/build-artifacts/demo3_auto_038.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e21a36ffb98c2099d225fa961e2b28599b7d2aec31ba42eac924654a204740a -size 57654 diff --git a/build-artifacts/demo3_auto_039.bmp b/build-artifacts/demo3_auto_039.bmp deleted file mode 100644 index 32a9b96..0000000 --- a/build-artifacts/demo3_auto_039.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b67f44e0c876e6e11b789fe89eb06391078e545698a4aa32622132656c21e6e0 -size 57654 diff --git a/build-artifacts/demo3_compare.png b/build-artifacts/demo3_compare.png deleted file mode 100644 index 55dcd4a..0000000 --- a/build-artifacts/demo3_compare.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c45a9418e1d5fbd9348ef995317388b675aade79591bbb452d00691f6d3c8ac -size 42993 diff --git a/build-artifacts/demo3_diag.txt b/build-artifacts/demo3_diag.txt deleted file mode 100644 index f695e82..0000000 --- a/build-artifacts/demo3_diag.txt +++ /dev/null @@ -1,369 +0,0 @@ -ph=0 ref=1 bad=1 comp=0 ref=3348..3348(3348) live=3348..31060(12785) d=(9437+-3637) mura_d=(0+-0) sb_med=0 sb_acc=0/19200 shift=0 gmin=0 nuc=0..5265(1792) win=[396,3188] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=0 ref=3364..3364(3364) live=3364..31044(12760) d=(9396+-3646) mura_d=(0+-0) sb_med=0 sb_acc=0/19200 shift=0 gmin=0 nuc=0..5259(1785) win=[374,3194] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=0 ref=3356..3356(3356) live=3356..31032(12736) d=(9380+-3643) mura_d=(0+-0) sb_med=0 sb_acc=0/19200 shift=0 gmin=0 nuc=0..5258(1782) win=[362,3200] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=0 ref=3352..3352(3352) live=3352..31024(12711) d=(9359+-3631) mura_d=(0+-0) sb_med=0 sb_acc=0/19200 shift=0 gmin=0 nuc=0..5257(1778) win=[362,3192] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6817..34350(15693) live=3768..31280(12634) d=(-3059+-62) mura_d=(-6+-62) sb_med=-7 sb_acc=0/19200 shift=3053 gmin=3768 nuc=0..10061(9780) win=[9467,10091] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6823..34356(15699) live=3732..31288(12637) d=(-3062+-76) mura_d=(-3+-76) sb_med=-6 sb_acc=0/19200 shift=3059 gmin=3732 nuc=0..10065(9778) win=[9465,10089] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6825..34358(15701) live=3784..31284(12635) d=(-3066+-89) mura_d=(-5+-89) sb_med=-8 sb_acc=6/19200 shift=3061 gmin=3784 nuc=0..10096(9776) win=[9464,10088] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6823..34356(15699) live=3732..31288(12634) d=(-3065+-101) mura_d=(-6+-101) sb_med=-10 sb_acc=14/19200 shift=3059 gmin=3732 nuc=0..10127(9777) win=[9464,10088] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6821..34354(15697) live=3788..31280(12631) d=(-3066+-112) mura_d=(-9+-112) sb_med=-14 sb_acc=33/19200 shift=3057 gmin=3788 nuc=0..10127(9776) win=[9463,10087] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6821..34354(15697) live=3764..31288(12631) d=(-3066+-121) mura_d=(-9+-121) sb_med=-13 sb_acc=60/19200 shift=3057 gmin=3764 nuc=0..10150(9776) win=[9464,10088] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6824..34357(15700) live=3760..31272(12631) d=(-3068+-128) mura_d=(-8+-128) sb_med=-13 sb_acc=71/19200 shift=3060 gmin=3760 nuc=0..10147(9775) win=[9463,10087] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6823..34356(15699) live=3756..31264(12633) d=(-3066+-133) mura_d=(-7+-133) sb_med=-12 sb_acc=75/19200 shift=3059 gmin=3756 nuc=0..10160(9776) win=[9464,10088] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6829..34362(15705) live=3804..31272(12632) d=(-3072+-138) mura_d=(-7+-138) sb_med=-13 sb_acc=78/19200 shift=3065 gmin=3804 nuc=0..10164(9773) win=[9460,10084] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6826..34359(15701) live=3788..31256(12631) d=(-3071+-142) mura_d=(-9+-142) sb_med=-14 sb_acc=100/19200 shift=3062 gmin=3788 nuc=0..10174(9774) win=[9462,10086] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6818..34351(15693) live=3780..31280(12625) d=(-3068+-146) mura_d=(-14+-146) sb_med=-21 sb_acc=107/19200 shift=3054 gmin=3780 nuc=0..10188(9775) win=[9463,10087] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6817..34350(15692) live=3748..31268(12622) d=(-3070+-151) mura_d=(-17+-151) sb_med=-24 sb_acc=130/19200 shift=3053 gmin=3748 nuc=0..10200(9774) win=[9462,10086] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6814..34347(15688) live=3780..31256(12620) d=(-3068+-157) mura_d=(-18+-157) sb_med=-26 sb_acc=223/19200 shift=3050 gmin=3780 nuc=0..10205(9775) win=[9462,10086] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6806..34339(15679) live=3808..31280(12614) d=(-3065+-165) mura_d=(-23+-165) sb_med=-28 sb_acc=225/19200 shift=3042 gmin=3808 nuc=0..10205(9776) win=[9464,10088] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6804..34337(15677) live=3800..31296(12610) d=(-3067+-172) mura_d=(-27+-172) sb_med=-28 sb_acc=218/19200 shift=3040 gmin=3800 nuc=0..10209(9776) win=[9463,10087] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6794..34327(15666) live=3744..31276(12601) d=(-3064+-182) mura_d=(-34+-182) sb_med=-33 sb_acc=224/19200 shift=3030 gmin=3744 nuc=0..10213(9777) win=[9464,10088] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6787..34320(15658) live=3744..31280(12591) d=(-3067+-194) mura_d=(-44+-194) sb_med=-38 sb_acc=177/19200 shift=3023 gmin=3744 nuc=0..10201(9775) win=[9463,10087] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6790..34323(15660) live=3780..31260(12593) d=(-3067+-232) mura_d=(-41+-232) sb_med=-36 sb_acc=189/19200 shift=3026 gmin=3780 nuc=0..10396(9775) win=[9462,10086] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6819..34352(15689) live=3920..32284(12639) d=(-3049+-379) mura_d=(6+-379) sb_med=-34 sb_acc=183/19200 shift=3055 gmin=3920 nuc=0..10504(9781) win=[9318,10244] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6837..34370(15706) live=3872..31296(12666) d=(-3040+-444) mura_d=(33+-444) sb_med=-30 sb_acc=162/19200 shift=3073 gmin=3872 nuc=0..10513(9785) win=[9297,10271] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6846..34379(15715) live=3872..31296(12669) d=(-3045+-463) mura_d=(37+-463) sb_med=-30 sb_acc=198/19200 shift=3082 gmin=3872 nuc=0..10441(9782) win=[9290,10274] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6839..34372(15707) live=3896..31284(12661) d=(-3046+-465) mura_d=(29+-465) sb_med=-32 sb_acc=184/19200 shift=3075 gmin=3896 nuc=0..10382(9782) win=[9291,10271] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6852..34385(15719) live=3892..31284(12665) d=(-3054+-466) mura_d=(34+-466) sb_med=-32 sb_acc=205/19200 shift=3088 gmin=3892 nuc=0..10384(9778) win=[9287,10269] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6858..34391(15725) live=3916..31284(12673) d=(-3052+-469) mura_d=(42+-469) sb_med=-30 sb_acc=194/19200 shift=3094 gmin=3916 nuc=0..10398(9779) win=[9287,10271] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6865..34398(15731) live=3892..31304(12682) d=(-3049+-468) mura_d=(52+-468) sb_med=-29 sb_acc=176/19200 shift=3101 gmin=3892 nuc=0..10390(9780) win=[9295,10265] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6870..34403(15735) live=3880..31296(12690) d=(-3045+-467) mura_d=(61+-467) sb_med=-29 sb_acc=199/19200 shift=3106 gmin=3880 nuc=0..10384(9782) win=[9302,10260] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6878..34411(15742) live=3896..31320(12704) d=(-3038+-466) mura_d=(76+-466) sb_med=-27 sb_acc=269/19200 shift=3114 gmin=3896 nuc=0..10395(9785) win=[9317,10253] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6887..34420(15750) live=3876..31288(12723) d=(-3027+-466) mura_d=(96+-466) sb_med=-24 sb_acc=302/19200 shift=3123 gmin=3876 nuc=0..10391(9790) win=[9331,10249] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6900..34433(15761) live=3912..31464(12744) d=(-3017+-478) mura_d=(119+-478) sb_med=-20 sb_acc=373/19200 shift=3136 gmin=3912 nuc=0..10374(9795) win=[9329,10259] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6909..34442(15768) live=3872..31652(12761) d=(-3007+-485) mura_d=(138+-485) sb_med=-18 sb_acc=375/19200 shift=3145 gmin=3872 nuc=0..10444(9799) win=[9322,10274] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6923..34456(15779) live=3868..31740(12776) d=(-3004+-491) mura_d=(155+-491) sb_med=-12 sb_acc=355/19200 shift=3159 gmin=3868 nuc=0..10479(9799) win=[9302,10296] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6918..34451(15772) live=3780..32120(12784) d=(-2988+-515) mura_d=(166+-515) sb_med=-16 sb_acc=293/19200 shift=3154 gmin=3780 nuc=0..10700(9806) win=[9276,10334] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6901..34434(15753) live=3772..32264(12790) d=(-2963+-555) mura_d=(174+-555) sb_med=-20 sb_acc=202/19200 shift=3137 gmin=3772 nuc=0..10796(9816) win=[9255,10375] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6893..34426(15744) live=3768..32264(12791) d=(-2952+-577) mura_d=(177+-577) sb_med=-24 sb_acc=158/19200 shift=3129 gmin=3768 nuc=0..10835(9820) win=[9244,10396] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6893..34426(15743) live=3748..32272(12792) d=(-2951+-577) mura_d=(178+-577) sb_med=-24 sb_acc=132/19200 shift=3129 gmin=3748 nuc=0..10822(9821) win=[9245,10395] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6891..34424(15740) live=3764..32264(12786) d=(-2954+-571) mura_d=(173+-571) sb_med=-26 sb_acc=122/19200 shift=3127 gmin=3764 nuc=0..10803(9820) win=[9248,10390] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6889..34422(15738) live=3780..32264(12782) d=(-2956+-565) mura_d=(169+-565) sb_med=-28 sb_acc=94/19200 shift=3125 gmin=3780 nuc=0..10797(9819) win=[9251,10385] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6888..34421(15736) live=3764..32288(12781) d=(-2955+-563) mura_d=(169+-563) sb_med=-26 sb_acc=98/19200 shift=3124 gmin=3764 nuc=0..10791(9820) win=[9255,10383] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6889..34422(15737) live=3736..32296(12784) d=(-2953+-565) mura_d=(172+-565) sb_med=-26 sb_acc=114/19200 shift=3125 gmin=3736 nuc=0..10803(9821) win=[9257,10383] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6891..34424(15738) live=3740..32352(12794) d=(-2944+-579) mura_d=(183+-579) sb_med=-26 sb_acc=107/19200 shift=3127 gmin=3740 nuc=0..10803(9824) win=[9252,10396] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6893..34426(15740) live=3736..32360(12825) d=(-2916+-615) mura_d=(213+-615) sb_med=-20 sb_acc=107/19200 shift=3129 gmin=3736 nuc=0..10844(9836) win=[9217,10455] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6889..34422(15736) live=3716..32352(12872) d=(-2864+-674) mura_d=(261+-674) sb_med=-6 sb_acc=153/19200 shift=3125 gmin=3716 nuc=0..10868(9859) win=[9168,10550] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6901..34434(15747) live=3760..31328(12885) d=(-2862+-674) mura_d=(275+-674) sb_med=12 sb_acc=288/19200 shift=3137 gmin=3760 nuc=0..10872(9860) win=[9157,10563] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6887..34420(15732) live=3732..31292(12851) d=(-2881+-647) mura_d=(242+-647) sb_med=2 sb_acc=373/19200 shift=3123 gmin=3732 nuc=0..10849(9854) win=[9169,10537] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6869..34402(15712) live=3692..31280(12779) d=(-2933+-567) mura_d=(172+-567) sb_med=-14 sb_acc=322/19200 shift=3105 gmin=3692 nuc=0..10810(9832) win=[9178,10486] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6842..34375(15683) live=3704..31248(12732) d=(-2951+-522) mura_d=(127+-522) sb_med=-26 sb_acc=247/19200 shift=3078 gmin=3704 nuc=0..10919(9825) win=[9186,10462] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6826..34359(15665) live=3660..31276(12720) d=(-2945+-550) mura_d=(117+-550) sb_med=-30 sb_acc=261/19200 shift=3062 gmin=3660 nuc=0..10918(9827) win=[9143,10509] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6722..34351(15654) live=3668..31248(12722) d=(-2932+-601) mura_d=(122+-601) sb_med=-28 sb_acc=308/19200 shift=3054 gmin=3668 nuc=0..10953(9832) win=[9075,10587] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6716..34345(15645) live=3648..31260(12726) d=(-2919+-663) mura_d=(129+-663) sb_med=-20 sb_acc=348/19200 shift=3048 gmin=3648 nuc=0..10949(9836) win=[9010,10660] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6717..34346(15642) live=3672..31252(12727) d=(-2914+-720) mura_d=(135+-720) sb_med=-14 sb_acc=489/19200 shift=3049 gmin=3672 nuc=0..10939(9836) win=[8953,10717] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6717..34346(15638) live=3684..31280(12727) d=(-2912+-764) mura_d=(137+-764) sb_med=-4 sb_acc=486/19200 shift=3049 gmin=3684 nuc=0..10942(9835) win=[8914,10756] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6719..34348(15638) live=3728..31280(12717) d=(-2921+-794) mura_d=(130+-794) sb_med=-4 sb_acc=437/19200 shift=3051 gmin=3728 nuc=0..10914(9830) win=[8865,10795] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6707..34336(15624) live=3664..31288(12702) d=(-2922+-818) mura_d=(117+-818) sb_med=-8 sb_acc=344/19200 shift=3039 gmin=3664 nuc=0..10951(9829) win=[8823,10833] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6703..34332(15618) live=3692..31296(12684) d=(-2934+-833) mura_d=(101+-833) sb_med=-10 sb_acc=319/19200 shift=3035 gmin=3692 nuc=0..10952(9823) win=[8799,10845] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6701..34330(15615) live=3676..31268(12664) d=(-2951+-839) mura_d=(82+-839) sb_med=-12 sb_acc=220/19200 shift=3033 gmin=3676 nuc=0..10971(9815) win=[8779,10849] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6699..34328(15612) live=3672..31256(12648) d=(-2965+-837) mura_d=(66+-837) sb_med=-16 sb_acc=174/19200 shift=3031 gmin=3672 nuc=0..10965(9809) win=[8769,10847] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6695..34324(15607) live=3676..31280(12630) d=(-2977+-832) mura_d=(50+-832) sb_med=-20 sb_acc=256/19200 shift=3027 gmin=3676 nuc=0..10981(9803) win=[8765,10841] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6694..34323(15602) live=3660..31300(12620) d=(-2983+-826) mura_d=(43+-826) sb_med=-23 sb_acc=388/19200 shift=3026 gmin=3660 nuc=0..10946(9801) win=[8764,10836] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6696..34325(15601) live=3644..31292(12614) d=(-2988+-824) mura_d=(40+-824) sb_med=-20 sb_acc=446/19200 shift=3028 gmin=3644 nuc=0..10936(9799) win=[8764,10832] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6700..34329(15602) live=3660..31308(12610) d=(-2992+-822) mura_d=(40+-822) sb_med=-20 sb_acc=501/19200 shift=3032 gmin=3660 nuc=0..10930(9797) win=[8762,10830] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6702..34331(15601) live=3652..31276(12613) d=(-2989+-822) mura_d=(45+-822) sb_med=-16 sb_acc=498/19200 shift=3034 gmin=3652 nuc=0..10936(9798) win=[8765,10831] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6701..34330(15599) live=3656..31284(12610) d=(-2989+-824) mura_d=(44+-824) sb_med=-16 sb_acc=391/19200 shift=3033 gmin=3656 nuc=0..10932(9798) win=[8761,10833] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6703..34332(15600) live=3596..31284(12612) d=(-2987+-826) mura_d=(48+-826) sb_med=-12 sb_acc=422/19200 shift=3035 gmin=3596 nuc=0..10930(9798) win=[8760,10836] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6685..34332(15598) live=3632..31272(12611) d=(-2987+-828) mura_d=(48+-828) sb_med=-12 sb_acc=432/19200 shift=3035 gmin=3632 nuc=0..10927(9799) win=[8760,10836] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6682..34329(15593) live=3652..31284(12607) d=(-2987+-829) mura_d=(45+-829) sb_med=-16 sb_acc=444/19200 shift=3032 gmin=3652 nuc=0..10927(9799) win=[8761,10837] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6686..34333(15594) live=3644..31276(12606) d=(-2988+-826) mura_d=(48+-826) sb_med=-14 sb_acc=430/19200 shift=3036 gmin=3644 nuc=0..10930(9798) win=[8760,10836] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6685..34332(15590) live=3640..31292(12605) d=(-2985+-823) mura_d=(50+-823) sb_med=-12 sb_acc=407/19200 shift=3035 gmin=3640 nuc=0..10919(9800) win=[8763,10837] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6693..34340(15595) live=3620..31296(12601) d=(-2994+-820) mura_d=(49+-820) sb_med=-13 sb_acc=400/19200 shift=3043 gmin=3620 nuc=0..10927(9796) win=[8759,10831] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6691..34338(15591) live=3656..31272(12600) d=(-2991+-818) mura_d=(50+-818) sb_med=-12 sb_acc=378/19200 shift=3041 gmin=3656 nuc=0..10917(9797) win=[8760,10834] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6689..34336(15584) live=3656..31272(12598) d=(-2986+-814) mura_d=(53+-814) sb_med=-12 sb_acc=446/19200 shift=3039 gmin=3656 nuc=0..10920(9800) win=[8762,10836] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6697..34344(15585) live=3632..31260(12597) d=(-2988+-811) mura_d=(59+-811) sb_med=-12 sb_acc=523/19200 shift=3047 gmin=3632 nuc=0..10929(9799) win=[8760,10836] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6700..34347(15583) live=3616..31280(12599) d=(-2984+-810) mura_d=(66+-810) sb_med=-8 sb_acc=572/19200 shift=3050 gmin=3616 nuc=0..10917(9801) win=[8762,10838] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6702..34349(15579) live=3652..31280(12600) d=(-2979+-808) mura_d=(73+-808) sb_med=-4 sb_acc=650/19200 shift=3052 gmin=3652 nuc=0..10912(9803) win=[8763,10843] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6705..34352(15579) live=3608..31272(12599) d=(-2980+-809) mura_d=(75+-809) sb_med=-4 sb_acc=635/19200 shift=3055 gmin=3608 nuc=0..10942(9803) win=[8762,10842] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6692..34354(15579) live=3620..31316(12600) d=(-2978+-811) mura_d=(79+-811) sb_med=0 sb_acc=611/19200 shift=3057 gmin=3620 nuc=0..10964(9803) win=[8760,10846] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6695..34358(15582) live=3632..31296(12601) d=(-2981+-812) mura_d=(80+-812) sb_med=0 sb_acc=555/19200 shift=3061 gmin=3632 nuc=0..10954(9802) win=[8761,10843] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6680..34358(15581) live=3604..31296(12601) d=(-2979+-814) mura_d=(82+-814) sb_med=4 sb_acc=551/19200 shift=3061 gmin=3604 nuc=0..10943(9803) win=[8760,10844] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6622..34355(15577) live=3564..31292(12598) d=(-2979+-815) mura_d=(79+-815) sb_med=0 sb_acc=547/19200 shift=3058 gmin=3564 nuc=0..10951(9803) win=[8758,10848] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6624..34357(15578) live=3604..31288(12599) d=(-2979+-815) mura_d=(81+-815) sb_med=4 sb_acc=513/19200 shift=3060 gmin=3604 nuc=0..10942(9803) win=[8758,10848] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6621..34354(15575) live=3584..31284(12595) d=(-2980+-814) mura_d=(77+-814) sb_med=0 sb_acc=511/19200 shift=3057 gmin=3584 nuc=0..10941(9803) win=[8760,10844] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6614..34347(15567) live=3608..31300(12594) d=(-2974+-814) mura_d=(76+-814) sb_med=0 sb_acc=420/19200 shift=3050 gmin=3608 nuc=0..10946(9806) win=[8763,10847] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6617..34350(15570) live=3628..31284(12594) d=(-2976+-814) mura_d=(77+-814) sb_med=1 sb_acc=421/19200 shift=3053 gmin=3628 nuc=0..10954(9804) win=[8761,10847] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6615..34348(15567) live=3596..31288(12591) d=(-2976+-815) mura_d=(75+-815) sb_med=-2 sb_acc=449/19200 shift=3051 gmin=3596 nuc=0..10940(9804) win=[8761,10847] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6615..34348(15566) live=3620..31316(12592) d=(-2974+-815) mura_d=(77+-815) sb_med=0 sb_acc=426/19200 shift=3051 gmin=3620 nuc=0..10930(9805) win=[8763,10847] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6616..34349(15567) live=3596..31300(12594) d=(-2972+-817) mura_d=(80+-817) sb_med=0 sb_acc=371/19200 shift=3052 gmin=3596 nuc=0..10918(9806) win=[8764,10848] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6615..34348(15565) live=3604..31280(12599) d=(-2966+-819) mura_d=(85+-819) sb_med=0 sb_acc=383/19200 shift=3051 gmin=3604 nuc=0..10934(9809) win=[8768,10848] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6615..34348(15565) live=3568..31276(12611) d=(-2954+-822) mura_d=(97+-822) sb_med=2 sb_acc=408/19200 shift=3051 gmin=3568 nuc=0..10924(9814) win=[8777,10851] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6617..34350(15566) live=3592..31272(12624) d=(-2942+-820) mura_d=(111+-820) sb_med=3 sb_acc=403/19200 shift=3053 gmin=3592 nuc=0..10939(9820) win=[8786,10852] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6616..34349(15565) live=3568..31292(12643) d=(-2922+-808) mura_d=(130+-808) sb_med=8 sb_acc=414/19200 shift=3052 gmin=3568 nuc=0..10877(9829) win=[8806,10852] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6614..34347(15562) live=3596..31248(12653) d=(-2909+-780) mura_d=(141+-780) sb_med=4 sb_acc=417/19200 shift=3050 gmin=3596 nuc=0..10884(9836) win=[8842,10830] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6619..34352(15567) live=3612..31280(12666) d=(-2901+-735) mura_d=(154+-735) sb_med=6 sb_acc=414/19200 shift=3055 gmin=3612 nuc=0..10917(9842) win=[8919,10763] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6616..34349(15563) live=3568..31288(12665) d=(-2898+-670) mura_d=(154+-670) sb_med=0 sb_acc=354/19200 shift=3052 gmin=3568 nuc=0..10952(9845) win=[9015,10675] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6615..34348(15562) live=3608..31296(12655) d=(-2907+-582) mura_d=(144+-582) sb_med=-4 sb_acc=274/19200 shift=3051 gmin=3608 nuc=0..10923(9844) win=[9115,10571] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6615..34348(15562) live=3588..31276(12628) d=(-2934+-484) mura_d=(117+-484) sb_med=-8 sb_acc=195/19200 shift=3051 gmin=3588 nuc=0..10880(9834) win=[9203,10463] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6609..34342(15555) live=3564..31284(12580) d=(-2975+-397) mura_d=(70+-397) sb_med=-19 sb_acc=132/19200 shift=3045 gmin=3564 nuc=0..10848(9816) win=[9268,10364] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6592..34325(15538) live=3580..31228(12520) d=(-3018+-320) mura_d=(10+-320) sb_med=-36 sb_acc=83/19200 shift=3028 gmin=3580 nuc=0..10799(9798) win=[9359,10235] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6576..34309(15522) live=3592..31264(12463) d=(-3059+-315) mura_d=(-47+-315) sb_med=-48 sb_acc=40/19200 shift=3012 gmin=3592 nuc=0..10781(9778) win=[9363,10193] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6555..34288(15501) live=3544..31260(12407) d=(-3094+-375) mura_d=(-103+-375) sb_med=-64 sb_acc=30/19200 shift=2991 gmin=3544 nuc=0..10728(9761) win=[9260,10260] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6534..34267(15479) live=3540..31228(12353) d=(-3126+-450) mura_d=(-156+-450) sb_med=-80 sb_acc=17/19200 shift=2970 gmin=3540 nuc=0..10439(9744) win=[9163,10325] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6533..34266(15478) live=3552..31268(12331) d=(-3148+-499) mura_d=(-179+-499) sb_med=-82 sb_acc=26/19200 shift=2969 gmin=3552 nuc=0..10343(9733) win=[9107,10359] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6529..34262(15474) live=3576..31244(12320) d=(-3154+-522) mura_d=(-189+-522) sb_med=-84 sb_acc=23/19200 shift=2965 gmin=3576 nuc=0..10337(9730) win=[9080,10378] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6527..34260(15472) live=3584..31292(12316) d=(-3156+-535) mura_d=(-193+-535) sb_med=-87 sb_acc=26/19200 shift=2963 gmin=3584 nuc=0..10344(9729) win=[9063,10393] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6521..34254(15466) live=3544..31232(12317) d=(-3149+-540) mura_d=(-192+-540) sb_med=-86 sb_acc=22/19200 shift=2957 gmin=3544 nuc=0..10332(9732) win=[9054,10410] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6524..34257(15469) live=3572..31244(12320) d=(-3149+-540) mura_d=(-189+-540) sb_med=-88 sb_acc=26/19200 shift=2960 gmin=3572 nuc=0..10426(9732) win=[9051,10413] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6527..34260(15472) live=3552..31256(12322) d=(-3150+-537) mura_d=(-187+-537) sb_med=-86 sb_acc=16/19200 shift=2963 gmin=3552 nuc=0..10448(9732) win=[9051,10411] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6522..34255(15466) live=3576..31280(12317) d=(-3149+-538) mura_d=(-191+-538) sb_med=-90 sb_acc=26/19200 shift=2958 gmin=3576 nuc=0..10431(9732) win=[9052,10412] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6518..34251(15462) live=3560..31236(12316) d=(-3146+-538) mura_d=(-192+-538) sb_med=-88 sb_acc=34/19200 shift=2954 gmin=3560 nuc=0..10411(9734) win=[9055,10411] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6518..34251(15462) live=3548..31248(12311) d=(-3150+-539) mura_d=(-196+-539) sb_med=-92 sb_acc=45/19200 shift=2954 gmin=3548 nuc=0..10414(9732) win=[9051,10411] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6517..34250(15460) live=3536..31240(12307) d=(-3153+-542) mura_d=(-200+-542) sb_med=-95 sb_acc=108/19200 shift=2953 gmin=3536 nuc=0..10378(9730) win=[9049,10411] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6515..34248(15456) live=3548..31192(12307) d=(-3149+-543) mura_d=(-198+-543) sb_med=-94 sb_acc=212/19200 shift=2951 gmin=3548 nuc=0..10382(9732) win=[9048,10414] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6515..34248(15453) live=3556..31260(12307) d=(-3146+-545) mura_d=(-195+-545) sb_med=-90 sb_acc=351/19200 shift=2951 gmin=3556 nuc=0..10379(9733) win=[9048,10418] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6517..34250(15452) live=3532..31232(12306) d=(-3146+-547) mura_d=(-193+-547) sb_med=-86 sb_acc=367/19200 shift=2953 gmin=3532 nuc=0..10380(9733) win=[9044,10422] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6525..34258(15456) live=3528..31264(12306) d=(-3150+-549) mura_d=(-189+-549) sb_med=-82 sb_acc=474/19200 shift=2961 gmin=3528 nuc=0..10388(9731) win=[9040,10422] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6533..34266(15460) live=3540..31248(12308) d=(-3152+-550) mura_d=(-184+-550) sb_med=-72 sb_acc=488/19200 shift=2969 gmin=3540 nuc=0..10388(9730) win=[9038,10422] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6537..34270(15459) live=3496..31216(12303) d=(-3156+-551) mura_d=(-183+-551) sb_med=-72 sb_acc=580/19200 shift=2973 gmin=3496 nuc=0..10384(9728) win=[9035,10421] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6544..34277(15457) live=3480..31244(12305) d=(-3152+-547) mura_d=(-172+-547) sb_med=-62 sb_acc=674/19200 shift=2980 gmin=3480 nuc=0..10398(9731) win=[9034,10426] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6556..34289(15457) live=3496..31312(12307) d=(-3150+-537) mura_d=(-158+-537) sb_med=-52 sb_acc=720/19200 shift=2992 gmin=3496 nuc=0..10388(9732) win=[9031,10431] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6563..34296(15451) live=3524..31268(12303) d=(-3148+-526) mura_d=(-149+-526) sb_med=-48 sb_acc=829/19200 shift=2999 gmin=3524 nuc=0..10393(9733) win=[9031,10433] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6573..34306(15450) live=3488..31272(12303) d=(-3147+-516) mura_d=(-138+-516) sb_med=-43 sb_acc=773/19200 shift=3009 gmin=3488 nuc=0..10397(9733) win=[9034,10432] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6473..34306(15444) live=3464..31252(12299) d=(-3145+-512) mura_d=(-136+-512) sb_med=-38 sb_acc=675/19200 shift=3009 gmin=3464 nuc=0..10382(9734) win=[9034,10434] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6472..34305(15439) live=3508..31244(12293) d=(-3146+-510) mura_d=(-138+-510) sb_med=-37 sb_acc=667/19200 shift=3008 gmin=3508 nuc=0..10370(9734) win=[9034,10434] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6472..34305(15438) live=3492..31256(12289) d=(-3149+-511) mura_d=(-141+-511) sb_med=-36 sb_acc=522/19200 shift=3008 gmin=3492 nuc=0..10373(9733) win=[9032,10432] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6472..34305(15436) live=3452..31256(12283) d=(-3153+-511) mura_d=(-145+-511) sb_med=-36 sb_acc=485/19200 shift=3008 gmin=3452 nuc=0..10371(9731) win=[9032,10428] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6472..34305(15434) live=3496..31252(12282) d=(-3152+-509) mura_d=(-144+-509) sb_med=-32 sb_acc=500/19200 shift=3008 gmin=3496 nuc=0..10362(9731) win=[9036,10426] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34308(15435) live=3508..31244(12277) d=(-3158+-508) mura_d=(-147+-508) sb_med=-32 sb_acc=459/19200 shift=3011 gmin=3508 nuc=0..10354(9728) win=[9035,10421] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6477..34310(15436) live=3452..31260(12274) d=(-3162+-507) mura_d=(-149+-507) sb_med=-32 sb_acc=457/19200 shift=3013 gmin=3452 nuc=0..10338(9727) win=[9036,10416] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34280(15433) live=3488..31240(12273) d=(-3160+-507) mura_d=(-149+-507) sb_med=-32 sb_acc=425/19200 shift=3011 gmin=3488 nuc=0..10342(9728) win=[9037,10417] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34280(15431) live=3520..31264(12271) d=(-3160+-507) mura_d=(-149+-507) sb_med=-31 sb_acc=398/19200 shift=3011 gmin=3520 nuc=0..10329(9727) win=[9038,10416] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34280(15430) live=3512..31252(12272) d=(-3158+-507) mura_d=(-147+-507) sb_med=-28 sb_acc=424/19200 shift=3011 gmin=3512 nuc=0..10334(9729) win=[9040,10416] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34280(15429) live=3484..31264(12268) d=(-3161+-508) mura_d=(-150+-508) sb_med=-29 sb_acc=411/19200 shift=3011 gmin=3484 nuc=0..10334(9727) win=[9040,10414] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6469..34274(15422) live=3488..31244(12267) d=(-3155+-509) mura_d=(-150+-509) sb_med=-29 sb_acc=399/19200 shift=3005 gmin=3488 nuc=0..10345(9730) win=[9043,10415] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6469..34274(15421) live=3456..31232(12262) d=(-3158+-510) mura_d=(-153+-510) sb_med=-32 sb_acc=406/19200 shift=3005 gmin=3456 nuc=0..10350(9728) win=[9039,10417] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6465..34270(15416) live=3464..31196(12262) d=(-3154+-510) mura_d=(-153+-510) sb_med=-31 sb_acc=359/19200 shift=3001 gmin=3464 nuc=0..10348(9730) win=[9043,10417] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6463..34244(15412) live=3476..31220(12257) d=(-3155+-510) mura_d=(-156+-510) sb_med=-32 sb_acc=371/19200 shift=2999 gmin=3476 nuc=0..10362(9730) win=[9042,10416] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6463..34226(15411) live=3492..31208(12253) d=(-3159+-508) mura_d=(-160+-508) sb_med=-34 sb_acc=368/19200 shift=2999 gmin=3492 nuc=0..10330(9728) win=[9047,10407] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6464..34227(15411) live=3508..31216(12251) d=(-3160+-507) mura_d=(-160+-507) sb_med=-34 sb_acc=391/19200 shift=3000 gmin=3508 nuc=0..10325(9728) win=[9049,10405] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6463..34226(15409) live=3500..31204(12244) d=(-3165+-506) mura_d=(-166+-506) sb_med=-39 sb_acc=392/19200 shift=2999 gmin=3500 nuc=0..10318(9725) win=[9051,10397] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6461..34224(15406) live=3488..31208(12241) d=(-3165+-505) mura_d=(-168+-505) sb_med=-37 sb_acc=390/19200 shift=2997 gmin=3488 nuc=0..10306(9725) win=[9057,10393] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6460..34223(15404) live=3452..31204(12236) d=(-3167+-504) mura_d=(-171+-504) sb_med=-40 sb_acc=396/19200 shift=2996 gmin=3452 nuc=0..10299(9724) win=[9059,10389] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6460..34223(15402) live=3456..31168(12233) d=(-3169+-503) mura_d=(-173+-503) sb_med=-41 sb_acc=354/19200 shift=2996 gmin=3456 nuc=0..10276(9724) win=[9061,10385] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6459..34222(15400) live=3480..31188(12232) d=(-3168+-503) mura_d=(-173+-503) sb_med=-40 sb_acc=331/19200 shift=2995 gmin=3480 nuc=0..10238(9724) win=[9064,10382] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6459..34222(15399) live=3432..31212(12229) d=(-3170+-503) mura_d=(-175+-503) sb_med=-43 sb_acc=346/19200 shift=2995 gmin=3432 nuc=0..10231(9723) win=[9065,10381] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6457..34220(15396) live=3484..31152(12229) d=(-3167+-501) mura_d=(-174+-501) sb_med=-40 sb_acc=314/19200 shift=2993 gmin=3484 nuc=0..10219(9724) win=[9070,10378] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6460..34223(15398) live=3500..31172(12229) d=(-3169+-501) mura_d=(-173+-501) sb_med=-40 sb_acc=312/19200 shift=2996 gmin=3500 nuc=0..10212(9724) win=[9071,10375] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6460..34223(15397) live=3484..31180(12228) d=(-3169+-501) mura_d=(-173+-501) sb_med=-40 sb_acc=355/19200 shift=2996 gmin=3484 nuc=0..10205(9724) win=[9071,10375] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6459..34222(15395) live=3496..31184(12227) d=(-3168+-500) mura_d=(-173+-500) sb_med=-40 sb_acc=353/19200 shift=2995 gmin=3496 nuc=0..10203(9724) win=[9074,10372] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6454..34217(15388) live=3488..31184(12221) d=(-3167+-500) mura_d=(-177+-500) sb_med=-45 sb_acc=398/19200 shift=2990 gmin=3488 nuc=0..10191(9725) win=[9076,10372] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6452..34215(15384) live=3476..31192(12219) d=(-3166+-499) mura_d=(-178+-499) sb_med=-47 sb_acc=369/19200 shift=2988 gmin=3476 nuc=0..10175(9725) win=[9079,10371] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6453..34216(15383) live=3488..31220(12219) d=(-3165+-500) mura_d=(-176+-500) sb_med=-45 sb_acc=411/19200 shift=2989 gmin=3488 nuc=0..10172(9726) win=[9080,10370] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6453..34216(15381) live=3468..31172(12218) d=(-3163+-499) mura_d=(-174+-499) sb_med=-44 sb_acc=401/19200 shift=2989 gmin=3468 nuc=0..10193(9726) win=[9082,10370] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6452..34215(15379) live=3492..31224(12214) d=(-3164+-499) mura_d=(-176+-499) sb_med=-48 sb_acc=376/19200 shift=2988 gmin=3492 nuc=0..10206(9726) win=[9082,10370] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6447..34210(15372) live=3480..31256(12214) d=(-3158+-498) mura_d=(-175+-498) sb_med=-48 sb_acc=341/19200 shift=2983 gmin=3480 nuc=0..10218(9729) win=[9088,10368] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6455..34218(15379) live=3500..31260(12216) d=(-3163+-498) mura_d=(-172+-498) sb_med=-44 sb_acc=352/19200 shift=2991 gmin=3500 nuc=0..10264(9727) win=[9086,10366] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6455..34218(15377) live=3496..31240(12215) d=(-3162+-497) mura_d=(-171+-497) sb_med=-46 sb_acc=326/19200 shift=2991 gmin=3496 nuc=0..10260(9727) win=[9088,10364] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6453..34216(15374) live=3516..31276(12216) d=(-3159+-497) mura_d=(-170+-497) sb_med=-45 sb_acc=313/19200 shift=2989 gmin=3516 nuc=0..10248(9729) win=[9089,10367] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6452..34215(15372) live=3480..31212(12212) d=(-3160+-498) mura_d=(-172+-498) sb_med=-48 sb_acc=351/19200 shift=2988 gmin=3480 nuc=0..10265(9729) win=[9088,10368] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6453..34216(15372) live=3476..31240(12215) d=(-3157+-498) mura_d=(-168+-498) sb_med=-47 sb_acc=315/19200 shift=2989 gmin=3476 nuc=0..10362(9730) win=[9088,10370] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6455..34218(15373) live=3480..31256(12219) d=(-3154+-500) mura_d=(-163+-500) sb_med=-44 sb_acc=284/19200 shift=2991 gmin=3480 nuc=0..10409(9731) win=[9090,10372] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6457..34220(15374) live=3488..31192(12219) d=(-3155+-505) mura_d=(-162+-505) sb_med=-44 sb_acc=253/19200 shift=2993 gmin=3488 nuc=0..10450(9731) win=[9085,10375] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6460..34223(15376) live=3460..31216(12222) d=(-3154+-507) mura_d=(-158+-507) sb_med=-38 sb_acc=296/19200 shift=2996 gmin=3460 nuc=0..10513(9731) win=[9088,10374] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6459..34222(15374) live=3504..31236(12219) d=(-3155+-505) mura_d=(-160+-505) sb_med=-40 sb_acc=278/19200 shift=2995 gmin=3504 nuc=0..10502(9731) win=[9090,10370] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6459..34222(15373) live=3488..31224(12220) d=(-3152+-482) mura_d=(-157+-482) sb_med=-42 sb_acc=294/19200 shift=2995 gmin=3488 nuc=0..10513(9732) win=[9118,10344] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6463..34226(15376) live=3472..31232(12264) d=(-3112+-394) mura_d=(-113+-394) sb_med=-36 sb_acc=292/19200 shift=2999 gmin=3472 nuc=0..10727(9753) win=[9237,10267] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6467..34230(15379) live=3484..31244(12345) d=(-3034+-324) mura_d=(-31+-324) sb_med=-32 sb_acc=342/19200 shift=3003 gmin=3484 nuc=0..10841(9790) win=[9371,10209] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6485..34248(15396) live=3496..31224(12435) d=(-2961+-462) mura_d=(60+-462) sb_med=-20 sb_acc=458/19200 shift=3021 gmin=3496 nuc=0..10922(9823) win=[9172,10474] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6485..34248(15394) live=3464..31232(12505) d=(-2890+-601) mura_d=(131+-601) sb_med=-14 sb_acc=593/19200 shift=3021 gmin=3464 nuc=0..10966(9854) win=[9132,10574] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6490..34253(15398) live=3496..31204(12548) d=(-2850+-705) mura_d=(176+-705) sb_med=-5 sb_acc=663/19200 shift=3026 gmin=3496 nuc=0..10989(9869) win=[9089,10649] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6488..34232(15396) live=3468..31188(12558) d=(-2837+-771) mura_d=(187+-771) sb_med=0 sb_acc=706/19200 shift=3024 gmin=3468 nuc=0..11011(9872) win=[9009,10735] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6496..34228(15403) live=3452..31184(12560) d=(-2843+-818) mura_d=(189+-818) sb_med=11 sb_acc=807/19200 shift=3032 gmin=3452 nuc=0..10959(9867) win=[8912,10822] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6496..34228(15402) live=3468..31196(12551) d=(-2851+-843) mura_d=(181+-843) sb_med=14 sb_acc=871/19200 shift=3032 gmin=3468 nuc=0..10939(9863) win=[8871,10853] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6487..34221(15393) live=3480..31200(12530) d=(-2863+-854) mura_d=(160+-854) sb_med=9 sb_acc=809/19200 shift=3023 gmin=3480 nuc=0..10971(9856) win=[8813,10899] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6483..34217(15388) live=3504..31256(12508) d=(-2880+-857) mura_d=(139+-857) sb_med=12 sb_acc=635/19200 shift=3019 gmin=3504 nuc=0..10979(9848) win=[8778,10918] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6483..34217(15388) live=3472..31240(12479) d=(-2908+-845) mura_d=(111+-845) sb_med=4 sb_acc=492/19200 shift=3019 gmin=3472 nuc=0..10976(9836) win=[8750,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6481..34215(15385) live=3464..31224(12459) d=(-2926+-829) mura_d=(91+-829) sb_med=2 sb_acc=351/19200 shift=3017 gmin=3464 nuc=0..10976(9828) win=[8741,10913] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6483..34217(15387) live=3488..31180(12441) d=(-2946+-810) mura_d=(73+-810) sb_med=-1 sb_acc=317/19200 shift=3019 gmin=3488 nuc=0..10962(9819) win=[8738,10900] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6483..34192(15386) live=3484..31148(12427) d=(-2960+-794) mura_d=(59+-794) sb_med=-4 sb_acc=266/19200 shift=3019 gmin=3484 nuc=0..10945(9813) win=[8742,10884] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6481..34190(15384) live=3452..31168(12417) d=(-2967+-785) mura_d=(50+-785) sb_med=-5 sb_acc=238/19200 shift=3017 gmin=3452 nuc=0..10958(9810) win=[8746,10872] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6483..34192(15386) live=3448..31188(12411) d=(-2975+-780) mura_d=(44+-780) sb_med=-8 sb_acc=221/19200 shift=3019 gmin=3448 nuc=0..10949(9807) win=[8748,10864] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6479..34188(15382) live=3472..31208(12409) d=(-2973+-780) mura_d=(42+-780) sb_med=-8 sb_acc=172/19200 shift=3015 gmin=3472 nuc=0..10953(9808) win=[8746,10868] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6477..34186(15379) live=3476..31192(12410) d=(-2970+-785) mura_d=(43+-785) sb_med=-8 sb_acc=170/19200 shift=3013 gmin=3476 nuc=0..10941(9809) win=[8739,10877] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6479..34188(15381) live=3432..31204(12413) d=(-2968+-792) mura_d=(47+-792) sb_med=-8 sb_acc=202/19200 shift=3015 gmin=3432 nuc=0..10952(9810) win=[8735,10883] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6477..34186(15379) live=3440..31212(12418) d=(-2960+-802) mura_d=(53+-802) sb_med=-8 sb_acc=215/19200 shift=3013 gmin=3440 nuc=0..10965(9813) win=[8731,10893] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6476..34185(15377) live=3444..31192(12429) d=(-2949+-814) mura_d=(63+-814) sb_med=-4 sb_acc=250/19200 shift=3012 gmin=3444 nuc=0..10964(9818) win=[8731,10905] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6471..34180(15371) live=3448..31208(12433) d=(-2939+-825) mura_d=(68+-825) sb_med=-8 sb_acc=253/19200 shift=3007 gmin=3448 nuc=0..10965(9822) win=[8732,10912] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6474..34183(15374) live=3460..31212(12444) d=(-2930+-835) mura_d=(80+-835) sb_med=-4 sb_acc=272/19200 shift=3010 gmin=3460 nuc=0..11003(9826) win=[8735,10917] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6472..34181(15371) live=3468..31176(12447) d=(-2923+-843) mura_d=(85+-843) sb_med=-4 sb_acc=358/19200 shift=3008 gmin=3468 nuc=0..10988(9829) win=[8735,10923] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6471..34180(15369) live=3484..31204(12451) d=(-2918+-846) mura_d=(89+-846) sb_med=-4 sb_acc=380/19200 shift=3007 gmin=3484 nuc=0..10979(9831) win=[8738,10924] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34184(15371) live=3464..31204(12456) d=(-2915+-849) mura_d=(96+-849) sb_med=0 sb_acc=442/19200 shift=3011 gmin=3464 nuc=0..10983(9833) win=[8738,10926] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6477..34186(15371) live=3476..31204(12464) d=(-2908+-851) mura_d=(105+-851) sb_med=4 sb_acc=543/19200 shift=3013 gmin=3476 nuc=0..10971(9836) win=[8744,10926] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6473..34182(15365) live=3464..31224(12460) d=(-2905+-851) mura_d=(104+-851) sb_med=2 sb_acc=629/19200 shift=3009 gmin=3464 nuc=0..10976(9837) win=[8748,10926] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6490..34199(15381) live=3476..31180(12485) d=(-2896+-863) mura_d=(130+-863) sb_med=9 sb_acc=684/19200 shift=3026 gmin=3476 nuc=0..10979(9841) win=[8753,10929] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6535..34244(15425) live=3684..32200(12575) d=(-2851+-910) mura_d=(220+-910) sb_med=20 sb_acc=831/19200 shift=3071 gmin=3684 nuc=0..10960(9860) win=[8773,10947] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6567..34276(15457) live=3516..32220(12634) d=(-2823+-911) mura_d=(280+-911) sb_med=33 sb_acc=997/19200 shift=3103 gmin=3516 nuc=0..10944(9873) win=[8816,10928] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6581..34290(15470) live=3476..31592(12652) d=(-2818+-878) mura_d=(299+-878) sb_med=40 sb_acc=1078/19200 shift=3117 gmin=3476 nuc=0..10912(9875) win=[8860,10890] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6567..34276(15456) live=3476..32208(12648) d=(-2809+-846) mura_d=(294+-846) sb_med=43 sb_acc=1031/19200 shift=3103 gmin=3476 nuc=0..10892(9880) win=[8906,10854] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6541..34250(15430) live=3468..31264(12654) d=(-2776+-846) mura_d=(301+-846) sb_med=38 sb_acc=894/19200 shift=3077 gmin=3468 nuc=0..10969(9895) win=[9015,10773] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6525..34234(15414) live=3484..31240(12676) d=(-2738+-858) mura_d=(323+-858) sb_med=40 sb_acc=661/19200 shift=3061 gmin=3484 nuc=0..10962(9911) win=[9053,10769] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6530..34239(15419) live=3428..31244(12703) d=(-2716+-867) mura_d=(350+-867) sb_med=49 sb_acc=610/19200 shift=3066 gmin=3428 nuc=0..10958(9921) win=[9078,10762] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6528..34237(15417) live=3428..31256(12716) d=(-2701+-871) mura_d=(363+-871) sb_med=52 sb_acc=641/19200 shift=3064 gmin=3428 nuc=0..10966(9927) win=[9083,10769] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6521..34230(15410) live=3440..31204(12718) d=(-2692+-873) mura_d=(365+-873) sb_med=52 sb_acc=642/19200 shift=3057 gmin=3440 nuc=0..10959(9931) win=[9086,10774] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6525..34234(15414) live=3412..31284(12718) d=(-2696+-874) mura_d=(365+-874) sb_med=54 sb_acc=667/19200 shift=3061 gmin=3412 nuc=0..10960(9929) win=[9081,10775] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6517..34226(15405) live=3436..31228(12709) d=(-2696+-876) mura_d=(357+-876) sb_med=48 sb_acc=659/19200 shift=3053 gmin=3436 nuc=0..10960(9929) win=[9078,10778] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6519..34228(15407) live=3428..31196(12708) d=(-2700+-878) mura_d=(355+-878) sb_med=46 sb_acc=652/19200 shift=3055 gmin=3428 nuc=0..10950(9927) win=[9071,10783] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6523..34232(15411) live=3472..31208(12712) d=(-2699+-881) mura_d=(360+-881) sb_med=52 sb_acc=631/19200 shift=3059 gmin=3472 nuc=0..10950(9927) win=[9065,10789] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6515..34224(15403) live=3448..31264(12716) d=(-2687+-886) mura_d=(364+-886) sb_med=52 sb_acc=628/19200 shift=3051 gmin=3448 nuc=0..10955(9933) win=[9067,10797] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6513..34222(15401) live=3444..31264(12716) d=(-2685+-889) mura_d=(364+-889) sb_med=48 sb_acc=611/19200 shift=3049 gmin=3444 nuc=0..10966(9933) win=[9063,10803] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6499..34220(15399) live=3452..31240(12719) d=(-2680+-891) mura_d=(367+-891) sb_med=52 sb_acc=610/19200 shift=3047 gmin=3452 nuc=0..10953(9935) win=[9059,10811] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6464..34221(15400) live=3416..31236(12722) d=(-2678+-893) mura_d=(370+-893) sb_med=56 sb_acc=594/19200 shift=3048 gmin=3416 nuc=0..10965(9937) win=[9061,10811] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6456..34217(15395) live=3412..31212(12720) d=(-2675+-894) mura_d=(369+-894) sb_med=52 sb_acc=606/19200 shift=3044 gmin=3412 nuc=0..10953(9938) win=[9060,10814] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6454..34227(15405) live=3400..31220(12722) d=(-2683+-892) mura_d=(371+-892) sb_med=56 sb_acc=662/19200 shift=3054 gmin=3400 nuc=0..10955(9934) win=[9061,10807] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6451..34224(15401) live=3400..31196(12719) d=(-2682+-891) mura_d=(369+-891) sb_med=52 sb_acc=744/19200 shift=3051 gmin=3400 nuc=0..10954(9935) win=[9059,10809] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6462..34225(15401) live=3420..31220(12717) d=(-2683+-889) mura_d=(369+-889) sb_med=52 sb_acc=845/19200 shift=3052 gmin=3420 nuc=0..10949(9934) win=[9063,10805] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6461..34221(15395) live=3416..31216(12714) d=(-2682+-888) mura_d=(366+-888) sb_med=49 sb_acc=969/19200 shift=3048 gmin=3416 nuc=0..10961(9935) win=[9066,10804] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6467..34224(15396) live=3420..31220(12711) d=(-2685+-886) mura_d=(366+-886) sb_med=48 sb_acc=1100/19200 shift=3051 gmin=3420 nuc=0..10961(9933) win=[9068,10798] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6431..34220(15391) live=3384..31200(12705) d=(-2686+-885) mura_d=(361+-885) sb_med=44 sb_acc=1144/19200 shift=3047 gmin=3384 nuc=0..10953(9933) win=[9062,10804] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6443..34220(15390) live=3408..31240(12700) d=(-2689+-885) mura_d=(358+-885) sb_med=44 sb_acc=1083/19200 shift=3047 gmin=3408 nuc=0..10950(9932) win=[9058,10804] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6441..34218(15387) live=3404..31228(12691) d=(-2696+-881) mura_d=(349+-881) sb_med=44 sb_acc=916/19200 shift=3045 gmin=3404 nuc=0..10960(9929) win=[9056,10802] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6448..34225(15394) live=3420..31260(12674) d=(-2720+-874) mura_d=(332+-874) sb_med=44 sb_acc=730/19200 shift=3052 gmin=3420 nuc=0..10955(9919) win=[9043,10795] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6451..34228(15397) live=3444..31200(12642) d=(-2754+-862) mura_d=(301+-862) sb_med=36 sb_acc=549/19200 shift=3055 gmin=3444 nuc=0..10944(9904) win=[9009,10797] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6439..34216(15384) live=3404..31200(12612) d=(-2772+-858) mura_d=(271+-858) sb_med=24 sb_acc=378/19200 shift=3043 gmin=3404 nuc=0..10932(9896) win=[8971,10821] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6439..34216(15384) live=3380..31240(12596) d=(-2788+-858) mura_d=(255+-858) sb_med=24 sb_acc=240/19200 shift=3043 gmin=3380 nuc=0..10904(9890) win=[8901,10877] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6433..34210(15378) live=3408..32160(12575) d=(-2803+-859) mura_d=(234+-859) sb_med=16 sb_acc=170/19200 shift=3037 gmin=3408 nuc=0..10928(9883) win=[8861,10905] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6429..34206(15374) live=3404..32072(12562) d=(-2812+-862) mura_d=(221+-862) sb_med=14 sb_acc=131/19200 shift=3033 gmin=3404 nuc=0..10932(9879) win=[8848,10910] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6411..34188(15356) live=3400..31300(12549) d=(-2807+-866) mura_d=(208+-866) sb_med=8 sb_acc=114/19200 shift=3015 gmin=3400 nuc=0..10937(9882) win=[8840,10922] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6412..34189(15356) live=3388..31220(12542) d=(-2814+-867) mura_d=(202+-867) sb_med=8 sb_acc=95/19200 shift=3016 gmin=3388 nuc=0..10931(9879) win=[8835,10921] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6411..34188(15355) live=3364..31192(12533) d=(-2822+-867) mura_d=(193+-867) sb_med=0 sb_acc=78/19200 shift=3015 gmin=3364 nuc=0..10939(9875) win=[8828,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6415..34192(15359) live=3388..31224(12532) d=(-2827+-869) mura_d=(192+-869) sb_med=4 sb_acc=79/19200 shift=3019 gmin=3388 nuc=0..10946(9873) win=[8824,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6411..34188(15355) live=3356..31228(12529) d=(-2826+-869) mura_d=(189+-869) sb_med=0 sb_acc=75/19200 shift=3015 gmin=3356 nuc=0..10946(9873) win=[8826,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6415..34192(15359) live=3384..31216(12531) d=(-2828+-870) mura_d=(191+-870) sb_med=0 sb_acc=65/19200 shift=3019 gmin=3384 nuc=0..10954(9872) win=[8824,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6417..34194(15360) live=3368..31216(12534) d=(-2826+-869) mura_d=(195+-869) sb_med=4 sb_acc=62/19200 shift=3021 gmin=3368 nuc=0..10942(9873) win=[8826,10918] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6413..34190(15356) live=3384..31200(12533) d=(-2823+-871) mura_d=(194+-871) sb_med=0 sb_acc=78/19200 shift=3017 gmin=3384 nuc=0..10952(9874) win=[8828,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6414..34191(15357) live=3384..31204(12535) d=(-2822+-871) mura_d=(196+-871) sb_med=0 sb_acc=99/19200 shift=3018 gmin=3384 nuc=0..10949(9875) win=[8827,10923] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6418..34195(15360) live=3356..31208(12537) d=(-2823+-871) mura_d=(199+-871) sb_med=4 sb_acc=155/19200 shift=3022 gmin=3356 nuc=0..10939(9875) win=[8828,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6419..34196(15360) live=3396..31240(12533) d=(-2827+-871) mura_d=(196+-871) sb_med=0 sb_acc=236/19200 shift=3023 gmin=3396 nuc=0..10935(9873) win=[8822,10922] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6421..34198(15361) live=3388..31232(12533) d=(-2827+-871) mura_d=(198+-871) sb_med=2 sb_acc=368/19200 shift=3025 gmin=3388 nuc=0..10940(9872) win=[8821,10923] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6423..34200(15361) live=3376..31248(12533) d=(-2828+-872) mura_d=(199+-872) sb_med=4 sb_acc=513/19200 shift=3027 gmin=3376 nuc=0..10942(9872) win=[8821,10923] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6427..34204(15364) live=3400..31240(12533) d=(-2831+-870) mura_d=(200+-870) sb_med=7 sb_acc=571/19200 shift=3031 gmin=3400 nuc=0..10938(9871) win=[8820,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6427..34204(15363) live=3388..31220(12532) d=(-2831+-869) mura_d=(200+-869) sb_med=7 sb_acc=646/19200 shift=3031 gmin=3388 nuc=0..10934(9871) win=[8819,10921] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6429..34206(15364) live=3372..31236(12532) d=(-2832+-869) mura_d=(201+-869) sb_med=9 sb_acc=648/19200 shift=3033 gmin=3372 nuc=0..10938(9870) win=[8820,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6435..34212(15369) live=3416..31268(12539) d=(-2830+-870) mura_d=(209+-870) sb_med=16 sb_acc=674/19200 shift=3039 gmin=3416 nuc=0..10941(9871) win=[8824,10918] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6431..34208(15364) live=3392..31256(12543) d=(-2821+-869) mura_d=(214+-869) sb_med=16 sb_acc=785/19200 shift=3035 gmin=3392 nuc=0..10970(9875) win=[8830,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6440..34217(15372) live=3404..31324(12556) d=(-2817+-870) mura_d=(227+-870) sb_med=24 sb_acc=768/19200 shift=3044 gmin=3404 nuc=0..10970(9877) win=[8835,10919] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6444..34221(15376) live=3408..31732(12562) d=(-2814+-872) mura_d=(234+-872) sb_med=22 sb_acc=758/19200 shift=3048 gmin=3408 nuc=0..10963(9879) win=[8843,10913] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6441..34218(15372) live=3416..32124(12561) d=(-2812+-871) mura_d=(233+-871) sb_med=12 sb_acc=692/19200 shift=3045 gmin=3416 nuc=0..10946(9879) win=[8848,10910] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6447..34224(15378) live=3424..32040(12566) d=(-2812+-870) mura_d=(239+-870) sb_med=16 sb_acc=606/19200 shift=3051 gmin=3424 nuc=0..10953(9879) win=[8852,10906] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6446..34223(15376) live=3416..31884(12566) d=(-2810+-865) mura_d=(240+-865) sb_med=16 sb_acc=600/19200 shift=3050 gmin=3416 nuc=0..10954(9880) win=[8862,10898] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6443..34220(15372) live=3412..31932(12563) d=(-2808+-862) mura_d=(239+-862) sb_med=8 sb_acc=576/19200 shift=3047 gmin=3412 nuc=0..10948(9881) win=[8873,10887] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6443..34220(15371) live=3388..32104(12566) d=(-2805+-860) mura_d=(242+-860) sb_med=4 sb_acc=477/19200 shift=3047 gmin=3388 nuc=0..10943(9882) win=[8891,10873] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6451..34228(15378) live=3356..32176(12572) d=(-2806+-860) mura_d=(249+-860) sb_med=4 sb_acc=431/19200 shift=3055 gmin=3356 nuc=0..10940(9882) win=[8920,10842] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6444..34221(15371) live=3364..32184(12575) d=(-2796+-857) mura_d=(252+-857) sb_med=2 sb_acc=311/19200 shift=3048 gmin=3364 nuc=0..10936(9887) win=[8963,10809] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6436..34213(15362) live=3396..32208(12576) d=(-2786+-856) mura_d=(254+-856) sb_med=-4 sb_acc=230/19200 shift=3040 gmin=3396 nuc=0..10950(9891) win=[9016,10766] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6431..34208(15357) live=3364..32180(12576) d=(-2781+-852) mura_d=(254+-852) sb_med=-8 sb_acc=188/19200 shift=3035 gmin=3364 nuc=0..10943(9893) win=[9066,10720] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6425..34202(15350) live=3348..32220(12577) d=(-2773+-850) mura_d=(256+-850) sb_med=-10 sb_acc=157/19200 shift=3029 gmin=3348 nuc=0..10947(9897) win=[9096,10696] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6425..34202(15350) live=3368..32256(12580) d=(-2770+-847) mura_d=(259+-847) sb_med=-8 sb_acc=141/19200 shift=3029 gmin=3368 nuc=0..10952(9898) win=[9112,10684] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6419..34196(15344) live=3404..32252(12585) d=(-2759+-845) mura_d=(264+-845) sb_med=-6 sb_acc=143/19200 shift=3023 gmin=3404 nuc=0..10949(9904) win=[9132,10674] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6419..34196(15343) live=3740..32256(12589) d=(-2754+-841) mura_d=(269+-841) sb_med=-3 sb_acc=160/19200 shift=3023 gmin=3740 nuc=0..10945(9906) win=[9146,10666] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6413..34190(15337) live=4524..32248(12595) d=(-2741+-842) mura_d=(276+-842) sb_med=-4 sb_acc=132/19200 shift=3017 gmin=4524 nuc=0..10939(9912) win=[9161,10661] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6412..34189(15335) live=4716..32196(12603) d=(-2732+-842) mura_d=(284+-842) sb_med=4 sb_acc=124/19200 shift=3016 gmin=4716 nuc=0..10923(9917) win=[9178,10654] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6415..34192(15338) live=4756..32148(12602) d=(-2735+-847) mura_d=(284+-847) sb_med=-2 sb_acc=125/19200 shift=3019 gmin=4756 nuc=0..10910(9915) win=[9186,10642] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6412..34189(15334) live=4644..32168(12601) d=(-2733+-854) mura_d=(283+-854) sb_med=-4 sb_acc=93/19200 shift=3016 gmin=4644 nuc=0..10915(9916) win=[9191,10641] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6408..34185(15330) live=4492..32148(12595) d=(-2735+-861) mura_d=(277+-861) sb_med=-8 sb_acc=67/19200 shift=3012 gmin=4492 nuc=0..10905(9915) win=[9187,10643] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6390..34167(15312) live=4264..32164(12588) d=(-2724+-873) mura_d=(270+-873) sb_med=-8 sb_acc=65/19200 shift=2994 gmin=4264 nuc=0..10912(9920) win=[9183,10657] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6397..34174(15318) live=4136..32136(12579) d=(-2740+-883) mura_d=(261+-883) sb_med=-8 sb_acc=69/19200 shift=3001 gmin=4136 nuc=0..10894(9913) win=[9162,10662] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6399..34176(15319) live=4140..32172(12568) d=(-2751+-897) mura_d=(252+-897) sb_med=-10 sb_acc=65/19200 shift=3003 gmin=4140 nuc=0..10877(9907) win=[9135,10677] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6405..34182(15325) live=4292..32164(12554) d=(-2770+-912) mura_d=(239+-912) sb_med=-13 sb_acc=58/19200 shift=3009 gmin=4292 nuc=0..10869(9898) win=[9090,10704] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6407..34184(15326) live=4728..32124(12543) d=(-2783+-925) mura_d=(228+-925) sb_med=-16 sb_acc=49/19200 shift=3011 gmin=4728 nuc=0..10892(9892) win=[9069,10713] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6396..34173(15314) live=4828..32072(12530) d=(-2785+-937) mura_d=(215+-937) sb_med=-16 sb_acc=48/19200 shift=3000 gmin=4828 nuc=0..10869(9891) win=[9008,10774] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6392..34169(15310) live=4808..32028(12518) d=(-2792+-951) mura_d=(204+-951) sb_med=-20 sb_acc=34/19200 shift=2996 gmin=4808 nuc=0..10871(9888) win=[8939,10835] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6401..34178(15318) live=4756..32008(12506) d=(-2812+-962) mura_d=(193+-962) sb_med=-24 sb_acc=45/19200 shift=3005 gmin=4756 nuc=0..10867(9878) win=[8906,10848] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6399..34176(15315) live=4728..31904(12493) d=(-2822+-970) mura_d=(181+-970) sb_med=-24 sb_acc=35/19200 shift=3003 gmin=4728 nuc=0..10879(9873) win=[8893,10851] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6407..34184(15322) live=4720..31924(12484) d=(-2838+-978) mura_d=(173+-978) sb_med=-24 sb_acc=35/19200 shift=3011 gmin=4720 nuc=0..10884(9866) win=[8884,10846] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6404..34181(15318) live=4580..31888(12475) d=(-2843+-986) mura_d=(165+-986) sb_med=-26 sb_acc=40/19200 shift=3008 gmin=4580 nuc=0..10901(9863) win=[8876,10850] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6405..34182(15318) live=4512..31904(12465) d=(-2853+-994) mura_d=(156+-994) sb_med=-28 sb_acc=39/19200 shift=3009 gmin=4512 nuc=0..10917(9858) win=[8865,10851] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6409..34186(15321) live=4572..32020(12455) d=(-2866+-998) mura_d=(147+-998) sb_med=-31 sb_acc=46/19200 shift=3013 gmin=4572 nuc=0..10911(9852) win=[8840,10864] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6409..34186(15319) live=4560..32040(12447) d=(-2872+-999) mura_d=(141+-999) sb_med=-28 sb_acc=53/19200 shift=3013 gmin=4560 nuc=0..10930(9849) win=[8811,10887] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6417..34194(15326) live=4464..32088(12436) d=(-2890+-999) mura_d=(131+-999) sb_med=-36 sb_acc=52/19200 shift=3021 gmin=4464 nuc=0..10930(9841) win=[8785,10895] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6423..34200(15330) live=4404..32000(12427) d=(-2903+-995) mura_d=(124+-995) sb_med=-36 sb_acc=54/19200 shift=3027 gmin=4404 nuc=0..10933(9835) win=[8770,10898] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6429..34206(15334) live=4408..31952(12420) d=(-2913+-992) mura_d=(120+-992) sb_med=-38 sb_acc=68/19200 shift=3033 gmin=4408 nuc=0..10938(9830) win=[8762,10896] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6425..34202(15327) live=4432..32008(12413) d=(-2915+-989) mura_d=(114+-989) sb_med=-38 sb_acc=68/19200 shift=3029 gmin=4432 nuc=0..10932(9829) win=[8759,10899] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6429..34206(15329) live=4440..31936(12404) d=(-2925+-985) mura_d=(108+-985) sb_med=-40 sb_acc=77/19200 shift=3033 gmin=4440 nuc=0..10939(9825) win=[8748,10900] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6431..34208(15328) live=4404..31924(12401) d=(-2927+-982) mura_d=(108+-982) sb_med=-36 sb_acc=83/19200 shift=3035 gmin=4404 nuc=0..10940(9824) win=[8747,10899] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6424..34201(15318) live=4364..31960(12397) d=(-2920+-976) mura_d=(108+-976) sb_med=-30 sb_acc=106/19200 shift=3028 gmin=4364 nuc=0..10939(9827) win=[8752,10902] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6428..34205(15318) live=4292..32012(12395) d=(-2923+-972) mura_d=(109+-972) sb_med=-28 sb_acc=136/19200 shift=3032 gmin=4292 nuc=0..10949(9826) win=[8748,10904] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6437..34214(15322) live=3788..31964(12396) d=(-2926+-968) mura_d=(115+-968) sb_med=-23 sb_acc=161/19200 shift=3041 gmin=3788 nuc=0..10952(9824) win=[8748,10900] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6441..34218(15322) live=3560..31992(12397) d=(-2925+-963) mura_d=(120+-963) sb_med=-16 sb_acc=202/19200 shift=3045 gmin=3560 nuc=0..10931(9825) win=[8753,10897] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6453..34230(15330) live=3596..32024(12409) d=(-2921+-960) mura_d=(136+-960) sb_med=-10 sb_acc=230/19200 shift=3057 gmin=3596 nuc=0..10941(9827) win=[8757,10895] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6477..34254(15351) live=3568..32064(12424) d=(-2928+-952) mura_d=(153+-952) sb_med=4 sb_acc=294/19200 shift=3081 gmin=3568 nuc=0..10905(9824) win=[8759,10889] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6509..34286(15381) live=3588..31824(12463) d=(-2918+-946) mura_d=(195+-946) sb_med=20 sb_acc=460/19200 shift=3113 gmin=3588 nuc=0..10905(9829) win=[8772,10884] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6573..34350(15444) live=3584..31312(12518) d=(-2926+-945) mura_d=(251+-945) sb_med=84 sb_acc=696/19200 shift=3177 gmin=3584 nuc=0..10859(9825) win=[8780,10870] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6643..34420(15514) live=3600..31272(12592) d=(-2922+-941) mura_d=(325+-941) sb_med=216 sb_acc=28/19200 shift=3247 gmin=3600 nuc=0..10840(9827) win=[8798,10856] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6715..34492(15586) live=3628..31264(12672) d=(-2914+-917) mura_d=(405+-917) sb_med=356 sb_acc=0/19200 shift=3319 gmin=3628 nuc=0..10797(9830) win=[8819,10841] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6783..34560(15654) live=3596..31236(12741) d=(-2913+-946) mura_d=(474+-946) sb_med=492 sb_acc=0/19200 shift=3387 gmin=3596 nuc=0..10734(9828) win=[8773,10883] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6858..34635(15729) live=3664..31260(12804) d=(-2925+-995) mura_d=(537+-995) sb_med=536 sb_acc=0/19200 shift=3462 gmin=3664 nuc=0..10712(9821) win=[8733,10907] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6885..34662(15756) live=3628..31280(12839) d=(-2917+-1033) mura_d=(572+-1033) sb_med=544 sb_acc=0/19200 shift=3489 gmin=3628 nuc=0..10734(9822) win=[8727,10917] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6863..34640(15734) live=3604..31248(12861) d=(-2873+-1060) mura_d=(594+-1060) sb_med=544 sb_acc=0/19200 shift=3467 gmin=3604 nuc=0..10747(9841) win=[8749,10931] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6811..34588(15682) live=3604..31248(12871) d=(-2811+-1084) mura_d=(604+-1084) sb_med=544 sb_acc=0/19200 shift=3415 gmin=3604 nuc=0..10767(9868) win=[8781,10953] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6837..34614(15708) live=3624..31284(12876) d=(-2832+-1098) mura_d=(609+-1098) sb_med=540 sb_acc=0/19200 shift=3441 gmin=3624 nuc=0..10766(9858) win=[8769,10947] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6829..34606(15700) live=3596..31304(12880) d=(-2820+-1107) mura_d=(613+-1107) sb_med=552 sb_acc=0/19200 shift=3433 gmin=3596 nuc=0..10776(9864) win=[8774,10952] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6883..34660(15754) live=3624..31728(12880) d=(-2874+-1117) mura_d=(613+-1117) sb_med=568 sb_acc=0/19200 shift=3487 gmin=3624 nuc=0..10738(9839) win=[8746,10932] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6869..34646(15740) live=3612..32280(12871) d=(-2869+-1125) mura_d=(604+-1125) sb_med=540 sb_acc=0/19200 shift=3473 gmin=3612 nuc=0..10748(9841) win=[8750,10932] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6859..34636(15730) live=3636..32304(12853) d=(-2877+-1131) mura_d=(586+-1131) sb_med=474 sb_acc=0/19200 shift=3463 gmin=3636 nuc=0..10731(9838) win=[8746,10928] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6821..34598(15692) live=3676..32340(12835) d=(-2857+-1125) mura_d=(568+-1125) sb_med=439 sb_acc=0/19200 shift=3425 gmin=3676 nuc=0..10760(9847) win=[8757,10937] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6769..34546(15640) live=4540..32276(12817) d=(-2823+-1121) mura_d=(550+-1121) sb_med=397 sb_acc=1/19200 shift=3373 gmin=4540 nuc=0..10816(9863) win=[8777,10947] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6681..34458(15552) live=4532..32256(12786) d=(-2766+-1119) mura_d=(519+-1119) sb_med=320 sb_acc=4/19200 shift=3285 gmin=4532 nuc=0..10838(9889) win=[8804,10974] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6639..34416(15510) live=4464..32236(12742) d=(-2768+-1113) mura_d=(475+-1113) sb_med=216 sb_acc=1/19200 shift=3243 gmin=4464 nuc=0..10858(9889) win=[8808,10970] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6587..34364(15458) live=4480..32188(12682) d=(-2776+-1102) mura_d=(415+-1102) sb_med=114 sb_acc=0/19200 shift=3191 gmin=4480 nuc=0..10857(9887) win=[8808,10964] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6571..34348(15442) live=4624..32220(12641) d=(-2801+-1093) mura_d=(374+-1093) sb_med=56 sb_acc=0/19200 shift=3175 gmin=4624 nuc=0..10866(9876) win=[8798,10954] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6551..34328(15422) live=4208..32236(12625) d=(-2797+-1091) mura_d=(358+-1091) sb_med=36 sb_acc=0/19200 shift=3155 gmin=4208 nuc=0..10880(9878) win=[8801,10955] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6545..34322(15416) live=4408..32212(12618) d=(-2798+-1089) mura_d=(351+-1089) sb_med=35 sb_acc=0/19200 shift=3149 gmin=4408 nuc=0..10900(9878) win=[8806,10950] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6549..34326(15420) live=4484..32284(12630) d=(-2790+-1092) mura_d=(363+-1092) sb_med=40 sb_acc=0/19200 shift=3153 gmin=4484 nuc=0..10863(9881) win=[8808,10954] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6559..34336(15430) live=4436..32272(12648) d=(-2782+-1096) mura_d=(381+-1096) sb_med=60 sb_acc=0/19200 shift=3163 gmin=4436 nuc=0..10872(9884) win=[8809,10959] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6555..34332(15426) live=4496..32364(12642) d=(-2784+-1085) mura_d=(375+-1085) sb_med=60 sb_acc=0/19200 shift=3159 gmin=4496 nuc=0..10891(9884) win=[8812,10956] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6525..34302(15396) live=3608..32308(12616) d=(-2780+-1063) mura_d=(349+-1063) sb_med=52 sb_acc=0/19200 shift=3129 gmin=3608 nuc=0..10877(9886) win=[8818,10954] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6503..34280(15374) live=3524..31516(12576) d=(-2798+-1030) mura_d=(309+-1030) sb_med=46 sb_acc=2/19200 shift=3107 gmin=3524 nuc=0..10896(9879) win=[8809,10949] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6487..34264(15358) live=3556..31312(12523) d=(-2835+-985) mura_d=(256+-985) sb_med=37 sb_acc=6/19200 shift=3091 gmin=3556 nuc=0..10869(9865) win=[8813,10915] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6507..34284(15377) live=3528..31356(12542) d=(-2836+-1001) mura_d=(275+-1001) sb_med=56 sb_acc=21/19200 shift=3111 gmin=3528 nuc=0..10864(9864) win=[8824,10902] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6561..34338(15430) live=4512..32252(12615) d=(-2815+-1042) mura_d=(350+-1042) sb_med=96 sb_acc=96/19200 shift=3165 gmin=4512 nuc=0..10851(9871) win=[8821,10919] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6591..34368(15456) live=4824..32108(12667) d=(-2789+-1071) mura_d=(406+-1071) sb_med=164 sb_acc=209/19200 shift=3195 gmin=4824 nuc=0..10833(9882) win=[8815,10947] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6513..34290(15378) live=4712..32168(12539) d=(-2839+-1051) mura_d=(278+-1051) sb_med=4 sb_acc=2/19200 shift=3117 gmin=4712 nuc=0..10854(9861) win=[8811,10911] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6471..34248(15336) live=4608..32060(12497) d=(-2838+-1057) mura_d=(237+-1057) sb_med=-28 sb_acc=0/19200 shift=3075 gmin=4608 nuc=0..10868(9863) win=[8801,10923] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6441..34218(15306) live=4380..31620(12465) d=(-2841+-1042) mura_d=(204+-1042) sb_med=-32 sb_acc=0/19200 shift=3045 gmin=4380 nuc=0..10879(9862) win=[8799,10925] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6417..34194(15282) live=4144..31284(12423) d=(-2858+-1013) mura_d=(163+-1013) sb_med=-36 sb_acc=0/19200 shift=3021 gmin=4144 nuc=0..10927(9855) win=[8790,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6393..34170(15258) live=4088..31300(12388) d=(-2870+-978) mura_d=(127+-978) sb_med=-36 sb_acc=0/19200 shift=2997 gmin=4088 nuc=0..10952(9851) win=[8790,10910] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6379..34156(15244) live=3572..31280(12364) d=(-2880+-957) mura_d=(103+-957) sb_med=-36 sb_acc=0/19200 shift=2983 gmin=3572 nuc=0..10980(9847) win=[8786,10908] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6367..34144(15232) live=3536..31280(12353) d=(-2879+-946) mura_d=(92+-946) sb_med=-40 sb_acc=0/19200 shift=2971 gmin=3536 nuc=0..10960(9848) win=[8786,10908] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6371..34148(15236) live=3536..31280(12352) d=(-2883+-949) mura_d=(92+-949) sb_med=-42 sb_acc=0/19200 shift=2975 gmin=3536 nuc=0..10967(9846) win=[8786,10904] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6411..34188(15276) live=4388..32180(12404) d=(-2871+-980) mura_d=(144+-980) sb_med=-32 sb_acc=0/19200 shift=3015 gmin=4388 nuc=0..10902(9850) win=[8792,10906] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6421..34198(15286) live=3792..32200(12431) d=(-2855+-1000) mura_d=(170+-1000) sb_med=-28 sb_acc=1/19200 shift=3025 gmin=3792 nuc=0..10903(9857) win=[8800,10912] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6441..34218(15306) live=4472..32100(12459) d=(-2846+-1020) mura_d=(199+-1020) sb_med=-20 sb_acc=4/19200 shift=3045 gmin=4472 nuc=0..10905(9860) win=[8798,10920] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6450..34227(15315) live=3628..32088(12492) d=(-2822+-1048) mura_d=(232+-1048) sb_med=-16 sb_acc=8/19200 shift=3054 gmin=3628 nuc=0..10944(9870) win=[8797,10941] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6466..34243(15331) live=3544..32080(12522) d=(-2809+-1059) mura_d=(261+-1059) sb_med=-4 sb_acc=18/19200 shift=3070 gmin=3544 nuc=0..10955(9875) win=[8801,10949] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6475..34252(15340) live=3600..32220(12552) d=(-2788+-1059) mura_d=(291+-1059) sb_med=8 sb_acc=42/19200 shift=3079 gmin=3600 nuc=0..10954(9884) win=[8815,10951] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6473..34250(15337) live=3576..32192(12570) d=(-2767+-1055) mura_d=(310+-1055) sb_med=32 sb_acc=143/19200 shift=3077 gmin=3576 nuc=0..10898(9892) win=[8838,10946] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6485..34262(15348) live=3572..31720(12589) d=(-2760+-1046) mura_d=(329+-1046) sb_med=86 sb_acc=357/19200 shift=3089 gmin=3572 nuc=0..10842(9896) win=[8846,10944] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6543..34320(15405) live=3620..31956(12600) d=(-2805+-1012) mura_d=(342+-1012) sb_med=132 sb_acc=443/19200 shift=3147 gmin=3620 nuc=0..10817(9876) win=[8822,10928] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6579..34356(15439) live=4804..32204(12633) d=(-2807+-1023) mura_d=(376+-1023) sb_med=132 sb_acc=430/19200 shift=3183 gmin=4804 nuc=0..10804(9875) win=[8819,10929] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6551..34328(15411) live=3664..31640(12568) d=(-2843+-985) mura_d=(312+-985) sb_med=49 sb_acc=202/19200 shift=3155 gmin=3664 nuc=0..10838(9860) win=[8816,10904] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6529..34306(15389) live=3588..31280(12548) d=(-2841+-953) mura_d=(292+-953) sb_med=72 sb_acc=176/19200 shift=3133 gmin=3588 nuc=0..10852(9862) win=[8835,10889] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6577..34354(15437) live=3588..31320(12666) d=(-2771+-1016) mura_d=(410+-1016) sb_med=244 sb_acc=0/19200 shift=3181 gmin=3588 nuc=0..10838(9890) win=[8847,10931] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6596..34373(15456) live=3600..32164(12681) d=(-2775+-1055) mura_d=(425+-1055) sb_med=225 sb_acc=0/19200 shift=3200 gmin=3600 nuc=0..10834(9888) win=[8841,10933] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6517..34294(15377) live=4036..32132(12540) d=(-2837+-1032) mura_d=(284+-1032) sb_med=8 sb_acc=0/19200 shift=3121 gmin=4036 nuc=0..10866(9862) win=[8810,10914] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6397..34174(15257) live=3616..31300(12354) d=(-2903+-916) mura_d=(98+-916) sb_med=-22 sb_acc=0/19200 shift=3001 gmin=3616 nuc=0..10922(9837) win=[8785,10889] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6359..34136(15219) live=3572..31292(12326) d=(-2892+-903) mura_d=(71+-903) sb_med=-36 sb_acc=0/19200 shift=2963 gmin=3572 nuc=0..10938(9843) win=[8791,10893] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6355..34132(15215) live=3552..31272(12327) d=(-2888+-904) mura_d=(71+-904) sb_med=-40 sb_acc=0/19200 shift=2959 gmin=3552 nuc=0..10932(9845) win=[8795,10893] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6363..34140(15223) live=3532..31312(12334) d=(-2888+-899) mura_d=(79+-899) sb_med=-34 sb_acc=0/19200 shift=2967 gmin=3532 nuc=0..10945(9845) win=[8810,10878] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6355..34132(15215) live=3564..31308(12337) d=(-2878+-892) mura_d=(81+-892) sb_med=-36 sb_acc=0/19200 shift=2959 gmin=3564 nuc=0..10947(9850) win=[8835,10863] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6359..34136(15219) live=3568..31324(12343) d=(-2876+-883) mura_d=(87+-883) sb_med=-40 sb_acc=0/19200 shift=2963 gmin=3568 nuc=0..10939(9851) win=[8863,10837] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6360..34137(15220) live=3596..31320(12353) d=(-2867+-873) mura_d=(97+-873) sb_med=-36 sb_acc=0/19200 shift=2964 gmin=3596 nuc=0..10974(9856) win=[8899,10813] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6359..34136(15219) live=3592..31300(12353) d=(-2866+-858) mura_d=(97+-858) sb_med=-43 sb_acc=0/19200 shift=2963 gmin=3592 nuc=0..10990(9857) win=[8933,10781] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6359..34136(15219) live=3596..31284(12351) d=(-2868+-836) mura_d=(95+-836) sb_med=-44 sb_acc=0/19200 shift=2963 gmin=3596 nuc=0..10990(9857) win=[8969,10743] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6361..34138(15221) live=3624..31336(12350) d=(-2871+-814) mura_d=(94+-814) sb_med=-44 sb_acc=0/19200 shift=2965 gmin=3624 nuc=0..10985(9856) win=[8992,10720] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6359..34136(15219) live=3600..31284(12342) d=(-2876+-792) mura_d=(87+-792) sb_med=-49 sb_acc=0/19200 shift=2963 gmin=3600 nuc=0..10978(9855) win=[9002,10706] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6359..34136(15219) live=3604..31316(12334) d=(-2885+-770) mura_d=(78+-770) sb_med=-52 sb_acc=1/19200 shift=2963 gmin=3604 nuc=0..10976(9852) win=[9012,10692] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6355..34132(15215) live=3608..31288(12324) d=(-2891+-749) mura_d=(68+-749) sb_med=-60 sb_acc=10/19200 shift=2959 gmin=3608 nuc=0..10967(9850) win=[9018,10680] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6357..34134(15217) live=3580..31280(12315) d=(-2901+-725) mura_d=(60+-725) sb_med=-60 sb_acc=23/19200 shift=2961 gmin=3580 nuc=0..10950(9846) win=[9030,10662] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6367..34144(15224) live=3572..31324(12308) d=(-2917+-706) mura_d=(54+-706) sb_med=-60 sb_acc=87/19200 shift=2971 gmin=3572 nuc=0..10934(9840) win=[9029,10649] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6375..34152(15223) live=3616..31284(12297) d=(-2926+-683) mura_d=(53+-683) sb_med=-64 sb_acc=334/19200 shift=2979 gmin=3616 nuc=0..10918(9836) win=[9032,10638] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6401..34178(15234) live=3600..31316(12288) d=(-2946+-657) mura_d=(59+-657) sb_med=-54 sb_acc=618/19200 shift=3005 gmin=3600 nuc=0..10911(9827) win=[9035,10619] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6414..34191(15233) live=3604..31304(12278) d=(-2955+-635) mura_d=(63+-635) sb_med=-44 sb_acc=710/19200 shift=3018 gmin=3604 nuc=0..10898(9823) win=[9037,10609] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6425..34202(15237) live=3552..31320(12271) d=(-2966+-621) mura_d=(63+-621) sb_med=-32 sb_acc=601/19200 shift=3029 gmin=3552 nuc=0..10913(9818) win=[9036,10600] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6426..34203(15232) live=3572..31308(12265) d=(-2968+-610) mura_d=(62+-610) sb_med=-24 sb_acc=679/19200 shift=3030 gmin=3572 nuc=0..10886(9818) win=[9038,10596] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6433..34210(15236) live=3584..31284(12264) d=(-2972+-604) mura_d=(65+-604) sb_med=-16 sb_acc=638/19200 shift=3037 gmin=3584 nuc=0..10887(9816) win=[9040,10590] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6431..34208(15231) live=3600..31308(12257) d=(-2975+-602) mura_d=(60+-602) sb_med=-16 sb_acc=539/19200 shift=3035 gmin=3600 nuc=0..10868(9814) win=[9040,10588] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6433..34210(15232) live=3608..31284(12257) d=(-2976+-602) mura_d=(61+-602) sb_med=-12 sb_acc=464/19200 shift=3037 gmin=3608 nuc=0..10871(9814) win=[9039,10587] disp=0/0/0 nz=0 -ph=0 ref=1 bad=1 comp=9804 ref=6433..34210(15231) live=3556..31276(12260) d=(-2972+-603) mura_d=(65+-603) sb_med=-8 sb_acc=381/19200 shift=3037 gmin=3556 nuc=0..10884(9816) win=[9040,10590] disp=0/0/0 nz=0 diff --git a/build-artifacts/demo3_ffc.txt b/build-artifacts/demo3_ffc.txt deleted file mode 100644 index 2efc92c..0000000 --- a/build-artifacts/demo3_ffc.txt +++ /dev/null @@ -1,238 +0,0 @@ -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=409 nread=410 ffc=0 type=0 rebase=0 -frame=418 nread=419 ffc=1 type=1 rebase=0 -frame=818 nread=819 ffc=0 type=0 rebase=0 -frame=827 nread=828 ffc=1 type=1 rebase=0 -frame=1227 nread=1228 ffc=0 type=0 rebase=0 -frame=1236 nread=1237 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=409 nread=410 ffc=0 type=0 rebase=0 -frame=418 nread=419 ffc=1 type=1 rebase=0 -frame=818 nread=819 ffc=0 type=0 rebase=0 -frame=827 nread=828 ffc=1 type=1 rebase=0 -frame=1227 nread=1228 ffc=0 type=0 rebase=0 -frame=1236 nread=1237 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=409 nread=410 ffc=0 type=0 rebase=0 -frame=418 nread=419 ffc=1 type=1 rebase=0 -frame=818 nread=819 ffc=0 type=0 rebase=0 -frame=827 nread=828 ffc=1 type=1 rebase=0 -frame=1227 nread=1228 ffc=0 type=0 rebase=0 -frame=1236 nread=1237 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=409 nread=410 ffc=0 type=0 rebase=0 -frame=418 nread=419 ffc=1 type=1 rebase=0 -frame=818 nread=819 ffc=0 type=0 rebase=0 -frame=827 nread=828 ffc=1 type=1 rebase=0 -frame=1227 nread=1228 ffc=0 type=0 rebase=0 -frame=1236 nread=1237 ffc=1 type=1 rebase=0 -frame=1636 nread=1637 ffc=0 type=0 rebase=0 -frame=1645 nread=1646 ffc=1 type=1 rebase=0 -frame=2045 nread=2046 ffc=0 type=0 rebase=0 -frame=2054 nread=2055 ffc=1 type=1 rebase=0 -frame=2454 nread=2455 ffc=0 type=0 rebase=0 -frame=2463 nread=2464 ffc=1 type=1 rebase=0 -frame=2863 nread=2864 ffc=0 type=0 rebase=0 -frame=2872 nread=2873 ffc=1 type=1 rebase=0 -frame=3272 nread=3273 ffc=0 type=0 rebase=0 -frame=3281 nread=3282 ffc=1 type=1 rebase=0 -frame=3681 nread=3682 ffc=0 type=0 rebase=0 -frame=3690 nread=3691 ffc=1 type=1 rebase=0 -frame=4090 nread=4091 ffc=0 type=0 rebase=0 -frame=4099 nread=4100 ffc=1 type=1 rebase=0 -frame=4499 nread=4500 ffc=0 type=0 rebase=0 -frame=4508 nread=4509 ffc=1 type=1 rebase=0 -frame=4908 nread=4909 ffc=0 type=0 rebase=0 -frame=4917 nread=4918 ffc=1 type=1 rebase=0 -frame=5317 nread=5318 ffc=0 type=0 rebase=0 -frame=5326 nread=5327 ffc=1 type=1 rebase=0 -frame=5726 nread=5727 ffc=0 type=0 rebase=0 -frame=5735 nread=5736 ffc=1 type=1 rebase=0 -frame=6135 nread=6136 ffc=0 type=0 rebase=0 -frame=6144 nread=6145 ffc=1 type=1 rebase=0 -frame=6544 nread=6545 ffc=0 type=0 rebase=0 -frame=6553 nread=6554 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=409 nread=410 ffc=0 type=0 rebase=0 -frame=418 nread=419 ffc=1 type=1 rebase=0 -frame=818 nread=819 ffc=0 type=0 rebase=0 -frame=827 nread=828 ffc=1 type=1 rebase=0 -frame=1227 nread=1228 ffc=0 type=0 rebase=0 -frame=1236 nread=1237 ffc=1 type=1 rebase=0 -frame=1636 nread=1637 ffc=0 type=0 rebase=0 -frame=1645 nread=1646 ffc=1 type=1 rebase=0 -frame=2045 nread=2046 ffc=0 type=0 rebase=0 -frame=2054 nread=2055 ffc=1 type=1 rebase=0 -frame=2454 nread=2455 ffc=0 type=0 rebase=0 -frame=2463 nread=2464 ffc=1 type=1 rebase=0 -frame=2863 nread=2864 ffc=0 type=0 rebase=0 -frame=2872 nread=2873 ffc=1 type=1 rebase=0 -frame=3272 nread=3273 ffc=0 type=0 rebase=0 -frame=3281 nread=3282 ffc=1 type=1 rebase=0 -frame=3681 nread=3682 ffc=0 type=0 rebase=0 -frame=3690 nread=3691 ffc=1 type=1 rebase=0 -frame=4090 nread=4091 ffc=0 type=0 rebase=0 -frame=4099 nread=4100 ffc=1 type=1 rebase=0 -frame=4499 nread=4500 ffc=0 type=0 rebase=0 -frame=4508 nread=4509 ffc=1 type=1 rebase=0 -frame=4908 nread=4909 ffc=0 type=0 rebase=0 -frame=4917 nread=4918 ffc=1 type=1 rebase=0 -frame=5317 nread=5318 ffc=0 type=0 rebase=0 -frame=5326 nread=5327 ffc=1 type=1 rebase=0 -frame=5726 nread=5727 ffc=0 type=0 rebase=0 -frame=5735 nread=5736 ffc=1 type=1 rebase=0 -frame=6135 nread=6136 ffc=0 type=0 rebase=0 -frame=6144 nread=6145 ffc=1 type=1 rebase=0 -frame=6544 nread=6545 ffc=0 type=0 rebase=0 -frame=6553 nread=6554 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=404 nread=405 ffc=1 type=1 rebase=0 -frame=2204 nread=2205 ffc=0 type=0 rebase=0 -frame=2213 nread=2214 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3618 nread=3619 ffc=0 type=0 rebase=0 -frame=3627 nread=3628 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3618 nread=3619 ffc=0 type=0 rebase=0 -frame=3627 nread=3628 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3618 nread=3619 ffc=0 type=0 rebase=0 -frame=3627 nread=3628 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3618 nread=3619 ffc=0 type=0 rebase=0 -frame=3627 nread=3628 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=507 nread=508 ffc=1 type=1 rebase=0 -frame=2307 nread=2308 ffc=0 type=0 rebase=0 -frame=2316 nread=2317 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3618 nread=3619 ffc=0 type=0 rebase=0 -frame=3627 nread=3628 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=505 nread=506 ffc=1 type=1 rebase=0 -frame=2305 nread=2306 ffc=0 type=0 rebase=0 -frame=2314 nread=2315 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1361 nread=1362 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3618 nread=3619 ffc=0 type=0 rebase=0 -frame=3627 nread=3628 ffc=1 type=1 rebase=0 -frame=5427 nread=5428 ffc=0 type=0 rebase=0 -frame=5436 nread=5437 ffc=1 type=1 rebase=0 -frame=7236 nread=7237 ffc=0 type=0 rebase=0 -frame=7245 nread=7246 ffc=1 type=1 rebase=0 -frame=9045 nread=9046 ffc=0 type=0 rebase=0 -frame=9054 nread=9055 ffc=1 type=1 rebase=0 -frame=10854 nread=10855 ffc=0 type=0 rebase=0 -frame=10863 nread=10864 ffc=1 type=1 rebase=0 -frame=12663 nread=12664 ffc=0 type=0 rebase=0 -frame=12672 nread=12673 ffc=1 type=1 rebase=0 -frame=14472 nread=14473 ffc=0 type=0 rebase=0 -frame=14481 nread=14482 ffc=1 type=1 rebase=0 -frame=16281 nread=16282 ffc=0 type=0 rebase=0 -frame=16290 nread=16291 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=2024 nread=2025 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=487 nread=488 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=346 nread=347 ffc=1 type=1 rebase=0 -frame=2146 nread=2147 ffc=0 type=0 rebase=0 -frame=2155 nread=2156 ffc=1 type=1 rebase=0 -frame=3955 nread=3956 ffc=0 type=0 rebase=0 -frame=3964 nread=3965 ffc=1 type=1 rebase=0 -frame=5764 nread=5765 ffc=0 type=0 rebase=0 -frame=5773 nread=5774 ffc=1 type=1 rebase=0 -frame=7573 nread=7574 ffc=0 type=0 rebase=0 -frame=7582 nread=7583 ffc=1 type=1 rebase=0 -frame=9382 nread=9383 ffc=0 type=0 rebase=0 -frame=9391 nread=9392 ffc=1 type=1 rebase=0 -frame=10747 nread=10748 ffc=1 type=1 rebase=0 -frame=12547 nread=12548 ffc=0 type=0 rebase=0 -frame=12556 nread=12557 ffc=1 type=1 rebase=0 -frame=14356 nread=14357 ffc=0 type=0 rebase=0 -frame=14365 nread=14366 ffc=1 type=1 rebase=0 -frame=16165 nread=16166 ffc=0 type=0 rebase=0 -frame=16174 nread=16175 ffc=1 type=1 rebase=0 -frame=17974 nread=17975 ffc=0 type=0 rebase=0 -frame=17983 nread=17984 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 -frame=1809 nread=1810 ffc=0 type=0 rebase=0 -frame=1818 nread=1819 ffc=1 type=1 rebase=0 -frame=3400 nread=3401 ffc=1 type=1 rebase=0 -frame=9 nread=10 ffc=1 type=1 rebase=0 diff --git a/build-artifacts/demo3_rebase.txt b/build-artifacts/demo3_rebase.txt deleted file mode 100644 index 65341cf..0000000 --- a/build-artifacts/demo3_rebase.txt +++ /dev/null @@ -1,149 +0,0 @@ -frame=10 type=0 hasref=0 -frame=419 type=0 hasref=1 -frame=828 type=0 hasref=1 -frame=1237 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=419 type=0 hasref=1 -frame=828 type=0 hasref=1 -frame=1237 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=419 type=0 hasref=1 -frame=828 type=0 hasref=1 -frame=1237 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=419 type=0 hasref=1 -frame=828 type=0 hasref=1 -frame=1237 type=0 hasref=1 -frame=1646 type=0 hasref=1 -frame=2055 type=0 hasref=1 -frame=2464 type=0 hasref=1 -frame=2873 type=0 hasref=1 -frame=3282 type=0 hasref=1 -frame=3691 type=0 hasref=1 -frame=4100 type=0 hasref=1 -frame=4509 type=0 hasref=1 -frame=4918 type=0 hasref=1 -frame=5327 type=0 hasref=1 -frame=5736 type=0 hasref=1 -frame=6145 type=0 hasref=1 -frame=6554 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=419 type=0 hasref=1 -frame=828 type=0 hasref=1 -frame=1237 type=0 hasref=1 -frame=1646 type=0 hasref=1 -frame=2055 type=0 hasref=1 -frame=2464 type=0 hasref=1 -frame=2873 type=0 hasref=1 -frame=3282 type=0 hasref=1 -frame=3691 type=0 hasref=1 -frame=4100 type=0 hasref=1 -frame=4509 type=0 hasref=1 -frame=4918 type=0 hasref=1 -frame=5327 type=0 hasref=1 -frame=5736 type=0 hasref=1 -frame=6145 type=0 hasref=1 -frame=6554 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=405 type=0 hasref=1 -frame=2214 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3628 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3628 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3628 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3628 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=508 type=0 hasref=1 -frame=2317 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3628 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=506 type=0 hasref=1 -frame=2315 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1362 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3628 type=0 hasref=1 -frame=5437 type=0 hasref=1 -frame=7246 type=0 hasref=1 -frame=9055 type=0 hasref=1 -frame=10864 type=0 hasref=1 -frame=12673 type=0 hasref=1 -frame=14482 type=0 hasref=1 -frame=16291 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=2025 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=488 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=347 type=0 hasref=1 -frame=2156 type=0 hasref=1 -frame=3965 type=0 hasref=1 -frame=5774 type=0 hasref=1 -frame=7583 type=0 hasref=1 -frame=9392 type=0 hasref=1 -frame=10748 type=0 hasref=1 -frame=12557 type=0 hasref=1 -frame=14366 type=0 hasref=1 -frame=16175 type=0 hasref=1 -frame=17984 type=0 hasref=1 -frame=10 type=0 hasref=0 -frame=1819 type=0 hasref=1 -frame=3401 type=0 hasref=1 -frame=10 type=0 hasref=0 diff --git a/build-artifacts/fixed_mean.png b/build-artifacts/fixed_mean.png deleted file mode 100644 index 8a516bc..0000000 --- a/build-artifacts/fixed_mean.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a10e98e6958012b5d3f3ebea07f5c8584ad47bd428fe175a6b7ccb5323b71929 -size 9936 diff --git a/build-artifacts/mag160c_demo.exe b/build-artifacts/mag160c_demo.exe deleted file mode 100644 index 0e4e24f..0000000 --- a/build-artifacts/mag160c_demo.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8f6a429e42b6673f38863b3c599c602d0250fddd445edc2474a1bb7f0c4519e6 -size 104558 diff --git a/build-artifacts/mag160c_demo2.exe b/build-artifacts/mag160c_demo2.exe deleted file mode 100644 index 8d36a75..0000000 --- a/build-artifacts/mag160c_demo2.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f51394e1d3fd7a6aa1fc311b746f035c446071b32c3beeb864e4b707118b3eb6 -size 131961 diff --git a/build-artifacts/mag160c_demo3.exe b/build-artifacts/mag160c_demo3.exe index 1963f44..4cf9454 100644 --- a/build-artifacts/mag160c_demo3.exe +++ b/build-artifacts/mag160c_demo3.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1dc29a88a6a506edf256dc42e110804f494b22c25560320344c844ce4dc33912 -size 140803 +oid sha256:f8503748fae7f698c7d9765226628fcf3b2aca317b0db9ce5cf88a852d390ece +size 138825 diff --git a/build-artifacts/mag160c_demo_usb0.exe b/build-artifacts/mag160c_demo_usb0.exe deleted file mode 100644 index e5095c5..0000000 --- a/build-artifacts/mag160c_demo_usb0.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4efba59233e4c6e2e87264e36412b15510f5235014a8be02962c2b76ae1c87de -size 98940 diff --git a/build-artifacts/mag160c_ffc_test.exe b/build-artifacts/mag160c_ffc_test.exe deleted file mode 100644 index eab5299..0000000 --- a/build-artifacts/mag160c_ffc_test.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f68a982aab72df22c2827515f4a4cd24be168484f2d0016154bb6518c735aff5 -size 83932 diff --git a/build-artifacts/mag160c_frame_dump.exe b/build-artifacts/mag160c_frame_dump.exe deleted file mode 100644 index adc0534..0000000 --- a/build-artifacts/mag160c_frame_dump.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb887f9cd43d13a3ceb0f6cf2581c757c0003592363b281f154e9e48e84859a2 -size 85202 diff --git a/build-artifacts/mag160c_frame_stats.exe b/build-artifacts/mag160c_frame_stats.exe deleted file mode 100644 index de88e5c..0000000 --- a/build-artifacts/mag160c_frame_stats.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:74eae6433c2adf112fc6f4a52ff3336362f4e1e474920122061a8c3c7b2ce66a -size 85386 diff --git a/build-artifacts/mag160c_full_dump.exe b/build-artifacts/mag160c_full_dump.exe deleted file mode 100644 index 2ba3201..0000000 --- a/build-artifacts/mag160c_full_dump.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65c8cdad2ab12806cd8a9f79f29ec87efdada4b0ed69cc46f960723278a3d3e2 -size 83580 diff --git a/build-artifacts/mag160c_layout_probe.exe b/build-artifacts/mag160c_layout_probe.exe deleted file mode 100644 index 8e65685..0000000 --- a/build-artifacts/mag160c_layout_probe.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1bfbf7bd922fd580f8c717dd49c23a0c3823218d6e22a72edbca54460916c66e -size 83264 diff --git a/build-artifacts/mag160c_layout_probe2.exe b/build-artifacts/mag160c_layout_probe2.exe deleted file mode 100644 index a14c397..0000000 --- a/build-artifacts/mag160c_layout_probe2.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f7ecfe1bacdd661c554213aa948abc621ad321b8ac40b689af0b134d48a9325 -size 83277 diff --git a/build-artifacts/mag160c_official.ddt b/build-artifacts/mag160c_official.ddt new file mode 100644 index 0000000..1289070 Binary files /dev/null and b/build-artifacts/mag160c_official.ddt differ diff --git a/build-artifacts/official_gray.bin b/build-artifacts/official_gray.bin deleted file mode 100644 index b66a789..0000000 --- a/build-artifacts/official_gray.bin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:84603fe7ce621e33b910e0dc6a64864ccd5373fecac633f21785fcc073fa08aa -size 19200 diff --git a/build-artifacts/official_harness.exe b/build-artifacts/official_harness.exe deleted file mode 100644 index 067c409..0000000 --- a/build-artifacts/official_harness.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:25b9534e2e4e7907147bfc4c5e19769cee2feccea69b43c793cedb4ac5d15dbb -size 82801 diff --git a/build-artifacts/official_ir_00.rgb b/build-artifacts/official_ir_00.rgb deleted file mode 100644 index 64d57f9..0000000 --- a/build-artifacts/official_ir_00.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c5adac0ebf4f652c9f1ede0f7fdb46dc71fc2b9367f3b36d6674e1ebf29a8d9c -size 230400 diff --git a/build-artifacts/official_ir_01.rgb b/build-artifacts/official_ir_01.rgb deleted file mode 100644 index 75baa7d..0000000 --- a/build-artifacts/official_ir_01.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:35c033d9a45cbb89261a39f3f9f3c6f035e78ff0f45fc15945cab2c9e534563c -size 230400 diff --git a/build-artifacts/official_ir_02.rgb b/build-artifacts/official_ir_02.rgb deleted file mode 100644 index efc7ab3..0000000 --- a/build-artifacts/official_ir_02.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c38582c11cf7c291a93cfac847a36c5ecd5ff4936baa3fb15ccef37a2263fc9 -size 230400 diff --git a/build-artifacts/official_ir_03.rgb b/build-artifacts/official_ir_03.rgb deleted file mode 100644 index a23e823..0000000 --- a/build-artifacts/official_ir_03.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dc3d422dea57493b7ca20e9b3f33942e411e76306033324d195bcc7f6462af42 -size 230400 diff --git a/build-artifacts/official_ir_04.rgb b/build-artifacts/official_ir_04.rgb deleted file mode 100644 index ee0b766..0000000 --- a/build-artifacts/official_ir_04.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61ad47c2b3f3ade916326afee2eecf4ae6165cfd8908c554da3906ddd1934a59 -size 230400 diff --git a/build-artifacts/official_ir_05.rgb b/build-artifacts/official_ir_05.rgb deleted file mode 100644 index 8a2fbc3..0000000 --- a/build-artifacts/official_ir_05.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:85aa0dbbc96c570fdf81bc69183764aa378041541d66ce0b73caf5b869658c6f -size 230400 diff --git a/build-artifacts/official_ir_06.rgb b/build-artifacts/official_ir_06.rgb deleted file mode 100644 index 7c042a4..0000000 --- a/build-artifacts/official_ir_06.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6cd5cbfaa9c7ea95b1c51217a9b2854cb69ecd46a36a551a4f9a06bb81deee5e -size 230400 diff --git a/build-artifacts/official_ir_07.rgb b/build-artifacts/official_ir_07.rgb deleted file mode 100644 index dacba8f..0000000 --- a/build-artifacts/official_ir_07.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ded3c6ec4b793d8ec2442ec0b6b15700819d4aa29b3a34c3d80f015e96e420ff -size 230400 diff --git a/build-artifacts/official_ir_08.rgb b/build-artifacts/official_ir_08.rgb deleted file mode 100644 index c3a4ce4..0000000 --- a/build-artifacts/official_ir_08.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5944f22bea39bc08a9020fe6806d4e40c647f5e69b60f2e9d067113ed4b4c4bc -size 230400 diff --git a/build-artifacts/official_ir_09.rgb b/build-artifacts/official_ir_09.rgb deleted file mode 100644 index 8801674..0000000 --- a/build-artifacts/official_ir_09.rgb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a648dc16634c640e61639c9acddf3aa9d6c20ed4bc2554f60fd95105545496fb -size 230400 diff --git a/build-artifacts/official_meta.txt b/build-artifacts/official_meta.txt deleted file mode 100644 index e69de29..0000000 diff --git a/build-artifacts/shim_test.exe b/build-artifacts/shim_test.exe deleted file mode 100644 index fa87d80..0000000 --- a/build-artifacts/shim_test.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34f32559bfac837f8060079ae14b7b66714dc863a703a5078fdf341f859f29ce -size 78450 diff --git a/build-artifacts/test_csdk.exe b/build-artifacts/test_csdk.exe deleted file mode 100644 index e2de07f..0000000 --- a/build-artifacts/test_csdk.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39f3d0f6d06d1f11d41655eabbaadaccdd9813d6633354c89490fabda2d60b63 -size 118323 diff --git a/build-artifacts/test_csdk_dbg.exe b/build-artifacts/test_csdk_dbg.exe deleted file mode 100644 index 058073b..0000000 --- a/build-artifacts/test_csdk_dbg.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bf5d8fa27b590fb96dc016cb2d4eef232421309e70831dcc7fed94db08e23915 -size 144447 diff --git a/build-artifacts/test_csdk_ti.exe b/build-artifacts/test_csdk_ti.exe deleted file mode 100644 index cde18d9..0000000 --- a/build-artifacts/test_csdk_ti.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:637bd987bcc51c65e150e1292d8e6c252b07f73944db2725051286ad1917943d -size 118323 diff --git a/build-artifacts/test_frames.exe b/build-artifacts/test_frames.exe deleted file mode 100644 index 7859d69..0000000 --- a/build-artifacts/test_frames.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b02fa33b9c1d1dc965c58705ce4ebf05df19393e38ca85ce461099006c664d2 -size 118389 diff --git a/build-artifacts/thermal_20260810_203424.bmp b/build-artifacts/thermal_20260810_203424.bmp deleted file mode 100644 index b2bcd15..0000000 --- a/build-artifacts/thermal_20260810_203424.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2178a4c69fb420dc5151472112ec07f5433bcc75f6d963f4a50f7fe983900ed6 -size 57654 diff --git a/build-artifacts/thermal_guide.exe b/build-artifacts/thermal_guide.exe deleted file mode 100644 index 97bdf74..0000000 --- a/build-artifacts/thermal_guide.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cc7badcce2f6aa2abd60ecd6bc305e264d42587d34d2fb3ab1734ea7be8505fe -size 93991 diff --git a/build-artifacts/thermal_sdk_harness.exe b/build-artifacts/thermal_sdk_harness.exe deleted file mode 100644 index 35b8768..0000000 --- a/build-artifacts/thermal_sdk_harness.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d593166dae1a565d7f7bc156f43627764f013027691b1353f0b98af4313cf56 -size 81330 diff --git a/build-artifacts/thermal_viewer.exe b/build-artifacts/thermal_viewer.exe deleted file mode 100644 index f174d10..0000000 --- a/build-artifacts/thermal_viewer.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:881451e6a9b846a31d2ebfdf81b795480024fae1c89e79894809753cc851956f -size 92906 diff --git a/build-artifacts/tsdk_capture.exe b/build-artifacts/tsdk_capture.exe deleted file mode 100644 index bc490a0..0000000 --- a/build-artifacts/tsdk_capture.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d046e7dcfebeb6a6c35047ff73bb037be910778572fc061c54aa5259e136a423 -size 81461 diff --git a/build-artifacts/tsdk_capture2.exe b/build-artifacts/tsdk_capture2.exe deleted file mode 100644 index 0adbb0f..0000000 --- a/build-artifacts/tsdk_capture2.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5cc4c8aea4ec78becb8a34015f9a609dcb40b3bbd368849e5293f5b341559014 -size 80911 diff --git a/build-artifacts/tsdk_capture3.exe b/build-artifacts/tsdk_capture3.exe deleted file mode 100644 index 57fdcff..0000000 --- a/build-artifacts/tsdk_capture3.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e05cf543ef847439685c462c3993fbce7021bcd8c00664481df7fba2da99dcc9 -size 81395 diff --git a/build-artifacts/tsdk_core_raw.exe b/build-artifacts/tsdk_core_raw.exe deleted file mode 100644 index 4a62d78..0000000 --- a/build-artifacts/tsdk_core_raw.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5e34969b506465d29283759b17100997a569c2b484d34c5c238843f310954e8 -size 80391 diff --git a/build-artifacts/tsdk_debug.exe b/build-artifacts/tsdk_debug.exe deleted file mode 100644 index c0f8b7f..0000000 --- a/build-artifacts/tsdk_debug.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98588d1167e9115be4d875065ed0abd64b5c9b87fbf90ee11b102cdbcdd3eaeb -size 80689 diff --git a/build-artifacts/tsdk_gray.exe b/build-artifacts/tsdk_gray.exe deleted file mode 100644 index 01db7ee..0000000 --- a/build-artifacts/tsdk_gray.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d2392c61709ffd7e679c5cd9218bcf294262281f52ac097c220e1b40a4e55da -size 80344 diff --git a/build-artifacts/tsdk_pair.exe b/build-artifacts/tsdk_pair.exe deleted file mode 100644 index 702833e..0000000 --- a/build-artifacts/tsdk_pair.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:25fa5efc796036ef6f4e158cea6ab50aade6d0459ec36b88053f181ccfef5f6e -size 80344 diff --git a/build-artifacts/tsdk_pair3.exe b/build-artifacts/tsdk_pair3.exe new file mode 100644 index 0000000..0909292 --- /dev/null +++ b/build-artifacts/tsdk_pair3.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b63841b17ee10ab470d76e41cdb580295a6fd8f76f4ad7d6cd0b605c9190d9ae +size 88998 diff --git a/build-artifacts/tsdk_palette.exe b/build-artifacts/tsdk_palette.exe deleted file mode 100644 index abfdc30..0000000 --- a/build-artifacts/tsdk_palette.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa361e3e31a9cdba637c02580439b33c38a6a7885127f3b412632d4cf4baf8dd -size 80344 diff --git a/build-artifacts/usb_bmp.exe b/build-artifacts/usb_bmp.exe deleted file mode 100644 index c9a412a..0000000 --- a/build-artifacts/usb_bmp.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f673c32db5a41b3442caac1a74c7a21601d0a954cdfa1588faaef3111cfef2b -size 84720 diff --git a/build-artifacts/usb_center.exe b/build-artifacts/usb_center.exe deleted file mode 100644 index 5a5025b..0000000 --- a/build-artifacts/usb_center.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d80ca9778bb7f0a3e02533326e3db8d03eb4d4253536f774ed2649b397833833 -size 83041 diff --git a/build-artifacts/usb_cmd.exe b/build-artifacts/usb_cmd.exe deleted file mode 100644 index 800262e..0000000 --- a/build-artifacts/usb_cmd.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96e4441c4afa19bcbc48284726fcdd91b82197dc705ffdfafbc742b8331e29ee -size 81842 diff --git a/build-artifacts/usb_enum.exe b/build-artifacts/usb_enum.exe deleted file mode 100644 index 8897ad3..0000000 --- a/build-artifacts/usb_enum.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c75cfa7c6114672dd4ada66430c53ae6c1f14481c16ea9d18c2c134855958094 -size 80932 diff --git a/build-artifacts/usb_ffc.exe b/build-artifacts/usb_ffc.exe deleted file mode 100644 index ee70003..0000000 --- a/build-artifacts/usb_ffc.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1b5001cf8b5698e3b035b08e1f8a35c53b890a151c65fbabba0759c0ddfe6c4e -size 84125 diff --git a/build-artifacts/usb_ffcdbg.exe b/build-artifacts/usb_ffcdbg.exe deleted file mode 100644 index c64d84c..0000000 --- a/build-artifacts/usb_ffcdbg.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ebf0c927ce8da431a8334b2605598b2a7fd35222034d6e6e3af4a025e9218263 -size 83245 diff --git a/build-artifacts/usb_ffchalt.exe b/build-artifacts/usb_ffchalt.exe deleted file mode 100644 index 74bc49b..0000000 --- a/build-artifacts/usb_ffchalt.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f119152a7c0cf49b2b8a6f23714bc9980705e7a7e6b2a64f9478427a05b1972f -size 83245 diff --git a/build-artifacts/usb_ffcseq.exe b/build-artifacts/usb_ffcseq.exe deleted file mode 100644 index 1acfa3b..0000000 --- a/build-artifacts/usb_ffcseq.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6c888d474a9cabaac25c73d31a718197747372aed8b929e0712408837631e19 -size 83245 diff --git a/build-artifacts/usb_final.exe b/build-artifacts/usb_final.exe deleted file mode 100644 index 3ac54b6..0000000 --- a/build-artifacts/usb_final.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f7a94af9312dfc90ebf42f52c25e2299dbb53c5167a7631d64f8b878563af70 -size 83920 diff --git a/build-artifacts/usb_frame.exe b/build-artifacts/usb_frame.exe deleted file mode 100644 index a4e3cab..0000000 --- a/build-artifacts/usb_frame.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6d1659229d9cbc1707c1daeb37e0450091528b5d1e49d1a8f8f54afd5688939 -size 83931 diff --git a/build-artifacts/usb_grab.exe b/build-artifacts/usb_grab.exe deleted file mode 100644 index 1a10c0d..0000000 --- a/build-artifacts/usb_grab.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b454a50e62471cd95020b128fec0c56010d4ad97b3601388e887b79d52d86068 -size 83613 diff --git a/build-artifacts/usb_grab2.exe b/build-artifacts/usb_grab2.exe deleted file mode 100644 index 651d925..0000000 --- a/build-artifacts/usb_grab2.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c04dcb2e65708862e278cbfa8598bf1569392bdc24ebca86d23eeb5e7dd059b4 -size 84125 diff --git a/build-artifacts/usb_grab3.exe b/build-artifacts/usb_grab3.exe deleted file mode 100644 index 6792a74..0000000 --- a/build-artifacts/usb_grab3.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b96d065fa7d7f8cf4551e33da8284e9d1b5b2caaac92158407ac140a94d9e900 -size 84301 diff --git a/build-artifacts/usb_grab4.exe b/build-artifacts/usb_grab4.exe deleted file mode 100644 index ee96e08..0000000 --- a/build-artifacts/usb_grab4.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98e2433027a5e817c1fb6ecb12728bf9c4910b16f783d834595e668fb8b16fd8 -size 84125 diff --git a/build-artifacts/usb_hardreset.exe b/build-artifacts/usb_hardreset.exe deleted file mode 100644 index ffdeca5..0000000 --- a/build-artifacts/usb_hardreset.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d6abe289686dc172f0ffaabb693f42756c829c2b549535c64a05dcbf5e2b460 -size 80878 diff --git a/build-artifacts/usb_hotcold.exe b/build-artifacts/usb_hotcold.exe deleted file mode 100644 index 974968d..0000000 --- a/build-artifacts/usb_hotcold.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3543003ed38f9ba80d6f7030d3d369a7cd7345eac7c88a4da3f97f4ae8bbbde7 -size 83920 diff --git a/build-artifacts/usb_live.exe b/build-artifacts/usb_live.exe deleted file mode 100644 index 0461cc2..0000000 --- a/build-artifacts/usb_live.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1cc3f5b8f44f022ee1ce059947690faf1245aa7c755e701eda39ce912e87530 -size 83571 diff --git a/build-artifacts/usb_official.exe b/build-artifacts/usb_official.exe deleted file mode 100644 index 6939618..0000000 --- a/build-artifacts/usb_official.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3147c2e62cbd5b5e24200682483c61fd8ebd71126d24578f221bc3a3c67c829a -size 84125 diff --git a/build-artifacts/usb_probe.exe b/build-artifacts/usb_probe.exe deleted file mode 100644 index 72812f3..0000000 --- a/build-artifacts/usb_probe.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c60f233298c57d6ae3cc42064a2c478b864f8dcf46c40171915706812186d85b -size 84000 diff --git a/build-artifacts/usb_reset.exe b/build-artifacts/usb_reset.exe deleted file mode 100644 index 3024ccc..0000000 --- a/build-artifacts/usb_reset.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aebf26de708f21693bf7919fa744e0ae2d617e845523ce966d03f5ec24316143 -size 81842 diff --git a/build-artifacts/usb_scan.exe b/build-artifacts/usb_scan.exe deleted file mode 100644 index 91c6ec5..0000000 --- a/build-artifacts/usb_scan.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:064bd284ac6550d001cc0388b27a1cc482219b9fe35e43e61285dd3b0bab8f95 -size 82390 diff --git a/build-artifacts/usb_scan2.exe b/build-artifacts/usb_scan2.exe deleted file mode 100644 index 3ad76a5..0000000 --- a/build-artifacts/usb_scan2.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd3eb99ac7707b389becf57fb652ae51768db4d4f6d9a5d748f96557e26ba3dc -size 82372 diff --git a/build-artifacts/usb_scan3.exe b/build-artifacts/usb_scan3.exe deleted file mode 100644 index 33fd654..0000000 --- a/build-artifacts/usb_scan3.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eec90e900020a2b79d6aad9bf94aa7fd071e88b3abf811be425437240ffad3dd -size 82372 diff --git a/build-artifacts/usb_series.exe b/build-artifacts/usb_series.exe deleted file mode 100644 index 0e896d4..0000000 --- a/build-artifacts/usb_series.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6c0bd6c44aacc7b8a6559be1d583b007e051023be2a9bc2c5b2b51cd0027e8d6 -size 83678 diff --git a/build-artifacts/usb_stream.exe b/build-artifacts/usb_stream.exe deleted file mode 100644 index be0b4c3..0000000 --- a/build-artifacts/usb_stream.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a643cbb5f62dc9137303032db410f583ebc442dddb0f0143fb8d96e7bd21dbb7 -size 84094 diff --git a/build-artifacts/usb_stream2.exe b/build-artifacts/usb_stream2.exe deleted file mode 100644 index dd506fb..0000000 --- a/build-artifacts/usb_stream2.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14d5e88c038be4a813c3efb14bb2d1092388d60e39b00db6db5d516622a5a66b -size 82558 diff --git a/csdk/README.md b/csdk/README.md index e6ddfe9..88bd00d 100644 --- a/csdk/README.md +++ b/csdk/README.md @@ -1,55 +1,225 @@ # MAG160C C SDK (csdk/) -Pure C reimplementation of the MAG160C thermal camera SDK, written from the -recovered protocol (see `analysis/protocol_spec.md` for the full reverse -engineering report). The previous C++ implementation was archived to -`analysis/legacy-cpp/`; this tree replaces it. +MAG160C 热像仪(160×120,USB VID 0x833C)的纯 C 重新实现,基于对原厂 +Windows/Linux/Android SDK 的完整逆向(见 `../analysis/reverse_20260813_full.md`)。 +包含:USB 会话层、帧解析/流组装、温度换算、TCM 板通信、以及**官方渲染管线的 +逐像素复刻**(demo3 v5)。 -## Layout +## 目录结构 ``` csdk/ - include/mag160c/mag160c.h public C ABI (error domain, magic codes, frame - format, temperature API, TCM framing) + include/mag160c/ + mag160c.h 公共 C ABI(错误域、协议常量、帧格式、温度、TCM) + mag160c_display.h FFC 调度器 + 显示辅助(ref rebase 等) src/ - mag160c_internal.h shared helpers (last-error) - mag160c_error.c TLS last-error + error names - mag160c_frame.c 0x1bb1b11b frame parse + streaming assembler - mag160c_temp.c Calibration / ConvertResponse2Temperature / T2E - mag160c_tcm.c FTDICommand 0x7e framing + rotate/light builders - mag160c_ir.c libusb session (link/start/stop/ffc/info) - mag160c_tables.h T2E + E2TAccQ10 tables (generated from binary) - tools/mag160c_cli.c CLI: ir-info, ffc, start, stop, tcm-rotate, - tcm-light, frame-test, temp-test - tests/ test_frame, test_temp, test_tcm, test_api + mag160c_internal.h 内部共享(last-error) + mag160c_error.c TLS last-error + 错误名 + mag160c_frame.c 0x1bb1b11b 帧解析 + 流组装器 + mag160c_temp.c Calibration / ConvertResponse2Temperature / T2E + mag160c_tcm.c FTDICommand 0x7e 组帧 + 旋转/指示灯构建 + mag160c_ir.c libusb 会话(link/start/stop/ffc/info/回调/FFC调度) + mag160c_display.c 显示辅助(FFC 调度器、ref rebase、坏点) + mag160c_tables.h T2E/E2TAccQ10 温度表(从二进制提取) + mag160c_official_*.h 官方调色板 / LUT1024 / T2E(从官方活体抓取导出) + tools/ + mag160c_demo3.c 主程序:官方管线复刻(DDT+NUC+盲元+窗口+LUT+2x) + tsdk_pair2.c 官方 ThermalSDK 同帧抓帧工具(含表/盲元/快门) + tsdk_pair3.c 增强采集(DDT 复制、完整端点表、盲元、h1024/cdf) + mag160c_cli.c CLI:ir-info/ffc/start/stop/tcm-rotate/tcm-light 等 + mag160c_csdk_stream_test.c csdk 流测试 + legacy/ 历史探索工具(归档,勿用) + tests/ test_frame / test_temp / test_tcm / test_api / test_display + CMakeLists.txt CMake 构建(可选;当前环境直接用 gcc) + WINDOWS_TESTING.md Windows 硬件测试指南(USBPcap/Wireshark/MinGW) ``` -## Build +## 构建 +### 方式 A:直接 GCC(当前 Windows 环境) + +```powershell +# CLI 工具 +gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" ` + -o build-artifacts\mag160c_cli.exe csdk\tools\mag160c_cli.c ` + csdk\src\mag160c_ir.c csdk\src\mag160c_frame.c csdk\src\mag160c_temp.c ` + csdk\src\mag160c_tcm.c csdk\src\mag160c_error.c csdk\src\mag160c_display.c ` + csdk\third_party\libusb\win64\libusb-1.0.x64.a + +# 主程序 demo3(官方管线复刻) +gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" ` + -o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c ` + csdk\src\mag160c_display.c csdk\src\mag160c_error.c ` + csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32 + +# 官方抓帧工具 +gcc -O2 -w -o build-artifacts\tsdk_pair3.exe csdk\tools\tsdk_pair3.c ``` -cmake -B build -S csdk # auto-detects libusb-1.0 via pkg-config + +libusb 依赖:`csdk/third_party/libusb/win64/`(头文件 + DLL + MinGW 导入库)。 + +### 方式 B:CMake(有 CMake 时) + +```powershell +cmake -B build -S csdk cmake --build build ctest --test-dir build ``` -Without libusb-1.0 the IR session APIs return MAG160C_ERR_NOT_SUPPORTED; -the pure helpers (frame parse, temperature math, TCM framing) and their tests -work with no dependencies. Threads (pthread) are used when available. +无 libusb-1.0 时,IR 会话 API 返回 `MAG160C_ERR_NOT_SUPPORTED`;纯计算 +(帧解析、温度、TCM)和对应测试无依赖可跑。 -## Recovered protocol summary +## 快速开始 -- VID 0x833C, config value 2, interface 0. -- Commands: EP OUT 0x03, 8-byte packets `{u32 magic, u32 param}` (0x3c-byte - with 0x38-byte payload for DDT). Response: EP IN 0x82 (0x1000 max, 2000 ms). -- Magic commands: 0x6bb6b66b/66c prepare, 66d/66e DDT, 66f info, 670 version, - 672 FFC, 673 start, 674 stop, 676/677 set params. -- Magic responses: 0x5bb5b55b..55f (0x38-byte info blocks / 0x10 pair), - 0x5bb5b57b file header. -- Frame stream: EP IN 0x81, marker 0x1bb1b11b @0, counter @4, data length @8, - type @0xc (0 response / 1 raw), shutter @0x10, pixels @0x1c (uint16 LE), - trailing 0x1bb1b11c @0x1c+len, frame size 0x38+len. -- Temperature: per-pixel piecewise-linear Calibration with baseline, - ConvertResponse2Temperature auto-gain, T2E curve (0x112 entries) with Q13 - band interpolation. -- TCM: FTDICommand 0x7e framing with additive (mod-256) checksums; command - table main 0x02 (rotate 0x77, light 0x31/32/33, ...). +### 1. 连接并启动(核心 API 流程) + +```c +#include +#include + +static void on_frame(uint32_t idx, const uint8_t *data, size_t len, void *user) { + /* data: 完整帧(0x1c 头 + 像素)。用 mag160c_frame_parse 解析。 */ + mag160c_frame_header_t hdr; + const uint16_t *pixels; + if (mag160c_frame_parse(data, len, &hdr, &pixels) == MAG160C_OK && hdr.frame_type == 0) + ; /* pixels[19200] 小端 uint16,160×120 */ +} + +int main(void) { + mag160c_ctx_t *ctx = NULL; + mag160c_ir_t *ir = NULL; + mag160c_init(&ctx); + mag160c_ir_open(ctx, &ir); /* 自动找 VID 0x833c,config 2,interface 0 */ + mag160c_ir_prepare(ir); /* 66b/66c/66f + FFC(0)x2 + 300ms */ + mag160c_ir_set_frame_callback(ir, on_frame, NULL); + + /* 官方 FFC 节律(周期 1800 帧 / 间隔 9),保持 type=0 流稳定 */ + static mag160c_ffc_scheduler_t sched; + mag160c_ffc_scheduler_init(&sched, 1800, 9); + mag160c_ir_set_ffc_scheduler(ir, &sched, 0); + + mag160c_ir_start(ir); /* 线程收帧 + 0x6bb6b673 */ + /* ... 收帧 / 读温度 ... */ + int32_t temp_mc = 0; + mag160c_ir_read_temperature(ir, 80, 60, &temp_mc); + + mag160c_ir_stop(ir); + mag160c_ir_close(ir); + mag160c_shutdown(ctx); + return 0; +} +``` + +### 2. 关键 API + +| API | 说明 | +|---|---| +| `mag160c_ir_open/close` | USB 设备会话 | +| `mag160c_ir_prepare` | 官方初始化命令序列 | +| `mag160c_ir_start/stop` | 起停流(0x6bb6b673 / 0x6bb6b674)| +| `mag160c_ir_trigger_ffc(param)` | 手动 FFC(0 或 1)| +| `mag160c_ir_set_ffc_scheduler` | 挂官方节律 FFC 调度器 | +| `mag160c_ir_set_frame_callback` | 每帧回调(解析后数据)| +| `mag160c_ir_read_temperature(x,y,&t)` | 探针温度(毫摄氏度×100)| +| `mag160c_frame_parse` | 纯解析:marker/计数/类型/像素指针 | +| `mag160c_frame_stream_*` | 流组装器(乱序/分包恢复)| +| `mag160c_temp_calibrate` | 官方逐像素分段线性校准(NUC 温度域)| +| `mag160c_temp_convert_response` | 自动增益线性换算 | +| `mag160c_temp_t2e_interp` | T2E 曲线 Q13 插值 | +| `mag160c_tcm_*` | TCM 板 FTDICommand 0x7e 帧(旋转/指示灯)| + +错误码域 `mag160c_error_t` 与官方 errno 域 `0xE4AE0001..` 对齐; +`mag160c_last_error()` 取线程局部最近错误字符串。 + +### 3. CLI 用法(mag160c_cli.exe,无硬件可跑纯计算) + +```powershell +build-artifacts\mag160c_cli.exe ir-info # 枚举/信息 +build-artifacts\mag160c_cli.exe frame-test # 帧解析自测 +build-artifacts\mag160c_cli.exe temp-test # 温度换算自测 +build-artifacts\mag160c_cli.exe tcm-rotate 5 # TCM 旋转指令编码 +build-artifacts\mag160c_cli.exe tcm-light green blink # TCM 指示灯指令编码 +``` + +### 4. 主程序 demo3(官方渲染管线复刻) + +`tools/mag160c_demo3.c` 是当前维护的 Windows 直连演示/研究程序,逐像素复刻 +CoreSDKLib.dll 的完整链路: + +``` +USB帧(type=0) → 快门提取(帧尾字) → FFC状态机(0x9ee0) +→ 端点选择+Q12插值(0x16ae0/0x16dd0/0x16f10, 快门驱动) +→ ref = FFC窗口4个type=1帧均值(0x41ee0 mode=4) +→ NUC查表(0x17200) → 盲元补偿(0x17330, 32条固定记录) +→ 统计+窗口(0x10780/0x109c0, half=312) → LUT1024重建(0x11ee0) +→ 灰度+2x升采样(0x19740) → 官方调色板 +``` + +运行(需要 `build-artifacts/` 下的 DDT 表文件): + +```powershell +Stop-Process -Name mag160c_demo3 -Force -ErrorAction SilentlyContinue +Start-Process "C:\Project\MAG160C\build-artifacts\mag160c_demo3.exe" -WorkingDirectory "C:\Project\MAG160C\build-artifacts" +``` + +依赖文件(放 exe 同目录): + +| 文件 | 来源 | +|---|---| +| `mag160c_official.ddt` | 官方 DDT 校准文件(`%TEMP%\Core<序列号>` 副本)| +| `mag160c_official_nuc_gain.bin` | 官方 NUC gain/off 表(历史抓取,备用)| +| `mag160c_official_nuc_thr.bin` | 官方 NUC 阈值表(历史抓取,备用)| +| `libusb-1.0.dll` | libusb 运行库 | + +验证状态(2026-08-13): +- NUC+盲元 与官方同帧抓帧逐像素 0/19200 误差 +- 阈值/gain 插值 0 误差;2x 升采样 0/76800 误差;窗口公式与官方一致 +- 同静态场景 gray 直方图与官方相关性 0.92(跨会话) +- 输出日志:`demo3_diag.txt`(每帧统计)、`demo3_ffc.txt`(FFC 事件)、 + `demo3_auto_*.bmp`(每 30 帧快照) + +### 5. 官方抓帧工具(tsdk_pair2 / tsdk_pair3) + +用途:对照验证 demo3 与官方管线。先停 demo3,再运行(同一设备独占): + +```powershell +# tsdk_pair2:官方 ThermalSDK 同帧抓帧(gray/rgb/raw/ref/f20/tables/win) +& build-artifacts\tsdk_pair2_fixed.exe C:\Project\MAG160C\analysis\pairs_xxx 12 6000 + +# tsdk_pair3:增强采集(+ 完整端点表/盲元记录/shutter/h1024/cdf/DDT 复制) +& build-artifacts\tsdk_pair3.exe C:\Project\MAG160C\analysis\pairs_xxx 8 6000 +# 注意:config.txt 和 pair_*.meta/win 写在进程 CWD,跑完移回输出目录 +``` + +参数:`<输出目录> <抓帧对数> <官方SDK初始化等待ms>`。 +若报 "no channel":停止所有程序后重新插拔 USB。 + +## 测试 + +```powershell +# 无硬件验证(纯计算) +build-artifacts\csdk_test_frame.exe +build-artifacts\csdk_test_temp.exe +build-artifacts\csdk_test_tcm.exe +build-artifacts\csdk_test_api.exe +build-artifacts\csdk_test_display.exe +``` + +## 协议要点(详见 analysis/protocol_spec.md) + +- 端点:EP0x03 命令 OUT / 0x82 响应 IN / 0x81 帧流 IN / 0x84 大块读 IN +- 命令 4 字节 `{magic}`,仅 FFC(0x6bb6b672) 用 8 字节 `{magic, param}` +- 帧:`0x1bb1b11b | counter | len | type(0/1) | ... | 像素 u16 LE | 0x1bb1b11c` +- 快门(设备温度代理)= 帧尾字 `frame[len+0x24]`(width=160 时) +- 温度:`temp_mC = T2E[3*nuc - C]`,C≈5797(会话相关) + +## 文档索引 + +| 文档 | 内容 | +|---|---| +| `../analysis/protocol_spec.md` | USB 协议/帧/命令/温度完整规格 | +| `../analysis/reverse_20260813_full.md` | 官方管线 Ghidra 全量逆向 + 鬼影根因 | +| `../analysis/session_state.md` | 当前会话状态/恢复点(心跳)| +| `../交接_完整逆向工程说明_20260811.md` | 项目总交接(目录/环境/历史)| +| `WINDOWS_TESTING.md` | Windows 抓包与硬件测试指南 | +| `legacy/` | 历史工具源码归档(早期探索,功能已被现工具取代)| diff --git a/csdk/tools/libusb0_trace_shim.c b/csdk/tools/legacy/libusb0_trace_shim.c similarity index 100% rename from csdk/tools/libusb0_trace_shim.c rename to csdk/tools/legacy/libusb0_trace_shim.c diff --git a/csdk/tools/mag160c_demo.c b/csdk/tools/legacy/mag160c_demo.c similarity index 100% rename from csdk/tools/mag160c_demo.c rename to csdk/tools/legacy/mag160c_demo.c diff --git a/csdk/tools/mag160c_demo2.c b/csdk/tools/legacy/mag160c_demo2.c similarity index 100% rename from csdk/tools/mag160c_demo2.c rename to csdk/tools/legacy/mag160c_demo2.c diff --git a/csdk/tools/mag160c_demo_usb0.c b/csdk/tools/legacy/mag160c_demo_usb0.c similarity index 100% rename from csdk/tools/mag160c_demo_usb0.c rename to csdk/tools/legacy/mag160c_demo_usb0.c diff --git a/csdk/tools/mag160c_ffc_test.c b/csdk/tools/legacy/mag160c_ffc_test.c similarity index 100% rename from csdk/tools/mag160c_ffc_test.c rename to csdk/tools/legacy/mag160c_ffc_test.c diff --git a/csdk/tools/mag160c_frame_dump.c b/csdk/tools/legacy/mag160c_frame_dump.c similarity index 100% rename from csdk/tools/mag160c_frame_dump.c rename to csdk/tools/legacy/mag160c_frame_dump.c diff --git a/csdk/tools/mag160c_frame_stats.c b/csdk/tools/legacy/mag160c_frame_stats.c similarity index 100% rename from csdk/tools/mag160c_frame_stats.c rename to csdk/tools/legacy/mag160c_frame_stats.c diff --git a/csdk/tools/mag160c_full_dump.c b/csdk/tools/legacy/mag160c_full_dump.c similarity index 100% rename from csdk/tools/mag160c_full_dump.c rename to csdk/tools/legacy/mag160c_full_dump.c diff --git a/csdk/tools/mag160c_layout_probe.c b/csdk/tools/legacy/mag160c_layout_probe.c similarity index 100% rename from csdk/tools/mag160c_layout_probe.c rename to csdk/tools/legacy/mag160c_layout_probe.c diff --git a/csdk/tools/mag160c_layout_probe2.c b/csdk/tools/legacy/mag160c_layout_probe2.c similarity index 100% rename from csdk/tools/mag160c_layout_probe2.c rename to csdk/tools/legacy/mag160c_layout_probe2.c diff --git a/csdk/tools/official_harness.c b/csdk/tools/legacy/official_harness.c similarity index 100% rename from csdk/tools/official_harness.c rename to csdk/tools/legacy/official_harness.c diff --git a/csdk/tools/thermal_sdk_harness.c b/csdk/tools/legacy/thermal_sdk_harness.c similarity index 100% rename from csdk/tools/thermal_sdk_harness.c rename to csdk/tools/legacy/thermal_sdk_harness.c diff --git a/csdk/tools/thermal_viewer.c b/csdk/tools/legacy/thermal_viewer.c similarity index 100% rename from csdk/tools/thermal_viewer.c rename to csdk/tools/legacy/thermal_viewer.c diff --git a/csdk/tools/tsdk_capture.c b/csdk/tools/legacy/tsdk_capture.c similarity index 100% rename from csdk/tools/tsdk_capture.c rename to csdk/tools/legacy/tsdk_capture.c diff --git a/csdk/tools/tsdk_capture2.c b/csdk/tools/legacy/tsdk_capture2.c similarity index 100% rename from csdk/tools/tsdk_capture2.c rename to csdk/tools/legacy/tsdk_capture2.c diff --git a/csdk/tools/tsdk_capture3.c b/csdk/tools/legacy/tsdk_capture3.c similarity index 100% rename from csdk/tools/tsdk_capture3.c rename to csdk/tools/legacy/tsdk_capture3.c diff --git a/csdk/tools/tsdk_core_raw.c b/csdk/tools/legacy/tsdk_core_raw.c similarity index 100% rename from csdk/tools/tsdk_core_raw.c rename to csdk/tools/legacy/tsdk_core_raw.c diff --git a/csdk/tools/tsdk_debug.c b/csdk/tools/legacy/tsdk_debug.c similarity index 100% rename from csdk/tools/tsdk_debug.c rename to csdk/tools/legacy/tsdk_debug.c diff --git a/csdk/tools/tsdk_gray.c b/csdk/tools/legacy/tsdk_gray.c similarity index 100% rename from csdk/tools/tsdk_gray.c rename to csdk/tools/legacy/tsdk_gray.c diff --git a/csdk/tools/tsdk_pair.c b/csdk/tools/legacy/tsdk_pair.c similarity index 100% rename from csdk/tools/tsdk_pair.c rename to csdk/tools/legacy/tsdk_pair.c diff --git a/csdk/tools/tsdk_palette.c b/csdk/tools/legacy/tsdk_palette.c similarity index 100% rename from csdk/tools/tsdk_palette.c rename to csdk/tools/legacy/tsdk_palette.c diff --git a/csdk/tools/mag160c_demo3.c b/csdk/tools/mag160c_demo3.c index 00bd857..7c0f4ac 100644 --- a/csdk/tools/mag160c_demo3.c +++ b/csdk/tools/mag160c_demo3.c @@ -1,26 +1,40 @@ -/* MAG160C Windows Demo v4 - OFFICIAL display pipeline, pixel-verified. +/* MAG160C Windows Demo v5 - FULL official pipeline replication. * - * Reverse-engineered from CoreSDKLib.dll (Windows) with live same-frame - * capture against ThermalSDK (analysis/pairs_*, 2026-08-11): + * Pixel-verified against CoreSDKLib.dll (Ghidra decompile + live same-frame + * captures, 2026-08-13): * - * 1. NUC : nuc[i] = (counts[i] - ref[i]) * 3 + comp, clamp [0, 65535] - * (ref = per-pixel reference frame captured at FFC; comp = - * global offset calibrated at reference capture so the NUC - * output centers on the official level ~9804 counts) - * 2. WINDOW (per frame, on NUC output): lo = max(min, mean - 312), - * hi = min(max, mean + 312) (X=624, verified stable) - * 3. GRAY: idx = (nuc[i] - lo) * (0xFFC00000 / (hi-lo)) >> 22 (u32) - * gray = LUT1024[dev+0x4284c][idx] (official curve, exported) - * 4. COLOR: rgb = palette[gray], 256x4 BGR at dev+0xb18 (exported) - * 5. ENLARGE: 2x bilinear for the 320x240 output (StretchBlt) + * 1. DDT file load (%TEMP%\Core / mag160c_official.ddt) + * v3 header {magic 0x5aa50003, w, h, epcount, nsegs, 0x47944, + * 0x47948, 0x4155c, 0x41560} + endpoint temps T[epcount] + + * per-endpoint tables {thr (nsegs-1)*npix+0x4155c/2 i16, + * gain/off nsegs*npix*2 u16} + blind records (0x28 bytes each). + * 2. Endpoint select: sel = #T[i] < shutter (shutter = tail word at + * frame offset len+0x24, i.e. g_frame[0x9608]); cap at epcount-2. + * Verified live: shutter 29289 -> sel=2 (T=28495..33637). + * 3. Q12 interpolation: t = ((shutter-T[sel])<<12)/(T[sel+1]-T[sel]), + * clamp [-0x3fff,0x3fff]; work = a + ((b-a)*t>>12). + * Verified 0/38400 thr, 0/115200 gain. + * 4. Ref = 4-frame mean collected on startup/post-FFC frames 6..9 + * (reset at frame 6), FFC(1) at frame 9. Frozen between FFCs. + * 5. NUC: d2 = (f20-ref)>>1; seg by pixel thresholds; out = off + + * (gain*d2>>12); clamp. + blind comp (records: avg of N neighbours). + * Verified 0/19200 vs official raw. + * 6. Window: [min(fmin, mean-half), max(fmax, mean+half)], + * half = max(128, 0x24*1000>>0x4794c)/2 (live: 5*1000>>3/2 = 312). + * Stats: min/max/mean/std -> dev+0x42010..24. + * 7. LUT1024 rebuild: 1024-bin hist -> 3-tap smooth -> CDF both + * directions from mean-bin -> contrast curve -> center binary + * search -> LUT fill (+ temporal center smoothing). + * gray = LUT[(nuc-lo)*0xffc00000/(hi-lo)>>22]. + * 8. 2x bilinear upscale (exact weights, edge extrapolation). + * Verified 0/76800 vs official 320x240 gray. + * 9. Palette: captured official 256x4 BGR. + * 10. FFC: period 1800 frames or |shutter drift| > 250; after FFC(0) + * the 13-frame startup cycle repeats (rebuild/ref/rebuild). * - * Verified: gray reconstruction from counts = 100.0% pixel-exact vs the - * official same-frame gray (analysis/pairs_win); palette render = 100.0% - * exact vs official RGB24. Temperature: temp_mC = T2E[3*nuc - C], - * C ~= 5797 (session-adaptive; mean abs error 1.3 mC over 12 frames). - * - * Frame decode fix vs demo2: pixels start at data[0] of the second bulk - * read (probe-verified: read1 = 28B header, read2 = 38400 px + 28B tail). + * Ghost behavior is the official one: the ref is frozen between FFCs and + * re-collected (4 frames) after each FFC, so a moving object's old + * position reads as a mild dark residual exactly like the official app. */ #define _WIN32_WINNT 0x0601 #include @@ -32,138 +46,110 @@ #include "mag160c/mag160c.h" #include "mag160c/mag160c_display.h" #include "mag160c_official_palette256.h" -#include "mag160c_official_lut1024.h" #include "mag160c_official_t2e.h" +#define MAG_T2E_OFFSET 0x249f0 +#define TEMP_C 5797 + +static int counts_to_temp_mc(int counts) { + int64_t x = (int64_t)counts * 3 - TEMP_C; + if (x < 0) x = 0; + int lo = 0, hi = 645; + while (lo < hi) { + int mid = (lo + hi + 1) >> 1; + if (mag160c_official_t2e[mid] <= x) lo = mid; + else hi = mid - 1; + } + int i = lo; + if (i > 644) i = 644; + int64_t diff = x - mag160c_official_t2e[i]; + int64_t t2 = mag160c_official_t2e[i + 1] - mag160c_official_t2e[i]; + int64_t slope = t2 ? (0x1000000 + t2 / 2) / t2 : 0; + int64_t temp = ((slope * diff) >> 12) + ((int64_t)i << 12) - MAG_T2E_OFFSET; + return (int)temp; +} + +static double counts_to_c(double v) { + return counts_to_temp_mc((int)v) / 1000.0; +} + #define W 160 #define H 120 #define NPIX (W * H) -#define FFC_PERIOD 1800 /* frames between FFC pairs - official - * [0x2d90] = 1800 measured (120 s) */ -#define FFC_GAP 9 /* frames between FFC(0) and FFC(1) (official) */ +/* official timing constants (live: dev+0x2d78..0x2d94 = 4,5,4,1800,250) */ +#define OFF_N0 4 /* ref frames after FFC(1) window start */ +#define OFF_N1 5 /* table rebuild frames */ +#define OFF_N2 4 /* second table rebuild frames */ +#define OFF_FFC_PERIOD 1800 +#define OFF_FFC_DRIFT 250 +#define OFF_WARM_FRAMES 20 /* mode 1/2: drop first 20 frames */ -/* user-proposed reference mode: no frozen scene reference. Every pixel - * of the reference is the current global minimum temperature value, so - * live - ref is >= 0 everywhere: a moving object can never go negative - * (black ghost) and its old position reads as plain background. Trades - * the mura flat-fielding of a captured reference for zero ghosting. */ -#define CONSTANT_REF 1 - -/* official window half-span on NUC counts (X/2 = 312, measured) */ -#define WIN_HALF 312 -/* official NUC gain (measured, session-stable) */ -#define NUC_GAIN 19 /* official NUC slope 0.19 (matches measured nuc vs d2 response) */ -/* NUC output center targeted at reference capture (official level) */ -#define NUC_CENTER 9804 -/* temperature conversion constant C: temp_mC = T2E[3*nuc - C] */ -#define TEMP_C 5797 -#define SBNUC_ENABLE 1 /* post-motion negative-residual self-heal only */ -#define BADMAP_ENABLE 0 /* diagnostic: official uses a preset blind - * pixel table; dynamic scene-derived bad maps - * can stamp fixed screen-space shadows */ -#define SB_HOT_T 120 /* freeze true hot-object pixels */ -#define SB_HOT_SEED 48 /* remember mildly warm pixels so their tail - * can be erased quickly after they leave */ -#define SB_HOT_EXIT 24 /* leave the warm state only near background */ -#define SB_HOT_REENTER 48 /* hysteresis: cancel release above this */ -#define SB_HOT_HOLD 24 /* recent-hot memory in frames */ -#define SB_HOT_WARM 1 -#define SB_HOT_RELEASE 2 -#define SB_INNOV_VAR_T 2500 /* roughly (50 counts)^2 */ -#define SB_INNOV_HOLD 6 /* keep a motion gate after an edge */ -#define SB_RECOVER_T 16 /* negative residual evidence threshold */ -#define SB_RECOVER_RUN 2 /* require persistence before ref recovery */ -#define OFFICIAL_NUC_SEGS 3 -#define OFFICIAL_NUC_THR_PER_PIXEL (OFFICIAL_NUC_SEGS - 1) - -/* reference model (OpenCV-MOG-style background model): - * REF_T : |live-ref| below this -> pixel is background, update slowly - * REF_ALPHA: background learn rate (ref += d/ALPHA per frame) - * REF_FREEZE: |d| above -> foreground, ref frozen (never absorbs objects, - * which is what caused the ghosting) - * REF_SKIP : frames to skip rendering right after FFC(1) (baseline - * settles; the official app freezes the image here too) */ -#define REF_T 60 -#define REF_ALPHA 32 -#define REF_SKIP 45 /* frames to skip right after FFC(1) so the - * type=0 baseline fully settles (measured: - * baseline takes ~3-4 s to recover after FFC) */ -#define REF_INIT_N 12 /* reference frames (median; short window so a - * transient object is rarely absorbed) */ -#define REF_QUIET 25 /* max mean |frame delta| to accept an init frame */ -#define REF_SELFHEAL_N 30 /* frames a pixel must be isolated-foreground - * before it is healed back into the ref - * (kills startup-noise ghosts; real objects - * are contiguous so they never qualify) */ -#define REF_REINIT_AFTER_FFC 0 /* FFC: do NOT re-collect the reference - - * official behavior (verified 2026-08-12): - * ref only shifts globally after FFC - * (-145/-214 counts), spatial structure kept. - * Re-collection absorbs scene objects into - * the frozen reference and ghosts them - * black. Rebase the global offset instead. */ +#define OFF_DDT "mag160c_official.ddt" static libusb_context *g_ctx; static libusb_device_handle *g_h; static unsigned char g_frame[40000]; static unsigned char g_bmp[54 + W * H * 3]; static char g_title[256]; -static unsigned short g_reference[NPIX]; -static unsigned short g_ref_mura[NPIX]; /* flat-field (mura) reference */ -static unsigned short g_official_gain[NPIX * OFFICIAL_NUC_SEGS * 2]; -static short g_official_thr[NPIX * OFFICIAL_NUC_THR_PER_PIXEL]; -static int g_official_nuc_ready; -static int g_official_ref_bias; -static unsigned g_ref_mura_min; -static int g_ref_mura_ready; -static int g_sb_med; -static int g_sb_accept; -static int g_sb_shift; -static int g_sb_gmin; -static double g_sb_mura_dmean; -static double g_sb_mura_dstd; -static short g_sb_prev_d[NPIX]; -static unsigned char g_sb_still[NPIX]; -static unsigned short g_sb_innov_var[NPIX]; -static unsigned char g_sb_cold_run[NPIX]; -static unsigned char g_hot_hist[NPIX]; /* release countdown */ -static unsigned char g_sb_hot_state[NPIX]; /* warm or post-hot release */ -static unsigned char g_disp_hot[NPIX]; -static unsigned char g_disp_hot2[NPIX]; -static unsigned char g_motion_hist[NPIX]; -static unsigned short g_disp_prev_live[NPIX]; -static int g_disp_prev_ready; -static int g_disp_cur_hot; -static int g_disp_ghost; -static int g_disp_repl; -static unsigned short g_live[NPIX]; /* decoded + bad-pixel-corrected frame */ -static unsigned short g_prev_frame[NPIX]; -static int g_has_reference; -static unsigned short g_ref_samples[NPIX][REF_INIT_N]; -static int g_ref_n; -static unsigned short g_ref_min[NPIX]; -static unsigned short g_ref_max[NPIX]; -static int g_ref_phase; /* 0 idle, 1 collecting init frames, - * 2 collecting post-FFC frames */ -static int g_comp; /* official NUC global offset (calibrated) */ -static int g_skip_ffc; /* frames to skip rendering after FFC(1) */ -static int g_rebase; /* 1 = re-align reference after FFC(1) */ +static unsigned short g_live[NPIX]; + +/* ---- official DDT state ---- */ +static int g_ep_count; +static int g_nsegs; +static int g_c5c; /* 0x4155c */ +static int g_c60; /* 0x41560 */ +static int g_dev24 = 5; /* window base */ +static int g_dev4c_shift = 3; /* 0x4794c */ +static int g_dev48; /* contrast -100..100 */ +static int g_dev4c; /* window scale -100..100 */ +static int g_shift; /* 0x11c = 12 */ +static int g_ep_temps[64]; /* T[] */ +static int g_blind_cnt[64]; +static short *g_ep_thr[64]; /* per endpoint (nsegs-1)*npix + c5c/2 */ +static unsigned short *g_ep_gain[64]; /* per endpoint nsegs*npix*2 */ +static unsigned int *g_ep_blind[64]; /* records: target,type,neigh[8] */ +static int g_ep_loaded[64]; +static int g_sel; /* selected endpoint */ +static int g_sel_prev; +static short g_thr_work[NPIX * 2 + 4096]; /* (nsegs-1)*npix + c5c/2 */ +static unsigned short g_gain_work[NPIX * 3 * 2]; /* nsegs*npix*2 */ +static unsigned int *g_blind_work; +static int g_blind_count; +static int g_tables_ready; + +/* ---- official frame state ---- */ +static int g_ffc_idx = -1; /* frame index in the FFC cycle (-1 = pre-init) */ +static int g_global_frames; /* frames since start */ +static int g_shutter; /* current frame shutter (device temp proxy) */ +static int g_shutter_at_ffc; /* shutter at last FFC(0) */ +static int g_has_ref; +static unsigned short g_ref[NPIX]; /* ref smoother output */ +static unsigned int g_ref_acc[NPIX]; /* u32 acc */ +static int g_ref_cnt; +static int g_f20[NPIX]; +static int g_fcount; +static int g_manual_ffc; + +/* ---- render state ---- */ +static unsigned short g_nuc[NPIX]; +static unsigned int g_hist1024[1024]; +static unsigned int g_cdf[1024]; +static unsigned char g_lut[1024]; +static int g_win_lo, g_win_hi; +static int g_stat_min, g_stat_max, g_stat_mean, g_stat_std; +static unsigned char g_gray160[NPIX]; +static unsigned char g_gray320[320 * 240]; +static int g_center_prev = 341; +static int g_center_ema = 341; +static int g_mean_prev; static double g_fps; -static unsigned g_fcount; -static int g_probe_x = -1, g_probe_y = -1; -static int g_max_x = -1, g_max_y = -1; -static unsigned char g_bad[NPIX]; -static int g_bad_done; -static int g_bad_count; -static int g_bad_order[NPIX][2]; /* fill order: bad pixels, edge-first */ -static int g_bad_order_len; static double g_max_temp = -100; static double g_center_temp = -100; +static int g_probe_x = -1, g_probe_y = -1; +static int g_max_x = -1, g_max_y = -1; static HWND g_hwnd; static HFONT g_font; -static volatile int g_manual_ffc; -static volatile int g_ema_reset; static int sendcmd(unsigned magic, unsigned param, int len) { unsigned char cmd[8] = {0}; @@ -184,485 +170,441 @@ static int sendcmd(unsigned magic, unsigned param, int len) { return 0; } -/* Official temperature conversion (recovered from live same-frame pairs): - * temp_mC = T2E[3*nuc - C], C ~= 5797 session-adaptive. - * Verified: mean |err| = 1.3 mC over 12 frames vs official MAG_GetTemperatureData_Raw. - */ -#define MAG_T2E_OFFSET 0x249f0 +/* ---------------- DDT loading (FUN_18000f130 v3 format) ---------------- */ -static int counts_to_temp_mc(int counts) { - int64_t x = (int64_t)counts * 3 - TEMP_C; - if (x < 0) x = 0; - /* binary search: largest i with T2E[i] <= x */ - int lo = 0, hi = 645; - while (lo < hi) { - int mid = (lo + hi + 1) >> 1; - if (mag160c_official_t2e[mid] <= x) lo = mid; - else hi = mid - 1; - } - int i = lo; - if (i > 644) i = 644; - int64_t diff = x - mag160c_official_t2e[i]; - int64_t t2 = mag160c_official_t2e[i + 1] - mag160c_official_t2e[i]; - int64_t slope = t2 ? (0x1000000 + t2 / 2) / t2 : 0; - int64_t temp = ((slope * diff) >> 12) + ((int64_t)i << 12) - MAG_T2E_OFFSET; - return (int)temp; /* millidegrees C */ -} - -static double counts_to_c(double v) { - return counts_to_temp_mc((int)v) / 1000.0; -} - -/* The official NUC table is captured from CoreSDKLib once for this sensor. - * gain.bin is laid out as three segment-major planes of (gain, offset) pairs; - * thr.bin contains the first two signed thresholds for every pixel. */ -static int load_official_nuc_tables(void) { - FILE *f = fopen("mag160c_official_nuc_gain.bin", "rb"); +static int load_ddt(const char *path) { + FILE *f = fopen(path, "rb"); if (!f) return 0; - if (fread(g_official_gain, 1, sizeof(g_official_gain), f) != - sizeof(g_official_gain)) { - fclose(f); - return 0; + unsigned char hdr[256]; + size_t got = fread(hdr, 1, 0x100, f); + if (got < 0x98) { fclose(f); return 0; } + unsigned magic = *(unsigned *)(hdr + 0); + unsigned w = *(unsigned *)(hdr + 4); + unsigned hh = *(unsigned *)(hdr + 8); + if (magic != 0x5aa50003 && magic != 0x5aa50004) { fclose(f); return 0; } + if (w != W || hh != H) { fclose(f); return 0; } + g_ep_count = *(int *)(hdr + 12); + g_nsegs = *(int *)(hdr + 16); + if (g_ep_count < 2 || g_ep_count > 64 || g_nsegs < 1 || g_nsegs > 8) { fclose(f); return 0; } + int v4 = (magic == 0x5aa50004); + g_dev24 = *(int *)(hdr + 20); /* v3: 0x47944 slot (power-of-2) */ + g_dev4c_shift = 3; + if (!v4) { + g_c5c = *(int *)(hdr + 28); + g_c60 = *(int *)(hdr + 32); + if (g_c5c > 0x10000) g_c5c = 0; + } else { + g_c5c = *(int *)(hdr + 0x2c + 0x120); + g_c60 = *(int *)(hdr + 0x30 + 0x120); + } + if (g_c5c & 1) g_c5c &= ~1; + /* read arrays */ + int arro = v4 ? 0x120 + 36 : 36; + if (fseek(f, arro, SEEK_SET)) { fclose(f); return 0; } + if (fread(g_ep_temps, 4, g_ep_count, f) != (size_t)g_ep_count) { fclose(f); return 0; } + unsigned tmp[64]; + if (fread(tmp, 4, g_ep_count, f) != (size_t)g_ep_count) { fclose(f); return 0; } + if (fread(tmp, 4, g_ep_count, f) != (size_t)g_ep_count) { fclose(f); return 0; } + if (fread(g_blind_cnt, 4, g_ep_count - 1, f) != (size_t)(g_ep_count - 1)) { fclose(f); return 0; } + g_blind_cnt[g_ep_count - 1] = 0; + for (int i = 0; i < g_ep_count; ++i) + if (g_blind_cnt[i] > 4096) g_blind_cnt[i] = 4096; + + size_t thr_sz = (size_t)(g_nsegs - 1) * NPIX + g_c5c / 2; + size_t gain_sz = (size_t)g_nsegs * NPIX * 2; + for (int e = 0; e < g_ep_count; ++e) { + g_ep_thr[e] = malloc(thr_sz * 2); + g_ep_gain[e] = malloc(gain_sz * 2); + g_ep_blind[e] = malloc((size_t)g_blind_cnt[e] * 40); + if (!g_ep_thr[e] || !g_ep_gain[e] || + (g_blind_cnt[e] && !g_ep_blind[e])) { fclose(f); return 0; } + if (fread(g_ep_thr[e], 2, thr_sz, f) != thr_sz) { fclose(f); return 0; } + if (fread(g_ep_gain[e], 2, gain_sz, f) != gain_sz) { fclose(f); return 0; } + g_ep_loaded[e] = 1; + } + /* blind records live AFTER all endpoint blocks, one block per endpoint + * (EP0..EPcount-2; EPcount-1 has none). The official file layout puts + * them at the end of the file, NOT inside each endpoint block. */ + for (int e = 0; e < g_ep_count - 1; ++e) { + if (g_blind_cnt[e] && + fread(g_ep_blind[e], 40, g_blind_cnt[e], f) != (size_t)g_blind_cnt[e]) { + fclose(f); return 0; + } } fclose(f); - f = fopen("mag160c_official_nuc_thr.bin", "rb"); - if (!f) return 0; - if (fread(g_official_thr, 1, sizeof(g_official_thr), f) != - sizeof(g_official_thr)) { - fclose(f); - return 0; - } - fclose(f); - g_official_nuc_ready = 1; + g_shift = 12; + g_tables_ready = 1; return 1; } -static int official_nuc_value(int i, int live, int ref) { - int d2 = (live - ref) >> 1; - int seg = 0; - for (int e = 0; e < OFFICIAL_NUC_THR_PER_PIXEL; ++e) { - if (d2 <= g_official_thr[i * OFFICIAL_NUC_THR_PER_PIXEL + e]) break; - seg++; +/* endpoint select (0x180016ae0): sel = #T[i+1] < shutter, capped epcount-2 */ +static int select_endpoint(int shutter) { + int sel = 0; + if (g_ep_count != 2) { + while (sel < g_ep_count - 2 && shutter > g_ep_temps[sel + 1]) sel++; } - int p = (seg * NPIX + i) * 2; - int64_t v = ((int64_t)g_official_gain[p] * d2) >> 12; - v += g_official_gain[p + 1]; - if (v < 0) v = 0; - if (v > 65535) v = 65535; - return (int)v; + return sel; } -static int official_nuc_median_for_bias(int bias) { - static unsigned hist[65536]; - memset(hist, 0, sizeof(hist)); - int n = 0; - for (int i = 0; i < NPIX; i += 4) { - int ref = (int)g_ref_mura[i] + bias; - if (ref < 0) ref = 0; - if (ref > 65535) ref = 65535; - hist[official_nuc_value(i, g_live[i], ref)]++; - n++; - } - unsigned acc = 0; - for (int k = 0; k < 65536; ++k) { - acc += hist[k]; - if (acc > (unsigned)n / 2) return k; - } - return NUC_CENTER; -} - -/* Select the scalar ref offset in the official output domain. This keeps - * the fixed per-pixel flat field while following global sensor drift without - * learning the spatial footprint of a moving object. */ -static int calibrate_official_ref_bias(void) { - int lo = -8000, hi = 8000; - for (int k = 0; k < 15; ++k) { - int mid = (lo + hi) >> 1; - if (official_nuc_median_for_bias(mid) > NUC_CENTER) - lo = mid + 1; - else - hi = mid; - } - return lo; -} - -/* ---------- bad pixel pipeline (Seek-style) ---------- */ - -/* 4-neighbour mean of frame at (x,y), skipping bad pixels; returns 0 when - * no valid neighbour exists. */ -static int neighbor_mean(const unsigned short *fr, const unsigned char *bad, - int x, int y) { - long sum = 0; - int n = 0; - if (x > 0 && !bad[y * W + x - 1]) { sum += fr[y * W + x - 1]; n++; } - if (x < W - 1 && !bad[y * W + x + 1]) { sum += fr[y * W + x + 1]; n++; } - if (y > 0 && !bad[(y - 1) * W + x]) { sum += fr[(y - 1) * W + x]; n++; } - if (y < H - 1 && !bad[(y + 1) * W + x]) { sum += fr[(y + 1) * W + x]; n++; } - return n ? (int)(sum / n) : 0; -} - -/* Topological fill: repeatedly replace bad pixels that have >=1 valid - * neighbour, so bad clusters are filled from the edge inward. The fill - * order is stored so the live frame can be corrected the same way. */ -static int has_valid_neighbor(const unsigned char *bad, int x, int y) { - return (x > 0 && !bad[y * W + x - 1]) || - (x < W - 1 && !bad[y * W + x + 1]) || - (y > 0 && !bad[(y - 1) * W + x]) || - (y < H - 1 && !bad[(y + 1) * W + x]); -} - -static void build_fill_order(unsigned char *bad, int (*order)[2], int *order_len) { - int remain = 0; - for (int i = 0; i < NPIX; ++i) if (bad[i]) remain++; - int len = 0; - while (remain > 0) { - int progress = 0; - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - if (!bad[y * W + x]) continue; - if (!has_valid_neighbor(bad, x, y)) continue; - order[len][0] = x; - order[len][1] = y; - len++; - bad[y * W + x] = 0; - remain--; - progress++; - } - } - if (!progress) { /* isolated bad with no valid neighbours: force */ - for (int y = 0; y < H && progress == 0; ++y) - for (int x = 0; x < W && progress == 0; ++x) - if (bad[y * W + x]) { - order[len][0] = x; - order[len][1] = y; - len++; - bad[y * W + x] = 0; - remain--; - progress++; - } - } - } - *order_len = len; -} - -/* correct frame in place: fill bad pixels in stored topological order. - * The bad mask is copied to a work buffer whose bits are cleared as pixels - * are filled, so cluster interiors can use already-filled neighbours. - * Returns the number of corrected pixels. */ -static int correct_frame(unsigned short *fr) { - static unsigned char work[NPIX]; - if (!g_bad_order_len) return 0; - memcpy(work, g_bad, sizeof(work)); - int n = 0; - for (int i = 0; i < g_bad_order_len; ++i) { - int x = g_bad_order[i][0], y = g_bad_order[i][1]; - int v = neighbor_mean(fr, work, x, y); - if (v > 0) { - fr[y * W + x] = (unsigned short)v; - work[y * W + x] = 0; - n++; - } - } - return n; -} - -static void correct_zero_pixels(unsigned short *fr) { - unsigned char bad[NPIX]; - int any = 0; - for (int i = 0; i < NPIX; ++i) { - bad[i] = (fr[i] == 0); - if (bad[i]) any = 1; - } - if (!any) return; - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - int i = y * W + x; - if (!bad[i]) continue; - int v = neighbor_mean(fr, bad, x, y); - if (v > 0) { - fr[i] = (unsigned short)v; - bad[i] = 0; - } - } - } -} - -/* ---------- color LUTs ---------- */ - -/* ironbow anchors (FLIR-style), value 0..255 */ -/* ---------- render ---------- */ - -/* decode + correct the live frame into g_live (shared with the reference - * model so both use the same corrected values). Pixels start at data[0] - * of the second bulk read (probe-verified: read1 = 28B header only). */ -static void decode_live(const unsigned char *data) { - for (int i = 0; i < NPIX; ++i) - g_live[i] = (unsigned short)(data[i * 2] | ((unsigned)data[i * 2 + 1] << 8)); - if (g_bad_done) correct_frame(g_live); - correct_zero_pixels(g_live); -} - -/* Official display pipeline (pixel-verified vs CoreSDKLib): - * live -> 3x3 weighted filter (official sm=1: no temporal averaging) - * ref -> same 3x3 filter at capture (so the mura patterns match) - * nuc[i] = clamp((live_f[i] - ref_f[i]) * NUC_GAIN + comp, 0, 65535) - * lo = max(frame_min, frame_mean - WIN_HALF) - * hi = min(frame_max, frame_mean + WIN_HALF) - * idx = (nuc[i] - lo) * (0xFFC00000 / (hi - lo)) >> 22 (u32 math) - * gray = LUT1024[idx]; rgb = palette256[gray] (BGR) - */ - -/* official-style temporal EMA: acc = (acc+live)/2; |d|>thr means scene - * change (object), take it as-is to avoid ghost trails */ -static void temporal_ema(unsigned short *acc, const unsigned short *live, - int n, int thr) { +/* Q12 interp (0x180016dd0 / 0x180016f10) */ +static void interp_i16(const short *a, const short *b, short *dst, int n, int t) { for (int i = 0; i < n; ++i) { - int d = (int)live[i] - (int)acc[i]; - if (d > thr || d < -thr) { - acc[i] = live[i]; - } else if (d != 0) { - acc[i] = (unsigned short)(acc[i] + (d >> 1)); - } + dst[i] = (short)((int)a[i] + (((int)b[i] - (int)a[i]) * t >> 12)); + } +} +static void interp_u16(const unsigned short *a, const unsigned short *b, + unsigned short *dst, int n, int t) { + for (int i = 0; i < n; ++i) { + dst[i] = (unsigned short)((int)a[i] + (((int)b[i] - (int)a[i]) * t >> 12)); } } -static int neighbor_mean_u16(const unsigned short *fr, const unsigned char *mask, - int x, int y) { - int sum = 0, n = 0; - for (int dy = -1; dy <= 1; ++dy) { - int yy = y + dy; - if (yy < 0 || yy >= H) continue; - for (int dx = -1; dx <= 1; ++dx) { - int xx = x + dx; - if (xx < 0 || xx >= W || (dx == 0 && dy == 0)) continue; - int j = yy * W + xx; - if (mask && mask[j]) continue; - sum += fr[j]; - n++; - } - } - return n ? (sum / n) : 0; +static void rebuild_tables(int shutter) { + g_sel = select_endpoint(shutter); + int sel = g_sel; + int t = ((shutter - g_ep_temps[sel]) << 12) / (g_ep_temps[sel + 1] - g_ep_temps[sel]); + if (t > 0x3fff) t = 0x3fff; + if (t < -0x3fff) t = -0x3fff; + interp_i16(g_ep_thr[sel], g_ep_thr[sel + 1], g_thr_work, + (g_nsegs - 1) * NPIX + g_c5c / 2, t); + interp_u16(g_ep_gain[sel], g_ep_gain[sel + 1], g_gain_work, + g_nsegs * NPIX * 2, t); + g_blind_work = g_ep_blind[sel]; + g_blind_count = g_blind_cnt[sel]; } -static void deghost_nuc(unsigned short *fr, unsigned mean) { - unsigned char mask[NPIX]; - unsigned char workmask[NPIX]; - unsigned char curmask[NPIX]; - int cur_hot_n = 0, ghost_n = 0, repl_n = 0; - unsigned long long lsum = 0; - for (int i = 0; i < NPIX; ++i) lsum += g_live[i]; - unsigned live_mean = (unsigned)(lsum / NPIX); - unsigned live_hot_thr = live_mean + 3000; - unsigned hot_thr = mean + 180; - unsigned ghost_thr = mean + 35; - (void)hot_thr; - (void)ghost_thr; - memset(curmask, 0, sizeof(curmask)); - for (int i = 0; i < NPIX; ++i) { - int cur_hot = g_live[i] > live_hot_thr; - int motion_cur = 0; - if (g_disp_prev_ready) { - int dm = (int)g_live[i] - (int)g_disp_prev_live[i]; - if (dm < 0) dm = -dm; - motion_cur = dm > 180; - } - if (cur_hot) cur_hot_n++; - if (motion_cur) g_motion_hist[i] = 60; - else if (g_motion_hist[i]) g_motion_hist[i]--; - if (cur_hot || motion_cur) curmask[i] = 1; - } - /* dilate current-hot mask one pixel so object edges/trails are covered */ - memset(g_disp_hot2, 0, sizeof(g_disp_hot2)); - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - int i = y * W + x; - if (!curmask[i]) continue; - for (int dy = -1; dy <= 1; ++dy) { - int yy = y + dy; - if (yy < 0 || yy >= H) continue; - for (int dx = -1; dx <= 1; ++dx) { - int xx = x + dx; - if (xx < 0 || xx >= W) continue; - g_disp_hot2[yy * W + xx] = 1; - } - } - } - } - for (int i = 0; i < NPIX; ++i) { - int cur_hot = g_disp_hot2[i] != 0; - if (cur_hot) g_disp_hot[i] = 60; - else if (g_disp_hot[i]) g_disp_hot[i]--; - mask[i] = cur_hot || ((g_disp_hot[i] || g_motion_hist[i]) && !cur_hot); - if ((g_disp_hot[i] || g_motion_hist[i]) && !cur_hot) ghost_n++; - } - memcpy(workmask, mask, sizeof(workmask)); - for (int ghost_fill_pass = 0; ghost_fill_pass < 3; ++ghost_fill_pass) { - int pass_n = 0; - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - int i = y * W + x; - if (!workmask[i] || g_disp_hot2[i]) continue; - int bg = neighbor_mean_u16(fr, workmask, x, y); - if (bg > 0) { - fr[i] = (unsigned short)bg; - workmask[i] = 0; - repl_n++; - pass_n++; - } - } - } - if (!pass_n) break; - } - g_disp_cur_hot = cur_hot_n; - g_disp_ghost = ghost_n; - g_disp_repl = repl_n; - memcpy(g_disp_prev_live, g_live, sizeof(g_disp_prev_live)); - g_disp_prev_ready = 1; -} - -/* official-style 3x3 weighted average (center 4, cross 2, corners 1, /16) */ -static void filter3x3(const unsigned short *src, unsigned short *dst, - int w, int h) { - for (int y = 0; y < h; ++y) { - for (int x = 0; x < w; ++x) { - long s = 0; - int n = 0; - for (int dy = -1; dy <= 1; ++dy) { - for (int dx = -1; dx <= 1; ++dx) { - int xx = x + dx, yy = y + dy; - if (xx < 0 || xx >= w || yy < 0 || yy >= h) continue; - int wgt = (dx == 0 && dy == 0) ? 4 : ((dx == 0 || dy == 0) ? 2 : 1); - s += (long)src[yy * w + xx] * wgt; - n += wgt; - } - } - dst[y * w + x] = (unsigned short)(s / n); - } - } -} - -static void render(unsigned mn, unsigned mx) { - static unsigned short nuc[NPIX]; /* NUC-corrected (official form) */ - unsigned short *nuc_f = nuc; - static FILE *dbg; - unsigned char *px = g_bmp + 54; - unsigned hotv = 0; - int hot = 0; - unsigned csum = 0; - unsigned long long ssum = 0; - unsigned fmin = 0xffff, fmax = 0; - (void)mn; (void)mx; - - if (g_has_reference) { - if (g_official_nuc_ready && g_ref_mura_ready) { - for (int i = 0; i < NPIX; ++i) { - int ref = (int)g_ref_mura[i] + g_official_ref_bias; - if (ref < 0) ref = 0; - if (ref > 65535) ref = 65535; - nuc[i] = (unsigned short)official_nuc_value(i, g_live[i], ref); - } - } else { - for (int i = 0; i < NPIX; ++i) { - int64_t v = ((int64_t)g_live[i] - g_reference[i]) * NUC_GAIN / 100 + g_comp; - if (v < 0) v = 0; - if (v > 65535) v = 65535; - nuc[i] = (unsigned short)v; - } - } +/* ---------------- ref smoother (FUN_1800011a0 mode=N) ---------------- */ +/* returns 1 when the target count is reached */ +static int ref_push(const unsigned short *frame) { + if (g_ref_cnt == 0) { + for (int i = 0; i < NPIX; ++i) g_ref_acc[i] = frame[i]; } else { - for (int i = 0; i < NPIX; ++i) nuc_f[i] = 0; + for (int i = 0; i < NPIX; ++i) g_ref_acc[i] += frame[i]; } - for (int i = 0; i < NPIX; ++i) { - unsigned v = nuc_f[i]; - ssum += v; - if (v < fmin) fmin = v; - if (v > fmax) fmax = v; + g_ref_cnt++; + if (g_ref_cnt >= OFF_N0) { + long long accsum = 0; + for (int i = 0; i < NPIX; ++i) accsum += g_ref_acc[i]; + long long fsum = 0; + for (int i = 0; i < NPIX; ++i) fsum += frame[i]; + FILE *f2 = fopen("demo3_ref.txt", "a"); + if (f2) { fprintf(f2, "complete: acc_mean=%.0f last_frame_mean=%.0f cnt=%d acc0=%u f0=%u acc1=%u f1=%u\n", + (double)accsum / NPIX, (double)fsum / NPIX, g_ref_cnt, + g_ref_acc[0], frame[0], g_ref_acc[1], frame[1]); fclose(f2); } + for (int i = 0; i < NPIX; ++i) + g_ref[i] = (unsigned short)(g_ref_acc[i] >> 2); + g_ref_cnt = 0; + g_has_ref = 1; + return 1; } - unsigned mean = (unsigned)(ssum / NPIX); - /* Display-layer deghost experiments were too aggressive for low-contrast - * motion and could hide real scene detail. Keep this disabled; the - * stable fixes are SBNUC, no dynamic badmap, zero-pixel repair, and - * saturated color mapping. */ - /* deghost_nuc(nuc_f, mean); */ - ssum = 0; - fmin = 0xffff; - fmax = 0; - for (int i = 0; i < NPIX; ++i) { - unsigned v = nuc_f[i]; - ssum += v; - if (v < fmin) fmin = v; - if (v > fmax) fmax = v; - } - mean = (unsigned)(ssum / NPIX); + return 0; +} - /* adaptive window: the official pipeline (0x4202c/0x42030) runs a - * minimum span of 624 counts on a static scene and widens it when a - * hot object is present (measured 1381 with a hand). Follow the - * scene percentiles P2..P98 with that minimum span so a hand widens - * the window instead of saturating to a broken image. */ - static unsigned short hist[65536]; - memset(hist, 0, sizeof(hist)); - for (int i = 0; i < NPIX; ++i) hist[nuc_f[i]]++; - unsigned long long acc = 0; - unsigned p2 = 0, p98 = 0, p98t = (unsigned)((unsigned long long)NPIX * 98 / 100); - for (unsigned k = 0; k < 65536; ++k) { - acc += hist[k]; - if (p2 == 0 && acc >= (unsigned long long)NPIX * 2 / 100) p2 = k; - if (acc >= p98t) { p98 = k; break; } - } - unsigned span = p98 - p2; - unsigned half = WIN_HALF; - if (span > half * 2) half = span / 2; - unsigned lo = mean > half ? mean - half : 0; - unsigned hi = mean + half; - if (hi > 65535) hi = 65535; - if (lo > fmax) lo = fmax; - if (hi < fmin) hi = fmin; - if (hi <= lo) { lo = fmin; hi = fmax; if (hi <= lo) hi = lo + 1; } - unsigned S = 0xFFC00000u / (hi - lo); +/* ---------------- NUC + blind (0x180017200 + 0x180017330) ---------------- */ - /* diagnostics: one line per frame */ - if (!dbg) dbg = fopen("demo3_diag.txt", "w"); - if (dbg) { - unsigned long long rsum = 0, lsum = 0; - unsigned rmin = 0xffff, rmax = 0, lmin = 0xffff, lmax = 0; - long long dsum = 0; unsigned long long d2sum = 0; - int nz = 0; - for (int i = 0; i < NPIX; ++i) { - unsigned r = g_reference[i], l = g_live[i]; - rsum += r; lsum += l; - if (r < rmin) rmin = r; if (r > rmax) rmax = r; - if (l < lmin) lmin = l; if (l > lmax) lmax = l; - long long d = (long long)l - r; - dsum += d; d2sum += (unsigned long long)(d * d); - if (l == 0 || r == 0) nz++; +static void official_nuc_and_blind(const unsigned short *f20, unsigned short *out) { + const short *thr = g_thr_work; + const unsigned short *gg = g_gain_work; + for (int i = 0; i < NPIX; ++i) { + int d2 = ((int)f20[i] - (int)g_ref[i]) >> 1; + int seg = 0; + if (d2 > thr[i * 2]) { + seg = 1; + if (d2 > thr[i * 2 + 1]) seg = 2; } - double dmean = (double)dsum / NPIX; - double dstd = sqrt((double)d2sum / NPIX - dmean * dmean); - fprintf(dbg, "ph=%d ref=%d bad=%d comp=%d ref=%u..%u(%.0f) live=%u..%u(%.0f) " - "d=(%.0f+-%.0f) mura_d=(%.0f+-%.0f) sb_med=%d sb_acc=%d/%d shift=%d gmin=%d " - "nuc=%u..%u(%.0f) win=[%u,%u] disp=%d/%d/%d nz=%d\n", - g_ref_phase, g_has_reference, g_bad_done, g_comp, - rmin, rmax, (double)rsum / NPIX, lmin, lmax, (double)lsum / NPIX, - dmean, dstd, g_sb_mura_dmean, g_sb_mura_dstd, - g_sb_med, g_sb_accept, NPIX, g_sb_shift, g_sb_gmin, - fmin, fmax, (double)ssum / NPIX, lo, hi, - g_disp_cur_hot, g_disp_ghost, g_disp_repl, nz); - fflush(dbg); + const unsigned short *p = gg + (seg * NPIX + i) * 2; + int v = (int)p[1] + ((int)p[0] * d2 >> 12); + if (v < 0) v = 0; + if (v > 65535) v = 65535; + out[i] = (unsigned short)v; + } + /* blind compensation: fixed records */ + if (g_blind_work && g_blind_count > 0) { + for (int r = 0; r < g_blind_count; ++r) { + const unsigned int *rec = g_blind_work + r * 10; + unsigned target = rec[0]; + unsigned typ = rec[1]; + const unsigned int *ng = rec + 2; + if (target >= NPIX || typ < 3 || typ > 8) continue; + long sum = 0; + for (unsigned j = 0; j < typ; ++j) sum += out[ng[j]]; + if (typ == 8) out[target] = (unsigned short)(sum >> 3); + else if (typ == 4) out[target] = (unsigned short)(sum >> 2); + else out[target] = (unsigned short)(sum / typ); + } + } +} + +/* ---------------- stats + window (0x180010780 + 0x1800109c0) ---------------- */ + +static void official_stats_window(const unsigned short *nuc) { + unsigned long long ssum = 0, s2sum = 0; + unsigned mn = 0xffff, mx = 0; + int mi = 0, xi = 0; + for (int i = 0; i < NPIX; ++i) { + unsigned v = nuc[i]; + ssum += v; + s2sum += (unsigned long long)v * v; + if (v < mn) { mn = v; mi = i; } + if (v > mx) { mx = v; xi = i; } + } + g_stat_min = (int)mn; + g_stat_max = (int)mx; + g_stat_mean = (int)(ssum / NPIX); + double dmean = (double)ssum / NPIX; + double var = (double)s2sum / NPIX - dmean * dmean; + g_stat_std = (int)sqrt(var > 0 ? var : 0); + (void)mi; (void)xi; + /* window half (FUN_1800108a0): base = max(0x80, dev24*1000>>shift) */ + int base = (g_dev24 * 1000) >> g_dev4c_shift; + if (base < 0x80) base = 0x80; + /* dev4c scale adjust (magic: half = base + base*dev4c*k) */ + if (g_dev4c != 0) { + int c = g_dev4c < 0 ? -0x51eb851f : -0x1b4e81b5; + long long m = (long long)c * (long long)(base * g_dev4c) >> 32; + base += (m >> 4) - (m >> 31); + } + int half = base >> 1; + /* temperature-dependent growth (only 1-2 endpoint DDTs; this unit has 6) */ + if (g_tables_ready && g_ep_count <= 2) { + int te = g_ep_temps[g_ep_count - 1] + g_ep_temps[0] / 2; + (void)te; + } + int lo = g_stat_mean - half; + if ((unsigned)lo > (unsigned)g_stat_min) lo = g_stat_min; + if (lo < 0) lo = 0; + int hi = g_stat_mean + half; + if ((unsigned)hi < (unsigned)g_stat_max) hi = g_stat_max; + if (hi > 65535) hi = 65535; + g_win_lo = lo; + g_win_hi = hi; + if (g_win_hi <= g_win_lo) g_win_hi = g_win_lo + 1; +} + +/* ---------------- LUT1024 rebuild (FUN_180011950 + FUN_180011ee0) ------- */ + +static void lut_rebuild(const unsigned short *nuc) { + /* 1. 1024-bin histogram (FUN_180011950 binning, u32 arithmetic) */ + int span = g_win_hi - g_win_lo; + unsigned S = 0xFFC00000u / (unsigned)span; + memset(g_hist1024, 0, sizeof(g_hist1024)); + for (int i = 0; i < NPIX; ++i) { + unsigned idx = ((unsigned)nuc[i] - (unsigned)g_win_lo) * S >> 0x16; + if (idx < 1024) g_hist1024[idx]++; + } + /* 2. 3-tap in-place smoothing (bins 0..1022) */ + for (int i = 0; i < 1023; i += 3) { + g_hist1024[i] = (g_hist1024[i + 1] + g_hist1024[i]) >> 1; + g_hist1024[i + 1] = (g_hist1024[i + 2] + g_hist1024[i + 1]) >> 1; + g_hist1024[i + 2] = (g_hist1024[i + 3] + g_hist1024[i + 2]) >> 1; + } + unsigned total = 0; + for (int i = 0; i < 1024; ++i) total += g_hist1024[i]; + unsigned u21 = total >> 12; + if (u21 == 0) u21 = 1; + int lres = ((g_stat_mean - g_win_lo) * 0x3ff) / span; + if (lres < 0) lres = 0; + if (lres > 1023) lres = 1023; + + /* 3. CDF: down from lres, up from lres+1 */ + unsigned u11 = 0, u13 = 0; + for (int k = lres; k >= 0; --k) { + u11 += g_hist1024[k]; + if (u21 <= u11) { u13 += 0x100; u11 = 0; } + g_cdf[k] = ((0x10000 / u21) * u11 >> 8) + u13; + } + u11 = 0; u13 = 0; + for (int k = lres + 1; k < 1024; ++k) { + u11 += g_hist1024[k]; + if (u11 < u21 * 8) { + if (u21 <= u11) { u13 += 0x100; u11 = 0; } + } else { + u13 += 0x200; + u11 = 0; + } + g_cdf[k] = ((0x10000 / u21) * u11 >> 8) + u13; } + /* 4. contrast curve + center binary search + LUT fill */ + static unsigned curve[1024]; + for (int k = 0; k < 1024; ++k) { + unsigned v = (0x300000u + (unsigned)k * 0x800) >> 0xd; + curve[k] = v ? v : 1; + } + int iv6 = (g_dev48 * 0x155) / 200; + int iv7 = iv6 + 0x155; + int iv26 = iv7; + if (iv6 + 0x156 > 0x331) iv26 = 0x330; + int iv10 = 0x332; + int b3 = 1; + unsigned iv22 = 0xFFC00000u / (unsigned)span; + while (iv26 + 1 < iv10) { + iv7 = (iv10 + iv26) / 2; + if (b3) { b3 = 0; iv7 = iv26; } + /* fill LUT for center iv7 */ + unsigned u5 = g_cdf[0]; + if (u5 != 0) { + unsigned u21v = (unsigned)(iv7 * 0x10 + 0x10); + for (int k = lres; k >= 0; --k) { + unsigned u12 = (unsigned)(iv7 * 0x10 + 0x10) - + (g_cdf[k] * ((iv7 * 0x40000u + 0x40000u) / u5) >> 0xe); + if (curve[k] < u21v - u12) u12 = u21v - curve[k]; + g_lut[k] = (unsigned char)(u12 >> 6); + u21v = u12; + } + } + u5 = g_cdf[1023]; + if (u5 != 0) { + unsigned u21v = (unsigned)(iv7 * 0x10); + for (int k = lres + 1; k < 1024; ++k) { + unsigned u12 = (g_cdf[k] * ((0xffc0000u - iv7 * 0x40000u) / u5) >> 0xe) + + (unsigned)(iv7 * 0x10); + if (curve[k] < u12 - u21v) u12 = curve[k] + u21v; + g_lut[k] = (unsigned char)(u12 >> 6); + u21v = u12; + } + } + int iv4 = iv7; + unsigned bfmin = ((unsigned)g_stat_min - (unsigned)g_win_lo) * iv22 >> 0x16; + unsigned bfmax = ((unsigned)g_stat_max - (unsigned)g_win_lo) * iv22 >> 0x16; + if (bfmin < 1024 && bfmax < 1024 && + g_lut[bfmin] == 0 && g_lut[bfmax] != 0xff) { + iv4 = iv10; + iv26 = iv7; + } + iv10 = iv4; + } + /* 5. temporal center smoothing + refill */ + int dm = g_stat_mean - g_mean_prev; + if (dm < 0) dm = -dm; + g_mean_prev = g_stat_mean; + int iv18 = iv10 + ((dm & 0xffff) << g_dev4c_shift) * 2 + g_stat_mean; + if (iv18 < 0x9c4) { + if (iv18 < 100) iv18 = 100; + iv7 = (iv18 * iv7 + g_center_prev * 500) / (iv18 + 500); + g_center_prev = iv7; + unsigned u5 = g_cdf[0]; + if (u5 != 0) { + unsigned u21v = (unsigned)(iv7 * 0x10 + 0x10); + for (int k = lres; k >= 0; --k) { + unsigned u12 = (unsigned)(iv7 * 0x10 + 0x10) - + (g_cdf[k] * ((iv7 * 0x40000u + 0x40000u) / u5) >> 0xe); + if (curve[k] < u21v - u12) u12 = u21v - curve[k]; + g_lut[k] = (unsigned char)(u12 >> 6); + u21v = u12; + } + } + u5 = g_cdf[1023]; + if (u5 != 0) { + unsigned u21v = (unsigned)(iv7 * 0x10); + for (int k = lres + 1; k < 1024; ++k) { + unsigned u12 = (g_cdf[k] * ((0xffc0000u - iv7 * 0x40000u) / u5) >> 0xe) + + (unsigned)(iv7 * 0x10); + if (curve[k] < u12 - u21v) u12 = curve[k] + u21v; + g_lut[k] = (unsigned char)(u12 >> 6); + u21v = u12; + } + } + } +} + +/* ---------------- gray + 2x upscale (FUN_180019740) ---------------- */ + +static void gray_map(const unsigned short *nuc) { + unsigned S = 0xFFC00000u / (unsigned)(g_win_hi - g_win_lo); + for (int i = 0; i < NPIX; ++i) { + unsigned v = nuc[i]; + unsigned idx; + if (v <= (unsigned)g_win_lo) idx = 0; + else if (v >= (unsigned)g_win_hi) idx = 1023; + else idx = (v - (unsigned)g_win_lo) * S >> 0x16; + if (idx > 1023) idx = 1023; + g_gray160[i] = g_lut[idx]; + } +} + +static void upscale2x(void) { + const unsigned char *s = g_gray160; + unsigned char *o = g_gray320; + int W2 = W * 2; + for (int y = 0; y < H - 1; ++y) { + const unsigned char *r0 = s + y * W; + const unsigned char *r1 = r0 + W; + unsigned char *o0 = o + y * W2 * 2; + unsigned char *o1 = o0 + W2; + int x; + for (x = 0; x < W - 2; x += 2) { + unsigned a0 = r0[x], a1 = r0[x + 1], a2 = r0[x + 2]; + unsigned b0 = r1[x], b1 = r1[x + 1], b2 = r1[x + 2]; + int c = x * 2; + o0[c] = (unsigned char)a0; + o0[c + 1] = (unsigned char)((a0 + a1) >> 1); + o0[c + 2] = (unsigned char)a1; + o0[c + 3] = (unsigned char)((a2 + a1) >> 1); + o1[c] = (unsigned char)((b0 + a0) >> 1); + o1[c + 1] = (unsigned char)((b0 + b1 + a0 + a1) >> 2); + o1[c + 2] = (unsigned char)((b1 + a1) >> 1); + o1[c + 3] = (unsigned char)((b2 + b1 + a2 + a1) >> 2); + } + /* edge pair x = W-2 */ + unsigned a0 = r0[W - 2], a1 = r0[W - 1]; + unsigned b0 = r1[W - 2], b1 = r1[W - 1]; + int c = (W - 2) * 2; + o0[c] = (unsigned char)a0; + o0[c + 1] = (unsigned char)((a1 + a0) >> 1); + o1[c] = (unsigned char)((b0 + a0) >> 1); + o1[c + 1] = (unsigned char)((a1 + b1 + b0 + a0) >> 2); + /* last column */ + c = (W - 1) * 2; + o0[c] = (unsigned char)a1; + o0[c + 1] = (unsigned char)((3 * a1 >> 2) + (a0 >> 2)); + o1[c] = (unsigned char)((b1 + a1) >> 1); + o1[c + 1] = (unsigned char)((3 * (b1 + a1) + b0 + a0) >> 3); + } + /* bottom row */ + { + int y = H - 1; + const unsigned char *r0 = s + y * W; + const unsigned char *r1 = r0 - W; + unsigned char *o0 = o + y * W2 * 2; + unsigned char *o1 = o0 + W2; + int x; + for (x = 0; x < W - 2; x += 2) { + unsigned a0 = r0[x], a1 = r0[x + 1], a2 = r0[x + 2]; + unsigned u0 = r1[x], u1 = r1[x + 1], u2 = r1[x + 2]; + int c = x * 2; + o0[c] = (unsigned char)a0; + o0[c + 1] = (unsigned char)((a0 + a1) >> 1); + o0[c + 2] = (unsigned char)a1; + o0[c + 3] = (unsigned char)((a2 + a1) >> 1); + o1[c] = (unsigned char)((3 * a0 >> 2) + (u0 >> 2)); + o1[c + 1] = (unsigned char)((3 * (a0 + a1) + u0 + u1) >> 3); + o1[c + 2] = (unsigned char)((3 * a1 >> 2) + (u1 >> 2)); + o1[c + 3] = (unsigned char)((3 * (a2 + a1) + u2 + u1) >> 3); + } + unsigned a0 = r0[W - 2], a1 = r0[W - 1]; + unsigned u0 = r1[W - 2], u1 = r1[W - 1]; + int c = (W - 2) * 2; + o0[c] = (unsigned char)a0; + o0[c + 1] = (unsigned char)((a1 + a0) >> 1); + o1[c] = (unsigned char)((3 * a0 >> 2) + (u0 >> 2)); + o1[c + 1] = (unsigned char)((3 * (a0 + a1) + u0 + u1) >> 3); + c = (W - 1) * 2; + o0[c] = (unsigned char)a1; + o0[c + 1] = (unsigned char)((3 * a1 + a0) >> 2); + o1[c] = (unsigned char)((3 * a1 + u1) >> 2); + o1[c + 1] = (unsigned char)((o0[c + 1] + o1[c] + a1) / 3); + } +} + +/* ---------------- palette + BMP ---------------- */ + +static void render_bmp(void) { + unsigned char *px = g_bmp + 54; for (int y = 0; y < H; ++y) { for (int x = 0; x < W; ++x) { int i = y * W + x; - unsigned v = nuc_f[i]; - if (x >= 70 && x < 90 && y >= 50 && y < 70) csum += v; - if (v > hotv && v != 0) { hotv = v; hot = i; } - unsigned idx; - if (v <= lo) idx = 0; - else if (v >= hi) idx = 1023; - else idx = ((v - lo) * S) >> 22; /* u32, truncates like official */ - if (idx > 1023) idx = 1023; - unsigned char gv = mag160c_official_lut1024[idx]; + unsigned char gv = g_gray160[i]; unsigned char r = mag160c_official_palette256[gv][2]; unsigned char g = mag160c_official_palette256[gv][1]; unsigned char b = mag160c_official_palette256[gv][0]; @@ -670,10 +612,7 @@ static void render(unsigned mn, unsigned mx) { px[dst + 0] = b; px[dst + 1] = g; px[dst + 2] = r; } } - if (hot >= 0) { - g_max_x = hot % W; - g_max_y = hot / W; - g_max_temp = counts_to_c((double)hotv); + if (g_max_x >= 0) { int mx2 = g_max_x, my2 = 119 - g_max_y; for (int k = -2; k <= 2; ++k) { if (mx2 + k >= 0 && mx2 + k < W) { @@ -686,7 +625,6 @@ static void render(unsigned mn, unsigned mx) { } } } - g_center_temp = counts_to_c((double)(csum / 400)); } static LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { @@ -713,8 +651,7 @@ static LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { snprintf(line, sizeof(line), "fps : %.1f", g_fps); TextOutA(dc, 670, y, line, (int)strlen(line)); y += 24; if (g_probe_x >= 0) { - int v = g_live[g_probe_y * W + g_probe_x]; - double t = counts_to_c((double)v); + double t = counts_to_c((double)g_live[g_probe_y * W + g_probe_x]); snprintf(line, sizeof(line), "probe : (%d,%d) %.2f C", g_probe_x, g_probe_y, t); TextOutA(dc, 670, y, line, (int)strlen(line)); y += 24; } @@ -724,12 +661,11 @@ static LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { } snprintf(line, sizeof(line), "center: %.2f C", g_center_temp); TextOutA(dc, 670, y, line, (int)strlen(line)); y += 24; - snprintf(line, sizeof(line), "pipeline: official (NUCx3 + LUT + palette)"); + snprintf(line, sizeof(line), "pipeline: official full (DDT+NUC+blind+LUT+2x)"); + TextOutA(dc, 670, y, line, (int)strlen(line)); y += 24; + snprintf(line, sizeof(line), "shutter: %d sel: %d win: [%d,%d]", g_shutter, g_sel, + g_win_lo, g_win_hi); TextOutA(dc, 670, y, line, (int)strlen(line)); y += 24; - if (g_bad_done) { - snprintf(line, sizeof(line), "badpx : %d (fill %d)", g_bad_count, g_bad_order_len); - TextOutA(dc, 670, y, line, (int)strlen(line)); y += 24; - } EndPaint(hw, &ps); break; } @@ -744,12 +680,9 @@ static LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { } case WM_COMMAND: switch (LOWORD(wp)) { - case 1001: /* FFC - queue a manual pair through the scheduler; - * the main loop issues FFC(0) after the next complete - * frame and FFC(1) FFC_GAP frames later (official - * cadence). Non-blocking: no Sleep() in the UI thread. */ + case 1001: g_manual_ffc = 1; - SetWindowTextA(hw, "FFC queued (0 -> 1)"); + SetWindowTextA(hw, "FFC queued"); break; case 1002: { char path[MAX_PATH]; @@ -762,24 +695,9 @@ static LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { SetWindowTextA(hw, "saved"); break; } - case 1004: /* recenter global bias without absorbing the scene */ - if (g_official_nuc_ready && g_ref_mura_ready) { - g_official_ref_bias = calibrate_official_ref_bias(); - g_sb_shift = g_official_ref_bias; - SetWindowTextA(hw, "bias recentered (flat field kept)"); - } else { - /* Fallback path for builds without the captured official - * table: preserve the historical manual-reference action. */ - for (int i = 0; i < NPIX; ++i) - g_ref_mura[i] = g_live[i]; - g_ref_mura_min = 0xffff; - for (int i = 0; i < NPIX; ++i) - if (g_ref_mura[i] < g_ref_mura_min) g_ref_mura_min = g_ref_mura[i]; - g_ref_mura_ready = 1; - g_has_reference = 1; - g_comp = (int)NUC_CENTER; - SetWindowTextA(hw, "reference set (fallback)"); - } + case 1004: /* recenter = trigger FFC pair (official ref refresh) */ + g_manual_ffc = 1; + SetWindowTextA(hw, "FFC queued"); break; case 1005: g_probe_x = -1; @@ -802,11 +720,17 @@ static LRESULT CALLBACK wndproc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { (void)prev; (void)cmd; (void)show; libusb_init(&g_ctx); - load_official_nuc_tables(); + if (!load_ddt(OFF_DDT)) { + char alt[MAX_PATH]; + snprintf(alt, sizeof(alt), "%s\\Core160043865", getenv("TEMP") ? getenv("TEMP") : "."); + if (!load_ddt(alt)) { + MessageBoxA(NULL, "DDT calibration file not found", "MAG160C Demo", MB_ICONERROR); + return 1; + } + } int ok = 0; for (int attempt = 0; attempt < 4 && !ok; ++attempt) { if (attempt > 0) { - /* previous session may have left the unit streaming: reset it */ if (g_h) libusb_reset_device(g_h); if (g_h) { libusb_close(g_h); g_h = NULL; } Sleep(2500); @@ -842,11 +766,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { WNDCLASSA wc = {0}; wc.lpfnWndProc = wndproc; wc.hInstance = inst; - wc.lpszClassName = "Mag160cDemoFinal"; + wc.lpszClassName = "Mag160cDemoV5"; wc.hCursor = LoadCursor(NULL, IDC_CROSS); wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); RegisterClassA(&wc); - g_hwnd = CreateWindowA("Mag160cDemoFinal", "MAG160C Thermal Demo v3", + g_hwnd = CreateWindowA("Mag160cDemoV5", "MAG160C Thermal Demo v5 (official pipeline)", WS_OVERLAPPEDWINDOW, 60, 40, 1000, 620, NULL, NULL, inst, NULL); g_font = CreateFontA(18, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, @@ -855,8 +779,8 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { 670, 160, 120, 32, g_hwnd, (HMENU)1001, inst, NULL); CreateWindowA("BUTTON", "Save BMP", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 800, 160, 120, 32, g_hwnd, (HMENU)1002, inst, NULL); - CreateWindowA("BUTTON", "Recenter bias", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, - 670, 200, 140, 32, g_hwnd, (HMENU)1004, inst, NULL); + CreateWindowA("BUTTON", "FFC", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, + 670, 200, 120, 32, g_hwnd, (HMENU)1004, inst, NULL); CreateWindowA("BUTTON", "Clear probe", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 820, 200, 100, 32, g_hwnd, (HMENU)1005, inst, NULL); @@ -869,19 +793,22 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { g_bmp[26] = 1; g_bmp[28] = 24; ShowWindow(g_hwnd, SW_SHOW); - SetWindowTextA(g_hwnd, "starting - auto reference in ~10s"); + SetWindowTextA(g_hwnd, "starting - official pipeline"); - /* ==== verified viewer core loop + official FFC cadence (csdk scheduler) */ - int nread = 0; + /* initialize the DDT-based tables with the current shutter (unknown + * until the first frame arrives: use a mid endpoint default) */ + g_ffc_idx = -1; + FILE *dbg = fopen("demo3_diag.txt", "w"); + FILE *ffcdbg = fopen("demo3_ffc.txt", "a"); unsigned prev2 = 0xffffffff; - mag160c_ffc_scheduler_t ffc; - mag160c_ffc_scheduler_init(&ffc, FFC_PERIOD, FFC_GAP); - int ffc_stall = 0; DWORD t0 = GetTickCount(); DWORD lfps_t = t0; unsigned lfps_c = 0; DWORD last_frame_t = t0; DWORD last_reset_t = t0; + int ref_reset = 0; + int skipped = 0; + for (;;) { MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { @@ -892,12 +819,10 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { unsigned char hdr[64]; int xfer = 0; if (libusb_bulk_transfer(g_h, 0x81, hdr, sizeof(hdr), &xfer, 200) && xfer < 28) { - /* no frame this round: watchdog wakes a stalled unit */ DWORD now2 = GetTickCount(); if (now2 - last_frame_t > 3000 && now2 - last_reset_t > 5000) { sendcmd(0x6bb6b672, 1, 8); last_reset_t = now2; - ffc_stall++; } continue; } @@ -910,484 +835,159 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { if (c == prev2) continue; prev2 = c; if (libusb_bulk_transfer(g_h, 0x81, g_frame, sizeof(g_frame), &xfer, 200) || xfer < 38400) continue; - nread++; last_frame_t = GetTickCount(); + g_global_frames++; + if (g_global_frames < OFF_WARM_FRAMES) continue; + + /* shutter = tail word at frame offset len+0x24 (pixels start at + * g_frame[0]; tail = g_frame + 0x9600 + 0x24 - 0x1c) */ + unsigned len = (unsigned)hdr[8] | ((unsigned)hdr[9] << 8) | + ((unsigned)hdr[10] << 16) | ((unsigned)hdr[11] << 24); + int shutter = 0; + if (len == 0x9600 && xfer >= 0x9608 + 4) + shutter = (int)((unsigned)g_frame[0x9608] | ((unsigned)g_frame[0x9609] << 8) | + ((unsigned)g_frame[0x960a] << 16) | ((unsigned)g_frame[0x960b] << 24)); + g_shutter = shutter; - /* manual FFC queued from the button: issue FFC(0) now (after a - * complete frame, as in the official trace); the scheduler then - * emits FFC(1) FFC_GAP frames later. */ if (g_manual_ffc) { g_manual_ffc = 0; - if (mag160c_ffc_scheduler_trigger(&ffc) >= 0) { + sendcmd(0x6bb6b672, 0, 8); + g_ffc_idx = 0; + g_shutter_at_ffc = shutter; + if (ffcdbg) { fprintf(ffcdbg, "frame=%u MANUAL FFC(0) shutter=%d\n", g_global_frames, shutter); fflush(ffcdbg); } + } + + /* official FFC state machine (FUN_180009ee0) */ + if (g_ffc_idx < 0) { + /* pre-init: send FFC(0), start the cycle */ + sendcmd(0x6bb6b672, 0, 8); + g_ffc_idx = 0; + g_shutter_at_ffc = shutter; + if (ffcdbg) { fprintf(ffcdbg, "frame=%u INIT FFC(0) shutter=%d\n", g_global_frames, shutter); fflush(ffcdbg); } + } + g_ffc_idx++; + int idx = g_ffc_idx; + { + unsigned ftype = (unsigned)hdr[12] | ((unsigned)hdr[13] << 8) | + ((unsigned)hdr[14] << 16) | ((unsigned)hdr[15] << 24); + long long fsum = 0; + for (int i = 0; i < NPIX; i += 16) + fsum += (unsigned short)(g_frame[i * 2] | ((unsigned)g_frame[i * 2 + 1] << 8)); + if (dbg) { fprintf(dbg, "STAGE idx=%d type=%u fmean=%.0f shutter=%d\n", idx, ftype, + (double)fsum / (NPIX / 16), shutter); fflush(dbg); } + if (ftype != 0 && idx == 6) { + static int saved; + if (!saved) { + saved = 1; + FILE *ft = fopen("type1_frame.bin", "wb"); + if (ft) { fwrite(g_frame, 1, 38400, ft); fclose(ft); } + } + } + } + if (idx <= OFF_N1) { + if (idx == 1) { + rebuild_tables(g_shutter_at_ffc); + if (dbg) { fprintf(dbg, "rebuild sel=%d T=[%d,%d] shutter=%d\n", g_sel, + g_ep_temps[g_sel], g_ep_temps[g_sel + 1], g_shutter_at_ffc); fflush(dbg); } + } + continue; + } + if (idx <= OFF_N0 + OFF_N1) { + if (idx == OFF_N0 + OFF_N1) { + sendcmd(0x6bb6b672, 1, 8); + if (ffcdbg) { fprintf(ffcdbg, "frame=%u FFC(1)\n", g_global_frames); fflush(ffcdbg); } + } + if (idx == OFF_N1 + 1) { + g_ref_cnt = 0; + g_has_ref = 0; + ref_reset = 1; + } + /* collect ref frame */ + for (int i = 0; i < NPIX; ++i) + g_live[i] = (unsigned short)(g_frame[i * 2] | ((unsigned)g_frame[i * 2 + 1] << 8)); + if (ref_reset) { ref_reset = 0; g_ref_cnt = 0; } + { + long long lsum = 0; + for (int i = 0; i < NPIX; ++i) lsum += g_live[i]; + FILE *f3 = fopen("demo3_ref.txt", "a"); + if (f3) { fprintf(f3, " push idx=%d live_mean=%.0f cnt=%d\n", idx, + (double)lsum / NPIX, g_ref_cnt); fclose(f3); } + } + ref_push(g_live); + continue; + } + if (idx <= OFF_N0 + OFF_N2 + OFF_N1) { + continue; + } + /* normal frame: FFC condition */ + { + int drift = g_shutter - g_shutter_at_ffc; + if (drift < 0) drift = -drift; + int cool = OFF_N0 + OFF_N2 + OFF_N1; + int do_ffc = 0; + if (idx >= OFF_N0 + OFF_FFC_PERIOD) + do_ffc = 1; + else if (idx >= cool + 30 && drift > OFF_FFC_DRIFT) + do_ffc = 1; + if (do_ffc) { sendcmd(0x6bb6b672, 0, 8); - SetWindowTextA(g_hwnd, "FFC(0) sent - warming"); + g_ffc_idx = 0; + g_shutter_at_ffc = shutter; + if (ffcdbg) { fprintf(ffcdbg, "frame=%u AUTO FFC(0) idx=%d drift=%d\n", g_global_frames, idx, drift); fflush(ffcdbg); } + continue; } } - /* official cadence (csdk scheduler): FFC(1) after ~10th frame, - * then FFC(0) every FFC_PERIOD frames with FFC(1) FFC_GAP later. - * FFC is only issued after a complete frame (as in the trace). */ - { - static FILE *ffcdbg; - int32_t ffc_param = mag160c_ffc_scheduler_tick(&ffc); - if (ffc_param >= 0) { - sendcmd(0x6bb6b672, (unsigned)ffc_param, 8); - if (!ffcdbg) ffcdbg = fopen("demo3_ffc.txt", "a"); - if (ffcdbg) { fprintf(ffcdbg, "frame=%u nread=%u ffc=%d type=%u rebase=%d\n", c, nread, ffc_param, (unsigned)hdr[12], g_rebase); fflush(ffcdbg); } - } - if (ffc_param == 1) g_rebase = 1; /* FFC(1): re-align reference */ - } - /* FFC calibration window: the unit streams type=1 frames between - * FFC(0) and FFC(1) (~9 frames). Do not render those (they are - * raw/response data with a very different range - the official app - * freezes the image instead of showing the red/yellow flash). */ - if (hdr[12] != 0) { - continue; - } - - /* decode + correct once; everything below uses g_live */ - decode_live(g_frame); - - /* after FFC(1) the type=0 baseline shifts and the unit has just - * recalibrated: re-collect the reference from fresh quiet frames - * (replaces the startup-collected one and any stale baseline), - * then skip a few frames while the stream settles. */ - if (g_rebase) { - { static FILE *rdbg; if (!rdbg) rdbg = fopen("demo3_rebase.txt", "a"); - if (rdbg) { fprintf(rdbg, "frame=%u type=%u hasref=%d\n", c, (unsigned)hdr[12], g_has_reference); fflush(rdbg); } } - g_rebase = 0; - g_skip_ffc = REF_SKIP; - if (g_has_reference) { - if (REF_REINIT_AFTER_FFC) { - g_ref_phase = 2; /* post-FFC re-collection */ - g_ref_n = 0; - SetWindowTextA(g_hwnd, "re-collecting reference after FFC"); - } else { - mag160c_display_ref_rebase(g_ref_mura, g_live, NPIX, 2000); - g_ref_mura_min = 0xffff; - for (int i = 0; i < NPIX; ++i) - if (g_ref_mura[i] < g_ref_mura_min) g_ref_mura_min = g_ref_mura[i]; - } - } - } - if (g_skip_ffc > 0) { - g_skip_ffc--; - continue; - } - - /* first reference collection: starts after the startup FFC(1) has - * switched the stream to type=0 AND the baseline has recovered. - * Measured: the type=0 baseline after the first FFC(1) takes ~4 s - * (60+ frames) to settle; collecting before that bakes a wrong - * baseline into the reference (nuc then explodes to 50k counts). */ - if (g_ref_phase == 0 && !g_ref_mura_ready && nread >= 60) { - g_ref_phase = 1; - g_ref_n = 0; - } - - /* reference collection (init phase 1 or post-FFC phase 2): median - * of REF_INIT_N frames. The median is naturally robust to a moving - * object or noise (a transient object appears in <50% of the window - * and is excluded), and the captured reference is used as the NUC - * flat field: live - (ref - mean(ref)) removes the fixed sensor - * mura (measured: spatial std 3560 -> 29). No quiet-gate: a strict - * stillness requirement meant the reference never built while the - * user was watching, so the NUC never activated and the raw mura - * was displayed. */ - if (g_ref_phase == 1 || g_ref_phase == 2) { - /* motion gate (startup collection only): a moving scene - * contaminates the reference (a hot object absorbed into ref - * ghosts black once it moves away). Restart the window on - * motion; a 12-frame still run then captures a clean ref. - * Phase 2 (post-motion refresh) already waited for stillness, - * so it does not gate. */ - if (g_ref_phase == 1 && g_ref_n > 0) { - unsigned long long msum = 0; - unsigned moved = 0; - for (int i = 0; i < NPIX; i += 4) { - int d = (int)g_live[i] - (int)g_prev_frame[i]; - if (d < 0) d = -d; - msum += d; - if (d > 60) moved++; - } - unsigned mmean = (unsigned)(msum / (NPIX / 4)); - if (mmean > 30 || moved > NPIX / 25) { - g_ref_n = 0; - } - } - for (int i = 0; i < NPIX; ++i) { - g_ref_samples[i][g_ref_n] = g_live[i]; - if (g_ref_n == 0) { g_ref_min[i] = g_ref_max[i] = g_live[i]; } - else { - if (g_live[i] < g_ref_min[i]) g_ref_min[i] = g_live[i]; - if (g_live[i] > g_ref_max[i]) g_ref_max[i] = g_live[i]; - } - } - g_ref_n++; - if (g_ref_n == REF_INIT_N) { - int nb = 0; - /* per-pixel median over the window */ - static unsigned short tmp[REF_INIT_N]; - for (int i = 0; i < NPIX; ++i) { - for (int k = 0; k < REF_INIT_N; ++k) tmp[k] = g_ref_samples[i][k]; - for (int a = 1; a < REF_INIT_N; ++a) { /* insertion sort */ - unsigned short key = tmp[a]; - int b = a - 1; - while (b >= 0 && tmp[b] > key) { tmp[b + 1] = tmp[b]; b--; } - tmp[b + 1] = key; - } - /* trimmed median (average of the middle 50%): - * P15-per-pixel biased each pixel by a different - * offset (measured: d spatial std 820 vs 390 for - * median) which showed up as a haze over the whole - * frame. The motion gate guarantees the collection - * window is still, so a plain median is safe and - * leaves no spatial bias. */ - { - long s = 0; - int n = 0; - for (int k = REF_INIT_N / 4; k < REF_INIT_N * 3 / 4; ++k) { - s += tmp[k]; - n++; - } - g_ref_mura[i] = (unsigned short)(s / n); - } - g_bad[i] = 0; - } - /* bad pixel detection only on the first collection; - * post-FFC re-collection keeps the existing bad map */ - if (BADMAP_ENABLE && g_ref_phase == 1) { - /* temporal detection: min-max fluctuation */ - for (int i = 0; i < NPIX; ++i) { - if ((int)g_ref_max[i] - (int)g_ref_min[i] > 400) { g_bad[i] = 1; nb++; } - } - /* histogram-peak-deviation detection (Seek method): - * bad if value > histPeak - (frameMax - histPeak), - * guarded to at least histPeak + 200 */ - { - static unsigned hist[65536]; - unsigned peakv = 0, peakc = 0, maxv = 0; - for (int i = 0; i < 65536; ++i) hist[i] = 0; - for (int i = 0; i < NPIX; ++i) { - unsigned v = g_ref_mura[i]; - if (++hist[v] > peakc) { peakc = hist[v]; peakv = v; } - if (v > maxv) maxv = v; - } - long thr = (long)peakv - ((long)maxv - (long)peakv); - if (thr < (long)peakv + 200) thr = (long)peakv + 200; - for (int i = 0; i < NPIX; ++i) { - if (!g_bad[i] && (long)g_ref_mura[i] > thr) { g_bad[i] = 1; nb++; } - } - /* dead pixels: far below the scene peak (or zero); - * temporal min-max misses non-fluctuating deads */ - for (int i = 0; i < NPIX; ++i) { - if (!g_bad[i] && (long)g_ref_mura[i] < (long)peakv - 6000) { - g_bad[i] = 1; nb++; - } - } - } - g_bad_count = nb; - /* topological fill order: copy of the bad mask evolves - * as pixels are filled (edge-first for clusters) */ - unsigned char w[NPIX]; - for (int i = 0; i < NPIX; ++i) w[i] = g_bad[i]; - g_bad_order_len = 0; - build_fill_order(w, (int (*)[2])g_bad_order, &g_bad_order_len); - /* fill reference values in the stored order */ - for (int i = 0; i < NPIX; ++i) w[i] = g_bad[i]; - for (int i = 0; i < g_bad_order_len; ++i) { - int x = g_bad_order[i][0], y = g_bad_order[i][1]; - int v = neighbor_mean(g_ref_mura, w, x, y); - if (v > 0) { - g_ref_mura[y * W + x] = (unsigned short)v; - w[y * W + x] = 0; - } - } - } else if (BADMAP_ENABLE) { - /* post-FFC re-collection: correct the new reference - * with the existing bad map (work mask, bits cleared - * as filled so cluster interiors fill too) */ - static unsigned char w2[NPIX]; - for (int i = 0; i < NPIX; ++i) w2[i] = g_bad[i]; - for (int i = 0; i < g_bad_order_len; ++i) { - int x = g_bad_order[i][0], y = g_bad_order[i][1]; - int v = neighbor_mean(g_ref_mura, w2, x, y); - if (v > 0) { - g_ref_mura[y * W + x] = (unsigned short)v; - w2[y * W + x] = 0; - } - } - } - g_has_reference = 1; - g_bad_done = 1; - g_ema_reset = 1; /* EMA must restart on the new baseline */ - /* Official 0x180017330 is blind-pixel compensation, not a - * full-frame 3x3 blur. Keep the flat-field in the same - * unblurred domain as live. */ - g_ref_mura_min = 0xffff; - for (int i = 0; i < NPIX; ++i) - if (g_ref_mura[i] < g_ref_mura_min) g_ref_mura_min = g_ref_mura[i]; - g_ref_mura_ready = 1; - /* calibrate the official NUC offset: with live==ref the - * NUC output equals comp, so comp places the NUC output - * on the official absolute level (NUC_CENTER). */ - g_comp = (int)NUC_CENTER; - int was = g_ref_phase; - g_ref_phase = 0; - char st[96]; - snprintf(st, sizeof(st), "reference captured (phase %d) - bad: %d", - was, nb); - SetWindowTextA(g_hwnd, st); - } - } - /* constant-reference mode: reference = global minimum temperature - * this frame (see CONSTANT_REF). live - ref never negative. */ - if (CONSTANT_REF) { - unsigned gmin = 0xffff; - for (int i = 0; i < NPIX; ++i) { - if (g_live[i] < gmin) gmin = g_live[i]; - } - if (g_ref_mura_ready) { - /* scene-based NUC with conditional updating (the standard - * ghost-suppression approach: Scribner neural-net NUC 1993, - * Hardie Kalman SBNUC 1998; used in FLIR/ULIS adaptive-FFC - * patents). Protect only positive residuals (hot object - * pixels). Negative residuals are the black-ghost failure - * mode after a hot object moves away, so they must be allowed - * to re-absorb quickly instead of being frozen by |dd|. */ - static int hist[32768]; - memset(hist, 0, sizeof(hist)); - for (int i = 0; i < NPIX; ++i) { - int d = (int)g_live[i] - (int)g_ref_mura[i] + 8192; - if (d < 0) d = 0; - if (d >= 32768) d = 32767; - hist[d]++; - } - long half = NPIX / 2, acc = 0; - int med = 0; - for (int k = 0; k < 32768; ++k) { - acc += hist[k]; - if (acc >= half) { med = k - 8192; break; } - } - int accepted = 0; - for (int i = 0; i < NPIX; ++i) { - int rawd = (int)g_live[i] - (int)g_ref_mura[i]; - int dd = rawd - med; -#if SBNUC_ENABLE - int state = g_sb_hot_state[i]; - int prevdd = (int)g_sb_prev_d[i]; - int fast_release = 0; - int frame_step = (int)g_live[i] - (int)g_prev_frame[i]; - int resid_step = dd - prevdd; - int innov = frame_step < 0 ? -frame_step : frame_step; - if (resid_step < 0) resid_step = -resid_step; - if (resid_step > innov) innov = resid_step; - if (innov > 255) innov = 255; - int innov_sq = innov * innov; - int innov_var = g_sb_innov_var[i]; - if (innov_sq > innov_var) - innov_var += (innov_sq - innov_var + 3) >> 2; - else - innov_var -= (innov_var - innov_sq + 3) >> 2; - if (innov_var < 0) innov_var = 0; - if (innov_var > 65535) innov_var = 65535; - g_sb_innov_var[i] = (unsigned short)innov_var; - if (innov_var > SB_INNOV_VAR_T) - g_sb_still[i] = SB_INNOV_HOLD; - else if (g_sb_still[i]) - g_sb_still[i]--; - int motion_gate = g_sb_still[i] != 0; - if (motion_gate) { - /* Do not rewrite the reference while an edge is - * still moving through this pixel. Recovery starts - * only after the innovation hold has expired. */ - g_sb_cold_run[i] = 0; - } else if (dd < -SB_RECOVER_T) { - if (g_sb_cold_run[i] < SB_RECOVER_RUN) - g_sb_cold_run[i]++; - } else if (dd >= 0) { - g_sb_cold_run[i] = 0; - } - int persistent_cold = - g_sb_cold_run[i] >= SB_RECOVER_RUN; - - /* Keep the old strong-hot protection, but remember the - * pixel until it is close to the background. The old - * countdown started at dd=48, so a slowly cooling small - * target could spend all 24 frames before becoming a - * negative ghost. */ - if (dd > SB_HOT_T) { - state = SB_HOT_WARM; - g_hot_hist[i] = 0; - } else { - if (state == 0 && dd > SB_HOT_SEED) - state = SB_HOT_WARM; - - /* A sharp positive-to-negative crossing is also a - * valid release trigger. This covers a target that - * leaves between two samples without weakening the - * normal background update gate. */ - if (state == 0 && prevdd > SB_HOT_SEED && - prevdd - dd > SB_HOT_SEED) { - state = SB_HOT_RELEASE; - g_hot_hist[i] = SB_HOT_HOLD; - } - - if (state == SB_HOT_WARM && dd <= SB_HOT_EXIT) { - state = SB_HOT_RELEASE; - g_hot_hist[i] = SB_HOT_HOLD; - } - if (state == SB_HOT_RELEASE) { - if (dd > SB_HOT_REENTER) { - /* The object returned before the release - * completed; do not absorb it as background. */ - state = SB_HOT_WARM; - g_hot_hist[i] = 0; - } else if (dd <= SB_HOT_EXIT) { - /* A small positive rebound pauses, rather - * than spends, the release budget. */ - if (g_hot_hist[i]) { - fast_release = (dd < 0); - g_hot_hist[i]--; - } else { - state = 0; - } - } - } - - /* The official ref is frozen during normal frames. - * Keep the adaptive part one-sided as well: a hot - * target must never raise the spatial reference just - * because its residual is below SB_HOT_T. Global - * warming is already handled by `shift` below; only - * colder residuals may lower this per-pixel ref. */ - if (dd < 0 && persistent_cold && - state == SB_HOT_RELEASE) { - accepted++; - /* Only a pixel that was previously warm may - * self-heal after turning cold. A cold object - * that remains stationary must stay out of the - * reference, otherwise it becomes a bright ghost - * when it leaves. */ - int denom = (dd < -48) ? 1 : 2; - int v = (int)g_ref_mura[i] + - (rawd / denom); - if (v < 0) v = 0; - if (v > 65535) v = 65535; - g_ref_mura[i] = (unsigned short)v; - } - } - g_sb_hot_state[i] = (unsigned char)state; - if (dd < -32768) g_sb_prev_d[i] = -32768; - else if (dd > 32767) g_sb_prev_d[i] = 32767; - else g_sb_prev_d[i] = (short)dd; -#else - (void)dd; - (void)rawd; -#endif - } - long long mdsum = 0; unsigned long long md2sum = 0; - for (int i = 0; i < NPIX; ++i) { - long long md = (long long)g_live[i] - (long long)g_ref_mura[i]; - mdsum += md; - md2sum += (unsigned long long)(md * md); - } - double mdmean = (double)mdsum / NPIX; - g_sb_mura_dmean = mdmean; - g_sb_mura_dstd = sqrt((double)md2sum / NPIX - mdmean * mdmean); - g_sb_med = med; - g_sb_accept = accepted; - memset(hist, 0, sizeof(hist)); - for (int i = 0; i < NPIX; ++i) { - int d = (int)g_live[i] - (int)g_ref_mura[i] + 8192; - if (d < 0) d = 0; - if (d >= 32768) d = 32767; - hist[d]++; - } - acc = 0; - int shift = 0; - for (int k = 0; k < 32768; ++k) { - acc += hist[k]; - if (acc >= half) { shift = k - 8192; break; } - } - g_ref_mura_min = 0xffff; - for (int i = 0; i < NPIX; ++i) - if (g_ref_mura[i] < g_ref_mura_min) g_ref_mura_min = g_ref_mura[i]; - g_sb_shift = shift; - g_sb_gmin = (int)gmin; - for (int i = 0; i < NPIX; ++i) { - int r = (int)g_ref_mura[i] + shift; - if (r < 0) r = 0; - if (r > 65535) r = 65535; - g_reference[i] = (unsigned short)r; - } - } else { - for (int i = 0; i < NPIX; ++i) g_reference[i] = (unsigned short)gmin; - } - g_has_reference = 1; - g_bad_done = 1; - } - if (!CONSTANT_REF) { - /* adaptive reference refresh: a frozen reference ghosts moving - * objects into black trails. The official pipeline has no scene - * detector (FFC fires on a 1800-frame timer or a sensor-temp jump - * >250), so a ghost can linger for minutes. Track frame-to-frame - * motion; when a motion episode ends and the scene has been still - * for a while, re-collect the reference (phase-2 collection keeps - * the bad map) so the ghost is erased. A still scene never - * re-collects, so there is no periodic freeze. */ - { - unsigned long long msum = 0; - unsigned moved = 0; - for (int i = 0; i < NPIX; i += 4) { - int d = (int)g_live[i] - (int)g_prev_frame[i]; - if (d < 0) d = -d; - msum += d; - if (d > 60) moved++; - } - static int still_count = 0; - static int g_had_motion = 0; - unsigned mmean = (unsigned)(msum / (NPIX / 4)); - if (mmean > 30 || moved > NPIX / 25) { - still_count = 0; - g_had_motion = 1; - } else if (g_had_motion && g_has_reference && g_ref_phase == 0) { - if (++still_count > 45) { - g_ref_phase = 2; /* re-collect: clears absorbed ghosts */ - g_ref_n = 0; - still_count = 0; - g_had_motion = 0; - SetWindowTextA(g_hwnd, "scene settled - refreshing reference"); - } - } - } - } /* !CONSTANT_REF */ - /* keep the previous frame for the init quiet-gate */ - memcpy(g_prev_frame, g_live, sizeof(g_live)); - /* freeze the display while a reference is being collected (startup - * or post-FFC): the old reference does not match the current - * baseline, so rendering now would flash garbage. The official app - * freezes the image during FFC too. */ - if (g_ref_phase != 0) { - SetWindowTextA(g_hwnd, g_ref_phase == 1 - ? "warming up - collecting reference..." - : "FFC - re-collecting reference..."); - InvalidateRect(g_hwnd, NULL, FALSE); - UpdateWindow(g_hwnd); - continue; - } - if (g_official_nuc_ready && g_ref_mura_ready) { - g_official_ref_bias = calibrate_official_ref_bias(); - g_sb_shift = g_official_ref_bias; - for (int i = 0; i < NPIX; ++i) { - int r = (int)g_ref_mura[i] + g_official_ref_bias; - if (r < 0) r = 0; - if (r > 65535) r = 65535; - g_reference[i] = (unsigned short)r; - } - } - render(0, 0); + /* decode + render */ + for (int i = 0; i < NPIX; ++i) + g_live[i] = (unsigned short)(g_frame[i * 2] | ((unsigned)g_frame[i * 2 + 1] << 8)); g_fcount++; + if (dbg) { fprintf(dbg, "RENDER f=%u has_ref=%d tables=%d\n", g_fcount, g_has_ref, g_tables_ready); fflush(dbg); } + if (g_has_ref && g_tables_ready) { + official_nuc_and_blind(g_live, g_nuc); + official_stats_window(g_nuc); + lut_rebuild(g_nuc); + gray_map(g_nuc); + upscale2x(); + } else { + memset(g_nuc, 0, sizeof(g_nuc)); + memset(g_gray160, 0, sizeof(g_gray160)); + } + /* hot spot + temps */ + unsigned hotv = 0; + int hot = 0; + for (int i = 0; i < NPIX; ++i) { + if (g_nuc[i] > hotv && g_nuc[i] != 0) { hotv = g_nuc[i]; hot = i; } + } + if (hot >= 0 && hotv) { + g_max_x = hot % W; + g_max_y = hot / W; + g_max_temp = counts_to_c((double)hotv); + } + g_center_temp = counts_to_c((double)g_stat_mean); + render_bmp(); + + if (dbg) { + long long rsum = 0, lsum = 0, dsum = 0; + long long dmin = 1 << 30, dmax = -(1 << 30); + for (int i = 0; i < NPIX; ++i) { + rsum += g_ref[i]; lsum += g_live[i]; + long long d = (long long)g_live[i] - g_ref[i]; + dsum += d; + if (d < dmin) dmin = d; + if (d > dmax) dmax = d; + } + fprintf(dbg, "DIAG ref_mean=%.0f live_mean=%.0f d=(%lld..%lld m%.0f)\n", + (double)rsum / NPIX, (double)lsum / NPIX, dmin, dmax, (double)dsum / NPIX); + fflush(dbg); + } + if (dbg) { + fprintf(dbg, "f=%u shutter=%d sel=%d/%d win=[%d,%d] stats=(%d..%d m%d s%d) ref=%d lut[0]=%d lut[100]=%d lut[1023]=%d\n", + g_fcount, g_shutter, g_sel, g_ep_count, g_win_lo, g_win_hi, + g_stat_min, g_stat_max, g_stat_mean, g_stat_std, + g_has_ref, g_lut[0], g_lut[100], g_lut[1023]); + fflush(dbg); + } DWORD now = GetTickCount(); if (now - lfps_t >= 1000) { g_fps = (g_fcount - lfps_c) * 1000.0 / (now - lfps_t); @@ -1395,20 +995,38 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmd, int show) { lfps_c = g_fcount; } snprintf(g_title, sizeof(g_title), - "MAG160C Demo v4 (official pipeline) - frame %u type=%u ffc=%d", - c, (unsigned)hdr[12], ffc_stall); + "MAG160C v5 official - frame %u idx %d shutter %d sel %d win [%d,%d] skipped %d", + g_global_frames, g_ffc_idx, g_shutter, g_sel, g_win_lo, g_win_hi, skipped); SetWindowTextA(g_hwnd, g_title); - /* auto-save for FFC diagnosis: every 30 frames, up to 40 shots */ if (g_fcount % 30 == 0 && g_fcount / 30 < 40) { char pth[MAX_PATH]; snprintf(pth, sizeof(pth), "demo3_auto_%03u.bmp", g_fcount / 30); FILE *f = fopen(pth, "wb"); if (f) { fwrite(g_bmp, 1, sizeof(g_bmp), f); fclose(f); } } + if (g_fcount == 300 || g_fcount == 600 || g_fcount == 900) { + FILE *fc = fopen("demo3_frame_capture.bin", "wb"); + if (fc) { + fwrite(g_live, 2, NPIX, fc); + fwrite(g_ref, 2, NPIX, fc); + fwrite(g_nuc, 2, NPIX, fc); + fwrite(g_gray160, 1, NPIX, fc); + fwrite(g_lut, 1, 1024, fc); + fwrite(g_thr_work, 2, (g_nsegs - 1) * NPIX + g_c5c / 2, fc); + fwrite(g_gain_work, 2, g_nsegs * NPIX * 2, fc); + int meta[8] = {g_win_lo, g_win_hi, g_stat_min, g_stat_max, + g_stat_mean, g_stat_std, g_shutter, g_sel}; + fwrite(meta, 4, 8, fc); + fclose(fc); + if (dbg) { fprintf(dbg, "CAPTURED frame data\n"); fflush(dbg); } + } + } InvalidateRect(g_hwnd, NULL, FALSE); UpdateWindow(g_hwnd); } done: + if (dbg) fclose(dbg); + if (ffcdbg) fclose(ffcdbg); Sleep(300); libusb_clear_halt(g_h, 0x03); libusb_clear_halt(g_h, 0x82); diff --git a/csdk/tools/tsdk_pair3.c b/csdk/tools/tsdk_pair3.c new file mode 100644 index 0000000..d9ae357 --- /dev/null +++ b/csdk/tools/tsdk_pair3.c @@ -0,0 +1,316 @@ +/* tsdk_pair3: same-frame capture of official pipeline outputs + full NUC/ + * window/ref state, for replicating CoreSDKLib.dll in the C SDK. + * Extends tsdk_pair2 with: + * - per-frame shutter (metadata+0x2c), frame counters + * - config dump: 0x24, 0x48, 0x4c, 0x54/0x58/0x5c/0x60, 0x47944..0x47954, + * 0x11c, DDT header fields (0x41340..0x41880), endpoint arrays + * - DDT file copy (path from dev+0x4134c) + * - stats (0x42010..0x42024) + window (0x4202c/0x42030) + LUT1024 + hist + */ +#define _WIN32_WINNT 0x0601 +#include +#include +#include +#include +#include +#include + +typedef void (CALLBACK *INewIRFrame)(const unsigned char *, int, int, int); +typedef bool (CALLBACK *fn_Start_t)(void); +typedef void (CALLBACK *fn_Stop_t)(void); +typedef void (CALLBACK *fn_SetNewIRFrameDelegate_t)(INewIRFrame); +typedef void (CALLBACK *fn_SetTempBoundary_t)(double, double, double); +typedef void (CALLBACK *fn_SetUnitMode_t)(int); +typedef void (CALLBACK *fn_ReadTemperatureAtPoint_t)(int, int, unsigned char *); +typedef int (CALLBACK *MAG_GetOutputBMPdata_t)(int, unsigned char **, void **); +typedef int (CALLBACK *MAG_GetOutputBMPdataRGB24_t)(int, unsigned char *, int, int); +typedef int (CALLBACK *MAG_GetTemperatureData_Raw_t)(int, unsigned int *, int, int); +typedef int (CALLBACK *MAG_GetOutputColorBardata_t)(int, void **, void **); +typedef int (CALLBACK *MAG_TriggerFFC_t)(int, int); + +static volatile int g_frames; +static unsigned char g_cb[320 * 240 * 3]; +static int g_cbw, g_cbh; +static const char *g_dir = "."; + +static void CALLBACK onIR(const unsigned char *buf, int w, int h, int ch) { + if (buf && w > 0 && h > 0 && ch == 3) { + memcpy(g_cb, buf, (size_t)w * h * ch); + g_cbw = w; g_cbh = h; + } + g_frames++; +} + +static void save(const char *name, const void *buf, size_t n) { + char path[512]; + snprintf(path, sizeof(path), "%s\\%s", g_dir, name); + FILE *f = fopen(path, "wb"); + if (f) { fwrite(buf, 1, n, f); fclose(f); } +} + +static int is_ro_ptr(const void *p, size_t n) { + if (!p) return 0; + MEMORY_BASIC_INFORMATION mi; + if (VirtualQuery(p, &mi, sizeof(mi)) == 0) return 0; + if (mi.State != MEM_COMMIT) return 0; + if (mi.Protect == PAGE_NOACCESS) return 0; + if ((size_t)((const char *)p - (const char *)mi.BaseAddress) + n > mi.RegionSize) + return 0; + return 1; +} + +int main(int argc, char **argv) { + int npairs = 24; + int start_delay = 6000; + double tb[3] = {30.0, 44.0, 37.0}; + if (argc > 1) g_dir = argv[1]; + if (argc > 2) npairs = atoi(argv[2]); + if (argc > 3) start_delay = atoi(argv[3]); + if (argc > 4) tb[0] = atof(argv[4]); + if (argc > 5) tb[1] = atof(argv[5]); + if (argc > 6) tb[2] = atof(argv[6]); + + SetDllDirectoryA("C:\\Project\\MAG160C\\IR_Camera_SDK-1.0.1\\windows\\windows\\app"); + HMODULE t = LoadLibraryA("ThermalSDK.dll"); + HMODULE c = LoadLibraryA("CoreSDKLib.dll"); + printf("T=%p C=%p\n", (void*)t, (void*)c); + if (!t || !c) return 1; + fn_Start_t T_Start = (fn_Start_t)GetProcAddress(t, "Start"); + fn_Stop_t T_Stop = (fn_Stop_t)GetProcAddress(t, "Stop"); + fn_SetNewIRFrameDelegate_t T_Set = (fn_SetNewIRFrameDelegate_t)GetProcAddress(t, "SetNewIRFrameDelegate"); + fn_SetTempBoundary_t T_Bound = (fn_SetTempBoundary_t)GetProcAddress(t, "SetTempBoundary"); + fn_SetUnitMode_t T_Unit = (fn_SetUnitMode_t)GetProcAddress(t, "SetUnitMode"); + fn_ReadTemperatureAtPoint_t T_Temp = (fn_ReadTemperatureAtPoint_t)GetProcAddress(t, "ReadTemperatureAtPoint"); + MAG_GetOutputBMPdata_t G_Gray = (MAG_GetOutputBMPdata_t)GetProcAddress(c, "MAG_GetOutputBMPdata"); + MAG_GetOutputBMPdataRGB24_t G_RGB = (MAG_GetOutputBMPdataRGB24_t)GetProcAddress(c, "MAG_GetOutputBMPdataRGB24"); + MAG_GetTemperatureData_Raw_t G_TempRaw = (MAG_GetTemperatureData_Raw_t)GetProcAddress(c, "MAG_GetTemperatureData_Raw"); + MAG_GetOutputColorBardata_t G_Bar = (MAG_GetOutputColorBardata_t)GetProcAddress(c, "MAG_GetOutputColorBardata"); + if (!T_Start || !T_Set || !G_Gray || !G_RGB) { printf("missing export\n"); return 2; } + + if (T_Unit) T_Unit(0); + if (T_Bound) T_Bound(tb[0], tb[1], tb[2]); + T_Set(onIR); + printf("Start()...\n"); fflush(stdout); + BOOL ok = T_Start(); + printf("Start=%d\n", ok); fflush(stdout); + printf("warming %d ms...\n", start_delay); fflush(stdout); + Sleep(start_delay); + + unsigned char *gray = NULL; + void *hdr = NULL; + int chan = -1; + for (int i = 0; i < 8; ++i) { + int rc = G_Gray(i, &gray, &hdr); + printf("chan %d: rc=%d gray=%p hdr=%p\n", i, rc, (void*)gray, (void*)hdr); + if (rc && gray && hdr) { chan = i; break; } + } + if (chan < 0) { printf("no channel\n"); T_Stop(); return 3; } + + unsigned char *dev = (unsigned char *)hdr - 0xaf0; + int w = *(int *)(dev + 0xaf4); + int h = *(int *)(dev + 0xaf8); + int n = w * h; + int nw = w / 2, nh = h / 2; + int nn = nw * nh; + printf("dev=%p w=%d h=%d\n", (void*)dev, w, h); + + /* ---- config dump ---- */ + FILE *cfg = fopen("config.txt", "w"); + if (cfg) { + fprintf(cfg, "dev24=%d dev48=%d dev4c=%d dev54=%d dev58=%d dev5c=%d dev60=%d\n", + *(int *)(dev + 0x24), *(int *)(dev + 0x48), *(int *)(dev + 0x4c), + *(int *)(dev + 0x54), *(int *)(dev + 0x58), *(int *)(dev + 0x5c), + *(int *)(dev + 0x60)); + fprintf(cfg, "11c=%d 41340=%d 41344=%d 41348=%d 4134c=%ls\n", + *(int *)(dev + 0x11c), *(int *)(dev + 0x41340), *(int *)(dev + 0x41344), + *(int *)(dev + 0x41348), (wchar_t *)(dev + 0x4134c)); + fprintf(cfg, "41558=%d 41554=%d 4155c=%d 41560=%d 47944=%d 47948=%d 4794c=%d 47950=%d 47954=%d 47938=%d\n", + *(int *)(dev + 0x41558), *(int *)(dev + 0x41554), *(int *)(dev + 0x4155c), + *(int *)(dev + 0x41560), *(int *)(dev + 0x47944), *(int *)(dev + 0x47948), + *(int *)(dev + 0x4794c), *(int *)(dev + 0x47950), *(int *)(dev + 0x47954), + *(int *)(dev + 0x47938)); + int cnt = *(int *)(dev + 0x41558); + if (cnt < 1 || cnt > 64) cnt = 1; + fprintf(cfg, "T:"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x41564 + i * 4)); + fprintf(cfg, "\nB:"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x415b4 + i * 4)); + fprintf(cfg, "\nC:"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x41604 + i * 4)); + fprintf(cfg, "\nD(blind cnt):"); + for (int i = 0; i < cnt - 1; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x41654 + i * 4)); + fprintf(cfg, "\nloaded:"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x416b8 + i * 4)); + fprintf(cfg, "\noffsets(41708):"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x41708 + i * 4)); + fprintf(cfg, "\nthr_off(41758):"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x41758 + i * 4)); + fprintf(cfg, "\nblind_off(417a8):"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x417a8 + i * 4)); + fprintf(cfg, "\nblind_off2(417f4):"); + for (int i = 0; i < cnt; ++i) fprintf(cfg, " %d", *(int *)(dev + 0x417f4 + i * 4)); + fprintf(cfg, "\nbases: 416a0=%p 416a8=%p 416b0=%p\n", + *(void **)(dev + 0x416a0), *(void **)(dev + 0x416a8), *(void **)(dev + 0x416b0)); + fprintf(cfg, "41840=%d 41848=%p 41850=%p 41858=%p 41860=%p 41868=%p 41870=%p 41878=%p\n", + *(int *)(dev + 0x41840), *(void **)(dev + 0x41848), *(void **)(dev + 0x41850), + *(void **)(dev + 0x41858), *(void **)(dev + 0x41860), *(void **)(dev + 0x41868), + *(void **)(dev + 0x41870), *(void **)(dev + 0x41878)); + fprintf(cfg, "41f0c=%d 41f3c=%d 41fdc=%d 41fe0=%d 41fe4=%d 41fe8=%d\n", + *(int *)(dev + 0x41f0c), *(int *)(dev + 0x41f3c), *(int *)(dev + 0x41fdc), + *(int *)(dev + 0x41fe0), *(int *)(dev + 0x41fe4), *(int *)(dev + 0x41fe8)); + fprintf(cfg, "2d47=%d 2d86=%d 2d78=%d 2d88=%d 2d8c=%d 2d90=%d 2d94=%d 2d98=%d 2d9c=%d\n", + *(char *)(dev + 0x2d47), *(short *)(dev + 0x2d86), + *(int *)(dev + 0x2d78), *(int *)(dev + 0x2d88), *(int *)(dev + 0x2d8c), + *(int *)(dev + 0x2d90), *(int *)(dev + 0x2d94), *(int *)(dev + 0x2d98), + *(int *)(dev + 0x2d9c)); + fprintf(cfg, "47940=%d 44c50=%d 44c60=%d 44c64=%d 44c68=%d 42010=%d 42014=%d\n", + *(int *)(dev + 0x47940), *(int *)(dev + 0x44c50), *(int *)(dev + 0x44c60), + *(int *)(dev + 0x44c64), *(int *)(dev + 0x44c68), + *(int *)(dev + 0x42010), *(int *)(dev + 0x42014)); + fclose(cfg); + } + /* copy the DDT file */ + wchar_t *ddtp = (wchar_t *)(dev + 0x4134c); + if (ddtp && *ddtp) { + printf("DDT path: %ls\n", ddtp); fflush(stdout); + char apath[MAX_PATH]; + WideCharToMultiByte(CP_ACP, 0, ddtp, -1, apath, MAX_PATH, NULL, NULL); + FILE *sf = fopen(apath, "rb"); + if (sf) { + fseek(sf, 0, SEEK_END); + long sz = ftell(sf); + fseek(sf, 0, SEEK_SET); + void *buf = malloc(sz); + if (buf) { + fread(buf, 1, sz, sf); + save("official.ddt", buf, sz); + printf("DDT copied: %ld bytes\n", sz); + free(buf); + } + fclose(sf); + } else printf("DDT file not readable: %s\n", apath); + } else printf("no DDT path\n"); + fflush(stdout); + + unsigned char *rgb = malloc((size_t)n * 3); + unsigned short *raw = malloc((size_t)nn * 2); + unsigned char *pal = malloc(256 * 4); + unsigned int *t32 = malloc((size_t)n * 4); + unsigned char *g2 = malloc((size_t)n); + + MAG_TriggerFFC_t G_FFC = (MAG_TriggerFFC_t)GetProcAddress(c, "MAG_TriggerFFC"); + + int prev = g_frames; + for (int k = 0; k < npairs; ++k) { + if (G_FFC && k == npairs / 3) { G_FFC(chan, 1); Sleep(1500); prev = g_frames; } + if (G_FFC && k == 2 * npairs / 3) { G_FFC(chan, 0); Sleep(1500); prev = g_frames; } + int t0 = GetTickCount(); + while (g_frames == prev && GetTickCount() - t0 < 3000) Sleep(5); + prev = g_frames; + Sleep(2); + + memcpy(g2, gray, (size_t)n); + int rcr = G_RGB(chan, rgb, n * 3, 1); + unsigned short *rawp = *(unsigned short **)(dev + 0x270); + memcpy(raw, rawp, (size_t)nn * 2); + memcpy(pal, dev + 0xb18, 256 * 4); + int rct = G_TempRaw ? G_TempRaw(chan, t32, nn * 4, 1) : 0; + + char base[64]; + snprintf(base, sizeof(base), "pair_%03d", k); + char nm[128]; + snprintf(nm, sizeof(nm), "%s.gray", base); save(nm, g2, (size_t)n); + snprintf(nm, sizeof(nm), "%s.rgb", base); save(nm, rgb, (size_t)n * 3); + snprintf(nm, sizeof(nm), "%s.raw", base); save(nm, raw, (size_t)nn * 2); + snprintf(nm, sizeof(nm), "%s.pal", base); save(nm, pal, 256 * 4); + snprintf(nm, sizeof(nm), "%s.cbrgb", base); save(nm, g_cb, (size_t)g_cbw * g_cbh * 3); + if (rct) { snprintf(nm, sizeof(nm), "%s.t32", base); save(nm, t32, (size_t)nn * 4); } + + /* frame metadata + shutter: the frame buffer base at dev+0x50 */ + unsigned char *fb = *(unsigned char **)(dev + 0x50); + if (!is_ro_ptr(fb, 0x4c + 38400 + 8)) fb = NULL; + unsigned int fcnt = *(unsigned int *)(dev + 8); + unsigned int shutter = fb ? *(unsigned int *)(fb + 0x2c) : 0; + unsigned int shutter2 = fb ? *(unsigned int *)(fb + 0x28) : 0; + unsigned int ftype = fb ? *(unsigned int *)(fb + 0x40) : 0; + unsigned int dev54 = *(unsigned int *)(dev + 0x54); + unsigned int dev5c = *(unsigned int *)(dev + 0x5c); + unsigned int dev60 = *(unsigned int *)(dev + 0x60); + unsigned int win_hi = *(unsigned int *)(dev + 0x4202c); + unsigned int win_lo = *(unsigned int *)(dev + 0x42030); + unsigned int s_max = *(unsigned int *)(dev + 0x42010); + unsigned int s_min = *(unsigned int *)(dev + 0x42014); + unsigned int s_mean = *(unsigned int *)(dev + 0x42018); + unsigned int s_std = *(unsigned int *)(dev + 0x4201c); + unsigned int sel = *(unsigned int *)(dev + 0x41840); + snprintf(nm, sizeof(nm), "%s.meta", base); + { + unsigned int v[16] = {fcnt, shutter, shutter2, ftype, dev54, dev5c, dev60, + win_hi, win_lo, s_max, s_min, s_mean, s_std, sel, + *(unsigned int *)(dev + 0x41558), *(unsigned int *)(dev + 0x41554)}; + FILE *f = fopen(nm, "wb"); + if (f) { fwrite(v, 4, 16, f); fclose(f); } + } + /* window + stats + lut + hist */ + snprintf(nm, sizeof(nm), "%s.win", base); + { + FILE *f = fopen(nm, "wb"); + if (f) { + unsigned int v[8] = {win_hi, win_lo, s_max, s_min, s_mean, s_std, + *(unsigned int *)(dev + 0x42020), *(unsigned int *)(dev + 0x42024)}; + fwrite(v, 4, 8, f); fclose(f); + } + } + snprintf(nm, sizeof(nm), "%s.lut", base); save(nm, dev + 0x4284c, 1024); + snprintf(nm, sizeof(nm), "%s.hist", base); save(nm, dev + 0x4204c, 256 * 4); + snprintf(nm, sizeof(nm), "%s.h1024", base); save(nm, dev + 0x42c4c, 1024 * 4); + snprintf(nm, sizeof(nm), "%s.cdf", base); save(nm, dev + 0x43c4c, 1024 * 4); + /* ref + f20 */ + unsigned short *refp = *(unsigned short **)(dev + 0x41ef0); + if (is_ro_ptr(refp, (size_t)nn * 2)) { snprintf(nm, sizeof(nm), "%s.ref", base); save(nm, refp, (size_t)nn * 2); } + void *f20 = *(void **)(dev + 0x41f20); + if (is_ro_ptr(f20, (size_t)nn * 2)) { snprintf(nm, sizeof(nm), "%s.f20", base); save(nm, f20, (size_t)nn * 2); } + /* full working tables + endpoints (sel/sel+1) */ + { + int nsegs = *(int *)(dev + 0x41554); + int c5c = *(int *)(dev + 0x4155c); + size_t thr_sz = (size_t)(nsegs - 1) * nn * 2 + (size_t)c5c; + size_t g_sz = (size_t)nsegs * nn * 4; + void *p; + p = *(void **)(dev + 0x41848); if (is_ro_ptr(p, thr_sz)) { snprintf(nm, sizeof(nm), "%s.thr0", base); save(nm, p, thr_sz); } + p = *(void **)(dev + 0x41850); if (is_ro_ptr(p, thr_sz)) { snprintf(nm, sizeof(nm), "%s.thr1", base); save(nm, p, thr_sz); } + p = *(void **)(dev + 0x41858); if (is_ro_ptr(p, (size_t)(nsegs - 1) * nn * 2)) { snprintf(nm, sizeof(nm), "%s.thrw", base); save(nm, p, (size_t)(nsegs - 1) * nn * 2); } + p = *(void **)(dev + 0x41860); if (is_ro_ptr(p, g_sz)) { snprintf(nm, sizeof(nm), "%s.g0", base); save(nm, p, g_sz); } + p = *(void **)(dev + 0x41868); if (is_ro_ptr(p, g_sz)) { snprintf(nm, sizeof(nm), "%s.g1", base); save(nm, p, g_sz); } + p = *(void **)(dev + 0x41870); if (is_ro_ptr(p, g_sz)) { snprintf(nm, sizeof(nm), "%s.gw", base); save(nm, p, g_sz); } + p = *(void **)(dev + 0x41878); if (is_ro_ptr(p, 0x1000)) { + int sel2 = *(int *)(dev + 0x41840); + int bc = sel2 >= 0 && sel2 < 64 ? *(int *)(dev + 0x41654 + (size_t)sel2 * 4) : 0; + if (bc > 0 && bc < 100000 && is_ro_ptr(p, (size_t)bc * 40)) { + snprintf(nm, sizeof(nm), "%s.blind", base); + save(nm, p, (size_t)bc * 40); + printf(" blind records: %d\n", bc); + } + } + } + /* frame header bytes + tail (raw USB frame, from the parser buffer) */ + { + unsigned char *rb = *(unsigned char **)(dev + 0x2d20); + if (is_ro_ptr(rb, 0x1c + 0x9600 + 0x100)) { + snprintf(nm, sizeof(nm), "%s.fhdr", base); + save(nm, rb, 0x40); + snprintf(nm, sizeof(nm), "%s.ftail", base); + save(nm, rb + 0x1c + 0x9600, 0x100); + } + } + printf("[%d] fcnt=%u shutter=%u/%u type=%u dev54=%u dev5c=%u dev60=%u sel=%u win=[%u,%u] stats=(%u..%u m%u s%u)\n", + k, fcnt, shutter, shutter2, ftype, dev54, dev5c, dev60, sel, + win_hi, win_lo, s_max, s_min, s_mean, s_std); + fflush(stdout); + Sleep(100); + } + + T_Stop(); + printf("done\n"); + return 0; +} diff --git a/pair_000.nuctab b/pair_000.nuctab deleted file mode 100644 index 537d759..0000000 --- a/pair_000.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c9d6ab916e1c288e4c38526c1c0e4e9af03020822d6ce35ab41dbc1b3248e44 -size 96 diff --git a/pair_000.win b/pair_000.win deleted file mode 100644 index dc9241a..0000000 --- a/pair_000.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c48a6526c391635dce0e028a39fbae78714ad92cfea8d5900d32ec6a90018ad1 -size 32 diff --git a/pair_000.win2 b/pair_000.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_000.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_001.nuctab b/pair_001.nuctab deleted file mode 100644 index 5f1e178..0000000 --- a/pair_001.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8fc6162f46f82b57ae67ae123597507e368f0eb42f0c31b706b46b502f08518a -size 96 diff --git a/pair_001.win b/pair_001.win deleted file mode 100644 index ef0a753..0000000 --- a/pair_001.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1462284230e3de4d0fae527325438702913ab9b06e1cc2c411e5226714980bdb -size 32 diff --git a/pair_001.win2 b/pair_001.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_001.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_002.nuctab b/pair_002.nuctab deleted file mode 100644 index a74c09d..0000000 --- a/pair_002.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:414fbfa14f7c7e73ef103e57e24f31a85d21b6810c9353b5fda8627cc81a3550 -size 96 diff --git a/pair_002.win b/pair_002.win deleted file mode 100644 index dfc9c9f..0000000 --- a/pair_002.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6870f0092b3adc5e8e445452a8138eb0219bbe7d49c9932ae2aafc8af516312 -size 32 diff --git a/pair_002.win2 b/pair_002.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_002.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_003.nuctab b/pair_003.nuctab deleted file mode 100644 index d0fd66b..0000000 --- a/pair_003.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4534d93a2e7d1db3adef2f172f4aae69030a9d29ae48db6e38ed3ac36a1df3e3 -size 96 diff --git a/pair_003.win b/pair_003.win deleted file mode 100644 index 95b8071..0000000 --- a/pair_003.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e7c661300d66890115f4d83bc4f76e1cc31b624cf9e703872887957c82c83c3 -size 32 diff --git a/pair_003.win2 b/pair_003.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_003.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_004.nuctab b/pair_004.nuctab deleted file mode 100644 index fa4e43d..0000000 --- a/pair_004.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:662a544e65c7a76b03530ed04531b545dbc604aa861bce12d05753a30da10020 -size 96 diff --git a/pair_004.win b/pair_004.win deleted file mode 100644 index 7436895..0000000 --- a/pair_004.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:58fc1e323c05395ee2e9c1265f3e9d3ff84fd23f6f4eeb3d1d564dacd51a0759 -size 32 diff --git a/pair_004.win2 b/pair_004.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_004.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_005.nuctab b/pair_005.nuctab deleted file mode 100644 index 6205757..0000000 --- a/pair_005.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba275ab7850ff585414ddd11baaecc38661e61248642ab4b42bc0092e07f759d -size 96 diff --git a/pair_005.win b/pair_005.win deleted file mode 100644 index 4e32e16..0000000 --- a/pair_005.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:025d2cb0ce46d19d34e42278850a7d82ee8ba1c566a422022687f6883d3814d0 -size 32 diff --git a/pair_005.win2 b/pair_005.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_005.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_006.nuctab b/pair_006.nuctab deleted file mode 100644 index df24df6..0000000 --- a/pair_006.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6ff4cfcd731278a98abe17ccb120e1f5815efaaa48817c44647f5a75a9b2d33 -size 96 diff --git a/pair_006.win b/pair_006.win deleted file mode 100644 index ef05f7d..0000000 --- a/pair_006.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:23c937e991ce727a969e5faea1414e5030d5a5c70c5044e0d15d3f6585d96b85 -size 32 diff --git a/pair_006.win2 b/pair_006.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_006.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_007.nuctab b/pair_007.nuctab deleted file mode 100644 index f3c2c79..0000000 --- a/pair_007.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:177de5b7e20dcea83e65daffb3d99c9d633cdc75695ce4b5ce4193ea6ae9425a -size 96 diff --git a/pair_007.win b/pair_007.win deleted file mode 100644 index ea15ec8..0000000 --- a/pair_007.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0211365ff2374c45fbb0e2708b88ee2b34f00bb164b1696785fa527802657b64 -size 32 diff --git a/pair_007.win2 b/pair_007.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_007.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_008.nuctab b/pair_008.nuctab deleted file mode 100644 index b19778c..0000000 --- a/pair_008.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cbdc536307b64733c7540b6261b568f5e17e722dec902e9b35d2305760815ed3 -size 96 diff --git a/pair_008.win b/pair_008.win deleted file mode 100644 index 57c8a1c..0000000 --- a/pair_008.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce447030cf0b8826bfd4499f41d96938ea5b64378d114e0b2a8a5668d2b9bb7a -size 32 diff --git a/pair_008.win2 b/pair_008.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_008.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_009.nuctab b/pair_009.nuctab deleted file mode 100644 index 3b51224..0000000 --- a/pair_009.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4576da19ba0070fc7bf3b6ddc27c0834715fcd0d84ba42ae05881e79d2dcffb0 -size 96 diff --git a/pair_009.win b/pair_009.win deleted file mode 100644 index b634809..0000000 --- a/pair_009.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ba4fba97c8015b3c38ce51b3270afeaa5b9a01465ccf96c5ea5f3ae62880069 -size 32 diff --git a/pair_009.win2 b/pair_009.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_009.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_010.nuctab b/pair_010.nuctab deleted file mode 100644 index d8dcadc..0000000 --- a/pair_010.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:01df6ce77c9ebf8a7f112f2e34494a4b92f54f7f9c862c70b07210c09fecb5ff -size 96 diff --git a/pair_010.win b/pair_010.win deleted file mode 100644 index 2387c2e..0000000 --- a/pair_010.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3d130e4a0a5b829319623ff473da10e46efcf5e9927e1314b8ffd44fae7ea88c -size 32 diff --git a/pair_010.win2 b/pair_010.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_010.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_011.nuctab b/pair_011.nuctab deleted file mode 100644 index e4ded39..0000000 --- a/pair_011.nuctab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e80e1acd4e799060a4babc3ea6a4522e3428e9857f1f31685c5771df2a63c3d -size 96 diff --git a/pair_011.win b/pair_011.win deleted file mode 100644 index f61ed9c..0000000 --- a/pair_011.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d866d64d58698f7a4a55675db8aeb5997f437db803d9a55a78e689aa5cb095a -size 32 diff --git a/pair_011.win2 b/pair_011.win2 deleted file mode 100644 index cd75ab5..0000000 --- a/pair_011.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aff91d84631f9f592b48751cd73fd542c5b9da50957bda11e2762f79019b40f6 -size 56 diff --git a/pair_012.win b/pair_012.win deleted file mode 100644 index 309240d..0000000 --- a/pair_012.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96cc08b4b04668f265f380846ee5e4a4f1d26df52d824a25be0212487977d0e8 -size 32 diff --git a/pair_012.win2 b/pair_012.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_012.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_013.win b/pair_013.win deleted file mode 100644 index d915d76..0000000 --- a/pair_013.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5105b356159507baed8b0b7b8d11453d4ee0272a86f9aeff0e1a67ad3a295d47 -size 32 diff --git a/pair_013.win2 b/pair_013.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_013.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_014.win b/pair_014.win deleted file mode 100644 index 6f53f72..0000000 --- a/pair_014.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44f61136c7c620a1224d639a3ed7d95dd004d274d428dd1f18564ba852e0ec87 -size 32 diff --git a/pair_014.win2 b/pair_014.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_014.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_015.win b/pair_015.win deleted file mode 100644 index acba9b5..0000000 --- a/pair_015.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9766d1add260c0a863a891336c2cf0ce7492b3c9f2b96abc413851e06fa78b5e -size 32 diff --git a/pair_015.win2 b/pair_015.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_015.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_016.win b/pair_016.win deleted file mode 100644 index acba9b5..0000000 --- a/pair_016.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9766d1add260c0a863a891336c2cf0ce7492b3c9f2b96abc413851e06fa78b5e -size 32 diff --git a/pair_016.win2 b/pair_016.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_016.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_017.win b/pair_017.win deleted file mode 100644 index 7a8d725..0000000 --- a/pair_017.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bf887502c52e91d54091c3be522db61571ad91a85b2eb7f19b8bf6ec24cfa4a -size 32 diff --git a/pair_017.win2 b/pair_017.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_017.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_018.win b/pair_018.win deleted file mode 100644 index acba9b5..0000000 --- a/pair_018.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9766d1add260c0a863a891336c2cf0ce7492b3c9f2b96abc413851e06fa78b5e -size 32 diff --git a/pair_018.win2 b/pair_018.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_018.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/pair_019.win b/pair_019.win deleted file mode 100644 index 7a8d725..0000000 --- a/pair_019.win +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bf887502c52e91d54091c3be522db61571ad91a85b2eb7f19b8bf6ec24cfa4a -size 32 diff --git a/pair_019.win2 b/pair_019.win2 deleted file mode 100644 index e965925..0000000 --- a/pair_019.win2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4788b3cd7d4c28b7fe143942ed1a4cb6fb2aedfbb23bf4b73ee816a819e2cc5f -size 56 diff --git a/tools/resume_rev.ps1 b/tools/resume_rev.ps1 new file mode 100644 index 0000000..367c9a6 --- /dev/null +++ b/tools/resume_rev.ps1 @@ -0,0 +1,59 @@ +# MAG160C 逆向会话恢复脚本 +# 用法: powershell -ExecutionPolicy Bypass -File tools\resume_rev.ps1 +# 作用: 检查设备/进程/工具状态, 重新编译 demo3, 采集 demo3 帧数据, +# 并在必要时跑官方采集, 输出对比所需文件。中断恢复时直接运行。 + +$ErrorActionPreference = "Continue" +$proj = "C:\Project\MAG160C" +$art = "$proj\build-artifacts" +$pairsDir = "$proj\analysis\pairs_final_20260813" + +Write-Host "=== 1. 环境检查 ===" +$dev = Get-CimInstance Win32_PnPEntity -ErrorAction SilentlyContinue | Where-Object { $_.DeviceID -match "VID_833C" } +if ($dev) { Write-Host "设备: $($dev.Name) OK" } else { Write-Host "!!! 设备未连接" } + +Write-Host "=== 2. 清理冲突进程 ===" +Stop-Process -Name mag160c_demo3, tsdk_pair3, tsdk_pair2 -Force -ErrorAction SilentlyContinue +Start-Sleep 1 + +Write-Host "=== 3. 编译 demo3 v5 ===" +gcc -O2 -w -DMAG160C_STATIC -I"$proj\csdk\third_party\libusb\win64" -I"$proj\csdk\include" -I"$proj\csdk\src" -o "$art\mag160c_demo3.exe" "$proj\csdk\tools\mag160c_demo3.c" "$proj\csdk\src\mag160c_display.c" "$proj\csdk\src\mag160c_error.c" "$proj\csdk\third_party\libusb\win64\libusb-1.0.x64.a" -lgdi32 -luser32 +if ($LASTEXITCODE -ne 0) { Write-Host "编译失败"; exit 1 } +Write-Host "编译 OK" + +Write-Host "=== 4. 编译官方采集工具 ===" +gcc -O2 -w -o "$art\tsdk_pair3.exe" "$proj\csdk\tools\tsdk_pair3.c" +if ($LASTEXITCODE -ne 0) { Write-Host "tsdk_pair3 编译失败"; exit 1 } +Write-Host "编译 OK" + +Write-Host "=== 5. 检查 DDT ===" +if (-not (Test-Path "$art\mag160c_official.ddt")) { + if (Test-Path "$env:TEMP\Core160043865") { + Copy-Item "$env:TEMP\Core160043865" "$art\mag160c_official.ddt" -Force + Write-Host "DDT 从 %TEMP% 复制" + } else { Write-Host "!!! DDT 缺失" } +} else { Write-Host "DDT OK" } + +Write-Host "=== 6. 运行 demo3 采集(35s,捕获帧在 fcount=300/600/900)===" +Remove-Item "$art\demo3_frame_capture.bin" -Force -ErrorAction SilentlyContinue +Remove-Item "$art\demo3_diag.txt" -Force -ErrorAction SilentlyContinue +Start-Process "$art\mag160c_demo3.exe" -WorkingDirectory $art +Start-Sleep 35 +Stop-Process -Name mag160c_demo3 -Force -ErrorAction SilentlyContinue +if (Test-Path "$art\demo3_frame_capture.bin") { + Write-Host "捕获 OK: $((Get-Item "$art\demo3_frame_capture.bin").Length) 字节" +} else { Write-Host "!!! 无捕获文件, 检查 demo3_diag.txt" } + +Write-Host "=== 7. 官方采集(同场景, 需保持镜头不动)===" +if (-not (Test-Path "$pairsDir\pair_000.raw")) { + New-Item -ItemType Directory -Path $pairsDir -Force | Out-Null + & "$art\tsdk_pair3.exe" $pairsDir 8 6000 > "$pairsDir\run.log" 2>&1 + Move-Item "$proj\config.txt" "$pairsDir\config.txt" -Force -ErrorAction SilentlyContinue + Move-Item "$proj\pair_0*.meta", "$proj\pair_0*.win" $pairsDir -Force -ErrorAction SilentlyContinue + Write-Host "官方采集完成" +} else { Write-Host "官方数据已存在, 跳过" } + +Write-Host "=== 8. 对比 ===" +python "C:\Users\ZXC\AppData\Local\Temp\opencode\compare_live.py" + +Write-Host "=== 完成。下一步见 analysis\session_state.md ==="